diff --git a/MCUME_esp32/.DS_Store b/MCUME_esp32/.DS_Store new file mode 100644 index 0000000..29ca7c8 Binary files /dev/null and b/MCUME_esp32/.DS_Store differ diff --git a/MCUME_esp32/esp5200/.DS_Store b/MCUME_esp32/esp5200/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp5200/.DS_Store differ diff --git a/MCUME_esp32/esp5200/Makefile b/MCUME_esp32/esp5200/Makefile new file mode 100644 index 0000000..3494489 --- /dev/null +++ b/MCUME_esp32/esp5200/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := esp5200 + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/esp5200/components/.DS_Store b/MCUME_esp32/esp5200/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/esp5200/components/.DS_Store differ diff --git a/MCUME_esp32/esp5200/components/Audio/.DS_Store b/MCUME_esp32/esp5200/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp5200/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/esp5200/components/Audio/component.mk b/MCUME_esp32/esp5200/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp5200/components/Audio/esp32-hal-dac.c b/MCUME_esp32/esp5200/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/esp5200/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/esp5200/components/Audio/esp32-hal-dac.h b/MCUME_esp32/esp5200/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/esp5200/components/Audio/esp32-hal-timer.c b/MCUME_esp32/esp5200/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/esp5200/components/Audio/esp32-hal-timer.h b/MCUME_esp32/esp5200/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/esp5200/components/Wire/.DS_Store b/MCUME_esp32/esp5200/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp5200/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/esp5200/components/Wire/Wire.cpp b/MCUME_esp32/esp5200/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/esp5200/components/Wire/Wire.h b/MCUME_esp32/esp5200/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/esp5200/components/Wire/component.mk b/MCUME_esp32/esp5200/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp5200/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/esp5200/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/esp5200/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/esp5200/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/esp5200/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/esp5200/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/esp5200/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/esp5200/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/esp5200/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/esp5200/flashapp.sh b/MCUME_esp32/esp5200/flashapp.sh new file mode 100755 index 0000000..14ab531 --- /dev/null +++ b/MCUME_esp32/esp5200/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x390000 ../esp5200/build/esp5200.bin diff --git a/MCUME_esp32/esp5200/main/.DS_Store b/MCUME_esp32/esp5200/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp5200/main/.DS_Store differ diff --git a/MCUME_esp32/esp5200/main/AudioPlaySystem.cpp b/MCUME_esp32/esp5200/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..3fc07be --- /dev/null +++ b/MCUME_esp32/esp5200/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +extern "C" { +void POKEYSND_Process(void *sndbuffer, int sndn); +} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + POKEYSND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/esp5200/main/AudioPlaySystem.h b/MCUME_esp32/esp5200/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/esp5200/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/esp5200/main/antic.c b/MCUME_esp32/esp5200/main/antic.c new file mode 100644 index 0000000..26f1392 --- /dev/null +++ b/MCUME_esp32/esp5200/main/antic.c @@ -0,0 +1,4151 @@ +/* + * antic.c - ANTIC chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include + +#include "antic.h" +#include "cpu.h" +#include "gtia.h" +#include "memory.h" +#include "pokey.h" + +#ifdef NEW_CYCLE_EXACT +#include "cycle_map.h" +#endif + + +UWORD Screen_atari[ATARI_WIDTH / 2]; // = NULL; +#define scrn_line 0 //(ATARI_WIDTH / 2) + +#define DRAWLINE() \ + if ( (ANTIC_ypos > 8) && (ANTIC_ypos < 248)) { \ + emu_DrawLine((unsigned char *)&Screen_atari[32/sizeof(Screen_atari[0])], 320, 240, ANTIC_ypos-8); \ + } + + +#define LCHOP 3 /* do not build leftmost 0..3 characters in wide mode */ +#define RCHOP 3 /* do not build rightmost 0..3 characters in wide mode */ + +int ANTIC_break_ypos = 999; +#if !defined(BASIC) && !defined(CURSES_BASIC) +static int gtia_bug_active = FALSE; /* The GTIA bug mode is active */ +#endif +#ifdef NEW_CYCLE_EXACT +static void draw_partial_scanline(int l,int r); +static void update_scanline_chbase(void); +static void update_scanline_invert(void); +static void update_scanline_blank(void); +const int *ANTIC_cpu2antic_ptr; +const int *ANTIC_antic2cpu_ptr; +int ANTIC_delayed_wsync = 0; +static int dmactl_changed = 0; +static UBYTE delayed_DMACTL; +static int draw_antic_ptr_changed = 0; +static UBYTE need_load; +static int dmactl_bug_chdata; +#endif /* NEW_CYCLE_EXACT */ +#ifndef NO_SIMPLE_PAL_BLENDING +int ANTIC_pal_blending = 0; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* Video memory access is hidden behind these macros. It allows to track dirty video memory + to improve video system performance */ +#ifdef DIRTYRECT + +static UWORD *scratchUWordPtr; +static UWORD scratchUWord; +static ULONG *scratchULongPtr; +static ULONG scratchULong; +static UBYTE *scratchUBytePtr; +static UBYTE scratchUByte; + + +#ifdef NODIRTYCOMPARE + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = (val); \ + } while (0) +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = (val); \ + } while (0) +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = (val); \ + } while (0) +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE*) (ptr); \ + scratchULong = (ULONG) (size); \ + memset(Screen_dirty + (((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3), 1, scratchULong >> 3); \ + memset(scratchUBytePtr, (val), scratchULong); \ + } while (0) + +#else /* NODIRTYCOMPARE not defined: */ + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + scratchUWord = (val); \ + if (*scratchUWordPtr != scratchUWord) { \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = scratchUWord; \ + } \ + } while (0) +#ifndef WORDS_UNALIGNED_OK +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#else +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari + 2) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#endif +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + scratchUByte = (val); \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } while (0) +static UBYTE *scratchFillLimit; +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE *) (ptr); \ + scratchUByte = (UBYTE) (val); \ + scratchFillLimit = scratchUBytePtr + (size); \ + for (; scratchUBytePtr < scratchFillLimit; scratchUBytePtr++) { \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } \ + } while (0) + +#endif /* NODIRTYCOMPARE */ + +#else /* DIRTYRECT not defined: */ + +#define WRITE_VIDEO(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_LONG(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_BYTE(ptr, val) (*(ptr) = val) +#define FILL_VIDEO(ptr, val, size) memset(ptr, val, size) + +#endif /* DIRTYRECT */ + +#define READ_VIDEO_LONG(ptr) (*(ptr)) + +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size) +{ + FILL_VIDEO(ptr, val, size); +} + +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val) +{ + WRITE_VIDEO_BYTE(ptr, val); +} + + +/* Memory access helpers----------------------------------------------------- */ +/* Some optimizations result in unaligned 32-bit accesses. These macros have + been introduced for machines that don't allow unaligned memory accesses. */ + +#ifdef DIRTYRECT +/* STAT_UNALIGNED_WORDS doesn't work with DIRTYRECT */ +#define WRITE_VIDEO_LONG_UNALIGNED WRITE_VIDEO_LONG +#else +#define WRITE_VIDEO_LONG_UNALIGNED(ptr, val) UNALIGNED_PUT_LONG((ptr), (val), Screen_atari_write_long_stat) +#endif + +#ifdef WORDS_UNALIGNED_OK +#define IS_ZERO_ULONG(x) (! UNALIGNED_GET_LONG(x, pm_scanline_read_long_stat)) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p), (l)[(x) >> 4]); \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p) + 1, (l)[(x) & 0xf]); \ + } +#else /* WORDS_UNALIGNED_OK */ +#define IS_ZERO_ULONG(x) (!((const UBYTE *)(x))[0] && !((const UBYTE *)(x))[1] && !((const UBYTE *)(x))[2] && !((const UBYTE *)(x))[3]) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO((UWORD *) (p), (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 1, (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 2, (UWORD) ((l)[(x) & 0xf])); \ + WRITE_VIDEO((UWORD *) (p) + 3, (UWORD) ((l)[(x) & 0xf])); \ + } +#endif /* WORDS_UNALIGNED_OK */ + +/* ANTIC Registers --------------------------------------------------------- */ + +UBYTE ANTIC_DMACTL; +UBYTE ANTIC_CHACTL; +UWORD ANTIC_dlist; +UBYTE ANTIC_HSCROL; +UBYTE ANTIC_VSCROL; +UBYTE ANTIC_PMBASE; +UBYTE ANTIC_CHBASE; +UBYTE ANTIC_NMIEN; +UBYTE ANTIC_NMIST; + +/* ANTIC Memory ------------------------------------------------------------ */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) +static UBYTE antic_memory[52]; +#define ANTIC_margin 4 +/* It's number of bytes in antic_memory, which are never loaded, but may be + read in wide playfield mode. These bytes are uninitialized, because on + real computer there's some kind of 'garbage'. Possibly 1 is enough, but + 4 bytes surely won't cause negative indexes. :) */ + +/* Screen ----------------------------------------------------------------- + Define screen as ULONG to ensure that it is Longword aligned. + This allows special optimisations under certain conditions. + ------------------------------------------------------------------------ */ + +static UWORD *scrn_ptr; +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Separate access to XE extended memory ----------------------------------- */ +/* It's available in 130 XE and 320 KB Compy Shop. + Note: during ANTIC access to extended memory in Compy Shop Self Test + is disabled. It is unknown if this is true for real 130 XE. If not, + then some extra code has to be added to: + - check if selftest_enabled is set + - check if the address is in range 0x5000..0x57ff + - if both conditions are true, then access memory instead of ANTIC_xe_ptr */ + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in MEMORY_mem[0x4000..0x7fff], + then NULL. */ +const UBYTE *ANTIC_xe_ptr = NULL; + +/* ANTIC Timing -------------------------------------------------------------- + +NOTE: this information was written before NEW_CYCLE_EXACT was introduced! + +I've introduced global variable ANTIC_xpos, which contains current number of cycle +in a line. This simplifies ANTIC/CPU timing much. The CPU_GO() function which +emulates CPU is now void and is called with ANTIC_xpos limit, below which CPU can go. + +All strange variables holding 'unused cycles', 'DMA cycles', 'allocated cycles' +etc. are removed. Simply whenever ANTIC fetches a byte, it takes single cycle, +which can be done now with ANTIC_xpos++. There's only one exception: in text modes +2-5 ANTIC takes more bytes than cycles, because it does less than ANTIC_DMAR refresh +cycles. + +Now emulation is really screenline-oriented. We do ANTIC_ypos++ after a line, +not inside it. + +This simplified diagram shows when what is done in a line: + +MDPPPPDD..............(------R/S/F------).......... +^ ^ ^ ^ ^ ^ ^ ^ ---> time/xpos +0 | NMIST_C NMI_C SCR_C WSYNC_C|LINE_C +VSCON_C VSCOF_C + +M - fetch Missiles +D - fetch DL +P - fetch Players +S - fetch Screen +F - fetch Font (in text modes) +R - refresh Memory (ANTIC_DMAR cycles) + +Only Memory Refresh happens in every line, other tasks are optional. + +Below are exact diagrams for some non-scrolled modes: + 11111111111111 + 11111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111 +012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 + /--------------------------narrow------------------------------\ + /----------------------------------normal--------------------------------------\ + /-------------------------------------------wide--------------------------------------------\ + +blank line: +MDPPPPDD.................R...R...R...R...R...R...R...R...R........................................................ + +mode 8,9: +MDPPPPDD....S.......S....R..SR...R..SR...R..SR...R..SR...R..S.......S.......S.......S.......S.......S............. + +mode a,b,c: +MDPPPPDD....S...S...S...SR..SR..SR..SR..SR..SR..SR..SR..SR..S...S...S...S...S...S...S...S...S...S...S...S......... + +mode d,e,f: +MDPPPPDD....S.S.S.S.S.S.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S......... + +Notes: +* At the beginning of a line fetched are: + - a byte of Missiles + - a byte of DL (instruction) + - four bytes of Players + - two bytes of DL argument (jump or screen address) + The emulator, however, fetches them all continuously. + +* Refresh cycles and Screen/Font fetches have been tested for some modes (see above). + This is for making the emulator more accurate, able to change colour registers, + sprite positions or GTIA modes during scanline. These modes are the most commonly used + with those effects. + Currently this isn't implemented, and all R/S/F cycles are fetched continuously in *all* modes + (however, right number of cycles is taken in every mode, basing on screen width and HSCROL). + +There are a few constants representing following events: + +* VSCON_C - in first VSC line dctr is loaded with VSCROL + +* ANTIC_NMIST_C - NMIST is updated (set to 0x9f on DLI, set to 0x5f on VBLKI) + +* ANTIC_NMI_C - If NMIEN permits, NMI interrupt is generated + +* SCR_C - We draw whole line of screen. On a real computer you can change + ANTIC/GTIA registers while displaying screen, however this emulator + isn't that accurate. + +* ANTIC_WSYNC_C - ANTIC holds CPU until this moment, when WSYNC is written + +* VSCOF_C - in last VSC line dctr is compared with VSCROL + +* ANTIC_LINE_C - simply end of line (this used to be called CPUL) + +All constants are determined by tests on real Atari computer. It is assumed, +that ANTIC registers are read with LDA, LDX, LDY and written with STA, STX, +STY, all in absolute addressing mode. All these instructions last 4 cycles +and perform read/write operation in last cycle. The CPU emulation should +correctly emulate WSYNC and add cycles for current instruction BEFORE +executing it. That's why VSCOF_C > ANTIC_LINE_C is correct. + +How WSYNC is now implemented: + +* On writing WSYNC: + - if ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C, + we only change ANTIC_xpos to ANTIC_WSYNC_C - that's all + - otherwise we set ANTIC_wsync_halt and change ANTIC_xpos to ANTIC_xpos_limit causing CPU_GO() + to return + +* At the beginning of CPU_GO() (CPU emulation), when ANTIC_wsync_halt is set: + - if ANTIC_xpos_limit < ANTIC_WSYNC_C we return + - else we set ANTIC_xpos to ANTIC_WSYNC_C, reset ANTIC_wsync_halt and emulate some cycles + +We don't emulate ANTIC_NMIST_C, ANTIC_NMI_C and SCR_C if it is unnecessary. +These are all cases: + +* Common overscreen line + Nothing happens except that ANTIC gets ANTIC_DMAR cycles: + ANTIC_xpos += ANTIC_DMAR; GOEOL; + +* First overscreen line - start of vertical blank + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x5f + if (ANTIC_NMIEN & 0x40) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - ANTIC gets ANTIC_DMAR cycles + - CPU goes until ANTIC_LINE_C + +* Screen line without DLI + - ANTIC fetches DL and P/MG + - CPU goes until SCR_C + - ANTIC draws whole line fetching Screen/Font and refreshing memory + - CPU goes until ANTIC_LINE_C + +* Screen line with DLI + - ANTIC fetches DL and P/MG + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x9f + if (ANTIC_NMIEN & 0x80) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - CPU goes until SCR_C + - ANTIC draws line with ANTIC_DMAR + - CPU goes until ANTIC_LINE_C + + -------------------------------------------------------------------------- */ + +#define VSCON_C 1 +#define SCR_C 28 +#define VSCOF_C 112 + +unsigned int ANTIC_screenline_cpu_clock = 0; + +#ifdef NEW_CYCLE_EXACT +#define UPDATE_DMACTL do{if (dmactl_changed) { \ + dmactl_changed = 0; \ + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, delayed_DMACTL); \ + } \ + if (draw_antic_ptr_changed) { \ + draw_antic_ptr_changed = 0; \ + draw_antic_ptr = saved_draw_antic_ptr; \ + }}while(0) +#else +#define UPDATE_DMACTL do{}while(0) +#endif /* NEW_CYCLE_EXACT */ +#define UPDATE_GTIA_BUG /* update GTIA if it was in bug mode */\ + do{if(gtia_bug_active) {\ + /* restore draw_antic_ptr for multi-line modes*/\ + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode];\ + gtia_bug_active = FALSE;\ + }}while(0) +#define GOEOL_CYCLE_EXACT CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_LINE_C]); \ + ANTIC_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; \ + ANTIC_xpos -= ANTIC_LINE_C; \ + ANTIC_screenline_cpu_clock += ANTIC_LINE_C; \ + DRAWLINE();ANTIC_ypos++; \ + GTIA_UpdatePmplColls(); +#define GOEOL CPU_GO(ANTIC_LINE_C); ANTIC_xpos -= ANTIC_LINE_C; ANTIC_screenline_cpu_clock += ANTIC_LINE_C; UPDATE_DMACTL; DRAWLINE();ANTIC_ypos++; UPDATE_GTIA_BUG +#define OVERSCREEN_LINE ANTIC_xpos += ANTIC_DMAR; GOEOL + +int ANTIC_xpos = 0; +int ANTIC_xpos_limit; +int ANTIC_wsync_halt = FALSE; + +int ANTIC_ypos; /* Line number - lines 8..247 are on screen */ + +/* Timing in first line of modes 2-5 +In these modes ANTIC takes more bytes than cycles. Despite this, it would be +possible that SCR_C + cycles_taken > ANTIC_WSYNC_C. To avoid this we must take some +cycles before SCR_C. before_cycles contains number of them, while extra_cycles +contains difference between bytes taken and cycles taken plus before_cycles. */ + +#define BEFORE_CYCLES (SCR_C - 28) +/* It's number of cycles taken before SCR_C for not scrolled, narrow playfield. + It wasn't tested, but should be ok. ;) */ + +/* Light pen support ------------------------------------------------------- */ + +static UBYTE PENH; +static UBYTE PENV; +UBYTE ANTIC_PENH_input = 0x00; +UBYTE ANTIC_PENV_input = 0xff; + +#ifndef BASIC + +/* Internal ANTIC registers ------------------------------------------------ */ + +static UWORD screenaddr; /* Screen Pointer */ +static UBYTE IR; /* Instruction Register */ +static UBYTE anticmode; /* Antic mode */ +static UBYTE dctr; /* Delta Counter */ +static UBYTE lastline; /* dctr limit */ +static UBYTE need_dl; /* boolean: fetch DL next line */ +static UBYTE vscrol_off; /* boolean: displaying line ending VSC */ + +#endif + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Pre-computed values for improved performance ---------------------------- */ + +#define NORMAL0 0 /* modes 2,3,4,5,0xd,0xe,0xf */ +#define NORMAL1 1 /* modes 6,7,0xa,0xb,0xc */ +#define NORMAL2 2 /* modes 8,9 */ +#define SCROLL0 3 /* modes 2,3,4,5,0xd,0xe,0xf with HSC */ +#define SCROLL1 4 /* modes 6,7,0xa,0xb,0xc with HSC */ +#define SCROLL2 5 /* modes 8,9 with HSC */ +static int md; /* current mode NORMAL0..SCROLL2 */ +/* tables for modes NORMAL0..SCROLL2 */ +static int chars_read[6]; +static int chars_displayed[6]; +static int x_min[6]; +static int ch_offset[6]; +static int load_cycles[6]; +static int font_cycles[6]; +static int before_cycles[6]; +static int extra_cycles[6]; + +/* border parameters for current display width */ +static int left_border_chars; +static int right_border_start; +#ifdef NEW_CYCLE_EXACT +static int left_border_start = LCHOP * 4; +static int right_border_end = (48 - RCHOP) * 4; +#define LBORDER_START left_border_start +#define RBORDER_END right_border_end +#else +#define LBORDER_START (LCHOP * 4) +#define RBORDER_END ((48 - RCHOP) * 4) +#endif /* NEW_CYCLE_EXACT */ + +/* set with CHBASE *and* CHACTL - bits 0..2 set if flip on */ +static UWORD chbase_20; /* CHBASE for 20 character mode */ + +/* set with CHACTL */ +static UBYTE invert_mask; +static int blank_mask; + +/* A scanline of AN0 and AN1 signals as transmitted from ANTIC to GTIA. + In every byte, bit 0 is AN0 and bit 1 is AN1 */ +static UBYTE an_scanline[ATARI_WIDTH / 2 + 8]; + +/* lookup tables */ +static UBYTE blank_lookup[256]; +static UWORD lookup2[256]; +ULONG ANTIC_lookup_gtia9[16]; +ULONG ANTIC_lookup_gtia11[16]; +static UBYTE playfield_lookup[257]; +static UBYTE mode_e_an_lookup[256]; + +/* Colour lookup table + This single table replaces 4 previously used: cl_word, cur_prior, + prior_table and pf_colls. It should be treated as a two-dimensional table, + with playfield colours in rows and PMG colours in columns: + no_PMG PM0 PM1 PM01 PM2 PM3 PM23 PM023 PM123 PM0123 PM25 PM35 PM235 colls ... ... + BAK + ... + HI2 + HI3 + PF0 + PF1 + PF2 + PF3 + The table contains word value (lsb = msb) of colour to be drawn. + The table is being updated taking current PRIOR setting into consideration. + '...' represent two unused columns and single unused row. + HI2 and HI3 are used only if colour_translation_table is being used. + They're colours of hi-res pixels on PF2 and PF3 respectively (PF2 is + default background for hi-res, PF3 is PM5). + Columns PM023, PM123 and PM0123 are used when PRIOR & 0xf equals any + of 5,7,0xc,0xd,0xe,0xf. The columns represent PM0, PM1 and PM01 respectively + covered by PM2 and/or PM3. This is to handle black colour on PF2 and PF3. + Columns PM25, PM35 and PM235 are used when PRIOR & 0x1f equals any + of 0x10,0x1a,0x1c,0x1e. The columns represent PM2, PM3 and PM23 + respectively covered by PM5. This to handle colour on PF0 and PF1: + PF3 if (PRIOR & 0x1f) == 0x10, PF0 or PF1 otherwise. + Additional column 'colls' holds collisions of playfields with PMG. */ + +UWORD ANTIC_cl[128]; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 +#define C_BLACK (C_PF3 | C_PM25) + +/* these are byte-offsets in the table, so left shift for indexing word table + has been avoided */ +#define COLOUR(x) (*(UWORD *) ((UBYTE *) ANTIC_cl + (x) )) +#define L_PM0 (2 * C_PM0) +#define L_PM1 (2 * C_PM1) +#define L_PM01 (2 * C_PM01) +#define L_PM2 (2 * C_PM2) +#define L_PM3 (2 * C_PM3) +#define L_PM23 (2 * C_PM23) +#define L_PM023 (2 * C_PM023) +#define L_PM123 (2 * C_PM123) +#define L_PM0123 (2 * C_PM0123) +#define L_PM25 (2 * C_PM25) +#define L_PM35 (2 * C_PM35) +#define L_PM235 (2 * C_PM235) +#define L_COLLS (2 * C_COLLS) +#define L_BAK (2 * C_BAK) +#define L_HI2 (2 * C_HI2) +#define L_HI3 (2 * C_HI3) +#define L_PF0 (2 * C_PF0) +#define L_PF1 (2 * C_PF1) +#define L_PF2 (2 * C_PF2) +#define L_PF3 (2 * C_PF3) +#define L_BLACK (2 * C_BLACK) + +/* Blank areas optimizations + Routines for most graphics modes take advantage of fact, that often + large areas of screen are background colour. If it is possible, 8 pixels + of background are drawn at once - with two longs or four words, if + the platform doesn't allow unaligned long access. + Artifacting also uses unaligned long access if it's supported. */ + +#ifdef WORDS_UNALIGNED_OK + +#define INIT_BACKGROUND_6 ULONG background = ANTIC_cl[C_PF2] | (((ULONG) ANTIC_cl[C_PF2]) << 16); +#define INIT_BACKGROUND_8 ULONG background = ANTIC_lookup_gtia9[0]; +#define DRAW_BACKGROUND(colreg) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, background); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, background); \ + ptr += 4; \ + } +#define DRAW_ARTIF { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, art_curtable[(UBYTE) (screendata_tally >> 10)]); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, art_curtable[(UBYTE) (screendata_tally >> 6)]); \ + ptr += 4; \ + } + +#else + +#define INIT_BACKGROUND_6 +#define INIT_BACKGROUND_8 +#define DRAW_BACKGROUND(colreg) {\ + WRITE_VIDEO(ptr, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 1, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 2, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 3, ANTIC_cl[colreg]); \ + ptr += 4;\ + } +#define DRAW_ARTIF {\ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x03fc00) >> 9]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x03fc00) >> 9) + 1]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x003fc0) >> 5]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x003fc0) >> 5) + 1]); \ + } + +#endif /* WORDS_UNALIGNED_OK */ + +#define DRAW_ARTIF_NEW {\ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x03f000) >> 12]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x00fc00) >> 10]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x003f00) >> 8]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x000fc0) >> 6]); \ + } + +/* Hi-res modes optimizations + Now hi-res modes are drawn with words, not bytes. Endianess defaults + to little-endian. WORDS_BIGENDIAN should be defined when compiling on + a big-endian machine. */ + +#ifdef WORDS_BIGENDIAN +#define BYTE0_MASK 0xff00 +#define BYTE1_MASK 0x00ff +#define HIRES_MASK_01 0xfff0 +#define HIRES_MASK_10 0xf0ff +#define HIRES_LUM_01 0x000f +#define HIRES_LUM_10 0x0f00 +#else +#define BYTE0_MASK 0x00ff +#define BYTE1_MASK 0xff00 +#define HIRES_MASK_01 0xf0ff +#define HIRES_MASK_10 0xfff0 +#define HIRES_LUM_01 0x0f00 +#define HIRES_LUM_10 0x000f +#endif + +static UWORD hires_lookup_n[128]; +static UWORD hires_lookup_m[128]; +#define hires_norm(x) hires_lookup_n[(x) >> 1] +#define hires_mask(x) hires_lookup_m[(x) >> 1] + +#ifndef USE_COLOUR_TRANSLATION_TABLE +int ANTIC_artif_new = FALSE; /* New type of artifacting */ +UWORD ANTIC_hires_lookup_l[128]; /* accessed in gtia.c */ +#define hires_lum(x) ANTIC_hires_lookup_l[(x) >> 1] +#endif + +/* Player/Missile Graphics ------------------------------------------------- */ + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) +#define PF_COLLS(x) (((UBYTE *) &ANTIC_cl)[(x) + L_COLLS]) + +static int singleline; +int ANTIC_player_dma_enabled; +int ANTIC_player_gra_enabled; +int ANTIC_missile_dma_enabled; +int ANTIC_missile_gra_enabled; +int ANTIC_player_flickering; +int ANTIC_missile_flickering; + +static UWORD pmbase_s; +static UWORD pmbase_d; + +/* PMG lookup tables */ +static UBYTE pm_lookup_table[20][256]; +/* current PMG lookup table */ +static const UBYTE *pm_lookup_ptr; + +#define PL_00 0 /* 0x00,0x01,0x02,0x03,0x04,0x06,0x08,0x09,0x0a,0x0b */ +#define PL_05 1 /* 0x05,0x07,0x0c,0x0d,0x0e,0x0f */ +#define PL_10 2 /* 0x10,0x1a */ +#define PL_11 3 /* 0x11,0x18,0x19 */ +#define PL_12 4 /* 0x12 */ +#define PL_13 5 /* 0x13,0x1b */ +#define PL_14 6 /* 0x14,0x16 */ +#define PL_15 7 /* 0x15,0x17,0x1d,0x1f */ +#define PL_1c 8 /* 0x1c */ +#define PL_1e 9 /* 0x1e */ +#define PL_20 10 /* 0x20,0x21,0x22,0x23,0x24,0x26,0x28,0x29,0x2a,0x2b */ +#define PL_25 11 /* 0x25,0x27,0x2c,0x2d,0x2e,0x2f */ +#define PL_30 12 /* 0x30,0x3a */ +#define PL_31 13 /* 0x31,0x38,0x39 */ +#define PL_32 14 /* 0x32 */ +#define PL_33 15 /* 0x33,0x3b */ +#define PL_34 16 /* 0x34,0x36 */ +#define PL_35 17 /* 0x35,0x37,0x3d,0x3f */ +#define PL_3c 18 /* 0x3c */ +#define PL_3e 19 /* 0x3e */ + +static const UBYTE prior_to_pm_lookup[64] = { + PL_00, PL_00, PL_00, PL_00, PL_00, PL_05, PL_00, PL_05, + PL_00, PL_00, PL_00, PL_00, PL_05, PL_05, PL_05, PL_05, + PL_10, PL_11, PL_12, PL_13, PL_14, PL_15, PL_14, PL_15, + PL_11, PL_11, PL_10, PL_13, PL_1c, PL_15, PL_1e, PL_15, + PL_20, PL_20, PL_20, PL_20, PL_20, PL_25, PL_20, PL_25, + PL_20, PL_20, PL_20, PL_20, PL_25, PL_25, PL_25, PL_25, + PL_30, PL_31, PL_32, PL_33, PL_34, PL_35, PL_34, PL_35, + PL_31, PL_31, PL_30, PL_33, PL_3c, PL_35, PL_3e, PL_35 +}; + +static void init_pm_lookup(void) +{ + static const UBYTE pm_lookup_template[10][16] = { + /* PL_20 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_25 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM023, L_PM123, L_PM0123, + L_PM3, L_PM023, L_PM123, L_PM0123, L_PM23, L_PM023, L_PM123, L_PM0123 }, + /* PL_30 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM25, L_PM0, L_PM1, L_PM01, + L_PM35, L_PM0, L_PM1, L_PM01, L_PM235, L_PM0, L_PM1, L_PM01 }, + /* PL_31 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_32 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01, + L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01 }, + /* PL_33 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01, + L_BLACK, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01 }, + /* PL_34 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, + L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3 }, + /* PL_35 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_BLACK, L_BLACK, L_BLACK, L_BLACK, + L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK }, + /* PL_3c */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_PM25, L_PM25, L_PM25, + L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25 }, + /* PL_3e */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_BLACK, L_BLACK, L_BLACK, + L_PM25, L_BLACK, L_BLACK, L_BLACK, L_PM25, L_BLACK, L_BLACK, L_BLACK } + }; + + static const UBYTE multi_to_normal[] = { + L_BAK, + L_PM0, L_PM1, L_PM0, + L_PM2, L_PM3, L_PM2, + L_PM023, L_PM123, L_PM023, + L_PM25, L_PM35, L_PM25 + }; + + int i; + int j; + UBYTE temp; + + for (i = 0; i <= 1; i++) + for (j = 0; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][(j & 0xf) | (j >> 4)]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; i <= 9; i++) { + for (j = 0; j <= 15; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i < 7 ? 0 : 1][j]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][j & 0xf]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + } +} + +static const UBYTE hold_missiles_tab[16] = { + 0x00,0x03,0x0c,0x0f,0x30,0x33,0x3c,0x3f, + 0xc0,0xc3,0xcc,0xcf,0xf0,0xf3,0xfc,0xff}; + +static void pmg_dma(void) +{ + /* VDELAY bit set == GTIA ignores PMG DMA in even lines */ + if (ANTIC_player_dma_enabled) { + if (ANTIC_player_gra_enabled) { + const UBYTE *base; + if (singleline) { + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + base = ANTIC_xe_ptr + pmbase_s - 0x4000 + ANTIC_ypos; + else + base = memory + pmbase_s + ANTIC_ypos; + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x400]; + GTIA_GRAFP1 = base[0x500]; + GTIA_GRAFP2 = base[0x600]; + GTIA_GRAFP3 = base[0x700]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x400]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x500]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x600]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x700]; + } + } + else { + if (ANTIC_xe_ptr != NULL && pmbase_d < 0x8000 && pmbase_d >= 0x4000) + base = ANTIC_xe_ptr + (pmbase_d - 0x4000) + (ANTIC_ypos >> 1); + else + base = memory + pmbase_d + (ANTIC_ypos >> 1); + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x200]; + GTIA_GRAFP1 = base[0x280]; + GTIA_GRAFP2 = base[0x300]; + GTIA_GRAFP3 = base[0x380]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x200]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x280]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x300]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x380]; + } + } + } + ANTIC_xpos += 4; + } + if (ANTIC_missile_dma_enabled) { + if (ANTIC_missile_gra_enabled) { + UBYTE data; + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + data = ANTIC_xe_ptr[singleline ? pmbase_s + ANTIC_ypos + 0x300 - 0x4000 : pmbase_d + (ANTIC_ypos >> 1) + 0x180 - 0x4000]; + else + data = MEMORY_dGetByte(singleline ? pmbase_s + ANTIC_ypos + 0x300 : pmbase_d + (ANTIC_ypos >> 1) + 0x180); + /* in odd lines load all missiles, in even only those, for which VDELAY bit is zero */ + GTIA_GRAFM = ANTIC_ypos & 1 ? data : ((GTIA_GRAFM ^ data) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ data; + } + ANTIC_xpos++; + } +} + +/* Artifacting ------------------------------------------------------------ */ + +int ANTIC_artif_mode; + +static UWORD art_lookup_new[64]; +static UWORD art_colour1_new; +static UWORD art_colour2_new; + +static ULONG art_lookup_normal[256]; +static ULONG art_lookup_reverse[256]; +static ULONG art_bkmask_normal[256]; +static ULONG art_lummask_normal[256]; +static ULONG art_bkmask_reverse[256]; +static ULONG art_lummask_reverse[256]; + +static ULONG *art_curtable = art_lookup_normal; +static ULONG *art_curbkmask = art_bkmask_normal; +static ULONG *art_curlummask = art_lummask_normal; + +static UWORD art_normal_colpf1_save; +static UWORD art_normal_colpf2_save; +static UWORD art_reverse_colpf1_save; +static UWORD art_reverse_colpf2_save; + +static void setup_art_colours(void) +{ + static UWORD *art_colpf1_save = &art_normal_colpf1_save; + static UWORD *art_colpf2_save = &art_normal_colpf2_save; + UWORD curlum = ANTIC_cl[C_PF1] & 0x0f0f; + + if (curlum != *art_colpf1_save || ANTIC_cl[C_PF2] != *art_colpf2_save) { + if (curlum < (ANTIC_cl[C_PF2] & 0x0f0f)) { + art_colpf1_save = &art_reverse_colpf1_save; + art_colpf2_save = &art_reverse_colpf2_save; + art_curtable = art_lookup_reverse; + art_curlummask = art_lummask_reverse; + art_curbkmask = art_bkmask_reverse; + } + else { + art_colpf1_save = &art_normal_colpf1_save; + art_colpf2_save = &art_normal_colpf2_save; + art_curtable = art_lookup_normal; + art_curlummask = art_lummask_normal; + art_curbkmask = art_bkmask_normal; + } + if (curlum ^ *art_colpf1_save) { + int i; + ULONG new_colour = curlum ^ *art_colpf1_save; + new_colour |= new_colour << 16; + *art_colpf1_save = curlum; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curlummask[i] & new_colour; + } + if (ANTIC_cl[C_PF2] ^ *art_colpf2_save) { + int i; + ULONG new_colour = ANTIC_cl[C_PF2] ^ *art_colpf2_save; + new_colour |= new_colour << 16; + *art_colpf2_save = ANTIC_cl[C_PF2]; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curbkmask[i] & new_colour; + } + + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int ANTIC_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) +#if SKIP + int i, j; + + for (i = j = 1; i < *argc; i++) { + int i_a = (i + 1 < *argc); /* is argument available? */ + int a_m = FALSE; /* error, argument missing! */ + + if (strcmp(argv[i], "-artif") == 0) { + if (i_a) { + ANTIC_artif_mode = Util_sscandec(argv[++i]); + if (ANTIC_artif_mode < 0 || ANTIC_artif_mode > 4) { + Log_print("Invalid artifacting mode, using default."); + ANTIC_artif_mode = 0; + } + } + else a_m = TRUE; + } + else { + if (strcmp(argv[i], "-help") == 0) { + Log_print("\t-artif Set artifacting mode 0-4 (0 = disable)"); + } + argv[j++] = argv[i]; + } + + if (a_m) { + Log_print("Missing argument for '%s'", argv[i]); + return FALSE; + } + } + *argc = j; +#endif + ANTIC_UpdateArtifacting(); + + playfield_lookup[0x00] = L_BAK; + playfield_lookup[0x40] = L_PF0; + playfield_lookup[0x80] = L_PF1; + playfield_lookup[0xc0] = L_PF2; + playfield_lookup[0x100] = L_PF3; + blank_lookup[0x80] = blank_lookup[0xa0] = blank_lookup[0xc0] = blank_lookup[0xe0] = 0x00; + hires_mask(0x00) = 0xffff; +#ifdef USE_COLOUR_TRANSLATION_TABLE + hires_mask(0x40) = BYTE0_MASK; + hires_mask(0x80) = BYTE1_MASK; + hires_mask(0xc0) = 0; +#else + hires_mask(0x40) = HIRES_MASK_01; + hires_mask(0x80) = HIRES_MASK_10; + hires_mask(0xc0) = 0xf0f0; + hires_lum(0x00) = hires_lum(0x40) = hires_lum(0x80) = hires_lum(0xc0) = 0; +#endif + init_pm_lookup(); + mode_e_an_lookup[0] = 0; + mode_e_an_lookup[1] = mode_e_an_lookup[4] = mode_e_an_lookup[0x10] = mode_e_an_lookup[0x40] = 0; + mode_e_an_lookup[2] = mode_e_an_lookup[8] = mode_e_an_lookup[0x20] = mode_e_an_lookup[0x80] = 1; + mode_e_an_lookup[3] = mode_e_an_lookup[12] = mode_e_an_lookup[0x30] = mode_e_an_lookup[0xc0] = 2; +#ifdef NEW_CYCLE_EXACT + CYCLE_MAP_Create(); + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +void ANTIC_Reset(void) +{ + ANTIC_NMIEN = 0x00; + ANTIC_NMIST = 0x1f; + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, 0); +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Border ------------------------------------------------------------------ */ + +#define DO_BORDER_1 {\ + if (IS_ZERO_ULONG(pm_scanline_ptr)) {\ + ULONG *l_ptr = (ULONG *) ptr;\ + WRITE_VIDEO_LONG(l_ptr++, background); \ + WRITE_VIDEO_LONG(l_ptr++, background); \ + ptr = (UWORD *) l_ptr;\ + pm_scanline_ptr += 4;\ + }\ + else {\ + int k = 4;\ + do + +#define DO_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++]));\ + while (--k);\ + }\ +} + +#define DO_GTIA10_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++ | 1]));\ + while (--k);\ + }\ +} + +static void do_border(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER +} + +static void do_border_gtia10(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_GTIA10_BORDER + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[*pm_scanline_ptr | 1])); /* one extra pixel, because of the right shift of gtia10*/ + /* right border */ + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + if (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) { + ptr = &scrn_ptr[right_border_start + 1]; /*start one pixel further right because of the right shift of gtia10*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[1] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[2] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[3] | 1])); + pm_scanline_ptr += 4; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_GTIA10_BORDER + } +} + +static void do_border_gtia11(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) +} + +static void draw_antic_0(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_BAK], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia10(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + do + DO_GTIA10_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_PM0], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia11(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) + } + else + FILL_VIDEO(ptr, ANTIC_lookup_gtia11[0], (RBORDER_END - LBORDER_START) * 2); +} + +/* ANTIC modes ------------------------------------------------------------- */ + +static const UBYTE gtia_10_lookup[] = +{L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3, + L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3}; +static const UBYTE gtia_10_pm[] = +{1, 2, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static void draw_an_gtia9(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr + 1, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border(); +} + +static void draw_an_gtia10(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) | 1; + UWORD lookup_gtia10[16]; + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i - 1] << 2) + an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia10[pixel]); + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr + 1, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr + 1, lookup_gtia10[pixel]); + } + i++; + } + do_border_gtia10(); +} + +static void draw_an_gtia11(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr + 1, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border_gtia11(); +} + +static void draw_an_gtia_bug(const ULONG *t_pm_scanline_ptr) +{ + static const UBYTE gtia_bug_colreg[] = {L_PF0, L_PF1, L_PF2, L_PF3}; + UWORD lookup_gtia_bug[16]; + int i; + lookup_gtia_bug[0] = ANTIC_cl[C_PF0]; + lookup_gtia_bug[1] = ANTIC_cl[C_PF1]; + lookup_gtia_bug[2] = ANTIC_cl[C_PF2]; + lookup_gtia_bug[3] = ANTIC_cl[C_PF3]; + i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline); + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_bug_colreg[pixel]; + PF_COLLS(colreg) |= pm_reg; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia_bug[pixel]); + } + i++; + } + do_border(); +} + +#define DEFINE_DRAW_AN(anticmode) \ + static void draw_antic_ ## anticmode ## _gtia9 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia9(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia10(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia11(t_pm_scanline_ptr);\ + } + +#define CHAR_LOOP_BEGIN do { +#define CHAR_LOOP_END } while (--nchars); + +#define DO_PMG_LORES PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++;\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + +#ifdef ALTERNATE_LOOP_COUNTERS /* speeds-up pmg in hires a bit or not? try it :) */ +#define FOUR_LOOP_BEGIN(data) data |= 0x800000; do { /* data becomes negative after four data <<= 2 */ +#define FOUR_LOOP_END(data) } while (data >= 0); +#else +#define FOUR_LOOP_BEGIN(data) int k = 4; do { +#define FOUR_LOOP_END(data) } while (--k); +#endif + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & BYTE0_MASK) | (ANTIC_cl[C_HI2] & BYTE1_MASK);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_HI2] & BYTE0_MASK) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = ANTIC_cl[C_HI2]; + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + int mask;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + mask = hires_mask(data & 0xc0);\ + pm_pixel = pm_lookup_ptr[pm_pixel] | L_PF2;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_pixel) & mask) | (COLOUR(pm_pixel + (L_HI2 - L_PF2)) & ~mask));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#else /* USE_COLOUR_TRANSLATION_TABLE */ + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0); + +#define INIT_ARTIF_NEW art_lookup_new[0] = art_lookup_new[1] = art_lookup_new[2] = art_lookup_new[3] = \ + art_lookup_new[16] = art_lookup_new[17] = art_lookup_new[18] = art_lookup_new[19] = \ + art_lookup_new[32] = art_lookup_new[33] = art_lookup_new[34] = art_lookup_new[35] = \ + art_lookup_new[48] = art_lookup_new[49] = art_lookup_new[50] = art_lookup_new[51] = ANTIC_cl[C_PF2];\ + art_lookup_new[7] = art_lookup_new[23] = art_lookup_new[39] = art_lookup_new[55] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[56] = art_lookup_new[57] = art_lookup_new[58] = art_lookup_new[59] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + art_lookup_new[12] = art_lookup_new[13] = art_lookup_new[14] = art_lookup_new[15] = \ + art_lookup_new[28] = art_lookup_new[29] = art_lookup_new[30] = art_lookup_new[31] = \ + art_lookup_new[44] = art_lookup_new[45] = art_lookup_new[46] = art_lookup_new[47] = \ + art_lookup_new[60] = art_lookup_new[61] = art_lookup_new[62] = art_lookup_new[63] = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0);\ + if ((ANTIC_cl[C_PF2] & 0x0F00) != (ANTIC_cl[C_PF1] & 0x0F00)) { \ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= ((art_colour1_new & BYTE1_MASK & ~(HIRES_LUM_01))) | hires_lum(0x40) | (ANTIC_cl[C_PF2] & BYTE0_MASK);\ + art_lookup_new[20] = art_lookup_new[21] = (art_colour1_new & 0xf0f0) | hires_lum(0xc0);\ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = ((art_colour2_new & BYTE0_MASK & ~(HIRES_LUM_10))) | hires_lum(0x80) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = (art_colour2_new & 0xf0f0) | hires_lum(0xc0);\ + }\ + else {\ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= art_lookup_new[20] = art_lookup_new[21] = \ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = ANTIC_cl[C_PF2];\ + }\ + art_lookup_new[6] = art_lookup_new[22] = art_lookup_new[38] = art_lookup_new[54] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[24] = art_lookup_new[25] = art_lookup_new[26] = art_lookup_new[27] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80); + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2) & hires_mask(data & 0xc0)) | hires_lum(data & 0xc0));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#define DO_PMG_HIRES_NEW(data, tally) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (pm_pixel) \ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2)));\ + else\ + WRITE_VIDEO(ptr++, art_lookup_new[(tally & 0xfc0000) >> 18]); \ + data <<= 2;\ + tally <<= 6;\ + FOUR_LOOP_END(data)\ +} + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +#ifdef NEW_CYCLE_EXACT +#define ADD_FONT_CYCLES +#else +#define ADD_FONT_CYCLES ANTIC_xpos += font_cycles[md] +#endif + +#ifdef PAGED_MEM + +#define INIT_ANTIC_2 int t_chbase = (dctr ^ chbase_20) & 0xfc07;\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); + +#else /* PAGED_MEM */ + +#define INIT_ANTIC_2 const UBYTE *chptr;\ + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000)\ + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07);\ + else\ + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07);\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= chptr[(screendata & 0x7f) << 3]; + +#endif /* PAGED_MEM */ + +static void draw_antic_2(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + INIT_HIRES + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifdef NEW_CYCLE_EXACT +static void draw_antic_2_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + (void)chptr; /* suppress GCC -Wunused-but-set-variable warning */ + INIT_HIRES + + CHAR_LOOP_BEGIN + /* UBYTE screendata = *antic_memptr++; */ + +/* In this glitched mode, the output depends on the MSB of the last char */ +/* drawn in the previous line, and invert_mask. It seems to reveal that */ +/* ANTIC has a latch that is set by the MSB of the char that controls an */ +/* invert gate. */ +/* When this gate was set on the last line and the next line is glitched */ +/* it remains set and the whole line appears inverted */ +/* We'll use this modeline to draw antic f glitched as well, and set */ +/* dmactl_bug_chdata to 0 */ + int chdata = (dmactl_bug_chdata & invert_mask) ? 0xff : 0; + /* GET_CHDATA_ANTIC_2 */ + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void draw_antic_2_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + INIT_ANTIC_2 + { + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + } + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + chdata = screendata_tally >> 8; + DO_PMG_HIRES(chdata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_2_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + ULONG pmtally; + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + INIT_ANTIC_2 + INIT_ARTIF_NEW + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + chdata = screendata_tally >> 8; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(chdata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_2(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + int t_chbase = (dctr ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07); +#endif + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + GET_CHDATA_ANTIC_2 + *an_ptr++ = chdata >> 6; + *an_ptr++ = (chdata >> 4) & 3; + *an_ptr++ = (chdata >> 2) & 3; + *an_ptr++ = chdata & 3; + CHAR_LOOP_END +} + +static void draw_antic_2_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata >> 4 : chdata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_2_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } + +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, chdata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = chdata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; + pm_pixel |= gtia_10_pm[t_screendata]; + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + if (k == 3) + t_screendata = chdata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_2_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata & 0xf0 : chdata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +static void draw_antic_2_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia_bug(t_pm_scanline_ptr); + return; +} + +static void draw_antic_4(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + lookup2[0x0f] = lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x4f] = lookup2[0x1f] = lookup2[0x13] = + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x8f] = lookup2[0x2f] = lookup2[0x17] = lookup2[0x11] = + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + lookup2[0xcf] = lookup2[0x3f] = lookup2[0x1b] = lookup2[0x12] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + const UWORD *lookup; + UBYTE chdata; + if (screendata & 0x80) + lookup = lookup2 + 0xf; + else + lookup = lookup2; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, lookup[chdata & 0xc0]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x30]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x0c]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + playfield_lookup[0xc0] = screendata & 0x80 ? L_PF3 : L_PF2; + do { + colreg = playfield_lookup[chdata & 0xc0]; + DO_PMG_LORES + chdata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + playfield_lookup[0xc0] = L_PF2; + do_border(); +} + +static void prepare_an_antic_4(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + an = mode_e_an_lookup[chdata & 0xc0]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x30]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x0c]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x03]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(4) + +static void draw_antic_6(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + UWORD colour; + int kk = 2; + colour = COLOUR((playfield_lookup + 0x40)[screendata & 0xc0]); +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata & 0xf0) { + if (chdata & 0x80) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x40) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x20) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x10) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + chdata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + UBYTE setcol = (playfield_lookup + 0x40)[screendata & 0xc0]; + int colreg; + int k = 4; + do { + colreg = chdata & 0x80 ? setcol : L_BAK; + DO_PMG_LORES + chdata <<= 1; + } while (--k); + + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_6(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an = screendata >> 6; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + *an_ptr++ = chdata & 0x80 ? an : 0; + *an_ptr++ = chdata & 0x40 ? an : 0; + *an_ptr++ = chdata & 0x20 ? an : 0; + *an_ptr++ = chdata & 0x10 ? an : 0; + *an_ptr++ = chdata & 0x08 ? an : 0; + *an_ptr++ = chdata & 0x04 ? an : 0; + *an_ptr++ = chdata & 0x02 ? an : 0; + *an_ptr++ = chdata & 0x01 ? an : 0; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(6) + +static void draw_antic_8(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = ANTIC_cl[C_PF0]; + lookup2[0x80] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + UWORD data = lookup2[screendata & 0xc0]; + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg = playfield_lookup[screendata & 0xc0]; + int k = 4; + do { + DO_PMG_LORES + } while (--k); + } + screendata <<= 2; + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_8(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + screendata <<= 2; + } while (--kk); + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(8) + +static void draw_antic_9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + screendata <<= 2; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +/* ANTIC modes 9, b and c use BAK and PF0 colours only so they're not visible in GTIA modes */ + +static void draw_antic_9_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0(); +} + +static void draw_antic_9_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia10(); +} + +static void draw_antic_9_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia11(); +} + +static void draw_antic_a(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_a(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x03]; + *an_ptr++ = data; + *an_ptr++ = data; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(a) + +static void draw_antic_c(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = lookup2[0x20] = lookup2[0x10] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x20]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x10]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_e(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x03]; + CHAR_LOOP_END +} + +static void draw_antic_e_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG lookup[16]; + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + lookup[0] = lookup[1] = lookup[4] = lookup[5] = ANTIC_lookup_gtia9[0]; + lookup[2] = lookup[6] = ANTIC_lookup_gtia9[1]; + lookup[3] = lookup[7] = ANTIC_lookup_gtia9[2]; + lookup[8] = lookup[9] = ANTIC_lookup_gtia9[4]; + lookup[10] = ANTIC_lookup_gtia9[5]; + lookup[11] = ANTIC_lookup_gtia9[6]; + lookup[12] = lookup[13] = ANTIC_lookup_gtia9[8]; + lookup[14] = ANTIC_lookup_gtia9[9]; + lookup[15] = ANTIC_lookup_gtia9[10]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, lookup[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, lookup[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e_gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); +} +static void draw_antic_e_gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); +} + +static void draw_antic_f(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_HIRES + + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, hires_norm(screendata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((screendata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(screendata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally = *antic_memptr++; + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + screendata = antic_memptr[-2]; + DO_PMG_HIRES(screendata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_f_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG pmtally; + ULONG screendata_tally = *antic_memptr++; + INIT_ARTIF_NEW + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + screendata = antic_memptr[-2]; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(screendata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_f(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = screendata >> 6; + *an_ptr++ = (screendata >> 4) & 3; + *an_ptr++ = (screendata >> 2) & 3; + *an_ptr++ = screendata & 3; + CHAR_LOOP_END +} + +static void draw_antic_f_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, screendata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = screendata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; /*playfield colours can generate collisions*/ + pm_pixel |= gtia_10_pm[t_screendata]; /*but player colours don't*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); /*although they mix with the real players*/ + if (k == 3) + t_screendata = screendata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_f_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata & 0xf0 : screendata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +/* GTIA-switch-to-mode-00 bug +If while drawing line in hi-res mode PRIOR is changed from 0x40..0xff to +0x00..0x3f, GTIA doesn't back to hi-res, but starts generating mode similar +to ANTIC's 0xe, but with colours PF0, PF1, PF2, PF3. */ + +/* Technical explaination by perrym: + * in gtia.pdf there is a flip-flop at page 40, drawing location C3 with + * what looks like W and A on the gates + * This is set by AN2=0 AN1=1 AN0=1 durning HBLANK + * The middle input to the lower NOR gate is the inverted signal !NRM(?) + * (NRM means NORMAL?) which arrives from the top left of the page. + * This signal is defined on page 38, positions C2/B2 + * where there is a NOR gate pointing downwards with 00 written to the + * right of its output. + * !NRM is the condition that PRIOR is not set to b7=0,b6=0. + * When PRIOR is not set to NRM, the flip-flip is always reset, + * which seems necessary for the proper operation of the GTIA modes. + * If PRIOR is reset to NRM then the flip-flop remains reset, and + * since ANTIC data in hi-res modes is sent as PF0-PF3, this data is used + * by GTIA directly.*/ + +static void draw_antic_f_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_PF0]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF1]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF2]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (playfield_lookup + 0x40)[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +/* pointer to a function that draws a single line of graphics */ +typedef void (*draw_antic_function)(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr); + +/* tables for all GTIA and ANTIC modes */ +static draw_antic_function draw_antic_table[4][16] = { +/* normal */ + { NULL, NULL, draw_antic_2, draw_antic_2, + draw_antic_4, draw_antic_4, draw_antic_6, draw_antic_6, + draw_antic_8, draw_antic_9, draw_antic_a, draw_antic_c, + draw_antic_c, draw_antic_e, draw_antic_e, draw_antic_f}, +/* GTIA 9 */ + { NULL, NULL, draw_antic_2_gtia9, draw_antic_2_gtia9, + draw_antic_4_gtia9, draw_antic_4_gtia9, draw_antic_6_gtia9, draw_antic_6_gtia9, + draw_antic_8_gtia9, draw_antic_9_gtia9, draw_antic_a_gtia9, draw_antic_9_gtia9, + draw_antic_9_gtia9, draw_antic_e_gtia9, draw_antic_e_gtia9, draw_antic_f_gtia9}, +/* GTIA 10 */ + { NULL, NULL, draw_antic_2_gtia10, draw_antic_2_gtia10, + draw_antic_4_gtia10, draw_antic_4_gtia10, draw_antic_6_gtia10, draw_antic_6_gtia10, + draw_antic_8_gtia10, draw_antic_9_gtia10, draw_antic_a_gtia10, draw_antic_9_gtia10, + draw_antic_9_gtia10, draw_antic_e_gtia10, draw_antic_e_gtia10, draw_antic_f_gtia10}, +/* GTIA 11 */ + { NULL, NULL, draw_antic_2_gtia11, draw_antic_2_gtia11, + draw_antic_4_gtia11, draw_antic_4_gtia11, draw_antic_6_gtia11, draw_antic_6_gtia11, + draw_antic_8_gtia11, draw_antic_9_gtia11, draw_antic_a_gtia11, draw_antic_9_gtia11, + draw_antic_9_gtia11, draw_antic_e_gtia11, draw_antic_e_gtia11, draw_antic_f_gtia11}}; + +/* pointer to current GTIA/ANTIC mode routine */ +static draw_antic_function draw_antic_ptr = draw_antic_8; +#ifdef NEW_CYCLE_EXACT +static draw_antic_function saved_draw_antic_ptr; +#endif +/* pointer to current GTIA mode blank drawing routine */ +static void (*draw_antic_0_ptr)(void) = draw_antic_0; + +#ifdef NEW_CYCLE_EXACT +/* wrapper for antic_0, for dmactl bugs */ +static void draw_antic_0_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_ptr(); +} +#endif + +/* Artifacting ------------------------------------------------------------ */ + +void ANTIC_UpdateArtifacting(void) +{ +#define ART_BROWN 0 +#define ART_BLUE 1 +#define ART_DARK_BROWN 2 +#define ART_DARK_BLUE 3 +#define ART_BRIGHT_BROWN 4 +#define ART_BRIGHT_BLUE 5 +#define ART_RED 6 +#define ART_GREEN 7 + static const UBYTE art_colour_table[4][8] = { + { 0x88, 0x14, 0x88, 0x14, 0x8f, 0x1f, 0xbb, 0x5f }, /* brownblue */ + { 0x14, 0x88, 0x14, 0x88, 0x1f, 0x8f, 0x5f, 0xbb }, /* bluebrown */ + { 0xd6, 0x46, 0xd6, 0x46, 0xdf, 0x4a, 0x4f, 0xac }, /* redgreen */ + { 0x46, 0xd6, 0x46, 0xd6, 0x4a, 0xdf, 0xac, 0x4f } /* greenred */ + }; + + int i; + int j; + int c; + const UBYTE *art_colours; + UBYTE q; + UBYTE art_white; + + if (ANTIC_artif_mode == 0) { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2; + draw_antic_table[0][0xf] = draw_antic_f; + return; + } + +#ifndef USE_COLOUR_TRANSLATION_TABLE + if (ANTIC_artif_new) { + static UWORD new_art_colour_table[4][2] = { + {0x4040, 0x8080}, + {0x8080, 0x4040}, + {0x8080, 0xd0d0}, + {0xd0d0, 0x8080} + }; + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif_new; + draw_antic_table[0][0xf] = draw_antic_f_artif_new; + art_colour1_new = new_art_colour_table[ANTIC_artif_mode - 1][0]; + art_colour2_new = new_art_colour_table[ANTIC_artif_mode - 1][1]; + } + else +#endif + { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif; + draw_antic_table[0][0xf] = draw_antic_f_artif; + } + + art_colours = (ANTIC_artif_mode <= 4 ? art_colour_table[ANTIC_artif_mode - 1] : art_colour_table[2]); + + art_reverse_colpf1_save = art_normal_colpf1_save = ANTIC_cl[C_PF1] & 0x0f0f; + art_reverse_colpf2_save = art_normal_colpf2_save = ANTIC_cl[C_PF2]; + art_white = (ANTIC_cl[C_PF2] & 0xf0) | (ANTIC_cl[C_PF1] & 0x0f); + + for (i = 0; i <= 255; i++) { + art_bkmask_normal[i] = 0; + art_lummask_normal[i] = 0; + art_bkmask_reverse[255 - i] = 0; + art_lummask_reverse[255 - i] = 0; + + for (j = 0; j <= 3; j++) { + q = i << j; + if (!(q & 0x20)) { + if ((q & 0xf8) == 0x50) + c = ART_BLUE; /* 01010 */ + else if ((q & 0xf8) == 0xD8) + c = ART_DARK_BLUE; /* 11011 */ + else { /* xx0xx */ + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = art_white; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xff; + ((UBYTE *) art_lummask_reverse)[((255 - i) << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xf0; + continue; + } + } + else if (q & 0x40) { + if (q & 0x10) + goto colpf1_pixel; /* x111x */ + else if (q & 0x80) { + if (q & 0x08) + c = ART_BRIGHT_BROWN; /* 11101 */ + else + goto colpf1_pixel; /* 11100 */ + } + else + c = ART_GREEN; /* 0110x */ + } + else if (q & 0x10) { + if (q & 0x08) { + if (q & 0x80) + c = ART_BRIGHT_BROWN; /* 00111 */ + else + goto colpf1_pixel; /* 10111 */ + } + else + c = ART_RED; /* x0110 */ + } + else + c = ART_BROWN; /* x010x */ + + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_colours[(j & 1) ^ c]; + continue; + + colpf1_pixel: + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_white; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xff; + ((UBYTE *) art_lummask_normal)[(i << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xf0; + } + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Display List ------------------------------------------------------------ */ + +UBYTE ANTIC_GetDLByte(UWORD *paddr) +{ + int addr = *paddr; + UBYTE result; + if (ANTIC_xe_ptr != NULL && addr < 0x8000 && addr >= 0x4000) + result = ANTIC_xe_ptr[addr - 0x4000]; + else + result = MEMORY_GetByte((UWORD) addr); + addr++; + if ((addr & 0x3FF) == 0) + addr -= 0x400; + *paddr = (UWORD) addr; + return result; +} + +UWORD ANTIC_GetDLWord(UWORD *paddr) +{ + UBYTE lsb = ANTIC_GetDLByte(paddr); +#if !defined(BASIC) && !defined(CURSES_BASIC) + if (ANTIC_player_flickering && ((GTIA_VDELAY & 0x80) == 0 || ANTIC_ypos & 1)) + GTIA_GRAFP3 = lsb; +#endif + return (ANTIC_GetDLByte(paddr) << 8) + lsb; +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Real ANTIC doesn't fetch beginning bytes in HSC + nor screen+47 in wide playfield. This function does. */ +static void antic_load(void) +{ +#ifdef PAGED_MEM + UBYTE *antic_memptr = antic_memory + ANTIC_margin; + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + do + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); + while (screenaddr & 0xfff); + screenaddr -= 0x1000; + new_screenaddr -= 0x1000; + } + while (screenaddr < new_screenaddr) + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); +#else + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + int bytes = (-screenaddr) & 0xfff; + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) { + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), bytes); + if (new_screenaddr & 0xfff) + memcpy(antic_memory + ANTIC_margin + bytes, ANTIC_xe_ptr + (screenaddr + bytes - 0x5000), new_screenaddr & 0xfff); + } + else if ((screenaddr & 0xf000) == 0xd000) { + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_CopyFromMem((UWORD) (screenaddr + bytes - 0x1000), antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + else { + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_dCopyFromMem(screenaddr + bytes - 0x1000, antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + screenaddr = new_screenaddr - 0x1000; + } + else { + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), chars_read[md]); + else if ((screenaddr & 0xf000) == 0xd000) + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + else + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + screenaddr = new_screenaddr; + } +#endif +} + +#ifdef NEW_CYCLE_EXACT +int ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + +#ifdef USE_CURSES +static int scanlines_to_curses_display = 0; +#endif + +/* This function emulates one frame drawing screen at Screen_atari */ +void ANTIC_Frame(int draw_display) +{ + static const UBYTE mode_type[32] = { + NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL1, NORMAL1, + NORMAL2, NORMAL2, NORMAL1, NORMAL1, NORMAL1, NORMAL0, NORMAL0, NORMAL0, + SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL1, SCROLL1, + SCROLL2, SCROLL2, SCROLL1, SCROLL1, SCROLL1, SCROLL0, SCROLL0, SCROLL0 + }; + static const UBYTE normal_lastline[16] = + { 0, 0, 7, 9, 7, 15, 7, 15, 7, 3, 3, 1, 0, 1, 0, 0 }; + UBYTE vscrol_flag = FALSE; + UBYTE no_jvb = TRUE; +#ifndef NEW_CYCLE_EXACT + UBYTE need_load; +#endif + +#ifdef NEW_CYCLE_EXACT + int cpu2antic_index; +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_ypos = 0; + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < 8); + + scrn_ptr = (UWORD *) Screen_atari; +#ifdef NEW_CYCLE_EXACT + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + need_dl = TRUE; + do { +#ifdef SKIP + if ((INPUT_mouse_mode == INPUT_MOUSE_PEN || INPUT_mouse_mode == INPUT_MOUSE_GUN) && (ANTIC_ypos >> 1 == ANTIC_PENV_input)) { + PENH = ANTIC_PENH_input; + PENV = ANTIC_PENV_input; + if (GTIA_GRACTL & 4) + GTIA_TRIG_latch[INPUT_mouse_port] = 0; + } +#endif + POKEY_Scanline(); /* check and generate IRQ */ + pmg_dma(); + +#ifdef USE_CURSES + if (--scanlines_to_curses_display == 0) + curses_display_line(anticmode, antic_memory + ANTIC_margin); +#endif + + need_load = FALSE; + if (need_dl) { + if (ANTIC_DMACTL & 0x20) { + IR = ANTIC_GetDLByte(&ANTIC_dlist); + anticmode = IR & 0xf; + ANTIC_xpos++; + /* PMG flickering :-) */ + if (ANTIC_missile_flickering) + GTIA_GRAFM = ANTIC_ypos & 1 ? IR : ((GTIA_GRAFM ^ IR) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ IR; + if (ANTIC_player_flickering) + { + UBYTE hold = ANTIC_ypos & 1 ? 0 : GTIA_VDELAY; + if ((hold & 0x10) == 0) + GTIA_GRAFP0 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 8)); + if ((hold & 0x20) == 0) + GTIA_GRAFP1 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 9)); + if ((hold & 0x40) == 0) + GTIA_GRAFP2 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 10)); + if ((hold & 0x80) == 0) + GTIA_GRAFP3 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 11)); + } + } + else + IR &= 0x7f; /* repeat last instruction, but don't generate DLI */ + + dctr = 0; + need_dl = FALSE; + vscrol_off = FALSE; + + switch (anticmode) { + case 0x00: + lastline = (IR >> 4) & 7; + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + case 0x01: + lastline = 0; + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + no_jvb = FALSE; + } + else + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + default: + lastline = normal_lastline[anticmode]; + if (IR & 0x20) { + if (!vscrol_flag) { + CPU_GO(VSCON_C); + dctr = ANTIC_VSCROL; + vscrol_flag = TRUE; + } + } + else if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + screenaddr = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + md = mode_type[IR & 0x1f]; + need_load = TRUE; + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode]; + break; + } + } +#ifdef NEW_CYCLE_EXACT + cpu2antic_index = 0; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || + (anticmode >= 8 && !need_load)) { + cpu2antic_index = 0; + } + else { +/* TODO: use a cleaner lookup table here */ + if (!(IR & 0x10) && ((ANTIC_DMACTL & 3) == 1)) + cpu2antic_index = 1; + else if ((!(IR &0x10) && ((ANTIC_DMACTL & 3) == 2)) || + ((IR & 0x10) && ((ANTIC_DMACTL & 3) == 1))) { + cpu2antic_index = 2; + } + else + cpu2antic_index = 10; + if (IR & 0x10) { + cpu2antic_index += (ANTIC_HSCROL >> 1); + } + if (anticmode >=2 && anticmode <=7 && !need_load) + cpu2antic_index += 17; + if (anticmode ==6 || anticmode ==7) + cpu2antic_index += 17 * 2; + else if (anticmode==8 || anticmode == 9) + cpu2antic_index += 17 * 6; + else if (anticmode >=0xa && anticmode <=0xc) + cpu2antic_index += 17 * 5; + else if (anticmode >=0x0d) + cpu2antic_index += 17 * 4; + } + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[CYCLE_MAP_SIZE * cpu2antic_index]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[CYCLE_MAP_SIZE * cpu2antic_index]; +#endif /* NEW_CYCLE_EXACT */ + + if ((IR & 0x4f) == 1 && (ANTIC_DMACTL & 0x20)) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + +#ifdef NEW_CYCLE_EXACT + /* begin drawing here */ + if (draw_display) { + ANTIC_cur_screen_pos = LBORDER_START; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_xpos]; /* convert antic to cpu(need for WSYNC) */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMIST_C]); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMI_C]); + CPU_NMI(); + } + } + } + } + else /* force this to be within an else if NEW_CYCLE_EXACT */ +#endif /* NEW_CYCLE_EXACT */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + } + } + if (!draw_display) { + ANTIC_xpos += ANTIC_DMAR; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + if (need_load) { + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos += before_cycles[md] - extra_cycles[md]; + } + if (anticmode < 8) + ANTIC_xpos += font_cycles[md]; + GOEOL; + dctr++; + dctr &= 0xf; + continue; + } +#ifndef NO_YPOS_BREAK_FLICKER +#define YPOS_BREAK_FLICKER do{if (ANTIC_ypos == ANTIC_break_ypos - 1000) {\ + static int toggle;\ + if (toggle == 1) {\ + FILL_VIDEO(scrn_ptr + LBORDER_START, 0x0f0f, (RBORDER_END - LBORDER_START) * 2);\ + }\ + toggle = !toggle;\ + }}while(0) +#else +#define YPOS_BREAK_FLICKER do{}while(0) +#endif /* NO_YPOS_BREAK_FLICKER */ + +#ifdef NEW_CYCLE_EXACT + GTIA_NewPmScanline(); + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + YPOS_BREAK_FLICKER; + scrn_ptr += Screen_WIDTH / 2; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + +#else /* NEW_CYCLE_EXACT not defined */ + if (need_load && anticmode <= 5 && ANTIC_DMACTL & 3) + ANTIC_xpos += before_cycles[md]; + + CPU_GO(SCR_C); + GTIA_NewPmScanline(); + + ANTIC_xpos += ANTIC_DMAR; + + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + draw_antic_0_ptr(); + GOEOL; + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos -= extra_cycles[md]; + } + + draw_antic_ptr(chars_displayed[md], + antic_memory + ANTIC_margin + ch_offset[md], + scrn_ptr + x_min[md], + (ULONG *) >IA_pm_scanline[x_min[md]]); + + GOEOL; +#endif /* NEW_CYCLE_EXACT */ + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + dctr++; + dctr &= 0xf; + + //drawline(); + + } while (ANTIC_ypos < (ATARI_HEIGHT + 8)); + +#ifndef NO_SIMPLE_PAL_BLENDING + /* Simple PAL blending, using only the base 256 color palette. */ + if (ANTIC_pal_blending) + { + int ypos = ANTIC_ypos - 1; + /* Start at the last screen line (248). */ + ULONG *ptr = (ULONG *) (scrn_ptr - 4 * RCHOP); + do { + int k = 2 * (48 - LCHOP - RCHOP); + do { + /* For each grayscale pixel (colors $00..$0f) blend it with + chrominance of a pixel from the previous line. */ + ULONG pix = READ_VIDEO_LONG(--ptr); + ULONG mask = 0xf0f0f0f0; + /* Take advantage of the fact that chrominance can change only + every two pixels. This way we may test only two pixels in a + quadruplet instead of four. */ + if (pix & 0x0000f0f0) + /* Two LSBs are non-grayscale */ + mask &= 0xf0f00000; + if (pix & 0xf0f00000) + /* Two MSBs are non-grayscale */ + mask &= 0x0000f0f0; + + WRITE_VIDEO_LONG(ptr, (READ_VIDEO_LONG(ptr - ATARI_WIDTH / 4) & mask) | pix); + } while (--k); + ptr -= 2 * (LCHOP + RCHOP); /* Move one line up */ + } while (--ypos > 8); /* Stop after line 9 */ + + } +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* TODO: cycle-exact overscreen lines */ + POKEY_Scanline(); /* check and generate IRQ */ + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x5f; /* Set VBLANK */ + if (ANTIC_NMIEN & 0x40) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + ANTIC_xpos += ANTIC_DMAR; + GOEOL; + + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < max_ypos); + ANTIC_ypos = 0; /* just for monitor.c */ +} + +#ifdef NEW_CYCLE_EXACT + +/* update the scanline from the last changed position to the current +position, when a change was made to a display register during drawing */ +void ANTIC_UpdateScanline(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* prior needs a different adjustment and could generate small glitches +between mode changes */ +/* TODO: support glitches between mode changes (tiny areas that are neither +the new mode nor the old mode, which occur between mode changes */ +void ANTIC_UpdateScanlinePrior(UBYTE byte) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int prior_mode_adj = 2; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + prior_mode_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chbase needs a different adjustment */ +void update_scanline_chbase(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + int fontfetch_adj; + /* antic fetches character font data every 2 or 4 cycles */ + /* we want to delay the change until the next fetch */ + /* empirically determined: */ + if (anticmode >= 2 && anticmode <= 5) { + fontfetch_adj = (((hscrol_adj >>1) - actual_xpos + 0) & 1) * 2 + 9; + } + else if (anticmode == 6 || anticmode == 7) { + fontfetch_adj = (((hscrol_adj >> 1) - actual_xpos + 2) & 3) * 2 + 9; + } + else { + fontfetch_adj = 0; + } + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + fontfetch_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl invert needs a different adjustment */ +void update_scanline_invert(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 4 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 4; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl blank needs a different adjustment */ +void update_scanline_blank(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 7 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 7; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +static void set_dmactl_bug(void){ + need_load = FALSE; + saved_draw_antic_ptr = draw_antic_ptr; + draw_antic_ptr_changed = 1; + if (anticmode == 2 || anticmode == 3 || anticmode == 0xf) { + draw_antic_ptr = draw_antic_2_dmactl_bug; + dmactl_bug_chdata = (anticmode == 0xf) ? 0 : antic_memory[ANTIC_margin + chars_read[md] - 1]; + } + else { + draw_antic_ptr = draw_antic_0_dmactl_bug; + } +} + +/* draw a partial scanline between point l and point r */ +/* l is the left hand word, r is the point one past the right-most word to draw */ +void draw_partial_scanline(int l, int r) +{ + /* lborder_chars: save left border chars,we restore it after */ + /* it is the number of 8pixel 'chars' in the left border */ + int lborder_chars = left_border_chars; + + /* rborder_start: save right border start, we restore it after */ + /* it is the start of the right border, in words */ + int rborder_start = right_border_start; + + /* lborder_start: start of the left border, in words */ + int lborder_start = LCHOP * 4; + /* end of the left border, in words */ + int lborder_end = LCHOP * 4 + left_border_chars * 4; + /* end of the right border, in words */ + int rborder_end = (48 - RCHOP) * 4; + /* flag: if true, don't show playfield. used if the partial scanline */ + /* does not include the playfield */ + int dont_display_playfield = 0; + /* offset of the left most drawable 8 pixel pf block */ + /* int l_pfchar = (lborder_end - x_min[md]) / 4; */ + int l_pfchar = 0; + /* offset of the right most drawable 8 pixel pf plock, *plus one* */ + int r_pfchar = 0; + /* buffer to save 0,1,2 or 3 words of the left hand portion of an 8pixel */ + /* 'char' which is going to be erased by the left hand side of the */ + /* left most 8pixel 'char' in the partial scanline and must be saved */ + /* and restored later */ + UWORD sv_buf[4]; + /* buffer to save 0 or 1 (modes 6,7,a,b,c) ,or , (0,1,2 or 3) (modes 8,9) */ + /* 8pixel 'chars' of playfield which is going to be erased by the left */ + /* hand most 8pixel 'char's of the 2(modes 67abc) or 4(modes 89) 8pixel */ + /* 'char'-sized blocks that these modes must draw. */ + UWORD sv_buf2[4 * 4]; /* for modes 6,7,8,9,a,b,c */ + /* start,size of the above buffers */ + int sv_bufstart = 0; + int sv_bufsize = 0; + int sv_bufstart2 = 0; + int sv_bufsize2 = 0; + /* number of 8,16,32pixel chars to draw in the playfield */ + int nchars = 0; + /* adjustment to ch_index , it is the number of 8,16,32pixel chars */ + /* that we do not draw on the left hand side that would usually be drawn */ + /* for this mode */ + int ch_adj = 0; + /* adjustment to x_min to skip over the left side */ + int x_min_adj = 0; + /* it's the offset of the left most drawable 8pixel pfblock which is */ + /* rounded *down* to the nearest factor of (2:mode 67abc,4:mode 89) */ + /* if it is divided by (2:mode 67abc,4:mode 89) it will give the */ + /* offset of the left most drawable (16,32)pixel 'char' */ + int l_pfactual = 0; + /* it is the offset of the right most drawable 8pixel pf block which is */ + /* rounded *up* to the nearest factor of (2,4), *plus one* */ + /* so that r_pfactual-l_pfactual / (2,4) = number of 16,32 pixel 'chars' */ + /* to be drawn */ + int r_pfactual = 0; + /* it is the offset of the 8pixel block aligned with pf which overlaps */ + /* the left border. We need this for modes 6-c, because in these modes */ + /* the code will save 8pixel blocks to the left of l_pfchar and */ + /* >= l_pfactual, which will result in portions of the left border */ + /* being saved on some occasions which should not be, unless we */ + /* use this variable to alter the number of chars saved */ + /* int l_borderpfchar=0; */ + + r_pfchar = chars_displayed[md]; + if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + r_pfchar *= 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + r_pfchar *= 4; + } + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + lborder_end = rborder_end; + dont_display_playfield = 1; + } + if (l > rborder_end) + l = rborder_end; + if (r > rborder_end) + r = rborder_end; + if (l < lborder_start) + l = lborder_start; + if (r < lborder_start) + r = lborder_start; + if (l >= r) + return; + if (l < lborder_end) { + /* left point is within left border */ + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + left_border_start = sv_bufstart; + left_border_chars = lborder_chars - (sv_bufstart - lborder_start) / 4; + if (l > x_min[md]) { + /* special case for modes 56789abc */ + /* position buffer within the reference frame */ + /* of the playfield if that */ + /* results in more pixels being saved in the buffer */ + /* needed because for modes 5789abc the overlapping part */ + /* can be more than 1 8pixel char and we only save the left */ + /* hand most 8pixel chars in the code in the later section */ + /* further down, so there is a possibility that the 8pixels */ + /* which are saved within the reference frame of the border */ + /* are not enough to ensure that everything gets saved */ + l_pfchar = (l - x_min[md]) / 4; + if (((l - x_min[md]) & 3) > sv_bufsize) { + sv_bufsize = ((l - x_min[md]) & 3); + sv_bufstart = l - sv_bufsize; + } + } + } + else if (l >= rborder_start) { + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + right_border_start = sv_bufstart; + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /*within screen */ + sv_bufsize = ((l - x_min[md]) & 3); /* low bits have buf size */ + sv_bufstart = l - sv_bufsize; /* difference gives start */ + l_pfchar = (sv_bufstart - x_min[md]) / 4; + left_border_chars = 0; /* don't display left border */ + } + memcpy(sv_buf, scrn_ptr + sv_bufstart, sv_bufsize * sizeof(UWORD)); /* save part of screen */ + + if (r <= lborder_end) { + /* right_end_char = (r + 3) / 4; */ + left_border_chars = (r + 3) / 4 - sv_bufstart / 4; + /* everything must be within the left border */ + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /* right point is past start of playfield */ + /* now load ANTIC data: needed for ANTIC glitches */ + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + need_load = FALSE; + } + + if (r > rborder_start) { + right_border_end = ((r + 3) & (~3)); /* round up to nearest 8pixel */ + } + else { + r_pfchar = (r - x_min[md] + 3) / 4; /* round up to nearest 8pixel */ + } + } + if (dont_display_playfield) { + nchars = 0; + x_min_adj = 0; + ch_adj = 0; + } + else if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + l_pfactual = (l_pfchar & (~1)); /* round down to nearest 16pixel */ + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 1) & (~1)); /* round up to nearest 16pixel */ + nchars = (r_pfactual - l_pfactual) / 2; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + l_pfactual = (l_pfchar & (~3)); + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 3) & (~3)); + nchars = (r_pfactual - l_pfactual) / 4; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 4; + } + else { + nchars = r_pfchar - l_pfchar; + x_min_adj = l_pfchar * 4; + ch_adj = l_pfchar; + } + memcpy(sv_buf2, scrn_ptr + sv_bufstart2, sv_bufsize2 * sizeof(UWORD)); /* save part of screen */ + + if (dont_display_playfield) { +/* the idea here is to use draw_antic_0_ptr() to draw just the border only, since */ +/* we can't set nchars=0. draw_antic_0_ptr will work if left_border_start and */ +/* right_border_end are set correctly */ + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || r <= lborder_end) { + right_border_end = left_border_start + left_border_chars * 4; + } + else if (l >= rborder_start) { + left_border_start = right_border_start; + } + draw_antic_0_ptr(); + } + else { + draw_antic_ptr(nchars, /* chars_displayed[md], */ + antic_memory + ANTIC_margin + ch_offset[md] + ch_adj, + scrn_ptr + x_min[md] + x_min_adj, + (ULONG *) >IA_pm_scanline[x_min[md] + x_min_adj]); + } + memcpy(scrn_ptr + sv_bufstart2, sv_buf2, sv_bufsize2 * sizeof(UWORD)); /* restore screen */ + memcpy(scrn_ptr + sv_bufstart, sv_buf, sv_bufsize * sizeof(UWORD)); /* restore screen */ + + /* restore border global variables */ + left_border_chars=lborder_chars; + right_border_start=rborder_start; + left_border_start = LCHOP * 4; + right_border_end = (48-RCHOP) *4; +} +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* ANTIC registers --------------------------------------------------------- */ + +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_VCOUNT: + if (ANTIC_XPOS < ANTIC_LINE_C) + return ANTIC_ypos >> 1; + if (ANTIC_ypos + 1 < max_ypos) + return (ANTIC_ypos + 1) >> 1; + return 0; + case ANTIC_OFFSET_PENH: + return PENH; + case ANTIC_OFFSET_PENV: + return PENV; + case ANTIC_OFFSET_NMIST: + return ANTIC_NMIST; + default: + return 0xff; + } +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* GTIA calls it on write to PRIOR */ +void ANTIC_SetPrior(UBYTE byte) +{ + if ((byte ^ GTIA_PRIOR) & 0x0f) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + UBYTE col = 0; + UBYTE col2 = 0; + UBYTE hi; + UBYTE hi2; + if ((byte & 3) == 0) { + col = GTIA_COLPF0; + col2 = GTIA_COLPF1; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[col | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[col | GTIA_COLPM0 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2 | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[col2 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[col2 | GTIA_COLPM0 | GTIA_COLPM1]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col]; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2]; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = ANTIC_cl[C_HI2]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(GTIA_COLPM0 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(GTIA_COLPM1 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[((GTIA_COLPM0 | GTIA_COLPM1) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + col = col2 = 0; + hi = hi2 = GTIA_COLPF1 & 0xf; + ANTIC_cl[C_BLACK - C_PF2 + C_HI2] = colour_translation_table[hi]; + if ((byte & 9) == 0) { + col = GTIA_COLPF2; + col2 = GTIA_COLPF3; + hi |= col & 0xf0; + hi2 |= col2 & 0xf0; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[col | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[col | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2 | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[col2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[col2 | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[hi | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[hi | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[hi2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM35] = colour_translation_table[hi2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[hi2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col]; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2]; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi]; + } +#else /* USE_COLOUR_TRANSLATION_TABLE */ + UWORD cword = 0; + UWORD cword2 = 0; + if ((byte & 3) == 0) { + cword = ANTIC_cl[C_PF0]; + cword2 = ANTIC_cl[C_PF1]; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF0 | C_PM01] = cword | ANTIC_cl[C_PM01]; + ANTIC_cl[C_PF1 | C_PM0] = cword2 | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF1 | C_PM1] = cword2 | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PM01]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword2; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + } + cword = cword2 = 0; + if ((byte & 9) == 0) { + cword = ANTIC_cl[C_PF2]; + cword2 = ANTIC_cl[C_PF3]; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF2 | C_PM23] = cword | ANTIC_cl[C_PM23]; + ANTIC_cl[C_PF3 | C_PM2] = cword2 | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM3] = cword2 | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword2; + } +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + if (byte & 1) { + ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF1]; + } + if ((byte & 0xf) == 0xc) { + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = ANTIC_cl[C_PF1]; + } + else + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = GTIA_COLOUR_BLACK; + if (byte & 0xf) { + ANTIC_cl[C_PF0 | C_PM25] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = GTIA_COLOUR_BLACK; + } + else { + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23]; + } + } + pm_lookup_ptr = pm_lookup_table[prior_to_pm_lookup[byte & 0x3f]]; + draw_antic_0_ptr = byte < 0x80 ? draw_antic_0 : byte < 0xc0 ? draw_antic_0_gtia10 : draw_antic_0_gtia11; + if (byte < 0x40 && (GTIA_PRIOR >= 0x40 || gtia_bug_active) && (anticmode == 2 || anticmode == 3 || anticmode == 0xf) && ANTIC_XPOS >= ((ANTIC_DMACTL & 3) == 3 ? 16 : 18)) { + /* A GTIA Mode was active, and no longer is. An ANTIC hi-res mode is being used. GTIA is no longer set in hi-res mode */ + if (anticmode == 2 || anticmode == 3) draw_antic_ptr = draw_antic_2_gtia_bug; + else if (anticmode == 0xf) draw_antic_ptr = draw_antic_f_gtia_bug; + gtia_bug_active = TRUE; + } + else + draw_antic_ptr = draw_antic_table[byte >> 6][anticmode]; +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +void ANTIC_PutByte(UWORD addr, UBYTE byte) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_DLISTL: + ANTIC_dlist = (ANTIC_dlist & 0xff00) | byte; + break; + case ANTIC_OFFSET_DLISTH: + ANTIC_dlist = (ANTIC_dlist & 0x00ff) | (byte << 8); + break; + case ANTIC_OFFSET_DMACTL: +/* TODO: make this truly cycle-exact, update cpu2antic and antic2cpu, +add support for wider->narrow glitches including the interesting mode 6 +glitch */ +#ifdef NEW_CYCLE_EXACT + dmactl_changed=0; + /* has DMACTL width changed? */ + if ((byte & 3) != (ANTIC_DMACTL & 3) ){ + /* DMACTL width changed from 0 */ + if ((ANTIC_DMACTL & 3) == 0) { + int glitch_cycle = (3 + 32) - 8*(byte & 3); + int x = ANTIC_XPOS; + if((IR & 0x10) && ((byte & 3) != 3)){ + /*adjust for narrow or std HSCROL*/ + glitch_cycle -= 8; + } + /*ANTIC doesn't fetch and display data if the*/ + /*DMACTL width changes from zero after this */ + /*cycle. Instead, it displays a blank scan */ + /*line for modes other than 23F and for 23F */ + /*it displays a glitched line after the change*/ + if(x >= glitch_cycle){ + if(ANTIC_DRAWING_SCREEN){ + ANTIC_UpdateScanline(); + set_dmactl_bug(); + } + } + else { + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + /* DMACTL width changed to 0 */ + else if ((byte & 3)==0) { + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int antic_limit = ANTIC_cpu2antic_ptr[ANTIC_xpos_limit]; + ANTIC_UpdateScanline(); + /*fix for a minor glitch in fasteddie*/ + /*don't steal cycles after DMACTL off*/ + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; + ANTIC_xpos = ANTIC_antic2cpu_ptr[actual_xpos]; + ANTIC_xpos_limit = ANTIC_antic2cpu_ptr[antic_limit]; + } + /* DMACTL width has changed and not to 0 and not from 0 */ + } + else { + /* DMACTL width has increased and no HSCROL */ + if (((byte & 3) > (ANTIC_DMACTL & 3)) && !(IR & 0x10)) { + int x; /* the change cycle */ + int left_glitch_cycle = 0; + int right_glitch_cycle = 0; + x = ANTIC_XPOS; + if (((ANTIC_DMACTL & 3) == 2) && ((byte & 3) == 3)) { /* Normal->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 18; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 3)) { /* Narrow->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 26; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 2)) { /* Narrow->Normal */ + left_glitch_cycle = 19; + right_glitch_cycle = 27; + } + /* change occurs during drawing of line */ + /* delay change till next line */ + if (x > right_glitch_cycle) { + dmactl_changed = 1; + delayed_DMACTL = byte; + break; + /* change occurs during 'glitch' region */ + } + else if (x >= left_glitch_cycle && x <= right_glitch_cycle && anticmode > 1) { + set_dmactl_bug(); + } + } + else { + /* DMACTL width has decreased or HSCROL */ + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + } +#endif /* NEW_CYCLE_EXACT */ + ANTIC_DMACTL = byte; +#if defined(BASIC) || defined(CURSES_BASIC) + break; +#else + switch (byte & 0x03) { + case 0x00: + /* no antic_load when screen off */ + /* chars_read[NORMAL0] = 0; + chars_read[NORMAL1] = 0; + chars_read[NORMAL2] = 0; + chars_read[SCROLL0] = 0; + chars_read[SCROLL1] = 0; + chars_read[SCROLL2] = 0; */ + /* no draw_antic_* when screen off */ + /* chars_displayed[NORMAL0] = 0; + chars_displayed[NORMAL1] = 0; + chars_displayed[NORMAL2] = 0; + chars_displayed[SCROLL0] = 0; + chars_displayed[SCROLL1] = 0; + chars_displayed[SCROLL2] = 0; + x_min[NORMAL0] = 0; + x_min[NORMAL1] = 0; + x_min[NORMAL2] = 0; + x_min[SCROLL0] = 0; + x_min[SCROLL1] = 0; + x_min[SCROLL2] = 0; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + ch_offset[SCROLL0] = 0; + ch_offset[SCROLL1] = 0; + ch_offset[SCROLL2] = 0; */ + /* no borders when screen off, only background */ + /* left_border_chars = 48 - LCHOP - RCHOP; + right_border_start = 0; */ + break; + case 0x01: + chars_read[NORMAL0] = 32; + chars_read[NORMAL1] = 16; + chars_read[NORMAL2] = 8; + chars_read[SCROLL0] = 40; + chars_read[SCROLL1] = 20; + chars_read[SCROLL2] = 10; + chars_displayed[NORMAL0] = 32; + chars_displayed[NORMAL1] = 16; + chars_displayed[NORMAL2] = 8; + x_min[NORMAL0] = 32; + x_min[NORMAL1] = 32; + x_min[NORMAL2] = 32; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 32; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 16; + load_cycles[NORMAL2] = 8; + before_cycles[NORMAL0] = BEFORE_CYCLES; + before_cycles[SCROLL0] = BEFORE_CYCLES + 8; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES; + extra_cycles[SCROLL0] = 8 + BEFORE_CYCLES + 8; + left_border_chars = 8 - LCHOP; + right_border_start = (ATARI_WIDTH - 64) / 2; + break; + case 0x02: + chars_read[NORMAL0] = 40; + chars_read[NORMAL1] = 20; + chars_read[NORMAL2] = 10; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 40; + chars_displayed[NORMAL1] = 20; + chars_displayed[NORMAL2] = 10; + x_min[NORMAL0] = 16; + x_min[NORMAL1] = 16; + x_min[NORMAL2] = 16; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 40; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 20; + load_cycles[NORMAL2] = 10; + before_cycles[NORMAL0] = BEFORE_CYCLES + 8; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 8 + BEFORE_CYCLES + 8; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 4 - LCHOP; + right_border_start = (ATARI_WIDTH - 32) / 2; + break; + case 0x03: + chars_read[NORMAL0] = 48; + chars_read[NORMAL1] = 24; + chars_read[NORMAL2] = 12; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 42; + chars_displayed[NORMAL1] = 22; + chars_displayed[NORMAL2] = 12; + x_min[NORMAL0] = 12; + x_min[NORMAL1] = 8; + x_min[NORMAL2] = 0; + ch_offset[NORMAL0] = 3; + ch_offset[NORMAL1] = 1; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 47; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 24; + load_cycles[NORMAL2] = 12; + before_cycles[NORMAL0] = BEFORE_CYCLES + 16; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES + 16; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 3 - LCHOP; + right_border_start = (ATARI_WIDTH - 8) / 2; + break; + } + + ANTIC_missile_dma_enabled = (byte & 0x0c); /* no player dma without missile */ + ANTIC_player_dma_enabled = (byte & 0x08); + singleline = (byte & 0x10); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + + byte = ANTIC_HSCROL; /* update horizontal scroll data */ +/* ******* FALLTHROUGH ******* */ + case ANTIC_OFFSET_HSCROL: +/* TODO: make this truely cycle exact, and update cpu2antic and antic2cpu */ +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + ANTIC_HSCROL = byte &= 0x0f; + if (ANTIC_DMACTL & 3) { + chars_displayed[SCROLL0] = chars_displayed[NORMAL0]; + ch_offset[SCROLL0] = 4 - (byte >> 2); + x_min[SCROLL0] = x_min[NORMAL0]; + if (byte & 3) { + x_min[SCROLL0] += (byte & 3) - 4; + chars_displayed[SCROLL0]++; + ch_offset[SCROLL0]--; + } + chars_displayed[SCROLL2] = chars_displayed[NORMAL2]; + if ((ANTIC_DMACTL & 3) == 3) { /* wide playfield */ + ch_offset[SCROLL0]--; + if (byte == 4 || byte == 12) + chars_displayed[SCROLL1] = 21; + else + chars_displayed[SCROLL1] = 22; + if (byte <= 4) { + x_min[SCROLL1] = byte + 8; + ch_offset[SCROLL1] = 1; + } + else if (byte <= 12) { + x_min[SCROLL1] = byte; + ch_offset[SCROLL1] = 0; + } + else { + x_min[SCROLL1] = byte - 8; + ch_offset[SCROLL1] = -1; + } + /* technically, the part below is wrong */ + /* scrolling in mode 8,9 with HSCROL=13,14,15 */ + /* will set x_min=13,14,15 > 4*LCHOP = 12 */ + /* so that nothing is drawn on the far left side */ + /* of the screen. We could fix this, but only */ + /* by setting x_min to be negative. */ + x_min[SCROLL2] = byte; + ch_offset[SCROLL2] = 0; + } + else { + chars_displayed[SCROLL1] = chars_displayed[NORMAL1]; + ch_offset[SCROLL1] = 2 - (byte >> 3); + x_min[SCROLL1] = x_min[NORMAL0]; + if (byte) { + if (byte & 7) { + x_min[SCROLL1] += (byte & 7) - 8; + chars_displayed[SCROLL1]++; + ch_offset[SCROLL1]--; + } + x_min[SCROLL2] = x_min[NORMAL2] + byte - 16; + chars_displayed[SCROLL2]++; + ch_offset[SCROLL2] = 0; + } + else { + x_min[SCROLL2] = x_min[NORMAL2]; + ch_offset[SCROLL2] = 1; + } + } + + if (ANTIC_DMACTL & 2) { /* normal & wide playfield */ + load_cycles[SCROLL0] = 47 - (byte >> 2); + font_cycles[SCROLL0] = (47 * 4 + 1 - byte) >> 2; + load_cycles[SCROLL1] = (24 * 8 + 3 - byte) >> 3; + font_cycles[SCROLL1] = (24 * 8 + 1 - byte) >> 3; + load_cycles[SCROLL2] = byte < 0xc ? 12 : 11; + } + else { /* narrow playfield */ + font_cycles[SCROLL0] = load_cycles[SCROLL0] = 40; + font_cycles[SCROLL1] = load_cycles[SCROLL1] = 20; + load_cycles[SCROLL2] = 16; + } + } + break; + case ANTIC_OFFSET_VSCROL: + ANTIC_VSCROL = byte & 0x0f; + if (vscrol_off) { + lastline = ANTIC_VSCROL; + if (ANTIC_XPOS < VSCOF_C) + need_dl = dctr == lastline; + } + break; + case ANTIC_OFFSET_PMBASE: + ANTIC_PMBASE = byte; + pmbase_d = (byte & 0xfc) << 8; + pmbase_s = pmbase_d & 0xf8ff; + break; + case ANTIC_OFFSET_CHACTL: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_invert(); + } +#endif + invert_mask = byte & 2 ? 0x80 : 0; +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_blank(); + } +#endif + blank_mask = byte & 1 ? 0xe0 : 0x60; + if ((ANTIC_CHACTL ^ byte) & 4) { +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + /* timing for flip is the same as chbase */ + update_scanline_chbase(); + } +#endif + chbase_20 ^= 7; + } + ANTIC_CHACTL = byte; + break; + case ANTIC_OFFSET_CHBASE: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_chbase(); + } +#endif + ANTIC_CHBASE = byte; + chbase_20 = (byte & 0xfe) << 8; + if (ANTIC_CHACTL & 4) + chbase_20 ^= 7; + break; +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + case ANTIC_OFFSET_WSYNC: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + if (ANTIC_xpos <= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] && ANTIC_xpos_limit >= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C]) + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ +/* note that if ANTIC_WSYNC_C is a stolen cycle, then ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C+1]-1 corresponds +to the last cpu cycle < ANTIC_WSYNC_C. Then the cpu will see this cycle if WSYNC +is not delayed, since it really occurred one cycle after the STA WSYNC. But if +WSYNC is "delayed" then ANTIC_xpos is the next cpu cycle after ANTIC_WSYNC_C (which was stolen +), so it is one greater than the above value. EG if ANTIC_WSYNC_C=10 and is stolen +(and let us say cycle 9,11 are also stolen, and 8,12 are not), then in the first +case we have ANTIC_cpu2antic_ptr[ANTIC_WSYNC_C+1]-1 = 8 and in the 2nd =12 */ + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1] - 1; + } + else { + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1]; + } + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ + ANTIC_delayed_wsync = 0; + } + else { + ANTIC_delayed_wsync = 1; + } + } + } + else { + ANTIC_delayed_wsync = 0; +#endif /* NEW_CYCLE_EXACT */ + if (ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C) + ANTIC_xpos = ANTIC_WSYNC_C; + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + } +#ifdef NEW_CYCLE_EXACT + } +#endif /* NEW_CYCLE_EXACT */ + break; + case ANTIC_OFFSET_NMIEN: + ANTIC_NMIEN = byte; + break; + case ANTIC_OFFSET_NMIRES: + ANTIC_NMIST = 0x1f; + break; + default: + break; + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void ANTIC_StateSave(void) +{ + StateSav_SaveUBYTE(&ANTIC_DMACTL, 1); + StateSav_SaveUBYTE(&ANTIC_CHACTL, 1); + StateSav_SaveUBYTE(&ANTIC_HSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_VSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_PMBASE, 1); + StateSav_SaveUBYTE(&ANTIC_CHBASE, 1); + StateSav_SaveUBYTE(&ANTIC_NMIEN, 1); + StateSav_SaveUBYTE(&ANTIC_NMIST, 1); + StateSav_SaveUBYTE(&IR, 1); + StateSav_SaveUBYTE(&anticmode, 1); + StateSav_SaveUBYTE(&dctr, 1); + StateSav_SaveUBYTE(&lastline, 1); + StateSav_SaveUBYTE(&need_dl, 1); + StateSav_SaveUBYTE(&vscrol_off, 1); + + StateSav_SaveUWORD(&ANTIC_dlist, 1); + StateSav_SaveUWORD(&screenaddr, 1); + + StateSav_SaveINT(&ANTIC_xpos, 1); + StateSav_SaveINT(&ANTIC_xpos_limit, 1); + StateSav_SaveINT(&ANTIC_ypos, 1); +} + +void ANTIC_StateRead(void) +{ + StateSav_ReadUBYTE(&ANTIC_DMACTL, 1); + StateSav_ReadUBYTE(&ANTIC_CHACTL, 1); + StateSav_ReadUBYTE(&ANTIC_HSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_VSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_PMBASE, 1); + StateSav_ReadUBYTE(&ANTIC_CHBASE, 1); + StateSav_ReadUBYTE(&ANTIC_NMIEN, 1); + StateSav_ReadUBYTE(&ANTIC_NMIST, 1); + StateSav_ReadUBYTE(&IR, 1); + StateSav_ReadUBYTE(&anticmode, 1); + StateSav_ReadUBYTE(&dctr, 1); + StateSav_ReadUBYTE(&lastline, 1); + StateSav_ReadUBYTE(&need_dl, 1); + StateSav_ReadUBYTE(&vscrol_off, 1); + + StateSav_ReadUWORD(&ANTIC_dlist, 1); + StateSav_ReadUWORD(&screenaddr, 1); + + StateSav_ReadINT(&ANTIC_xpos, 1); + StateSav_ReadINT(&ANTIC_xpos_limit, 1); + StateSav_ReadINT(&ANTIC_ypos, 1); + + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, ANTIC_DMACTL); + ANTIC_PutByte(ANTIC_OFFSET_CHACTL, ANTIC_CHACTL); + ANTIC_PutByte(ANTIC_OFFSET_PMBASE, ANTIC_PMBASE); + ANTIC_PutByte(ANTIC_OFFSET_CHBASE, ANTIC_CHBASE); +} + +#endif /* BASIC */ diff --git a/MCUME_esp32/esp5200/main/antic.h b/MCUME_esp32/esp5200/main/antic.h new file mode 100644 index 0000000..0a89e66 --- /dev/null +++ b/MCUME_esp32/esp5200/main/antic.h @@ -0,0 +1,136 @@ +#ifndef ANTIC_H_ +#define ANTIC_H_ + +#include "atari.h" +/* + * Offset to registers in custom relative to start of antic memory addresses. + */ + +#define ANTIC_OFFSET_DMACTL 0x00 +#define ANTIC_OFFSET_CHACTL 0x01 +#define ANTIC_OFFSET_DLISTL 0x02 +#define ANTIC_OFFSET_DLISTH 0x03 +#define ANTIC_OFFSET_HSCROL 0x04 +#define ANTIC_OFFSET_VSCROL 0x05 +#define ANTIC_OFFSET_PMBASE 0x07 +#define ANTIC_OFFSET_CHBASE 0x09 +#define ANTIC_OFFSET_WSYNC 0x0a +#define ANTIC_OFFSET_VCOUNT 0x0b +#define ANTIC_OFFSET_PENH 0x0c +#define ANTIC_OFFSET_PENV 0x0d +#define ANTIC_OFFSET_NMIEN 0x0e +#define ANTIC_OFFSET_NMIRES 0x0f +#define ANTIC_OFFSET_NMIST 0x0f + +extern UBYTE ANTIC_CHACTL; +extern UBYTE ANTIC_CHBASE; +extern UWORD ANTIC_dlist; +extern UBYTE ANTIC_DMACTL; +extern UBYTE ANTIC_HSCROL; +extern UBYTE ANTIC_NMIEN; +extern UBYTE ANTIC_NMIST; +extern UBYTE ANTIC_PMBASE; +extern UBYTE ANTIC_VSCROL; + +extern int ANTIC_break_ypos; +extern int ANTIC_ypos; +extern int ANTIC_wsync_halt; + +/* Current clock cycle in a scanline. + Normally 0 <= ANTIC_xpos && ANTIC_xpos < ANTIC_LINE_C, but in some cases ANTIC_xpos >= ANTIC_LINE_C, + which means that we are already in line (ypos + 1). */ +extern int ANTIC_xpos; + +/* ANTIC_xpos limit for the currently running 6502 emulation. */ +extern int ANTIC_xpos_limit; + +/* Main clock value at the beginning of the current scanline. */ +extern unsigned int ANTIC_screenline_cpu_clock; + +/* Current main clock value. */ +#define ANTIC_CPU_CLOCK (ANTIC_screenline_cpu_clock + ANTIC_XPOS) + +#define ANTIC_NMIST_C 6 +#define ANTIC_NMI_C 12 + +/* Number of cycles per scanline. */ +#define ANTIC_LINE_C 114 + +/* STA WSYNC resumes here. */ +#define ANTIC_WSYNC_C 106 + +/* Number of memory refresh cycles per scanline. + In the first scanline of a font mode there are actually less than ANTIC_DMAR + memory refresh cycles. */ +#define ANTIC_DMAR 9 + +extern int ANTIC_artif_mode; +extern int ANTIC_artif_new; + +extern UBYTE ANTIC_PENH_input; +extern UBYTE ANTIC_PENV_input; + +int ANTIC_Initialise(void); +void ANTIC_Reset(void); +void ANTIC_Frame(int draw_display); +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects); +void ANTIC_PutByte(UWORD addr, UBYTE byte); + +UBYTE ANTIC_GetDLByte(UWORD *paddr); +UWORD ANTIC_GetDLWord(UWORD *paddr); + +/* always call ANTIC_UpdateArtifacting after changing ANTIC_artif_mode */ +void ANTIC_UpdateArtifacting(void); + +/* Video memory access */ +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size); +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val); + +/* GTIA calls it on a write to PRIOR */ +void ANTIC_SetPrior(UBYTE prior); + +/* Saved states */ +void ANTIC_StateSave(void); +void ANTIC_StateRead(void); + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in memory[0x4000..0x7fff], + then NULL. */ +extern const UBYTE *ANTIC_xe_ptr; + +/* PM graphics for GTIA */ +extern int ANTIC_player_dma_enabled; +extern int ANTIC_missile_dma_enabled; +extern int ANTIC_player_gra_enabled; +extern int ANTIC_missile_gra_enabled; +extern int ANTIC_player_flickering; +extern int ANTIC_missile_flickering; + +/* ANTIC colour lookup tables, used by GTIA */ +extern UWORD ANTIC_cl[128]; +extern ULONG ANTIC_lookup_gtia9[16]; +extern ULONG ANTIC_lookup_gtia11[16]; +extern UWORD ANTIC_hires_lookup_l[128]; + +#ifdef NEW_CYCLE_EXACT +#define ANTIC_NOT_DRAWING -999 +#define ANTIC_DRAWING_SCREEN (ANTIC_cur_screen_pos!=ANTIC_NOT_DRAWING) +extern int ANTIC_delayed_wsync; +extern int ANTIC_cur_screen_pos; +extern const int *ANTIC_cpu2antic_ptr; +extern const int *ANTIC_antic2cpu_ptr; +void ANTIC_UpdateScanline(void); +void ANTIC_UpdateScanlinePrior(UBYTE byte); + +#define ANTIC_XPOS ( ANTIC_DRAWING_SCREEN ? ANTIC_cpu2antic_ptr[ANTIC_xpos] : ANTIC_xpos ) +#else +#define ANTIC_XPOS ANTIC_xpos +#endif /* NEW_CYCLE_EXACT */ + +#ifndef NO_SIMPLE_PAL_BLENDING +/* Set to 1 to enable simplified emulation of PAL blending, that uses only + the standard 8-bit palette. */ +extern int ANTIC_pal_blending; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +#endif /* ANTIC_H_ */ diff --git a/MCUME_esp32/esp5200/main/atari.h b/MCUME_esp32/esp5200/main/atari.h new file mode 100644 index 0000000..9f8d506 --- /dev/null +++ b/MCUME_esp32/esp5200/main/atari.h @@ -0,0 +1,66 @@ +#ifndef __ATARI__ +#define __ATARI__ + +// define globals +#define MEMORY_SIZE 0xC000 //0x10000 + +#define ATARI_WIDTH 384 +#define ATARI_HEIGHT 240 +#define TV_PAL 312 +#define TV_NTSC 262 + +//#define DIRTYRECT 1 +//#define WORDS_UNALIGNED_OK 1 +//#define ALTERNATE_LOOP_COUNTERS 1 +//#define NEW_CYCLE_EXACT 1 +//#define USE_CURSES 1 +//#define WORDS_BIGENDIAN 1 +//#define SYNCHRONIZED_SOUND 1 +#define CLIP_SOUND 1 +//#define STEREO_SOUND 1 +#define POKEYSND_SIGNED_SAMPLES 1 +#define PAGED_MEM 1 +#define SOUND 1 +#define NO_SIMPLE_PAL_BLENDING 1 +#define ANALOGJOY 1 +#define POKEYSND_BIT16 1 +#define POKEYSND_SAMRATE 22050 //44100 + + +#define max_ypos tv_mode + +extern int tv_mode; + + + +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +//data types +#define UBYTE unsigned char +#define UWORD unsigned short +#define ULONG unsigned int + +#define SBYTE signed char +#define SWORD signed short +#define SLONG signed int + +#define int8 char +#define int16 short +#define int32 int + +#define uint8 unsigned int8 +#define uint16 unsigned int16 +#define uint32 unsigned int32 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#endif + + + +#endif diff --git a/MCUME_esp32/esp5200/main/atari5200.c b/MCUME_esp32/esp5200/main/atari5200.c new file mode 100644 index 0000000..8dd700d --- /dev/null +++ b/MCUME_esp32/esp5200/main/atari5200.c @@ -0,0 +1,602 @@ +#include "atari5200.h" +#include +#include "memory.h" +#include "cpu.h" +#include "atari.h" +#include "pokey.h" +#include "rom.h" +#include "antic.h" +#include "gtia.h" +#include "colours.h" +#include "emuapi.h" +#if HAS_SND +#include "pokeysnd.h" +#endif + + +// Controllers +typedef struct +{ + // All values are 1 or 0, or perhaps not... + int left; + int right; + int up; + int down; + + unsigned char analog_h; + unsigned char analog_v; + + int trig; + int side_button; + + // These may be set to 1. The core handles clearing them. + // [BREAK] [ # ] [ 0 ] [ * ] + // [RESET] [ 9 ] [ 8 ] [ 7 ] + // [PAUSE] [ 6 ] [ 5 ] [ 4 ] + // [START] [ 3 ] [ 2 ] [ 1 ] + int key[16]; + int last_key_still_pressed; + + int lastRead; +} CONTROLLER; + + +#define POT_MAX 223 +#define POT_CENTRE 115 +#define POT_LEFT (POT_CENTRE-100) //15 +#define POT_RIGHT (POT_CENTRE+100) // 210 + +#define CONSOL 0xC01F + +#define NUM_16K_ROM_MAPS 200 + +typedef struct +{ // 80 bytes + char crc[8]; + int mapping; + char description[68]; +} Map16k_t; + + +// global variables +int tv_mode = TV_PAL; +//unsigned char mem[MEMORY_SIZE]; +unsigned char * memory=NULL; //mem; + +// local variables +static char logmsg[64]; + +static CONTROLLER cont1, cont2; +static int pot_max_left = POT_LEFT; +static int pot_max_right = POT_RIGHT; + +static int framesdrawn=0; + +/* MEMORY MAP INDEX (0 is invalid) +* 0-3FFF RAM (read/write) 1 +* 4000-BFFF ROM (ro) 2 +* C000-C0FF GTIA regs 3 +* D300-D3FF Serial??? 7 +* D400-D4FF ANTIC regs 4 +* E000 I/O expansion 5 +* E800-E8FF POKEY regs 6 +* EB00-EBFF also POKEY regs??? 6 +* F800-FFFF ROM (BIOS)(ro) 2 +*/ + + +// memory CPU read (load) handler +uint8 Atari_GetByte(uint16 addr) +{ + if (addr < 0xC000) { // MAPPER_RAM or MAPPER_ROM + return(memory[addr]); + } + else if (addr < 0xC100) { // MAPPER_GTIA + return GTIA_GetByte(addr,1); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + return ANTIC_GetByte(addr,1); + } + else if ( (addr >= 0xE800) && (addr < 0xE900) ) { // MAPPER_POKEY + return POKEY_GetByte(addr,1); + } + else if ( (addr >= 0xEB00) && (addr < 0xEC00) ) { // MAPPER_POKEY mirror + return POKEY_GetByte(addr,1); + } + else if (addr >= 0xF800) { // MAPPER_ROM (bios) + return(BIOSData[addr-0xF800]); + } + + //case MAPPER_IOEXP: // I/O exp read + // return IOEXPread(addr); + + return 0xff; +} + +// memory CPU write (store) handler +void Atari_PutByte(uint16 addr, uint8 byte) +{ + if (addr < 0x4000) { // MAPPER_RAM + memory[addr] = byte; + } + else if (addr < 0xC000) { // MAPPER_ROM + } + else if (addr < 0xC100) { // MAPPER_GTIA + GTIA_PutByte(addr, byte); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + ANTIC_PutByte(addr, byte); + } + else if ( (addr >= 0xE800) && (addr < 0xE900) ) { // MAPPER_POKEY + POKEY_PutByte(addr, byte); + } + else if ( (addr >= 0xEB00) && (addr < 0xEC00) ) { // MAPPER_POKEY mirror + POKEY_PutByte(addr, byte); + } + //else if (addr >= 0xF800) { // MAPPER_ROM (bios) + // POKEY_PutByte(addr, byte); + //} + + //case MAPPER_IOEXP: // I/O exp write + // IOEXPwrite(addr, byte); +} + + +// check keyboard and set kbcode on VBI +void INPUT_Scanline(void) +{ + // NB: 5200 will do a keyboard IRQ every 32 scanlines if a key is held down + CONTROLLER *which = NULL; + UBYTE consol=GTIA_GetByte(CONSOL,1); + switch (consol & 0x03) { + case 0: which = &cont1; break; + case 1: which = &cont2; break; + // 3 and 4 in the future + default: return; + } + + // "loose bit" (bit 5 of KBCODE) - fluctuates 0 or 1 randomly + uint8 loose_bit = (framesdrawn & 0x1) << 5; + + // Default to "key not pressed" + POKEY_KBCODE = loose_bit | 0x1F; + which->last_key_still_pressed = 0; + + for (int8 i = 0; i < 16; i++) + { + if (which->key[i]) + { + //emu_printi(i); +/* 2016-06-18 - commented out (reset in HostDoEvents()) + which->key[i] = 0; + which->last_key_still_pressed = 0; + + // Don't respond to the same thing twice in a row... + if (i == which->lastRead) + { + which->last_key_still_pressed = 1; // flag key still held + return; + } +*/ + if (i == which->lastRead) + which->last_key_still_pressed = 1; // flag key still held + + which->lastRead = i; + + // Write in the change + POKEY_KBCODE = (i << 1) | loose_bit | 0x1; + + // set KEY interrupt bit (bit 6) to 0 (key int req "on") + POKEY_IRQST &= 0xbf; + + // check irqen and do interrupt if bit 6 set + if(POKEY_IRQEN & 0x40) + { + CPU_GenerateIRQ(); + } + + return; + } + } + + // 2016-06-18 - Reset kbd irq if no key pressed + // NO - "POKEY_IRQST is latched, only reset by write to IRQEN" + //POKEY_IRQST |= 0x40; + + // If no keys are down at all, we can write anything again + which->lastRead = 0xFF; + + // This should in theory work but in practise breaks some games? + //POKEY_KBCODE = which->lastRead = 0xFF; +} + +uint8 INPUT_handle_trigger(uint16 POKEYreg) +{ + CONTROLLER *which; + switch (POKEYreg) + { + case 0: case 1: which = &cont1; if (which->trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1; break; + case 2: case 3: which = &cont2; if (which->trig) GTIA_TRIG[1]=0; else GTIA_TRIG[1]=1; break; + // 3 and 4 in the future + default: return 0x80; + } + + + // Top to bottom + if (POKEYreg & 1) + { +#if ANALOGJOY + return which->analog_v;; +#else + if (which->up) return pot_max_left; + else if (which->down) return pot_max_right; + else return POT_CENTRE; +#endif + } + else + { +#if ANALOGJOY + return which->analog_h;; +#else + if (which->left) return pot_max_left; + else if (which->right) return pot_max_right; + else return POT_CENTRE; +#endif + } +} + +uint8 INPUT_handle_skstat(uint16 POKEYreg) +{ + uint8 skstatreg = 0x0C; + UBYTE consol=GTIA_GetByte(CONSOL,1); + //emu_printi(consol&3); + switch(consol & 0x03) { + case 0 : // controller 1 + if(cont1.side_button) skstatreg &= 0x07; + if(cont1.last_key_still_pressed) skstatreg &= 0x0B; + break; + case 1 : // controller 2 + if(cont2.side_button) skstatreg &= 0x07; + if(cont2.last_key_still_pressed) skstatreg &= 0x0B; + break; + } + return skstatreg; +} + + + + + +static void load_CART(char * cartname) +{ + int i, mapnum, flen; + char sig[40]; + unsigned long crc32; + + flen = emu_FileSize(cartname); + + emu_FileOpen(cartname); + // set POT left and right values to default + pot_max_left = POT_LEFT; + pot_max_right = POT_RIGHT; + + // load cart into memory image + // Note: 5200 cartridge mapping has only a few + // variations, so this mess of code below + // works, and it avoids having a cartridge + // config file. + switch (flen) + { + case 32768: // 32k cart + for (i = 0; i < 32768; i++) memory[0x4000 + i] = emu_FileGetc(); + // get crc32 from 32k data + crc32 = calc_crc32(memory + 0x4000, 32768); + sprintf(logmsg, "32 Trying to load '%s', crc32=0x%08X\n", cartname, (unsigned int)crc32); + emu_printf(logmsg); + break; + case 16384: // 16k cart + // here we hack and load it twice (mapped like that?) + for (i = 0; i < 16384; i++) memory[0x4000 + i] = memory[0x8000 + i] = emu_FileGetc(); + + // get crc32 from 16k data + crc32 = calc_crc32(memory + 0x4000, 16384); + sprintf(logmsg, "16 Trying to load '%s', crc32=0x%08X\n", cartname, (unsigned int)crc32); + emu_printf(logmsg); + + // get cart "signature" + strncpy(sig, &memory[0xBFE8], 20); + sig[20] = 0; + //printf("Cart signature is %s\n", sig); + + // check for Moon Patrol + if (strcmp("@@@@@moon@patrol@@@@", sig) == 0) { + //printf("Mapping for Moon Patrol (16+16)\n"); + // already loaded correctly + break; + } + + // check for SW-Arcade + if (strncmp("asfilmLt", sig, 8) == 0) { + //printf("Mapping for SW-Arcade (16+16)\n"); + // already loaded correctly + break; + } + + // check for Super Pacman using start vector + if ((memory[0xBFFF] == 0x92) && (memory[0xBFFE] == 0x55)) { + //printf("Mapping for Super Pacman (16+16)\n"); + // already loaded correctly + break; + } + + // check for other carts with reset vec 8000h + // (eg: Space Shuttle) + if (memory[0xBFFF] == 0x80) { + //printf("Mapping for reset vec = 8000h (16+16)\n"); + // already loaded corectly + break; + } + + // Tempest + if (memory[0xBFFF] == 0x81) { + //printf("Mapping for reset vec = 81xxh eg: Tempest (16+16)\n"); + // already loaded corectly + break; + } + + + // PAM Diagnostics v2.0 + // NB: this seems to prevent the emu from crashing when running + // pamdiag2.bin + if ((memory[0xBFFF] == 0x9F) && (memory[0xBFFE] == 0xD0)) { + //printf("Mapping for reset vector = $9FD0 (PAM DIAG 2.0)\n"); + // move cart up by 0x1000 + break; + } + + + +#ifdef SKIP + // Notes: check for megamania cart + // 8K mirrored at 0x8000 and 0xA000, nothing from 0x4000-0x7FFF + // see if we have a 16k mapping for this cart in jum52.cfg + sprintf(sig, "%08X", crc32); + mapnum = 0; // invalid + + // initialise 16k rom maps + emu_printf("Allocating p16kMaps"); + int num16kMappings = 0; // pointer to 16k rom mappings and number of 16k rom mappings + Map16k_t * p16kMaps = (Map16k_t *)emu_TmpMemory(); //emu_Malloc(sizeof(Map16k_t) * NUM_16K_ROM_MAPS); + if (p16kMaps) memset(p16kMaps, 0, sizeof(Map16k_t) * NUM_16K_ROM_MAPS); + + for (i = 0; i < num16kMappings; i++) { + if (0 == strncmp(sig, p16kMaps[i].crc, 8)) { + mapnum = p16kMaps[i].mapping; + sprintf(logmsg, "Mapping %d found for crc=0x%s !\n", mapnum, sig); + emu_printf(logmsg); + i = num16kMappings; // exit search + } + } + //emu_printf("freeing p16kMaps"); + //emu_Free(p16kMaps); + // if the mapping was 16+16, then break, since we have loaded it 16+16 already + if (1 == mapnum) + break; +#endif + // default to 16k+8k mapping + emu_FileSeek(0); + for(i=0; i<16384; i++) memory[0x6000 + i] = emu_FileGetc(); + for(i=0; i<8192; i++) memory[0xA000 + i] = memory[0x8000 + i]; + break; + case 8192 : // 8k cart + // Load mirrored 4 times + for(i = 0; i < 8192; i++) + { + uint8 c = emu_FileGetc(); + memory[0x4000 + i] = c; + memory[0x6000 + i] = c; + memory[0x8000 + i] = c; + memory[0xA000 + i] = c; + } + // get crc32 from 8k data + crc32 = calc_crc32(memory + 0x4000, 8192); + sprintf(logmsg, "8k cart load '%s', crc32=0x%08X\n", cartname, (unsigned int)crc32); + emu_printf(logmsg); + break; + default: // oops! + // these rom dumps are strange, because some carts are 8K, yet + // all the dumps are either 16K or 32K! + sprintf(logmsg, "Cartridge ROM size not 16K or 32K. Unable to load."); + emu_printf(logmsg); + return -1; + break; + } + + // check for Pengo + if (strncmp("pengo", memory + 0xBFEF, 8) == 0) { + emu_printf("Pengo detected! Switching controller to Pengo mode."); + pot_max_left = 70; + pot_max_right = 170; + } + + // check for Centipede + if (strncmp("centipede", memory + 0xBFEF, 8) == 0) { + emu_printf("centipede detected! Switching controller to centipede mode."); + pot_max_left = (POT_CENTRE-10); + pot_max_right = (POT_CENTRE+10); + } + + // is cartridge PAL-compatible? + // (doesn't seem to work!) + //if(memory[0xBFE7] == 0x02) printf("Cart is PAL-compatible!\n"); + //else printf("Cart is *not* PAL-compatible.\n"); + + emu_FileClose(); +} + +static void Initialise(void) +{ + int i; + + emu_printf("Initialising ..."); + + // Set up memory area + memset(memory, 0, MEMORY_SIZE); + + // init controllers + memset(&cont1, 0, sizeof(CONTROLLER)); + memset(&cont2, 0, sizeof(CONTROLLER)); + + pot_max_left = POT_LEFT; + pot_max_right = POT_RIGHT; + cont1.analog_h = POT_CENTRE; + cont1.analog_v = POT_CENTRE; + cont2.analog_h = POT_CENTRE; + cont2.analog_v = POT_CENTRE; +} + +void at5_Init(void) +{ + int i; + + // Palette + for (i = 0; i < PALETTE_SIZE; i++) + { + emu_SetPaletteEntry(R32(colourtable[i]), G32(colourtable[i]), B32(colourtable[i]), i); + } + +#if HAS_SND + emu_sndInit(); + POKEYSND_Init(POKEYSND_FREQ_17_EXACT, POKEYSND_SAMRATE, 1, POKEYSND_BIT16); + POKEYSND_SetVolume(0x40); +#endif + + emu_printf("Allocating RAM"); + if (memory == NULL) memory = emu_Malloc(MEMORY_SIZE); + + Initialise(); +} + +static int prevKey=-1; +static int countKey = 0; + +void at5_Step(void) +{ + //emu_printf("step"); + + int k,j; + j=emu_ReadKeys(); + k=emu_GetPad(); + + CONTROLLER * which; + + if (j & 0x8000) which=&cont2; + else which=&cont1; + + // Start + if (j & MASK_KEY_USER1) + which->key[12] = 1; + else + which->key[12] = 0; + + // 1 + if (j & MASK_KEY_USER3) + which->key[15] = 1; + else + which->key[15] = 0; + + // 2 + //if (j & MASK_KEY_USER4) + // which->key[14] = 1; + //else + // which->key[14] = 0; + + if (countKey) { + which->key[prevKey] = 1; + //emu_printi(cont1.key[prevKey]); + countKey--; + } + else { + if (prevKey>0) { + //emu_printf("resetting"); + which->key[prevKey] = 0; + prevKey=-1; + //emu_printi(cont1.key[prevKey]); + } + if (k) { + prevKey = k-1; + which->key[prevKey] = 1; + //emu_printi(cont1.key[prevKey]); + countKey = 4; + } + } + + // Joystick side button, trigger and directions + if (j & MASK_JOY2_BTN) + which->trig = 1; + else + which->trig = 0; + if (j & MASK_KEY_USER2) + which->side_button = 1; + else + which->side_button = 0; + if (j & MASK_JOY2_DOWN) + which->down = 1; + else + which->down = 0; + if (j & MASK_JOY2_UP) + which->up = 1; + else + which->up = 0; + if (j & MASK_JOY2_RIGHT) + which->left = 1; + else + which->left = 0; + if (j & MASK_JOY2_LEFT) + which->right = 1; + else + which->right = 0; + + which->analog_h = emu_ReadAnalogJoyX(0,230); + which->analog_v = emu_ReadAnalogJoyY(0,230); + + GTIA_Frame(); + ANTIC_Frame(1); + emu_DrawVsync(); + POKEY_Frame(); + //int i; + //for (i=0xC000; i< 0x10000; i++) + // if (memory[i] !=0) emu_printf("bug"); + + framesdrawn = framesdrawn +1; +} + + + +void at5_Start(char * cartname) +{ + int i; + + load_CART(cartname); + + emu_printf("antic"); + ANTIC_Initialise(); + emu_printf("gtia"); + GTIA_Initialise(); + emu_printf("pokey"); + POKEY_Initialise(); + GTIA_TRIG[0]=1; + GTIA_TRIG[1]=1; + GTIA_TRIG[2]=1; + GTIA_TRIG[3]=1; + emu_printf("6502 reset"); + CPU_Reset(); + + emu_printf("init done"); +} + + + + + + diff --git a/MCUME_esp32/esp5200/main/atari5200.h b/MCUME_esp32/esp5200/main/atari5200.h new file mode 100644 index 0000000..45088b1 --- /dev/null +++ b/MCUME_esp32/esp5200/main/atari5200.h @@ -0,0 +1,4 @@ +extern void at5_Init(void); +extern void at5_Step(void); +extern void at5_Start(char * filename); + diff --git a/MCUME_esp32/esp5200/main/bmpjoy.h b/MCUME_esp32/esp5200/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/esp5200/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/esp5200/main/bmpvbar.h b/MCUME_esp32/esp5200/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/esp5200/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/esp5200/main/colours.h b/MCUME_esp32/esp5200/main/colours.h new file mode 100644 index 0000000..a31db53 --- /dev/null +++ b/MCUME_esp32/esp5200/main/colours.h @@ -0,0 +1,68 @@ +const unsigned int colourtable[256] = +{ + 0x0, 0x1c1c1c, 0x393939, 0x595959, + 0x797979, 0x929292, 0xababab, 0xbcbcbc, + 0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec, + 0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff, + 0x391701, 0x5e2304, 0x833008, 0xa54716, + 0xc85f24, 0xe37820, 0xff911d, 0xffab1d, + 0xffc51d, 0xffce34, 0xffd84c, 0xffe651, + 0xfff456, 0xfff977, 0xffff98, 0xffff98, + 0x451904, 0x721e11, 0x9f241e, 0xb33a20, + 0xc85122, 0xe36920, 0xff811e, 0xff8c25, + 0xff982c, 0xffae38, 0xffc545, 0xffc559, + 0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1, + 0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119, + 0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161, + 0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e, + 0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce, + 0x50568, 0x3b136d, 0x712272, 0x8b2a8c, + 0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd, + 0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd, + 0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff, + 0x280479, 0x400984, 0x590f90, 0x70249d, + 0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed, + 0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff, + 0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff, + 0x35088a, 0x420aad, 0x500cd0, 0x6428d0, + 0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec, + 0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff, + 0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff, + 0x51e81, 0x626a5, 0x82fca, 0x263dd4, + 0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff, + 0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff, + 0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff, + 0xc048b, 0x2218a0, 0x382db5, 0x483ec7, + 0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff, + 0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff, + 0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff, + 0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac, + 0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec, + 0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff, + 0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff, + 0x2f4302, 0x395202, 0x446103, 0x417a12, + 0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55, + 0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d, + 0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6, + 0xa4108, 0xd540a, 0x10680d, 0x137d0f, + 0x169212, 0x19a514, 0x1cb917, 0x1ec919, + 0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d, + 0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a, + 0x4410b, 0x5530e, 0x66611, 0x77714, + 0x88817, 0x99b1a, 0xbaf1d, 0x48c41f, + 0x86d922, 0x8fe924, 0x99f927, 0xa8fc41, + 0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81, + 0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e, + 0x4f7420, 0x598324, 0x649228, 0x82a12e, + 0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945, + 0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53, + 0x263001, 0x243803, 0x234005, 0x51541b, + 0x806931, 0x978135, 0xaf993a, 0xc2a73e, + 0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836, + 0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d, + 0x401a02, 0x581f05, 0x702408, 0x8d3a13, + 0xab511f, 0xb56427, 0xbf7730, 0xd0853a, + 0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c, + 0xffc160, 0xffc671, 0xffcb83, 0xffcb83, +}; + diff --git a/MCUME_esp32/esp5200/main/component.mk b/MCUME_esp32/esp5200/main/component.mk new file mode 100644 index 0000000..6d6cf84 --- /dev/null +++ b/MCUME_esp32/esp5200/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/esp5200/main/cpu.c b/MCUME_esp32/esp5200/main/cpu.c new file mode 100644 index 0000000..cc73b28 --- /dev/null +++ b/MCUME_esp32/esp5200/main/cpu.c @@ -0,0 +1,2444 @@ +/* + * cpu.c - 6502 CPU emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2005 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* + Configuration symbols + ===================== + + Define CPU65C02 if you don't want 6502 JMP() bug emulation. + Define CYCLES_PER_OPCODE to update ANTIC_xpos in each opcode's emulation. + Define MONITOR_BREAK if you want code breakpoints and execution history. + Define MONITOR_BREAKPOINTS if you want user-defined breakpoints. + Define MONITOR_PROFILE if you want 6502 opcode profiling. + Define MONITOR_TRACE if you want the code to be disassembled while it is executed. + Define NO_GOTO if you compile with GCC, but want switch() rather than goto *. + Define NO_V_FLAG_VARIABLE to don't use local (static) variable V for the V flag. + Define PC_PTR to emulate 6502 Program Counter using UBYTE *. + Define PREFETCH_CODE to always fetch 2 bytes after the opcode. + Define WRAP_64K to correctly emulate instructions that wrap at 64K. + Define WRAP_ZPAGE to prevent incorrect access to the address 0x0100 in zeropage + indirect mode. + + + Limitations & Known bugs + ======================== + + There is no emulation of the bug in the BRK instruction executed simultaneously + with another interrupt. + + The 6502 emulation ignores memory attributes for instruction fetch. + This is because the instruction must come from either RAM or ROM. + A program that executes instructions from within hardware addresses will fail + since there is never any usable code there. + + The 6502 emulation also ignores memory attributes for accesses to page 0 and page 1. + */ + + +#ifdef SKIP +#include "config.h" +#include +#include /* exit() */ + +#include "cpu.h" +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "antic.h" +#include "atari.h" +#include "esc.h" +#include "memory.h" +#include "monitor.h" +#ifndef BASIC +#include "statesav.h" +#ifndef __PLUS +#include "ui.h" +#endif +#endif /* BASIC */ +#endif /* ASAP */ +#else + +#include +#include /* exit() */ +#include "cpu.h" +#include "antic.h" +#include "memory.h" + +#define ESC_Run(x) + +#endif + + +/* For Atari Basic loader */ +void (*CPU_rts_handler)(void) = NULL; + +/* 6502 instruction profiling */ +#ifdef MONITOR_PROFILE +int CPU_instruction_count[256]; +#endif + +/* Execution history */ +#ifdef MONITOR_BREAK +UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +unsigned int CPU_remember_PC_curpos = 0; +int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; +UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +unsigned int CPU_remember_jmp_curpos = 0; +#define INC_RET_NESTING MONITOR_ret_nesting++ +#else /* MONITOR_BREAK */ +#define INC_RET_NESTING +#endif /* MONITOR_BREAK */ + +UBYTE CPU_cim_encountered = FALSE; +UBYTE CPU_IRQ; + +#ifdef FALCON_CPUASM + +#if defined(PAGED_MEM) || defined(PAGED_ATTRIB) +#error cpu_m68k.asm cannot work with paged memory/attributes +#endif + +#if defined(MONITOR_BREAKPOINTS) +#error cpu_m68k.asm does not support user-defined breakpoints +#endif + +#if defined(MONITOR_TRACE) +#error cpu_m68k.asm does not support disassembling the code while it is executed +#endif + +#else /* FALCON_CPUASM */ + +/* Windows headers define it */ +#undef ABSOLUTE + +#ifndef __GNUC__ +#define NO_GOTO +#endif + +/* #define CYCLES_PER_OPCODE */ + +/* #define MONITOR_PROFILE */ + +/* #define NO_V_FLAG_VARIABLE */ + +/* If PC_PTR is defined, local PC is "const UBYTE *", otherwise it's UWORD. */ +/* #define PC_PTR */ + +/* If PREFETCH_CODE is defined, 2 bytes after the opcode are always fetched. */ +/* #define PREFETCH_CODE */ + + +/* 6502 stack handling */ +#define PL MEMORY_dGetByte(0x0100 + ++S) +#define PH(x) MEMORY_dPutByte(0x0100 + S--, x) +#define PHW(x) PH((x) >> 8); PH((x) & 0xff) + +/* 6502 code fetching */ +#ifdef PC_PTR +#define GET_PC() (PC - MEMORY_mem) +#define SET_PC(newpc) (PC = MEMORY_mem + (newpc)) +#define PHPC { UWORD tmp = PC - MEMORY_mem; PHW(tmp); } +#define GET_CODE_BYTE() (*PC++) +#define PEEK_CODE_BYTE() (*PC) +#if !defined(WORDS_BIGENDIAN) && defined(WORDS_UNALIGNED_OK) +#define PEEK_CODE_WORD() (*(const UWORD *) PC) +#else +#define PEEK_CODE_WORD() (*PC + (PC[1] << 8)) +#endif +#else /* PC_PTR */ +#define GET_PC() PC +#define SET_PC(newpc) (PC = (newpc)) +#define PHPC PHW(PC) +#define GET_CODE_BYTE() MEMORY_dGetByte(PC++) +#define PEEK_CODE_BYTE() MEMORY_dGetByte(PC) +#define PEEK_CODE_WORD() MEMORY_dGetWord(PC) +#endif /* PC_PTR */ + +/* Cycle-exact Read-Modify-Write instructions. + RMW instructions: ASL, LSR, ROL, ROR, INC, DEC + (+ some undocumented) write to the specified address + *twice*: first the unmodified value, then the modified value. + This can be observed only with some hardware registers. */ +/* XXX: we do this only for GTIA, because NEW_CYCLE_EXACT does not correctly + emulate INC $D400 (and INC $D40A wasn't tested) */ +#ifdef NEW_CYCLE_EXACT +#ifndef PAGED_ATTRIB +#define RMW_GetByte(x, addr) \ + if (MEMORY_attrib[addr] == MEMORY_HARDWARE) { \ + x = MEMORY_HwGetByte(addr, FALSE); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_HwPutByte(addr, x); \ + ANTIC_xpos++; \ + } \ + } else \ + x = MEMORY_dGetByte(addr); +#else /* PAGED_ATTRIB */ +#define RMW_GetByte(x, addr) \ + x = MEMORY_GetByte(addr); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_PutByte(addr, x); \ + ANTIC_xpos++; \ + } +#endif /* PAGED_ATTRIB */ +#else /* NEW_CYCLE_EXACT */ +/* Don't emulate the first write */ +#define RMW_GetByte(x, addr) x = MEMORY_GetByte(addr); +#endif /* NEW_CYCLE_EXACT */ + +/* 6502 registers. */ +UWORD CPU_regPC; +UBYTE CPU_regA; +UBYTE CPU_regX; +UBYTE CPU_regY; +UBYTE CPU_regP; /* Processor Status Byte (Partial) */ +UBYTE CPU_regS; + +/* Transfer 6502 registers between global variables and local variables inside CPU_GO() */ +#define UPDATE_GLOBAL_REGS CPU_regPC = GET_PC(); CPU_regS = S; CPU_regA = A; CPU_regX = X; CPU_regY = Y +#define UPDATE_LOCAL_REGS SET_PC(CPU_regPC); S = CPU_regS; A = CPU_regA; X = CPU_regX; Y = CPU_regY + +/* 6502 flags local to this module */ +static UBYTE N; /* bit7 set => N flag set */ +#ifndef NO_V_FLAG_VARIABLE +static UBYTE V; /* non-zero => V flag set */ +#endif +static UBYTE Z; /* zero => Z flag set */ +static UBYTE C; /* must be 0 or 1 */ +/* B, D, I are always in CPU_regP */ + +void CPU_GetStatus(void) +{ +#ifndef NO_V_FLAG_VARIABLE + CPU_regP = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & 0x3c) + ((Z == 0) ? 0x02 : 0) + C; +#else + CPU_regP = (N & 0x80) + (CPU_regP & 0x7c) + ((Z == 0) ? 0x02 : 0) + C; +#endif +} + +void CPU_PutStatus(void) +{ + N = CPU_regP; +#ifndef NO_V_FLAG_VARIABLE + V = (CPU_regP & 0x40); +#endif + Z = (CPU_regP & 0x02) ^ 0x02; + C = (CPU_regP & 0x01); +} + +/* Addressing modes */ +#ifdef WRAP_ZPAGE +#define zGetWord(x) (MEMORY_dGetByte(x) + (MEMORY_dGetByte((UBYTE) ((x) + 1)) << 8)) +#else +#define zGetWord(x) MEMORY_dGetWord(x) +#endif +#ifdef PREFETCH_CODE +#if defined(WORDS_BIGENDIAN) || !defined(WORDS_UNALIGNED_OK) +#warning PREFETCH_CODE is efficient only on little-endian machines with WORDS_UNALIGNED_OK +#endif +#define OP_BYTE ((UBYTE) addr) +#define OP_WORD addr +#define IMMEDIATE (PC++, (UBYTE) addr) +#define ABSOLUTE PC += 2 +#define ZPAGE PC++; addr &= 0xff +#define ABSOLUTE_X addr += X; PC += 2 +#define ABSOLUTE_Y addr += Y; PC += 2 +#define INDIRECT_X PC++; addr = (UBYTE) (addr + X); addr = zGetWord(addr) +#define INDIRECT_Y PC++; addr &= 0xff; addr = zGetWord(addr) + Y +#define ZPAGE_X PC++; addr = (UBYTE) (addr + X) +#define ZPAGE_Y PC++; addr = (UBYTE) (addr + Y) +#else /* PREFETCH_CODE */ +#define OP_BYTE PEEK_CODE_BYTE() +#define OP_WORD PEEK_CODE_WORD() +#define IMMEDIATE GET_CODE_BYTE() +#define ABSOLUTE addr = PEEK_CODE_WORD(); PC += 2 +#define ZPAGE addr = GET_CODE_BYTE() +#define ABSOLUTE_X addr = PEEK_CODE_WORD() + X; PC += 2 +#define ABSOLUTE_Y addr = PEEK_CODE_WORD() + Y; PC += 2 +#define INDIRECT_X addr = (UBYTE) (GET_CODE_BYTE() + X); addr = zGetWord(addr) +#define INDIRECT_Y addr = GET_CODE_BYTE(); addr = zGetWord(addr) + Y +#define ZPAGE_X addr = (UBYTE) (GET_CODE_BYTE() + X) +#define ZPAGE_Y addr = (UBYTE) (GET_CODE_BYTE() + Y) +#endif /* PREFETCH_CODE */ + +/* Instructions */ +#define AND(t_data) Z = N = A &= t_data +#define CMP(t_data) data = t_data; Z = N = A - data; C = (A >= data) +#define CPX(t_data) data = t_data; Z = N = X - data; C = (X >= data) +#define CPY(t_data) data = t_data; Z = N = Y - data; C = (Y >= data) +#define EOR(t_data) Z = N = A ^= t_data +#define LDA(t_data) Z = N = A = t_data +#define LDX(t_data) Z = N = X = t_data +#define LDY(t_data) Z = N = Y = t_data +#define ORA(t_data) Z = N = A |= t_data +#ifndef NO_V_FLAG_VARIABLE +#define PHP(x) data = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x2c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x3c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; V = (data & 0x40); Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x0c) + 0x30 +#else /* NO_V_FLAG_VARIABLE */ +#define PHP(x) data = (N & 0x80) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x6c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x7c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x4c) + 0x30 +#endif /* NO_V_FLAG_VARIABLE */ +/* 1 or 2 extra cycles for conditional jumps */ +#if 0 +/* old, less efficient version */ +#define BRANCH(cond) \ + if (cond) { \ + SWORD sdata = (SBYTE) GET_CODE_BYTE(); \ + if ((sdata + (UBYTE) GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + PC += sdata; \ + DONE \ + } \ + PC++; \ + DONE +#else +#define BRANCH(cond) \ + if (cond) { \ + addr = (UWORD) (SBYTE) IMMEDIATE; \ + addr += GET_PC(); \ + if ((addr ^ GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + SET_PC(addr); \ + DONE \ + } \ + PC++; \ + DONE +#endif + +/* 1 extra cycle for X (or Y) index overflow */ +#define NCYCLES_X if ((UBYTE) addr < X) ANTIC_xpos++ +#define NCYCLES_Y if ((UBYTE) addr < Y) ANTIC_xpos++ + +/* Triggers a Non-Maskable Interrupt */ +void CPU_NMI(void) +{ + UBYTE S = CPU_regS; + UBYTE data; + + PHW(CPU_regPC); + PHPB0; + CPU_SetI; + CPU_regPC = MEMORY_dGetWordAligned(0xfffa); + CPU_regS = S; + ANTIC_xpos += 7; /* handling an interrupt by 6502 takes 7 cycles */ + INC_RET_NESTING; +} + +/* Check pending IRQ, helps in (not only) Lucasfilm games */ +#define CPUCHECKIRQ \ + if (CPU_IRQ && !(CPU_regP & CPU_I_FLAG) && ANTIC_xpos < ANTIC_xpos_limit) { \ + PHPC; \ + PHPB0; \ + CPU_SetI; \ + SET_PC(MEMORY_dGetWordAligned(0xfffe)); \ + ANTIC_xpos += 7; \ + INC_RET_NESTING; \ + } + +/* Enter monitor */ +#ifdef __PLUS +#define ENTER_MONITOR Atari800_Exit(TRUE) +#else +#ifdef SKIP +#define ENTER_MONITOR if (!Atari800_Exit(TRUE)) exit(0) +#else +#define ENTER_MONITOR exit(0) +#endif +#endif +#define DO_BREAK \ + UPDATE_GLOBAL_REGS; \ + CPU_GetStatus(); \ + ENTER_MONITOR; \ + CPU_PutStatus(); \ + UPDATE_LOCAL_REGS; + + +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ +static const int cycles[256] = +{ + 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, /* 0x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 1x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, /* 2x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 3x */ + + 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, /* 4x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 5x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, /* 6x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 7x */ + + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* 8x */ + 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, /* 9x */ + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* Ax */ + 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, /* Bx */ + + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Cx */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* Dx */ + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Ex */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7 /* Fx */ +}; + +/* 6502 emulation routine */ +#ifndef NO_GOTO +__extension__ /* suppress -ansi -pedantic warnings */ +#endif +void CPU_GO(int limit) +{ +#ifdef NO_GOTO +#define OPCODE_ALIAS(code) case 0x##code: +#define DONE break; +#else +#define OPCODE_ALIAS(code) opcode_##code: +#define DONE goto next; + static const void *opcode[256] = + { + &&opcode_00, &&opcode_01, &&opcode_02, &&opcode_03, + &&opcode_04, &&opcode_05, &&opcode_06, &&opcode_07, + &&opcode_08, &&opcode_09, &&opcode_0a, &&opcode_0b, + &&opcode_0c, &&opcode_0d, &&opcode_0e, &&opcode_0f, + + &&opcode_10, &&opcode_11, &&opcode_12, &&opcode_13, + &&opcode_14, &&opcode_15, &&opcode_16, &&opcode_17, + &&opcode_18, &&opcode_19, &&opcode_1a, &&opcode_1b, + &&opcode_1c, &&opcode_1d, &&opcode_1e, &&opcode_1f, + + &&opcode_20, &&opcode_21, &&opcode_22, &&opcode_23, + &&opcode_24, &&opcode_25, &&opcode_26, &&opcode_27, + &&opcode_28, &&opcode_29, &&opcode_2a, &&opcode_2b, + &&opcode_2c, &&opcode_2d, &&opcode_2e, &&opcode_2f, + + &&opcode_30, &&opcode_31, &&opcode_32, &&opcode_33, + &&opcode_34, &&opcode_35, &&opcode_36, &&opcode_37, + &&opcode_38, &&opcode_39, &&opcode_3a, &&opcode_3b, + &&opcode_3c, &&opcode_3d, &&opcode_3e, &&opcode_3f, + + &&opcode_40, &&opcode_41, &&opcode_42, &&opcode_43, + &&opcode_44, &&opcode_45, &&opcode_46, &&opcode_47, + &&opcode_48, &&opcode_49, &&opcode_4a, &&opcode_4b, + &&opcode_4c, &&opcode_4d, &&opcode_4e, &&opcode_4f, + + &&opcode_50, &&opcode_51, &&opcode_52, &&opcode_53, + &&opcode_54, &&opcode_55, &&opcode_56, &&opcode_57, + &&opcode_58, &&opcode_59, &&opcode_5a, &&opcode_5b, + &&opcode_5c, &&opcode_5d, &&opcode_5e, &&opcode_5f, + + &&opcode_60, &&opcode_61, &&opcode_62, &&opcode_63, + &&opcode_64, &&opcode_65, &&opcode_66, &&opcode_67, + &&opcode_68, &&opcode_69, &&opcode_6a, &&opcode_6b, + &&opcode_6c, &&opcode_6d, &&opcode_6e, &&opcode_6f, + + &&opcode_70, &&opcode_71, &&opcode_72, &&opcode_73, + &&opcode_74, &&opcode_75, &&opcode_76, &&opcode_77, + &&opcode_78, &&opcode_79, &&opcode_7a, &&opcode_7b, + &&opcode_7c, &&opcode_7d, &&opcode_7e, &&opcode_7f, + + &&opcode_80, &&opcode_81, &&opcode_82, &&opcode_83, + &&opcode_84, &&opcode_85, &&opcode_86, &&opcode_87, + &&opcode_88, &&opcode_89, &&opcode_8a, &&opcode_8b, + &&opcode_8c, &&opcode_8d, &&opcode_8e, &&opcode_8f, + + &&opcode_90, &&opcode_91, &&opcode_92, &&opcode_93, + &&opcode_94, &&opcode_95, &&opcode_96, &&opcode_97, + &&opcode_98, &&opcode_99, &&opcode_9a, &&opcode_9b, + &&opcode_9c, &&opcode_9d, &&opcode_9e, &&opcode_9f, + + &&opcode_a0, &&opcode_a1, &&opcode_a2, &&opcode_a3, + &&opcode_a4, &&opcode_a5, &&opcode_a6, &&opcode_a7, + &&opcode_a8, &&opcode_a9, &&opcode_aa, &&opcode_ab, + &&opcode_ac, &&opcode_ad, &&opcode_ae, &&opcode_af, + + &&opcode_b0, &&opcode_b1, &&opcode_b2, &&opcode_b3, + &&opcode_b4, &&opcode_b5, &&opcode_b6, &&opcode_b7, + &&opcode_b8, &&opcode_b9, &&opcode_ba, &&opcode_bb, + &&opcode_bc, &&opcode_bd, &&opcode_be, &&opcode_bf, + + &&opcode_c0, &&opcode_c1, &&opcode_c2, &&opcode_c3, + &&opcode_c4, &&opcode_c5, &&opcode_c6, &&opcode_c7, + &&opcode_c8, &&opcode_c9, &&opcode_ca, &&opcode_cb, + &&opcode_cc, &&opcode_cd, &&opcode_ce, &&opcode_cf, + + &&opcode_d0, &&opcode_d1, &&opcode_d2, &&opcode_d3, + &&opcode_d4, &&opcode_d5, &&opcode_d6, &&opcode_d7, + &&opcode_d8, &&opcode_d9, &&opcode_da, &&opcode_db, + &&opcode_dc, &&opcode_dd, &&opcode_de, &&opcode_df, + + &&opcode_e0, &&opcode_e1, &&opcode_e2, &&opcode_e3, + &&opcode_e4, &&opcode_e5, &&opcode_e6, &&opcode_e7, + &&opcode_e8, &&opcode_e9, &&opcode_ea, &&opcode_eb, + &&opcode_ec, &&opcode_ed, &&opcode_ee, &&opcode_ef, + + &&opcode_f0, &&opcode_f1, &&opcode_f2, &&opcode_f3, + &&opcode_f4, &&opcode_f5, &&opcode_f6, &&opcode_f7, + &&opcode_f8, &&opcode_f9, &&opcode_fa, &&opcode_fb, + &&opcode_fc, &&opcode_fd, &&opcode_fe, &&opcode_ff, + }; +#endif /* NO_GOTO */ + +#ifdef CYCLES_PER_OPCODE +#define OPCODE(code) OPCODE_ALIAS(code) ANTIC_xpos += cycles[0x##code]; +#else +#define OPCODE(code) OPCODE_ALIAS(code) +#endif + +#ifdef PC_PTR + const UBYTE *PC; +#else + UWORD PC; +#endif + UBYTE A; + UBYTE X; + UBYTE Y; + UBYTE S; + + UWORD addr; + UBYTE data; +#define insn data + +/* + This used to be in the main loop but has been removed to improve + execution speed. It does not seem to have any adverse effect on + the emulation for two reasons: + + 1. NMI's will can only be raised in antic.c - there is + no way an NMI can be generated whilst in this routine. + + 2. The timing of the IRQs are not that critical. */ + + if (ANTIC_wsync_halt) { + +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { +/* if ANTIC_WSYNC_C is a stolen cycle, ANTIC_antic2cpu_ptr will convert that to the nearest + cpu cycle before that cycle. The CPU will see this cycle, if WSYNC is not + delayed. (Actually this cycle is the first cycle of the instruction after + STA WSYNC, which was really executed one cycle after STA WSYNC because + of an internal antic delay ). ANTIC_delayed_wsync is added to this cycle to form + the limit in the case that WSYNC is not early (does not allow this extra cycle) */ + + if (limit < ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync) + return; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync; + } + else { + if (limit < (ANTIC_WSYNC_C + ANTIC_delayed_wsync)) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + } + ANTIC_delayed_wsync = 0; + +#else /* NEW_CYCLE_EXACT */ + + if (limit < ANTIC_WSYNC_C) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_wsync_halt = 0; + } + ANTIC_xpos_limit = limit; /* needed for WSYNC store inside ANTIC */ + + UPDATE_LOCAL_REGS; + + CPUCHECKIRQ; + + while (ANTIC_xpos < ANTIC_xpos_limit) { +#ifdef MONITOR_PROFILE + int old_xpos = ANTIC_xpos; + UWORD old_PC = GET_PC(); +#endif + + +#ifdef MONITOR_BREAKPOINTS + breakpoint_return: +#endif + +#ifdef PC_PTR + /* must handle 64k wrapping */ + if (PC >= MEMORY_mem + 0xfffe) { + if (PC >= MEMORY_mem + 0x10000) + PC -= 0x10000; + else { + /* the opcode is before 0x10000, but the operand is past */ +#ifdef WORDS_UNALIGNED_OK + *(UWORD *) (MEMORY_mem + 0x10000) = *(UWORD *) MEMORY_mem; +#else + MEMORY_mem[0x10000] = MEMORY_mem[0]; + MEMORY_mem[0x10001] = MEMORY_mem[1]; +#endif /* WORDS_UNALIGNED_OK */ + } + } +#endif /* PC_PTR */ + +#ifdef MONITOR_TRACE + if (MONITOR_trace_file != NULL) { + MONITOR_ShowState(MONITOR_trace_file, GET_PC(), A, X, Y, S, + (N & 0x80) ? 'N' : '-', +#ifndef NO_V_FLAG_VARIABLE + V ? 'V' : '-', +#else + (CPU_regP & CPU_V_FLAG) ? 'V' : '-', +#endif + (Z == 0) ? 'Z' : '-', + (C != 0) ? 'C' : '-'); + } +#endif + +#ifdef MONITOR_BREAK + CPU_remember_PC[CPU_remember_PC_curpos] = GET_PC(); + CPU_remember_op[CPU_remember_PC_curpos][0] = MEMORY_dGetByte(GET_PC()); + CPU_remember_op[CPU_remember_PC_curpos][1] = MEMORY_dGetByte(GET_PC()+1); + CPU_remember_op[CPU_remember_PC_curpos][2] = MEMORY_dGetByte(GET_PC()+2); +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_cpu2antic_ptr[ANTIC_xpos] + (ANTIC_ypos << 8); + else +#endif + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_xpos + (ANTIC_ypos << 8); + CPU_remember_PC_curpos = (CPU_remember_PC_curpos + 1) % CPU_REMEMBER_PC_STEPS; + + if (MONITOR_break_addr == GET_PC() || ANTIC_break_ypos == ANTIC_ypos) { + DO_BREAK; + } +#endif /* MONITOR_BREAK */ + +#if defined(WRAP_64K) && !defined(PC_PTR) + MEMORY_mem[0x10000] = MEMORY_mem[0]; +#endif + + insn = GET_CODE_BYTE(); + +#ifdef MONITOR_BREAKPOINTS +#ifdef MONITOR_BREAK + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled && !MONITOR_break_step) +#else + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled) +#endif + { + UBYTE optype = MONITOR_optype6502[insn]; + int i; + switch (optype >> 4) { + case 1: + addr = PEEK_CODE_WORD(); + break; + case 2: + addr = PEEK_CODE_BYTE(); + break; + case 3: + addr = PEEK_CODE_WORD() + X; + break; + case 4: + addr = PEEK_CODE_WORD() + Y; + break; + case 5: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + addr = zGetWord(addr); + break; + case 6: + addr = PEEK_CODE_BYTE(); + addr = zGetWord(addr) + Y; + break; + case 7: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + break; + case 8: + addr = (UBYTE) (PEEK_CODE_BYTE() + Y); + break; + /* XXX: case 13 */ + default: + addr = 0; + break; + } + for (i = 0; i < MONITOR_breakpoint_table_size; i++) { + int cond; + int value, m_addr; + if (!MONITOR_breakpoint_table[i].enabled) + continue; /* skip */ + cond = MONITOR_breakpoint_table[i].condition; + if (cond == MONITOR_BREAKPOINT_OR) + break; /* fire */ + value = MONITOR_breakpoint_table[i].value; + m_addr = MONITOR_breakpoint_table[i].m_addr; + if (cond == MONITOR_BREAKPOINT_FLAG_CLEAR) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) == 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V == 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z != 0) + continue; + break; + case CPU_C_FLAG: + if (C == 0) + continue; + break; + default: + if ((CPU_regP & value) == 0) + continue; + break; + } + } + else if (cond == MONITOR_BREAKPOINT_FLAG_SET) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) != 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V != 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z == 0) + continue; + break; + case CPU_C_FLAG: + if (C != 0) + continue; + break; + default: + if ((CPU_regP & value) != 0) + continue; + break; + } + } + else { + int val; + switch (cond >> 3) { + case MONITOR_BREAKPOINT_PC >> 3: + val = GET_PC() - 1; + break; + case MONITOR_BREAKPOINT_A >> 3: + val = A; + break; + case MONITOR_BREAKPOINT_X >> 3: + val = X; + break; + case MONITOR_BREAKPOINT_Y >> 3: + val = Y; + break; + case MONITOR_BREAKPOINT_S >> 3: + val = S; + break; + case MONITOR_BREAKPOINT_READ >> 3: + if ((optype & 4) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_WRITE >> 3: + if ((optype & 8) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_ACCESS >> 3: + if ((optype & 12) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_MEMORY >> 3: + val = MEMORY_SafeGetByte(m_addr); + break; + default: + /* shouldn't happen */ + continue; + } + if ((cond & MONITOR_BREAKPOINT_LESS) != 0 && val < value) + continue; + if ((cond & MONITOR_BREAKPOINT_EQUAL) != 0 && val == value) + continue; + if ((cond & MONITOR_BREAKPOINT_GREATER) != 0 && val > value) + continue; + cond_failed: + ; + } + /* a condition failed */ + /* quickly skip AND-connected conditions */ + do { + if (++i >= MONITOR_breakpoint_table_size) + goto no_breakpoint; + } while (MONITOR_breakpoint_table[i].condition != MONITOR_BREAKPOINT_OR || !MONITOR_breakpoint_table[i].enabled); + } + /* fire breakpoint */ + PC--; + DO_BREAK; + goto breakpoint_return; + no_breakpoint: + ; + } +#endif /* MONITOR_BREAKPOINTS */ + +#ifndef CYCLES_PER_OPCODE + ANTIC_xpos += cycles[insn]; +#endif + +#ifdef MONITOR_PROFILE + CPU_instruction_count[insn]++; + MONITOR_coverage[old_PC = PC - 1].count++; + MONITOR_coverage_insns++; +#endif + +#ifdef PREFETCH_CODE + addr = PEEK_CODE_WORD(); +#endif + +#ifdef NO_GOTO + switch (insn) { +#else + goto *opcode[insn]; +#endif + + OPCODE(00) /* BRK */ +#ifdef MONITOR_BREAK + if (MONITOR_break_brk) { + DO_BREAK; + } + else +#endif + { + PC++; + PHPC; + PHPB1; + CPU_SetI; + SET_PC(MEMORY_dGetWordAligned(0xfffe)); + INC_RET_NESTING; + } + DONE + + OPCODE(01) /* ORA (ab,x) */ + INDIRECT_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(03) /* ASO (ab,x) [unofficial - ASL then ORA with Acc] */ + INDIRECT_X; + + aso: + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_PutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE_ALIAS(04) /* NOP ab [unofficial - skip byte] */ + OPCODE_ALIAS(44) + OPCODE(64) + PC++; + DONE + + OPCODE_ALIAS(14) /* NOP ab,x [unofficial - skip byte] */ + OPCODE_ALIAS(34) + OPCODE_ALIAS(54) + OPCODE_ALIAS(74) + OPCODE_ALIAS(d4) + OPCODE(f4) + PC++; + DONE + + OPCODE_ALIAS(80) /* NOP #ab [unofficial - skip byte] */ + OPCODE_ALIAS(82) + OPCODE_ALIAS(89) + OPCODE_ALIAS(c2) + OPCODE(e2) + PC++; + DONE + + OPCODE(05) /* ORA ab */ + ZPAGE; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(06) /* ASL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(07) /* ASO ab [unofficial - ASL then ORA with Acc] */ + ZPAGE; + + aso_zpage: + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_dPutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE(08) /* PHP */ + PHPB1; + DONE + + OPCODE(09) /* ORA #ab */ + ORA(IMMEDIATE); + DONE + + OPCODE(0a) /* ASL */ + C = (A & 0x80) ? 1 : 0; + Z = N = A <<= 1; + DONE + + OPCODE_ALIAS(0b) /* ANC #ab [unofficial - AND then copy N to C (Fox) */ + OPCODE(2b) + AND(IMMEDIATE); + C = N >= 0x80; + DONE + + OPCODE(0c) /* NOP abcd [unofficial - skip word] */ + PC += 2; + DONE + + OPCODE(0d) /* ORA abcd */ + ABSOLUTE; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(0e) /* ASL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(0f) /* ASO abcd [unofficial - ASL then ORA with Acc] */ + ABSOLUTE; + goto aso; + + OPCODE(10) /* BPL */ + BRANCH(!(N & 0x80)) + + OPCODE(11) /* ORA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(13) /* ASO (ab),y [unofficial - ASL then ORA with Acc] */ + INDIRECT_Y; + goto aso; + + OPCODE(15) /* ORA ab,x */ + ZPAGE_X; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(16) /* ASL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(17) /* ASO ab,x [unofficial - ASL then ORA with Acc] */ + ZPAGE_X; + goto aso_zpage; + + OPCODE(18) /* CLC */ + C = 0; + DONE + + OPCODE(19) /* ORA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1b) /* ASO abcd,y [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_Y; + goto aso; + + OPCODE_ALIAS(1c) /* NOP abcd,x [unofficial - skip word] */ + OPCODE_ALIAS(3c) + OPCODE_ALIAS(5c) + OPCODE_ALIAS(7c) + OPCODE_ALIAS(dc) + OPCODE(fc) + if (OP_BYTE + X >= 0x100) + ANTIC_xpos++; + PC += 2; + DONE + + OPCODE(1d) /* ORA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1e) /* ASL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(1f) /* ASO abcd,x [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_X; + goto aso; + + OPCODE(20) /* JSR abcd */ + { + UWORD retaddr = GET_PC() + 1; +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; + MONITOR_ret_nesting++; +#endif + PHW(retaddr); + } + SET_PC(OP_WORD); + DONE + + OPCODE(21) /* AND (ab,x) */ + INDIRECT_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(23) /* RLA (ab,x) [unofficial - ROL Mem, then AND with A] */ + INDIRECT_X; + + rla: + RMW_GetByte(data, addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_PutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(24) /* BIT ab */ + ZPAGE; + N = MEMORY_dGetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(25) /* AND ab */ + ZPAGE; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(26) /* ROL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(27) /* RLA ab [unofficial - ROL Mem, then AND with A] */ + ZPAGE; + + rla_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_dPutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(28) /* PLP */ + PLP; + CPUCHECKIRQ; + DONE + + OPCODE(29) /* AND #ab */ + AND(IMMEDIATE); + DONE + + OPCODE(2a) /* ROL */ + Z = N = (A << 1) + C; + C = (A & 0x80) ? 1 : 0; + A = Z; + DONE + + OPCODE(2c) /* BIT abcd */ + ABSOLUTE; + N = MEMORY_GetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(2d) /* AND abcd */ + ABSOLUTE; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(2e) /* ROL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(2f) /* RLA abcd [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE; + goto rla; + + OPCODE(30) /* BMI */ + BRANCH(N & 0x80) + + OPCODE(31) /* AND (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(33) /* RLA (ab),y [unofficial - ROL Mem, then AND with A] */ + INDIRECT_Y; + goto rla; + + OPCODE(35) /* AND ab,x */ + ZPAGE_X; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(36) /* ROL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(37) /* RLA ab,x [unofficial - ROL Mem, then AND with A] */ + ZPAGE_X; + goto rla_zpage; + + OPCODE(38) /* SEC */ + C = 1; + DONE + + OPCODE(39) /* AND abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3b) /* RLA abcd,y [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_Y; + goto rla; + + OPCODE(3d) /* AND abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3e) /* ROL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(3f) /* RLA abcd,x [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_X; + goto rla; + + OPCODE(40) /* RTI */ + PLP; + data = PL; + SET_PC((PL << 8) + data); + CPUCHECKIRQ; +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(41) /* EOR (ab,x) */ + INDIRECT_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(43) /* LSE (ab,x) [unofficial - LSR then EOR result with A] */ + INDIRECT_X; + + lse: + RMW_GetByte(data, addr); + C = data & 1; + data >>= 1; + MEMORY_PutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(45) /* EOR ab */ + ZPAGE; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(46) /* LSR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(47) /* LSE ab [unofficial - LSR then EOR result with A] */ + ZPAGE; + + lse_zpage: + data = MEMORY_dGetByte(addr); + C = data & 1; + data >>= 1; + MEMORY_dPutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(48) /* PHA */ + PH(A); + DONE + + OPCODE(49) /* EOR #ab */ + EOR(IMMEDIATE); + DONE + + OPCODE(4a) /* LSR */ + C = A & 1; + Z = N = A >>= 1; + DONE + + OPCODE(4b) /* ALR #ab [unofficial - Acc AND Data, LSR result] */ + data = A & IMMEDIATE; + C = data & 1; + Z = N = A = (data >> 1); + DONE + + OPCODE(4c) /* JMP abcd */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + SET_PC(OP_WORD); + DONE + + OPCODE(4d) /* EOR abcd */ + ABSOLUTE; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(4e) /* LSR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(4f) /* LSE abcd [unofficial - LSR then EOR result with A] */ + ABSOLUTE; + goto lse; + + OPCODE(50) /* BVC */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(!V) +#else + BRANCH(!(CPU_regP & 0x40)) +#endif + + OPCODE(51) /* EOR (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(53) /* LSE (ab),y [unofficial - LSR then EOR result with A] */ + INDIRECT_Y; + goto lse; + + OPCODE(55) /* EOR ab,x */ + ZPAGE_X; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(56) /* LSR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(57) /* LSE ab,x [unofficial - LSR then EOR result with A] */ + ZPAGE_X; + goto lse_zpage; + + OPCODE(58) /* CLI */ + CPU_ClrI; + CPUCHECKIRQ; + DONE + + OPCODE(59) /* EOR abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5b) /* LSE abcd,y [unofficial - LSR then EOR result with A] */ + ABSOLUTE_Y; + goto lse; + + OPCODE(5d) /* EOR abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5e) /* LSR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(5f) /* LSE abcd,x [unofficial - LSR then EOR result with A] */ + ABSOLUTE_X; + goto lse; + + OPCODE(60) /* RTS */ + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + if (CPU_rts_handler != NULL) { + CPU_rts_handler(); + CPU_rts_handler = NULL; + } + DONE + + OPCODE(61) /* ADC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(63) /* RRA (ab,x) [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_X; + + rra: + RMW_GetByte(data, addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_PutByte(addr, data); + goto adc; + + OPCODE(65) /* ADC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(66) /* ROR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(67) /* RRA ab [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE; + + rra_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_dPutByte(addr, data); + goto adc; + + OPCODE(68) /* PLA */ + Z = N = A = PL; + DONE + + OPCODE(69) /* ADC #ab */ + data = IMMEDIATE; + goto adc; + + OPCODE(6a) /* ROR */ + Z = N = (C << 7) + (A >> 1); + C = A & 1; + A = Z; + DONE + + OPCODE(6b) /* ARR #ab [unofficial - Acc AND Data, ROR result] */ + /* It does some 'BCD fixup' if D flag is set */ + /* MPC 05/24/00 */ + data = A & IMMEDIATE; + if (CPU_regP & CPU_D_FLAG) { + UBYTE temp = (data >> 1) + (C << 7); + Z = N = temp; +#ifndef NO_V_FLAG_VARIABLE + V = ((temp ^ data) & 0x40); +#else + CPU_regP = (CPU_regP & 0xbf) + ((temp ^ data) & 0x40); +#endif + if ((data & 0x0F) + (data & 0x01) > 5) + temp = (temp & 0xF0) + ((temp + 0x6) & 0x0F); + if (data + (data & 0x10) >= 0x60) { + temp += 0x60; + C = 1; + } + else + C = 0; + A = (UBYTE) temp; + } + else { + Z = N = A = (data >> 1) + (C << 7); + C = data >> 7; +#ifndef NO_V_FLAG_VARIABLE + V = C ^ ((A >> 5) & 1); +#else + CPU_regP = (CPU_regP & 0xbf) + ((A ^ data) & 0x40); +#endif + } + DONE + + OPCODE(6c) /* JMP (abcd) */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + ABSOLUTE; +#ifdef CPU65C02 + /* XXX: if ((UBYTE) addr == 0xff) ANTIC_xpos++; */ + SET_PC(MEMORY_dGetWord(addr)); +#else + /* original 6502 had a bug in JMP (addr) when addr crossed page boundary */ + if ((UBYTE) addr == 0xff) + SET_PC((MEMORY_dGetByte(addr - 0xff) << 8) + MEMORY_dGetByte(addr)); + else + SET_PC(MEMORY_dGetWord(addr)); +#endif + DONE + + OPCODE(6d) /* ADC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(6e) /* ROR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(6f) /* RRA abcd [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE; + goto rra; + + OPCODE(70) /* BVS */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(V) +#else + BRANCH(CPU_regP & 0x40) +#endif + + OPCODE(71) /* ADC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(73) /* RRA (ab),y [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_Y; + goto rra; + + OPCODE(75) /* ADC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(76) /* ROR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(77) /* RRA ab,x [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE_X; + goto rra_zpage; + + OPCODE(78) /* SEI */ + CPU_SetI; + DONE + + OPCODE(79) /* ADC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7b) /* RRA abcd,y [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_Y; + goto rra; + + OPCODE(7d) /* ADC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7e) /* ROR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(7f) /* RRA abcd,x [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_X; + goto rra; + + OPCODE(81) /* STA (ab,x) */ + INDIRECT_X; + MEMORY_PutByte(addr, A); + DONE + + /* AXS doesn't change flags and SAX is better name for it (Fox) */ + OPCODE(83) /* SAX (ab,x) [unofficial - Store result A AND X */ + INDIRECT_X; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(84) /* STY ab */ + ZPAGE; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(85) /* STA ab */ + ZPAGE; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(86) /* STX ab */ + ZPAGE; + MEMORY_dPutByte(addr, X); + DONE + + OPCODE(87) /* SAX ab [unofficial - Store result A AND X] */ + ZPAGE; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(88) /* DEY */ + Z = N = --Y; + DONE + + OPCODE(8a) /* TXA */ + Z = N = A = X; + DONE + + OPCODE(8b) /* ANE #ab [unofficial - A AND X AND (Mem OR $EF) to Acc] (Fox) */ + data = IMMEDIATE; + Z = N = A & X & data; + A &= X & (data | 0xef); + DONE + + OPCODE(8c) /* STY abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, Y); + DONE + + OPCODE(8d) /* STA abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(8e) /* STX abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(8f) /* SAX abcd [unofficial - Store result A AND X] */ + ABSOLUTE; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(90) /* BCC */ + BRANCH(!C) + + OPCODE(91) /* STA (ab),y */ + INDIRECT_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(93) /* SHA (ab),y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + /* It seems previous memory value is important - also in 9f */ + ZPAGE; + addr = zGetWord(addr); + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(94) /* STY ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(95) /* STA ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(96) /* STX ab,y */ + ZPAGE_Y; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(97) /* SAX ab,y [unofficial - Store result A AND X] */ + ZPAGE_Y; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(98) /* TYA */ + Z = N = A = Y; + DONE + + OPCODE(99) /* STA abcd,y */ + ABSOLUTE_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9a) /* TXS */ + S = X; + DONE + + OPCODE(9b) /* SHS abcd,y [unofficial, UNSTABLE] (Fox) */ + /* Transfer A AND X to S, then store S AND (H+1)] */ + /* S seems to be stable, only memory values vary */ + ABSOLUTE; + S = A & X; + data = S & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9c) /* SHY abcd,x [unofficial - Store Y and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = Y & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + X > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + X) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + X, data); + } + DONE + + OPCODE(9d) /* STA abcd,x */ + ABSOLUTE_X; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9e) /* SHX abcd,y [unofficial - Store X and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = X & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9f) /* SHA abcd,y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + ABSOLUTE; + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(a0) /* LDY #ab */ + LDY(IMMEDIATE); + DONE + + OPCODE(a1) /* LDA (ab,x) */ + INDIRECT_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(a2) /* LDX #ab */ + LDX(IMMEDIATE); + DONE + + OPCODE(a3) /* LAX (ab,x) [unofficial] */ + INDIRECT_X; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a4) /* LDY ab */ + ZPAGE; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a5) /* LDA ab */ + ZPAGE; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a6) /* LDX ab */ + ZPAGE; + LDX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a7) /* LAX ab [unofficial] */ + ZPAGE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a8) /* TAY */ + Z = N = Y = A; + DONE + + OPCODE(a9) /* LDA #ab */ + LDA(IMMEDIATE); + DONE + + OPCODE(aa) /* TAX */ + Z = N = X = A; + DONE + + OPCODE(ab) /* ANX #ab [unofficial - AND #ab, then TAX] */ + Z = N = X = A &= IMMEDIATE; + DONE + + OPCODE(ac) /* LDY abcd */ + ABSOLUTE; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(ad) /* LDA abcd */ + ABSOLUTE; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ae) /* LDX abcd */ + ABSOLUTE; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(af) /* LAX abcd [unofficial] */ + ABSOLUTE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b0) /* BCS */ + BRANCH(C) + + OPCODE(b1) /* LDA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(b3) /* LAX (ab),y [unofficial] */ + INDIRECT_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b4) /* LDY ab,x */ + ZPAGE_X; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b5) /* LDA ab,x */ + ZPAGE_X; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b6) /* LDX ab,y */ + ZPAGE_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(b7) /* LAX ab,y [unofficial] */ + ZPAGE_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b8) /* CLV */ +#ifndef NO_V_FLAG_VARIABLE + V = 0; +#else + CPU_ClrV; +#endif + DONE + + OPCODE(b9) /* LDA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ba) /* TSX */ + Z = N = X = S; + DONE + +/* AXA [unofficial - original decode by R.Sterba and R.Petruzela 15.1.1998 :-)] + AXA - this is our new imaginative name for instruction with opcode hex BB. + AXA - Store Mem AND #$FD to Acc and X, then set stackpoint to value (Acc - 4) + It's cool! :-) + LAS - this is better name for this :) (Fox) + It simply ANDs stack pointer with Mem, then transfers result to A and X + */ + + OPCODE(bb) /* LAS abcd,y [unofficial - AND S with Mem, transfer to A and X (Fox) */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = A = X = S &= MEMORY_GetByte(addr); + DONE + + OPCODE(bc) /* LDY abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(bd) /* LDA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(be) /* LDX abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(bf) /* LAX abcd,y [unofficial] */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(c0) /* CPY #ab */ + CPY(IMMEDIATE); + DONE + + OPCODE(c1) /* CMP (ab,x) */ + INDIRECT_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(c3) /* DCM (ab,x) [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_X; + + dcm: + RMW_GetByte(data, addr); + data--; + MEMORY_PutByte(addr, data); + CMP(data); + DONE + + OPCODE(c4) /* CPY ab */ + ZPAGE; + CPY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c5) /* CMP ab */ + ZPAGE; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c6) /* DEC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(c7) /* DCM ab [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE; + + dcm_zpage: + data = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, data); + CMP(data); + DONE + + OPCODE(c8) /* INY */ + Z = N = ++Y; + DONE + + OPCODE(c9) /* CMP #ab */ + CMP(IMMEDIATE); + DONE + + OPCODE(ca) /* DEX */ + Z = N = --X; + DONE + + OPCODE(cb) /* SBX #ab [unofficial - store ((A AND X) - Mem) in X] (Fox) */ + X &= A; + data = IMMEDIATE; + C = X >= data; + /* MPC 05/24/00 */ + Z = N = X -= data; + DONE + + OPCODE(cc) /* CPY abcd */ + ABSOLUTE; + CPY(MEMORY_GetByte(addr)); + DONE + + OPCODE(cd) /* CMP abcd */ + ABSOLUTE; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(ce) /* DEC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(cf) /* DCM abcd [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE; + goto dcm; + + OPCODE(d0) /* BNE */ + BRANCH(Z) + + OPCODE(d1) /* CMP (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(d3) /* DCM (ab),y [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_Y; + goto dcm; + + OPCODE(d5) /* CMP ab,x */ + ZPAGE_X; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(d6) /* DEC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(d7) /* DCM ab,x [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE_X; + goto dcm_zpage; + + OPCODE(d8) /* CLD */ + CPU_ClrD; + DONE + + OPCODE(d9) /* CMP abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(db) /* DCM abcd,y [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_Y; + goto dcm; + + OPCODE(dd) /* CMP abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(de) /* DEC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(df) /* DCM abcd,x [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_X; + goto dcm; + + OPCODE(e0) /* CPX #ab */ + CPX(IMMEDIATE); + DONE + + OPCODE(e1) /* SBC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(e3) /* INS (ab,x) [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_X; + + ins: + RMW_GetByte(data, addr); + ++data; + MEMORY_PutByte(addr, data); + goto sbc; + + OPCODE(e4) /* CPX ab */ + ZPAGE; + CPX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(e5) /* SBC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(e6) /* INC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(e7) /* INS ab [unofficial - INC Mem then SBC with Acc] */ + ZPAGE; + + ins_zpage: + data = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, data); + goto sbc; + + OPCODE(e8) /* INX */ + Z = N = ++X; + DONE + + OPCODE_ALIAS(e9) /* SBC #ab */ + OPCODE(eb) /* SBC #ab [unofficial] */ + data = IMMEDIATE; + goto sbc; + + OPCODE_ALIAS(ea) /* NOP */ + OPCODE_ALIAS(1a) /* NOP [unofficial] */ + OPCODE_ALIAS(3a) + OPCODE_ALIAS(5a) + OPCODE_ALIAS(7a) + OPCODE_ALIAS(da) + OPCODE(fa) + DONE + + OPCODE(ec) /* CPX abcd */ + ABSOLUTE; + CPX(MEMORY_GetByte(addr)); + DONE + + OPCODE(ed) /* SBC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(ee) /* INC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ef) /* INS abcd [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE; + goto ins; + + OPCODE(f0) /* BEQ */ + BRANCH(!Z) + + OPCODE(f1) /* SBC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(f3) /* INS (ab),y [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_Y; + goto ins; + + OPCODE(f5) /* SBC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(f6) /* INC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(f7) /* INS ab,x [unofficial - INC Mem then SBC with Acc] */ + ZPAGE_X; + goto ins_zpage; + + OPCODE(f8) /* SED */ + CPU_SetD; + DONE + + OPCODE(f9) /* SBC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fb) /* INS abcd,y [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_Y; + goto ins; + + OPCODE(fd) /* SBC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fe) /* INC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ff) /* INS abcd,x [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_X; + goto ins; + +#ifdef ASAP + + OPCODE_ALIAS(d2) + OPCODE_ALIAS(f2) + +#else + + OPCODE(d2) /* ESCRTS #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(f2) /* ESC #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + /* OPCODE(ff: ESC #ab - opcode FF is now used for INS [unofficial] instruction !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + + OPCODE_ALIAS(02) /* CIM [unofficial - crash intermediate] */ + OPCODE_ALIAS(12) + OPCODE_ALIAS(22) + OPCODE_ALIAS(32) + OPCODE_ALIAS(42) + OPCODE_ALIAS(52) + OPCODE_ALIAS(62) + OPCODE_ALIAS(72) + OPCODE_ALIAS(92) + OPCODE(b2) + +#ifdef ASAP + + ASAP_CIM(); + DONE + +#else + + /* OPCODE(d2) Used for ESCRTS #ab (CIM) */ + /* OPCODE(f2) Used for ESC #ab (CIM) */ + PC--; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + +#ifdef CRASH_MENU + UI_crash_address = GET_PC(); + UI_crash_afterCIM = GET_PC() + 1; + UI_crash_code = insn; + UI_Run(); +#else + CPU_cim_encountered = TRUE; + ENTER_MONITOR; +#endif /* CRASH_MENU */ + + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + +/* ---------------------------------------------- */ +/* ADC and SBC routines */ + + adc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + tmp = A + data + C; + C = tmp > 0xff; + /* C = tmp >> 8; */ +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) + (data & 0x0f) + C; + if (tmp >= 0x0a) + tmp = ((tmp + 0x06) & 0x0f) + 0x10; + tmp += (A & 0xf0) + (data & 0xf0); + + Z = A + data + C; + N = (UBYTE) tmp; +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + + if (tmp >= 0xa0) + tmp += 0x60; + C = tmp > 0xff; + A = (UBYTE) tmp; + } + DONE + + sbc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + /* tmp = A - data - !C; */ + tmp = A - data - 1 + C; + C = tmp < 0x100; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ tmp) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) - (data & 0x0f) - 1 + C; + if (tmp & 0x10) + tmp = ((tmp - 0x06) & 0x0f) - 0x10; + tmp += (A & 0xf0) - (data & 0xf0); + if (tmp & 0x100) + tmp -= 0x60; + + Z = N = A - data - 1 + C; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ Z) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ Z) & 0x80)) + CPU_SetV; +#endif + C = ((unsigned int) (A - data - 1 + C)) <= 0xff; + + A = tmp; + } + DONE + +#ifdef NO_GOTO + } +#else + next: +#endif + +#ifdef MONITOR_PROFILE + { + int cyc = ANTIC_xpos - old_xpos; + MONITOR_coverage[old_PC].cycles += cyc; + MONITOR_coverage_cycles += cyc; + } +#endif + +#ifdef MONITOR_BREAK + if (MONITOR_break_step) { + DO_BREAK; + } +#endif + /* This "continue" does nothing here. + But it is necessary because, if we're not using NO_GOTO nor MONITOR_BREAK, + gcc can complain: "error: label at end of compound statement". */ + continue; + } + + UPDATE_GLOBAL_REGS; +} + +#endif /* FALCON_CPUASM */ + +void CPU_Reset(void) +{ +#ifdef MONITOR_PROFILE + memset(CPU_instruction_count, 0, sizeof(CPU_instruction_count)); +#endif + + CPU_IRQ = 0; + + CPU_regP = 0x34; /* The unused bit is always 1, I flag set! */ + CPU_PutStatus(); /* Make sure flags are all updated */ + CPU_regS = 0xff; + CPU_regPC = MEMORY_dGetWordAligned(0xfffc); +} + +#if !defined(BASIC) && !defined(ASAP) + +void CPU_StateSave(UBYTE SaveVerbose) +{ + StateSav_SaveUBYTE(&CPU_regA, 1); + + CPU_GetStatus(); /* Make sure flags are all updated */ + StateSav_SaveUBYTE(&CPU_regP, 1); + + StateSav_SaveUBYTE(&CPU_regS, 1); + StateSav_SaveUBYTE(&CPU_regX, 1); + StateSav_SaveUBYTE(&CPU_regY, 1); + StateSav_SaveUBYTE(&CPU_IRQ, 1); + + MEMORY_StateSave(SaveVerbose); + + StateSav_SaveUWORD(&CPU_regPC, 1); +} + +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion) +{ + StateSav_ReadUBYTE(&CPU_regA, 1); + + StateSav_ReadUBYTE(&CPU_regP, 1); + CPU_PutStatus(); /* Make sure flags are all updated */ + + StateSav_ReadUBYTE(&CPU_regS, 1); + StateSav_ReadUBYTE(&CPU_regX, 1); + StateSav_ReadUBYTE(&CPU_regY, 1); + StateSav_ReadUBYTE(&CPU_IRQ, 1); + + MEMORY_StateRead(SaveVerbose, StateVersion); + + StateSav_ReadUWORD(&CPU_regPC, 1); +} + +#endif diff --git a/MCUME_esp32/esp5200/main/cpu.h b/MCUME_esp32/esp5200/main/cpu.h new file mode 100644 index 0000000..3ee25e6 --- /dev/null +++ b/MCUME_esp32/esp5200/main/cpu.h @@ -0,0 +1,65 @@ +#ifndef CPU_H_ +#define CPU_H_ + +#include "atari.h" + +#define CPU_N_FLAG 0x80 +#define CPU_V_FLAG 0x40 +#define CPU_B_FLAG 0x10 +#define CPU_D_FLAG 0x08 +#define CPU_I_FLAG 0x04 +#define CPU_Z_FLAG 0x02 +#define CPU_C_FLAG 0x01 + +void CPU_GetStatus(void); +void CPU_PutStatus(void); +void CPU_Reset(void); +void CPU_StateSave(UBYTE SaveVerbose); +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion); +void CPU_NMI(void); +void CPU_GO(int limit); +#define CPU_GenerateIRQ() (CPU_IRQ = 1) + +extern UWORD CPU_regPC; +extern UBYTE CPU_regA; +extern UBYTE CPU_regP; +extern UBYTE CPU_regS; +extern UBYTE CPU_regY; +extern UBYTE CPU_regX; + +#define CPU_SetN CPU_regP |= CPU_N_FLAG +#define CPU_ClrN CPU_regP &= (~CPU_N_FLAG) +#define CPU_SetV CPU_regP |= CPU_V_FLAG +#define CPU_ClrV CPU_regP &= (~CPU_V_FLAG) +#define CPU_SetB CPU_regP |= CPU_B_FLAG +#define CPU_ClrB CPU_regP &= (~CPU_B_FLAG) +#define CPU_SetD CPU_regP |= CPU_D_FLAG +#define CPU_ClrD CPU_regP &= (~CPU_D_FLAG) +#define CPU_SetI CPU_regP |= CPU_I_FLAG +#define CPU_ClrI CPU_regP &= (~CPU_I_FLAG) +#define CPU_SetZ CPU_regP |= CPU_Z_FLAG +#define CPU_ClrZ CPU_regP &= (~CPU_Z_FLAG) +#define CPU_SetC CPU_regP |= CPU_C_FLAG +#define CPU_ClrC CPU_regP &= (~CPU_C_FLAG) + +extern UBYTE CPU_IRQ; + +extern void (*CPU_rts_handler)(void); + +extern UBYTE CPU_cim_encountered; + +#define CPU_REMEMBER_PC_STEPS 64 +extern UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +extern UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +extern unsigned int CPU_remember_PC_curpos; +extern int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; + +#define CPU_REMEMBER_JMP_STEPS 16 +extern UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +extern unsigned int CPU_remember_jmp_curpos; + +#ifdef MONITOR_PROFILE +extern int CPU_instruction_count[256]; +#endif + +#endif /* CPU_H_ */ diff --git a/MCUME_esp32/esp5200/main/crc32.c b/MCUME_esp32/esp5200/main/crc32.c new file mode 100644 index 0000000..d22e223 --- /dev/null +++ b/MCUME_esp32/esp5200/main/crc32.c @@ -0,0 +1,86 @@ +/* CRC32.C -- Calculates 32bit CRC checksum + */ +// modified main() (see crc32.orig) to get calc_crc32() function +// JH 2002 + +#include +#include + +const unsigned long crc32_table[256] = { /* lookup table */ +0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, +0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, +0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, +0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, +0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, +0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, +0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, +0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, +0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, +0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, +0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, +0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, +0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, +0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, +0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, +0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, +0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, +0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, +0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, +0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, +0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, +0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, +0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, +0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, +0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, +0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, +0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, +0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, +0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, +0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, +0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, +0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, +0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, +0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, +0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, +0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, +0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, +0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, +0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, +0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, +0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, +0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, +0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; + +unsigned long calc_crc32(unsigned char *buf, int buflen) +{ + // buf is pointer to input buffer (data to crc) + // buflen is length of input buffer + + unsigned long crc; /* CRC value */ + //size_t j; /* buffer positions*/ + int j; /* buffer positions*/ + int k; /* generic integer */ + +#ifdef DEBUG + printf("32bit Cyclic Redudancy Check\n"); +#endif + + crc = 0xFFFFFFFF; /* preconditioning sets non zero value */ + + /* loop through the buffer and calculate CRC */ + for(j=0; j> 8) & 0x00FFFFFFL) ^ crc32_table[k]; + } + + crc=~crc; /* postconditioning */ + + /* print results */ +#ifdef DEBUG + printf("CRC32 is %08lX\n", crc); +#endif + + return crc; +} + + diff --git a/MCUME_esp32/esp5200/main/emuapi.cpp b/MCUME_esp32/esp5200/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/esp5200/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " Atari5200 Emulator " +#define ROMSDIR "5200" + +#define emu_Init(ROM) {at5_Init(); at5_Start(ROM);} +#define emu_Step(x) {at5_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x1 +#define PALETTE_SIZE 256 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 120 +#define KEYBOARD_Y 6 +#define KEYBOARD_KEY_H 23 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_COL,136, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_ROW,28,28,28, + TAREA_END}; + + // These may be set to 1. The core handles clearing them. + // [BREAK] 0 [ # ] 1 [ 0 ] 2 [ * ] 3 + // [RESET] 4 [ 9 ] 5 [ 8 ] 6 [ 7 ] 7 + // [PAUSE] 8 [ 6 ] 9 [ 5 ] 10 [ 4 ] 11 + // [START] 12 [ 3 ] 13 [ 2 ] 14 [ 1 ] 15 + + +const unsigned short keys[] = { + 12+1,8+1,4+1, + 0, + 15+1,14+1,13+1, + 11+1,10+1,9+1, + 7+1,6+1,9+1, + 3+1,2+1,1+1 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + diff --git a/MCUME_esp32/esp5200/main/font8x8.h b/MCUME_esp32/esp5200/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/esp5200/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/esp5200/main/go.cpp b/MCUME_esp32/esp5200/main/go.cpp new file mode 100644 index 0000000..f93a33b --- /dev/null +++ b/MCUME_esp32/esp5200/main/go.cpp @@ -0,0 +1,102 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "atari5200.h" +} + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/esp5200/main/go.h b/MCUME_esp32/esp5200/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/esp5200/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp5200/main/gtia.c b/MCUME_esp32/esp5200/main/gtia.c new file mode 100644 index 0000000..b5b2022 --- /dev/null +++ b/MCUME_esp32/esp5200/main/gtia.c @@ -0,0 +1,1340 @@ +/* + * gtia.c - GTIA chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2015 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include + +#include "antic.h" +#include "gtia.h" + +/* GTIA Registers ---------------------------------------------------------- */ + +UBYTE GTIA_M0PL; +UBYTE GTIA_M1PL; +UBYTE GTIA_M2PL; +UBYTE GTIA_M3PL; +UBYTE GTIA_P0PL; +UBYTE GTIA_P1PL; +UBYTE GTIA_P2PL; +UBYTE GTIA_P3PL; +UBYTE GTIA_HPOSP0; +UBYTE GTIA_HPOSP1; +UBYTE GTIA_HPOSP2; +UBYTE GTIA_HPOSP3; +UBYTE GTIA_HPOSM0; +UBYTE GTIA_HPOSM1; +UBYTE GTIA_HPOSM2; +UBYTE GTIA_HPOSM3; +UBYTE GTIA_SIZEP0; +UBYTE GTIA_SIZEP1; +UBYTE GTIA_SIZEP2; +UBYTE GTIA_SIZEP3; +UBYTE GTIA_SIZEM; +UBYTE GTIA_GRAFP0; +UBYTE GTIA_GRAFP1; +UBYTE GTIA_GRAFP2; +UBYTE GTIA_GRAFP3; +UBYTE GTIA_GRAFM; +UBYTE GTIA_COLPM0; +UBYTE GTIA_COLPM1; +UBYTE GTIA_COLPM2; +UBYTE GTIA_COLPM3; +UBYTE GTIA_COLPF0; +UBYTE GTIA_COLPF1; +UBYTE GTIA_COLPF2; +UBYTE GTIA_COLPF3; +UBYTE GTIA_COLBK; +UBYTE GTIA_PRIOR; +UBYTE GTIA_VDELAY; +UBYTE GTIA_GRACTL; + +/* Internal GTIA state ----------------------------------------------------- */ + +int GTIA_speaker; +int GTIA_consol_override = 0; +static UBYTE consol; +UBYTE consol_mask; +UBYTE GTIA_TRIG[4]; +UBYTE GTIA_TRIG_latch[4]; + +#if defined(BASIC) || defined(CURSES_BASIC) + +static UBYTE PF0PM = 0; +static UBYTE PF1PM = 0; +static UBYTE PF2PM = 0; +static UBYTE PF3PM = 0; +#define GTIA_collisions_mask_missile_playfield 0 +#define GTIA_collisions_mask_player_playfield 0 +#define GTIA_collisions_mask_missile_player 0 +#define GTIA_collisions_mask_player_player 0 + +#else /* defined(BASIC) || defined(CURSES_BASIC) */ + +void set_prior(UBYTE byte); /* in antic.c */ + +/* Player/Missile stuff ---------------------------------------------------- */ + +/* change to 0x00 to disable collisions */ +UBYTE GTIA_collisions_mask_missile_playfield = 0x0f; +UBYTE GTIA_collisions_mask_player_playfield = 0x0f; +UBYTE GTIA_collisions_mask_missile_player = 0x0f; +UBYTE GTIA_collisions_mask_player_player = 0x0f; + +#ifdef NEW_CYCLE_EXACT +/* temporary collision registers for the current scanline only */ +UBYTE P1PL_T; +UBYTE P2PL_T; +UBYTE P3PL_T; +UBYTE M0PL_T; +UBYTE M1PL_T; +UBYTE M2PL_T; +UBYTE M3PL_T; +/* If partial collisions have been generated during a scanline, this + * is the position of the up-to-date collision point , otherwise it is 0 + */ +int collision_curpos; +/* if hitclr has been written to during a scanline, this is the position + * within pm_scaline at which it was written to, and collisions should + * only be generated from this point on, otherwise it is 0 + */ +int hitclr_pos; +#else +#define P1PL_T GTIA_P1PL +#define P2PL_T GTIA_P2PL +#define P3PL_T GTIA_P3PL +#define M0PL_T GTIA_M0PL +#define M1PL_T GTIA_M1PL +#define M2PL_T GTIA_M2PL +#define M3PL_T GTIA_M3PL +#endif /* NEW_CYCLE_EXACT */ + +static UBYTE *hposp_ptr[4]; +static UBYTE *hposm_ptr[4]; +static ULONG hposp_mask[4]; + +static ULONG grafp_lookup[4][256]; +static ULONG *grafp_ptr[4]; +static int global_sizem[4]; + +static const int PM_Width[4] = {1, 2, 1, 4}; + +/* Meaning of bits in GTIA_pm_scanline: +bit 0 - Player 0 +bit 1 - Player 1 +bit 2 - Player 2 +bit 3 - Player 3 +bit 4 - Missile 0 +bit 5 - Missile 1 +bit 6 - Missile 2 +bit 7 - Missile 3 +*/ + +UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +int GTIA_pm_dirty = TRUE; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) + +/* Colours ----------------------------------------------------------------- */ + +#ifdef USE_COLOUR_TRANSLATION_TABLE +UWORD colour_translation_table[256]; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +static void setup_gtia9_11(void) { + int i; +#ifdef USE_COLOUR_TRANSLATION_TABLE + UWORD temp; + temp = colour_translation_table[GTIA_COLBK & 0xf0]; + ANTIC_lookup_gtia11[0] = ((ULONG) temp << 16) + temp; + for (i = 1; i < 16; i++) { + temp = colour_translation_table[GTIA_COLBK | i]; + ANTIC_lookup_gtia9[i] = ((ULONG) temp << 16) + temp; + temp = colour_translation_table[GTIA_COLBK | (i << 4)]; + ANTIC_lookup_gtia11[i] = ((ULONG) temp << 16) + temp; + } +#else + ULONG count9 = 0; + ULONG count11 = 0; + ANTIC_lookup_gtia11[0] = ANTIC_lookup_gtia9[0] & 0xf0f0f0f0; + for (i = 1; i < 16; i++) { + ANTIC_lookup_gtia9[i] = ANTIC_lookup_gtia9[0] | (count9 += 0x01010101); + ANTIC_lookup_gtia11[i] = ANTIC_lookup_gtia9[0] | (count11 += 0x10101010); + } +#endif +} + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int GTIA_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + int i; + for (i = 0; i < 256; i++) { + int tmp = i + 0x100; + ULONG grafp1 = 0; + ULONG grafp2 = 0; + ULONG grafp4 = 0; + do { + grafp1 <<= 1; + grafp2 <<= 2; + grafp4 <<= 4; + if (tmp & 1) { + grafp1++; + grafp2 += 3; + grafp4 += 15; + } + tmp >>= 1; + } while (tmp != 1); + grafp_lookup[2][i] = grafp_lookup[0][i] = grafp1; + grafp_lookup[1][i] = grafp2; + grafp_lookup[3][i] = grafp4; + } + memset(ANTIC_cl, GTIA_COLOUR_BLACK, sizeof(ANTIC_cl)); + for (i = 0; i < 32; i++) + GTIA_PutByte((UWORD) i, 0); +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +#ifdef NEW_CYCLE_EXACT + +/* generate updated PxPL and MxPL for part of a scanline */ +/* slow, but should be called rarely */ +static void generate_partial_pmpl_colls(int l, int r) +{ + int i; + if (r < 0 || l >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) + return; + if (r >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) { + r = (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0]); + } + if (l < 0) + l = 0; + + for (i = l; i <= r; i++) { + UBYTE p = GTIA_pm_scanline[i]; +/* It is possible that some bits are set in PxPL/MxPL here, which would + * not otherwise be set ever in GTIA_NewPmScanline. This is because the + * player collisions are always generated in order in GTIA_NewPmScanline. + * However this does not cause any problem because we never use those bits + * of PxPL/MxPL in the collision reading code. + */ + GTIA_P1PL |= (p & (1 << 1)) ? p : 0; + GTIA_P2PL |= (p & (1 << 2)) ? p : 0; + GTIA_P3PL |= (p & (1 << 3)) ? p : 0; + GTIA_M0PL |= (p & (0x10 << 0)) ? p : 0; + GTIA_M1PL |= (p & (0x10 << 1)) ? p : 0; + GTIA_M2PL |= (p & (0x10 << 2)) ? p : 0; + GTIA_M3PL |= (p & (0x10 << 3)) ? p : 0; + } + +} + +/* update pm->pl collisions for a partial scanline */ +static void update_partial_pmpl_colls(void) +{ + int l = collision_curpos; + int r = ANTIC_XPOS * 2 - 37; + generate_partial_pmpl_colls(l, r); + collision_curpos = r; +} + +/* update pm-> pl collisions at the end of a scanline */ +void GTIA_UpdatePmplColls(void) +{ + if (hitclr_pos != 0){ + generate_partial_pmpl_colls(hitclr_pos, + sizeof(GTIA_pm_scanline) / sizeof(GTIA_pm_scanline[0]) - 1); +/* If hitclr was written to, then only part of GTIA_pm_scanline should be used + * for collisions */ + + } + else { +/* otherwise the whole of pm_scaline can be used for collisions. This will + * update the collision registers based on the generated collisions for the + * current line */ + GTIA_P1PL |= P1PL_T; + GTIA_P2PL |= P2PL_T; + GTIA_P3PL |= P3PL_T; + GTIA_M0PL |= M0PL_T; + GTIA_M1PL |= M1PL_T; + GTIA_M2PL |= M2PL_T; + GTIA_M3PL |= M3PL_T; + } + collision_curpos = 0; + hitclr_pos = 0; +} + +#else +#define update_partial_pmpl_colls() +#endif /* NEW_CYCLE_EXACT */ + +/* Prepare PMG scanline ---------------------------------------------------- */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +void GTIA_NewPmScanline(void) +{ +#ifdef NEW_CYCLE_EXACT +/* reset temporary pm->pl collisions */ + P1PL_T = P2PL_T = P3PL_T = 0; + M0PL_T = M1PL_T = M2PL_T = M3PL_T = 0; +#endif /* NEW_CYCLE_EXACT */ +/* Clear if necessary */ + if (GTIA_pm_dirty) { + memset(GTIA_pm_scanline, 0, ATARI_WIDTH / 2); + GTIA_pm_dirty = FALSE; + } + +/* Draw Players */ + +#define DO_PLAYER(n) if (GTIA_GRAFP##n) { \ + ULONG grafp = grafp_ptr[n][GTIA_GRAFP##n] & hposp_mask[n]; \ + if (grafp) { \ + UBYTE *ptr = hposp_ptr[n]; \ + GTIA_pm_dirty = TRUE; \ + do { \ + if (grafp & 1) \ + P##n##PL_T |= *ptr |= 1 << n; \ + ptr++; \ + grafp >>= 1; \ + } while (grafp); \ + } \ +} + + /* optimized DO_PLAYER(0): GTIA_pm_scanline is clear and P0PL is unused */ + if (GTIA_GRAFP0) { + ULONG grafp = grafp_ptr[0][GTIA_GRAFP0] & hposp_mask[0]; + if (grafp) { + UBYTE *ptr = hposp_ptr[0]; + GTIA_pm_dirty = TRUE; + do { + if (grafp & 1) + *ptr = 1; + ptr++; + grafp >>= 1; + } while (grafp); + } + } + + DO_PLAYER(1) + DO_PLAYER(2) + DO_PLAYER(3) + +/* Draw Missiles */ + +#define DO_MISSILE(n,p,m,r,l) if (GTIA_GRAFM & m) { \ + int j = global_sizem[n]; \ + UBYTE *ptr = hposm_ptr[n]; \ + if (GTIA_GRAFM & r) { \ + if (GTIA_GRAFM & l) \ + j <<= 1; \ + } \ + else \ + ptr += j; \ + if (ptr < GTIA_pm_scanline + 2) { \ + j += ptr - GTIA_pm_scanline - 2; \ + ptr = GTIA_pm_scanline + 2; \ + } \ + else if (ptr + j > GTIA_pm_scanline + ATARI_WIDTH / 2 - 2) \ + j = GTIA_pm_scanline + ATARI_WIDTH / 2 - 2 - ptr; \ + if (j > 0) \ + do \ + M##n##PL_T |= *ptr++ |= p; \ + while (--j); \ +} + + if (GTIA_GRAFM) { + GTIA_pm_dirty = TRUE; + DO_MISSILE(3, 0x80, 0xc0, 0x80, 0x40) + DO_MISSILE(2, 0x40, 0x30, 0x20, 0x10) + DO_MISSILE(1, 0x20, 0x0c, 0x08, 0x04) + DO_MISSILE(0, 0x10, 0x03, 0x02, 0x01) + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* GTIA registers ---------------------------------------------------------- */ + +void GTIA_Frame(void) +{ +#ifdef BASIC + consol = 0xf; +#else +#if SKIP + consol = INPUT_key_consol | 0x08; +#else + consol = 0xf; +#endif +#endif + + if (GTIA_GRACTL & 4) { + GTIA_TRIG_latch[0] &= GTIA_TRIG[0]; + GTIA_TRIG_latch[1] &= GTIA_TRIG[1]; + GTIA_TRIG_latch[2] &= GTIA_TRIG[2]; + GTIA_TRIG_latch[3] &= GTIA_TRIG[3]; + } +} + +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0x1f) { + case GTIA_OFFSET_M0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x10) >> 4) + + ((PF1PM & 0x10) >> 3) + + ((PF2PM & 0x10) >> 2) + + ((PF3PM & 0x10) >> 1)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x20) >> 5) + + ((PF1PM & 0x20) >> 4) + + ((PF2PM & 0x20) >> 3) + + ((PF3PM & 0x20) >> 2)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x40) >> 6) + + ((PF1PM & 0x40) >> 5) + + ((PF2PM & 0x40) >> 4) + + ((PF3PM & 0x40) >> 3)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x80) >> 7) + + ((PF1PM & 0x80) >> 6) + + ((PF2PM & 0x80) >> 5) + + ((PF3PM & 0x80) >> 4)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_P0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return ((PF0PM & 0x01) + + ((PF1PM & 0x01) << 1) + + ((PF2PM & 0x01) << 2) + + ((PF3PM & 0x01) << 3)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x02) >> 1) + + (PF1PM & 0x02) + + ((PF2PM & 0x02) << 1) + + ((PF3PM & 0x02) << 2)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x04) >> 2) + + ((PF1PM & 0x04) >> 1) + + (PF2PM & 0x04) + + ((PF3PM & 0x04) << 1)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x08) >> 3) + + ((PF1PM & 0x08) >> 2) + + ((PF2PM & 0x08) >> 1) + + (PF3PM & 0x08)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_M0PL: + update_partial_pmpl_colls(); + return GTIA_M0PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M1PL: + update_partial_pmpl_colls(); + return GTIA_M1PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M2PL: + update_partial_pmpl_colls(); + return GTIA_M2PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M3PL: + update_partial_pmpl_colls(); + return GTIA_M3PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_P0PL: + update_partial_pmpl_colls(); + return (((GTIA_P1PL & 0x01) << 1) /* mask in player 1 */ + + ((GTIA_P2PL & 0x01) << 2) /* mask in player 2 */ + + ((GTIA_P3PL & 0x01) << 3)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P1PL: + update_partial_pmpl_colls(); + return ((GTIA_P1PL & 0x01) /* mask in player 0 */ + + ((GTIA_P2PL & 0x02) << 1) /* mask in player 2 */ + + ((GTIA_P3PL & 0x02) << 2)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P2PL: + update_partial_pmpl_colls(); + return ((GTIA_P2PL & 0x03) /* mask in player 0 and 1 */ + + ((GTIA_P3PL & 0x04) << 1)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P3PL: + update_partial_pmpl_colls(); + return (GTIA_P3PL & 0x07) /* mask in player 0,1, and 2 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_TRIG0: + return GTIA_TRIG[0] & GTIA_TRIG_latch[0]; + case GTIA_OFFSET_TRIG1: + return GTIA_TRIG[1] & GTIA_TRIG_latch[1]; + case GTIA_OFFSET_TRIG2: + return GTIA_TRIG[2] & GTIA_TRIG_latch[2]; + case GTIA_OFFSET_TRIG3: + return GTIA_TRIG[3] & GTIA_TRIG_latch[3]; + case GTIA_OFFSET_PAL: + return (tv_mode == TV_PAL) ? 0x01 : 0x0f; + case GTIA_OFFSET_CONSOL: + { +#if SKIP + UBYTE byte = consol & consol_mask; + if (!no_side_effects && GTIA_consol_override > 0) { + /* Check if we're called from outside OS. This avoids sending + console keystrokes to diagnostic cartridges. */ + if (CPU_regPC < 0xc000) + /* Not from OS. Disable console override. */ + GTIA_consol_override = 0; + else { + --GTIA_consol_override; + if (Atari800_builtin_basic && Atari800_disable_basic && !BINLOAD_loading_basic) + /* Only for XL/XE - hold Option during reboot. */ + byte &= ~INPUT_CONSOL_OPTION; + if (CASSETTE_hold_start && Atari800_machine_type != Atari800_MACHINE_5200) { + /* Only for the computers - hold Start during reboot. */ + byte &= ~INPUT_CONSOL_START; + if (GTIA_consol_override == 0) { + /* press Space after Start to start cassette boot. */ + CASSETTE_press_space = 1; + CASSETTE_hold_start = CASSETTE_hold_start_on_reboot; + } + } + } + } +#else + UBYTE byte = consol_mask; +#endif + return byte; + } + default: + break; + } + + return 0xf; +} + +void GTIA_PutByte(UWORD addr, UBYTE byte) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + UWORD cword; + UWORD cword2; + +#ifdef NEW_CYCLE_EXACT + int x; /* the cycle-exact update position in GTIA_pm_scanline */ + if (ANTIC_DRAWING_SCREEN) { + if ((addr & 0x1f) != GTIA_PRIOR) { + ANTIC_UpdateScanline(); + } else { + ANTIC_UpdateScanlinePrior(byte); + } + } +#define UPDATE_PM_CYCLE_EXACT if(ANTIC_DRAWING_SCREEN) GTIA_NewPmScanline(); +#else +#define UPDATE_PM_CYCLE_EXACT +#endif + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + switch (addr & 0x1f) { + case GTIA_OFFSET_CONSOL: + GTIA_speaker = !(byte & 0x08); +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(1); +#endif +#ifdef SKIP + consol_mask = (~byte) & 0x0f; +#else + consol_mask = byte; +#endif + break; + +#if defined(BASIC) || defined(CURSES_BASIC) + + /* We use these for Antic modes 6, 7 on Curses */ + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte; + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte; + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte; + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte; + break; + +#else + +#ifdef USE_COLOUR_TRANSLATION_TABLE + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + ANTIC_cl[C_BAK] = cword = colour_translation_table[byte]; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + ANTIC_cl[C_PF0] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + ANTIC_cl[C_PF1] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + } + { + UBYTE byte2 = (GTIA_COLPF2 & 0xf0) + (byte & 0xf); + ANTIC_cl[C_HI2] = cword = colour_translation_table[byte2]; + ANTIC_cl[C_HI3] = colour_translation_table[(GTIA_COLPF3 & 0xf0) | (byte & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword; + else { + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + ANTIC_cl[C_PF2] = cword = GTIA_colour_translation_table[byte]; + { + UBYTE byte2 = (byte & 0xf0) + (GTIA_COLPF1 & 0xf); + ANTIC_cl[C_HI2] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword2; + } + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + ANTIC_cl[C_PF3] = cword = colour_translation_table[byte]; + ANTIC_cl[C_HI3] = cword2 = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM1; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM0; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + ANTIC_cl[C_PM2] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM3; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[((byte | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[((byte2 | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + ANTIC_cl[C_PM3] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM2; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; +#else /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_BAK] = cword; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF0] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF0 | C_PM01] = (ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF1] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF1 | C_PM01] = (ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + } + ((UBYTE *)ANTIC_hires_lookup_l)[0x80] = ((UBYTE *)ANTIC_hires_lookup_l)[0x41] = (UBYTE) + (ANTIC_hires_lookup_l[0x60] = cword & 0xf0f); + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF2] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + else + ANTIC_cl[C_PF2 | C_PM23] = (ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]) | (ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]); + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF3] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM2] | ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM1]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM0]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM2] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM3]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM3] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_GRAFM: + GTIA_GRAFM = byte; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_GRAFP(n) x = ANTIC_XPOS * 2 - 3;\ + if (GTIA_HPOSP##n >= x) {\ + /* hpos right of x */\ + /* redraw */ \ + UPDATE_PM_CYCLE_EXACT\ + } +#else +#define CYCLE_EXACT_GRAFP(n) +#endif /* NEW_CYCLE_EXACT */ + +#define DO_GRAFP(n) case GTIA_OFFSET_GRAFP##n:\ + GTIA_GRAFP##n = byte;\ + CYCLE_EXACT_GRAFP(n);\ + break; + + DO_GRAFP(0) + DO_GRAFP(1) + DO_GRAFP(2) + DO_GRAFP(3) + + case GTIA_OFFSET_HITCLR: + GTIA_M0PL = GTIA_M1PL = GTIA_M2PL = GTIA_M3PL = 0; + GTIA_P0PL = GTIA_P1PL = GTIA_P2PL = GTIA_P3PL = 0; + PF0PM = PF1PM = PF2PM = PF3PM = 0; +#ifdef NEW_CYCLE_EXACT + hitclr_pos = ANTIC_XPOS * 2 - 37; + collision_curpos = hitclr_pos; +#endif + break; +/* TODO: cycle-exact missile HPOS, GRAF, SIZE */ +/* this is only an approximation */ + case GTIA_OFFSET_HPOSM0: + GTIA_HPOSM0 = byte; + hposm_ptr[0] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM1: + GTIA_HPOSM1 = byte; + hposm_ptr[1] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM2: + GTIA_HPOSM2 = byte; + hposm_ptr[2] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM3: + GTIA_HPOSM3 = byte; + hposm_ptr[3] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_HPOSP(n) x = ANTIC_XPOS * 2 - 1;\ + if (GTIA_HPOSP##n < x && byte < x) {\ + /* case 1: both left of x */\ + /* do nothing */\ + }\ + else if (GTIA_HPOSP##n >= x && byte >= x ) {\ + /* case 2: both right of x */\ + /* redraw, clearing first */\ + UPDATE_PM_CYCLE_EXACT\ + }\ + else if (GTIA_HPOSP##n = x) {\ + /* case 3: new value is right, old value is left */\ + /* redraw without clearing first */\ + /* note: a hack, we can get away with it unless another change occurs */\ + /* before the original copy that wasn't erased due to changing */\ + /* GTIA_pm_dirty is drawn */\ + GTIA_pm_dirty = FALSE;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_pm_dirty = TRUE; /* can't trust that it was reset correctly */\ + }\ + else {\ + /* case 4: new value is left, old value is right */\ + /* remove old player and don't draw the new one */\ + UBYTE save_graf = GTIA_GRAFP##n;\ + GTIA_GRAFP##n = 0;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_GRAFP##n = save_graf;\ + } +#else +#define CYCLE_EXACT_HPOSP(n) +#endif /* NEW_CYCLE_EXACT */ +#define DO_HPOSP(n) case GTIA_OFFSET_HPOSP##n: \ + hposp_ptr[n] = GTIA_pm_scanline + byte - 0x20; \ + if (byte >= 0x22) { \ + if (byte > 0xbe) { \ + if (byte >= 0xde) \ + hposp_mask[n] = 0; \ + else \ + hposp_mask[n] = 0xffffffff >> (byte - 0xbe); \ + } \ + else \ + hposp_mask[n] = 0xffffffff; \ + } \ + else if (byte > 2) \ + hposp_mask[n] = 0xffffffff << (0x22 - byte); \ + else \ + hposp_mask[n] = 0; \ + CYCLE_EXACT_HPOSP(n)\ + GTIA_HPOSP##n = byte; \ + break; + + DO_HPOSP(0) + DO_HPOSP(1) + DO_HPOSP(2) + DO_HPOSP(3) + +/* TODO: cycle-exact size changes */ +/* this is only an approximation */ + case GTIA_OFFSET_SIZEM: + GTIA_SIZEM = byte; + global_sizem[0] = PM_Width[byte & 0x03]; + global_sizem[1] = PM_Width[(byte & 0x0c) >> 2]; + global_sizem[2] = PM_Width[(byte & 0x30) >> 4]; + global_sizem[3] = PM_Width[(byte & 0xc0) >> 6]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP0: + GTIA_SIZEP0 = byte; + grafp_ptr[0] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP1: + GTIA_SIZEP1 = byte; + grafp_ptr[1] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP2: + GTIA_SIZEP2 = byte; + grafp_ptr[2] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP3: + GTIA_SIZEP3 = byte; + grafp_ptr[3] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_PRIOR: + ANTIC_SetPrior(byte); + GTIA_PRIOR = byte; + if (byte & 0x40) + setup_gtia9_11(); + break; + case GTIA_OFFSET_VDELAY: + GTIA_VDELAY = byte; + break; + case GTIA_OFFSET_GRACTL: + GTIA_GRACTL = byte; + ANTIC_missile_gra_enabled = (byte & 0x01); + ANTIC_player_gra_enabled = (byte & 0x02); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + if ((byte & 4) == 0) + GTIA_TRIG_latch[0] = GTIA_TRIG_latch[1] = GTIA_TRIG_latch[2] = GTIA_TRIG_latch[3] = 1; + break; + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void GTIA_StateSave(void) +{ + int next_console_value = 7; + + StateSav_SaveUBYTE(>IA_HPOSP0, 1); + StateSav_SaveUBYTE(>IA_HPOSP1, 1); + StateSav_SaveUBYTE(>IA_HPOSP2, 1); + StateSav_SaveUBYTE(>IA_HPOSP3, 1); + StateSav_SaveUBYTE(>IA_HPOSM0, 1); + StateSav_SaveUBYTE(>IA_HPOSM1, 1); + StateSav_SaveUBYTE(>IA_HPOSM2, 1); + StateSav_SaveUBYTE(>IA_HPOSM3, 1); + StateSav_SaveUBYTE(&PF0PM, 1); + StateSav_SaveUBYTE(&PF1PM, 1); + StateSav_SaveUBYTE(&PF2PM, 1); + StateSav_SaveUBYTE(&PF3PM, 1); + StateSav_SaveUBYTE(>IA_M0PL, 1); + StateSav_SaveUBYTE(>IA_M1PL, 1); + StateSav_SaveUBYTE(>IA_M2PL, 1); + StateSav_SaveUBYTE(>IA_M3PL, 1); + StateSav_SaveUBYTE(>IA_P0PL, 1); + StateSav_SaveUBYTE(>IA_P1PL, 1); + StateSav_SaveUBYTE(>IA_P2PL, 1); + StateSav_SaveUBYTE(>IA_P3PL, 1); + StateSav_SaveUBYTE(>IA_SIZEP0, 1); + StateSav_SaveUBYTE(>IA_SIZEP1, 1); + StateSav_SaveUBYTE(>IA_SIZEP2, 1); + StateSav_SaveUBYTE(>IA_SIZEP3, 1); + StateSav_SaveUBYTE(>IA_SIZEM, 1); + StateSav_SaveUBYTE(>IA_GRAFP0, 1); + StateSav_SaveUBYTE(>IA_GRAFP1, 1); + StateSav_SaveUBYTE(>IA_GRAFP2, 1); + StateSav_SaveUBYTE(>IA_GRAFP3, 1); + StateSav_SaveUBYTE(>IA_GRAFM, 1); + StateSav_SaveUBYTE(>IA_COLPM0, 1); + StateSav_SaveUBYTE(>IA_COLPM1, 1); + StateSav_SaveUBYTE(>IA_COLPM2, 1); + StateSav_SaveUBYTE(>IA_COLPM3, 1); + StateSav_SaveUBYTE(>IA_COLPF0, 1); + StateSav_SaveUBYTE(>IA_COLPF1, 1); + StateSav_SaveUBYTE(>IA_COLPF2, 1); + StateSav_SaveUBYTE(>IA_COLPF3, 1); + StateSav_SaveUBYTE(>IA_COLBK, 1); + StateSav_SaveUBYTE(>IA_PRIOR, 1); + StateSav_SaveUBYTE(>IA_VDELAY, 1); + StateSav_SaveUBYTE(>IA_GRACTL, 1); + + StateSav_SaveUBYTE(&consol_mask, 1); + StateSav_SaveINT(>IA_speaker, 1); + StateSav_SaveINT(&next_console_value, 1); + StateSav_SaveUBYTE(GTIA_TRIG_latch, 4); +} + +void GTIA_StateRead(UBYTE version) +{ + int next_console_value; /* ignored */ + + StateSav_ReadUBYTE(>IA_HPOSP0, 1); + StateSav_ReadUBYTE(>IA_HPOSP1, 1); + StateSav_ReadUBYTE(>IA_HPOSP2, 1); + StateSav_ReadUBYTE(>IA_HPOSP3, 1); + StateSav_ReadUBYTE(>IA_HPOSM0, 1); + StateSav_ReadUBYTE(>IA_HPOSM1, 1); + StateSav_ReadUBYTE(>IA_HPOSM2, 1); + StateSav_ReadUBYTE(>IA_HPOSM3, 1); + StateSav_ReadUBYTE(&PF0PM, 1); + StateSav_ReadUBYTE(&PF1PM, 1); + StateSav_ReadUBYTE(&PF2PM, 1); + StateSav_ReadUBYTE(&PF3PM, 1); + StateSav_ReadUBYTE(>IA_M0PL, 1); + StateSav_ReadUBYTE(>IA_M1PL, 1); + StateSav_ReadUBYTE(>IA_M2PL, 1); + StateSav_ReadUBYTE(>IA_M3PL, 1); + StateSav_ReadUBYTE(>IA_P0PL, 1); + StateSav_ReadUBYTE(>IA_P1PL, 1); + StateSav_ReadUBYTE(>IA_P2PL, 1); + StateSav_ReadUBYTE(>IA_P3PL, 1); + StateSav_ReadUBYTE(>IA_SIZEP0, 1); + StateSav_ReadUBYTE(>IA_SIZEP1, 1); + StateSav_ReadUBYTE(>IA_SIZEP2, 1); + StateSav_ReadUBYTE(>IA_SIZEP3, 1); + StateSav_ReadUBYTE(>IA_SIZEM, 1); + StateSav_ReadUBYTE(>IA_GRAFP0, 1); + StateSav_ReadUBYTE(>IA_GRAFP1, 1); + StateSav_ReadUBYTE(>IA_GRAFP2, 1); + StateSav_ReadUBYTE(>IA_GRAFP3, 1); + StateSav_ReadUBYTE(>IA_GRAFM, 1); + StateSav_ReadUBYTE(>IA_COLPM0, 1); + StateSav_ReadUBYTE(>IA_COLPM1, 1); + StateSav_ReadUBYTE(>IA_COLPM2, 1); + StateSav_ReadUBYTE(>IA_COLPM3, 1); + StateSav_ReadUBYTE(>IA_COLPF0, 1); + StateSav_ReadUBYTE(>IA_COLPF1, 1); + StateSav_ReadUBYTE(>IA_COLPF2, 1); + StateSav_ReadUBYTE(>IA_COLPF3, 1); + StateSav_ReadUBYTE(>IA_COLBK, 1); + StateSav_ReadUBYTE(>IA_PRIOR, 1); + StateSav_ReadUBYTE(>IA_VDELAY, 1); + StateSav_ReadUBYTE(>IA_GRACTL, 1); + + StateSav_ReadUBYTE(&consol_mask, 1); + StateSav_ReadINT(>IA_speaker, 1); + StateSav_ReadINT(&next_console_value, 1); + if (version >= 7) + StateSav_ReadUBYTE(GTIA_TRIG_latch, 4); + + GTIA_PutByte(GTIA_OFFSET_HPOSP0, GTIA_HPOSP0); + GTIA_PutByte(GTIA_OFFSET_HPOSP1, GTIA_HPOSP1); + GTIA_PutByte(GTIA_OFFSET_HPOSP2, GTIA_HPOSP2); + GTIA_PutByte(GTIA_OFFSET_HPOSP3, GTIA_HPOSP3); + GTIA_PutByte(GTIA_OFFSET_HPOSM0, GTIA_HPOSM0); + GTIA_PutByte(GTIA_OFFSET_HPOSM1, GTIA_HPOSM1); + GTIA_PutByte(GTIA_OFFSET_HPOSM2, GTIA_HPOSM2); + GTIA_PutByte(GTIA_OFFSET_HPOSM3, GTIA_HPOSM3); + GTIA_PutByte(GTIA_OFFSET_SIZEP0, GTIA_SIZEP0); + GTIA_PutByte(GTIA_OFFSET_SIZEP1, GTIA_SIZEP1); + GTIA_PutByte(GTIA_OFFSET_SIZEP2, GTIA_SIZEP2); + GTIA_PutByte(GTIA_OFFSET_SIZEP3, GTIA_SIZEP3); + GTIA_PutByte(GTIA_OFFSET_SIZEM, GTIA_SIZEM); + GTIA_PutByte(GTIA_OFFSET_GRAFP0, GTIA_GRAFP0); + GTIA_PutByte(GTIA_OFFSET_GRAFP1, GTIA_GRAFP1); + GTIA_PutByte(GTIA_OFFSET_GRAFP2, GTIA_GRAFP2); + GTIA_PutByte(GTIA_OFFSET_GRAFP3, GTIA_GRAFP3); + GTIA_PutByte(GTIA_OFFSET_GRAFM, GTIA_GRAFM); + GTIA_PutByte(GTIA_OFFSET_COLPM0, GTIA_COLPM0); + GTIA_PutByte(GTIA_OFFSET_COLPM1, GTIA_COLPM1); + GTIA_PutByte(GTIA_OFFSET_COLPM2, GTIA_COLPM2); + GTIA_PutByte(GTIA_OFFSET_COLPM3, GTIA_COLPM3); + GTIA_PutByte(GTIA_OFFSET_COLPF0, GTIA_COLPF0); + GTIA_PutByte(GTIA_OFFSET_COLPF1, GTIA_COLPF1); + GTIA_PutByte(GTIA_OFFSET_COLPF2, GTIA_COLPF2); + GTIA_PutByte(GTIA_OFFSET_COLPF3, GTIA_COLPF3); + GTIA_PutByte(GTIA_OFFSET_COLBK, GTIA_COLBK); + GTIA_PutByte(GTIA_OFFSET_PRIOR, GTIA_PRIOR); + GTIA_PutByte(GTIA_OFFSET_GRACTL, GTIA_GRACTL); +} + +#endif /* BASIC */ diff --git a/MCUME_esp32/esp5200/main/gtia.h b/MCUME_esp32/esp5200/main/gtia.h new file mode 100644 index 0000000..865c4ae --- /dev/null +++ b/MCUME_esp32/esp5200/main/gtia.h @@ -0,0 +1,136 @@ +#ifndef GTIA_H_ +#define GTIA_H_ + + +#define GTIA_OFFSET_HPOSP0 0x00 +#define GTIA_OFFSET_M0PF 0x00 +#define GTIA_OFFSET_HPOSP1 0x01 +#define GTIA_OFFSET_M1PF 0x01 +#define GTIA_OFFSET_HPOSP2 0x02 +#define GTIA_OFFSET_M2PF 0x02 +#define GTIA_OFFSET_HPOSP3 0x03 +#define GTIA_OFFSET_M3PF 0x03 +#define GTIA_OFFSET_HPOSM0 0x04 +#define GTIA_OFFSET_P0PF 0x04 +#define GTIA_OFFSET_HPOSM1 0x05 +#define GTIA_OFFSET_P1PF 0x05 +#define GTIA_OFFSET_HPOSM2 0x06 +#define GTIA_OFFSET_P2PF 0x06 +#define GTIA_OFFSET_HPOSM3 0x07 +#define GTIA_OFFSET_P3PF 0x07 +#define GTIA_OFFSET_SIZEP0 0x08 +#define GTIA_OFFSET_M0PL 0x08 +#define GTIA_OFFSET_SIZEP1 0x09 +#define GTIA_OFFSET_M1PL 0x09 +#define GTIA_OFFSET_SIZEP2 0x0a +#define GTIA_OFFSET_M2PL 0x0a +#define GTIA_OFFSET_SIZEP3 0x0b +#define GTIA_OFFSET_M3PL 0x0b +#define GTIA_OFFSET_SIZEM 0x0c +#define GTIA_OFFSET_P0PL 0x0c +#define GTIA_OFFSET_GRAFP0 0x0d +#define GTIA_OFFSET_P1PL 0x0d +#define GTIA_OFFSET_GRAFP1 0x0e +#define GTIA_OFFSET_P2PL 0x0e +#define GTIA_OFFSET_GRAFP2 0x0f +#define GTIA_OFFSET_P3PL 0x0f +#define GTIA_OFFSET_GRAFP3 0x10 +#define GTIA_OFFSET_TRIG0 0x10 +#define GTIA_OFFSET_GRAFM 0x11 +#define GTIA_OFFSET_TRIG1 0x11 +#define GTIA_OFFSET_COLPM0 0x12 +#define GTIA_OFFSET_TRIG2 0x12 +#define GTIA_OFFSET_COLPM1 0x13 +#define GTIA_OFFSET_TRIG3 0x13 +#define GTIA_OFFSET_COLPM2 0x14 +#define GTIA_OFFSET_PAL 0x14 +#define GTIA_OFFSET_COLPM3 0x15 +#define GTIA_OFFSET_COLPF0 0x16 +#define GTIA_OFFSET_COLPF1 0x17 +#define GTIA_OFFSET_COLPF2 0x18 +#define GTIA_OFFSET_COLPF3 0x19 +#define GTIA_OFFSET_COLBK 0x1a +#define GTIA_OFFSET_PRIOR 0x1b +#define GTIA_OFFSET_VDELAY 0x1c +#define GTIA_OFFSET_GRACTL 0x1d +#define GTIA_OFFSET_HITCLR 0x1e +#define GTIA_OFFSET_CONSOL 0x1f + +extern UBYTE GTIA_GRAFM; +extern UBYTE GTIA_GRAFP0; +extern UBYTE GTIA_GRAFP1; +extern UBYTE GTIA_GRAFP2; +extern UBYTE GTIA_GRAFP3; +extern UBYTE GTIA_HPOSP0; +extern UBYTE GTIA_HPOSP1; +extern UBYTE GTIA_HPOSP2; +extern UBYTE GTIA_HPOSP3; +extern UBYTE GTIA_HPOSM0; +extern UBYTE GTIA_HPOSM1; +extern UBYTE GTIA_HPOSM2; +extern UBYTE GTIA_HPOSM3; +extern UBYTE GTIA_SIZEP0; +extern UBYTE GTIA_SIZEP1; +extern UBYTE GTIA_SIZEP2; +extern UBYTE GTIA_SIZEP3; +extern UBYTE GTIA_SIZEM; +extern UBYTE GTIA_COLPM0; +extern UBYTE GTIA_COLPM1; +extern UBYTE GTIA_COLPM2; +extern UBYTE GTIA_COLPM3; +extern UBYTE GTIA_COLPF0; +extern UBYTE GTIA_COLPF1; +extern UBYTE GTIA_COLPF2; +extern UBYTE GTIA_COLPF3; +extern UBYTE GTIA_COLBK; +extern UBYTE GTIA_GRACTL; +extern UBYTE GTIA_M0PL; +extern UBYTE GTIA_M1PL; +extern UBYTE GTIA_M2PL; +extern UBYTE GTIA_M3PL; +extern UBYTE GTIA_P0PL; +extern UBYTE GTIA_P1PL; +extern UBYTE GTIA_P2PL; +extern UBYTE GTIA_P3PL; +extern UBYTE GTIA_PRIOR; +extern UBYTE GTIA_VDELAY; + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +extern UWORD GTIA_colour_translation_table[256]; +#define GTIA_COLOUR_BLACK GTIA_colour_translation_table[0] +#define GTIA_COLOUR_TO_WORD(dest,src) dest = GTIA_colour_translation_table[src]; + +#else + +#define GTIA_COLOUR_BLACK 0 +#define GTIA_COLOUR_TO_WORD(dest,src) dest = (((UWORD) (src)) << 8) | (src); + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +extern UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +extern int GTIA_pm_dirty; + +extern UBYTE GTIA_collisions_mask_missile_playfield; +extern UBYTE GTIA_collisions_mask_player_playfield; +extern UBYTE GTIA_collisions_mask_missile_player; +extern UBYTE GTIA_collisions_mask_player_player; + +extern UBYTE GTIA_TRIG[4]; +extern UBYTE GTIA_TRIG_latch[4]; + +extern int GTIA_consol_override; +extern int GTIA_speaker; + +int GTIA_Initialise(void); +void GTIA_Frame(void); +void GTIA_NewPmScanline(void); +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects); +void GTIA_PutByte(UWORD addr, UBYTE byte); +void GTIA_StateSave(void); +void GTIA_StateRead(UBYTE version); + +#ifdef NEW_CYCLE_EXACT +void GTIA_UpdatePmplColls(void); +#endif +#endif /* GTIA_H_ */ diff --git a/MCUME_esp32/esp5200/main/ili9341_t3dma.cpp b/MCUME_esp32/esp5200/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/esp5200/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/esp5200/main/ili9341_t3dma.h b/MCUME_esp32/esp5200/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/esp5200/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/esp5200/main/iopins.h b/MCUME_esp32/esp5200/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/esp5200/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/esp5200/main/keyboard_osd.h b/MCUME_esp32/esp5200/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/esp5200/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/esp5200/main/logo.h b/MCUME_esp32/esp5200/main/logo.h new file mode 100644 index 0000000..26fffa0 --- /dev/null +++ b/MCUME_esp32/esp5200/main/logo.h @@ -0,0 +1,241 @@ +const uint16_t logo[] = { +0x0140,0x00f0,0x9533,0x5b0b,0x3a07,0x39e7,0x31e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39a7,0x39a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x39c7,0x39c6,0x31a6,0x31a6,0x3186,0x3165,0x3165,0x3986,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3a07,0x39c7,0x31a6,0x3186,0x3185,0x3186,0x3986,0x4207,0x31c7,0x31c6,0x2986,0x2985,0x31a6,0x3186,0x39e7,0x39e7,0x31a6,0x2985,0x2986,0x3186,0x3186,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x2966,0x2985,0x39c6,0x39c7,0x31a6,0x2986,0x2965,0x2986,0x3186,0x39c7,0x39e7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x39e7,0x39e7,0x39c7,0x3165,0x2965,0x3186,0x3186,0x4207,0x4207,0x39c7,0x3186,0x2986,0x2985,0x3186,0x39e7,0x39e7,0x39e7,0x31a6,0x2986,0x3186,0x3185,0x3a07,0x4207,0x3a07,0x31c6,0x2965,0x3186,0x2986,0x39c7,0x4208,0x39e7,0x31a6,0x2965,0x2985,0x2985,0x39c7,0x39c7,0x39e7,0x31a6,0x3185,0x2965,0x2965,0x31c6,0x3a07,0x39e7,0x31c6,0x2985,0x2965,0x2965,0x39c6,0x4227,0x4248,0x39e7,0x2965,0x3186,0x3185,0x31a6,0x4228,0x4208,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x39e7,0x4207,0x39e7,0x3186,0x2986,0x2986,0x3186,0x4207,0x4208,0x39e7,0x31a6,0x3185,0x3185,0x3186,0x39e7,0x4227,0x3a07,0x31a6,0x2986,0x2985,0x29a6,0x31e7,0x3a07,0x3a07,0x31a6,0x2965,0x3186,0x3186,0x39c7,0x4228,0x4228,0x31a6,0x3185,0x3185,0x3185,0x39c6,0x39e7,0x39e7,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x39c6,0x39e7,0x31c6,0x3185,0x31a6,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x3185,0x3186,0x3186,0x39c6,0x39e7,0x2986,0x3186,0x2986,0x2985,0x3185,0x31a6,0x39e7,0x3185,0x3186,0x2986,0x2986,0x2985,0x39c6,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x3186,0x2985,0x2985,0x2985,0x3186,0x31a7,0x2945,0x3186,0x2985,0x3186,0x3185,0x3186,0x31c6,0x2965,0x2985,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x2985,0x2985,0x3186,0x3186,0x31a6,0x39e7,0x2965,0x3186,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x3185,0x2965,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x3166,0x3166,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x3206,0x9d53, +0x532b,0x00a0,0x2965,0x2945,0x2145,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2965,0x2965,0x2966,0x2965,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2125,0x2945,0x39c7,0x31a6,0x2144,0x2145,0x2144,0x2144,0x2965,0x39c6,0x39c6,0x2144,0x1944,0x2145,0x2124,0x3185,0x3a07,0x31c6,0x2144,0x2144,0x2144,0x2124,0x3165,0x4228,0x39e7,0x2164,0x2144,0x2145,0x2145,0x2965,0x39e7,0x3a07,0x2965,0x2124,0x2145,0x2125,0x2945,0x39e7,0x39e7,0x2986,0x2145,0x2945,0x2124,0x2944,0x31a6,0x39c7,0x2965,0x2124,0x2145,0x2145,0x2945,0x39e7,0x39e7,0x3185,0x2124,0x2125,0x2124,0x2144,0x39c6,0x39e7,0x31a6,0x2144,0x2144,0x2124,0x2945,0x39c6,0x39e7,0x31c6,0x2144,0x2145,0x2144,0x2144,0x39c6,0x39e7,0x39a6,0x2945,0x2945,0x2945,0x2144,0x39e6,0x4207,0x39e7,0x2165,0x2144,0x2145,0x2124,0x39c7,0x4a28,0x39e7,0x2965,0x2125,0x2144,0x2124,0x31a6,0x4227,0x3a06,0x2985,0x2124,0x2944,0x2124,0x31a6,0x4227,0x39e7,0x2985,0x2145,0x2145,0x2124,0x3185,0x5288,0x5288,0x31c6,0x2944,0x2945,0x2944,0x2965,0x4248,0x4228,0x39c6,0x2945,0x2945,0x2945,0x2945,0x31c6,0x4227,0x31c6,0x2945,0x2945,0x2945,0x2945,0x39e7,0x4207,0x31c6,0x2945,0x2945,0x2944,0x2944,0x39c6,0x3a07,0x31c6,0x2965,0x2945,0x2945,0x2144,0x39c6,0x4207,0x31a6,0x2945,0x2945,0x2945,0x2124,0x31a6,0x4228,0x39e6,0x2965,0x2964,0x2945,0x2124,0x31a5,0x4207,0x39c6,0x2965,0x2965,0x2145,0x2145,0x2985,0x4207,0x39c6,0x2945,0x2965,0x2965,0x2145,0x2965,0x3a07,0x39c6,0x2944,0x2965,0x2944,0x2144,0x2965,0x39e7,0x39c7,0x2124,0x2945,0x2144,0x2945,0x2944,0x31a6,0x39e7,0x2124,0x2124,0x2144,0x2145,0x2124,0x39c6,0x31a6,0x20e3,0x2945,0x2945,0x2144,0x2124,0x2965,0x31a6,0x2104,0x2144,0x2124,0x2144,0x2144,0x2986,0x31a6,0x18e3,0x2124,0x2124,0x2144,0x2124,0x3186,0x31a6,0x18e3,0x2144,0x2144,0x2144,0x2124,0x2985,0x39e7,0x1903,0x1904,0x2145,0x2145,0x2144,0x2985,0x39c6,0x18e3,0x2104,0x2945,0x2124,0x2124,0x2966,0x39c7,0x18e3,0x2103,0x2944,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2145,0x2125,0x2125,0x2925,0x2945,0x2945,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2985,0x0000,0x52ea, +0x2165,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2103,0x1904,0x1924,0x2104,0x2945,0x39c7,0x2985,0x1904,0x2124,0x2124,0x2104,0x2944,0x39a5,0x2964,0x1903,0x1924,0x2124,0x2104,0x3185,0x4227,0x39e6,0x2124,0x2124,0x2104,0x2104,0x3185,0x4227,0x31e6,0x2124,0x2124,0x2124,0x2103,0x2965,0x3a07,0x39e6,0x2124,0x2124,0x2124,0x2104,0x2944,0x4207,0x39c6,0x2124,0x2104,0x2104,0x2104,0x2944,0x39e7,0x39c7,0x2945,0x2104,0x2104,0x2104,0x2944,0x4207,0x39e7,0x2965,0x1904,0x2104,0x2104,0x2124,0x41e7,0x4207,0x2965,0x1904,0x2124,0x2104,0x2125,0x41e7,0x4207,0x3185,0x2124,0x2124,0x2124,0x2104,0x39e7,0x4228,0x31a6,0x2103,0x2124,0x2944,0x4aa8,0x2985,0x39c6,0x39e7,0x31a6,0x31a6,0x31a5,0x31a6,0x4228,0x4a48,0x4228,0x39c7,0x31a6,0x31a6,0x3186,0x39e7,0x4228,0x39e7,0x3185,0x2144,0x2124,0x18e3,0x2944,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2104,0x2945,0x39c6,0x39c6,0x31a6,0x2965,0x2985,0x2965,0x3185,0x4207,0x39e7,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x4207,0x4228,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x4207,0x4228,0x39c7,0x31a6,0x3185,0x3185,0x2965,0x31a6,0x39e7,0x39c7,0x3186,0x31a6,0x3186,0x2965,0x39e7,0x4208,0x39c7,0x3186,0x3186,0x3186,0x2965,0x39c6,0x4a48,0x4268,0x4247,0x4227,0x4247,0x4248,0x4aa9,0x52ea,0x52e9,0x52e9,0x52ea,0x4ac9,0x52c8,0x5b2a,0x636b,0x634b,0x5b2a,0x5b0a,0x636c,0x6309,0x3183,0x4228,0x39e7,0x2945,0x2124,0x2124,0x2124,0x2124,0x39e7,0x4207,0x2944,0x2104,0x2124,0x2124,0x2104,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2124,0x1904,0x31a6,0x39e7,0x2924,0x2104,0x2104,0x2124,0x1924,0x2965,0x39e7,0x2124,0x18e3,0x2104,0x2124,0x1903,0x2986,0x39e7,0x2104,0x18e3,0x2104,0x2104,0x1904,0x2985,0x39c6,0x2103,0x2103,0x2124,0x2124,0x18e3,0x2965,0x39e7,0x2124,0x18e3,0x2124,0x2104,0x1903,0x2944,0x39e7,0x2104,0x18c3,0x2124,0x2124,0x2104,0x2965,0x3a07,0x2124,0x10a2,0x2104,0x2104,0x2104,0x2945,0x39c7,0x18e3,0x18c2,0x2104,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1924,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2123,0x2124,0x2124,0x2124,0x2144, +0x1924,0x1903,0x1903,0x1903,0x18e3,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1903,0x1904,0x1903,0x2104,0x2104,0x1903,0x2104,0x1903,0x1903,0x1903,0x2104,0x1903,0x18e3,0x1903,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x20e3,0x3185,0x39e6,0x2144,0x18e3,0x2104,0x2104,0x20e3,0x3186,0x39c6,0x2944,0x18e3,0x1903,0x2103,0x20e3,0x3185,0x4207,0x2985,0x18e3,0x1904,0x18e4,0x20e3,0x3185,0x4227,0x2985,0x1903,0x1904,0x18e4,0x18e3,0x3185,0x4207,0x31a5,0x1903,0x1903,0x1904,0x18e3,0x2965,0x4207,0x31c6,0x1904,0x18e4,0x18e4,0x18e3,0x2944,0x4207,0x31c6,0x1904,0x1904,0x18e3,0x18c3,0x2945,0x4228,0x39c6,0x2124,0x10e3,0x18e3,0x18e3,0x2924,0x41e7,0x39c7,0x2124,0x18e3,0x1904,0x18e4,0x2124,0x4207,0x4206,0x2965,0x18e3,0x18e4,0x2104,0x2104,0x39e7,0x4207,0x2965,0x18e3,0x1904,0x2124,0x4246,0x1903,0x2104,0x2965,0x31c6,0x39e7,0x39e6,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x41e7,0x4207,0x4207,0x4207,0x39e7,0x39c6,0x3186,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c6,0x31a6,0x31a6,0x39c7,0x39c6,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39c6,0x31a5,0x31a6,0x39e6,0x39e7,0x39e7,0x4208,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x4228,0x4a48,0x4a48,0x4a48,0x4a68,0x4a69,0x4a68,0x4a89,0x5289,0x52aa,0x52a9,0x4a88,0x4a88,0x4a68,0x4a68,0x52a8,0x4a88,0x4a68,0x5b2b,0x8c2c,0x41c2,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2104,0x1903,0x39e7,0x4207,0x2124,0x18e3,0x1904,0x1904,0x18e3,0x39c6,0x4207,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x3186,0x4207,0x2924,0x18e3,0x1904,0x1903,0x18e3,0x2985,0x39e7,0x2124,0x18c3,0x1904,0x1903,0x10e3,0x2945,0x39e7,0x2944,0x10a2,0x1904,0x18e3,0x18e3,0x2944,0x39e7,0x2944,0x10a2,0x18e4,0x18e3,0x18e3,0x2124,0x41e7,0x2965,0x1082,0x2103,0x2124,0x2124,0x2123,0x31c6,0x2144,0x1082,0x2104,0x1904,0x18e3,0x2104,0x39e7,0x2965,0x0862,0x18e3,0x1903,0x18e3,0x2104,0x39c6,0x2924,0x0861,0x1903,0x2124,0x2124,0x2104,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x2104,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2104,0x1904,0x2124, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x39c6,0x39c6,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39e7,0x2124,0x10e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39c6,0x2124,0x18c3,0x18e3,0x18e4,0x18e3,0x39a6,0x3a07,0x2964,0x10c2,0x18e3,0x18e3,0x18e3,0x31a6,0x39e6,0x2965,0x18e3,0x10e3,0x18c3,0x18c3,0x3165,0x39e7,0x2985,0x18c3,0x10c3,0x18e3,0x18c2,0x2965,0x39c6,0x2965,0x10c3,0x10c3,0x18c3,0x18c3,0x2944,0x39e7,0x31a6,0x18e3,0x10c2,0x18c3,0x18c3,0x2104,0x39e6,0x39c6,0x1903,0x10c3,0x18e3,0x18c3,0x2104,0x39e6,0x39c6,0x2124,0x18c3,0x18e3,0x18e3,0x2104,0x39e7,0x39e7,0x2945,0x18e3,0x18e3,0x2103,0x4a67,0x18c2,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x39e7,0x4207,0x4208,0x4208,0x4208,0x4208,0x41e7,0x4207,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x31a6,0x2965,0x2945,0x2944,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x2124,0x2945,0x2965,0x3186,0x3186,0x2965,0x2965,0x2985,0x3165,0x3186,0x3186,0x31a7,0x39c7,0x39c6,0x39e7,0x4208,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x4207,0x4208,0x4207,0x41e7,0x39e7,0x39c6,0x3185,0x3185,0x31a6,0x39c6,0x39c7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c7,0x39e7,0x4207,0x39e7,0x39c7,0x41e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4207,0x4207,0x4208,0x4208,0x4208,0x4207,0x39e7,0x39c6,0x39c6,0x39c6,0x2985,0x2944,0x39c6,0x7bc9,0x41e2,0x39c7,0x39e7,0x2124,0x18e3,0x1904,0x1903,0x18e3,0x31a6,0x39e6,0x2124,0x18c3,0x18e3,0x1903,0x18c3,0x3185,0x41e7,0x2944,0x18c3,0x18e3,0x18e3,0x10c2,0x2965,0x3a07,0x2944,0x10a2,0x18e3,0x18e3,0x10c3,0x2945,0x39e7,0x2945,0x10c3,0x18e3,0x18c3,0x10a2,0x2123,0x39e6,0x2965,0x1082,0x18e3,0x18e3,0x18c3,0x2104,0x39e7,0x2985,0x1082,0x18c3,0x10c3,0x18e3,0x18e3,0x39c6,0x3185,0x1082,0x18c3,0x2104,0x2964,0x2103,0x31a6,0x2965,0x0861,0x2104,0x2124,0x2144,0x2104,0x39c7,0x3186,0x0861,0x18c3,0x18c3,0x10c3,0x10c2,0x31a6,0x31a6,0x0861,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x10c2,0x10c3,0x10c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0x3185,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x3186,0x31a6,0x10e3,0x10c2,0x10c3,0x10c2,0x2104,0x39c6,0x31a6,0x2103,0x10c3,0x18c3,0x18c3,0x18e3,0x39a6,0x39c6,0x2124,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x31a6,0x2124,0x10c2,0x10c3,0x10c2,0x18c3,0x3185,0x39e7,0x2965,0x10c2,0x10a2,0x10c2,0x10c2,0x2965,0x31c6,0x2144,0x10c2,0x10c2,0x10a2,0x10a2,0x2945,0x39c6,0x2965,0x10c3,0x10a2,0x10c3,0x10a2,0x2124,0x39c6,0x3185,0x18e3,0x10a2,0x18c3,0x10a2,0x2104,0x39c6,0x3185,0x18e3,0x18c3,0x18c3,0x18a2,0x20e3,0x39e7,0x31c6,0x2124,0x10a2,0x18e3,0x18e3,0x52c8,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x41e7,0x39e7,0x4207,0x4208,0x4207,0x3a07,0x39e7,0x31a6,0x2965,0x2124,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2124,0x2944,0x3186,0x31a6,0x31a6,0x39c7,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4a48,0x4a48,0x4227,0x4207,0x39e7,0x3185,0x31a5,0x39c6,0x39e7,0x4208,0x4208,0x4208,0x39e7,0x39c6,0x39e7,0x41e8,0x4208,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4a29,0x4229,0x4229,0x4229,0x4208,0x4207,0x4207,0x4207,0x4207,0x41e7,0x39e7,0x39c6,0x31a6,0x3185,0x2124,0x18e3,0x18e3,0x2944,0x6b27,0x41e2,0x39c6,0x39c7,0x2104,0x18c3,0x18e3,0x18e3,0x18c2,0x2985,0x39e6,0x2944,0x10c2,0x18e3,0x18e3,0x18c2,0x2965,0x39e7,0x2945,0x10a2,0x18e3,0x18c3,0x10a2,0x2964,0x39e7,0x2965,0x1082,0x18c3,0x10c3,0x10c2,0x2124,0x39c7,0x2965,0x10a2,0x10c2,0x10c2,0x1082,0x18e3,0x31c5,0x3185,0x1082,0x10c3,0x18c3,0x10c2,0x10c3,0x31a6,0x2965,0x0861,0x10a3,0x10c3,0x10c2,0x10c2,0x31a6,0x31a6,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x31a6,0x3186,0x0861,0x1903,0x2124,0x2965,0x2965,0x31a6,0x39a6,0x1081,0x10a2,0x10c3,0x10c2,0x10a2,0x2965,0x31a6,0x10a2,0x10a2,0x18e3,0x10e3,0x10c3,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x10c3, +0x10a3,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x3185,0x2944,0x10a2,0x10a2,0x10c2,0x10a2,0x2104,0x2986,0x2145,0x10c3,0x10a2,0x10a2,0x10a2,0x1904,0x31a6,0x3185,0x18e3,0x10a2,0x10a3,0x10a2,0x18e3,0x39a6,0x31a6,0x18e3,0x10a2,0x10a2,0x10c2,0x18e3,0x31a6,0x3185,0x18e3,0x10a2,0x10c2,0x10a2,0x10c2,0x31a5,0x39e6,0x2144,0x10a2,0x10c3,0x10c3,0x10a2,0x3185,0x31a6,0x2104,0x08a2,0x10a2,0x10a2,0x10a2,0x2965,0x39c6,0x2965,0x10a2,0x10a2,0x10a2,0x1082,0x2144,0x39c6,0x2965,0x18c2,0x10a2,0x10a3,0x10a2,0x2104,0x31a6,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x1903,0x39c6,0x2965,0x18e3,0x10c2,0x10c3,0x18e3,0x4a87,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1903,0x2924,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2104,0x2104,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2964,0x2985,0x3185,0x3185,0x3185,0x3185,0x31a5,0x3185,0x31a6,0x31a6,0x31a6,0x31a6,0x31a5,0x3185,0x2964,0x3185,0x31a5,0x31a6,0x39c6,0x39c7,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e6,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4207,0x4207,0x3a07,0x39e6,0x3185,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2944,0x7389,0x5263,0x31a6,0x31a6,0x2104,0x10a2,0x18e3,0x18e3,0x10a2,0x2985,0x31c6,0x2124,0x10c3,0x18e3,0x18e3,0x10a2,0x2165,0x31c6,0x2944,0x1082,0x10c2,0x18c3,0x10a2,0x2124,0x3a07,0x3185,0x1082,0x10c3,0x10c3,0x10a2,0x2103,0x31a6,0x2985,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x31a6,0x2965,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x2985,0x2103,0x0861,0x10a2,0x10c2,0x10a2,0x10a2,0x31a5,0x31a6,0x10a2,0x1082,0x10a3,0x10a3,0x10a2,0x3185,0x3185,0x1082,0x10a2,0x18e3,0x18e3,0x18e3,0x2965,0x39a6,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x2124,0x31a5,0x18c2,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3, +0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2985,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x3186,0x2945,0x10c2,0x1082,0x10a2,0x10a2,0x20e3,0x31a6,0x3186,0x18c3,0x1082,0x10a2,0x10a2,0x18e3,0x31a6,0x2985,0x18e3,0x0882,0x10a2,0x10a2,0x10c2,0x31a5,0x3185,0x1903,0x1082,0x10a2,0x10a3,0x10a2,0x2965,0x2985,0x1903,0x1082,0x1082,0x10a2,0x10a2,0x3185,0x39c6,0x2924,0x1082,0x1082,0x10a2,0x1082,0x2924,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2965,0x18c3,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x10c3,0x10c2,0x3a06,0x10a2,0x18c2,0x18c3,0x18c3,0x20e3,0x18c3,0x18a2,0x18a3,0x18c3,0x2124,0x18e3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x10a2,0x10c2,0x18c3,0x10a2,0x18c3,0x10c2,0x18c2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x2103,0x2103,0x2103,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2104,0x2103,0x2103,0x2123,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2103,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2124,0x7bcb,0x62c3,0x2965,0x31a6,0x2124,0x10a2,0x18e3,0x18c3,0x10a2,0x2965,0x31a6,0x2104,0x10c3,0x10e3,0x10e3,0x10a2,0x2145,0x31a6,0x2124,0x10a2,0x10c2,0x10c3,0x10c2,0x2103,0x39c6,0x2965,0x10a2,0x10c2,0x10c3,0x10a2,0x18e3,0x31a6,0x3185,0x1081,0x10a2,0x10a2,0x10a2,0x10c2,0x3185,0x2965,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x2965,0x2104,0x1062,0x10a2,0x10c2,0x10a2,0x1082,0x2985,0x39c6,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x2964,0x3185,0x10a2,0x0861,0x10a2,0x10a2,0x0861,0x2965,0x31a6,0x18c3,0x1081,0x10a2,0x10a2,0x0882,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2, +0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x18e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2124,0x2985,0x2124,0x10a2,0x10c2,0x10a2,0x10a2,0x2104,0x3165,0x2945,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x31a6,0x2945,0x18a2,0x1082,0x10a2,0x10a2,0x18e3,0x3185,0x2964,0x10c2,0x08a2,0x10a2,0x10a2,0x10e3,0x31a5,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x10c2,0x2144,0x2964,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x2965,0x3185,0x2104,0x1082,0x10a2,0x10a2,0x10a2,0x2944,0x3185,0x2124,0x08a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2944,0x10c2,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x18c3,0x10c2,0x31a5,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x18c3,0x10a2,0x18c3,0x18c3,0x2104,0x2103,0x10a2,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18e3,0x18c3,0x18c3,0x2124,0x18e3,0x20e3,0x18c3,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x20e3,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18c2,0x18c3,0x18c3,0x2104,0x6327,0x5ac3,0x3186,0x31c6,0x2103,0x10a2,0x18c3,0x18e3,0x18c3,0x2945,0x31a6,0x2104,0x10a2,0x18c3,0x18c3,0x10c2,0x2124,0x31a6,0x2944,0x10a2,0x10c3,0x18c3,0x10c2,0x2123,0x31c6,0x2965,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x31a6,0x3186,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x31a6,0x2985,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x2965,0x2965,0x10a2,0x10a2,0x10c2,0x10c2,0x1082,0x2965,0x39e7,0x1904,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x0882,0x2144,0x31a6,0x1903,0x0861,0x10a2,0x10a2,0x0882,0x1903,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2, +0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x08a2,0x0882,0x0882,0x1082,0x1082,0x0881,0x0881,0x1082,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2124,0x10e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2144,0x3185,0x1903,0x10a2,0x10a2,0x10a2,0x10a2,0x2103,0x3165,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x20e4,0x3186,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x39c6,0x2944,0x10a2,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x3185,0x1903,0x10a2,0x10a2,0x10c2,0x10a2,0x2945,0x2965,0x10c2,0x10a2,0x10c3,0x10a2,0x10a2,0x2965,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x2124,0x10a2,0x10a2,0x18c3,0x18a2,0x2924,0x3185,0x2124,0x18c3,0x10a2,0x18c3,0x10a2,0x1904,0x3186,0x2145,0x18c3,0x10a2,0x18c2,0x18c2,0x2123,0x18c2,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x2103,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18a2,0x18a2,0x18e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c2,0x10a2,0x18c2,0x2104,0x18e3,0x18e3,0x18c3,0x2124,0x18c3,0x2124,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x10a2,0x18c2,0x18e3,0x18a2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x62e6,0x5aa3,0x2965,0x2985,0x2123,0x10c2,0x18e3,0x18e4,0x18c3,0x2124,0x3186,0x2104,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x10a2,0x18c3,0x18e3,0x18c3,0x2104,0x31a6,0x2965,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x3186,0x2945,0x1082,0x10a2,0x10c3,0x10c3,0x10c2,0x31a6,0x3185,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e3,0x1081,0x10c2,0x10c3,0x10a2,0x2964,0x31a6,0x18e3,0x1082,0x10a3,0x10a3,0x10a3,0x2104,0x2965,0x18e3,0x0881,0x10a2,0x18c3,0x10a2,0x2103,0x3185,0x2103,0x0861,0x10a2,0x10a3,0x10a2,0x18e3,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e4,0x2104,0x18c3,0x10c2,0x10c3,0x10c2,0x10a2,0x2944,0x3185,0x2104,0x1082,0x10c2,0x10c3,0x10a2,0x2124,0x3185,0x2104,0x10a2,0x10c3,0x18c3,0x18a2,0x20e4,0x2945,0x1904,0x10a2,0x18c3,0x10c3,0x10c3,0x2124,0x39c6,0x2124,0x18c3,0x18c3,0x18c3,0x18a2,0x2103,0x3185,0x2985,0x2103,0x10a2,0x18c3,0x18e3,0x18e3,0x2944,0x2965,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x2965,0x2965,0x2103,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x2965,0x1903,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2124,0x18e3,0x18e3,0x1903,0x18c3,0x1903,0x2945,0x2144,0x18e3,0x18c3,0x18e3,0x18e3,0x18e2,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x18c2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x18e3,0x18c2,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x18c3,0x10a2,0x1082,0x18a2,0x18c3,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c3,0x2104,0x2104,0x10a2,0x18c2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x6328,0x6b24,0x2144,0x31a6,0x2144,0x18e3,0x2104,0x2104,0x1904,0x2124,0x2986,0x2124,0x10c2,0x2124,0x2124,0x2103,0x2124,0x3186,0x2944,0x10a2,0x1903,0x2104,0x18e3,0x2124,0x3186,0x2124,0x10a2,0x18e3,0x1903,0x18e3,0x18c3,0x2965,0x2966,0x10a2,0x10c3,0x18e3,0x10e3,0x10c2,0x2965,0x2965,0x10c2,0x10a2,0x1903,0x18e3,0x10c2,0x2124,0x2986,0x18e3,0x10a2,0x18e3,0x1904,0x10c2,0x2964,0x3185,0x18e3,0x1082,0x18c3,0x18e4,0x18c3,0x2104,0x2985,0x20e3,0x0882,0x18c3,0x18e3,0x10c3,0x2103,0x31a5,0x2124,0x0861,0x10a3,0x18c3,0x10a3,0x18e3,0x2965,0x18e3,0x0881,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x18e3,0x18c3,0x10c3,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c3,0x10c2,0x10c2,0x18e3, +0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x10c2,0x10c3,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2124,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x2124,0x2965,0x18e4,0x10a3,0x18e3,0x18e3,0x10a2,0x2124,0x3165,0x2104,0x10c3,0x18e3,0x18e3,0x18c3,0x2124,0x3186,0x1904,0x18c3,0x1904,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x1903,0x2125,0x2104,0x18e3,0x2104,0x3185,0x2965,0x18e3,0x18e3,0x2104,0x1904,0x18e3,0x2144,0x2965,0x18e3,0x18c3,0x2124,0x2104,0x18c3,0x3185,0x39e7,0x2924,0x2104,0x2104,0x2104,0x18e4,0x2145,0x2985,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2965,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2124,0x1903,0x1904,0x2104,0x18e3,0x18e1,0x18c3,0x18c3,0x10a2,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0861,0x10a2,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x18a2,0x18e3,0x2104,0x18e3,0x10a2,0x1082,0x0861,0x18c3,0x2104,0x2924,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2103,0x18a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x18e3,0x2104,0x18a2,0x18c3,0x0861,0x0861,0x18c3,0x18e3,0x20e3,0x20e3,0x20e4,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x10a2,0x10a2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x20e3,0x5ac7,0x7ba4,0x2144,0x29a6,0x2124,0x1903,0x2145,0x2145,0x2144,0x2124,0x2986,0x2124,0x10c3,0x2965,0x2965,0x1904,0x2124,0x2965,0x2124,0x18c3,0x2144,0x2144,0x2104,0x2104,0x2965,0x2965,0x18e3,0x1904,0x2124,0x2124,0x2104,0x2965,0x2965,0x18c3,0x18e3,0x2124,0x1904,0x18e3,0x2965,0x2965,0x10c2,0x10c3,0x2124,0x1904,0x18e3,0x2124,0x2985,0x18e3,0x18c3,0x1904,0x2104,0x18e3,0x2965,0x31a6,0x18e3,0x10a2,0x18e3,0x1904,0x18e3,0x2104,0x2985,0x2104,0x1082,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2124,0x0862,0x18e3,0x18e4,0x18c3,0x18e3,0x2965,0x2104,0x1082,0x18e3,0x2104,0x18e3,0x18c3,0x18e3,0x10c3,0x10a2,0x10a2,0x18e3,0x18e3,0x10c3,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x10c2,0x10c3,0x18e3,0x18c3,0x10c2,0x18c3,0x18e3,0x18c3,0x10c3,0x18e3, +0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18e3,0x18c3,0x10a2,0x10c3,0x18c3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x2124,0x2124,0x18e3,0x2945,0x2124,0x18e3,0x18e3,0x2945,0x2965,0x2104,0x2104,0x2124,0x2104,0x18c3,0x2944,0x31a6,0x2144,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2945,0x18e3,0x18e3,0x2124,0x2124,0x1904,0x2124,0x31a6,0x2145,0x2104,0x2945,0x2945,0x2945,0x2104,0x3186,0x2965,0x2144,0x2965,0x2965,0x2145,0x18e3,0x2944,0x2985,0x2104,0x2144,0x2965,0x2986,0x2104,0x3185,0x41e6,0x3185,0x2945,0x29a6,0x2165,0x2124,0x2145,0x3185,0x2124,0x2985,0x31a6,0x2986,0x2965,0x2124,0x3185,0x2124,0x2945,0x3186,0x2966,0x3186,0x2124,0x2965,0x2945,0x2104,0x2966,0x2965,0x2945,0x18e2,0x18a3,0x18a2,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x1082,0x0861,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18a2,0x18e3,0x2124,0x18e3,0x18c2,0x1081,0x1082,0x18e3,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x2124,0x18a3,0x18c3,0x0841,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2945,0x2944,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2945,0x2124,0x18c3,0x18c2,0x18e3,0x18e3,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4225,0x6b24,0x2965,0x3186,0x2104,0x2124,0x31c6,0x31a6,0x2965,0x2144,0x31a6,0x2145,0x1904,0x2965,0x2965,0x2986,0x2124,0x3186,0x2145,0x2104,0x3186,0x2965,0x2965,0x2124,0x3186,0x3186,0x1903,0x2144,0x2145,0x2945,0x2945,0x2965,0x2965,0x18e3,0x2145,0x2145,0x2945,0x2124,0x2945,0x3186,0x18c3,0x1904,0x2965,0x2945,0x2124,0x2965,0x31a6,0x18e3,0x2104,0x2124,0x2965,0x2104,0x2945,0x31c7,0x2104,0x18e3,0x2144,0x2145,0x2144,0x2124,0x3186,0x2104,0x10a2,0x2124,0x2965,0x2124,0x2124,0x31a6,0x2145,0x10a3,0x2125,0x2125,0x2124,0x2104,0x2965,0x2124,0x1082,0x2124,0x2124,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x1903,0x2104,0x2104,0x1904,0x18e3,0x1904,0x1903,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x18e3, +0x18e3,0x18e3,0x18c3,0x18e3,0x18e4,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x2124,0x1903,0x1903,0x2104,0x1904,0x2104,0x2104,0x2124,0x1904,0x2144,0x2144,0x1904,0x1903,0x2104,0x2104,0x2124,0x2125,0x1903,0x2965,0x2965,0x1904,0x2124,0x2945,0x2144,0x18e3,0x2965,0x2985,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x31a6,0x2145,0x1904,0x2165,0x2965,0x2104,0x2104,0x2945,0x2124,0x2124,0x2965,0x2965,0x2145,0x2124,0x2986,0x2145,0x2144,0x2965,0x2965,0x2986,0x2124,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2104,0x2124,0x2965,0x2124,0x2965,0x31a6,0x31c6,0x2124,0x3185,0x39a6,0x2965,0x31a6,0x29a6,0x29a6,0x2165,0x2965,0x3186,0x2945,0x3186,0x39c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2966,0x39c7,0x31a7,0x2966,0x2104,0x3186,0x2965,0x2945,0x31a6,0x2986,0x39e7,0x18e2,0x18c3,0x18a2,0x18a3,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x18e3,0x2104,0x20e4,0x18e4,0x2104,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x10a2,0x18c2,0x10a2,0x18c3,0x2124,0x18c3,0x10c2,0x1082,0x1082,0x18e3,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2944,0x18e3,0x2103,0x2103,0x18e3,0x10a2,0x18e3,0x18e3,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3186,0x3186,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4206,0x62e6,0x2945,0x3186,0x2104,0x2145,0x3186,0x2965,0x2945,0x2945,0x31c6,0x2945,0x2104,0x2985,0x2965,0x3186,0x2965,0x3186,0x2945,0x2124,0x2965,0x2985,0x2965,0x2144,0x31a6,0x31a6,0x2944,0x2944,0x2965,0x2965,0x2924,0x2965,0x3186,0x2104,0x2945,0x2145,0x2145,0x2124,0x2965,0x3186,0x2104,0x2124,0x2965,0x3186,0x2945,0x2124,0x31a6,0x2124,0x2124,0x2965,0x2965,0x2124,0x2945,0x39c7,0x2124,0x2104,0x2965,0x2945,0x2124,0x2124,0x3186,0x2124,0x18e3,0x2945,0x2945,0x2945,0x2124,0x31a6,0x2965,0x18c3,0x2145,0x2945,0x2965,0x2104,0x2965,0x2945,0x18e3,0x2144,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2144,0x2124,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x1924,0x1903,0x2145,0x2124,0x1904,0x1904,0x2124,0x1904,0x1904,0x1903,0x2104,0x18e3,0x2104,0x2124,0x1904,0x1903,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x2104,0x1903,0x1903,0x18e3,0x18e3,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2145,0x1904,0x1904,0x2104,0x2124,0x2145,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2965,0x29a6,0x2145,0x2124,0x2965,0x2124,0x2165,0x2985,0x2185,0x2124,0x2124,0x2945,0x2124,0x2944,0x2985,0x2985,0x2165,0x2124,0x2965,0x2145,0x2144,0x2965,0x2965,0x2965,0x2125,0x2945,0x2965,0x2965,0x2986,0x2986,0x3186,0x2945,0x2124,0x2965,0x2124,0x2965,0x2965,0x2985,0x2124,0x2124,0x2945,0x2144,0x2986,0x2986,0x2986,0x2145,0x2124,0x2965,0x2124,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2985,0x2144,0x2965,0x31a6,0x2986,0x2966,0x2144,0x2145,0x2945,0x2986,0x31a6,0x2985,0x3186,0x18c2,0x18a2,0x18a3,0x10a2,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x1082,0x1082,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1924,0x1924,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x18e3,0x2104,0x3164,0x2944,0x2104,0x3144,0x2924,0x2124,0x2104,0x2124,0x2924,0x3164,0x2945,0x2124,0x2103,0x2104,0x2104,0x18e3,0x10a2,0x18e3,0x20e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3185,0x3165,0x2945,0x2924,0x2124,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x20e3,0x18e3,0x2103,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4207,0x62c9,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2144,0x3186,0x2986,0x2965,0x2965,0x2965,0x2945,0x31a6,0x2945,0x3185,0x2965,0x2124,0x2145,0x2986,0x2145,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2124,0x2124,0x2945,0x2965,0x2144,0x2104,0x2945,0x2145,0x2945,0x2144,0x2945,0x2965,0x2945,0x2965,0x2124,0x2965,0x2945,0x2144,0x2965,0x2124,0x2965,0x2124,0x2124,0x2144,0x2145,0x2945,0x2124,0x2145,0x2124,0x18e3,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x1904,0x2124,0x2124,0x2124,0x2104,0x1903,0x2104,0x2104,0x2965,0x2145,0x2144,0x2145,0x2144,0x2145,0x2124,0x1924,0x10e3,0x2165,0x2124,0x1903,0x1904,0x1904,0x1904,0x18e3,0x2104,0x1903,0x2104,0x2124,0x2945,0x1904,0x1904,0x2124,0x1903,0x1904,0x1904,0x1903,0x2104, +0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1904,0x18e3,0x2104,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2965,0x2985,0x2144,0x1924,0x2124,0x2124,0x1904,0x2124,0x2965,0x3186,0x2124,0x2125,0x2125,0x2124,0x2945,0x2965,0x2965,0x2124,0x1904,0x1904,0x1904,0x2125,0x2966,0x2986,0x2965,0x2145,0x2124,0x2945,0x2985,0x2985,0x2986,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2144,0x2145,0x2985,0x2945,0x2965,0x2965,0x2966,0x3186,0x2945,0x2966,0x31a6,0x2986,0x2985,0x2965,0x2124,0x2965,0x2986,0x2986,0x2144,0x2965,0x2144,0x2145,0x2966,0x2166,0x2165,0x2965,0x2165,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x29a6,0x31c7,0x31a6,0x31c7,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x2965,0x2145,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x1944,0x21a6,0x2144,0x21a6,0x21a6,0x2145,0x21a6,0x21a6,0x2145,0x21a6,0x21c6,0x2145,0x2185,0x1944,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x39a4,0x6b04,0x62c3,0x4a04,0x62e4,0x5a64,0x41c4,0x41e4,0x4a05,0x5264,0x6ae4,0x41c4,0x41e4,0x4a03,0x2123,0x2104,0x18e3,0x10a2,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3965,0x5185,0x3944,0x3145,0x4965,0x3145,0x4145,0x4165,0x2945,0x3965,0x3965,0x3965,0x4165,0x28e3,0x2103,0x20e3,0x18a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c3,0x3985,0x6227,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x2145,0x31a6,0x2965,0x2145,0x2124,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2945,0x2145,0x2145,0x2965,0x2965,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2965,0x2945,0x2945,0x2945,0x2124,0x2124,0x2986,0x2145,0x2144,0x2145,0x2965,0x2145,0x2965,0x2145,0x2945,0x2965,0x2945,0x2124,0x2124,0x2144,0x2124,0x2945,0x2145,0x2124,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2104,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2144,0x1924,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x1903,0x1903,0x18e3,0x1904,0x18e4, +0x18c3,0x18e3,0x2124,0x2104,0x1903,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2144,0x2124,0x1904,0x2124,0x2145,0x2125,0x2125,0x2124,0x1904,0x18e3,0x1904,0x1904,0x2124,0x1904,0x2145,0x2965,0x2145,0x2125,0x2945,0x2966,0x2965,0x2965,0x3185,0x2165,0x2124,0x2145,0x2125,0x2125,0x2945,0x2945,0x2966,0x2966,0x2165,0x2965,0x2986,0x2965,0x2986,0x2985,0x2145,0x2165,0x2145,0x29a6,0x29a6,0x31a6,0x2145,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x31c7,0x2965,0x2986,0x31a6,0x3186,0x2165,0x2986,0x2965,0x2165,0x31a6,0x2986,0x2145,0x2985,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2145,0x2165,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2985,0x2966,0x31c7,0x3186,0x31a6,0x39e7,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x31e7,0x31a6,0x2986,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x1924,0x21c6,0x2145,0x2186,0x21a6,0x2165,0x21e7,0x2207,0x21a5,0x21e7,0x21e7,0x2165,0x2185,0x1964,0x18e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18a2,0x0861,0x1082,0x18c3,0x5264,0x83c3,0x7ba3,0x6304,0x7b84,0x83a4,0x62c4,0x5aa4,0x6b25,0x6b04,0x83a3,0x4a04,0x7b64,0x5a62,0x2103,0x2104,0x18e3,0x10a2,0x18c3,0x18c2,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x5965,0x7185,0x5165,0x5185,0x6985,0x4165,0x6185,0x5965,0x4165,0x69a6,0x51a6,0x4985,0x6185,0x2903,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6184,0x31a7,0x2966,0x2965,0x2986,0x3186,0x2945,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2966,0x2966,0x2986,0x31a6,0x3186,0x2945,0x3186,0x31a6,0x2965,0x3186,0x2965,0x1924,0x2986,0x2986,0x2124,0x2124,0x2124,0x2145,0x2165,0x2986,0x2986,0x2145,0x2945,0x2945,0x2945,0x2165,0x2165,0x2966,0x2124,0x1904,0x2125,0x2125,0x2945,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2965,0x2144,0x2965,0x2965,0x2165,0x1924,0x1904,0x2145,0x2144,0x2965,0x2986,0x2124,0x2965,0x2145,0x2125,0x2125,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2945,0x18c3,0x18e3,0x18e3,0x2104,0x1903,0x1904,0x2124,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x1903,0x2124,0x2124,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x18e3,0x1903,0x2104,0x2124,0x1903,0x2124,0x2124,0x10c3,0x10c3,0x18e3,0x2104, +0x1904,0x18e3,0x18e3,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x1904,0x2145,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2125,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2145,0x2125,0x2145,0x2145,0x2144,0x2124,0x2165,0x2965,0x2124,0x2124,0x2124,0x2144,0x2145,0x2125,0x2986,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2145,0x2985,0x2965,0x2986,0x2145,0x2965,0x31a6,0x2945,0x2125,0x2145,0x2945,0x2945,0x2125,0x2966,0x3186,0x2966,0x2945,0x2986,0x2986,0x31a6,0x31a6,0x2966,0x2965,0x2145,0x2966,0x2965,0x2165,0x2124,0x2144,0x2966,0x2966,0x2965,0x31a6,0x2985,0x2165,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x2966,0x2986,0x31c7,0x2986,0x2966,0x2986,0x31a6,0x2966,0x4228,0x39e7,0x2965,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x18c2,0x18a2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x2124,0x21e6,0x2165,0x2145,0x2185,0x2165,0x21c6,0x21c6,0x21a5,0x21c6,0x29a6,0x2165,0x2164,0x1944,0x20e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2104,0x18e3,0x18c2,0x0861,0x1082,0x18c3,0x5aa4,0x6b44,0x4223,0x6324,0x6b24,0x7bc5,0x6304,0x7b63,0x7ba4,0x62c3,0x83e3,0x62c3,0x83c3,0x5a82,0x2103,0x18e3,0x2103,0x18c2,0x18c3,0x18c3,0x2124,0x18c3,0x18e3,0x0841,0x18e3,0x2124,0x5985,0x6185,0x6185,0x6185,0x7185,0x4165,0x5165,0x7185,0x5985,0x79e6,0x59c6,0x4986,0x6985,0x2903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6164,0x3186,0x2986,0x2966,0x2966,0x3186,0x2966,0x2966,0x31a6,0x2986,0x2986,0x29a6,0x2966,0x2145,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x2945,0x2965,0x2965,0x2925,0x2124,0x2945,0x2945,0x31a6,0x2145,0x2125,0x2986,0x39c7,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x3186,0x2965,0x2145,0x2965,0x3186,0x2985,0x2986,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2145,0x2986,0x2144,0x2124,0x2124,0x2965,0x2145,0x2125,0x2125,0x2125,0x2965,0x2124,0x2145,0x2945,0x2965,0x2124,0x2965,0x2985,0x1904,0x2104,0x18e4,0x2945,0x2945,0x18e3,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x1904,0x1904,0x1903,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x1903,0x1904,0x2145,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x2104,0x2104, +0x1903,0x1903,0x1903,0x2104,0x2104,0x2124,0x18e3,0x1904,0x1903,0x1904,0x18e3,0x1904,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x2965,0x2986,0x2125,0x2965,0x2124,0x2145,0x2124,0x2124,0x2145,0x2965,0x2124,0x2124,0x2985,0x2965,0x2125,0x2966,0x2986,0x2104,0x2945,0x2965,0x3186,0x3186,0x2965,0x2124,0x2966,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2966,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2966,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2145,0x2966,0x2986,0x2966,0x2966,0x2966,0x2145,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x31a6,0x2986,0x2985,0x2145,0x2965,0x29a6,0x2145,0x2966,0x3186,0x2986,0x3186,0x2965,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x2986,0x2966,0x31a6,0x31e7,0x31a6,0x2985,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1924,0x2165,0x2124,0x2104,0x1924,0x2124,0x2145,0x2144,0x2144,0x2145,0x2145,0x2145,0x2144,0x1904,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18c2,0x0861,0x10a2,0x18e3,0x39c4,0x4204,0x2944,0x4225,0x4204,0x4a65,0x4204,0x6304,0x5ac4,0x4224,0x6304,0x4203,0x4a64,0x5263,0x2923,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x2124,0x18e3,0x18c3,0x0841,0x18e3,0x2124,0x4165,0x4165,0x4965,0x4145,0x5985,0x4145,0x4965,0x6185,0x4165,0x59a6,0x51a6,0x3986,0x5185,0x20e3,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x6164,0x2986,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2125,0x2945,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2945,0x2145,0x2965,0x31c6,0x2945,0x31c7,0x31c6,0x2985,0x2965,0x2144,0x2965,0x2965,0x2985,0x2945,0x2124,0x2104,0x2965,0x2945,0x2945,0x2965,0x2124,0x2124,0x2144,0x2124,0x2965,0x2125,0x2945,0x2966,0x2124,0x3186,0x2945,0x2145,0x2945,0x2985,0x2945,0x2145,0x2144,0x2124,0x2985,0x2145,0x2145,0x2124,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2145,0x2124,0x1903,0x2124,0x2145,0x2124,0x2965,0x2965,0x2124,0x2125,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2986,0x2124,0x1903,0x1904,0x1924,0x2165,0x1924,0x1924,0x2144,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x2104,0x20e4, +0x18e3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x1903,0x2124,0x1903,0x1904,0x1903,0x18e3,0x1904,0x1904,0x1903,0x1904,0x1904,0x1904,0x2125,0x1904,0x1904,0x2104,0x1904,0x18e3,0x1904,0x2124,0x2125,0x2965,0x2125,0x2124,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2945,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2124,0x2965,0x31a6,0x2945,0x2104,0x2145,0x2145,0x2124,0x2124,0x2965,0x2945,0x2966,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2125,0x2965,0x2986,0x2966,0x2965,0x31a6,0x2145,0x2125,0x31a6,0x31c7,0x2986,0x2986,0x2124,0x2965,0x2965,0x2145,0x29a6,0x31c7,0x2165,0x2145,0x2165,0x29a6,0x29a6,0x2965,0x2985,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x31a7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2145,0x2986,0x31a7,0x31a6,0x2986,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2125,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x20e3,0x2944,0x2965,0x2944,0x2965,0x2944,0x2964,0x2944,0x31a4,0x3184,0x2964,0x3184,0x2944,0x2944,0x2943,0x2103,0x2103,0x18e3,0x18c2,0x18c3,0x18c3,0x2144,0x2104,0x18c3,0x0841,0x18e3,0x2124,0x3145,0x2945,0x2945,0x2924,0x3145,0x2925,0x3145,0x3145,0x2924,0x3145,0x3185,0x3165,0x3165,0x20e3,0x2103,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2965,0x2986,0x2966,0x2986,0x2985,0x2985,0x2965,0x2986,0x2965,0x2124,0x2945,0x3186,0x3186,0x2966,0x2125,0x3186,0x3186,0x31c6,0x31c6,0x29a6,0x2985,0x2985,0x2124,0x2965,0x2986,0x31a6,0x2124,0x2945,0x2145,0x2165,0x2165,0x2124,0x2986,0x2985,0x2124,0x2945,0x2965,0x2965,0x2966,0x2966,0x2125,0x2986,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2144,0x1904,0x2104,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x2124,0x2965,0x2145,0x2104,0x2124,0x2124,0x2124,0x2124,0x1903,0x2124,0x1904,0x2124,0x2945,0x2144,0x2104,0x2104,0x2124,0x2145,0x1924,0x2124,0x2145,0x2124,0x1904,0x1904,0x2124,0x2124,0x1924,0x2124,0x1904,0x1904,0x18e4,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x18e3,0x2144,0x2945,0x18e3, +0x1903,0x1904,0x2104,0x1903,0x2104,0x2104,0x1904,0x1903,0x1903,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x1903,0x18e3,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x2124,0x2125,0x2124,0x2965,0x2145,0x2124,0x2144,0x2965,0x2985,0x2124,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2144,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2986,0x2145,0x2145,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2165,0x2165,0x2985,0x2986,0x2965,0x2945,0x2945,0x2945,0x3186,0x3186,0x29a6,0x2986,0x2965,0x31a7,0x2966,0x2986,0x31a6,0x2985,0x2986,0x2945,0x2945,0x2966,0x2165,0x2165,0x2966,0x2966,0x2966,0x2986,0x31c7,0x31c6,0x29a6,0x2965,0x3186,0x2966,0x31a7,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2985,0x2965,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x1082,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1061,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2944,0x2124,0x18e3,0x2103,0x18e3,0x10a2,0x10a2,0x18a2,0x18c3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x2103,0x2944,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2103,0x18e3,0x18c2,0x18c3,0x18c2,0x2944,0x18e3,0x20e3,0x0841,0x18c3,0x2124,0x2944,0x2965,0x2965,0x2944,0x2945,0x2925,0x2924,0x2124,0x2124,0x2945,0x2945,0x2965,0x2965,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x3186,0x2965,0x2965,0x2986,0x2145,0x31a6,0x29a6,0x31c6,0x31c7,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2986,0x29a6,0x29a6,0x2165,0x29a6,0x2185,0x2144,0x29a6,0x2986,0x2945,0x2965,0x2145,0x2945,0x2945,0x2165,0x2165,0x2145,0x2165,0x2144,0x2986,0x2965,0x2104,0x2925,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2145,0x2986,0x2965,0x2965,0x2124,0x2985,0x2945,0x2124,0x2965,0x2124,0x1924,0x2124,0x2145,0x2965,0x2124,0x2165,0x2145,0x2124,0x2145,0x2124,0x2965,0x2104,0x2124,0x2104,0x2945,0x2145,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e4,0x2104,0x2145,0x1904,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2125,0x2125,0x2104,0x18e3,0x1903,0x2124,0x2104,0x2104,0x2124,0x2104,0x18e3, +0x2104,0x2104,0x2124,0x2104,0x2104,0x1903,0x2104,0x2124,0x1904,0x1904,0x1903,0x18e3,0x18e3,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2145,0x31a6,0x2125,0x2145,0x2145,0x2124,0x2104,0x2104,0x1904,0x2104,0x1904,0x2104,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2124,0x2945,0x2945,0x2125,0x2125,0x2965,0x2965,0x2945,0x2125,0x2945,0x2986,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2145,0x2966,0x2965,0x2165,0x2985,0x2985,0x2944,0x2965,0x2965,0x2965,0x3186,0x39c7,0x2966,0x29a6,0x29a6,0x2966,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x2124,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2986,0x2986,0x31c7,0x31e7,0x31a6,0x2986,0x31a6,0x2966,0x31a7,0x2986,0x2966,0x2145,0x2986,0x31e7,0x31c7,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x2965,0x31a6,0x31e7,0x29a6,0x31a6,0x2966,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x18c3,0x18c3,0x0861,0x0861,0x10a2,0x2103,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x2104,0x2103,0x2103,0x2124,0x2124,0x2103,0x2104,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x2124,0x18c3,0x20e3,0x0841,0x10a2,0x2104,0x2124,0x2945,0x2944,0x2124,0x2124,0x2924,0x2924,0x2124,0x2124,0x2924,0x2945,0x2965,0x2965,0x2124,0x2124,0x2924,0x2104,0x10a2,0x10a2,0x18e3,0x18e3,0x20e3,0x18c3,0x18c2,0x18c3,0x18c3,0x2903,0x5164,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2165,0x2986,0x2986,0x2965,0x2965,0x31a7,0x2145,0x2986,0x31a6,0x2145,0x2985,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2144,0x2165,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2985,0x2144,0x2144,0x2145,0x2145,0x2145,0x2965,0x2124,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2985,0x2965,0x2965,0x2944,0x2145,0x2145,0x2124,0x2145,0x2945,0x2145,0x2145,0x29a6,0x2985,0x2165,0x2145,0x2125,0x2945,0x2945,0x2125,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x1904,0x2124,0x2124,0x2125,0x2125,0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1924,0x1904,0x2125,0x2925,0x1904,0x2104,0x2124,0x2104,0x18e4,0x1904,0x2145,0x2125,0x1904, +0x18e3,0x1904,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x1904,0x1924,0x1924,0x1903,0x18e3,0x1904,0x2145,0x1904,0x18e3,0x2144,0x2124,0x2125,0x1904,0x1924,0x2145,0x2965,0x2145,0x2965,0x2124,0x2124,0x1903,0x2124,0x2104,0x2124,0x2145,0x2145,0x1904,0x2124,0x2144,0x2965,0x39e7,0x2985,0x2165,0x2145,0x2144,0x2145,0x2124,0x2104,0x2124,0x2945,0x2945,0x2966,0x31a7,0x2145,0x2125,0x2145,0x2165,0x2965,0x31a6,0x2986,0x31c7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2144,0x31a6,0x31a6,0x2965,0x3186,0x2986,0x3186,0x31a7,0x2966,0x2965,0x2965,0x2165,0x2145,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2986,0x2966,0x2945,0x2966,0x2966,0x2965,0x2986,0x31e7,0x39e7,0x4248,0x31c6,0x3186,0x2966,0x2965,0x2945,0x2966,0x2986,0x2986,0x31e7,0x29a6,0x2965,0x31a6,0x3186,0x2965,0x39e7,0x3186,0x2986,0x29a6,0x31c7,0x3a08,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x2104,0x18c3,0x18c3,0x0861,0x0841,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x18c3,0x18c3,0x0841,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18a2,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x2966,0x2945,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x2124,0x3165,0x2965,0x2965,0x2965,0x2125,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2945,0x2965,0x2965,0x2144,0x2144,0x2165,0x2145,0x2965,0x2985,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x2945,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2985,0x2144,0x1945,0x2165,0x2145,0x2145,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2145,0x2165,0x2165,0x2145,0x2145,0x2124,0x2965,0x1904,0x2145,0x2985,0x1904,0x2125,0x2104,0x2125,0x2966,0x2145,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x2104,0x2144,0x2124,0x1904,0x18e3,0x1903,0x1924,0x1924,0x1904,0x2945,0x2945,0x2104,0x2125,0x2125,0x2104,0x2104,0x18e3,0x1904,0x1904,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x18e3,0x18e3,0x2104,0x2125,0x2124,0x1924,0x2124,0x1904,0x2145,0x2145,0x1904,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2145,0x2144,0x2124,0x2124,0x2965,0x2965,0x2144,0x2144,0x2124,0x2104,0x2124,0x2965,0x2986,0x2144,0x2986,0x2965,0x2145,0x2145,0x2965,0x2165,0x2965,0x2965,0x29a6,0x2145,0x2125,0x2986,0x2985,0x2965,0x2986,0x2145,0x2985,0x2965,0x2124,0x2986,0x2986,0x2986,0x3186,0x2965,0x2945,0x2966,0x2986,0x2966,0x2986,0x2985,0x2145,0x2945,0x2145,0x2965,0x3186,0x3186,0x2985,0x3186,0x3186,0x2986,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x31c7,0x31a6,0x3186,0x2986,0x39c7,0x3186,0x2965,0x2986,0x2145,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31a6,0x2966,0x39e8,0x39c7,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a2,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18a3,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2985,0x31c7,0x2124,0x2965,0x2986,0x2945,0x3186,0x3186,0x2945,0x2124,0x2965,0x2985,0x2986,0x2965,0x31c6,0x2985,0x2985,0x2985,0x2985,0x2986,0x2145,0x2986,0x2965,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2165,0x2986,0x2124,0x2965,0x2945,0x2965,0x2124,0x2945,0x2144,0x2125,0x2145,0x2145,0x2965,0x3186,0x2144,0x2985,0x31a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2145,0x2124,0x2124,0x2145,0x2125,0x2125,0x2145,0x2125,0x2124,0x2145,0x1904,0x1924,0x1924,0x2124,0x2945,0x2104,0x2145,0x2124,0x2124,0x2125,0x2124,0x1904,0x1904,0x2144,0x2144,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x1904,0x1904,0x2986, +0x1903,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x1904,0x1903,0x1904,0x1904,0x2104,0x2124,0x2144,0x1924,0x1924,0x2124,0x2145,0x2125,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2945,0x2965,0x2124,0x2965,0x2965,0x2965,0x2124,0x2124,0x2145,0x2145,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2145,0x2124,0x2145,0x2165,0x2144,0x2965,0x2965,0x2966,0x3186,0x2965,0x2945,0x2966,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2985,0x2165,0x29a6,0x2965,0x2145,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x3186,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c7,0x2986,0x39c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a6,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x2945,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18c3,0x2104,0x5164,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x2966,0x3186,0x2985,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2145,0x2965,0x2985,0x2945,0x2985,0x2185,0x29a6,0x2985,0x31c7,0x31a6,0x31c7,0x2145,0x2965,0x2986,0x2945,0x2104,0x2124,0x2144,0x2124,0x2144,0x2145,0x2945,0x4208,0x2965,0x2144,0x2965,0x2966,0x2145,0x2124,0x2165,0x2145,0x29a6,0x31c6,0x2145,0x2965,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2124,0x2145,0x3186,0x2124,0x2945,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2945,0x2145,0x18e4,0x2124,0x2124,0x18e4,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145, +0x18e3,0x2124,0x2124,0x18e3,0x1904,0x18e4,0x1904,0x2124,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x2945,0x2965,0x2144,0x2144,0x2145,0x2965,0x2124,0x2124,0x2145,0x2145,0x2945,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2965,0x2124,0x2144,0x2965,0x2965,0x2985,0x2185,0x2125,0x2945,0x2986,0x2966,0x2125,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x3186,0x2986,0x2986,0x2945,0x2145,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2966,0x31a6,0x2986,0x31a7,0x2966,0x2165,0x2965,0x2966,0x2986,0x31a6,0x3186,0x39c7,0x2966,0x3186,0x31c7,0x31a7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x2104,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18e3,0x2965,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18a3,0x2103,0x4964,0x31c6,0x2965,0x2986,0x2985,0x2965,0x2945,0x2966,0x3186,0x3186,0x31a6,0x31c7,0x2945,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2965,0x2965,0x2144,0x2145,0x2965,0x2985,0x2986,0x2986,0x2145,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2945,0x2124,0x2145,0x2965,0x2145,0x2145,0x2124,0x2145,0x3186,0x2145,0x2145,0x2145,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2124,0x2145,0x2965,0x2965,0x2965,0x2945,0x2144,0x2945,0x2124,0x2965,0x2965,0x2965,0x2965,0x2124,0x2145,0x2986,0x2986,0x2124,0x2945,0x2144,0x2145,0x2145,0x2125,0x2124,0x18e4,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2986,0x2104,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2124,0x2145,0x2125,0x2945,0x2145,0x2124,0x2104, +0x2104,0x1903,0x1903,0x1904,0x1904,0x18e4,0x2104,0x2145,0x2104,0x18e3,0x1904,0x1904,0x2145,0x2124,0x1904,0x2124,0x2124,0x1904,0x2145,0x2945,0x2104,0x2124,0x2125,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2985,0x2985,0x2985,0x31e7,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2145,0x2145,0x2965,0x2965,0x2986,0x31c7,0x31a6,0x2966,0x31a6,0x29a6,0x2986,0x2966,0x2965,0x2965,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2945,0x2986,0x3186,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x31a7,0x3186,0x2965,0x3186,0x39c7,0x31a7,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18a3,0x10a2,0x18a2,0x2945,0x2945,0x18c3,0x18e3,0x10a2,0x18c2,0x18a2,0x20e3,0x4944,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2985,0x3186,0x2986,0x2986,0x2985,0x2145,0x2165,0x2965,0x29a6,0x2145,0x2145,0x2986,0x2986,0x2965,0x2966,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2144,0x2965,0x2965,0x2965,0x2945,0x2986,0x3186,0x3186,0x2965,0x2985,0x2945,0x2965,0x2945,0x2985,0x2965,0x2145,0x2145,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2985,0x2965,0x2144,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x31a6,0x2145,0x2986,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2945,0x2124,0x2125,0x2966,0x2145,0x2125,0x1904,0x2124,0x2125,0x2986,0x2124,0x2124,0x2165,0x2145,0x2145,0x2165,0x2124,0x2124,0x1904,0x2104,0x2124,0x2125,0x2145,0x2125,0x2124,0x2125,0x2104,0x1904,0x2125,0x2145,0x2124,0x1903,0x2124, +0x1904,0x1904,0x1903,0x1904,0x1903,0x1904,0x2124,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2144,0x2945,0x2145,0x2124,0x2145,0x2124,0x2124,0x1904,0x1904,0x2145,0x2144,0x2145,0x2124,0x2965,0x2145,0x2124,0x2124,0x2145,0x2165,0x2165,0x2145,0x1924,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2125,0x2965,0x2965,0x2965,0x3a08,0x31c7,0x2145,0x2145,0x2985,0x2985,0x2986,0x2986,0x2945,0x2945,0x2965,0x3186,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x2966,0x2125,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x2965,0x2966,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2986,0x2966,0x2965,0x3186,0x39c7,0x3186,0x2966,0x2986,0x2986,0x2986,0x3186,0x39c7,0x31a7,0x3186,0x39e7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2104,0x10c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2966,0x18e3,0x18c3,0x10a2,0x18c2,0x18c2,0x20e3,0x4964,0x31a6,0x2965,0x31a6,0x2986,0x2966,0x2986,0x2965,0x2945,0x2965,0x2945,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x2965,0x2966,0x2986,0x2965,0x2145,0x2965,0x2945,0x2965,0x2145,0x2945,0x2965,0x3186,0x2945,0x3186,0x3186,0x2945,0x2965,0x2144,0x2124,0x2124,0x2945,0x2986,0x2965,0x2144,0x2965,0x2965,0x2985,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2986,0x2965,0x2124,0x2965,0x2986,0x31a6,0x2965,0x3186,0x31a6,0x2145,0x2965,0x2965,0x2965,0x2945,0x2945,0x2985,0x2965,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1904,0x2104,0x2125,0x2124,0x2104,0x1904,0x2124,0x2145,0x2104,0x2125,0x2124,0x18e4,0x1904,0x2145,0x2124,0x2125,0x2125,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2124, +0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2125,0x2124,0x1924,0x2124,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2144,0x2144,0x2144,0x2965,0x2965,0x2145,0x2165,0x2145,0x2124,0x2124,0x2145,0x2124,0x2965,0x2145,0x2965,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2145,0x2145,0x1924,0x2144,0x2145,0x2144,0x2965,0x2145,0x2125,0x2145,0x2145,0x2966,0x2965,0x2124,0x3186,0x31a6,0x2986,0x2986,0x2165,0x2144,0x2965,0x2965,0x2145,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2145,0x2966,0x2966,0x2966,0x2965,0x2165,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x3186,0x39e7,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x39e7,0x2985,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x31a6,0x31c7,0x2965,0x3186,0x3a08,0x31e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x18a3,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x2104,0x2925,0x18c3,0x10a2,0x18c2,0x18c3,0x20e3,0x4964,0x31a6,0x2985,0x31c7,0x2986,0x2966,0x2986,0x2966,0x2965,0x2965,0x2144,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2965,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2966,0x2145,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2945,0x2965,0x2945,0x2965,0x2144,0x2144,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2144,0x2965,0x2965,0x2986,0x2145,0x2986,0x2986,0x2945,0x2144,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x2965,0x2145,0x2945,0x2965,0x2945,0x39a7,0x2966,0x2124,0x2145,0x2965,0x2965,0x2965,0x2144,0x2945,0x2124,0x2124,0x2124,0x2145,0x2124,0x2945,0x2125,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2945,0x2104,0x1904,0x2124,0x2125,0x2124,0x18e4,0x2124,0x2125,0x2124,0x1904,0x2104,0x2124,0x2124,0x2124,0x2104, +0x1904,0x18e3,0x1903,0x1904,0x1903,0x1903,0x18e4,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2104,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2145,0x2124,0x2144,0x2965,0x2145,0x2124,0x2104,0x2145,0x2145,0x2124,0x2145,0x2986,0x2986,0x2986,0x2145,0x2124,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2985,0x2965,0x2124,0x2145,0x2965,0x2145,0x2965,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x2986,0x31c7,0x2986,0x31a7,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2165,0x29a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2986,0x29a6,0x31c7,0x2986,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2124,0x2104,0x2124,0x2945,0x2965,0x2124,0x2124,0x2924,0x2124,0x2124,0x2125,0x2945,0x2124,0x2104,0x2104,0x2124,0x2125,0x2125,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x20e3,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2945,0x20e3,0x10a2,0x18a3,0x18c3,0x20e3,0x4964,0x2986,0x2985,0x2966,0x2965,0x2986,0x2966,0x31a7,0x2986,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x31a7,0x31a7,0x2965,0x2965,0x2986,0x2945,0x2145,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2144,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2965,0x2145,0x2144,0x2124,0x2965,0x2145,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2125,0x2124,0x2124,0x2945,0x2125,0x2945,0x2125,0x2104,0x2104,0x1904,0x2124,0x2124,0x2104,0x1904,0x2124,0x2125,0x2145,0x1904,0x1904,0x2125,0x1904,0x2124,0x1903,0x2124, +0x2104,0x2104,0x2104,0x1924,0x1924,0x1924,0x2104,0x18e3,0x18e4,0x1904,0x18e3,0x1904,0x1904,0x2124,0x2124,0x2124,0x2144,0x2944,0x2145,0x2124,0x2125,0x2145,0x2965,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2965,0x2965,0x2144,0x2124,0x2965,0x2965,0x2945,0x2125,0x2945,0x2945,0x2965,0x2965,0x2145,0x2986,0x2986,0x2966,0x2986,0x2145,0x2965,0x2985,0x2144,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2966,0x31a7,0x31a6,0x2965,0x3186,0x2945,0x2965,0x3186,0x2965,0x2985,0x2965,0x2945,0x31a6,0x2985,0x2165,0x2965,0x2965,0x2965,0x2985,0x2145,0x2145,0x2985,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x2966,0x2965,0x2145,0x39e7,0x31a7,0x2966,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x1903,0x2104,0x2124,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2945,0x2104,0x2124,0x2924,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e3,0x2103,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2944,0x2945,0x2925,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2925,0x2945,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x10a2,0x18c3,0x18a3,0x20e3,0x4165,0x2965,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3166,0x2966,0x2966,0x2965,0x2145,0x2145,0x2965,0x2145,0x2986,0x2986,0x2965,0x3185,0x2965,0x2145,0x2945,0x2985,0x31a6,0x3186,0x2965,0x2986,0x2966,0x2965,0x2985,0x2145,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2985,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x31a6,0x2985,0x3186,0x2986,0x2124,0x2965,0x2965,0x2144,0x2124,0x2145,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2144,0x2125,0x2965,0x2104,0x2124,0x2145,0x2104,0x2125,0x2104,0x2124,0x2145,0x2945,0x2986,0x2124,0x2104,0x1904,0x2145,0x2124,0x2124,0x1904,0x1904,0x2104,0x2125,0x2124,0x1924,0x2124, +0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x20e4,0x20e4,0x2104,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2125,0x2945,0x2124,0x2124,0x2125,0x2125,0x2145,0x2145,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2986,0x2145,0x2145,0x2965,0x2144,0x2124,0x2965,0x3186,0x2124,0x2965,0x2145,0x2124,0x2966,0x31c7,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2985,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2986,0x2985,0x2985,0x2985,0x2965,0x2145,0x2986,0x2965,0x2145,0x2985,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x31c7,0x3186,0x2966,0x31a7,0x3186,0x31a7,0x31a7,0x31a6,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x39e7,0x39c7,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x2103,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18a2,0x10a2,0x18c3,0x18a3,0x20e3,0x4144,0x3186,0x3186,0x2966,0x2945,0x2965,0x2145,0x2965,0x2966,0x2966,0x2986,0x2165,0x2145,0x2965,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x3186,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2145,0x2965,0x2965,0x2966,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x2145,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2985,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2965,0x2145,0x2145,0x2965,0x2145,0x2124,0x2945,0x2965,0x2986,0x2145,0x2145,0x2965,0x3186,0x2965,0x3186,0x2145,0x2124,0x2145,0x2124,0x2145,0x2124,0x2124,0x2945,0x2145,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2125,0x2125,0x1904,0x2124,0x2145,0x2145,0x2124,0x2945,0x2945,0x31c6,0x2945,0x2124,0x1904,0x2124,0x2145,0x2124,0x2145,0x2124,0x2104,0x2145,0x2124,0x1924,0x2144, +0x2104,0x1904,0x2104,0x1903,0x2104,0x2125,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1904,0x2104,0x2125,0x2125,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2125,0x2145,0x2124,0x2124,0x2124,0x2924,0x2945,0x2145,0x2124,0x2144,0x2144,0x2145,0x2124,0x2145,0x2145,0x2124,0x2945,0x2145,0x2165,0x2144,0x2124,0x2965,0x2965,0x2945,0x2124,0x2144,0x2144,0x2124,0x2965,0x3186,0x2145,0x2985,0x2965,0x2965,0x2966,0x2985,0x2165,0x2165,0x2966,0x2966,0x2945,0x2125,0x2965,0x2965,0x31a6,0x39c6,0x39c6,0x3186,0x29a6,0x2986,0x2965,0x2965,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2985,0x29a6,0x3186,0x31a6,0x29a6,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x31a7,0x2966,0x31a6,0x31c7,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x18a2,0x18a3,0x20e3,0x3944,0x2966,0x2145,0x2986,0x2966,0x2966,0x2145,0x2966,0x2986,0x2145,0x2165,0x2965,0x2986,0x2985,0x2965,0x29a6,0x2985,0x2985,0x29a6,0x2145,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x31a6,0x2145,0x3186,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2985,0x2145,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31c6,0x2986,0x2965,0x2945,0x2145,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2145,0x2945,0x2985,0x2945,0x2144,0x2145,0x2145,0x2965,0x2966,0x2986,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2145,0x2124,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2124,0x2125,0x2104,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x1904,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x18e3,0x1904,0x1903,0x1924, +0x2144,0x2104,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2124,0x2144,0x2124,0x18e4,0x2104,0x2124,0x2945,0x2144,0x2965,0x2965,0x2145,0x2144,0x2125,0x2104,0x2125,0x2925,0x2945,0x2945,0x2945,0x2965,0x2965,0x2145,0x2945,0x2945,0x2945,0x2145,0x2945,0x31a6,0x2165,0x1924,0x2144,0x2944,0x2985,0x2965,0x2145,0x2145,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2965,0x3186,0x2965,0x2965,0x3186,0x2985,0x2165,0x2985,0x2165,0x2165,0x2145,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x2986,0x2965,0x39c7,0x39c7,0x2965,0x2985,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2966,0x3186,0x39c7,0x39e7,0x31a6,0x3186,0x31a7,0x31c7,0x31a6,0x31a6,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2924,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3944,0x2986,0x2965,0x2145,0x2186,0x2986,0x2186,0x2186,0x2986,0x29a6,0x2165,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2965,0x2965,0x2945,0x2986,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2165,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2965,0x2145,0x2965,0x2986,0x2185,0x2165,0x2965,0x2965,0x2986,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2965,0x2986,0x2145,0x2986,0x2965,0x2145,0x2986,0x2985,0x2165,0x2145,0x2965,0x2145,0x2965,0x2965,0x2145,0x2965,0x2124,0x2145,0x2965,0x2124,0x2945,0x2965,0x2104,0x2965,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2965,0x2104,0x2145,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x2104,0x18e4, +0x2144,0x2145,0x2124,0x18e3,0x1904,0x2104,0x2104,0x2104,0x1904,0x1903,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2945,0x2965,0x2104,0x2144,0x2145,0x2144,0x2145,0x2945,0x2124,0x2124,0x2124,0x2945,0x2145,0x2125,0x2145,0x2945,0x2945,0x2965,0x2125,0x2125,0x2966,0x2145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2985,0x2165,0x1924,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2966,0x2966,0x2145,0x2145,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2165,0x2986,0x29a6,0x31a6,0x2986,0x2145,0x2986,0x2965,0x3186,0x2965,0x2985,0x2986,0x3186,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x3186,0x2965,0x2965,0x2965,0x31a6,0x2986,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3166,0x31a6,0x31a6,0x39a6,0x39c6,0x39c7,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x3166,0x2925,0x2924,0x2925,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3924,0x2966,0x2986,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2966,0x2965,0x2145,0x31a6,0x2965,0x31a6,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2966,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2945,0x2965,0x31c6,0x3186,0x3186,0x2965,0x2965,0x2145,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2165,0x2986,0x2986,0x2965,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2165,0x2965,0x2965,0x2985,0x2986,0x2965,0x2144,0x2965,0x2144,0x2965,0x2985,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2965,0x2965,0x2124,0x2124,0x2104,0x2945,0x2965,0x2145,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2145,0x1903,0x2124,0x2124,0x1924,0x2145,0x2125,0x2104,0x2104, +0x2104,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145,0x2124,0x2145,0x1904,0x2124,0x2125,0x2125,0x2945,0x2945,0x2124,0x2965,0x2144,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2965,0x2966,0x2125,0x2145,0x2945,0x2925,0x2125,0x2965,0x2945,0x2945,0x2966,0x2986,0x2965,0x2145,0x2966,0x2985,0x2145,0x2145,0x2145,0x2965,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x2144,0x2945,0x2966,0x3186,0x3186,0x2966,0x2986,0x2965,0x2986,0x3186,0x3186,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2165,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2965,0x3186,0x2965,0x2945,0x2985,0x3186,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c7,0x31c7,0x31c6,0x31c6,0x3a07,0x39e7,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2945,0x2945,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x3186,0x3165,0x2925,0x18e4,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x3124,0x2966,0x39e7,0x31a6,0x2965,0x3186,0x2965,0x2986,0x3186,0x2965,0x2986,0x3186,0x2144,0x2965,0x31c7,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x3186,0x2965,0x3186,0x31a6,0x2985,0x3186,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x39e7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2125,0x2965,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x3186,0x2945,0x2145,0x2986,0x2965,0x2945,0x2145,0x2985,0x3186,0x3186,0x31a6,0x2124,0x31a6,0x2965,0x2124,0x2124,0x2965,0x2965,0x1924,0x2165,0x2165,0x2945,0x2145,0x2145,0x2124,0x2104,0x2145,0x2124,0x2124,0x2945,0x2144,0x1903,0x2124,0x2124,0x2124,0x2145,0x2104,0x2104,0x2104, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2125,0x2945,0x2145,0x2124,0x2124,0x1904,0x2124,0x2125,0x2945,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2985,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2125,0x2945,0x2125,0x2145,0x2165,0x2145,0x2165,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2965,0x2985,0x2965,0x3186,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2165,0x2945,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2965,0x2986,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2966,0x2966,0x2985,0x2165,0x2986,0x31a6,0x39c7,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x39e7,0x39e7,0x31a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x18a3,0x2124,0x2965,0x3186,0x3186,0x3186,0x2965,0x2944,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2145,0x2986,0x31a6,0x31c6,0x39c6,0x31a6,0x3186,0x20e4,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x3944,0x3186,0x3186,0x3166,0x3186,0x3186,0x2145,0x2966,0x3186,0x3186,0x2965,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x3186,0x3186,0x2986,0x2985,0x2145,0x2986,0x31c6,0x2965,0x2986,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2945,0x2144,0x2965,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2145,0x2145,0x2945,0x2965,0x2986,0x2165,0x2965,0x31a6,0x2986,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2945,0x2966,0x3186,0x2945,0x2125,0x2966,0x2985,0x2145,0x2965,0x2965,0x2145,0x2945,0x2965,0x2945,0x2965,0x2145,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x2965,0x2945,0x2104,0x2124,0x2124,0x2104,0x2104,0x2965,0x2986,0x2144,0x1904,0x1904,0x2124,0x1904,0x1904,0x2145,0x2145,0x2124,0x2124, +0x2104,0x2945,0x2945,0x2125,0x1904,0x2104,0x2104,0x2124,0x2124,0x2104,0x2965,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2965,0x2144,0x2965,0x2965,0x2125,0x2165,0x2145,0x2124,0x2124,0x2945,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2144,0x2145,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x3186,0x2985,0x2965,0x3186,0x2965,0x2145,0x2145,0x2145,0x2145,0x2945,0x2945,0x2986,0x2965,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2985,0x2986,0x2985,0x31a6,0x39e7,0x2965,0x2986,0x2965,0x2986,0x31c7,0x31a6,0x2965,0x2144,0x2165,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2986,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x18c3,0x2944,0x2965,0x3186,0x3185,0x2965,0x2104,0x18c3,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10c2,0x1903,0x2944,0x31a6,0x31a6,0x39c6,0x3185,0x18a3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x3124,0x31a6,0x2965,0x2965,0x2966,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2945,0x3186,0x39e7,0x31c6,0x2965,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2165,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2145,0x2125,0x2145,0x2965,0x2145,0x2165,0x2965,0x3186,0x31a7,0x2966,0x2945,0x2945,0x2986,0x2986,0x2145,0x2986,0x2985,0x2985,0x2985,0x2965,0x29a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2165,0x2965,0x2165,0x2145,0x2145,0x2965,0x2945,0x2144,0x2945,0x2144,0x2965,0x2124,0x2124,0x2945,0x2104,0x2124,0x1903,0x2124,0x2145,0x1904,0x2124,0x2124,0x2124,0x2144,0x1904,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x2124, +0x2124,0x1904,0x2104,0x2145,0x1904,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2125,0x2145,0x2104,0x2124,0x2125,0x2124,0x2945,0x2145,0x2145,0x2965,0x2144,0x2124,0x2145,0x2124,0x2125,0x2165,0x2145,0x2124,0x2945,0x2945,0x2945,0x2145,0x2124,0x2144,0x2965,0x2986,0x2965,0x2124,0x2986,0x2986,0x2965,0x2945,0x2945,0x2124,0x2124,0x2145,0x2165,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2165,0x2185,0x2165,0x2185,0x2985,0x2985,0x2165,0x2945,0x2985,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2965,0x2966,0x3186,0x3186,0x2966,0x3186,0x31c7,0x2986,0x2965,0x2965,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x2986,0x31c7,0x31a7,0x31a7,0x2966,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x1082,0x0861,0x0861,0x0841,0x0861,0x1062,0x18e3,0x2944,0x2965,0x2965,0x2965,0x2104,0x10c2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x10a2,0x2103,0x2965,0x31a6,0x31a6,0x2965,0x2104,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x3124,0x31a6,0x31a6,0x31a7,0x2986,0x3186,0x3186,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2965,0x3186,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2945,0x2985,0x3186,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2986,0x2986,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2965,0x2145,0x2165,0x2965,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2124,0x2145,0x2986,0x2965,0x2145,0x2986,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2124,0x2124,0x2145,0x2144,0x2965,0x2965,0x2124,0x2985,0x2965,0x2145,0x2145,0x2145,0x3186,0x2145,0x2945,0x2965,0x2124,0x2124,0x2144,0x2945,0x2145,0x2144,0x2124,0x2124,0x2144,0x2986,0x2965,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2145,0x2124,0x18e3, +0x1904,0x1904,0x2124,0x2145,0x2124,0x1904,0x2104,0x2104,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2145,0x2145,0x2125,0x1924,0x2145,0x2165,0x2145,0x2145,0x2124,0x2945,0x2965,0x2125,0x2145,0x2986,0x2986,0x2966,0x2124,0x2945,0x2145,0x2124,0x2124,0x2165,0x2965,0x2965,0x2985,0x2145,0x2985,0x2986,0x2965,0x2965,0x2125,0x2965,0x2144,0x2965,0x2165,0x2965,0x2965,0x2965,0x3186,0x3186,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2145,0x2985,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x29a6,0x2986,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x31c6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x3186,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x20e4,0x31a6,0x2945,0x2944,0x2944,0x18e3,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x2124,0x3185,0x3185,0x3165,0x20e3,0x1082,0x0861,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x4185,0x31a6,0x2966,0x39c7,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2145,0x29a6,0x31a6,0x2966,0x3186,0x2965,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x2965,0x2986,0x3186,0x3186,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2985,0x3186,0x2986,0x2965,0x2966,0x2966,0x2965,0x31a6,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2985,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2965,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2966,0x31a7,0x2946,0x2966,0x2966,0x2945,0x2965,0x2145,0x2945,0x2945,0x2945,0x2965,0x2985,0x2945,0x2124,0x2145,0x2165,0x2144,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2945,0x2124,0x2945,0x2965,0x2124,0x2144,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x2104,0x18e4, +0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e4,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2125,0x2145,0x2145,0x1924,0x2165,0x2165,0x2124,0x2144,0x2144,0x2945,0x2965,0x2945,0x31c7,0x31a6,0x2965,0x2945,0x2965,0x2945,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2165,0x1924,0x2145,0x2965,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2124,0x2124,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2986,0x2966,0x2145,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2145,0x2985,0x2985,0x2985,0x3186,0x2965,0x2965,0x2966,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2965,0x2985,0x39e7,0x3186,0x31c6,0x3186,0x2986,0x2986,0x3186,0x2965,0x2985,0x3186,0x2965,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x29a6,0x39e7,0x31a6,0x2965,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x18a2,0x2945,0x31a6,0x2924,0x2124,0x18c3,0x1061,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x20e3,0x2124,0x2124,0x2924,0x2965,0x2945,0x2103,0x18c2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x10a2,0x2124,0x2965,0x2965,0x2945,0x18c3,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51c6,0x31c7,0x29a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31c6,0x2986,0x2965,0x2986,0x31a6,0x2965,0x2986,0x2986,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x2144,0x2985,0x2986,0x2966,0x2966,0x2965,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2966,0x2966,0x2145,0x2946,0x2946,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2144,0x2945,0x2965,0x2945,0x2124,0x2965,0x2945,0x2145,0x3186,0x3186,0x2124,0x2145,0x2124,0x2965,0x2144,0x2144,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2985,0x2986,0x2145,0x2124,0x2145,0x2124,0x2104,0x2104,0x2125,0x1904, +0x2124,0x2145,0x2125,0x1904,0x1904,0x2104,0x2104,0x2124,0x2945,0x2124,0x2145,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2945,0x2945,0x2124,0x2145,0x2145,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2145,0x2945,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2965,0x2144,0x2965,0x2145,0x2124,0x2144,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2965,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2986,0x2965,0x2985,0x2986,0x2986,0x2986,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2966,0x2986,0x3186,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31e7,0x31e7,0x2965,0x2145,0x2104,0x10c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x2104,0x2124,0x2104,0x18c3,0x0861,0x1083,0x3167,0x39a7,0x2124,0x18c3,0x18c3,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x2103,0x18e3,0x10a2,0x10a2,0x18c3,0x18c4,0x1083,0x0861,0x10a2,0x2124,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51a5,0x2145,0x4228,0x39e7,0x3186,0x2986,0x2986,0x29a6,0x31e7,0x2985,0x2986,0x2986,0x2965,0x2945,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2986,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2966,0x39c7,0x31c7,0x2165,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2966,0x31a6,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x2145,0x2165,0x2986,0x2965,0x2945,0x2124,0x3186,0x2945,0x2945,0x2965,0x2945,0x2945,0x2144,0x2965,0x2965,0x3186,0x2966,0x2104,0x2124,0x2144,0x2124,0x2945,0x2945,0x2145,0x2965,0x2124,0x2945,0x2144,0x2104,0x2104,0x2965,0x2145,0x2144,0x2124,0x1904,0x2145,0x2145,0x2104,0x2124, +0x2124,0x2124,0x2124,0x2124,0x1904,0x18e3,0x2104,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x1904,0x2125,0x2965,0x2145,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2985,0x2145,0x2145,0x2144,0x2965,0x2165,0x2986,0x2145,0x2145,0x2965,0x31c7,0x2965,0x2125,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2965,0x2945,0x2945,0x2145,0x2145,0x2145,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2124,0x2986,0x31a6,0x2945,0x2965,0x2986,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2966,0x3186,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x29a6,0x31c6,0x2985,0x3186,0x2966,0x3186,0x2986,0x39e7,0x31a6,0x2165,0x2965,0x2986,0x31a6,0x31a6,0x31c6,0x2966,0x31a6,0x2966,0x2966,0x31a6,0x2124,0x0000,0x0000,0x0000,0x0020,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0861,0x41ca,0x9cb4,0x5249,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2924,0x2924,0x2965,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x2967,0x420a,0x20e5,0x0861,0x10a2,0x2104,0x2924,0x2924,0x2104,0x1082,0x0861,0x0861,0x0861,0x10a2,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x51a5,0x0000,0x1082,0x4208,0x4208,0x3186,0x31a6,0x31c6,0x29a6,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2965,0x2966,0x31c7,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2986,0x2965,0x3186,0x3186,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x3186,0x2965,0x3186,0x2965,0x2985,0x2986,0x2986,0x2986,0x2966,0x31a7,0x2965,0x2985,0x2965,0x2985,0x2986,0x2945,0x3186,0x2966,0x2945,0x2985,0x31a6,0x2986,0x2965,0x2144,0x2145,0x2165,0x2144,0x2145,0x2985,0x2986,0x2144,0x1924,0x2145,0x2165,0x1924,0x2145,0x2145,0x2965,0x2966,0x2125,0x2965,0x2965,0x2965,0x2986,0x2945,0x2124,0x2144,0x2965,0x2945,0x2145,0x2104,0x2124,0x2104,0x2124,0x2965,0x2124,0x2124,0x2965,0x2965,0x2104,0x1903, +0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2144,0x2144,0x2986,0x2965,0x2145,0x2124,0x1904,0x2124,0x2945,0x2145,0x2965,0x2144,0x2145,0x2145,0x2165,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2966,0x2965,0x2965,0x2965,0x2945,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3186,0x2986,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2165,0x2985,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2985,0x29a6,0x2985,0x31a6,0x2985,0x2985,0x2165,0x2165,0x2986,0x2965,0x2985,0x31c6,0x31c6,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2966,0x31c7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x1904,0x0020,0x0861,0x0861,0x0041,0x0841,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x1082,0x52cd,0x94d2,0x3986,0x2945,0x20e3,0x18c3,0x2103,0x2124,0x2104,0x2124,0x2924,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18a3,0x2946,0x8c94,0x6b4e,0x0841,0x0861,0x18c3,0x2104,0x2104,0x2944,0x20e3,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x49c5,0x1082,0x0000,0x3186,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2945,0x3186,0x39e7,0x3186,0x2145,0x2966,0x2986,0x2986,0x2966,0x2945,0x2986,0x2986,0x2966,0x2986,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2165,0x29a6,0x31a6,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x2145,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2965,0x2165,0x2986,0x3186,0x2145,0x31a6,0x31a6,0x2945,0x3186,0x2145,0x2145,0x2986,0x2145,0x2985,0x31c7,0x2965,0x2145,0x2145,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2125,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2124,0x2144,0x2144,0x2124,0x2945,0x2945,0x2125,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904, +0x2104,0x2965,0x2125,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x29a6,0x2165,0x2145,0x2965,0x2965,0x2965,0x2145,0x2945,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x2145,0x2125,0x2945,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2185,0x2165,0x2165,0x2965,0x2125,0x2125,0x2125,0x2145,0x2965,0x2985,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2145,0x2165,0x2165,0x2165,0x2945,0x2986,0x29a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2945,0x2945,0x2966,0x2986,0x3186,0x2986,0x2165,0x2145,0x3186,0x3186,0x2985,0x2986,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x31c7,0x2966,0x2145,0x2966,0x2986,0x2986,0x3186,0x31c7,0x3186,0x3186,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x18e3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x0861,0x18c3,0x3a08,0x39e7,0x4208,0x39c6,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2104,0x2104,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x2945,0x2945,0x636d,0x6bae,0x10a2,0x0841,0x1082,0x18e3,0x18e3,0x39c6,0x39a6,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x18a3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x5288,0x1082,0x1082,0x18a2,0x3186,0x31a6,0x3186,0x3186,0x2986,0x31c7,0x2965,0x31a6,0x31c7,0x31a6,0x2145,0x2986,0x3186,0x31a6,0x2165,0x2965,0x2165,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x2985,0x2985,0x2986,0x2986,0x2965,0x3186,0x2965,0x2966,0x2986,0x2986,0x2985,0x2985,0x2165,0x2965,0x29a6,0x2965,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x3186,0x2966,0x2945,0x2966,0x2966,0x2985,0x31c6,0x2165,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2966,0x3186,0x3166,0x2945,0x2925,0x2125,0x2945,0x2945,0x2124,0x2145,0x2145,0x2965,0x2986,0x2945,0x2965,0x3186,0x2145,0x2124,0x2124,0x2124,0x2125,0x2945,0x2965,0x2144,0x2124,0x2965,0x2104,0x2124,0x2965,0x2965,0x3186,0x1903,0x2124, +0x2124,0x2125,0x2104,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x2124,0x2145,0x2145,0x2145,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2945,0x2145,0x2124,0x2965,0x2145,0x2966,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2165,0x2965,0x2965,0x2145,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2945,0x2945,0x2965,0x2985,0x2965,0x2965,0x2985,0x2185,0x2165,0x2965,0x3186,0x2985,0x2965,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2966,0x2966,0x2966,0x2965,0x2986,0x3186,0x2986,0x2965,0x2986,0x31c7,0x2986,0x2986,0x3186,0x2966,0x2965,0x2965,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x3187,0x2986,0x2986,0x2986,0x2966,0x3186,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x2103,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x0841,0x0861,0x18e3,0x2104,0x18c3,0x31c6,0x2944,0x2965,0x18c3,0x18c3,0x18e3,0x2944,0x2945,0x2924,0x2103,0x18c3,0x10a2,0x18a2,0x20e3,0x2124,0x39e7,0x2124,0x31e8,0x2125,0x0861,0x0861,0x18c2,0x18c2,0x2965,0x3186,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x6b2c,0x10a2,0x10a2,0x18e4,0x39a7,0x2986,0x3186,0x2965,0x2986,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2945,0x29a6,0x31c6,0x2965,0x2985,0x2986,0x31c6,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2986,0x2965,0x2985,0x2986,0x3186,0x2965,0x2965,0x2986,0x2965,0x2986,0x31c6,0x2165,0x2965,0x31a6,0x2945,0x2965,0x2165,0x29a6,0x2966,0x2945,0x2986,0x2986,0x2965,0x2965,0x39c7,0x31a6,0x2965,0x2165,0x2986,0x2986,0x2965,0x2965,0x2986,0x2145,0x2945,0x2966,0x3186,0x2966,0x2965,0x31a6,0x29a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2145,0x2965,0x2986,0x2966,0x2965,0x3186,0x2986,0x2945,0x2965,0x2944,0x2965,0x2965,0x2945,0x2986,0x2965,0x2965,0x2965,0x3186,0x2145,0x2124,0x2124,0x2125,0x2104,0x2965,0x2944,0x2124,0x2145,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124, +0x2124,0x2124,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2104,0x2124,0x1904,0x2124,0x2144,0x2124,0x2124,0x2965,0x2986,0x2124,0x2145,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2985,0x31c7,0x31a6,0x2124,0x2965,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2985,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x2965,0x2965,0x2124,0x39e7,0x3a07,0x2144,0x2965,0x2965,0x2945,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x2985,0x2165,0x2165,0x2965,0x2986,0x31c7,0x2986,0x2986,0x2965,0x2965,0x2986,0x2966,0x31c7,0x3186,0x2986,0x2986,0x2965,0x2945,0x3186,0x2986,0x2966,0x2965,0x2986,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2966,0x2986,0x2965,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x18c3,0x10c2,0x18c2,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x18c3,0x2944,0x2944,0x2124,0x18e3,0x18c3,0x18e3,0x18c3,0x2944,0x1903,0x2124,0x10a2,0x18e4,0x2987,0x1082,0x0841,0x1082,0x10a2,0x18c3,0x20e3,0x18e3,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x630c,0x18e3,0x1082,0x2124,0x39c7,0x2986,0x31c7,0x2165,0x2986,0x3186,0x2965,0x2165,0x2986,0x2966,0x2966,0x3186,0x39e7,0x2985,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x31a6,0x2965,0x31c7,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x29a6,0x2966,0x2965,0x31a6,0x2985,0x2965,0x2985,0x31a6,0x31a7,0x2966,0x2145,0x29a6,0x2965,0x2985,0x31a6,0x2986,0x3186,0x3186,0x2965,0x2945,0x2945,0x2965,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2945,0x2965,0x2965,0x2965,0x2165,0x2145,0x2165,0x2965,0x2965,0x2986,0x2985,0x2945,0x2965,0x2965,0x2985,0x2124,0x2145,0x2985,0x2965,0x31a6,0x2125,0x2124,0x2124,0x2124,0x2945,0x2945,0x2965,0x2945,0x2124,0x2965,0x2145,0x1904,0x2124,0x2124,0x2124,0x2145, +0x2125,0x2124,0x2145,0x2124,0x1903,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x2145,0x2124,0x2145,0x2965,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2985,0x2965,0x2165,0x2145,0x2145,0x2965,0x2966,0x2965,0x2165,0x2145,0x2986,0x2145,0x2965,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2125,0x2986,0x2986,0x2145,0x2986,0x2965,0x2986,0x29a6,0x2165,0x2986,0x29a6,0x3186,0x2985,0x2965,0x2965,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2965,0x2965,0x3186,0x2966,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31e7,0x2986,0x31a6,0x31c6,0x3a07,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x1924,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0841,0x2945,0x39e6,0x10a2,0x1082,0x0861,0x0841,0x0841,0x0861,0x18c3,0x1082,0x18c3,0x1082,0x18e3,0x18e3,0x2124,0x20e3,0x2103,0x20e3,0x2944,0x2104,0x18c3,0x18c3,0x18e3,0x2144,0x18c3,0x18e3,0x1082,0x18c3,0x10a2,0x2986,0x10c3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x4a8a,0x18e3,0x0020,0x18e3,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x2966,0x2986,0x29a6,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2985,0x2985,0x2965,0x2986,0x2165,0x2986,0x2145,0x2145,0x2966,0x2986,0x2965,0x2986,0x2966,0x3186,0x2985,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x2986,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2985,0x2965,0x2966,0x2966,0x2986,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2966,0x2165,0x2965,0x2965,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x2145,0x2985,0x2945,0x2965,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2945,0x3186,0x2945,0x2145,0x2144,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2145,0x2145,0x2165,0x2124,0x2965,0x2965,0x2124,0x2145,0x2144,0x2144,0x2124,0x2104,0x2945,0x2945,0x2124,0x2144,0x2124,0x2124, +0x2145,0x1904,0x1904,0x2104,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2125,0x2145,0x2145,0x2945,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2124,0x2945,0x2965,0x2165,0x2165,0x2165,0x2945,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2966,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2965,0x2986,0x2145,0x31a6,0x2986,0x2145,0x2986,0x2965,0x2986,0x2986,0x2165,0x2165,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2985,0x3186,0x2965,0x2966,0x3186,0x2986,0x3186,0x2986,0x2945,0x2965,0x3186,0x2966,0x3186,0x3186,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x0881,0x0881,0x18e3,0x18c3,0x10c3,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a3,0x39c7,0x4226,0x1082,0x1082,0x0861,0x0841,0x0841,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x2924,0x2104,0x2124,0x3165,0x2944,0x18e3,0x20e3,0x20e3,0x18e3,0x1082,0x10a3,0x1082,0x18c3,0x1082,0x1904,0x10a2,0x0841,0x0861,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x4208,0x10c2,0x0020,0x10c2,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2966,0x2965,0x29a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x31a6,0x2985,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x2965,0x2966,0x2965,0x2986,0x2966,0x2986,0x3186,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x31e7,0x2165,0x2986,0x2965,0x2985,0x31a6,0x3186,0x3186,0x2986,0x2965,0x29a6,0x31a6,0x31a6,0x29a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2145,0x31a6,0x31a6,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x3186,0x3186,0x3186,0x2145,0x2145,0x2986,0x2945,0x2945,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2124,0x31a6,0x3186,0x2945,0x2145,0x2965,0x2124,0x2165,0x2165,0x2125,0x2165,0x2986,0x2144,0x2945,0x2965,0x2104,0x2145,0x2965,0x2124,0x2145,0x2945,0x2145,0x2124,0x1904,0x2124, +0x2124,0x2104,0x2104,0x2104,0x2104,0x2125,0x2124,0x2145,0x2124,0x1904,0x2124,0x2145,0x2125,0x2124,0x2124,0x2145,0x2145,0x2965,0x2145,0x2145,0x2945,0x2965,0x2124,0x2945,0x2144,0x2124,0x2965,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2965,0x2965,0x2145,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x3186,0x2965,0x2165,0x2985,0x2965,0x2965,0x2965,0x29a6,0x31a6,0x2965,0x2144,0x3186,0x31a6,0x2986,0x2965,0x2966,0x2966,0x2145,0x2145,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x2965,0x2986,0x2965,0x2986,0x31c7,0x2966,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2986,0x3186,0x2986,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x3186,0x18c3,0x0841,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x2104,0x2945,0x2104,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x18a2,0x18a2,0x18e3,0x2104,0x2945,0x3185,0x2944,0x2103,0x18c3,0x18e3,0x1082,0x10a2,0x1082,0x1082,0x18c2,0x1082,0x18a2,0x1082,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0841,0x0861,0x0861,0x0861,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x39c7,0x10a2,0x0040,0x10a2,0x3186,0x3186,0x2985,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2965,0x2965,0x3186,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2986,0x2965,0x2965,0x2145,0x2965,0x31a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x2986,0x2985,0x2965,0x31c6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2124,0x2945,0x2965,0x2965,0x2145,0x31c6,0x31a6,0x2965,0x2985,0x31a6,0x29a6,0x2965,0x2945,0x2945,0x31c7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2986,0x2986,0x2965,0x2124,0x2145,0x2145,0x2145,0x2966,0x2125,0x2966,0x2965,0x2145,0x2965,0x2965,0x2124,0x2145,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2145,0x1904, +0x2124,0x2124,0x2124,0x2125,0x2145,0x2125,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2145,0x1924,0x2124,0x2145,0x2966,0x2145,0x2145,0x2965,0x2945,0x2124,0x2124,0x2145,0x2145,0x31a6,0x2985,0x2124,0x2945,0x2165,0x2144,0x2145,0x2965,0x2965,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x3186,0x2985,0x2965,0x2144,0x2145,0x2965,0x2965,0x2985,0x2965,0x31c6,0x39e7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2966,0x2986,0x2145,0x2145,0x2165,0x2165,0x2165,0x2985,0x2965,0x2165,0x2985,0x29a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2145,0x2986,0x31c7,0x2966,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2965,0x31a6,0x18c3,0x0020,0x10a2,0x2104,0x18e3,0x10c2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x18e3,0x20e4,0x18c3,0x18a3,0x10a3,0x18a3,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x2103,0x2104,0x2944,0x20e3,0x18c3,0x18c3,0x18e3,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0020,0x0841,0x0861,0x0861,0x1081,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x31a6,0x1082,0x0840,0x18c3,0x3186,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2985,0x2165,0x2965,0x2986,0x2986,0x2986,0x2965,0x2165,0x2965,0x2965,0x31c6,0x31c6,0x2965,0x3186,0x39c7,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2965,0x2945,0x2965,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x29a6,0x2986,0x2145,0x29a6,0x2986,0x31a6,0x2985,0x2965,0x2965,0x31a6,0x31c6,0x31c6,0x29a6,0x2986,0x2965,0x2986,0x31a7,0x2966,0x2985,0x31a6,0x2986,0x2165,0x3186,0x3186,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x29a6,0x2986,0x2965,0x2145,0x2965,0x31c6,0x3186,0x2986,0x2985,0x2965,0x2124,0x2945,0x2144,0x2965,0x2986,0x2965,0x2145,0x2145,0x2145,0x2966,0x2965,0x2145,0x2125,0x2145,0x2125,0x2124,0x2124,0x2985,0x2145,0x2104,0x2124,0x2144,0x2124,0x2124,0x1904,0x2145, +0x2124,0x2124,0x2145,0x2144,0x2144,0x2124,0x1904,0x2124,0x2125,0x2124,0x2124,0x1904,0x2124,0x2125,0x2145,0x2145,0x2124,0x2124,0x2145,0x2945,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x31a6,0x2124,0x2145,0x2145,0x2144,0x2145,0x2965,0x2986,0x2986,0x2145,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x3186,0x2965,0x2145,0x2965,0x2986,0x2965,0x2945,0x2145,0x2945,0x2965,0x2985,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2966,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2985,0x31c6,0x29a6,0x10a2,0x0020,0x0861,0x18e3,0x1904,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x18e3,0x18e4,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x18a2,0x2103,0x2924,0x2924,0x20e3,0x2104,0x18e3,0x18c3,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x1082,0x10a2,0x1082,0x1082,0x18c3,0x10a2,0x0020,0x0020,0x0841,0x1082,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x2944,0x0861,0x0000,0x10c3,0x31c6,0x3186,0x2985,0x3186,0x31c6,0x3186,0x2965,0x2165,0x2986,0x2985,0x2965,0x2966,0x2965,0x2965,0x3186,0x3186,0x31c7,0x2985,0x29a6,0x2986,0x2965,0x29a6,0x2965,0x2986,0x3186,0x2965,0x2986,0x2986,0x2965,0x3186,0x2986,0x3186,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2986,0x2145,0x2986,0x2986,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2165,0x2165,0x2986,0x2185,0x2165,0x2965,0x2965,0x2145,0x2986,0x3186,0x2965,0x2965,0x2965,0x2124,0x2986,0x2965,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2125,0x2125,0x2124,0x2144,0x2985,0x2965,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2144,0x2124, +0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2945,0x2145,0x2145,0x2125,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x2965,0x2965,0x2145,0x2945,0x2124,0x2925,0x2144,0x2124,0x2124,0x2965,0x2945,0x2965,0x2145,0x2945,0x2985,0x2965,0x2145,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2144,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2985,0x29a6,0x29a6,0x0882,0x0020,0x0841,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x1082,0x18c3,0x10a2,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x2145,0x10a2,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e3,0x2944,0x20e3,0x18e3,0x2944,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x3186,0x18e3,0x0020,0x0020,0x0020,0x0861,0x1082,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x2103,0x0861,0x0000,0x18e3,0x4208,0x39c7,0x3186,0x31a7,0x3186,0x3186,0x2986,0x2966,0x29a6,0x2986,0x2965,0x2966,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x39e7,0x2985,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2986,0x31a6,0x31c6,0x2965,0x2945,0x4a69,0x39e7,0x2986,0x31a7,0x2966,0x2986,0x2945,0x2986,0x3186,0x2965,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2986,0x2965,0x2945,0x2986,0x31a6,0x2965,0x2965,0x2145,0x2965,0x29a6,0x29a6,0x2165,0x2165,0x2145,0x2165,0x2965,0x2945,0x2986,0x2986,0x2145,0x2965,0x3186,0x2965,0x2965,0x2985,0x2145,0x2144,0x2145,0x2145,0x2965,0x2965,0x2945,0x2124,0x2145,0x2965,0x3186,0x2124,0x2144,0x2945,0x2965,0x2965,0x2965,0x2124,0x2965,0x2124,0x2145, +0x2124,0x2945,0x2145,0x2145,0x2125,0x2124,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2125,0x2125,0x2145,0x2145,0x2125,0x2124,0x2145,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2945,0x2945,0x2145,0x2144,0x2124,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2965,0x2985,0x2145,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2945,0x2945,0x3186,0x3186,0x2985,0x2965,0x2945,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2985,0x2945,0x2986,0x2986,0x2986,0x2966,0x2985,0x2986,0x2965,0x2966,0x2965,0x2986,0x31a6,0x2986,0x31c6,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2965,0x2966,0x39e7,0x31a6,0x2965,0x31a6,0x3186,0x1082,0x0020,0x0040,0x1082,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2103,0x10a2,0x1082,0x18a2,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0020,0x0020,0x0861,0x18e4,0x10a3,0x1082,0x0861,0x18e3,0x2944,0x2104,0x10a3,0x18c3,0x2966,0x2104,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x18a2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1062,0x1082,0x0841,0x0861,0x18e3,0x10a2,0x1082,0x31a6,0x5289,0x2104,0x1082,0x0020,0x0020,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18a2,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18e3,0x0841,0x0000,0x18c3,0x31c7,0x31a6,0x31c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x31c6,0x29a6,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x2985,0x29a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2945,0x2965,0x2966,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x3a08,0x4228,0x31a7,0x2986,0x2986,0x2986,0x31a6,0x39c7,0x2986,0x2986,0x39e7,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x2145,0x2965,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2966,0x2945,0x31a6,0x2145,0x2145,0x2965,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2986,0x2124,0x31c6,0x31c7,0x2965,0x2965,0x2965,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x31a6,0x2965,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x31a6,0x2144,0x2104, +0x2124,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2145,0x2145,0x2145,0x2144,0x2145,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2165,0x2144,0x2144,0x2145,0x2965,0x2124,0x2945,0x2945,0x2965,0x2145,0x2124,0x2945,0x2145,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2165,0x2145,0x2965,0x2965,0x2985,0x2985,0x2165,0x2165,0x2985,0x2986,0x2965,0x2966,0x2965,0x2945,0x2945,0x2986,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x2165,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x2985,0x2145,0x2965,0x31a6,0x2965,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2966,0x3186,0x2965,0x31a7,0x31a7,0x3186,0x39c7,0x2965,0x0861,0x0000,0x0020,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2124,0x18c3,0x1082,0x10a2,0x18a2,0x18a2,0x1081,0x0861,0x0861,0x0841,0x0020,0x0841,0x18e3,0x18e3,0x1082,0x0861,0x0841,0x2104,0x2965,0x2124,0x18e3,0x2104,0x2966,0x2986,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1081,0x1082,0x1062,0x0841,0x1082,0x1904,0x10a3,0x10a2,0x2124,0x4207,0x20e3,0x10a2,0x0861,0x0020,0x0020,0x0841,0x1082,0x0861,0x10a2,0x18e3,0x18a2,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x18c2,0x0841,0x0020,0x10a2,0x31a6,0x29a6,0x31c7,0x31a7,0x3186,0x3187,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2986,0x3186,0x31a6,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2965,0x2985,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2945,0x2145,0x2965,0x3186,0x31a7,0x2986,0x2985,0x2965,0x39e7,0x3186,0x3186,0x2966,0x3186,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x2986,0x3186,0x2945,0x2965,0x2966,0x2145,0x2965,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2165,0x2965,0x2965,0x2945,0x2145,0x2165,0x2985,0x2965,0x3186,0x31a6,0x2985,0x2986,0x2145,0x2945,0x2144,0x2945,0x2124,0x2145,0x2945,0x2144,0x2965,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x2986,0x2965,0x2144, +0x2124,0x2945,0x2145,0x2945,0x2144,0x2945,0x2145,0x2145,0x2145,0x2145,0x2144,0x2124,0x2945,0x2965,0x2145,0x2145,0x2124,0x2145,0x2965,0x1904,0x2124,0x2144,0x2145,0x2965,0x2945,0x2144,0x2145,0x2145,0x2965,0x2144,0x2124,0x2124,0x2144,0x2965,0x2165,0x2965,0x2985,0x2145,0x2145,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2985,0x2986,0x2966,0x2966,0x2965,0x2985,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2985,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2965,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31a6,0x3185,0x2985,0x2986,0x2165,0x2165,0x29a6,0x2966,0x2966,0x3186,0x2985,0x2965,0x2945,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x2985,0x0861,0x0020,0x0040,0x0861,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2965,0x2965,0x3165,0x2965,0x2966,0x39e8,0x2104,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x18c3,0x18e4,0x18c3,0x10a2,0x18e3,0x2965,0x18a2,0x18c2,0x18a2,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x10a2,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0020,0x0000,0x10a2,0x31c6,0x29c6,0x2986,0x31a6,0x3186,0x3186,0x31c7,0x2966,0x3186,0x2986,0x2986,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2985,0x2965,0x31c7,0x29a6,0x2145,0x2985,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2965,0x2966,0x31a7,0x31c7,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a7,0x2945,0x3186,0x2966,0x2145,0x2965,0x2985,0x2965,0x2965,0x2165,0x2145,0x2945,0x2965,0x2986,0x2985,0x2965,0x2124,0x2965,0x2985,0x1903,0x2965,0x2986,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x2986,0x2144,0x2124,0x2945,0x2124,0x2965,0x2945,0x2124, +0x2104,0x2124,0x2104,0x2124,0x2124,0x2144,0x2145,0x2144,0x2124,0x2144,0x2144,0x2986,0x2145,0x2145,0x2145,0x2965,0x2144,0x2144,0x2144,0x2124,0x2144,0x2986,0x2966,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2965,0x2985,0x2165,0x2985,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2985,0x3186,0x31a7,0x2965,0x2965,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2986,0x2966,0x2965,0x2986,0x29a6,0x29a6,0x2986,0x2985,0x2985,0x2986,0x2986,0x2985,0x2965,0x2986,0x31a6,0x3186,0x29a6,0x29a6,0x2186,0x2185,0x29a6,0x2986,0x2966,0x2965,0x2985,0x2985,0x2985,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2986,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x0881,0x0020,0x0841,0x0861,0x10a2,0x18e3,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2104,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0020,0x0841,0x2104,0x18c3,0x1082,0x0841,0x0020,0x0841,0x2944,0x2965,0x39c7,0x5248,0x39c7,0x2986,0x4229,0x528a,0x18a2,0x0841,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x10a3,0x2945,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x0861,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18e3,0x18c2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x18c3,0x18a2,0x0841,0x0020,0x1082,0x2986,0x31c6,0x31c7,0x2985,0x31c6,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x2986,0x2986,0x2165,0x31c7,0x2986,0x2986,0x31a6,0x3186,0x2985,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2986,0x39c7,0x3186,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3186,0x31a7,0x3186,0x2965,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2985,0x2965,0x2144,0x2965,0x2965,0x2945,0x2965,0x2165,0x2965,0x2144,0x2965,0x29a6,0x2145,0x2965,0x2986,0x2145,0x2125,0x2965,0x2965,0x2145,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2144,0x2124,0x2985,0x2945, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x1904,0x2144,0x2965,0x2124,0x2125,0x2145,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x31a6,0x2966,0x2125,0x2165,0x2124,0x2125,0x2145,0x2145,0x2145,0x2945,0x2966,0x2966,0x2945,0x2965,0x2965,0x2965,0x2966,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x31a7,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2966,0x2966,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2165,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2966,0x2986,0x2986,0x2185,0x2185,0x2986,0x2966,0x2986,0x2986,0x3186,0x2985,0x2965,0x2986,0x2966,0x3186,0x3186,0x2986,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x29a6,0x2986,0x0882,0x0020,0x0841,0x1082,0x18c3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2124,0x10a2,0x0862,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0020,0x1082,0x2944,0x2945,0x4207,0x5289,0x5289,0x39c7,0x4208,0x6b6d,0x4207,0x1061,0x0861,0x1082,0x18a2,0x18a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x1082,0x0841,0x1082,0x31a7,0x3186,0x2104,0x20e4,0x2104,0x2945,0x2945,0x0841,0x0861,0x18c3,0x18a3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x10a2,0x0841,0x0020,0x10a2,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x31c7,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x3186,0x2965,0x29a6,0x31a6,0x31a6,0x31a7,0x2966,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x2986,0x3186,0x2986,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x2985,0x31a6,0x3186,0x2966,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x3186,0x2986,0x2986,0x29a6,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x2965,0x2966,0x2165,0x2965,0x2945,0x2144,0x2986,0x2985,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x2145,0x31c6,0x31a6,0x2945,0x2966,0x2966,0x2965,0x2145,0x2144,0x2985,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965, +0x2124,0x2124,0x1924,0x1924,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2945,0x2945,0x2965,0x31a6,0x2145,0x2125,0x2125,0x2125,0x2125,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2125,0x2125,0x2945,0x2966,0x2945,0x2986,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2965,0x31a6,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2965,0x3166,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2986,0x2986,0x3186,0x2986,0x3166,0x31a6,0x31a6,0x2985,0x2945,0x2966,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2986,0x2965,0x29a6,0x29a6,0x29a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2985,0x2986,0x31a6,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x0861,0x0020,0x0841,0x1082,0x18e3,0x2104,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x0841,0x0020,0x0841,0x18e4,0x18c3,0x1082,0x0841,0x0020,0x0821,0x18c3,0x2944,0x2965,0x39c6,0x4207,0x5aea,0x4208,0x39e8,0x4a6a,0x5aeb,0x2945,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0861,0x2986,0x4229,0x3186,0x2946,0x2945,0x2945,0x31a6,0x2924,0x0020,0x0841,0x1082,0x18c3,0x1061,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c3,0x18e3,0x18c3,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0841,0x0000,0x18c3,0x39c7,0x2966,0x31a7,0x39e8,0x2966,0x31a7,0x3a08,0x2986,0x2966,0x2986,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x3186,0x3186,0x3186,0x3186,0x39e7,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2965,0x31a6,0x31c6,0x2986,0x2165,0x31a6,0x3186,0x3186,0x2965,0x3186,0x2986,0x2985,0x31a6,0x3186,0x2965,0x2966,0x2966,0x31a7,0x3186,0x2945,0x2965,0x3186,0x2945,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x3186,0x2144,0x2965,0x2986,0x2985,0x31a6,0x2966,0x2145,0x2144,0x2165,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2945,0x2985,0x2965,0x2124,0x2965,0x2965,0x2945,0x2145,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2124,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2124, +0x2945,0x2124,0x2124,0x2124,0x2945,0x2124,0x2145,0x2144,0x2144,0x31a6,0x2985,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2125,0x2124,0x2145,0x2145,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2945,0x2165,0x2965,0x2945,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2966,0x2965,0x2965,0x2985,0x2985,0x2965,0x2965,0x2986,0x3186,0x2966,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2165,0x29a6,0x31e7,0x2985,0x2986,0x29a6,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x2965,0x2986,0x2985,0x2985,0x3186,0x3186,0x31a7,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x31a6,0x1082,0x0020,0x0841,0x0861,0x18c3,0x2104,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0861,0x0841,0x0020,0x0861,0x2104,0x10a2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2124,0x3185,0x39a6,0x3185,0x4a48,0x4a48,0x4a28,0x39a7,0x4208,0x3a08,0x18e3,0x0861,0x0841,0x1061,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x1062,0x0861,0x0861,0x2104,0x39e8,0x39e8,0x31a7,0x31a7,0x31a7,0x31a6,0x39c6,0x2103,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18a3,0x18a2,0x18c3,0x18c3,0x0841,0x0020,0x10a2,0x4228,0x31a7,0x31a7,0x39e7,0x31a7,0x31c7,0x31c7,0x2986,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x31a6,0x31a7,0x31a7,0x3186,0x3186,0x31c6,0x2986,0x31c7,0x3186,0x2986,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2965,0x2985,0x2986,0x2965,0x2165,0x31a6,0x2985,0x2965,0x2986,0x3186,0x3186,0x3186,0x2965,0x31a6,0x31c7,0x31a6,0x2966,0x31a6,0x31a7,0x2966,0x2986,0x2986,0x2966,0x31c7,0x31c7,0x2965,0x2966,0x3186,0x2966,0x2965,0x31a6,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2145,0x2144,0x2985,0x2965,0x2965,0x2145,0x2965,0x2144,0x2145,0x2144,0x2144,0x2124,0x2104, +0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2145,0x2125,0x1924,0x2165,0x2145,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2124,0x2145,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2965,0x2144,0x2985,0x2986,0x2165,0x2165,0x2165,0x2985,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x31a6,0x2986,0x2966,0x2965,0x2965,0x2965,0x2165,0x2985,0x2965,0x31a6,0x31c7,0x3186,0x3186,0x2986,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2985,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2985,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a6,0x31a7,0x31a6,0x31a7,0x31a6,0x2965,0x1082,0x0020,0x0841,0x0841,0x10a2,0x2944,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0861,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x0861,0x0020,0x0020,0x18c3,0x2104,0x2124,0x3185,0x31a5,0x2965,0x31a6,0x4a48,0x5289,0x31a6,0x2925,0x2966,0x2945,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x18e3,0x2145,0x2966,0x31a6,0x39c7,0x4208,0x39e7,0x39e7,0x39a6,0x18e3,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c2,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0020,0x10a2,0x3a08,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a7,0x31a6,0x2965,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x2965,0x31a7,0x3186,0x3186,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2966,0x2965,0x2986,0x29a6,0x31c7,0x31a6,0x2985,0x2985,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x31c6,0x2986,0x2965,0x2965,0x3186,0x2986,0x3186,0x2966,0x2966,0x2986,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x39c7,0x3186,0x2965,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31c7,0x31a6,0x31c7,0x2985,0x3186,0x31a7,0x2966,0x2966,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2945,0x2965,0x3186,0x2945,0x2986,0x2145,0x2145,0x2965,0x2965,0x2145,0x3186,0x3186,0x2945,0x2945,0x31a6,0x2985,0x2144,0x2165,0x2145,0x2124,0x2124,0x2124,0x2965,0x2144,0x1904, +0x2124,0x2124,0x2145,0x2124,0x2124,0x2965,0x2985,0x2965,0x2165,0x2144,0x1904,0x2144,0x2945,0x2145,0x2145,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x3186,0x2965,0x2145,0x2124,0x2145,0x2124,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2965,0x2986,0x2985,0x2185,0x2165,0x2186,0x31c7,0x2986,0x2965,0x2965,0x2945,0x2966,0x2965,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2986,0x2965,0x2966,0x2965,0x31a6,0x39c7,0x2986,0x3186,0x31a7,0x2986,0x2966,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0841,0x18e3,0x10c2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2104,0x2924,0x3186,0x31a5,0x2945,0x3186,0x4a28,0x4a48,0x3186,0x2104,0x20e4,0x2104,0x18e3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1904,0x2104,0x2125,0x2966,0x39e8,0x630b,0x4a27,0x39e7,0x31a6,0x18e3,0x0020,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0881,0x0020,0x10c2,0x31c7,0x2986,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x2965,0x31a7,0x31a6,0x31c6,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2986,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2986,0x2986,0x3186,0x3186,0x2986,0x2966,0x2945,0x2945,0x3186,0x2986,0x3186,0x2986,0x29a6,0x29a6,0x2966,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2965,0x3186,0x3186,0x2965,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x2986,0x2966,0x3186,0x2966,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2945,0x2965,0x2965,0x2945,0x3186,0x31c7,0x2165,0x2986,0x2145,0x2145,0x2966,0x2966,0x3186,0x2965,0x2104,0x2986,0x2145,0x2145,0x2945,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124, +0x2145,0x2124,0x2145,0x2144,0x2145,0x2145,0x2145,0x2165,0x2144,0x2145,0x2165,0x2145,0x2965,0x2965,0x2145,0x2965,0x2144,0x2165,0x2965,0x2165,0x2965,0x2986,0x2945,0x2145,0x2965,0x2145,0x2144,0x2945,0x2945,0x2986,0x2965,0x2945,0x2965,0x2966,0x2985,0x2965,0x2165,0x2165,0x2986,0x31a6,0x2986,0x2965,0x2966,0x2965,0x2966,0x2985,0x2985,0x2986,0x2986,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2965,0x2986,0x2966,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2986,0x29a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x29a6,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18c3,0x0861,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0861,0x20e4,0x10a2,0x1082,0x0841,0x0020,0x1082,0x2104,0x20e4,0x2945,0x39a6,0x3185,0x2965,0x3185,0x4207,0x31a6,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e4,0x18e4,0x2104,0x2945,0x39e8,0x62ea,0x4207,0x39c6,0x3185,0x18e3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18e3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0882,0x0020,0x10a2,0x4208,0x39c7,0x31a7,0x39c7,0x31c6,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x39e7,0x31c7,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x39c6,0x3186,0x31a6,0x39e7,0x31a7,0x31a7,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x3186,0x31a6,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2986,0x29a6,0x2966,0x3186,0x31c7,0x31c7,0x2145,0x31c7,0x31c7,0x2965,0x29a6,0x29a6,0x2966,0x2986,0x31c7,0x2966,0x2966,0x31a6,0x2965,0x2965,0x3186,0x2986,0x2965,0x2965,0x2986,0x2965,0x2144,0x31a6,0x2985,0x2945,0x2945,0x2965,0x31a6,0x2965,0x2986,0x3186,0x39c7,0x3186,0x2986,0x31a6,0x2145,0x2145,0x2985,0x2165,0x2965,0x2945,0x2945,0x2124,0x2965,0x2124,0x2144,0x1924, +0x2144,0x2144,0x2144,0x2144,0x2165,0x2145,0x2124,0x2165,0x2145,0x2144,0x2165,0x2145,0x2945,0x2145,0x2124,0x2145,0x2965,0x2165,0x2165,0x2145,0x2144,0x2145,0x2165,0x2145,0x2145,0x2144,0x2965,0x2945,0x2945,0x2986,0x2986,0x2986,0x2965,0x2966,0x2985,0x2986,0x2965,0x2965,0x2966,0x3186,0x2986,0x2965,0x3186,0x2985,0x31a6,0x2986,0x2165,0x2965,0x2985,0x2986,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x2965,0x2145,0x31a6,0x3186,0x2965,0x2985,0x39e7,0x3186,0x2985,0x31a6,0x2985,0x29a6,0x2965,0x2986,0x3186,0x31c7,0x29a6,0x2986,0x3186,0x2966,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x29a6,0x2986,0x2966,0x3186,0x2966,0x2986,0x31a7,0x31c7,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x0882,0x0040,0x0861,0x0861,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x1082,0x2104,0x10a2,0x0861,0x0020,0x0841,0x18e3,0x2104,0x18e3,0x2965,0x39c6,0x3165,0x2965,0x2965,0x3185,0x2944,0x2104,0x39c6,0x3165,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e4,0x18e4,0x2104,0x2966,0x4249,0x5289,0x41c6,0x39c6,0x2944,0x18c3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18e3,0x1082,0x0020,0x0882,0x4228,0x31c7,0x2986,0x4208,0x31c6,0x2986,0x31c7,0x31a7,0x29a6,0x31c7,0x31c7,0x31a7,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31c7,0x39c7,0x39c7,0x29a6,0x31a6,0x3186,0x3186,0x31a7,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x2986,0x31a6,0x2985,0x2986,0x31c7,0x39e7,0x31c7,0x31a7,0x3186,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x3186,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x2986,0x2966,0x31a6,0x3186,0x2986,0x2986,0x2966,0x2145,0x2965,0x2965,0x2945,0x2986,0x2986,0x2965,0x2945,0x2985,0x2985,0x2144,0x2986,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2144,0x2945,0x2965,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145, +0x2144,0x2144,0x2124,0x2145,0x2145,0x2144,0x2145,0x2145,0x2145,0x2144,0x2124,0x2965,0x2124,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2165,0x2145,0x2144,0x2965,0x2965,0x2965,0x2165,0x2965,0x2945,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2986,0x2145,0x2965,0x2986,0x2986,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x3186,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2985,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x31c6,0x31a6,0x31a6,0x2985,0x2986,0x31c6,0x29a6,0x2965,0x3186,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x29a6,0x0882,0x0040,0x0861,0x10a2,0x10a2,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x10a3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2104,0x18e3,0x2124,0x2985,0x2965,0x2945,0x2965,0x2945,0x2124,0x18e3,0x4a47,0x3185,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e4,0x2124,0x3186,0x4228,0x4a69,0x41e7,0x31a6,0x20e3,0x18c3,0x1082,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x10a2,0x0861,0x0861,0x31c6,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x29a6,0x39e7,0x31a7,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x39c7,0x39e8,0x3186,0x39e7,0x39c7,0x2986,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x2965,0x31a7,0x3186,0x3186,0x39c7,0x39e7,0x31c7,0x31a7,0x2986,0x29a6,0x31a6,0x31c6,0x31c6,0x2986,0x31a7,0x31a7,0x39c7,0x2966,0x3186,0x3186,0x3a07,0x31e7,0x31c7,0x31a6,0x2966,0x31a7,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x31a7,0x2986,0x2986,0x2966,0x2125,0x2966,0x2986,0x2965,0x2965,0x2986,0x2145,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2165,0x2145,0x3186,0x31a7,0x2945,0x2965,0x2986,0x2985,0x2945,0x2965,0x2144,0x2986,0x2145,0x2124,0x2145,0x2145,0x2144,0x2965, +0x2145,0x2124,0x2124,0x2145,0x2945,0x2945,0x2124,0x2145,0x2965,0x2965,0x2945,0x2144,0x2965,0x2985,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2966,0x2966,0x2965,0x2145,0x2145,0x2985,0x2986,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c6,0x3186,0x2986,0x2985,0x2965,0x3186,0x3186,0x2986,0x2986,0x2145,0x2145,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2966,0x2986,0x3186,0x31a7,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c7,0x2986,0x31a6,0x10a2,0x0040,0x0861,0x18c3,0x18c3,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x18c2,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2944,0x2104,0x18e3,0x2104,0x2944,0x2945,0x2944,0x2964,0x2944,0x2104,0x2103,0x4227,0x2123,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x3186,0x39c7,0x4a48,0x39e7,0x2965,0x10a2,0x18c3,0x18a2,0x0020,0x0020,0x0841,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x39e7,0x39e8,0x31a6,0x39e8,0x31c7,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31c7,0x31a7,0x4228,0x31c6,0x3186,0x31c7,0x31c7,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2966,0x3186,0x31a6,0x39c7,0x31c7,0x31c7,0x31c7,0x31c7,0x2986,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x3186,0x2986,0x31a6,0x39e8,0x31a6,0x2985,0x31c6,0x2965,0x4228,0x39c7,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x3186,0x2965,0x2145,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2966,0x3186,0x2986,0x2945,0x2144,0x2965,0x2945,0x2965,0x2145,0x2165,0x2986,0x2945,0x2145,0x2144,0x2965,0x2945, +0x1904,0x2144,0x2124,0x2145,0x2945,0x2945,0x2144,0x2145,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2144,0x2965,0x2986,0x2986,0x2966,0x2966,0x3186,0x2965,0x2965,0x2966,0x3186,0x39e7,0x2986,0x2985,0x2986,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2145,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x29a6,0x31e7,0x2986,0x31a6,0x31c6,0x31a6,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2985,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a7,0x31a7,0x31a6,0x31c7,0x29a6,0x29a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x3186,0x10a2,0x0841,0x10a2,0x18c3,0x18e4,0x29c7,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e4,0x2104,0x10a2,0x0861,0x0020,0x0861,0x2945,0x2104,0x18e3,0x2104,0x2944,0x2944,0x2124,0x2944,0x2944,0x2103,0x2104,0x39c6,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1081,0x10a2,0x18c3,0x1082,0x18e3,0x3186,0x3185,0x18c3,0x2124,0x2124,0x3185,0x2923,0x18c3,0x2104,0x2124,0x2945,0x3186,0x39c7,0x4207,0x3186,0x2104,0x10a2,0x18c3,0x18c3,0x0841,0x0020,0x0020,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a3,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18c3,0x18e3,0x2103,0x18e3,0x1082,0x0861,0x39c7,0x39c7,0x3186,0x39c7,0x3186,0x31a7,0x39a7,0x39a7,0x3186,0x3186,0x39a7,0x4208,0x31a6,0x2985,0x2986,0x29a7,0x31c7,0x2986,0x29a7,0x3186,0x39a7,0x3186,0x2966,0x31a7,0x31a6,0x3186,0x2986,0x3186,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2986,0x39c7,0x31a7,0x31a7,0x31a7,0x31a7,0x2966,0x31a7,0x2965,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x39c7,0x31a6,0x31c7,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2165,0x2986,0x2986,0x2986,0x2145,0x31c6,0x4228,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2165,0x2124,0x2965,0x2144,0x2145,0x2124,0x2965,0x2965, +0x2144,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2144,0x2144,0x2965,0x2145,0x2145,0x2145,0x2965,0x2966,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2985,0x2985,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x3186,0x2986,0x2986,0x2966,0x31e7,0x39e7,0x39e7,0x2965,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x39c7,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x3186,0x29a6,0x31a6,0x2965,0x2985,0x29a6,0x2985,0x31a6,0x2986,0x29a7,0x29a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x31a7,0x31c7,0x31a6,0x1082,0x0861,0x10a2,0x18e3,0x10c2,0x21a5,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0020,0x18e4,0x2104,0x1082,0x0841,0x0841,0x0861,0x2965,0x2104,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2924,0x2924,0x18e3,0x2104,0x3185,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x18c3,0x2124,0x10a2,0x2104,0x4207,0x4a27,0x2924,0x2944,0x2124,0x39a5,0x2923,0x18c3,0x2104,0x2125,0x2965,0x3186,0x39c6,0x39a6,0x2945,0x18e3,0x1082,0x18c3,0x18e3,0x0841,0x0020,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a2,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x20e3,0x1904,0x10a2,0x0861,0x31c7,0x4208,0x31a7,0x31a7,0x4208,0x31a7,0x31a7,0x39e8,0x39e8,0x39e8,0x31a7,0x39e8,0x31a6,0x31a7,0x31a7,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x39c7,0x2986,0x2986,0x31a7,0x31a7,0x2966,0x3186,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x39a7,0x31a6,0x31c7,0x2986,0x29a6,0x31a7,0x39e7,0x31a6,0x31a6,0x2965,0x31c7,0x31e7,0x31e7,0x39e7,0x31a6,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x3187,0x2986,0x2946,0x31c7,0x2966,0x2966,0x3186,0x31c6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x31c7,0x31a6,0x2945,0x31c6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x2945,0x31a6,0x39c7,0x2966,0x3186,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2145,0x2985,0x2986,0x2144,0x2124,0x1904,0x2965,0x2144, +0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2145,0x2145,0x2945,0x2145,0x2165,0x2165,0x2144,0x2144,0x2145,0x2144,0x2144,0x2986,0x2985,0x29a6,0x2165,0x2145,0x2965,0x2965,0x3186,0x2986,0x2965,0x2986,0x2985,0x2145,0x2945,0x2966,0x2966,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2986,0x2165,0x2145,0x2986,0x2986,0x2986,0x29a6,0x2966,0x2985,0x31a6,0x3a07,0x2986,0x2985,0x31a6,0x31a6,0x2165,0x31a6,0x31a7,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x29a6,0x29a6,0x2165,0x2965,0x2986,0x29a6,0x29a6,0x2165,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31e7,0x10c3,0x0041,0x10c2,0x18e3,0x18c3,0x2985,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2104,0x1082,0x0841,0x0841,0x0861,0x2945,0x2104,0x18e3,0x18e3,0x2124,0x2104,0x2103,0x2104,0x2124,0x18c3,0x2103,0x2944,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2124,0x18a2,0x18a3,0x2104,0x2944,0x18e3,0x18c3,0x18e3,0x2965,0x18e2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x31a6,0x2944,0x2104,0x18e3,0x1082,0x18e4,0x2104,0x0841,0x0841,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18c3,0x18c3,0x20e4,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2104,0x10a2,0x0881,0x39e7,0x39e7,0x31e7,0x31a7,0x39e8,0x2986,0x2986,0x31c7,0x39e8,0x3a08,0x2986,0x3186,0x3186,0x31a7,0x39c7,0x31c7,0x31a6,0x2986,0x29a6,0x29a6,0x31c6,0x31a6,0x31c7,0x31c7,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x3a08,0x31c7,0x3186,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x2986,0x2986,0x31a6,0x39e8,0x2986,0x3186,0x31c7,0x31e7,0x31a6,0x2965,0x3186,0x31a6,0x31a7,0x2986,0x2986,0x2985,0x29a6,0x31c6,0x39e7,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2965,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x2945,0x2145,0x29a6,0x2985,0x2986,0x3186,0x2124,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2986,0x2965,0x2145,0x2145,0x2144, +0x2945,0x2144,0x2144,0x2144,0x2125,0x2966,0x2965,0x2125,0x2145,0x2145,0x2945,0x2986,0x2965,0x2985,0x2145,0x2165,0x2165,0x2144,0x2144,0x2965,0x2165,0x2985,0x2985,0x2144,0x2145,0x2945,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x3186,0x2986,0x2986,0x31a6,0x3165,0x3165,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x29a6,0x2966,0x2986,0x31c7,0x2186,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2985,0x2985,0x2986,0x2966,0x2965,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x3186,0x2986,0x2985,0x2985,0x2986,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31c7,0x29a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2986,0x29a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x3207,0x10c3,0x0882,0x18c3,0x2104,0x18e4,0x29a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2124,0x1082,0x0861,0x0841,0x0841,0x2945,0x2124,0x18e3,0x18c3,0x2103,0x18e3,0x18e3,0x20e3,0x2104,0x18c3,0x20e3,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x2124,0x10a2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x2965,0x18e3,0x20e3,0x18e3,0x1082,0x2104,0x2124,0x0841,0x0041,0x0841,0x1082,0x18e4,0x10a3,0x0020,0x0041,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2124,0x1081,0x10a2,0x4208,0x31c7,0x4228,0x31a7,0x2987,0x31c7,0x31c7,0x31a7,0x29a6,0x31a6,0x31a7,0x3186,0x3186,0x31a7,0x31e7,0x31a7,0x31a7,0x31a6,0x31c7,0x31a6,0x31a6,0x39c7,0x31a6,0x2986,0x29a6,0x31a6,0x31a7,0x39c7,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x31a6,0x3a08,0x39c7,0x39c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31a7,0x31a7,0x3186,0x31a6,0x31c7,0x31a6,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x29a6,0x31a6,0x2986,0x2966,0x2966,0x3186,0x39c7,0x31a6,0x2986,0x2985,0x31a6,0x3186,0x31a6,0x31a7,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2966,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2985,0x31a6,0x3186,0x2965,0x2965,0x29a6,0x31e7,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x31c7,0x31a6,0x2124,0x2124, +0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2124,0x2165,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2985,0x3186,0x3186,0x2966,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2966,0x2966,0x2966,0x2986,0x2965,0x2985,0x3186,0x3186,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2985,0x31a6,0x2986,0x2965,0x2945,0x3186,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x39e7,0x3186,0x2985,0x3186,0x3186,0x2986,0x2985,0x31a6,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x3186,0x31a7,0x39e8,0x39e8,0x31c7,0x29a6,0x0861,0x1904,0x2924,0x2944,0x18e3,0x21a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e3,0x2945,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2945,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e3,0x18c2,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2965,0x2124,0x18c3,0x20e4,0x18c3,0x10a2,0x2145,0x2124,0x0841,0x0840,0x0841,0x1082,0x2104,0x10a2,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x18c3,0x18e3,0x2104,0x2965,0x18e3,0x1082,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e8,0x39c8,0x31a7,0x31a7,0x2986,0x39e7,0x31e7,0x3a08,0x39e7,0x31c7,0x29a6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2145,0x31a6,0x31c7,0x2986,0x3186,0x39c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a7,0x39c7,0x31c7,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31c7,0x31a7,0x31a6,0x39e7,0x4228,0x39c7,0x31a6,0x31c7,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31c7,0x3186,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2965,0x3166,0x3186,0x2966,0x31a6,0x3186,0x2965,0x3186,0x3186,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x31a6,0x2965,0x2965,0x2945,0x2965,0x2965,0x31a7,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2144,0x2965,0x2985,0x2986,0x2145,0x31a6,0x2986,0x3186,0x2124, +0x2124,0x2124,0x2145,0x2144,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2165,0x2165,0x2965,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2986,0x2966,0x2966,0x31a6,0x31c6,0x2986,0x2986,0x3186,0x31c6,0x2965,0x2965,0x2986,0x2985,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x2986,0x2965,0x39e7,0x2985,0x2945,0x2965,0x2986,0x29a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31c6,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31a6,0x10c2,0x2124,0x2965,0x3165,0x2965,0x10e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2945,0x18c3,0x0861,0x0841,0x0020,0x2104,0x2945,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x2124,0x18e3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x2124,0x18e3,0x18c3,0x2104,0x18a2,0x18c3,0x2965,0x2103,0x0820,0x0020,0x0841,0x10a2,0x2124,0x1082,0x0020,0x0841,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c2,0x18c2,0x18e3,0x2104,0x39c7,0x2104,0x1082,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e8,0x31c8,0x3a08,0x31c7,0x39e7,0x31e7,0x31a6,0x29a6,0x31a7,0x31a7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31c7,0x31a7,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x4208,0x39c7,0x31a6,0x31a6,0x39c7,0x31a6,0x31c7,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31a7,0x31a6,0x3186,0x39e7,0x31a6,0x2965,0x39e7,0x31a6,0x39c7,0x3186,0x31a6,0x29a6,0x2986,0x31a6,0x2986,0x31c7,0x31c6,0x31a6,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2965,0x3186,0x2966,0x3186,0x31a6,0x2986,0x2985,0x2985,0x2966,0x2945,0x2965,0x2966,0x2965,0x2986,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x3186,0x2985,0x2965,0x2145,0x2145,0x2145,0x2145,0x2985, +0x2125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2945,0x2986,0x2965,0x2945,0x2945,0x3186,0x2965,0x2145,0x2124,0x2965,0x2965,0x2985,0x2965,0x2986,0x2165,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2966,0x2966,0x2966,0x2985,0x29a6,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31a6,0x3186,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2985,0x31c7,0x31a6,0x2965,0x2965,0x31a6,0x29a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x29a6,0x31c7,0x31a6,0x2966,0x3186,0x31a7,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x3187,0x3186,0x3186,0x31a7,0x31a6,0x3186,0x31a7,0x39c7,0x4208,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x18e3,0x1904,0x18e3,0x2145,0x2104,0x18a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x1082,0x2945,0x18e3,0x0861,0x0841,0x0020,0x10a3,0x2965,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x10a2,0x2124,0x2965,0x18c2,0x0020,0x0020,0x0841,0x18c3,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2103,0x31a6,0x1904,0x10a2,0x4228,0x3a07,0x3a08,0x39e8,0x31c7,0x31c6,0x3a07,0x31a7,0x31a7,0x39c8,0x39e8,0x4249,0x31c7,0x31a7,0x39e7,0x39e7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x39e7,0x39c7,0x2986,0x3186,0x31c7,0x39e7,0x3186,0x39e8,0x3a08,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x2985,0x31a6,0x39e7,0x39c7,0x39c7,0x31a6,0x31c7,0x31a6,0x2966,0x2966,0x2966,0x2966,0x31c7,0x31a6,0x31a6,0x31e7,0x31a6,0x2965,0x2986,0x2966,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x3186,0x2945,0x31a6,0x31c7,0x31a6,0x3186,0x2986,0x2945,0x2965,0x39c7,0x31a6,0x31a6,0x2986,0x2965,0x31a6,0x2965,0x31c7,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31c7,0x2145,0x31a6,0x31c6,0x2965,0x2945,0x2986,0x2985,0x2965,0x2144,0x2145,0x2124,0x31a6, +0x2124,0x2145,0x2145,0x2145,0x2145,0x2145,0x2966,0x2966,0x2945,0x2945,0x2985,0x3186,0x2945,0x2144,0x2945,0x3186,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2165,0x2145,0x2165,0x2966,0x2966,0x31a6,0x3186,0x2966,0x2946,0x2966,0x3186,0x2965,0x2985,0x29a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2965,0x31a6,0x31c6,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x31c6,0x39e7,0x31a6,0x2986,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x29a6,0x2986,0x2966,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a7,0x3186,0x3186,0x39e8,0x39c7,0x31a6,0x31a7,0x39c7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x4208,0x39e8,0x10c3,0x18c3,0x10c3,0x2124,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x0841,0x2945,0x2124,0x1082,0x0841,0x0020,0x0861,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x18a2,0x2103,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1081,0x18c3,0x18c3,0x18c3,0x20e4,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x2986,0x2965,0x1061,0x0020,0x0841,0x0861,0x2104,0x2104,0x0841,0x0020,0x0841,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x18e3,0x10a2,0x0882,0x39e7,0x39e7,0x39c7,0x31c7,0x31a6,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x3a08,0x39e7,0x31c7,0x39c7,0x39c6,0x3185,0x31a6,0x39e7,0x31a6,0x31c7,0x31a6,0x31c7,0x39c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a7,0x39c7,0x31c7,0x3186,0x3186,0x3186,0x39e7,0x2986,0x31a6,0x31c7,0x31a6,0x31c6,0x31a6,0x39e7,0x31c7,0x31c7,0x31c7,0x3186,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x31a7,0x31a7,0x31a6,0x31c7,0x31e7,0x31c7,0x3a08,0x3186,0x31a6,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31a6,0x3a08,0x2986,0x2965,0x3186,0x2986,0x2986,0x3186,0x2986,0x31a6,0x2986,0x3186,0x2986,0x31c7,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2124,0x2124,0x3186,0x31a6,0x2965,0x2965,0x2145,0x3186,0x3186, +0x2945,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2965,0x2945,0x2965,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2145,0x2945,0x2145,0x2965,0x2986,0x2145,0x2946,0x2966,0x3186,0x3186,0x2965,0x2165,0x2965,0x2986,0x2985,0x2985,0x2985,0x2965,0x3186,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x2986,0x2986,0x39e7,0x31a6,0x3186,0x31a6,0x31c6,0x3186,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x3186,0x31c7,0x29a6,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x2986,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a6,0x29a6,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a6,0x31c7,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x2124,0x0041,0x10a2,0x18c3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x0020,0x0020,0x2104,0x2965,0x10a2,0x0841,0x0841,0x0841,0x2104,0x2965,0x2124,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x0861,0x0861,0x0861,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1081,0x1081,0x1081,0x1081,0x1082,0x10a2,0x18c3,0x1082,0x1081,0x10a2,0x18c2,0x18c3,0x20e3,0x2104,0x18c3,0x18e3,0x18a2,0x2104,0x31a6,0x2124,0x0841,0x0020,0x0841,0x10a2,0x2945,0x18e3,0x0821,0x0841,0x0841,0x0861,0x1061,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x20e4,0x20e3,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x0881,0x0040,0x2124,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x39e7,0x31a6,0x39e7,0x4228,0x31a6,0x31c7,0x31c7,0x39c7,0x39c7,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x31c6,0x3a07,0x31c7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x3186,0x3186,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x31c7,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x4208,0x31c7,0x39c7,0x39e8,0x31c7,0x31a7,0x31c7,0x31c7,0x29a6,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x2986,0x31c7,0x39e7,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x2985,0x2986,0x2966,0x39e7,0x31a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2145,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2145,0x2945,0x2985,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145, +0x2124,0x2124,0x2165,0x2165,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2165,0x2165,0x2965,0x2966,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2965,0x2965,0x2145,0x2966,0x2986,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2985,0x2965,0x31a6,0x2986,0x2986,0x2985,0x2985,0x2986,0x29a6,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31c7,0x31a6,0x29a6,0x29a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x29a6,0x31a7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x31a6,0x39c7,0x31c7,0x39e7,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c7,0x31a7,0x39a7,0x31a7,0x31a7,0x31a7,0x39e7,0x31e6,0x3a07,0x3a07,0x31c7,0x3a28,0x31c7,0x10a2,0x0020,0x0020,0x0841,0x0841,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x0841,0x0020,0x18c3,0x2985,0x18e3,0x0861,0x0841,0x0020,0x10a2,0x2945,0x2965,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1081,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1082,0x1082,0x18c2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x18c2,0x18c3,0x10a2,0x3186,0x3186,0x18a2,0x0020,0x0841,0x0841,0x18e3,0x2966,0x10a2,0x0841,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x0881,0x2104,0x31a6,0x3a07,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x3a28,0x3a08,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x31c7,0x31a6,0x39c7,0x3a08,0x3186,0x39e8,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x31c6,0x31c7,0x31a6,0x2986,0x29a6,0x2965,0x2986,0x39e7,0x3186,0x4228,0x39c7,0x31a6,0x31a7,0x31a7,0x29a6,0x29a6,0x31c7,0x2986,0x31a6,0x31c7,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x2986,0x39c7,0x3186,0x2966,0x31a7,0x3186,0x31a6,0x31c6,0x2965,0x31c7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x39c7,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2986,0x2985,0x2145,0x2965, +0x2986,0x2986,0x2124,0x2145,0x2965,0x3186,0x2965,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2945,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x3186,0x2985,0x3186,0x31a7,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x2985,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31c6,0x31c6,0x31c6,0x31c6,0x29a6,0x31a6,0x31c7,0x31a6,0x31c7,0x3186,0x31a6,0x31a6,0x31c6,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x31c7,0x31a7,0x31c7,0x31c6,0x31e7,0x31c7,0x31c7,0x31a6,0x31a7,0x39c7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x31c7,0x31a6,0x2965,0x2925,0x2125,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x0861,0x1082,0x0861,0x0020,0x0861,0x2965,0x2945,0x1082,0x0841,0x0020,0x0841,0x2104,0x3186,0x2144,0x18a3,0x18c3,0x18c2,0x1082,0x1081,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x18a2,0x18a2,0x18c3,0x18c3,0x20e3,0x18e3,0x1082,0x2945,0x39e7,0x2944,0x0841,0x0020,0x0841,0x1082,0x2945,0x2945,0x0861,0x0020,0x0861,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x31c6,0x39e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e7,0x39c8,0x39e8,0x4229,0x39e8,0x31e7,0x3a08,0x39e8,0x31c7,0x39e7,0x3a07,0x31a6,0x3a08,0x3a08,0x31c7,0x31c7,0x2986,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x3186,0x31a7,0x31c7,0x31c7,0x3186,0x31a7,0x39e7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x39e7,0x31a6,0x3a08,0x2986,0x3a08,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x31a6,0x29a6,0x2986,0x2966,0x39e8,0x31a7,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x31e7,0x2965,0x31a6,0x2965,0x31c7,0x39e7,0x31a6,0x3186,0x2986,0x31a6,0x39e8,0x39e7,0x2986,0x31c7,0x31c7,0x3186,0x2966,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x3186,0x31a6,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2965,0x2145,0x31a6,0x3207,0x31c7,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2165,0x2965, +0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2965,0x2165,0x2145,0x2965,0x3186,0x2986,0x2965,0x2966,0x2986,0x2145,0x2965,0x31a6,0x2985,0x31c7,0x2985,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31c6,0x2986,0x31a6,0x2985,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31c7,0x31e7,0x31c7,0x2986,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x31a6,0x31a6,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c7,0x39e8,0x31a7,0x2986,0x3186,0x31c6,0x39e7,0x39e7,0x31a7,0x39c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c6,0x29a6,0x31a7,0x31c7,0x31a6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x31c6,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31c7,0x39e7,0x3a08,0x31e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0020,0x2104,0x3186,0x18e3,0x0861,0x0841,0x0021,0x10a2,0x2945,0x2985,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c2,0x0861,0x1082,0x10a2,0x18a2,0x18c3,0x18c3,0x2103,0x18c3,0x18e4,0x4208,0x31a6,0x18c2,0x0020,0x0841,0x0861,0x18e3,0x3186,0x18e4,0x0020,0x0841,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x31c7,0x39e8,0x3a08,0x39e8,0x39e8,0x31e8,0x3a08,0x39c7,0x31c7,0x4208,0x39e7,0x31e6,0x31c6,0x3a08,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x31c6,0x31c7,0x31c7,0x2986,0x31a6,0x3a08,0x39e8,0x3187,0x2986,0x2986,0x31a6,0x2985,0x31c6,0x31a6,0x2986,0x31a6,0x2986,0x39e7,0x39e7,0x2986,0x39e7,0x31a6,0x31c7,0x31a6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x29a6,0x31a7,0x39e8,0x39c7,0x3186,0x39e8,0x3a08,0x31c7,0x31c6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x39c7,0x31a6,0x31a6,0x2965,0x39c7,0x39c7,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3186,0x2986,0x2965,0x2965,0x2986,0x3186,0x2965,0x2124,0x2145,0x2986,0x29a6,0x39e7,0x31a6,0x31a6,0x2945,0x2125,0x2945,0x2986,0x2145,0x2965,0x2965,0x2124,0x2965,0x2145,0x2145, +0x2145,0x2945,0x2985,0x3186,0x2965,0x2145,0x2145,0x2144,0x2145,0x2165,0x2145,0x2165,0x2966,0x2165,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2986,0x3186,0x2966,0x2965,0x2986,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6,0x31c7,0x3186,0x31a6,0x31c6,0x31a6,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x3186,0x31a6,0x2986,0x3186,0x39c7,0x31a6,0x31a6,0x31c7,0x39c7,0x31c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a6,0x31a6,0x39e7,0x31c7,0x31a7,0x39c7,0x31a6,0x3186,0x31c7,0x39e7,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x39c7,0x39e7,0x31c7,0x39e8,0x39c8,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x3186,0x31a6,0x31e7,0x31c7,0x31a6,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a3,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x0020,0x1082,0x2965,0x2945,0x10a2,0x1082,0x0841,0x0841,0x18e3,0x2965,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x18c3,0x0861,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x31a7,0x39e7,0x2104,0x0841,0x0020,0x0841,0x1082,0x2965,0x3186,0x1082,0x0020,0x0861,0x1082,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18e3,0x18c3,0x20e3,0x2104,0x31c7,0x39e7,0x3a08,0x31c7,0x31c7,0x39e8,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x3a28,0x39e7,0x4228,0x3a07,0x31c7,0x31c7,0x31a7,0x31c7,0x39e7,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x39c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31c7,0x3186,0x39e7,0x31a6,0x2986,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x3186,0x39c7,0x39c7,0x31c7,0x31a7,0x39e7,0x31c7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0x31a6,0x31a7,0x39e8,0x3186,0x2965,0x39c7,0x3a07,0x31a6,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31e7,0x29a6,0x2966,0x3186,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x2945,0x2965,0x39c7,0x3186,0x2124,0x2986,0x3186,0x2965,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965, +0x2945,0x2124,0x2965,0x31a6,0x2985,0x2145,0x2144,0x2945,0x2165,0x2986,0x2966,0x2945,0x2986,0x2165,0x2165,0x2145,0x2966,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2985,0x2986,0x29a6,0x2165,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2986,0x3186,0x2966,0x2965,0x2986,0x2966,0x2986,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x2986,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e8,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31c7,0x31a6,0x31c7,0x31c7,0x31e7,0x39e7,0x31a7,0x31c7,0x3a08,0x39c7,0x39c7,0x31a7,0x3186,0x31c7,0x31c7,0x31c8,0x31c8,0x39e7,0x31e7,0x3187,0x39c7,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31a6,0x31a6,0x2986,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x18e3,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x10a2,0x0841,0x0020,0x20e4,0x3186,0x2104,0x18a3,0x1082,0x0841,0x0861,0x2104,0x2945,0x2124,0x18c3,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x10a2,0x10a2,0x18c3,0x18a2,0x10a2,0x18c3,0x3186,0x3a08,0x2945,0x1081,0x0020,0x0861,0x1082,0x2104,0x31a7,0x2104,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x31a7,0x31e7,0x31e7,0x39e8,0x31a7,0x39e8,0x3a08,0x3a28,0x39e7,0x4228,0x39e7,0x3a08,0x31c7,0x31c7,0x39c8,0x39c7,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x31a7,0x31c7,0x31c7,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x39c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x31a6,0x3186,0x31a6,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x31a6,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x2986,0x31a6,0x31a7,0x31a7,0x4208,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a6,0x2985,0x31c7,0x3186,0x3186,0x3186,0x2965,0x2985,0x31a6,0x29a6,0x2986,0x2985,0x2945,0x31a6,0x2965,0x2945,0x3186,0x39c7,0x2945,0x2966,0x2945,0x31a7,0x39c7,0x2966,0x2965,0x2945,0x2965,0x2965,0x2986,0x2986,0x2124,0x2945,0x2966,0x2945, +0x2124,0x2945,0x2985,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2966,0x2945,0x2965,0x2965,0x2966,0x2965,0x2965,0x2986,0x2966,0x2986,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2945,0x2965,0x31a6,0x31c7,0x2965,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31c7,0x39c7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2986,0x2986,0x39c7,0x31c7,0x3186,0x2986,0x31c7,0x29a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x31c7,0x31c7,0x39e8,0x31c8,0x39e8,0x39e7,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x31c7,0x39e8,0x31c8,0x31a7,0x31a7,0x39e8,0x39a7,0x31c7,0x31a6,0x31a6,0x39e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x2104,0x18e3,0x1082,0x10a2,0x10a2,0x0020,0x0862,0x2925,0x2966,0x2104,0x18c3,0x1082,0x0841,0x1062,0x2104,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2965,0x39a7,0x2945,0x1082,0x0841,0x1082,0x18a3,0x2104,0x31a6,0x2965,0x0862,0x0020,0x0861,0x1082,0x1082,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x2104,0x20e4,0x2125,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x39e7,0x31c7,0x31e7,0x3a08,0x31c7,0x39e8,0x39e8,0x3a08,0x3a08,0x39e7,0x31c7,0x3a28,0x31e7,0x31c7,0x31c7,0x39e8,0x31c7,0x29a7,0x31c7,0x39e8,0x31c7,0x3186,0x31c7,0x31a6,0x31c7,0x39e8,0x39e7,0x3186,0x31a6,0x31a7,0x31e7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x31c7,0x31c7,0x31a6,0x31a6,0x39e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31c7,0x31c7,0x39c7,0x31c7,0x3186,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x2966,0x2965,0x31c7,0x39e7,0x2945,0x2986,0x4208,0x39c7,0x31c6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2986,0x3186,0x2966,0x2965,0x2965,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x3186,0x3186,0x3186,0x2966,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x31a7, +0x2945,0x2965,0x2965,0x2985,0x2985,0x2145,0x2145,0x2144,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2965,0x2986,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2985,0x2985,0x2986,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x29a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x31a6,0x31c6,0x29a6,0x2986,0x2986,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x31c6,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x31e7,0x31e7,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x31c7,0x29c6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x31c7,0x39e7,0x3a07,0x3a08,0x39c7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2124,0x18c3,0x10a3,0x18c3,0x18c3,0x10a2,0x18e4,0x2945,0x10a2,0x1082,0x18c3,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2104,0x18c3,0x1082,0x0841,0x1082,0x18e3,0x2944,0x2945,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x2965,0x3186,0x2124,0x1082,0x0841,0x1082,0x18e3,0x2104,0x31a6,0x39a7,0x18c3,0x0020,0x0841,0x1082,0x1082,0x1082,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x20e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3a08,0x31c7,0x31e7,0x31c7,0x39e7,0x4208,0x39c7,0x31a6,0x39e7,0x3a07,0x39e7,0x3207,0x31e7,0x31e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x39c7,0x2986,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a7,0x31e7,0x31e7,0x29a6,0x31a6,0x31c7,0x31c7,0x2985,0x31c6,0x31a6,0x31c6,0x31e7,0x31c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31a7,0x2966,0x31a6,0x39e7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31a6,0x3186,0x31a6,0x29a6,0x2986,0x2965,0x29a6,0x31a6,0x31c6,0x39c7,0x2986,0x3186,0x31c7,0x2986,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31c7,0x29a6,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x2986,0x29a6,0x2965,0x2145,0x2945,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x2945,0x2965, +0x2945,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2986,0x2986,0x31c7,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2985,0x2986,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2165,0x29a6,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31c6,0x31c7,0x31c6,0x31e7,0x31c6,0x31c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x31c6,0x29a6,0x31c7,0x31e7,0x31a6,0x31a7,0x31c7,0x31a7,0x39a7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x3a08,0x39c7,0x31c7,0x31c7,0x31c6,0x3a07,0x39e7,0x31e7,0x3a08,0x3a08,0x39e8,0x39e8,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a28,0x3a08,0x39e7,0x3a08,0x3a28,0x3a28,0x3a28,0x3a08,0x31c7,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x10a3,0x18c3,0x18c3,0x10a2,0x18c3,0x2966,0x2945,0x1082,0x18c2,0x10a2,0x0841,0x0841,0x18e3,0x2966,0x2945,0x20e3,0x18c3,0x10a2,0x0861,0x1082,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x18c2,0x18c3,0x18e4,0x2125,0x2965,0x2965,0x2124,0x1082,0x0861,0x1082,0x18e3,0x2104,0x3186,0x39c7,0x2924,0x0861,0x0841,0x1061,0x1082,0x1082,0x18e3,0x2125,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2925,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x3a08,0x3a08,0x39e8,0x39e7,0x4208,0x4208,0x39e8,0x39c7,0x4208,0x4228,0x4228,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x4a6a,0x4229,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x39e7,0x3a08,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x39e8,0x39e7,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x31e7,0x31c7,0x31a6,0x31c7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a7,0x39e7,0x4208,0x39e7,0x31c7,0x39e7,0x31c7,0x31c7,0x31a6,0x31a7,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x31c7,0x31a6,0x4228,0x39c7,0x31a7,0x3186,0x39e7,0x29a6,0x2985,0x31a6,0x31a6,0x39c7,0x3186,0x2945,0x2966,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x2145,0x31a7,0x31a6,0x2986,0x2966,0x2945,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2124,0x2124,0x2145,0x3186,0x2925,0x2966,0x31a6,0x31a6,0x2986,0x31a6,0x3186,0x2945,0x2125, +0x3186,0x3186,0x2945,0x2124,0x2945,0x2945,0x3166,0x2965,0x3186,0x2986,0x2986,0x2986,0x2986,0x3186,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c6,0x31a6,0x31c7,0x29a6,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x3186,0x2986,0x2986,0x3186,0x39c7,0x3186,0x3186,0x2986,0x2986,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2986,0x31a7,0x2966,0x2986,0x2946,0x2986,0x2986,0x2966,0x2966,0x3186,0x3186,0x3186,0x3166,0x3167,0x3167,0x31a7,0x2966,0x2966,0x3187,0x3166,0x3187,0x3187,0x2945,0x3166,0x3166,0x3187,0x3166,0x3186,0x3187,0x2966,0x3187,0x2946,0x2946,0x2966,0x2946,0x2966,0x39e8,0x39c8,0x2966,0x2946,0x3146,0x3966,0x3126,0x2926,0x2946,0x2966,0x2946,0x2906,0x2926,0x20c5,0x2905,0x2905,0x2946,0x2105,0x20e5,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x2124,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x2104,0x39c7,0x18c3,0x1082,0x18a2,0x1082,0x0841,0x0861,0x2104,0x2965,0x2945,0x2103,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e4,0x2104,0x2945,0x2965,0x2945,0x2103,0x10a2,0x1062,0x10a2,0x18e3,0x2104,0x3186,0x39e7,0x2965,0x1082,0x0861,0x0861,0x10a2,0x1082,0x10a2,0x2966,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2125,0x2945,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x20e4,0x2105,0x2966,0x20c4,0x2105,0x2926,0x2105,0x2946,0x2946,0x3166,0x3187,0x2947,0x3167,0x39a7,0x31c7,0x2987,0x31c7,0x39e8,0x3187,0x2966,0x31a7,0x3187,0x2986,0x31c7,0x31a7,0x3186,0x39a6,0x3186,0x39e8,0x31a7,0x31a7,0x3186,0x2966,0x3166,0x3186,0x3186,0x2966,0x2966,0x31a7,0x39c7,0x31a7,0x39c7,0x3187,0x31a7,0x31a7,0x39a7,0x39a7,0x39a7,0x31a7,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x39c7,0x39c8,0x39c7,0x31c7,0x39c8,0x39e8,0x31c7,0x31a7,0x31a7,0x39a7,0x39c7,0x39c7,0x39c7,0x39a7,0x4a6a,0x3a08,0x39e8,0x31a6,0x39c7,0x39c7,0x39e7,0x39a6,0x39a6,0x39c7,0x39e8,0x39e7,0x39e8,0x4228,0x4228,0x4208,0x41e8,0x41e7,0x41e7,0x39e7,0x41e8,0x4208,0x3a07,0x4208,0x4249,0x4228,0x4208,0x39e7,0x4208,0x39e7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39c7, +0x3186,0x3186,0x2945,0x2945,0x2985,0x2945,0x3165,0x3165,0x3166,0x2945,0x2945,0x3166,0x2965,0x3166,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39a6,0x39a6,0x31a6,0x3186,0x3186,0x3166,0x3186,0x3186,0x31a6,0x39c6,0x31a6,0x31a7,0x3186,0x3187,0x39a7,0x39a7,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x39c7,0x39c7,0x31a7,0x39a7,0x39a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x41e7,0x4207,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4a29,0x4a49,0x528a,0x528a,0x4a6a,0x526a,0x528b,0x528a,0x528a,0x528a,0x526a,0x52ab,0x5aab,0x52ab,0x5aab,0x5acb,0x5acb,0x5acb,0x5acc,0x5aec,0x630d,0x630d,0x632d,0x632d,0x5b0c,0x5b0d,0x5b0c,0x632d,0x632d,0x632d,0x636e,0x634e,0x634e,0x634e,0x632e,0x6b8e,0x6b8e,0x738f,0x6b8f,0x73b0,0x6b6e,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2966,0x2985,0x10a2,0x10a2,0x18c3,0x1082,0x0841,0x1082,0x2124,0x2965,0x2124,0x20e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2925,0x2945,0x2945,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x3186,0x39e8,0x3186,0x10a2,0x0841,0x1081,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x2965,0x2945,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2965,0x94b3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8472,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x8472,0x7c32,0x7c31,0x8452,0x8451,0x8c72,0x8451,0x8431,0x8431,0x8451,0x8c92,0x8c93,0x8472,0x8c92,0x8c72,0x8452,0x8472,0x8452,0x7c11,0x7c51,0x7c51,0x7c31,0x8451,0x7c31,0x8471,0x8471,0x8451,0x8c92,0x8cb3,0x8c92,0x8c92,0x8451,0x8451,0x8431,0x8451,0x8431,0x7bf0,0x7c10,0x7c10,0x8451,0x7c51,0x73ef,0x8451,0x8431,0x7c30,0x7c30,0x73ef,0x6baf,0x73cf,0x7c10,0x7bf0,0x7c10,0x7c10,0x6baf,0x6baf,0x73af,0x6b8e,0x73cf,0x73ef,0x6baf,0x6bae,0x7c0f,0x7c0f,0x73cf,0x73af,0x73cf,0x7bef,0x73ef,0x7c10,0x73ef,0x73ef,0x73ef,0x7bf0,0x7bef,0x6bae,0x6b8e,0x6baf,0x6b8e,0x6b6e,0x73d0,0x73cf,0x634d,0x636d,0x634d,0x634c,0x5b2c,0x632c,0x634d,0x632d,0x632c,0x5b0c,0x5b4d,0x634d,0x5b2c,0x5b0c,0x630c,0x5acb,0x5acb,0x5b0c,0x5aeb, +0x4a69,0x5289,0x5aca,0x5aca,0x52aa,0x528a,0x5acb,0x5aeb,0x630c,0x632c,0x630c,0x632c,0x6b4d,0x632c,0x630c,0x632c,0x634c,0x634c,0x632c,0x630c,0x6b4d,0x6b4d,0x634c,0x634d,0x632d,0x6b4d,0x6b6d,0x6b4d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x8430,0x8451,0x8451,0x7c10,0x7bef,0x6bae,0x6b8e,0x73ae,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6d,0x6b6d,0x6b8e,0x738e,0x73ae,0x7bf0,0x7bf0,0x7c10,0x8410,0x8430,0x8450,0x8410,0x7c10,0x7c10,0x7c30,0x7c10,0x7c10,0x7c10,0x7bf0,0x7c10,0x8450,0x8451,0x8451,0x8cb2,0x94b3,0x8c92,0x8c92,0x8cb3,0x8cb3,0x94f4,0x9d34,0x9d34,0x9d54,0xa575,0xa555,0x9d34,0x9d34,0x9d14,0x94f3,0x9d14,0x9d14,0xa555,0xb5d7,0xa576,0xad97,0xadb7,0xadd8,0xadf8,0xa596,0xadb6,0xa5b6,0xa576,0xadf8,0xadd7,0xadd7,0xa5d7,0xadd8,0xadd8,0xadd8,0xb618,0xb638,0xb618,0xb5f8,0xb619,0xadd7,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18e3,0x2124,0x2945,0x18e3,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x3186,0x2124,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x1082,0x2124,0x2945,0x2124,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2965,0x2945,0x2924,0x2104,0x2104,0x2104,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2965,0x2965,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x39c7,0x3186,0x18c3,0x0841,0x0861,0x10a2,0x20e3,0x18c3,0x2945,0x39e8,0x2945,0x18e4,0x18e3,0x18c3,0x2104,0x2965,0x3186,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x3186,0xadf8,0xb619,0xb619,0xb639,0xb618,0xadd7,0xadb7,0xadd7,0xadd8,0xadd8,0xa576,0x9535,0x8cf4,0x8d14,0x9515,0x9535,0x9515,0x9514,0x94f4,0x9514,0x94f4,0xa596,0xa597,0x9d35,0x9d56,0x9d35,0x94f4,0x94f4,0x9515,0x8cd4,0x8cb3,0x8cd3,0x8cd3,0x8cf4,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x8492,0x8cd3,0x8cb2,0x8472,0x8cd3,0x94d3,0x8452,0x7c31,0x7c31,0x7431,0x8472,0x94f4,0x8cb3,0x8cd3,0x8cd3,0x8492,0x7c51,0x73ef,0x73ef,0x7c31,0x8472,0x7c31,0x73f0,0x73d0,0x6bd0,0x6bcf,0x73ef,0x73f0,0x73f0,0x6bcf,0x6baf,0x73d0,0x7c31,0x7c51,0x7410,0x7c10,0x73f0,0x73cf,0x73f0,0x73ef,0x7410,0x73f0,0x73f0,0x73d0,0x73cf,0x6b8f,0x6bcf,0x6b8e,0x638e,0x8431,0x6baf,0x5b2d,0x5b0d,0x5b2c,0x636d,0x636d,0x5b4d,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52cb,0x5b2c,0x5b2d,0x5b0c,0x5aed,0x5aec,0x5aec,0x52cb,0x4acb,0x52eb, +0x630c,0x5aeb,0x630c,0x6b4c,0x630c,0x630b,0x6b2c,0x6b4d,0x7bef,0x73ce,0x6b8d,0x73cf,0x7bef,0x73cf,0x6bae,0x6bae,0x73ef,0x6bce,0x6b8e,0x6b8e,0x73cf,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x73af,0x73cf,0x7bf0,0x7c10,0x7c0f,0x7bef,0x7bf0,0x7c10,0x73cf,0x73cf,0x73cf,0x7c10,0x8451,0x8471,0x8cd3,0x8471,0x7c51,0x7410,0x6baf,0x73af,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x7c10,0x7c11,0x7c11,0x7c32,0x8452,0x8452,0x8451,0x8452,0x8452,0x8451,0x7c11,0x7c11,0x8432,0x8472,0x8452,0x7c11,0x7c11,0x7c31,0x8452,0x8452,0x8c92,0x94d4,0x8cd3,0x8472,0x8cb3,0x8cd4,0x94f4,0x9d14,0x9d55,0xa576,0xa597,0xadd7,0x9d56,0x9515,0x9d35,0x9d15,0x9d35,0x9d35,0xad97,0xbe19,0xa577,0xadb7,0xb5f8,0xadb7,0xa597,0x9d76,0xad97,0xadd8,0x9d56,0xa597,0xad97,0xa597,0xa597,0xadb8,0xadd8,0xbe39,0xb619,0xb5f9,0xb5f9,0xadd8,0xb5f8,0xadd8,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a3,0x18e3,0x2104,0x2966,0x2924,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x10a2,0x2104,0x2945,0x2124,0x18e4,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x2104,0x2965,0x3186,0x3185,0x3186,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x2924,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2966,0x31a6,0x2965,0x18c2,0x0841,0x0861,0x1082,0x18e3,0x18e3,0x2125,0x4208,0x31a7,0x2124,0x1904,0x18e3,0x18e3,0x2125,0x3186,0x2965,0x2124,0x2104,0x2104,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d77,0xadd9,0xa5b8,0xa598,0xa597,0x9d35,0xa576,0xa597,0xa556,0xadb7,0xb5f8,0x9d55,0x8493,0x8cb3,0x9515,0x9515,0x84b3,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x9d35,0x9d56,0x9d36,0xa577,0xa556,0x9d15,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8c93,0x8492,0x8c93,0x8473,0x8c93,0x94d4,0x8cb3,0x8c93,0x8493,0x7411,0x8472,0x8cb3,0x8c72,0x8c93,0x8cb3,0x8452,0x7c31,0x73f1,0x7c11,0x7c11,0x8492,0x8cb3,0x8c92,0x8472,0x7c52,0x7411,0x73f0,0x7c11,0x7410,0x7c31,0x73f1,0x73d0,0x6bd0,0x73f1,0x73f0,0x6baf,0x73cf,0x6baf,0x638f,0x6baf,0x6bd0,0x7c11,0x7c10,0x73f0,0x7c10,0x7bf0,0x73af,0x73cf,0x7c10,0x8c72,0x7c10,0x73af,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73af,0x8431,0x73ef,0x636e,0x636e,0x634d,0x5b2d,0x632d,0x634e,0x634e,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x5aec,0x5aec,0x5aed,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x52cb, +0x630c,0x630c,0x6b4d,0x632c,0x5aeb,0x62ec,0x6b2d,0x632c,0x73ce,0x73ae,0x738e,0x738e,0x73af,0x738e,0x6b6d,0x738e,0x73cf,0x73af,0x6b8e,0x73ae,0x73cf,0x73af,0x738e,0x738e,0x738e,0x6b8e,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x73cf,0x73af,0x738f,0x6b8e,0x73af,0x73cf,0x73cf,0x8451,0x8c72,0x8c72,0x8451,0x7bf0,0x6bae,0x73ae,0x73ae,0x6b6e,0x632d,0x6b6e,0x73af,0x7c10,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7bf0,0x7c11,0x7c11,0x8431,0x8431,0x8432,0x8431,0x7c31,0x7c11,0x7c31,0x8451,0x7c11,0x8431,0x7c31,0x7c31,0x8451,0x8472,0x8472,0x8472,0x8cd3,0x94d4,0x94d4,0x94f4,0x8cb3,0x94d4,0x94d4,0x9cf4,0xa556,0xa556,0xad97,0xa576,0x9d35,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xadb7,0xa597,0xb5d8,0xadd8,0xa556,0xa556,0xad77,0xadb7,0xa597,0xa597,0xa597,0xadb7,0xadd8,0xadd8,0xadd8,0xbe19,0xc67a,0xce9a,0xce9b,0xcebb,0xc67b,0xbe19,0xb5d8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2125,0x2965,0x2104,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x2104,0x2124,0x10a2,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2124,0x2124,0x18e4,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x2945,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x3186,0x3185,0x3186,0x3185,0x3185,0x3185,0x3165,0x2944,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2124,0x2965,0x3186,0x2945,0x10a2,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x2104,0x39c7,0x39c7,0x2925,0x2104,0x18e4,0x2104,0x2104,0x2966,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadd8,0xadd8,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xa597,0xad97,0x94f4,0x8493,0x9535,0x94f5,0x9515,0x94f4,0x9d35,0x94f4,0x94f4,0x8cd4,0x9d35,0x9d15,0x94d4,0xa576,0x9d35,0x9d35,0x9d35,0x94f4,0x9d15,0x9d55,0x9515,0x8cb3,0x8cb3,0x8cb3,0x94d4,0x94f4,0x8cb3,0x94d4,0x8cd4,0x8493,0x8452,0x8c93,0x8cb3,0x8cb3,0x9514,0x7c31,0x7c31,0x8451,0x8451,0x8472,0x7c31,0x7c11,0x7c31,0x7c72,0x7c52,0x7c52,0x7c11,0x73f0,0x73f0,0x73f0,0x73f0,0x7411,0x7410,0x7411,0x7c11,0x6bcf,0x6bcf,0x6bcf,0x6baf,0x6bae,0x6bae,0x73f0,0x7410,0x7430,0x7c10,0x8431,0x6b8f,0x6baf,0x73f0,0x7c30,0x7c10,0x73cf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x8431,0x73af,0x636e,0x6b6f,0x6b6e,0x634d,0x5b0d,0x5b0d,0x5b2d,0x5b0d,0x5b2d,0x636d,0x636e,0x634d,0x5b0c,0x52ab,0x52cb,0x5aeb,0x5b0b,0x632c,0x52cb,0x52aa,0x5aeb,0x5aec, +0x634d,0x738e,0x6b8d,0x632c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x6b4d,0x738e,0x7baf,0x738e,0x736e,0x6b6e,0x738f,0x73b0,0x73cf,0x7bd0,0x7bcf,0x8430,0x8451,0x7c10,0x7bcf,0x738f,0x738e,0x73af,0x7bf0,0x73cf,0x6bae,0x6baf,0x73ef,0x6baf,0x6b8f,0x73d0,0x8411,0x8451,0x8451,0x8c71,0x8c72,0x8451,0x8c72,0x8430,0x7bef,0x73ef,0x73af,0x6b6e,0x636e,0x636e,0x73d0,0x6baf,0x6baf,0x6baf,0x73cf,0x73f0,0x7bf0,0x7c11,0x7bf0,0x7c11,0x8432,0x8452,0x7c31,0x7c10,0x7c31,0x8451,0x8451,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8472,0x8452,0x8431,0x8c72,0x8452,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x9d35,0x9d35,0x9d35,0xa576,0xa556,0xad76,0xa576,0xa576,0x9d56,0x9d35,0x9d36,0xa576,0xad97,0xadd8,0xad97,0xa556,0xa576,0xa597,0xadd8,0xadd7,0xa576,0xad97,0xa5b7,0xa5b7,0xadd8,0xadd8,0xb5f9,0xc65a,0xc67a,0xcebb,0xd6fb,0xd6fb,0xd6dc,0xc67a,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2945,0x2965,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2124,0x2924,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2945,0x2965,0x2965,0x2124,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x18a2,0x18e3,0x3186,0x31a6,0x2945,0x2124,0x2104,0x20e4,0x2104,0x2945,0x31a6,0x2965,0x2124,0x2124,0x20e3,0x2104,0x2104,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadf8,0xadd8,0xa577,0x9d76,0x9d56,0x9d36,0xa576,0xa5b7,0x9515,0x94f4,0x8cf4,0x9d36,0x8cb4,0x8cb4,0x9d56,0xadb7,0x94f4,0x9d36,0x9d15,0x9d35,0x8cb3,0x9d15,0x94f4,0x94d4,0x8cd4,0x9d15,0x9d15,0x94f4,0x9d35,0x9d55,0x9d15,0x94f4,0x8cd3,0x94f4,0x9514,0x9d35,0x94f5,0x9d15,0x8cd4,0x8cb3,0x8c93,0x8c93,0x8cb3,0x94f4,0x8c93,0x8cb3,0x8472,0x8c92,0x8c92,0x8451,0x7c31,0x7c31,0x7c52,0x8493,0x8cb3,0x7c31,0x6bcf,0x8493,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x73f0,0x6bd0,0x6baf,0x6baf,0x6baf,0x73af,0x73ef,0x7410,0x73f0,0x73ef,0x7c50,0x7c30,0x73f0,0x6baf,0x73cf,0x73f0,0x7c10,0x73cf,0x6baf,0x6b8e,0x73af,0x8c92,0x7bf0,0x632d,0x6b8e,0x6b8e,0x634e,0x5b0d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x634d,0x632d,0x5b0c,0x5aec,0x52cb,0x52ab,0x52aa,0x52eb,0x6bae,0x5aeb,0x52ab,0x5aec,0x630c, +0x6b4d,0x73ae,0x738e,0x630c,0x632c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x738f,0x6baf,0x73af,0x8411,0x8451,0x94d2,0x8471,0x7c10,0x7bf0,0x6b8e,0x6b8e,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73cf,0x73af,0x738e,0x8431,0x8c92,0x8451,0x8451,0x8c72,0x8472,0x8451,0x8471,0x8470,0x7c10,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x6baf,0x73b0,0x73d0,0x73d0,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x8431,0x8431,0x8431,0x8431,0x8431,0x8451,0x8451,0x8431,0x8431,0x7c11,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x8452,0x8c72,0x8c93,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x9d35,0xa596,0xa556,0x9d35,0x9d56,0xa576,0xa556,0x9d56,0x9d35,0x9d35,0xa556,0xa576,0xa576,0xa576,0x9d56,0x9d56,0xa576,0xad97,0xadb7,0xad97,0xa556,0xadb7,0xa597,0xa597,0xadd8,0xb5d8,0xbe5a,0xc67b,0xc65a,0xce9b,0xd6dc,0xc67a,0xd6db,0xdf1c,0xbe39,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x2945,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18a2,0x18c2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x2124,0x2124,0x2104,0x18e4,0x20e3,0x18e3,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2124,0x2945,0x2945,0x2124,0x2103,0x18a2,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x18c3,0x2945,0x3166,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x39a7,0x31a6,0x2924,0x2124,0x2104,0x18e3,0x2104,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xadd8,0xadf9,0xadd8,0xa597,0x9d56,0x9536,0x9515,0x9d16,0x9515,0x9d56,0xa597,0x9d35,0x8cf4,0x9d56,0x9515,0x8cf4,0xadb7,0xadb7,0x9cf4,0x9d15,0x8cd3,0x8cb3,0x8cf4,0xa597,0x8cb3,0x8493,0x8cb3,0x9514,0x9514,0x9514,0x9515,0x9515,0x9515,0x9535,0x9515,0x9d35,0x9515,0x9d15,0x9d35,0x9d15,0x8cb3,0x8cb4,0x94f4,0x94d4,0x94d4,0x9d15,0x9d15,0x9d15,0x94d4,0x8452,0x8452,0x8472,0x8452,0x8c93,0x8472,0x8cb3,0x8cb3,0x8432,0x73f0,0x73f0,0x73f0,0x6bcf,0x6baf,0x6bd0,0x73f0,0x7410,0x73f0,0x6baf,0x6bcf,0x73d0,0x7c10,0x7c10,0x73ef,0x73cf,0x7c11,0x8431,0x73f0,0x73f0,0x6baf,0x6baf,0x73d0,0x73f0,0x7bf0,0x73cf,0x73cf,0x8c51,0x7c11,0x73af,0x6b6e,0x6b6e,0x73af,0x6b6e,0x634d,0x634d,0x5b2c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x73cf,0x6b6d,0x52ab,0x630c,0x5acb, +0x632c,0x6b4c,0x6b4d,0x630c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x634d,0x6b6e,0x738e,0x738e,0x6baf,0x73af,0x7bd0,0x8410,0x8c91,0x73ef,0x73af,0x738f,0x6b8e,0x6b8e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x8c72,0x8c72,0x8471,0x8451,0x8451,0x8471,0x8471,0x8451,0x7c0f,0x7bef,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73d0,0x73f0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c31,0x8431,0x8472,0x8451,0x8451,0x8451,0x8431,0x7c31,0x7c31,0x7c31,0x7411,0x7c11,0x8452,0x8452,0x8472,0x8c72,0x8c93,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x9515,0x9d35,0x94f5,0x9d36,0x9d56,0xa556,0xad97,0x9d36,0x9d56,0xa556,0x9d56,0x9d56,0xa576,0xad97,0x9d56,0x9d35,0xa576,0xa556,0xa556,0xa576,0xa597,0xadd8,0xa597,0xa597,0xbdf9,0xbe3a,0xb639,0xc65b,0xcebb,0xc67b,0xc65a,0xd6fc,0xdf1c,0xc67a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x2124,0x3186,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x18c2,0x10a2,0x1082,0x1081,0x1081,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2945,0x2944,0x2124,0x20e3,0x10a2,0x10a2,0x18a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x2124,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x3186,0x39c7,0x2945,0x2124,0x2124,0x2104,0x2104,0x1904,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xb619,0xb619,0xa597,0x9d56,0x9515,0x9536,0x94f5,0x9d15,0x8cd4,0x94f5,0xa576,0xa577,0x9535,0x9535,0x9d36,0xa597,0xb619,0xa576,0x9d36,0x94f4,0x8cb3,0x8cb3,0x9d55,0x9d76,0x8473,0x8472,0x8cb3,0x8cb3,0x8492,0x8cb3,0x9515,0x9d15,0x9515,0x9535,0x9515,0x9d35,0xa556,0xa576,0xa576,0xb5b8,0xad97,0x8cd4,0x9d56,0x9d35,0x94d4,0xa535,0x8cb3,0x94d4,0x94f4,0x8cb3,0x8472,0x8472,0x8472,0x94d3,0x8cb3,0x8c93,0x8cd4,0x8452,0x7bf1,0x73d0,0x73d0,0x73f0,0x6bd0,0x7410,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x73d0,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7c11,0x7c11,0x73f0,0x73d0,0x6b8f,0x6baf,0x73d0,0x73d0,0x73cf,0x73ef,0x8471,0x7c31,0x6baf,0x6baf,0x6baf,0x6bae,0x6baf,0x6b8e,0x6bae,0x636d,0x5b4d,0x52ec,0x5b0c,0x5aec,0x52ab,0x52cb,0x5b0c,0x52ec,0x4aab,0x52cb,0x52cb,0x5aeb,0x6b6d,0x73cf,0x52eb,0x5b0c,0x52aa, +0x632c,0x6b2c,0x632c,0x630c,0x5aeb,0x630c,0x630c,0x5b0b,0x634d,0x630c,0x630c,0x632d,0x632c,0x632d,0x6b4d,0x738e,0x6baf,0x7bf0,0x7bf0,0x7bef,0x7c10,0x73ef,0x738e,0x736e,0x738e,0x738e,0x6b6e,0x73af,0x7bcf,0x73cf,0x73ae,0x6b8e,0x73af,0x8431,0x8c92,0x94b3,0x8c92,0x8451,0x8451,0x8c92,0x7c31,0x73f0,0x7c10,0x7c10,0x6baf,0x6b8e,0x6baf,0x73af,0x738f,0x6b8f,0x6b8f,0x73cf,0x73f0,0x7c10,0x73ef,0x7c10,0x7c10,0x73f0,0x8451,0x8452,0x8472,0x8cb3,0x8472,0x8471,0x8451,0x7c10,0x7c10,0x8431,0x7c31,0x7c31,0x8452,0x8432,0x8452,0x8493,0x8492,0x8472,0x8c93,0x8493,0x8493,0x8493,0x7c52,0x7c73,0x8493,0x8cd4,0x9d36,0x9d56,0x9d36,0xb5d8,0xa597,0xa556,0x9d35,0x9d35,0xa556,0xa576,0xa597,0x9d56,0x9d35,0x9d56,0x9d15,0x9515,0xa556,0xb5d7,0xb5d8,0xa577,0xa557,0xb5d8,0xb5f8,0xadb8,0xb5f9,0xc67b,0xc67a,0xc67a,0xd6db,0xd6db,0xc65a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2965,0x2965,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18c2,0x2104,0x2104,0x2924,0x2944,0x2124,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2925,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x18a2,0x18c3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2125,0x3186,0x31a7,0x2965,0x2124,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xadb8,0xadb8,0xa597,0x9d56,0x9d35,0x9d15,0x9d15,0x94f5,0x94d4,0x9515,0x9d35,0xa577,0xa597,0x9d56,0x9d36,0xadb7,0xadb8,0x94f5,0xa577,0x9d56,0x94f4,0x8cd3,0x9d35,0x94d4,0x8452,0x8452,0x8cb3,0x8472,0x8472,0x8472,0x8cf4,0x9514,0x9d15,0x9cf4,0x94f4,0xa556,0xa596,0xa597,0xad97,0xb5f8,0xb5f8,0xa576,0x9515,0x9d15,0x94f4,0x9d14,0x94f4,0x8492,0x8cb3,0x8492,0x8472,0x8cb3,0x8492,0x94f3,0x8cd3,0x8452,0x8cb4,0x8473,0x73d0,0x73f0,0x73f0,0x6bcf,0x6bcf,0x7410,0x73d0,0x73d0,0x73d0,0x6bcf,0x6baf,0x6b8f,0x7c10,0x7c31,0x73cf,0x7bf0,0x73cf,0x7410,0x7410,0x73f0,0x6baf,0x73d0,0x73f0,0x6bae,0x7c10,0x8472,0x73f0,0x73f0,0x73f1,0x6baf,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x5b4d,0x530c,0x5b0c,0x52eb,0x52cb,0x5b0c,0x5b2d,0x52eb,0x4acb,0x52cb,0x52ab,0x52cb,0x6b6d,0x73ae,0x632d,0x52ab,0x52ab, +0x6b4c,0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x62ec,0x5aec,0x5aec,0x632d,0x632c,0x632c,0x6b6d,0x6b4d,0x738f,0x7bf0,0x7bef,0x7c10,0x7bef,0x73ef,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x7bcf,0x7bcf,0x738e,0x6b6e,0x6b6e,0x7bf0,0x94b3,0x9cf4,0x94d3,0x8471,0x8c71,0x8471,0x7c30,0x73cf,0x73af,0x7bf0,0x7c10,0x6baf,0x6baf,0x73af,0x7bf0,0x73af,0x6baf,0x6baf,0x73f0,0x7c10,0x73f0,0x73ef,0x73f0,0x73f0,0x73f0,0x8452,0x8c93,0x7c52,0x8472,0x7c51,0x7c51,0x8451,0x7c51,0x8451,0x7c31,0x7c31,0x8472,0x8c93,0x8452,0x8472,0x84b3,0x7c51,0x7c52,0x8452,0x8452,0x8452,0x8493,0x8473,0x7c52,0x7c52,0x84b3,0x94f5,0x94f5,0x9d36,0xadb7,0xb5f9,0x94d4,0x9d15,0x9d35,0x9d56,0xa556,0x9d35,0xa576,0x9d35,0x9d35,0x9d35,0x9d36,0xa556,0xadb7,0xb5d8,0xad97,0xad77,0xb5d8,0xb5f8,0xb5d8,0xadd8,0xb5f9,0xbe3a,0xc65a,0xc67a,0xc67a,0xbe19,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x3186,0x3166,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18c2,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2925,0x2124,0x2104,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2104,0x2966,0x39c7,0x2966,0x2124,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x3186,0xa597,0x9d76,0x9d56,0xa577,0xa576,0x9515,0x94f5,0x94f4,0x9515,0x94f4,0x94f4,0x9535,0x9d56,0xa5b7,0x9515,0xb5f8,0x9d36,0x8494,0x9d77,0xadb8,0x94f4,0x9d15,0x94d4,0x8c93,0x8c93,0x8472,0x94d4,0x8472,0x7c32,0x8cd4,0x84b3,0x94f4,0x9d15,0x9d35,0xa556,0xad76,0xad96,0xa576,0xad97,0xa597,0xa597,0xadb7,0x9d36,0x9d35,0x9d56,0x94f4,0x8cb3,0x8c92,0x94f4,0x8c93,0x8cb3,0x8cd3,0x8cb3,0x94f3,0x94f4,0x8cb3,0x7c51,0x73f0,0x73f0,0x7411,0x73f0,0x6baf,0x6bcf,0x73f0,0x73d0,0x73d0,0x73af,0x73d0,0x73f0,0x73af,0x7c10,0x8c72,0x7c31,0x7c10,0x7410,0x7c30,0x7c30,0x73f0,0x63ae,0x73ef,0x6bcf,0x6baf,0x7c31,0x7c10,0x73ef,0x7bf0,0x73d0,0x73af,0x6baf,0x636e,0x634d,0x6b8e,0x6b8e,0x636d,0x5b2c,0x5b2c,0x5b2d,0x5b0c,0x530c,0x52eb,0x52cb,0x52cb,0x4a8a,0x52aa,0x52cb,0x5b0c,0x5b0c,0x6b6d,0x6b6d,0x632c,0x6b4d, +0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x62eb,0x62eb,0x632c,0x5b0c,0x5aec,0x630d,0x6b2d,0x6b4d,0x6b4d,0x6b4d,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73ae,0x6b4d,0x6b6e,0x6b8e,0x6b6e,0x738f,0x7bef,0x7bcf,0x738e,0x73af,0x7bf0,0x8c72,0x94b3,0x9cf4,0x94d3,0x8c92,0x8c72,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x73f0,0x73f0,0x73d0,0x7bf0,0x73cf,0x8411,0x73cf,0x73cf,0x73f0,0x73f0,0x7c10,0x73f0,0x73f0,0x73cf,0x73cf,0x7bf0,0x7bf0,0x7c31,0x8472,0x8452,0x8431,0x8431,0x8452,0x8451,0x8451,0x8451,0x8471,0x8472,0x8431,0x8452,0x8472,0x8472,0x7c31,0x7c52,0x8452,0x8452,0x8452,0x8452,0x8493,0x8493,0x8493,0x94f5,0x8cd4,0x94f5,0x9d35,0xa556,0xadd8,0x94f4,0x94f5,0x94f4,0x9d56,0x9d56,0x9d56,0xa556,0x9d56,0x9d15,0xa556,0xa576,0xa576,0xad97,0xadb7,0xad97,0xadd8,0xb5d8,0xb5d8,0xb5f9,0xb5f8,0xadd8,0xb5d9,0xbe3a,0xc67a,0xc65a,0xb5f9,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x2103,0x2925,0x2965,0x2965,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18a2,0x18a2,0x18c3,0x2103,0x2124,0x2945,0x3165,0x31a6,0x31a6,0x31a6,0x31a6,0x3185,0x3185,0x3165,0x2944,0x2924,0x2104,0x18c3,0x18c3,0x18a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2124,0x31a6,0x31a7,0x2124,0x2104,0x2104,0x2124,0x2104,0x20e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d56,0x9d56,0x9515,0x9d16,0x9d36,0x9d15,0x9d35,0x9515,0x9514,0x9514,0x9d35,0x9d56,0x94f5,0xa577,0xa596,0xb5f8,0x8cd4,0x8cd4,0x9535,0xa576,0x9d35,0x9d55,0x8493,0x8cb3,0x8cd4,0x8472,0x8cd3,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x9514,0x9d55,0xa576,0xad97,0xadb7,0xb5d8,0xa576,0xa556,0xa576,0xa597,0xa597,0x9d35,0x9d35,0x94f5,0x94f4,0x94d4,0x9d15,0x94f4,0x8cb3,0x8cb3,0x8492,0x8cb3,0x94f4,0x94d3,0x8472,0x73f0,0x73d0,0x6bd0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73d0,0x6bcf,0x73b0,0x7410,0x7410,0x7c10,0x8451,0x7c51,0x8cb3,0x8c72,0x7c10,0x7c10,0x7c30,0x73f0,0x73f0,0x7410,0x73f0,0x7c31,0x73d0,0x7c31,0x7c31,0x8431,0x7c10,0x73af,0x73cf,0x73cf,0x6bae,0x638e,0x6baf,0x636e,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x634d,0x634d,0x634d,0x5aec,0x5aec,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x634d,0x73ae,0x7c10, +0x5aeb,0x5aeb,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0x632c,0x630c,0x630c,0x630d,0x736e,0x6b2d,0x6b6e,0x738e,0x738e,0x7bf0,0x7bef,0x7c10,0x7c10,0x738e,0x6b4d,0x634d,0x636d,0x73af,0x7bf0,0x73cf,0x73af,0x7bd0,0x8411,0x8452,0x8c72,0x8cb3,0x94f4,0x8472,0x8451,0x7c10,0x73cf,0x73ae,0x6b8e,0x6baf,0x73cf,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x7410,0x7410,0x73f0,0x73cf,0x73cf,0x73cf,0x73cf,0x73d0,0x73d0,0x7bf0,0x8431,0x8452,0x8452,0x8452,0x8452,0x8452,0x8452,0x8472,0x8492,0x8492,0x8452,0x8452,0x8452,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x7c32,0x8493,0x8472,0x8493,0x94f4,0x8cb4,0x94d4,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0xa597,0xad97,0xa576,0xa556,0xa576,0xa556,0xa576,0xadb7,0xa597,0xadb7,0xadd8,0xadd8,0xb5f8,0xadd8,0xadb8,0xadf8,0xadf8,0xadd8,0xadf9,0xadf9,0xb619,0xbe3a,0xadb8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x2124,0x2965,0x3185,0x2965,0x20e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x2104,0x2945,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x20e3,0x20e3,0x18c3,0x10a2,0x18a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2125,0x2965,0x3186,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a3,0x18e3,0x18e3,0x20e3,0x3186,0x94f5,0x94f5,0x9515,0x9516,0x9d56,0x9d56,0x9d36,0x9d35,0x9d35,0xa596,0xa597,0x9d36,0x94f5,0x94f5,0xb618,0xadd7,0x8cf4,0x9535,0x9515,0x9d35,0xb5d8,0x94f4,0x8452,0x8c93,0x8c93,0x7c31,0x8c93,0x94f4,0x8452,0x7c52,0x8492,0x7c52,0x94f4,0x9514,0x9d15,0xad97,0xa576,0xb5f8,0xadb7,0xa556,0xa576,0xa576,0xadb7,0xa576,0x8cb4,0x94f5,0x9d15,0x8cd4,0x8cd4,0x8472,0x7c31,0x8492,0x8472,0x8cb3,0x8cb3,0x8472,0x7c31,0x7c11,0x7c31,0x73cf,0x73cf,0x6baf,0x73ef,0x73f0,0x6baf,0x6b8f,0x6b8f,0x73b0,0x73d0,0x7c10,0x7c31,0x73ef,0x7c10,0x8c92,0x8431,0x7bf0,0x7c10,0x73d0,0x73d0,0x8451,0x8c92,0x6b6e,0x636e,0x6baf,0x7c10,0x7bf0,0x7c10,0x7bf0,0x6baf,0x6baf,0x6baf,0x636e,0x6bae,0x6b8e,0x5b4d,0x5b2d,0x5b2c,0x5b0c,0x632c,0x5b0c,0x6b6e,0x5b2c,0x6b8e,0x636e,0x5b2d,0x5b0d,0x5b0d,0x5aec,0x52ab,0x5aec,0x5b2c, +0x5acb,0x5aeb,0x5b0b,0x5b0b,0x5acb,0x6b2c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x5b0c,0x632d,0x6b4d,0x6b6e,0x6b8e,0x7c10,0x94b2,0x7c10,0x7c30,0x7bef,0x73ae,0x6b4d,0x632d,0x6b4e,0x7bcf,0x73ef,0x73ef,0x7c30,0x7c10,0x7bd0,0x7bd0,0x8472,0x94d3,0x8cb3,0x8451,0x7c10,0x7bf0,0x73ef,0x73cf,0x73af,0x6baf,0x73af,0x6b8e,0x73cf,0x73cf,0x6b8e,0x6b8f,0x73d0,0x73cf,0x73cf,0x6baf,0x6baf,0x6bae,0x6bae,0x73ef,0x73cf,0x7bf0,0x73d0,0x73d0,0x7c10,0x8431,0x7c31,0x8451,0x7c31,0x8472,0x8472,0x8cb3,0x8472,0x8492,0x8cb3,0x8cb3,0x8c93,0x8c72,0x8452,0x8c93,0x8c93,0x8472,0x8452,0x8452,0x8452,0x8432,0x8451,0x94d4,0x8cb4,0x94f4,0x9d15,0x94f5,0x9d35,0xa556,0xa556,0x9d35,0x9d35,0xa597,0xa576,0xa556,0xa576,0x9d56,0x9d56,0xa597,0x9d36,0x9d36,0xa597,0xa597,0xadb7,0xadb7,0xa597,0xadd8,0xb619,0xadf9,0xadf9,0xadf8,0xb619,0xadd8,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18e3,0x2925,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2125,0x2965,0x2965,0x2945,0x2925,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9516,0x8cf5,0x8cf5,0x9d56,0xa5b7,0xa597,0x9535,0x9d55,0x9d56,0xa596,0xa556,0xa576,0x9d36,0x9d35,0xb5f8,0x9d35,0x9515,0x9d76,0x9515,0x9d35,0xadb8,0x94f4,0x8493,0x8c93,0x8493,0x7411,0x8452,0x8cb4,0x8c73,0x8493,0x7c51,0x7c51,0x8cb3,0x9d35,0x9d35,0xa556,0xad96,0xa576,0xadb7,0xa576,0xa576,0xa597,0xadd8,0xa577,0x8cb3,0x9d15,0x9d15,0x8cd3,0x8cd3,0x8472,0x8472,0x8472,0x7c52,0x94f4,0x8493,0x7c52,0x73f0,0x73f1,0x73f0,0x73cf,0x73f0,0x73cf,0x7410,0x73f0,0x73d0,0x73f0,0x7c10,0x73f0,0x73d0,0x73d0,0x7bf0,0x7c31,0x7410,0x7c31,0x7c31,0x7bf0,0x7c30,0x6baf,0x7c31,0x8c92,0x8c72,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x6baf,0x6baf,0x636e,0x636e,0x6b6e,0x636e,0x636e,0x6b8e,0x634d,0x5b0c,0x5b2d,0x634d,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x634d,0x636d,0x636d,0x5b0c,0x5b0c,0x5b0c,0x5b2c, +0x5aeb,0x5acb,0x52ca,0x528a,0x52aa,0x5acb,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x630c,0x630c,0x632c,0x632c,0x6b6e,0x8471,0x8472,0x7c10,0x7bf0,0x73f0,0x73f0,0x634d,0x632d,0x736e,0x7bcf,0x7c10,0x7c30,0x7c10,0x738e,0x6b6e,0x73af,0x8c92,0x8cb3,0x8451,0x8451,0x7c10,0x73ef,0x6b8e,0x6b8e,0x6b6e,0x738f,0x73af,0x6baf,0x73ef,0x73ef,0x73cf,0x6bae,0x6baf,0x6baf,0x6baf,0x6bae,0x73af,0x6b8e,0x6bae,0x6bcf,0x73f0,0x7c11,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73cf,0x73f0,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x8452,0x8cd3,0x9d35,0x9d15,0x94d4,0x8c93,0x8472,0x8452,0x7c31,0x7c31,0x8c93,0x8473,0x8452,0x7c52,0x9d55,0xa576,0x94f4,0x9d15,0x9d15,0xa555,0x9d35,0x9d35,0x9d15,0x9d15,0x9d35,0xa556,0xa576,0xa597,0xa556,0xa576,0xa597,0xa597,0xa576,0x9d76,0x9d76,0xa596,0xa597,0xa576,0xadb8,0xb61a,0xadf9,0xadd8,0xb639,0xb639,0xadf9,0xadd8,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a3,0x18c3,0x18a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0x9d36,0x9515,0x9515,0x9d56,0x9d56,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d36,0xa597,0xa5b7,0xa597,0xadd8,0x9d36,0x9515,0x9d36,0x9515,0x9535,0x9d35,0x8cd4,0x8cb3,0x8493,0x8cd4,0x7c72,0x8493,0x8cd3,0x8c93,0x8473,0x8472,0x7c11,0x8452,0x94f4,0x9d35,0x9d55,0xa596,0x9d55,0xa556,0xadd8,0xa576,0xadd7,0xa5b7,0x9d56,0x8cd4,0x9514,0x9d55,0x8cb3,0x8472,0x8472,0x8c93,0x8472,0x8493,0x8c93,0x7c72,0x7411,0x73f1,0x73f1,0x73d0,0x6baf,0x6baf,0x73d0,0x7411,0x73d0,0x73cf,0x73cf,0x8472,0x7c11,0x73f0,0x6bd0,0x6bf0,0x7411,0x7411,0x6baf,0x6bb0,0x6bcf,0x73cf,0x7c31,0x7c31,0x73d0,0x73f0,0x6b8f,0x6b8e,0x73cf,0x73ef,0x73ef,0x6baf,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x5b4d,0x6b6e,0x7bf0,0x634d,0x52ec,0x5b0d,0x5b2d,0x5b4d,0x530c,0x530c,0x634d,0x73ce,0x73cf,0x634d,0x634e,0x5b0c,0x5b2d, +0x5acb,0x52aa,0x52aa,0x5aaa,0x5acb,0x5acb,0x630c,0x632c,0x632c,0x632c,0x630c,0x62ec,0x632c,0x6b6d,0x7bef,0x8451,0x8c92,0x8451,0x8431,0x7c10,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73cf,0x8410,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x736e,0x8431,0x94b3,0x8451,0x7c31,0x7c30,0x7bf0,0x73af,0x6b6e,0x6b4e,0x6b4e,0x738f,0x73af,0x6baf,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x6bcf,0x73ef,0x6bcf,0x6bcf,0x6bcf,0x73af,0x6baf,0x6bcf,0x73f0,0x73d0,0x7bd0,0x73d0,0x7bf0,0x73f0,0x6baf,0x6baf,0x7c11,0x8452,0x8c93,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x8472,0x8cb3,0x8472,0x8473,0x8472,0x8452,0x8472,0x8cd4,0x8473,0x8473,0x8493,0x8472,0xadd7,0xa576,0x94f4,0x9d35,0x9d35,0x94d3,0x9d15,0xa556,0x9d15,0xa576,0xad97,0xa597,0xadb7,0xa597,0xa556,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0xa576,0xa596,0xad97,0xb5d9,0xb619,0xadf8,0xadf8,0xb5f9,0xadd8,0xadd9,0xa577,0x1082,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x2124,0x2965,0x3186,0x2965,0x2104,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x2124,0x2966,0x2965,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xa597,0x9d56,0x9d36,0x9d15,0x9536,0x9d36,0x9d56,0x9d76,0xa597,0x9d56,0x9d35,0xa577,0xadb7,0xa576,0xadb7,0xadb7,0x9535,0x94f4,0x9d76,0x9d56,0x94f4,0x8cb4,0x8493,0x9535,0x94f4,0x8c93,0x8493,0x9d35,0x8cb3,0x8472,0x8472,0x8452,0x7c11,0x8472,0x9515,0x8cf4,0x8cd4,0x9d15,0x94d4,0xa577,0xadb7,0xadd7,0xa556,0x94f5,0x9514,0x94f4,0x94f4,0x8cb3,0x8493,0x7c31,0x7c52,0x7c52,0x8452,0x7c31,0x7410,0x7411,0x73f1,0x73d0,0x73f0,0x73cf,0x6baf,0x6bcf,0x7410,0x73f0,0x6baf,0x6baf,0x7c10,0x7c11,0x73f0,0x6bcf,0x6bcf,0x6bd0,0x6baf,0x6b8f,0x6b8f,0x6baf,0x8451,0x7c10,0x636e,0x6b8e,0x73d0,0x6baf,0x636e,0x6bae,0x8430,0x8c72,0x7c10,0x73af,0x73d0,0x73f0,0x6baf,0x6b6e,0x6baf,0x6baf,0x634d,0x636e,0x5b2d,0x52ec,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b2d,0x634e,0x634d,0x6b6d,0x73af,0x6b6e,0x632d,0x5b0c,0x5b0c, +0x52ca,0x5acb,0x5acb,0x62cb,0x62eb,0x62eb,0x630c,0x6b2d,0x630c,0x630c,0x632c,0x6b4d,0x6b8e,0x6b6e,0x73cf,0x8c72,0x7c11,0x7c10,0x8430,0x8410,0x7bef,0x73ef,0x73cf,0x73ae,0x73cf,0x7c10,0x738e,0x6b6d,0x73af,0x7bcf,0x7bf0,0x8c92,0x8451,0x6bcf,0x7c10,0x73cf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x73af,0x73ce,0x73cf,0x6b8e,0x6baf,0x73cf,0x73ef,0x73cf,0x6baf,0x6b8e,0x6baf,0x6bcf,0x6baf,0x8431,0x7c31,0x73cf,0x7bf0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x8452,0x8c93,0x8452,0x7c31,0x8452,0x8452,0x8452,0x8472,0x8493,0x8492,0x8452,0x7c32,0x8472,0x8493,0x8493,0x8473,0x8473,0x8473,0x8c93,0xa556,0xb5f8,0x94d4,0x8cb3,0x94d4,0x8cd4,0x9515,0x9d35,0x9d36,0xa576,0xa576,0xad97,0xadb7,0xadb7,0xadb8,0xadd8,0xa597,0x9d56,0x9d56,0xa597,0xadb7,0xb5d8,0xadb7,0xbe19,0xb619,0xb619,0xbe3a,0xb5f9,0xb5f9,0xb5f9,0xa597,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x2965,0x2965,0x2925,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9d56,0x9d56,0x9d56,0x9d35,0x9515,0x9d35,0x9d36,0x9d56,0xadb8,0x9d76,0xa556,0xa577,0xb619,0xa576,0xa576,0xa597,0xa576,0x8cb3,0x9535,0x9d56,0x94d4,0xa556,0x9515,0x9d35,0x9d35,0x94f4,0x8cb3,0x94f4,0x8cd3,0x8cb2,0x8cb3,0x8492,0x8452,0x8452,0x8493,0x8493,0x8cb4,0x9515,0x94d4,0x8cb3,0xad77,0xb5b8,0x9d15,0x9d15,0xa555,0x94f4,0x8451,0x8cb3,0x94f4,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7c11,0x7c31,0x7c10,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x7c10,0x7c11,0x6baf,0x6baf,0x6bd0,0x73d0,0x73f0,0x73f0,0x6baf,0x6bcf,0x6baf,0x6baf,0x6b8e,0x73f0,0x8c92,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x6bcf,0x636e,0x636e,0x73cf,0x7c10,0x7c10,0x73f0,0x73d0,0x7c11,0x73d0,0x6b8f,0x6baf,0x634e,0x6b6e,0x634d,0x5b2c,0x5b2d,0x5b0c,0x52ec,0x5b0c,0x5b0c,0x5b2c,0x634d,0x634d,0x632d,0x632d,0x634d,0x5b2c,0x5b0b,0x5b2c, +0x52ca,0x5acb,0x630c,0x630c,0x62ec,0x630c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x6b4d,0x6b4d,0x632d,0x7bd0,0x8c72,0x7bf0,0x7c10,0x7bf0,0x7bf0,0x7bef,0x73cf,0x6b8e,0x6b8e,0x73af,0x73ef,0x73ae,0x73af,0x7bf0,0x7bf0,0x7c10,0x8451,0x7410,0x6baf,0x6baf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x6baf,0x73cf,0x7c10,0x73f0,0x6baf,0x6baf,0x6baf,0x73cf,0x6bcf,0x8451,0x8451,0x73af,0x73d0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x7c11,0x8431,0x8c92,0x8c93,0x8452,0x7c31,0x7c11,0x8452,0x8472,0x7c52,0x8452,0x8492,0x7c52,0x7c11,0x8452,0x8473,0x8473,0x8493,0x8c93,0x8c93,0x94f4,0x9d15,0xa576,0x9515,0x9514,0x9d35,0x9515,0x9514,0x9d35,0x9d35,0x9d15,0x9d36,0xad97,0xad97,0xadb8,0xa577,0xa577,0x9d36,0x9d15,0x9d56,0xa576,0xad97,0xadb7,0xb5f9,0xbe3a,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xb5f8,0xbe39,0xadb7,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x3186,0x2945,0x2124,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x18a2,0x2104,0x2945,0x3186,0x2945,0x2104,0x2104,0x20e4,0x20e3,0x20e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xa598,0x9d56,0x9d56,0xa576,0xa556,0x9d36,0x9d15,0x9d36,0xa577,0x9d56,0xa576,0xb5f8,0xb639,0xadd8,0xa577,0xa597,0x9d35,0x8493,0xa577,0x9d15,0x8cd4,0x9d15,0x9d15,0x9d15,0x9d56,0x9d35,0x9515,0x94d4,0x8c93,0x7c31,0x8cb3,0x94f4,0x8c72,0x8472,0x7c51,0x8493,0x8cb3,0x94f4,0x9d15,0x94d4,0x94f5,0x9d36,0x94f4,0x94f4,0x9d35,0x8cb3,0x8472,0x8452,0x8452,0x7c31,0x7410,0x7c31,0x8472,0x7c31,0x7c11,0x7c11,0x7410,0x73f0,0x73d0,0x73d0,0x73d0,0x73cf,0x73f0,0x7c11,0x6b8f,0x6bd0,0x6bcf,0x6bf0,0x73f0,0x7bf0,0x73af,0x73cf,0x6bcf,0x6bae,0x6baf,0x7c31,0x8451,0x6b8e,0x6b8e,0x6b8e,0x636e,0x636e,0x6bae,0x636e,0x73cf,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x6b8f,0x73b0,0x6b6f,0x6b6f,0x6b8f,0x5b2d,0x530c,0x6bae,0x5b2c,0x4acb,0x52eb,0x5b4d,0x52ec,0x73ef,0x6b8e,0x5b2c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb, +0x5aaa,0x5acb,0x630c,0x630c,0x632c,0x630c,0x632c,0x632c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x738e,0x8c71,0x7c10,0x73cf,0x6baf,0x73af,0x7bf0,0x7c10,0x73cf,0x6b4d,0x738e,0x7bcf,0x73ef,0x73ef,0x73cf,0x7bef,0x73ef,0x7bf0,0x7c10,0x6bcf,0x6b8e,0x6b8e,0x6b8f,0x738f,0x738f,0x6b8e,0x6bae,0x6baf,0x6baf,0x6bae,0x6b8e,0x6b8e,0x73af,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x7bf0,0x7c31,0x8c72,0x8c92,0x8c72,0x8451,0x7c31,0x8472,0x8472,0x7c52,0x7c31,0x8472,0x8493,0x7c52,0x8452,0x8472,0x8cb3,0x8cb3,0x8493,0x94f4,0x94d4,0x94d4,0x8cb3,0x9515,0xadb7,0xadb7,0x9514,0x9d15,0x94f4,0x94f4,0x8cd4,0x9d15,0xa577,0xadb7,0xadb8,0x9d56,0xa577,0xad97,0x9d15,0x9d36,0xa576,0xa576,0xa576,0xb5f8,0xadb8,0xb5f9,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xbe39,0xb5d8,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x2103,0x3186,0xa577,0x9d56,0x9d76,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xb5d8,0xb5d8,0xadd8,0xadb8,0xa577,0x9535,0x9d35,0xa597,0x8cb3,0x8cd4,0x94d4,0x9d15,0x9d35,0x8cf4,0x8cf4,0x9515,0x8cb4,0x8452,0x8432,0x8472,0x9d14,0x9cf4,0x8492,0x7c31,0x84b3,0x8452,0x8472,0x94f4,0x9515,0x9514,0x9d35,0x9515,0x8cb4,0x8473,0x8493,0x8472,0x7c52,0x7c31,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x7c52,0x7c11,0x7c51,0x7410,0x73d0,0x73d0,0x73d0,0x73f0,0x73f0,0x8471,0x7c51,0x73f0,0x6bd0,0x73f0,0x7411,0x7bf0,0x73af,0x6bcf,0x73d0,0x6bcf,0x73f0,0x8472,0x7c11,0x6baf,0x6b8e,0x6bae,0x6b8e,0x6b6e,0x73af,0x6b8e,0x73ef,0x73ef,0x73cf,0x73cf,0x73f0,0x73cf,0x73cf,0x73af,0x6b6e,0x6b8f,0x634d,0x634d,0x5b0c,0x6b8e,0x632d,0x52ec,0x52cb,0x5b0c,0x634d,0x6b8e,0x634d,0x5aec,0x52cb,0x52cb,0x52cb,0x52eb,0x4acb, +0x5acb,0x630c,0x6b2c,0x632c,0x632c,0x630c,0x5aeb,0x5b0b,0x630c,0x630c,0x5aeb,0x62ec,0x6b0c,0x8430,0x8c91,0x8450,0x73ef,0x634d,0x6b4d,0x738e,0x73cf,0x73af,0x6b8e,0x73af,0x7bcf,0x73ef,0x73cf,0x73cf,0x7bd0,0x73af,0x73cf,0x7bf0,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x738e,0x73af,0x6baf,0x6baf,0x73af,0x73cf,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x6b8e,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7c10,0x6bcf,0x73cf,0x6b8e,0x6baf,0x73ef,0x73cf,0x73cf,0x73cf,0x73f0,0x7c31,0x7c31,0x8472,0x8c92,0x8431,0x8452,0x8472,0x8452,0x7c72,0x7c32,0x8473,0x8493,0x8c93,0x8c93,0x8c93,0x8cd3,0x8cd4,0x8493,0x8cb4,0x94f4,0x8cd4,0x8c93,0x94d4,0x9d35,0xadb7,0xa556,0xa556,0xa577,0xa556,0x9d15,0x9d36,0xb5d8,0xadd8,0xa576,0x9d56,0x9d35,0xa577,0xa556,0x9d36,0xa556,0xadb7,0xadd8,0xb5f9,0xadd8,0xadd9,0xadf9,0xbe3a,0xbe3a,0xc67a,0xc65a,0xb5f9,0x10a2,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x18a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x20e4,0x2924,0x2965,0x2944,0x2124,0x2104,0x2104,0x2104,0x20e4,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e4,0x18e3,0x2104,0x3186,0xadb8,0x9d57,0xa577,0x9d56,0x9d36,0xa576,0xa597,0xa597,0xa597,0xa597,0xadd8,0xad97,0xa577,0x9d56,0x9d76,0xadd8,0xa597,0xa597,0xa576,0x94f4,0x94f4,0x8cb4,0x94d4,0x9514,0x8493,0x8cd4,0x8cf4,0x8cb3,0x8472,0x8cb3,0x8472,0x7c31,0x8c92,0x8cd4,0x7c72,0x7431,0x8473,0x8c93,0x94f4,0x9d55,0x8cf4,0x94f4,0x9d15,0x8cb4,0x8473,0x8cb3,0x8472,0x7c31,0x7c11,0x7c52,0x7c31,0x7410,0x7c31,0x7c32,0x7c52,0x7411,0x8cb3,0xb5d7,0x9d14,0x8c92,0x8472,0x6baf,0x7431,0x8472,0x7c31,0x7410,0x6bcf,0x6baf,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x73f0,0x73cf,0x73f0,0x6baf,0x73d0,0x6baf,0x6b8e,0x6baf,0x638e,0x6baf,0x6b8e,0x6bae,0x6bcf,0x73cf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x6baf,0x73af,0x6b6e,0x5b2d,0x636e,0x636d,0x636e,0x5b0d,0x5aec,0x632d,0x6b6d,0x634d,0x530c,0x530c,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb, +0x5aeb,0x634c,0x6b8d,0x632c,0x634c,0x634c,0x6b4d,0x630c,0x630c,0x5b0b,0x630c,0x630c,0x738e,0x8c92,0x7c30,0x7c0f,0x634d,0x630c,0x632d,0x6b4d,0x73ae,0x7bef,0x7bef,0x7bf0,0x7bf0,0x73af,0x636e,0x73af,0x7bf0,0x6b8f,0x6b6e,0x73ae,0x73ae,0x6b6d,0x632d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x7c10,0x7c10,0x73d0,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x73f0,0x7c31,0x8452,0x8452,0x7c31,0x7c31,0x7c11,0x8452,0x8472,0x8472,0x8452,0x8c93,0x8c92,0x94d3,0x8c93,0x8472,0x8c93,0x8cb3,0x8493,0x8493,0x8cb3,0x8cd4,0x8cb3,0x94b4,0x9d15,0x9d15,0xa556,0xa556,0x9d56,0xa556,0xa597,0xadb7,0xadd8,0xa577,0xa576,0x9515,0x94f5,0xa556,0xa577,0x9d15,0xa556,0xadb8,0xadb8,0xadd8,0xadd8,0xadd9,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xad97,0x10a2,0x1082,0x10a2,0x18c3,0x18a3,0x18c3,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e4,0x2103,0x2104,0x31a6,0xadd8,0x9d36,0x9d56,0x9d76,0xa597,0xadb7,0xad97,0xa5b8,0xa5b8,0x9d56,0x9d56,0x9d56,0x9d56,0xa576,0x9d56,0xad97,0xadb7,0xa556,0xa556,0x9d35,0x9515,0x8cf4,0x8cd4,0x9515,0x8cd4,0x84b3,0x8c93,0x94f4,0x8cb3,0x8cb3,0x8c93,0x8452,0x7c11,0x8472,0x84b3,0x7c51,0x8cb3,0x9d34,0x94d3,0x94f4,0x8c93,0x8cd3,0x9d15,0x8cb3,0x94f4,0x8cb3,0x7c31,0x7411,0x7411,0x7c11,0x7c11,0x7c31,0x7c32,0x7411,0x7c32,0x7c52,0x8452,0x9d14,0x9cf4,0x7c52,0x8472,0x6bd0,0x6bd0,0x7410,0x6bd0,0x6bcf,0x6baf,0x7c11,0x73f0,0x73f0,0x6bef,0x7410,0x7c10,0x6bcf,0x73d0,0x73af,0x73af,0x6b8f,0x6b8e,0x6b8e,0x6baf,0x6b8f,0x636e,0x636e,0x6b6e,0x6baf,0x6baf,0x638e,0x638e,0x6b8e,0x638e,0x638e,0x634e,0x636e,0x6b8e,0x636e,0x634e,0x6bd0,0x73f0,0x6baf,0x634d,0x632d,0x630d,0x5b0c,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb, +0x5aeb,0x6b6d,0x6b6d,0x632c,0x632c,0x632c,0x6b4d,0x632c,0x630c,0x630b,0x630c,0x6b2d,0x8c31,0x94b2,0x7c50,0x73cf,0x632d,0x6b4d,0x738e,0x73ae,0x73cf,0x7bef,0x8450,0x8451,0x73cf,0x6b8e,0x6b8e,0x7bf0,0x8430,0x73ef,0x6b6d,0x6b8e,0x73cf,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x73f0,0x73d0,0x73cf,0x73f0,0x7410,0x73f0,0x73d0,0x73cf,0x73ef,0x7410,0x7c10,0x73f0,0x73d0,0x7bf0,0x73f0,0x7c11,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8451,0x8431,0x8452,0x8472,0x8472,0x8c93,0x94d4,0x9514,0x94f4,0x8c93,0x8cb3,0x94f4,0x8cd4,0x8472,0x7c52,0x8493,0x8cb3,0x8cd4,0x94d4,0x94f5,0x94f5,0x9d15,0xa556,0x9d56,0xa577,0xadb7,0xadb7,0xa597,0xa576,0x9d35,0x9515,0x9515,0x9d35,0xa576,0xa556,0xa597,0xadb7,0xa597,0xadb8,0xadd8,0xa597,0xa5b8,0xadd8,0xadb8,0xadd8,0xb5d8,0xa556,0x10a2,0x1082,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x18a2,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e4,0x2104,0x2945,0x2965,0x2104,0x2124,0x2924,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e4,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x31a6,0xadb8,0x9d36,0x9d56,0xadd8,0xb5d8,0xadd8,0xadb7,0xa597,0xa598,0x9d36,0x8cf4,0x9515,0xa597,0xa577,0x9d35,0x9d36,0xadb7,0x9d36,0x94f5,0x94f4,0x9515,0x94f5,0x8cd4,0x9d15,0x9d36,0x8493,0x8493,0x94d4,0x8cd3,0x8c93,0x8c93,0x8452,0x7c11,0x7c11,0x8c93,0x8cb3,0x8cb3,0x9514,0x9d35,0x8492,0x8cb3,0x8cd3,0x8cd3,0x8472,0x7410,0x7c51,0x7c51,0x7410,0x7410,0x7c51,0x7c31,0x8472,0x8452,0x7411,0x7c31,0x7c52,0x7c11,0x73af,0x73d0,0x73f0,0x7410,0x73f0,0x6bcf,0x7410,0x7411,0x73f0,0x73f0,0x7c52,0x7410,0x7410,0x7410,0x7410,0x73f0,0x73d0,0x6b8f,0x6b6f,0x6b8f,0x636e,0x6b8f,0x6baf,0x636e,0x638e,0x638e,0x6b8e,0x636e,0x6baf,0x6bae,0x636e,0x638e,0x636e,0x6b8e,0x6b8f,0x634e,0x634e,0x6baf,0x73d0,0x636f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x634e,0x632d,0x5b4d,0x5b0c,0x5b2d,0x5b2d,0x5b2c,0x52ec,0x52cb,0x52eb, +0x630c,0x6b6d,0x6b6d,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x736e,0x8c31,0x8c72,0x7c10,0x634d,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x73af,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73af,0x7c10,0x7c10,0x73cf,0x6b8e,0x6b8e,0x73cf,0x636e,0x636e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73cf,0x7bcf,0x73cf,0x73cf,0x73ef,0x6bcf,0x73cf,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x7c10,0x73f0,0x73ef,0x73cf,0x73f0,0x73f0,0x7c11,0x7c11,0x7c10,0x73f0,0x7c51,0x8452,0x8452,0x8452,0x8451,0x8451,0x8451,0x8452,0x8472,0x8452,0x8472,0x8cb3,0x94f3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cb4,0x8c93,0x8493,0x8cb4,0x8cd4,0x94d4,0x94d4,0x94d4,0x94f5,0x9d15,0x9d35,0xa556,0xadb7,0xa576,0xa577,0xadb7,0xa597,0x9d56,0x9d35,0x9515,0x9d56,0x9d56,0xa576,0xb5f8,0xadd7,0xad97,0xb5d8,0xb5f9,0xadd8,0xadd8,0xadb8,0xb5d8,0xb5d8,0xbe18,0xc618,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2945,0x2945,0x2945,0x2104,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x20e3,0x20e3,0x2103,0x2104,0x2124,0x2125,0x2945,0x2124,0x2945,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x31a6,0xa577,0x9d36,0xa576,0xadb7,0xb5f8,0xadf8,0xb639,0xa597,0x9d56,0x94f5,0x9515,0x94f4,0x94f5,0x9d15,0x9d15,0x9d56,0xa576,0x9d35,0x9d36,0x9d15,0x94f4,0x8cb4,0x8472,0x8c93,0x8cb4,0x8493,0x8cd4,0x8c93,0x8cb3,0x8c93,0x8473,0x8472,0x7c11,0x7c11,0x8431,0x8c93,0x8c93,0x8493,0x8493,0x8493,0x84b3,0x8493,0x8472,0x7c31,0x73f0,0x7c31,0x8472,0x7c52,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7bf0,0x7bf0,0x7c31,0x7c11,0x73f1,0x73f1,0x73f1,0x73f0,0x6bcf,0x6b8f,0x6bef,0x7c31,0x73d0,0x73f0,0x73f0,0x73f0,0x7410,0x7411,0x73f0,0x6bd0,0x73f1,0x6b8f,0x636f,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x636e,0x5b6e,0x5b4d,0x636e,0x636e,0x6bcf,0x6bae,0x73ef,0x73f0,0x6b8f,0x6b6e,0x73cf,0x6b6e,0x6baf,0x73ef,0x6baf,0x634e,0x634e,0x636e,0x638e,0x6b8f,0x634e,0x634e,0x5b4e,0x636e,0x5b0d,0x632d,0x5b0d,0x52cb,0x5b0c,0x636e, +0x632d,0x6b6d,0x6b4c,0x6b4c,0x632c,0x630c,0x632c,0x5aec,0x5b0c,0x632c,0x632c,0x7baf,0x8410,0x7bcf,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x634d,0x630d,0x634e,0x6b6e,0x6b8e,0x6bae,0x6b6e,0x6b8e,0x7bf0,0x73ef,0x6bae,0x634d,0x6bae,0x73cf,0x6b6e,0x6b6e,0x6baf,0x6b6d,0x6b8e,0x73cf,0x7c10,0x7bcf,0x73af,0x73cf,0x7c10,0x7bf0,0x73cf,0x6baf,0x6bcf,0x73f0,0x7bf1,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73ef,0x7bf0,0x73cf,0x73f0,0x7bf1,0x8451,0x8c92,0x8452,0x7c31,0x7c31,0x7c31,0x8452,0x8c92,0x8472,0x7c31,0x8472,0x8492,0x8452,0x8472,0x8472,0x8cb3,0x9d35,0x94d3,0x94f4,0x8cb3,0x8c93,0x8c72,0x94b3,0x94d4,0x94f5,0x94f4,0x94d4,0x94d4,0x94f4,0x9d35,0x9d36,0xa556,0xa577,0xa556,0x9d35,0x9d56,0xa596,0xa597,0xa577,0x9d35,0x9d35,0x9d56,0x9d76,0xa576,0xbdf8,0xd6fb,0xce99,0xc638,0xcebb,0xb5f8,0xadd7,0xadb7,0xbe39,0xc659,0xce9a,0xce9a,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2125,0x2144,0x2945,0x2124,0x2124,0x2945,0x2945,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2925,0x2945,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x20e4,0x20e3,0x18c3,0x18c3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2103,0x2103,0x3186,0xad97,0xa576,0xa5b7,0xa597,0xadb7,0xadb7,0xbe79,0xadd7,0x9d35,0x9535,0x9535,0x9535,0x9515,0x9515,0x9d56,0x9d56,0x94f5,0x9d15,0xa577,0x94f4,0x94f4,0x94d4,0x8493,0x7c53,0x8453,0x8452,0x8c93,0x8c93,0x8cb4,0x8cb3,0x8493,0x8472,0x7c52,0x7c52,0x7c52,0x8452,0x8cb3,0x8472,0x8493,0x8cd4,0x8cb3,0x8472,0x7c52,0x7c52,0x7411,0x7c52,0x8472,0x7c32,0x73f1,0x73f1,0x7c11,0x73f0,0x73f0,0x7c11,0x7c11,0x7c31,0x7c11,0x7411,0x73f1,0x73d0,0x6b8f,0x73d0,0x6b8f,0x6baf,0x6bf0,0x6bcf,0x73f0,0x73f0,0x6bf0,0x6bcf,0x7c31,0x7410,0x73f0,0x73f0,0x634e,0x6baf,0x6bd0,0x638f,0x636e,0x636e,0x638e,0x634e,0x636e,0x6b8e,0x6b8e,0x7c10,0x73cf,0x73f0,0x7c10,0x6b8f,0x636e,0x73af,0x634d,0x636e,0x73f0,0x6baf,0x5b4d,0x5b6d,0x5b4d,0x6baf,0x73f0,0x6b8f,0x636e,0x636e,0x636e,0x5b2d,0x634e,0x5b0d,0x52ec,0x52ec,0x52ec, +0x632c,0x634c,0x634c,0x6b6d,0x632c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x738e,0x73af,0x73ae,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x632c,0x630c,0x632d,0x632d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x6b6e,0x6baf,0x6b8e,0x6b8e,0x73cf,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73d0,0x73d0,0x73cf,0x6bae,0x73ef,0x73f0,0x73f0,0x73f0,0x7c10,0x7c30,0x7c10,0x73cf,0x7c10,0x7c10,0x73f0,0x7c11,0x8452,0x94b3,0x94b3,0x8431,0x7c31,0x7c31,0x7c31,0x8472,0x8431,0x8431,0x8c92,0x8472,0x8472,0x8cb3,0x8cb3,0x8cb3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x9cf4,0x9d35,0x9d15,0x8cd4,0x8cd4,0x8cb3,0x94f4,0x9d15,0x9d35,0x9d56,0x9515,0x9d35,0xa555,0x9d35,0xa576,0xa597,0x9d35,0x9515,0x9d15,0xa577,0xa556,0xad97,0xad76,0xc659,0xc679,0xadb6,0xadb7,0xad97,0xadb7,0xb5f8,0xb618,0xadb8,0xad97,0x9d35,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb7,0xa5b7,0xadf8,0xa597,0xadb7,0xa597,0xb5f8,0xadb7,0x9d56,0xa577,0x9d56,0x9d56,0x9536,0x9d56,0xa577,0x9515,0x94f4,0x9d36,0x9d35,0x9515,0x8cf4,0x8493,0x8493,0x8493,0x8473,0x8472,0x8472,0x8452,0x8c93,0x94d4,0x8cb3,0x8493,0x8473,0x7c32,0x8472,0x7c52,0x8472,0x8472,0x8493,0x9515,0x8473,0x7c31,0x7c52,0x7c31,0x8452,0x8472,0x7c32,0x7c32,0x73f0,0x7c11,0x7c31,0x7c11,0x7bf0,0x8431,0x7c11,0x7c11,0x7c11,0x73f1,0x73f0,0x73f0,0x638f,0x6bd0,0x6bd0,0x6b8f,0x6bd0,0x6bcf,0x6baf,0x6bcf,0x6bef,0x6bef,0x6bef,0x73ef,0x6bcf,0x636e,0x638e,0x6bcf,0x636e,0x632e,0x634e,0x636e,0x636e,0x634e,0x6b8f,0x6b8e,0x6baf,0x7c10,0x73cf,0x6baf,0x73f0,0x6baf,0x6b6e,0x634e,0x634e,0x530c,0x6bcf,0x638e,0x530c,0x5b2c,0x5b4d,0x636e,0x636e,0x634e,0x636e,0x636e,0x5b2d,0x5b2e,0x5b4e,0x52ec,0x52cb,0x52cb,0x4a8a, +0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x630c,0x5aeb,0x5aeb,0x630c,0x5aec,0x634d,0x738e,0x738e,0x6b4d,0x6b4d,0x6b6d,0x632d,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x632d,0x634d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x632d,0x6b2d,0x6b4d,0x738e,0x6b8e,0x6b8e,0x73cf,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73ef,0x7c10,0x7c10,0x73f0,0x7c30,0x7c30,0x73ef,0x73cf,0x73f0,0x73f0,0x73af,0x7bd0,0x8451,0x8452,0x8c92,0x94b3,0x7c10,0x7410,0x7c31,0x7c11,0x7c11,0x8431,0x8452,0x8472,0x8472,0x8472,0x8472,0x8cb3,0x8cf3,0x8cd3,0x94f4,0x8cb3,0x94f4,0x9cf4,0x9d15,0x9d15,0x8cb3,0x8cb3,0x8cd4,0x8493,0x8cd4,0x9515,0x94f4,0x8cd4,0x94d4,0x9d35,0xad96,0xad96,0xa576,0x9d36,0x9515,0x94f5,0x9514,0xadb7,0x9d35,0xa576,0xad76,0xa536,0xa597,0xa597,0xadb7,0xadb7,0xadd8,0xbe39,0xb619,0xadf8,0xadd8,0xad97,0x1082,0x1082,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x18e3,0x18e4,0x20e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e4,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x3186,0xadd8,0xadd8,0xa597,0xa597,0xadd8,0xadd8,0xb619,0xb5d8,0xa556,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xadb7,0x9515,0x9d36,0x94f5,0x94d4,0x8cf4,0x9515,0x8cb3,0x8cb4,0x8493,0x8492,0x7c31,0xadb7,0xb5b7,0x8452,0x8cd4,0x94f4,0x8cb4,0x8473,0x8452,0x8472,0x8472,0x7c31,0x8472,0x84b3,0x8493,0x8c93,0x7c32,0x7c52,0x7c52,0x8473,0x8472,0x7c52,0x8452,0x7c11,0x7c11,0x7c31,0x7c31,0x7c11,0x8431,0x7c11,0x7c11,0x7c31,0x7c31,0x7411,0x73f0,0x6bf0,0x73f1,0x6bf0,0x6bcf,0x7410,0x6bf0,0x73d0,0x7410,0x6bcf,0x73ef,0x73ef,0x6bcf,0x6baf,0x636e,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x6b6e,0x6b8e,0x636e,0x638e,0x73ef,0x73cf,0x6baf,0x73f0,0x73af,0x6b8e,0x634e,0x634e,0x5b4e,0x636e,0x6bae,0x6b8e,0x5b2d,0x5b4d,0x5b2c,0x5b2d,0x636e,0x634d,0x5b4d,0x530d,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x52ec,0x4aab, +0x6b6d,0x6b4d,0x5aec,0x5aec,0x5aec,0x5aeb,0x630c,0x630c,0x632c,0x634c,0x630c,0x630c,0x738e,0x6b8e,0x6b6d,0x634d,0x5b2c,0x5b2c,0x5b0c,0x630c,0x5b2c,0x632c,0x632c,0x632d,0x6b6d,0x634d,0x634c,0x632c,0x632c,0x632c,0x634d,0x634d,0x634d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x636e,0x6b6e,0x6b8f,0x6b8e,0x73af,0x73af,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73af,0x73af,0x7bf0,0x73cf,0x6bcf,0x73ef,0x73af,0x7bcf,0x8431,0x7bf0,0x7c10,0x73d0,0x8452,0x8452,0x7c51,0x7410,0x7c11,0x7c31,0x8452,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x94f4,0x9d14,0x9d14,0x9514,0x8cb3,0x8493,0x94d4,0x9d15,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x9535,0x9d55,0x9535,0x9515,0x94f5,0x94f5,0x94f4,0x8cf4,0xa556,0x9d35,0xa556,0xadb7,0xad97,0xad97,0xa577,0xa577,0xadb7,0xb5f8,0xadb7,0xadd8,0xb5f9,0xadb8,0xa577,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x2104,0x18e3,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0xb5f9,0xadd8,0xadb7,0xa597,0xa596,0xa597,0xb5f9,0xb5d8,0xa556,0xadb7,0xa576,0xa576,0xadd8,0xb5f8,0xa597,0xa577,0x9515,0x8493,0x8cb3,0x8cd4,0x94f4,0x94f4,0x84b3,0x8493,0x8473,0x8472,0x8472,0x8cb4,0x8cb3,0x8cb3,0x94f5,0x94f4,0x8452,0x8452,0x7c32,0x7c31,0x7411,0x7c11,0x8472,0x7c52,0x8493,0x8493,0x7c52,0x8452,0x8493,0x8cb3,0x7c51,0x7c52,0x8431,0x7c11,0x8431,0x8431,0x8452,0x7c11,0x7c11,0x73f0,0x7411,0x7c32,0x7c31,0x7c31,0x7411,0x73f1,0x73f0,0x73f0,0x7431,0x7431,0x73f0,0x7410,0x6baf,0x6baf,0x73cf,0x6bcf,0x6baf,0x638e,0x73f0,0x63af,0x636e,0x6baf,0x73d0,0x6baf,0x6b8f,0x636e,0x6b8f,0x6b6e,0x636e,0x73cf,0x73cf,0x6baf,0x73d0,0x6bcf,0x638e,0x636e,0x5b4d,0x5b6e,0x5b4d,0x638e,0x6b8e,0x7bcf,0x6b8e,0x5aec,0x52ec,0x634d,0x5b4d,0x5b4d,0x530c,0x5b2d,0x6b8e,0x632d,0x5b2c,0x530c,0x52ec, +0x6b4d,0x630c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x6b6d,0x73ae,0x634d,0x632c,0x632c,0x634c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632d,0x6b6e,0x634d,0x632c,0x632c,0x632c,0x6b4d,0x6b2d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x634e,0x6b4e,0x634d,0x636e,0x634d,0x6b6e,0x6b8f,0x73af,0x73cf,0x73cf,0x73cf,0x7bef,0x73ef,0x73cf,0x73af,0x73af,0x7bd0,0x7bf0,0x73ef,0x73ef,0x73cf,0x7bf0,0x8451,0x73cf,0x73f0,0x73f0,0x73f0,0x8452,0x8492,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x8452,0x7c32,0x8452,0x8c73,0x8cb3,0x8cb3,0x94d4,0x94f4,0x9515,0x9d15,0x9d35,0x9514,0x8cb3,0x8cd4,0xa576,0xa577,0x8cf4,0x94f4,0x94d4,0x9514,0x94f4,0x8cd4,0x9515,0x9515,0x8d15,0x9515,0x94f5,0x9536,0x94f5,0x94f4,0x9d36,0x9d36,0x9d56,0xadd7,0xb5f8,0xa597,0xa576,0xa556,0xb619,0xb5f8,0xadd8,0xadd8,0xadd8,0xadb8,0xad97,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2104,0x2104,0x2124,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x20e4,0x18c3,0x18e4,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x20e3,0x20e3,0x18c3,0x20e4,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2103,0x31a6,0xbe3a,0xb619,0xb5f9,0xa577,0x9d35,0x9d56,0xa576,0xadd8,0xadd8,0xadb7,0xadb8,0xadd8,0xadd8,0xadb7,0xa577,0xa597,0x8cd4,0x8493,0x8cb3,0x8cb4,0x94d4,0x94d4,0x8cb3,0x8493,0x7c72,0x8452,0x7c11,0x7c32,0x8472,0x8cb3,0x94f4,0x9514,0x8cd4,0x8493,0x8473,0x7c11,0x7410,0x7c31,0x7c31,0x7c31,0x8472,0x8472,0x8472,0x8493,0x8492,0x8cb3,0x8452,0x7c11,0x7c11,0x7c31,0x8451,0x7410,0x8472,0x8472,0x73f0,0x7410,0x6bd0,0x7c31,0x7c31,0x7c31,0x7c11,0x73f0,0x73d0,0x7410,0x7c31,0x7411,0x7c11,0x73f1,0x6b8f,0x6baf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x73f0,0x6baf,0x638e,0x638f,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8e,0x634e,0x636f,0x6bcf,0x6bcf,0x6baf,0x73d0,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530d,0x6b8e,0x6b6e,0x73af,0x7bf0,0x632d,0x5b2c,0x5b0c,0x530c,0x5b2d,0x5b4d,0x634d,0x6b8e,0x6b8e,0x5b2d,0x52ec,0x52cc, +0x634c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x630c,0x6b4d,0x6b6e,0x6b6e,0x630c,0x630c,0x632c,0x5b2c,0x630c,0x630c,0x632c,0x632d,0x630c,0x5b0c,0x632d,0x636d,0x5b2c,0x630c,0x634c,0x632c,0x632d,0x632d,0x5b0c,0x632d,0x6b4d,0x632d,0x6b4e,0x634e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x73cf,0x73cf,0x7bcf,0x73f0,0x73ef,0x7c30,0x7c31,0x73f0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x73f0,0x73cf,0x6baf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73f0,0x7410,0x7c30,0x8451,0x8452,0x8452,0x7c51,0x8451,0x8472,0x8472,0x8c73,0x8c93,0x94d4,0x8cd3,0x94f4,0x94f4,0x9d15,0x9d15,0x9d15,0x9d15,0x8cd4,0x9d35,0xad97,0x9515,0x8cd3,0x94d4,0x8cd4,0x8cd4,0x8cd4,0x94f4,0x9515,0x9515,0x9515,0x9535,0x94f4,0x9515,0x9515,0x9515,0x9d35,0x9d15,0x9d56,0xa576,0xadb7,0xadb7,0x9d56,0xadd8,0xb619,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xb5d8,0x18c3,0x2124,0x31a6,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2124,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2925,0x2945,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2965,0x2104,0x2104,0x2125,0x2124,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2124,0x2125,0x2945,0x2945,0x2965,0x2945,0x3186,0x3165,0x2965,0x2945,0x2945,0x2124,0x2945,0x2945,0x2125,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x3166,0x2104,0x2104,0x31a6,0xb619,0xb5f9,0xbe3a,0xadd8,0x9d36,0x9d76,0xa576,0xb5f8,0xb5f8,0xa597,0xadd8,0xadd8,0xadf8,0xa597,0xa577,0x94d4,0x94f4,0x8cb4,0x8cb4,0x8cb4,0x94f4,0x8cb3,0x8cd4,0x8cd4,0x8473,0x8472,0x7c32,0x7c52,0x8473,0x8493,0x8cd4,0x8cd4,0x8493,0x84b3,0x7c31,0x7c31,0x7c11,0x7411,0x7411,0x7c11,0x7c11,0x8472,0x9d15,0x7c52,0x8472,0x8c93,0x8452,0x7411,0x7c11,0x7c31,0x7c31,0x7c31,0x7c31,0x8472,0x7410,0x73f0,0x73f0,0x7c11,0x73f0,0x73f0,0x7c11,0x73f0,0x6bd0,0x6bd0,0x7411,0x7411,0x7c11,0x73f0,0x73af,0x73f0,0x7c11,0x73cf,0x6b8f,0x73af,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x636e,0x6bcf,0x6baf,0x638e,0x6baf,0x638e,0x638e,0x6baf,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530c,0x636e,0x73cf,0x6b8e,0x73d0,0x636e,0x5b2d,0x5b2d,0x5aeb,0x52eb,0x5b0c,0x634d,0x636e,0x6b6e,0x634e,0x5aec,0x52ab, +0x632c,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aec,0x632d,0x6b6e,0x630c,0x5aec,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632d,0x632d,0x630c,0x5b0c,0x634d,0x636d,0x634d,0x632c,0x632c,0x5b2c,0x5b2c,0x5b2d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8f,0x6b8e,0x6baf,0x73cf,0x73cf,0x73cf,0x73cf,0x73f0,0x7c30,0x7c31,0x7411,0x7c11,0x7c11,0x7c11,0x7c11,0x73f0,0x73d0,0x73d0,0x73cf,0x6baf,0x73cf,0x73ef,0x73cf,0x73ef,0x73ef,0x73f0,0x7410,0x7c10,0x8431,0x8452,0x8cd3,0x8471,0x8451,0x8c93,0x8c73,0x8452,0x8c93,0x9514,0x9514,0x94f4,0xa555,0x9d35,0x9d15,0x9d15,0x9d15,0xa576,0x9d15,0x8cd4,0x8cd4,0x94f4,0x9515,0x94d4,0x8cb4,0x8cd4,0x94d4,0x9d15,0x9d35,0x9514,0x8cf4,0x9515,0x9d35,0x9d56,0x9d56,0x9d56,0xa556,0xad97,0xadd8,0xa597,0xa576,0xa597,0xa597,0xadb7,0xadd8,0xb5f8,0xb619,0xbe5a,0xb5d8,0x4a6a,0x632d,0x738d,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52cb,0x52ab,0x52ab,0x52ab,0x52cb,0x5acb,0x52aa,0x528a,0x526a,0x4a69,0x5269,0x5269,0x526a,0x528a,0x526a,0x528a,0x528a,0x5aaa,0x5aaa,0x528a,0x528a,0x528a,0x528a,0x5aab,0x5269,0x4a69,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a29,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x528a,0x526a,0x528a,0x528a,0x5acb,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4229,0x4229,0x4229,0x4208,0x4229,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x39e8,0x39e7,0x4208,0x4249,0x634d,0x6baf,0xb619,0xb619,0xb63a,0xadd8,0xa597,0xa5b7,0xa597,0xb5f8,0xadd8,0x9d36,0xa577,0xa5b7,0xa597,0xa5b7,0x9d56,0x8cb4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x94f4,0x84d4,0x84d3,0x9515,0x8cb4,0x8c93,0x8493,0x8472,0x8493,0x8cb4,0x8cb4,0x8cb4,0x8493,0x84b3,0x7c52,0x73f0,0x73f0,0x73f0,0x7c11,0x73d0,0x73f0,0x94b3,0x8c72,0x7c11,0x8493,0x8cb4,0x8452,0x7c31,0x7c52,0x7c52,0x8452,0x7c32,0x7411,0x7c11,0x7c11,0x7bf0,0x7c31,0x7c31,0x7411,0x6bd0,0x73f0,0x73f0,0x73d0,0x6bb0,0x6bd0,0x7c31,0x7c11,0x73ef,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x73d0,0x6b8f,0x6b8f,0x73af,0x634e,0x5b4d,0x636e,0x636d,0x6bcf,0x73ef,0x638e,0x638e,0x638e,0x638e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x634e,0x5b2d,0x636d,0x6b8e,0x6bae,0x636e,0x636e,0x5b0c,0x5b2c,0x5aeb,0x5acb,0x52cb,0x5b0c,0x636e,0x52ec,0x5aec,0x5b0c,0x52cb, +0x630c,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aec,0x632d,0x630c,0x62eb,0x630c,0x630c,0x632c,0x5b0c,0x52eb,0x5b0c,0x630c,0x634c,0x634c,0x632c,0x632d,0x634d,0x634d,0x634d,0x632c,0x5b2c,0x632c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x636d,0x6b8e,0x73af,0x6b8f,0x6b8e,0x6baf,0x6baf,0x6baf,0x73af,0x7bd0,0x73d0,0x73f0,0x73d0,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x7c11,0x73f0,0x7410,0x73f0,0x6bcf,0x6baf,0x73cf,0x73cf,0x73cf,0x7bf0,0x73cf,0x73f0,0x73f0,0x7c11,0x8432,0x8452,0x94f4,0x8c93,0x8c93,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x9515,0xa576,0xa596,0x9d35,0x9d15,0x9d56,0xa576,0x9515,0x8cd4,0x8cb3,0x8cb4,0x9515,0x9515,0x94d4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x8cf4,0x9515,0x9d56,0x9d35,0x9d35,0x9d76,0x9d55,0xa577,0xadb8,0xadb8,0xa597,0xa576,0xa577,0xa597,0xadb7,0xb5d8,0xadb7,0xb5f8,0xbe3a,0xbe39,0x52ab,0x8412,0x844f,0x4a89,0x4a49,0x4229,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e7,0x41e7,0x41e7,0x39c7,0x41c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41c7,0x41c7,0x39c7,0x39a7,0x39a7,0x39a6,0x39a7,0x3186,0x3166,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2925,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x3166,0x2966,0x3165,0x3166,0x31a6,0x3166,0x3186,0x3186,0x3186,0x3186,0x39a7,0x39c7,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e7,0x41e8,0x41e7,0x41e7,0x39c7,0x41e7,0x41e7,0x39c7,0x39c7,0x41e8,0x4208,0x41e7,0x4228,0x4207,0x4a28,0x4a28,0x4208,0x41e7,0x39c7,0x39c7,0x41e7,0x52aa,0x9d36,0x9d56,0xa5b8,0xb5f9,0xadb8,0xa577,0xadb8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d56,0x9d77,0xa577,0x9d56,0x9d36,0x94f4,0x9515,0x9535,0x8cb3,0x8cd4,0x9515,0x8cf4,0x8cb3,0x8cb3,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x8493,0x94f4,0x8cd4,0x8c93,0x8493,0x7c52,0x8472,0x8cd4,0x7c31,0x7410,0x7c31,0x7410,0x7411,0x7c31,0x7c31,0x7c32,0x8472,0x8493,0x8472,0x8492,0x8492,0x8452,0x8472,0x7c72,0x7c31,0x7410,0x7c31,0x73f0,0x7410,0x7c31,0x7c31,0x73f0,0x7c31,0x73f0,0x6bd0,0x6bcf,0x7410,0x7c52,0x7411,0x7410,0x73f0,0x73cf,0x73ef,0x7c30,0x7c31,0x73f0,0x6bcf,0x6b8e,0x636e,0x6baf,0x6b8e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x634d,0x636d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b2d,0x5b2c,0x52eb,0x5aeb,0x5aec,0x52ec,0x5b4d,0x530c,0x5b0c,0x5b2c,0x52eb, +0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52aa,0x52cb,0x5aeb,0x5aec,0x630c,0x630c,0x630c,0x5aec,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x632c,0x634d,0x634d,0x632c,0x632c,0x5b0c,0x632d,0x632d,0x636d,0x634d,0x634d,0x634d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738f,0x738e,0x73af,0x73af,0x73cf,0x73d0,0x73d0,0x8431,0x8c52,0x7c11,0x7c11,0x8452,0x8452,0x8451,0x8451,0x8451,0x8451,0x8451,0x7c31,0x7c10,0x73d0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c11,0x7c32,0x8c73,0x94d4,0x8472,0x8cd4,0x8cb3,0x8452,0x8493,0x8cb4,0x94d4,0x9d35,0xa576,0x9d56,0x9d35,0x9514,0x9d55,0x9d56,0x8cd3,0x8cd4,0x8cb3,0x9515,0x94f4,0x8cd4,0x8cb4,0x8cb3,0x94f4,0x94f5,0x8cd4,0x94f5,0x9515,0x94f5,0x8cd4,0x94f4,0x9d35,0x9d35,0x9d76,0xa576,0xa577,0xa597,0xa576,0xa576,0xad97,0xa597,0xadb7,0xadb7,0xb5d8,0xbe3a,0xc65a,0xc69b,0x630d,0x9cd5,0x94b1,0x52ab,0x4a4a,0x4229,0x4229,0x4209,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x4208,0x526a,0x528a,0x526a,0x4a49,0x526a,0x4a69,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x39e7,0x39a7,0x39e8,0x3186,0x3186,0x31a6,0x39a7,0x31a6,0x39c7,0x39a6,0x2945,0x2965,0x3186,0x31a6,0x39c7,0x39c7,0x31a6,0x39c7,0x4208,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x41e8,0x4a29,0x4a29,0x4a4a,0x524a,0x526a,0x528a,0x528a,0x5aab,0x5aab,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5a8b,0x5a8a,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5aab,0x5acb,0x62eb,0x62eb,0x62eb,0x6b0c,0x630b,0x62eb,0x5aab,0x62cb,0x6b2c,0x736e,0xa577,0xa598,0xa5b8,0xadd8,0xadb8,0x9d36,0xa577,0xadf8,0xadb8,0xadf8,0xa576,0xa597,0xa5b7,0xadb7,0xa577,0x9d35,0x8cd4,0x9515,0x9515,0x8493,0x84b3,0x8cf4,0x8493,0x8cb3,0x8cd4,0x8cb3,0x8c93,0x8cd4,0x8473,0x7c32,0x7c52,0x8cb3,0x8493,0x8452,0x7c32,0x8472,0x7c72,0x8493,0x7c31,0x7c31,0x7c31,0x7410,0x73f0,0x7431,0x7c72,0x8472,0x8492,0x8472,0x7c72,0x8472,0x8493,0x8452,0x7c11,0x7c31,0x8432,0x7c11,0x7c31,0x7c11,0x7c11,0x7c51,0x8471,0x73f0,0x73f0,0x7410,0x73f0,0x73f0,0x73f0,0x7411,0x7411,0x7411,0x7410,0x73ef,0x73ef,0x7c30,0x7410,0x73d0,0x6bcf,0x6b8f,0x6baf,0x6baf,0x638e,0x6bae,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x6b6e,0x636e,0x6b8f,0x6baf,0x6b6e,0x636e,0x636e,0x6baf,0x6baf,0x636e,0x634d,0x6b8e,0x6b6e,0x73af,0x6b8e,0x5b0c,0x5b0c,0x5b2c,0x52ec,0x52eb,0x5b0c,0x636e,0x5b4d,0x530c,0x52eb,0x52cb, +0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aaa,0x5aeb,0x630c,0x5b0c,0x5b0c,0x6b6d,0x6b4d,0x630c,0x630c,0x632c,0x630c,0x5b0c,0x5b0c,0x632c,0x634d,0x632c,0x632c,0x630c,0x632c,0x632d,0x634d,0x634d,0x632d,0x632d,0x634d,0x636d,0x6b8e,0x6b8e,0x8411,0x94b3,0x94b2,0x9492,0x8430,0x73ef,0x73cf,0x73cf,0x73af,0x7bef,0x9492,0x94b3,0x9cf3,0x9492,0x9cf4,0x9cf4,0x9d14,0xa514,0x9cf4,0x94b2,0x94d3,0x94d3,0x7c30,0x7c10,0x8c72,0x9cf4,0xa535,0xa555,0x9cf4,0x94d3,0x9cf4,0x94b3,0x7c31,0x8452,0x94d4,0x8472,0x8c73,0x8cb3,0x8472,0x8472,0x8cb4,0x94d4,0x9d15,0xa576,0x9d56,0x9515,0x9d35,0x9d35,0x9d35,0x94f4,0x8cd4,0x8cd4,0x94f4,0x9d15,0x8cd4,0x8493,0x8cb4,0x8cf4,0x94f4,0x9515,0x94f5,0x8cf4,0x94f4,0x94f4,0x8cb3,0x94f4,0x9515,0x9515,0xa556,0x9d56,0xa597,0xa597,0xa577,0xadb8,0xb5d8,0xa597,0xa577,0xadb8,0xb5f9,0xbe19,0xbe5a,0xbe5a,0x630e,0x9cf6,0x8c70,0x528a,0x4a49,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x630d,0x7baf,0x6b2d,0x5acb,0x738e,0x6b4c,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a29,0x52aa,0x4a69,0x4a6a,0x5acb,0x41e8,0x39c7,0x4229,0x528a,0x4a69,0x4229,0x52aa,0x3165,0x39c7,0x4a49,0x4208,0x4a49,0x526a,0x39c7,0x5acb,0x5acb,0x4a29,0x39c7,0x39c7,0x39e8,0x39e8,0x4208,0x4a4a,0x62ec,0x5aab,0x5aab,0x6b2d,0x5aab,0x62ec,0x62ec,0x62ec,0x6b2d,0x62cb,0x5a8a,0x5aab,0x62ec,0x62cc,0x62ec,0x6b2d,0x62ec,0x5aab,0x5aab,0x6b2d,0x632c,0x62ec,0x62ec,0x736e,0x6b0c,0x62cb,0x62eb,0x630c,0x738d,0x6b4d,0x734d,0x7bce,0x8410,0xa597,0xa597,0xa597,0xa597,0xadd8,0xa597,0xa576,0xadb7,0xadd8,0xa596,0x9d36,0xa597,0xa597,0x9d55,0x9d35,0x9d35,0x94f4,0x94f4,0x9515,0x8493,0x8493,0x94f4,0x8493,0x7c72,0x84b3,0x8cd4,0x94d4,0x8cd4,0x8cd4,0x8493,0x8493,0x8cd4,0x7c52,0x7c52,0x8452,0x7c52,0x7431,0x84b3,0x7c51,0x7c11,0x7c31,0x7c31,0x7c11,0x7c31,0x8472,0x8492,0x7c52,0x8cb3,0x8472,0x8493,0x8cb3,0x8472,0x7c31,0x7c31,0x7c11,0x7c11,0x7410,0x7c31,0x7c31,0x7c51,0x8472,0x73f0,0x6bf0,0x73f0,0x7411,0x73f0,0x73f0,0x7411,0x73f0,0x73d0,0x7410,0x7410,0x7410,0x7c11,0x73d0,0x73d0,0x73cf,0x6bcf,0x6baf,0x636e,0x636e,0x6b8e,0x6baf,0x6b8f,0x6b8e,0x636e,0x6b8e,0x6baf,0x73d0,0x636e,0x6b6e,0x636e,0x634d,0x636d,0x638e,0x6b8e,0x73cf,0x6b8e,0x73cf,0x6b8e,0x634d,0x634d,0x5aec,0x52cc,0x632d,0x5aec,0x5acb,0x632d,0x6b8e,0x52ec,0x52eb,0x5aec,0x52cb, +0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632d,0x6b4d,0x632c,0x738e,0x73ae,0x6b6d,0x630c,0x5aec,0x630c,0x630c,0x5aec,0x5aec,0x630c,0x632d,0x632d,0x634d,0x632c,0x632c,0x636d,0x634d,0x632c,0x632d,0x634d,0x632d,0x6b6e,0x738e,0x7bcf,0x9cb3,0xa4f3,0xa4f3,0x9cd3,0x9d14,0x8471,0x73ef,0x7bf0,0x7bd0,0x9472,0x8c71,0x94d3,0xad75,0x94b2,0x9492,0x9cd3,0xa4f3,0x9492,0xa514,0x9cd3,0x9472,0xadb6,0x9d55,0x8471,0x8c72,0x9cd3,0x9cd3,0xa535,0xb5d7,0x94d3,0xa575,0xadb6,0x8451,0x8c92,0x94f4,0x8431,0x8cb3,0x8cb3,0x8cb3,0x8473,0x8493,0x9d35,0x9d56,0x9d56,0x9d35,0x9d15,0x94d4,0x9515,0x9d56,0x94f4,0x94f4,0x9d15,0x9d56,0xa556,0x94f4,0x8cb3,0x94d4,0x8cf4,0x8cd4,0x9d15,0x9d15,0x8cb4,0x8cd4,0x8cb4,0x8cb3,0x9d14,0x94f4,0x94f4,0xa576,0xad97,0xad97,0xa576,0xadb7,0xad97,0xa577,0xa577,0xad97,0xad98,0xadd9,0xb5f9,0xb5f9,0xb5f9,0x630e,0xa516,0x844f,0x528a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x7390,0x8c72,0x736e,0x62ed,0x8c51,0x7bce,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x5acb,0x526a,0x4a29,0x630c,0x528a,0x5acb,0x4a4a,0x528b,0x52ac,0x5acb,0x39c7,0x632d,0x39a7,0x526b,0x62ec,0x5acb,0x62ec,0x5acb,0x5aab,0x738e,0x632d,0x4a49,0x39a7,0x39a7,0x39a7,0x39c8,0x4208,0x52ab,0x73af,0x6b2d,0x62ec,0x6b4e,0x5acc,0x7baf,0x738e,0x5aab,0x73af,0x736d,0x5acb,0x738f,0x736e,0x5aab,0x5aab,0x6b2d,0x738e,0x5aab,0x62ec,0x83d0,0x736e,0x5aab,0x5aab,0x738f,0x7bae,0x5aab,0x5a8b,0x5aab,0x630c,0x6b0c,0x6b0c,0x734d,0x83ef,0xadb8,0xadb7,0xa576,0x9d56,0xa597,0xb5f8,0xa536,0xad97,0xb5d8,0xadb7,0xa577,0xa597,0x9d56,0xa576,0x9d35,0x8cb3,0x9d15,0x94f4,0x9d35,0x9d15,0x8cf4,0x9515,0x8cd4,0x8473,0x8472,0x8cb3,0x94d3,0x8cb3,0x9514,0x9514,0x94f4,0x9515,0x8472,0x7c31,0x7c52,0x7c72,0x7431,0xa576,0x94f4,0x73d0,0x7411,0x7c31,0x7c11,0x7c31,0x94d3,0x94d4,0x8492,0x8452,0x8473,0x8493,0x8472,0x8472,0x8472,0x7c51,0x7c11,0x7c11,0x7411,0x7c31,0x7c11,0x73d0,0x7c11,0x73f0,0x6bf0,0x7410,0x7c51,0x7410,0x73cf,0x7c10,0x73f0,0x73d0,0x7410,0x73f0,0x73f0,0x7c31,0x73f0,0x6baf,0x73af,0x73af,0x6baf,0x6b8f,0x73d0,0x73f0,0x6b8f,0x73d0,0x6baf,0x63ae,0x6baf,0x73cf,0x73cf,0x634e,0x6b8e,0x636d,0x6b8e,0x638e,0x636d,0x636e,0x638e,0x6baf,0x73f0,0x636e,0x5b2d,0x5b2d,0x530c,0x5b0c,0x634e,0x5b2d,0x5aec,0x5b0c,0x636d,0x5aec,0x52cb,0x52cb,0x52cb, +0x630c,0x630c,0x5aeb,0x630c,0x5aec,0x5b0c,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x634d,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x632c,0x6b4d,0x6b4d,0x632d,0x632c,0x634d,0x636e,0x6b8e,0x636d,0x634c,0x6b6d,0x6b8e,0x6b8e,0x7bf0,0x8c51,0x9451,0x8c30,0x9c92,0x8c31,0xb5b6,0x9d54,0x7c31,0x8410,0x8410,0xa514,0x9491,0x94b1,0xa513,0xa513,0x9471,0x9492,0xb5b6,0xa534,0x9cf3,0x9471,0x9471,0xa514,0xbe18,0x8cb3,0x8c71,0xa534,0x94d2,0x8c71,0xad34,0x8c71,0xa534,0xb5d7,0x8452,0x9d35,0x8c93,0x8451,0x8472,0x8493,0x8492,0x8452,0x8cb3,0x9d15,0x9d55,0x9d35,0x9d15,0x94f4,0x8cb3,0x94f4,0x8cd4,0x8cb3,0x94d4,0x9cf5,0x9d36,0xa576,0x94f4,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x8cd4,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x9515,0x94f4,0x94f5,0xad97,0xb5d8,0xadd8,0xadd7,0xa5b7,0x9d36,0x9d36,0xa597,0xadd8,0xadd8,0xb619,0xbe3a,0xbe59,0xb5f8,0x632e,0xa516,0x842f,0x4a8a,0x4229,0x39e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x738f,0x8c31,0x6b4d,0x630d,0x8c92,0x73ce,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e8,0x630c,0x5acc,0x62cc,0x632d,0x39e8,0x6b6e,0x5aac,0x526a,0x528b,0x5aab,0x526a,0x62ed,0x4a49,0x5acc,0x6b2d,0x632d,0x62ec,0x5acc,0x6b4e,0x738f,0x630d,0x4a49,0x3186,0x3186,0x3186,0x3187,0x39c7,0x630c,0x73af,0x6b6e,0x630c,0x630d,0x5aab,0x6b4e,0x630c,0x526a,0x7bf0,0x7bcf,0x630d,0x9472,0x732d,0x5249,0x524a,0x528a,0x738e,0x6b0c,0x738e,0x9452,0x62cc,0x5a6a,0x526a,0x5acc,0x7bcf,0x6b0c,0x5a8b,0x5a6a,0x526a,0x62cb,0x62cb,0x62eb,0x736e,0xa577,0xadd8,0xadd8,0xa577,0x9d56,0xadd8,0xad97,0x9d56,0xadd7,0xb5d8,0xb5f8,0xa577,0x94f5,0xa576,0xa577,0x94d4,0x9d56,0x9d15,0x94d4,0x94f4,0x94f5,0x9515,0x8cd4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x8cb3,0x8cd3,0x9d14,0x9d35,0x94d4,0x8cb3,0x8493,0x7c52,0x7c72,0x73f0,0x9d36,0xa556,0x7c11,0x7411,0x7410,0x73f0,0x7411,0x8cd3,0x9d35,0x9514,0x8c93,0x8cb4,0x8c93,0x8492,0x8492,0x7c52,0x8452,0x7c11,0x73f1,0x73d0,0x73f0,0x7c11,0x73f0,0x73f0,0x73f0,0x6baf,0x6baf,0x6bcf,0x73ef,0x73cf,0x73f0,0x7410,0x73d0,0x73d0,0x73cf,0x73f0,0x73f0,0x73d0,0x73af,0x73d0,0x6baf,0x6bb0,0x73f0,0x73d0,0x6baf,0x6b8f,0x6baf,0x6bcf,0x6bcf,0x6baf,0x73cf,0x6bcf,0x73f0,0x6b8e,0x634e,0x6bae,0x638e,0x5b2c,0x634d,0x636d,0x6bae,0x6bcf,0x638e,0x638e,0x5b2d,0x5b0c,0x5b0d,0x634d,0x5b2c,0x636d,0x634d,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52ab, +0x5aeb,0x62ec,0x630c,0x62eb,0x630c,0x632c,0x6b8e,0x6b8e,0x6b6d,0x738e,0x6b8e,0x634d,0x632c,0x634c,0x634d,0x632c,0x630c,0x632c,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x634d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x73cf,0x8c52,0x9472,0x9471,0x9471,0x9cb2,0x9451,0xbdf8,0xadb6,0x8471,0x8431,0x94b3,0x9cd2,0x9450,0x9491,0x9cb2,0xb5b6,0x9d14,0x9472,0xb5b6,0xbe17,0x8471,0x8c71,0x9491,0x9492,0xbe18,0x9d14,0x8430,0xc618,0xad95,0x8c51,0xa4f4,0x9492,0xa534,0xadb6,0x7c31,0x9d15,0x8473,0x8472,0x8452,0x8472,0x8472,0x8452,0x94f4,0x9514,0x9d35,0x9d15,0x94f4,0x94d3,0x8cb2,0x9d34,0x8cf3,0x8493,0x8cb3,0x94b4,0x94d4,0x94f5,0x94f5,0x8cd4,0x8cb4,0x94f5,0x8cd4,0x8c93,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x8cd4,0x94f4,0x94f4,0x9515,0xad97,0xadb7,0xadd7,0xadd7,0xa597,0xa577,0xa577,0xa556,0xadb7,0xb639,0xc6bb,0xbe59,0xb618,0xbe19,0x6b2e,0xa536,0x840f,0x4a6a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x41e8,0x738f,0x8411,0x6b4d,0x630e,0x94b3,0x7bcf,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a49,0x5aec,0x6b6f,0x7bd0,0x5aec,0x4229,0x6b6e,0x5aec,0x4a6a,0x5acb,0x528b,0x8411,0x5acc,0x5aab,0x630d,0x62ec,0x4a6a,0x4a4a,0x630d,0x5aac,0x6b6e,0x62ec,0x4a49,0x3186,0x3186,0x3186,0x3166,0x3186,0x5aab,0x6b2d,0x630c,0x5acc,0x738e,0x62cb,0x524a,0x524a,0x5acb,0x8c52,0x83af,0x6b4d,0x9451,0x5a6a,0x4a29,0x4a09,0x4a09,0x6b6e,0x738e,0x73cf,0x8411,0x5a6a,0x524a,0x4a4a,0x4a6a,0x6b6e,0x6b4d,0x5a8a,0x5a8a,0x5a8a,0x5aab,0x62ab,0x62cb,0x6b2d,0x9d56,0xa5b8,0xa5b8,0x9d77,0x9d56,0xadb7,0xadb7,0x9d77,0xadd8,0xb5f8,0xa597,0x9d56,0x9d56,0xadb8,0xad97,0x9515,0xa576,0xa596,0x9d76,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x94d4,0x94d4,0x8472,0x8cb3,0x9d35,0x94f4,0x8cb3,0x8473,0x7c52,0x8452,0x7c11,0x94f5,0x8c93,0x7c52,0x7c31,0x7c52,0x7431,0x7431,0x7c72,0x8cd3,0x8cd3,0x8492,0x8472,0x8493,0x8473,0x8472,0x8472,0x7c11,0x73d0,0x7bf1,0x7bf1,0x73f0,0x7bf0,0x7c11,0x7bf0,0x73f0,0x73f0,0x6bcf,0x6baf,0x73cf,0x7410,0x7c31,0x7bf0,0x73d0,0x73f0,0x73d0,0x73d0,0x73d0,0x7bf0,0x73af,0x6b8f,0x6baf,0x73b0,0x73d0,0x6baf,0x638e,0x636e,0x6b8f,0x73cf,0x73cf,0x73cf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x636e,0x636e,0x5b4d,0x634d,0x636d,0x73ef,0x6bcf,0x6baf,0x634e,0x5b2d,0x5b0d,0x632d,0x632d,0x5b2d,0x5b2c,0x636d,0x6b8e,0x5b0c,0x52ec,0x5aeb,0x52eb, +0x5aeb,0x62ec,0x5aeb,0x62eb,0x632c,0x6b6d,0x738e,0x6b4d,0x73ae,0x73ce,0x636d,0x632c,0x634c,0x634c,0x5b0c,0x5b0c,0x630c,0x632c,0x630c,0x632c,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x634d,0x634d,0x6b6e,0x7bd0,0x8c51,0x8c51,0x8c30,0x8c10,0x9cd2,0x9451,0xb5b6,0xb5f7,0x8cb2,0x8472,0x9cd3,0x9471,0x9cb1,0xa4f3,0x8c30,0xb5b6,0xa575,0x7bd0,0xa515,0xbe18,0x73ef,0x94b2,0xad34,0x8c30,0xbdf7,0xa575,0x8430,0xa554,0x94b2,0x9491,0xb576,0x9492,0xa554,0xb5d7,0x7c52,0x8cb3,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb4,0x9d35,0x94f4,0x8c93,0x8c93,0x8cb3,0x8cb3,0x94f4,0x9535,0x8cd3,0x7c52,0x8c92,0x94b3,0x94d4,0x94f4,0x94d4,0x94f4,0x8cb4,0x84b3,0x8493,0x8493,0x8cb4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x94f5,0xa576,0xadd8,0xad97,0xa556,0xa556,0xa556,0xa577,0xa556,0xa556,0xc67a,0xb5f8,0xadd8,0xa577,0xa597,0xb5d9,0x632e,0xa537,0x840f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4a29,0x738f,0x8411,0x6b4d,0x630d,0x8c72,0x7bcf,0x4228,0x41e7,0x39c7,0x41c7,0x39c7,0x41c7,0x41c7,0x39c7,0x5aab,0x526a,0x52ac,0x5aec,0x4a6a,0x52ab,0x6b2d,0x5acc,0x52ab,0x5acb,0x4209,0x632d,0x4229,0x62ec,0x632d,0x5aab,0x528a,0x4a4a,0x630c,0x41e9,0x6b2d,0x5aec,0x4a49,0x3986,0x3986,0x3186,0x3186,0x3186,0x4a6a,0x5aab,0x4a49,0x4a4a,0x7bcf,0x6b0d,0x4a28,0x5aab,0x7baf,0x7bb0,0x62ab,0x632d,0x8410,0x5249,0x4a08,0x4a08,0x4a29,0x7baf,0x738e,0x6b4e,0x7baf,0x5a4a,0x524a,0x524a,0x528b,0x7bd0,0x736e,0x5a8b,0x5a8a,0x5aab,0x5acb,0x5a8a,0x628b,0x6b4e,0xa598,0xa5b8,0xa5b8,0xa5b8,0x9d77,0xadb8,0xadb8,0xadb8,0xadd8,0xb5f8,0xa576,0x9d35,0xa556,0xadb7,0xad97,0x9d56,0x9d55,0xadf8,0x9d76,0x8cd4,0x94f5,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x94d4,0x84b3,0x7c72,0x9515,0x8cd4,0x8c93,0x8cb3,0x8473,0x7c31,0x7c52,0x9d15,0x8452,0x7431,0x7411,0x7411,0x7c32,0x7c31,0x7c31,0x94b3,0x8c93,0x8472,0x7c51,0x7c31,0x8452,0x8473,0x8472,0x7411,0x7411,0x73f1,0x7c31,0x7c31,0x7c31,0x7c10,0x7c10,0x7bf0,0x73d0,0x6baf,0x6baf,0x73f0,0x7c31,0x7c31,0x7c10,0x73f0,0x7c11,0x73f0,0x73d0,0x73f0,0x7c11,0x8452,0x73d0,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8f,0x6baf,0x73cf,0x73d0,0x7c10,0x73ef,0x73f0,0x6baf,0x6b8f,0x6bae,0x6bae,0x6b6e,0x6b8e,0x6b8e,0x634d,0x636e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0c,0x5b0c,0x634d,0x636d,0x636d,0x5aec,0x5b0c, +0x630c,0x630c,0x630c,0x5aeb,0x632c,0x632c,0x6b4d,0x6b6d,0x6b8d,0x634d,0x634c,0x634c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x634d,0x6b6d,0x6b8e,0x632d,0x5b0d,0x6b4e,0x738f,0x7bf0,0x8c51,0x8410,0xa4f3,0x8c30,0x9cf3,0x9491,0xa4f3,0xbdf7,0x9d54,0x94d3,0x8c92,0x9471,0xa4f2,0xa513,0x9451,0xad34,0xad96,0x73af,0xad35,0xbdd7,0x7bef,0x9cb2,0x9cd3,0x8c10,0xb576,0xad96,0x8430,0x94b2,0x9492,0xad75,0xbdf7,0x8431,0xa555,0xb5f7,0x8452,0x8452,0x8432,0x8472,0x7c51,0x7c31,0x8472,0x94f4,0x9d15,0x8c93,0x8473,0x8452,0x8c93,0x8cb4,0x8cd4,0x8cb3,0x8cb3,0x7c31,0x8472,0x8cd3,0x8cd4,0x8cd4,0x8492,0x8cd4,0x8cb3,0x7c72,0x8472,0x8493,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x9cf5,0xa536,0xadb7,0xa5b7,0xadb7,0xa576,0x9d56,0x9d36,0x9d56,0xa576,0xbe39,0xbe39,0xa597,0xa597,0xadb8,0xb5f9,0xb5f9,0x632e,0xa537,0x7c0f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x5aab,0x6b4e,0x8432,0x6b2d,0x630d,0x9492,0x73af,0x5269,0x41c7,0x39c7,0x39e7,0x39c7,0x39e7,0x41e7,0x39c8,0x632d,0x528a,0x4229,0x4209,0x4a6a,0x630c,0x6b2d,0x5acc,0x630d,0x52ab,0x4a4a,0x39c7,0x39e8,0x5acc,0x6b4e,0x5aab,0x630d,0x526b,0x62ec,0x4a4a,0x630c,0x5aec,0x4a49,0x3986,0x3987,0x3186,0x3186,0x39c7,0x5aec,0x630c,0x4a29,0x4a4a,0x7bf0,0x6b2d,0x5aab,0x736e,0x83d0,0x5aab,0x4a49,0x528a,0x6b6e,0x62cb,0x5249,0x4a49,0x5acb,0x8c31,0x6b2d,0x5aec,0x7bf0,0x62cb,0x526a,0x526a,0x630d,0x9493,0x732d,0x5a8b,0x5a8b,0x62cb,0x62cb,0x5a8a,0x5a8a,0x6b2d,0xad98,0xa598,0xa5b8,0xadd8,0xa597,0xa597,0xadb7,0xb5f9,0xb5f9,0x9d56,0x9515,0x9d56,0x9d56,0xad97,0xbe19,0xadd8,0x9d15,0x9d36,0x8cd4,0x8cd4,0x9515,0x94f4,0x8c93,0x8cb3,0x8c93,0x8493,0x84b3,0x84b3,0x8cf4,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8472,0x7c32,0x7c32,0x94f4,0x8492,0x7410,0x73f0,0x7c11,0x8452,0x7c51,0x7411,0x8c93,0x8cd3,0x8492,0x7c11,0x7c11,0x7c52,0x8472,0x8472,0x7c31,0x73f0,0x8452,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x7bf0,0x7c11,0x73d0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x7411,0x6bf0,0x7410,0x7c31,0x73f0,0x73f0,0x7431,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x73b0,0x73d0,0x73cf,0x73cf,0x7410,0x6bcf,0x6baf,0x6baf,0x73cf,0x73cf,0x6b8e,0x6b8e,0x636d,0x638e,0x636e,0x73af,0x6b6e,0x632e,0x630d,0x5b0d,0x5b2d,0x52ec,0x6b8e,0x73ae,0x5aec,0x630c,0x634c,0x73cf,0x634d,0x5b0c, +0x5aeb,0x634d,0x632c,0x5aeb,0x630c,0x630c,0x634c,0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x634c,0x6b8e,0x634d,0x630d,0x6b6e,0x7bcf,0x9471,0x9451,0x9471,0xb5b6,0x840f,0xa534,0x9cf3,0x8c10,0xad75,0xadb6,0x9d54,0x8c91,0x9471,0x9cb2,0x9cd2,0x9cb2,0xa4f3,0xad95,0x7bce,0xb575,0xb595,0x840f,0x9cd2,0x8c72,0x8c51,0x9cd3,0xb596,0x8410,0xa4f4,0x9492,0xad75,0xbdf7,0x8410,0xad55,0xbe18,0x8472,0x7c31,0x7c11,0x8452,0x8452,0x7c31,0x8432,0x8c93,0x94d4,0x8cb3,0x8452,0x8c72,0x8c93,0x8c93,0x8473,0x8473,0x8472,0x8492,0x8c93,0x8c93,0x8492,0x8472,0x8472,0x8492,0x8cb4,0x8493,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x8cb4,0x94f4,0x94d4,0x9d15,0xa576,0xa597,0xa576,0x9d56,0xa576,0x9d36,0x9d56,0xad97,0xc67a,0xbe5a,0xa597,0xadd8,0xad97,0xadd8,0xb619,0xbe19,0x632e,0xa537,0x7bef,0x4a6a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x4208,0x4208,0x4208,0x4209,0x632d,0x6b2e,0x8c32,0x630d,0x630e,0x9cf4,0x738e,0x5aab,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41e8,0x5acc,0x5acb,0x4208,0x39e8,0x528b,0x5acc,0x5aec,0x528b,0x5aec,0x526a,0x5aab,0x3166,0x4229,0x528b,0x632d,0x5aab,0x5acc,0x4a29,0x52ab,0x5aec,0x5aab,0x5aec,0x4a29,0x3986,0x39a6,0x3186,0x3186,0x39a7,0x528a,0x630c,0x5aab,0x5a8b,0x7bb0,0x62cc,0x62cc,0x62ec,0x62cc,0x5a8b,0x630c,0x4a09,0x526a,0x5aeb,0x5aaa,0x5aaa,0x630d,0x736e,0x5a8b,0x526a,0x6b2d,0x6b2d,0x5aab,0x5aab,0x6b4e,0x83f0,0x62cc,0x5a8b,0x5a8b,0x62cc,0x62ec,0x5aab,0x5a8b,0x6b2e,0xadd8,0xadb8,0xa5b8,0xadb8,0xadb8,0xa597,0xbe19,0xbe39,0xc65a,0x9d35,0x94f5,0x94f4,0xa556,0xa556,0xbe19,0xb5f9,0xadd8,0x9515,0x9515,0x9d35,0x9d35,0x94f5,0x8c93,0x94f4,0x8cd4,0x8cb3,0x8493,0x8c93,0x8c93,0x94d4,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x7c52,0x7c31,0x8472,0x8c92,0x8472,0x7c31,0x7c31,0x8452,0x7c31,0x7411,0x8472,0x8472,0x7411,0x7c31,0x7411,0x7c32,0x8452,0x7c52,0x7c52,0x7c52,0x7c31,0x7431,0x6bf0,0x6bf0,0x7410,0x7c31,0x73f0,0x7c31,0x73d0,0x73f0,0x6baf,0x73f0,0x7410,0x6bf0,0x6bcf,0x73f0,0x7c11,0x7410,0x73f0,0x7410,0x6bcf,0x6baf,0x6baf,0x638e,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73cf,0x73d0,0x73d0,0x6baf,0x73f0,0x7c10,0x6bae,0x636e,0x636e,0x6b8e,0x6b8e,0x73af,0x6b6e,0x5b2d,0x5b2d,0x5b0d,0x632d,0x6b8e,0x6b8e,0x6b8e,0x5b0d,0x632c,0x5b0c,0x636d,0x5b4d,0x5b0c, +0x632c,0x630c,0x5b0b,0x5aeb,0x630c,0x630c,0x634c,0x632c,0x5aeb,0x630c,0x5b0b,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x632c,0x630c,0x5aeb,0x630c,0x6b4d,0x632c,0x630c,0x630c,0x6b8e,0x6b6d,0x6b4e,0x738f,0x8c10,0x9451,0x8c30,0xad55,0xad75,0x7bcf,0xa514,0xad75,0x8c31,0x9492,0x9d13,0xa595,0x94b2,0x9471,0xad34,0xad54,0x94b1,0x94b1,0xad54,0x8c30,0xa513,0xa513,0x8c71,0xad95,0xa555,0x8c91,0x8c51,0x9cd3,0x8410,0xb5b6,0x9cf4,0x8c92,0xad76,0x9451,0xad14,0xbdd7,0x8472,0x8451,0x8431,0x7c31,0x7c31,0x8431,0x7c11,0x8451,0x8c93,0x8c93,0x8452,0x8472,0x8472,0x8452,0x8c93,0x7c31,0x7c52,0x8493,0x8c73,0x8c72,0x8452,0x8452,0x8472,0x8452,0x8c93,0x94f4,0x8cd3,0x8c93,0x8c93,0x8cb3,0x94f4,0x94d4,0x94f4,0x9d56,0x9d35,0xa576,0x9d35,0x9d15,0xa535,0xa535,0xbe19,0xc69b,0xbe19,0xad98,0xa598,0xadb8,0xadb8,0xb5d8,0xbdf8,0xc67a,0x630e,0xa557,0x7bee,0x4a8a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x5acb,0x5aec,0x630e,0x738f,0x6b2d,0x630e,0x83f1,0x738e,0x5aab,0x4a49,0x41e7,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x4229,0x4209,0x39c7,0x31a7,0x41e8,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x3166,0x39e8,0x4208,0x4208,0x41e8,0x4209,0x39a7,0x41e8,0x4a29,0x4208,0x4a2a,0x41e8,0x39a7,0x39a7,0x3186,0x3186,0x3186,0x39a7,0x4a49,0x4a49,0x526a,0x5aab,0x522a,0x524a,0x4a29,0x4a09,0x524a,0x62cb,0x4a08,0x4a08,0x5249,0x5249,0x526a,0x5a8b,0x526a,0x5229,0x4a29,0x526a,0x5aab,0x5aab,0x5aab,0x62cc,0x62ec,0x5a8b,0x5a8b,0x5aab,0x62ec,0x62ec,0x62ec,0x62ab,0x6b4d,0xb5f9,0xa5b8,0xa597,0xadb8,0xad97,0xa597,0xb5d8,0xb5d8,0xbe39,0xad97,0x9d36,0xa556,0xad97,0xa576,0xa556,0xadd8,0xadd8,0xa576,0x94f4,0x9515,0x9d36,0x94f4,0x94f4,0x9d35,0x8cf4,0x8cf4,0x8cf4,0x8cb3,0x8473,0x8493,0x8493,0x8cb3,0x8cb4,0x7c32,0x8473,0x8473,0x7c32,0x7c52,0x8452,0x8472,0x7c52,0x73f1,0x7c31,0x7c11,0x7411,0x7c52,0x7411,0x7c11,0x7410,0x7c31,0x8472,0x8473,0x7c52,0x8473,0x8493,0x7411,0x7411,0x73f0,0x73f0,0x73ef,0x7c30,0x7410,0x7410,0x73f0,0x6bcf,0x73cf,0x7c31,0x7410,0x73f0,0x73f0,0x7bf0,0x7c11,0x7410,0x6bef,0x7410,0x7c30,0x73cf,0x6b8e,0x636e,0x6baf,0x73cf,0x6b8f,0x6baf,0x6b8f,0x73af,0x73af,0x73cf,0x73b0,0x73d0,0x73d0,0x73f0,0x6baf,0x6b8f,0x6b8f,0x6b6e,0x6b6e,0x73af,0x73af,0x6baf,0x6b8e,0x636d,0x636e,0x5b2d,0x636d,0x7bf0,0x5b0d,0x5b2d,0x634e,0x5b0d,0x5b0c,0x530c,0x52eb,0x5b0c, +0x5aeb,0x5aeb,0x5b0c,0x5aec,0x5aeb,0x5aeb,0x630c,0x632c,0x5aeb,0x5aeb,0x62ec,0x630c,0x5b0c,0x634d,0x5b0c,0x5aec,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x632c,0x634d,0x6b4d,0x6b6e,0x7bcf,0x8c31,0x9cd2,0xa534,0xa535,0x8cb2,0x8c31,0xad34,0xad75,0x94b2,0x8c71,0x8c71,0xad54,0x9cd3,0x9492,0xad96,0xa575,0x94d3,0x9491,0x9cd2,0x9492,0x9cd3,0x9cf3,0xa534,0xb5d6,0x94d2,0x94b2,0x94b2,0x94d2,0x94d3,0xb5f7,0xa555,0x8c72,0x9cf4,0x9c93,0xad76,0xadb7,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x7c32,0x7c51,0x7c31,0x7c31,0x8472,0x8431,0x8451,0x8492,0x8493,0x8472,0x8492,0x8472,0x7c51,0x8472,0x8c92,0x8472,0x8472,0x8493,0x84b3,0x9535,0x8cf4,0x8472,0x8493,0x8473,0x8493,0x8cb3,0x94f4,0x9d55,0x9d55,0x9d76,0xa576,0xa576,0x9d35,0xad96,0xce9a,0xce9a,0xb619,0xb5f9,0xa5b7,0xadd8,0xadf8,0xbe3a,0xc65a,0xbe19,0xc67a,0x630e,0xad57,0x7bee,0x4a8a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4a49,0x528a,0x5acb,0x52ab,0x526a,0x630d,0x6b4d,0x6b2e,0x62ec,0x630d,0x5aab,0x526a,0x4a28,0x41e8,0x41e7,0x39c7,0x39c7,0x4a09,0x528a,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x41e8,0x41e8,0x39c7,0x39a6,0x39a7,0x39c7,0x39a7,0x39a7,0x39c7,0x39c7,0x41e8,0x4208,0x41e8,0x41e8,0x39c7,0x41e8,0x41e8,0x41e8,0x4a29,0x4a29,0x4a49,0x4a49,0x4a29,0x5249,0x4a29,0x4a29,0x4a29,0x5249,0x4a49,0x5249,0x4a29,0x5249,0x5269,0x5269,0x5249,0x5269,0x526a,0x528a,0x5a8a,0x5a8a,0x5aab,0x5a8b,0x62cb,0x62cc,0x5a8b,0x62ab,0x62ec,0x62ec,0x62ec,0x62cb,0x6b2d,0xadd8,0xadd8,0xa597,0xa5b8,0xadf8,0xadd8,0xa597,0xa597,0xb5f8,0xadb7,0xa576,0xb5f8,0xadb7,0xadb7,0xa597,0xa576,0xa576,0xa597,0x9d36,0x9515,0x8cf5,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x84b3,0x8493,0x8cb4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x7c32,0x8473,0x8472,0x8493,0x7c72,0x7c52,0x7c32,0x7c31,0x7c52,0x7c52,0x7411,0x6bf0,0x73f1,0x73f0,0x7c11,0x7c32,0x84b4,0x84b4,0x7c52,0x8493,0x7c52,0x7411,0x7411,0x6bb0,0x6bb0,0x6bd0,0x6bb0,0x6bd0,0x6bd0,0x63af,0x636f,0x6bb0,0x6c11,0x6bd0,0x6bf0,0x6bd0,0x636f,0x63b0,0x6bd0,0x5b8f,0x6bd0,0x6b90,0x5b4f,0x5b4e,0x5b4e,0x638f,0x63af,0x5b4e,0x4aed,0x530d,0x6bcf,0x5b6e,0x5b4d,0x5b4e,0x5b4e,0x5b6e,0x63af,0x5b8e,0x532d,0x532d,0x532c,0x5b6d,0x638d,0x5b6d,0x534d,0x4b2c,0x534c,0x536d,0x536d,0x4b0b,0x42eb,0x4b0b,0x430b,0x4b2b,0x4b2c,0x4b2b,0x430a,0x4b2b,0x4b2b, +0x5aaa,0x5aca,0x62eb,0x5aca,0x5aea,0x5aeb,0x630c,0x630c,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632c,0x630c,0x62ec,0x630c,0x62eb,0x62eb,0x630c,0x630c,0x62eb,0x62eb,0x62cb,0x62ec,0x6b2d,0x632d,0x632d,0x73af,0x8431,0x9cd3,0x8c92,0x7c10,0x7bf0,0x9472,0x9cb3,0x8451,0x7c10,0x8451,0x8c51,0x9492,0x94b3,0x9cd3,0x94b3,0x8c72,0x8c71,0x9cd3,0xa534,0x9cf3,0x9d13,0x9d13,0x9cf3,0x94b3,0x8431,0x8c72,0x9cd4,0xa515,0xa535,0x9cf3,0x8c72,0x9492,0x9cb3,0x9492,0x8cb2,0x8492,0x8431,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8431,0x8410,0x8431,0x8c31,0x8410,0x8410,0x8c52,0x94b3,0x8431,0xa514,0x94b3,0x8431,0x8c51,0x8410,0x8c31,0x8c10,0x8c31,0x8c51,0x9492,0x8c92,0x8c51,0x8c51,0x9472,0x9472,0x9473,0x94b3,0x9cf4,0x9cf4,0x9cd3,0xa4d3,0xa4d4,0xb535,0xd65a,0xce3a,0xb597,0xad76,0xad77,0xad56,0xb597,0xbdb8,0xc5f9,0xc5f9,0xc5f9,0xbdd8,0x630f,0xad78,0x7bce,0x528a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x4209,0x630d,0x52aa,0x528a,0x528a,0x526a,0x41e8,0x630d,0x6b6d,0x6b2e,0x5a8a,0x4a49,0x528a,0x526a,0x4a49,0x4229,0x4a49,0x39c7,0x39a7,0x528b,0x7bcf,0x5a68,0x6247,0x6226,0x6206,0x61e6,0x59c6,0x59c6,0x59c6,0x59c6,0x6207,0x6207,0x61e7,0x59c6,0x59c6,0x59c6,0x59c7,0x59e8,0x59c7,0x59c7,0x51e7,0x5208,0x5a49,0x5229,0x4a08,0x41e8,0x4208,0x4208,0x4209,0x4a29,0x4a4a,0x4a29,0x4a4a,0x4a4a,0x526a,0x4a4a,0x4209,0x4209,0x4209,0x4229,0x4a28,0x4228,0x4a28,0x4a48,0x4248,0x4a48,0x4a68,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5a89,0x6b2d,0x6b2d,0x5a8b,0x62cb,0x62ec,0x630c,0x62ec,0x5a8b,0x5aac,0x7c54,0x7c34,0x7434,0x7c34,0x84b5,0x8474,0x7c33,0x7c13,0x7c53,0x7c33,0x7c33,0x73f2,0x7413,0x7413,0x7c54,0x7413,0x6bb2,0x63b2,0x63b2,0x6391,0x5b51,0x6391,0x5b71,0x5330,0x5b50,0x5b71,0x5330,0x5b50,0x5b30,0x5310,0x5b10,0x530f,0x52ef,0x5b30,0x428e,0x42cf,0x4aef,0x4aef,0x42ce,0x42ce,0x42ae,0x428d,0x42ce,0x3aae,0x3a6d,0x3a6d,0x3a6d,0x3a8e,0x3a8e,0x3a6e,0x42cf,0x3a8e,0x324d,0x3a8e,0x428e,0x324d,0x3a8d,0x326d,0x2a6d,0x2a4d,0x2a6d,0x2a6d,0x222c,0x222c,0x224d,0x2a6d,0x32ce,0x2a8d,0x224c,0x224c,0x224c,0x2a6d,0x226d,0x226c,0x2a8d,0x224d,0x224c,0x1a2b,0x222b,0x224b,0x2a8b,0x328b,0x224a,0x2a8a,0x2aab,0x2aab,0x2aab,0x22aa,0x2aaa,0x2aca,0x2ac9,0x32c9,0x32ea,0x2ac9,0x2ac9,0x32c9,0x32e9,0x32e9,0x32e9,0x3309,0x3309,0x3309,0x32e8,0x32e8,0x32e8,0x32e8,0x2ac8,0x2ae8,0x32e8,0x32e8,0x3308,0x3308,0x32e8, +0x7b66,0x7b87,0x7b87,0x7b87,0x7b86,0x7b87,0x7b88,0x7b88,0x7b67,0x7b47,0x7b47,0x8368,0x8348,0x8347,0x8348,0x7b27,0x7b27,0x7b27,0x7b27,0x8327,0x8327,0x8327,0x8307,0x8327,0x8307,0x8328,0x8328,0x8308,0x8b49,0x8b6a,0x8b49,0x8b6a,0x8b6b,0x936a,0x936b,0x936b,0x8b4a,0x938b,0x93ac,0x938c,0x938c,0x938b,0x938c,0x936c,0x9b8c,0x9b8c,0x9b8c,0x9b8d,0x9b6c,0x9b6d,0x9b4c,0x932b,0x92ea,0x9b2b,0x9b2b,0x9b2b,0x9b2b,0x930b,0x92ea,0x9b0a,0x92ea,0x92ea,0x9aeb,0x92aa,0x92aa,0x9aca,0x9aea,0x9ac9,0x9ac9,0x9aea,0x9aea,0x9aa9,0x9aaa,0x9aa9,0x9aa9,0x9aa9,0x9aa9,0xa2ca,0x9aaa,0x9a89,0xab0b,0xaaeb,0x9a89,0x9a89,0x9a89,0x9a89,0xa269,0xa269,0xa248,0xa248,0xa269,0xa269,0xa249,0xa249,0xa249,0xa249,0xa269,0xa26a,0xa26a,0xa269,0x9a08,0xb30c,0xc3ae,0xaaec,0xaa6b,0xa26a,0xa26a,0xa24a,0xa26a,0xaaab,0xaa8b,0xaa4a,0xaa6b,0xaaac,0xaa8b,0x62ce,0xad98,0x7bce,0x528a,0x4249,0x4209,0x4208,0x4208,0x41e8,0x41e8,0x4a2a,0x7bd0,0x526a,0x4a29,0x4a29,0x41e8,0x39c8,0x62ed,0x6b6e,0x630d,0x5269,0x41e7,0x4229,0x4a49,0x4a29,0x4229,0x6b2d,0x39c7,0x39a7,0x5aac,0x9471,0x7b06,0x8a43,0x8a03,0x89e3,0x91a3,0x8982,0x89a3,0x8983,0x8983,0x9183,0x91a3,0x9183,0x9163,0x9164,0x8964,0x8964,0x89a5,0x8184,0x7964,0x7165,0x7165,0x71a6,0x5986,0x3945,0x2945,0x2925,0x2946,0x2946,0x2967,0x3188,0x2968,0x2989,0x2989,0x29a9,0x2989,0x2988,0x2988,0x2987,0x29a6,0x29c6,0x29c6,0x29e6,0x29e6,0x2a06,0x3206,0x3225,0x3245,0x3a45,0x3a66,0x4286,0x4ac6,0x5b07,0x73ad,0x736e,0x5a8b,0x62cb,0x736e,0x6b4d,0x62cc,0x5a6a,0x5aab,0x52d0,0x4ad1,0x52d1,0x4ab0,0x4ad0,0x4ab0,0x4a90,0x4a90,0x4a8f,0x52d0,0x4ab0,0x42b0,0x4ad0,0x52f0,0x4ad0,0x4ab0,0x4ab0,0x428f,0x3a6f,0x3a6e,0x42af,0x3a6f,0x324e,0x42af,0x4acf,0x42af,0x42af,0x42cf,0x42af,0x3a8f,0x42af,0x42af,0x3a8e,0x324e,0x42af,0x42af,0x3a8e,0x42cf,0x3aae,0x42ae,0x3a8d,0x324d,0x326d,0x3a8e,0x3aae,0x326e,0x3aae,0x3aae,0x42ae,0x42ce,0x42ce,0x3aae,0x3acf,0x3aae,0x328d,0x42ce,0x42ee,0x326c,0x3aad,0x3acd,0x3acd,0x3acd,0x430e,0x430e,0x4b0e,0x42ee,0x3aad,0x3acd,0x430e,0x3aad,0x3aad,0x3acd,0x42ee,0x42ed,0x4b0d,0x4b0d,0x42ed,0x42cc,0x42cc,0x42cc,0x4b0d,0x42ec,0x42cb,0x4b0c,0x4b2c,0x4b4d,0x4b4d,0x4b0c,0x4b2c,0x534c,0x532c,0x534c,0x5b6c,0x5b6c,0x534b,0x534c,0x534c,0x536c,0x534b,0x532b,0x5b6b,0x534b,0x534a,0x4b2a,0x534b,0x4b0a,0x532b,0x532b,0x4b0b,0x534b,0x534b,0x534b,0x530a, +0x8c23,0x8c23,0x8c03,0x8c03,0x9404,0x8be5,0x8be4,0x8bc3,0x8bc3,0x93c3,0x93a4,0x93a4,0x93a4,0x9384,0x8b84,0x8b64,0x8b64,0x8b64,0x8b63,0x9364,0x9364,0x9364,0x9363,0x9364,0x9364,0x9364,0x9364,0x9364,0x9b44,0x9b65,0x9b66,0x9b66,0x9b66,0x9b46,0x9b46,0x9b66,0x9b66,0x9b66,0x9b67,0x9b67,0x9b47,0x9b46,0x9b26,0x9b46,0x9b46,0x9b46,0xa326,0xa305,0x9ac5,0x9ae6,0x9ac6,0x9ae6,0xa2e6,0x9ac6,0x9aa5,0x9a85,0x9ac6,0x9ae7,0x9ac6,0x9aa6,0xa2a6,0xa2c7,0x9aa6,0x9a86,0x9aa7,0x9aa7,0x9aa7,0x9aa7,0xa2a7,0xa2a6,0x9a65,0x9a86,0x9a86,0x9aa7,0x9aa7,0x9a87,0x9aa7,0xa2c7,0xa2c7,0x9a87,0x9a86,0xa286,0xa287,0xa287,0xa2a7,0x9a65,0x9a66,0xa2a8,0xa2c8,0xa2a8,0xa2c9,0xa2a8,0xa2a8,0xa2a8,0xa288,0xa288,0xa2a9,0xa2c9,0xa2ca,0xa268,0xcc91,0xccd1,0x9b6c,0xa32c,0xa32c,0xab4c,0xa34c,0xa32c,0xab8d,0xab8d,0xa36d,0xb3af,0xb3ef,0xb3ef,0xb3ef,0x62ce,0xad78,0x73ae,0x528a,0x4a49,0x4229,0x4208,0x4208,0x41e8,0x41e8,0x4209,0x5acb,0x4208,0x41e8,0x41c8,0x41c7,0x39e7,0x526b,0x5aab,0x526a,0x4208,0x39c7,0x39e7,0x41e8,0x41e8,0x4209,0x5aab,0x39c7,0x39a7,0x526b,0x7bcf,0x7b06,0x8a42,0x8a02,0x91c2,0x91a2,0x9182,0x91a2,0x9182,0x9162,0x9142,0x9162,0x9142,0x9142,0x9142,0x9122,0x9143,0x8943,0x8943,0x8123,0x7923,0x7124,0x6944,0x5104,0x30e3,0x20c3,0x18c4,0x18e4,0x18e5,0x18e5,0x1906,0x2107,0x1927,0x1928,0x1928,0x2148,0x2148,0x2168,0x2167,0x2186,0x21a5,0x21a5,0x21c5,0x21e5,0x2a05,0x2a25,0x2a44,0x3264,0x3264,0x3a85,0x42a5,0x5305,0x6385,0x7bcc,0x7b8f,0x62cc,0x6b2d,0x736e,0x736e,0x62cb,0x5a8a,0x6b4d,0x9d56,0x9536,0x9535,0x9515,0x9515,0x9d56,0x9536,0x8cd4,0x8cd4,0x9535,0xa597,0x9d56,0x9515,0xa556,0x9d56,0x9515,0x9d56,0x9515,0x8473,0x8494,0x7c73,0x8493,0x84b4,0x84d3,0x8cf4,0x8cf4,0x7432,0x7c32,0x7c73,0x7c52,0x8493,0x8493,0x7c72,0x7c32,0x8473,0x8cb4,0x7c73,0x7c52,0x7c72,0x8493,0x8493,0x7c51,0x7431,0x7431,0x7c72,0x7c51,0x8cd3,0x94f4,0xa576,0x94f4,0x7c52,0x7c52,0x73f0,0x73f0,0x7410,0x7411,0x7411,0x63b0,0x6bf1,0x7c31,0x7430,0x7c31,0x8cd3,0x7c72,0x8472,0x7c51,0x73cf,0x6bd0,0x7410,0x6bf0,0x6c10,0x7410,0x7430,0x73f0,0x73f0,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x73f0,0x638f,0x638f,0x6b8f,0x638e,0x638e,0x6baf,0x638e,0x636e,0x6baf,0x638f,0x6b6e,0x6b8e,0x73cf,0x73cf,0x6bae,0x6bae,0x73cf,0x8451,0x6b6e,0x636e,0x634d,0x5b2c,0x638e,0x638d,0x634d,0x634d,0x632d,0x632d,0x5b0c,0x634d,0x5b0c,0x5b0c, +0x7368,0x7348,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7b69,0x7b69,0x7b68,0x7b68,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7349,0x7b49,0x7349,0x7328,0x7308,0x7309,0x7309,0x7309,0x7b29,0x7b4a,0x838a,0x7b6a,0x7b6a,0x838b,0x8bcd,0x8bed,0x940e,0x8c0e,0x8bed,0x940e,0x944f,0x942f,0x8c0e,0x8c0e,0x8bee,0x942f,0x9c6f,0x942f,0x8c0e,0x8c0d,0x93ee,0x9c4f,0x9c90,0x8c2e,0x8bed,0x8bed,0x8bee,0x8bee,0x8c2e,0x946f,0x8c4f,0x8c0f,0x83cd,0x83ad,0x8bad,0x8bad,0x83ce,0x83ae,0x83ce,0x83ee,0x83cd,0x83cd,0x8bee,0x8bee,0x942f,0x9470,0x9450,0x8c50,0x8c0f,0x8c0f,0x8c0f,0x8c0f,0x8c2f,0x840f,0x83ef,0x8bef,0x8bef,0x8bef,0x83ef,0x9cb1,0x9cf2,0x8c50,0x8c50,0x9471,0x9471,0x9471,0x8c71,0x8c71,0x9471,0x94b2,0x94b2,0x9cb2,0x9c92,0xad35,0xde9a,0xbdf8,0xbe18,0xb5b6,0xa534,0xa555,0xad75,0xa575,0xb5d7,0xad96,0xad76,0xbdf8,0xbe38,0xbe39,0xbe39,0x5aee,0xad77,0x73ad,0x52ab,0x4a6a,0x4a29,0x4209,0x4208,0x4208,0x41e8,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41c7,0x41e7,0x41e8,0x41e8,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c8,0x41e8,0x39c7,0x39c7,0x4208,0x526a,0x5226,0x51c4,0x51a4,0x5184,0x5985,0x5985,0x5985,0x5984,0x5984,0x5964,0x5964,0x5964,0x5964,0x5944,0x5944,0x5965,0x5985,0x5985,0x5965,0x5985,0x5185,0x5185,0x4145,0x3145,0x3145,0x2945,0x3186,0x3186,0x3146,0x3167,0x3167,0x3187,0x3187,0x3188,0x3188,0x31a8,0x31a8,0x31a7,0x31a7,0x39c6,0x39e6,0x39e6,0x31e6,0x3a06,0x3a06,0x3a26,0x3a46,0x4246,0x4246,0x4266,0x4aa6,0x5ae7,0x6b4c,0x734e,0x62ec,0x6b4d,0x630c,0x734e,0x734d,0x734d,0x736e,0xadd9,0xa597,0x9d76,0x9d96,0xa596,0xa577,0x9d36,0x9d35,0x9d55,0xadb7,0xbe39,0xc69a,0xadf7,0xadd7,0xadb7,0xa556,0xadb7,0xa556,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cf4,0x8cf4,0x9535,0x8493,0x84b3,0x8cb4,0x84b3,0x8cb4,0x8493,0x8452,0x8452,0x8cb4,0x8452,0x8452,0x8493,0x8473,0x84b3,0x84b3,0x8493,0x8472,0x7c52,0x8452,0x8472,0x9514,0xa575,0x9d55,0x8cb3,0x8452,0x8452,0x73f0,0x73f0,0x7c31,0x7410,0x7411,0x6bf0,0x7410,0x7c51,0x7c51,0x7c11,0x73f0,0x73f0,0x8451,0x8492,0x8472,0x73d0,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x7c30,0x73f0,0x73f0,0x7bf0,0x73d0,0x73af,0x73d0,0x73d0,0x6baf,0x638f,0x6bcf,0x6bcf,0x6b8e,0x636e,0x6bcf,0x636e,0x6baf,0x638e,0x6b8f,0x73d0,0x6b8f,0x7bf0,0x7c10,0x73f0,0x7bf0,0x73f0,0x636e,0x634e,0x634e,0x5b0d,0x634d,0x6b8e,0x5b4d,0x634d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x52cb, +0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x6b2c,0x630c,0x6b4c,0x6b4d,0x632c,0x6b6d,0x6b8d,0x634d,0x632c,0x632d,0x630c,0x5b0c,0x630c,0x5b2c,0x530c,0x5aec,0x5aeb,0x5aeb,0x5aec,0x62ec,0x630c,0x6b6e,0x6b4d,0x6b4d,0x83ef,0x94b2,0x9cd2,0xa513,0x9cf3,0x9cf3,0x94b2,0x9cf3,0xa534,0x9d34,0x94d2,0x94b2,0x94b2,0x9d13,0xa555,0x94f3,0x7c30,0x8c71,0x9492,0xa534,0xa555,0x94b2,0x8431,0x8431,0x8c72,0x94d3,0x9d14,0xa534,0xad75,0x9cf3,0x8c91,0x8451,0x7c31,0x7c11,0x7c31,0x73f0,0x8451,0x94f3,0x94f3,0x8cb2,0x8cb3,0x94d3,0x9d14,0xad75,0xb5d7,0x9d55,0x8c92,0x8471,0x7c31,0x7410,0x8471,0x8c72,0x8c72,0x8c92,0x8c93,0x8452,0x9d35,0xa556,0x94d4,0x94d4,0x94b3,0x8c93,0x8c93,0x8493,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0xb5b8,0xb5b7,0x9d15,0x9d15,0x9d56,0xa576,0xa577,0xa576,0xa556,0xa577,0xa577,0xbdf9,0xbe19,0xb5d8,0xb5f8,0xb619,0x52ad,0x9493,0x632c,0x528a,0x52aa,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39a7,0x3186,0x3186,0x3186,0x3986,0x3986,0x39a6,0x3986,0x3986,0x39a6,0x41e7,0x41e7,0x41e7,0x41a7,0x3986,0x39a6,0x41a7,0x41a7,0x41a6,0x39a6,0x39a6,0x41c7,0x41a7,0x41c7,0x39c7,0x39a7,0x4a08,0x526a,0x4a29,0x4a29,0x41e8,0x41e7,0x41e7,0x41e8,0x41e8,0x41e8,0x41e8,0x4a08,0x4a29,0x4a28,0x4a49,0x5269,0x4a48,0x4a49,0x4a28,0x4208,0x4a49,0x5aaa,0x4a28,0x4a28,0x5249,0x5269,0x62ec,0x6b2d,0x6b0c,0x736d,0x6b2d,0x6b0d,0x7bcf,0x8c51,0x7baf,0x9d57,0x9d57,0x9d56,0x9d56,0xa577,0xa576,0x9515,0x8cf4,0x9d35,0xa556,0xadd8,0xbe59,0xadb7,0xbe39,0xadd7,0xa556,0xadb7,0x9d36,0x8cb4,0x9d15,0x94f5,0x8cb4,0x8473,0x8cd4,0x8cb4,0x8493,0x8cb4,0x8cd4,0x8cf4,0x94f5,0x84b4,0x8493,0x8473,0x8473,0x8cd4,0x8473,0x9515,0x8cd4,0x8472,0x8493,0x8472,0x8493,0x8452,0x8452,0x7c52,0x7c51,0x94f4,0x9d35,0x94f4,0x8cb3,0x7c31,0x7c52,0x7410,0x73f0,0x7c11,0x7c10,0x7c31,0x7c31,0x7410,0x7c11,0x7411,0x73f0,0x73f0,0x7c31,0x8472,0x7c51,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x6bcf,0x6baf,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x6baf,0x6baf,0x6bcf,0x6bcf,0x6bd0,0x638f,0x6baf,0x638e,0x73ef,0x7bd0,0x634e,0x634e,0x634d,0x638e,0x73cf,0x73cf,0x73af,0x6b8e,0x7bf0,0x73f0,0x6baf,0x636e,0x634e,0x636e,0x634e,0x73af,0x6b8e,0x632d,0x5b2d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0d,0x52ec, +0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x634d,0x6b4d,0x630c,0x5aeb,0x632c,0x632c,0x6b6d,0x73ae,0x634c,0x636d,0x636d,0x5b2c,0x632c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aec,0x5b0c,0x632c,0x6b6e,0x6b4d,0x7bae,0x8c51,0x9cb2,0x9492,0x8c51,0x9492,0x9cd3,0xa4d3,0x9cb2,0x8c30,0xa514,0xad55,0x9492,0xa514,0x94b3,0x94d2,0xb5d6,0x9d13,0x8c50,0xa513,0x94b2,0x9cb2,0xb5b6,0x9cf3,0x8451,0x9472,0x9cf3,0xa534,0x94b2,0xa554,0xbdf7,0x9d13,0x94d3,0xa555,0xad76,0x94f4,0x8c93,0x9492,0xad55,0xbdf7,0xb5d7,0x94b3,0xa555,0xbdb7,0xa513,0xad55,0xad96,0xa535,0xad96,0x94d3,0x8cb2,0xad95,0xad75,0xa554,0xbe38,0xb5f7,0xa555,0xad96,0xb5d7,0xb5d7,0xbdf8,0xb5b6,0xb5b7,0xbdf7,0xb5d7,0xb5f7,0xad76,0xb5f8,0xadd7,0x94f4,0x94d4,0x9d35,0xb5f8,0xa576,0x9d15,0x9d56,0xa577,0xadb8,0xad97,0xa597,0xadb7,0xadb8,0xb5f8,0xadd8,0xad97,0xadb8,0xb639,0x4a6b,0x4229,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2965,0x3165,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2925,0x2945,0x2945,0x2925,0x2925,0x2945,0x2965,0x3185,0x2965,0x2945,0x2965,0x2965,0x2945,0x2924,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x39a6,0x39a7,0x3186,0x3166,0x3166,0x3186,0x3166,0x3165,0x2945,0x3165,0x39a6,0x3166,0x3186,0x3186,0x3166,0x31a6,0x4208,0x39c7,0x39e7,0x39a6,0x3186,0x39a6,0x39a6,0x3186,0x39a6,0x39a6,0x39c7,0x41e8,0x41e8,0x4228,0x4228,0x4208,0x4228,0x41e7,0x39a7,0x4208,0x526a,0x41e8,0x4a08,0x4a29,0x4a49,0x528a,0x5acb,0x62eb,0x62eb,0x5acb,0x528a,0x630c,0x736e,0x6b6e,0x9d76,0xa597,0xa576,0x9d56,0xa576,0xadb7,0xa597,0x9535,0x9515,0x9515,0xad97,0xb5d8,0xa576,0xb5f8,0xb5d8,0xad97,0xad97,0x9d56,0x8cf5,0x8cd4,0x9d35,0x94f5,0x8cb4,0x8cb4,0x8493,0x8493,0x8493,0x8493,0x9515,0x9515,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8493,0x8cd4,0x9515,0x8cd4,0x8cd4,0x8cd4,0x8c93,0x8cb3,0x8452,0x7c31,0x7c52,0x7c31,0x8493,0x8cb3,0x9514,0x8cd3,0x8cb3,0x8493,0x7c51,0x7c31,0x8452,0x8431,0x7c31,0x7c11,0x73f0,0x7bf1,0x73f0,0x7c11,0x7c31,0x7c11,0x7c52,0x7c11,0x73f0,0x73f0,0x73d0,0x73d0,0x6bd0,0x73f0,0x73f0,0x6bd0,0x6baf,0x6baf,0x73d0,0x73d0,0x73d0,0x73d0,0x6bcf,0x73f0,0x73f0,0x6baf,0x6baf,0x6bce,0x8471,0x73ef,0x6b8f,0x636e,0x6baf,0x6b8e,0x638e,0x634d,0x8c71,0x8431,0x73af,0x6b8e,0x6b8e,0x636d,0x6b8e,0x636d,0x636d,0x73af,0x6b8e,0x632d,0x5b0d,0x5b0c,0x5b4d,0x638e,0x5b4d,0x52ec,0x530c, +0x5aeb,0x5aeb,0x5aeb,0x62eb,0x632c,0x632c,0x630c,0x62ec,0x62ec,0x632d,0x6b4e,0x630c,0x632c,0x6b6d,0x634d,0x5aeb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x630c,0x5b0d,0x5b0d,0x6b6e,0x6b6e,0x6b8f,0x8432,0x9cf3,0xa514,0x8c51,0x9cd2,0x9491,0xb595,0xa533,0x842f,0x9cb2,0xacf3,0x9cd3,0xc638,0x9cf3,0x8410,0xb575,0xad14,0x9cd3,0xc679,0x94f4,0x8410,0xad76,0xbe18,0x8cb2,0x8c92,0xb5d7,0xbe17,0x94b2,0x8c71,0xad54,0x94b2,0xa534,0x9492,0xb596,0xad75,0x94d3,0xbdd6,0xa4f3,0xa4f3,0xce59,0x9492,0xb5b7,0xc639,0xa555,0xad54,0xad55,0x9d14,0xc639,0xadb6,0xa535,0xbe18,0xb5b7,0xbdf8,0xb596,0xad76,0xbdf8,0xb596,0xbdf8,0xce79,0xce59,0xbdd7,0xce59,0xc659,0xbe18,0xce59,0xbdf8,0xdefb,0xceba,0xadb7,0xa596,0xd6da,0xdf1c,0xb5f8,0x9d36,0xa577,0xa597,0xadb8,0xad97,0xb619,0xadf8,0xb5f9,0xb5f8,0xadb7,0xa597,0xa5b7,0xb619,0x52aa,0x18c3,0x18a3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18a3,0x18a3,0x18c3,0x2104,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x2104,0x20e3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2925,0x2124,0x2104,0x2924,0x2945,0x2925,0x2945,0x2965,0x3166,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3186,0x39a6,0x4229,0xa597,0xa597,0xa556,0xa556,0xa556,0xad96,0xadd8,0xadd8,0x9d76,0x9d76,0xa576,0xa556,0xa576,0xbe19,0xadb7,0xad97,0xa576,0x9d35,0x8cf4,0x8cd4,0x9d35,0x9515,0x94f4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8493,0x8cd4,0x8cf4,0x8cd4,0x8493,0x94f4,0x94f4,0x9514,0x8cf4,0x9515,0x94d4,0x8c93,0x8c93,0x8493,0x8452,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x94d4,0x8c93,0x7411,0x7c11,0x7c31,0x7410,0x7c10,0x7411,0x73f1,0x73f1,0x7c11,0x7c51,0x7c51,0x7c11,0x7c32,0x73f1,0x73f0,0x7bd0,0x7bf0,0x7c11,0x7410,0x6bcf,0x7c11,0x7c31,0x73f0,0x7c11,0x7c11,0x73b0,0x73d0,0x73d0,0x73f0,0x7410,0x6b8f,0x73cf,0x73ce,0x8472,0x6baf,0x73ef,0x73d0,0x636e,0x73f0,0x73f0,0x73ef,0x6b8e,0x8430,0x7bf0,0x738f,0x6b8e,0x638e,0x6b8e,0x6bae,0x7c30,0x8c92,0x632d,0x73af,0x73af,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b0c,0x52ec, +0x5acb,0x630c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x6b4d,0x5b0c,0x632c,0x632d,0x632d,0x5b0c,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x5b0c,0x630c,0x6b4d,0x6b4d,0x6b4e,0x7bb0,0x9452,0x9c92,0x9471,0xbdb6,0x8c70,0x9491,0x9cb2,0x8c30,0xad55,0x9472,0xb596,0xc638,0x8c91,0x840f,0xad34,0xa4f3,0xad96,0xc659,0x8451,0x8c11,0xa514,0xce9a,0x9cf3,0x9493,0x9cd3,0xa4f4,0x9cd3,0xad75,0xb596,0x94b2,0xb5b6,0x9472,0xad35,0x9cd3,0xbdf7,0xc6ba,0x9514,0x9452,0xc638,0xad96,0x9492,0xad35,0xb5d7,0xbe18,0xb5d7,0x9d14,0xa535,0xa514,0xbdd7,0xc659,0x9d14,0xc638,0xbdf8,0xb5b7,0xc639,0xb5b7,0xad56,0xdf1c,0xc639,0xa535,0xce3a,0xc639,0xbdf8,0xbdf8,0xbdf8,0xc659,0xdefb,0xc659,0xb5d7,0xce79,0xdefc,0xc67a,0x9d56,0x9d77,0xa577,0xa577,0xad97,0xadb8,0xb619,0xb619,0xb5f9,0xadb8,0xadb7,0xadb7,0xbe5a,0x5aeb,0x20e3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18a3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a2,0x18a2,0x18a3,0x18c3,0x10a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x20e4,0x18e3,0x18c3,0x18e3,0x3186,0xadd8,0xa597,0x9d56,0xa576,0xa556,0xa576,0xa5b7,0xa597,0xadb7,0xa596,0xa576,0x9d35,0x9d56,0xbdf9,0xad97,0x9d15,0x94f4,0x9d36,0x94d4,0x94f4,0x9d35,0x9514,0x94f4,0x8cd4,0x8cb3,0x8cd4,0x9d36,0x8cd4,0x8473,0x8493,0x8493,0x8cd4,0x94f4,0x94f4,0x94d3,0x9d14,0x9535,0x9d55,0x8cb3,0x9d14,0x94f4,0x8452,0x8cb4,0x8cd4,0x8473,0x7c52,0x8493,0x7c52,0x8cd4,0x8493,0x8cb3,0x9514,0x8cd3,0x8cd3,0x7c51,0x7c10,0x7c31,0x7c11,0x7411,0x7411,0x7c31,0x7c51,0x8452,0x7c31,0x7c31,0x7431,0x8452,0x7c11,0x7bf0,0x7bf0,0x7c10,0x6baf,0x6baf,0x6bd0,0x7c31,0x73d0,0x73af,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x6baf,0x6bae,0x6b8e,0x73af,0x6b8f,0x73af,0x7c11,0x73d0,0x6b6e,0x73cf,0x7c30,0x8c92,0x73cf,0x6b8e,0x73af,0x6baf,0x6bae,0x8451,0x6baf,0x73cf,0x8c72,0x73cf,0x632d,0x634d,0x636e,0x5b2d,0x5b2d,0x5b0c,0x5b2c,0x634d,0x5b0c, +0x5aeb,0x5b0b,0x630c,0x630c,0x632c,0x634d,0x630c,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6d,0x630c,0x630c,0x634d,0x632d,0x630c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5acb,0x5aec,0x5b0c,0x634d,0x6b6e,0x6b6e,0x6b6e,0x7bd0,0x8c52,0x8c51,0xb596,0xb5b6,0x840f,0x9471,0x9cb2,0x83ef,0xad34,0x8c51,0xbdd6,0xc638,0x8c71,0x840f,0xa514,0x9c92,0xb5b7,0xc679,0x8c92,0x8c51,0x9cf4,0xc679,0x8cb2,0x9492,0xa514,0xad55,0xad96,0xad96,0xa514,0x94b2,0x9cd3,0x9472,0xc5f8,0x9492,0xce5a,0xbe59,0x8493,0x8c32,0xbdb7,0xc659,0xa535,0x9cf4,0x9cf3,0x9d14,0xbe59,0xad96,0x94d3,0xa515,0xd69a,0xbdf8,0xa535,0xa534,0xad96,0xbdf7,0xce7a,0xb5d7,0xa534,0xe77d,0xc659,0x9d15,0xc639,0xc638,0xc618,0xc639,0xbdf8,0xbdd7,0xce7a,0xce39,0xc5f7,0xbdd7,0xdedb,0xc67a,0x9d76,0xa577,0x9d56,0xa577,0xb5f8,0xb619,0xb639,0xadf9,0xa5b8,0xa5b8,0xadb8,0xadb8,0xb619,0x5aab,0x20e3,0x2124,0x31a7,0x2944,0x18c2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18a2,0x10a2,0x10a2,0x18c3,0x3186,0xa597,0xadb7,0xa577,0xadb7,0xa5b7,0xa576,0xadb7,0xadb7,0xa5b7,0xadd8,0xa576,0x94f5,0xa556,0xb5f8,0x94f5,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9535,0x8cd4,0x9514,0x94f4,0x8493,0x8cd4,0x9535,0x84b4,0x84b4,0x8cb3,0x8472,0x8cb3,0x9d35,0x9d35,0x94f4,0x9514,0x9534,0x9515,0x8cb3,0x9d14,0x9d56,0x8452,0x8472,0x8493,0x7c72,0x7c72,0x7c72,0x7c51,0x8cb3,0x8cf4,0x8cd3,0x9d35,0x8cd4,0x8cb3,0x8493,0x7c11,0x7c32,0x73f0,0x73f0,0x7410,0x7410,0x7c31,0x8472,0x7c31,0x7c31,0x7411,0x73f0,0x6b8f,0x6baf,0x7c10,0x73cf,0x73cf,0x6baf,0x6bd0,0x7c31,0x7c11,0x73d0,0x73f0,0x6bd0,0x73f0,0x6baf,0x6baf,0x6b8e,0x8471,0x7c10,0x634e,0x6b8f,0x6b8f,0x73af,0x738f,0x8431,0x8c92,0x73cf,0x73cf,0x6bcf,0x6baf,0x6b8e,0x6b8e,0x73af,0x73ef,0x7c10,0x73af,0x6b4d,0x6b6d,0x636d,0x632d,0x634d,0x634d,0x5b0c,0x5b0c,0x5b2d,0x5b0c,0x52ec, +0x632c,0x630c,0x5acb,0x5aeb,0x5b0c,0x630c,0x632c,0x734d,0x738e,0x636d,0x6b6d,0x6b6e,0x5aeb,0x5aeb,0x630c,0x632c,0x634d,0x630c,0x5b0b,0x5aeb,0x52cb,0x5aeb,0x5b0c,0x5aeb,0x5b0c,0x632c,0x6b8e,0x6b8e,0x6b8e,0x7bcf,0x8c31,0x9492,0xbdd7,0x9c92,0x8c30,0xbdd6,0xad75,0x8c51,0x9471,0x9cb2,0xad54,0xc638,0x9cf3,0x8c50,0xad54,0x9cd3,0xa535,0xce7a,0x9513,0x8451,0xa514,0xb5f8,0x8451,0x9492,0xbdd7,0xadb6,0x8492,0x94d3,0x9cf3,0xa534,0xbdd7,0x8c51,0xb596,0x9cd3,0xbdf7,0xc679,0x9d14,0x8c51,0xb5b6,0xad35,0xbe18,0xbe18,0xa555,0x8c51,0xbe38,0xb5f8,0x9d14,0xb5b7,0xce9a,0x9d14,0xbe17,0xbe18,0x9cf4,0x94d3,0xd6db,0xbe18,0x9cf4,0xdf1c,0xbdf8,0x9cf5,0xc67a,0xbe38,0xbdf7,0xbe18,0xb5b7,0xc618,0xc5f8,0xc639,0xd69a,0xbdd8,0xd6bb,0xbe5a,0xa5b7,0xa577,0xa557,0xa597,0xb5f8,0xadf8,0xb5f9,0xb5f8,0xadd8,0xadd9,0xadd8,0xadb8,0xadb8,0x526a,0x20e3,0x2945,0x4229,0x4a6a,0x39e7,0x2124,0x10a2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x1082,0x18c3,0x2124,0x3165,0x3186,0x3a08,0xad98,0xadb8,0xa556,0xa597,0xadb8,0xa597,0xadd8,0xb5f9,0xa597,0xa5b7,0xa576,0x94f4,0x9d36,0xadd7,0x94f4,0x8cd4,0x9515,0x94f4,0x8cf4,0x94f4,0x9515,0x94d4,0x94d4,0x94f4,0x8cf4,0x94f4,0x9d35,0x8cb3,0x8493,0x8493,0x8c93,0x8c93,0x8cb3,0x9514,0x8cd3,0x8cf3,0x9534,0x8cd3,0x8cd4,0x8cb3,0x9d15,0x8cb3,0x7c31,0x8493,0x8473,0x8493,0x8472,0x8472,0x8cb3,0x8cb3,0x94d3,0x94f4,0x8c93,0x7c31,0x7c52,0x7c51,0x7c31,0x73f0,0x73f0,0x7c31,0x7431,0x8472,0x7c52,0x6baf,0x7411,0x7411,0x73d0,0x6baf,0x7c10,0x8451,0x73cf,0x73d0,0x6bd0,0x6bf0,0x7411,0x7c31,0x7c11,0x73f0,0x6bf0,0x6bef,0x6bcf,0x6baf,0x6b6e,0x8c92,0x7c10,0x6b6e,0x73d0,0x73cf,0x6b8e,0x636e,0x7c10,0x9cf4,0x73f0,0x73cf,0x6b8e,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b6d,0x73af,0x7bf0,0x6b6e,0x632d,0x636d,0x636d,0x632d,0x5b2c,0x632d,0x5b0c,0x5aec,0x5aec,0x5aec, +0x632c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x6b4d,0x632c,0x736e,0x73af,0x630c,0x62eb,0x632c,0x738e,0x738e,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x630c,0x634c,0x6b6d,0x738e,0x7bcf,0x7bcf,0x8410,0x8431,0xa535,0xad96,0x8c71,0x8c71,0xa513,0x9cf2,0x8c50,0xad75,0xa534,0x9471,0xb575,0x9d13,0x94b2,0xad95,0x8c92,0x9493,0xb576,0x9d34,0x94d3,0xb5f8,0x9d56,0x8cb3,0x9492,0xb5d7,0x9d15,0x73f1,0x94b3,0x94b3,0xad96,0xb5b7,0x8452,0xad76,0xad55,0x9492,0xb596,0xa534,0xa534,0xbe18,0x94b3,0xa555,0xad75,0x9cf3,0xa535,0xb5d7,0x9d35,0x94d4,0xb5b7,0xbe39,0x8cd4,0xadb7,0xbdf7,0xb597,0xb597,0xce9a,0xadb7,0xa535,0xd6dc,0xb5d8,0xa556,0xce9b,0xc639,0xbe18,0xbdf7,0xbdf8,0xdedb,0xbdd8,0xce9a,0xd6db,0xbdf8,0xd6fc,0xbe59,0xa596,0xa556,0xa557,0xa597,0xa597,0xb5f8,0xb5d8,0xa577,0xb5d8,0xb5f9,0xb5f9,0xadd8,0xb5f9,0x4229,0x2104,0x2945,0x422a,0x632d,0x634d,0x5aeb,0x41e7,0x20e3,0x18e3,0x18c3,0x18a3,0x10a2,0x18a2,0x10c2,0x18a3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1061,0x1081,0x1081,0x0861,0x1082,0x0841,0x0020,0x0020,0x0841,0x0020,0x0841,0x0841,0x0841,0x0841,0x0020,0x0841,0x0861,0x1081,0x1082,0x1082,0x1061,0x0861,0x1081,0x0861,0x0861,0x1081,0x1081,0x1081,0x0881,0x1081,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x1082,0x1062,0x1061,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2964,0x4a27,0x5aa9,0x5289,0x4229,0x4a6a,0xad98,0xa597,0xadb7,0x9d56,0xa577,0xa597,0xad97,0xadb8,0xad97,0x9d56,0x9d56,0xa576,0x9d55,0xa576,0x94f4,0x94f4,0x94f4,0x94f4,0x9515,0x94f4,0x9d35,0x9d56,0x8cd4,0x8cb3,0x8cb3,0x8cb3,0x9d15,0x8cb3,0x8cd4,0x8cb3,0x8cb3,0x94f4,0x8cb3,0x8cd3,0x84b3,0x8cb3,0x8cd3,0x94f4,0x94f4,0x94d3,0x8cb3,0x8493,0x7c52,0x8473,0x84b3,0x8cb3,0x7c52,0x8493,0x7c52,0x8cb3,0x8cb3,0x8c93,0x94d4,0x7c31,0x7c52,0x7c31,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x94f4,0x7c31,0x73f0,0x73d0,0x7410,0x73f0,0x73cf,0x7410,0x7c10,0x73d0,0x73d0,0x73f0,0x73f0,0x73f0,0x7bf0,0x73d0,0x73f0,0x73f0,0x6bcf,0x73f0,0x6baf,0x73cf,0x6baf,0x638e,0x6baf,0x636e,0x73d0,0x6b8e,0x6baf,0x6baf,0x6b6f,0x73d0,0x73cf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73cf,0x6b6e,0x634d,0x636e,0x6b8e,0x634d,0x632d,0x5b2d,0x52ec,0x52ec,0x52ec, +0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x6b4d,0x6b6d,0x8410,0x73ae,0x630c,0x6b2d,0x6b4d,0x6b6e,0x73af,0x736e,0x6b6e,0x6b4d,0x6b6d,0x630c,0x5b0c,0x632c,0x6b6d,0x6b6e,0x738e,0x73af,0x7c10,0x8410,0x8c51,0xa535,0x94b3,0x8451,0x8c71,0x8c71,0x9cf2,0xa554,0x9cf3,0x8471,0x8431,0x8c71,0x9d14,0xa535,0x8c72,0x73d0,0x8411,0x8431,0x9d35,0xa576,0x94f4,0x7c52,0x7bf0,0x8431,0x9d14,0x8452,0x73d0,0x7c11,0x8431,0x94b3,0x8c92,0x8452,0x8c93,0x8c72,0x7bf0,0x8432,0x9cf4,0x9d35,0x8c93,0x8452,0x8452,0x8c93,0xa536,0x9d36,0x8c93,0x7c11,0x8431,0xa535,0x94d4,0x8452,0x8c73,0x9493,0xa556,0xad96,0x9d35,0x8cd4,0x94d4,0xad97,0x9cf5,0x9cf4,0xad76,0xb5b7,0xb5b7,0xb5b7,0xad76,0xbe19,0xa556,0xad97,0xb5f8,0x9d35,0xb619,0xad97,0xa556,0xa556,0x9d56,0xadb7,0xadb7,0xb5f9,0xadd8,0xa597,0xadb7,0xb619,0xb5f8,0xb619,0xbe3a,0x4208,0x2104,0x2125,0x422a,0x6b6f,0x73d0,0x8452,0x7bae,0x3185,0x3165,0x2124,0x2104,0x2104,0x2104,0x2124,0x2925,0x2104,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18e3,0x18e3,0x20e3,0x20e4,0x20e3,0x2104,0x2104,0x2124,0x2944,0x2924,0x2945,0x2965,0x3165,0x3165,0x3185,0x2945,0x2965,0x5268,0x734c,0x8c4f,0x630c,0x4a4a,0x4a8b,0xa577,0xadd8,0xadb7,0xa597,0xa597,0xadb8,0xadb8,0xa557,0xa556,0x9d56,0x9d56,0xadb7,0xa576,0x9d15,0x94d4,0x94d4,0x94f4,0x9d15,0x9d15,0x8cd4,0x9d56,0x9d56,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x94d4,0x8cb3,0x84b3,0x94f4,0x8cd4,0x94f4,0x94f4,0x8cb3,0x8c93,0x8c73,0x9d15,0x94d4,0x8c93,0x8cb3,0x8472,0x8473,0x8493,0x8cd3,0x8cd3,0x8493,0x7c11,0x8452,0x7c52,0x8c93,0x9d15,0x8c93,0x7c52,0x7c31,0x7c52,0x7411,0x73d0,0x7c11,0x73f0,0x7c31,0x7c31,0x94d4,0x7c31,0x73b0,0x73b0,0x73d0,0x73f0,0x73d0,0x73d0,0x7c10,0x6baf,0x73d0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73af,0x73af,0x73d0,0x73d0,0x6baf,0x6baf,0x6bcf,0x7411,0x6b8f,0x636e,0x634d,0x7c31,0x6b8e,0x6baf,0x6b8f,0x6b6e,0x6baf,0x73cf,0x6baf,0x6bcf,0x6baf,0x6bae,0x73af,0x73af,0x73cf,0x73af,0x6bae,0x638e,0x6b8e,0x636e,0x636e,0x634e,0x634e,0x5b2d,0x52ec,0x52cb,0x52cb, +0x5aeb,0x630c,0x630c,0x630c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x73cf,0x7c30,0x634c,0x5aeb,0x630c,0x632d,0x630d,0x6b4e,0x6b8e,0x6b6e,0x73ae,0x73ae,0x6b6d,0x636d,0x636d,0x634d,0x632d,0x6b6e,0x73ae,0x73cf,0x73cf,0x7c10,0x8451,0x7bf0,0x73cf,0x7bd0,0x8431,0x8451,0x73f0,0x634e,0x6b6e,0x6b6f,0x738f,0x7bd0,0x738f,0x6b6e,0x738f,0x738f,0x73d0,0x7c11,0x73f1,0x6bb0,0x73f0,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x7bf0,0x7bf0,0x7bd0,0x7c11,0x7c11,0x73f0,0x73f0,0x7c11,0x7c32,0x7c11,0x7c11,0x73f1,0x7c11,0x8452,0x7c11,0x7411,0x7c52,0x7c11,0x8451,0x8472,0x8472,0x8472,0x8472,0x8472,0x8473,0x8c73,0x8cb3,0x94f4,0x8cf4,0x8493,0x8493,0x8cb4,0x8c93,0x8452,0x8cb4,0x94f5,0x8c93,0x8cb4,0x94f5,0x8cb4,0x8cb4,0x94d4,0x9515,0x9515,0x94f5,0x9d36,0xa597,0xadb7,0xa597,0xadd8,0xadb8,0xa577,0xadb8,0xadd8,0xadf8,0xb619,0xbe39,0x4208,0x2124,0x2945,0x424a,0x6b90,0x73f1,0x9cf6,0x9cd2,0x39a6,0x2945,0x2104,0x20e4,0x20e3,0x18e3,0x2104,0x2124,0x20e4,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x2104,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x20e3,0x20e4,0x2104,0x20e3,0x18e3,0x18c3,0x18c3,0x1082,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0861,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2945,0x3165,0x3165,0x2965,0x3185,0x3185,0x3186,0x3186,0x3165,0x31a6,0x4a28,0x83ef,0xb595,0x6b2d,0x4a6a,0x52ab,0xadd8,0xb619,0xadd8,0xadd8,0xa597,0x9d77,0xa556,0xa597,0xa576,0x9d35,0x9d15,0x9d15,0x9d36,0x9d15,0x8cd4,0x8cf4,0x94d4,0x94f4,0x9d15,0x94d4,0x8cb4,0x9515,0x94d4,0x8cb4,0x8c93,0x8cd4,0x8cb4,0x84b3,0x8493,0x8493,0x94d4,0x94f4,0x94f4,0x94f4,0x8c93,0x8c93,0x8493,0x7c52,0x8452,0x8472,0x8473,0x84b3,0x7c52,0x94f4,0x8472,0x8452,0x7c11,0x8473,0x8452,0x7c31,0x9515,0x8cd4,0x7411,0x73f0,0x7431,0x7c52,0x7c11,0x73f1,0x7411,0x7c31,0x7411,0x8492,0x7c11,0x8472,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x7c31,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x6baf,0x7c10,0x73d0,0x6baf,0x73d0,0x7c11,0x73f0,0x73d0,0x73f0,0x6b8f,0x634d,0x638e,0x9d34,0x7c30,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73cf,0x73f0,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x6baf,0x73cf,0x6bcf,0x638e,0x636e,0x6b8e,0x632d,0x630d,0x6b6e,0x5b0c,0x52eb,0x52eb,0x52eb, +0x5aeb,0x630c,0x630c,0x62ec,0x6b0d,0x6b4d,0x6b4e,0x6b4d,0x6b6d,0x7bef,0x6b8e,0x5b2c,0x5b0c,0x5aeb,0x5acb,0x5acc,0x630d,0x6b6d,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b8e,0x6b4d,0x6b6d,0x738e,0x73ae,0x738e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x6baf,0x6baf,0x73d0,0x6bcf,0x6b8e,0x6b6e,0x634d,0x634e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x73af,0x73af,0x738f,0x6baf,0x6bb0,0x73f0,0x7430,0x73f0,0x7bf0,0x8451,0x7c31,0x7c10,0x7bf0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c31,0x7c31,0x8452,0x7c51,0x7411,0x7c31,0x7c11,0x7c31,0x7c52,0x7c52,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x8472,0x8472,0x8c93,0x94d4,0x94d4,0x84b3,0x8472,0x8473,0x8493,0x8472,0x8473,0x8cb3,0x8cd4,0x84b3,0x8cd4,0x94f5,0x8cd4,0x8cb4,0x9515,0x9515,0x94d4,0x94f5,0xa556,0xad97,0x9d56,0xa597,0xa577,0x9d36,0xa556,0xadb7,0xadd8,0xb619,0xbe39,0xc69b,0x4208,0x2104,0x2946,0x4a6b,0x6b6f,0x7c11,0xad78,0xa534,0x3185,0x20e4,0x18c3,0x18c3,0x18a3,0x18a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2124,0x18c3,0x20e3,0x18e3,0x20e4,0x2924,0x39a6,0x9cd3,0xce39,0x632d,0x4a6b,0x52cc,0xadd8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0x9d56,0x9d56,0x9d15,0x9d36,0x9d36,0x9d15,0xa576,0x94f4,0x9535,0x9535,0x94f4,0x94f5,0x94f5,0x8c93,0x8493,0x8cb4,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x94f4,0x8493,0x8452,0x8473,0x8473,0x8493,0x8cb3,0x8cb3,0x8452,0x8492,0x8472,0x8c92,0x8cd3,0x8cb3,0x8493,0x7c32,0x8cb3,0xa556,0x8431,0x7c11,0x8c93,0x8472,0x7c11,0x7c32,0x8472,0x7c31,0x7c11,0x7c52,0x7c72,0x7c52,0x73f0,0x7411,0x73f0,0x7410,0x8472,0x7c52,0x8cd4,0x6bb0,0x73f0,0x6bcf,0x7410,0x7c31,0x7411,0x73f0,0x7410,0x73f0,0x73f0,0x73cf,0x73f0,0x7c51,0x73f0,0x6baf,0x73d0,0x7c31,0x73f0,0x6b8f,0x6b8f,0x6b8f,0x6bae,0x6bae,0x6baf,0x6b8e,0x73d0,0x6baf,0x6bcf,0x6b8f,0x73cf,0x73d0,0x73f0,0x636d,0x6b8e,0x6baf,0x6bcf,0x6bcf,0x73cf,0x73cf,0x6b8e,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x5b0c,0x52ec,0x52ec,0x52ec, +0x630c,0x5aeb,0x62ec,0x630c,0x6b4d,0x736e,0x6b4d,0x634d,0x7bef,0x6b8e,0x5b0c,0x632d,0x632d,0x5aec,0x5aeb,0x62ec,0x6b6e,0x6b4d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x6b8e,0x6b6d,0x6b6e,0x738e,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x6baf,0x6b8e,0x6bae,0x73cf,0x6baf,0x6b6e,0x6b6e,0x634e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x73af,0x73af,0x6b8f,0x73af,0x73af,0x73af,0x7bf0,0x8471,0x7c31,0x7c10,0x7c11,0x7c10,0x73f0,0x73f0,0x7bf0,0x8431,0x8472,0x7c31,0x7c31,0x8432,0x8452,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x7c31,0x7c52,0x7c52,0x7c31,0x7c31,0x8472,0x8493,0x8c93,0x8452,0x8452,0x8472,0x8472,0x8c93,0x94b4,0x94d4,0x8cd4,0x84b3,0x8472,0x7c72,0x8472,0x94d4,0x8cb3,0x8cd4,0x8cf4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x94f4,0x94d4,0x9d15,0x9d56,0xadb8,0xa597,0xa556,0x9d36,0xa557,0xadb8,0xadd8,0xb5f8,0xbe3a,0xce9b,0xbe3a,0x39e8,0x2104,0x2945,0x4a6b,0x634f,0x8433,0xbdfa,0xad54,0x3185,0x20e3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x3186,0xad75,0xce59,0x62ed,0x4a8b,0x5aec,0xadb8,0xadb8,0xb5f9,0xadd8,0xa597,0x9d56,0xa577,0x9d36,0x9d36,0xa556,0xa556,0x9d15,0x9515,0x9d35,0x9d35,0x9535,0x9d36,0x9d16,0x94d5,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8cb4,0x8493,0x8cb3,0x8cf4,0x94f4,0x94d4,0x8c93,0x73f1,0x7c32,0x8cb3,0x8493,0x8493,0x8493,0x8493,0x8472,0x8473,0x8472,0x8492,0x7c52,0x8472,0x8452,0x9d35,0x94f4,0x7c11,0x7c31,0x7c52,0x7c31,0x7c31,0x7c31,0x7c11,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x73f0,0x7c31,0x7c11,0x8c72,0x8c93,0x8452,0x6bb0,0x6bb0,0x6baf,0x73f0,0x7410,0x73f0,0x6baf,0x73f0,0x73cf,0x7c31,0x73f0,0x6baf,0x7411,0x7410,0x73cf,0x73f0,0x73f0,0x73af,0x6b8f,0x6b8f,0x6b8e,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x73f0,0x6bd0,0x73d0,0x6baf,0x6baf,0x73f0,0x73f0,0x6b8e,0x634d,0x73cf,0x6baf,0x6bcf,0x6baf,0x73f0,0x73af,0x6b4e,0x634d,0x636e,0x634d,0x634d,0x5b0d,0x5aec,0x52ec,0x52cb, +0x5b0c,0x630c,0x632c,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x7bef,0x7bcf,0x632d,0x630c,0x632d,0x632c,0x630c,0x632c,0x6b6d,0x7c10,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x738e,0x7bef,0x73cf,0x6bae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6b6d,0x6b8e,0x6b8f,0x6baf,0x6b8e,0x6b6e,0x636e,0x636e,0x636e,0x636e,0x6bae,0x73af,0x6b6e,0x6baf,0x73cf,0x73af,0x738e,0x7bcf,0x8411,0x7c10,0x7c11,0x7c11,0x7c11,0x7c31,0x7c10,0x7bf0,0x7c31,0x8432,0x7c11,0x8431,0x8432,0x8452,0x7c31,0x7c11,0x8452,0x8452,0x8452,0x8452,0x8473,0x8493,0x8493,0x8493,0x8452,0x8493,0x8cb3,0x8493,0x8472,0x8492,0x8c93,0x8cb3,0x8cb4,0x9cd4,0x9515,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x8cd4,0x94d4,0x94f4,0x8cd4,0x8cd4,0x9d35,0x9515,0x8cd4,0x9515,0x94f5,0x9d15,0xa576,0xadb7,0xad97,0xa556,0x9d36,0xad98,0xadd8,0xb5f8,0xb5f9,0xcebb,0xbe39,0xadb8,0x39c7,0x2124,0x2105,0x4a6b,0x6b70,0x8c94,0xd6bc,0xad34,0x2965,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x3186,0xb596,0xc5f8,0x5aac,0x52cc,0x5b2d,0xadb7,0xadd8,0xadd8,0xadb7,0xa576,0xa597,0xadd8,0xa576,0xa576,0xa576,0x9d35,0x9d15,0x94f4,0x9d35,0xa576,0xa556,0xa577,0xa557,0x94f5,0x94f4,0x94d4,0x94f5,0x8cb4,0x8473,0x8473,0x8473,0x8493,0x8cb4,0x94d4,0x8c93,0x7c11,0x7c52,0x8cd4,0x8cb3,0x7c52,0x8493,0x8cd4,0x8473,0x7bf1,0x8452,0x7c32,0x7c72,0x7c72,0x8472,0x7c52,0x8c93,0x7c31,0x7411,0x7411,0x7c31,0x7411,0x7411,0x7411,0x8472,0x7c31,0x73f0,0x73f0,0x6bd0,0x73f0,0x7c31,0x7410,0x8451,0x8cb3,0x73d0,0x73f0,0x73d0,0x6baf,0x73f0,0x7410,0x73d0,0x6baf,0x6bd0,0x6baf,0x7411,0x73f1,0x6baf,0x73d0,0x7411,0x6bd0,0x6bcf,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6b8e,0x73f0,0x6bf0,0x6bcf,0x6bcf,0x73f0,0x73d0,0x6baf,0x636e,0x6b8f,0x6baf,0x636e,0x5b0c,0x6bcf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x636e,0x634d,0x634d,0x5b0c,0x5b0c,0x52cb,0x52cc,0x52ab,0x5aec, +0x630c,0x632c,0x6b4d,0x6b4d,0x632c,0x6b8d,0x7c0f,0x7bef,0x6b4d,0x5b0c,0x632c,0x630c,0x632c,0x632d,0x632d,0x6b4e,0x8430,0x73ae,0x5aec,0x632c,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x7bf0,0x7bf0,0x73af,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x636d,0x6b6e,0x6b8f,0x73af,0x638e,0x636d,0x634d,0x6b6d,0x6b8e,0x6b6e,0x6bae,0x73cf,0x6baf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x8431,0x8451,0x7c31,0x7c51,0x7c51,0x7c10,0x8411,0x73b0,0x73d0,0x7c31,0x7c11,0x7c31,0x7c32,0x7c31,0x7c32,0x8493,0x8452,0x8472,0x8c73,0x8472,0x8c93,0x8c93,0x8cb3,0x8473,0x8cb3,0x8cb3,0x8cb3,0x8473,0x94d4,0x94f4,0x8cd3,0x94f4,0x94f4,0x94f4,0x8cb3,0x8493,0x8cd4,0x9535,0x9d76,0x9515,0x8cb4,0x94f5,0x94f4,0x94f4,0x9d76,0x9d15,0x8cd4,0x9d36,0x94f5,0x9d15,0xadb7,0xa576,0xadb7,0xad97,0xa597,0xa597,0xb5d8,0xadb7,0xc67a,0xbe5a,0xadd8,0xb5f9,0x39e8,0x2924,0x2104,0x528c,0x6b90,0x9d16,0xef7e,0xa534,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x3186,0xad55,0xbdb7,0x5acc,0x5b0d,0x632d,0xa597,0xa5b8,0xadb8,0xadd8,0xa5b7,0xadd8,0xa597,0x9d76,0xadb8,0x9d56,0x9d36,0xa576,0x9d35,0x9d55,0xa576,0xad97,0xb5d8,0xa5b7,0x9d56,0x8cf4,0x8cb4,0x8cb4,0x8cb4,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x8c93,0x8c93,0x8473,0x8cb4,0x8cd4,0x8493,0x7c52,0x7c52,0x8492,0x8cb3,0x8c92,0x8c92,0x7c72,0x7c52,0x7c52,0x7c31,0x7c11,0x7412,0x7411,0x7411,0x73f0,0x7411,0x73f1,0x6bd0,0x7411,0x7c11,0x73d0,0x73f0,0x7410,0x73f0,0x7410,0x7410,0x7410,0x7c31,0x7c51,0x6baf,0x7410,0x7410,0x73d0,0x73f0,0x73d0,0x73f0,0x73cf,0x73f0,0x7411,0x7c31,0x7c31,0x7411,0x7c11,0x7411,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x73d0,0x73f0,0x6bd0,0x73d0,0x73f1,0x7c11,0x73f0,0x6bcf,0x6baf,0x638f,0x6baf,0x6bcf,0x6baf,0x7c10,0x73cf,0x73ef,0x6baf,0x73cf,0x6baf,0x6b8f,0x6b8e,0x634e,0x632d,0x5b0c,0x5aec,0x5b0c,0x632d, +0x632c,0x632c,0x632c,0x630c,0x6b4d,0x73cf,0x73cf,0x6b6d,0x632c,0x5b0c,0x632c,0x5b0c,0x632c,0x630c,0x632d,0x6b4d,0x8c51,0x738e,0x630c,0x630c,0x630c,0x632d,0x632c,0x632c,0x6b4d,0x738e,0x73cf,0x73cf,0x73af,0x73af,0x736e,0x738f,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x632d,0x6b6e,0x6b6e,0x6b6e,0x73ce,0x73cf,0x6bcf,0x6bcf,0x6baf,0x6baf,0x73cf,0x73af,0x73d0,0x7c51,0x7c51,0x7410,0x7c31,0x7410,0x7c10,0x7bf0,0xa534,0xb5b6,0x8471,0x73f0,0x8c93,0x94f4,0x8472,0x7c72,0x8492,0x7c72,0x8493,0x8cd4,0x8493,0x8492,0x8cb3,0x8cb3,0x8c73,0x8cb3,0x94d4,0x8cb3,0x8c73,0x9cf5,0x9d15,0x8cb3,0x9514,0x9d15,0x9514,0xa576,0x9d55,0xa576,0xadb7,0x9d35,0x8c93,0x8cb3,0x94d4,0x94f4,0x8cf4,0x9515,0x8cd4,0x9d15,0x9515,0x8cd4,0x9d15,0xa5b7,0xa596,0xadd7,0xa597,0xadb7,0xadd8,0xadd8,0xbe5a,0xc67a,0xadd8,0xb5f9,0xb61a,0x39c8,0x2924,0x2104,0x52ac,0x73b1,0xad78,0xffdf,0xa513,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18e3,0x39a6,0xa514,0xb576,0x630d,0x634e,0x6b6e,0xadd8,0xb5f8,0xb619,0xadd8,0xb5f8,0xadd7,0xadd8,0xadd8,0xa5b7,0xadb7,0xa597,0xadb7,0xadd7,0xad97,0xb5d7,0xadb7,0xadb8,0xad97,0xadb7,0x9515,0x9d35,0x9515,0x9515,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x8493,0x8c93,0x94f4,0x9d15,0x94d4,0x8cb4,0x8cb4,0x94f5,0x94f5,0x9515,0x8cb4,0x8cd4,0x8473,0x8452,0x8c93,0x8452,0x7c32,0x8451,0x8451,0x7c31,0x7c31,0x8451,0x8452,0x8451,0x8451,0x8431,0x7c31,0x8451,0x8472,0x8451,0x7bf0,0x7c11,0x73f0,0x7c31,0x7c11,0x73f0,0x73d0,0x73d0,0x7bf0,0x8411,0x7bf0,0x73cf,0x73cf,0x73cf,0x7c11,0x7bf0,0x6baf,0x73d0,0x6b8f,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6f,0x6b8f,0x6b8e,0x6b8f,0x636e,0x634e,0x634e,0x634d,0x634d,0x634d,0x634d,0x5b2d,0x5b2d,0x5aed,0x5b0d,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x4a8a,0x4a8a,0x4a8a, +0x6b6e,0x6b6d,0x634d,0x6b2d,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x6b6d,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b4d,0x6b6e,0x8431,0x6b6e,0x5aec,0x630c,0x632c,0x634d,0x632c,0x632d,0x6b6e,0x6b6e,0x7bf0,0x73cf,0x6bae,0x73af,0x6b8e,0x6b8e,0x6b8e,0x636d,0x636e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x634d,0x6b6e,0x6b6e,0x73af,0x73cf,0x73ef,0x73cf,0x73cf,0x73cf,0x73cf,0x6b8e,0x73cf,0x7c11,0x7c31,0x7c31,0x7411,0x7c11,0x7c10,0x7c11,0x7bd0,0xad96,0xad75,0x8471,0x8cb3,0x8452,0x8452,0x7c31,0x7c52,0x8472,0x8473,0x8473,0x8493,0x8493,0x8452,0x8c93,0x8c73,0x8c72,0x8c93,0x8c73,0x8472,0x8452,0x8c73,0x8c73,0x8c93,0x94d4,0x94f4,0x9d35,0xa576,0x9d14,0x94d3,0x94f4,0x94d3,0x94f4,0x94f4,0x94f4,0x8cf4,0x8cd4,0x94f4,0x9d15,0x9cf5,0x94d4,0x94f5,0x9d15,0xa556,0x9d56,0xa576,0xad77,0xadb8,0xad97,0xb5b8,0xc63a,0xadb8,0xadb8,0xadd8,0xadb8,0x31a7,0x2124,0x18e4,0x52ac,0x7bf2,0xbdfa,0xffff,0x9cd2,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x2104,0x39e7,0x9492,0xa4d4,0x630d,0x6b8f,0x738f,0x8432,0x7bf1,0x8432,0x7bf1,0x7bf1,0x7bd1,0x73b0,0x73b0,0x6b6f,0x6b90,0x73b0,0x7390,0x73b0,0x738f,0x7370,0x7390,0x7370,0x634f,0x6b4e,0x6b6e,0x6b6e,0x634e,0x6b6f,0x634e,0x5b2e,0x5b2d,0x5b0d,0x632d,0x632d,0x5aed,0x5aed,0x5aec,0x5aed,0x52cc,0x52cc,0x52ac,0x5acd,0x5acd,0x4a8c,0x4aac,0x4a8b,0x4aac,0x52ac,0x52ac,0x4a8b,0x4a6b,0x424a,0x4a6a,0x424a,0x4229,0x4249,0x424a,0x4a6a,0x424a,0x424a,0x424a,0x4229,0x424a,0x4a2a,0x4a2a,0x4209,0x39c8,0x4229,0x4209,0x39c8,0x31a8,0x39c8,0x39c8,0x39c9,0x39c8,0x39c8,0x31a8,0x31a8,0x2967,0x39c8,0x39c8,0x31a7,0x39c8,0x3187,0x3187,0x3187,0x3187,0x3167,0x39a7,0x3166,0x31a7,0x2124,0x2986,0x2125,0x2945,0x2945,0x2925,0x2945,0x3187,0x2105,0x3167,0x2146,0x2125,0x2966,0x39c7,0x2966,0x18c3,0x3186,0x2946,0x31c7,0x2946,0x2125,0x2966,0x31a7,0x2945,0x31a6,0x39c7,0x3166, +0x4a6a,0x4a6a,0x4a4a,0x4a49,0x4a49,0x4249,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4249,0x528a,0x4a6a,0x4229,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x4229,0x4a4a,0x4a4a,0x4a4a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4229,0x3a09,0x424a,0x4a4a,0x4a4a,0x424a,0x424a,0x4a6b,0x4a6a,0x4249,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x52ab,0x52ab,0x4a8b,0x52cb,0x52cc,0x52ab,0x4a8b,0x4a8b,0x528b,0x52ab,0x52ab,0x52ac,0x526c,0x422a,0x528b,0x52ac,0x4a6b,0x4a8c,0x52ac,0x52ac,0x52ac,0x52ac,0x4a8b,0x52ac,0x4a8b,0x528b,0x4a8b,0x4a8b,0x4a8b,0x4aab,0x528b,0x4a8b,0x528c,0x528c,0x4a8b,0x52ac,0x52ac,0x52ac,0x52ac,0x528c,0x4a6b,0x528c,0x52ad,0x5acd,0x52cc,0x4a8c,0x52cd,0x52ac,0x4a6b,0x4a6b,0x526b,0x4a4b,0x424b,0x4a6c,0x526c,0x4a4b,0x4a6c,0x526c,0x528c,0x524c,0x4a2b,0x528c,0x526c,0x526c,0x4a4c,0x524c,0x4a0c,0x2945,0x2944,0x18c3,0x52ac,0x8412,0xce3b,0xffff,0x9490,0x2964,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x18a3,0x18e3,0x2104,0x39c7,0x8410,0x9431,0x5aec,0x738f,0x6b6e,0x2947,0x3187,0x39c8,0x3187,0x1927,0x2147,0x3188,0x3188,0x2926,0x2126,0x2967,0x2967,0x3168,0x2967,0x2946,0x3187,0x2966,0x2966,0x31a8,0x3a09,0x3187,0x2966,0x39e8,0x39e8,0x4a6a,0x4229,0x4249,0x3a08,0x31a6,0x39c7,0x39e8,0x3a08,0x2987,0x31a8,0x31a7,0x3a08,0x3a08,0x31c7,0x31e8,0x3208,0x3a28,0x4228,0x4208,0x4229,0x4229,0x4208,0x39c7,0x39e8,0x39c7,0x39e7,0x4228,0x39e7,0x3a07,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4208,0x4a69,0x4a8a,0x31c7,0x3a08,0x4229,0x4249,0x4208,0x4208,0x4208,0x4228,0x4228,0x4229,0x4228,0x4249,0x39c8,0x39e8,0x4229,0x39c7,0x4249,0x3a08,0x39e8,0x4228,0x4207,0x4208,0x4209,0x39e8,0x4228,0x3a07,0x4228,0x3a08,0x39e8,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x3a08,0x3a07,0x31c7,0x4228,0x4208,0x39e7,0x31c7,0x39e7,0x4208,0x3a08,0x31e7,0x31e7,0x31c7,0x4269,0x4269,0x4a49,0x39a7,0x39c7, +0x2165,0x2166,0x2146,0x2966,0x3187,0x3187,0x2966,0x3187,0x2966,0x2146,0x31a7,0x2986,0x2145,0x2986,0x39e8,0x31c7,0x39e8,0x2966,0x2986,0x2986,0x2986,0x2966,0x31c7,0x39c8,0x2986,0x3a08,0x2986,0x29a7,0x3a08,0x2987,0x39c8,0x31a7,0x31c8,0x3a08,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x31e8,0x31c7,0x31a7,0x31c8,0x31c8,0x3a08,0x31a7,0x2986,0x31a7,0x31c8,0x31e8,0x3a29,0x3a49,0x3a08,0x39e8,0x39c8,0x31c7,0x31a7,0x39c8,0x39e8,0x4209,0x4a4a,0x4229,0x39e8,0x31a7,0x31c8,0x4229,0x3a09,0x39c7,0x4229,0x4209,0x3a08,0x31e8,0x3a08,0x4209,0x4209,0x4229,0x4249,0x4a6a,0x4a6a,0x4229,0x4229,0x4a4a,0x4208,0x528a,0x4a49,0x4a49,0x4a29,0x4229,0x4a49,0x4229,0x4a49,0x528a,0x4249,0x3a09,0x4a6a,0x4a6a,0x4208,0x39c7,0x41e9,0x4a49,0x4249,0x39e8,0x39c8,0x4a29,0x4a6a,0x4a6a,0x4229,0x4229,0x4229,0x4208,0x4249,0x4a6a,0x4a4a,0x4a4a,0x526a,0x2125,0x2945,0x18c3,0x52ac,0x8412,0xce5b,0xffff,0x8c2e,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x31a6,0x7bcf,0x8c10,0x5aec,0x738f,0x6b6e,0x4a69,0x528a,0x4228,0x4228,0x4228,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4229,0x4249,0x4208,0x3a08,0x4207,0x4248,0x4248,0x4249,0x4229,0x4208,0x4249,0x4a6a,0x4208,0x4a6a,0x4249,0x3a08,0x4a49,0x3a08,0x39e8,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x4228,0x3a08,0x3a08,0x3a28,0x3a09,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4a49,0x3a08,0x39c7,0x4208,0x4269,0x4228,0x4208,0x4a49,0x3a08,0x39e7,0x39e7,0x39e7,0x4229,0x4208,0x39e7,0x3a07,0x4228,0x39e8,0x31a7,0x39e8,0x39c7,0x4228,0x4228,0x39e8,0x39c7,0x3a08,0x31c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x31c7,0x3a28,0x3a07,0x3a07,0x39e8,0x39e8,0x31c7,0x31c7,0x39c7,0x3186,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x31c6,0x4a69,0x39e7,0x3186, +0x29a6,0x29a6,0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x39e7,0x29a6,0x29a6,0x31c7,0x31c7,0x31a6,0x31a6,0x3186,0x39c7,0x39e8,0x39e8,0x4249,0x3a28,0x29a6,0x31c7,0x4229,0x3a28,0x39e7,0x3a07,0x4248,0x4248,0x4a69,0x3a08,0x4249,0x3a08,0x3a08,0x4228,0x39e8,0x39c7,0x31c7,0x39e7,0x3a07,0x4228,0x39e7,0x39e8,0x4229,0x4228,0x31c7,0x31c7,0x3a08,0x39e8,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x4249,0x3a08,0x31c7,0x39e7,0x4248,0x4248,0x4249,0x4228,0x3a28,0x39e8,0x3a08,0x3a07,0x4228,0x4a49,0x4a49,0x3a28,0x39e8,0x4229,0x4229,0x4249,0x52aa,0x4269,0x4249,0x4a8a,0x4249,0x4228,0x4229,0x3a08,0x4208,0x4a49,0x4a49,0x5acb,0x4249,0x3a08,0x4a69,0x4a69,0x3a08,0x4229,0x4229,0x3a28,0x3a28,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4229,0x528a,0x528a,0x52ab,0x4a6a,0x4a49,0x4a49,0x4228,0x528a,0x4a8a,0x4a6a,0x526a,0x4a69,0x2124,0x2945,0x18a3,0x52ac,0x8c33,0xde9c,0xffff,0x842e,0x2944,0x2124,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a2,0x18a3,0x18a3,0x18c3,0x18e3,0x2103,0x2124,0x3186,0x7bcf,0x83f0,0x5aec,0x738f,0x6b4d,0x4a49,0x3a08,0x3a08,0x4a69,0x4228,0x4249,0x4228,0x31c7,0x39e8,0x4229,0x3a29,0x3a08,0x39e7,0x3a07,0x3a28,0x4a69,0x4208,0x39e8,0x39e8,0x4209,0x39e8,0x4229,0x3a28,0x3a08,0x4229,0x39c7,0x4249,0x4228,0x39e7,0x4208,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31c8,0x31e8,0x3a09,0x3a09,0x39e9,0x31a7,0x39e8,0x3a28,0x3a08,0x3a07,0x3a08,0x4228,0x4229,0x3a08,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x4208,0x3a28,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x4229,0x39e8,0x3a08,0x4228,0x4249,0x39e8,0x39e7,0x39e8,0x3a08,0x4249,0x3a08,0x31a6,0x39e8,0x31a7,0x39c7,0x39c6,0x39c7,0x39e7,0x31c7,0x3a07,0x31c7,0x39e8,0x3a08,0x39e8,0x4228,0x39e7,0x39c7,0x39e8,0x31a6,0x31c7,0x39e7,0x31c7,0x31e7,0x31c7,0x4249,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39c7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x3186,0x39c7,0x39e7,0x39c7,0x39e7, +0x3186,0x31a6,0x31a6,0x2966,0x2986,0x2986,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x29a6,0x31c7,0x31a6,0x3186,0x4a49,0x4208,0x3a08,0x4228,0x3a28,0x3207,0x39e7,0x3a08,0x31a6,0x39e7,0x3a28,0x3a08,0x31c7,0x4249,0x4229,0x4269,0x4a8a,0x31c7,0x4228,0x3a08,0x31c6,0x31a6,0x4249,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39e7,0x31c7,0x3a08,0x4a69,0x3a08,0x3a07,0x3a08,0x31e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4228,0x4208,0x4249,0x4229,0x4249,0x4228,0x4228,0x4a69,0x3a08,0x3a28,0x3a28,0x4228,0x3a08,0x4209,0x4229,0x4a49,0x4229,0x4a69,0x4a69,0x4228,0x4229,0x4a69,0x4228,0x39e8,0x39e8,0x4269,0x4249,0x4249,0x4a8a,0x5289,0x4a69,0x4a8a,0x528a,0x4a6a,0x4a8a,0x4249,0x4aaa,0x4269,0x4a8a,0x4289,0x3a28,0x4249,0x52cb,0x52ab,0x52ab,0x4a8b,0x2104,0x2945,0x18a3,0x52cd,0x8c54,0xdedc,0xffff,0x840d,0x2944,0x2945,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a3,0x18c3,0x20e3,0x2103,0x2124,0x3186,0x7bcf,0x8c10,0x5aec,0x738f,0x6b4d,0x4229,0x4208,0x4a6a,0x4228,0x39e7,0x31c7,0x31e7,0x31e7,0x3a08,0x4249,0x4229,0x4228,0x3a28,0x3a08,0x4249,0x4a8a,0x39e8,0x3a08,0x4249,0x39e8,0x4208,0x31e7,0x39e7,0x4229,0x4a49,0x4208,0x3a08,0x4a8a,0x4229,0x39e8,0x4208,0x39e8,0x39e8,0x39e7,0x39c7,0x4249,0x31c7,0x39e8,0x4a49,0x3a08,0x3a08,0x31a7,0x3a08,0x4249,0x4228,0x3a08,0x31c7,0x4a69,0x3a08,0x31e7,0x31a6,0x4249,0x4249,0x4228,0x31e7,0x4a69,0x4248,0x3a08,0x4228,0x4a69,0x52aa,0x3a08,0x4228,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x31e7,0x3a08,0x3a08,0x39e7,0x39c7,0x31a7,0x4228,0x39e7,0x31a7,0x39e7,0x3a07,0x4228,0x4248,0x3a08,0x39e8,0x31c7,0x39c7,0x39e7,0x4228,0x31a7,0x39e7,0x39e7,0x31c7,0x4228,0x3a07,0x3a08,0x4249,0x31a7,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x31c7,0x4208, +0x2945,0x29a6,0x31c7,0x31c8,0x31c7,0x31c7,0x31c7,0x31a6,0x39e8,0x39c7,0x31c7,0x3a08,0x39e7,0x31a6,0x4208,0x4249,0x31e7,0x39e7,0x31c7,0x3a08,0x4229,0x4208,0x4229,0x31a7,0x39e7,0x4228,0x31a7,0x39c8,0x4209,0x4228,0x4a49,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x31c7,0x39e7,0x39e7,0x4249,0x4249,0x3a08,0x31e7,0x39e8,0x3a08,0x39e8,0x39e8,0x4a6a,0x4a69,0x4249,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e7,0x4208,0x4229,0x3a08,0x4228,0x4228,0x4229,0x4228,0x4208,0x3a28,0x4269,0x4249,0x4a8a,0x4249,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4248,0x4a69,0x52aa,0x4a69,0x4228,0x4208,0x4208,0x4249,0x4a6a,0x4249,0x3a08,0x4a8a,0x4208,0x4aaa,0x52aa,0x4228,0x4228,0x4a69,0x528a,0x4269,0x4a8a,0x52ab,0x4229,0x4249,0x528a,0x528a,0x4208,0x4a6a,0x426a,0x2104,0x2925,0x18a3,0x5aed,0x9494,0xdedc,0xffff,0x7bed,0x2124,0x2124,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x3165,0x8410,0x9451,0x632d,0x7bf0,0x6b4d,0x3a08,0x4a8a,0x4a69,0x3a07,0x31e7,0x3a08,0x3a08,0x4228,0x3a08,0x4208,0x39e8,0x4208,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x4a69,0x3a08,0x3a08,0x4249,0x39e7,0x39e8,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4229,0x39e7,0x39e8,0x39a7,0x31a6,0x31e7,0x3a28,0x3208,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x3a07,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4248,0x4a49,0x39e7,0x3a08,0x4208,0x39e7,0x4248,0x3a08,0x39e7,0x3a08,0x3a07,0x39e7,0x4228,0x31c7,0x3a07,0x4228,0x31a6,0x3a08,0x4228,0x4208,0x4208,0x39e8,0x4228,0x39e7,0x31c7,0x4229,0x3a08,0x39c7,0x39e7,0x4208,0x4208,0x3a28,0x3a08,0x39e8,0x4208,0x3a08,0x31c6,0x39e8,0x39c8,0x3a08,0x39c7,0x4208,0x4208,0x39e8,0x4209,0x31e7,0x3a07,0x4228,0x3a07,0x4208,0x4208,0x31a6,0x39e7,0x3186, +0x39e7,0x29a6,0x2166,0x31c7,0x31a6,0x31c6,0x31a7,0x31c7,0x31a7,0x31c8,0x31c7,0x29a6,0x29a6,0x39c7,0x4208,0x4228,0x29a6,0x31a7,0x31c7,0x31a7,0x41e8,0x4a29,0x31a7,0x3186,0x39e7,0x4228,0x39e7,0x39c7,0x39e8,0x4a29,0x4209,0x4209,0x4a6a,0x39e7,0x39e7,0x31c7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x4228,0x4228,0x31e8,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x3a28,0x3a08,0x39e7,0x4228,0x39e8,0x4229,0x4229,0x39e7,0x4229,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a49,0x3a28,0x3a07,0x39e7,0x4228,0x4229,0x3a28,0x39e7,0x3a28,0x4228,0x4208,0x39e7,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x4229,0x3a08,0x4a69,0x4229,0x4208,0x4228,0x4249,0x4249,0x39e8,0x4249,0x528a,0x4249,0x4249,0x4249,0x39e8,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4a49,0x4a6a,0x528a,0x528a,0x52aa,0x4a49,0x4a29,0x4229,0x4a6a,0x528a,0x4228,0x4a6a,0x4a49,0x2104,0x2945,0x18a3,0x630e,0x9cd5,0xdebc,0xffff,0x7bcc,0x2103,0x2104,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x18c3,0x20e3,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x2104,0x2104,0x3165,0x8c51,0x9451,0x738f,0x8c52,0x736e,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x3a28,0x3a28,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x3a08,0x39e8,0x3a08,0x39e8,0x4249,0x4228,0x31c7,0x3a08,0x3a08,0x39e7,0x4208,0x4a49,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x4208,0x39c7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a28,0x3a28,0x31e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x4249,0x39e7,0x3a08,0x3a08,0x4228,0x31e7,0x4249,0x4a49,0x39c7,0x4208,0x4208,0x39e7,0x4a69,0x39e7,0x31a6,0x3a07,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4208,0x3a08,0x31c7,0x31e7,0x3a28,0x4248,0x3a08,0x31a6,0x39e7,0x3a07,0x3186,0x31a6,0x3a07,0x4228,0x39e7,0x31a7,0x31a7,0x39c7,0x31c7,0x31c7,0x3a08,0x3a08,0x3a08,0x31a7,0x31c7,0x39e8,0x31e8,0x31c7,0x31c7,0x3a07,0x3a07,0x4228,0x39e8,0x39e8,0x39e7,0x31c6,0x39e7,0x31a6,0x3a08,0x31c7,0x3a07,0x31c6,0x4228,0x3a08,0x39e7,0x3186,0x31c7,0x4228, +0x39c7,0x31c7,0x2946,0x3186,0x3a07,0x2986,0x2986,0x39e8,0x39e8,0x31a7,0x39c7,0x31a6,0x31e7,0x31a7,0x39e8,0x3186,0x3186,0x39c7,0x39e8,0x39e8,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a07,0x31a7,0x31c7,0x4229,0x4a6a,0x4209,0x4a49,0x4229,0x3a08,0x31c7,0x31c7,0x4229,0x3a08,0x39e8,0x3a09,0x3a08,0x4248,0x4228,0x31e7,0x31e7,0x31e7,0x4249,0x3a08,0x3a28,0x31e7,0x39e8,0x4208,0x4249,0x3a08,0x3a08,0x4269,0x3a08,0x4249,0x4a69,0x4a49,0x4249,0x4a49,0x3a08,0x4228,0x4269,0x39e7,0x4229,0x3a08,0x4229,0x4228,0x39e7,0x3a28,0x3a08,0x3a08,0x39e7,0x39e8,0x39e7,0x39e7,0x4228,0x31c7,0x4209,0x4229,0x4249,0x4228,0x4a6a,0x4229,0x4208,0x4229,0x3a08,0x4229,0x3a28,0x3a29,0x4249,0x4208,0x4a69,0x4249,0x3a08,0x4a49,0x4229,0x4229,0x4249,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x3a28,0x4a69,0x3a28,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a49,0x2104,0x2945,0x18a3,0x7390,0xad36,0xde9c,0xffbe,0x736c,0x2104,0x2104,0x18c3,0x18a2,0x2945,0x2944,0x2124,0x2103,0x2103,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x10a2,0x2124,0x3165,0x2944,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2103,0x18e3,0x18c3,0x1082,0x18e3,0x3186,0x2924,0x2103,0x18c3,0x18c2,0x18c2,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2944,0x2124,0x18e3,0x18c3,0x20e3,0x2104,0x3186,0x9492,0x8c31,0x8410,0x9c93,0x738e,0x4229,0x3a08,0x4a49,0x4a49,0x4228,0x4a69,0x4228,0x4228,0x3a28,0x39e7,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4228,0x4249,0x39e7,0x3a08,0x39e8,0x4249,0x4228,0x4a6a,0x4a69,0x3a08,0x39e8,0x39e8,0x4a69,0x39e7,0x4229,0x4228,0x3a08,0x4249,0x4229,0x39c7,0x31a7,0x3a08,0x3a08,0x3a08,0x31a6,0x39e7,0x3a08,0x31c7,0x3a07,0x39e7,0x4208,0x3a08,0x3a07,0x3a07,0x3a28,0x31c6,0x39e7,0x39e7,0x4249,0x3a08,0x4a49,0x39c7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x31c6,0x39e7,0x39c7,0x4228,0x31e7,0x3a08,0x3a28,0x39e7,0x3a08,0x39c7,0x31c7,0x39e7,0x39e7,0x39c7,0x3a08,0x3186,0x4a69,0x4228,0x39e7,0x39c7,0x4208,0x31a6,0x39e7,0x39e8,0x3a08,0x39e8,0x39c7,0x31a7,0x3a08,0x31c7,0x4248,0x4228,0x4248,0x39e7,0x4208,0x3a08,0x4248,0x39e7,0x39c7,0x39e8,0x31a7,0x31a6,0x4228,0x4a8a,0x3186,0x4208,0x31c7,0x39e7,0x31a6,0x39e7, +0x31a7,0x31a6,0x2966,0x39c7,0x31e7,0x2986,0x2145,0x41e8,0x4a4a,0x39e7,0x2965,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39c7,0x4a49,0x4228,0x31a6,0x3a07,0x4249,0x31e7,0x31e7,0x39e7,0x3a08,0x39e8,0x31c7,0x4a8a,0x4249,0x39e7,0x4208,0x39c7,0x39c7,0x31a7,0x4249,0x4249,0x31c7,0x39e8,0x39c8,0x31c7,0x4228,0x4208,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4229,0x4228,0x4249,0x3a08,0x3a07,0x4248,0x4249,0x4228,0x4249,0x4a8a,0x39e8,0x39e7,0x31e7,0x3a28,0x3a28,0x4249,0x39e8,0x4a69,0x52aa,0x4a69,0x39e7,0x4228,0x4a49,0x4249,0x52aa,0x4a6a,0x3a09,0x4208,0x4208,0x4228,0x4269,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4a6a,0x4208,0x4a49,0x4229,0x4229,0x4a69,0x4a69,0x4248,0x528a,0x52cb,0x52ab,0x426a,0x3a28,0x4a8a,0x4249,0x4a8a,0x4a69,0x4a49,0x4228,0x4a69,0x20e3,0x2965,0x18c4,0x7bd1,0xb576,0xd67b,0xef3c,0x632b,0x2104,0x2104,0x18c3,0x18a3,0x2965,0x2945,0x3165,0x2944,0x2944,0x3165,0x3185,0x2965,0x2944,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2944,0x2965,0x2924,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x2945,0x31a6,0x3186,0x2965,0x18e3,0x20e3,0x2124,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2924,0x2944,0x2945,0x2965,0x3165,0x3165,0x2104,0x18e3,0x1082,0x2104,0x41e8,0x3186,0x31a6,0x3165,0x2944,0x2945,0x2945,0x2965,0x3165,0x3185,0x2965,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x3186,0x39a6,0x2945,0x18e3,0x18c3,0x18e3,0x20e3,0x3186,0x9492,0x83f0,0x8c51,0x9cd3,0x630d,0x4229,0x52ab,0x4a49,0x4229,0x39e8,0x3a08,0x4249,0x4228,0x4249,0x4249,0x4249,0x4228,0x3a08,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x4a8a,0x4228,0x4208,0x4228,0x39e7,0x4249,0x4228,0x3a08,0x3a08,0x4229,0x4249,0x31e7,0x39e7,0x39c7,0x4208,0x39e8,0x31a7,0x31c7,0x3a08,0x39c7,0x3a08,0x31e7,0x31c7,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x4208,0x39e7,0x4228,0x3a28,0x39e7,0x39e7,0x39e7,0x4228,0x39e7,0x31c7,0x39c6,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x3a07,0x39c7,0x4228,0x3a07,0x31e7,0x39e7,0x52aa,0x39e7,0x3a08,0x39e7,0x3187,0x4a49,0x4228,0x31c6,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x31c7,0x3a08,0x4228,0x3a08,0x31a6,0x31a6,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39c7,0x4249,0x31a6,0x4228,0x39e7,0x39e7, +0x3186,0x2965,0x3186,0x39e8,0x29a6,0x2186,0x29a7,0x39c7,0x39e8,0x3a08,0x3a07,0x3a07,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x39e8,0x39e7,0x31e7,0x4249,0x31a6,0x31c6,0x39e8,0x39e8,0x3a28,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x39e8,0x39c7,0x39e8,0x31c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31a7,0x39a7,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4229,0x4228,0x3a08,0x4249,0x3a29,0x3a08,0x4249,0x4229,0x4249,0x4249,0x4249,0x39e7,0x39e8,0x3a28,0x3a28,0x3a49,0x4249,0x4208,0x4228,0x4a6a,0x39e8,0x39e8,0x4208,0x4a8a,0x4a49,0x4229,0x3a08,0x4249,0x4249,0x4a49,0x4249,0x4a69,0x3a08,0x3a08,0x3a08,0x3a07,0x4228,0x4229,0x4249,0x4229,0x4249,0x426a,0x4229,0x4249,0x4228,0x4a49,0x528a,0x4249,0x4249,0x4a8a,0x4249,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a8a,0x18e3,0x2945,0x18c4,0x7bd2,0xb596,0xce3a,0xd679,0x5aca,0x2104,0x1903,0x18c3,0x18a3,0x2965,0x20e4,0x2104,0x10a2,0x2104,0x3165,0x2945,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2124,0x2124,0x2104,0x18c3,0x1082,0x2945,0x3166,0x2945,0x18e3,0x18c3,0x2124,0x2924,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x3165,0x3186,0x2924,0x2924,0x2945,0x2104,0x18e3,0x1082,0x2104,0x39e8,0x2965,0x2965,0x2944,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x3165,0x41e7,0x39c6,0x31a6,0x3186,0x3185,0x3165,0x2124,0x2924,0x3165,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2965,0x8431,0x738f,0x8c51,0x9cb3,0x4a29,0x4228,0x4a69,0x4249,0x4249,0x3a08,0x3a29,0x4249,0x4249,0x3a29,0x3a29,0x31e7,0x3a08,0x39e7,0x3a08,0x31c7,0x39e8,0x4249,0x39e7,0x39c7,0x3a08,0x4a69,0x3a08,0x4229,0x4a69,0x39e7,0x3a08,0x4228,0x4208,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39e7,0x4a69,0x3a08,0x3a08,0x4249,0x4208,0x39c7,0x3a08,0x4208,0x3a08,0x4208,0x4a49,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a07,0x4248,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x31c7,0x39e8,0x4208,0x39e8,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a28,0x3a07,0x4269,0x52eb,0x31e7,0x3a07,0x39e7,0x31e7,0x4a69,0x4a49,0x2986,0x3a08,0x4249,0x31c7,0x39e7,0x31c7,0x31c7,0x31c6,0x3a28,0x4269,0x3a08,0x39e7,0x4228,0x3207,0x29a7,0x31c7,0x39e8,0x39e8,0x39c7,0x39e7,0x39e7,0x31c7,0x31c7, +0x2986,0x2965,0x31a6,0x29a7,0x29c7,0x29a7,0x31e7,0x31c7,0x31a6,0x3a08,0x3a08,0x31a6,0x31a7,0x3a08,0x3a08,0x31c7,0x2986,0x39c8,0x3a08,0x31c7,0x31c7,0x4a6a,0x4a8a,0x4249,0x39e8,0x39e8,0x31e7,0x3a28,0x3a28,0x3a08,0x3a07,0x39e7,0x31c7,0x31a7,0x4208,0x4208,0x39e7,0x31a7,0x31a7,0x39c7,0x39e7,0x39c7,0x31c7,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x39e8,0x4208,0x4208,0x4228,0x4a8a,0x4228,0x4a69,0x4249,0x3a08,0x4208,0x4229,0x4249,0x4248,0x4249,0x4269,0x4a8a,0x4aaa,0x4269,0x4a8a,0x4228,0x39e7,0x3a08,0x4228,0x3a28,0x3a28,0x4249,0x39e7,0x4249,0x3a28,0x39e7,0x39e8,0x3a28,0x4249,0x4249,0x31e7,0x4aaa,0x4249,0x3a28,0x4228,0x4229,0x4249,0x39e8,0x39e7,0x4228,0x3a28,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x4208,0x5acb,0x4a49,0x4208,0x39e8,0x4228,0x4229,0x4229,0x4228,0x4a49,0x4a69,0x4a69,0x4249,0x4a69,0x4a6a,0x4a69,0x426a,0x18e3,0x2925,0x18c4,0x7bb1,0xb596,0xbdb7,0xb596,0x52aa,0x2103,0x18e3,0x18c3,0x18a3,0x2965,0x10a2,0x0861,0x0861,0x2944,0x2945,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x20e4,0x20e3,0x18e3,0x18e3,0x2104,0x2945,0x2104,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x2925,0x2104,0x1082,0x0861,0x18e3,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2124,0x2104,0x2104,0x2124,0x2965,0x2945,0x18a2,0x18c3,0x18e3,0x18c3,0x1082,0x20e4,0x3186,0x18a3,0x10a2,0x2104,0x2924,0x2104,0x2104,0x2104,0x2124,0x2104,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x3185,0x2924,0x1082,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x3186,0x7bcf,0x632e,0x8411,0x8411,0x39a7,0x3a07,0x4249,0x4a69,0x4249,0x4249,0x4229,0x3a29,0x3a08,0x3a29,0x3a28,0x39e7,0x3a08,0x3a08,0x4228,0x31c7,0x4228,0x4228,0x4249,0x4228,0x39c7,0x3a08,0x4249,0x4208,0x3a08,0x39e8,0x4249,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a49,0x4228,0x4229,0x3a08,0x3a07,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c6,0x3a08,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4228,0x4228,0x4208,0x4249,0x39c7,0x31a6,0x39c7,0x4249,0x4249,0x3a08,0x31c7,0x4228,0x31a6,0x52aa,0x4208,0x31a6,0x3a08,0x31c7,0x3a07,0x4228,0x3a08,0x4a69,0x39e8,0x4229,0x4208,0x3a08,0x4228,0x4228,0x39c7,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x4249,0x3a07,0x39e7,0x39e7,0x31e7,0x4249,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x4249,0x31c7,0x31e7,0x3a28,0x3a08,0x4208,0x39e8,0x41e8,0x3a08,0x31e7,0x31c7,0x31a7,0x3186,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7, +0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x2986,0x31a7,0x31a7,0x3186,0x31c7,0x31a7,0x2966,0x39c7,0x3a08,0x31a6,0x31a6,0x39c7,0x39e8,0x3a28,0x3a08,0x31c7,0x39c8,0x4229,0x4208,0x31a7,0x39e8,0x3a08,0x3a08,0x39e7,0x31e7,0x3a28,0x39c7,0x31a7,0x31a6,0x39c7,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e7,0x4249,0x39e8,0x31c7,0x39e7,0x31e7,0x31e7,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x4249,0x39e7,0x4a49,0x4228,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4a69,0x4249,0x4a8a,0x4249,0x4249,0x31c7,0x3a08,0x4249,0x4249,0x4228,0x4228,0x4a49,0x4a69,0x3a08,0x3a28,0x4249,0x3a07,0x3a08,0x3a28,0x3a08,0x4249,0x4269,0x4248,0x4249,0x4228,0x4229,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4229,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4208,0x4a49,0x4249,0x4229,0x4249,0x3a08,0x4228,0x4a49,0x4208,0x4208,0x4249,0x4229,0x4a6a,0x4249,0x4a6a,0x4a8a,0x18c3,0x2104,0x18c4,0x7391,0xbdb7,0xad35,0x9cf4,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2945,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2944,0x2144,0x2925,0x2945,0x2945,0x2924,0x2124,0x2124,0x2945,0x2965,0x3185,0x0861,0x0841,0x18c3,0x18a2,0x1082,0x2124,0x10a2,0x0020,0x0841,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2924,0x2925,0x2925,0x2124,0x2124,0x2124,0x2965,0x31a6,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x20e3,0x2124,0x0841,0x0861,0x2945,0x2124,0x2124,0x2924,0x2924,0x2945,0x2925,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3186,0x3186,0x1062,0x0861,0x1082,0x20e4,0x18c3,0x18c3,0x2104,0x39c7,0x6b4e,0x630d,0x73af,0x738e,0x3186,0x39e8,0x4a69,0x4a8a,0x52aa,0x4a49,0x3a08,0x3a08,0x31e7,0x3a28,0x4248,0x4249,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x3a08,0x4229,0x39c7,0x3a08,0x3a08,0x4249,0x4228,0x39c7,0x4208,0x3a08,0x4a8a,0x3a28,0x4228,0x3a08,0x4228,0x4208,0x4208,0x4a49,0x39e8,0x3a08,0x4228,0x31c7,0x4228,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x4a69,0x4a69,0x3a28,0x4269,0x31c7,0x3a08,0x3a08,0x3a08,0x39e8,0x39c7,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x31a7,0x4229,0x39e8,0x39e7,0x3a07,0x4208,0x39e7,0x31c6,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e8,0x39e8,0x39e8,0x31c7,0x31a7,0x39e7,0x39e7,0x4249,0x4a49,0x31c7,0x4228,0x3a08,0x31c7,0x2986,0x3a08,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x4228,0x31c7,0x39e8,0x39e8,0x39c7,0x3a08,0x29a6,0x31e7,0x4269,0x3a08,0x2986,0x31a6,0x3a08,0x39e8,0x31a7,0x3166, +0x31a7,0x31c7,0x31a6,0x31a7,0x29a6,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x39c7,0x39c7,0x39c8,0x4229,0x3a28,0x3a28,0x3a07,0x3a07,0x31e7,0x31c7,0x31a7,0x31a7,0x39e8,0x39e8,0x31e7,0x31c7,0x4208,0x39e7,0x39e8,0x4208,0x39e8,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x4208,0x4208,0x4249,0x3a08,0x31e7,0x3a28,0x3a08,0x3a08,0x3a28,0x3a08,0x4a6a,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x3207,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x4a69,0x4269,0x4249,0x3a28,0x3a28,0x4248,0x4269,0x4a69,0x4208,0x4249,0x4a8a,0x4208,0x41e8,0x4a49,0x3a08,0x39e8,0x4228,0x4a69,0x4a49,0x4249,0x4228,0x4a69,0x4a69,0x4aaa,0x4249,0x4228,0x4a69,0x4228,0x528a,0x4a49,0x3a08,0x4229,0x4a6a,0x4249,0x4a49,0x39e8,0x4229,0x3a08,0x3a29,0x4208,0x4229,0x4249,0x4269,0x4229,0x4229,0x4249,0x4249,0x426a,0x4249,0x4a8b,0x52cb,0x18c3,0x2104,0x18c4,0x7371,0xc5f8,0xa535,0x94b3,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2124,0x0861,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x4a05,0x39c5,0x2965,0x2965,0x2945,0x2965,0x3166,0x3186,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x41e5,0x4a25,0x4205,0x3185,0x2965,0x2965,0x2965,0x2965,0x31a6,0x10a2,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x20e3,0x0020,0x1081,0x2965,0x2945,0x2965,0x2965,0x3186,0x3186,0x41e5,0x4a25,0x4205,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0841,0x0861,0x18e3,0x18a2,0x18c3,0x2104,0x31a7,0x5aec,0x5acc,0x6b6e,0x630d,0x2965,0x4229,0x4209,0x4249,0x52aa,0x4a69,0x4229,0x39e8,0x4a69,0x4a69,0x4269,0x4228,0x3a08,0x4229,0x4229,0x39e8,0x4249,0x3a08,0x4228,0x3a08,0x4249,0x3a08,0x3a07,0x4228,0x39e7,0x4a49,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x3a08,0x4228,0x39e7,0x4228,0x4229,0x31c7,0x4208,0x39e8,0x39a7,0x39e7,0x4248,0x3a07,0x39e7,0x39e7,0x31a6,0x39c7,0x4208,0x4249,0x4a69,0x3a08,0x31c7,0x31c7,0x4249,0x4228,0x39e8,0x3a08,0x4228,0x4249,0x3a08,0x3a08,0x31c7,0x31e7,0x31e7,0x31c7,0x3a28,0x4208,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x3a07,0x31a6,0x4a6a,0x39e7,0x31c7,0x3a08,0x4a6a,0x39e8,0x4208,0x3a08,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x31c7,0x4249,0x4a69,0x31c7,0x3a08,0x31e7,0x31c7,0x4249,0x4249,0x31e7,0x31e7,0x3a08,0x29a6,0x2985,0x4228,0x39e8,0x31c7,0x3a08, +0x39c7,0x39c7,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x426a,0x426a,0x31c7,0x4228,0x31c7,0x3a08,0x31c7,0x29a6,0x3a28,0x3a28,0x31c7,0x31c7,0x3a08,0x4229,0x4229,0x3a08,0x31a6,0x31e7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c7,0x39e8,0x4229,0x4a6a,0x3a08,0x31a6,0x4228,0x4249,0x3a08,0x3a08,0x4229,0x52ab,0x3a08,0x3a49,0x4249,0x4228,0x4208,0x4a8a,0x4249,0x3a08,0x4a69,0x3a08,0x3a08,0x4a49,0x39e8,0x3a08,0x3a08,0x4a49,0x4228,0x4a69,0x4a8a,0x4228,0x4269,0x3a08,0x4229,0x3a08,0x4208,0x4228,0x4228,0x4228,0x41e8,0x39e7,0x39e8,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4228,0x4248,0x4249,0x31e7,0x39e7,0x4208,0x4a89,0x4a49,0x39e8,0x4229,0x39e8,0x39e8,0x3a09,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x4a69,0x4249,0x4229,0x4a69,0x4249,0x4228,0x4249,0x4249,0x4249,0x52aa,0x528a,0x4a6a,0x18c3,0x2124,0x18a3,0x6b30,0xd659,0xad35,0x8c72,0x4a69,0x20e3,0x18c3,0x18c3,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4a45,0x8385,0x5264,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x0861,0x0020,0x10a2,0x1082,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x4a25,0x7b65,0x7324,0x7b65,0x5a64,0x3165,0x3166,0x2966,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18e3,0x0020,0x1082,0x2965,0x2965,0x3186,0x3186,0x3186,0x4226,0x7b65,0x7b65,0x8385,0x5246,0x3186,0x3186,0x3186,0x31a7,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x18a2,0x18c3,0x20e4,0x2945,0x52ab,0x52ab,0x6b6e,0x5aec,0x2945,0x4a6a,0x4229,0x4229,0x4a69,0x4228,0x3a08,0x3a08,0x4a69,0x4a89,0x4a8a,0x3a08,0x3a08,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x4228,0x4249,0x39e7,0x4228,0x4248,0x4249,0x4228,0x4249,0x4a69,0x3a08,0x4208,0x4229,0x4229,0x4a69,0x4228,0x4a8a,0x4229,0x4229,0x4229,0x4208,0x4208,0x31a7,0x31c6,0x4228,0x39c7,0x31a6,0x4228,0x39e8,0x39c7,0x4208,0x4229,0x3a08,0x3a08,0x39e7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x4229,0x4249,0x31c7,0x3a08,0x39e7,0x4a69,0x39e7,0x31a7,0x39e8,0x4208,0x39c7,0x4208,0x4249,0x39e7,0x39e7,0x3a08,0x3a08,0x31c7,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31a7,0x4a69,0x3a08,0x31c7,0x4a69,0x4249,0x39e8,0x4a49,0x4208,0x39c7,0x31a6,0x39e7,0x4248,0x39e7,0x39e7,0x4228,0x31c7,0x39e7,0x4208,0x39e8,0x3a08,0x3a08,0x31a6,0x4228,0x52aa,0x31a7,0x3186,0x3186,0x31a6,0x2986,0x3a08,0x31a7,0x39e8,0x39c7, +0x3186,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31a7,0x31c7,0x31e7,0x31a7,0x29a6,0x2986,0x31c7,0x31a7,0x31e8,0x31c8,0x31a7,0x31c7,0x39c7,0x4208,0x4228,0x39e7,0x31e7,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x31a6,0x39e7,0x31c7,0x31c7,0x31c8,0x3a08,0x4228,0x39e7,0x4269,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x39e8,0x4228,0x39e7,0x39c7,0x4a69,0x3a08,0x3208,0x4249,0x4208,0x31e7,0x4229,0x4229,0x4a49,0x4a49,0x41e8,0x4208,0x4a49,0x4249,0x4229,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x39c7,0x39e8,0x4229,0x4249,0x3a08,0x3a08,0x3a08,0x4249,0x4249,0x4228,0x4228,0x3a08,0x4a69,0x39e7,0x4a69,0x3a08,0x39e8,0x4228,0x4208,0x39e8,0x3a08,0x4249,0x4228,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a69,0x4228,0x4a49,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x52aa,0x4a8a,0x3a08,0x18c3,0x2124,0x18c3,0x6b30,0xdeba,0xb575,0x8c51,0x4a49,0x20e3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2945,0x4a46,0x7b45,0xa465,0x62a4,0x2945,0x2965,0x2965,0x2965,0x3186,0x2965,0x0861,0x0020,0x1082,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x7325,0x8bc5,0x5a64,0x8bc5,0x8384,0x3165,0x2966,0x3166,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x2966,0x2966,0x3186,0x3186,0x5ac6,0x8bc5,0x6ae5,0x9405,0x7305,0x3186,0x3186,0x3186,0x3187,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a3,0x18e3,0x2124,0x4a6a,0x528b,0x632d,0x5acc,0x2965,0x4a6a,0x4229,0x4229,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x3a08,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4a49,0x4a49,0x4269,0x4229,0x4249,0x3a08,0x4229,0x4a49,0x4248,0x3a08,0x39e7,0x3a07,0x4228,0x4a69,0x3a08,0x3a08,0x3a08,0x4a49,0x52aa,0x4249,0x4228,0x4228,0x3a08,0x4248,0x39e7,0x3a07,0x4208,0x4248,0x4229,0x31c7,0x4249,0x3a08,0x31a6,0x4249,0x3a08,0x39c7,0x4208,0x39e7,0x31e7,0x39e7,0x4228,0x4249,0x4249,0x39e7,0x39c7,0x39e7,0x39e8,0x39e8,0x31a7,0x39c7,0x39c8,0x31a6,0x39e7,0x4a49,0x4228,0x39e7,0x4249,0x4208,0x3a08,0x39c7,0x31a6,0x31c7,0x31e7,0x39e7,0x4229,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x4208,0x39e8,0x3a08,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x31a7,0x31c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39e7, +0x2966,0x2966,0x39e7,0x3186,0x2986,0x31a7,0x3186,0x3186,0x31c7,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e8,0x3a08,0x31a6,0x39e8,0x39e8,0x39e7,0x3a08,0x4229,0x39c7,0x3a07,0x4248,0x3a29,0x3a08,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x39e7,0x4248,0x4228,0x39e8,0x4249,0x3a08,0x41e7,0x39c7,0x3a08,0x3a08,0x3a08,0x31c7,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x4209,0x4229,0x39e8,0x4229,0x3a08,0x39e8,0x4229,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4229,0x39e8,0x39e9,0x4249,0x4249,0x4249,0x4a6a,0x39e8,0x4208,0x4208,0x4229,0x4208,0x4229,0x3a08,0x3a08,0x3a28,0x39e7,0x3a08,0x4a49,0x4208,0x39e7,0x4208,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x4a49,0x528a,0x3a08,0x4a69,0x4228,0x39e7,0x4229,0x4249,0x4208,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4229,0x4228,0x4249,0x4a49,0x4248,0x3a08,0x18a3,0x2104,0x18c3,0x62ef,0xe6fb,0xb595,0x8c51,0x4a49,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x4206,0x5a85,0x9425,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x62c6,0x5a85,0x39a5,0x83a5,0x83a4,0x3165,0x2965,0x3166,0x3186,0x3186,0x10a2,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3166,0x3166,0x3186,0x4a46,0x5a85,0x5a65,0x9405,0x7305,0x3165,0x3186,0x3186,0x3186,0x31a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a2,0x18c3,0x2104,0x4229,0x528b,0x630d,0x528b,0x2945,0x4249,0x4269,0x4a8a,0x4229,0x3a08,0x4a69,0x4a69,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x4a69,0x4a8a,0x4208,0x4228,0x4a89,0x4a69,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x4229,0x39e8,0x39c7,0x4249,0x3a08,0x3a08,0x39e8,0x39c7,0x39e7,0x3a08,0x31e7,0x3a08,0x4248,0x3a08,0x3a08,0x4228,0x4249,0x3a08,0x39e8,0x4228,0x4208,0x39e7,0x4208,0x4249,0x4269,0x39e8,0x39e7,0x4a49,0x39e8,0x39e7,0x4208,0x4208,0x4249,0x31e7,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x39c7,0x4249,0x4228,0x39e7,0x39e7,0x39e8,0x4229,0x4208,0x4208,0x39e8,0x39c7,0x3a08,0x31a6,0x29a6,0x31c7,0x39e7,0x3a07,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x29a6,0x4248,0x3a28,0x31e7,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x3a08,0x31e7,0x4229,0x4208,0x39e8,0x4249,0x31a6,0x2965,0x2965,0x39c6,0x39e7, +0x31a6,0x31c7,0x31c6,0x2986,0x2986,0x2986,0x3186,0x31c6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x31c7,0x3a07,0x39e7,0x29a6,0x39e8,0x4229,0x3a08,0x31c8,0x31c8,0x3a09,0x4209,0x4208,0x3a08,0x3a07,0x3a08,0x3a49,0x4229,0x31c7,0x4a69,0x4228,0x3a08,0x39e7,0x31c7,0x3a28,0x4a69,0x4228,0x39e7,0x4249,0x4248,0x39e7,0x3a08,0x3a07,0x3a07,0x4228,0x4208,0x4208,0x4228,0x4208,0x39e7,0x4249,0x4a8a,0x3a08,0x39e8,0x4208,0x4229,0x4a6a,0x39e8,0x4208,0x4228,0x4228,0x4a69,0x4a49,0x39c7,0x4a8a,0x4aaa,0x3a08,0x31a7,0x3a09,0x39e8,0x31c8,0x3a09,0x39e8,0x39e8,0x4a48,0x4a49,0x4249,0x4208,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a08,0x4249,0x4249,0x52aa,0x4249,0x4229,0x3a08,0x4a6a,0x4a69,0x4269,0x4249,0x39e7,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4229,0x4229,0x4228,0x4a8a,0x4a69,0x4249,0x4a49,0x528a,0x4a69,0x4a8a,0x4249,0x18a3,0x18e3,0x18a3,0x5aae,0xe6fc,0xbd96,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x3185,0x3185,0x8be6,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x39c6,0x41e5,0x62c5,0x8bc5,0x5a84,0x2965,0x2965,0x2965,0x3165,0x3186,0x1082,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x3166,0x3186,0x39a6,0x39c5,0x62e5,0x9c45,0x6ae4,0x3165,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0820,0x0861,0x18a3,0x10a2,0x18c3,0x18c3,0x2104,0x3a08,0x4a6a,0x5aec,0x4a29,0x2124,0x4249,0x4249,0x4229,0x4229,0x4a8a,0x3a08,0x4249,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a89,0x528a,0x4a49,0x4228,0x4208,0x31a7,0x4229,0x4a49,0x3a08,0x39e8,0x39c8,0x41e8,0x4208,0x4a49,0x4a69,0x4228,0x4228,0x4249,0x4a49,0x4229,0x41e8,0x4208,0x39e8,0x39e7,0x3a08,0x3a28,0x4228,0x4a69,0x3a08,0x31c7,0x4228,0x4248,0x39e7,0x39e7,0x3a08,0x4249,0x39e8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e8,0x4208,0x4208,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3186,0x39e7,0x3186,0x39e8,0x4208,0x31a7,0x39e8,0x4208,0x39e8,0x4208,0x4a49,0x4208,0x4208,0x39e8,0x31c7,0x31e7,0x3a28,0x31e7,0x3a07,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x31a7,0x39e7,0x4228,0x39e7,0x39e8,0x39c7,0x39c7,0x4228,0x4a69,0x4249,0x31e7,0x39e7,0x4249,0x4229,0x31a7,0x3a08,0x39e8,0x39e8,0x31a7,0x4208,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7, +0x31c6,0x39e7,0x31a6,0x2986,0x2965,0x2986,0x4208,0x39c7,0x2986,0x31c7,0x39c8,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c7,0x3a08,0x31e8,0x29a7,0x31c8,0x3a09,0x4229,0x4a49,0x4228,0x39c7,0x31e7,0x31e7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a08,0x4249,0x4208,0x4248,0x39c7,0x39e8,0x4a69,0x4a69,0x4a49,0x4248,0x39e7,0x3a08,0x4a49,0x4a49,0x4208,0x4228,0x3a08,0x39e8,0x4a69,0x4249,0x528a,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4208,0x4228,0x39e7,0x4228,0x39e8,0x4a49,0x4249,0x3a07,0x4a69,0x3a07,0x3a08,0x3a08,0x4209,0x4229,0x4208,0x39e7,0x39e8,0x39e8,0x4228,0x4228,0x39e7,0x4208,0x4249,0x4a49,0x4228,0x4249,0x4249,0x4228,0x4229,0x4a6a,0x4229,0x4229,0x3a08,0x4a69,0x4a69,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4208,0x4228,0x4a69,0x4249,0x4249,0x4a6a,0x4229,0x4249,0x4a6a,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4229,0x18a3,0x18e3,0x10a3,0x528d,0xdebb,0xb595,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x8bc6,0x62c4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2966,0x2965,0x2965,0x39c5,0x6b25,0x8bc5,0x6ae4,0x39c5,0x2965,0x2965,0x2965,0x2965,0x3186,0x1082,0x0841,0x1082,0x18c2,0x1082,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x2965,0x3165,0x4a45,0x5245,0x5245,0x8be5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1061,0x18a3,0x10a2,0x18c3,0x18e3,0x2104,0x39e8,0x4a4a,0x52ab,0x41e8,0x2124,0x3a28,0x4a8a,0x4228,0x4a8a,0x52aa,0x4228,0x4a49,0x4208,0x4a49,0x4a49,0x4229,0x4a69,0x4249,0x4249,0x4a49,0x4249,0x3a08,0x4a6a,0x39e8,0x4208,0x4a8a,0x4229,0x4a49,0x39e7,0x39e8,0x4208,0x4229,0x4228,0x3a07,0x4228,0x4208,0x4229,0x4208,0x4a29,0x41e8,0x4208,0x39c7,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x31a6,0x4a69,0x4249,0x31a6,0x31a6,0x3a08,0x4269,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x4208,0x4229,0x31a7,0x3a28,0x3a28,0x3a28,0x4229,0x39e8,0x39e8,0x3a08,0x39e7,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x3a08,0x4a8a,0x3a08,0x31c7,0x3207,0x31c6,0x39e8,0x4a69,0x3a07,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x39e7,0x31c7,0x4248,0x4249,0x3a08,0x31a7,0x31a7,0x39e8,0x39e8,0x2986,0x31a6,0x4228,0x4228,0x31a6,0x29a6,0x4228, +0x31c6,0x31a6,0x2986,0x2966,0x2986,0x2966,0x39c7,0x39c7,0x31c7,0x39e8,0x4208,0x31a7,0x31a7,0x31c7,0x31a6,0x39c7,0x39e8,0x39e8,0x39e8,0x31a7,0x31c7,0x31c8,0x31e8,0x31c7,0x31c7,0x4208,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e7,0x31a7,0x39c7,0x4228,0x4208,0x31c8,0x39e8,0x4249,0x4208,0x41e8,0x4208,0x4208,0x4208,0x4208,0x4a6a,0x3a08,0x4228,0x31a7,0x3a08,0x4a8a,0x4228,0x4228,0x52aa,0x4a69,0x52aa,0x4249,0x4228,0x39e7,0x3a28,0x3a28,0x4228,0x4249,0x39e8,0x4229,0x4a6a,0x4a49,0x3a07,0x4249,0x39e8,0x3a08,0x4249,0x4249,0x4208,0x4208,0x4229,0x4228,0x4228,0x4249,0x4249,0x4208,0x39e8,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x3a08,0x39e7,0x4229,0x4229,0x4229,0x3a49,0x3a28,0x39e8,0x4208,0x4228,0x4228,0x4a6a,0x4a69,0x3a08,0x3a08,0x52aa,0x4249,0x4228,0x4a49,0x4a6a,0x4249,0x3a29,0x4229,0x4208,0x18a3,0x2104,0x18c3,0x4a4c,0xce39,0xa534,0x7c10,0x4228,0x18e3,0x18e3,0x18c3,0x18a3,0x2104,0x0861,0x0841,0x1082,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x83a6,0x62a4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x3165,0x2965,0x2965,0x2945,0x5aa5,0x9c45,0x8bc4,0x62c4,0x5245,0x2965,0x2965,0x2965,0x2965,0x3185,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x18c2,0x0020,0x1082,0x2965,0x3186,0x3186,0x3186,0x3165,0x62e5,0x8385,0x5a64,0x83c5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x39c7,0x4229,0x4a6a,0x39c8,0x2104,0x4aaa,0x3a28,0x4228,0x4249,0x4249,0x4a8a,0x4a49,0x4a69,0x4a49,0x4a69,0x5acb,0x4a8a,0x3a08,0x4229,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4228,0x3a08,0x3a28,0x3a28,0x4249,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x39e7,0x3a07,0x4a49,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4a89,0x31c7,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x39c7,0x39c6,0x4a69,0x4228,0x3a08,0x4227,0x31a7,0x3a08,0x3a08,0x4249,0x39e8,0x39e8,0x31a6,0x39e8,0x4208,0x31c6,0x3207,0x31c7,0x39e7,0x4208,0x4228,0x31c7,0x39e8,0x39e7,0x31c7,0x31a6,0x31e7,0x3a08,0x31c7,0x4208,0x4a69,0x31a6,0x39e8,0x31c7,0x3a08,0x39e7,0x4249,0x4229,0x4228,0x4228,0x3a08,0x3a07,0x39e7,0x31a6,0x31a6,0x31c7,0x39e7,0x39e7,0x31e7,0x31c7,0x39e7,0x3a08,0x31a6,0x31c6,0x3a08,0x4229,0x31c7,0x4228,0x4228,0x31e7,0x29a6,0x31e7,0x39e7,0x31c6,0x31a7,0x31c7,0x39e8, +0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39c7,0x39e8,0x31a6,0x39e7,0x39e8,0x4228,0x4208,0x3187,0x2987,0x31c7,0x3a08,0x31e8,0x31c7,0x31c7,0x3a28,0x39e7,0x4229,0x4229,0x31c7,0x3a08,0x39e8,0x39e7,0x3a08,0x39e7,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4228,0x39e8,0x3a08,0x3a09,0x39c7,0x4249,0x4249,0x3a08,0x4229,0x3a08,0x3a28,0x52aa,0x3a08,0x39e7,0x4228,0x4228,0x4269,0x39e7,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x39e8,0x4a49,0x4a49,0x39e7,0x39e8,0x4229,0x4249,0x31e8,0x3a08,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4228,0x4248,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x39c7,0x39e7,0x3a07,0x4249,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x3a08,0x4229,0x4229,0x4228,0x4228,0x4208,0x4228,0x4249,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4228,0x4228,0x4a6a,0x4249,0x3a08,0x4a6a,0x4249,0x18c3,0x2945,0x18e3,0x41ea,0xbdb7,0x9cd3,0x7bcf,0x4208,0x18e3,0x18e3,0x18c3,0x18a3,0x2124,0x10a2,0x1081,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x62e6,0x4a25,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x0861,0x0861,0x18c2,0x1082,0x1082,0x2104,0x10a2,0x0861,0x0861,0x2945,0x3165,0x2965,0x2945,0x2945,0x62e5,0x83c5,0x7b45,0x7325,0x62c5,0x3165,0x2965,0x2965,0x2965,0x2965,0x1082,0x0861,0x10a2,0x18c3,0x10a2,0x18e3,0x18c3,0x0861,0x1082,0x2965,0x3166,0x3186,0x3186,0x3186,0x4a46,0x7b66,0x7b45,0x7b65,0x5a65,0x3185,0x3186,0x3186,0x3186,0x2965,0x1082,0x0841,0x10a2,0x18c3,0x10a2,0x18c3,0x18e3,0x2124,0x31a7,0x4208,0x4a49,0x31a7,0x2104,0x4249,0x4249,0x4228,0x4228,0x4a69,0x4a49,0x4a49,0x4a49,0x39e7,0x39e7,0x52aa,0x4a69,0x4228,0x4a6a,0x4228,0x4249,0x4a8a,0x4228,0x4228,0x4208,0x4a49,0x4248,0x3a28,0x3a28,0x4249,0x4a69,0x39c8,0x39e8,0x4229,0x4229,0x4208,0x39e7,0x4a49,0x4a69,0x4228,0x39e7,0x4249,0x4249,0x3a28,0x4a49,0x4228,0x4228,0x4249,0x4249,0x4229,0x4228,0x39e7,0x4208,0x39e8,0x39e8,0x39e7,0x4248,0x4228,0x4a69,0x39e8,0x4229,0x4208,0x4228,0x31a7,0x39c7,0x39c7,0x39e7,0x4249,0x39e7,0x3a07,0x3a08,0x39c7,0x39c7,0x39e7,0x4229,0x31a6,0x31c6,0x31e7,0x39e7,0x39c7,0x4208,0x4249,0x39e8,0x39e7,0x31c6,0x4228,0x39e7,0x4209,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x4208,0x4249,0x31a6,0x31a7,0x31a7,0x31c7,0x3a08,0x39e8,0x3a08,0x4249,0x31c7,0x39e7,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x31a6,0x31a6,0x39c7,0x39c7,0x3186,0x2986,0x3186, +0x2965,0x2966,0x31a6,0x39c7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x31e8,0x3208,0x3a49,0x3a08,0x31c7,0x31a7,0x39e7,0x4228,0x39e7,0x31e7,0x31e7,0x3a07,0x31c7,0x4249,0x52ab,0x31c7,0x3a08,0x4228,0x31a6,0x4a8a,0x4229,0x2986,0x31c7,0x39e8,0x4249,0x4269,0x4228,0x3a08,0x4228,0x4a69,0x4228,0x31c7,0x3a08,0x4229,0x4228,0x3a08,0x39e7,0x4229,0x4228,0x3a08,0x4229,0x4249,0x3a28,0x4229,0x3a28,0x4249,0x4a69,0x39e8,0x4208,0x4a69,0x4249,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a6a,0x31c7,0x3a08,0x4228,0x4248,0x4248,0x4228,0x31e7,0x4269,0x4a8a,0x4228,0x4a49,0x4a49,0x4228,0x3a08,0x4a8a,0x4249,0x4228,0x4228,0x39e7,0x4a69,0x4a89,0x4248,0x4228,0x4249,0x4209,0x3a08,0x4249,0x4228,0x4248,0x4a69,0x4228,0x39e7,0x3a08,0x4a69,0x4a49,0x4a6a,0x4229,0x528a,0x4a69,0x4229,0x4a49,0x4249,0x4249,0x52cb,0x4a69,0x18a3,0x2125,0x18e3,0x3188,0xa535,0x8c71,0x738e,0x3a07,0x18e3,0x18e3,0x18e3,0x18c3,0x2925,0x2104,0x2104,0x18e3,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x39c5,0x31a5,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x2103,0x18e3,0x2924,0x2965,0x3165,0x2965,0x2945,0x41e5,0x4a25,0x4a25,0x4a25,0x4205,0x3165,0x2965,0x3185,0x3185,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18e3,0x2124,0x2104,0x18e3,0x2925,0x3166,0x3186,0x3186,0x3186,0x31a6,0x4a26,0x5266,0x4a26,0x39a6,0x3186,0x31a6,0x3186,0x3186,0x2945,0x18c2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x3187,0x39e8,0x4209,0x3186,0x2124,0x3a08,0x4249,0x4a8a,0x4228,0x4a8a,0x4249,0x4249,0x52aa,0x4228,0x4a48,0x4a48,0x3a08,0x4249,0x4a49,0x3a07,0x4228,0x4229,0x4249,0x4228,0x4208,0x4a49,0x4228,0x39e7,0x3a08,0x4a69,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4228,0x4249,0x4228,0x4228,0x528a,0x4208,0x4229,0x4228,0x3a08,0x4228,0x3a08,0x39e8,0x4229,0x4228,0x39e7,0x31c7,0x3a08,0x4a69,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x31c7,0x31c7,0x4228,0x3a08,0x39e7,0x3a08,0x39e8,0x4249,0x3a08,0x528a,0x39e8,0x4249,0x4228,0x4a49,0x39e7,0x39c7,0x4228,0x4228,0x39c7,0x39e7,0x4a49,0x29a6,0x31c7,0x3a07,0x3a28,0x3a08,0x39e7,0x3a07,0x39c7,0x31a6,0x4208,0x31a6,0x52ab,0x52ab,0x39e7,0x31c7,0x3a08,0x31c7,0x39c7,0x31c7,0x4249,0x39c7,0x31a7,0x3a08,0x39e8,0x31c6,0x4228,0x4229,0x31c7,0x39e8,0x2986,0x31a7,0x39e7,0x31c7,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31c7, +0x2986,0x3186,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x31c7,0x31e7,0x3208,0x3a08,0x4a8a,0x4229,0x39c7,0x39e7,0x39c7,0x39e8,0x4208,0x3a08,0x39e7,0x4a69,0x39e7,0x3a08,0x39e7,0x3a08,0x4a8a,0x4228,0x39e8,0x3a08,0x31c7,0x3a08,0x39e8,0x31a7,0x39e8,0x3a08,0x4228,0x39c7,0x39e8,0x3a08,0x39e7,0x3a08,0x4249,0x4249,0x4a8a,0x3a08,0x39e7,0x4a6a,0x3a08,0x39e7,0x4228,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4249,0x3a08,0x4208,0x4208,0x4a49,0x4229,0x4a49,0x4229,0x4208,0x3a28,0x4249,0x4249,0x3a08,0x39e8,0x4a49,0x4a69,0x3a07,0x4248,0x4228,0x3a08,0x39e8,0x4229,0x4229,0x5aab,0x4228,0x3a08,0x3a08,0x3a08,0x4229,0x4a49,0x4209,0x4249,0x4249,0x4249,0x4228,0x4229,0x3a08,0x3a09,0x4229,0x4229,0x4a69,0x52aa,0x3a08,0x3a08,0x4249,0x4aaa,0x4aaa,0x4269,0x3a28,0x4269,0x4229,0x4229,0x4a69,0x4a8a,0x52ca,0x4a8a,0x4228,0x18a2,0x18c3,0x18c3,0x2967,0x9493,0x8410,0x6b6e,0x39e7,0x18e3,0x18e3,0x18e3,0x18c3,0x2945,0x2965,0x2965,0x2924,0x2945,0x2945,0x2924,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2965,0x3165,0x31a6,0x3165,0x2965,0x2944,0x2103,0x1082,0x1082,0x2124,0x2965,0x31a6,0x3185,0x2965,0x3165,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x3186,0x3186,0x3185,0x3165,0x3165,0x20e4,0x18a2,0x1082,0x18e3,0x2965,0x3186,0x2945,0x2945,0x31a6,0x3186,0x3186,0x3166,0x2965,0x3186,0x3186,0x3165,0x39a6,0x31a6,0x39c7,0x31a6,0x3186,0x2924,0x2924,0x2124,0x2104,0x18c3,0x10a2,0x18e3,0x18e3,0x2104,0x3186,0x39e8,0x39e8,0x2966,0x2124,0x3a08,0x4a49,0x4a49,0x4249,0x4a69,0x4228,0x4a6a,0x52aa,0x4a49,0x4a89,0x52aa,0x4a69,0x4249,0x4228,0x4269,0x4249,0x4249,0x4229,0x4228,0x528a,0x4228,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4248,0x3a28,0x4228,0x4228,0x39e8,0x4249,0x4a6a,0x4208,0x4229,0x3a08,0x39e8,0x3a08,0x4208,0x4a69,0x4249,0x3a09,0x3a09,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x31c7,0x4a69,0x3a07,0x31a6,0x39e7,0x3a08,0x3a08,0x39e7,0x39e7,0x4a6a,0x4229,0x4208,0x39c7,0x4208,0x3a08,0x4a49,0x3a08,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x41e8,0x31a7,0x4208,0x4a49,0x3a08,0x4249,0x4228,0x31c6,0x4228,0x4228,0x4a69,0x31c7,0x3a08,0x4249,0x39e8,0x4209,0x39e8,0x39e7,0x4228,0x39e7,0x4229,0x39c7,0x4208,0x4229,0x4249,0x4a89,0x4228,0x3a08,0x31a7,0x3a08,0x31a7,0x31c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c6,0x31c7,0x3a08,0x31c6, +0x2986,0x3186,0x31a7,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x31a7,0x31c7,0x39e8,0x31c7,0x3a08,0x4229,0x31c7,0x31a7,0x31c7,0x4a69,0x39e8,0x31e8,0x3a08,0x4249,0x39e8,0x3a08,0x39e8,0x39c8,0x31a7,0x4229,0x528a,0x3a08,0x3a08,0x39e7,0x31c7,0x3a08,0x39e8,0x31c7,0x31c7,0x31e7,0x4228,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e8,0x4228,0x4249,0x4249,0x4a8a,0x4269,0x3a08,0x3a28,0x4249,0x4249,0x4249,0x4208,0x4a49,0x3a08,0x4a69,0x4248,0x4228,0x4a49,0x4a6a,0x4a49,0x4a49,0x4249,0x3a08,0x3a08,0x4209,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4208,0x4208,0x39e8,0x4208,0x4a6a,0x4228,0x3a28,0x4249,0x4a69,0x4228,0x4228,0x4a8a,0x4249,0x3a29,0x4229,0x4249,0x4229,0x4249,0x3a28,0x4269,0x3a08,0x3a08,0x39e8,0x4208,0x4249,0x4208,0x4229,0x4aaa,0x4a69,0x4249,0x4249,0x3208,0x4249,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4228,0x18a2,0x18c3,0x18a3,0x2926,0x83f1,0x73cf,0x634d,0x39c7,0x18c3,0x18c3,0x18c3,0x18c3,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2924,0x2124,0x2124,0x2944,0x2104,0x10a2,0x1082,0x2124,0x3185,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x3165,0x2104,0x18a2,0x1082,0x20e4,0x3166,0x3165,0x2925,0x2924,0x2965,0x2945,0x2945,0x2104,0x20e4,0x2104,0x2924,0x2124,0x2945,0x2965,0x3165,0x2944,0x2104,0x20e4,0x2124,0x2124,0x2124,0x18c3,0x1082,0x18e3,0x20e3,0x2104,0x3186,0x39c7,0x31a7,0x2945,0x2924,0x4a69,0x528a,0x41e7,0x4248,0x4228,0x4249,0x4249,0x4a6a,0x4a69,0x4249,0x4a49,0x4a69,0x4249,0x39e8,0x4249,0x4a69,0x4a49,0x4a69,0x4a8a,0x4228,0x4228,0x4a69,0x3a08,0x4229,0x4208,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x4249,0x3a08,0x4229,0x4208,0x4208,0x4228,0x4228,0x4248,0x3a08,0x31e7,0x4208,0x4229,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4229,0x39c7,0x4208,0x39e7,0x4a69,0x3a08,0x39e7,0x3a07,0x4228,0x4229,0x39c8,0x4208,0x4208,0x39c7,0x31c7,0x4249,0x39e7,0x3a08,0x39e7,0x4a69,0x4228,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x3a08,0x3a07,0x31c6,0x39e7,0x4249,0x4a69,0x31c7,0x31c7,0x3a08,0x39e8,0x4249,0x39e8,0x3a08,0x4228,0x39e7,0x3186,0x4208,0x4228,0x4229,0x4229,0x4208,0x4228,0x39e8,0x39c7,0x3a08,0x39e7,0x31e7,0x31c7,0x39e7,0x31a6,0x31a6,0x3a07,0x39e7,0x4208,0x39e7, +0x2987,0x2966,0x39e7,0x31a6,0x2145,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x31e7,0x39e8,0x3a08,0x4249,0x39e8,0x31c7,0x39e8,0x31e8,0x39e8,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x4249,0x3a08,0x3a07,0x3a28,0x39e7,0x39c7,0x31c7,0x31a7,0x31e8,0x3a28,0x39e7,0x31c7,0x39e7,0x3a28,0x4249,0x4249,0x3a08,0x39e7,0x3a28,0x4a69,0x4228,0x4249,0x3a08,0x3a08,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x4a6a,0x4228,0x4249,0x4228,0x4208,0x4a49,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4229,0x4a49,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4269,0x4249,0x4a49,0x4249,0x4a89,0x4a69,0x3a08,0x4248,0x4a69,0x4228,0x4249,0x4a69,0x31c7,0x4249,0x4269,0x3a28,0x428a,0x4249,0x4229,0x3a08,0x4a69,0x4a69,0x4229,0x4a69,0x4a29,0x4229,0x4a6a,0x4229,0x426a,0x4229,0x4249,0x4a49,0x5acb,0x4a6a,0x4a6a,0x18c3,0x18a2,0x18c3,0x2125,0x738f,0x738e,0x5b0c,0x39c6,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x20e3,0x10a2,0x1082,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c2,0x18c3,0x18a3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x2104,0x18a2,0x1082,0x18e3,0x2925,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x18c3,0x10a2,0x20e4,0x20e4,0x2104,0x2966,0x31a7,0x3187,0x2945,0x2945,0x4a69,0x4a49,0x528a,0x5aab,0x52aa,0x4269,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4a6a,0x52cb,0x4a8a,0x4269,0x4249,0x4269,0x4a8a,0x4249,0x3a28,0x3a28,0x4228,0x3a08,0x4249,0x4249,0x4248,0x4a49,0x4228,0x4228,0x39c7,0x39e8,0x4229,0x31c7,0x4228,0x4249,0x3a08,0x31e7,0x3a07,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x3a08,0x3a08,0x4a49,0x3a08,0x3a08,0x4228,0x3a08,0x4229,0x39e7,0x39c7,0x39e8,0x4a49,0x39e7,0x4a69,0x4228,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x41e8,0x39e7,0x4a69,0x4a69,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3a08,0x3a07,0x3a08,0x39e7,0x31c7,0x3a08,0x39e7,0x4228,0x39e7,0x3a07,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4a8a,0x4269,0x31a6,0x3a08,0x39e7,0x31c7,0x39e8,0x41e8,0x4229,0x31a7,0x3a08,0x39e8,0x4228,0x4208,0x31c7,0x31e7,0x4228,0x4248,0x31e7,0x4228,0x3a07,0x39c7,0x3186,0x3186,0x3a08, +0x31a7,0x2986,0x31a7,0x2965,0x31c7,0x31c7,0x29a6,0x2986,0x39c7,0x39e8,0x2986,0x31c7,0x31c7,0x31a7,0x3a08,0x31e7,0x31c7,0x3187,0x31a7,0x31a7,0x4208,0x4249,0x31c6,0x4229,0x4208,0x39c7,0x39e7,0x39c7,0x3a08,0x39e8,0x3a08,0x4228,0x3a08,0x39e7,0x39c7,0x31c7,0x3a29,0x3a28,0x3a07,0x3a08,0x31c7,0x3a08,0x31e8,0x3a08,0x52ab,0x3a28,0x3a08,0x4249,0x4249,0x3a28,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x4249,0x4228,0x4249,0x4229,0x4229,0x3a09,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4a49,0x4a6a,0x4228,0x4269,0x4249,0x39e8,0x4249,0x4228,0x4228,0x39e8,0x4228,0x4249,0x39e8,0x4a8a,0x5b0c,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x4249,0x4228,0x4a69,0x4a69,0x39e7,0x4a8a,0x4a8a,0x3a08,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x52aa,0x4249,0x4208,0x4a8a,0x4229,0x4228,0x4a8a,0x52ab,0x4249,0x4228,0x18a3,0x18a2,0x18e3,0x2105,0x632e,0x632d,0x5acb,0x31a6,0x18c3,0x18c3,0x18a3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x18a2,0x2104,0x20e4,0x18e3,0x2945,0x3186,0x3166,0x2945,0x2965,0x4a49,0x4a49,0x52aa,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a69,0x4249,0x4a69,0x4a69,0x4269,0x4a8a,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4249,0x3a28,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x39e7,0x4208,0x4208,0x3a08,0x4228,0x4a49,0x3a08,0x4249,0x39c7,0x39c7,0x4208,0x31c7,0x4249,0x4249,0x3a08,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4249,0x3a08,0x3a08,0x4228,0x4a69,0x4228,0x3a08,0x4249,0x4248,0x3a08,0x3a08,0x31c7,0x4208,0x4229,0x4269,0x3a28,0x4228,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x2986,0x4229,0x4228,0x39e8,0x39e8,0x4208,0x4208,0x39e7,0x4249,0x3a07,0x39c7,0x4208,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39e7,0x4208,0x29a6,0x31c7,0x39e8,0x3a08,0x31a6,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x3a07,0x31a6,0x31a6,0x2966,0x31a6,0x3186, +0x2966,0x2966,0x31a6,0x31c7,0x31e7,0x31e7,0x3a08,0x3186,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x31c7,0x39e8,0x3a08,0x4a29,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4208,0x39c7,0x39c7,0x39e7,0x39e8,0x4229,0x4249,0x3a08,0x31c6,0x4228,0x4249,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x31e8,0x4a8a,0x4229,0x31e8,0x4a6a,0x4a6a,0x31e7,0x4249,0x4269,0x3a28,0x4249,0x3a28,0x4228,0x4249,0x4249,0x4229,0x4229,0x4229,0x4228,0x4228,0x4229,0x4269,0x4a8a,0x3a08,0x4229,0x4249,0x3a08,0x39e7,0x4228,0x4a69,0x4269,0x4aaa,0x4228,0x4228,0x4228,0x4209,0x4208,0x4228,0x4249,0x4229,0x4249,0x4a69,0x4228,0x3a08,0x3a29,0x4a6a,0x4229,0x4a49,0x52aa,0x528a,0x4228,0x39e7,0x3a08,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4208,0x4228,0x4a8a,0x4a49,0x4a8a,0x4249,0x4249,0x4208,0x10a2,0x10a2,0x18c3,0x2104,0x5aec,0x630c,0x528b,0x31a6,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x20e3,0x18e3,0x2125,0x2965,0x2945,0x2124,0x3166,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4249,0x52aa,0x4aaa,0x4a69,0x4269,0x4aaa,0x4a8a,0x4249,0x4a49,0x4208,0x4a69,0x4a69,0x39c7,0x4a8a,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4248,0x3a28,0x4228,0x5289,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4228,0x4a69,0x4208,0x4228,0x3a08,0x4228,0x3a08,0x4a69,0x39e7,0x3a07,0x39e8,0x39c7,0x39e7,0x4228,0x3a08,0x4249,0x4228,0x39e8,0x31c7,0x39e7,0x39c7,0x4228,0x4a49,0x39c7,0x4a49,0x39e8,0x39e7,0x3a28,0x39e7,0x4208,0x39e8,0x31e8,0x4228,0x4228,0x4248,0x39e7,0x31a6,0x4208,0x4249,0x4a49,0x39e7,0x4208,0x3a08,0x39c7,0x4a49,0x39c7,0x31a7,0x3a08,0x4229,0x31a6,0x39e7,0x3a08,0x39c7,0x4208,0x31a7,0x3187,0x31c7,0x31a6,0x3a07,0x31a6,0x39c7,0x39c7,0x2965, +0x31a7,0x39c7,0x4228,0x39c7,0x31a7,0x39e7,0x39e8,0x31a7,0x39e8,0x31a7,0x2986,0x39e8,0x3a08,0x4249,0x4249,0x39e8,0x31a6,0x31e8,0x31c7,0x39c7,0x4229,0x4208,0x3a08,0x31c8,0x31e8,0x31e7,0x39e7,0x4228,0x3a08,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e7,0x4208,0x39e8,0x39e7,0x39e7,0x3a28,0x4249,0x4249,0x39e8,0x3a08,0x4229,0x4229,0x3a08,0x4a4a,0x3a08,0x4249,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x4249,0x4a8a,0x52aa,0x4a6a,0x4229,0x3a08,0x39e7,0x4a8a,0x3a28,0x4269,0x4a8a,0x4208,0x4229,0x4269,0x3a08,0x4249,0x4a49,0x4248,0x4269,0x4a69,0x39e7,0x39e7,0x4229,0x4a6a,0x3a08,0x3a08,0x4229,0x52ab,0x4249,0x4a69,0x4a6a,0x4249,0x4249,0x526a,0x4a8a,0x4249,0x4249,0x4248,0x3a08,0x3a08,0x4269,0x4249,0x4229,0x4a49,0x52aa,0x4a8a,0x4228,0x4269,0x4249,0x4249,0x39e8,0x4208,0x4208,0x4a49,0x4a69,0x4229,0x4228,0x4249,0x4a6a,0x4208,0x10a2,0x10a2,0x18c3,0x18e4,0x52ac,0x5aec,0x4a6a,0x3186,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x20e3,0x18e3,0x2124,0x2945,0x2925,0x2104,0x2945,0x4a69,0x4a8a,0x4a69,0x4a49,0x4a49,0x528a,0x4249,0x4249,0x4269,0x4249,0x4a6a,0x4249,0x4229,0x4228,0x4228,0x4208,0x528a,0x528a,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x4a49,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4a8a,0x39e8,0x4249,0x4208,0x4228,0x39e7,0x39c7,0x39e7,0x4228,0x3a28,0x31e7,0x4228,0x39e7,0x3a08,0x4249,0x4229,0x3a07,0x39e7,0x39e7,0x4248,0x4a69,0x39e7,0x39e8,0x4249,0x39e7,0x3a08,0x4249,0x3a08,0x4228,0x3a08,0x39e7,0x31c6,0x39e7,0x3a28,0x4249,0x4208,0x39e7,0x3a08,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x3a08,0x3a07,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x3187,0x39e8,0x31c7,0x4229,0x39c7,0x3a07,0x4208,0x3a08,0x3a07,0x4229,0x4229,0x39e8,0x39e8,0x39e8,0x39c7,0x4229,0x4249,0x39e8,0x39e7,0x39e8,0x31a6,0x31e7,0x39e7,0x39e7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x4a49,0x39e7,0x31a6,0x39c7,0x31a6, +0x3a08,0x39e8,0x2986,0x31a6,0x31a6,0x39c7,0x31a7,0x39c7,0x3a08,0x31c7,0x31a7,0x31a7,0x31c7,0x4208,0x4229,0x31e7,0x31c7,0x3a08,0x29c7,0x31c7,0x39e8,0x39a7,0x31c8,0x31e8,0x31e7,0x3a28,0x4249,0x3a07,0x3a28,0x3a07,0x4207,0x4228,0x39e7,0x4249,0x4a49,0x4208,0x39e7,0x39e8,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x3a29,0x4228,0x4269,0x4249,0x4229,0x4a49,0x4228,0x5b0c,0x4a8a,0x3a08,0x3a28,0x52ab,0x4a49,0x4a49,0x4a69,0x4248,0x3a28,0x4269,0x4249,0x3a28,0x4249,0x4a49,0x41e8,0x4208,0x4229,0x4228,0x4a49,0x4228,0x4a69,0x4a6a,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4a6a,0x4a6a,0x528a,0x528a,0x4a49,0x4249,0x52cb,0x4a8a,0x4249,0x4228,0x4248,0x4248,0x4a8a,0x4228,0x4249,0x4a89,0x4228,0x4228,0x4208,0x4208,0x52ab,0x4208,0x4249,0x4249,0x4229,0x4249,0x4208,0x4229,0x4a49,0x4a69,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x18c3,0x10a2,0x18c3,0x20e4,0x528b,0x5acb,0x4a49,0x3185,0x18c3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x2124,0x20e3,0x18c3,0x2104,0x2125,0x2104,0x20e4,0x2124,0x4249,0x4a69,0x52aa,0x4229,0x4a6a,0x4a49,0x4249,0x4249,0x4229,0x4a69,0x4a8a,0x4a69,0x4a49,0x52cb,0x4a69,0x4a89,0x4248,0x4aaa,0x4248,0x39e7,0x4229,0x4228,0x3a08,0x4228,0x4228,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a69,0x4249,0x39e7,0x4228,0x4a8a,0x4a89,0x4228,0x3a07,0x3a08,0x31c7,0x4208,0x4a6a,0x3a08,0x39e7,0x3a08,0x3a08,0x528a,0x4a49,0x39e8,0x3a08,0x4229,0x39c7,0x39c7,0x4208,0x4229,0x4228,0x3a08,0x4249,0x31c6,0x3a08,0x31c7,0x52ab,0x4208,0x39e8,0x4208,0x31a6,0x3a08,0x3a08,0x39e7,0x4229,0x3a08,0x4228,0x31a6,0x31a6,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x4228,0x4208,0x4208,0x4208,0x3a08,0x31c7,0x3a08,0x4228,0x4229,0x39c7,0x4208,0x31a7,0x39e8,0x4249,0x3a08,0x31a7,0x31a7,0x31c7,0x39e7,0x31a6,0x31c7,0x39e7,0x4208,0x3a08,0x39e7,0x39e8,0x31a6,0x31a6,0x3186,0x2945,0x31c6, +0x39c7,0x31c6,0x2145,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c8,0x31a7,0x2986,0x2986,0x39e8,0x3a08,0x31c7,0x3a08,0x3208,0x29a6,0x31a7,0x39c7,0x39e8,0x31c7,0x4208,0x4249,0x31e8,0x29a6,0x31c7,0x39e8,0x4229,0x4228,0x4249,0x4a69,0x39c7,0x3a07,0x4228,0x3a28,0x3a28,0x31e7,0x4249,0x4269,0x4249,0x3a08,0x3a28,0x4249,0x4a8a,0x3a08,0x4a49,0x4a49,0x4228,0x52aa,0x4249,0x3a08,0x4249,0x4249,0x4a69,0x5289,0x4a69,0x39e7,0x4228,0x4a69,0x4249,0x52cb,0x4249,0x4249,0x4229,0x4249,0x4228,0x4a89,0x4248,0x4a69,0x4249,0x4249,0x4a8a,0x52cb,0x3a08,0x4248,0x4249,0x4249,0x4a69,0x52ab,0x4a8a,0x4a8a,0x52ab,0x4a49,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4aaa,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4249,0x3a08,0x4a8a,0x4a8a,0x4a69,0x39e7,0x4249,0x4229,0x528a,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x3a08,0x4a69,0x4228,0x4228,0x18c3,0x10a2,0x18e3,0x18e4,0x4a4a,0x528a,0x4249,0x3186,0x18c3,0x18e3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x18e3,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x2104,0x4228,0x4a69,0x52aa,0x4248,0x4a49,0x4a49,0x4249,0x4a69,0x4269,0x4a69,0x52aa,0x52ab,0x4249,0x4a6a,0x4a8a,0x4269,0x4a89,0x4248,0x4228,0x39e7,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x3a07,0x4249,0x39c7,0x39e7,0x4208,0x4a49,0x4208,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4229,0x39e8,0x4a6a,0x4228,0x3a08,0x39e7,0x4208,0x4a49,0x4208,0x4248,0x4249,0x39e7,0x31e7,0x3a08,0x4249,0x4208,0x4208,0x3a08,0x4228,0x3a07,0x3a08,0x4249,0x39c7,0x4a49,0x4228,0x39c7,0x4208,0x31e7,0x39e8,0x39e7,0x3a08,0x3a28,0x31e7,0x39c7,0x31a6,0x4249,0x3a08,0x31c7,0x39e7,0x31c7,0x31c7,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x31c7,0x3a07,0x4228,0x4208,0x3a08,0x39e8,0x4208,0x4a6a,0x31a7,0x39c7,0x39e8,0x3a08,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x31a6,0x31a6, +0x2965,0x2986,0x2986,0x31c7,0x3a08,0x31e7,0x31e7,0x31a6,0x39c7,0x39c7,0x31a7,0x31c7,0x31e8,0x31e8,0x31a7,0x3a08,0x39c7,0x4228,0x4229,0x3a08,0x31e7,0x31a7,0x39c7,0x31a7,0x4208,0x31a7,0x31a7,0x31c7,0x4a6a,0x3a08,0x39e8,0x39e8,0x4249,0x4209,0x3a07,0x4248,0x4249,0x3a28,0x4249,0x3a08,0x39c7,0x4208,0x41e8,0x4a49,0x4a49,0x5b0b,0x4a89,0x3a07,0x3a08,0x4a69,0x528a,0x39e7,0x4229,0x4a49,0x4a49,0x4a49,0x528a,0x4249,0x5acb,0x4229,0x4208,0x4a69,0x4229,0x4a69,0x4249,0x4229,0x4a69,0x4228,0x4a8a,0x4248,0x4a69,0x4a69,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4269,0x4249,0x4a69,0x4a8a,0x3a28,0x4249,0x4a6a,0x4a49,0x5acb,0x52aa,0x5acb,0x630c,0x4a69,0x4229,0x4a6a,0x4a69,0x4249,0x4269,0x4249,0x4249,0x3a08,0x4249,0x428a,0x3a08,0x4249,0x3a08,0x4208,0x4a69,0x4a49,0x4a49,0x4249,0x4a8a,0x426a,0x3a08,0x3a08,0x3a08,0x4249,0x4248,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x4229,0x4a6a,0x4229,0x3186,0x18c3,0x20e3,0x18c3,0x18c2,0x18c2,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x2104,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a49,0x4249,0x4a69,0x4aaa,0x4229,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4249,0x4249,0x528a,0x4a49,0x3a08,0x4229,0x4228,0x528a,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x39c7,0x4a6a,0x31e7,0x3a08,0x3a08,0x4208,0x39e7,0x39e7,0x3a07,0x4a69,0x52aa,0x3a07,0x31a7,0x4249,0x4228,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x3a08,0x4228,0x31c7,0x4248,0x4249,0x4249,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x31a7,0x4249,0x4248,0x31c7,0x3a08,0x3a08,0x4248,0x39c7,0x31e7,0x31c6,0x3a07,0x31a6,0x31c7,0x3a08,0x31a6,0x4228,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x4249,0x4208,0x39e7,0x39c7,0x4207,0x4228,0x4229,0x4209,0x39e8,0x3186,0x39c7,0x3a08,0x3207,0x29a6,0x31c7,0x31a6,0x31a7,0x31c7,0x31e7,0x39e7,0x39e7,0x4228,0x4208,0x31a6,0x39e7,0x39e7, +0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x39c7,0x31a7,0x31a6,0x31c7,0x39e8,0x3a28,0x3208,0x2985,0x31c7,0x31c7,0x3a08,0x31a7,0x3a08,0x39e7,0x3a07,0x31c6,0x4208,0x4208,0x39e7,0x3a08,0x3a28,0x4249,0x3a09,0x4229,0x4208,0x4229,0x4a49,0x4228,0x4228,0x4a8a,0x4249,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x4229,0x4229,0x4a49,0x4228,0x4229,0x4249,0x4228,0x4a8a,0x4a6a,0x4228,0x528a,0x4229,0x4a69,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x52aa,0x4a6a,0x4a8a,0x39e7,0x4a8a,0x4a49,0x4a69,0x4a6a,0x4249,0x4a8a,0x4a6a,0x52cb,0x4229,0x4a49,0x4aaa,0x4a8a,0x52aa,0x4a49,0x632c,0x5aec,0x4a6a,0x4249,0x4249,0x4249,0x4a8a,0x4a8a,0x4249,0x4208,0x4228,0x4229,0x4249,0x4208,0x4a49,0x4228,0x4a69,0x4269,0x4a8a,0x4a6a,0x4a49,0x4a8a,0x4a69,0x3a08,0x3a08,0x4269,0x4269,0x4a8a,0x4229,0x18a2,0x10a2,0x20e4,0x18c3,0x4208,0x4a29,0x4208,0x3186,0x18e3,0x20e3,0x18e3,0x18c3,0x18e3,0x2104,0x20e3,0x20e3,0x20e3,0x20e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x18a2,0x18a2,0x18c2,0x18a2,0x18c3,0x18c2,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2103,0x20e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x2103,0x18c3,0x10a2,0x18a2,0x2104,0x1082,0x20e4,0x2104,0x18e4,0x18e3,0x18e4,0x2124,0x3a08,0x4a8a,0x4a49,0x4a89,0x5acb,0x528a,0x4228,0x4a8a,0x52cb,0x4249,0x3a08,0x4a49,0x4a8a,0x528a,0x4249,0x4249,0x4a69,0x4228,0x4228,0x528a,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x4a49,0x4a8a,0x39e7,0x4228,0x3a08,0x39e8,0x4228,0x4229,0x3a08,0x31e7,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4269,0x4228,0x4228,0x39e7,0x4a69,0x4249,0x4228,0x3a07,0x4208,0x4248,0x4248,0x4249,0x4228,0x4207,0x4a48,0x4208,0x4208,0x4208,0x4228,0x4228,0x4249,0x4208,0x39e7,0x4a49,0x4208,0x39e8,0x4228,0x3a08,0x4228,0x39e7,0x4249,0x3a28,0x39e7,0x39e7,0x39c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31c7,0x31a6,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x31a7,0x3a08,0x31c7,0x39e7,0x3a08,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x3a07,0x39c7,0x31a6,0x39e7,0x3a08, +0x31a6,0x29a6,0x31c6,0x31a6,0x2966,0x29a6,0x29a6,0x31c7,0x31a7,0x39c7,0x4228,0x31c7,0x39e8,0x31e7,0x31c6,0x29a6,0x31a7,0x4208,0x39e7,0x39c7,0x4228,0x4248,0x4228,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x4209,0x3a08,0x4249,0x4249,0x3a08,0x31c7,0x31e7,0x4269,0x3a29,0x3a08,0x3a08,0x39e8,0x4a8a,0x4228,0x4228,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a6a,0x4248,0x4a49,0x4249,0x4a69,0x3a29,0x4a8a,0x52aa,0x4a69,0x4228,0x4229,0x4a49,0x4229,0x528a,0x4a49,0x4228,0x528a,0x52aa,0x4228,0x4a6a,0x52cb,0x4a8a,0x4208,0x52ab,0x5aeb,0x4a89,0x4a69,0x4229,0x52ab,0x4208,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4229,0x4249,0x4a69,0x4228,0x4a49,0x4229,0x4a69,0x52aa,0x4a69,0x4a8a,0x4a8a,0x3a09,0x4a6a,0x4229,0x4a69,0x4a49,0x3a28,0x4229,0x426a,0x4aab,0x4a6a,0x18a3,0x10a2,0x2104,0x18c3,0x39e8,0x4209,0x39e8,0x31a6,0x2103,0x18e3,0x18e3,0x18c3,0x2104,0x2945,0x2945,0x2944,0x2944,0x3165,0x2965,0x3165,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2945,0x2944,0x2103,0x2124,0x2924,0x2924,0x2124,0x18c3,0x1082,0x1082,0x20e3,0x2965,0x3185,0x2965,0x2965,0x3185,0x3165,0x3186,0x3165,0x2965,0x2965,0x2944,0x2965,0x2965,0x2944,0x2924,0x2124,0x2924,0x2924,0x2944,0x2924,0x18c3,0x1082,0x1082,0x18c3,0x2965,0x39c6,0x31a6,0x3165,0x2965,0x3165,0x3185,0x3185,0x3185,0x2945,0x2965,0x2945,0x2965,0x3165,0x2945,0x3165,0x2945,0x2924,0x2945,0x3165,0x20e3,0x10a2,0x18a2,0x20e3,0x10a2,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x2945,0x4248,0x4a69,0x4a8a,0x4a49,0x4a8a,0x4a49,0x4208,0x4a69,0x4a89,0x3a28,0x4249,0x4249,0x4a69,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4a69,0x4a6a,0x4a49,0x52ab,0x4228,0x39e7,0x39e7,0x4228,0x4249,0x3a08,0x4228,0x3a07,0x4249,0x4228,0x3a08,0x4a89,0x4228,0x4228,0x4a69,0x4a69,0x3a08,0x39e7,0x4228,0x3a08,0x3a08,0x3a07,0x4a49,0x4a49,0x4228,0x39e7,0x4a49,0x4208,0x4208,0x4249,0x4a69,0x4a69,0x4228,0x4208,0x39e8,0x39e8,0x4a49,0x4228,0x39e7,0x4207,0x4208,0x4249,0x4229,0x3a08,0x3a08,0x3a08,0x39e8,0x31a7,0x39e8,0x39e7,0x39e7,0x39c7,0x39e8,0x31a7,0x39e7,0x39c7,0x39e7,0x31a6,0x31e7,0x3a08,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x3a08,0x39e7,0x4208,0x39e7,0x4208,0x4208,0x31a6,0x31c7,0x31e7,0x4228,0x39e7,0x39c7,0x39c7,0x31c7,0x31c7,0x3a08,0x4208,0x4208,0x39e7,0x3a08,0x31c7,0x31a6,0x31c7,0x39e7,0x31a6,0x31c6, +0x31c6,0x3a08,0x2986,0x2165,0x2145,0x31c7,0x31e7,0x3a08,0x39e7,0x39e8,0x31c7,0x3186,0x39c7,0x4208,0x39e7,0x3186,0x39c7,0x3a08,0x3a29,0x31e7,0x31c7,0x31a6,0x39e7,0x3a08,0x4228,0x39e8,0x31c7,0x39e8,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4228,0x424a,0x3a08,0x3a08,0x4a6a,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x39e8,0x4208,0x4229,0x41e8,0x4208,0x4229,0x4249,0x4229,0x4208,0x4249,0x39e8,0x4208,0x4a49,0x4208,0x4228,0x4269,0x4269,0x4249,0x4249,0x4249,0x52cb,0x4a8a,0x4249,0x4249,0x4a8a,0x3a28,0x4269,0x52aa,0x4a69,0x52ab,0x52aa,0x4a8a,0x4a89,0x4249,0x4249,0x52cb,0x5acb,0x5aec,0x52eb,0x4aaa,0x52aa,0x52cb,0x52ab,0x4208,0x4a6a,0x52aa,0x4229,0x4229,0x4229,0x4269,0x4249,0x4a89,0x4a8a,0x4228,0x4aaa,0x4a8a,0x4228,0x4a69,0x4229,0x4249,0x4249,0x3a08,0x4229,0x4249,0x4229,0x4249,0x426a,0x4a8a,0x4a69,0x4249,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x39c7,0x41e8,0x39e7,0x31a6,0x2103,0x18c3,0x18e3,0x18c3,0x2104,0x2124,0x2124,0x18e3,0x2924,0x3165,0x2965,0x2945,0x2945,0x2945,0x2944,0x2965,0x2944,0x2945,0x2945,0x2965,0x2944,0x2924,0x20e3,0x2945,0x2124,0x18c3,0x1082,0x1082,0x18e3,0x2945,0x2965,0x2103,0x2944,0x3185,0x2965,0x3186,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2924,0x2103,0x2945,0x2944,0x18c3,0x1082,0x1082,0x18c3,0x2945,0x39c6,0x2945,0x2944,0x3165,0x3165,0x3185,0x39a6,0x3186,0x2965,0x3185,0x3186,0x3186,0x39a6,0x3186,0x3186,0x3185,0x2104,0x2945,0x2945,0x20e3,0x10a2,0x10a2,0x18e3,0x18a2,0x2945,0x2124,0x18e3,0x18e3,0x18c3,0x2945,0x4a8a,0x4228,0x4a69,0x4a6a,0x528a,0x4a49,0x4228,0x4a69,0x4228,0x3a28,0x4269,0x3a28,0x4228,0x4a49,0x39e8,0x4249,0x4a89,0x4a89,0x4228,0x4a49,0x4249,0x4229,0x3a28,0x3a08,0x4228,0x4249,0x31c7,0x3a28,0x3a28,0x3a28,0x3a08,0x4228,0x52aa,0x4a89,0x3a07,0x4a69,0x4a49,0x3a07,0x3a08,0x39c7,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x3a07,0x4248,0x4a49,0x4229,0x4a49,0x39e7,0x4a89,0x4a69,0x3a08,0x4a6a,0x4229,0x4208,0x39e8,0x3a07,0x39c6,0x4228,0x4228,0x4249,0x4249,0x4249,0x4228,0x4208,0x4a49,0x4229,0x39c7,0x31a7,0x39e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x3a08,0x39e7,0x31c7,0x39e7,0x3a07,0x39e7,0x4a69,0x39e7,0x31c6,0x3a08,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x39e7,0x4249,0x39e8,0x39e8,0x39e7,0x31c7,0x39c7,0x31a6,0x39e7,0x4228,0x31a6,0x39e7,0x4a69,0x39e7,0x39e7,0x31c7,0x2986,0x39e7,0x31c7,0x39e7, +0x31c7,0x3186,0x2965,0x31c6,0x31a6,0x31c7,0x39e7,0x39e7,0x39e8,0x31a7,0x31a7,0x31a7,0x39c7,0x4228,0x39e8,0x31c6,0x3a07,0x3a28,0x29a7,0x31e8,0x31c7,0x3a08,0x4228,0x3a08,0x3a28,0x3a08,0x31c7,0x31e7,0x3a08,0x3a08,0x4229,0x39e8,0x52ab,0x4269,0x3a29,0x3a08,0x4229,0x4a4a,0x39e8,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x31e7,0x4269,0x4249,0x3a08,0x5acb,0x4a49,0x31e7,0x3a08,0x4229,0x4208,0x4a49,0x4a8a,0x4249,0x4249,0x4249,0x4229,0x4a8a,0x5b0c,0x4a69,0x528a,0x4a6a,0x4a69,0x4a69,0x4aaa,0x4a6a,0x4a8a,0x4aaa,0x4a8a,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x52cb,0x52ec,0x4a8a,0x4249,0x4a6a,0x4a8a,0x4229,0x424a,0x424a,0x4a4a,0x4229,0x4248,0x4a89,0x4a69,0x52aa,0x4a6a,0x4aaa,0x4249,0x3a08,0x4a49,0x52aa,0x528a,0x4a69,0x4a49,0x4a49,0x4249,0x4228,0x4a49,0x4229,0x528a,0x528a,0x4a8a,0x18c3,0x1082,0x18c3,0x18c3,0x31a7,0x39c7,0x39c7,0x3185,0x18e3,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x1082,0x0861,0x2945,0x2945,0x2944,0x2924,0x2124,0x2124,0x2924,0x2945,0x2104,0x2124,0x2924,0x2944,0x2945,0x2965,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x18c3,0x18e3,0x18c3,0x1082,0x2124,0x2945,0x2924,0x2945,0x2924,0x2124,0x2124,0x2924,0x2924,0x2924,0x2944,0x2924,0x2945,0x2945,0x18c3,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x2104,0x20e3,0x18c3,0x2944,0x2944,0x2944,0x2945,0x2945,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x3165,0x3186,0x18a2,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2945,0x20e4,0x18e4,0x18e3,0x18c3,0x2925,0x4229,0x4208,0x4208,0x4a49,0x4a6a,0x4a8a,0x3a08,0x4a69,0x4228,0x4228,0x4a89,0x4a69,0x4a69,0x4249,0x3a08,0x4228,0x4a49,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x4a49,0x3a08,0x4229,0x52aa,0x4208,0x4a49,0x4a69,0x4228,0x31c7,0x4229,0x528a,0x39e8,0x3a08,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x4228,0x4a8a,0x4228,0x3a08,0x4228,0x4a69,0x3a08,0x4249,0x4228,0x4248,0x31c7,0x4228,0x4249,0x4249,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x39e7,0x3a08,0x4228,0x3a08,0x4249,0x4a69,0x4248,0x4249,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x4249,0x4208,0x39c7,0x39e7,0x31a7,0x39c7,0x39e7,0x39e7,0x4229,0x4228,0x3a08,0x31c7,0x3a08,0x31e7,0x31c7,0x31e8,0x31e7,0x3a28,0x3a08,0x39e8,0x31a7,0x39a7,0x3186,0x31c7,0x3a08,0x3186,0x31c7,0x31c7,0x31a7,0x39e8,0x4209,0x3187,0x39c7,0x3a07,0x2985,0x39e7,0x31a6,0x3186, +0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x2986,0x31c7,0x31a7,0x2986,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4a89,0x3a08,0x31c7,0x3a29,0x3a08,0x4229,0x3a08,0x39e8,0x31c8,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x39e8,0x39c7,0x4208,0x3a08,0x39e8,0x4228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x3a08,0x4228,0x52ab,0x528a,0x4229,0x3a08,0x4a69,0x4a8a,0x3a08,0x528a,0x4a6a,0x3a28,0x3a08,0x4a49,0x4228,0x4208,0x4249,0x4228,0x4229,0x4229,0x4228,0x4249,0x5acb,0x4228,0x4a49,0x5aeb,0x4a8a,0x52cb,0x4269,0x3a08,0x52cb,0x4a8a,0x4a6a,0x4249,0x4a69,0x52cb,0x4249,0x4a8a,0x426a,0x426a,0x52ab,0x4a8a,0x4aab,0x4269,0x4a69,0x4229,0x4a6a,0x4a6a,0x4249,0x3a08,0x4a8a,0x52ca,0x4249,0x4a8a,0x4249,0x4249,0x4a6a,0x4229,0x4a29,0x4a49,0x4a49,0x528a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x4a49,0x526a,0x4a6a,0x52ab,0x4a8a,0x18c3,0x10a2,0x18c3,0x18c3,0x3166,0x39c7,0x31a7,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2965,0x2965,0x2965,0x3185,0x3165,0x1082,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0841,0x10a2,0x2965,0x2945,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x3165,0x2103,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x10a2,0x0861,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2924,0x2944,0x2925,0x2924,0x2925,0x2925,0x2945,0x31a6,0x18c3,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2924,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x4249,0x4228,0x4a49,0x4208,0x4a8a,0x4a8a,0x4229,0x52aa,0x4a6a,0x4229,0x4249,0x4a49,0x4228,0x4249,0x4228,0x4249,0x4208,0x4228,0x4229,0x4229,0x3a08,0x4208,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a69,0x4228,0x4228,0x4249,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x3a08,0x4249,0x4248,0x4208,0x4228,0x4228,0x4249,0x4228,0x4249,0x4aaa,0x4a6a,0x31c6,0x4249,0x4249,0x3a08,0x3a08,0x39e7,0x31e7,0x4228,0x4208,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x39e8,0x39e8,0x4228,0x3a08,0x31a6,0x39c7,0x3a08,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x31c7,0x39e8,0x3a07,0x31e7,0x4208,0x4208,0x4208,0x39e8,0x39c7,0x29a6,0x39e7,0x31c7,0x31a6,0x4228,0x4229,0x39e8,0x4208,0x39e8,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a6, +0x39e7,0x3a08,0x31a7,0x2986,0x2986,0x2966,0x39e8,0x31c7,0x3a28,0x4248,0x4228,0x31a7,0x31c7,0x31c7,0x3a08,0x4228,0x39e7,0x31c7,0x31c7,0x31e7,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x4229,0x39e8,0x4a6a,0x4248,0x31c6,0x39e8,0x4229,0x31c7,0x39e7,0x4208,0x4208,0x4208,0x31c7,0x4228,0x4208,0x39e8,0x4228,0x3a08,0x4249,0x4a8a,0x4a69,0x4228,0x39e8,0x3a08,0x4249,0x39e7,0x4269,0x4249,0x4228,0x4a69,0x4a49,0x4229,0x3a28,0x4a69,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x52aa,0x4a69,0x4a49,0x52aa,0x4a8a,0x4a8a,0x52cb,0x3a28,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4aaa,0x4a6a,0x4a8a,0x4a69,0x52aa,0x52eb,0x4a8a,0x4249,0x4249,0x4a8a,0x4a69,0x4208,0x4a8a,0x4249,0x426a,0x4a8a,0x4a69,0x4208,0x4229,0x52aa,0x4228,0x4a69,0x4a49,0x4a8a,0x4249,0x4aaa,0x52aa,0x4a6a,0x4a49,0x4a69,0x4249,0x4a8a,0x52cb,0x18c3,0x10a2,0x18c3,0x18c3,0x2965,0x31a6,0x3186,0x2924,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x3165,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39a5,0x41e5,0x3185,0x2965,0x2965,0x2965,0x2965,0x3186,0x1061,0x0841,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2945,0x2965,0x3166,0x3185,0x41e5,0x41e5,0x39c5,0x3185,0x2965,0x2965,0x2965,0x2965,0x2124,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4205,0x41e5,0x39a5,0x2945,0x2945,0x2945,0x2965,0x3186,0x20e3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x18a3,0x18c3,0x18c3,0x18e3,0x18e3,0x4228,0x4248,0x4249,0x4a49,0x528a,0x4249,0x3a08,0x4a8a,0x4249,0x4a49,0x4228,0x4a49,0x3a08,0x4228,0x4248,0x4249,0x4249,0x3a28,0x4229,0x4228,0x3a07,0x4228,0x4a69,0x4a49,0x4208,0x39e8,0x4a49,0x4228,0x4229,0x4249,0x3a28,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4229,0x4208,0x4249,0x4249,0x4228,0x39e7,0x4a49,0x4208,0x4229,0x4a69,0x3a28,0x4a8a,0x4a49,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x39e7,0x3a08,0x4249,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4249,0x4228,0x4248,0x4248,0x39e7,0x4209,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x3a08,0x4228,0x31c7,0x4249,0x3a08,0x31c7,0x31a6,0x39e7,0x31e7,0x3207,0x31e7,0x3a08,0x4228,0x39c7,0x39e7,0x4249,0x31a6,0x39e7,0x4228,0x39c7,0x3a28,0x39e8,0x41e8,0x3a08,0x3a08,0x39e8,0x3a08,0x3a08,0x4228,0x4208,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6, +0x31c7,0x3a08,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31c7,0x39e7,0x39e7,0x4248,0x4248,0x39e7,0x31c7,0x39e7,0x31c7,0x39e7,0x3a08,0x31c7,0x39e7,0x4249,0x31c7,0x3a08,0x4a49,0x4208,0x4208,0x4228,0x4249,0x4229,0x3a09,0x3a07,0x4228,0x3a08,0x31c8,0x31c8,0x3a08,0x4229,0x39e8,0x4208,0x4208,0x39c7,0x4249,0x4228,0x4249,0x4249,0x31c7,0x39e7,0x39e7,0x3a08,0x4228,0x39e8,0x39c7,0x39c7,0x4a69,0x3a08,0x3a08,0x4228,0x4228,0x4249,0x4249,0x4a69,0x4229,0x4249,0x4a8a,0x4249,0x4289,0x4249,0x4229,0x4a6a,0x4a6a,0x4249,0x4228,0x4a8a,0x52cb,0x52aa,0x52ab,0x4a6a,0x52cb,0x4a69,0x4a8a,0x52eb,0x4a89,0x52aa,0x52cb,0x4a6a,0x3a08,0x52aa,0x5aeb,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4249,0x4249,0x4209,0x4a49,0x528a,0x528a,0x3a08,0x4249,0x528a,0x528a,0x4228,0x4a69,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x5b0c,0x52eb,0x4229,0x5acb,0x52aa,0x18c3,0x10a2,0x18c3,0x18c3,0x2945,0x3186,0x2966,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x62e5,0x7b65,0x39c4,0x2965,0x2965,0x2965,0x2965,0x3165,0x0861,0x0020,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3166,0x4205,0x7345,0x6b04,0x6b05,0x41c4,0x2965,0x2965,0x2965,0x3165,0x2944,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2965,0x3166,0x2965,0x2965,0x31a5,0x62c5,0x7b45,0x7b45,0x62c4,0x3165,0x2965,0x2965,0x3165,0x3166,0x18c3,0x0020,0x0841,0x1082,0x1082,0x10a2,0x18a3,0x18e3,0x20e4,0x10a2,0x18c3,0x18c3,0x20e3,0x18e3,0x4208,0x4a49,0x3a08,0x4249,0x4249,0x4249,0x4a6a,0x52aa,0x4269,0x4207,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4229,0x4249,0x4249,0x3a07,0x3a28,0x3a08,0x3a07,0x4248,0x4a49,0x39c7,0x4228,0x4a69,0x3a08,0x3a08,0x4a69,0x4249,0x4228,0x4a49,0x4a6a,0x3a08,0x31c7,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4a69,0x4228,0x4a49,0x4229,0x4a6a,0x3a08,0x4249,0x4a69,0x4229,0x4249,0x3a08,0x39c7,0x4208,0x4a8a,0x3a08,0x39e7,0x3a07,0x4249,0x3a08,0x4a89,0x4208,0x3a07,0x4228,0x4208,0x4a69,0x39e7,0x4249,0x3a08,0x39e7,0x31c7,0x29a6,0x3a08,0x39e7,0x39e8,0x4208,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3186,0x39e8,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x39c7,0x39e7,0x4208,0x39c7,0x39e7,0x4248,0x4249,0x3a08,0x3a08,0x39c7,0x4228,0x4229,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x4208,0x4208,0x31a7,0x39e7,0x31c6,0x31a6,0x2986,0x29a7, +0x2986,0x2986,0x31a7,0x31a7,0x39c7,0x39e7,0x31a6,0x31a7,0x31c7,0x4a69,0x3a07,0x39e7,0x39c7,0x31a7,0x4208,0x39c7,0x31c7,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x4269,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x4249,0x4a49,0x39c7,0x39c8,0x3a09,0x4249,0x3a28,0x4228,0x4208,0x4208,0x4a6a,0x3a08,0x39e8,0x4249,0x31a7,0x31c7,0x4249,0x4208,0x3a08,0x39e7,0x4208,0x4208,0x4249,0x4249,0x4a8a,0x4248,0x4248,0x4229,0x4a6a,0x4a6a,0x3a08,0x4249,0x4269,0x3a28,0x4a69,0x4aaa,0x3a28,0x4249,0x528a,0x52cb,0x4249,0x4a69,0x52aa,0x4a69,0x528a,0x4a69,0x52cb,0x4a8a,0x52ab,0x5b0c,0x5b0b,0x52aa,0x5acb,0x4a6a,0x4a8a,0x52ab,0x4229,0x4229,0x52ab,0x5aeb,0x4a69,0x4a69,0x4a69,0x52aa,0x4a69,0x4249,0x4229,0x3a08,0x4a49,0x4a6a,0x4a6a,0x4a6a,0x3a08,0x4208,0x4a8a,0x4a4a,0x39e8,0x4249,0x4a8a,0x4a6a,0x5acb,0x528b,0x424a,0x52aa,0x18c3,0x1082,0x18c3,0x10a2,0x2124,0x2966,0x2945,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x5245,0x8bc4,0x9c24,0x41e4,0x2965,0x2965,0x2945,0x2965,0x3186,0x1061,0x0020,0x1082,0x1082,0x1082,0x18a3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x5285,0x93e4,0x6ae4,0x62c5,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3166,0x3166,0x2965,0x2965,0x4205,0x9405,0x7b24,0x7b45,0x7b45,0x3985,0x2945,0x2945,0x2965,0x3165,0x18c3,0x0021,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x4229,0x4228,0x52cb,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a49,0x3a08,0x4228,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4248,0x4249,0x39e8,0x4249,0x4289,0x3a28,0x3a28,0x4249,0x4248,0x4208,0x4228,0x4a69,0x4229,0x39e8,0x4a6a,0x4249,0x4228,0x4248,0x4a69,0x4a8a,0x4a69,0x4a69,0x4249,0x39e8,0x39e8,0x39c7,0x41e8,0x4a49,0x4208,0x39e8,0x3a08,0x3a08,0x4aaa,0x4a8a,0x4229,0x39c8,0x3a08,0x4249,0x5aeb,0x3a07,0x3a28,0x3a28,0x4249,0x4269,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x3a28,0x39e8,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x39c7,0x39c7,0x39e7,0x4229,0x39e7,0x2986,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x4208,0x39e7,0x3a08,0x39e7,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x31c7,0x4249,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x31a6,0x3a08,0x31a6,0x31e7,0x2986,0x29a6, +0x2986,0x2986,0x2966,0x31c7,0x3186,0x39e7,0x39e8,0x3a28,0x31c7,0x3a08,0x31c6,0x39e7,0x3186,0x3186,0x39e8,0x4228,0x31c7,0x39e7,0x3a08,0x4229,0x3a08,0x3a08,0x31c7,0x39e7,0x39e7,0x3a08,0x39e8,0x4249,0x4229,0x4229,0x4209,0x39e8,0x39e7,0x4208,0x4229,0x31c7,0x4228,0x4249,0x3a07,0x3a08,0x3a08,0x4229,0x4208,0x4228,0x4228,0x4249,0x4a69,0x3a08,0x4228,0x4249,0x4a69,0x4229,0x4228,0x4248,0x4249,0x4248,0x3a28,0x3a08,0x4249,0x4a8a,0x52eb,0x4a8a,0x3a49,0x4229,0x4229,0x4248,0x4269,0x4249,0x4a6a,0x528a,0x4a69,0x52ab,0x4a8a,0x52cb,0x528a,0x4a69,0x4a89,0x52aa,0x4249,0x3a08,0x5acb,0x528a,0x4229,0x4249,0x528a,0x52aa,0x52aa,0x5aca,0x4a8a,0x4a8a,0x4a49,0x4229,0x4249,0x52ca,0x4a8a,0x4249,0x3a08,0x4a49,0x4a8a,0x52ab,0x528a,0x4228,0x4a6a,0x4228,0x4248,0x52aa,0x4a69,0x4a8a,0x4aaa,0x4aaa,0x4229,0x528a,0x4a6a,0x4a6a,0x632c,0x18c3,0x1082,0x18a2,0x10a2,0x2124,0x2945,0x2945,0x2104,0x18c3,0x18e3,0x18a2,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x39a5,0x7b45,0x7304,0x9405,0x41e4,0x2945,0x2965,0x2945,0x2945,0x3186,0x1082,0x0020,0x1082,0x1082,0x1082,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62e5,0x93e4,0x6ae4,0x62a4,0x3985,0x2965,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c2,0x0861,0x0841,0x2104,0x3166,0x3166,0x3165,0x2965,0x5aa5,0xa465,0x7b24,0x7b65,0x6ae5,0x3165,0x2945,0x2965,0x2965,0x3165,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x10a2,0x18a3,0x18e3,0x2945,0x4208,0x4a69,0x528a,0x52ab,0x4229,0x4a69,0x4228,0x4228,0x4248,0x52aa,0x4249,0x4228,0x4a8a,0x4249,0x52aa,0x4228,0x4248,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x3a48,0x4248,0x3a08,0x4208,0x4228,0x4208,0x39e7,0x4228,0x4a69,0x4a49,0x4228,0x4249,0x31c7,0x3a07,0x4a69,0x31c7,0x4a69,0x4208,0x3a08,0x4208,0x41e8,0x4208,0x4a49,0x4249,0x4a69,0x4208,0x4228,0x4a49,0x39e7,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4a69,0x4248,0x4aaa,0x3a28,0x4228,0x4229,0x3a08,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x31e7,0x39e7,0x39c7,0x31a7,0x39e8,0x31e8,0x39e8,0x39e7,0x31a6,0x31c7,0x39e8,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c6,0x4228,0x31c7,0x31c7,0x31c7,0x39e7,0x4a8a,0x4208,0x39c7,0x39e8,0x3a08,0x3a08,0x31a7,0x39e7,0x3186,0x31a7,0x4228,0x39e8,0x3a08,0x3186,0x31c7,0x31c7, +0x31c7,0x2986,0x39e7,0x39e7,0x31c6,0x4a49,0x31a6,0x39e7,0x3a08,0x31a6,0x39e7,0x3a08,0x4249,0x31e8,0x31c7,0x31a7,0x31c7,0x3a08,0x39e8,0x39e8,0x29a7,0x39e8,0x39e7,0x39c7,0x4228,0x39e7,0x4a89,0x4249,0x39e7,0x4228,0x4208,0x39e8,0x39e8,0x4249,0x4228,0x31c7,0x39c7,0x39c7,0x39e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x4a69,0x4a69,0x3a08,0x4228,0x4229,0x3a09,0x39e8,0x4249,0x4228,0x4208,0x4208,0x4229,0x4228,0x4249,0x4a8a,0x4249,0x4269,0x4aaa,0x4249,0x4249,0x4269,0x4249,0x4a89,0x4a69,0x4229,0x4249,0x426a,0x3a29,0x426a,0x4249,0x4a69,0x528a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4a6a,0x4a49,0x4a49,0x4a69,0x4a8a,0x52aa,0x4a6a,0x4269,0x4a8a,0x428a,0x4aaa,0x4a69,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x52cb,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x528a,0x5acb,0x5acb,0x4a6a,0x4228,0x4a8a,0x4a8a,0x4a8b,0x632c,0x18c3,0x1082,0x18a2,0x18a2,0x2124,0x2945,0x2125,0x2104,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2965,0x2965,0x2945,0x2965,0x62c5,0x8364,0x5a64,0x9425,0x4a03,0x2945,0x2965,0x2945,0x2945,0x3186,0x1061,0x0020,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62c6,0x8365,0x6ae5,0x83a5,0x4a24,0x2945,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x3165,0x3165,0x2965,0x2965,0x62e5,0xa465,0x7324,0x83a5,0x8385,0x3184,0x2945,0x2945,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x1082,0x10a2,0x18a3,0x18e3,0x2125,0x4a49,0x4a69,0x5269,0x528a,0x4a8a,0x4a8a,0x4249,0x4228,0x4248,0x4228,0x4228,0x3a08,0x4249,0x4a8a,0x4269,0x4249,0x3a07,0x4228,0x4a49,0x4228,0x4208,0x39c7,0x39e7,0x4a29,0x4a49,0x4208,0x4228,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x39e7,0x3a07,0x4228,0x4a49,0x4249,0x4248,0x39e7,0x3a28,0x4228,0x4248,0x4228,0x4a49,0x528a,0x4208,0x39c7,0x4a49,0x4248,0x3a28,0x3a28,0x39e7,0x4228,0x4a89,0x3a08,0x4249,0x3a07,0x4228,0x4229,0x528a,0x4249,0x4248,0x4a69,0x31e7,0x4a69,0x4249,0x4208,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x31c7,0x39e7,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x31e7,0x31c7,0x39e8,0x31c7,0x3a08,0x3a08,0x4208,0x31c7,0x4208,0x3a07,0x39e7,0x31c7,0x3a08,0x3a08,0x4a69,0x4228,0x39c7,0x39c7,0x31c7,0x29a6,0x4208,0x4a69,0x31c7,0x4208,0x31c7,0x3a08,0x31c7,0x31c7,0x31a7,0x31c7,0x39e8, +0x2966,0x31a7,0x39e8,0x31c7,0x31a6,0x31a6,0x31c7,0x39e8,0x39e8,0x29a6,0x3186,0x39e7,0x39e8,0x31c7,0x2986,0x31c7,0x4269,0x4249,0x39e8,0x39e8,0x3a08,0x31c7,0x31a6,0x39e7,0x3a08,0x39e7,0x4248,0x39e7,0x4208,0x4248,0x39e7,0x39e7,0x39e7,0x3a28,0x39e7,0x39e8,0x3a28,0x31c7,0x31c7,0x4228,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4208,0x4a8a,0x3a08,0x3a29,0x4249,0x31e8,0x3a08,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x4229,0x3a28,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x39e8,0x4229,0x4a8a,0x4a69,0x4228,0x4249,0x4a8a,0x4a8a,0x4249,0x4a49,0x4228,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4a4a,0x4a49,0x4a69,0x528a,0x528a,0x4a49,0x4229,0x4a8a,0x4a69,0x4a69,0x528a,0x4a8a,0x52eb,0x4a8a,0x4228,0x4a6a,0x5aeb,0x4a49,0x52aa,0x5acb,0x52aa,0x4249,0x3a28,0x426a,0x4a6a,0x4a6a,0x52aa,0x4a4a,0x528a,0x4a69,0x4a8a,0x4a6a,0x52ab,0x52cb,0x5b0c,0x18c3,0x1082,0x10a2,0x18a2,0x2104,0x2945,0x2125,0x2104,0x18e3,0x18c2,0x10a2,0x10a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2965,0x2965,0x2945,0x3985,0x8385,0x7b44,0x6ae4,0x9c44,0x5a84,0x2945,0x2965,0x2945,0x2965,0x3186,0x0861,0x0041,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x5a65,0x4a05,0x9405,0x6ac4,0x2945,0x2945,0x2945,0x3165,0x3185,0x1081,0x0841,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3165,0x2965,0x2965,0x2945,0x62c5,0x9c45,0x5244,0x6ae5,0x9c25,0x39a4,0x2965,0x2965,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2965,0x4228,0x4228,0x52aa,0x4a6a,0x52cb,0x4a8a,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4228,0x4a49,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4a89,0x4a69,0x4208,0x4a69,0x4228,0x31c7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x4a69,0x4248,0x3a07,0x4208,0x4228,0x4208,0x4228,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x3207,0x3208,0x3a28,0x4229,0x39e8,0x4208,0x4229,0x4a49,0x39e8,0x3a08,0x3a08,0x39c7,0x39e7,0x4229,0x4228,0x39e7,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x3a08,0x4228,0x31c7,0x3a08,0x41e8,0x4229,0x4208,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x31a7,0x39e7,0x31c7,0x4228,0x39e7,0x39c7,0x31a6,0x39e7,0x31e7,0x4249,0x4a6a,0x3a08,0x4249,0x29a6,0x31c7,0x31c7,0x39c7,0x4208,0x39e8,0x4208,0x39e7,0x39e7,0x31a7,0x2966,0x31a7,0x2986,0x4a69, +0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a7,0x31e7,0x31c7,0x31a7,0x31c7,0x39e7,0x31c7,0x31a7,0x2986,0x31e7,0x31e8,0x31c8,0x31c7,0x4208,0x4229,0x29a6,0x29a6,0x31e7,0x3a08,0x3a08,0x39e8,0x3a09,0x4a6a,0x4229,0x31e7,0x39e7,0x39e8,0x3a08,0x39e8,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x4228,0x4228,0x3a28,0x3a08,0x3a08,0x4229,0x31c7,0x39e8,0x39e7,0x39e7,0x4a69,0x4249,0x39e8,0x4208,0x4208,0x4208,0x3a28,0x4229,0x52aa,0x5acb,0x4a6a,0x4228,0x3a08,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x4269,0x4249,0x4a8a,0x52aa,0x4249,0x4a49,0x4a6a,0x528a,0x4a69,0x4229,0x4a6a,0x4229,0x52aa,0x528a,0x4249,0x4a69,0x4a49,0x5269,0x528a,0x62ec,0x528a,0x52aa,0x52ab,0x52ab,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4a69,0x4229,0x4229,0x52ab,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x52aa,0x4a89,0x4a8a,0x4a8a,0x52ab,0x52cb,0x4a69,0x52ab,0x52eb,0x18c2,0x1082,0x10a2,0x10a2,0x18e3,0x2945,0x2125,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x18c2,0x0841,0x0841,0x1082,0x2945,0x2965,0x3165,0x2965,0x3185,0x62a5,0x5a85,0x62c5,0x9c24,0x5a64,0x2945,0x2945,0x2965,0x2965,0x3186,0x0861,0x0841,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3185,0x7326,0x62a4,0x5244,0x8bc5,0x5a84,0x3165,0x2965,0x2945,0x2965,0x3165,0x1081,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0861,0x2124,0x3165,0x2965,0x2965,0x2965,0x5245,0x93e5,0x5a84,0x6b25,0x8ba5,0x3984,0x2965,0x2965,0x3165,0x3186,0x18a3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2965,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a8a,0x4a69,0x4a8a,0x4249,0x3a08,0x4228,0x3a08,0x4228,0x4208,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x4229,0x4a49,0x4208,0x39e8,0x4208,0x4228,0x3a28,0x4269,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4a69,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x4aaa,0x4249,0x4249,0x3a08,0x31e7,0x4209,0x4a6a,0x39c7,0x4a69,0x39e7,0x39e7,0x4a69,0x39e7,0x39e8,0x39e8,0x4228,0x4a49,0x4208,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x39e7,0x39c7,0x31a7,0x39c7,0x3a08,0x3a07,0x3a08,0x4228,0x31a7,0x39e8,0x4a69,0x31c7,0x4249,0x4229,0x39e7,0x3a08,0x39e7,0x3a08,0x31c7,0x4249,0x39e7,0x4228,0x31c7,0x31c7,0x31a7,0x39c7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x39e8,0x31a6,0x39e7, +0x31c6,0x39e7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x29a6,0x31a7,0x39c7,0x31a6,0x31c7,0x3a08,0x3a28,0x31c7,0x39e8,0x31e8,0x31a7,0x4229,0x4249,0x39e7,0x31e7,0x31a7,0x31c7,0x3a08,0x31e7,0x31c7,0x31e7,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x3a08,0x4229,0x4228,0x4a8a,0x39e7,0x3a07,0x4248,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x39e7,0x4248,0x4a69,0x3a08,0x4249,0x4229,0x4208,0x4248,0x4249,0x3a28,0x4269,0x4208,0x4a49,0x4229,0x4209,0x4229,0x4229,0x4a6a,0x52ab,0x4aab,0x3a29,0x3a28,0x4aaa,0x4269,0x4269,0x4228,0x52ab,0x52cb,0x4aaa,0x3a08,0x4269,0x4a69,0x4228,0x4a69,0x52eb,0x52ab,0x4a8a,0x52ab,0x52aa,0x52aa,0x52ab,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x528a,0x4a49,0x4a49,0x4a69,0x52aa,0x4249,0x52ca,0x52aa,0x4a69,0x5aeb,0x6b6d,0x4a89,0x4229,0x4a8a,0x52ca,0x4a49,0x632d,0x6b6d,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2125,0x2104,0x2104,0x18e3,0x18a2,0x10a2,0x10a2,0x18c2,0x0861,0x0861,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x39a5,0x3985,0x41e5,0x7b45,0x41c4,0x2965,0x2965,0x2965,0x3186,0x3165,0x1082,0x0861,0x1082,0x1082,0x1062,0x18c3,0x10a2,0x0861,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x7325,0x7304,0x7305,0x41c4,0x3165,0x2965,0x2965,0x2965,0x2924,0x1061,0x1061,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0861,0x2104,0x2965,0x2965,0x2965,0x2965,0x39a5,0x6ae5,0x7325,0x7325,0x6285,0x3165,0x2965,0x2965,0x3165,0x3165,0x10a2,0x0841,0x0861,0x10a2,0x1082,0x1082,0x18a2,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x52ab,0x4a49,0x4a49,0x4249,0x4a69,0x4a49,0x4228,0x41e7,0x4208,0x4a49,0x4a69,0x4a69,0x4269,0x3a28,0x4a8a,0x4249,0x3a08,0x4a6a,0x4249,0x4249,0x4a89,0x4269,0x4248,0x4228,0x4249,0x39e7,0x39e7,0x4229,0x4229,0x39e8,0x39e8,0x4229,0x4a6a,0x4249,0x4249,0x4a8a,0x4249,0x52aa,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x4a69,0x4249,0x4248,0x4a69,0x4208,0x39e8,0x31e7,0x4228,0x39e7,0x3a08,0x4a69,0x4a69,0x4228,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x4248,0x4228,0x4248,0x4228,0x4208,0x39e8,0x4229,0x4228,0x4a49,0x4249,0x31c7,0x39e8,0x39c8,0x4229,0x3a08,0x31c6,0x31c7,0x31a6,0x4a48,0x39e7,0x3a07,0x4228,0x31c7,0x31c7,0x31c7,0x3a08,0x4249,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x3a08,0x31e7,0x3a08,0x4208,0x4229,0x4208,0x31a7,0x39c7,0x39e8,0x39e7,0x4248,0x39c7,0x39c7,0x31c7,0x31e7,0x31c6,0x39e7,0x39c6,0x31a6, +0x31a7,0x31a6,0x2965,0x2986,0x31c7,0x31c7,0x31a7,0x39c8,0x31a7,0x39c8,0x4a69,0x39e8,0x3a08,0x3a28,0x31a7,0x3a08,0x39c7,0x39e8,0x3a08,0x4228,0x3a07,0x3a28,0x3a28,0x3a08,0x31e7,0x39e8,0x31c7,0x3a08,0x3a08,0x31e7,0x3a28,0x31e7,0x39e8,0x39c7,0x39e7,0x31c7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x4269,0x4229,0x39e8,0x4208,0x39e7,0x3a08,0x4249,0x3a07,0x39e7,0x4208,0x4209,0x4209,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x4228,0x4a69,0x4229,0x3a09,0x424a,0x4229,0x4a6a,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x528a,0x528a,0x528a,0x526a,0x4a8a,0x4a8a,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4a49,0x4a8a,0x4a8a,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4a69,0x4a89,0x4269,0x4a6a,0x4229,0x4a69,0x4a6a,0x4a8a,0x4a49,0x4a69,0x52aa,0x52cb,0x52ab,0x5acc,0x632c,0x52aa,0x4a6a,0x52ab,0x5aeb,0x528a,0x5aec,0x630c,0x18c2,0x1082,0x1082,0x10a2,0x20e4,0x2125,0x2104,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x2103,0x20e3,0x2945,0x2965,0x2965,0x2945,0x2965,0x3165,0x2945,0x3185,0x4a05,0x3185,0x3165,0x3165,0x3185,0x3186,0x2944,0x18e3,0x10a2,0x10a2,0x1062,0x1061,0x18c3,0x20e4,0x20e3,0x18e3,0x2945,0x2965,0x2965,0x2965,0x2945,0x39a5,0x4a26,0x5245,0x41e5,0x3165,0x3165,0x3165,0x3166,0x3165,0x2104,0x18c2,0x18c2,0x18a3,0x1082,0x1082,0x18e3,0x2104,0x20e3,0x2103,0x2945,0x2965,0x2945,0x2945,0x3165,0x39c5,0x4a25,0x4a05,0x3985,0x2965,0x2945,0x2945,0x3165,0x3165,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2925,0x4a6a,0x4a6a,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4a69,0x4228,0x4a6a,0x4a69,0x3a28,0x4a69,0x528a,0x4a49,0x3a28,0x4249,0x4249,0x4228,0x3a08,0x3a07,0x39e7,0x3a08,0x4249,0x3a28,0x31e7,0x39e8,0x4228,0x3a08,0x4a6a,0x4249,0x4249,0x4249,0x31c6,0x4249,0x4249,0x4a69,0x52ca,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4208,0x3a08,0x3a28,0x3a08,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x4229,0x4208,0x4228,0x4208,0x4228,0x39e7,0x4228,0x39e7,0x31c7,0x3a07,0x39e7,0x31a7,0x31c7,0x31c7,0x4208,0x4228,0x31a6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x39e8,0x4229,0x39c8,0x39c8,0x4208,0x4208,0x3a08,0x3a08,0x39e7,0x39e7,0x2145,0x2986,0x31c7,0x4249, +0x31a7,0x31a6,0x31a6,0x29a6,0x31c6,0x31c7,0x2986,0x31a7,0x39c7,0x4208,0x4a69,0x39c7,0x39e7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x4209,0x4229,0x3a08,0x4228,0x4228,0x4269,0x4249,0x39e8,0x31c8,0x31c7,0x39e8,0x39e8,0x4229,0x4249,0x4249,0x4a49,0x4a49,0x4228,0x31c7,0x4248,0x4228,0x4228,0x4a49,0x3a08,0x3a08,0x4a89,0x3a08,0x4208,0x4a49,0x39e7,0x4228,0x4249,0x3a28,0x4228,0x39e8,0x39e8,0x39e8,0x39e8,0x4249,0x3a28,0x3a08,0x4228,0x528a,0x4a69,0x426a,0x4a6a,0x4229,0x4228,0x4249,0x4a49,0x528a,0x4229,0x5acb,0x4229,0x4a49,0x4a69,0x4229,0x528a,0x52aa,0x4249,0x52aa,0x52aa,0x4a49,0x4a6a,0x4229,0x4a69,0x5aec,0x4249,0x4209,0x4249,0x4229,0x4a8b,0x52ec,0x4aaa,0x4a8a,0x4a69,0x4a89,0x4248,0x52aa,0x4269,0x4a49,0x5aeb,0x4a8a,0x4269,0x52cb,0x5aec,0x52cb,0x4aab,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x528a,0x5aeb,0x6b6d,0x52eb,0x5b0b,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18e4,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x18e3,0x2925,0x3186,0x3185,0x3165,0x2965,0x2945,0x2945,0x3165,0x3165,0x3165,0x3165,0x3165,0x3185,0x3165,0x3165,0x31a6,0x3186,0x3165,0x3165,0x2124,0x10a2,0x1062,0x1062,0x18c3,0x2965,0x31a6,0x2964,0x2944,0x2965,0x2965,0x2945,0x2945,0x2945,0x3165,0x3165,0x3145,0x2945,0x2945,0x3166,0x3186,0x3186,0x2965,0x2944,0x2924,0x18a3,0x1082,0x1082,0x2104,0x3186,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2945,0x2945,0x3165,0x3165,0x2924,0x2924,0x20e3,0x18c2,0x1082,0x1082,0x1082,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2925,0x4a49,0x4a69,0x4249,0x4269,0x3a28,0x4208,0x4a69,0x4228,0x3a28,0x4a69,0x528a,0x4a69,0x528a,0x4229,0x4a6a,0x4a69,0x4249,0x3a28,0x4a69,0x528a,0x4a49,0x4208,0x4249,0x4a69,0x4a49,0x4228,0x4208,0x39e7,0x4248,0x4269,0x4269,0x4a49,0x4249,0x39e7,0x4269,0x4a49,0x4249,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4a89,0x4a89,0x4228,0x4228,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4208,0x4a49,0x4a6a,0x4228,0x31c7,0x3207,0x3a07,0x4228,0x4269,0x4a69,0x31c7,0x4249,0x3a08,0x39e8,0x39c7,0x3a08,0x4a49,0x39e7,0x3a07,0x3a28,0x4249,0x4228,0x3a08,0x39c7,0x31c7,0x39e8,0x39e8,0x39e7,0x4a49,0x39c7,0x4229,0x4249,0x31a7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x31a7,0x4249,0x39e7,0x31c6,0x31e7,0x39e7,0x39e7,0x39e7,0x31a6,0x4228,0x39e8,0x39e8,0x3a08,0x4208,0x39e7,0x31c7,0x3a08,0x31a6,0x2145,0x2986,0x29a6,0x31a6, +0x31a7,0x39e7,0x39c7,0x31a6,0x39c7,0x4228,0x31a6,0x39e7,0x3a08,0x4208,0x39a7,0x31a7,0x3a08,0x39e7,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x3a08,0x4228,0x4228,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4228,0x39c7,0x39e7,0x39e7,0x4a8a,0x4249,0x4208,0x4209,0x4a29,0x4208,0x4aaa,0x4289,0x4248,0x52aa,0x4228,0x39e8,0x39e8,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x3a29,0x3a08,0x4229,0x4208,0x4228,0x4207,0x4208,0x52aa,0x4229,0x4a49,0x4a49,0x4a89,0x4249,0x4229,0x4249,0x4a8a,0x4a69,0x3a08,0x3a28,0x4269,0x4228,0x528a,0x4229,0x52aa,0x4269,0x4269,0x4aaa,0x42aa,0x3a28,0x4249,0x5acb,0x3a08,0x4249,0x4a69,0x52aa,0x52aa,0x52cb,0x4a8a,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a6a,0x4249,0x4a69,0x4aaa,0x4a89,0x4269,0x52aa,0x6b4d,0x4a8a,0x4a8a,0x6b4d,0x630d,0x528b,0x4a8a,0x5b0c,0x4a8a,0x52ab,0x4a69,0x5aec,0x52cb,0x5b0c,0x632c,0x634c,0x18c2,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x20e4,0x18c3,0x10a2,0x1082,0x1082,0x2104,0x2945,0x3185,0x2965,0x2924,0x2104,0x18e3,0x20e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x3165,0x2944,0x18a2,0x1062,0x1061,0x18e3,0x3166,0x3186,0x3165,0x2945,0x2924,0x2924,0x2104,0x2104,0x2104,0x2125,0x2124,0x2924,0x2104,0x2104,0x2924,0x2944,0x2945,0x2965,0x2945,0x2945,0x18c3,0x1082,0x1082,0x2104,0x31a6,0x39a6,0x3165,0x2924,0x2924,0x2924,0x2945,0x2124,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2924,0x2945,0x2945,0x2124,0x2124,0x2945,0x2924,0x18c3,0x1082,0x1082,0x1082,0x2104,0x18a3,0x1082,0x10a2,0x18a3,0x18e3,0x2124,0x4228,0x4a49,0x526a,0x52cb,0x3a29,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x4228,0x52aa,0x4a8a,0x4a69,0x4a6a,0x4a69,0x4a69,0x4a6a,0x52ca,0x52aa,0x52cb,0x4a89,0x4a69,0x4228,0x4208,0x4a69,0x4a49,0x4208,0x4208,0x4a69,0x3a28,0x3a28,0x4228,0x4249,0x3a28,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4228,0x52aa,0x4208,0x4a49,0x4a89,0x4228,0x4249,0x4a69,0x4249,0x4249,0x3a28,0x4229,0x4a6a,0x4208,0x3a08,0x3a07,0x39e8,0x3a08,0x3a28,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e7,0x3a07,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x3a08,0x31c7,0x31c7,0x39e7,0x39c7,0x4208,0x31c7,0x39e7,0x39e7,0x31c7,0x39c7,0x3a08,0x3a08,0x29a6,0x31c7,0x3a08,0x39c7,0x4228,0x31a7,0x3a08,0x4229,0x3a08,0x4208,0x31a6,0x31c6,0x39e7,0x31a6,0x2966,0x31a6,0x31c7,0x2965, +0x39e7,0x39e7,0x31c6,0x39c6,0x31a6,0x3186,0x39c7,0x4208,0x39a7,0x3187,0x31c7,0x31a7,0x31c7,0x31a7,0x39e8,0x39c8,0x39e7,0x39e7,0x3a08,0x4229,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x39e8,0x4a6a,0x4a8a,0x4229,0x39e7,0x4228,0x4228,0x3a08,0x39c7,0x4208,0x4229,0x4229,0x4249,0x4228,0x39c7,0x39e7,0x4208,0x39e8,0x4209,0x4229,0x39c8,0x39c7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x4208,0x4249,0x4208,0x4a49,0x52aa,0x4228,0x4249,0x4a6a,0x4a49,0x4a49,0x4249,0x4229,0x3a08,0x4a6a,0x4228,0x4a69,0x4a8a,0x4a69,0x4a69,0x4aaa,0x4269,0x4289,0x4248,0x4a6a,0x528a,0x4229,0x5aeb,0x5289,0x52aa,0x4a69,0x52cb,0x52cb,0x426a,0x424a,0x4aa9,0x52a9,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5aeb,0x4aaa,0x4269,0x52ab,0x5aeb,0x4a6a,0x5aec,0x5acb,0x630c,0x5aeb,0x52aa,0x738e,0x4a6a,0x5aeb,0x52ab,0x6b4d,0x5acb,0x52cb,0x528a,0x5acb,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x18e4,0x18c3,0x10a2,0x1082,0x1082,0x20e4,0x2104,0x20e3,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x18a3,0x18a3,0x18c3,0x18e3,0x20e3,0x18c3,0x1062,0x1062,0x18e3,0x2104,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x18c3,0x20e3,0x18c3,0x1082,0x1082,0x18e3,0x2924,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2104,0x18c3,0x1082,0x1082,0x1082,0x20e3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4249,0x52ab,0x4a49,0x4a49,0x4a6a,0x4a8a,0x3a08,0x52cb,0x4aaa,0x3a08,0x52cb,0x52cb,0x4269,0x4a6a,0x4229,0x528a,0x52cb,0x528a,0x52aa,0x4a49,0x39e7,0x4a69,0x4a69,0x4228,0x52cb,0x52aa,0x4208,0x4228,0x4249,0x4228,0x3a28,0x3a07,0x4248,0x4a49,0x3a28,0x4a89,0x4a89,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4229,0x4208,0x4228,0x528a,0x4a69,0x3208,0x3a28,0x3a08,0x4228,0x39e7,0x3a07,0x3a07,0x39e8,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4a49,0x39e7,0x3a07,0x4a49,0x4a69,0x3a08,0x4269,0x4228,0x3a28,0x4228,0x39c7,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x39e7,0x31a6,0x39e7,0x31c7,0x39e8,0x39e7,0x31a6,0x39e7,0x39c7,0x39e7,0x39e7,0x39c7,0x31c6,0x39c7,0x39e7,0x4249,0x4249,0x3187,0x39e8,0x31a7,0x31e7,0x3a08,0x39e7,0x4249,0x4228,0x4249,0x31e7,0x31e7,0x3a08,0x31c6,0x39e7,0x31a6,0x2145,0x31c7,0x31c7, +0x31a7,0x2986,0x31c7,0x31c7,0x31a6,0x2986,0x3186,0x31a7,0x3187,0x31a6,0x31c7,0x2986,0x2966,0x39c8,0x3a08,0x4208,0x39e7,0x4228,0x4249,0x31c7,0x31e7,0x31e7,0x31c7,0x39e7,0x4208,0x4208,0x4229,0x3a08,0x3a08,0x31c7,0x4228,0x31c7,0x39e7,0x39c7,0x3a28,0x3a08,0x39e7,0x4208,0x39e7,0x39e7,0x2986,0x31a7,0x39e8,0x31a7,0x39e8,0x4208,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3a08,0x4229,0x4229,0x4228,0x4a89,0x52ca,0x3a07,0x4228,0x4a69,0x4a6a,0x3a08,0x3a28,0x4229,0x4229,0x4a49,0x39e7,0x4249,0x4249,0x3a08,0x4229,0x4208,0x4229,0x4249,0x4249,0x4228,0x39c8,0x4a6a,0x4a69,0x528a,0x5aca,0x4a89,0x4a8a,0x4a6a,0x4a8a,0x4aab,0x4a8a,0x4a69,0x52aa,0x52ab,0x4aaa,0x5b0b,0x52aa,0x4249,0x4269,0x52aa,0x52aa,0x52aa,0x5aeb,0x4a89,0x528a,0x5acb,0x6b4d,0x52aa,0x526a,0x528a,0x52cb,0x5aeb,0x528a,0x630c,0x528a,0x528b,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e3,0x18e4,0x18c2,0x1082,0x1082,0x1082,0x18a3,0x10a2,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x1062,0x0861,0x10a2,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4228,0x4a8a,0x4229,0x4208,0x4a6a,0x4a6a,0x4a69,0x52aa,0x4a49,0x4249,0x4aaa,0x4269,0x4249,0x528a,0x4229,0x4a49,0x4a49,0x4228,0x39e8,0x4228,0x39e8,0x4a29,0x4a69,0x4208,0x528a,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4269,0x4228,0x4a49,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4208,0x3a08,0x4208,0x4208,0x4a69,0x4a4a,0x3a08,0x3a08,0x4248,0x4a69,0x3a08,0x4249,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4229,0x4a49,0x4228,0x4249,0x4228,0x31c6,0x4228,0x4249,0x4229,0x39e7,0x4228,0x4248,0x3a08,0x39e7,0x4249,0x4208,0x4228,0x31c7,0x39e7,0x4228,0x31a6,0x31c7,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x4a6a,0x5b0c,0x31c7,0x39c7,0x4229,0x3a07,0x4208,0x3a08,0x4228,0x31c7,0x3a07,0x4228,0x4209,0x3187,0x39c7,0x4249,0x31c7,0x31a6,0x31a6,0x39c7, +0x2966,0x2966,0x3a08,0x31a7,0x31a7,0x39e8,0x31a7,0x31a7,0x39c7,0x39c7,0x39e7,0x3a08,0x3a08,0x39e8,0x39e7,0x3a08,0x39e8,0x39c8,0x39e8,0x39e7,0x3a28,0x31c7,0x31c7,0x3a08,0x31a6,0x39c7,0x39c7,0x3a07,0x3a08,0x31c7,0x31e8,0x39c8,0x3186,0x3a08,0x52cb,0x31c7,0x3a07,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x39e8,0x39e7,0x39c7,0x4228,0x4228,0x39e7,0x4229,0x4229,0x39e9,0x39e8,0x31c7,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x4a49,0x4249,0x4249,0x528a,0x4248,0x4a8a,0x4249,0x4248,0x4249,0x4a8a,0x4249,0x4229,0x4249,0x4a49,0x4229,0x4229,0x4a69,0x4249,0x4269,0x4a8a,0x4228,0x4228,0x4a49,0x528a,0x52cb,0x4a69,0x4a8a,0x52ab,0x4aaa,0x52eb,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a6a,0x52ab,0x5acb,0x5aeb,0x3a08,0x4a69,0x5aec,0x4229,0x528a,0x6b4d,0x4a69,0x6b6d,0x52cb,0x634d,0x528b,0x4a6a,0x630c,0x5aeb,0x52aa,0x528a,0x5aeb,0x4a49,0x5aec,0x18c3,0x1082,0x1082,0x10a2,0x18a3,0x18e4,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1061,0x1061,0x1061,0x0861,0x0861,0x1082,0x1061,0x0861,0x1061,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1062,0x1062,0x1082,0x1082,0x1082,0x1062,0x1062,0x1062,0x1061,0x0861,0x1061,0x1062,0x1062,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x4a6a,0x4a6a,0x4229,0x4a69,0x4249,0x4a8a,0x52cb,0x4a8a,0x4249,0x4a69,0x4a8a,0x4249,0x4249,0x4229,0x4a49,0x4208,0x4208,0x4a69,0x4228,0x4a8a,0x4228,0x4a6a,0x52aa,0x4228,0x528a,0x4228,0x4a49,0x4a69,0x39e7,0x4249,0x4229,0x4228,0x4228,0x4228,0x4269,0x4269,0x4a49,0x528a,0x4a69,0x4229,0x4249,0x4248,0x4248,0x4249,0x52aa,0x4229,0x39e8,0x4a49,0x4a29,0x4a49,0x4229,0x4208,0x4248,0x3a08,0x4228,0x4228,0x3a07,0x4249,0x4249,0x39c7,0x4228,0x4a49,0x4249,0x4228,0x4229,0x39e7,0x4a69,0x3a07,0x4208,0x39e8,0x31c7,0x3a08,0x4228,0x31c7,0x39e8,0x4229,0x39e8,0x4208,0x39e7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x31a6,0x39e7,0x4248,0x39e7,0x31c7,0x39e8,0x4249,0x3a07,0x3a08,0x52ab,0x39e7,0x4228,0x31c7,0x31c7,0x3a08,0x4249,0x4229,0x4209,0x3187,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x31c7, +0x2986,0x2986,0x31a6,0x31a6,0x31a7,0x4228,0x39e8,0x39e7,0x31a7,0x39c7,0x39e8,0x39e7,0x3a08,0x29a6,0x31e7,0x4229,0x31a7,0x39e8,0x4a4a,0x39e8,0x4a69,0x39e7,0x39c7,0x4208,0x39c7,0x31a7,0x3a08,0x4a69,0x39e7,0x3a08,0x4229,0x4209,0x2987,0x4229,0x4a8a,0x31e7,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e7,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x424a,0x39e8,0x31e8,0x3a28,0x3a08,0x3a08,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a8a,0x4aaa,0x4a69,0x4249,0x4249,0x4a6a,0x39e7,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4249,0x4269,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52ab,0x4aaa,0x52cb,0x4249,0x4249,0x4a49,0x4a49,0x4a6a,0x52ab,0x4a8a,0x52cb,0x4249,0x4249,0x4269,0x4a8a,0x5aec,0x5acb,0x5acb,0x6b8d,0x52aa,0x4a8a,0x5aed,0x4a8b,0x4a6a,0x5b0c,0x5acb,0x5aec,0x528a,0x52eb,0x5b0c,0x18c2,0x1082,0x1082,0x18a2,0x18a3,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1061,0x1062,0x1082,0x1082,0x1081,0x0861,0x1061,0x1061,0x1082,0x1062,0x1061,0x1061,0x1062,0x1061,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x1062,0x1082,0x1082,0x1062,0x1062,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1062,0x1082,0x10a2,0x10a2,0x2124,0x4a49,0x4a6a,0x4208,0x528a,0x4a8a,0x52aa,0x52aa,0x4249,0x4a69,0x5aeb,0x4269,0x4249,0x4a8a,0x4a29,0x4a6a,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4a69,0x52ab,0x39e8,0x4a49,0x4a69,0x39e7,0x4aaa,0x4a69,0x4a49,0x4a49,0x4248,0x4228,0x4a49,0x4a49,0x4a29,0x39e7,0x3a08,0x39e8,0x39e7,0x4249,0x4a6a,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x4249,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x39e7,0x4229,0x39e7,0x31c7,0x31c7,0x39e8,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x4249,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39c7,0x31a6,0x39c7,0x31a7,0x31c7,0x3a07,0x4228,0x31c7,0x31c7,0x39e7,0x31a7,0x3a08,0x3a08,0x31c7,0x4229,0x39e9,0x4249,0x4229,0x2986,0x39e7,0x4249,0x4228,0x39e7,0x39e7, +0x3186,0x2986,0x31c7,0x3207,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x39c7,0x31c7,0x3a07,0x31c7,0x31e7,0x31e7,0x3a08,0x39e8,0x3a08,0x3a08,0x39c7,0x39c7,0x39a7,0x4208,0x39e7,0x31c6,0x39c7,0x39e8,0x3a07,0x3a08,0x39c7,0x4208,0x4229,0x31a7,0x39c8,0x31c7,0x31e7,0x4228,0x3a28,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x39e7,0x31c7,0x3a08,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x3a08,0x39c7,0x39e7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4a6a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a6a,0x39e8,0x4229,0x4229,0x52ab,0x52ab,0x4a69,0x4a69,0x4269,0x4a8a,0x4a8a,0x52ab,0x4a69,0x4a69,0x52ab,0x4a6a,0x528b,0x4a4a,0x528a,0x528a,0x4229,0x4229,0x52ab,0x5b2c,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x4229,0x4aaa,0x52ab,0x528a,0x5aec,0x5aeb,0x52cb,0x52cb,0x632d,0x4a6a,0x4a8a,0x5aec,0x5b0c,0x5aec,0x4a8a,0x6b8e,0x634d,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x1082,0x1082,0x0861,0x1061,0x1061,0x1062,0x1061,0x1062,0x1062,0x1061,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x1082,0x2104,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x2104,0x528a,0x5acb,0x4249,0x52ca,0x5aeb,0x528a,0x528a,0x528a,0x4a6a,0x52aa,0x4a8a,0x4249,0x4a49,0x4a29,0x39e8,0x4249,0x4a8a,0x52aa,0x4228,0x4229,0x4a6a,0x528a,0x528a,0x4228,0x4249,0x4a69,0x4208,0x4a69,0x4a69,0x4a49,0x4a49,0x4229,0x4a49,0x4208,0x4228,0x4a49,0x4249,0x4229,0x4269,0x5aeb,0x4a8a,0x4249,0x4229,0x39e7,0x4249,0x52cb,0x4248,0x4a8a,0x528a,0x4229,0x4228,0x4a49,0x4208,0x39c7,0x39e8,0x4249,0x4228,0x4229,0x4208,0x3a08,0x39e8,0x29a7,0x31e7,0x3a29,0x31e8,0x4228,0x39e7,0x39e7,0x39e7,0x4249,0x4228,0x4249,0x39e8,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x4209,0x4229,0x4208,0x39e7,0x31a6,0x4228,0x4228,0x39e7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x31a7,0x2966,0x3a08,0x39e8,0x31c7,0x39c7,0x31c7,0x31a6,0x39e8,0x4229,0x39c7,0x39c7,0x4208,0x41e8,0x39e8,0x4249,0x31c7,0x4208,0x39e8,0x39c7,0x39c7,0x31c7, +0x39c7,0x31a6,0x31c7,0x31e7,0x31c6,0x29a6,0x2986,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39c7,0x31c7,0x3a08,0x4a6a,0x39e8,0x3a08,0x4a49,0x39e7,0x39e7,0x39e8,0x39e7,0x4a89,0x4207,0x31a6,0x39e8,0x39c7,0x31a7,0x39e8,0x3a08,0x31a7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x3a07,0x3a07,0x4228,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x39e7,0x41e8,0x39e8,0x39e7,0x39e8,0x3a08,0x39e8,0x4208,0x4228,0x4208,0x4229,0x4229,0x4249,0x4228,0x4249,0x4a69,0x4a6a,0x4a6a,0x4a69,0x4a69,0x3a08,0x4208,0x4229,0x526a,0x526a,0x4a29,0x528a,0x528a,0x4208,0x4a29,0x52ab,0x4a29,0x4a6a,0x4a49,0x4229,0x5acc,0x528a,0x4a69,0x4a69,0x4a69,0x526a,0x4a49,0x528a,0x528a,0x4229,0x4a69,0x52ab,0x4a6a,0x52aa,0x52aa,0x4a69,0x4a6a,0x5aec,0x5acb,0x52aa,0x52aa,0x5aeb,0x5b0c,0x6b6d,0x52cb,0x5aec,0x528a,0x5acb,0x52ab,0x528a,0x18c2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10c3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1062,0x0861,0x0861,0x1061,0x1061,0x0861,0x1061,0x1062,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x10a2,0x2104,0x1082,0x0881,0x1082,0x18c3,0x10a2,0x2124,0x5acb,0x5acb,0x4a69,0x52ca,0x52aa,0x52ca,0x528a,0x5acb,0x528a,0x4249,0x5b0c,0x4249,0x4a49,0x4a6a,0x4a69,0x4a69,0x4249,0x4249,0x4229,0x3a08,0x4a6a,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4249,0x4a69,0x4228,0x4228,0x4208,0x4a8a,0x52aa,0x3a07,0x4208,0x4a49,0x4a89,0x4a8a,0x31e7,0x52cb,0x4a8a,0x4a6a,0x4a49,0x39e8,0x4229,0x528a,0x4a69,0x52aa,0x4a69,0x4229,0x4228,0x4a49,0x4a89,0x4249,0x4228,0x4228,0x31e7,0x3a08,0x3a28,0x3a28,0x4a89,0x4249,0x3a07,0x4249,0x4249,0x2985,0x39e7,0x4248,0x31c6,0x4228,0x4248,0x4249,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x31c7,0x31c7,0x4229,0x39e8,0x39c7,0x39c7,0x3a08,0x39e7,0x4228,0x39e7,0x39c7,0x3186,0x4228,0x39e7,0x31a7,0x39c7,0x4229,0x39e8,0x31a7,0x39a7,0x2945,0x39c7,0x4208,0x39e7,0x39c7,0x31a6,0x31c7,0x4208,0x31c6,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4228,0x31a6, +0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x39e7,0x3a08,0x39e8,0x31c7,0x31a7,0x41e8,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39c7,0x4228,0x4a8a,0x4269,0x4269,0x39e8,0x31c7,0x4208,0x39c7,0x31a6,0x4228,0x3a07,0x39c7,0x3a07,0x31c7,0x31a6,0x3a07,0x4248,0x3a08,0x31a7,0x31a7,0x31a8,0x31c7,0x39e8,0x4208,0x4207,0x4208,0x39e7,0x4228,0x3207,0x3a08,0x3a08,0x39e7,0x39e8,0x4208,0x3a08,0x4a69,0x39e8,0x4229,0x3a09,0x3a08,0x3a28,0x4228,0x4228,0x4249,0x4a69,0x4aaa,0x52cb,0x4228,0x4228,0x4228,0x3a08,0x4a8a,0x3a28,0x3a08,0x4a49,0x4a49,0x4229,0x4228,0x528a,0x4a89,0x52aa,0x4249,0x4a69,0x4229,0x4aab,0x4269,0x4269,0x52cb,0x4a89,0x5b0c,0x4a69,0x4208,0x4249,0x4a69,0x4249,0x52aa,0x3a08,0x4a8a,0x52cb,0x3a08,0x52aa,0x52aa,0x5acb,0x528a,0x5b0c,0x52aa,0x5acb,0x5b0c,0x52aa,0x5b0b,0x52aa,0x630c,0x5acc,0x4229,0x526a,0x5acb,0x5aeb,0x18c2,0x1081,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1061,0x0861,0x0861,0x0861,0x1081,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1061,0x1061,0x1082,0x10a2,0x2924,0x1082,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x52aa,0x5aeb,0x4a89,0x4248,0x52ca,0x52ca,0x52cb,0x4a8a,0x5aec,0x5aab,0x528a,0x5aeb,0x5b0c,0x528a,0x4a69,0x4a8a,0x3a28,0x4a8a,0x52ab,0x4229,0x4229,0x5269,0x4a49,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4a69,0x52aa,0x4269,0x4a8a,0x4a69,0x4aaa,0x3a28,0x4a69,0x3a28,0x4a69,0x3a28,0x4a8a,0x4249,0x4a6a,0x4208,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4229,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e8,0x31a7,0x31a7,0x4a49,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4207,0x3a08,0x39e7,0x4228,0x31c6,0x39c7,0x4208,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x39e7,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4a89,0x3a08,0x4a8a,0x39e8,0x31a7,0x31a7,0x3a08,0x4249,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x4228,0x39e7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x4a69,0x39c7, +0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x39c7,0x39e8,0x31e7,0x31c7,0x31c7,0x3a08,0x39e8,0x31a7,0x39c8,0x4208,0x39c7,0x39e8,0x39e7,0x31a6,0x3186,0x39e8,0x39e7,0x2986,0x31a7,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x3a28,0x4248,0x31e7,0x31e7,0x39e8,0x39c7,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31e7,0x4228,0x4248,0x39e7,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x31c8,0x31c7,0x39e7,0x4a69,0x4a69,0x4249,0x4228,0x4a6a,0x4249,0x3a08,0x4208,0x3a08,0x4a49,0x4a6a,0x4228,0x39e8,0x4208,0x4208,0x4249,0x4a8a,0x4a49,0x52aa,0x4249,0x52aa,0x4228,0x4a89,0x3a49,0x4229,0x4a8a,0x3a08,0x4a8a,0x4aaa,0x4228,0x4248,0x4269,0x52cb,0x52ab,0x5aec,0x4a8a,0x5b0c,0x4269,0x4248,0x528a,0x52aa,0x5289,0x52aa,0x6b6e,0x5aec,0x4a49,0x52cb,0x4a8a,0x4a89,0x528a,0x632c,0x528a,0x4a69,0x5aeb,0x52ab,0x4a8a,0x18c2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x18e3,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2103,0x1082,0x1061,0x1062,0x18a2,0x2944,0x1082,0x0861,0x1082,0x18e3,0x18e3,0x2924,0x4a49,0x4a49,0x4a69,0x52aa,0x52ca,0x5b0c,0x52eb,0x52aa,0x52aa,0x52aa,0x4208,0x6b6e,0x528b,0x4208,0x4a49,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x52aa,0x5aeb,0x4248,0x4a69,0x4249,0x4269,0x4228,0x52aa,0x52ca,0x4a69,0x4aaa,0x4a6a,0x4a69,0x3a08,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x528a,0x4208,0x39c7,0x4208,0x4228,0x4228,0x4208,0x4208,0x4248,0x3a07,0x39e7,0x4249,0x3a08,0x31c7,0x3a08,0x4229,0x39e8,0x39e8,0x39e8,0x4249,0x39e7,0x39c7,0x4208,0x4228,0x4208,0x4a49,0x4228,0x4208,0x39e8,0x4208,0x4a69,0x39e7,0x4228,0x3a07,0x4228,0x528a,0x39e8,0x4228,0x39e7,0x39e7,0x4a49,0x3a07,0x4a69,0x39e7,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x4a49,0x4208,0x39e7,0x3a07,0x39e8,0x4209,0x31a7,0x39e7,0x4228,0x31e7,0x31c7,0x3186,0x4a69,0x31a7,0x31c7,0x39c7,0x39e7,0x31a6,0x3a08,0x39e7,0x31a7, +0x29a6,0x31c7,0x31c7,0x2965,0x2986,0x2986,0x39e7,0x3a08,0x3a08,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x39e7,0x3a08,0x39e7,0x31a7,0x31a7,0x39e8,0x31a7,0x39e7,0x4228,0x4228,0x4208,0x31a6,0x39e7,0x4208,0x4249,0x31c7,0x31a6,0x31e7,0x3a08,0x2987,0x31a7,0x39c8,0x3a08,0x31e7,0x31e7,0x39e8,0x3a08,0x3a08,0x4228,0x4228,0x4269,0x3a28,0x3a28,0x52aa,0x4208,0x4208,0x39e7,0x39c7,0x39e8,0x4249,0x4249,0x31c7,0x31e7,0x3a08,0x3a07,0x4249,0x3a08,0x3a08,0x39e8,0x4229,0x4a69,0x4248,0x4249,0x3a29,0x4249,0x4229,0x4249,0x4208,0x4a69,0x4208,0x3a08,0x4249,0x4249,0x4a8a,0x4a49,0x4a49,0x4a8a,0x4a6a,0x4229,0x4209,0x4249,0x4249,0x4228,0x4229,0x5aec,0x5acb,0x52ab,0x4a6a,0x4249,0x4a8a,0x4a8a,0x4a89,0x4a8a,0x4248,0x4228,0x528a,0x5aeb,0x7bef,0x52cb,0x5acb,0x4a8a,0x4aaa,0x4a8a,0x52aa,0x4a69,0x528a,0x528a,0x5aab,0x5aec,0x528b,0x630c,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1062,0x1082,0x1081,0x18c3,0x2124,0x2944,0x3165,0x2944,0x2944,0x2944,0x2944,0x2103,0x2124,0x2124,0x2103,0x2103,0x2103,0x2104,0x2924,0x2124,0x2124,0x2924,0x3165,0x2103,0x10a2,0x0861,0x0861,0x10a2,0x2945,0x39c6,0x2123,0x20e3,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x18c2,0x1082,0x0861,0x0861,0x18c3,0x2965,0x3185,0x2924,0x2124,0x2924,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2924,0x2924,0x2924,0x2965,0x2965,0x2965,0x3185,0x3185,0x2104,0x1082,0x0861,0x0861,0x18c2,0x3164,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x528a,0x4a69,0x5aeb,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x5289,0x4228,0x4a6a,0x4229,0x4209,0x4a49,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4a8a,0x4a6a,0x4a49,0x52aa,0x4248,0x52aa,0x4a8a,0x4a8a,0x4249,0x4208,0x52aa,0x3a08,0x4228,0x4228,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a69,0x4a49,0x4a6a,0x4a69,0x4a49,0x4a6a,0x4249,0x4228,0x4a89,0x4a69,0x4269,0x4a69,0x4229,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x3a08,0x3a28,0x3a07,0x3a07,0x3a28,0x3a08,0x4208,0x4228,0x3a08,0x4249,0x3a08,0x3a08,0x39e8,0x4228,0x3a07,0x3a08,0x4208,0x39e7,0x39c7,0x3a08,0x4229,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c7,0x3a08,0x39e7,0x3a08,0x4248,0x4208,0x4208,0x4207,0x528a,0x422a,0x39c8,0x31a7,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x4a49,0x31c7,0x31a7,0x39e8,0x3a07,0x4208,0x3a08,0x39e8,0x31c7, +0x31c7,0x31a6,0x2986,0x2986,0x2986,0x31c7,0x3a08,0x39e7,0x39e7,0x39e7,0x31a7,0x31a7,0x3186,0x39c7,0x39c7,0x3a08,0x3a08,0x31e7,0x3a08,0x3a28,0x3207,0x39e7,0x3a08,0x3a08,0x39c7,0x31c7,0x39c7,0x39e8,0x4229,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x31e8,0x3208,0x3a08,0x31a7,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3208,0x426a,0x426a,0x3a08,0x3a48,0x4269,0x31c7,0x3a08,0x4a6a,0x4a8a,0x3a28,0x3a28,0x3a28,0x4248,0x4228,0x4229,0x4249,0x4229,0x4228,0x4a69,0x4a89,0x4249,0x4249,0x4269,0x39e8,0x52cb,0x4a8a,0x4a69,0x4208,0x4aaa,0x52cb,0x3a08,0x4229,0x4229,0x4a49,0x4249,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a08,0x4a8a,0x4a6a,0x4a49,0x528a,0x4a69,0x528a,0x528a,0x4a8a,0x52cb,0x52ca,0x4aaa,0x4a8a,0x5acb,0x526a,0x528a,0x634d,0x5aeb,0x5acb,0x52aa,0x4a89,0x52cb,0x632c,0x4228,0x528b,0x6b4d,0x5acc,0x4a8a,0x528a,0x528a,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18c3,0x18a2,0x1062,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2904,0x2944,0x2965,0x3165,0x3165,0x2924,0x2944,0x2944,0x2944,0x2944,0x2945,0x2945,0x3165,0x3165,0x2944,0x2103,0x2944,0x2103,0x10a2,0x0861,0x0861,0x18a3,0x2945,0x3186,0x18e3,0x2124,0x2945,0x2944,0x2944,0x2924,0x2924,0x2124,0x2924,0x2944,0x2124,0x2124,0x2124,0x2924,0x2103,0x18c2,0x20e3,0x18c3,0x1082,0x0861,0x0861,0x18e3,0x2965,0x2965,0x2104,0x2944,0x2945,0x3165,0x3165,0x3185,0x3185,0x3186,0x3165,0x2965,0x2945,0x2965,0x2965,0x3185,0x2104,0x2104,0x2944,0x18e3,0x1082,0x0861,0x0861,0x18c3,0x2944,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2924,0x5acb,0x5aec,0x5aeb,0x4a49,0x52ab,0x52aa,0x4aaa,0x52eb,0x4248,0x4a69,0x52ca,0x528a,0x4a49,0x4a8a,0x4249,0x4269,0x4269,0x4a8a,0x4a69,0x4a8a,0x4229,0x4a6a,0x5acb,0x4249,0x4228,0x4a69,0x4249,0x4a49,0x39e8,0x39e8,0x4269,0x52cb,0x4a69,0x4228,0x4a49,0x4229,0x4a49,0x5aec,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x4208,0x3a08,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x31c7,0x4249,0x4249,0x4228,0x39e7,0x4248,0x39e7,0x4208,0x4269,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x3a08,0x4228,0x4208,0x39e7,0x39e7,0x31a7,0x4249,0x4269,0x3a07,0x31a6,0x3a08,0x4248,0x39c7,0x3a08,0x4228,0x31c6,0x31c7,0x31c7,0x3a08,0x3a28,0x31e7,0x2985,0x528a,0x52aa,0x39e7,0x4249,0x39e8,0x39c8,0x39c7,0x39e8,0x4208,0x31a6,0x4248,0x3a08,0x39e7,0x39e8,0x31c7,0x39c7,0x4208,0x4a69,0x4228,0x2966,0x31c7, +0x39e7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31a6,0x39e7,0x31a6,0x31a7,0x39c7,0x39e7,0x39c7,0x4228,0x3a08,0x39e8,0x31c7,0x39e7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e8,0x39e7,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c7,0x31a7,0x39e7,0x31e7,0x31a6,0x31c7,0x31a7,0x39c8,0x39e8,0x3a09,0x3a08,0x39e8,0x3a08,0x4248,0x4268,0x4aaa,0x3a08,0x4249,0x4208,0x4a49,0x4249,0x4249,0x39e7,0x4229,0x4229,0x4a49,0x4249,0x39e8,0x4229,0x4249,0x4249,0x4249,0x4228,0x3a08,0x4249,0x5acb,0x4a6a,0x4249,0x4249,0x52cb,0x4a8a,0x4208,0x4a49,0x4229,0x4a6a,0x4a49,0x4269,0x4aaa,0x4a8a,0x4a69,0x634c,0x52aa,0x4a8a,0x4249,0x4a8a,0x4228,0x4a49,0x52aa,0x4a8a,0x4a69,0x52cb,0x52cb,0x4a8a,0x4a8b,0x4a6a,0x52ab,0x528a,0x630c,0x630c,0x52aa,0x5b0b,0x4a8a,0x52cb,0x5aec,0x52ab,0x52ab,0x5b0c,0x52ec,0x4a69,0x52cb,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x1082,0x1082,0x2924,0x2944,0x2945,0x2945,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3165,0x2103,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x18a2,0x18a2,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2124,0x2944,0x2944,0x2944,0x2124,0x2124,0x2945,0x3165,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18c3,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2924,0x2945,0x2945,0x3186,0x2104,0x1082,0x18c2,0x10a2,0x1082,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x10a2,0x18c3,0x18c3,0x2924,0x4a49,0x4a8a,0x4a6a,0x4229,0x4a6a,0x528b,0x4a8a,0x52cb,0x4a49,0x4249,0x4a69,0x52aa,0x52cb,0x4a69,0x4a89,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x528a,0x4249,0x4a69,0x52aa,0x39e7,0x4228,0x4249,0x52aa,0x4228,0x4249,0x4a49,0x4249,0x4228,0x528a,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x39e8,0x4a6a,0x4249,0x39e7,0x4249,0x39e8,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x3a28,0x4228,0x4248,0x39e7,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x39e7,0x39e8,0x4249,0x4228,0x39e7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e7,0x31c7,0x4208,0x39c7,0x39e7,0x4228,0x31c7,0x4228,0x4228,0x3a08,0x4228,0x4249,0x31c7,0x4228,0x4228,0x3a07,0x4249,0x528a,0x39c7,0x39e7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x39c6,0x4248,0x39e7,0x39e7,0x4a6a,0x31a6,0x39e7,0x31a7,0x3a08, +0x31c7,0x31a7,0x3186,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x39e7,0x31c7,0x31a6,0x31a7,0x39c7,0x31a7,0x39c7,0x31c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x2986,0x31c7,0x3a08,0x39e8,0x3a09,0x3a09,0x3a08,0x29c7,0x31c7,0x31e7,0x3a07,0x39e7,0x31c7,0x2986,0x29a6,0x31a6,0x31e7,0x31a7,0x31c7,0x31c7,0x31e8,0x39e8,0x39e8,0x424a,0x4a8a,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x4208,0x4208,0x39e8,0x39e8,0x31c7,0x39e8,0x526a,0x4a49,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4228,0x4249,0x4a6a,0x4249,0x4249,0x4a8a,0x4229,0x4208,0x4a49,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a6a,0x4a49,0x4a6a,0x4a49,0x52cb,0x4aaa,0x4269,0x4a69,0x52cb,0x52cb,0x4a8a,0x4228,0x52aa,0x52cb,0x4a6a,0x632d,0x5acb,0x4a49,0x52ab,0x5acb,0x5aca,0x4a69,0x52ab,0x4a69,0x52cb,0x52cb,0x4a8a,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x18a2,0x0861,0x0841,0x0861,0x2924,0x2924,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2944,0x0861,0x0861,0x1082,0x0861,0x0861,0x10a2,0x1082,0x0841,0x18c3,0x2944,0x2924,0x2925,0x2945,0x2924,0x2944,0x2964,0x3164,0x2944,0x2944,0x2924,0x2944,0x2945,0x3165,0x18c2,0x0841,0x1082,0x1082,0x0861,0x1082,0x10a2,0x1061,0x0861,0x2104,0x2124,0x2924,0x2924,0x2945,0x2945,0x2945,0x2964,0x2944,0x2944,0x2925,0x2945,0x2925,0x2965,0x2945,0x0841,0x0841,0x1082,0x1062,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x18a3,0x18c3,0x18c3,0x2124,0x4a69,0x5aeb,0x4a6a,0x52aa,0x528a,0x528a,0x4a49,0x52ab,0x4249,0x4228,0x3a08,0x52eb,0x52aa,0x4a69,0x5acb,0x4a69,0x4a49,0x4228,0x4a49,0x4208,0x4a6a,0x4a6a,0x3a08,0x4a8a,0x52aa,0x4249,0x4a69,0x4a49,0x4a49,0x4a69,0x3a08,0x4a49,0x39e7,0x4a69,0x4a89,0x52aa,0x4248,0x4a49,0x4248,0x4228,0x4a49,0x52aa,0x4a69,0x52aa,0x4a69,0x4228,0x528a,0x4a6a,0x4229,0x4229,0x39e7,0x528a,0x4a69,0x39e7,0x4249,0x4229,0x3a08,0x3a08,0x31a6,0x4249,0x4249,0x39c7,0x3a08,0x4248,0x3a08,0x4a89,0x4228,0x4208,0x3a07,0x39e7,0x39c7,0x39e8,0x4a49,0x528a,0x39e8,0x39e8,0x39c8,0x31c7,0x31a6,0x3a08,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e8,0x4a69,0x4228,0x4a69,0x31a6,0x3186,0x39e7,0x39e7,0x39e7,0x4229,0x4a6a,0x4228,0x39e7,0x4248,0x4248,0x4228,0x4249,0x4228,0x39e7,0x3a08,0x31e7,0x39e7,0x39c7,0x29a6,0x31c7, +0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x39e7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a6,0x31c7,0x31a7,0x4249,0x4249,0x2986,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x31c7,0x39c7,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x3a08,0x31e7,0x29a6,0x31e7,0x39e7,0x4228,0x39e7,0x4249,0x4229,0x3a08,0x4229,0x3a08,0x3a08,0x4269,0x4229,0x31e8,0x3a08,0x3a08,0x4229,0x528a,0x528a,0x4228,0x31a7,0x4228,0x3a08,0x3a08,0x4a49,0x4a69,0x4228,0x4249,0x4229,0x4228,0x5acb,0x3a08,0x428a,0x428a,0x3a29,0x3a28,0x4249,0x52aa,0x4a89,0x4a89,0x4a69,0x4a6a,0x4a6a,0x4249,0x4a49,0x4a4a,0x5aeb,0x4a69,0x4a49,0x4a6a,0x5acc,0x52ab,0x52ab,0x4a49,0x4a6a,0x4249,0x5aec,0x5aeb,0x528a,0x5aeb,0x632c,0x5acb,0x4a69,0x52ab,0x4a6a,0x424a,0x4a8a,0x52ca,0x52cb,0x5b2c,0x4a8a,0x5b0c,0x630c,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0020,0x0861,0x2124,0x2124,0x2945,0x2945,0x2925,0x2945,0x3185,0x39a4,0x39a4,0x39a5,0x3165,0x2945,0x2945,0x2965,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0020,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c4,0x5a64,0x5a84,0x4204,0x2944,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1061,0x1082,0x1082,0x0841,0x0861,0x2104,0x2925,0x2945,0x2945,0x2945,0x3185,0x4a25,0x5244,0x4204,0x3185,0x2945,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0841,0x18c3,0x2904,0x0861,0x0861,0x10a2,0x18c3,0x18c2,0x2944,0x528a,0x4a49,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4a6a,0x4228,0x5289,0x4a89,0x4a69,0x4229,0x4a69,0x4a49,0x52aa,0x4228,0x4a49,0x4a8a,0x3a28,0x3a28,0x4a8a,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a49,0x4249,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4228,0x4a8a,0x4a8a,0x3a08,0x5aeb,0x528a,0x4208,0x4a49,0x4a49,0x4a6a,0x4208,0x4229,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x39e7,0x4229,0x3a08,0x39e7,0x3a08,0x4228,0x4208,0x39c7,0x31e7,0x31c7,0x3a08,0x4a69,0x4a69,0x31a6,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e8,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x39c7,0x4208,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x4208,0x39c7,0x39e8,0x31c7,0x31c7,0x4228,0x39e7,0x31a7,0x39c7,0x31c7,0x3186,0x39c8,0x31e7,0x3a08,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31e7,0x39e7,0x39e8,0x2966,0x2986, +0x2966,0x2986,0x31a7,0x31c7,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x39e8,0x3a08,0x39e7,0x31a6,0x31c7,0x4228,0x4a89,0x4228,0x39e7,0x39e7,0x3186,0x31a7,0x39e8,0x4249,0x39e7,0x31a6,0x31a6,0x3a28,0x31e7,0x3a08,0x4a49,0x528a,0x31c7,0x3a29,0x39e8,0x3a08,0x4a69,0x4229,0x4208,0x4229,0x4a49,0x4229,0x3a08,0x3a08,0x4249,0x52aa,0x4a48,0x4228,0x39e8,0x39e8,0x31e8,0x31e8,0x4229,0x528a,0x41e8,0x39e8,0x4208,0x4a6a,0x4a6a,0x4248,0x4229,0x4249,0x4249,0x4a4a,0x4249,0x52cb,0x4a4a,0x4a6a,0x4229,0x634d,0x52cb,0x4249,0x52ab,0x52aa,0x4a69,0x3a28,0x4a8a,0x4209,0x3a09,0x4a6a,0x4a6a,0x4a49,0x5aeb,0x5b0c,0x634c,0x5269,0x5acb,0x634d,0x4a8a,0x52ab,0x528a,0x4a4a,0x528a,0x52ab,0x52cb,0x5aeb,0x632d,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2925,0x2925,0x2925,0x3165,0x5265,0x5a64,0x62c4,0x6b04,0x39c4,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2945,0x2945,0x2964,0x7324,0x7303,0x7304,0x7b64,0x3984,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x0861,0x2104,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b24,0x6ae4,0x7344,0x5244,0x2965,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0861,0x18c3,0x2104,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x2944,0x528b,0x4a29,0x4228,0x5289,0x528a,0x4a69,0x4228,0x4a69,0x528a,0x52aa,0x4248,0x4a29,0x4229,0x4a29,0x4229,0x528a,0x4229,0x4249,0x4a69,0x4a69,0x3a07,0x52cb,0x4a49,0x528a,0x4a8a,0x4228,0x4a89,0x4248,0x4228,0x4249,0x4a49,0x4a69,0x4a49,0x3a07,0x4228,0x4a69,0x4a8a,0x3a08,0x4249,0x4a8a,0x4a69,0x52aa,0x4a6a,0x4209,0x528a,0x528a,0x4a49,0x4249,0x4249,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x4228,0x3a08,0x31e7,0x3a08,0x3a08,0x4a49,0x4a29,0x31a7,0x3a08,0x31e7,0x4a69,0x3a08,0x3a08,0x39c7,0x3186,0x39e7,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x31a7,0x39c7,0x31a7,0x39e8,0x39c7,0x39e8,0x31a7,0x39e7,0x31a6,0x4228,0x2985,0x4208,0x4208,0x39e8,0x3a08,0x31c7,0x39e7,0x31c7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x2986,0x39e7,0x31a6,0x31c7,0x3a28,0x39e8,0x31a7,0x3187,0x31a7,0x3a08,0x4228,0x31c7,0x31a7,0x2966,0x2986, +0x2966,0x2965,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x31c7,0x31c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x39e7,0x39e7,0x31c7,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x31a7,0x4209,0x39c8,0x39e8,0x3186,0x39c7,0x4208,0x3a28,0x39e7,0x4228,0x4228,0x39e8,0x39e8,0x3a08,0x3a08,0x4208,0x4a49,0x4249,0x41e8,0x4249,0x4a6a,0x3a08,0x4a8a,0x4a8a,0x3a08,0x4269,0x4249,0x4a49,0x4208,0x39e8,0x31a7,0x39e8,0x3a08,0x39e8,0x39e8,0x4209,0x4208,0x4a49,0x4a29,0x528a,0x4a6a,0x4a49,0x5acb,0x5aeb,0x3a28,0x4a8a,0x4229,0x4249,0x4a8a,0x4249,0x3a28,0x4a6a,0x5aeb,0x4a8a,0x4269,0x52ca,0x4a8a,0x4249,0x3a28,0x4249,0x4a49,0x4229,0x5acb,0x52aa,0x52aa,0x4208,0x5b0c,0x632c,0x31e8,0x528a,0x5acb,0x4a4a,0x5aec,0x5aeb,0x52aa,0x52cb,0x52ab,0x52aa,0x4a89,0x4249,0x5aec,0x4229,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2924,0x2925,0x2925,0x3165,0x5245,0x5a64,0x8384,0x7b63,0x39a4,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2925,0x2925,0x3184,0x8be4,0x7b23,0x7304,0x9404,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7b65,0x8344,0x5224,0x83a5,0x7304,0x3145,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x2104,0x0861,0x0861,0x10a2,0x18c3,0x20e3,0x2924,0x4a49,0x4a69,0x4208,0x4249,0x4249,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4228,0x4a69,0x4229,0x4208,0x39c7,0x4a69,0x4228,0x4a6a,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x3a08,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4269,0x4229,0x39e8,0x3a08,0x528a,0x4228,0x4228,0x4a69,0x4229,0x4208,0x4a6a,0x4229,0x4249,0x4a69,0x4a69,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x31a6,0x31a6,0x31c6,0x4228,0x4a8a,0x39e8,0x4249,0x4249,0x4249,0x4249,0x4208,0x4208,0x31a6,0x31a6,0x39e8,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x39c7,0x39c7,0x31a7,0x39c8,0x39e8,0x31a6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x39c7,0x31a7,0x39e7,0x31a7,0x2966,0x31a6,0x29a6,0x31c7,0x31c7,0x2966,0x31a6,0x31a6,0x39c7,0x31c6,0x31e7,0x31e7,0x39e7,0x39c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a7, +0x2965,0x2965,0x2986,0x29a6,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31e7,0x39e7,0x31c7,0x31a6,0x31a6,0x31c7,0x31a7,0x31c7,0x31a7,0x39c7,0x39e7,0x4228,0x39e7,0x31a6,0x29a6,0x31c7,0x31c7,0x39c7,0x39e8,0x2986,0x2986,0x31c7,0x29a7,0x2986,0x2986,0x39e7,0x39c7,0x39e7,0x39e8,0x3a08,0x4249,0x4a6a,0x4229,0x4a69,0x31c7,0x39e7,0x39c8,0x4229,0x31a7,0x31a7,0x4249,0x4249,0x3a08,0x52cb,0x4249,0x3a08,0x31c8,0x4a6a,0x39e8,0x4208,0x3a08,0x31a7,0x31e7,0x3a08,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4229,0x4249,0x4229,0x4229,0x4a8a,0x4249,0x31c7,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x3a08,0x4249,0x52ab,0x4a6a,0x4228,0x4a8a,0x5aeb,0x4a49,0x428a,0x426a,0x4229,0x4a6a,0x4a6a,0x4a8a,0x4249,0x52cb,0x528a,0x4a6a,0x630c,0x4208,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a49,0x4a49,0x528a,0x52ab,0x4a69,0x4a49,0x528a,0x4a4a,0x18a3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2124,0x2924,0x2945,0x2925,0x2945,0x3165,0x5244,0x8384,0x5223,0x3164,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x3184,0x8bc4,0x8363,0x7b44,0x93e4,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7325,0x8364,0x5244,0x8bc4,0x8364,0x3144,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x2103,0x20e3,0x0861,0x1061,0x10a2,0x18c3,0x18e3,0x2924,0x4249,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4228,0x4229,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x39e8,0x3a28,0x3a28,0x3a08,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x4249,0x3a08,0x4249,0x4208,0x4a69,0x528a,0x528a,0x4a69,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4a69,0x4a6a,0x39e8,0x31a7,0x39e8,0x31c6,0x3a07,0x4229,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x3a08,0x31a6,0x3186,0x39c7,0x4208,0x3a07,0x39e7,0x4208,0x4a49,0x4a69,0x39c7,0x4249,0x4229,0x4229,0x3a08,0x39c8,0x4229,0x39c7,0x31a7,0x4228,0x39c7,0x39c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e8,0x31a6,0x31a6,0x31c7,0x31c6,0x31c7,0x3a08,0x31a7,0x2966,0x31a7,0x39c7,0x31a7,0x4208,0x31a6,0x29a6,0x2986,0x3186,0x31a6,0x3185,0x39a6,0x2966,0x31c7,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x3186,0x2986,0x31c6,0x31a6,0x31c7,0x3186, +0x2986,0x31c7,0x2986,0x2965,0x2986,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x31c7,0x39c7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x39c8,0x39e8,0x39c7,0x31a7,0x31c7,0x31a7,0x31a7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x39e8,0x3a08,0x4229,0x39e8,0x39e8,0x4208,0x39e8,0x4249,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x4208,0x39c7,0x39e8,0x4249,0x39e7,0x31c7,0x31c8,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3a08,0x3a28,0x3a28,0x39e8,0x3a28,0x4269,0x4269,0x4269,0x4249,0x3a08,0x4229,0x4a6a,0x4229,0x5acc,0x4249,0x4229,0x4249,0x39e8,0x4a49,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4208,0x4a29,0x4a49,0x4229,0x4249,0x3a08,0x3a08,0x4229,0x3a08,0x4249,0x4a6a,0x528a,0x4a69,0x4a49,0x4229,0x4249,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2924,0x2944,0x2924,0x2945,0x2945,0x3164,0x7344,0x7303,0x3164,0x2944,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0881,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x39c4,0x93e5,0x6ac3,0x62a4,0x9c04,0x4a03,0x2925,0x2945,0x2945,0x2965,0x18c3,0x0020,0x0861,0x1082,0x0861,0x1082,0x1082,0x0020,0x1081,0x2124,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b44,0x6ac3,0x9404,0x7b24,0x2944,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x18e3,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x2124,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x4208,0x4229,0x4229,0x39e8,0x4208,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x4208,0x39c7,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39e8,0x4a29,0x4a49,0x4229,0x2986,0x31a7,0x4208,0x4208,0x39e8,0x31c7,0x2986,0x29a6,0x31c7,0x39e8,0x39c7,0x31a7,0x52aa,0x4a69,0x4228,0x3a28,0x4229,0x3a08,0x39c7,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x41e7,0x3186,0x2945,0x2965,0x2125,0x2145,0x2145,0x2966,0x2965,0x2966,0x2125,0x2125,0x2104,0x2125,0x2945,0x2104,0x2124,0x2124,0x2104,0x2124,0x1904,0x2125,0x2125,0x2125,0x18e4,0x4228,0x4228,0x3186,0x31c7,0x31a6,0x2966,0x2966,0x2965,0x3186,0x2966,0x2966,0x2966,0x2965,0x2966,0x2986,0x3186,0x2965,0x2945,0x3186,0x2986,0x3186,0x2966,0x2945,0x2965,0x2965,0x2124,0x2945,0x2145,0x2145,0x2165,0x2986,0x2965, +0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a7,0x2966,0x39e8,0x39c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31a7,0x39c7,0x3a08,0x39e8,0x4209,0x39c8,0x39c8,0x4208,0x39e8,0x39e8,0x39c7,0x31a7,0x29a6,0x31c6,0x31e7,0x39e7,0x4228,0x39c7,0x39c8,0x39c8,0x39c8,0x41e8,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x31c7,0x4229,0x4208,0x39e7,0x4208,0x39c7,0x4209,0x4209,0x4a8a,0x4229,0x4a6a,0x4229,0x4249,0x4249,0x4a6a,0x4a49,0x4209,0x4209,0x39e8,0x41e8,0x4a4a,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4229,0x39e8,0x4208,0x4a49,0x4229,0x4208,0x41e8,0x4208,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2944,0x2924,0x2924,0x2924,0x2124,0x41e4,0x93e4,0x5223,0x2924,0x2944,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18e3,0x2945,0x2945,0x2925,0x2124,0x41e5,0x93e5,0x6283,0x5264,0x93e4,0x4a03,0x2925,0x2925,0x2925,0x2965,0x18c3,0x0020,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x1082,0x2124,0x2945,0x2945,0x2945,0x2945,0x4a45,0x7324,0x62c4,0x93e4,0x6284,0x2945,0x2945,0x2945,0x2945,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18c3,0x18e3,0x2944,0x39e7,0x4228,0x4228,0x29a6,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x4207,0x31c6,0x39e7,0x4228,0x39e7,0x4228,0x4a48,0x4248,0x39e7,0x0842,0x0000,0x1904,0x18e3,0x18c3,0x10c3,0x1083,0x1082,0x18c3,0x10a3,0x18e4,0x2104,0x2104,0x18e4,0x18c4,0x10c3,0x2145,0x2125,0x1904,0x1924,0x1904,0x1904,0x18e3,0x1924,0x634c,0x636c,0x52aa,0x4a8a,0x5289,0x4228,0x4208,0x39e7,0x39e7,0x39c7,0x31a6,0x4208,0x4208,0x41e8,0x2945,0x1082,0x1083,0x1083,0x10a2,0x18e3,0x10a2,0x18c3,0x18e4,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x2124,0x1903,0x1904,0x18c3,0x18c3,0x18c3,0x2104,0x2125,0x2986,0x3a07,0x4a89,0x29a6,0x29a6,0x2965,0x2145,0x2124,0x2124,0x2144,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2104,0x2125,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1904,0x18e3,0x2125,0x2965,0x3a08,0x4248,0x4aaa,0x4a8a, +0x2945,0x2145,0x2144,0x2945,0x2965,0x2945,0x2966,0x2965,0x2986,0x2986,0x2945,0x3186,0x39c7,0x31a6,0x3186,0x2985,0x3186,0x2985,0x2965,0x3186,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3a07,0x39c6,0x31a6,0x3186,0x31a6,0x3186,0x2104,0x2104,0x18e4,0x18c3,0x10c4,0x10a3,0x10a3,0x18e4,0x18a3,0x18c3,0x20e4,0x18c3,0x18a3,0x1082,0x18c3,0x18c4,0x18c4,0x18c4,0x10a3,0x18e4,0x10a3,0x18e4,0x18c3,0x1083,0x2104,0x5aeb,0x4a8a,0x31c7,0x39e7,0x31a6,0x3186,0x39e8,0x3a08,0x31c7,0x31c7,0x4208,0x4208,0x3a08,0x52aa,0x4a49,0x0000,0x18c3,0x18a3,0x18a2,0x18a3,0x1083,0x18a3,0x1083,0x18c4,0x1083,0x18c4,0x1083,0x2105,0x20e4,0x10a3,0x0842,0x0862,0x0021,0x1063,0x1063,0x1083,0x18c4,0x0862,0x31a7,0x52aa,0x3a08,0x39e7,0x2986,0x31c6,0x31c7,0x31a6,0x39e7,0x39c7,0x2985,0x39c6,0x39e7,0x39c6,0x39e6,0x39e7,0x39e7,0x4228,0x4228,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x2104,0x2924,0x2124,0x2124,0x2124,0x2124,0x5245,0x8384,0x3983,0x2924,0x2924,0x2924,0x2925,0x2945,0x2124,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0841,0x18c3,0x2925,0x2945,0x2925,0x2924,0x3185,0x6ae5,0x6ac4,0x62a4,0x7304,0x3984,0x2924,0x2924,0x2925,0x2945,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x0861,0x1082,0x2124,0x2925,0x2925,0x2924,0x2944,0x4a25,0x7325,0x6ae4,0x7b24,0x41c4,0x2945,0x2945,0x2945,0x2945,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x2965,0x5b4c,0x5b4c,0x5b4c,0x8450,0x73ce,0x73ce,0x7c30,0x8450,0x73ee,0x5b0b,0x632c,0x8450,0x6bae,0x6bce,0x6bae,0x632b,0x5b0b,0x634c,0x5b0c,0x4229,0x5aec,0x2965,0x4a89,0x52ca,0x52eb,0x4268,0x52eb,0x5b0b,0x52ea,0x5b0b,0x4aaa,0x4a89,0x4228,0x4228,0x29a7,0x4269,0x4249,0x31e7,0x4249,0x4269,0x4aaa,0x638d,0x31e7,0x4a69,0x4229,0x4249,0x4248,0x4228,0x4208,0x4228,0x39e8,0x4249,0x3a08,0x4269,0x5aec,0x52aa,0x4a69,0x3a07,0x2124,0x2925,0x2104,0x2945,0x31a7,0x2965,0x10a3,0x0001,0x1904,0x10c2,0x1904,0x10c3,0x18e3,0x2124,0x2985,0x2165,0x0882,0x2965,0x2145,0x2124,0x2124,0x2945,0x39c7,0x2965,0x5aeb,0x4a6a,0x2166,0x10e4,0x1904,0x1904,0x10c3,0x18e3,0x18e3,0x18c3,0x2104,0x18e3,0x10c3,0x18e3,0x1904,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x2165,0x4248,0x4a8a,0x4a4a, +0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2125,0x2124,0x2945,0x2966,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2944,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2125,0x4a69,0x632c,0x0882,0x2124,0x18e3,0x1903,0x18e3,0x10a3,0x18e4,0x18e4,0x10c3,0x18e4,0x2125,0x2124,0x2165,0x2945,0x2124,0x2144,0x2945,0x2925,0x2124,0x2124,0x2104,0x1904,0x18e4,0x2104,0x4208,0x39e8,0x2145,0x2965,0x2965,0x2986,0x31a7,0x31a7,0x31a7,0x31c7,0x31e7,0x31e8,0x39e8,0x4269,0x31e7,0x39e6,0x4228,0x39e7,0x31a6,0x2165,0x2985,0x31c6,0x31e7,0x31c7,0x29c6,0x29c6,0x3207,0x3a07,0x4248,0x3a08,0x4a8a,0x52ab,0x4aab,0x4269,0x428a,0x4a89,0x39e7,0x1904,0x4228,0x5aeb,0x4a8a,0x52ca,0x636d,0x73ef,0x638e,0x7bf0,0x73ce,0x634c,0x7c0f,0x8450,0x8450,0x94d2,0x9d33,0x8491,0x8cd3,0x8cd2,0x9534,0x18e3,0x1082,0x1081,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2924,0x2124,0x2924,0x2924,0x2124,0x41e5,0x5244,0x2944,0x2924,0x2124,0x2924,0x2945,0x2945,0x2103,0x10a2,0x1081,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c2,0x2104,0x2125,0x2124,0x2124,0x2924,0x39c4,0x4a24,0x4a04,0x41c4,0x2944,0x2124,0x2124,0x2924,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c2,0x18c3,0x2104,0x2945,0x2925,0x2924,0x2925,0x39a5,0x5245,0x5245,0x4a05,0x3165,0x2945,0x2945,0x2965,0x2965,0x2104,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x3186,0x84b3,0x7c51,0x8471,0xa575,0x9d14,0x8472,0x94f4,0x9d55,0xa595,0x9513,0x8cd3,0x94f4,0x7c52,0x8492,0x8c92,0x6b8e,0x632e,0x636e,0x52cb,0x4a69,0x5b0b,0x31c7,0x4a6a,0x4a8b,0x4a6a,0x4aaa,0x52eb,0x4a8a,0x4aaa,0x4a8a,0x4249,0x39e7,0x3a08,0x29a7,0x4269,0x29c7,0x31e7,0x3a08,0x31e8,0x31e7,0x4aab,0x8472,0x3a08,0x634d,0x52aa,0x31c8,0x31a7,0x39c8,0x3a08,0x29a7,0x3208,0x3a08,0x29a6,0x52aa,0x634d,0x528a,0x4a8a,0x4249,0x2124,0x2924,0x2104,0x2145,0x2965,0x10c3,0x4269,0x5b4c,0x3a08,0x5b0c,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x634c,0x52eb,0x6bae,0x2986,0x2144,0x2965,0x2144,0x2124,0x39c7,0x31c6,0x5aec,0x52ab,0x39c8,0x10a3,0x18e3,0x1904,0x10e3,0x10c3,0x10c3,0x10a3,0x2104,0x18e3,0x10e3,0x10c3,0x18e4,0x1904,0x18e3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3,0x10c3,0x18c3,0x10a2,0x2986,0x4229,0x18e4, +0x18e3,0x18e3,0x2124,0x2124,0x1904,0x1904,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x2104,0x1904,0x10e3,0x18e4,0x10c3,0x18e4,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x0001,0x630c,0x840f,0x0000,0x2965,0x18e3,0x1904,0x18e3,0x2965,0x1903,0x2104,0x31a6,0x1944,0x2985,0x2103,0x2944,0x2986,0x31c6,0x3a07,0x31c6,0x3a07,0x1924,0x2985,0x2124,0x1904,0x2145,0x2104,0x18e4,0x18e5,0x18e4,0x18e4,0x1904,0x2125,0x18e4,0x18c4,0x31a7,0x3a08,0x29c7,0x31c8,0x29a7,0x52ab,0x4a8a,0x52cb,0x4aaa,0x3a29,0x31e7,0x31c7,0x2166,0x29a6,0x39e8,0x31c7,0x3a49,0x3a69,0x3a28,0x4249,0x4269,0x4269,0x4a8a,0x4a8a,0x52ec,0x4acb,0x4aab,0x4aab,0x3a29,0x31a6,0x3a08,0x4a8a,0x5b0d,0x6bcf,0x7410,0x73f0,0x6bd0,0x73f0,0x73d0,0x7c0f,0x7c10,0x8452,0x8431,0x8c93,0xadf8,0x9535,0x8493,0x8cd4,0x9d55,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x2124,0x2124,0x2945,0x2945,0x2924,0x2945,0x2944,0x3164,0x3164,0x2924,0x2945,0x2925,0x2925,0x2945,0x2945,0x2924,0x2924,0x18c3,0x1081,0x0861,0x0861,0x10a2,0x2104,0x2964,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2944,0x18c2,0x1081,0x1082,0x1082,0x18e3,0x2944,0x2964,0x2945,0x3165,0x2945,0x2945,0x2945,0x2944,0x3165,0x39a5,0x3185,0x3165,0x3165,0x2965,0x3165,0x3185,0x2965,0x2924,0x20e3,0x10a2,0x0861,0x0861,0x0841,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x18a2,0x18e3,0x3186,0x8472,0x8493,0x8473,0x8c92,0x94f4,0x7c31,0x8c93,0x8473,0x9515,0x9d35,0x84b3,0x7411,0x6bb0,0x7bf1,0x94f4,0x73af,0x4a8c,0x52cd,0x426a,0x31c7,0x4228,0x4249,0x4a8a,0x4a6a,0x6b8e,0x7c10,0x6b6d,0x8430,0x6b8d,0x6b8d,0x634c,0x8c70,0x4a89,0x636c,0x6bae,0x636d,0x6b8e,0x73cf,0x1925,0x31a7,0x31a8,0x52ed,0x3a29,0x6b6f,0x424a,0x29a7,0x2966,0x2966,0x31a7,0x31a7,0x31c7,0x29a7,0x08c3,0x5aeb,0x7bef,0x4a8a,0x4229,0x2986,0x2945,0x2124,0x1904,0x18e4,0x39e7,0x2164,0x73ce,0x73ee,0x6bae,0x8470,0x52ca,0x7c0f,0x52eb,0x8430,0x634d,0x4a8a,0x8430,0x0040,0x31a6,0x2985,0x2144,0x2145,0x31c7,0x31c6,0x5acb,0x4a8a,0x3a08,0x0882,0x10c3,0x10e3,0x1904,0x10e3,0x10c3,0x10a3,0x18e3,0x1904,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x10c3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e3,0x18e4,0x10a3,0x10c3,0x10e4,0x2966,0x18e4, +0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x18e4,0x1083,0x528a,0x52aa,0x2144,0x2985,0x18e3,0x0800,0x52cb,0x5b4c,0x3248,0x530b,0x634d,0x52cb,0x4a89,0x52ca,0x636c,0x42a9,0x73ef,0x5b0b,0x6b8d,0x636c,0x530b,0x10e3,0x2145,0x1924,0x2124,0x2104,0x2104,0x1904,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x2125,0x3a09,0x29c8,0x29c7,0x29c7,0x4a8a,0x4228,0x52ec,0x426a,0x3208,0x31e7,0x2165,0x5b2c,0x6bae,0x4269,0x636d,0x5aeb,0x5b0c,0x5b2c,0x632c,0x6bae,0x73ce,0x6bae,0x8492,0x5b0d,0x424a,0x52ec,0x428b,0x3a09,0x31a7,0x39c8,0x422a,0x5b0d,0x636f,0x73f0,0x73f0,0x6bd0,0x6b8f,0x8431,0x8cb3,0x7c32,0x7411,0x8c94,0x7c53,0x8cb5,0x73f2,0x6bd1,0x8473,0x8cb4,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x1062,0x1061,0x10a2,0x2124,0x3165,0x2965,0x2924,0x2945,0x2924,0x2104,0x2104,0x2124,0x2104,0x2104,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x3165,0x2104,0x1082,0x0861,0x0861,0x18c3,0x2945,0x3185,0x2944,0x2104,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2924,0x39a5,0x39a6,0x2103,0x1081,0x0862,0x1082,0x18e3,0x3185,0x3185,0x2945,0x2945,0x2124,0x2924,0x2104,0x2104,0x2924,0x3165,0x3186,0x3165,0x3165,0x2925,0x2924,0x3165,0x3165,0x3165,0x2945,0x18c3,0x1061,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x1082,0x18a2,0x20e3,0x3186,0x8472,0x7412,0x7412,0x73f1,0x7c31,0xad97,0x7c32,0x8473,0x8cb4,0x8c94,0x6bb0,0x7c31,0x7c11,0x7c11,0x8452,0x634e,0x52cc,0x52cc,0x4a6b,0x31a7,0x39e7,0x4228,0x52eb,0x4a8a,0x6baf,0x7c10,0x73cf,0x8c71,0x7bf0,0x8451,0x5aeb,0x8cb2,0x634e,0x7c31,0x0064,0x4209,0x6b4e,0x738e,0x0001,0x39e8,0x2167,0x634e,0x4a6a,0x528b,0x4229,0x29a7,0x29a7,0x2966,0x3187,0x39e8,0x39e8,0x2966,0x10e3,0x52ca,0x7c10,0x632d,0x4249,0x31c7,0x2965,0x2945,0x18c3,0x2144,0x2985,0x2985,0x73ae,0x94d2,0x6b6d,0x8451,0x52ca,0x5289,0x738e,0x8c71,0x6b4d,0x4249,0x8431,0x0000,0x2966,0x3186,0x2986,0x2125,0x2965,0x39c7,0x5b0c,0x4249,0x39e8,0x3186,0x18e4,0x10e3,0x1904,0x18e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e4,0x1924,0x1904,0x10e3,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e4,0x1904,0x10a3,0x10c3,0x10e3,0x08a3,0x10c3, +0x10a2,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x10e3,0x10c3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x10c3,0x10e3,0x1904,0x18e4,0x18e3,0x10c3,0x31a7,0x2985,0x2965,0x2965,0x18e4,0x0000,0x6b8e,0x6baf,0x636d,0x5b0c,0x0000,0x6b6e,0x6b8d,0x73ef,0x740f,0x6b8e,0x7c0f,0x5b0c,0x73ef,0x7c2f,0x636c,0x0081,0x2145,0x2124,0x2104,0x2124,0x2125,0x1904,0x10e3,0x1903,0x18e3,0x18a3,0x18c3,0x18c3,0x10a3,0x2986,0x29c7,0x29c7,0x2987,0x4249,0x39e8,0x4aab,0x424a,0x31e8,0x31c7,0x0882,0x7c30,0x8471,0x638d,0x8491,0x6bad,0x73ee,0x73ae,0x7c0f,0x8c91,0x73ee,0x8c92,0x8472,0x4aab,0x4aab,0x4acc,0x428b,0x39e8,0x31a7,0x39e8,0x422a,0x73d0,0x8c93,0x7411,0x7410,0x73f0,0x73cf,0x6bd0,0x7411,0x73f1,0x6bd0,0x8cb3,0x7411,0x6bb0,0x7c31,0x94d3,0x7c51,0x7c33,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c3,0x1082,0x1062,0x0861,0x18c3,0x2104,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x18a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18e3,0x2104,0x20e4,0x1082,0x0861,0x0861,0x18c3,0x2124,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x3165,0x3185,0x2924,0x1082,0x0861,0x1082,0x20e3,0x2944,0x2924,0x20e3,0x18c3,0x18a2,0x18a3,0x18a2,0x18a3,0x18c3,0x2104,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x20e3,0x2104,0x2924,0x2124,0x18e3,0x1062,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18a2,0x20e3,0x39a6,0x9d35,0x4aee,0x6391,0x530e,0x8cd3,0xb5d7,0x6bd0,0x7c31,0x7411,0x73f1,0x73b0,0x73d0,0x73d0,0x6baf,0x6b8f,0x632e,0x4aab,0x4aab,0x422a,0x31a7,0x4208,0x4228,0x52eb,0x4aab,0x5b0d,0x73f0,0x8430,0x8430,0x6b8e,0x8450,0x5b0c,0x8451,0x634d,0x73af,0x632d,0x634e,0x5b0c,0x6b6e,0x0062,0x31e8,0x2186,0x5b2c,0x3a08,0x52aa,0x4a8a,0x29a6,0x31c8,0x2967,0x31a7,0x31c7,0x29a6,0x2965,0x2145,0x1944,0x632d,0x8451,0x31e8,0x31e8,0x2945,0x2104,0x10c2,0x2124,0x2145,0x10a2,0x52cb,0x632d,0x52ab,0x6b4e,0x5aec,0x5aeb,0x632c,0x5b0c,0x632d,0x31a7,0x5acb,0x10a3,0x2104,0x2945,0x2966,0x2965,0x2986,0x2965,0x52aa,0x4a6a,0x39e8,0x2946,0x18e4,0x18e3,0x1903,0x1904,0x10c3,0x18e3,0x18e3,0x10c2,0x1904,0x1924,0x2124,0x1904,0x10a3,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x1904,0x2124,0x10c3,0x10c3,0x10c3,0x1904,0x2125, +0x10c2,0x18c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x10c3,0x10c3,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18e4,0x18e3,0x10c3,0x10c3,0x1903,0x1903,0x18e3,0x10c3,0x3186,0x31a6,0x2924,0x2125,0x18e4,0x0042,0x6b6e,0x5aeb,0x39c7,0x632d,0x5aeb,0x6b8e,0x634d,0x7c10,0x7bcf,0x73ae,0x6bcf,0x5b2d,0x73cf,0x7bef,0x4248,0x1904,0x2124,0x2104,0x2104,0x2125,0x2145,0x29a7,0x10e3,0x1924,0x1903,0x18c2,0x39c6,0x2945,0x10a3,0x2986,0x29a6,0x2186,0x2987,0x426a,0x39e7,0x39e8,0x3a09,0x31a8,0x39c8,0x1023,0x8c51,0x73cf,0x634d,0x7c30,0x8430,0x8430,0x73ae,0x7c30,0x73ae,0x8430,0x8c92,0x73f0,0x428a,0x426a,0x3a49,0x3a08,0x31c7,0x31a6,0x4229,0x4a4a,0x6b8f,0x8493,0x6bf1,0x7411,0x6baf,0x6bb0,0x5b2f,0x52ee,0x5b2e,0x636f,0x6b6f,0x634f,0x5b2e,0x73af,0xa576,0x73f1,0x7c11,0x18c3,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x18c3,0x18a3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x1082,0x1062,0x0861,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a3,0x10a2,0x1061,0x1061,0x1061,0x18e3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x3186,0x8c93,0x6390,0x6bf2,0x6bd0,0x8451,0x8452,0x8493,0x7411,0x6bd0,0x636e,0x73d0,0x73d0,0x6baf,0x8452,0x8472,0x7410,0x4aec,0x4aac,0x422a,0x31a7,0x4208,0x3a08,0x426a,0x426a,0x4a8b,0x6b6e,0x52ab,0x5b0d,0x4a8b,0x52cb,0x4a8b,0x5acc,0x52ab,0x3a08,0x5b0c,0x426a,0x3a08,0x39e8,0x2146,0x31c7,0x29c7,0x4249,0x31a7,0x528b,0x424a,0x31e7,0x3a08,0x2166,0x2987,0x2986,0x2966,0x2986,0x31a7,0x2986,0x4249,0x6b6f,0x31e9,0x31c8,0x2125,0x2145,0x10e3,0x1904,0x1904,0x2125,0x1905,0x08a4,0x18c4,0x1084,0x18e4,0x2105,0x18e4,0x1063,0x18c5,0x20e5,0x0842,0x2125,0x2104,0x2104,0x2125,0x3186,0x31c7,0x0882,0x4208,0x4a49,0x31a7,0x1904,0x18e3,0x10c2,0x10e3,0x2145,0x18e3,0x2145,0x1904,0x10a2,0x18e3,0x2124,0x2124,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x10c3,0x18e3,0x2145,0x2966, +0x18c3,0x10c2,0x10c2,0x10c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x18e4,0x2145,0x2124,0x1904,0x18e3,0x10c3,0x18e3,0x18e3,0x10c3,0x18c3,0x2965,0x2965,0x1904,0x2124,0x18c3,0x18e4,0x31c7,0x18e4,0x18c4,0x4a29,0x630c,0x31c7,0x31c8,0x41e8,0x41e9,0x3187,0x424a,0x4a6a,0x31c8,0x2987,0x31c7,0x1904,0x2124,0x1903,0x1903,0x18e4,0x2146,0x2145,0x1904,0x2124,0x1924,0x3186,0x39c6,0x2104,0x2965,0x31c7,0x29a7,0x2986,0x31a7,0x4a6a,0x31a6,0x29a7,0x31e8,0x29c7,0x31c8,0x2966,0x5aed,0x31a8,0x52cc,0x3a09,0x52ac,0x5aed,0x73af,0x5b0c,0x632d,0x73af,0x632d,0x6baf,0x4a8a,0x428a,0x4249,0x3a08,0x31c7,0x2966,0x39e8,0x4a6b,0x4a8b,0x52ed,0x52ed,0x5b0e,0x6b8f,0x52ed,0x4acd,0x428c,0x634e,0x73d0,0x4aac,0x5b2d,0x5b6e,0x6baf,0x6bb0,0x636f,0x73d0,0x18e3,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x0861,0x0882,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1062,0x0861,0x0861,0x1061,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1081,0x0861,0x0861,0x1061,0x0861,0x1061,0x0861,0x0861,0x1062,0x1062,0x1061,0x0861,0x1061,0x1082,0x18c3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x2945,0x634f,0x636f,0x5b0e,0x5b2e,0x5b2e,0x6b6f,0x8473,0x73d0,0x5b0e,0x52ed,0x636f,0x6b8f,0x7c11,0x8452,0x8c73,0x7c11,0x5b2e,0x428b,0x424a,0x2966,0x4228,0x4229,0x424a,0x424b,0x422b,0x3a0a,0x4a6b,0x3a0a,0x424a,0x422a,0x3a09,0x31e9,0x3a09,0x52ec,0x4a8a,0x4209,0x5aec,0x52cb,0x2986,0x31c8,0x29a7,0x4a6a,0x31c8,0x4229,0x31c8,0x2986,0x2986,0x2966,0x2145,0x2145,0x2145,0x2966,0x2966,0x2966,0x2125,0x2947,0x39e8,0x2987,0x2124,0x1904,0x18e3,0x1904,0x2145,0x2104,0x1904,0x1904,0x18e4,0x18c3,0x10e3,0x2125,0x1905,0x18e4,0x18a3,0x10a3,0x18c3,0x10a3,0x18c3,0x2104,0x2125,0x18e3,0x10c2,0x31a6,0x52aa,0x39c7,0x2945,0x2125,0x2125,0x1904,0x1904,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x3186,0x2986,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965, +0x18c3,0x10c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x10c3,0x10a3,0x10c3,0x10c3,0x10a3,0x18e4,0x18e4,0x2104,0x2145,0x2124,0x2124,0x1904,0x18e3,0x18e4,0x1904,0x18e3,0x18e3,0x31c7,0x2965,0x18e3,0x2124,0x18e3,0x18e4,0x18c3,0x2104,0x2104,0x18c3,0x0000,0x2125,0x2945,0x20e4,0x2105,0x2946,0x2125,0x18e3,0x1904,0x2125,0x2124,0x2144,0x2124,0x2104,0x18e3,0x2125,0x2966,0x2125,0x1904,0x2104,0x2945,0x2965,0x3165,0x2965,0x31a6,0x31c7,0x2986,0x2986,0x31a7,0x4a6a,0x31a6,0x31c7,0x3a08,0x3208,0x3a28,0x31e8,0x2167,0x31a8,0x31a8,0x31a8,0x2987,0x2967,0x31c8,0x3a2a,0x422a,0x39e9,0x4a6b,0x4a6b,0x4249,0x4aaa,0x4a8a,0x4249,0x3a08,0x2124,0x4a6a,0x6baf,0x4aec,0x428b,0x4a6b,0x52cd,0x6bd0,0x5b2d,0x52ec,0x634e,0x638e,0x6baf,0x5b4d,0x73f0,0x6baf,0x5b4d,0x5b4e,0x5b0e,0x5b2e,0x18c3,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a2,0x18a2,0x20e3,0x2924,0x4209,0x4209,0x3a09,0x31c8,0x39c9,0x39c9,0x420a,0x420a,0x528c,0x4a4a,0x4209,0x422a,0x422a,0x4a6b,0x632e,0x738e,0x630c,0x52aa,0x4228,0x2945,0x2125,0x2125,0x2946,0x2967,0x2147,0x2146,0x2966,0x2966,0x2966,0x2986,0x2125,0x2125,0x2125,0x2966,0x2966,0x2125,0x2945,0x2986,0x1904,0x1904,0x2145,0x10e4,0x18e4,0x632d,0x52ab,0x4208,0x4208,0x39e7,0x3a07,0x3a08,0x31a6,0x39c7,0x39e7,0x4228,0x4228,0x39e8,0x4a69,0x39e7,0x18e3,0x18c2,0x2124,0x2965,0x2986,0x2145,0x18e3,0x10c3,0x18c3,0x2104,0x1904,0x18e3,0x2104,0x18e3,0x2144,0x2144,0x2945,0x2124,0x2144,0x2945,0x2966,0x2104,0x1903,0x31c6,0x4249,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x2985,0x31c6,0x2985,0x2985,0x31c6,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x2986,0x31a6,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x3186,0x3186, +0x1904,0x1904,0x1904,0x1904,0x1903,0x18e3,0x1904,0x1904,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18e4,0x10c3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x29a6,0x2965,0x10e3,0x10a2,0x10a2,0x18e3,0x10c2,0x10a2,0x10a3,0x18c3,0x18e4,0x18e3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e3,0x18c2,0x10a2,0x10c3,0x1081,0x18c2,0x18c3,0x10a2,0x2124,0x2165,0x2965,0x2165,0x2945,0x2945,0x2124,0x2145,0x31a6,0x39e7,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x2145,0x2965,0x3186,0x2986,0x2966,0x2146,0x2966,0x2125,0x2125,0x2125,0x2145,0x1905,0x2125,0x2987,0x2987,0x2987,0x31a7,0x3187,0x2946,0x3187,0x3187,0x2125,0x2125,0x2104,0x4a29,0x5acc,0x4a8a,0x5aec,0x4229,0x4229,0x3a09,0x3a09,0x3a2a,0x424a,0x3a09,0x424a,0x4a6b,0x424b,0x31e9,0x29c9,0x39ea,0x39e9,0x4209,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0862,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x0861,0x1082,0x18a2,0x18c2,0x20e3,0x2924,0x528a,0x4a8a,0x4a49,0x4a6a,0x424a,0x424a,0x424a,0x426a,0x4a6a,0x4249,0x4229,0x4249,0x4a49,0x4228,0x5aeb,0x5aec,0x52ab,0x4a8b,0x4a8a,0x3186,0x39c6,0x31c6,0x31c6,0x2124,0x39e7,0x31a6,0x4208,0x39e7,0x39c7,0x39c7,0x31e7,0x3207,0x31e7,0x31c6,0x31c7,0x29a6,0x29a6,0x3a08,0x3a07,0x31c6,0x29a6,0x2986,0x31a7,0x39e7,0x4208,0x39e7,0x39c7,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31e6,0x3a28,0x3a07,0x39e7,0x31e6,0x3a07,0x4269,0x31e7,0x29a6,0x31c6,0x31e7,0x31e7,0x31c6,0x31c6,0x39e7,0x31e6,0x3a07,0x39e7,0x2986,0x39e7,0x39c7,0x31a7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c6,0x31a6,0x29a6,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x31c7,0x2986,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x3186,0x2986,0x2145,0x31c7,0x3186,0x2985, +0x2985,0x2986,0x2965,0x2965,0x2145,0x2965,0x2986,0x2165,0x2165,0x2124,0x2144,0x2945,0x2945,0x2965,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2144,0x2986,0x2144,0x2965,0x2965,0x2145,0x2124,0x2145,0x2965,0x2945,0x31a6,0x31a6,0x2985,0x2124,0x2145,0x2165,0x2144,0x2144,0x2945,0x2145,0x2144,0x2144,0x2124,0x18c3,0x2125,0x2165,0x2986,0x2165,0x2945,0x2965,0x2165,0x2144,0x31a5,0x2123,0x2124,0x29a6,0x29a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31e7,0x31c7,0x3a08,0x31c7,0x31e7,0x31e7,0x31a7,0x2145,0x2965,0x2985,0x2144,0x2965,0x2124,0x2144,0x31c6,0x2985,0x2965,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a6,0x4228,0x3a07,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x4208,0x4a6a,0x4a8a,0x528b,0x4a8a,0x4269,0x4249,0x4229,0x4249,0x4a69,0x426a,0x424a,0x4a4a,0x4a6a,0x4a8a,0x426a,0x426a,0x52aa,0x4a69,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a3,0x18c2,0x20e3,0x2104,0x4249,0x4228,0x4a28,0x4228,0x3a08,0x4229,0x39e8,0x4a49,0x4a69,0x3a08,0x4228,0x4249,0x4a49,0x4229,0x3a09,0x3a09,0x39e8,0x4229,0x4229,0x52cb,0x4249,0x4248,0x4249,0x39e7,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x4a49,0x3a07,0x3a28,0x3a49,0x3a08,0x4228,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4208,0x4208,0x3a08,0x39c7,0x31c7,0x31c7,0x39e8,0x4228,0x4228,0x31c7,0x4269,0x4208,0x528a,0x4249,0x4248,0x3a28,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31e7,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2985,0x2965,0x2986,0x2985,0x31a6,0x31a7,0x3186,0x3186,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3a07,0x29a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a7,0x31a7,0x2986,0x2986, +0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2985,0x29a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x39c7,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x3186,0x39e7,0x31a6,0x3186,0x31a6,0x39c7,0x3a07,0x3a27,0x4248,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x4228,0x39e7,0x4289,0x3207,0x3a27,0x4269,0x4228,0x4a69,0x4207,0x4248,0x4228,0x4a49,0x4248,0x4a89,0x3a28,0x31e7,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x39e7,0x4229,0x4228,0x31a6,0x31e7,0x3a08,0x31c7,0x29c7,0x31c7,0x31a6,0x31c6,0x4a68,0x4227,0x31e6,0x4248,0x3a28,0x3a28,0x4248,0x3a08,0x4248,0x4a69,0x4249,0x4249,0x52aa,0x4a8a,0x3a28,0x4249,0x52cb,0x528a,0x4249,0x4228,0x4249,0x52cb,0x4a69,0x4a69,0x4a8a,0x4229,0x4209,0x4a69,0x52ca,0x52aa,0x4269,0x4a8a,0x52cb,0x5aeb,0x5aeb,0x4a8a,0x52ca,0x52aa,0x18c2,0x1082,0x1081,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x18a3,0x18c2,0x20e3,0x2104,0x4a6a,0x4a6a,0x4249,0x4229,0x4a49,0x4229,0x4229,0x528a,0x528a,0x4249,0x4249,0x4a6a,0x528a,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4a8a,0x4a69,0x4a69,0x4a8a,0x4248,0x4248,0x4228,0x4228,0x4208,0x4229,0x3a08,0x4228,0x3a08,0x3a29,0x3a09,0x39e8,0x3a08,0x3a27,0x39e7,0x3a08,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x4208,0x39e7,0x31c7,0x4228,0x39e7,0x31c7,0x4228,0x39e8,0x4229,0x39e7,0x3a08,0x39e8,0x39e8,0x4208,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x31c7,0x3a28,0x31c7,0x39e7,0x39e8,0x4228,0x31e7,0x31a6,0x39e7,0x39e7,0x3a08,0x39e8,0x31c7,0x39e8,0x31a7,0x31a6,0x3a07,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x31a7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x39c7,0x31a6,0x39e7,0x39c7,0x3186,0x2966,0x31c7,0x4228,0x31a6,0x39e7,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x29a6,0x31c7,0x31a7,0x29a6,0x31a6,0x31c7, +0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c7,0x31a7,0x31a6,0x29a6,0x29a6,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31c7,0x31a6,0x2966,0x2966,0x31a6,0x31a6,0x31c7,0x39e7,0x31e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x31a7,0x39e8,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x39e7,0x39e7,0x31a6,0x3a07,0x3a08,0x31c6,0x3a08,0x52aa,0x31a6,0x4269,0x4269,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x3a08,0x4a69,0x52ab,0x4228,0x4a8a,0x4248,0x31e7,0x31c7,0x3a07,0x3a08,0x31c7,0x39e7,0x3a08,0x39e8,0x4a49,0x4229,0x4228,0x4228,0x3a08,0x3a08,0x31c7,0x31a7,0x31a7,0x39c7,0x4a69,0x52aa,0x3a08,0x4a49,0x4208,0x3a08,0x3a08,0x3a08,0x4228,0x4a89,0x4249,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4a8a,0x4a49,0x5acb,0x5acb,0x632d,0x5aec,0x52aa,0x52cb,0x4249,0x52aa,0x632d,0x4a8a,0x52cb,0x4a6a,0x424a,0x4a49,0x4a8a,0x528a,0x4a6a,0x4a49,0x528a,0x5aec,0x18c2,0x1082,0x1081,0x1061,0x1062,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1081,0x1081,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18e3,0x18e3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x18a2,0x10a2,0x18c2,0x18e3,0x2104,0x52aa,0x5aeb,0x4229,0x4a8a,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a49,0x4228,0x4228,0x4a69,0x4269,0x4a69,0x52cb,0x52ab,0x528a,0x4a6a,0x4a69,0x39e7,0x4a49,0x4a49,0x39e7,0x4a49,0x39e7,0x39e7,0x4208,0x39e7,0x3a08,0x4229,0x31c7,0x4228,0x3a08,0x39e7,0x31c7,0x39e8,0x39e8,0x39e7,0x3a07,0x3a07,0x4208,0x3a08,0x3a07,0x39e8,0x4228,0x3a08,0x39c7,0x4228,0x39e8,0x39e7,0x3a08,0x31e7,0x31c7,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x31c8,0x3a08,0x39e7,0x39c7,0x3a08,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31a7,0x31c7,0x39e7,0x39e8,0x31a7,0x31c7,0x39e7,0x31c7,0x31a6,0x39c7,0x39c7,0x39e8,0x31a7,0x31c7,0x39e8,0x31c7,0x39c7,0x31a7,0x3187,0x31c7,0x39c7,0x31a6,0x31a6,0x39a7,0x39c7,0x528a,0x2986,0x29a6,0x2986,0x29a6,0x31a6,0x39e7,0x3186,0x31a6,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x2986, +0x2985,0x2986,0x2965,0x2966,0x2966,0x2986,0x2986,0x2986,0x31c7,0x2985,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x4249,0x31c7,0x2145,0x2986,0x31c7,0x31c7,0x3a08,0x31e8,0x2986,0x31a7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x2986,0x31a7,0x31a7,0x2986,0x39e8,0x39e7,0x3186,0x39e8,0x39c7,0x39c7,0x39c7,0x3a08,0x3a08,0x4248,0x39e7,0x39e7,0x4249,0x4a8a,0x39e8,0x31e8,0x39e8,0x39e8,0x4249,0x4208,0x4a69,0x4228,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x3a28,0x31e7,0x3a08,0x3a28,0x4229,0x3a08,0x39e8,0x4a69,0x4a49,0x4a69,0x4aaa,0x31c7,0x39e8,0x39e7,0x39e8,0x4229,0x3a29,0x424a,0x4a8b,0x3a29,0x3a29,0x39e8,0x4249,0x4a6a,0x4a69,0x4248,0x4249,0x4208,0x4a49,0x52ab,0x4a49,0x4a6a,0x5aeb,0x5acb,0x52ab,0x630c,0x4a69,0x528a,0x5aeb,0x4a69,0x5b0c,0x73cf,0x52cb,0x52eb,0x4a69,0x4a49,0x52aa,0x528a,0x4a8a,0x5acb,0x5aec,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1061,0x1062,0x1062,0x1082,0x10a2,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x18c2,0x18c3,0x2103,0x2103,0x2103,0x2123,0x2103,0x20e3,0x20e3,0x18e3,0x18c2,0x18c2,0x18c3,0x18e3,0x20e3,0x18e3,0x2103,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e3,0x2103,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18e3,0x2103,0x18c2,0x0861,0x0861,0x0861,0x18c3,0x2965,0x2924,0x2103,0x2103,0x2123,0x2924,0x2924,0x2124,0x2104,0x2924,0x2944,0x2944,0x2944,0x2944,0x2964,0x2965,0x2944,0x3164,0x2104,0x10a2,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x2104,0x4a89,0x4a8a,0x4a49,0x4a49,0x52cb,0x52eb,0x4a8a,0x4228,0x4a49,0x4208,0x4208,0x4a49,0x4228,0x4228,0x4a69,0x4248,0x4228,0x5acb,0x4a8a,0x3a08,0x4229,0x4228,0x4208,0x4a69,0x4208,0x4249,0x4a49,0x3a07,0x4249,0x4a49,0x4208,0x39e7,0x39c7,0x4228,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4208,0x4229,0x31c7,0x4a69,0x39e7,0x31c7,0x3207,0x31c7,0x39e7,0x4229,0x39e8,0x4208,0x39e8,0x39c7,0x31c8,0x31c8,0x31c7,0x39c7,0x4228,0x31e7,0x4228,0x3a08,0x31a7,0x39e7,0x4248,0x39c7,0x39c8,0x39c7,0x31e7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x39e8,0x39e7,0x31c7,0x31a7,0x31a6,0x31e7,0x31c7,0x31a6,0x31a7,0x31c7,0x39e7,0x39e7,0x29a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3186,0x31c7,0x31a7,0x39e7,0x39c7,0x39c7,0x31a7,0x39c7,0x31c7,0x2986,0x31c7,0x31a6,0x31c7,0x31a6,0x3186,0x39e7,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x2985, +0x39c7,0x39e7,0x3186,0x2966,0x2966,0x2966,0x29a7,0x29a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31e7,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x29a6,0x31a6,0x39c7,0x31a7,0x39e8,0x31c7,0x3186,0x31a6,0x31a7,0x39c7,0x31a7,0x31e7,0x31c7,0x31a6,0x2986,0x31c7,0x4a49,0x31a7,0x31c7,0x4228,0x4269,0x31c7,0x31c7,0x3a09,0x3a09,0x31c8,0x31c7,0x31c7,0x31c7,0x3a08,0x4208,0x4249,0x4228,0x3a07,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4269,0x4208,0x4208,0x4228,0x3a28,0x39e7,0x39e7,0x4229,0x3a09,0x31e8,0x4249,0x426a,0x3a29,0x4249,0x3a08,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x52aa,0x4229,0x4229,0x4a8a,0x4249,0x630c,0x528a,0x4229,0x4a49,0x4a49,0x4a49,0x52aa,0x4a49,0x5acb,0x528a,0x52aa,0x52ca,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x528a,0x630d,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x10a2,0x2103,0x2944,0x2944,0x2944,0x2964,0x2944,0x2924,0x2944,0x2124,0x2103,0x2124,0x2124,0x2944,0x2944,0x20e3,0x2924,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e4,0x2103,0x18c3,0x2104,0x2124,0x2104,0x2924,0x2124,0x2103,0x2103,0x2103,0x2124,0x2124,0x2124,0x2104,0x2944,0x2103,0x18c3,0x2104,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x3165,0x2124,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2944,0x2944,0x2965,0x3165,0x3185,0x3185,0x39a6,0x3185,0x2103,0x2944,0x2104,0x10a2,0x0861,0x0861,0x1082,0x1082,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x52cb,0x4a4a,0x5aec,0x52aa,0x52aa,0x52aa,0x52aa,0x4a6a,0x4249,0x4a49,0x3a08,0x4269,0x5aeb,0x4228,0x4248,0x528a,0x4a8a,0x4249,0x4249,0x4a8a,0x4269,0x4228,0x4249,0x4a8a,0x4228,0x3a28,0x4249,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4248,0x4249,0x3a08,0x3a08,0x3a08,0x39c7,0x3a07,0x39e7,0x39e8,0x39c7,0x39e8,0x39e8,0x31a7,0x3a08,0x39e8,0x4208,0x4208,0x39c7,0x39e7,0x31c7,0x31c7,0x31c8,0x31c7,0x39e7,0x39e8,0x39c7,0x31c7,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x39c7,0x3a08,0x39e7,0x39c7,0x31c7,0x31c7,0x31a6,0x4228,0x3a08,0x31c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e7,0x39c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x39e7,0x31a6,0x39e7,0x39c7,0x31c7,0x3186,0x4228,0x4208,0x2986,0x31a7,0x2986,0x31c7,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x2965,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x2966,0x2966,0x2965, +0x31a7,0x31a7,0x3186,0x2986,0x3166,0x2965,0x31c7,0x31e7,0x31c7,0x3186,0x31a6,0x31c7,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x31a6,0x2986,0x31a6,0x2966,0x31a6,0x39e7,0x31a6,0x3186,0x3186,0x2966,0x31c7,0x29a7,0x31a6,0x39e7,0x31a6,0x31a6,0x2986,0x31e7,0x31c7,0x3a07,0x31e7,0x39e7,0x4208,0x31c7,0x31e7,0x31c7,0x31a7,0x31a7,0x3187,0x39e8,0x39e8,0x31c7,0x39c7,0x4228,0x39e7,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x39e7,0x3a08,0x31c7,0x3a28,0x3a08,0x39e8,0x39e8,0x4208,0x39c7,0x3a08,0x4249,0x3a28,0x3a28,0x39e8,0x3a08,0x4249,0x39e7,0x4228,0x4249,0x4229,0x4228,0x3a08,0x4228,0x4229,0x4229,0x528a,0x528a,0x4249,0x4a8a,0x4a69,0x3a08,0x528a,0x4208,0x528a,0x526a,0x4a49,0x528a,0x4229,0x4a8a,0x4a49,0x4229,0x4a8a,0x4229,0x4a4a,0x4229,0x4a69,0x52aa,0x4a6a,0x528b,0x4aab,0x4a8a,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x0861,0x2103,0x2924,0x2924,0x2924,0x2924,0x2124,0x2924,0x2924,0x2124,0x2103,0x2124,0x2924,0x2924,0x2944,0x2103,0x18a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x2924,0x1082,0x18c3,0x18c3,0x1061,0x0861,0x0861,0x18a3,0x18e3,0x18c3,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2944,0x2965,0x3165,0x3186,0x3186,0x18c2,0x18a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x1082,0x18a2,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x4a8a,0x52ab,0x4249,0x4a6a,0x4a8a,0x4249,0x4a8a,0x4a8a,0x4228,0x4248,0x4269,0x4aaa,0x4aaa,0x4a69,0x52aa,0x4a69,0x4a69,0x5acb,0x528a,0x4a8a,0x4a69,0x4a69,0x4249,0x4a6a,0x4a69,0x4249,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4249,0x39e8,0x4229,0x4228,0x39e7,0x4248,0x39e7,0x39e7,0x3a08,0x39c8,0x31c7,0x4208,0x39c7,0x4208,0x39c7,0x39e8,0x4229,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x4a69,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x4208,0x4229,0x39e8,0x4228,0x4249,0x39c7,0x3186,0x39c7,0x39e7,0x39e7,0x3a28,0x2986,0x31a7,0x31c7,0x3a08,0x3a07,0x3a08,0x4249,0x39e7,0x31c7,0x4208,0x31a7,0x31a6,0x3a08,0x31a7,0x31a6,0x31a6,0x31c6,0x4248,0x31a6,0x31a6,0x31c7,0x31c7,0x31a6,0x39e7,0x3186,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x29a6,0x2986,0x3a08,0x31a7,0x2986,0x2965, +0x2986,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31c7,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x39c7,0x39a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31c7,0x39c7,0x31a6,0x31a6,0x31e7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x31e7,0x39e7,0x39e8,0x4208,0x31c7,0x39c7,0x3a08,0x31a6,0x31c7,0x4228,0x3a08,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x4208,0x3a28,0x39e7,0x3a08,0x4229,0x39e8,0x41e8,0x4209,0x4209,0x4249,0x3a08,0x39c7,0x4229,0x3a08,0x39c7,0x3a08,0x3a08,0x31e8,0x39e8,0x39c8,0x4209,0x39e8,0x3a08,0x4a6a,0x4a49,0x4208,0x4a49,0x4a49,0x4249,0x4a49,0x4229,0x4a6a,0x52ab,0x4a49,0x4249,0x4a69,0x4a6a,0x4a8a,0x4228,0x52aa,0x528a,0x4229,0x4a49,0x4249,0x4a69,0x4208,0x4a69,0x3a48,0x4229,0x4229,0x4229,0x4a29,0x4a69,0x4a6a,0x4a6a,0x4a69,0x3a08,0x10a2,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x0841,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2104,0x2924,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0821,0x18a2,0x2103,0x2104,0x2104,0x2104,0x2104,0x2123,0x2963,0x2943,0x2103,0x2104,0x2104,0x2104,0x2124,0x2924,0x0861,0x1082,0x10a2,0x0861,0x0861,0x1061,0x1082,0x0861,0x1082,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x3165,0x18a2,0x0841,0x1062,0x1062,0x0861,0x1082,0x1082,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x4a6a,0x4a8a,0x52ab,0x52cb,0x4249,0x4a8a,0x634d,0x4228,0x4a69,0x4269,0x4aaa,0x4aaa,0x4a6a,0x528a,0x5b0c,0x4a69,0x4a8a,0x52cb,0x4a49,0x4a69,0x4229,0x4229,0x4249,0x4229,0x4a49,0x4229,0x4208,0x4228,0x4228,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x4229,0x4228,0x4228,0x4228,0x4229,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4249,0x3a08,0x39c7,0x3a28,0x4249,0x3a08,0x3a08,0x3a28,0x4249,0x3a08,0x4249,0x39e8,0x4228,0x4a6a,0x4208,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x2986,0x4208,0x3a08,0x31a6,0x4208,0x3a08,0x31c7,0x3a07,0x39e7,0x31a7,0x2986,0x31c7,0x39e7,0x39e7,0x4249,0x31c6,0x31c6,0x4228,0x39e7,0x4208,0x39e7,0x31e7,0x3a07,0x31c7,0x31a6,0x3a28,0x31a7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x39c7,0x31c7,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x2986,0x2945,0x3186, +0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x31a7,0x31c7,0x2966,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31c6,0x31c6,0x2986,0x31a6,0x31c7,0x3186,0x31c7,0x31e7,0x31c7,0x31e7,0x3a28,0x31a7,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a08,0x4228,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4269,0x4228,0x39c7,0x41e8,0x4208,0x4228,0x4249,0x3a08,0x31c7,0x31c7,0x39e8,0x3a08,0x4208,0x4229,0x31c7,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x39c7,0x4228,0x39e8,0x39e8,0x3a08,0x31a7,0x4249,0x3a08,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4249,0x4249,0x4249,0x3a09,0x426a,0x3a28,0x3a08,0x4249,0x4aaa,0x4269,0x4228,0x4249,0x424a,0x4a8a,0x4249,0x4249,0x52aa,0x4a69,0x52ab,0x4229,0x4249,0x4a69,0x4a49,0x4a69,0x528a,0x4a49,0x4228,0x4a49,0x4228,0x10a2,0x1081,0x1061,0x1081,0x1081,0x0861,0x0861,0x10a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0020,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2944,0x2124,0x2104,0x2104,0x2104,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x4203,0x5a63,0x5263,0x39a3,0x2124,0x2124,0x2104,0x2124,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x1062,0x0041,0x1082,0x2104,0x2124,0x2124,0x2104,0x2124,0x2924,0x41e5,0x2964,0x4205,0x3184,0x2945,0x2945,0x2945,0x2945,0x18a2,0x0841,0x0841,0x0861,0x0861,0x1062,0x1062,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2924,0x52aa,0x52ab,0x5acb,0x52cb,0x52cb,0x4a8a,0x4a6a,0x4229,0x4a8a,0x4a8a,0x52cb,0x52aa,0x52cb,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4229,0x4a8a,0x52aa,0x4229,0x3a08,0x4a6a,0x4228,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4a49,0x4229,0x4228,0x4a69,0x4a6a,0x4249,0x4229,0x424a,0x4249,0x4a6a,0x4229,0x39e7,0x3a07,0x3a28,0x3a08,0x39e8,0x4249,0x3a28,0x3207,0x31e7,0x3a08,0x31c7,0x4229,0x4a49,0x4228,0x39e8,0x4249,0x4228,0x3a08,0x4249,0x3a08,0x31a7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x3a07,0x31c7,0x31c7,0x31e7,0x29a7,0x31c7,0x31c7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x3a07,0x3a28,0x39e7,0x39e7,0x31a6,0x39e7,0x39c7,0x31a7,0x31a6,0x31a6,0x31a7,0x2966,0x31a6,0x3a08,0x31a7,0x31a7,0x31c7,0x29a6,0x2986,0x31a7,0x39c7,0x31a7,0x2166,0x3186,0x2946,0x2965, +0x2966,0x2986,0x31c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2965,0x39c7,0x31c6,0x2986,0x2986,0x31a7,0x31a7,0x2986,0x3186,0x3186,0x2986,0x2966,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x31c7,0x31e7,0x31a6,0x31a6,0x2986,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3a07,0x3a07,0x31a6,0x31a7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x31a7,0x31c7,0x39c7,0x39e7,0x39e7,0x4a49,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x3a08,0x4208,0x4a8a,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4229,0x39c7,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x39e7,0x3a08,0x3a28,0x3a48,0x4228,0x3a08,0x31c7,0x39e8,0x4229,0x39e7,0x4228,0x52ca,0x4249,0x3a28,0x3a08,0x4269,0x4a8a,0x4269,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4249,0x4a8a,0x52ca,0x52aa,0x4a49,0x4229,0x4a69,0x5b0b,0x4228,0x4249,0x4228,0x4a49,0x52aa,0x4229,0x4229,0x10a2,0x1061,0x1061,0x1061,0x1081,0x0861,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x5244,0x3163,0x2944,0x2124,0x2124,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x31a4,0x7343,0x6ac3,0x7303,0x62c3,0x2923,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x6ae5,0x41e3,0x6ae5,0x41e4,0x2944,0x2945,0x2945,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18c3,0x20e3,0x20e3,0x2924,0x5acb,0x528a,0x4a49,0x4a8a,0x52aa,0x52aa,0x4a69,0x4229,0x4a69,0x52ab,0x5acb,0x4a49,0x4249,0x4228,0x4a8a,0x4229,0x4249,0x4a69,0x4249,0x3a08,0x5acb,0x4a49,0x4229,0x4a8a,0x4a49,0x4249,0x39c7,0x4208,0x4229,0x39c7,0x4269,0x4248,0x39e7,0x39e7,0x39c8,0x39e8,0x4229,0x4a69,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x4208,0x4208,0x4228,0x4249,0x4229,0x4208,0x4208,0x528a,0x4228,0x31c7,0x3a08,0x4208,0x4228,0x4228,0x4a49,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x39e8,0x31c7,0x3a08,0x31a6,0x39e7,0x39e7,0x39c7,0x4a49,0x4208,0x31a6,0x31a6,0x31c7,0x4249,0x31e7,0x31c7,0x3187,0x2986,0x3a08,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x39e8,0x31a6,0x2965,0x39e8,0x39e7,0x39c7,0x3186,0x3186,0x4229,0x3186,0x39c7,0x31a7,0x31a7,0x2966,0x31c7,0x39e8,0x31a6,0x2966,0x39e7,0x3186,0x2966,0x2145,0x2965, +0x31a7,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x4208,0x39a6,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x31c6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x31a6,0x29a6,0x3a08,0x31e7,0x31a6,0x31a7,0x3187,0x31c7,0x39e7,0x31a6,0x31c6,0x39e8,0x31e7,0x31c7,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x4aaa,0x3a28,0x2965,0x31c7,0x2986,0x31c6,0x3a28,0x4228,0x39c7,0x4249,0x3a08,0x39e8,0x3a08,0x31c7,0x39e7,0x4228,0x3a08,0x3a08,0x39e8,0x4a6a,0x4229,0x39e7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x39c7,0x39e8,0x31e7,0x3a08,0x4269,0x3a28,0x4249,0x4228,0x4228,0x4228,0x4249,0x3a08,0x52aa,0x4a89,0x4249,0x3a08,0x4a69,0x4a8a,0x4209,0x4208,0x4249,0x4249,0x4a49,0x4249,0x4249,0x4249,0x52eb,0x5aeb,0x4a49,0x4a49,0x4a49,0x528a,0x4a89,0x3a08,0x4249,0x4229,0x528a,0x4a8a,0x4228,0x4229,0x10a2,0x1061,0x1061,0x1081,0x1081,0x1081,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2944,0x4a24,0x4a03,0x7b44,0x5223,0x5244,0x2944,0x2124,0x2124,0x2924,0x2104,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x5244,0x8ba3,0x41c3,0x5a84,0x8ba3,0x3143,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2104,0x2124,0x2124,0x4a24,0x8384,0x6283,0x8384,0x5224,0x2924,0x2944,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18a2,0x20e3,0x20e3,0x2924,0x4a8a,0x4a8a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x4208,0x4a49,0x52ab,0x4a6a,0x4229,0x4249,0x4a69,0x528a,0x4a69,0x4228,0x4a8a,0x4229,0x528a,0x4a6a,0x4208,0x4228,0x4249,0x4229,0x39e8,0x3a08,0x3a08,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x39a8,0x39e8,0x4228,0x4a69,0x4249,0x31c7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x31c7,0x39e8,0x4208,0x4208,0x4a49,0x39e8,0x4228,0x39e7,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39e7,0x3a07,0x31a6,0x39e7,0x31a6,0x39e8,0x2986,0x31c7,0x31a7,0x39e8,0x39e7,0x31a6,0x31a7,0x31a7,0x3186,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x31a7,0x31a7,0x39c8,0x39c8,0x39e8,0x31c8,0x31a7,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x2966,0x2965,0x31a6,0x2966,0x2966,0x31a6,0x2986,0x2945,0x3186,0x2986,0x2945,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945, +0x2965,0x29a6,0x29a6,0x31c7,0x31c6,0x2965,0x2945,0x31a6,0x39c7,0x3186,0x2966,0x2986,0x2986,0x29a6,0x2986,0x3186,0x31a6,0x2985,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x31e7,0x2986,0x2986,0x2966,0x2987,0x39e8,0x3a08,0x2986,0x29a6,0x29a6,0x2986,0x39e7,0x31c6,0x31e7,0x31c7,0x39c7,0x39c7,0x3a08,0x31c7,0x3a08,0x31e7,0x31e8,0x3a08,0x4228,0x31c7,0x39e8,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x31c6,0x39e8,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x4209,0x4229,0x39e8,0x3a08,0x39e7,0x3a08,0x3a08,0x39e8,0x39c7,0x4208,0x39c7,0x3a08,0x4228,0x39e8,0x3a08,0x4249,0x4249,0x4269,0x3a28,0x4a69,0x3a28,0x4228,0x4228,0x4249,0x4a8a,0x4aaa,0x4249,0x31e7,0x4249,0x4249,0x3a08,0x39e8,0x4209,0x4a49,0x52aa,0x4249,0x4249,0x4249,0x426a,0x4228,0x4a6a,0x4a49,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4249,0x4228,0x4249,0x4228,0x4a69,0x10a2,0x1061,0x0861,0x0861,0x1081,0x1082,0x1081,0x10a2,0x18c3,0x1082,0x1062,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x3164,0x62a4,0x7303,0x8bc3,0x7b43,0x6ae3,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x62a4,0x8383,0x2923,0x49e4,0x93c4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2124,0x2144,0x5a84,0x8bc4,0x6ac3,0x8ba4,0x5204,0x2924,0x2124,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x1082,0x18a2,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4a8a,0x4269,0x3a08,0x4229,0x426a,0x4229,0x4229,0x4249,0x4a69,0x4229,0x4a49,0x4a8a,0x4208,0x39c7,0x4228,0x4a69,0x31c7,0x39e8,0x4249,0x3a08,0x39e8,0x4228,0x4249,0x4229,0x31c7,0x39e8,0x4208,0x31a7,0x31c7,0x39e8,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x31a7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x31e7,0x39e7,0x39e8,0x31a6,0x39c7,0x39c7,0x31c7,0x39e7,0x31c7,0x2986,0x31c7,0x31c6,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x2986,0x2946,0x2966,0x31a7,0x2966,0x2945,0x2966,0x31a7,0x31c7,0x2986,0x2125,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2946,0x2966,0x2966,0x2966,0x2125,0x2145,0x2145,0x2145,0x2965,0x2125,0x2966,0x2965,0x2145,0x2966,0x2124,0x2145,0x2965,0x2125,0x2145,0x2945,0x2125,0x2124,0x2124,0x2124,0x2124, +0x2165,0x2985,0x29a6,0x31c6,0x2985,0x2145,0x2145,0x2966,0x2986,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x2966,0x31a6,0x2966,0x2966,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2966,0x2986,0x31a7,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a7,0x31a7,0x3187,0x2986,0x3186,0x31a7,0x3186,0x3187,0x3187,0x31a7,0x3186,0x31c6,0x3186,0x3186,0x2966,0x3186,0x31a6,0x39c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c7,0x2986,0x39a7,0x39a7,0x31c7,0x29c7,0x31a7,0x39c8,0x39e8,0x31c7,0x3186,0x31a7,0x39c7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x4208,0x3a08,0x39e8,0x4229,0x3a08,0x39e8,0x31e8,0x31c7,0x31c7,0x3a08,0x3a08,0x4208,0x4a49,0x3a08,0x4229,0x4a8a,0x31e8,0x39e8,0x39e8,0x4229,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x3a28,0x10a2,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1062,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2924,0x3164,0x6ac4,0x8363,0x8bc3,0x8383,0x6ae3,0x3164,0x2124,0x2124,0x2925,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2124,0x2104,0x2104,0x2104,0x5a84,0x8363,0x2923,0x4a04,0x8bc4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2104,0x2944,0x62c4,0x8384,0x6ae3,0x8b84,0x41c4,0x2924,0x2124,0x2924,0x2924,0x1082,0x0020,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4229,0x39e8,0x31e7,0x31c7,0x3a28,0x39e7,0x31c7,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x3187,0x3187,0x3187,0x3186,0x31a6,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x3186,0x2986,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x2966,0x2966,0x2986,0x31a7,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x2965,0x2945,0x2966,0x2986,0x31a6,0x2986,0x2145,0x2965,0x2986,0x2965,0x2965,0x2144,0x3186,0x39c7,0x31a7,0x2945,0x2945,0x2945,0x3186,0x2965,0x2945,0x3186,0x31a6,0x2965,0x2145,0x2125,0x2945,0x2125,0x2945,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2104,0x2124,0x2945,0x2125,0x2125,0x2105,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x18e3,0x18e3, +0x2945,0x2124,0x2945,0x2124,0x2145,0x2145,0x2125,0x2945,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2124,0x2144,0x2965,0x2145,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2946,0x2966,0x2986,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2966,0x2986,0x3186,0x2945,0x2945,0x2946,0x2946,0x2966,0x2965,0x2965,0x2945,0x2946,0x2945,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2946,0x2946,0x2966,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x31a6,0x2965,0x2965,0x31a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x3186,0x3186,0x31a7,0x2966,0x31c7,0x2986,0x2966,0x3187,0x39e8,0x3186,0x39c8,0x39c8,0x31c7,0x31a7,0x3186,0x39c7,0x4228,0x31c7,0x39c7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39a7,0x31a6,0x31c7,0x31a7,0x31c7,0x2966,0x10a2,0x1081,0x1081,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x1082,0x0861,0x1062,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2924,0x2124,0x3164,0x62a5,0x72e4,0x8ba4,0x6ac3,0x62a4,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18e3,0x2124,0x2124,0x2104,0x2104,0x4a24,0x8364,0x41c3,0x5aa4,0x7b43,0x3143,0x2124,0x2104,0x2104,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0041,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2924,0x62a5,0x7304,0x62a4,0x7304,0x3184,0x2124,0x2924,0x2924,0x2924,0x1082,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2104,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x31a7,0x31a7,0x31a6,0x2986,0x31a7,0x2986,0x2986,0x31a7,0x2986,0x2986,0x3186,0x31a7,0x2945,0x2945,0x2966,0x2945,0x2945,0x2145,0x2146,0x2146,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2124,0x2165,0x2145,0x2125,0x2125,0x2104,0x2125,0x2945,0x2145,0x2965,0x2125,0x2124,0x2104,0x2104,0x2125,0x2124,0x2124,0x2124,0x1924,0x2124,0x2144,0x2124,0x2145,0x2945,0x2124,0x2125,0x2945,0x2145,0x2125,0x18e4,0x2104,0x2124,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2125,0x2104,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x2945,0x2144,0x2104,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3, +0x2124,0x1904,0x2104,0x1904,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2125,0x18e4,0x2125,0x2986,0x18e3,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2104,0x2104,0x2104,0x2125,0x2145,0x2124,0x2124,0x2125,0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2125,0x1904,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2124,0x2104,0x2105,0x2125,0x2125,0x2124,0x2124,0x2945,0x2945,0x2125,0x2104,0x2124,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2966,0x2125,0x1904,0x2966,0x2965,0x2965,0x2124,0x2125,0x2986,0x2987,0x2987,0x2145,0x2145,0x2966,0x2945,0x2946,0x2946,0x2946,0x2145,0x2986,0x2946,0x2966,0x2945,0x2966,0x2965,0x2945,0x2966,0x2945,0x2125,0x2125,0x2125,0x1082,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0841,0x0861,0x2104,0x2124,0x2924,0x2124,0x2944,0x4a05,0x49e4,0x7305,0x49e3,0x41c4,0x2944,0x2124,0x2124,0x2124,0x20e3,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x18c3,0x2124,0x2104,0x2104,0x2104,0x3984,0x6ae4,0x5a83,0x6ae4,0x5a43,0x2924,0x2124,0x2124,0x2104,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x1062,0x1082,0x0841,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x4a25,0x5224,0x41e4,0x4a04,0x2944,0x2124,0x2124,0x2124,0x2924,0x1082,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x2103,0x2925,0x2125,0x31a6,0x2966,0x2945,0x2145,0x2105,0x2125,0x2966,0x2945,0x2125,0x2125,0x2125,0x2124,0x2945,0x2124,0x2965,0x1904,0x1904,0x1904,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x1904,0x2124,0x1904,0x1904,0x1924,0x2125,0x1924,0x1904,0x2124,0x2125,0x2104,0x1904,0x1904,0x18e4,0x2104,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x1903,0x10c3,0x10c3,0x1903,0x1904,0x18e4,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x18e4,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e4,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e4,0x2124,0x1904,0x18c3,0x18c3,0x1904,0x10e3,0x18e3,0x18e3,0x18e4,0x18e3,0x10a3,0x10c3,0x10a3,0x10a2,0x10c3,0x18e3,0x10a2,0x10a2,0x10c3,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3, +0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x18c3,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x1904,0x18c3,0x18c3,0x1904,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x18e3,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x18e3,0x18e4,0x18e4,0x18e3,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2124,0x18e4,0x1904,0x2104,0x2145,0x2965,0x1904,0x2124,0x2125,0x1904,0x1904,0x18e3,0x1904,0x2145,0x1904,0x2104,0x2104,0x2104,0x1904,0x2125,0x2125,0x1904,0x2124,0x2965,0x2124,0x2945,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1081,0x1081,0x0861,0x1081,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x2124,0x2124,0x2124,0x2124,0x2944,0x3144,0x49e5,0x3144,0x2924,0x2124,0x2124,0x2124,0x2124,0x18c3,0x1081,0x1082,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x18c2,0x2103,0x2104,0x2104,0x2104,0x2924,0x41c4,0x4a04,0x4a04,0x3164,0x2104,0x2104,0x2104,0x2104,0x20e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x20e3,0x2104,0x2104,0x2104,0x2104,0x3164,0x3164,0x2944,0x3164,0x2124,0x2124,0x2124,0x2924,0x2924,0x18c2,0x10a2,0x0861,0x0861,0x0841,0x0841,0x0861,0x18a3,0x10a2,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x20e3,0x1904,0x1904,0x2104,0x18e3,0x18e4,0x18e4,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x18e3,0x18e3,0x2125,0x2104,0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a2,0x18e3,0x18e3,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a2,0x10c2,0x10c3,0x10c2,0x10e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x10c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10a3,0x10c3,0x10c3,0x10c2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x08a2,0x10c3,0x1924,0x18e3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2, +0x18c3,0x18c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x10a2,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18e4,0x18c3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18e3,0x10c3,0x18e3,0x1904,0x18c3,0x18e3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1903,0x18c3,0x18e3,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x1081,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x18c3,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2124,0x2124,0x2924,0x2924,0x20e3,0x20e3,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x20e3,0x2103,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2944,0x2124,0x20e3,0x2103,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2924,0x2104,0x2104,0x2924,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x1082,0x1082,0x18c2,0x20e3,0x20e3,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10a2,0x10a3,0x10a2,0x10a3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c2,0x18e3,0x18e3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1082,0x10a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a3,0x10c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10c2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a1,0x1062,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2924,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2124,0x2924,0x2104,0x2104,0x2924,0x2924,0x2104,0x2944,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x2924,0x2924,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x2924,0x2124,0x18a2,0x0861,0x0861,0x1082,0x2104,0x3165,0x2924,0x2924,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x20e3,0x20e3,0x20e3,0x2103,0x20e3,0x20e4,0x2104,0x2924,0x3165,0x3165,0x2103,0x1062,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x0862,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082, +0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0882,0x1082,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1081,0x1062,0x10a2,0x2104,0x2103,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x20e3,0x2104,0x18e3,0x1061,0x0841,0x0841,0x18c3,0x2104,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x18c3,0x0861,0x0861,0x1082,0x20e4,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x2104,0x2924,0x20e3,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x10a2,0x18c2,0x20e3,0x20e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1082,0x1082,0x0882,0x10a2,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x0861,0x0881,0x0881,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x0882,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0881,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0861,0x0861,0x0882,0x1082,0x1082, +0x1082,0x0882,0x1082,0x0861,0x0881,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x0882,0x0881,0x0882,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0881,0x0881,0x0881,0x0882,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x0882,0x0881,0x0881,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x1082,0x0882,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x0881,0x0882,0x0882,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x1082,0x1082,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x0861,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x18a2,0x18a3,0x1082,0x0861,0x0861,0x0862,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x1082,0x0882,0x0882,0x0882,0x0882,0x0881,0x1082,0x1082,0x0881,0x0861,0x0882,0x0882,0x1082,0x1082,0x0881,0x0861,0x0881,0x0882,0x0882,0x1082,0x0882,0x0881,0x0882,0x1082,0x0882,0x1082,0x0881,0x0882,0x0861,0x0882,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0882,0x1082,0x0881,0x0882,0x0882,0x0882,0x0882,0x0882,0x0882,0x0861,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x0882, +0x0882,0x1082,0x0882,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x1082,0x0881,0x0861,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0881,0x0881,0x1082,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0861,0x0882,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0861,0x0882,0x0861,0x0861,0x0861,0x0882,0x0861,0x0861,0x0882,0x0881,0x0881,0x0881,0x0861,0x0881,0x0882,0x0861,0x0861,0x0881,0x0861,0x0861,0x0882,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x0881,0x0881,0x0881,0x0861,0x0881,0x0881,0x1082,0x0881,0x0861,0x0882,0x0882,0x0882,0x0861,0x0881,0x0882,0x0882,0x0861,0x18c2,0x1061,0x0861,0x1061,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x1082,0x0862,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1082,0x0861,0x0841,0x1081,0x18e3,0x1082,0x10a2,0x1082,0x18c3,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x0881,0x0882,0x0881,0x1082,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x10a2,0x0882,0x08a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0882,0x08a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x0861,0x0881,0x0882,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0861,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0881,0x0882,0x0881,0x0881,0x0881,0x0881,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x0861,0x0882,0x0881,0x0882,0x0881,0x0881,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x1082,0x0882,0x0861,0x0882,0x1082,0x0881,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0881,0x0861,0x0882,0x0882,0x0882,0x0881,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0882,0x1082,0x1082,0x0881,0x2102,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10c3,0x10a2,0x10c2,0x10c2,0x10c3, +0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0881,0x0882,0x0882,0x1082,0x1082,0x1082,0x10a2,0x1082,0x2943,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18c3,0x18c2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10a2,0x10c3,0x18c3,0x10a2,0x10c3,0x10a2,0x18c3,0x10c3,0x10c2,0x10c2,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x3164,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1904,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x1904,0x1904,0x18e3,0x1904,0x1904,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2104,0x2104,0x2103,0x1903,0x1903,0x1904,0x1904,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x2144,0x2144,0x2945,0x2124,0x2124,0x2124, +0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x3184,0x1081,0x1061,0x1061,0x0861,0x1061,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x18c2,0x20e3,0x2104,0x2124,0x1904,0x2124,0x2104,0x2103,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2165,0x2144,0x2145,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2986,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2986,0x31a6,0x29a6,0x2985, +0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x1924,0x1924,0x1924,0x2124,0x2124,0x2104,0x2124,0x1924,0x1924,0x1904,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1924,0x2124,0x1904,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x2144,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x1081,0x1081,0x1081,0x1081,0x1081,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x10a2,0x10a2,0x18c2,0x18e3,0x18c2,0x2103,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2165,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x29a6,0x29a6,0x3186,0x3186,0x2986,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x29a6,0x29c6,0x31c6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29c6,0x31c7,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x39e7,0x3a08,0x4208,0x41e7,0x4207,0x4207, +0x2985,0x2965,0x2986,0x2986,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x2985,0x3185,0x3185,0x2985,0x2986,0x2985,0x2965,0x2985,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2986,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2986,0x2985,0x2986,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2985,0x29a6,0x29a5,0x2985,0x3185,0x3185,0x31a6,0x31a6,0x31a5,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29c6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x29a6,0x2986,0x31a6,0x2986,0x29a6,0x2986,0x3186,0x2985,0x2986,0x31a6,0x29a6,0x2985,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x31a6,0x2985,0x29a6,0x31a6,0x31a6,0x3186,0x39a4,0x1081,0x1081,0x1082,0x1082,0x10a2,0x1061,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x10a2,0x2103,0x1082,0x18a2,0x1082,0x18c2,0x18e3,0x18c2,0x2104,0x39c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4208,0x41e7,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4249,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4228,0x4a28,0x4228,0x4208,0x3a28,0x3a28,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x39e7,0x4207,0x4208,0x4208,0x39e7,0x4208,0x39e7,0x41e8,0x4207,0x4207,0x39c7,0x39e7,0x39e7,0x41e7,0x41e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31a6,0x39a6,0x39a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3165,0x3186,0x3186,0x3165,0x3165,0x2945,0x2944,0x2944,0x3144,0x3145,0x2904,0x20e3,0x2924,0x2944,0x2944,0x2944,0x3145,0x2924,0x2924,0x2924}; diff --git a/MCUME_esp32/esp5200/main/main.c b/MCUME_esp32/esp5200/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/esp5200/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/esp5200/main/memory.h b/MCUME_esp32/esp5200/main/memory.h new file mode 100644 index 0000000..1945156 --- /dev/null +++ b/MCUME_esp32/esp5200/main/memory.h @@ -0,0 +1,18 @@ +#ifndef __MEMORY__ +#define __MEMORY__ + +extern unsigned char * memory; + +#define MEMORY_GetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_PutByte(addr,byte) Atari_PutByte(addr,byte) + +#define MEMORY_dGetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_dPutByte(addr,byte) Atari_PutByte(addr,byte) +#define MEMORY_dGetWord(x) (Atari_GetByte(x) | (Atari_GetByte((x) + 1) << 8)) +#define MEMORY_dPutWord(x,y) (Atari_PutByte(x,(UBYTE) (y)) , Atari_PutByte(x + 1,(UBYTE) ((y) >> 8)) +/* faster versions of dGetWord and dPutWord for even addresses */ +/* TODO: guarantee that memory is UWORD-aligned and use UWORD access */ +#define MEMORY_dGetWordAligned(x) MEMORY_dGetWord(x) +#define MEMORY_dPutWordAligned(x,y) MEMORY_dPutWord(x,y) + +#endif diff --git a/MCUME_esp32/esp5200/main/noise.h b/MCUME_esp32/esp5200/main/noise.h new file mode 100644 index 0000000..c93ac89 --- /dev/null +++ b/MCUME_esp32/esp5200/main/noise.h @@ -0,0 +1,1059 @@ +const UBYTE POKEY_poly9_lookup[] = { +255,127,63,31,15,135,195,225,240,120,188,222,239,119,59,29, +14,135,67,161,208,104,52,154,205,102,179,217,108,182,219,237, +246,123,189,94,47,23,11,133,194,225,112,56,156,206,103,51, +25,12,134,67,33,144,72,36,18,137,68,162,81,168,212,234, +117,186,93,174,215,235,245,122,61,158,79,39,147,73,164,210, +233,116,58,157,206,231,115,57,28,14,7,3,129,192,224,112, +184,220,238,119,187,93,46,151,203,229,242,121,188,94,175,87, +43,149,74,165,82,41,20,10,5,2,129,64,160,80,168,84, +170,85,170,213,234,245,250,125,190,95,175,215,107,181,90,45, +22,11,5,130,193,96,176,216,236,118,187,221,110,183,219,109, +182,91,173,214,107,53,26,13,6,131,65,160,208,232,116,186, +221,238,247,251,125,62,31,143,199,227,241,120,60,158,207,103, +179,89,44,150,203,101,178,89,172,214,235,117,58,29,142,199, +99,177,88,44,22,139,69,162,209,232,244,250,253,254,127,191, +95,47,151,75,165,210,105,52,26,141,70,163,81,40,148,202, +101,50,25,140,198,99,49,24,12,6,3,1,128,192,96,48, +152,204,102,51,153,76,166,83,169,212,106,53,154,77,38,147, +201,228,242,249,252,126,191,223,111,183,91,45,150,75,37,146, +73,36,146,201,100,178,217,236,246,251,253,126,63,159,79,167, +211,105,180,90,173,86,43,21,10,133,66,161,80,40,20,138, +69,34,145,200,228,114,185,220,110,55,155,77,166,211,233,244, +122,189,222,111,55,27,13,134,195,97,176,88,172,86,171,85, +42,149,202,229,114,57,156,78,39,19,9,132,194,97,48,24, +140,70,35,17,8,132,66,33,16,8,4,2,1,0,128,64, +32,16,136,68,34,17,136,196,98,49,152,76,38,19,137,196, +226,113,184,92,174,87,171,213,106,181,218,109,54,27,141,198, +227,113,56,28,142,71,35,145,72,164,82,169,84,42,21,138, +197,98,177,216,108,54,155,205,230,243,249,124,62,159,207,231, +243,121,60,30,143,71,163,209,104,180,218,237,118,59,157,78, +167,83,41,148,74,37,18,9,4,130,65,32,144,200,100,50, +153,204,230,115,185,92,46,23,139,197,226,241,248,124,190,223, +239,247,123,61,30,15,7,131,193,224,240,248,252,254,255,}; +const UBYTE POKEY_poly17_lookup[] = { +255,1,224,3,254,231,131,241,31,28,254,217,99,142,33,4, +1,24,130,17,28,226,25,90,146,145,61,250,216,123,12,48, +24,227,1,216,131,141,223,227,130,233,157,13,226,59,122,212, +179,149,60,226,90,106,16,210,1,185,147,73,190,119,7,152, +142,217,133,238,227,227,249,89,108,118,190,11,199,103,242,233, +123,109,32,220,130,149,93,242,158,11,132,87,112,170,71,46, +107,238,48,210,66,137,17,10,130,52,76,170,60,158,154,149, +108,226,255,58,80,118,197,187,54,28,174,217,198,222,97,160, +197,26,39,68,12,76,216,28,125,232,125,14,28,220,249,37, +172,137,194,59,57,228,49,214,0,161,17,88,162,149,30,194, +28,72,184,20,59,152,245,105,116,149,191,211,68,234,45,10, +249,132,189,209,96,174,39,38,45,158,184,181,42,192,87,252, +106,87,163,155,252,254,22,146,12,237,201,68,223,125,99,204, +0,148,65,49,151,17,55,82,77,113,142,5,68,75,60,82, +91,17,163,19,124,230,159,50,22,6,77,220,94,85,232,47, +46,189,142,145,5,122,171,67,108,67,238,98,242,227,219,121, +42,84,22,205,253,70,148,201,177,143,152,151,72,166,245,22, +132,108,192,223,124,114,222,3,129,23,122,142,19,36,102,42, +106,246,178,195,94,107,8,80,16,165,113,80,228,229,150,165, +116,1,254,226,211,251,26,88,180,245,51,212,36,229,27,116, +118,143,27,166,86,38,200,206,124,81,238,71,162,171,254,189, +34,80,71,213,218,7,200,143,108,215,175,83,101,242,236,43, +103,37,152,200,185,13,168,155,234,158,59,132,52,64,106,36, +146,106,141,3,34,39,54,44,175,170,244,31,22,94,205,105, +6,181,92,161,172,136,211,41,58,241,103,157,25,163,2,108, +197,142,102,117,155,93,239,78,48,153,243,11,88,151,197,119, +247,152,97,40,69,2,174,228,22,167,92,132,252,192,246,237, +50,245,54,133,62,226,94,42,24,214,81,177,182,9,246,115, +211,208,171,28,157,232,179,239,156,17,32,34,98,102,162,234, +238,59,99,68,128,140,200,145,141,250,179,202,204,89,5,230, +106,98,243,242,201,122,63,2,93,212,255,85,160,174,170,247, +47,16,93,241,175,29,133,106,162,243,126,8,122,176,243,91, +88,50,149,55,83,92,99,141,16,18,0,37,80,72,37,196, +8,4,81,24,39,65,92,70,221,88,55,196,45,84,25,61, +227,73,88,23,197,127,118,152,107,137,65,10,39,100,12,14, +248,156,63,192,124,76,62,124,191,15,133,79,242,187,91,204, +114,180,162,67,127,115,201,113,142,4,84,73,61,70,25,24, +179,1,125,211,205,123,39,128,76,200,29,76,250,60,59,202, +213,200,38,253,159,5,102,107,122,112,243,215,153,50,26,198, +85,208,174,77,135,239,246,177,242,72,106,53,130,73,156,87, +65,186,38,31,191,207,133,195,51,187,212,61,116,56,111,131, +232,142,63,229,44,4,27,184,183,11,212,87,213,250,7,138, +175,236,149,135,82,39,208,76,109,77,12,94,248,57,111,128, +216,136,60,217,234,31,43,142,180,84,34,140,134,112,5,182, +106,199,163,178,109,190,61,167,8,196,81,148,230,65,211,183, +219,212,250,4,186,169,239,169,65,73,23,230,79,50,187,215, +13,114,59,83,69,243,190,9,230,115,242,192,235,61,9,232, +146,254,204,50,181,54,1,126,226,219,122,26,82,21,241,59, +93,164,255,178,208,110,76,27,44,247,42,65,71,246,234,67, +235,51,232,228,158,39,68,13,92,218,29,105,170,116,30,14, +221,204,119,229,184,68,58,45,167,40,196,19,180,102,3,251, +182,153,246,90,66,144,128,41,153,193,43,63,165,45,144,89, +185,38,25,223,195,131,187,191,140,180,81,114,134,131,52,79, +154,58,157,166,83,119,210,201,57,15,128,30,232,188,30,146, +28,237,232,84,159,92,247,204,33,133,17,18,2,5,84,74, +13,64,26,36,117,26,77,229,206,36,209,91,31,66,31,112, +63,23,13,255,234,81,203,22,250,140,59,161,100,8,79,224, +154,110,220,27,5,102,106,106,114,242,195,219,59,10,212,84, +229,252,4,182,105,247,165,177,81,120,38,151,62,199,14,98, +61,18,89,181,231,17,209,50,143,150,118,68,170,44,158,187, +133,44,195,107,58,113,103,149,152,163,8,205,193,134,239,245, +129,244,75,86,243,153,121,170,84,30,76,253,76,53,205,185, +6,24,141,225,2,237,213,132,230,97,211,245,251,84,184,44, +187,235,205,9,7,99,62,32,127,178,217,255,78,16,153,177, +43,216,213,237,118,181,186,193,110,111,43,104,212,150,197,116, +199,158,98,20,131,25,158,210,21,248,170,95,175,74,244,209, +247,222,0,176,1,123,179,193,125,95,12,123,168,113,74,68, +208,140,109,193,205,94,119,200,105,12,21,72,171,36,28,139, +137,142,251,165,168,193,75,63,99,77,16,158,193,37,223,185, +35,72,197,196,198,229,209,213,254,70,146,169,189,137,224,27, +127,198,153,16,58,128,119,120,104,119,166,137,214,123,16,240, +33,255,177,225,120,77,38,254,174,19,103,86,168,41,202,241, +136,108,217,79,79,107,42,112,86,135,217,150,222,196,240,133, +190,227,70,169,25,200,178,188,174,146,119,92,40,61,130,89, +156,118,81,250,7,139,191,238,148,147,16,46,192,94,108,120, +94,23,201,191,110,148,155,145,46,202,255,104,112,215,151,211, +22,202,140,88,145,164,107,243,225,249,93,44,126,186,91,207, +66,178,161,127,185,104,249,71,141,91,162,146,110,204,27,36, +118,42,75,230,242,226,202,107,41,65,64,134,228,68,135,253, +214,148,224,32,207,179,162,76,143,109,198,189,80,112,164,167, +50,101,54,172,175,162,117,31,28,255,201,97,143,53,70,8, +8,144,16,41,176,80,107,20,144,41,185,193,105,31,37,111, +184,88,251,4,185,153,233,170,125,143,12,214,121,49,228,33, +214,33,177,81,121,54,149,63,211,76,107,45,0,88,128,181, +88,224,180,142,130,53,93,184,63,139,204,222,117,224,236,14, +55,109,189,12,177,9,249,131,205,223,103,194,233,24,93,224, +191,62,148,62,193,110,110,59,106,213,130,135,125,215,140,99, +33,209,80,175,84,20,236,233,70,189,89,225,166,172,135,35, +55,53,61,185,233,233,77,13,79,234,58,122,214,147,145,62, +202,222,120,48,246,3,211,55,219,220,123,4,176,8,235,161, +200,201,13,79,235,42,120,215,135,211,55,218,204,121,5,164, +74,226,177,218,200,56,29,162,27,254,214,147,144,46,200,223, +108,114,255,19,193,54,238,142,50,53,54,9,255,226,209,219, +30,90,156,113,33,244,0,231,113,208,228,237,23,165,126,160, +250,234,90,123,0,241,16,237,240,212,174,68,23,253,255,5, +160,11,250,183,139,212,95,84,250,13,43,171,228,28,7,72, +142,116,84,174,77,134,255,244,176,230,10,99,37,144,72,169, +5,8,139,160,30,171,140,156,209,32,174,163,102,45,27,232, +183,174,132,23,113,62,5,47,250,252,59,70,20,200,169,12, +153,137,171,171,237,141,5,67,59,50,85,55,223,157,99,2, +225,20,140,232,144,223,216,50,156,166,81,87,214,203,17,139, +146,62,204,190,116,54,142,143,228,87,183,218,197,232,7,175, +255,164,176,67,90,35,129,84,74,12,80,24,37,97,88,68, +245,220,37,228,9,86,115,153,113,43,84,20,237,249,68,188, +77,163,175,188,149,34,2,103,116,136,111,232,89,78,86,248, +41,111,161,200,200,29,77,234,62,58,222,151,193,54,239,158, +48,52,34,75,246,242,195,218,43,8,213,64,167,245,20,164, +104,194,247,248,96,254,39,131,125,222,28,113,40,101,2,236, +196,150,229,116,133,190,226,86,171,24,220,240,181,190,128,118, +105,122,116,179,223,157,98,18,227,21,152,170,153,207,202,51, +169,244,24,102,80,202,5,200,139,44,223,171,3,109,215,172, +99,99,241,208,237,124,21,174,203,230,251,115,200,96,156,7, +65,31,118,95,27,11,135,102,102,171,122,252,50,215,22,195, +28,74,152,16,57,176,113,123,84,177,189,185,224,120,79,6, +250,172,59,227,68,136,13,200,155,44,254,187,67,76,67,172, +66,114,161,243,120,104,118,182,139,215,111,82,249,49,237,176, +212,42,4,23,120,175,7,36,79,186,58,223,134,211,53,250, +200,123,45,32,88,194,149,216,162,156,143,192,23,253,254,21, +162,10,238,245,130,196,77,85,207,95,98,154,98,29,19,11, +151,102,71,187,58,221,166,215,55,210,76,105,13,4,90,168, +49,74,192,144,140,232,145,207,218,51,136,228,88,71,196,202, +36,217,219,15,74,191,96,117,151,157,247,66,192,129,156,203, +128,155,185,174,152,215,72,34,181,22,1,60,194,91,56,50, +83,87,211,155,27,142,214,116,224,238,46,51,111,149,136,163, +41,221,129,167,123,245,160,229,27,117,102,141,26,178,20,47, +216,220,125,100,188,14,147,45,255,169,97,73,85,198,207,112, +147,214,79,80,155,21,111,218,120,57,102,17,218,131,137,159, +235,134,185,149,40,162,115,126,0,251,176,249,250,92,58,28, +183,73,245,199,149,211,18,138,132,92,193,172,78,179,169,253, +137,100,91,127,67,201,18,190,196,55,245,60,37,42,232,214, +190,64,118,229,187,116,60,46,155,238,223,35,130,101,92,13, +109,202,124,88,126,85,171,31,172,254,178,210,78,72,25,4, +115,56,97,99,244,128,231,121,81,228,231,182,161,118,41,122, +240,243,223,24,50,16,103,81,216,39,205,157,70,82,169,49, +72,224,148,142,192,21,221,250,23,138,142,252,213,166,198,39, +241,93,61,110,153,74,155,33,47,177,76,169,13,136,155,168, +190,187,198,28,65,40,6,50,44,167,42,228,23,182,78,135, +233,150,189,244,48,230,2,226,37,154,233,173,13,129,11,186, +183,15,148,95,209,170,15,175,239,164,145,83,26,2,21,84, +107,29,0,59,176,117,59,92,181,237,177,197,56,7,2,46, +228,30,38,92,142,93,196,254,100,178,239,159,33,38,33,94, +160,185,218,216,56,60,178,91,223,66,147,177,63,152,252,249, +102,156,11,129,7,122,175,3,100,71,190,106,215,163,147,125, +254,28,51,8,229,64,196,197,212,199,212,195,148,203,144,155, +152,190,216,246,220,34,148,7,81,31,87,79,91,42,19,102, +71,186,42,223,167,195,117,219,92,123,12,49,8,225,0,204, +193,132,207,241,131,220,207,68,211,189,123,192,240,140,46,241, +79,29,75,139,34,62,167,15,180,95,147,138,143,237,199,165, +211,113,186,68,63,125,173,45,128,89,152,54,89,254,87,131, +154,174,220,151,196,102,229,155,116,126,14,27,172,247,34,192, +71,252,75,71,227,186,104,254,55,131,92,206,92,80,188,101, +35,253,148,181,112,96,230,166,162,103,63,57,237,161,196,9, +21,67,27,50,23,23,95,223,75,3,163,54,44,174,186,246, +30,2,28,196,121,20,180,105,243,229,185,85,40,46,178,126, +143,10,182,117,55,156,173,225,65,221,87,199,218,34,152,199, +73,19,167,87,52,234,203,106,59,99,69,144,142,201,133,207, +243,163,216,205,108,87,175,91,228,242,230,138,99,45,17,72, +163,164,12,131,41,158,177,37,56,201,227,174,41,199,33,146, +97,61,21,41,187,224,125,31,12,255,232,113,207,20,210,8, +41,129,64,10,37,68,8,12,208,24,45,224,88,78,84,216, +45,109,137,76,218,61,105,232,84,158,76,245,205,53,199,24, +2,16,4,97,24,68,113,156,37,97,89,84,247,221,49,166, +0,70,97,152,68,121,29,37,107,248,80,255,84,177,188,169, +226,121,91,68,243,188,41,226,113,218,68,249,29,45,234,248, +90,94,80,185,53,41,248,208,255,92,48,188,163,67,125,83, +205,115,166,128,70,105,25,68,115,188,33,99,113,208,229,253, +21,164,106,226,243,250,72,122,53,163,89,220,118,213,186,7, +14,239,236,16,215,80,163,148,12,224,25,94,210,153,57,170, +208,94,76,120,28,55,73,253,70,149,217,179,142,140,213,65, +182,231,23,177,62,137,238,250,115,202,64,152,5,105,155,100, +127,63,9,237,194,244,201,118,255,26,81,36,231,58,96,118, +166,139,246,127,18,216,165,237,145,197,122,39,130,108,204,31, +100,126,46,27,238,215,162,130,111,253,9,101,67,252,66,215, +241,179,220,172,116,19,222,199,193,147,191,222,148,240,32,238, +163,226,109,27,109,231,172,0,83,49,179,81,125,118,157,59, +131,68,78,109,72,92,84,253,125,37,172,136,210,57,56,240, +115,223,16,179,16,109,240,220,47,68,29,92,251,13,41,139, +224,30,47,204,156,84,112,172,39,34,109,150,188,229,34,229, +23,180,110,131,235,190,57,230,16,194,0,136,129,8,139,161, +14,169,141,136,147,41,190,177,103,24,73,161,134,40,133,3, +50,39,23,60,239,139,96,31,55,79,157,74,147,161,63,185, +236,185,71,8,11,160,22,42,140,150,112,36,166,42,230,55, +178,76,175,109,132,157,208,50,140,166,112,71,150,234,133,139, +179,47,156,157,225,34,237,151,164,102,35,251,244,185,118,24, +106,145,194,11,57,135,1,22,99,29,16,59,145,101,123,125, +33,237,144,212,104,36,151,58,135,6,102,109,26,124,245,175, +21,5,122,170,83,110,66,250,32,251,243,201,120,31,6,95, +252,123,71,128,138,168,157,139,130,63,253,172,53,3,88,134, +213,84,230,204,2,181,85,49,190,129,103,123,121,97,229,148, +132,96,1,215,114,131,210,46,72,223,100,243,255,25,96,50, +230,7,178,47,159,173,231,33,209,81,191,86,21,248,171,79, +173,75,224,147,254,206,18,177,52,41,250,240,251,94,24,56, +177,99,89,81,167,215,52,226,74,106,49,194,65,152,7,73, +159,102,87,187,27,205,230,246,163,210,109,120,93,39,207,188, +82,82,128,161,24,201,160,158,171,132,29,209,42,15,167,110, +164,155,242,30,10,156,212,113,180,164,35,115,117,177,253,185, +100,56,79,131,170,174,191,167,4,5,89,154,23,77,254,126, +19,202,135,232,135,175,247,37,176,73,251,39,137,221,202,22, +249,188,61,162,88,206,84,208,172,109,131,237,222,53,224,104, +78,55,232,237,14,53,77,185,14,153,141,235,163,233,221,13, +102,123,122,81,227,151,184,166,26,231,68,128,141,216,147,140, +238,241,195,220,75,4,211,56,43,194,116,200,110,124,27,79, +199,234,34,251,247,137,112,27,86,87,217,59,15,132,94,224, +184,78,154,57,173,160,80,75,20,210,9,57,131,65,30,103, +77,24,30,209,45,127,169,105,200,85,204,110,116,155,95,207, +74,50,177,119,25,120,179,199,29,83,10,3,36,70,42,40, +214,50,129,118,106,74,114,176,227,91,121,34,213,22,199,92, +66,156,64,49,149,49,51,80,101,245,156,37,96,73,86,246, +201,115,175,16,84,96,173,22,48,44,163,106,236,19,230,70, +162,169,222,185,32,120,195,199,250,35,202,229,200,69,205,95, +102,218,106,25,67,3,178,38,15,191,238,149,131,18,47,212, +28,101,104,76,22,252,237,39,165,29,144,58,137,230,122,99, +194,224,136,79,233,11,108,215,174,67,103,243,248,105,110,53, +138,201,140,95,225,170,108,159,47,199,45,82,121,49,229,49, +212,32,165,19,112,38,135,62,230,30,34,28,134,89,148,246, +65,242,167,155,245,110,4,155,184,191,138,212,93,116,254,15, +3,47,246,60,35,74,228,208,198,204,65,133,215,114,130,194, +44,73,203,38,250,239,11,97,7,180,78,131,169,158,185,164, +56,195,66,170,33,78,161,136,200,153,13,234,187,106,220,19, +133,118,98,202,98,184,67,75,51,162,69,30,111,205,8,22, +113,61,53,41,249,192,253,93,36,254,170,83,111,82,248,33, +239,177,192,104,13,7,106,174,50,118,6,139,188,222,146,144, +44,232,219,110,90,123,1,225,18,236,228,150,167,84,5,252, +202,87,233,58,124,182,159,151,70,70,233,24,92,240,189,63, +128,124,200,126,124,58,95,135,203,182,251,214,152,32,56,195, +67,186,35,79,181,202,193,137,31,235,142,56,149,34,3,119, +118,137,123,170,80,94,68,249,28,61,232,249,78,28,89,169, +39,40,205,130,182,109,182,189,183,0,100,65,222,102,209,219, +31,74,158,112,53,182,9,247,99,209,209,191,94,148,248,161, +238,169,67,105,19,228,103,182,169,247,41,112,81,247,215,145, +178,10,206,245,192,228,205,23,231,94,32,184,194,91,57,34, +81,86,199,217,18,158,196,117,213,188,103,2,233,148,156,224, +48,207,146,178,12,174,249,198,156,65,32,135,50,38,6,46, +236,158,54,84,46,77,142,126,244,186,71,14,107,172,16,82, +0,161,16,72,160,148,10,128,21,88,170,21,14,202,188,88, +242,148,171,144,93,248,62,31,142,223,228,242,231,154,97,44, +5,10,170,180,30,130,28,204,248,20,190,200,247,237,48,213, +50,135,22,102,76,10,60,212,59,21,36,107,250,112,251,86, +153,56,187,194,93,89,46,87,46,75,238,114,242,194,203,57, +11,192,22,236,236,22,183,92,165,236,128,215,121,50,212,39, +213,29,119,74,73,0,150,96,37,151,56,167,2,100,69,158, +110,213,139,23,111,222,56,49,98,65,210,166,201,215,239,82, +241,176,237,186,117,46,12,158,248,181,174,128,87,121,58,85, +39,223,188,115,66,192,128,140,201,129,143,251,167,136,197,73, +23,231,95,48,186,195,79,123,43,65,68,198,236,64,215,245, +243,212,168,36,27,251,135,137,151,107,150,177,53,56,232,243, +238,8,83,33,179,112,109,54,188,175,131,101,95,61,107,201, +64,158,101,101,157,28,243,8,105,129,196,74,37,193,88,14, +84,92,109,109,12,28,216,185,45,168,217,202,30,121,172,53, +2,72,132,212,64,164,197,18,167,84,4,236,200,86,253,120, +117,166,141,150,115,20,160,41,218,241,169,124,153,110,219,107, +11,97,6,164,76,130,189,220,176,180,42,194,119,248,104,127, +39,137,220,218,20,248,168,127,171,72,220,85,229,254,36,178, +107,223,33,163,113,92,36,253,154,85,108,110,62,58,223,135, +195,55,251,220,57,36,48,74,195,160,138,235,173,9,193,3, +190,231,7,177,31,153,174,219,231,202,97,137,85,74,14,112, +28,39,73,220,86,213,248,39,142,173,196,17,149,114,3,210, +38,201,223,110,82,251,17,233,178,252,174,22,55,92,173,109, +128,221,216,54,220,174,85,7,222,238,81,195,150,234,132,155, +177,46,136,223,232,50,255,150,145,52,106,202,114,184,98,91, +115,131,209,30,78,220,88,53,228,41,86,49,185,241,105,124, +21,175,219,228,250,103,138,105,140,21,64,42,36,22,42,141, +134,114,37,178,104,239,39,160,77,154,63,205,172,86,51,152, +229,105,85,133,255,242,208,234,12,27,169,167,40,197,3,182, +103,23,185,191,137,228,91,119,194,201,24,31,192,63,124,188, +63,131,76,206,125,64,252,68,183,253,181,164,32,67,115,178, +193,127,127,8,121,128,245,88,100,244,142,7,101,95,60,123, +203,65,138,39,108,141,14,242,61,59,200,245,204,36,213,27, +23,70,79,120,26,87,69,251,62,25,238,211,226,138,107,173, +1,64,3,180,70,3,185,150,25,180,114,67,210,162,137,223, +235,2,249,149,173,242,113,250,68,187,61,173,168,208,91,28, +114,25,115,3,209,22,207,220,82,148,224,33,223,177,163,88, +205,100,214,175,81,69,246,238,3,227,55,184,236,187,103,12, +9,136,146,56,172,178,114,78,2,184,132,59,177,100,41,95, +160,187,250,220,58,20,54,73,255,102,145,219,155,10,158,245, +101,180,141,179,35,92,133,237,210,245,248,100,190,47,135,45, +214,57,49,96,97,214,164,225,83,253,114,213,178,135,30,231, +76,0,157,208,51,156,164,113,83,212,227,149,153,178,26,206, +212,208,164,236,131,231,127,49,232,225,206,45,65,73,22,246, +77,51,175,149,4,98,41,82,112,161,247,56,96,114,230,131, +242,47,26,253,229,165,149,17,50,2,71,116,202,79,104,27, +102,87,186,11,207,231,226,225,219,125,106,92,18,157,245,99, +212,129,181,91,208,178,141,190,243,70,136,9,136,147,40,174, +179,102,12,11,168,150,58,132,54,96,110,38,186,238,159,35, +6,37,92,136,61,200,248,28,62,216,255,77,32,159,178,23, +30,206,221,64,182,229,55,181,60,161,106,232,83,238,66,242, +161,251,249,104,124,23,143,223,230,210,227,152,73,168,23,42, +142,182,116,38,142,174,244,23,150,78,197,201,22,255,220,49, +164,32,66,99,176,192,107,61,1,105,146,244,109,54,189,191, +129,100,75,127,98,217,82,159,80,55,212,45,117,9,125,194, +221,88,54,212,47,85,13,127,234,89,74,22,240,45,63,169, +237,136,85,73,62,118,31,27,143,199,102,227,251,120,120,118, +151,155,151,78,198,249,16,252,224,247,191,16,116,96,239,54, +176,110,139,107,174,49,70,0,136,128,24,137,160,26,235,132, +152,129,40,139,227,46,41,207,160,146,107,156,17,33,50,96, +103,182,168,231,43,113,69,181,222,129,160,11,251,167,137,213, +75,22,243,29,57,170,209,78,78,121,8,117,64,237,84,148, +236,225,199,189,83,64,162,164,14,163,45,156,153,161,42,233, +199,172,67,99,179,240,109,62,61,175,137,196,91,53,226,73, +90,55,193,125,94,28,121,169,101,8,77,192,158,108,244,159, +23,70,78,104,24,86,81,185,55,9,252,210,215,216,34,156, +135,65,23,247,95,17,170,131,110,239,43,96,85,150,207,213, +195,150,235,148,153,176,58,202,214,248,32,254,163,195,125,91, +76,115,172,33,66,97,144,196,105,21,133,123,178,208,111,92, +25,45,227,104,72,87,228,235,118,185,122,217,98,159,51,7, +20,78,201,8,30,241,45,61,137,233,138,125,205,44,86,59, +25,229,99,244,129,247,123,80,240,165,191,177,100,40,79,162, +186,238,158,51,4,36,72,202,52,216,234,29,11,138,182,124, +166,158,166,84,7,220,206,85,193,190,110,150,187,149,44,226, +123,122,80,243,149,185,178,88,238,84,146,140,237,193,197,223, +119,194,200,8,29,193,43,62,181,47,145,77,251,47,9,205, +194,182,233,246,189,50,80,102,197,154,38,92,143,77,198,255, +112,240,230,143,51,39,20,12,233,136,92,217,44,127,171,73, +204,87,228,234,102,187,123,205,32,150,35,21,21,123,155,65, +47,119,44,41,202,240,152,110,216,91,13,98,58,98,87,178, +139,223,239,66,241,145,253,250,84,186,12,191,233,229,141,21, +67,26,34,21,22,75,157,66,19,177,55,25,252,243,199,152, +3,8,135,96,6,167,124,132,190,224,118,175,26,244,116,167, +158,164,116,3,222,230,209,211,158,74,148,209,49,190,128,119, +121,120,117,167,157,148,114,0,226,32,202,227,168,73,203,39, +234,237,10,117,69,189,94,145,168,171,235,237,9,69,67,190, +98,87,179,155,221,238,86,179,152,237,232,85,143,94,246,216, +99,140,1,0,3,48,6,3,60,198,27,48,54,3,95,246, +219,83,138,2,60,197,43,54,53,63,153,237,235,101,137,93, +202,30,120,188,55,3,92,198,221,80,182,196,39,245,29,53, +106,201,66,190,97,103,181,152,225,40,77,131,174,238,183,163, +84,13,124,218,95,73,42,54,54,15,159,238,215,163,146,109, +252,29,39,74,236,80,214,196,225,149,157,242,18,202,132,216, +129,172,203,227,171,121,205,36,214,43,17,69,115,190,1,103, +115,248,97,239,53,128,104,136,87,104,42,118,54,139,223,238, +82,243,144,233,184,93,170,30,190,220,183,196,36,197,27,54, +86,15,89,142,87,100,234,110,58,123,199,129,146,43,156,149, +97,50,229,55,180,44,163,107,252,17,231,82,224,160,206,171, +33,77,145,142,203,165,203,241,139,92,223,76,115,173,49,64, +96,132,134,96,5,151,122,135,130,38,109,159,44,247,43,81, +69,247,254,1,226,35,250,229,171,117,13,60,218,219,9,42, +179,102,13,27,170,151,46,198,63,112,124,39,143,188,214,18, +128,36,72,203,36,218,235,9,73,131,166,110,167,171,244,29, +54,90,207,65,130,167,124,133,174,226,119,187,88,253,100,181, +159,145,38,74,239,96,208,199,221,83,134,194,36,201,219,46, +90,255,65,225,151,188,230,18,227,20,136,168,152,219,136,58, +185,230,25,83,2,131,52,78,138,56,156,178,17,126,194,219, +56,58,210,87,217,58,31,134,95,244,250,71,138,43,172,149, +2,2,37,84,8,45,192,88,12,116,88,111,69,136,14,248, +157,47,194,125,88,124,117,175,29,132,122,160,242,106,74,115, +160,225,90,109,96,220,6,213,93,119,206,9,0,19,48,39, +19,124,231,143,48,23,18,15,213,78,71,233,26,124,244,191, +23,4,110,232,90,126,80,251,21,169,186,248,254,30,18,28, +229,105,84,149,253,243,196,168,5,11,187,166,29,151,74,135, +225,22,173,252,144,246,72,98,181,146,65,60,71,11,58,182, +23,23,94,207,73,2,183,116,37,190,168,247,43,80,85,245, +255,21,160,42,234,247,170,64,95,117,235,93,8,62,240,127, +31,8,191,224,117,159,28,247,72,97,133,148,66,0,129,16, +10,128,20,72,168,20,26,136,181,72,224,149,158,194,20,201, +184,30,154,156,253,224,244,143,22,119,92,41,45,128,88,136, +52,88,234,21,138,138,188,221,162,150,47,212,29,117,106,77, +2,190,228,55,183,28,165,104,192,215,252,98,214,163,145,93, +250,30,27,140,247,96,224,199,190,99,70,161,152,200,184,29, +170,154,254,220,50,148,38,65,95,118,219,91,11,2,54,100, +47,62,188,191,131,68,79,125,74,93,64,191,116,53,190,137, +231,107,113,193,245,222,4,240,9,127,227,201,88,31,68,127, +124,57,111,129,200,138,61,205,168,22,59,156,181,97,112,197, +183,246,4,162,41,222,177,161,120,201,102,254,43,67,101,210, +236,105,71,165,218,224,184,79,138,59,172,180,18,66,4,192, +8,12,209,8,47,225,76,12,93,200,63,108,188,30,147,12, +239,233,64,221,85,231,222,32,176,67,91,51,131,85,94,78, +89,8,55,96,109,22,188,237,163,229,29,21,106,139,98,62, +35,79,180,218,195,136,11,169,135,40,135,35,54,37,63,184, +253,171,68,29,93,235,15,40,159,162,23,63,222,157,97,34, +229,22,164,108,130,255,252,48,246,2,195,53,218,200,57,13, +160,26,234,148,154,128,60,201,234,62,59,206,149,192,34,173, +151,32,38,35,126,164,187,242,92,42,28,150,89,181,230,1, +211,51,155,212,127,84,184,45,171,233,204,29,69,106,46,50, +126,135,139,182,127,150,152,165,104,193,199,254,99,194,225,152, +77,232,31,46,222,190,81,102,198,170,32,95,179,139,221,207, +70,243,185,121,232,116,158,14,213,77,119,239,25,64,50,164, +39,50,109,183,172,165,3,113,23,149,127,211,200,43,45,133, +8,130,49,28,160,57,218,208,185,60,184,250,219,74,26,49, +37,49,88,225,165,156,129,32,11,243,38,137,223,234,18,251, +148,185,176,120,234,86,186,8,255,225,225,221,29,102,90,106, +17,194,3,184,135,11,183,103,21,153,187,139,204,223,101,226, +237,26,117,100,173,30,176,60,171,202,252,89,102,214,170,1, +79,243,170,73,207,103,226,233,90,125,96,253,22,149,124,227, +206,40,17,67,19,178,7,31,255,207,1,131,51,62,132,63, +240,124,47,14,188,220,179,132,44,193,75,62,115,79,17,138, +131,44,207,171,34,125,151,141,247,99,208,193,189,95,128,186, +168,254,187,66,92,65,173,86,48,168,227,106,105,67,228,194, +230,233,83,237,114,244,162,199,63,115,76,33,140,128,16,9, +176,18,75,148,210,1,184,131,75,191,99,69,145,158,203,132, +219,177,170,200,223,109,98,253,18,213,116,231,158,32,52,3, +91,182,211,87,218,10,25,133,99,50,225,119,188,40,243,99, +217,81,175,86,52,232,235,110,57,75,193,130,174,237,135,165, +87,49,186,193,111,127,41,105,192,212,204,100,213,159,87,70, +202,40,24,211,1,187,179,77,188,95,131,138,174,253,135,132, +71,113,155,85,111,94,56,57,227,65,216,7,205,223,102,210, +235,25,73,162,182,46,134,63,244,60,39,10,236,212,150,196, +100,197,159,118,86,138,9,140,211,32,170,227,110,41,75,224, +146,238,204,19,165,118,32,234,226,250,107,74,113,128,229,88, +69,228,206,38,241,95,29,106,155,98,31,51,15,149,78,195, +169,26,249,164,189,147,64,46,101,14,44,220,154,21,108,234, +126,58,90,215,193,179,191,156,180,112,98,198,162,160,79,187, +43,205,133,198,99,177,209,121,62,20,63,217,237,111,37,137, +216,154,28,252,248,119,142,8,148,81,49,182,1,119,115,217, +113,175,20,20,104,169,70,56,9,227,34,232,199,174,99,103, +177,216,233,44,29,139,139,174,255,167,128,69,89,31,71,79, +122,58,83,71,211,186,11,206,247,224,224,207,63,99,76,0, +156,192,49,157,176,51,90,196,241,148,172,224,83,255,82,209, +176,175,154,245,108,36,159,186,151,14,198,125,80,252,101,167, +189,148,48,32,98,98,226,226,234,107,107,97,192,196,204,69, +197,223,118,210,202,9,9,131,34,46,167,46,164,31,178,30, +143,204,214,245,240,228,174,39,39,61,156,185,161,104,201,71, +238,107,98,241,210,205,120,23,134,79,244,219,87,202,10,56, +149,35,19,117,119,157,57,163,64,76,69,204,78,116,217,127, +79,8,26,176,53,59,216,245,237,52,149,58,131,70,110,105, +74,116,208,239,93,1,174,226,118,171,90,252,112,247,150,129, +52,75,218,50,153,246,91,82,146,129,61,219,200,59,45,164, +24,194,16,136,160,24,203,128,154,169,172,153,195,10,43,165, +4,0,9,144,18,9,180,82,67,144,130,9,157,195,3,187, +183,13,180,91,211,130,139,189,207,128,147,57,190,144,119,88, +104,53,134,9,148,83,17,178,3,95,247,203,81,139,22,126, +204,59,36,52,10,203,164,218,227,136,73,137,7,106,175,34, +116,7,159,254,215,130,130,45,221,137,39,107,253,0,245,81, +245,246,133,178,35,94,165,233,208,221,124,118,158,11,133,71, +114,171,83,108,98,254,34,211,119,219,88,59,4,53,88,233, +37,140,137,128,27,185,166,25,215,66,131,177,30,136,188,216, +242,156,42,144,87,89,58,23,7,95,254,91,67,130,162,44, +143,171,166,61,151,8,167,97,84,133,253,210,212,232,36,159, +187,135,12,199,105,18,245,117,181,188,161,98,105,83,228,227, +246,169,114,121,114,213,179,151,28,230,88,66,148,192,33,157, +145,35,26,229,101,148,141,241,3,220,199,197,211,183,218,196, +248,5,174,235,230,185,83,72,34,180,6,3,61,214,25,49, +34,65,86,230,201,82,191,80,117,244,173,55,33,124,128,255, +248,112,254,6,147,61,255,136,113,9,116,82,207,81,130,134, +108,197,143,118,119,154,73,173,71,32,139,242,62,10,222,244, +241,246,140,34,49,87,17,187,147,77,254,127,3,200,134,252, +197,166,231,55,177,124,169,110,184,91,203,2,186,165,47,177, +77,185,15,137,143,234,183,171,212,29,116,122,79,3,170,166, +62,167,14,164,93,146,158,205,228,215,183,210,68,232,13,14, +251,172,57,195,64,138,37,76,137,12,218,185,41,232,209,206, +78,113,137,117,74,76,80,156,101,97,221,20,247,88,97,164, +132,2,33,21,16,43,145,68,107,61,0,121,144,245,121,116, +180,175,147,101,126,45,43,232,212,158,68,116,205,63,102,28, +10,153,132,123,177,224,105,95,37,235,248,88,126,84,187,29, +173,234,240,219,94,90,24,49,33,113,80,229,245,148,164,96, +67,247,242,193,250,47,10,253,196,181,213,48,166,2,102,101, +154,108,253,15,5,79,250,58,91,198,211,176,170,202,255,105, +96,213,150,199,84,195,156,74,144,145,57,186,208,127,92,56, +61,163,73,220,87,197,250,38,154,239,205,1,135,115,54,128, +111,248,89,111,70,184,8,251,161,233,217,77,110,127,42,89, +198,215,240,162,206,175,97,69,149,222,195,128,139,185,143,136, +151,105,182,181,55,16,108,225,206,44,81,75,23,226,15,58, +191,135,5,87,123,27,65,39,246,44,35,107,244,144,231,88, +65,164,198,34,161,87,56,42,211,102,203,123,42,80,86,197, +249,22,156,236,241,199,156,67,0,131,48,14,130,60,204,186, +52,62,138,223,236,114,247,146,193,60,79,138,58,188,182,19, +86,70,201,24,30,208,61,125,168,125,138,92,220,124,117,174, +13,134,123,180,176,99,90,97,161,212,8,36,81,90,7,193, +30,110,220,26,21,100,107,126,48,251,211,201,58,63,134,29, +212,122,5,162,42,238,183,162,68,15,125,206,29,64,58,36, +55,58,205,167,230,37,147,121,191,4,53,89,249,39,141,157, +194,18,169,180,24,226,16,202,128,152,137,168,155,235,142,57, +133,32,2,99,52,128,107,184,81,107,22,176,45,187,233,237, +13,5,75,186,50,95,150,219,149,234,130,251,189,40,240,83, +223,82,147,144,47,216,221,109,102,189,26,209,36,239,187,96, +124,7,143,254,246,146,194,12,73,137,6,122,173,35,96,69, +150,238,197,131,183,127,148,184,161,106,233,67,236,67,230,227, +242,233,122,125,34,221,150,215,84,226,140,10,177,5,57,155, +193,47,127,173,41,192,81,156,102,81,219,23,203,158,122,148, +178,1,126,227,203,120,27,70,87,248,43,79,165,202,224,153, +95,202,26,56,180,51,83,84,227,157,24,178,16,111,208,216, +45,108,153,78,219,41,43,225,68,140,77,192,159,124,246,158, +3,4,71,120,10,87,100,235,126,56,122,211,195,155,59,142, +148,84,96,172,6,50,45,183,40,229,3,244,71,151,251,151, +136,166,121,215,132,227,49,217,240,191,30,148,124,225,238,44, +19,107,151,160,39,59,253,165,165,17,81,50,135,23,118,78, +11,40,150,50,5,54,106,207,34,178,103,31,57,175,129,68, +75,61,66,89,16,183,81,117,246,141,51,35,84,4,237,216, +84,252,108,55,175,157,132,114,33,242,96,235,119,168,104,218, +119,201,120,30,22,93,253,111,5,137,154,186,156,190,208,118, +204,42,52,23,27,159,199,71,243,187,89,236,118,182,138,199, +109,83,237,115,228,160,198,43,49,69,49,158,129,37,91,249, +35,205,149,198,66,161,145,88,170,20,30,200,189,76,176,157, +187,130,92,205,108,86,191,89,229,230,164,131,115,63,16,125, +241,237,61,5,40,138,242,60,42,218,246,217,114,158,2,21, +85,123,31,1,47,242,124,43,78,180,216,227,140,9,129,3, +58,167,7,52,79,155,42,159,167,71,53,219,217,43,14,181, +76,161,141,152,147,8,174,241,70,140,73,128,151,120,166,150, +38,68,15,124,222,31,65,46,102,62,42,223,166,211,119,218, +72,57,5,33,26,224,53,158,136,181,73,240,151,159,214,86, +192,168,12,155,169,175,169,197,9,23,99,31,48,63,147,77, +255,111,1,201,146,190,204,182,245,54,132,46,224,95,62,90, +223,65,163,183,60,164,58,226,86,170,8,222,241,161,252,137, +102,123,123,65,225,150,172,228,19,247,86,129,184,138,218,189, +104,240,215,159,82,22,192,45,92,153,45,235,233,72,93,69, +239,126,48,250,195,203,59,43,196,20,196,104,4,151,120,167, +134,36,69,27,62,215,15,83,47,83,108,99,238,32,210,99, +153,81,43,22,52,109,187,108,189,15,129,15,250,191,11,196, +87,244,234,71,171,59,236,180,150,2,4,69,88,14,85,76, +111,108,24,94,209,169,63,169,236,152,87,72,42,52,22,11, +157,198,83,177,178,73,254,119,131,216,142,92,213,236,103,167, +185,212,56,36,50,106,199,162,162,111,191,41,229,1,212,67, +149,211,19,154,134,93,213,238,71,163,187,252,188,54,18,78, +197,200,6,253,221,37,230,41,82,113,177,245,57,116,48,239, +147,224,46,47,175,172,148,19,16,38,65,94,102,217,90,31, +64,63,116,61,63,137,237,202,117,201,124,94,30,89,173,103, +32,201,210,190,72,246,245,179,212,44,100,27,126,215,139,19, +47,214,60,97,106,100,146,238,205,3,167,119,52,168,235,234, +121,75,68,210,172,105,195,229,218,101,232,77,14,127,236,57, +70,16,136,161,8,201,129,142,235,165,137,209,11,30,247,77, +49,143,145,6,74,173,64,80,133,245,82,196,224,132,143,241, +7,156,207,193,131,191,255,132,176,1,122,163,195,124,75,78, +114,184,99,75,113,130,197,92,71,204,74,52,209,123,31,0, +63,240,125,63,12,189,200,241,141,60,211,74,11,33,6,32, +12,130,56,140,178,48,110,130,250,172,58,243,70,137,25,138, +146,60,236,186,118,30,10,157,196,115,181,176,97,122,101,163, +252,140,54,113,126,5,171,186,252,190,22,22,76,237,76,20, +221,249,39,140,141,192,19,189,246,17,242,2,203,181,202,192, +153,29,234,154,122,156,50,17,118,67,219,50,155,214,95,80, +186,5,47,251,236,57,71,0,138,160,28,139,136,158,249,164, +188,131,66,47,113,76,37,204,136,20,89,184,55,11,220,214, +213,240,166,142,167,101,21,157,251,131,200,143,109,199,173,82, +113,176,229,59,117,36,173,154,240,60,46,154,254,221,34,150, +39,85,29,127,203,73,10,55,100,45,30,184,189,171,192,93, +93,110,95,42,27,230,87,178,138,207,237,67,229,211,244,234, +70,187,57,237,160,212,11,20,87,89,59,7,5,94,234,25, +74,146,176,45,186,249,239,12,17,9,179,34,77,151,238,199, +163,179,125,188,60,179,74,205,65,134,231,116,129,254,234,82, +251,16,249,176,253,186,84,62,76,191,108,181,143,145,7,90, +175,65,68,199,252,66,214,225,177,221,184,54,26,206,213,192, +166,237,151,165,118,33,250,224,251,127,8,120,144,247,89,112, +182,135,23,119,94,9,41,130,112,12,38,120,206,23,224,46, +46,191,174,149,7,82,47,81,76,103,236,8,86,113,185,117, +41,124,144,255,217,96,190,39,7,61,222,153,33,42,225,70, +172,73,194,183,248,228,190,39,6,45,220,152,53,104,232,86, +190,72,247,229,177,213,56,38,18,110,197,138,38,125,159,13, +231,107,112,209,247,223,16,178,0,111,241,200,109,77,13,78, +250,56,123,194,209,152,46,216,223,77,98,191,50,85,54,207, +159,98,22,163,29,156,250,145,234,138,123,173,32,80,67,149, +210,3,152,135,73,151,231,87,177,186,201,238,127,35,200,196, +220,69,228,207,54,243,94,9,40,146,114,13,50,58,199,7, +242,47,27,237,231,164,129,83,59,18,85,117,255,29,33,42, +224,86,174,72,214,245,241,244,172,38,51,127,149,169,179,105, +252,21,167,90,228,240,198,142,97,5,149,90,131,128,14,233, +141,12,211,41,59,225,101,156,13,225,11,124,215,143,83,39, +210,108,105,79,36,218,234,25,75,130,178,44,174,187,230,28, +3,8,134,112,4,166,104,198,183,240,100,174,47,166,61,150, +24,165,96,64,199,244,194,198,233,17,205,242,182,138,198,125, +81,236,103,166,169,214,57,48,112,99,215,176,163,90,237,96, +212,135,213,87,214,202,1,137,147,42,142,183,100,36,143,186, +182,30,134,92,196,252,68,182,237,183,165,52,1,122,162,211, +126,74,90,48,177,115,89,112,183,151,21,118,74,75,32,146, +98,13,19,42,135,38,102,47,58,252,183,135,20,71,88,10, +21,68,107,60,16,123,145,225,59,125,164,189,146,80,44,100, +26,110,213,138,7,109,223,44,115,107,81,192,167,252,133,166, +99,119,177,249,249,108,60,31,139,143,238,247,163,208,77,124, +95,15,75,174,114,118,130,203,188,91,194,146,168,172,155,227, +14,41,141,128,18,41,180,16,99,16,192,33,156,129,33,27, +241,39,157,157,227,2,233,149,140,226,49,219,208,187,28,188, +248,243,206,8,17,1,51,50,69,55,254,141,35,35,117,20, +173,249,192,252,77,38,255,190,17,102,66,234,32,218,227,137, +89,139,6,126,237,43,100,21,158,203,133,203,179,171,220,157, +100,114,239,19,224,38,174,175,166,53,23,24,175,193,68,207, +125,66,220,64,181,213,49,182,0,103,113,216,101,237,29,4, +122,168,115,106,64,210,164,233,211,237,122,117,162,205,158,119, +68,168,12,154,185,173,168,209,75,30,115,13,49,10,193,4, +206,233,0,221,209,167,222,165,224,65,223,119,195,216,10,28, +213,105,55,165,61,144,120,169,102,56,75,195,162,170,239,175, +33,69,17,158,195,5,219,187,11,204,215,228,226,231,187,113, +108,36,158,170,149,15,210,63,89,236,119,166,136,198,121,17, +228,99,246,161,243,121,120,116,183,159,149,102,66,235,48,216, +226,157,27,130,22,108,236,30,54,92,175,77,132,223,240,178, +206,142,113,5,180,74,195,161,154,233,172,29,131,10,174,245, +6,132,77,208,159,93,230,222,34,144,71,89,27,7,71,126, +106,91,98,147,242,15,26,191,197,37,215,57,51,64,101,212, +140,101,65,221,86,215,216,35,140,133,64,3,181,86,1,184, +130,91,189,98,81,211,151,219,150,218,132,248,129,238,235,99, +233,81,204,102,244,139,87,111,90,120,49,231,17,208,34,141, +151,98,6,163,60,140,186,176,126,138,90,188,112,115,214,129, +177,27,216,182,221,182,214,6,192,13,92,219,13,107,171,96, +92,7,205,222,118,208,234,13,11,171,166,60,135,10,166,117, +22,140,237,192,213,221,118,214,138,1,13,211,42,11,231,102, +160,203,250,59,74,212,208,165,252,129,230,107,115,225,241,220, +44,116,27,95,199,203,50,187,214,29,112,58,71,7,250,174, +27,231,70,160,137,218,187,8,252,209,231,222,33,160,65,90, +39,193,92,78,92,88,61,101,41,92,144,189,249,224,252,15, +6,127,252,57,103,0,200,128,156,201,160,159,187,134,28,197, +104,6,183,124,165,174,160,87,59,26,213,101,247,189,49,96, +96,198,166,224,71,191,123,197,160,134,43,181,5,49,27,209, +39,223,189,99,64,193,148,206,192,145,157,250,146,218,140,120, +145,230,75,115,163,209,92,110,92,26,29,229,107,116,145,255, +219,64,186,37,47,185,204,185,5,40,139,226,62,43,206,180, +208,98,140,3,32,7,50,46,135,46,230,63,50,92,167,205, +148,215,80,162,132,14,225,13,28,219,137,43,171,229,12,5, +73,154,54,93,190,95,135,202,166,249,215,140,98,49,211,81, +187,22,29,252,251,71,136,11,168,151,42,134,55,116,44,47, +170,252,158,22,84,108,109,14,60,220,187,5,44,203,234,58, +123,198,145,144,42,136,215,104,34,247,54,129,126,234,90,122, +16,243,17,249,178,221,190,86,22,200,173,76,145,141,251,163, +200,205,77,71,239,122,112,242,199,155,51,14,132,92,192,188, +76,178,189,191,128,116,73,126,118,155,91,143,66,54,225,127, +60,56,251,195,201,27,47,198,60,64,122,36,179,122,205,34, +182,39,23,61,255,137,97,11,117,70,141,88,146,148,109,240, +221,63,70,28,72,185,4,57,153,225,43,125,133,173,210,113, +184,100,59,127,133,169,146,121,188,52,51,90,197,225,150,173, +244,17,246,66,195,177,154,200,188,93,162,158,174,212,23,212, +110,69,139,62,254,158,19,4,102,104,74,118,240,235,95,41, +42,240,86,143,88,150,212,101,244,141,55,99,92,0,189,208, +113,188,36,51,123,213,161,183,57,244,48,231,18,224,36,142, +171,164,29,147,10,143,229,70,165,217,208,190,76,182,253,183, +132,36,65,91,54,211,95,91,10,19,36,103,58,104,247,166, +129,87,123,26,81,37,247,56,97,98,228,130,230,109,19,237, +247,164,160,67,123,51,193,117,222,12,113,9,117,66,205,80, +150,196,101,213,157,119,66,200,0,156,193,33,159,177,39,24, +205,225,134,173,213,1,182,99,87,177,187,217,236,126,55,138, +205,204,87,229,250,100,186,111,143,41,134,49,20,32,41,210, +112,169,118,56,106,211,226,139,123,175,0,84,65,189,86,17, +184,163,75,253,67,197,211,182,202,198,249,17,236,226,246,171, +82,125,112,253,55,133,60,194,90,40,48,82,67,145,146,11, +156,215,65,178,167,31,181,110,129,203,186,59,206,148,208,32, +172,131,98,47,51,108,165,142,160,21,27,154,151,77,246,255, +19,192,38,236,143,38,119,63,25,237,227,228,137,87,107,26, +112,53,183,25,245,98,197,147,182,78,134,249,148,188,224,114, +239,18,240,36,175,187,228,60,7,10,174,244,22,134,76,196, +221,84,246,204,35,165,21,16,42,129,70,106,41,66,112,128, +231,120,65,230,230,162,227,127,57,104,241,198,141,81,3,150, +102,69,155,62,223,142,83,37,242,104,107,103,160,200,202,61, +73,232,22,190,204,183,229,52,133,58,162,86,46,72,222,116, +241,254,13,34,59,246,21,179,26,205,228,214,167,208,69,252, +79,7,235,190,56,246,18,195,20,202,136,24,153,160,59,251, +196,185,21,40,170,242,126,10,90,180,241,115,220,32,181,19, +81,54,199,31,114,30,3,13,214,122,1,226,34,234,231,170, +97,79,53,202,201,8,31,225,47,60,157,171,131,109,223,45, +99,105,80,212,229,245,149,180,98,66,227,176,200,234,61,11, +200,150,252,228,182,167,22,37,124,136,127,232,120,94,22,217, +189,111,128,217,152,62,216,254,93,34,158,166,85,23,222,207, +65,131,183,126,132,186,160,126,171,74,252,81,231,214,160,160, +75,251,35,201,213,206,70,241,153,125,234,92,26,28,245,105, +117,133,189,210,80,168,36,26,235,133,136,131,41,159,161,39, +57,221,161,167,57,213,32,167,51,116,36,175,186,244,62,6, +30,236,253,6,148,77,241,143,29,199,74,34,177,86,9,56, +146,83,29,114,27,83,7,211,62,75,206,114,176,226,75,123, +35,193,84,206,76,80,157,117,99,220,0,181,81,113,182,133, +55,115,92,33,173,144,80,40,36,18,106,133,130,34,45,151, +40,167,35,116,5,191,250,213,170,6,63,253,173,37,1,89, +146,151,93,246,222,3,128,7,120,143,7,102,111,58,120,247, +135,145,23,90,142,81,4,230,104,66,247,240,225,254,45,34, +121,214,149,241,50,204,166,244,7,150,111,213,137,55,107,220, +16,181,112,97,246,164,163,115,125,48,253,179,197,60,71,10, +42,180,22,3,28,198,89,16,182,65,119,247,153,113,42,68, +22,236,237,6,181,93,177,174,137,199,107,51,225,117,156,44, +241,75,93,67,143,114,54,130,79,252,91,71,194,170,40,223, +163,131,125,223,12,115,41,113,64,229,212,132,228,65,215,247, +211,208,170,12,159,233,167,173,149,1,50,35,87,52,235,219, +104,58,119,7,153,158,219,132,250,161,234,233,75,109,67,236, +66,246,225,243,253,56,116,50,207,151,226,6,171,189,140,176, +17,122,130,211,60,106,218,114,153,114,27,82,23,209,63,95, +140,123,160,240,74,78,113,136,101,72,77,68,222,108,113,207, +21,194,10,40,149,2,3,53,86,9,57,130,81,28,102,89, +90,23,193,63,126,156,59,129,100,74,111,96,216,70,221,89, +39,198,44,64,91,52,243,91,89,34,151,54,71,30,106,157, +2,19,53,119,25,121,163,197,28,71,72,10,52,84,43,29, +132,123,176,240,107,94,49,169,241,72,108,85,142,79,228,219, +118,218,74,25,1,35,50,100,39,190,172,183,35,84,5,253, +218,85,232,46,62,191,143,133,71,115,187,81,109,118,188,43, +195,101,218,109,105,77,4,222,232,49,207,144,146,8,172,209, +66,142,97,4,133,88,130,148,76,224,157,30,210,28,105,168, +84,26,12,245,72,101,197,156,70,80,137,53,74,200,16,156, +224,49,223,144,179,24,236,240,214,142,64,21,213,123,23,128, +47,248,221,47,70,61,88,249,37,173,153,192,58,45,166,56, +198,18,160,36,10,235,164,152,195,8,11,161,6,40,141,130, +50,45,182,56,231,2,224,5,158,235,133,137,147,43,158,181, +101,48,205,179,166,12,135,105,150,181,117,48,236,163,230,45, +19,105,183,164,37,19,121,183,133,53,83,88,35,133,20,66, +8,0,16,0,33,16,64,33,148,0,33,17,80,35,149,20, +99,24,64,49,148,33,49,81,113,183,149,53,114,72,99,164, +128,66,41,17,64,35,180,4,35,57,212,49,181,48,97,114, +228,163,246,45,50,121,247,133,177,19,88,166,213,22,198,76, +64,157,84,115,156,33,33,81,80,167,213,20,230,72,66,181, +208,97,188,5,35,59,244,53,183,24,229,96,196,135,244,71, +150,235,149,137,178,59,222,148,241,48,236,162,246,47,18,125, +245,173,53,1,120,130,215,124,98,222,34,145,87,91,26,19, +5,119,122,73,99,166,160,70,43,57,196,49,148,32,33,83, +112,163,215,60,98,90,98,145,210,11,24,151,65,55,247,29, +49,42,193,70,238,105,66,245,208,229,252,5,166,107,246,177, +243,88,104,52,150,11,149,71,83,187,19,77,246,254,3,194, +39,248,205,47,103,45,24,216,177,173,184,209,106,14,51,44, +165,10,224,21,158,202,149,201,178,191,158,148,116,96,238,38, +178,111,159,41,167,33,84,1,189,210,81,184,38,27,255,199, +129,147,59,158,148,117,112,236,39,166,45,150,57,181,32,97, +83,244,227,215,185,50,88,230,213,146,134,76,197,205,86,247, +216,97,172,5,2,43,180,20,35,24,196,113,148,164,97,83, +245,243,213,184,38,26,239,197,128,135,121,151,132,103,113,217, +117,239,28,16,56,161,99,120,65,231,246,160,226,107,123,97, +225,212,140,100,81,223,87,195,154,42,156,151,65,54,231,31, +48,62,131,79,254,123,67,192,130,172,205,131,167,127,181,168, +225,75,125,67,205,82,182,192,103,253,25,101,98,236,2,246, +101,179,253,189,36,48,75,211,162,139,255,239,0,209,17,191, +210,85,248,46,31,175,207,164,211,115,154,64,61,85,41,63, +160,125,154,92,253,108,53,143,153,134,90,165,224,64,207,117, +194,204,72,21,197,123,54,144,111,217,73,47,103,44,8,218, +176,185,250,216,122,28,50,25,247,67,209,147,159,222,214,208, +160,172,139,227,47,57,205,161,134,41,149,1,51,51,85,53, +255,153,97,42,101,6,172,204,146,181,124,160,254,170,82,127, +80,249,53,173,184,208,122,12,50,56,231,3,240,7,159,255, +199,128,131,57,159,128,55,121,252,53,167,24,196,112,132,166, +96,71,183,250,197,170,39,47,189,140,177,1,120,131,199,126, +99,202,96,152,71,73,27,38,87,62,75,207,98,178,227,95, +57,42,209,70,207,121,2,212,68,229,221,20,246,72,99,165, +144,64,40,5,2,42,164,22,34,12,134,120,132,182,96,102, +167,186,228,62,39,14,172,220,146,148,108,224,223,62,82,94, +65,169,22,56,172,179,98,76,3,172,198,50,161,118,40,106, +242,242,203,90,59,0,117,80,237,117,132,172,192,83,189,114, +81,242,135,155,183,78,132,217,144,190,200,246,253,50,212,38, +197,31,118,94,11,9,134,114,36,162,106,238,51,226,68,138, +45,204,153,4,122,169,99,104,65,198,230,224,195,255,123,64, +240,132,175,241,69,188,79,131,171,190,189,166,16,71,80,138, +5,76,203,44,90,251,1,233,147,236,238,55,163,92,140,124, +208,254,77,34,191,182,21,54,74,207,96,146,231,93,17,174, +195,102,235,123,104,112,214,135,209,23,222,206,81,129,182,106, +198,179,176,108,170,127,174,24,214,80,161,180,8,226,49,218, +192,185,29,168,186,250,222,26,16,52,97,123,116,177,255,153, +96,58,103,7,184,142,155,165,110,161,203,248,27,78,214,248, +33,238,161,194,105,25,69,99,190,32,119,51,217,245,239,20, +145,56,171,194,124,73,110,118,186,75,207,99,162,225,94,45, +104,216,86,221,120,55,134,13,212,91,21,226,11,122,183,131, +85,95,94,91,9,35,34,100,6,174,236,150,183,84,36,236, +138,118,125,58,93,167,207,180,211,82,138,0,28,193,41,30, +177,45,185,201,233,15,45,207,168,18,123,148,177,49,120,224, +247,190,0,118,97,251,116,185,126,153,106,155,99,15,49,14, +129,12,202,185,8,248,145,239,218,113,168,100,26,111,197,136, +6,121,157,37,99,121,80,245,245,181,180,32,98,99,242,224, +235,127,41,104,208,214,205,112,151,150,71,84,203,29,74,154, +48,61,178,89,255,70,145,153,187,138,220,221,100,246,175,19, +101,118,172,43,226,117,154,76,253,77,37,207,184,18,90,132, +241,16,236,224,214,175,80,85,244,239,23,161,62,168,254,186, +82,94,64,185,20,57,184,241,107,92,17,173,243,96,232,71, +174,107,230,177,210,72,40,21,2,11,180,86,3,152,134,89, +149,230,67,243,179,217,252,126,22,154,141,237,195,229,219,117, +234,76,26,61,229,41,84,17,189,243,65,248,7,143,255,230, +144,195,24,11,128,22,104,172,22,50,12,167,104,196,151,244, +102,134,171,180,29,178,26,207,196,210,165,248,193,238,111,35, +233,212,156,100,112,207,23,226,14,42,189,134,17,21,114,11, +83,38,195,126,106,90,114,145,243,27,88,182,213,55,214,12, +97,9,84,82,141,113,2,196,68,196,205,84,215,220,99,132, +129,16,11,144,22,73,188,86,19,152,167,73,213,199,215,243, +146,200,172,93,131,142,238,245,131,212,79,84,219,29,107,138, +112,28,38,89,222,87,193,186,46,158,191,197,36,199,59,50, +84,39,221,156,119,64,232,4,158,233,165,141,145,3,26,167, +69,20,207,217,2,158,229,101,149,157,243,2,200,133,204,195, +165,219,241,170,76,159,109,231,173,16,81,48,167,19,116,102, +143,58,182,22,7,92,206,93,64,190,100,55,191,157,165,98, +97,211,244,235,86,185,56,249,226,221,27,6,86,108,105,78, +52,216,235,13,9,139,162,62,175,142,180,85,50,142,135,100, +71,191,122,213,162,135,63,247,12,33,9,208,18,141,244,82, +198,192,128,141,217,131,142,239,229,129,213,91,22,210,13,121, +139,69,78,111,104,88,86,213,249,55,140,172,208,83,156,98, +17,211,19,155,150,95,212,250,5,170,171,238,189,3,64,7, +244,78,7,233,158,60,244,58,71,6,234,172,26,243,4,169, +153,200,186,61,174,152,214,88,32,180,2,67,53,210,73,57, +7,1,30,226,29,26,154,149,109,242,253,59,68,52,204,171, +36,29,155,139,143,239,231,161,209,89,62,86,31,89,175,71, +36,203,250,58,90,214,209,177,190,136,246,121,114,212,163,149, +29,242,26,75,132,210,32,168,195,106,43,99,100,128,206,232, +17,207,210,178,136,238,249,67,204,67,164,195,114,171,82,124, +96,255,54,145,126,203,74,58,49,103,17,216,163,141,157,195, +2,171,181,12,160,25,218,146,153,188,250,210,218,8,56,145, +99,27,113,39,149,28,227,8,72,145,132,107,177,193,121,31, +4,127,248,121,111,4,152,136,185,137,232,155,111,206,57,0, +112,0,231,112,192,230,236,3,231,119,176,232,235,111,41,73, +192,150,236,228,151,183,86,4,232,136,94,249,40,125,131,205, +222,119,192,232,12,31,233,175,44,149,11,147,39,95,189,107, +193,193,158,111,196,153,20,122,136,115,40,96,82,230,193,210, +175,88,213,228,231,183,177,116,40,110,178,250,207,10,51,37, +53,24,233,161,204,137,5,75,187,34,93,151,207,215,227,146, +233,188,29,162,26,238,212,146,132,108,193,207,126,115,202,65, +136,7,104,143,38,118,47,27,236,247,166,128,71,121,27,69, +103,254,40,115,99,209,208,175,92,149,236,227,231,185,81,104, +38,182,46,135,47,246,61,51,72,229,196,132,197,81,151,214, +71,208,139,29,207,202,50,185,246,25,114,18,195,21,218,138, +25,141,226,50,235,214,184,32,122,227,195,248,11,78,247,232, +97,207,53,194,72,8,21,64,43,52,20,43,153,196,123,53, +160,105,218,117,233,124,28,62,217,239,79,33,139,240,30,14, +220,220,117,228,172,6,51,61,181,41,241,65,253,87,133,250, +162,218,239,72,81,133,247,114,192,226,172,11,227,39,184,205, +171,39,45,157,136,179,41,252,145,231,90,97,160,196,10,37, +69,24,14,209,12,111,233,72,92,85,237,127,36,184,202,219, +41,42,241,70,141,89,130,150,108,228,159,54,86,14,73,140, +86,112,168,103,42,105,198,180,192,98,173,19,96,38,166,46, +166,63,182,28,167,72,196,213,212,230,196,131,181,95,144,186, +137,238,251,99,200,65,140,71,96,139,118,126,10,91,164,243, +114,200,98,188,3,67,55,242,77,59,47,133,12,194,57,24, +240,49,255,144,241,56,108,178,254,143,2,55,117,61,61,169, +233,200,93,77,110,126,58,91,199,195,178,171,222,189,96,112, +199,151,242,6,138,173,204,145,133,122,163,194,108,73,79,102, +250,106,91,99,131,240,14,14,253,204,53,197,56,6,18,44, +229,10,100,85,158,79,197,203,54,251,222,25,32,50,98,71, +178,170,207,175,99,101,145,220,235,4,153,153,171,138,253,205, +36,215,59,19,68,103,252,8,119,97,249,84,189,124,177,238, +137,67,43,51,100,37,158,168,181,11,208,23,221,254,87,130, +138,172,221,131,134,111,245,137,117,75,92,82,157,113,35,212, +4,229,89,84,246,205,51,167,20,4,104,136,86,120,40,119, +34,201,214,254,64,242,165,187,241,108,44,31,170,159,174,214, +55,208,108,109,15,44,222,186,17,110,194,250,40,122,243,195, +217,27,14,214,124,97,238,36,146,107,157,1,35,51,116,37, +191,184,245,42,68,23,252,239,7,161,31,184,190,155,198,94, +97,168,68,26,45,229,8,68,81,156,103,65,217,22,223,220, +115,132,160,0,75,177,130,73,157,71,67,187,50,93,182,223, +151,194,6,233,157,12,242,57,123,192,241,156,44,240,91,95, +66,155,48,63,146,93,253,110,21,139,155,174,222,183,192,100, +205,31,102,94,42,25,198,83,176,162,75,255,99,193,209,158, +78,212,217,53,238,136,82,57,48,113,115,213,177,183,24,228, +112,198,134,224,5,159,251,135,136,135,105,151,165,119,49,248, +225,239,61,1,104,130,246,108,34,255,182,145,118,74,74,48, +144,99,25,81,35,151,52,103,26,104,181,134,1,21,83,27, +19,7,87,126,75,75,34,178,102,15,59,174,149,6,66,45, +80,88,37,229,24,68,112,140,39,96,77,22,254,205,35,167, +53,20,40,169,194,120,9,102,114,234,67,234,35,234,229,138, +101,77,29,78,219,40,59,227,69,152,15,201,143,110,247,171, +81,77,118,254,11,67,39,242,108,43,111,164,152,194,24,9, +160,18,106,132,146,32,44,131,106,174,51,102,4,138,168,156, +155,128,62,233,238,60,19,74,135,224,6,175,253,132,180,65, +114,167,147,116,110,14,58,188,183,3,84,71,221,90,23,192, +47,124,157,47,195,109,90,125,97,237,20,148,104,161,199,56, +3,66,38,224,78,46,121,206,21,192,42,44,151,42,135,39, +118,45,59,232,245,142,4,85,89,63,71,13,90,186,17,111, +210,248,41,110,177,202,201,9,15,227,46,40,223,162,147,127, +222,24,49,32,97,82,228,225,214,173,112,81,246,199,147,179, +30,140,252,208,246,204,34,181,23,17,62,195,79,122,59,67, +69,210,174,73,199,231,242,225,250,109,42,125,134,157,212,114, +132,162,32,79,179,170,205,143,103,103,185,88,249,36,189,155, +193,46,111,175,40,212,19,149,118,67,218,34,153,215,75,18, +179,21,61,250,217,107,14,49,12,161,8,200,145,140,234,177, +203,216,27,12,246,120,99,198,160,128,75,185,3,73,151,230, +71,179,187,221,172,118,51,218,197,233,23,173,254,176,242,74, +74,49,128,97,24,69,97,158,36,117,27,93,231,207,48,147, +82,15,80,30,69,109,94,60,121,235,69,136,15,232,159,46, +214,63,81,108,103,174,40,214,51,145,116,107,94,48,185,243, +73,120,23,135,95,246,218,67,136,3,40,135,34,38,39,62, +172,191,162,84,15,92,222,93,97,174,36,22,43,157,132,115, +49,240,97,255,53,161,120,200,118,252,42,87,39,219,252,123, +70,144,136,169,137,201,139,47,239,173,0,81,17,183,83,85, +242,143,27,167,70,36,201,218,62,88,254,85,163,158,172,244, +19,214,70,193,153,30,218,156,121,160,244,10,70,117,216,109, +109,13,12,218,184,57,234,208,218,12,120,153,103,75,121,2, +213,84,231,220,0,180,65,115,183,145,117,122,76,51,172,165, +2,97,21,148,107,145,193,59,63,132,61,208,120,45,38,56, +206,147,160,46,171,239,172,17,67,18,162,5,30,235,141,8, +147,33,63,177,109,185,77,169,15,168,159,170,150,63,212,60, +101,42,108,150,190,197,38,231,63,48,124,163,207,188,83,66, +130,160,12,139,169,142,185,133,40,131,99,62,33,111,176,216, +235,12,25,137,163,42,237,135,164,71,51,187,213,45,118,57, +123,193,225,158,45,228,25,86,82,137,49,10,192,20,204,232, +20,159,216,183,204,164,213,19,150,70,69,217,30,95,204,123, +36,176,74,203,33,138,225,12,13,201,138,62,253,174,21,7, +90,174,81,70,198,232,0,223,241,163,220,141,100,83,255,83, +193,178,174,142,183,101,52,141,187,162,92,143,76,214,253,113, +228,164,134,35,53,21,57,187,193,109,95,45,107,232,80,222, +68,241,157,61,226,88,74,20,208,41,61,129,105,154,117,109, +60,28,187,137,237,203,101,203,125,74,92,80,189,117,33,252, +128,247,121,112,244,167,151,53,118,8,107,160,208,74,12,81, +8,39,96,76,6,252,204,55,229,60,4,58,168,247,42,64, +87,244,235,87,169,58,248,246,159,18,22,68,109,92,28,125, +233,109,12,29,200,187,44,188,155,195,14,107,173,0,80,1, +181,82,65,176,134,11,181,71,17,155,147,15,222,255,65,224, +135,190,231,6,161,29,152,186,153,238,218,115,136,96,24,71, +65,154,38,93,159,79,199,235,50,249,246,157,50,18,70,69, +216,14,93,205,111,102,185,90,217,32,191,179,69,60,79,139, +42,190,183,7,20,79,217,10,31,229,111,52,153,251,139,72, +159,101,103,189,24,241,32,237,147,228,110,39,171,252,156,54, +80,110,69,138,46,252,159,7,70,111,120,88,119,197,185,22, +24,172,241,66,204,65,132,199,112,131,214,110,64,219,52,251, +218,89,40,54,50,79,151,234,135,171,183,45,180,25,243,2, +201,149,206,194,177,153,248,186,94,158,88,181,228,33,215,49, +179,80,109,116,156,47,193,77,94,127,73,105,6,180,76,163, +173,156,145,32,42,227,102,168,75,234,51,234,196,154,37,108, +137,78,250,57,107,192,208,140,108,209,207,95,99,138,96,28, +7,73,158,118,85,186,15,143,239,230,177,211,88,42,20,22, +73,189,70,17,153,179,11,220,215,197,242,167,154,229,108,5, +143,250,182,154,198,92,65,172,70,50,169,247,40,96,83,246, +195,211,187,26,220,244,245,182,132,38,97,95,52,251,219,73, +42,55,38,13,158,250,149,170,130,127,253,40,117,3,221,214, +215,208,162,140,143,225,7,189,223,129,162,43,255,165,161,81, +89,54,215,31,83,14,67,44,66,122,32,243,114,201,114,190, +2,87,117,251,93,41,46,176,94,139,8,158,241,37,188,137, +227,43,121,197,165,214,33,176,65,123,55,129,125,218,92,121, +44,53,10,201,132,222,225,160,205,155,39,78,173,72,208,149, +253,242,212,170,4,31,249,175,13,133,75,178,179,95,156,122, +145,226,11,123,167,129,84,75,28,82,25,49,35,81,84,231, +221,16,182,64,103,245,152,101,104,77,6,254,236,51,231,20, +128,40,136,211,40,42,243,102,137,91,170,18,126,196,187,52, +60,170,219,238,90,115,128,225,24,77,224,158,46,212,31,85, +110,79,42,58,246,23,147,30,207,204,82,181,240,97,254,37, +163,121,220,52,245,58,69,38,238,174,50,119,22,137,189,202, +208,153,60,250,218,91,8,50,48,103,19,248,167,143,181,71, +16,139,145,14,202,189,72,240,149,191,210,84,232,44,30,187, +141,173,195,97,155,117,111,28,24,185,161,105,217,69,239,127, +32,248,194,223,121,34,212,6,197,93,86,222,73,33,135,48, +6,2,44,196,26,36,116,10,79,228,218,102,216,75,13,67, +42,34,118,38,139,254,254,18,210,4,233,153,76,250,61,43, +200,212,220,100,244,143,23,103,94,40,57,194,81,152,38,89, +223,71,195,187,58,220,182,213,54,198,14,96,29,22,91,157, +99,3,241,22,141,252,210,214,200,32,157,147,3,30,231,77, +16,159,209,39,222,173,97,65,213,214,199,208,131,156,207,192, +147,189,254,144,242,8,106,177,194,73,25,7,67,62,98,95, +50,155,215,79,82,187,17,109,242,252,43,70,53,216,233,45, +13,137,138,186,189,174,144,87,88,42,21,6,75,188,82,83, +144,163,25,221,226,151,187,150,28,228,120,70,150,232,165,143, +177,7,24,143,193,6,239,253,0,244,65,247,247,145,240,42, +78,183,232,229,143,53,71,24,10,145,4,107,185,64,121,21, +165,123,240,240,239,30,49,44,161,74,232,17,206,194,176,137, +250,187,74,220,81,165,246,32,226,99,250,97,235,117,136,108, +216,95,77,106,62,50,95,151,203,151,235,150,185,180,56,226, +82,234,0,218,161,169,217,201,46,127,175,9,196,83,180,226, +67,251,51,201,244,222,6,208,13,125,203,77,74,63,96,125, +22,157,253,227,196,137,21,75,154,50,29,182,91,215,194,131, +185,159,136,182,121,246,148,163,16,77,240,158,15,196,95,116, +250,79,11,43,166,52,6,10,172,212,18,132,100,64,207,116, +210,206,73,1,135,114,38,130,110,236,27,102,86,170,9,206, +243,160,232,203,111,107,105,64,212,196,229,213,149,246,66,194, +161,152,201,168,31,171,142,188,213,34,134,39,116,13,63,234, +221,10,22,117,125,61,45,169,200,216,29,108,250,126,27,74, +151,224,39,191,189,165,32,65,83,182,195,87,251,26,89,164, +247,50,192,102,236,11,102,119,186,73,239,103,160,201,218,63, +72,252,84,183,220,165,228,1,215,115,147,208,47,92,157,109, +227,237,24,85,96,175,54,52,46,139,238,254,51,194,68,200, +13,76,219,44,123,235,65,200,7,236,207,38,243,127,25,104, +179,230,13,19,43,151,36,103,59,120,245,167,149,21,114,10, +67,36,194,106,40,83,98,131,242,46,10,255,228,177,215,24, +34,16,70,65,152,6,89,157,103,67,249,18,221,244,247,150, +128,36,73,219,38,219,255,75,64,147,180,111,146,249,189,44, +176,91,219,2,155,181,111,144,217,185,46,152,223,201,34,191, +183,5,52,75,219,34,155,247,79,16,155,145,47,218,253,105, +100,149,158,195,4,203,185,10,216,149,237,242,245,186,68,62, +109,175,44,148,27,145,38,75,255,98,209,211,159,90,150,208, +37,252,137,103,107,121,64,245,212,165,244,1,246,99,211,241, +187,92,188,124,179,206,141,65,3,183,118,5,186,170,223,175, +66,117,209,253,127,4,184,136,251,169,104,217,71,207,123,34, +208,70,205,89,6,214,108,97,207,52,210,74,9,1,2,34, +36,6,42,172,150,50,4,38,104,206,54,240,110,15,43,174, +180,22,2,12,196,88,4,244,72,103,229,152,68,120,13,39, +106,236,18,246,68,163,189,156,176,48,106,194,242,168,106,251, +99,201,81,142,70,116,201,127,110,24,90,145,161,59,249,228, +189,23,0,46,224,94,46,88,222,85,225,190,44,182,59,215, +4,227,57,88,240,181,191,144,116,104,110,54,186,207,143,99, +39,177,92,169,44,152,219,137,42,187,231,13,17,11,147,38, +79,191,106,213,131,151,127,214,152,33,40,193,66,174,97,70, +165,216,192,188,77,162,191,190,148,54,64,110,100,154,110,221, +11,7,103,126,40,123,226,209,218,14,88,157,101,99,253,16, +245,112,229,182,164,38,35,127,180,185,243,72,104,21,134,75, +180,211,83,154,2,29,213,107,23,161,63,184,252,187,70,28, +73,169,6,56,141,163,34,109,151,172,231,35,241,85,189,126, +145,234,139,107,175,33,68,1,156,194,17,153,178,27,222,214, +209,176,174,138,247,109,48,221,179,135,28,199,72,2,181,84, +33,188,128,115,57,112,113,247,149,177,50,72,230,244,130,198, +109,81,205,119,230,136,66,57,17,97,51,244,37,183,57,245, +32,229,19,244,102,135,187,182,28,166,88,198,212,192,164,205, +147,167,94,165,232,192,223,125,98,220,2,149,85,115,158,1, +37,83,120,35,199,52,194,74,40,17,66,3,176,6,11,189, +198,17,145,50,11,214,118,193,250,46,26,255,197,161,151,57, +182,16,103,80,200,37,204,137,4,91,185,35,73,213,198,199, +241,147,220,238,84,147,156,239,192,209,157,126,210,218,9,40, +147,98,15,51,46,133,14,226,61,26,216,181,237,176,213,58, +6,22,108,237,14,52,93,187,15,141,207,226,179,251,220,56, +52,50,75,215,226,131,251,191,8,244,81,247,214,129,176,11, +218,183,201,244,223,22,210,12,105,137,68,90,45,97,72,68, +212,204,101,197,157,86,82,136,33,8,193,0,142,225,4,141, +217,130,158,237,228,149,151,82,6,192,12,76,217,12,127,233, +105,76,21,204,235,36,153,219,139,10,191,229,37,149,25,179, +2,77,213,206,71,225,155,124,254,30,19,12,231,104,64,215, +244,227,214,169,48,89,242,151,155,150,94,196,248,4,190,233, +231,173,17,65,50,166,7,54,111,159,40,183,35,85,21,255, +219,65,170,39,46,173,142,176,21,58,138,215,108,98,255,50, +209,118,207,26,50,20,39,89,220,119,197,184,6,26,173,229, +0,197,81,150,198,69,209,159,95,198,218,32,184,195,75,59, +35,69,20,206,201,0,159,241,39,156,141,225,3,253,215,133, +242,35,218,229,233,85,141,126,242,218,75,8,19,32,39,50, +108,167,174,164,23,51,30,133,109,210,253,121,100,180,142,131, +37,95,185,43,201,197,206,103,225,217,92,126,92,59,13,165, +74,224,145,222,202,16,153,176,59,218,212,249,52,188,170,211, +111,90,121,33,229,16,196,96,132,135,112,7,150,110,197,139, +54,127,158,25,165,98,96,195,246,234,66,251,49,233,240,220, +46,84,31,93,239,79,32,155,242,31,26,158,213,101,246,173, +51,97,116,132,175,240,85,190,78,151,233,183,173,180,17,114, +2,195,52,202,202,56,25,226,19,250,134,155,181,110,128,219, +184,58,218,214,217,48,190,130,87,125,122,93,35,143,180,86, +2,136,132,88,129,164,74,227,161,216,201,44,95,171,11,236, +215,166,194,103,249,89,109,102,188,10,211,37,251,249,105,108, +21,142,203,164,219,243,138,72,157,69,99,191,48,117,50,205, +183,230,4,131,57,158,144,53,120,232,119,174,8,214,113,177, +244,41,118,49,251,209,233,62,61,174,153,198,90,33,160,64, +74,37,192,72,12,85,72,47,100,28,14,217,140,127,225,232, +76,31,109,239,44,16,91,145,163,27,253,230,149,147,18,14, +196,92,68,252,76,55,237,189,4,48,9,243,34,201,215,238, +66,243,177,249,248,124,62,30,159,205,231,231,177,209,120,46, +22,62,205,175,102,53,155,217,175,78,181,201,241,143,28,215, +72,35,165,20,0,40,128,82,40,32,82,98,129,210,42,8, +215,96,163,247,60,32,122,226,211,250,10,90,181,225,113,221, +52,247,26,65,36,198,42,32,87,50,139,215,110,66,251,48, +249,242,221,58,22,22,77,253,78,21,201,187,46,156,159,193, +38,239,191,32,116,3,223,246,211,210,138,8,157,193,35,191, +181,37,48,73,243,166,137,215,107,18,241,53,189,184,241,106, +76,19,172,231,34,225,87,188,106,211,227,155,121,174,20,22, +72,173,68,16,141,241,2,204,197,196,199,245,211,212,234,4, +155,185,175,136,213,73,54,247,31,17,46,195,110,106,123,98, +209,210,143,88,151,196,103,245,153,117,106,76,18,188,229,35, +245,21,181,122,193,226,174,43,231,37,144,73,185,7,9,159, +226,23,187,158,157,228,114,231,146,224,44,15,171,174,188,151, +2,6,101,92,12,125,200,125,76,60,92,187,13,173,203,224, +155,127,206,24,16,48,33,115,112,225,247,188,32,114,99,211, +240,171,94,189,104,241,199,157,83,2,130,36,76,139,44,222, +187,1,108,195,238,106,115,227,209,216,46,92,159,77,231,239, +48,209,114,143,18,54,68,47,124,156,63,193,108,78,63,104, +253,6,149,93,243,142,9,133,67,50,163,87,60,106,219,98, +155,115,15,16,30,193,45,94,185,41,233,193,204,79,101,203, +124,90,94,81,169,55,40,236,146,246,76,34,189,150,17,52, +98,75,114,178,195,95,123,10,81,4,231,120,64,246,228,163, +247,61,48,120,227,199,184,3,74,167,224,68,143,125,198,156, +64,48,133,51,50,68,39,252,140,55,97,124,4,191,248,245, +174,4,23,121,191,5,37,91,248,51,207,148,210,0,168,129, +74,171,33,76,129,140,202,177,137,248,155,78,222,121,33,228, +0,198,97,144,197,121,23,132,111,240,217,127,78,24,24,177, +33,121,209,229,255,53,160,104,202,119,232,104,94,55,201,253, +78,20,217,185,47,136,221,200,54,253,190,21,38,74,238,112, +210,198,201,17,143,210,54,200,238,124,19,206,199,224,131,255, +255,}; diff --git a/MCUME_esp32/esp5200/main/pokey.c b/MCUME_esp32/esp5200/main/pokey.c new file mode 100644 index 0000000..59ab863 --- /dev/null +++ b/MCUME_esp32/esp5200/main/pokey.c @@ -0,0 +1,710 @@ +/* + * pokey.c - POKEY sound chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include "cpu.h" +#include "pokey.h" +#include "gtia.h" +#ifdef SOUND +#include "pokeysnd.h" +#endif +#include "antic.h" + +#ifdef VOICEBOX +#include "voicebox.h" +#include "votraxsnd.h" +#endif + +#ifdef POKEY_UPDATE +void pokey_update(void); +#endif + +UBYTE POKEY_KBCODE; +UBYTE POKEY_SERIN; +UBYTE POKEY_IRQST; +UBYTE POKEY_IRQEN; +UBYTE POKEY_SKSTAT; +UBYTE POKEY_SKCTL; +int POKEY_DELAYED_SERIN_IRQ; +int POKEY_DELAYED_SEROUT_IRQ; +int POKEY_DELAYED_XMTDONE_IRQ; + +/* structures to hold the 9 pokey control bytes */ +UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ +int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +UBYTE POKEY_POT_input[8] = {228, 228, 228, 228, 228, 228, 228, 228}; +static int pot_scanline; + +#include "noise.h" +//UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +//UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +static ULONG random_scanline_counter; + +ULONG POKEY_GetRandomCounter(void) +{ + return random_scanline_counter; +} + +void POKEY_SetRandomCounter(ULONG value) +{ + random_scanline_counter = value; +} + +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects) +{ + UBYTE byte = 0xff; + +#ifdef STEREO_SOUND + if (addr & 0x0010 && POKEYSND_stereo_enabled) + return 0; +#endif + addr &= 0x0f; + if (addr < 8) { + return (INPUT_handle_trigger(addr)); + //byte = POKEY_POT_input[addr]; + //if (byte <= pot_scanline) + // return byte; + //return pot_scanline; + } + switch (addr) { + case POKEY_OFFSET_ALLPOT: + { + int i; + for (i = 0; i < 8; i++) + if (POKEY_POT_input[i] <= pot_scanline) + byte &= ~(1 << i); /* reset bit if pot value known */ + } + break; + case POKEY_OFFSET_KBCODE: + byte = POKEY_KBCODE; + break; + case POKEY_OFFSET_RANDOM: + if ((POKEY_SKCTL & 0x03) != 0) { + int i = random_scanline_counter + ANTIC_XPOS; + if (POKEY_AUDCTL[0] & POKEY_POLY9) + byte = POKEY_poly9_lookup[i % POKEY_POLY9_SIZE]; + else { + const UBYTE *ptr; + i %= POKEY_POLY17_SIZE; + ptr = POKEY_poly17_lookup + (i >> 3); + i &= 7; + byte = (UBYTE) ((ptr[0] >> i) + (ptr[1] << (8 - i))); + } + } + break; + case POKEY_OFFSET_SERIN: + byte = POKEY_SERIN; +#ifdef DEBUG3 + printf("SERIO: SERIN read, bytevalue %02x\n", POKEY_SERIN); +#endif +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(0,byte); +#endif + break; + case POKEY_OFFSET_IRQST: + byte = POKEY_IRQST; + break; + case POKEY_OFFSET_SKSTAT: +#if SKIP + byte = POKEY_SKSTAT + (CASSETTE_IOLineStatus() << 4); +#else + byte = INPUT_handle_skstat(addr); +// byte = POKEY_SKSTAT; +#endif +#ifdef VOICEBOX + if (VOICEBOX_enabled) { + byte = POKEY_SKSTAT + (VOTRAXSND_busy << 4); + } +#endif + break; + } + + return byte; +} + +static void Update_Counter(int chan_mask); + +static int POKEY_siocheck(void) +{ + return (((POKEY_AUDF[POKEY_CHAN3] == 0x28 || POKEY_AUDF[POKEY_CHAN3] == 0x10 + || POKEY_AUDF[POKEY_CHAN3] == 0x08 || POKEY_AUDF[POKEY_CHAN3] == 0x0a) + && POKEY_AUDF[POKEY_CHAN4] == 0x00) /* intelligent peripherals speeds */ + || (POKEY_SKCTL & 0x78) == 0x28) /* cassette save mode */ + && (POKEY_AUDCTL[0] & 0x28) == 0x28; +} + +#ifndef SOUND_GAIN /* sound gain can be pre-defined in the configure/Makefile */ +#define SOUND_GAIN 4 +#endif + +#ifndef SOUND +#define POKEYSND_Update(addr, val, chip, gain) +#else +//#define POKEYSND_Update(addr, val, chip, gain) if (chip == 0) emu_sndPlaySound((chip*4)+addr, gain*16, val*16) +#endif + +void POKEY_PutByte(UWORD addr, UBYTE byte) +{ +#ifdef STEREO_SOUND + addr &= POKEYSND_stereo_enabled ? 0x1f : 0x0f; +#else + addr &= 0x0f; +#endif + switch (addr) { + case POKEY_OFFSET_AUDC1: + POKEY_AUDC[POKEY_CHAN1] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2: + POKEY_AUDC[POKEY_CHAN2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3: + POKEY_AUDC[POKEY_CHAN3] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4: + POKEY_AUDC[POKEY_CHAN4] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL: + POKEY_AUDCTL[0] = byte; + + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[0] = POKEY_DIV_15; + else + POKEY_Base_mult[0] = POKEY_DIV_64; + + Update_Counter((1 << POKEY_CHAN1) | (1 << POKEY_CHAN2) | (1 << POKEY_CHAN3) | (1 << POKEY_CHAN4)); + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1: + POKEY_AUDF[POKEY_CHAN1] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH1_CH2) ? ((1 << POKEY_CHAN2) | (1 << POKEY_CHAN1)) : (1 << POKEY_CHAN1)); + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2: + POKEY_AUDF[POKEY_CHAN2] = byte; + Update_Counter(1 << POKEY_CHAN2); + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3: + POKEY_AUDF[POKEY_CHAN3] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH3_CH4) ? ((1 << POKEY_CHAN4) | (1 << POKEY_CHAN3)) : (1 << POKEY_CHAN3)); + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4: + POKEY_AUDF[POKEY_CHAN4] = byte; + Update_Counter(1 << POKEY_CHAN4); + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_IRQEN: + POKEY_IRQEN = byte; +#ifdef DEBUG1 + printf("WR: IRQEN = %x, PC = %x\n", POKEY_IRQEN, PC); +#endif + POKEY_IRQST |= ~byte & 0xf7; /* Reset disabled IRQs except XMTDONE */ +#if SKIP + if ((~POKEY_IRQST & POKEY_IRQEN) == 0 && PBI_IRQ == 0 && PIA_IRQ == 0) +#else + if ((~POKEY_IRQST & POKEY_IRQEN) == 0) +#endif + { + CPU_IRQ = 0; + } + else { + CPU_GenerateIRQ(); + } + break; + case POKEY_OFFSET_SKRES: + POKEY_SKSTAT |= 0xe0; + break; + case POKEY_OFFSET_POTGO: + if (!(POKEY_SKCTL & 4)) + pot_scanline = 0; /* slow pot mode */ + break; + case POKEY_OFFSET_SEROUT: +#ifdef VOICEBOX + VOICEBOX_SEROUTPutByte(byte); +#endif +#if SKIP + if ((POKEY_SKCTL & 0x70) == 0x20 && POKEY_siocheck()) + SIO_PutByte(byte); +#endif + /* check if cassette 2-tone mode has been enabled */ + if ((POKEY_SKCTL & 0x08) == 0x00) { + /* intelligent device */ +#if SKIP + POKEY_DELAYED_SEROUT_IRQ = SIO_SEROUT_INTERVAL; +#endif + POKEY_IRQST |= 0x08; +#if SKIP + POKEY_DELAYED_XMTDONE_IRQ = SIO_XMTDONE_INTERVAL; +#endif + } + else { + /* cassette */ + /* some savers patch the cassette baud rate, so we evaluate it here */ + /* scanlines per second*10 bit*audiofrequency/(1.79 MHz/2) */ + POKEY_DELAYED_SEROUT_IRQ = 312*50*10*(POKEY_AUDF[POKEY_CHAN3] + POKEY_AUDF[POKEY_CHAN4]*0x100)/895000; + /* safety check */ + if (POKEY_DELAYED_SEROUT_IRQ >= 3) { + POKEY_IRQST |= 0x08; + POKEY_DELAYED_XMTDONE_IRQ = 2*POKEY_DELAYED_SEROUT_IRQ - 2; + } + else { + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + } + }; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(1, byte); +#endif + break; + case POKEY_OFFSET_STIMER: + POKEY_DivNIRQ[POKEY_CHAN1] = POKEY_DivNMax[POKEY_CHAN1]; + POKEY_DivNIRQ[POKEY_CHAN2] = POKEY_DivNMax[POKEY_CHAN2]; + POKEY_DivNIRQ[POKEY_CHAN4] = POKEY_DivNMax[POKEY_CHAN4]; + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 0, SOUND_GAIN); +#ifdef DEBUG1 + printf("WR: STIMER = %x\n", byte); +#endif + break; + case POKEY_OFFSET_SKCTL: +#ifdef VOICEBOX + VOICEBOX_SKCTLPutByte(byte); +#endif + POKEY_SKCTL = byte; + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 0, SOUND_GAIN); + if (byte & 4) + pot_scanline = 228; /* fast pot mode - return results immediately */ + if ((byte & 0x03) == 0) { + /* POKEY reset. */ + /* Stop serial IO. */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; +#if SKIP + CASSETTE_ResetPOKEY(); +#endif + /* TODO other registers should also be reset. */ + } + break; +#ifdef STEREO_SOUND + case POKEY_OFFSET_AUDC1 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL + POKEY_OFFSET_POKEY2: + POKEY_AUDCTL[1] = byte; + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[1] = POKEY_DIV_15; + else + POKEY_Base_mult[1] = POKEY_DIV_64; + + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_STIMER + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_SKCTL + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 1, SOUND_GAIN); + break; +#endif + } +} + +int POKEY_Initialise(void) +{ + int i; + ULONG reg; + + /* Initialise Serial Port Interrupts */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + + POKEY_KBCODE = 0xff; + POKEY_SERIN = 0x00; /* or 0xff ? */ + POKEY_IRQST = 0xff; + POKEY_IRQEN = 0x00; + POKEY_SKSTAT = 0xef; + POKEY_SKCTL = 0x00; + + for (i = 0; i < (POKEY_MAXPOKEYS * 4); i++) { + POKEY_AUDC[i] = 0; + POKEY_AUDF[i] = 0; + } + + for (i = 0; i < POKEY_MAXPOKEYS; i++) { + POKEY_AUDCTL[i] = 0; + POKEY_Base_mult[i] = POKEY_DIV_64; + } + + for (i = 0; i < 4; i++) + POKEY_DivNIRQ[i] = POKEY_DivNMax[i] = 0; + + pot_scanline = 0; + +#if SKIP + /* initialise poly9_lookup */ + reg = 0x1ff; + for (i = 0; i < POKEY_POLY9_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 1) << 8) + (reg >> 1); + POKEY_poly9_lookup[i] = (UBYTE) reg; + } + /* initialise poly17_lookup */ + reg = 0x1ffff; + for (i = 0; i < POKEY_POLY17_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 0xff) << 9) + (reg >> 8); + POKEY_poly17_lookup[i] = (UBYTE) (reg >> 1); + } +#endif + +#ifndef BASIC +#if SKIP + if (INPUT_Playingback()) { + random_scanline_counter = INPUT_PlaybackInt(); + } + else +#endif +#endif + { + random_scanline_counter = +#ifdef HAVE_WINDOWS_H + GetTickCount() % POKEY_POLY17_SIZE; +#elif defined(HAVE_TIME) + time(NULL) % POKEY_POLY17_SIZE; +#else + 0; +#endif + } +#ifndef BASIC +#if SKIP + if (INPUT_Recording()) { + INPUT_RecordInt(random_scanline_counter); + } +#endif +#endif + + return TRUE; +} + +void POKEY_Frame(void) +{ + random_scanline_counter %= (POKEY_AUDCTL[0] & POKEY_POLY9) ? POKEY_POLY9_SIZE : POKEY_POLY17_SIZE; +} + +/*************************************************************************** + ** Generate POKEY Timer IRQs if required ** + ** called on a per-scanline basis, not very precise, but good enough ** + ** for most applications ** + ***************************************************************************/ + +void POKEY_Scanline(void) +{ +#ifdef POKEY_UPDATE + pokey_update(); +#endif + +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly(); +#endif + +#ifndef BASIC + INPUT_Scanline(); /* Handle Amiga and ST mice. */ + /* It's not a part of POKEY emulation, */ + /* but it looks to be the best place to put it. */ +#endif + + /* on nonpatched i/o-operation, enable the cassette timing */ +#if SKIP + if (!ESC_enable_sio_patch) { + if (CASSETTE_AddScanLine()) + POKEY_DELAYED_SERIN_IRQ = 1; + } +#endif + if ((POKEY_SKCTL & 0x03) == 0) + /* Don't process timers when POKEY is in reset mode. */ + return; + + if (pot_scanline < 228) + pot_scanline++; + + random_scanline_counter += ANTIC_LINE_C; + + if (POKEY_DELAYED_SERIN_IRQ > 0) { + if (--POKEY_DELAYED_SERIN_IRQ == 0) { + /* Load a byte to SERIN - even when the IRQ is disabled. */ +#if SKIP + POKEY_SERIN = SIO_GetByte(); +#else +// POKEY_SERIN = 0; +#endif + if (POKEY_IRQEN & 0x20) { + if (POKEY_IRQST & 0x20) { + POKEY_IRQST &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + else { + POKEY_SKSTAT &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SERIN Interrupt missed, bytevalue %02x\n", POKEY_SERIN); + } +#endif + } + } + + if (POKEY_DELAYED_SEROUT_IRQ > 0) { + if (--POKEY_DELAYED_SEROUT_IRQ == 0) { + if (POKEY_IRQEN & 0x10) { +#ifdef DEBUG2 + printf("SERIO: SEROUT Interrupt triggered\n"); +#endif + POKEY_IRQST &= 0xef; + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SEROUT Interrupt missed\n"); + } +#endif + } + } + + if (POKEY_DELAYED_XMTDONE_IRQ > 0) + if (--POKEY_DELAYED_XMTDONE_IRQ == 0) { + POKEY_IRQST &= 0xf7; + if (POKEY_IRQEN & 0x08) { +#ifdef DEBUG2 + printf("SERIO: XMTDONE Interrupt triggered\n"); +#endif + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else + printf("SERIO: XMTDONE Interrupt missed\n"); +#endif + } + + if ((POKEY_DivNIRQ[POKEY_CHAN1] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN1] += POKEY_DivNMax[POKEY_CHAN1]; + if (POKEY_IRQEN & 0x01) { + POKEY_IRQST &= 0xfe; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN2] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN2] += POKEY_DivNMax[POKEY_CHAN2]; + if (POKEY_IRQEN & 0x02) { + POKEY_IRQST &= 0xfd; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN4] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN4] += POKEY_DivNMax[POKEY_CHAN4]; + if (POKEY_IRQEN & 0x04) { + POKEY_IRQST &= 0xfb; + CPU_GenerateIRQ(); + } + } +} + +/*****************************************************************************/ +/* Module: Update_Counter() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has been added */ +/* here again as I need the precise frequency for the pokey timers */ +/* again. The pokey emulation is therefore somewhat sub-optimal */ +/* since the actual pokey emulation should grab the frequency values */ +/* directly from here instead of calculating them again. */ +/* */ +/* Author: Ron Fries,Thomas Richter */ +/* Date: March 27, 1998 */ +/* */ +/* Inputs: chan_mask: Channel mask, one bit per channel. */ +/* The channels that need to be updated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static void Update_Counter(int chan_mask) +{ + +/************************************************************/ +/* As defined in the manual, the exact Div_n_cnt values are */ +/* different depending on the frequency and resolution: */ +/* 64 kHz or 15 kHz - AUDF + 1 */ +/* 1 MHz, 8-bit - AUDF + 4 */ +/* 1 MHz, 16-bit - AUDF[CHAN1]+256*AUDF[CHAN2] + 7 */ +/************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN1] = POKEY_AUDF[POKEY_CHAN1] + 4; + else + POKEY_DivNMax[POKEY_CHAN1] = (POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN1] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN1] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN2] = POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 7; + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN2] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN2] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[0] & POKEY_CH3_179) + POKEY_DivNMax[POKEY_CHAN4] = POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 7; + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN4] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN4] = ANTIC_LINE_C; + } +} + +#ifndef BASIC + +void POKEY_StateSave(void) +{ + int shift_key = 0; + int keypressed = 0; + + StateSav_SaveUBYTE(&POKEY_KBCODE, 1); + StateSav_SaveUBYTE(&POKEY_IRQST, 1); + StateSav_SaveUBYTE(&POKEY_IRQEN, 1); + StateSav_SaveUBYTE(&POKEY_SKCTL, 1); + + StateSav_SaveINT(&shift_key, 1); + StateSav_SaveINT(&keypressed, 1); + StateSav_SaveINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_SaveUBYTE(&POKEY_AUDF[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDC[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDCTL[0], 1); + + StateSav_SaveINT(&POKEY_DivNIRQ[0], 4); + StateSav_SaveINT(&POKEY_DivNMax[0], 4); + StateSav_SaveINT(&POKEY_Base_mult[0], 1); +} + +void POKEY_StateRead(void) +{ + int i; + int shift_key; + int keypressed; + + StateSav_ReadUBYTE(&POKEY_KBCODE, 1); + StateSav_ReadUBYTE(&POKEY_IRQST, 1); + StateSav_ReadUBYTE(&POKEY_IRQEN, 1); + StateSav_ReadUBYTE(&POKEY_SKCTL, 1); + + StateSav_ReadINT(&shift_key, 1); + StateSav_ReadINT(&keypressed, 1); + StateSav_ReadINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_ReadUBYTE(&POKEY_AUDF[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDC[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDCTL[0], 1); + for (i = 0; i < 4; i++) { + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDF1 + i * 2), POKEY_AUDF[i]); + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDC1 + i * 2), POKEY_AUDC[i]); + } + POKEY_PutByte(POKEY_OFFSET_AUDCTL, POKEY_AUDCTL[0]); + + StateSav_ReadINT(&POKEY_DivNIRQ[0], 4); + StateSav_ReadINT(&POKEY_DivNMax[0], 4); + StateSav_ReadINT(&POKEY_Base_mult[0], 1); +} + +#endif diff --git a/MCUME_esp32/esp5200/main/pokey.h b/MCUME_esp32/esp5200/main/pokey.h new file mode 100644 index 0000000..b9a0c29 --- /dev/null +++ b/MCUME_esp32/esp5200/main/pokey.h @@ -0,0 +1,120 @@ +#ifndef POKEY_H_ +#define POKEY_H_ + + +#include "atari.h" + + +#define POKEY_OFFSET_AUDF1 0x00 +#define POKEY_OFFSET_AUDC1 0x01 +#define POKEY_OFFSET_AUDF2 0x02 +#define POKEY_OFFSET_AUDC2 0x03 +#define POKEY_OFFSET_AUDF3 0x04 +#define POKEY_OFFSET_AUDC3 0x05 +#define POKEY_OFFSET_AUDF4 0x06 +#define POKEY_OFFSET_AUDC4 0x07 +#define POKEY_OFFSET_AUDCTL 0x08 +#define POKEY_OFFSET_STIMER 0x09 +#define POKEY_OFFSET_SKRES 0x0a +#define POKEY_OFFSET_POTGO 0x0b +#define POKEY_OFFSET_SEROUT 0x0d +#define POKEY_OFFSET_IRQEN 0x0e +#define POKEY_OFFSET_SKCTL 0x0f + +#define POKEY_OFFSET_POT0 0x00 +#define POKEY_OFFSET_POT1 0x01 +#define POKEY_OFFSET_POT2 0x02 +#define POKEY_OFFSET_POT3 0x03 +#define POKEY_OFFSET_POT4 0x04 +#define POKEY_OFFSET_POT5 0x05 +#define POKEY_OFFSET_POT6 0x06 +#define POKEY_OFFSET_POT7 0x07 +#define POKEY_OFFSET_ALLPOT 0x08 +#define POKEY_OFFSET_KBCODE 0x09 +#define POKEY_OFFSET_RANDOM 0x0a +#define POKEY_OFFSET_SERIN 0x0d +#define POKEY_OFFSET_IRQST 0x0e +#define POKEY_OFFSET_SKSTAT 0x0f + +#define POKEY_OFFSET_POKEY2 0x10 /* offset to second pokey chip (STEREO expansion) */ + +#ifndef ASAP + +extern UBYTE POKEY_KBCODE; +extern UBYTE POKEY_IRQST; +extern UBYTE POKEY_IRQEN; +extern UBYTE POKEY_SKSTAT; +extern UBYTE POKEY_SKCTL; +extern int POKEY_DELAYED_SERIN_IRQ; +extern int POKEY_DELAYED_SEROUT_IRQ; +extern int POKEY_DELAYED_XMTDONE_IRQ; + +extern UBYTE POKEY_POT_input[8]; + +ULONG POKEY_GetRandomCounter(void); +void POKEY_SetRandomCounter(ULONG value); +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects); +void POKEY_PutByte(UWORD addr, UBYTE byte); +int POKEY_Initialise(void); +void POKEY_Frame(void); +void POKEY_Scanline(void); +void POKEY_StateSave(void); +void POKEY_StateRead(void); + +#endif + +/* CONSTANT DEFINITIONS */ + +/* definitions for AUDCx (D201, D203, D205, D207) */ +#define POKEY_NOTPOLY5 0x80 /* selects POLY5 or direct CLOCK */ +#define POKEY_POLY4 0x40 /* selects POLY4 or POLY17 */ +#define POKEY_PURETONE 0x20 /* selects POLY4/17 or PURE tone */ +#define POKEY_VOL_ONLY 0x10 /* selects VOLUME OUTPUT ONLY */ +#define POKEY_VOLUME_MASK 0x0f /* volume mask */ + +/* definitions for AUDCTL (D208) */ +#define POKEY_POLY9 0x80 /* selects POLY9 or POLY17 */ +#define POKEY_CH1_179 0x40 /* selects 1.78979 MHz for Ch 1 */ +#define POKEY_CH3_179 0x20 /* selects 1.78979 MHz for Ch 3 */ +#define POKEY_CH1_CH2 0x10 /* clocks channel 1 w/channel 2 */ +#define POKEY_CH3_CH4 0x08 /* clocks channel 3 w/channel 4 */ +#define POKEY_CH1_FILTER 0x04 /* selects channel 1 high pass filter */ +#define POKEY_CH2_FILTER 0x02 /* selects channel 2 high pass filter */ +#define POKEY_CLOCK_15 0x01 /* selects 15.6999kHz or 63.9210kHz */ + +/* for accuracy, the 64kHz and 15kHz clocks are exact divisions of + the 1.79MHz clock */ +#define POKEY_DIV_64 28 /* divisor for 1.79MHz clock to 64 kHz */ +#define POKEY_DIV_15 114 /* divisor for 1.79MHz clock to 15 kHz */ + +/* the size (in entries) of the 4 polynomial tables */ +#define POKEY_POLY4_SIZE 0x000f +#define POKEY_POLY5_SIZE 0x001f +#define POKEY_POLY9_SIZE 511 //0x01ff +#define POKEY_POLY17_SIZE 16385//0x0001ffff + +#define POKEY_MAXPOKEYS 2 /* max number of emulated chips */ + +/* channel/chip definitions */ +#define POKEY_CHAN1 0 +#define POKEY_CHAN2 1 +#define POKEY_CHAN3 2 +#define POKEY_CHAN4 3 +#define POKEY_CHIP1 0 +#define POKEY_CHIP2 4 +#define POKEY_CHIP3 8 +#define POKEY_CHIP4 12 +#define POKEY_SAMPLE 127 + +/* structures to hold the 9 pokey control bytes */ +extern UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +extern UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +extern UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ + +extern int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +extern int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +extern const UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +extern const UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +#endif /* POKEY_H_ */ diff --git a/MCUME_esp32/esp5200/main/pokeysnd.c b/MCUME_esp32/esp5200/main/pokeysnd.c new file mode 100644 index 0000000..c3d66e5 --- /dev/null +++ b/MCUME_esp32/esp5200/main/pokeysnd.c @@ -0,0 +1,1427 @@ +/* + * pokeysnd.c - POKEY sound chip emulation, v2.4 + * + * Copyright (C) 1996-1998 Ron Fries + * Copyright (C) 1998-2014 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifdef skip +#include "config.h" +#include +#include + +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "atari.h" +#ifndef __PLUS +#include "sndsave.h" +#else +#include "sound_win.h" +#endif +#endif +#include "mzpokeysnd.h" +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" +#include "util.h" +#endif + +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" + +#ifdef WORDS_UNALIGNED_OK +# define READ_U32(x) (*(ULONG *) (x)) +# define WRITE_U32(x, d) (*(ULONG *) (x) = (d)) +#else +# ifdef WORDS_BIGENDIAN +# define READ_U32(x) (((*(unsigned char *)(x)) << 24) | ((*((unsigned char *)(x) + 1)) << 16) | \ + ((*((unsigned char *)(x) + 2)) << 8) | ((*((unsigned char *)(x) + 3)))) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *) (x)) = (((i) >> 24) & 255); \ + (*((unsigned char *) (x) + 1)) = (((i) >> 16) & 255); \ + (*((unsigned char *) (x) + 2)) = (((i) >> 8) & 255); \ + (*((unsigned char *) (x) + 3)) = ((i) & 255); \ + } +# else +# define READ_U32(x) ((*(unsigned char *) (x)) | ((*((unsigned char *) (x) + 1)) << 8) | \ + ((*((unsigned char *) (x) + 2)) << 16) | ((*((unsigned char *) (x) + 3)) << 24)) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *)(x)) = ((i) & 255); \ + (*((unsigned char *)(x) + 1)) = (((i) >> 8) & 255); \ + (*((unsigned char *)(x) + 2)) = (((i) >> 16) & 255); \ + (*((unsigned char *)(x) + 3)) = (((i) >> 24) & 255); \ + } +# endif +#endif + +/* GLOBAL VARIABLE DEFINITIONS */ + +/* number of pokey chips currently emulated */ +static UBYTE Num_pokeys; + +static UBYTE pokeysnd_AUDV[4 * POKEY_MAXPOKEYS]; /* Channel volume - derived */ + +static UBYTE Outbit[4 * POKEY_MAXPOKEYS]; /* current state of the output (high or low) */ + +static UBYTE Outvol[4 * POKEY_MAXPOKEYS]; /* last output volume for each channel */ + +/* Initialize the bit patterns for the polynomials. */ + +/* The 4bit and 5bit patterns are the identical ones used in the pokey chip. */ +/* Though the patterns could be packed with 8 bits per byte, using only a */ +/* single bit per byte keeps the math simple, which is important for */ +/* efficient processing. */ + +static const UBYTE bit4[POKEY_POLY4_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0}; /* new table invented by Perry */ +#else +{1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0}; /* original POKEY 2.3 table */ +#endif + +static const UBYTE bit5[POKEY_POLY5_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0}; +#else +{0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}; +#endif + +static ULONG P4 = 0, /* Global position pointer for the 4-bit POLY array */ + P5 = 0, /* Global position pointer for the 5-bit POLY array */ + P9 = 0, /* Global position pointer for the 9-bit POLY array */ + P17 = 0; /* Global position pointer for the 17-bit POLY array */ + +static ULONG Div_n_cnt[4 * POKEY_MAXPOKEYS], /* Divide by n counter. one for each channel */ + Div_n_max[4 * POKEY_MAXPOKEYS]; /* Divide by n maximum, one for each channel */ + +static ULONG Samp_n_max, /* Sample max. For accuracy, it is *256 */ + Samp_n_cnt[2]; /* Sample cnt. */ + +#ifdef INTERPOLATE_SOUND +#ifdef CLIP_SOUND +static SWORD last_val = 0; /* last output value */ +#else +static UWORD last_val = 0; +#endif +#ifdef STEREO_SOUND +#ifdef CLIP_SOUND +static SWORD last_val2 = 0; /* last output value */ +#else +static UWORD last_val2 = 0; +#endif +#endif +#endif + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +int POKEYSND_sampbuf_ptr = 0; /* pointer to sampbuf */ +int POKEYSND_sampbuf_rptr = 0; /* pointer to read from sampbuf */ +int POKEYSND_sampbuf_last = 0; /* last absolute time */ +int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +int POKEYSND_sampbuf_lastval = 0; /* last volume */ +int POKEYSND_sampout; /* last out volume */ +int POKEYSND_samp_freq; +int POKEYSND_samp_consol_val = 0; /* actual value of console sound */ +#ifdef STEREO_SOUND +static int sampbuf_val2[POKEYSND_SAMPBUF_MAX]; /* volume values */ +static int sampbuf_cnt2[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +static int sampbuf_ptr2 = 0; /* pointer to sampbuf */ +static int sampbuf_rptr2 = 0; /* pointer to read from sampbuf */ +static int sampbuf_last2 = 0; /* last absolute time */ +static int sampbuf_lastval2 = 0; /* last volume */ +static int sampout2; /* last out volume */ +#endif +#endif /* VOL_ONLY_SOUND */ + +static ULONG snd_freq17 = POKEYSND_FREQ_17_EXACT; +int POKEYSND_playback_freq = 44100; +UBYTE POKEYSND_num_pokeys = 1; +int POKEYSND_snd_flags = 0; +static int mz_quality = 0; /* default quality for mzpokeysnd */ +#ifdef __PLUS +int mz_clear_regs = 0; +#endif + +int POKEYSND_enable_new_pokey = TRUE; +int POKEYSND_bienias_fix = TRUE; /* when TRUE, high frequencies get emulated: better sound but slower */ +#if defined(__PLUS) && !defined(_WX_) +#define BIENIAS_FIX (g_Sound.nBieniasFix) +#else +#define BIENIAS_FIX POKEYSND_bienias_fix +#endif +#ifndef ASAP +int POKEYSND_stereo_enabled = FALSE; +#endif + +int POKEYSND_volume = 0x100; + +/* multiple sound engine interface */ +static void pokeysnd_process_8(void *sndbuffer, int sndn); +static void pokeysnd_process_16(void *sndbuffer, int sndn); +static void null_pokey_process(void *sndbuffer, int sndn) {} +void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn) = null_pokey_process; + +static void Update_pokey_sound_rf(UWORD, UBYTE, UBYTE, UBYTE); +static void null_pokey_sound(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) {} +void (*POKEYSND_Update_ptr) (UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) + = null_pokey_sound; + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data); +static void null_serio_sound(int out, UBYTE data) {} +void (*POKEYSND_UpdateSerio)(int out, UBYTE data) = null_serio_sound; +int POKEYSND_serio_sound_enabled = 1; +#endif + +#ifdef CONSOLE_SOUND +static void Update_consol_sound_rf(int set); +static void null_consol_sound(int set) {} +void (*POKEYSND_UpdateConsol_ptr)(int set) = null_consol_sound; +int POKEYSND_console_sound_enabled = 1; +#endif + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void); +static void null_vol_only_sound(void) {} +void (*POKEYSND_UpdateVolOnly)(void) = null_vol_only_sound; +#endif + +#ifdef SYNCHRONIZED_SOUND +UBYTE *POKEYSND_process_buffer = NULL; +unsigned int POKEYSND_process_buffer_length; +unsigned int POKEYSND_process_buffer_fill; +static unsigned int prev_update_tick; + +static void Generate_sync_rf(unsigned int num_ticks); +static void null_generate_sync(unsigned int num_ticks) {} +void (*POKEYSND_GenerateSync)(unsigned int num_ticks) = null_generate_sync; + +static double ticks_per_sample; +static double samp_pos; +static int speaker; +static int const CONSOLE_VOL = 32; +#endif /* SYNCHRONIZED_SOUND */ + +/*****************************************************************************/ +/* In my routines, I treat the sample output as another divide by N counter */ +/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */ +/* which has 8 binary digits to the right of the decimal point. I use a two */ +/* byte array to give me a minimum of 40 bits, and then use pointer math to */ +/* reference either the 24.8 whole/fraction combination or the 32-bit whole */ +/* only number. This is mainly used to keep the math simple for */ +/* optimization. See below: */ +/* */ +/* Representation on little-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx */ +/* fraction whole whole whole whole unused unused unused */ +/* */ +/* Samp_n_cnt[0] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+1) gives me the 32-bit whole */ +/* number only. */ +/* */ +/* Representation on big-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx.xxxxxxxx */ +/* unused unused unused whole whole whole whole fraction */ +/* */ +/* Samp_n_cnt[1] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+3) gives me the 32-bit whole */ +/* number only. */ +/*****************************************************************************/ + + +/*****************************************************************************/ +/* Module: pokeysnd_init_rf() */ +/* Purpose: to handle the power-up initialization functions */ +/* these functions should only be executed on a cold-restart */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: freq17 - the value for the '1.79MHz' Pokey audio clock */ +/* playback_freq - the playback frequency in samples per second */ +/* num_pokeys - specifies the number of pokey chips to be emulated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags); + +#ifdef VOL_ONLY_SOUND +/* Initialise variables related to volume-only sound. */ +static void init_vol_only(void) +{ + POKEYSND_sampbuf_rptr = POKEYSND_sampbuf_ptr; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_lastval = 0; + POKEYSND_samp_consol_val = 0; +#ifdef STEREO_SOUND + sampbuf_rptr2 = sampbuf_ptr2; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_lastval2 = 0; +#endif /* STEREO_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ + +int POKEYSND_DoInit(void) +{ +#if SKIP + SndSave_CloseSoundFile(); +#endif + +#ifdef VOL_ONLY_SOUND + init_vol_only(); +#endif /* VOL_ONLY_SOUND */ + +#if SKIP + if (POKEYSND_enable_new_pokey) + return MZPOKEYSND_Init(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags, mz_quality +#ifdef __PLUS + , mz_clear_regs +#endif + ); + else +#endif + return pokeysnd_init_rf(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags); +} + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif +) +{ + snd_freq17 = freq17; + POKEYSND_playback_freq = playback_freq; + POKEYSND_num_pokeys = num_pokeys; + POKEYSND_snd_flags = flags; +#ifdef __PLUS + mz_clear_regs = clear_regs; +#endif +#ifdef SYNCHRONIZED_SOUND + { + /* A single call to Atari800_Frame may emulate a bit more CPU ticks than the exact number of + ticks per frame (Atari800_tv_mode*114). So we add a few ticks to buffer size just to be safe. */ + unsigned int const surplus_ticks = 10; + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + unsigned int max_ticks_per_frame = ticks_per_frame + surplus_ticks; + double ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + POKEYSND_process_buffer_length = POKEYSND_num_pokeys * (unsigned int)ceil((double)max_ticks_per_frame / ticks_per_sample) * ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2:1); + free(POKEYSND_process_buffer); + POKEYSND_process_buffer = (UBYTE *)Util_malloc(POKEYSND_process_buffer_length); + POKEYSND_process_buffer_fill = 0; + prev_update_tick = ANTIC_CPU_CLOCK; + } +#endif /* SYNCHRONIZED_SOUND */ + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Init(playback_freq, num_pokeys, (flags & POKEYSND_BIT16)); +#endif + return POKEYSND_DoInit(); +} + +void POKEYSND_SetMzQuality(int quality) /* specially for win32, perhaps not needed? */ +{ + mz_quality = quality; +} + +void POKEYSND_Process(void *sndbuffer, int sndn) +{ + POKEYSND_Process_ptr(sndbuffer, sndn); +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(sndbuffer,sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) +#if SKIP + SndSave_WriteToSoundFile((const unsigned char *)sndbuffer, sndn); +#endif +#endif +} + +#ifdef SYNCHRONIZED_SOUND +static void Update_synchronized_sound(void) +{ + POKEYSND_GenerateSync(ANTIC_CPU_CLOCK - prev_update_tick); + prev_update_tick = ANTIC_CPU_CLOCK; +} + +int POKEYSND_UpdateProcessBuffer(void) +{ + int sndn; + Update_synchronized_sound(); + sndn = POKEYSND_process_buffer_fill / ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2 : 1); + POKEYSND_process_buffer_fill = 0; + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(POKEYSND_process_buffer, sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) + SndSave_WriteToSoundFile((const unsigned char *)POKEYSND_process_buffer, sndn); +#endif + return sndn; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +static void init_syncsound(void) +{ + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + samp_pos = 0.0; + POKEYSND_GenerateSync = Generate_sync_rf; + speaker = 0; +} +#endif /* SYNCHRONIZED_SOUND */ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags) +{ + UBYTE chan; + + POKEYSND_Update_ptr = Update_pokey_sound_rf; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio = Update_serio_sound_rf; +#endif +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol_ptr = Update_consol_sound_rf; +#endif +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly = Update_vol_only_sound_rf; +#endif + + POKEYSND_Process_ptr = (flags & POKEYSND_BIT16) ? pokeysnd_process_16 : pokeysnd_process_8; + +#ifdef VOL_ONLY_SOUND + POKEYSND_samp_freq = playback_freq; +#endif + + /* start all of the polynomial counters at zero */ + P4 = 0; + P5 = 0; + P9 = 0; + P17 = 0; + + /* calculate the sample 'divide by N' value based on the playback freq. */ + Samp_n_max = ((ULONG) freq17 << 8) / playback_freq; + + Samp_n_cnt[0] = 0; /* initialize all bits of the sample */ + Samp_n_cnt[1] = 0; /* 'divide by N' counter */ + + for (chan = 0; chan < (POKEY_MAXPOKEYS * 4); chan++) { + Outvol[chan] = 0; + Outbit[chan] = 0; + Div_n_cnt[chan] = 0; + Div_n_max[chan] = 0x7fffffffL; + pokeysnd_AUDV[chan] = 0; +#ifdef VOL_ONLY_SOUND + POKEYSND_sampbuf_AUDV[chan] = 0; +#endif + } + + /* set the number of pokey chips currently emulated */ + Num_pokeys = num_pokeys; + +#ifdef SYNCHRONIZED_SOUND + init_syncsound(); +#endif + return 0; /* OK */ +} + + +/*****************************************************************************/ +/* Module: Update_pokey_sound_rf() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has not been */ +/* optimized. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: addr - the address of the parameter to be changed */ +/* val - the new value to be placed in the specified address */ +/* gain - specified as an 8-bit fixed point number - use 1 for no */ +/* amplification (output is multiplied by gain) */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) +{ +#ifdef SYNCHRONIZED_SOUND + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_Update_ptr(addr, val, chip, gain); +} + +static void Update_pokey_sound_rf(UWORD addr, UBYTE val, UBYTE chip, + UBYTE gain) +{ + ULONG new_val = 0; + UBYTE chan; + UBYTE chan_mask; + UBYTE chip_offs; + + /* calculate the chip_offs for the channel arrays */ + chip_offs = chip << 2; + + /* determine which address was changed */ + switch (addr & 0x0f) { + case POKEY_OFFSET_AUDF1: + /* POKEY_AUDF[POKEY_CHAN1 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN1; + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) /* if ch 1&2 tied together */ + chan_mask |= 1 << POKEY_CHAN2; /* then also change on ch2 */ + break; + case POKEY_OFFSET_AUDC1: + /* POKEY_AUDC[POKEY_CHAN1 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN1 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN1; + break; + case POKEY_OFFSET_AUDF2: + /* POKEY_AUDF[POKEY_CHAN2 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDC2: + /* POKEY_AUDC[POKEY_CHAN2 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN2 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDF3: + /* POKEY_AUDF[POKEY_CHAN3 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN3; + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) /* if ch 3&4 tied together */ + chan_mask |= 1 << POKEY_CHAN4; /* then also change on ch4 */ + break; + case POKEY_OFFSET_AUDC3: + /* POKEY_AUDC[POKEY_CHAN3 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN3 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN3; + break; + case POKEY_OFFSET_AUDF4: + /* POKEY_AUDF[POKEY_CHAN4 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDC4: + /* POKEY_AUDC[POKEY_CHAN4 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN4 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDCTL: + /* POKEY_AUDCTL[chip] = val; */ + chan_mask = 15; /* all channels */ + break; + default: + chan_mask = 0; + break; + } + + /************************************************************/ + /* As defined in the manual, the exact Div_n_cnt values are */ + /* different depending on the frequency and resolution: */ + /* 64 kHz or 15 kHz - AUDF + 1 */ + /* 1 MHz, 8-bit - AUDF + 4 */ + /* 1 MHz, 16-bit - POKEY_AUDF[POKEY_CHAN1]+256*POKEY_AUDF[POKEY_CHAN2] + 7 */ + /************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN1 + chip_offs]) { + Div_n_max[POKEY_CHAN1 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN1 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN1 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN2 + chip_offs]) { + Div_n_max[POKEY_CHAN2 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN2 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN2 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN3)) { + /* process channel 3 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN3 + chip_offs]) { + Div_n_max[POKEY_CHAN3 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN3 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN3 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN4 + chip_offs]) { + Div_n_max[POKEY_CHAN4 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN4 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN4 + chip_offs] = new_val; + } + } + } + + /* if channel is volume only, set current output */ + for (chan = POKEY_CHAN1; chan <= POKEY_CHAN4; chan++) { + if (chan_mask & (1 << chan)) { + +#ifdef VOL_ONLY_SOUND + +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + if ((POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY)) { + +#ifdef STEREO_SOUND + +#ifdef __PLUS + if (POKEYSND_stereo_enabled && chip & 0x01) +#else + if (chip & 0x01) +#endif + { + sampbuf_lastval2 += pokeysnd_AUDV[chan + chip_offs] + - POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + sampbuf_val2[sampbuf_ptr2] = sampbuf_lastval2; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + sampbuf_cnt2[sampbuf_ptr2] = + (ANTIC_CPU_CLOCK - sampbuf_last2) * 128 * POKEYSND_samp_freq / 178979; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_ptr2++; + if (sampbuf_ptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_ptr2 = 0; + if (sampbuf_ptr2 == sampbuf_rptr2) { + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + } + } + else +#endif /* STEREO_SOUND */ + { + POKEYSND_sampbuf_lastval += pokeysnd_AUDV[chan + chip_offs] + -POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + } + } + +#endif /* VOL_ONLY_SOUND */ + + /* I've disabled any frequencies that exceed the sampling + frequency. There isn't much point in processing frequencies + that the hardware can't reproduce. I've also disabled + processing if the volume is zero. */ + + /* if the channel is volume only */ + /* or the channel is off (volume == 0) */ + /* or the channel freq is greater than the playback freq */ + if ( (POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY) || + ((POKEY_AUDC[chan + chip_offs] & POKEY_VOLUME_MASK) == 0) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* indicate the channel is 'on' */ + Outvol[chan + chip_offs] = 1; + + /* can only ignore channel if filtering off */ + if ((chan == POKEY_CHAN3 && !(POKEY_AUDCTL[chip] & POKEY_CH1_FILTER)) || + (chan == POKEY_CHAN4 && !(POKEY_AUDCTL[chip] & POKEY_CH2_FILTER)) || + (chan == POKEY_CHAN1) || + (chan == POKEY_CHAN2) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* and set channel freq to max to reduce processing */ + Div_n_max[chan + chip_offs] = 0x7fffffffL; + Div_n_cnt[chan + chip_offs] = 0x7fffffffL; + } + } + } + } + + /* _enable(); */ /* RSF - removed for portability 31-MAR-97 */ +} + + +/*****************************************************************************/ +/* Module: pokeysnd_process() */ +/* Purpose: To fill the output buffer with the sound output based on the */ +/* pokey chip parameters. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: *buffer - pointer to the buffer where the audio output will */ +/* be placed */ +/* sndn - for mono, size of the playback buffer in samples */ +/* for stereo, size of the playback buffer in left samples */ +/* plus right samples. */ +/* num_pokeys - number of currently active pokeys to process */ +/* */ +/* Outputs: the buffer will be filled with n bytes of audio - no return val */ +/* Also the buffer will be written to disk if Sound recording is ON */ +/* */ +/*****************************************************************************/ + +static void pokeysnd_process_8(void *sndbuffer, int sndn) +{ + register UBYTE *buffer = (UBYTE *) sndbuffer; + register int n = sndn; + + register ULONG *div_n_ptr; + register UBYTE *samp_cnt_w_ptr; + register ULONG event_min; + register UBYTE next_event; +#ifdef CLIP_SOUND + register SWORD cur_val; /* then we have to count as 16-bit signed */ +#ifdef STEREO_SOUND + register SWORD cur_val2; +#endif +#else /* CLIP_SOUND */ + register UBYTE cur_val; /* otherwise we'll simplify as 8-bit unsigned */ +#ifdef STEREO_SOUND + register UBYTE cur_val2; +#endif +#endif /* CLIP_SOUND */ + register UBYTE *out_ptr; + register UBYTE audc; + register UBYTE toggle; + register UBYTE count; + register UBYTE *vol_ptr; + + /* set a pointer to the whole portion of the samp_n_cnt */ +#ifdef WORDS_BIGENDIAN + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 3); +#else + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 1); +#endif + + /* set a pointer for optimization */ + out_ptr = Outvol; + vol_ptr = pokeysnd_AUDV; + + /* The current output is pre-determined and then adjusted based on each */ + /* output change for increased performance (less over-all math). */ + /* add the output values of all 4 channels */ + cur_val = POKEYSND_SAMP_MIN; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + cur_val2 = POKEYSND_SAMP_MIN; +#endif /* STEREO_SOUND */ + + count = Num_pokeys; + do { + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + count--; + if (count) { + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + } + else + break; + } +#endif /* STEREO_SOUND */ + count--; + } while (count); + +#ifdef SYNCHRONIZED_SOUND + cur_val += speaker; +#endif + + /* loop until the buffer is filled */ + while (n) { + /* Normally the routine would simply decrement the 'div by N' */ + /* counters and react when they reach zero. Since we normally */ + /* won't be processing except once every 80 or so counts, */ + /* I've optimized by finding the smallest count and then */ + /* 'accelerated' time by adjusting all pointers by that amount. */ + + /* find next smallest event (either sample or chan 1-4) */ + next_event = POKEY_SAMPLE; + event_min = READ_U32(samp_cnt_w_ptr); + + div_n_ptr = Div_n_cnt; + + count = 0; + do { + /* Though I could have used a loop here, this is faster */ + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN1 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN2 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN3 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN4 + (count << 2); + } + div_n_ptr++; + + count++; + } while (count < Num_pokeys); + + /* if the next event is a channel change */ + if (next_event != POKEY_SAMPLE) { + /* shift the polynomial counters */ + + count = Num_pokeys; + do { + /* decrement all counters by the smallest count found */ + /* again, no loop for efficiency */ + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + + count--; + } while (count); + + + WRITE_U32(samp_cnt_w_ptr, READ_U32(samp_cnt_w_ptr) - event_min); + + /* since the polynomials require a mod (%) function which is + division, I don't adjust the polynomials on the SAMPLE events, + only the CHAN events. I have to keep track of the change, + though. */ + + P4 = (P4 + event_min) % POKEY_POLY4_SIZE; + P5 = (P5 + event_min) % POKEY_POLY5_SIZE; + P9 = (P9 + event_min) % POKEY_POLY9_SIZE; + P17 = (P17 + event_min) % POKEY_POLY17_SIZE; + + /* adjust channel counter */ + Div_n_cnt[next_event] += Div_n_max[next_event]; + + /* get the current AUDC into a register (for optimization) */ + audc = POKEY_AUDC[next_event]; + + /* set a pointer to the current output (for opt...) */ + out_ptr = &Outvol[next_event]; + + /* assume no changes to the output */ + toggle = FALSE; + + /* From here, a good understanding of the hardware is required */ + /* to understand what is happening. I won't be able to provide */ + /* much description to explain it here. */ + + /* if VOLUME only then nothing to process */ + if (!(audc & POKEY_VOL_ONLY)) { + /* if the output is pure or the output is poly5 and the poly5 bit */ + /* is set */ + if ((audc & POKEY_NOTPOLY5) || bit5[P5]) { + /* if the PURETONE bit is set */ + if (audc & POKEY_PURETONE) { + /* then simply toggle the output */ + toggle = TRUE; + } + /* otherwise if POLY4 is selected */ + else if (audc & POKEY_POLY4) { + /* then compare to the poly4 bit */ + toggle = (bit4[P4] == !(*out_ptr)); + } + else { + /* if 9-bit poly is selected on this chip */ + if (POKEY_AUDCTL[next_event >> 2] & POKEY_POLY9) { + /* compare to the poly9 bit */ + toggle = ((POKEY_poly9_lookup[P9] & 1) == !(*out_ptr)); + } + else { + /* otherwise compare to the poly17 bit */ + toggle = (((POKEY_poly17_lookup[P17 >> 3] >> (P17 & 7)) & 1) == !(*out_ptr)); + } + } + } + } + + /* check channel 1 filter (clocked by channel 3) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH1_FILTER) { + /* if we're processing channel 3 */ + if ((next_event & 0x03) == POKEY_CHAN3) { + /* check output of channel 1 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* check channel 2 filter (clocked by channel 4) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH2_FILTER) { + /* if we're processing channel 4 */ + if ((next_event & 0x03) == POKEY_CHAN4) { + /* check output of channel 2 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* if the current output bit has changed */ + if (toggle) { + if (*out_ptr) { + /* remove this channel from the signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event]; + + /* and turn the output off */ + *out_ptr = 0; + } + else { + /* turn the output on */ + *out_ptr = 1; + + /* and add it to the output signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 += pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val += pokeysnd_AUDV[next_event]; + } + } + } + else { /* otherwise we're processing a sample */ + /* adjust the sample counter - note we're using the 24.8 integer + which includes an 8 bit fraction for accuracy */ + + int iout; +#ifdef STEREO_SOUND + int iout2; +#endif +#ifdef INTERPOLATE_SOUND + if (cur_val != last_val) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout = (cur_val * (SLONG)(*Samp_n_cnt) + + last_val * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout = (cur_val * (*Samp_n_cnt) + + last_val * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout = cur_val; + last_val = cur_val; + } + else + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (cur_val2 != last_val2) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout2 = (cur_val2 * (SLONG)(*Samp_n_cnt) + + last_val2 * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout2 = (cur_val2 * (*Samp_n_cnt) + + last_val2 * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout2 = cur_val2; + last_val2 = cur_val2; + } + else + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#else /* INTERPOLATE_SOUND */ + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#endif /* INTERPOLATE_SOUND */ + +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) { + int l; + if (POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] > 0) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] -= 1280; + while ((l = POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr]) <= 0) { + POKEYSND_sampout = POKEYSND_sampbuf_val[POKEYSND_sampbuf_rptr]; + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] += l; + else + break; + } + } + iout += POKEYSND_sampout; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + if (sampbuf_rptr2 != sampbuf_ptr2) { + int l; + if (sampbuf_cnt2[sampbuf_rptr2] > 0) + sampbuf_cnt2[sampbuf_rptr2] -= 1280; + while ((l = sampbuf_cnt2[sampbuf_rptr2]) <= 0) { + sampout2 = sampbuf_val2[sampbuf_rptr2]; + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + if (sampbuf_rptr2 != sampbuf_ptr2) + sampbuf_cnt2[sampbuf_rptr2] += l; + else + break; + } + } + iout2 += sampout2; + } +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ + +#ifdef CLIP_SOUND + if (iout > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if (iout < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) iout; + } +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) { + if (iout2 > POKEYSND_SAMP_MAX) + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; + else if (iout2 < POKEYSND_SAMP_MIN) + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; + else + *buffer++ = (UBYTE) iout2; + } +#else /* __PLUS */ + if (Num_pokeys > 1) { + if ((POKEYSND_stereo_enabled ? iout2 : iout) > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if ((POKEYSND_stereo_enabled ? iout2 : iout) < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); + } + } +#endif /* __PLUS */ +#endif /* STEREO_SOUND */ +#else /* CLIP_SOUND */ + *buffer++ = (UBYTE) iout; /* clipping not selected, use value */ +#ifdef STEREO_SOUND + if (Num_pokeys > 1) +#ifdef ASAP + *buffer++ = (UBYTE) iout2; +#else + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); +#endif +#endif /* STEREO_SOUND */ +#endif /* CLIP_SOUND */ + +#ifdef WORDS_BIGENDIAN + *(Samp_n_cnt + 1) += Samp_n_max; +#else + *Samp_n_cnt += Samp_n_max; +#endif + /* and indicate one less byte in the buffer */ + n--; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (Num_pokeys > 1) + n--; +#endif + } + } +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr == POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (sampbuf_rptr2 == sampbuf_ptr2) + sampbuf_last2 = ANTIC_CPU_CLOCK; +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ +} + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data) +{ +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) { +#endif + int bits, pv, future; + if (!POKEYSND_serio_sound_enabled) return; + + pv = 0; + future = 0; + bits = (data << 1) | 0x200; + while (bits) + { + POKEYSND_sampbuf_lastval -= pv; + pv = (bits & 0x01) * pokeysnd_AUDV[3]; /* FIXME!!! - set volume from AUDV */ + POKEYSND_sampbuf_lastval += pv; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK + future-POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK + future; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX ) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr ) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + /* 1789790/19200 = 93 */ + future += 93; /* ~ 19200 bit/s - FIXME!!! set speed form AUDF [2] ??? */ + bits >>= 1; + } + POKEYSND_sampbuf_lastval -= pv; +#ifdef __PLUS + } +#endif +#endif /* VOL_ONLY_SOUND */ +} +#endif /* SERIO_SOUND */ + +void POKEYSND_SetVolume(int vol) +{ + if (vol > 100) + vol = 100; + if (vol < 0) + vol = 0; + + POKEYSND_volume = vol * 0x100 / 100; +} + +static void pokeysnd_process_16(void *sndbuffer, int sndn) +{ + UWORD *buffer = (UWORD *) sndbuffer; + int i; + + pokeysnd_process_8(buffer, sndn); + + for (i = sndn - 1; i >= 0; i--) { +#ifndef POKEYSND_SIGNED_SAMPLES + int smp = ((int) (((UBYTE *) buffer)[i]) - 0x80) * POKEYSND_volume; +#else + int smp = ((int) ((SBYTE *) buffer)[i]) * POKEYSND_volume; +#endif + if (smp > 32767) + smp = 32767; + else if (smp < -32768) + smp = -32768; + + buffer[i] = smp; + } +} + +#ifdef SYNCHRONIZED_SOUND +static void Generate_sync_rf(unsigned int num_ticks) +{ + double new_samp_pos; + unsigned int ticks; + UBYTE *buffer = POKEYSND_process_buffer + POKEYSND_process_buffer_fill; + UBYTE *buffer_end = POKEYSND_process_buffer + POKEYSND_process_buffer_length; + + for (;;) { + double int_part; + new_samp_pos = samp_pos + ticks_per_sample; + new_samp_pos = modf(new_samp_pos, &int_part); + ticks = (unsigned int)int_part; + if (ticks > num_ticks) { + samp_pos -= num_ticks; + break; + } + if (buffer >= buffer_end) + break; + + samp_pos = new_samp_pos; + num_ticks -= ticks; + + if (POKEYSND_snd_flags & POKEYSND_BIT16) { + pokeysnd_process_16(buffer, POKEYSND_num_pokeys); + buffer += 2 * POKEYSND_num_pokeys; + } + else { + pokeysnd_process_8(buffer, POKEYSND_num_pokeys); + buffer += POKEYSND_num_pokeys; + } + + } + + POKEYSND_process_buffer_fill = buffer - POKEYSND_process_buffer; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef CONSOLE_SOUND +void POKEYSND_UpdateConsol(int set) +{ + if (!POKEYSND_console_sound_enabled) + return; +#ifdef SYNCHRONIZED_SOUND + if (set) + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_UpdateConsol_ptr(set); +} + +static void Update_consol_sound_rf(int set) +{ +#ifdef SYNCHRONIZED_SOUND + if (set) + speaker = CONSOLE_VOL * GTIA_speaker; +#elif defined(VOL_ONLY_SOUND) + static int prev_atari_speaker = 0; + static unsigned int prev_cpu_clock = 0; + int d; +#ifdef __PLUS + if (!g_Sound.nDigitized) + return; +#endif + + if (!set && POKEYSND_samp_consol_val == 0) + return; + POKEYSND_sampbuf_lastval -= POKEYSND_samp_consol_val; + if (prev_atari_speaker != GTIA_speaker) { + POKEYSND_samp_consol_val = GTIA_speaker * 8 * 4; /* gain */ + prev_cpu_clock = ANTIC_CPU_CLOCK; + } + else if (!set) { + d = ANTIC_CPU_CLOCK - prev_cpu_clock; + if (d < 114) { + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + return; + } + while (d >= 114 /* CPUL */) { + POKEYSND_samp_consol_val = POKEYSND_samp_consol_val * 99 / 100; + d -= 114; + } + prev_cpu_clock = ANTIC_CPU_CLOCK - d; + } + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + prev_atari_speaker = GTIA_speaker; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } +#endif /* !SYNCHRONIZED_SOUND && VOL_ONLY_SOUND */ +} +#endif /* CONSOLE_SOUND */ + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void) +{ +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(0); /* mmm */ +#endif /* CONSOLE_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ diff --git a/MCUME_esp32/esp5200/main/pokeysnd.h b/MCUME_esp32/esp5200/main/pokeysnd.h new file mode 100644 index 0000000..6b96bfa --- /dev/null +++ b/MCUME_esp32/esp5200/main/pokeysnd.h @@ -0,0 +1,143 @@ +/*****************************************************************************/ +/* */ +/* Module: POKEY Chip Simulator Includes, V2.3 */ +/* Purpose: To emulate the sound generation hardware of the Atari POKEY chip. */ +/* Author: Ron Fries */ +/* */ +/* Revision History: */ +/* */ +/* 09/22/96 - Ron Fries - Initial Release */ +/* 04/06/97 - Brad Oliver - Some cross-platform modifications. Added */ +/* big/little endian #defines, removed , */ +/* conditional defines for TRUE/FALSE */ +/* 01/19/98 - Ron Fries - Changed signed/unsigned sample support to a */ +/* compile-time option. Defaults to unsigned - */ +/* define SIGNED_SAMPLES to create signed. */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* PokeySound is Copyright(c) 1996-1998 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ + +#ifndef POKEYSND_H_ +#define POKEYSND_H_ + +#include "atari.h" +#include "pokey.h" + +/* CONSTANT DEFINITIONS */ + +/* As an alternative to using the exact frequencies, selecting a playback + frequency that is an exact division of the main clock provides a higher + quality output due to less aliasing. For best results, a value of + 1787520 MHz is used for the main clock. With this value, both the + 64 kHz and 15 kHz clocks are evenly divisible. Selecting a playback + frequency that is also a division of the clock provides the best + results. The best options are FREQ_64 divided by either 2, 3, or 4. + The best selection is based on a trade off between performance and + sound quality. + + Of course, using a main clock frequency that is not exact will affect + the pitch of the output. With these numbers, the pitch will be low + by 0.127%. (More than likely, an actual unit will vary by this much!) */ + +#define POKEYSND_FREQ_17_EXACT 1789790 /* exact 1.79 MHz clock freq */ +#define POKEYSND_FREQ_17_APPROX 1787520 /* approximate 1.79 MHz clock freq */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef POKEYSND_SIGNED_SAMPLES /* if signed output selected */ +#define POKEYSND_SAMP_MAX 127 /* then set signed 8-bit clipping ranges */ +#define POKEYSND_SAMP_MIN -128 +#define POKEYSND_SAMP_MID 0 +#else +#define POKEYSND_SAMP_MAX 255 /* else set unsigned 8-bit clip ranges */ +#define POKEYSND_SAMP_MIN 0 +#define POKEYSND_SAMP_MID 128 +#endif + +/* init flags */ + +extern SLONG POKEYSND_playback_freq; +extern UBYTE POKEYSND_num_pokeys; +extern int POKEYSND_snd_flags; +extern int POKEYSND_volume; + +extern int POKEYSND_enable_new_pokey; +extern int POKEYSND_stereo_enabled; +extern int POKEYSND_serio_sound_enabled; +extern int POKEYSND_console_sound_enabled; +extern int POKEYSND_bienias_fix; + +extern void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn); +extern void (*POKEYSND_Update_ptr)(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain); +extern void (*POKEYSND_UpdateSerio)(int out, UBYTE data); +extern void (*POKEYSND_UpdateConsol_ptr)(int set); +extern void (*POKEYSND_UpdateVolOnly)(void); + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif + ); +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE /*chip*/, UBYTE gain); +void POKEYSND_UpdateConsol(int set); + +/* Fill sndbuffer with sndn samples of audio. Number of bytes written to + sndbuffer is sndn with 8-bit sound, and 2*sndn with 16-bit sound. sndn + must be a multiple of POKEYSND_num_pokeys. */ +void POKEYSND_Process(void *sndbuffer, int sndn); +int POKEYSND_DoInit(void); +void POKEYSND_SetMzQuality(int quality); +void POKEYSND_SetVolume(int vol); + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +#define POKEYSND_SAMPBUF_MAX 2000 +extern int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +extern int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +extern int POKEYSND_sampbuf_ptr; /* pointer to sampbuf */ +extern int POKEYSND_sampbuf_rptr; /* pointer to read from sampbuf */ +extern int POKEYSND_sampbuf_last; /* last absolute time */ +extern int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +extern int POKEYSND_sampbuf_lastval; /* last volume */ +extern int POKEYSND_sampout; /* last out volume */ +extern int POKEYSND_samp_freq; +extern int POKEYSND_samp_consol_val; /* actual value of console sound */ +#endif /* VOL_ONLY_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +extern UBYTE *POKEYSND_process_buffer; +extern unsigned int POKEYSND_process_buffer_length; +extern unsigned int POKEYSND_process_buffer_fill; +extern void (*POKEYSND_GenerateSync)(unsigned int num_ticks); +int POKEYSND_UpdateProcessBuffer(void); +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef __cplusplus +} + +#endif +#endif /* POKEYSND_H_ */ diff --git a/MCUME_esp32/esp5200/main/rom.h b/MCUME_esp32/esp5200/main/rom.h new file mode 100644 index 0000000..ab0dd4c --- /dev/null +++ b/MCUME_esp32/esp5200/main/rom.h @@ -0,0 +1,131 @@ +// Atari 5200 ROM +const unsigned char BIOSData[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, + 0x0, 0x66, 0x66, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0xFF, 0x66, 0x66, 0xFF, 0x66, 0x0, + 0x18, 0x3E, 0x60, 0x3C, 0x6, 0x7C, 0x18, 0x0, 0x0, 0x66, 0x6C, 0x18, 0x30, 0x66, 0x46, 0x0, + 0x1C, 0x36, 0x1C, 0x38, 0x6F, 0x66, 0x3B, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xE, 0x1C, 0x18, 0x18, 0x1C, 0xE, 0x0, 0x0, 0x70, 0x38, 0x18, 0x18, 0x38, 0x70, 0x0, + 0x0, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x0, 0x0, 0x0, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x30, 0x0, 0x0, 0x0, 0x7E, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x6, 0xC, 0x18, 0x30, 0x60, 0x40, 0x0, + 0x0, 0x3C, 0x66, 0x6E, 0x76, 0x66, 0x3C, 0x0, 0x0, 0x18, 0x38, 0x18, 0x18, 0x18, 0x7E, 0x0, + 0x0, 0x3C, 0x66, 0xC, 0x18, 0x30, 0x7E, 0x0, 0x0, 0x7E, 0xC, 0x18, 0xC, 0x66, 0x3C, 0x0, + 0x0, 0xC, 0x1C, 0x3C, 0x6C, 0x7E, 0xC, 0x0, 0x0, 0x7E, 0x60, 0x7C, 0x6, 0x66, 0x3C, 0x0, + 0x0, 0x3C, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x0, 0x0, 0x7E, 0x6, 0xC, 0x18, 0x30, 0x30, 0x0, + 0x0, 0x3C, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x0, 0x0, 0x3C, 0x66, 0x3E, 0x6, 0xC, 0x38, 0x0, + 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x30, + 0x6, 0xC, 0x18, 0x30, 0x18, 0xC, 0x6, 0x0, 0x0, 0x0, 0x7E, 0x0, 0x0, 0x7E, 0x0, 0x0, + 0x60, 0x30, 0x18, 0xC, 0x18, 0x30, 0x60, 0x0, 0x0, 0x3C, 0x66, 0xC, 0x18, 0x0, 0x18, 0x0, + 0x0, 0x3C, 0x66, 0x6E, 0x6E, 0x60, 0x3E, 0x0, 0x0, 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x0, + 0x0, 0x7C, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x0, 0x0, 0x3C, 0x66, 0x60, 0x60, 0x66, 0x3C, 0x0, + 0x0, 0x78, 0x6C, 0x66, 0x66, 0x6C, 0x78, 0x0, 0x0, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x7E, 0x0, + 0x0, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x60, 0x0, 0x0, 0x3E, 0x60, 0x60, 0x6E, 0x66, 0x3E, 0x0, + 0x0, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x0, 0x0, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x0, + 0x0, 0x6, 0x6, 0x6, 0x6, 0x66, 0x3C, 0x0, 0x0, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0x0, + 0x0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x0, 0x0, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x0, + 0x0, 0x66, 0x76, 0x7E, 0x7E, 0x6E, 0x66, 0x0, 0x0, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x0, + 0x0, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x0, 0x0, 0x3C, 0x66, 0x66, 0x66, 0x6C, 0x36, 0x0, + 0x0, 0x7C, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x0, 0x0, 0x3C, 0x60, 0x3C, 0x6, 0x6, 0x3C, 0x0, + 0x0, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x0, + 0x0, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x0, 0x0, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x0, + 0x0, 0x66, 0x66, 0x3C, 0x3C, 0x66, 0x66, 0x0, 0x0, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x0, + 0x0, 0x7E, 0xC, 0x18, 0x30, 0x60, 0x7E, 0x0, 0x0, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x0, + 0x0, 0x40, 0x60, 0x30, 0x18, 0xC, 0x6, 0x0, 0x0, 0x78, 0x18, 0x18, 0x18, 0x18, 0x78, 0x0, + 0x0, 0x8, 0x1C, 0x36, 0x63, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x0, + 0x0, 0x36, 0x7F, 0x7F, 0x3E, 0x1C, 0x8, 0x0, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x0, 0x0, 0x0, + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0xF8, 0xF8, 0x18, 0x18, 0x18, + 0x3, 0x7, 0xE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0xE, 0x7, 0x3, + 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF, 0xF, 0xF, + 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xF, 0xF, 0xF, 0xF, 0x0, 0x0, 0x0, 0x0, + 0xF0, 0xF0, 0xF0, 0xF0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x0, 0x1C, 0x1C, 0x77, 0x77, 0x8, 0x1C, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x1F, 0x18, 0x18, 0x18, + 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, + 0x0, 0x0, 0x3C, 0x7E, 0x7E, 0x7E, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x0, 0x0, 0x0, 0x78, 0x60, 0x78, 0x60, 0x7E, 0x18, 0x1E, 0x0, + 0x0, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x0, + 0x0, 0x18, 0x30, 0x7E, 0x30, 0x18, 0x0, 0x0, 0x0, 0x18, 0xC, 0x7E, 0xC, 0x18, 0x0, 0x0, + 0x0, 0x18, 0x3C, 0x7E, 0x7E, 0x3C, 0x18, 0x0, 0x0, 0x0, 0x3C, 0x6, 0x3E, 0x66, 0x3E, 0x0, + 0x0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x0, 0x0, 0x0, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x0, + 0x0, 0x6, 0x6, 0x3E, 0x66, 0x66, 0x3E, 0x0, 0x0, 0x0, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x0, + 0x0, 0xE, 0x18, 0x3E, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x3E, 0x66, 0x66, 0x3E, 0x6, 0x7C, + 0x0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x0, 0x0, 0x18, 0x0, 0x38, 0x18, 0x18, 0x3C, 0x0, + 0x0, 0x6, 0x0, 0x6, 0x6, 0x6, 0x6, 0x3C, 0x0, 0x60, 0x60, 0x6C, 0x78, 0x6C, 0x66, 0x0, + 0x0, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x0, 0x0, 0x0, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0x0, + 0x0, 0x0, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x0, 0x0, 0x0, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x0, + 0x0, 0x0, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x0, 0x0, 0x3E, 0x66, 0x66, 0x3E, 0x6, 0x6, + 0x0, 0x0, 0x7C, 0x66, 0x60, 0x60, 0x60, 0x0, 0x0, 0x0, 0x3E, 0x60, 0x3C, 0x6, 0x7C, 0x0, + 0x0, 0x18, 0x7E, 0x18, 0x18, 0x18, 0xE, 0x0, 0x0, 0x0, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x0, + 0x0, 0x0, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x0, 0x0, 0x0, 0x63, 0x6B, 0x7F, 0x3E, 0x36, 0x0, + 0x0, 0x0, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x0, 0x0, 0x0, 0x66, 0x66, 0x66, 0x3E, 0xC, 0x78, + 0x0, 0x0, 0x7E, 0xC, 0x18, 0x30, 0x7E, 0x0, 0x0, 0x18, 0x3C, 0x7E, 0x7E, 0x18, 0x3C, 0x0, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x7E, 0x78, 0x7C, 0x6E, 0x66, 0x6, 0x0, + 0x8, 0x18, 0x38, 0x78, 0x38, 0x18, 0x8, 0x0, 0x10, 0x18, 0x1C, 0x1E, 0x1C, 0x18, 0x10, 0x0, + 0x6C, 0x0, 0x2, 0x48, 0xA9, 0x20, 0x2C, 0xE, 0xE8, 0xD0, 0xD, 0xA9, 0xDF, 0x8D, 0xE, 0xE8, + 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x10, 0x2, 0x10, 0x6E, 0x50, 0x79, 0xA9, 0x10, 0x2D, 0xE, + 0xE8, 0xD0, 0xD, 0xA9, 0xEF, 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x12, 0x2, + 0xA9, 0x8, 0x25, 0x0, 0xF0, 0x12, 0x2D, 0xE, 0xE8, 0xD0, 0xD, 0xA9, 0xF7, 0x8D, 0xE, 0xE8, + 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x14, 0x2, 0xAD, 0xE, 0xE8, 0x6A, 0xB0, 0xD, 0xA9, 0xFE, + 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x16, 0x2, 0x6A, 0xB0, 0xD, 0xA9, 0xFD, + 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x18, 0x2, 0x6A, 0xB0, 0xD, 0xA9, 0xFB, + 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x1A, 0x2, 0x8A, 0x48, 0xBA, 0xBD, 0x3, + 0x1, 0x29, 0x10, 0xF0, 0x2F, 0x6C, 0xE, 0x2, 0xA9, 0x7F, 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, + 0xE, 0xE8, 0x6C, 0xC, 0x2, 0xA9, 0xBF, 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, + 0x8, 0x2, 0x2C, 0xF, 0xD4, 0x8D, 0xF, 0xD4, 0x30, 0x5, 0x50, 0xB, 0x6C, 0x2, 0x2, 0x6C, + 0x6, 0x2, 0x68, 0xA8, 0x68, 0xAA, 0x68, 0x40, 0x48, 0x8A, 0x48, 0x98, 0x48, 0xE6, 0x2, 0xD0, + 0x4, 0xE6, 0x4, 0xE6, 0x1, 0xA5, 0x3, 0xD0, 0xE9, 0xA5, 0x6, 0x8D, 0x3, 0xD4, 0xA5, 0x5, + 0x8D, 0x2, 0xD4, 0xA5, 0x7, 0x8D, 0x0, 0xD4, 0xA4, 0x4, 0x10, 0x4, 0xA0, 0x80, 0x84, 0x4, + 0xA2, 0x8, 0xB5, 0x8, 0xC0, 0x80, 0x90, 0x4, 0x45, 0x1, 0x29, 0xF6, 0x9D, 0x12, 0xC0, 0xCA, + 0x10, 0xF0, 0xA2, 0x7, 0xBD, 0x0, 0xE8, 0x95, 0x11, 0xCA, 0x10, 0xF8, 0x8D, 0xB, 0xE8, 0x6C, + 0x4, 0x2, 0x8A, 0x48, 0x98, 0x48, 0xAD, 0x9, 0xE8, 0x4A, 0x29, 0xF, 0xAA, 0xBD, 0x13, 0xFD, + 0x6C, 0xA, 0x2, 0xFF, 0xB, 0x0, 0xA, 0xE, 0x9, 0x8, 0x7, 0xD, 0x6, 0x5, 0x4, 0xC, + 0x3, 0x2, 0x1, 0x78, 0xD8, 0xA2, 0xFF, 0x9A, 0xAD, 0xFD, 0xBF, 0xC9, 0xFF, 0xD0, 0x3, 0x6C, + 0xFE, 0xBF, 0xE8, 0x8A, 0x9D, 0x0, 0xE8, 0x9D, 0x0, 0xC0, 0x9D, 0x0, 0xD4, 0x95, 0x0, 0xE8, + 0xD0, 0xF2, 0xA9, 0xF8, 0x8D, 0x9, 0xD4, 0xA2, 0xB, 0xBD, 0x95, 0xFE, 0x9D, 0x0, 0x2, 0xCA, + 0x10, 0xF7, 0xA9, 0x3C, 0x85, 0x12, 0xA9, 0x0, 0x85, 0x11, 0xA2, 0xC, 0xA8, 0x91, 0x11, 0x88, + 0xD0, 0xFB, 0xC6, 0x12, 0xCA, 0x10, 0xF6, 0xA9, 0xD, 0xA2, 0x4D, 0x9D, 0x7, 0x20, 0xCA, 0x10, + 0xFA, 0xA2, 0x6, 0xBD, 0xC8, 0xFE, 0x9D, 0x0, 0x20, 0xCA, 0x10, 0xF7, 0xA2, 0x4, 0xBD, 0xCF, + 0xFE, 0x9D, 0x55, 0x20, 0xCA, 0x10, 0xF7, 0xA9, 0x0, 0x85, 0x5, 0xA9, 0x20, 0x85, 0x6, 0xA9, + 0x22, 0x85, 0x7, 0xA9, 0x30, 0xA8, 0xA9, 0x28, 0xA2, 0x36, 0x9D, 0x0, 0x11, 0x48, 0x98, 0x9D, + 0x0, 0x10, 0x68, 0xCA, 0x30, 0x8, 0x18, 0x69, 0x28, 0x90, 0xEF, 0xC8, 0xB0, 0xEC, 0xA2, 0x13, + 0x86, 0x17, 0xE8, 0x86, 0x18, 0xA9, 0x20, 0x85, 0x13, 0xA9, 0x1, 0x85, 0x15, 0xA9, 0x40, 0x85, + 0x16, 0xC6, 0x13, 0x30, 0x3E, 0xA6, 0x13, 0xBD, 0xE8, 0xFE, 0x85, 0x14, 0xBD, 0x8, 0xFF, 0xAA, + 0xE4, 0x14, 0xF0, 0x1D, 0xBD, 0x0, 0x11, 0x85, 0x11, 0xBD, 0x0, 0x10, 0x85, 0x12, 0xA4, 0x17, + 0xA5, 0x15, 0x11, 0x11, 0x91, 0x11, 0xA4, 0x18, 0xA5, 0x16, 0x11, 0x11, 0x91, 0x11, 0xE8, 0xD0, + 0xDF, 0x6, 0x15, 0x6, 0x15, 0xB0, 0x6, 0x46, 0x16, 0x46, 0x16, 0x90, 0xC4, 0xC6, 0x17, 0xE6, + 0x18, 0xB0, 0xB6, 0xA9, 0x11, 0x85, 0x11, 0xA9, 0x39, 0x85, 0x12, 0xA9, 0x13, 0x85, 0x13, 0xA9, + 0x0, 0x85, 0x15, 0xA9, 0x1, 0xA0, 0xA, 0x85, 0x18, 0xA6, 0x15, 0xE6, 0x15, 0xBD, 0x28, 0xFF, + 0xF0, 0x2A, 0xAA, 0x29, 0xF, 0x85, 0x16, 0x8A, 0x4A, 0x4A, 0x4A, 0x4A, 0xAA, 0xA5, 0x18, 0xA, + 0xA, 0x90, 0x5, 0x91, 0x11, 0xC8, 0xA9, 0x1, 0xCA, 0x10, 0xF4, 0xA6, 0x16, 0x38, 0x2A, 0xA, + 0x90, 0x5, 0x91, 0x11, 0xC8, 0xA9, 0x1, 0xCA, 0x10, 0xF3, 0x30, 0xCB, 0xA5, 0x18, 0xA, 0xA, + 0x90, 0xFC, 0x91, 0x11, 0xA5, 0x11, 0x18, 0x69, 0x28, 0x85, 0x11, 0x90, 0x2, 0xE6, 0x12, 0xC6, + 0x13, 0x10, 0xB0, 0xA2, 0x13, 0xBD, 0xD4, 0xFE, 0x9D, 0x94, 0x3C, 0xBD, 0xE8, 0xBF, 0x9D, 0x80, + 0x3C, 0xCA, 0x10, 0xF1, 0xAD, 0xFC, 0xBF, 0x8D, 0xA0, 0x3C, 0xAD, 0xFD, 0xBF, 0x8D, 0xA1, 0x3C, + 0xA9, 0xF, 0x85, 0xD, 0xA9, 0xC0, 0x8D, 0xE, 0xD4, 0xA9, 0x2, 0x8D, 0xF, 0xE8, 0xE4, 0x2, + 0xD0, 0xFC, 0x6C, 0xFE, 0xBF, 0x3, 0xFC, 0xB8, 0xFC, 0xB2, 0xFC, 0xA1, 0xFE, 0x2, 0xFD, 0xB2, + 0xFC, 0x48, 0x8A, 0x48, 0x98, 0x48, 0xA6, 0x8, 0xA0, 0x72, 0xE0, 0x10, 0xB0, 0x2, 0xA2, 0xFE, + 0x8E, 0xA, 0xD4, 0x8E, 0x16, 0xC0, 0xCA, 0xCA, 0x88, 0xD0, 0xEF, 0xE6, 0x8, 0xA0, 0x10, 0xC4, + 0x8, 0x90, 0x2, 0x84, 0x8, 0x4C, 0xB2, 0xFC, 0x70, 0x70, 0x70, 0x4D, 0x0, 0x30, 0x8D, 0x7, + 0x7, 0x41, 0x0, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x0, 0x51, 0x59, + 0x58, 0x51, 0x0, 0x61, 0x74, 0x61, 0x72, 0x69, 0x8, 0x8, 0x8, 0x9, 0x9, 0x9, 0xA, 0xA, + 0xB, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x14, 0x16, 0x19, 0x1C, 0x1F, 0x36, 0x36, + 0x36, 0x36, 0x0, 0x0, 0x36, 0x36, 0x36, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xE, 0x10, + 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x4E, 0x42, 0x97, 0x52, 0x0, 0x84, 0x3E, + 0x34, 0x79, 0x42, 0x0, 0x76, 0x2E, 0x26, 0x5B, 0x32, 0x0, 0x76, 0x82, 0x86, 0x53, 0x43, 0x22, + 0x0, 0x63, 0x3, 0x72, 0x73, 0x3, 0x42, 0x63, 0x12, 0x0, 0x62, 0x22, 0x72, 0x72, 0x22, 0x42, + 0x72, 0x12, 0x0, 0x62, 0x22, 0x72, 0x72, 0x22, 0x42, 0x72, 0x12, 0x0, 0x52, 0x42, 0x62, 0x62, + 0x42, 0x32, 0x62, 0x22, 0x0, 0x52, 0x42, 0x62, 0x62, 0x42, 0x32, 0x52, 0x32, 0x0, 0x52, 0x42, + 0x62, 0x62, 0x42, 0x32, 0x6, 0x42, 0x0, 0x43, 0x43, 0x52, 0x53, 0x43, 0x22, 0x5, 0x52, 0x0, + 0x42, 0x62, 0x52, 0x52, 0x62, 0x22, 0x5, 0x52, 0x0, 0x42, 0x62, 0x52, 0x52, 0x62, 0x22, 0x42, + 0x42, 0x0, 0x3E, 0x42, 0x4E, 0x12, 0x42, 0x42, 0x0, 0x3E, 0x42, 0x4E, 0x12, 0x52, 0x32, 0x0, + 0x3E, 0x42, 0x4E, 0x12, 0x52, 0x32, 0x0, 0x23, 0x83, 0x32, 0x33, 0x83, 0x2, 0x62, 0x22, 0x0, + 0x22, 0xA2, 0x32, 0x32, 0xA2, 0x2, 0x62, 0x22, 0x0, 0x22, 0xA2, 0x32, 0x32, 0xA2, 0x2, 0x72, + 0x12, 0x0, 0x22, 0xA2, 0x32, 0x32, 0xA2, 0x2, 0x72, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x52, 0x4A, 0x5A, 0x20, 0x31, 0x39, 0x38, 0x32, 0x0, 0xA2, 0xFC, 0x23, 0xFD, 0x0, 0xFC +}; diff --git a/MCUME_esp32/esp5200/sdkconfig b/MCUME_esp32/esp5200/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/esp5200/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp5200/sdkconfig.old b/MCUME_esp32/esp5200/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/esp5200/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp64/.DS_Store b/MCUME_esp32/esp64/.DS_Store new file mode 100644 index 0000000..0787fb7 Binary files /dev/null and b/MCUME_esp32/esp64/.DS_Store differ diff --git a/MCUME_esp32/esp64/Makefile b/MCUME_esp32/esp64/Makefile new file mode 100644 index 0000000..9d909c0 --- /dev/null +++ b/MCUME_esp32/esp64/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := esp64 + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/esp64/components/.DS_Store b/MCUME_esp32/esp64/components/.DS_Store new file mode 100644 index 0000000..6cc77c1 Binary files /dev/null and b/MCUME_esp32/esp64/components/.DS_Store differ diff --git a/MCUME_esp32/esp64/components/Audio/.DS_Store b/MCUME_esp32/esp64/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp64/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/esp64/components/Audio/component.mk b/MCUME_esp32/esp64/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp64/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp64/components/Audio/esp32-hal-dac.c b/MCUME_esp32/esp64/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/esp64/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/esp64/components/Audio/esp32-hal-dac.h b/MCUME_esp32/esp64/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/esp64/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/esp64/components/Audio/esp32-hal-timer.c b/MCUME_esp32/esp64/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/esp64/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/esp64/components/Audio/esp32-hal-timer.h b/MCUME_esp32/esp64/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/esp64/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/esp64/components/Wire/.DS_Store b/MCUME_esp32/esp64/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp64/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/esp64/components/Wire/Wire.cpp b/MCUME_esp32/esp64/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/esp64/components/Wire/Wire.h b/MCUME_esp32/esp64/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/esp64/components/Wire/component.mk b/MCUME_esp32/esp64/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp64/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/esp64/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/esp64/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/esp64/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/esp64/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/esp64/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/esp64/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/esp64/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/esp64/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/esp64/flashapp.sh b/MCUME_esp32/esp64/flashapp.sh new file mode 100755 index 0000000..d7fe8ee --- /dev/null +++ b/MCUME_esp32/esp64/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x1D0000 ../esp64/build/esp64.bin diff --git a/MCUME_esp32/esp64/main/.DS_Store b/MCUME_esp32/esp64/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp64/main/.DS_Store differ diff --git a/MCUME_esp32/esp64/main/AudioPlaySystem.cpp b/MCUME_esp32/esp64/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..c3f0697 --- /dev/null +++ b/MCUME_esp32/esp64/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/esp64/main/AudioPlaySystem.h b/MCUME_esp32/esp64/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/esp64/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/esp64/main/IntervalTimer.h b/MCUME_esp32/esp64/main/IntervalTimer.h new file mode 100755 index 0000000..42359dd --- /dev/null +++ b/MCUME_esp32/esp64/main/IntervalTimer.h @@ -0,0 +1,150 @@ +/* Teensyduino Core Library + * http://www.pjrc.com/teensy/ + * Copyright (c) 2017 PJRC.COM, LLC. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation 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 furnished to do so, subject to + * the following conditions: + * + * 1. The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * 2. If the Software is incorporated into a build system that allows + * selection among a list of target devices, then similar target + * devices manufactured by PJRC.COM must be included in the list of + * target devices and selectable in the same manner. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR 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. + */ + + /* + + Added : + + - void setIntervalFast(float microseconds) + - bool setInterval(float microseconds) + + F.B. + + */ + +#ifndef __INTERVALTIMERX_H__ +#define __INTERVALTIMERX_H__ + +//#include "kinetis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +class MyIntervalTimer { +private: + static const uint32_t MAX_PERIOD = UINT32_MAX / (F_BUS / 1000000.0); +public: + MyIntervalTimer() { + //channel = NULL; + nvic_priority = 128; + } + ~MyIntervalTimer() { + end(); + } + bool begin(void (*funct)(), unsigned int microseconds) { + if (microseconds == 0 || microseconds > MAX_PERIOD) return false; + uint32_t cycles = (F_BUS / 1000000) * microseconds - 1; + if (cycles < 36) return false; + return beginCycles(funct, cycles); + } + bool begin(void (*funct)(), int microseconds) { + if (microseconds < 0) return false; + return begin(funct, (unsigned int)microseconds); + } + bool begin(void (*funct)(), unsigned long microseconds) { + return begin(funct, (unsigned int)microseconds); + } + bool begin(void (*funct)(), long microseconds) { + return begin(funct, (int)microseconds); + } + bool begin(void (*funct)(), float microseconds) { + if (microseconds <= 0 || microseconds > MAX_PERIOD) return false; + uint32_t cycles = (float)(F_BUS / 1000000) * microseconds - 0.5; + if (cycles < 36) return false; + return beginCycles(funct, cycles); + } + bool begin(void (*funct)(), double microseconds) { + return begin(funct, (float)microseconds); + } + + void setIntervalFast(float microseconds) { /*NEW*/ + uint32_t cycles = (float)(F_BUS / 1000000) * microseconds - 0.5; + //channel->LDVAL = cycles; + } + bool setInterval(float microseconds) { /*NEW*/ + //if (!channel) return false; + if (microseconds <= 0 || microseconds > MAX_PERIOD) return false; + setIntervalFast(microseconds); + return true; + } + + void end() {}; + void priority(uint8_t n) { + nvic_priority = n; + #if defined(KINETISK) + /* + if (channel) { + int index = channel - KINETISK_PIT_CHANNELS; + NVIC_SET_PRIORITY(IRQ_PIT_CH0 + index, nvic_priority); + } + */ + #elif defined(KINETISL) + /* + if (channel) { + int index = channel - KINETISK_PIT_CHANNELS; + nvic_priorites[index] = nvic_priority; + if (nvic_priorites[0] <= nvic_priorites[1]) { + NVIC_SET_PRIORITY(IRQ_PIT, nvic_priorites[0]); + } else { + NVIC_SET_PRIORITY(IRQ_PIT, nvic_priorites[1]); + } + } + */ + #endif + } + //operator IRQ_NUMBER_t() { + /* + if (channel) { + #if defined(KINETISK) + int index = channel - KINETISK_PIT_CHANNELS; + return (IRQ_NUMBER_t)(IRQ_PIT_CH0 + index); + #elif defined(KINETISL) + return IRQ_PIT; + #endif + } + */ + //return (IRQ_NUMBER_t)NVIC_NUM_INTERRUPTS; + //} +private: + //KINETISK_PIT_CHANNEL_t *channel; + uint8_t nvic_priority; + #if defined(KINETISL) + static uint8_t nvic_priorites[2]; + #endif + bool beginCycles(void (*funct)(), uint32_t cycles); + +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MCUME_esp32/esp64/main/Teensy64.h b/MCUME_esp32/esp64/main/Teensy64.h new file mode 100755 index 0000000..5485453 --- /dev/null +++ b/MCUME_esp32/esp64/main/Teensy64.h @@ -0,0 +1,120 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ +#ifndef Teensy64_h_ +#define Teensy64_h_ + +#include +#include +#include + + +#define F_CPU 240000000.0 +#define F_BUS 240000000.0 + +#include "settings.h" + +#define VERSION "09" +#define NTSC (!PAL) +#define USBHOST (!PS2KEYBOARD) + +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "driver/spi_master.h" // for SPI_SWAP_DATA_TX + +inline unsigned long millis() {return (esp_timer_get_time()/1000);} + +#include "ili9341_t3dma.h" +extern ILI9341_t3DMA tft; + +extern "C" { + #include "emuapi.h" +} + +void initMachine(); +void resetMachine() __attribute__ ((noreturn)); +void resetExternal(); +unsigned loadFile(const char *filename); + + +#if PAL == 1 +#define CRYSTAL 17734475.0f +#define CLOCKSPEED ( CRYSTAL / 18.0f) // 985248,61 Hz +#define CYCLESPERRASTERLINE 63 +#define LINECNT 312 //Rasterlines +#define VBLANK_FIRST 300 +#define VBLANK_LAST 15 + +#else +#define CRYSTAL 14318180.0f +#define CLOCKSPEED ( CRYSTAL / 14.0f) // 1022727,14 Hz +#define CYCLESPERRASTERLINE 64 +#define LINECNT 263 //Rasterlines +#define VBLANK_FIRST 13 +#define VBLANK_LAST 40 +#endif + +#define LINEFREQ (CLOCKSPEED / CYCLESPERRASTERLINE) //Hz +#define REFRESHRATE (LINEFREQ / LINECNT) //Hz +#define LINETIMER_DEFAULT_FREQ (1000000.0f/LINEFREQ) + + +#define MCU_C64_RATIO ((float)F_CPU / CLOCKSPEED) //MCU Cycles per C64 Cycle +#define US_C64_CYCLE (1000000.0f / CLOCKSPEED) // Duration (µs) of a C64 Cycle + +#define AUDIOSAMPLERATE (LINEFREQ * 2)// (~32kHz) + +#define ISR_PRIORITY_RASTERLINE 255 + + + +#if 0 +#define WRITE_ATN_CLK_DATA(value) { \ + digitalWriteFast(PIN_SERIAL_ATN, (~value & 0x08));\//PTA13 IEC ATN 3 +digitalWriteFast(PIN_SERIAL_CLK, (~value & 0x10)); \ //PTA14 IEC CLK 4 +digitalWriteFast(PIN_SERIAL_DATA, (~value & 0x20)); \ //PTA15 IEC DATA 5 +} +#define READ_CLK_DATA() \ + ((digitalReadFast(PIN_SERIAL_CLK) << 6) | \ + (digitalReadFast(PIN_SERIAL_DATA) << 7)) + +#else +#define WRITE_ATN_CLK_DATA(value) {} +#define READ_CLK_DATA() (0) +#endif + +#include "output_dac.h" +#include "cpu.h" +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/bmpjoy.h b/MCUME_esp32/esp64/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/esp64/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/esp64/main/bmpvbar.h b/MCUME_esp32/esp64/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/esp64/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/esp64/main/c64.cpp b/MCUME_esp32/esp64/main/c64.cpp new file mode 100644 index 0000000..e772cb8 --- /dev/null +++ b/MCUME_esp32/esp64/main/c64.cpp @@ -0,0 +1,288 @@ + +extern "C" { +#include "emuapi.h" +} +#include "Teensy64.h" +#include + +#ifdef HAS_SND +#include "reSID.h" +AudioPlaySID playSID; +#endif + +using namespace std; + +/* IRAM_ATTR */ +static void oneRasterLine(void) { + static unsigned short lc = 1; + + while (true) { + + cpu.lineStartTime = get_ccount(); + cpu.lineCycles = cpu.lineCyclesAbs = 0; + + if (!cpu.exactTiming) { + vic_do(); + } else { + vic_do_simple(); + } + + if (--lc == 0) { + lc = LINEFREQ / 10; // 10Hz + cia1_checkRTCAlarm(); + cia2_checkRTCAlarm(); + } + + //Switch "ExactTiming" Mode off after a while: + if (!cpu.exactTiming) break; + if (get_ccount() - cpu.exactTimingStartTime >= EXACTTIMINGDURATION * (F_CPU / 1000)) { + cpu_disableExactTiming(); + break; + } + }; + +} + +const uint32_t ascii2scan[] = { + //0 1 2 3 4 5 6 7 8 9 A B C D E F + 0,0,0,0,0,0,0,0,0,0,0,0,0,0x28,0,0, // return + // 17:down 29:right + 0x00,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4f,0x00,0x00, + //sp ! " # $ % & ' ( ) * + , - . / + 0x2c,0x201e,0x201f,0x2020,0x2021,0x2022,0x2023,0x2024,0x2025,0x2026,0x55,0x57,0x36,0x56,0x37,0x54, + //0 1 2 3 4 5 6 7 8 9 : ; < = > ? + 0x27,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x33,0x34,0x2036,0x32,0x2037,0x0238, + //@ A B C D E F G H I J K L M N O + 47,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12, + //P Q R S T U V W X Y Z [ \ ] ^ _ + 0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x2026,0x31,0x2027,0x00,0x00, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // ' a b c d e f g h i j k l m n o + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x49,0, // p q r s t u v w x y z { | } ~ DEL + //up left arr 133:f1 f2 f3 f4 f5 f6 f7 f8 + 75,78,0x00,0x00,0x00,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x00,0x00,0x00, // 128-143 + // 145:up 157:left + 0x00,0x2051,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x204f,0x00,0x00 // 144-159 +}; + +// we also use USB matrix for the moment +static const uint8_t keymatrixmap[2][256] = { + //Rows: + // 0 1 2 3 4 5 6 7 8 9 A B C D E F + { 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x04, 0x04, 0x02, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, //0x00 + 0x10, 0x10, 0x10, 0x20, 0x80, 0x04, 0x02, 0x04, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x80, 0x80, //0x10 + 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x01, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x20, //0x20 + 0x00, 0x00, 0x40, 0x20, 0x40, 0x00, 0x20, 0x20, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, //0x30 + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x80, 0x01, //0x40 + 0x00, 0x01, 0x00, 0x00, 0x40, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x70 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x90 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xA0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xB0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xC0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xD0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xE0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x02 + }, //0xF0 + //Columns: + // 0 1 2 3 4 5 6 7 8 9 A B C D E F + { 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x10, 0x04, 0x40, 0x20, 0x04, 0x20, 0x02, 0x04, 0x20, 0x04, //0x00 + 0x10, 0x80, 0x40, 0x02, 0x40, 0x02, 0x20, 0x40, 0x40, 0x80, 0x02, 0x80, 0x02, 0x10, 0x01, 0x08, //0x10 + 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x02, 0x80, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40, //0x20 + 0x00, 0x00, 0x20, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, //0x30 + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x40, 0x00, 0x00, 0x02, 0x04, //0x40 + 0x00, 0x80, 0x00, 0x00, 0x80, 0x02, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x70 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x90 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xA0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xB0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xC0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xD0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xE0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x10, 0x80 + } +}; //0xF0 + +struct { + union { + uint32_t kv; + struct { + uint8_t ke, //Extratasten SHIFT, STRG, ALT... + kdummy, + k, //Erste gedrückte Taste + k2; //Zweite gedrückte Taste + }; + }; + uint32_t lastkv; + uint8_t shiftLock; +} kbdData = {0, 0, 0}; + + +static bool setKey(uint32_t k) { + kbdData.kv = (k << 16); + kbdData.ke = kbdData.k2; + kbdData.k2 = 0; + vTaskDelay(20 / portTICK_PERIOD_MS); + kbdData.kv = 0; + vTaskDelay(20 / portTICK_PERIOD_MS); + return true; +} + +static void pushStringToTextEntry(char * text) { + char c; + while ((c = *text++)) { + if (!setKey(ascii2scan[c])) { + break; + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } +} + + +uint8_t cia1PORTA(void) { + + uint8_t v; + + v = ~cpu.cia1.R[0x02] | (cpu.cia1.R[0x00] & cpu.cia1.R[0x02]); + int keys = emu_ReadKeys(); + if (!cpu.swapJoysticks) { + if (keys & MASK_JOY2_BTN) v &= 0xEF; + if (keys & MASK_JOY2_UP) v &= 0xFE; + if (keys & MASK_JOY2_DOWN) v &= 0xFD; + if (keys & MASK_JOY2_RIGHT) v &= 0xFB; + if (keys & MASK_JOY2_LEFT) v &= 0xF7; + } else { + if (keys & MASK_JOY1_BTN) v &= 0xEF; + if (keys & MASK_JOY1_UP) v &= 0xFE; + if (keys & MASK_JOY1_DOWN) v &= 0xFD; + if (keys & MASK_JOY1_RIGHT) v &= 0xFB; + if (keys & MASK_JOY1_LEFT) v &= 0xF7; + } + + + if (!kbdData.kv) return v; //Keine Taste gedrückt + + uint8_t filter = ~cpu.cia1.R[0x01] & cpu.cia1.R[0x03]; + + if (kbdData.k) { + if ( keymatrixmap[1][kbdData.k] & filter) v &= ~keymatrixmap[0][kbdData.k]; + } + + if (kbdData.ke) { + if (kbdData.ke & 0x02) { //Shift-links + if ( keymatrixmap[1][0xff] & filter) v &= ~keymatrixmap[0][0xff]; + } + if (kbdData.ke & 0x20) { //Shift-rechts + if ( keymatrixmap[1][0xfe] & filter) v &= ~keymatrixmap[0][0xfe]; + } + if (kbdData.ke & 0x11) { //Control + if ( keymatrixmap[1][0xfd] & filter) v &= ~keymatrixmap[0][0xfd]; + } + if (kbdData.ke & 0x88) { //Windows (=> Commodore) + if ( keymatrixmap[1][0xfc] & filter) v &= ~keymatrixmap[0][0xfc]; + } + } + + return v; + +} + + +uint8_t cia1PORTB(void) { + + uint8_t v; + + v = ~cpu.cia1.R[0x03] | (cpu.cia1.R[0x00] & cpu.cia1.R[0x02]) ; + + int keys = emu_ReadKeys(); + if (!cpu.swapJoysticks) { + if (keys & MASK_JOY1_BTN) v &= 0xEF; + if (keys & MASK_JOY1_UP) v &= 0xFE; + if (keys & MASK_JOY1_DOWN) v &= 0xFD; + if (keys & MASK_JOY1_RIGHT) v &= 0xFB; + if (keys & MASK_JOY1_LEFT) v &= 0xF7; + } else { + if (keys & MASK_JOY2_BTN) v &= 0xEF; + if (keys & MASK_JOY2_UP) v &= 0xFE; + if (keys & MASK_JOY2_DOWN) v &= 0xFD; + if (keys & MASK_JOY2_RIGHT) v &= 0xFB; + if (keys & MASK_JOY2_LEFT) v &= 0xF7; + } + + if (!kbdData.kv) return v; //Keine Taste gedrückt + + uint8_t filter = ~cpu.cia1.R[0x00] & cpu.cia1.R[0x02]; + + if (kbdData.k) { + if ( keymatrixmap[0][kbdData.k] & filter) v &= ~keymatrixmap[1][kbdData.k]; + } + + if (kbdData.ke) { + if (kbdData.ke & 0x02) { //Shift-links + if ( keymatrixmap[0][0xff] & filter) v &= ~keymatrixmap[1][0xff]; + } + if (kbdData.ke & 0x20) { //Shift-rechts + if ( keymatrixmap[0][0xfe] & filter) v &= ~keymatrixmap[1][0xfe]; + } + if (kbdData.ke & 0x11) { //Control + if ( keymatrixmap[0][0xfd] & filter) v &= ~keymatrixmap[1][0xfd]; + } + if (kbdData.ke & 0x88) { //Windows (=> Commodore) + if ( keymatrixmap[0][0xfc] & filter) v &= ~keymatrixmap[1][0xfc]; + } + } + + return v; +} + + +void c64_Init(void) +{ + disableEventResponder(); + resetPLA(); + resetCia1(); + resetCia2(); + resetVic(); + cpu_reset(); +} + + +void c64_Step(void) +{ + oneRasterLine(); +} + +void c64_Start(char * filename) +{ +} + +static bool res=false; +void c64_Input(int bClick) { + + int hk = emu_ReadI2CKeyboard(); + if ( (hk != 0) && (res == false) ) { + setKey(ascii2scan[hk]); + res = true; + } else if (hk == 0){ + res = false; + } + + if (bClick & MASK_KEY_USER1) { + pushStringToTextEntry("LOAD\""); + pushStringToTextEntry("\""); + setKey(ascii2scan[13]); + vTaskDelay(2000 / portTICK_PERIOD_MS); + pushStringToTextEntry("RUN"); + setKey(ascii2scan[13]); + } +} + +#ifdef HAS_SND +void SND_Process( void * stream, int len ) +{ + playSID.update(stream, len); +} +#endif diff --git a/MCUME_esp32/esp64/main/c64.h b/MCUME_esp32/esp64/main/c64.h new file mode 100644 index 0000000..93525f4 --- /dev/null +++ b/MCUME_esp32/esp64/main/c64.h @@ -0,0 +1,5 @@ +extern void c64_Init(void); +extern void c64_Step(void); +extern void c64_Start(char * filename); +extern void c64_Input(int key); + diff --git a/MCUME_esp32/esp64/main/cia1.cpp b/MCUME_esp32/esp64/main/cia1.cpp new file mode 100755 index 0000000..9c4e749 --- /dev/null +++ b/MCUME_esp32/esp64/main/cia1.cpp @@ -0,0 +1,401 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include "cpu.h" +#include "cia1.h" +#include + + +#define DEBUGCIA1 0 +#define RTCDEBUG 0 + +#define decToBcd(x) ( ( (uint8_t) (x) / 10 * 16) | ((uint8_t) (x) % 10) ) +#define bcdToDec(x) ( ( (uint8_t) (x) / 16 * 10) | ((uint8_t) (x) % 16) ) +#define tod() (cpu.cia1.TODfrozen?cpu.cia1.TODfrozenMillis:(int)((millis() - cpu.cia1.TOD) % 86400000l)) + +void cia1_setAlarmTime() { + cpu.cia1.TODAlarm = (cpu.cia1.W[0x08] + cpu.cia1.W[0x09] * 10l + cpu.cia1.W[0x0A] * 600l + cpu.cia1.W[0x0B] * 36000l); +} + +void cia1_write(uint32_t address, uint8_t value) { + + address &= 0x0F; + + switch (address) { + case 0x04 : {cpu.cia1.W[address] = value;} ;break; //Timer A LO + case 0x05 : {cpu.cia1.W[address] = value; if ((cpu.cia1.R[0x0E] & 0x01) == 0) cpu.cia1.R[address]=value; };break;//Timer A HI + case 0x06 : {cpu.cia1.W[address] = value;} ;break; //Timer B LO + case 0x07 : {cpu.cia1.W[address] = value; if ((cpu.cia1.R[0x0F] & 0x01) == 0) cpu.cia1.R[address]=value; };break; //Timer B HI + + //RTC + case 0x08 : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + value &= 0x0f; + cpu.cia1.W[address] = value; + cia1_setAlarmTime(); + + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm TENTH:"); + Serial.println(value,HEX); + #endif + + } else { + value &= 0x0f; + cpu.cia1.TODstopped=0; + //Translate set Time to TOD: + cpu.cia1.TOD = (int)(millis() % 86400000l) - (value * 100 + cpu.cia1.R[0x09] * 1000l + cpu.cia1.R[0x0A] * 60000l + cpu.cia1.R[0x0B] * 3600000l); + #if RTCDEBUG + Serial.print("CIA 1 Set TENTH:"); + Serial.println(value,HEX); + Serial.print("CIA 1 TOD (millis):"); + Serial.println(cpu.cia1.TOD); + #endif + } + }; + break; //TOD-Tenth + case 0x09 : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + cpu.cia1.W[address] = bcdToDec(value); + cia1_setAlarmTime(); + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm SEC:"); + Serial.println(value,HEX); + #endif + + } else { + cpu.cia1.R[address] = bcdToDec(value); + #if RTCDEBUG + Serial.print("CIA 1 Set SEC:"); + Serial.println(value,HEX); + #endif + + } + }; + break; //TOD-Secs + case 0x0A : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + cpu.cia1.W[address] = bcdToDec(value); + cia1_setAlarmTime(); + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm MIN:"); + Serial.println(value,HEX); + #endif + + } else { + cpu.cia1.R[address] = bcdToDec(value); + #if RTCDEBUG + Serial.print("CIA 1 Set MIN:"); + Serial.println(value,HEX); + #endif + + } + };break; //TOD-Minutes + case 0x0B : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + cpu.cia1.W[address] = bcdToDec(value & 0x1f) + (value & 0x80?12:0); + cia1_setAlarmTime(); + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm HRS:"); + Serial.println(value,HEX); + #endif + + } else { + cpu.cia1.R[address] = bcdToDec(value & 0x1f) + (value & 0x80?12:0); + cpu.cia1.TODstopped=1; + #if RTCDEBUG + Serial.print("CIA 1 Set HRS:"); + Serial.println(value,HEX); + #endif + } + };break; //TOD-Hours + + case 0x0C : { + cpu.cia1.R[address] = value; + //Fake IRQ + cpu.cia1.R[0x0d] |= 8 | ((cpu.cia1.W[0x0d] & 0x08) << 4); + } + ;break; + case 0x0D : { + if ((value & 0x80)>0) { + cpu.cia1.W[address] |= value & 0x1f; + //ggf IRQ triggern + if (cpu.cia1.R[address] & cpu.cia1.W[address] & 0x1f) { + cpu.cia1.R[address] |= 0x80; + }; + } else { + cpu.cia1.W[address] &= ~value; + } + + }; + break; + case 0x0E : {cpu.cia1.R[address] = value & ~0x10; + if ((value & 0x10)>0) { cpu.cia1.R16[0x04/2] = cpu.cia1.W16[0x04/2]; } + }; + break; + case 0x0F : {cpu.cia1.R[address] = value & ~0x10; if ((value & 0x10)>0) { cpu.cia1.R16[0x06/2] = cpu.cia1.W16[0x06/2]; }};break; + default : {cpu.cia1.R[address] = value;/*if (address ==0) {Serial.print(value);Serial.print(" ");}*/ } break; + } + +#if DEBUGCIA1 + if (cpu.pc < 0xa000) Serial.printf("%x CIA1: W %x %x\n", cpu.pc, address, value); +#endif +} + +uint8_t cia1_read(uint32_t address) { +uint8_t ret; + + address &= 0x0F; + + switch (address) { + case 0x00: {ret = cia1PORTA();};break; + case 0x01: {ret = cia1PORTB();};break; + //RTC + case 0x08: { + ret = tod() % 1000 / 10; + cpu.cia1.TODfrozen = 0; + }; + + #if RTCDEBUG + Serial.print("CIA 1 Read TENTH:"); + Serial.println(ret,HEX); + #endif + + break; //Bit 0..3: Zehntelsekunden im BCD-Format ($0-$9) Bit 4..7: immer 0 + case 0x09: { + ret = decToBcd(tod() / 1000 % 60); + }; + //Serial.println( tod() / 100); + #if RTCDEBUG + Serial.print("CIA 1 Read SEC:"); + Serial.println(ret,HEX); + #endif + + break; //Bit 0..3: Einersekunden im BCD-Format ($0-$9) Bit 4..6: Zehnersekunden im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0A: { + ret = decToBcd(tod() / (1000 * 60) % 60); + }; + #if RTCDEBUG + Serial.print("CIA 1 Read MIN:"); + Serial.println(ret,HEX); + #endif + + break; //Bit 0..3: Einerminuten im BCD-Format( $0-$9) Bit 4..6: Zehnerminuten im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0B: { + //Bit 0..3: Einerstunden im BCD-Format ($0-$9) Bit 4: Zehnerstunden im BCD-Format ($0-$1) // Bit 7: Unterscheidung AM/PM, 0=AM, 1=PM + //Lesen aus diesem Register friert alle TOD-Register ein (TOD läuft aber weiter), bis Register 8 (TOD 10THS) gelesen wird. + cpu.cia1.TODfrozen = 0; + cpu.cia1.TODfrozenMillis = tod(); + cpu.cia1.TODfrozen = 1; + #if RTCDEBUG + Serial.print("CIA 1 FrozenMillis:"); + Serial.println(cpu.cia1.TODfrozenMillis); + #endif + ret = cpu.cia1.TODfrozenMillis / (1000 * 3600) % 24; + if (ret>=12) + ret = 128 | decToBcd(ret - 12); + else + ret = decToBcd(ret); + }; + #if RTCDEBUG + Serial.print("CIA 1 Read HRS:"); + Serial.println(ret,HEX); + #endif + + break; + + case 0x0D: {ret = cpu.cia1.R[address] & 0x9f; + cpu.cia1.R[address]=0; + }; + break; + + default: ret = cpu.cia1.R[address];break; + } + +#if DEBUGCIA1 + if (cpu.pc < 0xa000) Serial.printf("%x CIA1: R %x %x\n", cpu.pc, address, ret); +#endif +return ret; +} + +#if 0 +void cia1_clock(int clk) { + + uint32_t cnta, cntb, cra, crb; + + //Timer A + cra = cpu.cia1.R[0x0e]; + crb = cpu.cia1.R[0x0f]; + + if (( cra & 0x21) == 0x01) { + cnta = cpu.cia1.R[0x04] | cpu.cia1.R[0x05] << 8; + cnta -= clk; + if (cnta > 0xffff) { //Underflow + cnta = cpu.cia1.W[0x04] | cpu.cia1.W[0x05] << 8; // Reload Timer + if (cra & 0x08) { // One Shot + cpu.cia1.R[0x0e] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia1.R[0x0d] |= 1 /*| (cpu.cia1.W[0x1a] & 0x01) */| ((cpu.cia1.W[0x0d] & 0x01) << 7); + + if ((crb & 0x61)== 0x41) { //Timer B counts underflows of Timer A + cntb = cpu.cia1.R[0x06] | cpu.cia1.R[0x07] << 8; + cntb--; + if (cntb > 0xffff) { //underflow + cpu.cia1.R[0x04] = cnta; + cpu.cia1.R[0x05] = cnta >> 8; + goto underflow_b; + } + } + } + + cpu.cia1.R[0x04] = cnta; + cpu.cia1.R[0x05] = cnta >> 8; + + } + + //Timer B + if (( crb & 0x61) == 0x01) { + cntb = cpu.cia1.R[0x06] | cpu.cia1.R[0x07] << 8; + cntb -= clk; + if (cntb > 0xffff) { //underflow +underflow_b: + cntb = cpu.cia1.W[0x06] | cpu.cia1.W[0x07] << 8; // Reload Timer + if (crb & 0x08) { // One Shot + cpu.cia1.R[0x0f] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia1.R[0x0d] |= 2 /*| (cpu.cia1.W[0x1a] & 0x02) */ | ((cpu.cia1.W[0x0d] & 0x02) << 6); + + } + + cpu.cia1.R[0x06] = cntb; + cpu.cia1.R[0x07] = cntb >> 8; + + } +} +#else + +void cia1_clock(int clk) { + + int32_t t; + uint32_t regFEDC = cpu.cia1.R32[0x0C/4]; + + // TIMER A + //if (((cpu.cia1.R[0x0E] & 0x01)>0) && ((cpu.cia1.R[0x0E] & 0x20)==0)) { + + //if ((regFEDC & 0x210000)==0x10000) { + if (((regFEDC>>16) & 0x21)==0x1) { + t = cpu.cia1.R16[0x04/2]; + + if (clk > t) { //underflow ? + t = cpu.cia1.W16[0x04/2] - (clk - t); + regFEDC |= 0x00000100; + if ((regFEDC & 0x00080000)) regFEDC &= 0xfffeffff; //One-Shot + } + else { + t-=clk; + } + + cpu.cia1.R16[0x04/2] = t; + } + + + // TIMER B + //TODO : Prüfen ob das funktioniert + if ( regFEDC & 0x01000000 ) { + //uint16_t quelle = (cpu.cia1.R[0x0F]>>5) & 0x03; + if ((regFEDC & 0x60000000) == 0x40000000) { + + if (regFEDC & 0x00000100) //unterlauf TimerA? + clk = 1; + else + goto tend; + } + + t = cpu.cia1.R16[0x06/2]; + + if (clk > t) { //underflow ? + t = cpu.cia1.W16[0x06/2] - (clk - t); + regFEDC |= 0x00000200; + if ((regFEDC & 0x08000000)) regFEDC &= 0xfeffffff; + } else { + t -= clk; + } + cpu.cia1.R16[0x06/2] = t; //One-Shot + + } + +tend: + + + // INTERRUPT ? + if ( regFEDC & cpu.cia1.W32[0x0C/4] & 0x0f00 ) { + regFEDC |= 0x8000; + cpu.cia1.R32[0x0C/4]=regFEDC; + } + else cpu.cia1.R32[0x0C/4]=regFEDC; +} + +#endif + +void cia1_checkRTCAlarm() { // call @ 1/10 sec interval minimum + + if ((int)(millis() - cpu.cia1.TOD) % 86400000l/100 == cpu.cia1.TODAlarm) { + //Serial.print("CIA1 RTC interrupt"); + cpu.cia1.R[13] |= 0x4 | ((cpu.cia1.W[13] & 4) << 5); + } +} + +void cia1FLAG(void) { + //Serial.println("CIA1 FLAG interrupt"); + cpu.cia1.R[13] |= 0x10 | ((cpu.cia1.W[13] & 0x10) << 3); +} + +void resetCia1(void) { + memset((uint8_t*)&cpu.cia1.R, 0, sizeof(cpu.cia1.R)); + cpu.cia1.W[0x04] = cpu.cia1.R[0x04] = 0xff; + cpu.cia1.W[0x05] = cpu.cia1.R[0x05] = 0xff; + cpu.cia1.W[0x06] = cpu.cia1.R[0x06] = 0xff; + cpu.cia1.W[0x07] = cpu.cia1.R[0x07] = 0xff; + + //FLAG pin CIA1 - Serial SRQ (input only) + //pinMode(PIN_SERIAL_SRQ, OUTPUT_OPENDRAIN); + //digitalWriteFast(PIN_SERIAL_SRQ, 1); + //attachInterrupt(digitalPinToInterrupt(PIN_SERIAL_SRQ), cia1FLAG, FALLING); +} + + diff --git a/MCUME_esp32/esp64/main/cia1.h b/MCUME_esp32/esp64/main/cia1.h new file mode 100755 index 0000000..ec69047 --- /dev/null +++ b/MCUME_esp32/esp64/main/cia1.h @@ -0,0 +1,33 @@ +#ifndef Teensy64_cia1_h_ +#define Teensy64_cia1_h_ + +struct tcia { + union { + uint8_t R[0x10]; + uint16_t R16[0x10/2]; + uint32_t R32[0x10/4]; + }; + union { + uint8_t W[0x10]; + uint16_t W16[0x10/2]; + uint32_t W32[0x10/4]; + }; + int32_t TOD; + int32_t TODfrozenMillis; + int32_t TODAlarm; + uint8_t TODstopped; + uint8_t TODfrozen; +}; + + +void cia1_clock(int clk) __attribute__ ((hot)); +void cia1_checkRTCAlarm() __attribute__ ((hot)); +void cia1_write(uint32_t address, uint8_t value) __attribute__ ((hot)); +uint8_t cia1_read(uint32_t address) __attribute__ ((hot)); + +void resetCia1(void); + + + + +#endif diff --git a/MCUME_esp32/esp64/main/cia2.cpp b/MCUME_esp32/esp64/main/cia2.cpp new file mode 100755 index 0000000..db71d7d --- /dev/null +++ b/MCUME_esp32/esp64/main/cia2.cpp @@ -0,0 +1,452 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include "cpu.h" +#include "cia2.h" +#include + +#define DEBUGCIA2 0 +#define RTCDEBUG 0 + +#define decToBcd(x) ( ( (uint8_t) (x) / 10 * 16) | ((uint8_t) (x) % 10) ) +#define bcdToDec(x) ( ( (uint8_t) (x) / 16 * 10) | ((uint8_t) (x) % 16) ) +#define tod() (cpu.cia2.TODfrozen?cpu.cia2.TODfrozenMillis:(int)((millis() - cpu.cia2.TOD) % 86400000l)) + +void cia2_setAlarmTime() { + cpu.cia2.TODAlarm = (cpu.cia2.W[0x08] + cpu.cia2.W[0x09] * 10l + cpu.cia2.W[0x0A] * 600l + cpu.cia2.W[0x0B] * 36000l); +} + +void cia2_write(uint32_t address, uint8_t value) { + + address &= 0x0F; + + switch (address) { + + case 0x00 : { + if ((~value & 0x38)) { + cpu_setExactTiming(); + } + + WRITE_ATN_CLK_DATA(value); + + + cpu.vic.bank = ((~value) & 0x03) * 16384; + vic_adrchange(); + cpu.cia2.R[address] = value; + } + break; + + case 0x01 : + break;//Data PORTB + + case 0x04 : { + cpu.cia2.W[address] = value; + } + break; //Timer A LO + case 0x05 : { + cpu.cia2.W[address] = value; + if ((cpu.cia2.R[0x0E] & 0x01) == 0) cpu.cia2.R[address] = value; + } + break; //Timer A HI + case 0x06 : { + cpu.cia2.W[address] = value; + } + break; //Timer B LO + case 0x07 : { + cpu.cia2.W[address] = value; + if ((cpu.cia2.R[0x0F] & 0x01) == 0) cpu.cia2.R[address] = value; + } + break; //Timer B HI + + //RTC + case 0x08 : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + value &= 0x0f; + cpu.cia2.W[address] = value; + cia2_setAlarmTime(); + +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm TENTH:"); + Serial.println(value, HEX); +#endif + + } else { + value &= 0x0f; + cpu.cia2.TODstopped = 0; + //Translate set Time to TOD: + cpu.cia2.TOD = (int)(millis() % 86400000l) - + (value * 100 + cpu.cia2.R[0x09] * 1000l + cpu.cia2.R[0x0A] * 60000l + cpu.cia2.R[0x0B] * 3600000l); +#if RTCDEBUG + Serial.print("CIA 2 Set TENTH:"); + Serial.println(value, HEX); + Serial.print("CIA 2 TOD (millis):"); + Serial.println(cpu.cia2.TOD); +#endif + } + } + break; //TOD-Tenth + case 0x09 : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + cpu.cia2.W[address] = bcdToDec(value); + cia2_setAlarmTime(); +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm SEC:"); + Serial.println(value, HEX); +#endif + + } else { + cpu.cia2.R[address] = bcdToDec(value); +#if RTCDEBUG + Serial.print("CIA 2 Set SEC:"); + Serial.println(value, HEX); +#endif + + } + } + break; //TOD-Secs + case 0x0A : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + cpu.cia2.W[address] = bcdToDec(value); + cia2_setAlarmTime(); +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm MIN:"); + Serial.println(value, HEX); +#endif + + } else { + cpu.cia2.R[address] = bcdToDec(value); +#if RTCDEBUG + Serial.print("CIA 2 Set MIN:"); + Serial.println(value, HEX); +#endif + + } + } + break; //TOD-Minutes + case 0x0B : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + cpu.cia2.W[address] = bcdToDec(value & 0x1f) + (value & 0x80 ? 12 : 0); + cia2_setAlarmTime(); +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm HRS:"); + Serial.println(value, HEX); +#endif + + } else { + cpu.cia2.R[address] = bcdToDec(value & 0x1f) + (value & 0x80 ? 12 : 0); + cpu.cia2.TODstopped = 1; +#if RTCDEBUG + Serial.print("CIA 2 Set HRS:"); + Serial.println(value, HEX); +#endif + } + } + break; //TOD-Hours + case 0x0C : { + cpu.cia2.R[address] = value; + //Fake IRQ + cpu.cia2.R[0x0d] |= 8 | ((cpu.cia2.W[0x0d] & 0x08) << 4); + cpu_nmi(); + } + break; + case 0x0D : { + if ((value & 0x80) > 0) { + cpu.cia2.W[address] |= value & 0x1f; + //ggf NMItriggern + if (cpu.cia2.R[address] & cpu.cia2.W[address] & 0x1f) { + cpu.cia2.R[address] |= 0x80; + cpu_nmi(); + }; + } else { + cpu.cia2.W[address] &= ~value; + } + } + break; + + case 0x0E : { + cpu.cia2.R[address] = value & ~0x10; + if ((value & 0x10) > 0) { + cpu.cia2.R16[0x04 / 2] = cpu.cia2.W16[0x04 / 2]; + } + } + break; + case 0x0F : { + cpu.cia2.R[address] = value & ~0x10; + if ((value & 0x10) > 0) { + cpu.cia2.R16[0x06 / 2] = cpu.cia2.W16[0x06 / 2]; + } + } + break; + default : { + cpu.cia2.R[address] = value;/*if (address ==0) {Serial.print(value);Serial.print(" ");}*/ + } + break; + } + +#if DEBUGCIA2 + Serial.printf("%x CIA2: W %x %x\n", cpu.pc, address, value); +#endif +} + +uint8_t cia2_read(uint32_t address) { + uint8_t ret; + + address &= 0x0F; + + switch (address) { + + case 0x00 : { + ret = (cpu.cia2.R[address] & 0x3f) | READ_CLK_DATA(); + if ((~ret & 0x3f)) { + cpu_setExactTiming(); + } + + break; + } + + //RTC + case 0x08: { + ret = tod() % 1000 / 10; + cpu.cia2.TODfrozen = 0; + }; + +#if RTCDEBUG + Serial.print("CIA 2 Read TENTH:"); + Serial.println(ret, HEX); +#endif + + break; //Bit 0..3: Zehntelsekunden im BCD-Format ($0-$9) Bit 4..7: immer 0 + case 0x09: { + ret = decToBcd(tod() / 1000 % 60); + }; + //Serial.println( tod() / 100); +#if RTCDEBUG + Serial.print("CIA 2 Read SEC:"); + Serial.println(ret, HEX); +#endif + + break; //Bit 0..3: Einersekunden im BCD-Format ($0-$9) Bit 4..6: Zehnersekunden im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0A: { + ret = decToBcd(tod() / (1000 * 60) % 60); + }; +#if RTCDEBUG + Serial.print("CIA 2 Read MIN:"); + Serial.println(ret, HEX); +#endif + + break; //Bit 0..3: Einerminuten im BCD-Format( $0-$9) Bit 4..6: Zehnerminuten im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0B: { + //Bit 0..3: Einerstunden im BCD-Format ($0-$9) Bit 4: Zehnerstunden im BCD-Format ($0-$1) // Bit 7: Unterscheidung AM/PM, 0=AM, 1=PM + //Lesen aus diesem Register friert alle TOD-Register ein (TOD läuft aber weiter), bis Register 8 (TOD 10THS) gelesen wird. + cpu.cia2.TODfrozen = 0; + cpu.cia2.TODfrozenMillis = tod(); + cpu.cia2.TODfrozen = 1; +#if RTCDEBUG + Serial.print("CIA 2 FrozenMillis:"); + Serial.println(cpu.cia2.TODfrozenMillis); +#endif + ret = cpu.cia2.TODfrozenMillis / (1000 * 3600) % 24; + if (ret >= 12) + ret = 128 | decToBcd(ret - 12); + else + ret = decToBcd(ret); + }; +#if RTCDEBUG + Serial.print("CIA 2 Read HRS:"); + Serial.println(ret, HEX); +#endif + + break; + + case 0x0D: { + ret = cpu.cia2.R[address] & 0x9f; + cpu.cia2.R[address] = 0; + cpu_clearNmi(); + }; break; + default: ret = cpu.cia2.R[address]; break; + } + +#if DEBUGCIA2 + Serial.printf("%x CIA2: R %x %x\n", cpu.pc, address, ret); +#endif + return ret; +} + +#if 0 +void cia2_clock(int clk) { + + uint32_t cnta, cntb, cra, crb; + + //Timer A + cra = cpu.cia2.R[0x0e]; + crb = cpu.cia2.R[0x0f]; + + if (( cra & 0x21) == 0x01) { + cnta = cpu.cia2.R[0x04] | cpu.cia2.R[0x05] << 8; + cnta -= clk; + if (cnta > 0xffff) { //Underflow + cnta = cpu.cia2.W[0x04] | cpu.cia2.W[0x05] << 8; // Reload Timer + if (cra & 0x08) { // One Shot + cpu.cia2.R[0x0e] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia2.R[0x0d] |= 1 | /* (cpu.cia2.W[0x0d] & 0x01) |*/ ((cpu.cia2.W[0x0d] & 0x01) << 7); + + if ((crb & 0x61) == 0x41) { //Timer B counts underflows of Timer A + cntb = cpu.cia2.R[0x06] | cpu.cia2.R[0x07] << 8; + cntb--; + if (cntb > 0xffff) { //underflow + cpu.cia2.R[0x04] = cnta & 0x0f; + cpu.cia2.R[0x05] = cnta >> 8; + goto underflow_b; + } + } + } + + cpu.cia2.R[0x04] = cnta & 0x0f; + cpu.cia2.R[0x05] = cnta >> 8; + + } + + //Timer B + if (( crb & 0x61) == 0x01) { + cntb = cpu.cia2.R[0x06] | cpu.cia2.R[0x07] << 8; + cntb -= clk; + if (cntb > 0xffff) { //underflow +underflow_b: + cntb = cpu.cia2.W[0x06] | cpu.cia2.W[0x07] << 8; // Reload Timer + if (crb & 0x08) { // One Shot + cpu.cia2.R[0x0f] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia2.R[0x0d] |= 2 | /*(cpu.cia2.W[0x0d] & 0x02) | */ ((cpu.cia2.W[0x0d] & 0x02) << 6); + } + + cpu.cia2.R[0x06] = cntb & 0x0f; + cpu.cia2.R[0x07] = cntb >> 8; + + } + if (cpu.cia2.R[0x0d] & 0x80) cpu_nmi(); +} + +#else + +void cia2_clock(int clk) { + + int32_t t; + uint32_t regFEDC = cpu.cia2.R32[0x0C / 4]; + + // TIMER A + //if (((cpu.cia2.R[0x0E] & 0x01)>0) && ((cpu.cia2.R[0x0E] & 0x20)==0)) { + //if ((regFEDC & 0x210000)==0x10000) { + if (((regFEDC >> 16) & 0x21) == 0x1) { + + t = cpu.cia2.R16[0x04 / 2]; + + if (clk > t) { //underflow + t = cpu.cia2.W16[0x04 / 2] - (clk - t); //neu + regFEDC |= 0x00000100; + if ((regFEDC & 0x00080000)) regFEDC &= 0xfffeffff; + } + else { + t -= clk; + } + + cpu.cia2.R16[0x04 / 2] = t; + } + + + // TIMER B + //TODO : Prüfen ob das funktioniert + if ( regFEDC & 0x01000000 ) { + //uint16_t quelle = (cpu.cia2.R[0x0F]>>5) & 0x03; + if ((regFEDC & 0x60000000) == 0x40000000) { + + if (regFEDC & 0x00000100) //unterlauf TimerA? + clk = 1; + else + goto tend; + } + + t = cpu.cia2.R16[0x06 / 2]; + + if (clk > t) { //underflow + t = cpu.cia2.W16[0x06 / 2] - (clk - t); //Neu + regFEDC |= 0x00000200; + if ((regFEDC & 0x08000000)) regFEDC &= 0xfeffffff; + } else { + t -= clk; + } + cpu.cia2.R16[0x06 / 2] = t; + + } + +tend: + + + // INTERRUPT ? + if ( regFEDC & cpu.cia2.W32[0x0C / 4] & 0x0f00 ) { + regFEDC |= 0x8000; + cpu.cia2.R32[0x0C / 4] = regFEDC; + } + cpu.cia2.R32[0x0C / 4] = regFEDC; +} +#endif + +void cia2_checkRTCAlarm() { // call every 1/10 sec minimum + if ((int)(millis() - cpu.cia2.TOD) % 86400000l / 100 == cpu.cia2.TODAlarm) { + // Serial.print("CIA2 RTC interrupt"); + // Interrupt + cpu.cia2.R[0x0d] |= 0x4 | (cpu.cia2.W[0x0d] & 4) << 5; + } +} + +void resetCia2(void) { + memset((uint8_t*)&cpu.cia2.R, 0, sizeof(cpu.cia2.R)); + cpu.cia2.R[0x04] = 0xff; + cpu.cia2.R[0x05] = 0xff; + cpu.cia2.R[0x06] = 0xff; + cpu.cia2.R[0x07] = 0xff; + + //pinMode(PIN_SERIAL_ATN, OUTPUT_OPENDRAIN); //ATN OUT (CIA2 PA3 OUT) + //pinMode(PIN_SERIAL_CLK, OUTPUT_OPENDRAIN); //CLK (CIA2 PA6:IN PA4: OUT) + //pinMode(PIN_SERIAL_DATA, OUTPUT_OPENDRAIN); //DATA (CIA2 PA7:IN PA5: OUT) + //digitalWriteFast(PIN_SERIAL_ATN, 1); + //digitalWriteFast(PIN_SERIAL_CLK, 1); + //digitalWriteFast(PIN_SERIAL_DATA, 1); + +} diff --git a/MCUME_esp32/esp64/main/cia2.h b/MCUME_esp32/esp64/main/cia2.h new file mode 100755 index 0000000..1c21cb5 --- /dev/null +++ b/MCUME_esp32/esp64/main/cia2.h @@ -0,0 +1,47 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_cia2_h_ +#define Teensy64_cia2_h_ + + +void cia2_clock(int clk) __attribute__ ((hot)); +void cia2_checkRTCAlarm() __attribute__ ((hot)); +void cia2_write(uint32_t address, uint8_t value) __attribute__ ((hot)); +uint8_t cia2_read(uint32_t address) __attribute__ ((hot)); + +void resetCia2(void); + +#endif diff --git a/MCUME_esp32/esp64/main/component.mk b/MCUME_esp32/esp64/main/component.mk new file mode 100644 index 0000000..03de198 --- /dev/null +++ b/MCUME_esp32/esp64/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=maybe-uninitialized -Wno-error=sequence-point -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/cpu.cpp b/MCUME_esp32/esp64/main/cpu.cpp new file mode 100755 index 0000000..82547a3 --- /dev/null +++ b/MCUME_esp32/esp64/main/cpu.cpp @@ -0,0 +1,2717 @@ +/* + Copyright Mike Chambers, Frank Bösing, 2017 + Parts of this file are based on "Fake6502 CPU emulator core v1.1" by Mike Chambers + + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +/* Fake6502 CPU emulator core v1.1 ******************* + * (c)2011 Mike Chambers (miker00lz@gmail.com) * + ***************************************************** + * LICENSE: This source code is released into the * + * public domain, but if you use it please do give * + * credit. I put a lot of effort into writing this! * + * * + ***************************************************** +*/ + +#include "cpu.h" + +#define FLAG_CARRY 0x01 +#define FLAG_ZERO 0x02 +#define FLAG_INTERRUPT 0x04 +#define FLAG_DECIMAL 0x08 +#define FLAG_BREAK 0x10 +#define FLAG_CONSTANT 0x20 +#define FLAG_OVERFLOW 0x40 +#define FLAG_SIGN 0x80 + +//flag modifier macros +#define setcarry() cpu.cpustatus |= FLAG_CARRY +#define clearcarry() cpu.cpustatus &= (~FLAG_CARRY) +#define setzero() cpu.cpustatus |= FLAG_ZERO +#define clearzero() cpu.cpustatus &= (~FLAG_ZERO) +#define setinterrupt() cpu.cpustatus |= FLAG_INTERRUPT +#define clearinterrupt() cpu.cpustatus &= (~FLAG_INTERRUPT) +#define setdecimal() cpu.cpustatus |= FLAG_DECIMAL +#define cleardecimal() cpu.cpustatus &= (~FLAG_DECIMAL) +#define setoverflow() cpu.cpustatus |= FLAG_OVERFLOW +#define clearoverflow() cpu.cpustatus &= (~FLAG_OVERFLOW) +#define setsign() cpu.cpustatus |= FLAG_SIGN +#define clearsign() cpu.cpustatus &= (~FLAG_SIGN) + + +//flag calculation macros +#define zerocalc(n) { if ((n) & 0x00FF) clearzero(); else setzero(); } +//#define signcalc(n) { if ((n) & 0x0080) setsign(); else clearsign(); } +#define signcalc(n) { cpu.cpustatus =( cpu.cpustatus & 0x7f) | (n & 0x80); } +#define carrycalc(n) { if ((n) & 0xFF00) setcarry(); else clearcarry(); } +//#define carrycalc(n) {cpu.cpustatus =( cpu.cpustatus & 0xfe) | (n >> 8); } +#define overflowcalc(n, m, o) { if (((n) ^ (uint16_t)(m)) & ((n) ^ (o)) & 0x0080) setoverflow(); else clearoverflow(); } + +#define saveaccum(n) cpu.a = (uint8_t)((n) & 0x00FF) + +#define UNSUPPORTED { printf("Unsupported Opcode\n"); while(1){;} } + +void logAddr(const uint32_t address, const uint8_t value, const uint8_t rw) { + if (rw) printf("Write "); else printf("Read "); + printf("0x%d=0x%d\n",address,value); + +} +struct tcpu cpu; +struct tio io; + +void reset6502(); +void cpu_nmi(); +static inline void cpu_irq(); + +INLINEOP uint8_t read6502(const uint32_t address) __attribute__ ((hot)); +INLINEOP uint8_t read6502(const uint32_t address) { + return (*cpu.plamap_r)[address >> 8](address); +} + +INLINEOP uint8_t read6502ZP(const uint32_t address) __attribute__ ((hot)); //Zeropage +INLINEOP uint8_t read6502ZP(const uint32_t address) { + return cpu.RAM[address & 0xff]; +} + +/* Ein Schreibzugriff auf einen ROM-Bereich speichert das Byte im „darunterliegenden” RAM. */ +INLINEOP void write6502(const uint32_t address, const uint8_t value) __attribute__ ((hot)); +INLINEOP void write6502(const uint32_t address, const uint8_t value) { + (*cpu.plamap_w)[address>>8](address, value); +} + +//a few general functions used by various other functions +INLINEOP void push16(const uint16_t pushval) { + cpu.RAM[BASE_STACK + cpu.sp] = (pushval >> 8) & 0xFF; + cpu.RAM[BASE_STACK + ((cpu.sp - 1) & 0xFF)] = pushval & 0xFF; + cpu.sp -= 2; +} + +INLINEOP uint16_t pull16() { + uint16_t temp16; + temp16 = cpu.RAM[BASE_STACK + ((cpu.sp + 1) & 0xFF)] | ((uint16_t)cpu.RAM[BASE_STACK + ((cpu.sp + 2) & 0xFF)] << 8); + cpu.sp += 2; + return(temp16); +} + +INLINEOP void push8(uint8_t pushval) { + cpu.RAM[BASE_STACK + (cpu.sp--)] = pushval; + +} + +INLINEOP uint8_t pull8() { + return cpu.RAM[BASE_STACK + (++cpu.sp)]; +} + +/********************************************************************************************************************/ +/*addressing mode functions, calculates effective addresses */ +/********************************************************************************************************************/ + +INLINEOP void imp() { //implied +} + +INLINEOP void acc() { //accumulator +} + +INLINEOP void imm() { //immediate + cpu.ea = cpu.pc++; +} + +INLINEOP void zp() { //zero-page + cpu.ea = read6502(cpu.pc++) & 0xFF; +} + +INLINEOP void zpx() { //zero-page,X + cpu.ea = (read6502(cpu.pc++) + cpu.x) & 0xFF; //zero-page wraparound +} + +INLINEOP void zpy() { //zero-page,Y + cpu.ea = (read6502(cpu.pc++) + cpu.y) & 0xFF; //zero-page wraparound +} + +INLINEOP void rel() { //relative for branch ops (8-bit immediate value, sign-extended) + cpu.reladdr = read6502(cpu.pc++); + if (cpu.reladdr & 0x80) cpu.reladdr |= 0xFF00; +} + +INLINEOP void abso() { //absolute + cpu.ea = read6502(cpu.pc) | (read6502(cpu.pc + 1) << 8); + cpu.pc += 2; +} + +INLINEOP void absx() { //absolute,X + cpu.ea = (read6502(cpu.pc) | (read6502(cpu.pc + 1) << 8)) + cpu.x; + cpu.pc += 2; +} + +INLINEOP void absx_t() { //absolute,X with extra cycle + uint16_t h = read6502(cpu.pc) + cpu.x; + if (h & 0x100) cpu.ticks += 1; + cpu.ea = h + (read6502(cpu.pc + 1) << 8); + cpu.pc += 2; +} + +INLINEOP void absy() { //absolute,Y + cpu.ea = (read6502(cpu.pc) + (read6502(cpu.pc + 1) << 8)) + cpu.y; + cpu.pc += 2; +} + +INLINEOP void absy_t() { //absolute,Y with extra cycle + uint16_t h = read6502(cpu.pc) + cpu.y; + if (h & 0x100) cpu.ticks += 1; + cpu.ea = h + (read6502(cpu.pc + 1) << 8); + cpu.pc += 2; +} + +INLINEOP void ind() { //indirect + uint16_t eahelp, eahelp2; + eahelp = read6502(cpu.pc) | (read6502(cpu.pc + 1) << 8); + eahelp2 = (eahelp & 0xFF00) | ((eahelp + 1) & 0x00FF); //replicate 6502 page-boundary wraparound bug + cpu.ea = read6502(eahelp) | (read6502(eahelp2) << 8); + cpu.pc += 2; +} + +INLINEOP void indx() { // (indirect,X) + uint32_t eahelp; + eahelp = (read6502(cpu.pc++) + cpu.x) & 0xFF; //zero-page wraparound for table pointer + cpu.ea = read6502ZP((uint8_t)eahelp) | (read6502ZP((uint8_t)(eahelp + 1)) << 8); +} + +INLINEOP void indy() { // (zeropage indirect),Y + uint8_t zp = read6502(cpu.pc++); + cpu.ea = read6502ZP((uint16_t) zp++); + cpu.ea += (uint16_t) read6502ZP((uint16_t) zp) << 8; + cpu.ea += cpu.y; +} + +INLINEOP void indy_t() { // (zeropage indirect),Y with extra cycle + uint8_t zp = read6502(cpu.pc++); + uint16_t h; + h = read6502ZP((uint16_t) zp++); + h += (uint16_t) read6502ZP((uint16_t) zp) << 8; + if (((h + cpu.y) & 0xff) != (h & 0xff)) cpu.ticks += 1; + cpu.ea = h + cpu.y; +} + +INLINEOP uint32_t getvalue() __attribute__ ((hot)); +INLINEOP uint32_t getvalue() { + return read6502(cpu.ea); +} + +INLINEOP uint32_t getvalueZP() __attribute__ ((hot)); +INLINEOP uint32_t getvalueZP() { + return read6502ZP(cpu.ea); +} + +INLINEOP void putvalue(const uint8_t saveval) __attribute__ ((hot)); +INLINEOP void putvalue(const uint8_t saveval) { + write6502(cpu.ea, saveval); +} + + +/********************************************************************************************************************/ +/* instruction handler functions */ +/********************************************************************************************************************/ + +/* +Aliases used in other illegal opcode sources: + +SLO = ASO +SRE = LSE +ISC = ISB +ALR = ASR +SHX = A11 (A11 was a result of only having tested this one on adress $1000) +SHY = A11 +LAS = LAR +KIL = JAM, HLT +*/ + +#define SETFLAGS(data) \ +{ \ + if (!(data)) \ + cpu.cpustatus = (cpu.cpustatus & ~FLAG_SIGN) | FLAG_ZERO; \ + else \ + cpu.cpustatus = (cpu.cpustatus & ~(FLAG_SIGN|FLAG_ZERO)) | \ + ((data) & FLAG_SIGN); \ +} + + +INLINEOP void _adc(unsigned data) { + unsigned tempval = data; + unsigned temp; + if (cpu.cpustatus & FLAG_DECIMAL) { + temp = (cpu.a & 0x0f) + (tempval & 0x0f) + (cpu.cpustatus & FLAG_CARRY); + if (temp > 9) temp += 6; + if (temp <= 0x0f) + temp = (temp & 0xf) + (cpu.a & 0xf0) + (tempval & 0xf0); + else + temp = (temp & 0xf) + (cpu.a & 0xf0) + (tempval & 0xf0) + 0x10; + if (!((cpu.a + tempval + (cpu.cpustatus & FLAG_CARRY)) & 0xff)) + setzero(); + else + clearzero(); + signcalc(temp); + if (((cpu.a ^ temp) & 0x80) && !((cpu.a ^ tempval) & 0x80)) + setoverflow(); + else + clearoverflow(); + if ((temp & 0x1f0) > 0x90) temp += 0x60; + if ((temp & 0xff0) > 0xf0) + setcarry(); + else + clearcarry(); + } else { + temp = tempval + cpu.a + (cpu.cpustatus & FLAG_CARRY); + SETFLAGS(temp & 0xff); + if (!((cpu.a ^ tempval) & 0x80) && ((cpu.a ^ temp) & 0x80)) + setoverflow(); + else + clearoverflow(); + if (temp > 0xff) + setcarry(); + else + clearcarry(); + } + saveaccum(temp); +} + +INLINEOP void _sbc(unsigned data) { + unsigned tempval = data; + unsigned temp; + + temp = cpu.a - tempval - ((cpu.cpustatus & FLAG_CARRY) ^ FLAG_CARRY); + + if (cpu.cpustatus & FLAG_DECIMAL) { + unsigned tempval2; + tempval2 = (cpu.a & 0x0f) - (tempval & 0x0f) - ((cpu.cpustatus & FLAG_CARRY) ^ FLAG_CARRY); + if (tempval2 & 0x10) + tempval2 = ((tempval2 - 6) & 0xf) | ((cpu.a & 0xf0) - (tempval & 0xf0) - 0x10); + else + tempval2 = (tempval2 & 0xf) | ((cpu.a & 0xf0) - (tempval & 0xf0)); + if (tempval2 & 0x100) + tempval2 -= 0x60; + if (temp < 0x100) + setcarry(); + else + clearcarry(); + SETFLAGS(temp & 0xff); + if (((cpu.a ^ temp) & 0x80) && ((cpu.a ^ tempval) & 0x80)) + setoverflow(); + else + clearoverflow(); + saveaccum(tempval2); + } else { + SETFLAGS(temp & 0xff); + if (temp < 0x100) + setcarry(); + else + clearcarry(); + if (((cpu.a ^ temp) & 0x80) && ((cpu.a ^ tempval) & 0x80)) + setoverflow(); + else + clearoverflow(); + saveaccum(temp); + } + +} + +INLINEOP void adc() { + unsigned data = getvalue(); + _adc(data); +} + +INLINEOP void adcZP() { + unsigned data = getvalueZP(); + _adc(data); + +} + +INLINEOP void op_and() { + uint32_t result = cpu.a & getvalue(); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void op_andZP() { + uint32_t result = cpu.a & getvalueZP(); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void asl() { + uint32_t result = getvalue(); + result <<=1; + carrycalc(result); + zerocalc(result); + signcalc(result); + putvalue(result); +} + +INLINEOP void aslZP() { + uint32_t result = getvalueZP(); + result <<=1; + carrycalc(result); + zerocalc(result); + signcalc(result); + putvalue(result); +} + +INLINEOP void asla() { + uint32_t result = cpu.a << 1; + carrycalc(result); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void bcc() { + if ((cpu.cpustatus & FLAG_CARRY) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bcs() { + if ((cpu.cpustatus & FLAG_CARRY) == FLAG_CARRY) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void beq() { + if ((cpu.cpustatus & FLAG_ZERO) == FLAG_ZERO) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void op_bit() { + unsigned value = getvalue(); + cpu.cpustatus = (cpu.cpustatus & ~(FLAG_SIGN|FLAG_OVERFLOW)) | (value & (FLAG_SIGN|FLAG_OVERFLOW)); + if (!(value & cpu.a)) + setzero(); + else + clearzero(); +/* + uint32_t value = getvalue(); + uint32_t result = (uint16_t)cpu.a & value; + + zerocalc(result); + cpu.cpustatus = (cpu.cpustatus & 0x3F) | (uint8_t)(value & 0xC0); +*/ +} + +INLINEOP void op_bitZP() { + unsigned value = getvalueZP(); + cpu.cpustatus = (cpu.cpustatus & ~(FLAG_SIGN|FLAG_OVERFLOW)) | (value & (FLAG_SIGN|FLAG_OVERFLOW)); + if (!(value & cpu.a)) + setzero(); + else + clearzero(); +} + +INLINEOP void bmi() { + if ((cpu.cpustatus & FLAG_SIGN) == FLAG_SIGN) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bne() { + if ((cpu.cpustatus & FLAG_ZERO) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bpl() { + if ((cpu.cpustatus & FLAG_SIGN) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void brk() { + cpu.pc++; + push16(cpu.pc); //push next instruction address onto stack + push8(cpu.cpustatus | FLAG_BREAK); //push CPU cpustatus to stack + setinterrupt(); //set interrupt flag + cpu.pc = read6502(0xFFFE) | (read6502(0xFFFF) << 8); +} + +INLINEOP void bvc() { + if ((cpu.cpustatus & FLAG_OVERFLOW) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bvs() { + if ((cpu.cpustatus & FLAG_OVERFLOW) == FLAG_OVERFLOW) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void clc() { + clearcarry(); +} + +INLINEOP void cld() { + cleardecimal(); +} + +INLINEOP void cli_() { + clearinterrupt(); +} + +INLINEOP void clv() { + clearoverflow(); +} + +INLINEOP void cmp() { + uint16_t value = getvalue(); + uint32_t result = (uint16_t)cpu.a - value; + + if (cpu.a >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.a == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cmpZP() { + uint16_t value = getvalueZP(); + uint32_t result = (uint16_t)cpu.a - value; + + if (cpu.a >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.a == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpx() { + uint16_t value = getvalue(); + uint16_t result = (uint16_t)cpu.x - value; + + if (cpu.x >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.x == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpxZP() { + uint16_t value = getvalueZP(); + uint16_t result = (uint16_t)cpu.x - value; + + if (cpu.x >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.x == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpy() { + uint16_t value = getvalue(); + uint16_t result = (uint16_t)cpu.y - value; + + if (cpu.y >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.y == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpyZP() { + uint16_t value = getvalueZP(); + uint16_t result = (uint16_t)cpu.y - value; + + if (cpu.y >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.y == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void dec() { + uint32_t result = getvalue() - 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void decZP() { + uint32_t result = getvalueZP() - 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void dex() { + cpu.x--; + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void dey() { + cpu.y--; + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void eor() { + uint32_t result = cpu.a ^ getvalue(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void eorZP() { + uint32_t result = cpu.a ^ getvalueZP(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void inc() { + uint32_t result = getvalue() + 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void incZP() { + uint32_t result = getvalueZP() + 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void inx() { + cpu.x++; + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void iny() { + cpu.y++; + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void jmp() { + cpu.pc = cpu.ea; +} + +INLINEOP void jsr() { + push16(cpu.pc - 1); + cpu.pc = cpu.ea; +} + +INLINEOP void lda() { + cpu.a = getvalue(); + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void ldaZP() { + cpu.a = getvalueZP(); + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void ldx() { + cpu.x = getvalue(); + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void ldxZP() { + cpu.x = getvalue(); + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void ldy() { + cpu.y = getvalue(); + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void ldyZP() { + cpu.y = getvalueZP(); + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void lsr() { + uint32_t value = getvalue(); + uint32_t result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + //clearsign(); + signcalc(result); + + putvalue(result); +} + +INLINEOP void lsrZP() { + uint32_t value = getvalue(); + uint32_t result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + //clearsign(); + signcalc(result); + + putvalue(result); +} + +INLINEOP void lsra() { + uint8_t value = cpu.a; + uint8_t result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + //clearsign(); + signcalc(result); + saveaccum(result); +} + +INLINEOP void ora() { + + uint32_t result = cpu.a | getvalue(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void oraZP() { + + uint32_t result = cpu.a | getvalueZP(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void pha() { + push8(cpu.a); +} + +INLINEOP void php() { + push8(cpu.cpustatus | FLAG_BREAK); +} + +INLINEOP void pla() { + cpu.a = pull8(); + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void plp() { + cpu.cpustatus = (pull8() & 0xef) | FLAG_CONSTANT; +} + +INLINEOP void rol() { + uint16_t value = getvalue(); + uint16_t result = (value << 1) | (cpu.cpustatus & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rolZP() { + uint16_t value = getvalueZP(); + uint16_t result = (value << 1) | (cpu.cpustatus & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rola() { + uint16_t value = cpu.a; + uint16_t result = (value << 1) | (cpu.cpustatus & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void ror() { + uint32_t value = getvalue(); + uint16_t result = (value >> 1) | ((cpu.cpustatus & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rorZP() { + uint32_t value = getvalueZP(); + uint16_t result = (value >> 1) | ((cpu.cpustatus & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rora() { + uint32_t value = cpu.a; + uint16_t result = (value >> 1) | ((cpu.cpustatus & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + + +INLINEOP void rti() { + cpu.cpustatus = pull8(); + cpu.pc = pull16(); +} + +INLINEOP void rts() { + cpu.pc = pull16() + 1; +} + +INLINEOP void sbc() { + unsigned data = getvalue(); + _sbc(data); +} + +INLINEOP void sbcZP() { + unsigned data = getvalueZP(); + _sbc(data); +} + + +INLINEOP void sec() { + setcarry(); +} + +INLINEOP void sed() { + setdecimal(); +} + +INLINEOP void sei_() { + setinterrupt(); +} + +INLINEOP void sta() { + putvalue(cpu.a); +} + +INLINEOP void stx() { + putvalue(cpu.x); +} + +INLINEOP void sty() { + putvalue(cpu.y); +} + +INLINEOP void tax() { + cpu.x = cpu.a; + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void tay() { + cpu.y = cpu.a; + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void tsx() { + + cpu.x = cpu.sp; + + zerocalc(cpu.x); + signcalc(cpu.x); + +} + +INLINEOP void txa() { + cpu.a = cpu.x; + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void txs() { + cpu.sp = cpu.x; +} + +INLINEOP void tya() { + cpu.a = cpu.y; + + zerocalc(cpu.a); + signcalc(cpu.a); +} + + +//undocumented instructions +INLINEOP void lax() { + lda(); + ldx(); +} + +INLINEOP void sax() { + sta(); + stx(); + putvalue(cpu.a & cpu.x); +} + +INLINEOP void dcp() { + dec(); + cmp(); +} + +INLINEOP void isb() { + inc(); + sbc(); +} + +INLINEOP void slo() { + asl(); + ora(); +} + +INLINEOP void rla() { + rol(); + op_and(); +} + +INLINEOP void sre() { + lsr(); + eor(); +} + +INLINEOP void rra() { + ror(); + adc(); +} + +INLINEOP void alr() { // (FB) + + uint32_t result = cpu.a & getvalue() ; + + if (result & 1) setcarry(); + else clearcarry(); + + result = result / 2; + + clearsign(); + zerocalc(result); + saveaccum(result); +} + +INLINEOP void arr() { //This one took me hours.. finally taken from VICE (FB) + uint32_t result; + result = cpu.a & getvalue(); + if (!(cpu.cpustatus & FLAG_DECIMAL)) { + result >>= 1; + result |= ((cpu.cpustatus & FLAG_CARRY) << 7); + signcalc(result); + zerocalc(result); + if (result & 0x40) setcarry(); else clearcarry(); + if ((result & 0x40) ^ ((result & 0x20)<<1)) setoverflow(); else clearoverflow(); + saveaccum(result); + } else { + uint32_t t2 = result; + t2 >>= 1; + t2 |= ((cpu.cpustatus & FLAG_CARRY) << 7); + if (cpu.cpustatus & FLAG_CARRY) setsign(); else clearsign(); + zerocalc(t2); + if ((t2 ^ result) & 0x40) setoverflow(); else clearoverflow(); + if (((result & 0xf) + (result & 0x1)) > 0x5) { + t2 = (t2 & 0xf0) | ((t2 + 0x6) & 0xf); + } + if (((result & 0xf0) + (result & 0x10)) > 0x50) { + t2 = (t2 & 0x0f) | ((t2 + 0x60) & 0xf0); + setcarry(); + } else { + clearcarry(); + } + saveaccum(t2); + } + +} + +INLINEOP void xaa() { // AKA ANE + const uint32_t val = 0xee; // VICE uses 0xff - but this results in an error in the testsuite (FB) + uint32_t result = (cpu.a | val) & cpu.x & getvalue(); + signcalc(result); + zerocalc(result); + saveaccum(result); +} + +INLINEOP void lxa() { + const uint32_t val = 0xee; + uint32_t result = (cpu.a | val) & getvalue(); + signcalc(result); + zerocalc(result); + cpu.x = result; + saveaccum(result); +} + +INLINEOP void axs() { //aka SBX + uint32_t result = getvalue(); + result = (cpu.a & cpu.x) - result; + cpu.x = result; + if (result < 0x100) setcarry(); else clearcarry(); + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void ahx() { //todo (is unstable) + UNSUPPORTED +} + +INLINEOP void anc() { + uint32_t result = cpu.a & getvalue(); + signcalc(result) + zerocalc(result); + if (cpu.cpustatus & FLAG_SIGN) setcarry(); else clearcarry(); + saveaccum(result); +} + +INLINEOP void las() { + uint32_t result = cpu.sp & getvalue(); + signcalc(result); + zerocalc(result); + cpu.sp = result; + cpu.x = result; + saveaccum(result); +} + +/********************************************************************************************************************/ +/* OPCODES */ +/********************************************************************************************************************/ + +OPCODE void opKIL(void) { + printf("CPU JAM @ $%d\n",cpu.pc); + cpu_reset(); +} + +OPCODE void op0x0(void) { + cpu.ticks = 7; + imp(); + brk(); +} + +OPCODE void op0x1(void) { + cpu.ticks = 6; + indx(); + ora(); +} + +OPCODE void op0x3(void) { //undocumented + cpu.ticks = 8; + indx(); + slo(); +} + +OPCODE void op0x4(void) { //nop read zeropage + cpu.ticks = 3; + zp(); +} + +OPCODE void op0x5(void) { + cpu.ticks = 3; + zp(); + oraZP(); +} + +OPCODE void op0x6(void) { + cpu.ticks = 5; + zp(); + aslZP(); +} + +OPCODE void op0x7(void) { //undocumented SLO + cpu.ticks = 5; + zp(); + slo(); +} + +OPCODE void op0x8(void) { + cpu.ticks = 3; + imp(); + php(); +} + +OPCODE void op0x9(void) { + cpu.ticks = 2; + imm(); + ora(); +} + +OPCODE void op0xA(void) { + cpu.ticks = 2; + //acc(); + asla(); +} + +OPCODE void op0xB(void) { //undocumented + cpu.ticks = 2; + imm(); + anc(); +} + +OPCODE void op0xC(void) { //nop + cpu.ticks = 4; + abso(); +} + +OPCODE void op0xD(void) { + cpu.ticks = 4; + abso(); + ora(); +} + +OPCODE void op0xE(void) { + cpu.ticks = 6; + abso(); + asl(); +} + +OPCODE void op0xF(void) { //undocumented + cpu.ticks = 6; + abso(); + slo(); +} + +OPCODE void op0x10(void) { + cpu.ticks = 2; + rel(); + bpl(); +} + +OPCODE void op0x11(void) { + cpu.ticks = 5; + indy_t(); + ora(); +} + +OPCODE void op0x13(void) { //undocumented + cpu.ticks = 8; + indy(); + slo(); +} + +OPCODE void op0x14(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x15(void) { + cpu.ticks = 4; + zpx(); + ora(); +} + +OPCODE void op0x16(void) { + cpu.ticks = 6; + zpx(); + asl(); +} + +OPCODE void op0x17(void) { //undocumented + cpu.ticks = 6; + //zpy(); bug + zpx(); + slo(); +} + +OPCODE void op0x18(void) { + cpu.ticks = 2; + imp(); + clc(); +} + +OPCODE void op0x19(void) { + cpu.ticks = 4; + absy_t(); + ora(); +} + +OPCODE void op0x1A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x1B(void) { //undocumented + cpu.ticks = 7; + absy(); + slo(); +} + +OPCODE void op0x1C(void) { //nop + cpu.ticks = 4; + //(); +} + +OPCODE void op0x1D(void) { + cpu.ticks = 4; + absx_t(); + ora(); +} + +OPCODE void op0x1E(void) { + cpu.ticks = 7; + absx(); + asl(); +} + + +OPCODE void op0x1F(void) { //undocumented + cpu.ticks = 7; + absx(); + slo(); +} + +OPCODE void op0x20(void) { + cpu.ticks = 6; + abso(); + jsr(); +} + +OPCODE void op0x21(void) { + cpu.ticks = 6; + indx(); + op_and(); +} + +OPCODE void op0x23(void) { //undocumented + cpu.ticks = 8; + indx(); + rla(); +} + +OPCODE void op0x24(void) { + cpu.ticks = 3; + zp(); + op_bitZP(); +} + +OPCODE void op0x25(void) { + cpu.ticks = 3; + zp(); + op_and(); +} + +OPCODE void op0x26(void) { + cpu.ticks = 5; + zp(); + rolZP(); +} + +OPCODE void op0x27(void) { //undocumented + cpu.ticks = 5; + zp(); + rla(); +} + +OPCODE void op0x28(void) { + cpu.ticks = 4; + imp(); + plp(); +} + +OPCODE void op0x29(void) { + cpu.ticks = 2; + imm(); + op_and(); +} + +OPCODE void op0x2A(void) { + cpu.ticks = 2; + //acc(); + rola(); +} + +OPCODE void op0x2B(void) { //undocumented + cpu.ticks = 2; + imm(); + anc(); +} + +OPCODE void op0x2C(void) { + cpu.ticks = 4; + abso(); + op_bit(); +} + +OPCODE void op0x2D(void) { + cpu.ticks = 4; + abso(); + op_and(); +} + +OPCODE void op0x2E(void) { + cpu.ticks = 6; + abso(); + rol(); +} + +OPCODE void op0x2F(void) { //undocumented + cpu.ticks = 6; + abso(); + rla(); +} + +OPCODE void op0x30(void) { + cpu.ticks = 2; + rel(); + bmi(); +} + +OPCODE void op0x31(void) { + cpu.ticks = 5; + indy_t(); + op_and(); +} + +OPCODE void op0x33(void) { //undocumented + cpu.ticks = 8; + indy(); + rla(); +} + +OPCODE void op0x34(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x35(void) { + cpu.ticks = 4; + zpx(); + op_and(); +} + +OPCODE void op0x36(void) { + cpu.ticks = 6; + zpx(); + rol(); +} + +OPCODE void op0x37(void) { //undocumented + cpu.ticks = 6; + zpx(); + rla(); +} + +OPCODE void op0x38(void) { + cpu.ticks = 2; + imp(); + sec(); +} + +OPCODE void op0x39(void) { + cpu.ticks = 4; + absy_t(); + op_and(); +} + +OPCODE void op0x3A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x3B(void) { //undocumented + cpu.ticks = 7; + absy(); + rla(); +} + +OPCODE void op0x3C(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0x3D(void) { + cpu.ticks = 4; + absx_t(); + op_and(); +} + +OPCODE void op0x3E(void) { + cpu.ticks = 7; + absx(); + rol(); +} + +OPCODE void op0x3F(void) { //undocumented + cpu.ticks = 7; + absx(); + rla(); +} + +OPCODE void op0x40(void) { + cpu.ticks = 6; + imp(); + rti(); +} + +OPCODE void op0x41(void) { + cpu.ticks = 6; + indx(); + eor(); +} + +OPCODE void op0x43(void) { //undocumented + cpu.ticks = 8; + indx(); + sre(); +} + +OPCODE void op0x44(void) { //nop + cpu.ticks = 3; + zp(); +} + +OPCODE void op0x45(void) { + cpu.ticks = 3; + zp(); + eorZP(); +} + +OPCODE void op0x46(void) { + cpu.ticks = 5; + zp(); + lsrZP(); +} + +OPCODE void op0x47(void) { //undocumented + cpu.ticks = 5; + zp(); + sre(); +} + +OPCODE void op0x48(void) { + cpu.ticks = 3; + imp(); + pha(); +} + +OPCODE void op0x49(void) { + cpu.ticks = 2; + imm(); + eor(); +} + +OPCODE void op0x4A(void) { + cpu.ticks = 2; +// acc(); + lsra(); +} + +OPCODE void op0x4B(void) { //undocumented + cpu.ticks = 2; + imm(); + alr(); +} + +OPCODE void op0x4C(void) { + cpu.ticks = 3; + abso(); + jmp(); +} + +OPCODE void op0x4D(void) { + cpu.ticks = 4; + abso(); + eor(); +} + +OPCODE void op0x4E(void) { + cpu.ticks = 6; + abso(); + lsr(); +} + +OPCODE void op0x4F(void) { //undocumented + cpu.ticks = 6; + abso(); + sre(); +} + +OPCODE void op0x50(void) { + cpu.ticks = 2; + rel(); + bvc(); +} + +OPCODE void op0x51(void) { + cpu.ticks = 5; + indy_t(); + eor(); +} + +OPCODE void op0x53(void) { //undocumented + cpu.ticks = 8; + //zp(); BUG + indy(); + sre(); +} + +OPCODE void op0x54(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x55(void) { + cpu.ticks = 4; + zpx(); + eor(); +} + +OPCODE void op0x56(void) { + cpu.ticks = 6; + zpx(); + lsr(); +} + +OPCODE void op0x57(void) { //undocumented + cpu.ticks = 6; + zpx(); + sre(); +} + +OPCODE void op0x58(void) { + cpu.ticks = 2; + imp(); + cli_(); +} + +OPCODE void op0x59(void) { + cpu.ticks = 4; + absy_t(); + eor(); +} + +OPCODE void op0x5A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x5B(void) { //undocumented + cpu.ticks = 7; + absy(); + sre(); +} + +OPCODE void op0x5C(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0x5D(void) { + cpu.ticks = 4; + absx_t(); + eor(); +} + +OPCODE void op0x5E(void) { + cpu.ticks = 7; + absx(); + lsr(); +} + +OPCODE void op0x5F(void) { //undocumented + cpu.ticks = 7; + absx(); + sre(); +} + +OPCODE void op0x60(void) { + cpu.ticks = 6; + imp(); + rts(); +} + +OPCODE void op0x61(void) { + cpu.ticks = 6; + indx(); + adc(); +} + +OPCODE void op0x63(void) { //undocumented + cpu.ticks = 8; + indx(); + rra(); +} + +OPCODE void op0x64(void) { + cpu.ticks = 3; + zp(); +} + +OPCODE void op0x65(void) { + cpu.ticks = 3; + zp(); + adcZP(); +} + +OPCODE void op0x66(void) { + cpu.ticks = 5; + zp(); + rorZP(); +} + +OPCODE void op0x67(void) { //undocumented + cpu.ticks = 5; + zp(); + rra(); +} + +OPCODE void op0x68(void) { + cpu.ticks = 4; + imp(); + pla(); +} + +OPCODE void op0x69(void) { + cpu.ticks = 2; + imm(); + adc(); +} + +OPCODE void op0x6A(void) { + cpu.ticks = 2; +// acc(); + rora(); +} + +OPCODE void op0x6B(void) { //undocumented + cpu.ticks = 2; + imm(); + arr(); +} + +OPCODE void op0x6C(void) { + cpu.ticks = 5; + ind(); + jmp(); +} + +OPCODE void op0x6D(void) { + cpu.ticks = 4; + abso(); + adc(); +} + +OPCODE void op0x6E(void) { + cpu.ticks = 6; + abso(); + ror(); +} + +OPCODE void op0x6F(void) { //undocumented + cpu.ticks = 6; + abso(); + rra(); +} + +OPCODE void op0x70(void) { + cpu.ticks = 2; + rel(); + bvs(); +} + +OPCODE void op0x71(void) { + cpu.ticks = 5; + indy_t(); + adc(); +} + +OPCODE void op0x73(void) { //undocumented + cpu.ticks = 8; + indy(); + rra(); +} + +OPCODE void op0x74(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x75(void) { + cpu.ticks = 4; + zpx(); + adc(); +} + +OPCODE void op0x76(void) { + cpu.ticks = 6; + zpx(); + ror(); +} + +OPCODE void op0x77(void) { //undocumented + cpu.ticks = 6; + zpx(); + rra(); +} + +OPCODE void op0x78(void) { + cpu.ticks = 2; + imp(); + sei_(); +} + +OPCODE void op0x79(void) { + cpu.ticks = 4; + absy_t(); + adc(); +} + +OPCODE void op0x7A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x7B(void) { //undocumented + cpu.ticks = 7; + absy(); + rra(); +} + +OPCODE void op0x7C(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0x7D(void) { + cpu.ticks = 4; + absx_t(); + adc(); +} + +OPCODE void op0x7E(void) { + cpu.ticks = 7; + absx(); + ror(); +} + +OPCODE void op0x7F(void) { //undocumented + cpu.ticks = 7; + absx(); + rra(); +} + +OPCODE void op0x80(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0x81(void) { + cpu.ticks = 6; + indx(); + sta(); +} + +OPCODE void op0x82(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0x83(void) { //undocumented + cpu.ticks = 6; + indx(); + sax(); +} + +OPCODE void op0x84(void) { + cpu.ticks = 3; + zp(); + sty(); +} + +OPCODE void op0x85(void) { + cpu.ticks = 3; + zp(); + sta(); +} + +OPCODE void op0x86(void) { + cpu.ticks = 3; + zp(); + stx(); +} + +OPCODE void op0x87(void) { //undocumented + cpu.ticks = 3; + zp(); + sax(); +} + +OPCODE void op0x88(void) { + cpu.ticks = 2; + imp(); + dey(); +} + +OPCODE void op0x89(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0x8A(void) { + cpu.ticks = 2; + imp(); + txa(); +} + +OPCODE void op0x8B(void) { //undocumented + cpu.ticks = 2; + imm(); + xaa(); +} + +OPCODE void op0x8C(void) { + cpu.ticks = 4; + abso(); + sty(); +} + +OPCODE void op0x8D(void) { + cpu.ticks = 4; + abso(); + sta(); +} + +OPCODE void op0x8E(void) { + cpu.ticks = 4; + abso(); + stx(); +} + +OPCODE void op0x8F(void) { //undocumented + cpu.ticks = 4; + abso(); + sax(); +} + +OPCODE void op0x90(void) { + cpu.ticks = 2; + rel(); + bcc(); +} + +OPCODE void op0x91(void) { + cpu.ticks = 6; + indy(); + sta(); +} + +OPCODE void op0x93(void) { //undocumented + cpu.ticks = 6; + indy(); + ahx(); +} + +OPCODE void op0x94(void) { + cpu.ticks = 4; + zpx(); + sty(); +} + +OPCODE void op0x95(void) { + cpu.ticks = 4; + zpx(); + sta(); +} + +OPCODE void op0x96(void) { + cpu.ticks = 4; + zpy(); + stx(); +} + +OPCODE void op0x97(void) { //undocumented + cpu.ticks = 4; + zpy(); + sax(); +} + +OPCODE void op0x98(void) { + cpu.ticks = 2; + imp(); + tya(); +} + +OPCODE void op0x99(void) { + cpu.ticks = 5; + absy(); + sta(); +} + +OPCODE void op0x9A(void) { + cpu.ticks = 2; + imp(); + txs(); +} + +OPCODE void op0x9B(void) { //undocumented + cpu.ticks = 5; + absy(); + //tas(); + UNSUPPORTED; +} + +OPCODE void op0x9C(void) { //undocumented + cpu.ticks = 5; + absy(); + //shy(); + UNSUPPORTED; +} + +OPCODE void op0x9D(void) { + cpu.ticks = 5; + absx(); + sta(); +} + +OPCODE void op0x9E(void) { //undocumented + cpu.ticks = 5; + absx(); + //shx(); +} + +OPCODE void op0x9F(void) { //undocumented + cpu.ticks = 5; + absx(); + ahx(); +} + +OPCODE void op0xA0(void) { + cpu.ticks = 2; + imm(); + ldy(); +} + +OPCODE void op0xA1(void) { + cpu.ticks = 6; + indx(); + lda(); +} + +OPCODE void op0xA2(void) { + cpu.ticks = 2; + imm(); + ldx(); +} + +OPCODE void op0xA3(void) { //undocumented + cpu.ticks = 6; + indx(); + lax(); +} + +OPCODE void op0xA4(void) { + cpu.ticks = 3; + zp(); + ldyZP(); +} + +OPCODE void op0xA5(void) { + cpu.ticks = 3; + zp(); + ldaZP(); +} + +OPCODE void op0xA6(void) { + cpu.ticks = 3; + zp(); + ldxZP(); +} + +OPCODE void op0xA7(void) { //undocumented + cpu.ticks = 3; + zp(); + lax(); +} + +OPCODE void op0xA8(void) { + cpu.ticks = 2; + imp(); + tay(); +} + +OPCODE void op0xA9(void) { + cpu.ticks = 2; + imm(); + lda(); +} + +OPCODE void op0xAA(void) { + cpu.ticks = 2; + imp(); + tax(); +} + +OPCODE void op0xAB(void) { //undocumented + cpu.ticks = 2; + imm(); + lxa(); +} + +OPCODE void op0xAC(void) { + cpu.ticks = 4; + abso(); + ldy(); +} + +OPCODE void op0xAD(void) { + cpu.ticks = 4; + abso(); + lda(); +} + +OPCODE void op0xAE(void) { + cpu.ticks = 4; + abso(); + ldx(); +} + +OPCODE void op0xAF(void) { //undocumented + cpu.ticks = 4; + abso(); + lax(); +} + +OPCODE void op0xB0(void) { + cpu.ticks = 2; + rel(); + bcs(); +} + +OPCODE void op0xB1(void) { + cpu.ticks = 5; + indy_t(); + lda(); +} + +OPCODE void op0xB3(void) { //undocumented + cpu.ticks = 5; + indy_t(); + lax(); +} + +OPCODE void op0xB4(void) { + cpu.ticks = 4; + zpx(); + ldy(); +} + +OPCODE void op0xB5(void) { + cpu.ticks = 4; + zpx(); + lda(); +} + +OPCODE void op0xB6(void) { + cpu.ticks = 4; + zpy(); + ldx(); +} + +OPCODE void op0xB7(void) { //undocumented + cpu.ticks = 4; + zpy(); + lax(); +} + +OPCODE void op0xB8(void) { + cpu.ticks = 2; + imp(); + clv(); +} + +OPCODE void op0xB9(void) { + cpu.ticks = 4; + absy_t(); + lda(); +} + +OPCODE void op0xBA(void) { + cpu.ticks = 2; + imp(); + tsx(); +} + +OPCODE void op0xBB(void) { //undocumented + cpu.ticks = 4; + absy_t(); + las(); +} + +OPCODE void op0xBC(void) { + cpu.ticks = 4; + absx_t(); + ldy(); +} + +OPCODE void op0xBD(void) { + cpu.ticks = 4; + absx_t(); + lda(); +} + +OPCODE void op0xBE(void) { + cpu.ticks = 4; + absy_t(); + ldx(); +} + +OPCODE void op0xBF(void) { //undocumented + cpu.ticks = 4; + absy_t(); + lax(); +} + +OPCODE void op0xC0(void) { + cpu.ticks = 2; + imm(); + cpy(); +} + +OPCODE void op0xC1(void) { + cpu.ticks = 6; + indx(); + cmp(); +} + +OPCODE void op0xC2(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0xC3(void) { //undocumented + cpu.ticks = 8; + indx(); + dcp(); +} + +OPCODE void op0xC4(void) { + cpu.ticks = 3; + zp(); + cpyZP(); +} + +OPCODE void op0xC5(void) { + cpu.ticks = 3; + zp(); + cmpZP(); +} + +OPCODE void op0xC6(void) { + cpu.ticks = 5; + zp(); + decZP(); +} + +OPCODE void op0xC7(void) { //undocumented + cpu.ticks = 5; + zp(); + dcp(); +} + +OPCODE void op0xC8(void) { + cpu.ticks = 2; + imp(); + iny(); +} + +OPCODE void op0xC9(void) { + cpu.ticks = 2; + imm(); + cmp(); +} + +OPCODE void op0xCA(void) { + cpu.ticks = 2; + imp(); + dex(); +} + +OPCODE void op0xCB(void) { //undocumented + cpu.ticks = 2; + imm(); + axs(); +} + +OPCODE void op0xCC(void) { + cpu.ticks = 4; + abso(); + cpy(); +} + +OPCODE void op0xCD(void) { + cpu.ticks = 4; + abso(); + cmp(); +} + +OPCODE void op0xCE(void) { + cpu.ticks = 6; + abso(); + dec(); +} + +OPCODE void op0xCF(void) { //undocumented + cpu.ticks = 6; + abso(); + dcp(); +} + +OPCODE void op0xD0(void) { + cpu.ticks = 2; + rel(); + bne(); +} + +OPCODE void op0xD1(void) { + cpu.ticks = 5; + indy_t(); + cmp(); +} + +OPCODE void op0xD3(void) { //undocumented + cpu.ticks = 8; + indy(); + dcp(); +} + +OPCODE void op0xD4(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0xD5(void) { + cpu.ticks = 4; + zpx(); + cmp(); +} + +OPCODE void op0xD6(void) { + cpu.ticks = 6; + zpx(); + dec(); +} + +OPCODE void op0xD7(void) { //undocumented + cpu.ticks = 6; + zpx(); + dcp(); +} + +OPCODE void op0xD8(void) { + cpu.ticks = 2; + imp(); + cld(); +} + +OPCODE void op0xD9(void) { + cpu.ticks = 4; + absy_t(); + cmp(); +} + +OPCODE void op0xDA(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0xDB(void) { //undocumented + cpu.ticks = 7; + absy(); + dcp(); +} + +OPCODE void op0xDC(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0xDD(void) { + cpu.ticks = 4; + absx_t(); + cmp(); +} + +OPCODE void op0xDE(void) { + cpu.ticks = 7; + absx(); + dec(); +} + +OPCODE void op0xDF(void) { //undocumented + cpu.ticks = 7; + absx(); + dcp(); +} + +OPCODE void op0xE0(void) { + cpu.ticks = 2; + imm(); + cpx(); +} + +OPCODE void op0xE1(void) { + cpu.ticks = 5; + indx(); + sbc(); +} + +OPCODE void op0xE2(void) { //NOP + cpu.ticks = 2; + imm(); +} + +OPCODE void op0xE3(void) { //undocumented + cpu.ticks = 8; + indx(); + isb(); +} + +OPCODE void op0xE4(void) { + cpu.ticks = 3; + zp(); + cpxZP(); +} + +OPCODE void op0xE5(void) { + cpu.ticks = 3; + zp(); + sbcZP(); +} + +OPCODE void op0xE6(void) { + cpu.ticks = 5; + zp(); + incZP(); +} + +OPCODE void op0xE7(void) { //undocumented + cpu.ticks = 5; + zp(); + isb(); +} + +OPCODE void op0xE8(void) { + cpu.ticks = 2; + imp(); + inx(); +} + +OPCODE void op0xE9(void) { + cpu.ticks = 2; + imm(); + sbc(); +} + +OPCODE void op0xEA(void) { + cpu.ticks = 2; +} + +OPCODE void op0xEB(void) { + cpu.ticks = 2; + imm(); + sbc(); +} + +OPCODE void op0xEC(void) { + cpu.ticks = 4; + abso(); + cpx(); +} + +OPCODE void op0xED(void) { + cpu.ticks = 4; + abso(); + sbc(); +} + +OPCODE void op0xEE(void) { + cpu.ticks = 6; + abso(); + inc(); +} + +OPCODE void op0xEF(void) { //undocumented + cpu.ticks = 6; + abso(); + isb(); +} + +OPCODE void op0xF0(void) { + cpu.ticks = 2; + rel(); + beq(); +} + +OPCODE void op0xF1(void) { + cpu.ticks = 5; + indy_t(); + sbc(); +} + +OPCODE void op0xF3(void) { //undocumented + cpu.ticks = 8; + indy(); + isb(); +} + +OPCODE void op0xF4(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0xF5(void) { + cpu.ticks = 4; + zpx(); + sbc(); +} + +OPCODE void op0xF6(void) { + cpu.ticks = 6; + zpx(); + inc(); +} + +OPCODE void op0xF7(void) { //undocumented + cpu.ticks = 6; + zpx(); + isb(); +} + +OPCODE void op0xF8(void) { + cpu.ticks = 2; + imp(); + sed(); +} + +OPCODE void op0xF9(void) { + cpu.ticks = 4; + absy_t(); + sbc(); +} + +OPCODE void op0xFA(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0xFB(void) { //undocumented + cpu.ticks = 7; + absy(); + isb(); +} + +OPCODE void op0xFC(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0xFD(void) { + cpu.ticks = 4; + absx_t(); + sbc(); +} + +OPCODE void op0xFE(void) { + cpu.ticks = 7; + absx(); + inc(); +} + +OPCODE void op0xFF(void) { //undocumented + cpu.ticks = 7; + absx(); + isb(); +} + +OPCODE void opPATCHD2(void) { +#if APPLY_PATCHES + patchLOAD(); +#else + opKIL(); +#endif +} + +OPCODE void opPATCHF2(void) { +#if APPLY_PATCHES + patchSAVE(); +#else + opKIL(); +#endif +} + +typedef void (*op_ptr_t)( void ); + +static const op_ptr_t opcodetable[256] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0 */ op0x0 , op0x1, opKIL , op0x3, op0x4 , op0x5, op0x6, op0x7, op0x8, op0x9, op0xA, op0xB , op0xC , op0xD , op0xE , op0xF, + /* 1 */ op0x10, op0x11, opKIL , op0x13, op0x14, op0x15, op0x16, op0x17, op0x18, op0x19, op0x1A, op0x1B, op0x1C, op0x1D, op0x1E, op0x1F, + /* 2 */ op0x20, op0x21, opKIL , op0x23, op0x24, op0x25, op0x26, op0x27, op0x28, op0x29, op0x2A, op0x2B, op0x2C, op0x2D, op0x2E, op0x2F, + /* 3 */ op0x30, op0x31, opKIL , op0x33, op0x34, op0x35, op0x36, op0x37, op0x38, op0x39, op0x3A, op0x3B, op0x3C, op0x3D, op0x3E, op0x3F, + /* 4 */ op0x40, op0x41, opKIL , op0x43, op0x44, op0x45, op0x46, op0x47, op0x48, op0x49, op0x4A, op0x4B, op0x4C, op0x4D, op0x4E, op0x4F, + /* 5 */ op0x50, op0x51, opKIL , op0x53, op0x54, op0x55, op0x56, op0x57, op0x58, op0x59, op0x5A, op0x5B, op0x5C, op0x5D, op0x5E, op0x5F, + /* 6 */ op0x60, op0x61, opKIL , op0x63, op0x64, op0x65, op0x66, op0x67, op0x68, op0x69, op0x6A, op0x6B, op0x6C, op0x6D, op0x6E, op0x6F, + /* 7 */ op0x70, op0x71, opKIL , op0x73, op0x74, op0x75, op0x76, op0x77, op0x78, op0x79, op0x7A, op0x7B, op0x7C, op0x7D, op0x7E, op0x7F, + /* 8 */ op0x80, op0x81, op0x82, op0x83, op0x84, op0x85, op0x86, op0x87, op0x88, op0x89, op0x8A, op0x8B, op0x8C, op0x8D, op0x8E, op0x8F, + /* 9 */ op0x90, op0x91, opKIL , op0x93, op0x94, op0x95, op0x96, op0x97, op0x98, op0x99, op0x9A, op0x9B, op0x9C, op0x9D, op0x9E, op0x9F, + /* A */ op0xA0, op0xA1, op0xA2, op0xA3, op0xA4, op0xA5, op0xA6, op0xA7, op0xA8, op0xA9, op0xAA, op0xAB, op0xAC, op0xAD, op0xAE, op0xAF, + /* B */ op0xB0, op0xB1, opKIL , op0xB3, op0xB4, op0xB5, op0xB6, op0xB7, op0xB8, op0xB9, op0xBA, op0xBB, op0xBC, op0xBD, op0xBE, op0xBF, + /* C */ op0xC0, op0xC1, op0xC2, op0xC3, op0xC4, op0xC5, op0xC6, op0xC7, op0xC8, op0xC9, op0xCA, op0xCB, op0xCC, op0xCD, op0xCE, op0xCF, + /* D */ op0xD0, op0xD1, opPATCHD2 , op0xD3, op0xD4, op0xD5, op0xD6, op0xD7, op0xD8, op0xD9, op0xDA, op0xDB, op0xDC, op0xDD, op0xDE, op0xDF, + /* E */ op0xE0, op0xE1, op0xE2, op0xE3, op0xE4, op0xE5, op0xE6, op0xE7, op0xE8, op0xE9, op0xEA, op0xEB, op0xEC, op0xED, op0xEE, op0xEF, + /* F */ op0xF0, op0xF1, opPATCHF2 , op0xF3, op0xF4, op0xF5, op0xF6, op0xF7, op0xF8, op0xF9, op0xFA, op0xFB, op0xFC, op0xFD, op0xFE, op0xFF +}; + +static const uint8_t cyclesTable[256] = +{ + 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, // $00 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $10 + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, // $20 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $30 + 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, // $40 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $50 + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, // $60 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $70 + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, // $80 + 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, // $90 + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, // $A0 + 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 5, 4, 4, 4, 4, // $B0 + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, // $C0 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $D0 + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, // $E0 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7 // $F0 +}; + +static const uint8_t writeCycleTable[256] = +{ + 3, 0, 0, 2, 0, 0, 2, 2, 1, 0, 0, 0, 0, 0, 2, 2, // $00 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $10 + 2, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $20 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $30 + 0, 0, 0, 2, 0, 0, 2, 2, 1, 0, 0, 0, 0, 0, 2, 2, // $40 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $50 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $60 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $70 + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, // $80 + 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, // $90 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // $A0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // $B0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $C0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $D0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $E0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2 // $F0 +}; + + +void cpu_nmi() { + cpu.nmiLine = 1; + printf("nmiLine=1\n"); +} +void cpu_clearNmi() { + cpu.nmi = 0; +} + +void cpu_nmi_do() { + if (cpu.nmi) return; + cpu.nmi = 1; + cpu.nmiLine = 0; + push16(cpu.pc); + push8(cpu.cpustatus & ~FLAG_BREAK); + cpu.cpustatus |= FLAG_INTERRUPT; + cpu.pc = read6502(0xFFFA) | (read6502(0xFFFB) << 8); + cpu.ticks = 7; +} + +static inline void cpu_irq() { + push16(cpu.pc); + push8(cpu.cpustatus & ~FLAG_BREAK); + cpu.cpustatus |= FLAG_INTERRUPT; + cpu.pc = read6502(0xFFFE) | (read6502(0xFFFF) << 8); + cpu.ticks = 7; +} + +inline void cia_clock(void) __attribute__((always_inline)); + +void cia_clock(void) { + cia1_clock(1); + cia2_clock(1); +} + +void cia_clockt(int ticks) { + cia1_clock(ticks); + cia2_clock(ticks); +} + +void cpu_clock(int cycles) { +static int c = 0; +static int writeCycles = 0; + cpu.lineCyclesAbs += cycles; + c+=cycles; + while (c > 0) { + + uint8_t opcode ; + cpu.ticks = 0; + + //NMI + + if (!cpu.nmi && ((cpu.cia2.R[0x0D] & 0x80) | cpu.nmiLine)) { + cpu_nmi_do(); + goto noOpcode; + } + + if (!(cpu.cpustatus & FLAG_INTERRUPT)) { + if (((cpu.vic.R[0x19] | cpu.cia1.R[0x0D]) & 0x80)) { + cpu_irq(); + goto noOpcode; + } + } + + cpu.cpustatus |= FLAG_CONSTANT; + opcode = read6502(cpu.pc++); + opcodetable[opcode](); + writeCycles = writeCycleTable[opcode]; +noOpcode: + + cia_clockt(cpu.ticks); + c-= cpu.ticks; + cpu.lineCycles += cpu.ticks; + + if (cpu.exactTiming) { + uint32_t t = cpu.lineCycles * MCU_C64_RATIO; + //while (ARM_DWT_CYCCNT - cpu.lineStartTime < t){;} + } + + }; + + return; +} + +//Enable "ExactTiming" Mode +void cpu_setExactTiming() { + if (!cpu.exactTiming) { + //enable exact timing + setAudioOff(); + vic_displaySimpleModeScreen(); + + } + cpu.exactTiming = 1; + //cpu.exactTimingStartTime = ARM_DWT_CYCCNT; + cpu.exactTiming = 0; +} + +//Disable "ExactTiming" Mode +void cpu_disableExactTiming() { + cpu.exactTiming = 0; + setAudioOn(); +} + +void cpu_reset() { + enableCycleCounter(); + cpu.exactTiming = 0; + cpu.nmi = 0; + cpu.cpustatus = FLAG_CONSTANT; + cpu.pc = read6502(0xFFFC) | (read6502(0xFFFD) << 8); + cpu.sp = 0xFD; +} \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/cpu.h b/MCUME_esp32/esp64/main/cpu.h new file mode 100755 index 0000000..1c6c602 --- /dev/null +++ b/MCUME_esp32/esp64/main/cpu.h @@ -0,0 +1,334 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_cpu_h_ +#define Teensy64_cpu_h_ + +//#include + + +#define INLINE static inline __attribute__((always_inline)) +#define INLINEOP static inline __attribute__((always_inline, flatten)) +#define OPCODE static + +#define RAMSIZE 65536 //Bytes + + +#include "Teensy64.h" +#include "roms.h" +#include "patches.h" +#include "util.h" +#include "pla.h" +#include "vic.h" +#include "keyboard.h" +#include "cia1.h" +#include "cia2.h" + + +//#include +//extern AudioPlaySID playSID; +//extern AudioOutputAnalog audioout; + +#define BASE_STACK 0x100 + +struct tio { + uint32_t gpioa, gpiob, gpioc, gpiod, gpioe; +}__attribute__((packed, aligned(4))); + +struct tcpu { + uint32_t exactTimingStartTime; + uint8_t exactTiming; + + //6502 CPU registers + uint8_t sp, a, x, y, cpustatus; + uint8_t penaltyop, penaltyaddr; + uint8_t nmi; + uint16_t pc; + + //helper variables + uint16_t reladdr; + uint16_t ea; + + uint16_t lineCyclesAbs; //for debug + unsigned ticks; + unsigned lineCycles; + unsigned long lineStartTime; + + r_rarr_ptr_t plamap_r; //Memory-Mapping read + w_rarr_ptr_t plamap_w; //Memory-Mapping write + uint8_t _exrom:1, _game:1; + uint8_t nmiLine; + uint8_t swapJoysticks; + + tvic vic; + tcia cia1; + tcia cia2; + + union { + uint8_t RAM[RAMSIZE]; + uint16_t RAM16[RAMSIZE/2]; + uint32_t RAM32[RAMSIZE/4]; + }; + + + + uint8_t cartrigeLO[1]; //TODO + uint8_t cartrigeHI[1]; //TODO + +}; + +extern struct tio io; +extern struct tcpu cpu; + +void cpu_reset(); +void cpu_nmi(); +void cpu_clearNmi(); +void cpu_clock(int cycles); +void cpu_setExactTiming(); +void cpu_disableExactTiming(); + +void cia_clockt(int ticks); + +#define CORE_PIN0_PORT io.gpiob +#define CORE_PIN1_PORT io.gpiob +#define CORE_PIN2_PORT io.gpiod +#define CORE_PIN3_PORT io.gpioa +#define CORE_PIN4_PORT io.gpioa +#define CORE_PIN5_PORT io.gpiod +#define CORE_PIN6_PORT io.gpiod +#define CORE_PIN7_PORT io.gpiod +#define CORE_PIN8_PORT io.gpiod +#define CORE_PIN9_PORT io.gpioc +#define CORE_PIN10_PORT io.gpioc +#define CORE_PIN11_PORT io.gpioc +#define CORE_PIN12_PORT io.gpioc +#define CORE_PIN13_PORT io.gpioc +#define CORE_PIN14_PORT io.gpiod +#define CORE_PIN15_PORT io.gpioc +#define CORE_PIN16_PORT io.gpiob +#define CORE_PIN17_PORT io.gpiob +#define CORE_PIN18_PORT io.gpiob +#define CORE_PIN19_PORT io.gpiob +#define CORE_PIN20_PORT io.gpiod +#define CORE_PIN21_PORT io.gpiod +#define CORE_PIN22_PORT io.gpioc +#define CORE_PIN23_PORT io.gpioc +#define CORE_PIN24_PORT io.gpioe +#define CORE_PIN25_PORT io.gpioa +#define CORE_PIN26_PORT io.gpioa +#define CORE_PIN27_PORT io.gpioa +#define CORE_PIN28_PORT io.gpioa +#define CORE_PIN29_PORT io.gpiob +#define CORE_PIN30_PORT io.gpiob +#define CORE_PIN31_PORT io.gpiob +#define CORE_PIN32_PORT io.gpiob +#define CORE_PIN33_PORT io.gpioe +#define CORE_PIN34_PORT io.gpioe +#define CORE_PIN35_PORT io.gpioc +#define CORE_PIN36_PORT io.gpioc +#define CORE_PIN37_PORT io.gpioc +#define CORE_PIN38_PORT io.gpioc +#define CORE_PIN39_PORT io.gpioa +#define CORE_PIN40_PORT io.gpioa +#define CORE_PIN41_PORT io.gpioa +#define CORE_PIN42_PORT io.gpioa +#define CORE_PIN43_PORT io.gpiob +#define CORE_PIN44_PORT io.gpiob +#define CORE_PIN45_PORT io.gpiob +#define CORE_PIN46_PORT io.gpiob +#define CORE_PIN47_PORT io.gpiod +#define CORE_PIN48_PORT io.gpiod +#define CORE_PIN49_PORT io.gpiob +#define CORE_PIN50_PORT io.gpiob +#define CORE_PIN51_PORT io.gpiod +#define CORE_PIN52_PORT io.gpiod +#define CORE_PIN53_PORT io.gpiod +#define CORE_PIN54_PORT io.gpiod +#define CORE_PIN55_PORT io.gpiod +#define CORE_PIN56_PORT io.gpioe +#define CORE_PIN57_PORT io.gpioe +#define CORE_PIN58_PORT io.gpioe +#define CORE_PIN59_PORT io.gpioe +#define CORE_PIN60_PORT io.gpioe +#define CORE_PIN61_PORT io.gpioe +#define CORE_PIN62_PORT io.gpioe +#define CORE_PIN63_PORT io.gpioe + +static inline uint8_t gpioRead(uint8_t pin) __attribute__((always_inline, unused)); +static inline uint8_t gpioRead(uint8_t pin) +{ + /* + if (__builtin_constant_p(pin)) { + if (pin == 0) { + return (CORE_PIN0_PORT & CORE_PIN0_BITMASK) ? 1 : 0; + } else if (pin == 1) { + return (CORE_PIN1_PORT & CORE_PIN1_BITMASK) ? 1 : 0; + } else if (pin == 2) { + return (CORE_PIN2_PORT & CORE_PIN2_BITMASK) ? 1 : 0; + } else if (pin == 3) { + return (CORE_PIN3_PORT & CORE_PIN3_BITMASK) ? 1 : 0; + } else if (pin == 4) { + return (CORE_PIN4_PORT & CORE_PIN4_BITMASK) ? 1 : 0; + } else if (pin == 5) { + return (CORE_PIN5_PORT & CORE_PIN5_BITMASK) ? 1 : 0; + } else if (pin == 6) { + return (CORE_PIN6_PORT & CORE_PIN6_BITMASK) ? 1 : 0; + } else if (pin == 7) { + return (CORE_PIN7_PORT & CORE_PIN7_BITMASK) ? 1 : 0; + } else if (pin == 8) { + return (CORE_PIN8_PORT & CORE_PIN8_BITMASK) ? 1 : 0; + } else if (pin == 9) { + return (CORE_PIN9_PORT & CORE_PIN9_BITMASK) ? 1 : 0; + } else if (pin == 10) { + return (CORE_PIN10_PORT & CORE_PIN10_BITMASK) ? 1 : 0; + } else if (pin == 11) { + return (CORE_PIN11_PORT & CORE_PIN11_BITMASK) ? 1 : 0; + } else if (pin == 12) { + return (CORE_PIN12_PORT & CORE_PIN12_BITMASK) ? 1 : 0; + } else if (pin == 13) { + return (CORE_PIN13_PORT & CORE_PIN13_BITMASK) ? 1 : 0; + } else if (pin == 14) { + return (CORE_PIN14_PORT & CORE_PIN14_BITMASK) ? 1 : 0; + } else if (pin == 15) { + return (CORE_PIN15_PORT & CORE_PIN15_BITMASK) ? 1 : 0; + } else if (pin == 16) { + return (CORE_PIN16_PORT & CORE_PIN16_BITMASK) ? 1 : 0; + } else if (pin == 17) { + return (CORE_PIN17_PORT & CORE_PIN17_BITMASK) ? 1 : 0; + } else if (pin == 18) { + return (CORE_PIN18_PORT & CORE_PIN18_BITMASK) ? 1 : 0; + } else if (pin == 19) { + return (CORE_PIN19_PORT & CORE_PIN19_BITMASK) ? 1 : 0; + } else if (pin == 20) { + return (CORE_PIN20_PORT & CORE_PIN20_BITMASK) ? 1 : 0; + } else if (pin == 21) { + return (CORE_PIN21_PORT & CORE_PIN21_BITMASK) ? 1 : 0; + } else if (pin == 22) { + return (CORE_PIN22_PORT & CORE_PIN22_BITMASK) ? 1 : 0; + } else if (pin == 23) { + return (CORE_PIN23_PORT & CORE_PIN23_BITMASK) ? 1 : 0; + } else if (pin == 24) { + return (CORE_PIN24_PORT & CORE_PIN24_BITMASK) ? 1 : 0; + } else if (pin == 25) { + return (CORE_PIN25_PORT & CORE_PIN25_BITMASK) ? 1 : 0; + } else if (pin == 26) { + return (CORE_PIN26_PORT & CORE_PIN26_BITMASK) ? 1 : 0; + } else if (pin == 27) { + return (CORE_PIN27_PORT & CORE_PIN27_BITMASK) ? 1 : 0; + } else if (pin == 28) { + return (CORE_PIN28_PORT & CORE_PIN28_BITMASK) ? 1 : 0; + } else if (pin == 29) { + return (CORE_PIN29_PORT & CORE_PIN29_BITMASK) ? 1 : 0; + } else if (pin == 30) { + return (CORE_PIN30_PORT & CORE_PIN30_BITMASK) ? 1 : 0; + } else if (pin == 31) { + return (CORE_PIN31_PORT & CORE_PIN31_BITMASK) ? 1 : 0; + } else if (pin == 32) { + return (CORE_PIN32_PORT & CORE_PIN32_BITMASK) ? 1 : 0; + } else if (pin == 33) { + return (CORE_PIN33_PORT & CORE_PIN33_BITMASK) ? 1 : 0; + } else if (pin == 34) { + return (CORE_PIN34_PORT & CORE_PIN34_BITMASK) ? 1 : 0; + } else if (pin == 35) { + return (CORE_PIN35_PORT & CORE_PIN35_BITMASK) ? 1 : 0; + } else if (pin == 36) { + return (CORE_PIN36_PORT & CORE_PIN36_BITMASK) ? 1 : 0; + } else if (pin == 37) { + return (CORE_PIN37_PORT & CORE_PIN37_BITMASK) ? 1 : 0; + } else if (pin == 38) { + return (CORE_PIN38_PORT & CORE_PIN38_BITMASK) ? 1 : 0; + } else if (pin == 39) { + return (CORE_PIN39_PORT & CORE_PIN39_BITMASK) ? 1 : 0; + } else if (pin == 40) { + return (CORE_PIN40_PORT & CORE_PIN40_BITMASK) ? 1 : 0; + } else if (pin == 41) { + return (CORE_PIN41_PORT & CORE_PIN41_BITMASK) ? 1 : 0; + } else if (pin == 42) { + return (CORE_PIN42_PORT & CORE_PIN42_BITMASK) ? 1 : 0; + } else if (pin == 43) { + return (CORE_PIN43_PORT & CORE_PIN43_BITMASK) ? 1 : 0; + } else if (pin == 44) { + return (CORE_PIN44_PORT & CORE_PIN44_BITMASK) ? 1 : 0; + } else if (pin == 45) { + return (CORE_PIN45_PORT & CORE_PIN45_BITMASK) ? 1 : 0; + } else if (pin == 46) { + return (CORE_PIN46_PORT & CORE_PIN46_BITMASK) ? 1 : 0; + } else if (pin == 47) { + return (CORE_PIN47_PORT & CORE_PIN47_BITMASK) ? 1 : 0; + } else if (pin == 48) { + return (CORE_PIN48_PORT & CORE_PIN48_BITMASK) ? 1 : 0; + } else if (pin == 49) { + return (CORE_PIN49_PORT & CORE_PIN49_BITMASK) ? 1 : 0; + } else if (pin == 50) { + return (CORE_PIN50_PORT & CORE_PIN50_BITMASK) ? 1 : 0; + } else if (pin == 51) { + return (CORE_PIN51_PORT & CORE_PIN51_BITMASK) ? 1 : 0; + } else if (pin == 52) { + return (CORE_PIN52_PORT & CORE_PIN52_BITMASK) ? 1 : 0; + } else if (pin == 53) { + return (CORE_PIN53_PORT & CORE_PIN53_BITMASK) ? 1 : 0; + } else if (pin == 54) { + return (CORE_PIN54_PORT & CORE_PIN54_BITMASK) ? 1 : 0; + } else if (pin == 55) { + return (CORE_PIN55_PORT & CORE_PIN55_BITMASK) ? 1 : 0; + } else if (pin == 56) { + return (CORE_PIN56_PORT & CORE_PIN56_BITMASK) ? 1 : 0; + } else if (pin == 57) { + return (CORE_PIN57_PORT & CORE_PIN57_BITMASK) ? 1 : 0; + } else if (pin == 58) { + return (CORE_PIN58_PORT & CORE_PIN58_BITMASK) ? 1 : 0; + } else if (pin == 59) { + return (CORE_PIN59_PORT & CORE_PIN59_BITMASK) ? 1 : 0; + } else if (pin == 60) { + return (CORE_PIN60_PORT & CORE_PIN60_BITMASK) ? 1 : 0; + } else if (pin == 61) { + return (CORE_PIN61_PORT & CORE_PIN61_BITMASK) ? 1 : 0; + } else if (pin == 62) { + return (CORE_PIN62_PORT & CORE_PIN62_BITMASK) ? 1 : 0; + } else if (pin == 63) { + return (CORE_PIN63_PORT & CORE_PIN63_BITMASK) ? 1 : 0; + } else { + return 0; + } + } else { + Serial.println("Warning: Pin# not constant"); + return digitalRead(pin); + } + */ + return 0; + +} + +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/emuapi.cpp b/MCUME_esp32/esp64/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/esp64/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " C64 Emulator " +#define ROMSDIR "c64" + +#define emu_Init(ROM) {c64_Init(); c64_Start(ROM);} +#define emu_Step() {c64_Step();} +#define emu_Input(x) {c64_Input(x);} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 16 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 162 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +#define custom_key_shift 1 +#define custom_key_backspace 2 +#define custom_key_reset 3 +#define custom_key_dir 4 +#define custom_key_exitkbd 5 +#define custom_key_restore 6 +#define custom_key_swapjoy 7 // not implemented + + +const unsigned short keysw[]= +{ TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_END}; + +const unsigned short keys[]={ +'1','2','3','4','5','6','7','8','9','0', +'Q','W','E','R','T','Y','U','I','O','P', +'A','S','D','F','G','H','J','K','L', 13, +'Z','X','C','V','B','N','M',',','.',' ', +'+','-','*',':',';','=',133,135,137,139 }; +//'/' +//'@',/*(char)'£'*/ '~',128 /*arr up*/,custom_key_restore,, +//custom_key_shift,17,29,, + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + 0X0580,0X0540,0X0520,0X0510,0X0508,0X0504,0X0502,0X0501,0X0680,0X0640 }; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + + diff --git a/MCUME_esp32/esp64/main/font8x8.h b/MCUME_esp32/esp64/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/esp64/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/esp64/main/go.cpp b/MCUME_esp32/esp64/main/go.cpp new file mode 100644 index 0000000..e6948ad --- /dev/null +++ b/MCUME_esp32/esp64/main/go.cpp @@ -0,0 +1,100 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +#include "c64.h" + + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/esp64/main/go.h b/MCUME_esp32/esp64/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/esp64/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/ili9341_t3dma.cpp b/MCUME_esp32/esp64/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/esp64/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/esp64/main/ili9341_t3dma.h b/MCUME_esp32/esp64/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/esp64/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/esp64/main/iopins.h b/MCUME_esp32/esp64/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/esp64/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/esp64/main/keyboard.h b/MCUME_esp32/esp64/main/keyboard.h new file mode 100755 index 0000000..2c13ef3 --- /dev/null +++ b/MCUME_esp32/esp64/main/keyboard.h @@ -0,0 +1,49 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_keyboard_h_ +#define Teensy64_keyboard_h_ + +void initKeyboard(); +void initJoysticks(); + +void sendKey(char key); +void sendString(const char * p); +void do_sendString();//call in yield() + +uint8_t cia1PORTA(void); +uint8_t cia1PORTB(void); + +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/keyboard_osd.h b/MCUME_esp32/esp64/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/esp64/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/esp64/main/main.c b/MCUME_esp32/esp64/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/esp64/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/esp64/main/output_dac.h b/MCUME_esp32/esp64/main/output_dac.h new file mode 100755 index 0000000..d868f94 --- /dev/null +++ b/MCUME_esp32/esp64/main/output_dac.h @@ -0,0 +1,52 @@ +/* Audio Library for Teensy 3.X + * Copyright (c) 2014, Paul Stoffregen, paul@pjrc.com + * + * Development of this audio library was funded by PJRC.COM, LLC by sales of + * Teensy and Audio Adaptor boards. Please support PJRC's efforts to develop + * open source software by purchasing Teensy or other PJRC products. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation 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 + * furnished to do so, subject to the following conditions: + * + * The above copyright notice, development funding 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 FOR 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 output_dac_h_ +#define output_dac_h_ + +#include "reSID.h" +extern AudioPlaySID playSID; + + +class AudioOutputAnalog +{ +public: + //AudioOutputAnalog(void) : AudioStream(1, inputQueueArray) { begin(); } + virtual void update(void); + void begin(void); + void analogReference(int ref); + //static DMAChannel dma; +//private: + //static audio_block_t *block_left_1st; + //static audio_block_t *block_left_2nd; + static bool update_responsibility; + //audio_block_t *inputQueueArray[1]; + static void isr(void); + static uint8_t volume; + +}; + +#endif diff --git a/MCUME_esp32/esp64/main/patches.cpp b/MCUME_esp32/esp64/main/patches.cpp new file mode 100755 index 0000000..40e18f6 --- /dev/null +++ b/MCUME_esp32/esp64/main/patches.cpp @@ -0,0 +1,290 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include "patches.h" + + +#define DIRECTORY ROMSDIR + "/\0" + +static char filename[64]; +static char buffer[2]; + +extern char * menuSelection(void); + +void patchLOAD(void) { + +int device; +int secondaryAddress; +uint16_t addr,size; + + //printf("Patched LOAD\n"); + device = cpu.RAM[0xBA]; + if (device != 1) { + //Jump to unpatched original address: + cpu.pc = rom_kernal[cpu.pc - 0xe000 + 1] * 256 + rom_kernal[cpu.pc - 0xe000]; + return; + }; + + +#if XXX + if (cpu.RAM[cpu.RAM[0xBC] * 256 + cpu.RAM[0xBB]] == '$' && cpu.RAM[0xB7] == 1) { + //Directoy listing with LOAD "$" + printf("Listing of "); + printf(DIRECTORY); + printf("\n"); + file = SD.open(DIRECTORY); + int blocks, start, len; + addr = cpu.RAM[0x2C] * 256 + cpu.RAM[0x2B]; + + /*first line of BASIC listing */ + start = addr; + cpu.RAM[addr++] = (start + 30) & 0xff; + cpu.RAM[addr++] = (start + 30) >> 8; + blocks = 0; + cpu.RAM[addr++] = blocks & 0xff; + cpu.RAM[addr++] = blocks >> 8; + + const char title[] = "\x12\"TEENSY64 \" FB " VERSION; + strcpy((char * )&cpu.RAM[addr], title); + addr = start + 30; + + while (true) { + entry = file.openNextFile(); + if (! entry) { + // no more files + break; + } + int offset; + if (!entry.isDirectory()) { + + /* Listing to BASIC-RAM */ + start = addr; + offset = 0; + + //pointer to next line: + cpu.RAM[addr++] = (start + 32) & 0xff; + cpu.RAM[addr++] = (start + 32) >> 8; + + //# of blocks + blocks = ceil((float)entry.size()/256.0f); + cpu.RAM[addr++] = blocks & 0xff; + cpu.RAM[addr++] = blocks >> 8; + + if (blocks < 100) { cpu.RAM[addr++] = ' '; offset++;} + if (blocks < 10) { cpu.RAM[addr++] = ' '; offset++; } + cpu.RAM[addr++] = ' '; + + //filename: + cpu.RAM[addr++] = '"'; + char *s = (char * )&cpu.RAM[addr]; + entry.getName(s, 17); + while(*s) {*s = toupper(*s); s++;} + //strcpy((char * )&cpu.RAM[addr], entry.name()); + len = strlen((char * )&cpu.RAM[addr]); + + if (len > 16) len = 16; + addr += len; + cpu.RAM[addr++] = '"'; + + //fill with space + while ((addr-start) < (32)) { cpu.RAM[addr++] = ' ';} + + //display "PRG" + addr = start + 23 + offset; + cpu.RAM[addr++] = ' '; + cpu.RAM[addr++] = 'P'; + cpu.RAM[addr++] = 'R'; + cpu.RAM[addr++] = 'G'; + + //line-ending + cpu.RAM[start+31] = 0; + addr = start + 32; + + /* Listing to serial console */ + itoa (blocks,filename,10); + len = strlen(filename); + while (len < 4) { strcat(filename," "); len++; }; + strcat(filename, "\""); + char nbuf[18] = {0}; + entry.getName(nbuf, 17); + strcat(filename, nbuf); + //strcat(filename, entry.getName()); + strcat(filename, "\""); + len = strlen(filename); + while (len < 18+4) { strcat(filename," "); len++; }; + strcat(filename," PRG "); + //printf(filename); + + } + entry.close(); + } + file.close(); + + /*add last line to BASIC listing*/ + start = addr; + cpu.RAM[addr++] = (start + 32) & 0xff; + cpu.RAM[addr++] = (start + 32) >> 8; + //# of blocks. todo : determine free space on sd card + blocks = 65535; + cpu.RAM[addr++] = blocks & 0xff; + cpu.RAM[addr++] = blocks >> 8; + if (blocks < 100) { cpu.RAM[addr++] = ' ';} + if (blocks < 10) { cpu.RAM[addr++] = ' ';} + const char blockfree[] = "BLOCKS FREE."; + + strcpy((char * )&cpu.RAM[addr], blockfree); + len = strlen(blockfree); + addr += len; + while ((addr-start) < (32)) { cpu.RAM[addr++] = ' ';} + cpu.RAM[start+31] = 0; + cpu.RAM[start+32] = 0; + cpu.RAM[start+33] = 0; + + cpu.y = 0x49; //Offset for "LOADING" + cpu.pc = 0xF12B; //Print and return + return; + } // end directory listing +#endif + + //$B7 : Length of file name or disk command + //$BB-$BC: Pointer to current file name or disk command + memset(filename,0,sizeof(filename)); + if ( cpu.RAM[0xB7] == 0) { + strcpy(filename,menuSelection()); + } + else { + strncpy(filename, (char*)&cpu.RAM[cpu.RAM[0xBC] * 256 + cpu.RAM[0xBB]], cpu.RAM[0xB7] ); + } + secondaryAddress = cpu.RAM[0xB9]; + + printf("%s,%d,%d:", filename, device, secondaryAddress); + + + if (emu_FileOpen(filename) == 0) { + printf("not found.\n"); + cpu.pc = 0xf530; //Jump to $F530 + return; + } + + size = emu_FileSize(filename); + emu_FileOpen(filename); + emu_FileRead(buffer, 2); + addr = buffer[1] * 256 + buffer[0]; + emu_FileRead((char*)&cpu.RAM[addr], size - 2); + emu_FileClose(); + + cpu.RAM[0xAF] = (addr + size - 2) & 0xff; + cpu.RAM[0xAE] = (addr + size - 2) / 256; + + cpu.y = 0x49; //Offset for "LOADING" + cpu.pc = 0xF12B; //Print and return + printf("loaded.\n"); + + return; +} + +void patchSAVE(void) { +#ifdef XXX +int device; +int secondaryAddress; +uint16_t addr,size; + + Serial.println("Patched SAVE"); + device = cpu.RAM[0xBA]; + if (device != 1) { + //Jump to unpatched original address: + cpu.pc = rom_kernal[cpu.pc - 0xe000 + 1] * 256 + rom_kernal[cpu.pc - 0xe000]; + return; + }; + + if (!SDinitialized) { + cpu.pc = 0xF707; //Device not present error + Serial.println("SD Card not initialized"); + return; + } + + if( !SD.exists(DIRECTORY) && SD.mkdir(DIRECTORY) ) { + cpu.pc = 0xF707; //Device not present error + Serial.println("SD: Could not create " DIRECTORY); + } + + //$B7 : Length of file name or disk command + //$BB-$BC: Pointer to current file name or disk command + memset(filename,0,sizeof(filename)); + strcpy(filename, DIRECTORY); + strncat(filename, (char*)&cpu.RAM[cpu.RAM[0xBC] * 256 + cpu.RAM[0xBB]], cpu.RAM[0xB7] ); + + secondaryAddress = cpu.RAM[0xB9]; + + Serial.print(filename); + Serial.print(","); + Serial.print(device); + Serial.print(","); + Serial.print(secondaryAddress); + Serial.print(":"); + + addr = cpu.RAM[cpu.a + 1] * 256 + cpu.RAM[cpu.a]; + size = (cpu.y * 256 + cpu.x) - addr; + + buffer[0] = addr & 0xff; + buffer[1] = addr >> 8; + + if (SD.exists(filename)) SD.remove(filename); + file = SD.open(filename, FILE_WRITE); + if (!file) { + Serial.println ("not possible."); + cpu.pc = 0xf530; //Jump to $F530 + return; + } + file.write(buffer, 2); + file.write(&cpu.RAM[addr], size); + file.close(); + + if (cpu.RAM[0x9D] & 128) { + uint16_t pushval = 0xF68D; + cpu.RAM[BASE_STACK + cpu.sp] = (pushval >> 8) & 0xFF; + cpu.RAM[BASE_STACK + ((cpu.sp - 1) & 0xFF)] = pushval & 0xFF; + cpu.sp -= 2; + + cpu.y = 0x51; + cpu.pc = 0xF12F; + } else { + cpu.pc = 0xF68D; + } + + Serial.println("saved."); + return; +#endif +} diff --git a/MCUME_esp32/esp64/main/patches.h b/MCUME_esp32/esp64/main/patches.h new file mode 100755 index 0000000..34a1646 --- /dev/null +++ b/MCUME_esp32/esp64/main/patches.h @@ -0,0 +1,44 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ +#ifndef Teensy64_patches_h_ +#define Teensy64_patches_h_ + +#include "cpu.h" +#include "roms.h" + +void patchLOAD(void); +void patchSAVE(void); + +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/pla.cpp b/MCUME_esp32/esp64/main/pla.cpp new file mode 100755 index 0000000..58ccf58 --- /dev/null +++ b/MCUME_esp32/esp64/main/pla.cpp @@ -0,0 +1,1114 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include +#include "roms.h" +#include "cpu.h" + +#include "pla.h" +#include "vic.h" +#include "cia1.h" +#include "cia2.h" + + +extern CONSTROM rarray_t PLA_READ[8]; +extern CONSTROM warray_t PLA_WRITE[8]; + +uint8_t r_ram(uint32_t address) { return cpu.RAM[address]; } +uint8_t r_bas(uint32_t address) { return rom_basic[address & (sizeof(rom_basic)-1)]; } //BASIC ROM +uint8_t r_ker(uint32_t address) { return rom_kernal[address & (sizeof(rom_kernal)-1)]; } //KERNAL ROM +uint8_t r_chr(uint32_t address) { return rom_characters[address & (sizeof(rom_characters)-1)]; } //CHARACTER ROM +uint8_t r_vic(uint32_t address) { return vic_read(address); } +#ifdef HAS_SND +uint8_t r_sid(uint32_t address) { return playSID.getreg(address & 0x1F);} +#else +uint8_t r_sid(uint32_t address) { return 0;} +#endif +uint8_t r_col(uint32_t address) { return cpu.vic.COLORRAM[address & 0x3FF]; } +uint8_t r_cia1(uint32_t address) { return cia1_read(address); } +uint8_t r_cia2(uint32_t address) { return cia2_read(address); } +uint8_t r_crtL(uint32_t address) { return cpu.cartrigeLO[address & 0x1fff]; } //Cartrige Low ($8000) +uint8_t r_crtH(uint32_t address) { return cpu.cartrigeHI[address & 0x1fff]; } +uint8_t r_nul(uint32_t address) { return 0;} //No RAM for Ultimax-cartrige +uint8_t r_rnd(uint32_t address) { return 255;} //Random for $DE00-$DFFF + +void w_ram( uint32_t address, uint8_t value ) { + cpu.RAM[address ]=value; +} +void w_ramz( uint32_t address, uint8_t value ) { + cpu.RAM[address]=value; //zeropage + if (address==1) { //6510 Port + value &= 0x07; + cpu.plamap_r = (rarray_t*)&PLA_READ[value]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[value]; + } + } +void w_vic( uint32_t address, uint8_t value ) { vic_write(address, value); } +void w_col( uint32_t address, uint8_t value ) { cpu.vic.COLORRAM[address & 0x3FF] = value & 0x0F;} +#ifdef HAS_SND +void w_sid( uint32_t address, uint8_t value ) { playSID.setreg(address & 0x1F, value); } +#else +void w_sid( uint32_t address, uint8_t value ) { } +#endif +void w_cia1( uint32_t address, uint8_t value ) { cia1_write(address, value); } +void w_cia2( uint32_t address, uint8_t value ) { cia2_write(address, value); } + +/* + LORAM (bit 0) can generally be thought of as a control line which banks + the 8K byte BASIC ROM in and out of the microprocessor address space. + Normally, this line is HIGH for BASIC operation. If this line is + programmed LOW, the BASIC ROM will disappear from the memory map and be + replaced by 8K bytes of RAM from $A000-$BFFF. + + HIRAM (bit 1) can generally be thought of as a control line which banks + the 8K byte KERNAL ROM in and out of the microprocessor address space. + Normally, this line is HIGH for BASIC operation. If this line is + programmed LOW, the KERNAL ROM will disappear from the memory map and be + replaced by 8K bytes of RAM from $E000-$FFFF. + + CHAREN (bit 2) is used only to bank the 4K byte character generator ROM + in or out of the microprocessor address space. From the processor point + of view, the character ROM occupies the same address space as the I/O + devices ($D000-$DFFF). When the CHAREN line is set to 1 (as is normal), + the I/O devices appear in the microprocessor address space, and the + character ROM is not accessable. When the CHAREN bit is cleared to 0, the + character ROM appears in the processor address space, and the I/O devices + are not accessible. (The microprocessor only needs to access the + character ROM when downloading the character set from ROM to RAM. Special + care is needed for this... see the section on PROGRAMMABLE CHARACTERS in + the GRAPHICS chapter). CHAREN can be overridden by other control lines in + certain memory configurations. CHAREN will have no effect on any memory + configuration without I/O devices. RAM will appear from $D000-$DFFF + instead. + */ + + /* + Bit+-------------+-----------+------------+ + 210| $8000-$BFFF |$D000-$DFFF|$E000-$FFFF | + +---+---+-------------+-----------+------------+ + | 7 |111| Cart.+Basic | I/O | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 6 |110| RAM | I/O | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 5 |101| RAM | I/O | RAM | + +---+---+-------------+-----------+------------+ + | 4 |100| RAM | RAM | RAM | + +---+---+-------------+-----------+------------+ + | 3 |011| Cart.+Basic | Char. ROM | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 2 |010| RAM | Char. ROM | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 1 |001| RAM | Char. ROM | RAM | + +---+---+-------------+-----------+------------+ + | 0 |000| RAM | RAM | RAM | + +---+---+-------------+-----------+------------+ + ||| + /CharEn|/LoRam + | + /HiRam + */ + +CONSTROM +rarray_t PLA_READ[8] = { + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* A0 */ // r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ // r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker} +}; + +CONSTROM +warray_t PLA_WRITE[8] = { + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram,}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram,}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_vic, w_vic, w_vic, w_vic, w_sid, w_sid, w_sid, w_sid, w_col, w_col, w_col, w_col, w_cia1, w_cia2, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_vic, w_vic, w_vic, w_vic, w_sid, w_sid, w_sid, w_sid, w_col, w_col, w_col, w_col, w_cia1, w_cia2, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_vic, w_vic, w_vic, w_vic, w_sid, w_sid, w_sid, w_sid, w_col, w_col, w_col, w_col, w_cia1, w_cia2, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram} +}; + +/* +Normal 8kB cartridge at $8000 (ROML): GAME = 1, EXROM = 0 +Normal 16kB cartridge at $8000/$a000 (ROML,ROMH): GAME = 0, EXROM = 0 +Ultimax 16kB cartridge at $8000/$e000 (ROML,ROMH): GAME = 0, EXROM = 1 +*/ + +CONSTROM +rarray_t PLA_READ_CARTRIGE_10[8] = { + + //Normal 8kB cartridge at $8000 (ROML): GAME = 1, EXROM = 0 + + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker} +}; + +CONSTROM +rarray_t PLA_READ_CARTRIGE_00[8] = { //GAME = 0 EXROM = 0 + + //Normal 16kB cartridge at $8000/$a000 (ROML,ROMH): GAME = 0, EXROM = 0 + + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker} +}; + +CONSTROM +rarray_t PLA_READ_CARTRIGE_01[8] = { + + //Ultimax 16kB cartridge at $8000/$e000 (ROML,ROMH): GAME = 0, EXROM = 1 + + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, +}; + + + +void resetPLA(void) { + + // Initialize RAM + unsigned i = 0; + const char pattern1 = 0x00; + const char pattern2 = 0xff; + const char patternLength = 0x40; + + while (i <= (sizeof(cpu.RAM) - patternLength * 2)) { + memset(&cpu.RAM[i], pattern1, patternLength); + i += patternLength; + memset(&cpu.RAM[i], pattern2, patternLength); + i += patternLength; + }; + + cpu.RAM[0] = 0x2F; + cpu.RAM[1] = 0x1F; + +/* Cartriges : +Normal 8kB cartridge at $8000 (ROML): GAME = 1, EXROM = 0 +Normal 16kB cartridge at $8000/$a000 (ROML,ROMH): GAME = 0, EXROM = 0 +Ultimax 16kB cartridge at $8000/$e000 (ROML,ROMH): GAME = 0, EXROM = 1 +*/ +#if 1 //No Cartrige + cpu._game = 1; + cpu._exrom = 1; +#else //TODO... + cpu._game = 0; + cpu._exrom = 0; +#endif + + if (cpu._game == 1 && cpu._exrom==0) { + cpu.plamap_r = (rarray_t*)&PLA_READ_CARTRIGE_10[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } + else + if (cpu._game == 0 && cpu._exrom==0) { + cpu.plamap_r = (rarray_t*)&PLA_READ_CARTRIGE_00[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } + else + if (cpu._game == 0 && cpu._exrom==1) { + cpu.plamap_r = (rarray_t*)&PLA_READ_CARTRIGE_00[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } + else { //C64 without Cartridge + cpu.plamap_r = (rarray_t*)&PLA_READ[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } +} \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/pla.h b/MCUME_esp32/esp64/main/pla.h new file mode 100755 index 0000000..2355787 --- /dev/null +++ b/MCUME_esp32/esp64/main/pla.h @@ -0,0 +1,66 @@ +/* +Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_pla_h_ +#define Teensy64_pla_h_ + +#define CONSTROM const + +#define MEM_BASIC_ROM 0xA000 +#define MEM_CHARSET_ROM 0xD000 +#define MEM_KERNAL_ROM 0xE000 + +#define MEM_VIC 0xD000 +#define MEM_VICCOLOR 0xD800 +#define MEM_SID 0xD400 +#define MEM_CIA1 0xDC00 +#define MEM_CIA2 0xDD00 + +//C64 Memory/Device access (PLA) + +/* READ */ +typedef uint8_t (*r_ptr_t)( uint32_t address ); //Funktionspointer auf uint8_t foo(uint16_t address); +typedef r_ptr_t rarray_t[256]; //Array von Funktionspointern +typedef rarray_t * r_rarr_ptr_t; //Pointer auf Array von Funktionspointern + +/* WRITE */ +typedef void (*w_ptr_t)( uint32_t address, uint8_t value ); //Funktionspointer auf void foo( uint16_t address, uint8_t value ); +typedef w_ptr_t warray_t[256]; //Array von Funktionspointern +typedef warray_t * w_rarr_ptr_t; //Pointer auf Array von Funktionspointern + + +void resetPLA(void); + +#endif diff --git a/MCUME_esp32/esp64/main/reSID/.DS_Store b/MCUME_esp32/esp64/main/reSID/.DS_Store new file mode 100644 index 0000000..3599821 Binary files /dev/null and b/MCUME_esp32/esp64/main/reSID/.DS_Store differ diff --git a/MCUME_esp32/esp64/main/reSID/component.mk b/MCUME_esp32/esp64/main/reSID/component.mk new file mode 100644 index 0000000..757a913 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/component.mk @@ -0,0 +1,12 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . +CPPFLAGS += -Wno-error=delete-non-virtual-dtor \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/reSID/reSID.cpp b/MCUME_esp32/esp64/main/reSID/reSID.cpp new file mode 100644 index 0000000..e8362e2 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID.cpp @@ -0,0 +1,64 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ +#include "reSID.h" +#include + +#define AUDIO_BLOCK_SAMPLES 443 +#define SAMPLERATE 22050 +#define CLOCKFREQ 985248 + +void AudioPlaySID::begin(void) +{ + sidptr = &sid; + this->reset(); + setSampleParameters(CLOCKFREQ, SAMPLERATE); + playing = true; +} + +void AudioPlaySID::setSampleParameters(float clockfreq, float samplerate) { + sid.set_sampling_parameters(clockfreq, SAMPLE_FAST, samplerate); + csdelta = round((float)clockfreq / ((float)samplerate / AUDIO_BLOCK_SAMPLES)); +} + +void AudioPlaySID::reset(void) +{ + sid.reset(); +} + +void AudioPlaySID::stop(void) +{ + playing = false; +} + +void AudioPlaySID::update(void * stream, int len) { + // only update if we're playing + if (!playing) return; + + cycle_count delta_t = csdelta; + + sidptr->clock(delta_t, (short int*)stream, len); +} diff --git a/MCUME_esp32/esp64/main/reSID/reSID.h b/MCUME_esp32/esp64/main/reSID/reSID.h new file mode 100644 index 0000000..db7021e --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID.h @@ -0,0 +1,54 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ +#include "reSID/sid.h" +#include + +#ifndef play_sid_h_ +#define play_sid_h_ + + +class AudioPlaySID +{ +public: + AudioPlaySID(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + inline void setreg(int ofs, int val) { sid.write(ofs, val); } + inline uint8_t getreg(int ofs) { return sid.read(ofs); } + void reset(void); + void stop(void); + void update(void * stream, int len); + inline bool isPlaying(void) { return playing; } +private: + cycle_count csdelta; + volatile bool playing; + SID sid; + SID* sidptr; +}; + + +#endif diff --git a/MCUME_esp32/esp64/main/reSID/reSID/.DS_Store b/MCUME_esp32/esp64/main/reSID/reSID/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp64/main/reSID/reSID/.DS_Store differ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/AUTHORS b/MCUME_esp32/esp64/main/reSID/reSID/AUTHORS new file mode 100755 index 0000000..d22e33d --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/AUTHORS @@ -0,0 +1,3 @@ +Authors of reSID. + +Dag Lem: Designed and programmed complete emulation engine. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/COPYING b/MCUME_esp32/esp64/main/reSID/reSID/COPYING new file mode 100755 index 0000000..d60c31a --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/ChangeLog b/MCUME_esp32/esp64/main/reSID/reSID/ChangeLog new file mode 100755 index 0000000..1c7aa47 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/ChangeLog @@ -0,0 +1,313 @@ +2004-06-11 Dag Lem + + * Version 0.16 released. + + * envelope.h (EnvelopeGenerator::clock): Corrected off-by-one + error in check for ADSR delay bug in delta_t cycle interface. + + * filter.cc (Filter::set_chip_model): Initialize filter cutoff + mappings before call to set_chip_model. + + * sid.cc (SID::set_sampling_parameters): Build shifted FIR tables + with samples according to the sampling frequency. + (SID::clock_resample_interpolate): New function; factorized linear + interpolation out from filter convolutions, and made convolutions + vectorizable. + (SID::clock_resample_fast): New function; single convolution, same + accuracy as with interpolation by using more filter tables. + (SID::State, SID::read_state, SID::write_state): Read and write + rate_counter_period and exponential_counter_period. Read sustain + value. + +2003-10-20 Dag Lem + + * Version 0.15 released. + + * envelope.h (EnvelopeGenerator): Added public State enum. + (EnvelopeGenerator::clock): Rate counter is 15 bits, count + rate_period - 1 after wrapping from 0x8000 to 0 in ADSR delay bug. + + * sid.cc, sid.h (SID::State): Added envelope_state. + (SID::State::write_state): Restore register 0x18. + (SID::set_sampling_parameters): Scale resampling filter to avoid + clipping. + (SID::clock_resample): Saturated arithmetics to avoid clipping. + +2002-12-31 Dag Lem + + * Version 0.14 released. + + * envelope.h (EnvelopeGenerator::clock): Corrected one cycle error + in ADSR delay bug. Only load the exponential counter period at the + envelope counter values 255, 93, 54, 26, 14, 6, 0. + + * filter.cc (Filter::set_chip_model): Call set_w0() and set_Q() to + update filter settings. + (Filter::set_w0): Limit cutoff frequency for both 1 cycle and + delta_t cycle filter. + + * filter.h (Filter::clock): Mix in external audio input. + + * sid.cc, sid.h (SID::input): New function; accepts external audio + input sample. + + * spline.h (PointPlotter::operator ()): Clamp negative values to + zero. + + * voice.cc, voice.h: Changed misleading name wave_DC to wave_zero. + + * wave.h (WaveformGenerator::clock): Corrected bug in check for + accumulator bit 19 in noise register shift. + +2002-01-19 Dag Lem + + * Version 0.13 released. + + * configure.in: Replaced AC_TRY_COMPILER with AC_TRY_COMPILE, + removed AC_PROG_RANLIB. + + * envelope.h (EnvelopeGenerator::clock): Reset rate_step on state + change. + + * extfilt.cc (ExternalFilter::set_chip_model): New calculation of + maximum mixer DC level. + + * filter.cc (Filter::set_chip_model): Moved calculation of + voice_DC to voice.cc, corrected calculation of mixer_DC. + + * filter.h (Filter::output): Mixer output is not inverted. + + * sid.cc (SID::set_chip_model): Call voice.set_chip_model instead + of voice.wave.set_chip_model. + + * voice.cc (Voice::Voice): Call set_chip_model. + (Voice::set_chip_model): New function; model both waveform D/A + converter and envelope multiplying D/A converter DC offsets. + + * voice.h (Voice::output): Add both waveform D/A converter and + envelope multiplying D/A converter DC offsets. + + * wave.h (WaveformGenerator::output____): Reverted to output + minimum wave level when no waveform is selected. The maximum and + minimum wave output levels are interchanged in C= Hacking Issue #20. + +2001-10-20 Dag Lem + + * Version 0.12 released. + + * envelope.cc, envelope.h, filter.cc, filter.h, wave.cc, wave.h: + Removed bool usage. This avoids unnecessary conversion to 1/0. + + * filter.cc (Filter::set_chip_model): New function; selects voice + and mixer DC offsets and mapping from the FC registers to filter + cutoff frequency. The voice and mixer DC offsets for the MOS6581 are + calculated from measurements made by Hrsfalvi, Levente in + C= Hacking Issue #20. + (Filter::Filter): Call set_chip_model. + (Filter::f0_6581, Filter::f0_8580): Separate FC mapping tables. + (Filter::f0_points_6581, Filter::f0_points_8580): Separate FC mapping + points. + + * extfilt.cc, extfilt.h (ExternalFilter::set_chip_model): New + function supporting separate DC correction for MOS6581 and MOS8580. + + * sid.cc, sid.h (SID::adjust_sampling_frequency): New function for + on-the-fly adjustment of sampling frequency. + (SID::clock_fast): Corrected sample calculation. + (SID::set_chip_model): Set filter chip model. + (SID::output): Added audio clipping. + (SID::clock, SID::clock_fast, SID::clock_interpolate, + SID::clock_resample): Added sample interleaving. + + * spline.h (interpolate): Generalized to accept repeated points to + introduce points of non-differentiability and discontinuity. + + * wave.h (WaveformGenerator::output____): No selected waveform + yields maximum wave output level. This was found by Hrsfalvi, + Levente in C= Hacking Issue #20. + (WaveformGenerator::clock): Optimized for speed (no division). + +2001-03-10 Dag Lem + + * Version 0.11 released. + + * configure.in: Disable building of shared library by default. + Control inlining with RESID_INLINING (0 or 1) and RESID_INLINE + (blank or "inline"). + + * envelope.h, extfilt.h, filter.h, voice.h, wave.h: inline keyword + in both function declarations and function definitions. + + * samp2src.pl: Beautified Perl code. + + * sid.h, sid.cc: Replaced voice variables with array. Removed + filter variables from SID::State. + (SID::clock): New audio sample generating interface. Three + clocking methods are available; clocking at output sample + frequency, clocking at cycle frequency with linear sample + interpolation, and clocking at cycle frequency with audio + resampling. + (SID::clock_fast, SID::clock_interpolate, SID::clock_resample): + New functions called by SID::clock. + (SID::set_sampling_parameters): New function to set up SID for + sample generation. The FIR table used in SID::clock_resample is + calculated here. + (SID::I0): 0th order modified Bessel function to calculate Kaiser + window. + + * siddefs.h: Control inlining with RESID_INLINING (0 or 1) and + RESID_INLINE (blank or "inline"). Added enum sampling_method. + + * voice.h, voice.cc (Voice::set_sync_source): Moved setting of + sync source from constructor. + + * wave.h, wave.cc (WaveformGenerator::set_sync_source): Moved + setting of sync source from constructor. + +2000-11-22 Dag Lem + + * Version 0.10 released. + + * configure.in, Makefile.am: Use libtool to build library. The + hack to "disable" install is removed. + + * extfilt.h, filter.h: Moved filter stability code from sid.cc. + + * sid.cc (SID::clock): Moved filter stability code to + extfilt.h/filter.h. Don't clock the rest of the chip more + frequently than necessary. + + * wave.cc: Typecast for pedantic (and probably incorrect) + compilers. + +2000-05-18 Dag Lem + + * Version 0.9 released. + + * filter.h (Filter::output): The sum of the filter outputs is no + longer weighted. + +1999-06-24 Dag Lem + + * Version 0.8 released. + + * filter.h, filter.cc, wave.h, wave.cc: Typecasts for pedantic + compilers. + + * filter.h (Filter::clock): Voice 3 is only silenced by voice3off + if it is not routed through the filter. + + * sid.cc (SID::State): Added constructor for proper initalization. + + * spline.h: Inlined template functions to avoid problems at link + time with certain compilers. + +1999-02-25 Dag Lem + + * Version 0.7 released. + + * configure.in: Check whether compiler supports bool. + + * extfilt.h, extfilt.cc: Implementation of C64 filter, external to + the SID chip. + + * filter.h (Filter::clock): Optimized filter routing using a switch. + (Filter::output): Optimized filter mixing using a switch, avoiding + integer division. Corrected sign of filtered output, which is + inverted compared to unfiltered output. + + * filter.cc (Filter::set_w0): Removed use of M_PI and math.h + functions. Use spline table to map fc to w0. + (Filter::fc_default): Return array of FC spline interpolation points. + (Filter::fc_plotter): Return FC spline plotter object. + + * sid.h (SID::enable_external_filter): Enable/disable external + filter. + (SID::fc_default): Return array of FC spline interpolation points. + (SID::fc_plotter): Return FC spline plotter object. + (SID::State, SID::read_state, SID::write_state): Read and write + complete SID state. + + * sid.cc (SID::clock): Age bus value. Clock external filter. + (SID::enable_external_filter): Enable/disable external filter. + + * spline.h: Spline implementation. Used to specify mapping from + the FC register to filter cutoff frequency. + +1998-11-14 Dag Lem + + * Version 0.6 released. + + * configure.in: Allow compilation in a separate directory. + + * wave.h (WaveformGenerator::synchronize): Handle special case when a + sync source is synced itself on the same cycle as its MSB is set + high. + + * sid.cc (SID::clock): Only clock on MSB on/off for hard sync. + +1998-09-06 Dag Lem + + * Version 0.5 released. + + * version.cc (resid_version_string): Version string with C linkage. + + * wave.cc (WaveformGenerator::set_chip_model): Emulation of MOS8580 + combined waveforms. + +1998-08-28 Dag Lem + + * Version 0.4 released. + + * envelope.h (EnvelopeGenerator::clock): Count up to rate_period twice + during ADSR delay bug, and add one extra rate counter step. + + * filter.cc (Filter::bsd_copysign): Renamed copysign function for + compilation on platforms where copysign is implemented as a macro. + +1998-08-23 Dag Lem + + * Version 0.3 released. + + * envelope.h (EnvelopeGenerator::clock): Handle ADSR boundary bug. + + * envelope.cc (EnvelopeGenerator::rate_counter_period, + EnvelopeGenerator::exponential_counter_period): Corrected counter + periods. + + * filter.h (Filter::clock): Optimized for speed (division by shifting). + + * sid.h (SID::clock): New one-cycle optimized overload of the clock() + function. + + * wave.h (WaveformGenerator::output_P_T): Combined waveform + pulse+triangle indexing corrected. + (WaveformGenerator::output_P__): Check for test bit to handle + pulse+test bit samples. + (WaveformGenerator::output): Optimized for speed (inlining). + +1998-07-28 Dag Lem + + * Version 0.2 released. + + * envelope.h (EnvelopeGenerator::clock): Start decay cycle immediately + at envelope counter 0xff. New sustain value is zero if the sustain + level is raised above the current envelope counter value. + (EnvelopeGenerator::step_envelope): Handle ADSR delay bug. + + * envelope.cc (EnvelopeGenerator::rate_counter_period, + EnvelopeGenerator::exponential_counter_period): Corrected counter + periods. + (EnvelopeGenerator::writeCONTROL_REG): Do not modify rate counter. + + * filter.cc (Filter::set_Q): Constrain Q to keep filter stable. + + * sid.h (SID::read, SID::write, SID::bypass_filter): Simplified API + routing register access through the SID class. + + * sid.cc (SID::output): Corrected variable-bit audio output return. + (SID::read, SID::write): Allow read of write only registers. + +1998-06-09 Dag Lem + + * Version 0.1 released. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/INSTALL b/MCUME_esp32/esp64/main/reSID/reSID/INSTALL new file mode 100755 index 0000000..54caf7c --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/INSTALL @@ -0,0 +1,229 @@ +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/MCUME_esp32/esp64/main/reSID/reSID/NEWS b/MCUME_esp32/esp64/main/reSID/reSID/NEWS new file mode 100755 index 0000000..e0ff298 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/NEWS @@ -0,0 +1,271 @@ +Changes in reSID version 0.16 +----------------------------- + +An off-by-one error in the emulation of the ADSR delay bug has been +fixed in the fast version of the envelope clocking. + +An initialization bug in the Filter class which caused floating point +exceptions on some platforms has been fixed. + +Missing fields have been added to SID::State for correct snapshots. + +By building shifted FIR tables with samples according to the sampling +frequency, the resampling code dramatically reduces the computational +effort in the filter convolutions, without any loss of accuracy. The +filter convolutions are now also vectorizable on current hardware. The +implementation builds on ideas by Laurent Ganier. + +The resampling code has been split into two functions, one using +interpolation and a small set of shifted filter tables, and one using +direct lookup and a large set of shifted filter tables. The accuracy +is the same, the difference is that the direct lookup runs has the +potential of running at almost twice the speed (depending on cache +size and memory bandwidth) using approximately 16MB more memory. It is +now possible to run high quality resampling in real time on quite +modest hardware, provided that a vectorizing compiler is used. + + +Changes in reSID version 0.15 +----------------------------- + +An error in the emulation of the ADSR delay bug has been fixed. When +emulation of the ADSR delay bug was introduced in reSID 0.2, the delay +was one cycle too long. One cycle was subtracted from the delay in +reSID 0.4, however unfortunately one rate counter period was added as +well, thus increasing the error. At the time there was no method to +fully synchronize the CPU with envelope 3, so the measurements relied +on averaging. Because of pipelining in the envelope logic the effects +of a write are delayed, and this caused the test code to miss the +target by exactly one rate counter period on a real SID. The current +test code does achieve full synchronization with envelope 3, so this +time the delay should be 100% correct. There are still side effects +caused by pipelining which are not implemented in reSID, however these +effects are not controllable without full synchronization with the +envelope, something which is hard to achieve with envelope 3, and +impossible with envelope 1 and 2. + +The envelope state (ADSR) has been added to the SID state, and the +volume setting is now restored from the SID state. + +Filter scaling and clipping has been added to avoid sample overflows +in the resampling filter. + + +Changes in reSID version 0.14 +----------------------------- + +The SID external audio input is now emulated. This can be used e.g. to +simulate the hack of connecting a resistor from EXT IN to GND to boost +the sample volume on the MOS8580. Calling sid.input(-32768) makes the +MOS8580 sound more or less like the MOS6581 with respect to samples. +The interface could also be used to mix in an external audio signal, +but note that to do this correctly you should really resample the +audio signal to 1MHz first. + +The filter settings are now updated immediately when the chip model is +changed. Earlier the filter cutoff frequency would not change until +the FC registers were updated. + +A one cycle error in the fast version of the envelope clocking has +been fixed. This bug was introduced in reSID 0.13 and could affect the +ADSR delay emulation. + +The exponential counter period is now only loaded at the envelope +counter values 255, 93, 54, 26, 14, 6, 0. The period can be different +for the same envelope counter value, depending on whether the envelope +has been rising (attack -> release) or sinking (decay/release). + +A bug in the fast version of the noise register shift routine has been +corrected. This bug caused too low noise frequency in some cases. + +The filter cutoff frequency is limited to 16kHz to keep the filter stable. + + +Changes in reSID version 0.13 +----------------------------- + +The internal DC levels of the MOS6581 have been double checked and +corrected. The reason for the asymmetric scaling of the voice output +has been found; there is a DC offset from the waveform D/A converter +in addition to the DC offset from the envelope multiplying D/A +converter. No selected waveform (N=P=S=T=0) yields minimum wave output +level again. + +A bug in the fast version of the envelope clocking has been corrected. +This bug could incorrectly invoke the ADSR delay emulation. + + +Changes in reSID version 0.12 +----------------------------- + +A bug causing incorrect sample spacing in the new SAMPLE_FAST sample +calculation has been corrected. + +Audio clipping has been added to guard against sample overflows. + +To support multi-channel sampling, sample interleaving has been added +to the clock() interface. + +To support synchronization with an external timer, an interface for +sample rate adjustment has been added. + +The internal DC levels have been corrected. No selected waveform +(N=P=S=T=0) yields maximum wave output level. Furthermore, each voice +in the MOS6581 independently contributes to the DC level in the mixer, +and the mixer itself has a small DC offset as well. The MOS8580 has no +DC offsets. + +The spline interpolation routine has been generalized to accept +repeated points to introduce points of non-differentiability and +discontinuity. + +A separate mapping from the FC registers to filter cutoff frequency +has been included for the MOS8580, and the mapping for the MOS6581 has +been refined. + + +Changes in reSID version 0.11 +----------------------------- + +A new clock() interface has been added. This function generates audio +samples into a buffer, greatly simplifying the task of writing driver +code for reSID. It also facilitates more advanced audio sample +generation, as described below. + +Three clocking methods are available: clocking at output sample +frequency, clocking at cycle frequency with linear sample +interpolation, and clocking at cycle frequency with audio resampling. + +Clocking at output sample frequency is fast, and yields acceptable +sound quality, except for the SID combined waveforms, which have a +very high frequency content. + +Clocking at cycle frequency with linear sample interpolation is +approximately five to ten times slower at 44.1kHz sampling frequency, +but the sound quality is improved because of the linear sample +interpolation, and because some sampling noise is removed by the SID +external filter, which attenuates signals above 16kHz. + +Finally, clocking at cycle frequency with audio resampling has a work +rate which is independent of the sampling frequency; it is rather +inversely proportional to the percentage of the bandwidth allocated +to the filter transition band. This implies that e.g. with the +transition band starting at ~ 20kHz, it is faster to generate 48kHz +than 44.1kHz samples. + +Audio resampling is the theoretically correct method for sample +generation, and delivers SID sound quality previously unheard of. This +should make connoisseurs nod in appreciation, and for some time to +come it could possibly also make people tear their hair over having to +buy state of the art hardware to handle the obscene workload in real +time. By trading off passband bandwidth for speed, real time +processing is possible on current hardware. A 60% passband bandwidth +is within the reach of reasonably fast machines, while maximum sound +quality at 90% passband bandwidth, requiring four times the processing +power, is not. Yet. + + +Changes in reSID version 0.10 +----------------------------- + +Libtool is now used to build the library. + +To keep the filters stable it is necessary to clock them at above +sample rate. The chip clocking code has been modified to only +"overclock" the filters, not the whole chip. This yields a +considerable speedup without noticeably lowering sound quality. Note +that this is aimed at slow hardware, if possible the 1 cycle clock +interface should be used to eliminate sampling noise. + + +Changes in reSID version 0.9 +---------------------------- + +The sum of the filter outputs is no longer weighted. + + +Changes in reSID version 0.8 +---------------------------- + +voice3off has no effect if voice 3 is routed through the filter. + + +Changes in reSID version 0.7 +---------------------------- + +The audio output filter in the C64, external to the SID chip, has been +modeled. + +The mapping function between the FC register and filter cutoff frequency can +now be specified with spline interpolation points. This facilitates +interactive modification of the mapping function by graphical presentation of +the interpolation curve. The implementation of this novel spline design is +fast and general purpose, and should be well suited for use in other projects +as well. + +Filtered output has been inverted compared to unfiltered output. + +Aging of the bus value obtained when reading write only registers has been +partly implemented. + +To facilitate offline storage the complete state of SID can be read and +written. + + +Changes in reSID version 0.6 +---------------------------- + +A special case in synchronization has been implemented. + +The Autoconf script is cleaned up to allow compilation in a separate directory. + + +Changes in reSID version 0.5 +---------------------------- + +Emulation of MOS8580 combined waveforms. + +Version string resid_version_string provided for e.g. Autoconf tests. +The string has C linkage. + + +Changes in reSID version 0.4 +---------------------------- + +The implementation of the ADSR delay bug has been refined and should now be +cycle exact. + +The patch for VICE has been removed since VICE 0.15 will include reSID support. + + +Changes in reSID version 0.3 +---------------------------- + +The reSID library has changed name from libmos6581.a to libresid.a + +The pulse+sawtooth combined waveform has been corrected. + +Pulse+test bit samples are implemented. + +The envelope rate periods have finally been exactly determined. + +A new SID bug, the ADSR boundary bug, has been discovered and implemented. +This bug makes it possible to step from envelope level 0x00 to 0xff or from +0xff to 0x00 in one step. + +One-cycle optimized overloads of the clock() functions have been implemented +to facilitate sampling at 1MHz. + +The code has been further optimized for speed. + + +Changes in reSID version 0.2 +---------------------------- + +The implementation of the Envelope Generator has been rewritten to handle +the infamous ADSR delay bug. All known envelope related bugs have been +corrected. + +The maximum filter resonance is lowered to keep the filter stable. + +The reSID API has been simplified. Reading write only registers is allowed. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/README b/MCUME_esp32/esp64/main/reSID/reSID/README new file mode 100755 index 0000000..79da519 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/README @@ -0,0 +1,26 @@ +This is reSID, a reverse engineered software emulation of the MOS6581 SID +(Sound Interface Device). This chip was used in the Commodore 64 computer. + +reSID is free software. See the file COPYING for copying permission. + +reSID is a C++ library containing a complete emulation of the SID chip. +This library can be linked into programs emulating the MOS6510 MPU to +play music made for the Commodore 64 computer. reSID has been successfully +linked into VICE, a full-fledged Commodore 64 emulator, and SIDPLAY, a +popular SID tune player. The VICE home page is: +http://www.viceteam.org/ +A patch for SIDPLAY can be found on the SIDPLAY home page: +http://www.geocities.com/SiliconValley/Lakes/5147/ + +Various SID emulators exist, however reSID should still be of great +interest to Commodore 64 nostalgics. The emulator engine is cycle-based, +emulating the internal operations of the SID chip. SID's audio filter is +modeled as an actual two-integrator-loop biquadratic filter circuit. +The engine has been developed based on available information on SID, sampling +of the OSC3 and ENV3 registers, filter theory, and meticulous testing. +In short, a scientific approach has been taken to model the SID chip as +accurately as possible. + +To our knowledge reSID is by far the most accurate SID emulator ever created. +This comes at a price; what is considered a fairly fast CPU at the time of +this writing is needed to run the emulator. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/THANKS b/MCUME_esp32/esp64/main/reSID/reSID/THANKS new file mode 100755 index 0000000..824c682 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/THANKS @@ -0,0 +1,87 @@ +reSID was written by Dag Lem. + +The project was started after reading an interview with Bob Yannes, the +head engineer of the SID chip. This interview was made by Andreas Varga, +with additional questions from Linus Walleij. The interview can be found on +the SID Homepage: +http://stud1.tuwien.ac.at/~e9426444/sidpage.html +The reverse engineering of the SID chip would not have been possible without +this interview. + +Also found on the SID Homepage is an examination of the SID noise waveform +written by Asger Alstrup. This article was of great help in reverse +engineering the complete algorithm for the noise waveform. + +Lars Haugseth has been invaluable in the testing of reSID. +In a matter of hours after hearing about my project, he had completed a 6510 +disassembler in Perl. The importance of this was not evident to me until the +next day when he had disassembled the music routine for "Outrun Remix" by +Geir Tjelta, made some changes to it, reassembled, and produced a file +containing 48K of SID register values. +The first tests of reSID were run on this file. +With an exceptional memory of Commodore 64 tunes Lars Haugseth has pointed +out several errors in reSID that are now corrected. + +Morten Rollan and Kre Gunnar Nesheim have provided interesting and insightful +information regarding digital filters. Kre Gunnar Nesheim has also kindly +provided a 1901 monitor and a C64C from his private computer museum. His C64C +was used to measure the MOS8580 filter cutoff characteristics. + +VICE has been an inspiration for this project, and testing of reSID has +been greatly simplified by VICEs -sounddev dump option. Teemu Rantanen +has written support for reSID in VICE, making it possible to choose at runtime +between his excellent SID emulation and, given enough CPU power, the reSID +emulator engine. Tibor Biczo, Andreas Boose, and Andr Fachat have provided +combined waveform samples for 6581 R1, R3, R4, and 8580 R5 SID chips. +The VICE home page is found at: +http://www.viceteam.org/ + +The author of SIDPLAY, Michael Schwendt, has implemented a patch to link +libsidplay with reSID. Using his excellent tune player he has pointed out +several bugs in reSID. He has also provided invaluable information related to +the bugs as basis for further investigation. Most notably, the infamous ADSR +delay bug, of which I was previously unaware, has finally been understood and +is now correctly implemented in reSID. The SIDPLAY home page is found at: +http://www.geocities.com/SiliconValley/Lakes/5147/ + +A bug report from Daniel Lacasse led to the discovery of a previously unknown +SID bug, the ADSR boundary bug. + +Anders degrd has explained aspects of analog electronics and audio +equipment. + +Bob Yannes has patiently answered questions and has provided lots of +technical information on the SID filter. Thank you Bob! + +Julius O. Smith III has provided much of the theoretical basis for the +audio resampling with his "Digital Audio Resampling Home Page": +http://www-ccrma.stanford.edu/~jos/resample/ + +Hrsfalvi, Levente has made a thorough investigation of the DC levels +in the MOS6581 chip. His results are available in C= Hacking Issue #20, +and form the basis of DC corrections in reSID. Levente found that each +voice independently contributes to the DC level in the mixer. Note +that some of the conclusions in the article are incorrect, as the +maximum and minimum voice output levels are interchanged. + +The author of SIDPLAY2, Simon White, has given a lot of feedback on +reSID. Most importantly he found and fixed a bug in the fast clock +version of the ADSR emulation. + +Laurent Ovaert found and fixed a bug in the fast version of the noise +register shift routine. + +Andreas Dehmel has reported all sorts of initialization and overflow +errors. + +Laurent Ganier demonstrated two crucial techniques for vectorizable +filter convolution in a patch. Firstly, he made the filter elements +correspond to the sampling frequency, allowing the linear +interpolation to be factorized out from the convolution. Secondly, he +duplicated elements in the sample ring buffer, achieving contiguous +storage of the samples. The current resampling implementation builds +on these ideas, improving on them by using shifted filter tables for +generalization and accuracy. + +Finally I would like to thank my business partner Stian W. Arnesen for +putting up with all this nonsense. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/TODO b/MCUME_esp32/esp64/main/reSID/reSID/TODO new file mode 100755 index 0000000..4527dfa --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/TODO @@ -0,0 +1,8 @@ +* Determine the characteristics of the SID filter integrators. Spice + may perhaps be used to simulate the filter circuit. + +* Write documentation. Possibly a paper describing how SID was reverse + engineered. + +* Implement a SID tune player. A PSID player, VSID, is partly + implemented in VICE. diff --git a/MCUME_esp32/esp64/main/reSID/reSID/envelope.cc b/MCUME_esp32/esp64/main/reSID/reSID/envelope.cc new file mode 100755 index 0000000..915c4c4 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/envelope.cc @@ -0,0 +1,231 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __ENVELOPE_CC__ +#include "envelope.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +EnvelopeGenerator::EnvelopeGenerator() +{ + reset(); +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void EnvelopeGenerator::reset() +{ + envelope_counter = 0; + + attack = 0; + decay = 0; + sustain = 0; + release = 0; + + gate = 0; + + rate_counter = 0; + exponential_counter = 0; + exponential_counter_period = 1; + + state = RELEASE; + rate_period = rate_counter_period[release]; + hold_zero = true; +} + + +// Rate counter periods are calculated from the Envelope Rates table in +// the Programmer's Reference Guide. The rate counter period is the number of +// cycles between each increment of the envelope counter. +// The rates have been verified by sampling ENV3. +// +// The rate counter is a 16 bit register which is incremented each cycle. +// When the counter reaches a specific comparison value, the envelope counter +// is incremented (attack) or decremented (decay/release) and the +// counter is zeroed. +// +// NB! Sampling ENV3 shows that the calculated values are not exact. +// It may seem like most calculated values have been rounded (.5 is rounded +// down) and 1 has beed added to the result. A possible explanation for this +// is that the SID designers have used the calculated values directly +// as rate counter comparison values, not considering a one cycle delay to +// zero the counter. This would yield an actual period of comparison value + 1. +// +// The time of the first envelope count can not be exactly controlled, except +// possibly by resetting the chip. Because of this we cannot do cycle exact +// sampling and must devise another method to calculate the rate counter +// periods. +// +// The exact rate counter periods can be determined e.g. by counting the number +// of cycles from envelope level 1 to envelope level 129, and dividing the +// number of cycles by 128. CIA1 timer A and B in linked mode can perform +// the cycle count. This is the method used to find the rates below. +// +// To avoid the ADSR delay bug, sampling of ENV3 should be done using +// sustain = release = 0. This ensures that the attack state will not lower +// the current rate counter period. +// +// The ENV3 sampling code below yields a maximum timing error of 14 cycles. +// lda #$01 +// l1: cmp $d41c +// bne l1 +// ... +// lda #$ff +// l2: cmp $d41c +// bne l2 +// +// This yields a maximum error for the calculated rate period of 14/128 cycles. +// The described method is thus sufficient for exact calculation of the rate +// periods. +// +const reg16 EnvelopeGenerator::rate_counter_period[] = { + 9, // 2ms*1.0MHz/256 = 7.81 + 32, // 8ms*1.0MHz/256 = 31.25 + 63, // 16ms*1.0MHz/256 = 62.50 + 95, // 24ms*1.0MHz/256 = 93.75 + 149, // 38ms*1.0MHz/256 = 148.44 + 220, // 56ms*1.0MHz/256 = 218.75 + 267, // 68ms*1.0MHz/256 = 265.63 + 313, // 80ms*1.0MHz/256 = 312.50 + 392, // 100ms*1.0MHz/256 = 390.63 + 977, // 250ms*1.0MHz/256 = 976.56 + 1954, // 500ms*1.0MHz/256 = 1953.13 + 3126, // 800ms*1.0MHz/256 = 3125.00 + 3907, // 1 s*1.0MHz/256 = 3906.25 + 11720, // 3 s*1.0MHz/256 = 11718.75 + 19532, // 5 s*1.0MHz/256 = 19531.25 + 31251 // 8 s*1.0MHz/256 = 31250.00 +}; + + +// For decay and release, the clock to the envelope counter is sequentially +// divided by 1, 2, 4, 8, 16, 30, 1 to create a piece-wise linear approximation +// of an exponential. The exponential counter period is loaded at the envelope +// counter values 255, 93, 54, 26, 14, 6, 0. The period can be different for the +// same envelope counter value, depending on whether the envelope has been +// rising (attack -> release) or sinking (decay/release). +// +// Since it is not possible to reset the rate counter (the test bit has no +// influence on the envelope generator whatsoever) a method must be devised to +// do cycle exact sampling of ENV3 to do the investigation. This is possible +// with knowledge of the rate period for A=0, found above. +// +// The CPU can be synchronized with ENV3 by first synchronizing with the rate +// counter by setting A=0 and wait in a carefully timed loop for the envelope +// counter _not_ to change for 9 cycles. We can then wait for a specific value +// of ENV3 with another timed loop to fully synchronize with ENV3. +// +// At the first period when an exponential counter period larger than one +// is used (decay or relase), one extra cycle is spent before the envelope is +// decremented. The envelope output is then delayed one cycle until the state +// is changed to attack. Now one cycle less will be spent before the envelope +// is incremented, and the situation is normalized. +// The delay is probably caused by the comparison with the exponential counter, +// and does not seem to affect the rate counter. This has been verified by +// timing 256 consecutive complete envelopes with A = D = R = 1, S = 0, using +// CIA1 timer A and B in linked mode. If the rate counter is not affected the +// period of each complete envelope is +// (255 + 162*1 + 39*2 + 28*4 + 12*8 + 8*16 + 6*30)*32 = 756*32 = 32352 +// which corresponds exactly to the timed value divided by the number of +// complete envelopes. +// NB! This one cycle delay is not modeled. + + +// From the sustain levels it follows that both the low and high 4 bits of the +// envelope counter are compared to the 4-bit sustain value. +// This has been verified by sampling ENV3. +// +const reg8 EnvelopeGenerator::sustain_level[] = { + 0x00, + 0x11, + 0x22, + 0x33, + 0x44, + 0x55, + 0x66, + 0x77, + 0x88, + 0x99, + 0xaa, + 0xbb, + 0xcc, + 0xdd, + 0xee, + 0xff, +}; + + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void EnvelopeGenerator::writeCONTROL_REG(reg8 control) +{ + reg8 gate_next = control & 0x01; + + // The rate counter is never reset, thus there will be a delay before the + // envelope counter starts counting up (attack) or down (release). + + // Gate bit on: Start attack, decay, sustain. + if (!gate && gate_next) { + state = ATTACK; + rate_period = rate_counter_period[attack]; + + // Switching to attack state unlocks the zero freeze. + hold_zero = false; + } + // Gate bit off: Start release. + else if (gate && !gate_next) { + state = RELEASE; + rate_period = rate_counter_period[release]; + } + + gate = gate_next; +} + +void EnvelopeGenerator::writeATTACK_DECAY(reg8 attack_decay) +{ + attack = (attack_decay >> 4) & 0x0f; + decay = attack_decay & 0x0f; + if (state == ATTACK) { + rate_period = rate_counter_period[attack]; + } + else if (state == DECAY_SUSTAIN) { + rate_period = rate_counter_period[decay]; + } +} + +void EnvelopeGenerator::writeSUSTAIN_RELEASE(reg8 sustain_release) +{ + sustain = (sustain_release >> 4) & 0x0f; + release = sustain_release & 0x0f; + if (state == RELEASE) { + rate_period = rate_counter_period[release]; + } +} + +reg8 EnvelopeGenerator::readENV() +{ + return output(); +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/envelope.h b/MCUME_esp32/esp64/main/reSID/reSID/envelope.h new file mode 100755 index 0000000..7fd86ee --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/envelope.h @@ -0,0 +1,309 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __ENVELOPE_H__ +#define __ENVELOPE_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// A 15 bit counter is used to implement the envelope rates, in effect +// dividing the clock to the envelope counter by the currently selected rate +// period. +// In addition, another counter is used to implement the exponential envelope +// decay, in effect further dividing the clock to the envelope counter. +// The period of this counter is set to 1, 2, 4, 8, 16, 30 at the envelope +// counter values 255, 93, 54, 26, 14, 6, respectively. +// ---------------------------------------------------------------------------- +class EnvelopeGenerator +{ +public: + EnvelopeGenerator(); + + enum State { ATTACK, DECAY_SUSTAIN, RELEASE }; + + RESID_INLINE void clock(); + RESID_INLINE void clock(cycle_count delta_t); + void reset(); + + void writeCONTROL_REG(reg8); + void writeATTACK_DECAY(reg8); + void writeSUSTAIN_RELEASE(reg8); + reg8 readENV(); + + // 8-bit envelope output. + RESID_INLINE reg8 output(); + +protected: + reg16 rate_counter; + reg16 rate_period; + reg8 exponential_counter; + reg8 exponential_counter_period; + reg8 envelope_counter; + bool hold_zero; + + reg4 attack; + reg4 decay; + reg4 sustain; + reg4 release; + + reg8 gate; + + State state; + + // Lookup table to convert from attack, decay, or release value to rate + // counter period. + static const reg16 rate_counter_period[]; + + // The 16 selectable sustain levels. + static const reg8 sustain_level[]; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__ENVELOPE_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void EnvelopeGenerator::clock() +{ + // Check for ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can finally be stepped. + // This has been verified by sampling ENV3. + // + if (++rate_counter & 0x8000) { + ++rate_counter &= 0x7fff; + } + + if (rate_counter != rate_period) { + return; + } + + rate_counter = 0; + + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + // + if (state == ATTACK || ++exponential_counter == exponential_counter_period) + { + exponential_counter = 0; + + // Check whether the envelope counter is frozen at zero. + if (hold_zero) { + return; + } + + switch (state) { + case ATTACK: + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + // + ++envelope_counter &= 0xff; + if (envelope_counter == 0xff) { + state = DECAY_SUSTAIN; + rate_period = rate_counter_period[decay]; + } + break; + case DECAY_SUSTAIN: + if (envelope_counter != sustain_level[sustain]) { + --envelope_counter; + } + break; + case RELEASE: + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + // NB! The operation below requires two's complement integer. + // + --envelope_counter &= 0xff; + break; + } + + // Check for change of exponential counter period. + switch (envelope_counter) { + case 0xff: + exponential_counter_period = 1; + break; + case 0x5d: + exponential_counter_period = 2; + break; + case 0x36: + exponential_counter_period = 4; + break; + case 0x1a: + exponential_counter_period = 8; + break; + case 0x0e: + exponential_counter_period = 16; + break; + case 0x06: + exponential_counter_period = 30; + break; + case 0x00: + exponential_counter_period = 1; + + // When the envelope counter is changed to zero, it is frozen at zero. + // This has been verified by sampling ENV3. + hold_zero = true; + break; + } + } +} + + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void EnvelopeGenerator::clock(cycle_count delta_t) +{ + // Check for ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can finally be stepped. + // This has been verified by sampling ENV3. + // + + // NB! This requires two's complement integer. + int rate_step = rate_period - rate_counter; + if (rate_step <= 0) { + rate_step += 0x7fff; + } + + while (delta_t) { + if (delta_t < rate_step) { + rate_counter += delta_t; + if (rate_counter & 0x8000) { + ++rate_counter &= 0x7fff; + } + return; + } + + rate_counter = 0; + delta_t -= rate_step; + + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + // + if (state == ATTACK || ++exponential_counter == exponential_counter_period) + { + exponential_counter = 0; + + // Check whether the envelope counter is frozen at zero. + if (hold_zero) { + rate_step = rate_period; + continue; + } + + switch (state) { + case ATTACK: + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + // + ++envelope_counter &= 0xff; + if (envelope_counter == 0xff) { + state = DECAY_SUSTAIN; + rate_period = rate_counter_period[decay]; + } + break; + case DECAY_SUSTAIN: + if (envelope_counter != sustain_level[sustain]) { + --envelope_counter; + } + break; + case RELEASE: + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + // NB! The operation below requires two's complement integer. + // + --envelope_counter &= 0xff; + break; + } + + // Check for change of exponential counter period. + switch (envelope_counter) { + case 0xff: + exponential_counter_period = 1; + break; + case 0x5d: + exponential_counter_period = 2; + break; + case 0x36: + exponential_counter_period = 4; + break; + case 0x1a: + exponential_counter_period = 8; + break; + case 0x0e: + exponential_counter_period = 16; + break; + case 0x06: + exponential_counter_period = 30; + break; + case 0x00: + exponential_counter_period = 1; + + // When the envelope counter is changed to zero, it is frozen at zero. + // This has been verified by sampling ENV3. + hold_zero = true; + break; + } + } + + rate_step = rate_period; + } +} + + +// ---------------------------------------------------------------------------- +// Read the envelope generator output. +// ---------------------------------------------------------------------------- +RESID_INLINE +reg8 EnvelopeGenerator::output() +{ + return envelope_counter; +} + +#endif // RESID_INLINING || defined(__ENVELOPE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __ENVELOPE_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/extfilt.cc b/MCUME_esp32/esp64/main/reSID/reSID/extfilt.cc new file mode 100755 index 0000000..e9747f0 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/extfilt.cc @@ -0,0 +1,98 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __EXTFILT_CC__ +#include "extfilt.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +ExternalFilter::ExternalFilter() +{ + reset(); + enable_filter(true); + set_sampling_parameter(15915.6); + //set_chip_model(MOS6581); + {//instead: + mixer_DC = ((((0x800 - 0x380) + 0x800)*0xff*3 - 0xfff*0xff/18) >> 7)*0x0f; + } +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void ExternalFilter::enable_filter(bool enable) +{ + enabled = enable; +} + + +// ---------------------------------------------------------------------------- +// Setup of the external filter sampling parameters. +// ---------------------------------------------------------------------------- +void ExternalFilter::set_sampling_parameter(float pass_freq) +{ + static const float pi = 3.1415926535897932385; + + // Low-pass: R = 10kOhm, C = 1000pF; w0l = 1/RC = 1/(1e4*1e-9) = 100000 + // High-pass: R = 1kOhm, C = 10uF; w0h = 1/RC = 1/(1e3*1e-5) = 100 + // Multiply with 1.048576 to facilitate division by 1 000 000 by right- + // shifting 20 times (2 ^ 20 = 1048576). + + w0hp = 105; + w0lp = (sound_sample) (pass_freq * (2.0 * pi * 1.048576)); + if (w0lp > 104858) + w0lp = 104858; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void ExternalFilter::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + // Maximum mixer DC output level; to be removed if the external + // filter is turned off: ((wave DC + voice DC)*voices + mixer DC)*volume + // See voice.cc and filter.cc for an explanation of the values. + mixer_DC = ((((0x800 - 0x380) + 0x800)*0xff*3 - 0xfff*0xff/18) >> 7)*0x0f; + } + else { + // No DC offsets in the MOS8580. + mixer_DC = 0; + } +} +*/ + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void ExternalFilter::reset() +{ + // State of filter. + Vlp = 0; + Vhp = 0; + Vo = 0; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/extfilt.h b/MCUME_esp32/esp64/main/reSID/reSID/extfilt.h new file mode 100755 index 0000000..7b67e52 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/extfilt.h @@ -0,0 +1,169 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __EXTFILT_H__ +#define __EXTFILT_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// The audio output stage in a Commodore 64 consists of two STC networks, +// a low-pass filter with 3-dB frequency 16kHz followed by a high-pass +// filter with 3-dB frequency 16Hz (the latter provided an audio equipment +// input impedance of 1kOhm). +// The STC networks are connected with a BJT supposedly meant to act as +// a unity gain buffer, which is not really how it works. A more elaborate +// model would include the BJT, however DC circuit analysis yields BJT +// base-emitter and emitter-base impedances sufficiently low to produce +// additional low-pass and high-pass 3dB-frequencies in the order of hundreds +// of kHz. This calls for a sampling frequency of several MHz, which is far +// too high for practical use. +// ---------------------------------------------------------------------------- +class ExternalFilter +{ +public: + ExternalFilter(); + + void enable_filter(bool enable); + void set_sampling_parameter(float pass_freq); + //void set_chip_model(chip_model model); + + RESID_INLINE void clock(sound_sample Vi); + RESID_INLINE void clock(cycle_count delta_t, sound_sample Vi); + void reset(); + + // Audio output (20 bits). + RESID_INLINE sound_sample output(); + +protected: + // Filter enabled. + bool enabled; + + // Maximum mixer DC offset. + sound_sample mixer_DC; + + // State of filters. + sound_sample Vlp; // lowpass + sound_sample Vhp; // highpass + sound_sample Vo; + + // Cutoff frequencies. + sound_sample w0lp; + sound_sample w0hp; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__EXTFILT_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void ExternalFilter::clock(sound_sample Vi) +{ + // This is handy for testing. + if (!enabled) { + // Remove maximum DC level since there is no filter to do it. + Vlp = Vhp = 0; + Vo = Vi - mixer_DC; + return; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vo = Vlp - Vhp; + // Vlp = Vlp + w0lp*(Vi - Vlp)*delta_t; + // Vhp = Vhp + w0hp*(Vlp - Vhp)*delta_t; + + sound_sample dVlp = (w0lp >> 8)*(Vi - Vlp) >> 12; + sound_sample dVhp = w0hp*(Vlp - Vhp) >> 20; + Vo = Vlp - Vhp; + Vlp += dVlp; + Vhp += dVhp; +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void ExternalFilter::clock(cycle_count delta_t, + sound_sample Vi) +{ + // This is handy for testing. + if (!enabled) { + // Remove maximum DC level since there is no filter to do it. + Vlp = Vhp = 0; + Vo = Vi - mixer_DC; + return; + } + + // Maximum delta cycles for the external filter to work satisfactorily + // is approximately 8. + cycle_count delta_t_flt = 8; + + while (delta_t) { + if (delta_t < delta_t_flt) { + delta_t_flt = delta_t; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vo = Vlp - Vhp; + // Vlp = Vlp + w0lp*(Vi - Vlp)*delta_t; + // Vhp = Vhp + w0hp*(Vlp - Vhp)*delta_t; + + sound_sample dVlp = (w0lp*delta_t_flt >> 8)*(Vi - Vlp) >> 12; + sound_sample dVhp = w0hp*delta_t_flt*(Vlp - Vhp) >> 20; + Vo = Vlp - Vhp; + Vlp += dVlp; + Vhp += dVhp; + + delta_t -= delta_t_flt; + } +} + + +// ---------------------------------------------------------------------------- +// Audio output (19.5 bits). +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample ExternalFilter::output() +{ + return Vo; +} + +#endif // RESID_INLINING || defined(__EXTFILT_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __EXTFILT_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/filter.cc b/MCUME_esp32/esp64/main/reSID/reSID/filter.cc new file mode 100755 index 0000000..8240b11 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/filter.cc @@ -0,0 +1,325 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __FILTER_CC__ +#include "filter.h" + +RESID_NAMESPACE_START + +// Maximum cutoff frequency is specified as +// FCmax = 2.6e-5/C = 2.6e-5/2200e-12 = 11818. +// +// Measurements indicate a cutoff frequency range of approximately +// 220Hz - 18kHz on a MOS6581 fitted with 470pF capacitors. The function +// mapping FC to cutoff frequency has the shape of the tanh function, with +// a discontinuity at FCHI = 0x80. +// In contrast, the MOS8580 almost perfectly corresponds with the +// specification of a linear mapping from 30Hz to 12kHz. +// +// The mappings have been measured by feeding the SID with an external +// signal since the chip itself is incapable of generating waveforms of +// higher fundamental frequency than 4kHz. It is best to use the bandpass +// output at full resonance to pick out the cutoff frequency at any given +// FC setting. +// +// The mapping function is specified with spline interpolation points and +// the function values are retrieved via table lookup. +// +// NB! Cutoff frequency characteristics may vary, we have modeled two +// particular Commodore 64s. +/* +const fc_point Filter::f0_points_6581[] = +{ + // FC f FCHI FCLO + // ---------------------------- + { 0, 220 }, // 0x00 - repeated end point + { 0, 220 }, // 0x00 + { 128, 230 }, // 0x10 + { 256, 250 }, // 0x20 + { 384, 300 }, // 0x30 + { 512, 420 }, // 0x40 + { 640, 780 }, // 0x50 + { 768, 1600 }, // 0x60 + { 832, 2300 }, // 0x68 + { 896, 3200 }, // 0x70 + { 960, 4300 }, // 0x78 + { 992, 5000 }, // 0x7c + { 1008, 5400 }, // 0x7e + { 1016, 5700 }, // 0x7f + { 1023, 6000 }, // 0x7f 0x07 + { 1023, 6000 }, // 0x7f 0x07 - discontinuity + { 1024, 4600 }, // 0x80 - + { 1024, 4600 }, // 0x80 + { 1032, 4800 }, // 0x81 + { 1056, 5300 }, // 0x84 + { 1088, 6000 }, // 0x88 + { 1120, 6600 }, // 0x8c + { 1152, 7200 }, // 0x90 + { 1280, 9500 }, // 0xa0 + { 1408, 12000 }, // 0xb0 + { 1536, 14500 }, // 0xc0 + { 1664, 16000 }, // 0xd0 + { 1792, 17100 }, // 0xe0 + { 1920, 17700 }, // 0xf0 + { 2047, 18000 }, // 0xff 0x07 + { 2047, 18000 } // 0xff 0x07 - repeated end point +}; +*/ +/* +const fc_point Filter::f0_points_8580[] = +{ + // FC f FCHI FCLO + // ---------------------------- + { 0, 0 }, // 0x00 - repeated end point + { 0, 0 }, // 0x00 + { 128, 800 }, // 0x10 + { 256, 1600 }, // 0x20 + { 384, 2500 }, // 0x30 + { 512, 3300 }, // 0x40 + { 640, 4100 }, // 0x50 + { 768, 4800 }, // 0x60 + { 896, 5600 }, // 0x70 + { 1024, 6500 }, // 0x80 + { 1152, 7500 }, // 0x90 + { 1280, 8400 }, // 0xa0 + { 1408, 9200 }, // 0xb0 + { 1536, 9800 }, // 0xc0 + { 1664, 10500 }, // 0xd0 + { 1792, 11000 }, // 0xe0 + { 1920, 11700 }, // 0xf0 + { 2047, 12500 }, // 0xff 0x07 + { 2047, 12500 } // 0xff 0x07 - repeated end point +}; +*/ + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +Filter::Filter() +{ + fc = 0; + + res = 0; + + filt = 0; + + voice3off = 0; + + hp_bp_lp = 0; + + vol = 0; + + // State of filter. + Vhp = 0; + Vbp = 0; + Vlp = 0; + Vnf = 0; + + enable_filter(true); +/* + // Create mappings from FC to cutoff frequency. + interpolate(f0_points_6581, f0_points_6581 + + sizeof(f0_points_6581)/sizeof(*f0_points_6581) - 1, + PointPlotter(f0_6581), 1.0); + + interpolate(f0_points_8580, f0_points_8580 + + sizeof(f0_points_8580)/sizeof(*f0_points_8580) - 1, + PointPlotter(f0_8580), 1.0); +*/ +// set_chip_model(MOS6581); +{//instead: + mixer_DC = -0xfff*0xff/18 >> 7; + + //f0 = f0_6581; + // f0_points = f0_points_6581; + // f0_count = sizeof(f0_points_6581)/sizeof(*f0_points_6581); + set_w0(); + set_Q(); +} + +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void Filter::enable_filter(bool enable) +{ + enabled = enable; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void Filter::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + // The mixer has a small input DC offset. This is found as follows: + // + // The "zero" output level of the mixer measured on the SID audio + // output pin is 5.50V at zero volume, and 5.44 at full + // volume. This yields a DC offset of (5.44V - 5.50V) = -0.06V. + // + // The DC offset is thus -0.06V/1.05V ~ -1/18 of the dynamic range + // of one voice. See voice.cc for measurement of the dynamic + // range. + + mixer_DC = -0xfff*0xff/18 >> 7; + + f0 = f0_6581; + f0_points = f0_points_6581; + f0_count = sizeof(f0_points_6581)/sizeof(*f0_points_6581); + } + else { + // No DC offsets in the MOS8580. + mixer_DC = 0; + + f0 = f0_8580; + f0_points = f0_points_8580; + f0_count = sizeof(f0_points_8580)/sizeof(*f0_points_8580); + } + + set_w0(); + set_Q(); +} +*/ + + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void Filter::reset() +{ + fc = 0; + + res = 0; + + filt = 0; + + voice3off = 0; + + hp_bp_lp = 0; + + vol = 0; + + // State of filter. + Vhp = 0; + Vbp = 0; + Vlp = 0; + Vnf = 0; + + set_w0(); + set_Q(); +} + + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void Filter::writeFC_LO(reg8 fc_lo) +{ + fc = (fc & 0x7f8) | (fc_lo & 0x007); + set_w0(); +} + +void Filter::writeFC_HI(reg8 fc_hi) +{ + fc = (((unsigned int)fc_hi << 3) & 0x7f8) | (fc & 0x007); + set_w0(); +} + +void Filter::writeRES_FILT(reg8 res_filt) +{ + res = (res_filt >> 4) & 0x0f; + set_Q(); + + filt = res_filt & 0x0f; +} + +void Filter::writeMODE_VOL(reg8 mode_vol) +{ + voice3off = mode_vol & 0x80; + + hp_bp_lp = (mode_vol >> 4) & 0x07; + + vol = mode_vol & 0x0f; +} + +// Set filter cutoff frequency. +void Filter::set_w0() +{ + const float pi = 3.1415926535897932385; + + // Multiply with 1.048576 to facilitate division by 1 000 000 by right- + // shifting 20 times (2 ^ 20 = 1048576). + w0 = static_cast(2.0*pi*f0[fc]*1.048576); + + // Limit f0 to 16kHz to keep 1 cycle filter stable. + const sound_sample w0_max_1 = static_cast(2.0*pi*16000.0*1.048576); + w0_ceil_1 = w0 <= w0_max_1 ? w0 : w0_max_1; + + // Limit f0 to 4kHz to keep delta_t cycle filter stable. + const sound_sample w0_max_dt = static_cast(2.0*pi*4000.0*1.048576); + w0_ceil_dt = w0 <= w0_max_dt ? w0 : w0_max_dt; +} + +// Set filter resonance. +void Filter::set_Q() +{ + // Q is controlled linearly by res. Q has approximate range [0.707, 1.7]. + // As resonance is increased, the filter must be clocked more often to keep + // stable. + + // The coefficient 1024 is dispensed of later by right-shifting 10 times + // (2 ^ 10 = 1024). + _1024_div_Q = static_cast(1024.0/(0.707 + 1.0*res/15.0)); +} + +// ---------------------------------------------------------------------------- +// Spline functions. +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +// Return the array of spline interpolation points used to map the FC register +// to filter cutoff frequency. +// ---------------------------------------------------------------------------- +/* +void Filter::fc_default(const fc_point*& points, int& count) +{ + points = f0_points; + count = f0_count; +} +*/ +// ---------------------------------------------------------------------------- +// Given an array of interpolation points p with n points, the following +// statement will specify a new FC mapping: +// interpolate(p, p + n - 1, filter.fc_plotter(), 1.0); +// Note that the x range of the interpolation points *must* be [0, 2047], +// and that additional end points *must* be present since the end points +// are not interpolated. +// ---------------------------------------------------------------------------- +/* +PointPlotter Filter::fc_plotter() +{ + return PointPlotter(f0); +} +*/ +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/filter.h b/MCUME_esp32/esp64/main/reSID/reSID/filter.h new file mode 100755 index 0000000..24cc5ce --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/filter.h @@ -0,0 +1,539 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __FILTER_H__ +#define __FILTER_H__ + +#include "siddefs.h" +//#include "spline.h" +#include "filter6581.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// The SID filter is modeled with a two-integrator-loop biquadratic filter, +// which has been confirmed by Bob Yannes to be the actual circuit used in +// the SID chip. +// +// Measurements show that excellent emulation of the SID filter is achieved, +// except when high resonance is combined with high sustain levels. +// In this case the SID op-amps are performing less than ideally and are +// causing some peculiar behavior of the SID filter. This however seems to +// have more effect on the overall amplitude than on the color of the sound. +// +// The theory for the filter circuit can be found in "Microelectric Circuits" +// by Adel S. Sedra and Kenneth C. Smith. +// The circuit is modeled based on the explanation found there except that +// an additional inverter is used in the feedback from the bandpass output, +// allowing the summer op-amp to operate in single-ended mode. This yields +// inverted filter outputs with levels independent of Q, which corresponds with +// the results obtained from a real SID. +// +// We have been able to model the summer and the two integrators of the circuit +// to form components of an IIR filter. +// Vhp is the output of the summer, Vbp is the output of the first integrator, +// and Vlp is the output of the second integrator in the filter circuit. +// +// According to Bob Yannes, the active stages of the SID filter are not really +// op-amps. Rather, simple NMOS inverters are used. By biasing an inverter +// into its region of quasi-linear operation using a feedback resistor from +// input to output, a MOS inverter can be made to act like an op-amp for +// small signals centered around the switching threshold. +// +// Qualified guesses at SID filter schematics are depicted below. +// +// SID filter +// ---------- +// +// ----------------------------------------------- +// | | +// | ---Rq-- | +// | | | | +// | --------------|--R-----[A>--|--R-----[A>--| +// | | | | +// vi -----R1-- | | | +// +// vhp vbp vlp +// +// +// vi - input voltage +// vhp - highpass output +// vbp - bandpass output +// vlp - lowpass output +// [A> - op-amp +// R1 - summer resistor +// Rq - resistor array controlling resonance (4 resistors) +// R - NMOS FET voltage controlled resistor controlling cutoff frequency +// Rs - shunt resitor +// C - capacitor +// +// +// +// SID integrator +// -------------- +// +// V+ +// +// | +// | +// -----| +// | | +// | ||-- +// -|| +// ---C--- ||-> +// | | | +// |---Rs-----------|---- vo +// | | +// | ||-- +// vi ---- -----|------------|| +// | ^ | ||-> +// |___| | | +// ----- | | +// | | | +// |---R2-- | +// | +// R1 V- +// | +// | +// +// Vw +// +// ---------------------------------------------------------------------------- +class Filter +{ +public: + Filter(); + + void enable_filter(bool enable); + // void set_chip_model(chip_model model); + + RESID_INLINE + void clock(sound_sample voice1, sound_sample voice2, sound_sample voice3, + sound_sample ext_in); + RESID_INLINE + void clock(cycle_count delta_t, + sound_sample voice1, sound_sample voice2, sound_sample voice3, + sound_sample ext_in); + void reset(); + + // Write registers. + void writeFC_LO(reg8); + void writeFC_HI(reg8); + void writeRES_FILT(reg8); + void writeMODE_VOL(reg8); + + // SID audio output (16 bits). + sound_sample output(); + + // Spline functions. + // void fc_default(const fc_point*& points, int& count); + // PointPlotter fc_plotter(); + +protected: + void set_w0(); + void set_Q(); + + // Filter enabled. + bool enabled; + + // Filter cutoff frequency. + reg12 fc; + + // Filter resonance. + reg8 res; + + // Selects which inputs to route through filter. + reg8 filt; + + // Switch voice 3 off. + reg8 voice3off; + + // Highpass, bandpass, and lowpass filter modes. + reg8 hp_bp_lp; + + // Output master volume. + reg4 vol; + + // Mixer DC offset. + sound_sample mixer_DC; + + // State of filter. + sound_sample Vhp; // highpass + sound_sample Vbp; // bandpass + sound_sample Vlp; // lowpass + sound_sample Vnf; // not filtered + + // Cutoff frequency, resonance. + sound_sample w0, w0_ceil_1, w0_ceil_dt; + sound_sample _1024_div_Q; + + // Cutoff frequency tables. + // FC is an 11 bit register. + //sound_sample f0_6581[2048]; + //sound_sample f0_8580[2048]; + //sound_sample* f0; + //const sound_sample* f0 = filter6581; + const short* f0 = filter6581; + //const static fc_point f0_points_6581[]; + + //const static fc_point f0_points_8580[]; + //const fc_point* f0_points; + //int f0_count; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__FILTER_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void Filter::clock(sound_sample voice1, + sound_sample voice2, + sound_sample voice3, + sound_sample ext_in) +{ + // Scale each voice down from 20 to 13 bits. + voice1 >>= 7; + voice2 >>= 7; + + // NB! Voice 3 is not silenced by voice3off if it is routed through + // the filter. + if (voice3off && !(filt & 0x04)) { + voice3 = 0; + } + else { + voice3 >>= 7; + } + + ext_in >>= 7; + + // This is handy for testing. + if (!enabled) { + Vnf = voice1 + voice2 + voice3 + ext_in; + Vhp = Vbp = Vlp = 0; + return; + } + + // Route voices into or around filter. + // The code below is expanded to a switch for faster execution. + // (filt1 ? Vi : Vnf) += voice1; + // (filt2 ? Vi : Vnf) += voice2; + // (filt3 ? Vi : Vnf) += voice3; + + sound_sample Vi; + + switch (filt) { + default: + case 0x0: + Vi = 0; + Vnf = voice1 + voice2 + voice3 + ext_in; + break; + case 0x1: + Vi = voice1; + Vnf = voice2 + voice3 + ext_in; + break; + case 0x2: + Vi = voice2; + Vnf = voice1 + voice3 + ext_in; + break; + case 0x3: + Vi = voice1 + voice2; + Vnf = voice3 + ext_in; + break; + case 0x4: + Vi = voice3; + Vnf = voice1 + voice2 + ext_in; + break; + case 0x5: + Vi = voice1 + voice3; + Vnf = voice2 + ext_in; + break; + case 0x6: + Vi = voice2 + voice3; + Vnf = voice1 + ext_in; + break; + case 0x7: + Vi = voice1 + voice2 + voice3; + Vnf = ext_in; + break; + case 0x8: + Vi = ext_in; + Vnf = voice1 + voice2 + voice3; + break; + case 0x9: + Vi = voice1 + ext_in; + Vnf = voice2 + voice3; + break; + case 0xa: + Vi = voice2 + ext_in; + Vnf = voice1 + voice3; + break; + case 0xb: + Vi = voice1 + voice2 + ext_in; + Vnf = voice3; + break; + case 0xc: + Vi = voice3 + ext_in; + Vnf = voice1 + voice2; + break; + case 0xd: + Vi = voice1 + voice3 + ext_in; + Vnf = voice2; + break; + case 0xe: + Vi = voice2 + voice3 + ext_in; + Vnf = voice1; + break; + case 0xf: + Vi = voice1 + voice2 + voice3 + ext_in; + Vnf = 0; + break; + } + + // delta_t = 1 is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vhp = Vbp/Q - Vlp - Vi; + // dVbp = -w0*Vhp*dt; + // dVlp = -w0*Vbp*dt; + + sound_sample dVbp = (w0_ceil_1*Vhp >> 20); + sound_sample dVlp = (w0_ceil_1*Vbp >> 20); + Vbp -= dVbp; + Vlp -= dVlp; + Vhp = (Vbp*_1024_div_Q >> 10) - Vlp - Vi; +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void Filter::clock(cycle_count delta_t, + sound_sample voice1, + sound_sample voice2, + sound_sample voice3, + sound_sample ext_in) +{ + // Scale each voice down from 20 to 13 bits. + voice1 >>= 7; + voice2 >>= 7; + + // NB! Voice 3 is not silenced by voice3off if it is routed through + // the filter. + if (voice3off && !(filt & 0x04)) { + voice3 = 0; + } + else { + voice3 >>= 7; + } + + ext_in >>= 7; + + // Enable filter on/off. + // This is not really part of SID, but is useful for testing. + // On slow CPUs it may be necessary to bypass the filter to lower the CPU + // load. + if (!enabled) { + Vnf = voice1 + voice2 + voice3 + ext_in; + Vhp = Vbp = Vlp = 0; + return; + } + + // Route voices into or around filter. + // The code below is expanded to a switch for faster execution. + // (filt1 ? Vi : Vnf) += voice1; + // (filt2 ? Vi : Vnf) += voice2; + // (filt3 ? Vi : Vnf) += voice3; + + sound_sample Vi; + + switch (filt) { + default: + case 0x0: + Vi = 0; + Vnf = voice1 + voice2 + voice3 + ext_in; + break; + case 0x1: + Vi = voice1; + Vnf = voice2 + voice3 + ext_in; + break; + case 0x2: + Vi = voice2; + Vnf = voice1 + voice3 + ext_in; + break; + case 0x3: + Vi = voice1 + voice2; + Vnf = voice3 + ext_in; + break; + case 0x4: + Vi = voice3; + Vnf = voice1 + voice2 + ext_in; + break; + case 0x5: + Vi = voice1 + voice3; + Vnf = voice2 + ext_in; + break; + case 0x6: + Vi = voice2 + voice3; + Vnf = voice1 + ext_in; + break; + case 0x7: + Vi = voice1 + voice2 + voice3; + Vnf = ext_in; + break; + case 0x8: + Vi = ext_in; + Vnf = voice1 + voice2 + voice3; + break; + case 0x9: + Vi = voice1 + ext_in; + Vnf = voice2 + voice3; + break; + case 0xa: + Vi = voice2 + ext_in; + Vnf = voice1 + voice3; + break; + case 0xb: + Vi = voice1 + voice2 + ext_in; + Vnf = voice3; + break; + case 0xc: + Vi = voice3 + ext_in; + Vnf = voice1 + voice2; + break; + case 0xd: + Vi = voice1 + voice3 + ext_in; + Vnf = voice2; + break; + case 0xe: + Vi = voice2 + voice3 + ext_in; + Vnf = voice1; + break; + case 0xf: + Vi = voice1 + voice2 + voice3 + ext_in; + Vnf = 0; + break; + } + + // Maximum delta cycles for the filter to work satisfactorily under current + // cutoff frequency and resonance constraints is approximately 8. + cycle_count delta_t_flt = 8; + + while (delta_t) { + if (delta_t < delta_t_flt) { + delta_t_flt = delta_t; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. This is done in two operations to avoid integer + // multiplication overflow. + + // Calculate filter outputs. + // Vhp = Vbp/Q - Vlp - Vi; + // dVbp = -w0*Vhp*dt; + // dVlp = -w0*Vbp*dt; + sound_sample w0_delta_t = w0_ceil_dt * delta_t_flt >> 6; + + sound_sample dVbp = (w0_delta_t*Vhp >> 14); + sound_sample dVlp = (w0_delta_t*Vbp >> 14); + Vbp -= dVbp; + Vlp -= dVlp; + Vhp = (Vbp*_1024_div_Q >> 10) - Vlp - Vi; + + delta_t -= delta_t_flt; + } +} + + +// ---------------------------------------------------------------------------- +// SID audio output (20 bits). +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample Filter::output() +{ + // This is handy for testing. + if (!enabled) { + return (Vnf + mixer_DC)*static_cast(vol); + } + + // Mix highpass, bandpass, and lowpass outputs. The sum is not + // weighted, this can be confirmed by sampling sound output for + // e.g. bandpass, lowpass, and bandpass+lowpass from a SID chip. + + // The code below is expanded to a switch for faster execution. + // if (hp) Vf += Vhp; + // if (bp) Vf += Vbp; + // if (lp) Vf += Vlp; + + sound_sample Vf; + + switch (hp_bp_lp) { + default: + case 0x0: + Vf = 0; + break; + case 0x1: + Vf = Vlp; + break; + case 0x2: + Vf = Vbp; + break; + case 0x3: + Vf = Vlp + Vbp; + break; + case 0x4: + Vf = Vhp; + break; + case 0x5: + Vf = Vlp + Vhp; + break; + case 0x6: + Vf = Vbp + Vhp; + break; + case 0x7: + Vf = Vlp + Vbp + Vhp; + break; + } + + // Sum non-filtered and filtered output. + // Multiply the sum with volume. + return (Vnf + Vf + mixer_DC)*static_cast(vol); +} + +#endif // RESID_INLINING || defined(__FILTER_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __FILTER_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/filter6581.h b/MCUME_esp32/esp64/main/reSID/reSID/filter6581.h new file mode 100755 index 0000000..2f7f796 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/filter6581.h @@ -0,0 +1,131 @@ + +const short filter6581[] = { +0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, +0x00DC, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, +0x00DD, 0x00DD, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, +0x00DE, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, +0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E1, 0x00E1, 0x00E1, +0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, +0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E4, 0x00E4, +0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, +0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, +0x00E7, 0x00E7, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00E9, +0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00EB, +0x00EB, 0x00EB, 0x00EB, 0x00EB, 0x00EB, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00ED, 0x00ED, 0x00ED, +0x00ED, 0x00ED, 0x00ED, 0x00ED, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, +0x00EF, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F2, 0x00F2, 0x00F2, +0x00F2, 0x00F2, 0x00F3, 0x00F3, 0x00F3, 0x00F3, 0x00F3, 0x00F4, 0x00F4, 0x00F4, 0x00F4, 0x00F4, 0x00F5, 0x00F5, 0x00F5, 0x00F5, +0x00F5, 0x00F6, 0x00F6, 0x00F6, 0x00F6, 0x00F7, 0x00F7, 0x00F7, 0x00F7, 0x00F8, 0x00F8, 0x00F8, 0x00F8, 0x00F9, 0x00F9, 0x00F9, +0x00FA, 0x00FA, 0x00FA, 0x00FA, 0x00FB, 0x00FB, 0x00FB, 0x00FB, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FD, 0x00FD, 0x00FD, 0x00FE, +0x00FE, 0x00FE, 0x00FE, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0101, 0x0101, 0x0102, 0x0102, +0x0102, 0x0103, 0x0103, 0x0103, 0x0103, 0x0104, 0x0104, 0x0104, 0x0105, 0x0105, 0x0105, 0x0105, 0x0106, 0x0106, 0x0106, 0x0107, +0x0107, 0x0107, 0x0108, 0x0108, 0x0108, 0x0109, 0x0109, 0x0109, 0x010A, 0x010A, 0x010A, 0x010B, 0x010B, 0x010B, 0x010C, 0x010C, +0x010C, 0x010D, 0x010D, 0x010D, 0x010E, 0x010E, 0x010E, 0x010F, 0x010F, 0x0110, 0x0110, 0x0110, 0x0111, 0x0111, 0x0111, 0x0112, +0x0112, 0x0113, 0x0113, 0x0114, 0x0114, 0x0114, 0x0115, 0x0115, 0x0116, 0x0116, 0x0117, 0x0117, 0x0117, 0x0118, 0x0118, 0x0119, +0x0119, 0x011A, 0x011A, 0x011B, 0x011B, 0x011C, 0x011C, 0x011D, 0x011D, 0x011E, 0x011E, 0x011F, 0x011F, 0x0120, 0x0121, 0x0121, +0x0122, 0x0122, 0x0123, 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0126, 0x0127, 0x0128, 0x0128, 0x0129, 0x012A, 0x012A, 0x012B, +0x012C, 0x012C, 0x012D, 0x012D, 0x012E, 0x012F, 0x012F, 0x0130, 0x0131, 0x0131, 0x0132, 0x0132, 0x0133, 0x0134, 0x0134, 0x0135, +0x0136, 0x0136, 0x0137, 0x0137, 0x0138, 0x0138, 0x0139, 0x013A, 0x013A, 0x013B, 0x013B, 0x013C, 0x013D, 0x013D, 0x013E, 0x013E, +0x013F, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0143, 0x0143, 0x0144, 0x0144, 0x0145, 0x0146, 0x0146, 0x0147, 0x0148, 0x0148, +0x0149, 0x0149, 0x014A, 0x014B, 0x014B, 0x014C, 0x014D, 0x014E, 0x014E, 0x014F, 0x0150, 0x0150, 0x0151, 0x0152, 0x0153, 0x0153, +0x0154, 0x0155, 0x0156, 0x0156, 0x0157, 0x0158, 0x0159, 0x015A, 0x015B, 0x015B, 0x015C, 0x015D, 0x015E, 0x015F, 0x0160, 0x0161, +0x0162, 0x0163, 0x0164, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169, 0x016A, 0x016B, 0x016C, 0x016D, 0x016E, 0x016F, 0x0171, 0x0172, +0x0173, 0x0174, 0x0175, 0x0177, 0x0178, 0x0179, 0x017A, 0x017C, 0x017D, 0x017F, 0x0180, 0x0181, 0x0183, 0x0184, 0x0186, 0x0187, +0x0189, 0x018A, 0x018C, 0x018D, 0x018F, 0x0190, 0x0192, 0x0194, 0x0195, 0x0197, 0x0199, 0x019A, 0x019C, 0x019E, 0x01A0, 0x01A2, +0x01A4, 0x01A5, 0x01A7, 0x01A9, 0x01AB, 0x01AD, 0x01AF, 0x01B1, 0x01B3, 0x01B4, 0x01B6, 0x01B8, 0x01BA, 0x01BC, 0x01BE, 0x01C0, +0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC, 0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x01DE, 0x01E0, +0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC, 0x01EF, 0x01F1, 0x01F3, 0x01F5, 0x01F7, 0x01F9, 0x01FC, 0x01FE, 0x0200, 0x0202, +0x0205, 0x0207, 0x0209, 0x020C, 0x020E, 0x0210, 0x0213, 0x0215, 0x0218, 0x021A, 0x021D, 0x021F, 0x0222, 0x0224, 0x0227, 0x0229, +0x022C, 0x022E, 0x0231, 0x0234, 0x0236, 0x0239, 0x023C, 0x023E, 0x0241, 0x0244, 0x0247, 0x024A, 0x024D, 0x024F, 0x0252, 0x0255, +0x0258, 0x025B, 0x025E, 0x0261, 0x0264, 0x0267, 0x026B, 0x026E, 0x0271, 0x0274, 0x0277, 0x027B, 0x027E, 0x0281, 0x0285, 0x0288, +0x028C, 0x028F, 0x0292, 0x0296, 0x029A, 0x029D, 0x02A1, 0x02A4, 0x02A8, 0x02AC, 0x02B0, 0x02B3, 0x02B7, 0x02BB, 0x02BF, 0x02C3, +0x02C7, 0x02CB, 0x02CF, 0x02D3, 0x02D7, 0x02DB, 0x02DF, 0x02E4, 0x02E8, 0x02EC, 0x02F1, 0x02F5, 0x02F9, 0x02FE, 0x0302, 0x0307, +0x030C, 0x0310, 0x0315, 0x0319, 0x031E, 0x0323, 0x0328, 0x032D, 0x0331, 0x0336, 0x033B, 0x0340, 0x0345, 0x034A, 0x034F, 0x0354, +0x0359, 0x035E, 0x0364, 0x0369, 0x036E, 0x0373, 0x0379, 0x037E, 0x0383, 0x0389, 0x038E, 0x0393, 0x0399, 0x039E, 0x03A4, 0x03AA, +0x03AF, 0x03B5, 0x03BA, 0x03C0, 0x03C6, 0x03CB, 0x03D1, 0x03D7, 0x03DD, 0x03E3, 0x03E9, 0x03EE, 0x03F4, 0x03FA, 0x0400, 0x0406, +0x040C, 0x0412, 0x0418, 0x041F, 0x0425, 0x042B, 0x0431, 0x0437, 0x043E, 0x0444, 0x044A, 0x0451, 0x0457, 0x045D, 0x0464, 0x046A, +0x0471, 0x0477, 0x047E, 0x0484, 0x048B, 0x0491, 0x0498, 0x049F, 0x04A5, 0x04AC, 0x04B3, 0x04B9, 0x04C0, 0x04C7, 0x04CE, 0x04D5, +0x04DB, 0x04E2, 0x04E9, 0x04F0, 0x04F7, 0x04FE, 0x0505, 0x050C, 0x0513, 0x051A, 0x0521, 0x0529, 0x0530, 0x0537, 0x053E, 0x0545, +0x054D, 0x0554, 0x055B, 0x0562, 0x056A, 0x0571, 0x0578, 0x0580, 0x0587, 0x058F, 0x0596, 0x059E, 0x05A5, 0x05AD, 0x05B4, 0x05BC, +0x05C3, 0x05CB, 0x05D3, 0x05DA, 0x05E2, 0x05EA, 0x05F1, 0x05F9, 0x0601, 0x0609, 0x0610, 0x0618, 0x0620, 0x0628, 0x0630, 0x0638, +0x0640, 0x0647, 0x0650, 0x0658, 0x0660, 0x0669, 0x0671, 0x067A, 0x0683, 0x068C, 0x0695, 0x069F, 0x06A8, 0x06B1, 0x06BB, 0x06C5, +0x06CF, 0x06D9, 0x06E3, 0x06ED, 0x06F7, 0x0701, 0x070C, 0x0716, 0x0721, 0x072C, 0x0736, 0x0741, 0x074C, 0x0757, 0x0762, 0x076E, +0x0779, 0x0784, 0x0790, 0x079B, 0x07A7, 0x07B2, 0x07BE, 0x07CA, 0x07D5, 0x07E1, 0x07ED, 0x07F9, 0x0805, 0x0811, 0x081D, 0x0829, +0x0835, 0x0842, 0x084E, 0x085A, 0x0866, 0x0873, 0x087F, 0x088B, 0x0898, 0x08A4, 0x08B1, 0x08BD, 0x08CA, 0x08D6, 0x08E3, 0x08EF, +0x08FC, 0x0908, 0x0915, 0x0921, 0x092E, 0x093B, 0x0947, 0x0954, 0x0961, 0x096E, 0x097B, 0x0988, 0x0995, 0x09A2, 0x09AF, 0x09BC, +0x09CA, 0x09D7, 0x09E4, 0x09F2, 0x09FF, 0x0A0D, 0x0A1A, 0x0A28, 0x0A36, 0x0A43, 0x0A51, 0x0A5F, 0x0A6D, 0x0A7B, 0x0A88, 0x0A96, +0x0AA5, 0x0AB3, 0x0AC1, 0x0ACF, 0x0ADD, 0x0AEB, 0x0AFA, 0x0B08, 0x0B17, 0x0B25, 0x0B34, 0x0B42, 0x0B51, 0x0B5F, 0x0B6E, 0x0B7D, +0x0B8C, 0x0B9B, 0x0BAA, 0x0BB9, 0x0BC8, 0x0BD7, 0x0BE6, 0x0BF5, 0x0C04, 0x0C13, 0x0C23, 0x0C32, 0x0C41, 0x0C51, 0x0C60, 0x0C70, +0x0C80, 0x0C8F, 0x0C9F, 0x0CAF, 0x0CBE, 0x0CCE, 0x0CDE, 0x0CEE, 0x0CFE, 0x0D0E, 0x0D1E, 0x0D2E, 0x0D3F, 0x0D4F, 0x0D5F, 0x0D6F, +0x0D80, 0x0D90, 0x0DA1, 0x0DB1, 0x0DC2, 0x0DD2, 0x0DE3, 0x0DF4, 0x0E05, 0x0E15, 0x0E26, 0x0E37, 0x0E48, 0x0E59, 0x0E6A, 0x0E7B, +0x0E8D, 0x0E9E, 0x0EAF, 0x0EC0, 0x0ED2, 0x0EE3, 0x0EF5, 0x0F06, 0x0F18, 0x0F29, 0x0F3B, 0x0F4D, 0x0F5E, 0x0F70, 0x0F82, 0x0F94, +0x0FA6, 0x0FB8, 0x0FCA, 0x0FDC, 0x0FEE, 0x1000, 0x1012, 0x1025, 0x1037, 0x1049, 0x105C, 0x106E, 0x1081, 0x1093, 0x10A6, 0x10B9, +0x10CC, 0x10DE, 0x10F2, 0x1105, 0x1119, 0x112D, 0x1141, 0x1156, 0x116B, 0x1180, 0x1195, 0x11AB, 0x11C0, 0x11D6, 0x11EC, 0x1203, +0x1219, 0x122F, 0x1246, 0x125D, 0x1273, 0x128A, 0x12A1, 0x12B8, 0x12CF, 0x12E6, 0x12FD, 0x1314, 0x132B, 0x1343, 0x135A, 0x1371, +0x1388, 0x139E, 0x13B5, 0x13CC, 0x13E4, 0x13FB, 0x1413, 0x142B, 0x1443, 0x145C, 0x1475, 0x148E, 0x14A9, 0x14C3, 0x14DF, 0x14FB, +0x1518, 0x1536, 0x1558, 0x157C, 0x15A3, 0x15CA, 0x15F3, 0x161B, 0x1644, 0x166C, 0x1696, 0x16C0, 0x16EB, 0x1717, 0x1743, 0x1770, +0x11F8, 0x1212, 0x122C, 0x1247, 0x1260, 0x1279, 0x1292, 0x12A9, 0x12C0, 0x12D5, 0x12EB, 0x1300, 0x1315, 0x132A, 0x133F, 0x1354, +0x1369, 0x137D, 0x1392, 0x13A6, 0x13BB, 0x13CF, 0x13E4, 0x13F8, 0x140D, 0x1421, 0x1436, 0x144A, 0x145F, 0x1474, 0x1489, 0x149E, +0x14B4, 0x14C9, 0x14DF, 0x14F4, 0x150A, 0x1520, 0x1536, 0x154D, 0x1563, 0x1579, 0x158F, 0x15A6, 0x15BC, 0x15D3, 0x15E9, 0x1600, +0x1616, 0x162C, 0x1643, 0x1659, 0x166F, 0x1685, 0x169B, 0x16B1, 0x16C7, 0x16DD, 0x16F2, 0x1707, 0x171D, 0x1732, 0x1746, 0x175B, +0x1770, 0x1784, 0x1798, 0x17AC, 0x17BF, 0x17D3, 0x17E6, 0x17F9, 0x180D, 0x1820, 0x1832, 0x1845, 0x1858, 0x186A, 0x187D, 0x188F, +0x18A2, 0x18B4, 0x18C6, 0x18D9, 0x18EB, 0x18FD, 0x190F, 0x1922, 0x1934, 0x1946, 0x1958, 0x196B, 0x197D, 0x1990, 0x19A2, 0x19B5, +0x19C8, 0x19DA, 0x19ED, 0x1A00, 0x1A13, 0x1A26, 0x1A39, 0x1A4B, 0x1A5E, 0x1A71, 0x1A84, 0x1A97, 0x1AAA, 0x1ABD, 0x1AD0, 0x1AE3, +0x1AF6, 0x1B09, 0x1B1C, 0x1B2F, 0x1B41, 0x1B54, 0x1B67, 0x1B7A, 0x1B8C, 0x1B9F, 0x1BB1, 0x1BC4, 0x1BD6, 0x1BE9, 0x1BFB, 0x1C0D, +0x1C20, 0x1C32, 0x1C44, 0x1C56, 0x1C68, 0x1C7A, 0x1C8C, 0x1C9E, 0x1CB0, 0x1CC2, 0x1CD4, 0x1CE6, 0x1CF8, 0x1D0A, 0x1D1C, 0x1D2E, +0x1D40, 0x1D51, 0x1D63, 0x1D75, 0x1D87, 0x1D99, 0x1DAB, 0x1DBD, 0x1DCE, 0x1DE0, 0x1DF2, 0x1E04, 0x1E16, 0x1E27, 0x1E39, 0x1E4B, +0x1E5D, 0x1E6E, 0x1E80, 0x1E92, 0x1EA4, 0x1EB5, 0x1EC7, 0x1ED9, 0x1EEA, 0x1EFC, 0x1F0E, 0x1F20, 0x1F31, 0x1F43, 0x1F55, 0x1F66, +0x1F78, 0x1F8A, 0x1F9C, 0x1FAD, 0x1FBF, 0x1FD1, 0x1FE2, 0x1FF4, 0x2006, 0x2017, 0x2029, 0x203B, 0x204D, 0x205E, 0x2070, 0x2082, +0x2094, 0x20A5, 0x20B7, 0x20C9, 0x20DA, 0x20EC, 0x20FE, 0x2110, 0x2122, 0x2133, 0x2145, 0x2157, 0x2169, 0x217B, 0x218C, 0x219E, +0x21B0, 0x21C2, 0x21D4, 0x21E6, 0x21F8, 0x220A, 0x221B, 0x222D, 0x223F, 0x2251, 0x2263, 0x2275, 0x2287, 0x2299, 0x22AB, 0x22BD, +0x22CF, 0x22E1, 0x22F4, 0x2306, 0x2318, 0x232A, 0x233C, 0x234E, 0x2360, 0x2373, 0x2385, 0x2397, 0x23A9, 0x23BC, 0x23CE, 0x23E0, +0x23F3, 0x2405, 0x2417, 0x242A, 0x243C, 0x244F, 0x2461, 0x2474, 0x2486, 0x2499, 0x24AB, 0x24BE, 0x24D1, 0x24E3, 0x24F6, 0x2509, +0x251C, 0x252E, 0x2541, 0x2554, 0x2567, 0x257A, 0x258C, 0x259F, 0x25B2, 0x25C5, 0x25D8, 0x25EB, 0x25FE, 0x2611, 0x2624, 0x2637, +0x264A, 0x265E, 0x2671, 0x2684, 0x2697, 0x26AA, 0x26BD, 0x26D1, 0x26E4, 0x26F7, 0x270A, 0x271E, 0x2731, 0x2744, 0x2758, 0x276B, +0x277E, 0x2792, 0x27A5, 0x27B9, 0x27CC, 0x27E0, 0x27F3, 0x2806, 0x281A, 0x282D, 0x2841, 0x2855, 0x2868, 0x287C, 0x288F, 0x28A3, +0x28B6, 0x28CA, 0x28DE, 0x28F1, 0x2905, 0x2918, 0x292C, 0x2940, 0x2953, 0x2967, 0x297B, 0x298E, 0x29A2, 0x29B6, 0x29CA, 0x29DD, +0x29F1, 0x2A05, 0x2A18, 0x2A2C, 0x2A40, 0x2A54, 0x2A67, 0x2A7B, 0x2A8F, 0x2AA3, 0x2AB7, 0x2ACA, 0x2ADE, 0x2AF2, 0x2B06, 0x2B19, +0x2B2D, 0x2B41, 0x2B55, 0x2B69, 0x2B7C, 0x2B90, 0x2BA4, 0x2BB8, 0x2BCC, 0x2BDF, 0x2BF3, 0x2C07, 0x2C1B, 0x2C2E, 0x2C42, 0x2C56, +0x2C6A, 0x2C7E, 0x2C91, 0x2CA5, 0x2CB9, 0x2CCD, 0x2CE0, 0x2CF4, 0x2D08, 0x2D1C, 0x2D2F, 0x2D43, 0x2D57, 0x2D6B, 0x2D7E, 0x2D92, +0x2DA6, 0x2DB9, 0x2DCD, 0x2DE1, 0x2DF4, 0x2E08, 0x2E1C, 0x2E2F, 0x2E43, 0x2E56, 0x2E6A, 0x2E7E, 0x2E91, 0x2EA5, 0x2EB8, 0x2ECC, +0x2EE0, 0x2EF3, 0x2F07, 0x2F1A, 0x2F2E, 0x2F42, 0x2F56, 0x2F6A, 0x2F7E, 0x2F92, 0x2FA6, 0x2FBA, 0x2FCE, 0x2FE2, 0x2FF6, 0x300B, +0x301F, 0x3033, 0x3048, 0x305C, 0x3070, 0x3085, 0x3099, 0x30AE, 0x30C3, 0x30D7, 0x30EC, 0x3100, 0x3115, 0x312A, 0x313E, 0x3153, +0x3168, 0x317D, 0x3191, 0x31A6, 0x31BB, 0x31D0, 0x31E5, 0x31F9, 0x320E, 0x3223, 0x3238, 0x324D, 0x3262, 0x3276, 0x328B, 0x32A0, +0x32B5, 0x32CA, 0x32DF, 0x32F3, 0x3308, 0x331D, 0x3332, 0x3346, 0x335B, 0x3370, 0x3384, 0x3399, 0x33AE, 0x33C2, 0x33D7, 0x33EB, +0x3400, 0x3414, 0x3429, 0x343D, 0x3452, 0x3466, 0x347A, 0x348F, 0x34A3, 0x34B7, 0x34CB, 0x34DF, 0x34F3, 0x3507, 0x351B, 0x352F, +0x3543, 0x3557, 0x356B, 0x357F, 0x3592, 0x35A6, 0x35B9, 0x35CD, 0x35E0, 0x35F3, 0x3607, 0x361A, 0x362D, 0x3640, 0x3653, 0x3666, +0x3679, 0x368C, 0x369E, 0x36B1, 0x36C3, 0x36D6, 0x36E8, 0x36FA, 0x370D, 0x371F, 0x3731, 0x3743, 0x3754, 0x3766, 0x3778, 0x3789, +0x379B, 0x37AC, 0x37BD, 0x37CF, 0x37E0, 0x37F1, 0x3801, 0x3812, 0x3823, 0x3833, 0x3844, 0x3854, 0x3864, 0x3874, 0x3884, 0x3894, +0x38A4, 0x38B3, 0x38C3, 0x38D2, 0x38E1, 0x38F0, 0x3900, 0x390F, 0x391D, 0x392C, 0x393B, 0x394A, 0x3958, 0x3967, 0x3975, 0x3983, +0x3992, 0x39A0, 0x39AE, 0x39BC, 0x39CA, 0x39D7, 0x39E5, 0x39F3, 0x3A00, 0x3A0E, 0x3A1B, 0x3A29, 0x3A36, 0x3A43, 0x3A50, 0x3A5D, +0x3A6A, 0x3A77, 0x3A84, 0x3A91, 0x3A9D, 0x3AAA, 0x3AB7, 0x3AC3, 0x3AD0, 0x3ADC, 0x3AE8, 0x3AF4, 0x3B01, 0x3B0D, 0x3B19, 0x3B25, +0x3B31, 0x3B3D, 0x3B49, 0x3B54, 0x3B60, 0x3B6C, 0x3B77, 0x3B83, 0x3B8E, 0x3B9A, 0x3BA5, 0x3BB1, 0x3BBC, 0x3BC7, 0x3BD3, 0x3BDE, +0x3BE9, 0x3BF4, 0x3BFF, 0x3C0A, 0x3C15, 0x3C20, 0x3C2B, 0x3C36, 0x3C41, 0x3C4C, 0x3C56, 0x3C61, 0x3C6C, 0x3C76, 0x3C81, 0x3C8C, +0x3C96, 0x3CA1, 0x3CAB, 0x3CB6, 0x3CC0, 0x3CCB, 0x3CD5, 0x3CDF, 0x3CEA, 0x3CF4, 0x3CFF, 0x3D09, 0x3D13, 0x3D1D, 0x3D28, 0x3D32, +0x3D3C, 0x3D46, 0x3D50, 0x3D5B, 0x3D65, 0x3D6F, 0x3D79, 0x3D83, 0x3D8D, 0x3D97, 0x3DA1, 0x3DAC, 0x3DB6, 0x3DC0, 0x3DCA, 0x3DD4, +0x3DDE, 0x3DE8, 0x3DF2, 0x3DFC, 0x3E06, 0x3E10, 0x3E1A, 0x3E24, 0x3E2F, 0x3E39, 0x3E43, 0x3E4D, 0x3E57, 0x3E61, 0x3E6B, 0x3E75, +0x3E80, 0x3E8A, 0x3E94, 0x3E9E, 0x3EA8, 0x3EB2, 0x3EBC, 0x3EC6, 0x3ED0, 0x3EDA, 0x3EE4, 0x3EEE, 0x3EF8, 0x3F02, 0x3F0C, 0x3F16, +0x3F20, 0x3F29, 0x3F33, 0x3F3D, 0x3F47, 0x3F51, 0x3F5A, 0x3F64, 0x3F6E, 0x3F77, 0x3F81, 0x3F8B, 0x3F94, 0x3F9E, 0x3FA7, 0x3FB1, +0x3FBA, 0x3FC4, 0x3FCD, 0x3FD7, 0x3FE0, 0x3FEA, 0x3FF3, 0x3FFC, 0x4006, 0x400F, 0x4018, 0x4021, 0x402B, 0x4034, 0x403D, 0x4046, +0x404F, 0x4058, 0x4061, 0x406A, 0x4074, 0x407D, 0x4085, 0x408E, 0x4097, 0x40A0, 0x40A9, 0x40B2, 0x40BB, 0x40C4, 0x40CC, 0x40D5, +0x40DE, 0x40E6, 0x40EF, 0x40F8, 0x4100, 0x4109, 0x4111, 0x411A, 0x4122, 0x412B, 0x4133, 0x413C, 0x4144, 0x414C, 0x4155, 0x415D, +0x4165, 0x416D, 0x4176, 0x417E, 0x4186, 0x418E, 0x4196, 0x419E, 0x41A6, 0x41AE, 0x41B6, 0x41BE, 0x41C6, 0x41CE, 0x41D5, 0x41DD, +0x41E5, 0x41ED, 0x41F4, 0x41FC, 0x4204, 0x420B, 0x4213, 0x421A, 0x4222, 0x4229, 0x4231, 0x4238, 0x4240, 0x4247, 0x424E, 0x4255, +0x425D, 0x4264, 0x426B, 0x4272, 0x4279, 0x4280, 0x4287, 0x428E, 0x4295, 0x429C, 0x42A3, 0x42AA, 0x42B1, 0x42B7, 0x42BE, 0x42C5, +0x42CC, 0x42D2, 0x42D9, 0x42DF, 0x42E6, 0x42EC, 0x42F3, 0x42F9, 0x42FF, 0x4306, 0x430C, 0x4312, 0x4318, 0x431E, 0x4324, 0x432A, +0x4330, 0x4336, 0x433C, 0x4342, 0x4348, 0x434E, 0x4354, 0x4359, 0x435F, 0x4365, 0x436A, 0x4370, 0x4376, 0x437B, 0x4381, 0x4386, +0x438C, 0x4391, 0x4396, 0x439C, 0x43A1, 0x43A6, 0x43AC, 0x43B1, 0x43B6, 0x43BB, 0x43C0, 0x43C5, 0x43CA, 0x43CF, 0x43D4, 0x43D9, +0x43DE, 0x43E3, 0x43E8, 0x43ED, 0x43F2, 0x43F6, 0x43FB, 0x4400, 0x4405, 0x4409, 0x440E, 0x4413, 0x4417, 0x441C, 0x4420, 0x4425, +0x4429, 0x442E, 0x4432, 0x4437, 0x443B, 0x443F, 0x4444, 0x4448, 0x444C, 0x4451, 0x4455, 0x4459, 0x445D, 0x4462, 0x4466, 0x446A, +0x446E, 0x4472, 0x4476, 0x447B, 0x447F, 0x4483, 0x4487, 0x448B, 0x448F, 0x4493, 0x4497, 0x449B, 0x449F, 0x44A2, 0x44A6, 0x44AA, +0x44AE, 0x44B2, 0x44B6, 0x44BA, 0x44BD, 0x44C1, 0x44C5, 0x44C9, 0x44CC, 0x44D0, 0x44D4, 0x44D8, 0x44DB, 0x44DF, 0x44E3, 0x44E6, +0x44EA, 0x44EE, 0x44F1, 0x44F5, 0x44F9, 0x44FC, 0x4500, 0x4503, 0x4507, 0x450B, 0x450E, 0x4512, 0x4515, 0x4519, 0x451C, 0x4520, +0x4524, 0x4527, 0x452B, 0x452E, 0x4531, 0x4535, 0x4538, 0x453C, 0x453F, 0x4542, 0x4545, 0x4549, 0x454C, 0x454F, 0x4552, 0x4555, +0x4559, 0x455C, 0x455F, 0x4562, 0x4565, 0x4568, 0x456B, 0x456E, 0x4571, 0x4574, 0x4577, 0x4579, 0x457C, 0x457F, 0x4582, 0x4585, +0x4588, 0x458A, 0x458D, 0x4590, 0x4592, 0x4595, 0x4598, 0x459A, 0x459D, 0x45A0, 0x45A2, 0x45A5, 0x45A7, 0x45AA, 0x45AC, 0x45AF, +0x45B1, 0x45B4, 0x45B6, 0x45B8, 0x45BB, 0x45BD, 0x45C0, 0x45C2, 0x45C4, 0x45C7, 0x45C9, 0x45CB, 0x45CD, 0x45D0, 0x45D2, 0x45D4, +0x45D6, 0x45D9, 0x45DB, 0x45DD, 0x45DF, 0x45E1, 0x45E3, 0x45E6, 0x45E8, 0x45EA, 0x45EC, 0x45EE, 0x45F0, 0x45F2, 0x45F4, 0x45F6, +0x45F8, 0x45FA, 0x45FC, 0x45FE, 0x4600, 0x4602, 0x4604, 0x4606, 0x4608, 0x460A, 0x460C, 0x460E, 0x4610, 0x4612, 0x4614, 0x4615, +0x4617, 0x4619, 0x461B, 0x461D, 0x461F, 0x4621, 0x4622, 0x4624, 0x4626, 0x4628, 0x462A, 0x462C, 0x462D, 0x462F, 0x4631, 0x4633, +0x4635, 0x4637, 0x4638, 0x463A, 0x463C, 0x463E, 0x463F, 0x4641, 0x4643, 0x4645, 0x4647, 0x4648, 0x464A, 0x464C, 0x464E, 0x464F, +}; diff --git a/MCUME_esp32/esp64/main/reSID/reSID/pot.cc b/MCUME_esp32/esp64/main/reSID/reSID/pot.cc new file mode 100755 index 0000000..25ad24e --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/pot.cc @@ -0,0 +1,30 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "pot.h" + +RESID_NAMESPACE_START + +reg8 Potentiometer::readPOT() +{ + // NB! Not modeled. + return 0xff; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/pot.h b/MCUME_esp32/esp64/main/reSID/reSID/pot.h new file mode 100755 index 0000000..5bed353 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/pot.h @@ -0,0 +1,35 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __POT_H__ +#define __POT_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +class Potentiometer +{ +public: + reg8 readPOT(); +}; + +RESID_NAMESPACE_STOP + +#endif diff --git a/MCUME_esp32/esp64/main/reSID/reSID/sid.cc b/MCUME_esp32/esp64/main/reSID/reSID/sid.cc new file mode 100755 index 0000000..de73cce --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/sid.cc @@ -0,0 +1,771 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "sid.h" +#include + +RESID_NAMESPACE_START + +// Resampling constants. +// The error in interpolated lookup is bounded by 1.234/L^2, +// while the error in non-interpolated lookup is bounded by +// 0.7854/L + 0.4113/L^2, see +// http://www-ccrma.stanford.edu/~jos/resample/Choice_Table_Size.html +// For a resolution of 16 bits this yields L >= 285 and L >= 51473, +// respectively. +const int SID::FIR_N = 125; +const int SID::FIR_RES_INTERPOLATE = 285; +const int SID::FIR_RES_FAST = 51473; +const int SID::FIR_SHIFT = 15; +const int SID::RINGSIZE = 16384; + +// Fixpoint constants (16.16 bits). +const int SID::FIXP_SHIFT = 16; +const int SID::FIXP_MASK = 0xffff; + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +SID::SID() +{ + + voice[0].set_sync_source(&voice[2]); + voice[1].set_sync_source(&voice[0]); + voice[2].set_sync_source(&voice[1]); + + set_sampling_parameters(985248, SAMPLE_FAST, 22050); + + bus_value = 0; + bus_value_ttl = 0; + + ext_in = 0; + +} +/* +void SID::printFilter(void){ + Serial.print(filter.f0_count); + for (int i=0; i< 2048; i++) { + if (i % 16==0) Serial.println(); + Serial.printf("0x%04X, ",filter.f0_6581[i]); + } +} +*/ +// ---------------------------------------------------------------------------- +// Destructor. +// ---------------------------------------------------------------------------- +SID::~SID() +{ +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void SID::set_chip_model(chip_model model) +{ + voice[0].set_chip_model(model); + voice[1].set_chip_model(model); + voice[2].set_chip_model(model); + + filter.set_chip_model(model); + extfilt.set_chip_model(model); +} +*/ + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void SID::reset() +{ + + voice[0].reset(); + voice[1].reset(); + voice[2].reset(); + + filter.reset(); + extfilt.reset(); + + bus_value = 0; + bus_value_ttl = 0; +} + + +// ---------------------------------------------------------------------------- +// Write 16-bit sample to audio input. +// NB! The caller is responsible for keeping the value within 16 bits. +// Note that to mix in an external audio signal, the signal should be +// resampled to 1MHz first to avoid sampling noise. +// ---------------------------------------------------------------------------- +void SID::input(int sample) +{ + // Voice outputs are 20 bits. Scale up to match three voices in order + // to facilitate simulation of the MOS8580 "digi boost" hardware hack. + ext_in = (sample << 4)*3; +} + +// ---------------------------------------------------------------------------- +// Read sample from audio output. +// ---------------------------------------------------------------------------- +int SID::output() +{ + const int range = 1 << 16; + const int half = range >> 1; + int sample = extfilt.output()/((4095*255 >> 7)*3*15*2/range); + + //asm ("ssat %0, #16, %1" : "=r" (sample) : "r" (sample)); + + if (sample >= half) { + return half - 1; + } + if (sample < -half) { + return -half; + } + + return sample; +} + + +// ---------------------------------------------------------------------------- +// Read registers. +// +// Reading a write only register returns the last byte written to any SID +// register. The individual bits in this value start to fade down towards +// zero after a few cycles. All bits reach zero within approximately +// $2000 - $4000 cycles. +// It has been claimed that this fading happens in an orderly fashion, however +// sampling of write only registers reveals that this is not the case. +// NB! This is not correctly modeled. +// The actual use of write only registers has largely been made in the belief +// that all SID registers are readable. To support this belief the read +// would have to be done immediately after a write to the same register +// (remember that an intermediate write to another register would yield that +// value instead). With this in mind we return the last value written to +// any SID register for $2000 cycles without modeling the bit fading. +// ---------------------------------------------------------------------------- +reg8 SID::read(reg8 offset) +{ + switch (offset) { + case 0x19: + return potx.readPOT(); + case 0x1a: + return poty.readPOT(); + case 0x1b: + return voice[2].wave.readOSC(); + case 0x1c: + return voice[2].envelope.readENV(); + default: + return bus_value; + } +} + + +// ---------------------------------------------------------------------------- +// Write registers. +// ---------------------------------------------------------------------------- +void SID::write(reg8 offset, reg8 value) +{ + bus_value = value; + bus_value_ttl = 0x2000; + + switch (offset) { + case 0x00: + voice[0].wave.writeFREQ_LO(value); + break; + case 0x01: + voice[0].wave.writeFREQ_HI(value); + break; + case 0x02: + voice[0].wave.writePW_LO(value); + break; + case 0x03: + voice[0].wave.writePW_HI(value); + break; + case 0x04: + voice[0].writeCONTROL_REG(value); + break; + case 0x05: + voice[0].envelope.writeATTACK_DECAY(value); + break; + case 0x06: + voice[0].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x07: + voice[1].wave.writeFREQ_LO(value); + break; + case 0x08: + voice[1].wave.writeFREQ_HI(value); + break; + case 0x09: + voice[1].wave.writePW_LO(value); + break; + case 0x0a: + voice[1].wave.writePW_HI(value); + break; + case 0x0b: + voice[1].writeCONTROL_REG(value); + break; + case 0x0c: + voice[1].envelope.writeATTACK_DECAY(value); + break; + case 0x0d: + voice[1].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x0e: + voice[2].wave.writeFREQ_LO(value); + break; + case 0x0f: + voice[2].wave.writeFREQ_HI(value); + break; + case 0x10: + voice[2].wave.writePW_LO(value); + break; + case 0x11: + voice[2].wave.writePW_HI(value); + break; + case 0x12: + voice[2].writeCONTROL_REG(value); + break; + case 0x13: + voice[2].envelope.writeATTACK_DECAY(value); + break; + case 0x14: + voice[2].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x15: + filter.writeFC_LO(value); + break; + case 0x16: + filter.writeFC_HI(value); + break; + case 0x17: + filter.writeRES_FILT(value); + break; + case 0x18: + filter.writeMODE_VOL(value); + break; + default: + break; + } +} + + +// ---------------------------------------------------------------------------- +// SID voice muting. +// ---------------------------------------------------------------------------- +void SID::mute(reg8 channel, bool enable) +{ + // Only have 3 voices! + if (channel >= 3) + return; + + voice[channel].mute (enable); +} + + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +SID::State::State() +{ + int i; + + for (i = 0; i < 0x20; i++) { + sid_register[i] = 0; + } + + bus_value = 0; + bus_value_ttl = 0; + + for (i = 0; i < 3; i++) { + accumulator[i] = 0; + shift_register[i] = 0x7ffff8; + rate_counter[i] = 0; + rate_counter_period[i] = 9; + exponential_counter[i] = 0; + exponential_counter_period[i] = 1; + envelope_counter[i] = 0; + envelope_state[i] = EnvelopeGenerator::RELEASE; + hold_zero[i] = true; + } +} + + +// ---------------------------------------------------------------------------- +// Read state. +// ---------------------------------------------------------------------------- +SID::State SID::read_state() +{ + State state; + int i, j; + + for (i = 0, j = 0; i < 3; i++, j += 7) { + WaveformGenerator& wave = voice[i].wave; + EnvelopeGenerator& envelope = voice[i].envelope; + state.sid_register[j + 0] = wave.freq & 0xff; + state.sid_register[j + 1] = wave.freq >> 8; + state.sid_register[j + 2] = wave.pw & 0xff; + state.sid_register[j + 3] = wave.pw >> 8; + state.sid_register[j + 4] = + (wave.waveform << 4) + | (wave.test ? 0x08 : 0) + | (wave.ring_mod ? 0x04 : 0) + | (wave.sync ? 0x02 : 0) + | (envelope.gate ? 0x01 : 0); + state.sid_register[j + 5] = (envelope.attack << 4) | envelope.decay; + state.sid_register[j + 6] = (envelope.sustain << 4) | envelope.release; + } + + state.sid_register[j++] = filter.fc & 0x007; + state.sid_register[j++] = filter.fc >> 3; + state.sid_register[j++] = (filter.res << 4) | filter.filt; + state.sid_register[j++] = + (filter.voice3off ? 0x80 : 0) + | (filter.hp_bp_lp << 4) + | filter.vol; + + // These registers are superfluous, but included for completeness. + for (; j < 0x1d; j++) { + state.sid_register[j] = read(j); + } + for (; j < 0x20; j++) { + state.sid_register[j] = 0; + } + + state.bus_value = bus_value; + state.bus_value_ttl = bus_value_ttl; + + for (i = 0; i < 3; i++) { + state.accumulator[i] = voice[i].wave.accumulator; + state.shift_register[i] = voice[i].wave.shift_register; + state.rate_counter[i] = voice[i].envelope.rate_counter; + state.rate_counter_period[i] = voice[i].envelope.rate_period; + state.exponential_counter[i] = voice[i].envelope.exponential_counter; + state.exponential_counter_period[i] = voice[i].envelope.exponential_counter_period; + state.envelope_counter[i] = voice[i].envelope.envelope_counter; + state.envelope_state[i] = voice[i].envelope.state; + state.hold_zero[i] = voice[i].envelope.hold_zero; + } + + return state; +} + + +// ---------------------------------------------------------------------------- +// Write state. +// ---------------------------------------------------------------------------- +void SID::write_state(const State& state) +{ + int i; + + for (i = 0; i <= 0x18; i++) { + write(i, state.sid_register[i]); + } + + bus_value = state.bus_value; + bus_value_ttl = state.bus_value_ttl; + + for (i = 0; i < 3; i++) { + voice[i].wave.accumulator = state.accumulator[i]; + voice[i].wave.shift_register = state.shift_register[i]; + voice[i].envelope.rate_counter = state.rate_counter[i]; + voice[i].envelope.rate_period = state.rate_counter_period[i]; + voice[i].envelope.exponential_counter = state.exponential_counter[i]; + voice[i].envelope.exponential_counter_period = state.exponential_counter_period[i]; + voice[i].envelope.envelope_counter = state.envelope_counter[i]; + voice[i].envelope.state = state.envelope_state[i]; + voice[i].envelope.hold_zero = state.hold_zero[i]; + } +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void SID::enable_filter(bool enable) +{ + filter.enable_filter(enable); +} + + +// ---------------------------------------------------------------------------- +// Enable external filter. +// ---------------------------------------------------------------------------- +void SID::enable_external_filter(bool enable) +{ + extfilt.enable_filter(enable); +} + + +// ---------------------------------------------------------------------------- +// I0() computes the 0th order modified Bessel function of the first kind. +// This function is originally from resample-1.5/filterkit.c by J. O. Smith. +// ---------------------------------------------------------------------------- +/* +float SID::I0(float x) +{ + // Max error acceptable in I0. + const float I0e = 1e-6; + + float sum, u, halfx, temp; + int n; + + sum = u = n = 1; + halfx = x/2.0; + + do { + temp = halfx/n++; + u *= temp*temp; + sum += u; + } while (u >= I0e*sum); + + return sum; +} +*/ + +// ---------------------------------------------------------------------------- +// Setting of SID sampling parameters. +// +// Use a clock freqency of 985248Hz for PAL C64, 1022730Hz for NTSC C64. +// The default end of passband frequency is pass_freq = 0.9*sample_freq/2 +// for sample frequencies up to ~ 44.1kHz, and 20kHz for higher sample +// frequencies. +// +// For resampling, the ratio between the clock frequency and the sample +// frequency is limited as follows: +// 125*clock_freq/sample_freq < 16384 +// E.g. provided a clock frequency of ~ 1MHz, the sample frequency can not +// be set lower than ~ 8kHz. A lower sample frequency would make the +// resampling code overfill its 16k sample ring buffer. +// +// The end of passband frequency is also limited: +// pass_freq <= 0.9*sample_freq/2 + +// E.g. for a 44.1kHz sampling rate the end of passband frequency is limited +// to slightly below 20kHz. This constraint ensures that the FIR table is +// not overfilled. +// ---------------------------------------------------------------------------- +bool SID::set_sampling_parameters(float clock_freq, sampling_method method, + float sample_freq, float pass_freq, + float filter_scale) +{ + + // The default passband limit is 0.9*sample_freq/2 for sample + // frequencies below ~ 44.1kHz, and 20kHz for higher sample frequencies. + if (pass_freq < 0) { + pass_freq = 20000; + if (2.0*pass_freq/sample_freq >= 0.9) { + pass_freq = 0.9*sample_freq/2.0; + } + } + // Check whether the FIR table would overfill. + else if (pass_freq > 0.9*sample_freq/2.0) { + return false; + } + + // The filter scaling is only included to avoid clipping, so keep + // it sane. + if (filter_scale < 0.9 || filter_scale > 1.0) { + return false; + } + + // Set the external filter to the pass freq + extfilt.set_sampling_parameter (pass_freq); + clock_frequency = clock_freq; + sampling = method; + + cycles_per_sample = + cycle_count(clock_freq/sample_freq*(1 << FIXP_SHIFT) + 0.5); + + sample_offset = 0; + sample_prev = 0; + + return true; +} + + +// ---------------------------------------------------------------------------- +// Adjustment of SID sampling frequency. +// +// In some applications, e.g. a C64 emulator, it can be desirable to +// synchronize sound with a timer source. This is supported by adjustment of +// the SID sampling frequency. +// +// NB! Adjustment of the sampling frequency may lead to noticeable shifts in +// frequency, and should only be used for interactive applications. Note also +// that any adjustment of the sampling frequency will change the +// characteristics of the resampling filter, since the filter is not rebuilt. +// ---------------------------------------------------------------------------- +void SID::adjust_sampling_frequency(float sample_freq) +{ + cycles_per_sample = + cycle_count(clock_frequency/sample_freq*(1 << FIXP_SHIFT) + 0.5); +} + + +// ---------------------------------------------------------------------------- +// Return array of default spline interpolation points to map FC to +// filter cutoff frequency. +// ---------------------------------------------------------------------------- +/* +void SID::fc_default(const fc_point*& points, int& count) +{ + filter.fc_default(points, count); +} +*/ + +// ---------------------------------------------------------------------------- +// Return FC spline plotter object. +// ---------------------------------------------------------------------------- +/* +PointPlotter SID::fc_plotter() +{ + return filter.fc_plotter(); +} +*/ + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +void SID::clock() +{ + + // Age bus value. + if (--bus_value_ttl <= 0) { + bus_value = 0; + bus_value_ttl = 0; + } + + // Clock amplitude modulators. + voice[0].envelope.clock(); + voice[1].envelope.clock(); + voice[2].envelope.clock(); + + // Clock oscillators. + voice[0].wave.clock(); + voice[1].wave.clock(); + voice[2].wave.clock(); + + // Synchronize oscillators. + voice[0].wave.synchronize(); + voice[1].wave.synchronize(); + voice[2].wave.synchronize(); + + // Clock filter. + filter.clock(voice[0].output(), voice[1].output(), voice[2].output(), ext_in); + + // Clock external filter. + extfilt.clock(filter.output()); +} + + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +void SID::clock(cycle_count delta_t) +{ + int i; + + if (delta_t <= 0) { + return; + } + + // Age bus value. + bus_value_ttl -= delta_t; + if (bus_value_ttl <= 0) { + bus_value = 0; + bus_value_ttl = 0; + } + + // Clock amplitude modulators. + + voice[0].envelope.clock(delta_t); + voice[1].envelope.clock(delta_t); + voice[2].envelope.clock(delta_t); + + // Clock and synchronize oscillators. + // Loop until we reach the current cycle. + cycle_count delta_t_osc = delta_t; + while (delta_t_osc) { + cycle_count delta_t_min = delta_t_osc; + + // Find minimum number of cycles to an oscillator accumulator MSB toggle. + // We have to clock on each MSB on / MSB off for hard sync to operate + // correctly. + for (i = 0; i < 3; i++) { + WaveformGenerator& wave = voice[i].wave; + + // It is only necessary to clock on the MSB of an oscillator that is + // a sync source and has freq != 0. + if (!(wave.sync_dest->sync && wave.freq)) { + continue; + } + + reg16 freq = wave.freq; + reg24 accumulator = wave.accumulator; + + // Clock on MSB off if MSB is on, clock on MSB on if MSB is off. + reg24 delta_accumulator = + (accumulator & 0x800000 ? 0x1000000 : 0x800000) - accumulator; + + cycle_count delta_t_next = delta_accumulator/freq; + if (delta_accumulator%freq) { + ++delta_t_next; + } + + if (delta_t_next < delta_t_min) { + delta_t_min = delta_t_next; + } + } + + // Clock oscillators. + voice[0].wave.clock(delta_t_min); + voice[1].wave.clock(delta_t_min); + voice[2].wave.clock(delta_t_min); + + + // Synchronize oscillators. + voice[0].wave.synchronize(); + voice[1].wave.synchronize(); + voice[2].wave.synchronize(); + + delta_t_osc -= delta_t_min; + } + + // Clock filter. + filter.clock(delta_t, + voice[0].output(), voice[1].output(), voice[2].output(), ext_in); + + // Clock external filter. + extfilt.clock(delta_t, filter.output()); +} + + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling. +// Fixpoint arithmetics is used. +// +// The example below shows how to clock the SID a specified amount of cycles +// while producing audio output: +// +// while (delta_t) { +// bufindex += sid.clock(delta_t, buf + bufindex, buflength - bufindex); +// write(dsp, buf, bufindex*2); +// bufindex = 0; +// } +// +// ---------------------------------------------------------------------------- +int SID::clock(cycle_count& delta_t, short* buf, int n) +{ + switch (sampling) { + default: + case SAMPLE_FAST: + return clock_fast(delta_t, buf, n); + case SAMPLE_INTERPOLATE: + return clock_interpolate(delta_t, buf, n); + } +} + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling - delta clocking picking nearest sample. +// ---------------------------------------------------------------------------- +RESID_INLINE +int SID::clock_fast(cycle_count& delta_t, short* buf, int n) +{ + int s = 0; + + for (;;) { + cycle_count next_sample_offset = sample_offset + cycles_per_sample + (1 << (FIXP_SHIFT - 1)); + cycle_count delta_t_sample = next_sample_offset >> FIXP_SHIFT; + if (delta_t_sample > delta_t) { + break; + } + if (s >= n) { + return s; + } + clock(delta_t_sample); + delta_t -= delta_t_sample; + sample_offset = (next_sample_offset & FIXP_MASK) - (1 << (FIXP_SHIFT - 1)); + buf[s++] = output(); + } + + clock(delta_t); + sample_offset -= delta_t << FIXP_SHIFT; + delta_t = 0; + return s; +} + + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling - cycle based with linear sample +// interpolation. +// +// Here the chip is clocked every cycle. This yields higher quality +// sound since the samples are linearly interpolated, and since the +// external filter attenuates frequencies above 16kHz, thus reducing +// sampling noise. +// ---------------------------------------------------------------------------- +RESID_INLINE +int SID::clock_interpolate(cycle_count& delta_t, short* buf, int n) +{ + + int s = 0; + int i; + + for (;;) { + cycle_count next_sample_offset = sample_offset + cycles_per_sample; + cycle_count delta_t_sample = next_sample_offset >> FIXP_SHIFT; + if (delta_t_sample > delta_t) { + break; + } + if (s >= n) { + return s; + } + for (i = 0; i < delta_t_sample - 1; i++) { + clock(); + } + if (i < delta_t_sample) { + sample_prev = output(); + clock(); + } + + delta_t -= delta_t_sample; + sample_offset = next_sample_offset & FIXP_MASK; + + short sample_now = output(); + buf[s++] = + sample_prev + (sample_offset*(sample_now - sample_prev) >> FIXP_SHIFT); + sample_prev = sample_now; + } + + for (i = 0; i < delta_t - 1; i++) { + clock(); + } + if (i < delta_t) { + sample_prev = output(); + clock(); + } + + sample_offset -= delta_t << FIXP_SHIFT; + delta_t = 0; + return s; +} + + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/sid.h b/MCUME_esp32/esp64/main/reSID/reSID/sid.h new file mode 100755 index 0000000..3087e6f --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/sid.h @@ -0,0 +1,133 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free float; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free float Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free float +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SID_H__ +#define __SID_H__ + +#include "siddefs.h" +#include "voice.h" +#include "filter.h" +#include "extfilt.h" +#include "pot.h" + +RESID_NAMESPACE_START + +class SID +{ +public: + SID(); + ~SID(); + //void printFilter(void); + //void set_chip_model(chip_model model); + void enable_filter(bool enable); + void enable_external_filter(bool enable); + bool set_sampling_parameters(float clock_freq, sampling_method method, + float sample_freq, float pass_freq = -1, + float filter_scale = 0.97); + void adjust_sampling_frequency(float sample_freq); + + //void fc_default(const fc_point*& points, int& count); + //PointPlotter fc_plotter(); + + void clock(); + void clock(cycle_count delta_t); + int clock(cycle_count& delta_t, short* buf, int n); + void reset(); + + // Read/write registers. + reg8 read(reg8 offset); + void write(reg8 offset, reg8 value); + void mute(reg8 channel, bool enable); + + // Read/write state. + class State + { + public: + State(); + + char sid_register[0x20]; + + reg8 bus_value; + cycle_count bus_value_ttl; + + reg24 accumulator[3]; + reg24 shift_register[3]; + reg16 rate_counter[3]; + reg16 rate_counter_period[3]; + reg16 exponential_counter[3]; + reg16 exponential_counter_period[3]; + reg8 envelope_counter[3]; + EnvelopeGenerator::State envelope_state[3]; + bool hold_zero[3]; + }; + + State read_state(); + void write_state(const State& state); + + // 16-bit input (EXT IN). + void input(int sample); + + // 16-bit output (AUDIO OUT). + int output(); + + +protected: + + RESID_INLINE int clock_fast(cycle_count& delta_t, short* buf, int n); + RESID_INLINE int clock_interpolate(cycle_count& delta_t, short* buf, int n); + + Voice voice[3]; + Filter filter; + ExternalFilter extfilt; + Potentiometer potx; + Potentiometer poty; + + reg8 bus_value; + cycle_count bus_value_ttl; + + float clock_frequency; + + // External audio input. + int ext_in; + + // Resampling constants. + static const int FIR_N; + static const int FIR_RES_INTERPOLATE; + static const int FIR_RES_FAST; + static const int FIR_SHIFT; + static const int RINGSIZE; + + // Fixpoint constants. + static const int FIXP_SHIFT; + static const int FIXP_MASK; + + // Sampling variables. + sampling_method sampling; + cycle_count cycles_per_sample; + cycle_count sample_offset; + int sample_index; + short sample_prev; + int fir_N; + int fir_RES; + +}; + +RESID_NAMESPACE_STOP + +#endif // not __SID_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/siddefs.h b/MCUME_esp32/esp64/main/reSID/reSID/siddefs.h new file mode 100755 index 0000000..05604ea --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/siddefs.h @@ -0,0 +1,86 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 1999 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SIDDEFS_H__ +#define __SIDDEFS_H__ + +// Define bool, true, and false for C++ compilers that lack these keywords. +#define RESID_HAVE_BOOL 1 + +// Inlining on/off. +#define RESID_INLINING 1 +#define RESID_INLINE inline + +// Support namespace + +#ifdef RESID_NAMESPACE +# define RESID_NAMESPACE_START \ + namespace RESID_NAMESPACE \ + { +# define RESID_NAMESPACE_STOP \ + } +#else +# define RESID_NAMESPACE_START +# define RESID_NAMESPACE_STOP +#endif + + +RESID_NAMESPACE_START + +#if !RESID_HAVE_BOOL +typedef int bool; +const bool true = 1; +const bool false = 0; +#endif + +// We could have used the smallest possible data type for each SID register, +// however this would give a slower engine because of data type conversions. +// An int is assumed to be at least 32 bits (necessary in the types reg24, +// cycle_count, and sound_sample). GNU does not support 16-bit machines +// (GNU Coding Standards: Portability between CPUs), so this should be +// a valid assumption. +#include +#include + +typedef uint16_t reg4; +typedef uint16_t reg8; +typedef uint16_t reg12; +typedef uint16_t reg16; +typedef unsigned int reg24; + +typedef int cycle_count; +typedef int sound_sample; +typedef sound_sample fc_point[2]; + +//enum chip_model { MOS6581, MOS8580 }; + +enum sampling_method { SAMPLE_FAST, SAMPLE_INTERPOLATE}; + +extern "C" +{ +#ifndef __VERSION_CC__ +extern const char* resid_version_string; +#else +const char* resid_version_string = VERSION; +#endif +} + +RESID_NAMESPACE_STOP + +#endif // not __SIDDEFS_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/spline.h b/MCUME_esp32/esp64/main/reSID/reSID/spline.h new file mode 100755 index 0000000..c03260c --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/spline.h @@ -0,0 +1,275 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SPLINE_H__ +#define __SPLINE_H__ + +RESID_NAMESPACE_START + +// Our objective is to construct a smooth interpolating single-valued function +// y = f(x). +// +// Catmull-Rom splines are widely used for interpolation, however these are +// parametric curves [x(t) y(t) ...] and can not be used to directly calculate +// y = f(x). +// For a discussion of Catmull-Rom splines see Catmull, E., and R. Rom, +// "A Class of Local Interpolating Splines", Computer Aided Geometric Design. +// +// Natural cubic splines are single-valued functions, and have been used in +// several applications e.g. to specify gamma curves for image display. +// These splines do not afford local control, and a set of linear equations +// including all interpolation points must be solved before any point on the +// curve can be calculated. The lack of local control makes the splines +// more difficult to handle than e.g. Catmull-Rom splines, and real-time +// interpolation of a stream of data points is not possible. +// For a discussion of natural cubic splines, see e.g. Kreyszig, E., "Advanced +// Engineering Mathematics". +// +// Our approach is to approximate the properties of Catmull-Rom splines for +// piecewice cubic polynomials f(x) = ax^3 + bx^2 + cx + d as follows: +// Each curve segment is specified by four interpolation points, +// p0, p1, p2, p3. +// The curve between p1 and p2 must interpolate both p1 and p2, and in addition +// f'(p1.x) = k1 = (p2.y - p0.y)/(p2.x - p0.x) and +// f'(p2.x) = k2 = (p3.y - p1.y)/(p3.x - p1.x). +// +// The constraints are expressed by the following system of linear equations +// +// [ 1 xi xi^2 xi^3 ] [ d ] [ yi ] +// [ 1 2*xi 3*xi^2 ] * [ c ] = [ ki ] +// [ 1 xj xj^2 xj^3 ] [ b ] [ yj ] +// [ 1 2*xj 3*xj^2 ] [ a ] [ kj ] +// +// Solving using Gaussian elimination and back substitution, setting +// dy = yj - yi, dx = xj - xi, we get +// +// a = ((ki + kj) - 2*dy/dx)/(dx*dx); +// b = ((kj - ki)/dx - 3*(xi + xj)*a)/2; +// c = ki - (3*xi*a + 2*b)*xi; +// d = yi - ((xi*a + b)*xi + c)*xi; +// +// Having calculated the coefficients of the cubic polynomial we have the +// choice of evaluation by brute force +// +// for (x = x1; x <= x2; x += res) { +// y = ((a*x + b)*x + c)*x + d; +// plot(x, y); +// } +// +// or by forward differencing +// +// y = ((a*x1 + b)*x1 + c)*x1 + d; +// dy = (3*a*(x1 + res) + 2*b)*x1*res + ((a*res + b)*res + c)*res; +// d2y = (6*a*(x1 + res) + 2*b)*res*res; +// d3y = 6*a*res*res*res; +// +// for (x = x1; x <= x2; x += res) { +// plot(x, y); +// y += dy; dy += d2y; d2y += d3y; +// } +// +// See Foley, Van Dam, Feiner, Hughes, "Computer Graphics, Principles and +// Practice" for a discussion of forward differencing. +// +// If we have a set of interpolation points p0, ..., pn, we may specify +// curve segments between p0 and p1, and between pn-1 and pn by using the +// following constraints: +// f''(p0.x) = 0 and +// f''(pn.x) = 0. +// +// Substituting the results for a and b in +// +// 2*b + 6*a*xi = 0 +// +// we get +// +// ki = (3*dy/dx - kj)/2; +// +// or by substituting the results for a and b in +// +// 2*b + 6*a*xj = 0 +// +// we get +// +// kj = (3*dy/dx - ki)/2; +// +// Finally, if we have only two interpolation points, the cubic polynomial +// will degenerate to a straight line if we set +// +// ki = kj = dy/dx; +// + + +#if SPLINE_BRUTE_FORCE +#define interpolate_segment interpolate_brute_force +#else +#define interpolate_segment interpolate_forward_difference +#endif + + +// ---------------------------------------------------------------------------- +// Calculation of coefficients. +// ---------------------------------------------------------------------------- +inline +void cubic_coefficients(double x1, double y1, double x2, double y2, + double k1, double k2, + double& a, double& b, double& c, double& d) +{ + double dx = x2 - x1, dy = y2 - y1; + + a = ((k1 + k2) - 2*dy/dx)/(dx*dx); + b = ((k2 - k1)/dx - 3*(x1 + x2)*a)/2; + c = k1 - (3*x1*a + 2*b)*x1; + d = y1 - ((x1*a + b)*x1 + c)*x1; +} + +// ---------------------------------------------------------------------------- +// Evaluation of cubic polynomial by brute force. +// ---------------------------------------------------------------------------- +template +inline +void interpolate_brute_force(double x1, double y1, double x2, double y2, + double k1, double k2, + PointPlotter plot, double res) +{ + double a, b, c, d; + cubic_coefficients(x1, y1, x2, y2, k1, k2, a, b, c, d); + + // Calculate each point. + for (double x = x1; x <= x2; x += res) { + double y = ((a*x + b)*x + c)*x + d; + plot(x, y); + } +} + +// ---------------------------------------------------------------------------- +// Evaluation of cubic polynomial by forward differencing. +// ---------------------------------------------------------------------------- +template +inline +void interpolate_forward_difference(double x1, double y1, double x2, double y2, + double k1, double k2, + PointPlotter plot, double res) +{ + double a, b, c, d; + cubic_coefficients(x1, y1, x2, y2, k1, k2, a, b, c, d); + + double y = ((a*x1 + b)*x1 + c)*x1 + d; + double dy = (3*a*(x1 + res) + 2*b)*x1*res + ((a*res + b)*res + c)*res; + double d2y = (6*a*(x1 + res) + 2*b)*res*res; + double d3y = 6*a*res*res*res; + + // Calculate each point. + for (double x = x1; x <= x2; x += res) { + plot(x, y); + y += dy; dy += d2y; d2y += d3y; + } +} + +template +inline +double x(PointIter p) +{ + return (*p)[0]; +} + +template +inline +double y(PointIter p) +{ + return (*p)[1]; +} + +// ---------------------------------------------------------------------------- +// Evaluation of complete interpolating function. +// Note that since each curve segment is controlled by four points, the +// end points will not be interpolated. If extra control points are not +// desirable, the end points can simply be repeated to ensure interpolation. +// Note also that points of non-differentiability and discontinuity can be +// introduced by repeating points. +// ---------------------------------------------------------------------------- +template +inline +void interpolate(PointIter p0, PointIter pn, PointPlotter plot, double res) +{ + double k1, k2; + + // Set up points for first curve segment. + PointIter p1 = p0; ++p1; + PointIter p2 = p1; ++p2; + PointIter p3 = p2; ++p3; + + // Draw each curve segment. + for (; p2 != pn; ++p0, ++p1, ++p2, ++p3) { + // p1 and p2 equal; single point. + if (x(p1) == x(p2)) { + continue; + } + // Both end points repeated; straight line. + if (x(p0) == x(p1) && x(p2) == x(p3)) { + k1 = k2 = (y(p2) - y(p1))/(x(p2) - x(p1)); + } + // p0 and p1 equal; use f''(x1) = 0. + else if (x(p0) == x(p1)) { + k2 = (y(p3) - y(p1))/(x(p3) - x(p1)); + k1 = (3*(y(p2) - y(p1))/(x(p2) - x(p1)) - k2)/2; + } + // p2 and p3 equal; use f''(x2) = 0. + else if (x(p2) == x(p3)) { + k1 = (y(p2) - y(p0))/(x(p2) - x(p0)); + k2 = (3*(y(p2) - y(p1))/(x(p2) - x(p1)) - k1)/2; + } + // Normal curve. + else { + k1 = (y(p2) - y(p0))/(x(p2) - x(p0)); + k2 = (y(p3) - y(p1))/(x(p3) - x(p1)); + } + + interpolate_segment(x(p1), y(p1), x(p2), y(p2), k1, k2, plot, res); + } +} + +// ---------------------------------------------------------------------------- +// Class for plotting integers into an array. +// ---------------------------------------------------------------------------- +template +class PointPlotter +{ + protected: + FN* f; + + public: + PointPlotter(FN* arr) : f(arr) + { + } + + void operator ()(double x, double y) + { + // Clamp negative values to zero. + if (y < 0) { + y = 0; + } + + f[FN(x)] = FN(y); + } +}; + +RESID_NAMESPACE_STOP + +#endif // not __SPLINE_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/version.cc b/MCUME_esp32/esp64/main/reSID/reSID/version.cc new file mode 100755 index 0000000..3b61afd --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/version.cc @@ -0,0 +1,21 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __VERSION_CC__ +#include "siddefs.h" diff --git a/MCUME_esp32/esp64/main/reSID/reSID/voice.cc b/MCUME_esp32/esp64/main/reSID/reSID/voice.cc new file mode 100755 index 0000000..e24bcdb --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/voice.cc @@ -0,0 +1,152 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __VOICE_CC__ +#include "voice.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +Voice::Voice() + : muted(false) +{ + //set_chip_model(MOS6581); + {//instead: + wave_zero = 0x380; + voice_DC = 0x800*0xff; + } +} + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void Voice::set_chip_model(chip_model model) +{ + wave.set_chip_model(model); + + if (model == MOS6581) { + // The waveform D/A converter introduces a DC offset in the signal + // to the envelope multiplying D/A converter. The "zero" level of + // the waveform D/A converter can be found as follows: + // + // Measure the "zero" voltage of voice 3 on the SID audio output + // pin, routing only voice 3 to the mixer ($d417 = $0b, $d418 = + // $0f, all other registers zeroed). + // + // Then set the sustain level for voice 3 to maximum and search for + // the waveform output value yielding the same voltage as found + // above. This is done by trying out different waveform output + // values until the correct value is found, e.g. with the following + // program: + // + // lda #$08 + // sta $d412 + // lda #$0b + // sta $d417 + // lda #$0f + // sta $d418 + // lda #$f0 + // sta $d414 + // lda #$21 + // sta $d412 + // lda #$01 + // sta $d40e + // + // ldx #$00 + // lda #$38 ; Tweak this to find the "zero" level + //l cmp $d41b + // bne l + // stx $d40e ; Stop frequency counter - freeze waveform output + // brk + // + // The waveform output range is 0x000 to 0xfff, so the "zero" + // level should ideally have been 0x800. In the measured chip, the + // waveform output "zero" level was found to be 0x380 (i.e. $d41b + // = 0x38) at 5.94V. + + wave_zero = 0x380; + + // The envelope multiplying D/A converter introduces another DC + // offset. This is isolated by the following measurements: + // + // * The "zero" output level of the mixer at full volume is 5.44V. + // * Routing one voice to the mixer at full volume yields + // 6.75V at maximum voice output (wave = 0xfff, sustain = 0xf) + // 5.94V at "zero" voice output (wave = any, sustain = 0x0) + // 5.70V at minimum voice output (wave = 0x000, sustain = 0xf) + // * The DC offset of one voice is (5.94V - 5.44V) = 0.50V + // * The dynamic range of one voice is |6.75V - 5.70V| = 1.05V + // * The DC offset is thus 0.50V/1.05V ~ 1/2 of the dynamic range. + // + // Note that by removing the DC offset, we get the following ranges for + // one voice: + // y > 0: (6.75V - 5.44V) - 0.50V = 0.81V + // y < 0: (5.70V - 5.44V) - 0.50V = -0.24V + // The scaling of the voice amplitude is not symmetric about y = 0; + // this follows from the DC level in the waveform output. + + voice_DC = 0x800*0xff; + } + else { + // No DC offsets in the MOS8580. + wave_zero = 0x800; + voice_DC = 0; + } +} +*/ +// ---------------------------------------------------------------------------- +// Set sync source. +// ---------------------------------------------------------------------------- +void Voice::set_sync_source(Voice* source) +{ + wave.set_sync_source(&source->wave); +} + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void Voice::writeCONTROL_REG(reg8 control) +{ + wave.writeCONTROL_REG(control); + envelope.writeCONTROL_REG(control); +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void Voice::reset() +{ + wave.reset(); + envelope.reset(); +} + + +// ---------------------------------------------------------------------------- +// Voice mute. +// ---------------------------------------------------------------------------- +void Voice::mute(bool enable) +{ + // enable = true (means voice is muted) + muted = enable; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/voice.h b/MCUME_esp32/esp64/main/reSID/reSID/voice.h new file mode 100755 index 0000000..119d26d --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/voice.h @@ -0,0 +1,87 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __VOICE_H__ +#define __VOICE_H__ + +#include "siddefs.h" +#include "wave.h" +#include "envelope.h" + +RESID_NAMESPACE_START + +class Voice +{ +public: + Voice(); + +// void set_chip_model(chip_model model); + void set_sync_source(Voice*); + void reset(); + void mute(bool enable); + + void writeCONTROL_REG(reg8); + + // Amplitude modulated waveform output. + // Range [-2048*255, 2047*255]. + RESID_INLINE sound_sample output(); + +protected: + WaveformGenerator wave; + EnvelopeGenerator envelope; + bool muted; + + // Waveform D/A zero level. + sound_sample wave_zero; + + // Multiplying D/A DC offset. + sound_sample voice_DC; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following function is defined inline because it is called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__VOICE_CC__) + +// ---------------------------------------------------------------------------- +// Amplitude modulated waveform output. +// Ideal range [-2048*255, 2047*255]. +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample Voice::output() +{ + if (!muted) + { // Multiply oscillator output with envelope output. + return (wave.output() - wave_zero)*envelope.output() + voice_DC; + } else { + return 0; + } +} + +#endif // RESID_INLINING || defined(__VOICE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __VOICE_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave.cc new file mode 100755 index 0000000..9da1a58 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave.cc @@ -0,0 +1,154 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __WAVE_CC__ +#include "wave.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +WaveformGenerator::WaveformGenerator() +{ + sync_source = this; + + // set_chip_model(MOS6581); + {//instead: + wave__ST = &wave6581__ST[0]; + wave_P_T = &wave6581_P_T[0]; + wave_PS_ = &wave6581_PS_[0]; + wave_PST = &wave6581_PST[0]; + } + reset(); +} + + +// ---------------------------------------------------------------------------- +// Set sync source. +// ---------------------------------------------------------------------------- +void WaveformGenerator::set_sync_source(WaveformGenerator* source) +{ + sync_source = source; + source->sync_dest = this; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void WaveformGenerator::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + wave__ST = &wave6581__ST[0]; + wave_P_T = &wave6581_P_T[0]; + wave_PS_ = &wave6581_PS_[0]; + wave_PST = &wave6581_PST[0]; + } + else { + wave__ST = &wave8580__ST[0]; + wave_P_T = &wave8580_P_T[0]; + wave_PS_ = &wave8580_PS_[0]; + wave_PST = &wave8580_PST[0]; + } +} +*/ + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void WaveformGenerator::writeFREQ_LO(reg8 freq_lo) +{ + freq = (freq & 0xff00) | (freq_lo & 0x00ff); +} + +void WaveformGenerator::writeFREQ_HI(reg8 freq_hi) +{ + freq = (((unsigned int) freq_hi << 8) & 0xff00) | (freq & 0x00ff); +} + +void WaveformGenerator::writePW_LO(reg8 pw_lo) +{ + pw = (pw & 0xf00) | (pw_lo & 0x0ff); +} + +void WaveformGenerator::writePW_HI(reg8 pw_hi) +{ + pw = (((unsigned int)pw_hi << 8) & 0xf00) | (pw & 0x0ff); +} + +void WaveformGenerator::writeCONTROL_REG(reg8 control) +{ + waveform = (control >> 4) & 0x0f; + ring_mod = control & 0x04; + sync = control & 0x02; + + reg8 test_next = control & 0x08; + + // Test bit set. + // The accumulator and the shift register are both cleared. + // NB! The shift register is not really cleared immediately. It seems like + // the individual bits in the shift register start to fade down towards + // zero when test is set. All bits reach zero within approximately + // $2000 - $4000 cycles. + // This is not modeled. There should fortunately be little audible output + // from this peculiar behavior. + if (test_next) { + accumulator = 0; + shift_register = 0; + } + // Test bit cleared. + // The accumulator starts counting, and the shift register is reset to + // the value 0x7ffff8. + // NB! The shift register will not actually be set to this exact value if the + // shift register bits have not had time to fade to zero. + // This is not modeled. + else if (test) { + shift_register = 0x7ffff8; + } + + test = test_next; + + // The gate bit is handled by the EnvelopeGenerator. +} + +reg8 WaveformGenerator::readOSC() +{ + return output() >> 4; +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void WaveformGenerator::reset() +{ + accumulator = 0; + shift_register = 0x7ffff8; + freq = 0; + pw = 0; + + test = 0; + ring_mod = 0; + sync = 0; + + msb_rising = false; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave.h b/MCUME_esp32/esp64/main/reSID/reSID/wave.h new file mode 100755 index 0000000..376960d --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave.h @@ -0,0 +1,514 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __WAVE_H__ +#define __WAVE_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// A 24 bit accumulator is the basis for waveform generation. FREQ is added to +// the lower 16 bits of the accumulator each cycle. +// The accumulator is set to zero when TEST is set, and starts counting +// when TEST is cleared. +// The noise waveform is taken from intermediate bits of a 23 bit shift +// register. This register is clocked by bit 19 of the accumulator. +// ---------------------------------------------------------------------------- +class WaveformGenerator +{ +public: + WaveformGenerator(); + + void set_sync_source(WaveformGenerator*); + //void set_chip_model(chip_model model); + + RESID_INLINE void clock(); + RESID_INLINE void clock(cycle_count delta_t); + RESID_INLINE void synchronize(); + void reset(); + + void writeFREQ_LO(reg8); + void writeFREQ_HI(reg8); + void writePW_LO(reg8); + void writePW_HI(reg8); + void writeCONTROL_REG(reg8); + reg8 readOSC(); + + // 12-bit waveform output. + RESID_INLINE reg12 output(); + +protected: + const WaveformGenerator* sync_source; + WaveformGenerator* sync_dest; + + // Tell whether the accumulator MSB was set high on this cycle. + bool msb_rising; + + reg24 accumulator; + reg24 shift_register; + + // Fout = (Fn*Fclk/16777216)Hz + reg16 freq; + // PWout = (PWn/40.95)% + reg12 pw; + + // The control register right-shifted 4 bits; used for output function + // table lookup. + reg8 waveform; + + // The remaining control register bits. + reg8 test; + reg8 ring_mod; + reg8 sync; + // The gate bit is handled by the EnvelopeGenerator. + + // 16 possible combinations of waveforms. + RESID_INLINE reg12 output____(); + RESID_INLINE reg12 output___T(); + RESID_INLINE reg12 output__S_(); + RESID_INLINE reg12 output__ST(); + RESID_INLINE reg12 output_P__(); + RESID_INLINE reg12 output_P_T(); + RESID_INLINE reg12 output_PS_(); + RESID_INLINE reg12 output_PST(); + RESID_INLINE reg12 outputN___(); + RESID_INLINE reg12 outputN__T(); + RESID_INLINE reg12 outputN_S_(); + RESID_INLINE reg12 outputN_ST(); + RESID_INLINE reg12 outputNP__(); + RESID_INLINE reg12 outputNP_T(); + RESID_INLINE reg12 outputNPS_(); + RESID_INLINE reg12 outputNPST(); + + // Sample data for combinations of waveforms. + /* + static reg8 wave6581__ST[]; + static reg8 wave6581_P_T[]; + static reg8 wave6581_PS_[]; + static reg8 wave6581_PST[]; + + static reg8 wave8580__ST[]; + static reg8 wave8580_P_T[]; + static reg8 wave8580_PS_[]; + static reg8 wave8580_PST[]; + + reg8* wave__ST; + reg8* wave_P_T; + reg8* wave_PS_; + reg8* wave_PST; +*/ + + const reg8* wave__ST; + const reg8* wave_P_T; + const reg8* wave_PS_; + const reg8* wave_PST; + +friend class Voice; +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__WAVE_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::clock() +{ + // No operation if test bit is set. + if (test) { + return; + } + + reg24 accumulator_prev = accumulator; + + // Calculate new accumulator value; + accumulator += freq; + accumulator &= 0xffffff; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = !(accumulator_prev & 0x800000) && (accumulator & 0x800000); + + // Shift noise register once for each time accumulator bit 19 is set high. + if (!(accumulator_prev & 0x080000) && (accumulator & 0x080000)) { + reg24 bit0 = ((shift_register >> 22) ^ (shift_register >> 17)) & 0x1; + shift_register <<= 1; + shift_register &= 0x7fffff; + shift_register |= bit0; + } +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::clock(cycle_count delta_t) +{ + // No operation if test bit is set. + if (test) { + return; + } + + reg24 accumulator_prev = accumulator; + + // Calculate new accumulator value; + reg24 delta_accumulator = delta_t*freq; + accumulator += delta_accumulator; + accumulator &= 0xffffff; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = !(accumulator_prev & 0x800000) && (accumulator & 0x800000); + + // Shift noise register once for each time accumulator bit 19 is set high. + // Bit 19 is set high each time 2^20 (0x100000) is added to the accumulator. + reg24 shift_period = 0x100000; + + while (delta_accumulator) { + if (delta_accumulator < shift_period) { + shift_period = delta_accumulator; + // Determine whether bit 19 is set on the last period. + // NB! Requires two's complement integer. + if (shift_period <= 0x080000) { + // Check for flip from 0 to 1. + if (((accumulator - shift_period) & 0x080000) || !(accumulator & 0x080000)) + { + break; + } + } + else { + // Check for flip from 0 (to 1 or via 1 to 0) or from 1 via 0 to 1. + if (((accumulator - shift_period) & 0x080000) && !(accumulator & 0x080000)) + { + break; + } + } + } + + // Shift the noise/random register. + // NB! The shift is actually delayed 2 cycles, this is not modeled. + reg24 bit0 = ((shift_register >> 22) ^ (shift_register >> 17)) & 0x1; + shift_register <<= 1; + shift_register &= 0x7fffff; + shift_register |= bit0; + + delta_accumulator -= shift_period; + } +} + + +// ---------------------------------------------------------------------------- +// Synchronize oscillators. +// This must be done after all the oscillators have been clock()'ed since the +// oscillators operate in parallel. +// Note that the oscillators must be clocked exactly on the cycle when the +// MSB is set high for hard sync to operate correctly. See SID::clock(). +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::synchronize() +{ + // A special case occurs when a sync source is synced itself on the same + // cycle as when its MSB is set high. In this case the destination will + // not be synced. This has been verified by sampling OSC3. + if (msb_rising && sync_dest->sync && !(sync && sync_source->msb_rising)) { + sync_dest->accumulator = 0; + } +} + + +// ---------------------------------------------------------------------------- +// Output functions. +// NB! The output from SID 8580 is delayed one cycle compared to SID 6581, +// this is not modeled. +// ---------------------------------------------------------------------------- + +// No waveform: +// Zero output. +// +RESID_INLINE +reg12 WaveformGenerator::output____() +{ + return 0x000; +} + +// Triangle: +// The upper 12 bits of the accumulator are used. +// The MSB is used to create the falling edge of the triangle by inverting +// the lower 11 bits. The MSB is thrown away and the lower 11 bits are +// left-shifted (half the resolution, full amplitude). +// Ring modulation substitutes the MSB with MSB EOR sync_source MSB. +// +RESID_INLINE +reg12 WaveformGenerator::output___T() +{ + reg24 msb = (ring_mod ? accumulator ^ sync_source->accumulator : accumulator) + & 0x800000; + return ((msb ? ~accumulator : accumulator) >> 11) & 0xffe; +} + +// Sawtooth: +// The output is identical to the upper 12 bits of the accumulator. +// +RESID_INLINE +reg12 WaveformGenerator::output__S_() +{ + return accumulator >> 12; +} + +// Pulse: +// The upper 12 bits of the accumulator are used. +// These bits are compared to the pulse width register by a 12 bit digital +// comparator; output is either all one or all zero bits. +// NB! The output is actually delayed one cycle after the compare. +// This is not modeled. +// +// The test bit, when set to one, holds the pulse waveform output at 0xfff +// regardless of the pulse width setting. +// +RESID_INLINE +reg12 WaveformGenerator::output_P__() +{ + return (test || (accumulator >> 12) >= pw) ? 0xfff : 0x000; +} + +// Noise: +// The noise output is taken from intermediate bits of a 23-bit shift register +// which is clocked by bit 19 of the accumulator. +// NB! The output is actually delayed 2 cycles after bit 19 is set high. +// This is not modeled. +// +// Operation: Calculate EOR result, shift register, set bit 0 = result. +// +// ----------------------->--------------------- +// | | +// ----EOR---- | +// | | | +// 2 2 2 1 1 1 1 1 1 1 1 1 1 | +// Register bits: 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <--- +// | | | | | | | | +// OSC3 bits : 7 6 5 4 3 2 1 0 +// +// Since waveform output is 12 bits the output is left-shifted 4 times. +// +RESID_INLINE +reg12 WaveformGenerator::outputN___() +{ + return + ((shift_register & 0x400000) >> 11) | + ((shift_register & 0x100000) >> 10) | + ((shift_register & 0x010000) >> 7) | + ((shift_register & 0x002000) >> 5) | + ((shift_register & 0x000800) >> 4) | + ((shift_register & 0x000080) >> 1) | + ((shift_register & 0x000010) << 1) | + ((shift_register & 0x000004) << 2); +} + +// Combined waveforms: +// By combining waveforms, the bits of each waveform are effectively short +// circuited. A zero bit in one waveform will result in a zero output bit +// (thus the infamous claim that the waveforms are AND'ed). +// However, a zero bit in one waveform will also affect the neighboring bits +// in the output. The reason for this has not been determined. +// +// Example: +// +// 1 1 +// Bit # 1 0 9 8 7 6 5 4 3 2 1 0 +// ----------------------- +// Sawtooth 0 0 0 1 1 1 1 1 1 0 0 0 +// +// Triangle 0 0 1 1 1 1 1 1 0 0 0 0 +// +// AND 0 0 0 1 1 1 1 1 0 0 0 0 +// +// Output 0 0 0 0 1 1 1 0 0 0 0 0 +// +// +// This behavior would be quite difficult to model exactly, since the SID +// in this case does not act as a digital state machine. Tests show that minor +// (1 bit) differences can actually occur in the output from otherwise +// identical samples from OSC3 when waveforms are combined. To further +// complicate the situation the output changes slightly with time (more +// neighboring bits are successively set) when the 12-bit waveform +// registers are kept unchanged. +// +// It is probably possible to come up with a valid model for the +// behavior, however this would be far too slow for practical use since it +// would have to be based on the mutual influence of individual bits. +// +// The output is instead approximated by using the upper bits of the +// accumulator as an index to look up the combined output in a table +// containing actual combined waveform samples from OSC3. +// These samples are 8 bit, so 4 bits of waveform resolution is lost. +// All OSC3 samples are taken with FREQ=0x1000, adding a 1 to the upper 12 +// bits of the accumulator each cycle for a sample period of 4096 cycles. +// +// Sawtooth+Triangle: +// The sawtooth output is used to look up an OSC3 sample. +// +// Pulse+Triangle: +// The triangle output is right-shifted and used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// The reason for using the triangle output as the index is to handle ring +// modulation. Only the first half of the sample is used, which should be OK +// since the triangle waveform has half the resolution of the accumulator. +// +// Pulse+Sawtooth: +// The sawtooth output is used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// +// Pulse+Sawtooth+Triangle: +// The sawtooth output is used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// +RESID_INLINE +reg12 WaveformGenerator::output__ST() +{ + return wave__ST[output__S_()] << 4; +} + +RESID_INLINE +reg12 WaveformGenerator::output_P_T() +{ + return (wave_P_T[output___T() >> 1] << 4) & output_P__(); +} + +RESID_INLINE +reg12 WaveformGenerator::output_PS_() +{ + return (wave_PS_[output__S_()] << 4) & output_P__(); +} + +RESID_INLINE +reg12 WaveformGenerator::output_PST() +{ + return (wave_PST[output__S_()] << 4) & output_P__(); +} + +// Combined waveforms including noise: +// All waveform combinations including noise output zero after a few cycles. +// NB! The effects of such combinations are not fully explored. It is claimed +// that the shift register may be filled with zeroes and locked up, which +// seems to be true. +// We have not attempted to model this behavior, suffice to say that +// there is very little audible output from waveform combinations including +// noise. We hope that nobody is actually using it. +// +RESID_INLINE +reg12 WaveformGenerator::outputN__T() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputN_S_() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputN_ST() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNP__() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNP_T() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNPS_() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNPST() +{ + return 0; +} + +// ---------------------------------------------------------------------------- +// Select one of 16 possible combinations of waveforms. +// ---------------------------------------------------------------------------- +RESID_INLINE +reg12 WaveformGenerator::output() +{ + // It may seem cleaner to use an array of member functions to return + // waveform output; however a switch with inline functions is faster. + + switch (waveform) { + default: + case 0x0: + return output____(); + case 0x1: + return output___T(); + case 0x2: + return output__S_(); + case 0x3: + return output__ST(); + case 0x4: + return output_P__(); + case 0x5: + return output_P_T(); + case 0x6: + return output_PS_(); + case 0x7: + return output_PST(); + case 0x8: + return outputN___(); + case 0x9: + return outputN__T(); + case 0xa: + return outputN_S_(); + case 0xb: + return outputN_ST(); + case 0xc: + return outputNP__(); + case 0xd: + return outputNP_T(); + case 0xe: + return outputNPS_(); + case 0xf: + return outputNPST(); + } +} + +#endif // RESID_INLINING || defined(__WAVE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __WAVE_H__ diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave6581_PST.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave6581_PST.cc new file mode 100755 index 0000000..2198373 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave6581_PST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_PST[] = +const reg8 wave6581_PST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +/* 0x7f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +/* 0x7f8: */ 0x00, 0x00, 0x00, 0x78, 0x78, 0x7e, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x78, 0x78, 0x7e, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave6581_PS_.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave6581_PS_.cc new file mode 100755 index 0000000..08febfe --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave6581_PS_.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_PS_[] = +const reg8 wave6581_PS_[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, +/* 0x3f8: */ 0x00, 0x30, 0x38, 0x3f, 0x3e, 0x3f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5f, +/* 0x5f8: */ 0x00, 0x40, 0x40, 0x5f, 0x5c, 0x5f, 0x5f, 0x5f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6b, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x6d, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x6e, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x6f, +/* 0x6f8: */ 0x00, 0x60, 0x60, 0x6f, 0x60, 0x6f, 0x6f, 0x6f, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x738: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x60, 0x73, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x758: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x75, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x768: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x76, +/* 0x770: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x77, +/* 0x778: */ 0x00, 0x70, 0x70, 0x77, 0x70, 0x77, 0x77, 0x77, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x798: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x79, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x70, 0x7a, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7b, +/* 0x7b8: */ 0x40, 0x70, 0x70, 0x7b, 0x78, 0x7b, 0x7b, 0x7b, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7c, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7d, +/* 0x7d8: */ 0x40, 0x70, 0x78, 0x7d, 0x78, 0x7d, 0x7d, 0x7d, +/* 0x7e0: */ 0x00, 0x40, 0x40, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0x7e8: */ 0x60, 0x78, 0x78, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0x7f0: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x7f8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, +/* 0xbf8: */ 0x00, 0x30, 0x38, 0x3f, 0x3e, 0x3f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5f, +/* 0xdf8: */ 0x00, 0x40, 0x40, 0x5f, 0x5c, 0x5f, 0x5f, 0x5f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6b, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6d, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x6e, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x6f, +/* 0xef8: */ 0x00, 0x60, 0x60, 0x6f, 0x60, 0x6f, 0x6f, 0x6f, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x60, 0x73, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x75, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x76, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x77, +/* 0xf78: */ 0x00, 0x70, 0x70, 0x77, 0x70, 0x77, 0x77, 0x77, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x79, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x70, 0x7a, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7b, +/* 0xfb8: */ 0x40, 0x70, 0x70, 0x7b, 0x78, 0x7b, 0x7b, 0x7b, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7c, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7d, +/* 0xfd8: */ 0x40, 0x70, 0x78, 0x7d, 0x78, 0x7d, 0x7d, 0x7d, +/* 0xfe0: */ 0x00, 0x40, 0x40, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0xfe8: */ 0x60, 0x78, 0x78, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0xff0: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7c, 0x7f, 0x7f, 0x7f, +/* 0xff8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave6581_P_T.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave6581_P_T.cc new file mode 100755 index 0000000..03c770f --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave6581_P_T.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_P_T[] = +const reg8 wave6581_P_T[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x3f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x5f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x378: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x6f, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x70, 0x77, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7b, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, +/* 0x3e8: */ 0x00, 0x40, 0x40, 0x70, 0x60, 0x70, 0x78, 0x7d, +/* 0x3f0: */ 0x00, 0x40, 0x60, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0x3f8: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x578: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0xa0, 0xa0, 0xaf, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5b8: */ 0x00, 0x80, 0x80, 0xa0, 0x80, 0xa0, 0xb0, 0xb7, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5d8: */ 0x00, 0x80, 0x80, 0xa0, 0x80, 0xb0, 0xb0, 0xbb, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0x5e8: */ 0x80, 0x80, 0x80, 0xb0, 0x80, 0xb0, 0xb8, 0xbd, +/* 0x5f0: */ 0x80, 0x80, 0x80, 0xb8, 0xa0, 0xb8, 0xb8, 0xbe, +/* 0x5f8: */ 0xa0, 0xb8, 0xbc, 0xbf, 0xbe, 0xbf, 0xbf, 0xbf, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x670: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x678: */ 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x698: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0xc0, 0xc0, +/* 0x6b8: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd7, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x6d0: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0x6d8: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xdb, +/* 0x6e0: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xd0, +/* 0x6e8: */ 0x80, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd8, 0xdd, +/* 0x6f0: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd8, 0xd8, 0xde, +/* 0x6f8: */ 0xc0, 0xd8, 0xdc, 0xdf, 0xdc, 0xdf, 0xdf, 0xdf, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x718: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x728: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x730: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x738: */ 0x80, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe7, +/* 0x740: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x748: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x750: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x758: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xeb, +/* 0x760: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0x768: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xed, +/* 0x770: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, 0xe8, 0xee, +/* 0x778: */ 0xe0, 0xe8, 0xec, 0xef, 0xec, 0xef, 0xef, 0xef, +/* 0x780: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0x788: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, +/* 0x790: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, +/* 0x798: */ 0xc0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf3, +/* 0x7a0: */ 0x80, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xf0, +/* 0x7a8: */ 0xc0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf5, +/* 0x7b0: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf6, +/* 0x7b8: */ 0xf0, 0xf0, 0xf4, 0xf7, 0xf4, 0xf7, 0xf7, 0xf7, +/* 0x7c0: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0x7c8: */ 0xe0, 0xe0, 0xe0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf9, +/* 0x7d0: */ 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xfa, +/* 0x7d8: */ 0xf0, 0xf8, 0xf8, 0xfb, 0xf8, 0xfb, 0xfb, 0xfb, +/* 0x7e0: */ 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xfc, 0xfc, +/* 0x7e8: */ 0xf8, 0xfc, 0xfc, 0xfd, 0xfc, 0xfd, 0xfd, 0xfd, +/* 0x7f0: */ 0xf8, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0x7f8: */ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x800: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, +/* 0x808: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0xf8, +/* 0x810: */ 0xfd, 0xfd, 0xfd, 0xfc, 0xfd, 0xfc, 0xfc, 0xf8, +/* 0x818: */ 0xfc, 0xfc, 0xfc, 0xf0, 0xf8, 0xf0, 0xf0, 0xe0, +/* 0x820: */ 0xfb, 0xfb, 0xfb, 0xf8, 0xfb, 0xf8, 0xf8, 0xf0, +/* 0x828: */ 0xfa, 0xf8, 0xf8, 0xf0, 0xf8, 0xf0, 0xf0, 0xe0, +/* 0x830: */ 0xf9, 0xf8, 0xf8, 0xf0, 0xf8, 0xf0, 0xe0, 0xe0, +/* 0x838: */ 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, +/* 0x840: */ 0xf7, 0xf7, 0xf7, 0xf4, 0xf7, 0xf4, 0xf0, 0xf0, +/* 0x848: */ 0xf6, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, +/* 0x850: */ 0xf5, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, +/* 0x858: */ 0xf0, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xc0, 0x80, +/* 0x860: */ 0xf3, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, +/* 0x868: */ 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x870: */ 0xf0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x878: */ 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x880: */ 0xef, 0xef, 0xef, 0xec, 0xef, 0xec, 0xe8, 0xe0, +/* 0x888: */ 0xee, 0xe8, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, +/* 0x890: */ 0xed, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, +/* 0x898: */ 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x8a0: */ 0xeb, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, +/* 0x8a8: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8b0: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8b8: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0xe7, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xc0, 0x80, +/* 0x8c8: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8d0: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8d8: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0xdf, 0xdf, 0xdf, 0xdc, 0xdf, 0xdc, 0xd8, 0xc0, +/* 0x908: */ 0xde, 0xd8, 0xd8, 0xc0, 0xd8, 0xc0, 0xc0, 0xc0, +/* 0x910: */ 0xdd, 0xd8, 0xd0, 0xc0, 0xd0, 0xc0, 0xc0, 0x80, +/* 0x918: */ 0xd0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x920: */ 0xdb, 0xd0, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x928: */ 0xc0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x930: */ 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x938: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0xd7, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x948: */ 0xc0, 0xc0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x950: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x958: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x968: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, +/* 0x988: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x990: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0xbf, 0xbf, 0xbf, 0xbe, 0xbf, 0xbc, 0xbc, 0xa0, +/* 0xa08: */ 0xbe, 0xbc, 0xb8, 0xa0, 0xb8, 0xa0, 0x80, 0x80, +/* 0xa10: */ 0xbd, 0xb8, 0xb0, 0x80, 0xb0, 0x80, 0x80, 0x80, +/* 0xa18: */ 0xb0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xa20: */ 0xbb, 0xb0, 0xb0, 0x80, 0xa0, 0x80, 0x80, 0x00, +/* 0xa28: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa30: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0xb7, 0xb0, 0xa0, 0x80, 0xa0, 0x80, 0x80, 0x00, +/* 0xa48: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0xaf, 0xa0, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x00, +/* 0xa88: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x9f, 0x90, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc00: */ 0x7f, 0x7f, 0x7f, 0x7e, 0x7f, 0x7c, 0x7c, 0x70, +/* 0xc08: */ 0x7e, 0x7c, 0x78, 0x60, 0x78, 0x60, 0x60, 0x00, +/* 0xc10: */ 0x7d, 0x78, 0x78, 0x60, 0x70, 0x40, 0x40, 0x00, +/* 0xc18: */ 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x7b, 0x78, 0x70, 0x40, 0x70, 0x40, 0x00, 0x00, +/* 0xc28: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x77, 0x70, 0x70, 0x00, 0x60, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x6f, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x5f, 0x58, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x3f, 0x3c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave6581__ST.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave6581__ST.cc new file mode 100755 index 0000000..ac5f52d --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave6581__ST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581__ST[] = +const reg8 wave6581__ST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0x3f8: */ 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7e8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7f0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, +/* 0x7f8: */ 0x3e, 0x3e, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0xbf8: */ 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0xfe8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0xff0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, +/* 0xff8: */ 0x3e, 0x3e, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave8580_PST.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave8580_PST.cc new file mode 100755 index 0000000..f43f34d --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave8580_PST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_PST[] = +const reg8 wave8580_PST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, +/* 0x7f0: */ 0x60, 0x20, 0x70, 0x70, 0x70, 0x70, 0x70, 0x78, +/* 0x7f8: */ 0x78, 0x78, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xdf8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8c, 0x9f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe80: */ 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0xe88: */ 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0xef0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xef8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0xf00: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf08: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf10: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf18: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf20: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf28: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf30: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf38: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf40: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf48: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf50: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf58: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf68: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xf70: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, +/* 0xf80: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf88: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf90: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf98: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfa0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfa8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfb0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, +/* 0xfb8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfc0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfc8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfd0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfd8: */ 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe8: */ 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xff0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, +/* 0xff8: */ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave8580_PS_.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave8580_PS_.cc new file mode 100755 index 0000000..4b66a4b --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave8580_PS_.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_PS_[] = +const reg8 wave8580_PS_[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x1f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0x3f8: */ 0x00, 0x0c, 0x1c, 0x3f, 0x1e, 0x3f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x5f, 0x0c, 0x5f, 0x5f, 0x5f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, +/* 0x6f8: */ 0x00, 0x40, 0x40, 0x6f, 0x40, 0x6f, 0x6f, 0x6f, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x61, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x768: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x70, +/* 0x770: */ 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x70, +/* 0x778: */ 0x40, 0x60, 0x60, 0x77, 0x60, 0x77, 0x77, 0x77, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, +/* 0x798: */ 0x00, 0x40, 0x40, 0x60, 0x40, 0x60, 0x60, 0x79, +/* 0x7a0: */ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, +/* 0x7a8: */ 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x78, +/* 0x7b0: */ 0x40, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, +/* 0x7b8: */ 0x60, 0x70, 0x70, 0x78, 0x70, 0x79, 0x7b, 0x7b, +/* 0x7c0: */ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, +/* 0x7c8: */ 0x60, 0x60, 0x60, 0x70, 0x60, 0x70, 0x70, 0x7c, +/* 0x7d0: */ 0x60, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7c, +/* 0x7d8: */ 0x70, 0x78, 0x78, 0x7c, 0x78, 0x7c, 0x7c, 0x7d, +/* 0x7e0: */ 0x70, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7c, +/* 0x7e8: */ 0x78, 0x7c, 0x7c, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0x7f0: */ 0x7c, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x7f8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8d, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x8e, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x8f, +/* 0x9f8: */ 0x80, 0x80, 0x80, 0x9f, 0x80, 0x9f, 0x9f, 0x9f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x87, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x83, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0xad8: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xae0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xae8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, +/* 0xaf0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x87, +/* 0xaf8: */ 0x80, 0x80, 0x80, 0x87, 0x80, 0x8f, 0xaf, 0xaf, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, +/* 0xb28: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, +/* 0xb40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xb60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xb70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xb78: */ 0x80, 0x80, 0x80, 0xa0, 0x80, 0xa3, 0xb7, 0xb7, +/* 0xb80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb1, +/* 0xba0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xba8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0xbb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0xbb8: */ 0x80, 0xa0, 0xa0, 0xb0, 0xa0, 0xb8, 0xb9, 0xbb, +/* 0xbc0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xbc8: */ 0x80, 0x80, 0x80, 0xa0, 0x80, 0xa0, 0xa0, 0xb8, +/* 0xbd0: */ 0x80, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb8, +/* 0xbd8: */ 0xa0, 0xb0, 0xb0, 0xb8, 0xb0, 0xbc, 0xbc, 0xbd, +/* 0xbe0: */ 0xa0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb8, 0xb8, 0xbc, +/* 0xbe8: */ 0xb0, 0xb8, 0xb8, 0xbc, 0xb8, 0xbc, 0xbe, 0xbe, +/* 0xbf0: */ 0xb8, 0xbc, 0xbc, 0xbe, 0xbc, 0xbe, 0xbe, 0xbf, +/* 0xbf8: */ 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +/* 0xc10: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc18: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc28: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xc40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc7, +/* 0xc80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xca0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xca8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc3, +/* 0xcc0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcc8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xcd0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xcd8: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc1, +/* 0xce0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xce8: */ 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xcf0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc7, +/* 0xcf8: */ 0xc0, 0xc0, 0xc0, 0xc7, 0xc0, 0xcf, 0xcf, 0xcf, +/* 0xd00: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd08: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd10: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd18: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd28: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0xd38: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc3, +/* 0xd40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd48: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0xd50: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd58: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, +/* 0xd60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd68: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd70: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd78: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc7, 0xd7, +/* 0xd80: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd88: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd90: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd98: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xda0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xda8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0xdb0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0xdb8: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd8, 0xdb, +/* 0xdc0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xdc8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, +/* 0xdd0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, +/* 0xdd8: */ 0xc0, 0xc0, 0xc0, 0xd8, 0xd0, 0xd8, 0xd8, 0xdd, +/* 0xde0: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd0, 0xdc, +/* 0xde8: */ 0xd0, 0xd8, 0xd8, 0xdc, 0xd8, 0xdc, 0xdc, 0xde, +/* 0xdf0: */ 0xd8, 0xdc, 0xdc, 0xde, 0xdc, 0xde, 0xde, 0xdf, +/* 0xdf8: */ 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, +/* 0xe00: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe08: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe10: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe18: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe20: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe28: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe30: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe38: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe3, +/* 0xe40: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe48: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe50: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe58: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe1, +/* 0xe60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe68: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xe70: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xe78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe3, 0xe7, +/* 0xe80: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe88: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xe90: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xe98: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xea0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xea8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xeb0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xeb8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xeb, +/* 0xec0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xec8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xed0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xed8: */ 0xe0, 0xe0, 0xe0, 0xe8, 0xe0, 0xe8, 0xe8, 0xed, +/* 0xee0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xec, +/* 0xee8: */ 0xe0, 0xe0, 0xe0, 0xec, 0xe8, 0xec, 0xec, 0xee, +/* 0xef0: */ 0xe8, 0xe8, 0xe8, 0xec, 0xec, 0xee, 0xee, 0xef, +/* 0xef8: */ 0xec, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, +/* 0xf00: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf08: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf10: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf18: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0xf20: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0xf28: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf0, +/* 0xf30: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf38: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf3, +/* 0xf40: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf48: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf50: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf58: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf5, +/* 0xf60: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf68: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, 0xf4, 0xf6, +/* 0xf70: */ 0xf0, 0xf0, 0xf0, 0xf4, 0xf0, 0xf4, 0xf6, 0xf7, +/* 0xf78: */ 0xf4, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, +/* 0xf80: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, +/* 0xf88: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0xf90: */ 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0xf98: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, +/* 0xfa0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfa8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfa, +/* 0xfb0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfb, +/* 0xfb8: */ 0xf8, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, +/* 0xfc0: */ 0xf8, 0xf8, 0xf8, 0xfc, 0xf8, 0xfc, 0xfc, 0xfc, +/* 0xfc8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xfd0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, +/* 0xfd8: */ 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, +/* 0xfe0: */ 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xfe8: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xff0: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0xff8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave8580_P_T.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave8580_P_T.cc new file mode 100755 index 0000000..344e539 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave8580_P_T.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_P_T[] = +const reg8 wave8580_P_T[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x3f, 0x3f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x5e, 0x5f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x378: */ 0x00, 0x00, 0x00, 0x40, 0x40, 0x60, 0x60, 0x6f, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x60, +/* 0x3b8: */ 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x70, 0x77, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, +/* 0x3c8: */ 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, +/* 0x3d0: */ 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x70, +/* 0x3d8: */ 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x78, 0x7b, +/* 0x3e0: */ 0x60, 0x60, 0x60, 0x70, 0x60, 0x70, 0x70, 0x70, +/* 0x3e8: */ 0x70, 0x70, 0x70, 0x78, 0x78, 0x78, 0x78, 0x7c, +/* 0x3f0: */ 0x78, 0x78, 0x78, 0x7c, 0x78, 0x7c, 0x7c, 0x7e, +/* 0x3f8: */ 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4d8: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4e8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4f0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4f8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8e, 0x9f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, +/* 0x530: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x538: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x540: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, +/* 0x548: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x550: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x558: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x560: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x568: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x570: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x578: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xaf, +/* 0x580: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x588: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x590: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x598: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5a0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5a8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5b0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5b8: */ 0x80, 0x80, 0x80, 0xa0, 0xa0, 0xa0, 0xa0, 0xb7, +/* 0x5c0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5c8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0x5d0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, 0xa0, +/* 0x5d8: */ 0xa0, 0xa0, 0xa0, 0xb0, 0xa0, 0xb0, 0xb0, 0xbb, +/* 0x5e0: */ 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb0, 0xb0, +/* 0x5e8: */ 0xa0, 0xb0, 0xb0, 0xb8, 0xb0, 0xb8, 0xb8, 0xbc, +/* 0x5f0: */ 0xb0, 0xb8, 0xb8, 0xb8, 0xb8, 0xbc, 0xbc, 0xbe, +/* 0x5f8: */ 0xbc, 0xbc, 0xbe, 0xbf, 0xbe, 0xbf, 0xbf, 0xbf, +/* 0x600: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x608: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x610: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x618: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x620: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x628: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x630: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x638: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x640: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x648: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x650: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0x658: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x660: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0x668: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x670: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x678: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0x680: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x688: */ 0xc0, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x690: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x698: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6a0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6a8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6b0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6b8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd7, +/* 0x6c0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6c8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6d0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6d8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xd9, +/* 0x6e0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0x6e8: */ 0xc0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd8, 0xd8, 0xdc, +/* 0x6f0: */ 0xd0, 0xd0, 0xd8, 0xd8, 0xd8, 0xdc, 0xdc, 0xde, +/* 0x6f8: */ 0xdc, 0xdc, 0xde, 0xdf, 0xde, 0xdf, 0xdf, 0xdf, +/* 0x700: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x708: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x710: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x718: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0x720: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0x728: */ 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x730: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x738: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe7, +/* 0x740: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x748: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x750: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x758: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, +/* 0x760: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x768: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, 0xec, +/* 0x770: */ 0xe0, 0xe0, 0xe0, 0xe8, 0xe8, 0xe8, 0xec, 0xee, +/* 0x778: */ 0xec, 0xec, 0xec, 0xee, 0xee, 0xef, 0xef, 0xef, +/* 0x780: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x788: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, +/* 0x790: */ 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x798: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x7a0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x7a8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, +/* 0x7b0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, +/* 0x7b8: */ 0xf0, 0xf4, 0xf4, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, +/* 0x7c0: */ 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0x7c8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x7d0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x7d8: */ 0xf8, 0xf8, 0xf8, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, +/* 0x7e0: */ 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0x7e8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, +/* 0x7f0: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0x7f8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x800: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x808: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, +/* 0x810: */ 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0x818: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, +/* 0x820: */ 0xfb, 0xfb, 0xfb, 0xfa, 0xfa, 0xf8, 0xf8, 0xf8, +/* 0x828: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x830: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x838: */ 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x840: */ 0xf7, 0xf7, 0xf7, 0xf6, 0xf6, 0xf4, 0xf4, 0xf0, +/* 0x848: */ 0xf4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x850: */ 0xf4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x858: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x860: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x868: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, +/* 0x870: */ 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x878: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x880: */ 0xef, 0xef, 0xef, 0xee, 0xee, 0xec, 0xec, 0xe8, +/* 0x888: */ 0xee, 0xec, 0xe8, 0xe8, 0xe8, 0xe0, 0xe0, 0xe0, +/* 0x890: */ 0xec, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x898: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8a0: */ 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8a8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8b0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8b8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8c0: */ 0xe7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8c8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8d0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, +/* 0x8d8: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8e0: */ 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8e8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8f0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8f8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x900: */ 0xdf, 0xdf, 0xdf, 0xde, 0xdf, 0xde, 0xdc, 0xdc, +/* 0x908: */ 0xde, 0xdc, 0xdc, 0xd8, 0xd8, 0xd8, 0xd0, 0xd0, +/* 0x910: */ 0xdc, 0xd8, 0xd8, 0xd0, 0xd0, 0xd0, 0xd0, 0xc0, +/* 0x918: */ 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x920: */ 0xd9, 0xd0, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x928: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x930: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x938: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x940: */ 0xd7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x948: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x950: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x958: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x960: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x968: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x970: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x978: */ 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x980: */ 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x988: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x990: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x998: */ 0xc0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x80, +/* 0x9a0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x9a8: */ 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9b0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9b8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9c0: */ 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9c8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9d0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9d8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9e0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9e8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9f0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9f8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa00: */ 0xbf, 0xbf, 0xbf, 0xbe, 0xbf, 0xbe, 0xbc, 0xbc, +/* 0xa08: */ 0xbe, 0xbc, 0xbc, 0xb8, 0xb8, 0xb8, 0xb8, 0xb0, +/* 0xa10: */ 0xbc, 0xb8, 0xb8, 0xb0, 0xb8, 0xb0, 0xb0, 0xb0, +/* 0xa18: */ 0xb0, 0xb0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, +/* 0xa20: */ 0xbb, 0xb0, 0xb0, 0xa0, 0xb0, 0xa0, 0xa0, 0xa0, +/* 0xa28: */ 0xa0, 0xa0, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa30: */ 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa40: */ 0xb7, 0xb0, 0xa0, 0xa0, 0xa0, 0x80, 0x80, 0x80, +/* 0xa48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa80: */ 0xaf, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xaa0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xaa8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xab0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xab8: */ 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xac8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, +/* 0xad0: */ 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x9f, 0x9e, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb08: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb10: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb18: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc00: */ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7c, +/* 0xc08: */ 0x7e, 0x7c, 0x7c, 0x78, 0x7c, 0x78, 0x78, 0x78, +/* 0xc10: */ 0x7c, 0x78, 0x78, 0x78, 0x78, 0x70, 0x70, 0x70, +/* 0xc18: */ 0x78, 0x70, 0x70, 0x60, 0x70, 0x60, 0x60, 0x60, +/* 0xc20: */ 0x7b, 0x78, 0x70, 0x70, 0x70, 0x60, 0x60, 0x60, +/* 0xc28: */ 0x70, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, +/* 0xc30: */ 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, +/* 0xc38: */ 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x77, 0x70, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, +/* 0xc48: */ 0x60, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x6f, 0x64, 0x60, 0x40, 0x40, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x5f, 0x5e, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x3f, 0x3f, 0x3e, 0x00, 0x1c, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/reSID/wave8580__ST.cc b/MCUME_esp32/esp64/main/reSID/reSID/wave8580__ST.cc new file mode 100755 index 0000000..e2ca522 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/reSID/wave8580__ST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580__ST[] = +const reg8 wave8580__ST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0x3f8: */ 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7e8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7f0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3e, +/* 0x7f8: */ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0xbf8: */ 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x1f, 0x1f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x83, 0x83, +/* 0xe80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xef0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xef8: */ 0x80, 0x80, 0x80, 0x80, 0x87, 0x87, 0x87, 0x8f, +/* 0xf00: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xf08: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf10: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf18: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf20: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xf28: */ 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, +/* 0xf30: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf38: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf40: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf48: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf50: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf58: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf60: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf68: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf70: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, 0xe3, +/* 0xf80: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf88: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf90: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf98: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfa0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfa8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfb0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfb8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, +/* 0xfc0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfc8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfd0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfd8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xfe8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xff0: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xff8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/esp64/main/reSID/sid.cpp b/MCUME_esp32/esp64/main/reSID/sid.cpp new file mode 100755 index 0000000..a446ee4 --- /dev/null +++ b/MCUME_esp32/esp64/main/reSID/sid.cpp @@ -0,0 +1,49 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ + +#include "reSID/envelope.cc" +#include "reSID/extfilt.cc" +#include "reSID/filter.cc" +#include "reSID/pot.cc" +#include "reSID/version.cc" +#include "reSID/voice.cc" + + +#include "reSID/wave6581__ST.cc" +#include "reSID/wave6581_P_T.cc" +#include "reSID/wave6581_PS_.cc" +#include "reSID/wave6581_PST.cc" + +/* +#include "reSID/wave8580__ST.cc" +#include "reSID/wave8580_P_T.cc" +#include "reSID/wave8580_PS_.cc" +#include "reSID/wave8580_PST.cc" +*/ +#include "reSID/wave.cc" + +#include "reSID/sid.cc" \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/roms.cpp b/MCUME_esp32/esp64/main/roms.cpp new file mode 100755 index 0000000..c5d91c5 --- /dev/null +++ b/MCUME_esp32/esp64/main/roms.cpp @@ -0,0 +1,1898 @@ +#include +#include +#include "roms.h" + +/* +bin2h basic.901226-01.bin -id=rom_basic > roms.h +bin2h kernal.901227-03.bin -id=rom_kernal >> roms.h +bin2h characters.901225-01.bin -id=rom_characters >> roms.h +*/ + +//file auto-generated from basic.901226-01.bin by bin2h.exe +const size_t rom_basic_len = 8192; +const unsigned char rom_basic[8192]= +{ + 0x94,0xE3,0x7B,0xE3,0x43,0x42,0x4D,0x42,0x41,0x53,0x49, + 0x43,0x30,0xA8,0x41,0xA7,0x1D,0xAD,0xF7,0xA8,0xA4,0xAB, + 0xBE,0xAB,0x80,0xB0,0x05,0xAC,0xA4,0xA9,0x9F,0xA8,0x70, + 0xA8,0x27,0xA9,0x1C,0xA8,0x82,0xA8,0xD1,0xA8,0x3A,0xA9, + 0x2E,0xA8,0x4A,0xA9,0x2C,0xB8,0x67,0xE1,0x55,0xE1,0x64, + 0xE1,0xB2,0xB3,0x23,0xB8,0x7F,0xAA,0x9F,0xAA,0x56,0xA8, + 0x9B,0xA6,0x5D,0xA6,0x85,0xAA,0x29,0xE1,0xBD,0xE1,0xC6, + 0xE1,0x7A,0xAB,0x41,0xA6,0x39,0xBC,0xCC,0xBC,0x58,0xBC, + 0x10,0x03,0x7D,0xB3,0x9E,0xB3,0x71,0xBF,0x97,0xE0,0xEA, + 0xB9,0xED,0xBF,0x64,0xE2,0x6B,0xE2,0xB4,0xE2,0x0E,0xE3, + 0x0D,0xB8,0x7C,0xB7,0x65,0xB4,0xAD,0xB7,0x8B,0xB7,0xEC, + 0xB6,0x00,0xB7,0x2C,0xB7,0x37,0xB7,0x79,0x69,0xB8,0x79, + 0x52,0xB8,0x7B,0x2A,0xBA,0x7B,0x11,0xBB,0x7F,0x7A,0xBF, + 0x50,0xE8,0xAF,0x46,0xE5,0xAF,0x7D,0xB3,0xBF,0x5A,0xD3, + 0xAE,0x64,0x15,0xB0,0x45,0x4E,0xC4,0x46,0x4F,0xD2,0x4E, + 0x45,0x58,0xD4,0x44,0x41,0x54,0xC1,0x49,0x4E,0x50,0x55, + 0x54,0xA3,0x49,0x4E,0x50,0x55,0xD4,0x44,0x49,0xCD,0x52, + 0x45,0x41,0xC4,0x4C,0x45,0xD4,0x47,0x4F,0x54,0xCF,0x52, + 0x55,0xCE,0x49,0xC6,0x52,0x45,0x53,0x54,0x4F,0x52,0xC5, + 0x47,0x4F,0x53,0x55,0xC2,0x52,0x45,0x54,0x55,0x52,0xCE, + 0x52,0x45,0xCD,0x53,0x54,0x4F,0xD0,0x4F,0xCE,0x57,0x41, + 0x49,0xD4,0x4C,0x4F,0x41,0xC4,0x53,0x41,0x56,0xC5,0x56, + 0x45,0x52,0x49,0x46,0xD9,0x44,0x45,0xC6,0x50,0x4F,0x4B, + 0xC5,0x50,0x52,0x49,0x4E,0x54,0xA3,0x50,0x52,0x49,0x4E, + 0xD4,0x43,0x4F,0x4E,0xD4,0x4C,0x49,0x53,0xD4,0x43,0x4C, + 0xD2,0x43,0x4D,0xC4,0x53,0x59,0xD3,0x4F,0x50,0x45,0xCE, + 0x43,0x4C,0x4F,0x53,0xC5,0x47,0x45,0xD4,0x4E,0x45,0xD7, + 0x54,0x41,0x42,0xA8,0x54,0xCF,0x46,0xCE,0x53,0x50,0x43, + 0xA8,0x54,0x48,0x45,0xCE,0x4E,0x4F,0xD4,0x53,0x54,0x45, + 0xD0,0xAB,0xAD,0xAA,0xAF,0xDE,0x41,0x4E,0xC4,0x4F,0xD2, + 0xBE,0xBD,0xBC,0x53,0x47,0xCE,0x49,0x4E,0xD4,0x41,0x42, + 0xD3,0x55,0x53,0xD2,0x46,0x52,0xC5,0x50,0x4F,0xD3,0x53, + 0x51,0xD2,0x52,0x4E,0xC4,0x4C,0x4F,0xC7,0x45,0x58,0xD0, + 0x43,0x4F,0xD3,0x53,0x49,0xCE,0x54,0x41,0xCE,0x41,0x54, + 0xCE,0x50,0x45,0x45,0xCB,0x4C,0x45,0xCE,0x53,0x54,0x52, + 0xA4,0x56,0x41,0xCC,0x41,0x53,0xC3,0x43,0x48,0x52,0xA4, + 0x4C,0x45,0x46,0x54,0xA4,0x52,0x49,0x47,0x48,0x54,0xA4, + 0x4D,0x49,0x44,0xA4,0x47,0xCF,0x00,0x54,0x4F,0x4F,0x20, + 0x4D,0x41,0x4E,0x59,0x20,0x46,0x49,0x4C,0x45,0xD3,0x46, + 0x49,0x4C,0x45,0x20,0x4F,0x50,0x45,0xCE,0x46,0x49,0x4C, + 0x45,0x20,0x4E,0x4F,0x54,0x20,0x4F,0x50,0x45,0xCE,0x46, + 0x49,0x4C,0x45,0x20,0x4E,0x4F,0x54,0x20,0x46,0x4F,0x55, + 0x4E,0xC4,0x44,0x45,0x56,0x49,0x43,0x45,0x20,0x4E,0x4F, + 0x54,0x20,0x50,0x52,0x45,0x53,0x45,0x4E,0xD4,0x4E,0x4F, + 0x54,0x20,0x49,0x4E,0x50,0x55,0x54,0x20,0x46,0x49,0x4C, + 0xC5,0x4E,0x4F,0x54,0x20,0x4F,0x55,0x54,0x50,0x55,0x54, + 0x20,0x46,0x49,0x4C,0xC5,0x4D,0x49,0x53,0x53,0x49,0x4E, + 0x47,0x20,0x46,0x49,0x4C,0x45,0x20,0x4E,0x41,0x4D,0xC5, + 0x49,0x4C,0x4C,0x45,0x47,0x41,0x4C,0x20,0x44,0x45,0x56, + 0x49,0x43,0x45,0x20,0x4E,0x55,0x4D,0x42,0x45,0xD2,0x4E, + 0x45,0x58,0x54,0x20,0x57,0x49,0x54,0x48,0x4F,0x55,0x54, + 0x20,0x46,0x4F,0xD2,0x53,0x59,0x4E,0x54,0x41,0xD8,0x52, + 0x45,0x54,0x55,0x52,0x4E,0x20,0x57,0x49,0x54,0x48,0x4F, + 0x55,0x54,0x20,0x47,0x4F,0x53,0x55,0xC2,0x4F,0x55,0x54, + 0x20,0x4F,0x46,0x20,0x44,0x41,0x54,0xC1,0x49,0x4C,0x4C, + 0x45,0x47,0x41,0x4C,0x20,0x51,0x55,0x41,0x4E,0x54,0x49, + 0x54,0xD9,0x4F,0x56,0x45,0x52,0x46,0x4C,0x4F,0xD7,0x4F, + 0x55,0x54,0x20,0x4F,0x46,0x20,0x4D,0x45,0x4D,0x4F,0x52, + 0xD9,0x55,0x4E,0x44,0x45,0x46,0x27,0x44,0x20,0x53,0x54, + 0x41,0x54,0x45,0x4D,0x45,0x4E,0xD4,0x42,0x41,0x44,0x20, + 0x53,0x55,0x42,0x53,0x43,0x52,0x49,0x50,0xD4,0x52,0x45, + 0x44,0x49,0x4D,0x27,0x44,0x20,0x41,0x52,0x52,0x41,0xD9, + 0x44,0x49,0x56,0x49,0x53,0x49,0x4F,0x4E,0x20,0x42,0x59, + 0x20,0x5A,0x45,0x52,0xCF,0x49,0x4C,0x4C,0x45,0x47,0x41, + 0x4C,0x20,0x44,0x49,0x52,0x45,0x43,0xD4,0x54,0x59,0x50, + 0x45,0x20,0x4D,0x49,0x53,0x4D,0x41,0x54,0x43,0xC8,0x53, + 0x54,0x52,0x49,0x4E,0x47,0x20,0x54,0x4F,0x4F,0x20,0x4C, + 0x4F,0x4E,0xC7,0x46,0x49,0x4C,0x45,0x20,0x44,0x41,0x54, + 0xC1,0x46,0x4F,0x52,0x4D,0x55,0x4C,0x41,0x20,0x54,0x4F, + 0x4F,0x20,0x43,0x4F,0x4D,0x50,0x4C,0x45,0xD8,0x43,0x41, + 0x4E,0x27,0x54,0x20,0x43,0x4F,0x4E,0x54,0x49,0x4E,0x55, + 0xC5,0x55,0x4E,0x44,0x45,0x46,0x27,0x44,0x20,0x46,0x55, + 0x4E,0x43,0x54,0x49,0x4F,0xCE,0x56,0x45,0x52,0x49,0x46, + 0xD9,0x4C,0x4F,0x41,0xC4,0x9E,0xA1,0xAC,0xA1,0xB5,0xA1, + 0xC2,0xA1,0xD0,0xA1,0xE2,0xA1,0xF0,0xA1,0xFF,0xA1,0x10, + 0xA2,0x25,0xA2,0x35,0xA2,0x3B,0xA2,0x4F,0xA2,0x5A,0xA2, + 0x6A,0xA2,0x72,0xA2,0x7F,0xA2,0x90,0xA2,0x9D,0xA2,0xAA, + 0xA2,0xBA,0xA2,0xC8,0xA2,0xD5,0xA2,0xE4,0xA2,0xED,0xA2, + 0x00,0xA3,0x0E,0xA3,0x1E,0xA3,0x24,0xA3,0x83,0xA3,0x0D, + 0x4F,0x4B,0x0D,0x00,0x20,0x20,0x45,0x52,0x52,0x4F,0x52, + 0x00,0x20,0x49,0x4E,0x20,0x00,0x0D,0x0A,0x52,0x45,0x41, + 0x44,0x59,0x2E,0x0D,0x0A,0x00,0x0D,0x0A,0x42,0x52,0x45, + 0x41,0x4B,0x00,0xA0,0xBA,0xE8,0xE8,0xE8,0xE8,0xBD,0x01, + 0x01,0xC9,0x81,0xD0,0x21,0xA5,0x4A,0xD0,0x0A,0xBD,0x02, + 0x01,0x85,0x49,0xBD,0x03,0x01,0x85,0x4A,0xDD,0x03,0x01, + 0xD0,0x07,0xA5,0x49,0xDD,0x02,0x01,0xF0,0x07,0x8A,0x18, + 0x69,0x12,0xAA,0xD0,0xD8,0x60,0x20,0x08,0xA4,0x85,0x31, + 0x84,0x32,0x38,0xA5,0x5A,0xE5,0x5F,0x85,0x22,0xA8,0xA5, + 0x5B,0xE5,0x60,0xAA,0xE8,0x98,0xF0,0x23,0xA5,0x5A,0x38, + 0xE5,0x22,0x85,0x5A,0xB0,0x03,0xC6,0x5B,0x38,0xA5,0x58, + 0xE5,0x22,0x85,0x58,0xB0,0x08,0xC6,0x59,0x90,0x04,0xB1, + 0x5A,0x91,0x58,0x88,0xD0,0xF9,0xB1,0x5A,0x91,0x58,0xC6, + 0x5B,0xC6,0x59,0xCA,0xD0,0xF2,0x60,0x0A,0x69,0x3E,0xB0, + 0x35,0x85,0x22,0xBA,0xE4,0x22,0x90,0x2E,0x60,0xC4,0x34, + 0x90,0x28,0xD0,0x04,0xC5,0x33,0x90,0x22,0x48,0xA2,0x09, + 0x98,0x48,0xB5,0x57,0xCA,0x10,0xFA,0x20,0x26,0xB5,0xA2, + 0xF7,0x68,0x95,0x61,0xE8,0x30,0xFA,0x68,0xA8,0x68,0xC4, + 0x34,0x90,0x06,0xD0,0x05,0xC5,0x33,0xB0,0x01,0x60,0xA2, + 0x10,0x6C,0x00,0x03,0x8A,0x0A,0xAA,0xBD,0x26,0xA3,0x85, + 0x22,0xBD,0x27,0xA3,0x85,0x23,0x20,0xCC,0xFF,0xA9,0x00, + 0x85,0x13,0x20,0xD7,0xAA,0x20,0x45,0xAB,0xA0,0x00,0xB1, + 0x22,0x48,0x29,0x7F,0x20,0x47,0xAB,0xC8,0x68,0x10,0xF4, + 0x20,0x7A,0xA6,0xA9,0x69,0xA0,0xA3,0x20,0x1E,0xAB,0xA4, + 0x3A,0xC8,0xF0,0x03,0x20,0xC2,0xBD,0xA9,0x76,0xA0,0xA3, + 0x20,0x1E,0xAB,0xA9,0x80,0x20,0x90,0xFF,0x6C,0x02,0x03, + 0x20,0x60,0xA5,0x86,0x7A,0x84,0x7B,0x20,0x73,0x00,0xAA, + 0xF0,0xF0,0xA2,0xFF,0x86,0x3A,0x90,0x06,0x20,0x79,0xA5, + 0x4C,0xE1,0xA7,0x20,0x6B,0xA9,0x20,0x79,0xA5,0x84,0x0B, + 0x20,0x13,0xA6,0x90,0x44,0xA0,0x01,0xB1,0x5F,0x85,0x23, + 0xA5,0x2D,0x85,0x22,0xA5,0x60,0x85,0x25,0xA5,0x5F,0x88, + 0xF1,0x5F,0x18,0x65,0x2D,0x85,0x2D,0x85,0x24,0xA5,0x2E, + 0x69,0xFF,0x85,0x2E,0xE5,0x60,0xAA,0x38,0xA5,0x5F,0xE5, + 0x2D,0xA8,0xB0,0x03,0xE8,0xC6,0x25,0x18,0x65,0x22,0x90, + 0x03,0xC6,0x23,0x18,0xB1,0x22,0x91,0x24,0xC8,0xD0,0xF9, + 0xE6,0x23,0xE6,0x25,0xCA,0xD0,0xF2,0x20,0x59,0xA6,0x20, + 0x33,0xA5,0xAD,0x00,0x02,0xF0,0x88,0x18,0xA5,0x2D,0x85, + 0x5A,0x65,0x0B,0x85,0x58,0xA4,0x2E,0x84,0x5B,0x90,0x01, + 0xC8,0x84,0x59,0x20,0xB8,0xA3,0xA5,0x14,0xA4,0x15,0x8D, + 0xFE,0x01,0x8C,0xFF,0x01,0xA5,0x31,0xA4,0x32,0x85,0x2D, + 0x84,0x2E,0xA4,0x0B,0x88,0xB9,0xFC,0x01,0x91,0x5F,0x88, + 0x10,0xF8,0x20,0x59,0xA6,0x20,0x33,0xA5,0x4C,0x80,0xA4, + 0xA5,0x2B,0xA4,0x2C,0x85,0x22,0x84,0x23,0x18,0xA0,0x01, + 0xB1,0x22,0xF0,0x1D,0xA0,0x04,0xC8,0xB1,0x22,0xD0,0xFB, + 0xC8,0x98,0x65,0x22,0xAA,0xA0,0x00,0x91,0x22,0xA5,0x23, + 0x69,0x00,0xC8,0x91,0x22,0x86,0x22,0x85,0x23,0x90,0xDD, + 0x60,0xA2,0x00,0x20,0x12,0xE1,0xC9,0x0D,0xF0,0x0D,0x9D, + 0x00,0x02,0xE8,0xE0,0x59,0x90,0xF1,0xA2,0x17,0x4C,0x37, + 0xA4,0x4C,0xCA,0xAA,0x6C,0x04,0x03,0xA6,0x7A,0xA0,0x04, + 0x84,0x0F,0xBD,0x00,0x02,0x10,0x07,0xC9,0xFF,0xF0,0x3E, + 0xE8,0xD0,0xF4,0xC9,0x20,0xF0,0x37,0x85,0x08,0xC9,0x22, + 0xF0,0x56,0x24,0x0F,0x70,0x2D,0xC9,0x3F,0xD0,0x04,0xA9, + 0x99,0xD0,0x25,0xC9,0x30,0x90,0x04,0xC9,0x3C,0x90,0x1D, + 0x84,0x71,0xA0,0x00,0x84,0x0B,0x88,0x86,0x7A,0xCA,0xC8, + 0xE8,0xBD,0x00,0x02,0x38,0xF9,0x9E,0xA0,0xF0,0xF5,0xC9, + 0x80,0xD0,0x30,0x05,0x0B,0xA4,0x71,0xE8,0xC8,0x99,0xFB, + 0x01,0xB9,0xFB,0x01,0xF0,0x36,0x38,0xE9,0x3A,0xF0,0x04, + 0xC9,0x49,0xD0,0x02,0x85,0x0F,0x38,0xE9,0x55,0xD0,0x9F, + 0x85,0x08,0xBD,0x00,0x02,0xF0,0xDF,0xC5,0x08,0xF0,0xDB, + 0xC8,0x99,0xFB,0x01,0xE8,0xD0,0xF0,0xA6,0x7A,0xE6,0x0B, + 0xC8,0xB9,0x9D,0xA0,0x10,0xFA,0xB9,0x9E,0xA0,0xD0,0xB4, + 0xBD,0x00,0x02,0x10,0xBE,0x99,0xFD,0x01,0xC6,0x7B,0xA9, + 0xFF,0x85,0x7A,0x60,0xA5,0x2B,0xA6,0x2C,0xA0,0x01,0x85, + 0x5F,0x86,0x60,0xB1,0x5F,0xF0,0x1F,0xC8,0xC8,0xA5,0x15, + 0xD1,0x5F,0x90,0x18,0xF0,0x03,0x88,0xD0,0x09,0xA5,0x14, + 0x88,0xD1,0x5F,0x90,0x0C,0xF0,0x0A,0x88,0xB1,0x5F,0xAA, + 0x88,0xB1,0x5F,0xB0,0xD7,0x18,0x60,0xD0,0xFD,0xA9,0x00, + 0xA8,0x91,0x2B,0xC8,0x91,0x2B,0xA5,0x2B,0x18,0x69,0x02, + 0x85,0x2D,0xA5,0x2C,0x69,0x00,0x85,0x2E,0x20,0x8E,0xA6, + 0xA9,0x00,0xD0,0x2D,0x20,0xE7,0xFF,0xA5,0x37,0xA4,0x38, + 0x85,0x33,0x84,0x34,0xA5,0x2D,0xA4,0x2E,0x85,0x2F,0x84, + 0x30,0x85,0x31,0x84,0x32,0x20,0x1D,0xA8,0xA2,0x19,0x86, + 0x16,0x68,0xA8,0x68,0xA2,0xFA,0x9A,0x48,0x98,0x48,0xA9, + 0x00,0x85,0x3E,0x85,0x10,0x60,0x18,0xA5,0x2B,0x69,0xFF, + 0x85,0x7A,0xA5,0x2C,0x69,0xFF,0x85,0x7B,0x60,0x90,0x06, + 0xF0,0x04,0xC9,0xAB,0xD0,0xE9,0x20,0x6B,0xA9,0x20,0x13, + 0xA6,0x20,0x79,0x00,0xF0,0x0C,0xC9,0xAB,0xD0,0x8E,0x20, + 0x73,0x00,0x20,0x6B,0xA9,0xD0,0x86,0x68,0x68,0xA5,0x14, + 0x05,0x15,0xD0,0x06,0xA9,0xFF,0x85,0x14,0x85,0x15,0xA0, + 0x01,0x84,0x0F,0xB1,0x5F,0xF0,0x43,0x20,0x2C,0xA8,0x20, + 0xD7,0xAA,0xC8,0xB1,0x5F,0xAA,0xC8,0xB1,0x5F,0xC5,0x15, + 0xD0,0x04,0xE4,0x14,0xF0,0x02,0xB0,0x2C,0x84,0x49,0x20, + 0xCD,0xBD,0xA9,0x20,0xA4,0x49,0x29,0x7F,0x20,0x47,0xAB, + 0xC9,0x22,0xD0,0x06,0xA5,0x0F,0x49,0xFF,0x85,0x0F,0xC8, + 0xF0,0x11,0xB1,0x5F,0xD0,0x10,0xA8,0xB1,0x5F,0xAA,0xC8, + 0xB1,0x5F,0x86,0x5F,0x85,0x60,0xD0,0xB5,0x4C,0x86,0xE3, + 0x6C,0x06,0x03,0x10,0xD7,0xC9,0xFF,0xF0,0xD3,0x24,0x0F, + 0x30,0xCF,0x38,0xE9,0x7F,0xAA,0x84,0x49,0xA0,0xFF,0xCA, + 0xF0,0x08,0xC8,0xB9,0x9E,0xA0,0x10,0xFA,0x30,0xF5,0xC8, + 0xB9,0x9E,0xA0,0x30,0xB2,0x20,0x47,0xAB,0xD0,0xF5,0xA9, + 0x80,0x85,0x10,0x20,0xA5,0xA9,0x20,0x8A,0xA3,0xD0,0x05, + 0x8A,0x69,0x0F,0xAA,0x9A,0x68,0x68,0xA9,0x09,0x20,0xFB, + 0xA3,0x20,0x06,0xA9,0x18,0x98,0x65,0x7A,0x48,0xA5,0x7B, + 0x69,0x00,0x48,0xA5,0x3A,0x48,0xA5,0x39,0x48,0xA9,0xA4, + 0x20,0xFF,0xAE,0x20,0x8D,0xAD,0x20,0x8A,0xAD,0xA5,0x66, + 0x09,0x7F,0x25,0x62,0x85,0x62,0xA9,0x8B,0xA0,0xA7,0x85, + 0x22,0x84,0x23,0x4C,0x43,0xAE,0xA9,0xBC,0xA0,0xB9,0x20, + 0xA2,0xBB,0x20,0x79,0x00,0xC9,0xA9,0xD0,0x06,0x20,0x73, + 0x00,0x20,0x8A,0xAD,0x20,0x2B,0xBC,0x20,0x38,0xAE,0xA5, + 0x4A,0x48,0xA5,0x49,0x48,0xA9,0x81,0x48,0x20,0x2C,0xA8, + 0xA5,0x7A,0xA4,0x7B,0xC0,0x02,0xEA,0xF0,0x04,0x85,0x3D, + 0x84,0x3E,0xA0,0x00,0xB1,0x7A,0xD0,0x43,0xA0,0x02,0xB1, + 0x7A,0x18,0xD0,0x03,0x4C,0x4B,0xA8,0xC8,0xB1,0x7A,0x85, + 0x39,0xC8,0xB1,0x7A,0x85,0x3A,0x98,0x65,0x7A,0x85,0x7A, + 0x90,0x02,0xE6,0x7B,0x6C,0x08,0x03,0x20,0x73,0x00,0x20, + 0xED,0xA7,0x4C,0xAE,0xA7,0xF0,0x3C,0xE9,0x80,0x90,0x11, + 0xC9,0x23,0xB0,0x17,0x0A,0xA8,0xB9,0x0D,0xA0,0x48,0xB9, + 0x0C,0xA0,0x48,0x4C,0x73,0x00,0x4C,0xA5,0xA9,0xC9,0x3A, + 0xF0,0xD6,0x4C,0x08,0xAF,0xC9,0x4B,0xD0,0xF9,0x20,0x73, + 0x00,0xA9,0xA4,0x20,0xFF,0xAE,0x4C,0xA0,0xA8,0x38,0xA5, + 0x2B,0xE9,0x01,0xA4,0x2C,0xB0,0x01,0x88,0x85,0x41,0x84, + 0x42,0x60,0x20,0xE1,0xFF,0xB0,0x01,0x18,0xD0,0x3C,0xA5, + 0x7A,0xA4,0x7B,0xA6,0x3A,0xE8,0xF0,0x0C,0x85,0x3D,0x84, + 0x3E,0xA5,0x39,0xA4,0x3A,0x85,0x3B,0x84,0x3C,0x68,0x68, + 0xA9,0x81,0xA0,0xA3,0x90,0x03,0x4C,0x69,0xA4,0x4C,0x86, + 0xE3,0xD0,0x17,0xA2,0x1A,0xA4,0x3E,0xD0,0x03,0x4C,0x37, + 0xA4,0xA5,0x3D,0x85,0x7A,0x84,0x7B,0xA5,0x3B,0xA4,0x3C, + 0x85,0x39,0x84,0x3A,0x60,0x08,0xA9,0x00,0x20,0x90,0xFF, + 0x28,0xD0,0x03,0x4C,0x59,0xA6,0x20,0x60,0xA6,0x4C,0x97, + 0xA8,0xA9,0x03,0x20,0xFB,0xA3,0xA5,0x7B,0x48,0xA5,0x7A, + 0x48,0xA5,0x3A,0x48,0xA5,0x39,0x48,0xA9,0x8D,0x48,0x20, + 0x79,0x00,0x20,0xA0,0xA8,0x4C,0xAE,0xA7,0x20,0x6B,0xA9, + 0x20,0x09,0xA9,0x38,0xA5,0x39,0xE5,0x14,0xA5,0x3A,0xE5, + 0x15,0xB0,0x0B,0x98,0x38,0x65,0x7A,0xA6,0x7B,0x90,0x07, + 0xE8,0xB0,0x04,0xA5,0x2B,0xA6,0x2C,0x20,0x17,0xA6,0x90, + 0x1E,0xA5,0x5F,0xE9,0x01,0x85,0x7A,0xA5,0x60,0xE9,0x00, + 0x85,0x7B,0x60,0xD0,0xFD,0xA9,0xFF,0x85,0x4A,0x20,0x8A, + 0xA3,0x9A,0xC9,0x8D,0xF0,0x0B,0xA2,0x0C,0x2C,0xA2,0x11, + 0x4C,0x37,0xA4,0x4C,0x08,0xAF,0x68,0x68,0x85,0x39,0x68, + 0x85,0x3A,0x68,0x85,0x7A,0x68,0x85,0x7B,0x20,0x06,0xA9, + 0x98,0x18,0x65,0x7A,0x85,0x7A,0x90,0x02,0xE6,0x7B,0x60, + 0xA2,0x3A,0x2C,0xA2,0x00,0x86,0x07,0xA0,0x00,0x84,0x08, + 0xA5,0x08,0xA6,0x07,0x85,0x07,0x86,0x08,0xB1,0x7A,0xF0, + 0xE8,0xC5,0x08,0xF0,0xE4,0xC8,0xC9,0x22,0xD0,0xF3,0xF0, + 0xE9,0x20,0x9E,0xAD,0x20,0x79,0x00,0xC9,0x89,0xF0,0x05, + 0xA9,0xA7,0x20,0xFF,0xAE,0xA5,0x61,0xD0,0x05,0x20,0x09, + 0xA9,0xF0,0xBB,0x20,0x79,0x00,0xB0,0x03,0x4C,0xA0,0xA8, + 0x4C,0xED,0xA7,0x20,0x9E,0xB7,0x48,0xC9,0x8D,0xF0,0x04, + 0xC9,0x89,0xD0,0x91,0xC6,0x65,0xD0,0x04,0x68,0x4C,0xEF, + 0xA7,0x20,0x73,0x00,0x20,0x6B,0xA9,0xC9,0x2C,0xF0,0xEE, + 0x68,0x60,0xA2,0x00,0x86,0x14,0x86,0x15,0xB0,0xF7,0xE9, + 0x2F,0x85,0x07,0xA5,0x15,0x85,0x22,0xC9,0x19,0xB0,0xD4, + 0xA5,0x14,0x0A,0x26,0x22,0x0A,0x26,0x22,0x65,0x14,0x85, + 0x14,0xA5,0x22,0x65,0x15,0x85,0x15,0x06,0x14,0x26,0x15, + 0xA5,0x14,0x65,0x07,0x85,0x14,0x90,0x02,0xE6,0x15,0x20, + 0x73,0x00,0x4C,0x71,0xA9,0x20,0x8B,0xB0,0x85,0x49,0x84, + 0x4A,0xA9,0xB2,0x20,0xFF,0xAE,0xA5,0x0E,0x48,0xA5,0x0D, + 0x48,0x20,0x9E,0xAD,0x68,0x2A,0x20,0x90,0xAD,0xD0,0x18, + 0x68,0x10,0x12,0x20,0x1B,0xBC,0x20,0xBF,0xB1,0xA0,0x00, + 0xA5,0x64,0x91,0x49,0xC8,0xA5,0x65,0x91,0x49,0x60,0x4C, + 0xD0,0xBB,0x68,0xA4,0x4A,0xC0,0xBF,0xD0,0x4C,0x20,0xA6, + 0xB6,0xC9,0x06,0xD0,0x3D,0xA0,0x00,0x84,0x61,0x84,0x66, + 0x84,0x71,0x20,0x1D,0xAA,0x20,0xE2,0xBA,0xE6,0x71,0xA4, + 0x71,0x20,0x1D,0xAA,0x20,0x0C,0xBC,0xAA,0xF0,0x05,0xE8, + 0x8A,0x20,0xED,0xBA,0xA4,0x71,0xC8,0xC0,0x06,0xD0,0xDF, + 0x20,0xE2,0xBA,0x20,0x9B,0xBC,0xA6,0x64,0xA4,0x63,0xA5, + 0x65,0x4C,0xDB,0xFF,0xB1,0x22,0x20,0x80,0x00,0x90,0x03, + 0x4C,0x48,0xB2,0xE9,0x2F,0x4C,0x7E,0xBD,0xA0,0x02,0xB1, + 0x64,0xC5,0x34,0x90,0x17,0xD0,0x07,0x88,0xB1,0x64,0xC5, + 0x33,0x90,0x0E,0xA4,0x65,0xC4,0x2E,0x90,0x08,0xD0,0x0D, + 0xA5,0x64,0xC5,0x2D,0xB0,0x07,0xA5,0x64,0xA4,0x65,0x4C, + 0x68,0xAA,0xA0,0x00,0xB1,0x64,0x20,0x75,0xB4,0xA5,0x50, + 0xA4,0x51,0x85,0x6F,0x84,0x70,0x20,0x7A,0xB6,0xA9,0x61, + 0xA0,0x00,0x85,0x50,0x84,0x51,0x20,0xDB,0xB6,0xA0,0x00, + 0xB1,0x50,0x91,0x49,0xC8,0xB1,0x50,0x91,0x49,0xC8,0xB1, + 0x50,0x91,0x49,0x60,0x20,0x86,0xAA,0x4C,0xB5,0xAB,0x20, + 0x9E,0xB7,0xF0,0x05,0xA9,0x2C,0x20,0xFF,0xAE,0x08,0x86, + 0x13,0x20,0x18,0xE1,0x28,0x4C,0xA0,0xAA,0x20,0x21,0xAB, + 0x20,0x79,0x00,0xF0,0x35,0xF0,0x43,0xC9,0xA3,0xF0,0x50, + 0xC9,0xA6,0x18,0xF0,0x4B,0xC9,0x2C,0xF0,0x37,0xC9,0x3B, + 0xF0,0x5E,0x20,0x9E,0xAD,0x24,0x0D,0x30,0xDE,0x20,0xDD, + 0xBD,0x20,0x87,0xB4,0x20,0x21,0xAB,0x20,0x3B,0xAB,0xD0, + 0xD3,0xA9,0x00,0x9D,0x00,0x02,0xA2,0xFF,0xA0,0x01,0xA5, + 0x13,0xD0,0x10,0xA9,0x0D,0x20,0x47,0xAB,0x24,0x13,0x10, + 0x05,0xA9,0x0A,0x20,0x47,0xAB,0x49,0xFF,0x60,0x38,0x20, + 0xF0,0xFF,0x98,0x38,0xE9,0x0A,0xB0,0xFC,0x49,0xFF,0x69, + 0x01,0xD0,0x16,0x08,0x38,0x20,0xF0,0xFF,0x84,0x09,0x20, + 0x9B,0xB7,0xC9,0x29,0xD0,0x59,0x28,0x90,0x06,0x8A,0xE5, + 0x09,0x90,0x05,0xAA,0xE8,0xCA,0xD0,0x06,0x20,0x73,0x00, + 0x4C,0xA2,0xAA,0x20,0x3B,0xAB,0xD0,0xF2,0x20,0x87,0xB4, + 0x20,0xA6,0xB6,0xAA,0xA0,0x00,0xE8,0xCA,0xF0,0xBC,0xB1, + 0x22,0x20,0x47,0xAB,0xC8,0xC9,0x0D,0xD0,0xF3,0x20,0xE5, + 0xAA,0x4C,0x28,0xAB,0xA5,0x13,0xF0,0x03,0xA9,0x20,0x2C, + 0xA9,0x1D,0x2C,0xA9,0x3F,0x20,0x0C,0xE1,0x29,0xFF,0x60, + 0xA5,0x11,0xF0,0x11,0x30,0x04,0xA0,0xFF,0xD0,0x04,0xA5, + 0x3F,0xA4,0x40,0x85,0x39,0x84,0x3A,0x4C,0x08,0xAF,0xA5, + 0x13,0xF0,0x05,0xA2,0x18,0x4C,0x37,0xA4,0xA9,0x0C,0xA0, + 0xAD,0x20,0x1E,0xAB,0xA5,0x3D,0xA4,0x3E,0x85,0x7A,0x84, + 0x7B,0x60,0x20,0xA6,0xB3,0xC9,0x23,0xD0,0x10,0x20,0x73, + 0x00,0x20,0x9E,0xB7,0xA9,0x2C,0x20,0xFF,0xAE,0x86,0x13, + 0x20,0x1E,0xE1,0xA2,0x01,0xA0,0x02,0xA9,0x00,0x8D,0x01, + 0x02,0xA9,0x40,0x20,0x0F,0xAC,0xA6,0x13,0xD0,0x13,0x60, + 0x20,0x9E,0xB7,0xA9,0x2C,0x20,0xFF,0xAE,0x86,0x13,0x20, + 0x1E,0xE1,0x20,0xCE,0xAB,0xA5,0x13,0x20,0xCC,0xFF,0xA2, + 0x00,0x86,0x13,0x60,0xC9,0x22,0xD0,0x0B,0x20,0xBD,0xAE, + 0xA9,0x3B,0x20,0xFF,0xAE,0x20,0x21,0xAB,0x20,0xA6,0xB3, + 0xA9,0x2C,0x8D,0xFF,0x01,0x20,0xF9,0xAB,0xA5,0x13,0xF0, + 0x0D,0x20,0xB7,0xFF,0x29,0x02,0xF0,0x06,0x20,0xB5,0xAB, + 0x4C,0xF8,0xA8,0xAD,0x00,0x02,0xD0,0x1E,0xA5,0x13,0xD0, + 0xE3,0x20,0x06,0xA9,0x4C,0xFB,0xA8,0xA5,0x13,0xD0,0x06, + 0x20,0x45,0xAB,0x20,0x3B,0xAB,0x4C,0x60,0xA5,0xA6,0x41, + 0xA4,0x42,0xA9,0x98,0x2C,0xA9,0x00,0x85,0x11,0x86,0x43, + 0x84,0x44,0x20,0x8B,0xB0,0x85,0x49,0x84,0x4A,0xA5,0x7A, + 0xA4,0x7B,0x85,0x4B,0x84,0x4C,0xA6,0x43,0xA4,0x44,0x86, + 0x7A,0x84,0x7B,0x20,0x79,0x00,0xD0,0x20,0x24,0x11,0x50, + 0x0C,0x20,0x24,0xE1,0x8D,0x00,0x02,0xA2,0xFF,0xA0,0x01, + 0xD0,0x0C,0x30,0x75,0xA5,0x13,0xD0,0x03,0x20,0x45,0xAB, + 0x20,0xF9,0xAB,0x86,0x7A,0x84,0x7B,0x20,0x73,0x00,0x24, + 0x0D,0x10,0x31,0x24,0x11,0x50,0x09,0xE8,0x86,0x7A,0xA9, + 0x00,0x85,0x07,0xF0,0x0C,0x85,0x07,0xC9,0x22,0xF0,0x07, + 0xA9,0x3A,0x85,0x07,0xA9,0x2C,0x18,0x85,0x08,0xA5,0x7A, + 0xA4,0x7B,0x69,0x00,0x90,0x01,0xC8,0x20,0x8D,0xB4,0x20, + 0xE2,0xB7,0x20,0xDA,0xA9,0x4C,0x91,0xAC,0x20,0xF3,0xBC, + 0xA5,0x0E,0x20,0xC2,0xA9,0x20,0x79,0x00,0xF0,0x07,0xC9, + 0x2C,0xF0,0x03,0x4C,0x4D,0xAB,0xA5,0x7A,0xA4,0x7B,0x85, + 0x43,0x84,0x44,0xA5,0x4B,0xA4,0x4C,0x85,0x7A,0x84,0x7B, + 0x20,0x79,0x00,0xF0,0x2D,0x20,0xFD,0xAE,0x4C,0x15,0xAC, + 0x20,0x06,0xA9,0xC8,0xAA,0xD0,0x12,0xA2,0x0D,0xC8,0xB1, + 0x7A,0xF0,0x6C,0xC8,0xB1,0x7A,0x85,0x3F,0xC8,0xB1,0x7A, + 0xC8,0x85,0x40,0x20,0xFB,0xA8,0x20,0x79,0x00,0xAA,0xE0, + 0x83,0xD0,0xDC,0x4C,0x51,0xAC,0xA5,0x43,0xA4,0x44,0xA6, + 0x11,0x10,0x03,0x4C,0x27,0xA8,0xA0,0x00,0xB1,0x43,0xF0, + 0x0B,0xA5,0x13,0xD0,0x07,0xA9,0xFC,0xA0,0xAC,0x4C,0x1E, + 0xAB,0x60,0x3F,0x45,0x58,0x54,0x52,0x41,0x20,0x49,0x47, + 0x4E,0x4F,0x52,0x45,0x44,0x0D,0x00,0x3F,0x52,0x45,0x44, + 0x4F,0x20,0x46,0x52,0x4F,0x4D,0x20,0x53,0x54,0x41,0x52, + 0x54,0x0D,0x00,0xD0,0x04,0xA0,0x00,0xF0,0x03,0x20,0x8B, + 0xB0,0x85,0x49,0x84,0x4A,0x20,0x8A,0xA3,0xF0,0x05,0xA2, + 0x0A,0x4C,0x37,0xA4,0x9A,0x8A,0x18,0x69,0x04,0x48,0x69, + 0x06,0x85,0x24,0x68,0xA0,0x01,0x20,0xA2,0xBB,0xBA,0xBD, + 0x09,0x01,0x85,0x66,0xA5,0x49,0xA4,0x4A,0x20,0x67,0xB8, + 0x20,0xD0,0xBB,0xA0,0x01,0x20,0x5D,0xBC,0xBA,0x38,0xFD, + 0x09,0x01,0xF0,0x17,0xBD,0x0F,0x01,0x85,0x39,0xBD,0x10, + 0x01,0x85,0x3A,0xBD,0x12,0x01,0x85,0x7A,0xBD,0x11,0x01, + 0x85,0x7B,0x4C,0xAE,0xA7,0x8A,0x69,0x11,0xAA,0x9A,0x20, + 0x79,0x00,0xC9,0x2C,0xD0,0xF1,0x20,0x73,0x00,0x20,0x24, + 0xAD,0x20,0x9E,0xAD,0x18,0x24,0x38,0x24,0x0D,0x30,0x03, + 0xB0,0x03,0x60,0xB0,0xFD,0xA2,0x16,0x4C,0x37,0xA4,0xA6, + 0x7A,0xD0,0x02,0xC6,0x7B,0xC6,0x7A,0xA2,0x00,0x24,0x48, + 0x8A,0x48,0xA9,0x01,0x20,0xFB,0xA3,0x20,0x83,0xAE,0xA9, + 0x00,0x85,0x4D,0x20,0x79,0x00,0x38,0xE9,0xB1,0x90,0x17, + 0xC9,0x03,0xB0,0x13,0xC9,0x01,0x2A,0x49,0x01,0x45,0x4D, + 0xC5,0x4D,0x90,0x61,0x85,0x4D,0x20,0x73,0x00,0x4C,0xBB, + 0xAD,0xA6,0x4D,0xD0,0x2C,0xB0,0x7B,0x69,0x07,0x90,0x77, + 0x65,0x0D,0xD0,0x03,0x4C,0x3D,0xB6,0x69,0xFF,0x85,0x22, + 0x0A,0x65,0x22,0xA8,0x68,0xD9,0x80,0xA0,0xB0,0x67,0x20, + 0x8D,0xAD,0x48,0x20,0x20,0xAE,0x68,0xA4,0x4B,0x10,0x17, + 0xAA,0xF0,0x56,0xD0,0x5F,0x46,0x0D,0x8A,0x2A,0xA6,0x7A, + 0xD0,0x02,0xC6,0x7B,0xC6,0x7A,0xA0,0x1B,0x85,0x4D,0xD0, + 0xD7,0xD9,0x80,0xA0,0xB0,0x48,0x90,0xD9,0xB9,0x82,0xA0, + 0x48,0xB9,0x81,0xA0,0x48,0x20,0x33,0xAE,0xA5,0x4D,0x4C, + 0xA9,0xAD,0x4C,0x08,0xAF,0xA5,0x66,0xBE,0x80,0xA0,0xA8, + 0x68,0x85,0x22,0xE6,0x22,0x68,0x85,0x23,0x98,0x48,0x20, + 0x1B,0xBC,0xA5,0x65,0x48,0xA5,0x64,0x48,0xA5,0x63,0x48, + 0xA5,0x62,0x48,0xA5,0x61,0x48,0x6C,0x22,0x00,0xA0,0xFF, + 0x68,0xF0,0x23,0xC9,0x64,0xF0,0x03,0x20,0x8D,0xAD,0x84, + 0x4B,0x68,0x4A,0x85,0x12,0x68,0x85,0x69,0x68,0x85,0x6A, + 0x68,0x85,0x6B,0x68,0x85,0x6C,0x68,0x85,0x6D,0x68,0x85, + 0x6E,0x45,0x66,0x85,0x6F,0xA5,0x61,0x60,0x6C,0x0A,0x03, + 0xA9,0x00,0x85,0x0D,0x20,0x73,0x00,0xB0,0x03,0x4C,0xF3, + 0xBC,0x20,0x13,0xB1,0x90,0x03,0x4C,0x28,0xAF,0xC9,0xFF, + 0xD0,0x0F,0xA9,0xA8,0xA0,0xAE,0x20,0xA2,0xBB,0x4C,0x73, + 0x00,0x82,0x49,0x0F,0xDA,0xA1,0xC9,0x2E,0xF0,0xDE,0xC9, + 0xAB,0xF0,0x58,0xC9,0xAA,0xF0,0xD1,0xC9,0x22,0xD0,0x0F, + 0xA5,0x7A,0xA4,0x7B,0x69,0x00,0x90,0x01,0xC8,0x20,0x87, + 0xB4,0x4C,0xE2,0xB7,0xC9,0xA8,0xD0,0x13,0xA0,0x18,0xD0, + 0x3B,0x20,0xBF,0xB1,0xA5,0x65,0x49,0xFF,0xA8,0xA5,0x64, + 0x49,0xFF,0x4C,0x91,0xB3,0xC9,0xA5,0xD0,0x03,0x4C,0xF4, + 0xB3,0xC9,0xB4,0x90,0x03,0x4C,0xA7,0xAF,0x20,0xFA,0xAE, + 0x20,0x9E,0xAD,0xA9,0x29,0x2C,0xA9,0x28,0x2C,0xA9,0x2C, + 0xA0,0x00,0xD1,0x7A,0xD0,0x03,0x4C,0x73,0x00,0xA2,0x0B, + 0x4C,0x37,0xA4,0xA0,0x15,0x68,0x68,0x4C,0xFA,0xAD,0x38, + 0xA5,0x64,0xE9,0x00,0xA5,0x65,0xE9,0xA0,0x90,0x08,0xA9, + 0xA2,0xE5,0x64,0xA9,0xE3,0xE5,0x65,0x60,0x20,0x8B,0xB0, + 0x85,0x64,0x84,0x65,0xA6,0x45,0xA4,0x46,0xA5,0x0D,0xF0, + 0x26,0xA9,0x00,0x85,0x70,0x20,0x14,0xAF,0x90,0x1C,0xE0, + 0x54,0xD0,0x18,0xC0,0xC9,0xD0,0x14,0x20,0x84,0xAF,0x84, + 0x5E,0x88,0x84,0x71,0xA0,0x06,0x84,0x5D,0xA0,0x24,0x20, + 0x68,0xBE,0x4C,0x6F,0xB4,0x60,0x24,0x0E,0x10,0x0D,0xA0, + 0x00,0xB1,0x64,0xAA,0xC8,0xB1,0x64,0xA8,0x8A,0x4C,0x91, + 0xB3,0x20,0x14,0xAF,0x90,0x2D,0xE0,0x54,0xD0,0x1B,0xC0, + 0x49,0xD0,0x25,0x20,0x84,0xAF,0x98,0xA2,0xA0,0x4C,0x4F, + 0xBC,0x20,0xDE,0xFF,0x86,0x64,0x84,0x63,0x85,0x65,0xA0, + 0x00,0x84,0x62,0x60,0xE0,0x53,0xD0,0x0A,0xC0,0x54,0xD0, + 0x06,0x20,0xB7,0xFF,0x4C,0x3C,0xBC,0xA5,0x64,0xA4,0x65, + 0x4C,0xA2,0xBB,0x0A,0x48,0xAA,0x20,0x73,0x00,0xE0,0x8F, + 0x90,0x20,0x20,0xFA,0xAE,0x20,0x9E,0xAD,0x20,0xFD,0xAE, + 0x20,0x8F,0xAD,0x68,0xAA,0xA5,0x65,0x48,0xA5,0x64,0x48, + 0x8A,0x48,0x20,0x9E,0xB7,0x68,0xA8,0x8A,0x48,0x4C,0xD6, + 0xAF,0x20,0xF1,0xAE,0x68,0xA8,0xB9,0xEA,0x9F,0x85,0x55, + 0xB9,0xEB,0x9F,0x85,0x56,0x20,0x54,0x00,0x4C,0x8D,0xAD, + 0xA0,0xFF,0x2C,0xA0,0x00,0x84,0x0B,0x20,0xBF,0xB1,0xA5, + 0x64,0x45,0x0B,0x85,0x07,0xA5,0x65,0x45,0x0B,0x85,0x08, + 0x20,0xFC,0xBB,0x20,0xBF,0xB1,0xA5,0x65,0x45,0x0B,0x25, + 0x08,0x45,0x0B,0xA8,0xA5,0x64,0x45,0x0B,0x25,0x07,0x45, + 0x0B,0x4C,0x91,0xB3,0x20,0x90,0xAD,0xB0,0x13,0xA5,0x6E, + 0x09,0x7F,0x25,0x6A,0x85,0x6A,0xA9,0x69,0xA0,0x00,0x20, + 0x5B,0xBC,0xAA,0x4C,0x61,0xB0,0xA9,0x00,0x85,0x0D,0xC6, + 0x4D,0x20,0xA6,0xB6,0x85,0x61,0x86,0x62,0x84,0x63,0xA5, + 0x6C,0xA4,0x6D,0x20,0xAA,0xB6,0x86,0x6C,0x84,0x6D,0xAA, + 0x38,0xE5,0x61,0xF0,0x08,0xA9,0x01,0x90,0x04,0xA6,0x61, + 0xA9,0xFF,0x85,0x66,0xA0,0xFF,0xE8,0xC8,0xCA,0xD0,0x07, + 0xA6,0x66,0x30,0x0F,0x18,0x90,0x0C,0xB1,0x6C,0xD1,0x62, + 0xF0,0xEF,0xA2,0xFF,0xB0,0x02,0xA2,0x01,0xE8,0x8A,0x2A, + 0x25,0x12,0xF0,0x02,0xA9,0xFF,0x4C,0x3C,0xBC,0x20,0xFD, + 0xAE,0xAA,0x20,0x90,0xB0,0x20,0x79,0x00,0xD0,0xF4,0x60, + 0xA2,0x00,0x20,0x79,0x00,0x86,0x0C,0x85,0x45,0x20,0x79, + 0x00,0x20,0x13,0xB1,0xB0,0x03,0x4C,0x08,0xAF,0xA2,0x00, + 0x86,0x0D,0x86,0x0E,0x20,0x73,0x00,0x90,0x05,0x20,0x13, + 0xB1,0x90,0x0B,0xAA,0x20,0x73,0x00,0x90,0xFB,0x20,0x13, + 0xB1,0xB0,0xF6,0xC9,0x24,0xD0,0x06,0xA9,0xFF,0x85,0x0D, + 0xD0,0x10,0xC9,0x25,0xD0,0x13,0xA5,0x10,0xD0,0xD0,0xA9, + 0x80,0x85,0x0E,0x05,0x45,0x85,0x45,0x8A,0x09,0x80,0xAA, + 0x20,0x73,0x00,0x86,0x46,0x38,0x05,0x10,0xE9,0x28,0xD0, + 0x03,0x4C,0xD1,0xB1,0xA0,0x00,0x84,0x10,0xA5,0x2D,0xA6, + 0x2E,0x86,0x60,0x85,0x5F,0xE4,0x30,0xD0,0x04,0xC5,0x2F, + 0xF0,0x22,0xA5,0x45,0xD1,0x5F,0xD0,0x08,0xA5,0x46,0xC8, + 0xD1,0x5F,0xF0,0x7D,0x88,0x18,0xA5,0x5F,0x69,0x07,0x90, + 0xE1,0xE8,0xD0,0xDC,0xC9,0x41,0x90,0x05,0xE9,0x5B,0x38, + 0xE9,0xA5,0x60,0x68,0x48,0xC9,0x2A,0xD0,0x05,0xA9,0x13, + 0xA0,0xBF,0x60,0xA5,0x45,0xA4,0x46,0xC9,0x54,0xD0,0x0B, + 0xC0,0xC9,0xF0,0xEF,0xC0,0x49,0xD0,0x03,0x4C,0x08,0xAF, + 0xC9,0x53,0xD0,0x04,0xC0,0x54,0xF0,0xF5,0xA5,0x2F,0xA4, + 0x30,0x85,0x5F,0x84,0x60,0xA5,0x31,0xA4,0x32,0x85,0x5A, + 0x84,0x5B,0x18,0x69,0x07,0x90,0x01,0xC8,0x85,0x58,0x84, + 0x59,0x20,0xB8,0xA3,0xA5,0x58,0xA4,0x59,0xC8,0x85,0x2F, + 0x84,0x30,0xA0,0x00,0xA5,0x45,0x91,0x5F,0xC8,0xA5,0x46, + 0x91,0x5F,0xA9,0x00,0xC8,0x91,0x5F,0xC8,0x91,0x5F,0xC8, + 0x91,0x5F,0xC8,0x91,0x5F,0xC8,0x91,0x5F,0xA5,0x5F,0x18, + 0x69,0x02,0xA4,0x60,0x90,0x01,0xC8,0x85,0x47,0x84,0x48, + 0x60,0xA5,0x0B,0x0A,0x69,0x05,0x65,0x5F,0xA4,0x60,0x90, + 0x01,0xC8,0x85,0x58,0x84,0x59,0x60,0x90,0x80,0x00,0x00, + 0x00,0x20,0xBF,0xB1,0xA5,0x64,0xA4,0x65,0x60,0x20,0x73, + 0x00,0x20,0x9E,0xAD,0x20,0x8D,0xAD,0xA5,0x66,0x30,0x0D, + 0xA5,0x61,0xC9,0x90,0x90,0x09,0xA9,0xA5,0xA0,0xB1,0x20, + 0x5B,0xBC,0xD0,0x7A,0x4C,0x9B,0xBC,0xA5,0x0C,0x05,0x0E, + 0x48,0xA5,0x0D,0x48,0xA0,0x00,0x98,0x48,0xA5,0x46,0x48, + 0xA5,0x45,0x48,0x20,0xB2,0xB1,0x68,0x85,0x45,0x68,0x85, + 0x46,0x68,0xA8,0xBA,0xBD,0x02,0x01,0x48,0xBD,0x01,0x01, + 0x48,0xA5,0x64,0x9D,0x02,0x01,0xA5,0x65,0x9D,0x01,0x01, + 0xC8,0x20,0x79,0x00,0xC9,0x2C,0xF0,0xD2,0x84,0x0B,0x20, + 0xF7,0xAE,0x68,0x85,0x0D,0x68,0x85,0x0E,0x29,0x7F,0x85, + 0x0C,0xA6,0x2F,0xA5,0x30,0x86,0x5F,0x85,0x60,0xC5,0x32, + 0xD0,0x04,0xE4,0x31,0xF0,0x39,0xA0,0x00,0xB1,0x5F,0xC8, + 0xC5,0x45,0xD0,0x06,0xA5,0x46,0xD1,0x5F,0xF0,0x16,0xC8, + 0xB1,0x5F,0x18,0x65,0x5F,0xAA,0xC8,0xB1,0x5F,0x65,0x60, + 0x90,0xD7,0xA2,0x12,0x2C,0xA2,0x0E,0x4C,0x37,0xA4,0xA2, + 0x13,0xA5,0x0C,0xD0,0xF7,0x20,0x94,0xB1,0xA5,0x0B,0xA0, + 0x04,0xD1,0x5F,0xD0,0xE7,0x4C,0xEA,0xB2,0x20,0x94,0xB1, + 0x20,0x08,0xA4,0xA0,0x00,0x84,0x72,0xA2,0x05,0xA5,0x45, + 0x91,0x5F,0x10,0x01,0xCA,0xC8,0xA5,0x46,0x91,0x5F,0x10, + 0x02,0xCA,0xCA,0x86,0x71,0xA5,0x0B,0xC8,0xC8,0xC8,0x91, + 0x5F,0xA2,0x0B,0xA9,0x00,0x24,0x0C,0x50,0x08,0x68,0x18, + 0x69,0x01,0xAA,0x68,0x69,0x00,0xC8,0x91,0x5F,0xC8,0x8A, + 0x91,0x5F,0x20,0x4C,0xB3,0x86,0x71,0x85,0x72,0xA4,0x22, + 0xC6,0x0B,0xD0,0xDC,0x65,0x59,0xB0,0x5D,0x85,0x59,0xA8, + 0x8A,0x65,0x58,0x90,0x03,0xC8,0xF0,0x52,0x20,0x08,0xA4, + 0x85,0x31,0x84,0x32,0xA9,0x00,0xE6,0x72,0xA4,0x71,0xF0, + 0x05,0x88,0x91,0x58,0xD0,0xFB,0xC6,0x59,0xC6,0x72,0xD0, + 0xF5,0xE6,0x59,0x38,0xA5,0x31,0xE5,0x5F,0xA0,0x02,0x91, + 0x5F,0xA5,0x32,0xC8,0xE5,0x60,0x91,0x5F,0xA5,0x0C,0xD0, + 0x62,0xC8,0xB1,0x5F,0x85,0x0B,0xA9,0x00,0x85,0x71,0x85, + 0x72,0xC8,0x68,0xAA,0x85,0x64,0x68,0x85,0x65,0xD1,0x5F, + 0x90,0x0E,0xD0,0x06,0xC8,0x8A,0xD1,0x5F,0x90,0x07,0x4C, + 0x45,0xB2,0x4C,0x35,0xA4,0xC8,0xA5,0x72,0x05,0x71,0x18, + 0xF0,0x0A,0x20,0x4C,0xB3,0x8A,0x65,0x64,0xAA,0x98,0xA4, + 0x22,0x65,0x65,0x86,0x71,0xC6,0x0B,0xD0,0xCA,0x85,0x72, + 0xA2,0x05,0xA5,0x45,0x10,0x01,0xCA,0xA5,0x46,0x10,0x02, + 0xCA,0xCA,0x86,0x28,0xA9,0x00,0x20,0x55,0xB3,0x8A,0x65, + 0x58,0x85,0x47,0x98,0x65,0x59,0x85,0x48,0xA8,0xA5,0x47, + 0x60,0x84,0x22,0xB1,0x5F,0x85,0x28,0x88,0xB1,0x5F,0x85, + 0x29,0xA9,0x10,0x85,0x5D,0xA2,0x00,0xA0,0x00,0x8A,0x0A, + 0xAA,0x98,0x2A,0xA8,0xB0,0xA4,0x06,0x71,0x26,0x72,0x90, + 0x0B,0x18,0x8A,0x65,0x28,0xAA,0x98,0x65,0x29,0xA8,0xB0, + 0x93,0xC6,0x5D,0xD0,0xE3,0x60,0xA5,0x0D,0xF0,0x03,0x20, + 0xA6,0xB6,0x20,0x26,0xB5,0x38,0xA5,0x33,0xE5,0x31,0xA8, + 0xA5,0x34,0xE5,0x32,0xA2,0x00,0x86,0x0D,0x85,0x62,0x84, + 0x63,0xA2,0x90,0x4C,0x44,0xBC,0x38,0x20,0xF0,0xFF,0xA9, + 0x00,0xF0,0xEB,0xA6,0x3A,0xE8,0xD0,0xA0,0xA2,0x15,0x2C, + 0xA2,0x1B,0x4C,0x37,0xA4,0x20,0xE1,0xB3,0x20,0xA6,0xB3, + 0x20,0xFA,0xAE,0xA9,0x80,0x85,0x10,0x20,0x8B,0xB0,0x20, + 0x8D,0xAD,0x20,0xF7,0xAE,0xA9,0xB2,0x20,0xFF,0xAE,0x48, + 0xA5,0x48,0x48,0xA5,0x47,0x48,0xA5,0x7B,0x48,0xA5,0x7A, + 0x48,0x20,0xF8,0xA8,0x4C,0x4F,0xB4,0xA9,0xA5,0x20,0xFF, + 0xAE,0x09,0x80,0x85,0x10,0x20,0x92,0xB0,0x85,0x4E,0x84, + 0x4F,0x4C,0x8D,0xAD,0x20,0xE1,0xB3,0xA5,0x4F,0x48,0xA5, + 0x4E,0x48,0x20,0xF1,0xAE,0x20,0x8D,0xAD,0x68,0x85,0x4E, + 0x68,0x85,0x4F,0xA0,0x02,0xB1,0x4E,0x85,0x47,0xAA,0xC8, + 0xB1,0x4E,0xF0,0x99,0x85,0x48,0xC8,0xB1,0x47,0x48,0x88, + 0x10,0xFA,0xA4,0x48,0x20,0xD4,0xBB,0xA5,0x7B,0x48,0xA5, + 0x7A,0x48,0xB1,0x4E,0x85,0x7A,0xC8,0xB1,0x4E,0x85,0x7B, + 0xA5,0x48,0x48,0xA5,0x47,0x48,0x20,0x8A,0xAD,0x68,0x85, + 0x4E,0x68,0x85,0x4F,0x20,0x79,0x00,0xF0,0x03,0x4C,0x08, + 0xAF,0x68,0x85,0x7A,0x68,0x85,0x7B,0xA0,0x00,0x68,0x91, + 0x4E,0x68,0xC8,0x91,0x4E,0x68,0xC8,0x91,0x4E,0x68,0xC8, + 0x91,0x4E,0x68,0xC8,0x91,0x4E,0x60,0x20,0x8D,0xAD,0xA0, + 0x00,0x20,0xDF,0xBD,0x68,0x68,0xA9,0xFF,0xA0,0x00,0xF0, + 0x12,0xA6,0x64,0xA4,0x65,0x86,0x50,0x84,0x51,0x20,0xF4, + 0xB4,0x86,0x62,0x84,0x63,0x85,0x61,0x60,0xA2,0x22,0x86, + 0x07,0x86,0x08,0x85,0x6F,0x84,0x70,0x85,0x62,0x84,0x63, + 0xA0,0xFF,0xC8,0xB1,0x6F,0xF0,0x0C,0xC5,0x07,0xF0,0x04, + 0xC5,0x08,0xD0,0xF3,0xC9,0x22,0xF0,0x01,0x18,0x84,0x61, + 0x98,0x65,0x6F,0x85,0x71,0xA6,0x70,0x90,0x01,0xE8,0x86, + 0x72,0xA5,0x70,0xF0,0x04,0xC9,0x02,0xD0,0x0B,0x98,0x20, + 0x75,0xB4,0xA6,0x6F,0xA4,0x70,0x20,0x88,0xB6,0xA6,0x16, + 0xE0,0x22,0xD0,0x05,0xA2,0x19,0x4C,0x37,0xA4,0xA5,0x61, + 0x95,0x00,0xA5,0x62,0x95,0x01,0xA5,0x63,0x95,0x02,0xA0, + 0x00,0x86,0x64,0x84,0x65,0x84,0x70,0x88,0x84,0x0D,0x86, + 0x17,0xE8,0xE8,0xE8,0x86,0x16,0x60,0x46,0x0F,0x48,0x49, + 0xFF,0x38,0x65,0x33,0xA4,0x34,0xB0,0x01,0x88,0xC4,0x32, + 0x90,0x11,0xD0,0x04,0xC5,0x31,0x90,0x0B,0x85,0x33,0x84, + 0x34,0x85,0x35,0x84,0x36,0xAA,0x68,0x60,0xA2,0x10,0xA5, + 0x0F,0x30,0xB6,0x20,0x26,0xB5,0xA9,0x80,0x85,0x0F,0x68, + 0xD0,0xD0,0xA6,0x37,0xA5,0x38,0x86,0x33,0x85,0x34,0xA0, + 0x00,0x84,0x4F,0x84,0x4E,0xA5,0x31,0xA6,0x32,0x85,0x5F, + 0x86,0x60,0xA9,0x19,0xA2,0x00,0x85,0x22,0x86,0x23,0xC5, + 0x16,0xF0,0x05,0x20,0xC7,0xB5,0xF0,0xF7,0xA9,0x07,0x85, + 0x53,0xA5,0x2D,0xA6,0x2E,0x85,0x22,0x86,0x23,0xE4,0x30, + 0xD0,0x04,0xC5,0x2F,0xF0,0x05,0x20,0xBD,0xB5,0xF0,0xF3, + 0x85,0x58,0x86,0x59,0xA9,0x03,0x85,0x53,0xA5,0x58,0xA6, + 0x59,0xE4,0x32,0xD0,0x07,0xC5,0x31,0xD0,0x03,0x4C,0x06, + 0xB6,0x85,0x22,0x86,0x23,0xA0,0x00,0xB1,0x22,0xAA,0xC8, + 0xB1,0x22,0x08,0xC8,0xB1,0x22,0x65,0x58,0x85,0x58,0xC8, + 0xB1,0x22,0x65,0x59,0x85,0x59,0x28,0x10,0xD3,0x8A,0x30, + 0xD0,0xC8,0xB1,0x22,0xA0,0x00,0x0A,0x69,0x05,0x65,0x22, + 0x85,0x22,0x90,0x02,0xE6,0x23,0xA6,0x23,0xE4,0x59,0xD0, + 0x04,0xC5,0x58,0xF0,0xBA,0x20,0xC7,0xB5,0xF0,0xF3,0xB1, + 0x22,0x30,0x35,0xC8,0xB1,0x22,0x10,0x30,0xC8,0xB1,0x22, + 0xF0,0x2B,0xC8,0xB1,0x22,0xAA,0xC8,0xB1,0x22,0xC5,0x34, + 0x90,0x06,0xD0,0x1E,0xE4,0x33,0xB0,0x1A,0xC5,0x60,0x90, + 0x16,0xD0,0x04,0xE4,0x5F,0x90,0x10,0x86,0x5F,0x85,0x60, + 0xA5,0x22,0xA6,0x23,0x85,0x4E,0x86,0x4F,0xA5,0x53,0x85, + 0x55,0xA5,0x53,0x18,0x65,0x22,0x85,0x22,0x90,0x02,0xE6, + 0x23,0xA6,0x23,0xA0,0x00,0x60,0xA5,0x4F,0x05,0x4E,0xF0, + 0xF5,0xA5,0x55,0x29,0x04,0x4A,0xA8,0x85,0x55,0xB1,0x4E, + 0x65,0x5F,0x85,0x5A,0xA5,0x60,0x69,0x00,0x85,0x5B,0xA5, + 0x33,0xA6,0x34,0x85,0x58,0x86,0x59,0x20,0xBF,0xA3,0xA4, + 0x55,0xC8,0xA5,0x58,0x91,0x4E,0xAA,0xE6,0x59,0xA5,0x59, + 0xC8,0x91,0x4E,0x4C,0x2A,0xB5,0xA5,0x65,0x48,0xA5,0x64, + 0x48,0x20,0x83,0xAE,0x20,0x8F,0xAD,0x68,0x85,0x6F,0x68, + 0x85,0x70,0xA0,0x00,0xB1,0x6F,0x18,0x71,0x64,0x90,0x05, + 0xA2,0x17,0x4C,0x37,0xA4,0x20,0x75,0xB4,0x20,0x7A,0xB6, + 0xA5,0x50,0xA4,0x51,0x20,0xAA,0xB6,0x20,0x8C,0xB6,0xA5, + 0x6F,0xA4,0x70,0x20,0xAA,0xB6,0x20,0xCA,0xB4,0x4C,0xB8, + 0xAD,0xA0,0x00,0xB1,0x6F,0x48,0xC8,0xB1,0x6F,0xAA,0xC8, + 0xB1,0x6F,0xA8,0x68,0x86,0x22,0x84,0x23,0xA8,0xF0,0x0A, + 0x48,0x88,0xB1,0x22,0x91,0x35,0x98,0xD0,0xF8,0x68,0x18, + 0x65,0x35,0x85,0x35,0x90,0x02,0xE6,0x36,0x60,0x20,0x8F, + 0xAD,0xA5,0x64,0xA4,0x65,0x85,0x22,0x84,0x23,0x20,0xDB, + 0xB6,0x08,0xA0,0x00,0xB1,0x22,0x48,0xC8,0xB1,0x22,0xAA, + 0xC8,0xB1,0x22,0xA8,0x68,0x28,0xD0,0x13,0xC4,0x34,0xD0, + 0x0F,0xE4,0x33,0xD0,0x0B,0x48,0x18,0x65,0x33,0x85,0x33, + 0x90,0x02,0xE6,0x34,0x68,0x86,0x22,0x84,0x23,0x60,0xC4, + 0x18,0xD0,0x0C,0xC5,0x17,0xD0,0x08,0x85,0x16,0xE9,0x03, + 0x85,0x17,0xA0,0x00,0x60,0x20,0xA1,0xB7,0x8A,0x48,0xA9, + 0x01,0x20,0x7D,0xB4,0x68,0xA0,0x00,0x91,0x62,0x68,0x68, + 0x4C,0xCA,0xB4,0x20,0x61,0xB7,0xD1,0x50,0x98,0x90,0x04, + 0xB1,0x50,0xAA,0x98,0x48,0x8A,0x48,0x20,0x7D,0xB4,0xA5, + 0x50,0xA4,0x51,0x20,0xAA,0xB6,0x68,0xA8,0x68,0x18,0x65, + 0x22,0x85,0x22,0x90,0x02,0xE6,0x23,0x98,0x20,0x8C,0xB6, + 0x4C,0xCA,0xB4,0x20,0x61,0xB7,0x18,0xF1,0x50,0x49,0xFF, + 0x4C,0x06,0xB7,0xA9,0xFF,0x85,0x65,0x20,0x79,0x00,0xC9, + 0x29,0xF0,0x06,0x20,0xFD,0xAE,0x20,0x9E,0xB7,0x20,0x61, + 0xB7,0xF0,0x4B,0xCA,0x8A,0x48,0x18,0xA2,0x00,0xF1,0x50, + 0xB0,0xB6,0x49,0xFF,0xC5,0x65,0x90,0xB1,0xA5,0x65,0xB0, + 0xAD,0x20,0xF7,0xAE,0x68,0xA8,0x68,0x85,0x55,0x68,0x68, + 0x68,0xAA,0x68,0x85,0x50,0x68,0x85,0x51,0xA5,0x55,0x48, + 0x98,0x48,0xA0,0x00,0x8A,0x60,0x20,0x82,0xB7,0x4C,0xA2, + 0xB3,0x20,0xA3,0xB6,0xA2,0x00,0x86,0x0D,0xA8,0x60,0x20, + 0x82,0xB7,0xF0,0x08,0xA0,0x00,0xB1,0x22,0xA8,0x4C,0xA2, + 0xB3,0x4C,0x48,0xB2,0x20,0x73,0x00,0x20,0x8A,0xAD,0x20, + 0xB8,0xB1,0xA6,0x64,0xD0,0xF0,0xA6,0x65,0x4C,0x79,0x00, + 0x20,0x82,0xB7,0xD0,0x03,0x4C,0xF7,0xB8,0xA6,0x7A,0xA4, + 0x7B,0x86,0x71,0x84,0x72,0xA6,0x22,0x86,0x7A,0x18,0x65, + 0x22,0x85,0x24,0xA6,0x23,0x86,0x7B,0x90,0x01,0xE8,0x86, + 0x25,0xA0,0x00,0xB1,0x24,0x48,0x98,0x91,0x24,0x20,0x79, + 0x00,0x20,0xF3,0xBC,0x68,0xA0,0x00,0x91,0x24,0xA6,0x71, + 0xA4,0x72,0x86,0x7A,0x84,0x7B,0x60,0x20,0x8A,0xAD,0x20, + 0xF7,0xB7,0x20,0xFD,0xAE,0x4C,0x9E,0xB7,0xA5,0x66,0x30, + 0x9D,0xA5,0x61,0xC9,0x91,0xB0,0x97,0x20,0x9B,0xBC,0xA5, + 0x64,0xA4,0x65,0x84,0x14,0x85,0x15,0x60,0xA5,0x15,0x48, + 0xA5,0x14,0x48,0x20,0xF7,0xB7,0xA0,0x00,0xB1,0x14,0xA8, + 0x68,0x85,0x14,0x68,0x85,0x15,0x4C,0xA2,0xB3,0x20,0xEB, + 0xB7,0x8A,0xA0,0x00,0x91,0x14,0x60,0x20,0xEB,0xB7,0x86, + 0x49,0xA2,0x00,0x20,0x79,0x00,0xF0,0x03,0x20,0xF1,0xB7, + 0x86,0x4A,0xA0,0x00,0xB1,0x14,0x45,0x4A,0x25,0x49,0xF0, + 0xF8,0x60,0xA9,0x11,0xA0,0xBF,0x4C,0x67,0xB8,0x20,0x8C, + 0xBA,0xA5,0x66,0x49,0xFF,0x85,0x66,0x45,0x6E,0x85,0x6F, + 0xA5,0x61,0x4C,0x6A,0xB8,0x20,0x99,0xB9,0x90,0x3C,0x20, + 0x8C,0xBA,0xD0,0x03,0x4C,0xFC,0xBB,0xA6,0x70,0x86,0x56, + 0xA2,0x69,0xA5,0x69,0xA8,0xF0,0xCE,0x38,0xE5,0x61,0xF0, + 0x24,0x90,0x12,0x84,0x61,0xA4,0x6E,0x84,0x66,0x49,0xFF, + 0x69,0x00,0xA0,0x00,0x84,0x56,0xA2,0x61,0xD0,0x04,0xA0, + 0x00,0x84,0x70,0xC9,0xF9,0x30,0xC7,0xA8,0xA5,0x70,0x56, + 0x01,0x20,0xB0,0xB9,0x24,0x6F,0x10,0x57,0xA0,0x61,0xE0, + 0x69,0xF0,0x02,0xA0,0x69,0x38,0x49,0xFF,0x65,0x56,0x85, + 0x70,0xB9,0x04,0x00,0xF5,0x04,0x85,0x65,0xB9,0x03,0x00, + 0xF5,0x03,0x85,0x64,0xB9,0x02,0x00,0xF5,0x02,0x85,0x63, + 0xB9,0x01,0x00,0xF5,0x01,0x85,0x62,0xB0,0x03,0x20,0x47, + 0xB9,0xA0,0x00,0x98,0x18,0xA6,0x62,0xD0,0x4A,0xA6,0x63, + 0x86,0x62,0xA6,0x64,0x86,0x63,0xA6,0x65,0x86,0x64,0xA6, + 0x70,0x86,0x65,0x84,0x70,0x69,0x08,0xC9,0x20,0xD0,0xE4, + 0xA9,0x00,0x85,0x61,0x85,0x66,0x60,0x65,0x56,0x85,0x70, + 0xA5,0x65,0x65,0x6D,0x85,0x65,0xA5,0x64,0x65,0x6C,0x85, + 0x64,0xA5,0x63,0x65,0x6B,0x85,0x63,0xA5,0x62,0x65,0x6A, + 0x85,0x62,0x4C,0x36,0xB9,0x69,0x01,0x06,0x70,0x26,0x65, + 0x26,0x64,0x26,0x63,0x26,0x62,0x10,0xF2,0x38,0xE5,0x61, + 0xB0,0xC7,0x49,0xFF,0x69,0x01,0x85,0x61,0x90,0x0E,0xE6, + 0x61,0xF0,0x42,0x66,0x62,0x66,0x63,0x66,0x64,0x66,0x65, + 0x66,0x70,0x60,0xA5,0x66,0x49,0xFF,0x85,0x66,0xA5,0x62, + 0x49,0xFF,0x85,0x62,0xA5,0x63,0x49,0xFF,0x85,0x63,0xA5, + 0x64,0x49,0xFF,0x85,0x64,0xA5,0x65,0x49,0xFF,0x85,0x65, + 0xA5,0x70,0x49,0xFF,0x85,0x70,0xE6,0x70,0xD0,0x0E,0xE6, + 0x65,0xD0,0x0A,0xE6,0x64,0xD0,0x06,0xE6,0x63,0xD0,0x02, + 0xE6,0x62,0x60,0xA2,0x0F,0x4C,0x37,0xA4,0xA2,0x25,0xB4, + 0x04,0x84,0x70,0xB4,0x03,0x94,0x04,0xB4,0x02,0x94,0x03, + 0xB4,0x01,0x94,0x02,0xA4,0x68,0x94,0x01,0x69,0x08,0x30, + 0xE8,0xF0,0xE6,0xE9,0x08,0xA8,0xA5,0x70,0xB0,0x14,0x16, + 0x01,0x90,0x02,0xF6,0x01,0x76,0x01,0x76,0x01,0x76,0x02, + 0x76,0x03,0x76,0x04,0x6A,0xC8,0xD0,0xEC,0x18,0x60,0x81, + 0x00,0x00,0x00,0x00,0x03,0x7F,0x5E,0x56,0xCB,0x79,0x80, + 0x13,0x9B,0x0B,0x64,0x80,0x76,0x38,0x93,0x16,0x82,0x38, + 0xAA,0x3B,0x20,0x80,0x35,0x04,0xF3,0x34,0x81,0x35,0x04, + 0xF3,0x34,0x80,0x80,0x00,0x00,0x00,0x80,0x31,0x72,0x17, + 0xF8,0x20,0x2B,0xBC,0xF0,0x02,0x10,0x03,0x4C,0x48,0xB2, + 0xA5,0x61,0xE9,0x7F,0x48,0xA9,0x80,0x85,0x61,0xA9,0xD6, + 0xA0,0xB9,0x20,0x67,0xB8,0xA9,0xDB,0xA0,0xB9,0x20,0x0F, + 0xBB,0xA9,0xBC,0xA0,0xB9,0x20,0x50,0xB8,0xA9,0xC1,0xA0, + 0xB9,0x20,0x43,0xE0,0xA9,0xE0,0xA0,0xB9,0x20,0x67,0xB8, + 0x68,0x20,0x7E,0xBD,0xA9,0xE5,0xA0,0xB9,0x20,0x8C,0xBA, + 0xD0,0x03,0x4C,0x8B,0xBA,0x20,0xB7,0xBA,0xA9,0x00,0x85, + 0x26,0x85,0x27,0x85,0x28,0x85,0x29,0xA5,0x70,0x20,0x59, + 0xBA,0xA5,0x65,0x20,0x59,0xBA,0xA5,0x64,0x20,0x59,0xBA, + 0xA5,0x63,0x20,0x59,0xBA,0xA5,0x62,0x20,0x5E,0xBA,0x4C, + 0x8F,0xBB,0xD0,0x03,0x4C,0x83,0xB9,0x4A,0x09,0x80,0xA8, + 0x90,0x19,0x18,0xA5,0x29,0x65,0x6D,0x85,0x29,0xA5,0x28, + 0x65,0x6C,0x85,0x28,0xA5,0x27,0x65,0x6B,0x85,0x27,0xA5, + 0x26,0x65,0x6A,0x85,0x26,0x66,0x26,0x66,0x27,0x66,0x28, + 0x66,0x29,0x66,0x70,0x98,0x4A,0xD0,0xD6,0x60,0x85,0x22, + 0x84,0x23,0xA0,0x04,0xB1,0x22,0x85,0x6D,0x88,0xB1,0x22, + 0x85,0x6C,0x88,0xB1,0x22,0x85,0x6B,0x88,0xB1,0x22,0x85, + 0x6E,0x45,0x66,0x85,0x6F,0xA5,0x6E,0x09,0x80,0x85,0x6A, + 0x88,0xB1,0x22,0x85,0x69,0xA5,0x61,0x60,0xA5,0x69,0xF0, + 0x1F,0x18,0x65,0x61,0x90,0x04,0x30,0x1D,0x18,0x2C,0x10, + 0x14,0x69,0x80,0x85,0x61,0xD0,0x03,0x4C,0xFB,0xB8,0xA5, + 0x6F,0x85,0x66,0x60,0xA5,0x66,0x49,0xFF,0x30,0x05,0x68, + 0x68,0x4C,0xF7,0xB8,0x4C,0x7E,0xB9,0x20,0x0C,0xBC,0xAA, + 0xF0,0x10,0x18,0x69,0x02,0xB0,0xF2,0xA2,0x00,0x86,0x6F, + 0x20,0x77,0xB8,0xE6,0x61,0xF0,0xE7,0x60,0x84,0x20,0x00, + 0x00,0x00,0x20,0x0C,0xBC,0xA9,0xF9,0xA0,0xBA,0xA2,0x00, + 0x86,0x6F,0x20,0xA2,0xBB,0x4C,0x12,0xBB,0x20,0x8C,0xBA, + 0xF0,0x76,0x20,0x1B,0xBC,0xA9,0x00,0x38,0xE5,0x61,0x85, + 0x61,0x20,0xB7,0xBA,0xE6,0x61,0xF0,0xBA,0xA2,0xFC,0xA9, + 0x01,0xA4,0x6A,0xC4,0x62,0xD0,0x10,0xA4,0x6B,0xC4,0x63, + 0xD0,0x0A,0xA4,0x6C,0xC4,0x64,0xD0,0x04,0xA4,0x6D,0xC4, + 0x65,0x08,0x2A,0x90,0x09,0xE8,0x95,0x29,0xF0,0x32,0x10, + 0x34,0xA9,0x01,0x28,0xB0,0x0E,0x06,0x6D,0x26,0x6C,0x26, + 0x6B,0x26,0x6A,0xB0,0xE6,0x30,0xCE,0x10,0xE2,0xA8,0xA5, + 0x6D,0xE5,0x65,0x85,0x6D,0xA5,0x6C,0xE5,0x64,0x85,0x6C, + 0xA5,0x6B,0xE5,0x63,0x85,0x6B,0xA5,0x6A,0xE5,0x62,0x85, + 0x6A,0x98,0x4C,0x4F,0xBB,0xA9,0x40,0xD0,0xCE,0x0A,0x0A, + 0x0A,0x0A,0x0A,0x0A,0x85,0x70,0x28,0x4C,0x8F,0xBB,0xA2, + 0x14,0x4C,0x37,0xA4,0xA5,0x26,0x85,0x62,0xA5,0x27,0x85, + 0x63,0xA5,0x28,0x85,0x64,0xA5,0x29,0x85,0x65,0x4C,0xD7, + 0xB8,0x85,0x22,0x84,0x23,0xA0,0x04,0xB1,0x22,0x85,0x65, + 0x88,0xB1,0x22,0x85,0x64,0x88,0xB1,0x22,0x85,0x63,0x88, + 0xB1,0x22,0x85,0x66,0x09,0x80,0x85,0x62,0x88,0xB1,0x22, + 0x85,0x61,0x84,0x70,0x60,0xA2,0x5C,0x2C,0xA2,0x57,0xA0, + 0x00,0xF0,0x04,0xA6,0x49,0xA4,0x4A,0x20,0x1B,0xBC,0x86, + 0x22,0x84,0x23,0xA0,0x04,0xA5,0x65,0x91,0x22,0x88,0xA5, + 0x64,0x91,0x22,0x88,0xA5,0x63,0x91,0x22,0x88,0xA5,0x66, + 0x09,0x7F,0x25,0x62,0x91,0x22,0x88,0xA5,0x61,0x91,0x22, + 0x84,0x70,0x60,0xA5,0x6E,0x85,0x66,0xA2,0x05,0xB5,0x68, + 0x95,0x60,0xCA,0xD0,0xF9,0x86,0x70,0x60,0x20,0x1B,0xBC, + 0xA2,0x06,0xB5,0x60,0x95,0x68,0xCA,0xD0,0xF9,0x86,0x70, + 0x60,0xA5,0x61,0xF0,0xFB,0x06,0x70,0x90,0xF7,0x20,0x6F, + 0xB9,0xD0,0xF2,0x4C,0x38,0xB9,0xA5,0x61,0xF0,0x09,0xA5, + 0x66,0x2A,0xA9,0xFF,0xB0,0x02,0xA9,0x01,0x60,0x20,0x2B, + 0xBC,0x85,0x62,0xA9,0x00,0x85,0x63,0xA2,0x88,0xA5,0x62, + 0x49,0xFF,0x2A,0xA9,0x00,0x85,0x65,0x85,0x64,0x86,0x61, + 0x85,0x70,0x85,0x66,0x4C,0xD2,0xB8,0x46,0x66,0x60,0x85, + 0x24,0x84,0x25,0xA0,0x00,0xB1,0x24,0xC8,0xAA,0xF0,0xC4, + 0xB1,0x24,0x45,0x66,0x30,0xC2,0xE4,0x61,0xD0,0x21,0xB1, + 0x24,0x09,0x80,0xC5,0x62,0xD0,0x19,0xC8,0xB1,0x24,0xC5, + 0x63,0xD0,0x12,0xC8,0xB1,0x24,0xC5,0x64,0xD0,0x0B,0xC8, + 0xA9,0x7F,0xC5,0x70,0xB1,0x24,0xE5,0x65,0xF0,0x28,0xA5, + 0x66,0x90,0x02,0x49,0xFF,0x4C,0x31,0xBC,0xA5,0x61,0xF0, + 0x4A,0x38,0xE9,0xA0,0x24,0x66,0x10,0x09,0xAA,0xA9,0xFF, + 0x85,0x68,0x20,0x4D,0xB9,0x8A,0xA2,0x61,0xC9,0xF9,0x10, + 0x06,0x20,0x99,0xB9,0x84,0x68,0x60,0xA8,0xA5,0x66,0x29, + 0x80,0x46,0x62,0x05,0x62,0x85,0x62,0x20,0xB0,0xB9,0x84, + 0x68,0x60,0xA5,0x61,0xC9,0xA0,0xB0,0x20,0x20,0x9B,0xBC, + 0x84,0x70,0xA5,0x66,0x84,0x66,0x49,0x80,0x2A,0xA9,0xA0, + 0x85,0x61,0xA5,0x65,0x85,0x07,0x4C,0xD2,0xB8,0x85,0x62, + 0x85,0x63,0x85,0x64,0x85,0x65,0xA8,0x60,0xA0,0x00,0xA2, + 0x0A,0x94,0x5D,0xCA,0x10,0xFB,0x90,0x0F,0xC9,0x2D,0xD0, + 0x04,0x86,0x67,0xF0,0x04,0xC9,0x2B,0xD0,0x05,0x20,0x73, + 0x00,0x90,0x5B,0xC9,0x2E,0xF0,0x2E,0xC9,0x45,0xD0,0x30, + 0x20,0x73,0x00,0x90,0x17,0xC9,0xAB,0xF0,0x0E,0xC9,0x2D, + 0xF0,0x0A,0xC9,0xAA,0xF0,0x08,0xC9,0x2B,0xF0,0x04,0xD0, + 0x07,0x66,0x60,0x20,0x73,0x00,0x90,0x5C,0x24,0x60,0x10, + 0x0E,0xA9,0x00,0x38,0xE5,0x5E,0x4C,0x49,0xBD,0x66,0x5F, + 0x24,0x5F,0x50,0xC3,0xA5,0x5E,0x38,0xE5,0x5D,0x85,0x5E, + 0xF0,0x12,0x10,0x09,0x20,0xFE,0xBA,0xE6,0x5E,0xD0,0xF9, + 0xF0,0x07,0x20,0xE2,0xBA,0xC6,0x5E,0xD0,0xF9,0xA5,0x67, + 0x30,0x01,0x60,0x4C,0xB4,0xBF,0x48,0x24,0x5F,0x10,0x02, + 0xE6,0x5D,0x20,0xE2,0xBA,0x68,0x38,0xE9,0x30,0x20,0x7E, + 0xBD,0x4C,0x0A,0xBD,0x48,0x20,0x0C,0xBC,0x68,0x20,0x3C, + 0xBC,0xA5,0x6E,0x45,0x66,0x85,0x6F,0xA6,0x61,0x4C,0x6A, + 0xB8,0xA5,0x5E,0xC9,0x0A,0x90,0x09,0xA9,0x64,0x24,0x60, + 0x30,0x11,0x4C,0x7E,0xB9,0x0A,0x0A,0x18,0x65,0x5E,0x0A, + 0x18,0xA0,0x00,0x71,0x7A,0x38,0xE9,0x30,0x85,0x5E,0x4C, + 0x30,0xBD,0x9B,0x3E,0xBC,0x1F,0xFD,0x9E,0x6E,0x6B,0x27, + 0xFD,0x9E,0x6E,0x6B,0x28,0x00,0xA9,0x71,0xA0,0xA3,0x20, + 0xDA,0xBD,0xA5,0x3A,0xA6,0x39,0x85,0x62,0x86,0x63,0xA2, + 0x90,0x38,0x20,0x49,0xBC,0x20,0xDF,0xBD,0x4C,0x1E,0xAB, + 0xA0,0x01,0xA9,0x20,0x24,0x66,0x10,0x02,0xA9,0x2D,0x99, + 0xFF,0x00,0x85,0x66,0x84,0x71,0xC8,0xA9,0x30,0xA6,0x61, + 0xD0,0x03,0x4C,0x04,0xBF,0xA9,0x00,0xE0,0x80,0xF0,0x02, + 0xB0,0x09,0xA9,0xBD,0xA0,0xBD,0x20,0x28,0xBA,0xA9,0xF7, + 0x85,0x5D,0xA9,0xB8,0xA0,0xBD,0x20,0x5B,0xBC,0xF0,0x1E, + 0x10,0x12,0xA9,0xB3,0xA0,0xBD,0x20,0x5B,0xBC,0xF0,0x02, + 0x10,0x0E,0x20,0xE2,0xBA,0xC6,0x5D,0xD0,0xEE,0x20,0xFE, + 0xBA,0xE6,0x5D,0xD0,0xDC,0x20,0x49,0xB8,0x20,0x9B,0xBC, + 0xA2,0x01,0xA5,0x5D,0x18,0x69,0x0A,0x30,0x09,0xC9,0x0B, + 0xB0,0x06,0x69,0xFF,0xAA,0xA9,0x02,0x38,0xE9,0x02,0x85, + 0x5E,0x86,0x5D,0x8A,0xF0,0x02,0x10,0x13,0xA4,0x71,0xA9, + 0x2E,0xC8,0x99,0xFF,0x00,0x8A,0xF0,0x06,0xA9,0x30,0xC8, + 0x99,0xFF,0x00,0x84,0x71,0xA0,0x00,0xA2,0x80,0xA5,0x65, + 0x18,0x79,0x19,0xBF,0x85,0x65,0xA5,0x64,0x79,0x18,0xBF, + 0x85,0x64,0xA5,0x63,0x79,0x17,0xBF,0x85,0x63,0xA5,0x62, + 0x79,0x16,0xBF,0x85,0x62,0xE8,0xB0,0x04,0x10,0xDE,0x30, + 0x02,0x30,0xDA,0x8A,0x90,0x04,0x49,0xFF,0x69,0x0A,0x69, + 0x2F,0xC8,0xC8,0xC8,0xC8,0x84,0x47,0xA4,0x71,0xC8,0xAA, + 0x29,0x7F,0x99,0xFF,0x00,0xC6,0x5D,0xD0,0x06,0xA9,0x2E, + 0xC8,0x99,0xFF,0x00,0x84,0x71,0xA4,0x47,0x8A,0x49,0xFF, + 0x29,0x80,0xAA,0xC0,0x24,0xF0,0x04,0xC0,0x3C,0xD0,0xA6, + 0xA4,0x71,0xB9,0xFF,0x00,0x88,0xC9,0x30,0xF0,0xF8,0xC9, + 0x2E,0xF0,0x01,0xC8,0xA9,0x2B,0xA6,0x5E,0xF0,0x2E,0x10, + 0x08,0xA9,0x00,0x38,0xE5,0x5E,0xAA,0xA9,0x2D,0x99,0x01, + 0x01,0xA9,0x45,0x99,0x00,0x01,0x8A,0xA2,0x2F,0x38,0xE8, + 0xE9,0x0A,0xB0,0xFB,0x69,0x3A,0x99,0x03,0x01,0x8A,0x99, + 0x02,0x01,0xA9,0x00,0x99,0x04,0x01,0xF0,0x08,0x99,0xFF, + 0x00,0xA9,0x00,0x99,0x00,0x01,0xA9,0x00,0xA0,0x01,0x60, + 0x80,0x00,0x00,0x00,0x00,0xFA,0x0A,0x1F,0x00,0x00,0x98, + 0x96,0x80,0xFF,0xF0,0xBD,0xC0,0x00,0x01,0x86,0xA0,0xFF, + 0xFF,0xD8,0xF0,0x00,0x00,0x03,0xE8,0xFF,0xFF,0xFF,0x9C, + 0x00,0x00,0x00,0x0A,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0x0A, + 0x80,0x00,0x03,0x4B,0xC0,0xFF,0xFF,0x73,0x60,0x00,0x00, + 0x0E,0x10,0xFF,0xFF,0xFD,0xA8,0x00,0x00,0x00,0x3C,0xEC, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x20,0x0C,0xBC, + 0xA9,0x11,0xA0,0xBF,0x20,0xA2,0xBB,0xF0,0x70,0xA5,0x69, + 0xD0,0x03,0x4C,0xF9,0xB8,0xA2,0x4E,0xA0,0x00,0x20,0xD4, + 0xBB,0xA5,0x6E,0x10,0x0F,0x20,0xCC,0xBC,0xA9,0x4E,0xA0, + 0x00,0x20,0x5B,0xBC,0xD0,0x03,0x98,0xA4,0x07,0x20,0xFE, + 0xBB,0x98,0x48,0x20,0xEA,0xB9,0xA9,0x4E,0xA0,0x00,0x20, + 0x28,0xBA,0x20,0xED,0xBF,0x68,0x4A,0x90,0x0A,0xA5,0x61, + 0xF0,0x06,0xA5,0x66,0x49,0xFF,0x85,0x66,0x60,0x81,0x38, + 0xAA,0x3B,0x29,0x07,0x71,0x34,0x58,0x3E,0x56,0x74,0x16, + 0x7E,0xB3,0x1B,0x77,0x2F,0xEE,0xE3,0x85,0x7A,0x1D,0x84, + 0x1C,0x2A,0x7C,0x63,0x59,0x58,0x0A,0x7E,0x75,0xFD,0xE7, + 0xC6,0x80,0x31,0x72,0x18,0x10,0x81,0x00,0x00,0x00,0x00, + 0xA9,0xBF,0xA0,0xBF,0x20,0x28,0xBA,0xA5,0x70,0x69,0x50, + 0x90,0x03,0x20,0x23,0xBC,0x4C,0x00,0xE0, +}; +//file auto-generated from kernal.901227-03.bin by bin2h.exe +const size_t rom_kernal_len = 8192; +const unsigned char rom_kernal[8192]= +{ + 0x85,0x56,0x20,0x0F,0xBC,0xA5,0x61,0xC9,0x88,0x90,0x03, + 0x20,0xD4,0xBA,0x20,0xCC,0xBC,0xA5,0x07,0x18,0x69,0x81, + 0xF0,0xF3,0x38,0xE9,0x01,0x48,0xA2,0x05,0xB5,0x69,0xB4, + 0x61,0x95,0x61,0x94,0x69,0xCA,0x10,0xF5,0xA5,0x56,0x85, + 0x70,0x20,0x53,0xB8,0x20,0xB4,0xBF,0xA9,0xC4,0xA0,0xBF, + 0x20,0x59,0xE0,0xA9,0x00,0x85,0x6F,0x68,0x20,0xB9,0xBA, + 0x60,0x85,0x71,0x84,0x72,0x20,0xCA,0xBB,0xA9,0x57,0x20, + 0x28,0xBA,0x20,0x5D,0xE0,0xA9,0x57,0xA0,0x00,0x4C,0x28, + 0xBA,0x85,0x71,0x84,0x72,0x20,0xC7,0xBB,0xB1,0x71,0x85, + 0x67,0xA4,0x71,0xC8,0x98,0xD0,0x02,0xE6,0x72,0x85,0x71, + 0xA4,0x72,0x20,0x28,0xBA,0xA5,0x71,0xA4,0x72,0x18,0x69, + 0x05,0x90,0x01,0xC8,0x85,0x71,0x84,0x72,0x20,0x67,0xB8, + 0xA9,0x5C,0xA0,0x00,0xC6,0x67,0xD0,0xE4,0x60,0x98,0x35, + 0x44,0x7A,0x00,0x68,0x28,0xB1,0x46,0x00,0x20,0x2B,0xBC, + 0x30,0x37,0xD0,0x20,0x20,0xF3,0xFF,0x86,0x22,0x84,0x23, + 0xA0,0x04,0xB1,0x22,0x85,0x62,0xC8,0xB1,0x22,0x85,0x64, + 0xA0,0x08,0xB1,0x22,0x85,0x63,0xC8,0xB1,0x22,0x85,0x65, + 0x4C,0xE3,0xE0,0xA9,0x8B,0xA0,0x00,0x20,0xA2,0xBB,0xA9, + 0x8D,0xA0,0xE0,0x20,0x28,0xBA,0xA9,0x92,0xA0,0xE0,0x20, + 0x67,0xB8,0xA6,0x65,0xA5,0x62,0x85,0x65,0x86,0x62,0xA6, + 0x63,0xA5,0x64,0x85,0x63,0x86,0x64,0xA9,0x00,0x85,0x66, + 0xA5,0x61,0x85,0x70,0xA9,0x80,0x85,0x61,0x20,0xD7,0xB8, + 0xA2,0x8B,0xA0,0x00,0x4C,0xD4,0xBB,0xC9,0xF0,0xD0,0x07, + 0x84,0x38,0x86,0x37,0x4C,0x63,0xA6,0xAA,0xD0,0x02,0xA2, + 0x1E,0x4C,0x37,0xA4,0x20,0xD2,0xFF,0xB0,0xE8,0x60,0x20, + 0xCF,0xFF,0xB0,0xE2,0x60,0x20,0xAD,0xE4,0xB0,0xDC,0x60, + 0x20,0xC6,0xFF,0xB0,0xD6,0x60,0x20,0xE4,0xFF,0xB0,0xD0, + 0x60,0x20,0x8A,0xAD,0x20,0xF7,0xB7,0xA9,0xE1,0x48,0xA9, + 0x46,0x48,0xAD,0x0F,0x03,0x48,0xAD,0x0C,0x03,0xAE,0x0D, + 0x03,0xAC,0x0E,0x03,0x28,0x6C,0x14,0x00,0x08,0x8D,0x0C, + 0x03,0x8E,0x0D,0x03,0x8C,0x0E,0x03,0x68,0x8D,0x0F,0x03, + 0x60,0x20,0xD4,0xE1,0xA6,0x2D,0xA4,0x2E,0xA9,0x2B,0x20, + 0xD8,0xFF,0xB0,0x95,0x60,0xA9,0x01,0x2C,0xA9,0x00,0x85, + 0x0A,0x20,0xD4,0xE1,0xA5,0x0A,0xA6,0x2B,0xA4,0x2C,0x20, + 0xD5,0xFF,0xB0,0x57,0xA5,0x0A,0xF0,0x17,0xA2,0x1C,0x20, + 0xB7,0xFF,0x29,0x10,0xD0,0x17,0xA5,0x7A,0xC9,0x02,0xF0, + 0x07,0xA9,0x64,0xA0,0xA3,0x4C,0x1E,0xAB,0x60,0x20,0xB7, + 0xFF,0x29,0xBF,0xF0,0x05,0xA2,0x1D,0x4C,0x37,0xA4,0xA5, + 0x7B,0xC9,0x02,0xD0,0x0E,0x86,0x2D,0x84,0x2E,0xA9,0x76, + 0xA0,0xA3,0x20,0x1E,0xAB,0x4C,0x2A,0xA5,0x20,0x8E,0xA6, + 0x20,0x33,0xA5,0x4C,0x77,0xA6,0x20,0x19,0xE2,0x20,0xC0, + 0xFF,0xB0,0x0B,0x60,0x20,0x19,0xE2,0xA5,0x49,0x20,0xC3, + 0xFF,0x90,0xC3,0x4C,0xF9,0xE0,0xA9,0x00,0x20,0xBD,0xFF, + 0xA2,0x01,0xA0,0x00,0x20,0xBA,0xFF,0x20,0x06,0xE2,0x20, + 0x57,0xE2,0x20,0x06,0xE2,0x20,0x00,0xE2,0xA0,0x00,0x86, + 0x49,0x20,0xBA,0xFF,0x20,0x06,0xE2,0x20,0x00,0xE2,0x8A, + 0xA8,0xA6,0x49,0x4C,0xBA,0xFF,0x20,0x0E,0xE2,0x4C,0x9E, + 0xB7,0x20,0x79,0x00,0xD0,0x02,0x68,0x68,0x60,0x20,0xFD, + 0xAE,0x20,0x79,0x00,0xD0,0xF7,0x4C,0x08,0xAF,0xA9,0x00, + 0x20,0xBD,0xFF,0x20,0x11,0xE2,0x20,0x9E,0xB7,0x86,0x49, + 0x8A,0xA2,0x01,0xA0,0x00,0x20,0xBA,0xFF,0x20,0x06,0xE2, + 0x20,0x00,0xE2,0x86,0x4A,0xA0,0x00,0xA5,0x49,0xE0,0x03, + 0x90,0x01,0x88,0x20,0xBA,0xFF,0x20,0x06,0xE2,0x20,0x00, + 0xE2,0x8A,0xA8,0xA6,0x4A,0xA5,0x49,0x20,0xBA,0xFF,0x20, + 0x06,0xE2,0x20,0x0E,0xE2,0x20,0x9E,0xAD,0x20,0xA3,0xB6, + 0xA6,0x22,0xA4,0x23,0x4C,0xBD,0xFF,0xA9,0xE0,0xA0,0xE2, + 0x20,0x67,0xB8,0x20,0x0C,0xBC,0xA9,0xE5,0xA0,0xE2,0xA6, + 0x6E,0x20,0x07,0xBB,0x20,0x0C,0xBC,0x20,0xCC,0xBC,0xA9, + 0x00,0x85,0x6F,0x20,0x53,0xB8,0xA9,0xEA,0xA0,0xE2,0x20, + 0x50,0xB8,0xA5,0x66,0x48,0x10,0x0D,0x20,0x49,0xB8,0xA5, + 0x66,0x30,0x09,0xA5,0x12,0x49,0xFF,0x85,0x12,0x20,0xB4, + 0xBF,0xA9,0xEA,0xA0,0xE2,0x20,0x67,0xB8,0x68,0x10,0x03, + 0x20,0xB4,0xBF,0xA9,0xEF,0xA0,0xE2,0x4C,0x43,0xE0,0x20, + 0xCA,0xBB,0xA9,0x00,0x85,0x12,0x20,0x6B,0xE2,0xA2,0x4E, + 0xA0,0x00,0x20,0xF6,0xE0,0xA9,0x57,0xA0,0x00,0x20,0xA2, + 0xBB,0xA9,0x00,0x85,0x66,0xA5,0x12,0x20,0xDC,0xE2,0xA9, + 0x4E,0xA0,0x00,0x4C,0x0F,0xBB,0x48,0x4C,0x9D,0xE2,0x81, + 0x49,0x0F,0xDA,0xA2,0x83,0x49,0x0F,0xDA,0xA2,0x7F,0x00, + 0x00,0x00,0x00,0x05,0x84,0xE6,0x1A,0x2D,0x1B,0x86,0x28, + 0x07,0xFB,0xF8,0x87,0x99,0x68,0x89,0x01,0x87,0x23,0x35, + 0xDF,0xE1,0x86,0xA5,0x5D,0xE7,0x28,0x83,0x49,0x0F,0xDA, + 0xA2,0xA5,0x66,0x48,0x10,0x03,0x20,0xB4,0xBF,0xA5,0x61, + 0x48,0xC9,0x81,0x90,0x07,0xA9,0xBC,0xA0,0xB9,0x20,0x0F, + 0xBB,0xA9,0x3E,0xA0,0xE3,0x20,0x43,0xE0,0x68,0xC9,0x81, + 0x90,0x07,0xA9,0xE0,0xA0,0xE2,0x20,0x50,0xB8,0x68,0x10, + 0x03,0x4C,0xB4,0xBF,0x60,0x0B,0x76,0xB3,0x83,0xBD,0xD3, + 0x79,0x1E,0xF4,0xA6,0xF5,0x7B,0x83,0xFC,0xB0,0x10,0x7C, + 0x0C,0x1F,0x67,0xCA,0x7C,0xDE,0x53,0xCB,0xC1,0x7D,0x14, + 0x64,0x70,0x4C,0x7D,0xB7,0xEA,0x51,0x7A,0x7D,0x63,0x30, + 0x88,0x7E,0x7E,0x92,0x44,0x99,0x3A,0x7E,0x4C,0xCC,0x91, + 0xC7,0x7F,0xAA,0xAA,0xAA,0x13,0x81,0x00,0x00,0x00,0x00, + 0x20,0xCC,0xFF,0xA9,0x00,0x85,0x13,0x20,0x7A,0xA6,0x58, + 0xA2,0x80,0x6C,0x00,0x03,0x8A,0x30,0x03,0x4C,0x3A,0xA4, + 0x4C,0x74,0xA4,0x20,0x53,0xE4,0x20,0xBF,0xE3,0x20,0x22, + 0xE4,0xA2,0xFB,0x9A,0xD0,0xE4,0xE6,0x7A,0xD0,0x02,0xE6, + 0x7B,0xAD,0x60,0xEA,0xC9,0x3A,0xB0,0x0A,0xC9,0x20,0xF0, + 0xEF,0x38,0xE9,0x30,0x38,0xE9,0xD0,0x60,0x80,0x4F,0xC7, + 0x52,0x58,0xA9,0x4C,0x85,0x54,0x8D,0x10,0x03,0xA9,0x48, + 0xA0,0xB2,0x8D,0x11,0x03,0x8C,0x12,0x03,0xA9,0x91,0xA0, + 0xB3,0x85,0x05,0x84,0x06,0xA9,0xAA,0xA0,0xB1,0x85,0x03, + 0x84,0x04,0xA2,0x1C,0xBD,0xA2,0xE3,0x95,0x73,0xCA,0x10, + 0xF8,0xA9,0x03,0x85,0x53,0xA9,0x00,0x85,0x68,0x85,0x13, + 0x85,0x18,0xA2,0x01,0x8E,0xFD,0x01,0x8E,0xFC,0x01,0xA2, + 0x19,0x86,0x16,0x38,0x20,0x9C,0xFF,0x86,0x2B,0x84,0x2C, + 0x38,0x20,0x99,0xFF,0x86,0x37,0x84,0x38,0x86,0x33,0x84, + 0x34,0xA0,0x00,0x98,0x91,0x2B,0xE6,0x2B,0xD0,0x02,0xE6, + 0x2C,0x60,0xA5,0x2B,0xA4,0x2C,0x20,0x08,0xA4,0xA9,0x73, + 0xA0,0xE4,0x20,0x1E,0xAB,0xA5,0x37,0x38,0xE5,0x2B,0xAA, + 0xA5,0x38,0xE5,0x2C,0x20,0xCD,0xBD,0xA9,0x60,0xA0,0xE4, + 0x20,0x1E,0xAB,0x4C,0x44,0xA6,0x8B,0xE3,0x83,0xA4,0x7C, + 0xA5,0x1A,0xA7,0xE4,0xA7,0x86,0xAE,0xA2,0x0B,0xBD,0x47, + 0xE4,0x9D,0x00,0x03,0xCA,0x10,0xF7,0x60,0x00,0x20,0x42, + 0x41,0x53,0x49,0x43,0x20,0x42,0x59,0x54,0x45,0x53,0x20, + 0x46,0x52,0x45,0x45,0x0D,0x00,0x93,0x0D,0x20,0x20,0x20, + 0x20,0x2A,0x2A,0x2A,0x2A,0x20,0x43,0x4F,0x4D,0x4D,0x4F, + 0x44,0x4F,0x52,0x45,0x20,0x36,0x34,0x20,0x42,0x41,0x53, + 0x49,0x43,0x20,0x56,0x32,0x20,0x2A,0x2A,0x2A,0x2A,0x0D, + 0x0D,0x20,0x36,0x34,0x4B,0x20,0x52,0x41,0x4D,0x20,0x53, + 0x59,0x53,0x54,0x45,0x4D,0x20,0x20,0x00,0x81,0x48,0x20, + 0xC9,0xFF,0xAA,0x68,0x90,0x01,0x8A,0x60,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0x85,0xA9,0xA9,0x01,0x85,0xAB,0x60,0xAD, + 0x86,0x02,0x91,0xF3,0x60,0x69,0x02,0xA4,0x91,0xC8,0xD0, + 0x04,0xC5,0xA1,0xD0,0xF7,0x60,0x19,0x26,0x44,0x19,0x1A, + 0x11,0xE8,0x0D,0x70,0x0C,0x06,0x06,0xD1,0x02,0x37,0x01, + 0xAE,0x00,0x69,0x00,0xA2,0x00,0xA0,0xDC,0x60,0xA2,0x28, + 0xA0,0x19,0x60,0xB0,0x07,0x86,0xD6,0x84,0xD3,0x20,0x6C, + 0xE5,0xA6,0xD6,0xA4,0xD3,0x60,0x20,0xA0,0xE5,0xA9,0x00, + 0x8D,0x91,0x02,0x85,0xCF,0xA9,0x48,0x8D,0x8F,0x02,0xA9, + 0xEB,0x8D,0x90,0x02,0xA9,0x0A,0x8D,0x89,0x02,0x8D,0x8C, + 0x02,0xA9,0x0E,0x8D,0x86,0x02,0xA9,0x04,0x8D,0x8B,0x02, + 0xA9,0x0C,0x85,0xCD,0x85,0xCC,0xAD,0x88,0x02,0x09,0x80, + 0xA8,0xA9,0x00,0xAA,0x94,0xD9,0x18,0x69,0x28,0x90,0x01, + 0xC8,0xE8,0xE0,0x1A,0xD0,0xF3,0xA9,0xFF,0x95,0xD9,0xA2, + 0x18,0x20,0xFF,0xE9,0xCA,0x10,0xFA,0xA0,0x00,0x84,0xD3, + 0x84,0xD6,0xA6,0xD6,0xA5,0xD3,0xB4,0xD9,0x30,0x08,0x18, + 0x69,0x28,0x85,0xD3,0xCA,0x10,0xF4,0x20,0xF0,0xE9,0xA9, + 0x27,0xE8,0xB4,0xD9,0x30,0x06,0x18,0x69,0x28,0xE8,0x10, + 0xF6,0x85,0xD5,0x4C,0x24,0xEA,0xE4,0xC9,0xF0,0x03,0x4C, + 0xED,0xE6,0x60,0xEA,0x20,0xA0,0xE5,0x4C,0x66,0xE5,0xA9, + 0x03,0x85,0x9A,0xA9,0x00,0x85,0x99,0xA2,0x2F,0xBD,0xB8, + 0xEC,0x9D,0xFF,0xCF,0xCA,0xD0,0xF7,0x60,0xAC,0x77,0x02, + 0xA2,0x00,0xBD,0x78,0x02,0x9D,0x77,0x02,0xE8,0xE4,0xC6, + 0xD0,0xF5,0xC6,0xC6,0x98,0x58,0x18,0x60,0x20,0x16,0xE7, + 0xA5,0xC6,0x85,0xCC,0x8D,0x92,0x02,0xF0,0xF7,0x78,0xA5, + 0xCF,0xF0,0x0C,0xA5,0xCE,0xAE,0x87,0x02,0xA0,0x00,0x84, + 0xCF,0x20,0x13,0xEA,0x20,0xB4,0xE5,0xC9,0x83,0xD0,0x10, + 0xA2,0x09,0x78,0x86,0xC6,0xBD,0xE6,0xEC,0x9D,0x76,0x02, + 0xCA,0xD0,0xF7,0xF0,0xCF,0xC9,0x0D,0xD0,0xC8,0xA4,0xD5, + 0x84,0xD0,0xB1,0xD1,0xC9,0x20,0xD0,0x03,0x88,0xD0,0xF7, + 0xC8,0x84,0xC8,0xA0,0x00,0x8C,0x92,0x02,0x84,0xD3,0x84, + 0xD4,0xA5,0xC9,0x30,0x1B,0xA6,0xD6,0x20,0x91,0xE5,0xE4, + 0xC9,0xD0,0x12,0xA5,0xCA,0x85,0xD3,0xC5,0xC8,0x90,0x0A, + 0xB0,0x2B,0x98,0x48,0x8A,0x48,0xA5,0xD0,0xF0,0x93,0xA4, + 0xD3,0xB1,0xD1,0x85,0xD7,0x29,0x3F,0x06,0xD7,0x24,0xD7, + 0x10,0x02,0x09,0x80,0x90,0x04,0xA6,0xD4,0xD0,0x04,0x70, + 0x02,0x09,0x40,0xE6,0xD3,0x20,0x84,0xE6,0xC4,0xC8,0xD0, + 0x17,0xA9,0x00,0x85,0xD0,0xA9,0x0D,0xA6,0x99,0xE0,0x03, + 0xF0,0x06,0xA6,0x9A,0xE0,0x03,0xF0,0x03,0x20,0x16,0xE7, + 0xA9,0x0D,0x85,0xD7,0x68,0xAA,0x68,0xA8,0xA5,0xD7,0xC9, + 0xDE,0xD0,0x02,0xA9,0xFF,0x18,0x60,0xC9,0x22,0xD0,0x08, + 0xA5,0xD4,0x49,0x01,0x85,0xD4,0xA9,0x22,0x60,0x09,0x40, + 0xA6,0xC7,0xF0,0x02,0x09,0x80,0xA6,0xD8,0xF0,0x02,0xC6, + 0xD8,0xAE,0x86,0x02,0x20,0x13,0xEA,0x20,0xB6,0xE6,0x68, + 0xA8,0xA5,0xD8,0xF0,0x02,0x46,0xD4,0x68,0xAA,0x68,0x18, + 0x58,0x60,0x20,0xB3,0xE8,0xE6,0xD3,0xA5,0xD5,0xC5,0xD3, + 0xB0,0x3F,0xC9,0x4F,0xF0,0x32,0xAD,0x92,0x02,0xF0,0x03, + 0x4C,0x67,0xE9,0xA6,0xD6,0xE0,0x19,0x90,0x07,0x20,0xEA, + 0xE8,0xC6,0xD6,0xA6,0xD6,0x16,0xD9,0x56,0xD9,0xE8,0xB5, + 0xD9,0x09,0x80,0x95,0xD9,0xCA,0xA5,0xD5,0x18,0x69,0x28, + 0x85,0xD5,0xB5,0xD9,0x30,0x03,0xCA,0xD0,0xF9,0x4C,0xF0, + 0xE9,0xC6,0xD6,0x20,0x7C,0xE8,0xA9,0x00,0x85,0xD3,0x60, + 0xA6,0xD6,0xD0,0x06,0x86,0xD3,0x68,0x68,0xD0,0x9D,0xCA, + 0x86,0xD6,0x20,0x6C,0xE5,0xA4,0xD5,0x84,0xD3,0x60,0x48, + 0x85,0xD7,0x8A,0x48,0x98,0x48,0xA9,0x00,0x85,0xD0,0xA4, + 0xD3,0xA5,0xD7,0x10,0x03,0x4C,0xD4,0xE7,0xC9,0x0D,0xD0, + 0x03,0x4C,0x91,0xE8,0xC9,0x20,0x90,0x10,0xC9,0x60,0x90, + 0x04,0x29,0xDF,0xD0,0x02,0x29,0x3F,0x20,0x84,0xE6,0x4C, + 0x93,0xE6,0xA6,0xD8,0xF0,0x03,0x4C,0x97,0xE6,0xC9,0x14, + 0xD0,0x2E,0x98,0xD0,0x06,0x20,0x01,0xE7,0x4C,0x73,0xE7, + 0x20,0xA1,0xE8,0x88,0x84,0xD3,0x20,0x24,0xEA,0xC8,0xB1, + 0xD1,0x88,0x91,0xD1,0xC8,0xB1,0xF3,0x88,0x91,0xF3,0xC8, + 0xC4,0xD5,0xD0,0xEF,0xA9,0x20,0x91,0xD1,0xAD,0x86,0x02, + 0x91,0xF3,0x10,0x4D,0xA6,0xD4,0xF0,0x03,0x4C,0x97,0xE6, + 0xC9,0x12,0xD0,0x02,0x85,0xC7,0xC9,0x13,0xD0,0x03,0x20, + 0x66,0xE5,0xC9,0x1D,0xD0,0x17,0xC8,0x20,0xB3,0xE8,0x84, + 0xD3,0x88,0xC4,0xD5,0x90,0x09,0xC6,0xD6,0x20,0x7C,0xE8, + 0xA0,0x00,0x84,0xD3,0x4C,0xA8,0xE6,0xC9,0x11,0xD0,0x1D, + 0x18,0x98,0x69,0x28,0xA8,0xE6,0xD6,0xC5,0xD5,0x90,0xEC, + 0xF0,0xEA,0xC6,0xD6,0xE9,0x28,0x90,0x04,0x85,0xD3,0xD0, + 0xF8,0x20,0x7C,0xE8,0x4C,0xA8,0xE6,0x20,0xCB,0xE8,0x4C, + 0x44,0xEC,0x29,0x7F,0xC9,0x7F,0xD0,0x02,0xA9,0x5E,0xC9, + 0x20,0x90,0x03,0x4C,0x91,0xE6,0xC9,0x0D,0xD0,0x03,0x4C, + 0x91,0xE8,0xA6,0xD4,0xD0,0x3F,0xC9,0x14,0xD0,0x37,0xA4, + 0xD5,0xB1,0xD1,0xC9,0x20,0xD0,0x04,0xC4,0xD3,0xD0,0x07, + 0xC0,0x4F,0xF0,0x24,0x20,0x65,0xE9,0xA4,0xD5,0x20,0x24, + 0xEA,0x88,0xB1,0xD1,0xC8,0x91,0xD1,0x88,0xB1,0xF3,0xC8, + 0x91,0xF3,0x88,0xC4,0xD3,0xD0,0xEF,0xA9,0x20,0x91,0xD1, + 0xAD,0x86,0x02,0x91,0xF3,0xE6,0xD8,0x4C,0xA8,0xE6,0xA6, + 0xD8,0xF0,0x05,0x09,0x40,0x4C,0x97,0xE6,0xC9,0x11,0xD0, + 0x16,0xA6,0xD6,0xF0,0x37,0xC6,0xD6,0xA5,0xD3,0x38,0xE9, + 0x28,0x90,0x04,0x85,0xD3,0x10,0x2A,0x20,0x6C,0xE5,0xD0, + 0x25,0xC9,0x12,0xD0,0x04,0xA9,0x00,0x85,0xC7,0xC9,0x1D, + 0xD0,0x12,0x98,0xF0,0x09,0x20,0xA1,0xE8,0x88,0x84,0xD3, + 0x4C,0xA8,0xE6,0x20,0x01,0xE7,0x4C,0xA8,0xE6,0xC9,0x13, + 0xD0,0x06,0x20,0x44,0xE5,0x4C,0xA8,0xE6,0x09,0x80,0x20, + 0xCB,0xE8,0x4C,0x4F,0xEC,0x46,0xC9,0xA6,0xD6,0xE8,0xE0, + 0x19,0xD0,0x03,0x20,0xEA,0xE8,0xB5,0xD9,0x10,0xF4,0x86, + 0xD6,0x4C,0x6C,0xE5,0xA2,0x00,0x86,0xD8,0x86,0xC7,0x86, + 0xD4,0x86,0xD3,0x20,0x7C,0xE8,0x4C,0xA8,0xE6,0xA2,0x02, + 0xA9,0x00,0xC5,0xD3,0xF0,0x07,0x18,0x69,0x28,0xCA,0xD0, + 0xF6,0x60,0xC6,0xD6,0x60,0xA2,0x02,0xA9,0x27,0xC5,0xD3, + 0xF0,0x07,0x18,0x69,0x28,0xCA,0xD0,0xF6,0x60,0xA6,0xD6, + 0xE0,0x19,0xF0,0x02,0xE6,0xD6,0x60,0xA2,0x0F,0xDD,0xDA, + 0xE8,0xF0,0x04,0xCA,0x10,0xF8,0x60,0x8E,0x86,0x02,0x60, + 0x90,0x05,0x1C,0x9F,0x9C,0x1E,0x1F,0x9E,0x81,0x95,0x96, + 0x97,0x98,0x99,0x9A,0x9B,0xA5,0xAC,0x48,0xA5,0xAD,0x48, + 0xA5,0xAE,0x48,0xA5,0xAF,0x48,0xA2,0xFF,0xC6,0xD6,0xC6, + 0xC9,0xCE,0xA5,0x02,0xE8,0x20,0xF0,0xE9,0xE0,0x18,0xB0, + 0x0C,0xBD,0xF1,0xEC,0x85,0xAC,0xB5,0xDA,0x20,0xC8,0xE9, + 0x30,0xEC,0x20,0xFF,0xE9,0xA2,0x00,0xB5,0xD9,0x29,0x7F, + 0xB4,0xDA,0x10,0x02,0x09,0x80,0x95,0xD9,0xE8,0xE0,0x18, + 0xD0,0xEF,0xA5,0xF1,0x09,0x80,0x85,0xF1,0xA5,0xD9,0x10, + 0xC3,0xE6,0xD6,0xEE,0xA5,0x02,0xA9,0x7F,0x8D,0x00,0xDC, + 0xAD,0x01,0xDC,0xC9,0xFB,0x08,0xA9,0x7F,0x8D,0x00,0xDC, + 0x28,0xD0,0x0B,0xA0,0x00,0xEA,0xCA,0xD0,0xFC,0x88,0xD0, + 0xF9,0x84,0xC6,0xA6,0xD6,0x68,0x85,0xAF,0x68,0x85,0xAE, + 0x68,0x85,0xAD,0x68,0x85,0xAC,0x60,0xA6,0xD6,0xE8,0xB5, + 0xD9,0x10,0xFB,0x8E,0xA5,0x02,0xE0,0x18,0xF0,0x0E,0x90, + 0x0C,0x20,0xEA,0xE8,0xAE,0xA5,0x02,0xCA,0xC6,0xD6,0x4C, + 0xDA,0xE6,0xA5,0xAC,0x48,0xA5,0xAD,0x48,0xA5,0xAE,0x48, + 0xA5,0xAF,0x48,0xA2,0x19,0xCA,0x20,0xF0,0xE9,0xEC,0xA5, + 0x02,0x90,0x0E,0xF0,0x0C,0xBD,0xEF,0xEC,0x85,0xAC,0xB5, + 0xD8,0x20,0xC8,0xE9,0x30,0xE9,0x20,0xFF,0xE9,0xA2,0x17, + 0xEC,0xA5,0x02,0x90,0x0F,0xB5,0xDA,0x29,0x7F,0xB4,0xD9, + 0x10,0x02,0x09,0x80,0x95,0xDA,0xCA,0xD0,0xEC,0xAE,0xA5, + 0x02,0x20,0xDA,0xE6,0x4C,0x58,0xE9,0x29,0x03,0x0D,0x88, + 0x02,0x85,0xAD,0x20,0xE0,0xE9,0xA0,0x27,0xB1,0xAC,0x91, + 0xD1,0xB1,0xAE,0x91,0xF3,0x88,0x10,0xF5,0x60,0x20,0x24, + 0xEA,0xA5,0xAC,0x85,0xAE,0xA5,0xAD,0x29,0x03,0x09,0xD8, + 0x85,0xAF,0x60,0xBD,0xF0,0xEC,0x85,0xD1,0xB5,0xD9,0x29, + 0x03,0x0D,0x88,0x02,0x85,0xD2,0x60,0xA0,0x27,0x20,0xF0, + 0xE9,0x20,0x24,0xEA,0x20,0xDA,0xE4,0xA9,0x20,0x91,0xD1, + 0x88,0x10,0xF6,0x60,0xEA,0xA8,0xA9,0x02,0x85,0xCD,0x20, + 0x24,0xEA,0x98,0xA4,0xD3,0x91,0xD1,0x8A,0x91,0xF3,0x60, + 0xA5,0xD1,0x85,0xF3,0xA5,0xD2,0x29,0x03,0x09,0xD8,0x85, + 0xF4,0x60,0x20,0xEA,0xFF,0xA5,0xCC,0xD0,0x29,0xC6,0xCD, + 0xD0,0x25,0xA9,0x14,0x85,0xCD,0xA4,0xD3,0x46,0xCF,0xAE, + 0x87,0x02,0xB1,0xD1,0xB0,0x11,0xE6,0xCF,0x85,0xCE,0x20, + 0x24,0xEA,0xB1,0xF3,0x8D,0x87,0x02,0xAE,0x86,0x02,0xA5, + 0xCE,0x49,0x80,0x20,0x1C,0xEA,0xA5,0x01,0x29,0x10,0xF0, + 0x0A,0xA0,0x00,0x84,0xC0,0xA5,0x01,0x09,0x20,0xD0,0x08, + 0xA5,0xC0,0xD0,0x06,0xA5,0x01,0x29,0x1F,0x85,0x01,0x20, + 0x87,0xEA,0xAD,0x0D,0xDC,0x68,0xA8,0x68,0xAA,0x68,0x40, + 0xA9,0x00,0x8D,0x8D,0x02,0xA0,0x40,0x84,0xCB,0x8D,0x00, + 0xDC,0xAE,0x01,0xDC,0xE0,0xFF,0xF0,0x61,0xA8,0xA9,0x81, + 0x85,0xF5,0xA9,0xEB,0x85,0xF6,0xA9,0xFE,0x8D,0x00,0xDC, + 0xA2,0x08,0x48,0xAD,0x01,0xDC,0xCD,0x01,0xDC,0xD0,0xF8, + 0x4A,0xB0,0x16,0x48,0xB1,0xF5,0xC9,0x05,0xB0,0x0C,0xC9, + 0x03,0xF0,0x08,0x0D,0x8D,0x02,0x8D,0x8D,0x02,0x10,0x02, + 0x84,0xCB,0x68,0xC8,0xC0,0x41,0xB0,0x0B,0xCA,0xD0,0xDF, + 0x38,0x68,0x2A,0x8D,0x00,0xDC,0xD0,0xCC,0x68,0x6C,0x8F, + 0x02,0xA4,0xCB,0xB1,0xF5,0xAA,0xC4,0xC5,0xF0,0x07,0xA0, + 0x10,0x8C,0x8C,0x02,0xD0,0x36,0x29,0x7F,0x2C,0x8A,0x02, + 0x30,0x16,0x70,0x49,0xC9,0x7F,0xF0,0x29,0xC9,0x14,0xF0, + 0x0C,0xC9,0x20,0xF0,0x08,0xC9,0x1D,0xF0,0x04,0xC9,0x11, + 0xD0,0x35,0xAC,0x8C,0x02,0xF0,0x05,0xCE,0x8C,0x02,0xD0, + 0x2B,0xCE,0x8B,0x02,0xD0,0x26,0xA0,0x04,0x8C,0x8B,0x02, + 0xA4,0xC6,0x88,0x10,0x1C,0xA4,0xCB,0x84,0xC5,0xAC,0x8D, + 0x02,0x8C,0x8E,0x02,0xE0,0xFF,0xF0,0x0E,0x8A,0xA6,0xC6, + 0xEC,0x89,0x02,0xB0,0x06,0x9D,0x77,0x02,0xE8,0x86,0xC6, + 0xA9,0x7F,0x8D,0x00,0xDC,0x60,0xAD,0x8D,0x02,0xC9,0x03, + 0xD0,0x15,0xCD,0x8E,0x02,0xF0,0xEE,0xAD,0x91,0x02,0x30, + 0x1D,0xAD,0x18,0xD0,0x49,0x02,0x8D,0x18,0xD0,0x4C,0x76, + 0xEB,0x0A,0xC9,0x08,0x90,0x02,0xA9,0x06,0xAA,0xBD,0x79, + 0xEB,0x85,0xF5,0xBD,0x7A,0xEB,0x85,0xF6,0x4C,0xE0,0xEA, + 0x81,0xEB,0xC2,0xEB,0x03,0xEC,0x78,0xEC,0x14,0x0D,0x1D, + 0x88,0x85,0x86,0x87,0x11,0x33,0x57,0x41,0x34,0x5A,0x53, + 0x45,0x01,0x35,0x52,0x44,0x36,0x43,0x46,0x54,0x58,0x37, + 0x59,0x47,0x38,0x42,0x48,0x55,0x56,0x39,0x49,0x4A,0x30, + 0x4D,0x4B,0x4F,0x4E,0x2B,0x50,0x4C,0x2D,0x2E,0x3A,0x40, + 0x2C,0x5C,0x2A,0x3B,0x13,0x01,0x3D,0x5E,0x2F,0x31,0x5F, + 0x04,0x32,0x20,0x02,0x51,0x03,0xFF,0x94,0x8D,0x9D,0x8C, + 0x89,0x8A,0x8B,0x91,0x23,0xD7,0xC1,0x24,0xDA,0xD3,0xC5, + 0x01,0x25,0xD2,0xC4,0x26,0xC3,0xC6,0xD4,0xD8,0x27,0xD9, + 0xC7,0x28,0xC2,0xC8,0xD5,0xD6,0x29,0xC9,0xCA,0x30,0xCD, + 0xCB,0xCF,0xCE,0xDB,0xD0,0xCC,0xDD,0x3E,0x5B,0xBA,0x3C, + 0xA9,0xC0,0x5D,0x93,0x01,0x3D,0xDE,0x3F,0x21,0x5F,0x04, + 0x22,0xA0,0x02,0xD1,0x83,0xFF,0x94,0x8D,0x9D,0x8C,0x89, + 0x8A,0x8B,0x91,0x96,0xB3,0xB0,0x97,0xAD,0xAE,0xB1,0x01, + 0x98,0xB2,0xAC,0x99,0xBC,0xBB,0xA3,0xBD,0x9A,0xB7,0xA5, + 0x9B,0xBF,0xB4,0xB8,0xBE,0x29,0xA2,0xB5,0x30,0xA7,0xA1, + 0xB9,0xAA,0xA6,0xAF,0xB6,0xDC,0x3E,0x5B,0xA4,0x3C,0xA8, + 0xDF,0x5D,0x93,0x01,0x3D,0xDE,0x3F,0x81,0x5F,0x04,0x95, + 0xA0,0x02,0xAB,0x83,0xFF,0xC9,0x0E,0xD0,0x07,0xAD,0x18, + 0xD0,0x09,0x02,0xD0,0x09,0xC9,0x8E,0xD0,0x0B,0xAD,0x18, + 0xD0,0x29,0xFD,0x8D,0x18,0xD0,0x4C,0xA8,0xE6,0xC9,0x08, + 0xD0,0x07,0xA9,0x80,0x0D,0x91,0x02,0x30,0x09,0xC9,0x09, + 0xD0,0xEE,0xA9,0x7F,0x2D,0x91,0x02,0x8D,0x91,0x02,0x4C, + 0xA8,0xE6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1C, + 0x17,0x01,0x9F,0x1A,0x13,0x05,0xFF,0x9C,0x12,0x04,0x1E, + 0x03,0x06,0x14,0x18,0x1F,0x19,0x07,0x9E,0x02,0x08,0x15, + 0x16,0x12,0x09,0x0A,0x92,0x0D,0x0B,0x0F,0x0E,0xFF,0x10, + 0x0C,0xFF,0xFF,0x1B,0x00,0xFF,0x1C,0xFF,0x1D,0xFF,0xFF, + 0x1F,0x1E,0xFF,0x90,0x06,0xFF,0x05,0xFF,0xFF,0x11,0xFF, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9B,0x37,0x00,0x00, + 0x00,0x08,0x00,0x14,0x0F,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0E,0x06,0x01,0x02,0x03,0x04,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x4C,0x4F,0x41,0x44,0x0D,0x52,0x55,0x4E, + 0x0D,0x00,0x28,0x50,0x78,0xA0,0xC8,0xF0,0x18,0x40,0x68, + 0x90,0xB8,0xE0,0x08,0x30,0x58,0x80,0xA8,0xD0,0xF8,0x20, + 0x48,0x70,0x98,0xC0,0x09,0x40,0x2C,0x09,0x20,0x20,0xA4, + 0xF0,0x48,0x24,0x94,0x10,0x0A,0x38,0x66,0xA3,0x20,0x40, + 0xED,0x46,0x94,0x46,0xA3,0x68,0x85,0x95,0x78,0x20,0x97, + 0xEE,0xC9,0x3F,0xD0,0x03,0x20,0x85,0xEE,0xAD,0x00,0xDD, + 0x09,0x08,0x8D,0x00,0xDD,0x78,0x20,0x8E,0xEE,0x20,0x97, + 0xEE,0x20,0xB3,0xEE,0x78,0x20,0x97,0xEE,0x20,0xA9,0xEE, + 0xB0,0x64,0x20,0x85,0xEE,0x24,0xA3,0x10,0x0A,0x20,0xA9, + 0xEE,0x90,0xFB,0x20,0xA9,0xEE,0xB0,0xFB,0x20,0xA9,0xEE, + 0x90,0xFB,0x20,0x8E,0xEE,0xA9,0x08,0x85,0xA5,0xAD,0x00, + 0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A,0x90,0x3F,0x66,0x95, + 0xB0,0x05,0x20,0xA0,0xEE,0xD0,0x03,0x20,0x97,0xEE,0x20, + 0x85,0xEE,0xEA,0xEA,0xEA,0xEA,0xAD,0x00,0xDD,0x29,0xDF, + 0x09,0x10,0x8D,0x00,0xDD,0xC6,0xA5,0xD0,0xD4,0xA9,0x04, + 0x8D,0x07,0xDC,0xA9,0x19,0x8D,0x0F,0xDC,0xAD,0x0D,0xDC, + 0xAD,0x0D,0xDC,0x29,0x02,0xD0,0x0A,0x20,0xA9,0xEE,0xB0, + 0xF4,0x58,0x60,0xA9,0x80,0x2C,0xA9,0x03,0x20,0x1C,0xFE, + 0x58,0x18,0x90,0x4A,0x85,0x95,0x20,0x36,0xED,0xAD,0x00, + 0xDD,0x29,0xF7,0x8D,0x00,0xDD,0x60,0x85,0x95,0x20,0x36, + 0xED,0x78,0x20,0xA0,0xEE,0x20,0xBE,0xED,0x20,0x85,0xEE, + 0x20,0xA9,0xEE,0x30,0xFB,0x58,0x60,0x24,0x94,0x30,0x05, + 0x38,0x66,0x94,0xD0,0x05,0x48,0x20,0x40,0xED,0x68,0x85, + 0x95,0x18,0x60,0x78,0x20,0x8E,0xEE,0xAD,0x00,0xDD,0x09, + 0x08,0x8D,0x00,0xDD,0xA9,0x5F,0x2C,0xA9,0x3F,0x20,0x11, + 0xED,0x20,0xBE,0xED,0x8A,0xA2,0x0A,0xCA,0xD0,0xFD,0xAA, + 0x20,0x85,0xEE,0x4C,0x97,0xEE,0x78,0xA9,0x00,0x85,0xA5, + 0x20,0x85,0xEE,0x20,0xA9,0xEE,0x10,0xFB,0xA9,0x01,0x8D, + 0x07,0xDC,0xA9,0x19,0x8D,0x0F,0xDC,0x20,0x97,0xEE,0xAD, + 0x0D,0xDC,0xAD,0x0D,0xDC,0x29,0x02,0xD0,0x07,0x20,0xA9, + 0xEE,0x30,0xF4,0x10,0x18,0xA5,0xA5,0xF0,0x05,0xA9,0x02, + 0x4C,0xB2,0xED,0x20,0xA0,0xEE,0x20,0x85,0xEE,0xA9,0x40, + 0x20,0x1C,0xFE,0xE6,0xA5,0xD0,0xCA,0xA9,0x08,0x85,0xA5, + 0xAD,0x00,0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A,0x10,0xF5, + 0x66,0xA4,0xAD,0x00,0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A, + 0x30,0xF5,0xC6,0xA5,0xD0,0xE4,0x20,0xA0,0xEE,0x24,0x90, + 0x50,0x03,0x20,0x06,0xEE,0xA5,0xA4,0x58,0x18,0x60,0xAD, + 0x00,0xDD,0x29,0xEF,0x8D,0x00,0xDD,0x60,0xAD,0x00,0xDD, + 0x09,0x10,0x8D,0x00,0xDD,0x60,0xAD,0x00,0xDD,0x29,0xDF, + 0x8D,0x00,0xDD,0x60,0xAD,0x00,0xDD,0x09,0x20,0x8D,0x00, + 0xDD,0x60,0xAD,0x00,0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A, + 0x60,0x8A,0xA2,0xB8,0xCA,0xD0,0xFD,0xAA,0x60,0xA5,0xB4, + 0xF0,0x47,0x30,0x3F,0x46,0xB6,0xA2,0x00,0x90,0x01,0xCA, + 0x8A,0x45,0xBD,0x85,0xBD,0xC6,0xB4,0xF0,0x06,0x8A,0x29, + 0x04,0x85,0xB5,0x60,0xA9,0x20,0x2C,0x94,0x02,0xF0,0x14, + 0x30,0x1C,0x70,0x14,0xA5,0xBD,0xD0,0x01,0xCA,0xC6,0xB4, + 0xAD,0x93,0x02,0x10,0xE3,0xC6,0xB4,0xD0,0xDF,0xE6,0xB4, + 0xD0,0xF0,0xA5,0xBD,0xF0,0xED,0xD0,0xEA,0x70,0xE9,0x50, + 0xE6,0xE6,0xB4,0xA2,0xFF,0xD0,0xCB,0xAD,0x94,0x02,0x4A, + 0x90,0x07,0x2C,0x01,0xDD,0x10,0x1D,0x50,0x1E,0xA9,0x00, + 0x85,0xBD,0x85,0xB5,0xAE,0x98,0x02,0x86,0xB4,0xAC,0x9D, + 0x02,0xCC,0x9E,0x02,0xF0,0x13,0xB1,0xF9,0x85,0xB6,0xEE, + 0x9D,0x02,0x60,0xA9,0x40,0x2C,0xA9,0x10,0x0D,0x97,0x02, + 0x8D,0x97,0x02,0xA9,0x01,0x8D,0x0D,0xDD,0x4D,0xA1,0x02, + 0x09,0x80,0x8D,0xA1,0x02,0x8D,0x0D,0xDD,0x60,0xA2,0x09, + 0xA9,0x20,0x2C,0x93,0x02,0xF0,0x01,0xCA,0x50,0x02,0xCA, + 0xCA,0x60,0xA6,0xA9,0xD0,0x33,0xC6,0xA8,0xF0,0x36,0x30, + 0x0D,0xA5,0xA7,0x45,0xAB,0x85,0xAB,0x46,0xA7,0x66,0xAA, + 0x60,0xC6,0xA8,0xA5,0xA7,0xF0,0x67,0xAD,0x93,0x02,0x0A, + 0xA9,0x01,0x65,0xA8,0xD0,0xEF,0xA9,0x90,0x8D,0x0D,0xDD, + 0x0D,0xA1,0x02,0x8D,0xA1,0x02,0x85,0xA9,0xA9,0x02,0x4C, + 0x3B,0xEF,0xA5,0xA7,0xD0,0xEA,0x4C,0xD3,0xE4,0xAC,0x9B, + 0x02,0xC8,0xCC,0x9C,0x02,0xF0,0x2A,0x8C,0x9B,0x02,0x88, + 0xA5,0xAA,0xAE,0x98,0x02,0xE0,0x09,0xF0,0x04,0x4A,0xE8, + 0xD0,0xF8,0x91,0xF7,0xA9,0x20,0x2C,0x94,0x02,0xF0,0xB4, + 0x30,0xB1,0xA5,0xA7,0x45,0xAB,0xF0,0x03,0x70,0xA9,0x2C, + 0x50,0xA6,0xA9,0x01,0x2C,0xA9,0x04,0x2C,0xA9,0x80,0x2C, + 0xA9,0x02,0x0D,0x97,0x02,0x8D,0x97,0x02,0x4C,0x7E,0xEF, + 0xA5,0xAA,0xD0,0xF1,0xF0,0xEC,0x85,0x9A,0xAD,0x94,0x02, + 0x4A,0x90,0x29,0xA9,0x02,0x2C,0x01,0xDD,0x10,0x1D,0xD0, + 0x20,0xAD,0xA1,0x02,0x29,0x02,0xD0,0xF9,0x2C,0x01,0xDD, + 0x70,0xFB,0xAD,0x01,0xDD,0x09,0x02,0x8D,0x01,0xDD,0x2C, + 0x01,0xDD,0x70,0x07,0x30,0xF9,0xA9,0x40,0x8D,0x97,0x02, + 0x18,0x60,0x20,0x28,0xF0,0xAC,0x9E,0x02,0xC8,0xCC,0x9D, + 0x02,0xF0,0xF4,0x8C,0x9E,0x02,0x88,0xA5,0x9E,0x91,0xF9, + 0xAD,0xA1,0x02,0x4A,0xB0,0x1E,0xA9,0x10,0x8D,0x0E,0xDD, + 0xAD,0x99,0x02,0x8D,0x04,0xDD,0xAD,0x9A,0x02,0x8D,0x05, + 0xDD,0xA9,0x81,0x20,0x3B,0xEF,0x20,0x06,0xEF,0xA9,0x11, + 0x8D,0x0E,0xDD,0x60,0x85,0x99,0xAD,0x94,0x02,0x4A,0x90, + 0x28,0x29,0x08,0xF0,0x24,0xA9,0x02,0x2C,0x01,0xDD,0x10, + 0xAD,0xF0,0x22,0xAD,0xA1,0x02,0x4A,0xB0,0xFA,0xAD,0x01, + 0xDD,0x29,0xFD,0x8D,0x01,0xDD,0xAD,0x01,0xDD,0x29,0x04, + 0xF0,0xF9,0xA9,0x90,0x18,0x4C,0x3B,0xEF,0xAD,0xA1,0x02, + 0x29,0x12,0xF0,0xF3,0x18,0x60,0xAD,0x97,0x02,0xAC,0x9C, + 0x02,0xCC,0x9B,0x02,0xF0,0x0B,0x29,0xF7,0x8D,0x97,0x02, + 0xB1,0xF7,0xEE,0x9C,0x02,0x60,0x09,0x08,0x8D,0x97,0x02, + 0xA9,0x00,0x60,0x48,0xAD,0xA1,0x02,0xF0,0x11,0xAD,0xA1, + 0x02,0x29,0x03,0xD0,0xF9,0xA9,0x10,0x8D,0x0D,0xDD,0xA9, + 0x00,0x8D,0xA1,0x02,0x68,0x60,0x0D,0x49,0x2F,0x4F,0x20, + 0x45,0x52,0x52,0x4F,0x52,0x20,0xA3,0x0D,0x53,0x45,0x41, + 0x52,0x43,0x48,0x49,0x4E,0x47,0xA0,0x46,0x4F,0x52,0xA0, + 0x0D,0x50,0x52,0x45,0x53,0x53,0x20,0x50,0x4C,0x41,0x59, + 0x20,0x4F,0x4E,0x20,0x54,0x41,0x50,0xC5,0x50,0x52,0x45, + 0x53,0x53,0x20,0x52,0x45,0x43,0x4F,0x52,0x44,0x20,0x26, + 0x20,0x50,0x4C,0x41,0x59,0x20,0x4F,0x4E,0x20,0x54,0x41, + 0x50,0xC5,0x0D,0x4C,0x4F,0x41,0x44,0x49,0x4E,0xC7,0x0D, + 0x53,0x41,0x56,0x49,0x4E,0x47,0xA0,0x0D,0x56,0x45,0x52, + 0x49,0x46,0x59,0x49,0x4E,0xC7,0x0D,0x46,0x4F,0x55,0x4E, + 0x44,0xA0,0x0D,0x4F,0x4B,0x8D,0x24,0x9D,0x10,0x0D,0xB9, + 0xBD,0xF0,0x08,0x29,0x7F,0x20,0xD2,0xFF,0xC8,0x28,0x10, + 0xF3,0x18,0x60,0xA5,0x99,0xD0,0x08,0xA5,0xC6,0xF0,0x0F, + 0x78,0x4C,0xB4,0xE5,0xC9,0x02,0xD0,0x18,0x84,0x97,0x20, + 0x86,0xF0,0xA4,0x97,0x18,0x60,0xA5,0x99,0xD0,0x0B,0xA5, + 0xD3,0x85,0xCA,0xA5,0xD6,0x85,0xC9,0x4C,0x32,0xE6,0xC9, + 0x03,0xD0,0x09,0x85,0xD0,0xA5,0xD5,0x85,0xC8,0x4C,0x32, + 0xE6,0xB0,0x38,0xC9,0x02,0xF0,0x3F,0x86,0x97,0x20,0x99, + 0xF1,0xB0,0x16,0x48,0x20,0x99,0xF1,0xB0,0x0D,0xD0,0x05, + 0xA9,0x40,0x20,0x1C,0xFE,0xC6,0xA6,0xA6,0x97,0x68,0x60, + 0xAA,0x68,0x8A,0xA6,0x97,0x60,0x20,0x0D,0xF8,0xD0,0x0B, + 0x20,0x41,0xF8,0xB0,0x11,0xA9,0x00,0x85,0xA6,0xF0,0xF0, + 0xB1,0xB2,0x18,0x60,0xA5,0x90,0xF0,0x04,0xA9,0x0D,0x18, + 0x60,0x4C,0x13,0xEE,0x20,0x4E,0xF1,0xB0,0xF7,0xC9,0x00, + 0xD0,0xF2,0xAD,0x97,0x02,0x29,0x60,0xD0,0xE9,0xF0,0xEE, + 0x48,0xA5,0x9A,0xC9,0x03,0xD0,0x04,0x68,0x4C,0x16,0xE7, + 0x90,0x04,0x68,0x4C,0xDD,0xED,0x4A,0x68,0x85,0x9E,0x8A, + 0x48,0x98,0x48,0x90,0x23,0x20,0x0D,0xF8,0xD0,0x0E,0x20, + 0x64,0xF8,0xB0,0x0E,0xA9,0x02,0xA0,0x00,0x91,0xB2,0xC8, + 0x84,0xA6,0xA5,0x9E,0x91,0xB2,0x18,0x68,0xA8,0x68,0xAA, + 0xA5,0x9E,0x90,0x02,0xA9,0x00,0x60,0x20,0x17,0xF0,0x4C, + 0xFC,0xF1,0x20,0x0F,0xF3,0xF0,0x03,0x4C,0x01,0xF7,0x20, + 0x1F,0xF3,0xA5,0xBA,0xF0,0x16,0xC9,0x03,0xF0,0x12,0xB0, + 0x14,0xC9,0x02,0xD0,0x03,0x4C,0x4D,0xF0,0xA6,0xB9,0xE0, + 0x60,0xF0,0x03,0x4C,0x0A,0xF7,0x85,0x99,0x18,0x60,0xAA, + 0x20,0x09,0xED,0xA5,0xB9,0x10,0x06,0x20,0xCC,0xED,0x4C, + 0x48,0xF2,0x20,0xC7,0xED,0x8A,0x24,0x90,0x10,0xE6,0x4C, + 0x07,0xF7,0x20,0x0F,0xF3,0xF0,0x03,0x4C,0x01,0xF7,0x20, + 0x1F,0xF3,0xA5,0xBA,0xD0,0x03,0x4C,0x0D,0xF7,0xC9,0x03, + 0xF0,0x0F,0xB0,0x11,0xC9,0x02,0xD0,0x03,0x4C,0xE1,0xEF, + 0xA6,0xB9,0xE0,0x60,0xF0,0xEA,0x85,0x9A,0x18,0x60,0xAA, + 0x20,0x0C,0xED,0xA5,0xB9,0x10,0x05,0x20,0xBE,0xED,0xD0, + 0x03,0x20,0xB9,0xED,0x8A,0x24,0x90,0x10,0xE7,0x4C,0x07, + 0xF7,0x20,0x14,0xF3,0xF0,0x02,0x18,0x60,0x20,0x1F,0xF3, + 0x8A,0x48,0xA5,0xBA,0xF0,0x50,0xC9,0x03,0xF0,0x4C,0xB0, + 0x47,0xC9,0x02,0xD0,0x1D,0x68,0x20,0xF2,0xF2,0x20,0x83, + 0xF4,0x20,0x27,0xFE,0xA5,0xF8,0xF0,0x01,0xC8,0xA5,0xFA, + 0xF0,0x01,0xC8,0xA9,0x00,0x85,0xF8,0x85,0xFA,0x4C,0x7D, + 0xF4,0xA5,0xB9,0x29,0x0F,0xF0,0x23,0x20,0xD0,0xF7,0xA9, + 0x00,0x38,0x20,0xDD,0xF1,0x20,0x64,0xF8,0x90,0x04,0x68, + 0xA9,0x00,0x60,0xA5,0xB9,0xC9,0x62,0xD0,0x0B,0xA9,0x05, + 0x20,0x6A,0xF7,0x4C,0xF1,0xF2,0x20,0x42,0xF6,0x68,0xAA, + 0xC6,0x98,0xE4,0x98,0xF0,0x14,0xA4,0x98,0xB9,0x59,0x02, + 0x9D,0x59,0x02,0xB9,0x63,0x02,0x9D,0x63,0x02,0xB9,0x6D, + 0x02,0x9D,0x6D,0x02,0x18,0x60,0xA9,0x00,0x85,0x90,0x8A, + 0xA6,0x98,0xCA,0x30,0x15,0xDD,0x59,0x02,0xD0,0xF8,0x60, + 0xBD,0x59,0x02,0x85,0xB8,0xBD,0x63,0x02,0x85,0xBA,0xBD, + 0x6D,0x02,0x85,0xB9,0x60,0xA9,0x00,0x85,0x98,0xA2,0x03, + 0xE4,0x9A,0xB0,0x03,0x20,0xFE,0xED,0xE4,0x99,0xB0,0x03, + 0x20,0xEF,0xED,0x86,0x9A,0xA9,0x00,0x85,0x99,0x60,0xA6, + 0xB8,0xD0,0x03,0x4C,0x0A,0xF7,0x20,0x0F,0xF3,0xD0,0x03, + 0x4C,0xFE,0xF6,0xA6,0x98,0xE0,0x0A,0x90,0x03,0x4C,0xFB, + 0xF6,0xE6,0x98,0xA5,0xB8,0x9D,0x59,0x02,0xA5,0xB9,0x09, + 0x60,0x85,0xB9,0x9D,0x6D,0x02,0xA5,0xBA,0x9D,0x63,0x02, + 0xF0,0x5A,0xC9,0x03,0xF0,0x56,0x90,0x05,0x20,0xD5,0xF3, + 0x90,0x4F,0xC9,0x02,0xD0,0x03,0x4C,0x09,0xF4,0x20,0xD0, + 0xF7,0xB0,0x03,0x4C,0x13,0xF7,0xA5,0xB9,0x29,0x0F,0xD0, + 0x1F,0x20,0x17,0xF8,0xB0,0x36,0x20,0xAF,0xF5,0xA5,0xB7, + 0xF0,0x0A,0x20,0xEA,0xF7,0x90,0x18,0xF0,0x28,0x4C,0x04, + 0xF7,0x20,0x2C,0xF7,0xF0,0x20,0x90,0x0C,0xB0,0xF4,0x20, + 0x38,0xF8,0xB0,0x17,0xA9,0x04,0x20,0x6A,0xF7,0xA9,0xBF, + 0xA4,0xB9,0xC0,0x60,0xF0,0x07,0xA0,0x00,0xA9,0x02,0x91, + 0xB2,0x98,0x85,0xA6,0x18,0x60,0xA5,0xB9,0x30,0xFA,0xA4, + 0xB7,0xF0,0xF6,0xA9,0x00,0x85,0x90,0xA5,0xBA,0x20,0x0C, + 0xED,0xA5,0xB9,0x09,0xF0,0x20,0xB9,0xED,0xA5,0x90,0x10, + 0x05,0x68,0x68,0x4C,0x07,0xF7,0xA5,0xB7,0xF0,0x0C,0xA0, + 0x00,0xB1,0xBB,0x20,0xDD,0xED,0xC8,0xC4,0xB7,0xD0,0xF6, + 0x4C,0x54,0xF6,0x20,0x83,0xF4,0x8C,0x97,0x02,0xC4,0xB7, + 0xF0,0x0A,0xB1,0xBB,0x99,0x93,0x02,0xC8,0xC0,0x04,0xD0, + 0xF2,0x20,0x4A,0xEF,0x8E,0x98,0x02,0xAD,0x93,0x02,0x29, + 0x0F,0xF0,0x1C,0x0A,0xAA,0xAD,0xA6,0x02,0xD0,0x09,0xBC, + 0xC1,0xFE,0xBD,0xC0,0xFE,0x4C,0x40,0xF4,0xBC,0xEB,0xE4, + 0xBD,0xEA,0xE4,0x8C,0x96,0x02,0x8D,0x95,0x02,0xAD,0x95, + 0x02,0x0A,0x20,0x2E,0xFF,0xAD,0x94,0x02,0x4A,0x90,0x09, + 0xAD,0x01,0xDD,0x0A,0xB0,0x03,0x20,0x0D,0xF0,0xAD,0x9B, + 0x02,0x8D,0x9C,0x02,0xAD,0x9E,0x02,0x8D,0x9D,0x02,0x20, + 0x27,0xFE,0xA5,0xF8,0xD0,0x05,0x88,0x84,0xF8,0x86,0xF7, + 0xA5,0xFA,0xD0,0x05,0x88,0x84,0xFA,0x86,0xF9,0x38,0xA9, + 0xF0,0x4C,0x2D,0xFE,0xA9,0x7F,0x8D,0x0D,0xDD,0xA9,0x06, + 0x8D,0x03,0xDD,0x8D,0x01,0xDD,0xA9,0x04,0x0D,0x00,0xDD, + 0x8D,0x00,0xDD,0xA0,0x00,0x8C,0xA1,0x02,0x60,0x86,0xC3, + 0x84,0xC4,0x6C,0x30,0x03,0x85,0x93,0xA9,0x00,0x85,0x90, + 0xA5,0xBA,0xD0,0x03,0x4C,0x13,0xF7,0xC9,0x03,0xF0,0xF9, + 0x90,0x7B,0xA4,0xB7,0xD0,0x03,0x4C,0x10,0xF7,0xA6,0xB9, + 0x20,0xAF,0xF5,0xA9,0x60,0x85,0xB9,0x20,0xD5,0xF3,0xA5, + 0xBA,0x20,0x09,0xED,0xA5,0xB9,0x20,0xC7,0xED,0x20,0x13, + 0xEE,0x85,0xAE,0xA5,0x90,0x4A,0x4A,0xB0,0x50,0x20,0x13, + 0xEE,0x85,0xAF,0x8A,0xD0,0x08,0xA5,0xC3,0x85,0xAE,0xA5, + 0xC4,0x85,0xAF,0x20,0xD2,0xF5,0xA9,0xFD,0x25,0x90,0x85, + 0x90,0x20,0xE1,0xFF,0xD0,0x03,0x4C,0x33,0xF6,0x20,0x13, + 0xEE,0xAA,0xA5,0x90,0x4A,0x4A,0xB0,0xE8,0x8A,0xA4,0x93, + 0xF0,0x0C,0xA0,0x00,0xD1,0xAE,0xF0,0x08,0xA9,0x10,0x20, + 0x1C,0xFE,0x2C,0x91,0xAE,0xE6,0xAE,0xD0,0x02,0xE6,0xAF, + 0x24,0x90,0x50,0xCB,0x20,0xEF,0xED,0x20,0x42,0xF6,0x90, + 0x79,0x4C,0x04,0xF7,0x4A,0xB0,0x03,0x4C,0x13,0xF7,0x20, + 0xD0,0xF7,0xB0,0x03,0x4C,0x13,0xF7,0x20,0x17,0xF8,0xB0, + 0x68,0x20,0xAF,0xF5,0xA5,0xB7,0xF0,0x09,0x20,0xEA,0xF7, + 0x90,0x0B,0xF0,0x5A,0xB0,0xDA,0x20,0x2C,0xF7,0xF0,0x53, + 0xB0,0xD3,0xA5,0x90,0x29,0x10,0x38,0xD0,0x4A,0xE0,0x01, + 0xF0,0x11,0xE0,0x03,0xD0,0xDD,0xA0,0x01,0xB1,0xB2,0x85, + 0xC3,0xC8,0xB1,0xB2,0x85,0xC4,0xB0,0x04,0xA5,0xB9,0xD0, + 0xEF,0xA0,0x03,0xB1,0xB2,0xA0,0x01,0xF1,0xB2,0xAA,0xA0, + 0x04,0xB1,0xB2,0xA0,0x02,0xF1,0xB2,0xA8,0x18,0x8A,0x65, + 0xC3,0x85,0xAE,0x98,0x65,0xC4,0x85,0xAF,0xA5,0xC3,0x85, + 0xC1,0xA5,0xC4,0x85,0xC2,0x20,0xD2,0xF5,0x20,0x4A,0xF8, + 0x24,0x18,0xA6,0xAE,0xA4,0xAF,0x60,0xA5,0x9D,0x10,0x1E, + 0xA0,0x0C,0x20,0x2F,0xF1,0xA5,0xB7,0xF0,0x15,0xA0,0x17, + 0x20,0x2F,0xF1,0xA4,0xB7,0xF0,0x0C,0xA0,0x00,0xB1,0xBB, + 0x20,0xD2,0xFF,0xC8,0xC4,0xB7,0xD0,0xF6,0x60,0xA0,0x49, + 0xA5,0x93,0xF0,0x02,0xA0,0x59,0x4C,0x2B,0xF1,0x86,0xAE, + 0x84,0xAF,0xAA,0xB5,0x00,0x85,0xC1,0xB5,0x01,0x85,0xC2, + 0x6C,0x32,0x03,0xA5,0xBA,0xD0,0x03,0x4C,0x13,0xF7,0xC9, + 0x03,0xF0,0xF9,0x90,0x5F,0xA9,0x61,0x85,0xB9,0xA4,0xB7, + 0xD0,0x03,0x4C,0x10,0xF7,0x20,0xD5,0xF3,0x20,0x8F,0xF6, + 0xA5,0xBA,0x20,0x0C,0xED,0xA5,0xB9,0x20,0xB9,0xED,0xA0, + 0x00,0x20,0x8E,0xFB,0xA5,0xAC,0x20,0xDD,0xED,0xA5,0xAD, + 0x20,0xDD,0xED,0x20,0xD1,0xFC,0xB0,0x16,0xB1,0xAC,0x20, + 0xDD,0xED,0x20,0xE1,0xFF,0xD0,0x07,0x20,0x42,0xF6,0xA9, + 0x00,0x38,0x60,0x20,0xDB,0xFC,0xD0,0xE5,0x20,0xFE,0xED, + 0x24,0xB9,0x30,0x11,0xA5,0xBA,0x20,0x0C,0xED,0xA5,0xB9, + 0x29,0xEF,0x09,0xE0,0x20,0xB9,0xED,0x20,0xFE,0xED,0x18, + 0x60,0x4A,0xB0,0x03,0x4C,0x13,0xF7,0x20,0xD0,0xF7,0x90, + 0x8D,0x20,0x38,0xF8,0xB0,0x25,0x20,0x8F,0xF6,0xA2,0x03, + 0xA5,0xB9,0x29,0x01,0xD0,0x02,0xA2,0x01,0x8A,0x20,0x6A, + 0xF7,0xB0,0x12,0x20,0x67,0xF8,0xB0,0x0D,0xA5,0xB9,0x29, + 0x02,0xF0,0x06,0xA9,0x05,0x20,0x6A,0xF7,0x24,0x18,0x60, + 0xA5,0x9D,0x10,0xFB,0xA0,0x51,0x20,0x2F,0xF1,0x4C,0xC1, + 0xF5,0xA2,0x00,0xE6,0xA2,0xD0,0x06,0xE6,0xA1,0xD0,0x02, + 0xE6,0xA0,0x38,0xA5,0xA2,0xE9,0x01,0xA5,0xA1,0xE9,0x1A, + 0xA5,0xA0,0xE9,0x4F,0x90,0x06,0x86,0xA0,0x86,0xA1,0x86, + 0xA2,0xAD,0x01,0xDC,0xCD,0x01,0xDC,0xD0,0xF8,0xAA,0x30, + 0x13,0xA2,0xBD,0x8E,0x00,0xDC,0xAE,0x01,0xDC,0xEC,0x01, + 0xDC,0xD0,0xF8,0x8D,0x00,0xDC,0xE8,0xD0,0x02,0x85,0x91, + 0x60,0x78,0xA5,0xA2,0xA6,0xA1,0xA4,0xA0,0x78,0x85,0xA2, + 0x86,0xA1,0x84,0xA0,0x58,0x60,0xA5,0x91,0xC9,0x7F,0xD0, + 0x07,0x08,0x20,0xCC,0xFF,0x85,0xC6,0x28,0x60,0xA9,0x01, + 0x2C,0xA9,0x02,0x2C,0xA9,0x03,0x2C,0xA9,0x04,0x2C,0xA9, + 0x05,0x2C,0xA9,0x06,0x2C,0xA9,0x07,0x2C,0xA9,0x08,0x2C, + 0xA9,0x09,0x48,0x20,0xCC,0xFF,0xA0,0x00,0x24,0x9D,0x50, + 0x0A,0x20,0x2F,0xF1,0x68,0x48,0x09,0x30,0x20,0xD2,0xFF, + 0x68,0x38,0x60,0xA5,0x93,0x48,0x20,0x41,0xF8,0x68,0x85, + 0x93,0xB0,0x32,0xA0,0x00,0xB1,0xB2,0xC9,0x05,0xF0,0x2A, + 0xC9,0x01,0xF0,0x08,0xC9,0x03,0xF0,0x04,0xC9,0x04,0xD0, + 0xE1,0xAA,0x24,0x9D,0x10,0x17,0xA0,0x63,0x20,0x2F,0xF1, + 0xA0,0x05,0xB1,0xB2,0x20,0xD2,0xFF,0xC8,0xC0,0x15,0xD0, + 0xF6,0xA5,0xA1,0x20,0xE0,0xE4,0xEA,0x18,0x88,0x60,0x85, + 0x9E,0x20,0xD0,0xF7,0x90,0x5E,0xA5,0xC2,0x48,0xA5,0xC1, + 0x48,0xA5,0xAF,0x48,0xA5,0xAE,0x48,0xA0,0xBF,0xA9,0x20, + 0x91,0xB2,0x88,0xD0,0xFB,0xA5,0x9E,0x91,0xB2,0xC8,0xA5, + 0xC1,0x91,0xB2,0xC8,0xA5,0xC2,0x91,0xB2,0xC8,0xA5,0xAE, + 0x91,0xB2,0xC8,0xA5,0xAF,0x91,0xB2,0xC8,0x84,0x9F,0xA0, + 0x00,0x84,0x9E,0xA4,0x9E,0xC4,0xB7,0xF0,0x0C,0xB1,0xBB, + 0xA4,0x9F,0x91,0xB2,0xE6,0x9E,0xE6,0x9F,0xD0,0xEE,0x20, + 0xD7,0xF7,0xA9,0x69,0x85,0xAB,0x20,0x6B,0xF8,0xA8,0x68, + 0x85,0xAE,0x68,0x85,0xAF,0x68,0x85,0xC1,0x68,0x85,0xC2, + 0x98,0x60,0xA6,0xB2,0xA4,0xB3,0xC0,0x02,0x60,0x20,0xD0, + 0xF7,0x8A,0x85,0xC1,0x18,0x69,0xC0,0x85,0xAE,0x98,0x85, + 0xC2,0x69,0x00,0x85,0xAF,0x60,0x20,0x2C,0xF7,0xB0,0x1D, + 0xA0,0x05,0x84,0x9F,0xA0,0x00,0x84,0x9E,0xC4,0xB7,0xF0, + 0x10,0xB1,0xBB,0xA4,0x9F,0xD1,0xB2,0xD0,0xE7,0xE6,0x9E, + 0xE6,0x9F,0xA4,0x9E,0xD0,0xEC,0x18,0x60,0x20,0xD0,0xF7, + 0xE6,0xA6,0xA4,0xA6,0xC0,0xC0,0x60,0x20,0x2E,0xF8,0xF0, + 0x1A,0xA0,0x1B,0x20,0x2F,0xF1,0x20,0xD0,0xF8,0x20,0x2E, + 0xF8,0xD0,0xF8,0xA0,0x6A,0x4C,0x2F,0xF1,0xA9,0x10,0x24, + 0x01,0xD0,0x02,0x24,0x01,0x18,0x60,0x20,0x2E,0xF8,0xF0, + 0xF9,0xA0,0x2E,0xD0,0xDD,0xA9,0x00,0x85,0x90,0x85,0x93, + 0x20,0xD7,0xF7,0x20,0x17,0xF8,0xB0,0x1F,0x78,0xA9,0x00, + 0x85,0xAA,0x85,0xB4,0x85,0xB0,0x85,0x9E,0x85,0x9F,0x85, + 0x9C,0xA9,0x90,0xA2,0x0E,0xD0,0x11,0x20,0xD7,0xF7,0xA9, + 0x14,0x85,0xAB,0x20,0x38,0xF8,0xB0,0x6C,0x78,0xA9,0x82, + 0xA2,0x08,0xA0,0x7F,0x8C,0x0D,0xDC,0x8D,0x0D,0xDC,0xAD, + 0x0E,0xDC,0x09,0x19,0x8D,0x0F,0xDC,0x29,0x91,0x8D,0xA2, + 0x02,0x20,0xA4,0xF0,0xAD,0x11,0xD0,0x29,0xEF,0x8D,0x11, + 0xD0,0xAD,0x14,0x03,0x8D,0x9F,0x02,0xAD,0x15,0x03,0x8D, + 0xA0,0x02,0x20,0xBD,0xFC,0xA9,0x02,0x85,0xBE,0x20,0x97, + 0xFB,0xA5,0x01,0x29,0x1F,0x85,0x01,0x85,0xC0,0xA2,0xFF, + 0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x58,0xAD,0xA0, + 0x02,0xCD,0x15,0x03,0x18,0xF0,0x15,0x20,0xD0,0xF8,0x20, + 0xBC,0xF6,0x4C,0xBE,0xF8,0x20,0xE1,0xFF,0x18,0xD0,0x0B, + 0x20,0x93,0xFC,0x38,0x68,0x68,0xA9,0x00,0x8D,0xA0,0x02, + 0x60,0x86,0xB1,0xA5,0xB0,0x0A,0x0A,0x18,0x65,0xB0,0x18, + 0x65,0xB1,0x85,0xB1,0xA9,0x00,0x24,0xB0,0x30,0x01,0x2A, + 0x06,0xB1,0x2A,0x06,0xB1,0x2A,0xAA,0xAD,0x06,0xDC,0xC9, + 0x16,0x90,0xF9,0x65,0xB1,0x8D,0x04,0xDC,0x8A,0x6D,0x07, + 0xDC,0x8D,0x05,0xDC,0xAD,0xA2,0x02,0x8D,0x0E,0xDC,0x8D, + 0xA4,0x02,0xAD,0x0D,0xDC,0x29,0x10,0xF0,0x09,0xA9,0xF9, + 0x48,0xA9,0x2A,0x48,0x4C,0x43,0xFF,0x58,0x60,0xAE,0x07, + 0xDC,0xA0,0xFF,0x98,0xED,0x06,0xDC,0xEC,0x07,0xDC,0xD0, + 0xF2,0x86,0xB1,0xAA,0x8C,0x06,0xDC,0x8C,0x07,0xDC,0xA9, + 0x19,0x8D,0x0F,0xDC,0xAD,0x0D,0xDC,0x8D,0xA3,0x02,0x98, + 0xE5,0xB1,0x86,0xB1,0x4A,0x66,0xB1,0x4A,0x66,0xB1,0xA5, + 0xB0,0x18,0x69,0x3C,0xC5,0xB1,0xB0,0x4A,0xA6,0x9C,0xF0, + 0x03,0x4C,0x60,0xFA,0xA6,0xA3,0x30,0x1B,0xA2,0x00,0x69, + 0x30,0x65,0xB0,0xC5,0xB1,0xB0,0x1C,0xE8,0x69,0x26,0x65, + 0xB0,0xC5,0xB1,0xB0,0x17,0x69,0x2C,0x65,0xB0,0xC5,0xB1, + 0x90,0x03,0x4C,0x10,0xFA,0xA5,0xB4,0xF0,0x1D,0x85,0xA8, + 0xD0,0x19,0xE6,0xA9,0xB0,0x02,0xC6,0xA9,0x38,0xE9,0x13, + 0xE5,0xB1,0x65,0x92,0x85,0x92,0xA5,0xA4,0x49,0x01,0x85, + 0xA4,0xF0,0x2B,0x86,0xD7,0xA5,0xB4,0xF0,0x22,0xAD,0xA3, + 0x02,0x29,0x01,0xD0,0x05,0xAD,0xA4,0x02,0xD0,0x16,0xA9, + 0x00,0x85,0xA4,0x8D,0xA4,0x02,0xA5,0xA3,0x10,0x30,0x30, + 0xBF,0xA2,0xA6,0x20,0xE2,0xF8,0xA5,0x9B,0xD0,0xB9,0x4C, + 0xBC,0xFE,0xA5,0x92,0xF0,0x07,0x30,0x03,0xC6,0xB0,0x2C, + 0xE6,0xB0,0xA9,0x00,0x85,0x92,0xE4,0xD7,0xD0,0x0F,0x8A, + 0xD0,0xA0,0xA5,0xA9,0x30,0xBD,0xC9,0x10,0x90,0xB9,0x85, + 0x96,0xB0,0xB5,0x8A,0x45,0x9B,0x85,0x9B,0xA5,0xB4,0xF0, + 0xD2,0xC6,0xA3,0x30,0xC5,0x46,0xD7,0x66,0xBF,0xA2,0xDA, + 0x20,0xE2,0xF8,0x4C,0xBC,0xFE,0xA5,0x96,0xF0,0x04,0xA5, + 0xB4,0xF0,0x07,0xA5,0xA3,0x30,0x03,0x4C,0x97,0xF9,0x46, + 0xB1,0xA9,0x93,0x38,0xE5,0xB1,0x65,0xB0,0x0A,0xAA,0x20, + 0xE2,0xF8,0xE6,0x9C,0xA5,0xB4,0xD0,0x11,0xA5,0x96,0xF0, + 0x26,0x85,0xA8,0xA9,0x00,0x85,0x96,0xA9,0x81,0x8D,0x0D, + 0xDC,0x85,0xB4,0xA5,0x96,0x85,0xB5,0xF0,0x09,0xA9,0x00, + 0x85,0xB4,0xA9,0x01,0x8D,0x0D,0xDC,0xA5,0xBF,0x85,0xBD, + 0xA5,0xA8,0x05,0xA9,0x85,0xB6,0x4C,0xBC,0xFE,0x20,0x97, + 0xFB,0x85,0x9C,0xA2,0xDA,0x20,0xE2,0xF8,0xA5,0xBE,0xF0, + 0x02,0x85,0xA7,0xA9,0x0F,0x24,0xAA,0x10,0x17,0xA5,0xB5, + 0xD0,0x0C,0xA6,0xBE,0xCA,0xD0,0x0B,0xA9,0x08,0x20,0x1C, + 0xFE,0xD0,0x04,0xA9,0x00,0x85,0xAA,0x4C,0xBC,0xFE,0x70, + 0x31,0xD0,0x18,0xA5,0xB5,0xD0,0xF5,0xA5,0xB6,0xD0,0xF1, + 0xA5,0xA7,0x4A,0xA5,0xBD,0x30,0x03,0x90,0x18,0x18,0xB0, + 0x15,0x29,0x0F,0x85,0xAA,0xC6,0xAA,0xD0,0xDD,0xA9,0x40, + 0x85,0xAA,0x20,0x8E,0xFB,0xA9,0x00,0x85,0xAB,0xF0,0xD0, + 0xA9,0x80,0x85,0xAA,0xD0,0xCA,0xA5,0xB5,0xF0,0x0A,0xA9, + 0x04,0x20,0x1C,0xFE,0xA9,0x00,0x4C,0x4A,0xFB,0x20,0xD1, + 0xFC,0x90,0x03,0x4C,0x48,0xFB,0xA6,0xA7,0xCA,0xF0,0x2D, + 0xA5,0x93,0xF0,0x0C,0xA0,0x00,0xA5,0xBD,0xD1,0xAC,0xF0, + 0x04,0xA9,0x01,0x85,0xB6,0xA5,0xB6,0xF0,0x4B,0xA2,0x3D, + 0xE4,0x9E,0x90,0x3E,0xA6,0x9E,0xA5,0xAD,0x9D,0x01,0x01, + 0xA5,0xAC,0x9D,0x00,0x01,0xE8,0xE8,0x86,0x9E,0x4C,0x3A, + 0xFB,0xA6,0x9F,0xE4,0x9E,0xF0,0x35,0xA5,0xAC,0xDD,0x00, + 0x01,0xD0,0x2E,0xA5,0xAD,0xDD,0x01,0x01,0xD0,0x27,0xE6, + 0x9F,0xE6,0x9F,0xA5,0x93,0xF0,0x0B,0xA5,0xBD,0xA0,0x00, + 0xD1,0xAC,0xF0,0x17,0xC8,0x84,0xB6,0xA5,0xB6,0xF0,0x07, + 0xA9,0x10,0x20,0x1C,0xFE,0xD0,0x09,0xA5,0x93,0xD0,0x05, + 0xA8,0xA5,0xBD,0x91,0xAC,0x20,0xDB,0xFC,0xD0,0x43,0xA9, + 0x80,0x85,0xAA,0x78,0xA2,0x01,0x8E,0x0D,0xDC,0xAE,0x0D, + 0xDC,0xA6,0xBE,0xCA,0x30,0x02,0x86,0xBE,0xC6,0xA7,0xF0, + 0x08,0xA5,0x9E,0xD0,0x27,0x85,0xBE,0xF0,0x23,0x20,0x93, + 0xFC,0x20,0x8E,0xFB,0xA0,0x00,0x84,0xAB,0xB1,0xAC,0x45, + 0xAB,0x85,0xAB,0x20,0xDB,0xFC,0x20,0xD1,0xFC,0x90,0xF2, + 0xA5,0xAB,0x45,0xBD,0xF0,0x05,0xA9,0x20,0x20,0x1C,0xFE, + 0x4C,0xBC,0xFE,0xA5,0xC2,0x85,0xAD,0xA5,0xC1,0x85,0xAC, + 0x60,0xA9,0x08,0x85,0xA3,0xA9,0x00,0x85,0xA4,0x85,0xA8, + 0x85,0x9B,0x85,0xA9,0x60,0xA5,0xBD,0x4A,0xA9,0x60,0x90, + 0x02,0xA9,0xB0,0xA2,0x00,0x8D,0x06,0xDC,0x8E,0x07,0xDC, + 0xAD,0x0D,0xDC,0xA9,0x19,0x8D,0x0F,0xDC,0xA5,0x01,0x49, + 0x08,0x85,0x01,0x29,0x08,0x60,0x38,0x66,0xB6,0x30,0x3C, + 0xA5,0xA8,0xD0,0x12,0xA9,0x10,0xA2,0x01,0x20,0xB1,0xFB, + 0xD0,0x2F,0xE6,0xA8,0xA5,0xB6,0x10,0x29,0x4C,0x57,0xFC, + 0xA5,0xA9,0xD0,0x09,0x20,0xAD,0xFB,0xD0,0x1D,0xE6,0xA9, + 0xD0,0x19,0x20,0xA6,0xFB,0xD0,0x14,0xA5,0xA4,0x49,0x01, + 0x85,0xA4,0xF0,0x0F,0xA5,0xBD,0x49,0x01,0x85,0xBD,0x29, + 0x01,0x45,0x9B,0x85,0x9B,0x4C,0xBC,0xFE,0x46,0xBD,0xC6, + 0xA3,0xA5,0xA3,0xF0,0x3A,0x10,0xF3,0x20,0x97,0xFB,0x58, + 0xA5,0xA5,0xF0,0x12,0xA2,0x00,0x86,0xD7,0xC6,0xA5,0xA6, + 0xBE,0xE0,0x02,0xD0,0x02,0x09,0x80,0x85,0xBD,0xD0,0xD9, + 0x20,0xD1,0xFC,0x90,0x0A,0xD0,0x91,0xE6,0xAD,0xA5,0xD7, + 0x85,0xBD,0xB0,0xCA,0xA0,0x00,0xB1,0xAC,0x85,0xBD,0x45, + 0xD7,0x85,0xD7,0x20,0xDB,0xFC,0xD0,0xBB,0xA5,0x9B,0x49, + 0x01,0x85,0xBD,0x4C,0xBC,0xFE,0xC6,0xBE,0xD0,0x03,0x20, + 0xCA,0xFC,0xA9,0x50,0x85,0xA7,0xA2,0x08,0x78,0x20,0xBD, + 0xFC,0xD0,0xEA,0xA9,0x78,0x20,0xAF,0xFB,0xD0,0xE3,0xC6, + 0xA7,0xD0,0xDF,0x20,0x97,0xFB,0xC6,0xAB,0x10,0xD8,0xA2, + 0x0A,0x20,0xBD,0xFC,0x58,0xE6,0xAB,0xA5,0xBE,0xF0,0x30, + 0x20,0x8E,0xFB,0xA2,0x09,0x86,0xA5,0x86,0xB6,0xD0,0x83, + 0x08,0x78,0xAD,0x11,0xD0,0x09,0x10,0x8D,0x11,0xD0,0x20, + 0xCA,0xFC,0xA9,0x7F,0x8D,0x0D,0xDC,0x20,0xDD,0xFD,0xAD, + 0xA0,0x02,0xF0,0x09,0x8D,0x15,0x03,0xAD,0x9F,0x02,0x8D, + 0x14,0x03,0x28,0x60,0x20,0x93,0xFC,0xF0,0x97,0xBD,0x93, + 0xFD,0x8D,0x14,0x03,0xBD,0x94,0xFD,0x8D,0x15,0x03,0x60, + 0xA5,0x01,0x09,0x20,0x85,0x01,0x60,0x38,0xA5,0xAC,0xE5, + 0xAE,0xA5,0xAD,0xE5,0xAF,0x60,0xE6,0xAC,0xD0,0x02,0xE6, + 0xAD,0x60,0xA2,0xFF,0x78,0x9A,0xD8,0x20,0x02,0xFD,0xD0, + 0x03,0x6C,0x00,0x80,0x8E,0x16,0xD0,0x20,0xA3,0xFD,0x20, + 0x50,0xFD,0x20,0x15,0xFD,0x20,0x5B,0xFF,0x58,0x6C,0x00, + 0xA0,0xA2,0x05,0xBD,0x0F,0xFD,0xDD,0x03,0x80,0xD0,0x03, + 0xCA,0xD0,0xF5,0x60,0xC3,0xC2,0xCD,0x38,0x30,0xA2,0x30, + 0xA0,0xFD,0x18,0x86,0xC3,0x84,0xC4,0xA0,0x1F,0xB9,0x14, + 0x03,0xB0,0x02,0xB1,0xC3,0x91,0xC3,0x99,0x14,0x03,0x88, + 0x10,0xF1,0x60,0x31,0xEA,0x66,0xFE,0x47,0xFE,0x4A,0xF3, + 0x91,0xF2,0x0E,0xF2,0x50,0xF2,0x33,0xF3,0x57,0xF1,0xCA, + 0xF1,0xED,0xF6,0x3E,0xF1,0x2F,0xF3,0x66,0xFE,0xA5,0xF4, + 0xED,0xF5,0xA9,0x00,0xA8,0x99,0x02,0x00,0x99,0x00,0x02, + 0x99,0x00,0x03,0xC8,0xD0,0xF4,0xA2,0x3C,0xA0,0x03,0x86, + 0xB2,0x84,0xB3,0xA8,0xA9,0x03,0x85,0xC2,0xE6,0xC2,0xB1, + 0xC1,0xAA,0xA9,0x55,0x91,0xC1,0xD1,0xC1,0xD0,0x0F,0x2A, + 0x91,0xC1,0xD1,0xC1,0xD0,0x08,0x8A,0x91,0xC1,0xC8,0xD0, + 0xE8,0xF0,0xE4,0x98,0xAA,0xA4,0xC2,0x18,0x20,0x2D,0xFE, + 0xA9,0x08,0x8D,0x82,0x02,0xA9,0x04,0x8D,0x88,0x02,0x60, + 0x6A,0xFC,0xCD,0xFB,0x31,0xEA,0x2C,0xF9,0xA9,0x7F,0x8D, + 0x0D,0xDC,0x8D,0x0D,0xDD,0x8D,0x00,0xDC,0xA9,0x08,0x8D, + 0x0E,0xDC,0x8D,0x0E,0xDD,0x8D,0x0F,0xDC,0x8D,0x0F,0xDD, + 0xA2,0x00,0x8E,0x03,0xDC,0x8E,0x03,0xDD,0x8E,0x18,0xD4, + 0xCA,0x8E,0x02,0xDC,0xA9,0x07,0x8D,0x00,0xDD,0xA9,0x3F, + 0x8D,0x02,0xDD,0xA9,0xE7,0x85,0x01,0xA9,0x2F,0x85,0x00, + 0xAD,0xA6,0x02,0xF0,0x0A,0xA9,0x25,0x8D,0x04,0xDC,0xA9, + 0x40,0x4C,0xF3,0xFD,0xA9,0x95,0x8D,0x04,0xDC,0xA9,0x42, + 0x8D,0x05,0xDC,0x4C,0x6E,0xFF,0x85,0xB7,0x86,0xBB,0x84, + 0xBC,0x60,0x85,0xB8,0x86,0xBA,0x84,0xB9,0x60,0xA5,0xBA, + 0xC9,0x02,0xD0,0x0D,0xAD,0x97,0x02,0x48,0xA9,0x00,0x8D, + 0x97,0x02,0x68,0x60,0x85,0x9D,0xA5,0x90,0x05,0x90,0x85, + 0x90,0x60,0x8D,0x85,0x02,0x60,0x90,0x06,0xAE,0x83,0x02, + 0xAC,0x84,0x02,0x8E,0x83,0x02,0x8C,0x84,0x02,0x60,0x90, + 0x06,0xAE,0x81,0x02,0xAC,0x82,0x02,0x8E,0x81,0x02,0x8C, + 0x82,0x02,0x60,0x78,0x6C,0x18,0x03,0x48,0x8A,0x48,0x98, + 0x48,0xA9,0x7F,0x8D,0x0D,0xDD,0xAC,0x0D,0xDD,0x30,0x1C, + 0x20,0x02,0xFD,0xD0,0x03,0x6C,0x02,0x80,0x20,0xBC,0xF6, + 0x20,0xE1,0xFF,0xD0,0x0C,0x20,0x15,0xFD,0x20,0xA3,0xFD, + 0x20,0x18,0xE5,0x6C,0x02,0xA0,0x98,0x2D,0xA1,0x02,0xAA, + 0x29,0x01,0xF0,0x28,0xAD,0x00,0xDD,0x29,0xFB,0x05,0xB5, + 0x8D,0x00,0xDD,0xAD,0xA1,0x02,0x8D,0x0D,0xDD,0x8A,0x29, + 0x12,0xF0,0x0D,0x29,0x02,0xF0,0x06,0x20,0xD6,0xFE,0x4C, + 0x9D,0xFE,0x20,0x07,0xFF,0x20,0xBB,0xEE,0x4C,0xB6,0xFE, + 0x8A,0x29,0x02,0xF0,0x06,0x20,0xD6,0xFE,0x4C,0xB6,0xFE, + 0x8A,0x29,0x10,0xF0,0x03,0x20,0x07,0xFF,0xAD,0xA1,0x02, + 0x8D,0x0D,0xDD,0x68,0xA8,0x68,0xAA,0x68,0x40,0xC1,0x27, + 0x3E,0x1A,0xC5,0x11,0x74,0x0E,0xED,0x0C,0x45,0x06,0xF0, + 0x02,0x46,0x01,0xB8,0x00,0x71,0x00,0xAD,0x01,0xDD,0x29, + 0x01,0x85,0xA7,0xAD,0x06,0xDD,0xE9,0x1C,0x6D,0x99,0x02, + 0x8D,0x06,0xDD,0xAD,0x07,0xDD,0x6D,0x9A,0x02,0x8D,0x07, + 0xDD,0xA9,0x11,0x8D,0x0F,0xDD,0xAD,0xA1,0x02,0x8D,0x0D, + 0xDD,0xA9,0xFF,0x8D,0x06,0xDD,0x8D,0x07,0xDD,0x4C,0x59, + 0xEF,0xAD,0x95,0x02,0x8D,0x06,0xDD,0xAD,0x96,0x02,0x8D, + 0x07,0xDD,0xA9,0x11,0x8D,0x0F,0xDD,0xA9,0x12,0x4D,0xA1, + 0x02,0x8D,0xA1,0x02,0xA9,0xFF,0x8D,0x06,0xDD,0x8D,0x07, + 0xDD,0xAE,0x98,0x02,0x86,0xA8,0x60,0xAA,0xAD,0x96,0x02, + 0x2A,0xA8,0x8A,0x69,0xC8,0x8D,0x99,0x02,0x98,0x69,0x00, + 0x8D,0x9A,0x02,0x60,0xEA,0xEA,0x08,0x68,0x29,0xEF,0x48, + 0x48,0x8A,0x48,0x98,0x48,0xBA,0xBD,0x04,0x01,0x29,0x10, + 0xF0,0x03,0x6C,0x16,0x03,0x6C,0x14,0x03,0x20,0x18,0xE5, + 0xAD,0x12,0xD0,0xD0,0xFB,0xAD,0x19,0xD0,0x29,0x01,0x8D, + 0xA6,0x02,0x4C,0xDD,0xFD,0xA9,0x81,0x8D,0x0D,0xDC,0xAD, + 0x0E,0xDC,0x29,0x80,0x09,0x11,0x8D,0x0E,0xDC,0x4C,0x8E, + 0xEE,0x03,0x4C,0x5B,0xFF,0x4C,0xA3,0xFD,0x4C,0x50,0xFD, + 0x4C,0x15,0xFD,0x4C,0x1A,0xFD,0x4C,0x18,0xFE,0x4C,0xB9, + 0xED,0x4C,0xC7,0xED,0x4C,0x25,0xFE,0x4C,0x34,0xFE,0x4C, + 0x87,0xEA,0x4C,0x21,0xFE,0x4C,0x13,0xEE,0x4C,0xDD,0xED, + 0x4C,0xEF,0xED,0x4C,0xFE,0xED,0x4C,0x0C,0xED,0x4C,0x09, + 0xED,0x4C,0x07,0xFE,0x4C,0x00,0xFE,0x4C,0xF9,0xFD,0x6C, + 0x1A,0x03,0x6C,0x1C,0x03,0x6C,0x1E,0x03,0x6C,0x20,0x03, + 0x6C,0x22,0x03,0x6C,0x24,0x03,0x6C,0x26,0x03, + +#if APPLY_PATCHES + 0xD2,0x9E,0xF4, /* PATCH LOAD */ + 0XF2,0xDD,0xF5, /* PATCH SAVE */ +#else + 0x4C,0x9E,0xF4, /* LOAD */ + 0x4C,0xDD,0xF5, /* SAVE */ +#endif + + 0x4C,0xE4,0xF6,0x4C,0xDD,0xF6,0x6C, + 0x28,0x03,0x6C,0x2A,0x03,0x6C,0x2C,0x03,0x4C,0x9B,0xF6, + 0x4C,0x05,0xE5,0x4C,0x0A,0xE5,0x4C,0x00,0xE5,0x52,0x52, + 0x42,0x59,0x43,0xFE,0xE2,0xFC,0x48,0xFF, +}; + +//file auto-generated from characters.901225-01.bin by bin2h.exe +const size_t rom_characters_len = 4096; +const unsigned char rom_characters[4096]= +{ + 0x3C,0x66,0x6E,0x6E,0x60,0x62,0x3C,0x00,0x18,0x3C,0x66, + 0x7E,0x66,0x66,0x66,0x00,0x7C,0x66,0x66,0x7C,0x66,0x66, + 0x7C,0x00,0x3C,0x66,0x60,0x60,0x60,0x66,0x3C,0x00,0x78, + 0x6C,0x66,0x66,0x66,0x6C,0x78,0x00,0x7E,0x60,0x60,0x78, + 0x60,0x60,0x7E,0x00,0x7E,0x60,0x60,0x78,0x60,0x60,0x60, + 0x00,0x3C,0x66,0x60,0x6E,0x66,0x66,0x3C,0x00,0x66,0x66, + 0x66,0x7E,0x66,0x66,0x66,0x00,0x3C,0x18,0x18,0x18,0x18, + 0x18,0x3C,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0x6C,0x38,0x00, + 0x66,0x6C,0x78,0x70,0x78,0x6C,0x66,0x00,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7E,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63, + 0x63,0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x66,0x00,0x3C, + 0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x7C,0x66,0x66,0x7C, + 0x60,0x60,0x60,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x0E, + 0x00,0x7C,0x66,0x66,0x7C,0x78,0x6C,0x66,0x00,0x3C,0x66, + 0x60,0x3C,0x06,0x66,0x3C,0x00,0x7E,0x18,0x18,0x18,0x18, + 0x18,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00, + 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x63,0x63,0x63, + 0x6B,0x7F,0x77,0x63,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66, + 0x66,0x00,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x00,0x7E, + 0x06,0x0C,0x18,0x30,0x60,0x7E,0x00,0x3C,0x30,0x30,0x30, + 0x30,0x30,0x3C,0x00,0x0C,0x12,0x30,0x7C,0x30,0x62,0xFC, + 0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x18, + 0x3C,0x7E,0x18,0x18,0x18,0x18,0x00,0x10,0x30,0x7F,0x7F, + 0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x00,0x66,0x66,0x66, + 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0xFF,0x66,0xFF,0x66, + 0x66,0x00,0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x62, + 0x66,0x0C,0x18,0x30,0x66,0x46,0x00,0x3C,0x66,0x3C,0x38, + 0x67,0x66,0x3F,0x00,0x06,0x0C,0x18,0x00,0x00,0x00,0x00, + 0x00,0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00,0x30,0x18, + 0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,0x66,0x3C,0xFF,0x3C, + 0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00, + 0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x60,0x00,0x3C, + 0x66,0x6E,0x76,0x66,0x66,0x3C,0x00,0x18,0x18,0x38,0x18, + 0x18,0x18,0x7E,0x00,0x3C,0x66,0x06,0x0C,0x30,0x60,0x7E, + 0x00,0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00,0x06,0x0E, + 0x1E,0x66,0x7F,0x06,0x06,0x00,0x7E,0x60,0x7C,0x06,0x06, + 0x66,0x3C,0x00,0x3C,0x66,0x60,0x7C,0x66,0x66,0x3C,0x00, + 0x7E,0x66,0x0C,0x18,0x18,0x18,0x18,0x00,0x3C,0x66,0x66, + 0x3C,0x66,0x66,0x3C,0x00,0x3C,0x66,0x66,0x3E,0x06,0x66, + 0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x00, + 0x00,0x18,0x00,0x00,0x18,0x18,0x30,0x0E,0x18,0x30,0x60, + 0x30,0x18,0x0E,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00, + 0x00,0x70,0x18,0x0C,0x06,0x0C,0x18,0x70,0x00,0x3C,0x66, + 0x06,0x0C,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF, + 0x00,0x00,0x00,0x08,0x1C,0x3E,0x7F,0x7F,0x1C,0x3E,0x00, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, + 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C, + 0x0C,0x00,0x00,0x00,0xE0,0xF0,0x38,0x18,0x18,0x18,0x18, + 0x1C,0x0F,0x07,0x00,0x00,0x00,0x18,0x18,0x38,0xF0,0xE0, + 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF, + 0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x03,0x07,0x0E, + 0x1C,0x38,0x70,0xE0,0xC0,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xFF,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x00, + 0x3C,0x7E,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00, + 0x00,0xFF,0xFF,0x00,0x36,0x7F,0x7F,0x7F,0x3E,0x1C,0x08, + 0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00, + 0x00,0x07,0x0F,0x1C,0x18,0x18,0xC3,0xE7,0x7E,0x3C,0x3C, + 0x7E,0xE7,0xC3,0x00,0x3C,0x7E,0x66,0x66,0x7E,0x3C,0x00, + 0x18,0x18,0x66,0x66,0x18,0x18,0x3C,0x00,0x06,0x06,0x06, + 0x06,0x06,0x06,0x06,0x06,0x08,0x1C,0x3E,0x7F,0x3E,0x1C, + 0x08,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18,0xC0, + 0xC0,0x30,0x30,0xC0,0xC0,0x30,0x30,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x00,0x00,0x03,0x3E,0x76,0x36,0x36, + 0x00,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0, + 0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33,0x03, + 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00, + 0xCC,0xCC,0x33,0x33,0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0, + 0x80,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18, + 0x18,0x1F,0x1F,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x0F, + 0x0F,0x0F,0x0F,0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00, + 0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x1F,0x1F,0x18, + 0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0xF8, + 0xF8,0x18,0x18,0x18,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x07,0x07, + 0x07,0x07,0x07,0x07,0x07,0x07,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0, + 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x18, + 0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, + 0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F, + 0x0F,0xC3,0x99,0x91,0x91,0x9F,0x99,0xC3,0xFF,0xE7,0xC3, + 0x99,0x81,0x99,0x99,0x99,0xFF,0x83,0x99,0x99,0x83,0x99, + 0x99,0x83,0xFF,0xC3,0x99,0x9F,0x9F,0x9F,0x99,0xC3,0xFF, + 0x87,0x93,0x99,0x99,0x99,0x93,0x87,0xFF,0x81,0x9F,0x9F, + 0x87,0x9F,0x9F,0x81,0xFF,0x81,0x9F,0x9F,0x87,0x9F,0x9F, + 0x9F,0xFF,0xC3,0x99,0x9F,0x91,0x99,0x99,0xC3,0xFF,0x99, + 0x99,0x99,0x81,0x99,0x99,0x99,0xFF,0xC3,0xE7,0xE7,0xE7, + 0xE7,0xE7,0xC3,0xFF,0xE1,0xF3,0xF3,0xF3,0xF3,0x93,0xC7, + 0xFF,0x99,0x93,0x87,0x8F,0x87,0x93,0x99,0xFF,0x9F,0x9F, + 0x9F,0x9F,0x9F,0x9F,0x81,0xFF,0x9C,0x88,0x80,0x94,0x9C, + 0x9C,0x9C,0xFF,0x99,0x89,0x81,0x81,0x91,0x99,0x99,0xFF, + 0xC3,0x99,0x99,0x99,0x99,0x99,0xC3,0xFF,0x83,0x99,0x99, + 0x83,0x9F,0x9F,0x9F,0xFF,0xC3,0x99,0x99,0x99,0x99,0xC3, + 0xF1,0xFF,0x83,0x99,0x99,0x83,0x87,0x93,0x99,0xFF,0xC3, + 0x99,0x9F,0xC3,0xF9,0x99,0xC3,0xFF,0x81,0xE7,0xE7,0xE7, + 0xE7,0xE7,0xE7,0xFF,0x99,0x99,0x99,0x99,0x99,0x99,0xC3, + 0xFF,0x99,0x99,0x99,0x99,0x99,0xC3,0xE7,0xFF,0x9C,0x9C, + 0x9C,0x94,0x80,0x88,0x9C,0xFF,0x99,0x99,0xC3,0xE7,0xC3, + 0x99,0x99,0xFF,0x99,0x99,0x99,0xC3,0xE7,0xE7,0xE7,0xFF, + 0x81,0xF9,0xF3,0xE7,0xCF,0x9F,0x81,0xFF,0xC3,0xCF,0xCF, + 0xCF,0xCF,0xCF,0xC3,0xFF,0xF3,0xED,0xCF,0x83,0xCF,0x9D, + 0x03,0xFF,0xC3,0xF3,0xF3,0xF3,0xF3,0xF3,0xC3,0xFF,0xFF, + 0xE7,0xC3,0x81,0xE7,0xE7,0xE7,0xE7,0xFF,0xEF,0xCF,0x80, + 0x80,0xCF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xE7,0xFF,0x99,0x99, + 0x99,0xFF,0xFF,0xFF,0xFF,0xFF,0x99,0x99,0x00,0x99,0x00, + 0x99,0x99,0xFF,0xE7,0xC1,0x9F,0xC3,0xF9,0x83,0xE7,0xFF, + 0x9D,0x99,0xF3,0xE7,0xCF,0x99,0xB9,0xFF,0xC3,0x99,0xC3, + 0xC7,0x98,0x99,0xC0,0xFF,0xF9,0xF3,0xE7,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xF3,0xE7,0xCF,0xCF,0xCF,0xE7,0xF3,0xFF,0xCF, + 0xE7,0xF3,0xF3,0xF3,0xE7,0xCF,0xFF,0xFF,0x99,0xC3,0x00, + 0xC3,0x99,0xFF,0xFF,0xFF,0xE7,0xE7,0x81,0xE7,0xE7,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xCF,0xFF,0xFF, + 0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xE7,0xE7,0xFF,0xFF,0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0xFF, + 0xC3,0x99,0x91,0x89,0x99,0x99,0xC3,0xFF,0xE7,0xE7,0xC7, + 0xE7,0xE7,0xE7,0x81,0xFF,0xC3,0x99,0xF9,0xF3,0xCF,0x9F, + 0x81,0xFF,0xC3,0x99,0xF9,0xE3,0xF9,0x99,0xC3,0xFF,0xF9, + 0xF1,0xE1,0x99,0x80,0xF9,0xF9,0xFF,0x81,0x9F,0x83,0xF9, + 0xF9,0x99,0xC3,0xFF,0xC3,0x99,0x9F,0x83,0x99,0x99,0xC3, + 0xFF,0x81,0x99,0xF3,0xE7,0xE7,0xE7,0xE7,0xFF,0xC3,0x99, + 0x99,0xC3,0x99,0x99,0xC3,0xFF,0xC3,0x99,0x99,0xC1,0xF9, + 0x99,0xC3,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xE7,0xFF,0xFF, + 0xFF,0xFF,0xE7,0xFF,0xFF,0xE7,0xE7,0xCF,0xF1,0xE7,0xCF, + 0x9F,0xCF,0xE7,0xF1,0xFF,0xFF,0xFF,0x81,0xFF,0x81,0xFF, + 0xFF,0xFF,0x8F,0xE7,0xF3,0xF9,0xF3,0xE7,0x8F,0xFF,0xC3, + 0x99,0xF9,0xF3,0xE7,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0x00, + 0x00,0xFF,0xFF,0xFF,0xF7,0xE3,0xC1,0x80,0x80,0xE3,0xC1, + 0xFF,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF, + 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xCF,0xCF,0xCF, + 0xCF,0xCF,0xCF,0xCF,0xCF,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3, + 0xF3,0xF3,0xFF,0xFF,0xFF,0x1F,0x0F,0xC7,0xE7,0xE7,0xE7, + 0xE7,0xE3,0xF0,0xF8,0xFF,0xFF,0xFF,0xE7,0xE7,0xC7,0x0F, + 0x1F,0xFF,0xFF,0xFF,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x00, + 0x00,0x3F,0x1F,0x8F,0xC7,0xE3,0xF1,0xF8,0xFC,0xFC,0xF8, + 0xF1,0xE3,0xC7,0x8F,0x1F,0x3F,0x00,0x00,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFF,0xC3,0x81,0x81,0x81,0x81,0xC3,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0x00,0x00,0xFF,0xC9,0x80,0x80,0x80,0xC1,0xE3, + 0xF7,0xFF,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xFF, + 0xFF,0xFF,0xF8,0xF0,0xE3,0xE7,0xE7,0x3C,0x18,0x81,0xC3, + 0xC3,0x81,0x18,0x3C,0xFF,0xC3,0x81,0x99,0x99,0x81,0xC3, + 0xFF,0xE7,0xE7,0x99,0x99,0xE7,0xE7,0xC3,0xFF,0xF9,0xF9, + 0xF9,0xF9,0xF9,0xF9,0xF9,0xF9,0xF7,0xE3,0xC1,0x80,0xC1, + 0xE3,0xF7,0xFF,0xE7,0xE7,0xE7,0x00,0x00,0xE7,0xE7,0xE7, + 0x3F,0x3F,0xCF,0xCF,0x3F,0x3F,0xCF,0xCF,0xE7,0xE7,0xE7, + 0xE7,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xFC,0xC1,0x89,0xC9, + 0xC9,0xFF,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F, + 0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3F,0x3F,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF, + 0xFF,0x33,0x33,0xCC,0xCC,0x00,0x01,0x03,0x07,0x0F,0x1F, + 0x3F,0x7F,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xE7, + 0xE7,0xE7,0xE0,0xE0,0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF, + 0xF0,0xF0,0xF0,0xF0,0xE7,0xE7,0xE7,0xE0,0xE0,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x07,0x07,0xE7,0xE7,0xE7,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xE0,0xE0, + 0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x00,0x00,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0x00,0x00,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7, + 0x07,0x07,0xE7,0xE7,0xE7,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0xF8, + 0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x0F, + 0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF, + 0xE7,0xE7,0xE7,0x07,0x07,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F, + 0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, + 0xF0,0xF0,0x3C,0x66,0x6E,0x6E,0x60,0x62,0x3C,0x00,0x00, + 0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00,0x00,0x60,0x60,0x7C, + 0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C, + 0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00, + 0x3C,0x66,0x7E,0x60,0x3C,0x00,0x00,0x0E,0x18,0x3E,0x18, + 0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, + 0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00, + 0x38,0x18,0x18,0x3C,0x00,0x00,0x06,0x00,0x06,0x06,0x06, + 0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00,0x00, + 0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F, + 0x7F,0x6B,0x63,0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x66, + 0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,0x00,0x00, + 0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66, + 0x3E,0x06,0x06,0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00, + 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00,0x00,0x18,0x7E, + 0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66, + 0x3E,0x00,0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00, + 0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00,0x00,0x00,0x66,0x3C, + 0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C, + 0x78,0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x3C,0x30, + 0x30,0x30,0x30,0x30,0x3C,0x00,0x0C,0x12,0x30,0x7C,0x30, + 0x62,0xFC,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, + 0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x00,0x10,0x30, + 0x7F,0x7F,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x00,0x66, + 0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0xFF,0x66, + 0xFF,0x66,0x66,0x00,0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18, + 0x00,0x62,0x66,0x0C,0x18,0x30,0x66,0x46,0x00,0x3C,0x66, + 0x3C,0x38,0x67,0x66,0x3F,0x00,0x06,0x0C,0x18,0x00,0x00, + 0x00,0x00,0x00,0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, + 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,0x66,0x3C, + 0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00, + 0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x18,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x60, + 0x00,0x3C,0x66,0x6E,0x76,0x66,0x66,0x3C,0x00,0x18,0x18, + 0x38,0x18,0x18,0x18,0x7E,0x00,0x3C,0x66,0x06,0x0C,0x30, + 0x60,0x7E,0x00,0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, + 0x06,0x0E,0x1E,0x66,0x7F,0x06,0x06,0x00,0x7E,0x60,0x7C, + 0x06,0x06,0x66,0x3C,0x00,0x3C,0x66,0x60,0x7C,0x66,0x66, + 0x3C,0x00,0x7E,0x66,0x0C,0x18,0x18,0x18,0x18,0x00,0x3C, + 0x66,0x66,0x3C,0x66,0x66,0x3C,0x00,0x3C,0x66,0x66,0x3E, + 0x06,0x66,0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00, + 0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x18,0x30,0x0E,0x18, + 0x30,0x60,0x30,0x18,0x0E,0x00,0x00,0x00,0x7E,0x00,0x7E, + 0x00,0x00,0x00,0x70,0x18,0x0C,0x06,0x0C,0x18,0x70,0x00, + 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0x00,0x00,0x00,0x18,0x3C,0x66,0x7E,0x66,0x66, + 0x66,0x00,0x7C,0x66,0x66,0x7C,0x66,0x66,0x7C,0x00,0x3C, + 0x66,0x60,0x60,0x60,0x66,0x3C,0x00,0x78,0x6C,0x66,0x66, + 0x66,0x6C,0x78,0x00,0x7E,0x60,0x60,0x78,0x60,0x60,0x7E, + 0x00,0x7E,0x60,0x60,0x78,0x60,0x60,0x60,0x00,0x3C,0x66, + 0x60,0x6E,0x66,0x66,0x3C,0x00,0x66,0x66,0x66,0x7E,0x66, + 0x66,0x66,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, + 0x1E,0x0C,0x0C,0x0C,0x0C,0x6C,0x38,0x00,0x66,0x6C,0x78, + 0x70,0x78,0x6C,0x66,0x00,0x60,0x60,0x60,0x60,0x60,0x60, + 0x7E,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x00,0x66, + 0x76,0x7E,0x7E,0x6E,0x66,0x66,0x00,0x3C,0x66,0x66,0x66, + 0x66,0x66,0x3C,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x60, + 0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x0E,0x00,0x7C,0x66, + 0x66,0x7C,0x78,0x6C,0x66,0x00,0x3C,0x66,0x60,0x3C,0x06, + 0x66,0x3C,0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00, + 0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x66,0x66,0x66, + 0x66,0x66,0x3C,0x18,0x00,0x63,0x63,0x63,0x6B,0x7F,0x77, + 0x63,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66,0x66,0x00,0x66, + 0x66,0x66,0x3C,0x18,0x18,0x18,0x00,0x7E,0x06,0x0C,0x18, + 0x30,0x60,0x7E,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18, + 0x18,0xC0,0xC0,0x30,0x30,0xC0,0xC0,0x30,0x30,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x33,0x33,0xCC,0xCC,0x33, + 0x33,0xCC,0xCC,0x33,0x99,0xCC,0x66,0x33,0x99,0xCC,0x66, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0, + 0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xC0,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33, + 0x33,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00, + 0x00,0x00,0xCC,0xCC,0x33,0x33,0xCC,0x99,0x33,0x66,0xCC, + 0x99,0x33,0x66,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, + 0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18,0x00,0x00,0x00, + 0x00,0x0F,0x0F,0x0F,0x0F,0x18,0x18,0x18,0x1F,0x1F,0x00, + 0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x1F, + 0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18,0x18,0x18, + 0x18,0xF8,0xF8,0x18,0x18,0x18,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, + 0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xFF,0xFF,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01, + 0x03,0x06,0x6C,0x78,0x70,0x60,0x00,0x00,0x00,0x00,0x00, + 0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00, + 0x00,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,0xF0,0xF0, + 0xF0,0xF0,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x0F, + 0x0F,0x0F,0x0F,0xC3,0x99,0x91,0x91,0x9F,0x99,0xC3,0xFF, + 0xFF,0xFF,0xC3,0xF9,0xC1,0x99,0xC1,0xFF,0xFF,0x9F,0x9F, + 0x83,0x99,0x99,0x83,0xFF,0xFF,0xFF,0xC3,0x9F,0x9F,0x9F, + 0xC3,0xFF,0xFF,0xF9,0xF9,0xC1,0x99,0x99,0xC1,0xFF,0xFF, + 0xFF,0xC3,0x99,0x81,0x9F,0xC3,0xFF,0xFF,0xF1,0xE7,0xC1, + 0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,0xC1,0x99,0x99,0xC1,0xF9, + 0x83,0xFF,0x9F,0x9F,0x83,0x99,0x99,0x99,0xFF,0xFF,0xE7, + 0xFF,0xC7,0xE7,0xE7,0xC3,0xFF,0xFF,0xF9,0xFF,0xF9,0xF9, + 0xF9,0xF9,0xC3,0xFF,0x9F,0x9F,0x93,0x87,0x93,0x99,0xFF, + 0xFF,0xC7,0xE7,0xE7,0xE7,0xE7,0xC3,0xFF,0xFF,0xFF,0x99, + 0x80,0x80,0x94,0x9C,0xFF,0xFF,0xFF,0x83,0x99,0x99,0x99, + 0x99,0xFF,0xFF,0xFF,0xC3,0x99,0x99,0x99,0xC3,0xFF,0xFF, + 0xFF,0x83,0x99,0x99,0x83,0x9F,0x9F,0xFF,0xFF,0xC1,0x99, + 0x99,0xC1,0xF9,0xF9,0xFF,0xFF,0x83,0x99,0x9F,0x9F,0x9F, + 0xFF,0xFF,0xFF,0xC1,0x9F,0xC3,0xF9,0x83,0xFF,0xFF,0xE7, + 0x81,0xE7,0xE7,0xE7,0xF1,0xFF,0xFF,0xFF,0x99,0x99,0x99, + 0x99,0xC1,0xFF,0xFF,0xFF,0x99,0x99,0x99,0xC3,0xE7,0xFF, + 0xFF,0xFF,0x9C,0x94,0x80,0xC1,0xC9,0xFF,0xFF,0xFF,0x99, + 0xC3,0xE7,0xC3,0x99,0xFF,0xFF,0xFF,0x99,0x99,0x99,0xC1, + 0xF3,0x87,0xFF,0xFF,0x81,0xF3,0xE7,0xCF,0x81,0xFF,0xC3, + 0xCF,0xCF,0xCF,0xCF,0xCF,0xC3,0xFF,0xF3,0xED,0xCF,0x83, + 0xCF,0x9D,0x03,0xFF,0xC3,0xF3,0xF3,0xF3,0xF3,0xF3,0xC3, + 0xFF,0xFF,0xE7,0xC3,0x81,0xE7,0xE7,0xE7,0xE7,0xFF,0xEF, + 0xCF,0x80,0x80,0xCF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xE7,0xFF, + 0x99,0x99,0x99,0xFF,0xFF,0xFF,0xFF,0xFF,0x99,0x99,0x00, + 0x99,0x00,0x99,0x99,0xFF,0xE7,0xC1,0x9F,0xC3,0xF9,0x83, + 0xE7,0xFF,0x9D,0x99,0xF3,0xE7,0xCF,0x99,0xB9,0xFF,0xC3, + 0x99,0xC3,0xC7,0x98,0x99,0xC0,0xFF,0xF9,0xF3,0xE7,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xF3,0xE7,0xCF,0xCF,0xCF,0xE7,0xF3, + 0xFF,0xCF,0xE7,0xF3,0xF3,0xF3,0xE7,0xCF,0xFF,0xFF,0x99, + 0xC3,0x00,0xC3,0x99,0xFF,0xFF,0xFF,0xE7,0xE7,0x81,0xE7, + 0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xCF, + 0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFC,0xF9,0xF3,0xE7,0xCF, + 0x9F,0xFF,0xC3,0x99,0x91,0x89,0x99,0x99,0xC3,0xFF,0xE7, + 0xE7,0xC7,0xE7,0xE7,0xE7,0x81,0xFF,0xC3,0x99,0xF9,0xF3, + 0xCF,0x9F,0x81,0xFF,0xC3,0x99,0xF9,0xE3,0xF9,0x99,0xC3, + 0xFF,0xF9,0xF1,0xE1,0x99,0x80,0xF9,0xF9,0xFF,0x81,0x9F, + 0x83,0xF9,0xF9,0x99,0xC3,0xFF,0xC3,0x99,0x9F,0x83,0x99, + 0x99,0xC3,0xFF,0x81,0x99,0xF3,0xE7,0xE7,0xE7,0xE7,0xFF, + 0xC3,0x99,0x99,0xC3,0x99,0x99,0xC3,0xFF,0xC3,0x99,0x99, + 0xC1,0xF9,0x99,0xC3,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xE7, + 0xFF,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xE7,0xE7,0xCF,0xF1, + 0xE7,0xCF,0x9F,0xCF,0xE7,0xF1,0xFF,0xFF,0xFF,0x81,0xFF, + 0x81,0xFF,0xFF,0xFF,0x8F,0xE7,0xF3,0xF9,0xF3,0xE7,0x8F, + 0xFF,0xC3,0x99,0xF9,0xF3,0xE7,0xFF,0xE7,0xFF,0xFF,0xFF, + 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xE7,0xC3,0x99,0x81,0x99, + 0x99,0x99,0xFF,0x83,0x99,0x99,0x83,0x99,0x99,0x83,0xFF, + 0xC3,0x99,0x9F,0x9F,0x9F,0x99,0xC3,0xFF,0x87,0x93,0x99, + 0x99,0x99,0x93,0x87,0xFF,0x81,0x9F,0x9F,0x87,0x9F,0x9F, + 0x81,0xFF,0x81,0x9F,0x9F,0x87,0x9F,0x9F,0x9F,0xFF,0xC3, + 0x99,0x9F,0x91,0x99,0x99,0xC3,0xFF,0x99,0x99,0x99,0x81, + 0x99,0x99,0x99,0xFF,0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3, + 0xFF,0xE1,0xF3,0xF3,0xF3,0xF3,0x93,0xC7,0xFF,0x99,0x93, + 0x87,0x8F,0x87,0x93,0x99,0xFF,0x9F,0x9F,0x9F,0x9F,0x9F, + 0x9F,0x81,0xFF,0x9C,0x88,0x80,0x94,0x9C,0x9C,0x9C,0xFF, + 0x99,0x89,0x81,0x81,0x91,0x99,0x99,0xFF,0xC3,0x99,0x99, + 0x99,0x99,0x99,0xC3,0xFF,0x83,0x99,0x99,0x83,0x9F,0x9F, + 0x9F,0xFF,0xC3,0x99,0x99,0x99,0x99,0xC3,0xF1,0xFF,0x83, + 0x99,0x99,0x83,0x87,0x93,0x99,0xFF,0xC3,0x99,0x9F,0xC3, + 0xF9,0x99,0xC3,0xFF,0x81,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7, + 0xFF,0x99,0x99,0x99,0x99,0x99,0x99,0xC3,0xFF,0x99,0x99, + 0x99,0x99,0x99,0xC3,0xE7,0xFF,0x9C,0x9C,0x9C,0x94,0x80, + 0x88,0x9C,0xFF,0x99,0x99,0xC3,0xE7,0xC3,0x99,0x99,0xFF, + 0x99,0x99,0x99,0xC3,0xE7,0xE7,0xE7,0xFF,0x81,0xF9,0xF3, + 0xE7,0xCF,0x9F,0x81,0xFF,0xE7,0xE7,0xE7,0x00,0x00,0xE7, + 0xE7,0xE7,0x3F,0x3F,0xCF,0xCF,0x3F,0x3F,0xCF,0xCF,0xE7, + 0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xCC,0xCC,0x33,0x33, + 0xCC,0xCC,0x33,0x33,0xCC,0x66,0x33,0x99,0xCC,0x66,0x33, + 0x99,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F, + 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x3F,0x3F,0x33,0x33,0xCC,0xCC,0x33,0x33, + 0xCC,0xCC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF, + 0xFF,0xFF,0xFF,0x33,0x33,0xCC,0xCC,0x33,0x66,0xCC,0x99, + 0x33,0x66,0xCC,0x99,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xE7,0xE7,0xE7,0xE0,0xE0,0xE7,0xE7,0xE7,0xFF,0xFF, + 0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xE7,0xE7,0xE7,0xE0,0xE0, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x07,0xE7,0xE7,0xE7, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF, + 0xE0,0xE0,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x00,0x00,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xE7,0xE7,0xE7,0xE7, + 0xE7,0xE7,0x07,0x07,0xE7,0xE7,0xE7,0x3F,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, + 0x1F,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, + 0xFE,0xFC,0xF9,0x93,0x87,0x8F,0x9F,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF, + 0xFF,0xFF,0xE7,0xE7,0xE7,0x07,0x07,0xFF,0xFF,0xFF,0x0F, + 0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F, + 0xF0,0xF0,0xF0,0xF0, +}; diff --git a/MCUME_esp32/esp64/main/roms.h b/MCUME_esp32/esp64/main/roms.h new file mode 100755 index 0000000..5722277 --- /dev/null +++ b/MCUME_esp32/esp64/main/roms.h @@ -0,0 +1,10 @@ +#ifndef Teensy64_roms_h_ +#define Teensy64_roms_h_ + +#define APPLY_PATCHES 1 + +extern const unsigned char rom_basic[8192]; +extern const unsigned char rom_kernal[8192]; +extern const unsigned char rom_characters[4096]; + +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/settings.h b/MCUME_esp32/esp64/main/settings.h new file mode 100755 index 0000000..014f245 --- /dev/null +++ b/MCUME_esp32/esp64/main/settings.h @@ -0,0 +1,62 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef settings_h_ +#define settings_h_ + +#ifndef VGA +#define VGA 0 //use 0 for ILI9341 Display +#endif + +#ifndef PS2KEYBOARD +#define PS2KEYBOARD 0 //Use 0 for USB-HOST +#endif + + +//Note: PAL/NTSC are EMULATED - This is not the real videomode! +#ifndef PAL +#define PAL 1 //use 0 for NTSC +#endif + +#ifndef FASTBOOT +#define FASTBOOT 1 //0 to disable fastboot +#endif + + +#define EXACTTIMINGDURATION 600ul //ms exact timing after IEC-BUS activity + + + +#endif diff --git a/MCUME_esp32/esp64/main/util.cpp b/MCUME_esp32/esp64/main/util.cpp new file mode 100755 index 0000000..5eaf921 --- /dev/null +++ b/MCUME_esp32/esp64/main/util.cpp @@ -0,0 +1,71 @@ +/* +Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ +#include +#include +#include "util.h" + +//Attention, don't use WFI-instruction - the CPU does not count cycles during sleep +void enableCycleCounter(void) { + +} + +extern "C" volatile uint32_t systick_millis_count; +void mySystick_isr(void) { systick_millis_count++; } +void myUnused_isr(void) {}; + +void disableEventResponder(void) { +} + +static float setDACFreq(float freq) { + + return (float)0; +} + +float setAudioSampleFreq(float freq) { + int f=0; + return f; +} + +void setAudioOff(void) { + +} + +void setAudioOn(void) { + +} + +void listInterrupts() { + +} \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/util.h b/MCUME_esp32/esp64/main/util.h new file mode 100755 index 0000000..90e29a2 --- /dev/null +++ b/MCUME_esp32/esp64/main/util.h @@ -0,0 +1,65 @@ +/* +Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef _UTIL_C64H_ +#define _UTIL_C64H_ + +#include "Teensy64.h" + +static inline unsigned get_ccount(void) +{ + unsigned r; + asm volatile ("rsr %0, ccount" : "=r"(r)); + return r; +} + +void disableEventResponder(void); + +void enableCycleCounter(void); +inline unsigned fbmillis(void) __attribute__((always_inline)); +inline unsigned fbmicros(void) __attribute__((always_inline)); +inline unsigned fbnanos(void) __attribute__((always_inline)); + +unsigned fbmillis(void) { return (get_ccount() * (1000.0/F_CPU)); } +unsigned fbmicros(void) { return (get_ccount() * (1000000.0/F_CPU)); } +unsigned fbnanos(void) { return (get_ccount() * (1000000000.0 / F_CPU)); } + +float setAudioSampleFreq(float freq); +void setAudioOff(void); +void setAudioOn(void); +void listInterrupts(); + + +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp64/main/vic.cpp b/MCUME_esp32/esp64/main/vic.cpp new file mode 100755 index 0000000..3054655 --- /dev/null +++ b/MCUME_esp32/esp64/main/vic.cpp @@ -0,0 +1,2148 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +/* + TODOs: + - Fix Bugs.. + - FLD - (OK 08/17) test this more.. + - Sprite Stretching (requires "MOBcounter") + - BA Signal -> CPU + - xFLI + - ... + - DMA Delay (?) - needs partial rewrite (idle - > badline in middle of line. Is the 3.6 fast enough??) + - optimize more +*/ + + +#include "Teensy64.h" +#include "vic.h" +#include +#include +#include + +#define min(a, b) (((a) < (b)) ? (a) : (b)) +#define max(a, b) (((a) > (b)) ? (a) : (b)) + +#define PALETTE(r,g,b) SPI_SWAP_DATA_TX(RGBVAL16(r,g,b),16) //(((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3)) +#include "vic_palette.h" + + + +#define BORDER (ILI9341_TFTHEIGHT-200)/2 +#define SCREEN_HEIGHT (200+2*BORDER) +#define SCREEN_WIDTH 320 +#define LINE_MEM_WIDTH 320 +#define FIRSTDISPLAYLINE ( 51 - BORDER ) +#define LASTDISPLAYLINE ( 250 + BORDER ) +#define BORDER_LEFT 0 +#define BORDER_RIGHT 0 + +typedef uint16_t tpixel; + +#define MAXCYCLESSPRITES0_2 3 +#define MAXCYCLESSPRITES3_7 5 +#define MAXCYCLESSPRITES (MAXCYCLESSPRITES0_2 + MAXCYCLESSPRITES3_7) + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +inline __attribute__((always_inline)) +void fastFillLine(tpixel * p, const tpixel * pe, const uint16_t col, uint16_t * spl); +inline __attribute__((always_inline)) +void fastFillLineNoSprites(tpixel * p, const tpixel * pe, const uint16_t col); + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +#define SPRITENUM(data) (1 << ((data >> 8) & 0x07)) +#define CHARSETPTR() cpu.vic.charsetPtr = cpu.vic.charsetPtrBase + cpu.vic.rc; +#define CYCLES(x) {if (cpu.vic.badline) {cia_clockt(x);} else {cpu_clock(x);} } + +#define BADLINE(x) {if (cpu.vic.badline) { \ + cpu.vic.lineMemChr[x] = cpu.RAM[cpu.vic.videomatrix + vc + x]; \ + cpu.vic.lineMemCol[x] = cpu.vic.COLORRAM[vc + x]; \ + cia1_clock(1); \ + cia2_clock(1); \ + } else { \ + cpu_clock(1); \ + } \ + }; + +#define SPRITEORFIXEDCOLOR() \ + sprite = *spl++; \ + if (sprite) { \ + *p++ = cpu.vic.palette[sprite & 0x0f]; \ + } else { \ + *p++ = col; \ + } + + +#if 0 +#define PRINTOVERFLOW \ + if (p>pe) { \ + Serial.print("VIC overflow Mode "); \ + Serial.println(mode); \ + } + +#define PRINTOVERFLOWS \ + if (p>pe) { \ + Serial.print("VIC overflow (Sprite) Mode "); \ + Serial.println(mode); \ + } +#else +#define PRINTOVERFLOW +#define PRINTOVERFLOWS +#endif + +/*****************************************************************************************************/ +void mode0 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + // Standard-Textmodus(ECM/BMM/MCM=0/0/0) + /* + Standard-Textmodus (ECM / BMM / MCM = 0/0/0) + In diesem Modus (wie in allen Textmodi) liest der VIC aus der videomatrix 8-Bit-Zeichenzeiger, + die die Adresse der Punktmatrix des Zeichens im Zeichengenerator angibt. Damit ist ein Zeichensatz + von 256 Zeichen verfügbar, die jeweils aus 8×8 Pixeln bestehen, die in 8 aufeinanderfolgenden Bytes + im Zeichengenerator abgelegt sind. Mit den Bits VM10-13 und CB11-13 aus Register $d018 lassen sich + videomatrix und Zeichengenerator im Speicher verschieben. Im Standard-Textmodus entspricht jedes Bit + im Zeichengenerator direkt einem Pixel auf dem Bildschirm. Die Vordergrundfarbe ist für jedes Zeichen + im Farbnibble aus der videomatrix angegeben, die Hintergrundfarbe wird global durch Register $d021 festgelegt. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | + | "0": Hintergrundfarbe 0 ($d021) | + | "1": Farbe aus Bits 8-11 der c-Daten | + +---------------------------------------+ + + */ + + uint8_t chr, pixel; + uint16_t fgcol; + uint16_t bgcol; + uint16_t x = 0; + + CHARSETPTR(); + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + fgcol = cpu.vic.lineMemCol[x]; + x++; + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + int spritepixel = sprite & 0x0f; + + if (sprite & 0x4000) { // Sprite: Hinter Text MDP = 1 + if (chr & 0x80) { + cpu.vic.fgcollision |= spritenum; + pixel = fgcol; + } else { + pixel = spritepixel; + } + } else { // Sprite: Vor Text //MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; + pixel = spritepixel; + } + } else { // Kein Sprite + pixel = (chr & 0x80) ? fgcol : cpu.vic.B0C; + } + + *p++ = cpu.vic.palette[pixel]; + chr = chr << 1; + + } + } while (p < pe); + PRINTOVERFLOWS + } else { //Keine Sprites + + while (p < pe - 8) { + + BADLINE(x) + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + bgcol = cpu.vic.colors[1]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + + while (p < pe) { + + BADLINE(x) + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + bgcol = cpu.vic.colors[1]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +}; + +/*****************************************************************************************************/ +void mode1 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Multicolor-Textmodus (ECM/BMM/MCM=0/0/1) + Dieser Modus ermöglicht es, auf Kosten der horizontalen Auflösung vierfarbige Zeichen darzustellen. + Ist Bit 11 der c-Daten Null, wird das Zeichen wie im Standard-Textmodus dargestellt, wobei aber nur die + Farben 0-7 für den Vordergrund zur Verfügung stehen. Ist Bit 11 gesetzt, bilden jeweils zwei horizontal + benachbarte Bits der Punktmatrix ein Pixel. Dadurch ist die Auflösung des Zeichens auf 4×8 reduziert + (die Pixel sind doppelt so breit, die Gesamtbreite der Zeichen ändert sich also nicht). + Interessant ist, daß nicht nur die Bitkombination „00”, sondern auch „01” für die Spritepriorität + und -kollisionserkennung zum "Hintergrund" gezählt wird. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | MC-Flag = 0 + | "0": Hintergrundfarbe 0 ($d021) | + | "1": Farbe aus Bits 8-10 der c-Daten | + +---------------------------------------+ + | 4 Pixel (2 Bit/Pixel) | + | | + | "00": Hintergrundfarbe 0 ($d021) | MC-Flag = 1 + | "01": Hintergrundfarbe 1 ($d022) | + | "10": Hintergrundfarbe 2 ($d023) | + | "11": Farbe aus Bits 8-10 der c-Daten | + +---------------------------------------+ + + */ + + // POKE 53270,PEEK(53270) OR 16 + // poke 53270,peek(53270) or 16 + + uint16_t bgcol, fgcol, pixel; + uint16_t colors[4]; + uint8_t chr; + uint8_t x = 0; + + CHARSETPTR(); + + if (cpu.vic.lineHasSprites) { + + colors[0] = cpu.vic.B0C; + + do { + + if (cpu.vic.idle) { + cpu_clock(1); + fgcol = colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + fgcol = cpu.vic.lineMemCol[x]; + colors[1] = cpu.vic.R[0x22]; + colors[2] = cpu.vic.R[0x23]; + colors[3] = fgcol & 0x07; + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + } + + x++; + + if ((fgcol & 0x08) == 0) { //Zeichen ist HIRES + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergrund, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[3]; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = (chr >> 7) ? colors[3] : colors[0]; + } + + *p++ = cpu.vic.palette[pixel]; + + chr = chr << 1; + } + + } else {//Zeichen ist MULTICOLOR + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + int c = (chr >> 6) & 0x03; + chr = chr << 2; + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = colors[c]; + + } + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl++; + + //Das gleiche nochmal für das nächste Pixel + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = colors[c]; + } + *p++ = cpu.vic.palette[pixel]; + + } + + } + + } while (p < pe); + PRINTOVERFLOWS + } else { //Keine Sprites + + while (p < pe - 8) { + + int c; + + bgcol = cpu.vic.colors[1]; + colors[0] = bgcol; + + if (cpu.vic.idle) { + cpu_clock(1); + c = colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + colors[1] = cpu.vic.colors[2]; + colors[2] = cpu.vic.colors[3]; + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + c = cpu.vic.lineMemCol[x]; + } + + x++; + + if ((c & 0x08) == 0) { //Zeichen ist HIRES + fgcol = cpu.vic.palette[c & 0x07]; + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + } else {//Zeichen ist MULTICOLOR + + colors[3] = cpu.vic.palette[c & 0x07]; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr ) & 0x03]; *p++ = pixel; *p++ = pixel; + } + + }; + + while (p < pe) { + + int c; + + bgcol = cpu.vic.colors[1]; + colors[0] = bgcol; + + if (cpu.vic.idle) { + cpu_clock(1); + c = colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + colors[1] = cpu.vic.colors[2]; + colors[2] = cpu.vic.colors[3]; + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + c = cpu.vic.lineMemCol[x]; + } + + x++; + + if ((c & 0x08) == 0) { //Zeichen ist HIRES + fgcol = cpu.vic.palette[c & 0x07]; + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + } else {//Zeichen ist MULTICOLOR + + colors[3] = cpu.vic.palette[c & 0x07]; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr ) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; + } + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} + +/*****************************************************************************************************/ +void mode2 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Standard-Bitmap-Modus (ECM / BMM / MCM = 0/1/0) ("HIRES") + In diesem Modus (wie in allen Bitmap-Modi) liest der VIC die Grafikdaten aus einer 320×200-Bitmap, + in der jedes Bit direkt einem Punkt auf dem Bildschirm entspricht. Die Daten aus der videomatrix + werden für die Farbinformation benutzt. Da die videomatrix weiterhin nur eine 40×25-Matrix ist, + können die Farben nur für Blöcke von 8×8 Pixeln individuell bestimmt werden (also eine Art YC-8:1-Format). + Da die Entwickler des VIC-II den Bitmap-Modus mit sowenig zusätzlichem Schaltungsaufwand wie möglich realisieren wollten + (der VIC-I hatte noch keinen Bitmap-Modus), ist die Bitmap etwas ungewöhnlich im Speicher abgelegt: + Im Gegensatz zu modernen Videochips, die die Bitmap linear aus dem Speicher lesen, bilden beim VIC jeweils 8 aufeinanderfolgende Bytes einen 8×8-Pixelblock + auf dem Bildschirm. Mit den Bits VM10-13 und CB13 aus Register $d018 lassen sich videomatrix und Bitmap im Speicher verschieben. + Im Standard-Bitmap-Modus entspricht jedes Bit in der Bitmap direkt einem Pixel auf dem Bildschirm. + Für jeden 8×8-Block können Vorder- und Hintergrundfarbe beliebig eingestellt werden. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | + | "0": Farbe aus Bits 0-3 der c-Daten | + | "1": Farbe aus Bits 4-7 der c-Daten | + +---------------------------------------+ + + + http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_3/page_127.html + */ + + uint8_t chr; + uint16_t fgcol, pixel; + uint16_t bgcol; + uint8_t x = 0; + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + + if (cpu.vic.lineHasSprites) { + do { + + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + fgcol = t >> 4; + bgcol = t & 0x0f; + chr = bP[x * 8]; + + x++; + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl++; + + chr = chr << 1; + if (sprite) { // Sprite: Ja + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergung, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = fgcol; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = (chr & 0x80) ? fgcol :cpu.vic.B0C; + } + + *p++ = cpu.vic.palette[pixel]; + + } + } while (p < pe); + PRINTOVERFLOWS + } else { //Keine Sprites + + while (p < pe - 8) { + //color-ram not used! + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + fgcol = cpu.vic.palette[t >> 4]; + bgcol = cpu.vic.palette[t & 0x0f]; + chr = bP[x * 8]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + }; + while (p < pe) { + //color-ram not used! + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + fgcol = cpu.vic.palette[t >> 4]; + bgcol = cpu.vic.palette[t & 0x0f]; + chr = bP[x * 8]; + + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode3 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Multicolor-Bitmap-Modus (ECM/BMM/MCM=0/1/1) + + Ähnlich wie beim Multicolor-Textmodus bilden auch in diesem Modus jeweils + zwei benachbarte Bits ein (doppelt so breites) Pixel. Die Auflösung + reduziert sich damit auf 160×200 Pixel. + + Genau wie beim Multicolor-Textmodus wird die Bitkombination "01" für die + Spritepriorität und -kollisionserkennung zum "Hintergrund" gezählt. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 4 Pixel (2 Bit/Pixel) | + | | + | "00": Hintergrundfarbe 0 ($d021) | + | "01": Farbe aus Bits 4-7 der c-Daten | + | "10": Farbe aus Bits 0-3 der c-Daten | + | "11": Farbe aus Bits 8-11 der c-Daten | + +---------------------------------------+ + + POKE 53265,PEEK(53625)OR 32: POKE 53270,PEEK(53270)OR 16 + */ + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + uint16_t colors[4]; + uint16_t pixel; + uint8_t chr, x; + + x = 0; + + if (cpu.vic.lineHasSprites) { + colors[0] = cpu.vic.B0C; + do { + + if (cpu.vic.idle) { + cpu_clock(1); + colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + uint8_t t = cpu.vic.lineMemChr[x]; + colors[1] = t >> 4;//10 + colors[2] = t & 0x0f; //01 + colors[3] = cpu.vic.lineMemCol[x]; + chr = bP[x * 8]; + }; + + x++; + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + uint32_t c = (chr >> 6) & 0x03; + chr = chr << 2; + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (c & 0x02) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + } else { // MDP = 0 + if (c & 0x02) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = colors[c]; + } + + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (c & 0x02) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + } else { // MDP = 0 + if (c & 0x02) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = colors[c]; + } + + *p++ = cpu.vic.palette[pixel]; + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + + while (p < pe - 8) { + + colors[0] = cpu.vic.colors[1]; + + if (cpu.vic.idle) { + cpu_clock(1); + colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + colors[1] = cpu.vic.palette[t >> 4];//10 + colors[2] = cpu.vic.palette[t & 0x0f]; //01 + colors[3] = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + chr = bP[x * 8]; + } + + x++; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[chr & 0x03]; *p++ = pixel; *p++ = pixel; + + }; + while (p < pe) { + + colors[0] = cpu.vic.colors[1]; + + if (cpu.vic.idle) { + cpu_clock(1); + colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + colors[1] = cpu.vic.palette[t >> 4];//10 + colors[2] = cpu.vic.palette[t & 0x0f]; //01 + colors[3] = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + chr = bP[x * 8]; + } + + x++; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[chr & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode4 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + //ECM-Textmodus (ECM/BMM/MCM=1/0/0) + /* + Dieser Textmodus entspricht dem Standard-Textmodus, erlaubt es aber, für + jedes einzelne Zeichen eine von vier Hintergrundfarben auszuwählen. Die + Auswahl geschieht über die oberen beiden Bits des Zeichenzeigers. Dadurch + reduziert sich der Zeichenvorrat allerdings von 256 auf 64 Zeichen. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | + | "0": Je nach Bits 6/7 der c-Daten | + | 00: Hintergrundfarbe 0 ($d021) | + | 01: Hintergrundfarbe 1 ($d022) | + | 10: Hintergrundfarbe 2 ($d023) | + | 11: Hintergrundfarbe 3 ($d024) | + | "1": Farbe aus Bits 8-11 der c-Daten | + +---------------------------------------+ + */ + // https://www.c64-wiki.de/wiki/Hintergrundfarbe + // POKE 53265, PEEK(53265) OR 64:REM CURSOR BLINKT ROT abc + + uint8_t chr, pixel; + uint16_t fgcol; + uint16_t bgcol; + uint8_t x = 0; + + CHARSETPTR(); + if (cpu.vic.lineHasSprites) { + do { + + BADLINE(x); + + uint32_t td = cpu.vic.lineMemChr[x]; + bgcol = cpu.vic.R[0x21 + ((td >> 6) & 0x03)]; + chr = cpu.vic.charsetPtr[(td & 0x3f) * 8]; + fgcol = cpu.vic.lineMemCol[x]; + + x++; + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + if (sprite & 0x4000) { // Sprite: Hinter Text + if (chr & 0x80) { + cpu.vic.fgcollision |= spritenum; + pixel = fgcol; + } else pixel = bgcol; + } else { // Sprite: Vor Text + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; + pixel = sprite & 0x0f; + } + } else { // Kein Sprite + pixel = (chr & 0x80) ? fgcol : bgcol; + } + + chr = chr << 1; + *p++ = cpu.vic.palette[pixel]; + } + } while (p < pe); + PRINTOVERFLOWS + } + else //Keine Sprites + while (p < pe - 8) { + + BADLINE(x); + + uint32_t td = cpu.vic.lineMemChr[x]; + bgcol = cpu.vic.palette[cpu.vic.R[0x21 + ((td >> 6) & 0x03)]]; + chr = cpu.vic.charsetPtr[(td & 0x3f) * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + while (p < pe) { + + BADLINE(x); + + uint32_t td = cpu.vic.lineMemChr[x]; + bgcol = cpu.vic.palette[cpu.vic.R[0x21 + ((td >> 6) & 0x03)]]; + chr = cpu.vic.charsetPtr[(td & 0x3f) * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + PRINTOVERFLOW + while (x<40) {BADLINE(x); x++;} +} + +/*****************************************************************************************************/ +/* Ungültige Modi ************************************************************************************/ +/*****************************************************************************************************/ + +void mode5 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Ungültiger Textmodus (ECM/BMM/MCM=1/0/1) + + Das gleichzeitige Setzen der ECM- und MCM-Bits wählt keinen der + "offiziellen" Grafikmodi des VIC, sondern erzeugt nur schwarze Pixel. + Nichtsdestotrotz erzeugt der Grafikdatensequenzer auch in diesem Modus + intern gültige Grafikdaten, die die Spritekollisionserkennung triggern + können. Über den Umweg der Spritekollisionen kann man die erzeugten Daten + auch auslesen (sehen kann man nichts, das Bild ist schwarz). Man kann so + allerdings nur Vordergrund- und Hintergrundpixel unterscheiden, die + Farbinformation läßt sich aus den Spritekollisionen nicht gewinnen. + + Die erzeugte Grafik entspricht der des Multicolor-Textmodus, allerdings ist + der Zeichenvorrat genau wie im ECM-Modus auf 64 Zeichen eingeschränkt. + */ + CHARSETPTR(); + + uint8_t chr, pixel; + uint16_t fgcol; + uint8_t x = 0; + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = cpu.vic.charsetPtr[(cpu.vic.lineMemChr[x] & 0x3F) * 8]; + fgcol = cpu.vic.lineMemCol[x]; + + x++; + + if ((fgcol & 0x08) == 0) { //Zeichen ist HIRES + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergrund, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + + chr = chr << 1; + } + + } else {//Zeichen ist MULTICOLOR + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + + chr = chr << 2; + + int sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = 0; + + } + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl; + *spl++ = 0; + //Das gleiche nochmal für das nächste Pixel + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = 0; + } + *p++ = cpu.vic.palette[pixel]; + + } + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + //Farbe immer schwarz + const uint16_t bgcol = palette[0]; + while (p < pe - 8) { + + BADLINE(x); + x++; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + + }; + while (p < pe) { + + BADLINE(x); + x++; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode6 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Ungültiger Bitmap-Modus 1 (ECM/BMM/MCM=1/1/0) + + Dieser Modus erzeugt nur ebenfalls nur ein schwarzes Bild, die Pixel lassen + sich allerdings auch hier mit dem Spritekollisionstrick auslesen. + + Der Aufbau der Grafik ist im Prinzip wie im Standard-Bitmap-Modus, aber die + Bits 9 und 10 der g-Adressen sind wegen dem gesetzten ECM-Bit immer Null, + entsprechend besteht auch die Grafik - grob gesagt - aus vier + "Abschnitten", die jeweils viermal wiederholt dargestellt werden. + + */ + + uint8_t chr, pixel; + uint8_t x = 0; + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = bP[x * 8]; + + x++; + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl; + *spl++ = 0; + + chr = chr << 1; + if (sprite) { // Sprite: Ja + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergung, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + //Farbe immer schwarz + const uint16_t bgcol = palette[0]; + while (p < pe - 8) { + + BADLINE(x); + x++; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + + }; + while (p < pe) { + + BADLINE(x); + x++; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode7 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Ungültiger Bitmap-Modus 2 (ECM/BMM/MCM=1/1/1) + + Der letzte ungültige Modus liefert auch ein schwarzes Bild, das sich jedoch + genauso mit Hilfe der Sprite-Grafik-Kollisionen "abtasten" läßt. + + Der Aufbau der Grafik ist im Prinzip wie im Multicolor-Bitmap-Modus, aber + die Bits 9 und 10 der g-Adressen sind wegen dem gesetzten ECM-Bit immer + Null, was sich in der Darstellung genauso wie beim ersten ungültigen + Bitmap-Modus wiederspiegelt. Die Bitkombination "01" wird wie gewohnt zum + Hintergrund gezählt. + + */ + + uint8_t chr; + uint8_t x = 0; + uint16_t pixel; + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = bP[x * 8]; + x++; + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + + chr = chr << 2; + + int sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f;//Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f;//Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + + const uint16_t bgcol = palette[0]; + while (p < pe - 8) { + + BADLINE(x); + x++; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + + }; + while (p < pe) { + + BADLINE(x); + x++; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; + + }; + PRINTOVERFLOW + + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +typedef void (*modes_t)( tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc ); //Funktionspointer +const modes_t modes[8] = {mode0, mode1, mode2, mode3, mode4, mode5, mode6, mode7}; + + +void vic_do(void) { + + uint16_t vc; + uint16_t xscroll; + tpixel *pe; + tpixel *p; + uint16_t *spl; + uint8_t mode; + + /*****************************************************************************************************/ + /* Linecounter ***************************************************************************************/ + /*****************************************************************************************************/ + /* + ?PEEK(678) NTSC =0 + ?PEEK(678) PAL = 1 + */ + + if ( cpu.vic.rasterLine >= LINECNT ) { + + //reSID sound needs much time - too much to keep everything in sync and with stable refreshrate + //but it is not called very often, so most of the time, we have more time than needed. + //We can measure the time needed for a frame and calc a correction factor to speed things up. + unsigned long m = fbmicros(); + cpu.vic.neededTime = (m - cpu.vic.timeStart); + cpu.vic.timeStart = m; + cpu.vic.lineClock.setIntervalFast(LINETIMER_DEFAULT_FREQ - ((float)cpu.vic.neededTime / (float)LINECNT - LINETIMER_DEFAULT_FREQ )); + + cpu.vic.rasterLine = 0; + cpu.vic.vcbase = 0; + cpu.vic.denLatch = 0; + + } else cpu.vic.rasterLine++; + + int r = cpu.vic.rasterLine; + + if (r == cpu.vic.intRasterLine )//Set Rasterline-Interrupt + cpu.vic.R[0x19] |= 1 | ((cpu.vic.R[0x1a] & 1) << 7); + + /*****************************************************************************************************/ + /* Badlines ******************************************************************************************/ + /*****************************************************************************************************/ + /* + Ein Bad-Line-Zustand liegt in einem beliebigen Taktzyklus vor, wenn an der + negativen Flanke von ø0 zu Beginn des Zyklus RASTER >= $30 und RASTER <= + $f7 und die unteren drei Bits von RASTER mit YSCROLL übereinstimmen und in + einem beliebigen Zyklus von Rasterzeile $30 das DEN-Bit gesetzt war. + + (default 3) + yscroll : POKE 53265, PEEK(53265) AND 248 OR 1:POKE 1024,0 + yscroll : poke 53265, peek(53265) and 248 or 1 + + DEN : POKE 53265, PEEK(53265) AND 224 Bildschirm aus + + Die einzige Verwendung von YSCROLL ist der Vergleich mit r in der Badline + + */ + + if (r == 0x30 ) cpu.vic.denLatch |= cpu.vic.DEN; + + /* 3.7.2 + 2. In der ersten Phase von Zyklus 14 jeder Zeile wird VC mit VCBASE geladen + (VCBASE->VC) und VMLI gelöscht. Wenn zu diesem Zeitpunkt ein + Bad-Line-Zustand vorliegt, wird zusätzlich RC auf Null gesetzt. + */ + + vc = cpu.vic.vcbase; + + cpu.vic.badline = (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL)); + + if (cpu.vic.badline) { + cpu.vic.idle = 0; + cpu.vic.rc = 0; + } + + /*****************************************************************************************************/ + /*****************************************************************************************************/ +#if 1 + { + int t = MAXCYCLESSPRITES3_7 - cpu.vic.spriteCycles3_7; + if (t > 0) cpu_clock(t); + if (cpu.vic.spriteCycles3_7 > 0) cia_clockt(cpu.vic.spriteCycles3_7); + } +#endif + + //HBlank: + cpu_clock(10); + +#ifdef ADDITIONALCYCLES + cpu_clock(ADDITIONALCYCLES); +#endif + + //cpu.vic.videomatrix = cpu.vic.bank + (unsigned)(cpu.vic.R[0x18] & 0xf0) * 64; + + /* Rand oben /unten **********************************************************************************/ + /* + RSEL Höhe des Anzeigefensters Erste Zeile Letzte Zeile + 0 24 Textzeilen/192 Pixel 55 ($37) 246 ($f6) = 192 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + 1 25 Textzeilen/200 Pixel 51 ($33) 250 ($fa) = 200 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + */ + + if (cpu.vic.borderFlag) { + int firstLine = (cpu.vic.RSEL) ? 0x33 : 0x37; + if ((cpu.vic.DEN) && (r == firstLine)) cpu.vic.borderFlag = false; + } else { + int lastLine = (cpu.vic.RSEL) ? 0xfb : 0xf7; + if (r == lastLine) cpu.vic.borderFlag = true; + } + + if (r < FIRSTDISPLAYLINE || r > LASTDISPLAYLINE ) { + if (r == 0) + cpu_clock(CYCLESPERRASTERLINE - 10 - 2 - MAXCYCLESSPRITES - 1); // (minus hblank l + r) + else + cpu_clock(CYCLESPERRASTERLINE - 10 - 2 - MAXCYCLESSPRITES ); + goto noDisplayIncRC; + } + + //max_x = (!cpu.vic.CSEL) ? 40:38; + //p = SCREENMEM + (r - FIRSTDISPLAYLINE) * LINE_MEM_WIDTH; + p = tft.getLineBuffer((r - FIRSTDISPLAYLINE)); + pe = p + SCREEN_WIDTH; + //Left Screenborder: Cycle 10 + spl = &cpu.vic.spriteLine[24]; + cpu_clock(6); + + + if (cpu.vic.borderFlag) { + cpu_clock(5); + fastFillLineNoSprites(p, pe + BORDER_RIGHT, cpu.vic.colors[0]); + goto noDisplayIncRC ; + } + + + /*****************************************************************************************************/ + /* DISPLAY *******************************************************************************************/ + /*****************************************************************************************************/ + + + //max_x = (!cpu.vic.CSEL) ? 40:38; + //X-Scrolling: + + xscroll = cpu.vic.XSCROLL; + + if (xscroll > 0) { + uint16_t col = cpu.vic.colors[0]; + + if (!cpu.vic.CSEL) { + cpu_clock(1); + uint16_t sprite; + for (int i = 0; i < xscroll; i++) { + SPRITEORFIXEDCOLOR(); + } + } else { + spl += xscroll; + for (unsigned i = 0; i < xscroll; i++) { + *p++ = col; + } + + } + } + + /*****************************************************************************************************/ + /*****************************************************************************************************/ + /*****************************************************************************************************/ + + + cpu.vic.fgcollision = 0; + mode = (cpu.vic.ECM << 2) | (cpu.vic.BMM << 1) | cpu.vic.MCM; + + if ( !cpu.vic.idle) { + +#if 0 + static uint8_t omode = 99; + if (mode != omode) { + Serial.print("Graphicsmode:"); + Serial.println(mode); + omode = mode; + } +#endif + + modes[mode](p, pe, spl, vc); + vc = (vc + 40) & 0x3ff; + + } else { + /* +3.7.3.9. Idle-Zustand +--------------------- + +Im Idle-Zustand liest der VIC die Grafikdaten von Adresse $3fff (bzw. $39ff +bei gesetztem ECM-Bit) und stellt sie im ausgewählten Grafikmodus dar, +wobei aber die Videomatrix-Daten (normalerweise in den c-Zugriffen gelesen) +nur aus "0"-Bits bestehen. Es wird also immer wiederholt das Byte an +Adresse $3fff/$39ff ausgegeben. + +c-Zugriff + + Es werden keine c-Zugriffe ausgeführt. + + Daten + + +----+----+----+----+----+----+----+----+----+----+----+----+ + | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+ + | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+ + +g-Zugriff + + Adressen (ECM=0) + + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + + Adressen (ECM=1) + + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + + Daten + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | Standard-Textmodus/ + | | Multicolor-Textmodus/ + | "0": Hintergrundfarbe 0 ($d021) | ECM-Textmodus + | "1": Schwarz | + +---------------------------------------+ + | 8 Pixel (1 Bit/Pixel) | Standard-Bitmap-Modus/ + | | Ungültiger Textmodus/ + | "0": Schwarz (Hintergrund) | Ungültiger Bitmap-Modus 1 + | "1": Schwarz (Vordergrund) | + +---------------------------------------+ + | 4 Pixel (2 Bit/Pixel) | Multicolor-Bitmap-Modus + | | + | "00": Hintergrundfarbe 0 ($d021) | + | "01": Schwarz (Hintergrund) | + | "10": Schwarz (Vordergrund) | + | "11": Schwarz (Vordergrund) | + +---------------------------------------+ + | 4 Pixel (2 Bit/Pixel) | Ungültiger Bitmap-Modus 2 + | | + | "00": Schwarz (Hintergrund) | + | "01": Schwarz (Hintergrund) | + | "10": Schwarz (Vordergrund) | + | "11": Schwarz (Vordergrund) | + +---------------------------------------+ +*/ + //Modes 1 & 3 + if (mode == 1 || mode == 3) { + modes[mode](p, pe, spl, vc); + } else {//TODO: all other modes + fastFillLine(p, pe, cpu.vic.palette[0], spl); + } + } + + /* + Bei den MBC- und MMC-Interrupts löst jeweils nur die erste Kollision einen + Interrupt aus (d.h. wenn die Kollisionsregister $d01e bzw. $d01f vor der + Kollision den Inhalt Null hatten). Um nach einer Kollision weitere + Interrupts auszulösen, muß das betreffende Register erst durch Auslesen + gelöscht werden. + */ + + if (cpu.vic.fgcollision) { + if (cpu.vic.MD == 0) { + cpu.vic.R[0x19] |= 2 | ( (cpu.vic.R[0x1a] & 2) << 6); + } + cpu.vic.MD |= cpu.vic.fgcollision; + } + + /*****************************************************************************************************/ + + if (!cpu.vic.CSEL) { + cpu_clock(1); + uint16_t col = cpu.vic.colors[0]; + //p = &screen[r - FIRSTDISPLAYLINE][0]; + //p = SCREENMEM + (r - FIRSTDISPLAYLINE) * LINE_MEM_WIDTH + BORDER_LEFT; + p = tft.getLineBuffer((r - FIRSTDISPLAYLINE)); +#if 0 + // Sprites im Rand + uint16_t sprite; + uint16_t * spl; + spl = &cpu.vic.spriteLine[24 + xscroll]; + + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() //7 +#else + //keine Sprites im Rand + *p++ = col; *p++ = col; *p++ = col; *p++ = col; + *p++ = col; *p++ = col; *p = col; + +#endif + + //Rand rechts: + //p = &screen[r - FIRSTDISPLAYLINE][SCREEN_WIDTH - 9]; + //p = SCREENMEM + (r - FIRSTDISPLAYLINE) * LINE_MEM_WIDTH + SCREEN_WIDTH - 9 + BORDER_LEFT; + p = tft.getLineBuffer((r - FIRSTDISPLAYLINE)) + SCREEN_WIDTH - 9 + BORDER_LEFT; + pe = p + 9; + +#if 0 + // Sprites im Rand + spl = &cpu.vic.spriteLine[24 + SCREEN_WIDTH - 9 + xscroll]; + while (p < pe) { + SPRITEORFIXEDCOLOR(); + } +#else + //keine Sprites im Rand + //while (p < pe) { + // *p++ = col; + //} +#endif + + } + + +//Rechter Rand nach CSEL, im Textbereich +cpu_clock(5); + + +noDisplayIncRC: + /* 3.7.2 + 5. In der ersten Phase von Zyklus 58 wird geprüft, ob RC=7 ist. Wenn ja, + geht die Videologik in den Idle-Zustand und VCBASE wird mit VC geladen + (VC->VCBASE). Ist die Videologik danach im Display-Zustand (liegt ein + Bad-Line-Zustand vor, ist dies immer der Fall), wird RC erhöht. + */ + + if (cpu.vic.rc == 7) { + cpu.vic.idle = 1; + cpu.vic.vcbase = vc; + } + //Ist dies richtig ?? + if ((!cpu.vic.idle) || (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL))) { + cpu.vic.rc = (cpu.vic.rc + 1) & 0x07; + } + + + /*****************************************************************************************************/ + /* Sprites *******************************************************************************************/ + /*****************************************************************************************************/ + + cpu.vic.spriteCycles0_2 = 0; + cpu.vic.spriteCycles3_7 = 0; + + if (cpu.vic.lineHasSprites) { + cpu.vic.lineHasSprites = 0; + memset(cpu.vic.spriteLine, 0, sizeof(cpu.vic.spriteLine) ); + } + + uint32_t spriteYCheck = cpu.vic.R[0x15]; //Sprite enabled Register + + if (spriteYCheck) { + + unsigned short R17 = cpu.vic.R[0x17]; //Sprite-y-expansion + unsigned char collision = 0; + short lastSpriteNum = 0; + + for (unsigned short i = 0; i < 8; i++) { + if (!spriteYCheck) break; + + unsigned b = 1 << i; + + if (spriteYCheck & b ) { + spriteYCheck &= ~b; + short y = cpu.vic.R[i * 2 + 1]; + + if ( (r >= y ) && //y-Position > Sprite-y ? + (((r < y + 21) && (~R17 & b )) || // ohne y-expansion + ((r < y + 2 * 21 ) && (R17 & b ))) ) //mit y-expansion + { + + //Sprite Cycles + if (i < 3) { + if (!lastSpriteNum) cpu.vic.spriteCycles0_2 += 1; + cpu.vic.spriteCycles0_2 += 2; + } else { + if (!lastSpriteNum) cpu.vic.spriteCycles3_7 += 1; + cpu.vic.spriteCycles3_7 += 2; + } + lastSpriteNum = i; + //Sprite Cycles END + + + if (r < FIRSTDISPLAYLINE || r > LASTDISPLAYLINE ) continue; + + uint16_t x = (((cpu.vic.R[0x10] >> i) & 1) << 8) | cpu.vic.R[i * 2]; + if (x >= SPRITE_MAX_X) continue; + + unsigned short lineOfSprite = r - y; + if (R17 & b) lineOfSprite = lineOfSprite / 2; // Y-Expansion + unsigned short spriteadr = cpu.vic.bank | cpu.RAM[cpu.vic.videomatrix + (1024 - 8) + i] << 6 | (lineOfSprite * 3); + unsigned spriteData = ((unsigned)cpu.RAM[ spriteadr ] << 16) | ((unsigned)cpu.RAM[ spriteadr + 1 ] << 8) | ((unsigned)cpu.RAM[ spriteadr + 2 ]); + + if (!spriteData) continue; + cpu.vic.lineHasSprites = 1; + + uint16_t * slp = &cpu.vic.spriteLine[x]; //Sprite-Line-Pointer + unsigned short upperByte = ( 0x80 | ( (cpu.vic.MDP & b) ? 0x40 : 0 ) | i ) << 8; //Bit7 = Sprite "da", Bit 6 = Sprite-Priorität vor Grafik/Text, Bits 3..0 = Spritenummer + + //Sprite in Spritezeile schreiben: + if ((cpu.vic.MMC & b) == 0) { // NO MULTICOLOR + + uint16_t color = upperByte | cpu.vic.R[0x27 + i]; + + if ((cpu.vic.MXE & b) == 0) { // NO MULTICOLOR, NO SPRITE-EXPANSION + + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 23) & 0x01; + spriteData = (spriteData << 1); + + if (c) { + if (*slp == 0) *slp = color; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + } + slp++; + + } + + } else { // NO MULTICOLOR, SPRITE-EXPANSION + + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 23) & 0x01; + spriteData = (spriteData << 1); + //So wie oben, aber zwei gleiche Pixel + + if (c) { + if (*slp == 0) *slp = color; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = color; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + } else { + slp += 2; + } + + } + } + + + + } else { // MULTICOLOR + /* Im Mehrfarbenmodus (Multicolor-Modus) bekommen alle Sprites zwei zusätzliche gemeinsame Farben. + Die horizontale Auflösung wird von 24 auf 12 halbiert, da bei der Sprite-Definition jeweils zwei Bits zusammengefasst werden. + */ + uint16_t colors[4]; + //colors[0] = 1; //dummy, color 0 is transparent + colors[1] = upperByte | cpu.vic.R[0x25]; + colors[2] = upperByte | cpu.vic.R[0x27 + i]; + colors[3] = upperByte | cpu.vic.R[0x26]; + + if ((cpu.vic.MXE & b) == 0) { // MULTICOLOR, NO SPRITE-EXPANSION + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 22) & 0x03; + spriteData = (spriteData << 2); + + if (c) { + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + } else { + slp += 2; + } + + } + + } else { // MULTICOLOR, SPRITE-EXPANSION + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 22) & 0x03; + spriteData = (spriteData << 2); + + //So wie oben, aber vier gleiche Pixel + if (c) { + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + } else { + slp += 4; + } + + } + + } + } + + } + else lastSpriteNum = 0; + } + + } + + if (collision) { + if (cpu.vic.MM == 0) { + cpu.vic.R[0x19] |= 4 | ((cpu.vic.R[0x1a] & 4) << 5 ); + } + cpu.vic.MM |= collision; + } + + } + /*****************************************************************************************************/ +#if 0 + { + int t = MAXCYCLESSPRITES0_2 - cpu.vic.spriteCycles0_2; + if (t > 0) cpu_clock(t); + if (cpu.vic.spriteCycles0_2 > 0) cia_clockt(cpu.vic.spriteCycles0_2); + } +#endif + + //HBlank: +#if PAL + cpu_clock(2); +#else + cpu_clock(3); +#endif + + +#if 0 + if (cpu.vic.idle) { + Serial.print("Cycles line "); + Serial.print(r); + Serial.print(": "); + Serial.println(cpu.lineCyclesAbs); + } +#endif + + + return; +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ +void fastFillLineNoSprites(tpixel * p, const tpixel * pe, const uint16_t col) { + int i = 0; + + while (p < pe) { + *p++ = col; + i = (i + 1) & 0x07; + if (!i) CYCLES(1); + } + + +} + +void fastFillLine(tpixel * p, const tpixel * pe, const uint16_t col, uint16_t * spl) { + if (spl != NULL && cpu.vic.lineHasSprites) { + int i = 0; + uint16_t sprite; + while ( p < pe ) { + SPRITEORFIXEDCOLOR(); + i = (i + 1) & 0x07; + if (!i) CYCLES(1); + }; + + } else { + + fastFillLineNoSprites(p, pe, col); + + } +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void vic_displaySimpleModeScreen(void) { +} + + +void vic_do_simple(void) { + uint16_t vc; + int cycles = 0; + +if ( cpu.vic.rasterLine >= LINECNT ) { + + //reSID sound needs much time - too much to keep everything in sync and with stable refreshrate + //but it is not called very often, so most of the time, we have more time than needed. + //We can measure the time needed for a frame and calc a correction factor to speed things up. + unsigned long m = fbmicros(); + cpu.vic.neededTime = (m - cpu.vic.timeStart); + cpu.vic.timeStart = m; + cpu.vic.lineClock.setIntervalFast(LINETIMER_DEFAULT_FREQ - ((float)cpu.vic.neededTime / (float)LINECNT - LINETIMER_DEFAULT_FREQ )); + + cpu.vic.rasterLine = 0; + cpu.vic.vcbase = 0; + cpu.vic.denLatch = 0; + + } else { + cpu.vic.rasterLine++; + cpu_clock(1); + cycles += 1; + } + + int r = cpu.vic.rasterLine; + + if (r == cpu.vic.intRasterLine )//Set Rasterline-Interrupt + cpu.vic.R[0x19] |= 1 | ((cpu.vic.R[0x1a] & 1) << 7); + + cpu_clock(9); + cycles += 9; + + if (r == 0x30 ) cpu.vic.denLatch |= cpu.vic.DEN; + + vc = cpu.vic.vcbase; + + cpu.vic.badline = (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL)); + + if (cpu.vic.badline) { + cpu.vic.idle = 0; + cpu.vic.rc = 0; + } + + + /* Rand oben /unten **********************************************************************************/ + /* + RSEL Höhe des Anzeigefensters Erste Zeile Letzte Zeile + 0 24 Textzeilen/192 Pixel 55 ($37) 246 ($f6) = 192 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + 1 25 Textzeilen/200 Pixel 51 ($33) 250 ($fa) = 200 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + */ + + if (cpu.vic.borderFlag) { + int firstLine = (cpu.vic.RSEL) ? 0x33 : 0x37; + if ((cpu.vic.DEN) && (r == firstLine)) cpu.vic.borderFlag = false; + } else { + int lastLine = (cpu.vic.RSEL) ? 0xfb : 0xf7; + if (r == lastLine) cpu.vic.borderFlag = true; + } + + + //left screenborder + cpu_clock(6); + cycles += 6; + + CYCLES(40); + cycles += 40; + vc += 40; + + //right screenborder + cpu_clock(4); //1 + cycles += 4; + + + if (cpu.vic.rc == 7) { + cpu.vic.idle = 1; + cpu.vic.vcbase = vc; + } + //Ist dies richtig ?? + if ((!cpu.vic.idle) || (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL))) { + cpu.vic.rc = (cpu.vic.rc + 1) & 0x07; + } + + cpu_clock(3); //1 + cycles += 3; + + int cyclesleft = CYCLESPERRASTERLINE - cycles; + if (cyclesleft) cpu_clock(cyclesleft); + +} + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void installPalette(void) { + memcpy(cpu.vic.palette, (void*)palette, sizeof(cpu.vic.palette)); +} + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void vic_adrchange(void) { + uint8_t r18 = cpu.vic.R[0x18]; + cpu.vic.videomatrix = cpu.vic.bank + (unsigned)(r18 & 0xf0) * 64; + + unsigned charsetAddr = r18 & 0x0e; + if ((cpu.vic.bank & 0x4000) == 0) { + if (charsetAddr == 0x04) cpu.vic.charsetPtrBase = ((uint8_t *)&rom_characters); + else if (charsetAddr == 0x06) cpu.vic.charsetPtrBase = ((uint8_t *)&rom_characters) + 0x800; + else + cpu.vic.charsetPtrBase = &cpu.RAM[charsetAddr * 0x400 + cpu.vic.bank] ; + } else + cpu.vic.charsetPtrBase = &cpu.RAM[charsetAddr * 0x400 + cpu.vic.bank]; + + cpu.vic.bitmapPtr = (uint8_t*) &cpu.RAM[cpu.vic.bank | ((r18 & 0x08) * 0x400)]; + if ((cpu.vic.R[0x11] & 0x60) == 0x60) cpu.vic.bitmapPtr = (uint8_t*)((uintptr_t)cpu.vic.bitmapPtr & 0xf9ff); + +} +/*****************************************************************************************************/ +void vic_write(uint32_t address, uint8_t value) { + + address &= 0x3F; + + switch (address) { + case 0x11 : + cpu.vic.R[address] = value; + cpu.vic.intRasterLine = (cpu.vic.intRasterLine & 0xff) | ((((uint16_t) value) << 1) & 0x100); + if (cpu.vic.rasterLine == 0x30 ) cpu.vic.denLatch |= value & 0x10; + + cpu.vic.badline = (cpu.vic.denLatch && (cpu.vic.rasterLine >= 0x30) && (cpu.vic.rasterLine <= 0xf7) && ( (cpu.vic.rasterLine & 0x07) == (value & 0x07))); + + if (cpu.vic.badline) { + cpu.vic.idle = 0; + } + + vic_adrchange(); + + break; + case 0x12 : + cpu.vic.intRasterLine = (cpu.vic.intRasterLine & 0x100) | value; + cpu.vic.R[address] = value; + break; + case 0x18 : + cpu.vic.R[address] = value; + vic_adrchange(); + break; + case 0x19 : //IRQs + cpu.vic.R[0x19] &= (~value & 0x0f); + break; + case 0x1A : //IRQ Mask + cpu.vic.R[address] = value & 0x0f; + break; + case 0x1e: + case 0x1f: + cpu.vic.R[address] = 0; + break; + case 0x20 ... 0x2E: + cpu.vic.R[address] = value & 0x0f; + cpu.vic.colors[address - 0x20] = cpu.vic.palette[value & 0x0f]; + break; + case 0x2F ... 0x3F: + break; + default : + cpu.vic.R[address] = value; + break; + } + + //#if DEBUGVIC +#if 0 + Serial.print("VIC "); + Serial.print(address, HEX); + Serial.print("="); + Serial.println(value, HEX); + //logAddr(address, value, 1); +#endif +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +uint8_t vic_read(uint32_t address) { + uint8_t ret; + + address &= 0x3F; + switch (address) { + + case 0x11: + ret = (cpu.vic.R[address] & 0x7F) | ((cpu.vic.rasterLine & 0x100) >> 1); + break; + case 0x12: + ret = cpu.vic.rasterLine; + break; + case 0x16: + ret = cpu.vic.R[address] | 0xC0; + break; + case 0x18: + ret = cpu.vic.R[address] | 0x01; + break; + case 0x19: + ret = cpu.vic.R[address] | 0x70; + break; + case 0x1a: + ret = cpu.vic.R[address] | 0xF0; + break; + case 0x1e: + case 0x1f: + ret = cpu.vic.R[address]; + cpu.vic.R[address] = 0; + break; + case 0x20 ... 0x2E: + ret = cpu.vic.R[address] | 0xF0; + break; + case 0x2F ... 0x3F: + ret = 0xFF; + break; + default: + ret = cpu.vic.R[address]; + break; + } + +#if DEBUGVIC + Serial.print("VIC "); + logAddr(address, ret, 0); +#endif + return ret; +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void resetVic(void) { + enableCycleCounter(); + + cpu.vic.intRasterLine = 0; + cpu.vic.rasterLine = 0; + cpu.vic.lineHasSprites = 0; + memset(&cpu.RAM[0x400], 0, 1000); + memset(&cpu.vic, 0, sizeof(cpu.vic)); + + + + installPalette(); + + //http://dustlayer.com/vic-ii/2013/4/22/when-visibility-matters + cpu.vic.R[0x11] = 0x9B; + cpu.vic.R[0x16] = 0x08; + cpu.vic.R[0x18] = 0x14; + cpu.vic.R[0x19] = 0x0f; + + for (unsigned i = 0; i < sizeof(cpu.vic.COLORRAM); i++) + cpu.vic.COLORRAM[i] = (rand() & 0x0F); + + cpu.RAM[0x39FF] = 0x0; + cpu.RAM[0x3FFF] = 0x0; + cpu.RAM[0x39FF + 16384] = 0x0; + cpu.RAM[0x3FFF + 16384] = 0x0; + cpu.RAM[0x39FF + 32768] = 0x0; + cpu.RAM[0x3FFF + 32768] = 0x0; + cpu.RAM[0x39FF + 49152] = 0x0; + cpu.RAM[0x3FFF + 49152] = 0x0; + + vic_adrchange(); +} + + +/* + ?PEEK(678) NTSC =0 + ?PEEK(678) PAL = 1 + PRINT TIME$ +*/ +/* + Raster- Takt- sichtb. sichtbare + VIC-II System zeilen zyklen Zeilen Pixel/Zeile + ------------------------------------------------------- + 6569 PAL 312 63 284 403 + 6567R8 NTSC 263 65 235 418 + 6567R56A NTSC 262 64 234 411 +*/ diff --git a/MCUME_esp32/esp64/main/vic.h b/MCUME_esp32/esp64/main/vic.h new file mode 100755 index 0000000..b1b03ba --- /dev/null +++ b/MCUME_esp32/esp64/main/vic.h @@ -0,0 +1,144 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_vic_h_ +#define Teensy64_vic_h_ + +#include "Teensy64.h" +#include "IntervalTimer.h" + + + +#define SPRITE_MAX_X (320 + 24) + +/* for later use +struct tsprite { + uint8_t MC; //Mob Data Counter + uint8_t MCBase; //Mob Data Counter Base + uint8_t MobYexpand; //Y-Epansion FlipFlop +}; +*/ + +struct tvic { + uint32_t timeStart, neededTime; + int intRasterLine; //Interruptsetting + int rasterLine; + uint16_t bank; + uint16_t vcbase; + uint8_t rc; + + uint8_t borderFlag; //Top-Bottom border flag + uint8_t borderFlagH; //Left-Right border flag + uint8_t idle; + uint8_t denLatch; + uint8_t badline; + uint8_t BAsignal; + uint8_t lineHasSprites; + int8_t spriteCycles0_2; + int8_t spriteCycles3_7; + int fgcollision; + + uint8_t * charsetPtrBase; + uint8_t * charsetPtr; + uint8_t * bitmapPtr; + uint16_t videomatrix; + + uint16_t colors[15]; // translated ([palette]) colors + uint16_t palette[16]; + + MyIntervalTimer lineClock; + + union { + uint8_t R[0x40]; + struct { + uint8_t M0X, M0Y, M1X, M1Y, M2X, M2Y, M3X, M3Y, M4X, M4Y, M5X, M5Y, M6X, M6Y, M7X, M7Y; + uint8_t MX8; // Sprite-X Bit 8 $D010 + uint8_t YSCROLL: 3, RSEL: 1, DEN: 1, BMM: 1, ECM: 1, RST8: 1; // $D011 + uint8_t RASTER; // Rasterline $D012 + uint8_t LPX; // Lightpen X $D013 + uint8_t LPY; // Lightpen Y $D014 + uint8_t ME; // Sprite Enable $D015 + uint8_t XSCROLL: 3, CSEL: 1, MCM: 1, RES: 1, : 2; // $D016 + uint8_t MYE; // Sprite Y-Expansion $D017 + uint8_t : 1, CB: 3, VM: 4; // $D018 + uint8_t IRST: 1, IMBC: 1, IMMC: 1, ILP: 1, : 3, IRQ: 1; // $D019 + uint8_t ERST: 1, EMBC: 1, EMMC: 1, ELP: 1, : 4; // $D01A + uint8_t MDP; // Sprite-Daten-Priority $D01B + uint8_t MMC; // Sprite Multicolor $D01C + uint8_t MXE; // Sprite X-Expansion $D01D + uint8_t MM; // Sprite-Sprite collision $D01E + uint8_t MD; // Sprite-Data collision $D01F + uint8_t EC: 4, : 4; // Bordercolor $D020 + uint8_t B0C: 4, : 4; // Backgroundcolor 0 $D021 + uint8_t B1C: 4, : 4; // Backgroundcolor 1 $D022 + uint8_t B2C: 4, : 4; // Backgroundcolor 2 $D023 + uint8_t B3C: 4, : 4; // Backgroundcolor 3 $D024 + uint8_t MM0: 4, : 4; // Sprite Multicolor 0 $D025 + uint8_t MM1: 4, : 4; // Sprite Multicolor 1 $D026 + uint8_t M0C: 4, : 4; // Spritecolor 0 $D027 + uint8_t M1C: 4, : 4; // Spritecolor 1 $D028 + uint8_t M2C: 4, : 4; // Spritecolor 2 $D029 + uint8_t M3C: 4, : 4; // Spritecolor 3 $D02A + uint8_t M4C: 4, : 4; // Spritecolor 4 $D02B + uint8_t M5C: 4, : 4; // Spritecolor 5 $D02C + uint8_t M6C: 4, : 4; // Spritecolor 6 $D02D + uint8_t M7C: 4, : 4; // Spritecolor 7 $D02E + }; + }; + + //tsprite spriteInfo[8];//todo + uint16_t spriteLine[SPRITE_MAX_X]; + + uint8_t lineMemChr[40]; + uint8_t lineMemCol[40]; + uint8_t COLORRAM[1024]; + +}; + +void vic_do(void); +void vic_do_simple(void); +void vic_displaySimpleModeScreen(void); + +void vic_write(uint32_t address, uint8_t value) ; +uint8_t vic_read(uint32_t address); + +void vic_colorwrite(uint32_t address, uint8_t value); +uint8_t vic_colorread(uint32_t address); + +void vic_adrchange(void); + +void resetVic(void); + +#endif diff --git a/MCUME_esp32/esp64/main/vic_palette.h b/MCUME_esp32/esp64/main/vic_palette.h new file mode 100755 index 0000000..bc7080d --- /dev/null +++ b/MCUME_esp32/esp64/main/vic_palette.h @@ -0,0 +1,112 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +/* choose your "display"-type */ + +#if 1 // color display (default) + +// MACROS moved to vic implementations + +#elif 0 // B&W TV for real retro feeling. Looks great (ILI 9341 only) +#define PALETTE(r,g,b) ( ((((int)( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xF8) << 8 ) | \ + ( (((int) ( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xFC) << 3 ) | \ + ( (((int) ( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xFF) >> 3 )) + + +#elif 0 // green display (ILI 9341 only) +#define PALETTE(r,g,b) ( ( 0 ) | \ + ( (((int) ( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xFC) << 3 ) | \ + ( 0 )) +// TODO: amber display +#endif + + + +/* chose one of these palettes: + VGA is 256 colors only (rrrgggbb) , subtle differences might not be visible +*/ + +#if 1 // "Deekay" (default) +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0x88,0x20,0x00), PALETTE(0x68,0xd0,0xa8), // black, white, red, cyan, + PALETTE(0xa8,0x38,0xa0), PALETTE(0x50,0xb8,0x18), PALETTE(0x18,0x10,0x90), PALETTE(0xf0,0xe8,0x58), // purple, green, blue, yellow + PALETTE(0xa0,0x48,0x00), PALETTE(0x47,0x2b,0x1b), PALETTE(0xc8,0x78,0x70), PALETTE(0x48,0x48,0x48), // orange, brown, lightred, grey1, + PALETTE(0x80,0x80,0x80), PALETTE(0x98,0xff,0x98), PALETTE(0x50,0x90,0xd0), PALETTE(0xb8,0xb8,0xb8) // grey2, lightgreen, lightblue, grey3 +}; + +#elif 0 // VICE vice.vpl +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xFD,0xFE,0xFC), PALETTE(0xBE,0x1a,0x24), PALETTE(0x30,0xe6,0xc6), // black, white, red, cyan, + PALETTE(0xb4,0x1a,0xe2), PALETTE(0x1f,0xd2,0x1e), PALETTE(0x21,0x1b,0xae), PALETTE(0xdf,0xf6,0x0a), // purple, green, blue, yellow + PALETTE(0xb8,0x41,0x04), PALETTE(0x6a,0x33,0x04), PALETTE(0xfe,0x4a,0x57), PALETTE(0x42,0x45,0x40), // orange, brown, lightred, grey1, + PALETTE(0x70,0x74,0x6f), PALETTE(0x59,0xfe,0x59), PALETTE(0x5f,0x53,0xfe), PALETTE(0xa4,0xa7,0xa2) // grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 // "PEPTO" http://www.pepto.de/projects/colorvic/2001/ +static const uint16_t palette[16] = { + 0x0000, 0xFFFF, 0x69A5, 0x7536, 0x69F0, 0x5C68, 0x314F, 0xBE2D,// black, white, red, cyan, purple, green, blue, yellow + 0x6A64, 0x41C0, 0x9B2B, 0x4228, 0x6B6D, 0x9E90, 0x6AF6, 0x94B2 // orange, brown, lightred, grey1, grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 // "GODOT" http://www.godot64.de/german/hpalet.htm +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0x88,0x00,0x00), PALETTE(0xaa,0xff,0xee), // black, white, red, cyan, + PALETTE(0xcc,0x44,0xcc), PALETTE(0x00,0xcc,0x55), PALETTE(0x00,0x00,0xaa), PALETTE(0xee,0xee,0x77), // purple, green, blue, yellow + PALETTE(0xdd,0x88,0x55), PALETTE(0x66,0x44,0x00), PALETTE(0xff,0x77,0x77), PALETTE(0x33,0x33,0x33), // orange, brown, lightred, grey1, + PALETTE(0x77,0x77,0x77), PALETTE(0xaa,0xff,0x66), PALETTE(0x00,0x88,0xff), PALETTE(0xbb,0xbb,0xbb) // grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 // "FRODO" +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0xcc,0x00,0x00), PALETTE(0x00,0xff,0xcc), // black, white, red, cyan, + PALETTE(0xff,0x00,0xff), PALETTE(0x00,0xcc,0x00), PALETTE(0x00,0x00,0xcc), PALETTE(0xff,0xff,0x00), // purple, green, blue, yellow + PALETTE(0xff,0x88,0x00), PALETTE(0x88,0x44,0x00), PALETTE(0xff,0x88,0x88), PALETTE(0x44,0x44,0x44), // orange, brown, lightred, grey1, + PALETTE(0x88,0x88,0x88), PALETTE(0x88,0xff,0x88), PALETTE(0x88,0x88,0xff), PALETTE(0xcc,0xcc,0xcc) // grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 //RGB (full saturated colors - only good for testing) +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0xff,0x00,0x00), PALETTE(0x00,0xff,0xff), // black, white, red, cyan, + PALETTE(0xff,0x00,0xff), PALETTE(0x00,0xff,0x00), PALETTE(0x00,0x00,0xff), PALETTE(0xff,0xff,0x00), // purple, green, blue, yellow + PALETTE(0xff,0x80,0x00), PALETTE(0x80,0x40,0x00), PALETTE(0xff,0x80,0x80), PALETTE(0x40,0x40,0x40), // orange, brown, lightred, grey1, + PALETTE(0x80,0x80,0x80), PALETTE(0x80,0xff,0x80), PALETTE(0x80,0x80,0xff), PALETTE(0xc0,0xc0,0xc0) // grey2, lightgreen, lightblue, grey3 +}; +#endif + +#undef BW diff --git a/MCUME_esp32/esp64/sdkconfig b/MCUME_esp32/esp64/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/esp64/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp64/sdkconfig.old b/MCUME_esp32/esp64/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/esp64/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp800/.DS_Store b/MCUME_esp32/esp800/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp800/.DS_Store differ diff --git a/MCUME_esp32/esp800/Makefile b/MCUME_esp32/esp800/Makefile new file mode 100644 index 0000000..e80c00f --- /dev/null +++ b/MCUME_esp32/esp800/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := esp800 + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/esp800/components/.DS_Store b/MCUME_esp32/esp800/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/esp800/components/.DS_Store differ diff --git a/MCUME_esp32/esp800/components/Audio/.DS_Store b/MCUME_esp32/esp800/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp800/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/esp800/components/Audio/component.mk b/MCUME_esp32/esp800/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp800/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp800/components/Audio/esp32-hal-dac.c b/MCUME_esp32/esp800/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/esp800/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/esp800/components/Audio/esp32-hal-dac.h b/MCUME_esp32/esp800/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/esp800/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/esp800/components/Audio/esp32-hal-timer.c b/MCUME_esp32/esp800/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/esp800/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/esp800/components/Audio/esp32-hal-timer.h b/MCUME_esp32/esp800/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/esp800/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/esp800/components/Wire/.DS_Store b/MCUME_esp32/esp800/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp800/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/esp800/components/Wire/Wire.cpp b/MCUME_esp32/esp800/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/esp800/components/Wire/Wire.h b/MCUME_esp32/esp800/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/esp800/components/Wire/component.mk b/MCUME_esp32/esp800/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp800/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/esp800/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/esp800/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/esp800/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/esp800/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/esp800/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/esp800/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/esp800/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/esp800/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/esp800/flashapp.sh b/MCUME_esp32/esp800/flashapp.sh new file mode 100755 index 0000000..46aadd5 --- /dev/null +++ b/MCUME_esp32/esp800/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x160000 ../esp800/build/esp800.bin diff --git a/MCUME_esp32/esp800/main/.DS_Store b/MCUME_esp32/esp800/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp800/main/.DS_Store differ diff --git a/MCUME_esp32/esp800/main/AudioPlaySystem.cpp b/MCUME_esp32/esp800/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..3fc07be --- /dev/null +++ b/MCUME_esp32/esp800/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +extern "C" { +void POKEYSND_Process(void *sndbuffer, int sndn); +} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + POKEYSND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/esp800/main/AudioPlaySystem.h b/MCUME_esp32/esp800/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/esp800/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/esp800/main/akey.h b/MCUME_esp32/esp800/main/akey.h new file mode 100644 index 0000000..b006751 --- /dev/null +++ b/MCUME_esp32/esp800/main/akey.h @@ -0,0 +1,239 @@ + #ifndef AKEY_H_ +#define AKEY_H_ +/* akey.h: Atari key codes */ + +/* INPUT_key_code values */ +#define AKEY_NONE -1 + +/* Special key codes. */ +#define AKEY_WARMSTART -2 +#define AKEY_COLDSTART -3 +#define AKEY_EXIT -4 +#define AKEY_BREAK -5 +#define AKEY_UI -7 +#define AKEY_SCREENSHOT -8 +#define AKEY_SCREENSHOT_INTERLACE -9 +#define AKEY_START -10 +#define AKEY_SELECT -11 +#define AKEY_OPTION -12 +#define AKEY_PBI_BB_MENU -13 +#define AKEY_CX85_1 -14 +#define AKEY_CX85_2 -15 +#define AKEY_CX85_3 -16 +#define AKEY_CX85_4 -17 +#define AKEY_CX85_5 -18 +#define AKEY_CX85_6 -19 +#define AKEY_CX85_7 -20 +#define AKEY_CX85_8 -21 +#define AKEY_CX85_9 -22 +#define AKEY_CX85_0 -23 +#define AKEY_CX85_PERIOD -24 +#define AKEY_CX85_MINUS -25 +#define AKEY_CX85_PLUS_ENTER -26 +#define AKEY_CX85_ESCAPE -27 +#define AKEY_CX85_NO -28 +#define AKEY_CX85_DELETE -29 +#define AKEY_CX85_YES -30 +#define AKEY_TURBO -31 +#ifdef USE_UI_BASIC_ONSCREEN_KEYBOARD +#define AKEY_KEYB -32 +#endif +#ifdef DIRECTX + /* special menu directives */ + #define AKEY32_MENU_SAVE_CONFIG -107 + #define AKEY32_UI_MOUSE_CLICK -108 +#endif + +#define AKEY_SHFT 0x40 +#define AKEY_CTRL 0x80 +#define AKEY_SHFTCTRL 0xc0 + +#define AKEY_0 0x32 +#define AKEY_1 0x1f +#define AKEY_2 0x1e +#define AKEY_3 0x1a +#define AKEY_4 0x18 +#define AKEY_5 0x1d +#define AKEY_6 0x1b +#define AKEY_7 0x33 +#define AKEY_8 0x35 +#define AKEY_9 0x30 + +#define AKEY_CTRL_0 (AKEY_CTRL | AKEY_0) +#define AKEY_CTRL_1 (AKEY_CTRL | AKEY_1) +#define AKEY_CTRL_2 (AKEY_CTRL | AKEY_2) +#define AKEY_CTRL_3 (AKEY_CTRL | AKEY_3) +#define AKEY_CTRL_4 (AKEY_CTRL | AKEY_4) +#define AKEY_CTRL_5 (AKEY_CTRL | AKEY_5) +#define AKEY_CTRL_6 (AKEY_CTRL | AKEY_6) +#define AKEY_CTRL_7 (AKEY_CTRL | AKEY_7) +#define AKEY_CTRL_8 (AKEY_CTRL | AKEY_8) +#define AKEY_CTRL_9 (AKEY_CTRL | AKEY_9) + +#define AKEY_a 0x3f +#define AKEY_b 0x15 +#define AKEY_c 0x12 +#define AKEY_d 0x3a +#define AKEY_e 0x2a +#define AKEY_f 0x38 +#define AKEY_g 0x3d +#define AKEY_h 0x39 +#define AKEY_i 0x0d +#define AKEY_j 0x01 +#define AKEY_k 0x05 +#define AKEY_l 0x00 +#define AKEY_m 0x25 +#define AKEY_n 0x23 +#define AKEY_o 0x08 +#define AKEY_p 0x0a +#define AKEY_q 0x2f +#define AKEY_r 0x28 +#define AKEY_s 0x3e +#define AKEY_t 0x2d +#define AKEY_u 0x0b +#define AKEY_v 0x10 +#define AKEY_w 0x2e +#define AKEY_x 0x16 +#define AKEY_y 0x2b +#define AKEY_z 0x17 + +#define AKEY_A (AKEY_SHFT | AKEY_a) +#define AKEY_B (AKEY_SHFT | AKEY_b) +#define AKEY_C (AKEY_SHFT | AKEY_c) +#define AKEY_D (AKEY_SHFT | AKEY_d) +#define AKEY_E (AKEY_SHFT | AKEY_e) +#define AKEY_F (AKEY_SHFT | AKEY_f) +#define AKEY_G (AKEY_SHFT | AKEY_g) +#define AKEY_H (AKEY_SHFT | AKEY_h) +#define AKEY_I (AKEY_SHFT | AKEY_i) +#define AKEY_J (AKEY_SHFT | AKEY_j) +#define AKEY_K (AKEY_SHFT | AKEY_k) +#define AKEY_L (AKEY_SHFT | AKEY_l) +#define AKEY_M (AKEY_SHFT | AKEY_m) +#define AKEY_N (AKEY_SHFT | AKEY_n) +#define AKEY_O (AKEY_SHFT | AKEY_o) +#define AKEY_P (AKEY_SHFT | AKEY_p) +#define AKEY_Q (AKEY_SHFT | AKEY_q) +#define AKEY_R (AKEY_SHFT | AKEY_r) +#define AKEY_S (AKEY_SHFT | AKEY_s) +#define AKEY_T (AKEY_SHFT | AKEY_t) +#define AKEY_U (AKEY_SHFT | AKEY_u) +#define AKEY_V (AKEY_SHFT | AKEY_v) +#define AKEY_W (AKEY_SHFT | AKEY_w) +#define AKEY_X (AKEY_SHFT | AKEY_x) +#define AKEY_Y (AKEY_SHFT | AKEY_y) +#define AKEY_Z (AKEY_SHFT | AKEY_z) + +#define AKEY_CTRL_a (AKEY_CTRL | AKEY_a) +#define AKEY_CTRL_b (AKEY_CTRL | AKEY_b) +#define AKEY_CTRL_c (AKEY_CTRL | AKEY_c) +#define AKEY_CTRL_d (AKEY_CTRL | AKEY_d) +#define AKEY_CTRL_e (AKEY_CTRL | AKEY_e) +#define AKEY_CTRL_f (AKEY_CTRL | AKEY_f) +#define AKEY_CTRL_g (AKEY_CTRL | AKEY_g) +#define AKEY_CTRL_h (AKEY_CTRL | AKEY_h) +#define AKEY_CTRL_i (AKEY_CTRL | AKEY_i) +#define AKEY_CTRL_j (AKEY_CTRL | AKEY_j) +#define AKEY_CTRL_k (AKEY_CTRL | AKEY_k) +#define AKEY_CTRL_l (AKEY_CTRL | AKEY_l) +#define AKEY_CTRL_m (AKEY_CTRL | AKEY_m) +#define AKEY_CTRL_n (AKEY_CTRL | AKEY_n) +#define AKEY_CTRL_o (AKEY_CTRL | AKEY_o) +#define AKEY_CTRL_p (AKEY_CTRL | AKEY_p) +#define AKEY_CTRL_q (AKEY_CTRL | AKEY_q) +#define AKEY_CTRL_r (AKEY_CTRL | AKEY_r) +#define AKEY_CTRL_s (AKEY_CTRL | AKEY_s) +#define AKEY_CTRL_t (AKEY_CTRL | AKEY_t) +#define AKEY_CTRL_u (AKEY_CTRL | AKEY_u) +#define AKEY_CTRL_v (AKEY_CTRL | AKEY_v) +#define AKEY_CTRL_w (AKEY_CTRL | AKEY_w) +#define AKEY_CTRL_x (AKEY_CTRL | AKEY_x) +#define AKEY_CTRL_y (AKEY_CTRL | AKEY_y) +#define AKEY_CTRL_z (AKEY_CTRL | AKEY_z) + +#define AKEY_CTRL_A (AKEY_CTRL | AKEY_A) +#define AKEY_CTRL_B (AKEY_CTRL | AKEY_B) +#define AKEY_CTRL_C (AKEY_CTRL | AKEY_C) +#define AKEY_CTRL_D (AKEY_CTRL | AKEY_D) +#define AKEY_CTRL_E (AKEY_CTRL | AKEY_E) +#define AKEY_CTRL_F (AKEY_CTRL | AKEY_F) +#define AKEY_CTRL_G (AKEY_CTRL | AKEY_G) +#define AKEY_CTRL_H (AKEY_CTRL | AKEY_H) +#define AKEY_CTRL_I (AKEY_CTRL | AKEY_I) +#define AKEY_CTRL_J (AKEY_CTRL | AKEY_J) +#define AKEY_CTRL_K (AKEY_CTRL | AKEY_K) +#define AKEY_CTRL_L (AKEY_CTRL | AKEY_L) +#define AKEY_CTRL_M (AKEY_CTRL | AKEY_M) +#define AKEY_CTRL_N (AKEY_CTRL | AKEY_N) +#define AKEY_CTRL_O (AKEY_CTRL | AKEY_O) +#define AKEY_CTRL_P (AKEY_CTRL | AKEY_P) +#define AKEY_CTRL_Q (AKEY_CTRL | AKEY_Q) +#define AKEY_CTRL_R (AKEY_CTRL | AKEY_R) +#define AKEY_CTRL_S (AKEY_CTRL | AKEY_S) +#define AKEY_CTRL_T (AKEY_CTRL | AKEY_T) +#define AKEY_CTRL_U (AKEY_CTRL | AKEY_U) +#define AKEY_CTRL_V (AKEY_CTRL | AKEY_V) +#define AKEY_CTRL_W (AKEY_CTRL | AKEY_W) +#define AKEY_CTRL_X (AKEY_CTRL | AKEY_X) +#define AKEY_CTRL_Y (AKEY_CTRL | AKEY_Y) +#define AKEY_CTRL_Z (AKEY_CTRL | AKEY_Z) + +#define AKEY_HELP 0x11 +#define AKEY_DOWN 0x8f +#define AKEY_LEFT 0x86 +#define AKEY_RIGHT 0x87 +#define AKEY_UP 0x8e +#define AKEY_BACKSPACE 0x34 +#define AKEY_DELETE_CHAR 0xb4 +#define AKEY_DELETE_LINE 0x74 +#define AKEY_INSERT_CHAR 0xb7 +#define AKEY_INSERT_LINE 0x77 +#define AKEY_ESCAPE 0x1c +#define AKEY_ATARI 0x27 +#define AKEY_CAPSLOCK 0x7c +#define AKEY_CAPSTOGGLE 0x3c +#define AKEY_TAB 0x2c +#define AKEY_SETTAB 0x6c +#define AKEY_CLRTAB 0xac +#define AKEY_RETURN 0x0c +#define AKEY_SPACE 0x21 +#define AKEY_EXCLAMATION 0x5f +#define AKEY_DBLQUOTE 0x5e +#define AKEY_HASH 0x5a +#define AKEY_DOLLAR 0x58 +#define AKEY_PERCENT 0x5d +#define AKEY_AMPERSAND 0x5b +#define AKEY_QUOTE 0x73 +#define AKEY_AT 0x75 +#define AKEY_PARENLEFT 0x70 +#define AKEY_PARENRIGHT 0x72 +#define AKEY_LESS 0x36 +#define AKEY_GREATER 0x37 +#define AKEY_EQUAL 0x0f +#define AKEY_QUESTION 0x66 +#define AKEY_MINUS 0x0e +#define AKEY_PLUS 0x06 +#define AKEY_ASTERISK 0x07 +#define AKEY_SLASH 0x26 +#define AKEY_COLON 0x42 +#define AKEY_SEMICOLON 0x02 +#define AKEY_COMMA 0x20 +#define AKEY_FULLSTOP 0x22 +#define AKEY_UNDERSCORE 0x4e +#define AKEY_BRACKETLEFT 0x60 +#define AKEY_BRACKETRIGHT 0x62 +#define AKEY_CIRCUMFLEX 0x47 +#define AKEY_BACKSLASH 0x46 +#define AKEY_BAR 0x4f +#define AKEY_CLEAR (AKEY_SHFT | AKEY_LESS) +#define AKEY_CARET (AKEY_SHFT | AKEY_ASTERISK) +#define AKEY_F1 0x03 +#define AKEY_F2 0x04 +#define AKEY_F3 0x13 +#define AKEY_F4 0x14 + +/* Following keys cannot be read with both shift and control pressed: + J K L ; + * Z X C V B F1 F2 F3 F4 HELP */ + + +#endif /* AKEY_H_ */ diff --git a/MCUME_esp32/esp800/main/antic.c b/MCUME_esp32/esp800/main/antic.c new file mode 100644 index 0000000..542f5fa --- /dev/null +++ b/MCUME_esp32/esp800/main/antic.c @@ -0,0 +1,4150 @@ +/* + * antic.c - ANTIC chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include + +#include "antic.h" +#include "cpu.h" +#include "gtia.h" +#include "memory.h" +#include "pokey.h" + +#ifdef NEW_CYCLE_EXACT +#include "cycle_map.h" +#endif + + +UWORD Screen_atari[ATARI_WIDTH / 2]; // = NULL; +#define scrn_line 0 //(ATARI_WIDTH / 2) + +#define DRAWLINE() \ + if ( (ANTIC_ypos > 8) && (ANTIC_ypos < 248)) { \ + emu_DrawLine((unsigned char *)&Screen_atari[32/sizeof(Screen_atari[0])], 320, 240, ANTIC_ypos-8); \ + } + + +#define LCHOP 3 /* do not build leftmost 0..3 characters in wide mode */ +#define RCHOP 3 /* do not build rightmost 0..3 characters in wide mode */ + +int ANTIC_break_ypos = 999; +#if !defined(BASIC) && !defined(CURSES_BASIC) +static int gtia_bug_active = FALSE; /* The GTIA bug mode is active */ +#endif +#ifdef NEW_CYCLE_EXACT +static void draw_partial_scanline(int l,int r); +static void update_scanline_chbase(void); +static void update_scanline_invert(void); +static void update_scanline_blank(void); +const int *ANTIC_cpu2antic_ptr; +const int *ANTIC_antic2cpu_ptr; +int ANTIC_delayed_wsync = 0; +static int dmactl_changed = 0; +static UBYTE delayed_DMACTL; +static int draw_antic_ptr_changed = 0; +static UBYTE need_load; +static int dmactl_bug_chdata; +#endif /* NEW_CYCLE_EXACT */ +#ifndef NO_SIMPLE_PAL_BLENDING +int ANTIC_pal_blending = 0; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* Video memory access is hidden behind these macros. It allows to track dirty video memory + to improve video system performance */ +#ifdef DIRTYRECT + +static UWORD *scratchUWordPtr; +static UWORD scratchUWord; +static ULONG *scratchULongPtr; +static ULONG scratchULong; +static UBYTE *scratchUBytePtr; +static UBYTE scratchUByte; + + +#ifdef NODIRTYCOMPARE + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = (val); \ + } while (0) +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = (val); \ + } while (0) +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = (val); \ + } while (0) +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE*) (ptr); \ + scratchULong = (ULONG) (size); \ + memset(Screen_dirty + (((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3), 1, scratchULong >> 3); \ + memset(scratchUBytePtr, (val), scratchULong); \ + } while (0) + +#else /* NODIRTYCOMPARE not defined: */ + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + scratchUWord = (val); \ + if (*scratchUWordPtr != scratchUWord) { \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = scratchUWord; \ + } \ + } while (0) +#ifndef WORDS_UNALIGNED_OK +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#else +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari + 2) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#endif +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + scratchUByte = (val); \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } while (0) +static UBYTE *scratchFillLimit; +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE *) (ptr); \ + scratchUByte = (UBYTE) (val); \ + scratchFillLimit = scratchUBytePtr + (size); \ + for (; scratchUBytePtr < scratchFillLimit; scratchUBytePtr++) { \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } \ + } while (0) + +#endif /* NODIRTYCOMPARE */ + +#else /* DIRTYRECT not defined: */ + +#define WRITE_VIDEO(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_LONG(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_BYTE(ptr, val) (*(ptr) = val) +#define FILL_VIDEO(ptr, val, size) memset(ptr, val, size) + +#endif /* DIRTYRECT */ + +#define READ_VIDEO_LONG(ptr) (*(ptr)) + +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size) +{ + FILL_VIDEO(ptr, val, size); +} + +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val) +{ + WRITE_VIDEO_BYTE(ptr, val); +} + + +/* Memory access helpers----------------------------------------------------- */ +/* Some optimizations result in unaligned 32-bit accesses. These macros have + been introduced for machines that don't allow unaligned memory accesses. */ + +#ifdef DIRTYRECT +/* STAT_UNALIGNED_WORDS doesn't work with DIRTYRECT */ +#define WRITE_VIDEO_LONG_UNALIGNED WRITE_VIDEO_LONG +#else +#define WRITE_VIDEO_LONG_UNALIGNED(ptr, val) UNALIGNED_PUT_LONG((ptr), (val), Screen_atari_write_long_stat) +#endif + +#ifdef WORDS_UNALIGNED_OK +#define IS_ZERO_ULONG(x) (! UNALIGNED_GET_LONG(x, pm_scanline_read_long_stat)) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p), (l)[(x) >> 4]); \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p) + 1, (l)[(x) & 0xf]); \ + } +#else /* WORDS_UNALIGNED_OK */ +#define IS_ZERO_ULONG(x) (!((const UBYTE *)(x))[0] && !((const UBYTE *)(x))[1] && !((const UBYTE *)(x))[2] && !((const UBYTE *)(x))[3]) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO((UWORD *) (p), (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 1, (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 2, (UWORD) ((l)[(x) & 0xf])); \ + WRITE_VIDEO((UWORD *) (p) + 3, (UWORD) ((l)[(x) & 0xf])); \ + } +#endif /* WORDS_UNALIGNED_OK */ + +/* ANTIC Registers --------------------------------------------------------- */ + +UBYTE ANTIC_DMACTL; +UBYTE ANTIC_CHACTL; +UWORD ANTIC_dlist; +UBYTE ANTIC_HSCROL; +UBYTE ANTIC_VSCROL; +UBYTE ANTIC_PMBASE; +UBYTE ANTIC_CHBASE; +UBYTE ANTIC_NMIEN; +UBYTE ANTIC_NMIST; + +/* ANTIC Memory ------------------------------------------------------------ */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) +static UBYTE antic_memory[52]; +#define ANTIC_margin 4 +/* It's number of bytes in antic_memory, which are never loaded, but may be + read in wide playfield mode. These bytes are uninitialized, because on + real computer there's some kind of 'garbage'. Possibly 1 is enough, but + 4 bytes surely won't cause negative indexes. :) */ + +/* Screen ----------------------------------------------------------------- + Define screen as ULONG to ensure that it is Longword aligned. + This allows special optimisations under certain conditions. + ------------------------------------------------------------------------ */ + +static UWORD *scrn_ptr; +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Separate access to XE extended memory ----------------------------------- */ +/* It's available in 130 XE and 320 KB Compy Shop. + Note: during ANTIC access to extended memory in Compy Shop Self Test + is disabled. It is unknown if this is true for real 130 XE. If not, + then some extra code has to be added to: + - check if selftest_enabled is set + - check if the address is in range 0x5000..0x57ff + - if both conditions are true, then access memory instead of ANTIC_xe_ptr */ + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in MEMORY_mem[0x4000..0x7fff], + then NULL. */ +const UBYTE *ANTIC_xe_ptr = NULL; + +/* ANTIC Timing -------------------------------------------------------------- + +NOTE: this information was written before NEW_CYCLE_EXACT was introduced! + +I've introduced global variable ANTIC_xpos, which contains current number of cycle +in a line. This simplifies ANTIC/CPU timing much. The CPU_GO() function which +emulates CPU is now void and is called with ANTIC_xpos limit, below which CPU can go. + +All strange variables holding 'unused cycles', 'DMA cycles', 'allocated cycles' +etc. are removed. Simply whenever ANTIC fetches a byte, it takes single cycle, +which can be done now with ANTIC_xpos++. There's only one exception: in text modes +2-5 ANTIC takes more bytes than cycles, because it does less than ANTIC_DMAR refresh +cycles. + +Now emulation is really screenline-oriented. We do ANTIC_ypos++ after a line, +not inside it. + +This simplified diagram shows when what is done in a line: + +MDPPPPDD..............(------R/S/F------).......... +^ ^ ^ ^ ^ ^ ^ ^ ---> time/xpos +0 | NMIST_C NMI_C SCR_C WSYNC_C|LINE_C +VSCON_C VSCOF_C + +M - fetch Missiles +D - fetch DL +P - fetch Players +S - fetch Screen +F - fetch Font (in text modes) +R - refresh Memory (ANTIC_DMAR cycles) + +Only Memory Refresh happens in every line, other tasks are optional. + +Below are exact diagrams for some non-scrolled modes: + 11111111111111 + 11111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111 +012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 + /--------------------------narrow------------------------------\ + /----------------------------------normal--------------------------------------\ + /-------------------------------------------wide--------------------------------------------\ + +blank line: +MDPPPPDD.................R...R...R...R...R...R...R...R...R........................................................ + +mode 8,9: +MDPPPPDD....S.......S....R..SR...R..SR...R..SR...R..SR...R..S.......S.......S.......S.......S.......S............. + +mode a,b,c: +MDPPPPDD....S...S...S...SR..SR..SR..SR..SR..SR..SR..SR..SR..S...S...S...S...S...S...S...S...S...S...S...S......... + +mode d,e,f: +MDPPPPDD....S.S.S.S.S.S.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S......... + +Notes: +* At the beginning of a line fetched are: + - a byte of Missiles + - a byte of DL (instruction) + - four bytes of Players + - two bytes of DL argument (jump or screen address) + The emulator, however, fetches them all continuously. + +* Refresh cycles and Screen/Font fetches have been tested for some modes (see above). + This is for making the emulator more accurate, able to change colour registers, + sprite positions or GTIA modes during scanline. These modes are the most commonly used + with those effects. + Currently this isn't implemented, and all R/S/F cycles are fetched continuously in *all* modes + (however, right number of cycles is taken in every mode, basing on screen width and HSCROL). + +There are a few constants representing following events: + +* VSCON_C - in first VSC line dctr is loaded with VSCROL + +* ANTIC_NMIST_C - NMIST is updated (set to 0x9f on DLI, set to 0x5f on VBLKI) + +* ANTIC_NMI_C - If NMIEN permits, NMI interrupt is generated + +* SCR_C - We draw whole line of screen. On a real computer you can change + ANTIC/GTIA registers while displaying screen, however this emulator + isn't that accurate. + +* ANTIC_WSYNC_C - ANTIC holds CPU until this moment, when WSYNC is written + +* VSCOF_C - in last VSC line dctr is compared with VSCROL + +* ANTIC_LINE_C - simply end of line (this used to be called CPUL) + +All constants are determined by tests on real Atari computer. It is assumed, +that ANTIC registers are read with LDA, LDX, LDY and written with STA, STX, +STY, all in absolute addressing mode. All these instructions last 4 cycles +and perform read/write operation in last cycle. The CPU emulation should +correctly emulate WSYNC and add cycles for current instruction BEFORE +executing it. That's why VSCOF_C > ANTIC_LINE_C is correct. + +How WSYNC is now implemented: + +* On writing WSYNC: + - if ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C, + we only change ANTIC_xpos to ANTIC_WSYNC_C - that's all + - otherwise we set ANTIC_wsync_halt and change ANTIC_xpos to ANTIC_xpos_limit causing CPU_GO() + to return + +* At the beginning of CPU_GO() (CPU emulation), when ANTIC_wsync_halt is set: + - if ANTIC_xpos_limit < ANTIC_WSYNC_C we return + - else we set ANTIC_xpos to ANTIC_WSYNC_C, reset ANTIC_wsync_halt and emulate some cycles + +We don't emulate ANTIC_NMIST_C, ANTIC_NMI_C and SCR_C if it is unnecessary. +These are all cases: + +* Common overscreen line + Nothing happens except that ANTIC gets ANTIC_DMAR cycles: + ANTIC_xpos += ANTIC_DMAR; GOEOL; + +* First overscreen line - start of vertical blank + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x5f + if (ANTIC_NMIEN & 0x40) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - ANTIC gets ANTIC_DMAR cycles + - CPU goes until ANTIC_LINE_C + +* Screen line without DLI + - ANTIC fetches DL and P/MG + - CPU goes until SCR_C + - ANTIC draws whole line fetching Screen/Font and refreshing memory + - CPU goes until ANTIC_LINE_C + +* Screen line with DLI + - ANTIC fetches DL and P/MG + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x9f + if (ANTIC_NMIEN & 0x80) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - CPU goes until SCR_C + - ANTIC draws line with ANTIC_DMAR + - CPU goes until ANTIC_LINE_C + + -------------------------------------------------------------------------- */ + +#define VSCON_C 1 +#define SCR_C 28 +#define VSCOF_C 112 + +unsigned int ANTIC_screenline_cpu_clock = 0; + +#ifdef NEW_CYCLE_EXACT +#define UPDATE_DMACTL do{if (dmactl_changed) { \ + dmactl_changed = 0; \ + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, delayed_DMACTL); \ + } \ + if (draw_antic_ptr_changed) { \ + draw_antic_ptr_changed = 0; \ + draw_antic_ptr = saved_draw_antic_ptr; \ + }}while(0) +#else +#define UPDATE_DMACTL do{}while(0) +#endif /* NEW_CYCLE_EXACT */ +#define UPDATE_GTIA_BUG /* update GTIA if it was in bug mode */\ + do{if(gtia_bug_active) {\ + /* restore draw_antic_ptr for multi-line modes*/\ + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode];\ + gtia_bug_active = FALSE;\ + }}while(0) +#define GOEOL_CYCLE_EXACT CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_LINE_C]); \ + ANTIC_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; \ + ANTIC_xpos -= ANTIC_LINE_C; \ + ANTIC_screenline_cpu_clock += ANTIC_LINE_C; \ + DRAWLINE();ANTIC_ypos++; \ + GTIA_UpdatePmplColls(); +#define GOEOL CPU_GO(ANTIC_LINE_C); ANTIC_xpos -= ANTIC_LINE_C; ANTIC_screenline_cpu_clock += ANTIC_LINE_C; UPDATE_DMACTL; DRAWLINE();ANTIC_ypos++; UPDATE_GTIA_BUG +#define OVERSCREEN_LINE ANTIC_xpos += ANTIC_DMAR; GOEOL + +int ANTIC_xpos = 0; +int ANTIC_xpos_limit; +int ANTIC_wsync_halt = FALSE; + +int ANTIC_ypos; /* Line number - lines 8..247 are on screen */ + +/* Timing in first line of modes 2-5 +In these modes ANTIC takes more bytes than cycles. Despite this, it would be +possible that SCR_C + cycles_taken > ANTIC_WSYNC_C. To avoid this we must take some +cycles before SCR_C. before_cycles contains number of them, while extra_cycles +contains difference between bytes taken and cycles taken plus before_cycles. */ + +#define BEFORE_CYCLES (SCR_C - 28) +/* It's number of cycles taken before SCR_C for not scrolled, narrow playfield. + It wasn't tested, but should be ok. ;) */ + +/* Light pen support ------------------------------------------------------- */ + +static UBYTE PENH; +static UBYTE PENV; +UBYTE ANTIC_PENH_input = 0x00; +UBYTE ANTIC_PENV_input = 0xff; + +#ifndef BASIC + +/* Internal ANTIC registers ------------------------------------------------ */ + +static UWORD screenaddr; /* Screen Pointer */ +static UBYTE IR; /* Instruction Register */ +static UBYTE anticmode; /* Antic mode */ +static UBYTE dctr; /* Delta Counter */ +static UBYTE lastline; /* dctr limit */ +static UBYTE need_dl; /* boolean: fetch DL next line */ +static UBYTE vscrol_off; /* boolean: displaying line ending VSC */ + +#endif + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Pre-computed values for improved performance ---------------------------- */ + +#define NORMAL0 0 /* modes 2,3,4,5,0xd,0xe,0xf */ +#define NORMAL1 1 /* modes 6,7,0xa,0xb,0xc */ +#define NORMAL2 2 /* modes 8,9 */ +#define SCROLL0 3 /* modes 2,3,4,5,0xd,0xe,0xf with HSC */ +#define SCROLL1 4 /* modes 6,7,0xa,0xb,0xc with HSC */ +#define SCROLL2 5 /* modes 8,9 with HSC */ +static int md; /* current mode NORMAL0..SCROLL2 */ +/* tables for modes NORMAL0..SCROLL2 */ +static int chars_read[6]; +static int chars_displayed[6]; +static int x_min[6]; +static int ch_offset[6]; +static int load_cycles[6]; +static int font_cycles[6]; +static int before_cycles[6]; +static int extra_cycles[6]; + +/* border parameters for current display width */ +static int left_border_chars; +static int right_border_start; +#ifdef NEW_CYCLE_EXACT +static int left_border_start = LCHOP * 4; +static int right_border_end = (48 - RCHOP) * 4; +#define LBORDER_START left_border_start +#define RBORDER_END right_border_end +#else +#define LBORDER_START (LCHOP * 4) +#define RBORDER_END ((48 - RCHOP) * 4) +#endif /* NEW_CYCLE_EXACT */ + +/* set with CHBASE *and* CHACTL - bits 0..2 set if flip on */ +static UWORD chbase_20; /* CHBASE for 20 character mode */ + +/* set with CHACTL */ +static UBYTE invert_mask; +static int blank_mask; + +/* A scanline of AN0 and AN1 signals as transmitted from ANTIC to GTIA. + In every byte, bit 0 is AN0 and bit 1 is AN1 */ +static UBYTE an_scanline[ATARI_WIDTH / 2 + 8]; + +/* lookup tables */ +static UBYTE blank_lookup[256]; +static UWORD lookup2[256]; +ULONG ANTIC_lookup_gtia9[16]; +ULONG ANTIC_lookup_gtia11[16]; +static UBYTE playfield_lookup[257]; +static UBYTE mode_e_an_lookup[256]; + +/* Colour lookup table + This single table replaces 4 previously used: cl_word, cur_prior, + prior_table and pf_colls. It should be treated as a two-dimensional table, + with playfield colours in rows and PMG colours in columns: + no_PMG PM0 PM1 PM01 PM2 PM3 PM23 PM023 PM123 PM0123 PM25 PM35 PM235 colls ... ... + BAK + ... + HI2 + HI3 + PF0 + PF1 + PF2 + PF3 + The table contains word value (lsb = msb) of colour to be drawn. + The table is being updated taking current PRIOR setting into consideration. + '...' represent two unused columns and single unused row. + HI2 and HI3 are used only if colour_translation_table is being used. + They're colours of hi-res pixels on PF2 and PF3 respectively (PF2 is + default background for hi-res, PF3 is PM5). + Columns PM023, PM123 and PM0123 are used when PRIOR & 0xf equals any + of 5,7,0xc,0xd,0xe,0xf. The columns represent PM0, PM1 and PM01 respectively + covered by PM2 and/or PM3. This is to handle black colour on PF2 and PF3. + Columns PM25, PM35 and PM235 are used when PRIOR & 0x1f equals any + of 0x10,0x1a,0x1c,0x1e. The columns represent PM2, PM3 and PM23 + respectively covered by PM5. This to handle colour on PF0 and PF1: + PF3 if (PRIOR & 0x1f) == 0x10, PF0 or PF1 otherwise. + Additional column 'colls' holds collisions of playfields with PMG. */ + +UWORD ANTIC_cl[128]; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 +#define C_BLACK (C_PF3 | C_PM25) + +/* these are byte-offsets in the table, so left shift for indexing word table + has been avoided */ +#define COLOUR(x) (*(UWORD *) ((UBYTE *) ANTIC_cl + (x) )) +#define L_PM0 (2 * C_PM0) +#define L_PM1 (2 * C_PM1) +#define L_PM01 (2 * C_PM01) +#define L_PM2 (2 * C_PM2) +#define L_PM3 (2 * C_PM3) +#define L_PM23 (2 * C_PM23) +#define L_PM023 (2 * C_PM023) +#define L_PM123 (2 * C_PM123) +#define L_PM0123 (2 * C_PM0123) +#define L_PM25 (2 * C_PM25) +#define L_PM35 (2 * C_PM35) +#define L_PM235 (2 * C_PM235) +#define L_COLLS (2 * C_COLLS) +#define L_BAK (2 * C_BAK) +#define L_HI2 (2 * C_HI2) +#define L_HI3 (2 * C_HI3) +#define L_PF0 (2 * C_PF0) +#define L_PF1 (2 * C_PF1) +#define L_PF2 (2 * C_PF2) +#define L_PF3 (2 * C_PF3) +#define L_BLACK (2 * C_BLACK) + +/* Blank areas optimizations + Routines for most graphics modes take advantage of fact, that often + large areas of screen are background colour. If it is possible, 8 pixels + of background are drawn at once - with two longs or four words, if + the platform doesn't allow unaligned long access. + Artifacting also uses unaligned long access if it's supported. */ + +#ifdef WORDS_UNALIGNED_OK + +#define INIT_BACKGROUND_6 ULONG background = ANTIC_cl[C_PF2] | (((ULONG) ANTIC_cl[C_PF2]) << 16); +#define INIT_BACKGROUND_8 ULONG background = ANTIC_lookup_gtia9[0]; +#define DRAW_BACKGROUND(colreg) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, background); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, background); \ + ptr += 4; \ + } +#define DRAW_ARTIF { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, art_curtable[(UBYTE) (screendata_tally >> 10)]); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, art_curtable[(UBYTE) (screendata_tally >> 6)]); \ + ptr += 4; \ + } + +#else + +#define INIT_BACKGROUND_6 +#define INIT_BACKGROUND_8 +#define DRAW_BACKGROUND(colreg) {\ + WRITE_VIDEO(ptr, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 1, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 2, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 3, ANTIC_cl[colreg]); \ + ptr += 4;\ + } +#define DRAW_ARTIF {\ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x03fc00) >> 9]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x03fc00) >> 9) + 1]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x003fc0) >> 5]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x003fc0) >> 5) + 1]); \ + } + +#endif /* WORDS_UNALIGNED_OK */ + +#define DRAW_ARTIF_NEW {\ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x03f000) >> 12]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x00fc00) >> 10]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x003f00) >> 8]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x000fc0) >> 6]); \ + } + +/* Hi-res modes optimizations + Now hi-res modes are drawn with words, not bytes. Endianess defaults + to little-endian. WORDS_BIGENDIAN should be defined when compiling on + a big-endian machine. */ + +#ifdef WORDS_BIGENDIAN +#define BYTE0_MASK 0xff00 +#define BYTE1_MASK 0x00ff +#define HIRES_MASK_01 0xfff0 +#define HIRES_MASK_10 0xf0ff +#define HIRES_LUM_01 0x000f +#define HIRES_LUM_10 0x0f00 +#else +#define BYTE0_MASK 0x00ff +#define BYTE1_MASK 0xff00 +#define HIRES_MASK_01 0xf0ff +#define HIRES_MASK_10 0xfff0 +#define HIRES_LUM_01 0x0f00 +#define HIRES_LUM_10 0x000f +#endif + +static UWORD hires_lookup_n[128]; +static UWORD hires_lookup_m[128]; +#define hires_norm(x) hires_lookup_n[(x) >> 1] +#define hires_mask(x) hires_lookup_m[(x) >> 1] + +#ifndef USE_COLOUR_TRANSLATION_TABLE +int ANTIC_artif_new = FALSE; /* New type of artifacting */ +UWORD ANTIC_hires_lookup_l[128]; /* accessed in gtia.c */ +#define hires_lum(x) ANTIC_hires_lookup_l[(x) >> 1] +#endif + +/* Player/Missile Graphics ------------------------------------------------- */ + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) +#define PF_COLLS(x) (((UBYTE *) &ANTIC_cl)[(x) + L_COLLS]) + +static int singleline; +int ANTIC_player_dma_enabled; +int ANTIC_player_gra_enabled; +int ANTIC_missile_dma_enabled; +int ANTIC_missile_gra_enabled; +int ANTIC_player_flickering; +int ANTIC_missile_flickering; + +static UWORD pmbase_s; +static UWORD pmbase_d; + +/* PMG lookup tables */ +static UBYTE pm_lookup_table[20][256]; +/* current PMG lookup table */ +static const UBYTE *pm_lookup_ptr; + +#define PL_00 0 /* 0x00,0x01,0x02,0x03,0x04,0x06,0x08,0x09,0x0a,0x0b */ +#define PL_05 1 /* 0x05,0x07,0x0c,0x0d,0x0e,0x0f */ +#define PL_10 2 /* 0x10,0x1a */ +#define PL_11 3 /* 0x11,0x18,0x19 */ +#define PL_12 4 /* 0x12 */ +#define PL_13 5 /* 0x13,0x1b */ +#define PL_14 6 /* 0x14,0x16 */ +#define PL_15 7 /* 0x15,0x17,0x1d,0x1f */ +#define PL_1c 8 /* 0x1c */ +#define PL_1e 9 /* 0x1e */ +#define PL_20 10 /* 0x20,0x21,0x22,0x23,0x24,0x26,0x28,0x29,0x2a,0x2b */ +#define PL_25 11 /* 0x25,0x27,0x2c,0x2d,0x2e,0x2f */ +#define PL_30 12 /* 0x30,0x3a */ +#define PL_31 13 /* 0x31,0x38,0x39 */ +#define PL_32 14 /* 0x32 */ +#define PL_33 15 /* 0x33,0x3b */ +#define PL_34 16 /* 0x34,0x36 */ +#define PL_35 17 /* 0x35,0x37,0x3d,0x3f */ +#define PL_3c 18 /* 0x3c */ +#define PL_3e 19 /* 0x3e */ + +static const UBYTE prior_to_pm_lookup[64] = { + PL_00, PL_00, PL_00, PL_00, PL_00, PL_05, PL_00, PL_05, + PL_00, PL_00, PL_00, PL_00, PL_05, PL_05, PL_05, PL_05, + PL_10, PL_11, PL_12, PL_13, PL_14, PL_15, PL_14, PL_15, + PL_11, PL_11, PL_10, PL_13, PL_1c, PL_15, PL_1e, PL_15, + PL_20, PL_20, PL_20, PL_20, PL_20, PL_25, PL_20, PL_25, + PL_20, PL_20, PL_20, PL_20, PL_25, PL_25, PL_25, PL_25, + PL_30, PL_31, PL_32, PL_33, PL_34, PL_35, PL_34, PL_35, + PL_31, PL_31, PL_30, PL_33, PL_3c, PL_35, PL_3e, PL_35 +}; + +static void init_pm_lookup(void) +{ + static const UBYTE pm_lookup_template[10][16] = { + /* PL_20 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_25 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM023, L_PM123, L_PM0123, + L_PM3, L_PM023, L_PM123, L_PM0123, L_PM23, L_PM023, L_PM123, L_PM0123 }, + /* PL_30 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM25, L_PM0, L_PM1, L_PM01, + L_PM35, L_PM0, L_PM1, L_PM01, L_PM235, L_PM0, L_PM1, L_PM01 }, + /* PL_31 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_32 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01, + L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01 }, + /* PL_33 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01, + L_BLACK, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01 }, + /* PL_34 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, + L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3 }, + /* PL_35 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_BLACK, L_BLACK, L_BLACK, L_BLACK, + L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK }, + /* PL_3c */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_PM25, L_PM25, L_PM25, + L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25 }, + /* PL_3e */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_BLACK, L_BLACK, L_BLACK, + L_PM25, L_BLACK, L_BLACK, L_BLACK, L_PM25, L_BLACK, L_BLACK, L_BLACK } + }; + + static const UBYTE multi_to_normal[] = { + L_BAK, + L_PM0, L_PM1, L_PM0, + L_PM2, L_PM3, L_PM2, + L_PM023, L_PM123, L_PM023, + L_PM25, L_PM35, L_PM25 + }; + + int i; + int j; + UBYTE temp; + + for (i = 0; i <= 1; i++) + for (j = 0; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][(j & 0xf) | (j >> 4)]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; i <= 9; i++) { + for (j = 0; j <= 15; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i < 7 ? 0 : 1][j]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][j & 0xf]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + } +} + +static const UBYTE hold_missiles_tab[16] = { + 0x00,0x03,0x0c,0x0f,0x30,0x33,0x3c,0x3f, + 0xc0,0xc3,0xcc,0xcf,0xf0,0xf3,0xfc,0xff}; + +static void pmg_dma(void) +{ + /* VDELAY bit set == GTIA ignores PMG DMA in even lines */ + if (ANTIC_player_dma_enabled) { + if (ANTIC_player_gra_enabled) { + const UBYTE *base; + if (singleline) { + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + base = ANTIC_xe_ptr + pmbase_s - 0x4000 + ANTIC_ypos; + else + base = memory + pmbase_s + ANTIC_ypos; + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x400]; + GTIA_GRAFP1 = base[0x500]; + GTIA_GRAFP2 = base[0x600]; + GTIA_GRAFP3 = base[0x700]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x400]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x500]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x600]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x700]; + } + } + else { + if (ANTIC_xe_ptr != NULL && pmbase_d < 0x8000 && pmbase_d >= 0x4000) + base = ANTIC_xe_ptr + (pmbase_d - 0x4000) + (ANTIC_ypos >> 1); + else + base = memory + pmbase_d + (ANTIC_ypos >> 1); + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x200]; + GTIA_GRAFP1 = base[0x280]; + GTIA_GRAFP2 = base[0x300]; + GTIA_GRAFP3 = base[0x380]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x200]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x280]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x300]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x380]; + } + } + } + ANTIC_xpos += 4; + } + if (ANTIC_missile_dma_enabled) { + if (ANTIC_missile_gra_enabled) { + UBYTE data; + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + data = ANTIC_xe_ptr[singleline ? pmbase_s + ANTIC_ypos + 0x300 - 0x4000 : pmbase_d + (ANTIC_ypos >> 1) + 0x180 - 0x4000]; + else + data = MEMORY_dGetByte(singleline ? pmbase_s + ANTIC_ypos + 0x300 : pmbase_d + (ANTIC_ypos >> 1) + 0x180); + /* in odd lines load all missiles, in even only those, for which VDELAY bit is zero */ + GTIA_GRAFM = ANTIC_ypos & 1 ? data : ((GTIA_GRAFM ^ data) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ data; + } + ANTIC_xpos++; + } +} + +/* Artifacting ------------------------------------------------------------ */ + +int ANTIC_artif_mode; + +static UWORD art_lookup_new[64]; +static UWORD art_colour1_new; +static UWORD art_colour2_new; + +static ULONG art_lookup_normal[256]; +static ULONG art_lookup_reverse[256]; +static ULONG art_bkmask_normal[256]; +static ULONG art_lummask_normal[256]; +static ULONG art_bkmask_reverse[256]; +static ULONG art_lummask_reverse[256]; + +static ULONG *art_curtable = art_lookup_normal; +static ULONG *art_curbkmask = art_bkmask_normal; +static ULONG *art_curlummask = art_lummask_normal; + +static UWORD art_normal_colpf1_save; +static UWORD art_normal_colpf2_save; +static UWORD art_reverse_colpf1_save; +static UWORD art_reverse_colpf2_save; + +static void setup_art_colours(void) +{ + static UWORD *art_colpf1_save = &art_normal_colpf1_save; + static UWORD *art_colpf2_save = &art_normal_colpf2_save; + UWORD curlum = ANTIC_cl[C_PF1] & 0x0f0f; + + if (curlum != *art_colpf1_save || ANTIC_cl[C_PF2] != *art_colpf2_save) { + if (curlum < (ANTIC_cl[C_PF2] & 0x0f0f)) { + art_colpf1_save = &art_reverse_colpf1_save; + art_colpf2_save = &art_reverse_colpf2_save; + art_curtable = art_lookup_reverse; + art_curlummask = art_lummask_reverse; + art_curbkmask = art_bkmask_reverse; + } + else { + art_colpf1_save = &art_normal_colpf1_save; + art_colpf2_save = &art_normal_colpf2_save; + art_curtable = art_lookup_normal; + art_curlummask = art_lummask_normal; + art_curbkmask = art_bkmask_normal; + } + if (curlum ^ *art_colpf1_save) { + int i; + ULONG new_colour = curlum ^ *art_colpf1_save; + new_colour |= new_colour << 16; + *art_colpf1_save = curlum; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curlummask[i] & new_colour; + } + if (ANTIC_cl[C_PF2] ^ *art_colpf2_save) { + int i; + ULONG new_colour = ANTIC_cl[C_PF2] ^ *art_colpf2_save; + new_colour |= new_colour << 16; + *art_colpf2_save = ANTIC_cl[C_PF2]; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curbkmask[i] & new_colour; + } + + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int ANTIC_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) +#if SKIP + int i, j; + + for (i = j = 1; i < *argc; i++) { + int i_a = (i + 1 < *argc); /* is argument available? */ + int a_m = FALSE; /* error, argument missing! */ + + if (strcmp(argv[i], "-artif") == 0) { + if (i_a) { + ANTIC_artif_mode = Util_sscandec(argv[++i]); + if (ANTIC_artif_mode < 0 || ANTIC_artif_mode > 4) { + Log_print("Invalid artifacting mode, using default."); + ANTIC_artif_mode = 0; + } + } + else a_m = TRUE; + } + else { + if (strcmp(argv[i], "-help") == 0) { + Log_print("\t-artif Set artifacting mode 0-4 (0 = disable)"); + } + argv[j++] = argv[i]; + } + + if (a_m) { + Log_print("Missing argument for '%s'", argv[i]); + return FALSE; + } + } + *argc = j; +#endif + ANTIC_UpdateArtifacting(); + + playfield_lookup[0x00] = L_BAK; + playfield_lookup[0x40] = L_PF0; + playfield_lookup[0x80] = L_PF1; + playfield_lookup[0xc0] = L_PF2; + playfield_lookup[0x100] = L_PF3; + blank_lookup[0x80] = blank_lookup[0xa0] = blank_lookup[0xc0] = blank_lookup[0xe0] = 0x00; + hires_mask(0x00) = 0xffff; +#ifdef USE_COLOUR_TRANSLATION_TABLE + hires_mask(0x40) = BYTE0_MASK; + hires_mask(0x80) = BYTE1_MASK; + hires_mask(0xc0) = 0; +#else + hires_mask(0x40) = HIRES_MASK_01; + hires_mask(0x80) = HIRES_MASK_10; + hires_mask(0xc0) = 0xf0f0; + hires_lum(0x00) = hires_lum(0x40) = hires_lum(0x80) = hires_lum(0xc0) = 0; +#endif + init_pm_lookup(); + mode_e_an_lookup[0] = 0; + mode_e_an_lookup[1] = mode_e_an_lookup[4] = mode_e_an_lookup[0x10] = mode_e_an_lookup[0x40] = 0; + mode_e_an_lookup[2] = mode_e_an_lookup[8] = mode_e_an_lookup[0x20] = mode_e_an_lookup[0x80] = 1; + mode_e_an_lookup[3] = mode_e_an_lookup[12] = mode_e_an_lookup[0x30] = mode_e_an_lookup[0xc0] = 2; +#ifdef NEW_CYCLE_EXACT + CYCLE_MAP_Create(); + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +void ANTIC_Reset(void) +{ + ANTIC_NMIEN = 0x00; + ANTIC_NMIST = 0x1f; + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, 0); +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Border ------------------------------------------------------------------ */ + +#define DO_BORDER_1 {\ + if (IS_ZERO_ULONG(pm_scanline_ptr)) {\ + ULONG *l_ptr = (ULONG *) ptr;\ + WRITE_VIDEO_LONG(l_ptr++, background); \ + WRITE_VIDEO_LONG(l_ptr++, background); \ + ptr = (UWORD *) l_ptr;\ + pm_scanline_ptr += 4;\ + }\ + else {\ + int k = 4;\ + do + +#define DO_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++]));\ + while (--k);\ + }\ +} + +#define DO_GTIA10_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++ | 1]));\ + while (--k);\ + }\ +} + +static void do_border(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER +} + +static void do_border_gtia10(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_GTIA10_BORDER + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[*pm_scanline_ptr | 1])); /* one extra pixel, because of the right shift of gtia10*/ + /* right border */ + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + if (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) { + ptr = &scrn_ptr[right_border_start + 1]; /*start one pixel further right because of the right shift of gtia10*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[1] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[2] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[3] | 1])); + pm_scanline_ptr += 4; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_GTIA10_BORDER + } +} + +static void do_border_gtia11(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) +} + +static void draw_antic_0(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_BAK], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia10(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + do + DO_GTIA10_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_PM0], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia11(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) + } + else + FILL_VIDEO(ptr, ANTIC_lookup_gtia11[0], (RBORDER_END - LBORDER_START) * 2); +} + +/* ANTIC modes ------------------------------------------------------------- */ + +static const UBYTE gtia_10_lookup[] = +{L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3, + L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3}; +static const UBYTE gtia_10_pm[] = +{1, 2, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static void draw_an_gtia9(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr + 1, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border(); +} + +static void draw_an_gtia10(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) | 1; + UWORD lookup_gtia10[16]; + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i - 1] << 2) + an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia10[pixel]); + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr + 1, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr + 1, lookup_gtia10[pixel]); + } + i++; + } + do_border_gtia10(); +} + +static void draw_an_gtia11(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr + 1, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border_gtia11(); +} + +static void draw_an_gtia_bug(const ULONG *t_pm_scanline_ptr) +{ + static const UBYTE gtia_bug_colreg[] = {L_PF0, L_PF1, L_PF2, L_PF3}; + UWORD lookup_gtia_bug[16]; + int i; + lookup_gtia_bug[0] = ANTIC_cl[C_PF0]; + lookup_gtia_bug[1] = ANTIC_cl[C_PF1]; + lookup_gtia_bug[2] = ANTIC_cl[C_PF2]; + lookup_gtia_bug[3] = ANTIC_cl[C_PF3]; + i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline); + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_bug_colreg[pixel]; + PF_COLLS(colreg) |= pm_reg; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia_bug[pixel]); + } + i++; + } + do_border(); +} + +#define DEFINE_DRAW_AN(anticmode) \ + static void draw_antic_ ## anticmode ## _gtia9 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia9(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia10(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia11(t_pm_scanline_ptr);\ + } + +#define CHAR_LOOP_BEGIN do { +#define CHAR_LOOP_END } while (--nchars); + +#define DO_PMG_LORES PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++;\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + +#ifdef ALTERNATE_LOOP_COUNTERS /* speeds-up pmg in hires a bit or not? try it :) */ +#define FOUR_LOOP_BEGIN(data) data |= 0x800000; do { /* data becomes negative after four data <<= 2 */ +#define FOUR_LOOP_END(data) } while (data >= 0); +#else +#define FOUR_LOOP_BEGIN(data) int k = 4; do { +#define FOUR_LOOP_END(data) } while (--k); +#endif + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & BYTE0_MASK) | (ANTIC_cl[C_HI2] & BYTE1_MASK);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_HI2] & BYTE0_MASK) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = ANTIC_cl[C_HI2]; + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + int mask;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + mask = hires_mask(data & 0xc0);\ + pm_pixel = pm_lookup_ptr[pm_pixel] | L_PF2;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_pixel) & mask) | (COLOUR(pm_pixel + (L_HI2 - L_PF2)) & ~mask));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#else /* USE_COLOUR_TRANSLATION_TABLE */ + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0); + +#define INIT_ARTIF_NEW art_lookup_new[0] = art_lookup_new[1] = art_lookup_new[2] = art_lookup_new[3] = \ + art_lookup_new[16] = art_lookup_new[17] = art_lookup_new[18] = art_lookup_new[19] = \ + art_lookup_new[32] = art_lookup_new[33] = art_lookup_new[34] = art_lookup_new[35] = \ + art_lookup_new[48] = art_lookup_new[49] = art_lookup_new[50] = art_lookup_new[51] = ANTIC_cl[C_PF2];\ + art_lookup_new[7] = art_lookup_new[23] = art_lookup_new[39] = art_lookup_new[55] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[56] = art_lookup_new[57] = art_lookup_new[58] = art_lookup_new[59] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + art_lookup_new[12] = art_lookup_new[13] = art_lookup_new[14] = art_lookup_new[15] = \ + art_lookup_new[28] = art_lookup_new[29] = art_lookup_new[30] = art_lookup_new[31] = \ + art_lookup_new[44] = art_lookup_new[45] = art_lookup_new[46] = art_lookup_new[47] = \ + art_lookup_new[60] = art_lookup_new[61] = art_lookup_new[62] = art_lookup_new[63] = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0);\ + if ((ANTIC_cl[C_PF2] & 0x0F00) != (ANTIC_cl[C_PF1] & 0x0F00)) { \ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= ((art_colour1_new & BYTE1_MASK & ~(HIRES_LUM_01))) | hires_lum(0x40) | (ANTIC_cl[C_PF2] & BYTE0_MASK);\ + art_lookup_new[20] = art_lookup_new[21] = (art_colour1_new & 0xf0f0) | hires_lum(0xc0);\ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = ((art_colour2_new & BYTE0_MASK & ~(HIRES_LUM_10))) | hires_lum(0x80) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = (art_colour2_new & 0xf0f0) | hires_lum(0xc0);\ + }\ + else {\ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= art_lookup_new[20] = art_lookup_new[21] = \ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = ANTIC_cl[C_PF2];\ + }\ + art_lookup_new[6] = art_lookup_new[22] = art_lookup_new[38] = art_lookup_new[54] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[24] = art_lookup_new[25] = art_lookup_new[26] = art_lookup_new[27] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80); + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2) & hires_mask(data & 0xc0)) | hires_lum(data & 0xc0));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#define DO_PMG_HIRES_NEW(data, tally) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (pm_pixel) \ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2)));\ + else\ + WRITE_VIDEO(ptr++, art_lookup_new[(tally & 0xfc0000) >> 18]); \ + data <<= 2;\ + tally <<= 6;\ + FOUR_LOOP_END(data)\ +} + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +#ifdef NEW_CYCLE_EXACT +#define ADD_FONT_CYCLES +#else +#define ADD_FONT_CYCLES ANTIC_xpos += font_cycles[md] +#endif + +#ifdef PAGED_MEM + +#define INIT_ANTIC_2 int t_chbase = (dctr ^ chbase_20) & 0xfc07;\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); + +#else /* PAGED_MEM */ + +#define INIT_ANTIC_2 const UBYTE *chptr;\ + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000)\ + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07);\ + else\ + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07);\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= chptr[(screendata & 0x7f) << 3]; + +#endif /* PAGED_MEM */ + +static void draw_antic_2(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + INIT_HIRES + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifdef NEW_CYCLE_EXACT +static void draw_antic_2_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + (void)chptr; /* suppress GCC -Wunused-but-set-variable warning */ + INIT_HIRES + + CHAR_LOOP_BEGIN + /* UBYTE screendata = *antic_memptr++; */ + +/* In this glitched mode, the output depends on the MSB of the last char */ +/* drawn in the previous line, and invert_mask. It seems to reveal that */ +/* ANTIC has a latch that is set by the MSB of the char that controls an */ +/* invert gate. */ +/* When this gate was set on the last line and the next line is glitched */ +/* it remains set and the whole line appears inverted */ +/* We'll use this modeline to draw antic f glitched as well, and set */ +/* dmactl_bug_chdata to 0 */ + int chdata = (dmactl_bug_chdata & invert_mask) ? 0xff : 0; + /* GET_CHDATA_ANTIC_2 */ + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void draw_antic_2_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + INIT_ANTIC_2 + { + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + } + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + chdata = screendata_tally >> 8; + DO_PMG_HIRES(chdata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_2_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + ULONG pmtally; + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + INIT_ANTIC_2 + INIT_ARTIF_NEW + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + chdata = screendata_tally >> 8; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(chdata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_2(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + int t_chbase = (dctr ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07); +#endif + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + GET_CHDATA_ANTIC_2 + *an_ptr++ = chdata >> 6; + *an_ptr++ = (chdata >> 4) & 3; + *an_ptr++ = (chdata >> 2) & 3; + *an_ptr++ = chdata & 3; + CHAR_LOOP_END +} + +static void draw_antic_2_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata >> 4 : chdata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_2_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } + +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, chdata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = chdata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; + pm_pixel |= gtia_10_pm[t_screendata]; + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + if (k == 3) + t_screendata = chdata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_2_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata & 0xf0 : chdata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +static void draw_antic_2_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia_bug(t_pm_scanline_ptr); + return; +} + +static void draw_antic_4(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + lookup2[0x0f] = lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x4f] = lookup2[0x1f] = lookup2[0x13] = + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x8f] = lookup2[0x2f] = lookup2[0x17] = lookup2[0x11] = + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + lookup2[0xcf] = lookup2[0x3f] = lookup2[0x1b] = lookup2[0x12] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + const UWORD *lookup; + UBYTE chdata; + if (screendata & 0x80) + lookup = lookup2 + 0xf; + else + lookup = lookup2; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, lookup[chdata & 0xc0]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x30]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x0c]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + playfield_lookup[0xc0] = screendata & 0x80 ? L_PF3 : L_PF2; + do { + colreg = playfield_lookup[chdata & 0xc0]; + DO_PMG_LORES + chdata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + playfield_lookup[0xc0] = L_PF2; + do_border(); +} + +static void prepare_an_antic_4(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + an = mode_e_an_lookup[chdata & 0xc0]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x30]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x0c]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x03]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(4) + +static void draw_antic_6(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + UWORD colour; + int kk = 2; + colour = COLOUR((playfield_lookup + 0x40)[screendata & 0xc0]); +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata & 0xf0) { + if (chdata & 0x80) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x40) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x20) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x10) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + chdata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + UBYTE setcol = (playfield_lookup + 0x40)[screendata & 0xc0]; + int colreg; + int k = 4; + do { + colreg = chdata & 0x80 ? setcol : L_BAK; + DO_PMG_LORES + chdata <<= 1; + } while (--k); + + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_6(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an = screendata >> 6; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + *an_ptr++ = chdata & 0x80 ? an : 0; + *an_ptr++ = chdata & 0x40 ? an : 0; + *an_ptr++ = chdata & 0x20 ? an : 0; + *an_ptr++ = chdata & 0x10 ? an : 0; + *an_ptr++ = chdata & 0x08 ? an : 0; + *an_ptr++ = chdata & 0x04 ? an : 0; + *an_ptr++ = chdata & 0x02 ? an : 0; + *an_ptr++ = chdata & 0x01 ? an : 0; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(6) + +static void draw_antic_8(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = ANTIC_cl[C_PF0]; + lookup2[0x80] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + UWORD data = lookup2[screendata & 0xc0]; + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg = playfield_lookup[screendata & 0xc0]; + int k = 4; + do { + DO_PMG_LORES + } while (--k); + } + screendata <<= 2; + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_8(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + screendata <<= 2; + } while (--kk); + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(8) + +static void draw_antic_9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + screendata <<= 2; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +/* ANTIC modes 9, b and c use BAK and PF0 colours only so they're not visible in GTIA modes */ + +static void draw_antic_9_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0(); +} + +static void draw_antic_9_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia10(); +} + +static void draw_antic_9_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia11(); +} + +static void draw_antic_a(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_a(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x03]; + *an_ptr++ = data; + *an_ptr++ = data; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(a) + +static void draw_antic_c(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = lookup2[0x20] = lookup2[0x10] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x20]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x10]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_e(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x03]; + CHAR_LOOP_END +} + +static void draw_antic_e_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG lookup[16]; + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + lookup[0] = lookup[1] = lookup[4] = lookup[5] = ANTIC_lookup_gtia9[0]; + lookup[2] = lookup[6] = ANTIC_lookup_gtia9[1]; + lookup[3] = lookup[7] = ANTIC_lookup_gtia9[2]; + lookup[8] = lookup[9] = ANTIC_lookup_gtia9[4]; + lookup[10] = ANTIC_lookup_gtia9[5]; + lookup[11] = ANTIC_lookup_gtia9[6]; + lookup[12] = lookup[13] = ANTIC_lookup_gtia9[8]; + lookup[14] = ANTIC_lookup_gtia9[9]; + lookup[15] = ANTIC_lookup_gtia9[10]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, lookup[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, lookup[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e_gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); +} +static void draw_antic_e_gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); +} + +static void draw_antic_f(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_HIRES + + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, hires_norm(screendata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((screendata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(screendata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally = *antic_memptr++; + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + screendata = antic_memptr[-2]; + DO_PMG_HIRES(screendata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_f_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG pmtally; + ULONG screendata_tally = *antic_memptr++; + INIT_ARTIF_NEW + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + screendata = antic_memptr[-2]; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(screendata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_f(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = screendata >> 6; + *an_ptr++ = (screendata >> 4) & 3; + *an_ptr++ = (screendata >> 2) & 3; + *an_ptr++ = screendata & 3; + CHAR_LOOP_END +} + +static void draw_antic_f_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, screendata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = screendata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; /*playfield colours can generate collisions*/ + pm_pixel |= gtia_10_pm[t_screendata]; /*but player colours don't*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); /*although they mix with the real players*/ + if (k == 3) + t_screendata = screendata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_f_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata & 0xf0 : screendata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +/* GTIA-switch-to-mode-00 bug +If while drawing line in hi-res mode PRIOR is changed from 0x40..0xff to +0x00..0x3f, GTIA doesn't back to hi-res, but starts generating mode similar +to ANTIC's 0xe, but with colours PF0, PF1, PF2, PF3. */ + +/* Technical explaination by perrym: + * in gtia.pdf there is a flip-flop at page 40, drawing location C3 with + * what looks like W and A on the gates + * This is set by AN2=0 AN1=1 AN0=1 durning HBLANK + * The middle input to the lower NOR gate is the inverted signal !NRM(?) + * (NRM means NORMAL?) which arrives from the top left of the page. + * This signal is defined on page 38, positions C2/B2 + * where there is a NOR gate pointing downwards with 00 written to the + * right of its output. + * !NRM is the condition that PRIOR is not set to b7=0,b6=0. + * When PRIOR is not set to NRM, the flip-flip is always reset, + * which seems necessary for the proper operation of the GTIA modes. + * If PRIOR is reset to NRM then the flip-flop remains reset, and + * since ANTIC data in hi-res modes is sent as PF0-PF3, this data is used + * by GTIA directly.*/ + +static void draw_antic_f_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_PF0]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF1]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF2]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (playfield_lookup + 0x40)[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +/* pointer to a function that draws a single line of graphics */ +typedef void (*draw_antic_function)(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr); + +/* tables for all GTIA and ANTIC modes */ +static draw_antic_function draw_antic_table[4][16] = { +/* normal */ + { NULL, NULL, draw_antic_2, draw_antic_2, + draw_antic_4, draw_antic_4, draw_antic_6, draw_antic_6, + draw_antic_8, draw_antic_9, draw_antic_a, draw_antic_c, + draw_antic_c, draw_antic_e, draw_antic_e, draw_antic_f}, +/* GTIA 9 */ + { NULL, NULL, draw_antic_2_gtia9, draw_antic_2_gtia9, + draw_antic_4_gtia9, draw_antic_4_gtia9, draw_antic_6_gtia9, draw_antic_6_gtia9, + draw_antic_8_gtia9, draw_antic_9_gtia9, draw_antic_a_gtia9, draw_antic_9_gtia9, + draw_antic_9_gtia9, draw_antic_e_gtia9, draw_antic_e_gtia9, draw_antic_f_gtia9}, +/* GTIA 10 */ + { NULL, NULL, draw_antic_2_gtia10, draw_antic_2_gtia10, + draw_antic_4_gtia10, draw_antic_4_gtia10, draw_antic_6_gtia10, draw_antic_6_gtia10, + draw_antic_8_gtia10, draw_antic_9_gtia10, draw_antic_a_gtia10, draw_antic_9_gtia10, + draw_antic_9_gtia10, draw_antic_e_gtia10, draw_antic_e_gtia10, draw_antic_f_gtia10}, +/* GTIA 11 */ + { NULL, NULL, draw_antic_2_gtia11, draw_antic_2_gtia11, + draw_antic_4_gtia11, draw_antic_4_gtia11, draw_antic_6_gtia11, draw_antic_6_gtia11, + draw_antic_8_gtia11, draw_antic_9_gtia11, draw_antic_a_gtia11, draw_antic_9_gtia11, + draw_antic_9_gtia11, draw_antic_e_gtia11, draw_antic_e_gtia11, draw_antic_f_gtia11}}; + +/* pointer to current GTIA/ANTIC mode routine */ +static draw_antic_function draw_antic_ptr = draw_antic_8; +#ifdef NEW_CYCLE_EXACT +static draw_antic_function saved_draw_antic_ptr; +#endif +/* pointer to current GTIA mode blank drawing routine */ +static void (*draw_antic_0_ptr)(void) = draw_antic_0; + +#ifdef NEW_CYCLE_EXACT +/* wrapper for antic_0, for dmactl bugs */ +static void draw_antic_0_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_ptr(); +} +#endif + +/* Artifacting ------------------------------------------------------------ */ + +void ANTIC_UpdateArtifacting(void) +{ +#define ART_BROWN 0 +#define ART_BLUE 1 +#define ART_DARK_BROWN 2 +#define ART_DARK_BLUE 3 +#define ART_BRIGHT_BROWN 4 +#define ART_BRIGHT_BLUE 5 +#define ART_RED 6 +#define ART_GREEN 7 + static const UBYTE art_colour_table[4][8] = { + { 0x88, 0x14, 0x88, 0x14, 0x8f, 0x1f, 0xbb, 0x5f }, /* brownblue */ + { 0x14, 0x88, 0x14, 0x88, 0x1f, 0x8f, 0x5f, 0xbb }, /* bluebrown */ + { 0xd6, 0x46, 0xd6, 0x46, 0xdf, 0x4a, 0x4f, 0xac }, /* redgreen */ + { 0x46, 0xd6, 0x46, 0xd6, 0x4a, 0xdf, 0xac, 0x4f } /* greenred */ + }; + + int i; + int j; + int c; + const UBYTE *art_colours; + UBYTE q; + UBYTE art_white; + + if (ANTIC_artif_mode == 0) { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2; + draw_antic_table[0][0xf] = draw_antic_f; + return; + } + +#ifndef USE_COLOUR_TRANSLATION_TABLE + if (ANTIC_artif_new) { + static UWORD new_art_colour_table[4][2] = { + {0x4040, 0x8080}, + {0x8080, 0x4040}, + {0x8080, 0xd0d0}, + {0xd0d0, 0x8080} + }; + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif_new; + draw_antic_table[0][0xf] = draw_antic_f_artif_new; + art_colour1_new = new_art_colour_table[ANTIC_artif_mode - 1][0]; + art_colour2_new = new_art_colour_table[ANTIC_artif_mode - 1][1]; + } + else +#endif + { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif; + draw_antic_table[0][0xf] = draw_antic_f_artif; + } + + art_colours = (ANTIC_artif_mode <= 4 ? art_colour_table[ANTIC_artif_mode - 1] : art_colour_table[2]); + + art_reverse_colpf1_save = art_normal_colpf1_save = ANTIC_cl[C_PF1] & 0x0f0f; + art_reverse_colpf2_save = art_normal_colpf2_save = ANTIC_cl[C_PF2]; + art_white = (ANTIC_cl[C_PF2] & 0xf0) | (ANTIC_cl[C_PF1] & 0x0f); + + for (i = 0; i <= 255; i++) { + art_bkmask_normal[i] = 0; + art_lummask_normal[i] = 0; + art_bkmask_reverse[255 - i] = 0; + art_lummask_reverse[255 - i] = 0; + + for (j = 0; j <= 3; j++) { + q = i << j; + if (!(q & 0x20)) { + if ((q & 0xf8) == 0x50) + c = ART_BLUE; /* 01010 */ + else if ((q & 0xf8) == 0xD8) + c = ART_DARK_BLUE; /* 11011 */ + else { /* xx0xx */ + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = art_white; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xff; + ((UBYTE *) art_lummask_reverse)[((255 - i) << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xf0; + continue; + } + } + else if (q & 0x40) { + if (q & 0x10) + goto colpf1_pixel; /* x111x */ + else if (q & 0x80) { + if (q & 0x08) + c = ART_BRIGHT_BROWN; /* 11101 */ + else + goto colpf1_pixel; /* 11100 */ + } + else + c = ART_GREEN; /* 0110x */ + } + else if (q & 0x10) { + if (q & 0x08) { + if (q & 0x80) + c = ART_BRIGHT_BROWN; /* 00111 */ + else + goto colpf1_pixel; /* 10111 */ + } + else + c = ART_RED; /* x0110 */ + } + else + c = ART_BROWN; /* x010x */ + + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_colours[(j & 1) ^ c]; + continue; + + colpf1_pixel: + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_white; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xff; + ((UBYTE *) art_lummask_normal)[(i << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xf0; + } + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Display List ------------------------------------------------------------ */ + +UBYTE ANTIC_GetDLByte(UWORD *paddr) +{ + int addr = *paddr; + UBYTE result; + if (ANTIC_xe_ptr != NULL && addr < 0x8000 && addr >= 0x4000) + result = ANTIC_xe_ptr[addr - 0x4000]; + else + result = MEMORY_GetByte((UWORD) addr); + addr++; + if ((addr & 0x3FF) == 0) + addr -= 0x400; + *paddr = (UWORD) addr; + return result; +} + +UWORD ANTIC_GetDLWord(UWORD *paddr) +{ + UBYTE lsb = ANTIC_GetDLByte(paddr); +#if !defined(BASIC) && !defined(CURSES_BASIC) + if (ANTIC_player_flickering && ((GTIA_VDELAY & 0x80) == 0 || ANTIC_ypos & 1)) + GTIA_GRAFP3 = lsb; +#endif + return (ANTIC_GetDLByte(paddr) << 8) + lsb; +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Real ANTIC doesn't fetch beginning bytes in HSC + nor screen+47 in wide playfield. This function does. */ +static void antic_load(void) +{ +#ifdef PAGED_MEM + UBYTE *antic_memptr = antic_memory + ANTIC_margin; + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + do + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); + while (screenaddr & 0xfff); + screenaddr -= 0x1000; + new_screenaddr -= 0x1000; + } + while (screenaddr < new_screenaddr) + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); +#else + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + int bytes = (-screenaddr) & 0xfff; + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) { + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), bytes); + if (new_screenaddr & 0xfff) + memcpy(antic_memory + ANTIC_margin + bytes, ANTIC_xe_ptr + (screenaddr + bytes - 0x5000), new_screenaddr & 0xfff); + } + else if ((screenaddr & 0xf000) == 0xd000) { + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_CopyFromMem((UWORD) (screenaddr + bytes - 0x1000), antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + else { + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_dCopyFromMem(screenaddr + bytes - 0x1000, antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + screenaddr = new_screenaddr - 0x1000; + } + else { + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), chars_read[md]); + else if ((screenaddr & 0xf000) == 0xd000) + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + else + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + screenaddr = new_screenaddr; + } +#endif +} + +#ifdef NEW_CYCLE_EXACT +int ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + +#ifdef USE_CURSES +static int scanlines_to_curses_display = 0; +#endif + +/* This function emulates one frame drawing screen at Screen_atari */ +void ANTIC_Frame(int draw_display) +{ + static const UBYTE mode_type[32] = { + NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL1, NORMAL1, + NORMAL2, NORMAL2, NORMAL1, NORMAL1, NORMAL1, NORMAL0, NORMAL0, NORMAL0, + SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL1, SCROLL1, + SCROLL2, SCROLL2, SCROLL1, SCROLL1, SCROLL1, SCROLL0, SCROLL0, SCROLL0 + }; + static const UBYTE normal_lastline[16] = + { 0, 0, 7, 9, 7, 15, 7, 15, 7, 3, 3, 1, 0, 1, 0, 0 }; + UBYTE vscrol_flag = FALSE; + UBYTE no_jvb = TRUE; +#ifndef NEW_CYCLE_EXACT + UBYTE need_load; +#endif + +#ifdef NEW_CYCLE_EXACT + int cpu2antic_index; +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_ypos = 0; + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < 8); + + scrn_ptr = (UWORD *) Screen_atari; +#ifdef NEW_CYCLE_EXACT + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + need_dl = TRUE; + do { +#ifdef SKIP + if ((INPUT_mouse_mode == INPUT_MOUSE_PEN || INPUT_mouse_mode == INPUT_MOUSE_GUN) && (ANTIC_ypos >> 1 == ANTIC_PENV_input)) { + PENH = ANTIC_PENH_input; + PENV = ANTIC_PENV_input; + if (GTIA_GRACTL & 4) + GTIA_TRIG_latch[INPUT_mouse_port] = 0; + } +#endif + POKEY_Scanline(); /* check and generate IRQ */ + pmg_dma(); + +#ifdef USE_CURSES + if (--scanlines_to_curses_display == 0) + curses_display_line(anticmode, antic_memory + ANTIC_margin); +#endif + + need_load = FALSE; + if (need_dl) { + if (ANTIC_DMACTL & 0x20) { + IR = ANTIC_GetDLByte(&ANTIC_dlist); + anticmode = IR & 0xf; + ANTIC_xpos++; + /* PMG flickering :-) */ + if (ANTIC_missile_flickering) + GTIA_GRAFM = ANTIC_ypos & 1 ? IR : ((GTIA_GRAFM ^ IR) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ IR; + if (ANTIC_player_flickering) + { + UBYTE hold = ANTIC_ypos & 1 ? 0 : GTIA_VDELAY; + if ((hold & 0x10) == 0) + GTIA_GRAFP0 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 8)); + if ((hold & 0x20) == 0) + GTIA_GRAFP1 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 9)); + if ((hold & 0x40) == 0) + GTIA_GRAFP2 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 10)); + if ((hold & 0x80) == 0) + GTIA_GRAFP3 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 11)); + } + } + else + IR &= 0x7f; /* repeat last instruction, but don't generate DLI */ + + dctr = 0; + need_dl = FALSE; + vscrol_off = FALSE; + + switch (anticmode) { + case 0x00: + lastline = (IR >> 4) & 7; + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + case 0x01: + lastline = 0; + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + no_jvb = FALSE; + } + else + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + default: + lastline = normal_lastline[anticmode]; + if (IR & 0x20) { + if (!vscrol_flag) { + CPU_GO(VSCON_C); + dctr = ANTIC_VSCROL; + vscrol_flag = TRUE; + } + } + else if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + screenaddr = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + md = mode_type[IR & 0x1f]; + need_load = TRUE; + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode]; + break; + } + } +#ifdef NEW_CYCLE_EXACT + cpu2antic_index = 0; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || + (anticmode >= 8 && !need_load)) { + cpu2antic_index = 0; + } + else { +/* TODO: use a cleaner lookup table here */ + if (!(IR & 0x10) && ((ANTIC_DMACTL & 3) == 1)) + cpu2antic_index = 1; + else if ((!(IR &0x10) && ((ANTIC_DMACTL & 3) == 2)) || + ((IR & 0x10) && ((ANTIC_DMACTL & 3) == 1))) { + cpu2antic_index = 2; + } + else + cpu2antic_index = 10; + if (IR & 0x10) { + cpu2antic_index += (ANTIC_HSCROL >> 1); + } + if (anticmode >=2 && anticmode <=7 && !need_load) + cpu2antic_index += 17; + if (anticmode ==6 || anticmode ==7) + cpu2antic_index += 17 * 2; + else if (anticmode==8 || anticmode == 9) + cpu2antic_index += 17 * 6; + else if (anticmode >=0xa && anticmode <=0xc) + cpu2antic_index += 17 * 5; + else if (anticmode >=0x0d) + cpu2antic_index += 17 * 4; + } + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[CYCLE_MAP_SIZE * cpu2antic_index]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[CYCLE_MAP_SIZE * cpu2antic_index]; +#endif /* NEW_CYCLE_EXACT */ + + if ((IR & 0x4f) == 1 && (ANTIC_DMACTL & 0x20)) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + +#ifdef NEW_CYCLE_EXACT + /* begin drawing here */ + if (draw_display) { + ANTIC_cur_screen_pos = LBORDER_START; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_xpos]; /* convert antic to cpu(need for WSYNC) */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMIST_C]); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMI_C]); + CPU_NMI(); + } + } + } + } + else /* force this to be within an else if NEW_CYCLE_EXACT */ +#endif /* NEW_CYCLE_EXACT */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + } + } + if (!draw_display) { + ANTIC_xpos += ANTIC_DMAR; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + if (need_load) { + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos += before_cycles[md] - extra_cycles[md]; + } + if (anticmode < 8) + ANTIC_xpos += font_cycles[md]; + GOEOL; + dctr++; + dctr &= 0xf; + continue; + } +#ifndef NO_YPOS_BREAK_FLICKER +#define YPOS_BREAK_FLICKER do{if (ANTIC_ypos == ANTIC_break_ypos - 1000) {\ + static int toggle;\ + if (toggle == 1) {\ + FILL_VIDEO(scrn_ptr + LBORDER_START, 0x0f0f, (RBORDER_END - LBORDER_START) * 2);\ + }\ + toggle = !toggle;\ + }}while(0) +#else +#define YPOS_BREAK_FLICKER do{}while(0) +#endif /* NO_YPOS_BREAK_FLICKER */ + +#ifdef NEW_CYCLE_EXACT + GTIA_NewPmScanline(); + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + YPOS_BREAK_FLICKER; + scrn_ptr += Screen_WIDTH / 2; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + +#else /* NEW_CYCLE_EXACT not defined */ + if (need_load && anticmode <= 5 && ANTIC_DMACTL & 3) + ANTIC_xpos += before_cycles[md]; + + CPU_GO(SCR_C); + GTIA_NewPmScanline(); + + ANTIC_xpos += ANTIC_DMAR; + + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + draw_antic_0_ptr(); + GOEOL; + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos -= extra_cycles[md]; + } + + draw_antic_ptr(chars_displayed[md], + antic_memory + ANTIC_margin + ch_offset[md], + scrn_ptr + x_min[md], + (ULONG *) >IA_pm_scanline[x_min[md]]); + + GOEOL; +#endif /* NEW_CYCLE_EXACT */ + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + dctr++; + dctr &= 0xf; + } while (ANTIC_ypos < (ATARI_HEIGHT + 8)); + + emu_DrawVsync(); + +#ifndef NO_SIMPLE_PAL_BLENDING + /* Simple PAL blending, using only the base 256 color palette. */ + if (ANTIC_pal_blending) + { + int ypos = ANTIC_ypos - 1; + /* Start at the last screen line (248). */ + ULONG *ptr = (ULONG *) (scrn_ptr - 4 * RCHOP); + do { + int k = 2 * (48 - LCHOP - RCHOP); + do { + /* For each grayscale pixel (colors $00..$0f) blend it with + chrominance of a pixel from the previous line. */ + ULONG pix = READ_VIDEO_LONG(--ptr); + ULONG mask = 0xf0f0f0f0; + /* Take advantage of the fact that chrominance can change only + every two pixels. This way we may test only two pixels in a + quadruplet instead of four. */ + if (pix & 0x0000f0f0) + /* Two LSBs are non-grayscale */ + mask &= 0xf0f00000; + if (pix & 0xf0f00000) + /* Two MSBs are non-grayscale */ + mask &= 0x0000f0f0; + + WRITE_VIDEO_LONG(ptr, (READ_VIDEO_LONG(ptr - ATARI_WIDTH / 4) & mask) | pix); + } while (--k); + ptr -= 2 * (LCHOP + RCHOP); /* Move one line up */ + } while (--ypos > 8); /* Stop after line 9 */ + + } +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* TODO: cycle-exact overscreen lines */ + POKEY_Scanline(); /* check and generate IRQ */ + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x5f; /* Set VBLANK */ + if (ANTIC_NMIEN & 0x40) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + ANTIC_xpos += ANTIC_DMAR; + GOEOL; + + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < max_ypos); + ANTIC_ypos = 0; /* just for monitor.c */ +} + +#ifdef NEW_CYCLE_EXACT + +/* update the scanline from the last changed position to the current +position, when a change was made to a display register during drawing */ +void ANTIC_UpdateScanline(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* prior needs a different adjustment and could generate small glitches +between mode changes */ +/* TODO: support glitches between mode changes (tiny areas that are neither +the new mode nor the old mode, which occur between mode changes */ +void ANTIC_UpdateScanlinePrior(UBYTE byte) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int prior_mode_adj = 2; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + prior_mode_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chbase needs a different adjustment */ +void update_scanline_chbase(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + int fontfetch_adj; + /* antic fetches character font data every 2 or 4 cycles */ + /* we want to delay the change until the next fetch */ + /* empirically determined: */ + if (anticmode >= 2 && anticmode <= 5) { + fontfetch_adj = (((hscrol_adj >>1) - actual_xpos + 0) & 1) * 2 + 9; + } + else if (anticmode == 6 || anticmode == 7) { + fontfetch_adj = (((hscrol_adj >> 1) - actual_xpos + 2) & 3) * 2 + 9; + } + else { + fontfetch_adj = 0; + } + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + fontfetch_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl invert needs a different adjustment */ +void update_scanline_invert(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 4 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 4; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl blank needs a different adjustment */ +void update_scanline_blank(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 7 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 7; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +static void set_dmactl_bug(void){ + need_load = FALSE; + saved_draw_antic_ptr = draw_antic_ptr; + draw_antic_ptr_changed = 1; + if (anticmode == 2 || anticmode == 3 || anticmode == 0xf) { + draw_antic_ptr = draw_antic_2_dmactl_bug; + dmactl_bug_chdata = (anticmode == 0xf) ? 0 : antic_memory[ANTIC_margin + chars_read[md] - 1]; + } + else { + draw_antic_ptr = draw_antic_0_dmactl_bug; + } +} + +/* draw a partial scanline between point l and point r */ +/* l is the left hand word, r is the point one past the right-most word to draw */ +void draw_partial_scanline(int l, int r) +{ + /* lborder_chars: save left border chars,we restore it after */ + /* it is the number of 8pixel 'chars' in the left border */ + int lborder_chars = left_border_chars; + + /* rborder_start: save right border start, we restore it after */ + /* it is the start of the right border, in words */ + int rborder_start = right_border_start; + + /* lborder_start: start of the left border, in words */ + int lborder_start = LCHOP * 4; + /* end of the left border, in words */ + int lborder_end = LCHOP * 4 + left_border_chars * 4; + /* end of the right border, in words */ + int rborder_end = (48 - RCHOP) * 4; + /* flag: if true, don't show playfield. used if the partial scanline */ + /* does not include the playfield */ + int dont_display_playfield = 0; + /* offset of the left most drawable 8 pixel pf block */ + /* int l_pfchar = (lborder_end - x_min[md]) / 4; */ + int l_pfchar = 0; + /* offset of the right most drawable 8 pixel pf plock, *plus one* */ + int r_pfchar = 0; + /* buffer to save 0,1,2 or 3 words of the left hand portion of an 8pixel */ + /* 'char' which is going to be erased by the left hand side of the */ + /* left most 8pixel 'char' in the partial scanline and must be saved */ + /* and restored later */ + UWORD sv_buf[4]; + /* buffer to save 0 or 1 (modes 6,7,a,b,c) ,or , (0,1,2 or 3) (modes 8,9) */ + /* 8pixel 'chars' of playfield which is going to be erased by the left */ + /* hand most 8pixel 'char's of the 2(modes 67abc) or 4(modes 89) 8pixel */ + /* 'char'-sized blocks that these modes must draw. */ + UWORD sv_buf2[4 * 4]; /* for modes 6,7,8,9,a,b,c */ + /* start,size of the above buffers */ + int sv_bufstart = 0; + int sv_bufsize = 0; + int sv_bufstart2 = 0; + int sv_bufsize2 = 0; + /* number of 8,16,32pixel chars to draw in the playfield */ + int nchars = 0; + /* adjustment to ch_index , it is the number of 8,16,32pixel chars */ + /* that we do not draw on the left hand side that would usually be drawn */ + /* for this mode */ + int ch_adj = 0; + /* adjustment to x_min to skip over the left side */ + int x_min_adj = 0; + /* it's the offset of the left most drawable 8pixel pfblock which is */ + /* rounded *down* to the nearest factor of (2:mode 67abc,4:mode 89) */ + /* if it is divided by (2:mode 67abc,4:mode 89) it will give the */ + /* offset of the left most drawable (16,32)pixel 'char' */ + int l_pfactual = 0; + /* it is the offset of the right most drawable 8pixel pf block which is */ + /* rounded *up* to the nearest factor of (2,4), *plus one* */ + /* so that r_pfactual-l_pfactual / (2,4) = number of 16,32 pixel 'chars' */ + /* to be drawn */ + int r_pfactual = 0; + /* it is the offset of the 8pixel block aligned with pf which overlaps */ + /* the left border. We need this for modes 6-c, because in these modes */ + /* the code will save 8pixel blocks to the left of l_pfchar and */ + /* >= l_pfactual, which will result in portions of the left border */ + /* being saved on some occasions which should not be, unless we */ + /* use this variable to alter the number of chars saved */ + /* int l_borderpfchar=0; */ + + r_pfchar = chars_displayed[md]; + if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + r_pfchar *= 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + r_pfchar *= 4; + } + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + lborder_end = rborder_end; + dont_display_playfield = 1; + } + if (l > rborder_end) + l = rborder_end; + if (r > rborder_end) + r = rborder_end; + if (l < lborder_start) + l = lborder_start; + if (r < lborder_start) + r = lborder_start; + if (l >= r) + return; + if (l < lborder_end) { + /* left point is within left border */ + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + left_border_start = sv_bufstart; + left_border_chars = lborder_chars - (sv_bufstart - lborder_start) / 4; + if (l > x_min[md]) { + /* special case for modes 56789abc */ + /* position buffer within the reference frame */ + /* of the playfield if that */ + /* results in more pixels being saved in the buffer */ + /* needed because for modes 5789abc the overlapping part */ + /* can be more than 1 8pixel char and we only save the left */ + /* hand most 8pixel chars in the code in the later section */ + /* further down, so there is a possibility that the 8pixels */ + /* which are saved within the reference frame of the border */ + /* are not enough to ensure that everything gets saved */ + l_pfchar = (l - x_min[md]) / 4; + if (((l - x_min[md]) & 3) > sv_bufsize) { + sv_bufsize = ((l - x_min[md]) & 3); + sv_bufstart = l - sv_bufsize; + } + } + } + else if (l >= rborder_start) { + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + right_border_start = sv_bufstart; + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /*within screen */ + sv_bufsize = ((l - x_min[md]) & 3); /* low bits have buf size */ + sv_bufstart = l - sv_bufsize; /* difference gives start */ + l_pfchar = (sv_bufstart - x_min[md]) / 4; + left_border_chars = 0; /* don't display left border */ + } + memcpy(sv_buf, scrn_ptr + sv_bufstart, sv_bufsize * sizeof(UWORD)); /* save part of screen */ + + if (r <= lborder_end) { + /* right_end_char = (r + 3) / 4; */ + left_border_chars = (r + 3) / 4 - sv_bufstart / 4; + /* everything must be within the left border */ + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /* right point is past start of playfield */ + /* now load ANTIC data: needed for ANTIC glitches */ + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + need_load = FALSE; + } + + if (r > rborder_start) { + right_border_end = ((r + 3) & (~3)); /* round up to nearest 8pixel */ + } + else { + r_pfchar = (r - x_min[md] + 3) / 4; /* round up to nearest 8pixel */ + } + } + if (dont_display_playfield) { + nchars = 0; + x_min_adj = 0; + ch_adj = 0; + } + else if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + l_pfactual = (l_pfchar & (~1)); /* round down to nearest 16pixel */ + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 1) & (~1)); /* round up to nearest 16pixel */ + nchars = (r_pfactual - l_pfactual) / 2; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + l_pfactual = (l_pfchar & (~3)); + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 3) & (~3)); + nchars = (r_pfactual - l_pfactual) / 4; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 4; + } + else { + nchars = r_pfchar - l_pfchar; + x_min_adj = l_pfchar * 4; + ch_adj = l_pfchar; + } + memcpy(sv_buf2, scrn_ptr + sv_bufstart2, sv_bufsize2 * sizeof(UWORD)); /* save part of screen */ + + if (dont_display_playfield) { +/* the idea here is to use draw_antic_0_ptr() to draw just the border only, since */ +/* we can't set nchars=0. draw_antic_0_ptr will work if left_border_start and */ +/* right_border_end are set correctly */ + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || r <= lborder_end) { + right_border_end = left_border_start + left_border_chars * 4; + } + else if (l >= rborder_start) { + left_border_start = right_border_start; + } + draw_antic_0_ptr(); + } + else { + draw_antic_ptr(nchars, /* chars_displayed[md], */ + antic_memory + ANTIC_margin + ch_offset[md] + ch_adj, + scrn_ptr + x_min[md] + x_min_adj, + (ULONG *) >IA_pm_scanline[x_min[md] + x_min_adj]); + } + memcpy(scrn_ptr + sv_bufstart2, sv_buf2, sv_bufsize2 * sizeof(UWORD)); /* restore screen */ + memcpy(scrn_ptr + sv_bufstart, sv_buf, sv_bufsize * sizeof(UWORD)); /* restore screen */ + + /* restore border global variables */ + left_border_chars=lborder_chars; + right_border_start=rborder_start; + left_border_start = LCHOP * 4; + right_border_end = (48-RCHOP) *4; +} +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* ANTIC registers --------------------------------------------------------- */ + +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_VCOUNT: + if (ANTIC_XPOS < ANTIC_LINE_C) + return ANTIC_ypos >> 1; + if (ANTIC_ypos + 1 < max_ypos) + return (ANTIC_ypos + 1) >> 1; + return 0; + case ANTIC_OFFSET_PENH: + return PENH; + case ANTIC_OFFSET_PENV: + return PENV; + case ANTIC_OFFSET_NMIST: + return ANTIC_NMIST; + default: + return 0xff; + } +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* GTIA calls it on write to PRIOR */ +void ANTIC_SetPrior(UBYTE byte) +{ + if ((byte ^ GTIA_PRIOR) & 0x0f) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + UBYTE col = 0; + UBYTE col2 = 0; + UBYTE hi; + UBYTE hi2; + if ((byte & 3) == 0) { + col = GTIA_COLPF0; + col2 = GTIA_COLPF1; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[col | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[col | GTIA_COLPM0 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2 | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[col2 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[col2 | GTIA_COLPM0 | GTIA_COLPM1]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col]; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2]; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = ANTIC_cl[C_HI2]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(GTIA_COLPM0 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(GTIA_COLPM1 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[((GTIA_COLPM0 | GTIA_COLPM1) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + col = col2 = 0; + hi = hi2 = GTIA_COLPF1 & 0xf; + ANTIC_cl[C_BLACK - C_PF2 + C_HI2] = colour_translation_table[hi]; + if ((byte & 9) == 0) { + col = GTIA_COLPF2; + col2 = GTIA_COLPF3; + hi |= col & 0xf0; + hi2 |= col2 & 0xf0; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[col | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[col | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2 | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[col2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[col2 | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[hi | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[hi | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[hi2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM35] = colour_translation_table[hi2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[hi2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col]; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2]; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi]; + } +#else /* USE_COLOUR_TRANSLATION_TABLE */ + UWORD cword = 0; + UWORD cword2 = 0; + if ((byte & 3) == 0) { + cword = ANTIC_cl[C_PF0]; + cword2 = ANTIC_cl[C_PF1]; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF0 | C_PM01] = cword | ANTIC_cl[C_PM01]; + ANTIC_cl[C_PF1 | C_PM0] = cword2 | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF1 | C_PM1] = cword2 | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PM01]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword2; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + } + cword = cword2 = 0; + if ((byte & 9) == 0) { + cword = ANTIC_cl[C_PF2]; + cword2 = ANTIC_cl[C_PF3]; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF2 | C_PM23] = cword | ANTIC_cl[C_PM23]; + ANTIC_cl[C_PF3 | C_PM2] = cword2 | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM3] = cword2 | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword2; + } +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + if (byte & 1) { + ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF1]; + } + if ((byte & 0xf) == 0xc) { + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = ANTIC_cl[C_PF1]; + } + else + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = GTIA_COLOUR_BLACK; + if (byte & 0xf) { + ANTIC_cl[C_PF0 | C_PM25] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = GTIA_COLOUR_BLACK; + } + else { + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23]; + } + } + pm_lookup_ptr = pm_lookup_table[prior_to_pm_lookup[byte & 0x3f]]; + draw_antic_0_ptr = byte < 0x80 ? draw_antic_0 : byte < 0xc0 ? draw_antic_0_gtia10 : draw_antic_0_gtia11; + if (byte < 0x40 && (GTIA_PRIOR >= 0x40 || gtia_bug_active) && (anticmode == 2 || anticmode == 3 || anticmode == 0xf) && ANTIC_XPOS >= ((ANTIC_DMACTL & 3) == 3 ? 16 : 18)) { + /* A GTIA Mode was active, and no longer is. An ANTIC hi-res mode is being used. GTIA is no longer set in hi-res mode */ + if (anticmode == 2 || anticmode == 3) draw_antic_ptr = draw_antic_2_gtia_bug; + else if (anticmode == 0xf) draw_antic_ptr = draw_antic_f_gtia_bug; + gtia_bug_active = TRUE; + } + else + draw_antic_ptr = draw_antic_table[byte >> 6][anticmode]; +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +void ANTIC_PutByte(UWORD addr, UBYTE byte) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_DLISTL: + ANTIC_dlist = (ANTIC_dlist & 0xff00) | byte; + break; + case ANTIC_OFFSET_DLISTH: + ANTIC_dlist = (ANTIC_dlist & 0x00ff) | (byte << 8); + break; + case ANTIC_OFFSET_DMACTL: +/* TODO: make this truly cycle-exact, update cpu2antic and antic2cpu, +add support for wider->narrow glitches including the interesting mode 6 +glitch */ +#ifdef NEW_CYCLE_EXACT + dmactl_changed=0; + /* has DMACTL width changed? */ + if ((byte & 3) != (ANTIC_DMACTL & 3) ){ + /* DMACTL width changed from 0 */ + if ((ANTIC_DMACTL & 3) == 0) { + int glitch_cycle = (3 + 32) - 8*(byte & 3); + int x = ANTIC_XPOS; + if((IR & 0x10) && ((byte & 3) != 3)){ + /*adjust for narrow or std HSCROL*/ + glitch_cycle -= 8; + } + /*ANTIC doesn't fetch and display data if the*/ + /*DMACTL width changes from zero after this */ + /*cycle. Instead, it displays a blank scan */ + /*line for modes other than 23F and for 23F */ + /*it displays a glitched line after the change*/ + if(x >= glitch_cycle){ + if(ANTIC_DRAWING_SCREEN){ + ANTIC_UpdateScanline(); + set_dmactl_bug(); + } + } + else { + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + /* DMACTL width changed to 0 */ + else if ((byte & 3)==0) { + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int antic_limit = ANTIC_cpu2antic_ptr[ANTIC_xpos_limit]; + ANTIC_UpdateScanline(); + /*fix for a minor glitch in fasteddie*/ + /*don't steal cycles after DMACTL off*/ + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; + ANTIC_xpos = ANTIC_antic2cpu_ptr[actual_xpos]; + ANTIC_xpos_limit = ANTIC_antic2cpu_ptr[antic_limit]; + } + /* DMACTL width has changed and not to 0 and not from 0 */ + } + else { + /* DMACTL width has increased and no HSCROL */ + if (((byte & 3) > (ANTIC_DMACTL & 3)) && !(IR & 0x10)) { + int x; /* the change cycle */ + int left_glitch_cycle = 0; + int right_glitch_cycle = 0; + x = ANTIC_XPOS; + if (((ANTIC_DMACTL & 3) == 2) && ((byte & 3) == 3)) { /* Normal->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 18; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 3)) { /* Narrow->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 26; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 2)) { /* Narrow->Normal */ + left_glitch_cycle = 19; + right_glitch_cycle = 27; + } + /* change occurs during drawing of line */ + /* delay change till next line */ + if (x > right_glitch_cycle) { + dmactl_changed = 1; + delayed_DMACTL = byte; + break; + /* change occurs during 'glitch' region */ + } + else if (x >= left_glitch_cycle && x <= right_glitch_cycle && anticmode > 1) { + set_dmactl_bug(); + } + } + else { + /* DMACTL width has decreased or HSCROL */ + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + } +#endif /* NEW_CYCLE_EXACT */ + ANTIC_DMACTL = byte; +#if defined(BASIC) || defined(CURSES_BASIC) + break; +#else + switch (byte & 0x03) { + case 0x00: + /* no antic_load when screen off */ + /* chars_read[NORMAL0] = 0; + chars_read[NORMAL1] = 0; + chars_read[NORMAL2] = 0; + chars_read[SCROLL0] = 0; + chars_read[SCROLL1] = 0; + chars_read[SCROLL2] = 0; */ + /* no draw_antic_* when screen off */ + /* chars_displayed[NORMAL0] = 0; + chars_displayed[NORMAL1] = 0; + chars_displayed[NORMAL2] = 0; + chars_displayed[SCROLL0] = 0; + chars_displayed[SCROLL1] = 0; + chars_displayed[SCROLL2] = 0; + x_min[NORMAL0] = 0; + x_min[NORMAL1] = 0; + x_min[NORMAL2] = 0; + x_min[SCROLL0] = 0; + x_min[SCROLL1] = 0; + x_min[SCROLL2] = 0; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + ch_offset[SCROLL0] = 0; + ch_offset[SCROLL1] = 0; + ch_offset[SCROLL2] = 0; */ + /* no borders when screen off, only background */ + /* left_border_chars = 48 - LCHOP - RCHOP; + right_border_start = 0; */ + break; + case 0x01: + chars_read[NORMAL0] = 32; + chars_read[NORMAL1] = 16; + chars_read[NORMAL2] = 8; + chars_read[SCROLL0] = 40; + chars_read[SCROLL1] = 20; + chars_read[SCROLL2] = 10; + chars_displayed[NORMAL0] = 32; + chars_displayed[NORMAL1] = 16; + chars_displayed[NORMAL2] = 8; + x_min[NORMAL0] = 32; + x_min[NORMAL1] = 32; + x_min[NORMAL2] = 32; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 32; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 16; + load_cycles[NORMAL2] = 8; + before_cycles[NORMAL0] = BEFORE_CYCLES; + before_cycles[SCROLL0] = BEFORE_CYCLES + 8; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES; + extra_cycles[SCROLL0] = 8 + BEFORE_CYCLES + 8; + left_border_chars = 8 - LCHOP; + right_border_start = (ATARI_WIDTH - 64) / 2; + break; + case 0x02: + chars_read[NORMAL0] = 40; + chars_read[NORMAL1] = 20; + chars_read[NORMAL2] = 10; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 40; + chars_displayed[NORMAL1] = 20; + chars_displayed[NORMAL2] = 10; + x_min[NORMAL0] = 16; + x_min[NORMAL1] = 16; + x_min[NORMAL2] = 16; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 40; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 20; + load_cycles[NORMAL2] = 10; + before_cycles[NORMAL0] = BEFORE_CYCLES + 8; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 8 + BEFORE_CYCLES + 8; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 4 - LCHOP; + right_border_start = (ATARI_WIDTH - 32) / 2; + break; + case 0x03: + chars_read[NORMAL0] = 48; + chars_read[NORMAL1] = 24; + chars_read[NORMAL2] = 12; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 42; + chars_displayed[NORMAL1] = 22; + chars_displayed[NORMAL2] = 12; + x_min[NORMAL0] = 12; + x_min[NORMAL1] = 8; + x_min[NORMAL2] = 0; + ch_offset[NORMAL0] = 3; + ch_offset[NORMAL1] = 1; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 47; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 24; + load_cycles[NORMAL2] = 12; + before_cycles[NORMAL0] = BEFORE_CYCLES + 16; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES + 16; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 3 - LCHOP; + right_border_start = (ATARI_WIDTH - 8) / 2; + break; + } + + ANTIC_missile_dma_enabled = (byte & 0x0c); /* no player dma without missile */ + ANTIC_player_dma_enabled = (byte & 0x08); + singleline = (byte & 0x10); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + + byte = ANTIC_HSCROL; /* update horizontal scroll data */ +/* ******* FALLTHROUGH ******* */ + case ANTIC_OFFSET_HSCROL: +/* TODO: make this truely cycle exact, and update cpu2antic and antic2cpu */ +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + ANTIC_HSCROL = byte &= 0x0f; + if (ANTIC_DMACTL & 3) { + chars_displayed[SCROLL0] = chars_displayed[NORMAL0]; + ch_offset[SCROLL0] = 4 - (byte >> 2); + x_min[SCROLL0] = x_min[NORMAL0]; + if (byte & 3) { + x_min[SCROLL0] += (byte & 3) - 4; + chars_displayed[SCROLL0]++; + ch_offset[SCROLL0]--; + } + chars_displayed[SCROLL2] = chars_displayed[NORMAL2]; + if ((ANTIC_DMACTL & 3) == 3) { /* wide playfield */ + ch_offset[SCROLL0]--; + if (byte == 4 || byte == 12) + chars_displayed[SCROLL1] = 21; + else + chars_displayed[SCROLL1] = 22; + if (byte <= 4) { + x_min[SCROLL1] = byte + 8; + ch_offset[SCROLL1] = 1; + } + else if (byte <= 12) { + x_min[SCROLL1] = byte; + ch_offset[SCROLL1] = 0; + } + else { + x_min[SCROLL1] = byte - 8; + ch_offset[SCROLL1] = -1; + } + /* technically, the part below is wrong */ + /* scrolling in mode 8,9 with HSCROL=13,14,15 */ + /* will set x_min=13,14,15 > 4*LCHOP = 12 */ + /* so that nothing is drawn on the far left side */ + /* of the screen. We could fix this, but only */ + /* by setting x_min to be negative. */ + x_min[SCROLL2] = byte; + ch_offset[SCROLL2] = 0; + } + else { + chars_displayed[SCROLL1] = chars_displayed[NORMAL1]; + ch_offset[SCROLL1] = 2 - (byte >> 3); + x_min[SCROLL1] = x_min[NORMAL0]; + if (byte) { + if (byte & 7) { + x_min[SCROLL1] += (byte & 7) - 8; + chars_displayed[SCROLL1]++; + ch_offset[SCROLL1]--; + } + x_min[SCROLL2] = x_min[NORMAL2] + byte - 16; + chars_displayed[SCROLL2]++; + ch_offset[SCROLL2] = 0; + } + else { + x_min[SCROLL2] = x_min[NORMAL2]; + ch_offset[SCROLL2] = 1; + } + } + + if (ANTIC_DMACTL & 2) { /* normal & wide playfield */ + load_cycles[SCROLL0] = 47 - (byte >> 2); + font_cycles[SCROLL0] = (47 * 4 + 1 - byte) >> 2; + load_cycles[SCROLL1] = (24 * 8 + 3 - byte) >> 3; + font_cycles[SCROLL1] = (24 * 8 + 1 - byte) >> 3; + load_cycles[SCROLL2] = byte < 0xc ? 12 : 11; + } + else { /* narrow playfield */ + font_cycles[SCROLL0] = load_cycles[SCROLL0] = 40; + font_cycles[SCROLL1] = load_cycles[SCROLL1] = 20; + load_cycles[SCROLL2] = 16; + } + } + break; + case ANTIC_OFFSET_VSCROL: + ANTIC_VSCROL = byte & 0x0f; + if (vscrol_off) { + lastline = ANTIC_VSCROL; + if (ANTIC_XPOS < VSCOF_C) + need_dl = dctr == lastline; + } + break; + case ANTIC_OFFSET_PMBASE: + ANTIC_PMBASE = byte; + pmbase_d = (byte & 0xfc) << 8; + pmbase_s = pmbase_d & 0xf8ff; + break; + case ANTIC_OFFSET_CHACTL: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_invert(); + } +#endif + invert_mask = byte & 2 ? 0x80 : 0; +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_blank(); + } +#endif + blank_mask = byte & 1 ? 0xe0 : 0x60; + if ((ANTIC_CHACTL ^ byte) & 4) { +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + /* timing for flip is the same as chbase */ + update_scanline_chbase(); + } +#endif + chbase_20 ^= 7; + } + ANTIC_CHACTL = byte; + break; + case ANTIC_OFFSET_CHBASE: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_chbase(); + } +#endif + ANTIC_CHBASE = byte; + chbase_20 = (byte & 0xfe) << 8; + if (ANTIC_CHACTL & 4) + chbase_20 ^= 7; + break; +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + case ANTIC_OFFSET_WSYNC: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + if (ANTIC_xpos <= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] && ANTIC_xpos_limit >= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C]) + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ +/* note that if ANTIC_WSYNC_C is a stolen cycle, then ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C+1]-1 corresponds +to the last cpu cycle < ANTIC_WSYNC_C. Then the cpu will see this cycle if WSYNC +is not delayed, since it really occurred one cycle after the STA WSYNC. But if +WSYNC is "delayed" then ANTIC_xpos is the next cpu cycle after ANTIC_WSYNC_C (which was stolen +), so it is one greater than the above value. EG if ANTIC_WSYNC_C=10 and is stolen +(and let us say cycle 9,11 are also stolen, and 8,12 are not), then in the first +case we have ANTIC_cpu2antic_ptr[ANTIC_WSYNC_C+1]-1 = 8 and in the 2nd =12 */ + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1] - 1; + } + else { + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1]; + } + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ + ANTIC_delayed_wsync = 0; + } + else { + ANTIC_delayed_wsync = 1; + } + } + } + else { + ANTIC_delayed_wsync = 0; +#endif /* NEW_CYCLE_EXACT */ + if (ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C) + ANTIC_xpos = ANTIC_WSYNC_C; + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + } +#ifdef NEW_CYCLE_EXACT + } +#endif /* NEW_CYCLE_EXACT */ + break; + case ANTIC_OFFSET_NMIEN: + ANTIC_NMIEN = byte; + break; + case ANTIC_OFFSET_NMIRES: + ANTIC_NMIST = 0x1f; + break; + default: + break; + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void ANTIC_StateSave(void) +{ + StateSav_SaveUBYTE(&ANTIC_DMACTL, 1); + StateSav_SaveUBYTE(&ANTIC_CHACTL, 1); + StateSav_SaveUBYTE(&ANTIC_HSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_VSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_PMBASE, 1); + StateSav_SaveUBYTE(&ANTIC_CHBASE, 1); + StateSav_SaveUBYTE(&ANTIC_NMIEN, 1); + StateSav_SaveUBYTE(&ANTIC_NMIST, 1); + StateSav_SaveUBYTE(&IR, 1); + StateSav_SaveUBYTE(&anticmode, 1); + StateSav_SaveUBYTE(&dctr, 1); + StateSav_SaveUBYTE(&lastline, 1); + StateSav_SaveUBYTE(&need_dl, 1); + StateSav_SaveUBYTE(&vscrol_off, 1); + + StateSav_SaveUWORD(&ANTIC_dlist, 1); + StateSav_SaveUWORD(&screenaddr, 1); + + StateSav_SaveINT(&ANTIC_xpos, 1); + StateSav_SaveINT(&ANTIC_xpos_limit, 1); + StateSav_SaveINT(&ANTIC_ypos, 1); +} + +void ANTIC_StateRead(void) +{ + StateSav_ReadUBYTE(&ANTIC_DMACTL, 1); + StateSav_ReadUBYTE(&ANTIC_CHACTL, 1); + StateSav_ReadUBYTE(&ANTIC_HSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_VSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_PMBASE, 1); + StateSav_ReadUBYTE(&ANTIC_CHBASE, 1); + StateSav_ReadUBYTE(&ANTIC_NMIEN, 1); + StateSav_ReadUBYTE(&ANTIC_NMIST, 1); + StateSav_ReadUBYTE(&IR, 1); + StateSav_ReadUBYTE(&anticmode, 1); + StateSav_ReadUBYTE(&dctr, 1); + StateSav_ReadUBYTE(&lastline, 1); + StateSav_ReadUBYTE(&need_dl, 1); + StateSav_ReadUBYTE(&vscrol_off, 1); + + StateSav_ReadUWORD(&ANTIC_dlist, 1); + StateSav_ReadUWORD(&screenaddr, 1); + + StateSav_ReadINT(&ANTIC_xpos, 1); + StateSav_ReadINT(&ANTIC_xpos_limit, 1); + StateSav_ReadINT(&ANTIC_ypos, 1); + + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, ANTIC_DMACTL); + ANTIC_PutByte(ANTIC_OFFSET_CHACTL, ANTIC_CHACTL); + ANTIC_PutByte(ANTIC_OFFSET_PMBASE, ANTIC_PMBASE); + ANTIC_PutByte(ANTIC_OFFSET_CHBASE, ANTIC_CHBASE); +} + +#endif /* BASIC */ diff --git a/MCUME_esp32/esp800/main/antic.h b/MCUME_esp32/esp800/main/antic.h new file mode 100644 index 0000000..0a89e66 --- /dev/null +++ b/MCUME_esp32/esp800/main/antic.h @@ -0,0 +1,136 @@ +#ifndef ANTIC_H_ +#define ANTIC_H_ + +#include "atari.h" +/* + * Offset to registers in custom relative to start of antic memory addresses. + */ + +#define ANTIC_OFFSET_DMACTL 0x00 +#define ANTIC_OFFSET_CHACTL 0x01 +#define ANTIC_OFFSET_DLISTL 0x02 +#define ANTIC_OFFSET_DLISTH 0x03 +#define ANTIC_OFFSET_HSCROL 0x04 +#define ANTIC_OFFSET_VSCROL 0x05 +#define ANTIC_OFFSET_PMBASE 0x07 +#define ANTIC_OFFSET_CHBASE 0x09 +#define ANTIC_OFFSET_WSYNC 0x0a +#define ANTIC_OFFSET_VCOUNT 0x0b +#define ANTIC_OFFSET_PENH 0x0c +#define ANTIC_OFFSET_PENV 0x0d +#define ANTIC_OFFSET_NMIEN 0x0e +#define ANTIC_OFFSET_NMIRES 0x0f +#define ANTIC_OFFSET_NMIST 0x0f + +extern UBYTE ANTIC_CHACTL; +extern UBYTE ANTIC_CHBASE; +extern UWORD ANTIC_dlist; +extern UBYTE ANTIC_DMACTL; +extern UBYTE ANTIC_HSCROL; +extern UBYTE ANTIC_NMIEN; +extern UBYTE ANTIC_NMIST; +extern UBYTE ANTIC_PMBASE; +extern UBYTE ANTIC_VSCROL; + +extern int ANTIC_break_ypos; +extern int ANTIC_ypos; +extern int ANTIC_wsync_halt; + +/* Current clock cycle in a scanline. + Normally 0 <= ANTIC_xpos && ANTIC_xpos < ANTIC_LINE_C, but in some cases ANTIC_xpos >= ANTIC_LINE_C, + which means that we are already in line (ypos + 1). */ +extern int ANTIC_xpos; + +/* ANTIC_xpos limit for the currently running 6502 emulation. */ +extern int ANTIC_xpos_limit; + +/* Main clock value at the beginning of the current scanline. */ +extern unsigned int ANTIC_screenline_cpu_clock; + +/* Current main clock value. */ +#define ANTIC_CPU_CLOCK (ANTIC_screenline_cpu_clock + ANTIC_XPOS) + +#define ANTIC_NMIST_C 6 +#define ANTIC_NMI_C 12 + +/* Number of cycles per scanline. */ +#define ANTIC_LINE_C 114 + +/* STA WSYNC resumes here. */ +#define ANTIC_WSYNC_C 106 + +/* Number of memory refresh cycles per scanline. + In the first scanline of a font mode there are actually less than ANTIC_DMAR + memory refresh cycles. */ +#define ANTIC_DMAR 9 + +extern int ANTIC_artif_mode; +extern int ANTIC_artif_new; + +extern UBYTE ANTIC_PENH_input; +extern UBYTE ANTIC_PENV_input; + +int ANTIC_Initialise(void); +void ANTIC_Reset(void); +void ANTIC_Frame(int draw_display); +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects); +void ANTIC_PutByte(UWORD addr, UBYTE byte); + +UBYTE ANTIC_GetDLByte(UWORD *paddr); +UWORD ANTIC_GetDLWord(UWORD *paddr); + +/* always call ANTIC_UpdateArtifacting after changing ANTIC_artif_mode */ +void ANTIC_UpdateArtifacting(void); + +/* Video memory access */ +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size); +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val); + +/* GTIA calls it on a write to PRIOR */ +void ANTIC_SetPrior(UBYTE prior); + +/* Saved states */ +void ANTIC_StateSave(void); +void ANTIC_StateRead(void); + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in memory[0x4000..0x7fff], + then NULL. */ +extern const UBYTE *ANTIC_xe_ptr; + +/* PM graphics for GTIA */ +extern int ANTIC_player_dma_enabled; +extern int ANTIC_missile_dma_enabled; +extern int ANTIC_player_gra_enabled; +extern int ANTIC_missile_gra_enabled; +extern int ANTIC_player_flickering; +extern int ANTIC_missile_flickering; + +/* ANTIC colour lookup tables, used by GTIA */ +extern UWORD ANTIC_cl[128]; +extern ULONG ANTIC_lookup_gtia9[16]; +extern ULONG ANTIC_lookup_gtia11[16]; +extern UWORD ANTIC_hires_lookup_l[128]; + +#ifdef NEW_CYCLE_EXACT +#define ANTIC_NOT_DRAWING -999 +#define ANTIC_DRAWING_SCREEN (ANTIC_cur_screen_pos!=ANTIC_NOT_DRAWING) +extern int ANTIC_delayed_wsync; +extern int ANTIC_cur_screen_pos; +extern const int *ANTIC_cpu2antic_ptr; +extern const int *ANTIC_antic2cpu_ptr; +void ANTIC_UpdateScanline(void); +void ANTIC_UpdateScanlinePrior(UBYTE byte); + +#define ANTIC_XPOS ( ANTIC_DRAWING_SCREEN ? ANTIC_cpu2antic_ptr[ANTIC_xpos] : ANTIC_xpos ) +#else +#define ANTIC_XPOS ANTIC_xpos +#endif /* NEW_CYCLE_EXACT */ + +#ifndef NO_SIMPLE_PAL_BLENDING +/* Set to 1 to enable simplified emulation of PAL blending, that uses only + the standard 8-bit palette. */ +extern int ANTIC_pal_blending; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +#endif /* ANTIC_H_ */ diff --git a/MCUME_esp32/esp800/main/atari.h b/MCUME_esp32/esp800/main/atari.h new file mode 100644 index 0000000..165bb5d --- /dev/null +++ b/MCUME_esp32/esp800/main/atari.h @@ -0,0 +1,105 @@ +#ifndef __ATARI__ +#define __ATARI__ + +// define globals +#define MEMORYRAM_SIZE 0x8000 +#define MEMORYROM_SIZE 0x4000 + +#define ATARI_WIDTH 384 +#define ATARI_HEIGHT 240 +#define TV_PAL 312 +#define TV_NTSC 262 + +//#define DIRTYRECT 1 +//#define WORDS_UNALIGNED_OK 1 +//#define ALTERNATE_LOOP_COUNTERS 1 +//#define NEW_CYCLE_EXACT 1 +//#define USE_CURSES 1 +//#define WORDS_BIGENDIAN 1 +//#define SYNCHRONIZED_SOUND 1 +#define CLIP_SOUND 1 +//#define STEREO_SOUND 1 +#define POKEYSND_SIGNED_SAMPLES 1 +#define PAGED_MEM 1 +#define SOUND 1 +#define NO_SIMPLE_PAL_BLENDING 1 +#define POKEYSND_BIT16 1 +#define POKEYSND_SAMRATE 22050 //44100 + +#define max_ypos tv_mode + +extern int tv_mode; +extern unsigned char INPUT_key_consol; + +enum ESCAPE { + ESC_SIOV, +/* + * These are special device escape codes required by the Basic version + */ + ESC_E_OPEN, + ESC_E_CLOSE, + ESC_E_READ, + ESC_E_WRITE, + ESC_E_STATUS, + ESC_E_SPECIAL, + + ESC_K_OPEN, + ESC_K_CLOSE, + ESC_K_READ, + ESC_K_WRITE, + ESC_K_STATUS, + ESC_K_SPECIAL, +/* + * These are Escape codes for the normal device handlers. + * Some are never used and some are only sometimes used. + */ + + ESC_PHOPEN = 0xb0, + ESC_PHCLOS = 0xb1, + ESC_PHREAD = 0xb2, + ESC_PHWRIT = 0xb3, + ESC_PHSTAT = 0xb4, + ESC_PHSPEC = 0xb5, + ESC_PHINIT = 0xb6, + + ESC_HHOPEN = 0xc0, + ESC_HHCLOS = 0xc1, + ESC_HHREAD = 0xc2, + ESC_HHWRIT = 0xc3, + ESC_HHSTAT = 0xc4, + ESC_HHSPEC = 0xc5, + ESC_HHINIT = 0xc6, + ESC_BREAK = 0xff +}; + +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +//data types +#define UBYTE unsigned char +#define UWORD unsigned short +#define ULONG unsigned int + +#define SBYTE signed char +#define SWORD signed short +#define SLONG signed int + +#define int8 char +#define int16 short +#define int32 int + +#define uint8 unsigned int8 +#define uint16 unsigned int16 +#define uint32 unsigned int32 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#endif + + + +#endif diff --git a/MCUME_esp32/esp800/main/atari800.c b/MCUME_esp32/esp800/main/atari800.c new file mode 100644 index 0000000..c489646 --- /dev/null +++ b/MCUME_esp32/esp800/main/atari800.c @@ -0,0 +1,380 @@ +#include "atari800.h" +#include +#include "memory.h" +#include "cpu.h" +#include "atari.h" +#include "akey.h" +#include "pokey.h" +//#include "romatariosa.h" +#include "romatariosb.h" +//#include "romatarixl.h" +#include "antic.h" +#include "gtia.h" +#include "pia.h" +#include "colours.h" +#include "emuapi.h" +#if HAS_SND +#include "pokeysnd.h" +#endif + + +// Controllers +typedef struct +{ + // All values are 1 or 0, or perhaps not... + int left; + int right; + int up; + int down; + int trig; + +} CONTROLLER; + + + + + +// global variables +unsigned char mem[MEMORYRAM_SIZE]; +unsigned char * memory=mem; +unsigned char * memory_rom=NULL; +int tv_mode = TV_PAL; +UBYTE INPUT_key_consol; + + +// local variables +static CONTROLLER cont1, cont2; +static int INPUT_key_code = AKEY_NONE; +static int INPUT_key_shift = 0; + +/* MEMORY MAP INDEX (0 is invalid) +* 0-3FFF RAM (read/write) +* 4000-7FFF RAM (read/write) +* 8000-9FFF BASIC right CART 8K +* A000-BFFF BASIC left CART 8K +* D000-D0FF GTIA regs +* D200-D2FF POKEY regs +* D300-D3FF PIA regs +* D400-D4FF ANTIC regs +* D800-FFFF OS ROM (ro) +* E000 I/O expansion +*/ + + +// memory CPU read (load) handler +uint8 Atari_GetByte(uint16 addr) +{ + if (addr < 0x8000) { // MAPPER_RAM + return(memory[addr]); + } + if (addr < 0xc000) { // MAPPER_ROM + return(memory_rom[addr-0x8000]); + } + else if ( (addr >= 0xD000) && (addr < 0xD100) ) { // MAPPER_GTIA + return GTIA_GetByte(addr,1); + } + else if ( (addr >= 0xD200) && (addr < 0xD300) ) { // MAPPER_POKEY + return POKEY_GetByte(addr,1); + } + else if ( (addr >= 0xD300) && (addr < 0xD400) ) { // MAPPER_PIA + return PIA_GetByte(addr); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + return ANTIC_GetByte(addr,1); + } + else if ((addr >= 0xD800) && (addr < 0x10000)) { // MAPPER_ROM (bios) + //return(memory[addr]); + return(romos[addr-0xD800]); + } + + //case MAPPER_IOEXP: // I/O exp read + // return IOEXPread(addr); + + return 0xff; +} + +// memory CPU write (store) handler +void Atari_PutByte(uint16 addr, uint8 byte) +{ + if (addr < 0x8000) { // MAPPER_RAM + memory[addr] = byte; + } + else if (addr < 0xC000) { // MAPPER_ROM + } + else if ( (addr >= 0xD000) && (addr < 0xD100) ) { // MAPPER_GTIA + GTIA_PutByte(addr, byte); + } + else if ( (addr >= 0xD200) && (addr < 0xD300) ) { // MAPPER_POKEY + POKEY_PutByte(addr, byte); + } + else if ( (addr >= 0xD300) && (addr < 0xD400) ) { // MAPPER_PIA + PIA_PutByte(addr, byte); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + ANTIC_PutByte(addr, byte); + } + + //case MAPPER_IOEXP: // I/O exp write + // IOEXPwrite(addr, byte); +} + + +static void INPUT_Frame(void) +{ + int i; + static int last_key_code = AKEY_NONE; + static int last_key_break = 0; + + if (cont1.trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1; + + + i = (INPUT_key_code == AKEY_BREAK); + if (i && !last_key_break) { + if (POKEY_IRQEN & 0x80) { + POKEY_IRQST &= ~0x80; + CPU_GenerateIRQ(); + } + } + last_key_break = i; + POKEY_SKSTAT |= 0xc; + if (INPUT_key_shift) + POKEY_SKSTAT &= ~8; + + if (INPUT_key_code < 0) { + //if (CASSETTE_press_space) { + // INPUT_key_code = AKEY_SPACE; + // CASSETTE_press_space = 0; + //} + //else { + last_key_code = AKEY_NONE; + //} + } + if ((INPUT_key_code&~0x17) == AKEY_SHFTCTRL) { + INPUT_key_code = AKEY_NONE; + } + if (INPUT_key_code >= 0) { +//emu_printi(INPUT_key_code); + POKEY_SKSTAT &= ~4; + if ((INPUT_key_code ^ last_key_code) & ~AKEY_SHFTCTRL) { + /* ignore if only shift or control has changed its state */ + last_key_code = INPUT_key_code; + POKEY_KBCODE = (UBYTE) INPUT_key_code; + if (POKEY_IRQEN & 0x40) { + if (POKEY_IRQST & 0x40) { + POKEY_IRQST &= ~0x40; + CPU_GenerateIRQ(); + } + else { + /* keyboard over-run */ + POKEY_SKSTAT &= ~0x40; + /* assert(CPU_IRQ != 0); */ + } + } + } + } +} + +// check keyboard and set kbcode on VBI (not for A800) +void INPUT_Scanline(void) +{ +// if (cont1.trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1; +} + + +static void load_CART(char * cartname) +{ + int flen = emu_FileSize(cartname); + emu_FileOpen(cartname); + if (flen < 16384) { + emu_printf("8k"); + for(int i=0; itrig = 1; + else + which->trig = 0; + if (j & MASK_JOY2_DOWN) + which->down = 1; + else + which->down = 0; + if (j & MASK_JOY2_UP) + which->up = 1; + else + which->up = 0; + if (j & MASK_JOY2_RIGHT) + which->left = 1; + else + which->left = 0; + if (j & MASK_JOY2_LEFT) + which->right = 1; + else + which->right = 0; + + GTIA_Frame(); + ANTIC_Frame(1); + POKEY_Frame(); +} + + + +void at8_Start(char * cartname) +{ + + load_CART(cartname); + + emu_printf("antic"); + ANTIC_Initialise(); + emu_printf("gtia"); + GTIA_Initialise(); + emu_printf("pia"); + PIA_Initialise(); + emu_printf("pokey"); + POKEY_Initialise(); + PORTA = 0x00; + ANTIC_NMIEN = 0x00; + ANTIC_NMIST = 0x00; + memory[0x244] = 1; + GTIA_TRIG[0]=1; + GTIA_TRIG[1]=1; + GTIA_TRIG[2]=1; + GTIA_TRIG[3]=1; + emu_printf("6502 reset"); + CPU_Reset(); + + emu_printf("init done"); +} + + + + + + diff --git a/MCUME_esp32/esp800/main/atari800.h b/MCUME_esp32/esp800/main/atari800.h new file mode 100644 index 0000000..28a6c40 --- /dev/null +++ b/MCUME_esp32/esp800/main/atari800.h @@ -0,0 +1,4 @@ +extern void at8_Init(void); +extern void at8_Step(void); +extern void at8_Start(char * filename); + diff --git a/MCUME_esp32/esp800/main/bmpjoy.h b/MCUME_esp32/esp800/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/esp800/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/esp800/main/bmpvbar.h b/MCUME_esp32/esp800/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/esp800/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/esp800/main/colours.h b/MCUME_esp32/esp800/main/colours.h new file mode 100644 index 0000000..a31db53 --- /dev/null +++ b/MCUME_esp32/esp800/main/colours.h @@ -0,0 +1,68 @@ +const unsigned int colourtable[256] = +{ + 0x0, 0x1c1c1c, 0x393939, 0x595959, + 0x797979, 0x929292, 0xababab, 0xbcbcbc, + 0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec, + 0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff, + 0x391701, 0x5e2304, 0x833008, 0xa54716, + 0xc85f24, 0xe37820, 0xff911d, 0xffab1d, + 0xffc51d, 0xffce34, 0xffd84c, 0xffe651, + 0xfff456, 0xfff977, 0xffff98, 0xffff98, + 0x451904, 0x721e11, 0x9f241e, 0xb33a20, + 0xc85122, 0xe36920, 0xff811e, 0xff8c25, + 0xff982c, 0xffae38, 0xffc545, 0xffc559, + 0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1, + 0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119, + 0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161, + 0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e, + 0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce, + 0x50568, 0x3b136d, 0x712272, 0x8b2a8c, + 0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd, + 0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd, + 0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff, + 0x280479, 0x400984, 0x590f90, 0x70249d, + 0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed, + 0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff, + 0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff, + 0x35088a, 0x420aad, 0x500cd0, 0x6428d0, + 0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec, + 0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff, + 0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff, + 0x51e81, 0x626a5, 0x82fca, 0x263dd4, + 0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff, + 0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff, + 0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff, + 0xc048b, 0x2218a0, 0x382db5, 0x483ec7, + 0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff, + 0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff, + 0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff, + 0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac, + 0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec, + 0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff, + 0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff, + 0x2f4302, 0x395202, 0x446103, 0x417a12, + 0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55, + 0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d, + 0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6, + 0xa4108, 0xd540a, 0x10680d, 0x137d0f, + 0x169212, 0x19a514, 0x1cb917, 0x1ec919, + 0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d, + 0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a, + 0x4410b, 0x5530e, 0x66611, 0x77714, + 0x88817, 0x99b1a, 0xbaf1d, 0x48c41f, + 0x86d922, 0x8fe924, 0x99f927, 0xa8fc41, + 0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81, + 0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e, + 0x4f7420, 0x598324, 0x649228, 0x82a12e, + 0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945, + 0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53, + 0x263001, 0x243803, 0x234005, 0x51541b, + 0x806931, 0x978135, 0xaf993a, 0xc2a73e, + 0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836, + 0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d, + 0x401a02, 0x581f05, 0x702408, 0x8d3a13, + 0xab511f, 0xb56427, 0xbf7730, 0xd0853a, + 0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c, + 0xffc160, 0xffc671, 0xffcb83, 0xffcb83, +}; + diff --git a/MCUME_esp32/esp800/main/component.mk b/MCUME_esp32/esp800/main/component.mk new file mode 100644 index 0000000..6d6cf84 --- /dev/null +++ b/MCUME_esp32/esp800/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/esp800/main/cpu.c b/MCUME_esp32/esp800/main/cpu.c new file mode 100644 index 0000000..cc73b28 --- /dev/null +++ b/MCUME_esp32/esp800/main/cpu.c @@ -0,0 +1,2444 @@ +/* + * cpu.c - 6502 CPU emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2005 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* + Configuration symbols + ===================== + + Define CPU65C02 if you don't want 6502 JMP() bug emulation. + Define CYCLES_PER_OPCODE to update ANTIC_xpos in each opcode's emulation. + Define MONITOR_BREAK if you want code breakpoints and execution history. + Define MONITOR_BREAKPOINTS if you want user-defined breakpoints. + Define MONITOR_PROFILE if you want 6502 opcode profiling. + Define MONITOR_TRACE if you want the code to be disassembled while it is executed. + Define NO_GOTO if you compile with GCC, but want switch() rather than goto *. + Define NO_V_FLAG_VARIABLE to don't use local (static) variable V for the V flag. + Define PC_PTR to emulate 6502 Program Counter using UBYTE *. + Define PREFETCH_CODE to always fetch 2 bytes after the opcode. + Define WRAP_64K to correctly emulate instructions that wrap at 64K. + Define WRAP_ZPAGE to prevent incorrect access to the address 0x0100 in zeropage + indirect mode. + + + Limitations & Known bugs + ======================== + + There is no emulation of the bug in the BRK instruction executed simultaneously + with another interrupt. + + The 6502 emulation ignores memory attributes for instruction fetch. + This is because the instruction must come from either RAM or ROM. + A program that executes instructions from within hardware addresses will fail + since there is never any usable code there. + + The 6502 emulation also ignores memory attributes for accesses to page 0 and page 1. + */ + + +#ifdef SKIP +#include "config.h" +#include +#include /* exit() */ + +#include "cpu.h" +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "antic.h" +#include "atari.h" +#include "esc.h" +#include "memory.h" +#include "monitor.h" +#ifndef BASIC +#include "statesav.h" +#ifndef __PLUS +#include "ui.h" +#endif +#endif /* BASIC */ +#endif /* ASAP */ +#else + +#include +#include /* exit() */ +#include "cpu.h" +#include "antic.h" +#include "memory.h" + +#define ESC_Run(x) + +#endif + + +/* For Atari Basic loader */ +void (*CPU_rts_handler)(void) = NULL; + +/* 6502 instruction profiling */ +#ifdef MONITOR_PROFILE +int CPU_instruction_count[256]; +#endif + +/* Execution history */ +#ifdef MONITOR_BREAK +UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +unsigned int CPU_remember_PC_curpos = 0; +int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; +UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +unsigned int CPU_remember_jmp_curpos = 0; +#define INC_RET_NESTING MONITOR_ret_nesting++ +#else /* MONITOR_BREAK */ +#define INC_RET_NESTING +#endif /* MONITOR_BREAK */ + +UBYTE CPU_cim_encountered = FALSE; +UBYTE CPU_IRQ; + +#ifdef FALCON_CPUASM + +#if defined(PAGED_MEM) || defined(PAGED_ATTRIB) +#error cpu_m68k.asm cannot work with paged memory/attributes +#endif + +#if defined(MONITOR_BREAKPOINTS) +#error cpu_m68k.asm does not support user-defined breakpoints +#endif + +#if defined(MONITOR_TRACE) +#error cpu_m68k.asm does not support disassembling the code while it is executed +#endif + +#else /* FALCON_CPUASM */ + +/* Windows headers define it */ +#undef ABSOLUTE + +#ifndef __GNUC__ +#define NO_GOTO +#endif + +/* #define CYCLES_PER_OPCODE */ + +/* #define MONITOR_PROFILE */ + +/* #define NO_V_FLAG_VARIABLE */ + +/* If PC_PTR is defined, local PC is "const UBYTE *", otherwise it's UWORD. */ +/* #define PC_PTR */ + +/* If PREFETCH_CODE is defined, 2 bytes after the opcode are always fetched. */ +/* #define PREFETCH_CODE */ + + +/* 6502 stack handling */ +#define PL MEMORY_dGetByte(0x0100 + ++S) +#define PH(x) MEMORY_dPutByte(0x0100 + S--, x) +#define PHW(x) PH((x) >> 8); PH((x) & 0xff) + +/* 6502 code fetching */ +#ifdef PC_PTR +#define GET_PC() (PC - MEMORY_mem) +#define SET_PC(newpc) (PC = MEMORY_mem + (newpc)) +#define PHPC { UWORD tmp = PC - MEMORY_mem; PHW(tmp); } +#define GET_CODE_BYTE() (*PC++) +#define PEEK_CODE_BYTE() (*PC) +#if !defined(WORDS_BIGENDIAN) && defined(WORDS_UNALIGNED_OK) +#define PEEK_CODE_WORD() (*(const UWORD *) PC) +#else +#define PEEK_CODE_WORD() (*PC + (PC[1] << 8)) +#endif +#else /* PC_PTR */ +#define GET_PC() PC +#define SET_PC(newpc) (PC = (newpc)) +#define PHPC PHW(PC) +#define GET_CODE_BYTE() MEMORY_dGetByte(PC++) +#define PEEK_CODE_BYTE() MEMORY_dGetByte(PC) +#define PEEK_CODE_WORD() MEMORY_dGetWord(PC) +#endif /* PC_PTR */ + +/* Cycle-exact Read-Modify-Write instructions. + RMW instructions: ASL, LSR, ROL, ROR, INC, DEC + (+ some undocumented) write to the specified address + *twice*: first the unmodified value, then the modified value. + This can be observed only with some hardware registers. */ +/* XXX: we do this only for GTIA, because NEW_CYCLE_EXACT does not correctly + emulate INC $D400 (and INC $D40A wasn't tested) */ +#ifdef NEW_CYCLE_EXACT +#ifndef PAGED_ATTRIB +#define RMW_GetByte(x, addr) \ + if (MEMORY_attrib[addr] == MEMORY_HARDWARE) { \ + x = MEMORY_HwGetByte(addr, FALSE); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_HwPutByte(addr, x); \ + ANTIC_xpos++; \ + } \ + } else \ + x = MEMORY_dGetByte(addr); +#else /* PAGED_ATTRIB */ +#define RMW_GetByte(x, addr) \ + x = MEMORY_GetByte(addr); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_PutByte(addr, x); \ + ANTIC_xpos++; \ + } +#endif /* PAGED_ATTRIB */ +#else /* NEW_CYCLE_EXACT */ +/* Don't emulate the first write */ +#define RMW_GetByte(x, addr) x = MEMORY_GetByte(addr); +#endif /* NEW_CYCLE_EXACT */ + +/* 6502 registers. */ +UWORD CPU_regPC; +UBYTE CPU_regA; +UBYTE CPU_regX; +UBYTE CPU_regY; +UBYTE CPU_regP; /* Processor Status Byte (Partial) */ +UBYTE CPU_regS; + +/* Transfer 6502 registers between global variables and local variables inside CPU_GO() */ +#define UPDATE_GLOBAL_REGS CPU_regPC = GET_PC(); CPU_regS = S; CPU_regA = A; CPU_regX = X; CPU_regY = Y +#define UPDATE_LOCAL_REGS SET_PC(CPU_regPC); S = CPU_regS; A = CPU_regA; X = CPU_regX; Y = CPU_regY + +/* 6502 flags local to this module */ +static UBYTE N; /* bit7 set => N flag set */ +#ifndef NO_V_FLAG_VARIABLE +static UBYTE V; /* non-zero => V flag set */ +#endif +static UBYTE Z; /* zero => Z flag set */ +static UBYTE C; /* must be 0 or 1 */ +/* B, D, I are always in CPU_regP */ + +void CPU_GetStatus(void) +{ +#ifndef NO_V_FLAG_VARIABLE + CPU_regP = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & 0x3c) + ((Z == 0) ? 0x02 : 0) + C; +#else + CPU_regP = (N & 0x80) + (CPU_regP & 0x7c) + ((Z == 0) ? 0x02 : 0) + C; +#endif +} + +void CPU_PutStatus(void) +{ + N = CPU_regP; +#ifndef NO_V_FLAG_VARIABLE + V = (CPU_regP & 0x40); +#endif + Z = (CPU_regP & 0x02) ^ 0x02; + C = (CPU_regP & 0x01); +} + +/* Addressing modes */ +#ifdef WRAP_ZPAGE +#define zGetWord(x) (MEMORY_dGetByte(x) + (MEMORY_dGetByte((UBYTE) ((x) + 1)) << 8)) +#else +#define zGetWord(x) MEMORY_dGetWord(x) +#endif +#ifdef PREFETCH_CODE +#if defined(WORDS_BIGENDIAN) || !defined(WORDS_UNALIGNED_OK) +#warning PREFETCH_CODE is efficient only on little-endian machines with WORDS_UNALIGNED_OK +#endif +#define OP_BYTE ((UBYTE) addr) +#define OP_WORD addr +#define IMMEDIATE (PC++, (UBYTE) addr) +#define ABSOLUTE PC += 2 +#define ZPAGE PC++; addr &= 0xff +#define ABSOLUTE_X addr += X; PC += 2 +#define ABSOLUTE_Y addr += Y; PC += 2 +#define INDIRECT_X PC++; addr = (UBYTE) (addr + X); addr = zGetWord(addr) +#define INDIRECT_Y PC++; addr &= 0xff; addr = zGetWord(addr) + Y +#define ZPAGE_X PC++; addr = (UBYTE) (addr + X) +#define ZPAGE_Y PC++; addr = (UBYTE) (addr + Y) +#else /* PREFETCH_CODE */ +#define OP_BYTE PEEK_CODE_BYTE() +#define OP_WORD PEEK_CODE_WORD() +#define IMMEDIATE GET_CODE_BYTE() +#define ABSOLUTE addr = PEEK_CODE_WORD(); PC += 2 +#define ZPAGE addr = GET_CODE_BYTE() +#define ABSOLUTE_X addr = PEEK_CODE_WORD() + X; PC += 2 +#define ABSOLUTE_Y addr = PEEK_CODE_WORD() + Y; PC += 2 +#define INDIRECT_X addr = (UBYTE) (GET_CODE_BYTE() + X); addr = zGetWord(addr) +#define INDIRECT_Y addr = GET_CODE_BYTE(); addr = zGetWord(addr) + Y +#define ZPAGE_X addr = (UBYTE) (GET_CODE_BYTE() + X) +#define ZPAGE_Y addr = (UBYTE) (GET_CODE_BYTE() + Y) +#endif /* PREFETCH_CODE */ + +/* Instructions */ +#define AND(t_data) Z = N = A &= t_data +#define CMP(t_data) data = t_data; Z = N = A - data; C = (A >= data) +#define CPX(t_data) data = t_data; Z = N = X - data; C = (X >= data) +#define CPY(t_data) data = t_data; Z = N = Y - data; C = (Y >= data) +#define EOR(t_data) Z = N = A ^= t_data +#define LDA(t_data) Z = N = A = t_data +#define LDX(t_data) Z = N = X = t_data +#define LDY(t_data) Z = N = Y = t_data +#define ORA(t_data) Z = N = A |= t_data +#ifndef NO_V_FLAG_VARIABLE +#define PHP(x) data = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x2c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x3c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; V = (data & 0x40); Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x0c) + 0x30 +#else /* NO_V_FLAG_VARIABLE */ +#define PHP(x) data = (N & 0x80) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x6c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x7c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x4c) + 0x30 +#endif /* NO_V_FLAG_VARIABLE */ +/* 1 or 2 extra cycles for conditional jumps */ +#if 0 +/* old, less efficient version */ +#define BRANCH(cond) \ + if (cond) { \ + SWORD sdata = (SBYTE) GET_CODE_BYTE(); \ + if ((sdata + (UBYTE) GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + PC += sdata; \ + DONE \ + } \ + PC++; \ + DONE +#else +#define BRANCH(cond) \ + if (cond) { \ + addr = (UWORD) (SBYTE) IMMEDIATE; \ + addr += GET_PC(); \ + if ((addr ^ GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + SET_PC(addr); \ + DONE \ + } \ + PC++; \ + DONE +#endif + +/* 1 extra cycle for X (or Y) index overflow */ +#define NCYCLES_X if ((UBYTE) addr < X) ANTIC_xpos++ +#define NCYCLES_Y if ((UBYTE) addr < Y) ANTIC_xpos++ + +/* Triggers a Non-Maskable Interrupt */ +void CPU_NMI(void) +{ + UBYTE S = CPU_regS; + UBYTE data; + + PHW(CPU_regPC); + PHPB0; + CPU_SetI; + CPU_regPC = MEMORY_dGetWordAligned(0xfffa); + CPU_regS = S; + ANTIC_xpos += 7; /* handling an interrupt by 6502 takes 7 cycles */ + INC_RET_NESTING; +} + +/* Check pending IRQ, helps in (not only) Lucasfilm games */ +#define CPUCHECKIRQ \ + if (CPU_IRQ && !(CPU_regP & CPU_I_FLAG) && ANTIC_xpos < ANTIC_xpos_limit) { \ + PHPC; \ + PHPB0; \ + CPU_SetI; \ + SET_PC(MEMORY_dGetWordAligned(0xfffe)); \ + ANTIC_xpos += 7; \ + INC_RET_NESTING; \ + } + +/* Enter monitor */ +#ifdef __PLUS +#define ENTER_MONITOR Atari800_Exit(TRUE) +#else +#ifdef SKIP +#define ENTER_MONITOR if (!Atari800_Exit(TRUE)) exit(0) +#else +#define ENTER_MONITOR exit(0) +#endif +#endif +#define DO_BREAK \ + UPDATE_GLOBAL_REGS; \ + CPU_GetStatus(); \ + ENTER_MONITOR; \ + CPU_PutStatus(); \ + UPDATE_LOCAL_REGS; + + +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ +static const int cycles[256] = +{ + 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, /* 0x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 1x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, /* 2x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 3x */ + + 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, /* 4x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 5x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, /* 6x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 7x */ + + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* 8x */ + 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, /* 9x */ + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* Ax */ + 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, /* Bx */ + + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Cx */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* Dx */ + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Ex */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7 /* Fx */ +}; + +/* 6502 emulation routine */ +#ifndef NO_GOTO +__extension__ /* suppress -ansi -pedantic warnings */ +#endif +void CPU_GO(int limit) +{ +#ifdef NO_GOTO +#define OPCODE_ALIAS(code) case 0x##code: +#define DONE break; +#else +#define OPCODE_ALIAS(code) opcode_##code: +#define DONE goto next; + static const void *opcode[256] = + { + &&opcode_00, &&opcode_01, &&opcode_02, &&opcode_03, + &&opcode_04, &&opcode_05, &&opcode_06, &&opcode_07, + &&opcode_08, &&opcode_09, &&opcode_0a, &&opcode_0b, + &&opcode_0c, &&opcode_0d, &&opcode_0e, &&opcode_0f, + + &&opcode_10, &&opcode_11, &&opcode_12, &&opcode_13, + &&opcode_14, &&opcode_15, &&opcode_16, &&opcode_17, + &&opcode_18, &&opcode_19, &&opcode_1a, &&opcode_1b, + &&opcode_1c, &&opcode_1d, &&opcode_1e, &&opcode_1f, + + &&opcode_20, &&opcode_21, &&opcode_22, &&opcode_23, + &&opcode_24, &&opcode_25, &&opcode_26, &&opcode_27, + &&opcode_28, &&opcode_29, &&opcode_2a, &&opcode_2b, + &&opcode_2c, &&opcode_2d, &&opcode_2e, &&opcode_2f, + + &&opcode_30, &&opcode_31, &&opcode_32, &&opcode_33, + &&opcode_34, &&opcode_35, &&opcode_36, &&opcode_37, + &&opcode_38, &&opcode_39, &&opcode_3a, &&opcode_3b, + &&opcode_3c, &&opcode_3d, &&opcode_3e, &&opcode_3f, + + &&opcode_40, &&opcode_41, &&opcode_42, &&opcode_43, + &&opcode_44, &&opcode_45, &&opcode_46, &&opcode_47, + &&opcode_48, &&opcode_49, &&opcode_4a, &&opcode_4b, + &&opcode_4c, &&opcode_4d, &&opcode_4e, &&opcode_4f, + + &&opcode_50, &&opcode_51, &&opcode_52, &&opcode_53, + &&opcode_54, &&opcode_55, &&opcode_56, &&opcode_57, + &&opcode_58, &&opcode_59, &&opcode_5a, &&opcode_5b, + &&opcode_5c, &&opcode_5d, &&opcode_5e, &&opcode_5f, + + &&opcode_60, &&opcode_61, &&opcode_62, &&opcode_63, + &&opcode_64, &&opcode_65, &&opcode_66, &&opcode_67, + &&opcode_68, &&opcode_69, &&opcode_6a, &&opcode_6b, + &&opcode_6c, &&opcode_6d, &&opcode_6e, &&opcode_6f, + + &&opcode_70, &&opcode_71, &&opcode_72, &&opcode_73, + &&opcode_74, &&opcode_75, &&opcode_76, &&opcode_77, + &&opcode_78, &&opcode_79, &&opcode_7a, &&opcode_7b, + &&opcode_7c, &&opcode_7d, &&opcode_7e, &&opcode_7f, + + &&opcode_80, &&opcode_81, &&opcode_82, &&opcode_83, + &&opcode_84, &&opcode_85, &&opcode_86, &&opcode_87, + &&opcode_88, &&opcode_89, &&opcode_8a, &&opcode_8b, + &&opcode_8c, &&opcode_8d, &&opcode_8e, &&opcode_8f, + + &&opcode_90, &&opcode_91, &&opcode_92, &&opcode_93, + &&opcode_94, &&opcode_95, &&opcode_96, &&opcode_97, + &&opcode_98, &&opcode_99, &&opcode_9a, &&opcode_9b, + &&opcode_9c, &&opcode_9d, &&opcode_9e, &&opcode_9f, + + &&opcode_a0, &&opcode_a1, &&opcode_a2, &&opcode_a3, + &&opcode_a4, &&opcode_a5, &&opcode_a6, &&opcode_a7, + &&opcode_a8, &&opcode_a9, &&opcode_aa, &&opcode_ab, + &&opcode_ac, &&opcode_ad, &&opcode_ae, &&opcode_af, + + &&opcode_b0, &&opcode_b1, &&opcode_b2, &&opcode_b3, + &&opcode_b4, &&opcode_b5, &&opcode_b6, &&opcode_b7, + &&opcode_b8, &&opcode_b9, &&opcode_ba, &&opcode_bb, + &&opcode_bc, &&opcode_bd, &&opcode_be, &&opcode_bf, + + &&opcode_c0, &&opcode_c1, &&opcode_c2, &&opcode_c3, + &&opcode_c4, &&opcode_c5, &&opcode_c6, &&opcode_c7, + &&opcode_c8, &&opcode_c9, &&opcode_ca, &&opcode_cb, + &&opcode_cc, &&opcode_cd, &&opcode_ce, &&opcode_cf, + + &&opcode_d0, &&opcode_d1, &&opcode_d2, &&opcode_d3, + &&opcode_d4, &&opcode_d5, &&opcode_d6, &&opcode_d7, + &&opcode_d8, &&opcode_d9, &&opcode_da, &&opcode_db, + &&opcode_dc, &&opcode_dd, &&opcode_de, &&opcode_df, + + &&opcode_e0, &&opcode_e1, &&opcode_e2, &&opcode_e3, + &&opcode_e4, &&opcode_e5, &&opcode_e6, &&opcode_e7, + &&opcode_e8, &&opcode_e9, &&opcode_ea, &&opcode_eb, + &&opcode_ec, &&opcode_ed, &&opcode_ee, &&opcode_ef, + + &&opcode_f0, &&opcode_f1, &&opcode_f2, &&opcode_f3, + &&opcode_f4, &&opcode_f5, &&opcode_f6, &&opcode_f7, + &&opcode_f8, &&opcode_f9, &&opcode_fa, &&opcode_fb, + &&opcode_fc, &&opcode_fd, &&opcode_fe, &&opcode_ff, + }; +#endif /* NO_GOTO */ + +#ifdef CYCLES_PER_OPCODE +#define OPCODE(code) OPCODE_ALIAS(code) ANTIC_xpos += cycles[0x##code]; +#else +#define OPCODE(code) OPCODE_ALIAS(code) +#endif + +#ifdef PC_PTR + const UBYTE *PC; +#else + UWORD PC; +#endif + UBYTE A; + UBYTE X; + UBYTE Y; + UBYTE S; + + UWORD addr; + UBYTE data; +#define insn data + +/* + This used to be in the main loop but has been removed to improve + execution speed. It does not seem to have any adverse effect on + the emulation for two reasons: + + 1. NMI's will can only be raised in antic.c - there is + no way an NMI can be generated whilst in this routine. + + 2. The timing of the IRQs are not that critical. */ + + if (ANTIC_wsync_halt) { + +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { +/* if ANTIC_WSYNC_C is a stolen cycle, ANTIC_antic2cpu_ptr will convert that to the nearest + cpu cycle before that cycle. The CPU will see this cycle, if WSYNC is not + delayed. (Actually this cycle is the first cycle of the instruction after + STA WSYNC, which was really executed one cycle after STA WSYNC because + of an internal antic delay ). ANTIC_delayed_wsync is added to this cycle to form + the limit in the case that WSYNC is not early (does not allow this extra cycle) */ + + if (limit < ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync) + return; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync; + } + else { + if (limit < (ANTIC_WSYNC_C + ANTIC_delayed_wsync)) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + } + ANTIC_delayed_wsync = 0; + +#else /* NEW_CYCLE_EXACT */ + + if (limit < ANTIC_WSYNC_C) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_wsync_halt = 0; + } + ANTIC_xpos_limit = limit; /* needed for WSYNC store inside ANTIC */ + + UPDATE_LOCAL_REGS; + + CPUCHECKIRQ; + + while (ANTIC_xpos < ANTIC_xpos_limit) { +#ifdef MONITOR_PROFILE + int old_xpos = ANTIC_xpos; + UWORD old_PC = GET_PC(); +#endif + + +#ifdef MONITOR_BREAKPOINTS + breakpoint_return: +#endif + +#ifdef PC_PTR + /* must handle 64k wrapping */ + if (PC >= MEMORY_mem + 0xfffe) { + if (PC >= MEMORY_mem + 0x10000) + PC -= 0x10000; + else { + /* the opcode is before 0x10000, but the operand is past */ +#ifdef WORDS_UNALIGNED_OK + *(UWORD *) (MEMORY_mem + 0x10000) = *(UWORD *) MEMORY_mem; +#else + MEMORY_mem[0x10000] = MEMORY_mem[0]; + MEMORY_mem[0x10001] = MEMORY_mem[1]; +#endif /* WORDS_UNALIGNED_OK */ + } + } +#endif /* PC_PTR */ + +#ifdef MONITOR_TRACE + if (MONITOR_trace_file != NULL) { + MONITOR_ShowState(MONITOR_trace_file, GET_PC(), A, X, Y, S, + (N & 0x80) ? 'N' : '-', +#ifndef NO_V_FLAG_VARIABLE + V ? 'V' : '-', +#else + (CPU_regP & CPU_V_FLAG) ? 'V' : '-', +#endif + (Z == 0) ? 'Z' : '-', + (C != 0) ? 'C' : '-'); + } +#endif + +#ifdef MONITOR_BREAK + CPU_remember_PC[CPU_remember_PC_curpos] = GET_PC(); + CPU_remember_op[CPU_remember_PC_curpos][0] = MEMORY_dGetByte(GET_PC()); + CPU_remember_op[CPU_remember_PC_curpos][1] = MEMORY_dGetByte(GET_PC()+1); + CPU_remember_op[CPU_remember_PC_curpos][2] = MEMORY_dGetByte(GET_PC()+2); +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_cpu2antic_ptr[ANTIC_xpos] + (ANTIC_ypos << 8); + else +#endif + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_xpos + (ANTIC_ypos << 8); + CPU_remember_PC_curpos = (CPU_remember_PC_curpos + 1) % CPU_REMEMBER_PC_STEPS; + + if (MONITOR_break_addr == GET_PC() || ANTIC_break_ypos == ANTIC_ypos) { + DO_BREAK; + } +#endif /* MONITOR_BREAK */ + +#if defined(WRAP_64K) && !defined(PC_PTR) + MEMORY_mem[0x10000] = MEMORY_mem[0]; +#endif + + insn = GET_CODE_BYTE(); + +#ifdef MONITOR_BREAKPOINTS +#ifdef MONITOR_BREAK + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled && !MONITOR_break_step) +#else + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled) +#endif + { + UBYTE optype = MONITOR_optype6502[insn]; + int i; + switch (optype >> 4) { + case 1: + addr = PEEK_CODE_WORD(); + break; + case 2: + addr = PEEK_CODE_BYTE(); + break; + case 3: + addr = PEEK_CODE_WORD() + X; + break; + case 4: + addr = PEEK_CODE_WORD() + Y; + break; + case 5: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + addr = zGetWord(addr); + break; + case 6: + addr = PEEK_CODE_BYTE(); + addr = zGetWord(addr) + Y; + break; + case 7: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + break; + case 8: + addr = (UBYTE) (PEEK_CODE_BYTE() + Y); + break; + /* XXX: case 13 */ + default: + addr = 0; + break; + } + for (i = 0; i < MONITOR_breakpoint_table_size; i++) { + int cond; + int value, m_addr; + if (!MONITOR_breakpoint_table[i].enabled) + continue; /* skip */ + cond = MONITOR_breakpoint_table[i].condition; + if (cond == MONITOR_BREAKPOINT_OR) + break; /* fire */ + value = MONITOR_breakpoint_table[i].value; + m_addr = MONITOR_breakpoint_table[i].m_addr; + if (cond == MONITOR_BREAKPOINT_FLAG_CLEAR) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) == 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V == 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z != 0) + continue; + break; + case CPU_C_FLAG: + if (C == 0) + continue; + break; + default: + if ((CPU_regP & value) == 0) + continue; + break; + } + } + else if (cond == MONITOR_BREAKPOINT_FLAG_SET) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) != 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V != 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z == 0) + continue; + break; + case CPU_C_FLAG: + if (C != 0) + continue; + break; + default: + if ((CPU_regP & value) != 0) + continue; + break; + } + } + else { + int val; + switch (cond >> 3) { + case MONITOR_BREAKPOINT_PC >> 3: + val = GET_PC() - 1; + break; + case MONITOR_BREAKPOINT_A >> 3: + val = A; + break; + case MONITOR_BREAKPOINT_X >> 3: + val = X; + break; + case MONITOR_BREAKPOINT_Y >> 3: + val = Y; + break; + case MONITOR_BREAKPOINT_S >> 3: + val = S; + break; + case MONITOR_BREAKPOINT_READ >> 3: + if ((optype & 4) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_WRITE >> 3: + if ((optype & 8) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_ACCESS >> 3: + if ((optype & 12) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_MEMORY >> 3: + val = MEMORY_SafeGetByte(m_addr); + break; + default: + /* shouldn't happen */ + continue; + } + if ((cond & MONITOR_BREAKPOINT_LESS) != 0 && val < value) + continue; + if ((cond & MONITOR_BREAKPOINT_EQUAL) != 0 && val == value) + continue; + if ((cond & MONITOR_BREAKPOINT_GREATER) != 0 && val > value) + continue; + cond_failed: + ; + } + /* a condition failed */ + /* quickly skip AND-connected conditions */ + do { + if (++i >= MONITOR_breakpoint_table_size) + goto no_breakpoint; + } while (MONITOR_breakpoint_table[i].condition != MONITOR_BREAKPOINT_OR || !MONITOR_breakpoint_table[i].enabled); + } + /* fire breakpoint */ + PC--; + DO_BREAK; + goto breakpoint_return; + no_breakpoint: + ; + } +#endif /* MONITOR_BREAKPOINTS */ + +#ifndef CYCLES_PER_OPCODE + ANTIC_xpos += cycles[insn]; +#endif + +#ifdef MONITOR_PROFILE + CPU_instruction_count[insn]++; + MONITOR_coverage[old_PC = PC - 1].count++; + MONITOR_coverage_insns++; +#endif + +#ifdef PREFETCH_CODE + addr = PEEK_CODE_WORD(); +#endif + +#ifdef NO_GOTO + switch (insn) { +#else + goto *opcode[insn]; +#endif + + OPCODE(00) /* BRK */ +#ifdef MONITOR_BREAK + if (MONITOR_break_brk) { + DO_BREAK; + } + else +#endif + { + PC++; + PHPC; + PHPB1; + CPU_SetI; + SET_PC(MEMORY_dGetWordAligned(0xfffe)); + INC_RET_NESTING; + } + DONE + + OPCODE(01) /* ORA (ab,x) */ + INDIRECT_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(03) /* ASO (ab,x) [unofficial - ASL then ORA with Acc] */ + INDIRECT_X; + + aso: + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_PutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE_ALIAS(04) /* NOP ab [unofficial - skip byte] */ + OPCODE_ALIAS(44) + OPCODE(64) + PC++; + DONE + + OPCODE_ALIAS(14) /* NOP ab,x [unofficial - skip byte] */ + OPCODE_ALIAS(34) + OPCODE_ALIAS(54) + OPCODE_ALIAS(74) + OPCODE_ALIAS(d4) + OPCODE(f4) + PC++; + DONE + + OPCODE_ALIAS(80) /* NOP #ab [unofficial - skip byte] */ + OPCODE_ALIAS(82) + OPCODE_ALIAS(89) + OPCODE_ALIAS(c2) + OPCODE(e2) + PC++; + DONE + + OPCODE(05) /* ORA ab */ + ZPAGE; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(06) /* ASL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(07) /* ASO ab [unofficial - ASL then ORA with Acc] */ + ZPAGE; + + aso_zpage: + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_dPutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE(08) /* PHP */ + PHPB1; + DONE + + OPCODE(09) /* ORA #ab */ + ORA(IMMEDIATE); + DONE + + OPCODE(0a) /* ASL */ + C = (A & 0x80) ? 1 : 0; + Z = N = A <<= 1; + DONE + + OPCODE_ALIAS(0b) /* ANC #ab [unofficial - AND then copy N to C (Fox) */ + OPCODE(2b) + AND(IMMEDIATE); + C = N >= 0x80; + DONE + + OPCODE(0c) /* NOP abcd [unofficial - skip word] */ + PC += 2; + DONE + + OPCODE(0d) /* ORA abcd */ + ABSOLUTE; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(0e) /* ASL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(0f) /* ASO abcd [unofficial - ASL then ORA with Acc] */ + ABSOLUTE; + goto aso; + + OPCODE(10) /* BPL */ + BRANCH(!(N & 0x80)) + + OPCODE(11) /* ORA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(13) /* ASO (ab),y [unofficial - ASL then ORA with Acc] */ + INDIRECT_Y; + goto aso; + + OPCODE(15) /* ORA ab,x */ + ZPAGE_X; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(16) /* ASL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(17) /* ASO ab,x [unofficial - ASL then ORA with Acc] */ + ZPAGE_X; + goto aso_zpage; + + OPCODE(18) /* CLC */ + C = 0; + DONE + + OPCODE(19) /* ORA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1b) /* ASO abcd,y [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_Y; + goto aso; + + OPCODE_ALIAS(1c) /* NOP abcd,x [unofficial - skip word] */ + OPCODE_ALIAS(3c) + OPCODE_ALIAS(5c) + OPCODE_ALIAS(7c) + OPCODE_ALIAS(dc) + OPCODE(fc) + if (OP_BYTE + X >= 0x100) + ANTIC_xpos++; + PC += 2; + DONE + + OPCODE(1d) /* ORA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1e) /* ASL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(1f) /* ASO abcd,x [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_X; + goto aso; + + OPCODE(20) /* JSR abcd */ + { + UWORD retaddr = GET_PC() + 1; +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; + MONITOR_ret_nesting++; +#endif + PHW(retaddr); + } + SET_PC(OP_WORD); + DONE + + OPCODE(21) /* AND (ab,x) */ + INDIRECT_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(23) /* RLA (ab,x) [unofficial - ROL Mem, then AND with A] */ + INDIRECT_X; + + rla: + RMW_GetByte(data, addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_PutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(24) /* BIT ab */ + ZPAGE; + N = MEMORY_dGetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(25) /* AND ab */ + ZPAGE; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(26) /* ROL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(27) /* RLA ab [unofficial - ROL Mem, then AND with A] */ + ZPAGE; + + rla_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_dPutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(28) /* PLP */ + PLP; + CPUCHECKIRQ; + DONE + + OPCODE(29) /* AND #ab */ + AND(IMMEDIATE); + DONE + + OPCODE(2a) /* ROL */ + Z = N = (A << 1) + C; + C = (A & 0x80) ? 1 : 0; + A = Z; + DONE + + OPCODE(2c) /* BIT abcd */ + ABSOLUTE; + N = MEMORY_GetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(2d) /* AND abcd */ + ABSOLUTE; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(2e) /* ROL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(2f) /* RLA abcd [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE; + goto rla; + + OPCODE(30) /* BMI */ + BRANCH(N & 0x80) + + OPCODE(31) /* AND (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(33) /* RLA (ab),y [unofficial - ROL Mem, then AND with A] */ + INDIRECT_Y; + goto rla; + + OPCODE(35) /* AND ab,x */ + ZPAGE_X; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(36) /* ROL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(37) /* RLA ab,x [unofficial - ROL Mem, then AND with A] */ + ZPAGE_X; + goto rla_zpage; + + OPCODE(38) /* SEC */ + C = 1; + DONE + + OPCODE(39) /* AND abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3b) /* RLA abcd,y [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_Y; + goto rla; + + OPCODE(3d) /* AND abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3e) /* ROL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(3f) /* RLA abcd,x [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_X; + goto rla; + + OPCODE(40) /* RTI */ + PLP; + data = PL; + SET_PC((PL << 8) + data); + CPUCHECKIRQ; +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(41) /* EOR (ab,x) */ + INDIRECT_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(43) /* LSE (ab,x) [unofficial - LSR then EOR result with A] */ + INDIRECT_X; + + lse: + RMW_GetByte(data, addr); + C = data & 1; + data >>= 1; + MEMORY_PutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(45) /* EOR ab */ + ZPAGE; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(46) /* LSR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(47) /* LSE ab [unofficial - LSR then EOR result with A] */ + ZPAGE; + + lse_zpage: + data = MEMORY_dGetByte(addr); + C = data & 1; + data >>= 1; + MEMORY_dPutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(48) /* PHA */ + PH(A); + DONE + + OPCODE(49) /* EOR #ab */ + EOR(IMMEDIATE); + DONE + + OPCODE(4a) /* LSR */ + C = A & 1; + Z = N = A >>= 1; + DONE + + OPCODE(4b) /* ALR #ab [unofficial - Acc AND Data, LSR result] */ + data = A & IMMEDIATE; + C = data & 1; + Z = N = A = (data >> 1); + DONE + + OPCODE(4c) /* JMP abcd */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + SET_PC(OP_WORD); + DONE + + OPCODE(4d) /* EOR abcd */ + ABSOLUTE; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(4e) /* LSR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(4f) /* LSE abcd [unofficial - LSR then EOR result with A] */ + ABSOLUTE; + goto lse; + + OPCODE(50) /* BVC */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(!V) +#else + BRANCH(!(CPU_regP & 0x40)) +#endif + + OPCODE(51) /* EOR (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(53) /* LSE (ab),y [unofficial - LSR then EOR result with A] */ + INDIRECT_Y; + goto lse; + + OPCODE(55) /* EOR ab,x */ + ZPAGE_X; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(56) /* LSR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(57) /* LSE ab,x [unofficial - LSR then EOR result with A] */ + ZPAGE_X; + goto lse_zpage; + + OPCODE(58) /* CLI */ + CPU_ClrI; + CPUCHECKIRQ; + DONE + + OPCODE(59) /* EOR abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5b) /* LSE abcd,y [unofficial - LSR then EOR result with A] */ + ABSOLUTE_Y; + goto lse; + + OPCODE(5d) /* EOR abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5e) /* LSR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(5f) /* LSE abcd,x [unofficial - LSR then EOR result with A] */ + ABSOLUTE_X; + goto lse; + + OPCODE(60) /* RTS */ + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + if (CPU_rts_handler != NULL) { + CPU_rts_handler(); + CPU_rts_handler = NULL; + } + DONE + + OPCODE(61) /* ADC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(63) /* RRA (ab,x) [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_X; + + rra: + RMW_GetByte(data, addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_PutByte(addr, data); + goto adc; + + OPCODE(65) /* ADC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(66) /* ROR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(67) /* RRA ab [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE; + + rra_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_dPutByte(addr, data); + goto adc; + + OPCODE(68) /* PLA */ + Z = N = A = PL; + DONE + + OPCODE(69) /* ADC #ab */ + data = IMMEDIATE; + goto adc; + + OPCODE(6a) /* ROR */ + Z = N = (C << 7) + (A >> 1); + C = A & 1; + A = Z; + DONE + + OPCODE(6b) /* ARR #ab [unofficial - Acc AND Data, ROR result] */ + /* It does some 'BCD fixup' if D flag is set */ + /* MPC 05/24/00 */ + data = A & IMMEDIATE; + if (CPU_regP & CPU_D_FLAG) { + UBYTE temp = (data >> 1) + (C << 7); + Z = N = temp; +#ifndef NO_V_FLAG_VARIABLE + V = ((temp ^ data) & 0x40); +#else + CPU_regP = (CPU_regP & 0xbf) + ((temp ^ data) & 0x40); +#endif + if ((data & 0x0F) + (data & 0x01) > 5) + temp = (temp & 0xF0) + ((temp + 0x6) & 0x0F); + if (data + (data & 0x10) >= 0x60) { + temp += 0x60; + C = 1; + } + else + C = 0; + A = (UBYTE) temp; + } + else { + Z = N = A = (data >> 1) + (C << 7); + C = data >> 7; +#ifndef NO_V_FLAG_VARIABLE + V = C ^ ((A >> 5) & 1); +#else + CPU_regP = (CPU_regP & 0xbf) + ((A ^ data) & 0x40); +#endif + } + DONE + + OPCODE(6c) /* JMP (abcd) */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + ABSOLUTE; +#ifdef CPU65C02 + /* XXX: if ((UBYTE) addr == 0xff) ANTIC_xpos++; */ + SET_PC(MEMORY_dGetWord(addr)); +#else + /* original 6502 had a bug in JMP (addr) when addr crossed page boundary */ + if ((UBYTE) addr == 0xff) + SET_PC((MEMORY_dGetByte(addr - 0xff) << 8) + MEMORY_dGetByte(addr)); + else + SET_PC(MEMORY_dGetWord(addr)); +#endif + DONE + + OPCODE(6d) /* ADC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(6e) /* ROR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(6f) /* RRA abcd [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE; + goto rra; + + OPCODE(70) /* BVS */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(V) +#else + BRANCH(CPU_regP & 0x40) +#endif + + OPCODE(71) /* ADC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(73) /* RRA (ab),y [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_Y; + goto rra; + + OPCODE(75) /* ADC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(76) /* ROR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(77) /* RRA ab,x [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE_X; + goto rra_zpage; + + OPCODE(78) /* SEI */ + CPU_SetI; + DONE + + OPCODE(79) /* ADC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7b) /* RRA abcd,y [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_Y; + goto rra; + + OPCODE(7d) /* ADC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7e) /* ROR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(7f) /* RRA abcd,x [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_X; + goto rra; + + OPCODE(81) /* STA (ab,x) */ + INDIRECT_X; + MEMORY_PutByte(addr, A); + DONE + + /* AXS doesn't change flags and SAX is better name for it (Fox) */ + OPCODE(83) /* SAX (ab,x) [unofficial - Store result A AND X */ + INDIRECT_X; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(84) /* STY ab */ + ZPAGE; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(85) /* STA ab */ + ZPAGE; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(86) /* STX ab */ + ZPAGE; + MEMORY_dPutByte(addr, X); + DONE + + OPCODE(87) /* SAX ab [unofficial - Store result A AND X] */ + ZPAGE; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(88) /* DEY */ + Z = N = --Y; + DONE + + OPCODE(8a) /* TXA */ + Z = N = A = X; + DONE + + OPCODE(8b) /* ANE #ab [unofficial - A AND X AND (Mem OR $EF) to Acc] (Fox) */ + data = IMMEDIATE; + Z = N = A & X & data; + A &= X & (data | 0xef); + DONE + + OPCODE(8c) /* STY abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, Y); + DONE + + OPCODE(8d) /* STA abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(8e) /* STX abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(8f) /* SAX abcd [unofficial - Store result A AND X] */ + ABSOLUTE; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(90) /* BCC */ + BRANCH(!C) + + OPCODE(91) /* STA (ab),y */ + INDIRECT_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(93) /* SHA (ab),y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + /* It seems previous memory value is important - also in 9f */ + ZPAGE; + addr = zGetWord(addr); + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(94) /* STY ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(95) /* STA ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(96) /* STX ab,y */ + ZPAGE_Y; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(97) /* SAX ab,y [unofficial - Store result A AND X] */ + ZPAGE_Y; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(98) /* TYA */ + Z = N = A = Y; + DONE + + OPCODE(99) /* STA abcd,y */ + ABSOLUTE_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9a) /* TXS */ + S = X; + DONE + + OPCODE(9b) /* SHS abcd,y [unofficial, UNSTABLE] (Fox) */ + /* Transfer A AND X to S, then store S AND (H+1)] */ + /* S seems to be stable, only memory values vary */ + ABSOLUTE; + S = A & X; + data = S & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9c) /* SHY abcd,x [unofficial - Store Y and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = Y & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + X > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + X) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + X, data); + } + DONE + + OPCODE(9d) /* STA abcd,x */ + ABSOLUTE_X; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9e) /* SHX abcd,y [unofficial - Store X and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = X & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9f) /* SHA abcd,y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + ABSOLUTE; + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(a0) /* LDY #ab */ + LDY(IMMEDIATE); + DONE + + OPCODE(a1) /* LDA (ab,x) */ + INDIRECT_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(a2) /* LDX #ab */ + LDX(IMMEDIATE); + DONE + + OPCODE(a3) /* LAX (ab,x) [unofficial] */ + INDIRECT_X; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a4) /* LDY ab */ + ZPAGE; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a5) /* LDA ab */ + ZPAGE; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a6) /* LDX ab */ + ZPAGE; + LDX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a7) /* LAX ab [unofficial] */ + ZPAGE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a8) /* TAY */ + Z = N = Y = A; + DONE + + OPCODE(a9) /* LDA #ab */ + LDA(IMMEDIATE); + DONE + + OPCODE(aa) /* TAX */ + Z = N = X = A; + DONE + + OPCODE(ab) /* ANX #ab [unofficial - AND #ab, then TAX] */ + Z = N = X = A &= IMMEDIATE; + DONE + + OPCODE(ac) /* LDY abcd */ + ABSOLUTE; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(ad) /* LDA abcd */ + ABSOLUTE; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ae) /* LDX abcd */ + ABSOLUTE; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(af) /* LAX abcd [unofficial] */ + ABSOLUTE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b0) /* BCS */ + BRANCH(C) + + OPCODE(b1) /* LDA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(b3) /* LAX (ab),y [unofficial] */ + INDIRECT_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b4) /* LDY ab,x */ + ZPAGE_X; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b5) /* LDA ab,x */ + ZPAGE_X; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b6) /* LDX ab,y */ + ZPAGE_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(b7) /* LAX ab,y [unofficial] */ + ZPAGE_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b8) /* CLV */ +#ifndef NO_V_FLAG_VARIABLE + V = 0; +#else + CPU_ClrV; +#endif + DONE + + OPCODE(b9) /* LDA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ba) /* TSX */ + Z = N = X = S; + DONE + +/* AXA [unofficial - original decode by R.Sterba and R.Petruzela 15.1.1998 :-)] + AXA - this is our new imaginative name for instruction with opcode hex BB. + AXA - Store Mem AND #$FD to Acc and X, then set stackpoint to value (Acc - 4) + It's cool! :-) + LAS - this is better name for this :) (Fox) + It simply ANDs stack pointer with Mem, then transfers result to A and X + */ + + OPCODE(bb) /* LAS abcd,y [unofficial - AND S with Mem, transfer to A and X (Fox) */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = A = X = S &= MEMORY_GetByte(addr); + DONE + + OPCODE(bc) /* LDY abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(bd) /* LDA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(be) /* LDX abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(bf) /* LAX abcd,y [unofficial] */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(c0) /* CPY #ab */ + CPY(IMMEDIATE); + DONE + + OPCODE(c1) /* CMP (ab,x) */ + INDIRECT_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(c3) /* DCM (ab,x) [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_X; + + dcm: + RMW_GetByte(data, addr); + data--; + MEMORY_PutByte(addr, data); + CMP(data); + DONE + + OPCODE(c4) /* CPY ab */ + ZPAGE; + CPY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c5) /* CMP ab */ + ZPAGE; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c6) /* DEC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(c7) /* DCM ab [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE; + + dcm_zpage: + data = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, data); + CMP(data); + DONE + + OPCODE(c8) /* INY */ + Z = N = ++Y; + DONE + + OPCODE(c9) /* CMP #ab */ + CMP(IMMEDIATE); + DONE + + OPCODE(ca) /* DEX */ + Z = N = --X; + DONE + + OPCODE(cb) /* SBX #ab [unofficial - store ((A AND X) - Mem) in X] (Fox) */ + X &= A; + data = IMMEDIATE; + C = X >= data; + /* MPC 05/24/00 */ + Z = N = X -= data; + DONE + + OPCODE(cc) /* CPY abcd */ + ABSOLUTE; + CPY(MEMORY_GetByte(addr)); + DONE + + OPCODE(cd) /* CMP abcd */ + ABSOLUTE; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(ce) /* DEC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(cf) /* DCM abcd [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE; + goto dcm; + + OPCODE(d0) /* BNE */ + BRANCH(Z) + + OPCODE(d1) /* CMP (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(d3) /* DCM (ab),y [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_Y; + goto dcm; + + OPCODE(d5) /* CMP ab,x */ + ZPAGE_X; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(d6) /* DEC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(d7) /* DCM ab,x [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE_X; + goto dcm_zpage; + + OPCODE(d8) /* CLD */ + CPU_ClrD; + DONE + + OPCODE(d9) /* CMP abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(db) /* DCM abcd,y [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_Y; + goto dcm; + + OPCODE(dd) /* CMP abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(de) /* DEC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(df) /* DCM abcd,x [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_X; + goto dcm; + + OPCODE(e0) /* CPX #ab */ + CPX(IMMEDIATE); + DONE + + OPCODE(e1) /* SBC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(e3) /* INS (ab,x) [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_X; + + ins: + RMW_GetByte(data, addr); + ++data; + MEMORY_PutByte(addr, data); + goto sbc; + + OPCODE(e4) /* CPX ab */ + ZPAGE; + CPX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(e5) /* SBC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(e6) /* INC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(e7) /* INS ab [unofficial - INC Mem then SBC with Acc] */ + ZPAGE; + + ins_zpage: + data = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, data); + goto sbc; + + OPCODE(e8) /* INX */ + Z = N = ++X; + DONE + + OPCODE_ALIAS(e9) /* SBC #ab */ + OPCODE(eb) /* SBC #ab [unofficial] */ + data = IMMEDIATE; + goto sbc; + + OPCODE_ALIAS(ea) /* NOP */ + OPCODE_ALIAS(1a) /* NOP [unofficial] */ + OPCODE_ALIAS(3a) + OPCODE_ALIAS(5a) + OPCODE_ALIAS(7a) + OPCODE_ALIAS(da) + OPCODE(fa) + DONE + + OPCODE(ec) /* CPX abcd */ + ABSOLUTE; + CPX(MEMORY_GetByte(addr)); + DONE + + OPCODE(ed) /* SBC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(ee) /* INC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ef) /* INS abcd [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE; + goto ins; + + OPCODE(f0) /* BEQ */ + BRANCH(!Z) + + OPCODE(f1) /* SBC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(f3) /* INS (ab),y [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_Y; + goto ins; + + OPCODE(f5) /* SBC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(f6) /* INC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(f7) /* INS ab,x [unofficial - INC Mem then SBC with Acc] */ + ZPAGE_X; + goto ins_zpage; + + OPCODE(f8) /* SED */ + CPU_SetD; + DONE + + OPCODE(f9) /* SBC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fb) /* INS abcd,y [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_Y; + goto ins; + + OPCODE(fd) /* SBC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fe) /* INC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ff) /* INS abcd,x [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_X; + goto ins; + +#ifdef ASAP + + OPCODE_ALIAS(d2) + OPCODE_ALIAS(f2) + +#else + + OPCODE(d2) /* ESCRTS #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(f2) /* ESC #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + /* OPCODE(ff: ESC #ab - opcode FF is now used for INS [unofficial] instruction !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + + OPCODE_ALIAS(02) /* CIM [unofficial - crash intermediate] */ + OPCODE_ALIAS(12) + OPCODE_ALIAS(22) + OPCODE_ALIAS(32) + OPCODE_ALIAS(42) + OPCODE_ALIAS(52) + OPCODE_ALIAS(62) + OPCODE_ALIAS(72) + OPCODE_ALIAS(92) + OPCODE(b2) + +#ifdef ASAP + + ASAP_CIM(); + DONE + +#else + + /* OPCODE(d2) Used for ESCRTS #ab (CIM) */ + /* OPCODE(f2) Used for ESC #ab (CIM) */ + PC--; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + +#ifdef CRASH_MENU + UI_crash_address = GET_PC(); + UI_crash_afterCIM = GET_PC() + 1; + UI_crash_code = insn; + UI_Run(); +#else + CPU_cim_encountered = TRUE; + ENTER_MONITOR; +#endif /* CRASH_MENU */ + + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + +/* ---------------------------------------------- */ +/* ADC and SBC routines */ + + adc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + tmp = A + data + C; + C = tmp > 0xff; + /* C = tmp >> 8; */ +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) + (data & 0x0f) + C; + if (tmp >= 0x0a) + tmp = ((tmp + 0x06) & 0x0f) + 0x10; + tmp += (A & 0xf0) + (data & 0xf0); + + Z = A + data + C; + N = (UBYTE) tmp; +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + + if (tmp >= 0xa0) + tmp += 0x60; + C = tmp > 0xff; + A = (UBYTE) tmp; + } + DONE + + sbc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + /* tmp = A - data - !C; */ + tmp = A - data - 1 + C; + C = tmp < 0x100; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ tmp) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) - (data & 0x0f) - 1 + C; + if (tmp & 0x10) + tmp = ((tmp - 0x06) & 0x0f) - 0x10; + tmp += (A & 0xf0) - (data & 0xf0); + if (tmp & 0x100) + tmp -= 0x60; + + Z = N = A - data - 1 + C; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ Z) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ Z) & 0x80)) + CPU_SetV; +#endif + C = ((unsigned int) (A - data - 1 + C)) <= 0xff; + + A = tmp; + } + DONE + +#ifdef NO_GOTO + } +#else + next: +#endif + +#ifdef MONITOR_PROFILE + { + int cyc = ANTIC_xpos - old_xpos; + MONITOR_coverage[old_PC].cycles += cyc; + MONITOR_coverage_cycles += cyc; + } +#endif + +#ifdef MONITOR_BREAK + if (MONITOR_break_step) { + DO_BREAK; + } +#endif + /* This "continue" does nothing here. + But it is necessary because, if we're not using NO_GOTO nor MONITOR_BREAK, + gcc can complain: "error: label at end of compound statement". */ + continue; + } + + UPDATE_GLOBAL_REGS; +} + +#endif /* FALCON_CPUASM */ + +void CPU_Reset(void) +{ +#ifdef MONITOR_PROFILE + memset(CPU_instruction_count, 0, sizeof(CPU_instruction_count)); +#endif + + CPU_IRQ = 0; + + CPU_regP = 0x34; /* The unused bit is always 1, I flag set! */ + CPU_PutStatus(); /* Make sure flags are all updated */ + CPU_regS = 0xff; + CPU_regPC = MEMORY_dGetWordAligned(0xfffc); +} + +#if !defined(BASIC) && !defined(ASAP) + +void CPU_StateSave(UBYTE SaveVerbose) +{ + StateSav_SaveUBYTE(&CPU_regA, 1); + + CPU_GetStatus(); /* Make sure flags are all updated */ + StateSav_SaveUBYTE(&CPU_regP, 1); + + StateSav_SaveUBYTE(&CPU_regS, 1); + StateSav_SaveUBYTE(&CPU_regX, 1); + StateSav_SaveUBYTE(&CPU_regY, 1); + StateSav_SaveUBYTE(&CPU_IRQ, 1); + + MEMORY_StateSave(SaveVerbose); + + StateSav_SaveUWORD(&CPU_regPC, 1); +} + +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion) +{ + StateSav_ReadUBYTE(&CPU_regA, 1); + + StateSav_ReadUBYTE(&CPU_regP, 1); + CPU_PutStatus(); /* Make sure flags are all updated */ + + StateSav_ReadUBYTE(&CPU_regS, 1); + StateSav_ReadUBYTE(&CPU_regX, 1); + StateSav_ReadUBYTE(&CPU_regY, 1); + StateSav_ReadUBYTE(&CPU_IRQ, 1); + + MEMORY_StateRead(SaveVerbose, StateVersion); + + StateSav_ReadUWORD(&CPU_regPC, 1); +} + +#endif diff --git a/MCUME_esp32/esp800/main/cpu.h b/MCUME_esp32/esp800/main/cpu.h new file mode 100644 index 0000000..3ee25e6 --- /dev/null +++ b/MCUME_esp32/esp800/main/cpu.h @@ -0,0 +1,65 @@ +#ifndef CPU_H_ +#define CPU_H_ + +#include "atari.h" + +#define CPU_N_FLAG 0x80 +#define CPU_V_FLAG 0x40 +#define CPU_B_FLAG 0x10 +#define CPU_D_FLAG 0x08 +#define CPU_I_FLAG 0x04 +#define CPU_Z_FLAG 0x02 +#define CPU_C_FLAG 0x01 + +void CPU_GetStatus(void); +void CPU_PutStatus(void); +void CPU_Reset(void); +void CPU_StateSave(UBYTE SaveVerbose); +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion); +void CPU_NMI(void); +void CPU_GO(int limit); +#define CPU_GenerateIRQ() (CPU_IRQ = 1) + +extern UWORD CPU_regPC; +extern UBYTE CPU_regA; +extern UBYTE CPU_regP; +extern UBYTE CPU_regS; +extern UBYTE CPU_regY; +extern UBYTE CPU_regX; + +#define CPU_SetN CPU_regP |= CPU_N_FLAG +#define CPU_ClrN CPU_regP &= (~CPU_N_FLAG) +#define CPU_SetV CPU_regP |= CPU_V_FLAG +#define CPU_ClrV CPU_regP &= (~CPU_V_FLAG) +#define CPU_SetB CPU_regP |= CPU_B_FLAG +#define CPU_ClrB CPU_regP &= (~CPU_B_FLAG) +#define CPU_SetD CPU_regP |= CPU_D_FLAG +#define CPU_ClrD CPU_regP &= (~CPU_D_FLAG) +#define CPU_SetI CPU_regP |= CPU_I_FLAG +#define CPU_ClrI CPU_regP &= (~CPU_I_FLAG) +#define CPU_SetZ CPU_regP |= CPU_Z_FLAG +#define CPU_ClrZ CPU_regP &= (~CPU_Z_FLAG) +#define CPU_SetC CPU_regP |= CPU_C_FLAG +#define CPU_ClrC CPU_regP &= (~CPU_C_FLAG) + +extern UBYTE CPU_IRQ; + +extern void (*CPU_rts_handler)(void); + +extern UBYTE CPU_cim_encountered; + +#define CPU_REMEMBER_PC_STEPS 64 +extern UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +extern UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +extern unsigned int CPU_remember_PC_curpos; +extern int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; + +#define CPU_REMEMBER_JMP_STEPS 16 +extern UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +extern unsigned int CPU_remember_jmp_curpos; + +#ifdef MONITOR_PROFILE +extern int CPU_instruction_count[256]; +#endif + +#endif /* CPU_H_ */ diff --git a/MCUME_esp32/esp800/main/crc32.c b/MCUME_esp32/esp800/main/crc32.c new file mode 100644 index 0000000..d22e223 --- /dev/null +++ b/MCUME_esp32/esp800/main/crc32.c @@ -0,0 +1,86 @@ +/* CRC32.C -- Calculates 32bit CRC checksum + */ +// modified main() (see crc32.orig) to get calc_crc32() function +// JH 2002 + +#include +#include + +const unsigned long crc32_table[256] = { /* lookup table */ +0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, +0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, +0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, +0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, +0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, +0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, +0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, +0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, +0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, +0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, +0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, +0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, +0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, +0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, +0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, +0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, +0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, +0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, +0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, +0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, +0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, +0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, +0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, +0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, +0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, +0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, +0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, +0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, +0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, +0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, +0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, +0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, +0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, +0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, +0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, +0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, +0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, +0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, +0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, +0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, +0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, +0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, +0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; + +unsigned long calc_crc32(unsigned char *buf, int buflen) +{ + // buf is pointer to input buffer (data to crc) + // buflen is length of input buffer + + unsigned long crc; /* CRC value */ + //size_t j; /* buffer positions*/ + int j; /* buffer positions*/ + int k; /* generic integer */ + +#ifdef DEBUG + printf("32bit Cyclic Redudancy Check\n"); +#endif + + crc = 0xFFFFFFFF; /* preconditioning sets non zero value */ + + /* loop through the buffer and calculate CRC */ + for(j=0; j> 8) & 0x00FFFFFFL) ^ crc32_table[k]; + } + + crc=~crc; /* postconditioning */ + + /* print results */ +#ifdef DEBUG + printf("CRC32 is %08lX\n", crc); +#endif + + return crc; +} + + diff --git a/MCUME_esp32/esp800/main/emuapi.cpp b/MCUME_esp32/esp800/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/esp800/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " Atari 800 Emulator " +#define ROMSDIR "800" + +#define emu_Init(ROM) {at8_Init(); at8_Start(ROM);} +#define emu_Step(x) {at8_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x1 +#define PALETTE_SIZE 256 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 10 +#define KEYBOARD_Y 8 +#define KEYBOARD_KEY_H 40 +#define KEYBOARD_KEY_W 30 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,21,21,22,21,22,21,21,22,21,22,21,21,22,21,22, + TAREA_NEW_ROW,34,21,21,21,21,21,21,21,21,21,21,21,21,34, + TAREA_NEW_ROW,40,21,21,21,21,21,21,21,21,21,21,21,21,21, + TAREA_NEW_ROW,50,21,21,21,21,21,21,21,21,21,21,21,45, + TAREA_NEW_ROW,60,192, + TAREA_END}; + + +const unsigned short keys[] = { + 0x1C+1,0x1F+1,0x1F ,0x1A+1,0x18+1,0x1D+1,0x1B+1,0x33+1,0x35+1,0x30+1,0x32+1,0x36+1,0x37+1,0,0, + 0x2C+1,0x2F+1,0x2F ,0x2A+1,0x28+1,0x2D+1,0x2B+1,0x0B+1,0x0D+1,0x08+1,0x0A+1,0x0E,0x0F+1,0x0C+1, + 0, 0x3F+1,0x3F ,0x3A+1,0x38+1,0x3D+1,0x39+1,0x01+1,0x05+1,0x00+1,0x02+1,0x06+1,0x07+1,0, + 0x3C+1,0x17+1,0x16+1,0x12+1,0x11+1,0x15+1,0x23+1,0x25+1,0x20+1,0x22+1,0x26+1, 0,0, + 0, 0x21+1 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0, 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408,0,0,0,0, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404,0,0,0X0402, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0,0,0,0, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0,0,0,0, + 0, 0X0401}; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + + + diff --git a/MCUME_esp32/esp800/main/font8x8.h b/MCUME_esp32/esp800/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/esp800/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/esp800/main/go.cpp b/MCUME_esp32/esp800/main/go.cpp new file mode 100644 index 0000000..3c98b0c --- /dev/null +++ b/MCUME_esp32/esp800/main/go.cpp @@ -0,0 +1,102 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "atari800.h" +} + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/esp800/main/go.h b/MCUME_esp32/esp800/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/esp800/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp800/main/gtia.c b/MCUME_esp32/esp800/main/gtia.c new file mode 100644 index 0000000..1d3612c --- /dev/null +++ b/MCUME_esp32/esp800/main/gtia.c @@ -0,0 +1,1330 @@ +/* + * gtia.c - GTIA chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2015 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include + +#include "antic.h" +#include "gtia.h" + +/* GTIA Registers ---------------------------------------------------------- */ + +UBYTE GTIA_M0PL; +UBYTE GTIA_M1PL; +UBYTE GTIA_M2PL; +UBYTE GTIA_M3PL; +UBYTE GTIA_P0PL; +UBYTE GTIA_P1PL; +UBYTE GTIA_P2PL; +UBYTE GTIA_P3PL; +UBYTE GTIA_HPOSP0; +UBYTE GTIA_HPOSP1; +UBYTE GTIA_HPOSP2; +UBYTE GTIA_HPOSP3; +UBYTE GTIA_HPOSM0; +UBYTE GTIA_HPOSM1; +UBYTE GTIA_HPOSM2; +UBYTE GTIA_HPOSM3; +UBYTE GTIA_SIZEP0; +UBYTE GTIA_SIZEP1; +UBYTE GTIA_SIZEP2; +UBYTE GTIA_SIZEP3; +UBYTE GTIA_SIZEM; +UBYTE GTIA_GRAFP0; +UBYTE GTIA_GRAFP1; +UBYTE GTIA_GRAFP2; +UBYTE GTIA_GRAFP3; +UBYTE GTIA_GRAFM; +UBYTE GTIA_COLPM0; +UBYTE GTIA_COLPM1; +UBYTE GTIA_COLPM2; +UBYTE GTIA_COLPM3; +UBYTE GTIA_COLPF0; +UBYTE GTIA_COLPF1; +UBYTE GTIA_COLPF2; +UBYTE GTIA_COLPF3; +UBYTE GTIA_COLBK; +UBYTE GTIA_PRIOR; +UBYTE GTIA_VDELAY; +UBYTE GTIA_GRACTL; + +/* Internal GTIA state ----------------------------------------------------- */ + +int GTIA_speaker; +int GTIA_consol_override = 0; +static UBYTE consol; +UBYTE consol_mask; +UBYTE GTIA_TRIG[4]; +UBYTE GTIA_TRIG_latch[4]; + +#if defined(BASIC) || defined(CURSES_BASIC) + +static UBYTE PF0PM = 0; +static UBYTE PF1PM = 0; +static UBYTE PF2PM = 0; +static UBYTE PF3PM = 0; +#define GTIA_collisions_mask_missile_playfield 0 +#define GTIA_collisions_mask_player_playfield 0 +#define GTIA_collisions_mask_missile_player 0 +#define GTIA_collisions_mask_player_player 0 + +#else /* defined(BASIC) || defined(CURSES_BASIC) */ + +void set_prior(UBYTE byte); /* in antic.c */ + +/* Player/Missile stuff ---------------------------------------------------- */ + +/* change to 0x00 to disable collisions */ +UBYTE GTIA_collisions_mask_missile_playfield = 0x0f; +UBYTE GTIA_collisions_mask_player_playfield = 0x0f; +UBYTE GTIA_collisions_mask_missile_player = 0x0f; +UBYTE GTIA_collisions_mask_player_player = 0x0f; + +#ifdef NEW_CYCLE_EXACT +/* temporary collision registers for the current scanline only */ +UBYTE P1PL_T; +UBYTE P2PL_T; +UBYTE P3PL_T; +UBYTE M0PL_T; +UBYTE M1PL_T; +UBYTE M2PL_T; +UBYTE M3PL_T; +/* If partial collisions have been generated during a scanline, this + * is the position of the up-to-date collision point , otherwise it is 0 + */ +int collision_curpos; +/* if hitclr has been written to during a scanline, this is the position + * within pm_scaline at which it was written to, and collisions should + * only be generated from this point on, otherwise it is 0 + */ +int hitclr_pos; +#else +#define P1PL_T GTIA_P1PL +#define P2PL_T GTIA_P2PL +#define P3PL_T GTIA_P3PL +#define M0PL_T GTIA_M0PL +#define M1PL_T GTIA_M1PL +#define M2PL_T GTIA_M2PL +#define M3PL_T GTIA_M3PL +#endif /* NEW_CYCLE_EXACT */ + +static UBYTE *hposp_ptr[4]; +static UBYTE *hposm_ptr[4]; +static ULONG hposp_mask[4]; + +static ULONG grafp_lookup[4][256]; +static ULONG *grafp_ptr[4]; +static int global_sizem[4]; + +static const int PM_Width[4] = {1, 2, 1, 4}; + +/* Meaning of bits in GTIA_pm_scanline: +bit 0 - Player 0 +bit 1 - Player 1 +bit 2 - Player 2 +bit 3 - Player 3 +bit 4 - Missile 0 +bit 5 - Missile 1 +bit 6 - Missile 2 +bit 7 - Missile 3 +*/ + +UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +int GTIA_pm_dirty = TRUE; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) + +/* Colours ----------------------------------------------------------------- */ + +#ifdef USE_COLOUR_TRANSLATION_TABLE +UWORD colour_translation_table[256]; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +static void setup_gtia9_11(void) { + int i; +#ifdef USE_COLOUR_TRANSLATION_TABLE + UWORD temp; + temp = colour_translation_table[GTIA_COLBK & 0xf0]; + ANTIC_lookup_gtia11[0] = ((ULONG) temp << 16) + temp; + for (i = 1; i < 16; i++) { + temp = colour_translation_table[GTIA_COLBK | i]; + ANTIC_lookup_gtia9[i] = ((ULONG) temp << 16) + temp; + temp = colour_translation_table[GTIA_COLBK | (i << 4)]; + ANTIC_lookup_gtia11[i] = ((ULONG) temp << 16) + temp; + } +#else + ULONG count9 = 0; + ULONG count11 = 0; + ANTIC_lookup_gtia11[0] = ANTIC_lookup_gtia9[0] & 0xf0f0f0f0; + for (i = 1; i < 16; i++) { + ANTIC_lookup_gtia9[i] = ANTIC_lookup_gtia9[0] | (count9 += 0x01010101); + ANTIC_lookup_gtia11[i] = ANTIC_lookup_gtia9[0] | (count11 += 0x10101010); + } +#endif +} + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int GTIA_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + int i; + for (i = 0; i < 256; i++) { + int tmp = i + 0x100; + ULONG grafp1 = 0; + ULONG grafp2 = 0; + ULONG grafp4 = 0; + do { + grafp1 <<= 1; + grafp2 <<= 2; + grafp4 <<= 4; + if (tmp & 1) { + grafp1++; + grafp2 += 3; + grafp4 += 15; + } + tmp >>= 1; + } while (tmp != 1); + grafp_lookup[2][i] = grafp_lookup[0][i] = grafp1; + grafp_lookup[1][i] = grafp2; + grafp_lookup[3][i] = grafp4; + } + memset(ANTIC_cl, GTIA_COLOUR_BLACK, sizeof(ANTIC_cl)); + for (i = 0; i < 32; i++) + GTIA_PutByte((UWORD) i, 0); +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +#ifdef NEW_CYCLE_EXACT + +/* generate updated PxPL and MxPL for part of a scanline */ +/* slow, but should be called rarely */ +static void generate_partial_pmpl_colls(int l, int r) +{ + int i; + if (r < 0 || l >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) + return; + if (r >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) { + r = (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0]); + } + if (l < 0) + l = 0; + + for (i = l; i <= r; i++) { + UBYTE p = GTIA_pm_scanline[i]; +/* It is possible that some bits are set in PxPL/MxPL here, which would + * not otherwise be set ever in GTIA_NewPmScanline. This is because the + * player collisions are always generated in order in GTIA_NewPmScanline. + * However this does not cause any problem because we never use those bits + * of PxPL/MxPL in the collision reading code. + */ + GTIA_P1PL |= (p & (1 << 1)) ? p : 0; + GTIA_P2PL |= (p & (1 << 2)) ? p : 0; + GTIA_P3PL |= (p & (1 << 3)) ? p : 0; + GTIA_M0PL |= (p & (0x10 << 0)) ? p : 0; + GTIA_M1PL |= (p & (0x10 << 1)) ? p : 0; + GTIA_M2PL |= (p & (0x10 << 2)) ? p : 0; + GTIA_M3PL |= (p & (0x10 << 3)) ? p : 0; + } + +} + +/* update pm->pl collisions for a partial scanline */ +static void update_partial_pmpl_colls(void) +{ + int l = collision_curpos; + int r = ANTIC_XPOS * 2 - 37; + generate_partial_pmpl_colls(l, r); + collision_curpos = r; +} + +/* update pm-> pl collisions at the end of a scanline */ +void GTIA_UpdatePmplColls(void) +{ + if (hitclr_pos != 0){ + generate_partial_pmpl_colls(hitclr_pos, + sizeof(GTIA_pm_scanline) / sizeof(GTIA_pm_scanline[0]) - 1); +/* If hitclr was written to, then only part of GTIA_pm_scanline should be used + * for collisions */ + + } + else { +/* otherwise the whole of pm_scaline can be used for collisions. This will + * update the collision registers based on the generated collisions for the + * current line */ + GTIA_P1PL |= P1PL_T; + GTIA_P2PL |= P2PL_T; + GTIA_P3PL |= P3PL_T; + GTIA_M0PL |= M0PL_T; + GTIA_M1PL |= M1PL_T; + GTIA_M2PL |= M2PL_T; + GTIA_M3PL |= M3PL_T; + } + collision_curpos = 0; + hitclr_pos = 0; +} + +#else +#define update_partial_pmpl_colls() +#endif /* NEW_CYCLE_EXACT */ + +/* Prepare PMG scanline ---------------------------------------------------- */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +void GTIA_NewPmScanline(void) +{ +#ifdef NEW_CYCLE_EXACT +/* reset temporary pm->pl collisions */ + P1PL_T = P2PL_T = P3PL_T = 0; + M0PL_T = M1PL_T = M2PL_T = M3PL_T = 0; +#endif /* NEW_CYCLE_EXACT */ +/* Clear if necessary */ + if (GTIA_pm_dirty) { + memset(GTIA_pm_scanline, 0, ATARI_WIDTH / 2); + GTIA_pm_dirty = FALSE; + } + +/* Draw Players */ + +#define DO_PLAYER(n) if (GTIA_GRAFP##n) { \ + ULONG grafp = grafp_ptr[n][GTIA_GRAFP##n] & hposp_mask[n]; \ + if (grafp) { \ + UBYTE *ptr = hposp_ptr[n]; \ + GTIA_pm_dirty = TRUE; \ + do { \ + if (grafp & 1) \ + P##n##PL_T |= *ptr |= 1 << n; \ + ptr++; \ + grafp >>= 1; \ + } while (grafp); \ + } \ +} + + /* optimized DO_PLAYER(0): GTIA_pm_scanline is clear and P0PL is unused */ + if (GTIA_GRAFP0) { + ULONG grafp = grafp_ptr[0][GTIA_GRAFP0] & hposp_mask[0]; + if (grafp) { + UBYTE *ptr = hposp_ptr[0]; + GTIA_pm_dirty = TRUE; + do { + if (grafp & 1) + *ptr = 1; + ptr++; + grafp >>= 1; + } while (grafp); + } + } + + DO_PLAYER(1) + DO_PLAYER(2) + DO_PLAYER(3) + +/* Draw Missiles */ + +#define DO_MISSILE(n,p,m,r,l) if (GTIA_GRAFM & m) { \ + int j = global_sizem[n]; \ + UBYTE *ptr = hposm_ptr[n]; \ + if (GTIA_GRAFM & r) { \ + if (GTIA_GRAFM & l) \ + j <<= 1; \ + } \ + else \ + ptr += j; \ + if (ptr < GTIA_pm_scanline + 2) { \ + j += ptr - GTIA_pm_scanline - 2; \ + ptr = GTIA_pm_scanline + 2; \ + } \ + else if (ptr + j > GTIA_pm_scanline + ATARI_WIDTH / 2 - 2) \ + j = GTIA_pm_scanline + ATARI_WIDTH / 2 - 2 - ptr; \ + if (j > 0) \ + do \ + M##n##PL_T |= *ptr++ |= p; \ + while (--j); \ +} + + if (GTIA_GRAFM) { + GTIA_pm_dirty = TRUE; + DO_MISSILE(3, 0x80, 0xc0, 0x80, 0x40) + DO_MISSILE(2, 0x40, 0x30, 0x20, 0x10) + DO_MISSILE(1, 0x20, 0x0c, 0x08, 0x04) + DO_MISSILE(0, 0x10, 0x03, 0x02, 0x01) + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* GTIA registers ---------------------------------------------------------- */ + +void GTIA_Frame(void) +{ +#ifdef BASIC + consol = 0xf; +#else + consol = INPUT_key_consol | 0x08; +#endif + + if (GTIA_GRACTL & 4) { + GTIA_TRIG_latch[0] &= GTIA_TRIG[0]; + GTIA_TRIG_latch[1] &= GTIA_TRIG[1]; + GTIA_TRIG_latch[2] &= GTIA_TRIG[2]; + GTIA_TRIG_latch[3] &= GTIA_TRIG[3]; + } +} + +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0x1f) { + case GTIA_OFFSET_M0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x10) >> 4) + + ((PF1PM & 0x10) >> 3) + + ((PF2PM & 0x10) >> 2) + + ((PF3PM & 0x10) >> 1)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x20) >> 5) + + ((PF1PM & 0x20) >> 4) + + ((PF2PM & 0x20) >> 3) + + ((PF3PM & 0x20) >> 2)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x40) >> 6) + + ((PF1PM & 0x40) >> 5) + + ((PF2PM & 0x40) >> 4) + + ((PF3PM & 0x40) >> 3)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x80) >> 7) + + ((PF1PM & 0x80) >> 6) + + ((PF2PM & 0x80) >> 5) + + ((PF3PM & 0x80) >> 4)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_P0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return ((PF0PM & 0x01) + + ((PF1PM & 0x01) << 1) + + ((PF2PM & 0x01) << 2) + + ((PF3PM & 0x01) << 3)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x02) >> 1) + + (PF1PM & 0x02) + + ((PF2PM & 0x02) << 1) + + ((PF3PM & 0x02) << 2)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x04) >> 2) + + ((PF1PM & 0x04) >> 1) + + (PF2PM & 0x04) + + ((PF3PM & 0x04) << 1)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x08) >> 3) + + ((PF1PM & 0x08) >> 2) + + ((PF2PM & 0x08) >> 1) + + (PF3PM & 0x08)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_M0PL: + update_partial_pmpl_colls(); + return GTIA_M0PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M1PL: + update_partial_pmpl_colls(); + return GTIA_M1PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M2PL: + update_partial_pmpl_colls(); + return GTIA_M2PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M3PL: + update_partial_pmpl_colls(); + return GTIA_M3PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_P0PL: + update_partial_pmpl_colls(); + return (((GTIA_P1PL & 0x01) << 1) /* mask in player 1 */ + + ((GTIA_P2PL & 0x01) << 2) /* mask in player 2 */ + + ((GTIA_P3PL & 0x01) << 3)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P1PL: + update_partial_pmpl_colls(); + return ((GTIA_P1PL & 0x01) /* mask in player 0 */ + + ((GTIA_P2PL & 0x02) << 1) /* mask in player 2 */ + + ((GTIA_P3PL & 0x02) << 2)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P2PL: + update_partial_pmpl_colls(); + return ((GTIA_P2PL & 0x03) /* mask in player 0 and 1 */ + + ((GTIA_P3PL & 0x04) << 1)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P3PL: + update_partial_pmpl_colls(); + return (GTIA_P3PL & 0x07) /* mask in player 0,1, and 2 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_TRIG0: + return GTIA_TRIG[0] & GTIA_TRIG_latch[0]; + case GTIA_OFFSET_TRIG1: + return GTIA_TRIG[1] & GTIA_TRIG_latch[1]; + case GTIA_OFFSET_TRIG2: + return GTIA_TRIG[2] & GTIA_TRIG_latch[2]; + case GTIA_OFFSET_TRIG3: + return GTIA_TRIG[3] & GTIA_TRIG_latch[3]; + case GTIA_OFFSET_PAL: + return (tv_mode == TV_PAL) ? 0x01 : 0x0f; + case GTIA_OFFSET_CONSOL: + { + UBYTE byte = consol & consol_mask; +#if SKIP + if (!no_side_effects && GTIA_consol_override > 0) { + /* Check if we're called from outside OS. This avoids sending + console keystrokes to diagnostic cartridges. */ + if (CPU_regPC < 0xc000) + /* Not from OS. Disable console override. */ + GTIA_consol_override = 0; + else { + --GTIA_consol_override; + if (Atari800_builtin_basic && Atari800_disable_basic && !BINLOAD_loading_basic) + /* Only for XL/XE - hold Option during reboot. */ + byte &= ~INPUT_CONSOL_OPTION; + if (CASSETTE_hold_start && Atari800_machine_type != Atari800_MACHINE_5200) { + /* Only for the computers - hold Start during reboot. */ + byte &= ~INPUT_CONSOL_START; + if (GTIA_consol_override == 0) { + /* press Space after Start to start cassette boot. */ + CASSETTE_press_space = 1; + CASSETTE_hold_start = CASSETTE_hold_start_on_reboot; + } + } + } + } +#endif + return byte; + } + default: + break; + } + + return 0xf; +} + +void GTIA_PutByte(UWORD addr, UBYTE byte) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + UWORD cword; + UWORD cword2; + +#ifdef NEW_CYCLE_EXACT + int x; /* the cycle-exact update position in GTIA_pm_scanline */ + if (ANTIC_DRAWING_SCREEN) { + if ((addr & 0x1f) != GTIA_PRIOR) { + ANTIC_UpdateScanline(); + } else { + ANTIC_UpdateScanlinePrior(byte); + } + } +#define UPDATE_PM_CYCLE_EXACT if(ANTIC_DRAWING_SCREEN) GTIA_NewPmScanline(); +#else +#define UPDATE_PM_CYCLE_EXACT +#endif + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + switch (addr & 0x1f) { + case GTIA_OFFSET_CONSOL: + GTIA_speaker = !(byte & 0x08); +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(1); +#endif + consol_mask = (~byte) & 0x0f; + break; + +#if defined(BASIC) || defined(CURSES_BASIC) + + /* We use these for Antic modes 6, 7 on Curses */ + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte; + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte; + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte; + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte; + break; + +#else + +#ifdef USE_COLOUR_TRANSLATION_TABLE + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + ANTIC_cl[C_BAK] = cword = colour_translation_table[byte]; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + ANTIC_cl[C_PF0] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + ANTIC_cl[C_PF1] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + } + { + UBYTE byte2 = (GTIA_COLPF2 & 0xf0) + (byte & 0xf); + ANTIC_cl[C_HI2] = cword = colour_translation_table[byte2]; + ANTIC_cl[C_HI3] = colour_translation_table[(GTIA_COLPF3 & 0xf0) | (byte & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword; + else { + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + ANTIC_cl[C_PF2] = cword = GTIA_colour_translation_table[byte]; + { + UBYTE byte2 = (byte & 0xf0) + (GTIA_COLPF1 & 0xf); + ANTIC_cl[C_HI2] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword2; + } + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + ANTIC_cl[C_PF3] = cword = colour_translation_table[byte]; + ANTIC_cl[C_HI3] = cword2 = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM1; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM0; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + ANTIC_cl[C_PM2] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM3; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[((byte | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[((byte2 | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + ANTIC_cl[C_PM3] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM2; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; +#else /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_BAK] = cword; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF0] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF0 | C_PM01] = (ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF1] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF1 | C_PM01] = (ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + } + ((UBYTE *)ANTIC_hires_lookup_l)[0x80] = ((UBYTE *)ANTIC_hires_lookup_l)[0x41] = (UBYTE) + (ANTIC_hires_lookup_l[0x60] = cword & 0xf0f); + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF2] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + else + ANTIC_cl[C_PF2 | C_PM23] = (ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]) | (ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]); + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF3] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM2] | ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM1]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM0]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM2] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM3]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM3] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_GRAFM: + GTIA_GRAFM = byte; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_GRAFP(n) x = ANTIC_XPOS * 2 - 3;\ + if (GTIA_HPOSP##n >= x) {\ + /* hpos right of x */\ + /* redraw */ \ + UPDATE_PM_CYCLE_EXACT\ + } +#else +#define CYCLE_EXACT_GRAFP(n) +#endif /* NEW_CYCLE_EXACT */ + +#define DO_GRAFP(n) case GTIA_OFFSET_GRAFP##n:\ + GTIA_GRAFP##n = byte;\ + CYCLE_EXACT_GRAFP(n);\ + break; + + DO_GRAFP(0) + DO_GRAFP(1) + DO_GRAFP(2) + DO_GRAFP(3) + + case GTIA_OFFSET_HITCLR: + GTIA_M0PL = GTIA_M1PL = GTIA_M2PL = GTIA_M3PL = 0; + GTIA_P0PL = GTIA_P1PL = GTIA_P2PL = GTIA_P3PL = 0; + PF0PM = PF1PM = PF2PM = PF3PM = 0; +#ifdef NEW_CYCLE_EXACT + hitclr_pos = ANTIC_XPOS * 2 - 37; + collision_curpos = hitclr_pos; +#endif + break; +/* TODO: cycle-exact missile HPOS, GRAF, SIZE */ +/* this is only an approximation */ + case GTIA_OFFSET_HPOSM0: + GTIA_HPOSM0 = byte; + hposm_ptr[0] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM1: + GTIA_HPOSM1 = byte; + hposm_ptr[1] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM2: + GTIA_HPOSM2 = byte; + hposm_ptr[2] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM3: + GTIA_HPOSM3 = byte; + hposm_ptr[3] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_HPOSP(n) x = ANTIC_XPOS * 2 - 1;\ + if (GTIA_HPOSP##n < x && byte < x) {\ + /* case 1: both left of x */\ + /* do nothing */\ + }\ + else if (GTIA_HPOSP##n >= x && byte >= x ) {\ + /* case 2: both right of x */\ + /* redraw, clearing first */\ + UPDATE_PM_CYCLE_EXACT\ + }\ + else if (GTIA_HPOSP##n = x) {\ + /* case 3: new value is right, old value is left */\ + /* redraw without clearing first */\ + /* note: a hack, we can get away with it unless another change occurs */\ + /* before the original copy that wasn't erased due to changing */\ + /* GTIA_pm_dirty is drawn */\ + GTIA_pm_dirty = FALSE;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_pm_dirty = TRUE; /* can't trust that it was reset correctly */\ + }\ + else {\ + /* case 4: new value is left, old value is right */\ + /* remove old player and don't draw the new one */\ + UBYTE save_graf = GTIA_GRAFP##n;\ + GTIA_GRAFP##n = 0;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_GRAFP##n = save_graf;\ + } +#else +#define CYCLE_EXACT_HPOSP(n) +#endif /* NEW_CYCLE_EXACT */ +#define DO_HPOSP(n) case GTIA_OFFSET_HPOSP##n: \ + hposp_ptr[n] = GTIA_pm_scanline + byte - 0x20; \ + if (byte >= 0x22) { \ + if (byte > 0xbe) { \ + if (byte >= 0xde) \ + hposp_mask[n] = 0; \ + else \ + hposp_mask[n] = 0xffffffff >> (byte - 0xbe); \ + } \ + else \ + hposp_mask[n] = 0xffffffff; \ + } \ + else if (byte > 2) \ + hposp_mask[n] = 0xffffffff << (0x22 - byte); \ + else \ + hposp_mask[n] = 0; \ + CYCLE_EXACT_HPOSP(n)\ + GTIA_HPOSP##n = byte; \ + break; + + DO_HPOSP(0) + DO_HPOSP(1) + DO_HPOSP(2) + DO_HPOSP(3) + +/* TODO: cycle-exact size changes */ +/* this is only an approximation */ + case GTIA_OFFSET_SIZEM: + GTIA_SIZEM = byte; + global_sizem[0] = PM_Width[byte & 0x03]; + global_sizem[1] = PM_Width[(byte & 0x0c) >> 2]; + global_sizem[2] = PM_Width[(byte & 0x30) >> 4]; + global_sizem[3] = PM_Width[(byte & 0xc0) >> 6]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP0: + GTIA_SIZEP0 = byte; + grafp_ptr[0] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP1: + GTIA_SIZEP1 = byte; + grafp_ptr[1] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP2: + GTIA_SIZEP2 = byte; + grafp_ptr[2] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP3: + GTIA_SIZEP3 = byte; + grafp_ptr[3] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_PRIOR: + ANTIC_SetPrior(byte); + GTIA_PRIOR = byte; + if (byte & 0x40) + setup_gtia9_11(); + break; + case GTIA_OFFSET_VDELAY: + GTIA_VDELAY = byte; + break; + case GTIA_OFFSET_GRACTL: + GTIA_GRACTL = byte; + ANTIC_missile_gra_enabled = (byte & 0x01); + ANTIC_player_gra_enabled = (byte & 0x02); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + if ((byte & 4) == 0) + GTIA_TRIG_latch[0] = GTIA_TRIG_latch[1] = GTIA_TRIG_latch[2] = GTIA_TRIG_latch[3] = 1; + break; + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void GTIA_StateSave(void) +{ + int next_console_value = 7; + + StateSav_SaveUBYTE(>IA_HPOSP0, 1); + StateSav_SaveUBYTE(>IA_HPOSP1, 1); + StateSav_SaveUBYTE(>IA_HPOSP2, 1); + StateSav_SaveUBYTE(>IA_HPOSP3, 1); + StateSav_SaveUBYTE(>IA_HPOSM0, 1); + StateSav_SaveUBYTE(>IA_HPOSM1, 1); + StateSav_SaveUBYTE(>IA_HPOSM2, 1); + StateSav_SaveUBYTE(>IA_HPOSM3, 1); + StateSav_SaveUBYTE(&PF0PM, 1); + StateSav_SaveUBYTE(&PF1PM, 1); + StateSav_SaveUBYTE(&PF2PM, 1); + StateSav_SaveUBYTE(&PF3PM, 1); + StateSav_SaveUBYTE(>IA_M0PL, 1); + StateSav_SaveUBYTE(>IA_M1PL, 1); + StateSav_SaveUBYTE(>IA_M2PL, 1); + StateSav_SaveUBYTE(>IA_M3PL, 1); + StateSav_SaveUBYTE(>IA_P0PL, 1); + StateSav_SaveUBYTE(>IA_P1PL, 1); + StateSav_SaveUBYTE(>IA_P2PL, 1); + StateSav_SaveUBYTE(>IA_P3PL, 1); + StateSav_SaveUBYTE(>IA_SIZEP0, 1); + StateSav_SaveUBYTE(>IA_SIZEP1, 1); + StateSav_SaveUBYTE(>IA_SIZEP2, 1); + StateSav_SaveUBYTE(>IA_SIZEP3, 1); + StateSav_SaveUBYTE(>IA_SIZEM, 1); + StateSav_SaveUBYTE(>IA_GRAFP0, 1); + StateSav_SaveUBYTE(>IA_GRAFP1, 1); + StateSav_SaveUBYTE(>IA_GRAFP2, 1); + StateSav_SaveUBYTE(>IA_GRAFP3, 1); + StateSav_SaveUBYTE(>IA_GRAFM, 1); + StateSav_SaveUBYTE(>IA_COLPM0, 1); + StateSav_SaveUBYTE(>IA_COLPM1, 1); + StateSav_SaveUBYTE(>IA_COLPM2, 1); + StateSav_SaveUBYTE(>IA_COLPM3, 1); + StateSav_SaveUBYTE(>IA_COLPF0, 1); + StateSav_SaveUBYTE(>IA_COLPF1, 1); + StateSav_SaveUBYTE(>IA_COLPF2, 1); + StateSav_SaveUBYTE(>IA_COLPF3, 1); + StateSav_SaveUBYTE(>IA_COLBK, 1); + StateSav_SaveUBYTE(>IA_PRIOR, 1); + StateSav_SaveUBYTE(>IA_VDELAY, 1); + StateSav_SaveUBYTE(>IA_GRACTL, 1); + + StateSav_SaveUBYTE(&consol_mask, 1); + StateSav_SaveINT(>IA_speaker, 1); + StateSav_SaveINT(&next_console_value, 1); + StateSav_SaveUBYTE(GTIA_TRIG_latch, 4); +} + +void GTIA_StateRead(UBYTE version) +{ + int next_console_value; /* ignored */ + + StateSav_ReadUBYTE(>IA_HPOSP0, 1); + StateSav_ReadUBYTE(>IA_HPOSP1, 1); + StateSav_ReadUBYTE(>IA_HPOSP2, 1); + StateSav_ReadUBYTE(>IA_HPOSP3, 1); + StateSav_ReadUBYTE(>IA_HPOSM0, 1); + StateSav_ReadUBYTE(>IA_HPOSM1, 1); + StateSav_ReadUBYTE(>IA_HPOSM2, 1); + StateSav_ReadUBYTE(>IA_HPOSM3, 1); + StateSav_ReadUBYTE(&PF0PM, 1); + StateSav_ReadUBYTE(&PF1PM, 1); + StateSav_ReadUBYTE(&PF2PM, 1); + StateSav_ReadUBYTE(&PF3PM, 1); + StateSav_ReadUBYTE(>IA_M0PL, 1); + StateSav_ReadUBYTE(>IA_M1PL, 1); + StateSav_ReadUBYTE(>IA_M2PL, 1); + StateSav_ReadUBYTE(>IA_M3PL, 1); + StateSav_ReadUBYTE(>IA_P0PL, 1); + StateSav_ReadUBYTE(>IA_P1PL, 1); + StateSav_ReadUBYTE(>IA_P2PL, 1); + StateSav_ReadUBYTE(>IA_P3PL, 1); + StateSav_ReadUBYTE(>IA_SIZEP0, 1); + StateSav_ReadUBYTE(>IA_SIZEP1, 1); + StateSav_ReadUBYTE(>IA_SIZEP2, 1); + StateSav_ReadUBYTE(>IA_SIZEP3, 1); + StateSav_ReadUBYTE(>IA_SIZEM, 1); + StateSav_ReadUBYTE(>IA_GRAFP0, 1); + StateSav_ReadUBYTE(>IA_GRAFP1, 1); + StateSav_ReadUBYTE(>IA_GRAFP2, 1); + StateSav_ReadUBYTE(>IA_GRAFP3, 1); + StateSav_ReadUBYTE(>IA_GRAFM, 1); + StateSav_ReadUBYTE(>IA_COLPM0, 1); + StateSav_ReadUBYTE(>IA_COLPM1, 1); + StateSav_ReadUBYTE(>IA_COLPM2, 1); + StateSav_ReadUBYTE(>IA_COLPM3, 1); + StateSav_ReadUBYTE(>IA_COLPF0, 1); + StateSav_ReadUBYTE(>IA_COLPF1, 1); + StateSav_ReadUBYTE(>IA_COLPF2, 1); + StateSav_ReadUBYTE(>IA_COLPF3, 1); + StateSav_ReadUBYTE(>IA_COLBK, 1); + StateSav_ReadUBYTE(>IA_PRIOR, 1); + StateSav_ReadUBYTE(>IA_VDELAY, 1); + StateSav_ReadUBYTE(>IA_GRACTL, 1); + + StateSav_ReadUBYTE(&consol_mask, 1); + StateSav_ReadINT(>IA_speaker, 1); + StateSav_ReadINT(&next_console_value, 1); + if (version >= 7) + StateSav_ReadUBYTE(GTIA_TRIG_latch, 4); + + GTIA_PutByte(GTIA_OFFSET_HPOSP0, GTIA_HPOSP0); + GTIA_PutByte(GTIA_OFFSET_HPOSP1, GTIA_HPOSP1); + GTIA_PutByte(GTIA_OFFSET_HPOSP2, GTIA_HPOSP2); + GTIA_PutByte(GTIA_OFFSET_HPOSP3, GTIA_HPOSP3); + GTIA_PutByte(GTIA_OFFSET_HPOSM0, GTIA_HPOSM0); + GTIA_PutByte(GTIA_OFFSET_HPOSM1, GTIA_HPOSM1); + GTIA_PutByte(GTIA_OFFSET_HPOSM2, GTIA_HPOSM2); + GTIA_PutByte(GTIA_OFFSET_HPOSM3, GTIA_HPOSM3); + GTIA_PutByte(GTIA_OFFSET_SIZEP0, GTIA_SIZEP0); + GTIA_PutByte(GTIA_OFFSET_SIZEP1, GTIA_SIZEP1); + GTIA_PutByte(GTIA_OFFSET_SIZEP2, GTIA_SIZEP2); + GTIA_PutByte(GTIA_OFFSET_SIZEP3, GTIA_SIZEP3); + GTIA_PutByte(GTIA_OFFSET_SIZEM, GTIA_SIZEM); + GTIA_PutByte(GTIA_OFFSET_GRAFP0, GTIA_GRAFP0); + GTIA_PutByte(GTIA_OFFSET_GRAFP1, GTIA_GRAFP1); + GTIA_PutByte(GTIA_OFFSET_GRAFP2, GTIA_GRAFP2); + GTIA_PutByte(GTIA_OFFSET_GRAFP3, GTIA_GRAFP3); + GTIA_PutByte(GTIA_OFFSET_GRAFM, GTIA_GRAFM); + GTIA_PutByte(GTIA_OFFSET_COLPM0, GTIA_COLPM0); + GTIA_PutByte(GTIA_OFFSET_COLPM1, GTIA_COLPM1); + GTIA_PutByte(GTIA_OFFSET_COLPM2, GTIA_COLPM2); + GTIA_PutByte(GTIA_OFFSET_COLPM3, GTIA_COLPM3); + GTIA_PutByte(GTIA_OFFSET_COLPF0, GTIA_COLPF0); + GTIA_PutByte(GTIA_OFFSET_COLPF1, GTIA_COLPF1); + GTIA_PutByte(GTIA_OFFSET_COLPF2, GTIA_COLPF2); + GTIA_PutByte(GTIA_OFFSET_COLPF3, GTIA_COLPF3); + GTIA_PutByte(GTIA_OFFSET_COLBK, GTIA_COLBK); + GTIA_PutByte(GTIA_OFFSET_PRIOR, GTIA_PRIOR); + GTIA_PutByte(GTIA_OFFSET_GRACTL, GTIA_GRACTL); +} + +#endif /* BASIC */ diff --git a/MCUME_esp32/esp800/main/gtia.h b/MCUME_esp32/esp800/main/gtia.h new file mode 100644 index 0000000..865c4ae --- /dev/null +++ b/MCUME_esp32/esp800/main/gtia.h @@ -0,0 +1,136 @@ +#ifndef GTIA_H_ +#define GTIA_H_ + + +#define GTIA_OFFSET_HPOSP0 0x00 +#define GTIA_OFFSET_M0PF 0x00 +#define GTIA_OFFSET_HPOSP1 0x01 +#define GTIA_OFFSET_M1PF 0x01 +#define GTIA_OFFSET_HPOSP2 0x02 +#define GTIA_OFFSET_M2PF 0x02 +#define GTIA_OFFSET_HPOSP3 0x03 +#define GTIA_OFFSET_M3PF 0x03 +#define GTIA_OFFSET_HPOSM0 0x04 +#define GTIA_OFFSET_P0PF 0x04 +#define GTIA_OFFSET_HPOSM1 0x05 +#define GTIA_OFFSET_P1PF 0x05 +#define GTIA_OFFSET_HPOSM2 0x06 +#define GTIA_OFFSET_P2PF 0x06 +#define GTIA_OFFSET_HPOSM3 0x07 +#define GTIA_OFFSET_P3PF 0x07 +#define GTIA_OFFSET_SIZEP0 0x08 +#define GTIA_OFFSET_M0PL 0x08 +#define GTIA_OFFSET_SIZEP1 0x09 +#define GTIA_OFFSET_M1PL 0x09 +#define GTIA_OFFSET_SIZEP2 0x0a +#define GTIA_OFFSET_M2PL 0x0a +#define GTIA_OFFSET_SIZEP3 0x0b +#define GTIA_OFFSET_M3PL 0x0b +#define GTIA_OFFSET_SIZEM 0x0c +#define GTIA_OFFSET_P0PL 0x0c +#define GTIA_OFFSET_GRAFP0 0x0d +#define GTIA_OFFSET_P1PL 0x0d +#define GTIA_OFFSET_GRAFP1 0x0e +#define GTIA_OFFSET_P2PL 0x0e +#define GTIA_OFFSET_GRAFP2 0x0f +#define GTIA_OFFSET_P3PL 0x0f +#define GTIA_OFFSET_GRAFP3 0x10 +#define GTIA_OFFSET_TRIG0 0x10 +#define GTIA_OFFSET_GRAFM 0x11 +#define GTIA_OFFSET_TRIG1 0x11 +#define GTIA_OFFSET_COLPM0 0x12 +#define GTIA_OFFSET_TRIG2 0x12 +#define GTIA_OFFSET_COLPM1 0x13 +#define GTIA_OFFSET_TRIG3 0x13 +#define GTIA_OFFSET_COLPM2 0x14 +#define GTIA_OFFSET_PAL 0x14 +#define GTIA_OFFSET_COLPM3 0x15 +#define GTIA_OFFSET_COLPF0 0x16 +#define GTIA_OFFSET_COLPF1 0x17 +#define GTIA_OFFSET_COLPF2 0x18 +#define GTIA_OFFSET_COLPF3 0x19 +#define GTIA_OFFSET_COLBK 0x1a +#define GTIA_OFFSET_PRIOR 0x1b +#define GTIA_OFFSET_VDELAY 0x1c +#define GTIA_OFFSET_GRACTL 0x1d +#define GTIA_OFFSET_HITCLR 0x1e +#define GTIA_OFFSET_CONSOL 0x1f + +extern UBYTE GTIA_GRAFM; +extern UBYTE GTIA_GRAFP0; +extern UBYTE GTIA_GRAFP1; +extern UBYTE GTIA_GRAFP2; +extern UBYTE GTIA_GRAFP3; +extern UBYTE GTIA_HPOSP0; +extern UBYTE GTIA_HPOSP1; +extern UBYTE GTIA_HPOSP2; +extern UBYTE GTIA_HPOSP3; +extern UBYTE GTIA_HPOSM0; +extern UBYTE GTIA_HPOSM1; +extern UBYTE GTIA_HPOSM2; +extern UBYTE GTIA_HPOSM3; +extern UBYTE GTIA_SIZEP0; +extern UBYTE GTIA_SIZEP1; +extern UBYTE GTIA_SIZEP2; +extern UBYTE GTIA_SIZEP3; +extern UBYTE GTIA_SIZEM; +extern UBYTE GTIA_COLPM0; +extern UBYTE GTIA_COLPM1; +extern UBYTE GTIA_COLPM2; +extern UBYTE GTIA_COLPM3; +extern UBYTE GTIA_COLPF0; +extern UBYTE GTIA_COLPF1; +extern UBYTE GTIA_COLPF2; +extern UBYTE GTIA_COLPF3; +extern UBYTE GTIA_COLBK; +extern UBYTE GTIA_GRACTL; +extern UBYTE GTIA_M0PL; +extern UBYTE GTIA_M1PL; +extern UBYTE GTIA_M2PL; +extern UBYTE GTIA_M3PL; +extern UBYTE GTIA_P0PL; +extern UBYTE GTIA_P1PL; +extern UBYTE GTIA_P2PL; +extern UBYTE GTIA_P3PL; +extern UBYTE GTIA_PRIOR; +extern UBYTE GTIA_VDELAY; + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +extern UWORD GTIA_colour_translation_table[256]; +#define GTIA_COLOUR_BLACK GTIA_colour_translation_table[0] +#define GTIA_COLOUR_TO_WORD(dest,src) dest = GTIA_colour_translation_table[src]; + +#else + +#define GTIA_COLOUR_BLACK 0 +#define GTIA_COLOUR_TO_WORD(dest,src) dest = (((UWORD) (src)) << 8) | (src); + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +extern UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +extern int GTIA_pm_dirty; + +extern UBYTE GTIA_collisions_mask_missile_playfield; +extern UBYTE GTIA_collisions_mask_player_playfield; +extern UBYTE GTIA_collisions_mask_missile_player; +extern UBYTE GTIA_collisions_mask_player_player; + +extern UBYTE GTIA_TRIG[4]; +extern UBYTE GTIA_TRIG_latch[4]; + +extern int GTIA_consol_override; +extern int GTIA_speaker; + +int GTIA_Initialise(void); +void GTIA_Frame(void); +void GTIA_NewPmScanline(void); +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects); +void GTIA_PutByte(UWORD addr, UBYTE byte); +void GTIA_StateSave(void); +void GTIA_StateRead(UBYTE version); + +#ifdef NEW_CYCLE_EXACT +void GTIA_UpdatePmplColls(void); +#endif +#endif /* GTIA_H_ */ diff --git a/MCUME_esp32/esp800/main/ili9341_t3dma.cpp b/MCUME_esp32/esp800/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/esp800/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/esp800/main/ili9341_t3dma.h b/MCUME_esp32/esp800/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/esp800/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/esp800/main/iopins.h b/MCUME_esp32/esp800/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/esp800/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/esp800/main/keyboard_osd.h b/MCUME_esp32/esp800/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/esp800/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/esp800/main/logo.h b/MCUME_esp32/esp800/main/logo.h new file mode 100644 index 0000000..ef6bde2 --- /dev/null +++ b/MCUME_esp32/esp800/main/logo.h @@ -0,0 +1,125 @@ +const uint16_t logo[] = { +0x0140,0x007c,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2965,0x2965,0x2985,0x2985,0x2985,0x2165,0x2144,0x2164,0x2965,0x2965,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x1924,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2144,0x2944,0x2944,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2144,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2944,0x2965,0x2965,0x2965,0x2944,0x2144,0x2144,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2944,0x2944,0x2944,0x2944,0x2144,0x2944,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x3185,0x31a6,0x3185,0x2985,0x2965,0x2965,0x2985,0x2985,0x3185, +0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x1903,0x1923,0x1103,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x08c1,0x08c2,0x08c2,0x08c1,0x08c2,0x10c2,0x08c2,0x08c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c1,0x08c2,0x08c1,0x08c2,0x08c1,0x08c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x08c2,0x08c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08a1,0x08a1,0x08c2,0x08c2,0x08c2,0x08c2,0x08c1,0x08c1,0x08c1,0x08c1,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x1102,0x1103,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x1102,0x1103,0x1103,0x1103,0x1923,0x1923,0x1103,0x10e2,0x1103,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x08c2,0x08c2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x1903,0x1902,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x08c1,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x18e3,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1902,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x18e2,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x1103,0x1102,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1103,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x08c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10c2,0x18e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e2,0x18e3,0x1903,0x1903,0x18e2,0x1903,0x1903,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x10e2,0x1923,0x1903,0x18e3,0x1903,0x18e2,0x10e2,0x18e2,0x1903,0x1903, +0x1103,0x10e2,0x10e2,0x1103,0x10c2,0x1103,0x1903,0x1103,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10e2,0x10c2,0x10e2,0x1103,0x10e2,0x10e2,0x1102,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x1102,0x1102,0x1102,0x1102,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x10e2,0x18e2,0x1903,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e3,0x10e2,0x10e2,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x1903,0x1103,0x1103,0x1103,0x1903,0x1903,0x1103,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x1903,0x1923,0x1923,0x1923,0x1903,0x1903,0x1923,0x1903,0x10e2,0x1102,0x10e2,0x10e2,0x08c2,0x10e2,0x1103,0x10c2,0x1103,0x1103,0x1903,0x1103,0x18e2,0x10e2,0x1903,0x1903,0x1903,0x1103,0x1903,0x1903,0x1903,0x1903,0x10e2,0x10c2,0x1103,0x1103,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x1103,0x1102,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x1903,0x1923,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e3,0x1903,0x1903,0x1903,0x1102,0x10e2,0x1103,0x1103,0x1903,0x18e3,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1103,0x1903,0x1903,0x10e3,0x10e3,0x18e3,0x1903,0x1103,0x1903,0x1102,0x1103,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x1903,0x1923,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x10e2,0x1903,0x1923,0x1923,0x1923,0x1923,0x1903,0x1903,0x1923,0x1923,0x1923,0x1903,0x1102,0x1903,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x1903,0x10e2,0x1903,0x1923,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10a2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x18e3,0x10c2,0x10c2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1923,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1923,0x1923,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x18e3,0x1903,0x1923,0x1903,0x1903,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x1923,0x1903,0x1903,0x10e3,0x10e2,0x10e2,0x10e2,0x10e3,0x1903,0x1103,0x10e2,0x2124,0x2144,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x1903,0x2123,0x10c2,0x10a1,0x08a1,0x00a1,0x00a1,0x00a1,0x00a0,0x0080,0x08a1,0x0881,0x1903,0x2144,0x1903,0x08c2,0x10c2,0x10c2,0x10e2,0x1103,0x10e2,0x1102,0x1903,0x1903,0x0060,0x0881,0x0881,0x0881,0x0060,0x0080,0x0880,0x0880,0x0060,0x1903,0x2144,0x1923,0x1903,0x1103,0x1103,0x10e2,0x10e2,0x10e2,0x10c2,0x1903,0x1903,0x10a2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x1903,0x2164,0x2124,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10c2,0x10c2,0x1903,0x1903,0x18e2,0x10c2,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10c2,0x10e2,0x2144,0x1923,0x1103,0x1103,0x10e2,0x10e2,0x10e2,0x08c2,0x10c2,0x1903,0x1903,0x0861,0x0860,0x0080,0x0060,0x0060,0x0060,0x0060,0x0060,0x0880,0x10a1,0x2144,0x2144,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x1923,0x2124,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10c2,0x10c2,0x08c1,0x10e2,0x10e2,0x1923,0x2144,0x1903,0x18e2,0x10e2,0x10c2,0x10e2,0x10c2,0x08a1,0x10e2,0x1923,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x2144,0x2144,0x1903,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x1903,0x2123,0x18e2,0x10a1,0x18e2,0x10e2,0x10c2,0x10c2,0x10c1,0x10a1,0x10a1,0x08a1,0x2123,0x2144,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1923,0x1923,0x10c2,0x0040,0x00a0,0x00a0,0x00a0,0x0080,0x00a0,0x00a0,0x0880,0x08a1,0x2123,0x2164,0x2124,0x1903,0x1903,0x1903,0x18e2,0x10c2,0x10e2,0x18e2,0x2124,0x2124,0x18e3,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x18e2,0x18e3,0x2123,0x2144,0x1923,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x2124,0x2123,0x18e3,0x1903,0x18e3,0x10c2,0x18e2,0x18e3,0x18e2,0x18e3,0x1903,0x2123,0x2144,0x2144,0x1903,0x1923,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x2124,0x2123,0x1903,0x10c2,0x18e2,0x18e2,0x10c2,0x10c2,0x18e2,0x18e3,0x18e3,0x2123,0x2965,0x2144,0x1903,0x1903,0x1903,0x18e3,0x10c2,0x10c2,0x18e2,0x2124,0x2103,0x1903,0x18e3,0x18e2,0x1903,0x18e2,0x18e2,0x18e2,0x1903,0x18e2,0x1903,0x2164,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x10e2,0x18e3,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2964,0x2124,0x1923,0x1923,0x1903,0x1903,0x1903, +0x1103,0x10e2,0x10c2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2124,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x0040,0x0000,0x0000,0x10c2,0x0080,0x10e2,0x1903,0x1923,0x1923,0x1923,0x1903,0x10c2,0x0000,0x0000,0x10e2,0x1923,0x08c2,0x08c2,0x1103,0x10e2,0x10e2,0x10c2,0x0000,0x0000,0x1903,0x18e2,0x1903,0x1903,0x1903,0x2123,0x1903,0x2144,0x2144,0x0000,0x0000,0x00a0,0x2164,0x1903,0x1923,0x10e2,0x10c2,0x10c2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2144,0x1903,0x18e2,0x1903,0x10e2,0x10c2,0x10e2,0x0000,0x0000,0x0000,0x0040,0x0040,0x0040,0x0880,0x0080,0x0040,0x0020,0x0080,0x0000,0x0000,0x0000,0x2144,0x1903,0x1903,0x10e2,0x08c2,0x08c1,0x18e2,0x0000,0x0000,0x08a1,0x1923,0x1903,0x2123,0x1923,0x1923,0x1923,0x1903,0x1903,0x0060,0x0000,0x0000,0x2164,0x1903,0x1102,0x10e2,0x10e2,0x10c2,0x1903,0x0000,0x0000,0x0000,0x0060,0x0060,0x0080,0x00a1,0x00a1,0x00a0,0x10c2,0x10e2,0x0000,0x0000,0x0000,0x2144,0x1903,0x1903,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2123,0x18e2,0x10c2,0x10e2,0x10a1,0x1903,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0040,0x0060,0x0020,0x0020,0x0060,0x0060,0x0000,0x0000,0x2144,0x1923,0x10c2,0x10e2,0x10c2,0x10c2,0x18e3,0x0020,0x0000,0x0020,0x2964,0x2144,0x2164,0x2164,0x2964,0x2164,0x2144,0x2144,0x2965,0x0000,0x0000,0x1903,0x2144,0x1903,0x1903,0x10e2,0x10c2,0x10e2,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1923,0x1903,0x1903,0x10c2,0x10c2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2144,0x1903,0x1903,0x10e2,0x10c2,0x18e3,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x10e2,0x2965,0x1903,0x1923,0x10e2,0x18e3,0x18e2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x0000,0x0000,0x0060,0x2965,0x1924,0x1903,0x1903,0x10e2,0x10e2,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x2164,0x1923,0x1923,0x1903,0x1903, +0x10e2,0x10e2,0x10c2,0x18e3,0x0000,0x31c6,0x8c71,0xad74,0xad95,0xad95,0xadb5,0xb5b5,0xb5b5,0xb5b5,0xad95,0xad95,0xadb5,0xad95,0x7bef,0x0000,0x2123,0x2144,0x10e2,0x10c2,0x10c2,0x0000,0x2144,0x8c70,0xad94,0xb5b5,0xb5d5,0xb5b6,0xb5b6,0xb5d6,0xbdd6,0xb5b6,0xad95,0xb5d6,0xb5d6,0x8c91,0x1924,0x00a0,0x1923,0x10e2,0x10e2,0x1903,0x0060,0x0000,0x7bef,0xad74,0xb5b5,0xb5b5,0xb5d6,0xbdd6,0xbdf6,0xbdd6,0xb5b6,0xb5d6,0xb5d6,0xbdf6,0x9d13,0x3a27,0x0040,0x2165,0x1903,0x10e2,0x10a2,0x0860,0x0000,0x634c,0xa533,0xad95,0xad95,0xad95,0xad95,0xb5b5,0xb5b5,0xb5b5,0xb595,0xad95,0xb5d6,0xa534,0x4269,0x0000,0x2985,0x1903,0x10e2,0x10c2,0x10c2,0x0000,0x5aeb,0x9cf2,0xad95,0xb5b5,0xb5b5,0xb5b6,0xb5b6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xa554,0x52ca,0x0000,0x2144,0x1903,0x10e2,0x10c2,0x10c2,0x0000,0x5b0b,0xa553,0xb5b5,0xb5d6,0xb595,0xb5b5,0xbdd5,0xbdb5,0xbdb5,0xb5d6,0xb5d6,0xb5b5,0xad95,0x634c,0x0000,0x2144,0x1103,0x10e2,0x08c2,0x18e2,0x0000,0x5b0b,0xa554,0xb5d6,0xb5d5,0xb5d5,0xb5d5,0xb5d5,0xb5d5,0xb5b5,0xadb5,0xad95,0xb5d6,0xad75,0x6b8d,0x0000,0x2144,0x1903,0x1903,0x10a1,0x18e2,0x0000,0x29a6,0x94d2,0xad95,0xad95,0xad95,0xb595,0xb5b5,0xb595,0xad95,0xad95,0xad95,0xb5b5,0xadb5,0x73ce,0x0000,0x1923,0x1923,0x10c2,0x08a1,0x18e3,0x0000,0x2185,0x94b1,0xad95,0xb5d6,0xb5b5,0xb5b6,0xb5d6,0xb5d5,0xb5b5,0xb5b5,0xb5b5,0xb5d5,0xb5d6,0x7c0f,0x0000,0x1903,0x1923,0x10e2,0x10c2,0x1903,0x0000,0x2985,0x94d2,0xb5d5,0xbdf6,0xbdf6,0xbdf6,0xbdd6,0xb5d6,0xbdd6,0xbdd6,0xb5d6,0xb5d6,0xb5d6,0x94b2,0x2123,0x08a0,0x2144,0x1903,0x10e2,0x10e2,0x0000,0x0000,0x8450,0xad95,0xb5b5,0xb5b5,0xb595,0xad95,0xb5b5,0xb5b5,0xad95,0xad95,0xb5b5,0xb5b5,0x8c91,0x2185,0x0080,0x2144,0x18e2,0x10c2,0x10c2,0x10a1,0x0000,0x73ce,0xad74,0xad95,0xad95,0xad95,0xb5b5,0xb5b5,0xb5b5,0xad95,0xad95,0xb5b5,0xb5b5,0x94b2,0x1123,0x10c1,0x2164,0x18e2,0x10e2,0x1903,0x10a1,0x0000,0x73ce,0xad74,0xb5d6,0xb5b5,0xb5b6,0xb5b6,0xb5b6,0xb5d6,0xb5b5,0xb595,0xad95,0xb5d6,0x9d13,0x3a07,0x0020,0x2164,0x1903,0x10e2,0x18e2,0x10a1,0x0000,0x73ae,0xad95,0xad95,0xad95,0xad95,0xad95,0xad95,0xb595,0xb5b5,0xb5b5,0xadb5,0xadb5,0x9d13,0x4269,0x0000,0x2164,0x1923,0x1903,0x10e2,0x1903,0x0000,0x5b0b,0xa534,0xa554,0xa534,0xa554,0xa534,0x9d33,0xa533,0xa534,0xa554,0xa554,0xa554,0x94d2,0x4227,0x0020,0x2965,0x1923,0x2144,0x1923, +0x10e3,0x10e2,0x10e2,0x0000,0x4249,0xb5b5,0xad53,0x8c6f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0x8c2e,0x94d1,0xc658,0x9d54,0x08e3,0x2144,0x1903,0x10e2,0x0000,0x0966,0xad53,0xcdd2,0xa4ae,0xa46d,0xac6e,0xac4d,0xac6d,0xa44e,0xac6e,0xa44d,0x9c2d,0xac6e,0xaccf,0xce57,0xb5f7,0x31c6,0x08c2,0x1923,0x10e2,0x0880,0x0084,0xa4b2,0xcdb3,0xb4ae,0xa44d,0xac6d,0xa48d,0xa48d,0xac6e,0xac8e,0xa46d,0xac4d,0xa46d,0xacaf,0xce15,0xce58,0x4aaa,0x10c0,0x2144,0x10e3,0x10a2,0x0000,0x8c2f,0xc592,0xb4cf,0xacae,0xa48e,0xac6d,0xac8e,0xac8e,0xac8e,0xac8e,0xac8e,0xac8f,0xac8f,0xcdf4,0xd678,0x634d,0x0080,0x1924,0x10e2,0x18e2,0x0000,0x7bce,0xcdb3,0xb4ef,0xac8e,0xac6e,0xac8e,0xa46d,0xacae,0xacae,0xac8d,0xacae,0xac8e,0xac6e,0xcdb4,0xd69a,0x6baf,0x0000,0x2144,0x10e2,0x1903,0x0000,0x73cf,0xce56,0xbd50,0xa44d,0xa46d,0xa40c,0xa40c,0xa44d,0xa44d,0xac4d,0xac6d,0xa46d,0x9c2d,0xc552,0xd699,0x7430,0x0000,0x2165,0x1903,0x1903,0x0000,0x73ce,0xd676,0xc591,0xac8e,0xb48e,0xac8e,0xac8d,0xac4c,0xa44d,0xac6e,0xa46e,0xa46e,0xa46e,0xb511,0xd678,0x84b2,0x0000,0x2124,0x10e2,0x10e2,0x0000,0x4a48,0xc5d4,0xcdb3,0xb4cf,0xb4af,0xb4af,0xb4af,0xacaf,0xac6e,0xb4ae,0xb4cf,0xb4cf,0xacae,0xb531,0xd698,0x9d13,0x0000,0x2144,0x10e3,0x18e2,0x0000,0x31e7,0xbdd5,0xcdf3,0xaccf,0xacae,0xac8e,0xac8e,0xb4ae,0xacae,0xa46d,0xb48e,0xac8e,0xa46e,0xb4f0,0xde98,0xa575,0x0061,0x2143,0x18e3,0x18c2,0x0000,0x29a6,0xce15,0xd614,0xac8e,0xa44d,0xa46d,0xac4d,0xa46d,0xacce,0xac4d,0xac4d,0xa44d,0x9c2d,0xacaf,0xde56,0xc618,0x19a7,0x18e1,0x1924,0x10e2,0x0020,0x00a2,0xbdb5,0xde56,0xb4f0,0xaccf,0xbccf,0xb4ae,0xbd10,0xb4ef,0xb4ae,0xacaf,0xb4ce,0xacae,0xacf0,0xce56,0xc5f6,0x31a7,0x10e3,0x1902,0x10e1,0x18e1,0x0000,0x9cd2,0xd635,0xbd10,0xacae,0xacaf,0xb4ae,0xb4cf,0xb4af,0xb48f,0xb4af,0xb4af,0xb4cf,0xb4cf,0xce16,0xbdd6,0x3a48,0x1101,0x2124,0x10e2,0x20c3,0x0000,0xa4f2,0xde96,0xbd30,0xaccf,0xacae,0xacae,0xacae,0xacae,0xb4ce,0xacae,0xac8e,0xac8e,0xa48e,0xce15,0xce58,0x52ec,0x0080,0x2144,0x18c3,0x18e3,0x0000,0x9cf3,0xe697,0xbd51,0xb4af,0xb48f,0xac8e,0xac8e,0xac8e,0xac8f,0xb48e,0xb48e,0xac8e,0xa48e,0xc594,0xce58,0x632d,0x0000,0x2144,0x1903,0x2124,0x0000,0x8450,0xd6b9,0xad53,0x8c4f,0x946f,0x948f,0x8c6f,0x8c6f,0x8c6f,0x8c6f,0x946f,0x946f,0x8c4f,0xb5b5,0xc678,0x634c,0x00a0,0x2985,0x2164,0x2144, +0x18e3,0x18e3,0x08a0,0x0000,0x9cf3,0x9d11,0x41c0,0x1800,0x0800,0x0800,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x2000,0x0000,0x4a88,0xc658,0x8470,0x0000,0x2164,0x18e2,0x0000,0x8c4f,0xcdb2,0x9b22,0x79c0,0x79e0,0x79c0,0x6920,0xa3e8,0xb44b,0x7120,0x71c0,0x79c0,0x81a0,0x7120,0x6a61,0xce37,0x9cf3,0x0000,0x1924,0x18e2,0x0000,0x73ad,0xcdb3,0x9ba7,0x79e0,0x7a20,0x7140,0xb48b,0xb4ab,0x8b23,0xd56f,0x8ae0,0x7180,0x8200,0x71a0,0x6160,0xbd94,0xad95,0x0082,0x2123,0x1923,0x0000,0x630b,0xc5b3,0x9bc9,0x81e0,0x7a00,0x79c0,0x81a0,0x8200,0x9341,0x9b40,0x8240,0x79c0,0x81e0,0x7180,0x5800,0xb573,0xbdf6,0x1144,0x1943,0x1923,0x0000,0x4228,0xbdb3,0xb46b,0x8200,0x79e0,0x81c0,0x7940,0x9387,0xc591,0xbcef,0x8a40,0x7980,0x7a20,0x71e0,0x5800,0xad11,0xc656,0x3a26,0x10e3,0x1923,0x0000,0x3208,0xcdf5,0xbcee,0x79c0,0x81e0,0x7160,0x9367,0xb4ac,0x8302,0x8b00,0x92c0,0x79a0,0x71c0,0x79e0,0x5800,0x9caf,0xce78,0x4a89,0x0060,0x2164,0x0000,0x31e7,0xd696,0xc54f,0x71a0,0x7a20,0x7a00,0x79a0,0x82a0,0xac8b,0x9bc7,0x7180,0x79a0,0x7980,0x71a0,0x5800,0x940e,0xceb8,0x634c,0x0000,0x2144,0x10e2,0x0000,0xb573,0xd5b2,0x8260,0x71e0,0x79c0,0x79e0,0x6960,0x9342,0xbc8a,0x7a60,0x71e0,0x79e0,0x7200,0x6100,0x838b,0xd698,0x73ae,0x0000,0x1944,0x1902,0x0000,0xa533,0xd5f4,0x92e0,0x79c0,0x79c0,0x7980,0x8a80,0xa3a5,0x9ba6,0x8b20,0x79e0,0x7a00,0x7a00,0x6000,0x7b29,0xd6b9,0x7c50,0x0000,0x2123,0x2103,0x0000,0xa533,0xe655,0x8ac0,0x79a0,0x8200,0x71c0,0x7100,0x9be9,0xac6a,0x7960,0x7a00,0x7200,0x7220,0x60e0,0x6a00,0xd698,0x9d33,0x0000,0x2164,0x1903,0x0000,0x9470,0xeeb6,0x9b45,0x81c0,0x81e0,0x79a0,0x7160,0x9b85,0xb46a,0x6980,0x7180,0x79a0,0x79a0,0x6900,0x69c0,0xce36,0xad74,0x0000,0x2123,0x1903,0x0000,0x7bce,0xde56,0xabe8,0x7980,0x79c0,0x71e0,0x81e0,0x7180,0x7980,0x79c0,0x79c0,0x79e0,0x7180,0x6900,0x61a0,0xcdf6,0xad55,0x0000,0x2124,0x2124,0x0000,0x6b8c,0xe6b6,0xac6b,0x7960,0x81a0,0x79a0,0x7940,0x7980,0x79c0,0x71c0,0x79c0,0x79c0,0x79e0,0x70c0,0x5860,0xc5d5,0xbdd6,0x0021,0x2144,0x2124,0x0000,0x634b,0xeeb8,0xb46b,0x6940,0x79c0,0x7160,0x71c0,0x79c0,0x81c0,0x7160,0x79a0,0x79c0,0x79a0,0x7160,0x5000,0xb553,0xbe17,0x1125,0x1903,0x2144,0x0000,0x52aa,0xd6da,0x94b1,0x0000,0x1800,0x1800,0x2000,0x1800,0x1800,0x1800,0x1800,0x2000,0x2000,0x1000,0x0000,0xa533,0xc658,0x31e6,0x2164,0x2985,0x2144, +0x10c2,0x1923,0x0000,0x4a8a,0xa554,0x6b29,0x49e2,0x4a04,0x49e3,0x41a2,0x41a2,0x41a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41c4,0x0000,0x8c70,0xb5b5,0x2144,0x1903,0x1060,0x00e5,0xb532,0xc4ac,0x9280,0x92e3,0x8aa2,0x8a83,0x79e0,0xb4cd,0xc570,0x7a00,0x8aa2,0x8282,0x8a62,0x8a84,0x6940,0x8bed,0xad94,0x31c6,0x08e2,0x18e2,0x0000,0x9cb0,0xc50e,0x92a0,0x92e3,0x8ac3,0x8240,0xb48d,0xc50e,0x8b66,0xcd6f,0x9366,0x7a40,0x8aa2,0x8aa4,0x71a0,0x7b07,0xc5f7,0x5aec,0x0000,0x2123,0x0000,0x9cb0,0xc52f,0x92a0,0x92c3,0x8aa2,0x8a83,0x8a40,0x9346,0xcdb1,0xcdb2,0x9b86,0x8260,0x8a82,0x8aa3,0x79e0,0x6aa6,0xbdf5,0x5b4c,0x0000,0x2144,0x0000,0x840e,0xcd71,0x9b20,0x8ac2,0x92c2,0x8aa3,0x8220,0xc531,0xde56,0xacad,0x9323,0x8a82,0x82a2,0x82a3,0x7a00,0x6200,0xc636,0x73ef,0x0000,0x2144,0x0000,0x73cf,0xd5f4,0x9b40,0x92e2,0x8aa3,0x8280,0xbcee,0xcdb1,0xb4ed,0xa408,0x82a1,0x8260,0x8aa2,0x8283,0x8262,0x5920,0xc616,0x8cb2,0x0000,0x2985,0x0000,0x7bee,0xe675,0x9b20,0x92e1,0x8ac3,0x8aa3,0x8a40,0xa40a,0xce55,0xc530,0x8a80,0x8262,0x8282,0x8262,0x7a84,0x4800,0xc5d4,0xa533,0x0000,0x2985,0x0000,0x4289,0xce15,0xabe9,0x8a80,0x92c3,0x8aa2,0x8aa3,0x7a60,0x9ba8,0xd5b1,0x8b47,0x8260,0x8a83,0x8283,0x82a4,0x5000,0xb553,0xb595,0x0000,0x2164,0x0000,0x31a8,0xd616,0xbcac,0x9280,0x92c3,0x8a82,0x8b04,0xb44a,0xb48c,0xacad,0xb48c,0x9b25,0x8282,0x8aa2,0x8a84,0x4800,0xad73,0xb5d5,0x0000,0x2123,0x0000,0x1944,0xce36,0xc4ee,0x8a60,0x92e4,0x8ac2,0x82c2,0x8281,0xc530,0xac8c,0x7a00,0x8ac3,0x82a2,0x82a2,0x82a4,0x5000,0x9caf,0xce78,0x1944,0x10e2,0x18c2,0x0000,0xce16,0xcd2f,0x8a40,0x92e4,0x92a2,0x8aa3,0x8281,0x8b25,0xcd4f,0x9388,0x7a40,0x8a83,0x8a82,0x8284,0x6000,0x940d,0xd6b8,0x4269,0x0000,0x2124,0x0000,0xb593,0xcd70,0x9280,0xac28,0xa3c7,0x9325,0x8aa3,0x9b88,0xa3c8,0x8b03,0x9b64,0x8ae3,0xa3c8,0x9b88,0x6140,0x8bac,0xce18,0x3a48,0x08c0,0x2164,0x0000,0xa533,0xd5d2,0x9b20,0xabe8,0x9346,0x9304,0xabe9,0x9b66,0x9b67,0x9ba7,0x9b66,0xa387,0x9345,0xa3c9,0x7a40,0x7b28,0xce57,0x52cb,0x0000,0x2924,0x0000,0xb532,0xddf3,0xa386,0xac08,0x9346,0xa3a9,0x8b46,0x9304,0x8aa3,0x9b88,0x9b67,0x9ba8,0x9bc7,0x9b67,0x8b04,0x6222,0xce99,0x73cf,0x0000,0x2965,0x0000,0x94d2,0xd697,0x4160,0x49e3,0x49e3,0x49c3,0x41a2,0x49c3,0x41a2,0x41a2,0x41a2,0x41c3,0x41a2,0x41a3,0x28e0,0x2901,0xc658,0x8470,0x0000,0x31a6,0x2123, +0x10e3,0x1903,0x0000,0x5b0c,0xa512,0x6b08,0x5245,0x49e4,0x41a2,0x4182,0x3961,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4181,0x1000,0x738d,0xa554,0x3a06,0x10e2,0x0000,0x1987,0xbd73,0xbc8b,0x92c0,0x8ae2,0x82c1,0x8281,0x8220,0x9c0a,0xac8d,0x8220,0x8280,0x8281,0x8261,0x7a61,0x69e0,0x732a,0xad73,0x4a88,0x00a2,0x18e2,0x0001,0xad10,0xc4ec,0x9ac0,0x92e2,0x8ac1,0x8a80,0x9346,0x8b46,0x82e2,0x9b87,0x8280,0x8280,0x8a80,0x8260,0x8220,0x6a41,0xb5b5,0x6b6d,0x0000,0x2123,0x0000,0xad11,0xc4ed,0x9aa0,0x92e2,0x82a1,0x82a2,0x8220,0x9c09,0xd676,0xd635,0x9345,0x8260,0x8281,0x7a61,0x8220,0x6a23,0xb594,0x6bce,0x0000,0x2164,0x0000,0x9491,0xcd70,0x9b00,0x8ae2,0x8ac1,0x8281,0x7a60,0x9367,0xd5f2,0xcdb1,0x8b25,0x8280,0x8280,0x8240,0x7a01,0x6180,0xbdd6,0x8cb2,0x0000,0x2144,0x0000,0x8430,0xd5d4,0x9b40,0x9303,0x8ac3,0x82a0,0x93a8,0xac8c,0xac8c,0xb48c,0xac4a,0x92e5,0x7a20,0x7a40,0x7a22,0x60e0,0xb595,0x9d33,0x0000,0x2964,0x0000,0x9491,0xde14,0xa2e0,0x9b03,0x8a81,0x8aa2,0x8220,0xa44b,0xd676,0xb551,0x9b87,0x82a2,0x7a60,0x7a40,0x7263,0x5060,0xb553,0xad54,0x0000,0x2985,0x0000,0x6b6d,0xce14,0xab85,0x9b01,0x8aa1,0x92a1,0x8a81,0x8260,0x9305,0xabe9,0x82a2,0x8a80,0x8a80,0x7a40,0x8262,0x60c0,0xa4b0,0xb5b5,0x0040,0x2123,0x0000,0x4a8a,0xde56,0xbc6a,0x92a0,0x92e3,0x8280,0x9b86,0xac8c,0xa449,0xa48a,0xa46a,0x9b44,0x8240,0x8240,0x8a62,0x60a0,0x9c8f,0xbe16,0x0040,0x1902,0x0000,0x4249,0xd676,0xb46b,0x8ac0,0x8b03,0x8ae2,0x7a60,0x8ac2,0xcd71,0x93ea,0x8200,0x8a81,0x8260,0x8261,0x8242,0x6940,0x8bcc,0xce78,0x3a28,0x0880,0x1080,0x00c3,0xd677,0xbcce,0x92c0,0x8b03,0x8aa1,0x8a80,0x8a60,0x7a60,0xc551,0xb42c,0x71c0,0x8281,0x7a60,0x7a62,0x6980,0x7b28,0xce57,0x5b2c,0x0000,0x2124,0x0000,0xc615,0xc52f,0xabe6,0xbced,0x9bc7,0xac8a,0x7aa0,0xc54e,0xacac,0x9388,0xcd6f,0x9c0a,0xbd0e,0xb4ae,0x7200,0x7ac9,0xce17,0x632c,0x0000,0x2143,0x0000,0xb595,0xd590,0xbc08,0xd5d1,0xcdb1,0xbd0e,0xb4ed,0xacad,0xbd10,0xac6c,0xac4c,0xcd50,0xa42a,0xa46c,0x8b26,0x6245,0xc637,0x6b6d,0x0000,0x2123,0x0000,0xc594,0xddb1,0xc4ed,0xbccc,0xc54f,0xbcef,0x9be9,0xa428,0x82e4,0xbd2e,0x9be8,0xa449,0xa46b,0xacad,0xa40a,0x5140,0xc637,0x8450,0x0000,0x2965,0x0000,0xa554,0xc5f4,0x3920,0x5204,0x49c1,0x41a1,0x41a1,0x41a1,0x41a1,0x4180,0x4181,0x41a1,0x4180,0x4180,0x3961,0x0000,0xb5d6,0x94f2,0x0000,0x31c6,0x2144, +0x10e3,0x1903,0x0000,0x5aec,0xa532,0x6b28,0x5265,0x4a23,0x41c2,0x39a1,0x39a1,0x39a1,0x3981,0x3981,0x3981,0x3981,0x3980,0x3981,0x0800,0x73ce,0x9d54,0x39e5,0x18e3,0x0000,0x21a8,0xbd73,0xbc8b,0x92c0,0x92e2,0x8ac1,0x8aa1,0x8240,0x9bc8,0xac4b,0x8240,0x8280,0x8281,0x8261,0x7a61,0x69c0,0x7b49,0xa552,0x52a9,0x00a1,0x18c1,0x0003,0xb532,0xc4ed,0x9ae0,0x9b03,0x92c1,0x9282,0x8280,0x82a0,0x8a60,0x8260,0x8280,0x82a0,0x82a1,0x7a61,0x7a20,0x6a62,0xadb4,0x636d,0x0000,0x2123,0x0000,0xad12,0xcced,0x92c0,0x9303,0x8aa0,0x92a2,0x8220,0xa42b,0xce14,0xcdb1,0x8ac0,0x8a80,0x8260,0x7262,0x7a20,0x7243,0xb574,0x6bae,0x0000,0x2144,0x0000,0x9cd1,0xcdb2,0xa322,0x9ae4,0x92c2,0x8aa2,0x8280,0xac4b,0xbd72,0xde55,0xac2a,0x7a00,0x8261,0x7a60,0x7220,0x69c0,0xbdd5,0x8492,0x0000,0x2164,0x0000,0x8450,0xddf4,0xa340,0x9b23,0x92c3,0x92c2,0x8240,0x8b02,0xac2a,0xbd30,0xcdb2,0xac2b,0x7200,0x7262,0x7242,0x6100,0xbdd5,0xa554,0x0000,0x29a5,0x0000,0x94b0,0xe634,0x9b00,0x8b04,0x92e2,0x8aa0,0x82c0,0xcd90,0xb4ef,0xde96,0xcd71,0x71c0,0x8282,0x8241,0x7a23,0x5900,0xb533,0x9d34,0x0000,0x2964,0x0000,0x636d,0xd5f5,0xaba6,0x9302,0x8b02,0x8aa1,0x8a81,0x8a80,0x8aa2,0x8260,0x8280,0x8281,0x8261,0x7a40,0x7a42,0x58a0,0x9c8f,0xadb5,0x00e2,0x2123,0x0000,0x52aa,0xde77,0xbc6b,0x9ae0,0x9b03,0x8aa0,0x9ba6,0xbccc,0xb44a,0xbd0e,0xac8c,0x82c1,0x8260,0x7262,0x8262,0x60c0,0x9c6f,0xbdd5,0x0904,0x18e1,0x0000,0x3a08,0xde55,0xbc8b,0x92c0,0x9324,0x92c2,0x8a80,0x8aa0,0xcd71,0x9c2c,0x81e0,0x8a82,0x8281,0x7a61,0x7a42,0x6940,0x93ec,0xc657,0x3a28,0x10a1,0x0860,0x00e4,0xd676,0xc4cd,0x9ac0,0x8b23,0x8ac1,0x8aa1,0x8a41,0x7a80,0xc552,0xa3cb,0x8200,0x8261,0x7a60,0x7a42,0x6160,0x8349,0xd677,0x5b2c,0x0000,0x2123,0x0000,0xcdf5,0xcd2f,0xabc5,0xc52d,0xa409,0xbcab,0xac09,0xbcee,0xa46c,0xa42a,0xc52e,0xac8c,0xa42b,0x9c0a,0x7220,0x72c8,0xc5f6,0x634c,0x0000,0x2923,0x0000,0xb595,0xd590,0xb429,0xcd4f,0xc52e,0xc52e,0xac4b,0xbccd,0xc52f,0xa46b,0xa42a,0xb48d,0x93c8,0x93a7,0x8a82,0x7225,0xc5f7,0x638d,0x0000,0x2122,0x0000,0xc5d6,0xddd1,0xc4ed,0xbd0e,0xc52f,0xc50f,0xa3e8,0xb4ad,0x9bc9,0xbcee,0x9ba8,0x9365,0x9b87,0x9c4c,0x93c9,0x59a0,0xc617,0x8450,0x0000,0x2965,0x0000,0xa554,0xbdf4,0x3940,0x5244,0x49e2,0x41e2,0x41c2,0x41a1,0x41a1,0x41a1,0x3981,0x39a2,0x3980,0x3980,0x3960,0x0000,0xb5b6,0x94d2,0x0000,0x29a5,0x2164, +0x1103,0x1903,0x0000,0x5b0c,0xa553,0x6b08,0x5244,0x5244,0x3980,0x3960,0x3980,0x3120,0x3981,0x3160,0x3140,0x3160,0x3980,0x3961,0x0000,0x73ce,0xa554,0x39e5,0x10e2,0x0000,0x21e8,0xbd73,0xb44a,0x92a0,0x8ae0,0x8a80,0x8a60,0x7a20,0x9b67,0xa3c8,0x7a20,0x8260,0x8240,0x8240,0x7a41,0x6960,0x7b4b,0xad94,0x52a9,0x0080,0x10c1,0x0003,0xb552,0xb4cc,0x92c0,0x92c2,0x8aa1,0x8a80,0x8a80,0x8a80,0x8a60,0x8260,0x8a60,0x8260,0x8240,0x7a40,0x71e0,0x6a22,0xb5b4,0x6b6c,0x0020,0x2124,0x0000,0xad12,0xc4ad,0x9aa0,0x92c2,0x8a80,0x8a80,0x8240,0x9325,0xa3c9,0x9b66,0x8260,0x8260,0x8240,0x7a20,0x79e0,0x6a02,0xad54,0x6baf,0x0060,0x2143,0x0000,0x9cb1,0xcd71,0xa300,0x9ae3,0x8a80,0x8a81,0x8240,0x9bca,0xd5b3,0xbcce,0x8281,0x8241,0x8220,0x7a20,0x71c0,0x61a0,0xbe16,0x8491,0x0000,0x2965,0x0000,0x8471,0xd5d4,0x92c0,0x92e3,0x92c1,0x8a80,0x8260,0xa385,0x8b24,0x9bea,0xb50f,0x8b27,0x79e0,0x7a20,0x6a02,0x50a0,0xbdf6,0xa554,0x0000,0x31a5,0x0000,0x9490,0xde13,0x92a0,0x9302,0x92c0,0x8aa0,0x7260,0xb48d,0xc571,0xbd91,0xb4ac,0x8220,0x7a20,0x7a00,0x7202,0x5840,0xb553,0xa554,0x0000,0x2964,0x0000,0x6b6d,0xd5f4,0xab66,0xa2c3,0x92c2,0x8aa0,0x8a81,0x8260,0x8280,0x8261,0x8260,0x8261,0x7a41,0x7a60,0x7a22,0x5800,0xa48f,0xbdd5,0x00a3,0x2144,0x0000,0x52cb,0xde76,0xb449,0x9aa0,0x9ae3,0x8ac1,0x82a1,0xabe8,0xb44b,0xac4b,0x9ba8,0x7a40,0x8260,0x7a40,0x7a41,0x5800,0x9c6f,0xb5d5,0x0103,0x1902,0x0000,0x4228,0xd655,0xb46b,0x9280,0x92e3,0x92a0,0x92a1,0x8200,0xb46c,0xbccd,0x6a20,0x8260,0x8260,0x7220,0x7a20,0x60c0,0x8bcb,0xce99,0x4248,0x0080,0x0860,0x00e5,0xd676,0xbcad,0x92a0,0x9302,0x8ac0,0x9281,0x7a20,0x93a7,0xcd0e,0x8a85,0x8240,0x8240,0x7a20,0x7a21,0x6100,0x8329,0xde57,0x5b0b,0x0000,0x2123,0x0000,0xc5d4,0xc52f,0x9280,0xabc7,0x9b66,0x9305,0x9b26,0x9306,0x9b27,0x9304,0x8280,0x8ac3,0x7a60,0x7a40,0x71a0,0x7ac8,0xc616,0x634c,0x0000,0x2124,0x0000,0xbd94,0xd5b1,0xa2e0,0xa365,0x92e0,0x92e2,0x9b44,0x9304,0x9324,0x9b65,0x8ae2,0x7a60,0x8280,0x8a61,0x79a0,0x6a45,0xc617,0x6b8e,0x0000,0x2123,0x0000,0xcdd5,0xdd90,0x9b24,0xabe9,0x9305,0xa3a8,0x9b25,0x9346,0x9b46,0x9326,0x92e4,0x8282,0x8280,0x82c3,0x7aa3,0x59a0,0xbe38,0x8450,0x0000,0x2965,0x0000,0xa554,0xc5d5,0x4160,0x49c2,0x41a0,0x41a0,0x3960,0x3940,0x3120,0x3940,0x41a0,0x2900,0x3960,0x3120,0x3120,0x0800,0xb5b5,0x94d2,0x0000,0x31a6,0x2164, +0x1103,0x1903,0x0000,0x52eb,0x9d13,0x6b08,0x5a65,0x49e3,0x7349,0x7b89,0x5aa6,0x7bcb,0x62c7,0x5265,0x7bcb,0x5ac7,0x3120,0x3962,0x0000,0x73ce,0xa554,0x3a06,0x10e3,0x0800,0x0187,0xc5d4,0xcd0e,0x9b00,0x9324,0x8ac3,0x8a82,0x8aa3,0x7a40,0x8260,0x8a82,0x8281,0x8281,0x8260,0x7a63,0x71c0,0x8c0e,0xadb5,0x4a68,0x10e2,0x18c2,0x0000,0xbd52,0xcd2f,0x9b00,0x9b21,0x8ac0,0x8aa0,0x8a60,0x8260,0x8280,0x8280,0x8260,0x8260,0x8240,0x7a41,0x7200,0x7328,0xb5d6,0x636d,0x0060,0x2123,0x0000,0xad72,0xcdb0,0x9320,0x9301,0x8a80,0x8260,0x8280,0x8240,0x8240,0x8240,0x8260,0x8240,0x8240,0x7a40,0x6a00,0x6ac6,0xb5d4,0x73ee,0x0020,0x2144,0x0000,0x94d2,0xd5f4,0x9b43,0x9b02,0x8aa0,0x8a80,0x8a80,0x7a40,0x8280,0x8240,0x7a40,0x8a80,0x7a40,0x7a20,0x71e0,0x7262,0xce15,0x8c90,0x0000,0x2965,0x0000,0x8492,0xde75,0xaba0,0x9b44,0x9b23,0x8ac1,0x8ac2,0x8a80,0x8260,0x8260,0x8240,0x8240,0x8241,0x7a41,0x7223,0x7220,0xce37,0x9d14,0x0000,0x31a5,0x0000,0x9490,0xee95,0xa341,0x9b02,0x92c1,0x9280,0x9280,0x8a20,0x92c2,0x8220,0x8260,0x8261,0x7a40,0x7a41,0x7243,0x5980,0xbdd5,0xa574,0x0000,0x3185,0x0000,0x6bad,0xdeb5,0xa3e6,0x9300,0x92c0,0x9280,0x8240,0x8240,0x8240,0x8220,0x8220,0x7a00,0x7a00,0x7a00,0x7222,0x4860,0xa4f1,0xbdd6,0x08e3,0x2144,0x0000,0x4aaa,0xdeb8,0xb4cd,0x9aa0,0x9ae0,0x8aa0,0x8280,0x8240,0x82c0,0x8280,0x7a20,0x8260,0x8240,0x7a20,0x7a41,0x5940,0xacf1,0xbdd5,0x00c1,0x1902,0x0000,0x31a6,0xdeb8,0xcd50,0x9ae0,0x9b45,0x92e2,0x92c2,0x8a80,0x92e2,0xa3c6,0x82c0,0x8a61,0x8261,0x7a62,0x8263,0x6980,0x9c6e,0xd699,0x4248,0x0880,0x0880,0x0063,0xe697,0xcd2f,0x9260,0x92c0,0x8a80,0x8a40,0x7a20,0x9323,0x9b23,0x7a00,0x8240,0x7a00,0x7a00,0x7a20,0x6920,0x83cc,0xd699,0x5b2c,0x0000,0x2103,0x0000,0xc615,0xd5b1,0x9aa0,0x92c0,0x8a80,0x8240,0x8240,0x8220,0x8200,0x8200,0x8220,0x7a00,0x7a00,0x79e0,0x6160,0x7b4a,0xce38,0x634c,0x0000,0x2944,0x0000,0xbd96,0xd614,0x92e0,0x9b03,0x92c0,0x8a80,0x8a40,0x8240,0x8240,0x8220,0x8240,0x8260,0x7a20,0x7240,0x69c0,0x7308,0xc657,0x6b8d,0x0000,0x2144,0x0000,0xc5f6,0xe634,0x92a0,0x92c0,0x8a80,0x8240,0x8a60,0x8240,0x8220,0x79e0,0x8220,0x8220,0x7a20,0x71e0,0x6960,0x6a01,0xd658,0x8450,0x0000,0x2965,0x0000,0xad54,0xc5f6,0x4a00,0x8bed,0x7328,0x62a7,0x7349,0x5a66,0x6b08,0x62c7,0x39a1,0x62c7,0x41c3,0x4a04,0x4a04,0x20a0,0xb5b5,0x94d2,0x0000,0x29a5,0x2164, +0x1103,0x1903,0x0000,0x52eb,0x9d12,0x6b28,0x5a85,0x39a0,0x9c8e,0x948e,0x5a86,0x946e,0x8c0d,0x944e,0x62e8,0x4a45,0x3960,0x3941,0x0000,0x73ce,0xa554,0x4226,0x1903,0x1081,0x0000,0xce99,0xffbc,0xe674,0xd654,0xd614,0xd5f4,0xcdd4,0xc5d3,0xc5f3,0xcdd4,0xc5b3,0xc5f2,0xcdd2,0xc592,0xb552,0xbdd5,0xb5d6,0x4248,0x1903,0x2103,0x0000,0xbdf7,0xffbc,0xe675,0xde54,0xce14,0xc5b4,0xc593,0xc5b3,0xc5b2,0xc5b2,0xc592,0xc592,0xbd92,0xbd72,0xb550,0xb573,0xb618,0x5b0b,0x18e0,0x2144,0x0000,0xadb6,0xffbc,0xe676,0xd615,0xcdf4,0xc5b3,0xc5b2,0xc5d3,0xc5d3,0xcdd2,0xc591,0xc592,0xc552,0xbd52,0xb510,0xb552,0xbe57,0x6bcd,0x2120,0x2985,0x0000,0x8cd3,0xffdd,0xeed7,0xde35,0xd5f4,0xcdd3,0xc5b3,0xc592,0xc5b3,0xc593,0xc5b1,0xbd92,0xbd72,0xb551,0xad51,0xa552,0xceba,0x7c51,0x0040,0x2965,0x0000,0x8451,0xffdd,0xe6d8,0xde35,0xd614,0xcdd3,0xc5d3,0xbdb3,0xc5b3,0xc5b2,0xc592,0xbd71,0xbd51,0xb531,0xacf0,0xad32,0xd6da,0x94d2,0x0000,0x2985,0x0000,0x7c72,0xfffe,0xeef7,0xd634,0xd634,0xc5d2,0xc5b2,0xc5b3,0xc5b3,0xcdd3,0xc5b2,0xbd91,0xbd70,0xb530,0xad30,0xb531,0xce9a,0x9533,0x0000,0x2985,0x0000,0x5b4d,0xf79c,0xf718,0xd5f3,0xd5f3,0xcdb1,0xc591,0xc591,0xc591,0xc592,0xc571,0xbd51,0xb530,0xb50f,0xb50f,0xa4cf,0xbe36,0xadd6,0x00a0,0x2144,0x0000,0x3208,0xe73c,0xff59,0xde34,0xde14,0xcdd2,0xc5b1,0xc5b2,0xc572,0xc592,0xc592,0xbd92,0xb572,0xbd31,0xbd50,0xa50f,0xce37,0xbdd6,0x0080,0x1902,0x0020,0x2126,0xdedb,0xffbc,0xde76,0xde56,0xd614,0xcdd4,0xc5d2,0xc593,0xc572,0xcdb2,0xc593,0xbd51,0xb571,0xb551,0xacf0,0xbe18,0xceba,0x3a06,0x10e1,0x10c1,0x0000,0xdf1c,0xff9c,0xde33,0xcdf3,0xc591,0xc592,0xc590,0xbd70,0xbd71,0xbd90,0xbd71,0xbd51,0xb530,0xb531,0xa4b0,0xb5b5,0xd6db,0x4acb,0x0060,0x2124,0x0000,0xbe19,0xffbe,0xe655,0xde34,0xd613,0xcdd2,0xcdb1,0xc591,0xc591,0xc592,0xc571,0xbd70,0xbd30,0xb530,0xacce,0xb574,0xce9a,0x52ea,0x0000,0x2945,0x0000,0xb5b7,0xfffd,0xee95,0xde34,0xd613,0xcdd1,0xcdb1,0xc592,0xc592,0xc592,0xc571,0xc571,0xbd51,0xb530,0xb4ef,0xad52,0xceba,0x634c,0x0000,0x2944,0x0000,0xb5f7,0xffdd,0xee96,0xde35,0xd5f4,0xcdd3,0xc592,0xc591,0xc571,0xc571,0xbd50,0xbd30,0xb50f,0xacef,0xaccf,0xa510,0xcefa,0x740f,0x0000,0x2985,0x0000,0xa554,0xbdd5,0x6b49,0xb573,0x9caf,0x9470,0x9caf,0x8c0d,0x946f,0x6b2a,0x5266,0xa4f1,0x6b2a,0x948e,0x8c0d,0x0000,0xadb5,0x94d2,0x0000,0x29a5,0x2144, +0x10e2,0x1903,0x0000,0x52eb,0x9cf2,0x7328,0x5a85,0x41c2,0x8c0c,0x8c4d,0x5a86,0x7bcb,0x944d,0x840c,0x83cb,0x62c7,0x3140,0x3962,0x0000,0x73ce,0xa554,0x4226,0x1903,0x0000,0x2144,0xb617,0xb5d5,0x8c0d,0x840e,0x840d,0x83ed,0x83ed,0x840d,0x73cc,0x83ed,0x83ed,0x7c0c,0x7bec,0x73ac,0x634b,0x94d2,0xb5d6,0x4a89,0x10c2,0x18e2,0x0000,0xadb5,0xbe16,0x8c4f,0x8c4f,0x842e,0x840e,0x840d,0x7bed,0x73ab,0x7bcc,0x83ed,0x83ed,0x7bcc,0x73ac,0x6b4a,0x7c0e,0xb617,0x634c,0x10c0,0x2123,0x0000,0xa595,0xce57,0x9450,0x9450,0x8c4e,0x842d,0x8c4e,0x7c0d,0x7bcc,0x83ed,0x8c2d,0x840d,0x83cd,0x7bad,0x734b,0x7bce,0xb618,0x73cf,0x0840,0x2985,0x0000,0x9514,0xd699,0x9caf,0x946f,0x8c2e,0x840d,0x840d,0x840d,0x83cd,0x7bad,0x840d,0x83ed,0x7bcd,0x73ac,0x6b6b,0x638c,0xc679,0x8492,0x0000,0x2165,0x0000,0x8c71,0xd6d9,0x9490,0x8c2e,0x8c2d,0x840d,0x7bed,0x7bcc,0x738b,0x736b,0x83cc,0x7bcc,0x738b,0x736b,0x630a,0x5b0b,0xc658,0x9d13,0x0000,0x2965,0x0000,0x8493,0xdefb,0x9cb0,0x8c6f,0x8c6e,0x842d,0x7c0d,0x840d,0x83ed,0x7bac,0x7bac,0x7bec,0x7bab,0x6b4a,0x634a,0x6309,0xbe18,0x9d54,0x0000,0x2985,0x0000,0x638d,0xdefa,0xb532,0x9c4f,0x946f,0x8c2d,0x8c2d,0x840d,0x7bec,0x7bec,0x7bcc,0x840d,0x83cc,0x7bab,0x7bab,0x5ac8,0xadb5,0xb617,0x0000,0x2144,0x0000,0x4a8a,0xdefb,0xc5d4,0x944e,0x9470,0x8c4e,0x8c0d,0x8c0e,0x83ed,0x7b8b,0x83ed,0x83ed,0x7bcc,0x7b8c,0x73ab,0x5b09,0xa576,0xb5f7,0x00a0,0x1902,0x0000,0x3187,0xd6ba,0xbdf5,0x840d,0x8c4f,0x840d,0x83ed,0x840d,0x7bcc,0x736b,0x83cc,0x7bcd,0x738b,0x6b6b,0x634b,0x5288,0x8cd3,0xc699,0x4248,0x08c0,0x08a0,0x0000,0xd6fb,0xce57,0x946e,0x8c4e,0x8c2d,0x8c0e,0x8c0d,0x83cc,0x83cd,0x842d,0x842d,0x83ed,0x7bac,0x73ac,0x630a,0x8c91,0xd6da,0x5b0c,0x0000,0x2124,0x0000,0xbe38,0xceb9,0x948f,0x94d0,0x948f,0x944e,0x8c2e,0x944e,0x8c2e,0x8c0d,0x8c2d,0x840c,0x83ec,0x7bcc,0x6b29,0x8c50,0xce9a,0x5b2b,0x0000,0x2124,0x0000,0xb5b7,0xded9,0xa4af,0x9c8f,0x946e,0x8c4d,0x8c2d,0x83ed,0x840d,0x8c2d,0x83ed,0x83ec,0x7bac,0x7b8c,0x7329,0x7bce,0xc67a,0x634e,0x0000,0x2944,0x0000,0xbe17,0xded9,0x9c90,0x9cb0,0x946f,0x946f,0x944e,0x8c2d,0x8c2d,0x8c2d,0x8c0d,0x83ec,0x7bab,0x738c,0x6b4a,0x6b6c,0xc6bb,0x7c30,0x0000,0x2985,0x0000,0xa534,0xbdd4,0x6b48,0xad32,0x9caf,0x944f,0x8c0d,0x840c,0x9c8f,0x6b29,0x738a,0x9caf,0x840c,0x8c2d,0x7bab,0x1820,0xad74,0x94b1,0x0000,0x29a6,0x2164, +0x10e2,0x1903,0x0000,0x52eb,0x94d1,0x6b08,0x6266,0x5204,0x5244,0x5a85,0x4a03,0x5265,0x4a03,0x3960,0x62a6,0x4a03,0x3960,0x3961,0x0000,0x73ad,0xa574,0x4247,0x10e2,0x0000,0x31e7,0xa533,0x7349,0x3800,0x3920,0x28a0,0x2840,0x2000,0x30e0,0x7328,0x49c0,0x1000,0x2800,0x2000,0x1800,0x0000,0x630b,0xa574,0x4a68,0x10e2,0x10e2,0x0063,0x9d12,0x83ec,0x2880,0x4140,0x3080,0x28a0,0x1000,0x5203,0x944e,0x6ae8,0x0000,0x2000,0x2000,0x1800,0x0000,0x2984,0xb5d6,0x6b6c,0x0080,0x1903,0x0000,0x9d13,0x840c,0x1800,0x3940,0x2820,0x2840,0x0000,0x6286,0x944d,0x6b07,0x1000,0x1800,0x1800,0x1000,0x0000,0x20e0,0xad95,0x73ce,0x0040,0x2164,0x0000,0x9cf3,0xa512,0x2800,0x3940,0x30a0,0x2000,0x2000,0x0000,0x62c8,0x83ab,0x2000,0x2000,0x2000,0x2000,0x0000,0x0000,0xbdf6,0x8c91,0x0000,0x2144,0x0000,0x8c71,0xb594,0x38e0,0x4160,0x4120,0x3080,0x2800,0x3100,0x7b8b,0x83ec,0x41e2,0x0800,0x1800,0x2000,0x1800,0x0000,0xad95,0x9d34,0x0000,0x2964,0x0000,0x9490,0xbdb3,0x2000,0x3160,0x30e0,0x3020,0x3020,0x1800,0x62c5,0x942d,0x5245,0x0800,0x2000,0x2000,0x2060,0x0000,0xad96,0xad95,0x0000,0x2985,0x0000,0x73ce,0xbe16,0x49e0,0x3960,0x3100,0x2860,0x0800,0x3980,0x7baa,0x83eb,0x6b49,0x1800,0x2000,0x1800,0x2060,0x0000,0x8cb2,0xb5f7,0x0000,0x2124,0x0000,0x5aec,0xce58,0x6b2a,0x2820,0x3120,0x30c0,0x2860,0x1000,0x5a65,0x7b8a,0x3940,0x1800,0x2000,0x1000,0x1820,0x0000,0x8c4f,0xbdf5,0x00e0,0x1903,0x0000,0x4228,0xc677,0x7beb,0x3000,0x4180,0x30c0,0x30c0,0x0800,0x5a46,0x8c2d,0x49e0,0x1800,0x2840,0x1800,0x2080,0x0000,0x6b2a,0xc658,0x4a89,0x0080,0x0060,0x08e4,0xce77,0x8c2c,0x0000,0x28c0,0x3040,0x2840,0x0000,0x62c8,0x8bee,0x3940,0x1000,0x2000,0x1800,0x2000,0x0000,0x5ac9,0xd678,0x6b2c,0x0000,0x1903,0x0000,0xb5f6,0x94d0,0x3000,0x4980,0x3100,0x2880,0x2040,0x0000,0x3920,0x62a5,0x30e0,0x1800,0x1000,0x1000,0x0000,0x5249,0xc638,0x634c,0x0000,0x2124,0x0000,0xb575,0xa512,0x1800,0x4180,0x30c0,0x2880,0x2000,0x7308,0x5a44,0x0000,0x2000,0x2000,0x1800,0x1000,0x0000,0x39a4,0xbe38,0x6b8d,0x0000,0x2123,0x0000,0xb5d6,0xad32,0x0000,0x30e0,0x2880,0x2000,0x1000,0x2000,0x1800,0x1800,0x1000,0x2000,0x2000,0x0000,0x0000,0x0000,0xc638,0x8450,0x0000,0x2965,0x0000,0xa534,0xc5f5,0x4a00,0x7b6a,0x62e7,0x5225,0x41c3,0x5224,0x62e8,0x62e7,0x5a65,0x41e1,0x5264,0x41c2,0x3981,0x2060,0xad95,0x94b1,0x0000,0x29a6,0x2144, +0x10e2,0x1102,0x0000,0x52aa,0x9470,0x6b28,0x62a6,0x5224,0x41a1,0x3960,0x3960,0x3940,0x3940,0x3981,0x3120,0x3960,0x3961,0x3961,0x0000,0x73ae,0xa555,0x4247,0x10e3,0x0000,0x29c7,0x9d12,0x83cb,0x5224,0x5224,0x41e3,0x41c3,0x3920,0x840d,0xc616,0x732a,0x28c0,0x41e3,0x41a2,0x39a3,0x2060,0x634b,0x9d33,0x4248,0x1903,0x10c2,0x0082,0x9512,0x8c2e,0x5202,0x5244,0x41e3,0x41a3,0x3980,0x946d,0x9c8f,0xb572,0x734a,0x2880,0x41c3,0x3982,0x3120,0x39c5,0xad95,0x6b6d,0x0080,0x1903,0x0000,0x9d12,0x946e,0x49c1,0x5204,0x41e3,0x41c3,0x41a2,0x9c6e,0x9ccf,0xad51,0x4a04,0x4182,0x4182,0x3982,0x30e0,0x39a5,0xad95,0x6bad,0x00c0,0x2184,0x0000,0x9d14,0xad32,0x51e0,0x5246,0x49e4,0x49c3,0x41a3,0x2100,0xad72,0xbdd4,0x3980,0x4183,0x4183,0x3962,0x3142,0x20a0,0xb5d6,0x8cb2,0x0000,0x2144,0x0000,0x8471,0xb5b4,0x5241,0x5225,0x4a04,0x4203,0x2920,0x6b49,0xb572,0x840d,0x4a24,0x39a1,0x39a2,0x3982,0x3963,0x0000,0xad94,0x9d33,0x0000,0x2964,0x0000,0x8c71,0xbdd4,0x4a00,0x5245,0x4a24,0x49e3,0x3960,0x5ac7,0xb552,0x9caf,0x6b07,0x3980,0x41a2,0x3961,0x3964,0x0000,0xad74,0xad74,0x0000,0x2985,0x0000,0x73ae,0xc5f6,0x6ac6,0x5224,0x5225,0x41c3,0x3981,0x5a85,0x7ba9,0xad72,0xa510,0x3120,0x41a2,0x3982,0x4183,0x0000,0x94b1,0xb5f6,0x0000,0x2144,0x0000,0x5acb,0xce38,0x83ac,0x4a01,0x5244,0x49e3,0x4181,0x5a65,0x9cef,0xa510,0x8c4d,0x3940,0x41a3,0x3982,0x41a3,0x0000,0x8c2f,0xb5d5,0x0100,0x18e2,0x0000,0x4228,0xc656,0x842c,0x49c2,0x5245,0x4a04,0x39a1,0x5aa6,0xad10,0x9c8f,0x948e,0x4a05,0x3980,0x39a2,0x3983,0x0000,0x736c,0xc638,0x4268,0x0080,0x0040,0x1104,0xce57,0x942d,0x49a0,0x4a04,0x49e3,0x3980,0x62c8,0xad32,0xa4f1,0x9cb0,0x3960,0x3982,0x3982,0x3983,0x0000,0x630a,0xce78,0x634c,0x0000,0x2103,0x0000,0xbdd6,0xa4d1,0x49e0,0x5a65,0x5203,0x4a03,0x3981,0x6309,0x9cd0,0x8bec,0x4180,0x41a2,0x4182,0x3963,0x2040,0x5a89,0xce38,0x634c,0x0000,0x2123,0x0000,0xad95,0xad32,0x51e0,0x5a66,0x4a03,0x49e3,0x4181,0x7b69,0x9cd0,0x83ec,0x4a04,0x4182,0x4182,0x3982,0x2900,0x39e5,0xc637,0x6bae,0x0000,0x2123,0x0000,0xb5b6,0xb532,0x6ac7,0x944e,0x6ae8,0x62a6,0x6ae7,0x4a03,0x7baa,0x62e7,0x5aa6,0x5265,0x3981,0x6b29,0x62e8,0x1040,0xc616,0x8450,0x0000,0x2965,0x0000,0xa533,0xc5f5,0x3980,0x4a04,0x41c2,0x41c0,0x41c1,0x4180,0x3940,0x3960,0x3960,0x3980,0x3140,0x3940,0x3121,0x0800,0xadb5,0x94b2,0x0000,0x29a5,0x2164, +0x10e2,0x1903,0x0000,0x4a69,0x842f,0x6b28,0x62c6,0x4a03,0x49e2,0x41c1,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x3960,0x3961,0x0000,0x736d,0xad55,0x4247,0x10e2,0x0000,0x29e7,0x9cf1,0x7baa,0x4a02,0x4a02,0x41a1,0x41a1,0x3960,0x4a66,0xa532,0x734b,0x28c0,0x41c2,0x3960,0x4181,0x2000,0x630b,0xa554,0x4a89,0x10e2,0x10a1,0x0062,0x94d1,0x8c2d,0x51c0,0x4a03,0x41c1,0x41a0,0x41c2,0x28e0,0x5aa7,0xad51,0x5ac7,0x30e0,0x3981,0x3960,0x3100,0x3183,0xa575,0x6b6d,0x0060,0x10e3,0x0000,0x9cf1,0x8c4d,0x49c0,0x49c2,0x41c1,0x41a1,0x41a2,0x0800,0x7bec,0xb593,0x4180,0x4180,0x3980,0x3960,0x28c0,0x3164,0xa554,0x73ae,0x00c0,0x2984,0x0000,0x9d13,0xa512,0x49c0,0x4a04,0x49c2,0x41c2,0x3900,0x83cb,0x9cd0,0x9cf1,0x4a24,0x3940,0x4181,0x3940,0x28e0,0x1860,0xb595,0x8c91,0x0000,0x2144,0x0000,0x8450,0xad93,0x5220,0x4a04,0x49e2,0x41c2,0x2900,0x7349,0xad32,0x9c8f,0x62e8,0x3120,0x3981,0x3940,0x3121,0x0000,0xa554,0x9d33,0x0000,0x2964,0x0000,0x8c50,0xbdb4,0x49e0,0x5224,0x49e2,0x41c2,0x20a0,0x7bab,0xc5d4,0x948f,0x7bab,0x3940,0x3981,0x3140,0x3983,0x0000,0xad74,0xad74,0x0000,0x2965,0x0000,0x738e,0xc5f6,0x6ae7,0x4a03,0x49e3,0x41a1,0x4181,0x3920,0x3982,0x9cd0,0x5ac8,0x3100,0x4180,0x3140,0x3962,0x0000,0x8c70,0xb5d6,0x0060,0x2144,0x0000,0x52ca,0xce37,0x83ab,0x41a0,0x49e3,0x49c2,0x3940,0x49e3,0xa511,0xb5b3,0x8c4d,0x3100,0x4181,0x3981,0x3982,0x0000,0x840f,0xb5d5,0x1942,0x18e2,0x0000,0x4208,0xc636,0x8c0c,0x4980,0x5204,0x41c2,0x2900,0x62c7,0xad30,0x83ee,0xb552,0x5a86,0x2900,0x4181,0x3962,0x0000,0x6b4c,0xc658,0x4268,0x0060,0x0060,0x1925,0xce57,0x8c2d,0x4180,0x49e3,0x41c2,0x28c0,0x7b8b,0xa511,0x5288,0xb552,0x4180,0x3920,0x3980,0x3161,0x0000,0x5aea,0xce78,0x632b,0x0000,0x2103,0x0000,0xbdd6,0xa4d1,0x49c0,0x5244,0x51e3,0x30c0,0x946d,0xbd92,0x52a8,0x2000,0x41a1,0x4180,0x3960,0x3961,0x1800,0x5289,0xc658,0x636c,0x0000,0x2124,0x0000,0xb595,0xad32,0x49a0,0x5a44,0x49c2,0x41a1,0x41a2,0x2000,0x31a3,0xad10,0xad30,0x41a0,0x3940,0x3961,0x28c0,0x39c4,0xc617,0x6b8e,0x0000,0x2123,0x0000,0xb5d6,0xad32,0x7bcc,0xc5f4,0x8c2d,0x944e,0xad11,0x7b8b,0x734a,0x7b8b,0xb572,0x734a,0x1820,0x7bcb,0x7bcc,0x1880,0xc617,0x8450,0x0000,0x2985,0x0000,0xa533,0xbdd4,0x41a0,0x5224,0x49e3,0x41c1,0x41c1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x4181,0x3960,0x3961,0x0000,0xad95,0x94d2,0x0000,0x31a6,0x2144, +0x10e2,0x1903,0x0000,0x4aaa,0x8450,0x6308,0x62c6,0x4a24,0x41e2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x3981,0x41a2,0x0000,0x6b6c,0xad74,0x3a27,0x1903,0x0020,0x2186,0x9d12,0x83cb,0x49e2,0x5223,0x41a1,0x41a1,0x3980,0x41c2,0xb551,0x7b8b,0x2040,0x49c2,0x4181,0x4182,0x1800,0x5aea,0xa554,0x4268,0x10e2,0x10c2,0x0001,0x9cf2,0x8c0d,0x49c0,0x5204,0x41a1,0x41c2,0x3100,0x83ec,0xbdb3,0x738b,0x3120,0x41c2,0x41a1,0x41a2,0x3100,0x39e4,0xadd6,0x632c,0x0020,0x1904,0x0000,0x9cf1,0x8c4d,0x41a0,0x4a03,0x41c2,0x4181,0x49c2,0x7baa,0x7bac,0xbd93,0x62a7,0x3140,0x41a1,0x41a1,0x3140,0x3164,0xb595,0x73ae,0x0000,0x2165,0x0000,0x94d2,0xa511,0x41a0,0x5224,0x41c1,0x41a1,0x4180,0x942d,0xb553,0xc615,0x5aa6,0x3940,0x41a1,0x3961,0x3942,0x1000,0xb595,0x8450,0x0000,0x2144,0x0000,0x7c30,0xad94,0x5220,0x5224,0x49e2,0x41a1,0x3960,0x62e8,0x5ac8,0xa511,0x9caf,0x1800,0x41a2,0x3961,0x41a4,0x0000,0xad94,0x8cb1,0x0000,0x2144,0x0000,0x8430,0xbdd5,0x49c0,0x5a44,0x49c2,0x41c2,0x28c0,0x7b8a,0xad11,0x840e,0xad31,0x4180,0x3960,0x3981,0x41e4,0x0000,0xad95,0xad75,0x0000,0x2965,0x0000,0x6b6d,0xc616,0x62c6,0x5223,0x49e2,0x41c1,0x49c2,0x1800,0x9c6f,0xa4d0,0x0000,0x41c2,0x4180,0x3960,0x41c3,0x0000,0x94b1,0xb5d5,0x0000,0x2144,0x0000,0x52aa,0xc636,0x7369,0x41c0,0x4a04,0x49e3,0x28a0,0x6b28,0xad52,0x946f,0xa4f0,0x41c1,0x4180,0x41a1,0x41a3,0x0000,0x840f,0xb594,0x00a0,0x2143,0x0000,0x39e8,0xc637,0x840c,0x4160,0x5244,0x49c2,0x41a2,0x41c1,0x7bab,0xa4f2,0xbd73,0x49e3,0x3960,0x4181,0x41a3,0x0000,0x738c,0xc658,0x31e7,0x0880,0x0880,0x0042,0xc637,0x8c4e,0x3980,0x4a04,0x49e2,0x30e0,0x734a,0xad32,0x83cc,0xb552,0x3960,0x3941,0x3960,0x4183,0x0000,0x630a,0xd6b9,0x5aeb,0x0000,0x2103,0x0000,0xbdd6,0xa4d1,0x4180,0x5224,0x49c2,0x4180,0x6b28,0x9c8e,0x944d,0x6b08,0x3980,0x41a1,0x3980,0x41a2,0x2080,0x5aaa,0xc658,0x5b0b,0x0000,0x2124,0x0000,0xad74,0xad32,0x49a0,0x5a45,0x49c2,0x49c2,0x4180,0x5a66,0x8c2d,0x9c8e,0x7b8a,0x41a1,0x4181,0x41a2,0x3100,0x41c5,0xc617,0x6b4d,0x0000,0x2944,0x0000,0xadb5,0xad52,0x6b07,0xad10,0x83ec,0x8bed,0x944e,0x7b8b,0x7b8b,0x736a,0x942e,0x732a,0x3940,0x6b08,0x738b,0x2101,0xc637,0x7c2f,0x0000,0x2985,0x0000,0x9d13,0xc5f5,0x3940,0x5a44,0x49a3,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x4181,0x39a2,0x0000,0xadb5,0x94f2,0x0000,0x31c6,0x2144, +0x10e3,0x18e3,0x0020,0x29a6,0x94b2,0x73ac,0x41c0,0x41c1,0x3980,0x3140,0x3960,0x3960,0x3960,0x3960,0x3140,0x3140,0x3980,0x20c0,0x0000,0xa533,0x9d13,0x2143,0x2144,0x18e2,0x0000,0x94d2,0xa511,0x2880,0x3920,0x3940,0x3100,0x3100,0x3140,0x8c2d,0x62c8,0x1840,0x3960,0x3940,0x28c0,0x0000,0x94d2,0x9d13,0x1902,0x2123,0x18e2,0x0000,0x9491,0xad73,0x3100,0x30c0,0x4160,0x3940,0x2880,0x9caf,0xb572,0x840c,0x4a03,0x28e0,0x3940,0x3140,0x0000,0x842f,0xadb6,0x31a5,0x1903,0x1904,0x0000,0x8c90,0xb594,0x28c0,0x3120,0x3980,0x3120,0x30e0,0x8c2d,0xa4f0,0x946e,0x41a2,0x3140,0x3160,0x3140,0x0000,0x738d,0xbe17,0x4a69,0x1903,0x2144,0x0000,0x73cf,0xbe36,0x5a86,0x2040,0x3980,0x3940,0x3940,0x2880,0x6aea,0x8c4e,0x41e2,0x3120,0x3120,0x3140,0x0000,0x62ea,0xc658,0x634b,0x0000,0x2144,0x0000,0x5b2c,0xc657,0x736b,0x0800,0x3960,0x3920,0x2060,0x62c8,0x9caf,0x9caf,0x62c8,0x2060,0x3940,0x3940,0x0000,0x5aa9,0xc657,0x6b6d,0x0000,0x2144,0x0000,0x5b0b,0xd6b9,0x738b,0x0000,0x41a2,0x3940,0x3120,0x41c2,0x944e,0x9cb0,0x736a,0x2040,0x3160,0x3160,0x0000,0x2961,0xc658,0x8430,0x0000,0x2144,0x0020,0x2966,0xc638,0x842e,0x1000,0x41a1,0x3960,0x4181,0x2000,0x8c2d,0x7bab,0x1800,0x3961,0x3940,0x3160,0x20a0,0x0000,0xbdf6,0x9d13,0x0000,0x2144,0x08a1,0x0000,0xbdf7,0xa511,0x0000,0x4182,0x4160,0x30c0,0x5245,0x9caf,0xa4cf,0x8c2c,0x3120,0x3140,0x4160,0x2000,0x0000,0xb5b7,0xa513,0x0000,0x1923,0x1903,0x0000,0xb5b6,0xbdd4,0x0000,0x3980,0x4180,0x3120,0x3960,0x83eb,0x9cd0,0x7b8b,0x28a0,0x3120,0x3940,0x28a0,0x0000,0xad95,0xb5b6,0x0000,0x2123,0x18e2,0x0000,0xb5b6,0xbdd5,0x0000,0x3981,0x41a1,0x3940,0x3962,0x946f,0xad30,0x7b8b,0x2060,0x3940,0x3120,0x3121,0x0000,0xa513,0xce78,0x1144,0x10e2,0x2123,0x0000,0x9cf3,0xc5f6,0x28c0,0x3940,0x4181,0x3981,0x2080,0x28c0,0x83cb,0x940c,0x4180,0x3940,0x3980,0x3962,0x0000,0x9492,0xc638,0x1943,0x18c2,0x2124,0x0000,0x9491,0xce57,0x41c0,0x3100,0x41a2,0x3940,0x3100,0x8bcb,0x8c0c,0x3982,0x1000,0x3140,0x3940,0x3960,0x0000,0x8c50,0xc638,0x29c6,0x1924,0x2944,0x0000,0x8cb1,0xd698,0x49c0,0x4160,0x49c2,0x4140,0x38e0,0x41a0,0x5245,0x41e2,0x2080,0x39a0,0x3961,0x41a3,0x0000,0x73ae,0xce99,0x4a89,0x0020,0x2164,0x0000,0x7c0f,0xd6b9,0x5243,0x3100,0x49c3,0x41a1,0x41a1,0x4181,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a2,0x0000,0x39c5,0xc658,0x73ee,0x0000,0x29a5,0x2144, +0x10e3,0x10c3,0x10c1,0x0000,0x6b8e,0xb5b5,0x9c8e,0x5a86,0x4a03,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c1,0x41c2,0x5a66,0xa4f2,0xbe17,0x5b4c,0x1901,0x2124,0x1903,0x0000,0x52ea,0xc657,0xad73,0x62e7,0x5265,0x5a86,0x5225,0x5a45,0x51e4,0x5225,0x5265,0x5245,0x5244,0x5287,0x94f1,0xb5d5,0x5b0b,0x08c1,0x2144,0x18e3,0x0000,0x4269,0xc657,0xb594,0x62a6,0x5204,0x5204,0x4a04,0x41e2,0x4201,0x5286,0x5245,0x5224,0x5225,0x5a46,0x8c2f,0xbe17,0x73ef,0x0860,0x2144,0x1923,0x0000,0x31e7,0xbdf6,0xbd94,0x62c7,0x5223,0x5203,0x49c2,0x41c3,0x5a86,0x41c1,0x49c2,0x49e2,0x4a03,0x4204,0x7bcd,0xc678,0x8cd2,0x0060,0x2164,0x1902,0x10a0,0x0062,0xb5b6,0xce16,0x7349,0x4a04,0x4a03,0x49e3,0x49e2,0x4180,0x3960,0x41c1,0x41c2,0x4a04,0x4203,0x7bce,0xce58,0x94f3,0x0080,0x2123,0x1903,0x18e3,0x0000,0xa554,0xce78,0x7bab,0x5244,0x5245,0x5245,0x4a24,0x62c7,0x5a85,0x49e3,0x5224,0x4a24,0x4a25,0x73ac,0xc637,0x9d33,0x0000,0x2144,0x1903,0x18c2,0x0000,0xa555,0xce98,0x7bca,0x4a24,0x5206,0x5204,0x49e3,0x49e4,0x5265,0x41e2,0x4a24,0x5244,0x5225,0x6aea,0xc616,0xb5d6,0x1125,0x1942,0x18e2,0x1903,0x0000,0x94b2,0xd698,0x8bec,0x49c3,0x41a2,0x4180,0x41a1,0x3980,0x3980,0x4180,0x4981,0x4181,0x3980,0x4a04,0xb594,0xce79,0x3a29,0x18e2,0x18e3,0x1903,0x0000,0x7bd0,0xd6b9,0x9caf,0x5224,0x49c2,0x49c1,0x4181,0x4a02,0x62e6,0x3980,0x49e3,0x49e3,0x49a3,0x5224,0xad95,0xc67a,0x4a6a,0x00a0,0x1923,0x1903,0x0000,0x5b0b,0xdefa,0xb573,0x5ac6,0x5244,0x5203,0x4a04,0x5a66,0x5ac6,0x41e2,0x5205,0x5225,0x4a05,0x5246,0xa533,0xce99,0x5b2c,0x0000,0x1923,0x1903,0x0000,0x5b2d,0xdef9,0xad51,0x51e4,0x49c2,0x49c1,0x3960,0x39a2,0x4a24,0x3960,0x41e2,0x41c2,0x41c2,0x39a3,0x9470,0xdefa,0x7c0f,0x0000,0x2144,0x18e2,0x0000,0x31c8,0xce78,0xb593,0x5a43,0x49c1,0x41a0,0x4180,0x4160,0x30a0,0x4181,0x41a1,0x4160,0x3980,0x4160,0x8c2e,0xd6ba,0x8431,0x0000,0x2944,0x18e3,0x0000,0x2145,0xce58,0xc616,0x62a6,0x49a0,0x49c0,0x49e2,0x5203,0x4160,0x41a1,0x4a03,0x49e3,0x49c2,0x41e3,0x842f,0xd69a,0x8471,0x0000,0x2184,0x2102,0x0000,0x1125,0xce78,0xce15,0x5a87,0x41c3,0x41a0,0x49e2,0x49c2,0x3960,0x4180,0x41c1,0x4180,0x49a0,0x4180,0x7bac,0xce99,0x94f3,0x0000,0x2144,0x1923,0x10c1,0x0001,0xc638,0xc636,0x5263,0x3960,0x3960,0x3940,0x3900,0x3900,0x3920,0x3920,0x3920,0x3920,0x30e0,0x4a26,0xbdf6,0xb5d6,0x08e2,0x2965,0x2985,0x2144, +0x10e2,0x10c2,0x10c1,0x0881,0x0000,0x7bee,0xb5f6,0xbe38,0xb5f7,0xbdf7,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xbe38,0xb5d6,0x5b2c,0x1923,0x2164,0x1903,0x10c2,0x10e2,0x0000,0x636c,0xbdf6,0xc637,0xbdf6,0xbdf6,0xbdf7,0xbdf7,0xbdf6,0xbdf7,0xbe17,0xb617,0xb5f6,0xb5f6,0xa595,0x5b2b,0x0020,0x2144,0x1903,0x10c2,0x18e3,0x0000,0x52cb,0xb5b5,0xc637,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5d6,0xb5d6,0xbdd6,0xb5d6,0x73ce,0x0040,0x2144,0x1903,0x10e2,0x18e3,0x0000,0x4a89,0xb5b5,0xc637,0xb5d6,0xb5b6,0xb5d6,0xb5f6,0xad95,0xb5b6,0xb5d6,0xb5b5,0xb5d6,0xbe17,0xb617,0x8c91,0x0903,0x2144,0x1903,0x10e2,0x18e2,0x0000,0x31a6,0xa533,0xbe17,0xbdf6,0xb5d6,0xb5b6,0xb5d6,0xbdf6,0xb5d6,0xb5d5,0xb5b5,0xb5d6,0xb5f6,0xbe37,0x94d2,0x0903,0x1903,0x1923,0x18e2,0x18e3,0x0000,0x08c3,0x94d2,0xbe17,0xbdf6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b6,0xb5d6,0xb5d6,0xb5b6,0xb5d6,0xbe17,0x94b2,0x1123,0x1903,0x1923,0x10c2,0x10c2,0x0020,0x00c3,0x9d12,0xc657,0xbdf6,0xb5d6,0xb5d6,0xb5b5,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5b5,0xb5d6,0xbdf7,0xa554,0x3a27,0x10e2,0x1923,0x10c2,0x10c2,0x10a2,0x0000,0x94b1,0xc657,0xb5d6,0xb5b5,0xb5d5,0xb5d5,0xb5d5,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xbe17,0xbdf6,0x5b0b,0x0000,0x2124,0x10e2,0x10c2,0x18e2,0x0000,0x7c0f,0xc617,0xbdf6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xb5b5,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xc637,0xb5b6,0x52ab,0x0000,0x2144,0x10e2,0x10c2,0x1903,0x0000,0x6b6d,0xbe17,0xc637,0xbdf6,0xbdf6,0xbdf6,0xb5d6,0xb5d6,0xbdf6,0xbdf6,0xb5d6,0xb5b5,0xbdf6,0xb5b5,0x634c,0x0000,0x2144,0x10e2,0x10c2,0x10c2,0x0000,0x73ad,0xc637,0xbe17,0xb5b5,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xbe17,0xc638,0x842f,0x0000,0x2144,0x10e2,0x10c2,0x18e3,0x0000,0x5aeb,0xbdf6,0xbe17,0xb5d5,0xb5d6,0xb5d6,0xb5d6,0xb5f6,0xb5b6,0xbdf6,0xb5b5,0xb5b6,0xbdf7,0xc658,0x8450,0x0000,0x2144,0x1903,0x10c2,0x1903,0x0000,0x4248,0xb5b6,0xc637,0xb5d6,0xb5d6,0xbdf7,0xb5f6,0xb5f6,0xb5f6,0xb5d6,0xb5d6,0xb5d6,0xbdf7,0xbe17,0x8c71,0x0060,0x2144,0x2144,0x1903,0x1903,0x0000,0x4a69,0xbdf6,0xc678,0xb5f6,0xb5d6,0xb5f6,0xbdf6,0xb5f6,0xb5d6,0xb5d6,0xb5b5,0xadb5,0xb5d6,0xc637,0x94b2,0x0081,0x2123,0x1923,0x1903,0x2123,0x0000,0x3a08,0xb5d5,0xbe37,0xad95,0xadb5,0xadb5,0xb5b5,0xadb5,0xad95,0xad95,0xad95,0xad74,0xad95,0xc637,0xad95,0x4248,0x1903,0x2985,0x2144,0x2124, +0x10c2,0x10c1,0x08a1,0x10c2,0x0880,0x0000,0x1146,0x5b0c,0x6b8d,0x6bae,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x52eb,0x00e3,0x0000,0x2164,0x18e2,0x10e2,0x10e2,0x10c2,0x18e2,0x0000,0x0000,0x4a8a,0x5aeb,0x5aeb,0x5b2c,0x5b2c,0x5b2c,0x632c,0x634c,0x5b4c,0x5b2c,0x4aaa,0x00c2,0x0000,0x2144,0x1903,0x10e2,0x10c2,0x10c2,0x18e3,0x0000,0x0000,0x4aaa,0x5b2c,0x5b2c,0x632c,0x632c,0x5b0c,0x5b2c,0x5b2c,0x5b2c,0x5b0c,0x52aa,0x1965,0x0000,0x2123,0x18e3,0x10e2,0x10e2,0x10c2,0x18e3,0x0000,0x0000,0x4aaa,0x5b2c,0x632c,0x634c,0x634d,0x634c,0x634c,0x634c,0x634d,0x636d,0x5b2c,0x29c6,0x0000,0x1903,0x1923,0x10e2,0x10e2,0x08a1,0x1903,0x0000,0x0000,0x3a29,0x5b2c,0x634c,0x632c,0x634c,0x636c,0x636d,0x636c,0x636d,0x636d,0x5b0b,0x29c6,0x0000,0x1923,0x1923,0x10e2,0x10e2,0x10c2,0x10c2,0x0020,0x0000,0x31e7,0x632c,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b2b,0x5b2c,0x634c,0x5aeb,0x29a6,0x0000,0x10c1,0x1903,0x10c2,0x10c2,0x10c2,0x10e2,0x0020,0x0000,0x3a08,0x5b0b,0x5b2b,0x5b2c,0x5b2c,0x634c,0x634c,0x632c,0x5b2c,0x5b2c,0x5b2c,0x4269,0x0000,0x0060,0x2164,0x10e2,0x10c2,0x10c2,0x10c2,0x10a1,0x0000,0x31e7,0x634c,0x636d,0x6b8d,0x6b8d,0x6bad,0x6bad,0x6bae,0x73ce,0x73ae,0x6bae,0x5b0b,0x0000,0x0000,0x1923,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x0000,0x1945,0x5b0b,0x6b8d,0x6b8d,0x636d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x636d,0x636d,0x52ca,0x0000,0x0000,0x2144,0x18e2,0x10c2,0x10c2,0x10c2,0x1903,0x0000,0x0000,0x52aa,0x632c,0x632c,0x634c,0x5b2c,0x634c,0x634c,0x632c,0x5b2b,0x5b2c,0x52aa,0x0000,0x0000,0x2144,0x10e2,0x10e2,0x10c2,0x10c2,0x1903,0x0000,0x0083,0x5b2c,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x636d,0x6b6d,0x6b6d,0x5b2b,0x21a5,0x0000,0x2123,0x1903,0x10c2,0x10c2,0x08a1,0x1903,0x0000,0x0000,0x5b2c,0x6bae,0x6bae,0x73ce,0x73ae,0x73ce,0x6bae,0x73ce,0x73ae,0x6b8d,0x636d,0x29c6,0x0000,0x1923,0x1903,0x18e3,0x18e2,0x10a2,0x1903,0x0000,0x0000,0x52ca,0x6b8d,0x6bae,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x636d,0x638d,0x634c,0x29a6,0x0000,0x2144,0x2144,0x1923,0x1903,0x1903,0x2124,0x0000,0x0000,0x52eb,0x6b8d,0x73ce,0x6bae,0x6bae,0x73ae,0x73ae,0x73ae,0x73ae,0x6bae,0x636d,0x3208,0x0000,0x1923,0x2124,0x1903,0x1903,0x1903,0x2123,0x0000,0x0000,0x5b0b,0x73ef,0x73ce,0x73ee,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x73ef,0x5b2c,0x0000,0x0080,0x2144,0x2143,0x2144,0x1923, +0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x1923,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x2144,0x10e3,0x10e2,0x10e2,0x18e3,0x10c2,0x10c2,0x1923,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1923,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x2124,0x18e3,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x1903,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x1924,0x1103,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x1903,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2144,0x2144,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x1924,0x1903,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x2123,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2123,0x10e2,0x1903,0x18e2,0x10c2,0x10c2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2124,0x10c2,0x18e3,0x10e2,0x10e2,0x10c2,0x18e3,0x1903,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2124,0x1903,0x18e2,0x1903,0x10e2,0x10e2,0x1903,0x2144,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2124,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x2124,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0880,0x2144,0x1903,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x1923,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2144,0x2123,0x18e2,0x18e2,0x18e3,0x10c2,0x10c2,0x2124,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a1,0x2965,0x2124,0x2123,0x2123,0x1903,0x1903,0x1903,0x2144,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x2144,0x2124,0x1923,0x1923,0x1903,0x1903,0x1903,0x2144,0x2123,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x2144,0x1923,0x2144,0x2123,0x1903, +0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x1903,0x2124,0x2964,0x2964,0x2944,0x2944,0x2144,0x2144,0x2144,0x2144,0x2144,0x2143,0x2144,0x2123,0x1903,0x2123,0x18e2,0x1903,0x1903,0x1903,0x2123,0x2123,0x2144,0x2964,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x1923,0x1903,0x1924,0x2164,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2123,0x2144,0x2144,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2124,0x1903,0x18e2,0x10c2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x2144,0x2144,0x1923,0x1923,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1923,0x2144,0x2123,0x1903,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x2144,0x2164,0x1923,0x1923,0x1903,0x1903,0x1903,0x1923,0x1923,0x1923,0x2144,0x2123,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2144,0x2964,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2144,0x2124,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x18e2,0x1903,0x2144,0x2124,0x1923,0x1903,0x18e3,0x1923,0x1903,0x1903,0x1903,0x1923,0x2144,0x2144,0x1923,0x1903,0x1903,0x1923,0x1903,0x18e3,0x1903,0x1903,0x1903,0x2123,0x2144,0x2124,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2144,0x2144,0x2123,0x1923,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2123,0x2144,0x2144,0x1903,0x1903,0x1923,0x1903,0x1903,0x1903,0x1903,0x2144,0x2144,0x2123,0x2123,0x1923,0x1903,0x2123,0x1923,0x1903,0x1903,0x1923,0x2123,0x2164,0x2144,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x10e2,0x2123,0x2144,0x2123,0x1903,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2123,0x2144,0x2144,0x1903,0x1923,0x1903,0x1903,0x1923,0x1903,0x1903,0x1923,0x2164,0x2123,0x1923,0x1903,0x1923,0x1903,0x1903,0x1903,0x1923,0x1903,0x2123,0x2144,0x2164,0x2124,0x1923,0x1923,0x2123,0x2123,0x2124,0x2123,0x2123,0x2964,0x2944,0x2123,0x2123,0x2123,0x2103,0x2123,0x2123,0x2123,0x2144,0x2123,0x2964,0x2144,0x2124,0x2144,0x2144,0x2144,0x2124,0x2123,0x2123,0x2144,0x2965,0x2944,0x2944,0x2143,0x2944,0x2144,0x2123,0x2144,0x2143,0x2144,0x2964,0x2985,0x2985,0x2965,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2965,0x2964,0x2964,0x2964,0x2964,0x2144,0x2144,0x2144,0x2144,0x2964,0x2964,0x2985,0x2965,0x2965,0x2964,0x2964,0x2964,0x2164,0x2144,0x2144,0x2164,0x2164,0x2144,0x1923,0x1903,0x1903,0x1923,0x1923, +0x10c2,0x10e2,0x10c2,0x10c2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x18e2,0x10e2,0x18e2,0x10e2,0x08a1,0x1903,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1903,0x18e2,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x1903,0x10c2,0x10e2,0x10c2,0x10c2,0x1903,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1923,0x10e2,0x18e3,0x10e2,0x1903,0x1903,0x08a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1923,0x10e2,0x10e2,0x1902,0x10e2,0x10e2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0880,0x1923,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x1903,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2143,0x10c2,0x10e2,0x10e2,0x10c1,0x08a1,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x10c2,0x10e2,0x10e2,0x10c1,0x10c1,0x1902,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10e2,0x10e2,0x10e2,0x10c2,0x08a1,0x1903,0x08a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e2,0x10e2,0x10e2,0x18e2,0x10c2,0x18e2,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1923,0x1903,0x1903,0x1902,0x1902,0x1903,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2124,0x1923,0x1923,0x1923,0x1903,0x1903,0x2144,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x1923,0x1903,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x18e2,0x0000,0x29e6,0x8430,0x9cd3,0xa512,0x9d34,0xa535,0xa513,0x9d14,0x9d14,0xa512,0x9cf2,0xa513,0x9d14,0x9d12,0x9cf1,0xa4f2,0x9cf2,0x9cf2,0x9cf3,0x9cf3,0x94f2,0x94f2,0x9cf3,0x8c71,0x4228,0x0000,0x2124,0x18e2,0x18e2,0x10c2,0x18e2,0x0000,0x1924,0x7c0f,0x94f2,0x9d13,0x9d13,0x9cf2,0x9d13,0x9d13,0x9cf3,0x9cf3,0xa513,0x9d13,0x94b2,0x52ca,0x0000,0x1923,0x1103,0x10e2,0x10e2,0x10e2,0x0000,0x2143,0x7c0f,0x9cf3,0x9d13,0x9d33,0xa553,0xa554,0xa554,0xa554,0xa554,0xa553,0xa553,0xa513,0x6b6d,0x0000,0x1923,0x1903,0x1903,0x10e2,0x1902,0x0060,0x00c2,0x7c0f,0x9cf2,0x9d33,0x9cf2,0x9d33,0x9d13,0x9cf3,0xa533,0xa513,0xa513,0xa534,0x9cf3,0x73ae,0x0000,0x1902,0x1924,0x1903,0x08c1,0x1902,0x0060,0x0000,0x73cf,0x9cf2,0x9d13,0xa513,0x9d13,0x9d33,0xa533,0x9d33,0x9d33,0x9d12,0x9d33,0x9d33,0x73ce,0x0000,0x10e2,0x1903,0x10c2,0x10e2,0x10e2,0x10c1,0x0000,0x632c,0x9cd2,0x9cf2,0x9d12,0xa533,0x9d12,0x9cf2,0x9d13,0x9cf2,0x9cf2,0x9cd1,0x8c70,0x73ee,0x08c2,0x08a1,0x1924,0x08c2,0x10c2,0x10c1,0x18e3,0x0000,0x4249,0x8c90,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9d13,0x9cf2,0x9cd2,0x94d2,0x94d2,0x9cf2,0x8430,0x2144,0x0040,0x1944,0x10e3,0x10c2,0x10c2,0x1903,0x0000,0x4a69,0x94b1,0xa513,0xa513,0x9cf2,0x9cf2,0x9d12,0x9d13,0x9d12,0x9d13,0xa513,0x9d12,0x94b1,0x31c6,0x0000,0x2144,0x18e2,0x10c2,0x08a1,0x1903,0x0000,0x4228,0x8c91,0x9d13,0x9d13,0xa513,0xa513,0xa513,0xa513,0xa513,0xa513,0x9d12,0x9d33,0x94d2,0x4268,0x0000,0x2144,0x10e2,0x10c2,0x08a1,0x10e2,0x0000,0x1943,0x842f,0x9cf2,0x9cd2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9d12,0xa512,0x8c91,0x4269,0x0000,0x2144,0x10e2,0x10c2,0x08c1,0x18e2,0x0000,0x0040,0x73ef,0x94d2,0x9cd2,0x9cf2,0xa512,0xa512,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x632b,0x0000,0x2124,0x18e2,0x10e1,0x08c2,0x18e2,0x18a0,0x0000,0x5b0b,0x8c72,0x94b1,0x94b1,0x94b3,0x94b1,0x9cb1,0x94b1,0x94b1,0x9491,0x94b1,0x8c70,0x4aca,0x0000,0x2944,0x1903,0x10e3,0x18e3,0x18e2,0x10a1,0x0000,0x634d,0x9cb2,0x9cd3,0x9cf2,0xa513,0x9d12,0x9d13,0xa513,0x9d12,0xa513,0xa4f3,0x94d0,0x6b8d,0x0000,0x2944,0x2164,0x1903,0x1923,0x18e3,0x2144,0x0000,0x3a07,0x844f,0x8c91,0x8c71,0x8c71,0x8c71,0x8c91,0x9491,0x9491,0x94b1,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c92,0x8c91,0x8cb1,0x8c91,0x5b0b,0x0000,0x2124,0x2124,0x1903,0x1902, +0x10e2,0x1103,0x1903,0x0000,0x4268,0xa511,0xbd72,0xc571,0xd58f,0xd54f,0xd571,0xcd70,0xcd70,0xcd71,0xcd6f,0xcd4f,0xc530,0xbd32,0xbd30,0xbd10,0xc530,0xbd30,0xbd30,0xbd31,0xbd31,0xbd30,0xbd51,0xbd52,0xcdf5,0xc657,0x63ae,0x0000,0x2144,0x18e2,0x1903,0x0000,0x3a27,0xa574,0xb5b4,0x9d12,0xa512,0xa4f2,0x9cf2,0xa512,0xa512,0x9cf2,0xa512,0xa532,0x9cf2,0xad74,0xc658,0x8430,0x0000,0x1923,0x10e2,0x10e2,0x0000,0x2986,0xa533,0xb5b4,0x9cd1,0x94b0,0x94b0,0x9cd1,0x9cd1,0x9cd1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0xad33,0xce78,0x94d2,0x0060,0x2144,0x1903,0x1102,0x0040,0x10e0,0xa554,0xc636,0xa532,0x9cf1,0x94b1,0x94b0,0x94b0,0x94b0,0x9cd1,0x9cd1,0x9cd1,0x9cb1,0xa512,0xce78,0xa533,0x00c1,0x1924,0x1903,0x10e2,0x0860,0x0000,0xa513,0xc637,0xa512,0x9cd1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x94b0,0x9d12,0xc617,0xa554,0x2144,0x1902,0x1903,0x10e2,0x10c2,0x0000,0x8c91,0xce57,0xad53,0x9cd0,0x9cf1,0xa4f2,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9cb0,0x9cb0,0xbdf6,0xb5b6,0x2965,0x10c2,0x1923,0x10c2,0x18e3,0x0000,0x6b8d,0xc637,0xb593,0x9cd1,0x9cf1,0x9cf1,0x9cd1,0x9cd1,0x9cb1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0xc616,0xc617,0x4268,0x00c0,0x1924,0x10c2,0x18e3,0x0000,0x7bee,0xce57,0xb594,0xa512,0xa4f1,0xa4f1,0xa4f1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0xa4f2,0x9cd1,0xc616,0xce78,0x528a,0x0000,0x1903,0x10c2,0x1903,0x0000,0x630c,0xce77,0xbdd5,0x9cd1,0x9cf1,0xa4f1,0xa512,0xa4f2,0xa4f2,0xa4f2,0xa512,0x9cf1,0x9cd1,0xb5b5,0xce98,0x73ce,0x0000,0x2144,0x10c2,0x10e2,0x0000,0x3a07,0xbdf6,0xc616,0xa4f1,0xa4f1,0xa4f2,0xa4f1,0xa4f1,0xa4f1,0x9cf1,0x9cf1,0xa511,0x9cd0,0xb594,0xc658,0x73ae,0x0000,0x2144,0x08a1,0x10c2,0x0020,0x10e2,0xa573,0xc636,0xa4d1,0xa4f1,0xa511,0xa511,0xa512,0xa4f1,0xa4f1,0xa512,0xa511,0x9cb0,0xb574,0xd6b9,0x8c71,0x0000,0x2144,0x18e2,0x10e2,0x18c1,0x0000,0xa4f3,0xde76,0xd593,0xcd51,0xcd51,0xcd73,0xc552,0xc551,0xcd71,0xcd91,0xcd92,0xbd51,0xc5b3,0xd697,0x94d2,0x0000,0x2164,0x1923,0x1903,0x10c2,0x0000,0xa4f2,0xde98,0xcd72,0xc552,0xbd90,0xc571,0xc570,0xc551,0xc572,0xc571,0xc572,0xbd52,0xc5b2,0xde98,0xad35,0x00a0,0x2144,0x2144,0x1903,0x2123,0x0000,0x73ae,0xce78,0xc616,0xad73,0xad53,0xad53,0xad53,0xad53,0xad53,0xad53,0xad53,0xad32,0xa532,0xa532,0xa532,0xa532,0xa532,0xa532,0xa532,0xa532,0xa513,0xa512,0xa532,0xad94,0xce58,0x94d2,0x0000,0x2124,0x2144,0x1923, +0x10e2,0x1902,0x0860,0x08c3,0x9cb0,0xac8d,0xbc00,0xe560,0xdd00,0xdce0,0xdce0,0xd4e0,0xd4c0,0xd4e0,0xdcc0,0xdca0,0xab60,0x7980,0x79c0,0x81c0,0x7160,0x7160,0x7180,0x7140,0x7160,0x7980,0x7180,0x71c0,0x69e0,0xa4f0,0xb5b5,0x4a89,0x10e2,0x2124,0x10a1,0x0000,0x94d2,0xa532,0x4a03,0x1800,0x1000,0x0000,0x0800,0x1000,0x0800,0x1000,0x1000,0x0800,0x1000,0x0000,0x842f,0xc658,0x5b0b,0x0040,0x1923,0x10c2,0x0000,0x8c71,0xad33,0x4a43,0x1800,0x2000,0x0800,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x0000,0x738c,0xce98,0x7c0f,0x0000,0x2124,0x18e3,0x0000,0x8c70,0xc616,0x62c7,0x1800,0x2000,0x1800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0800,0x0000,0x6309,0xce98,0x8c71,0x0000,0x2144,0x18e3,0x0000,0x842f,0xc616,0x6b08,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x1000,0x1000,0x1800,0x2000,0x0000,0x5267,0xc637,0x8cb2,0x0000,0x2164,0x1903,0x0000,0x636d,0xc657,0x83ed,0x1800,0x2000,0x1000,0x0800,0x1000,0x1000,0x1000,0x0800,0x0000,0x1000,0x0000,0x3983,0xc637,0xa554,0x0000,0x2144,0x1903,0x0000,0x3a27,0xbe16,0x9cd0,0x28a0,0x2000,0x1800,0x1000,0x1000,0x1800,0x0800,0x0800,0x1000,0x1800,0x0000,0x2080,0xbdf6,0xb5d5,0x0000,0x2124,0x1903,0x0000,0x3a08,0xce78,0xa511,0x0800,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0xbdd5,0xc637,0x10e2,0x10c1,0x1903,0x0020,0x2123,0xce58,0xbd93,0x1800,0x1000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x1800,0x1000,0x0000,0x9cf2,0xceb9,0x4289,0x0000,0x1903,0x10c2,0x0000,0xb574,0xc5f6,0x41c2,0x1000,0x1800,0x0800,0x0800,0x0800,0x0800,0x1000,0x0800,0x0000,0x1000,0x0000,0x9cb1,0xce99,0x4a89,0x0020,0x1903,0x18e3,0x0000,0xa533,0xce56,0x5a85,0x2800,0x1800,0x0000,0x0000,0x0800,0x0800,0x0800,0x1000,0x1000,0x1800,0x0000,0x840f,0xdeda,0x6b6d,0x0000,0x2124,0x2102,0x0000,0x9471,0xf6f8,0xd52b,0xd480,0xcca0,0xcc60,0xd440,0xcc60,0x92e0,0x79c0,0x7a00,0x8220,0x7a00,0x6960,0x9c4d,0xe6f9,0x7c10,0x0000,0x2964,0x2103,0x0000,0x7bee,0xf6d7,0xd52b,0xc440,0xbc00,0xbc40,0xcc20,0xc420,0x9280,0x79a0,0x8200,0x81e0,0x8220,0x6960,0x8b6a,0xdeb9,0x94f2,0x0000,0x2965,0x2124,0x0000,0x4a69,0xded9,0xa532,0x3960,0x3940,0x38c0,0x3100,0x3100,0x28e0,0x28c0,0x2880,0x2800,0x2840,0x2860,0x2860,0x2820,0x2800,0x2000,0x2000,0x2000,0x2000,0x2000,0x2040,0x1800,0x0000,0x734b,0xce78,0x8450,0x0000,0x2985,0x1923, +0x10e2,0x1902,0x0000,0x52ca,0x944e,0xab42,0xfe07,0xedc7,0xac03,0xac64,0xcd05,0xdd65,0x9bc3,0xb443,0xe564,0xf5a5,0xd4a4,0x8a82,0x8282,0x8260,0x9b46,0xa3e8,0x9346,0xa3c7,0x9b45,0xa3c8,0xa3a8,0x8a81,0x7a20,0x6100,0xad32,0x8450,0x0000,0x2144,0x0000,0x4a8a,0x9d12,0x6b29,0x4980,0x49e3,0x41c2,0x41c2,0x41c3,0x49e3,0x49e3,0x41c3,0x41a2,0x41c2,0x39a2,0x3962,0x0000,0xa513,0xa533,0x0000,0x2144,0x0000,0x39e7,0x9cd2,0x6b4a,0x41c0,0x5223,0x49c3,0x41c3,0x41a2,0x49c2,0x49e3,0x49c3,0x49c3,0x49c3,0x41a2,0x41a3,0x0000,0x9cf2,0xad95,0x0000,0x2144,0x0000,0x2185,0xad73,0x8c0d,0x30c0,0x49e3,0x49c2,0x4182,0x41a3,0x41c3,0x41c3,0x49e3,0x41c3,0x41a2,0x39a2,0x41c4,0x0000,0x94b1,0xb5d6,0x1924,0x1923,0x0882,0x0000,0xad54,0x8c4e,0x30e0,0x4a04,0x41a2,0x4182,0x49c3,0x49c3,0x49c3,0x49c3,0x41a2,0x4182,0x4182,0x41a4,0x0000,0x73ee,0xbe17,0x3a07,0x10e2,0x1903,0x0000,0xa513,0xa4f2,0x2820,0x49e3,0x49c3,0x41a2,0x41a3,0x49c3,0x41a3,0x41a3,0x41c3,0x41a2,0x4182,0x41a3,0x0000,0x632c,0xce78,0x4a68,0x0000,0x2124,0x0000,0x8c91,0xbdd4,0x3960,0x49e2,0x49c3,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41c3,0x41a2,0x41a2,0x41c3,0x0000,0x4a27,0xc658,0x5b0c,0x0000,0x2123,0x0000,0x8c91,0xbdf5,0x3960,0x41a1,0x49e3,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a3,0x41a2,0x41a2,0x41a3,0x1000,0x39a4,0xd6b9,0x7bef,0x0000,0x2144,0x0000,0x7c0f,0xce57,0x5203,0x3120,0x49e3,0x4182,0x4182,0x41a2,0x41c3,0x41c3,0x41a2,0x41a2,0x4182,0x41a3,0x3101,0x0000,0xbe17,0x9d13,0x0000,0x2165,0x0000,0x4aaa,0xce57,0x732a,0x30e0,0x4a04,0x41a2,0x41a2,0x41a2,0x41c3,0x49c3,0x49c3,0x41a2,0x41a2,0x4182,0x3121,0x0000,0xc637,0x9d13,0x0000,0x2964,0x0000,0x31e7,0xc636,0x8c0d,0x38c0,0x51e3,0x41a2,0x41a2,0x41c3,0x49c3,0x49c3,0x41c3,0x41c2,0x41a2,0x41a2,0x41a4,0x0000,0xb5b5,0xb5b6,0x0000,0x2124,0x0800,0x1126,0xce36,0xddad,0xed60,0xeda6,0x9be4,0xb485,0xeda4,0xf584,0xb3c3,0x8261,0x8aa2,0x8282,0x8282,0x8a63,0x4800,0xad12,0xc617,0x00a3,0x1902,0x20e2,0x0000,0xbdb3,0xe5f0,0xed20,0xf5e7,0x8b23,0xac25,0xfdc7,0xed85,0xb3c4,0x8a62,0x8281,0x9b25,0xbc09,0x8283,0x5000,0x9c90,0xc679,0x29c6,0x18c1,0x2965,0x0000,0xa554,0xc616,0x2020,0x49e2,0x49e3,0x49c2,0x49c2,0x41c2,0x41c2,0x41c2,0x41a2,0x41a2,0x49a2,0x49c2,0x49a2,0x41a2,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x41a1,0x41a2,0x41c4,0x0000,0x8c70,0xbdf6,0x2965,0x2144,0x2144, +0x10e2,0x1902,0x0000,0x5b0b,0x8bcc,0xcc43,0xfe88,0xb486,0x8b85,0x8be5,0x8b23,0xbc85,0x0003,0x4a22,0xd524,0xf564,0xcc62,0x8a80,0x8281,0x8260,0x9ba8,0xbced,0xb48c,0xc50d,0x9386,0xac6b,0xa40a,0x79e0,0x8a63,0x6180,0x9470,0x8cb1,0x1902,0x2144,0x0000,0x52eb,0x9cd1,0x6ae7,0x5202,0x41e2,0x39a1,0x41a2,0x3100,0x1000,0x1800,0x30e0,0x41a2,0x41a0,0x3980,0x3982,0x0000,0x7c0f,0xa553,0x2143,0x1923,0x0000,0x4a68,0x948f,0x6308,0x5223,0x5223,0x3940,0x28c0,0x41c2,0x3960,0x28c0,0x3980,0x3981,0x3120,0x3140,0x3982,0x0800,0x7bee,0xad74,0x2985,0x2123,0x0000,0x3a48,0xa553,0x7b69,0x49e0,0x41c2,0x3980,0x3960,0x3100,0x2020,0x2000,0x1800,0x30e0,0x3961,0x3940,0x3942,0x0000,0x73ad,0xb5b5,0x3a07,0x10e2,0x0000,0x2945,0xad74,0x7bcc,0x41a0,0x49e2,0x41a1,0x3960,0x28a0,0x1000,0x0000,0x1000,0x3140,0x3961,0x3140,0x3962,0x2000,0x52c9,0xb5f6,0x5b0b,0x0000,0x18c2,0x0000,0xad33,0x9c70,0x41c0,0x49e2,0x39a2,0x39a1,0x2900,0x2080,0x30e0,0x28a0,0x28c0,0x3940,0x3960,0x3961,0x20a0,0x4227,0xbdf6,0x634c,0x0000,0x2144,0x0000,0x9cd2,0xad32,0x41a0,0x5204,0x41c2,0x39a1,0x3140,0x3960,0x39a1,0x4181,0x3940,0x3940,0x3960,0x3940,0x3120,0x20c0,0xbdf7,0x73cf,0x0000,0x2123,0x0000,0xa513,0xad53,0x3960,0x4a03,0x41a2,0x3981,0x3140,0x3940,0x3960,0x3960,0x3100,0x3940,0x3960,0x3960,0x3121,0x1800,0xc5f6,0x9491,0x0000,0x2124,0x0000,0x8c70,0xc5d4,0x41a0,0x49c3,0x41a1,0x4181,0x4160,0x3981,0x3960,0x3960,0x3980,0x3980,0x3161,0x3940,0x3983,0x0000,0xad75,0xad95,0x0000,0x2144,0x0000,0x634c,0xbe15,0x62c6,0x49e2,0x49c2,0x3980,0x4181,0x3940,0x2000,0x1800,0x3100,0x41a2,0x4160,0x3940,0x3963,0x0000,0xad74,0xad95,0x0000,0x2985,0x0000,0x5b0b,0xc616,0x7349,0x4a01,0x49e3,0x41a1,0x4160,0x30e0,0x2880,0x2860,0x3140,0x41a1,0x3980,0x3960,0x3982,0x0000,0x8c70,0xb616,0x00a0,0x2123,0x0000,0x4aab,0xd636,0xdd49,0xfde5,0xb424,0x0002,0x29a2,0xcce3,0xed64,0xb3a2,0x8260,0x8a81,0x8a81,0x8260,0x8282,0x68e0,0x93cc,0xce57,0x3a49,0x10a2,0x1880,0x0085,0xc5f4,0xed6b,0xfda3,0xbca6,0x0004,0x39c3,0xcce4,0xe583,0xb3c2,0x8261,0x8260,0x9326,0xb46d,0x7a83,0x69a0,0x8bab,0xc659,0x52cb,0x0000,0x2144,0x0000,0xb5d6,0xa4f0,0x4160,0x5265,0x49e2,0x41c2,0x49c2,0x49c2,0x49c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x39a1,0x3981,0x4182,0x4181,0x4180,0x3982,0x2020,0x52c9,0xbdf6,0x52aa,0x10e3,0x2144, +0x10e2,0x18e2,0x0000,0x5acb,0x93cd,0xcca3,0xfe89,0xdda7,0xa403,0xac86,0x93a3,0xa403,0xa424,0xac23,0xd504,0xed84,0xcca2,0x8a80,0x8a81,0x8260,0x9325,0xb48c,0xb48d,0xbccd,0x9367,0x9b87,0x9346,0x7a40,0x8242,0x6980,0x946f,0x8cb1,0x1923,0x2144,0x0000,0x52eb,0x9cf1,0x6ae7,0x5203,0x41e3,0x49c1,0x2880,0x52c8,0x9cd0,0x9caf,0x5ac8,0x28e0,0x3981,0x3960,0x3962,0x0000,0x7c0f,0x9d13,0x2144,0x2103,0x0000,0x4269,0x9cf1,0x6b28,0x5a44,0x5223,0x5266,0x62e9,0x3940,0x5225,0x6b2a,0x49c2,0x3980,0x5ac8,0x4a25,0x3920,0x0000,0x7bef,0xa554,0x29c5,0x2124,0x0000,0x4248,0xad73,0x7b8a,0x49a0,0x41c3,0x3980,0x41a0,0x5285,0x6309,0x734a,0x7b6b,0x5a87,0x3120,0x3140,0x3942,0x0000,0x7bcd,0xb5b5,0x3a07,0x18e2,0x0040,0x2125,0xad74,0x83ed,0x4180,0x49e3,0x41a0,0x41c2,0x632a,0x83ec,0x8c0c,0x7bec,0x39c2,0x30e0,0x3141,0x3961,0x1800,0x5ac9,0xb5d6,0x5b0b,0x0000,0x10c2,0x0000,0x9d33,0x946f,0x4180,0x4a03,0x39a1,0x3960,0x62a7,0x6b09,0x4a85,0x5ac7,0x6ac8,0x49c4,0x3940,0x3961,0x2080,0x4207,0xb5b5,0x6b6c,0x0000,0x2124,0x0000,0x94d2,0xad52,0x4980,0x4a03,0x41c1,0x39a1,0x4a45,0x4a04,0x4181,0x3960,0x5224,0x5205,0x3140,0x3161,0x28e0,0x2902,0xbdf6,0x7bee,0x0000,0x2123,0x0000,0xa513,0xad52,0x4160,0x4a04,0x49a2,0x41a0,0x4a25,0x41e3,0x3960,0x3980,0x5265,0x41c3,0x3940,0x3940,0x3100,0x1800,0xbdf6,0x8cb1,0x0000,0x2144,0x0000,0x8c71,0xbdb4,0x4180,0x49e3,0x41a1,0x3980,0x4180,0x3960,0x41e3,0x41e2,0x3960,0x4180,0x3960,0x3961,0x3142,0x0000,0xa575,0xa574,0x0000,0x2144,0x0000,0x634c,0xbdf5,0x62c6,0x4a02,0x49c3,0x41a2,0x3940,0x4980,0x83ac,0x8bed,0x5204,0x28c0,0x3982,0x3920,0x3142,0x0000,0xa534,0xad74,0x0000,0x2965,0x0000,0x5b0b,0xc636,0x7349,0x49e0,0x4a03,0x41a0,0x41c0,0x5266,0x6b09,0x6b29,0x5225,0x3100,0x4180,0x3940,0x3962,0x0000,0x8c70,0xbe17,0x00c2,0x2103,0x0000,0x4a8b,0xde36,0xe56a,0xfde5,0xdd66,0x41a3,0x7b03,0xdd63,0xe544,0xb3a2,0x8220,0x8240,0x8260,0x7a40,0x7241,0x60e0,0x93ac,0xc5f6,0x4269,0x0861,0x18a0,0x0045,0xcdd4,0xed8c,0xfde2,0xd527,0x5a23,0x7ae3,0xd544,0xe583,0xabc2,0x8260,0x8280,0x9325,0xac6c,0x7a63,0x6940,0x8bab,0xc659,0x52eb,0x0820,0x2144,0x0000,0xb5b6,0xa511,0x4160,0x5245,0x4a03,0x49c2,0x41c2,0x41a1,0x49c2,0x41c2,0x41a1,0x49a1,0x49a2,0x41a1,0x41a1,0x41a1,0x41a2,0x41a2,0x41a1,0x3981,0x3981,0x3961,0x4181,0x3940,0x3961,0x2040,0x5268,0xb5f6,0x52eb,0x18a0,0x2145, +0x10e2,0x10e2,0x0000,0x5acb,0x8bcd,0xb3e0,0xfe07,0xfe27,0xed86,0xeda6,0xdd64,0xd545,0xe584,0xdd63,0xdd43,0xe563,0xbc43,0x8a61,0x8a61,0x8a61,0x8aa2,0x8b24,0x8ac4,0x8b04,0x8ae3,0x8aa1,0x8a82,0x7a61,0x8242,0x6980,0x9c90,0x8c91,0x1902,0x2144,0x0000,0x4aeb,0x9cd1,0x6ac7,0x4a03,0x4a03,0x30c0,0x736c,0xce57,0xbdb4,0xbd93,0xce57,0x7b8b,0x2040,0x3961,0x3962,0x0000,0x7c0f,0x9d34,0x2944,0x2103,0x0000,0x4269,0x9d12,0x7349,0x62a6,0x3940,0x7bcc,0xc5f5,0x30e0,0x944f,0xe719,0x7329,0x5265,0xbdd4,0x6309,0x2840,0x0000,0x7bcf,0xa554,0x29a4,0x2124,0x0000,0x4268,0xad94,0x7b8b,0x49c0,0x49c3,0x3940,0x49e2,0xbdd4,0xc636,0xb5b3,0xc5f5,0x8c2d,0x20c0,0x3140,0x3962,0x0000,0x7bcd,0xb5b5,0x3a28,0x1903,0x0000,0x2146,0xad54,0x7bcc,0x41a0,0x5204,0x3120,0x5aa6,0xce57,0xce16,0xb552,0xce57,0xad52,0x38e0,0x3120,0x3161,0x1800,0x52c9,0xb5f6,0x5b2b,0x0000,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x4181,0x3180,0xa4af,0xc615,0xc677,0xc635,0xbd51,0x6ae8,0x1860,0x3962,0x2040,0x4a27,0xbdd5,0x634c,0x0000,0x2124,0x0000,0x94f2,0xa532,0x4920,0x5224,0x41c2,0x30e0,0x9cae,0xad30,0x2000,0x62e8,0xc5d3,0x732a,0x2880,0x3982,0x28e0,0x28e2,0xc617,0x7c0e,0x0000,0x2123,0x0000,0x9d13,0xad52,0x4160,0x4a24,0x49c3,0x30c0,0xad31,0x9caf,0x1000,0x5245,0xbdd4,0x7bcc,0x1800,0x3982,0x3100,0x1800,0xbe17,0x8cb1,0x0000,0x2144,0x0000,0x8c91,0xbdd5,0x4180,0x49c2,0x41a2,0x3981,0x3981,0x2840,0x9cf0,0xa4f0,0x2800,0x4181,0x3960,0x3161,0x3142,0x0000,0xa555,0xa574,0x0000,0x2165,0x0000,0x632c,0xc5f5,0x62c6,0x49e1,0x49e3,0x3120,0x4a66,0xbdf4,0xc616,0xbdf5,0xc615,0x6b29,0x2000,0x3962,0x3942,0x0000,0x9d13,0xa574,0x0000,0x2965,0x0000,0x5b0b,0xbe16,0x7349,0x4a01,0x5203,0x3940,0x62a6,0xce16,0xc5d4,0xc5d4,0xc5f5,0x6b29,0x30e0,0x3941,0x3962,0x0000,0x8c70,0xbdf7,0x00c2,0x2103,0x0000,0x4a4a,0xd614,0xdd28,0xfde5,0xfde6,0xbcc3,0xc505,0xed85,0xe563,0xa383,0x8aa3,0xa367,0x9b67,0x9366,0x9b86,0x79e0,0x8bac,0xc5f6,0x3a48,0x0881,0x18c0,0x0004,0xcd94,0xe58d,0xf5c3,0xfe27,0xdd65,0xdd45,0xe584,0xdd45,0xaba3,0x8261,0x8280,0x8ae4,0x9b87,0x8263,0x6920,0x8bcc,0xce79,0x52cb,0x0820,0x2965,0x0000,0xb5b6,0xa511,0x4180,0x5a65,0x4a03,0x49c3,0x4180,0x3960,0x3960,0x3960,0x4180,0x4181,0x3940,0x4180,0x4181,0x3960,0x3920,0x3920,0x3920,0x3900,0x4160,0x3960,0x3960,0x3960,0x3941,0x2000,0x5288,0xb617,0x52eb,0x1880,0x2145, +0x10e2,0x1903,0x0000,0x5aec,0x9470,0xa363,0xbba0,0xc3c0,0xc3a0,0xbb40,0xb340,0xab20,0xa300,0xab20,0xa340,0xa320,0x9260,0x81c0,0x8a00,0x8a20,0x8200,0x79e0,0x81e0,0x81e0,0x81e0,0x81e0,0x79c0,0x79e0,0x79a0,0x6100,0x9cb0,0x8c91,0x1923,0x2124,0x0000,0x4aeb,0x94d1,0x6ac6,0x4a03,0x49e3,0x3100,0xbdf5,0xb5d5,0x0000,0x1800,0xbdb5,0xc5f6,0x28a0,0x3941,0x3962,0x0000,0x7c0f,0x9d13,0x2964,0x2123,0x0000,0x4269,0x9d12,0x7349,0x62a6,0x3960,0x5aa8,0xc635,0x6b29,0x9cd0,0xe73a,0x8c2e,0x7bac,0xc615,0x39c4,0x3100,0x0000,0x7bef,0xa554,0x29c4,0x2124,0x0000,0x4248,0xad73,0x7b8a,0x49c0,0x41c2,0x3120,0x5224,0xce37,0x9491,0x30c0,0x5205,0x49c3,0x3940,0x3120,0x3142,0x0000,0x7bcd,0xb5b5,0x3a07,0x1903,0x0000,0x2966,0xa533,0x7bab,0x41a0,0x5204,0x3100,0x62c7,0xce77,0x7bad,0x0000,0x842e,0xd6b7,0x5a45,0x1860,0x3982,0x1800,0x5ae9,0xb5f6,0x5b0b,0x0000,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x41a1,0x39a2,0x4a25,0x6b4b,0xce99,0x9cf1,0x49c3,0x49e4,0x3120,0x3141,0x2020,0x4a47,0xbdf6,0x6b6c,0x0000,0x2124,0x0000,0x9d12,0xa532,0x4120,0x5224,0x41c3,0x3100,0x7349,0xad0f,0x5220,0x9cf1,0xbdd4,0x3100,0x3940,0x3941,0x28c0,0x2903,0xc617,0x7c0e,0x0000,0x2123,0x0000,0x9cf3,0xad32,0x4160,0x4a24,0x49e4,0x2860,0xbdb4,0xad32,0x0000,0x5246,0xce37,0x840e,0x1000,0x3982,0x30e0,0x1800,0xbe17,0x94d2,0x0000,0x2144,0x0000,0x8450,0xb5b4,0x49a0,0x49e3,0x41a2,0x4181,0x4182,0x1000,0xb593,0xb5b4,0x0800,0x4182,0x3960,0x3140,0x3142,0x0000,0xa554,0xa574,0x0000,0x2164,0x0000,0x632c,0xbdd5,0x62a6,0x5202,0x5204,0x1800,0xa532,0xce57,0x4a67,0x2942,0xb593,0xc5f4,0x2020,0x3120,0x3962,0x0000,0x9d13,0xad74,0x0000,0x2985,0x0000,0x5aeb,0xbdf5,0x6b29,0x49e0,0x5204,0x3100,0x6b29,0xd678,0x7bad,0x1800,0xb5f5,0xad53,0x0000,0x3962,0x3962,0x0000,0x8c70,0xbdf6,0x00c2,0x2103,0x0000,0x4a8a,0xde76,0xb448,0xab60,0xc3a0,0xb3c0,0xab80,0xab20,0xa320,0x8240,0x8240,0x9b20,0x9300,0x8b00,0x9302,0x6100,0x8bcc,0xc617,0x3a49,0x0881,0x10a0,0x0003,0xcdf6,0xc52e,0xb360,0xc3e0,0xc3e0,0xb3a0,0xab60,0xab40,0x9240,0x81e0,0x8220,0x81e0,0x79a0,0x79c0,0x6000,0x93cb,0xd678,0x5aeb,0x0000,0x2944,0x0000,0xb5b5,0xa4f1,0x4180,0x5a65,0x5204,0x41a0,0x62e8,0x83cb,0x6ae8,0x736a,0x734a,0x7328,0x83cb,0x7349,0x5266,0x5a87,0x736a,0x83ec,0x6b29,0x6b49,0x5265,0x49e3,0x3940,0x3960,0x3961,0x2000,0x5288,0xbe17,0x5b0b,0x1080,0x2145, +0x10e2,0x18e2,0x0000,0x426a,0xb594,0xeef7,0xdeb7,0xde75,0xd615,0xcdb4,0xc571,0xc551,0xc571,0xc571,0xbd31,0xbd51,0xbd51,0xc572,0xbd71,0xc590,0xc571,0xbd51,0xbd51,0xbd50,0xc572,0xc571,0xbd50,0xb531,0xb4ef,0xa511,0xb5d6,0x8c71,0x1923,0x2144,0x0000,0x4aeb,0x94d1,0x6ac6,0x4a03,0x41a0,0x5266,0xc655,0x7c0d,0x2800,0x2000,0x738d,0xce57,0x5a87,0x28c0,0x3982,0x0000,0x7c0e,0x9513,0x2964,0x2123,0x0000,0x4269,0x9cf2,0x7328,0x5a64,0x41a3,0x28e0,0xb5b4,0x94b0,0xa4f0,0xa552,0x9cd0,0x9cb0,0xa531,0x0000,0x3963,0x0000,0x7bef,0xa554,0x29c4,0x2124,0x0000,0x3a27,0xa532,0x7b8a,0x49c0,0x49e3,0x3940,0x49e3,0xc616,0xc5f6,0xad32,0xb552,0x6b29,0x20c0,0x3140,0x3142,0x0000,0x7bad,0xb5b5,0x3a28,0x1903,0x0020,0x2946,0xa533,0x7b8b,0x4180,0x5204,0x3960,0x5a65,0xce57,0xbdb5,0x9cb0,0xbe17,0xad32,0x30a0,0x3120,0x3162,0x1000,0x630a,0xbe16,0x5b0b,0x0020,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x41c2,0x41a1,0x2820,0x49c3,0xce36,0x8c0e,0x0000,0x3982,0x3940,0x3141,0x1800,0x4a27,0xbdf6,0x6b6d,0x0000,0x2124,0x0000,0x9d13,0xa552,0x4920,0x5244,0x41c2,0x41a2,0x30e0,0x6ae7,0x9cae,0xc636,0x6b4b,0x1800,0x4182,0x3120,0x28e0,0x28e2,0xbdf7,0x7bee,0x0000,0x2123,0x0000,0x9cf2,0xa532,0x4180,0x5244,0x49e4,0x2880,0xb594,0xad33,0x0000,0x5266,0xc617,0x83ee,0x1000,0x3962,0x30e0,0x1800,0xbe17,0x94d2,0x0000,0x2144,0x0000,0x8450,0xb594,0x49c0,0x49e3,0x41a2,0x41a1,0x41a2,0x1800,0xad53,0xad74,0x1800,0x3981,0x3960,0x3140,0x3142,0x0000,0xa554,0xa575,0x0000,0x2144,0x0000,0x632c,0xbdd5,0x5aa6,0x4a02,0x41a3,0x41a0,0xc5f5,0x9c8f,0x0000,0x2860,0x6b08,0xce57,0x5ac9,0x1800,0x3963,0x0000,0x9cf3,0xad74,0x0000,0x2985,0x0000,0x5aeb,0xbdf5,0x6b08,0x41c0,0x5203,0x3940,0x6307,0xd676,0x948f,0x6b49,0xc636,0x9cd0,0x1000,0x3962,0x3942,0x0000,0x8c70,0xbdf6,0x00a2,0x2123,0x0000,0x3208,0xe71c,0xf6d9,0xddb3,0xcd73,0xc552,0xbd30,0xb50f,0xb530,0xbd30,0xc530,0xbd10,0xb510,0xb4f0,0xacae,0xa44c,0xbdb4,0xbe38,0x31c7,0x10e2,0x18c1,0x0000,0xce78,0xff59,0xd5f2,0xcdb4,0xc552,0xc571,0xbd50,0xbd50,0xbd52,0xbd71,0xbd50,0xbd31,0xb510,0xacef,0xa4af,0xb5b5,0xce9b,0x4a8a,0x1080,0x2144,0x0000,0xb5b5,0xa4f1,0x4180,0x5a65,0x5224,0x3920,0x8bec,0xad10,0x944e,0xa4d0,0x7b8b,0x62c7,0x942d,0x7bab,0x7349,0x83ed,0x9cd0,0x9d11,0x8c8f,0xa511,0x9cf1,0x62c7,0x30e0,0x3960,0x3961,0x1800,0x5288,0xbe37,0x5b0b,0x1080,0x2145, +0x10e1,0x18e2,0x0000,0x4aec,0x9d13,0xb552,0xad73,0xad72,0xad33,0xa513,0x9cd0,0x9cd0,0x9cb0,0x9cb0,0x9cb0,0x9cb0,0x9cb0,0x9cb1,0x9cb0,0x9caf,0x9cb1,0x9cb1,0x9cb0,0x946f,0x9cb1,0x9cb1,0x9490,0x9470,0x942f,0x8c50,0xadd6,0x8c91,0x1102,0x2144,0x0000,0x4aeb,0x94d1,0x6aa6,0x4a03,0x41c0,0x5225,0xce56,0x946f,0x0000,0x5224,0x94b0,0xbe15,0x4a45,0x28e0,0x3982,0x0800,0x7bee,0x94f2,0x2984,0x2143,0x0000,0x4269,0x9cf1,0x7328,0x5223,0x51e3,0x3000,0x94d0,0xbdd4,0xad32,0x738a,0xb593,0xbdd3,0x7bec,0x1800,0x4163,0x0000,0x7bef,0xa554,0x29a4,0x2103,0x0000,0x3a27,0xa512,0x7b8a,0x49c0,0x49e3,0x3940,0x4a03,0xc5f5,0xad53,0x840d,0x944f,0x5267,0x2900,0x3140,0x3142,0x0000,0x7bad,0xb5b5,0x4248,0x1902,0x0080,0x2105,0xa533,0x7bcc,0x41a0,0x5225,0x3120,0x5265,0xc637,0xbdd5,0xa4d1,0xce98,0xad53,0x2000,0x3141,0x3162,0x1000,0x630a,0xbe17,0x5b0b,0x0000,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x41c2,0x41a2,0x3140,0x5246,0xc637,0x8c4f,0x1800,0x41a2,0x3140,0x3141,0x2000,0x4a27,0xbdd6,0x6b6c,0x0000,0x2124,0x0000,0x9d12,0xa532,0x4120,0x5224,0x41e2,0x49a2,0x4181,0x3920,0xbdd4,0xb573,0x2000,0x3981,0x3940,0x3141,0x28e0,0x28c2,0xc617,0x7c0f,0x0000,0x2123,0x0000,0x9cf3,0xad32,0x4180,0x5244,0x49e3,0x2000,0xb5b4,0xad32,0x0000,0x41c2,0xce17,0x840f,0x0000,0x3982,0x30e0,0x1800,0xbe17,0x8cb2,0x0000,0x2144,0x0000,0x8450,0xb5b4,0x51e0,0x49e3,0x41c2,0x41a1,0x41a2,0x1800,0xad53,0xad73,0x1800,0x3981,0x3960,0x3140,0x3142,0x0000,0xa554,0xa575,0x0000,0x2124,0x0000,0x632c,0xbdf5,0x5aa6,0x49e2,0x49c3,0x4180,0xc617,0x94b1,0x0000,0x2880,0x6b49,0xc637,0x5289,0x1820,0x3983,0x0000,0x9cf3,0xad74,0x0000,0x31a5,0x0000,0x5b0b,0xbe16,0x6b08,0x41a0,0x5224,0x3960,0x62e8,0xd678,0xc616,0xbdb4,0xad32,0x49e3,0x3120,0x3920,0x3962,0x0000,0x9490,0xbe17,0x0020,0x2103,0x0000,0x3207,0xd71b,0xde99,0xbd92,0xb593,0xad52,0xad10,0xad10,0xa511,0xa4f1,0xa4f1,0xa511,0xa4f2,0x9cd1,0xa4d0,0x942d,0xb5b5,0xc679,0x39a6,0x10c1,0x18c2,0x0000,0xc658,0xe6d8,0xb552,0xb554,0xa512,0xa4f0,0xa4d1,0x9cf1,0xa4f2,0xa4f1,0x9cd0,0x9c91,0x946f,0x946f,0x7c0d,0xa554,0xce9a,0x4a69,0x0880,0x2144,0x0000,0xad95,0xa4f1,0x41a0,0x5a66,0x5224,0x4180,0x736a,0x7bcc,0x7bab,0x8c4d,0x736a,0x5204,0x6b08,0x62c7,0x8bec,0x8bed,0x7b8b,0x734a,0x7bab,0x7b8b,0x9caf,0x62c7,0x30e0,0x3961,0x3961,0x1800,0x5288,0xbe37,0x5b2c,0x1880,0x2165, +0x10c2,0x18e2,0x0000,0x5b2c,0x73ce,0x28c0,0x49a0,0x4160,0x38e0,0x2820,0x2000,0x2020,0x1800,0x2020,0x0000,0x0800,0x1800,0x0000,0x1800,0x0000,0x1000,0x1800,0x1800,0x2000,0x1800,0x0800,0x1800,0x2000,0x1000,0x0000,0x8c70,0x8c91,0x10e2,0x2144,0x0000,0x4aeb,0x94d1,0x6ac6,0x4a23,0x4a03,0x2020,0xb573,0xd657,0x5268,0x9cf2,0xef7b,0xad73,0x2000,0x3962,0x3962,0x0000,0x7c0e,0x94f2,0x2943,0x2944,0x0000,0x4269,0x9cf2,0x7349,0x4a02,0x5204,0x38e0,0x634a,0xe6fb,0xb574,0x0000,0xce36,0xd657,0x49e2,0x28c0,0x3942,0x0000,0x7bce,0xa533,0x2984,0x2123,0x0000,0x4248,0xa553,0x7b8a,0x49c0,0x41c3,0x3940,0x4a23,0xce36,0x9490,0x2920,0x5267,0x5246,0x3960,0x3140,0x3922,0x0800,0x738c,0xad74,0x4a49,0x1102,0x0080,0x1905,0xa533,0x7bac,0x49c0,0x5224,0x3120,0x6286,0xce77,0x73ad,0x0000,0x9470,0xd677,0x39c2,0x28c0,0x3162,0x1000,0x5ae9,0xbe17,0x630b,0x0000,0x18c2,0x0000,0x9d33,0x946f,0x4980,0x4a24,0x49e2,0x41a2,0x3120,0x5246,0xce58,0x8c4f,0x0000,0x4182,0x3140,0x3141,0x2040,0x4a26,0xb5b4,0x636c,0x0000,0x2144,0x0000,0x9d13,0xa553,0x4100,0x5204,0x49e3,0x49a1,0x4181,0x28c0,0xbdd5,0x9cb0,0x0000,0x41a3,0x3940,0x3120,0x28c0,0x28e1,0xc617,0x7c0f,0x0000,0x2124,0x0000,0x94b1,0xa512,0x41a0,0x4a03,0x4a03,0x1800,0xb572,0xc615,0x0800,0x6b4b,0xd698,0x7bcd,0x1800,0x3982,0x3100,0x1000,0xb5f6,0x94b2,0x0000,0x2144,0x0000,0x7c30,0xb5b4,0x51e0,0x5203,0x41a2,0x41a1,0x41a2,0x1800,0xad73,0xad73,0x0000,0x4161,0x3960,0x3120,0x3962,0x0000,0xa534,0xa574,0x0000,0x2124,0x0000,0x632c,0xbdd5,0x5aa6,0x4a02,0x5204,0x2800,0xad53,0xce56,0x4a45,0x2920,0xb5b4,0xbdb4,0x1800,0x3121,0x3962,0x0000,0x9cf2,0xad74,0x0000,0x2985,0x0000,0x5aeb,0xc616,0x6b29,0x41a0,0x5204,0x3900,0x6b29,0xd677,0x7bcd,0x3920,0x30e0,0x3100,0x3960,0x3120,0x3962,0x0000,0x9490,0xbdf6,0x0062,0x2103,0x0000,0x4aaa,0xc657,0x734a,0x2020,0x4180,0x30c0,0x2860,0x2820,0x2800,0x2820,0x2000,0x2820,0x2000,0x2000,0x1000,0x0000,0x738d,0xbe17,0x4248,0x0080,0x1060,0x0063,0xbdf6,0x8c2e,0x0800,0x3960,0x28c0,0x2000,0x2000,0x0800,0x0000,0x1000,0x2800,0x2800,0x2000,0x2000,0x0000,0x736c,0xd679,0x5acb,0x0020,0x2144,0x0000,0xad75,0xa4f1,0x41a0,0x5a65,0x4a03,0x49c2,0x49e3,0x41c2,0x49e3,0x5245,0x5a86,0x49e3,0x49c2,0x41a1,0x5a86,0x5225,0x4180,0x4160,0x49c2,0x3960,0x4180,0x41a2,0x3960,0x3940,0x3961,0x2000,0x5268,0xbe37,0x5b2c,0x1080,0x2145, +0x10c2,0x10e2,0x0000,0x5b4c,0x7c0e,0x5243,0x62c7,0x5a86,0x5245,0x4a03,0x49e3,0x49c3,0x41c2,0x41a1,0x7b6a,0x6b08,0x5245,0x62c7,0x5245,0x7b8a,0x5245,0x3961,0x41c2,0x4182,0x41a2,0x41a2,0x41a2,0x4161,0x3962,0x1800,0x842f,0x8470,0x1923,0x2144,0x0000,0x4aca,0x94d1,0x6ac7,0x4a03,0x4a03,0x3960,0x4a03,0xbd93,0xce36,0xbdf4,0xce57,0xad32,0x4180,0x3920,0x3962,0x0000,0x7c0e,0x9d13,0x31a5,0x2123,0x0000,0x4269,0x94f2,0x6b29,0x4a02,0x4a04,0x4180,0x4224,0xbdd6,0x9470,0x0000,0xa4f1,0xacf2,0x28e0,0x3941,0x3942,0x0000,0x73ad,0x9d13,0x31a5,0x2123,0x0000,0x3a28,0xa554,0x738a,0x41a0,0x41c3,0x3960,0x41c2,0xbdb4,0xc616,0xb593,0xc5f5,0xa4d0,0x3920,0x3120,0x3942,0x0800,0x6b8c,0xad74,0x4a29,0x1102,0x0080,0x1905,0xa533,0x83ec,0x49c0,0x4a03,0x3120,0x5a44,0xb573,0x738b,0x0800,0x7b6c,0xb573,0x4a45,0x2080,0x3182,0x1000,0x5b0a,0xbe37,0x630b,0x0000,0x10c2,0x0000,0x9d13,0x8c4f,0x49a0,0x4a24,0x41c2,0x49a2,0x28e0,0x5246,0xc5b5,0x83ed,0x0800,0x3982,0x3140,0x3941,0x2040,0x4a26,0xb5b4,0x634c,0x0000,0x2144,0x0000,0x9d13,0xa553,0x4140,0x5224,0x41c2,0x41a1,0x4181,0x3100,0xb573,0x946f,0x1000,0x41a3,0x3940,0x3120,0x28e0,0x2902,0xb5b6,0x7c0e,0x0000,0x2124,0x0000,0x8c91,0xa512,0x41c0,0x5203,0x4a03,0x2900,0x736a,0xce36,0xbdb3,0xce35,0xb593,0x3982,0x3120,0x3961,0x3121,0x0000,0xb5f6,0x94d2,0x0000,0x2144,0x0000,0x7c0f,0xb594,0x5222,0x49c3,0x41a2,0x4181,0x3981,0x2000,0xad52,0xad73,0x0000,0x4161,0x3940,0x3120,0x3142,0x0000,0xa513,0xa533,0x0000,0x2124,0x0000,0x630c,0xbdd5,0x5a86,0x49e1,0x5204,0x3980,0x5266,0xc5b4,0xce16,0xbdd4,0xbdd4,0x62a8,0x2000,0x3962,0x3142,0x0000,0x9d12,0xa554,0x0060,0x2985,0x0000,0x5aeb,0xc616,0x6b09,0x3960,0x49e3,0x3920,0x62e8,0xbdd4,0x6309,0x2000,0x41a2,0x3981,0x3940,0x3120,0x3962,0x0000,0x8c70,0xbe37,0x00a2,0x2103,0x0000,0x4aaa,0xc637,0x83aa,0x5a23,0x5a65,0x5203,0x49e2,0x41a1,0x3940,0x3100,0x3140,0x3982,0x41a2,0x3982,0x41a2,0x1000,0x736c,0xbdf6,0x4248,0x0080,0x0840,0x0084,0xb5b5,0x944e,0x49c0,0x5a65,0x5204,0x49c3,0x5223,0x62c7,0x62a7,0x62a7,0x5204,0x41a2,0x41a2,0x41a3,0x1000,0x738c,0xce79,0x52cb,0x0020,0x2945,0x0000,0xb5b5,0xa4f1,0x49c0,0x5a65,0x49e3,0x49c2,0x41a1,0x41a2,0x4181,0x3960,0x3960,0x41a1,0x3980,0x4181,0x3960,0x3960,0x4181,0x41a1,0x3980,0x4181,0x3960,0x3960,0x3960,0x3960,0x3961,0x2000,0x5268,0xbe17,0x5b2c,0x1080,0x2144, +0x10c2,0x18e2,0x0000,0x5b2c,0x7c0e,0x5243,0x62a6,0x5a64,0x4a03,0x49c2,0x41a2,0x4181,0x41a1,0x28e0,0x942d,0x6b29,0x946e,0xad10,0x736a,0xad10,0x83cc,0x3100,0x4181,0x3960,0x4180,0x41a1,0x4180,0x3960,0x3941,0x1800,0x844f,0x8450,0x1902,0x2144,0x0000,0x4aeb,0x94b1,0x6ac6,0x4a03,0x41c2,0x41c1,0x3940,0x3920,0x732a,0x62e8,0x3140,0x5245,0x41a2,0x3940,0x3162,0x0800,0x73ce,0x9513,0x31c6,0x2123,0x0000,0x4269,0x9d12,0x736a,0x5202,0x49e3,0x41c0,0x39a0,0x41c2,0x41a1,0x39a0,0x41c1,0x39a0,0x3160,0x3960,0x3141,0x0000,0x73ad,0xa533,0x31c6,0x2123,0x0000,0x3a08,0xa553,0x7bab,0x41a0,0x41c2,0x3980,0x3961,0x5245,0x62e9,0x62e9,0x6ae9,0x5a87,0x3140,0x3940,0x3941,0x1000,0x6b8c,0xad74,0x4a69,0x10e2,0x0060,0x2125,0xa533,0x83ec,0x4180,0x49e3,0x41a1,0x3981,0x49c3,0x41a1,0x4160,0x4181,0x49e3,0x4181,0x3140,0x3162,0x1000,0x5b0b,0xbe37,0x5b0b,0x0000,0x18e3,0x0000,0x9d13,0x8c6f,0x49a0,0x4a24,0x41c2,0x4181,0x3980,0x3981,0x5a67,0x49e4,0x3960,0x3960,0x3140,0x3141,0x2880,0x4a26,0xb594,0x634c,0x0000,0x2124,0x0000,0x94d2,0xa532,0x4140,0x4a04,0x41c2,0x4181,0x4181,0x3960,0x5ac8,0x5266,0x3120,0x3960,0x3940,0x3940,0x2900,0x28e2,0xb5d6,0x842f,0x0000,0x2144,0x0000,0x8c70,0xa4f1,0x49e0,0x4a03,0x41c2,0x41c2,0x2920,0x5266,0x8c2d,0x7bab,0x3980,0x3120,0x3981,0x3160,0x3100,0x1000,0xb5d6,0x8cb1,0x0000,0x2124,0x0000,0x7c0f,0xad73,0x5202,0x49c3,0x41c2,0x3980,0x3980,0x3940,0x6b08,0x62e8,0x2920,0x3960,0x3940,0x3140,0x3962,0x0000,0xa513,0xa533,0x0020,0x2124,0x0000,0x632c,0xb594,0x5aa6,0x49e1,0x49c3,0x41c1,0x3120,0x41a3,0x83ed,0x83ed,0x4204,0x28a0,0x3961,0x3140,0x3162,0x0000,0x94d2,0xa554,0x10e2,0x31c6,0x0000,0x52cb,0xbdd5,0x6b09,0x4180,0x49e3,0x41a1,0x41c2,0x5266,0x41c3,0x4181,0x3980,0x3960,0x3960,0x3940,0x3962,0x0000,0x8c50,0xbe37,0x00c2,0x2103,0x0000,0x4aaa,0xc657,0x83ab,0x5243,0x5a45,0x49e3,0x3960,0x5224,0x7b69,0x838a,0x7b49,0x5224,0x3960,0x4180,0x4182,0x0000,0x738d,0xbdf6,0x4228,0x08c1,0x1080,0x0083,0xb5b5,0x8c2e,0x4980,0x5224,0x49e3,0x4180,0x5a85,0x83cc,0x83cc,0x83cc,0x5a86,0x3960,0x3981,0x3982,0x0000,0x736c,0xce79,0x52cb,0x0020,0x2965,0x0000,0xb5b6,0xad32,0x49c0,0x5a65,0x4a03,0x49c2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x41a1,0x41a2,0x41a2,0x41c2,0x41a1,0x41a1,0x41a1,0x41a1,0x4181,0x4181,0x4181,0x3960,0x3961,0x2020,0x4a27,0xbe17,0x5b2c,0x1060,0x2144, +0x10c2,0x18e2,0x0000,0x5b2c,0x7c0e,0x4a01,0x62a6,0x5244,0x49e3,0x49c2,0x41a2,0x41a2,0x41c2,0x3140,0x7349,0x5aa6,0x840c,0x944d,0x7bab,0x946e,0x7b8a,0x3960,0x41a1,0x41a1,0x41a1,0x41a1,0x39a1,0x4180,0x39a3,0x1000,0x8c70,0x8450,0x0080,0x2124,0x0000,0x4aeb,0x94b1,0x6ac6,0x4a04,0x41e2,0x41a0,0x41c2,0x4181,0x2040,0x28c0,0x3981,0x3140,0x3980,0x3981,0x3983,0x0000,0x7c0f,0x9d34,0x2964,0x2123,0x0000,0x4289,0x9cf2,0x6b29,0x5223,0x4a03,0x41a1,0x41a1,0x3960,0x3981,0x41c1,0x3981,0x3981,0x3981,0x3960,0x3982,0x0000,0x73ad,0x9d13,0x29a6,0x1902,0x0000,0x3a08,0xa533,0x7b8b,0x41e0,0x41c3,0x3961,0x3961,0x3120,0x20c0,0x28c0,0x28c0,0x28e0,0x3980,0x3960,0x4183,0x1000,0x6b8c,0xad95,0x4208,0x1923,0x0040,0x1925,0xa533,0x7bcc,0x49a0,0x49e3,0x3980,0x3981,0x3940,0x3960,0x41a1,0x3961,0x3120,0x4161,0x3980,0x39a2,0x2000,0x5aea,0xc637,0x5b0b,0x0000,0x18c2,0x0000,0xa554,0x9490,0x49c0,0x4a24,0x41a2,0x4180,0x3981,0x3960,0x3100,0x3960,0x3981,0x3981,0x3980,0x3981,0x28c0,0x4206,0xb5b5,0x634c,0x0000,0x2124,0x0000,0x8cb2,0x9d12,0x49a0,0x5204,0x41c2,0x4181,0x4181,0x4181,0x2900,0x3140,0x4181,0x3980,0x3961,0x3961,0x3141,0x20c1,0xbdd6,0x7c0f,0x0000,0x2124,0x0000,0x8c70,0xa512,0x49c0,0x5204,0x41c2,0x41a1,0x41a2,0x3100,0x1000,0x2000,0x3960,0x4181,0x3981,0x3981,0x3962,0x0000,0xb5f6,0x8cb1,0x0000,0x2944,0x0000,0x7c0f,0xad73,0x5201,0x5204,0x41a2,0x3981,0x41a1,0x41a1,0x3120,0x28c0,0x3980,0x3981,0x3961,0x3960,0x39a3,0x0000,0xa534,0xa554,0x0000,0x2944,0x0000,0x5b0c,0xb594,0x5aa6,0x4a02,0x49e3,0x41c1,0x41c1,0x3980,0x1000,0x1800,0x3160,0x4181,0x3960,0x3960,0x41a3,0x0000,0x9cf2,0xad95,0x0000,0x39e7,0x0000,0x4aaa,0xbdf6,0x6b29,0x41a0,0x41c2,0x41a1,0x41a1,0x3140,0x3960,0x3980,0x4181,0x3981,0x3981,0x3981,0x41a3,0x0000,0x9491,0xbe37,0x0000,0x2143,0x0000,0x4269,0xbe16,0x83ab,0x5243,0x5a45,0x49c2,0x3980,0x5244,0x7349,0x7b4a,0x7328,0x5224,0x3980,0x41a1,0x41a3,0x0000,0x738d,0xc637,0x4248,0x0080,0x18c2,0x0000,0xb595,0x946f,0x4160,0x5224,0x49e3,0x4181,0x5a44,0x83ab,0x83cc,0x7b8b,0x5a65,0x3960,0x41a1,0x41c3,0x0800,0x738c,0xce79,0x52aa,0x0020,0x2965,0x0000,0xad95,0xa4f1,0x41a0,0x5a66,0x49e3,0x49c2,0x41a2,0x41a2,0x4182,0x41a2,0x41a2,0x41a2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a2,0x41a2,0x41a1,0x41a1,0x4181,0x4181,0x3981,0x3960,0x3982,0x2060,0x5268,0xbe38,0x5b2c,0x1060,0x2144, +0x10c2,0x1902,0x0000,0x428a,0x94b0,0x5a84,0x41a0,0x4a03,0x41c2,0x4181,0x3961,0x3980,0x3981,0x39a1,0x41c2,0x41e3,0x3980,0x3960,0x4a24,0x5245,0x41a2,0x3981,0x4182,0x3981,0x4181,0x3982,0x3982,0x41a2,0x1800,0x2880,0xa513,0x73ef,0x0040,0x2144,0x0000,0x3a48,0xa512,0x7b48,0x3100,0x41c2,0x3981,0x3981,0x3982,0x41a3,0x41a2,0x41a2,0x41a1,0x3982,0x3982,0x28e0,0x0000,0x9d33,0x94f3,0x0060,0x2144,0x0040,0x0904,0x9d32,0x8c0c,0x2800,0x3982,0x3981,0x3961,0x4161,0x3961,0x3941,0x3961,0x3981,0x3960,0x3161,0x28c0,0x0000,0xa512,0x9d13,0x0902,0x2143,0x10a1,0x0062,0xa512,0x9c8e,0x2820,0x3161,0x3920,0x3940,0x3980,0x3962,0x4161,0x3962,0x3941,0x3120,0x3961,0x30e0,0x0000,0x9d12,0xa574,0x18a3,0x2144,0x10e2,0x0000,0x9d12,0x9cb0,0x2800,0x41a1,0x3981,0x3961,0x3981,0x3981,0x3961,0x3981,0x3982,0x4181,0x3981,0x3161,0x0000,0x8c91,0xb5f6,0x2944,0x10c2,0x1903,0x0000,0x8cb1,0xb573,0x38a0,0x3981,0x3982,0x3981,0x3961,0x3961,0x4182,0x4182,0x3961,0x3982,0x3981,0x3982,0x0000,0x738d,0xc638,0x4a69,0x00c2,0x2123,0x0000,0x73ef,0xb5b4,0x51e0,0x3960,0x41c3,0x3981,0x3961,0x3961,0x3982,0x3961,0x3961,0x3961,0x3961,0x3983,0x0000,0x5a89,0xce38,0x52ea,0x08a0,0x2124,0x0000,0x73ce,0xbdb4,0x5220,0x3900,0x41a3,0x3960,0x3981,0x4182,0x41a2,0x4182,0x4162,0x4161,0x3180,0x39a2,0x0000,0x4a26,0xc657,0x6b8d,0x0000,0x2144,0x0000,0x5b0b,0xc615,0x7307,0x2000,0x3982,0x3961,0x3961,0x3961,0x4182,0x4182,0x3981,0x3982,0x3962,0x3962,0x1000,0x0000,0xce37,0x94d2,0x0000,0x2965,0x0000,0x31a7,0xc616,0x7bab,0x1800,0x49c4,0x4181,0x3961,0x4162,0x41a2,0x41a2,0x3982,0x3962,0x3940,0x3962,0x2080,0x0000,0xbe16,0x94d2,0x0000,0x31e6,0x0881,0x00a3,0xbdd5,0x944e,0x0000,0x41a2,0x39a1,0x3981,0x4182,0x3961,0x3960,0x3961,0x3961,0x3961,0x3962,0x3100,0x0000,0xbdf6,0xa555,0x0000,0x2143,0x0840,0x00e4,0xbdf5,0x9c8e,0x3080,0x5225,0x41a2,0x41a2,0x4181,0x3140,0x3120,0x3960,0x41a2,0x41a2,0x41a2,0x49c4,0x0000,0x9cb1,0xc617,0x1104,0x1923,0x2103,0x0000,0xa533,0xad31,0x1800,0x49e3,0x49e3,0x4182,0x41c2,0x5265,0x5245,0x5225,0x49c3,0x41a2,0x41c2,0x39a3,0x0000,0x9cd1,0xc658,0x1104,0x2123,0x2964,0x0000,0x9cf2,0xc5d4,0x2000,0x5205,0x4a04,0x49e3,0x49c3,0x41c3,0x41c3,0x41a3,0x41a3,0x41a3,0x41a3,0x41a2,0x49c3,0x41c3,0x49c3,0x49c3,0x41c3,0x41a3,0x41a2,0x41a3,0x41a2,0x41a2,0x41c4,0x0000,0x83ee,0xbe38,0x3208,0x2102,0x2144, +0x10e2,0x10e2,0x0861,0x0000,0x844f,0xa532,0x7b69,0x5202,0x4180,0x4160,0x4160,0x3920,0x3920,0x3920,0x3900,0x38e0,0x3900,0x3900,0x3060,0x2840,0x30a0,0x38e0,0x38e0,0x30a0,0x38e0,0x38e0,0x38e0,0x3100,0x4205,0x9d12,0xa533,0x3207,0x1903,0x1903,0x10c2,0x0000,0x8450,0xbdd5,0x736b,0x28c0,0x2860,0x3080,0x30a0,0x3060,0x3060,0x30c0,0x30c0,0x2840,0x2880,0x4980,0x9cb1,0xb5d6,0x52ea,0x10c1,0x2123,0x1903,0x0000,0x7c0f,0xc617,0x840d,0x3940,0x3900,0x38e0,0x3900,0x3900,0x38e0,0x38e0,0x3900,0x3920,0x3920,0x41c4,0x94f2,0xc637,0x632c,0x08c1,0x2144,0x1903,0x0000,0x73ad,0xc637,0x8c4f,0x4980,0x3900,0x3920,0x3920,0x3900,0x3920,0x3920,0x3920,0x3900,0x3120,0x3980,0x94b0,0xc657,0x638c,0x0020,0x2144,0x1903,0x0000,0x634c,0xc616,0x946f,0x3960,0x30c0,0x3900,0x38e0,0x30e0,0x30c0,0x30e0,0x30c0,0x30e0,0x28e0,0x3140,0x842e,0xc658,0x7c2f,0x0000,0x2144,0x10e2,0x0000,0x4248,0xc657,0x9cf1,0x3160,0x3100,0x2880,0x3080,0x30a0,0x3080,0x38c0,0x38e0,0x38e0,0x30a0,0x2040,0x734a,0xce78,0x94f2,0x0000,0x2144,0x10e2,0x0000,0x2165,0xb5d5,0xb574,0x4a03,0x30a0,0x30c0,0x38e0,0x30c0,0x30a0,0x30c0,0x30c0,0x30c0,0x30c0,0x3040,0x5aea,0xce78,0xad75,0x0000,0x2144,0x10e2,0x0000,0x1903,0xad95,0xad95,0x5266,0x3900,0x30c0,0x3900,0x30c0,0x30e0,0x3900,0x3900,0x38e0,0x3900,0x30c0,0x62c9,0xc617,0xad95,0x00c0,0x1923,0x1903,0x18c2,0x0000,0xad74,0xce56,0x5aa6,0x2820,0x30a0,0x30a0,0x3060,0x2820,0x3060,0x30a0,0x3080,0x2880,0x2880,0x41e4,0xb5d5,0xc637,0x31e6,0x1923,0x2144,0x10c2,0x0000,0x94d2,0xc636,0x6329,0x28a0,0x3100,0x30e0,0x3080,0x30a0,0x30c0,0x3080,0x38c0,0x3920,0x2860,0x3962,0xb553,0xce58,0x3a28,0x2164,0x31a6,0x2964,0x0000,0x7c0f,0xc616,0x7b6b,0x30e0,0x30a0,0x30a0,0x3080,0x30c0,0x30e0,0x30e0,0x30c0,0x38e0,0x38e0,0x30a0,0x9d13,0xce99,0x52aa,0x0000,0x1903,0x2123,0x0000,0x8430,0xd698,0x7c0c,0x2820,0x3000,0x2800,0x2800,0x3060,0x38a0,0x3060,0x3060,0x3080,0x3060,0x0000,0x840e,0xd699,0x8430,0x0000,0x2164,0x2103,0x0000,0x632b,0xce98,0x9c8f,0x38e0,0x30a0,0x3080,0x38a0,0x3020,0x3000,0x2800,0x3060,0x38c0,0x30e0,0x3100,0x840e,0xce98,0x8450,0x0000,0x2965,0x2124,0x0000,0x52aa,0xd699,0x9cd0,0x20a0,0x28c0,0x2040,0x2000,0x2820,0x2000,0x2000,0x2820,0x2820,0x2820,0x2820,0x2860,0x2840,0x2840,0x2840,0x2820,0x2000,0x2000,0x2800,0x2800,0x2800,0x1000,0x5a87,0xc658,0x94f2,0x0000,0x2985,0x2124, +0x10c2,0x10a1,0x10c2,0x0000,0x00a2,0x8c91,0xb5b5,0xb5d5,0xbdf6,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xb5d5,0xb5d5,0xb5b4,0xb5b4,0xb5b5,0xb5b4,0xb5b4,0xad94,0xb5b4,0xb5d4,0xadb4,0xadb5,0xbe17,0xa575,0x4a8a,0x10c1,0x2144,0x1903,0x10e2,0x0000,0x08c4,0x94d2,0xbdf6,0xb5b5,0xb594,0xad94,0xad94,0xad94,0xad94,0xadb4,0xadb4,0xad74,0xad95,0xbdf6,0xb5d6,0x634c,0x0040,0x2164,0x1903,0x10e2,0x10a1,0x0000,0x8c71,0xc616,0xb5d4,0xb5d5,0xb5b5,0xb5d5,0xb5d5,0xb5b5,0xb5d5,0xb5b5,0xb5b5,0xb5b5,0xbdf6,0xbdf7,0x6b6d,0x0040,0x2144,0x10e2,0x10c2,0x10a2,0x0000,0x7c30,0xbe16,0xb5d5,0xb5b5,0xb5d5,0xb5b5,0xadb5,0xb5d5,0xb5d5,0xb5b5,0xadb5,0xad94,0xbdf6,0xc638,0x6b8e,0x0000,0x2144,0x1903,0x08a2,0x10c2,0x0000,0x7c0f,0xbe17,0xadd5,0xadb4,0xad74,0xad94,0xb5b5,0xb5d5,0xb5b5,0xadb4,0xad74,0xad74,0xbdd6,0xbe17,0x8451,0x0000,0x1923,0x10c2,0x08a1,0x10c2,0x0000,0x636d,0xbe17,0xbdf6,0xb574,0xad94,0xadb5,0xb5b5,0xad94,0xad94,0xb5b5,0xb594,0xad94,0xb5d5,0xbe37,0x9cf2,0x00c2,0x2144,0x1903,0x10c2,0x18e2,0x0000,0x52aa,0xbdd6,0xbdd5,0xad74,0xad94,0xa553,0xad74,0xb5b5,0xad94,0xad94,0xa553,0xa553,0xad94,0xc637,0xadb5,0x29c5,0x08a1,0x1903,0x08a1,0x10e2,0x0000,0x4248,0xad95,0xb5f6,0xb5d5,0xb5b5,0xadb5,0xb5b5,0xb5b5,0xb5b5,0xadb5,0xad94,0xad74,0xb5b4,0xce57,0xad75,0x31a7,0x08c0,0x2144,0x10c2,0x10e3,0x0000,0x1104,0xad95,0xc657,0xb5b5,0xad94,0xad94,0xb5b5,0xad94,0xad94,0xb594,0xad74,0xad54,0xad74,0xc617,0xb5d6,0x52ca,0x0000,0x2164,0x1903,0x0881,0x0000,0x0000,0x9d13,0xc637,0xb594,0xb594,0xb5b5,0xad94,0xad94,0xb5b5,0xad94,0xad94,0xad94,0xadb5,0xbe37,0xbdf6,0x5aeb,0x0000,0x2985,0x2985,0x29a5,0x1903,0x0000,0x842f,0xbdd5,0xad73,0xa553,0xad74,0xad74,0xad94,0xad94,0xad94,0xad94,0xad94,0xad94,0xbe16,0xc658,0x634c,0x0000,0x2144,0x10c2,0x18e2,0x10c2,0x0000,0x9cf2,0xce57,0xad74,0xad74,0xad94,0xad74,0xad94,0xad94,0xad74,0xad73,0xad74,0xa553,0xb5b4,0xd699,0x94b3,0x0000,0x29a5,0x2143,0x18e3,0x18e2,0x0000,0x7c0f,0xc637,0xb5b5,0xad74,0xb5b4,0xad73,0xad73,0xad94,0xad94,0xad74,0xa553,0xad53,0xb595,0xc637,0x8430,0x0000,0x2965,0x2144,0x1903,0x1903,0x0000,0x73af,0xce78,0xbdd4,0xad32,0xad33,0xa513,0xad33,0xad33,0xa513,0xad33,0xa513,0xa513,0xad33,0xad33,0xad33,0xa513,0xa513,0xa513,0xad13,0xad33,0xa532,0xa532,0x9d33,0xa574,0xc657,0xa554,0x10e2,0x2144,0x2164,0x1903, +0x10c2,0x10c2,0x08a1,0x10c2,0x0860,0x0000,0x426a,0x73ef,0x7c50,0x8450,0x8450,0x8471,0x8470,0x8471,0x8471,0x8491,0x8471,0x8491,0x8471,0x8450,0x8491,0x8491,0x8471,0x8471,0x8491,0x8491,0x8491,0x8491,0x6b8e,0x1104,0x0040,0x2144,0x1903,0x18e2,0x10c2,0x10c2,0x0000,0x0000,0x52cb,0x8450,0x8491,0x8491,0x8491,0x8491,0x8491,0x8491,0x8491,0x8491,0x8471,0x6bcf,0x21a6,0x0000,0x2144,0x1903,0x1903,0x10a1,0x10c2,0x0881,0x0000,0x4248,0x740f,0x7c50,0x7c30,0x7c50,0x7c50,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x6b8d,0x2964,0x0000,0x1923,0x18e2,0x10c2,0x10c2,0x10a1,0x10c2,0x0000,0x3a08,0x6bcf,0x7c30,0x7c30,0x740f,0x7410,0x7c30,0x7c30,0x7c30,0x7410,0x7c30,0x73cf,0x29c7,0x0000,0x1924,0x10e2,0x10c2,0x08a1,0x08a2,0x10c2,0x0000,0x21c7,0x6bce,0x7c50,0x7c10,0x7c30,0x7c70,0x7c51,0x7c50,0x7c50,0x7c50,0x8451,0x73cf,0x39e8,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x08a1,0x18c3,0x0000,0x2987,0x73cf,0x8451,0x8491,0x8491,0x8471,0x8471,0x8471,0x8451,0x7c31,0x8451,0x7c30,0x4aeb,0x0000,0x2123,0x1923,0x10e2,0x10e2,0x0881,0x10c2,0x0000,0x0000,0x6bae,0x8450,0x8471,0x7c30,0x8450,0x8491,0x8451,0x8450,0x7c30,0x8450,0x7c30,0x5b0b,0x0000,0x10c2,0x1903,0x08a1,0x10a1,0x08a1,0x10e2,0x0000,0x0000,0x636d,0x7c50,0x8471,0x7c50,0x8471,0x7c50,0x7c50,0x7c50,0x7c50,0x7c30,0x7c4f,0x5b0b,0x0000,0x08a1,0x2123,0x18e2,0x10c2,0x08a1,0x10e2,0x0000,0x0000,0x5b4d,0x8471,0x8471,0x8450,0x8471,0x8471,0x8471,0x8471,0x8451,0x8450,0x8450,0x6b6d,0x0000,0x0000,0x2144,0x1903,0x10e2,0x0881,0x10a2,0x0841,0x0000,0x5b0c,0x8450,0x8c71,0x8471,0x7c71,0x8471,0x8471,0x7c71,0x7c50,0x8450,0x8491,0x6bce,0x0103,0x0000,0x2985,0x2144,0x2985,0x29a5,0x2143,0x18e2,0x0000,0x4248,0x7bee,0x7c30,0x7c50,0x8450,0x7c50,0x7c30,0x7c30,0x7c50,0x7c51,0x7c30,0x73ef,0x2985,0x0000,0x1923,0x10e2,0x10e2,0x10c2,0x10e2,0x10e1,0x0000,0x5acb,0x8c91,0x8cd2,0x94d2,0x94d2,0x94d2,0x94f2,0x94d2,0x94d2,0x94d2,0x94d2,0x9491,0x5aab,0x0000,0x2165,0x2164,0x1903,0x18e3,0x10e2,0x1903,0x0000,0x3a29,0x7c30,0x8c91,0x8cb2,0x8c91,0x8c91,0x8cb2,0x8cb2,0x8c91,0x8471,0x8471,0x7c10,0x4249,0x0000,0x2945,0x2124,0x2124,0x1903,0x18e3,0x2123,0x0000,0x4a8a,0x94b1,0x9cd2,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x94f2,0x94f2,0x94f3,0x94f3,0x638e,0x0000,0x1903,0x2144,0x1923,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x2103,0x10e2,0x10e2,0x10e2,0x10c2,0x10c1,0x10c1,0x10e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x1923,0x18e2,0x10e2,0x10e2,0x10a1,0x0881,0x08a2,0x10e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10c2,0x10e2,0x10c2,0x10c2,0x08a1,0x10a1,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e1,0x10e1,0x10e2,0x10c2,0x08a1,0x08a2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x10e2,0x10c2,0x10c2,0x08a1,0x08a1,0x08a1,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1903,0x10e2,0x10e2,0x10c2,0x10c2,0x10a1,0x10e2,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10a1,0x0881,0x10c2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e3,0x1903,0x18e2,0x10c2,0x10e2,0x10c2,0x08a1,0x10e2,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c0,0x1902,0x1102,0x10e2,0x10c2,0x08a1,0x0881,0x10a1,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x2144,0x1923,0x2984,0x2984,0x1923,0x10c1,0x10c2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x1903,0x08a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10c1,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2145,0x2124,0x1903,0x1903,0x18e3,0x18e2,0x10c2,0x2123,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2964,0x2143,0x2123,0x1923,0x1923,0x1903,0x1903,0x2143,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2124,0x1903,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1902,0x2123,0x2144,0x2124,0x2124,0x2144,0x2965,0x2985,0x2964,0x2964,0x2964,0x2964,0x2944,0x2964,0x2944,0x2964,0x2964,0x2944,0x2144,0x2144,0x2144,0x2144,0x2964,0x2123,0x2143,0x2123,0x2123,0x2103,0x18e2,0x10c2,0x10c2,0x10c2,0x1903,0x1903,0x2124,0x2123,0x2144,0x2144,0x2144,0x2964,0x2165,0x2144,0x2144,0x2144,0x2123,0x1903,0x1903,0x1903,0x2123,0x18e3,0x10e2,0x10e2,0x10c2,0x18e2,0x1903,0x2124,0x1923,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x10c2,0x10c2,0x10e2,0x1903,0x1923,0x1923,0x1923,0x1923,0x2123,0x2144,0x2164,0x2144,0x2124,0x2144,0x2144,0x2124,0x18e3,0x1903,0x1903,0x1903,0x1903,0x18e3,0x10c2,0x10c1,0x18e2,0x1904,0x1924,0x1923,0x1923,0x2144,0x2965,0x2964,0x2164,0x2144,0x2144,0x2144,0x2124,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e3,0x1903,0x2123,0x2124,0x2124,0x2164,0x2985,0x2164,0x2144,0x2164,0x2144,0x2144,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903,0x10c3,0x10c2,0x10c1,0x18e2,0x18e3,0x1903,0x1923,0x1903,0x2123,0x2144,0x2964,0x2144,0x2144,0x2144,0x2124,0x2124,0x1903,0x1903,0x18e3,0x1903,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x1923,0x1923,0x2144,0x1923,0x2123,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2103,0x1903,0x1903,0x1903,0x1923,0x1902,0x10c2,0x10c2,0x18e2,0x2123,0x2123,0x1923,0x2124,0x2124,0x2144,0x2964,0x2144,0x2144,0x2144,0x2144,0x2144,0x1903,0x18e3,0x1903,0x1903,0x1903,0x10c2,0x10a1,0x08a1,0x10c2,0x1903,0x1903,0x1903,0x2124,0x2124,0x2144,0x2144,0x2144,0x2164,0x2144,0x2164,0x2144,0x2124,0x2124,0x2164,0x2984,0x1903,0x10e2,0x10c1,0x10c1,0x10a1,0x10c2,0x18e3,0x1903,0x1903,0x1903,0x2124,0x2144,0x2144,0x2164,0x2964,0x2144,0x2164,0x2164,0x1903,0x18e2,0x1902,0x1923,0x1903,0x10e2,0x1902,0x1903,0x2124,0x2124,0x2124,0x2144,0x2964,0x2965,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2144,0x2144,0x2964,0x2144,0x2123,0x1903,0x1903,0x18e2,0x2143,0x2164,0x2144,0x2144,0x2944,0x2965,0x2985,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2144,0x2144,0x2144,0x2144,0x2124,0x1903,0x1903,0x2103,0x2144,0x2965,0x2165,0x2164,0x2944,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2945,0x2945,0x2144,0x2104,0x2103,0x2124,0x2123,0x2164,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x18e2,0x18e3,0x1902,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x1923,0x10c2,0x10c2,0x18e3,0x10c2,0x10a2,0x1902,0x1103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1924,0x1103,0x10c2,0x10c2,0x10c2,0x10e2,0x10e3,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2123,0x10e2,0x10c2,0x10c2,0x10c2,0x08c1,0x08e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x1923,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x1903,0x10c2,0x10e2,0x10e2,0x18e2,0x10e2,0x1924,0x0882,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1903,0x10e2,0x10c2,0x10e2,0x10c1,0x10c1,0x1903,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c2,0x1923,0x10c2,0x10e2,0x10e3,0x10c2,0x08c1,0x10e2,0x10e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x2144,0x1102,0x1902,0x10e2,0x10e2,0x10c2,0x1903,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2123,0x10c2,0x18e3,0x10a2,0x10a1,0x10a2,0x10e2,0x1923,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x18e2,0x10c2,0x10c2,0x10a1,0x08c1,0x10c2,0x2103,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2123,0x2103,0x1903,0x10e2,0x10c2,0x18e2,0x2144,0x1102,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2964,0x2144,0x2124,0x1923,0x2124,0x2924,0x2123,0x2123,0x20c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2145,0x2124,0x2124,0x1904,0x1924,0x1924,0x2945,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x10a1,0x0000,0x426a,0x842f,0x8c6f,0x8c8f,0x8c90,0x9491,0x9491,0x9491,0x9491,0x8c91,0x8c90,0x94b1,0x8c91,0x8c90,0x9490,0x9c90,0x9c91,0x9c91,0x9cb1,0x9cb0,0x9cd0,0x94b2,0x7bcf,0x2144,0x0000,0x2123,0x10e2,0x10e2,0x10c2,0x10c2,0x0060,0x0000,0x52ca,0x840e,0x840f,0x8430,0x8430,0x8430,0x8430,0x8450,0x8430,0x8430,0x8c51,0x73af,0x39e8,0x0000,0x1924,0x1903,0x10e2,0x10c2,0x10c2,0x10a2,0x0000,0x4248,0x7bef,0x840f,0x7bef,0x8410,0x8430,0x8430,0x8430,0x8430,0x8410,0x8430,0x7bef,0x3a08,0x0000,0x2124,0x1903,0x18c2,0x18c2,0x08c2,0x10e2,0x0000,0x3186,0x6b8e,0x7bef,0x8430,0x8430,0x8450,0x8c50,0x8450,0x8450,0x8c50,0x8c71,0x8430,0x52ca,0x0000,0x10e3,0x1923,0x10e2,0x10e2,0x10c2,0x18e3,0x0000,0x31c7,0x7c0f,0x8430,0x8c51,0x8c71,0x8c71,0x8c71,0x8430,0x8430,0x8450,0x8c70,0x842f,0x5b0b,0x0000,0x0080,0x1923,0x10c2,0x10e2,0x10e2,0x1923,0x0000,0x2965,0x840f,0x8c90,0x8c91,0x9491,0x9491,0x8c71,0x8c91,0x8c51,0x8c71,0x8c91,0x8c50,0x634d,0x0000,0x0020,0x1923,0x1103,0x08c2,0x08a1,0x18e2,0x0000,0x0000,0x5b2b,0x842f,0x840e,0x842e,0x842e,0x842f,0x840e,0x842f,0x842e,0x7c0e,0x842f,0x6b6c,0x08c2,0x0040,0x1923,0x18e3,0x10e3,0x08a1,0x18e2,0x0000,0x0000,0x632c,0x8430,0x8c50,0x8c70,0x8c71,0x8c50,0x8c70,0x8c71,0x8c71,0x8c50,0x8c90,0x7bee,0x2165,0x0000,0x2144,0x1902,0x1903,0x10a1,0x10c2,0x0880,0x0000,0x5aeb,0x8430,0x8430,0x842f,0x8430,0x8450,0x8c50,0x8c50,0x8c50,0x8c4f,0x8c70,0x7c0f,0x31e7,0x0000,0x2123,0x1903,0x10a1,0x0881,0x10c2,0x08a1,0x0000,0x52ca,0x844f,0x8c90,0x8c70,0x8c50,0x8c70,0x8c70,0x8c50,0x8c50,0x842f,0x842f,0x7bee,0x3a27,0x0000,0x1903,0x18e3,0x10a2,0x10a2,0x08a0,0x18e2,0x0000,0x2166,0x738d,0x7c0f,0x7c0f,0x8430,0x840f,0x840f,0x7c0f,0x7bef,0x7bee,0x7c0f,0x73cf,0x3a28,0x0000,0x2124,0x2144,0x18e3,0x1081,0x10a1,0x2103,0x0000,0x1125,0x6b8e,0x842f,0x842f,0x8430,0x8450,0x8430,0x8430,0x7c0f,0x7c2f,0x844f,0x7bce,0x52aa,0x0000,0x2965,0x2965,0x2124,0x2123,0x2103,0x2944,0x0000,0x0184,0x638d,0x7bef,0x7c0f,0x7c2f,0x840f,0x840f,0x840f,0x8410,0x840f,0x842f,0x7c0f,0x530c,0x0000,0x1903,0x2964,0x2124,0x2123,0x1903,0x2124,0x0000,0x0000,0x5b2b,0x73ce,0x73ae,0x73ee,0x73ce,0x6bad,0x73ce,0x73ce,0x73cf,0x7bef,0x7bee,0x52aa,0x0000,0x10e2,0x2124,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e3,0x10a2,0x10e1,0x10c1,0x00c2,0x944d,0xe654,0xf6f5,0xf6d3,0xf6d3,0xf6d3,0xf6d3,0xf6f3,0xf6d3,0xf6d3,0xf6b3,0xf6d3,0xf6f3,0xf6f3,0xf6d3,0xf6d3,0xf6b2,0xf6b2,0xf6b2,0xf6b2,0xf6b2,0xf6b2,0xf6b3,0xf6b4,0xce15,0x5b6d,0x0000,0x1923,0x10e2,0x10c2,0x0020,0x1904,0x9490,0xbdf5,0xb593,0xa513,0xad33,0xa533,0xa533,0xad33,0xa533,0xad53,0xad34,0xad54,0xbdb6,0xbdf6,0x7bee,0x0000,0x2144,0x18e3,0x10e2,0x10c2,0x0000,0x840f,0xbdf6,0xb594,0xad53,0xad33,0xad53,0xad53,0xad74,0xb574,0xb574,0xad74,0xad54,0xb5b5,0xc617,0x8c51,0x08a1,0x2144,0x18e2,0x10a2,0x10e2,0x0000,0x632b,0xb594,0xbdb5,0xa513,0xa512,0xa533,0xad53,0xad54,0xad53,0xad53,0xad53,0xad33,0xb574,0xc637,0xa534,0x2165,0x1924,0x1923,0x10e2,0x1903,0x0000,0x6b6d,0xbdf7,0xbdd5,0xad53,0xa533,0xa533,0xad33,0xad33,0xa512,0xa512,0xa512,0x9cf1,0xa532,0xc637,0xad75,0x2986,0x10c1,0x1903,0x10c2,0x18e2,0x0000,0x632b,0xce37,0xc615,0xa532,0xad53,0xad53,0xad53,0xa533,0xa533,0xa513,0xad33,0xa513,0xa533,0xc617,0xb595,0x4248,0x08a1,0x1923,0x10e2,0x18e3,0x0000,0x4207,0xb5b5,0xc616,0xad53,0xad32,0xad52,0xad32,0xa532,0xa532,0xad32,0xa532,0xa511,0xa531,0xbdb4,0xbdd5,0x52ca,0x0020,0x2144,0x18e2,0x10e2,0x0020,0x10e2,0xa533,0xce37,0xad53,0xa512,0xa532,0xad33,0xa532,0xad33,0xad53,0xad53,0xad33,0xa532,0xc616,0xc617,0x634d,0x0000,0x2144,0x10c2,0x10e2,0x0860,0x0000,0x9cf2,0xce57,0xb595,0xad53,0xad53,0xad33,0xad53,0xad53,0xad53,0xad33,0xad32,0xa532,0xbdf6,0xce78,0x8430,0x0000,0x2144,0x08a1,0x08a1,0x0881,0x0000,0x94b1,0xce77,0xb5b4,0xad53,0xad53,0xad53,0xad73,0xb574,0xad53,0xad53,0xad53,0xa532,0xb595,0xce58,0x8c50,0x0000,0x2124,0x0881,0x0881,0x18e2,0x0000,0x73ad,0xd656,0xde14,0xcdf3,0xcdf4,0xd5d5,0xcdd4,0xcdd3,0xcdd4,0xc5b3,0xc592,0xc5b3,0xce15,0xce57,0x8c91,0x0060,0x29a5,0x18e2,0x0820,0x18e2,0x0000,0x736d,0xce15,0xd635,0xcdf3,0xcdd3,0xcdd5,0xcdd4,0xcdd3,0xcdd4,0xbd93,0xc5d3,0xcdf3,0xcdb4,0xd657,0xa553,0x0122,0x2944,0x2945,0x1902,0x2143,0x0000,0x5b0b,0xc5f6,0xce15,0xc593,0xc593,0xc5d3,0xcdb3,0xcd93,0xcdb3,0xcdb4,0xc593,0xcdb2,0xc5d4,0xce37,0xad54,0x31a5,0x2144,0x2964,0x1903,0x2144,0x0000,0x4a69,0xbdb4,0xd635,0xc5b3,0xc593,0xc5b3,0xbd92,0xbd92,0xc593,0xc5b3,0xc5b3,0xc593,0xcdf4,0xde98,0xad55,0x10e3,0x1923,0x2144,0x1903,0x18e3,0x18e2,0x10e2,0x18e3,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e3,0x10c2,0x18e1,0x0000,0x7bec,0xee4f,0xfe69,0xfdc2,0xf560,0xf540,0xed40,0xed40,0xf540,0xed40,0xed20,0xed20,0xed20,0xed20,0xf540,0xf540,0xed20,0xe540,0xed40,0xed40,0xe540,0xed20,0xed20,0xed40,0xdd00,0xd5f1,0xbdf6,0x4289,0x10c1,0x1923,0x10c2,0x0000,0x8450,0xbdd4,0x736a,0x2080,0x2060,0x1800,0x1800,0x1000,0x1000,0x1000,0x1800,0x1840,0x1000,0x28e0,0x840e,0xc637,0x738d,0x0000,0x2144,0x10e3,0x0000,0x6b6c,0xbdb5,0x840e,0x28e0,0x1860,0x1860,0x1820,0x1000,0x1000,0x1860,0x20a0,0x20c0,0x20a0,0x1860,0x83ee,0xce58,0x7c10,0x0000,0x2144,0x18e2,0x0000,0x4248,0xb593,0x946e,0x39a0,0x1860,0x1000,0x1820,0x1800,0x1000,0x1800,0x1800,0x1000,0x1800,0x0000,0x630a,0xce58,0x9cf3,0x0000,0x2144,0x1903,0x0000,0x4a89,0xc616,0xa4d0,0x2920,0x20a0,0x20c0,0x1800,0x0800,0x0800,0x1800,0x1800,0x0800,0x0000,0x0000,0x4a67,0xc638,0xad75,0x0000,0x2123,0x1903,0x0000,0x4228,0xce57,0xad52,0x30e0,0x2040,0x1000,0x1000,0x1000,0x0800,0x0800,0x0800,0x0000,0x0800,0x0000,0x39a1,0xb5b5,0xb5b6,0x10c1,0x1903,0x1903,0x10c2,0x0000,0xb5b4,0xce36,0x5a87,0x1800,0x28a0,0x2080,0x2040,0x1800,0x1800,0x1000,0x1000,0x1000,0x0800,0x2900,0xad53,0xbe17,0x31e7,0x1902,0x1903,0x10c2,0x0000,0xa533,0xc616,0x62a6,0x2080,0x1820,0x1000,0x0800,0x1800,0x1800,0x1000,0x1800,0x1800,0x1000,0x0000,0xa533,0xce79,0x4a89,0x0080,0x1903,0x18e3,0x0000,0x8cb2,0xce36,0x6b28,0x1820,0x1000,0x2040,0x1820,0x1800,0x1000,0x1000,0x1000,0x1800,0x1000,0x1000,0x9491,0xd6ba,0x636d,0x0000,0x1923,0x18e3,0x0000,0x8430,0xd698,0x7bcc,0x1800,0x2000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1000,0x1000,0x0000,0x8c0f,0xd6da,0x7c0f,0x0000,0x2123,0x10a2,0x0000,0x5aeb,0xdeb7,0xc550,0x82c0,0x8260,0x8a40,0x8a00,0x8a20,0x8280,0x8260,0x8260,0x8260,0x7a40,0x7200,0x9c4e,0xe719,0x8c90,0x0000,0x18e2,0x18c2,0x0000,0x4249,0xe6b7,0xe5f1,0xc460,0xc460,0xc440,0xc420,0xcc20,0xab40,0x8200,0x8260,0x8260,0x8220,0x7200,0x836a,0xde98,0xa533,0x0000,0x3186,0x2163,0x0000,0x4a28,0xd656,0xdd91,0xb3e0,0xbc20,0xbc00,0xbbc0,0xbbe0,0xa320,0x8220,0x8240,0x7a60,0x79c0,0x71e0,0x8307,0xd657,0xad95,0x0000,0x2985,0x2144,0x0881,0x2144,0xce16,0xd5f4,0x9305,0x8220,0x8220,0x8220,0x8240,0x8240,0x8200,0x8220,0x8200,0x7a00,0x7a20,0x8b8b,0xe6b9,0xad95,0x0000,0x2985,0x2124,0x1903,0x18e3,0x18e2,0x18e3,0x18e3,0x10e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x1103,0x1902,0x0800,0x29c6,0xb50d,0xee09,0xfe64,0xfe05,0xfd84,0xf564,0xf563,0xed64,0xf584,0xed64,0xed44,0xed44,0xf564,0xed64,0xf584,0xf584,0xed64,0xed43,0xed64,0xf564,0xf564,0xed63,0xe563,0xe564,0xe521,0xc460,0xbd71,0x8451,0x0880,0x1923,0x0000,0x29a6,0x9d12,0x83ec,0x3940,0x41c2,0x3981,0x3961,0x3961,0x3981,0x4182,0x3981,0x3981,0x3981,0x3982,0x3121,0x0000,0x9490,0xa533,0x1103,0x1944,0x08c2,0x0020,0x9cd1,0x8c4e,0x2880,0x41a1,0x4182,0x3981,0x4182,0x4182,0x41a2,0x41a2,0x4181,0x3981,0x4181,0x39a2,0x0000,0x8c30,0xb5b6,0x2165,0x1902,0x1903,0x0000,0x842f,0x9cd1,0x3960,0x4181,0x41a2,0x4182,0x41a2,0x41a2,0x4182,0x3982,0x3982,0x3982,0x3982,0x41a3,0x0000,0x738c,0xc617,0x4a89,0x0080,0x2123,0x0000,0x8cb1,0xb573,0x3920,0x3981,0x41c2,0x41a2,0x4182,0x41a2,0x41a2,0x4182,0x4182,0x3961,0x3941,0x39a3,0x0000,0x62eb,0xc658,0x52ea,0x0000,0x2124,0x0000,0x8c71,0xbdd5,0x3940,0x4180,0x49c2,0x4182,0x41a2,0x41a2,0x41a2,0x41a2,0x4182,0x3981,0x3981,0x3983,0x0000,0x39c6,0xbe17,0x73ae,0x0000,0x2144,0x0000,0x634b,0xc635,0x62e8,0x2800,0x49c3,0x41a1,0x4181,0x4181,0x3961,0x3961,0x3961,0x3961,0x3961,0x3962,0x2080,0x0000,0xbe17,0x8c71,0x0000,0x2944,0x0000,0x4289,0xbdf5,0x7b8a,0x3060,0x49e3,0x41a2,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x4182,0x4181,0x41a2,0x2920,0x0000,0xbe16,0x9cf2,0x0000,0x2144,0x0000,0x31c6,0xbdf7,0x840e,0x1800,0x49e4,0x4181,0x41a1,0x4182,0x4181,0x4182,0x41a2,0x41a2,0x4181,0x4181,0x3982,0x0000,0xa554,0xad95,0x0000,0x2144,0x0881,0x0000,0xbdd6,0x94b0,0x0000,0x49e3,0x4181,0x3961,0x4182,0x4182,0x3981,0x4182,0x4181,0x3961,0x3981,0x3983,0x0000,0x9d13,0xbe17,0x08c0,0x1903,0x18c2,0x0000,0xbd73,0xddf2,0x8200,0x9281,0x8a82,0x8a81,0x7a00,0xac2a,0xcdf2,0x9327,0x8220,0x8aa1,0x8281,0x8242,0x4000,0xbd31,0xce56,0x1165,0x10c1,0x2103,0x0000,0x9cf2,0xe634,0xdcc0,0xf5c5,0xc465,0xc4e5,0xe5c3,0xfd84,0xd465,0x7a60,0x8304,0xb46a,0x9305,0x8240,0x5000,0x93ed,0xd678,0x4269,0x10c2,0x2963,0x0000,0x9c70,0xe653,0xd4a0,0xedc5,0xd526,0xcca6,0xed84,0xed85,0xc464,0x8a81,0x8a81,0x8ae3,0xacad,0x8b26,0x5000,0x7b49,0xce79,0x5b2c,0x0000,0x2965,0x0000,0x842f,0xe676,0x82a0,0x8240,0x8ac2,0x9345,0x82a2,0x8aa0,0x8280,0x8ac1,0x8ac2,0x8ae4,0x92e3,0x8261,0x5000,0x7b4a,0xd6b9,0x5b0b,0x08a1,0x2964,0x1923,0x1903,0x18e3,0x18e2,0x18e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x1102,0x1903,0x0000,0x4aaa,0xbd2e,0xfe26,0xfe87,0xfe05,0xfda4,0xf584,0xed83,0xe583,0xed83,0xe563,0xe563,0xe543,0xed64,0xed63,0xed62,0xed83,0xe563,0xe543,0xe563,0xe563,0xe563,0xe542,0xdd64,0xdd43,0xe504,0xd4c0,0xbd2e,0x8cb1,0x2143,0x1903,0x0000,0x4269,0x94b0,0x6ae7,0x49e3,0x41c2,0x4180,0x3960,0x3960,0x3960,0x3140,0x41a1,0x4181,0x3960,0x3960,0x3962,0x1000,0x634b,0xa554,0x4228,0x1902,0x0060,0x1965,0x94d1,0x7bab,0x49c0,0x41c3,0x4181,0x4181,0x3961,0x1800,0x1000,0x3100,0x3981,0x3960,0x3940,0x3962,0x1840,0x5aca,0xad95,0x4aa9,0x0060,0x18e3,0x0000,0x8c51,0x840d,0x49e0,0x49e4,0x41a1,0x41a0,0x3160,0x3140,0x3920,0x4161,0x41a1,0x3960,0x3940,0x3961,0x2900,0x39c5,0xb5b5,0x6b6d,0x0000,0x1903,0x0000,0x9d13,0x9490,0x4180,0x4a03,0x3980,0x3961,0x3940,0x3100,0x30c0,0x2860,0x28c0,0x3940,0x3940,0x3941,0x2900,0x3163,0xb5d5,0x6bae,0x0000,0x2123,0x0000,0x94f2,0xad32,0x4180,0x4a03,0x41a1,0x4181,0x41a2,0x3940,0x2000,0x30a0,0x3981,0x3980,0x3940,0x3941,0x3943,0x0800,0xb5b5,0x94b1,0x0000,0x2964,0x0000,0x842f,0xad52,0x41c0,0x49e3,0x49c2,0x4181,0x3961,0x3960,0x3940,0x4160,0x3140,0x3140,0x3940,0x3940,0x3162,0x0000,0xa533,0xa534,0x0000,0x2985,0x0000,0x6b6d,0xad74,0x5a85,0x5203,0x49c2,0x4181,0x3961,0x3960,0x4180,0x3960,0x3960,0x4160,0x3980,0x3960,0x3983,0x0000,0x9cd1,0xa533,0x0000,0x2144,0x0000,0x52aa,0xbdd5,0x6b28,0x49a1,0x49c3,0x41a1,0x3940,0x3140,0x39a1,0x41a2,0x30e0,0x3920,0x4180,0x3160,0x3983,0x0000,0x7bef,0xb5f6,0x2984,0x18e3,0x0000,0x31c7,0xbdf6,0x7b8b,0x41a0,0x41e2,0x41a1,0x4180,0x3120,0x3960,0x4180,0x3980,0x3961,0x3960,0x3960,0x3983,0x0000,0x6b8d,0xc637,0x4a89,0x08a1,0x1080,0x0001,0xcdf6,0xccee,0x9aa0,0x9303,0x82c1,0x8281,0x7a60,0x9367,0xac6c,0x8ac4,0x8260,0x8281,0x7a60,0x7a62,0x69a0,0x8b8b,0xd678,0x4aa9,0x10c2,0x2102,0x0000,0xad33,0xdd6f,0xf5a0,0xc4e5,0x0004,0x2145,0xa403,0xe585,0xcc84,0x8280,0x7a40,0xac29,0xa42a,0x7a20,0x7a00,0x6a44,0xcdf6,0x738e,0x0000,0x2963,0x0000,0xad13,0xe5d0,0xf5a0,0xbca5,0x39a5,0x3163,0xbca4,0xed85,0xc444,0x8a61,0x8240,0xa3ea,0xd614,0xa42d,0x71c0,0x61c0,0xc5f8,0x8431,0x0000,0x3185,0x0000,0xa533,0xd5b1,0x8a60,0x9304,0xac4a,0xa409,0x8b45,0xbcee,0x9beb,0xb4ad,0xbcac,0xac8c,0xa44a,0x7a82,0x7a40,0x59c0,0xbdf7,0x8450,0x0000,0x2985,0x1923,0x1903,0x18e2,0x18e2,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x4aca,0xc52e,0xfe26,0xfe67,0xfe06,0xfda4,0xf563,0xed64,0xed44,0xed43,0xed44,0xed43,0xe562,0xe542,0xe542,0xe562,0xe563,0xe563,0xe543,0xe543,0xe543,0xe543,0xe542,0xe563,0xdd42,0xe503,0xd4e0,0xbd4f,0x8c91,0x2964,0x1923,0x0000,0x3a69,0x9490,0x7308,0x49e3,0x41c2,0x4180,0x3980,0x3961,0x41a0,0x49e1,0x3960,0x3981,0x3960,0x3960,0x3142,0x0000,0x6b6c,0xa554,0x4a48,0x1922,0x0040,0x1945,0x9cf2,0x7bab,0x4180,0x41e3,0x41a0,0x3140,0x3941,0x7bac,0x8c0d,0x5a66,0x28c0,0x3981,0x3960,0x3941,0x1800,0x5aca,0xa533,0x4a89,0x10c1,0x18e2,0x0000,0x8c51,0x8c2e,0x49e0,0x41e3,0x41a1,0x4180,0x41c1,0x4a45,0x5246,0x3100,0x28a0,0x4161,0x3940,0x3941,0x2080,0x41e5,0xb5b5,0x6b6d,0x0000,0x1903,0x0000,0x9d13,0x94b0,0x4160,0x49e3,0x41a1,0x3960,0x41c3,0x5a86,0x62c8,0x62e8,0x5aa7,0x3982,0x3120,0x3121,0x1840,0x41a4,0xb5b5,0x6bae,0x0000,0x1923,0x0000,0x94d2,0xad32,0x4160,0x4203,0x41c2,0x41a2,0x2060,0x49c2,0x736a,0x62e8,0x20c0,0x2900,0x3960,0x3120,0x3121,0x1000,0xb5b4,0x94b1,0x0000,0x2964,0x0000,0x7c0e,0xa531,0x4a02,0x49c2,0x49c2,0x3981,0x3980,0x3980,0x4161,0x3940,0x39a1,0x3961,0x3920,0x3140,0x3142,0x0000,0xa513,0xa513,0x0000,0x2985,0x0000,0x6b6d,0xb574,0x5aa6,0x4a02,0x49e3,0x4181,0x3960,0x3980,0x4180,0x41c2,0x41c2,0x3940,0x3980,0x3160,0x3942,0x0000,0x9cb1,0xa533,0x0000,0x2123,0x0000,0x52aa,0xbdd5,0x6b49,0x4160,0x49c3,0x4180,0x49e3,0x5224,0x39a2,0x2080,0x62a7,0x5a66,0x3920,0x3141,0x3162,0x0000,0x7bce,0xb5d6,0x31c5,0x18e3,0x0000,0x31e7,0xbdf6,0x7b8b,0x4180,0x41e3,0x4180,0x41a1,0x5246,0x41c3,0x3940,0x3980,0x3960,0x3940,0x3140,0x3162,0x0000,0x73ad,0xc637,0x4a89,0x1903,0x0820,0x0042,0xc636,0xc4ee,0x9aa0,0x8b04,0x8ac1,0x8aa0,0x8a60,0x8aa1,0x8ac2,0x8280,0x8260,0x8260,0x8240,0x7a41,0x6120,0x93ac,0xd657,0x52c9,0x10c2,0x2123,0x0000,0xa533,0xdd8f,0xeda0,0xcd25,0x41a2,0x4a04,0xac43,0xdd84,0xc464,0x8a40,0x8240,0x8280,0xb46b,0x8b27,0x6980,0x6a64,0xc637,0x73ef,0x0000,0x2984,0x0000,0xad33,0xedd0,0xed81,0xc486,0x49e4,0x29a2,0xbc84,0xe564,0xc444,0x8a60,0x8b05,0xbd0e,0x8bc8,0xac6d,0x8b28,0x59a0,0xbdf5,0x7c2f,0x0000,0x31a5,0x0000,0xa533,0xd5b1,0x92a0,0x9b25,0xbc8b,0xa3c9,0xa409,0xcd90,0xb4ce,0xbd0e,0x9bea,0xa40a,0xb4ac,0x82e4,0x71c0,0x61e1,0xbdf6,0x8450,0x0000,0x31a5,0x2123,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1102,0x1903,0x0000,0x4aca,0xc54e,0xfe26,0xfe87,0xfe26,0xfda4,0xf583,0xed63,0xe562,0xdd83,0xdd44,0xe564,0xdd62,0xdd43,0xdd43,0xe543,0xed43,0xed43,0xe543,0xe543,0xe543,0xe542,0xe542,0xe543,0xdd42,0xe503,0xd500,0xc56f,0x8470,0x2964,0x2124,0x0000,0x4269,0x9490,0x7307,0x4a03,0x41e2,0x41a0,0x41a1,0x28c0,0xb573,0xce36,0x5246,0x3100,0x4181,0x3940,0x3142,0x0000,0x6b8c,0xa575,0x4a68,0x1922,0x0040,0x1945,0x9cf2,0x7bab,0x4180,0x49e3,0x41a0,0x41c0,0xad12,0xc5d5,0xbd73,0xce15,0x7bab,0x2060,0x3982,0x3941,0x1800,0x5aca,0xa533,0x4a89,0x1902,0x18e2,0x0000,0x8c71,0x8c4e,0x41c0,0x4a04,0x3940,0x62a7,0xc5d4,0xbdd4,0xbdd4,0xb593,0x62c8,0x28a0,0x3961,0x3140,0x2060,0x4206,0xb5d6,0x6b6d,0x0000,0x1903,0x0000,0x9d12,0x948f,0x4160,0x49e3,0x41a2,0x2840,0x7bad,0xce57,0xbdd5,0xbdb4,0xb532,0x4a05,0x28e0,0x3941,0x2080,0x39a4,0xb5b5,0x73ce,0x0000,0x1903,0x0000,0x94d2,0xa512,0x4160,0x4a24,0x49e3,0x30e0,0x7b8b,0xc5f5,0xbdd5,0xc615,0xad51,0x49e4,0x3100,0x3941,0x2900,0x1800,0xb5b4,0x94b1,0x0000,0x2964,0x0000,0x7bee,0xa531,0x49e1,0x49e2,0x49c2,0x28a0,0x9c8e,0x9caf,0x2060,0x41a2,0xad31,0x83ec,0x1800,0x3141,0x3142,0x0000,0xa513,0x9d13,0x0020,0x31a5,0x0000,0x6b6d,0xb574,0x5a85,0x4a02,0x49e3,0x41a1,0x4181,0x3981,0x2800,0xa4d0,0x948f,0x1800,0x3982,0x3140,0x3942,0x0000,0x9cb1,0xa533,0x0000,0x2144,0x0000,0x52aa,0xbdd5,0x6b28,0x49c1,0x49e4,0x2020,0x9cb0,0xb552,0x0000,0x946f,0xc5f4,0x62e8,0x28a0,0x3961,0x3162,0x0000,0x73ae,0xb5d6,0x31c5,0x18e3,0x0000,0x31c7,0xbdf6,0x736a,0x4180,0x4a03,0x3120,0x6287,0xc5d5,0x7bac,0x2000,0x39a1,0x3960,0x3940,0x3140,0x3162,0x0000,0x73ae,0xc658,0x4a68,0x1903,0x1060,0x0043,0xc616,0xc4ce,0x9ac0,0x9b05,0x92c4,0x8ac4,0x7a00,0xac2b,0xd5b1,0x8b06,0x7a40,0x8263,0x7a62,0x7a63,0x6980,0x8b8b,0xce37,0x52ca,0x0081,0x2103,0x0000,0xad33,0xdd6e,0xed42,0xfe06,0xcce5,0xcd05,0xe564,0xe544,0xc445,0x8242,0x8a83,0x7240,0x9388,0xa40a,0x69c0,0x7284,0xce57,0x73ef,0x0000,0x2143,0x0000,0xb532,0xe5af,0xf562,0xfdc7,0xd4e6,0xbca5,0xdd45,0xdd45,0xbc65,0x7a40,0xac4b,0xacad,0x69e0,0x9369,0xa40b,0x59c0,0xc617,0x8430,0x0000,0x31a5,0x0000,0xa553,0xd5b2,0x92c0,0x9305,0x9ba8,0xa3e9,0x9b67,0x9326,0x9b87,0x9345,0x7a60,0x8b46,0x9388,0x7a83,0x7220,0x6223,0xbdf6,0x8430,0x0000,0x31a5,0x2124,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10e2,0x10e2,0x18e3,0x1102,0x18e3,0x0000,0x4acb,0xc54f,0xfe46,0xfe87,0xfe26,0xfdc4,0xed83,0xe563,0xdd84,0x9c43,0x9382,0xac24,0x8b41,0x9bc4,0x93a3,0x93a2,0xa3e3,0xc482,0xe563,0xe543,0xe543,0xe542,0xe542,0xe543,0xdd42,0xdd03,0xd4e0,0xc54f,0x8471,0x2964,0x2124,0x0000,0x4289,0x8c90,0x6ae7,0x4a03,0x41e2,0x41c1,0x3100,0x62e8,0xd698,0xded9,0x8c2f,0x2000,0x41a2,0x3940,0x3142,0x0000,0x73ad,0xa574,0x4248,0x1922,0x0040,0x1965,0x94d1,0x7b8a,0x41a0,0x4a04,0x30a0,0x6b08,0xd677,0x73ac,0x0000,0x8c0e,0x83ec,0x28e0,0x3940,0x3961,0x1800,0x5aea,0xad74,0x52aa,0x10e2,0x18e2,0x0000,0x8c71,0x8c2e,0x41c0,0x5244,0x28c0,0x736a,0xd677,0x840e,0x5ac8,0xc615,0xbdd4,0x28e0,0x3120,0x3141,0x2060,0x4a06,0xb5b6,0x6b6d,0x0020,0x1903,0x0000,0x9cf2,0x946f,0x4160,0x49e3,0x41c2,0x1000,0x8c6e,0xce76,0x4a65,0x2920,0x4a04,0x3161,0x3120,0x3121,0x2060,0x41a4,0xb5b5,0x73ce,0x0000,0x1903,0x0000,0x94d2,0xa4f1,0x4160,0x4a24,0x4180,0x5265,0xce56,0xb553,0x1880,0x630a,0xb593,0x736a,0x2000,0x3941,0x3120,0x1800,0xbdd5,0x94b1,0x0000,0x2964,0x0000,0x7bee,0xa531,0x41c0,0x49c2,0x49e3,0x1800,0xb572,0xb573,0x0000,0x1800,0xc615,0x948f,0x0000,0x3962,0x3121,0x0000,0xa513,0x9d13,0x00a0,0x31c6,0x0000,0x6b6d,0xad74,0x5aa5,0x5202,0x4a03,0x41c2,0x41a1,0x41a2,0x2000,0xb593,0xad52,0x0800,0x4182,0x3940,0x3141,0x0000,0x94b1,0x9d33,0x0000,0x2144,0x0000,0x52ca,0xb5b5,0x6b08,0x49a1,0x4a04,0x1000,0xad32,0xbdd4,0x7bac,0xce36,0x83cc,0x1840,0x3961,0x3140,0x3162,0x0000,0x7bce,0xb5d6,0x31c5,0x1903,0x0000,0x31c7,0xb5d5,0x736a,0x4180,0x4a03,0x3120,0x5aa7,0xce57,0x83cd,0x2000,0x41a2,0x3960,0x3940,0x3140,0x3962,0x0000,0x73ce,0xce78,0x4a69,0x10c2,0x0860,0x0023,0xce37,0xbccd,0x8a00,0x92a0,0x8a40,0x8220,0x7a00,0x82a0,0x9366,0x7a20,0x79c0,0x79c0,0x71c0,0x71c0,0x5000,0x8bad,0xd699,0x4ac9,0x10a1,0x2103,0x0000,0xb573,0xcd0e,0xb340,0xc420,0xbc20,0xb400,0xaba0,0xaba0,0x92c0,0x8200,0x8200,0x79e0,0x71c0,0x7aa0,0x6160,0x6a43,0xce36,0x7bae,0x0000,0x2123,0x0000,0xb574,0xc54f,0xbba0,0xcc60,0xc400,0xbc20,0xb3e0,0xbba0,0x9ae0,0x81e0,0x92c0,0x8280,0x71c0,0x6a00,0x7280,0x61e0,0xce17,0x8430,0x0000,0x3185,0x0000,0xad74,0xddd2,0x9220,0x9ac0,0x8240,0x7a00,0x81c0,0x81c0,0x79c0,0x79c0,0x8200,0x79e0,0x69a0,0x71a0,0x7140,0x61c0,0xbe17,0x8430,0x0000,0x31a5,0x1923,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e3,0x0000,0x4aeb,0xc54f,0xfe67,0xfea8,0xfe05,0xfdc4,0xed84,0xed83,0xccc3,0x6aa2,0xac02,0xb463,0x6261,0x8386,0x39e1,0x3180,0x31a2,0x9ba2,0xed83,0xe563,0xe543,0xe543,0xe542,0xe543,0xdd42,0xdd03,0xd4c0,0xbd4f,0x94d2,0x2964,0x1903,0x0000,0x4269,0x8c70,0x6ae7,0x4a03,0x41e2,0x41c2,0x1800,0xa4f0,0xad73,0x94d1,0xbe15,0x3880,0x3162,0x3940,0x3142,0x0800,0x73ad,0x9d54,0x4228,0x2123,0x0060,0x2165,0x8cb0,0x736a,0x49c0,0x49e3,0x4180,0x4a23,0xb593,0xc637,0xb593,0x840c,0x3140,0x3960,0x3940,0x3921,0x1800,0x5aea,0xa554,0x52a9,0x10e2,0x18e2,0x0000,0x8c71,0x8c2e,0x49e0,0x5224,0x28a0,0x7b8a,0xc655,0x5a87,0x0000,0x73ac,0xce56,0x5ac8,0x1800,0x3962,0x2080,0x41e5,0xb595,0x6b6d,0x0080,0x18e3,0x0000,0x94d2,0x8c4f,0x41a0,0x4a03,0x41c2,0x2000,0x840e,0xd698,0xad33,0xa4d1,0x83cc,0x28c0,0x3120,0x3121,0x2060,0x41c4,0xb5b5,0x6bae,0x0000,0x1903,0x0000,0x8cb1,0x9cd1,0x4160,0x4a44,0x30c0,0x840e,0xce76,0x4a45,0x20a0,0x6aa6,0x62c6,0x4a23,0x3100,0x3120,0x3100,0x1800,0xbdf5,0x94d1,0x0000,0x2964,0x0000,0x7bee,0xa511,0x41c0,0x49c2,0x49c2,0x2880,0xa512,0xc616,0x9caf,0xa4f0,0xce97,0x842e,0x0800,0x3142,0x3121,0x0000,0xa513,0x9d13,0x0080,0x31e6,0x0000,0x634d,0xa533,0x5a85,0x5203,0x4a03,0x49c2,0x3960,0x3120,0x2800,0xad73,0xa532,0x1000,0x4161,0x3940,0x3142,0x0000,0x9490,0x9d13,0x0000,0x2144,0x0000,0x5acb,0xb5b4,0x62e8,0x49c1,0x4a03,0x20a0,0x94b1,0xd6d9,0xdf1a,0xa512,0x0000,0x41a3,0x3940,0x3140,0x3162,0x0000,0x7bcf,0xbdf6,0x31c5,0x1903,0x0000,0x31c7,0xb5b5,0x736a,0x41a0,0x4203,0x3920,0x62c7,0xc655,0x7bcc,0x2000,0x41c2,0x3960,0x3140,0x3120,0x3162,0x0000,0x7bce,0xce58,0x4a68,0x08a1,0x10a1,0x0000,0xceb9,0xeef8,0xcd70,0xc551,0xbd30,0xbcf0,0xbccf,0xb4ae,0xacae,0xb4ce,0xb4af,0xacaf,0xa48e,0xa46e,0x940a,0xb574,0xd6db,0x4289,0x18c0,0x2924,0x0000,0xb5f7,0xf719,0xcd50,0xbd11,0xbcf0,0xaccf,0xb4cf,0xb4ae,0xb4ce,0xb4cf,0xbccf,0xb4ae,0xac8e,0xa46d,0x9c0b,0x9cd1,0xceb9,0x73ad,0x0000,0x2144,0x0000,0xadb6,0xef39,0xc551,0xbd10,0xbd10,0xb4cf,0xb4d0,0xacd0,0xacef,0xb510,0xb4d0,0xb4ad,0xacae,0x9c6e,0x9c2d,0x9c6e,0xc698,0x7c0f,0x0000,0x2985,0x0000,0xad74,0xf75b,0xd5b2,0xcd50,0xbd30,0xb4ee,0xb4ce,0xacce,0xacee,0xacef,0xb4cf,0xb4ae,0xacaf,0xa46e,0x9c2d,0x8c4f,0xc658,0x842f,0x0000,0x29a5,0x1923,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1102,0x1902,0x0000,0x52eb,0xcd6e,0xfe46,0xfe87,0xfde6,0xfdc5,0xed84,0xed63,0xcd04,0x72e2,0x8362,0xbce5,0x9ba2,0xa405,0x8362,0x7b43,0x5222,0x6a61,0xbc63,0xe564,0xed42,0xe563,0xe543,0xe543,0xdd42,0xdd04,0xccc0,0xbd70,0x94d2,0x2943,0x1903,0x0000,0x4289,0x8c4f,0x6ac7,0x5224,0x49e3,0x4180,0x4160,0xce36,0xa512,0x844e,0xd6b8,0x62c8,0x2080,0x3981,0x3162,0x0000,0x738d,0xa554,0x4228,0x2143,0x0880,0x1965,0x8cb0,0x736a,0x49c0,0x4a03,0x41c1,0x3940,0x3961,0x8c0e,0xad31,0xce76,0xad52,0x28e0,0x3141,0x3941,0x1000,0x5aea,0xa554,0x52ca,0x1903,0x18c2,0x0000,0x8c51,0x840d,0x49c0,0x5204,0x30e0,0x738a,0xce76,0x62e9,0x1000,0x73ac,0xce56,0x5aa8,0x1800,0x3962,0x2080,0x4206,0xb595,0x6b6d,0x00a0,0x10e3,0x0000,0x94d1,0x8c4e,0x49a0,0x49e3,0x41c3,0x2000,0x840e,0xce78,0xad12,0xa4b0,0x83ac,0x3100,0x3140,0x3121,0x2080,0x41e4,0xa554,0x6b8d,0x0000,0x1903,0x0000,0x8470,0x9490,0x4980,0x4a24,0x30e0,0x844f,0xce57,0x49c4,0x4a02,0xad51,0xc658,0x9491,0x1800,0x3942,0x2901,0x1840,0xbdd6,0x94b1,0x0000,0x2965,0x0000,0x73ce,0x9cf1,0x49a0,0x49e3,0x4a03,0x28a0,0xa531,0xc616,0x9c8f,0x9ccf,0xce77,0x842e,0x0000,0x3142,0x3121,0x0000,0xa513,0x9d13,0x10e2,0x39e6,0x0000,0x634c,0xa512,0x5244,0x4a02,0x5203,0x41a1,0x5224,0x5245,0x1000,0xb573,0xa533,0x0000,0x4182,0x3940,0x3961,0x0000,0x9490,0x9cf2,0x0061,0x2144,0x0000,0x5acb,0xbdd5,0x62e8,0x49c2,0x5204,0x1800,0x94b1,0xd6b9,0xb5f5,0xce56,0x6b0a,0x1800,0x3982,0x3120,0x3142,0x0000,0x7bee,0xbdf6,0x31c5,0x1903,0x0000,0x31c6,0xb5b5,0x736a,0x41a0,0x4a04,0x3100,0x5ae7,0xce77,0x7bad,0x0000,0x3940,0x3120,0x3140,0x3120,0x3142,0x0000,0x73ae,0xc638,0x4a68,0x10c2,0x18c2,0x0000,0xd6ba,0xef5b,0xc5b3,0xc593,0xb573,0xad32,0xacf0,0xa4f0,0xa4f0,0xa4f1,0xa4d1,0xa4d1,0x9cb1,0x9c90,0x942d,0xb5b5,0xd6da,0x4269,0x10c1,0x2944,0x0000,0xb5f7,0xf77c,0xc5b3,0xbd74,0xb553,0xad32,0xad31,0xad11,0xad31,0xa511,0xad11,0xa4f0,0xa4f1,0xa4af,0x944e,0x9d12,0xceb9,0x636d,0x0000,0x2124,0x0000,0xb5b5,0xf75a,0xbd93,0xb553,0xb532,0xad12,0xa4f2,0xa4f1,0xa511,0x9cf1,0xa512,0x9ccf,0x9c8e,0x944f,0x944e,0x9490,0xceba,0x7c10,0x0000,0x2985,0x0000,0x9d34,0xef7e,0xc5f6,0xbd93,0xb573,0xad51,0xad31,0xad31,0xa531,0xad32,0xad32,0xa532,0x9d11,0x9cf0,0x9490,0x94b1,0xc658,0x7c2f,0x0000,0x31a5,0x1923,0x1903,0x18e2,0x18e2,0x18e3,0x18e3, +0x10c2,0x10e2,0x10c2,0x10e2,0x18e2,0x1102,0x1902,0x0000,0x52eb,0xcd8e,0xfe46,0xfe67,0xfe06,0xfda5,0xed84,0xe542,0xe544,0xccc4,0xb443,0xd525,0xd502,0xd502,0xd542,0xd523,0xc4c3,0xb463,0xc4c4,0xe544,0xed42,0xe563,0xe543,0xe543,0xdd22,0xdd04,0xccc0,0xc570,0x8cb2,0x2943,0x1903,0x0000,0x3a69,0x8c4f,0x6ae7,0x5224,0x4a04,0x28a0,0x7b8b,0xd698,0xc615,0xbdd3,0xded9,0x94b0,0x0000,0x3982,0x3942,0x0000,0x73ad,0xa554,0x4228,0x2123,0x0060,0x1945,0x8cb0,0x7b8a,0x41a0,0x49e3,0x3120,0x62c7,0xb551,0x62e8,0x0000,0xa4f1,0xce36,0x3980,0x3100,0x3962,0x1800,0x630a,0xa554,0x52aa,0x1923,0x18e2,0x0000,0x8c51,0x840d,0x49e0,0x5224,0x2880,0x7b8b,0xce56,0x62ea,0x0000,0xad73,0xc615,0x3920,0x3100,0x3141,0x2060,0x4206,0xb5b5,0x6b6d,0x0080,0x18c3,0x0000,0x94d1,0x8c4e,0x4180,0x49e3,0x41c3,0x1800,0x8c6f,0xc615,0x28c0,0x0000,0x2080,0x3160,0x3140,0x3121,0x20a0,0x41e4,0xad74,0x6bad,0x0020,0x1903,0x0000,0x8450,0x8c6f,0x4980,0x4a24,0x4180,0x5ae8,0xce77,0x9c90,0x0000,0x5288,0xce58,0xa533,0x0000,0x3962,0x2900,0x1020,0xbdd6,0x94d2,0x0000,0x2145,0x0000,0x73ef,0x9cf1,0x49a0,0x49e3,0x49e3,0x2060,0xa552,0xad33,0x0000,0x0000,0xb5d4,0x8c6f,0x0000,0x3142,0x3121,0x0000,0xa512,0x9d13,0x1903,0x39c6,0x0000,0x634c,0xa533,0x5a64,0x49e2,0x5224,0x1800,0x946e,0xbdd3,0x0000,0xbdb5,0xa512,0x0000,0x4182,0x3940,0x3941,0x0000,0x94b0,0x9d33,0x0061,0x2123,0x0000,0x5aeb,0xbdd5,0x6308,0x49c2,0x5204,0x1000,0x9d11,0xbdd5,0x0000,0xbdb4,0xce36,0x4a25,0x28e0,0x3941,0x3942,0x0000,0x83ee,0xb5d6,0x29a5,0x1923,0x0000,0x29a6,0xad74,0x736a,0x41c0,0x5204,0x3120,0x5ae7,0xd678,0x8c50,0x39a0,0x5266,0x4183,0x3120,0x3120,0x3142,0x0000,0x73ad,0xc638,0x4a89,0x10c1,0x1081,0x0062,0xc637,0x948f,0x1800,0x41a0,0x2900,0x28c0,0x1800,0x3160,0x5265,0x20c0,0x1000,0x1800,0x1800,0x1800,0x0000,0x738d,0xd699,0x4aaa,0x0880,0x2123,0x0000,0xad74,0xa4f1,0x1800,0x3140,0x3120,0x28c0,0x28c0,0x20e0,0x2000,0x28a0,0x2880,0x2840,0x2000,0x2060,0x0000,0x39c4,0xc637,0x73ce,0x0000,0x2123,0x0000,0xa533,0xa4f0,0x1800,0x3980,0x3100,0x20c0,0x28c0,0x2800,0x2800,0x2800,0x2040,0x28c0,0x1840,0x2080,0x0000,0x2140,0xce7a,0x8c71,0x0000,0x2985,0x0000,0xa534,0xb594,0x20c0,0x39c0,0x3940,0x3140,0x2040,0x2800,0x30c0,0x2860,0x2880,0x20c0,0x1000,0x1040,0x0000,0x3100,0xb5f6,0x7c2f,0x0000,0x29a6,0x1923,0x1903,0x18e2,0x18e2,0x18e3,0x18e3, +0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x52eb,0xcd8e,0xfe46,0xfe67,0xfe06,0xfda5,0xed84,0xe564,0xed23,0xed63,0xed83,0xe563,0xe563,0xed63,0xed62,0xed62,0xed63,0xed63,0xed84,0xed43,0xe543,0xdd62,0xe563,0xe543,0xdd22,0xdd04,0xccc0,0xc570,0x8c91,0x2943,0x1903,0x0000,0x3a49,0x8c70,0x7307,0x4a03,0x4a04,0x2860,0xad11,0xbdb5,0x4a46,0x5204,0xad32,0xbdf5,0x3100,0x3920,0x3942,0x1000,0x738d,0xa554,0x4207,0x2123,0x0040,0x1965,0x8cb0,0x736a,0x41a0,0x41c3,0x4180,0x41a1,0xb572,0xc636,0xb592,0xc5d4,0x8c0d,0x20a0,0x3961,0x3941,0x2000,0x5aea,0xa533,0x4aa9,0x2123,0x18e2,0x0000,0x8450,0x8c0e,0x4a00,0x4a04,0x3100,0x6b09,0xce37,0xb5b4,0xbdd3,0xce56,0x7bcc,0x2000,0x3961,0x3140,0x2060,0x41e6,0xb595,0x6b6d,0x0080,0x18e3,0x0000,0x8cd1,0x8c4e,0x41a0,0x49e3,0x41c3,0x2000,0x83ed,0xbdb4,0x5225,0x3140,0x39a2,0x3160,0x3140,0x3121,0x20c0,0x41c4,0xad94,0x6bad,0x0000,0x1903,0x0000,0x8450,0x8c6f,0x4980,0x4a24,0x49e3,0x2900,0x948f,0xce97,0xb5b3,0xbd93,0xc5f6,0x9c8f,0x1800,0x3962,0x3120,0x2080,0xbdb6,0x94b2,0x0000,0x2145,0x0000,0x73ee,0x94b0,0x4180,0x49e3,0x4a03,0x1800,0xad32,0xb573,0x1000,0x41e3,0xbdd3,0x8c4e,0x0000,0x3942,0x3121,0x0000,0xa512,0x9d13,0x2144,0x39e7,0x0000,0x636d,0xa533,0x5244,0x4a02,0x5203,0x30e0,0x6b4a,0xbe15,0xbdf4,0xc616,0x7bac,0x2040,0x4162,0x3940,0x3942,0x0000,0x9490,0xa533,0x0040,0x2123,0x0000,0x5aeb,0xbdd5,0x62e8,0x49c1,0x5204,0x2020,0x9caf,0xbd73,0x2820,0x4a05,0xc5f5,0x9caf,0x0800,0x3141,0x3962,0x0000,0x83ee,0xb5d6,0x29a5,0x1903,0x0000,0x2986,0xad74,0x736a,0x49c0,0x49e4,0x3940,0x5285,0xce16,0xc616,0xb592,0xb593,0x6b2a,0x2000,0x3141,0x3142,0x0000,0x73ad,0xc658,0x4a89,0x08a0,0x0860,0x1103,0xb5b5,0x8c2d,0x49c0,0x5a65,0x4a03,0x49e3,0x3080,0x7329,0xb552,0x5a86,0x3920,0x41a1,0x3960,0x3962,0x0000,0x6b6c,0xce98,0x52aa,0x0060,0x1902,0x0000,0xa533,0x9cb0,0x49c0,0x5244,0x49e3,0x49c2,0x41a1,0x3980,0x7308,0x49a1,0x4160,0x49a1,0x4161,0x4181,0x28e0,0x41c4,0xc5f6,0x73ae,0x0000,0x2123,0x0000,0x9d33,0x9cb0,0x4960,0x5a44,0x5203,0x49c2,0x49e3,0x5204,0x7328,0x6286,0x49c3,0x41a1,0x4181,0x4183,0x3962,0x20c0,0xce58,0x8c71,0x0000,0x2985,0x0000,0x9d13,0xad12,0x5200,0x62a6,0x5a66,0x49c2,0x62c6,0x6286,0x49c1,0x5203,0x5203,0x5204,0x5a45,0x4a04,0x3100,0x3121,0xadb5,0x7c2f,0x0020,0x29a5,0x2144,0x1903,0x18e2,0x18e2,0x18e3,0x1903, +0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x0000,0x52eb,0xcd8f,0xfe46,0xfe67,0xfde6,0xfd84,0xed63,0xe544,0xdd24,0xe522,0xe542,0xdd43,0xdd43,0xe543,0xe523,0xe542,0xe522,0xe542,0xe541,0xed63,0xe543,0xdd42,0xe563,0xe543,0xdd22,0xdd04,0xccc0,0xc570,0x8cb2,0x2943,0x1903,0x0000,0x3a49,0x9490,0x7308,0x4a03,0x49e3,0x41a0,0x6b09,0x5a87,0x1860,0x2840,0x4a25,0x736a,0x41a2,0x3120,0x3962,0x0800,0x738d,0x9d34,0x4207,0x2123,0x0040,0x2186,0x8cb0,0x7b8a,0x49c0,0x41c2,0x41a1,0x3140,0x20a0,0x6b4a,0x83ec,0x62c7,0x2080,0x3980,0x3960,0x3941,0x1800,0x5ac9,0xa513,0x52aa,0x1923,0x18e2,0x0000,0x8450,0x8c2e,0x4a00,0x4a03,0x41a0,0x49e3,0x7b8c,0x8c2e,0x8c4e,0x62c8,0x28c0,0x3981,0x3140,0x3140,0x2060,0x4206,0xb595,0x636d,0x0080,0x18e3,0x0000,0x8cb1,0x8c4e,0x49a0,0x49e3,0x41a1,0x3940,0x4a05,0x5a87,0x4181,0x3960,0x3980,0x3160,0x3140,0x3140,0x20a0,0x39a3,0xb5b5,0x6bae,0x0000,0x1903,0x0000,0x8450,0x946f,0x4980,0x4a24,0x49e3,0x41a0,0x2060,0x632a,0x948f,0x7bab,0x41a3,0x4a04,0x3140,0x3140,0x3100,0x20a0,0xb5b6,0x94b1,0x0000,0x2145,0x0000,0x6bae,0x8c8f,0x49a0,0x49e3,0x49e2,0x3980,0x6b09,0x6b09,0x3140,0x3960,0x6b29,0x5266,0x30c0,0x3140,0x3121,0x0000,0x9cf2,0x9cf2,0x2165,0x3a07,0x0000,0x6b6d,0xa533,0x5223,0x49e2,0x4a03,0x41c2,0x20a0,0x5ae8,0x948f,0x6b4a,0x30e0,0x3960,0x3960,0x3940,0x3962,0x0000,0x9470,0x9d13,0x0020,0x2123,0x0000,0x52ca,0xb5d5,0x6b28,0x41a1,0x49e3,0x3980,0x5225,0x5a46,0x4161,0x3100,0x4a04,0x5a87,0x3140,0x3120,0x3962,0x0000,0x7bce,0xb5f6,0x29a5,0x18e3,0x0000,0x2986,0xad54,0x736a,0x41a0,0x49c3,0x41a1,0x39a0,0x5a66,0x62e9,0x6b2a,0x6309,0x4a05,0x28e0,0x3140,0x3142,0x0000,0x73ae,0xc617,0x4a48,0x10c1,0x0860,0x08c2,0xbdf5,0x946e,0x49a0,0x5224,0x41c1,0x41a1,0x4160,0x49e3,0x5a66,0x41a2,0x3960,0x4181,0x3961,0x3962,0x0000,0x736c,0xce78,0x5289,0x0020,0x2123,0x0000,0xa553,0x9cd0,0x41a0,0x5224,0x49e3,0x41a2,0x49e4,0x7329,0x9cf0,0x73ab,0x4203,0x3981,0x3961,0x4181,0x28c0,0x41e5,0xc616,0x738d,0x0000,0x2944,0x0000,0xa533,0xa4f0,0x4160,0x5225,0x49c3,0x49a3,0x41a1,0x7bec,0xbdf5,0xa511,0x4a24,0x3181,0x41a1,0x3961,0x3941,0x20c0,0xc617,0x8430,0x0000,0x2985,0x0000,0x9d13,0xad13,0x49a0,0x7b6a,0x7b2b,0x6287,0x83cc,0x738a,0x83ec,0x948e,0x83ec,0x6b49,0x946e,0x7bab,0x2920,0x2921,0xb5b6,0x8430,0x0040,0x29a5,0x2144,0x1903,0x18e2,0x18e2,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x0000,0x530c,0xd5af,0xfe45,0xfe47,0xfdc5,0xf584,0xed63,0xe563,0xe542,0xe543,0xe544,0xed43,0xed43,0xe563,0xe543,0xe563,0xe562,0xe543,0xed43,0xe563,0xe562,0xed43,0xed43,0xe543,0xdd43,0xe504,0xd4c0,0xc550,0x94d2,0x2943,0x1903,0x0000,0x428a,0x8c90,0x6ae7,0x4a03,0x41e2,0x41a0,0x30e0,0x3140,0x41c2,0x41a2,0x3960,0x2860,0x3960,0x3940,0x3162,0x0800,0x738c,0xa554,0x4228,0x2123,0x0020,0x29a6,0x94b1,0x736a,0x49c1,0x41c2,0x4181,0x4181,0x3981,0x2000,0x1800,0x28c0,0x4182,0x3980,0x3960,0x3961,0x2060,0x5ac9,0xa554,0x52ca,0x10c1,0x18c2,0x0000,0x8450,0x8c0e,0x4a00,0x4a03,0x41a0,0x3940,0x1820,0x0800,0x1800,0x30c0,0x41a1,0x3980,0x3140,0x3140,0x28c0,0x41e5,0xb595,0x636d,0x0000,0x18e3,0x0000,0x8cb1,0x8c4e,0x49c0,0x49e3,0x41a1,0x4181,0x3140,0x28c0,0x3960,0x3960,0x3960,0x3160,0x3960,0x3941,0x28c0,0x39a3,0xb5b5,0x6bae,0x0000,0x1903,0x0000,0x8450,0x8c6f,0x49a0,0x4a04,0x41c2,0x4180,0x4182,0x2840,0x0000,0x1800,0x3120,0x3120,0x3160,0x3961,0x3142,0x1800,0xbdd6,0x94b2,0x0000,0x2145,0x0000,0x73ce,0x8c90,0x51c0,0x4a03,0x41c3,0x41a1,0x3100,0x28c0,0x3981,0x3960,0x2080,0x28e0,0x3940,0x3140,0x3142,0x0000,0x9cd1,0x94d2,0x2124,0x39e6,0x0000,0x634c,0xa512,0x5a64,0x4a04,0x49e3,0x4180,0x4181,0x30e0,0x0000,0x2880,0x4180,0x3960,0x3180,0x3160,0x3962,0x0000,0x9490,0xa533,0x0000,0x2123,0x0000,0x52aa,0xb5b4,0x6b28,0x41a1,0x41c3,0x41a0,0x3920,0x30e0,0x3960,0x41a1,0x3920,0x30e0,0x3960,0x3140,0x3962,0x0000,0x7bce,0xb5d6,0x2184,0x1903,0x0000,0x31a6,0xad54,0x7349,0x41c0,0x41a2,0x41a1,0x3960,0x2900,0x2040,0x2000,0x2040,0x3100,0x3961,0x3140,0x3163,0x0000,0x7bce,0xc658,0x4207,0x10c2,0x0860,0x08e3,0xbdd5,0x8c2e,0x49c0,0x5204,0x41c1,0x41c1,0x30e0,0x62e8,0x9cb0,0x5225,0x3140,0x3981,0x3960,0x3982,0x0000,0x734b,0xce78,0x4a69,0x0000,0x1902,0x0000,0xa554,0x9cb0,0x41a0,0x5224,0x41e2,0x3981,0x5224,0x83ab,0xa511,0x8c2d,0x5244,0x3960,0x4161,0x3961,0x2900,0x4205,0xc637,0x6b8d,0x0000,0x2943,0x0000,0x9d12,0x9cb0,0x4180,0x5224,0x41c2,0x49e3,0x3980,0x7bcc,0xc615,0xad31,0x4a04,0x3960,0x41a1,0x3982,0x3142,0x18c0,0xc638,0x8430,0x0000,0x2985,0x0000,0x9cf2,0xad32,0x41c0,0x7349,0x8c0d,0x7329,0x7bac,0x734a,0x7bcc,0x9c8f,0x8c0d,0x6b08,0x83ec,0x7b8b,0x3982,0x2900,0xb5d6,0x7c2f,0x0000,0x29a5,0x2124,0x1903,0x18e2,0x18e3,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e3,0x0000,0x3a09,0xc590,0xf68b,0xf624,0xfda5,0xfd64,0xed45,0xe544,0xed64,0xed64,0xe544,0xed64,0xed44,0xed44,0xed44,0xed64,0xed64,0xed64,0xed64,0xed84,0xed84,0xed84,0xed63,0xed44,0xed44,0xdd22,0xc4e0,0xbdb1,0x7c30,0x10c0,0x1923,0x0000,0x31c7,0x9cd3,0x738b,0x4180,0x51e3,0x49a2,0x41c3,0x41a3,0x39a2,0x41a2,0x41c3,0x49c3,0x4182,0x4182,0x39a3,0x0000,0x842f,0xa533,0x2985,0x2123,0x0080,0x1124,0x94d2,0x7bcc,0x4100,0x49c3,0x41a3,0x41a2,0x41a3,0x41a3,0x41c3,0x41c3,0x41a2,0x39a2,0x3982,0x41c3,0x0000,0x7bad,0xad54,0x39e7,0x1902,0x1903,0x0000,0x842f,0x8c6e,0x41c0,0x49e3,0x41c3,0x39a2,0x41c3,0x41c3,0x49c4,0x41c3,0x41a2,0x41a2,0x3982,0x39a3,0x0000,0x6b0b,0xbdb6,0x52ab,0x00a0,0x1903,0x0000,0x8450,0x9cd1,0x4180,0x41c2,0x41a2,0x4182,0x4182,0x41a3,0x41a2,0x41a2,0x41a2,0x3982,0x3982,0x41a3,0x0000,0x62ea,0xc637,0x5b0b,0x0000,0x1903,0x0000,0x73ee,0x9cf1,0x49a0,0x49e2,0x41c3,0x41a2,0x41a2,0x41c3,0x41c3,0x41c3,0x41a3,0x41a3,0x41a2,0x4183,0x2000,0x4206,0xbe37,0x73ce,0x0000,0x2144,0x0000,0x5b2b,0xa553,0x5a65,0x4980,0x49e4,0x41c3,0x41c3,0x41c3,0x41a2,0x41a3,0x41a3,0x3983,0x3962,0x3983,0x3120,0x0000,0xbdb5,0x94b2,0x1103,0x39c6,0x0000,0x4269,0xa532,0x6307,0x4180,0x49e4,0x41c3,0x41a2,0x41c3,0x41c4,0x41c3,0x41a2,0x41a2,0x39a3,0x39a3,0x3141,0x0000,0xb574,0x9cf2,0x0000,0x2124,0x0000,0x31c6,0xad94,0x7bac,0x30a0,0x49e4,0x4182,0x41a3,0x41c3,0x39a2,0x41a2,0x41c3,0x41c3,0x4182,0x4182,0x3983,0x0000,0x9cd2,0xad74,0x0000,0x2123,0x0860,0x0041,0xad53,0x840c,0x3080,0x49c3,0x41a3,0x3982,0x41a3,0x41a3,0x41a3,0x41a3,0x4183,0x4162,0x3982,0x39a4,0x0000,0x94d2,0xbe37,0x0080,0x1923,0x10e2,0x0000,0xad75,0xa4f1,0x30c0,0x49e4,0x41c3,0x41c3,0x3120,0x62e9,0xad52,0x5aa8,0x3120,0x41c3,0x41a3,0x41a4,0x0000,0x8c6f,0xce57,0x2165,0x10e2,0x2123,0x0000,0x9d13,0xad32,0x40e0,0x5224,0x4a03,0x49e3,0x39a2,0x39a2,0x7348,0x4a03,0x3961,0x49e3,0x41a3,0x49c4,0x0000,0x62ea,0xc637,0x4a89,0x0000,0x2124,0x0000,0x8c91,0xa533,0x3920,0x5204,0x49e4,0x49e3,0x49c3,0x5266,0x7b69,0x6b08,0x4a04,0x41c3,0x41a2,0x41c4,0x0000,0x5288,0xce58,0x632c,0x0000,0x2965,0x0000,0x8450,0xbdd5,0x41c0,0x5244,0x7329,0x5a46,0x62c8,0x62a7,0x41c3,0x5225,0x5225,0x51e4,0x49e3,0x4a04,0x2060,0x4a27,0xbe17,0x636c,0x08c1,0x29a5,0x2124,0x1903,0x18e2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10c1,0x1101,0x0000,0x8c4f,0xeed2,0xfe67,0xf5a0,0xf560,0xed60,0xed60,0xed40,0xed40,0xed40,0xed40,0xed40,0xed40,0xf540,0xf540,0xf540,0xf540,0xf540,0xed40,0xf540,0xf560,0xed60,0xed40,0xed40,0xd540,0xcdf0,0xb595,0x4aa9,0x08a0,0x1923,0x10c2,0x0000,0x8450,0xad94,0x62c8,0x2000,0x2000,0x2000,0x1800,0x1800,0x2000,0x1000,0x0800,0x1000,0x0000,0x0000,0x6b2b,0xbdf6,0x7bee,0x0060,0x2144,0x10e2,0x0000,0x73ce,0xad94,0x6308,0x1800,0x1800,0x0800,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x0000,0x52a7,0xb5b5,0x8c71,0x0080,0x2143,0x1903,0x0000,0x5aca,0xad73,0x7bcb,0x3880,0x1800,0x1800,0x2000,0x1800,0x1800,0x2000,0x2000,0x2000,0x1000,0x0000,0x39c4,0xb5b5,0x9cf3,0x0061,0x2123,0x1903,0x0000,0x4aaa,0xb5b5,0x8c0e,0x20c0,0x1800,0x0800,0x1800,0x1800,0x1800,0x2000,0x2000,0x1800,0x0800,0x0000,0x41c4,0xbdf6,0xad75,0x0080,0x2124,0x18e3,0x0000,0x3a08,0xad94,0x946f,0x28a0,0x1000,0x1000,0x2000,0x1800,0x1800,0x1800,0x1000,0x0000,0x1000,0x0000,0x30e0,0xb5b5,0xb5d6,0x1922,0x1903,0x18e3,0x0060,0x0060,0xa553,0xa512,0x4160,0x2000,0x1800,0x1000,0x1000,0x1000,0x1000,0x0800,0x0800,0x1000,0x1000,0x0000,0x94b0,0xce58,0x52ab,0x2185,0x2964,0x0880,0x0000,0x94d1,0xad52,0x51e0,0x3000,0x2000,0x2000,0x1800,0x1000,0x0800,0x1000,0x1000,0x1800,0x0800,0x0000,0x9470,0xc637,0x52c9,0x0040,0x1903,0x10c2,0x0000,0x8cb1,0xb5b3,0x5262,0x0800,0x0800,0x0000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1000,0x0000,0x0000,0x73ad,0xce38,0x73ae,0x0000,0x2124,0x10c2,0x0000,0x7c0f,0xbdd6,0x62c7,0x1000,0x0000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0800,0x0000,0x0000,0x0000,0x630a,0xceb9,0x8450,0x0000,0x2144,0x1903,0x0000,0x73ce,0xce57,0x736a,0x1000,0x2000,0x2000,0x0800,0x30c0,0x62a4,0x2800,0x1800,0x2000,0x2000,0x0000,0x5aa8,0xce98,0x9491,0x0000,0x2144,0x1903,0x0000,0x5b4c,0xce77,0x8c0d,0x2000,0x2800,0x2000,0x2000,0x2000,0x2800,0x2000,0x2000,0x1800,0x2000,0x0000,0x3962,0xbdd6,0xad54,0x0000,0x2124,0x2124,0x0000,0x52ca,0xbe16,0x840d,0x1800,0x2000,0x1800,0x1800,0x1000,0x2800,0x1800,0x2000,0x2800,0x2000,0x0000,0x18a0,0xbdd5,0xb5b6,0x0000,0x2965,0x2124,0x0000,0x3a08,0xc617,0x9490,0x20a0,0x1800,0x1800,0x0000,0x1000,0x2000,0x2000,0x2800,0x2000,0x0800,0x0000,0x0000,0xad53,0xadb5,0x2164,0x2985,0x2144,0x2124,0x1903,0x18e3,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x18e2,0x1101,0x0060,0x1945,0xa4d0,0xe6b6,0xeed4,0xeeb3,0xeed4,0xe6b4,0xee93,0xeeb3,0xeeb3,0xee93,0xee93,0xe693,0xe693,0xe693,0xeeb3,0xeeb4,0xee93,0xe673,0xee93,0xeeb4,0xeeb3,0xee93,0xee94,0xe694,0xbdd6,0x632f,0x10e0,0x1924,0x1903,0x10c2,0x0040,0x00c0,0x9cf3,0xbe17,0xa533,0x9cf1,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0xa512,0x9cf2,0x9cf1,0x9cf2,0xa553,0xc637,0x8c71,0x0080,0x2144,0x1903,0x10c2,0x0880,0x0000,0x8cb1,0xbe16,0xa532,0x9cf1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cb1,0xa513,0xc637,0x9d13,0x1944,0x1944,0x1102,0x10c2,0x10c2,0x0000,0x7bce,0xb5b5,0xad33,0x9cf2,0x9cf2,0x9d12,0x9d12,0x9d11,0x9d11,0x9d11,0x9cf1,0x9cf2,0xa513,0xc637,0xa574,0x31e6,0x1923,0x1903,0x10c2,0x10e2,0x0000,0x6b8d,0xb5b5,0xa553,0x9cf1,0xa532,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0x9cf2,0xa532,0xce58,0xb5b6,0x3208,0x10e1,0x1903,0x10c2,0x10e2,0x0000,0x5b0c,0xb5d5,0xad74,0x9cf2,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0x9d12,0xa533,0xc637,0xbe17,0x52ca,0x0080,0x2144,0x10c2,0x10e2,0x0000,0x4268,0xadb5,0xb5b5,0xa512,0x9d12,0x9cf1,0x9cd1,0x94b1,0x9cd1,0x9cf1,0x9cd1,0x9cd1,0x9cd0,0xb5b5,0xc638,0x6b8d,0x0060,0x29a5,0x1902,0x10c2,0x0000,0x31a6,0xa533,0xbdb5,0xa533,0x9cf2,0x9cf2,0x9cf2,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9d11,0x9d12,0xb5b5,0xc637,0x73ae,0x0020,0x2143,0x10e2,0x10c2,0x0000,0x00a2,0xa532,0xbe16,0xa512,0x9d12,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xad74,0xc638,0x8c71,0x0000,0x2123,0x10e2,0x10a1,0x0040,0x0003,0x94d2,0xbdf5,0x9d12,0x9cf2,0x9cf1,0x9cf1,0x9cf1,0x9cd1,0x9cf1,0x9cf2,0x9cf1,0x9cf1,0xa553,0xce78,0x9cf2,0x0000,0x2144,0x10e2,0x10c2,0x10c2,0x0000,0x94d1,0xc637,0xa533,0xa4f1,0xa4f1,0xa4f1,0xa512,0x9cf1,0x9cd0,0x9cf1,0x9cd1,0x9cf1,0xa532,0xce58,0xa514,0x0860,0x2124,0x1903,0x18c1,0x18e3,0x0000,0x8471,0xc678,0xad53,0xa4f1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cf1,0xc617,0xb5d6,0x29a6,0x1102,0x1903,0x10c2,0x18e3,0x0000,0x7c0f,0xc636,0xad53,0x9cf2,0x9d12,0xa512,0xa512,0x9cf2,0x9cf2,0x9cf1,0x9cd1,0x9cd1,0x9cf2,0xbe37,0xb5d6,0x3a28,0x10e3,0x2165,0x1903,0x2144,0x0000,0x6b8e,0xbe36,0xad94,0x9cf1,0xa4f2,0x9cf2,0x9cf2,0x9cf2,0xa4f2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0xbdf6,0xbdf6,0x4a89,0x10e2,0x29a5,0x2144,0x1923,0x1903,0x18e3,0x1903,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c3,0x10c4,0x08c1,0x10e2,0x0000,0x0002,0x530e,0x8472,0x94d2,0x94d3,0x94d4,0x94f3,0x94d3,0x94d3,0x8cb2,0x8c92,0x8492,0x8492,0x8c93,0x8cb3,0x8cb3,0x8c93,0x8c92,0x8c93,0x8cb3,0x8cb2,0x8cd1,0x94d3,0x7c10,0x21a6,0x0000,0x2144,0x18e2,0x10e2,0x10a1,0x10c2,0x0000,0x0000,0x6b8e,0x9cf2,0x9d13,0x9513,0x9d13,0x9d33,0x9d33,0x9d33,0xa513,0x9d13,0x9d34,0x94f3,0x5b0c,0x0000,0x1923,0x1903,0x1103,0x10a1,0x10c2,0x0060,0x0000,0x636d,0x94f2,0x9d33,0x9d34,0x9d34,0x9d34,0x9d34,0x9d34,0x9d34,0x9d14,0x9d34,0x9d13,0x6bae,0x0000,0x10e2,0x1103,0x10e2,0x08a1,0x10c2,0x08a2,0x0000,0x52cb,0x8471,0x9513,0x9513,0x9d13,0x9d33,0x9d13,0x9d13,0x9d13,0x9513,0x9d13,0x9d13,0x73ce,0x0000,0x08c1,0x1923,0x10c2,0x10c2,0x08a1,0x10e2,0x0000,0x4249,0x8450,0x94d2,0x9cf2,0x9cf3,0x94f3,0x94f3,0x94f3,0x9513,0x9d13,0x9cf2,0x9cd2,0x7bcf,0x0082,0x0020,0x1923,0x10c2,0x10c2,0x08a1,0x10c2,0x0000,0x31e7,0x8470,0x94d2,0x9d13,0x9513,0x9513,0x9d13,0x9d13,0x9d14,0x9d14,0x9d13,0x9cf3,0x7c10,0x1925,0x0000,0x2144,0x10e2,0x10c2,0x08a1,0x10c2,0x0000,0x1965,0x8430,0x9d34,0x9d54,0x9d34,0x9d34,0x9d13,0x9d13,0x9d33,0x9d13,0x9513,0x9d13,0x8c91,0x3a08,0x0000,0x2144,0x1943,0x10e2,0x10a1,0x10c2,0x0000,0x0000,0x73ef,0x94f3,0x9d34,0x9513,0x94f3,0x9513,0x9d13,0x9d13,0x9d13,0x9d13,0x9d33,0x8c91,0x3a27,0x0000,0x1923,0x10c2,0x10a2,0x08a1,0x10c2,0x0000,0x0000,0x73ae,0x94d2,0x9d13,0x9cf3,0x9d34,0x9d34,0x9d33,0x9d33,0x9d34,0x9d33,0xa533,0x94f3,0x52cb,0x0000,0x1923,0x10c2,0x10e2,0x08a1,0x10a2,0x0000,0x0000,0x636c,0x94d2,0x9d14,0x9d13,0x9d33,0x9513,0x9513,0x9d33,0x9d13,0x9d13,0x9d13,0x94d3,0x632d,0x0000,0x1903,0x1903,0x10c2,0x10c2,0x10c2,0x08a1,0x0000,0x634c,0x9d13,0x9d33,0x9d33,0xa534,0xa534,0x9d33,0x9d33,0x9d13,0x9d33,0xa554,0x9d34,0x738e,0x0000,0x1903,0x1903,0x18e2,0x18c2,0x10c2,0x10c2,0x0000,0x530b,0x94f3,0x9d34,0x9d34,0xa554,0xa574,0xa574,0xa554,0x9d33,0x9d34,0x9d34,0xa534,0x7c0f,0x0000,0x10c2,0x2124,0x18e3,0x10e2,0x10c2,0x1903,0x0000,0x52aa,0x94b2,0xa534,0xa513,0xa533,0x9d34,0x9d34,0x9d34,0x9d34,0x9d13,0x9d12,0x9d13,0x8450,0x00c3,0x00a1,0x2985,0x1903,0x1903,0x1903,0x2124,0x0000,0x4a8a,0x94d2,0xa514,0xa535,0xa554,0xa554,0xa554,0xa554,0xa554,0xa555,0xa555,0xa555,0x8c51,0x2126,0x10e2,0x2985,0x2144,0x2144,0x2144,0x1903,0x18e3,0x18e3,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10a1,0x10a0,0x18c2,0x18e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x2143,0x10e2,0x10c2,0x10e2,0x10c2,0x0881,0x10c2,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1903,0x10e2,0x10e2,0x10c2,0x10a2,0x10e2,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x18e2,0x10c2,0x10c2,0x10c2,0x10c1,0x08a1,0x1102,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1903,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x1903,0x10c2,0x10c2,0x10c2,0x08a1,0x1081,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08c2,0x2144,0x10e2,0x10e2,0x10c2,0x10a2,0x1081,0x10e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x18e2,0x10e2,0x10c2,0x10a2,0x0881,0x10e2,0x08c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x10c3,0x10e2,0x10c2,0x10a2,0x0881,0x10c2,0x08c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10e2,0x10a2,0x10a2,0x08a1,0x0881,0x10a1,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1903,0x10c2,0x10e2,0x10c2,0x10a1,0x10a2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1902,0x1902,0x18c3,0x10c2,0x10c1,0x18c1,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2124,0x18e3,0x18e3,0x10c2,0x18e2,0x10c2,0x1923,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2964,0x1903,0x1903,0x1923,0x1924,0x1903,0x2145,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2164,0x2144,0x2144,0x2144,0x2124,0x2123,0x18e2,0x10e2,0x18e3,0x18e2, +0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e3,0x2144,0x2985,0x29a5,0x29a5,0x2985,0x3185,0x2965,0x2965,0x2965,0x2965,0x2985,0x3185,0x2965,0x2964,0x2965,0x2965,0x2985,0x3185,0x2965,0x2965,0x3165,0x3165,0x2965,0x2944,0x2124,0x2103,0x2124,0x2124,0x2123,0x2103,0x1903,0x2123,0x2144,0x2144,0x2124,0x2123,0x2123,0x2143,0x2144,0x2144,0x2144,0x1923,0x2144,0x2964,0x2964,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x1903,0x2944,0x2144,0x1923,0x2123,0x1903,0x1923,0x2124,0x2103,0x2123,0x1923,0x2123,0x2144,0x2144,0x2123,0x1903,0x2123,0x2123,0x2123,0x1903,0x1923,0x1923,0x2164,0x2164,0x2123,0x2123,0x2124,0x2123,0x2123,0x2123,0x2123,0x2123,0x2124,0x2164,0x2965,0x1904,0x1904,0x2124,0x1923,0x1903,0x1923,0x1903,0x1903,0x2144,0x2144,0x2123,0x2124,0x2123,0x2123,0x2123,0x2124,0x2123,0x2143,0x2124,0x2144,0x2964,0x2144,0x2123,0x2123,0x1923,0x2123,0x2123,0x2123,0x1923,0x2144,0x2164,0x2103,0x2103,0x2123,0x2123,0x2123,0x2123,0x2144,0x2143,0x2143,0x2164,0x2164,0x2123,0x2124,0x2124,0x2123,0x1903,0x1903,0x2103,0x1903,0x2123,0x2144,0x2144,0x2103,0x2123,0x2123,0x2123,0x2103,0x2103,0x2123,0x2143,0x2964,0x2965,0x2124,0x1903,0x1903,0x1903,0x1903,0x1923,0x18e2,0x1902,0x1923,0x2144,0x2144,0x2123,0x2123,0x2124,0x2123,0x2123,0x2123,0x2123,0x2123,0x2144,0x2965,0x2144,0x1903,0x2124,0x2123,0x2123,0x1903,0x1903,0x18e3,0x1903,0x2144,0x2123,0x2123,0x2103,0x2123,0x2123,0x2123,0x2123,0x2144,0x2123,0x2144,0x2164,0x2144,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2144,0x2123,0x2103,0x2103,0x2123,0x1903,0x2123,0x2123,0x1923,0x1923,0x2124,0x2965,0x2144,0x1923,0x1923,0x1923,0x1923,0x1923,0x1903,0x2123,0x1903,0x2144,0x2144,0x2123,0x2123,0x2123,0x2123,0x2103,0x2103,0x2123,0x2123,0x2104,0x2965,0x2965,0x1903,0x2103,0x2123,0x2104,0x2124,0x2124,0x1923,0x2123,0x2144,0x2944,0x2123,0x2103,0x2123,0x2144,0x2144,0x2124,0x2124,0x2124,0x2944,0x2964,0x2965,0x2144,0x2124,0x2124,0x2124,0x2123,0x2103,0x2103,0x2124,0x2964,0x2964,0x2144,0x2144,0x2144,0x2944,0x2144,0x2944,0x2944,0x2944,0x2964,0x29a5,0x2986,0x2165,0x2965,0x2165,0x2165,0x2165,0x2165,0x2165,0x2965,0x2985,0x31a6,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2964,0x2985,0x2985,0x1923,0x1923,0x2144,0x2144,0x2144,0x1923,0x1903,0x18e2,0x10e2,0x18e2,0x18e2, +0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10e2,0x18e2,0x1903,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x2124,0x10e3,0x10e2,0x10e2,0x10e2,0x10e3,0x10e3,0x1903,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1103,0x10e2,0x10e2,0x10c2,0x10c2,0x10c1,0x10e2,0x08c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e3,0x10c2,0x10e3,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x18e3,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c2,0x18e3,0x08a1,0x10c2,0x10c2,0x10c2,0x08a1,0x08c2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x1903,0x10c2,0x10e2,0x10c2,0x10a2,0x10c2,0x10c2,0x1903,0x00a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x1903,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e3,0x08a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x1903,0x10e2,0x10e2,0x10e2,0x08a2,0x10c2,0x08a1,0x18e2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x2102,0x10c2,0x08a2,0x10e2,0x10c2,0x08a2,0x08c1,0x10c2,0x18a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x18e2,0x2123,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2123,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x2123,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1923,0x2944,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1923,0x1903,0x2144,0x1923,0x1923,0x1903,0x18e2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10c2,0x10c2,0x0000,0x29a6,0x6b6c,0x7bee,0x7c0f,0x842f,0x840e,0x7bee,0x7bee,0x840e,0x7bee,0x7c0e,0x840e,0x840e,0x842f,0x842f,0x840f,0x7c0e,0x7bee,0x7bee,0x7bee,0x7c0f,0x7c0f,0x840f,0x840f,0x7c0f,0x7bee,0x7bee,0x7bee,0x7bee,0x7bef,0x7bcf,0x7bce,0x636c,0x1965,0x0000,0x2123,0x1923,0x1923,0x18e2,0x10c2,0x10e2,0x0000,0x00a2,0x5b2b,0x73ae,0x73ae,0x73ae,0x73ce,0x7bce,0x73ce,0x73ce,0x73ae,0x73ce,0x73ae,0x4248,0x0000,0x1903,0x1903,0x10c2,0x10c2,0x10c2,0x10c2,0x0000,0x0000,0x52aa,0x6b8d,0x73ae,0x73ae,0x73ce,0x7bef,0x7bce,0x73ae,0x7bce,0x7bcf,0x73ce,0x528a,0x0000,0x08a2,0x1923,0x10e2,0x10c2,0x08a1,0x10e2,0x0881,0x0000,0x4228,0x6b8d,0x73ad,0x738d,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73cf,0x52ca,0x0000,0x00a1,0x1903,0x10c2,0x10e2,0x10c2,0x10e2,0x0060,0x0000,0x4a89,0x73ad,0x7bcf,0x7bef,0x73ef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bee,0x632b,0x0000,0x0000,0x1903,0x10c2,0x10c2,0x08a1,0x08a1,0x10c2,0x0000,0x2185,0x530b,0x632c,0x632c,0x632c,0x634c,0x634c,0x634c,0x6b8d,0x634c,0x634c,0x4a8a,0x0000,0x0000,0x1903,0x10e2,0x10e2,0x08a1,0x0881,0x10c3,0x0000,0x10c3,0x5b0b,0x634c,0x6b4c,0x6b4c,0x634c,0x632b,0x632b,0x630b,0x632b,0x6b8c,0x630b,0x10c2,0x0000,0x1903,0x10e1,0x10c1,0x10c2,0x10c2,0x18e3,0x0000,0x0040,0x5b0b,0x6b6d,0x6b8d,0x738d,0x6b8d,0x6b8d,0x6b6c,0x6b6c,0x6b4c,0x6b8d,0x632b,0x1103,0x0000,0x1923,0x10e2,0x10e2,0x08a1,0x08a1,0x10c2,0x0000,0x0000,0x528a,0x6b4c,0x6b8c,0x6b8c,0x636d,0x63ae,0x6bad,0x638d,0x6b6c,0x6b8d,0x630c,0x2145,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x08a1,0x10e1,0x0000,0x0000,0x4a69,0x634c,0x636d,0x638d,0x638d,0x6bad,0x6bad,0x6b6c,0x6b8d,0x6b6c,0x634c,0x29e7,0x0000,0x18e2,0x1903,0x10e2,0x10a1,0x10c1,0x10e2,0x0060,0x0000,0x3a28,0x634c,0x634c,0x634c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x634c,0x634c,0x3a28,0x0000,0x10e3,0x1924,0x1902,0x18e3,0x18e3,0x18e3,0x10a2,0x0000,0x31c6,0x630b,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x3a08,0x0000,0x18e2,0x2124,0x1903,0x18e3,0x18e2,0x1903,0x2103,0x0000,0x1966,0x5b0b,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x634d,0x634d,0x634d,0x634d,0x634c,0x634c,0x3a28,0x0000,0x1903,0x2144,0x2144,0x2144,0x2124,0x1903,0x18e2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x0000,0x840e,0xbd93,0xc5f4,0xc5d3,0xc5f4,0xce14,0xcdd3,0xcdd3,0xcdd3,0xcdd3,0xcdd3,0xc5d3,0xcdd3,0xcdd3,0xcdf3,0xcdf4,0xcdd4,0xcdd4,0xc5b4,0xc5b4,0xc5b4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xc5d4,0xbdb4,0xc5d4,0xc5f5,0xbdf5,0x7c2f,0x0000,0x2144,0x1923,0x10e2,0x10e2,0x0000,0x52a9,0xa533,0xadb4,0xb594,0xb595,0xb595,0xb595,0xb595,0xb595,0xb5b5,0xad95,0xad95,0xb5b5,0xc617,0x94f2,0x1903,0x1903,0x18e3,0x10c2,0x10e2,0x0000,0x39e7,0x9cf2,0xb5b5,0xad74,0xad74,0xad74,0xb595,0xbdd5,0xad53,0xa533,0xad74,0xad74,0xb5b4,0xc637,0xa514,0x2986,0x10e1,0x18e2,0x10c2,0x10c2,0x0000,0x00a0,0x94b1,0xbdd6,0xbdb5,0xb595,0xb574,0xb594,0xb5b5,0xb595,0xb595,0xb595,0xb574,0xb5b5,0xc637,0xb5b5,0x4248,0x0060,0x2124,0x10c2,0x10a2,0x0020,0x10e3,0x8c70,0xb5b4,0xad73,0xb574,0xb594,0xb594,0xb5b4,0xb5b4,0xb5b4,0xb5b5,0xb594,0xb5b4,0xbe16,0xad95,0x528a,0x0040,0x2124,0x10c2,0x10c2,0x10c2,0x0000,0x7bee,0xbdd5,0xb5b4,0xb594,0xb595,0xb5b5,0xbdb5,0xb5b5,0xb595,0xbdd5,0xb5b5,0xb595,0xbdd7,0xad74,0x4aa9,0x0060,0x2123,0x10c2,0x10c1,0x10c2,0x0000,0x6b6d,0xb5b5,0xbdb4,0xb573,0xad73,0xb573,0xad32,0xa511,0xa511,0xa4f1,0xa511,0xad52,0xad93,0xb594,0x738d,0x0000,0x2143,0x1102,0x10c2,0x18e3,0x0000,0x5b0b,0xb595,0xbdd5,0xb595,0xad74,0xad73,0xb593,0xb593,0xad73,0xad73,0xad32,0xad53,0xad73,0xb5d5,0x7bee,0x0000,0x2123,0x10e2,0x08a1,0x10c2,0x0000,0x3a07,0xb573,0xce15,0xc5b3,0xbdd3,0xc5d3,0xbdb4,0xbdb5,0xbdd5,0xc5b3,0xc5d3,0xc5d3,0xc5d5,0xc616,0x8450,0x0000,0x1903,0x1903,0x10c1,0x10c2,0x0000,0x2185,0xad32,0xce15,0xc5d4,0xc5d4,0xcdd4,0xc5b4,0xbdb4,0xbdb4,0xbd93,0xbdb3,0xbdb3,0xbdf4,0xce36,0x9cf2,0x10c2,0x1903,0x1903,0x10c2,0x10c2,0x0000,0x10c4,0xa4d2,0xd5f6,0xcdd5,0xcdd5,0xcdd5,0xcdd6,0xc5b5,0xc5d5,0xc5f5,0xc5d5,0xbdb4,0xc5d4,0xce15,0xa4d1,0x2165,0x1903,0x2123,0x18e3,0x18e2,0x08a1,0x0000,0x8c70,0xc5f6,0xbdd5,0xbdb5,0xb595,0xb595,0xbdb5,0xbdb5,0xbdb5,0xbd95,0xb595,0xb5d4,0xc657,0x9cf3,0x1904,0x10e2,0x2144,0x1903,0x18e3,0x18e3,0x0000,0x8430,0xce36,0xd635,0xce15,0xc615,0xc615,0xcdf5,0xcdf5,0xcdf5,0xc5f5,0xc615,0xc615,0xc615,0xc615,0xc615,0xc5f5,0xc5f5,0xc5f5,0xc5f5,0xc5f5,0xc615,0xc5f5,0xc5d4,0xce57,0x9d12,0x1923,0x2123,0x2164,0x2144,0x1923,0x1903,0x18e3,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x0000,0x73cf,0xb573,0xac2a,0x8b05,0x8a80,0x8260,0x8260,0x8260,0x8240,0x8240,0x8260,0x8260,0x8240,0x8260,0x7a40,0x8240,0x8260,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a60,0x7a60,0x8240,0x7a83,0x9c6d,0xbdd5,0x6bae,0x08a0,0x2144,0x1923,0x0000,0x31c7,0xa533,0x9cd0,0x5265,0x3980,0x3960,0x3960,0x3160,0x3160,0x3980,0x3960,0x3980,0x3960,0x3960,0x6b4b,0xbe17,0x94d2,0x08a0,0x2124,0x18e3,0x0020,0x2144,0x9d12,0xa511,0x5ac7,0x41a1,0x3960,0x3960,0x3960,0x3960,0x2900,0x28e0,0x3140,0x3140,0x3160,0x5ae9,0xbdd6,0xa534,0x1102,0x1902,0x18e3,0x10a2,0x0000,0x8c91,0xb594,0x7b6b,0x41c3,0x3981,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x5aa8,0xb5b5,0xb5d6,0x31a6,0x1102,0x1903,0x10a2,0x0000,0x8c50,0xad74,0x6b49,0x3960,0x3920,0x30e0,0x3100,0x3920,0x3940,0x3920,0x3920,0x3140,0x2920,0x4a25,0xad34,0xbdd7,0x3a27,0x10c2,0x18e3,0x18e2,0x0000,0x6b8d,0xbdf6,0x8c4e,0x5245,0x4a25,0x4a05,0x4a05,0x4a25,0x4a25,0x4a04,0x49e3,0x4a05,0x49e5,0x5a67,0xa553,0xb5f6,0x4a89,0x00a0,0x1903,0x10e2,0x0000,0x5aeb,0xc616,0x94af,0x5244,0x4a04,0x41e3,0x41c2,0x41a2,0x41a1,0x41c1,0x41c1,0x41c1,0x3980,0x39c2,0x842e,0xc617,0x738e,0x0000,0x1923,0x1903,0x0000,0x4a89,0xbe17,0xa512,0x5244,0x4204,0x39a1,0x3960,0x39a0,0x41a1,0x41a1,0x41a1,0x3980,0x3960,0x3960,0x8c4f,0xce78,0x7c10,0x0000,0x2123,0x10c2,0x0020,0x00e3,0xbdb4,0xcdd3,0x9347,0x8aa3,0x82a2,0x8aa2,0x9b87,0x9be9,0x9367,0x8281,0x82a2,0x82a3,0x82a4,0x9c4d,0xd678,0x8c91,0x0000,0x2144,0x10c2,0x0020,0x0001,0xb553,0xcdd2,0x9387,0x8ac4,0x8aa2,0x8281,0x9325,0x9ba7,0x9346,0x8283,0x8280,0x7aa1,0x72a4,0x93aa,0xce38,0xa514,0x0000,0x2144,0x1102,0x10a2,0x0000,0xa532,0xd614,0xa3c9,0x8ae5,0x8ae5,0x82e5,0x82c4,0x9b65,0x92e0,0x82c2,0x8ae4,0x8ae3,0x82c2,0x938a,0xd656,0xad74,0x0000,0x2144,0x1903,0x18e3,0x0000,0x8c91,0xc657,0x83ed,0x5246,0x5226,0x5225,0x4a25,0x5246,0x5246,0x5246,0x5246,0x5246,0x5245,0x736b,0xce58,0xad76,0x0000,0x2144,0x1903,0x2123,0x0000,0x8c71,0xeed7,0xb4ae,0x9326,0x8b05,0x8304,0x8b04,0x8ae3,0x8b03,0x8ae3,0x8ae3,0x8ae4,0x8ae4,0x8ae4,0x8ae5,0x8ae5,0x8ae4,0x8ae4,0x8ae4,0x8ae4,0x8ae4,0x8ae5,0x8ae5,0x82c4,0x8bcb,0xc614,0x9d33,0x00a1,0x2964,0x2144,0x2144,0x1923,0x1903,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10a1,0x10c2,0x0000,0x29c7,0xa4f1,0xa3c9,0x9ac0,0x92e1,0x8a80,0x8a60,0x8a80,0x8a80,0x8a80,0x8a80,0x8a80,0x8280,0x8280,0x8280,0x8a80,0x8a80,0x8a80,0x8a60,0x8240,0x8a60,0x8a60,0x8280,0x8280,0x8280,0x8260,0x8a60,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8240,0x68a0,0x93ec,0x9d13,0x3a07,0x1902,0x1923,0x0000,0x7bee,0x94b0,0x5222,0x4180,0x41a1,0x3980,0x4180,0x4181,0x41a1,0x41a1,0x41a0,0x3960,0x3960,0x3960,0x0000,0x5aea,0xb5b5,0x5aca,0x0080,0x1923,0x0000,0x6b8d,0xa510,0x5a84,0x3100,0x3980,0x3960,0x4180,0x3960,0x4160,0x3961,0x4182,0x3980,0x3960,0x3962,0x0000,0x41e6,0xadb5,0x636d,0x0000,0x2124,0x0000,0x4aaa,0xa553,0x7349,0x30e0,0x4180,0x3960,0x3140,0x3980,0x41a2,0x3981,0x3980,0x3980,0x3160,0x3961,0x0800,0x2020,0xb5d6,0x8c91,0x0000,0x2124,0x0000,0x3a08,0x94b1,0x6b29,0x3940,0x41a1,0x3981,0x4182,0x4182,0x3981,0x4181,0x4182,0x4182,0x3960,0x3981,0x1840,0x0000,0xb5b5,0x8cb1,0x0000,0x2144,0x0000,0x1945,0xa553,0x8c4e,0x2000,0x3940,0x3940,0x3140,0x3160,0x3160,0x3960,0x3940,0x3940,0x3120,0x3120,0x2060,0x0000,0xad95,0x9d13,0x0000,0x2144,0x1081,0x0000,0x9d13,0xa4d0,0x2860,0x3980,0x4180,0x3960,0x3960,0x3960,0x3140,0x3940,0x3940,0x3960,0x3960,0x3140,0x0000,0x9491,0xb5d6,0x2164,0x1903,0x18e2,0x0000,0x94f2,0xa532,0x3920,0x3960,0x3960,0x3960,0x3980,0x3940,0x3940,0x3960,0x4181,0x3940,0x3140,0x3120,0x0000,0x9491,0xc637,0x2144,0x10c1,0x1903,0x0000,0x840f,0xddf3,0x8aa0,0x7a00,0x8a60,0x8200,0x8b26,0xbd2f,0x9c0a,0x9346,0x7a41,0x8240,0x8240,0x7a20,0x5000,0x9c0d,0xc637,0x31e7,0x10c1,0x2103,0x0000,0x7bce,0xddf3,0x92e0,0x8220,0x8a60,0x7a60,0x7a60,0x9366,0xa3ea,0xb530,0x9b89,0x79c0,0x8260,0x7a40,0x5800,0x7b09,0xce57,0x632c,0x0000,0x2143,0x0000,0x6b6c,0xd613,0x9b84,0x8220,0x8260,0x8240,0x7200,0xb46b,0xcd51,0xbcf0,0x8ae4,0x8200,0x8240,0x8240,0x60a0,0x7ac7,0xd677,0x6bad,0x0000,0x2944,0x0000,0x4228,0xbdd5,0x83cc,0x1000,0x3960,0x3940,0x4160,0x3120,0x3100,0x28e0,0x3120,0x3960,0x3940,0x3920,0x0000,0x4a07,0xce79,0x7bef,0x0000,0x2965,0x0000,0x21a6,0xde77,0xcd0e,0x7960,0x8a60,0x8a80,0x8280,0x8260,0x8260,0x8260,0x8a80,0x8a80,0x8a80,0x8260,0x8a60,0x8260,0x8260,0x8240,0x8220,0x8240,0x8260,0x8280,0x8a60,0x8240,0x8240,0x60e0,0x7aa5,0xc616,0x636d,0x0081,0x2985,0x2144,0x2124,0x1903,0x18e2,0x18e3,0x18e3, +0x10a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10e3,0x0000,0x52eb,0xa4d0,0xa341,0xa365,0x9303,0x8aa1,0x8281,0x8281,0x8281,0x8281,0x8281,0x8281,0x8281,0x8281,0x8261,0x8261,0x8a81,0x8a81,0x8281,0x8261,0x8281,0x82a1,0x8281,0x8280,0x8a81,0x8a81,0x8261,0x8281,0x8280,0x8281,0x8281,0x8280,0x8281,0x8281,0x8260,0x7a61,0x7a00,0x7ae6,0x94b2,0x52aa,0x2102,0x10e2,0x08a3,0x842f,0x7bcc,0x5223,0x49e3,0x41a2,0x41a1,0x3140,0x28c0,0x28c0,0x3120,0x3140,0x3961,0x4161,0x3961,0x3940,0x2922,0x9d13,0x6b4c,0x0080,0x1923,0x0000,0x7bee,0x8c6e,0x5222,0x49c3,0x41a2,0x4181,0x3100,0x3941,0x41a2,0x4181,0x30e0,0x3980,0x3961,0x3962,0x3942,0x2000,0x94f2,0x7c30,0x0000,0x1924,0x0000,0x634c,0x9cf1,0x62c6,0x4a03,0x49a3,0x4181,0x41a2,0x28e0,0x1000,0x2000,0x4161,0x4181,0x3961,0x3961,0x4183,0x0000,0x94b1,0x9d33,0x0880,0x1924,0x0000,0x52eb,0x8c8f,0x5a85,0x4a03,0x49c2,0x4182,0x3100,0x3120,0x39a1,0x39a1,0x28c0,0x3120,0x3961,0x3960,0x3983,0x0000,0x8c70,0x94f2,0x0080,0x2144,0x0000,0x4269,0xa532,0x6b28,0x49c0,0x41c3,0x4181,0x4160,0x3120,0x28c0,0x30c0,0x3940,0x4182,0x3981,0x3961,0x39a3,0x0000,0x7c0f,0xa554,0x2123,0x1923,0x0020,0x1925,0x9cf2,0x7b8a,0x49c0,0x49e3,0x41c1,0x41a1,0x3140,0x3981,0x39a1,0x3960,0x3120,0x3980,0x3981,0x4183,0x1000,0x5aca,0xb5d6,0x52ea,0x0060,0x10a1,0x1103,0x9d33,0x83cc,0x4180,0x49e3,0x49a2,0x3940,0x2900,0x3961,0x41a1,0x3960,0x30e0,0x3140,0x3961,0x3982,0x0800,0x630a,0xc637,0x52ca,0x0000,0x2124,0x0000,0x9cf2,0xcd50,0x8220,0x8ac3,0x8aa2,0x7a20,0x9b46,0xb4ad,0x7a63,0x7a00,0x8241,0x8260,0x7240,0x7a41,0x71e0,0x6a22,0xbdd6,0x632c,0x0000,0x2103,0x0000,0x9470,0xc530,0x92a0,0x8ac4,0x8281,0x8a81,0x8261,0x8240,0x79e0,0xaced,0x9bc9,0x71c0,0x7a61,0x7a41,0x7223,0x5920,0xbdf5,0x8c51,0x0000,0x2144,0x0000,0x9470,0xc571,0x9ae0,0x92e4,0x8a82,0x8a61,0x8281,0xa3c8,0x93a9,0xcd92,0x9ba8,0x8240,0x8282,0x8261,0x7a42,0x5860,0xbdd4,0x94d2,0x0000,0x2965,0x0000,0x6b6d,0xb594,0x62a5,0x4a03,0x49c3,0x49a2,0x4182,0x49e3,0x5a85,0x5a86,0x49e4,0x41a1,0x4182,0x3961,0x39a3,0x0000,0xb595,0x9cf3,0x0000,0x2965,0x0000,0x5b2c,0xde35,0xabc7,0x92c0,0x92e3,0x82a2,0x82a1,0x82a2,0x82a2,0x8281,0x8aa1,0x8aa1,0x8a82,0x8a82,0x8a82,0x8282,0x8282,0x8281,0x82a1,0x8281,0x8281,0x82a1,0x8282,0x8281,0x7a81,0x7a63,0x6100,0xad32,0x8c91,0x0000,0x3185,0x2144,0x1923,0x18e2,0x10e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e3,0x0000,0x530c,0x9cd0,0xa364,0xa365,0x9303,0x8ac1,0x8aa0,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x8a60,0x8a61,0x8261,0x8a81,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x8a60,0x8a80,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71e0,0x7b07,0x9cf3,0x5aeb,0x2122,0x10e2,0x0083,0x7c0e,0x7bec,0x5223,0x49e3,0x41c2,0x4180,0x5225,0x62a8,0x5aa8,0x5a87,0x4a25,0x4181,0x3960,0x3140,0x30e0,0x3184,0x94d2,0x632c,0x1101,0x1923,0x0000,0x73ce,0x8c4e,0x5223,0x49c3,0x41a2,0x3980,0x5224,0x41c2,0x3981,0x3940,0x5225,0x41c2,0x3140,0x3161,0x28e0,0x28e0,0x8cb1,0x740f,0x08a0,0x1903,0x0000,0x634d,0x9cf1,0x62a5,0x4a02,0x49e2,0x41c2,0x28c0,0x52a7,0x8c6e,0x7bab,0x2880,0x3920,0x3961,0x3140,0x3121,0x0000,0x8470,0x9cf3,0x2122,0x1903,0x0000,0x52eb,0x94b0,0x62e7,0x49e2,0x41c2,0x4180,0x62c7,0x5265,0x3140,0x3980,0x6308,0x5a86,0x3100,0x3960,0x3161,0x1000,0x8c70,0x94f2,0x10e2,0x2123,0x0000,0x4a69,0xa532,0x6b29,0x41a0,0x41c2,0x4180,0x4180,0x4a05,0x5a87,0x5a67,0x3941,0x2900,0x3961,0x3940,0x3142,0x0000,0x7bef,0xa554,0x3185,0x1903,0x0000,0x1945,0x9cf2,0x7bab,0x49c0,0x49c3,0x41a1,0x39a0,0x41e0,0x3160,0x3960,0x4182,0x41e3,0x3980,0x3960,0x3962,0x1800,0x5289,0xad75,0x5b0b,0x08c1,0x1060,0x1924,0x9d33,0x83ed,0x49a0,0x49e2,0x3960,0x49c3,0x4a04,0x3981,0x3960,0x41c0,0x4a24,0x41a2,0x3140,0x3141,0x1000,0x5aca,0xb5d6,0x52ca,0x0000,0x2124,0x0000,0xa533,0xcd50,0x8a40,0x8ac3,0x8281,0x7a20,0x9326,0xb48d,0x7243,0x7a00,0x8260,0x8240,0x7a40,0x7a20,0x69c0,0x6a43,0xb595,0x6b8d,0x0000,0x2123,0x0000,0x9470,0xc52f,0x92c0,0x92c3,0x8aa1,0x8281,0x8260,0x8220,0x79c0,0xaccd,0x9ba8,0x79c0,0x7a41,0x7220,0x7201,0x5920,0xbdf5,0x8c71,0x0000,0x2144,0x0000,0x9490,0xc571,0x9b00,0x92c2,0x8a81,0x8a80,0x8260,0x69c0,0xb46b,0xb48c,0x7a40,0x8240,0x7a61,0x7a20,0x7221,0x6100,0xbdb4,0x9d12,0x0000,0x2964,0x0000,0x73ae,0xb5b4,0x5a65,0x41c2,0x49e3,0x41a2,0x3120,0x7349,0xbdb4,0xc5f6,0x7bac,0x2920,0x39a1,0x3940,0x3961,0x0000,0xa534,0x9cf3,0x0000,0x2985,0x0000,0x6b8d,0xde56,0xabc7,0x92e0,0x92e3,0x8ac2,0x8aa1,0x8a80,0x8a80,0x8260,0x8aa1,0x8280,0x8a81,0x8a81,0x8a81,0x8aa2,0x8a82,0x8aa0,0x8a80,0x8a80,0x8260,0x8261,0x8260,0x8260,0x7a60,0x7a42,0x58e0,0xad12,0x94b2,0x0000,0x31a5,0x2144,0x1903,0x18e2,0x10e2,0x18e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e3,0x0000,0x4acb,0x9cb0,0xa384,0xa364,0x9303,0x92e2,0x8ac1,0x8280,0x8280,0x8280,0x8280,0x8280,0x8280,0x8a80,0x8240,0x7a40,0x7a60,0x8280,0x8a60,0x8240,0x8240,0x8240,0x8240,0x7a00,0x8240,0x8280,0x8260,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71a0,0x7b07,0x9cf3,0x52eb,0x2143,0x1102,0x0062,0x7bee,0x7bcc,0x5243,0x4a03,0x41a3,0x3920,0x9c6e,0xc5f4,0xbd93,0xce36,0xc5f4,0x49e2,0x3120,0x3961,0x30e0,0x3164,0x94d2,0x6b6c,0x1101,0x1923,0x0000,0x7bee,0x8c4d,0x5243,0x49c3,0x49e3,0x2040,0x946d,0xbd92,0x0000,0x8c2e,0xbd93,0x5223,0x3120,0x3141,0x28e0,0x28c0,0x8c91,0x73ef,0x10c0,0x1903,0x0000,0x634d,0x9cd1,0x62a6,0x5223,0x5223,0x2900,0x7bab,0xc635,0xb5b4,0xc636,0xad72,0x39e3,0x2920,0x3141,0x3141,0x0000,0x8c70,0x94d2,0x2122,0x1924,0x0000,0x4aaa,0x94b0,0x62c6,0x4a03,0x49c3,0x3080,0xad53,0xad53,0x0000,0x5225,0xc615,0x840e,0x1000,0x39a2,0x3141,0x1000,0x8470,0x8cb1,0x1923,0x2123,0x0000,0x4269,0x9d12,0x6b08,0x41c0,0x49e3,0x20c0,0x7bed,0xc617,0xb5d3,0xc5d4,0xb573,0x5ac7,0x30c0,0x3940,0x3142,0x0000,0x7c0f,0x9d14,0x2944,0x1923,0x0000,0x1925,0x9d12,0x7bab,0x49c0,0x49e4,0x3120,0x62c7,0xce35,0x948f,0x0000,0x83ac,0xad52,0x41e1,0x3120,0x3962,0x1000,0x52a9,0xad74,0x52eb,0x10e2,0x1080,0x08e3,0x9d33,0x8c0d,0x4180,0x4a03,0x28a0,0x9c8e,0xce56,0x83ed,0x0000,0x9ccf,0xce76,0x7b8a,0x1800,0x3962,0x0000,0x62ea,0xbdd6,0x5aeb,0x0000,0x2124,0x0000,0xa513,0xcd30,0x8aa0,0x92e4,0x8aa2,0x8240,0x9347,0xbd50,0xa40a,0x9345,0x7aa3,0x7a61,0x7a42,0x7a42,0x71e0,0x7284,0xb5d5,0x6b8d,0x0000,0x2103,0x0000,0x9490,0xc530,0x9b00,0x9b04,0x92c2,0x82a2,0x7aa2,0x9325,0x9b88,0xbd50,0x93a9,0x79e0,0x7a62,0x7221,0x7222,0x5940,0xbdf5,0x8c51,0x0000,0x2144,0x0000,0x9490,0xcd91,0x9b21,0x9b04,0x8ae3,0x82c2,0x7a81,0x82c4,0xb46c,0x8b06,0x8240,0x8282,0x7a62,0x8242,0x7a42,0x6100,0xbdd4,0x94f2,0x0000,0x2985,0x0000,0x73ef,0xbdd5,0x5a64,0x5203,0x49e3,0x41a2,0x3120,0x7bcb,0xc637,0xce78,0x840e,0x20c0,0x3982,0x3940,0x3141,0x0000,0xad34,0x9cf3,0x0000,0x2965,0x0000,0x6b8d,0xde76,0xabc7,0x92e1,0x8ac2,0x8ac1,0x8aa1,0x8aa0,0x8a80,0x8260,0x7a60,0x8281,0x8aa0,0x8aa0,0x8280,0x7a60,0x7a60,0x8260,0x7a20,0x8260,0x8260,0x8260,0x8261,0x7a60,0x7a40,0x7221,0x6120,0xad12,0x8c91,0x0082,0x3185,0x1924,0x1903,0x18e3,0x18e2,0x18e3,0x18e2, +0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x1903,0x0000,0x4acb,0x9cb0,0xa384,0xa365,0x9b03,0x92e2,0x8aa0,0x8280,0x8280,0x8280,0x8280,0x8280,0x8aa0,0x8260,0x9b46,0xabc9,0x9345,0x8ae2,0x8ae2,0x9344,0x9366,0xa3c8,0x9367,0xa3e9,0x9b66,0x7a60,0x8280,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a20,0x71a0,0x7b07,0x9cf3,0x5aeb,0x2143,0x10e2,0x08a3,0x7bee,0x7bab,0x5244,0x5203,0x49c2,0x4180,0x5a87,0x62e9,0x6b69,0xd698,0xad53,0x2060,0x3981,0x3961,0x30c0,0x3163,0x94d2,0x6b6c,0x1101,0x1923,0x0000,0x7bee,0x8c4d,0x5222,0x49e3,0x41c2,0x2920,0x5ac7,0xce35,0xa511,0xce16,0x9cb0,0x1840,0x3961,0x3141,0x28c0,0x28e0,0x8cb1,0x73ee,0x10a0,0x1903,0x0000,0x636d,0x94b0,0x5a65,0x5224,0x49c2,0x49e2,0xc615,0xad32,0x0000,0x6b2a,0xb572,0x6b28,0x2080,0x3961,0x3941,0x0000,0x8c70,0x94f2,0x2122,0x2124,0x0000,0x52cb,0x9490,0x5aa6,0x5203,0x4a03,0x2800,0x8c70,0xc636,0x3940,0x83ec,0xc615,0x4a48,0x30c0,0x3981,0x3141,0x1000,0x844f,0x94d2,0x1902,0x2144,0x0000,0x4269,0x9d12,0x6308,0x41c0,0x4a04,0x0800,0x9cb1,0xce17,0x52a5,0x5a86,0xc636,0x948f,0x0800,0x3942,0x3142,0x0000,0x840f,0xa534,0x2123,0x1923,0x0000,0x1125,0x9d12,0x83ab,0x49a0,0x4a04,0x3100,0x6b29,0xe6db,0xd6b9,0x41e0,0x83cd,0xc5f5,0x39e2,0x30e0,0x4162,0x1000,0x5289,0xad74,0x5b0b,0x08c1,0x1080,0x0903,0x9d13,0x83ed,0x49a0,0x49e3,0x2860,0xad31,0xe73b,0xa4f2,0x0800,0xadb4,0xdefa,0x83ec,0x1800,0x3962,0x0000,0x62ea,0xb5d6,0x5aca,0x0020,0x1903,0x0000,0xa533,0xc50f,0x7960,0x8240,0x7a00,0x79a0,0x8220,0x93a8,0x9b86,0x92e0,0x71c0,0x7180,0x6980,0x6960,0x6900,0x6220,0xbdd6,0x6b8d,0x0000,0x2103,0x0000,0x9c90,0xbcee,0x8a00,0x8a60,0x8220,0x81c0,0x69c0,0x8b02,0xaba8,0x9ba7,0x7a20,0x7180,0x7180,0x6960,0x6120,0x5040,0xc636,0x8c71,0x0000,0x2964,0x0000,0x9c90,0xc570,0x9280,0x8a60,0x8240,0x8200,0x79e0,0x79e0,0x9b66,0x8260,0x7980,0x7a00,0x69c0,0x7180,0x71a0,0x5000,0xbdd4,0x94f2,0x0000,0x2964,0x0000,0x73cf,0xb5b4,0x5a44,0x5203,0x49e3,0x49c2,0x2900,0x8c4e,0xc657,0xce37,0x8c2e,0x28c0,0x3962,0x3920,0x3141,0x0000,0xad75,0xa534,0x0000,0x2965,0x0000,0x6b8d,0xde56,0xabc7,0x9b02,0x9303,0x8ac1,0x8aa1,0x8aa1,0x8260,0x9324,0x9b66,0x82e3,0x8280,0x8ac0,0x8ae3,0x9305,0x9346,0x9346,0x9b87,0x8ae4,0x8280,0x8280,0x8260,0x7a60,0x7a40,0x7221,0x6100,0xad33,0x94b2,0x0000,0x3185,0x2124,0x1903,0x18e2,0x18e2,0x18e3,0x18e2, +0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x0000,0x4aeb,0xa4b0,0xab84,0xa365,0x9b03,0x92e2,0x8aa0,0x8a80,0x8280,0x8280,0x8280,0x8280,0x8a81,0x7a40,0xac2a,0xbcce,0xa44b,0xbd0d,0xb4ed,0xac8d,0xbcee,0xbccc,0x8b46,0xbcab,0xa3c7,0x7a20,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71c0,0x7b07,0x9cf3,0x530b,0x2923,0x10e2,0x08a3,0x7bee,0x738b,0x5243,0x5224,0x49c3,0x41a2,0x3940,0x0000,0xb594,0xbdd5,0x3100,0x3140,0x3981,0x3941,0x28c0,0x3184,0x94d2,0x6b4c,0x1922,0x1903,0x0000,0x73ee,0x840d,0x5223,0x49e3,0x49c2,0x49c3,0x0800,0x7bed,0xe73a,0xbdd4,0x2020,0x3960,0x3941,0x3121,0x28c0,0x28e0,0x8cb2,0x73ef,0x10c0,0x1923,0x0000,0x636d,0x8c90,0x5a65,0x5225,0x4160,0x738a,0xce76,0x5ac8,0x3080,0x3940,0x2800,0x3940,0x3961,0x3160,0x3121,0x0000,0x8c70,0x94d2,0x1901,0x2124,0x0000,0x52cb,0x9490,0x6286,0x4a03,0x4a03,0x3940,0x5287,0xc614,0x6b29,0xa510,0xad51,0x0000,0x3981,0x3960,0x3141,0x1000,0x8c70,0x94d2,0x00a0,0x2124,0x0000,0x4269,0x9cf1,0x6b08,0x41a1,0x4a04,0x2040,0x8c8f,0xce77,0x9490,0xa512,0xbe15,0x6b6a,0x2000,0x3941,0x3942,0x0000,0x7c0f,0xa534,0x2964,0x2123,0x0000,0x1945,0x9cf2,0x83ab,0x49c0,0x5224,0x3060,0x736b,0xbe16,0xce37,0xad11,0x738c,0xbdd5,0x4a03,0x3100,0x3962,0x1800,0x5aa9,0xa575,0x5aeb,0x10e2,0x1080,0x1124,0x94f2,0x83cc,0x49c0,0x49e3,0x3100,0xa511,0xc636,0xa511,0x62e7,0xad51,0xbdb5,0x8bee,0x0800,0x3962,0x0800,0x62ca,0xb5b6,0x52eb,0x0020,0x2124,0x0000,0xad75,0xeeb7,0xbcce,0xb4ce,0xac8c,0xac6c,0xac4c,0xa42c,0xa42c,0xa42c,0xac4c,0xac4c,0xa42c,0x9c0c,0x8bab,0x944d,0xbdf6,0x634c,0x0020,0x2124,0x0000,0x9cb1,0xee97,0xc50f,0xbcef,0xb4ae,0xb48d,0xac6c,0xa44c,0xa42c,0xa42c,0xa44c,0xa42c,0x9c0b,0x9beb,0x93cb,0x83ac,0xce78,0x8450,0x0000,0x2144,0x0000,0x8c70,0xe6d8,0xc550,0xb4cd,0xb48d,0xb46d,0xac4d,0xac4c,0xa42b,0xa44c,0xac4c,0xa42c,0xa40c,0x9bec,0x93cb,0x83ab,0xce57,0x94b2,0x0000,0x2964,0x0000,0x73ae,0xad73,0x5a44,0x4a04,0x4a03,0x49c1,0x41a1,0xa4f1,0xce16,0xce36,0x9cd0,0x3940,0x4162,0x3941,0x3921,0x0000,0xad95,0x9d33,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x9302,0x9303,0x8ac1,0x8aa1,0x8280,0x8280,0xbc8b,0xb48b,0xa449,0xb46b,0xb4ae,0xac6d,0xbd0f,0xb46b,0x9b87,0xbccc,0x9345,0x8260,0x8281,0x8261,0x7a60,0x7a40,0x7222,0x6100,0xad53,0x94b2,0x0000,0x3185,0x2144,0x1903,0x18e3,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1923,0x0000,0x4aeb,0xa4d0,0xab64,0xa345,0x9303,0x92c2,0x8aa0,0x8a80,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x9b87,0xbcac,0xbccd,0xb48b,0xac6b,0xb4ac,0xbcac,0xa3c8,0x7220,0xac07,0x9345,0x7a20,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x7a40,0x71c0,0x8307,0x9cf3,0x52eb,0x2943,0x10e2,0x00a3,0x7bce,0x736a,0x5223,0x5203,0x49e2,0x49a2,0x0000,0x9cef,0xce77,0x5268,0x20a0,0x41c2,0x3960,0x3961,0x28c0,0x3184,0x94b1,0x6b4c,0x2143,0x18e3,0x0000,0x73ce,0x83ec,0x5223,0x4203,0x41c2,0x49a3,0x1800,0x73ad,0xe75b,0xb5b4,0x2000,0x3961,0x3940,0x3121,0x28c0,0x28e0,0x8cb2,0x73ce,0x08c0,0x1903,0x0000,0x5b4c,0x8c6f,0x5a85,0x5245,0x4160,0x7b8a,0xce76,0x5ac8,0x1800,0x2900,0x5264,0x4a03,0x2920,0x3140,0x3121,0x0000,0x8c90,0x94d2,0x1902,0x2124,0x0000,0x52ca,0x8c6f,0x5a85,0x4a03,0x4a02,0x41c2,0x30e0,0xad52,0xa532,0xb593,0x840d,0x0800,0x3982,0x3140,0x3141,0x1000,0x8c70,0x94d1,0x08c1,0x1903,0x0000,0x4269,0x9cd1,0x6ae7,0x49a2,0x4a04,0x2800,0x948f,0xc636,0x9c6f,0x9caf,0xc615,0x8c6f,0x1800,0x3961,0x3122,0x0000,0x840f,0xa534,0x2984,0x1903,0x0000,0x1945,0x9cf2,0x7b8a,0x49c0,0x4a24,0x3000,0x7bac,0xbdf4,0x6b28,0xc5d4,0xad94,0xb5d4,0x49c1,0x3120,0x3162,0x1800,0x5ac9,0xa575,0x5aeb,0x18c1,0x0881,0x1103,0x94f2,0x7bcc,0x49a0,0x4a03,0x3120,0xa4f1,0xa531,0xa532,0x9cd1,0x9cae,0xad32,0x8c0e,0x0000,0x3942,0x0800,0x5ac9,0xb5b5,0x52ea,0x0060,0x2124,0x0000,0xa554,0xef5c,0xc5f5,0xc5d4,0xbd72,0xb552,0xad32,0xb532,0xad11,0xad11,0xad32,0xb532,0xacf0,0xa4f1,0x9cd0,0x9d33,0xbe17,0x630b,0x0040,0x2144,0x0000,0x94f5,0xf77d,0xd616,0xcdd5,0xc5b4,0xbd92,0xb572,0xb552,0xb552,0xb552,0xb552,0xad32,0xad11,0xa4d1,0x9cb0,0x9cd1,0xce78,0x842f,0x0000,0x2944,0x0000,0x8c73,0xf77d,0xe676,0xcdf3,0xc5b4,0xbd93,0xbd73,0xb552,0xb572,0xbd93,0xb572,0xb572,0xb532,0xad12,0xacf0,0xa4f0,0xd6b9,0x8c92,0x0000,0x2964,0x0000,0x73ae,0xad73,0x5a64,0x4a04,0x5245,0x2880,0x734a,0xad32,0xb574,0xb594,0xb593,0x6b2a,0x1800,0x39a3,0x3901,0x0000,0xa554,0x94f2,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8aa1,0x8a80,0x8281,0xac0a,0xbcee,0xbccd,0xbcac,0xc50e,0xbcce,0xc50e,0xa409,0x82a1,0xac29,0x82c3,0x8260,0x8281,0x8261,0x7a60,0x7a40,0x7222,0x6120,0xad33,0x94b2,0x0000,0x3185,0x2144,0x1903,0x18e2,0x10c2,0x10e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1923,0x0000,0x4acb,0x9caf,0xab84,0xa345,0x9303,0x8ac1,0x8a80,0x8280,0x8280,0x8280,0x8280,0x8280,0x8a80,0x8a60,0x9304,0x9b87,0x9325,0x8280,0x8ac1,0x9325,0x9303,0x8a80,0x8261,0x8ae3,0x8aa2,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a60,0x7a40,0x71c0,0x8307,0x9cd2,0x52ea,0x2943,0x10c2,0x08c3,0x7bee,0x736a,0x5223,0x5203,0x49c2,0x30c0,0x844e,0xd6f9,0x842d,0x3940,0x5245,0x3980,0x3960,0x3941,0x28c0,0x39a4,0x94b1,0x634c,0x2143,0x1903,0x0000,0x73ee,0x840d,0x5a43,0x4a03,0x41e2,0x2900,0x5aa7,0xce36,0xad54,0xce57,0x946e,0x0000,0x3982,0x3120,0x28c0,0x28e0,0x8c92,0x73cf,0x10e1,0x1924,0x0000,0x634c,0x94b0,0x62a5,0x5243,0x5203,0x49e2,0xc615,0xb573,0x20e0,0x83ed,0xc5d3,0x6308,0x1000,0x3961,0x3121,0x0000,0x8c70,0x94d2,0x2123,0x2124,0x0000,0x4aca,0x8c4f,0x5a86,0x4a03,0x49e2,0x49e3,0x2800,0x83cc,0xdf1a,0xbe16,0x49e4,0x3900,0x3981,0x3140,0x3141,0x1000,0x8470,0x94d1,0x10e2,0x1923,0x0000,0x4269,0x94d0,0x62e7,0x49c2,0x4a24,0x2000,0xa4d1,0xbdd4,0x2880,0x0000,0xb5b4,0xb594,0x0800,0x3141,0x3162,0x0000,0x842f,0xa554,0x2964,0x2123,0x0000,0x1945,0x9cd2,0x7b6a,0x49c0,0x4a24,0x2800,0x7bab,0xce76,0x4a26,0x840e,0xdf1a,0xbe36,0x3940,0x3920,0x3962,0x1800,0x5ac9,0xa555,0x52eb,0x18c2,0x0861,0x1103,0x94d2,0x7bcc,0x49a0,0x4a03,0x2900,0xb572,0x9c8e,0xa4f2,0xe6fb,0x738b,0xad53,0x946f,0x0000,0x3962,0x0000,0x5aa9,0xb5b6,0x5aeb,0x0060,0x1903,0x0000,0x9d13,0xa512,0x30e0,0x39a0,0x3120,0x28e0,0x20c0,0x20a0,0x28e0,0x28e0,0x20a0,0x2080,0x1800,0x1820,0x0000,0x4247,0xb5d6,0x6b6c,0x0000,0x2103,0x0000,0x8cd1,0x9d11,0x3980,0x39c0,0x3180,0x3120,0x2900,0x2900,0x28e0,0x20c0,0x20c0,0x20a0,0x1840,0x1000,0x0000,0x20a0,0xc637,0x8c71,0x0000,0x2144,0x0000,0x8cb2,0xad94,0x5200,0x41c0,0x41a0,0x3140,0x2900,0x28e0,0x20e0,0x2880,0x2900,0x2900,0x28e0,0x28e0,0x2040,0x28c0,0xbdd6,0x94d2,0x0000,0x2964,0x0000,0x6bae,0xad73,0x5a85,0x5203,0x2800,0x4a03,0xc5f4,0x8c6f,0xa532,0xa532,0x948f,0xbdd4,0x3963,0x0000,0x3922,0x0000,0xa554,0x9d13,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8aa1,0x8a81,0x8261,0x9b87,0xac09,0x9b87,0x8ae2,0x9345,0x9ba7,0x9b65,0x8280,0x8282,0x9346,0x82a2,0x8260,0x8281,0x8261,0x7a60,0x7a40,0x7222,0x6120,0xad33,0x94b2,0x0020,0x3186,0x2145,0x1903,0x10e2,0x10c2,0x10c2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x0000,0x4acb,0x9caf,0xab84,0xa345,0x9303,0x92c2,0x8aa0,0x8280,0x8280,0x8280,0x8280,0x8280,0x8a80,0x8a80,0x8280,0x7a40,0x8240,0x8260,0x8240,0x8240,0x8240,0x8a60,0x8260,0x7a40,0x8260,0x8260,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71c0,0x8307,0x94b2,0x4aca,0x2943,0x10c2,0x08c3,0x7bee,0x738b,0x5a44,0x5203,0x41a2,0x28a0,0xb5b4,0xdefa,0xbd93,0xc5b4,0xad12,0x4a04,0x3120,0x3961,0x28e0,0x39a4,0x94b1,0x632b,0x2143,0x18e2,0x0000,0x73ee,0x840d,0x5223,0x4a03,0x41e2,0x2080,0xad11,0xc5f5,0x0000,0x9cb0,0xce14,0x5264,0x28e0,0x3141,0x28c0,0x28e0,0x8c92,0x73ef,0x1901,0x1924,0x0000,0x634c,0x94d0,0x5a85,0x5223,0x5223,0x3920,0x7b8b,0xc5f5,0xbdd4,0xce16,0x9c90,0x3100,0x3141,0x3140,0x3121,0x0000,0x8c70,0x94d2,0x2123,0x2124,0x0000,0x4aaa,0x8c4f,0x62a6,0x49e2,0x41c2,0x41a2,0x3940,0x49e3,0xc615,0x9cf1,0x1800,0x41a2,0x3980,0x3940,0x3141,0x1800,0x844f,0x8cb1,0x1923,0x1923,0x0000,0x4269,0x94b0,0x62e7,0x49c2,0x4a04,0x28e0,0x8c4e,0xce77,0xb573,0xbdd4,0xbdd5,0x736b,0x28c0,0x3141,0x2942,0x0000,0x842f,0xa554,0x2964,0x1923,0x0000,0x2166,0x9cf2,0x7b6a,0x49e1,0x4a24,0x2840,0x7b8a,0xc614,0x5aa7,0x2000,0xb5d4,0xc615,0x3940,0x3120,0x3962,0x1800,0x5ac9,0xa554,0x52cb,0x1902,0x1081,0x08e3,0x94d2,0x83ec,0x51e1,0x4a03,0x3120,0xad31,0x942d,0x840e,0xde98,0x5aa6,0xad12,0x8c2e,0x0000,0x3962,0x0800,0x5ac9,0xb5d6,0x5b0b,0x0060,0x18e3,0x0000,0x94d2,0x946f,0x4140,0x5224,0x41a2,0x49a2,0x4182,0x4161,0x3940,0x3961,0x4161,0x3961,0x3940,0x3941,0x20a0,0x41c3,0xb5d5,0x6b6d,0x0000,0x2103,0x0000,0x8c91,0x946f,0x4980,0x5225,0x49c2,0x49c2,0x49c2,0x4161,0x3940,0x4161,0x4161,0x3941,0x3921,0x3941,0x3942,0x0000,0xbdd5,0x8c70,0x0000,0x2144,0x0000,0x8490,0x94f0,0x5200,0x5244,0x49e3,0x49a2,0x41a1,0x3960,0x49e4,0x838a,0x49c3,0x4181,0x4161,0x3941,0x3142,0x0000,0xad54,0x94b2,0x0000,0x2944,0x0000,0x6b8d,0xad73,0x5a65,0x5224,0x8c2e,0xd656,0xc5f4,0x0000,0xb594,0xb593,0x0000,0xbdb3,0xc615,0x7bcc,0x3120,0x0000,0xa554,0x9d13,0x0000,0x2985,0x0000,0x6b6d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8aa1,0x8a80,0x82a0,0x7a80,0x7a60,0x8280,0x8a81,0x8260,0x7a40,0x8260,0x8a81,0x8260,0x7a60,0x8281,0x8260,0x7a60,0x8260,0x7a60,0x7a40,0x7222,0x6120,0xad33,0x94b2,0x0040,0x3186,0x2144,0x1903,0x18e2,0x10c2,0x10c2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x1923,0x0000,0x4acb,0xa4d0,0xab84,0xa344,0x9303,0x8ac1,0x8280,0x8280,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x8280,0x8280,0x8a81,0x8a60,0x8260,0x8280,0x8280,0x8260,0x8260,0x8260,0x8280,0x8260,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71e0,0x8307,0x9491,0x4aca,0x2943,0x08c2,0x10e4,0x7bee,0x738b,0x5244,0x5203,0x41c2,0x41c1,0x5a67,0x6b0a,0x736b,0x734b,0x6b0a,0x41a2,0x3960,0x3961,0x28a0,0x39a5,0x94b1,0x632b,0x2163,0x10e2,0x0000,0x740f,0x840d,0x5223,0x49e3,0x41a1,0x39a0,0x6b09,0x5245,0x3920,0x41a1,0x6b28,0x4a24,0x3900,0x3941,0x28e0,0x30e0,0x8c91,0x73ce,0x1901,0x1924,0x0000,0x636d,0x9cd1,0x62a6,0x5224,0x5203,0x49c2,0x2900,0x4a45,0x738b,0x62c8,0x2040,0x3940,0x3960,0x3140,0x3141,0x0800,0x8c70,0x94b1,0x2123,0x2123,0x0000,0x4aaa,0x842e,0x5a85,0x49e3,0x41c2,0x41a1,0x41a1,0x3980,0x4a23,0x39c1,0x3960,0x4180,0x3960,0x3960,0x3141,0x1800,0x844f,0x8c91,0x1903,0x2124,0x0000,0x4269,0x94b0,0x62e7,0x49c3,0x49e3,0x4180,0x5245,0x6b4a,0x7b8b,0x7b8b,0x5a87,0x30e0,0x3940,0x3920,0x3142,0x0000,0x840f,0xa534,0x2964,0x1903,0x0000,0x2166,0x9cd2,0x7b6a,0x4a01,0x4203,0x4180,0x5225,0x62e8,0x41a2,0x4100,0x5224,0x62e8,0x4160,0x3940,0x3162,0x1800,0x5aca,0x9d54,0x52cb,0x1902,0x1081,0x08c2,0x94d2,0x83ec,0x49c0,0x4a03,0x41a0,0x5a66,0x5224,0x41c3,0x5a86,0x39a0,0x5a66,0x5205,0x3120,0x3962,0x0800,0x5aca,0xb5b5,0x52ca,0x0060,0x18e3,0x0000,0x94b2,0x946f,0x41a0,0x4a23,0x41c1,0x41a1,0x3981,0x39a1,0x49e1,0x3981,0x3980,0x3160,0x3160,0x3141,0x20c0,0x41e4,0xb5b5,0x6b6d,0x0000,0x2103,0x0000,0x8c91,0x9cb0,0x51c0,0x4a24,0x41c1,0x41a1,0x41a1,0x5224,0x5224,0x3961,0x3960,0x3960,0x3960,0x3941,0x3141,0x0000,0xb5d5,0x8c70,0x0000,0x2964,0x0000,0x8c91,0x9cd1,0x5a00,0x5225,0x49e3,0x41c1,0x41e1,0x28e0,0x7b8b,0x7bab,0x3120,0x39a1,0x3980,0x3160,0x3141,0x0000,0xad54,0x94b2,0x0000,0x2944,0x0000,0x6b8d,0xad73,0x5202,0x736a,0xd677,0xad53,0x41e4,0x1800,0xad32,0xad11,0x1000,0x41e2,0xa511,0xb5b3,0x5246,0x0000,0xa534,0x9cf2,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8281,0x8a81,0x8260,0x82a0,0x8281,0x8a81,0x8a61,0x8a81,0x82a1,0x8260,0x8a60,0x8a61,0x7a80,0x8260,0x8240,0x7a80,0x8260,0x7a60,0x7a40,0x7222,0x6120,0xad53,0x94d3,0x0040,0x3185,0x2124,0x1903,0x18e3,0x10e2,0x10e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1103,0x1923,0x0000,0x530b,0xaccf,0xab64,0xa345,0x9ae3,0x8aa1,0x8281,0x8281,0x8280,0x8a80,0x8a80,0x8a80,0x8280,0x8280,0x8260,0x8260,0x8a80,0x8a80,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a60,0x7a61,0x7200,0x72e8,0x8c91,0x52a9,0x2943,0x0880,0x1944,0x7c2e,0x734a,0x5a64,0x49e3,0x41a1,0x39a0,0x3120,0x28c0,0x1860,0x1860,0x18a0,0x3980,0x3960,0x3980,0x3100,0x3983,0x94d2,0x6bad,0x1901,0x18e2,0x0000,0x7c30,0x842e,0x5a43,0x49c2,0x41a1,0x3980,0x28e0,0x3120,0x41a1,0x3960,0x20a0,0x3140,0x3960,0x3940,0x3920,0x28e0,0x8c70,0x73ee,0x08e0,0x1923,0x0000,0x634c,0x9cd0,0x62e7,0x49e3,0x49e2,0x4181,0x41a2,0x3120,0x1800,0x28a0,0x3981,0x3960,0x3981,0x3981,0x3941,0x1000,0x842f,0x94d2,0x2143,0x1903,0x0000,0x52ca,0x840e,0x6285,0x49e3,0x41c1,0x39a1,0x39a0,0x3980,0x3140,0x3960,0x39a0,0x3980,0x3980,0x3960,0x3941,0x1800,0x844f,0x94d2,0x10e1,0x1923,0x0000,0x4a89,0x9490,0x62c7,0x49e2,0x41e2,0x41a1,0x3940,0x2040,0x1800,0x1800,0x2900,0x3981,0x3960,0x3140,0x3162,0x0000,0x840e,0xa513,0x2965,0x1903,0x0000,0x29a5,0x94d1,0x734a,0x5203,0x41c2,0x41c2,0x3960,0x2900,0x3980,0x4181,0x3120,0x28c0,0x3960,0x3960,0x3961,0x2040,0x52a8,0xa554,0x5aeb,0x10a1,0x0881,0x1124,0x94b1,0x7bab,0x49e1,0x41e2,0x41a1,0x3120,0x3940,0x3960,0x20c0,0x3980,0x3120,0x3140,0x3961,0x3961,0x1020,0x5aa9,0xb595,0x5aea,0x0000,0x1903,0x0000,0x8c91,0x944e,0x49c0,0x49e3,0x41a1,0x39a2,0x28e0,0x6b08,0xad31,0x5246,0x28c0,0x39a1,0x3160,0x3140,0x28e0,0x41c4,0xad95,0x634c,0x0000,0x1903,0x0000,0x8c91,0x94b0,0x49a0,0x5224,0x39c2,0x39a2,0x3120,0x62c7,0xacef,0x6b09,0x2880,0x3961,0x3980,0x3940,0x3942,0x0000,0xb5b5,0x8450,0x0000,0x2144,0x0000,0x8c90,0x9ccf,0x5a22,0x5204,0x49c3,0x41c2,0x3120,0x5266,0x8c2d,0x49c4,0x3940,0x41a2,0x3981,0x3940,0x3941,0x0000,0xad54,0x8cb2,0x0000,0x2964,0x0000,0x6bae,0xad73,0x5a65,0x5245,0x5287,0x20c0,0x3140,0x41a1,0x5226,0x5225,0x4181,0x3140,0x1000,0x41c3,0x41a4,0x0000,0xa513,0x9cd2,0x0000,0x2965,0x0000,0x6b6c,0xd614,0xabc8,0x92e0,0x8ac2,0x82a0,0x8280,0x8261,0x8260,0x8280,0x8281,0x8a81,0x8281,0x8281,0x8280,0x8280,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a60,0x7a40,0x7a42,0x6100,0xad53,0x94b1,0x0000,0x2985,0x2124,0x1903,0x18e2,0x10e2,0x18e3,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1902,0x0000,0x3a29,0xacf0,0xa3a7,0x9b43,0x9304,0x8ac2,0x82c2,0x82a2,0x82a2,0x82a2,0x82a2,0x82a2,0x82a2,0x8282,0x8282,0x8282,0x8282,0x82a2,0x82a2,0x8282,0x82a2,0x82a2,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8a82,0x8282,0x8283,0x6960,0x7b6c,0x8cb1,0x4248,0x1923,0x18c2,0x0020,0x844f,0x7bec,0x5201,0x5224,0x41c3,0x41a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a3,0x3982,0x41a3,0x2040,0x41e5,0x9d12,0x532b,0x10c0,0x1903,0x0000,0x7c0f,0x8c70,0x5200,0x49c2,0x41a3,0x3982,0x41a3,0x41a3,0x3982,0x41a3,0x41c3,0x41a2,0x3982,0x41a3,0x3100,0x0840,0x9cf2,0x73ee,0x0060,0x1923,0x0000,0x630b,0x9cd1,0x5aa6,0x5203,0x49c3,0x41a2,0x41a2,0x41a2,0x41c3,0x41c3,0x41a2,0x41a2,0x39a2,0x41a2,0x3962,0x0000,0x94f2,0x8c91,0x0080,0x2144,0x0000,0x4a89,0x8c6f,0x5a85,0x41a2,0x41c2,0x41c2,0x39a2,0x41a2,0x41a3,0x41a3,0x41a2,0x41a2,0x41c2,0x41a2,0x3963,0x0000,0x9cf2,0x94b2,0x0000,0x1923,0x0000,0x4249,0x94d1,0x62c7,0x49c1,0x41e3,0x41c2,0x41a2,0x41c3,0x41a3,0x41a3,0x41c3,0x41a2,0x3961,0x3981,0x41a3,0x0000,0x8c2f,0xa533,0x1104,0x2123,0x0000,0x2144,0x94d1,0x736b,0x49c1,0x5204,0x41a2,0x4182,0x41c3,0x41c2,0x41a2,0x41a2,0x41c3,0x41a2,0x4181,0x41c3,0x0000,0x6b4b,0xad94,0x4a69,0x1902,0x10c2,0x0041,0x94b0,0x840d,0x4180,0x49e3,0x41a2,0x4182,0x4181,0x3981,0x41c2,0x41a2,0x41c2,0x41a2,0x4182,0x41a3,0x0000,0x6b2b,0xbdf6,0x4a89,0x0060,0x1903,0x0000,0x8470,0x9caf,0x3900,0x4a04,0x41a2,0x41a2,0x3960,0x5a66,0x9c8e,0x5266,0x3940,0x41c2,0x41c2,0x41a3,0x0800,0x5267,0xbe17,0x4aa9,0x0040,0x1903,0x0000,0x8450,0x9cd1,0x3900,0x5224,0x49e2,0x41a2,0x41c2,0x4a24,0x6b08,0x5225,0x3961,0x41c2,0x41a1,0x41a3,0x30e0,0x20e0,0xc616,0x73ae,0x0000,0x2143,0x0000,0x8470,0xa512,0x49c0,0x5204,0x49e3,0x41c2,0x39a2,0x8c0c,0x7349,0x3140,0x49e3,0x41a2,0x41a2,0x41a2,0x3121,0x0000,0xb5b5,0x8450,0x0000,0x2965,0x0000,0x634c,0xb5b4,0x5a85,0x49a1,0x49c0,0x49c3,0x49c3,0x41c2,0x4180,0x4180,0x41a2,0x41c2,0x41c3,0x4140,0x3943,0x0000,0xb5b5,0x94d2,0x0000,0x2165,0x0000,0x5aea,0xd656,0xb3e9,0x9280,0x92c3,0x8aa2,0x8282,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x82a2,0x8282,0x8282,0x82a2,0x8282,0x8283,0x8262,0x8262,0x7a42,0x5940,0xb5b4,0x8c90,0x0000,0x2985,0x1904,0x1903,0x18e2,0x10c2,0x18e2,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x18e2,0x18e2,0x0000,0x844f,0xbd30,0xa361,0x8a40,0x81e0,0x81c0,0x81c0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x7980,0x7980,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79c0,0x7a00,0x79e0,0x6960,0x7ae3,0xa4f1,0x73ce,0x2164,0x2144,0x1903,0x0000,0x5b2b,0xa553,0x736b,0x2000,0x2000,0x1000,0x1800,0x1800,0x1800,0x1800,0x2000,0x1800,0x1800,0x0000,0x1800,0x9cd1,0x94d1,0x29a5,0x1923,0x18e3,0x0000,0x52ca,0xad73,0x7bec,0x2000,0x1800,0x0800,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x0800,0x0000,0x8c70,0xa574,0x4289,0x08c0,0x1903,0x0000,0x2985,0x9d12,0x946f,0x3940,0x1000,0x1000,0x0000,0x0800,0x1000,0x1800,0x1800,0x1800,0x2000,0x1800,0x0000,0x7bcd,0xb5f6,0x5b0c,0x10c0,0x1923,0x0860,0x0020,0x8cb1,0x8c6f,0x30e0,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x0000,0x73ad,0xb5b5,0x5b0b,0x0080,0x1923,0x0040,0x0082,0x94d1,0x948f,0x30a0,0x2800,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1800,0x1800,0x1800,0x0000,0x5267,0xbdd5,0x7bef,0x0080,0x2144,0x10a2,0x0000,0x844f,0xa532,0x4a02,0x2840,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x0000,0x0800,0xad74,0x9d13,0x0060,0x2144,0x1903,0x0000,0x73cd,0xb593,0x5a86,0x1000,0x2000,0x2000,0x2800,0x2000,0x2000,0x1800,0x1800,0x2000,0x2800,0x0000,0x3120,0xb5b5,0xa533,0x0020,0x2123,0x1903,0x0000,0x5b0b,0xb5b4,0x6b2a,0x0000,0x1800,0x2000,0x1000,0x30c0,0x49a0,0x1800,0x1800,0x1800,0x1800,0x0000,0x0000,0xad74,0xad74,0x0040,0x1923,0x1903,0x0000,0x530b,0xb5b4,0x736a,0x1800,0x3060,0x2000,0x1800,0x2000,0x0000,0x0000,0x1800,0x1800,0x1800,0x0800,0x0000,0x9cd1,0xbdf6,0x31a6,0x1903,0x1923,0x0000,0x4a8a,0xbdd6,0x83cd,0x1000,0x2880,0x1000,0x30e0,0x62a5,0x2000,0x2000,0x2820,0x2800,0x2000,0x2000,0x0000,0x8c70,0xbe16,0x3a28,0x10e1,0x1903,0x0000,0x1924,0xb5b5,0x9cb0,0x2000,0x2860,0x2000,0x2000,0x2000,0x2800,0x2820,0x2800,0x2000,0x2840,0x2800,0x0000,0x7bee,0xc658,0x52eb,0x0000,0x1903,0x08a1,0x0000,0xce16,0xddf2,0x7a00,0x81e0,0x79e0,0x71e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79c0,0x79a0,0x79a0,0x79c0,0x79a0,0x79e0,0x79c0,0x79c0,0x5880,0x9c2c,0xc637,0x52aa,0x1903,0x2964,0x2103,0x1903,0x18e2,0x10c2,0x10e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x00a1,0x1145,0xa4b0,0xcdb4,0xbd52,0xb4f0,0xbd10,0xb510,0xb510,0xb510,0xb510,0xb50f,0xb50f,0xb50f,0xb510,0xb510,0xb4ef,0xb50f,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xacef,0xb4ef,0xb4ef,0xb4ef,0xaccf,0xaccf,0xacae,0xb510,0xbd94,0x8c70,0x29a6,0x2144,0x1923,0x18e3,0x10c2,0x0000,0x7c2f,0xb5d5,0xa532,0x946f,0x9470,0x8c6f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0x8c50,0x9470,0xb595,0xa554,0x52a9,0x1943,0x1923,0x10c2,0x10c2,0x0000,0x73ce,0xb5b5,0x9cf2,0x9470,0x8c70,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0xb5b4,0xb5f6,0x636d,0x08a1,0x2123,0x10e2,0x10c2,0x0000,0x52eb,0xb5b4,0xad73,0x948f,0x8c4f,0x8c6f,0x8c6f,0x8c6f,0x8c6f,0x8c6f,0x8c4e,0x8c2e,0x944f,0xad73,0xc637,0x8450,0x00c2,0x2964,0x10e2,0x18e3,0x0000,0x3a28,0x9d12,0xad52,0x948f,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x948f,0x948f,0xad53,0xbdf6,0x7c0f,0x0040,0x2144,0x10c2,0x10c2,0x0000,0x4248,0xad53,0xad32,0x8c2e,0x840e,0x7bed,0x840d,0x840e,0x840e,0x842e,0x840e,0x840e,0x7bee,0x94b0,0xc616,0x9d13,0x1964,0x1944,0x1903,0x10c2,0x0000,0x2165,0x9d12,0xad73,0x946f,0x8c2e,0x840e,0x840e,0x8c2e,0x8c2e,0x8c2e,0x8c2e,0x8c2e,0x840d,0x946f,0xb5d5,0xa553,0x3a28,0x2164,0x2143,0x1902,0x0020,0x0060,0x9cf2,0xbdb5,0x9490,0x8c4f,0x83ed,0x738a,0x7bac,0x840d,0x8c2d,0x8c2e,0x8c0e,0x83ed,0x8c4f,0xb5b4,0xad94,0x3207,0x1923,0x2123,0x10e2,0x10a1,0x0000,0x8c91,0xbdf5,0x9cd0,0x8c2e,0x8c2e,0x8c2e,0x8c2e,0x8c4f,0x8c4e,0x944f,0x8c4f,0x8c2e,0x9490,0xbdd5,0xb5d6,0x4289,0x08a0,0x1923,0x08a1,0x10a1,0x0000,0x8450,0xbdf5,0x9cb0,0x840d,0x840d,0x8c2e,0x840d,0x8c2e,0x8c2e,0x842e,0x8c4e,0x842e,0x8c4f,0xb574,0xbe17,0x5b2b,0x0080,0x2124,0x18e2,0x1903,0x0000,0x7c0f,0xc616,0x9d11,0x8c2e,0x8c2e,0x8c2e,0x840d,0x8c2e,0x8c4e,0x8c2e,0x840d,0x8c2e,0x840e,0xa533,0xc617,0x6bad,0x0020,0x2124,0x18e2,0x18e2,0x0000,0x6b6c,0xc637,0xa512,0x840d,0x83ed,0x840d,0x840d,0x83ed,0x840d,0x840d,0x83ed,0x7bcd,0x7bed,0x9cf2,0xc637,0x8430,0x0000,0x2144,0x18e2,0x18e3,0x0000,0x5aeb,0xd697,0xcdf4,0xac6e,0xac4d,0xac4d,0xa46e,0xa46e,0xa46e,0xa46d,0xa44d,0xa46d,0xa46e,0xac8e,0xa48e,0xa46e,0xa48e,0xa48e,0xa48e,0xa46e,0xa48e,0xac8e,0xac8d,0xa46d,0xbd53,0xce17,0x7c0f,0x08c1,0x2965,0x2124,0x2123,0x18e3,0x18e2,0x18e2,0x18e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e3,0x10e2,0x10e2,0x0000,0x0022,0x6b6d,0x9cf3,0xa513,0xa533,0xa554,0xad54,0xa554,0xa554,0xa534,0xa534,0xa534,0xa554,0xa554,0xa534,0xa554,0xa554,0xa534,0xa554,0xa554,0xa534,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa533,0xad33,0xad54,0x9cf2,0x6b6e,0x1125,0x1943,0x1924,0x1903,0x10e2,0x10c2,0x1081,0x0000,0x5b4c,0x9cf2,0xa553,0xa554,0xa554,0xa534,0xa534,0xa554,0xa554,0xa554,0xa554,0xa534,0x8c71,0x29c6,0x10e2,0x2144,0x10e3,0x10c2,0x10a1,0x10c2,0x0000,0x52ca,0x8c92,0x9d13,0xa554,0xa554,0xa534,0xa534,0xa554,0xa554,0xa554,0xa554,0xa554,0x94d2,0x4269,0x0061,0x2144,0x18e2,0x10e2,0x08a1,0x10c2,0x0000,0x4228,0x8c70,0xa553,0xad74,0xad74,0xad94,0xad74,0xa553,0xa553,0x9cf2,0x9d13,0xad95,0x9d33,0x5b2c,0x0000,0x2164,0x1923,0x18e3,0x10c2,0x10c2,0x0000,0x2165,0x844f,0x9d12,0x9d13,0xa534,0xa554,0xa554,0xa554,0xa554,0xa574,0xa574,0xad74,0x9cf2,0x5b0b,0x0000,0x2144,0x1903,0x08a1,0x0881,0x10c2,0x0000,0x3a28,0x8cb1,0xad74,0xad95,0xad74,0xad95,0xad95,0xad95,0xb5d5,0xb5b5,0xad95,0xadb5,0xad95,0x7c0f,0x08e3,0x2164,0x1944,0x10c2,0x1081,0x10c2,0x0000,0x1124,0x7c0e,0xa533,0xad74,0xad74,0xad74,0xad95,0xad74,0xad94,0xad74,0xad74,0xad74,0xa533,0x8c50,0x29e6,0x1123,0x2164,0x1902,0x10c1,0x10c2,0x0000,0x0000,0x7bef,0xa533,0xad95,0x9d12,0x94b0,0x9cf1,0xa553,0xa553,0xad74,0xad74,0xa553,0xa533,0x7c0e,0x2185,0x1923,0x2164,0x1903,0x10c2,0x10c2,0x0060,0x0000,0x634c,0x9d12,0xa574,0xad74,0xad54,0xad74,0xad95,0xa574,0xad74,0xa574,0xa553,0xa553,0x8450,0x29a6,0x08e2,0x2144,0x10e2,0x08a1,0x08a1,0x08a1,0x0000,0x634c,0x94d2,0x9d12,0xa554,0xad74,0xa554,0xad74,0xad94,0xad74,0xad94,0xa573,0xad94,0x94d2,0x4a89,0x0000,0x2164,0x1902,0x18e2,0x10c2,0x10c2,0x0000,0x634b,0x9d12,0xad74,0xad95,0xad74,0xadb5,0xadb4,0xad95,0xad95,0xad75,0xb5b5,0xb5b5,0xa514,0x52ca,0x00a0,0x2964,0x18e3,0x10c2,0x10a1,0x10c2,0x0000,0x52aa,0xa533,0xb5b5,0xb5d5,0xb5d5,0xb5b5,0xad95,0xadb5,0xb5b5,0xb5d6,0xb5b5,0xadb5,0xa554,0x632c,0x0000,0x2124,0x1903,0x18e3,0x18c2,0x18e2,0x0000,0x426a,0xa533,0xb595,0xbd74,0xbd94,0xb595,0xb595,0xb594,0xb574,0xb574,0xb594,0xb595,0xbdb5,0xbdb5,0xb595,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xbdd5,0xbdb5,0xb5b5,0xa534,0x630d,0x0082,0x2965,0x2144,0x1923,0x1903,0x18e3,0x18e2,0x1903,0x1903,0x18e2, +0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1923,0x1903,0x1903,0x10e2,0x10a1,0x10a1,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08c2,0x1923,0x1903,0x10e2,0x10e3,0x10a2,0x10c2,0x10e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10e2,0x10c2,0x10c2,0x10c1,0x08a1,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1903,0x10e2,0x18e2,0x10a1,0x10a1,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e3,0x10c2,0x10a2,0x0881,0x0881,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1904,0x1924,0x1903,0x10c3,0x1082,0x0881,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2144,0x18e3,0x18e3,0x10e2,0x10a1,0x10c2,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1944,0x1903,0x1903,0x10c2,0x10a2,0x10a2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c2,0x2144,0x18e3,0x18e3,0x10c2,0x0882,0x10a2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2144,0x1903,0x18e3,0x18c3,0x10c2,0x10c1,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2164,0x1903,0x18c2,0x18e2,0x10c2,0x10a1,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0001,0x0001,0x0001,0x0022,0x0083,0x0082,0x0000,0x0000,0x2144,0x18e3,0x18e3,0x10c2,0x10c2,0x10c1,0x1903,0x0000,0x0000,0x0000,0x0002,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0000,0x0000,0x0080,0x2965,0x1924,0x1923,0x1903,0x18e3,0x1903,0x18e2,0x1903,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x1923,0x2123,0x2123,0x2123,0x2123,0x2123,0x2123,0x2123,0x2123,0x1903,0x1903,0x2123,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x1903,0x2123,0x1903,0x18e2,0x1903,0x1903,0x18e2,0x10c2,0x10c2,0x10c2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2124,0x2124,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1902,0x1903,0x1923,0x2124,0x2123,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2144,0x1923,0x1903,0x10e2,0x1103,0x18e3,0x10e3,0x10e2,0x10e2,0x1903,0x1923,0x1923,0x2123,0x2123,0x1923,0x2143,0x2143,0x1923,0x1902,0x1923,0x1903,0x2144,0x2124,0x1923,0x1903,0x1903,0x18e3,0x18e2,0x10e2,0x10c2,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x18e2,0x1902,0x1902,0x1902,0x1902,0x18e2,0x18e2,0x1902,0x18e2,0x18e2,0x2123,0x2144,0x1923,0x1923,0x1903,0x1902,0x1902,0x1902,0x18e2,0x1903,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x1923,0x1923,0x2123,0x1923,0x1923,0x2143,0x2164,0x2143,0x1923,0x2143,0x1923,0x1903,0x1902,0x1902,0x1903,0x2143,0x2143,0x2123,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x1923,0x2123,0x2143,0x2144,0x2123,0x2123,0x2123,0x1923,0x1903,0x1903,0x1902,0x1923,0x2143,0x2143,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x2123,0x2143,0x2143,0x2143,0x2164,0x2144,0x1923,0x1923,0x1923,0x1903,0x18e2,0x1902,0x1902,0x2143,0x2143,0x2123,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x2123,0x1923,0x2123,0x2144,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x18e3,0x1903,0x2123,0x2123,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10e2,0x1902,0x2123,0x2123,0x18e3,0x18e2,0x18e2,0x10e2,0x10c2,0x10a2,0x10c2,0x1903,0x18e3,0x10c1,0x18c2,0x18c2,0x18c2,0x18e2,0x18e2,0x18c2,0x10c1,0x18c1,0x18e2,0x2103,0x2123,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x1903,0x2103,0x18e2,0x18c2,0x18c2,0x18c2,0x18e2,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1902,0x1902,0x2144,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x18e3,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x1923,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a1,0x0081,0x00c1,0x0901,0x00c0,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0020,0x0000,0x0860,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x18e3,0x18e3,0x1903,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e2,0x18e3,0x18e3,0x1903,0x18e2,0x10c2,0x10e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x10e2,0x1903,0x1903,0x18e2,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x4248,0x4a89,0x4a8a,0x4a8a,0x4a69,0x4a89,0x4a89,0x4a89,0x4a68,0x4a68,0x4a68,0x4248,0x4228,0x4227,0x3a27,0x4228,0x4228,0x4228,0x4227,0x3a07,0x3a27,0x4227,0x3a27,0x3a27,0x3a27,0x4227,0x4227,0x4207,0x4207,0x39e7,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c6,0x39e6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e6,0x31e6,0x39e6,0x39e6,0x39e6,0x39e6,0x39e6,0x39e7,0x39e7,0x39e7,0x39c6,0x39e6,0x39e6,0x39c6,0x39e7,0x4207,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a49,0x4a49,0x4a69,0x4a69,0x4a69,0x4a8a,0x4a69,0x4a69,0x528a,0x52aa,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x630c,0x632c,0x630c,0x630b,0x5b0b,0x630c,0x630b,0x630b,0x632c,0x634c,0x6b4c,0x6b4d,0x6b4d,0x6b6d,0x6b4d,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x634c,0x636d,0x636c,0x634c,0x634c,0x6b4c,0x6b4c,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x630c,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x630c,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x630c,0x5b0b,0x5aeb,0x5acb,0x5acb,0x52ca,0x52aa,0x52aa,0x528a,0x4a8a,0x4a89,0x4a69,0x4248,0x4227,0x3a07,0x39c6,0x31a6,0x31a6,0x2985,0x10a1,0x0000,0x0000,0x1903,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x18e3,0x10e2,0x10e2,0x10e2,0x1903,0x1923,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x18e2,0x0000,0x52ca,0x9d13,0xad94,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xb594,0xb5b5,0xad94,0xad74,0xad94,0xb595,0xb5b5,0xb5b5,0xb594,0xad54,0xad74,0xad94,0xad74,0xad74,0xad94,0xad94,0xb594,0xb574,0xad74,0xad74,0xad74,0xad74,0xad53,0xad53,0xad53,0xad53,0xad54,0xad53,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad54,0xad53,0xad53,0xad53,0xad53,0xad53,0xad74,0xad74,0xad74,0xad53,0xa533,0xa533,0xa533,0xa533,0xa533,0xad53,0xad53,0xa533,0xa533,0xa533,0xa532,0xa512,0xa512,0xa512,0xa4f2,0xa512,0xa512,0x9cf2,0x9cf2,0xa512,0xa512,0xa532,0xad53,0xa533,0xa533,0xad53,0xad53,0xad53,0xad53,0xad74,0xb574,0xb594,0xad74,0xad74,0xb594,0xb594,0xb5b5,0xb594,0xb594,0xb5b4,0xb594,0xb594,0xad74,0xad74,0xad74,0xad73,0xad53,0xad53,0xad53,0xa533,0xa553,0xad53,0xad53,0xad53,0xad74,0xad74,0xb594,0xb594,0xb594,0xb594,0xb594,0xad74,0xad74,0xad74,0xad53,0xad53,0xad53,0xad74,0xad94,0xad74,0xad74,0xad74,0xb594,0xb594,0xad74,0xad74,0xb594,0xad74,0xad53,0xad53,0xad53,0xad53,0xad73,0xad74,0xad73,0xad53,0xa533,0xad53,0xad53,0xad74,0xad74,0xad74,0xad74,0xad74,0xb594,0xb5b5,0xb594,0xb594,0xad74,0xad74,0xb594,0xb594,0xb594,0xb5b5,0xb5b5,0xb5b5,0xbdd5,0xbdd5,0xb5b5,0xb5b4,0xb594,0xb5b5,0xbdb5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb594,0xad94,0xad94,0xad95,0xb595,0xb5b5,0xad74,0xb5b5,0xa554,0x31e6,0x0000,0x1923,0x1903,0x1903,0x18e2,0x10c2,0x10c2,0x18e3,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x1903,0x0000,0x4a89,0xa552,0x94b0,0x62e9,0x5265,0x5265,0x5245,0x5265,0x5266,0x5267,0x5267,0x5267,0x5267,0x5a87,0x5ac8,0x5ac8,0x5aa8,0x62c8,0x62c8,0x62c8,0x62e9,0x62c8,0x5aa8,0x5aa8,0x5aa8,0x5aa8,0x5aa8,0x5ac8,0x5aa8,0x5aa8,0x5aa8,0x62c8,0x62c9,0x62c8,0x5ac8,0x5ac8,0x62c8,0x62c8,0x62e8,0x62e9,0x62e9,0x62e9,0x62e9,0x62e9,0x62e9,0x62c9,0x62c8,0x62c9,0x62c8,0x62c8,0x62c8,0x62c8,0x62c8,0x62c9,0x62c9,0x62c8,0x5aa8,0x5aa8,0x5aa8,0x5a87,0x5a88,0x5a87,0x5a87,0x5a87,0x5a87,0x5a87,0x5a86,0x5a87,0x5266,0x5246,0x5245,0x4a25,0x4a24,0x4a24,0x4a04,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a04,0x4a04,0x4a24,0x4a25,0x4a25,0x4a24,0x4a24,0x4a24,0x4a03,0x49e3,0x41e3,0x49e3,0x4a03,0x4a03,0x4a03,0x4a03,0x4a03,0x4a03,0x49e3,0x41e2,0x41c2,0x41e2,0x41c2,0x41c1,0x49e2,0x49e3,0x41c2,0x41c1,0x41c2,0x41e2,0x41c2,0x41c1,0x41a1,0x41c2,0x41c2,0x41c1,0x41c1,0x41c2,0x41c2,0x41c2,0x41c1,0x41a0,0x41a0,0x41a0,0x41a1,0x41a0,0x4180,0x4180,0x41a0,0x41c1,0x41c1,0x41c1,0x41a1,0x41e2,0x41c2,0x41c1,0x41a1,0x41c1,0x41c2,0x49e3,0x49e3,0x41e3,0x41c2,0x41c2,0x41e3,0x41e3,0x41e3,0x41e3,0x49e3,0x49e3,0x49e3,0x4a03,0x4a03,0x4a04,0x4a04,0x4a04,0x4a24,0x4a24,0x4a03,0x4a03,0x4a04,0x4a24,0x4a24,0x4a24,0x4a24,0x5224,0x5245,0x5225,0x5245,0x5265,0x5266,0x5a86,0x5a86,0x5a87,0x5a87,0x5a88,0x5aa8,0x62c8,0x6309,0x6b2a,0x6b4b,0x736b,0x7bcd,0xbdf6,0xbdf6,0x3a07,0x08c0,0x2124,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e3,0x18e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x1903,0x18e2,0x10c2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c1,0x0000,0x8470,0x8c4e,0x4180,0x3940,0x3940,0x3940,0x3120,0x3120,0x3940,0x3920,0x3920,0x3920,0x3920,0x3100,0x3100,0x3100,0x3100,0x30e0,0x3100,0x3100,0x30e0,0x30e0,0x3100,0x3100,0x3100,0x3100,0x3100,0x3100,0x30e0,0x28e0,0x30e0,0x3100,0x3100,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30c0,0x28c0,0x30e0,0x30e0,0x3100,0x3100,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30c0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x3100,0x3100,0x3100,0x3120,0x3100,0x3100,0x3100,0x3120,0x3100,0x3120,0x3920,0x3120,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3940,0x3940,0x3940,0x3920,0x3920,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3960,0x3960,0x3960,0x3960,0x3940,0x3940,0x3960,0x3960,0x3960,0x3940,0x3960,0x3960,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3940,0x3940,0x3940,0x3960,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3920,0x3940,0x3940,0x3940,0x3940,0x3940,0x3920,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3920,0x3120,0x3120,0x3120,0x3100,0x3100,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30c0,0x30a0,0x2880,0x2860,0x0000,0x2080,0xbdd6,0x8c71,0x0000,0x2124,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x18e2,0x18e3,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e3,0x18e2,0x10c2,0x10e2,0x10c2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e2,0x10e2,0x10e2,0x18e2, +0x10c2,0x10a2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x0040,0x2145,0x8c91,0x738b,0x5224,0x41a3,0x41a1,0x41a1,0x3981,0x3981,0x3981,0x4182,0x41a2,0x3981,0x4182,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x4181,0x4181,0x4181,0x3981,0x41a2,0x4182,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x3981,0x4181,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3961,0x3960,0x3981,0x3981,0x3960,0x3960,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x4181,0x4181,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x3981,0x4181,0x4181,0x3981,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x3981,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a2,0x41a2,0x41a2,0x41a2,0x4182,0x41c4,0x0000,0x840f,0x9d13,0x0080,0x2124,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x1903,0x18e3,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x0060,0x2965,0x8c71,0x7bcb,0x5223,0x41a2,0x41a1,0x41a1,0x4181,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x4181,0x4181,0x3981,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x4180,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x3980,0x3980,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x3980,0x3960,0x3980,0x4180,0x4180,0x4180,0x4180,0x3960,0x3960,0x3980,0x4180,0x4180,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x4180,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x4180,0x4180,0x4180,0x3980,0x3960,0x3980,0x4180,0x4180,0x4180,0x3980,0x4180,0x4180,0x4180,0x4180,0x3980,0x3980,0x4180,0x4180,0x3980,0x3980,0x4180,0x4180,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x4180,0x3980,0x3960,0x3940,0x3961,0x0800,0x7bae,0xa534,0x2184,0x1923,0x1923,0x1902,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x18e3,0x1903,0x18e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x31c7,0x8c91,0x6b6a,0x5223,0x49c2,0x41a1,0x41a1,0x3981,0x3981,0x4181,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x4180,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x4180,0x3960,0x3960,0x3980,0x4180,0x4180,0x3960,0x3960,0x3960,0x3980,0x3960,0x3980,0x3960,0x3960,0x4180,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x4180,0x4180,0x3980,0x3960,0x3980,0x4180,0x4180,0x4180,0x3980,0x4180,0x3980,0x3960,0x4180,0x3960,0x3960,0x4180,0x4180,0x3980,0x4180,0x4180,0x4180,0x4180,0x4180,0x3960,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3962,0x0000,0x83cf,0xa534,0x1944,0x1923,0x1923,0x1903,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10c2,0x10e2,0x18e2,0x18e3,0x18e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x10c2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x0000,0x3a08,0x8c91,0x734a,0x5203,0x41c2,0x41a1,0x3981,0x3980,0x3980,0x3980,0x3960,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3980,0x4180,0x3980,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x4180,0x4180,0x3980,0x3980,0x3960,0x3960,0x3981,0x3960,0x3962,0x1000,0x7bef,0xa534,0x1903,0x1923,0x1923,0x18e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e3,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2, +0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e3,0x0000,0x3208,0x8c91,0x7329,0x5223,0x41c2,0x41a1,0x3981,0x3981,0x3981,0x3960,0x3960,0x4180,0x4180,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x4181,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x4181,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3962,0x1000,0x7c0f,0xa555,0x2123,0x1923,0x1923,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10e2,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x0000,0x3208,0x8cb1,0x734a,0x5223,0x41c2,0x41a1,0x4181,0x3981,0x3981,0x3980,0x3960,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4181,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3940,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x4180,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x4180,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3962,0x1000,0x7c0f,0xa555,0x2123,0x2144,0x1923,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e3,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e3,0x0000,0x3a08,0x8cb1,0x734a,0x5223,0x41c2,0x41a1,0x3981,0x3981,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x4180,0x4180,0x3980,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3940,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x4180,0x3960,0x3960,0x3960,0x4180,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3962,0x1000,0x7c0f,0xa554,0x2103,0x2144,0x1923,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10a1,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10a1,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e3,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x0000,0x3a28,0x8cb1,0x734a,0x5223,0x41c2,0x4181,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x4180,0x4180,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3981,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x4181,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x3960,0x3980,0x3980,0x3980,0x3980,0x4180,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3960,0x3980,0x4180,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3942,0x1000,0x7c0f,0xa554,0x18e2,0x2144,0x1923,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2, +0x08a1,0x10c2,0x10e2,0x10c2,0x10a2,0x10a1,0x08a1,0x10a1,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x3a28,0x8cb1,0x736a,0x5224,0x41c1,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x3960,0x4160,0x3960,0x3960,0x4160,0x3960,0x4160,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x4160,0x4160,0x3960,0x3960,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x3980,0x3980,0x3980,0x3960,0x3960,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4180,0x4160,0x4160,0x4160,0x4180,0x4180,0x4180,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x3980,0x3980,0x3980,0x3980,0x3960,0x4160,0x4160,0x3960,0x4160,0x3960,0x3960,0x3960,0x4160,0x4160,0x4160,0x4180,0x4180,0x4180,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4180,0x4160,0x3960,0x4160,0x4180,0x3960,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x4160,0x4180,0x4180,0x4160,0x3960,0x4160,0x4181,0x3960,0x3961,0x1000,0x840f,0xa534,0x1943,0x2123,0x2123,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x0000,0x3a28,0x8c90,0x738b,0x5244,0x41a1,0x39a1,0x3981,0x3980,0x3981,0x3981,0x3981,0x3981,0x3960,0x3960,0x3981,0x3981,0x3981,0x3980,0x3980,0x3981,0x4161,0x4161,0x4181,0x4181,0x3981,0x39a1,0x3981,0x3981,0x3981,0x3981,0x3961,0x3960,0x3960,0x3961,0x3981,0x3981,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3981,0x3981,0x3961,0x3961,0x3960,0x3960,0x3960,0x3981,0x3960,0x3960,0x3961,0x3961,0x3961,0x3961,0x3961,0x3960,0x3960,0x3940,0x3940,0x3960,0x3960,0x3940,0x3940,0x3940,0x3960,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3960,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3960,0x3961,0x3961,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x39a1,0x39a1,0x3981,0x3981,0x3961,0x3961,0x3961,0x3981,0x4181,0x4181,0x4181,0x4181,0x4161,0x3981,0x3981,0x3960,0x3980,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3960,0x3981,0x3981,0x3980,0x3980,0x3981,0x3981,0x3981,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3981,0x3960,0x3960,0x3980,0x3980,0x3980,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3980,0x3980,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x39a1,0x3981,0x3981,0x3981,0x3982,0x1000,0x83ef,0x9cf3,0x1143,0x2123,0x2123,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x10c2,0x08a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e3,0x10c2,0x10c2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x10e2,0x10e2,0x18e2,0x0020,0x2985,0x94d1,0x6309,0x51e0,0x49c3,0x41c3,0x39a2,0x39a2,0x39a2,0x41c3,0x41c3,0x41c3,0x41a3,0x39a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41a2,0x41a2,0x49a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a3,0x41a2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c3,0x41c3,0x41c2,0x41c2,0x41c2,0x41c2,0x41c3,0x41c3,0x41c3,0x49a3,0x41a3,0x41a3,0x49a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41c2,0x41c2,0x41a2,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41a2,0x41c2,0x41c2,0x41a3,0x41a2,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41c2,0x41c3,0x41c3,0x41c3,0x41c2,0x41a2,0x39a2,0x39a2,0x41a2,0x41a2,0x41a2,0x41a2,0x39a2,0x39a2,0x39a2,0x39a2,0x39a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x39a2,0x41a3,0x41a3,0x41a3,0x39a3,0x41c3,0x41c3,0x39a2,0x41a3,0x39a3,0x41c3,0x41c3,0x41a2,0x41c4,0x0000,0x9491,0x94d3,0x0060,0x2164,0x1923,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2, +0x10c2,0x08a1,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x0000,0x8c91,0xa512,0x49e3,0x2000,0x1000,0x0800,0x0000,0x0800,0x0800,0x0800,0x1000,0x1000,0x1800,0x1000,0x1000,0x1000,0x1800,0x1800,0x1000,0x0800,0x0800,0x1000,0x1000,0x1800,0x2000,0x2000,0x2000,0x2000,0x1800,0x1800,0x1840,0x1820,0x1000,0x1000,0x1820,0x2060,0x20a0,0x20a0,0x20a0,0x20a0,0x1840,0x1840,0x2080,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20c0,0x20c0,0x20c0,0x28e0,0x28e0,0x20a0,0x2080,0x2080,0x2060,0x2060,0x1840,0x1840,0x1840,0x1820,0x1800,0x1840,0x2060,0x1840,0x1820,0x1820,0x1800,0x1800,0x1800,0x1820,0x1820,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x2000,0x2000,0x2000,0x2000,0x2800,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x1000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1000,0x1800,0x1000,0x1000,0x0800,0x1000,0x1000,0x1000,0x1000,0x0800,0x1000,0x1800,0x1800,0x1800,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x0800,0x1800,0x2000,0x1000,0x1000,0x1000,0x1800,0x1800,0x2000,0x0000,0x5ae9,0xc637,0x7bef,0x0040,0x2165,0x1923,0x1903,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x0000,0x29a6,0xa554,0xb5b5,0x94b1,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9470,0x8c70,0x8c6f,0x8c4f,0x8c4f,0x842e,0x842e,0x842e,0x83ed,0x83ed,0x83ed,0x83ed,0x7bcd,0x7bcd,0x7bcd,0x7bcd,0x7bcd,0x7bac,0x738c,0x7b8c,0x7b8c,0x738b,0x736b,0x736b,0x736b,0x6b2a,0x6b2a,0x6b0a,0x6309,0x6309,0x6b09,0x6309,0x62e9,0x62c8,0x62e8,0x62c8,0x62c8,0x62c8,0x62c8,0x5aa7,0x5aa7,0x62c7,0x5ac7,0x5ac7,0x62c8,0x62e8,0x62e8,0x6b09,0x6b09,0x6b0a,0x6b0a,0x6b2a,0x6b2a,0x6b0a,0x6b0a,0x6b2a,0x6b2a,0x6b2a,0x6b4a,0x734b,0x734b,0x734b,0x734b,0x734b,0x736b,0x736b,0x736b,0x736b,0x736c,0x736c,0x738c,0x738c,0x736c,0x736c,0x738c,0x738c,0x7b8c,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bcd,0x7bcd,0x7bed,0x7bed,0x83ed,0x83ee,0x83ee,0x840e,0x840e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x8c2e,0x8c4f,0x8c6f,0x8c4f,0x8c4f,0x8c6f,0x8c6f,0x946f,0x9490,0x9490,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x946f,0x946f,0x944f,0x8c6f,0x9470,0x9470,0x8c6f,0x9470,0x946f,0x946f,0x948f,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x9490,0x9470,0x9470,0x9490,0x94b0,0x94b0,0x94b0,0x94b0,0x9490,0x9490,0x9490,0x9490,0x9470,0x8c6f,0x8c6f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0x8c4f,0x8c4f,0x842f,0x9cd1,0xc677,0xa554,0x2145,0x2143,0x1944,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e3,0x10e2,0x10c2,0x10e2,0x10e2, +0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x0000,0x00c2,0x73ee,0x94d2,0x9cf3,0x9d13,0x9d13,0xa533,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa574,0xa554,0xa554,0xa553,0xa533,0xad54,0xad74,0xad74,0xad54,0xad54,0xad74,0xad95,0xad95,0xad95,0xad74,0xad75,0xad95,0xb595,0xb5b5,0xb595,0xad95,0xad95,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b6,0xb5d6,0xb5d5,0xb5b5,0xb5b5,0xbdd6,0xbdd6,0xb5d5,0xb5d5,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbe17,0xbe17,0xbe16,0xbe17,0xbe17,0xbe17,0xc617,0xc637,0xc617,0xbe17,0xbe17,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xc617,0xc617,0xbdf6,0xbe17,0xc617,0xbe17,0xbe17,0xbe17,0xbdf7,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xb5d6,0xb5d5,0xb5d6,0xb5d5,0xb5d6,0xb5b5,0xb5b5,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xb5b5,0xb5d6,0xb5d5,0xb5b5,0xb595,0xad75,0xad95,0xb595,0xad95,0xad95,0xad95,0xad95,0xad94,0xad74,0xad74,0xad74,0xa554,0xa554,0xa574,0xa554,0xa553,0xa533,0xa554,0xa533,0xa533,0xa553,0xa554,0xa554,0xa554,0xa553,0xa533,0xa533,0xa533,0xa533,0xa513,0xa513,0x9cf3,0x9cf3,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf3,0x9d12,0x9d12,0x9d12,0x9d12,0x9d12,0x9cf2,0x9cf3,0x9cf2,0x9cf2,0x9cf2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94f2,0x94f2,0x94f2,0x94f2,0x9cf2,0x94f2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf3,0x9cf2,0x9d13,0xa533,0xa533,0xa533,0xa533,0xa574,0x844f,0x1923,0x1903,0x2144,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10e2,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0021,0x0000,0x0021,0x00a3,0x08e3,0x1124,0x1924,0x1945,0x2145,0x2145,0x2165,0x2986,0x2986,0x29a6,0x29a6,0x29c7,0x31c7,0x31e7,0x31e7,0x3208,0x3a08,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x52aa,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52ca,0x52eb,0x52cb,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x4a89,0x4a69,0x4269,0x4269,0x4269,0x4269,0x4269,0x4249,0x4269,0x4269,0x4269,0x4249,0x4269,0x4249,0x4249,0x4249,0x4248,0x3a28,0x3a28,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x29a6,0x2986,0x29a6,0x2986,0x2165,0x1944,0x1124,0x1124,0x1124,0x08c3,0x10e3,0x1904,0x10c3,0x08c3,0x08c3,0x08c3,0x00a2,0x0041,0x0061,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0081,0x0000,0x0000,0x2123,0x2144,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2, +0x10c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10e2,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x10c2,0x18e3,0x18e3,0x10e2,0x18e3,0x10e2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x0881,0x0881,0x10a1,0x10a1,0x08a1,0x0881,0x0060,0x0060,0x0040,0x0040,0x0060,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x0060,0x0880,0x08a1,0x0880,0x0880,0x0880,0x10a1,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x18e2,0x18e3,0x10e2,0x18e2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e2,0x18e2,0x18e3,0x1903,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1923,0x18e2,0x18e2,0x1903,0x2123,0x2164,0x2144,0x18e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10c2,0x10c2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x10e3,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x10e2,0x18e3,0x18e3,0x18e3,0x10e2,0x10e2,0x10e2,0x10e3,0x18e3,0x18e3,0x10e2,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x1903,0x18e3,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x10e2,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x18e3,0x1903,0x10e2,0x10e2,0x18e2,0x18e3,0x18e2,0x1903,0x1903,0x18e2,0x10e2,0x18e3,0x18e3,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2, +0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1103,0x10c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c1,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x10a2,0x10a1,0x10c2,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x08a1,0x08a1,0x10a1,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10a1,0x08a1,0x08a1,0x10c2,0x10a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10a1,0x10a1,0x08a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10c2,0x10c2,0x10a2,0x10c2,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10c1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10e2,0x10e2,0x10e2,0x10c1,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c1,0x10c1,0x10c1,0x10a1,0x10c1,0x10c1,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10e2,0x10c2,0x10c1,0x10c1,0x10c2,0x10c2,0x10c1,0x10c2,0x10e2,0x10c1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x1902,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08c2,0x10c2,0x08c2,0x08c2,0x10c2,0x08c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c1,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10c2,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c1,0x10a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10c2,0x10a1,0x08a1,0x10a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10a1,0x10c1,0x10c2,0x10c2,0x10c1,0x10a1,0x10c1,0x10c2,0x10c1,0x08a1,0x10c1,0x10c1,0x10c2,0x10c2,0x10c2,0x10c1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c1,0x10a1,0x10c1,0x10c1,0x10c2,0x10c2,0x10a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c1,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e3,0x10e2,0x10e2, +0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a2,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10a1,0x10c2,0x10a1,0x08a1,0x10a1,0x10a2,0x10c2,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x08a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a2,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x1902,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x18e3, +0x10e2,0x10c2,0x08c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x08a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x1903,0x1903,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2, +0x10c2,0x08c2,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x08c2,0x08a1,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x18e3,0x10e2,0x10e2,0x18e3,0x10e2, +0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1902,0x1102,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x1903,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x1903,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x1902,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x10e2,0x10e2,0x1903,0x10e2, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x18e2,0x1902,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1902,0x1903,0x1903,0x1903,0x1903,0x1903,0x1902,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e2,0x18e2,0x18e2,0x10e2,0x18e3,0x18e2,0x18e2,0x18e2,0x10e2,0x1903,0x18e3,0x10e2,0x10c2,0x10c2,0x10e2,0x18e3,0x18e3,0x18e2,0x18e2,0x18e3,0x18e2,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x18e3,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x10e3,0x10e3,0x10e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x10e3}; diff --git a/MCUME_esp32/esp800/main/main.c b/MCUME_esp32/esp800/main/main.c new file mode 100644 index 0000000..aae58d7 --- /dev/null +++ b/MCUME_esp32/esp800/main/main.c @@ -0,0 +1,16 @@ +#include "esp_system.h" +#include "go.h" + + +int app_main(void) +{ + setup(); + while(1) { + loop(); + } + + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/esp800/main/memory.h b/MCUME_esp32/esp800/main/memory.h new file mode 100644 index 0000000..1945156 --- /dev/null +++ b/MCUME_esp32/esp800/main/memory.h @@ -0,0 +1,18 @@ +#ifndef __MEMORY__ +#define __MEMORY__ + +extern unsigned char * memory; + +#define MEMORY_GetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_PutByte(addr,byte) Atari_PutByte(addr,byte) + +#define MEMORY_dGetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_dPutByte(addr,byte) Atari_PutByte(addr,byte) +#define MEMORY_dGetWord(x) (Atari_GetByte(x) | (Atari_GetByte((x) + 1) << 8)) +#define MEMORY_dPutWord(x,y) (Atari_PutByte(x,(UBYTE) (y)) , Atari_PutByte(x + 1,(UBYTE) ((y) >> 8)) +/* faster versions of dGetWord and dPutWord for even addresses */ +/* TODO: guarantee that memory is UWORD-aligned and use UWORD access */ +#define MEMORY_dGetWordAligned(x) MEMORY_dGetWord(x) +#define MEMORY_dPutWordAligned(x,y) MEMORY_dPutWord(x,y) + +#endif diff --git a/MCUME_esp32/esp800/main/noise.h b/MCUME_esp32/esp800/main/noise.h new file mode 100644 index 0000000..c93ac89 --- /dev/null +++ b/MCUME_esp32/esp800/main/noise.h @@ -0,0 +1,1059 @@ +const UBYTE POKEY_poly9_lookup[] = { +255,127,63,31,15,135,195,225,240,120,188,222,239,119,59,29, +14,135,67,161,208,104,52,154,205,102,179,217,108,182,219,237, +246,123,189,94,47,23,11,133,194,225,112,56,156,206,103,51, +25,12,134,67,33,144,72,36,18,137,68,162,81,168,212,234, +117,186,93,174,215,235,245,122,61,158,79,39,147,73,164,210, +233,116,58,157,206,231,115,57,28,14,7,3,129,192,224,112, +184,220,238,119,187,93,46,151,203,229,242,121,188,94,175,87, +43,149,74,165,82,41,20,10,5,2,129,64,160,80,168,84, +170,85,170,213,234,245,250,125,190,95,175,215,107,181,90,45, +22,11,5,130,193,96,176,216,236,118,187,221,110,183,219,109, +182,91,173,214,107,53,26,13,6,131,65,160,208,232,116,186, +221,238,247,251,125,62,31,143,199,227,241,120,60,158,207,103, +179,89,44,150,203,101,178,89,172,214,235,117,58,29,142,199, +99,177,88,44,22,139,69,162,209,232,244,250,253,254,127,191, +95,47,151,75,165,210,105,52,26,141,70,163,81,40,148,202, +101,50,25,140,198,99,49,24,12,6,3,1,128,192,96,48, +152,204,102,51,153,76,166,83,169,212,106,53,154,77,38,147, +201,228,242,249,252,126,191,223,111,183,91,45,150,75,37,146, +73,36,146,201,100,178,217,236,246,251,253,126,63,159,79,167, +211,105,180,90,173,86,43,21,10,133,66,161,80,40,20,138, +69,34,145,200,228,114,185,220,110,55,155,77,166,211,233,244, +122,189,222,111,55,27,13,134,195,97,176,88,172,86,171,85, +42,149,202,229,114,57,156,78,39,19,9,132,194,97,48,24, +140,70,35,17,8,132,66,33,16,8,4,2,1,0,128,64, +32,16,136,68,34,17,136,196,98,49,152,76,38,19,137,196, +226,113,184,92,174,87,171,213,106,181,218,109,54,27,141,198, +227,113,56,28,142,71,35,145,72,164,82,169,84,42,21,138, +197,98,177,216,108,54,155,205,230,243,249,124,62,159,207,231, +243,121,60,30,143,71,163,209,104,180,218,237,118,59,157,78, +167,83,41,148,74,37,18,9,4,130,65,32,144,200,100,50, +153,204,230,115,185,92,46,23,139,197,226,241,248,124,190,223, +239,247,123,61,30,15,7,131,193,224,240,248,252,254,255,}; +const UBYTE POKEY_poly17_lookup[] = { +255,1,224,3,254,231,131,241,31,28,254,217,99,142,33,4, +1,24,130,17,28,226,25,90,146,145,61,250,216,123,12,48, +24,227,1,216,131,141,223,227,130,233,157,13,226,59,122,212, +179,149,60,226,90,106,16,210,1,185,147,73,190,119,7,152, +142,217,133,238,227,227,249,89,108,118,190,11,199,103,242,233, +123,109,32,220,130,149,93,242,158,11,132,87,112,170,71,46, +107,238,48,210,66,137,17,10,130,52,76,170,60,158,154,149, +108,226,255,58,80,118,197,187,54,28,174,217,198,222,97,160, +197,26,39,68,12,76,216,28,125,232,125,14,28,220,249,37, +172,137,194,59,57,228,49,214,0,161,17,88,162,149,30,194, +28,72,184,20,59,152,245,105,116,149,191,211,68,234,45,10, +249,132,189,209,96,174,39,38,45,158,184,181,42,192,87,252, +106,87,163,155,252,254,22,146,12,237,201,68,223,125,99,204, +0,148,65,49,151,17,55,82,77,113,142,5,68,75,60,82, +91,17,163,19,124,230,159,50,22,6,77,220,94,85,232,47, +46,189,142,145,5,122,171,67,108,67,238,98,242,227,219,121, +42,84,22,205,253,70,148,201,177,143,152,151,72,166,245,22, +132,108,192,223,124,114,222,3,129,23,122,142,19,36,102,42, +106,246,178,195,94,107,8,80,16,165,113,80,228,229,150,165, +116,1,254,226,211,251,26,88,180,245,51,212,36,229,27,116, +118,143,27,166,86,38,200,206,124,81,238,71,162,171,254,189, +34,80,71,213,218,7,200,143,108,215,175,83,101,242,236,43, +103,37,152,200,185,13,168,155,234,158,59,132,52,64,106,36, +146,106,141,3,34,39,54,44,175,170,244,31,22,94,205,105, +6,181,92,161,172,136,211,41,58,241,103,157,25,163,2,108, +197,142,102,117,155,93,239,78,48,153,243,11,88,151,197,119, +247,152,97,40,69,2,174,228,22,167,92,132,252,192,246,237, +50,245,54,133,62,226,94,42,24,214,81,177,182,9,246,115, +211,208,171,28,157,232,179,239,156,17,32,34,98,102,162,234, +238,59,99,68,128,140,200,145,141,250,179,202,204,89,5,230, +106,98,243,242,201,122,63,2,93,212,255,85,160,174,170,247, +47,16,93,241,175,29,133,106,162,243,126,8,122,176,243,91, +88,50,149,55,83,92,99,141,16,18,0,37,80,72,37,196, +8,4,81,24,39,65,92,70,221,88,55,196,45,84,25,61, +227,73,88,23,197,127,118,152,107,137,65,10,39,100,12,14, +248,156,63,192,124,76,62,124,191,15,133,79,242,187,91,204, +114,180,162,67,127,115,201,113,142,4,84,73,61,70,25,24, +179,1,125,211,205,123,39,128,76,200,29,76,250,60,59,202, +213,200,38,253,159,5,102,107,122,112,243,215,153,50,26,198, +85,208,174,77,135,239,246,177,242,72,106,53,130,73,156,87, +65,186,38,31,191,207,133,195,51,187,212,61,116,56,111,131, +232,142,63,229,44,4,27,184,183,11,212,87,213,250,7,138, +175,236,149,135,82,39,208,76,109,77,12,94,248,57,111,128, +216,136,60,217,234,31,43,142,180,84,34,140,134,112,5,182, +106,199,163,178,109,190,61,167,8,196,81,148,230,65,211,183, +219,212,250,4,186,169,239,169,65,73,23,230,79,50,187,215, +13,114,59,83,69,243,190,9,230,115,242,192,235,61,9,232, +146,254,204,50,181,54,1,126,226,219,122,26,82,21,241,59, +93,164,255,178,208,110,76,27,44,247,42,65,71,246,234,67, +235,51,232,228,158,39,68,13,92,218,29,105,170,116,30,14, +221,204,119,229,184,68,58,45,167,40,196,19,180,102,3,251, +182,153,246,90,66,144,128,41,153,193,43,63,165,45,144,89, +185,38,25,223,195,131,187,191,140,180,81,114,134,131,52,79, +154,58,157,166,83,119,210,201,57,15,128,30,232,188,30,146, +28,237,232,84,159,92,247,204,33,133,17,18,2,5,84,74, +13,64,26,36,117,26,77,229,206,36,209,91,31,66,31,112, +63,23,13,255,234,81,203,22,250,140,59,161,100,8,79,224, +154,110,220,27,5,102,106,106,114,242,195,219,59,10,212,84, +229,252,4,182,105,247,165,177,81,120,38,151,62,199,14,98, +61,18,89,181,231,17,209,50,143,150,118,68,170,44,158,187, +133,44,195,107,58,113,103,149,152,163,8,205,193,134,239,245, +129,244,75,86,243,153,121,170,84,30,76,253,76,53,205,185, +6,24,141,225,2,237,213,132,230,97,211,245,251,84,184,44, +187,235,205,9,7,99,62,32,127,178,217,255,78,16,153,177, +43,216,213,237,118,181,186,193,110,111,43,104,212,150,197,116, +199,158,98,20,131,25,158,210,21,248,170,95,175,74,244,209, +247,222,0,176,1,123,179,193,125,95,12,123,168,113,74,68, +208,140,109,193,205,94,119,200,105,12,21,72,171,36,28,139, +137,142,251,165,168,193,75,63,99,77,16,158,193,37,223,185, +35,72,197,196,198,229,209,213,254,70,146,169,189,137,224,27, +127,198,153,16,58,128,119,120,104,119,166,137,214,123,16,240, +33,255,177,225,120,77,38,254,174,19,103,86,168,41,202,241, +136,108,217,79,79,107,42,112,86,135,217,150,222,196,240,133, +190,227,70,169,25,200,178,188,174,146,119,92,40,61,130,89, +156,118,81,250,7,139,191,238,148,147,16,46,192,94,108,120, +94,23,201,191,110,148,155,145,46,202,255,104,112,215,151,211, +22,202,140,88,145,164,107,243,225,249,93,44,126,186,91,207, +66,178,161,127,185,104,249,71,141,91,162,146,110,204,27,36, +118,42,75,230,242,226,202,107,41,65,64,134,228,68,135,253, +214,148,224,32,207,179,162,76,143,109,198,189,80,112,164,167, +50,101,54,172,175,162,117,31,28,255,201,97,143,53,70,8, +8,144,16,41,176,80,107,20,144,41,185,193,105,31,37,111, +184,88,251,4,185,153,233,170,125,143,12,214,121,49,228,33, +214,33,177,81,121,54,149,63,211,76,107,45,0,88,128,181, +88,224,180,142,130,53,93,184,63,139,204,222,117,224,236,14, +55,109,189,12,177,9,249,131,205,223,103,194,233,24,93,224, +191,62,148,62,193,110,110,59,106,213,130,135,125,215,140,99, +33,209,80,175,84,20,236,233,70,189,89,225,166,172,135,35, +55,53,61,185,233,233,77,13,79,234,58,122,214,147,145,62, +202,222,120,48,246,3,211,55,219,220,123,4,176,8,235,161, +200,201,13,79,235,42,120,215,135,211,55,218,204,121,5,164, +74,226,177,218,200,56,29,162,27,254,214,147,144,46,200,223, +108,114,255,19,193,54,238,142,50,53,54,9,255,226,209,219, +30,90,156,113,33,244,0,231,113,208,228,237,23,165,126,160, +250,234,90,123,0,241,16,237,240,212,174,68,23,253,255,5, +160,11,250,183,139,212,95,84,250,13,43,171,228,28,7,72, +142,116,84,174,77,134,255,244,176,230,10,99,37,144,72,169, +5,8,139,160,30,171,140,156,209,32,174,163,102,45,27,232, +183,174,132,23,113,62,5,47,250,252,59,70,20,200,169,12, +153,137,171,171,237,141,5,67,59,50,85,55,223,157,99,2, +225,20,140,232,144,223,216,50,156,166,81,87,214,203,17,139, +146,62,204,190,116,54,142,143,228,87,183,218,197,232,7,175, +255,164,176,67,90,35,129,84,74,12,80,24,37,97,88,68, +245,220,37,228,9,86,115,153,113,43,84,20,237,249,68,188, +77,163,175,188,149,34,2,103,116,136,111,232,89,78,86,248, +41,111,161,200,200,29,77,234,62,58,222,151,193,54,239,158, +48,52,34,75,246,242,195,218,43,8,213,64,167,245,20,164, +104,194,247,248,96,254,39,131,125,222,28,113,40,101,2,236, +196,150,229,116,133,190,226,86,171,24,220,240,181,190,128,118, +105,122,116,179,223,157,98,18,227,21,152,170,153,207,202,51, +169,244,24,102,80,202,5,200,139,44,223,171,3,109,215,172, +99,99,241,208,237,124,21,174,203,230,251,115,200,96,156,7, +65,31,118,95,27,11,135,102,102,171,122,252,50,215,22,195, +28,74,152,16,57,176,113,123,84,177,189,185,224,120,79,6, +250,172,59,227,68,136,13,200,155,44,254,187,67,76,67,172, +66,114,161,243,120,104,118,182,139,215,111,82,249,49,237,176, +212,42,4,23,120,175,7,36,79,186,58,223,134,211,53,250, +200,123,45,32,88,194,149,216,162,156,143,192,23,253,254,21, +162,10,238,245,130,196,77,85,207,95,98,154,98,29,19,11, +151,102,71,187,58,221,166,215,55,210,76,105,13,4,90,168, +49,74,192,144,140,232,145,207,218,51,136,228,88,71,196,202, +36,217,219,15,74,191,96,117,151,157,247,66,192,129,156,203, +128,155,185,174,152,215,72,34,181,22,1,60,194,91,56,50, +83,87,211,155,27,142,214,116,224,238,46,51,111,149,136,163, +41,221,129,167,123,245,160,229,27,117,102,141,26,178,20,47, +216,220,125,100,188,14,147,45,255,169,97,73,85,198,207,112, +147,214,79,80,155,21,111,218,120,57,102,17,218,131,137,159, +235,134,185,149,40,162,115,126,0,251,176,249,250,92,58,28, +183,73,245,199,149,211,18,138,132,92,193,172,78,179,169,253, +137,100,91,127,67,201,18,190,196,55,245,60,37,42,232,214, +190,64,118,229,187,116,60,46,155,238,223,35,130,101,92,13, +109,202,124,88,126,85,171,31,172,254,178,210,78,72,25,4, +115,56,97,99,244,128,231,121,81,228,231,182,161,118,41,122, +240,243,223,24,50,16,103,81,216,39,205,157,70,82,169,49, +72,224,148,142,192,21,221,250,23,138,142,252,213,166,198,39, +241,93,61,110,153,74,155,33,47,177,76,169,13,136,155,168, +190,187,198,28,65,40,6,50,44,167,42,228,23,182,78,135, +233,150,189,244,48,230,2,226,37,154,233,173,13,129,11,186, +183,15,148,95,209,170,15,175,239,164,145,83,26,2,21,84, +107,29,0,59,176,117,59,92,181,237,177,197,56,7,2,46, +228,30,38,92,142,93,196,254,100,178,239,159,33,38,33,94, +160,185,218,216,56,60,178,91,223,66,147,177,63,152,252,249, +102,156,11,129,7,122,175,3,100,71,190,106,215,163,147,125, +254,28,51,8,229,64,196,197,212,199,212,195,148,203,144,155, +152,190,216,246,220,34,148,7,81,31,87,79,91,42,19,102, +71,186,42,223,167,195,117,219,92,123,12,49,8,225,0,204, +193,132,207,241,131,220,207,68,211,189,123,192,240,140,46,241, +79,29,75,139,34,62,167,15,180,95,147,138,143,237,199,165, +211,113,186,68,63,125,173,45,128,89,152,54,89,254,87,131, +154,174,220,151,196,102,229,155,116,126,14,27,172,247,34,192, +71,252,75,71,227,186,104,254,55,131,92,206,92,80,188,101, +35,253,148,181,112,96,230,166,162,103,63,57,237,161,196,9, +21,67,27,50,23,23,95,223,75,3,163,54,44,174,186,246, +30,2,28,196,121,20,180,105,243,229,185,85,40,46,178,126, +143,10,182,117,55,156,173,225,65,221,87,199,218,34,152,199, +73,19,167,87,52,234,203,106,59,99,69,144,142,201,133,207, +243,163,216,205,108,87,175,91,228,242,230,138,99,45,17,72, +163,164,12,131,41,158,177,37,56,201,227,174,41,199,33,146, +97,61,21,41,187,224,125,31,12,255,232,113,207,20,210,8, +41,129,64,10,37,68,8,12,208,24,45,224,88,78,84,216, +45,109,137,76,218,61,105,232,84,158,76,245,205,53,199,24, +2,16,4,97,24,68,113,156,37,97,89,84,247,221,49,166, +0,70,97,152,68,121,29,37,107,248,80,255,84,177,188,169, +226,121,91,68,243,188,41,226,113,218,68,249,29,45,234,248, +90,94,80,185,53,41,248,208,255,92,48,188,163,67,125,83, +205,115,166,128,70,105,25,68,115,188,33,99,113,208,229,253, +21,164,106,226,243,250,72,122,53,163,89,220,118,213,186,7, +14,239,236,16,215,80,163,148,12,224,25,94,210,153,57,170, +208,94,76,120,28,55,73,253,70,149,217,179,142,140,213,65, +182,231,23,177,62,137,238,250,115,202,64,152,5,105,155,100, +127,63,9,237,194,244,201,118,255,26,81,36,231,58,96,118, +166,139,246,127,18,216,165,237,145,197,122,39,130,108,204,31, +100,126,46,27,238,215,162,130,111,253,9,101,67,252,66,215, +241,179,220,172,116,19,222,199,193,147,191,222,148,240,32,238, +163,226,109,27,109,231,172,0,83,49,179,81,125,118,157,59, +131,68,78,109,72,92,84,253,125,37,172,136,210,57,56,240, +115,223,16,179,16,109,240,220,47,68,29,92,251,13,41,139, +224,30,47,204,156,84,112,172,39,34,109,150,188,229,34,229, +23,180,110,131,235,190,57,230,16,194,0,136,129,8,139,161, +14,169,141,136,147,41,190,177,103,24,73,161,134,40,133,3, +50,39,23,60,239,139,96,31,55,79,157,74,147,161,63,185, +236,185,71,8,11,160,22,42,140,150,112,36,166,42,230,55, +178,76,175,109,132,157,208,50,140,166,112,71,150,234,133,139, +179,47,156,157,225,34,237,151,164,102,35,251,244,185,118,24, +106,145,194,11,57,135,1,22,99,29,16,59,145,101,123,125, +33,237,144,212,104,36,151,58,135,6,102,109,26,124,245,175, +21,5,122,170,83,110,66,250,32,251,243,201,120,31,6,95, +252,123,71,128,138,168,157,139,130,63,253,172,53,3,88,134, +213,84,230,204,2,181,85,49,190,129,103,123,121,97,229,148, +132,96,1,215,114,131,210,46,72,223,100,243,255,25,96,50, +230,7,178,47,159,173,231,33,209,81,191,86,21,248,171,79, +173,75,224,147,254,206,18,177,52,41,250,240,251,94,24,56, +177,99,89,81,167,215,52,226,74,106,49,194,65,152,7,73, +159,102,87,187,27,205,230,246,163,210,109,120,93,39,207,188, +82,82,128,161,24,201,160,158,171,132,29,209,42,15,167,110, +164,155,242,30,10,156,212,113,180,164,35,115,117,177,253,185, +100,56,79,131,170,174,191,167,4,5,89,154,23,77,254,126, +19,202,135,232,135,175,247,37,176,73,251,39,137,221,202,22, +249,188,61,162,88,206,84,208,172,109,131,237,222,53,224,104, +78,55,232,237,14,53,77,185,14,153,141,235,163,233,221,13, +102,123,122,81,227,151,184,166,26,231,68,128,141,216,147,140, +238,241,195,220,75,4,211,56,43,194,116,200,110,124,27,79, +199,234,34,251,247,137,112,27,86,87,217,59,15,132,94,224, +184,78,154,57,173,160,80,75,20,210,9,57,131,65,30,103, +77,24,30,209,45,127,169,105,200,85,204,110,116,155,95,207, +74,50,177,119,25,120,179,199,29,83,10,3,36,70,42,40, +214,50,129,118,106,74,114,176,227,91,121,34,213,22,199,92, +66,156,64,49,149,49,51,80,101,245,156,37,96,73,86,246, +201,115,175,16,84,96,173,22,48,44,163,106,236,19,230,70, +162,169,222,185,32,120,195,199,250,35,202,229,200,69,205,95, +102,218,106,25,67,3,178,38,15,191,238,149,131,18,47,212, +28,101,104,76,22,252,237,39,165,29,144,58,137,230,122,99, +194,224,136,79,233,11,108,215,174,67,103,243,248,105,110,53, +138,201,140,95,225,170,108,159,47,199,45,82,121,49,229,49, +212,32,165,19,112,38,135,62,230,30,34,28,134,89,148,246, +65,242,167,155,245,110,4,155,184,191,138,212,93,116,254,15, +3,47,246,60,35,74,228,208,198,204,65,133,215,114,130,194, +44,73,203,38,250,239,11,97,7,180,78,131,169,158,185,164, +56,195,66,170,33,78,161,136,200,153,13,234,187,106,220,19, +133,118,98,202,98,184,67,75,51,162,69,30,111,205,8,22, +113,61,53,41,249,192,253,93,36,254,170,83,111,82,248,33, +239,177,192,104,13,7,106,174,50,118,6,139,188,222,146,144, +44,232,219,110,90,123,1,225,18,236,228,150,167,84,5,252, +202,87,233,58,124,182,159,151,70,70,233,24,92,240,189,63, +128,124,200,126,124,58,95,135,203,182,251,214,152,32,56,195, +67,186,35,79,181,202,193,137,31,235,142,56,149,34,3,119, +118,137,123,170,80,94,68,249,28,61,232,249,78,28,89,169, +39,40,205,130,182,109,182,189,183,0,100,65,222,102,209,219, +31,74,158,112,53,182,9,247,99,209,209,191,94,148,248,161, +238,169,67,105,19,228,103,182,169,247,41,112,81,247,215,145, +178,10,206,245,192,228,205,23,231,94,32,184,194,91,57,34, +81,86,199,217,18,158,196,117,213,188,103,2,233,148,156,224, +48,207,146,178,12,174,249,198,156,65,32,135,50,38,6,46, +236,158,54,84,46,77,142,126,244,186,71,14,107,172,16,82, +0,161,16,72,160,148,10,128,21,88,170,21,14,202,188,88, +242,148,171,144,93,248,62,31,142,223,228,242,231,154,97,44, +5,10,170,180,30,130,28,204,248,20,190,200,247,237,48,213, +50,135,22,102,76,10,60,212,59,21,36,107,250,112,251,86, +153,56,187,194,93,89,46,87,46,75,238,114,242,194,203,57, +11,192,22,236,236,22,183,92,165,236,128,215,121,50,212,39, +213,29,119,74,73,0,150,96,37,151,56,167,2,100,69,158, +110,213,139,23,111,222,56,49,98,65,210,166,201,215,239,82, +241,176,237,186,117,46,12,158,248,181,174,128,87,121,58,85, +39,223,188,115,66,192,128,140,201,129,143,251,167,136,197,73, +23,231,95,48,186,195,79,123,43,65,68,198,236,64,215,245, +243,212,168,36,27,251,135,137,151,107,150,177,53,56,232,243, +238,8,83,33,179,112,109,54,188,175,131,101,95,61,107,201, +64,158,101,101,157,28,243,8,105,129,196,74,37,193,88,14, +84,92,109,109,12,28,216,185,45,168,217,202,30,121,172,53, +2,72,132,212,64,164,197,18,167,84,4,236,200,86,253,120, +117,166,141,150,115,20,160,41,218,241,169,124,153,110,219,107, +11,97,6,164,76,130,189,220,176,180,42,194,119,248,104,127, +39,137,220,218,20,248,168,127,171,72,220,85,229,254,36,178, +107,223,33,163,113,92,36,253,154,85,108,110,62,58,223,135, +195,55,251,220,57,36,48,74,195,160,138,235,173,9,193,3, +190,231,7,177,31,153,174,219,231,202,97,137,85,74,14,112, +28,39,73,220,86,213,248,39,142,173,196,17,149,114,3,210, +38,201,223,110,82,251,17,233,178,252,174,22,55,92,173,109, +128,221,216,54,220,174,85,7,222,238,81,195,150,234,132,155, +177,46,136,223,232,50,255,150,145,52,106,202,114,184,98,91, +115,131,209,30,78,220,88,53,228,41,86,49,185,241,105,124, +21,175,219,228,250,103,138,105,140,21,64,42,36,22,42,141, +134,114,37,178,104,239,39,160,77,154,63,205,172,86,51,152, +229,105,85,133,255,242,208,234,12,27,169,167,40,197,3,182, +103,23,185,191,137,228,91,119,194,201,24,31,192,63,124,188, +63,131,76,206,125,64,252,68,183,253,181,164,32,67,115,178, +193,127,127,8,121,128,245,88,100,244,142,7,101,95,60,123, +203,65,138,39,108,141,14,242,61,59,200,245,204,36,213,27, +23,70,79,120,26,87,69,251,62,25,238,211,226,138,107,173, +1,64,3,180,70,3,185,150,25,180,114,67,210,162,137,223, +235,2,249,149,173,242,113,250,68,187,61,173,168,208,91,28, +114,25,115,3,209,22,207,220,82,148,224,33,223,177,163,88, +205,100,214,175,81,69,246,238,3,227,55,184,236,187,103,12, +9,136,146,56,172,178,114,78,2,184,132,59,177,100,41,95, +160,187,250,220,58,20,54,73,255,102,145,219,155,10,158,245, +101,180,141,179,35,92,133,237,210,245,248,100,190,47,135,45, +214,57,49,96,97,214,164,225,83,253,114,213,178,135,30,231, +76,0,157,208,51,156,164,113,83,212,227,149,153,178,26,206, +212,208,164,236,131,231,127,49,232,225,206,45,65,73,22,246, +77,51,175,149,4,98,41,82,112,161,247,56,96,114,230,131, +242,47,26,253,229,165,149,17,50,2,71,116,202,79,104,27, +102,87,186,11,207,231,226,225,219,125,106,92,18,157,245,99, +212,129,181,91,208,178,141,190,243,70,136,9,136,147,40,174, +179,102,12,11,168,150,58,132,54,96,110,38,186,238,159,35, +6,37,92,136,61,200,248,28,62,216,255,77,32,159,178,23, +30,206,221,64,182,229,55,181,60,161,106,232,83,238,66,242, +161,251,249,104,124,23,143,223,230,210,227,152,73,168,23,42, +142,182,116,38,142,174,244,23,150,78,197,201,22,255,220,49, +164,32,66,99,176,192,107,61,1,105,146,244,109,54,189,191, +129,100,75,127,98,217,82,159,80,55,212,45,117,9,125,194, +221,88,54,212,47,85,13,127,234,89,74,22,240,45,63,169, +237,136,85,73,62,118,31,27,143,199,102,227,251,120,120,118, +151,155,151,78,198,249,16,252,224,247,191,16,116,96,239,54, +176,110,139,107,174,49,70,0,136,128,24,137,160,26,235,132, +152,129,40,139,227,46,41,207,160,146,107,156,17,33,50,96, +103,182,168,231,43,113,69,181,222,129,160,11,251,167,137,213, +75,22,243,29,57,170,209,78,78,121,8,117,64,237,84,148, +236,225,199,189,83,64,162,164,14,163,45,156,153,161,42,233, +199,172,67,99,179,240,109,62,61,175,137,196,91,53,226,73, +90,55,193,125,94,28,121,169,101,8,77,192,158,108,244,159, +23,70,78,104,24,86,81,185,55,9,252,210,215,216,34,156, +135,65,23,247,95,17,170,131,110,239,43,96,85,150,207,213, +195,150,235,148,153,176,58,202,214,248,32,254,163,195,125,91, +76,115,172,33,66,97,144,196,105,21,133,123,178,208,111,92, +25,45,227,104,72,87,228,235,118,185,122,217,98,159,51,7, +20,78,201,8,30,241,45,61,137,233,138,125,205,44,86,59, +25,229,99,244,129,247,123,80,240,165,191,177,100,40,79,162, +186,238,158,51,4,36,72,202,52,216,234,29,11,138,182,124, +166,158,166,84,7,220,206,85,193,190,110,150,187,149,44,226, +123,122,80,243,149,185,178,88,238,84,146,140,237,193,197,223, +119,194,200,8,29,193,43,62,181,47,145,77,251,47,9,205, +194,182,233,246,189,50,80,102,197,154,38,92,143,77,198,255, +112,240,230,143,51,39,20,12,233,136,92,217,44,127,171,73, +204,87,228,234,102,187,123,205,32,150,35,21,21,123,155,65, +47,119,44,41,202,240,152,110,216,91,13,98,58,98,87,178, +139,223,239,66,241,145,253,250,84,186,12,191,233,229,141,21, +67,26,34,21,22,75,157,66,19,177,55,25,252,243,199,152, +3,8,135,96,6,167,124,132,190,224,118,175,26,244,116,167, +158,164,116,3,222,230,209,211,158,74,148,209,49,190,128,119, +121,120,117,167,157,148,114,0,226,32,202,227,168,73,203,39, +234,237,10,117,69,189,94,145,168,171,235,237,9,69,67,190, +98,87,179,155,221,238,86,179,152,237,232,85,143,94,246,216, +99,140,1,0,3,48,6,3,60,198,27,48,54,3,95,246, +219,83,138,2,60,197,43,54,53,63,153,237,235,101,137,93, +202,30,120,188,55,3,92,198,221,80,182,196,39,245,29,53, +106,201,66,190,97,103,181,152,225,40,77,131,174,238,183,163, +84,13,124,218,95,73,42,54,54,15,159,238,215,163,146,109, +252,29,39,74,236,80,214,196,225,149,157,242,18,202,132,216, +129,172,203,227,171,121,205,36,214,43,17,69,115,190,1,103, +115,248,97,239,53,128,104,136,87,104,42,118,54,139,223,238, +82,243,144,233,184,93,170,30,190,220,183,196,36,197,27,54, +86,15,89,142,87,100,234,110,58,123,199,129,146,43,156,149, +97,50,229,55,180,44,163,107,252,17,231,82,224,160,206,171, +33,77,145,142,203,165,203,241,139,92,223,76,115,173,49,64, +96,132,134,96,5,151,122,135,130,38,109,159,44,247,43,81, +69,247,254,1,226,35,250,229,171,117,13,60,218,219,9,42, +179,102,13,27,170,151,46,198,63,112,124,39,143,188,214,18, +128,36,72,203,36,218,235,9,73,131,166,110,167,171,244,29, +54,90,207,65,130,167,124,133,174,226,119,187,88,253,100,181, +159,145,38,74,239,96,208,199,221,83,134,194,36,201,219,46, +90,255,65,225,151,188,230,18,227,20,136,168,152,219,136,58, +185,230,25,83,2,131,52,78,138,56,156,178,17,126,194,219, +56,58,210,87,217,58,31,134,95,244,250,71,138,43,172,149, +2,2,37,84,8,45,192,88,12,116,88,111,69,136,14,248, +157,47,194,125,88,124,117,175,29,132,122,160,242,106,74,115, +160,225,90,109,96,220,6,213,93,119,206,9,0,19,48,39, +19,124,231,143,48,23,18,15,213,78,71,233,26,124,244,191, +23,4,110,232,90,126,80,251,21,169,186,248,254,30,18,28, +229,105,84,149,253,243,196,168,5,11,187,166,29,151,74,135, +225,22,173,252,144,246,72,98,181,146,65,60,71,11,58,182, +23,23,94,207,73,2,183,116,37,190,168,247,43,80,85,245, +255,21,160,42,234,247,170,64,95,117,235,93,8,62,240,127, +31,8,191,224,117,159,28,247,72,97,133,148,66,0,129,16, +10,128,20,72,168,20,26,136,181,72,224,149,158,194,20,201, +184,30,154,156,253,224,244,143,22,119,92,41,45,128,88,136, +52,88,234,21,138,138,188,221,162,150,47,212,29,117,106,77, +2,190,228,55,183,28,165,104,192,215,252,98,214,163,145,93, +250,30,27,140,247,96,224,199,190,99,70,161,152,200,184,29, +170,154,254,220,50,148,38,65,95,118,219,91,11,2,54,100, +47,62,188,191,131,68,79,125,74,93,64,191,116,53,190,137, +231,107,113,193,245,222,4,240,9,127,227,201,88,31,68,127, +124,57,111,129,200,138,61,205,168,22,59,156,181,97,112,197, +183,246,4,162,41,222,177,161,120,201,102,254,43,67,101,210, +236,105,71,165,218,224,184,79,138,59,172,180,18,66,4,192, +8,12,209,8,47,225,76,12,93,200,63,108,188,30,147,12, +239,233,64,221,85,231,222,32,176,67,91,51,131,85,94,78, +89,8,55,96,109,22,188,237,163,229,29,21,106,139,98,62, +35,79,180,218,195,136,11,169,135,40,135,35,54,37,63,184, +253,171,68,29,93,235,15,40,159,162,23,63,222,157,97,34, +229,22,164,108,130,255,252,48,246,2,195,53,218,200,57,13, +160,26,234,148,154,128,60,201,234,62,59,206,149,192,34,173, +151,32,38,35,126,164,187,242,92,42,28,150,89,181,230,1, +211,51,155,212,127,84,184,45,171,233,204,29,69,106,46,50, +126,135,139,182,127,150,152,165,104,193,199,254,99,194,225,152, +77,232,31,46,222,190,81,102,198,170,32,95,179,139,221,207, +70,243,185,121,232,116,158,14,213,77,119,239,25,64,50,164, +39,50,109,183,172,165,3,113,23,149,127,211,200,43,45,133, +8,130,49,28,160,57,218,208,185,60,184,250,219,74,26,49, +37,49,88,225,165,156,129,32,11,243,38,137,223,234,18,251, +148,185,176,120,234,86,186,8,255,225,225,221,29,102,90,106, +17,194,3,184,135,11,183,103,21,153,187,139,204,223,101,226, +237,26,117,100,173,30,176,60,171,202,252,89,102,214,170,1, +79,243,170,73,207,103,226,233,90,125,96,253,22,149,124,227, +206,40,17,67,19,178,7,31,255,207,1,131,51,62,132,63, +240,124,47,14,188,220,179,132,44,193,75,62,115,79,17,138, +131,44,207,171,34,125,151,141,247,99,208,193,189,95,128,186, +168,254,187,66,92,65,173,86,48,168,227,106,105,67,228,194, +230,233,83,237,114,244,162,199,63,115,76,33,140,128,16,9, +176,18,75,148,210,1,184,131,75,191,99,69,145,158,203,132, +219,177,170,200,223,109,98,253,18,213,116,231,158,32,52,3, +91,182,211,87,218,10,25,133,99,50,225,119,188,40,243,99, +217,81,175,86,52,232,235,110,57,75,193,130,174,237,135,165, +87,49,186,193,111,127,41,105,192,212,204,100,213,159,87,70, +202,40,24,211,1,187,179,77,188,95,131,138,174,253,135,132, +71,113,155,85,111,94,56,57,227,65,216,7,205,223,102,210, +235,25,73,162,182,46,134,63,244,60,39,10,236,212,150,196, +100,197,159,118,86,138,9,140,211,32,170,227,110,41,75,224, +146,238,204,19,165,118,32,234,226,250,107,74,113,128,229,88, +69,228,206,38,241,95,29,106,155,98,31,51,15,149,78,195, +169,26,249,164,189,147,64,46,101,14,44,220,154,21,108,234, +126,58,90,215,193,179,191,156,180,112,98,198,162,160,79,187, +43,205,133,198,99,177,209,121,62,20,63,217,237,111,37,137, +216,154,28,252,248,119,142,8,148,81,49,182,1,119,115,217, +113,175,20,20,104,169,70,56,9,227,34,232,199,174,99,103, +177,216,233,44,29,139,139,174,255,167,128,69,89,31,71,79, +122,58,83,71,211,186,11,206,247,224,224,207,63,99,76,0, +156,192,49,157,176,51,90,196,241,148,172,224,83,255,82,209, +176,175,154,245,108,36,159,186,151,14,198,125,80,252,101,167, +189,148,48,32,98,98,226,226,234,107,107,97,192,196,204,69, +197,223,118,210,202,9,9,131,34,46,167,46,164,31,178,30, +143,204,214,245,240,228,174,39,39,61,156,185,161,104,201,71, +238,107,98,241,210,205,120,23,134,79,244,219,87,202,10,56, +149,35,19,117,119,157,57,163,64,76,69,204,78,116,217,127, +79,8,26,176,53,59,216,245,237,52,149,58,131,70,110,105, +74,116,208,239,93,1,174,226,118,171,90,252,112,247,150,129, +52,75,218,50,153,246,91,82,146,129,61,219,200,59,45,164, +24,194,16,136,160,24,203,128,154,169,172,153,195,10,43,165, +4,0,9,144,18,9,180,82,67,144,130,9,157,195,3,187, +183,13,180,91,211,130,139,189,207,128,147,57,190,144,119,88, +104,53,134,9,148,83,17,178,3,95,247,203,81,139,22,126, +204,59,36,52,10,203,164,218,227,136,73,137,7,106,175,34, +116,7,159,254,215,130,130,45,221,137,39,107,253,0,245,81, +245,246,133,178,35,94,165,233,208,221,124,118,158,11,133,71, +114,171,83,108,98,254,34,211,119,219,88,59,4,53,88,233, +37,140,137,128,27,185,166,25,215,66,131,177,30,136,188,216, +242,156,42,144,87,89,58,23,7,95,254,91,67,130,162,44, +143,171,166,61,151,8,167,97,84,133,253,210,212,232,36,159, +187,135,12,199,105,18,245,117,181,188,161,98,105,83,228,227, +246,169,114,121,114,213,179,151,28,230,88,66,148,192,33,157, +145,35,26,229,101,148,141,241,3,220,199,197,211,183,218,196, +248,5,174,235,230,185,83,72,34,180,6,3,61,214,25,49, +34,65,86,230,201,82,191,80,117,244,173,55,33,124,128,255, +248,112,254,6,147,61,255,136,113,9,116,82,207,81,130,134, +108,197,143,118,119,154,73,173,71,32,139,242,62,10,222,244, +241,246,140,34,49,87,17,187,147,77,254,127,3,200,134,252, +197,166,231,55,177,124,169,110,184,91,203,2,186,165,47,177, +77,185,15,137,143,234,183,171,212,29,116,122,79,3,170,166, +62,167,14,164,93,146,158,205,228,215,183,210,68,232,13,14, +251,172,57,195,64,138,37,76,137,12,218,185,41,232,209,206, +78,113,137,117,74,76,80,156,101,97,221,20,247,88,97,164, +132,2,33,21,16,43,145,68,107,61,0,121,144,245,121,116, +180,175,147,101,126,45,43,232,212,158,68,116,205,63,102,28, +10,153,132,123,177,224,105,95,37,235,248,88,126,84,187,29, +173,234,240,219,94,90,24,49,33,113,80,229,245,148,164,96, +67,247,242,193,250,47,10,253,196,181,213,48,166,2,102,101, +154,108,253,15,5,79,250,58,91,198,211,176,170,202,255,105, +96,213,150,199,84,195,156,74,144,145,57,186,208,127,92,56, +61,163,73,220,87,197,250,38,154,239,205,1,135,115,54,128, +111,248,89,111,70,184,8,251,161,233,217,77,110,127,42,89, +198,215,240,162,206,175,97,69,149,222,195,128,139,185,143,136, +151,105,182,181,55,16,108,225,206,44,81,75,23,226,15,58, +191,135,5,87,123,27,65,39,246,44,35,107,244,144,231,88, +65,164,198,34,161,87,56,42,211,102,203,123,42,80,86,197, +249,22,156,236,241,199,156,67,0,131,48,14,130,60,204,186, +52,62,138,223,236,114,247,146,193,60,79,138,58,188,182,19, +86,70,201,24,30,208,61,125,168,125,138,92,220,124,117,174, +13,134,123,180,176,99,90,97,161,212,8,36,81,90,7,193, +30,110,220,26,21,100,107,126,48,251,211,201,58,63,134,29, +212,122,5,162,42,238,183,162,68,15,125,206,29,64,58,36, +55,58,205,167,230,37,147,121,191,4,53,89,249,39,141,157, +194,18,169,180,24,226,16,202,128,152,137,168,155,235,142,57, +133,32,2,99,52,128,107,184,81,107,22,176,45,187,233,237, +13,5,75,186,50,95,150,219,149,234,130,251,189,40,240,83, +223,82,147,144,47,216,221,109,102,189,26,209,36,239,187,96, +124,7,143,254,246,146,194,12,73,137,6,122,173,35,96,69, +150,238,197,131,183,127,148,184,161,106,233,67,236,67,230,227, +242,233,122,125,34,221,150,215,84,226,140,10,177,5,57,155, +193,47,127,173,41,192,81,156,102,81,219,23,203,158,122,148, +178,1,126,227,203,120,27,70,87,248,43,79,165,202,224,153, +95,202,26,56,180,51,83,84,227,157,24,178,16,111,208,216, +45,108,153,78,219,41,43,225,68,140,77,192,159,124,246,158, +3,4,71,120,10,87,100,235,126,56,122,211,195,155,59,142, +148,84,96,172,6,50,45,183,40,229,3,244,71,151,251,151, +136,166,121,215,132,227,49,217,240,191,30,148,124,225,238,44, +19,107,151,160,39,59,253,165,165,17,81,50,135,23,118,78, +11,40,150,50,5,54,106,207,34,178,103,31,57,175,129,68, +75,61,66,89,16,183,81,117,246,141,51,35,84,4,237,216, +84,252,108,55,175,157,132,114,33,242,96,235,119,168,104,218, +119,201,120,30,22,93,253,111,5,137,154,186,156,190,208,118, +204,42,52,23,27,159,199,71,243,187,89,236,118,182,138,199, +109,83,237,115,228,160,198,43,49,69,49,158,129,37,91,249, +35,205,149,198,66,161,145,88,170,20,30,200,189,76,176,157, +187,130,92,205,108,86,191,89,229,230,164,131,115,63,16,125, +241,237,61,5,40,138,242,60,42,218,246,217,114,158,2,21, +85,123,31,1,47,242,124,43,78,180,216,227,140,9,129,3, +58,167,7,52,79,155,42,159,167,71,53,219,217,43,14,181, +76,161,141,152,147,8,174,241,70,140,73,128,151,120,166,150, +38,68,15,124,222,31,65,46,102,62,42,223,166,211,119,218, +72,57,5,33,26,224,53,158,136,181,73,240,151,159,214,86, +192,168,12,155,169,175,169,197,9,23,99,31,48,63,147,77, +255,111,1,201,146,190,204,182,245,54,132,46,224,95,62,90, +223,65,163,183,60,164,58,226,86,170,8,222,241,161,252,137, +102,123,123,65,225,150,172,228,19,247,86,129,184,138,218,189, +104,240,215,159,82,22,192,45,92,153,45,235,233,72,93,69, +239,126,48,250,195,203,59,43,196,20,196,104,4,151,120,167, +134,36,69,27,62,215,15,83,47,83,108,99,238,32,210,99, +153,81,43,22,52,109,187,108,189,15,129,15,250,191,11,196, +87,244,234,71,171,59,236,180,150,2,4,69,88,14,85,76, +111,108,24,94,209,169,63,169,236,152,87,72,42,52,22,11, +157,198,83,177,178,73,254,119,131,216,142,92,213,236,103,167, +185,212,56,36,50,106,199,162,162,111,191,41,229,1,212,67, +149,211,19,154,134,93,213,238,71,163,187,252,188,54,18,78, +197,200,6,253,221,37,230,41,82,113,177,245,57,116,48,239, +147,224,46,47,175,172,148,19,16,38,65,94,102,217,90,31, +64,63,116,61,63,137,237,202,117,201,124,94,30,89,173,103, +32,201,210,190,72,246,245,179,212,44,100,27,126,215,139,19, +47,214,60,97,106,100,146,238,205,3,167,119,52,168,235,234, +121,75,68,210,172,105,195,229,218,101,232,77,14,127,236,57, +70,16,136,161,8,201,129,142,235,165,137,209,11,30,247,77, +49,143,145,6,74,173,64,80,133,245,82,196,224,132,143,241, +7,156,207,193,131,191,255,132,176,1,122,163,195,124,75,78, +114,184,99,75,113,130,197,92,71,204,74,52,209,123,31,0, +63,240,125,63,12,189,200,241,141,60,211,74,11,33,6,32, +12,130,56,140,178,48,110,130,250,172,58,243,70,137,25,138, +146,60,236,186,118,30,10,157,196,115,181,176,97,122,101,163, +252,140,54,113,126,5,171,186,252,190,22,22,76,237,76,20, +221,249,39,140,141,192,19,189,246,17,242,2,203,181,202,192, +153,29,234,154,122,156,50,17,118,67,219,50,155,214,95,80, +186,5,47,251,236,57,71,0,138,160,28,139,136,158,249,164, +188,131,66,47,113,76,37,204,136,20,89,184,55,11,220,214, +213,240,166,142,167,101,21,157,251,131,200,143,109,199,173,82, +113,176,229,59,117,36,173,154,240,60,46,154,254,221,34,150, +39,85,29,127,203,73,10,55,100,45,30,184,189,171,192,93, +93,110,95,42,27,230,87,178,138,207,237,67,229,211,244,234, +70,187,57,237,160,212,11,20,87,89,59,7,5,94,234,25, +74,146,176,45,186,249,239,12,17,9,179,34,77,151,238,199, +163,179,125,188,60,179,74,205,65,134,231,116,129,254,234,82, +251,16,249,176,253,186,84,62,76,191,108,181,143,145,7,90, +175,65,68,199,252,66,214,225,177,221,184,54,26,206,213,192, +166,237,151,165,118,33,250,224,251,127,8,120,144,247,89,112, +182,135,23,119,94,9,41,130,112,12,38,120,206,23,224,46, +46,191,174,149,7,82,47,81,76,103,236,8,86,113,185,117, +41,124,144,255,217,96,190,39,7,61,222,153,33,42,225,70, +172,73,194,183,248,228,190,39,6,45,220,152,53,104,232,86, +190,72,247,229,177,213,56,38,18,110,197,138,38,125,159,13, +231,107,112,209,247,223,16,178,0,111,241,200,109,77,13,78, +250,56,123,194,209,152,46,216,223,77,98,191,50,85,54,207, +159,98,22,163,29,156,250,145,234,138,123,173,32,80,67,149, +210,3,152,135,73,151,231,87,177,186,201,238,127,35,200,196, +220,69,228,207,54,243,94,9,40,146,114,13,50,58,199,7, +242,47,27,237,231,164,129,83,59,18,85,117,255,29,33,42, +224,86,174,72,214,245,241,244,172,38,51,127,149,169,179,105, +252,21,167,90,228,240,198,142,97,5,149,90,131,128,14,233, +141,12,211,41,59,225,101,156,13,225,11,124,215,143,83,39, +210,108,105,79,36,218,234,25,75,130,178,44,174,187,230,28, +3,8,134,112,4,166,104,198,183,240,100,174,47,166,61,150, +24,165,96,64,199,244,194,198,233,17,205,242,182,138,198,125, +81,236,103,166,169,214,57,48,112,99,215,176,163,90,237,96, +212,135,213,87,214,202,1,137,147,42,142,183,100,36,143,186, +182,30,134,92,196,252,68,182,237,183,165,52,1,122,162,211, +126,74,90,48,177,115,89,112,183,151,21,118,74,75,32,146, +98,13,19,42,135,38,102,47,58,252,183,135,20,71,88,10, +21,68,107,60,16,123,145,225,59,125,164,189,146,80,44,100, +26,110,213,138,7,109,223,44,115,107,81,192,167,252,133,166, +99,119,177,249,249,108,60,31,139,143,238,247,163,208,77,124, +95,15,75,174,114,118,130,203,188,91,194,146,168,172,155,227, +14,41,141,128,18,41,180,16,99,16,192,33,156,129,33,27, +241,39,157,157,227,2,233,149,140,226,49,219,208,187,28,188, +248,243,206,8,17,1,51,50,69,55,254,141,35,35,117,20, +173,249,192,252,77,38,255,190,17,102,66,234,32,218,227,137, +89,139,6,126,237,43,100,21,158,203,133,203,179,171,220,157, +100,114,239,19,224,38,174,175,166,53,23,24,175,193,68,207, +125,66,220,64,181,213,49,182,0,103,113,216,101,237,29,4, +122,168,115,106,64,210,164,233,211,237,122,117,162,205,158,119, +68,168,12,154,185,173,168,209,75,30,115,13,49,10,193,4, +206,233,0,221,209,167,222,165,224,65,223,119,195,216,10,28, +213,105,55,165,61,144,120,169,102,56,75,195,162,170,239,175, +33,69,17,158,195,5,219,187,11,204,215,228,226,231,187,113, +108,36,158,170,149,15,210,63,89,236,119,166,136,198,121,17, +228,99,246,161,243,121,120,116,183,159,149,102,66,235,48,216, +226,157,27,130,22,108,236,30,54,92,175,77,132,223,240,178, +206,142,113,5,180,74,195,161,154,233,172,29,131,10,174,245, +6,132,77,208,159,93,230,222,34,144,71,89,27,7,71,126, +106,91,98,147,242,15,26,191,197,37,215,57,51,64,101,212, +140,101,65,221,86,215,216,35,140,133,64,3,181,86,1,184, +130,91,189,98,81,211,151,219,150,218,132,248,129,238,235,99, +233,81,204,102,244,139,87,111,90,120,49,231,17,208,34,141, +151,98,6,163,60,140,186,176,126,138,90,188,112,115,214,129, +177,27,216,182,221,182,214,6,192,13,92,219,13,107,171,96, +92,7,205,222,118,208,234,13,11,171,166,60,135,10,166,117, +22,140,237,192,213,221,118,214,138,1,13,211,42,11,231,102, +160,203,250,59,74,212,208,165,252,129,230,107,115,225,241,220, +44,116,27,95,199,203,50,187,214,29,112,58,71,7,250,174, +27,231,70,160,137,218,187,8,252,209,231,222,33,160,65,90, +39,193,92,78,92,88,61,101,41,92,144,189,249,224,252,15, +6,127,252,57,103,0,200,128,156,201,160,159,187,134,28,197, +104,6,183,124,165,174,160,87,59,26,213,101,247,189,49,96, +96,198,166,224,71,191,123,197,160,134,43,181,5,49,27,209, +39,223,189,99,64,193,148,206,192,145,157,250,146,218,140,120, +145,230,75,115,163,209,92,110,92,26,29,229,107,116,145,255, +219,64,186,37,47,185,204,185,5,40,139,226,62,43,206,180, +208,98,140,3,32,7,50,46,135,46,230,63,50,92,167,205, +148,215,80,162,132,14,225,13,28,219,137,43,171,229,12,5, +73,154,54,93,190,95,135,202,166,249,215,140,98,49,211,81, +187,22,29,252,251,71,136,11,168,151,42,134,55,116,44,47, +170,252,158,22,84,108,109,14,60,220,187,5,44,203,234,58, +123,198,145,144,42,136,215,104,34,247,54,129,126,234,90,122, +16,243,17,249,178,221,190,86,22,200,173,76,145,141,251,163, +200,205,77,71,239,122,112,242,199,155,51,14,132,92,192,188, +76,178,189,191,128,116,73,126,118,155,91,143,66,54,225,127, +60,56,251,195,201,27,47,198,60,64,122,36,179,122,205,34, +182,39,23,61,255,137,97,11,117,70,141,88,146,148,109,240, +221,63,70,28,72,185,4,57,153,225,43,125,133,173,210,113, +184,100,59,127,133,169,146,121,188,52,51,90,197,225,150,173, +244,17,246,66,195,177,154,200,188,93,162,158,174,212,23,212, +110,69,139,62,254,158,19,4,102,104,74,118,240,235,95,41, +42,240,86,143,88,150,212,101,244,141,55,99,92,0,189,208, +113,188,36,51,123,213,161,183,57,244,48,231,18,224,36,142, +171,164,29,147,10,143,229,70,165,217,208,190,76,182,253,183, +132,36,65,91,54,211,95,91,10,19,36,103,58,104,247,166, +129,87,123,26,81,37,247,56,97,98,228,130,230,109,19,237, +247,164,160,67,123,51,193,117,222,12,113,9,117,66,205,80, +150,196,101,213,157,119,66,200,0,156,193,33,159,177,39,24, +205,225,134,173,213,1,182,99,87,177,187,217,236,126,55,138, +205,204,87,229,250,100,186,111,143,41,134,49,20,32,41,210, +112,169,118,56,106,211,226,139,123,175,0,84,65,189,86,17, +184,163,75,253,67,197,211,182,202,198,249,17,236,226,246,171, +82,125,112,253,55,133,60,194,90,40,48,82,67,145,146,11, +156,215,65,178,167,31,181,110,129,203,186,59,206,148,208,32, +172,131,98,47,51,108,165,142,160,21,27,154,151,77,246,255, +19,192,38,236,143,38,119,63,25,237,227,228,137,87,107,26, +112,53,183,25,245,98,197,147,182,78,134,249,148,188,224,114, +239,18,240,36,175,187,228,60,7,10,174,244,22,134,76,196, +221,84,246,204,35,165,21,16,42,129,70,106,41,66,112,128, +231,120,65,230,230,162,227,127,57,104,241,198,141,81,3,150, +102,69,155,62,223,142,83,37,242,104,107,103,160,200,202,61, +73,232,22,190,204,183,229,52,133,58,162,86,46,72,222,116, +241,254,13,34,59,246,21,179,26,205,228,214,167,208,69,252, +79,7,235,190,56,246,18,195,20,202,136,24,153,160,59,251, +196,185,21,40,170,242,126,10,90,180,241,115,220,32,181,19, +81,54,199,31,114,30,3,13,214,122,1,226,34,234,231,170, +97,79,53,202,201,8,31,225,47,60,157,171,131,109,223,45, +99,105,80,212,229,245,149,180,98,66,227,176,200,234,61,11, +200,150,252,228,182,167,22,37,124,136,127,232,120,94,22,217, +189,111,128,217,152,62,216,254,93,34,158,166,85,23,222,207, +65,131,183,126,132,186,160,126,171,74,252,81,231,214,160,160, +75,251,35,201,213,206,70,241,153,125,234,92,26,28,245,105, +117,133,189,210,80,168,36,26,235,133,136,131,41,159,161,39, +57,221,161,167,57,213,32,167,51,116,36,175,186,244,62,6, +30,236,253,6,148,77,241,143,29,199,74,34,177,86,9,56, +146,83,29,114,27,83,7,211,62,75,206,114,176,226,75,123, +35,193,84,206,76,80,157,117,99,220,0,181,81,113,182,133, +55,115,92,33,173,144,80,40,36,18,106,133,130,34,45,151, +40,167,35,116,5,191,250,213,170,6,63,253,173,37,1,89, +146,151,93,246,222,3,128,7,120,143,7,102,111,58,120,247, +135,145,23,90,142,81,4,230,104,66,247,240,225,254,45,34, +121,214,149,241,50,204,166,244,7,150,111,213,137,55,107,220, +16,181,112,97,246,164,163,115,125,48,253,179,197,60,71,10, +42,180,22,3,28,198,89,16,182,65,119,247,153,113,42,68, +22,236,237,6,181,93,177,174,137,199,107,51,225,117,156,44, +241,75,93,67,143,114,54,130,79,252,91,71,194,170,40,223, +163,131,125,223,12,115,41,113,64,229,212,132,228,65,215,247, +211,208,170,12,159,233,167,173,149,1,50,35,87,52,235,219, +104,58,119,7,153,158,219,132,250,161,234,233,75,109,67,236, +66,246,225,243,253,56,116,50,207,151,226,6,171,189,140,176, +17,122,130,211,60,106,218,114,153,114,27,82,23,209,63,95, +140,123,160,240,74,78,113,136,101,72,77,68,222,108,113,207, +21,194,10,40,149,2,3,53,86,9,57,130,81,28,102,89, +90,23,193,63,126,156,59,129,100,74,111,96,216,70,221,89, +39,198,44,64,91,52,243,91,89,34,151,54,71,30,106,157, +2,19,53,119,25,121,163,197,28,71,72,10,52,84,43,29, +132,123,176,240,107,94,49,169,241,72,108,85,142,79,228,219, +118,218,74,25,1,35,50,100,39,190,172,183,35,84,5,253, +218,85,232,46,62,191,143,133,71,115,187,81,109,118,188,43, +195,101,218,109,105,77,4,222,232,49,207,144,146,8,172,209, +66,142,97,4,133,88,130,148,76,224,157,30,210,28,105,168, +84,26,12,245,72,101,197,156,70,80,137,53,74,200,16,156, +224,49,223,144,179,24,236,240,214,142,64,21,213,123,23,128, +47,248,221,47,70,61,88,249,37,173,153,192,58,45,166,56, +198,18,160,36,10,235,164,152,195,8,11,161,6,40,141,130, +50,45,182,56,231,2,224,5,158,235,133,137,147,43,158,181, +101,48,205,179,166,12,135,105,150,181,117,48,236,163,230,45, +19,105,183,164,37,19,121,183,133,53,83,88,35,133,20,66, +8,0,16,0,33,16,64,33,148,0,33,17,80,35,149,20, +99,24,64,49,148,33,49,81,113,183,149,53,114,72,99,164, +128,66,41,17,64,35,180,4,35,57,212,49,181,48,97,114, +228,163,246,45,50,121,247,133,177,19,88,166,213,22,198,76, +64,157,84,115,156,33,33,81,80,167,213,20,230,72,66,181, +208,97,188,5,35,59,244,53,183,24,229,96,196,135,244,71, +150,235,149,137,178,59,222,148,241,48,236,162,246,47,18,125, +245,173,53,1,120,130,215,124,98,222,34,145,87,91,26,19, +5,119,122,73,99,166,160,70,43,57,196,49,148,32,33,83, +112,163,215,60,98,90,98,145,210,11,24,151,65,55,247,29, +49,42,193,70,238,105,66,245,208,229,252,5,166,107,246,177, +243,88,104,52,150,11,149,71,83,187,19,77,246,254,3,194, +39,248,205,47,103,45,24,216,177,173,184,209,106,14,51,44, +165,10,224,21,158,202,149,201,178,191,158,148,116,96,238,38, +178,111,159,41,167,33,84,1,189,210,81,184,38,27,255,199, +129,147,59,158,148,117,112,236,39,166,45,150,57,181,32,97, +83,244,227,215,185,50,88,230,213,146,134,76,197,205,86,247, +216,97,172,5,2,43,180,20,35,24,196,113,148,164,97,83, +245,243,213,184,38,26,239,197,128,135,121,151,132,103,113,217, +117,239,28,16,56,161,99,120,65,231,246,160,226,107,123,97, +225,212,140,100,81,223,87,195,154,42,156,151,65,54,231,31, +48,62,131,79,254,123,67,192,130,172,205,131,167,127,181,168, +225,75,125,67,205,82,182,192,103,253,25,101,98,236,2,246, +101,179,253,189,36,48,75,211,162,139,255,239,0,209,17,191, +210,85,248,46,31,175,207,164,211,115,154,64,61,85,41,63, +160,125,154,92,253,108,53,143,153,134,90,165,224,64,207,117, +194,204,72,21,197,123,54,144,111,217,73,47,103,44,8,218, +176,185,250,216,122,28,50,25,247,67,209,147,159,222,214,208, +160,172,139,227,47,57,205,161,134,41,149,1,51,51,85,53, +255,153,97,42,101,6,172,204,146,181,124,160,254,170,82,127, +80,249,53,173,184,208,122,12,50,56,231,3,240,7,159,255, +199,128,131,57,159,128,55,121,252,53,167,24,196,112,132,166, +96,71,183,250,197,170,39,47,189,140,177,1,120,131,199,126, +99,202,96,152,71,73,27,38,87,62,75,207,98,178,227,95, +57,42,209,70,207,121,2,212,68,229,221,20,246,72,99,165, +144,64,40,5,2,42,164,22,34,12,134,120,132,182,96,102, +167,186,228,62,39,14,172,220,146,148,108,224,223,62,82,94, +65,169,22,56,172,179,98,76,3,172,198,50,161,118,40,106, +242,242,203,90,59,0,117,80,237,117,132,172,192,83,189,114, +81,242,135,155,183,78,132,217,144,190,200,246,253,50,212,38, +197,31,118,94,11,9,134,114,36,162,106,238,51,226,68,138, +45,204,153,4,122,169,99,104,65,198,230,224,195,255,123,64, +240,132,175,241,69,188,79,131,171,190,189,166,16,71,80,138, +5,76,203,44,90,251,1,233,147,236,238,55,163,92,140,124, +208,254,77,34,191,182,21,54,74,207,96,146,231,93,17,174, +195,102,235,123,104,112,214,135,209,23,222,206,81,129,182,106, +198,179,176,108,170,127,174,24,214,80,161,180,8,226,49,218, +192,185,29,168,186,250,222,26,16,52,97,123,116,177,255,153, +96,58,103,7,184,142,155,165,110,161,203,248,27,78,214,248, +33,238,161,194,105,25,69,99,190,32,119,51,217,245,239,20, +145,56,171,194,124,73,110,118,186,75,207,99,162,225,94,45, +104,216,86,221,120,55,134,13,212,91,21,226,11,122,183,131, +85,95,94,91,9,35,34,100,6,174,236,150,183,84,36,236, +138,118,125,58,93,167,207,180,211,82,138,0,28,193,41,30, +177,45,185,201,233,15,45,207,168,18,123,148,177,49,120,224, +247,190,0,118,97,251,116,185,126,153,106,155,99,15,49,14, +129,12,202,185,8,248,145,239,218,113,168,100,26,111,197,136, +6,121,157,37,99,121,80,245,245,181,180,32,98,99,242,224, +235,127,41,104,208,214,205,112,151,150,71,84,203,29,74,154, +48,61,178,89,255,70,145,153,187,138,220,221,100,246,175,19, +101,118,172,43,226,117,154,76,253,77,37,207,184,18,90,132, +241,16,236,224,214,175,80,85,244,239,23,161,62,168,254,186, +82,94,64,185,20,57,184,241,107,92,17,173,243,96,232,71, +174,107,230,177,210,72,40,21,2,11,180,86,3,152,134,89, +149,230,67,243,179,217,252,126,22,154,141,237,195,229,219,117, +234,76,26,61,229,41,84,17,189,243,65,248,7,143,255,230, +144,195,24,11,128,22,104,172,22,50,12,167,104,196,151,244, +102,134,171,180,29,178,26,207,196,210,165,248,193,238,111,35, +233,212,156,100,112,207,23,226,14,42,189,134,17,21,114,11, +83,38,195,126,106,90,114,145,243,27,88,182,213,55,214,12, +97,9,84,82,141,113,2,196,68,196,205,84,215,220,99,132, +129,16,11,144,22,73,188,86,19,152,167,73,213,199,215,243, +146,200,172,93,131,142,238,245,131,212,79,84,219,29,107,138, +112,28,38,89,222,87,193,186,46,158,191,197,36,199,59,50, +84,39,221,156,119,64,232,4,158,233,165,141,145,3,26,167, +69,20,207,217,2,158,229,101,149,157,243,2,200,133,204,195, +165,219,241,170,76,159,109,231,173,16,81,48,167,19,116,102, +143,58,182,22,7,92,206,93,64,190,100,55,191,157,165,98, +97,211,244,235,86,185,56,249,226,221,27,6,86,108,105,78, +52,216,235,13,9,139,162,62,175,142,180,85,50,142,135,100, +71,191,122,213,162,135,63,247,12,33,9,208,18,141,244,82, +198,192,128,141,217,131,142,239,229,129,213,91,22,210,13,121, +139,69,78,111,104,88,86,213,249,55,140,172,208,83,156,98, +17,211,19,155,150,95,212,250,5,170,171,238,189,3,64,7, +244,78,7,233,158,60,244,58,71,6,234,172,26,243,4,169, +153,200,186,61,174,152,214,88,32,180,2,67,53,210,73,57, +7,1,30,226,29,26,154,149,109,242,253,59,68,52,204,171, +36,29,155,139,143,239,231,161,209,89,62,86,31,89,175,71, +36,203,250,58,90,214,209,177,190,136,246,121,114,212,163,149, +29,242,26,75,132,210,32,168,195,106,43,99,100,128,206,232, +17,207,210,178,136,238,249,67,204,67,164,195,114,171,82,124, +96,255,54,145,126,203,74,58,49,103,17,216,163,141,157,195, +2,171,181,12,160,25,218,146,153,188,250,210,218,8,56,145, +99,27,113,39,149,28,227,8,72,145,132,107,177,193,121,31, +4,127,248,121,111,4,152,136,185,137,232,155,111,206,57,0, +112,0,231,112,192,230,236,3,231,119,176,232,235,111,41,73, +192,150,236,228,151,183,86,4,232,136,94,249,40,125,131,205, +222,119,192,232,12,31,233,175,44,149,11,147,39,95,189,107, +193,193,158,111,196,153,20,122,136,115,40,96,82,230,193,210, +175,88,213,228,231,183,177,116,40,110,178,250,207,10,51,37, +53,24,233,161,204,137,5,75,187,34,93,151,207,215,227,146, +233,188,29,162,26,238,212,146,132,108,193,207,126,115,202,65, +136,7,104,143,38,118,47,27,236,247,166,128,71,121,27,69, +103,254,40,115,99,209,208,175,92,149,236,227,231,185,81,104, +38,182,46,135,47,246,61,51,72,229,196,132,197,81,151,214, +71,208,139,29,207,202,50,185,246,25,114,18,195,21,218,138, +25,141,226,50,235,214,184,32,122,227,195,248,11,78,247,232, +97,207,53,194,72,8,21,64,43,52,20,43,153,196,123,53, +160,105,218,117,233,124,28,62,217,239,79,33,139,240,30,14, +220,220,117,228,172,6,51,61,181,41,241,65,253,87,133,250, +162,218,239,72,81,133,247,114,192,226,172,11,227,39,184,205, +171,39,45,157,136,179,41,252,145,231,90,97,160,196,10,37, +69,24,14,209,12,111,233,72,92,85,237,127,36,184,202,219, +41,42,241,70,141,89,130,150,108,228,159,54,86,14,73,140, +86,112,168,103,42,105,198,180,192,98,173,19,96,38,166,46, +166,63,182,28,167,72,196,213,212,230,196,131,181,95,144,186, +137,238,251,99,200,65,140,71,96,139,118,126,10,91,164,243, +114,200,98,188,3,67,55,242,77,59,47,133,12,194,57,24, +240,49,255,144,241,56,108,178,254,143,2,55,117,61,61,169, +233,200,93,77,110,126,58,91,199,195,178,171,222,189,96,112, +199,151,242,6,138,173,204,145,133,122,163,194,108,73,79,102, +250,106,91,99,131,240,14,14,253,204,53,197,56,6,18,44, +229,10,100,85,158,79,197,203,54,251,222,25,32,50,98,71, +178,170,207,175,99,101,145,220,235,4,153,153,171,138,253,205, +36,215,59,19,68,103,252,8,119,97,249,84,189,124,177,238, +137,67,43,51,100,37,158,168,181,11,208,23,221,254,87,130, +138,172,221,131,134,111,245,137,117,75,92,82,157,113,35,212, +4,229,89,84,246,205,51,167,20,4,104,136,86,120,40,119, +34,201,214,254,64,242,165,187,241,108,44,31,170,159,174,214, +55,208,108,109,15,44,222,186,17,110,194,250,40,122,243,195, +217,27,14,214,124,97,238,36,146,107,157,1,35,51,116,37, +191,184,245,42,68,23,252,239,7,161,31,184,190,155,198,94, +97,168,68,26,45,229,8,68,81,156,103,65,217,22,223,220, +115,132,160,0,75,177,130,73,157,71,67,187,50,93,182,223, +151,194,6,233,157,12,242,57,123,192,241,156,44,240,91,95, +66,155,48,63,146,93,253,110,21,139,155,174,222,183,192,100, +205,31,102,94,42,25,198,83,176,162,75,255,99,193,209,158, +78,212,217,53,238,136,82,57,48,113,115,213,177,183,24,228, +112,198,134,224,5,159,251,135,136,135,105,151,165,119,49,248, +225,239,61,1,104,130,246,108,34,255,182,145,118,74,74,48, +144,99,25,81,35,151,52,103,26,104,181,134,1,21,83,27, +19,7,87,126,75,75,34,178,102,15,59,174,149,6,66,45, +80,88,37,229,24,68,112,140,39,96,77,22,254,205,35,167, +53,20,40,169,194,120,9,102,114,234,67,234,35,234,229,138, +101,77,29,78,219,40,59,227,69,152,15,201,143,110,247,171, +81,77,118,254,11,67,39,242,108,43,111,164,152,194,24,9, +160,18,106,132,146,32,44,131,106,174,51,102,4,138,168,156, +155,128,62,233,238,60,19,74,135,224,6,175,253,132,180,65, +114,167,147,116,110,14,58,188,183,3,84,71,221,90,23,192, +47,124,157,47,195,109,90,125,97,237,20,148,104,161,199,56, +3,66,38,224,78,46,121,206,21,192,42,44,151,42,135,39, +118,45,59,232,245,142,4,85,89,63,71,13,90,186,17,111, +210,248,41,110,177,202,201,9,15,227,46,40,223,162,147,127, +222,24,49,32,97,82,228,225,214,173,112,81,246,199,147,179, +30,140,252,208,246,204,34,181,23,17,62,195,79,122,59,67, +69,210,174,73,199,231,242,225,250,109,42,125,134,157,212,114, +132,162,32,79,179,170,205,143,103,103,185,88,249,36,189,155, +193,46,111,175,40,212,19,149,118,67,218,34,153,215,75,18, +179,21,61,250,217,107,14,49,12,161,8,200,145,140,234,177, +203,216,27,12,246,120,99,198,160,128,75,185,3,73,151,230, +71,179,187,221,172,118,51,218,197,233,23,173,254,176,242,74, +74,49,128,97,24,69,97,158,36,117,27,93,231,207,48,147, +82,15,80,30,69,109,94,60,121,235,69,136,15,232,159,46, +214,63,81,108,103,174,40,214,51,145,116,107,94,48,185,243, +73,120,23,135,95,246,218,67,136,3,40,135,34,38,39,62, +172,191,162,84,15,92,222,93,97,174,36,22,43,157,132,115, +49,240,97,255,53,161,120,200,118,252,42,87,39,219,252,123, +70,144,136,169,137,201,139,47,239,173,0,81,17,183,83,85, +242,143,27,167,70,36,201,218,62,88,254,85,163,158,172,244, +19,214,70,193,153,30,218,156,121,160,244,10,70,117,216,109, +109,13,12,218,184,57,234,208,218,12,120,153,103,75,121,2, +213,84,231,220,0,180,65,115,183,145,117,122,76,51,172,165, +2,97,21,148,107,145,193,59,63,132,61,208,120,45,38,56, +206,147,160,46,171,239,172,17,67,18,162,5,30,235,141,8, +147,33,63,177,109,185,77,169,15,168,159,170,150,63,212,60, +101,42,108,150,190,197,38,231,63,48,124,163,207,188,83,66, +130,160,12,139,169,142,185,133,40,131,99,62,33,111,176,216, +235,12,25,137,163,42,237,135,164,71,51,187,213,45,118,57, +123,193,225,158,45,228,25,86,82,137,49,10,192,20,204,232, +20,159,216,183,204,164,213,19,150,70,69,217,30,95,204,123, +36,176,74,203,33,138,225,12,13,201,138,62,253,174,21,7, +90,174,81,70,198,232,0,223,241,163,220,141,100,83,255,83, +193,178,174,142,183,101,52,141,187,162,92,143,76,214,253,113, +228,164,134,35,53,21,57,187,193,109,95,45,107,232,80,222, +68,241,157,61,226,88,74,20,208,41,61,129,105,154,117,109, +60,28,187,137,237,203,101,203,125,74,92,80,189,117,33,252, +128,247,121,112,244,167,151,53,118,8,107,160,208,74,12,81, +8,39,96,76,6,252,204,55,229,60,4,58,168,247,42,64, +87,244,235,87,169,58,248,246,159,18,22,68,109,92,28,125, +233,109,12,29,200,187,44,188,155,195,14,107,173,0,80,1, +181,82,65,176,134,11,181,71,17,155,147,15,222,255,65,224, +135,190,231,6,161,29,152,186,153,238,218,115,136,96,24,71, +65,154,38,93,159,79,199,235,50,249,246,157,50,18,70,69, +216,14,93,205,111,102,185,90,217,32,191,179,69,60,79,139, +42,190,183,7,20,79,217,10,31,229,111,52,153,251,139,72, +159,101,103,189,24,241,32,237,147,228,110,39,171,252,156,54, +80,110,69,138,46,252,159,7,70,111,120,88,119,197,185,22, +24,172,241,66,204,65,132,199,112,131,214,110,64,219,52,251, +218,89,40,54,50,79,151,234,135,171,183,45,180,25,243,2, +201,149,206,194,177,153,248,186,94,158,88,181,228,33,215,49, +179,80,109,116,156,47,193,77,94,127,73,105,6,180,76,163, +173,156,145,32,42,227,102,168,75,234,51,234,196,154,37,108, +137,78,250,57,107,192,208,140,108,209,207,95,99,138,96,28, +7,73,158,118,85,186,15,143,239,230,177,211,88,42,20,22, +73,189,70,17,153,179,11,220,215,197,242,167,154,229,108,5, +143,250,182,154,198,92,65,172,70,50,169,247,40,96,83,246, +195,211,187,26,220,244,245,182,132,38,97,95,52,251,219,73, +42,55,38,13,158,250,149,170,130,127,253,40,117,3,221,214, +215,208,162,140,143,225,7,189,223,129,162,43,255,165,161,81, +89,54,215,31,83,14,67,44,66,122,32,243,114,201,114,190, +2,87,117,251,93,41,46,176,94,139,8,158,241,37,188,137, +227,43,121,197,165,214,33,176,65,123,55,129,125,218,92,121, +44,53,10,201,132,222,225,160,205,155,39,78,173,72,208,149, +253,242,212,170,4,31,249,175,13,133,75,178,179,95,156,122, +145,226,11,123,167,129,84,75,28,82,25,49,35,81,84,231, +221,16,182,64,103,245,152,101,104,77,6,254,236,51,231,20, +128,40,136,211,40,42,243,102,137,91,170,18,126,196,187,52, +60,170,219,238,90,115,128,225,24,77,224,158,46,212,31,85, +110,79,42,58,246,23,147,30,207,204,82,181,240,97,254,37, +163,121,220,52,245,58,69,38,238,174,50,119,22,137,189,202, +208,153,60,250,218,91,8,50,48,103,19,248,167,143,181,71, +16,139,145,14,202,189,72,240,149,191,210,84,232,44,30,187, +141,173,195,97,155,117,111,28,24,185,161,105,217,69,239,127, +32,248,194,223,121,34,212,6,197,93,86,222,73,33,135,48, +6,2,44,196,26,36,116,10,79,228,218,102,216,75,13,67, +42,34,118,38,139,254,254,18,210,4,233,153,76,250,61,43, +200,212,220,100,244,143,23,103,94,40,57,194,81,152,38,89, +223,71,195,187,58,220,182,213,54,198,14,96,29,22,91,157, +99,3,241,22,141,252,210,214,200,32,157,147,3,30,231,77, +16,159,209,39,222,173,97,65,213,214,199,208,131,156,207,192, +147,189,254,144,242,8,106,177,194,73,25,7,67,62,98,95, +50,155,215,79,82,187,17,109,242,252,43,70,53,216,233,45, +13,137,138,186,189,174,144,87,88,42,21,6,75,188,82,83, +144,163,25,221,226,151,187,150,28,228,120,70,150,232,165,143, +177,7,24,143,193,6,239,253,0,244,65,247,247,145,240,42, +78,183,232,229,143,53,71,24,10,145,4,107,185,64,121,21, +165,123,240,240,239,30,49,44,161,74,232,17,206,194,176,137, +250,187,74,220,81,165,246,32,226,99,250,97,235,117,136,108, +216,95,77,106,62,50,95,151,203,151,235,150,185,180,56,226, +82,234,0,218,161,169,217,201,46,127,175,9,196,83,180,226, +67,251,51,201,244,222,6,208,13,125,203,77,74,63,96,125, +22,157,253,227,196,137,21,75,154,50,29,182,91,215,194,131, +185,159,136,182,121,246,148,163,16,77,240,158,15,196,95,116, +250,79,11,43,166,52,6,10,172,212,18,132,100,64,207,116, +210,206,73,1,135,114,38,130,110,236,27,102,86,170,9,206, +243,160,232,203,111,107,105,64,212,196,229,213,149,246,66,194, +161,152,201,168,31,171,142,188,213,34,134,39,116,13,63,234, +221,10,22,117,125,61,45,169,200,216,29,108,250,126,27,74, +151,224,39,191,189,165,32,65,83,182,195,87,251,26,89,164, +247,50,192,102,236,11,102,119,186,73,239,103,160,201,218,63, +72,252,84,183,220,165,228,1,215,115,147,208,47,92,157,109, +227,237,24,85,96,175,54,52,46,139,238,254,51,194,68,200, +13,76,219,44,123,235,65,200,7,236,207,38,243,127,25,104, +179,230,13,19,43,151,36,103,59,120,245,167,149,21,114,10, +67,36,194,106,40,83,98,131,242,46,10,255,228,177,215,24, +34,16,70,65,152,6,89,157,103,67,249,18,221,244,247,150, +128,36,73,219,38,219,255,75,64,147,180,111,146,249,189,44, +176,91,219,2,155,181,111,144,217,185,46,152,223,201,34,191, +183,5,52,75,219,34,155,247,79,16,155,145,47,218,253,105, +100,149,158,195,4,203,185,10,216,149,237,242,245,186,68,62, +109,175,44,148,27,145,38,75,255,98,209,211,159,90,150,208, +37,252,137,103,107,121,64,245,212,165,244,1,246,99,211,241, +187,92,188,124,179,206,141,65,3,183,118,5,186,170,223,175, +66,117,209,253,127,4,184,136,251,169,104,217,71,207,123,34, +208,70,205,89,6,214,108,97,207,52,210,74,9,1,2,34, +36,6,42,172,150,50,4,38,104,206,54,240,110,15,43,174, +180,22,2,12,196,88,4,244,72,103,229,152,68,120,13,39, +106,236,18,246,68,163,189,156,176,48,106,194,242,168,106,251, +99,201,81,142,70,116,201,127,110,24,90,145,161,59,249,228, +189,23,0,46,224,94,46,88,222,85,225,190,44,182,59,215, +4,227,57,88,240,181,191,144,116,104,110,54,186,207,143,99, +39,177,92,169,44,152,219,137,42,187,231,13,17,11,147,38, +79,191,106,213,131,151,127,214,152,33,40,193,66,174,97,70, +165,216,192,188,77,162,191,190,148,54,64,110,100,154,110,221, +11,7,103,126,40,123,226,209,218,14,88,157,101,99,253,16, +245,112,229,182,164,38,35,127,180,185,243,72,104,21,134,75, +180,211,83,154,2,29,213,107,23,161,63,184,252,187,70,28, +73,169,6,56,141,163,34,109,151,172,231,35,241,85,189,126, +145,234,139,107,175,33,68,1,156,194,17,153,178,27,222,214, +209,176,174,138,247,109,48,221,179,135,28,199,72,2,181,84, +33,188,128,115,57,112,113,247,149,177,50,72,230,244,130,198, +109,81,205,119,230,136,66,57,17,97,51,244,37,183,57,245, +32,229,19,244,102,135,187,182,28,166,88,198,212,192,164,205, +147,167,94,165,232,192,223,125,98,220,2,149,85,115,158,1, +37,83,120,35,199,52,194,74,40,17,66,3,176,6,11,189, +198,17,145,50,11,214,118,193,250,46,26,255,197,161,151,57, +182,16,103,80,200,37,204,137,4,91,185,35,73,213,198,199, +241,147,220,238,84,147,156,239,192,209,157,126,210,218,9,40, +147,98,15,51,46,133,14,226,61,26,216,181,237,176,213,58, +6,22,108,237,14,52,93,187,15,141,207,226,179,251,220,56, +52,50,75,215,226,131,251,191,8,244,81,247,214,129,176,11, +218,183,201,244,223,22,210,12,105,137,68,90,45,97,72,68, +212,204,101,197,157,86,82,136,33,8,193,0,142,225,4,141, +217,130,158,237,228,149,151,82,6,192,12,76,217,12,127,233, +105,76,21,204,235,36,153,219,139,10,191,229,37,149,25,179, +2,77,213,206,71,225,155,124,254,30,19,12,231,104,64,215, +244,227,214,169,48,89,242,151,155,150,94,196,248,4,190,233, +231,173,17,65,50,166,7,54,111,159,40,183,35,85,21,255, +219,65,170,39,46,173,142,176,21,58,138,215,108,98,255,50, +209,118,207,26,50,20,39,89,220,119,197,184,6,26,173,229, +0,197,81,150,198,69,209,159,95,198,218,32,184,195,75,59, +35,69,20,206,201,0,159,241,39,156,141,225,3,253,215,133, +242,35,218,229,233,85,141,126,242,218,75,8,19,32,39,50, +108,167,174,164,23,51,30,133,109,210,253,121,100,180,142,131, +37,95,185,43,201,197,206,103,225,217,92,126,92,59,13,165, +74,224,145,222,202,16,153,176,59,218,212,249,52,188,170,211, +111,90,121,33,229,16,196,96,132,135,112,7,150,110,197,139, +54,127,158,25,165,98,96,195,246,234,66,251,49,233,240,220, +46,84,31,93,239,79,32,155,242,31,26,158,213,101,246,173, +51,97,116,132,175,240,85,190,78,151,233,183,173,180,17,114, +2,195,52,202,202,56,25,226,19,250,134,155,181,110,128,219, +184,58,218,214,217,48,190,130,87,125,122,93,35,143,180,86, +2,136,132,88,129,164,74,227,161,216,201,44,95,171,11,236, +215,166,194,103,249,89,109,102,188,10,211,37,251,249,105,108, +21,142,203,164,219,243,138,72,157,69,99,191,48,117,50,205, +183,230,4,131,57,158,144,53,120,232,119,174,8,214,113,177, +244,41,118,49,251,209,233,62,61,174,153,198,90,33,160,64, +74,37,192,72,12,85,72,47,100,28,14,217,140,127,225,232, +76,31,109,239,44,16,91,145,163,27,253,230,149,147,18,14, +196,92,68,252,76,55,237,189,4,48,9,243,34,201,215,238, +66,243,177,249,248,124,62,30,159,205,231,231,177,209,120,46, +22,62,205,175,102,53,155,217,175,78,181,201,241,143,28,215, +72,35,165,20,0,40,128,82,40,32,82,98,129,210,42,8, +215,96,163,247,60,32,122,226,211,250,10,90,181,225,113,221, +52,247,26,65,36,198,42,32,87,50,139,215,110,66,251,48, +249,242,221,58,22,22,77,253,78,21,201,187,46,156,159,193, +38,239,191,32,116,3,223,246,211,210,138,8,157,193,35,191, +181,37,48,73,243,166,137,215,107,18,241,53,189,184,241,106, +76,19,172,231,34,225,87,188,106,211,227,155,121,174,20,22, +72,173,68,16,141,241,2,204,197,196,199,245,211,212,234,4, +155,185,175,136,213,73,54,247,31,17,46,195,110,106,123,98, +209,210,143,88,151,196,103,245,153,117,106,76,18,188,229,35, +245,21,181,122,193,226,174,43,231,37,144,73,185,7,9,159, +226,23,187,158,157,228,114,231,146,224,44,15,171,174,188,151, +2,6,101,92,12,125,200,125,76,60,92,187,13,173,203,224, +155,127,206,24,16,48,33,115,112,225,247,188,32,114,99,211, +240,171,94,189,104,241,199,157,83,2,130,36,76,139,44,222, +187,1,108,195,238,106,115,227,209,216,46,92,159,77,231,239, +48,209,114,143,18,54,68,47,124,156,63,193,108,78,63,104, +253,6,149,93,243,142,9,133,67,50,163,87,60,106,219,98, +155,115,15,16,30,193,45,94,185,41,233,193,204,79,101,203, +124,90,94,81,169,55,40,236,146,246,76,34,189,150,17,52, +98,75,114,178,195,95,123,10,81,4,231,120,64,246,228,163, +247,61,48,120,227,199,184,3,74,167,224,68,143,125,198,156, +64,48,133,51,50,68,39,252,140,55,97,124,4,191,248,245, +174,4,23,121,191,5,37,91,248,51,207,148,210,0,168,129, +74,171,33,76,129,140,202,177,137,248,155,78,222,121,33,228, +0,198,97,144,197,121,23,132,111,240,217,127,78,24,24,177, +33,121,209,229,255,53,160,104,202,119,232,104,94,55,201,253, +78,20,217,185,47,136,221,200,54,253,190,21,38,74,238,112, +210,198,201,17,143,210,54,200,238,124,19,206,199,224,131,255, +255,}; diff --git a/MCUME_esp32/esp800/main/pia.c b/MCUME_esp32/esp800/main/pia.c new file mode 100644 index 0000000..5b6c288 --- /dev/null +++ b/MCUME_esp32/esp800/main/pia.c @@ -0,0 +1,71 @@ +#include + +#include "atari.h" +#include "cpu.h" +#include "pia.h" + +UBYTE PACTL; +UBYTE PBCTL; +UBYTE PORTA; +UBYTE PORTB; + + +static UBYTE PORTA_mask = 0xff; +static UBYTE PORTB_mask = 0xff; + +void PIA_Initialise(void) +{ + PORTA = 0xff; + PORTB = 0xff; +} + +UBYTE PIA_GetByte(UWORD addr) +{ + UBYTE byte=0; + + addr &= 0x03; + switch (addr) { + case _PACTL: + byte = PACTL; + break; + case _PBCTL: + byte = PBCTL; + break; + case _PORTA: + byte = Atari_PORT(0); + byte &= PORTA_mask; + break; + case _PORTB: + byte = Atari_PORT(1); + byte &= PORTB_mask; + break; + } + + return byte; +} + +int PIA_PutByte(UWORD addr, UBYTE byte) +{ + addr &= 0xff03; + + switch (addr) { + case _PACTL: + PACTL = byte; + break; + case _PBCTL: + PBCTL = byte; + break; + case _PORTA: + if (!(PACTL & 0x04)) + PORTA_mask = ~byte; + break; + case _PORTB: + // if ((byte == 0) && (machine == AtariXL || machine == AtariXE)) + // break; /* special hack for old Atari800 games like is Tapper, for example */ + if (!(PBCTL & 0x04)) + PORTB_mask = ~byte; + break; + } + + return FALSE; +} diff --git a/MCUME_esp32/esp800/main/pia.h b/MCUME_esp32/esp800/main/pia.h new file mode 100644 index 0000000..24080a5 --- /dev/null +++ b/MCUME_esp32/esp800/main/pia.h @@ -0,0 +1,22 @@ +#ifndef __PIA__ +#define __PIA__ + +#include "atari.h" + +#define _PORTA 0x00 +#define _PORTB 0x01 +#define _PACTL 0x02 +#define _PBCTL 0x03 + +extern UBYTE PACTL; +extern UBYTE PBCTL; +extern UBYTE PORTA; +extern UBYTE PORTB; + +extern int xe_bank; + +void PIA_Initialise(void); +UBYTE PIA_GetByte(UWORD addr); +int PIA_PutByte(UWORD addr, UBYTE byte); + +#endif diff --git a/MCUME_esp32/esp800/main/pokey.c b/MCUME_esp32/esp800/main/pokey.c new file mode 100644 index 0000000..228580c --- /dev/null +++ b/MCUME_esp32/esp800/main/pokey.c @@ -0,0 +1,699 @@ +/* + * pokey.c - POKEY sound chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include "cpu.h" +#include "pokey.h" +#include "gtia.h" +#include "sio.h" +#ifdef SOUND +#include "pokeysnd.h" +#endif +#include "antic.h" + +#ifdef VOICEBOX +#include "voicebox.h" +#include "votraxsnd.h" +#endif + +#ifdef POKEY_UPDATE +void pokey_update(void); +#endif + +UBYTE POKEY_KBCODE; +UBYTE POKEY_SERIN; +UBYTE POKEY_IRQST; +UBYTE POKEY_IRQEN; +UBYTE POKEY_SKSTAT; +UBYTE POKEY_SKCTL; +int POKEY_DELAYED_SERIN_IRQ; +int POKEY_DELAYED_SEROUT_IRQ; +int POKEY_DELAYED_XMTDONE_IRQ; + +/* structures to hold the 9 pokey control bytes */ +UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ +int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +UBYTE POKEY_POT_input[8] = {228, 228, 228, 228, 228, 228, 228, 228}; +static int pot_scanline; + +#include "noise.h" +//UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +//UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +static ULONG random_scanline_counter; + +ULONG POKEY_GetRandomCounter(void) +{ + return random_scanline_counter; +} + +void POKEY_SetRandomCounter(ULONG value) +{ + random_scanline_counter = value; +} + +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects) +{ + UBYTE byte = 0xff; + +#ifdef STEREO_SOUND + if (addr & 0x0010 && POKEYSND_stereo_enabled) + return 0; +#endif + addr &= 0x0f; + if (addr < 8) { + byte = POKEY_POT_input[addr]; + if (byte <= pot_scanline) + return byte; + return pot_scanline; + } + switch (addr) { + case POKEY_OFFSET_ALLPOT: + { + int i; + for (i = 0; i < 8; i++) + if (POKEY_POT_input[i] <= pot_scanline) + byte &= ~(1 << i); /* reset bit if pot value known */ + } + break; + case POKEY_OFFSET_KBCODE: + byte = POKEY_KBCODE; + break; + case POKEY_OFFSET_RANDOM: + if ((POKEY_SKCTL & 0x03) != 0) { + int i = random_scanline_counter + ANTIC_XPOS; + if (POKEY_AUDCTL[0] & POKEY_POLY9) + byte = POKEY_poly9_lookup[i % POKEY_POLY9_SIZE]; + else { + const UBYTE *ptr; + i %= POKEY_POLY17_SIZE; + ptr = POKEY_poly17_lookup + (i >> 3); + i &= 7; + byte = (UBYTE) ((ptr[0] >> i) + (ptr[1] << (8 - i))); + } + } + break; + case POKEY_OFFSET_SERIN: + byte = POKEY_SERIN; +#ifdef DEBUG3 + printf("SERIO: SERIN read, bytevalue %02x\n", POKEY_SERIN); +#endif +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(0,byte); +#endif + break; + case POKEY_OFFSET_IRQST: + byte = POKEY_IRQST; + break; + case POKEY_OFFSET_SKSTAT: +#if SKIP + byte = POKEY_SKSTAT + (CASSETTE_IOLineStatus() << 4); +#else + byte = POKEY_SKSTAT; +#endif +#ifdef VOICEBOX + if (VOICEBOX_enabled) { + byte = POKEY_SKSTAT + (VOTRAXSND_busy << 4); + } +#endif + break; + } + + return byte; +} + +static void Update_Counter(int chan_mask); + +static int POKEY_siocheck(void) +{ + return (((POKEY_AUDF[POKEY_CHAN3] == 0x28 || POKEY_AUDF[POKEY_CHAN3] == 0x10 + || POKEY_AUDF[POKEY_CHAN3] == 0x08 || POKEY_AUDF[POKEY_CHAN3] == 0x0a) + && POKEY_AUDF[POKEY_CHAN4] == 0x00) /* intelligent peripherals speeds */ + || (POKEY_SKCTL & 0x78) == 0x28) /* cassette save mode */ + && (POKEY_AUDCTL[0] & 0x28) == 0x28; +} + +#ifndef SOUND_GAIN /* sound gain can be pre-defined in the configure/Makefile */ +#define SOUND_GAIN 4 +#endif + +#ifndef SOUND +#define POKEYSND_Update(addr, val, chip, gain) +#else +//#define POKEYSND_Update(addr, val, chip, gain) if (chip == 0) emu_sndPlaySound((chip*4)+addr, gain*16, val*16) +#endif + +void POKEY_PutByte(UWORD addr, UBYTE byte) +{ +#ifdef STEREO_SOUND + addr &= POKEYSND_stereo_enabled ? 0x1f : 0x0f; +#else + addr &= 0x0f; +#endif + switch (addr) { + case POKEY_OFFSET_AUDC1: + POKEY_AUDC[POKEY_CHAN1] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2: + POKEY_AUDC[POKEY_CHAN2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3: + POKEY_AUDC[POKEY_CHAN3] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4: + POKEY_AUDC[POKEY_CHAN4] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL: + POKEY_AUDCTL[0] = byte; + + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[0] = POKEY_DIV_15; + else + POKEY_Base_mult[0] = POKEY_DIV_64; + + Update_Counter((1 << POKEY_CHAN1) | (1 << POKEY_CHAN2) | (1 << POKEY_CHAN3) | (1 << POKEY_CHAN4)); + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1: + POKEY_AUDF[POKEY_CHAN1] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH1_CH2) ? ((1 << POKEY_CHAN2) | (1 << POKEY_CHAN1)) : (1 << POKEY_CHAN1)); + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2: + POKEY_AUDF[POKEY_CHAN2] = byte; + Update_Counter(1 << POKEY_CHAN2); + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3: + POKEY_AUDF[POKEY_CHAN3] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH3_CH4) ? ((1 << POKEY_CHAN4) | (1 << POKEY_CHAN3)) : (1 << POKEY_CHAN3)); + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4: + POKEY_AUDF[POKEY_CHAN4] = byte; + Update_Counter(1 << POKEY_CHAN4); + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_IRQEN: + POKEY_IRQEN = byte; +#ifdef DEBUG1 + printf("WR: IRQEN = %x, PC = %x\n", POKEY_IRQEN, PC); +#endif + POKEY_IRQST |= ~byte & 0xf7; /* Reset disabled IRQs except XMTDONE */ +#if SKIP + if ((~POKEY_IRQST & POKEY_IRQEN) == 0 && PBI_IRQ == 0 && PIA_IRQ == 0) +#else + if ((~POKEY_IRQST & POKEY_IRQEN) == 0) +#endif + { + CPU_IRQ = 0; + } + else { + CPU_GenerateIRQ(); + } + break; + case POKEY_OFFSET_SKRES: + POKEY_SKSTAT |= 0xe0; + break; + case POKEY_OFFSET_POTGO: + if (!(POKEY_SKCTL & 4)) + pot_scanline = 0; /* slow pot mode */ + break; + case POKEY_OFFSET_SEROUT: +#ifdef VOICEBOX + VOICEBOX_SEROUTPutByte(byte); +#endif + if ((POKEY_SKCTL & 0x70) == 0x20 && POKEY_siocheck()) + SIO_PutByte(byte); + /* check if cassette 2-tone mode has been enabled */ + if ((POKEY_SKCTL & 0x08) == 0x00) { + /* intelligent device */ + POKEY_DELAYED_SEROUT_IRQ = SIO_SEROUT_INTERVAL; + POKEY_IRQST |= 0x08; + POKEY_DELAYED_XMTDONE_IRQ = SIO_XMTDONE_INTERVAL; + } + else { + /* cassette */ + /* some savers patch the cassette baud rate, so we evaluate it here */ + /* scanlines per second*10 bit*audiofrequency/(1.79 MHz/2) */ + POKEY_DELAYED_SEROUT_IRQ = 312*50*10*(POKEY_AUDF[POKEY_CHAN3] + POKEY_AUDF[POKEY_CHAN4]*0x100)/895000; + /* safety check */ + if (POKEY_DELAYED_SEROUT_IRQ >= 3) { + POKEY_IRQST |= 0x08; + POKEY_DELAYED_XMTDONE_IRQ = 2*POKEY_DELAYED_SEROUT_IRQ - 2; + } + else { + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + } + }; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(1, byte); +#endif + break; + case POKEY_OFFSET_STIMER: + POKEY_DivNIRQ[POKEY_CHAN1] = POKEY_DivNMax[POKEY_CHAN1]; + POKEY_DivNIRQ[POKEY_CHAN2] = POKEY_DivNMax[POKEY_CHAN2]; + POKEY_DivNIRQ[POKEY_CHAN4] = POKEY_DivNMax[POKEY_CHAN4]; + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 0, SOUND_GAIN); +#ifdef DEBUG1 + printf("WR: STIMER = %x\n", byte); +#endif + break; + case POKEY_OFFSET_SKCTL: +#ifdef VOICEBOX + VOICEBOX_SKCTLPutByte(byte); +#endif + POKEY_SKCTL = byte; + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 0, SOUND_GAIN); + if (byte & 4) + pot_scanline = 228; /* fast pot mode - return results immediately */ + if ((byte & 0x03) == 0) { + /* POKEY reset. */ + /* Stop serial IO. */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; +#if SKIP + CASSETTE_ResetPOKEY(); +#endif + /* TODO other registers should also be reset. */ + } + break; +#ifdef STEREO_SOUND + case POKEY_OFFSET_AUDC1 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL + POKEY_OFFSET_POKEY2: + POKEY_AUDCTL[1] = byte; + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[1] = POKEY_DIV_15; + else + POKEY_Base_mult[1] = POKEY_DIV_64; + + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_STIMER + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_SKCTL + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 1, SOUND_GAIN); + break; +#endif + } +} + +int POKEY_Initialise(void) +{ + int i; + ULONG reg; + + /* Initialise Serial Port Interrupts */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + + POKEY_KBCODE = 0xff; + POKEY_SERIN = 0x00; /* or 0xff ? */ + POKEY_IRQST = 0xff; + POKEY_IRQEN = 0x00; + POKEY_SKSTAT = 0xef; + POKEY_SKCTL = 0x00; + + for (i = 0; i < (POKEY_MAXPOKEYS * 4); i++) { + POKEY_AUDC[i] = 0; + POKEY_AUDF[i] = 0; + } + + for (i = 0; i < POKEY_MAXPOKEYS; i++) { + POKEY_AUDCTL[i] = 0; + POKEY_Base_mult[i] = POKEY_DIV_64; + } + + for (i = 0; i < 4; i++) + POKEY_DivNIRQ[i] = POKEY_DivNMax[i] = 0; + + pot_scanline = 0; + +#if SKIP + /* initialise poly9_lookup */ + reg = 0x1ff; + for (i = 0; i < POKEY_POLY9_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 1) << 8) + (reg >> 1); + POKEY_poly9_lookup[i] = (UBYTE) reg; + } + /* initialise poly17_lookup */ + reg = 0x1ffff; + for (i = 0; i < POKEY_POLY17_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 0xff) << 9) + (reg >> 8); + POKEY_poly17_lookup[i] = (UBYTE) (reg >> 1); + } +#endif + +#ifndef BASIC +#if SKIP + if (INPUT_Playingback()) { + random_scanline_counter = INPUT_PlaybackInt(); + } + else +#endif +#endif + { + random_scanline_counter = +#ifdef HAVE_WINDOWS_H + GetTickCount() % POKEY_POLY17_SIZE; +#elif defined(HAVE_TIME) + time(NULL) % POKEY_POLY17_SIZE; +#else + 0; +#endif + } +#ifndef BASIC +#if SKIP + if (INPUT_Recording()) { + INPUT_RecordInt(random_scanline_counter); + } +#endif +#endif + + return TRUE; +} + +void POKEY_Frame(void) +{ + random_scanline_counter %= (POKEY_AUDCTL[0] & POKEY_POLY9) ? POKEY_POLY9_SIZE : POKEY_POLY17_SIZE; +} + +/*************************************************************************** + ** Generate POKEY Timer IRQs if required ** + ** called on a per-scanline basis, not very precise, but good enough ** + ** for most applications ** + ***************************************************************************/ + +void POKEY_Scanline(void) +{ +#ifdef POKEY_UPDATE + pokey_update(); +#endif + +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly(); +#endif + +#ifndef BASIC + INPUT_Scanline(); /* Handle Amiga and ST mice. */ + /* It's not a part of POKEY emulation, */ + /* but it looks to be the best place to put it. */ +#endif + + /* on nonpatched i/o-operation, enable the cassette timing */ +#if SKIP + if (!ESC_enable_sio_patch) { + if (CASSETTE_AddScanLine()) + POKEY_DELAYED_SERIN_IRQ = 1; + } +#endif + if ((POKEY_SKCTL & 0x03) == 0) + /* Don't process timers when POKEY is in reset mode. */ + return; + + if (pot_scanline < 228) + pot_scanline++; + + random_scanline_counter += ANTIC_LINE_C; + + if (POKEY_DELAYED_SERIN_IRQ > 0) { + if (--POKEY_DELAYED_SERIN_IRQ == 0) { + /* Load a byte to SERIN - even when the IRQ is disabled. */ + POKEY_SERIN = SIO_GetByte(); + if (POKEY_IRQEN & 0x20) { + if (POKEY_IRQST & 0x20) { + POKEY_IRQST &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + else { + POKEY_SKSTAT &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SERIN Interrupt missed, bytevalue %02x\n", POKEY_SERIN); + } +#endif + } + } + + if (POKEY_DELAYED_SEROUT_IRQ > 0) { + if (--POKEY_DELAYED_SEROUT_IRQ == 0) { + if (POKEY_IRQEN & 0x10) { +#ifdef DEBUG2 + printf("SERIO: SEROUT Interrupt triggered\n"); +#endif + POKEY_IRQST &= 0xef; + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SEROUT Interrupt missed\n"); + } +#endif + } + } + + if (POKEY_DELAYED_XMTDONE_IRQ > 0) + if (--POKEY_DELAYED_XMTDONE_IRQ == 0) { + POKEY_IRQST &= 0xf7; + if (POKEY_IRQEN & 0x08) { +#ifdef DEBUG2 + printf("SERIO: XMTDONE Interrupt triggered\n"); +#endif + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else + printf("SERIO: XMTDONE Interrupt missed\n"); +#endif + } + + if ((POKEY_DivNIRQ[POKEY_CHAN1] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN1] += POKEY_DivNMax[POKEY_CHAN1]; + if (POKEY_IRQEN & 0x01) { + POKEY_IRQST &= 0xfe; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN2] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN2] += POKEY_DivNMax[POKEY_CHAN2]; + if (POKEY_IRQEN & 0x02) { + POKEY_IRQST &= 0xfd; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN4] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN4] += POKEY_DivNMax[POKEY_CHAN4]; + if (POKEY_IRQEN & 0x04) { + POKEY_IRQST &= 0xfb; + CPU_GenerateIRQ(); + } + } +} + +/*****************************************************************************/ +/* Module: Update_Counter() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has been added */ +/* here again as I need the precise frequency for the pokey timers */ +/* again. The pokey emulation is therefore somewhat sub-optimal */ +/* since the actual pokey emulation should grab the frequency values */ +/* directly from here instead of calculating them again. */ +/* */ +/* Author: Ron Fries,Thomas Richter */ +/* Date: March 27, 1998 */ +/* */ +/* Inputs: chan_mask: Channel mask, one bit per channel. */ +/* The channels that need to be updated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static void Update_Counter(int chan_mask) +{ + +/************************************************************/ +/* As defined in the manual, the exact Div_n_cnt values are */ +/* different depending on the frequency and resolution: */ +/* 64 kHz or 15 kHz - AUDF + 1 */ +/* 1 MHz, 8-bit - AUDF + 4 */ +/* 1 MHz, 16-bit - AUDF[CHAN1]+256*AUDF[CHAN2] + 7 */ +/************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN1] = POKEY_AUDF[POKEY_CHAN1] + 4; + else + POKEY_DivNMax[POKEY_CHAN1] = (POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN1] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN1] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN2] = POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 7; + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN2] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN2] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[0] & POKEY_CH3_179) + POKEY_DivNMax[POKEY_CHAN4] = POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 7; + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN4] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN4] = ANTIC_LINE_C; + } +} + +#ifndef BASIC + +void POKEY_StateSave(void) +{ + int shift_key = 0; + int keypressed = 0; + + StateSav_SaveUBYTE(&POKEY_KBCODE, 1); + StateSav_SaveUBYTE(&POKEY_IRQST, 1); + StateSav_SaveUBYTE(&POKEY_IRQEN, 1); + StateSav_SaveUBYTE(&POKEY_SKCTL, 1); + + StateSav_SaveINT(&shift_key, 1); + StateSav_SaveINT(&keypressed, 1); + StateSav_SaveINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_SaveUBYTE(&POKEY_AUDF[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDC[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDCTL[0], 1); + + StateSav_SaveINT(&POKEY_DivNIRQ[0], 4); + StateSav_SaveINT(&POKEY_DivNMax[0], 4); + StateSav_SaveINT(&POKEY_Base_mult[0], 1); +} + +void POKEY_StateRead(void) +{ + int i; + int shift_key; + int keypressed; + + StateSav_ReadUBYTE(&POKEY_KBCODE, 1); + StateSav_ReadUBYTE(&POKEY_IRQST, 1); + StateSav_ReadUBYTE(&POKEY_IRQEN, 1); + StateSav_ReadUBYTE(&POKEY_SKCTL, 1); + + StateSav_ReadINT(&shift_key, 1); + StateSav_ReadINT(&keypressed, 1); + StateSav_ReadINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_ReadUBYTE(&POKEY_AUDF[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDC[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDCTL[0], 1); + for (i = 0; i < 4; i++) { + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDF1 + i * 2), POKEY_AUDF[i]); + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDC1 + i * 2), POKEY_AUDC[i]); + } + POKEY_PutByte(POKEY_OFFSET_AUDCTL, POKEY_AUDCTL[0]); + + StateSav_ReadINT(&POKEY_DivNIRQ[0], 4); + StateSav_ReadINT(&POKEY_DivNMax[0], 4); + StateSav_ReadINT(&POKEY_Base_mult[0], 1); +} + +#endif diff --git a/MCUME_esp32/esp800/main/pokey.h b/MCUME_esp32/esp800/main/pokey.h new file mode 100644 index 0000000..b9a0c29 --- /dev/null +++ b/MCUME_esp32/esp800/main/pokey.h @@ -0,0 +1,120 @@ +#ifndef POKEY_H_ +#define POKEY_H_ + + +#include "atari.h" + + +#define POKEY_OFFSET_AUDF1 0x00 +#define POKEY_OFFSET_AUDC1 0x01 +#define POKEY_OFFSET_AUDF2 0x02 +#define POKEY_OFFSET_AUDC2 0x03 +#define POKEY_OFFSET_AUDF3 0x04 +#define POKEY_OFFSET_AUDC3 0x05 +#define POKEY_OFFSET_AUDF4 0x06 +#define POKEY_OFFSET_AUDC4 0x07 +#define POKEY_OFFSET_AUDCTL 0x08 +#define POKEY_OFFSET_STIMER 0x09 +#define POKEY_OFFSET_SKRES 0x0a +#define POKEY_OFFSET_POTGO 0x0b +#define POKEY_OFFSET_SEROUT 0x0d +#define POKEY_OFFSET_IRQEN 0x0e +#define POKEY_OFFSET_SKCTL 0x0f + +#define POKEY_OFFSET_POT0 0x00 +#define POKEY_OFFSET_POT1 0x01 +#define POKEY_OFFSET_POT2 0x02 +#define POKEY_OFFSET_POT3 0x03 +#define POKEY_OFFSET_POT4 0x04 +#define POKEY_OFFSET_POT5 0x05 +#define POKEY_OFFSET_POT6 0x06 +#define POKEY_OFFSET_POT7 0x07 +#define POKEY_OFFSET_ALLPOT 0x08 +#define POKEY_OFFSET_KBCODE 0x09 +#define POKEY_OFFSET_RANDOM 0x0a +#define POKEY_OFFSET_SERIN 0x0d +#define POKEY_OFFSET_IRQST 0x0e +#define POKEY_OFFSET_SKSTAT 0x0f + +#define POKEY_OFFSET_POKEY2 0x10 /* offset to second pokey chip (STEREO expansion) */ + +#ifndef ASAP + +extern UBYTE POKEY_KBCODE; +extern UBYTE POKEY_IRQST; +extern UBYTE POKEY_IRQEN; +extern UBYTE POKEY_SKSTAT; +extern UBYTE POKEY_SKCTL; +extern int POKEY_DELAYED_SERIN_IRQ; +extern int POKEY_DELAYED_SEROUT_IRQ; +extern int POKEY_DELAYED_XMTDONE_IRQ; + +extern UBYTE POKEY_POT_input[8]; + +ULONG POKEY_GetRandomCounter(void); +void POKEY_SetRandomCounter(ULONG value); +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects); +void POKEY_PutByte(UWORD addr, UBYTE byte); +int POKEY_Initialise(void); +void POKEY_Frame(void); +void POKEY_Scanline(void); +void POKEY_StateSave(void); +void POKEY_StateRead(void); + +#endif + +/* CONSTANT DEFINITIONS */ + +/* definitions for AUDCx (D201, D203, D205, D207) */ +#define POKEY_NOTPOLY5 0x80 /* selects POLY5 or direct CLOCK */ +#define POKEY_POLY4 0x40 /* selects POLY4 or POLY17 */ +#define POKEY_PURETONE 0x20 /* selects POLY4/17 or PURE tone */ +#define POKEY_VOL_ONLY 0x10 /* selects VOLUME OUTPUT ONLY */ +#define POKEY_VOLUME_MASK 0x0f /* volume mask */ + +/* definitions for AUDCTL (D208) */ +#define POKEY_POLY9 0x80 /* selects POLY9 or POLY17 */ +#define POKEY_CH1_179 0x40 /* selects 1.78979 MHz for Ch 1 */ +#define POKEY_CH3_179 0x20 /* selects 1.78979 MHz for Ch 3 */ +#define POKEY_CH1_CH2 0x10 /* clocks channel 1 w/channel 2 */ +#define POKEY_CH3_CH4 0x08 /* clocks channel 3 w/channel 4 */ +#define POKEY_CH1_FILTER 0x04 /* selects channel 1 high pass filter */ +#define POKEY_CH2_FILTER 0x02 /* selects channel 2 high pass filter */ +#define POKEY_CLOCK_15 0x01 /* selects 15.6999kHz or 63.9210kHz */ + +/* for accuracy, the 64kHz and 15kHz clocks are exact divisions of + the 1.79MHz clock */ +#define POKEY_DIV_64 28 /* divisor for 1.79MHz clock to 64 kHz */ +#define POKEY_DIV_15 114 /* divisor for 1.79MHz clock to 15 kHz */ + +/* the size (in entries) of the 4 polynomial tables */ +#define POKEY_POLY4_SIZE 0x000f +#define POKEY_POLY5_SIZE 0x001f +#define POKEY_POLY9_SIZE 511 //0x01ff +#define POKEY_POLY17_SIZE 16385//0x0001ffff + +#define POKEY_MAXPOKEYS 2 /* max number of emulated chips */ + +/* channel/chip definitions */ +#define POKEY_CHAN1 0 +#define POKEY_CHAN2 1 +#define POKEY_CHAN3 2 +#define POKEY_CHAN4 3 +#define POKEY_CHIP1 0 +#define POKEY_CHIP2 4 +#define POKEY_CHIP3 8 +#define POKEY_CHIP4 12 +#define POKEY_SAMPLE 127 + +/* structures to hold the 9 pokey control bytes */ +extern UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +extern UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +extern UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ + +extern int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +extern int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +extern const UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +extern const UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +#endif /* POKEY_H_ */ diff --git a/MCUME_esp32/esp800/main/pokeysnd.c b/MCUME_esp32/esp800/main/pokeysnd.c new file mode 100644 index 0000000..0c0a7f5 --- /dev/null +++ b/MCUME_esp32/esp800/main/pokeysnd.c @@ -0,0 +1,1428 @@ +/* + * pokeysnd.c - POKEY sound chip emulation, v2.4 + * + * Copyright (C) 1996-1998 Ron Fries + * Copyright (C) 1998-2014 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifdef skip +#include "config.h" +#include +#include + +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "atari.h" +#ifndef __PLUS +#include "sndsave.h" +#else +#include "sound_win.h" +#endif +#endif +#include "mzpokeysnd.h" +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" +#include "util.h" +#endif + +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" + +#ifdef WORDS_UNALIGNED_OK +# define READ_U32(x) (*(ULONG *) (x)) +# define WRITE_U32(x, d) (*(ULONG *) (x) = (d)) +#else +# ifdef WORDS_BIGENDIAN +# define READ_U32(x) (((*(unsigned char *)(x)) << 24) | ((*((unsigned char *)(x) + 1)) << 16) | \ + ((*((unsigned char *)(x) + 2)) << 8) | ((*((unsigned char *)(x) + 3)))) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *) (x)) = (((i) >> 24) & 255); \ + (*((unsigned char *) (x) + 1)) = (((i) >> 16) & 255); \ + (*((unsigned char *) (x) + 2)) = (((i) >> 8) & 255); \ + (*((unsigned char *) (x) + 3)) = ((i) & 255); \ + } +# else +# define READ_U32(x) ((*(unsigned char *) (x)) | ((*((unsigned char *) (x) + 1)) << 8) | \ + ((*((unsigned char *) (x) + 2)) << 16) | ((*((unsigned char *) (x) + 3)) << 24)) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *)(x)) = ((i) & 255); \ + (*((unsigned char *)(x) + 1)) = (((i) >> 8) & 255); \ + (*((unsigned char *)(x) + 2)) = (((i) >> 16) & 255); \ + (*((unsigned char *)(x) + 3)) = (((i) >> 24) & 255); \ + } +# endif +#endif + +/* GLOBAL VARIABLE DEFINITIONS */ + +/* number of pokey chips currently emulated */ +static UBYTE Num_pokeys; + +static UBYTE pokeysnd_AUDV[4 * POKEY_MAXPOKEYS]; /* Channel volume - derived */ + +static UBYTE Outbit[4 * POKEY_MAXPOKEYS]; /* current state of the output (high or low) */ + +static UBYTE Outvol[4 * POKEY_MAXPOKEYS]; /* last output volume for each channel */ + +/* Initialize the bit patterns for the polynomials. */ + +/* The 4bit and 5bit patterns are the identical ones used in the pokey chip. */ +/* Though the patterns could be packed with 8 bits per byte, using only a */ +/* single bit per byte keeps the math simple, which is important for */ +/* efficient processing. */ + +static const UBYTE bit4[POKEY_POLY4_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0}; /* new table invented by Perry */ +#else +{1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0}; /* original POKEY 2.3 table */ +#endif + +static const UBYTE bit5[POKEY_POLY5_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0}; +#else +{0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}; +#endif + +static ULONG P4 = 0, /* Global position pointer for the 4-bit POLY array */ + P5 = 0, /* Global position pointer for the 5-bit POLY array */ + P9 = 0, /* Global position pointer for the 9-bit POLY array */ + P17 = 0; /* Global position pointer for the 17-bit POLY array */ + +static ULONG Div_n_cnt[4 * POKEY_MAXPOKEYS], /* Divide by n counter. one for each channel */ + Div_n_max[4 * POKEY_MAXPOKEYS]; /* Divide by n maximum, one for each channel */ + +static ULONG Samp_n_max, /* Sample max. For accuracy, it is *256 */ + Samp_n_cnt[2]; /* Sample cnt. */ + +#ifdef INTERPOLATE_SOUND +#ifdef CLIP_SOUND +static SWORD last_val = 0; /* last output value */ +#else +static UWORD last_val = 0; +#endif +#ifdef STEREO_SOUND +#ifdef CLIP_SOUND +static SWORD last_val2 = 0; /* last output value */ +#else +static UWORD last_val2 = 0; +#endif +#endif +#endif + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +int POKEYSND_sampbuf_ptr = 0; /* pointer to sampbuf */ +int POKEYSND_sampbuf_rptr = 0; /* pointer to read from sampbuf */ +int POKEYSND_sampbuf_last = 0; /* last absolute time */ +int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +int POKEYSND_sampbuf_lastval = 0; /* last volume */ +int POKEYSND_sampout; /* last out volume */ +int POKEYSND_samp_freq; +int POKEYSND_samp_consol_val = 0; /* actual value of console sound */ +#ifdef STEREO_SOUND +static int sampbuf_val2[POKEYSND_SAMPBUF_MAX]; /* volume values */ +static int sampbuf_cnt2[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +static int sampbuf_ptr2 = 0; /* pointer to sampbuf */ +static int sampbuf_rptr2 = 0; /* pointer to read from sampbuf */ +static int sampbuf_last2 = 0; /* last absolute time */ +static int sampbuf_lastval2 = 0; /* last volume */ +static int sampout2; /* last out volume */ +#endif +#endif /* VOL_ONLY_SOUND */ + +static ULONG snd_freq17 = POKEYSND_FREQ_17_EXACT; +int POKEYSND_playback_freq = 44100; +UBYTE POKEYSND_num_pokeys = 1; +int POKEYSND_snd_flags = 0; +static int mz_quality = 0; /* default quality for mzpokeysnd */ +#ifdef __PLUS +int mz_clear_regs = 0; +#endif + +int POKEYSND_enable_new_pokey = TRUE; +int POKEYSND_bienias_fix = TRUE; /* when TRUE, high frequencies get emulated: better sound but slower */ +#if defined(__PLUS) && !defined(_WX_) +#define BIENIAS_FIX (g_Sound.nBieniasFix) +#else +#define BIENIAS_FIX POKEYSND_bienias_fix +#endif +#ifndef ASAP +int POKEYSND_stereo_enabled = FALSE; +#endif + +int POKEYSND_volume = 0x100; + +/* multiple sound engine interface */ +static void pokeysnd_process_8(void *sndbuffer, int sndn); +static void pokeysnd_process_16(void *sndbuffer, int sndn); +static void null_pokey_process(void *sndbuffer, int sndn) {} +void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn) = null_pokey_process; + +static void Update_pokey_sound_rf(UWORD, UBYTE, UBYTE, UBYTE); +static void null_pokey_sound(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) {} +void (*POKEYSND_Update_ptr) (UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) + = null_pokey_sound; + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data); +static void null_serio_sound(int out, UBYTE data) {} +void (*POKEYSND_UpdateSerio)(int out, UBYTE data) = null_serio_sound; +int POKEYSND_serio_sound_enabled = 1; +#endif + +#ifdef CONSOLE_SOUND +static void Update_consol_sound_rf(int set); +static void null_consol_sound(int set) {} +void (*POKEYSND_UpdateConsol_ptr)(int set) = null_consol_sound; +int POKEYSND_console_sound_enabled = 1; +#endif + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void); +static void null_vol_only_sound(void) {} +void (*POKEYSND_UpdateVolOnly)(void) = null_vol_only_sound; +#endif + +#ifdef SYNCHRONIZED_SOUND +UBYTE *POKEYSND_process_buffer = NULL; +unsigned int POKEYSND_process_buffer_length; +unsigned int POKEYSND_process_buffer_fill; +static unsigned int prev_update_tick; + +static void Generate_sync_rf(unsigned int num_ticks); +static void null_generate_sync(unsigned int num_ticks) {} +void (*POKEYSND_GenerateSync)(unsigned int num_ticks) = null_generate_sync; + +static double ticks_per_sample; +static double samp_pos; +static int speaker; +static int const CONSOLE_VOL = 32; +#endif /* SYNCHRONIZED_SOUND */ + +/*****************************************************************************/ +/* In my routines, I treat the sample output as another divide by N counter */ +/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */ +/* which has 8 binary digits to the right of the decimal point. I use a two */ +/* byte array to give me a minimum of 40 bits, and then use pointer math to */ +/* reference either the 24.8 whole/fraction combination or the 32-bit whole */ +/* only number. This is mainly used to keep the math simple for */ +/* optimization. See below: */ +/* */ +/* Representation on little-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx */ +/* fraction whole whole whole whole unused unused unused */ +/* */ +/* Samp_n_cnt[0] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+1) gives me the 32-bit whole */ +/* number only. */ +/* */ +/* Representation on big-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx.xxxxxxxx */ +/* unused unused unused whole whole whole whole fraction */ +/* */ +/* Samp_n_cnt[1] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+3) gives me the 32-bit whole */ +/* number only. */ +/*****************************************************************************/ + + +/*****************************************************************************/ +/* Module: pokeysnd_init_rf() */ +/* Purpose: to handle the power-up initialization functions */ +/* these functions should only be executed on a cold-restart */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: freq17 - the value for the '1.79MHz' Pokey audio clock */ +/* playback_freq - the playback frequency in samples per second */ +/* num_pokeys - specifies the number of pokey chips to be emulated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags); + +#ifdef VOL_ONLY_SOUND +/* Initialise variables related to volume-only sound. */ +static void init_vol_only(void) +{ + POKEYSND_sampbuf_rptr = POKEYSND_sampbuf_ptr; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_lastval = 0; + POKEYSND_samp_consol_val = 0; +#ifdef STEREO_SOUND + sampbuf_rptr2 = sampbuf_ptr2; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_lastval2 = 0; +#endif /* STEREO_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ + +int POKEYSND_DoInit(void) +{ +#if SKIP + SndSave_CloseSoundFile(); +#endif + +#ifdef VOL_ONLY_SOUND + init_vol_only(); +#endif /* VOL_ONLY_SOUND */ + +#if SKIP + if (POKEYSND_enable_new_pokey) + return MZPOKEYSND_Init(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags, mz_quality +#ifdef __PLUS + , mz_clear_regs +#endif + ); + else +#endif + return pokeysnd_init_rf(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags); +} + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif +) +{ + snd_freq17 = freq17; + POKEYSND_playback_freq = playback_freq; + POKEYSND_num_pokeys = num_pokeys; + POKEYSND_snd_flags = flags; +#ifdef __PLUS + mz_clear_regs = clear_regs; +#endif +#ifdef SYNCHRONIZED_SOUND + { + /* A single call to Atari800_Frame may emulate a bit more CPU ticks than the exact number of + ticks per frame (Atari800_tv_mode*114). So we add a few ticks to buffer size just to be safe. */ + unsigned int const surplus_ticks = 10; + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + unsigned int max_ticks_per_frame = ticks_per_frame + surplus_ticks; + double ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + POKEYSND_process_buffer_length = POKEYSND_num_pokeys * (unsigned int)ceil((double)max_ticks_per_frame / ticks_per_sample) * ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2:1); + free(POKEYSND_process_buffer); + POKEYSND_process_buffer = (UBYTE *)Util_malloc(POKEYSND_process_buffer_length); + POKEYSND_process_buffer_fill = 0; + prev_update_tick = ANTIC_CPU_CLOCK; + } +#endif /* SYNCHRONIZED_SOUND */ + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Init(playback_freq, num_pokeys, (flags & POKEYSND_BIT16)); +#endif + return POKEYSND_DoInit(); +} + +void POKEYSND_SetMzQuality(int quality) /* specially for win32, perhaps not needed? */ +{ + mz_quality = quality; +} + +void POKEYSND_Process(void *sndbuffer, int sndn) +{ + POKEYSND_Process_ptr(sndbuffer, sndn); +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(sndbuffer,sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) +#if SKIP + SndSave_WriteToSoundFile((const unsigned char *)sndbuffer, sndn); +#endif +#endif +} + +#ifdef SYNCHRONIZED_SOUND +static void Update_synchronized_sound(void) +{ + POKEYSND_GenerateSync(ANTIC_CPU_CLOCK - prev_update_tick); + prev_update_tick = ANTIC_CPU_CLOCK; +} + +int POKEYSND_UpdateProcessBuffer(void) +{ + int sndn; + Update_synchronized_sound(); + sndn = POKEYSND_process_buffer_fill / ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2 : 1); + POKEYSND_process_buffer_fill = 0; + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(POKEYSND_process_buffer, sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) + SndSave_WriteToSoundFile((const unsigned char *)POKEYSND_process_buffer, sndn); +#endif + return sndn; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +static void init_syncsound(void) +{ + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + samp_pos = 0.0; + POKEYSND_GenerateSync = Generate_sync_rf; + speaker = 0; +} +#endif /* SYNCHRONIZED_SOUND */ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags) +{ + UBYTE chan; + + POKEYSND_Update_ptr = Update_pokey_sound_rf; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio = Update_serio_sound_rf; +#endif +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol_ptr = Update_consol_sound_rf; +#endif +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly = Update_vol_only_sound_rf; +#endif + + POKEYSND_Process_ptr = (flags & POKEYSND_BIT16) ? pokeysnd_process_16 : pokeysnd_process_8; + +#ifdef VOL_ONLY_SOUND + POKEYSND_samp_freq = playback_freq; +#endif + + /* start all of the polynomial counters at zero */ + P4 = 0; + P5 = 0; + P9 = 0; + P17 = 0; + + /* calculate the sample 'divide by N' value based on the playback freq. */ + Samp_n_max = ((ULONG) freq17 << 8) / playback_freq; + + Samp_n_cnt[0] = 0; /* initialize all bits of the sample */ + Samp_n_cnt[1] = 0; /* 'divide by N' counter */ + + for (chan = 0; chan < (POKEY_MAXPOKEYS * 4); chan++) { + Outvol[chan] = 0; + Outbit[chan] = 0; + Div_n_cnt[chan] = 0; + Div_n_max[chan] = 0x7fffffffL; + pokeysnd_AUDV[chan] = 0; +#ifdef VOL_ONLY_SOUND + POKEYSND_sampbuf_AUDV[chan] = 0; +#endif + } + + /* set the number of pokey chips currently emulated */ + Num_pokeys = num_pokeys; + +#ifdef SYNCHRONIZED_SOUND + init_syncsound(); +#endif + return 0; /* OK */ +} + + +/*****************************************************************************/ +/* Module: Update_pokey_sound_rf() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has not been */ +/* optimized. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: addr - the address of the parameter to be changed */ +/* val - the new value to be placed in the specified address */ +/* gain - specified as an 8-bit fixed point number - use 1 for no */ +/* amplification (output is multiplied by gain) */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) +{ +#ifdef SYNCHRONIZED_SOUND + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_Update_ptr(addr, val, chip, gain); +} + +static void Update_pokey_sound_rf(UWORD addr, UBYTE val, UBYTE chip, + UBYTE gain) +{ + ULONG new_val = 0; + UBYTE chan; + UBYTE chan_mask; + UBYTE chip_offs; + + /* calculate the chip_offs for the channel arrays */ + chip_offs = chip << 2; + + /* determine which address was changed */ + switch (addr & 0x0f) { + case POKEY_OFFSET_AUDF1: + /* POKEY_AUDF[POKEY_CHAN1 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN1; + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) /* if ch 1&2 tied together */ + chan_mask |= 1 << POKEY_CHAN2; /* then also change on ch2 */ + break; + case POKEY_OFFSET_AUDC1: + /* POKEY_AUDC[POKEY_CHAN1 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN1 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN1; + break; + case POKEY_OFFSET_AUDF2: + /* POKEY_AUDF[POKEY_CHAN2 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDC2: + /* POKEY_AUDC[POKEY_CHAN2 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN2 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDF3: + /* POKEY_AUDF[POKEY_CHAN3 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN3; + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) /* if ch 3&4 tied together */ + chan_mask |= 1 << POKEY_CHAN4; /* then also change on ch4 */ + break; + case POKEY_OFFSET_AUDC3: + /* POKEY_AUDC[POKEY_CHAN3 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN3 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN3; + break; + case POKEY_OFFSET_AUDF4: + /* POKEY_AUDF[POKEY_CHAN4 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDC4: + /* POKEY_AUDC[POKEY_CHAN4 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN4 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDCTL: + /* POKEY_AUDCTL[chip] = val; */ + chan_mask = 15; /* all channels */ + break; + default: + chan_mask = 0; + break; + } + + /************************************************************/ + /* As defined in the manual, the exact Div_n_cnt values are */ + /* different depending on the frequency and resolution: */ + /* 64 kHz or 15 kHz - AUDF + 1 */ + /* 1 MHz, 8-bit - AUDF + 4 */ + /* 1 MHz, 16-bit - POKEY_AUDF[POKEY_CHAN1]+256*POKEY_AUDF[POKEY_CHAN2] + 7 */ + /************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN1 + chip_offs]) { + Div_n_max[POKEY_CHAN1 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN1 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN1 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN2 + chip_offs]) { + Div_n_max[POKEY_CHAN2 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN2 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN2 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN3)) { + /* process channel 3 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN3 + chip_offs]) { + Div_n_max[POKEY_CHAN3 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN3 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN3 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN4 + chip_offs]) { + Div_n_max[POKEY_CHAN4 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN4 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN4 + chip_offs] = new_val; + } + } + } + + /* if channel is volume only, set current output */ + for (chan = POKEY_CHAN1; chan <= POKEY_CHAN4; chan++) { + if (chan_mask & (1 << chan)) { + +#ifdef VOL_ONLY_SOUND + +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + if ((POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY)) { + +#ifdef STEREO_SOUND + +#ifdef __PLUS + if (POKEYSND_stereo_enabled && chip & 0x01) +#else + if (chip & 0x01) +#endif + { + sampbuf_lastval2 += pokeysnd_AUDV[chan + chip_offs] + - POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + sampbuf_val2[sampbuf_ptr2] = sampbuf_lastval2; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + sampbuf_cnt2[sampbuf_ptr2] = + (ANTIC_CPU_CLOCK - sampbuf_last2) * 128 * POKEYSND_samp_freq / 178979; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_ptr2++; + if (sampbuf_ptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_ptr2 = 0; + if (sampbuf_ptr2 == sampbuf_rptr2) { + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + } + } + else +#endif /* STEREO_SOUND */ + { + POKEYSND_sampbuf_lastval += pokeysnd_AUDV[chan + chip_offs] + -POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + } + } + +#endif /* VOL_ONLY_SOUND */ + + /* I've disabled any frequencies that exceed the sampling + frequency. There isn't much point in processing frequencies + that the hardware can't reproduce. I've also disabled + processing if the volume is zero. */ + + /* if the channel is volume only */ + /* or the channel is off (volume == 0) */ + /* or the channel freq is greater than the playback freq */ + if ( (POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY) || + ((POKEY_AUDC[chan + chip_offs] & POKEY_VOLUME_MASK) == 0) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* indicate the channel is 'on' */ + Outvol[chan + chip_offs] = 1; + + /* can only ignore channel if filtering off */ + if ((chan == POKEY_CHAN3 && !(POKEY_AUDCTL[chip] & POKEY_CH1_FILTER)) || + (chan == POKEY_CHAN4 && !(POKEY_AUDCTL[chip] & POKEY_CH2_FILTER)) || + (chan == POKEY_CHAN1) || + (chan == POKEY_CHAN2) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* and set channel freq to max to reduce processing */ + Div_n_max[chan + chip_offs] = 0x7fffffffL; + Div_n_cnt[chan + chip_offs] = 0x7fffffffL; + } + } + } + } + + /* _enable(); */ /* RSF - removed for portability 31-MAR-97 */ +} + + +/*****************************************************************************/ +/* Module: pokeysnd_process() */ +/* Purpose: To fill the output buffer with the sound output based on the */ +/* pokey chip parameters. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: *buffer - pointer to the buffer where the audio output will */ +/* be placed */ +/* sndn - for mono, size of the playback buffer in samples */ +/* for stereo, size of the playback buffer in left samples */ +/* plus right samples. */ +/* num_pokeys - number of currently active pokeys to process */ +/* */ +/* Outputs: the buffer will be filled with n bytes of audio - no return val */ +/* Also the buffer will be written to disk if Sound recording is ON */ +/* */ +/*****************************************************************************/ + +static void pokeysnd_process_8(void *sndbuffer, int sndn) +{ + register UBYTE *buffer = (UBYTE *) sndbuffer; + register int n = sndn; + + register ULONG *div_n_ptr; + register UBYTE *samp_cnt_w_ptr; + register ULONG event_min; + register UBYTE next_event; +#ifdef CLIP_SOUND + register SWORD cur_val; /* then we have to count as 16-bit signed */ +#ifdef STEREO_SOUND + register SWORD cur_val2; +#endif +#else /* CLIP_SOUND */ + register UBYTE cur_val; /* otherwise we'll simplify as 8-bit unsigned */ +#ifdef STEREO_SOUND + register UBYTE cur_val2; +#endif +#endif /* CLIP_SOUND */ + register UBYTE *out_ptr; + register UBYTE audc; + register UBYTE toggle; + register UBYTE count; + register UBYTE *vol_ptr; + + /* set a pointer to the whole portion of the samp_n_cnt */ +#ifdef WORDS_BIGENDIAN + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 3); +#else + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 1); +#endif + + /* set a pointer for optimization */ + out_ptr = Outvol; + vol_ptr = pokeysnd_AUDV; + + /* The current output is pre-determined and then adjusted based on each */ + /* output change for increased performance (less over-all math). */ + /* add the output values of all 4 channels */ + cur_val = POKEYSND_SAMP_MIN; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + cur_val2 = POKEYSND_SAMP_MIN; +#endif /* STEREO_SOUND */ + + count = Num_pokeys; + do { + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + count--; + if (count) { + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + } + else + break; + } +#endif /* STEREO_SOUND */ + count--; + } while (count); + +#ifdef SYNCHRONIZED_SOUND + cur_val += speaker; +#endif + + /* loop until the buffer is filled */ + while (n) { + /* Normally the routine would simply decrement the 'div by N' */ + /* counters and react when they reach zero. Since we normally */ + /* won't be processing except once every 80 or so counts, */ + /* I've optimized by finding the smallest count and then */ + /* 'accelerated' time by adjusting all pointers by that amount. */ + + /* find next smallest event (either sample or chan 1-4) */ + next_event = POKEY_SAMPLE; + event_min = READ_U32(samp_cnt_w_ptr); + + div_n_ptr = Div_n_cnt; + + count = 0; + do { + /* Though I could have used a loop here, this is faster */ + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN1 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN2 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN3 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN4 + (count << 2); + } + div_n_ptr++; + + count++; + } while (count < Num_pokeys); + + /* if the next event is a channel change */ + if (next_event != POKEY_SAMPLE) { + /* shift the polynomial counters */ + + count = Num_pokeys; + do { + /* decrement all counters by the smallest count found */ + /* again, no loop for efficiency */ + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + + count--; + } while (count); + + + WRITE_U32(samp_cnt_w_ptr, READ_U32(samp_cnt_w_ptr) - event_min); + + /* since the polynomials require a mod (%) function which is + division, I don't adjust the polynomials on the SAMPLE events, + only the CHAN events. I have to keep track of the change, + though. */ + + P4 = (P4 + event_min) % POKEY_POLY4_SIZE; + P5 = (P5 + event_min) % POKEY_POLY5_SIZE; + P9 = (P9 + event_min) % POKEY_POLY9_SIZE; + P17 = (P17 + event_min) % POKEY_POLY17_SIZE; + + /* adjust channel counter */ + Div_n_cnt[next_event] += Div_n_max[next_event]; + + /* get the current AUDC into a register (for optimization) */ + audc = POKEY_AUDC[next_event]; + + /* set a pointer to the current output (for opt...) */ + out_ptr = &Outvol[next_event]; + + /* assume no changes to the output */ + toggle = FALSE; + + /* From here, a good understanding of the hardware is required */ + /* to understand what is happening. I won't be able to provide */ + /* much description to explain it here. */ + + /* if VOLUME only then nothing to process */ + if (!(audc & POKEY_VOL_ONLY)) { + /* if the output is pure or the output is poly5 and the poly5 bit */ + /* is set */ + if ((audc & POKEY_NOTPOLY5) || bit5[P5]) { + /* if the PURETONE bit is set */ + if (audc & POKEY_PURETONE) { + /* then simply toggle the output */ + toggle = TRUE; + } + /* otherwise if POLY4 is selected */ + else if (audc & POKEY_POLY4) { + /* then compare to the poly4 bit */ + toggle = (bit4[P4] == !(*out_ptr)); + } + else { + /* if 9-bit poly is selected on this chip */ + if (POKEY_AUDCTL[next_event >> 2] & POKEY_POLY9) { + /* compare to the poly9 bit */ + toggle = ((POKEY_poly9_lookup[P9] & 1) == !(*out_ptr)); + } + else { + /* otherwise compare to the poly17 bit */ + toggle = (((POKEY_poly17_lookup[P17 >> 3] >> (P17 & 7)) & 1) == !(*out_ptr)); + } + } + } + } + + /* check channel 1 filter (clocked by channel 3) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH1_FILTER) { + /* if we're processing channel 3 */ + if ((next_event & 0x03) == POKEY_CHAN3) { + /* check output of channel 1 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* check channel 2 filter (clocked by channel 4) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH2_FILTER) { + /* if we're processing channel 4 */ + if ((next_event & 0x03) == POKEY_CHAN4) { + /* check output of channel 2 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* if the current output bit has changed */ + if (toggle) { + if (*out_ptr) { + /* remove this channel from the signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event]; + + /* and turn the output off */ + *out_ptr = 0; + } + else { + /* turn the output on */ + *out_ptr = 1; + + /* and add it to the output signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 += pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val += pokeysnd_AUDV[next_event]; + } + } + } + else { /* otherwise we're processing a sample */ + /* adjust the sample counter - note we're using the 24.8 integer + which includes an 8 bit fraction for accuracy */ + + int iout; +#ifdef STEREO_SOUND + int iout2; +#endif +#ifdef INTERPOLATE_SOUND + if (cur_val != last_val) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout = (cur_val * (SLONG)(*Samp_n_cnt) + + last_val * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout = (cur_val * (*Samp_n_cnt) + + last_val * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout = cur_val; + last_val = cur_val; + } + else + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (cur_val2 != last_val2) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout2 = (cur_val2 * (SLONG)(*Samp_n_cnt) + + last_val2 * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout2 = (cur_val2 * (*Samp_n_cnt) + + last_val2 * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout2 = cur_val2; + last_val2 = cur_val2; + } + else + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#else /* INTERPOLATE_SOUND */ + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#endif /* INTERPOLATE_SOUND */ + +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) { + int l; + if (POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] > 0) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] -= 1280; + while ((l = POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr]) <= 0) { + POKEYSND_sampout = POKEYSND_sampbuf_val[POKEYSND_sampbuf_rptr]; + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] += l; + else + break; + } + } + iout += POKEYSND_sampout; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + if (sampbuf_rptr2 != sampbuf_ptr2) { + int l; + if (sampbuf_cnt2[sampbuf_rptr2] > 0) + sampbuf_cnt2[sampbuf_rptr2] -= 1280; + while ((l = sampbuf_cnt2[sampbuf_rptr2]) <= 0) { + sampout2 = sampbuf_val2[sampbuf_rptr2]; + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + if (sampbuf_rptr2 != sampbuf_ptr2) + sampbuf_cnt2[sampbuf_rptr2] += l; + else + break; + } + } + iout2 += sampout2; + } +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ + +#ifdef CLIP_SOUND + if (iout > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if (iout < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) iout; + } +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) { + if (iout2 > POKEYSND_SAMP_MAX) + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; + else if (iout2 < POKEYSND_SAMP_MIN) + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; + else + *buffer++ = (UBYTE) iout2; + } +#else /* __PLUS */ + if (Num_pokeys > 1) { + if ((POKEYSND_stereo_enabled ? iout2 : iout) > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if ((POKEYSND_stereo_enabled ? iout2 : iout) < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); + } + } +#endif /* __PLUS */ +#endif /* STEREO_SOUND */ +#else /* CLIP_SOUND */ + *buffer++ = (UBYTE) iout; /* clipping not selected, use value */ +#ifdef STEREO_SOUND + if (Num_pokeys > 1) +#ifdef ASAP + *buffer++ = (UBYTE) iout2; +#else + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); +#endif +#endif /* STEREO_SOUND */ +#endif /* CLIP_SOUND */ + +#ifdef WORDS_BIGENDIAN + *(Samp_n_cnt + 1) += Samp_n_max; +#else + *Samp_n_cnt += Samp_n_max; +#endif + /* and indicate one less byte in the buffer */ + n--; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (Num_pokeys > 1) + n--; +#endif + } + } +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr == POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (sampbuf_rptr2 == sampbuf_ptr2) + sampbuf_last2 = ANTIC_CPU_CLOCK; +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ +} + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data) +{ +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) { +#endif + int bits, pv, future; + if (!POKEYSND_serio_sound_enabled) return; + + pv = 0; + future = 0; + bits = (data << 1) | 0x200; + while (bits) + { + POKEYSND_sampbuf_lastval -= pv; + pv = (bits & 0x01) * pokeysnd_AUDV[3]; /* FIXME!!! - set volume from AUDV */ + POKEYSND_sampbuf_lastval += pv; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK + future-POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK + future; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX ) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr ) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + /* 1789790/19200 = 93 */ + future += 93; /* ~ 19200 bit/s - FIXME!!! set speed form AUDF [2] ??? */ + bits >>= 1; + } + POKEYSND_sampbuf_lastval -= pv; +#ifdef __PLUS + } +#endif +#endif /* VOL_ONLY_SOUND */ +} +#endif /* SERIO_SOUND */ + +void POKEYSND_SetVolume(int vol) +{ + if (vol > 100) + vol = 100; + if (vol < 0) + vol = 0; + + POKEYSND_volume = vol * 0x100 / 100; +} + +static void pokeysnd_process_16(void *sndbuffer, int sndn) +{ + short *buffer = (UWORD *) sndbuffer; + int i; + + pokeysnd_process_8(buffer, sndn); + + for (i = sndn - 1; i >= 0; i--) { +#ifndef POKEYSND_SIGNED_SAMPLES + int smp = ((int) (((UBYTE *) buffer)[i]) - 0x80) * POKEYSND_volume; +#else + int smp = ((int) ((SBYTE *) buffer)[i]) * POKEYSND_volume; +#endif + if (smp > 32767) + smp = 32767; + else if (smp < -32768) + smp = -32768; + + buffer[i] = smp; + } + +} + +#ifdef SYNCHRONIZED_SOUND +static void Generate_sync_rf(unsigned int num_ticks) +{ + double new_samp_pos; + unsigned int ticks; + UBYTE *buffer = POKEYSND_process_buffer + POKEYSND_process_buffer_fill; + UBYTE *buffer_end = POKEYSND_process_buffer + POKEYSND_process_buffer_length; + + for (;;) { + double int_part; + new_samp_pos = samp_pos + ticks_per_sample; + new_samp_pos = modf(new_samp_pos, &int_part); + ticks = (unsigned int)int_part; + if (ticks > num_ticks) { + samp_pos -= num_ticks; + break; + } + if (buffer >= buffer_end) + break; + + samp_pos = new_samp_pos; + num_ticks -= ticks; + + if (POKEYSND_snd_flags & POKEYSND_BIT16) { + pokeysnd_process_16(buffer, POKEYSND_num_pokeys); + buffer += 2 * POKEYSND_num_pokeys; + } + else { + pokeysnd_process_8(buffer, POKEYSND_num_pokeys); + buffer += POKEYSND_num_pokeys; + } + + } + + POKEYSND_process_buffer_fill = buffer - POKEYSND_process_buffer; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef CONSOLE_SOUND +void POKEYSND_UpdateConsol(int set) +{ + if (!POKEYSND_console_sound_enabled) + return; +#ifdef SYNCHRONIZED_SOUND + if (set) + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_UpdateConsol_ptr(set); +} + +static void Update_consol_sound_rf(int set) +{ +#ifdef SYNCHRONIZED_SOUND + if (set) + speaker = CONSOLE_VOL * GTIA_speaker; +#elif defined(VOL_ONLY_SOUND) + static int prev_atari_speaker = 0; + static unsigned int prev_cpu_clock = 0; + int d; +#ifdef __PLUS + if (!g_Sound.nDigitized) + return; +#endif + + if (!set && POKEYSND_samp_consol_val == 0) + return; + POKEYSND_sampbuf_lastval -= POKEYSND_samp_consol_val; + if (prev_atari_speaker != GTIA_speaker) { + POKEYSND_samp_consol_val = GTIA_speaker * 8 * 4; /* gain */ + prev_cpu_clock = ANTIC_CPU_CLOCK; + } + else if (!set) { + d = ANTIC_CPU_CLOCK - prev_cpu_clock; + if (d < 114) { + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + return; + } + while (d >= 114 /* CPUL */) { + POKEYSND_samp_consol_val = POKEYSND_samp_consol_val * 99 / 100; + d -= 114; + } + prev_cpu_clock = ANTIC_CPU_CLOCK - d; + } + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + prev_atari_speaker = GTIA_speaker; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } +#endif /* !SYNCHRONIZED_SOUND && VOL_ONLY_SOUND */ +} +#endif /* CONSOLE_SOUND */ + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void) +{ +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(0); /* mmm */ +#endif /* CONSOLE_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ diff --git a/MCUME_esp32/esp800/main/pokeysnd.h b/MCUME_esp32/esp800/main/pokeysnd.h new file mode 100644 index 0000000..6b96bfa --- /dev/null +++ b/MCUME_esp32/esp800/main/pokeysnd.h @@ -0,0 +1,143 @@ +/*****************************************************************************/ +/* */ +/* Module: POKEY Chip Simulator Includes, V2.3 */ +/* Purpose: To emulate the sound generation hardware of the Atari POKEY chip. */ +/* Author: Ron Fries */ +/* */ +/* Revision History: */ +/* */ +/* 09/22/96 - Ron Fries - Initial Release */ +/* 04/06/97 - Brad Oliver - Some cross-platform modifications. Added */ +/* big/little endian #defines, removed , */ +/* conditional defines for TRUE/FALSE */ +/* 01/19/98 - Ron Fries - Changed signed/unsigned sample support to a */ +/* compile-time option. Defaults to unsigned - */ +/* define SIGNED_SAMPLES to create signed. */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* PokeySound is Copyright(c) 1996-1998 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ + +#ifndef POKEYSND_H_ +#define POKEYSND_H_ + +#include "atari.h" +#include "pokey.h" + +/* CONSTANT DEFINITIONS */ + +/* As an alternative to using the exact frequencies, selecting a playback + frequency that is an exact division of the main clock provides a higher + quality output due to less aliasing. For best results, a value of + 1787520 MHz is used for the main clock. With this value, both the + 64 kHz and 15 kHz clocks are evenly divisible. Selecting a playback + frequency that is also a division of the clock provides the best + results. The best options are FREQ_64 divided by either 2, 3, or 4. + The best selection is based on a trade off between performance and + sound quality. + + Of course, using a main clock frequency that is not exact will affect + the pitch of the output. With these numbers, the pitch will be low + by 0.127%. (More than likely, an actual unit will vary by this much!) */ + +#define POKEYSND_FREQ_17_EXACT 1789790 /* exact 1.79 MHz clock freq */ +#define POKEYSND_FREQ_17_APPROX 1787520 /* approximate 1.79 MHz clock freq */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef POKEYSND_SIGNED_SAMPLES /* if signed output selected */ +#define POKEYSND_SAMP_MAX 127 /* then set signed 8-bit clipping ranges */ +#define POKEYSND_SAMP_MIN -128 +#define POKEYSND_SAMP_MID 0 +#else +#define POKEYSND_SAMP_MAX 255 /* else set unsigned 8-bit clip ranges */ +#define POKEYSND_SAMP_MIN 0 +#define POKEYSND_SAMP_MID 128 +#endif + +/* init flags */ + +extern SLONG POKEYSND_playback_freq; +extern UBYTE POKEYSND_num_pokeys; +extern int POKEYSND_snd_flags; +extern int POKEYSND_volume; + +extern int POKEYSND_enable_new_pokey; +extern int POKEYSND_stereo_enabled; +extern int POKEYSND_serio_sound_enabled; +extern int POKEYSND_console_sound_enabled; +extern int POKEYSND_bienias_fix; + +extern void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn); +extern void (*POKEYSND_Update_ptr)(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain); +extern void (*POKEYSND_UpdateSerio)(int out, UBYTE data); +extern void (*POKEYSND_UpdateConsol_ptr)(int set); +extern void (*POKEYSND_UpdateVolOnly)(void); + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif + ); +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE /*chip*/, UBYTE gain); +void POKEYSND_UpdateConsol(int set); + +/* Fill sndbuffer with sndn samples of audio. Number of bytes written to + sndbuffer is sndn with 8-bit sound, and 2*sndn with 16-bit sound. sndn + must be a multiple of POKEYSND_num_pokeys. */ +void POKEYSND_Process(void *sndbuffer, int sndn); +int POKEYSND_DoInit(void); +void POKEYSND_SetMzQuality(int quality); +void POKEYSND_SetVolume(int vol); + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +#define POKEYSND_SAMPBUF_MAX 2000 +extern int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +extern int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +extern int POKEYSND_sampbuf_ptr; /* pointer to sampbuf */ +extern int POKEYSND_sampbuf_rptr; /* pointer to read from sampbuf */ +extern int POKEYSND_sampbuf_last; /* last absolute time */ +extern int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +extern int POKEYSND_sampbuf_lastval; /* last volume */ +extern int POKEYSND_sampout; /* last out volume */ +extern int POKEYSND_samp_freq; +extern int POKEYSND_samp_consol_val; /* actual value of console sound */ +#endif /* VOL_ONLY_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +extern UBYTE *POKEYSND_process_buffer; +extern unsigned int POKEYSND_process_buffer_length; +extern unsigned int POKEYSND_process_buffer_fill; +extern void (*POKEYSND_GenerateSync)(unsigned int num_ticks); +int POKEYSND_UpdateProcessBuffer(void); +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef __cplusplus +} + +#endif +#endif /* POKEYSND_H_ */ diff --git a/MCUME_esp32/esp800/main/romatariosa.h b/MCUME_esp32/esp800/main/romatariosa.h new file mode 100644 index 0000000..eee1d07 --- /dev/null +++ b/MCUME_esp32/esp800/main/romatariosa.h @@ -0,0 +1,642 @@ +const UBYTE romos[10240] = { +0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2, +0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0, +0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1, +0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18, +0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B, +0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86, +0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48, +0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65, +0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF, +0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85, +0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB, +0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03, +0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED, +0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4, +0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4, +0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20, +0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0, +0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60, +0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9, +0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82, +0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85, +0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00, +0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00, +0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20, +0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18, +0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09, +0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5, +0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4, +0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C, +0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62, +0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5, +0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0, +0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32, +0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7, +0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01, +0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5, +0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA, +0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60, +0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F, +0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4, +0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5, +0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10, +0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5, +0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90, +0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00, +0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5, +0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0, +0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7, +0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD, +0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04, +0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4, +0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5, +0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05, +0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90, +0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9, +0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4, +0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62, +0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2, +0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4, +0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94, +0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68, +0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02, +0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18, +0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60, +0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00, +0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA, +0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01, +0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0, +0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8, +0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95, +0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60, +0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5, +0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0, +0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99, +0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0, +0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F, +0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5, +0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60, +0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB, +0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA, +0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2, +0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00, +0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00, +0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60, +0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28, +0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6, +0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2, +0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1, +0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC, +0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00, +0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60, +0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1, +0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10, +0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5, +0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD, +0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20, +0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10, +0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40, +0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD, +0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94, +0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E, +0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27, +0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15, +0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40, +0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7, +0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20, +0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0, +0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0x10,0x02,0x38,0x60,0xA5,0xD4,0x85,0xE0,0x38, +0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6, +0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28, +0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20, +0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6, +0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20, +0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49, +0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05, +0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98, +0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00, +0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39, +0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64, +0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12, +0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16, +0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16, +0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29, +0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19, +0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99, +0x3F,0x78,0x53,0x98,0x16,0x34,0x98,0x16,0x34,0xFC,0xE0,0x32,0x50,0xD9,0x68,0x11, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00, +0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18, +0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03, +0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F, +0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00, +0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, +0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18, +0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18, +0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0xFB,0xF3,0x33,0xF6,0x3D,0xF6,0xA3,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0xF9, +0xF5,0xF3,0x33,0xF6,0x92,0xF5,0xB6,0xF5,0x33,0xF6,0xFB,0xFC,0x4C,0xE4,0xF3,0xF6, +0x33,0xF6,0x33,0xF6,0xE1,0xF6,0x3C,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00, +0x9E,0xEE,0xDB,0xEE,0x9D,0xEE,0xA6,0xEE,0x80,0xEE,0x9D,0xEE,0x4C,0x78,0xEE,0x00, +0x4B,0xEF,0x2A,0xF0,0xD5,0xEF,0x0F,0xF0,0x27,0xF0,0x4A,0xEF,0x4C,0x41,0xEF,0x00, +0x4C,0xEA,0xED,0x4C,0xF0,0xED,0x4C,0xC4,0xE4,0x4C,0x59,0xE9,0x4C,0x12,0xE9,0x4C, +0xD1,0xE7,0x4C,0x3E,0xE9,0x4C,0x44,0xE9,0x4C,0xF6,0xEB,0x4C,0xD5,0xE6,0x4C,0xA6, +0xE4,0x4C,0x23,0xF2,0x4C,0x1B,0xF1,0x4C,0x25,0xF1,0x4C,0xE9,0xEF,0x4C,0x5D,0xEF, +0xB3,0xE7,0xB2,0xE7,0xB2,0xE7,0xB2,0xE7,0xBE,0xFF,0x11,0xEB,0x90,0xEA,0xD1,0xEA, +0xB2,0xE7,0xB2,0xE7,0xB2,0xE7,0xF6,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xD1,0xE7,0x3E,0xE9,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xC0,0x9D, +0x46,0x03,0xA9,0xE4,0x9D,0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8, +0x60,0xA0,0x85,0x60,0x85,0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90, +0x05,0xA0,0x86,0x4C,0x1B,0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8, +0xC0,0x0C,0x90,0xF4,0xA0,0x84,0xA5,0x22,0xC9,0x03,0x90,0x25,0xA8,0xC0,0x0E,0x90, +0x02,0xA0,0x0E,0x84,0x17,0xB9,0xC6,0xE6,0xF0,0x0F,0xC9,0x02,0xF0,0x35,0xC9,0x08, +0xB0,0x4C,0xC9,0x04,0xF0,0x63,0x4C,0xC9,0xE5,0xA5,0x20,0xC9,0xFF,0xF0,0x05,0xA0, +0x81,0x4C,0x1B,0xE6,0x20,0x9E,0xE6,0xB0,0xF8,0x20,0x3D,0xE6,0xB0,0xF3,0x20,0x89, +0xE6,0xA9,0x0B,0x85,0x17,0x20,0x3D,0xE6,0xA5,0x2C,0x85,0x26,0xA5,0x2D,0x85,0x27, +0x4C,0x1D,0xE6,0xA0,0x01,0x84,0x23,0x20,0x3D,0xE6,0xB0,0x03,0x20,0x89,0xE6,0xA9, +0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27,0xA9,0xC0,0x85,0x26,0x4C,0x1D,0xE6,0xA5,0x20, +0xC9,0xFF,0xD0,0x05,0x20,0x9E,0xE6,0xB0,0xB8,0x20,0x3D,0xE6,0x20,0x89,0xE6,0xA6, +0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x83,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20, +0x89,0xE6,0x85,0x2F,0x4C,0x1D,0xE6,0x20,0x89,0xE6,0x85,0x2F,0x30,0x35,0xA0,0x00, +0x91,0x24,0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0, +0x06,0x20,0x63,0xE6,0x4C,0xC3,0xE5,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02, +0xD0,0x11,0x20,0x89,0xE6,0x85,0x2F,0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9, +0x89,0x85,0x23,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x87,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x06,0xA5, +0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F,0x20,0x89,0xE6,0x30,0x25, +0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20, +0x63,0xE6,0x4C,0x15,0xE6,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x05, +0xA9,0x9B,0x20,0x89,0xE6,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0x84,0x23,0xA4,0x2E,0xB9, +0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00,0xB5,0x20,0x99,0x40,0x03, +0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F,0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0, +0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9,0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85, +0x2D,0xA4,0x17,0xB9,0xC6,0xE6,0xA8,0xB1,0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86, +0x2C,0x18,0x60,0xC6,0x28,0xA5,0x28,0xC9,0xFF,0xD0,0x02,0xC6,0x29,0x05,0x29,0x60, +0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28,0x85, +0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0x93,0xE6,0x84,0x23, +0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0xA0,0x00, +0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x0A,0x88,0x88,0x88,0x10,0xF6, +0xA0,0x82,0x38,0xB0,0x13,0x98,0x85,0x20,0x38,0xA0,0x01,0xB1,0x24,0xE9,0x30,0xC9, +0x0A,0x90,0x02,0xA9,0x01,0x85,0x21,0x18,0x60,0x00,0x04,0x04,0x04,0x04,0x06,0x06, +0x06,0x06,0x02,0x08,0x0A,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x38,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0x8D,0x01,0xD3,0xA9,0x3C,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0x60,0x6C,0x16,0x02,0x48,0xA9,0x10,0x2C,0x0E,0xD2,0xD0,0x0D,0xA9,0xEF, +0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0C,0x02,0xA9,0x20,0x2C,0x0E,0xD2, +0xD0,0x0D,0xA9,0xDF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0A,0x02,0xA9, +0x08,0x24,0x10,0xF0,0x12,0x2C,0x0E,0xD2,0xD0,0x0D,0xA9,0xF7,0x8D,0x0E,0xD2,0xA5, +0x10,0x8D,0x0E,0xD2,0x6C,0x0E,0x02,0xAD,0x0E,0xD2,0x6A,0xB0,0x0D,0xA9,0xFE,0x8D, +0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x10,0x02,0x6A,0xB0,0x0D,0xA9,0xFD,0x8D, +0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x12,0x02,0x6A,0xB0,0x0A,0xA9,0xFB,0x8D, +0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x2C,0x0E,0xD2,0x70,0x0D,0xA9,0xBF,0x8D,0x0E, +0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x08,0x02,0x30,0x18,0xA9,0x7F,0x8D,0x0E,0xD2, +0xA5,0x10,0x8D,0x0E,0xD2,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85, +0x4D,0x68,0x40,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C,0x03, +0xD3,0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x08,0x68,0x29,0x10,0xF0,0x03,0x6C, +0x06,0x02,0x68,0x40,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02,0x48,0xAD,0x0F,0xD4, +0x29,0x20,0xF0,0x03,0x4C,0x74,0xE4,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22, +0x02,0xE6,0x14,0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE,0xA2, +0x00,0xA4,0x4D,0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F,0xA2, +0x00,0x20,0xF5,0xE8,0xD0,0x03,0x20,0xEF,0xE8,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04, +0x01,0x29,0x04,0xF0,0x03,0x4C,0x3E,0xE9,0x58,0xAD,0x0D,0xD4,0x8D,0x35,0x02,0xAD, +0x0C,0xD4,0x8D,0x34,0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02,0x8D,0x02, +0xD4,0xAD,0x2F,0x02,0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xA9,0x08,0x8D, +0x1F,0xD0,0xA2,0x08,0xBD,0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D,0x12,0xD0,0xCA,0x10, +0xF3,0xAD,0xF4,0x02,0x8D,0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01,0xD4,0xA2,0x02,0x20, +0xF5,0xE8,0xD0,0x03,0x20,0xF2,0xE8,0xA2,0x02,0xE8,0xE8,0xBD,0x18,0x02,0x1D,0x19, +0x02,0xF0,0x06,0x20,0xF5,0xE8,0x9D,0x26,0x02,0xE0,0x08,0xD0,0xEC,0xAD,0x0F,0xD2, +0x29,0x04,0xF0,0x08,0xAD,0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02,0xAD,0x2B,0x02,0xF0, +0x17,0xAD,0x0F,0xD2,0x29,0x04,0xD0,0x60,0xCE,0x2B,0x02,0xD0,0x0B,0xA9,0x06,0x8D, +0x2B,0x02,0xAD,0x09,0xD2,0x8D,0xFC,0x02,0xA0,0x01,0xA2,0x03,0xB9,0x00,0xD3,0x4A, +0x4A,0x4A,0x4A,0x9D,0x78,0x02,0xCA,0xB9,0x00,0xD3,0x29,0x0F,0x9D,0x78,0x02,0xCA, +0x88,0x10,0xE9,0xA2,0x03,0xBD,0x10,0xD0,0x9D,0x84,0x02,0xBD,0x00,0xD2,0x9D,0x70, +0x02,0xBD,0x04,0xD2,0x9D,0x74,0x02,0xCA,0x10,0xEB,0x8D,0x0B,0xD2,0xA2,0x06,0xA0, +0x03,0xB9,0x78,0x02,0x4A,0x4A,0x4A,0x9D,0x7D,0x02,0xA9,0x00,0x2A,0x9D,0x7C,0x02, +0xCA,0xCA,0x88,0x10,0xEC,0x6C,0x24,0x02,0xA9,0x00,0x8D,0x2B,0x02,0xF0,0xA9,0x6C, +0x26,0x02,0x6C,0x28,0x02,0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE, +0x19,0x02,0xDE,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9, +0xFF,0x60,0x0A,0x8D,0x2D,0x02,0xA9,0x00,0x8D,0x0E,0xD4,0x8A,0xAE,0x2D,0x02,0x9D, +0x17,0x02,0x98,0x9D,0x16,0x02,0xA9,0x40,0x8D,0x0E,0xD4,0x2C,0x0F,0xD4,0x50,0x0D, +0xA9,0xE9,0x48,0xA9,0x3D,0x48,0x08,0x48,0x48,0x48,0x6C,0x22,0x02,0x60,0x68,0xA8, +0x68,0xAA,0x68,0x40,0xA9,0x3C,0x8D,0x02,0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03, +0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2,0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85, +0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03,0x4C,0x84,0xEB,0xA9,0x00,0x8D,0x0F,0x03, +0xA9,0x01,0x85,0x37,0xA9,0x0D,0x85,0x36,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D, +0x06,0xD2,0x18,0xAD,0x00,0x03,0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02, +0x03,0x8D,0x3B,0x02,0xAD,0x0A,0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02, +0x18,0xA9,0x3A,0x85,0x32,0x69,0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9, +0x34,0x8D,0x03,0xD3,0x20,0x8E,0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x07,0xC6, +0x36,0x10,0xB5,0x4C,0x06,0xEA,0xAD,0x03,0x03,0x10,0x0C,0xA9,0x0D,0x85,0x36,0x20, +0x6E,0xEB,0x20,0x8E,0xEC,0xF0,0xE8,0x20,0x79,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20, +0x9F,0xEC,0xF0,0x12,0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1D, +0x20,0x6E,0xEB,0x20,0xE2,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30, +0xA5,0x30,0xC9,0x01,0xF0,0x07,0xC6,0x37,0x30,0x03,0x4C,0x74,0xE9,0x20,0x63,0xEC, +0xA9,0x00,0x85,0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18, +0xA9,0x3E,0x85,0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF, +0x85,0x3C,0x20,0xE2,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02, +0xC9,0x41,0xF0,0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30, +0xD0,0x04,0xA9,0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F, +0x02,0xD0,0x02,0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20, +0xF6,0xEB,0xA0,0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85, +0x31,0xA5,0x11,0xD0,0x03,0x4C,0xA4,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x63,0xEC,0x60, +0x98,0x48,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x33,0xC5,0x35,0x90,0x22,0xA5,0x32, +0xC5,0x34,0x90,0x1C,0xA5,0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85, +0x3B,0xD0,0x09,0xA5,0x10,0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40, +0xA0,0x00,0xB1,0x32,0x8D,0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xBC, +0xEA,0xA5,0x3B,0xF0,0x0B,0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2, +0x68,0x40,0xA9,0x00,0xAC,0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9, +0x01,0x85,0x30,0x20,0x1F,0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C, +0xA4,0xED,0xAD,0x17,0x03,0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30, +0x60,0x98,0x48,0xAD,0x0F,0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29, +0x20,0xD0,0x04,0xA0,0x8E,0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31, +0xF0,0x04,0xA0,0x8F,0x84,0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D, +0xD2,0xA0,0x00,0x91,0x32,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02, +0xE6,0x33,0xA5,0x33,0xC5,0x35,0x90,0xE2,0xA5,0x32,0xC5,0x34,0x90,0xDC,0xA5,0x3C, +0xF0,0x06,0xA9,0x00,0x85,0x3C,0xF0,0xCE,0xA9,0xFF,0x85,0x38,0xD0,0xCC,0x18,0xAD, +0x04,0x03,0x85,0x32,0x6D,0x08,0x03,0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09, +0x03,0x85,0x35,0x60,0xAD,0x03,0x03,0x10,0x2E,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05, +0x8D,0x06,0xD2,0x20,0xF6,0xEB,0xA0,0x0D,0xAD,0x0B,0x03,0x30,0x02,0xA0,0x96,0xA2, +0x00,0x20,0xBD,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x6E, +0xEB,0x20,0x6B,0xEA,0x4C,0xE3,0xEB,0xA9,0xFF,0x8D,0x0F,0x03,0xA0,0x08,0xAD,0x0B, +0x03,0x30,0x02,0xA0,0x64,0xA2,0x00,0x20,0xBD,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD, +0x17,0x03,0xD0,0xFB,0x20,0x6E,0xEB,0x20,0x79,0xEC,0x20,0xBD,0xED,0x20,0x14,0xED, +0x20,0xE2,0xEA,0xAD,0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x0D,0xEA, +0xA9,0x00,0x8D,0x17,0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00,0x03, +0xC0,0x60,0xD0,0x0C,0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00,0xD2, +0x8D,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x35,0xEC,0xA9, +0x07,0x2D,0x32,0x02,0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2,0xA9, +0xC7,0x25,0x10,0x09,0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA2, +0x06,0xA9,0xA8,0xA4,0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9, +0xA9,0xA0,0x8D,0x05,0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2,0x8D, +0x03,0xD2,0x60,0xEA,0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06,0xA9, +0x00,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8,0x29, +0x3F,0xAA,0x98,0x6A,0x29,0xC0,0xA8,0x60,0x11,0xEB,0x90,0xEA,0xD1,0xEA,0xA2,0x01, +0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x20,0x6B,0xEA,0xA0,0x02,0xA2,0x00,0x20, +0xBD,0xED,0x20,0x1A,0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x08,0xED, +0x8D,0x10,0x03,0xAD,0x0C,0x03,0x20,0x08,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03,0x38, +0xED,0x0C,0x03,0x8D,0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA9,0x64, +0x18,0x69,0x9C,0x88,0x10,0xFA,0x18,0x6D,0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38, +0xE9,0x16,0xAA,0x98,0x29,0x07,0xA8,0xA9,0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0, +0x00,0x8C,0x0E,0x03,0x38,0xE9,0x07,0x10,0x03,0xCE,0x0E,0x03,0x18,0x7D,0xD2,0xED, +0xA8,0xAD,0x0E,0x03,0x7D,0xD3,0xED,0x60,0xC9,0x7C,0x30,0x04,0x38,0xE9,0x7C,0x60, +0x18,0x69,0x20,0x60,0xA5,0x11,0xD0,0x03,0x4C,0xA4,0xED,0x78,0xAD,0x17,0x03,0xD0, +0x02,0xF0,0x25,0xAD,0x0F,0xD2,0x29,0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4, +0xA4,0x14,0x8E,0x0C,0x03,0x8C,0x0D,0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5, +0x11,0xF0,0x61,0xAD,0x17,0x03,0xD0,0x04,0x58,0x4C,0x0C,0xEB,0xAD,0x0F,0xD2,0x29, +0x10,0xCD,0x16,0x03,0xF0,0xE9,0x8D,0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30, +0x12,0xAD,0x0B,0xD4,0xA4,0x14,0x20,0xA7,0xEC,0x8C,0xEE,0x02,0x8D,0xEF,0x02,0xA0, +0x09,0xD0,0xCC,0xAD,0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D,0x06,0xD2,0xA9, +0x00,0x8D,0x0F,0xD2,0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91,0x32,0xC8,0x91, +0x32,0xA9,0xAA,0x85,0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5,0x33,0x69,0x00, +0x85,0x33,0x58,0x60,0x20,0x63,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xA9, +0x80,0x85,0x30,0xAE,0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C,0x0D,0xEA,0xA9,0xF0,0x8D, +0x26,0x02,0xA9,0xEB,0x8D,0x27,0x02,0xA9,0x01,0x8D,0x17,0x03,0x78,0x20,0x5C,0xE4, +0x58,0x60,0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9,0x04,0x54,0x05,0xAF,0x05,0x0A,0x06, +0x65,0x06,0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0,0x07,0xA9,0xA0,0x8D,0x46,0x02,0x60, +0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21,0xF0,0x02,0xA9, +0x07,0x8D,0x06,0x03,0xA2,0x40,0xA0,0x80,0xAD,0x02,0x03,0xC9,0x57,0xD0,0x02,0xA2, +0x80,0xC9,0x53,0xD0,0x0C,0xA9,0xEA,0x8D,0x04,0x03,0xA9,0x02,0x8D,0x05,0x03,0xA0, +0x04,0x8E,0x03,0x03,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10, +0x01,0x60,0xAD,0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x6D,0xEE,0xA0,0x02,0xB1,0x15, +0x8D,0x46,0x02,0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x6D,0xEE,0xA0,0xFE,0xC8, +0xC8,0xB1,0x15,0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88, +0x88,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03, +0x85,0x15,0xAD,0x05,0x03,0x85,0x16,0x60,0xA9,0x1E,0x85,0x1C,0x60,0xEA,0x02,0xC0, +0x03,0xA9,0x04,0x85,0x1E,0xAE,0x7D,0xEE,0xAC,0x7E,0xEE,0xA9,0x53,0x8D,0x02,0x03, +0x8D,0x0A,0x03,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x30,0x03,0x20,0x14,0xEF,0x60,0x20, +0x81,0xEE,0xA9,0x00,0x85,0x1D,0x60,0x85,0x1F,0x20,0x1A,0xEF,0xA6,0x1D,0xA5,0x1F, +0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xF0,0x13,0x86,0x1D,0xC9,0x9B,0xF0,0x03,0xA0,0x01, +0x60,0xA9,0x20,0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xD0,0xF8,0xA9,0x00,0x85,0x1D,0xAE, +0x7F,0xEE,0xAC,0x80,0xEE,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x60,0x20,0x1A,0xEF,0xA6, +0x1D,0xD0,0xDE,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00, +0x03,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9, +0x40,0x8D,0x03,0x03,0xA5,0x1E,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA5,0x1C, +0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x85,0x1C,0x60,0xA0,0x57,0xA5,0x2B,0xC9,0x4E, +0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9,0x53, +0xD0,0x0B,0xA2,0x1D,0x86,0x1E,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9,0x4E,0xD0, +0xDD,0xA9,0xCC,0x8D,0xEE,0x02,0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E, +0xA5,0x2A,0x29,0x0C,0xC9,0x04,0xF0,0x05,0xC9,0x08,0xF0,0x39,0x60,0xA9,0x00,0x8D, +0x89,0x02,0x85,0x3F,0xA9,0x01,0x20,0x58,0xF0,0x30,0x24,0xA9,0x34,0x8D,0x02,0xD3, +0xA0,0xE0,0xA2,0x01,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0, +0xFB,0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0xD3,0xEF,0xA0,0x80,0xC6,0x11,0xA9, +0x00,0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0x58,0xF0,0x30, +0xEE,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03, +0x20,0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA9,0x03,0xA2,0x03,0xA0,0xC0,0x20,0x5C, +0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xC1,0xAD,0x2A,0x02,0xD0,0xF7,0xA9, +0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D,0xEC,0x8A,0x02,0xF0, +0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20,0x95,0xF0,0x98,0x30, +0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE,0xF0,0x0D,0xC9,0xFA, +0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0xD6,0xEF,0xC6,0x3F,0xA0,0x88,0x60, +0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0,0x01,0x60,0xA9,0xFC, +0x20,0xD2,0xF0,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD,0x89,0x02,0x30,0x08, +0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A,0x8E,0x7F,0x04,0xA9, +0xFA,0x20,0xD2,0xF0,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00,0x04,0xCA,0x10,0xFA, +0xA9,0xFE,0x20,0xD2,0xF0,0x4C,0x32,0xF0,0x85,0x40,0xA5,0x14,0x18,0x69,0x19,0xAA, +0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0,0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0, +0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6,0x40,0xF0,0x0B,0x8A,0x18,0x69,0x08, +0xAA,0xE4,0x14,0xD0,0xFC,0xF0,0xD3,0x20,0x8C,0xF0,0x98,0x60,0xAD,0x25,0xE4,0x48, +0xAD,0x24,0xE4,0x48,0x60,0x8D,0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D, +0x08,0x03,0xA9,0x03,0x8D,0x05,0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00, +0x03,0xA9,0x00,0x8D,0x01,0x03,0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40, +0xC9,0x52,0xF0,0x02,0xA0,0x80,0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59, +0xE4,0x60,0x8D,0xFF,0x03,0xA9,0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20, +0x95,0xF0,0x60,0x50,0x30,0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B, +0x20,0xE4,0x7D,0x41,0x54,0x41,0x52,0x49,0x20,0x43,0x4F,0x4D,0x50,0x55,0x54,0x45, +0x52,0x20,0x2D,0x20,0x4D,0x45,0x4D,0x4F,0x20,0x50,0x41,0x44,0x9B,0x42,0x4F,0x4F, +0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0x78,0xAD,0x44,0x02,0xD0, +0x04,0xA9,0xFF,0xD0,0x03,0x78,0xA9,0x00,0x85,0x08,0xD8,0xA2,0xFF,0x9A,0x20,0x3F, +0xF2,0x20,0x81,0xF2,0xA5,0x08,0xD0,0x28,0xA9,0x00,0xA0,0x08,0x85,0x04,0x85,0x05, +0x91,0x04,0xC8,0xC0,0x00,0xD0,0xF9,0xE6,0x05,0xA6,0x05,0xE4,0x06,0xD0,0xF1,0xAD, +0x72,0xE4,0x85,0x0A,0xAD,0x73,0xE4,0x85,0x0B,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x13, +0xA2,0x00,0x8A,0x9D,0x00,0x02,0x9D,0x00,0x03,0xCA,0xD0,0xF7,0xA2,0x10,0x95,0x00, +0xE8,0x10,0xFB,0xA9,0x02,0x85,0x52,0xA9,0x27,0x85,0x53,0xA2,0x25,0xBD,0x80,0xE4, +0x9D,0x00,0x02,0xCA,0x10,0xF7,0x20,0x94,0xF2,0x58,0xA2,0x0E,0xBD,0xE3,0xF0,0x9D, +0x1A,0x03,0xCA,0x10,0xF7,0xA2,0x00,0x86,0x07,0x86,0x06,0xAE,0xE4,0x02,0xE0,0x90, +0xB0,0x0A,0xAD,0xFC,0x9F,0xD0,0x05,0xE6,0x07,0x20,0x3C,0xF2,0xAE,0xE4,0x02,0xE0, +0xB0,0xB0,0x0A,0xAE,0xFC,0xBF,0xD0,0x05,0xE6,0x06,0x20,0x39,0xF2,0xA9,0x03,0xA2, +0x00,0x9D,0x42,0x03,0xA9,0x18,0x9D,0x44,0x03,0xA9,0xF1,0x9D,0x45,0x03,0xA9,0x0C, +0x9D,0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0x25,0xF1,0xE8,0xD0,0xFD,0xC8,0x10, +0xFA,0x20,0xB2,0xF3,0xA5,0x06,0x05,0x07,0xF0,0x12,0xA5,0x06,0xF0,0x03,0xAD,0xFD, +0xBF,0xA6,0x07,0xF0,0x03,0x0D,0xFD,0x9F,0x29,0x01,0xF0,0x03,0x20,0xCF,0xF2,0xA9, +0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29,0x04,0xF0,0x03,0x6C, +0xFA,0xBF,0xA5,0x07,0xF0,0x0A,0xAD,0xFD,0x9F,0x29,0x04,0xF0,0xDF,0x6C,0xFA,0x9F, +0x6C,0x0A,0x00,0xA2,0xF2,0xA0,0xF0,0x20,0x85,0xF3,0x20,0x30,0xF2,0x4C,0x2A,0xF2, +0xAD,0x05,0xE4,0x48,0xAD,0x04,0xE4,0x48,0x60,0x6C,0xFE,0xBF,0x6C,0xFE,0x9F,0xAD, +0xFC,0xBF,0xD0,0x12,0xEE,0xFC,0xBF,0xAD,0xFC,0xBF,0xD0,0x0A,0xAD,0xFD,0xBF,0x29, +0x80,0xF0,0x03,0x6C,0xFE,0xBF,0xCE,0xFC,0xBF,0xA9,0x00,0x85,0x05,0xA9,0x10,0x85, +0x06,0xA0,0x00,0xB1,0x05,0x85,0x07,0x49,0xFF,0x85,0x04,0x91,0x05,0xB1,0x05,0xC5, +0x04,0xD0,0x0D,0xA5,0x07,0x91,0x05,0xA5,0x06,0x18,0x69,0x10,0x85,0x06,0xD0,0xE3, +0x60,0xA9,0x00,0xAA,0x9D,0x00,0xD0,0x9D,0x00,0xD4,0x9D,0x00,0xD2,0x9D,0x00,0xD3, +0xE8,0xD0,0xF1,0x60,0xC6,0x11,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00, +0x8D,0xE5,0x02,0xA9,0x00,0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4, +0x20,0x1C,0xE4,0x20,0x2C,0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20, +0x65,0xE4,0x20,0x6B,0xE4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0x02,0xE6,0x4A,0x60,0xA5, +0x08,0xF0,0x0A,0xA5,0x09,0x29,0x01,0xF0,0x03,0x20,0x7E,0xF3,0x60,0xA9,0x01,0x8D, +0x01,0x03,0xA9,0x53,0x8D,0x02,0x03,0x20,0x53,0xE4,0x10,0x01,0x60,0xA9,0x00,0x8D, +0x0B,0x03,0xA9,0x01,0x8D,0x0A,0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05, +0x03,0x20,0x9D,0xF3,0x10,0x08,0x20,0x81,0xF3,0xA5,0x4B,0xF0,0xE0,0x60,0xA2,0x03, +0xBD,0x00,0x04,0x9D,0x40,0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43, +0x02,0x85,0x05,0xAD,0x04,0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9, +0x00,0x04,0x91,0x04,0x88,0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05, +0x69,0x00,0x85,0x05,0xCE,0x41,0x02,0xF0,0x11,0xEE,0x0A,0x03,0x20,0x9D,0xF3,0x10, +0xDC,0x20,0x81,0xF3,0xA5,0x4B,0xD0,0xAE,0xF0,0xF2,0xA5,0x4B,0xF0,0x03,0x20,0x9D, +0xF3,0x20,0x6C,0xF3,0xB0,0xA0,0x20,0x7E,0xF3,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02, +0x69,0x06,0x85,0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C, +0x00,0xA2,0x0D,0xA0,0xF1,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9, +0x09,0x9D,0x42,0x03,0xA9,0xFF,0x9D,0x48,0x03,0x20,0x56,0xE4,0x60,0xA5,0x4B,0xF0, +0x03,0x4C,0x7A,0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x20,0x53, +0xE4,0x60,0xA5,0x08,0xF0,0x0A,0xA5,0x09,0x29,0x02,0xF0,0x03,0x20,0xE1,0xF3,0x60, +0xA5,0x4A,0xF0,0x1C,0xA9,0x80,0x85,0x3E,0xE6,0x4B,0x20,0x7D,0xE4,0x20,0x01,0xF3, +0xA9,0x00,0x85,0x4B,0x85,0x4A,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03, +0x60,0x6C,0x02,0x00,0xA9,0xFF,0x8D,0xFC,0x02,0xAD,0xE6,0x02,0x29,0xF0,0x85,0x6A, +0xA9,0x40,0x8D,0xBE,0x02,0x60,0xA5,0x2B,0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F, +0x85,0x2A,0xA9,0x00,0x85,0x57,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0x02,0x8D,0xF3,0x02, +0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05,0x10,0x85,0x10,0x8D,0x0E,0xD2, +0xA9,0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01, +0x99,0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0xC1,0xFE,0x9D,0xC4,0x02,0xCA,0x10, +0xF7,0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x69, +0xFE,0xD0,0x04,0xA9,0x91,0x85,0x4C,0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x45,0xFE, +0xA9,0x28,0x20,0x21,0xF9,0x88,0xD0,0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8, +0xE0,0x08,0x90,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10,0x20, +0x21,0xF9,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5,0x64, +0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x1F,0xF9, +0xBD,0x75,0xFE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0xA5,0x64,0x85,0x68,0xA5, +0x65,0x85,0x69,0x20,0x13,0xF9,0xA9,0x41,0x20,0x17,0xF9,0x86,0x66,0xA9,0x18,0x8D, +0xBF,0x02,0xA5,0x57,0xC9,0x09,0xB0,0x2D,0xA5,0x2A,0x29,0x10,0xF0,0x27,0xA9,0x04, +0x8D,0xBF,0x02,0xA2,0x02,0xA9,0x02,0x20,0x17,0xF9,0xCA,0x10,0xF8,0xA4,0x6A,0x88, +0x98,0x20,0x17,0xF9,0xA9,0x60,0x20,0x17,0xF9,0xA9,0x42,0x20,0x17,0xF9,0x18,0xA9, +0x0C,0x65,0x66,0x85,0x66,0xA4,0x66,0xBE,0x51,0xFE,0xA5,0x51,0x20,0x17,0xF9,0xCA, +0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x1C,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20, +0x17,0xF9,0xA9,0x00,0x20,0x17,0xF9,0xA9,0x4F,0x20,0x17,0xF9,0xA5,0x51,0x20,0x17, +0xF9,0xCA,0xD0,0xF8,0xA5,0x59,0x20,0x17,0xF9,0xA5,0x58,0x20,0x17,0xF9,0xA5,0x51, +0x09,0x40,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA5, +0x64,0x8D,0x30,0x02,0xA5,0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x17,0xF9,0xA5,0x64, +0x8D,0xE5,0x02,0xA5,0x65,0x8D,0xE6,0x02,0xA5,0x68,0x85,0x64,0xA5,0x69,0x85,0x65, +0xAD,0x31,0x02,0x20,0x17,0xF9,0xAD,0x30,0x02,0x20,0x17,0xF9,0xA5,0x4C,0x10,0x07, +0x48,0x20,0xFC,0xF3,0x68,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0xB9,0xF7, +0x8D,0x90,0x02,0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02, +0x4C,0x21,0xF6,0x20,0x96,0xFA,0x20,0xA2,0xF5,0x20,0x32,0xFB,0x20,0xD4,0xF9,0x4C, +0x34,0xF6,0x20,0x47,0xF9,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10, +0xF9,0x8D,0xFA,0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0x20,0x96,0xFA,0xAD,0xFB,0x02, +0xC9,0x7D,0xD0,0x06,0x20,0xB9,0xF7,0x4C,0x21,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0, +0x06,0x20,0x30,0xFA,0x4C,0x21,0xF6,0x20,0xE0,0xF5,0x20,0xD8,0xF9,0x4C,0x21,0xF6, +0xAD,0xFF,0x02,0xD0,0xFB,0xA2,0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB, +0x02,0xA8,0x2A,0x2A,0x2A,0x2A,0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0xF6,0xFE,0x8D, +0xFA,0x02,0x20,0x47,0xF9,0xAD,0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0x08,0xF6, +0x2D,0xA0,0x02,0x85,0x50,0xAD,0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64, +0x60,0x20,0xA2,0xF5,0x85,0x5D,0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49, +0x80,0x20,0xFF,0xF5,0xA4,0x4C,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x20,0xB3, +0xFC,0x20,0x88,0xFA,0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D, +0x20,0xE2,0xF6,0x84,0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xAD,0xF6,0x20, +0xB3,0xFC,0xA5,0x63,0xC9,0x71,0xD0,0x03,0x20,0x0A,0xF9,0x4C,0x50,0xF6,0x20,0xE4, +0xFA,0x20,0x00,0xFC,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11, +0xC6,0x6B,0xF0,0x0D,0xA5,0x4C,0x30,0xF8,0x20,0x93,0xF5,0x8D,0xFB,0x02,0x4C,0xB3, +0xFC,0x20,0x30,0xFA,0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x21,0xF6,0x84,0x4C,0x4C,0xB3, +0xFC,0x6C,0x64,0x00,0x8D,0xFB,0x02,0x20,0xB3,0xFC,0x20,0x88,0xFA,0x20,0xE4,0xFA, +0x20,0x8D,0xFC,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xCA,0xF5,0x4C,0xB3,0xFC,0xAD,0xFE, +0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xBD,0xC6,0xFE,0x85,0x64,0xBD, +0xC7,0xFE,0x85,0x65,0x20,0xA1,0xF6,0x20,0x21,0xF6,0x4C,0xB3,0xFC,0xA9,0xFF,0x8D, +0xFC,0x02,0xA5,0x2A,0x4A,0xB0,0x62,0xA9,0x80,0xA6,0x11,0xF0,0x58,0xAD,0xFC,0x02, +0xC9,0xFF,0xF0,0xEE,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0x20,0xD8,0xFC,0xAA,0xE0, +0xC0,0x90,0x02,0xA2,0x03,0xBD,0xFE,0xFE,0x8D,0xFB,0x02,0xC9,0x80,0xF0,0xCE,0xC9, +0x81,0xD0,0x0B,0xAD,0xB6,0x02,0x49,0x80,0x8D,0xB6,0x02,0x4C,0xDD,0xF6,0xC9,0x82, +0xD0,0x07,0xA9,0x00,0x8D,0xBE,0x02,0xF0,0xB4,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D, +0xBE,0x02,0xD0,0xA9,0xC9,0x84,0xD0,0x07,0xA9,0x80,0x8D,0xBE,0x02,0xD0,0x9E,0xC9, +0x85,0xD0,0x0A,0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0xD0,0x26,0xA5,0x7C,0xC9, +0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90,0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE, +0x02,0xF0,0x05,0x05,0x7C,0x4C,0xFE,0xF6,0x20,0x8D,0xFC,0xF0,0x09,0xAD,0xFB,0x02, +0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x34,0xF6,0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6, +0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54,0x4C,0x5C,0xFC,0xE6,0x54,0xA5,0x54, +0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE,0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5, +0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0xDD,0xFB,0xE6,0x55,0xA5,0x55,0xC5,0x53, +0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0xA5,0xF7,0x20,0xF3,0xFC,0xA0,0x00,0x98,0x91, +0x64,0xC8,0xD0,0xFB,0xE6,0x65,0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2, +0x02,0xC8,0xC0,0x04,0x90,0xF8,0x20,0xE4,0xFC,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85, +0x54,0x85,0x56,0x85,0x6C,0x60,0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52, +0xD0,0x03,0x20,0x73,0xFC,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54, +0xF0,0x03,0x20,0x7F,0xF7,0xA9,0x20,0x8D,0xFB,0x02,0x20,0xE0,0xF5,0x4C,0xDD,0xFB, +0x20,0xAA,0xF7,0xA5,0x55,0xC5,0x52,0xD0,0x0A,0x20,0x34,0xFA,0x20,0x20,0xFB,0x90, +0x02,0xB0,0x07,0xA5,0x63,0x20,0x25,0xFB,0x90,0xE6,0x4C,0xDD,0xFB,0xA5,0x63,0x4C, +0x06,0xFB,0xA5,0x63,0x4C,0x12,0xFB,0x20,0x9D,0xFC,0x20,0xA2,0xF5,0x85,0x7D,0xA9, +0x00,0x8D,0xBB,0x02,0x20,0xFF,0xF5,0xA5,0x63,0x48,0x20,0xDC,0xF9,0x68,0xC5,0x63, +0xB0,0x0C,0xA5,0x7D,0x48,0x20,0xA2,0xF5,0x85,0x7D,0x68,0x4C,0x44,0xF8,0x20,0xA8, +0xFC,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54,0xD0,0xF7,0x4C,0xDD,0xFB,0x20,0x9D,0xFC, +0x20,0x47,0xF9,0xA5,0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0xD4, +0xF9,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54,0xCD,0xBF,0x02,0xB0,0x09,0x20,0xA2,0xF5, +0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00,0x98,0x91,0x68,0x20,0x68,0xFC,0x20,0xA8, +0xFC,0x4C,0xDD,0xFB,0x38,0x20,0x7B,0xFB,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0xA5, +0x64,0x85,0x68,0x18,0x69,0x28,0x85,0x66,0xA5,0x65,0x85,0x69,0x69,0x00,0x85,0x67, +0xA6,0x54,0xE0,0x17,0xF0,0x08,0x20,0x4E,0xFB,0xE8,0xE0,0x17,0xD0,0xF8,0x20,0x9B, +0xFB,0x4C,0xDD,0xFB,0x20,0xDD,0xFB,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20, +0x23,0xFB,0x08,0x98,0x18,0x69,0x78,0x28,0x20,0x04,0xFB,0xC8,0xC0,0x18,0xD0,0xED, +0xAD,0xB4,0x02,0x09,0x01,0x8D,0xB4,0x02,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0x20, +0xB7,0xFB,0x20,0x20,0xFB,0x90,0xD4,0x4C,0xDD,0xFB,0xA0,0x20,0x20,0xD8,0xFC,0x88, +0x10,0xFA,0x60,0xA9,0x02,0xD0,0x0A,0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9, +0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30,0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64, +0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5,0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64, +0x90,0x04,0xA9,0x93,0x85,0x4C,0x60,0xA5,0x54,0x48,0xA5,0x55,0x48,0xA5,0x56,0x48, +0x20,0xF3,0xFC,0xA5,0x54,0x85,0x66,0xA9,0x00,0x85,0x67,0xA5,0x66,0x0A,0x26,0x67, +0x85,0x51,0xA4,0x67,0x8C,0x9F,0x02,0x0A,0x26,0x67,0x0A,0x26,0x67,0x18,0x65,0x51, +0x85,0x66,0xA5,0x67,0x6D,0x9F,0x02,0x85,0x67,0xA6,0x57,0xBC,0x81,0xFE,0x88,0x30, +0x07,0x06,0x66,0x26,0x67,0x4C,0x7E,0xF9,0xBC,0xA5,0xFE,0xA5,0x55,0xA2,0x07,0x88, +0x30,0x0A,0xCA,0x46,0x56,0x6A,0x6E,0xA1,0x02,0x4C,0x8F,0xF9,0xC8,0x18,0x65,0x66, +0x85,0x66,0x90,0x02,0xE6,0x67,0x38,0x6E,0xA1,0x02,0x18,0xCA,0x10,0xF9,0xAE,0xA1, +0x02,0xA5,0x66,0x18,0x65,0x64,0x85,0x64,0x85,0x5E,0xA5,0x67,0x65,0x65,0x85,0x65, +0x85,0x5F,0xBD,0xB1,0xFE,0x8D,0xA0,0x02,0x85,0x6F,0x68,0x85,0x56,0x68,0x85,0x55, +0x68,0x85,0x54,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B,0x85,0x7D,0xE6,0x63,0xE6,0x55, +0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x8D,0xFE,0xF0,0x0B,0xE0,0x00,0xD0, +0x06,0xC5,0x53,0xF0,0x02,0xB0,0x01,0x60,0xE0,0x08,0x90,0x04,0xA5,0x56,0xF0,0xF7, +0xA5,0x57,0xD0,0x30,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5,0x7D,0xF0,0x26,0x20,0x30, +0xFA,0x4C,0x77,0xFA,0x20,0x34,0xFA,0xA5,0x54,0x18,0x69,0x78,0x20,0x25,0xFB,0x90, +0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0xA5,0xF8,0x4C,0xDD,0xFB,0xA9,0x00,0xF0,0x02, +0xA9,0x9B,0x85,0x7D,0x20,0xE4,0xFC,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57,0xA0, +0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x99,0xFE,0xC5,0x54,0xD0, +0x26,0x8C,0x9D,0x02,0x8A,0xD0,0x20,0xA5,0x7D,0xF0,0x1C,0xC9,0x9B,0x38,0xF0,0x01, +0x18,0x20,0xAC,0xFB,0xEE,0xBB,0x02,0xC6,0x6C,0xCE,0x9D,0x02,0xAD,0xB2,0x02,0x38, +0x10,0xEF,0xAD,0x9D,0x02,0x85,0x54,0x4C,0xDD,0xFB,0x38,0xB5,0x70,0xE5,0x74,0x95, +0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9,0x04,0xF0,0x07,0xA5, +0x57,0xF0,0x03,0x20,0xFC,0xF3,0xA9,0x27,0xC5,0x53,0xB0,0x02,0x85,0x53,0xA6,0x57, +0xBD,0x99,0xFE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0,0x0A,0xA5,0x56,0xF0, +0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD,0x8D,0xFE,0xC5,0x55, +0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11,0x85,0x11,0xF0,0x06, +0x60,0x20,0xD6,0xF7,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B,0x10,0x03,0x20,0xB9, +0xFC,0x4C,0x34,0xF6,0xA0,0x00,0xA5,0x5D,0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD, +0xB9,0xFE,0x85,0x6E,0x68,0x4A,0x4A,0x4A,0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02, +0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0xEB,0xFA,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3, +0x02,0x60,0x20,0xEB,0xFA,0xA5,0x6E,0x49,0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60, +0xA5,0x54,0x18,0x69,0x78,0x20,0xEB,0xFA,0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01, +0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29, +0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0xFA,0xFE,0x8D,0xFB,0x02,0x60,0xA9,0x02, +0x85,0x65,0xA9,0x47,0x85,0x64,0xA0,0x27,0xB1,0x66,0x85,0x50,0xB1,0x68,0x91,0x66, +0xA5,0x50,0x91,0x64,0x88,0x10,0xF1,0xA5,0x65,0x85,0x69,0xA5,0x64,0x85,0x68,0x18, +0xA5,0x66,0x69,0x28,0x85,0x66,0x90,0x02,0xE6,0x67,0x60,0x08,0xA0,0x17,0x98,0x20, +0x22,0xFB,0x08,0x98,0x18,0x69,0x79,0x28,0x20,0x04,0xFB,0x88,0x30,0x04,0xC4,0x54, +0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C,0x04,0xFB,0xA5,0x52,0x85,0x55,0x20, +0x47,0xF9,0xA0,0x27,0xA9,0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0xFA,0xFA,0xA5, +0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0xA0,0x28,0xB1,0x64,0xA6,0x6A,0xCA,0xE4,0x65, +0xD0,0x08,0xA2,0xD7,0xE4,0x64,0xB0,0x02,0xA9,0x00,0xA0,0x00,0x91,0x64,0xE6,0x64, +0xD0,0xE5,0xE6,0x65,0xA5,0x65,0xC5,0x6A,0xD0,0xDD,0x4C,0xDD,0xFB,0xA9,0x00,0x85, +0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x22,0xFB,0xB0,0x0C,0xA5,0x63,0x18,0x69, +0x28,0x85,0x63,0xC6,0x51,0x4C,0xE5,0xFB,0x18,0xA5,0x63,0x65,0x55,0x85,0x63,0x60, +0x20,0x9D,0xFC,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9,0x01, +0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5,0x55, +0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0x39,0xFC,0x20,0xD4,0xF9,0xE6,0x6B,0xA5,0x63, +0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x99,0xF7,0x20,0xA2,0xF5,0xD0,0x17,0xC6,0x6B, +0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x02,0xC6, +0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x20,0xA8,0xFC,0x60,0x20,0xDD,0xFB,0xA5, +0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54, +0x20,0xDD,0xFB,0xA5,0x63,0xC5,0x52,0xF0,0x13,0x20,0x47,0xF9,0xA5,0x53,0x38,0xE5, +0x52,0xA8,0xB1,0x64,0xD0,0x06,0x88,0x10,0xF9,0x4C,0xDB,0xF8,0x60,0xA2,0x2D,0xBD, +0xC6,0xFE,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5, +0x54,0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA, +0x10,0xF8,0x60,0x20,0xB9,0xFC,0x4C,0x34,0xF6,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17, +0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90,0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10, +0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B,0x60,0xA2,0x7F,0x8E,0x1F,0xD0,0x8E,0x0A,0xD4, +0xCA,0x10,0xF7,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0,0x02,0xA5,0x52, +0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2,0x00,0xA5,0x22, +0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E,0xB7,0x02,0xA5, +0x54,0x85,0x60,0xA5,0x55,0x85,0x61,0xA5,0x56,0x85,0x62,0xA9,0x01,0x85,0x79,0x85, +0x7A,0x38,0xA5,0x60,0xE5,0x5A,0x85,0x76,0xB0,0x0D,0xA9,0xFF,0x85,0x79,0xA5,0x76, +0x49,0xFF,0x18,0x69,0x01,0x85,0x76,0x38,0xA5,0x61,0xE5,0x5B,0x85,0x77,0xA5,0x62, +0xE5,0x5C,0x85,0x78,0xB0,0x16,0xA9,0xFF,0x85,0x7A,0xA5,0x77,0x49,0xFF,0x85,0x77, +0xA5,0x78,0x49,0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00, +0x84,0x73,0x98,0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8, +0xA5,0x78,0x85,0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76, +0xA2,0x02,0xA8,0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70, +0xA5,0x7E,0x05,0x7F,0xD0,0x03,0x4C,0x42,0xFE,0x18,0xA5,0x70,0x65,0x76,0x85,0x70, +0x90,0x02,0xE6,0x71,0xA5,0x71,0xC5,0x75,0x90,0x14,0xD0,0x06,0xA5,0x70,0xC5,0x74, +0x90,0x0C,0x18,0xA5,0x54,0x65,0x79,0x85,0x54,0xA2,0x00,0x20,0x7A,0xFA,0x18,0xA5, +0x72,0x65,0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x27,0xD0, +0x06,0xA5,0x72,0xC5,0x74,0x90,0x1F,0x24,0x7A,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9, +0xFF,0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6, +0x56,0xA2,0x02,0x20,0x7A,0xFA,0x20,0x96,0xFA,0x20,0xE0,0xF5,0xAD,0xB7,0x02,0xF0, +0x2F,0x20,0x9D,0xFC,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0xDC,0xF9, +0x68,0x85,0x54,0x20,0x96,0xFA,0x20,0xA2,0xF5,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB, +0x02,0x20,0xE0,0xF5,0x4C,0x0A,0xFE,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0xA8,0xFC, +0x38,0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C, +0x90,0xFD,0x4C,0x34,0xF6,0x18,0x10,0x0A,0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4, +0xC4,0x17,0x17,0x0B,0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x13,0x13,0x09, +0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x02,0x06,0x07,0x08,0x09,0x0A,0x0B, +0x0D,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01, +0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x28,0x14,0x14, +0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x18,0x18,0x0C,0x18,0x30,0x30,0x60, +0x60,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01, +0x01,0x00,0xFF,0xF0,0x0F,0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02, +0x01,0x28,0xCA,0x94,0x46,0x00,0x1B,0x79,0xF7,0x1C,0x7F,0xF7,0x1D,0x8C,0xF7,0x1E, +0x99,0xF7,0x1F,0xAA,0xF7,0x7D,0xB9,0xF7,0x7E,0xE6,0xF7,0x7F,0x10,0xF8,0x9B,0x30, +0xFA,0x9C,0xD4,0xF8,0x9D,0xA4,0xF8,0x9E,0x32,0xF8,0x9F,0x2D,0xF8,0xFD,0x0A,0xF9, +0xFE,0x6D,0xF8,0xFF,0x37,0xF8,0x40,0x00,0x20,0x60,0x20,0x40,0x00,0x60,0x6C,0x6A, +0x3B,0x80,0x80,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D,0x3D,0x76,0x80, +0x63,0x80,0x80,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32,0x31,0x2C,0x20, +0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77,0x71,0x39,0x80, +0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73,0x61,0x4C,0x4A, +0x3A,0x80,0x80,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F,0x7C,0x56,0x80, +0x43,0x80,0x80,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22,0x21,0x5B,0x20, +0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57,0x51,0x28,0x80, +0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53,0x41,0x0C,0x0A, +0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C,0x1D,0x16,0x80, +0x03,0x80,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD,0x80,0x00,0x20, +0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17,0x11,0x80,0x80, +0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13,0x01,0xAD,0x09, +0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAD,0xF1,0x02,0xD0,0x20,0xAD,0x09,0xD2,0xC9,0x9F, +0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x0F,0x8D,0xFC,0x02,0x8D, +0xF2,0x02,0xA9,0x03,0x8D,0xF1,0x02,0xA9,0x00,0x85,0x4D,0xA9,0x30,0x8D,0x2B,0x02, +0x68,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x57,0xB4,0xE7,0x77,0xE4,0xF3,0xE6, +}; diff --git a/MCUME_esp32/esp800/main/romatariosb.h b/MCUME_esp32/esp800/main/romatariosb.h new file mode 100644 index 0000000..5edff0a --- /dev/null +++ b/MCUME_esp32/esp800/main/romatariosb.h @@ -0,0 +1,642 @@ +const UBYTE romos[10240] = { +0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2, +0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0, +0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1, +0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18, +0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B, +0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86, +0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48, +0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65, +0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF, +0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85, +0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB, +0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03, +0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED, +0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4, +0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4, +0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20, +0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0, +0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60, +0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9, +0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82, +0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85, +0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00, +0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00, +0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20, +0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18, +0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09, +0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5, +0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4, +0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C, +0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62, +0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5, +0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0, +0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32, +0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7, +0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01, +0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5, +0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA, +0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60, +0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F, +0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4, +0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5, +0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10, +0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5, +0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90, +0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00, +0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5, +0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0, +0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7, +0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD, +0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04, +0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4, +0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5, +0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05, +0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90, +0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9, +0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4, +0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62, +0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2, +0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4, +0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94, +0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68, +0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02, +0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18, +0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60, +0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00, +0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA, +0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01, +0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0, +0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8, +0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95, +0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60, +0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5, +0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0, +0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99, +0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0, +0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F, +0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5, +0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60, +0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB, +0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA, +0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2, +0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00, +0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00, +0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60, +0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28, +0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6, +0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2, +0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1, +0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC, +0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00, +0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60, +0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1, +0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10, +0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5, +0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD, +0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20, +0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10, +0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40, +0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD, +0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94, +0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E, +0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27, +0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15, +0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40, +0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7, +0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20, +0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0, +0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0x10,0x02,0x38,0x60,0xA5,0xD4,0x85,0xE0,0x38, +0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6, +0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28, +0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20, +0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6, +0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20, +0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49, +0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05, +0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98, +0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00, +0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39, +0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64, +0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12, +0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16, +0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16, +0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29, +0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19, +0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99, +0x3F,0x78,0x53,0x98,0x16,0x34,0x98,0x16,0x34,0xFC,0xE0,0x32,0x50,0xD9,0x68,0x11, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00, +0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18, +0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03, +0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F, +0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00, +0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, +0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18, +0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18, +0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0xFB,0xF3,0x33,0xF6,0x3D,0xF6,0xA3,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00, +0xF5,0xF3,0x33,0xF6,0x92,0xF5,0xB6,0xF5,0x33,0xF6,0xFB,0xFC,0x4C,0xE4,0xF3,0x00, +0x33,0xF6,0x33,0xF6,0xE1,0xF6,0x3C,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00, +0x9E,0xEE,0xDB,0xEE,0x9D,0xEE,0xA6,0xEE,0x80,0xEE,0x9D,0xEE,0x4C,0x78,0xEE,0x00, +0x4B,0xEF,0x2A,0xF0,0xD5,0xEF,0x0F,0xF0,0x27,0xF0,0x4A,0xEF,0x4C,0x41,0xEF,0x00, +0x4C,0xEA,0xED,0x4C,0xF0,0xED,0x4C,0xC4,0xE4,0x4C,0x59,0xE9,0x4C,0xED,0xE8,0x4C, +0xAE,0xE7,0x4C,0x05,0xE9,0x4C,0x44,0xE9,0x4C,0xF2,0xEB,0x4C,0xD5,0xE6,0x4C,0xA6, +0xE4,0x4C,0x23,0xF2,0x4C,0x1B,0xF1,0x4C,0x25,0xF1,0x4C,0xE9,0xEF,0x4C,0x5D,0xEF, +0x90,0xE7,0x8F,0xE7,0x8F,0xE7,0x8F,0xE7,0xBE,0xFF,0x0F,0xEB,0x90,0xEA,0xCF,0xEA, +0x8F,0xE7,0x8F,0xE7,0x8F,0xE7,0x06,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xAE,0xE7,0x05,0xE9,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xC0,0x9D, +0x46,0x03,0xA9,0xE4,0x9D,0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8, +0x60,0xA0,0x85,0x60,0x85,0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90, +0x05,0xA0,0x86,0x4C,0x1B,0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8, +0xC0,0x0C,0x90,0xF4,0xA0,0x84,0xA5,0x22,0xC9,0x03,0x90,0x25,0xA8,0xC0,0x0E,0x90, +0x02,0xA0,0x0E,0x84,0x17,0xB9,0xC6,0xE6,0xF0,0x0F,0xC9,0x02,0xF0,0x35,0xC9,0x08, +0xB0,0x4C,0xC9,0x04,0xF0,0x63,0x4C,0xC9,0xE5,0xA5,0x20,0xC9,0xFF,0xF0,0x05,0xA0, +0x81,0x4C,0x1B,0xE6,0x20,0x9E,0xE6,0xB0,0xF8,0x20,0x3D,0xE6,0xB0,0xF3,0x20,0x89, +0xE6,0xA9,0x0B,0x85,0x17,0x20,0x3D,0xE6,0xA5,0x2C,0x85,0x26,0xA5,0x2D,0x85,0x27, +0x4C,0x1D,0xE6,0xA0,0x01,0x84,0x23,0x20,0x3D,0xE6,0xB0,0x03,0x20,0x89,0xE6,0xA9, +0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27,0xA9,0xC0,0x85,0x26,0x4C,0x1D,0xE6,0xA5,0x20, +0xC9,0xFF,0xD0,0x05,0x20,0x9E,0xE6,0xB0,0xB8,0x20,0x3D,0xE6,0x20,0x89,0xE6,0xA6, +0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x83,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20, +0x89,0xE6,0x85,0x2F,0x4C,0x1D,0xE6,0x20,0x89,0xE6,0x85,0x2F,0x30,0x35,0xA0,0x00, +0x91,0x24,0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0, +0x06,0x20,0x63,0xE6,0x4C,0xC3,0xE5,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02, +0xD0,0x11,0x20,0x89,0xE6,0x85,0x2F,0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9, +0x89,0x85,0x23,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x87,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x06,0xA5, +0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F,0x20,0x89,0xE6,0x30,0x25, +0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20, +0x63,0xE6,0x4C,0x15,0xE6,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x05, +0xA9,0x9B,0x20,0x89,0xE6,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0x84,0x23,0xA4,0x2E,0xB9, +0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00,0xB5,0x20,0x99,0x40,0x03, +0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F,0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0, +0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9,0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85, +0x2D,0xA4,0x17,0xB9,0xC6,0xE6,0xA8,0xB1,0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86, +0x2C,0x18,0x60,0xC6,0x28,0xA5,0x28,0xC9,0xFF,0xD0,0x02,0xC6,0x29,0x05,0x29,0x60, +0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28,0x85, +0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0x93,0xE6,0x84,0x23, +0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0xA0,0x00, +0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x0A,0x88,0x88,0x88,0x10,0xF6, +0xA0,0x82,0x38,0xB0,0x13,0x98,0x85,0x20,0x38,0xA0,0x01,0xB1,0x24,0xE9,0x30,0xC9, +0x0A,0x90,0x02,0xA9,0x01,0x85,0x21,0x18,0x60,0x00,0x04,0x04,0x04,0x04,0x06,0x06, +0x06,0x06,0x02,0x08,0x0A,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x38,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0xEA,0xEA,0xEA,0xA9,0x3C,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0x60,0x6C,0x16,0x02,0x80,0x40,0x04,0x02,0x01,0x08,0x10,0x20,0x36,0x08, +0x14,0x12,0x10,0x0E,0x0C,0x0A,0x48,0xAD,0x0E,0xD2,0x29,0x20,0xD0,0x0D,0xA9,0xDF, +0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0A,0x02,0x8A,0x48,0xA2,0x06,0xBD, +0xF6,0xE6,0xE0,0x05,0xD0,0x04,0x25,0x10,0xF0,0x05,0x2C,0x0E,0xD2,0xF0,0x06,0xCA, +0x10,0xED,0x4C,0x62,0xE7,0x49,0xFF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0xBD, +0xFE,0xE6,0xAA,0xBD,0x00,0x02,0x8D,0x8C,0x02,0xBD,0x01,0x02,0x8D,0x8D,0x02,0x68, +0xAA,0x6C,0x8C,0x02,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85,0x4D, +0x68,0x40,0x68,0xAA,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C, +0x03,0xD3,0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x68,0x8D,0x8C,0x02,0x68,0x48, +0x29,0x10,0xF0,0x07,0xAD,0x8C,0x02,0x48,0x6C,0x06,0x02,0xAD,0x8C,0x02,0x48,0x68, +0x40,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02,0x48,0xAD,0x0F,0xD4,0x29,0x20,0xF0, +0x03,0x4C,0x74,0xE4,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22,0x02,0xE6,0x14, +0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE,0xA2,0x00,0xA4,0x4D, +0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F,0xA2,0x00,0x20,0xD0, +0xE8,0xD0,0x03,0x20,0xCA,0xE8,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04,0x01,0x29,0x04, +0xF0,0x03,0x4C,0x05,0xE9,0xAD,0x0D,0xD4,0x8D,0x35,0x02,0xAD,0x0C,0xD4,0x8D,0x34, +0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02,0x8D,0x02,0xD4,0xAD,0x2F,0x02, +0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xA2,0x08,0x8E,0x1F,0xD0,0x58,0xBD, +0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D,0x12,0xD0,0xCA,0x10,0xF2,0xAD,0xF4,0x02,0x8D, +0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01,0xD4,0xA2,0x02,0x20,0xD0,0xE8,0xD0,0x03,0x20, +0xCD,0xE8,0xA2,0x02,0xE8,0xE8,0xBD,0x18,0x02,0x1D,0x19,0x02,0xF0,0x06,0x20,0xD0, +0xE8,0x9D,0x26,0x02,0xE0,0x08,0xD0,0xEC,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0x08,0xAD, +0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02,0xAD,0x2B,0x02,0xF0,0x17,0xAD,0x0F,0xD2,0x29, +0x04,0xD0,0x60,0xCE,0x2B,0x02,0xD0,0x0B,0xA9,0x06,0x8D,0x2B,0x02,0xAD,0x09,0xD2, +0x8D,0xFC,0x02,0xA0,0x01,0xA2,0x03,0xB9,0x00,0xD3,0x4A,0x4A,0x4A,0x4A,0x9D,0x78, +0x02,0xCA,0xB9,0x00,0xD3,0x29,0x0F,0x9D,0x78,0x02,0xCA,0x88,0x10,0xE9,0xA2,0x03, +0xBD,0x10,0xD0,0x9D,0x84,0x02,0xBD,0x00,0xD2,0x9D,0x70,0x02,0xBD,0x04,0xD2,0x9D, +0x74,0x02,0xCA,0x10,0xEB,0x8D,0x0B,0xD2,0xA2,0x06,0xA0,0x03,0xB9,0x78,0x02,0x4A, +0x4A,0x4A,0x9D,0x7D,0x02,0xA9,0x00,0x2A,0x9D,0x7C,0x02,0xCA,0xCA,0x88,0x10,0xEC, +0x6C,0x24,0x02,0xA9,0x00,0x8D,0x2B,0x02,0xF0,0xA9,0x6C,0x26,0x02,0x6C,0x28,0x02, +0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE,0x19,0x02,0xDE,0x18,0x02, +0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9,0xFF,0x60,0x0A,0x8D,0x2D, +0x02,0x8A,0xA2,0x05,0x8D,0x0A,0xD4,0xCA,0xD0,0xFD,0xAE,0x2D,0x02,0x9D,0x17,0x02, +0x98,0x9D,0x16,0x02,0x60,0x68,0xA8,0x68,0xAA,0x68,0x40,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x4C,0xED,0xE8,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0xA9,0x3C,0x8D,0x02,0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03, +0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2,0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85, +0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03,0x4C,0x80,0xEB,0xA9,0x00,0x8D,0x0F,0x03, +0xA9,0x01,0x85,0x37,0xA9,0x0D,0x85,0x36,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D, +0x06,0xD2,0x18,0xAD,0x00,0x03,0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02, +0x03,0x8D,0x3B,0x02,0xAD,0x0A,0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02, +0x18,0xA9,0x3A,0x85,0x32,0x69,0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9, +0x34,0x8D,0x03,0xD3,0x20,0x8A,0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x07,0xC6, +0x36,0x10,0xB5,0x4C,0x06,0xEA,0xAD,0x03,0x03,0x10,0x0C,0xA9,0x0D,0x85,0x36,0x20, +0x6A,0xEB,0x20,0x8A,0xEC,0xF0,0xE8,0x20,0x75,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20, +0x9B,0xEC,0xF0,0x12,0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1D, +0x20,0x6A,0xEB,0x20,0xE0,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30, +0xA5,0x30,0xC9,0x01,0xF0,0x07,0xC6,0x37,0x30,0x03,0x4C,0x74,0xE9,0x20,0x5F,0xEC, +0xA9,0x00,0x85,0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18, +0xA9,0x3E,0x85,0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF, +0x85,0x3C,0x20,0xE0,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02, +0xC9,0x41,0xF0,0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30, +0xD0,0x04,0xA9,0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F, +0x02,0xD0,0x02,0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20, +0xF2,0xEB,0xA0,0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85, +0x31,0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x5F,0xEC,0x60, +0x98,0x48,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35, +0x90,0x1C,0xA5,0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85,0x3B,0xD0, +0x09,0xA5,0x10,0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40,0xA0,0x00, +0xB1,0x32,0x8D,0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xBA,0xEA,0xA5, +0x3B,0xF0,0x0B,0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2,0x68,0x40, +0xA9,0x00,0xAC,0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9,0x01,0x85, +0x30,0x20,0x1B,0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED, +0xAD,0x17,0x03,0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30,0x60,0x98, +0x48,0xAD,0x0F,0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29,0x20,0xD0, +0x04,0xA0,0x8E,0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31,0xF0,0x04, +0xA0,0x8F,0x84,0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D,0xD2,0xA0, +0x00,0x91,0x32,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02,0xE6,0x33, +0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35,0x90,0xDE,0xA5,0x3C,0xF0,0x06,0xA9,0x00, +0x85,0x3C,0xF0,0xD0,0xA9,0xFF,0x85,0x38,0xD0,0xCE,0x18,0xAD,0x04,0x03,0x85,0x32, +0x6D,0x08,0x03,0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09,0x03,0x85,0x35,0x60, +0xAD,0x03,0x03,0x10,0x2E,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0x20, +0xF2,0xEB,0xA0,0x0F,0xAD,0x0B,0x03,0x30,0x02,0xA0,0xB4,0xA2,0x00,0x20,0xB9,0xED, +0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x6A,0xEB,0x20,0x6B,0xEA, +0x4C,0xDF,0xEB,0xA9,0xFF,0x8D,0x0F,0x03,0xA0,0x0A,0xAD,0x0B,0x03,0x30,0x02,0xA0, +0x78,0xA2,0x00,0x20,0xB9,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB, +0x20,0x6A,0xEB,0x20,0x75,0xEC,0x20,0xB9,0xED,0x20,0x10,0xED,0x20,0xE0,0xEA,0xAD, +0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x0D,0xEA,0xA9,0x00,0x8D,0x17, +0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00,0x03,0xC0,0x60,0xD0,0x0C, +0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00,0xD2,0x8D,0x32,0x02,0x8D, +0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x31,0xEC,0xA9,0x07,0x2D,0x32,0x02, +0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2,0xA9,0xC7,0x25,0x10,0x09, +0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA2,0x06,0xA9,0xA8,0xA4, +0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0xA9,0xA0,0x8D,0x05, +0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2,0x8D,0x03,0xD2,0x60,0xEA, +0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06,0xA9,0x00,0x9D,0x01,0xD2, +0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8,0x29,0x3F,0xAA,0x98,0x6A, +0x29,0xC0,0xA8,0x60,0x0F,0xEB,0x90,0xEA,0xCF,0xEA,0xA2,0x01,0xA0,0xFF,0x88,0xD0, +0xFD,0xCA,0xD0,0xF8,0x20,0x6B,0xEA,0xA0,0x02,0xA2,0x00,0x20,0xB9,0xED,0x20,0x1A, +0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x04,0xED,0x8D,0x10,0x03,0xAD, +0x0C,0x03,0x20,0x04,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03,0x38,0xED,0x0C,0x03,0x8D, +0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA9,0x7D,0x18,0x69,0x83,0x88, +0x10,0xFA,0x18,0x6D,0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38,0xE9,0x16,0xAA,0x98, +0x29,0x07,0xA8,0xA9,0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0,0x00,0x8C,0x0E,0x03, +0x38,0xE9,0x07,0x10,0x03,0xCE,0x0E,0x03,0x18,0x7D,0xD0,0xED,0xA8,0xAD,0x0E,0x03, +0x7D,0xD1,0xED,0x60,0xC9,0x7C,0x30,0x04,0x38,0xE9,0x7C,0x60,0x18,0x69,0x07,0x60, +0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,0x78,0xAD,0x17,0x03,0xD0,0x02,0xF0,0x25,0xAD, +0x0F,0xD2,0x29,0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4,0xA4,0x14,0x8E,0x0C, +0x03,0x8C,0x0D,0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5,0x11,0xF0,0x61,0xAD, +0x17,0x03,0xD0,0x04,0x58,0x4C,0x0A,0xEB,0xAD,0x0F,0xD2,0x29,0x10,0xCD,0x16,0x03, +0xF0,0xE9,0x8D,0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30,0x12,0xAD,0x0B,0xD4, +0xA4,0x14,0x20,0xA3,0xEC,0x8C,0xEE,0x02,0x8D,0xEF,0x02,0xA0,0x09,0xD0,0xCC,0xAD, +0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D,0x06,0xD2,0xA9,0x00,0x8D,0x0F,0xD2, +0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91,0x32,0xC8,0x91,0x32,0xA9,0xAA,0x85, +0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5,0x33,0x69,0x00,0x85,0x33,0x58,0x60, +0x20,0x5F,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xA9,0x80,0x85,0x30,0xAE, +0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C,0x0D,0xEA,0xA9,0xEC,0x8D,0x26,0x02,0xA9,0xEB, +0x8D,0x27,0x02,0xA9,0x01,0x78,0x20,0x5C,0xE4,0xA9,0x01,0x8D,0x17,0x03,0x58,0x60, +0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9,0x04,0x54,0x05,0xAF,0x05,0x0A,0x06,0x65,0x06, +0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0,0x07,0x24,0x85,0xA9,0xA0,0x8D,0x46,0x02,0x60, +0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21,0xF0,0x02,0xA9, +0x07,0x8D,0x06,0x03,0xA2,0x40,0xA0,0x80,0xAD,0x02,0x03,0xC9,0x57,0xD0,0x02,0xA2, +0x80,0xC9,0x53,0xD0,0x0C,0xA9,0xEA,0x8D,0x04,0x03,0xA9,0x02,0x8D,0x05,0x03,0xA0, +0x04,0x8E,0x03,0x03,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10, +0x01,0x60,0xAD,0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x6D,0xEE,0xA0,0x02,0xB1,0x15, +0x8D,0x46,0x02,0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x6D,0xEE,0xA0,0xFE,0xC8, +0xC8,0xB1,0x15,0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88, +0x88,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03, +0x85,0x15,0xAD,0x05,0x03,0x85,0x16,0x60,0xA9,0x1E,0x85,0x1C,0x60,0xEA,0x02,0xC0, +0x03,0xA9,0x04,0x85,0x1E,0xAE,0x7D,0xEE,0xAC,0x7E,0xEE,0xA9,0x53,0x8D,0x02,0x03, +0x8D,0x0A,0x03,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x30,0x03,0x20,0x14,0xEF,0x60,0x20, +0x81,0xEE,0xA9,0x00,0x85,0x1D,0x60,0x85,0x1F,0x20,0x1A,0xEF,0xA6,0x1D,0xA5,0x1F, +0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xF0,0x13,0x86,0x1D,0xC9,0x9B,0xF0,0x03,0xA0,0x01, +0x60,0xA9,0x20,0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xD0,0xF8,0xA9,0x00,0x85,0x1D,0xAE, +0x7F,0xEE,0xAC,0x80,0xEE,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x60,0x20,0x1A,0xEF,0xA6, +0x1D,0xD0,0xDE,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00, +0x03,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9, +0x40,0x8D,0x03,0x03,0xA5,0x1E,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA5,0x1C, +0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x85,0x1C,0x60,0xA0,0x57,0xA5,0x2B,0xC9,0x4E, +0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9,0x53, +0xD0,0x0B,0xA2,0x1D,0x86,0x1E,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9,0x4E,0xD0, +0xDD,0xA9,0xCC,0x8D,0xEE,0x02,0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E, +0xA5,0x2A,0x29,0x0C,0xC9,0x04,0xF0,0x05,0xC9,0x08,0xF0,0x39,0x60,0xA9,0x00,0x8D, +0x89,0x02,0x85,0x3F,0xA9,0x01,0x20,0x58,0xF0,0x30,0x24,0xA9,0x34,0x8D,0x02,0xD3, +0xA0,0x40,0xA2,0x02,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0, +0xFB,0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0xD3,0xEF,0xA0,0x80,0xC6,0x11,0xA9, +0x00,0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0x58,0xF0,0x30, +0xEE,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03, +0x20,0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA9,0x03,0xA2,0x04,0xA0,0x80,0x20,0x5C, +0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xC1,0xAD,0x2A,0x02,0xD0,0xF7,0xA9, +0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D,0xEC,0x8A,0x02,0xF0, +0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20,0x95,0xF0,0x98,0x30, +0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE,0xF0,0x0D,0xC9,0xFA, +0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0xD6,0xEF,0xC6,0x3F,0xA0,0x88,0x60, +0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0,0x01,0x60,0xA9,0xFC, +0x20,0xD2,0xF0,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD,0x89,0x02,0x30,0x08, +0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A,0x8E,0x7F,0x04,0xA9, +0xFA,0x20,0xD2,0xF0,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00,0x04,0xCA,0x10,0xFA, +0xA9,0xFE,0x20,0xD2,0xF0,0x4C,0x32,0xF0,0x85,0x40,0xA5,0x14,0x18,0x69,0x1E,0xAA, +0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0,0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0, +0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6,0x40,0xF0,0x0B,0x8A,0x18,0x69,0x0A, +0xAA,0xE4,0x14,0xD0,0xFC,0xF0,0xD3,0x20,0x8C,0xF0,0x98,0x60,0xAD,0x25,0xE4,0x48, +0xAD,0x24,0xE4,0x48,0x60,0x8D,0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D, +0x08,0x03,0xA9,0x03,0x8D,0x05,0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00, +0x03,0xA9,0x00,0x8D,0x01,0x03,0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40, +0xC9,0x52,0xF0,0x02,0xA0,0x80,0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59, +0xE4,0x60,0x8D,0xFF,0x03,0xA9,0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20, +0x95,0xF0,0x60,0x50,0x30,0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B, +0x20,0xE4,0x7D,0x41,0x54,0x41,0x52,0x49,0x20,0x43,0x4F,0x4D,0x50,0x55,0x54,0x45, +0x52,0x20,0x2D,0x20,0x4D,0x45,0x4D,0x4F,0x20,0x50,0x41,0x44,0x9B,0x42,0x4F,0x4F, +0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0x78,0xAD,0x44,0x02,0xD0, +0x04,0xA9,0xFF,0xD0,0x03,0x78,0xA9,0x00,0x85,0x08,0xD8,0xA2,0xFF,0x9A,0x20,0x44, +0xF2,0x20,0x77,0xF2,0xA5,0x08,0xD0,0x28,0xA9,0x00,0xA0,0x08,0x85,0x04,0x85,0x05, +0x91,0x04,0xC8,0xC0,0x00,0xD0,0xF9,0xE6,0x05,0xA6,0x05,0xE4,0x06,0xD0,0xF1,0xAD, +0x72,0xE4,0x85,0x0A,0xAD,0x73,0xE4,0x85,0x0B,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x13, +0xA2,0x00,0x8A,0x9D,0x00,0x02,0x9D,0x00,0x03,0xCA,0xD0,0xF7,0xA2,0x10,0x95,0x00, +0xE8,0x10,0xFB,0xA9,0x02,0x85,0x52,0xA9,0x27,0x85,0x53,0xA2,0x25,0xBD,0x80,0xE4, +0x9D,0x00,0x02,0xCA,0x10,0xF7,0x20,0x8A,0xF2,0x58,0xA2,0x0E,0xBD,0xE3,0xF0,0x9D, +0x1A,0x03,0xCA,0x10,0xF7,0xA2,0x00,0x86,0x07,0x86,0x06,0xAE,0xE4,0x02,0xE0,0x90, +0xB0,0x0A,0xAD,0xFC,0x9F,0xD0,0x05,0xE6,0x07,0x20,0x3C,0xF2,0xAE,0xE4,0x02,0xE0, +0xB0,0xB0,0x0A,0xAE,0xFC,0xBF,0xD0,0x05,0xE6,0x06,0x20,0x39,0xF2,0xA9,0x03,0xA2, +0x00,0x9D,0x42,0x03,0xA9,0x18,0x9D,0x44,0x03,0xA9,0xF1,0x9D,0x45,0x03,0xA9,0x0C, +0x9D,0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0x25,0xF1,0xE8,0xD0,0xFD,0xC8,0x10, +0xFA,0x20,0xB2,0xF3,0xA5,0x06,0x05,0x07,0xF0,0x12,0xA5,0x06,0xF0,0x03,0xAD,0xFD, +0xBF,0xA6,0x07,0xF0,0x03,0x0D,0xFD,0x9F,0x29,0x01,0xF0,0x03,0x20,0xCF,0xF2,0xA9, +0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29,0x04,0xF0,0x03,0x6C, +0xFA,0xBF,0xA5,0x07,0xF0,0x0A,0xAD,0xFD,0x9F,0x29,0x04,0xF0,0xDF,0x6C,0xFA,0x9F, +0x6C,0x0A,0x00,0xA2,0xF2,0xA0,0xF0,0x20,0x85,0xF3,0x20,0x30,0xF2,0x4C,0x2A,0xF2, +0xAD,0x05,0xE4,0x48,0xAD,0x04,0xE4,0x48,0x60,0x6C,0xFE,0xBF,0x6C,0xFE,0x9F,0xC9, +0xD0,0xD0,0x1C,0x60,0xEE,0xFC,0xBF,0xAD,0xFC,0xBF,0xD0,0x08,0xAD,0xFD,0xBF,0x10, +0x03,0x6C,0xFE,0xBF,0xCE,0xFC,0xBF,0xA0,0x00,0x84,0x05,0xA9,0x10,0x85,0x06,0xB1, +0x05,0x49,0xFF,0x91,0x05,0xD1,0x05,0xD0,0xDA,0x49,0xFF,0x91,0x05,0xA5,0x06,0x18, +0x69,0x10,0x85,0x06,0x4C,0x3F,0xF2,0xA9,0x00,0xAA,0x9D,0x00,0xD0,0x9D,0x00,0xD4, +0x9D,0x00,0xD2,0xEA,0xEA,0xEA,0xE8,0xD0,0xF1,0x60,0xC6,0x11,0xA9,0x54,0x8D,0x36, +0x02,0xA9,0xE7,0x8D,0x37,0x02,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00, +0x8D,0xE5,0x02,0xA9,0x00,0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4, +0x20,0x1C,0xE4,0x20,0x2C,0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20, +0x65,0xE4,0x20,0x6B,0xE4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0x02,0xE6,0x4A,0x60,0xA5, +0x08,0xF0,0x0A,0xA5,0x09,0x29,0x01,0xF0,0x03,0x20,0x7E,0xF3,0x60,0xA9,0x01,0x8D, +0x01,0x03,0xA9,0x53,0x8D,0x02,0x03,0x20,0x53,0xE4,0x10,0x01,0x60,0xA9,0x00,0x8D, +0x0B,0x03,0xA9,0x01,0x8D,0x0A,0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05, +0x03,0x20,0x9D,0xF3,0x10,0x08,0x20,0x81,0xF3,0xA5,0x4B,0xF0,0xE0,0x60,0xA2,0x03, +0xBD,0x00,0x04,0x9D,0x40,0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43, +0x02,0x85,0x05,0xAD,0x04,0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9, +0x00,0x04,0x91,0x04,0x88,0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05, +0x69,0x00,0x85,0x05,0xCE,0x41,0x02,0xF0,0x11,0xEE,0x0A,0x03,0x20,0x9D,0xF3,0x10, +0xDC,0x20,0x81,0xF3,0xA5,0x4B,0xD0,0xAE,0xF0,0xF2,0xA5,0x4B,0xF0,0x03,0x20,0x9D, +0xF3,0x20,0x6C,0xF3,0xB0,0xA0,0x20,0x7E,0xF3,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02, +0x69,0x06,0x85,0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C, +0x00,0xA2,0x0D,0xA0,0xF1,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9, +0x09,0x9D,0x42,0x03,0xA9,0xFF,0x9D,0x48,0x03,0x20,0x56,0xE4,0x60,0xA5,0x4B,0xF0, +0x03,0x4C,0x7A,0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x20,0x53, +0xE4,0x60,0xA5,0x08,0xF0,0x0A,0xA5,0x09,0x29,0x02,0xF0,0x03,0x20,0xE1,0xF3,0x60, +0xA5,0x4A,0xF0,0x1C,0xA9,0x80,0x85,0x3E,0xE6,0x4B,0x20,0x7D,0xE4,0x20,0x01,0xF3, +0xA9,0x00,0x85,0x4B,0x85,0x4A,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03, +0x60,0x6C,0x02,0x00,0xA9,0xFF,0x8D,0xFC,0x02,0xAD,0xE6,0x02,0x29,0xF0,0x85,0x6A, +0xA9,0x40,0x8D,0xBE,0x02,0x60,0xA5,0x2B,0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F, +0x85,0x2A,0xA9,0x00,0x85,0x57,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0x02,0x8D,0xF3,0x02, +0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05,0x10,0x85,0x10,0x8D,0x0E,0xD2, +0xA9,0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01, +0x99,0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0xC1,0xFE,0x9D,0xC4,0x02,0xCA,0x10, +0xF7,0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x69, +0xFE,0xD0,0x04,0xA9,0x91,0x85,0x4C,0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x45,0xFE, +0xA9,0x28,0x20,0x21,0xF9,0x88,0xD0,0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8, +0xE0,0x08,0x90,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10,0x20, +0x21,0xF9,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5,0x64, +0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x1F,0xF9, +0xBD,0x75,0xFE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0xA5,0x64,0x85,0x68,0xA5, +0x65,0x85,0x69,0x20,0x13,0xF9,0xA9,0x41,0x20,0x17,0xF9,0x86,0x66,0xA9,0x18,0x8D, +0xBF,0x02,0xA5,0x57,0xC9,0x09,0xB0,0x2D,0xA5,0x2A,0x29,0x10,0xF0,0x27,0xA9,0x04, +0x8D,0xBF,0x02,0xA2,0x02,0xA9,0x02,0x20,0x17,0xF9,0xCA,0x10,0xF8,0xA4,0x6A,0x88, +0x98,0x20,0x17,0xF9,0xA9,0x60,0x20,0x17,0xF9,0xA9,0x42,0x20,0x17,0xF9,0x18,0xA9, +0x0C,0x65,0x66,0x85,0x66,0xA4,0x66,0xBE,0x51,0xFE,0xA5,0x51,0x20,0x17,0xF9,0xCA, +0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x1C,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20, +0x17,0xF9,0xA9,0x00,0x20,0x17,0xF9,0xA9,0x4F,0x20,0x17,0xF9,0xA5,0x51,0x20,0x17, +0xF9,0xCA,0xD0,0xF8,0xA5,0x59,0x20,0x17,0xF9,0xA5,0x58,0x20,0x17,0xF9,0xA5,0x51, +0x09,0x40,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA5, +0x64,0x8D,0x30,0x02,0xA5,0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x17,0xF9,0xA5,0x64, +0x8D,0xE5,0x02,0xA5,0x65,0x8D,0xE6,0x02,0xA5,0x68,0x85,0x64,0xA5,0x69,0x85,0x65, +0xAD,0x31,0x02,0x20,0x17,0xF9,0xAD,0x30,0x02,0x20,0x17,0xF9,0xA5,0x4C,0x10,0x07, +0x48,0x20,0xFC,0xF3,0x68,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0xB9,0xF7, +0x8D,0x90,0x02,0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02, +0x4C,0x21,0xF6,0x20,0x96,0xFA,0x20,0xA2,0xF5,0x20,0x32,0xFB,0x20,0xD4,0xF9,0x4C, +0x34,0xF6,0x20,0x47,0xF9,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10, +0xF9,0x8D,0xFA,0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0x20,0x96,0xFA,0xAD,0xFB,0x02, +0xC9,0x7D,0xD0,0x06,0x20,0xB9,0xF7,0x4C,0x21,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0, +0x06,0x20,0x30,0xFA,0x4C,0x21,0xF6,0x20,0xE0,0xF5,0x20,0xD8,0xF9,0x4C,0x21,0xF6, +0xAD,0xFF,0x02,0xD0,0xFB,0xA2,0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB, +0x02,0xA8,0x2A,0x2A,0x2A,0x2A,0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0xF6,0xFE,0x8D, +0xFA,0x02,0x20,0x47,0xF9,0xAD,0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0x08,0xF6, +0x2D,0xA0,0x02,0x85,0x50,0xAD,0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64, +0x60,0x20,0xA2,0xF5,0x85,0x5D,0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49, +0x80,0x20,0xFF,0xF5,0xA4,0x4C,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x20,0xB3, +0xFC,0x20,0x88,0xFA,0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D, +0x20,0xE2,0xF6,0x84,0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xAD,0xF6,0x20, +0xB3,0xFC,0xA5,0x63,0xC9,0x71,0xD0,0x03,0x20,0x0A,0xF9,0x4C,0x50,0xF6,0x20,0xE4, +0xFA,0x20,0x00,0xFC,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11, +0xC6,0x6B,0xF0,0x0D,0xA5,0x4C,0x30,0xF8,0x20,0x93,0xF5,0x8D,0xFB,0x02,0x4C,0xB3, +0xFC,0x20,0x30,0xFA,0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x21,0xF6,0x84,0x4C,0x4C,0xB3, +0xFC,0x6C,0x64,0x00,0x8D,0xFB,0x02,0x20,0xB3,0xFC,0x20,0x88,0xFA,0x20,0xE4,0xFA, +0x20,0x8D,0xFC,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xCA,0xF5,0x4C,0xB3,0xFC,0xAD,0xFE, +0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xBD,0xC6,0xFE,0x85,0x64,0xBD, +0xC7,0xFE,0x85,0x65,0x20,0xA1,0xF6,0x20,0x21,0xF6,0x4C,0xB3,0xFC,0xA9,0xFF,0x8D, +0xFC,0x02,0xA5,0x2A,0x4A,0xB0,0x62,0xA9,0x80,0xA6,0x11,0xF0,0x58,0xAD,0xFC,0x02, +0xC9,0xFF,0xF0,0xEE,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0x20,0xD8,0xFC,0xAA,0xE0, +0xC0,0x90,0x02,0xA2,0x03,0xBD,0xFE,0xFE,0x8D,0xFB,0x02,0xC9,0x80,0xF0,0xCE,0xC9, +0x81,0xD0,0x0B,0xAD,0xB6,0x02,0x49,0x80,0x8D,0xB6,0x02,0x4C,0xDD,0xF6,0xC9,0x82, +0xD0,0x07,0xA9,0x00,0x8D,0xBE,0x02,0xF0,0xB4,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D, +0xBE,0x02,0xD0,0xA9,0xC9,0x84,0xD0,0x07,0xA9,0x80,0x8D,0xBE,0x02,0xD0,0x9E,0xC9, +0x85,0xD0,0x0A,0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0xD0,0x26,0xA5,0x7C,0xC9, +0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90,0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE, +0x02,0xF0,0x05,0x05,0x7C,0x4C,0xFE,0xF6,0x20,0x8D,0xFC,0xF0,0x09,0xAD,0xFB,0x02, +0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x34,0xF6,0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6, +0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54,0x4C,0x5C,0xFC,0xE6,0x54,0xA5,0x54, +0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE,0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5, +0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0xDD,0xFB,0xE6,0x55,0xA5,0x55,0xC5,0x53, +0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0xA5,0xF7,0x20,0xF3,0xFC,0xA0,0x00,0x98,0x91, +0x64,0xC8,0xD0,0xFB,0xE6,0x65,0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2, +0x02,0xC8,0xC0,0x04,0x90,0xF8,0x20,0xE4,0xFC,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85, +0x54,0x85,0x56,0x85,0x6C,0x60,0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52, +0xD0,0x03,0x20,0x73,0xFC,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54, +0xF0,0x03,0x20,0x7F,0xF7,0xA9,0x20,0x8D,0xFB,0x02,0x20,0xE0,0xF5,0x4C,0xDD,0xFB, +0x20,0xAA,0xF7,0xA5,0x55,0xC5,0x52,0xD0,0x0A,0x20,0x34,0xFA,0x20,0x20,0xFB,0x90, +0x02,0xB0,0x07,0xA5,0x63,0x20,0x25,0xFB,0x90,0xE6,0x4C,0xDD,0xFB,0xA5,0x63,0x4C, +0x06,0xFB,0xA5,0x63,0x4C,0x12,0xFB,0x20,0x9D,0xFC,0x20,0xA2,0xF5,0x85,0x7D,0xA9, +0x00,0x8D,0xBB,0x02,0x20,0xFF,0xF5,0xA5,0x63,0x48,0x20,0xDC,0xF9,0x68,0xC5,0x63, +0xB0,0x0C,0xA5,0x7D,0x48,0x20,0xA2,0xF5,0x85,0x7D,0x68,0x4C,0x44,0xF8,0x20,0xA8, +0xFC,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54,0xD0,0xF7,0x4C,0xDD,0xFB,0x20,0x9D,0xFC, +0x20,0x47,0xF9,0xA5,0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0xD4, +0xF9,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54,0xCD,0xBF,0x02,0xB0,0x09,0x20,0xA2,0xF5, +0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00,0x98,0x91,0x68,0x20,0x68,0xFC,0x20,0xA8, +0xFC,0x4C,0xDD,0xFB,0x38,0x20,0x7B,0xFB,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0xA5, +0x64,0x85,0x68,0x18,0x69,0x28,0x85,0x66,0xA5,0x65,0x85,0x69,0x69,0x00,0x85,0x67, +0xA6,0x54,0xE0,0x17,0xF0,0x08,0x20,0x4E,0xFB,0xE8,0xE0,0x17,0xD0,0xF8,0x20,0x9B, +0xFB,0x4C,0xDD,0xFB,0x20,0xDD,0xFB,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20, +0x23,0xFB,0x08,0x98,0x18,0x69,0x78,0x28,0x20,0x04,0xFB,0xC8,0xC0,0x18,0xD0,0xED, +0xAD,0xB4,0x02,0x09,0x01,0x8D,0xB4,0x02,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0x20, +0xB7,0xFB,0x20,0x20,0xFB,0x90,0xD4,0x4C,0xDD,0xFB,0x60,0x20,0x20,0xD8,0xFC,0x88, +0x10,0xFA,0x60,0xA9,0x02,0xD0,0x0A,0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9, +0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30,0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64, +0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5,0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64, +0x90,0x04,0xA9,0x93,0x85,0x4C,0x60,0xA5,0x54,0x48,0xA5,0x55,0x48,0xA5,0x56,0x48, +0x20,0xF3,0xFC,0xA5,0x54,0x85,0x66,0xA9,0x00,0x85,0x67,0xA5,0x66,0x0A,0x26,0x67, +0x85,0x51,0xA4,0x67,0x8C,0x9F,0x02,0x0A,0x26,0x67,0x0A,0x26,0x67,0x18,0x65,0x51, +0x85,0x66,0xA5,0x67,0x6D,0x9F,0x02,0x85,0x67,0xA6,0x57,0xBC,0x81,0xFE,0x88,0x30, +0x07,0x06,0x66,0x26,0x67,0x4C,0x7E,0xF9,0xBC,0xA5,0xFE,0xA5,0x55,0xA2,0x07,0x88, +0x30,0x0A,0xCA,0x46,0x56,0x6A,0x6E,0xA1,0x02,0x4C,0x8F,0xF9,0xC8,0x18,0x65,0x66, +0x85,0x66,0x90,0x02,0xE6,0x67,0x38,0x6E,0xA1,0x02,0x18,0xCA,0x10,0xF9,0xAE,0xA1, +0x02,0xA5,0x66,0x18,0x65,0x64,0x85,0x64,0x85,0x5E,0xA5,0x67,0x65,0x65,0x85,0x65, +0x85,0x5F,0xBD,0xB1,0xFE,0x8D,0xA0,0x02,0x85,0x6F,0x68,0x85,0x56,0x68,0x85,0x55, +0x68,0x85,0x54,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B,0x85,0x7D,0xE6,0x63,0xE6,0x55, +0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x8D,0xFE,0xF0,0x0B,0xE0,0x00,0xD0, +0x06,0xC5,0x53,0xF0,0x02,0xB0,0x01,0x60,0xE0,0x08,0x90,0x04,0xA5,0x56,0xF0,0xF7, +0xA5,0x57,0xD0,0x30,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5,0x7D,0xF0,0x26,0x20,0x30, +0xFA,0x4C,0x77,0xFA,0x20,0x34,0xFA,0xA5,0x54,0x18,0x69,0x78,0x20,0x25,0xFB,0x90, +0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0xA5,0xF8,0x4C,0xDD,0xFB,0xA9,0x00,0xF0,0x02, +0xA9,0x9B,0x85,0x7D,0x20,0xE4,0xFC,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57,0xA0, +0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x99,0xFE,0xC5,0x54,0xD0, +0x26,0x8C,0x9D,0x02,0x8A,0xD0,0x20,0xA5,0x7D,0xF0,0x1C,0xC9,0x9B,0x38,0xF0,0x01, +0x18,0x20,0xAC,0xFB,0xEE,0xBB,0x02,0xC6,0x6C,0xCE,0x9D,0x02,0xAD,0xB2,0x02,0x38, +0x10,0xEF,0xAD,0x9D,0x02,0x85,0x54,0x4C,0xDD,0xFB,0x38,0xB5,0x70,0xE5,0x74,0x95, +0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9,0x04,0xF0,0x07,0xA5, +0x57,0xF0,0x03,0x20,0xFC,0xF3,0xA9,0x27,0xC5,0x53,0xB0,0x02,0x85,0x53,0xA6,0x57, +0xBD,0x99,0xFE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0,0x0A,0xA5,0x56,0xF0, +0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD,0x8D,0xFE,0xC5,0x55, +0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11,0x85,0x11,0xF0,0x06, +0x60,0x20,0xD6,0xF7,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B,0x10,0x03,0x20,0xB9, +0xFC,0x4C,0x34,0xF6,0xA0,0x00,0xA5,0x5D,0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD, +0xB9,0xFE,0x85,0x6E,0x68,0x4A,0x4A,0x4A,0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02, +0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0xEB,0xFA,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3, +0x02,0x60,0x20,0xEB,0xFA,0xA5,0x6E,0x49,0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60, +0xA5,0x54,0x18,0x69,0x78,0x20,0xEB,0xFA,0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01, +0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29, +0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0xFA,0xFE,0x8D,0xFB,0x02,0x60,0xA9,0x02, +0x85,0x65,0xA9,0x47,0x85,0x64,0xA0,0x27,0xB1,0x66,0x85,0x50,0xB1,0x68,0x91,0x66, +0xA5,0x50,0x91,0x64,0x88,0x10,0xF1,0xA5,0x65,0x85,0x69,0xA5,0x64,0x85,0x68,0x18, +0xA5,0x66,0x69,0x28,0x85,0x66,0x90,0x02,0xE6,0x67,0x60,0x08,0xA0,0x17,0x98,0x20, +0x22,0xFB,0x08,0x98,0x18,0x69,0x79,0x28,0x20,0x04,0xFB,0x88,0x30,0x04,0xC4,0x54, +0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C,0x04,0xFB,0xA5,0x52,0x85,0x55,0x20, +0x47,0xF9,0xA0,0x27,0xA9,0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0xFA,0xFA,0xA5, +0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0xA0,0x28,0xB1,0x64,0xA6,0x6A,0xCA,0xE4,0x65, +0xD0,0x08,0xA2,0xD7,0xE4,0x64,0xB0,0x02,0xA9,0x00,0xA0,0x00,0x91,0x64,0xE6,0x64, +0xD0,0xE5,0xE6,0x65,0xA5,0x65,0xC5,0x6A,0xD0,0xDD,0x4C,0xDD,0xFB,0xA9,0x00,0x85, +0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x22,0xFB,0xB0,0x0C,0xA5,0x63,0x18,0x69, +0x28,0x85,0x63,0xC6,0x51,0x4C,0xE5,0xFB,0x18,0xA5,0x63,0x65,0x55,0x85,0x63,0x60, +0x20,0x9D,0xFC,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9,0x01, +0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5,0x55, +0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0x39,0xFC,0x20,0xD4,0xF9,0xE6,0x6B,0xA5,0x63, +0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x99,0xF7,0x20,0xA2,0xF5,0xD0,0x17,0xC6,0x6B, +0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x02,0xC6, +0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x20,0xA8,0xFC,0x60,0x20,0xDD,0xFB,0xA5, +0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54, +0x20,0xDD,0xFB,0xA5,0x63,0xC5,0x52,0xF0,0x13,0x20,0x47,0xF9,0xA5,0x53,0x38,0xE5, +0x52,0xA8,0xB1,0x64,0xD0,0x06,0x88,0x10,0xF9,0x4C,0xDB,0xF8,0x60,0xA2,0x2D,0xBD, +0xC6,0xFE,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5, +0x54,0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA, +0x10,0xF8,0x60,0x20,0xB9,0xFC,0x4C,0x34,0xF6,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17, +0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90,0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10, +0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B,0x60,0xA2,0x7F,0x8E,0x1F,0xD0,0x8E,0x0A,0xD4, +0xCA,0x10,0xF7,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0,0x02,0xA5,0x52, +0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2,0x00,0xA5,0x22, +0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E,0xB7,0x02,0xA5, +0x54,0x85,0x60,0xA5,0x55,0x85,0x61,0xA5,0x56,0x85,0x62,0xA9,0x01,0x85,0x79,0x85, +0x7A,0x38,0xA5,0x60,0xE5,0x5A,0x85,0x76,0xB0,0x0D,0xA9,0xFF,0x85,0x79,0xA5,0x76, +0x49,0xFF,0x18,0x69,0x01,0x85,0x76,0x38,0xA5,0x61,0xE5,0x5B,0x85,0x77,0xA5,0x62, +0xE5,0x5C,0x85,0x78,0xB0,0x16,0xA9,0xFF,0x85,0x7A,0xA5,0x77,0x49,0xFF,0x85,0x77, +0xA5,0x78,0x49,0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00, +0x84,0x73,0x98,0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8, +0xA5,0x78,0x85,0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76, +0xA2,0x02,0xA8,0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70, +0xA5,0x7E,0x05,0x7F,0xD0,0x03,0x4C,0x42,0xFE,0x18,0xA5,0x70,0x65,0x76,0x85,0x70, +0x90,0x02,0xE6,0x71,0xA5,0x71,0xC5,0x75,0x90,0x14,0xD0,0x06,0xA5,0x70,0xC5,0x74, +0x90,0x0C,0x18,0xA5,0x54,0x65,0x79,0x85,0x54,0xA2,0x00,0x20,0x7A,0xFA,0x18,0xA5, +0x72,0x65,0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x27,0xD0, +0x06,0xA5,0x72,0xC5,0x74,0x90,0x1F,0x24,0x7A,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9, +0xFF,0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6, +0x56,0xA2,0x02,0x20,0x7A,0xFA,0x20,0x96,0xFA,0x20,0xE0,0xF5,0xAD,0xB7,0x02,0xF0, +0x2F,0x20,0x9D,0xFC,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0xDC,0xF9, +0x68,0x85,0x54,0x20,0x96,0xFA,0x20,0xA2,0xF5,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB, +0x02,0x20,0xE0,0xF5,0x4C,0x0A,0xFE,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0xA8,0xFC, +0x38,0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C, +0x90,0xFD,0x4C,0x34,0xF6,0x18,0x10,0x0A,0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4, +0xC4,0x17,0x17,0x0B,0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x13,0x13,0x09, +0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x02,0x06,0x07,0x08,0x09,0x0A,0x0B, +0x0D,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01, +0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x28,0x14,0x14, +0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x18,0x18,0x0C,0x18,0x30,0x30,0x60, +0x60,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01, +0x01,0x00,0xFF,0xF0,0x0F,0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02, +0x01,0x28,0xCA,0x94,0x46,0x00,0x1B,0x79,0xF7,0x1C,0x7F,0xF7,0x1D,0x8C,0xF7,0x1E, +0x99,0xF7,0x1F,0xAA,0xF7,0x7D,0xB9,0xF7,0x7E,0xE6,0xF7,0x7F,0x10,0xF8,0x9B,0x30, +0xFA,0x9C,0xD4,0xF8,0x9D,0xA4,0xF8,0x9E,0x32,0xF8,0x9F,0x2D,0xF8,0xFD,0x0A,0xF9, +0xFE,0x6D,0xF8,0xFF,0x37,0xF8,0x40,0x00,0x20,0x60,0x20,0x40,0x00,0x60,0x6C,0x6A, +0x3B,0x80,0x80,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D,0x3D,0x76,0x80, +0x63,0x80,0x80,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32,0x31,0x2C,0x20, +0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77,0x71,0x39,0x80, +0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73,0x61,0x4C,0x4A, +0x3A,0x80,0x80,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F,0x7C,0x56,0x80, +0x43,0x80,0x80,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22,0x21,0x5B,0x20, +0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57,0x51,0x28,0x80, +0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53,0x41,0x0C,0x0A, +0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C,0x1D,0x16,0x80, +0x03,0x80,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD,0x80,0x00,0x20, +0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17,0x11,0x80,0x80, +0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13,0x01,0xAD,0x09, +0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAD,0xF1,0x02,0xD0,0x20,0xAD,0x09,0xD2,0xC9,0x9F, +0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x0F,0x8D,0xFC,0x02,0x8D, +0xF2,0x02,0xA9,0x03,0x8D,0xF1,0x02,0xA9,0x00,0x85,0x4D,0xA9,0x30,0x8D,0x2B,0x02, +0x68,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE6,0x91,0xE7,0x25,0xF1,0xF3,0xE6, +}; diff --git a/MCUME_esp32/esp800/main/romatarixl.h b/MCUME_esp32/esp800/main/romatarixl.h new file mode 100644 index 0000000..2582bee --- /dev/null +++ b/MCUME_esp32/esp800/main/romatarixl.h @@ -0,0 +1,1026 @@ +const UBYTE romos[16384] = { +0x11,0x92,0x10,0x05,0x83,0x00,0x42,0x42,0x00,0x00,0x01,0x02,0xA9,0x40,0x8D,0x0E, +0xD4,0xAD,0x13,0xD0,0x8D,0xFA,0x03,0x60,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02, +0xD8,0x48,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22,0x02,0xD8,0x6C,0x16,0x02, +0x48,0xAD,0x0E,0xD2,0x29,0x20,0xD0,0x0D,0xA9,0xDF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D, +0x0E,0xD2,0x6C,0x0A,0x02,0x8A,0x48,0xAD,0xFF,0xD1,0x2D,0x49,0x02,0xF0,0x03,0x6C, +0x38,0x02,0xA2,0x06,0xBD,0xCF,0xC0,0xE0,0x05,0xD0,0x04,0x25,0x10,0xF0,0x05,0x2C, +0x0E,0xD2,0xF0,0x06,0xCA,0x10,0xED,0x4C,0xA0,0xC0,0x49,0xFF,0x8D,0x0E,0xD2,0xA5, +0x10,0x8D,0x0E,0xD2,0xE0,0x00,0xD0,0x05,0xAD,0x6D,0x02,0xD0,0x23,0xBD,0xD7,0xC0, +0xAA,0xBD,0x00,0x02,0x8D,0x8C,0x02,0xBD,0x01,0x02,0x8D,0x8D,0x02,0x68,0xAA,0x6C, +0x8C,0x02,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85,0x4D,0x68,0x40, +0x68,0xAA,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C,0x03,0xD3, +0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x68,0x8D,0x8C,0x02,0x68,0x48,0x29,0x10, +0xF0,0x07,0xAD,0x8C,0x02,0x48,0x6C,0x06,0x02,0xAD,0x8C,0x02,0x48,0x68,0x40,0x80, +0x40,0x04,0x02,0x01,0x08,0x10,0x20,0x36,0x08,0x14,0x12,0x10,0x0E,0x0C,0x0A,0x4C, +0xDF,0xC0,0xE6,0x14,0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE, +0xA2,0x00,0xA4,0x4D,0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F, +0xAD,0xC5,0x02,0x45,0x4F,0x25,0x4E,0x8D,0x17,0xD0,0xA2,0x00,0x20,0x55,0xC2,0xD0, +0x03,0x20,0x4F,0xC2,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04,0x01,0x29,0x04,0xF0,0x03, +0x4C,0x8A,0xC2,0xAD,0x13,0xD0,0xCD,0xFA,0x03,0xD0,0xB4,0xAD,0x0D,0xD4,0x8D,0x35, +0x02,0xAD,0x0C,0xD4,0x8D,0x34,0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02, +0x8D,0x02,0xD4,0xAD,0x2F,0x02,0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xAD, +0x6C,0x02,0xF0,0x0E,0xCE,0x6C,0x02,0xA9,0x08,0x38,0xED,0x6C,0x02,0x29,0x07,0x8D, +0x05,0xD4,0xA2,0x08,0x8E,0x1F,0xD0,0x58,0xBD,0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D, +0x12,0xD0,0xCA,0x10,0xF2,0xAD,0xF4,0x02,0x8D,0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01, +0xD4,0xA2,0x02,0x20,0x55,0xC2,0xD0,0x03,0x20,0x52,0xC2,0xA2,0x02,0xE8,0xE8,0xBD, +0x18,0x02,0x1D,0x19,0x02,0xF0,0x06,0x20,0x55,0xC2,0x9D,0x26,0x02,0xE0,0x08,0xD0, +0xEC,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0x08,0xAD,0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02, +0xAD,0x2B,0x02,0xF0,0x3E,0xAD,0x0F,0xD2,0x29,0x04,0xD0,0x32,0xCE,0x2B,0x02,0xD0, +0x32,0xAD,0x6D,0x02,0xD0,0x2D,0xAD,0xDA,0x02,0x8D,0x2B,0x02,0xAD,0x09,0xD2,0xC9, +0x9F,0xF0,0x20,0xC9,0x83,0xF0,0x1C,0xC9,0x84,0xF0,0x18,0xC9,0x94,0xF0,0x14,0x29, +0x3F,0xC9,0x11,0xF0,0x0E,0xAD,0x09,0xD2,0x8D,0xFC,0x02,0x4C,0xF3,0xC1,0xA9,0x00, +0x8D,0x2B,0x02,0xAD,0x00,0xD3,0x4A,0x4A,0x4A,0x4A,0x8D,0x79,0x02,0x8D,0x7B,0x02, +0xAD,0x00,0xD3,0x29,0x0F,0x8D,0x78,0x02,0x8D,0x7A,0x02,0xAD,0x10,0xD0,0x8D,0x84, +0x02,0x8D,0x86,0x02,0xAD,0x11,0xD0,0x8D,0x85,0x02,0x8D,0x87,0x02,0xA2,0x03,0xBD, +0x00,0xD2,0x9D,0x70,0x02,0x9D,0x74,0x02,0xCA,0x10,0xF4,0x8D,0x0B,0xD2,0xA2,0x02, +0xA0,0x01,0xB9,0x78,0x02,0x4A,0x4A,0x4A,0x9D,0x7D,0x02,0x9D,0x81,0x02,0xA9,0x00, +0x2A,0x9D,0x7C,0x02,0x9D,0x80,0x02,0xCA,0xCA,0x88,0x10,0xE6,0x6C,0x24,0x02,0x6C, +0x26,0x02,0x6C,0x28,0x02,0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE, +0x19,0x02,0xDE,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9, +0xFF,0x60,0x0A,0x8D,0x2D,0x02,0x8A,0xA2,0x05,0x8D,0x0A,0xD4,0xCA,0xD0,0xFD,0xAE, +0x2D,0x02,0x9D,0x17,0x02,0x98,0x9D,0x16,0x02,0x60,0x68,0xA8,0x68,0xAA,0x68,0x40, +0x78,0xAD,0x13,0xD0,0xCD,0xFA,0x03,0xD0,0x2F,0x6A,0x90,0x05,0x20,0xC9,0xC4,0xD0, +0x27,0xAD,0x44,0x02,0xD0,0x22,0xA9,0xFF,0xD0,0x20,0x78,0xA2,0x8C,0x88,0xD0,0xFD, +0xCA,0xD0,0xFA,0xAD,0x3D,0x03,0xC9,0x5C,0xD0,0x0E,0xAD,0x3E,0x03,0xC9,0x93,0xD0, +0x07,0xAD,0x3F,0x03,0xC9,0x25,0xF0,0xC8,0xA9,0x00,0x85,0x08,0x78,0xD8,0xA2,0xFF, +0x9A,0x20,0x71,0xC4,0xA9,0x01,0x85,0x01,0xA5,0x08,0xD0,0x52,0xA9,0x00,0xA0,0x08, +0x85,0x04,0x85,0x05,0xA9,0xFF,0x91,0x04,0xD1,0x04,0xF0,0x02,0x46,0x01,0xA9,0x00, +0x91,0x04,0xD1,0x04,0xF0,0x02,0x46,0x01,0xC8,0xD0,0xE9,0xE6,0x05,0xA6,0x05,0xE4, +0x06,0xD0,0xE1,0xA9,0x23,0x85,0x0A,0xA9,0xF2,0x85,0x0B,0xAD,0x01,0xD3,0x29,0x7F, +0x8D,0x01,0xD3,0x20,0x73,0xFF,0xB0,0x05,0x20,0x92,0xFF,0x90,0x02,0x46,0x01,0xAD, +0x01,0xD3,0x09,0x80,0x8D,0x01,0xD3,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x22,0xA2,0x00, +0xAD,0xEC,0x03,0xF0,0x07,0x8E,0x0E,0x00,0x8E,0x0F,0x00,0x8A,0x9D,0x00,0x02,0xE0, +0xED,0xB0,0x03,0x9D,0x00,0x03,0xCA,0xD0,0xF3,0xA2,0x10,0x95,0x00,0xE8,0x10,0xFB, +0xA2,0x00,0xAD,0x01,0xD3,0x29,0x02,0xF0,0x01,0xE8,0x8E,0xF8,0x03,0xA9,0x5C,0x8D, +0x3D,0x03,0xA9,0x93,0x8D,0x3E,0x03,0xA9,0x25,0x8D,0x3F,0x03,0xA9,0x02,0x85,0x52, +0xA9,0x27,0x85,0x53,0xAD,0x14,0xD0,0x29,0x0E,0xD0,0x08,0xA9,0x05,0xA2,0x01,0xA0, +0x28,0xD0,0x06,0xA9,0x06,0xA2,0x00,0xA0,0x30,0x8D,0xDA,0x02,0x86,0x62,0x8C,0xD9, +0x02,0xA2,0x25,0xBD,0x4B,0xC4,0x9D,0x00,0x02,0xCA,0x10,0xF7,0xA2,0x0E,0xBD,0x2E, +0xC4,0x9D,0x1A,0x03,0xCA,0x10,0xF7,0x20,0x35,0xC5,0x58,0xA5,0x01,0xD0,0x15,0xAD, +0x01,0xD3,0x29,0x7F,0x8D,0x01,0xD3,0xA9,0x02,0x8D,0xF3,0x02,0xA9,0xE0,0x8D,0xF4, +0x02,0x4C,0x03,0x50,0xA2,0x00,0x86,0x06,0xAE,0xE4,0x02,0xE0,0xB0,0xB0,0x0D,0xAE, +0xFC,0xBF,0xD0,0x08,0xE6,0x06,0x20,0xC9,0xC4,0x20,0x29,0xC4,0xA9,0x03,0xA2,0x00, +0x9D,0x42,0x03,0xA9,0x48,0x9D,0x44,0x03,0xA9,0xC4,0x9D,0x45,0x03,0xA9,0x0C,0x9D, +0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0xAA,0xC2,0xE8,0xD0,0xFD,0xC8,0x10,0xFA, +0x20,0x6E,0xC6,0xA5,0x06,0xF0,0x06,0xAD,0xFD,0xBF,0x6A,0x90,0x06,0x20,0x8B,0xC5, +0x20,0x39,0xE7,0xA9,0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29, +0x04,0xF0,0x03,0x6C,0xFA,0xBF,0x6C,0x0A,0x00,0x6C,0xFE,0xBF,0x18,0x60,0x50,0x30, +0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B,0x20,0xE4,0x42,0x4F,0x4F, +0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0xCE,0xC0,0xCD,0xC0,0xCD, +0xC0,0xCD,0xC0,0x19,0xFC,0x2C,0xEB,0xAD,0xEA,0xEC,0xEA,0xCD,0xC0,0xCD,0xC0,0xCD, +0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0xC0,0x8A, +0xC2,0xAD,0x13,0xD0,0x6A,0x90,0x0D,0xAD,0xFC,0xBF,0xD0,0x08,0xAD,0xFD,0xBF,0x10, +0x03,0x6C,0xFE,0xBF,0x20,0xDA,0xC4,0xAD,0x01,0xD3,0x09,0x02,0x8D,0x01,0xD3,0xA5, +0x08,0xF0,0x07,0xAD,0xF8,0x03,0xD0,0x11,0xF0,0x07,0xAD,0x1F,0xD0,0x29,0x04,0xF0, +0x08,0xAD,0x01,0xD3,0x29,0xFD,0x8D,0x01,0xD3,0xA9,0x00,0xA8,0x85,0x05,0xA9,0x28, +0x85,0x06,0xB1,0x05,0x49,0xFF,0x91,0x05,0xD1,0x05,0xD0,0x0C,0x49,0xFF,0x91,0x05, +0xD1,0x05,0xD0,0x04,0xE6,0x06,0xD0,0xEA,0x60,0xA9,0x00,0xAA,0x18,0x7D,0xF0,0xBF, +0xE8,0xD0,0xFA,0xCD,0xEB,0x03,0x8D,0xEB,0x03,0x60,0xA9,0x00,0xAA,0x8D,0x03,0xD3, +0x9D,0x00,0xD0,0x9D,0x00,0xD4,0x9D,0x00,0xD2,0xE0,0x01,0xF0,0x03,0x9D,0x00,0xD3, +0xE8,0xD0,0xED,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0xFF,0x8D,0x01,0xD3,0xA9,0x38,0x8D, +0x02,0xD3,0x8D,0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0xA9,0xFF,0x8D,0x01,0xD3,0xA9, +0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xAD,0x01,0xD3,0xAD,0x00,0xD3,0xA9,0x22,0x8D, +0x0F,0xD2,0xA9,0xA0,0x8D,0x05,0xD2,0x8D,0x07,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA9, +0xFF,0x8D,0x0D,0xD2,0x60,0xC6,0x11,0xA9,0x92,0x8D,0x36,0x02,0xA9,0xC0,0x8D,0x37, +0x02,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00,0x8D,0xE5,0x02,0xA9,0x00, +0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4,0x20,0x1C,0xE4,0x20,0x2C, +0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20,0x65,0xE4,0x20,0x6B,0xE4, +0x20,0x50,0xE4,0xA9,0x6E,0x8D,0x38,0x02,0xA9,0xC9,0x8D,0x39,0x02,0x20,0x9B,0xE4, +0xAD,0x1F,0xD0,0x29,0x01,0x49,0x01,0x8D,0xE9,0x03,0x60,0xA5,0x08,0xF0,0x09,0xA5, +0x09,0x29,0x01,0xF0,0x33,0x4C,0x3B,0xC6,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x53,0x8D, +0x02,0x03,0x20,0x53,0xE4,0x30,0x21,0xA9,0x00,0x8D,0x0B,0x03,0xA9,0x01,0x8D,0x0A, +0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05,0x03,0x20,0x59,0xC6,0x10,0x09, +0x20,0x3E,0xC6,0xAD,0xEA,0x03,0xF0,0xDF,0x60,0xA2,0x03,0xBD,0x00,0x04,0x9D,0x40, +0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43,0x02,0x85,0x05,0xAD,0x04, +0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9,0x00,0x04,0x91,0x04,0x88, +0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05,0x69,0x00,0x85,0x05,0xCE, +0x41,0x02,0xF0,0x12,0xEE,0x0A,0x03,0x20,0x59,0xC6,0x10,0xDC,0x20,0x3E,0xC6,0xAD, +0xEA,0x03,0xD0,0xAC,0xF0,0xF1,0xAD,0xEA,0x03,0xF0,0x03,0x20,0x59,0xC6,0x20,0x29, +0xC6,0xB0,0x9D,0x20,0x3B,0xC6,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02,0x69,0x06,0x85, +0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C,0x00,0xA2,0x3D, +0xA0,0xC4,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9,0x09,0x9D,0x42, +0x03,0xA9,0xFF,0x9D,0x48,0x03,0x4C,0x56,0xE4,0xAD,0xEA,0x03,0xF0,0x03,0x4C,0x7A, +0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x4C,0x53,0xE4,0xA5,0x08, +0xF0,0x09,0xA5,0x09,0x29,0x02,0xF0,0x27,0x4C,0xA0,0xC6,0xAD,0xE9,0x03,0xF0,0x1F, +0xA9,0x80,0x85,0x3E,0xEE,0xEA,0x03,0x20,0x7D,0xE4,0x20,0xBB,0xC5,0xA9,0x00,0x8D, +0xEA,0x03,0x8D,0xE9,0x03,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03,0x60, +0x6C,0x02,0x00,0xA9,0xA0,0x8D,0x46,0x02,0xA9,0x80,0x8D,0xD5,0x02,0xA9,0x00,0x8D, +0xD6,0x02,0x60,0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21, +0xF0,0x02,0xA9,0x07,0x8D,0x06,0x03,0xA2,0x40,0xAD,0x02,0x03,0xC9,0x50,0xF0,0x04, +0xC9,0x57,0xD0,0x02,0xA2,0x80,0xC9,0x53,0xD0,0x10,0xA9,0xEA,0x8D,0x04,0x03,0xA9, +0x02,0x8D,0x05,0x03,0xA0,0x04,0xA9,0x00,0xF0,0x06,0xAC,0xD5,0x02,0xAD,0xD6,0x02, +0x8E,0x03,0x03,0x8C,0x08,0x03,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10,0x01,0x60,0xAD, +0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x3A,0xC7,0xA0,0x02,0xB1,0x15,0x8D,0x46,0x02, +0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x3A,0xC7,0xA0,0xFE,0xC8,0xC8,0xB1,0x15, +0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88,0x88,0x8C,0x08, +0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03,0x85,0x15,0xAD, +0x05,0x03,0x85,0x16,0x60,0xA2,0x05,0xA9,0x00,0x9D,0xC9,0x02,0xCA,0x10,0xF8,0xA9, +0x00,0x8D,0x33,0x02,0x20,0xCF,0xC7,0xA0,0x9C,0xB0,0x39,0x8D,0x88,0x02,0x20,0xCF, +0xC7,0xA0,0x9C,0xB0,0x2F,0x8D,0x45,0x02,0xAD,0x88,0x02,0xC9,0x0B,0xF0,0x26,0x2A, +0xAA,0xBD,0xE4,0xC8,0x8D,0xC9,0x02,0xBD,0xE5,0xC8,0x8D,0xCA,0x02,0xAD,0x45,0x02, +0xCD,0x33,0x02,0xF0,0xCA,0x20,0xCF,0xC7,0xA0,0x9C,0xB0,0x08,0x20,0xD2,0xC7,0xEE, +0x33,0x02,0xD0,0xE9,0x60,0x20,0xCF,0xC7,0xA0,0x9C,0xB0,0x2C,0x8D,0xC9,0x02,0x20, +0xCF,0xC7,0xA0,0x9C,0xB0,0x22,0x8D,0xCA,0x02,0xAD,0x45,0x02,0xC9,0x01,0xF0,0x16, +0x90,0x17,0x18,0xAD,0xC9,0x02,0x6D,0xD1,0x02,0xA8,0xAD,0xCA,0x02,0x6D,0xD2,0x02, +0x8C,0xC9,0x02,0x8D,0xCA,0x02,0xA0,0x01,0x60,0xA0,0x00,0xA9,0x00,0xF0,0xF1,0x6C, +0xCF,0x02,0x6C,0xC9,0x02,0xAC,0x33,0x02,0xC0,0x01,0xF0,0x0A,0xB0,0x73,0x8D,0x4A, +0x02,0x8D,0x8E,0x02,0x90,0x6A,0x8D,0x4B,0x02,0x8D,0x8F,0x02,0xA2,0x00,0xAD,0x88, +0x02,0xF0,0x06,0xC9,0x0A,0xF0,0x15,0xA2,0x02,0x18,0xAD,0x4A,0x02,0x7D,0xD1,0x02, +0x8D,0x8E,0x02,0xAD,0x4B,0x02,0x7D,0xD2,0x02,0x8D,0x8F,0x02,0x18,0xAD,0x8E,0x02, +0x6D,0x45,0x02,0x48,0xA9,0x00,0x6D,0x8F,0x02,0xA8,0x68,0x38,0xE9,0x02,0xB0,0x01, +0x88,0x48,0x98,0xDD,0xCC,0x02,0x68,0x90,0x10,0xD0,0x05,0xDD,0xCB,0x02,0x90,0x09, +0x9D,0xCB,0x02,0x48,0x98,0x9D,0xCC,0x02,0x68,0xAE,0x88,0x02,0xE0,0x01,0xF0,0x10, +0xCC,0xE6,0x02,0x90,0x0B,0xD0,0x05,0xCD,0xE5,0x02,0x90,0x04,0x68,0x68,0xA0,0x9D, +0x60,0x38,0x48,0xAD,0x33,0x02,0xE9,0x02,0x18,0x6D,0x8E,0x02,0x85,0x36,0xA9,0x00, +0x6D,0x8F,0x02,0x85,0x37,0x68,0xA0,0x00,0x91,0x36,0x4C,0x50,0xC8,0x18,0x6D,0x8E, +0x02,0x85,0x36,0xA9,0x00,0x6D,0x8F,0x02,0x85,0x37,0xA0,0x00,0xB1,0x36,0x18,0x6D, +0xD1,0x02,0x91,0x36,0xE6,0x36,0xD0,0x02,0xE6,0x37,0xB1,0x36,0x6D,0xD2,0x02,0x91, +0x36,0x60,0xA2,0x00,0xAC,0x88,0x02,0xC0,0x04,0x90,0x02,0xA2,0x02,0x18,0x6D,0x8E, +0x02,0x85,0x36,0xA9,0x00,0x6D,0x8F,0x02,0x85,0x37,0xA0,0x00,0xB1,0x36,0x18,0x7D, +0xD1,0x02,0x91,0x36,0x60,0x48,0xAD,0x33,0x02,0x6A,0x68,0xB0,0x15,0x18,0x6D,0x8E, +0x02,0x85,0x36,0xA9,0x00,0x6D,0x8F,0x02,0x85,0x37,0xA0,0x00,0xB1,0x36,0x8D,0x88, +0x02,0x60,0x18,0x6D,0xD1,0x02,0xA9,0x00,0x6D,0xD2,0x02,0x6D,0x88,0x02,0xA0,0x00, +0x91,0x36,0xF0,0xED,0xD5,0xC7,0xD5,0xC7,0x92,0xC8,0x92,0xC8,0x92,0xC8,0x92,0xC8, +0x6D,0xC8,0x6D,0xC8,0xB5,0xC8,0xB5,0xC8,0xD5,0xC7,0x95,0xC7,0xA9,0xFF,0x8D,0x44, +0x02,0xAD,0x01,0xD3,0x29,0x7F,0x8D,0x01,0xD3,0x4C,0x83,0xE4,0xA9,0x01,0x8D,0x48, +0x02,0xAD,0x48,0x02,0x8D,0xFF,0xD1,0xAD,0x03,0xD8,0xC9,0x80,0xD0,0x0A,0xAD,0x0B, +0xD8,0xC9,0x91,0xD0,0x03,0x20,0x19,0xD8,0x0E,0x48,0x02,0xD0,0xE4,0xA9,0x00,0x8D, +0xFF,0xD1,0x60,0xA9,0x01,0x8D,0x42,0x00,0xAD,0x01,0x03,0x48,0xAD,0x47,0x02,0xF0, +0x1A,0xA2,0x08,0x20,0xAF,0xC9,0xF0,0x13,0x8A,0x48,0x20,0x05,0xD8,0x68,0xAA,0x90, +0xF2,0xA9,0x00,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0xF0,0x03,0x20,0x71,0xE9,0x68,0x8D, +0x01,0x03,0xA9,0x00,0x8D,0x42,0x00,0x8C,0x03,0x03,0xAC,0x03,0x03,0x60,0xA2,0x08, +0x6A,0xB0,0x03,0xCA,0xD0,0xFA,0xAD,0x48,0x02,0x48,0xBD,0x20,0xCA,0x8D,0x48,0x02, +0x8D,0xFF,0xD1,0x20,0x08,0xD8,0x68,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x68,0xAA,0x68, +0x40,0xA0,0x01,0x4C,0xDC,0xC9,0xA0,0x03,0x4C,0xDC,0xC9,0xA0,0x05,0x4C,0xDC,0xC9, +0xA0,0x07,0x4C,0xDC,0xC9,0xA0,0x09,0x4C,0xDC,0xC9,0xA0,0x0B,0x4C,0xDC,0xC9,0xCA, +0x10,0x09,0xA9,0x00,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x60,0xAD,0x47,0x02,0x3D,0x21, +0xCA,0xF0,0xEC,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x60,0xB9,0x0D,0xD8,0x48,0x88,0xB9, +0x0D,0xD8,0x48,0xAD,0x4C,0x02,0xAE,0x4D,0x02,0xA0,0x92,0x60,0x8D,0x4C,0x02,0x8E, +0x4D,0x02,0xAD,0x42,0x00,0x48,0xA9,0x01,0x8D,0x42,0x00,0xA2,0x08,0x20,0xAF,0xC9, +0xF0,0x11,0x8A,0x48,0x98,0x48,0x20,0xCA,0xC9,0x90,0x20,0x8D,0x4C,0x02,0x68,0x68, +0x4C,0x05,0xCA,0xA0,0x82,0xA9,0x00,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x68,0x8D,0x42, +0x00,0xAD,0x4C,0x02,0x8C,0x4D,0x02,0xAC,0x4D,0x02,0x60,0x68,0xA8,0x68,0xAA,0x90, +0xCC,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xAE,0x2E,0x00,0xBD,0x4D,0x03,0x20, +0xDE,0xE7,0xB0,0x20,0x18,0x20,0x9E,0xE8,0xB0,0x1A,0xAE,0x2E,0x00,0xBD,0x4C,0x03, +0x20,0x16,0xE7,0xB0,0x0F,0xAE,0x2E,0x00,0x9D,0x40,0x03,0x85,0x20,0xA9,0x03,0x85, +0x17,0x4C,0x5C,0xE5,0x4C,0x10,0xE5,0x00,0x13,0x16,0xD1,0xE4,0xE4,0xE8,0x29,0xEB, +0xEE,0x00,0x00,0x2D,0x25,0x2D,0x2F,0x32,0x39,0x00,0x34,0x25,0x33,0x34,0x00,0x00, +0x00,0x32,0x2F,0x2D,0x32,0x21,0x2D,0x00,0x00,0x2B,0x25,0x39,0x22,0x2F,0x21,0x32, +0x24,0x00,0x34,0x25,0x33,0x34,0x00,0x00,0x00,0xB2,0x91,0x00,0x92,0x00,0x93,0x00, +0x94,0x00,0xA8,0x00,0xA1,0x00,0xA2,0x00,0x00,0x00,0x5B,0x00,0x11,0x00,0x12,0x00, +0x13,0x00,0x14,0x00,0x15,0x00,0x16,0x00,0x17,0x00,0x18,0x00,0x19,0x00,0x10,0x00, +0x1C,0x00,0x1E,0x00,0xA2,0x80,0xB3,0x00,0x00,0x00,0xFF,0xFF,0x00,0x31,0x00,0x37, +0x00,0x25,0x00,0x32,0x00,0x34,0x00,0x39,0x00,0x35,0x00,0x29,0x00,0x2F,0x00,0x30, +0x00,0x0D,0x00,0x1D,0x00,0xB2,0xB4,0x00,0x00,0x00,0x80,0xDC,0x80,0x00,0x21,0x00, +0x33,0x00,0x24,0x00,0x26,0x00,0x27,0x00,0x28,0x00,0x2A,0x00,0x2B,0x00,0x2C,0x00, +0x1B,0x00,0x0B,0x00,0x0A,0x00,0xA3,0x00,0x00,0x00,0x80,0xB3,0xA8,0x80,0x00,0x3A, +0x00,0x38,0x00,0x23,0x00,0x36,0x00,0x22,0x00,0x2E,0x00,0x2D,0x00,0x0C,0x00,0x0E, +0x00,0x0F,0x00,0x80,0xB3,0xA8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, +0xB3,0x80,0xB0,0x80,0xA1,0x80,0xA3,0x80,0xA5,0x80,0x80,0x80,0xA2,0x80,0xA1,0x80, +0xB2,0x80,0x00,0x33,0x00,0x30,0x00,0x21,0x00,0x23,0x00,0x25,0x00,0x00,0x00,0x22, +0x00,0x21,0x00,0x32,0x00,0x00,0x33,0x28,0x00,0x22,0x00,0x33,0x00,0x5C,0x00,0x36, +0x2F,0x29,0x23,0x25,0x00,0x03,0xA0,0x11,0xA9,0x00,0x18,0x71,0x4A,0x88,0x10,0xFB, +0x69,0x00,0x49,0xFF,0x60,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,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,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,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,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,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x0C,0x18,0x3C,0x06,0x3E,0x66,0x3E,0x00,0x30,0x18,0x00,0x66,0x66,0x66,0x3E,0x00, +0x36,0x6C,0x00,0x76,0x76,0x7E,0x6E,0x00,0x0C,0x18,0x7E,0x60,0x7C,0x60,0x7E,0x00, +0x00,0x00,0x3C,0x60,0x60,0x3C,0x18,0x30,0x3C,0x66,0x00,0x3C,0x66,0x66,0x3C,0x00, +0x30,0x18,0x00,0x3C,0x66,0x66,0x3C,0x00,0x30,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x1C,0x30,0x30,0x78,0x30,0x30,0x7E,0x00,0x00,0x66,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x66,0x00,0x66,0x66,0x66,0x3E,0x00,0x36,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x66,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,0x0C,0x18,0x00,0x66,0x66,0x66,0x3E,0x00, +0x0C,0x18,0x00,0x3C,0x66,0x66,0x3C,0x00,0x00,0x66,0x00,0x3C,0x66,0x66,0x3C,0x00, +0x66,0x00,0x66,0x66,0x66,0x66,0x7E,0x00,0x3C,0x66,0x1C,0x06,0x3E,0x66,0x3E,0x00, +0x3C,0x66,0x00,0x66,0x66,0x66,0x3E,0x00,0x3C,0x66,0x00,0x38,0x18,0x18,0x3C,0x00, +0x0C,0x18,0x3C,0x66,0x7E,0x60,0x3C,0x00,0x30,0x18,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x36,0x6C,0x00,0x7C,0x66,0x66,0x66,0x00,0x3C,0xC3,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x18,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00,0x30,0x18,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x18,0x00,0x18,0x3C,0x66,0x7E,0x66,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x66,0x66,0x18,0x3C,0x66,0x7E,0x66,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0x4C,0x09,0x50,0x20,0x86,0x50,0x4C,0x91,0x52,0x20,0x86,0x50,0xA9,0x00,0x85,0x80, +0x85,0x81,0x85,0x82,0x8D,0x08,0xD2,0xA9,0x03,0x8D,0x0F,0xD2,0x20,0x10,0x55,0xA9, +0x40,0x8D,0x0E,0xD4,0xA2,0x00,0x20,0x73,0x57,0xA2,0x3A,0xA0,0x51,0x20,0x9E,0x50, +0xA9,0xD0,0x8D,0x00,0x02,0xA9,0x50,0x8D,0x01,0x02,0xA2,0x0C,0xA9,0xAA,0x20,0x2A, +0x57,0xA2,0x00,0x8E,0x0A,0xD4,0xE8,0xD0,0xFA,0xAD,0x0B,0xD4,0xC9,0x18,0xB0,0xF9, +0xA9,0x10,0x85,0x87,0xA9,0xC0,0x8D,0x0E,0xD4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0xF9, +0xA9,0xFF,0x8D,0xFC,0x02,0xA5,0x86,0x29,0x0F,0xC9,0x01,0xF0,0x10,0xC9,0x02,0xF0, +0x0F,0xC9,0x04,0xF0,0x0E,0xA9,0x88,0x85,0x86,0xA9,0xFF,0x85,0x82,0x4C,0x91,0x52, +0x4C,0x57,0x55,0x4C,0x50,0x54,0xA9,0x11,0x85,0x86,0xA9,0x21,0x8D,0x2F,0x02,0xA9, +0xC0,0x8D,0x0E,0xD4,0xA9,0x41,0x85,0x83,0xA9,0xFF,0x8D,0xFC,0x02,0x60,0x85,0x8A, +0x98,0x48,0x8A,0x48,0xA9,0x00,0x8D,0x2F,0x02,0x8D,0xDC,0x02,0xA9,0xDA,0x8D,0x00, +0x02,0xA9,0x53,0x8D,0x01,0x02,0xA2,0x00,0x8A,0x20,0x2A,0x57,0x68,0xAA,0x68,0xA8, +0x8E,0x30,0x02,0x86,0x84,0x8C,0x31,0x02,0x84,0x85,0xA9,0x21,0x8D,0x2F,0x02,0x60, +0x48,0x8A,0x48,0xA2,0x7A,0xA5,0x87,0xC9,0x01,0xF0,0x1F,0x29,0x01,0xF0,0x0A,0xE6, +0xA2,0xA5,0xA2,0x29,0x20,0xF0,0x02,0xA2,0x2C,0x8E,0x0A,0xD4,0x8E,0x16,0xD0,0x18, +0x66,0x87,0xA9,0x00,0x85,0x4D,0x68,0xAA,0x68,0x40,0xA5,0x88,0xD0,0x16,0xAD,0x1F, +0xD0,0x29,0x02,0xD0,0x1A,0xA5,0x86,0x2A,0x26,0x86,0xA9,0x20,0x85,0xA2,0xA9,0xFF, +0x85,0x88,0xD0,0x0B,0xAD,0x1F,0xD0,0x29,0x02,0xF0,0x04,0xA9,0x00,0x85,0x88,0xA5, +0x86,0x29,0x0F,0x09,0x10,0x85,0x87,0xE6,0x80,0xD0,0x02,0xE6,0x81,0xA5,0x81,0xC9, +0xFA,0xD0,0x04,0x58,0x4C,0x75,0x50,0x4C,0xD3,0x50,0x70,0x70,0x70,0x70,0x70,0x47, +0x61,0x51,0x70,0x70,0x70,0x4E,0x00,0x30,0x70,0xF0,0xC6,0x71,0x51,0x70,0x86,0x70, +0x86,0x70,0x06,0x70,0x70,0x4E,0x00,0x30,0x70,0x70,0x70,0x42,0xB1,0x51,0x41,0x3A, +0x51,0x00,0x00,0x00,0x00,0x33,0x25,0x2C,0x26,0x00,0x34,0x25,0x33,0x34,0x00,0x00, +0x00,0x00,0x00,0x2D,0x25,0x2D,0x2F,0x32,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x21,0x35,0x24,0x29,0x2F,0x0D,0x36,0x29,0x33,0x35,0x21,0x2C,0x00, +0x00,0x00,0x00,0x2B,0x25,0x39,0x22,0x2F,0x21,0x32,0x24,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x21,0x2C,0x2C,0x00,0x34,0x25,0x33,0x34,0x33,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x42,0xB3,0xA5,0xAC,0xA5,0xA3,0xB4,0x56,0x0C,0x42,0xB3, +0xB4,0xA1,0xB2,0xB4,0x56,0x2F,0x32,0x42,0xB2,0xA5,0xB3,0xA5,0xB4,0x56,0x00,0x00, +0x00,0x70,0x70,0x70,0x46,0x00,0x30,0x70,0x70,0x06,0x70,0x08,0x70,0x70,0x06,0x70, +0x08,0x70,0x08,0x70,0x08,0x70,0x08,0x70,0x70,0x70,0x01,0xED,0x51,0xA0,0x40,0x42, +0xF5,0x51,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0xB2,0xA5,0xB3,0xA5,0xB4, +0x56,0x2F,0x32,0x42,0xA8,0xA5,0xAC,0xB0,0x56,0x34,0x2F,0x00,0x25,0x38,0x29,0x34, +0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x70,0x70,0x46,0x00,0x30,0x70,0x70,0x70,0x70, +0x02,0x70,0x70,0x02,0x70,0x02,0x70,0x02,0x70,0x02,0x70,0x02,0x70,0x70,0x01,0xED, +0x51,0x70,0x70,0x70,0x70,0x46,0x71,0x52,0x70,0x06,0x70,0x70,0x4B,0x00,0x31,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x70,0x46,0x00,0x30,0x70,0x01,0xED, +0x51,0x00,0x00,0x21,0x35,0x24,0x29,0x2F,0x0D,0x36,0x29,0x33,0x35,0x21,0x2C,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x25,0x33,0x34,0x00,0x00,0x00,0x00,0x00, +0x00,0xA2,0xD1,0xA0,0x51,0xA9,0x00,0x20,0x9E,0x50,0xA2,0x01,0x20,0x73,0x57,0xA2, +0x00,0x20,0x59,0x57,0xA2,0x01,0x20,0x59,0x57,0xAD,0x20,0x30,0xC9,0xAA,0xF0,0x17, +0xA9,0x55,0x20,0x8E,0x53,0x20,0xB1,0x53,0x20,0x73,0xFF,0xB0,0x05,0xA9,0xFF,0x4C, +0xC4,0x52,0xA9,0xAA,0x20,0x8E,0x53,0xAD,0x24,0x30,0xC9,0xAA,0xF0,0x17,0xA9,0x55, +0x20,0x99,0x53,0x20,0xB1,0x53,0x20,0x92,0xFF,0xB0,0x05,0xA9,0xFF,0x4C,0xE2,0x52, +0xA9,0xAA,0x20,0x99,0x53,0xA9,0xC0,0x85,0x8D,0xA9,0x04,0x85,0xA4,0xA9,0x00,0x85, +0x8E,0x85,0x90,0x85,0x91,0x85,0x8F,0xA6,0x8E,0xBD,0x38,0x30,0x25,0x8D,0xC9,0x80, +0xF0,0x5C,0xC9,0x08,0xF0,0x58,0xA9,0x44,0x20,0xC3,0x53,0xA5,0xA4,0x20,0xA4,0x53, +0xA5,0xA4,0x49,0x0C,0x85,0xA4,0xA2,0x07,0xBD,0x4A,0x54,0xC5,0x91,0xF0,0x37,0xCA, +0x10,0xF6,0xA9,0x04,0x85,0x92,0xA2,0x00,0xA0,0x00,0x8A,0x91,0x90,0xE8,0xC8,0xD0, +0xF9,0x86,0x93,0xA0,0x00,0xB1,0x90,0xC5,0x93,0xD0,0x10,0xE6,0x93,0xC8,0xD0,0xF5, +0xE8,0xD0,0xE5,0xE6,0x91,0xC6,0x92,0xD0,0xDD,0xF0,0x0E,0x20,0xB1,0x53,0xA9,0x88, +0x20,0xC3,0x53,0x4C,0x5E,0x53,0x20,0xB5,0x53,0xA9,0xCC,0x20,0xC3,0x53,0xA5,0x8D, +0x30,0x26,0xA9,0xC0,0x85,0x8D,0xE6,0x8E,0x18,0xA5,0x8F,0x69,0x04,0x85,0x91,0x85, +0x8F,0xCD,0xE4,0x02,0xD0,0x81,0xA5,0x82,0xD0,0x03,0x4C,0xA9,0x52,0xA9,0x0C,0x20, +0xA4,0x53,0x20,0xB5,0x53,0x4C,0x57,0x55,0xA9,0x0C,0x85,0x8D,0xD0,0xDA,0xA2,0x04, +0x20,0x2A,0x57,0x29,0xFC,0x8D,0x23,0x30,0x60,0xA2,0x08,0x20,0x2A,0x57,0x29,0xFC, +0x8D,0x27,0x30,0x60,0x85,0xA5,0xAD,0x01,0xD3,0x29,0xF3,0x05,0xA5,0x8D,0x01,0xD3, +0x60,0xA2,0x3C,0xD0,0x02,0xA2,0x96,0xA0,0xFF,0x8C,0x0A,0xD4,0x88,0xD0,0xFA,0xCA, +0xD0,0xF5,0x60,0x48,0xA6,0x8E,0xA5,0x8D,0x49,0xFF,0x3D,0x38,0x30,0x9D,0x38,0x30, +0x68,0x25,0x8D,0x1D,0x38,0x30,0x9D,0x38,0x30,0x60,0x48,0xA9,0x0C,0x8D,0x17,0xD0, +0xAD,0xC8,0x02,0x8D,0x18,0xD0,0xA9,0x00,0x85,0x4D,0xAD,0xDC,0x02,0xF0,0x0E,0xA9, +0x00,0x8D,0xDC,0x02,0xA9,0x0C,0x20,0xA4,0x53,0x58,0x4C,0x0C,0x50,0xA5,0x8A,0xF0, +0x47,0xAD,0x1F,0xD0,0x29,0x01,0xF0,0x04,0xA9,0xB3,0xD0,0x02,0xA9,0x33,0x8D,0x1C, +0x30,0xAD,0x1F,0xD0,0x29,0x02,0xF0,0x04,0xA9,0xF3,0xD0,0x02,0xA9,0x73,0x8D,0x1E, +0x30,0xAD,0x1F,0xD0,0x29,0x04,0xF0,0x04,0xA9,0xAF,0xD0,0x02,0xA9,0x2F,0x8D,0x20, +0x30,0xAD,0x1F,0xD0,0x29,0x07,0xC9,0x07,0xF0,0x09,0xA9,0x64,0x8D,0x02,0xD2,0xA9, +0xA8,0xD0,0x02,0xA9,0x00,0x8D,0x03,0xD2,0x68,0x40,0x00,0x50,0x54,0x30,0x30,0x30, +0xA2,0x00,0x86,0x94,0xA2,0x03,0x20,0x73,0x57,0xA2,0x15,0xA0,0x52,0xA9,0xFF,0x20, +0x9E,0x50,0xA2,0x02,0x20,0x59,0x57,0xA2,0x07,0x20,0x59,0x57,0xA5,0x82,0xF0,0x13, +0xA6,0x94,0xBD,0x45,0x55,0xE6,0x94,0xA6,0x94,0xE0,0x13,0xD0,0x14,0x20,0xB5,0x53, +0x4C,0x91,0x52,0xAD,0xFC,0x02,0xC9,0xFF,0xF0,0xF9,0xC9,0xC0,0xB0,0xF5,0xAD,0xFC, +0x02,0xA2,0xFF,0x8E,0xFC,0x02,0x48,0x29,0x80,0xF0,0x05,0xA2,0x08,0x20,0x59,0x57, +0x68,0x48,0x29,0x40,0xF0,0x0A,0xA2,0x05,0x20,0x59,0x57,0xA2,0x04,0x20,0x59,0x57, +0x68,0x29,0x3F,0xC9,0x21,0xF0,0x68,0xC9,0x2C,0xF0,0x74,0xC9,0x34,0xF0,0x68,0xC9, +0x0C,0xF0,0x76,0xAA,0xBD,0x9C,0x57,0x48,0xA9,0x21,0x85,0x95,0xA9,0x30,0x85,0x96, +0x68,0xA0,0xFF,0xC8,0xD1,0x95,0xD0,0xFB,0xB1,0x95,0x49,0x80,0x91,0x95,0xA5,0x82, +0xF0,0x13,0x20,0x05,0x55,0xA2,0x14,0x20,0xB7,0x53,0x20,0x10,0x55,0xA2,0x0A,0x20, +0xB7,0x53,0x4C,0x62,0x54,0x20,0x05,0x55,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0xF9,0x20, +0x10,0x55,0x4C,0x62,0x54,0xA9,0x64,0x8D,0x00,0xD2,0xA9,0xA8,0x8D,0x01,0xD2,0x60, +0xA9,0x00,0x8D,0x01,0xD2,0x8D,0x03,0xD2,0x8D,0x05,0xD2,0x8D,0x07,0xD2,0x60,0xA2, +0x03,0x20,0x59,0x57,0x4C,0xDE,0x54,0xA2,0x06,0x20,0x59,0x57,0x4C,0xDE,0x54,0xA9, +0x7F,0x8D,0x52,0x30,0x8D,0x53,0x30,0xD0,0xA5,0xA9,0x32,0x8D,0x6D,0x30,0xA9,0x34, +0x8D,0x6E,0x30,0xD0,0x99,0x52,0x08,0x0A,0x2B,0x28,0x0D,0x3D,0x39,0x2D,0x1F,0x30, +0x35,0x1A,0x7F,0x2D,0x3F,0x28,0x0D,0xA2,0x02,0x20,0x73,0x57,0xA9,0x00,0x85,0x97, +0xA9,0x00,0x85,0x98,0xA2,0x31,0xA0,0x52,0xA9,0x00,0x20,0x9E,0x50,0xA2,0x09,0x20, +0x59,0x57,0xA5,0x97,0x4A,0x18,0x69,0x11,0x8D,0x0B,0x30,0xA2,0x0F,0xA9,0xFF,0x9D, +0x50,0x31,0x9D,0xB0,0x31,0x9D,0x10,0x32,0x9D,0x70,0x32,0x9D,0xD0,0x32,0xCA,0x10, +0xEC,0xA9,0x00,0x85,0x99,0xA9,0x0C,0x85,0x9A,0xA6,0x99,0xBD,0x17,0x57,0xA8,0xBD, +0x16,0x57,0xAA,0xA5,0x9A,0x20,0x85,0x56,0x18,0xA5,0x9A,0x69,0x06,0x85,0x9A,0xE6, +0x99,0xE6,0x99,0xA5,0x99,0xC9,0x14,0xD0,0xE0,0x20,0xB1,0x53,0xA2,0x54,0xA0,0x31, +0xA9,0x00,0x20,0x85,0x56,0xA9,0x51,0x20,0x6C,0x56,0xA2,0x86,0xA0,0x31,0xA9,0x00, +0x20,0x85,0x56,0xA9,0x5B,0x20,0x6C,0x56,0xA2,0xF8,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0xC7,0xA0,0x30,0xA9,0x54,0x20,0x85,0x56,0xA2,0x48,0xA0,0x32,0xA9,0x4E, +0x20,0x85,0x56,0xA9,0x44,0x20,0x6C,0x56,0xA2,0xCA,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0x1A,0xA0,0x32,0xA9,0x4E,0x20,0x85,0x56,0xA2,0xCA,0xA0,0x31,0xA9,0x06, +0x20,0x85,0x56,0xA9,0x3C,0x20,0x6C,0x56,0xA2,0x3C,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0x8C,0xA0,0x31,0xA9,0x4E,0x20,0x85,0x56,0xA2,0x3C,0xA0,0x31,0xA9,0x06, +0x20,0x85,0x56,0xA9,0x2D,0x20,0x6C,0x56,0xA2,0x9E,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0xEE,0xA0,0x31,0xA9,0x4E,0x20,0x85,0x56,0xA9,0x35,0x20,0x6C,0x56,0x20, +0xB5,0x53,0xE6,0x97,0xE6,0x97,0xA5,0x97,0xC9,0x08,0xD0,0x07,0xA5,0x82,0xD0,0x06, +0x4C,0x5C,0x55,0x4C,0x60,0x55,0x20,0xB5,0x53,0x4C,0x50,0x54,0xA4,0x97,0x99,0x00, +0xD2,0xA9,0xA8,0x99,0x01,0xD2,0xA6,0x98,0xBD,0xB6,0x56,0xAA,0x20,0xB7,0x53,0xE6, +0x98,0x20,0x10,0x55,0x60,0x86,0x9B,0x84,0x9C,0xAA,0xA0,0x00,0xA9,0x10,0x85,0x9D, +0xA9,0x06,0x85,0xA3,0xBD,0xBC,0x56,0x11,0x9B,0x91,0x9B,0x20,0xAA,0x56,0xC6,0x9D, +0xD0,0xF2,0xE6,0x9D,0xE8,0xC6,0xA3,0xD0,0xEB,0x60,0x18,0xA5,0x9B,0x69,0x10,0x85, +0x9B,0x90,0x02,0xE6,0x9C,0x60,0x20,0x20,0x20,0x10,0x10,0x20,0x01,0x1F,0x3F,0x7F, +0x3E,0x1C,0x00,0x41,0x42,0x4C,0x70,0x40,0x00,0x01,0x02,0x04,0x08,0x10,0x00,0x43, +0x44,0x48,0x48,0x48,0x00,0x44,0x22,0x10,0x08,0x07,0x00,0x04,0x08,0x05,0x02,0x00, +0x00,0x30,0x48,0x88,0x84,0x84,0x00,0x88,0x88,0x90,0xA0,0xC0,0x00,0xF0,0x88,0x84, +0x82,0x82,0x00,0x82,0x82,0x84,0x88,0xF0,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x00,0x1C,0x3E,0x7F,0x7E,0x7C,0x40,0x00,0x00,0x00,0x00,0x00, +0x00,0x04,0x04,0x06,0x05,0x06,0xC1,0x30,0x21,0x31,0x81,0x31,0xF1,0x31,0x02,0x30, +0x62,0x30,0x22,0x31,0x82,0x31,0xC2,0x30,0xC2,0x31,0x48,0xBD,0xDC,0x57,0x85,0x9E, +0xBD,0xDD,0x57,0x85,0x9F,0xBD,0xDE,0x57,0x85,0xA0,0xBD,0xDF,0x57,0x85,0xA1,0xA0, +0x00,0x68,0x91,0x9E,0xE6,0x9E,0xD0,0x02,0xE6,0x9F,0x48,0xA5,0x9E,0xC5,0xA0,0xD0, +0xF0,0xA5,0x9F,0xC5,0xA1,0xD0,0xEA,0x68,0x60,0xBD,0x57,0xCA,0xA8,0xBD,0xEC,0x57, +0x85,0x9E,0xBD,0xF6,0x57,0xAA,0xB9,0x61,0xCA,0x9D,0x00,0x30,0xC8,0xE8,0xC6,0x9E, +0xD0,0xF4,0x60,0xBD,0x8C,0x57,0x8D,0xC4,0x02,0xBD,0x90,0x57,0x8D,0xC5,0x02,0xBD, +0x94,0x57,0x8D,0xC6,0x02,0xBD,0x98,0x57,0x8D,0xC8,0x02,0x60,0x2C,0x0C,0x2A,0x18, +0x0F,0x32,0x0C,0x0E,0xD2,0xD6,0x00,0xB4,0xD2,0xA0,0x30,0xB4,0x2C,0x2A,0x1B,0x91, +0x92,0x2B,0x0B,0x0A,0x2F,0x00,0x30,0x35,0xB2,0x29,0x0D,0x1D,0x36,0xA8,0x23,0x93, +0x94,0x22,0x38,0x3A,0x14,0x00,0x13,0x16,0x5B,0x15,0x12,0x11,0x0C,0x00,0x0E,0x2E, +0x00,0x2D,0x0F,0xA1,0x32,0x00,0x25,0x39,0xFF,0x34,0x37,0x31,0x19,0x00,0x10,0x17, +0xA2,0x18,0x1C,0x1E,0x26,0x28,0x24,0x00,0xA3,0x27,0x33,0x21,0x00,0x30,0xFF,0x3E, +0x20,0x30,0x24,0x30,0x24,0x30,0x28,0x30,0x00,0x30,0x20,0x30,0x13,0x03,0x13,0x13, +0x04,0x04,0x03,0xA8,0x03,0x07,0x00,0x28,0x00,0xB7,0x92,0xAB,0x4C,0x22,0x72,0x04, +0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2, +0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0, +0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1, +0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18, +0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B, +0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86, +0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48, +0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65, +0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF, +0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85, +0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB, +0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03, +0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED, +0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4, +0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4, +0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20, +0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0, +0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60, +0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9, +0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82, +0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85, +0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00, +0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00, +0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20, +0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18, +0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09, +0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5, +0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4, +0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C, +0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62, +0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5, +0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0, +0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32, +0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7, +0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01, +0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5, +0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA, +0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60, +0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F, +0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4, +0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5, +0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10, +0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5, +0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90, +0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00, +0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5, +0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0, +0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7, +0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD, +0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04, +0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4, +0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5, +0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05, +0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90, +0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9, +0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4, +0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62, +0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2, +0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4, +0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94, +0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68, +0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02, +0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18, +0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60, +0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00, +0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA, +0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01, +0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0, +0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8, +0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95, +0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60, +0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5, +0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0, +0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99, +0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0, +0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F, +0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5, +0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60, +0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB, +0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA, +0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2, +0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00, +0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00, +0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60, +0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28, +0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6, +0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2, +0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1, +0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC, +0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00, +0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60, +0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1, +0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10, +0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5, +0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD, +0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20, +0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10, +0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40, +0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD, +0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94, +0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E, +0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27, +0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15, +0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40, +0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7, +0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20, +0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0, +0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0xF0,0x05,0x30,0x03,0x4C,0xF6,0xDF,0x38,0x60, +0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6, +0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28, +0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20, +0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6, +0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20, +0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49, +0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05, +0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98, +0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00, +0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39, +0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64, +0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12, +0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16, +0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16, +0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29, +0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19, +0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99, +0x3F,0x78,0x53,0x98,0x16,0x34,0xA5,0xD4,0x85,0xE0,0x38,0x4C,0xE0,0xDE,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00, +0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18, +0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03, +0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F, +0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00, +0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, +0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18, +0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18, +0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0x93,0xEF,0x2D,0xF2,0x49,0xF2,0xAF,0xF2,0x1D,0xF2,0x2C,0xF2,0x4C,0x6E,0xEF,0x00, +0x8D,0xEF,0x2D,0xF2,0x7F,0xF1,0xA3,0xF1,0x1D,0xF2,0xAE,0xF9,0x4C,0x6E,0xEF,0x00, +0x1D,0xF2,0x1D,0xF2,0xFC,0xF2,0x2C,0xF2,0x1D,0xF2,0x2C,0xF2,0x4C,0x6E,0xEF,0x00, +0xC1,0xFE,0x06,0xFF,0xC0,0xFE,0xCA,0xFE,0xA2,0xFE,0xC0,0xFE,0x4C,0x99,0xFE,0x00, +0xE5,0xFC,0xCE,0xFD,0x79,0xFD,0xB3,0xFD,0xCB,0xFD,0xE4,0xFC,0x4C,0xDB,0xFC,0x00, +0x4C,0xA3,0xC6,0x4C,0xB3,0xC6,0x4C,0xDF,0xE4,0x4C,0x33,0xC9,0x4C,0x72,0xC2,0x4C, +0xE2,0xC0,0x4C,0x8A,0xC2,0x4C,0x5C,0xE9,0x4C,0x17,0xEC,0x4C,0x0C,0xC0,0x4C,0xC1, +0xE4,0x4C,0x23,0xF2,0x4C,0x90,0xC2,0x4C,0xC8,0xC2,0x4C,0x8D,0xFD,0x4C,0xF7,0xFC, +0x4C,0x23,0xF2,0x4C,0x00,0x50,0x4C,0xBC,0xEE,0x4C,0x15,0xE9,0x4C,0x98,0xE8,0x90, +0xC9,0x95,0xC9,0x9A,0xC9,0x9F,0xC9,0xA4,0xC9,0xA9,0xC9,0x4C,0x0C,0xC9,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,0x00,0x00, +0x60,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xDB,0x9D,0x46,0x03,0xA9,0xE4,0x9D, +0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8,0x60,0xA0,0x85,0x60,0x85, +0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90,0x05,0xA0,0x86,0x4C,0x70, +0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8,0xC0,0x0C,0x90,0xF4,0xA5, +0x20,0xC9,0x7F,0xD0,0x15,0xA5,0x22,0xC9,0x0C,0xF0,0x71,0xAD,0xE9,0x02,0xD0,0x05, +0xA0,0x82,0x4C,0x70,0xE6,0x20,0x29,0xCA,0x30,0xF8,0xA0,0x84,0xA5,0x22,0xC9,0x03, +0x90,0x25,0xA8,0xC0,0x0E,0x90,0x02,0xA0,0x0E,0x84,0x17,0xB9,0x2A,0xE7,0xF0,0x0F, +0xC9,0x02,0xF0,0x48,0xC9,0x08,0xB0,0x5F,0xC9,0x04,0xF0,0x76,0x4C,0x1E,0xE6,0xA5, +0x20,0xC9,0xFF,0xF0,0x05,0xA0,0x81,0x4C,0x70,0xE6,0xAD,0xE9,0x02,0xD0,0x27,0x20, +0xFF,0xE6,0xB0,0x22,0xA9,0x00,0x8D,0xEA,0x02,0x8D,0xEB,0x02,0x20,0x95,0xE6,0xB0, +0xE6,0x20,0xEA,0xE6,0xA9,0x0B,0x85,0x17,0x20,0x95,0xE6,0xA5,0x2C,0x85,0x26,0xA5, +0x2D,0x85,0x27,0x4C,0x72,0xE6,0x20,0xF9,0xEE,0x4C,0x70,0xE6,0xA0,0x01,0x84,0x23, +0x20,0x95,0xE6,0xB0,0x03,0x20,0xEA,0xE6,0xA9,0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27, +0xA9,0xDB,0x85,0x26,0x4C,0x72,0xE6,0xA5,0x20,0xC9,0xFF,0xD0,0x05,0x20,0xFF,0xE6, +0xB0,0xA5,0x20,0x95,0xE6,0x20,0xEA,0xE6,0xA6,0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C, +0x72,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0,0x83,0x4C,0x70,0xE6,0x20,0x95,0xE6, +0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20,0xEA,0xE6,0x85,0x2F,0x4C,0x72,0xE6, +0x20,0xEA,0xE6,0x85,0x2F,0x30,0x41,0xA0,0x00,0x91,0x24,0x20,0xD1,0xE6,0xA5,0x22, +0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20,0xBB,0xE6,0x4C,0x18,0xE6, +0x20,0xBB,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x1D,0x20,0xEA,0xE6,0x85,0x2F, +0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9,0x89,0x85,0x23,0x20,0xC8,0xE6,0xA0, +0x00,0xA9,0x9B,0x91,0x24,0x20,0xD1,0xE6,0x20,0xD8,0xE6,0x4C,0x72,0xE6,0xA5,0x22, +0x25,0x2A,0xD0,0x05,0xA0,0x87,0x4C,0x70,0xE6,0x20,0x95,0xE6,0xB0,0xF8,0xA5,0x28, +0x05,0x29,0xD0,0x06,0xA5,0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F, +0x20,0xEA,0xE6,0x08,0x20,0xD1,0xE6,0x20,0xBB,0xE6,0x28,0x30,0x1D,0xA5,0x22,0x29, +0x02,0xD0,0x06,0xA5,0x2F,0xC9,0x9B,0xF0,0x11,0xA5,0x28,0x05,0x29,0xD0,0xDB,0xA5, +0x22,0x29,0x02,0xD0,0x05,0xA9,0x9B,0x20,0xEA,0xE6,0x20,0xD8,0xE6,0x4C,0x72,0xE6, +0x84,0x23,0xA4,0x2E,0xB9,0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00, +0x8E,0xE9,0x02,0xB5,0x20,0x99,0x40,0x03,0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F, +0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0,0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9, +0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85,0x2D,0xA4,0x17,0xB9,0x2A,0xE7,0xA8,0xB1, +0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86,0x2C,0x18,0x60,0xA5,0x28,0xD0,0x02,0xC6, +0x29,0xC6,0x28,0xA5,0x28,0x05,0x29,0x60,0xA5,0x24,0xD0,0x02,0xC6,0x25,0xC6,0x24, +0x60,0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28, +0x85,0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0xF4,0xE6,0x84, +0x23,0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0x38, +0xA0,0x01,0xB1,0x24,0xE9,0x31,0x30,0x04,0xC9,0x09,0x90,0x02,0xA9,0x00,0x85,0x21, +0xE6,0x21,0xA0,0x00,0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x09,0x88, +0x88,0x88,0x10,0xF6,0xA0,0x82,0x38,0x60,0x98,0x85,0x20,0x18,0x60,0x00,0x04,0x04, +0x04,0x04,0x06,0x06,0x06,0x06,0x02,0x08,0x0A,0xA5,0x08,0xF0,0x25,0xA9,0xE9,0x85, +0x4A,0xA9,0x03,0x85,0x4B,0xA0,0x12,0x18,0xB1,0x4A,0xAA,0xC8,0x71,0x4A,0xF0,0x26, +0xB1,0x4A,0x85,0x4B,0x86,0x4A,0x20,0x56,0xCB,0xD0,0x1B,0x20,0x94,0xE8,0xB0,0x16, +0x90,0xE3,0xA9,0x00,0x8D,0xFB,0x03,0x8D,0xFC,0x03,0xA9,0x4F,0xD0,0x2D,0xA9,0x00, +0xA8,0x20,0xBE,0xE7,0x10,0x01,0x60,0x18,0xAD,0xE7,0x02,0x6D,0xEA,0x02,0x8D,0x12, +0x03,0xAD,0xE8,0x02,0x6D,0xEB,0x02,0x8D,0x13,0x03,0x38,0xAD,0xE5,0x02,0xED,0x12, +0x03,0xAD,0xE6,0x02,0xED,0x13,0x03,0xB0,0x09,0xA9,0x4E,0xA8,0x20,0xBE,0xE7,0x4C, +0x6E,0xE7,0xAD,0xEC,0x02,0xAE,0xE7,0x02,0x8E,0xEC,0x02,0xAE,0xE8,0x02,0x8E,0xED, +0x02,0x20,0xDE,0xE7,0x30,0xE3,0x38,0x20,0x9E,0xE8,0xB0,0xDD,0x90,0xB0,0x48,0xA2, +0x09,0xBD,0xD4,0xE7,0x9D,0x00,0x03,0xCA,0x10,0xF7,0x8C,0x0B,0x03,0x68,0x8D,0x0A, +0x03,0x4C,0x59,0xE4,0x4F,0x01,0x40,0x40,0xEA,0x02,0x1E,0x00,0x04,0x00,0x8D,0x13, +0x03,0xA2,0x00,0x8E,0x12,0x03,0xCA,0x8E,0x15,0x03,0xAD,0xEC,0x02,0x6A,0x90,0x08, +0xEE,0xEC,0x02,0xD0,0x03,0xEE,0xED,0x02,0xAD,0xEC,0x02,0x8D,0xD1,0x02,0xAD,0xED, +0x02,0x8D,0xD2,0x02,0xA9,0x16,0x8D,0xCF,0x02,0xA9,0xE8,0x8D,0xD0,0x02,0xA9,0x80, +0x8D,0xD3,0x02,0x4C,0x45,0xC7,0xAE,0x15,0x03,0xE8,0x8E,0x15,0x03,0xF0,0x08,0xAE, +0x15,0x03,0xBD,0x7D,0x03,0x18,0x60,0xA9,0x80,0x8D,0x15,0x03,0x20,0x33,0xE8,0x10, +0xEE,0x38,0x60,0xA2,0x0B,0xBD,0x51,0xE8,0x9D,0x00,0x03,0xCA,0x10,0xF7,0xAE,0x12, +0x03,0x8E,0x0A,0x03,0xE8,0x8E,0x12,0x03,0xAD,0x13,0x03,0x8D,0x00,0x03,0x4C,0x59, +0xE4,0x00,0x01,0x26,0x40,0xFD,0x03,0x1E,0x00,0x80,0x00,0x00,0x00,0x8C,0x12,0x03, +0x8D,0x13,0x03,0xA9,0xE9,0x85,0x4A,0xA9,0x03,0x85,0x4B,0xA0,0x12,0xB1,0x4A,0xAA, +0xC8,0xB1,0x4A,0xCD,0x13,0x03,0xD0,0x07,0xEC,0x12,0x03,0xD0,0x02,0x18,0x60,0xC9, +0x00,0xD0,0x06,0xE0,0x00,0xD0,0x02,0x38,0x60,0x86,0x4A,0x85,0x4B,0x20,0x56,0xCB, +0xD0,0xF5,0xF0,0xD7,0x38,0x08,0xB0,0x28,0x8D,0xED,0x02,0x8C,0xEC,0x02,0x08,0xA9, +0x00,0xA8,0x20,0x5D,0xE8,0xB0,0x27,0xA0,0x12,0xAD,0xEC,0x02,0x91,0x4A,0xAA,0xC8, +0xAD,0xED,0x02,0x91,0x4A,0x86,0x4A,0x85,0x4B,0xA9,0x00,0x91,0x4A,0x88,0x91,0x4A, +0x20,0x00,0xE9,0x90,0x0C,0xAD,0xED,0x02,0xAC,0xEC,0x02,0x20,0x15,0xE9,0x28,0x38, +0x60,0x28,0xB0,0x09,0xA9,0x00,0xA0,0x10,0x91,0x4A,0xC8,0x91,0x4A,0x18,0xA0,0x10, +0xAD,0xE7,0x02,0x71,0x4A,0x8D,0xE7,0x02,0xC8,0xAD,0xE8,0x02,0x71,0x4A,0x8D,0xE8, +0x02,0xA0,0x0F,0xA9,0x00,0x91,0x4A,0x20,0x56,0xCB,0xA0,0x0F,0x91,0x4A,0x18,0x60, +0x18,0xA5,0x4A,0x69,0x0C,0x8D,0x12,0x03,0xA5,0x4B,0x69,0x00,0x8D,0x13,0x03,0x6C, +0x12,0x03,0x4C,0x72,0xC2,0x20,0x5D,0xE8,0xB0,0x3B,0xA8,0xA5,0x4A,0x48,0xA5,0x4B, +0x48,0x86,0x4A,0x84,0x4B,0xAD,0x44,0x02,0xD0,0x0F,0xA0,0x10,0x18,0xB1,0x4A,0xC8, +0x71,0x4A,0xD0,0x1F,0x20,0x56,0xCB,0xD0,0x1A,0xA0,0x12,0xB1,0x4A,0xAA,0xC8,0xB1, +0x4A,0xA8,0x68,0x85,0x4B,0x68,0x85,0x4A,0x98,0xA0,0x13,0x91,0x4A,0x88,0x8A,0x91, +0x4A,0x18,0x60,0x68,0x68,0x38,0x60,0x00,0x00,0x4C,0x33,0xC9,0xA9,0x3C,0x8D,0x02, +0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03,0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2, +0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85,0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03, +0x4C,0x9D,0xEB,0xA9,0x00,0x8D,0x0F,0x03,0xA9,0x01,0x8D,0xBD,0x02,0xA9,0x0D,0x8D, +0x9C,0x02,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D,0x06,0xD2,0x18,0xAD,0x00,0x03, +0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02,0x03,0x8D,0x3B,0x02,0xAD,0x0A, +0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02,0x18,0xA9,0x3A,0x85,0x32,0x69, +0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0x34,0x8D,0x03,0xD3,0x20,0xAF, +0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x08,0xCE,0x9C,0x02,0x10,0xB4,0x4C,0x22, +0xEA,0xAD,0x03,0x03,0x10,0x0D,0xA9,0x0D,0x8D,0x9C,0x02,0x20,0x87,0xEB,0x20,0xAF, +0xEC,0xF0,0x2F,0x20,0x9A,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20,0xC0,0xEC,0xF0,0x12, +0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1E,0x20,0x87,0xEB,0x20, +0xFD,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30,0xA5,0x30,0xC9,0x01, +0xF0,0x08,0xCE,0xBD,0x02,0x30,0x03,0x4C,0x8D,0xE9,0x20,0x84,0xEC,0xA9,0x00,0x85, +0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18,0xA9,0x3E,0x85, +0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF,0x85,0x3C,0x20, +0xFD,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02,0xC9,0x41,0xF0, +0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30,0xD0,0x04,0xA9, +0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F,0x02,0xD0,0x02, +0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20,0x17,0xEC,0xA0, +0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85,0x31,0xA5,0x11, +0xD0,0x03,0x4C,0xC7,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x84,0xEC,0x60,0x98,0x48,0xE6, +0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35,0x90,0x1C,0xA5, +0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85,0x3B,0xD0,0x09,0xA5,0x10, +0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40,0xA0,0x00,0xB1,0x32,0x8D, +0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xD7,0xEA,0xA5,0x3B,0xF0,0x0B, +0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2,0x68,0x40,0xA9,0x00,0xAC, +0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9,0x01,0x85,0x30,0x20,0x40, +0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C,0xC7,0xED,0xAD,0x17,0x03, +0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30,0x60,0x98,0x48,0xAD,0x0F, +0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29,0x20,0xD0,0x04,0xA0,0x8E, +0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31,0xF0,0x04,0xA0,0x8F,0x84, +0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D,0xD2,0xA0,0x00,0x91,0x32, +0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5, +0x34,0xA5,0x33,0xE5,0x35,0x90,0xDE,0xA5,0x3C,0xF0,0x06,0xA9,0x00,0x85,0x3C,0xF0, +0xD0,0xA9,0xFF,0x85,0x38,0xD0,0xCE,0x18,0xAD,0x04,0x03,0x85,0x32,0x6D,0x08,0x03, +0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09,0x03,0x85,0x35,0x60,0xAD,0x03,0x03, +0x10,0x32,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0x20,0x17,0xEC,0xA6, +0x62,0xBC,0x15,0xEE,0xAD,0x0B,0x03,0x30,0x03,0xBC,0x11,0xEE,0xA2,0x00,0x20,0xE2, +0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x87,0xEB,0x20,0x88, +0xEA,0x4C,0x04,0xEC,0xA9,0xFF,0x8D,0x0F,0x03,0xA6,0x62,0xBC,0x17,0xEE,0xAD,0x0B, +0x03,0x30,0x03,0xBC,0x13,0xEE,0xA2,0x00,0x20,0xE2,0xED,0xA9,0x34,0x8D,0x02,0xD3, +0xAD,0x17,0x03,0xD0,0xFB,0x20,0x87,0xEB,0x20,0x9A,0xEC,0x20,0xE2,0xED,0x20,0x3D, +0xED,0x20,0xFD,0xEA,0xAD,0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x2A, +0xEA,0xA9,0x00,0x8D,0x17,0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00, +0x03,0xC0,0x60,0xD0,0x0C,0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00, +0xD2,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x56,0xEC, +0xA9,0x07,0x2D,0x32,0x02,0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2, +0xA9,0xC7,0x25,0x10,0x09,0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2, +0xA2,0x06,0xA9,0xA8,0xA4,0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10, +0xF9,0xA9,0xA0,0x8D,0x05,0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2, +0x8D,0x03,0xD2,0x60,0xEA,0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06, +0xA9,0x00,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8, +0x29,0x3F,0xAA,0x98,0x6A,0x29,0xC0,0xA8,0x60,0x2C,0xEB,0xAD,0xEA,0xEC,0xEA,0xA2, +0x01,0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x20,0x88,0xEA,0xA0,0x02,0xA2,0x00, +0x20,0xE2,0xED,0x20,0x37,0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x2E, +0xED,0x8D,0x10,0x03,0xAD,0x0C,0x03,0x20,0x2E,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03, +0x38,0xED,0x0C,0x03,0x8D,0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA6, +0x62,0xA9,0x00,0x38,0xFD,0x19,0xEE,0x18,0x7D,0x19,0xEE,0x88,0x10,0xF9,0x18,0x6D, +0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38,0xE9,0x16,0xAA,0x98,0x29,0x07,0xA8,0xA9, +0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0,0x00,0x38,0xE9,0x07,0x10,0x01,0x88,0x18, +0x7D,0xF9,0xED,0x8D,0xEE,0x02,0x98,0x7D,0xFA,0xED,0x8D,0xEF,0x02,0x60,0xC9,0x7C, +0x30,0x04,0x38,0xE9,0x7C,0x60,0x18,0xA6,0x62,0x7D,0x1B,0xEE,0x60,0xA5,0x11,0xD0, +0x03,0x4C,0xC7,0xED,0x78,0xAD,0x17,0x03,0xD0,0x02,0xF0,0x25,0xAD,0x0F,0xD2,0x29, +0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4,0xA4,0x14,0x8E,0x0C,0x03,0x8C,0x0D, +0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5,0x11,0xF0,0x5B,0xAD,0x17,0x03,0xD0, +0x04,0x58,0x4C,0x27,0xEB,0xAD,0x0F,0xD2,0x29,0x10,0xCD,0x16,0x03,0xF0,0xE9,0x8D, +0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30,0x0C,0xAD,0x0B,0xD4,0xA4,0x14,0x20, +0xC8,0xEC,0xA0,0x09,0xD0,0xD2,0xAD,0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D, +0x06,0xD2,0xA9,0x00,0x8D,0x0F,0xD2,0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91, +0x32,0xC8,0x91,0x32,0xA9,0xAA,0x85,0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5, +0x33,0x69,0x00,0x85,0x33,0x58,0x60,0x20,0x84,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0xA9, +0x3C,0x8D,0x03,0xD3,0xA9,0x80,0x85,0x30,0xAE,0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C, +0x2A,0xEA,0xA9,0x11,0x8D,0x26,0x02,0xA9,0xEC,0x8D,0x27,0x02,0xA9,0x01,0x78,0x20, +0x5C,0xE4,0xA9,0x01,0x8D,0x17,0x03,0x58,0x60,0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9, +0x04,0x54,0x05,0xAF,0x05,0x0A,0x06,0x65,0x06,0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0, +0x07,0xB4,0x96,0x78,0x64,0x0F,0x0D,0x0A,0x08,0x83,0x9C,0x07,0x20,0x18,0x10,0x0A, +0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4,0xC4,0x1C,0x10,0x64,0xC4,0x17,0x17,0x0B, +0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x17,0x0B,0xBF,0x61,0x13,0x13,0x09, +0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x13,0x09,0x9F,0x41,0x02,0x06,0x07, +0x08,0x09,0x0A,0x0B,0x0D,0x0F,0x0F,0x0F,0x0F,0x04,0x05,0x0C,0x0E,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x03,0x02,0x02, +0x01,0x01,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x03,0x28,0x14,0x14, +0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x28,0x28,0xA0,0xA0,0x18,0x18,0x0C, +0x18,0x30,0x30,0x60,0x60,0xC0,0xC0,0xC0,0xC0,0x18,0x0C,0xC0,0xC0,0x00,0x00,0x00, +0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01,0x01,0x00,0x00,0x03,0x02,0xFF,0xF0,0x0F, +0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x48,0x98,0x48,0x8A, +0xA2,0x00,0xDD,0x1A,0x03,0xF0,0x1E,0xE8,0xE8,0xE8,0xE0,0x22,0x30,0xF4,0xA2,0x00, +0xA8,0xA9,0x00,0xDD,0x1A,0x03,0xF0,0x13,0xE8,0xE8,0xE8,0xE0,0x22,0x30,0xF4,0x68, +0x68,0xA0,0xFF,0x38,0x60,0x68,0xA8,0x68,0xE8,0x38,0x60,0x98,0x9D,0x1A,0x03,0x68, +0x9D,0x1B,0x03,0x68,0x9D,0x1C,0x03,0x18,0x60,0xA0,0x00,0xB1,0x24,0xA4,0x21,0x20, +0xBE,0xE7,0x10,0x03,0xA0,0x82,0x60,0xA9,0x7F,0x85,0x20,0xA9,0x25,0x85,0x26,0xA9, +0xEF,0x85,0x27,0xAD,0xEC,0x02,0xAE,0x2E,0x00,0x9D,0x4D,0x03,0xA0,0x00,0xB1,0x24, +0x9D,0x4C,0x03,0xA0,0x01,0x60,0x48,0x8A,0x48,0x29,0x0F,0xD0,0x10,0xE0,0x80,0x10, +0x0C,0xAD,0xE9,0x02,0xD0,0x0B,0xA0,0x82,0x68,0x68,0xC0,0x00,0x60,0xA0,0x86,0x30, +0xF7,0x8E,0x2E,0x00,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8,0xC0,0x0C, +0x30,0xF4,0x20,0x29,0xCA,0x30,0xE1,0x68,0xAA,0x68,0xA8,0xA5,0x27,0x48,0xA5,0x26, +0x48,0x98,0xA0,0x92,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x05,0xFD,0xA9,0xFF, +0x8D,0xFC,0x02,0xAD,0xE4,0x02,0x85,0x6A,0xA9,0x40,0x8D,0xBE,0x02,0xA9,0x51,0x85, +0x79,0xA9,0xFB,0x85,0x7A,0xA9,0x11,0x85,0x60,0xA9,0xFC,0x85,0x61,0x60,0xA5,0x2B, +0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F,0x85,0x2A,0xA9,0x00,0x85,0x57,0xC9,0x10, +0x90,0x05,0xA9,0x91,0x4C,0x54,0xF1,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0xCC,0x8D,0x6B, +0x02,0xA9,0x02,0x8D,0xF3,0x02,0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05, +0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x40,0x8D,0x0E,0xD4,0x2C,0x6E,0x02,0x10,0x0C, +0xA9,0xC4,0x8D,0x00,0x02,0xA9,0xFC,0x8D,0x01,0x02,0xA9,0xC0,0x8D,0x0E,0xD4,0xA9, +0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01,0x99, +0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0x08,0xFB,0x9D,0xC4,0x02,0xCA,0x10,0xF7, +0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x4D,0xEE, +0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x1D,0xEE,0xA9,0x28,0x20,0x7A,0xF5,0x88,0xD0, +0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8,0xE0,0x08,0x90,0x1F,0xE0,0x0F,0xF0, +0x0D,0xE0,0x0C,0xB0,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10, +0x20,0x7A,0xF5,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5, +0x64,0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x78, +0xF5,0xBD,0x5D,0xEE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0x20,0x65,0xF5,0xA5, +0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA9,0x41,0x20,0x70,0xF5,0x86,0x66,0xA9,0x18, +0x8D,0xBF,0x02,0xA5,0x57,0xC9,0x0C,0xB0,0x04,0xC9,0x09,0xB0,0x39,0xA5,0x2A,0x29, +0x10,0xF0,0x33,0xA9,0x04,0x8D,0xBF,0x02,0xA2,0x02,0xAD,0x6E,0x02,0xF0,0x03,0x20, +0xA0,0xF5,0xA9,0x02,0x20,0x69,0xF5,0xCA,0x10,0xF8,0xA4,0x6A,0x88,0x98,0x20,0x70, +0xF5,0xA9,0x60,0x20,0x70,0xF5,0xA9,0x42,0x20,0x69,0xF5,0x18,0xA9,0x10,0x65,0x66, +0xA8,0xBE,0x2D,0xEE,0xD0,0x15,0xA4,0x66,0xBE,0x2D,0xEE,0xA5,0x57,0xD0,0x0C,0xAD, +0x6E,0x02,0xF0,0x07,0x20,0xA0,0xF5,0xA9,0x22,0x85,0x51,0xA5,0x51,0x20,0x70,0xF5, +0xCA,0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x26,0xC9,0x0F,0xF0,0x04,0xC9,0x0C,0xB0, +0x1E,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20,0x70,0xF5,0xA9,0x00,0x20,0x70,0xF5, +0xA5,0x51,0x09,0x40,0x20,0x70,0xF5,0xA5,0x51,0x20,0x70,0xF5,0xCA,0xD0,0xF8,0xA5, +0x59,0x20,0x70,0xF5,0xA5,0x58,0x20,0x70,0xF5,0xA5,0x51,0x09,0x40,0x20,0x70,0xF5, +0xA9,0x70,0x20,0x70,0xF5,0xA9,0x70,0x20,0x70,0xF5,0xA5,0x64,0x8D,0x30,0x02,0xA5, +0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x70,0xF5,0xA5,0x64,0x8D,0xE5,0x02,0xA5,0x65, +0x8D,0xE6,0x02,0xA0,0x01,0xAD,0x30,0x02,0x91,0x68,0xC8,0xAD,0x31,0x02,0x91,0x68, +0xA5,0x4C,0x10,0x10,0x8D,0xEC,0x03,0x20,0x94,0xEF,0xAD,0xEC,0x03,0xA0,0x00,0x8C, +0xEC,0x03,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0x20,0xF4,0x8D,0x90,0x02, +0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02,0x4C,0x0B,0xF2, +0x20,0xCA,0xF6,0x20,0x8F,0xF1,0x20,0x6A,0xF7,0x20,0x0A,0xF6,0x4C,0x1E,0xF2,0x20, +0xAC,0xF5,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10,0xF9,0x8D,0xFA, +0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0xC9,0x7D,0xD0,0x06,0x20,0x20,0xF4,0x4C,0x0B, +0xF2,0x20,0xCA,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0,0x06,0x20,0x61,0xF6,0x4C,0x0B, +0xF2,0x20,0xCA,0xF1,0x20,0x0E,0xF6,0x4C,0x0B,0xF2,0xAD,0xFF,0x02,0xD0,0xFB,0xA2, +0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB,0x02,0xA8,0x2A,0x2A,0x2A,0x2A, +0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0x49,0xFB,0x8D,0xFA,0x02,0x20,0xAC,0xF5,0xAD, +0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0xF2,0xF1,0x2D,0xA0,0x02,0x85,0x50,0xAD, +0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64,0x60,0x20,0x8F,0xF1,0x85,0x5D, +0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49,0x80,0x20,0xE9,0xF1,0xA4,0x4C, +0x4C,0x26,0xF2,0x4C,0xFC,0xC8,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x2C,0x6E, +0x02,0x10,0xEB,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x00,0x8D,0x6E,0x02,0xA9,0xCE,0x8D, +0x00,0x02,0xA9,0xC0,0x8D,0x01,0x02,0x4C,0x94,0xEF,0x20,0x62,0xF9,0x20,0xBC,0xF6, +0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D,0x20,0xFD,0xF2,0x84, +0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xBE,0xF2,0x20,0x62,0xF9,0xA5,0x63, +0xC9,0x71,0xD0,0x03,0x20,0x56,0xF5,0x4C,0x5C,0xF2,0x20,0x18,0xF7,0x20,0xB1,0xF8, +0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11,0xC6,0x6B,0xF0,0x0D, +0xA5,0x4C,0x30,0xF8,0x20,0x80,0xF1,0x8D,0xFB,0x02,0x4C,0x62,0xF9,0x20,0x61,0xF6, +0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x0B,0xF2,0x84,0x4C,0x4C,0x62,0xF9,0x6C,0x64,0x00, +0x8D,0xFB,0x02,0x20,0x62,0xF9,0x20,0xBC,0xF6,0xA9,0x00,0x8D,0xE8,0x03,0x20,0x18, +0xF7,0x20,0x3C,0xF9,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xB4,0xF1,0x4C,0x62,0xF9,0xAD, +0xFE,0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xAD,0xE8,0x03,0xF0,0x05, +0x8A,0x18,0x69,0x2D,0xAA,0xBD,0x0D,0xFB,0x85,0x64,0xBD,0x0E,0xFB,0x85,0x65,0x20, +0xAD,0xF2,0x20,0x0B,0xF2,0x4C,0x62,0xF9,0xA9,0xFF,0x8D,0xFC,0x02,0xA9,0x00,0x8D, +0xE8,0x03,0xA5,0x2A,0x4A,0xB0,0x6F,0xA9,0x80,0xA6,0x11,0xF0,0x65,0xAD,0xFC,0x02, +0xC9,0xFF,0xF0,0xE9,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0xAE,0xDB,0x02,0xD0,0x03, +0x20,0x83,0xF9,0xA8,0xC0,0xC0,0xB0,0xD0,0xB1,0x79,0x8D,0xFB,0x02,0xAA,0x30,0x03, +0x4C,0xB4,0xF3,0xC9,0x80,0xF0,0xC1,0xC9,0x81,0xD0,0x0A,0xAD,0xB6,0x02,0x49,0x80, +0x8D,0xB6,0x02,0xB0,0xB3,0xC9,0x82,0xD0,0x0C,0xAD,0xBE,0x02,0xF0,0x0B,0xA9,0x00, +0x8D,0xBE,0x02,0xF0,0xA3,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D,0xBE,0x02,0xD0,0x98, +0xC9,0x84,0xD0,0x08,0xA9,0x80,0x8D,0xBE,0x02,0x4C,0xF8,0xF2,0xC9,0x85,0xD0,0x0B, +0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0x4C,0xDA,0xF3,0xC9,0x89,0xD0,0x10,0xAD, +0xDB,0x02,0x49,0xFF,0x8D,0xDB,0x02,0xD0,0x03,0x20,0x83,0xF9,0x4C,0xF8,0xF2,0xC9, +0x8E,0xB0,0x12,0xC9,0x8A,0x90,0xF5,0xE9,0x8A,0x06,0x7C,0x10,0x02,0x09,0x04,0xA8, +0xB1,0x60,0x4C,0x2A,0xF3,0xC9,0x92,0xB0,0x0B,0xC9,0x8E,0x90,0xDF,0xE9,0x72,0xEE, +0xE8,0x03,0xD0,0x26,0xA5,0x7C,0xC9,0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90, +0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE,0x02,0xF0,0x05,0x05,0x7C,0x4C,0x23,0xF3,0x20, +0x3C,0xF9,0xF0,0x09,0xAD,0xFB,0x02,0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x1E,0xF2, +0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6,0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54, +0x4C,0x0C,0xF9,0xE6,0x54,0xA5,0x54,0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE, +0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5,0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0x8E, +0xF8,0xE6,0x55,0xA5,0x55,0xC5,0x53,0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0x0C,0xF4, +0x20,0xA6,0xF9,0xA4,0x64,0xA9,0x00,0x85,0x64,0x91,0x64,0xC8,0xD0,0xFB,0xE6,0x65, +0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2,0x02,0xC8,0xC0,0x04,0x90,0xF8, +0x20,0x97,0xF9,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85,0x54,0x85,0x56,0x85,0x6C,0x60, +0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52,0xD0,0x03,0x20,0x23,0xF9,0x20, +0x00,0xF4,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54,0xF0,0x03,0x20,0xE6,0xF3,0xA9, +0x20,0x8D,0xFB,0x02,0x20,0xCA,0xF1,0x4C,0x8E,0xF8,0x20,0x11,0xF4,0xA5,0x55,0xC5, +0x52,0xD0,0x08,0x20,0x65,0xF6,0x20,0x58,0xF7,0xB0,0x07,0xA5,0x63,0x20,0x5D,0xF7, +0x90,0xE8,0x4C,0x8E,0xF8,0xA5,0x63,0x4C,0x3E,0xF7,0xA5,0x63,0x4C,0x4A,0xF7,0x20, +0x4C,0xF9,0x20,0x8F,0xF1,0x85,0x7D,0xA9,0x00,0x8D,0xBB,0x02,0x20,0xE9,0xF1,0xA5, +0x63,0x48,0x20,0x12,0xF6,0x68,0xC5,0x63,0xB0,0x0C,0xA5,0x7D,0x48,0x20,0x8F,0xF1, +0x85,0x7D,0x68,0x4C,0xAC,0xF4,0x20,0x57,0xF9,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54, +0xD0,0xF7,0x4C,0x8E,0xF8,0x20,0x4C,0xF9,0x20,0xAC,0xF5,0xA5,0x64,0x85,0x68,0xA5, +0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0x0A,0xF6,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54, +0xCD,0xBF,0x02,0xB0,0x09,0x20,0x8F,0xF1,0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00, +0x98,0x91,0x68,0x20,0x18,0xF9,0x20,0x57,0xF9,0x4C,0x8E,0xF8,0x38,0x20,0xC2,0xF7, +0xA5,0x52,0x85,0x55,0x20,0xAC,0xF5,0x20,0x8E,0xF7,0x20,0xE2,0xF7,0x4C,0x8E,0xF8, +0x20,0x8E,0xF8,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20,0x5B,0xF7,0x08,0x98, +0x18,0x69,0x78,0x28,0x20,0x3C,0xF7,0xC8,0xC0,0x18,0xD0,0xED,0xAD,0xB4,0x02,0x09, +0x01,0x8D,0xB4,0x02,0xA9,0x00,0x85,0x55,0x20,0xAC,0xF5,0x20,0x2A,0xF8,0x20,0x58, +0xF7,0x90,0xD4,0x4C,0x1B,0xF4,0xA0,0x20,0x20,0x83,0xF9,0x88,0x10,0xFA,0x60,0x20, +0x40,0xF4,0x4C,0xE6,0xF3,0xA9,0x02,0xD0,0x11,0xAC,0x6E,0x02,0xF0,0x02,0x09,0x20, +0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9,0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30, +0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64,0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5, +0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64,0x90,0x04,0xA9,0x93,0x85,0x4C,0x60, +0xA9,0x02,0x20,0x70,0xF5,0xA9,0xA2,0x20,0x70,0xF5,0xCA,0x60,0xA2,0x01,0x86,0x66, +0xCA,0x86,0x65,0xA5,0x54,0x0A,0x26,0x65,0x0A,0x26,0x65,0x65,0x54,0x85,0x64,0x90, +0x02,0xE6,0x65,0xA4,0x57,0xBE,0x6D,0xEE,0x06,0x64,0x26,0x65,0xCA,0xD0,0xF9,0xA5, +0x56,0x4A,0xA5,0x55,0xBE,0x9D,0xEE,0xF0,0x06,0x6A,0x06,0x66,0xCA,0xD0,0xFA,0x65, +0x64,0x90,0x02,0xE6,0x65,0x18,0x65,0x58,0x85,0x64,0x85,0x5E,0xA5,0x65,0x65,0x59, +0x85,0x65,0x85,0x5F,0xBE,0x9D,0xEE,0xBD,0x04,0xFB,0x25,0x55,0x65,0x66,0xA8,0xB9, +0xAC,0xEE,0x8D,0xA0,0x02,0x85,0x6F,0xA0,0x00,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B, +0x85,0x7D,0xE6,0x63,0xE6,0x55,0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x7D, +0xEE,0xF0,0x0A,0xE0,0x00,0xD0,0xE2,0xC5,0x53,0xF0,0xDE,0x90,0xDC,0xE0,0x08,0xD0, +0x04,0xA5,0x56,0xF0,0xD4,0xA5,0x57,0xD0,0x2C,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5, +0x7D,0xF0,0x22,0x20,0x61,0xF6,0x4C,0xAB,0xF6,0x20,0x65,0xF6,0xA5,0x54,0x18,0x69, +0x78,0x20,0x5D,0xF7,0x90,0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0x0D,0xF5,0x4C,0x8E, +0xF8,0xA9,0x9B,0x85,0x7D,0x20,0x97,0xF9,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57, +0xA0,0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x8D,0xEE,0xC5,0x54, +0xD0,0x29,0x8C,0x9D,0x02,0x8A,0xD0,0x23,0xA5,0x7D,0xF0,0x1F,0xC9,0x9B,0xF0,0x01, +0x18,0x20,0xF7,0xF7,0xEE,0xBB,0x02,0xC6,0x6C,0x10,0x02,0xE6,0x6C,0xCE,0x9D,0x02, +0xAD,0xB2,0x02,0x38,0x10,0xEB,0xAD,0x9D,0x02,0x85,0x54,0x4C,0x8E,0xF8,0x38,0xB5, +0x70,0xE5,0x74,0x95,0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9, +0x04,0xF0,0x07,0xA5,0x57,0xF0,0x03,0x20,0x94,0xEF,0xA9,0x27,0xC5,0x53,0xB0,0x02, +0x85,0x53,0xA6,0x57,0xBD,0x8D,0xEE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0, +0x0A,0xA5,0x56,0xF0,0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD, +0x7D,0xEE,0xC5,0x55,0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11, +0x85,0x11,0xF0,0x06,0x60,0x20,0x40,0xF4,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B, +0x10,0x03,0x4C,0x62,0xF9,0x4C,0x1E,0xF2,0xA0,0x00,0xA5,0x5F,0xF0,0x04,0xA5,0x5D, +0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD,0xB4,0xEE,0x85,0x6E,0x68,0x4A,0x4A,0x4A, +0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02,0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0x23, +0xF7,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3,0x02,0x60,0x20,0x23,0xF7,0xA5,0x6E,0x49, +0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60,0xA5,0x54,0x18,0x69,0x78,0x20,0x23,0xF7, +0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01,0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0, +0x0E,0xB0,0x17,0xC0,0x0C,0xB0,0x04,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29, +0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0x4D,0xFB,0x8D,0xFB,0x02,0x60,0xA6,0x6A, +0xCA,0x86,0x69,0x86,0x67,0xA9,0xB0,0x85,0x68,0xA9,0xD8,0x85,0x66,0xA6,0x54,0xE8, +0xEC,0xBF,0x02,0xF0,0xE8,0xA0,0x27,0xB1,0x68,0x91,0x66,0x88,0x10,0xF9,0x38,0xA5, +0x68,0x85,0x66,0xE9,0x28,0x85,0x68,0xA5,0x69,0x85,0x67,0xE9,0x00,0x85,0x69,0x4C, +0x9F,0xF7,0x08,0xA0,0x16,0x98,0x20,0x5A,0xF7,0x08,0x98,0x18,0x69,0x79,0x28,0x20, +0x3C,0xF7,0x88,0x30,0x04,0xC4,0x54,0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C, +0x3C,0xF7,0xA5,0x52,0x85,0x55,0x20,0xAC,0xF5,0x38,0xA5,0x53,0xE5,0x52,0xA8,0xA9, +0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0x32,0xF7,0xAD,0x6E,0x02,0xF0,0x28,0xAD, +0x6C,0x02,0xD0,0xFB,0xA9,0x08,0x8D,0x6C,0x02,0xAD,0x6C,0x02,0xC9,0x01,0xD0,0xF9, +0xAD,0x0B,0xD4,0xC9,0x40,0xB0,0xF9,0xA2,0x0D,0xAD,0xBF,0x02,0xC9,0x04,0xD0,0x02, +0xA2,0x70,0xEC,0x0B,0xD4,0xB0,0xFB,0x20,0xA6,0xF9,0xA5,0x64,0xA6,0x65,0xE8,0xE4, +0x6A,0xF0,0x06,0x38,0xE9,0x10,0x4C,0x2E,0xF8,0x69,0x27,0xD0,0x0A,0xA6,0x65,0xE8, +0xE4,0x6A,0xF0,0x38,0x18,0x69,0x10,0xA8,0x85,0x7E,0x38,0xA5,0x64,0xE5,0x7E,0x85, +0x64,0xB0,0x02,0xC6,0x65,0xA5,0x64,0x18,0x69,0x28,0x85,0x7E,0xA5,0x65,0x69,0x00, +0x85,0x7F,0xB1,0x7E,0x91,0x64,0xC8,0xD0,0xF9,0xA0,0x10,0xA5,0x64,0xC9,0xD8,0xF0, +0x0B,0x18,0x69,0xF0,0x85,0x64,0x90,0xDD,0xE6,0x65,0xD0,0xD9,0xA6,0x6A,0xCA,0x86, +0x7F,0xA2,0xD8,0x86,0x7E,0xA9,0x00,0xA0,0x27,0x91,0x7E,0x88,0x10,0xFB,0xA9,0x00, +0x85,0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x5A,0xF7,0xB0,0x0C,0xA5,0x63,0x18, +0x69,0x28,0x85,0x63,0xC6,0x51,0x4C,0x96,0xF8,0x18,0xA5,0x63,0x65,0x55,0x85,0x63, +0x60,0x20,0x4C,0xF9,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9, +0x01,0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5, +0x55,0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0xEA,0xF8,0x20,0x0A,0xF6,0xE6,0x6B,0xA5, +0x63,0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x00,0xF4,0x20,0x8F,0xF1,0xD0,0x17,0xC6, +0x6B,0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x00,0xF4,0xA5,0x55,0xC5,0x53,0xD0,0x02, +0xC6,0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x4C,0x57,0xF9,0x20,0x8E,0xF8,0xA5, +0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54, +0x20,0x8E,0xF8,0xA5,0x63,0xC5,0x52,0xF0,0xEE,0x20,0xAC,0xF5,0xA5,0x53,0x38,0xE5, +0x52,0xA8,0xB1,0x64,0xD0,0xE1,0x88,0x10,0xF9,0x4C,0x27,0xF5,0xA2,0x2D,0xBD,0x0D, +0xFB,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5,0x54, +0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA,0x10, +0xF8,0x60,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17,0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90, +0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10,0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B, +0x4C,0x1E,0xF2,0xA2,0x7E,0x48,0x8E,0x1F,0xD0,0xAD,0x0B,0xD4,0xCD,0x0B,0xD4,0xF0, +0xFB,0xCA,0xCA,0x10,0xF1,0x68,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0, +0x02,0xA5,0x52,0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2, +0x00,0xA5,0x22,0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E, +0xB7,0x02,0xA5,0x54,0x8D,0xF5,0x02,0xA5,0x55,0x8D,0xF6,0x02,0xA5,0x56,0x8D,0xF7, +0x02,0xA9,0x01,0x8D,0xF8,0x02,0x8D,0xF9,0x02,0x38,0xAD,0xF5,0x02,0xE5,0x5A,0x85, +0x76,0xB0,0x0E,0xA9,0xFF,0x8D,0xF8,0x02,0xA5,0x76,0x49,0xFF,0x18,0x69,0x01,0x85, +0x76,0x38,0xAD,0xF6,0x02,0xE5,0x5B,0x85,0x77,0xAD,0xF7,0x02,0xE5,0x5C,0x85,0x78, +0xB0,0x17,0xA9,0xFF,0x8D,0xF9,0x02,0xA5,0x77,0x49,0xFF,0x85,0x77,0xA5,0x78,0x49, +0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00,0x84,0x73,0x98, +0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8,0xA5,0x78,0x85, +0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76,0xA2,0x02,0xA8, +0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70,0xA5,0x7E,0x05, +0x7F,0xD0,0x03,0x4C,0x01,0xFB,0x18,0xA5,0x70,0x65,0x76,0x85,0x70,0x90,0x02,0xE6, +0x71,0xA5,0x71,0xC5,0x75,0x90,0x15,0xD0,0x06,0xA5,0x70,0xC5,0x74,0x90,0x0D,0x18, +0xA5,0x54,0x6D,0xF8,0x02,0x85,0x54,0xA2,0x00,0x20,0xAE,0xF6,0x18,0xA5,0x72,0x65, +0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x28,0xD0,0x06,0xA5, +0x72,0xC5,0x74,0x90,0x20,0x2C,0xF9,0x02,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9,0xFF, +0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6,0x56, +0xA2,0x02,0x20,0xAE,0xF6,0x20,0xCA,0xF6,0x20,0xCA,0xF1,0xAD,0xB7,0x02,0xF0,0x2F, +0x20,0x4C,0xF9,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0x12,0xF6,0x68, +0x85,0x54,0x20,0xCA,0xF6,0x20,0x8F,0xF1,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB,0x02, +0x20,0xCA,0xF1,0x4C,0xC9,0xFA,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0x57,0xF9,0x38, +0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C,0x4D, +0xFA,0x4C,0x1E,0xF2,0x00,0x01,0x03,0x07,0x28,0xCA,0x94,0x46,0x00,0x1B,0xE0,0xF3, +0x1C,0xE6,0xF3,0x1D,0xF3,0xF3,0x1E,0x00,0xF4,0x1F,0x11,0xF4,0x7D,0x20,0xF4,0x7E, +0x50,0xF4,0x7F,0x7A,0xF4,0x9B,0x61,0xF6,0x9C,0x20,0xF5,0x9D,0x0C,0xF5,0x9E,0x9A, +0xF4,0x9F,0x95,0xF4,0xFD,0x56,0xF5,0xFE,0xD5,0xF4,0xFF,0x9F,0xF4,0x1C,0x40,0xF4, +0x1D,0x5F,0xF5,0x1E,0x1B,0xF4,0x1F,0x0A,0xF4,0x40,0x00,0x20,0x60,0x20,0x40,0x00, +0x60,0x6C,0x6A,0x3B,0x8A,0x8B,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D, +0x3D,0x76,0x80,0x63,0x8C,0x8D,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32, +0x31,0x2C,0x20,0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77, +0x71,0x39,0x80,0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73, +0x61,0x4C,0x4A,0x3A,0x8A,0x8B,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F, +0x7C,0x56,0x80,0x43,0x8C,0x8D,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22, +0x21,0x5B,0x20,0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57, +0x51,0x28,0x80,0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53, +0x41,0x0C,0x0A,0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C, +0x1D,0x16,0x80,0x03,0x89,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD, +0x80,0x00,0x20,0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17, +0x11,0x80,0x80,0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13, +0x01,0x1C,0x1D,0x1E,0x1F,0x8E,0x8F,0x90,0x91,0x8A,0x48,0x98,0x48,0xAC,0x01,0xD3, +0xAD,0x09,0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAE,0xF1,0x02,0xD0,0x49,0xAE,0x6D,0x02, +0xC9,0x83,0xD0,0x13,0x8A,0x49,0xFF,0x8D,0x6D,0x02,0xD0,0x05,0x98,0x09,0x04,0xD0, +0x03,0x98,0x29,0xFB,0xA8,0xB0,0x26,0x8A,0xD0,0x3D,0xAD,0x09,0xD2,0xAA,0xC9,0x9F, +0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x11,0x29,0x3F,0xC9,0x11, +0xD0,0x2E,0x8E,0xDC,0x02,0xF0,0x06,0x8E,0xFC,0x02,0x8E,0xF2,0x02,0xA9,0x03,0x8D, +0xF1,0x02,0xA9,0x00,0x85,0x4D,0xAD,0xD9,0x02,0x8D,0x2B,0x02,0xAD,0x2F,0x02,0xD0, +0x06,0xAD,0xDD,0x02,0x8D,0x2F,0x02,0x8C,0x01,0xD3,0x68,0xA8,0x68,0xAA,0x68,0x40, +0xE0,0x84,0xF0,0x21,0xE0,0x94,0xD0,0xCF,0xAD,0xF4,0x02,0xAE,0x6B,0x02,0x8D,0x6B, +0x02,0x8E,0xF4,0x02,0xE0,0xCC,0xF0,0x06,0x98,0x09,0x08,0xA8,0xD0,0xBF,0x98,0x29, +0xF7,0xA8,0x4C,0x6D,0xFC,0xAD,0x2F,0x02,0xF0,0xCD,0x8D,0xDD,0x02,0xA9,0x00,0x8D, +0x2F,0x02,0xF0,0xC3,0x48,0xAD,0xC6,0x02,0x4D,0x4F,0x00,0x2D,0x4E,0x00,0x8D,0x0A, +0xD4,0x8D,0x17,0xD0,0x68,0x40,0x00,0x00,0x4C,0x83,0xF9,0xA9,0xCC,0x8D,0xEE,0x02, +0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E,0xA5,0x2A,0x29,0x0C,0xC9,0x04, +0xF0,0x05,0xC9,0x08,0xF0,0x3E,0x60,0xA9,0x00,0x8D,0x89,0x02,0x85,0x3F,0xA9,0x01, +0x20,0xFC,0xFD,0x30,0x29,0xA9,0x34,0x8D,0x02,0xD3,0xA6,0x62,0xBC,0x93,0xFE,0xBD, +0x91,0xFE,0xAA,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0,0xFB, +0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0x77,0xFD,0xA0,0x80,0xC6,0x11,0xA9,0x00, +0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0xFC,0xFD,0x30,0xEE, +0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03,0x20, +0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA6,0x62,0xBC,0x8F,0xFE,0xBD,0x8D,0xFE,0xAA, +0xA9,0x03,0x20,0x5C,0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xBC,0xAD,0x2A, +0x02,0xD0,0xF7,0xA9,0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D, +0xEC,0x8A,0x02,0xF0,0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20, +0x3F,0xFE,0x98,0x30,0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE, +0xF0,0x0D,0xC9,0xFA,0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0x7A,0xFD,0xC6, +0x3F,0xA0,0x88,0x60,0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0, +0x01,0x60,0xA9,0xFC,0x20,0x7C,0xFE,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD, +0x89,0x02,0x30,0x08,0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A, +0x8E,0x7F,0x04,0xA9,0xFA,0x20,0x7C,0xFE,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00, +0x04,0xCA,0x10,0xFA,0xA9,0xFE,0x20,0x7C,0xFE,0x4C,0xD6,0xFD,0x85,0x40,0xA5,0x14, +0x18,0xA6,0x62,0x7D,0x95,0xFE,0xAA,0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0, +0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0,0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6, +0x40,0xF0,0x0E,0x8A,0x18,0xA6,0x62,0x7D,0x97,0xFE,0xAA,0xE4,0x14,0xD0,0xFC,0xF0, +0xCD,0x20,0x36,0xFE,0x98,0x60,0xAD,0x25,0xE4,0x48,0xAD,0x24,0xE4,0x48,0x60,0x8D, +0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D,0x08,0x03,0xA9,0x03,0x8D,0x05, +0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00,0x03,0xA9,0x00,0x8D,0x01,0x03, +0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40,0xC9,0x52,0xF0,0x02,0xA0,0x80, +0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59,0xE4,0x60,0x8D,0xFF,0x03,0xA9, +0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20,0x3F,0xFE,0x60,0x04,0x03,0x80, +0xC0,0x02,0x01,0x40,0xE0,0x1E,0x19,0x0A,0x08,0xA9,0x1E,0x8D,0x14,0x03,0x60,0xEA, +0x02,0xC0,0x03,0xA9,0x04,0x8D,0xDF,0x02,0xAE,0x9F,0xFE,0xAC,0xA0,0xFE,0xA9,0x53, +0x8D,0x02,0x03,0x8D,0x0A,0x03,0x20,0x14,0xFF,0x20,0x59,0xE4,0x30,0x03,0x20,0x44, +0xFF,0x60,0x20,0xA3,0xFE,0xA9,0x00,0x8D,0xDE,0x02,0x60,0x48,0xBD,0x41,0x03,0x85, +0x21,0x20,0x4B,0xFF,0xAE,0xDE,0x02,0x68,0x9D,0xC0,0x03,0xE8,0xEC,0xDF,0x02,0xF0, +0x15,0x8E,0xDE,0x02,0xC9,0x9B,0xF0,0x03,0xA0,0x01,0x60,0xA9,0x20,0x9D,0xC0,0x03, +0xE8,0xEC,0xDF,0x02,0xD0,0xF7,0xA9,0x00,0x8D,0xDE,0x02,0xAE,0xA1,0xFE,0xAC,0xA2, +0xFE,0x20,0x14,0xFF,0x4C,0x59,0xE4,0x20,0x4B,0xFF,0xA9,0x9B,0xAE,0xDE,0x02,0xD0, +0xDC,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00,0x03,0xA5, +0x21,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9,0x40,0x8D, +0x03,0x03,0xAD,0xDF,0x02,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAD,0x14,0x03, +0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x8D,0x14,0x03,0x60,0xA0,0x57,0xA5,0x2B,0xC9, +0x4E,0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9, +0x53,0xD0,0x0C,0xA2,0x1D,0x8E,0xDF,0x02,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9, +0x4E,0xD0,0xDC,0xA2,0x00,0x86,0x8B,0x86,0x8C,0x20,0xA9,0xFF,0xE0,0x0C,0xD0,0xF9, +0xAD,0x00,0xC0,0xAE,0x01,0xC0,0xC5,0x8B,0xD0,0x06,0xE4,0x8C,0xD0,0x02,0x18,0x60, +0x38,0x60,0xA2,0x00,0x86,0x8B,0x86,0x8C,0xA2,0x0C,0x20,0xA9,0xFF,0x20,0xA9,0xFF, +0xAD,0xF8,0xFF,0xAE,0xF9,0xFF,0x4C,0x86,0xFF,0xA0,0x00,0xBD,0xD7,0xFF,0x99,0x9E, +0x00,0xE8,0xC8,0xC0,0x04,0xD0,0xF4,0xA0,0x00,0x18,0xB1,0x9E,0x65,0x8B,0x85,0x8B, +0x90,0x02,0xE6,0x8C,0xE6,0x9E,0xD0,0x02,0xE6,0x9F,0xA5,0x9E,0xC5,0xA0,0xD0,0xE9, +0xA5,0x9F,0xC5,0xA1,0xD0,0xE3,0x60,0x02,0xC0,0x00,0xD0,0x00,0x50,0x00,0x58,0x00, +0xD8,0x00,0xE0,0x00,0xE0,0xF8,0xFF,0xFA,0xFF,0x00,0x00,0x00,0x00,0x00,0x10,0x05, +0x83,0x02,0x42,0x42,0x00,0x00,0x01,0x02,0x8C,0x6C,0x18,0xC0,0xAA,0xC2,0x2C,0xC0, +}; diff --git a/MCUME_esp32/esp800/main/sio.c b/MCUME_esp32/esp800/main/sio.c new file mode 100644 index 0000000..575c914 --- /dev/null +++ b/MCUME_esp32/esp800/main/sio.c @@ -0,0 +1,55 @@ +/* + * sio.c - Serial I/O emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2010 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#define _POSIX_C_SOURCE 200112L /* for snprintf */ + +#include +#include +#include +#include + +#include "antic.h" /* ANTIC_ypos */ +#include "atari.h" +#include "cpu.h" +#include "memory.h" +#include "pokey.h" +#include "pokeysnd.h" +#include "sio.h" + + + + +/* Put a byte that comes out of POKEY. So get it here... */ +void SIO_PutByte(int byte) +{ +} + +/* Get a byte from the floppy to the pokey. */ +int SIO_GetByte(void) +{ + int byte = 0; + + return byte; +} + diff --git a/MCUME_esp32/esp800/main/sio.h b/MCUME_esp32/esp800/main/sio.h new file mode 100644 index 0000000..8a182f9 --- /dev/null +++ b/MCUME_esp32/esp800/main/sio.h @@ -0,0 +1,61 @@ +#ifndef SIO_H_ +#define SIO_H_ + + +#include /* FILENAME_MAX */ + +#include "atari.h" + +#define SIO_MAX_DRIVES 8 + +typedef enum SIO_tagUnitStatus { + SIO_OFF, + SIO_NO_DISK, + SIO_READ_ONLY, + SIO_READ_WRITE +} SIO_UnitStatus; + +extern char SIO_status[256]; +extern SIO_UnitStatus SIO_drive_status[SIO_MAX_DRIVES]; +extern char SIO_filename[SIO_MAX_DRIVES][FILENAME_MAX]; + +#define SIO_LAST_READ 0 +#define SIO_LAST_WRITE 1 +extern int SIO_last_op; +extern int SIO_last_op_time; +extern int SIO_last_drive; /* 1 .. 8 */ +extern int SIO_last_sector; + +int SIO_Mount(int diskno, const char *filename, int b_open_readonly); +void SIO_Dismount(int diskno); +void SIO_DisableDrive(int diskno); +int SIO_RotateDisks(void); +void SIO_Handler(void); + +UBYTE SIO_ChkSum(const UBYTE *buffer, int length); +void SIO_SwitchCommandFrame(int onoff); +void SIO_PutByte(int byte); +int SIO_GetByte(void); +int SIO_Initialise(int *argc, char *argv[]); +void SIO_Exit(void); + +/* Some defines about the serial I/O timing. Currently fixed! */ +#define SIO_XMTDONE_INTERVAL 15 +#define SIO_SERIN_INTERVAL 8 +#define SIO_SEROUT_INTERVAL 8 +#define SIO_ACK_INTERVAL 36 + +/* These functions are also used by the 1450XLD Parallel disk device */ +extern int SIO_format_sectorcount[SIO_MAX_DRIVES]; +extern int SIO_format_sectorsize[SIO_MAX_DRIVES]; +int SIO_ReadStatusBlock(int unit, UBYTE *buffer); +int SIO_FormatDisk(int unit, UBYTE *buffer, int sectsize, int sectcount); +void SIO_SizeOfSector(UBYTE unit, int sector, int *sz, ULONG *ofs); +int SIO_ReadSector(int unit, int sector, UBYTE *buffer); +int SIO_DriveStatus(int unit, UBYTE *buffer); +int SIO_WriteStatusBlock(int unit, const UBYTE *buffer); +int SIO_WriteSector(int unit, int sector, const UBYTE *buffer); +void SIO_StateSave(void); +void SIO_StateRead(void); + +#endif /* SIO_H_ */ diff --git a/MCUME_esp32/esp800/sdkconfig b/MCUME_esp32/esp800/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/esp800/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp800/sdkconfig.old b/MCUME_esp32/esp800/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/esp800/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp81/.DS_Store b/MCUME_esp32/esp81/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp81/.DS_Store differ diff --git a/MCUME_esp32/esp81/Makefile b/MCUME_esp32/esp81/Makefile new file mode 100644 index 0000000..81eaff7 --- /dev/null +++ b/MCUME_esp32/esp81/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := esp81 + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/esp81/components/.DS_Store b/MCUME_esp32/esp81/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/esp81/components/.DS_Store differ diff --git a/MCUME_esp32/esp81/components/Audio/.DS_Store b/MCUME_esp32/esp81/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp81/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/esp81/components/Audio/component.mk b/MCUME_esp32/esp81/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp81/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp81/components/Audio/esp32-hal-dac.c b/MCUME_esp32/esp81/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/esp81/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/esp81/components/Audio/esp32-hal-dac.h b/MCUME_esp32/esp81/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/esp81/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/esp81/components/Audio/esp32-hal-timer.c b/MCUME_esp32/esp81/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/esp81/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/esp81/components/Audio/esp32-hal-timer.h b/MCUME_esp32/esp81/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/esp81/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/esp81/components/Wire/.DS_Store b/MCUME_esp32/esp81/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/esp81/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/esp81/components/Wire/Wire.cpp b/MCUME_esp32/esp81/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/esp81/components/Wire/Wire.h b/MCUME_esp32/esp81/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/esp81/components/Wire/component.mk b/MCUME_esp32/esp81/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/esp81/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/esp81/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/esp81/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/esp81/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/esp81/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/esp81/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/esp81/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/esp81/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/esp81/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/esp81/flashapp.sh b/MCUME_esp32/esp81/flashapp.sh new file mode 100755 index 0000000..e837724 --- /dev/null +++ b/MCUME_esp32/esp81/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x080000 ../esp81/build/esp81.bin diff --git a/MCUME_esp32/esp81/main/.DS_Store b/MCUME_esp32/esp81/main/.DS_Store new file mode 100644 index 0000000..8138aec Binary files /dev/null and b/MCUME_esp32/esp81/main/.DS_Store differ diff --git a/MCUME_esp32/esp81/main/AY8910.c b/MCUME_esp32/esp81/main/AY8910.c new file mode 100644 index 0000000..9c3984b --- /dev/null +++ b/MCUME_esp32/esp81/main/AY8910.c @@ -0,0 +1,315 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.c **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.h for declarations. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "AY8910.h" +#include "emuapi.h" +#include + +static const unsigned char Envelopes[16][32] = +{ + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } +}; + +static const int Volumes[16] = +{ 0,1,2,4,6,8,11,16,23,32,45,64,90,128,180,255 }; +//{ 0,16,33,50,67,84,101,118,135,152,169,186,203,220,237,254 }; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First) +{ + static byte RegInit[16] = + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00 + }; + int J; + + /* Reset state */ + memcpy(D->R,RegInit,sizeof(D->R)); + D->EPhase = 0; + D->Clock = ClockHz>>4; + D->First = First; + D->Sync = AY8910_ASYNC; + D->Changed = 0x00; + D->EPeriod = 0; + D->ECount = 0; + D->Latch = 0x00; + + /* Set sound types */ + //SetSound(0+First,SND_MELODIC); + //SetSound(1+First,SND_MELODIC); + //SetSound(2+First,SND_MELODIC); + //SetSound(3+First,SND_NOISE); + //SetSound(4+First,SND_NOISE); + //SetSound(5+First,SND_NOISE); + + /* Silence all channels */ + for(J=0;JFreq[J]=D->Volume[J]=0; +#if HAS_SND + emu_sndPlaySound(J+First, 0, 0); +#endif + //Sound(J+First,0,0); + } +} + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V) +{ + D->Latch=V&0x0F; +} + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V) +{ + Write8910(D,D->Latch,V); +} + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D) +{ + return(D->R[D->Latch]); +} + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V) +{ + register int J,I; + + switch(R) + { + case 1: + case 3: + case 5: + V&=0x0F; + /* Fall through */ + case 0: + case 2: + case 4: + /* Write value */ + D->R[R]=V; + /* Exit if the channel is silenced */ + if(D->R[7]&(1<<(R>>1))) return; + /* Go to the first register in the pair */ + R&=0xFE; + /* Compute frequency */ + J=((int)(D->R[R+1]&0x0F)<<8)+D->R[R]; + /* Compute channel number */ + R>>=1; + /* Assign frequency */ + D->Freq[R]=D->Clock/(J? J:0x1000); + /* Compute changed channels mask */ + D->Changed|=1<R[6]=V&=0x1F; + /* Exit if noise channels are silenced */ + if(!(~D->R[7]&0x38)) return; + /* Compute and assign noise frequency */ + /* Shouldn't do <<2, but need to keep frequency down */ + J=D->Clock/((V&0x1F? (V&0x1F):0x20)<<2); + if(!(D->R[7]&0x08)) D->Freq[3]=J; + if(!(D->R[7]&0x10)) D->Freq[4]=J; + if(!(D->R[7]&0x20)) D->Freq[5]=J; + /* Compute changed channels mask */ + D->Changed|=0x38&~D->R[7]; + break; + + case 7: + /* Find changed channels */ + R=(V^D->R[7])&0x3F; + D->Changed|=R; + /* Write value */ + D->R[7]=V; + /* Update frequencies */ + for(J=0;R&&(J>=1,V>>=1) + if(R&1) + { + if(V&1) D->Freq[J]=0; + else if(J<3) + { + I=((int)(D->R[J*2+1]&0x0F)<<8)+D->R[J*2]; + D->Freq[J]=D->Clock/(I? I:0x1000); + } + else + { + /* Shouldn't do <<2, but need to keep frequency down */ + I=D->R[6]&0x1F; + D->Freq[J]=D->Clock/((I? I:0x20)<<2); + } + } + break; + + case 8: + case 9: + case 10: + /* Write value */ + D->R[R]=V&=0x1F; + /* Compute channel number */ + R-=8; + /* Compute and assign new volume */ + J=Volumes[V&0x10? Envelopes[D->R[13]&0x0F][D->EPhase]:(V&0x0F)]; + D->Volume[R]=J; + D->Volume[R+3]=(J+1)>>1; + /* Compute changed channels mask */ + D->Changed|=(0x09<R[7]; + break; + + case 11: + case 12: + /* Write value */ + D->R[R]=V; + /* Compute envelope period (why not <<4?) */ + J=((int)D->R[12]<<8)+D->R[11]; + D->EPeriod=1000*(J? J:0x10000)/D->Clock; + /* No channels changed */ + return; + + case 13: + /* Write value */ + D->R[R]=V&=0x0F; + /* Reset envelope */ + D->ECount = 0; + D->EPhase = 0; + for(J=0;JR[J+8]&0x10) + { + I = Volumes[Envelopes[V][0]]; + D->Volume[J] = I; + D->Volume[J+3] = (I+1)>>1; + D->Changed |= (0x09<R[7]; + } + break; + + case 14: + case 15: + /* Write value */ + D->R[R]=V; + /* No channels changed */ + return; + + default: + /* Wrong register, do nothing */ + return; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS) +{ + register int J,I; + + /* Exit if no envelope running */ + if(!D->EPeriod) return; + + /* Count milliseconds */ + D->ECount += mS; + if(D->ECountEPeriod) return; + + /* Count steps */ + J = D->ECount/D->EPeriod; + D->ECount -= J*D->EPeriod; + + /* Count phases */ + D->EPhase += J; + if(D->EPhase>31) + D->EPhase = (D->R[13]&0x09)==0x08? (D->EPhase&0x1F):31; + + /* Set envelope volumes for relevant channels */ + for(I=0;I<3;++I) + if(D->R[I+8]&0x10) + { + J = Volumes[Envelopes[D->R[13]&0x0F][D->EPhase]]; + D->Volume[I] = J; + D->Volume[I+3] = (J+1)>>1; + D->Changed |= (0x09<R[7]; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync) +{ + register int J,I; + + /* Hit MIDI drums for noise channels, if requested */ + if(Sync&AY8910_DRUMS) + { + Sync&=~AY8910_DRUMS; + J = (D->Freq[3]? D->Volume[3]:0) + + (D->Freq[4]? D->Volume[4]:0) + + (D->Freq[5]? D->Volume[5]:0); + if(J) { + //Drum(DRM_MIDI|28,(J+2)/3); + } + } + + if(Sync!=AY8910_FLUSH) D->Sync=Sync; + + for(J=0,I=D->Changed;I&&(J>=1) + if(I&1) { +#if HAS_SND + emu_sndPlaySound(J+D->First, D->Volume[J], D->Freq[J]); +#endif + //Sound(J+D->First,D->Freq[J],D->Volume[J]); + } + + D->Changed=0x00; +} diff --git a/MCUME_esp32/esp81/main/AY8910.h b/MCUME_esp32/esp81/main/AY8910.h new file mode 100755 index 0000000..b833cc6 --- /dev/null +++ b/MCUME_esp32/esp81/main/AY8910.h @@ -0,0 +1,97 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.h **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.c for the actual code. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef AY8910_H +#define AY8910_H +#ifdef __cplusplus +extern "C" { +#endif + +#define AY8910_CHANNELS 6 /* 3 melodic + 3 noise chanls */ + +#define AY8910_ASYNC 0 /* Asynchronous emulation */ +#define AY8910_SYNC 1 /* Synchronous emulation */ +#define AY8910_FLUSH 2 /* Flush buffers only */ +#define AY8910_DRUMS 0x80 /* Hit drums for noise chnls */ + +#ifndef BYTE_TYPE_DEFINED +#define BYTE_TYPE_DEFINED +typedef unsigned char byte; +#endif + +/** AY8910 ***************************************************/ +/** This data structure stores AY8910 state. **/ +/*************************************************************/ +typedef struct +{ + byte R[16]; /* PSG registers contents */ + int Freq[AY8910_CHANNELS]; /* Frequencies (0 for off) */ + int Volume[AY8910_CHANNELS]; /* Volumes (0..255) */ + int Clock; /* Base clock used by PSG */ + int First; /* First used Sound() channel */ + byte Changed; /* Bitmap of changed channels */ + byte Sync; /* AY8910_SYNC/AY8910_ASYNC */ + byte Latch; /* Latch for the register num */ + int EPeriod; /* Envelope step in msecs */ + int ECount; /* Envelope step counter */ + int EPhase; /* Envelope phase */ +} AY8910; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First); + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V); + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V); + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V); + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D); + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync); + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS); + +#ifdef __cplusplus +} +#endif +#endif /* AY8910_H */ diff --git a/MCUME_esp32/esp81/main/Arduino.h b/MCUME_esp32/esp81/main/Arduino.h new file mode 100644 index 0000000..35e16ab --- /dev/null +++ b/MCUME_esp32/esp81/main/Arduino.h @@ -0,0 +1,44 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Arduino_h +#define Arduino_h + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +//#include "esp32-hal.h" +//#include "esp8266-compat.h" +#include "soc/gpio_reg.h" + +//#include "stdlib_noniso.h" +//#include "binary.h" + +Ò + +#endif /* _ESP32_CORE_ARDUINO_H_ */ diff --git a/MCUME_esp32/esp81/main/AudioPlaySystem.cpp b/MCUME_esp32/esp81/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..c3f0697 --- /dev/null +++ b/MCUME_esp32/esp81/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/esp81/main/AudioPlaySystem.h b/MCUME_esp32/esp81/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/esp81/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/esp81/main/Z80.c b/MCUME_esp32/esp81/main/Z80.c new file mode 100644 index 0000000..1fd4a28 --- /dev/null +++ b/MCUME_esp32/esp81/main/Z80.c @@ -0,0 +1,461 @@ +/* Emulation of the Z80 CPU with hooks into the other parts of z81. + * Copyright (C) 1994 Ian Collier. + * z81 changes (C) 1995-2001 Russell Marks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include /* for memset/memcpy */ +#include "z80.h" + +#define parity(a) (partable[a]) + +unsigned char partable[256]={ + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4 + }; + + +unsigned long tstates=0,tsmax=65000,frames=0; + +/* odd place to have this, but the display does work in an odd way :-) */ +unsigned char scrnbmp_new[ZX_VID_FULLWIDTH*ZX_VID_FULLHEIGHT/8]; /* written */ + +/* checked against for diffs */ +int liney=0, lineyi=0; +int vsy=0; +unsigned long linestart=0; +int vsync_toggle=0,vsync_lasttoggle=0; + +static int linestate=0, linex=0, nrmvideo=1; + +#define LINEX ((tstates-linestart)>>2) + + + +/* for vsync off -> on */ +void vsync_raise(void) +{ + /* save current pos */ + vsy=liney; +} + + +/* for vsync on -> off */ +void vsync_lower(void) +{ + int ny=liney,y; + + vsync_toggle++; + + /* we don't emulate this stuff by default; if nothing else, + * it can be fscking annoying when you're typing in a program. + */ + if(!vsync_visuals) + return; + + /* even when we do emulate it, we don't bother with x timing, + * just the y. It gives reasonable results without being too + * complicated, I think. + */ + if(vsy<0) vsy=0; + if(vsy>=ZX_VID_FULLHEIGHT) vsy=ZX_VID_FULLHEIGHT-1; + if(ny<0) ny=0; + if(ny>=ZX_VID_FULLHEIGHT) ny=ZX_VID_FULLHEIGHT-1; + + /* XXX both of these could/should be made into single memset calls */ + if(ny=1) { + if (op&64) { + linestate = 0; + linex = ZX_VID_FULLWIDTH/8; + if (ramsize>=4 && !zx80) { + liney++; + lineyi=1; + } + } else { + linestate++; + linex++; + } + } + + if (!nrmvideo) ulacharline = 0; + + if((pc&0x8000) && !(op&64)) + { + int x,y,v; + + /* do the ULA's char-generating stuff */ + x=linex; + y=liney; + /* printf("ULA %3d,%3d = %02X\n",x,y,op);*/ + if(y>=0 && y=0 && x=tsmax) + { + retval=1; + tstates-=tsmax; + linestart-=tsmax; + nextlinetime-=tsmax; + lastvsyncpend-=tsmax; + vsync_lasttoggle=vsync_toggle; + vsync_toggle=0; + + frames++; + frame_pause(); + } + + /* the vsync length test is pretty arbitrary, because + * the timing isn't very accurate (more or less an instruction + * count) - but it's good enough in practice. + * + * the vsync_toggle test is fairly arbitrary too; + * there has to have been `not too many' for a TV to get + * confused. In practice, more than one would screw it up, + * but since we could be looking at over a frames' worth + * given where vsync_toggle is zeroed, we play it safe. + * also, we use a copy of the previous chunk's worth, + * since we need a full frame(-plus) to decide this. + */ + if(vsynclen && !vsync) + { + if(vsynclen>=10) + { + if(vsync_lasttoggle<=2) + { + vsyncpend=1; /* start of frame */ + /* FAST mode screws up without this, but it's a bit + * unpleasant... :-/ + */ + tstates=nextlinetime; + } + } + else + { + /* independent timing for this would be awkward, so + * anywhere on the line is good enough. Also, + * don't count it as a toggle. + */ + vsync_toggle--; + hsyncskip=1; + } + } + + /* should do this all the time vsync is set */ + if(vsync) + { + ulacharline=0; + vsynclen++; + } + else { + vsynclen=0; + } + + if(tstates>=nextlinetime) /* new line */ + { + /* generate fake sync if we haven't had one for a while; + * but if we just loaded/saved, wait for the first real frame instead + * to avoid jumpiness. + */ + if(!vsync && tstates-lastvsyncpend>=tsmax && !framewait) + vsyncpend=1; + + /* but that won't ever happen if we always have vsync on - + * i.e., if we're grinding away in FAST mode. So for that + * case, we check for vsync being held for a full frame. + */ + if(vsync_visuals && vsynclen>=tsmax) + { + vsyncpend=1; + vsynclen=1; + goto postcopy; /* skip the usual copying */ + } + + if(!vsyncpend) + { + if (!lineyi) liney++; + + if(hsyncgen && !hsyncskip) + { + ulacharline++; + ulacharline&=7; + } + } + else + { + bitbufBlit(scrnbmp_new); + postcopy: + memset(scrnbmp_new,0,sizeof(scrnbmp_new)); + lastvsyncpend=tstates; + vsyncpend=0; + framewait=0; + liney=-1; /* XXX might be something up here */ + } + + if(nmigen) + nmipend=1; + + hsyncskip=0; + linestart=nextlinetime; + nextlinetime+=linegap; + } + + if(intsample && nmipend) + { + nmipend=0; + + if(nmigen) + { + iff2=iff1; + iff1=0; + /* hardware syncs tstates to falling of NMI pulse (?), + * so a slight kludge here... + */ + if(fetch(pc&0x7fff)==0x76) + { + pc++; + tstates=linestart; + } + else + { + /* this seems curiously long, but equally, seems + * to be just about right. :-) + */ + tstates+=27; + } + push2(pc); + pc=0x66; + } + } + + if(intsample && intpend) + { + intpend=0; + if(iff1) + { + if(fetch(pc&0x7fff)==0x76)pc++; + iff1=iff2=0; + tstates+=5; /* accompanied by an input from the data bus */ + switch(im) + { + case 0: /* IM 0 */ + case 1: /* undocumented */ + case 2: /* IM 1 */ + /* there is little to distinguish between these cases */ + tstates+=9; /* perhaps */ + push2(pc); + pc=0x38; + break; + case 3: /* IM 2 */ + /* (seems unlikely it'd ever be used on the '81, but...) */ + tstates+=13; /* perhaps */ + { + int addr=fetch2((i<<8)|0xff); + push2(pc); + pc=addr; + } + } + } + } + + /* this isn't used for any sort of Z80 interrupts, + * purely for the emulator's UI. + */ + if(interrupted) + { + if(interrupted==1) + { + do_interrupt(); /* also zeroes it */ + } + else /* must be 2 */ + { + /* a kludge to let us do a reset */ + interrupted=0; + a=f=b=c=d=e=h=l=a1=f1=b1=c1=d1=e1=h1=l1=i=iff1=iff2=im=r=0; + ixoriy=new_ixoriy=0; + ix=iy=sp=pc=0; + tstates=radjust=0; + nextlinetime=linegap; + vsyncpend=vsynclen=0; + hsyncskip=0; + } + } + + if (retval) break; + } + +} + +void ResetZ80(void) +{ + a=f=b=c=d=e=h=l=a1=f1=b1=c1=d1=e1=h1=l1=i=iff1=iff2=im=r=0; + ixoriy=new_ixoriy=0; + ix=iy=sp=pc=0; + tstates=radjust=0; + nextlinetime=linegap; + tstates=0; + frames=0; + liney=0; + vsy=0; + linestart=0; + vsync_toggle=0; + vsync_lasttoggle=0; + + /* we load a snapshot, in effect.This does the registers. + */ + if(autoload) + { + if (zx80) { + /* Registers (common values) */ + a = 0x00; f = 0x44; b = 0x00; c = 0x00; + d = 0x07; e = 0xae; h = 0x40; l = 0x2a; + pc = 0x0283; + ix = 0x0000; iy = 0x4000; i = 0x0e; r = 0xdd; + a1 = 0x00; f1 = 0x00; b1 = 0x00; c1 = 0x21; + d1 = 0xd8; e1 = 0xf0; h1 = 0xd8; l1 = 0xf0; + iff1 = 0x00; iff2 = 0x00; im = 0x02; + radjust = 0x6a; + /* Machine Stack (common values) */ + if (ramsize >= 16) { + sp = 0x8000 - 4; + } else { + sp = 0x4000 - 4 + ramsize * 1024; + } + mem[sp + 0] = 0x47; + mem[sp + 1] = 0x04; + mem[sp + 2] = 0xba; + mem[sp + 3] = 0x3f; + /* Now override if RAM configuration changes things + * (there's a possibility these changes are unimportant) */ + if (ramsize == 16) { + mem[sp + 2] = 0x22; + } + } else { + static unsigned char bit1[9]={0xFF,0x80,0xFC,0x7F,0x00,0x80,0x00,0xFE,0xFF}; + static unsigned char bit2[4]={0x76,0x06,0x00,0x3e}; + + /* memory will already be zeroed at this point */ + + memcpy(mem+0x4000,bit1,9); + memcpy(mem+0x7ffc,bit2,4); + + a=0x0B; f=0x85; b=0x00; c=0xFF; + d=0x43; e=0x99; h=0xC3; l=0x99; + a1=0xE2; f1=0xA1; b1=0x81; c1=0x02; + d1=0x00; e1=0x2B; h1=0x00; l1=0x00; + i=0x1E; iff1=iff2=0; + im=2; + r=0xDD; radjust=0xCA; + ix=0x281; iy=0x4000; + sp=0x7FFC; + pc=0x207; + } + + + /* finally, load. It'll reset (via reset81) if it fails. */ + load_p(32768); + + /* wait for a real frame, to avoid an annoying frame `jump'. */ + framewait=1; + } +} + diff --git a/MCUME_esp32/esp81/main/Z80.h b/MCUME_esp32/esp81/main/Z80.h new file mode 100644 index 0000000..d8169f7 --- /dev/null +++ b/MCUME_esp32/esp81/main/Z80.h @@ -0,0 +1,78 @@ +/* z81/xz81, Linux console and X ZX81/ZX80 emulators. + * Copyright (C) 1994 Ian Collier. z81 changes (C) 1995-2001 Russell Marks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "common.h" + +#define Z80_quit 1 +#define Z80_NMI 2 +#define Z80_reset 3 +#define Z80_load 4 +#define Z80_save 5 +#define Z80_log 6 + +extern int interrupted; +extern unsigned long tstates,tsmax,frames; + +extern void setzx80mode(void); +extern void vsync_raise(void); +extern void vsync_lower(void); +extern void ResetZ80(void); +extern void ExecZ80(void); + +#define fetch(x) (memptr[(unsigned short)(x)>>10][(x)&1023]) +#define fetch2(x) ((fetch((x)+1)<<8)|fetch(x)) + + +#define store(x,y) do {\ + unsigned short off=(x)&1023;\ + unsigned char page=(unsigned short)(x)>>10;\ + int attr=memattr[page];\ + if(attr){\ + memptr[page][off]=(y);\ + }\ + } while(0) + +#define store2b(x,hi,lo) do {\ + unsigned short off=(x)&1023;\ + unsigned char page=(unsigned short)(x)>>10;\ + int attr=memattr[page];\ + if(attr) { \ + memptr[page][off]=(lo);\ + memptr[page][off+1]=(hi);\ + }\ + } while(0) + +#define store2(x,y) store2b(x,(y)>>8,(y)&255) + +#ifdef __GNUC__ +static void inline storefunc(unsigned short ad,unsigned char b){ + store(ad,b); +} +#undef store +#define store(x,y) storefunc(x,y) + +static void inline store2func(unsigned short ad,unsigned char b1,unsigned char b2){ + store2b(ad,b1,b2); +} +#undef store2b +#define store2b(x,hi,lo) store2func(x,hi,lo) +#endif + +#define bc ((b<<8)|c) +#define de ((d<<8)|e) +#define hl ((h<<8)|l) diff --git a/MCUME_esp32/esp81/main/bmpjoy.h b/MCUME_esp32/esp81/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/esp81/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/esp81/main/bmpvbar.h b/MCUME_esp32/esp81/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/esp81/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/esp81/main/cbops.h b/MCUME_esp32/esp81/main/cbops.h new file mode 100755 index 0000000..287899b --- /dev/null +++ b/MCUME_esp32/esp81/main/cbops.h @@ -0,0 +1,176 @@ +/* Emulations of the CB operations of the Z80 instruction set. + * Copyright (C) 1994 Ian Collier. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define var_t unsigned char t +#define rlc(x) (x=(x<<1)|(x>>7),rflags(x,x&1)) +#define rrc(x) do{var_t=x&1;x=(x>>1)|(t<<7);rflags(x,t);}while(0) +#define rl(x) do{var_t=x>>7;x=(x<<1)|(f&1);rflags(x,t);}while(0) +#define rr(x) do{var_t=x&1;x=(x>>1)|(f<<7);rflags(x,t);}while(0) +#define sla(x) do{var_t=x>>7;x<<=1;rflags(x,t);}while(0) +#define sra(x) do{var_t=x&1;x=((signed char)x)>>1;rflags(x,t);}while(0) +#define sll(x) do{var_t=x>>7;x=(x<<1)|1;rflags(x,t);}while(0) +#define srl(x) do{var_t=x&1;x>>=1;rflags(x,t);}while(0) + +#define rflags(x,c) (f=(c)|(x&0xa8)|((!x)<<6)|parity(x)) + +#define bit(n,x) (f=(f&1)|((x&(1<>3)&7; + switch(op&0xc7){ + case 0x40: bit(n,b); break; + case 0x41: bit(n,c); break; + case 0x42: bit(n,d); break; + case 0x43: bit(n,e); break; + case 0x44: bit(n,h); break; + case 0x45: bit(n,l); break; + case 0x46: tstates+=4;val=fetch(addr);bit(n,val);store(addr,val);break; + case 0x47: bit(n,a); break; + case 0x80: res(n,b); break; + case 0x81: res(n,c); break; + case 0x82: res(n,d); break; + case 0x83: res(n,e); break; + case 0x84: res(n,h); break; + case 0x85: res(n,l); break; + case 0x86: tstates+=4;val=fetch(addr);res(n,val);store(addr,val);break; + case 0x87: res(n,a); break; + case 0xc0: set(n,b); break; + case 0xc1: set(n,c); break; + case 0xc2: set(n,d); break; + case 0xc3: set(n,e); break; + case 0xc4: set(n,h); break; + case 0xc5: set(n,l); break; + case 0xc6: tstates+=4;val=fetch(addr);set(n,val);store(addr,val);break; + case 0xc7: set(n,a); break; + } + } + if(ixoriy)switch(reg){ + case 0:b=val; break; + case 1:c=val; break; + case 2:d=val; break; + case 3:e=val; break; + case 4:h=val; break; + case 5:l=val; break; + case 7:a=val; break; + } +} + +#undef var_t +#undef rlc +#undef rrc +#undef rl +#undef rr +#undef sla +#undef sra +#undef sll +#undef srl +#undef rflags +#undef bit +#undef set +#undef res diff --git a/MCUME_esp32/esp81/main/common.h b/MCUME_esp32/esp81/main/common.h new file mode 100644 index 0000000..4882024 --- /dev/null +++ b/MCUME_esp32/esp81/main/common.h @@ -0,0 +1,45 @@ + +typedef unsigned char byte; +typedef unsigned short word; + +#define WIDTH 320 +#define HEIGHT 192 +#define BORDER 32 + +#define CYCLES_PER_FRAME 65000//3500000/50 + + +/* full internal image with overscan (but not hsync/vsync areas) */ +#define ZX_VID_MARGIN 55 +#define ZX_VID_HMARGIN (8*8) +#define ZX_VID_FULLWIDTH (2*ZX_VID_HMARGIN+32*8) /* sic */ +#define ZX_VID_FULLHEIGHT (2*ZX_VID_MARGIN+192) + + +/* AY board types */ +#define AY_TYPE_NONE 0 +#define AY_TYPE_QUICKSILVA 1 +#define AY_TYPE_ZONX 2 + + +extern unsigned char * mem; +extern unsigned char *memptr[64]; +extern int memattr[64]; +extern unsigned long tstates,tsmax; +extern int vsync_visuals; +extern int ramsize; +extern int interrupted; +extern int nmigen,hsyncgen,vsync; +extern int autoload; +extern int zx80; + +extern void sighandler(int a); +extern unsigned int in(int h,int l); +extern unsigned int out(int h,int l,int a); +extern void do_interrupt(); +extern void save_p(int a); +extern void load_p(int a); +extern void do_interrupt(); +extern void reset81(); +extern void frame_pause(void); +extern void bitbufBlit(unsigned char * buf); diff --git a/MCUME_esp32/esp81/main/component.mk b/MCUME_esp32/esp81/main/component.mk new file mode 100644 index 0000000..bc2e288 --- /dev/null +++ b/MCUME_esp32/esp81/main/component.mk @@ -0,0 +1,10 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=char-subscripts -Wno-error=attributes \ No newline at end of file diff --git a/MCUME_esp32/esp81/main/edops.h b/MCUME_esp32/esp81/main/edops.h new file mode 100755 index 0000000..8583bde --- /dev/null +++ b/MCUME_esp32/esp81/main/edops.h @@ -0,0 +1,544 @@ +/* Emulations of the ED operations of the Z80 instruction set. + * Copyright (C) 1994 Ian Collier. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define input(var) { unsigned short u;\ + var=u=in(b,c);\ + tstates+=u>>8;\ + f=(f&1)|(var&0xa8)|((!var)<<6)|parity(var);\ + } +#define sbchl(x) { unsigned short z=(x);\ + unsigned long t=(hl-z-cy)&0x1ffff;\ + f=((t>>8)&0xa8)|(t>>16)|2|\ + (((hl&0xfff)<(z&0xfff)+cy)<<4)|\ + (((hl^z)&(hl^t)&0x8000)>>13)|\ + ((!(t&0xffff))<<6)|2;\ + l=t;\ + h=t>>8;\ + } + +#define adchl(x) { unsigned short z=(x);\ + unsigned long t=hl+z+cy;\ + f=((t>>8)&0xa8)|(t>>16)|\ + (((hl&0xfff)+(z&0xfff)+cy>0xfff)<<4)|\ + (((~hl^z)&(hl^t)&0x8000)>>13)|\ + ((!(t&0xffff))<<6)|2;\ + l=t;\ + h=t>>8;\ + } + +#define neg (a=-a,\ + f=(a&0xa8)|((!a)<<6)|(((a&15)>0)<<4)|((a==128)<<2)|2|(a>0)) + +{ + unsigned char op=fetch(pc&0x7fff); + pc++; + radjust++; + switch(op){ +instr(0x40,8); + input(b); +endinstr; + +instr(0x41,8); + tstates+=out(b,c,b); +endinstr; + +instr(0x42,11); + sbchl(bc); +endinstr; + +instr(0x43,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2b(addr,b,c); + } +endinstr; + +instr(0x44,4); + neg; +endinstr; + +instr(0x45,4); + iff1=iff2; + ret; +endinstr; + +instr(0x46,4); + im=0; +endinstr; + +instr(0x47,5); + i=a; +endinstr; + +instr(0x48,8); + input(c); +endinstr; + +instr(0x49,8); + tstates+=out(b,c,c); +endinstr; + +instr(0x4a,11); + adchl(bc); +endinstr; + +instr(0x4b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + c=fetch(addr); + b=fetch(addr+1); + } +endinstr; + +instr(0x4c,4); + neg; +endinstr; + +instr(0x4d,4); + ret; +endinstr; + +instr(0x4e,4); + im=1; +endinstr; + +instr(0x4f,5); + r=a; + radjust=r; +endinstr; + +instr(0x50,8); + input(d); +endinstr; + +instr(0x51,8); + tstates+=out(b,c,d); +endinstr; + +instr(0x52,11); + sbchl(de); +endinstr; + +instr(0x53,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2b(addr,d,e); + } +endinstr; + +instr(0x54,4); + neg; +endinstr; + +instr(0x55,4); + ret; +endinstr; + +instr(0x56,4); + im=2; +endinstr; + +instr(0x57,5); + a=i; + f=(f&1)|(a&0xa8)|((!a)<<6)|(iff2<<2); +endinstr; + +instr(0x58,8); + input(e); +endinstr; + +instr(0x59,8); + tstates+=out(b,c,e); +endinstr; + +instr(0x5a,11); + adchl(de); +endinstr; + +instr(0x5b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + e=fetch(addr); + d=fetch(addr+1); + } +endinstr; + +instr(0x5c,4); + neg; +endinstr; + +instr(0x5d,4); + ret; +endinstr; + +instr(0x5e,4); + im=3; +endinstr; + +instr(0x5f,5); + r=(r&0x80)|(radjust&0x7f); + a=r; + f=(f&1)|(a&0xa8)|((!a)<<6)|(iff2<<2); +endinstr; + +instr(0x60,8); + input(h); +endinstr; + +instr(0x61,8); + tstates+=out(b,c,h); +endinstr; + +instr(0x62,11); + sbchl(hl); +endinstr; + +instr(0x63,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2b(addr,h,l); + } +endinstr; + +instr(0x64,4); + neg; +endinstr; + +instr(0x65,4); + ret; +endinstr; + +instr(0x66,4); + im=0; +endinstr; + +instr(0x67,14); + {unsigned char t=fetch(hl); + unsigned char u=(a<<4)|(t>>4); + a=(a&0xf0)|(t&0x0f); + store(hl,u); + f=(f&1)|(a&0xa8)|((!a)<<6)|parity(a); + } +endinstr; + +instr(0x68,8); + input(l); +endinstr; + +instr(0x69,8); + tstates+=out(b,c,l); +endinstr; + +instr(0x6a,11); + adchl(hl); +endinstr; + +instr(0x6b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + l=fetch(addr); + h=fetch(addr+1); + } +endinstr; + +instr(0x6c,4); + neg; +endinstr; + +instr(0x6d,4); + ret; +endinstr; + +instr(0x6e,4); + im=1; +endinstr; + +instr(0x6f,5); + {unsigned char t=fetch(hl); + unsigned char u=(a&0x0f)|(t<<4); + a=(a&0xf0)|(t>>4); + store(hl,u); + f=(f&1)|(a&0xa8)|((!a)<<6)|parity(a); + } +endinstr; + +instr(0x70,8); + {unsigned char x;input(x);} +endinstr; + +instr(0x71,8); + tstates+=out(b,c,0); +endinstr; + +instr(0x72,11); + sbchl(sp); +endinstr; + +instr(0x73,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2(addr,sp); + } +endinstr; + +instr(0x74,4); + neg; +endinstr; + +instr(0x75,4); + ret; +endinstr; + +instr(0x76,4); + im=2; +endinstr; + +instr(0x78,8); + input(a); +endinstr; + +instr(0x79,8); + tstates+=out(b,c,a); +endinstr; + +instr(0x7a,11); + adchl(sp); +endinstr; + +instr(0x7b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + sp=fetch2(addr); + } +endinstr; + +instr(0x7c,4); + neg; +endinstr; + +instr(0x7d,4); + ret; +endinstr; + +instr(0x7e,4); + im=3; +endinstr; + +instr(0xa0,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!++l)h++; + if(!++e)d++; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + } +endinstr; + +instr(0xa1,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!++l)h++; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + } +endinstr; + +instr(0xa2,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!++l)h++; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c)&4); + } +endinstr; + +instr(0xa3,12); /* I can't determine the correct flags outcome for the + block OUT instructions. Spec says that the carry + flag is left unchanged and N is set to 1, but that + doesn't seem to be the case... */ + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!++l)h++; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + } +endinstr; + +instr(0xa8,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!l--)h--; + if(!e--)d--; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + } +endinstr; + +instr(0xa9,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!l--)h--; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + } +endinstr; + +instr(0xaa,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!l--)h--; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c^4)&4); + } +endinstr; + +instr(0xab,12); + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!l--)h--; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + } +endinstr; + +/* Note: the Z80 implements "*R" as "*" followed by JR -2. No reason + to change this... */ + +instr(0xb0,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!++l)h++; + if(!++e)d++; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + if(b|c)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb1,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!++l)h++; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + if((f&0x44)==4)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb2,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!++l)h++; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c)&4); + if(b)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb3,12); + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!++l)h++; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + if(b)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb8,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!l--)h--; + if(!e--)d--; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + if(b|c)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb9,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!l--)h--; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + if((f&0x44)==4)pc-=2,tstates+=5; + } +endinstr; + +instr(0xba,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!l--)h--; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c^4)&4); + if(b)pc-=2,tstates+=5; + } +endinstr; + +instr(0xbb,12); + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!l--)h--; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + if(b)pc-=2,tstates+=5; + } +endinstr; + +/* save/load patches */ + +instr(0xfc,4); +#ifdef SZ81 /* Added by Thunor */ + if(!zx80 && hl < 0x8000) + { + sdl_load_file(hl,LOAD_FILE_METHOD_NAMEDLOAD); + } + else /* if((!zx80 && hl >= 0x8000) || zx80) */ + { + sdl_load_file(hl,LOAD_FILE_METHOD_SELECTLOAD); + } +#else + load_p(hl); +#endif + framewait=1; +endinstr; + +instr(0xfd,4); +#ifdef SZ81 /* Added by Thunor */ + if(zx80) + { + sdl_save_file(hl,SAVE_FILE_METHOD_UNNAMEDSAVE); + } + else + { + sdl_save_file(hl,SAVE_FILE_METHOD_NAMEDSAVE); + } +#else + save_p(hl); +#endif + framewait=1; +endinstr; + +default: tstates+=4; + +}} diff --git a/MCUME_esp32/esp81/main/emuapi.cpp b/MCUME_esp32/esp81/main/emuapi.cpp new file mode 100644 index 0000000..918b734 --- /dev/null +++ b/MCUME_esp32/esp81/main/emuapi.cpp @@ -0,0 +1,1086 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logozx80kbd.h" +//#include "logozx81kbd.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; +static const unsigned short * keysw = keyswzx80; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = logozx81kbd; + keysw = keyswzx81; + } + else { + //logo = logozx80kbd; + keysw = keyswzx80; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " ZX81/ZX80 Emulator " +#define ROMSDIR "z81" + +#define emu_Init(ROM) {z81_Start(ROM); z81_Init(); } +#define emu_Step(x) {z81_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x1 +#define PALETTE_SIZE 2 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 10 +#define KEYBOARD_Y 8 +#define KEYBOARD_KEY_H 40 +#define KEYBOARD_KEY_W 30 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keyswzx80[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y+16, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H-6, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_END}; + +const unsigned short keyswzx81[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_END}; + +const unsigned short keys[] = { + 30,31,32,33,34,35,36,37,38,39, + 20,26, 8,21,23,28,25,12,18,19, + 4, 9, 7,22, 4,11,13,14,15,40, + 25, 6,27,29,224,5,17,16,225,44 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + + diff --git a/MCUME_esp32/esp81/main/font8x8.h b/MCUME_esp32/esp81/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/esp81/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/esp81/main/go.cpp b/MCUME_esp32/esp81/main/go.cpp new file mode 100644 index 0000000..dac9ca7 --- /dev/null +++ b/MCUME_esp32/esp81/main/go.cpp @@ -0,0 +1,102 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "zx81.h" +} + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/esp81/main/go.h b/MCUME_esp32/esp81/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/esp81/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/esp81/main/ili9341_t3dma.cpp b/MCUME_esp32/esp81/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/esp81/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/esp81/main/ili9341_t3dma.h b/MCUME_esp32/esp81/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/esp81/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/esp81/main/iopins.h b/MCUME_esp32/esp81/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/esp81/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/esp81/main/keyboard_osd.h b/MCUME_esp32/esp81/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/esp81/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/esp81/main/logozx80kbd.h b/MCUME_esp32/esp81/main/logozx80kbd.h new file mode 100644 index 0000000..d13b31a --- /dev/null +++ b/MCUME_esp32/esp81/main/logozx80kbd.h @@ -0,0 +1,171 @@ +const uint16_t logozx80kbd[] = { +0x0140,0x00aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xdefb,0xe73c,0xbdf7,0x10a2,0xce79,0xef7d,0x9492,0x0000,0x39c7,0xdedb,0xdefb,0xe73c,0xbdf7,0x10a2,0xce79,0xe71c,0xef7d,0xbdf7,0x10a2,0xce79,0xef7d,0x9492,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xd69a,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xce79,0xe71c,0xef7d,0xbdf7,0x18c3,0xd69a,0x5acb,0x9492,0xbdf7,0x18c3,0xce79,0xef7d,0x9492,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x39c7,0xdedb,0xdefb,0xe73c,0xbdf7,0x18e3,0xdedb,0xdefb,0xe73c,0xc618,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x0000,0x0000,0xbdd7,0xf7be,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0xc4e0,0x9bc0,0x0000,0x3140,0xd520,0x5a20,0x9380,0xbc80,0x18a0,0xcd00,0xedc1,0x9380,0x0000,0x0840,0x0000,0xc4a0,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0xbc80,0xf5e1,0xbc80,0x18a0,0xdd41,0xdd61,0xe581,0xbca0,0x1080,0xcd00,0xedc1,0x9380,0x0000,0x0840,0x0000,0xc4a0,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3140,0xdd61,0xdd61,0xe581,0xbca0,0x1080,0xd520,0x6aa0,0x0000,0x0000,0x0000,0x0000,0xc4a0,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3140,0xd520,0x5a20,0x9380,0xbca0,0x0000,0x0000,0xbc80,0xf5e1,0xbc80,0x1080,0xcd00,0xedc1,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xad75,0xffff,0xef7d,0x8c71,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x18c3,0xad75,0xffff,0xef7d,0x8c71,0x3186,0xffff,0xce79,0xb596,0x94b2,0x3186,0xffff,0xce79,0xb596,0x94b2,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x10a2,0xa534,0xb596,0xb596,0x8c71,0x3186,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xce79,0xb596,0x94b2,0x3186,0xffff,0x6b6d,0xb596,0xe73c,0x2104,0xffff,0xd6ba,0xb596,0x8c71,0x10a2,0xa534,0xbdd7,0xc618,0x9cd3,0x10a2,0xad75,0xffff,0xef7d,0x8c71,0x10a2,0xad75,0xffff,0xef7d,0x9492,0x1082,0xa534,0xbdd7,0xbdd7,0x8c51,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x18c3,0xb596,0xb596,0xbdd7,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0xa400,0xbc80,0xbca0,0x93a0,0x3120,0xfe61,0x5a40,0xac20,0xe5a1,0x20c0,0xfe41,0xcd00,0xb460,0x9bc0,0x0000,0x0000,0xe581,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0xb460,0xb460,0xbc80,0x9bc0,0x1080,0xac20,0xfe21,0xedc1,0x8b60,0x3120,0xfe41,0xcd00,0xb460,0x9bc0,0x0000,0x0000,0xe581,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0xac20,0xfe21,0xedc1,0x8b60,0x3120,0xfe61,0x8340,0x0000,0x0020,0x0000,0x0000,0xe581,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe61,0x6aa0,0xb460,0xeda1,0x0000,0xb440,0xb460,0xbc80,0x93a0,0x3120,0xfe41,0xcd00,0xb460,0x9bc0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xe71c,0xb596,0x0000,0x39e7,0xffff,0x528a,0xad75,0xf79e,0x0000,0x0000,0xe71c,0xb596,0x0000,0x39e7,0xffdf,0xad55,0x1082,0x0000,0x39e7,0xffdf,0x9cd3,0xad75,0xc618,0x2945,0xffff,0x528a,0xad75,0xef5d,0x2104,0xffff,0x9cd3,0xce59,0xef5d,0x18e3,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffdf,0xad55,0x1082,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffff,0x528a,0xad75,0xef5d,0x2104,0xffff,0x630c,0x8c51,0xce59,0x0000,0x0000,0xe71c,0xb596,0x0000,0x0000,0x0000,0xe71c,0xb596,0x0000,0x4208,0xffff,0x5acb,0xad75,0xef5d,0x18e3,0xffff,0x528a,0xad75,0xef7d,0x0861,0xdefb,0x9cf3,0x0861,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe61,0x6260,0x8b60,0xc4c0,0x20e0,0xfe01,0xa400,0xcce0,0xdd61,0x20c0,0xfe21,0x9bc0,0xac40,0xc4c0,0x0000,0x72c0,0xe5a1,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0xdd61,0x9bc0,0x0840,0x0000,0x0000,0x0000,0xe581,0xb440,0x0000,0x3980,0xfe21,0x9bc0,0xac40,0xc4c0,0x0000,0x72c0,0xe5a1,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0xe581,0xb440,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x18a0,0x72c0,0xe5a1,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x6aa0,0xac40,0xdd81,0x1080,0xdd61,0x9bc0,0x0840,0x0000,0x3980,0xfe21,0x9bc0,0xac40,0xc4c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x39e7,0xf7be,0xffff,0xad55,0x0000,0x39e7,0xf7be,0xffff,0xad75,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x18e3,0xf7be,0xffff,0xffff,0xd69a,0x2104,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xffff,0xad55,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffff,0x8410,0x0000,0x18e3,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xdefb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x3960,0xf5e1,0xfe41,0xfe61,0xd520,0x18c0,0xf5e1,0xfe81,0xac40,0x0000,0x3960,0xede1,0xfe81,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xdd61,0xbca0,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3960,0xf5e1,0xfe81,0xac40,0x0000,0x3960,0xf5e1,0xfe81,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x3960,0xf5e1,0xfe81,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x6a80,0xac40,0xe581,0x0000,0x0000,0xdd61,0xbca0,0x0000,0x3960,0xf601,0xfe81,0xac40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x39e7,0xffdf,0x8430,0x0000,0x0000,0x39e7,0xffdf,0x7bef,0xad75,0xd6ba,0x2104,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x7bcf,0xb5b6,0xdefb,0x2104,0xffff,0x7bcf,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffdf,0x8c92,0x0000,0x0000,0x39e7,0xffff,0x5aeb,0xad55,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xdf1c,0x2104,0xffff,0x632c,0xa534,0xe71c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x4208,0xffff,0x630c,0xad75,0xe73c,0x18e3,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x6260,0xa400,0xdd61,0x20c0,0xfe21,0x7b00,0xb460,0xdd61,0x20c0,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0xd540,0xfea1,0xd520,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0xbc80,0xdd81,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0xd540,0xfea1,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe21,0x72e0,0x0000,0x0000,0x0820,0x0000,0xd540,0xfea1,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x5a40,0xa420,0xe581,0x0000,0x0000,0x0000,0xbc80,0xdd61,0x20c0,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xffff,0xffff,0xb5b6,0x2945,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x0000,0xef7d,0xc618,0x0000,0x39e7,0xffff,0xf79e,0xe73c,0xbdd7,0x2945,0xffff,0x6b4d,0xb5b6,0xef7d,0x2104,0xffff,0x738e,0xb5b6,0xef5d,0x2104,0xffff,0x6b4d,0xb596,0xef5d,0x2104,0xffff,0xf79e,0xef5d,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xffff,0x8410,0x0000,0x0000,0x39e7,0xffff,0xef7d,0xffff,0xdefb,0x2104,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x6b6d,0xd6ba,0xc618,0x5aeb,0x0000,0x0000,0xef7d,0xc618,0x0000,0x31a6,0xdedb,0xffff,0xffff,0xbdd7,0x0000,0x6b6d,0xd6ba,0xbdf7,0x4a69,0x39c7,0xffff,0x738e,0xb5b6,0xef5d,0x0861,0xdedb,0xef5d,0xbdd7,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x6aa0,0xd520,0xc4c0,0x5220,0x3960,0xfe61,0x6a80,0xb460,0xedc1,0x20c0,0xfe61,0x6a80,0xb460,0xedc1,0x0000,0xd520,0xfe81,0xd520,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0xdd41,0xedc1,0xbc80,0x6240,0x0000,0x0000,0xedc1,0xc4c0,0x0000,0x3980,0xfe61,0x6a80,0xb460,0xedc1,0x0000,0xd520,0xfe81,0xd520,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xedc1,0xc4c0,0x0000,0x3980,0xfe41,0xf5e1,0xeda1,0xbc80,0x18a0,0xd520,0xfe81,0xd520,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0xede1,0xfe41,0xdd81,0x0840,0xdd40,0xedc1,0xbc80,0x5220,0x3960,0xfe61,0x6a80,0xb460,0xf5e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0xb596,0xb596,0xbdd7,0x9cd3,0x1082,0xad55,0x4a49,0x73ae,0x9cd3,0x0000,0x0000,0x9cd3,0x7bef,0x0000,0x2945,0xa534,0xbdd7,0xc618,0x9cd3,0x1082,0xad55,0x4a49,0x73ae,0x9cd3,0x10a2,0xad55,0x4a49,0x73ae,0x9cd3,0x10a2,0xad55,0x4a49,0x73ae,0x9cd3,0x10a2,0xa534,0xbdd7,0xc618,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xad55,0x5acb,0x0000,0x0000,0x2945,0xa534,0xbdd7,0xbdd7,0x8c71,0x10a2,0xad55,0x4a49,0x73ae,0x9cd3,0x0000,0x0000,0xa514,0x7bef,0x0000,0x0841,0x0000,0x9cd3,0x7bef,0x0000,0x2965,0xb596,0xb596,0xbdd7,0x9cf3,0x0000,0x0000,0xa514,0x7bef,0x0000,0x2945,0xad55,0x4a49,0x73ae,0x9cd3,0x18c3,0xb596,0xc638,0x73ae,0x0000,0x0841,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x93a0,0x72e0,0x0000,0x2900,0x9be0,0x2900,0x6260,0x8b80,0x1080,0x9be0,0x2900,0x6260,0x8b60,0x1880,0xa400,0xbc80,0x6260,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x2900,0xb460,0xbca0,0x6aa0,0x0000,0x0820,0x0000,0x8b80,0x72e0,0x0000,0x20e0,0x9be0,0x20e0,0x6aa0,0x9bc0,0x1080,0xa400,0xac40,0x5220,0x0000,0x0860,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x8b60,0x72e0,0x0000,0x20e0,0x9bc0,0xac20,0xbc80,0x9bc0,0x1060,0xa400,0xac40,0x6260,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x2900,0xa400,0xac40,0xb460,0x8b80,0x1080,0xa400,0xbc80,0x6aa0,0x0000,0x2900,0xac20,0x3140,0x6260,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0000,0x0000,0x1082,0x0000,0x0861,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x72e0,0x4180,0x0000,0x1880,0x5a40,0x7b00,0x7b00,0x5200,0x0820,0x5a40,0x7b00,0x7b00,0x5200,0x0840,0x6260,0x0000,0x41a0,0x6ac0,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x5200,0x49c0,0x0000,0x0000,0x0000,0x5a40,0x49c0,0x0000,0x1880,0x5a40,0x8320,0x41a0,0x0000,0x18a0,0x5a40,0x6a80,0x7b00,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x72e0,0x4180,0x0000,0x1880,0x5a40,0x72c0,0x2900,0x0000,0x18a0,0x5a40,0x6ac0,0x41a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x5a20,0x3140,0x0000,0x18a0,0x5a40,0x6ac0,0x41a0,0x0000,0x0000,0x0000,0x6260,0x8320,0x5220,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe41,0xfe41,0xcd00,0x20c0,0xfe21,0xfe41,0xfe41,0xcd00,0x20e0,0xfe41,0x6aa0,0xb460,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18c0,0xe581,0xbca0,0x0000,0x0000,0x18c0,0xe581,0xbca0,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe41,0xfe41,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18c0,0xe581,0xbca0,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x20c0,0xd540,0xfe81,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x5a40,0xac40,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xede1,0x72e0,0xb460,0xdd61,0x18a0,0xede1,0x72e0,0xac40,0xd520,0x20e0,0xfe21,0x7b00,0xac40,0xd520,0x20e0,0xfe21,0x8340,0x0000,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xfe21,0x7b00,0xac40,0xd520,0x20e0,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6aa0,0xac20,0xd540,0x20e0,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xf601,0x8320,0x0000,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf5e1,0xb460,0x5a20,0x3140,0xf601,0xf601,0x9380,0x0000,0x3980,0xf601,0xf601,0x9380,0x0000,0x3980,0xf601,0xf601,0xac40,0x3980,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x7ae0,0x2900,0x5220,0x3960,0xfe41,0x6280,0xac40,0xe581,0x20c0,0xfe21,0x6260,0xac40,0xe581,0x18c0,0xf601,0xf601,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf5e1,0xac40,0x3980,0x3960,0xfe21,0x6260,0xac40,0xe581,0x20c0,0xfe21,0x6260,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xedc1,0xfe01,0xd540,0x18c0,0xf601,0xf5e1,0xac40,0x41a0,0x1080,0x72e0,0xd540,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xdd41,0x6aa0,0x0000,0x3980,0xf601,0xd520,0x6260,0x0000,0x3980,0xf601,0xd520,0x6260,0x0000,0x3980,0xf601,0xd520,0xac40,0x8340,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe61,0x6aa0,0x6260,0x93a0,0x3140,0xfe61,0x5a40,0xac20,0xe5a1,0x18c0,0xfe21,0x5a20,0xac40,0xe5a1,0x18a0,0xf601,0xd520,0x6260,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xd520,0xac40,0x7b00,0x3120,0xfe21,0x6aa0,0xac40,0xdd61,0x20c0,0xfe21,0x5a20,0xac40,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xcd00,0xe581,0xd540,0x20c0,0xf601,0xcce0,0xac40,0x9380,0x0000,0x0000,0x8340,0xc4a0,0x9bc0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x72c0,0x0000,0x0000,0x3980,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe41,0x5200,0xac40,0xf5e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0xd520,0x93a0,0xbca0,0xc4c0,0x1080,0xd500,0x93a0,0xb460,0xb460,0x2900,0xfe21,0xac20,0xac40,0xb460,0x2900,0xfe21,0xa400,0x6aa0,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5200,0xac40,0xedc1,0x18a0,0xfe41,0x6aa0,0xac40,0xe581,0x20c0,0xfe21,0xac20,0xac40,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5220,0xa400,0xe581,0x20c0,0xfe21,0x9bc0,0xac40,0xc4e0,0x0000,0x7b00,0x6260,0xbc80,0xc4e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x7b00,0x0000,0x0000,0x3960,0xeda1,0xfe21,0xfe61,0xcd00,0x18a0,0xeda1,0xfe21,0xfe61,0xcd00,0x18a0,0xf5e1,0x6280,0xa400,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd61,0xb460,0x0000,0x0000,0x0000,0xdd61,0xb460,0x0000,0x3960,0xeda1,0xfe81,0xa400,0x0000,0x3960,0xeda1,0xfe21,0xfe61,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6280,0xa400,0xd540,0x18c0,0xf5e1,0x6280,0xa400,0xd540,0x18c0,0xeda1,0xfe81,0xa400,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6280,0xa400,0xd540,0x18c0,0xeda1,0xfe81,0xa400,0x0000,0x3960,0xf5e1,0xfe81,0xa400,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x18c0,0x0000,0x0000,0x0840,0x3960,0x3980,0x3980,0x3120,0x0020,0x3960,0x3980,0x3980,0x3120,0x0020,0x3960,0x18a0,0x2900,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0x2900,0x0000,0x0000,0x0000,0x3140,0x2900,0x0000,0x0840,0x3960,0x4180,0x2900,0x0000,0x0840,0x3960,0x3980,0x3980,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x18a0,0x2900,0x3140,0x0020,0x3960,0x18a0,0x2900,0x3140,0x0020,0x3960,0x4180,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x18a0,0x2900,0x3140,0x0020,0x3960,0x4180,0x2900,0x0000,0x0840,0x3960,0x4180,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0840,0x0020,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0840,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0x7b00,0x8340,0x3140,0x0000,0x0000,0x0000,0x7b20,0x3960,0x0000,0x3980,0x8340,0x7b00,0x8340,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x3960,0x7b20,0x0000,0x0000,0x5200,0x8340,0x7b00,0x0000,0x0000,0x5200,0x8340,0x7b00,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x7b00,0x7b00,0x8320,0x6aa0,0x0840,0x7ae0,0x3140,0x5200,0x6aa0,0x0860,0x72e0,0x8320,0x8340,0x6aa0,0x0840,0x72e0,0x8340,0x5200,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x7b00,0x7b00,0x8320,0x6aa0,0x0000,0x0000,0x72c0,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5200,0x8b60,0x7b00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6280,0x8320,0x8320,0x8320,0x8320,0x8320,0x5200,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0x7b20,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x5200,0x8b60,0x7b00,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x7ae0,0x3140,0x5200,0x6aa0,0x0000,0x0000,0x72c0,0x5a20,0x0000,0x18c0,0x72e0,0x7b00,0x7b20,0x6260,0x0860,0x72e0,0x8320,0x8340,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x8340,0x5200,0x0000,0x18c0,0x7ae0,0x3140,0x5200,0x6aa0,0x0860,0x72e0,0x8340,0x5200,0x0000,0x0000,0x0000,0x72c0,0x5a20,0x0000,0x18c0,0x7ae0,0x3140,0x5200,0x6aa0,0x1060,0x7b00,0x7b00,0x8320,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7b00,0xfe81,0xfe41,0x8340,0x0000,0x0000,0x5220,0xfe01,0x8b60,0x0000,0x72e0,0xfe41,0xfe61,0xfe81,0xac20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8b60,0xf601,0x5220,0x0000,0xb460,0xfea1,0xf5e1,0x5220,0x0000,0xb460,0xfea1,0xf5e1,0x5220,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xede1,0xfe61,0xfe81,0xcd00,0x20e0,0xfe41,0x6aa0,0xb460,0xe5a1,0x20c0,0xfe21,0xfe41,0xfe41,0xcd00,0x20c0,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xede1,0xfe61,0xfe81,0xd520,0x0000,0x18a0,0xe581,0xbca0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x0020,0xb460,0xfe81,0xf5e1,0x5220,0x3120,0x3980,0x3980,0x3960,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd61,0xfe81,0xfe21,0xfe21,0xfe21,0xfea1,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0x20c0,0x8b60,0xf601,0x5220,0x3140,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0x3980,0x3980,0x3980,0x0000,0xb460,0xfe81,0xf5e1,0x5220,0x3140,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x6aa0,0xb460,0xeda1,0x0000,0x18a0,0xe581,0xbca0,0x0000,0x3960,0xfe21,0xfe81,0xfea1,0xd540,0x20c0,0xfe21,0xfe41,0xfe41,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe81,0xb460,0x0000,0x3980,0xfe41,0x6aa0,0xb460,0xe5a1,0x20c0,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x18c0,0xe581,0xbca0,0x0000,0x3980,0xfe41,0x6aa0,0xb460,0xe5a1,0x18a0,0xede1,0xfe61,0xfe81,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe21,0x49c0,0xdd40,0xa400,0x6280,0xf5e1,0x41a0,0xdd40,0xac40,0x0000,0x5a20,0xfe21,0x8b80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb440,0xd540,0x2920,0xf5e1,0x6260,0xac40,0xe581,0x41a0,0xf5e1,0x6260,0xac40,0xe581,0x41a0,0xf5e1,0x7b00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x20c0,0xe5a1,0xbca0,0x0000,0x3960,0xfe21,0x5a40,0xa420,0xe581,0x20c0,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x20c0,0xe5a1,0xbca0,0x0000,0x3960,0xede1,0x72e0,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x20c0,0xf5e1,0xfe81,0xb460,0x0000,0x5220,0xf5e1,0xfe41,0xfe21,0xfe21,0xeda1,0x3960,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xe5a1,0xc4c0,0x0000,0x3960,0x20c0,0xedc1,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xd520,0xfe81,0xd520,0x41a0,0xf5e1,0xfe81,0xa400,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa400,0xfe41,0xfe21,0xfe21,0xfe61,0xb460,0x0000,0x5220,0xf5e1,0xfe81,0xa400,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x5a40,0xa420,0xe581,0x18a0,0xede1,0x72e0,0xac40,0xd520,0x20c0,0xf5e1,0xfe41,0xfe61,0xd520,0x20c0,0xfe21,0x8340,0x0000,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xfe21,0x6aa0,0xac40,0xdd81,0x20c0,0xfe21,0x72c0,0xac40,0xdd61,0x18a0,0xede1,0x72e0,0xac40,0xd520,0x20e0,0xfe21,0x6aa0,0xac40,0xe581,0x0000,0x18a0,0xe5a1,0xbca0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe21,0x0000,0xe581,0xac40,0x6aa0,0xfe21,0x0020,0xe581,0xbca0,0x0000,0x3120,0xfe21,0x7b00,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb460,0xfe61,0xe581,0xfe61,0x6280,0xac40,0xdd61,0x0820,0xfe21,0x6aa0,0xac40,0xdd61,0x0820,0xfe21,0x8320,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xb460,0x0000,0x3980,0xf601,0xedc1,0xfe01,0xd520,0x18c0,0xf601,0xf601,0x9380,0x0000,0x3980,0xfe21,0x6260,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xb460,0x0000,0x3980,0xfe41,0x6280,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9bc0,0xf5e1,0xdd61,0x72e0,0x6aa0,0x41a0,0x0000,0x0000,0x6280,0x6aa0,0x5a20,0xa400,0xfe21,0x3980,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6aa0,0xedc1,0xeda1,0x93a0,0x0000,0x0000,0x0000,0x0000,0x2920,0xb440,0xedc1,0xdd40,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6aa0,0xedc1,0xeda1,0x9380,0x72c0,0x6a80,0x0000,0x7b00,0x6260,0xac40,0xedc1,0xdd40,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbc80,0xede1,0x5a40,0x6a80,0x72c0,0x41a0,0x0000,0x0000,0x6280,0x5a40,0xac40,0xedc1,0xdd40,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xedc1,0xfe01,0xd520,0x20c0,0xfe41,0x6280,0xac40,0xe581,0x18c0,0xf5e1,0xfe81,0xfea1,0xd520,0x18c0,0xf601,0xf601,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf5e1,0xac40,0x3980,0x3960,0xfe21,0x6aa0,0xac40,0xdd61,0x18c0,0xf601,0xf5e1,0xac40,0x3980,0x3960,0xfe41,0x6280,0xac40,0xe581,0x20c0,0xfe21,0x6aa0,0xac40,0xe581,0x0000,0x0000,0xe581,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe21,0x20c0,0xdd61,0xac20,0x72c0,0xfe41,0x0000,0xe581,0xbca0,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb460,0xfe01,0xbc80,0xfe41,0x6280,0xac40,0xdd61,0x20c0,0xfe21,0x6aa0,0xac40,0xdd61,0x0000,0xfe41,0x8340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3960,0xf601,0xcd00,0xe581,0xd540,0x20c0,0xf601,0xd520,0x6260,0x0000,0x3980,0xfe21,0x6aa0,0xac40,0xe581,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe61,0x5a40,0xac20,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7b00,0xc4c0,0xbc80,0xac40,0xb460,0x6aa0,0x0000,0x0000,0xa400,0xac40,0xa400,0xcd00,0xfe41,0x3980,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5a20,0xbca0,0xbc80,0xac40,0xbc80,0x93a0,0x0000,0xb440,0xb460,0xb460,0xbca0,0xb440,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5a20,0xbca0,0xbc80,0xb440,0x5220,0x0000,0x0000,0x0000,0x7b00,0xb460,0xbca0,0xb440,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbc80,0xfe41,0xa400,0xac40,0xb460,0x6aa0,0x0000,0x0000,0xa400,0xac40,0xb460,0xbca0,0xb440,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xcd00,0xe581,0xd540,0x20e0,0xfe61,0x5a40,0xac20,0xe5a1,0x18a0,0xf601,0xc4c0,0xdd61,0xdd40,0x20c0,0xf601,0xd520,0x6260,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xd520,0xac40,0x7b00,0x3120,0xfe21,0x5a40,0xa400,0xe581,0x20c0,0xf601,0xcce0,0xac40,0x8b60,0x3140,0xfe61,0x5a40,0xac20,0xe5a1,0x18c0,0xfe21,0x5a40,0xa400,0xe581,0x0000,0x0000,0xe581,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe41,0x20c0,0xe581,0xb460,0x49e0,0xd540,0x8320,0xcce0,0x93a0,0x0000,0x3980,0xfe41,0x8320,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbca0,0xdd61,0x0000,0xfe21,0x6aa0,0xac40,0xe581,0x20c0,0xfe41,0x6aa0,0xac20,0xf5e1,0x8320,0xd540,0x6a80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x3980,0xfe41,0x5220,0xa400,0xe581,0x20c0,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe41,0x6aa0,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x3140,0xd520,0x93a0,0xb460,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0xdd40,0xedc1,0xb480,0x72c0,0x8b60,0xdd61,0xe5a1,0xe581,0xe581,0xcd00,0x3120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xbc80,0xf5e1,0xcce0,0x8320,0xdd61,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xedc1,0xdd61,0x6aa0,0x8320,0x72e0,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9380,0xe581,0xe581,0xe581,0xedc1,0xb480,0x72c0,0x8b60,0xdd61,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5220,0xa400,0xe5a1,0x0820,0xd500,0x93a0,0xb460,0xb460,0x2900,0xfe41,0x5220,0xa400,0xe581,0x20c0,0xfe21,0xa400,0x6aa0,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5200,0xac40,0xedc1,0x18a0,0xfe21,0xa400,0xcd00,0xdd61,0x20c0,0xfe21,0x9bc0,0xac40,0xc4c0,0x1080,0xd520,0x93a0,0xb460,0xb460,0x2900,0xfe21,0xa400,0xcd00,0xe581,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7b00,0xf5e0,0x20c0,0xd540,0xb460,0x0000,0x20c0,0xf600,0x72e0,0x0000,0x0000,0x3960,0xf5e0,0x7b00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb440,0xd540,0x18c0,0xf5e0,0x6280,0xa400,0xd540,0x18c0,0xf5e0,0x6280,0x9bc0,0xfe60,0xf5e0,0x18c0,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd40,0xb440,0x0000,0x3960,0xf5e0,0x6280,0xa400,0xd540,0x18a0,0xeda0,0xfe20,0xfe60,0xcd00,0x18a0,0xf5e0,0x6280,0xa400,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd40,0xb440,0x0000,0x0000,0x0000,0xdd60,0xb460,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa400,0xfe80,0xede0,0x20c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x72e0,0xf600,0x20c0,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xcd00,0xfe40,0xfe20,0xfe20,0xfe20,0xfe40,0xa400,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0xa400,0xfe80,0xede0,0x20c0,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e0,0x6280,0xa400,0xdd40,0x0000,0x0000,0xdd60,0xb440,0x0000,0x3960,0xf5e0,0x6280,0xa400,0xd540,0x18a0,0xeda0,0xfe20,0xfe60,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6280,0xa400,0xd540,0x18a0,0xeda0,0xfe20,0xfe40,0xcce0,0x18a0,0xeda0,0xfe80,0xa400,0x0000,0x0000,0x0000,0xdd60,0xb440,0x0000,0x3960,0xeda0,0xfe20,0xfe40,0xcd00,0x0000,0x0000,0xdd40,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1840,0x3920,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3940,0x1820,0x0000,0x0000,0x0800,0x3920,0x1840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x28c0,0x3100,0x0000,0x3920,0x1800,0x28a0,0x3100,0x0000,0x3920,0x1800,0x2080,0x4140,0x3920,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3920,0x1800,0x28a0,0x3100,0x0000,0x3920,0x3940,0x3940,0x30e0,0x0000,0x3920,0x1800,0x28a0,0x3100,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x28a0,0x4160,0x3920,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x3940,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x30e0,0x3940,0x3940,0x3940,0x3940,0x3940,0x28a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x28a0,0x4160,0x3920,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x3920,0x1800,0x28a0,0x3100,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3920,0x1800,0x28a0,0x3100,0x0000,0x3920,0x3940,0x3940,0x3100,0x0000,0x0000,0x0000,0x0000,0x0001,0x0840,0x3960,0x18a1,0x28c0,0x3100,0x0000,0x3920,0x3940,0x3940,0x30e0,0x0000,0x3920,0x4160,0x28a0,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3920,0x3940,0x3940,0x30e0,0x0000,0x0000,0x3100,0x28e0,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x02f4,0x0314,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02d4,0x02d4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0001,0x0001,0x0000,0x01cd,0x0315,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0315,0x01cd,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0318,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0318,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x02f7,0x0317,0x0317,0x0317,0x0317,0x0317,0x0317,0x0318,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x02f7,0x0317,0x0317,0x0317,0x0317,0x0317,0x0317,0x0318,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x02f7,0x0317,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0378,0xb63c,0xbe7d,0x74fa,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe5c,0xbe7c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe7c,0xbe5c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0378,0xb63c,0xbe7d,0x74fa,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x959b,0xbe7c,0xbe7c,0xbe7c,0xbe7c,0xbe5c,0xbe7c,0xbe7d,0xb63c,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe5c,0xbe7c,0xc69d,0x9dbb,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x9dbb,0xc69d,0xbe5c,0xbe5c,0xbe5c,0xbe7c,0xbe7c,0xbe5c,0xa5fc,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe7c,0xbe7c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe7c,0xbe7c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x4c39,0xbe9d,0xbe7c,0xc69d,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0x8d7b,0xdf3e,0xffff,0xbe5c,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x649a,0xbe7c,0xef7e,0xe75e,0xe75e,0xe75e,0xef7e,0xcedd,0x6cda,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x649a,0xbe7c,0xef7e,0xe75e,0xe75e,0xe75e,0xe75e,0xcedd,0x74fa,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x33f9,0x8d7b,0xdf3e,0xffff,0xbe5c,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xe75e,0xffff,0xdf3e,0xe73e,0xe73e,0xe73e,0xdf3e,0xe75e,0xdf1e,0x3bf9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c79,0xb65c,0xe77e,0xe73e,0xe73e,0xe73e,0xef7e,0xbe7d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc69d,0xef9f,0xe75e,0xe75e,0xe75e,0xe75e,0xdf3e,0xf7bf,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x649a,0xbe5c,0xe77e,0xe73e,0xe73e,0xe73e,0xe75e,0xcedd,0x74fa,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c79,0xbe5c,0xef9f,0xe75e,0xe75e,0xe75e,0xef7e,0xcedd,0x6cda,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x4c39,0xa5fc,0xef7e,0xe75e,0xef7e,0xbe7d,0x5c99,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xf7df,0x0378,0xdf3e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xb63c,0x0297,0x0358,0x0358,0x0358,0x02b7,0x7d1a,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xb63c,0x0297,0x0358,0x0338,0x13b8,0x0378,0x855b,0xffdf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0378,0x8d7b,0xf7df,0x0378,0xdf3e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xbe7d,0x0338,0x23d8,0x23d8,0x23d8,0x2bd8,0x13b8,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xef7e,0xc69d,0x0338,0x23d8,0x23d8,0x23d8,0x23d8,0x1bb8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0338,0x853a,0xf7bf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xbe5c,0x0338,0x23d8,0x23d8,0x23d8,0x0378,0x855b,0xffdf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xef9f,0xbe7c,0x0297,0x0358,0x0358,0x0358,0x02b7,0x7d1a,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0378,0xbe9d,0xdf3e,0x02f7,0x0358,0x0297,0xb63c,0xe75e,0x23b8,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x3c19,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3c19,0x1bb8,0x0338,0x0358,0x0358,0x0358,0x02b7,0x7d1a,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bf9,0x2bd9,0x0398,0x0b98,0x0358,0xd6fd,0xffff,0xd6fe,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xb63c,0xe75e,0x23b8,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xdf3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x02b7,0xb63c,0xe75e,0x23b8,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xae1c,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fe,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xef9f,0xbe7c,0x0297,0x0358,0x0358,0x0358,0x02d7,0x7d1a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xdf1e,0xbe7c,0x0378,0x0398,0x0b98,0x0398,0x0378,0x8d7b,0xf7bf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0277,0x8d7b,0xf79f,0xe75e,0xe75e,0xe75e,0xef7e,0xcedd,0x6cda,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x0338,0x1bb8,0x0b98,0x0398,0x6cda,0x853a,0x9ddb,0xcedd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xbe7d,0xb65c,0x4419,0x02b7,0x0297,0xe75e,0xb63c,0x0257,0x0318,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5459,0x74fa,0x853b,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe73e,0xd6fd,0x74fa,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x02b7,0xc69d,0xc6bd,0x5c99,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xb65c,0xb65c,0x7d1a,0x853a,0x853a,0x853a,0x7d1a,0x9ddb,0xcedd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c79,0xbe5c,0xef9f,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0xf7df,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xf7bf,0xbe7c,0x0237,0x13b8,0x0b98,0x1bb8,0x02b7,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x02d7,0xe75e,0xb63c,0x02b7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x959b,0xb63c,0xae1c,0xae1c,0xae1c,0xae1c,0xb65c,0x8d5b,0x0297,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0xa5fc,0x853a,0x02d7,0x0338,0x0338,0x02d7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xef9f,0xa5fc,0xbe7c,0xb65c,0xf7bf,0xe75e,0xb65c,0xb63c,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x9ddb,0x6cda,0x0257,0x02b7,0x02b7,0x02b7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xb65c,0x01d6,0x02b7,0x02b7,0x02b7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0xa5fc,0xc69d,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xf7bf,0xbe7c,0x01b6,0x02b7,0x02b7,0x02b7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x6cda,0xb65c,0xae1c,0xae1c,0xae1c,0xa5fc,0xcedd,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x959b,0xc69d,0x9dbb,0x02f7,0x0338,0x02d7,0x7d1a,0xc69d,0xa5fc,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0x855b,0x7d1a,0xef9f,0xd71e,0x5c79,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xd71e,0x5479,0x6cda,0x6cda,0x6cda,0x6cda,0x74fa,0x7d1a,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc6bd,0xc69d,0x74fa,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xb63c,0xe75e,0xe75e,0xe75e,0xe75e,0xffff,0xf7df,0xe75e,0xdf1e,0x3bf9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc6bd,0xc69d,0x74fa,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xbe7c,0xbe5c,0x7d1a,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0xffff,0x7d1a,0x02d7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xbe7c,0xbe5c,0x7d1a,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4c39,0x74fa,0x6cda,0x6cda,0x6cda,0x649a,0x959b,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0297,0x9dbb,0xdf1e,0x7d1a,0x853a,0x74fa,0xc69d,0xc69d,0x02b7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x7d1a,0xffff,0xffff,0xf7df,0xffff,0xd6fe,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xcedd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x0358,0x0358,0x0358,0x02f7,0xdf1e,0xae1c,0x02b7,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0xf7bf,0x7d1a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0317,0xae1c,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x6cda,0xffff,0xffff,0xffff,0xa5fc,0x02b7,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x4419,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x33f9,0x4419,0x3c19,0x3c19,0x3c19,0x3c19,0x3c19,0x4419,0x3c19,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bf9,0x2bd9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x3c19,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x4419,0x3c19,0x4419,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x5acb,0x9492,0xbdf7,0x18c3,0xd69a,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xd69a,0x6b6d,0x0000,0x0841,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xbdd7,0xf7be,0xbe18,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xd69a,0x5acb,0x9492,0xbdf7,0x18c3,0xce79,0xe71c,0xef7d,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xbdf7,0x18c3,0xd69a,0x5acb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x39c7,0xdedb,0xdefb,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x5acb,0x8430,0xe71c,0xd6ba,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xdefb,0xe73c,0xbdf7,0x10a2,0xce79,0xe71c,0xef7d,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xef5d,0xd6ba,0xef5d,0x5aeb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xbdf7,0x18c3,0xd69a,0x52aa,0x9492,0xef5d,0xd6ba,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xef5d,0xd6ba,0xef5d,0x5aeb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xef5d,0xd6ba,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xb5b6,0xb596,0x2965,0xb5b6,0xffff,0xad55,0xbdf7,0x31a6,0xbdd7,0xe73c,0x0000,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8430,0x0000,0x0000,0x2945,0xa534,0xbdd7,0xbdd7,0x8c71,0x10a2,0xa534,0xb596,0xb596,0x8c71,0x3186,0xffff,0xd6ba,0xb596,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0xb596,0xb596,0xbdd7,0x9cd3,0x1082,0xa534,0xb596,0xb596,0x8c71,0x3186,0xffff,0x6b6d,0xb596,0xe73c,0x2104,0xffff,0xce79,0xb596,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xbdd7,0xe75d,0x2104,0xffff,0x6b6d,0xad75,0xffff,0xb5b6,0xb596,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xa534,0xbdd7,0xc618,0x9cd3,0x1082,0xa534,0xbdd7,0xbdd7,0x8c51,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x18c3,0xad75,0xffff,0xef7d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xb596,0xffff,0xad55,0xbdf7,0x31a6,0xad75,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xad75,0xffff,0xef7d,0x8c71,0x3186,0xffff,0xce79,0xb596,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdedb,0xffff,0xc638,0x2965,0xb596,0xffff,0xb5b6,0xb596,0x2965,0xb5b6,0xffff,0xad55,0xbdf7,0x31a6,0xbdd7,0xe75d,0x2104,0xffff,0x7bcf,0x630c,0xdedb,0xffff,0xc638,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xb596,0xffff,0xad55,0xbdf7,0x4a49,0x6b6d,0xdedb,0xffff,0xc638,0x2965,0xb596,0xffff,0xb5b6,0xb596,0x4208,0x6b6d,0xdedb,0xffff,0xc638,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdedb,0x0000,0xffff,0x738e,0xad55,0xef7d,0x5acb,0x0000,0x0000,0xb5b6,0xef7d,0x7bef,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8410,0x0000,0x0000,0x4208,0xffff,0x5acb,0xad75,0xef5d,0x2104,0xffff,0x9cd3,0xce59,0xef5d,0x18e3,0xffff,0x528a,0xad75,0xef7d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdefb,0x9cf3,0x0861,0x0000,0x4208,0xffff,0x9cd3,0xce59,0xef5d,0x18e3,0xffdf,0x632c,0xad55,0xe71c,0x2104,0xffdf,0xad55,0x1082,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xdefb,0x52aa,0xb596,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xdedb,0x0000,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xffff,0x630c,0x8c51,0xc638,0x2965,0xffff,0x5acb,0xad75,0xef5d,0x18e3,0xffff,0x528a,0xad75,0xf79e,0x0000,0x0000,0xe71c,0xb596,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xdefb,0x52aa,0xad75,0xef7d,0x5acb,0x0000,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xe71c,0xb596,0x0000,0x39e7,0xffdf,0xad55,0x1082,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x738e,0xffdf,0x0000,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x738e,0xad55,0xef5d,0x6b6d,0xe71c,0x5acb,0xb596,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x738e,0xffdf,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xe71c,0x5acb,0xad75,0xef5d,0x6b6d,0xdefb,0x738e,0x0000,0x738e,0xffdf,0x0000,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x8c51,0x0000,0x738e,0xffdf,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xa514,0xffff,0xf79e,0x39c7,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8410,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x18e3,0xf7be,0xffff,0xffff,0xd69a,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xdefb,0xbdf7,0x0000,0x39c7,0xf7be,0xffff,0xffff,0xd69a,0x2104,0xffdf,0x7bcf,0xb5b6,0xdefb,0x18e3,0xf7be,0xffff,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0xbdd7,0xe71c,0x18e3,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8410,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0xad75,0xffff,0xf79e,0x39c7,0x0000,0xad75,0xffff,0xf7be,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39e7,0xf7be,0xffff,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xa514,0xffff,0xf79e,0x18e3,0x0000,0xbdd7,0xdf1c,0x18e3,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x18e3,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0x0000,0xb596,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x7bcf,0x0000,0x0000,0x4208,0xffff,0x630c,0xad75,0xe73c,0x18e3,0xffdf,0x7bcf,0xb5b6,0xdefb,0x2104,0xffff,0x5aeb,0xad75,0xef5d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0x2104,0xffdf,0x7bcf,0xb5b6,0xdefb,0x2104,0xffff,0xffdf,0xffff,0xdedb,0x18e3,0xffdf,0x8430,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x632c,0xad75,0xdefb,0x0000,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x632c,0xa534,0xdefb,0x2124,0xffff,0x630c,0xad75,0xe73c,0x18e3,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xffff,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x39e7,0xffdf,0x8c92,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x73ae,0xffdf,0x2104,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x18e3,0x0020,0x0000,0xbdd7,0xdefb,0x0000,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x18e3,0x0020,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x7bef,0x0000,0x73ae,0xffdf,0x2104,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x2104,0xffff,0x738e,0xad75,0xffff,0xdefb,0xef5d,0x632c,0x2124,0xb596,0xffff,0x8c71,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xf79e,0xef5d,0xbdf7,0x0000,0x6b6d,0xd6ba,0xbdf7,0x4a69,0x39c7,0xffff,0x6b4d,0xb596,0xef5d,0x2104,0xffff,0xffdf,0xb5b6,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xef5d,0xbdd7,0x52aa,0x39c7,0xffff,0x6b4d,0xb596,0xef7d,0x0000,0x6b4d,0xffdf,0xdedb,0x4228,0x39c7,0xffff,0xf79e,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x738e,0xad55,0xffff,0xe73c,0xffff,0x6b4d,0xb5b6,0xef5d,0x2104,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x6b6d,0xd6ba,0xc618,0x5aeb,0x0861,0x6b6d,0xd6ba,0xbdf7,0x4a69,0x39c7,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x0000,0xef7d,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x738e,0xad75,0xffff,0xdefb,0xef5d,0x528a,0xbdd7,0xef5d,0x0841,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xffff,0xffff,0xb5b6,0x2945,0xffff,0x8410,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xffdf,0xffff,0xef7d,0x4a69,0xbdd7,0xef5d,0x2104,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xe73c,0xffff,0x8410,0x0000,0x8430,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef7d,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x7bcf,0x8430,0xffdf,0xffff,0xef7d,0x4a69,0xbdd7,0xef5d,0x2104,0xffff,0x8430,0x0000,0x8430,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xbdf6,0x5aa9,0x0000,0x41e6,0xad54,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x28e0,0xa513,0xbdb6,0xc5f7,0x9cd2,0x0000,0x0000,0xa513,0x7bce,0x0000,0x2900,0xad54,0x4a07,0x738d,0x9cb1,0x1000,0xa513,0xc5f7,0x738d,0x0000,0x0800,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x2901,0xb575,0xc617,0x738d,0x0000,0x2900,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x9cb1,0x738d,0x0000,0x2900,0xa513,0xbdb6,0xc5f7,0x9cd2,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xb595,0x41e6,0x738d,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0xa513,0x7bce,0x0000,0x0000,0x0000,0xa513,0x7bce,0x0000,0x2900,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x9cd2,0x7bce,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xbdf6,0x4a27,0x738d,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2901,0xb575,0xb575,0xbdb6,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x7bef,0xbdf6,0xad54,0xbdd6,0x4a27,0x738d,0x9cb2,0x1000,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xb595,0x5268,0x0000,0x5a89,0xad54,0x28e0,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x7bef,0x9cb2,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4206,0x738d,0xbdf6,0xad54,0xbdd6,0x4a27,0x738d,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x5a89,0xad54,0x28e0,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0008,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x014a,0x11ec,0x014a,0x0008,0x01ab,0x09cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x09cc,0x01ab,0x0008,0x0007,0x0007,0x0049,0x09cc,0x09cc,0x0008,0x00c9,0x11ec,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x0007,0x00ea,0x11cc,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x09cc,0x01ab,0x0008,0x0007,0x00ea,0x11ec,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x09cc,0x0008,0x00c9,0x11ec,0x01ab,0x0008,0x0007,0x0007,0x0049,0x09cc,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0008,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x014a,0x11cc,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x09cc,0x0008,0x00c9,0x11cc,0x01ab,0x09cc,0x0008,0x00c9,0x11ec,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x09cc,0x0008,0x00c9,0x11cc,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0008,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x014a,0x11cc,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x09cc,0x01ab,0x0008,0x0007,0x0007,0x0069,0x01ab,0x0008,0x014a,0x11cc,0x01ab,0x01ab,0x01ab,0x01ab,0x09cb,0x01ac,0x018c,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x1000,0x0004,0x0008,0x0008,0x0007,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x01ab,0x11cc,0x00ea,0x0007,0x0008,0x0007,0x014a,0x19ec,0x014b,0x0008,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x1000,0x0004,0x0009,0x09cc,0x01ab,0x11cc,0x00c9,0x0009,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x014a,0x19ec,0x014b,0x0008,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x09cb,0x01ac,0x018c,0x01ab,0x018c,0x01cc,0x0927,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x33f8,0x0bb9,0x3bf8,0x23fa,0x0292,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0399,0x0379,0x0b98,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xee07,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0359,0x7475,0xfe24,0x3bd7,0x0399,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8494,0xf624,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xddab,0x0399,0xf625,0x8494,0x0379,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddab,0xd5ac,0xd5ab,0xd5ab,0xddab,0x6c35,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xbd4f,0x23b8,0xd58c,0x6c55,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x033a,0x6c55,0xfe60,0xede7,0x6c55,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xcd8d,0x7475,0x23b8,0x0398,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0x8cb3,0xd5ab,0x6c55,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0x94d2,0xd58c,0x7c74,0x2bb8,0x03b9,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xede7,0xb530,0xbd2f,0xbd2f,0xbd2f,0xbd2f,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xede7,0xb530,0xbd2f,0xb530,0xf605,0xfe60,0xfe60,0xfe60,0xfe80,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xede7,0xb530,0xbd2f,0xbd2f,0xbd2f,0xbd2f,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xc56e,0xee07,0x23b8,0xfe60,0x8c93,0x037a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7474,0xd5ab,0xfe22,0xbd2f,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xc54e,0xede8,0x033a,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x23b8,0xfe40,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x6c55,0xd58c,0xfe40,0xbd2f,0x53f6,0x0399,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x0359,0x0359,0x0359,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x031a,0xd58c,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x0359,0x0359,0x0359,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xbd4f,0x23b8,0xd58c,0x6c55,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x94d2,0xf605,0xf624,0x7c74,0x2bb8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xbd4f,0xe5e9,0x0359,0x0398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x33d7,0xfe41,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x94d2,0xf605,0xfe40,0xede8,0x6c55,0x039a,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8494,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb510,0xddca,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0b98,0x5c16,0xf606,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8494,0xf606,0x43f7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x0379,0x0379,0x0379,0x0359,0x23b8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe60,0xfe60,0xfe60,0xfe60,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xddab,0xfe80,0xfe60,0xfe40,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x033a,0x0b98,0x0379,0x0398,0x0399,0x0359,0x43d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe22,0x5c16,0x0398,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xfe24,0x5c16,0x0b98,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb530,0xddca,0x43f7,0xfe24,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xf605,0xd58c,0xd5ab,0xd5ab,0xd5ab,0xd5ab,0xd5ac,0xddab,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xd58c,0x6c55,0x7c74,0x7c74,0x3bd7,0x0398,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0398,0x6c35,0x7c74,0x7475,0x8c93,0xfe41,0x8474,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe40,0xb530,0x0379,0xddca,0x4bf7,0x94b3,0xc56e,0x0379,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x8493,0x7475,0x0398,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x3bd7,0x8494,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x43f7,0x7c74,0x0b98,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0398,0x7c74,0x43f7,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0358,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x1398,0x0379,0xd5ac,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0358,0x1398,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x0359,0x0398,0x1398,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x1398,0x0379,0x0359,0x0359,0x1bb8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0358,0x1398,0x0379,0xddaa,0xe5c9,0xad11,0xbd2f,0xad10,0xb52f,0xb530,0xad10,0xbd4e,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0379,0x0359,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0358,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0358,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0379,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7475,0x0359,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0379,0xd5ab,0xfe60,0xfe41,0xfe41,0xfe41,0xfe41,0xfe41,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0379,0xe5c9,0xb52f,0x033a,0x0399,0x0398,0x0398,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0398,0x0398,0x0398,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x853b,0x853a,0x853a,0x7d1a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0379,0xe5ca,0xc54e,0x8494,0xddca,0x6c35,0xcd6d,0xad11,0x8494,0xe5e9,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x853a,0x3c19,0x0378,0x1398,0x0b98,0x1398,0x0358,0x5c79,0x74fa,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x6cda,0x855b,0x853a,0x7d1a,0x853a,0x8d5b,0x5c79,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23b8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x8c93,0x1bb8,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0338,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0379,0xd5ac,0xfe80,0xddab,0x33d7,0xfe40,0x7455,0xb530,0xe5e9,0x33d8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x8d7b,0x0378,0x0398,0x0b98,0x0398,0x0378,0xbe7d,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xd6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xae1c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23b8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0379,0xddab,0xfe80,0xfe40,0xfe40,0xfe60,0xfe41,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0379,0xddab,0xfe80,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe60,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x855b,0x0358,0x23d8,0x23d8,0x23b8,0x3bf9,0x4419,0x33f9,0x0398,0x0379,0xddca,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0379,0xddca,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x4419,0x1bb8,0x8d7b,0xffff,0x5c79,0x33f9,0x4419,0x33f9,0x0398,0x0379,0xddab,0xfe80,0xfe40,0xfe23,0xfe40,0xfe22,0xfe40,0xfe40,0xfe23,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xb63c,0x0297,0x0358,0x02f7,0xdf3e,0xbe9d,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x33f9,0x23b8,0x8d7b,0xffff,0x5c79,0x33f9,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x0317,0x0358,0x02d7,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0398,0x6c35,0x7c74,0x7c74,0x7c74,0x7c74,0x8474,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0378,0x0317,0x0398,0x0317,0xbe5c,0xe75e,0x0358,0x0398,0x6c35,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xdf3e,0xe73e,0xe75e,0xe77e,0x6cba,0x0318,0x0378,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0378,0x02f7,0x7d1a,0xffff,0x33f9,0x0358,0x0378,0x0378,0x0b98,0x0398,0x6c35,0x7c74,0x7c74,0x8494,0x7c74,0x8494,0x7c74,0x7c74,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x5c99,0xbe7d,0xe77e,0xd71e,0xe77e,0xa5fc,0x4c39,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0378,0x02f7,0x7d1a,0xffff,0x33f9,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x02f7,0x6499,0xb65c,0x0378,0x02d7,0xbe7c,0xe75e,0x0358,0x0b98,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853b,0x02b7,0x4c59,0xb65c,0x0378,0x02d7,0xbe7c,0xe75e,0x0358,0x0b98,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe5c,0xbe7c,0xbe7d,0x5c79,0x0378,0x0b98,0x0b98,0x1398,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe7c,0xbe5c,0xae1c,0xb65c,0xbe7c,0x959b,0x0378,0x1398,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x02f7,0x6cda,0xdf3e,0xffff,0xc6bd,0x4439,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe7c,0xbe7c,0xbe7c,0xbe7c,0xbe5c,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x0297,0x6cda,0xe75e,0x8d5b,0x0358,0xb65c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x2bd8,0xae1c,0xe75e,0x8d7b,0x0358,0xb65c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x0358,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xe75e,0xe75e,0xe77e,0xffff,0xffdf,0x8d5b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x02d7,0x74fa,0xffff,0x0398,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0378,0x02f7,0x7d1a,0xffff,0x33f9,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23d8,0x2bd8,0x4c39,0xffff,0x853a,0xae1c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x74fa,0xb65c,0xdf1e,0x0378,0xf7df,0x7d1a,0xae3c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02d7,0x0318,0x23d8,0xf7bf,0x853a,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x33f9,0x23b8,0x8d7b,0xffff,0x5c79,0x33f9,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02d7,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xbe7d,0x0378,0x0b98,0x23d8,0xe75e,0xbe7d,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0398,0x1398,0x23d8,0xe75e,0xb65c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x855b,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x855b,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xd6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xae1c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x7d1a,0x855b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x74fa,0x5c79,0x0358,0x0b98,0x0358,0x74fa,0x5c79,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0358,0x74fa,0x6499,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0x7d1a,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0x7d1a,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0398,0x6cda,0x855b,0x853a,0x7d1a,0x853a,0x8d5b,0x5c79,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13d9,0x0379,0x0358,0x0359,0x0358,0x0359,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0399,0x13d9,0x0bb9,0x13b9,0x0379,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0358,0x0358,0x0358,0x0359,0x0358,0x0358,0x0358,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x13b9,0x0379,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0359,0x03b9,0x13b9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0359,0x03b9,0x13b9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0841,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x5acb,0x0000,0x0000,0x0000,0x6b6d,0x8410,0x7bef,0x7bef,0x18e3,0x0000,0x528a,0x8c51,0x7bef,0x1082,0x6b4d,0x8410,0x7bef,0x7bef,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x528a,0x8c51,0x7bef,0x1082,0x6b4d,0x8410,0x7bef,0x7bef,0x18e3,0x0000,0x5acb,0x738e,0x0000,0x0000,0x632c,0x8430,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x8430,0x7bef,0x0000,0x0000,0x5acb,0x8430,0x7bcf,0x8430,0x31a6,0x4a69,0x8410,0x7bcf,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x8410,0x8410,0x8430,0x39e7,0x0000,0x39c7,0x7bef,0x0000,0x0000,0x528a,0x8430,0x7bef,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x5aeb,0x0000,0x0000,0x0000,0x738e,0x5acb,0x0000,0x18e3,0x7bef,0x7bef,0x8410,0x6b6d,0x0000,0x0000,0x738e,0x5acb,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x0000,0x0000,0x738e,0x5acb,0x0000,0x18e3,0x7bcf,0x3186,0x52aa,0x6b6d,0x0861,0x73ae,0x8410,0x8430,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x0000,0x0000,0x738e,0x5acb,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x6b6d,0x0000,0x0000,0x0000,0x528a,0x8410,0x8410,0x8430,0x3186,0x528a,0x8430,0x7bcf,0x8430,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x8320,0x8340,0x6aa0,0x0840,0x72e0,0x8340,0x5200,0x0000,0x18c0,0x7b00,0x7b00,0x8320,0x6aa0,0x1060,0x7b00,0x7b00,0x8320,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xef5d,0xbdf7,0x0000,0x0000,0x0000,0xd69a,0xffff,0xffff,0xf79e,0x39c7,0x0000,0xb596,0xffff,0xf79e,0x18e3,0xce79,0xffff,0xffff,0xf79e,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xf79e,0x18e3,0xce79,0xffff,0xffff,0xf79e,0x39c7,0x0000,0xbdf7,0xe71c,0x18e3,0x0000,0xdefb,0xffff,0xd6ba,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xf79e,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0x630c,0xa534,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xffdf,0xffff,0x73cf,0x0000,0x8c71,0xffdf,0x52aa,0x0000,0xb596,0xffff,0xf79e,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x18e3,0xe73c,0xb5b6,0x0000,0x0861,0x18e3,0xe71c,0xbdf7,0x0000,0x39c7,0xf79e,0xffff,0xffff,0xd69a,0x0000,0x18e3,0xe71c,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x0000,0x18e3,0xe71c,0xbdf7,0x0000,0x39e7,0xffff,0x6b6d,0xb596,0xe73c,0x2104,0xffdf,0xffff,0xffff,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x0000,0x18e3,0xe71c,0xbdf7,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xef5d,0x0000,0x0000,0x0000,0xb596,0xffff,0xffdf,0xffff,0x630c,0x9cf3,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe41,0xfe41,0xcd00,0x20c0,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xf5e1,0xfe61,0xfe81,0xcd00,0x18c0,0xede1,0xfe61,0xfe81,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0x18e3,0x0000,0xe71c,0xbdd7,0x0000,0x39c7,0x0841,0x0000,0xc618,0xe73c,0x18e3,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39c7,0x0841,0x0000,0xc618,0xe73c,0x18e3,0x0000,0xdedb,0xad75,0x73ae,0xf79e,0x18e3,0xe71c,0xb596,0x6b6d,0xffdf,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x4228,0xf79e,0x7bcf,0x0000,0x8c71,0xffff,0x5acb,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x39e7,0x0000,0xad96,0xdedb,0x4228,0xf79e,0x632c,0xad75,0xe71c,0x2965,0xffdf,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0xf79e,0x8c71,0x0000,0x0000,0x39c7,0xf79e,0x73ae,0xad75,0xdedb,0x0000,0x18e3,0xe73c,0xc618,0x0000,0x39c7,0xf79e,0x73ae,0xad75,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x738e,0xad75,0xdefb,0x18e3,0xf79e,0x73ae,0xad75,0xd6ba,0x2124,0xffff,0x5aeb,0xad75,0xe73c,0x18e3,0xffdf,0x8430,0x0000,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x738e,0xad75,0xdefb,0x18e3,0xf79e,0x6b6d,0xad55,0xd6ba,0x2104,0xffdf,0x7bef,0xad75,0xd6ba,0x2104,0xffdf,0x7bef,0xad75,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x39e7,0x18c3,0x0000,0x8c71,0xffff,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x18c0,0xe5a1,0xbca0,0x0000,0x0000,0x20c0,0xe5a1,0xbca0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0020,0x0000,0xb5b6,0xe71c,0x0000,0x0000,0x630c,0xc618,0xbdf7,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xc618,0xbdf7,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0x0000,0x0000,0xe73c,0xad75,0x632c,0xffff,0x2104,0xd6ba,0xffff,0xce59,0x73ae,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0x0841,0xffff,0x8410,0x0000,0x7bef,0xffff,0x3186,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xd6ba,0x2124,0x0000,0xbdf7,0xe71c,0x0000,0xffff,0x6b6d,0xa514,0xffff,0xd6ba,0x7bcf,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x6b6d,0x8c51,0xbdd7,0x2945,0xffff,0x632c,0xad75,0xe73c,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x39e7,0xffff,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xf79e,0xb5b6,0x5acb,0x31a6,0xffff,0x632c,0xad75,0xe71c,0x18e3,0xf7be,0xf7be,0xad75,0x3186,0x39c7,0xf7be,0xf7be,0x9492,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xf7be,0xad75,0x39e7,0x39c7,0xffdf,0xef5d,0xffdf,0xdedb,0x2104,0xffdf,0x632c,0xad75,0xe71c,0x2104,0xffdf,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0xb596,0xffff,0xd6ba,0x2124,0x0000,0x0000,0x7bef,0xffdf,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf601,0x9380,0x0000,0x3980,0xfe21,0x6260,0xac40,0xe5a1,0x0000,0x0000,0xe581,0xb460,0x0000,0x0000,0x0000,0xe581,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0x0000,0x0000,0x0000,0x630c,0xbdf7,0xb596,0x2965,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x630c,0xbdf7,0xb596,0x2965,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0xef7d,0xad75,0x5aeb,0xffff,0x2124,0xdedb,0xef7d,0x8c71,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x8430,0x0000,0x73ae,0xffdf,0x18c3,0x0000,0xb5b6,0xf7be,0xb596,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xad75,0x2945,0x0000,0xc618,0xe73c,0x0000,0xffff,0x738e,0xa534,0xffdf,0xb596,0xa534,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x5aeb,0xb596,0xf79e,0x18e3,0xffff,0x5aeb,0xad75,0xef7d,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x39e7,0xffff,0x5aeb,0xad75,0xef7d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xdedb,0x6b6d,0x0000,0x4208,0xffff,0x5b0c,0xad75,0xef5d,0x18e3,0xf7be,0xd6ba,0xad75,0x7bef,0x3186,0xffdf,0xd69a,0x630c,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xd6ba,0xad75,0x7bef,0x3186,0xf7be,0xce79,0xe73c,0xdedb,0x2104,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffff,0x5acb,0xad75,0xef7d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0000,0xb5b6,0xffdf,0xa514,0x0000,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xd520,0x6260,0x0000,0x3980,0xfe21,0x5a20,0xac40,0xedc1,0x0000,0x0000,0xe581,0xb460,0x0000,0x0020,0x0000,0xe581,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xd6ba,0x738e,0x7bef,0x1082,0x52aa,0xd6ba,0xf79e,0x738e,0x0861,0x6b6d,0x738e,0x94b2,0xdefb,0x31a6,0x0000,0xbdf7,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x738e,0x94b2,0xdefb,0x31a6,0x0000,0xbdf7,0xe73c,0x0000,0x0000,0xbdd7,0xb596,0x9cd3,0xd69a,0x0841,0xe73c,0xb596,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xf79e,0x8410,0xd6ba,0x630c,0x3186,0xb5b6,0xffff,0x9492,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe71c,0x0000,0x0000,0x0000,0x9cd3,0xce59,0x8430,0xd6ba,0x4a69,0xb5b6,0xdefb,0x0000,0xffff,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xd69a,0x9cd3,0xb596,0xb5b6,0x18c3,0xd69a,0x9cd3,0xb596,0xbdd7,0x0000,0x0000,0xe73c,0xbdf7,0x0000,0x3186,0xd69a,0x9cd3,0xb596,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x738e,0x0000,0x0000,0x3186,0xd69a,0x9cd3,0xb596,0xb5b6,0x2945,0xffff,0x52aa,0xb596,0xef7d,0x18e3,0xffff,0xa514,0x6b6d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x52aa,0xb596,0xef7d,0x18e3,0xffff,0x52aa,0xa534,0xe73c,0x2104,0xffff,0x6b6d,0xb596,0xe71c,0x2104,0xffff,0xad55,0xb596,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xf79e,0x7bcf,0x8430,0x0000,0xb5b6,0xef7d,0x630c,0x8410,0x39e7,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe21,0xac20,0xac40,0xbc80,0x0000,0x72c0,0xede1,0xd520,0x5a20,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0xffff,0xffff,0xf79e,0x18e3,0xd69a,0xffff,0xffdf,0xf79e,0x18e3,0xce79,0xffff,0xd69a,0x0000,0x0000,0x0000,0xb596,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0xffff,0xd69a,0x0000,0x0000,0x0000,0xb596,0xdedb,0x0000,0x0000,0x0000,0xb596,0xdefb,0x0000,0x0000,0xdedb,0xb596,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xffff,0xf79e,0x18e3,0x0000,0xad75,0xffff,0xf7be,0xffff,0x632c,0xa534,0xd6ba,0x18e3,0xf79e,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdedb,0x0000,0x0000,0x0841,0x0000,0x73ae,0xffdf,0x2104,0x0000,0xb596,0xd6ba,0x18e3,0xf79e,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x0000,0x0000,0xdedb,0xb596,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0xf79e,0x7bef,0x0000,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x39c7,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xef5d,0xffff,0xffff,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xef5d,0xffff,0xa534,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xffff,0xffff,0xffff,0x630c,0x9cd3,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x7bef,0xf79e,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xeda0,0xfe20,0xfe60,0xcd00,0x18a0,0xeda0,0xfe80,0xa400,0x0000,0x3960,0xf5e0,0xfe00,0xfe40,0xd520,0x0000,0x0000,0xdd40,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3163,0x39c5,0x39c5,0x39a5,0x0000,0x3163,0x39c5,0x39a5,0x39a5,0x0000,0x3143,0x41e6,0x3163,0x0000,0x0000,0x0000,0x2922,0x3164,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3164,0x41e6,0x3163,0x0000,0x0000,0x0000,0x2922,0x3164,0x0000,0x0000,0x0000,0x2922,0x3184,0x0000,0x0000,0x3164,0x2922,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x2901,0x41c6,0x39a5,0x0800,0x0000,0x2901,0x39c6,0x39a5,0x39c5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x1880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x2922,0x3164,0x0000,0x0000,0x0000,0x0000,0x1880,0x39a5,0x0800,0x0000,0x2922,0x3164,0x0000,0x39a5,0x1880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0000,0x0000,0x3164,0x2922,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x39a5,0x1880,0x0000,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0800,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x39c5,0x39c6,0x3164,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x41c6,0x2901,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x2901,0x39c6,0x39a5,0x39c5,0x1840,0x20e0,0x39c6,0x39a5,0x39c5,0x1880,0x0000,0x1880,0x39a5,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x3920,0x3940,0x3940,0x30e0,0x0000,0x3920,0x4160,0x28a0,0x0000,0x0800,0x3920,0x3940,0x3940,0x3100,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02d4,0x02d4,0x02d4,0x02d4,0x0b14,0x02d4,0x02d4,0x02d4,0x02d4,0x0b14,0x02d4,0x02b4,0x02d4,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02d4,0x02b4,0x02d4,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02d4,0x0b14,0x1314,0x02f4,0x02d4,0x02d4,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x1314,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x1314,0x0b14,0x02d4,0x0b14,0x02b5,0x0295,0x0314,0x0275,0x02b4,0x0294,0x0295,0x0b14,0x02b6,0x0316,0x11ec,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02d4,0x02d4,0x02f4,0x02f4,0x02d4,0x02d4,0x02d4,0x02f4,0x1314,0x02f4,0x02d4,0x0b14,0x0b14,0x1314,0x02f5,0x02b6,0x0314,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x02f4,0x02d4,0x02f4,0x1314,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x039a,0x8cb4,0x9cf3,0x039a,0xb551,0x5417,0x8495,0x9cf3,0x039a,0xb551,0x6457,0x0316,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0399,0x5c37,0xad32,0x2bd9,0x03da,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x0399,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x13d9,0x0399,0x0358,0x0359,0x03b9,0x13d9,0x0399,0x0358,0x0359,0x0358,0x03b9,0x0399,0x0379,0x0bb9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6c35,0x7c74,0x7c74,0x8494,0x7c74,0x8494,0x7c74,0x7c74,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6c35,0x7c74,0x7c74,0x8494,0x7c74,0x8494,0x7c74,0x7c74,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x9cf2,0xd58c,0x7c74,0xddca,0x5c16,0x94d2,0xd58c,0x7c74,0xddca,0x7455,0x03ba,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0399,0x0399,0x0399,0x0398,0x13da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x8494,0xfe60,0x33d7,0x0379,0x13da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x8493,0x8494,0x8494,0x43d7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0378,0x5479,0x855b,0x7d1a,0x0b98,0x0358,0x5479,0x853b,0x853a,0x855b,0x33f9,0x5479,0x6cda,0x13b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe80,0xfe40,0xfe23,0xfe40,0xfe22,0xfe40,0xfe40,0xfe23,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xfe60,0xfe23,0xfe23,0xfe23,0xfe40,0xfe60,0xfe40,0xfe40,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe80,0xfe40,0xfe23,0xfe40,0xfe22,0xfe40,0xfe40,0xfe23,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8c93,0xfe40,0x4bf7,0x0398,0x0379,0x8c93,0xfe40,0x4bf7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bb8,0x43f7,0x3bd7,0x43d7,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xfe23,0x5c16,0x0b98,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe23,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x02f7,0xb63c,0xffff,0xf7bf,0x5c79,0x02f7,0xb63c,0xffff,0xffff,0xffff,0x649a,0xb63c,0xe77e,0x23d8,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe80,0xddab,0x33d7,0xfe40,0x7455,0xb530,0xe5e9,0x33d8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x23b8,0xddab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe80,0xddab,0x33d7,0xfe40,0x7455,0xb530,0xe5e9,0x33d8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe40,0xfe40,0x6436,0x9cf2,0xfe60,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe23,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1bb8,0x23b8,0x23b8,0x23b8,0x13b8,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe5c,0xe75e,0x4439,0xf7bf,0x64ba,0xae3c,0xe75e,0x0378,0x3c19,0x0338,0xbe5c,0xdf3e,0x0378,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5ca,0xc54e,0x8494,0xddca,0x6c35,0xcd6d,0xad11,0x8494,0xe5e9,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0399,0x0359,0xd5ac,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0399,0x0398,0x0398,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0398,0x0399,0x0399,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5ca,0xc54e,0x8494,0xddca,0x6c35,0xcd6d,0xad11,0x8494,0xe5e9,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x33d7,0xad11,0xfe60,0x7c74,0x1bb8,0x2bb8,0xad11,0xfe60,0x7c74,0x2bb8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x8493,0x8494,0x8494,0x43d7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x4bf7,0xb530,0xfe22,0x94b3,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x9cd2,0xede8,0xddca,0xe5e9,0x6c55,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xdf3e,0x1398,0xffff,0x6cda,0xa5fc,0xffff,0xd6fe,0x2bd8,0x02d7,0xb63c,0xffff,0xdf1e,0xffff,0x7d1a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xe5c9,0xa4f1,0xad10,0xad10,0xad10,0xad10,0xad11,0xb530,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x033a,0xddab,0xfe80,0xfe60,0xfe60,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x0359,0x0398,0x1398,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x1398,0x0379,0x0359,0x0359,0x1bb8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xe5c9,0xad11,0xbd2f,0xad10,0xb52f,0xb530,0xad10,0xbd4e,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7475,0xb530,0xad10,0xb530,0x43f7,0x6c55,0xb530,0xad10,0xb530,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0359,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x033a,0x7c74,0xfe40,0x23b8,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xc54e,0xbd2f,0xbd4f,0x5c16,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe73e,0x23d8,0xffff,0x6cda,0xadfc,0xffdf,0xa5db,0x0378,0x02b7,0xb65c,0xffff,0xffff,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe21,0xc54e,0x7455,0xddca,0x8c93,0xad10,0xcd6d,0x7455,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xd58c,0x6c55,0x7c74,0x7455,0xc54e,0xddab,0xd5ac,0xddab,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xd58c,0x6c55,0x7c74,0x7c74,0x3bd7,0x0398,0x0398,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0398,0x6c35,0x7c74,0x7475,0x8c93,0xfe21,0x8474,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe40,0xb530,0x0379,0xddca,0x4bf7,0x94b3,0xc56e,0x0379,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xa4f1,0xc56e,0x0379,0xddca,0x6436,0x9cd2,0xc56e,0x0379,0xddca,0x7455,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x6c55,0xd58c,0x33d7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0379,0x0359,0x0359,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe7d,0xe75e,0x23d8,0xffff,0x6cda,0xae1c,0xef9f,0x649a,0x853b,0x23b8,0x8d5b,0xef9f,0xffff,0xe73e,0x64ba,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb510,0x6c55,0xf624,0x33d7,0xddca,0xad10,0x6c35,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe60,0xfe60,0xfe40,0xfe60,0x7475,0x033a,0x0359,0x23b8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe60,0xfe60,0xfe40,0xfe60,0x7c74,0x0379,0x0398,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xddab,0xfe80,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x033a,0x0b98,0x0379,0x0398,0x0399,0x0359,0x43d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x0379,0x0b98,0x0379,0x0398,0x0399,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0318,0xb63c,0xd71e,0x23b8,0xf7bf,0x6cba,0x9dbb,0xffff,0xffff,0xffff,0x7d1a,0x0297,0x74fa,0xf7bf,0x23b8,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0358,0x0338,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xcd8c,0x33d7,0xf624,0x7455,0xad10,0xddca,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0358,0x0338,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0398,0x13b8,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0358,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x1398,0x0358,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x33f9,0x1398,0x3c19,0x1bb8,0x2bd8,0x4419,0x3c19,0x4419,0x23b8,0x0398,0x23b8,0x3c19,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02b7,0xbe7c,0xef9f,0xe75e,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0379,0xe5ca,0xc56e,0x8474,0xcd8c,0x6c55,0xc54e,0xa4f1,0x8494,0xddab,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02b7,0xbe7c,0xef9f,0xe75e,0xe75e,0xe75e,0xef9f,0x9dbb,0x0338,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xef7e,0x5c79,0x02f7,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0xc69d,0x0358,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x031a,0xd58c,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0297,0x959b,0xef9f,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x0359,0x0359,0x0359,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0338,0x9dbb,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc69d,0x9dbb,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x1398,0x0398,0x02b7,0xc6bd,0xa5fc,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0338,0x0338,0x0398,0x0b98,0x0378,0x0318,0x0358,0x0358,0x02d7,0x02d7,0x0378,0x1bb8,0x0378,0x02d7,0x0317,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd8,0xa5fc,0xbe5c,0xbe7c,0xbe7c,0xbe5c,0xbe7c,0xbe7c,0xbe7c,0x959b,0x0378,0x0379,0xe5c9,0xe5c9,0xc56e,0xfe80,0xb510,0xfe41,0xe5c9,0xc54e,0xfe80,0xfe80,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd9,0xb63c,0xb63c,0xae1c,0xae1c,0xae1c,0xae1c,0xb65c,0x74fa,0x0358,0x0b98,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xd71e,0xb63c,0xbe5c,0xbe7c,0xbe5c,0xc69d,0x74fa,0x02f7,0x1398,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xcedd,0xa5fc,0xae1c,0xae1c,0xae1c,0xb65c,0xc69d,0x9dbb,0x0378,0x0379,0xe5c9,0xede7,0xb510,0xbd2f,0xb530,0xf605,0xfe60,0xfe60,0xfe60,0xfe80,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0x9dbb,0xc69d,0xbe5c,0xbe5c,0xbe5c,0xbe5c,0xc69d,0x9dbb,0x0378,0x0379,0xe5c9,0xede7,0xb510,0xbd2f,0xbd2f,0xbd2f,0xbd2f,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02b7,0x0338,0x0338,0x0338,0x0277,0xbe7c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xc69d,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02b7,0x0318,0x0398,0xb63c,0xc6bd,0x7d3a,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x9dbb,0x7d3a,0x0358,0x0b98,0x0378,0x9dbb,0x74fa,0x4439,0xb63c,0xbe7d,0x4c39,0x02f7,0x5479,0xb63c,0xbe5c,0xc69d,0x7d3a,0x0358,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x74fa,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe5c,0xf79f,0x0338,0x0379,0xb530,0xe5c9,0xe5ca,0xd5ab,0xe5c9,0xddab,0xddaa,0xe5ca,0xd5ac,0xddab,0x6c35,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3bf9,0xdf3e,0x9dbb,0x649a,0x6cda,0x6cda,0x6cda,0x74fa,0x4439,0x0358,0x0b98,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x0277,0x0317,0x0317,0x02b7,0xc69d,0xc69d,0x5c79,0x0398,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xa5fc,0x5c99,0x6cda,0x6cda,0x74da,0x0398,0x02d7,0x0338,0x13b8,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddab,0xd5ac,0xd5ab,0xd5ab,0xddab,0x6c35,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x6cda,0xdf1e,0x9dbb,0x0277,0x0317,0x02d7,0x0237,0x9dbb,0xcebd,0x0358,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xb63c,0x74fa,0x853a,0x853a,0x853a,0x74fa,0xd6fd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0358,0xe75e,0xbe5c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xb63c,0x74fa,0x7d3a,0x8d7b,0xe75e,0x5c99,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0338,0xef9f,0xc69d,0x02f7,0x0b98,0x0338,0xef9f,0xb65c,0x6cda,0xffff,0xef9f,0xa5db,0x2bd8,0x7d1a,0xffff,0xe75e,0xef9f,0x9dbb,0x0338,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x3c19,0x3c19,0x3c19,0x0b98,0xc69d,0xe75e,0x0358,0x0b98,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0xd6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x1398,0x02b7,0xbe5c,0xef9f,0x0338,0x0b98,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0x7d1a,0x0338,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02f7,0x1398,0x13b8,0x3c19,0x4419,0x33f9,0x1bb8,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x23b8,0x0398,0x0b98,0x0b98,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xf7bf,0x4c39,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0358,0xe75e,0xae1c,0x6cda,0xffff,0x0378,0xe75e,0xb63c,0x6cda,0xffff,0x4c39,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x1398,0x02b7,0xbe5c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x3c19,0x3c19,0x4419,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02f7,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xcedd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x3c19,0x3c19,0x3c19,0x0b98,0xc69d,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x74fa,0x02f7,0x13b8,0x0b98,0x0358,0xe75e,0xbe5c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x33f9,0x5c79,0xffdf,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xe75e,0xbe5c,0x0317,0x0b98,0x0358,0xe75e,0xae1c,0x6cda,0xffff,0x23d8,0xe75e,0xae1c,0x64ba,0xffff,0xffff,0x7d1a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xb63c,0x74fa,0x853a,0x853a,0x853a,0x74fa,0xd6fd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3bf9,0xe75e,0x5c99,0x0257,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x0277,0x0317,0x0317,0x02b7,0xc69d,0xc69d,0x5c79,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02f7,0x0378,0x0378,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x6cda,0xdf1e,0x9dbb,0x0257,0x0338,0x64ba,0x5479,0xd71e,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xb65c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0xdf3e,0x9dbb,0x0277,0x0317,0x0297,0xef9f,0xc69d,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02f7,0x0378,0x0b98,0x74fa,0xdf3e,0x9dbb,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x0277,0x0317,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xe75e,0xb63c,0x0257,0x0317,0x0338,0xe75e,0xae1c,0x6cda,0xffff,0x23d8,0xe73e,0xae1c,0x6cda,0xffff,0x853a,0x0378,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02b7,0x0338,0x0338,0x0338,0x0277,0xbe7c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd8,0xb63c,0xbe7d,0xbe5c,0xbe5c,0xbe7c,0xbe5c,0xbe7c,0xbe5c,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xd6fe,0xb63c,0xbe5c,0xbe7c,0xbe5c,0xc69d,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0x9dbb,0xc69d,0xbe7c,0xbe5c,0xae3c,0xae1c,0xb63c,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xc69d,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0x9dbb,0xc69d,0xbe5c,0xbe5c,0xbe7c,0xbe5c,0x74fa,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x1398,0x0398,0x02f7,0x9dbb,0xc6bd,0x9dbb,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xd6fe,0xb63c,0xbe7c,0xbe7c,0xbe7c,0xbe7c,0xc69d,0x9dbb,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0338,0xe75e,0xef9f,0xb65c,0xb63c,0x0398,0xef7e,0xb63c,0x74da,0xffff,0x23d8,0xe77e,0xb63c,0x6cda,0xffff,0xb65c,0xbe7d,0x853a,0x0358,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0338,0x9dbb,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x1398,0x0398,0x02b7,0xbe7c,0xef9f,0xe75e,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xef7f,0x5c79,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x13b8,0x0297,0x959b,0xef9f,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0338,0x9dbb,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x13b8,0x0297,0x959b,0xef9f,0xe75e,0xef9f,0x5c79,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x13b8,0x0297,0x9dbb,0xcedd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0358,0xb63c,0xe75e,0xef7e,0xdf1e,0x23b8,0xbe7d,0x959b,0x5c79,0xd6fd,0x23b8,0xbe7d,0x959b,0x5479,0xdf3e,0xe75e,0xef9f,0x9dbb,0x0338,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x1398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0358,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x0358,0x0358,0x0b98,0x0358,0x0378,0x0398,0x0358,0x0b98,0x0358,0x0378,0x0398,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0841,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x630c,0xe71c,0x0000,0x0000,0x9cf3,0xbdf7,0x0000,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x738e,0x0000,0x630c,0xe71c,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x630c,0xe71c,0x0000,0x0000,0x9cf3,0xbdf7,0x0000,0x0000,0x1082,0x0000,0x5acb,0xef5d,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x5aeb,0xe71c,0x31a6,0x0000,0x0000,0x630c,0xe71c,0x0000,0x0000,0x0000,0x5acb,0xef5d,0xef5d,0x5acb,0x9492,0xbdf7,0x18c3,0xd69a,0x5acb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x5acb,0x9492,0xef5d,0xd6ba,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xce79,0xef7d,0x9492,0x0000,0x31a6,0xce79,0xe71c,0xef7d,0xbdf7,0x18c3,0xd69a,0x5acb,0x9492,0xbdf7,0x2104,0xdedb,0xdefb,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a0e,0x0b56,0x0b15,0x0000,0x0000,0x0a0e,0x0b56,0x0b15,0x0000,0x0000,0x0a0e,0x0b36,0x0b36,0x0b56,0x018a,0x0000,0x0149,0x0b35,0x0000,0x0000,0x0a2f,0x0ab2,0x0062,0x0af4,0x018a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xbdd7,0xbdd7,0xbdf7,0x31a6,0xbdd7,0xef5d,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x4a49,0x6b6d,0xb5b6,0xad75,0xb596,0x2965,0xb5b6,0xffff,0xad55,0xbdf7,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xbdd7,0xbdd7,0xbdf7,0x31a6,0xbdd7,0xef7d,0x0000,0x0000,0x0000,0x7bef,0xbdf7,0xad75,0xbdf7,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xbdd7,0xb596,0x0000,0x0000,0x73ae,0xbdd7,0xbdd7,0xb596,0x4208,0x73ae,0xbdf7,0xad75,0xbdf7,0x31a6,0xbdd7,0xe73c,0x2104,0xffff,0x6b6d,0xad75,0xffff,0xad55,0xbdf7,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xb596,0xffff,0xad55,0xbdf7,0x4a49,0x6b6d,0xdedb,0xffff,0xc638,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xd6ba,0xb596,0x8c51,0x3186,0xffff,0xce79,0xb596,0x94b2,0x31a6,0xffff,0x630c,0xb596,0xf79e,0x0000,0xad75,0xffff,0xef7d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0b98,0x0a70,0x0ab2,0x00c5,0x0a91,0x0b98,0x0a70,0x0ab2,0x00c5,0x0a91,0x0b98,0x0a70,0x0ab2,0x0107,0x018a,0x0a91,0x0a70,0x0a91,0x00a4,0x0ab2,0x0b36,0x0000,0x0bd9,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0x0000,0xdedb,0x5acb,0xb596,0xe73c,0x0000,0x0000,0x0000,0xb5b6,0xef7d,0x5acb,0x0000,0x0000,0xc618,0xf79e,0x738e,0xffff,0x738e,0xad55,0xef5d,0x6b6d,0xdefb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0x0000,0xdedb,0x5acb,0xb596,0xe73c,0x0000,0x0000,0x0000,0xa514,0xd6ba,0x5acb,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0000,0x73ae,0x0000,0xc618,0xe73c,0x0000,0xffff,0x73ae,0x94b2,0xd6ba,0x5acb,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xad55,0xef5d,0x6b6d,0xdefb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xdefb,0x52aa,0xad75,0xef7d,0x5acb,0x0000,0x0000,0x0000,0x738e,0xffdf,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x528a,0xad75,0xef7d,0x18e3,0xffdf,0xad55,0x1082,0x0000,0x31a6,0xce79,0x94b2,0xb596,0xb5b6,0x0000,0x0000,0xe71c,0xb596,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a91,0x0b56,0x018a,0x0b35,0x0128,0x0a70,0x0b56,0x018a,0x0b35,0x0128,0x0a70,0x0b56,0x0148,0x0000,0x0000,0x0ab2,0x0b77,0x018a,0x0bb9,0x018a,0x0a70,0x0b57,0x01cc,0x0af4,0x016a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x18e3,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x39c7,0x0000,0xad75,0xffff,0xffff,0xffff,0x632c,0xa514,0xffff,0xf79e,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x18e3,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0861,0x0000,0x73ae,0xffdf,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffff,0x6b6d,0xad75,0xe71c,0x18e3,0xffff,0x8410,0x0000,0x73ae,0xffdf,0x5acb,0x0000,0xbdd7,0xdf1c,0x18e3,0xffdf,0x6b4d,0xa514,0xffff,0xf79e,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0xad75,0xffff,0xf79e,0x39c7,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x18e3,0xf7be,0xffff,0xad55,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a70,0x0bda,0x0b77,0x00e6,0x0000,0x0a70,0x0bda,0x0b77,0x00e6,0x0000,0x0a70,0x0bda,0x0b77,0x00c5,0x0000,0x0a70,0x0bd9,0x0b98,0x0bb9,0x0169,0x0a4f,0x0bda,0x0b77,0x00e6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0x0000,0xf7be,0x6b4d,0xad75,0xe71c,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xffff,0x6b4d,0xad75,0xe71c,0x4228,0xf79e,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0x0000,0xf7be,0x6b4d,0xad75,0xe71c,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xffdf,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0x0000,0xffff,0x6b6d,0xb596,0xe73c,0x0000,0xffff,0x8430,0x0000,0x0000,0x4228,0xffdf,0x6b4d,0xad75,0xdefb,0x0000,0xffdf,0x6b4d,0xad75,0xe71c,0x2965,0xffdf,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x8430,0x0000,0x0000,0x39c7,0xf79e,0x73ae,0xad75,0xdedb,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a91,0x0b35,0x00a4,0x0b98,0x016a,0x0a70,0x0b36,0x00e6,0x0b77,0x0169,0x0a70,0x0b36,0x0000,0x0000,0x0000,0x0a91,0x0b35,0x0106,0x0b98,0x018a,0x0a70,0x0b36,0x00e6,0x0b77,0x01ab,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xa534,0xe71c,0x8c71,0x0000,0xb5b6,0xffff,0xe71c,0xef5d,0x528a,0xad75,0xffff,0xdefb,0xef5d,0x528a,0xbdd7,0xef5d,0x0841,0xffff,0x738e,0xb5b6,0xef5d,0x0861,0xffff,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xa534,0xe71c,0x8c71,0x0000,0xb5b6,0xffff,0xe71c,0xef5d,0x5acb,0x9492,0xef7d,0xdedb,0x8c71,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xa534,0xe71c,0x8c51,0x2945,0x4208,0xa534,0xe71c,0x8c51,0x0000,0x9cd3,0xef7d,0xdedb,0x8c71,0x0000,0xb5b6,0xffff,0xe73c,0xffff,0x6b4d,0xad75,0xffff,0xdedb,0x8c71,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x738e,0xad75,0xffff,0xdefb,0xef5d,0x6b6d,0x0000,0x8430,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xffff,0x738e,0xb5b6,0xef5d,0x2104,0xffff,0xf79e,0xe73c,0xbdd7,0x2965,0xffff,0x6b4d,0xb5b6,0xf79e,0x0000,0x0000,0xef7d,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a91,0x0bda,0x0b14,0x0a0d,0x0000,0x0ab2,0x0b56,0x0021,0x0bd9,0x018b,0x0a70,0x0bd9,0x0b35,0x0b56,0x0127,0x0a91,0x0b56,0x0000,0x0bb9,0x018a,0x0a91,0x0b56,0x0021,0x0bd9,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0882,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xbdf6,0x4a27,0x6b2b,0xbdb6,0xbdb6,0xbdf6,0x4a27,0x738d,0x9cb1,0x1000,0xad54,0x4a07,0x738d,0x9cb1,0x1000,0xad54,0x5a89,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xbdf6,0x4a06,0x738d,0xc617,0xb575,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0882,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x7bce,0xc617,0xb575,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xb595,0x41e6,0x6b4c,0xbdd6,0xb575,0x0000,0x0000,0x0800,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb1,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xbdf6,0x5aa9,0x0000,0x5a89,0xad54,0x28e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x28e0,0xad54,0x4a07,0x738d,0x9cb1,0x1000,0xa513,0xbdb6,0xc5f7,0x9cb2,0x1000,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x9cd2,0x7bce,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x018a,0x0a70,0x0a4f,0x0000,0x0000,0x018a,0x01ed,0x0000,0x0a2f,0x00a4,0x0148,0x0a70,0x0a70,0x0a91,0x00a4,0x0169,0x01ed,0x0000,0x0a2f,0x00a4,0x0169,0x01ed,0x0000,0x0a2f,0x00e6,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0927,0x016b,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x0007,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x016b,0x0927,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x11cc,0x014a,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x0007,0x016b,0x010a,0x0007,0x0008,0x01ab,0x09cb,0x01ac,0x018c,0x018c,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0927,0x016b,0x0008,0x01ab,0x09cc,0x11cc,0x014a,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x0007,0x016b,0x010a,0x0007,0x0008,0x016c,0x01cc,0x0927,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0009,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x014a,0x19ec,0x014b,0x0008,0x01ab,0x09cb,0x01ac,0x018c,0x018c,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x09cc,0x01ab,0x0008,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x0007,0x0007,0x0069,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x09cc,0x0008,0x00c9,0x11cc,0x01ab,0x018c,0x01cc,0x0927,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x09cb,0x01ac,0x018c,0x09cb,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x00e6,0x016a,0x0169,0x01ab,0x01cc,0x018a,0x016a,0x01ab,0x0169,0x01ab,0x018a,0x0169,0x0169,0x0169,0x01ab,0x018a,0x016a,0x01ab,0x0169,0x09ab,0x018b,0x014a,0x018c,0x0169,0x09ab,0x0127,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x43f8,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x3bf8,0x23fa,0x0292,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x03b9,0x2bd8,0x43f8,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x3bf8,0x23fa,0x0292,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x3bf8,0x03b9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x43f8,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b8,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b8,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xf607,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0xf606,0x7c74,0x0379,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0359,0x7475,0xf624,0x23b8,0x033a,0xa4f1,0xfe40,0xf606,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x23b8,0xf624,0x8494,0x0379,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xddca,0x035a,0x0398,0x13b8,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x033a,0xa4f1,0xfe60,0xf607,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7455,0xe5ca,0x3bd7,0x0398,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7455,0xe5ca,0x3bd7,0x0398,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x7c74,0x7475,0xe5c9,0x7455,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x1398,0xfe60,0x8c93,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xcd6d,0x8494,0xd5ab,0x5416,0xb510,0xede7,0x6c55,0xe5c9,0x7455,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0359,0x5c36,0xe5c9,0x8cb3,0x3bd7,0x03b9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x4bf7,0xad11,0xddca,0x0398,0x0379,0x13d9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x033a,0xb52f,0xb510,0x6436,0x8cb3,0xe5c9,0x7455,0x039a,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x5c16,0xad11,0x2bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x5c16,0xad11,0x2bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x43d7,0xb530,0xbd4f,0x5c16,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x5416,0xb530,0xb530,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xc54e,0xe5c9,0x0379,0xfe40,0x7455,0xa4f1,0xf624,0xad11,0xb530,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xc54e,0xa4f1,0x0399,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x43d7,0xb530,0xbd4f,0x5c16,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bb8,0xad10,0xfe22,0xede8,0x7c74,0x0379,0xb530,0x5c36,0x0399,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x0399,0x0398,0x0398,0x0398,0x0b98,0x0398,0x0398,0x0398,0x0398,0x0b98,0x0398,0x0399,0x0399,0x0398,0x0b98,0x0398,0x0399,0x0399,0x0398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0x6c55,0x1bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x2bb8,0x6c55,0x1bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7455,0xddab,0x0398,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x8494,0xfe60,0x1398,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xbd4f,0xe5ca,0x0b98,0xfe41,0x6c55,0xa4f1,0xfe40,0xddab,0x7455,0x2bb8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xa4f1,0xd5ac,0x5c16,0x0398,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x23b8,0x7c74,0xe5c9,0x7455,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x3bd7,0x8494,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x33d7,0xd5ac,0xfe23,0xfe24,0xbd2f,0x0359,0x033a,0x0379,0x13d9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x1398,0x3bd7,0x43f7,0x2bb8,0x1bb8,0x3bd7,0x1398,0x33d7,0x2bb8,0x1bb8,0x3bd7,0x1398,0x33d7,0x43d7,0x43d7,0x3bd7,0x1398,0x33d7,0x43d7,0x3bd7,0x3bd7,0x13b8,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8474,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf606,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb510,0xddab,0x43f7,0xf606,0x6436,0xad10,0xddca,0x0398,0xfe40,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x7455,0xfe24,0x5c16,0x0b98,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf625,0x23b8,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0xe5c9,0xbd4f,0x0379,0x43d7,0x43d7,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x13b9,0x0379,0x23b8,0xf606,0xfe60,0x9cf2,0x6435,0xf606,0x23b8,0xd5ab,0xa4f1,0x6435,0xf606,0x23b8,0xcd6d,0xfe40,0xfe40,0xf606,0x23b8,0xcd8c,0xfe40,0xfe24,0xf606,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x3bd7,0x13b8,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8474,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xfe24,0x5c16,0x0359,0xbd4f,0xe5e9,0x23b8,0xfe40,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x5c16,0xfe24,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0xee07,0xfe60,0xfe40,0xfe23,0xfe23,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x039a,0x7455,0xe5c9,0x7475,0x7c74,0x43f7,0x7c74,0xfe22,0x0379,0xddca,0xb510,0x6c55,0xfe41,0x23b8,0xddca,0xcd8d,0x6436,0x7c74,0x13b8,0x5c16,0xd5ac,0xee07,0x7455,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x43f7,0x8474,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x3bd7,0x8474,0x0b98,0x0379,0x5c16,0x6c55,0x13b8,0x7c74,0x43d7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0b98,0x7c74,0x43f7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x7c74,0x7c74,0x7c74,0x8494,0x8494,0x8494,0x43d7,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0399,0x5c16,0xbd4f,0xb530,0x23b8,0x02fa,0x8494,0xfe40,0xbd4f,0xfe24,0xa4f1,0x6c55,0xfe23,0x23b8,0xddab,0xede8,0x8494,0x0359,0x0b98,0x031a,0xb530,0xe5ca,0x033a,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b8,0x0379,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x13d9,0x0379,0x0379,0xddab,0xad11,0x33d7,0x7475,0xfe40,0xe5c9,0xfe40,0xa4f1,0x6c55,0xfe23,0x23b8,0xd5ac,0xfe40,0xbd4f,0x0379,0x0b98,0x0359,0xbd2f,0xe5c9,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x853b,0x853a,0x853a,0x853a,0x853a,0x7d1a,0x853b,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x853a,0x3c19,0x0378,0x1398,0x0b98,0x0358,0x74fa,0x6499,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0358,0x5479,0x8d5b,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x33f9,0x0378,0x1398,0x0b98,0x1398,0x0358,0x5479,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x13b9,0x0398,0x0378,0x0378,0x0398,0x0398,0x0378,0x0378,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x03b9,0x23b8,0x3bd7,0x0398,0xe5ca,0xad11,0x6c55,0xfe23,0x0398,0xddca,0xad10,0x6c55,0xfe23,0x23b8,0xe5ca,0xb530,0x033a,0x1398,0x0b98,0x0359,0xbd2f,0xe5c9,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x8d7b,0x0378,0x0398,0x1398,0x23d8,0xe75e,0xb65c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x0378,0xb63c,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x02f7,0xbe7d,0xef7e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x959b,0x0378,0x0398,0x0b98,0x0398,0x0378,0xc6bd,0xef7e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x03b9,0x23b8,0x4419,0x4419,0x1bb8,0x2bd8,0x4419,0x3c19,0x13b8,0x0b98,0x0398,0x23b8,0x3c19,0x13b8,0x0b98,0x0398,0x23b8,0x3c19,0x13b8,0x0398,0x2bd8,0x4419,0x3c19,0x4419,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x039a,0x7c74,0xfe40,0xfe40,0x8c93,0x0359,0x8494,0xfe40,0x23b8,0xe5e9,0xb530,0x6c55,0xfe40,0x23b8,0xe5e9,0xbd4f,0x0359,0x0b98,0x0b98,0x0359,0xbd4f,0xede8,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x4419,0x3c19,0x4419,0x3c19,0x0378,0xef7e,0xc6bd,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xb63c,0x0277,0x23d8,0xf7df,0x8d7b,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0xdf3e,0xbe7d,0x0b98,0x3c19,0x3c19,0x0b98,0xbe7d,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x855b,0x0358,0x23d8,0x23d8,0x23d8,0x0338,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0xb65c,0xdf3e,0x02f7,0x0398,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xa5fc,0x02b7,0x0b98,0x02f7,0xd6fd,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x1314,0x0318,0x6cda,0xffff,0xffff,0x64ba,0x9dbb,0xffff,0xf7bf,0x23b8,0x0358,0x0317,0x74fa,0xffdf,0x23d8,0x0358,0x0317,0x74fa,0xffdf,0x23d8,0x02d7,0xa5fc,0xffff,0xffff,0xffff,0x7d1a,0x0359,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x03b9,0x43d7,0x8494,0x8494,0x33d7,0x0379,0x43d7,0x7c74,0x13b8,0x6c55,0x5416,0x33d7,0x7c74,0x13b8,0x6c55,0x5c16,0x0398,0x0b98,0x0b98,0x0398,0x5c16,0x6c55,0x0398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0378,0x0378,0x0338,0x0358,0xdf1e,0xa5fc,0x4439,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x649a,0xb63c,0xdf3e,0xd6fd,0x8d7b,0x33f9,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0xa5fc,0x4c39,0x0358,0x0378,0x0378,0x0358,0x5c79,0x74fa,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x74fa,0x02d7,0x13b8,0x0b98,0x13b8,0x0277,0xbe7c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xdf3e,0xe73e,0xe73e,0xe73e,0xe77e,0xb63c,0x4c39,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x2bd8,0xae1c,0xdf3e,0x0378,0x02b7,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xa5fc,0xbe7c,0xbe9d,0x0338,0xdf3e,0x9dbb,0xcedd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0274,0xa5fc,0xd6fe,0x64ba,0x853b,0x0398,0xb65c,0xef9f,0x6cda,0xe75e,0x649a,0x8d7b,0xc6bd,0x74da,0xd71e,0x5c79,0x8d7b,0xcedd,0x855b,0xe75e,0x5c79,0xb63c,0xef9f,0x649a,0x853b,0x4419,0x0399,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x13b9,0x0398,0x0359,0x0359,0x0398,0x13b8,0x0398,0x0379,0x0b98,0x0379,0x0379,0x0398,0x0379,0x0b98,0x0379,0x0379,0x13b8,0x0b98,0x0b98,0x13b8,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x4c39,0xbe9d,0xbe9d,0x4c39,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0217,0xae1c,0xffff,0xffff,0x0358,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x74fa,0x0297,0x1bb8,0x0b98,0x0b98,0x1bb8,0x0338,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd8,0xa5fc,0xc69d,0x74fa,0x02f7,0x0b98,0x02f7,0x9dbb,0xc69d,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe7c,0xbe7c,0xbe7c,0xbe7d,0xb63c,0x855b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853b,0x02b7,0x4c39,0xbe9d,0xbe9d,0x1bb8,0xae1c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cba,0x64ba,0xc69d,0xbe7c,0xbe9d,0x1bb8,0xae1c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x02b4,0x855b,0xc69d,0xa5fc,0x0317,0x02b7,0xb65c,0xffdf,0xae1c,0xbe7d,0x3bf9,0xb63c,0xffff,0xb63c,0xffff,0x6cda,0xb65c,0xe77e,0x0318,0xae1c,0x3bf9,0xae1c,0xffdf,0xa5db,0x0378,0x0378,0x13d9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0358,0x4439,0xa5fc,0xdf1e,0x0358,0x0338,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x649a,0xb63c,0xdf3e,0xd6fd,0x8d7b,0x33f9,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0xa5fc,0x4c39,0x0358,0x0378,0x0378,0x0358,0x5c79,0x74fa,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02b7,0xc69d,0xc6bd,0x5c99,0x0378,0x74fa,0xdf3e,0x9dbb,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0358,0x0378,0xdf3e,0x9dbb,0xcedd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853b,0x0277,0x649a,0xe75e,0x0378,0x02b7,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0x7d3a,0x7d3a,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x1314,0x02f8,0x5479,0xe75e,0x8d7b,0x0378,0xae1c,0xffff,0xdf1e,0x0378,0x02b7,0xb63c,0xffff,0xe75e,0xffff,0x64ba,0xb63c,0xe75e,0x0338,0x6cba,0x0378,0xae1c,0xffff,0xd6fe,0x2bd8,0x0378,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x0398,0xc6bd,0xef7e,0x0378,0x3c19,0x4419,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xb63c,0x0277,0x23d8,0xf7df,0x8d7b,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0xdf3e,0xbe7d,0x0b98,0x3c19,0x3c19,0x0b98,0xbe7d,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x02b7,0xb63c,0xe75e,0x4c39,0xffdf,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x1398,0x0398,0x02f7,0xd6fd,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0398,0x0358,0x0398,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x7d3a,0xffff,0xffff,0x7d3a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x02f4,0x2bf9,0x33f9,0x4439,0xffdf,0x6cba,0xae3c,0xe75e,0x02f7,0x0398,0x0317,0xbe7c,0xdf3e,0x0378,0xffff,0x6cda,0xa5fc,0xdf1e,0x4c39,0xffdf,0x6cba,0xae1c,0xe75e,0x0378,0x3c19,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x8d7b,0x0378,0x0398,0x1398,0x23d8,0xe75e,0xb65c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x0378,0xb63c,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0398,0x0378,0x8d7b,0xffdf,0x5c79,0x0398,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0398,0x0378,0xc6bd,0xef7e,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x7d3a,0xffff,0xffff,0x7d3a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0253,0xae3d,0xffff,0xf7bf,0x5c79,0x02f7,0xbe7d,0xef7e,0x0338,0x0b98,0x02f7,0xbe7d,0xe77e,0x23d8,0xffff,0x853b,0x0317,0x8d7b,0xffdf,0x5c79,0x02f7,0xb63c,0xffff,0xffff,0xffff,0x7d1a,0x0359,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x853b,0x7d3a,0x7d1a,0x853a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x853a,0x3c19,0x0378,0x1398,0x0b98,0x0358,0x74fa,0x6499,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x1398,0x0358,0x5479,0x8d5b,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x3c19,0x853a,0x0b98,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x1398,0x0358,0x5479,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0x7d3a,0x7d3a,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0315,0x5cbb,0x8d5b,0x7d1a,0x0b98,0x0358,0x5c79,0x6cda,0x0398,0x0b98,0x0378,0x5c79,0x6cda,0x13b8,0x7d1a,0x4419,0x0358,0x3c19,0x853a,0x0b98,0x0358,0x5479,0x853b,0x853a,0x855b,0x4419,0x03ba,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0358,0x0359,0x0358,0x0358,0x0359,0x0359,0x0358,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x13d9,0x0379,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x13d9,0x0399,0x0358,0x0358,0x0359,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0359,0x03b9,0x13b9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0358,0x0359,0x0359,0x0359,0x0359,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x11ed,0x02f5,0x0359,0x0359,0x03b9,0x13d9,0x0399,0x0379,0x13d9,0x0bb9,0x13d9,0x0399,0x0379,0x0bb9,0x0359,0x0399,0x1bd9,0x0399,0x0359,0x03b9,0x13d9,0x0399,0x0358,0x0359,0x0358,0x03ba,0x1336,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; diff --git a/MCUME_esp32/esp81/main/logozx81kbd.h b/MCUME_esp32/esp81/main/logozx81kbd.h new file mode 100644 index 0000000..e62144b --- /dev/null +++ b/MCUME_esp32/esp81/main/logozx81kbd.h @@ -0,0 +1,173 @@ +const uint16_t logozx81kbd[] = { +0x0140,0x00ac,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020, +0x0000,0x9cf3,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x9cf3,0x0000, +0x0000,0xc638,0xc618,0x8c71,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x8c71,0xc618,0xc638,0x0000, +0x0000,0xc638,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x3186,0x94b2,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x94b2,0x94b2,0x94f3,0x94d3,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x9492,0x94b2,0x94f3,0x94d3,0x94d3,0x9cd3,0x4a49,0x0000,0x0861,0x0000,0x0000,0x738e,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x8430,0x0000,0x0000,0x0861,0x0000,0x2104,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x94b2,0x94b2,0x94d3,0x9492,0x94d3,0x94b2,0x94b2,0x94f3,0x94d3,0x94f3,0x9492,0x94b2,0x94f3,0x94d3,0x9492,0x9cd3,0x52aa,0x0000,0x0841,0x0020,0x0000,0x6b4d,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94b2,0x9492,0x8c51,0x0000,0x0000,0x0861,0x0000,0x0841,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x630c,0x0000,0x0841,0x0841,0x0000,0x630c,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94f3,0x94d3,0x94d3,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x8c71,0x0020,0x0000,0x0861,0x0000,0x0000,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x6b4d,0x0000,0x0020,0x0841,0x0000,0x52aa,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x2104,0x0000,0x0861,0x0000,0x0000,0x8430,0x9492,0x94b2,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x94d3,0x9492,0x94f3,0x73cf,0x0000,0x0000,0x0861,0x0000,0x4a49,0x9cd3,0x94d3,0x94f3,0x94b2,0x9492,0x94b2,0x94d3,0x9492,0x94d3,0x94b2,0x9492,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x9492,0x94d3,0x9492,0x9492,0x94b2,0x94d3,0x9492,0x94f3,0x31c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xe73c,0xe71c,0xe71c,0xe73c,0xe6db,0xe5f7,0xe5f7,0xe5d7,0xe6ba,0xe6db,0xe5f7,0xe5f7,0xe71c,0xe75c,0xe69a,0xe5d7,0xe618,0xe5d7,0xe6fb,0xe69a,0xe5d7,0xe618,0xe5f7,0xef1c,0xa534,0x39e7,0x0000,0x0861,0x52aa,0xc638,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe75d,0xe659,0xe659,0xe75d,0xe71c,0xe638,0xe5d7,0xe69a,0xe75d,0xe71c,0xe618,0xe5d7,0xe69a,0xe75d,0xd6ba,0x6b6d,0x2124,0x0000,0x3186,0x8c51,0xe73c,0xe71c,0xe71c,0xe73c,0xe6db,0xe5d7,0xe618,0xe5d7,0xe6ba,0xe6db,0xe618,0xe71c,0xe638,0xe6ba,0xe6db,0xe5f7,0xe5f7,0xe5d7,0xe6db,0xe6ba,0xe5d7,0xe618,0xe71c,0xef7d,0xad75,0x4208,0x0000,0x0000,0x4a69,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe638,0xe5f7,0xe5f7,0xe638,0xe71c,0xe75d,0xe639,0xe679,0xe75d,0xdefb,0x73ae,0x2945,0x0000,0x2965,0x8410,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe5f7,0xe5d7,0xe6ba,0xe75d,0xe73c,0xe73c,0xe73c,0xef5d,0xb5b6,0x4228,0x0000,0x0000,0x4228,0xb5b6,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe659,0xe5f7,0xe5f7,0xe5f7,0xe5f7,0xe5f7,0xe6ba,0xe73c,0xe73c,0xe71c,0x8410,0x2965,0x0000,0x2945,0x73ae,0xdefb,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe638,0xe69a,0xe75d,0xe73c,0xe71c,0xe71c,0xef5d,0xbdf7,0x4a69,0x0000,0x0000,0x4208,0xad75,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe75d,0xe69a,0xe5d7,0xe618,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0x8c51,0x3186,0x0000,0x2124,0x6b6d,0xd6ba,0xe75d,0xe69a,0xe618,0xe73c,0xe73c,0xe659,0xe5d7,0xe659,0xe75d,0xe71c,0xe75d,0xe659,0xe659,0xe75d,0xe71c,0xe638,0xe5d7,0xe69a,0xe75d,0xe71c,0xe618,0xe6fb,0xeebb,0xc534,0x52cb,0x0861,0x0000,0x39e7,0xa534,0xef3c,0xe5f8,0xe5d7,0xe6db,0xe75d,0xe6db,0xe618,0xe71c,0xe638,0xe69a,0xe6db,0xe5f7,0xe5f7,0xe6fb,0xe73c,0xe73c,0xe6fb,0xe5f7,0xe71c,0xe73c,0xe69a,0xe638,0xe71c,0xe638,0x9430,0x31c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd000,0xd084,0xd000,0xdd96,0xd555,0xd000,0xd105,0xddf7,0xdf1c,0xd4f3,0xd000,0xd000,0xd000,0xde38,0xd4d3,0xd000,0xd000,0xd002,0xd618,0xe75d,0xad55,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd36e,0xd36e,0xdedb,0xdeba,0xd146,0xd000,0xd431,0xdefb,0xde9a,0xd002,0xd000,0xd492,0xdedb,0xdedb,0xe71c,0x52aa,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd000,0xd000,0xd000,0xd534,0xdd96,0xd002,0xdedb,0xd146,0xd534,0xd575,0xd000,0xd0a4,0xd000,0xddf7,0xd4f3,0xd000,0xd1a7,0xde38,0xdedb,0xe73c,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2cb,0xd000,0xd000,0xd2cb,0xdedb,0xdeba,0xd2ec,0xd3cf,0xdedb,0xdedb,0xe73c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xde9a,0xddf7,0xd0e5,0xd000,0xd4f3,0xdeba,0xde79,0xde79,0xde79,0xdeba,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ab,0xd000,0xd0c4,0xd084,0xd084,0xd000,0xd4f4,0xdf1c,0xdedb,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xde9a,0xd26a,0xd451,0xdeba,0xde79,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xde79,0xde79,0xdeba,0xd492,0xd000,0xd187,0xde38,0xde79,0xde9a,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x52aa,0xe71c,0xdedb,0xdedb,0xd451,0xd2ab,0xdefb,0xdefb,0xd2ab,0xd000,0xd36e,0xdeba,0xdedb,0xdedb,0xd36e,0xd36e,0xdedb,0xdeba,0xd146,0xd000,0xd431,0xdefb,0xde9a,0xd000,0xddf8,0xd410,0xdaec,0xd6db,0x18c3,0x0000,0xad55,0xe77d,0xd5f7,0xd000,0xd000,0xd534,0xdf1c,0xddb6,0xd000,0xdeba,0xd209,0xd4b2,0xddd7,0xd000,0xd002,0xddb7,0xdedb,0xdedb,0xddb6,0xd0a4,0xddf7,0xdf1c,0xd451,0xd209,0xdeba,0xd000,0xe638,0x94f3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd105,0xdeba,0xdeba,0xdefb,0xd4f3,0xd1c7,0xde9a,0xd1a7,0xdd75,0xdf3c,0xdd76,0xd003,0xde59,0xdedb,0xdefb,0xd534,0xd105,0xde7a,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd229,0xd555,0xd555,0xd249,0xdedb,0xd125,0xdd76,0xd4d3,0xd2ec,0xdeba,0xd043,0xddd7,0xd451,0xd32d,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xd003,0xdd76,0xdf3c,0xd555,0xd126,0xdefb,0xd1e8,0xd555,0xd555,0xd1a7,0xdedb,0xde9a,0xdf1c,0xd472,0xd26a,0xde9a,0xd146,0xddb7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd34d,0xd34d,0xdefb,0xdeba,0xd1c7,0xdd96,0xd4d3,0xd2ab,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xd472,0xd000,0xd1e8,0xde9a,0xdefb,0xd3ef,0xd000,0xd002,0xd002,0xd000,0xd596,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xd229,0xd430,0xdefb,0xde9a,0xdeba,0xd105,0xd4f3,0xdf3c,0xdefb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xddf7,0xd000,0xd000,0xddf7,0xd492,0xd000,0xd209,0xdedb,0xdefb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd535,0xd000,0xd002,0xd002,0xd000,0xd451,0xdefb,0xde59,0xd166,0xd000,0xd4f3,0xdf3c,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd32d,0xd3f0,0xdefb,0xdefb,0xdefb,0xd249,0xd4d3,0xddb6,0xd146,0xdedb,0xd249,0xd555,0xd555,0xd249,0xdedb,0xd125,0xddb6,0xd4d3,0xd28b,0xdeba,0xd003,0xde38,0xd471,0xdb2c,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd001,0xde79,0xd32d,0xd451,0xde18,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd125,0xdeba,0xd1e8,0xd555,0xd575,0xd229,0xde9a,0xd1a7,0xddd7,0xd4d3,0xd28a,0xdeba,0xd023,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd575,0xd000,0xd209,0xde38,0xdf3c,0xd4f3,0xd1e8,0xdedb,0xd0e5,0xd555,0xdf5d,0xddb7,0xd003,0xde9a,0xdefb,0xdf1c,0xd555,0xd105,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd249,0xd105,0xd105,0xd26a,0xdedb,0xd125,0xddb7,0xd4d3,0xd26a,0xdeba,0xd023,0xde18,0xd451,0xd2cb,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd003,0xddb7,0xdf5d,0xd575,0xd000,0xd209,0xd000,0xdd75,0xdd75,0xd000,0xd26a,0xde79,0xdf3c,0xd472,0xd28a,0xdedb,0xd001,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd38e,0xd38e,0xdf3c,0xdeba,0xd0a4,0xddb6,0xd4d3,0xd229,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd2ab,0xd125,0xd4b2,0xde79,0xde39,0xdedb,0xdefb,0xde79,0xde18,0xde38,0xde18,0xd003,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd1a7,0xd1a7,0xd555,0xdefb,0xdf3c,0xdedb,0xdf3c,0xdeba,0xd410,0xd0c4,0xd34d,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd410,0xd0c4,0xd36e,0xde59,0xddd7,0xdeba,0xde59,0xddf7,0xddd7,0xd229,0xd125,0xd555,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4f3,0xd125,0xde38,0xde38,0xde18,0xde79,0xdefb,0xdedb,0xde38,0xde79,0xd471,0xd0e5,0xd2ec,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd2cb,0xd431,0xde59,0xd2ec,0xdebb,0xd30c,0xd000,0xd3ef,0xde79,0xdedb,0xd249,0xd105,0xd105,0xd26a,0xdedb,0xd1e8,0xd043,0xd431,0xde59,0xde9a,0xd125,0xd187,0xd001,0xdbae,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd166,0xd534,0xdedb,0xddb7,0xd023,0xdeba,0xd28a,0xd4d3,0xddd7,0xd000,0xd209,0xd596,0xdefb,0xd4f3,0xd1a7,0xdedb,0xd0e5,0xddb6,0xd4d3,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd001,0xd4f3,0xdedb,0xdf5c,0xd4d3,0xd208,0xdf1c,0xd001,0xd534,0xdf7d,0xddf7,0xd023,0xdedb,0xdefb,0xdf1c,0xd555,0xd105,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd229,0xd36e,0xd36e,0xd249,0xdedb,0xd125,0xddb6,0xd4d3,0xd28a,0xdeba,0xd003,0xde59,0xd451,0xd26a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd003,0xddb6,0xdf3c,0xd575,0xd000,0xd4b2,0xd023,0xd575,0xd555,0xd023,0xd514,0xdedb,0xdf3c,0xd471,0xd28a,0xdeba,0xd043,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd36e,0xd36e,0xdf3c,0xdeba,0xd000,0xddd7,0xd4d3,0xd1a7,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd4d3,0xd4b2,0xd451,0xd3ef,0xd492,0xdefb,0xdf5d,0xd575,0xd3cf,0xd410,0xd410,0xd000,0xd555,0xdf5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd492,0xd4b2,0xd431,0xd38e,0xd514,0xdefb,0xd3cf,0xd3ef,0xd472,0xd492,0xd514,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd575,0xd472,0xd492,0xd4b3,0xdf1c,0xdf3c,0xdf5d,0xde79,0xd451,0xd4b2,0xd472,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4f3,0xd000,0xd410,0xd410,0xd3af,0xdd96,0xdf5d,0xdefb,0xd451,0xd3f0,0xd471,0xd492,0xd4f3,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd26a,0xd451,0xde38,0xd000,0xdeba,0xd2ec,0xd2cb,0xd4b3,0xd4d3,0xdedb,0xd229,0xd36e,0xd36e,0xd249,0xdedb,0xd1a7,0xd32d,0xddf7,0xdf3c,0xde7a,0xd0c4,0xd410,0xd2ab,0xdb6e,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd451,0xd471,0xddf7,0xddd7,0xd063,0xdefb,0xd2ab,0xd4d3,0xddb7,0xd001,0xd4f4,0xd410,0xde38,0xd4f3,0xd146,0xdf1c,0xd001,0xdd96,0xd4d3,0xd2ab,0xdefb,0xd063,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd000,0xd575,0xd514,0xde79,0xd514,0xd000,0xd534,0xd3ae,0xde18,0xde79,0xd410,0xd000,0xd4d3,0xde79,0xdf3c,0xd535,0xd003,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd125,0xd575,0xdd75,0xd166,0xdedb,0xd063,0xddb6,0xd4b3,0xd249,0xdeba,0xd001,0xd451,0xd451,0xd4b3,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd000,0xdd96,0xdf5d,0xd535,0xd0a4,0xdf1c,0xd1a7,0xd534,0xd555,0xd002,0xdd96,0xd514,0xdeba,0xd472,0xd249,0xdeba,0xd000,0xdd96,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd34d,0xd34d,0xdf1c,0xdeba,0xd410,0xd4b3,0xd471,0xd492,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf5d,0xd555,0xd28a,0xd36e,0xd514,0xd555,0xd410,0xd2ec,0xd32d,0xd32d,0xd34d,0xddf7,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf3c,0xd471,0xd2ab,0xd3f0,0xd514,0xd32d,0xd2ab,0xddd7,0xdf5d,0xdf1c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf5d,0xddd7,0xd000,0xd4d3,0xd534,0xd555,0xd3ae,0xd000,0xdefb,0xdf3c,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd34d,0xd32d,0xd32d,0xd2ec,0xd430,0xd555,0xd514,0xd34d,0xd28a,0xdd96,0xdf5d,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdefb,0xd4b3,0xd431,0xd4d3,0xd3ef,0xdedb,0xd209,0xd514,0xddd7,0xd000,0xdedb,0xd166,0xdd76,0xdd75,0xd166,0xdedb,0xd003,0xdd96,0xdf3c,0xdedb,0xde79,0xd000,0xde59,0xd471,0xdaec,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xddf7,0xd000,0xdedb,0xd2ab,0xd3cf,0xde18,0xd000,0xd514,0xd0e5,0xd4d3,0xddb6,0xd000,0xdd76,0xd34d,0xddb7,0xddf7,0xd3af,0xd514,0xd3ae,0xde59,0xd4b3,0xd0e5,0xd514,0xd000,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xd5b6,0xd166,0xd166,0xd001,0xdd96,0xddb7,0xd105,0xd1a7,0xde9a,0xdf5d,0xdcf3,0xd063,0xd249,0xd0e5,0xddf7,0xdf3c,0xdd96,0xd2ab,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ec,0xd596,0xdd96,0xd30c,0xdedb,0xd2cb,0xddf7,0xdd34,0xdb8e,0xdeba,0xd2cb,0xd000,0xdd34,0xdf5d,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd26a,0xddd7,0xdf3c,0xd596,0xd2ab,0xdedb,0xd30c,0xdd96,0xddd7,0xd166,0xd186,0xd023,0xddf7,0xdd35,0xd38e,0xdeba,0xd26a,0xddd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdc30,0xdc30,0xdf1c,0xdedb,0xdf5d,0xd38e,0xdc72,0xdf5d,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdeba,0xd1c7,0xd000,0xdd96,0xdf7d,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf5d,0xddb6,0xd209,0xdf1c,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd1c8,0xd187,0xd166,0xd166,0xd166,0xd32d,0xdeba,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdf7d,0xdd34,0xd000,0xd249,0xdedb,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdf5d,0xd4f3,0xd2ec,0xdf3c,0xdefb,0xd34d,0xd534,0xddd7,0xd2ab,0xdedb,0xd30c,0xdd96,0xdd96,0xd30c,0xdedb,0xd2ab,0xdd96,0xdefb,0xdedb,0xde9a,0xd26a,0xde38,0xd4b3,0xdbef,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd229,0xde9a,0xd3ef,0xd4b3,0xde38,0xd1a7,0xd166,0xd125,0xd575,0xddf8,0xd166,0xd125,0xde59,0xdf1c,0xdf1c,0xde59,0xd166,0xde9a,0xdf5c,0xd514,0xd125,0xd166,0xd1c7,0xe659,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x8430,0x39c7,0x4a69,0x4a69,0x4a69,0x39c7,0x3186,0x31a6,0x31c7,0x4228,0xc638,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0x4228,0x31c7,0x31a6,0x31a6,0x39e7,0x4a69,0x4a69,0x4a69,0x39c7,0x8430,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0xbdf7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x528a,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x7bef,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x9cd3,0x31a6,0x4a69,0x4a69,0x4a8a,0x39e7,0x3186,0x3186,0x31a6,0x31a6,0xb5b6,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x5aeb,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x738e,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0xa534,0x31a6,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x31a6,0xad75,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x632c,0x3186,0x3186,0x31a6,0x31c7,0x4a49,0x4a69,0x4a69,0x4228,0x632c,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xe73c,0xc618,0x5aeb,0x73ae,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x8c51,0xad55,0xad55,0x94b2,0x0000,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xdefb,0x73ae,0x632c,0x6b4d,0x630c,0x7bef,0xe71c,0xdefb,0xdedb,0xdefb,0xbdf7,0x0000,0x94b2,0xad55,0xad55,0x8c51,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xe73c,0xb596,0x5acb,0x6b4d,0x6b4d,0x5acb,0xb596,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x4228,0xad75,0xa534,0xa534,0xa534,0xa534,0xa534,0x9cf3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xb596,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x9492,0xad55,0xa534,0xa534,0xa534,0xa534,0xad75,0x632c,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xa534,0x6b4d,0x632c,0x6b4d,0x6b4d,0x6b4d,0x5aeb,0x8c51,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xad75,0xa534,0xa514,0x0000,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe73c,0x8430,0x630c,0x6b4d,0x632c,0x6b6d,0xce79,0xdedb,0xdedb,0xdedb,0xce79,0x0000,0x8430,0xad55,0xa534,0xa534,0xa534,0xa534,0xad75,0x738e,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0xa534,0x5acb,0x6b4d,0x6b4d,0x6b4d,0x632c,0x6b4d,0x8c71,0xdedb,0xdedb,0xe71c,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xe73c,0x8c71,0x5aeb,0x6b4d,0x632c,0x632c,0xd69a,0xe71c,0xdedb,0xdedb,0xd6ba,0x2124,0x7bef,0xad55,0xa534,0x9cf3,0x0861,0x0000,0x0000,0x0000,0x39c7,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x5aeb,0x6b4d,0x6b4d,0x5acb,0x9cd3,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xe73c,0x9cd3,0x5aeb,0x6b4d,0x6b4d,0x738e,0xce79,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdefb,0xbdd7,0x8c51,0x6b6d,0x0000,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0xe73c,0xd69a,0x0841,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xce59,0x9492,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x9cf3,0xce79,0xdedb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xef5d,0xc618,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xad75,0x8430,0x7bcf,0x7bcf,0x8410,0x8410,0x8c51,0xad75,0xdefb,0xdedb,0xe71c,0x738e,0x73ae,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xb5b6,0x4a49,0x4a49,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0xc638,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0x94b2,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x2104,0x8c51,0x8430,0x8430,0x8430,0x7bcf,0x94b2,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0xa514,0x8c51,0x8410,0x8430,0x8410,0x8430,0xd69a,0xdedb,0xdedb,0xdedb,0xd69a,0x10a2,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xad55,0x738e,0x7bcf,0x7bcf,0x7bcf,0x8c51,0x4a69,0x2104,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd6ba,0x9cf3,0x8430,0x8410,0x8430,0x8430,0x8410,0x8c71,0xc618,0xdefb,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe73c,0xdedb,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdefb,0xc618,0x9492,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8430,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0xad55,0x8430,0x73ae,0x7bef,0x7bef,0x0000,0x7bcf,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe71c,0x8c71,0x8410,0xdedb,0x0841,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdd7,0x4a69,0xdefb,0xe73c,0xe73c,0xef5d,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x73ae,0x94b2,0xef7d,0xe71c,0xc638,0xce79,0x8430,0x7bef,0xdefb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xc638,0x73ae,0x0000,0x630c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x630c,0xce79,0xc638,0xc638,0xc618,0xd6ba,0xe73c,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xad75,0xce59,0xc638,0xc638,0xc638,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xbdd7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xd6ba,0xdefb,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x9cd3,0x738e,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x52aa,0xad55,0xce59,0xc638,0xc638,0xc638,0x5aeb,0xad55,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8430,0x39e7,0xef5d,0xe73c,0xe73c,0xef7d,0xb596,0x0000,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x0000,0xad75,0xef7d,0xdefb,0xbdf7,0x6b4d,0x0000,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x2945,0x2945,0x0841,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdefb,0xd69a,0xd69a,0xd69a,0xd6ba,0xc618,0x2945,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdefb,0xbdd7,0x0841,0x2945,0x2945,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xd69a,0x31a6,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xd69a,0x2965,0xbdd7,0x9cf3,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0841,0xbdd7,0xdedb,0xd69a,0xd6ba,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8430,0x0000,0x0861,0x1082,0x1082,0x0000,0x8c51,0xdefb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x1082,0x1082,0x0000,0x2104,0xc618,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xb596,0xdedb,0xd69a,0xd69a,0xd69a,0xd69a,0xdedb,0x9cd3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x6b6d,0x73ae,0xe73c,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x1082,0x0861,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x94b2,0x52aa,0xdedb,0xd69a,0xd69a,0xdedb,0xa534,0x2965,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xb596,0x2104,0xdedb,0x52aa,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x630c,0x7bcf,0xd6ba,0xce79,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x39e7,0x0861,0x18e3,0x0020,0x4a49,0xce59,0xdedb,0xdedb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xd6ba,0xce79,0xce79,0xd6ba,0x7bcf,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xce79,0xd6ba,0x8410,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x7bef,0x18e3,0x39c7,0x31a6,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x39c7,0xc638,0xef5d,0x94b2,0x528a,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x2965,0x39c7,0x2124,0x632c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xce79,0xce79,0xce79,0xd6ba,0x8c71,0x630c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0841,0xb5b6,0xd69a,0xce79,0xce79,0xce59,0x4228,0xad75,0xe71c,0xdedb,0xd69a,0x2965,0x2124,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x0861,0x528a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x4a49,0x94b2,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x4a49,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x39c7,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x4208,0xb575,0xd69a,0xce79,0xce79,0xce79,0x528a,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xad75,0x0000,0x18e3,0x18e3,0x2104,0x0000,0x4208,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xbdf7,0xa514,0x4a69,0xd6ba,0xdefb,0x528a,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe73c,0xd69a,0x0841,0xce59,0xef5d,0xdefb,0xdedb,0xdedb,0xe71c,0x630c,0x8410,0xe73c,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc618,0x6b4d,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xe73c,0xdedb,0xdedb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xe73c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x7bef,0x9cd3,0xef5d,0xe71c,0xe73c,0xf79e,0x7bef,0x4a49,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x6b6d,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0x528a,0x5aeb,0x39c7,0x18e3,0x52aa,0x4a49,0xbdf7,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8c51,0x9492,0xef7d,0xe73c,0xe73c,0xf79e,0x9492,0x2965,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xce59,0xef7d,0xe73c,0xe73c,0xe71c,0x0000,0xa534,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x6b4d,0xa514,0xce79,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x528a,0xe71c,0xdefb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0x39e7,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xbdf7,0xef7d,0xe73c,0xe73c,0xef5d,0x18c3,0x94b2,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xd6ba,0xbdf7,0xbdf7,0xbdf7,0xc638,0x8c71,0x0000,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x18c3,0x31a6,0x94b2,0xce79,0xe73c,0xef5d,0x4208,0x8430,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdefb,0xb596,0x8410,0x7bcf,0x0000,0x73ae,0x8410,0xad55,0xdefb,0xdedb,0xe71c,0x5aeb,0x8430,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0x0841,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0x8c51,0x9492,0x9492,0x9492,0x8c71,0x8430,0xce59,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xa534,0x8410,0x8430,0x8430,0x8430,0x8430,0x8c51,0xad75,0xdefb,0xdedb,0xe71c,0x738e,0x73ae,0xef5d,0xe71c,0xef5d,0x73ae,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x94b2,0x8c71,0x9492,0x52aa,0x18c3,0x8c71,0x8430,0xce59,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xe71c,0xe71c,0xef5d,0x94b2,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xad75,0x8410,0x8430,0x8430,0x8430,0x8430,0x8c51,0xad55,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0x94b2,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c71,0xc638,0xdefb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0x0000,0xc638,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x528a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0x4208,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd6ba,0x9cf3,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c71,0xc618,0xdefb,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe71c,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x8c71,0x9492,0x9492,0x9492,0x8c71,0x9cf3,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0xa534,0x1082,0x4208,0x94b2,0x8430,0x8430,0x8c51,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xe71c,0x9cf3,0x4a49,0x5aeb,0x6b6d,0x5aeb,0x4a49,0x94b2,0xe71c,0xdedb,0xe71c,0x630c,0x5aeb,0xb5b6,0xad75,0xad75,0xad75,0xad75,0xb596,0xa514,0x0000,0xbdf7,0xef5d,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdefb,0xc618,0x632c,0x5aeb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0xc638,0xdefb,0xdefb,0xbdf7,0x0000,0xa514,0xb596,0xad75,0xad75,0xad75,0xad75,0xb5b6,0x5aeb,0x630c,0xe71c,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdedb,0xef5d,0xb596,0x4a49,0x5aeb,0x5aeb,0x4a49,0xb596,0xef5d,0xdedb,0xdedb,0xe71c,0x738e,0x4a69,0xb5b6,0xad75,0xb5b6,0x52aa,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xb596,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xef5d,0xad75,0x8430,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x39e7,0xad75,0xad75,0xb5b6,0x6b6d,0x528a,0xdefb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xe73c,0xbdd7,0x4a49,0x5aeb,0x5aeb,0x4a49,0xa534,0xef5d,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x8410,0xb5b6,0xad75,0xad55,0x0000,0xad55,0xef5d,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xe73c,0x7bef,0x528a,0x5aeb,0x5acb,0x630c,0xd6ba,0xdefb,0xdedb,0xdedb,0xd69a,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x6b6d,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x2965,0xb596,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0x10a2,0x9cf3,0xef5d,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xe73c,0x8430,0x4a69,0x5aeb,0x5acb,0x5acb,0xd69a,0xe71c,0xdedb,0xdedb,0xd6ba,0x2945,0x8430,0xb5b6,0xb596,0xa534,0x10a2,0x0000,0x0000,0x0000,0x39c7,0xd6ba,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x528a,0x5acb,0x5aeb,0x4a69,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x18c3,0x0000,0xa534,0xe73c,0xdedb,0xdedb,0xe73c,0x9cf3,0x5acb,0x5acb,0x5acb,0x528a,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x18c3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c7,0xc638,0xdefb,0x9cd3,0x0000,0x18c3,0xbdf7,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdefb,0xc638,0x39c7,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x8410,0xdefb,0xce79,0x4a69,0x0000,0x73ae,0xd6ba,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x18c3,0x2124,0x2945,0x2124,0x39c7,0x4208,0x4208,0x4208,0x3186,0xbdf7,0xdefb,0xa514,0x0000,0x0000,0xb5b6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x4228,0x39e7,0x4208,0x4208,0x39e7,0x2945,0x2945,0x2124,0x18e3,0x73ae,0xdefb,0xd69a,0x5aeb,0x0000,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x94b2,0x2104,0x4208,0x4208,0x4208,0x3186,0x2124,0x2945,0x2945,0x2124,0xb5b6,0xe71c,0xad75,0x0000,0x0000,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x528a,0x39c7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3186,0x6b4d,0xdedb,0xd6ba,0x6b4d,0x0000,0x5aeb,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x18c3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x18e3,0xad75,0xe71c,0xb5b6,0x0000,0x0000,0xa514,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x5aeb,0x2124,0x2124,0x2945,0x2945,0x39e7,0x4208,0x4208,0x31a6,0x5aeb,0xd6ba,0xdedb,0x73ae,0x0000,0x4a69,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xbdf7,0x18c3,0x0000,0x9cd3,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x8430,0x0000,0x0000,0x0000,0x0000,0xb596,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xdefb,0xce79,0x2945,0x0000,0x0000,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0xad55,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x39e7,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x4a69,0x0000,0x0000,0x0000,0x39e7,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x5aeb,0x0000,0x0000,0x0000,0x2945,0xce79,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0x8430,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x3186,0x0000,0x0020,0x0000,0x0000,0x4228,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x528a,0x0000,0x0000,0x0020,0x0000,0x18c3,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x31a6,0x0000,0x0000,0x0000,0x0000,0x4208,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x52aa,0x0000,0x0000,0x0020,0x0000,0x1082,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x39c7,0x0000,0x0000,0x0000,0x0000,0x39e7,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x52aa,0x1082,0x0000,0x0020,0x0000,0x0000,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x4208,0x0000,0x0000,0x0000,0x0000,0x31a6,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x18c3,0x0000,0x0020,0x0000,0x0000,0x528a,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x4228,0x0000,0x0000,0x0020,0x0000,0x3186,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xa534,0x9cf3,0x0000,0x0000,0x73ae,0x8430,0x0000,0x0000,0x0861,0x0000,0x5aeb,0x9cd3,0x0000,0x0000,0x8430,0xa534,0x9cf3,0x9cf3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x1082,0x9492,0xad75,0x630c,0x0000,0x3186,0x9cd3,0xad75,0x52aa,0x0000,0x4208,0x9cd3,0x3186,0x0000,0x0000,0x39e7,0xa514,0x0000,0x0000,0x73ae,0xad55,0x9cd3,0xa534,0x4208,0x0000,0x5acb,0xa534,0xa514,0x1082,0x0000,0x632c,0xa534,0xa534,0xad55,0x39e7,0x632c,0xa514,0x9cd3,0x9cf3,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xad75,0x7bcf,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x1082,0x9492,0xad75,0x630c,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0xa514,0xa534,0x2945,0x0000,0x0000,0x2965,0xa534,0x10a2,0x0000,0x632c,0xa534,0x9cf3,0x0000,0x0000,0x6b6d,0xad55,0x9cd3,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xad55,0x8410,0x0000,0x0000,0x8c51,0xad55,0x7bcf,0x2965,0xa534,0x9cd3,0xa514,0xa534,0x8410,0x1082,0x9cd3,0x39e7,0x632c,0xad55,0x9cd3,0x0000,0x0000,0x73ae,0xad55,0x9492,0x0000,0x0000,0x0020,0x0000,0x4a69,0xad55,0x9cd3,0xad55,0x632c,0x4208,0xa514,0xa534,0xad75,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xa534,0x9cf3,0x9cf3,0x10a2,0x8410,0xad55,0x8410,0x0000,0x0000,0x8c51,0xad75,0x7bcf,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x10a2,0x9cf3,0x9cf3,0xa534,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9cf3,0xad55,0x4a49,0x0000,0x0000,0x0000,0xa514,0x39e7,0x0000,0x52aa,0x94b2,0x0020,0x9492,0x52aa,0x528a,0xa514,0xa534,0xad55,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xad55,0x9492,0x0000,0x0000,0x7bef,0xad55,0x8c51,0x0000,0x0000,0x8c71,0xa514,0x9cf3,0x9cd3,0x0841,0x8430,0xad75,0x7bcf,0x0000,0x10a2,0x9cd3,0x9cf3,0xa514,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xe73c,0xad75,0x8410,0x0000,0xad55,0xc618,0x0000,0x0000,0x0000,0x4a69,0x9cd3,0xb5b6,0x738e,0x0000,0x9492,0xd6ba,0xdefb,0xb596,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdedb,0xce79,0x9cd3,0x4a49,0x4208,0xe71c,0xc638,0x94b2,0x4a49,0x52aa,0xe71c,0x4a49,0x0000,0x4228,0x8c71,0xbdd7,0x7bef,0x0861,0x7bef,0xd69a,0xe71c,0xbdf7,0x4228,0x0000,0x8c51,0xe73c,0xb596,0x8430,0x1082,0x9492,0xe71c,0xb596,0xbdf7,0x39c7,0x9cd3,0xef7d,0xe71c,0xe73c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0xd69a,0x9cf3,0x632c,0x10a2,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdedb,0xce79,0x9cd3,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xe73c,0xb5b6,0x8c51,0x39c7,0x31a6,0x8430,0xb5b6,0x8410,0x0000,0x9492,0xe73c,0xb5b6,0x7bef,0x0000,0xa514,0xe71c,0xad75,0x73ae,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xd6ba,0xa514,0x6b4d,0x0000,0xce79,0xd6ba,0x7bef,0x31a6,0xbdf7,0xe71c,0xc638,0xd69a,0xc618,0x18c3,0xdefb,0x5acb,0x9cd3,0xe71c,0xad55,0x7bef,0x0000,0xad75,0xe71c,0xad55,0x738e,0x2104,0x0000,0x0000,0x52aa,0xc618,0xe71c,0xce79,0x632c,0x6b6d,0xe73c,0xb5b6,0xc618,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xd6ba,0xdefb,0xb596,0x0000,0xc618,0xdedb,0xa534,0x630c,0x0000,0xce79,0xd69a,0x9cf3,0x632c,0x10a2,0xdedb,0x6b6d,0x9492,0xce59,0x0000,0xb596,0xdefb,0xd6ba,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe73c,0xbdf7,0x9492,0x4a49,0x2124,0x7bef,0xbdd7,0x8c71,0x2945,0x7bcf,0xdedb,0x0000,0xd6ba,0x8410,0x7bcf,0xe73c,0xb5b6,0xc618,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdefb,0xad55,0x73ae,0x0000,0xbdd7,0xdedb,0xa534,0x738e,0x0000,0x9cd3,0xdedb,0xdefb,0xad55,0x0000,0xce79,0xd6ba,0xa514,0x5aeb,0x1082,0xad55,0xdefb,0xdedb,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x31a6,0xce79,0x528a,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0xb5b6,0xad55,0x2965,0xe71c,0x4a49,0x0000,0x9492,0xc618,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x4208,0x9cf3,0xbdf7,0x2945,0xdedb,0x528a,0xad55,0xa514,0x4208,0xdedb,0x4228,0x0000,0x9cf3,0xc638,0x0000,0xdefb,0x6b6d,0x0000,0x6b6d,0xd69a,0x0000,0x0000,0x0000,0x8c51,0xce79,0x3186,0xce59,0x630c,0x8c51,0xc638,0x1082,0x0000,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x8410,0x7bef,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x4208,0x9cf3,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x3186,0xc638,0x738e,0x8410,0xd69a,0x3186,0xdedb,0x6b6d,0x8c51,0xbdf7,0x0000,0xdefb,0x5acb,0x9cd3,0xb596,0x0841,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9492,0x6b6d,0xce59,0x0000,0xce59,0x9492,0x0000,0x0000,0x0000,0xd69a,0x5aeb,0x8430,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x4208,0xd69a,0x39e7,0xad55,0xa534,0x3186,0xe71c,0x4a49,0x0000,0x0841,0x0000,0x0020,0xd6ba,0x5aeb,0x0000,0x7bcf,0xd69a,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9492,0xc618,0x0000,0x0000,0xc638,0x8410,0x630c,0xdedb,0x0841,0xce59,0x8410,0x7bef,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc618,0x9492,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x4228,0xb596,0x94b2,0x5acb,0xdefb,0x0000,0xc638,0x9492,0x632c,0xd69a,0x4a49,0xbdf7,0x6b6d,0x7bef,0xce79,0x2124,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xad75,0x4a69,0xd69a,0x2945,0xb5b6,0xa514,0x5aeb,0xce79,0x3186,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0xce79,0x6b6d,0x73ae,0xd6ba,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xd69a,0x31a6,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x94b2,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2945,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0x4228,0x0000,0x94b2,0xc618,0x18c3,0xd6ba,0x6b4d,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8410,0xe71c,0xd6ba,0x4228,0x0000,0x8c71,0xe73c,0xd69a,0x3186,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9492,0xe73c,0xce59,0x18c3,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0000,0x0000,0x3186,0xd6ba,0x6b4d,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x73ae,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xd6ba,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xce59,0x4228,0x0000,0x0000,0xa534,0xb5b6,0x0000,0x0000,0x0000,0xbdd7,0xad75,0x2945,0xe71c,0x4a49,0x0000,0x94b2,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x5acb,0x8410,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x7bcf,0x18e3,0x0000,0x5acb,0xdedb,0x2945,0x0000,0x9cf3,0xc638,0x0000,0xdefb,0x6b6d,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8430,0xce79,0x52aa,0xbdf7,0x52aa,0x8c71,0xce59,0x2945,0x0000,0x0000,0xa514,0xbdf7,0x5aeb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x9492,0x8410,0xb596,0x0861,0xd69a,0x5acb,0x8410,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x52aa,0xbdd7,0x6b4d,0x7bcf,0xce79,0x52aa,0xd6ba,0x632c,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cf3,0xb596,0x0000,0xe71c,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x7bcf,0xbdd7,0x0000,0xce59,0x94b2,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xd6ba,0x52aa,0x9cd3,0xc618,0x5acb,0xc618,0x31a6,0xad55,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0841,0x0000,0x0000,0xd6ba,0x5acb,0x0000,0x7bcf,0xd6ba,0x5acb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8c71,0xc618,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x9cf3,0x2124,0x0000,0x18c3,0xd69a,0x5acb,0x8410,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x738e,0x18c3,0x0000,0x6b6d,0xdefb,0x0000,0xc638,0x9492,0x632c,0xd6ba,0x52aa,0xbdd7,0x6b4d,0x7bef,0xce79,0x31a6,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xbdd7,0x31a6,0x0000,0x0000,0xbdd7,0xad55,0x6b6d,0xbdf7,0x2965,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xce59,0x0000,0x0000,0x0000,0xa534,0xdefb,0xad75,0xb5b6,0x39e7,0x528a,0x9cd3,0xad75,0x7bcf,0x2124,0x0000,0x9cf3,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xc618,0xce79,0xc618,0x18c3,0xdefb,0x5acb,0xa514,0xbdf7,0x2965,0xe71c,0x528a,0x0000,0x0000,0x5acb,0xe71c,0xc618,0x528a,0x39e7,0x9492,0xb596,0x8430,0x31a6,0x0000,0x7bef,0xdedb,0x18c3,0x0000,0x0000,0x8c71,0xd69a,0x0000,0xdefb,0x738e,0x8c51,0xe71c,0xad55,0xb5b6,0x31a6,0xa534,0xbdf7,0x18c3,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bcf,0x7bef,0xdedb,0x0020,0xd6ba,0xc618,0xce79,0xc618,0x18c3,0xdefb,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd6ba,0x8410,0x7bef,0xd69a,0x0000,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdefb,0x5acb,0x9cd3,0xe71c,0xad55,0x8410,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c71,0x6b4d,0xdefb,0x0841,0xce79,0xce79,0x7bef,0x0000,0x18c3,0xdedb,0x6b6d,0x8c51,0xe71c,0xb596,0xe73c,0x52aa,0xa514,0xbdf7,0x18e3,0xe73c,0x4228,0xb596,0xb596,0x4228,0xe71c,0x4a49,0x0000,0x0000,0x528a,0xbdd7,0xe71c,0xc638,0x630c,0x738e,0xdedb,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd69a,0xdefb,0xad55,0x0000,0xce59,0x9492,0x6b6d,0xdedb,0x0841,0xd69a,0x8c51,0x0000,0x0000,0x18c3,0xd6ba,0xc618,0xce79,0xc638,0x0000,0x0000,0xce79,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe71c,0x39e7,0x0000,0x0000,0x31a6,0x8430,0xb596,0x9492,0x31a6,0x7bcf,0xdedb,0x0000,0xd6ba,0x8410,0x7bcf,0xe71c,0xad55,0xb5b6,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xb5b6,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x528a,0xe73c,0x2124,0x8c71,0xd6ba,0xdedb,0xa514,0x0000,0xd69a,0x7bef,0x7bef,0xd6ba,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x9492,0x0000,0x0000,0x0000,0x6b4d,0xa534,0xad55,0xad55,0x31a6,0x0000,0x52aa,0x9cd3,0x0000,0x0000,0x0000,0x632c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1082,0x94b2,0xad55,0xa534,0x7bef,0x0000,0x9cd3,0x2965,0x6b4d,0x8410,0x0000,0x9cd3,0x3186,0x0000,0x0000,0x2965,0x9cf3,0xad75,0x528a,0x0000,0x3186,0xa534,0x0000,0x0000,0x0000,0x4a69,0x94b2,0x1082,0x0000,0x0000,0x632c,0x94b2,0x0000,0x94b2,0x4208,0x52aa,0xa534,0xa534,0xad55,0x3186,0x6b4d,0x8410,0x0000,0x9cd3,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x9cd3,0x52aa,0x4a69,0x9492,0x0000,0x8c71,0xa534,0xa534,0x7bef,0x0000,0x9cd3,0x2965,0x6b4d,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x9cf3,0x0000,0x9492,0x528a,0x528a,0x9492,0x0000,0x94b2,0x4208,0x5aeb,0x8c51,0x0000,0x9cd3,0x2965,0x630c,0xad55,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x94b2,0x630c,0x39e7,0x94b2,0x0000,0x8430,0xad75,0x7bef,0x0000,0x0000,0x94b2,0x4208,0x52aa,0xa534,0xa534,0xa514,0x2945,0x6b4d,0x8410,0x0000,0x9cd3,0x18c3,0x73ae,0x73ae,0x18c3,0x9cd3,0x3186,0x0000,0x0000,0x528a,0xb596,0x9cf3,0xad75,0x5aeb,0x39e7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c71,0xad55,0x9cf3,0xa514,0x0000,0x8c51,0x5aeb,0x4208,0x94b2,0x0000,0x9492,0x5acb,0x0000,0x0000,0x0000,0x8c71,0xa534,0xa534,0x8410,0x0000,0x0000,0x8c51,0x632c,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4208,0xa514,0x2104,0x0000,0x0000,0x0000,0x0000,0xa534,0x3186,0x0000,0x528a,0x94b2,0x0000,0x9492,0x528a,0x4228,0xa534,0xa534,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8430,0x8410,0x0000,0x0000,0x0000,0x8430,0x6b4d,0x2965,0x9cd3,0x0000,0x8c51,0xa534,0xa514,0x9cd3,0x0000,0x9492,0x528a,0x528a,0x9492,0x0000,0x0000,0x8430,0x738e,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x5acb,0x5acb,0x4a69,0x39e7,0x4208,0x4208,0x52aa,0x5acb,0x4a69,0x4228,0x5acb,0x5acb,0x5acb,0x4a69,0x4249,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x3186,0x0000,0x0020,0x0000,0x0000,0x2124,0x4228,0x4a49,0x52aa,0x4208,0x52aa,0x4a69,0x4a49,0x52aa,0x4208,0x52aa,0x5acb,0x5acb,0x52aa,0x4208,0x39e7,0x52aa,0x5aeb,0x528a,0x4208,0x52cb,0x5aeb,0x5acb,0x528a,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x4208,0x528a,0x4a69,0x39e7,0x4208,0x4228,0x52cb,0x4a69,0x4a49,0x52cb,0x4228,0x52cb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x31a6,0x0000,0x0020,0x0020,0x0000,0x31a6,0x52aa,0x4228,0x5acb,0x4228,0x4208,0x4208,0x4a49,0x52aa,0x4208,0x52aa,0x4a69,0x4228,0x5acb,0x5acb,0x5acb,0x5aaa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x52aa,0x0000,0x0000,0x0861,0x0000,0x0000,0x52aa,0x4228,0x528a,0x528a,0x4228,0x5acb,0x4208,0x528a,0x4a69,0x4228,0x52aa,0x4208,0x52aa,0x4a69,0x39e7,0x4228,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x39e7,0x0000,0x0000,0x0841,0x0000,0x2965,0x52aa,0x4208,0x5acb,0x4228,0x39e7,0x4a49,0x5acb,0x52aa,0x4208,0x528a,0x4a69,0x39e7,0x4208,0x4208,0x52ca,0x4a69,0x4a28,0x52aa,0x4208,0x52aa,0x4a49,0x4a49,0x52aa,0x4208,0x0000,0x0000,0x0861,0x0000,0x0000,0x39e7,0x4208,0x4a69,0x528a,0x4208,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x4208,0x0000,0x0000,0x0861,0x0000,0x0000,0x4228,0x4208,0x52aa,0x4228,0x4a69,0x528a,0x4208,0x5acb,0x4228,0x4a69,0x5acb,0x5acb,0x52aa,0x4228,0x4208,0x4208,0x4228,0x5acb,0x5acb,0x4228,0x4a69,0x5aeb,0x5acb,0x5acb,0x18c3,0x0000,0x0861,0x0000,0x0000,0x4a69,0x5acb,0x5acb,0x5acb,0x52aa,0x4208,0x528a,0x5acb,0x528a,0x4208,0x5acb,0x4228,0x528a,0x528a,0x39e7,0x4208,0x39e7,0x528a,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x4228,0x0000,0x0000,0x0861,0x0000,0x1082,0x5aeb,0x5acb,0x5acb,0x4228,0x4a69,0x52aa,0x4208,0x52aa,0x4a49,0x4208,0x4208,0x4228,0x5acb,0x4228,0x528a,0x528a,0x4228,0x5acb,0x5acb,0x4249,0x4a69,0x5acb,0x5acb,0x5acb,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xe73c,0x8430,0x0000,0x0000,0x0000,0x0000,0xb596,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdeba,0xdedb,0xdf1c,0xce79,0x2945,0x0000,0x0000,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdeba,0xdedb,0xdedb,0xdebb,0xdedb,0xdeba,0xdedb,0xdedb,0xdebb,0xdedb,0xdebb,0xdedb,0xdedb,0xdeba,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0xad55,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd69a,0x39e7,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xe73c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0x4a69,0x0000,0x0000,0x0000,0x39e7,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0x5aeb,0x0000,0x0000,0x0000,0x2945,0xce79,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0x8430,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdcd3,0xd32d,0xdeba,0xd208,0xde38,0xd4b2,0xd3af,0xde9a,0xd1c8,0xde38,0xdefb,0x9cd3,0x0000,0x18c3,0xbdf7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5c,0xd34d,0xd451,0xdf5d,0xde9a,0xd26a,0xd000,0xdd14,0xdf5d,0xdeba,0xce79,0x4a69,0x0000,0x73ae,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xd1e8,0xd000,0xdd34,0xddf7,0xd000,0xd1c8,0xd000,0xdd96,0xddb6,0xd083,0xd0e5,0xd000,0xddd7,0xdd55,0xd000,0xd1c8,0xdedb,0xdefb,0xdedb,0xa514,0x0000,0x0000,0xb5b6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xdd35,0xd229,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdedb,0xd69a,0x5aeb,0x0000,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd249,0xdd55,0xdd55,0xd249,0xdf1c,0xdedb,0xdedb,0xdedb,0xad75,0x0000,0x0000,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ab,0xdcd3,0xdf5d,0xdedb,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdefb,0xdedb,0xd6ba,0x6b4d,0x0000,0x5aeb,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd1c8,0xde59,0xdf1c,0xdedb,0xb5b6,0x0000,0x0000,0xa514,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd451,0xd32d,0xdf1c,0xdedb,0xd6ba,0x73ae,0x0000,0x4a69,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd126,0xddf7,0xdf3c,0xdedb,0xbdf7,0x18c3,0x0000,0x9cd3,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xdcb2,0xde38,0xd208,0xde9a,0xdedb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd430,0xd187,0xdeba,0xd000,0xddf7,0xd3f0,0xd28a,0xde9a,0xd000,0xddf7,0xe75d,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd3cf,0xd4f3,0xd472,0xd451,0xdeba,0xd001,0xd4f4,0xd451,0xd410,0xdf1c,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd2cb,0xddb6,0xdd75,0xde39,0xde9a,0xd4d3,0xd000,0xd492,0xdeba,0xd514,0xd0a4,0xddd7,0xd575,0xdeba,0xd492,0xd187,0xddd7,0xd2cb,0xddf7,0xe75d,0xb596,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd4b2,0xd36e,0xddf7,0xdeba,0xd36e,0xd28a,0xd24a,0xd410,0xdefb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdeba,0xd2cb,0xd4d3,0xde79,0xde79,0xd4d3,0xd2cb,0xdeba,0xdefb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddf7,0xd3af,0xd451,0xdf5d,0xdedb,0xd3af,0xd26a,0xd26a,0xd3af,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde9a,0xd000,0xd187,0xd596,0xdf3c,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd431,0xd431,0xde18,0xdedb,0xdedb,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xdd96,0xd38e,0xd555,0xdf3c,0xce79,0x18c3,0x0000,0xa534,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd229,0xd3f0,0xddf7,0xd000,0xde79,0xe75d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddb6,0xd4f4,0xdeba,0xd492,0xde79,0xdd96,0xd534,0xdeba,0xd492,0xde79,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd000,0xddd7,0xd4d3,0xd1e8,0xdeba,0xd0e5,0xd3cf,0xd492,0xd555,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd410,0xd472,0xdeba,0xdf1c,0xdefb,0xde9a,0xd001,0xde38,0xdf5d,0xd4f4,0xd002,0xd4d3,0xdedb,0xdf3c,0xd492,0xd0e5,0xd4d3,0xd410,0xde38,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd4d3,0xd410,0xdd96,0xdf3c,0xdeba,0xd4d3,0xd451,0xd451,0xd514,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd410,0xd471,0xdeba,0xdefb,0xdefb,0xdeba,0xd471,0xd410,0xde18,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xddd7,0xd410,0xd4b2,0xdedb,0xd4f4,0xd451,0xd451,0xd4f3,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd3af,0xd000,0xd3af,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd1a7,0xd472,0xdf5d,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd1e8,0xd431,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd514,0xdd96,0xde79,0xd492,0xdeba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdedb,0xdf1c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd083,0xddb7,0xd4d3,0xd249,0xdeba,0xd125,0xd126,0xd4b2,0xde79,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xd30c,0xd4d3,0xde59,0xdefb,0xde59,0xd001,0xddf8,0xdf3c,0xd514,0xd000,0xd2ec,0xde7a,0xdf3c,0xd4b2,0xd000,0xd30c,0xdefb,0xdefb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd34d,0xd492,0xde7a,0xdefb,0xdedb,0xde18,0xddf7,0xddd7,0xde38,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddb6,0xd2ab,0xddd7,0xdeba,0xdedb,0xdedb,0xdeba,0xddd7,0xd2ab,0xd5b6,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd4d3,0xd30c,0xdeba,0xde38,0xddf7,0xddf7,0xde18,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd1e8,0xd000,0xd534,0xde9a,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd209,0xd472,0xdf3c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd229,0xd471,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd229,0xdd76,0xd4b3,0xd32d,0xdeba,0xd002,0xde39,0xd451,0xd28a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xdedb,0xd28a,0xd492,0xdf3c,0xde59,0xd000,0xddf7,0xdf3c,0xd4f3,0xd1a7,0xdeba,0xde79,0xdefb,0xd472,0xd26a,0xdf3c,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5c,0xd3cf,0xd34d,0xdedb,0xdeba,0xd229,0xd000,0xd000,0xd32d,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd0a4,0xddb6,0xdedb,0xdedb,0xddb6,0xd0a4,0xde7a,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd3cf,0xd34d,0xdf3c,0xdedb,0xd2ab,0xd000,0xd000,0xd2ab,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde38,0xd002,0xd000,0xd534,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ec,0xd471,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd2cb,0xd4b3,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ec,0xd3ef,0xdf1c,0xde9a,0xd000,0xde18,0xd431,0xd2ab,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd000,0xd000,0xdd96,0xdefb,0xdefb,0xde39,0xd000,0xddf7,0xdf5c,0xd514,0xd000,0xd002,0xd000,0xddd7,0xd4b3,0xd208,0xdefb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd4b3,0xd1e8,0xdedb,0xdeba,0xde9a,0xde9a,0xdeba,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd1a7,0xd555,0xd555,0xd1a7,0xdeba,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd26a,0xd451,0xdefb,0xdedb,0xdedb,0xde9a,0xde9a,0xde9a,0xde9a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd576,0xd000,0xd000,0xddd7,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd3cf,0xd30c,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd0a4,0xdd76,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe73c,0xe679,0xe69a,0xe73c,0xe71c,0xe639,0xe6fb,0xe6ba,0xde59,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xddd7,0xddb7,0xde9a,0xdedb,0xdedb,0xdeba,0xddf7,0xd69a,0xdf1c,0xe6db,0xe638,0xe638,0xe618,0xe6fb,0xe6ba,0xe659,0xe73c,0xe71c,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe73c,0xe6bb,0xe639,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe73c,0xe659,0xe6db,0xe6db,0xe659,0xe73c,0xe71c,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe659,0xe6ba,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xddb7,0xddd7,0xdeba,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xde18,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xddd7,0xde9a,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xa534,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8430,0x8c51,0x8430,0x8430,0x8430,0xce79,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x8430,0x8430,0x8c71,0x8c71,0x8410,0x7bcf,0x7c30,0x7bcf,0x7c10,0xa575,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xdefb,0xdedb,0xdefb,0xdefb,0xad55,0x8410,0x8c92,0x8c92,0x8c92,0x8c51,0x8c71,0x8c71,0x8430,0x8410,0xc638,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x8c51,0x8430,0x8430,0x8c71,0x8c92,0x8430,0x8430,0x8430,0x8410,0x9cf3,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdefb,0xb596,0x7bcf,0x7bcf,0x7bcf,0x7c10,0x8430,0x8c71,0x8c92,0x8430,0x8410,0xc618,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xd6ba,0x8c71,0x8471,0x8c71,0x8c30,0x8430,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x9cd3,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe71c,0xc618,0x9cf3,0xa534,0xa534,0xa514,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0x630c,0x0861,0x6b6d,0x6b4d,0x6b6d,0x0861,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xce79,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdefb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0861,0x6b6d,0x6b4d,0x6b6d,0x0861,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xbdd7,0xa534,0xa534,0xa534,0xa534,0xa534,0xa514,0xb5b6,0xdefb,0xdedb,0xe71c,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xd69a,0xad55,0xa534,0xa534,0xa534,0xa514,0xad55,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xbdd7,0xa514,0xa534,0xa534,0xad55,0xa534,0xa534,0xa514,0xad55,0xd6ba,0xe73c,0x8410,0x0000,0x6b6d,0x6b4d,0x6b6d,0x2945,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0xa534,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xb5b6,0xbdd7,0xdefb,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0x6b4d,0x6b6d,0x31a6,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xbdf7,0xb5b6,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xb596,0xa514,0xa534,0xad55,0xa534,0xa514,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0xa514,0xa534,0xa534,0xa514,0xbdd7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xb596,0xa534,0xa534,0xa534,0xa534,0xa514,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xd69a,0x8430,0x1082,0x31a6,0x31a6,0x10a2,0x9cd3,0xd6ba,0xdedb,0xdedb,0xe71c,0x5aeb,0x8430,0xef7d,0xe71c,0xe73c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0xce79,0xdedb,0xdedb,0xdefb,0xc638,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe73c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x632c,0x0000,0x39e7,0x31a6,0x31a6,0x31a6,0x10a2,0x7bef,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0x2945,0x31a6,0x31a6,0x2965,0x4228,0xbdf7,0xd6ba,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8c51,0x0841,0x31a6,0x3186,0x0000,0x18c3,0x31a6,0x2945,0x4a49,0xd69a,0xe73c,0x8410,0x632c,0xef5d,0xe71c,0xef5d,0x8430,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x31a6,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xce79,0x630c,0x8c51,0xe73c,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xdefb,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x528a,0xe71c,0xdedb,0xdedb,0xe71c,0x9cd3,0x2104,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x738e,0x2104,0x18c3,0x0000,0x3186,0x0841,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xd6ba,0xad55,0x2104,0x3186,0x31a6,0x18c3,0x738e,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2124,0x0000,0x31a6,0x31a6,0x3186,0x2124,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x8c71,0xe73c,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x5aeb,0x8430,0xef7d,0xe71c,0xe73c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe73c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x39c7,0x31a6,0x31a6,0x0861,0xa514,0xe71c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x0000,0xb596,0xe71c,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x632c,0xef5d,0xe71c,0xef7d,0x7bef,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xd69a,0x6b6d,0x8c51,0xd6ba,0x3186,0xb5b6,0xd6ba,0xdedb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x3186,0xdefb,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c71,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2124,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe71c,0xe71c,0xef5d,0x4208,0x8430,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9cd3,0xc618,0x738e,0xe71c,0xe73c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x6b6d,0x39c7,0x7bef,0x7bcf,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xce79,0xe71c,0xe71c,0xe71c,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x39c7,0x7bef,0x7bcf,0x7bef,0x39c7,0x6b6d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x6b4d,0x5aeb,0xad75,0xa534,0xa534,0xa514,0xc618,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x8c51,0xb596,0xad75,0xa534,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x5aeb,0x6b4d,0x632c,0x6b4d,0x7bef,0xa534,0xce79,0xdedb,0xdefb,0xce59,0x1082,0x94b2,0xad75,0xad75,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x18e3,0x7bef,0x7bcf,0x73ae,0x9cd3,0xad75,0xad75,0xad55,0x1082,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x8c71,0x7bef,0xa534,0xd6ba,0xdefb,0xdedb,0xdedb,0xd69a,0x2104,0x8c71,0xb596,0xad75,0xa534,0x7bcf,0x7bcf,0x7bef,0x528a,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0x4a49,0x6b6d,0x6b4d,0x6b4d,0x632c,0x94b2,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4208,0x94b2,0xd69a,0x7bef,0x9cf3,0xdefb,0x738e,0x6b4d,0xe71c,0xdedb,0xe71c,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0xdedb,0xad75,0x8c51,0xb5b6,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x5aeb,0x8c51,0xf79e,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xe73c,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x738e,0x7bef,0x8410,0x5acb,0x0000,0xdefb,0xdefb,0xdedb,0xdefb,0xce59,0x0000,0xc638,0xe73c,0xe73c,0xce59,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0xa514,0x2124,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x10a2,0xbdf7,0xef5d,0xe73c,0xd69a,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x5acb,0xe73c,0xdefb,0xdefb,0xef5d,0x9cf3,0x2945,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe73c,0xad75,0x2965,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c51,0x4228,0xe73c,0xdefb,0xdefb,0xe73c,0xad75,0x0020,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0x5acb,0x7bef,0x7bcf,0x7bcf,0x73ae,0xce79,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x7bef,0x8c71,0xc638,0xb5b6,0x0000,0xad55,0x8430,0x9492,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdf7,0x5aeb,0xbdd7,0x738e,0x2965,0x7bcf,0xb5b6,0x5aeb,0xc638,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x6b4d,0xc618,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xc638,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xef5d,0xc638,0x5aeb,0xb596,0xd69a,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe71c,0xe71c,0xc618,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2104,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xdefb,0xdedb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xbdd7,0xe71c,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x9cd3,0x73ae,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0x94b2,0x738e,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xc618,0xbdf7,0x9492,0x18c3,0xbdd7,0xbdd7,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0xa534,0x6b6d,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0x9cf3,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2104,0xb596,0xef5d,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x10a2,0x2945,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x2104,0xbdd7,0xef7d,0xad75,0x3186,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x7bcf,0x0000,0x0861,0x1082,0x1082,0x1082,0x0000,0x73ae,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad55,0xdedb,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x2945,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x2104,0xb5b6,0xdefb,0xdefb,0xce59,0x0020,0xbdd7,0xd6ba,0xdedb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa514,0xdedb,0xd6ba,0xd69a,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x4a49,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xb596,0xdedb,0xd6ba,0xc618,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xe71c,0xb5b6,0x0000,0x1082,0x1082,0x0000,0x8430,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x18e3,0x2945,0x1082,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x1082,0x1082,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xef7d,0xad55,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xe71c,0x52aa,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xe71c,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0841,0x2104,0x2104,0x18c3,0x0000,0xb5b6,0xef5d,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x2104,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0xe73c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x2104,0x18e3,0x0000,0xad55,0xef5d,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x1082,0x0000,0x2104,0x2104,0x18c3,0x0000,0x0000,0x0000,0x0000,0x4228,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe73c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x52aa,0xe71c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xce79,0xbdf7,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xe73c,0xa534,0x39e7,0x0000,0x0861,0x52aa,0xc638,0xef5d,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xdefb,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xbdf7,0xce79,0xdedb,0x6b6d,0x2124,0x0000,0x3186,0x8c51,0xe73c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0xce79,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xe71c,0xad75,0x4208,0x0000,0x0000,0x4a69,0xbdf7,0xef5d,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xdefb,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xce79,0xdefb,0x73ae,0x2945,0x0000,0x2965,0x8410,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xe71c,0xb5b6,0x4228,0x0000,0x0000,0x4228,0xb5b6,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xc638,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xce59,0xe71c,0x8410,0x2965,0x0000,0x2945,0x73ae,0xdefb,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xbdf7,0x4a69,0x0000,0x0000,0x4208,0xad75,0xef5d,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0x8c51,0x3186,0x0000,0x2124,0x6b6d,0xd6ba,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xc638,0x52aa,0x0861,0x0000,0x39e7,0xa534,0xef5d,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0x9492,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x2945,0x8c51,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x8430,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x4a49,0x0000,0x0861,0x0000,0x0000,0x632c,0x9492,0x9492,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x8430,0x0000,0x0000,0x1082,0x0000,0x0000,0x8c51,0x8430,0x8c71,0x9492,0x8c71,0x8430,0x9492,0x9492,0x8c51,0x8430,0x8430,0x9492,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x52aa,0x0000,0x0841,0x0020,0x0000,0x5acb,0x8c71,0x8c51,0x9492,0x8430,0x8430,0x8c51,0x9492,0x9492,0x8430,0x8430,0x8430,0x8c51,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x8c51,0x0000,0x0000,0x1082,0x0000,0x0000,0x8410,0x9492,0x9492,0x8c71,0x8430,0x8430,0x9492,0x9492,0x8c71,0x8430,0x8430,0x9492,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x5aeb,0x0000,0x0841,0x0841,0x0000,0x52aa,0x8c71,0x8430,0x9492,0x8c51,0x8430,0x8430,0x8c51,0x9492,0x8430,0x8430,0x8c51,0x9492,0x9492,0x9cd3,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x8c71,0x0000,0x0000,0x0861,0x0000,0x0000,0x7bef,0x9492,0x9492,0x8c71,0x8430,0x9492,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x9492,0x9492,0x9492,0x8c71,0x8430,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x6b4d,0x0000,0x0020,0x0841,0x0000,0x4a69,0x9492,0x9492,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x8430,0x8430,0x8430,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x2104,0x0000,0x1082,0x0000,0x0000,0x7bcf,0x9492,0x9492,0x8c71,0x8430,0x8430,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x8430,0x8c71,0x8c71,0x8430,0x9492,0x8430,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x738e,0x0000,0x0000,0x1082,0x0000,0x31a6,0x8c71,0x8430,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2104,0x632c,0x632c,0x0000,0x3186,0x632c,0x5aeb,0x632c,0x0000,0x31a6,0x632c,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x52aa,0x39c7,0x0000,0x0000,0x0000,0x52aa,0x3186,0x0000,0x0000,0x0000,0x528a,0x6b4d,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x73ae,0x5acb,0x632c,0x18c3,0x0000,0x0000,0x630c,0x0000,0x0000,0x3186,0x632c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x6b4d,0x6b4d,0x630c,0x52aa,0x0000,0x528a,0x6b4d,0x31a6,0x0000,0x0000,0x5aeb,0x5aeb,0x632c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x39c7,0x738e,0x632c,0x0000,0x0000,0x2104,0x630c,0x630c,0x0000,0x0000,0x2945,0x632c,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0020,0x0000,0x4208,0x6b4d,0x5acb,0x0000,0x52aa,0x630c,0x630c,0x52aa,0x0000,0x528a,0x6b4d,0x31a6,0x0000,0x0000,0x0000,0x528a,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x630c,0x0000,0x0000,0x18c3,0x52aa,0x0000,0x528a,0x18c3,0x0861,0x630c,0x630c,0x0000,0x0000,0x0000,0x0000,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0020,0x0000,0x4208,0x528a,0x0000,0x0000,0x0000,0x39e7,0x4a69,0x0000,0x0000,0x4a69,0x6b4d,0x39e7,0x0000,0x0000,0x528a,0x630c,0x632c,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0x6b6d,0x6b4d,0x0000,0x0000,0x0000,0x5aeb,0x630c,0x6b4d,0x2124,0x0000,0x630c,0x630c,0x6b4d,0x18c3,0x18c3,0x528a,0x0000,0x52aa,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x738e,0x5aeb,0x630c,0x0000,0x0000,0x3186,0x52aa,0x0000,0x0000,0x4a49,0x6b4d,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x73ae,0xdedb,0xdedb,0x4a69,0x8c51,0xe71c,0xe71c,0xd6ba,0x39c7,0xa534,0xef5d,0xbdf7,0x39c7,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2104,0xbdd7,0xa534,0x1082,0x0000,0x2965,0xc618,0x9cf3,0x0000,0x0020,0x39c7,0xbdf7,0xe71c,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdefb,0xe71c,0xdefb,0x6b6d,0x0000,0x7bcf,0xd69a,0x528a,0x0000,0x9cf3,0xef5d,0xc638,0x4228,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0xe71c,0xbdd7,0x0841,0xd69a,0xe73c,0x9cf3,0x0000,0x2965,0xce59,0xe71c,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xe73c,0xd6ba,0x6b4d,0x0000,0x8430,0xef5d,0xd69a,0x5aeb,0x0000,0x9492,0xef5d,0xce59,0x528a,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0xdefb,0xc618,0x0020,0xbdd7,0xe71c,0xe71c,0xbdd7,0x0841,0xd69a,0xe71c,0x9cf3,0x10a2,0x0000,0x0000,0xce59,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x528a,0xd69a,0x7bcf,0x0000,0x7bcf,0xdedb,0x0000,0xd69a,0x7bef,0x73ae,0xef5d,0xd69a,0x5aeb,0x0861,0x0000,0x6b4d,0xdefb,0x52aa,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xc618,0x2965,0x0000,0x0861,0xa534,0xbdd7,0x18e3,0x0000,0xce59,0xe73c,0xa534,0x0861,0x18c3,0xd69a,0xdedb,0xdedb,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe71c,0xdefb,0x7bef,0x0000,0x632c,0xe73c,0xd6ba,0xdefb,0x7bef,0x632c,0xe73c,0xd69a,0xdefb,0x6b6d,0x8410,0xd69a,0x0000,0xdedb,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe71c,0xe71c,0xd69a,0x39e7,0x0000,0x9cf3,0xc618,0x2965,0x0000,0xc618,0xe73c,0xad75,0x2124,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x0000,0x18e3,0x0861,0x0000,0x7bef,0xd69a,0x2945,0x0000,0xad75,0xad75,0x4a49,0xd6ba,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce79,0x6b4d,0x8c71,0xc618,0x18c3,0xd69a,0x5acb,0x9cd3,0xb596,0x2965,0xdedb,0x5acb,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xdedb,0x4a69,0x0000,0x9492,0xbdf7,0x18e3,0xd69a,0x528a,0x9cd3,0xbdd7,0x39c7,0xd6ba,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd69a,0x6b6d,0x8c71,0xc618,0x0000,0x0000,0xc638,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0861,0xce59,0x7bcf,0x7bcf,0xce59,0x2104,0xce79,0x632c,0x8c51,0xc618,0x2945,0xd69a,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xd69a,0x2945,0xc618,0x8c51,0x6b4d,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce59,0x0861,0xd69a,0x7bcf,0x0000,0x5aeb,0xdefb,0xdefb,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0x9cd3,0x5aeb,0xd6ba,0x18c3,0xbdf7,0x8c71,0x6b4d,0xce79,0x0020,0xce59,0x7bef,0x7bef,0xc638,0x0841,0xd69a,0x7bcf,0x0000,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x3186,0xb5b6,0x9cd3,0x52aa,0xd6ba,0x3186,0x0861,0x0000,0x7bcf,0xd69a,0x18e3,0x10a2,0x0000,0x8c51,0xce59,0x0000,0xd6ba,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xce79,0x10a2,0x0000,0xb5b6,0x9cd3,0x52aa,0xd69a,0x18c3,0xc618,0x8c71,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x8430,0xc638,0x0000,0x0000,0x0000,0x73ae,0xd69a,0x0861,0x0000,0xb596,0xad55,0x39e7,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x73ae,0x0000,0x39c7,0x3186,0xdedb,0x528a,0x9cd3,0xbdd7,0x0000,0x52aa,0xc618,0x6b6d,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x4208,0x0000,0x9492,0xe71c,0xce59,0xdefb,0x528a,0x9cd3,0xb5b6,0x2945,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xad75,0x0000,0x18c3,0xd69a,0x632c,0x8c51,0xc638,0x0000,0x0000,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xdefb,0xce59,0x6b4d,0x0000,0x8430,0xce59,0x0000,0xd69a,0x6b4d,0x8c51,0xc618,0x0861,0xd6ba,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xad55,0xa534,0x0000,0x0000,0x0000,0xad75,0xad75,0x0000,0x18c3,0xce59,0xdedb,0x9cd3,0x10a2,0x2945,0xc618,0xe71c,0x9cd3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdedb,0x2945,0x31a6,0x0000,0x738e,0xdefb,0xce59,0xdefb,0x738e,0x738e,0xe71c,0xc638,0x5aeb,0x0000,0x8410,0xdedb,0xd69a,0x52aa,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xa514,0x0000,0x4228,0x0000,0xc638,0x8c51,0x632c,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x0020,0xce59,0xdedb,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xd69a,0x8c51,0x1082,0x630c,0xdefb,0xce79,0x5acb,0x0000,0x738e,0xdefb,0xce59,0x4a49,0x0000,0x8410,0xe71c,0xce59,0x5aeb,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8430,0xce59,0x0000,0x0000,0xb596,0xdedb,0xce79,0xd69a,0x18c3,0xb5b6,0xdefb,0xa534,0x2965,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x8430,0xad75,0x528a,0x0000,0x6b6d,0xd69a,0x0000,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b4d,0x5acb,0x94b2,0x2124,0xdefb,0x4228,0x9cd3,0xc638,0x0000,0x0000,0x632c,0xad55,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x9492,0xd69a,0x8c71,0xdedb,0x528a,0x9cd3,0xb5b6,0x2965,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xad75,0xad75,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdedb,0x8c71,0x9cf3,0x4a49,0x8410,0xce59,0x0841,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xdefb,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0x9cd3,0xa534,0x10a2,0x0000,0xb596,0xb596,0x0000,0x18c3,0xce79,0xad55,0x9492,0x8430,0x0000,0x738e,0xce59,0xce59,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xdefb,0x0000,0x9492,0x632c,0x6b4d,0xdedb,0x8c51,0xd6ba,0x73ae,0x73ae,0xd6ba,0x8c51,0x9cf3,0x4a49,0x39e7,0x9cf3,0xdedb,0xad75,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x10a2,0xa534,0x0000,0xce59,0x8c51,0x5aeb,0xdedb,0x0841,0xce59,0x6b6d,0x73ae,0xd69a,0x0000,0xce79,0xad55,0x4208,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x9cf3,0x39c7,0x0000,0x6b4d,0xdedb,0x8c51,0x10a2,0x0000,0x7bcf,0xdedb,0x8410,0x0000,0x0000,0x8430,0xd6ba,0x8c51,0x9cf3,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0000,0x0000,0xb5b6,0xbdf7,0x9cf3,0xd69a,0x18c3,0xbdf7,0xb596,0x8430,0x9cf3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x8430,0x7bcf,0xb596,0x4a49,0x4a49,0xad75,0xdedb,0x8c51,0x0000,0xb596,0xad75,0x4208,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0x9492,0x9cf3,0x9cd3,0x1082,0xa514,0x8c71,0x9cf3,0x8430,0x1082,0x8430,0x73ae,0xa534,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x4228,0x0000,0x9cd3,0xc618,0x0000,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xce59,0xce59,0x6b4d,0x10a2,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x0000,0xce59,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xd6ba,0x0000,0xd6ba,0x8430,0x7bef,0xce79,0x0841,0xd6ba,0x6b4d,0x8c51,0xd6ba,0x8410,0xad55,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x7bef,0x8c71,0xad55,0x10a2,0x0000,0xb5b6,0xb5b6,0x0000,0x18c3,0xd6ba,0x5acb,0x8c71,0xd69a,0x0000,0x6b4d,0xce79,0xd69a,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xad55,0x8430,0xb596,0x6b4d,0x738e,0xd6ba,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0000,0xdefb,0x7bef,0x2124,0x9cf3,0xdefb,0xbdd7,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cf3,0x9492,0xad75,0x18c3,0x8c71,0x9cd3,0x9492,0x9cf3,0x0000,0xce59,0xb596,0x9492,0x94b2,0x1082,0xd69a,0xa514,0x7bcf,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x2965,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0x8430,0x4228,0x738e,0xdefb,0x7bcf,0x8430,0x31a6,0x8430,0xce79,0x0000,0xdefb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd69a,0x0000,0x0000,0xc618,0x9cd3,0x4228,0xdedb,0x18c3,0xc618,0xb596,0x8430,0xad55,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xdedb,0xc638,0x0000,0x0000,0x9492,0xd69a,0xc638,0xce79,0x39e7,0x9cd3,0x9cd3,0x39c7,0xc618,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0x94b2,0x0000,0x0000,0x0000,0xb5b6,0x8430,0x0000,0x4208,0xce59,0xdedb,0x6b6d,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xc618,0x39e7,0x0000,0x8430,0xad75,0x10a2,0xc618,0x4a69,0x8c51,0xa534,0x2945,0xc618,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xce59,0xce59,0xb5b6,0x0000,0xbdf7,0x5aeb,0x7bef,0xb596,0x0000,0x0000,0xb596,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xbdf7,0x0020,0xb5b6,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x5aeb,0x738e,0xd69a,0xc638,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xdedb,0xa514,0x0000,0x0000,0x0000,0x9cf3,0x9cf3,0x0000,0x10a2,0xbdf7,0x5aeb,0x7bef,0xad75,0x18c3,0xc638,0xd69a,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xce59,0x52aa,0x0000,0x6b6d,0xbdf7,0x0020,0xb5b6,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x5aeb,0x7bef,0xd6ba,0xbdd7,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8430,0xb5b6,0x0000,0x0000,0x0000,0x94b2,0xad75,0x0000,0x0000,0xad75,0xd6ba,0x94b2,0x0000,0x18c3,0xb5b6,0xce79,0xd6ba,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xc618,0x39e7,0x0000,0x0000,0x5acb,0xce59,0xce79,0xd6ba,0x7bcf,0x52aa,0xce59,0xce79,0xd6ba,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xb5b6,0x0000,0x0000,0xad55,0x8c51,0x4a69,0xc618,0x18c3,0xa514,0xd6ba,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0x6b4d,0x632c,0x0000,0x0000,0x4228,0x6b4d,0x6b4d,0x6b4d,0x18e3,0x4a69,0x4a69,0x18e3,0x630c,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x738e,0x5acb,0x0000,0x0000,0x5aeb,0x4228,0x0000,0x2104,0x630c,0x18e3,0x4a69,0x4a69,0x18e3,0x632c,0x6b4d,0x6b6d,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x6b4d,0x632c,0x1082,0x0000,0x4228,0x6b6d,0x630c,0x6b4d,0x2124,0x4208,0x6b4d,0x632c,0x632c,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x6b4d,0x6b4d,0x5aeb,0x0000,0x0000,0x5acb,0x4a69,0x0000,0x10a2,0x5aeb,0x6b6d,0x4208,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x6b4d,0x2945,0x0000,0x0000,0x2104,0x6b4d,0x10a2,0x0000,0x4228,0x6b6d,0x630c,0x6b4d,0x3186,0x0000,0x31a6,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x5acb,0x0000,0x0000,0x0000,0x528a,0x528a,0x0000,0x0000,0x0000,0x528a,0x738e,0x52aa,0x0841,0x630c,0x2124,0x4228,0x528a,0x10a2,0x630c,0x6b6d,0x39c7,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x3186,0x630c,0x10a2,0x0000,0x0020,0x0000,0x10a2,0x6b4d,0x2104,0x0000,0x0000,0x2104,0x6b4d,0x10a2,0x0000,0x4208,0x6b4d,0x632c,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x4a49,0x0000,0x0000,0x0000,0x5acb,0x6b4d,0x632c,0x630c,0x0861,0x0000,0x4a69,0x6b6d,0x5aeb,0x0000,0x630c,0x632c,0x6b4d,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630c,0x2104,0x0000,0x0000,0x2965,0x632c,0x6b4d,0x6b6d,0x39e7,0x2965,0x6b4d,0x630c,0x6b6d,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xce79,0x4228,0x0000,0x9cf3,0xe73c,0xd6ba,0xdedb,0x39c7,0xad75,0xad75,0x4208,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xb596,0xe73c,0xb5b6,0x0000,0x10a2,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0x4208,0xad75,0xad75,0x39e7,0xe71c,0xdedb,0xdefb,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xef5d,0xd69a,0x52aa,0x0000,0x8c51,0xe71c,0xdefb,0xdefb,0x4a69,0x94b2,0xef5d,0xdefb,0xe71c,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xbdf7,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xd6ba,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x52aa,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x8c51,0xe71c,0xdefb,0xdefb,0x630c,0x0000,0x8410,0xd69a,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x0000,0x0000,0xb596,0xe73c,0xb596,0x18e3,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdefb,0xe71c,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x3186,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x632c,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x9492,0xef5d,0xce79,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xad55,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0xe71c,0xc638,0x18c3,0x0000,0xa534,0xe71c,0xbdf7,0x0020,0xc638,0xe71c,0xe71c,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x4228,0x0000,0x0000,0x632c,0xe71c,0xd6ba,0xe71c,0x8410,0x5aeb,0xdefb,0xdefb,0xe71c,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x31a6,0xce79,0x528a,0x9cf3,0xbdd7,0x0000,0x3186,0x0000,0xb596,0xa534,0x3186,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce79,0x7bcf,0x0000,0x2104,0x2965,0xce79,0x52aa,0x94b2,0xad75,0x2965,0xdedb,0x4208,0xad55,0xad55,0x4208,0xdedb,0x4a49,0x18e3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x3186,0xce59,0x738e,0x0000,0x73ae,0xd6ba,0x4a49,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c51,0x0000,0x2945,0x18c3,0xce59,0x6b6d,0x8c71,0xbdd7,0x18e3,0xd6ba,0x5acb,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0x39c7,0x0000,0x0000,0x8410,0xc638,0x3186,0xce59,0x738e,0x0000,0x73ae,0xd6ba,0x4a49,0x0000,0x9cf3,0xb596,0x4208,0xd69a,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0x9cd3,0x0000,0x0000,0x0000,0xc618,0x7bef,0x7bef,0xc618,0x0841,0xce79,0x7bcf,0x0000,0x2104,0x3186,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x4a49,0xad55,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x73ae,0xce59,0x3186,0xc638,0x73ae,0x73ae,0xc618,0x18c3,0xce59,0x630c,0x8c51,0xc638,0x31a6,0xce79,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0xad55,0xbdf7,0x0000,0x0000,0xce59,0x8c51,0x0000,0x2965,0x0000,0x0000,0xbdf7,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x6b4d,0xd6ba,0x39c7,0x2124,0x18e3,0x0000,0x52aa,0xdedb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x0020,0xdedb,0x52aa,0x9492,0xdefb,0xb596,0x0000,0x0000,0xa534,0xd6ba,0xbdf7,0xd6ba,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x5acb,0xb5b6,0x8430,0x0000,0x31a6,0xd6ba,0xce59,0xd6ba,0xad75,0x2965,0xdedb,0x2124,0xa534,0xad55,0x39e7,0xdedb,0xce79,0x630c,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xd69a,0x7bcf,0x0000,0x632c,0xd6ba,0x2945,0x0000,0x9cd3,0xe73c,0xe71c,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xdedb,0x8c71,0x0000,0x18c3,0xd6ba,0x632c,0x8c51,0xc638,0x18c3,0xd69a,0xd69a,0x9492,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xad75,0x632c,0x8410,0xce79,0x0000,0xd69a,0x7bcf,0x0000,0x632c,0xd6ba,0x2945,0x0000,0xa534,0xb5b6,0x2124,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c71,0x4a69,0xb596,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x52aa,0xb5b6,0x8430,0x0000,0x31a6,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2945,0xd6ba,0xce79,0x8c51,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xce79,0x7bef,0x73ae,0xe71c,0xc618,0xe71c,0x632c,0x8c51,0xc618,0x0020,0xdedb,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0xa514,0xbdd7,0x0000,0x0000,0x528a,0xb596,0x9492,0x0000,0x0020,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x632c,0xdefb,0xce59,0x52aa,0x0000,0x0000,0x39e7,0xdedb,0x528a,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x18c3,0xd6ba,0x52aa,0x94b2,0xce79,0x7bcf,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x630c,0xa514,0x8c51,0x2124,0xd69a,0xa534,0xc618,0xb596,0x3186,0xdefb,0xa534,0xce79,0xad55,0x39e7,0xdedb,0x9cf3,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xdedb,0x7bef,0x0000,0x5aeb,0xd6ba,0x0841,0x0000,0x9cf3,0xce59,0x9492,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xbdf7,0x6b4d,0x0000,0x18c3,0xdedb,0x630c,0x8c51,0xce59,0x10a2,0xd69a,0xad75,0x94b2,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd6ba,0x8430,0x7bef,0xd69a,0x0000,0xdedb,0x7bef,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0xad55,0xbdd7,0x0000,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c51,0x632c,0xe71c,0x0841,0xd69a,0x73ae,0x73ae,0xd6ba,0x0000,0x0000,0x630c,0xa514,0x8c51,0x2124,0xd6ba,0x4228,0x94b2,0xb5b6,0x2965,0xd6ba,0x9cf3,0x9cd3,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0861,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd69a,0x8410,0x73ae,0xd6ba,0x94b2,0xdedb,0x632c,0x8c71,0xbdf7,0x0000,0xdefb,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x5acb,0xa514,0x94b2,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x3186,0x0000,0x0000,0x6b4d,0xdedb,0x94b2,0x2124,0x0000,0x0000,0x4228,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xc638,0x18c3,0xdedb,0x52aa,0x9cd3,0xce59,0x630c,0x7bcf,0x1082,0x7bef,0xce59,0xdedb,0xad55,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x738e,0x6b4d,0x9cd3,0xa514,0x2104,0xdedb,0x4208,0x94b2,0xbdf7,0x1082,0xad55,0xe71c,0xce79,0x73ae,0x4a49,0xdefb,0x7bef,0x73ae,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd6ba,0x7bcf,0xad75,0x52aa,0x31a6,0x9cf3,0xdedb,0x8430,0x0000,0xa534,0xb5b6,0x0000,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x8410,0x0000,0x0000,0x10a2,0xa534,0x8c71,0x94b2,0x94b2,0x2124,0xdedb,0x4208,0x9cf3,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xad75,0x7bcf,0xad75,0x5aeb,0x5aeb,0xad75,0x7bcf,0xad75,0x5aeb,0x0000,0x6b4d,0xdedb,0x3186,0x0000,0x7bef,0xa534,0x7bef,0xad75,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0x94b2,0x8c71,0xa534,0x0020,0x9cf3,0x9492,0x9492,0x9cf3,0x0000,0x738e,0x6b4d,0x9cd3,0xa514,0x2104,0xdedb,0x9492,0xbdd7,0xb5b6,0x2965,0xdefb,0x8410,0xa514,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0x7bef,0x4208,0x52aa,0xad75,0x7bcf,0xad75,0x5acb,0x8410,0xce79,0x0000,0xd6ba,0x6b4d,0x8c51,0xd69a,0x7bcf,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xbdf7,0x738e,0x73ae,0x0861,0x5acb,0xbdf7,0xce59,0x632c,0x0000,0x6b6d,0x6b6d,0x9492,0xad75,0x0000,0x0000,0xbdf7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x8c51,0x7bef,0x4228,0x630c,0xdefb,0x73ae,0x7bcf,0x528a,0x0000,0x4228,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xb596,0x1082,0xc638,0x4a69,0x8410,0xd69a,0xd69a,0xd69a,0x528a,0x0000,0x73ae,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xc618,0xdefb,0x8c71,0x0000,0x2965,0xc638,0x4a69,0x8c71,0xad75,0x0000,0x0000,0xbdd7,0x73ae,0x0000,0x4a69,0xce59,0xd69a,0xdedb,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xd6ba,0xce79,0x2124,0x0000,0x8c51,0xdedb,0xce59,0xd6ba,0x4a69,0x8c71,0xad55,0x2124,0xc638,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0x7bef,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x2965,0xc638,0x4a69,0x8c71,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xd69a,0x4208,0x0000,0x0000,0x4208,0xd69a,0x2945,0x0000,0x0000,0x5aeb,0xc638,0x2945,0x0000,0x0000,0x6b4d,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9cd3,0xb596,0x0000,0x0000,0x0000,0xa534,0xa534,0x0000,0x10a2,0xc618,0xdefb,0x8c71,0x0000,0x2965,0xbdf7,0xd69a,0xd6ba,0x9cf3,0x2124,0xc638,0xdedb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xce79,0xd69a,0xdedb,0x8c51,0x0000,0x2945,0xd69a,0x4208,0x0000,0x7bef,0xbdd7,0x0000,0xc618,0x5aeb,0x73ae,0xd6ba,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xd6ba,0xd6ba,0xce59,0x1082,0xad75,0xd69a,0xce79,0xc618,0x0000,0xbdd7,0xdefb,0x9cd3,0x0000,0x0000,0x0000,0xad75,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xce59,0xd69a,0xdedb,0x8c51,0x4228,0xce79,0xd69a,0xdedb,0x8430,0x0000,0x39e7,0xc638,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0841,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0841,0x0020,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4228,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc679,0xc638,0xc638,0xc679,0xc679,0xc679,0xc638,0xc618,0xc638,0xc679,0xc618,0xc618,0xc659,0xc679,0xc679,0xc618,0xce79,0x6b4d,0x0000,0x0861,0x0000,0x0000,0x9514,0xce9a,0xc618,0xc618,0xc659,0xc679,0xc638,0xc618,0xc638,0xc679,0xc679,0xc638,0xc618,0xc638,0xc659,0xc618,0xc659,0xc679,0xc659,0xc618,0xc618,0xc659,0xc679,0xc69a,0xb5f7,0x0000,0x0000,0x1082,0x0000,0x3186,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc679,0xc638,0xc638,0xc679,0xc618,0xc618,0xc618,0xc618,0xc638,0xc679,0xc638,0xc618,0xc659,0xc659,0xc618,0xc679,0xce79,0x73ae,0x0000,0x0861,0x0020,0x0000,0x8c71,0xce79,0xc618,0xc618,0xc618,0xc659,0xc679,0xc679,0xc679,0xc618,0xc618,0xc659,0xc659,0xc618,0xc618,0xc618,0xc659,0xc679,0xc659,0xc618,0xc679,0xc679,0xc679,0xc679,0xbdd7,0x0000,0x0000,0x1082,0x0000,0x18e3,0xbdf7,0xc679,0xc638,0xc618,0xc618,0xc618,0xc679,0xc638,0xc618,0xc618,0xc618,0xc679,0xc679,0xc679,0xc659,0xc618,0xc618,0xc659,0xc679,0xc659,0xc638,0xc679,0xc679,0xceba,0x8451,0x0000,0x0841,0x0841,0x0000,0x8410,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc638,0xc638,0xc679,0xc618,0xc659,0xc638,0xc638,0xc679,0xc618,0x18e3,0x0000,0x1082,0x0000,0x0000,0xbdd7,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xce79,0x8c71,0x0000,0x0020,0x0861,0x0000,0x738e,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc659,0xc618,0xc638,0x31a6,0x0000,0x1082,0x0000,0x0000,0xb596,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xce59,0x9cd3,0x0000,0x0000,0x0861,0x0000,0x6b2c,0xce79,0xc679,0xc679,0xc679,0xc659,0xc638,0xc679,0xc618,0xc659,0xc638,0xc638,0xc679,0xc679,0xc638,0xc618,0xc618,0xc638,0xc679,0xc638,0xc618,0xc638,0xc679,0xc679,0xce59,0x4a49,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xbdf7,0xe71c,0xdefb,0xdefb,0xdefb,0xdf3c,0xdefb,0xdbcf,0xdb2d,0xde18,0xde18,0xdb6d,0xdc10,0xdb6e,0xde18,0xdf7d,0xde79,0xdbaf,0xdf1c,0xdf5d,0xdd96,0xdb6e,0xdc31,0xdf3c,0xe73c,0xc618,0x7bcf,0x0000,0x10a2,0x94f3,0xcc51,0xe596,0xdf3c,0xdedb,0xdc71,0xdb2d,0xddd7,0xdf7d,0xde9a,0xdc31,0xdb4d,0xde18,0xdf7d,0xde79,0xdc30,0xdedb,0xdd55,0xdb4d,0xdcb3,0xdf5d,0xdf1c,0xdc92,0xdbaf,0xdbf0,0xd3cf,0xad34,0x3a08,0x0000,0x5aeb,0xbdd7,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdf1c,0xdbf0,0xdb2d,0xddd7,0xde59,0xdc51,0xdefb,0xdefb,0xdefb,0xdf3c,0xdeba,0xdbaf,0xdefb,0xdf5d,0xdd96,0xdcb3,0xdefb,0xdc31,0xe679,0xc679,0x8410,0x0000,0x0000,0x8c71,0xce79,0xe71c,0xdefb,0xdefb,0xdf1c,0xdd34,0xdbae,0xdb8e,0xdbf0,0xdeba,0xdf7d,0xdd55,0xdcb3,0xdf7d,0xdefb,0xdf7d,0xdd55,0xdb0c,0xdc72,0xdefb,0xdc30,0xdbcf,0xdbaf,0xdcb2,0xdefb,0xad75,0x4a49,0x0000,0x52aa,0xb5b6,0xdefb,0xdc92,0xddd7,0xdf1c,0xdefb,0xdefb,0xdc51,0xde18,0xdf1c,0xdefb,0xdedb,0xdbf0,0xdbf0,0xdb8e,0xdcd3,0xdf3c,0xdf5d,0xdc72,0xdb0c,0xdd55,0xdeba,0xdb8e,0xdc10,0xdbaf,0xcc92,0x8c92,0x0000,0x0000,0x8c51,0xce59,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdc51,0xddd7,0xde79,0xdbef,0xdefb,0xdc10,0xde38,0xde38,0xdc10,0xdefb,0xb5b6,0x52aa,0x0000,0x4a49,0xad75,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce79,0x8c71,0x0000,0x0000,0x8410,0xc638,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf3c,0xdd55,0xdcf3,0xdf1c,0xdefb,0xbdd7,0x5aeb,0x0000,0x39e7,0xad55,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xe73c,0xd679,0x94b2,0x10a2,0x0000,0x7bcf,0xc658,0xe6ba,0xdc10,0xdbaf,0xdb2d,0xdd96,0xde9a,0xdc31,0xdefb,0xdcb3,0xddd7,0xde79,0xdbcf,0xdb8e,0xdeba,0xdf3c,0xdf3c,0xdeba,0xdbaf,0xdefb,0xdf5d,0xddd7,0xdb8e,0xdbf0,0xe71c,0xbe18,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd492,0xd3ef,0xd34d,0xddf7,0xde18,0xd28a,0xd000,0xd2ec,0xde18,0xde59,0xd492,0xd38e,0xd4d3,0xdedb,0xd410,0xd000,0xd430,0xd4d3,0xd679,0xef5d,0xad75,0x0000,0x18c3,0xd6db,0xdaec,0xd3af,0xdf3c,0xde79,0xd000,0xd2cb,0xd451,0xddb6,0xde59,0xd000,0xd32d,0xd471,0xddf7,0xde18,0xd000,0xde9a,0xd32d,0xd023,0xd410,0xd535,0xdedb,0xd4d3,0xd0e4,0xd000,0xdc51,0xe71c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b2,0xd3f0,0xd32d,0xddd7,0xd575,0xd000,0xdeba,0xdedb,0xdefb,0xde38,0xd492,0xd38e,0xd4b3,0xdeba,0xd471,0xd209,0xdedb,0xd000,0xd596,0xe77d,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd2cb,0xd125,0xd3f0,0xd3cf,0xdeba,0xddb6,0xd431,0xd410,0xd555,0xdedb,0xd555,0xd430,0xd36e,0xd451,0xdedb,0xd431,0xd000,0xd0e4,0xd4b3,0xdefb,0xe73c,0x6b4d,0x0000,0x7bcf,0xef5d,0xdedb,0xd0a4,0xd4b3,0xdf1c,0xdedb,0xdeba,0xd000,0xd534,0xdf1c,0xdedb,0xde9a,0xd3f0,0xd000,0xd146,0xd514,0xdeba,0xd4f3,0xd410,0xd34d,0xd534,0xde9a,0xd36e,0xd000,0xd1e8,0xe5d7,0xc659,0x0000,0x0000,0xc618,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd4b2,0xd471,0xd4b2,0xd431,0xdedb,0xd472,0xd492,0xd492,0xd471,0xdedb,0xef5d,0x7bcf,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd3cf,0xd28a,0xdf3c,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b3,0xd4d3,0xd492,0xd5f7,0xdf3c,0xd69a,0x18c3,0x0000,0xad75,0xef7d,0xd5f7,0xd000,0xd36e,0xd36d,0xdd96,0xddd7,0xd000,0xdeba,0xd1e8,0xd4b2,0xddb6,0xd000,0xd36e,0xd4b2,0xde59,0xde59,0xd492,0xd38e,0xd492,0xde9a,0xd492,0xd000,0xd3cf,0xd4d3,0xeefb,0x94d2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd596,0xd229,0xde38,0xdf1c,0xdefb,0xdf1c,0xde59,0xd001,0xde9a,0xdf5d,0xd430,0xd229,0xdefb,0xd000,0xddf7,0xd471,0xd2cb,0xde18,0xd1c8,0xde18,0xe73c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd3f0,0xdf3c,0xde9a,0xd063,0xdd96,0xd451,0xd3cf,0xde9a,0xd001,0xddd7,0xd3f0,0xd451,0xde59,0xd001,0xde9a,0xd30c,0xd492,0xde38,0xd000,0xde79,0xdf7d,0xd431,0xd30c,0xdf5d,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd1e8,0xddf8,0xdf1c,0xdf5c,0xd555,0xd105,0xdeba,0xdedb,0xdf1c,0xd4b3,0xd125,0xdf1c,0xd000,0xdd96,0xd4f3,0xd208,0xddf7,0xd002,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd30c,0xd38e,0xdedb,0xdf1c,0xdefb,0xd1c7,0xd431,0xd514,0xd000,0xdedb,0xd2ec,0xd4b2,0xdedb,0xdf3c,0xdedb,0xdf5d,0xd30c,0xd431,0xdf5d,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd4f3,0xdf1c,0xdedb,0xdeba,0xd105,0xd555,0xdf1c,0xdedb,0xdedb,0xdf5c,0xd26a,0xd4b2,0xdf7d,0xde59,0xd1e8,0xdd96,0xdefb,0xdf1c,0xdedb,0xdf1b,0xd125,0xdd96,0xe77d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd34d,0xd209,0xde9a,0xdedb,0xdeba,0xd2ab,0xd2ab,0xdeba,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xddd7,0xddf7,0xddd7,0xde79,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd36d,0xd26a,0xde59,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd187,0xd208,0xd105,0xd514,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd000,0xddb6,0xdefb,0xdf3c,0xd5b6,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd146,0xdf1c,0xd125,0xd514,0xd514,0xd105,0xdf1c,0xd28b,0xddd7,0xd4b3,0xd2ab,0xdefb,0xd000,0xe5f7,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd002,0xddd7,0xdefb,0xdefb,0xddf8,0xd001,0xde59,0xdf3c,0xd472,0xd28a,0xdeba,0xd023,0xde18,0xd4b2,0xd000,0xd208,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd3f0,0xdf3c,0xde9a,0xd146,0xd000,0xd4d3,0xdf5d,0xde59,0xd023,0xd000,0xd514,0xdf3c,0xddf8,0xd001,0xde9a,0xd32d,0xd451,0xde18,0xd003,0xde9a,0xdf3c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd083,0xdd96,0xdf3c,0xd555,0xd105,0xdeba,0xdedb,0xdf1c,0xd4f3,0xd1c8,0xdedb,0xd125,0xddb6,0xd514,0xd000,0xd000,0xd000,0xddd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd000,0xd30c,0xdefb,0xdefb,0xd30c,0xd000,0xd000,0xd1e8,0xdeba,0xdf3c,0xd38e,0xd36d,0xdefb,0xdedb,0xdf1c,0xd2ec,0xd3f0,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd4f3,0xdf1c,0xdedb,0xdeba,0xd105,0xd555,0xdf1c,0xdedb,0xdedb,0xdefb,0xd24a,0xd472,0xdf1c,0xdedb,0xdefb,0xd1e8,0xd4d3,0xdefb,0xdedb,0xdeba,0xd105,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd000,0xd000,0xd208,0xdedb,0xd2ab,0xd000,0xd000,0xd28a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdd75,0xd000,0xd001,0xd000,0xd534,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd000,0xd000,0xd208,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd000,0xdd75,0xdf3c,0xddb6,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd125,0xdedb,0xd1e8,0xd555,0xd555,0xd1a7,0xdedb,0xdedb,0xdf1c,0xd472,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdeba,0xd208,0xd514,0xdf3c,0xddf8,0xd001,0xde59,0xdf3c,0xd451,0xd229,0xdefb,0xd000,0xddf7,0xd451,0xd28a,0xdeba,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb0c,0xd430,0xdf5d,0xde79,0xd063,0xd535,0xdedb,0xdefb,0xde59,0xd001,0xddd7,0xd3ef,0xd451,0xde59,0xd001,0xde9a,0xd32d,0xd451,0xde18,0xd003,0xde9a,0xdf3c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdedb,0xd28a,0xd4f3,0xddb6,0xd125,0xdefb,0xdf1c,0xdf3c,0xd4b3,0xd146,0xdf1c,0xd002,0xdd96,0xd4f3,0xd000,0xd000,0xd000,0xddb6,0xe75c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd2ec,0xd38e,0xdeba,0xdedb,0xdefb,0xd26a,0xd472,0xd555,0xd125,0xdeba,0xdf1c,0xdf1c,0xd4d3,0xd229,0xdedb,0xdf1c,0xd2ec,0xd3f0,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd514,0xdf5d,0xdf1c,0xdeba,0xd0e5,0xd596,0xdf5d,0xdefb,0xdedb,0xdf3c,0xd26a,0xd4b2,0xdf5d,0xdedb,0xdf1c,0xdefb,0xd38e,0xd3af,0xdf1c,0xdeba,0xd105,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd38e,0xd26a,0xdefb,0xdedb,0xdefb,0xd30c,0xd30c,0xdefb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xde59,0xde59,0xde9a,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd3af,0xd2ab,0xdeba,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd001,0xd0e5,0xd000,0xd4d3,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd000,0xddd7,0xdedb,0xdf1c,0xddb6,0xd063,0xdefb,0xd2ab,0xd4d3,0xddb6,0xd125,0xdedb,0xd1e8,0xd555,0xd534,0xd146,0xdf1c,0xd1c8,0xddb7,0xd4d3,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd249,0xd2ec,0xd4f3,0xde59,0xdf1c,0xddf7,0xd000,0xde38,0xdf1c,0xde59,0xd4d3,0xd2cb,0xd555,0xdefb,0xd3cf,0xd26a,0xdf3c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd000,0xd451,0xdeba,0xd000,0xddb6,0xdf1c,0xdefb,0xde38,0xd000,0xde79,0xd34d,0xd34d,0xde59,0xd000,0xde9a,0xd2ab,0xd410,0xddf7,0xd000,0xde79,0xdf3c,0xd3af,0xd26a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddf8,0xd26a,0xd2cb,0xd4d3,0xde9a,0xd575,0xd000,0xd2ab,0xd249,0xdd96,0xdeba,0xd4f4,0xd2cb,0xd534,0xde9a,0xde7a,0xd471,0xd000,0xd535,0xde9a,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd24a,0xd3cf,0xdf3c,0xdedb,0xdefb,0xd187,0xd4b3,0xddb6,0xd000,0xdeba,0xd3cf,0xd249,0xd3f0,0xddd7,0xdedb,0xdf1c,0xd26a,0xd3af,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd187,0xd0e5,0xd2ab,0xd3cf,0xdeba,0xd0a4,0xd166,0xd28a,0xd430,0xdeba,0xd34d,0xd000,0xd001,0xd4b2,0xde9a,0xd2ec,0xd28a,0xd472,0xde18,0xdefb,0xdeba,0xd000,0xd534,0xdf5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd3f0,0xd472,0xd4f3,0xd36e,0xdedb,0xd3af,0xd4b2,0xd4b2,0xd3af,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd3af,0xd26a,0xdf3c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd555,0xd575,0xd555,0xde38,0xdf1b,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf7,0xd000,0xde59,0xdefb,0xdf1c,0xddb6,0xd000,0xd2ab,0xd000,0xd4d3,0xdd96,0xd000,0xdedb,0xd0c4,0xd4d3,0xdeba,0xd4f4,0xd2cb,0xd514,0xdedb,0xd451,0xd1e8,0xdeba,0xd000,0xe5f7,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd3ef,0xd410,0xde9a,0xdefb,0xdedb,0xde79,0xd492,0xde9a,0xdefb,0xe75d,0xde9a,0xdc92,0xe71c,0xe75d,0xddb7,0xdd75,0xe73c,0xe71c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce79,0xdd76,0xd3f0,0xd4f3,0xdeba,0xd492,0xde38,0xdefb,0xdedb,0xde9a,0xd492,0xde9a,0xd575,0xd575,0xde9a,0xdcd3,0xe6fb,0xdd75,0xddf7,0xdeba,0xdcd3,0xdedb,0xe73c,0xddd7,0xdd55,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd3f0,0xd3f0,0xde79,0xdf3c,0xde18,0xd451,0xd430,0xd3cf,0xddf8,0xe77d,0xdedb,0xdc72,0xdefb,0xe73c,0xe73c,0xdeba,0xdcd3,0xe71c,0xdefb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xd514,0xd576,0xdefb,0xdedb,0xdedb,0xd4f3,0xddd7,0xde38,0xdcb3,0xdefb,0xdd14,0xdc10,0xddb6,0xe77d,0xe6fb,0xe73c,0xdd75,0xddd7,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd4f4,0xd430,0xd3f0,0xd4b3,0xdedb,0xd4d3,0xd430,0xd3ef,0xd4f3,0xdeba,0xd451,0xd451,0xdc51,0xdd75,0xdefb,0xdc92,0xdc30,0xde59,0xe75d,0xdf1c,0xdefb,0xdcf4,0xde38,0xdf1c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdcf3,0xde38,0xde9a,0xdc92,0xe6fb,0xdcd3,0xde79,0xde79,0xdcb2,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdd76,0xd514,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xde79,0xd492,0xde9a,0xdedb,0xdefb,0xde59,0xd451,0xd430,0xd430,0xddf7,0xde38,0xd4b2,0xdedb,0xd4d3,0xddd7,0xdf3c,0xde9a,0xd430,0xdeba,0xdf1c,0xddb6,0xd4f4,0xdeba,0xd492,0xe69a,0x8c92,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xc618,0xb596,0xb5d7,0xb5f7,0xb5b6,0xb596,0xb5d7,0xb5f7,0xb596,0xb5b6,0xd69a,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdf1c,0xdf3c,0xdf1c,0xdedb,0xdf3c,0xdefb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xd6ba,0xb618,0xb5b6,0xb5f7,0xb5d7,0xb5b6,0xb5f7,0xb5b6,0xb596,0xb5d7,0xc659,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdf3c,0xdefb,0xdeba,0xdefb,0xdf1c,0xdf1c,0xdf3c,0xc659,0xb596,0xb5b6,0xb5f7,0xb596,0xb596,0xb596,0xb5b6,0xb5f7,0xb5b6,0xd69a,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdf1c,0xdf1c,0xdedb,0xdefb,0xdedb,0xdf1c,0xdefb,0xdefb,0xd6fb,0xb5b6,0xb5d7,0xb618,0xb5f7,0xb596,0xb5b6,0xb596,0xb5f7,0xb5d7,0xbdf7,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdedb,0xdf3c,0xdf3c,0xdf3c,0xdf1b,0xdedb,0xdf1c,0xdf3c,0xc69a,0xb5d7,0xb5b6,0xb618,0xb618,0xb5d7,0xb5b6,0xb5b6,0xb5b6,0xb5f7,0xce9a,0xe71c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xbdd7,0xb5f7,0xb5d7,0xb5d7,0xb5f7,0xb5b6,0xb5f7,0xb5d7,0xb5d7,0xbe38,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdf1c,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xdf1c,0xdefb,0xdeba,0xdedb,0xdf1c,0xdedb,0xdeba,0xdefb,0xdf1c,0xdedb,0xdf1c,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x2104,0x0000,0x10a2,0x0000,0x0000,0x18c3,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x1082,0x0000,0x0000,0x2104,0x0000,0x10a2,0x0000,0x6b4d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x7bcf,0x0000,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0000,0x1082,0x0000,0x0000,0x18c3,0x0000,0x18e3,0x0000,0x0000,0x5acb,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xef5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xce79,0x1082,0x0000,0x0000,0x0000,0x18e3,0x0000,0x18c3,0x0000,0x0000,0x4a49,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x1082,0x1082,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x630c,0xd6ba,0x0000,0xbdf7,0x8430,0x630c,0xd69a,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x31a6,0x0000,0x1082,0x0000,0x4228,0xd6ba,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xbdd7,0x94b2,0x4a69,0xd6ba,0x0000,0xbdf7,0x8c51,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x7bcf,0x0000,0x0861,0x1082,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x6b6d,0xdedb,0xd69a,0xd69a,0xd69a,0xd69a,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xce59,0x73ae,0x73ae,0xce59,0x0000,0xce79,0x738e,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x1082,0x1082,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x2945,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xc618,0x8430,0x630c,0xce79,0x0000,0xce59,0x8410,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x4a49,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x3186,0xb5b6,0xdefb,0xdefb,0xce79,0x10a2,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x94b2,0x5acb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x7bef,0x8c71,0xc618,0xbdd7,0xbdd7,0xc618,0x7bef,0x9492,0xe71c,0xdedb,0xe71c,0x630c,0x7bef,0xbdd7,0x528a,0xc638,0x6b6d,0x9cd3,0xb596,0x31a6,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdd7,0x4a49,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0xbdf7,0x7bcf,0x8c71,0xb5b6,0x528a,0xc638,0x7bcf,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x6b4d,0xc618,0xbdd7,0xbdf7,0x5acb,0xa534,0xef5d,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xb5b6,0xce59,0xc638,0xc638,0xc638,0xbdd7,0xd69a,0xdedb,0xdefb,0xce59,0x10a2,0x2965,0xad55,0xa534,0x630c,0xc638,0x5acb,0xb596,0x8c71,0x528a,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x9492,0x7bef,0xc618,0xbdd7,0xbdd7,0xc618,0x8430,0x6b6d,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xef5d,0xe71c,0xe73c,0xe71c,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x2965,0x2104,0xa514,0xad75,0x5acb,0xc638,0x630c,0xa534,0x9cd3,0x4208,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x0000,0xbdf7,0xf79e,0xbdd7,0x4a49,0xb5b6,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c71,0x4a49,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc638,0x5acb,0x31a6,0xbdf7,0xef5d,0xbdf7,0x528a,0x4a49,0x2965,0xad55,0xbdf7,0x6b4d,0xdedb,0x738e,0xb5b6,0xb5b6,0x6b6d,0xdedb,0xdedb,0xe71c,0xad55,0x4208,0x5acb,0xdedb,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x39e7,0x94b2,0xf79e,0xe73c,0xe73c,0xf79e,0x73ae,0x6b4d,0xe71c,0xdedb,0xe71c,0x6b4d,0x4208,0x9492,0xa514,0x8430,0x9cf3,0x9492,0x8c71,0x94b2,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xce59,0x9492,0x8430,0x8430,0x8430,0x8410,0x9492,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x7bcf,0x94b2,0x8c71,0x8430,0x94b2,0x8430,0x9cd3,0x528a,0x6b4d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8430,0xef5d,0xdefb,0xe71c,0xad55,0x8410,0xa514,0xdefb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xe71c,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x7bcf,0x8430,0x8430,0x8410,0x8c71,0xdedb,0xdefb,0xdedb,0xdefb,0xce59,0x1082,0x8c71,0x9cd3,0x94b2,0x9cf3,0x9492,0xa514,0x9cf3,0x52aa,0x5acb,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b6d,0xef5d,0xdefb,0xe73c,0xef7d,0xc638,0xad55,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x10a2,0x6b4d,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2124,0x8c51,0x94b2,0x8c71,0xa514,0x8430,0x9cf3,0x94b2,0x52aa,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2945,0x632c,0x7bcf,0x8430,0xad75,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0000,0x8c51,0x8430,0xbdd7,0xbdd7,0x0000,0x9cd3,0x94b2,0xc638,0xad75,0x18c3,0xe71c,0x31a6,0xa534,0xa534,0x2945,0xdedb,0xdedb,0xe71c,0x9492,0x0020,0x9cd3,0x8430,0xd69a,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x5acb,0x6b4d,0xad75,0xa534,0xa534,0xad75,0x4a69,0x73ae,0xe71c,0xdedb,0xe71c,0x6b6d,0x2945,0x8c51,0xad75,0x738e,0xa534,0x9492,0x8430,0xa534,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xe71c,0x73ae,0x632c,0x6b4d,0x632c,0x738e,0xad55,0xd69a,0xdedb,0xdefb,0xc618,0x0000,0x528a,0xce79,0xb596,0x8430,0xe71c,0x6b6d,0xd69a,0x9492,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xef7d,0x7bef,0x4228,0xe71c,0xdedb,0xe71c,0x738e,0x7bcf,0xdefb,0xa534,0xdedb,0xb5b6,0xc618,0xd6ba,0x9cd3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x5aeb,0x6b4d,0x6b4d,0x632c,0x738e,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0861,0xad55,0x5acb,0x5acb,0xad55,0x0000,0xad75,0x5acb,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xd6ba,0xad75,0xa514,0xad55,0xc618,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x10a2,0x8410,0x1082,0x630c,0x630c,0x1082,0x8410,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x10a2,0x5acb,0x6b4d,0x6b4d,0x6b4d,0x632c,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2104,0x9cd3,0x9492,0x8430,0xad75,0x738e,0xad55,0x9492,0x4208,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xbdf7,0xb5b6,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2945,0x528a,0x632c,0x8410,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0841,0xdedb,0x630c,0x8410,0xc618,0x0000,0xa534,0xdedb,0xe73c,0xad55,0x10a2,0xad55,0x2945,0xad75,0xad55,0x39e7,0xdedb,0xdedb,0xe71c,0x8c71,0x5acb,0xdefb,0x0000,0xbdf7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x630c,0x0000,0x31a6,0x31a6,0x31a6,0x31a6,0x0000,0x7bef,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xbdd7,0x39e7,0xce79,0x630c,0x9cd3,0xb5b6,0x1082,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xd69a,0xc638,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xdefb,0xdefb,0xe71c,0xdedb,0xe71c,0xe73c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xd69a,0x8410,0x7bcf,0xdefb,0xdedb,0xe71c,0x73ae,0x6b4d,0xbdd7,0x39c7,0xbdf7,0x6b6d,0x8430,0xb5b6,0x2124,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe73c,0xd6ba,0x5acb,0x3186,0x0000,0x528a,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x6b4d,0xce79,0x632c,0xad55,0xad55,0x632c,0xce79,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xe73c,0xe71c,0xe71c,0xdefb,0x2965,0xad55,0xe71c,0xdedb,0xd69a,0x2965,0x0000,0xa514,0xb596,0x4228,0xce79,0x52aa,0xa534,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x73ae,0x528a,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x10a2,0xbdf7,0xf79e,0xb5b6,0x39e7,0xc618,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x528a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x2104,0xbdf7,0xe73c,0xad75,0x0000,0x0000,0x0000,0xb596,0xad55,0x39e7,0xdefb,0xdedb,0xe71c,0x9492,0x52aa,0xd6ba,0x18c3,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0841,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc5f7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x5acb,0xdedb,0x2965,0xb5b6,0x9cd3,0x52aa,0xd6ba,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc5f7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xe71c,0x8410,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x8c51,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd69a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0x0000,0xb596,0xad55,0x39e7,0xdedb,0xdedb,0xe71c,0x9492,0x52aa,0xd6ba,0x18c3,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x39e7,0x8c51,0xe73c,0xdedb,0xdedb,0xe73c,0x632c,0x632c,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xbdf7,0x528a,0xce79,0x6b6d,0x9cf3,0xbdd7,0x31a6,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xd6ba,0xbdf7,0x4228,0x2965,0x31a6,0x2945,0x528a,0xc618,0xd6ba,0xdedb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x632c,0x0000,0x39c7,0x3186,0x2124,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xc638,0x4a69,0xce59,0x7bcf,0x9492,0xbdf7,0x4208,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0x9cd3,0x10a2,0x31a6,0x31a6,0x18c3,0x8430,0xd69a,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x6b4d,0xce79,0x632c,0xad55,0xad55,0x632c,0xce79,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xbdf7,0xdefb,0xdedb,0xdedb,0xd6ba,0x0000,0xa534,0xe71c,0xdedb,0xd69a,0x2965,0x2104,0xa534,0xb596,0x5acb,0xce79,0x632c,0xad75,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xd6ba,0xa514,0x18c3,0x31a6,0x31a6,0x10a2,0x7bef,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xb596,0xdefb,0xdedb,0xdedb,0xc638,0x4a49,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x0000,0x31a6,0x31a6,0x31a6,0x31a6,0x2124,0x52aa,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0000,0xd69a,0x5acb,0x8430,0xc618,0x0000,0x3186,0x0841,0xa514,0xdefb,0xb5b6,0x0000,0xad55,0xe71c,0xa514,0x0000,0x31a6,0x10a2,0xbdf7,0x94b2,0x4228,0xd6ba,0x0000,0xbdf7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xef5d,0xdedb,0xdedb,0xb596,0xc618,0xdefb,0xdedb,0xdedb,0xdefb,0xbdd7,0xbdd7,0xdefb,0xdedb,0xe71c,0x630c,0x2945,0x5aeb,0x0000,0x6b6d,0x0000,0x4208,0x5acb,0x0000,0x0000,0xbdf7,0xef7d,0xad75,0x0000,0x18c3,0xd69a,0xe71c,0xdedb,0xdedb,0xdedb,0xad55,0xa514,0xa534,0xa514,0xad75,0xdefb,0xdedb,0xdedb,0xdefb,0xbdf7,0x0000,0x5aeb,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x0861,0x630c,0xe71c,0xe73c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xbdd7,0xa534,0xa534,0xa534,0xa514,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0861,0x632c,0x0000,0x6b4d,0x0000,0x3186,0x630c,0x0000,0x0000,0xb5b6,0xef7d,0xbdd7,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xef5d,0x6b4d,0x0000,0x7bcf,0xef5d,0xdedb,0xdedb,0xdefb,0xce59,0x9cf3,0xa534,0xa534,0x9cf3,0xc618,0xe71c,0xdedb,0xdedb,0xe71c,0x8430,0x0000,0x0000,0x738e,0x0000,0x4a69,0x4a69,0x0000,0x738e,0x0000,0xad55,0xef7d,0xc618,0x0000,0x0000,0xc618,0xe73c,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xad75,0xce59,0xdedb,0xdedb,0xce79,0x0000,0x0000,0x4a49,0x52aa,0x0000,0x738e,0x0000,0x4a69,0x4a49,0x31a6,0xdedb,0xef5d,0x7bcf,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdefb,0xce79,0xa514,0xa534,0xa534,0xa514,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xbdd7,0xe73c,0xdedb,0xd6ba,0xad55,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xad75,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe73c,0xdedb,0xdefb,0xc638,0xa534,0xa534,0xa534,0xa534,0xa534,0xa514,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xd69a,0x18c3,0x0000,0xad75,0xef5d,0xce79,0xad55,0xd6ba,0xbdd7,0xc618,0xd69a,0xad55,0xa534,0xa514,0xc618,0xdefb,0xd6ba,0xad55,0xd6ba,0xdefb,0xc638,0xa534,0xa534,0xa514,0xce79,0xc638,0xb596,0xd6ba,0xad55,0xdefb,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xb5b6,0xe71c,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe73c,0xdefb,0xdefb,0xe71c,0xad75,0x8410,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8430,0x9492,0x8c71,0xd6ba,0xc618,0x738e,0x0000,0x1082,0x8c71,0xce79,0xe71c,0xdefb,0xdefb,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xdefb,0xdefb,0xdefb,0xe71c,0xd69a,0x8c71,0x8430,0x8410,0x8430,0x8430,0x8430,0x8430,0x8410,0x8430,0xad75,0xdefb,0xa514,0x39c7,0x0000,0x5acb,0xb596,0xe71c,0xdefb,0xe73c,0xef5d,0xe73c,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xb596,0x8410,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8430,0x9492,0x8c71,0xd69a,0xc638,0x7bcf,0x0000,0x0000,0x8430,0xce59,0xe71c,0xe71c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xd6ba,0x9492,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x8c51,0xad55,0xdefb,0xa534,0x4228,0x0000,0x4a69,0xad75,0xdefb,0xdefb,0xdefb,0xe71c,0xef5d,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xdefb,0xdefb,0xe73c,0xbdd7,0x8c51,0x8c71,0x8430,0x8c71,0x8c51,0x8c51,0x8c71,0x8430,0x8c51,0xce79,0xce79,0x8410,0x0000,0x0000,0x8410,0xc638,0xe71c,0xe71c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe71c,0xdefb,0xe71c,0xdedb,0x94b2,0x8c71,0x8c51,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8410,0xa514,0xdefb,0xad75,0x4a69,0x0000,0x4228,0xa534,0xdedb,0xe71c,0xdefb,0xe71c,0xef5d,0xe73c,0xe73c,0xef5d,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce59,0x8430,0x0000,0x0000,0x7bcf,0xc618,0xe71c,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xb596,0x5acb,0x0000,0x39e7,0xa514,0xdedb,0xe71c,0xe71c,0xef5d,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce79,0x8c71,0x1082,0x0000,0x738e,0xbdf7,0xe73c,0xe73c,0xdefb,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xe71c,0xe73c,0xe71c,0xdefb,0xe71c,0xef5d,0xe73c,0xef5d,0xe71c,0xe71c,0xe73c,0xdefb,0xef5d,0xbdd7,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0xc638,0x630c,0x0000,0x0861,0x0000,0x0000,0x9492,0xc618,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xad75,0x0000,0x0000,0x1082,0x0000,0x2965,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc618,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0x738e,0x0000,0x0861,0x0020,0x0000,0x8430,0xc618,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xc638,0xb5b6,0x0000,0x0000,0x1082,0x0000,0x10a2,0xb5b6,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xc618,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0x7bef,0x0000,0x0841,0x0841,0x0000,0x7bef,0xc618,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xc638,0xbdd7,0x10a2,0x0000,0x1082,0x0000,0x0000,0xb5b6,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0x8c51,0x0000,0x0020,0x0861,0x0000,0x6b6d,0xc638,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0x3186,0x0000,0x1082,0x0000,0x0000,0xad75,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0x94b2,0x0000,0x0000,0x0861,0x0000,0x630c,0xc638,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0x4228,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x10a2,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x10a2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x2124,0x1082,0x0000,0x0000,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x10a2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x5aeb,0xd69a,0x1082,0x0000,0x9492,0xdefb,0xc638,0x0000,0x0000,0x0000,0x7bef,0xc638,0x0000,0x0000,0x0000,0x8430,0xe71c,0xce79,0x18c3,0xad55,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0x9cf3,0x0000,0x2965,0xc638,0xdefb,0x8430,0x0000,0x0000,0x0000,0xc638,0x7bef,0x0000,0x0000,0x0000,0xce79,0x6b6d,0x0000,0x0000,0x0861,0xce79,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xd6ba,0x3186,0x0000,0x8430,0xdedb,0xce79,0x0861,0x0000,0x0000,0x6b6d,0xce79,0x0000,0x0000,0xa514,0xdedb,0xd69a,0xd69a,0x2945,0xa514,0xdefb,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe71c,0xbdf7,0x0000,0x0000,0xb5b6,0xa514,0x0000,0x2965,0xc638,0xdefb,0x8430,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0xd6ba,0x4a49,0x0000,0x7bcf,0xdedb,0xd69a,0x2965,0x0000,0x0000,0x52aa,0xdedb,0xdedb,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9492,0xe71c,0xc638,0x18c3,0x0000,0xad55,0xad55,0x0000,0x10a2,0xbdf7,0xe71c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xce59,0x10a2,0xb5b6,0x8c71,0x0000,0x3186,0xd6ba,0x4a49,0x0000,0x8410,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x0000,0x0000,0xad75,0xd6ba,0xdedb,0xc638,0x0000,0xb5b6,0xe71c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0xce79,0x2945,0xad75,0x9cf3,0x0000,0x0861,0xce59,0xe71c,0x7bef,0x5acb,0xd6ba,0xd6ba,0x4228,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xad55,0x5aeb,0xb5b6,0x39e7,0x9cf3,0xc618,0x630c,0xc618,0x39e7,0x8c51,0xa514,0x7bef,0xc618,0x2945,0xa514,0xa514,0x52aa,0x6b4d,0x0000,0xc618,0xad75,0x8410,0xad75,0x10a2,0x0000,0x0000,0x0000,0x0000,0x10a2,0xad75,0x7bcf,0x8c71,0x9cf3,0x2104,0xd6ba,0x7bef,0x9cd3,0xa514,0x2104,0xb5b6,0x7bcf,0xad55,0x94b2,0x3186,0xb5b6,0x738e,0xb596,0x8430,0x4a49,0xc618,0x632c,0x6b6d,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xb575,0x5aeb,0xb596,0x4a69,0x8c71,0xce79,0x5aeb,0xc618,0x4a69,0x7bef,0xad55,0x73ae,0xc618,0x4228,0x39c7,0xad55,0xd69a,0x6b4d,0x0000,0xbdd7,0xb5b6,0x7bcf,0xb596,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x8c71,0x5acb,0x630c,0x1082,0xad75,0x9492,0x31a6,0x0000,0x31a6,0xd6ba,0x8c71,0x9cd3,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xb596,0x5aeb,0xad75,0x5aeb,0x7bef,0xd69a,0x5acb,0xbdf7,0x5acb,0x7bcf,0xb5b6,0x52aa,0x738e,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0x9cd3,0x5acb,0x632c,0x0000,0xa534,0x8c71,0x8c71,0xa534,0x0861,0xd69a,0x8c51,0x9492,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdedb,0x18c3,0xc638,0x9492,0x4a69,0xb596,0x5aeb,0xad75,0x5aeb,0x8410,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xa534,0x0000,0x0000,0x0000,0xc638,0xad55,0x52aa,0x632c,0x0000,0xce59,0xa514,0x8c51,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2965,0xbdd7,0x9cf3,0x4228,0xc618,0x632c,0x6b6d,0x3186,0x73ae,0xdedb,0x5aeb,0xbdd7,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xdedb,0x9cd3,0xe71c,0x52aa,0x94b2,0xd69a,0x9492,0x9492,0x0841,0xb596,0xad75,0x0000,0x9492,0x18e3,0x7bcf,0xa534,0x7bcf,0x0000,0x0000,0xc638,0x8430,0x630c,0xdedb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xad75,0xbdf7,0xc618,0x10a2,0xd69a,0xad75,0x94b2,0x6b6d,0x39e7,0xe71c,0x4208,0x632c,0x6b6d,0x528a,0xdefb,0x2124,0x738e,0x632c,0x39c7,0x9cf3,0x9cf3,0x18c3,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x8c51,0xdefb,0x94b2,0xe71c,0x6b4d,0x8430,0xd6ba,0x9492,0x94b2,0x18e3,0xa534,0xbdf7,0x0000,0x9492,0x39e7,0x0000,0x8410,0xce59,0x0000,0x0000,0xbdf7,0x94b2,0x4a69,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xa514,0x632c,0x0000,0x18e3,0xdedb,0x6b4d,0x4a69,0x8430,0x2124,0xd6ba,0x4228,0x9cf3,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xe71c,0x94b2,0xdefb,0x7bcf,0x73ae,0xdedb,0x94b2,0x94b2,0x39e7,0x5aeb,0xa514,0x8c71,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xa534,0x738e,0x0000,0x0000,0xd6ba,0x6b6d,0x6b6d,0xd69a,0x0020,0xce79,0xb596,0x9492,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xbdf7,0x8c51,0x6b4d,0xe71c,0x94b2,0xdefb,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0xbdf7,0xc638,0x6b6d,0x0000,0x0000,0xce79,0x738e,0x73ae,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2965,0xb5b6,0x9cf3,0x2945,0x9cf3,0x9cf3,0x18c3,0x0000,0x7bcf,0xdedb,0x9cd3,0x94b2,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xdefb,0xbdf7,0xdefb,0x528a,0x9492,0xdefb,0xb596,0x5aeb,0x0000,0xb596,0xad75,0x0000,0x630c,0x2124,0x0000,0x738e,0xb5b6,0x6b4d,0x0000,0xc618,0x8c51,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce59,0xce59,0xd69a,0xbdd7,0x18c3,0xd69a,0xce79,0x9492,0x2965,0x4208,0xdefb,0x4a69,0x39e7,0x4208,0x52aa,0xdefb,0x39c7,0x4a49,0x4a69,0x0000,0x0000,0xb5b6,0x9492,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdefb,0xbdf7,0xdefb,0x630c,0x8410,0xdefb,0xb5b6,0x632c,0x0000,0xa534,0xbdd7,0x0000,0x630c,0x2945,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdd7,0x9cd3,0x52aa,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8c51,0xad75,0x5aeb,0x10a2,0xd6ba,0x630c,0x9492,0xce79,0x10a2,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdefb,0xbdf7,0xdefb,0x738e,0x738e,0xdefb,0xb5b6,0x738e,0x3186,0x0000,0x39e7,0xbdd7,0x7bef,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x7bef,0xb596,0x632c,0x0000,0xce59,0x9cf3,0x9cf3,0xc638,0x0020,0xce59,0xd69a,0x94b2,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x738e,0xce79,0x8c51,0x630c,0xdefb,0xbdf7,0xdefb,0x738e,0x7bcf,0xce59,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0xbdf7,0xd6ba,0x9492,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2104,0xb5b6,0xa534,0x0000,0x0000,0xb5b6,0x9492,0x2965,0x6b6d,0xdefb,0xc618,0x73ae,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xbdf7,0x0000,0xd6ba,0x52aa,0x9cf3,0xb596,0x0861,0xe71c,0x4a49,0x9cf3,0xa534,0x5aeb,0xd69a,0x4208,0x2945,0x2104,0x6b6d,0xd69a,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x5aeb,0x8430,0xc618,0x18c3,0xd6ba,0x4228,0x9cf3,0xbdf7,0x2124,0xce59,0x5acb,0xad75,0xa534,0x39c7,0xce59,0x4a69,0xb5b6,0x9cf3,0x0000,0x4208,0x1082,0xc618,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xdefb,0x5aeb,0x8c71,0xb596,0x528a,0xd69a,0x52aa,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdd7,0x9cd3,0x52aa,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x0861,0x8c51,0xc638,0x0000,0xc618,0x73ae,0x8c71,0xb5b6,0x18e3,0xd6ba,0x52aa,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce79,0x2945,0xce79,0x73ae,0x0000,0x31a6,0x39e7,0xd69a,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x18c3,0x7bcf,0xce79,0x0841,0xb596,0xdefb,0xe73c,0xbdf7,0x0841,0xd69a,0x5aeb,0x8c51,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xd69a,0xe71c,0xdedb,0x73ae,0x6b4d,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce79,0x39c7,0x4208,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad75,0x2124,0x39e7,0x0000,0xc638,0x9cd3,0x0000,0x39c7,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x528a,0xbdf7,0xa514,0x0000,0x4208,0x1082,0xc618,0x8430,0x6b4d,0xd69a,0x0000,0xd69a,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xc638,0x18c3,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdedb,0x5acb,0x0000,0x8c51,0xce79,0x10a2,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xc638,0x8c71,0x6b4d,0xd6ba,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x6b4d,0x8c71,0xc638,0x18c3,0xdedb,0x52aa,0x9cf3,0xbdf7,0x0000,0x1082,0xce79,0x8c51,0x0000,0x0000,0x2945,0xd69a,0x7bef,0x0000,0x630c,0xdefb,0xdefb,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0020,0xd6ba,0x6b4d,0x8c71,0xc638,0x18c3,0xdedb,0x6b4d,0x0000,0x7bef,0xd69a,0x2945,0x0000,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdf7,0x9cf3,0x52aa,0xdedb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xdedb,0x52aa,0x9cf3,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x7bef,0x738e,0xe73c,0xd6ba,0x4a69,0x0000,0x8c71,0xe73c,0xd69a,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xb596,0x0000,0x0000,0x0000,0xad55,0xef5d,0xc618,0x0841,0xd6ba,0x6b4d,0x8c71,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xdedb,0x738e,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x7bef,0x738e,0xe73c,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xce79,0x18c3,0xbdd7,0xe71c,0xdedb,0xce59,0x0020,0xce79,0x7bef,0x7bef,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xdedb,0xe73c,0x9492,0x4a69,0xdefb,0xdefb,0x6b4d,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x4a69,0x0841,0x52aa,0x2104,0x39e7,0x4a49,0x1082,0x5acb,0x2124,0x0000,0x31a6,0x52aa,0x0000,0x0000,0x4a49,0x630c,0x4a69,0x0000,0x0000,0x528a,0x39c7,0x2945,0x52aa,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x52aa,0x2945,0x39c7,0x4a69,0x0841,0x52aa,0x2104,0x39e7,0x4a69,0x0000,0x0000,0x52aa,0x31a6,0x0000,0x0000,0x0000,0x5acb,0x2965,0x0000,0x2945,0x5aeb,0x5aeb,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x31a6,0x528a,0x0000,0x52aa,0x2945,0x39c7,0x4a69,0x0841,0x52aa,0x2945,0x0000,0x2965,0x5acb,0x0000,0x0000,0x0000,0x31a6,0x528a,0x0000,0x0000,0x4a69,0x39e7,0x2104,0x52aa,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x630c,0x4228,0x0000,0x0000,0x0000,0x4a69,0x4208,0x0000,0x10a2,0x52aa,0x2104,0x39e7,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x52aa,0x0000,0x528a,0x3186,0x2965,0x5aeb,0x5acb,0x1082,0x0000,0x39e7,0x630c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x630c,0x4a49,0x0000,0x0000,0x0000,0x4208,0x5aeb,0x4a69,0x0000,0x52aa,0x2945,0x39c7,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x2124,0x0000,0x3186,0x52aa,0x0000,0x528a,0x3186,0x2965,0x5aeb,0x5acb,0x5aeb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x5aeb,0x5aeb,0x5acb,0x0841,0x4a49,0x5aeb,0x5aeb,0x52aa,0x0000,0x528a,0x3186,0x3186,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x5acb,0x5aeb,0x5aeb,0x39c7,0x2104,0x5aeb,0x5aeb,0x2124,0x0000,0x3186,0x52aa,0x0000,0x528a,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x10a2,0x0861,0x0000,0x0841,0x10a2,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0020,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0861,0x10a2,0x10a2,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x10a2,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x0841,0x0000,0x0841,0x10a2,0x10a2,0x10a2,0x0841,0x0861,0x10a2,0x0000,0x10a2,0x0841,0x0861,0x10a2,0x10a2,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0861,0x0861,0x10a2,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x10a2,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x1082,0x10a2,0x10a2,0x10a2,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0841,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x0000,0x0000,0xbdf7,0x8c51,0x0000,0x4208,0xc638,0xdedb,0x738e,0x0000,0x528a,0xce59,0x2945,0xad55,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0xd69a,0x2945,0x0000,0x8c71,0xb5b6,0x0000,0x0000,0x0000,0x8c71,0xd6ba,0xd69a,0xd69a,0x528a,0x0000,0x7bcf,0xc638,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0xa534,0xa534,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x2965,0xc618,0xdefb,0x8410,0x0000,0x4208,0xce79,0xce59,0xd6ba,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xd69a,0x4208,0x0000,0x7bef,0xbdf7,0x0000,0x0000,0x0861,0x0000,0x528a,0xd6ba,0xd6ba,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x8c71,0xdefb,0xc618,0x18c3,0x0000,0xa534,0xa534,0x0000,0x18c3,0xbdd7,0xdefb,0x8c71,0x0000,0x0000,0x0000,0xbdf7,0x8c51,0x0000,0x4208,0xce59,0x528a,0x0000,0x7bef,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xce79,0xd6ba,0x528a,0x0000,0x6b4d,0xd69a,0xd69a,0xdedb,0x6b6d,0x738e,0xbdd7,0x0020,0xc618,0x5aeb,0x7bef,0xdedb,0xce59,0xd6ba,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0x0000,0x9cd3,0xb596,0x0000,0x0000,0xbdf7,0x738e,0x738e,0xbdf7,0x0000,0x0000,0xa534,0xe71c,0xb596,0x10a2,0xc618,0xd69a,0xdedb,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xdedb,0xbdd7,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0xad55,0xd69a,0xd6ba,0xc618,0x18c3,0x0000,0xa534,0xa534,0x0000,0x18c3,0xc618,0x630c,0x8410,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0xa534,0x8c51,0x9cf3,0xa514,0x1082,0xad55,0x8430,0x9cf3,0x8c71,0x31a6,0xdefb,0x8410,0xa514,0x8c51,0x4a69,0xe73c,0x0000,0xbdf7,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xad75,0x7bcf,0xbdd7,0x528a,0x9492,0xce59,0x0000,0x0000,0x0000,0xa534,0xce59,0x630c,0x7bcf,0x1082,0x8430,0x9cf3,0x73ae,0xad75,0x10a2,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0x9492,0x94b2,0xad55,0x0000,0xa534,0x8c71,0x94b2,0x94b2,0x2124,0xdedb,0x94b2,0x9cd3,0x8c71,0x0000,0x73ae,0xd6ba,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xad75,0x7bcf,0xbdb6,0x630c,0x8410,0xce79,0x0000,0x0000,0x0000,0x7bef,0xb596,0x632c,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0x9cd3,0x6b4d,0x738e,0x0000,0x9cf3,0x9492,0x94b2,0xad55,0x0861,0xd69a,0x94b2,0x9492,0xa514,0x1082,0xad55,0x8430,0x9cf3,0x8c71,0x39c7,0xdefb,0x5acb,0x0000,0x8c51,0xd69a,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0xad55,0x632c,0x6b6d,0xdedb,0x6b6d,0x7bcf,0x2945,0x8c71,0xd6ba,0x0000,0xdefb,0x7bef,0x2945,0x9cf3,0xdedb,0x8430,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x18c3,0x94b2,0x8c71,0x8410,0xa534,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0000,0xb596,0x8c51,0x6b6d,0x632c,0x2945,0xdedb,0x9492,0x6b6d,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xbdf7,0x738e,0xbdd7,0x18e3,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x0841,0xc618,0xad75,0x632c,0x738e,0x0000,0xa514,0x8430,0x8430,0x9cf3,0x1082,0xd6ba,0x5acb,0x8c71,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b4d,0x528a,0x8c51,0x2945,0xdefb,0x4a49,0x9cd3,0xbdf7,0x2945,0xd6ba,0x9cd3,0x9cf3,0x7bcf,0x2945,0x9cd3,0x8c71,0x9cf3,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xd69a,0x0000,0x94b2,0x4208,0x9492,0xc638,0x0000,0x0000,0x0000,0x9cf3,0xce79,0x73ae,0x0000,0x0000,0xb596,0xce59,0x94b2,0xdefb,0x3186,0xb596,0xc618,0x8c51,0x94b2,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bef,0x39e7,0x9492,0x1082,0xdedb,0x630c,0x8c51,0xce59,0x18c3,0xd6ba,0x4208,0x9cf3,0xc618,0x0000,0x0000,0xce59,0x8410,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0x8c71,0x528a,0x8410,0xce79,0x0000,0x0000,0x0000,0x6b6d,0xad55,0x8410,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xa514,0x630c,0x0000,0x0000,0xd6ba,0x7bef,0x39e7,0x9492,0x1082,0xce79,0xad55,0x9492,0x8410,0x2945,0xdefb,0x4a49,0x9cd3,0xbdf7,0x2945,0xdedb,0x5acb,0x0000,0x8c51,0xce79,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xc638,0x9492,0x630c,0xdedb,0x8c71,0x1082,0x0000,0x52aa,0x9cd3,0x94b2,0x94b2,0x4a69,0x0000,0x5aeb,0xd6ba,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xbdf7,0x8c51,0x9cf3,0x0000,0xc638,0xbdd7,0xa534,0xd6ba,0x0841,0xce59,0x7bcf,0x7bcf,0xce59,0x0000,0x9cd3,0x9cf3,0x4a69,0x0000,0x31a6,0xd69a,0xad55,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad55,0xc638,0x8430,0x9cd3,0x0000,0xb596,0xc618,0x8c51,0x94b2,0x0000,0xbdf7,0xbdf7,0x630c,0x0000,0x0000,0xce79,0xb596,0xb596,0xce79,0x0000,0xce79,0xb596,0x9492,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x73ae,0x1082,0x4228,0x2965,0xdedb,0x528a,0x9cd3,0xbdd7,0x2945,0xd6ba,0xd69a,0x632c,0x0000,0x0000,0x0000,0xdedb,0x738e,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0000,0x4a69,0x0000,0x94b2,0xc618,0x0000,0x0000,0x0000,0x9cd3,0xdefb,0xb596,0x0000,0x0000,0xa534,0xdedb,0xce59,0xd6ba,0x2945,0xad75,0xdefb,0xad75,0x4208,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8430,0x0000,0x4a69,0x18c3,0xd6ba,0x632c,0x8c51,0xc638,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x0000,0x4a49,0x0020,0x8430,0xce59,0x0000,0x0000,0x0020,0x0000,0x4228,0xc618,0x738e,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8430,0xb5b6,0x52aa,0x0000,0xce79,0x8430,0x0000,0x4a69,0x10a2,0xce59,0xd6ba,0x94b2,0x2124,0x2965,0xdedb,0x528a,0x9cd3,0xbdd7,0x2965,0xdedb,0x528a,0x0000,0x8c51,0xce59,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x630c,0xdefb,0xc638,0x4228,0x0000,0x2104,0x738e,0xc638,0x632c,0x18e3,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdefb,0xa514,0x0000,0x0000,0xbdd7,0xd69a,0xce79,0xce59,0x0020,0xce59,0x73ae,0x73ae,0xce79,0x0000,0x0000,0x9cf3,0xad55,0x4228,0x2965,0xd69a,0xd69a,0x7bcf,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xdefb,0xb596,0x528a,0x0000,0xb596,0xdefb,0xad75,0x4208,0x0000,0xbdd7,0xdedb,0x9cd3,0x0000,0x0000,0xc618,0xd69a,0xd69a,0xc618,0x0020,0xce59,0xd6ba,0x94b2,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce59,0x6b6d,0x9492,0xbdf7,0x10a2,0xce79,0x630c,0x9cd3,0xad75,0x3186,0xdedb,0x4a69,0x0000,0x0841,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xc638,0x3186,0xd69a,0x632c,0x8c51,0xc638,0x18e3,0x3186,0x0000,0xa514,0xbdf7,0x0000,0x3186,0x0000,0xb596,0xa534,0x3186,0xdedb,0x2965,0xb5b6,0x94b2,0x4a69,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x7bef,0x8410,0xc638,0x0020,0xce59,0x6b6d,0x8c71,0xbdd7,0x18e3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0x3186,0xce59,0x7bcf,0x7bcf,0xce79,0x2945,0x3186,0x10a2,0x18e3,0x2124,0x39c7,0xd6ba,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x0000,0x7bcf,0xce79,0x0841,0xc618,0x7bef,0x8410,0xc638,0x0841,0xd69a,0x5aeb,0x8c51,0xc638,0x10a2,0xce79,0x630c,0x9cd3,0xad75,0x2965,0xdedb,0x632c,0x0000,0x8430,0xce79,0x2945,0x0841,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x2124,0x2945,0x0000,0x8c51,0xce79,0x0000,0xd6ba,0x7bef,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0xc638,0x8430,0x630c,0xd69a,0x0841,0xce59,0x8410,0x8410,0xce59,0x0000,0x2965,0x0000,0x94b2,0xbdf7,0x18c3,0xd6ba,0x6b6d,0x0000,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xad55,0x4228,0xd6ba,0x2965,0xb5b6,0x94b2,0x4a69,0xdefb,0x18e3,0xc618,0x9cd3,0x0000,0x2965,0x0000,0xce79,0x73ae,0x73ae,0xce59,0x0841,0xd69a,0x5aeb,0x8c51,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x18c3,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x9492,0xe73c,0xd6ba,0xdefb,0x4a69,0x94b2,0xe73c,0xd6ba,0xdedb,0x39c7,0xad75,0xad75,0x4208,0xdefb,0x2965,0xbdd7,0x9cf3,0x52aa,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xdefb,0x52aa,0x9cf3,0xbdf7,0x0000,0x0000,0xd69a,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x632c,0x0000,0x8410,0xe73c,0xd6ba,0xdefb,0x5aeb,0x8410,0xe71c,0xce79,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xe73c,0xb596,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x10a2,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0xe71c,0x6b6d,0x73ae,0xef5d,0xd69a,0x4208,0x0000,0x0000,0x6b6d,0xdefb,0x18c3,0xc638,0x8c71,0x632c,0xe73c,0xd6ba,0xdefb,0x6b6d,0x7bef,0xce79,0x0020,0xd6ba,0x7bef,0x0000,0x6b6d,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0xce59,0x8c71,0x6b4d,0xd6ba,0x0841,0xc638,0xdefb,0xdefb,0xc638,0x0000,0xc638,0xe71c,0x9cf3,0x0000,0x3186,0xd6ba,0xdedb,0xdefb,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xc618,0x2945,0x0000,0xbdf7,0x9cf3,0x52aa,0xdefb,0x18c3,0xbdd7,0xe71c,0xdedb,0xc638,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0841,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x4a49,0x2965,0x0000,0x0000,0x0000,0x4228,0x2124,0x0000,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x52aa,0x0000,0x0000,0x18e3,0x52aa,0x52aa,0x52aa,0x0000,0x18e3,0x52aa,0x52aa,0x52aa,0x0000,0x3186,0x3186,0x0000,0x4a69,0x0000,0x39c7,0x2945,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x4228,0x31a6,0x0000,0x0000,0x0000,0x4208,0x3186,0x0000,0x0000,0x4a69,0x0000,0x2945,0x39e7,0x0000,0x0000,0x4228,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0841,0x52aa,0x0000,0x0000,0x1082,0x52aa,0x52aa,0x5acb,0x0000,0x18c3,0x5acb,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x632c,0x31a6,0x0000,0x0000,0x0000,0x39c7,0x39c7,0x0000,0x0000,0x4a49,0x0000,0x18e3,0x4208,0x0000,0x0000,0x4228,0x2124,0x0000,0x0000,0x4a69,0x5acb,0x0000,0x0000,0x52aa,0x528a,0x18c3,0x0000,0x0000,0x3186,0x630c,0x0000,0x4208,0x18e3,0x0000,0x52aa,0x52aa,0x5acb,0x0000,0x0020,0x4228,0x0000,0x4a49,0x0020,0x0000,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x52aa,0x39e7,0x0000,0x0000,0x0000,0x4208,0x18e3,0x0000,0x4a49,0x0000,0x4208,0x52aa,0x52aa,0x4208,0x0000,0x4a49,0x5aeb,0x2945,0x0000,0x0000,0x4a49,0x52aa,0x5acb,0x39c7,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x4a69,0x632c,0x4228,0x0000,0x0000,0x39e7,0x2945,0x0000,0x4a69,0x0000,0x39c7,0x52aa,0x52aa,0x4a49,0x0000,0x4228,0x0841,0x0841,0x4228,0x0000,0x4a49,0x0000,0x18e3,0x4208,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x31a6,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x4a69,0x0000,0x0861,0x0000,0x0000,0x6b6d,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c71,0x0000,0x0000,0x0861,0x0000,0x18e3,0x9492,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0xa514,0x5acb,0x0000,0x0861,0x0020,0x0000,0x632c,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x94b2,0x9492,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9d14,0x9d34,0x9d14,0x9cd3,0x9492,0x0000,0x0000,0x0861,0x0000,0x0000,0x8c71,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x9492,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9d34,0xa534,0x632c,0x0000,0x0841,0x0861,0x0000,0x52aa,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x94b2,0x9492,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x94d3,0x94d3,0x94d3,0x94d3,0x8c71,0x0000,0x0000,0x1082,0x0000,0x0000,0x9492,0x94b2,0x94b2,0x9cd3,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x9492,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9d34,0xa534,0x6b6d,0x0000,0x0020,0x1082,0x0000,0x528a,0xa514,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x9492,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x94d3,0x94b2,0x9492,0x9cd3,0x9cf3,0x2104,0x0000,0x0861,0x0000,0x0000,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x7bcf,0x0000,0x0000,0x1082,0x0000,0x39e7,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x9492,0x94b2,0x94b2,0x9492,0x9cd3,0x9492,0x9cf3,0x9514,0x94d3,0x9cd3,0x9cf3,0x31a6,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9cd3,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xad55,0x4a49,0x0000,0x0861,0x630c,0xc638,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xd6ba,0x7bcf,0x2945,0x0000,0x39c7,0x9492,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xef5d,0xb596,0x4a69,0x0000,0x0000,0x5acb,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xe575,0xe679,0xe75d,0xdefb,0x8410,0x2965,0x0000,0x31a6,0x8c51,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xeefb,0xbdf7,0x528a,0x0000,0x0000,0x528a,0xbdd7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xe6ba,0xe6ba,0xe5d7,0xe71c,0x8c51,0x31a6,0x0000,0x2965,0x8410,0xdefb,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe5d7,0xeeba,0xbe18,0x5acb,0x0000,0x0000,0x4a69,0xb596,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe5f7,0xe679,0xe75d,0xe71c,0xe73c,0x9492,0x39c7,0x0000,0x2945,0x7bcf,0xd6ba,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xc638,0x630c,0x0861,0x0000,0x4a49,0xad55,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe75d,0xe638,0xe575,0xe618,0xe75d,0xe73c,0x9cd3,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xad75,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xde9a,0xdedb,0xdedb,0xe71c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xdeba,0xdedb,0xe73c,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd26a,0xd000,0xd430,0xdeba,0xdedb,0xe73c,0x6b4d,0x0000,0x73ae,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd000,0xd534,0xe77d,0xc618,0x0000,0x0000,0xc618,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd26a,0xd4f4,0xd4f4,0xd26a,0xdedb,0xef5d,0x73ae,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xd208,0xd514,0xe75d,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2cb,0xd430,0xdeba,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd38e,0xd000,0xd30c,0xde79,0xdeba,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd24a,0xd472,0xdf1c,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd5b6,0xd023,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xdf1c,0xd472,0xd24a,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd0c4,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd38e,0xdf1c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd001,0xddf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd146,0xd555,0xdf3c,0xd596,0xd043,0xde9a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xde9a,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd3cf,0xde79,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd26a,0xddb6,0xdeba,0xdf1c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd32d,0xd000,0xd000,0xd34d,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdd76,0xd208,0xde59,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd514,0xd229,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd166,0xd000,0xd000,0xd4d3,0xdefb,0xde18,0xdeba,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdf1b,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xdefb,0xdefb,0xdedb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd451,0xd555,0xdefb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde59,0xd3af,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddb6,0xde18,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde38,0xd000,0xde59,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddf7,0xd209,0xd209,0xddf7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b2,0xd38e,0xde9a,0xdf1c,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd575,0xd3ae,0xd555,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xd38e,0xde18,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd555,0xd0a4,0xd3f0,0xde59,0xdf5c,0xdf3c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdf1c,0xdd75,0xd492,0xd596,0xdeba,0xd514,0xde9a,0xddb6,0xddb6,0xde9a,0xd514,0xdeba,0xddb6,0xd4d3,0xd4b3,0xd4f4,0xdeba,0xd575,0xd4d3,0xd4f3,0xd514,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd431,0xd555,0xdefb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf8,0xd431,0xd3cf,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdd96,0xddd7,0xdefb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd472,0xd410,0xde79,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdd96,0xd451,0xd451,0xdd96,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdeba,0xd3ae,0xd451,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdd75,0xd3af,0xd4d3,0xdf3c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd492,0xd36e,0xde18,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd514,0xd000,0xd3f0,0xd535,0xd4b3,0xd4f4,0xdeba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdeba,0xde18,0xd34d,0xd043,0xd431,0xde79,0xd000,0xde59,0xd36e,0xd36e,0xde59,0xd000,0xde9a,0xd34d,0xd000,0xd1e8,0xd26a,0xdeba,0xd3cf,0xd000,0xd000,0xd2ec,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4b3,0xd34d,0xdf3c,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1b,0xd38e,0xd451,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd514,0xd2cb,0xdf3c,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ab,0xddb6,0xddb6,0xd2ab,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd2cb,0xd514,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd514,0xdf5d,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd209,0xdedb,0xdefb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd1a7,0xd28a,0xd229,0xd1c8,0xd1a7,0xd26a,0xde9a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xde9a,0xd063,0xddb6,0xdf1c,0xdefb,0xde59,0xd001,0xde38,0xd3ae,0xd3cf,0xde59,0xd001,0xde9a,0xd32d,0xd3f0,0xdf1c,0xdefb,0xdedb,0xdf3c,0xd410,0xd2ec,0xdf3c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xde9a,0xd26a,0xd4d3,0xdf7d,0xde59,0xd003,0xd063,0xd000,0xd431,0xde59,0xd001,0xde9a,0xd3af,0xd000,0xd34d,0xdefb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdf3c,0xde59,0xd3f0,0xd451,0xde79,0xd002,0xd514,0xd2cb,0xd3ef,0xde59,0xd001,0xde9a,0xd34d,0xd2cb,0xde18,0xdedb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc618,0x528a,0x5acb,0x5aeb,0x5acb,0x630c,0x6b6d,0x5acb,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x8410,0x9cf3,0xef5d,0xdedb,0xdedb,0xef5d,0x9cf3,0x8410,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdefb,0xe71c,0x738e,0x52aa,0x5aeb,0x52aa,0x6b4d,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0x94b2,0x94b2,0xdefb,0xdedb,0xdedb,0xdefb,0xad55,0x8430,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xce79,0x738e,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0xd6ba,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0x9cf3,0x9492,0xe73c,0xdedb,0xdedb,0xdefb,0xb596,0x7bef,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x738e,0xce59,0xe71c,0xd6ba,0xdedb,0xe73c,0x8410,0xb596,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xe71c,0xe71c,0xdedb,0xdefb,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xdeba,0xd472,0xd492,0xd430,0xd535,0xde79,0xd000,0xde9a,0xd3af,0xd36e,0xde59,0xd000,0xde9a,0xd2cb,0xd3f0,0xdf5d,0xdedb,0xdedb,0xdf1c,0xd3cf,0xd28a,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc638,0x8410,0x8430,0x8430,0x9492,0x6b4d,0x0000,0x8410,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xa514,0x7bcf,0xa534,0xe71c,0xe71c,0xa534,0x7bcf,0xa514,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x94b2,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b4d,0xe71c,0xdedb,0xdedb,0xe71c,0x8c51,0x39e7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0x7bef,0x94b2,0x9492,0x9492,0x9492,0x8430,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x9cf3,0xdefb,0xdedb,0xe71c,0x9cd3,0x2124,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0x632c,0xc618,0xef5d,0xd6ba,0x8c71,0x0000,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xd69a,0x8c51,0x8430,0xce59,0xc618,0x8c51,0x9492,0xdedb,0xdedb,0xe71c,0xc638,0x9492,0xdefb,0xdedb,0xe71c,0xbdf7,0x94b2,0xe71c,0xdefb,0xad75,0x8c51,0x8c51,0x9492,0xd6ba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xde9a,0xd2ec,0xd187,0xd575,0xdf5d,0xde79,0xd32d,0xde79,0xd4b3,0xd4b3,0xde79,0xd32d,0xde9a,0xd471,0xd4d3,0xdf1c,0xdedb,0xdedb,0xdf1c,0xd4d3,0xd431,0xdefb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xef5d,0xd6ba,0x9cf3,0x73ae,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xef5d,0xad55,0x630c,0xbdd7,0xbdd7,0x630c,0xad55,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x5acb,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0861,0xa534,0xc618,0xbdf7,0xbdf7,0xbdf7,0x5aeb,0xb5b6,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x632c,0xb575,0xd6ba,0xe73c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2965,0x3186,0x8c71,0xbdd7,0xad55,0x5acb,0x0000,0xa514,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad55,0xd6ba,0xa514,0x5acb,0x4228,0xc618,0x9cd3,0x0000,0x632c,0xad55,0xd6ba,0xce79,0x94b2,0x630c,0xb596,0xd6ba,0xce59,0x8c71,0x630c,0xb5b6,0xdefb,0x630c,0x0000,0x5aeb,0x630c,0xd69a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0xdf1c,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdefb,0xdefb,0xdedb,0xdefb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x7bcf,0x6b6d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x18c3,0x1082,0x2104,0x18e3,0x18c3,0x2945,0xc638,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x6b6d,0xdedb,0x2104,0xb5b6,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x10a2,0xc638,0x9cf3,0x0000,0x4a69,0xdefb,0x4228,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad75,0xad55,0x4228,0xd6ba,0xdefb,0xe73c,0x9492,0x528a,0xd69a,0x2945,0xc618,0x8430,0x5aeb,0xce79,0x0000,0xce59,0x738e,0x73ae,0xd69a,0x2104,0xd69a,0x6b4d,0x7bef,0xe71c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x52aa,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b6d,0xe73c,0xdedb,0xdedb,0xe73c,0x9492,0x4228,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0841,0xbdd7,0xd6ba,0xd69a,0xd6ba,0xd69a,0x39c7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xd6ba,0x39e7,0xad75,0xad75,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xd69a,0xd6ba,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdd7,0x10a2,0xce79,0xef5d,0x9cd3,0x0000,0x31a6,0xce59,0xe71c,0x8c71,0x0000,0x0861,0x0000,0xce79,0x7bcf,0x738e,0xe71c,0xd6ba,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xdefb,0x632c,0xad55,0xdedb,0xe73c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xef5d,0xa534,0x5aeb,0xc618,0xc618,0x5aeb,0xa534,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x4a69,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xce79,0x8c71,0x632c,0xe73c,0xef5d,0x7bef,0x7bcf,0xce59,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xef5d,0xe73c,0xe73c,0xe71c,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xc638,0x7bef,0x0000,0x528a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xe71c,0xdedb,0xdedb,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x6b4d,0x4a49,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa514,0xe73c,0xe71c,0xc618,0x4a69,0xbdf7,0x9cf3,0x39e7,0xc618,0xdedb,0xe73c,0x8430,0x52aa,0xb596,0x0000,0xce59,0x6b6d,0x73ae,0xdedb,0x4a69,0xd69a,0x6b4d,0x738e,0xd6ba,0xe71c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc638,0x6b6d,0x0000,0x6b4d,0x8430,0x7bcf,0x7bcf,0x7bcf,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x9cd3,0x7bcf,0xad75,0xe71c,0xe71c,0xad75,0x7bcf,0x9cd3,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x9cf3,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x9492,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0xc638,0x8c51,0x7bcf,0x7bcf,0x8430,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0x632c,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x94b2,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x528a,0xe71c,0xdedb,0xe71c,0xbdf7,0x5acb,0x31a6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xdedb,0x2104,0x9cd3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x0000,0x0000,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad75,0xc618,0x738e,0x8430,0x8c71,0xd69a,0x8c71,0x4208,0xe73c,0xdedb,0xe71c,0x7bcf,0x630c,0xd6ba,0x0000,0xc618,0xbdf7,0x8c51,0x7bcf,0x9cd3,0xdedb,0x630c,0x31a6,0x8430,0x8410,0xd69a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdefb,0xc618,0x630c,0x7bcf,0x6b6d,0x632c,0x6b4d,0x632c,0x632c,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdefb,0x8c51,0xa514,0xef5d,0xdedb,0xdedb,0xef5d,0xa514,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xb596,0x0000,0x0000,0xc638,0xe71c,0xdedb,0xdefb,0xe71c,0x7bef,0x630c,0x6b4d,0x632c,0x73ae,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xe71c,0xd69a,0x632c,0x5acb,0xc618,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xce79,0x7bef,0x6b4d,0x632c,0x6b4d,0x632c,0x6b6d,0xd6ba,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdefb,0xa534,0x94b2,0xdefb,0xdedb,0xdedb,0xe73c,0xbdf7,0x8430,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xd69a,0x7bcf,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0x8430,0xb5b6,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x8410,0x6b4d,0xb596,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x18c3,0x0000,0xb596,0xc618,0x5acb,0x6b6d,0xd6ba,0xe73c,0xad55,0x8c71,0xdefb,0xdedb,0xdefb,0xa534,0x94b2,0xd6ba,0x7bcf,0xce59,0xef5d,0xb5b6,0x7bcf,0xe73c,0xdefb,0x9cf3,0x6b4d,0x630c,0x738e,0xd69a,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x94b2,0x0000,0x10a2,0xb5b6,0xd6ba,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce59,0x4a69,0x0000,0x73ae,0xd69a,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x9cf3,0x0000,0x0000,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x5acb,0x0000,0x632c,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xa534,0x0000,0x0000,0xa534,0xd6ba,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x632c,0x0000,0x5acb,0xce79,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xad75,0x0000,0x0000,0x9cf3,0xd6ba,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x73ae,0x0000,0x4a69,0xce59,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xb5b6,0x10a2,0x0000,0x9492,0xdedb,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xd69a,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x4208,0x0000,0x0000,0x0000,0x3186,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0x0000,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x2945,0x0000,0x0020,0x0000,0x0000,0x3186,0x528a,0x4a69,0x4a49,0x31a6,0x3186,0x4208,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x0000,0x0000,0x0861,0x0000,0x0000,0x31a6,0x3186,0x4228,0x4208,0x39c7,0x4a49,0x31a6,0x4a49,0x4208,0x3186,0x31a6,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x528a,0x2965,0x0000,0x0000,0x0000,0x0000,0x2104,0x4208,0x4a69,0x4a49,0x31a6,0x3186,0x3186,0x39c7,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x0020,0x0000,0x0000,0x0000,0x1082,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x31a6,0x0000,0x0000,0x0841,0x0000,0x2124,0x4a49,0x3186,0x3186,0x4a49,0x4a69,0x4208,0x31a6,0x4a69,0x31a6,0x4228,0x4208,0x3186,0x31a6,0x3186,0x4a49,0x4208,0x39c7,0x4a49,0x31a6,0x4a49,0x4a69,0x4208,0x31a6,0x4a49,0x1082,0x0000,0x0861,0x0000,0x0000,0x2965,0x4228,0x4a69,0x4a69,0x4a49,0x31a6,0x4a49,0x4a69,0x4208,0x3186,0x31a6,0x3186,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x39e7,0x4a69,0x4a69,0x39c7,0x3186,0x3186,0x31a6,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x18c3,0x0000,0x0000,0x0000,0x0000,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x39e7,0x0000,0x0000,0x0000,0x0000,0x2945,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x10a2,0xa534,0x5acb,0x0000,0x0000,0x0861,0x9cf3,0xbdd7,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xb596,0xb596,0xb5b6,0x4a49,0x632c,0x9492,0x0000,0xa514,0x31a6,0x6b4d,0xb5b6,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0020,0x0000,0x8c51,0x8c51,0x0000,0x0000,0xa534,0xad55,0xb575,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x9cd3,0x6b4d,0x39e7,0xad75,0xb596,0x18c3,0x0000,0x632c,0x9cd3,0x0000,0x9cf3,0x4228,0x5aeb,0xb596,0xb596,0xb5b6,0x39c7,0x738e,0x8c51,0x0000,0xa534,0x39c7,0x0000,0x632c,0x9cd3,0x0000,0x0000,0x0841,0x0000,0x4a69,0xb575,0xb5b6,0x31a6,0x0000,0x0000,0x0000,0xb596,0x2104,0x0000,0x632c,0xb5b6,0xa534,0xb5b6,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c51,0xbdd7,0x9492,0x0000,0x0000,0x94b2,0xad75,0xad55,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x7bef,0x0000,0x0000,0x3186,0xdedb,0xbdf7,0x9cd3,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xe71c,0xa514,0xad75,0x4208,0x9cd3,0xce79,0x0000,0xe73c,0x5aeb,0x9cd3,0xdedb,0x9cd3,0x9492,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0x9cf3,0x9cf3,0x73ae,0x0861,0x9cd3,0xdedb,0xd69a,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x9492,0x632c,0xe73c,0xad55,0x9492,0x3186,0x8c51,0xd69a,0x0000,0xdefb,0x738e,0x8c51,0xdefb,0x9cf3,0xad75,0x2965,0xad55,0xc618,0x18c3,0xe73c,0x5aeb,0x0000,0x8430,0xe71c,0x8c71,0x2945,0x0000,0x0000,0x6b4d,0xe73c,0xad75,0x94b2,0x4a69,0x39c7,0x9492,0xad55,0x94b2,0x39e7,0x5acb,0xbdf7,0xe71c,0xb5b6,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xd69a,0x9cd3,0x8c51,0x0020,0x8c51,0xd69a,0xdedb,0x9cd3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x3186,0xd6ba,0x39e7,0x9cf3,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xd69a,0x4228,0x0000,0x0000,0x8410,0xad75,0x632c,0xbdd7,0x4208,0x9cf3,0xbdf7,0x52aa,0xc638,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x9492,0x9492,0xd6ba,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0000,0xd69a,0x8410,0x73ae,0xd69a,0x630c,0xb5b6,0x528a,0x8c71,0xce59,0x39e7,0x0000,0x0000,0x8c71,0xad55,0x632c,0xbdf7,0x4228,0x2945,0x9cf3,0xdefb,0xc618,0x39e7,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xc638,0x9492,0x6b6d,0xdedb,0x0000,0xd69a,0x9492,0x0000,0x4208,0xdedb,0x2945,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad55,0x6b4d,0xc638,0x2965,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x3186,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xe71c,0xd6ba,0x4208,0x0000,0x0000,0x6b4d,0xd6ba,0x31a6,0x0000,0x9cd3,0xe73c,0xc638,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x738e,0xe71c,0xd6ba,0x4228,0x0000,0x8c71,0xe73c,0xce79,0x3186,0x0000,0x0000,0x73ae,0xd6ba,0x0000,0x0000,0xa514,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0020,0xce59,0x8c51,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xb5b6,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x738e,0x0000,0x0000,0x3186,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x10a2,0x0000,0x0000,0x8c71,0xbdd7,0x39e7,0xce59,0x4a69,0x9cd3,0xbdf7,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x8430,0x8430,0xce59,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x39c7,0xce59,0x630c,0x8c71,0xc638,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8430,0xe71c,0xd69a,0x4208,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b6d,0xd6ba,0x0000,0xce79,0x8c71,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad55,0x0000,0x0000,0x0020,0x0000,0xa514,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xd69a,0xc638,0xa514,0x2104,0xe71c,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xe73c,0xbdf7,0xc638,0x528a,0x94b2,0xce79,0x0000,0xe71c,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bef,0x7bef,0xd6ba,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x9492,0x6b6d,0xdedb,0x0841,0xd69a,0x8410,0x8410,0xd69a,0x0000,0xdefb,0x6b6d,0x8c51,0xe73c,0xbdf7,0xc638,0x5acb,0x0000,0x7bef,0xdefb,0x18c3,0x0000,0x8c71,0xdedb,0xd6ba,0x6b4d,0x2104,0x0000,0x0000,0x6b6d,0xe71c,0x18c3,0xce59,0x9cd3,0x0000,0x7bcf,0xc618,0x8410,0x31a6,0x0000,0x5aeb,0xe71c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xad55,0x0000,0x0000,0x0000,0xa514,0xdedb,0xdefb,0xb596,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x8430,0x9cd3,0xa514,0x8410,0x0861,0x8c71,0x39c7,0x6b4d,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x9cd3,0x9cd3,0xa514,0x4228,0x5aeb,0x8410,0x1082,0x8c71,0x39c7,0x6b4d,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x528a,0x528a,0x8c51,0x0000,0x0000,0x7bef,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x5aeb,0x4228,0x8c71,0x0020,0x8430,0x528a,0x528a,0x8430,0x0020,0x8c71,0x4228,0x52aa,0x9cd3,0x9cd3,0x9cf3,0x4228,0x0000,0x528a,0x8c71,0x1082,0x0000,0x73ae,0xa514,0x7bef,0x0000,0x0000,0x0020,0x0000,0x4228,0x8c71,0x1082,0x8410,0x632c,0x0000,0x1082,0x9cd3,0x2945,0x0000,0x0000,0x39c7,0x9492,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0x6b6d,0x0000,0x0000,0x0000,0x8430,0x9cd3,0x94b2,0x9492,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0x0000, +0x0000,0xc638,0xc618,0x8c71,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x8c71,0xc618,0xc638,0x0000, +0x0000,0x9cf3,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x9cf3,0x0000, +0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020}; diff --git a/MCUME_esp32/esp81/main/main.c b/MCUME_esp32/esp81/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/esp81/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/esp81/main/z80ops.h b/MCUME_esp32/esp81/main/z80ops.h new file mode 100755 index 0000000..e1dfa04 --- /dev/null +++ b/MCUME_esp32/esp81/main/z80ops.h @@ -0,0 +1,1305 @@ +/* Emulations of the Z80 CPU instruction set - part of xz80. + * Copyright (C) 1994 Ian Collier. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define instr(opcode,cycles) case opcode: {tstates+=cycles +#define HLinstr(opcode,cycles,morecycles) \ + case opcode: {unsigned short addr; \ + tstates+=cycles; \ + if(ixoriy==0)addr=hl; \ + else tstates+=morecycles, \ + addr=(ixoriy==1?ix:iy)+ \ + (signed char)fetch(pc),\ + pc++ +#define endinstr }; break + +#define cy (f&1) + +#define xh (ixoriy==0?h:ixoriy==1?(ix>>8):(iy>>8)) +#define xl (ixoriy==0?l:ixoriy==1?(ix&0xff):(iy&0xff)) + +#define setxh(x) (ixoriy==0?(h=(x)):ixoriy==1?(ix=(ix&0xff)|((x)<<8)):\ + (iy=(iy&0xff)|((x)<<8))) +#define setxl(x) (ixoriy==0?(l=(x)):ixoriy==1?(ix=(ix&0xff00)|(x)):\ + (iy=(iy&0xff00)|(x))) + +#define inc(var) /* 8-bit increment */ ( var++,\ + f=(f&1)|(var&0xa8)|\ + ((!(var&15))<<4)|((!var)<<6)|\ + ((var==128)<<2)\ + ) +#define dec(var) /* 8-bit decrement */ ( f=(f&1)|((!(var&15))<<4)|2,\ + --var,\ + f|=(var&0xa8)|((var==127)<<2)|\ + ((!var)<<6)\ + ) +#define swap(x,y) {unsigned char t=x; x=y; y=t;} +#define addhl(hi,lo) /* 16-bit add */ if(!ixoriy){\ + unsigned short t;\ + l=t=l+(lo);\ + f=(f&0xc4)|(((t>>=8)+(h&0x0f)+((hi)&0x0f)>15)<<4);\ + h=t+=h+(hi);\ + f|=(h&0x28)|(t>>8);\ + }\ + else do{unsigned long t=(ixoriy==1?ix:iy);\ + f=(f&0xc4)|(((t&0xfff)+((hi<<8)|lo)>0xfff)<<4);\ + t+=(hi<<8)|lo;\ + if(ixoriy==1)ix=t; else iy=t;\ + f|=((t>>8)&0x28)|(t>>16);\ + } while(0) +#define adda(x,c) /* 8-bit add */ do{unsigned short y;\ + unsigned char z=(x);\ + y=a+z+(c);\ + f=(y&0xa8)|(y>>8)|(((a&0x0f)+(z&0x0f)+(c)>15)<<4)|\ + (((~a^z)&0x80&(y^a))>>5);\ + f|=(!(a=y))<<6;\ + } while(0) +#define suba(x,c) /* 8-bit subtract */ do{unsigned short y;\ + unsigned char z=(x);\ + y=(a-z-(c))&0x1ff;\ + f=(y&0xa8)|(y>>8)|(((a&0x0f)<(z&0x0f)+(c))<<4)|\ + (((a^z)&0x80&(y^a))>>5)|2;\ + f|=(!(a=y))<<6;\ + } while(0) +#define cpa(x) /* 8-bit compare */ do{unsigned short y;\ + unsigned char z=(x);\ + y=(a-z)&0x1ff;\ + f=(y&0xa8)|(y>>8)|(((a&0x0f)<(z&0x0f))<<4)|\ + (((a^z)&0x80&(y^a))>>5)|2|((!y)<<6);\ + } while(0) +#define anda(x) /* logical and */ do{\ + a&=(x);\ + f=(a&0xa8)|((!a)<<6)|0x10|parity(a);\ + } while(0) +#define xora(x) /* logical xor */ do{\ + a^=(x);\ + f=(a&0xa8)|((!a)<<6)|parity(a);\ + } while(0) +#define ora(x) /* logical or */ do{\ + a|=(x);\ + f=(a&0xa8)|((!a)<<6)|parity(a);\ + } while(0) + +#define jr /* execute relative jump */ do{int j=(signed char)fetch(pc);\ + pc+=j+1;\ + tstates+=5;\ + } while(0) +#define jp /* execute jump */ (pc=fetch2(pc)) +#define call /* execute call */ do{\ + tstates+=7;\ + push2(pc+2);\ + jp;\ + } while(0) +#define ret /* execute return */ do{\ + tstates+=6;\ + pop2(pc);\ + } while(0) +#define pop2(var) /* pop 16-bit register */ (var=fetch2(sp),sp+=2) +#define pop1(v1,v2) /* pop register pair */ (v2=fetch(sp),\ + v1=fetch(sp+1),sp+=2) +#define push2(val) /* push 16-bit register */ do{sp-=2;store2(sp,(val));}\ + while(0) +#define push1(v1,v2) /* push register pair */ do{sp-=2;\ + store2b(sp,v1,v2);\ + }while(0) + +instr(0,4); + /* nop */ +endinstr; + +instr(1,10); + c=fetch(pc),pc++; + b=fetch(pc),pc++; +endinstr; + +instr(2,7); + store(bc,a); +endinstr; + +instr(3,6); + if(!++c)b++; +endinstr; + +instr(4,4); + inc(b); +endinstr; + +instr(5,4); + dec(b); +endinstr; + +instr(6,7); + b=fetch(pc),pc++; +endinstr; + +instr(7,4); + a=(a<<1)|(a>>7); + f=(f&0xc4)|(a&0x29); +endinstr; + +instr(8,4); + swap(a,a1); + swap(f,f1); +endinstr; + +instr(9,11); + addhl(b,c); +endinstr; + +instr(10,7); + a=fetch(bc); +endinstr; + +instr(11,6); + if(!c--)b--; +endinstr; + +instr(12,4); + inc(c); +endinstr; + +instr(13,4); + dec(c); +endinstr; + +instr(14,4); + c=fetch(pc),pc++; +endinstr; + +instr(15,4); + f=(f&0xc4)|(a&1); + a=(a>>1)|(a<<7); + f|=a&0x28; +endinstr; + +instr(16,8); + if(!--b)pc++; + else jr; +endinstr; + +instr(17,10); + e=fetch(pc),pc++; + d=fetch(pc),pc++; +endinstr; + +instr(18,7); + store(de,a); +endinstr; + +instr(19,6); + if(!++e)d++; +endinstr; + +instr(20,4); + inc(d); +endinstr; + +instr(21,4); + dec(d); +endinstr; + +instr(22,7); + d=fetch(pc),pc++; +endinstr; + +instr(23,4); + {int t=a>>7; + a=(a<<1)|(f&1); + f=(f&0xc4)|(a&0x28)|t; + } +endinstr; + +instr(24,7); + jr; +endinstr; + +instr(25,11); + addhl(d,e); +endinstr; + +instr(26,7); + a=fetch(de); +endinstr; + +instr(27,6); + if(!e--)d--; +endinstr; + +instr(28,4); + inc(e); +endinstr; + +instr(29,4); + dec(e); +endinstr; + +instr(30,4); + e=fetch(pc),pc++; +endinstr; + +instr(31,4); + {int t=a&1; + a=(a>>1)|(f<<7); + f=(f&0xc4)|(a&0x28)|t; + } +endinstr; + +instr(32,7); + if(f&0x40)pc++; + else jr; +endinstr; + +instr(33,10); + if(!ixoriy){ + l=fetch(pc),pc++; + h=fetch(pc),pc++; + } + else { + if(ixoriy==1) + ix=fetch2(pc); + else iy=fetch2(pc); + pc+=2; + } +endinstr; + +instr(34,16); + {unsigned short addr=fetch2(pc); + pc+=2; + if(!ixoriy)store2b(addr,h,l); + else if(ixoriy==1)store2(addr,ix); + else store2(addr,iy); + } +endinstr; + +instr(35,6); + if(!ixoriy){if(!++l)h++;} + else if(ixoriy==1)ix++; + else iy++; +endinstr; + +instr(36,4); + if(ixoriy==0)inc(h); + else{unsigned char t; + t=(ixoriy==1?ix:iy)>>8; + inc(t); + if(ixoriy==1)ix=(ix&0xff)|(t<<8); + else iy=(iy&0xff)|(t<<8); + } +endinstr; + +instr(37,4); + if(ixoriy==0)dec(h); + else{unsigned char t; + t=(ixoriy==1?ix:iy)>>8; + dec(t); + if(ixoriy==1)ix=(ix&0xff)|(t<<8); + else iy=(iy&0xff)|(t<<8); + } +endinstr; + +instr(38,7); + setxh(fetch(pc)); + pc++; +endinstr; + +instr(39,4); + { + unsigned char incr=0, carry=cy; + if((f&0x10) || (a&0x0f)>9) incr=6; + if((f&1) || (a>>4)>9) incr|=0x60; + if(f&2)suba(incr,0); + else { + if(a>0x90 && (a&15)>9)incr|=0x60; + adda(incr,0); + } + f=((f|carry)&0xfb)|parity(a); + } +endinstr; + +instr(40,7); + if(f&0x40)jr; + else pc++; +endinstr; + +instr(41,11); + if(!ixoriy)addhl(h,l); + else if(ixoriy==1)addhl((ix>>8),(ix&0xff)); + else addhl((iy>>8),(iy&0xff)); +endinstr; + +instr(42,16); + {unsigned short addr=fetch2(pc); + pc+=2; + if(!ixoriy){ + l=fetch(addr); + h=fetch(addr+1); + } + else if(ixoriy==1)ix=fetch2(addr); + else iy=fetch2(addr); + } +endinstr; + +instr(43,6); + if(!ixoriy){if(!l--)h--;} + else if(ixoriy==1)ix--; + else iy--; +endinstr; + +instr(44,4); + if(!ixoriy)inc(l); + else {unsigned char t; + t=(ixoriy==1?ix:iy); + inc(t); + if(ixoriy==1)ix=(ix&0xff00)|t; + else iy=(iy&0xff00)|t; + } +endinstr; + +instr(45,4); + if(!ixoriy)dec(l); + else {unsigned char t; + t=(ixoriy==1?ix:iy); + dec(t); + if(ixoriy==1)ix=(ix&0xff00)|t; + else iy=(iy&0xff00)|t; + } +endinstr; + +instr(46,4); + setxl(fetch(pc)); + pc++; +endinstr; + +instr(47,4); + a=~a; + f=(f&0xc5)|(a&0x28)|0x12; +endinstr; + +instr(48,7); + if(f&1)pc++; + else jr; +endinstr; + +instr(49,10); + sp=fetch2(pc); + pc+=2; +endinstr; + +instr(50,13); + {unsigned short addr=fetch2(pc); + pc+=2; + store(addr,a); + } +endinstr; + +instr(51,6); + sp++; +endinstr; + +HLinstr(52,11,8); + {unsigned char t=fetch(addr); + inc(t); + store(addr,t); + } +endinstr; + +HLinstr(53,11,8); + {unsigned char t=fetch(addr); + dec(t); + store(addr,t); + } +endinstr; + +HLinstr(54,10,5); + store(addr,fetch(pc)); + pc++; +endinstr; + +instr(55,4); + f=(f&0xc4)|1|(a&0x28); +endinstr; + +instr(56,7); + if(f&1)jr; + else pc++; +endinstr; + +instr(57,11); + addhl((sp>>8),(sp&0xff)); +endinstr; + +instr(58,13); + {unsigned short addr=fetch2(pc); + pc+=2; + a=fetch(addr); + } +endinstr; + +instr(59,6); + sp--; +endinstr; + +instr(60,4); + inc(a); +endinstr; + +instr(61,4); + dec(a); +endinstr; + +instr(62,4); + a=fetch(pc),pc++; +endinstr; + +instr(63,4); + f=(f&0xc4)|(cy^1)|(cy<<4)|(a&0x28); +endinstr; + +instr(0x40,4); + /* ld b,b */ +endinstr; + +instr(0x41,4); + b=c; +endinstr; + +instr(0x42,4); + b=d; +endinstr; + +instr(0x43,4); + b=e; +endinstr; + +instr(0x44,4); + b=xh; +endinstr; + +instr(0x45,4); + b=xl; +endinstr; + +HLinstr(0x46,7,8); + b=fetch(addr); +endinstr; + +instr(0x47,4); + b=a; +endinstr; + +instr(0x48,4); + c=b; +endinstr; + +instr(0x49,4); + /* ld c,c */ +endinstr; + +instr(0x4a,4); + c=d; +endinstr; + +instr(0x4b,4); + c=e; +endinstr; + +instr(0x4c,4); + c=xh; +endinstr; + +instr(0x4d,4); + c=xl; +endinstr; + +HLinstr(0x4e,7,8); + c=fetch(addr); +endinstr; + +instr(0x4f,4); + c=a; +endinstr; + +instr(0x50,4); + d=b; +endinstr; + +instr(0x51,4); + d=c; +endinstr; + +instr(0x52,4); + /* ld d,d */ +endinstr; + +instr(0x53,4); + d=e; +endinstr; + +instr(0x54,4); + d=xh; +endinstr; + +instr(0x55,4); + d=xl; +endinstr; + +HLinstr(0x56,7,8); + d=fetch(addr); +endinstr; + +instr(0x57,4); + d=a; +endinstr; + +instr(0x58,4); + e=b; +endinstr; + +instr(0x59,4); + e=c; +endinstr; + +instr(0x5a,4); + e=d; +endinstr; + +instr(0x5b,4); + /* ld e,e */ +endinstr; + +instr(0x5c,4); + e=xh; +endinstr; + +instr(0x5d,4); + e=xl; +endinstr; + +HLinstr(0x5e,7,8); + e=fetch(addr); +endinstr; + +instr(0x5f,4); + e=a; +endinstr; + +instr(0x60,4); + setxh(b); +endinstr; + +instr(0x61,4); + setxh(c); +endinstr; + +instr(0x62,4); + setxh(d); +endinstr; + +instr(0x63,4); + setxh(e); +endinstr; + +instr(0x64,4); + /* ld h,h */ +endinstr; + +instr(0x65,4); + setxh(xl); +endinstr; + +HLinstr(0x66,7,8); + h=fetch(addr); +endinstr; + +instr(0x67,4); + setxh(a); +endinstr; + +instr(0x68,4); + setxl(b); +endinstr; + +instr(0x69,4); + setxl(c); +endinstr; + +instr(0x6a,4); + setxl(d); +endinstr; + +instr(0x6b,4); + setxl(e); +endinstr; + +instr(0x6c,4); + setxl(xh); +endinstr; + +instr(0x6d,4); + /* ld l,l */ +endinstr; + +HLinstr(0x6e,7,8); + l=fetch(addr); +endinstr; + +instr(0x6f,4); + setxl(a); +endinstr; + +HLinstr(0x70,7,8); + store(addr,b); +endinstr; + +HLinstr(0x71,7,8); + store(addr,c); +endinstr; + +HLinstr(0x72,7,8); + store(addr,d); +endinstr; + +HLinstr(0x73,7,8); + store(addr,e); +endinstr; + +HLinstr(0x74,7,8); + store(addr,h); +endinstr; + +HLinstr(0x75,7,8); + store(addr,l); +endinstr; + +instr(0x76,4); +pc--; /* keep nopping until int */ +endinstr; + +HLinstr(0x77,7,8); + store(addr,a); +endinstr; + +instr(0x78,4); + a=b; +endinstr; + +instr(0x79,4); + a=c; +endinstr; + +instr(0x7a,4); + a=d; +endinstr; + +instr(0x7b,4); + a=e; +endinstr; + +instr(0x7c,4); + a=xh; +endinstr; + +instr(0x7d,4); + a=xl; +endinstr; + +HLinstr(0x7e,7,8); + a=fetch(addr); +endinstr; + +instr(0x7f,4); + /* ld a,a */ +endinstr; + +instr(0x80,4); + adda(b,0); +endinstr; + +instr(0x81,4); + adda(c,0); +endinstr; + +instr(0x82,4); + adda(d,0); +endinstr; + +instr(0x83,4); + adda(e,0); +endinstr; + +instr(0x84,4); + adda(xh,0); +endinstr; + +instr(0x85,4); + adda(xl,0); +endinstr; + +HLinstr(0x86,7,8); + adda(fetch(addr),0); +endinstr; + +instr(0x87,4); + adda(a,0); +endinstr; + +instr(0x88,4); + adda(b,cy); +endinstr; + +instr(0x89,4); + adda(c,cy); +endinstr; + +instr(0x8a,4); + adda(d,cy); +endinstr; + +instr(0x8b,4); + adda(e,cy); +endinstr; + +instr(0x8c,4); + adda(xh,cy); +endinstr; + +instr(0x8d,4); + adda(xl,cy); +endinstr; + +HLinstr(0x8e,7,8); + adda(fetch(addr),cy); +endinstr; + +instr(0x8f,4); + adda(a,cy); +endinstr; + +instr(0x90,4); + suba(b,0); +endinstr; + +instr(0x91,4); + suba(c,0); +endinstr; + +instr(0x92,4); + suba(d,0); +endinstr; + +instr(0x93,4); + suba(e,0); +endinstr; + +instr(0x94,4); + suba(xh,0); +endinstr; + +instr(0x95,4); + suba(xl,0); +endinstr; + +HLinstr(0x96,7,8); + suba(fetch(addr),0); +endinstr; + +instr(0x97,4); + suba(a,0); +endinstr; + +instr(0x98,4); + suba(b,cy); +endinstr; + +instr(0x99,4); + suba(c,cy); +endinstr; + +instr(0x9a,4); + suba(d,cy); +endinstr; + +instr(0x9b,4); + suba(e,cy); +endinstr; + +instr(0x9c,4); + suba(xh,cy); +endinstr; + +instr(0x9d,4); + suba(xl,cy); +endinstr; + +HLinstr(0x9e,7,8); + suba(fetch(addr),cy); +endinstr; + +instr(0x9f,4); + suba(a,cy); +endinstr; + +instr(0xa0,4); + anda(b); +endinstr; + +instr(0xa1,4); + anda(c); +endinstr; + +instr(0xa2,4); + anda(d); +endinstr; + +instr(0xa3,4); + anda(e); +endinstr; + +instr(0xa4,4); + anda(xh); +endinstr; + +instr(0xa5,4); + anda(xl); +endinstr; + +HLinstr(0xa6,7,8); + anda(fetch(addr)); +endinstr; + +instr(0xa7,4); + anda(a); +endinstr; + +instr(0xa8,4); + xora(b); +endinstr; + +instr(0xa9,4); + xora(c); +endinstr; + +instr(0xaa,4); + xora(d); +endinstr; + +instr(0xab,4); + xora(e); +endinstr; + +instr(0xac,4); + xora(xh); +endinstr; + +instr(0xad,4); + xora(xl); +endinstr; + +HLinstr(0xae,7,8); + xora(fetch(addr)); +endinstr; + +instr(0xaf,4); + xora(a); +endinstr; + +instr(0xb0,4); + ora(b); +endinstr; + +instr(0xb1,4); + ora(c); +endinstr; + +instr(0xb2,4); + ora(d); +endinstr; + +instr(0xb3,4); + ora(e); +endinstr; + +instr(0xb4,4); + ora(xh); +endinstr; + +instr(0xb5,4); + ora(xl); +endinstr; + +HLinstr(0xb6,7,8); + ora(fetch(addr)); +endinstr; + +instr(0xb7,4); + ora(a); +endinstr; + +instr(0xb8,4); + cpa(b); +endinstr; + +instr(0xb9,4); + cpa(c); +endinstr; + +instr(0xba,4); + cpa(d); +endinstr; + +instr(0xbb,4); + cpa(e); +endinstr; + +instr(0xbc,4); + cpa(xh); +endinstr; + +instr(0xbd,4); + cpa(xl); +endinstr; + +HLinstr(0xbe,7,8); + cpa(fetch(addr)); +endinstr; + +instr(0xbf,4); + cpa(a); +endinstr; + +instr(0xc0,5); + if(!(f&0x40))ret; +endinstr; + +instr(0xc1,10); + pop1(b,c); +endinstr; + +instr(0xc2,10); + if(!(f&0x40))jp; + else pc+=2; +endinstr; + +instr(0xc3,10); + jp; +endinstr; + +instr(0xc4,10); + if(!(f&0x40))call; + else pc+=2; +endinstr; + +instr(0xc5,11); + push1(b,c); +endinstr; + +instr(0xc6,7); + adda(fetch(pc),0); + pc++; +endinstr; + +instr(0xc7,11); + push2(pc); + pc=0; +endinstr; + +instr(0xc8,5); + if(f&0x40)ret; +endinstr; + +instr(0xc9,4); + ret; +endinstr; + +instr(0xca,10); + if(f&0x40)jp; + else pc+=2; +endinstr; + +instr(0xcb,4); +#include "cbops.h" +endinstr; + +instr(0xcc,10); + if(f&0x40)call; + else pc+=2; +endinstr; + +instr(0xcd,10); + call; +endinstr; + +instr(0xce,7); + adda(fetch(pc),cy); + pc++; +endinstr; + +instr(0xcf,11); + push2(pc); + pc=8; +endinstr; + +instr(0xd0,5); + if(!cy)ret; +endinstr; + +instr(0xd1,10); + pop1(d,e); +endinstr; + +instr(0xd2,10); + if(!cy)jp; + else pc+=2; +endinstr; + +instr(0xd3,11); + tstates+=out(a,fetch(pc),a); + pc++; +endinstr; + +instr(0xd4,10); + if(!cy)call; + else pc+=2; +endinstr; + +instr(0xd5,11); + push1(d,e); +endinstr; + +instr(0xd6,7); + suba(fetch(pc),0); + pc++; +endinstr; + +instr(0xd7,11); + push2(pc); + pc=16; +endinstr; + +instr(0xd8,5); + if(cy)ret; +endinstr; + +instr(0xd9,4); + swap(b,b1); + swap(c,c1); + swap(d,d1); + swap(e,e1); + swap(h,h1); + swap(l,l1); +endinstr; + +instr(0xda,10); + if(cy)jp; + else pc+=2; +endinstr; + +instr(0xdb,11); + {unsigned short t; + a=t=in(a,fetch(pc)); + tstates+=t>>8; + pc++; + } +endinstr; + +instr(0xdc,10); + if(cy)call; + else pc+=2; +endinstr; + +instr(0xdd,4); + new_ixoriy=1; + intsample=0; +endinstr; + +instr(0xde,7); + suba(fetch(pc),cy); + pc++; +endinstr; + +instr(0xdf,11); + push2(pc); + pc=24; +endinstr; + +instr(0xe0,5); + if(!(f&4))ret; +endinstr; + +instr(0xe1,10); + if(!ixoriy)pop1(h,l); + else if(ixoriy==1)pop2(ix); + else pop2(iy); +endinstr; + +instr(0xe2,10); + if(!(f&4))jp; + else pc+=2; +endinstr; + +instr(0xe3,19); + if(!ixoriy){ + unsigned short t=fetch2(sp); + store2b(sp,h,l); + l=t; + h=t>>8; + } + else if(ixoriy==1){ + unsigned short t=fetch2(sp); + store2(sp,ix); + ix=t; + } + else{ + unsigned short t=fetch2(sp); + store2(sp,iy); + iy=t; + } +endinstr; + +instr(0xe4,10); + if(!(f&4))call; + else pc+=2; +endinstr; + +instr(0xe5,11); + if(!ixoriy)push1(h,l); + else if(ixoriy==1)push2(ix); + else push2(iy); +endinstr; + +instr(0xe6,7); + anda(fetch(pc)); + pc++; +endinstr; + +instr(0xe7,11); + push2(pc); + pc=32; +endinstr; + +instr(0xe8,5); + if(f&4)ret; +endinstr; + +instr(0xe9,4); + pc=!ixoriy?hl:ixoriy==1?ix:iy; +endinstr; + +instr(0xea,10); + if(f&4)jp; + else pc+=2; +endinstr; + +instr(0xeb,4); + swap(h,d); + swap(e,l); +endinstr; + +instr(0xec,10); + if(f&4)call; + else pc+=2; +endinstr; + +instr(0xed,4); +#include"edops.h" +endinstr; + +instr(0xee,7); + xora(fetch(pc)); + pc++; +endinstr; + +instr(0xef,11); + push2(pc); + pc=40; +endinstr; + +instr(0xf0,5); + if(!(f&0x80))ret; +endinstr; + +instr(0xf1,10); + pop1(a,f); +endinstr; + +instr(0xf2,10); + if(!(f&0x80))jp; + else pc+=2; +endinstr; + +instr(0xf3,4); + iff1=iff2=0; + intsample=0; +endinstr; + +instr(0xf4,10); + if(!(f&0x80))call; + else pc+=2; +endinstr; + +instr(0xf5,11); + push1(a,f); +endinstr; + +instr(0xf6,7); + ora(fetch(pc)); + pc++; +endinstr; + +instr(0xf7,11); + push2(pc); + pc=48; +endinstr; + +instr(0xf8,5); + if(f&0x80)ret; +endinstr; + +instr(0xf9,6); + sp=!ixoriy?hl:ixoriy==1?ix:iy; +endinstr; + +instr(0xfa,10); + if(f&0x80)jp; + else pc+=2; +endinstr; + +instr(0xfb,4); + iff1=iff2=1; + intsample=0; +endinstr; + +instr(0xfc,10); + if(f&0x80)call; + else pc+=2; +endinstr; + +instr(0xfd,4); + new_ixoriy=2; + intsample=0; +endinstr; + +instr(0xfe,7); + cpa(fetch(pc)); + pc++; +endinstr; + +instr(0xff,11); + push2(pc); + pc=56; +endinstr; + diff --git a/MCUME_esp32/esp81/main/zx80rom.h b/MCUME_esp32/esp81/main/zx80rom.h new file mode 100644 index 0000000..85eb10b --- /dev/null +++ b/MCUME_esp32/esp81/main/zx80rom.h @@ -0,0 +1,258 @@ +static const unsigned char zx80rom[] = { + 0x21, 0xff, 0x7f, 0x3e, 0x3f, 0xc3, 0x61, 0x02, 0xe1, 0x6e, 0xfd, 0xcb, 0x00, 0x7e, 0x18, 0x03, + 0xc3, 0x60, 0x05, 0xc8, 0xfd, 0x75, 0x00, 0xc9, 0x18, 0x38, 0x2a, 0x26, 0x40, 0x7e, 0xa7, 0xc0, + 0xcd, 0x52, 0x00, 0x18, 0xf9, 0xcd, 0x55, 0x00, 0xcd, 0x1a, 0x00, 0x06, 0x00, 0xc3, 0xe1, 0x09, + 0xcd, 0x4f, 0x09, 0xd0, 0xc5, 0xc3, 0xf3, 0x0c, 0x0d, 0xc2, 0x45, 0x00, 0xe1, 0x05, 0xc8, 0xcb, + 0xd9, 0xed, 0x4f, 0xfb, 0xe9, 0xd1, 0xc8, 0x18, 0xf8, 0xcd, 0x25, 0x00, 0x7e, 0xfe, 0xd9, 0xc2, + 0xae, 0x08, 0x2a, 0x26, 0x40, 0x23, 0x22, 0x26, 0x40, 0x7e, 0xfe, 0xb0, 0xc0, 0x22, 0x04, 0x40, + 0xfd, 0xcb, 0x19, 0x7e, 0x28, 0xef, 0xfd, 0xcb, 0x01, 0xd6, 0x18, 0xe9, 0x3f, 0x3d, 0x28, 0x3b, + 0x26, 0x38, 0x29, 0x2b, 0x2c, 0x36, 0x3c, 0x2a, 0x37, 0x39, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x1c, + 0x25, 0x24, 0x23, 0x22, 0x35, 0x34, 0x2e, 0x3a, 0x3e, 0x76, 0x31, 0x30, 0x2f, 0x2d, 0x00, 0x1b, + 0x32, 0x33, 0x27, 0x0e, 0xd7, 0x0f, 0xdf, 0x09, 0x08, 0x06, 0x07, 0x0b, 0x02, 0x03, 0x04, 0x05, + 0x0a, 0xdb, 0xe0, 0xd5, 0xd6, 0x72, 0x77, 0x74, 0x73, 0x70, 0x71, 0xde, 0xd9, 0xda, 0x0d, 0x01, + 0x75, 0xe3, 0xdd, 0xdc, 0xe2, 0x0c, 0xd8, 0xe4, 0xe5, 0xe1, 0xd4, 0x8f, 0x81, 0x39, 0x2d, 0x2a, + 0xb3, 0x39, 0xb4, 0x99, 0x9a, 0x91, 0x90, 0x33, 0x34, 0xb9, 0x92, 0x93, 0x94, 0x95, 0x26, 0x33, + 0xa9, 0x34, 0xb7, 0x14, 0x94, 0x96, 0x97, 0x98, 0x31, 0x2e, 0x38, 0xb9, 0x37, 0x2a, 0x39, 0x3a, + 0x37, 0xb3, 0x28, 0x31, 0xb8, 0x29, 0x2e, 0xb2, 0x38, 0x26, 0x3b, 0xaa, 0x2b, 0x34, 0xb7, 0x2c, + 0x34, 0x00, 0x39, 0xb4, 0x35, 0x34, 0x30, 0xaa, 0x2e, 0x33, 0x35, 0x3a, 0xb9, 0x37, 0x26, 0x33, + 0x29, 0x34, 0x32, 0x2e, 0x38, 0xaa, 0x31, 0x2a, 0xb9, 0x8f, 0x8f, 0x33, 0x2a, 0x3d, 0xb9, 0x35, + 0x37, 0x2e, 0x33, 0xb9, 0x8f, 0x33, 0x2a, 0xbc, 0x37, 0x3a, 0xb3, 0x38, 0x39, 0x34, 0xb5, 0x28, + 0x34, 0x33, 0x39, 0x2e, 0x33, 0x3a, 0xaa, 0x2e, 0xab, 0x2c, 0x34, 0x00, 0x38, 0x3a, 0xa7, 0x31, + 0x34, 0x26, 0xa9, 0x28, 0x31, 0x2a, 0x26, 0xb7, 0x37, 0x2a, 0xb2, 0x8f, 0xcd, 0xad, 0x01, 0x06, + 0x08, 0x10, 0xfe, 0x2a, 0x1e, 0x40, 0x23, 0x22, 0x1e, 0x40, 0x21, 0xff, 0xff, 0x06, 0xfe, 0x48, + 0xed, 0x78, 0xf6, 0x01, 0xf6, 0xe0, 0x57, 0x2f, 0xfe, 0x01, 0x9f, 0xb0, 0xa5, 0x6f, 0x7c, 0xa2, + 0x67, 0xcb, 0x00, 0xed, 0x78, 0x38, 0xed, 0x1f, 0xcb, 0x14, 0x17, 0x17, 0x17, 0x9f, 0xe6, 0x18, + 0xc6, 0x20, 0x32, 0x23, 0x40, 0xed, 0x4b, 0x26, 0x40, 0x22, 0x26, 0x40, 0x78, 0xc6, 0x02, 0xed, + 0x42, 0xeb, 0x21, 0x22, 0x40, 0x7e, 0xb2, 0xb3, 0xc8, 0x78, 0xfe, 0xfe, 0x9f, 0x06, 0x1f, 0xb6, + 0xa0, 0x1f, 0x77, 0x05, 0x10, 0xfe, 0xd3, 0xff, 0x3e, 0xec, 0x06, 0x19, 0x2a, 0x0c, 0x40, 0xcb, + 0xfc, 0xcd, 0xad, 0x01, 0x3e, 0xf3, 0x04, 0x2b, 0xfd, 0x35, 0x23, 0x18, 0x8f, 0xfd, 0x4e, 0x23, + 0xed, 0x4f, 0x3e, 0xdd, 0xfb, 0xe9, 0xd1, 0x11, 0xcb, 0x12, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x30, + 0x42, 0x10, 0xfe, 0x1b, 0x7a, 0xb3, 0x20, 0xf2, 0x21, 0x00, 0x40, 0x11, 0x08, 0xf8, 0xcb, 0x06, + 0x9f, 0xe6, 0x05, 0xc6, 0x04, 0x4f, 0xd3, 0xff, 0x06, 0x24, 0x10, 0xfe, 0x3e, 0x7f, 0xdb, 0xfe, + 0x06, 0x23, 0x10, 0xfe, 0x0d, 0x20, 0xef, 0x42, 0x00, 0x10, 0xfd, 0x16, 0xfe, 0x1d, 0x20, 0xde, + 0x1f, 0x30, 0x10, 0xcd, 0xf8, 0x01, 0x18, 0xd3, 0x23, 0xeb, 0x2a, 0x0a, 0x40, 0x37, 0xed, 0x52, + 0xeb, 0xd0, 0xe1, 0xc3, 0x83, 0x02, 0xd1, 0x11, 0x12, 0x57, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x30, + 0xf2, 0x17, 0x17, 0x38, 0xf2, 0x1b, 0x7a, 0xb3, 0x20, 0xf0, 0xfd, 0x34, 0x0b, 0x21, 0x00, 0x40, + 0x1e, 0x08, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x30, 0x24, 0x17, 0x17, 0x30, 0xf5, 0x0e, 0x94, 0x06, + 0x1a, 0x0d, 0xdb, 0xfe, 0x17, 0xcb, 0x79, 0x79, 0x38, 0xf5, 0x10, 0xf5, 0x20, 0x04, 0xfe, 0x56, + 0x30, 0xe0, 0x3f, 0xcb, 0x16, 0x1d, 0x20, 0xda, 0xcd, 0xf8, 0x01, 0x18, 0xd3, 0x15, 0xf2, 0x00, + 0x00, 0xfd, 0x35, 0x0b, 0x18, 0xad, 0xcb, 0xb8, 0xcb, 0xb0, 0xed, 0x43, 0x06, 0x40, 0xc1, 0x18, + 0x22, 0x36, 0x01, 0x2b, 0xbc, 0x20, 0xfa, 0x23, 0x35, 0x28, 0xfc, 0xf9, 0xf5, 0x3e, 0x0e, 0xed, + 0x47, 0xed, 0x56, 0xfd, 0x21, 0x00, 0x40, 0x21, 0x28, 0x40, 0x22, 0x08, 0x40, 0x36, 0x80, 0x23, + 0x22, 0x0a, 0x40, 0x2a, 0x0a, 0x40, 0x36, 0xb0, 0x23, 0x36, 0x76, 0x23, 0x22, 0x0c, 0x40, 0xfd, + 0x36, 0x12, 0x02, 0xcd, 0x47, 0x07, 0xeb, 0x78, 0xfd, 0x96, 0x12, 0x38, 0x5a, 0x3c, 0x47, 0xd9, + 0x2a, 0x06, 0x40, 0xed, 0x5b, 0x13, 0x40, 0xed, 0x52, 0xeb, 0x30, 0x04, 0x19, 0x22, 0x13, 0x40, + 0xcd, 0x0a, 0x06, 0x1e, 0x00, 0xcd, 0xf7, 0x04, 0x38, 0xfb, 0x1d, 0x20, 0x33, 0xe5, 0x2a, 0x06, + 0x40, 0xcd, 0x0a, 0x06, 0xe1, 0xa7, 0xed, 0x52, 0x21, 0x13, 0x40, 0x30, 0x0b, 0xeb, 0x7e, 0x23, + 0xed, 0xa0, 0x12, 0x18, 0xbe, 0x21, 0x06, 0x40, 0x5e, 0x23, 0x56, 0xe5, 0xeb, 0x23, 0xcd, 0x0a, + 0x06, 0xcd, 0xc2, 0x03, 0xe1, 0xfd, 0xcb, 0x19, 0x6e, 0x20, 0x0c, 0x72, 0x2b, 0x73, 0x18, 0xa3, + 0xcd, 0xc2, 0x05, 0xed, 0x53, 0x0e, 0x40, 0xfd, 0x36, 0x01, 0x01, 0x2a, 0x0a, 0x40, 0xcd, 0xbe, + 0x07, 0xed, 0x5b, 0x0e, 0x40, 0xfd, 0x46, 0x12, 0x0e, 0x01, 0xd9, 0x2a, 0x0a, 0x40, 0xcd, 0x12, + 0x05, 0x38, 0x0a, 0x21, 0x12, 0x40, 0x34, 0x3e, 0x18, 0xbe, 0x30, 0xb7, 0x77, 0xcd, 0xc2, 0x05, + 0xcd, 0x3f, 0x01, 0xcb, 0x28, 0x9f, 0xf6, 0x26, 0x2e, 0x05, 0x95, 0x85, 0x37, 0xcb, 0x19, 0x38, + 0xfa, 0x0c, 0x20, 0xc3, 0x48, 0x2d, 0x2e, 0x01, 0x20, 0xf1, 0x21, 0x6b, 0x00, 0x5f, 0x19, 0x7e, + 0xfd, 0xcb, 0x01, 0x56, 0x28, 0x07, 0xc6, 0xc0, 0xfe, 0xe6, 0x30, 0x01, 0x7e, 0xfe, 0xc0, 0xea, + 0x5e, 0x03, 0x2a, 0x04, 0x40, 0x01, 0x01, 0x00, 0xcd, 0xd5, 0x05, 0x12, 0x18, 0x99, 0x5f, 0x21, + 0x92, 0x02, 0x19, 0x19, 0x4e, 0x23, 0x46, 0xc5, 0x2a, 0x04, 0x40, 0xc9, 0x01, 0x01, 0x00, 0xc3, + 0x66, 0x06, 0xa9, 0x03, 0xd5, 0x02, 0x82, 0x03, 0x87, 0x03, 0xb9, 0x03, 0xcb, 0x03, 0x08, 0x04, + 0x95, 0x03, 0xcd, 0x9e, 0x03, 0x2b, 0x2b, 0x23, 0x7e, 0xfe, 0x76, 0x28, 0x1a, 0x36, 0xb0, 0x2a, + 0x04, 0x40, 0x77, 0x18, 0xc7, 0xcd, 0x9e, 0x03, 0x2b, 0xcd, 0x6c, 0x03, 0x18, 0xbe, 0xed, 0x5b, + 0x0a, 0x40, 0x1a, 0xfe, 0xb0, 0xc0, 0xd1, 0x18, 0xb3, 0x2a, 0x06, 0x40, 0xcd, 0x0a, 0x06, 0xeb, + 0xcd, 0xc2, 0x03, 0x21, 0x07, 0x40, 0xc3, 0xe5, 0x02, 0x11, 0x00, 0x00, 0x18, 0xf5, 0xeb, 0x11, + 0xba, 0x03, 0x7e, 0xe6, 0xc0, 0x20, 0xf7, 0x56, 0x23, 0x5e, 0xc9, 0x0e, 0x00, 0xed, 0x5b, 0x0a, + 0x40, 0xd9, 0x2a, 0x06, 0x40, 0xcd, 0x0a, 0x06, 0xcd, 0xc2, 0x03, 0x7a, 0xb3, 0xca, 0x83, 0x02, + 0x2b, 0xcd, 0xbf, 0x06, 0x2b, 0xcd, 0x24, 0x06, 0x23, 0x23, 0x0b, 0x0b, 0xd9, 0xd5, 0xd9, 0xd1, + 0x3e, 0xb0, 0x12, 0x13, 0xe5, 0x21, 0x22, 0x00, 0x19, 0x09, 0xed, 0x72, 0x30, 0xa9, 0xe1, 0xed, + 0xb0, 0xed, 0x53, 0x0c, 0x40, 0xc3, 0x93, 0x02, 0x2a, 0x15, 0x40, 0x7c, 0xb5, 0x20, 0x98, 0x2a, + 0x04, 0x40, 0xcd, 0x6c, 0x03, 0x2a, 0x0a, 0x40, 0x22, 0x26, 0x40, 0xcd, 0x1a, 0x00, 0xfd, 0xcb, + 0x19, 0x6e, 0x20, 0x18, 0xcd, 0x79, 0x06, 0xd9, 0x7c, 0xb5, 0xc2, 0xba, 0x04, 0x2b, 0x2b, 0x22, + 0x02, 0x40, 0xcd, 0x47, 0x07, 0xd9, 0x7e, 0xfe, 0x76, 0xca, 0x83, 0x02, 0xfd, 0x36, 0x00, 0xff, + 0xfd, 0x36, 0x01, 0x88, 0xcd, 0xbe, 0x07, 0xcd, 0x0a, 0x0d, 0xed, 0x5b, 0x02, 0x40, 0x21, 0x19, + 0x40, 0xcb, 0x6e, 0x28, 0x03, 0xcb, 0xae, 0x13, 0xfd, 0xcb, 0x00, 0x7e, 0x28, 0x2a, 0x21, 0x01, + 0x40, 0xcb, 0x5e, 0xcb, 0x9e, 0x2a, 0x26, 0x40, 0x23, 0x28, 0x09, 0xeb, 0x7c, 0xe6, 0xc0, 0x20, + 0x17, 0xcd, 0x0a, 0x06, 0x7e, 0xe6, 0xc0, 0x20, 0x0f, 0x56, 0x23, 0x5e, 0xed, 0x53, 0x02, 0x40, + 0x23, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x38, 0xbc, 0xcd, 0xe0, 0x06, 0xcd, 0xc2, 0x05, 0x01, 0x20, + 0x01, 0xd9, 0x3a, 0x00, 0x40, 0xed, 0x4b, 0x02, 0x40, 0x3c, 0x28, 0x0c, 0xfe, 0x09, 0x20, 0x01, + 0x03, 0xed, 0x43, 0x17, 0x40, 0x20, 0x01, 0x0b, 0xcd, 0x56, 0x05, 0x3e, 0x15, 0xd7, 0xcd, 0xa1, + 0x06, 0xcd, 0xc2, 0x05, 0xcd, 0x3f, 0x01, 0xc3, 0x83, 0x02, 0x22, 0x06, 0x40, 0xd9, 0xeb, 0xcd, + 0x47, 0x07, 0xed, 0x52, 0xd9, 0xcd, 0x0a, 0x06, 0xe5, 0x20, 0x06, 0xcd, 0x24, 0x06, 0xcd, 0x66, + 0x06, 0xd9, 0x23, 0x44, 0x4d, 0x7d, 0xd6, 0x03, 0xb4, 0xc4, 0x4f, 0x09, 0xe1, 0x30, 0x15, 0xc5, + 0x2b, 0xcd, 0xd5, 0x05, 0x13, 0x2a, 0x0c, 0x40, 0x2b, 0xc1, 0x0b, 0xed, 0xb8, 0x2a, 0x06, 0x40, + 0xeb, 0x72, 0x23, 0x73, 0xc3, 0x83, 0x02, 0xed, 0x4b, 0x06, 0x40, 0xcd, 0x1c, 0x06, 0x16, 0x97, + 0x28, 0x05, 0x11, 0x00, 0x00, 0xcb, 0x13, 0x7e, 0xfe, 0x40, 0xdc, 0xbf, 0x06, 0xd0, 0x23, 0x7a, + 0xd7, 0xd0, 0xfd, 0xcb, 0x01, 0xc6, 0xed, 0x4b, 0x15, 0x40, 0xa7, 0xed, 0x42, 0x20, 0x04, 0x3e, + 0xb8, 0xd7, 0xc8, 0x09, 0x7e, 0x23, 0xfe, 0xb0, 0x28, 0x12, 0xfe, 0xc0, 0xea, 0x59, 0x05, 0x38, + 0x05, 0xcd, 0x84, 0x05, 0x18, 0x03, 0xcd, 0x59, 0x05, 0xd0, 0x18, 0xda, 0xfd, 0xcb, 0x01, 0x56, + 0x20, 0x01, 0x3c, 0xd7, 0x18, 0xf3, 0x7b, 0x07, 0x0f, 0xd8, 0x18, 0x10, 0xaf, 0x09, 0x3c, 0x38, + 0xfc, 0xed, 0x42, 0x3d, 0x28, 0xf0, 0x1e, 0x1c, 0x83, 0xa7, 0x28, 0x04, 0xfd, 0xcb, 0x01, 0x86, + 0xd9, 0x67, 0x17, 0x17, 0x0d, 0x30, 0x02, 0x0e, 0x00, 0xfa, 0x74, 0x05, 0x38, 0x0e, 0x20, 0x0c, + 0x3e, 0x76, 0x12, 0x13, 0x38, 0x02, 0x0e, 0x20, 0xa7, 0x05, 0x28, 0x06, 0x68, 0xcd, 0x58, 0x09, + 0x12, 0x13, 0xd9, 0xc9, 0xcd, 0xa8, 0x05, 0x30, 0x09, 0xfd, 0xcb, 0x01, 0x46, 0x20, 0x03, 0xaf, + 0xd7, 0xd0, 0x0a, 0xe6, 0x3f, 0xcd, 0x59, 0x05, 0xd0, 0x0a, 0x03, 0x87, 0x30, 0xf4, 0xfe, 0x38, + 0xd8, 0xaf, 0xfd, 0xcb, 0x01, 0xc6, 0x18, 0xb8, 0xe5, 0x21, 0xba, 0x00, 0x96, 0x23, 0x38, 0x09, + 0x3c, 0x47, 0xcb, 0x7e, 0x23, 0x28, 0xfb, 0x10, 0xf9, 0x44, 0x4d, 0xe1, 0x0a, 0xe6, 0x3f, 0xc6, + 0xe4, 0xc9, 0xd9, 0xaf, 0xb8, 0x28, 0x09, 0xb9, 0x3e, 0x76, 0x28, 0x02, 0x12, 0x13, 0x10, 0xfc, + 0xed, 0x53, 0x10, 0x40, 0xc9, 0xcd, 0xdf, 0x05, 0x2a, 0x10, 0x40, 0xeb, 0xed, 0xb8, 0xc9, 0xf5, + 0xe5, 0x21, 0x08, 0x40, 0x3e, 0x05, 0x5e, 0x23, 0x56, 0xe3, 0xa7, 0xed, 0x52, 0x19, 0xe3, 0x30, + 0x09, 0xd5, 0xeb, 0x09, 0xeb, 0x72, 0x2b, 0x73, 0x23, 0xd1, 0x23, 0x3d, 0x20, 0xe8, 0xeb, 0xd1, + 0xf1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x03, 0x19, 0xeb, 0xc9, 0xe5, 0x21, 0x28, 0x40, 0x54, 0x5d, + 0xc1, 0xeb, 0xcd, 0x1c, 0x06, 0xd0, 0xc5, 0xcd, 0x24, 0x06, 0x18, 0xf4, 0x7e, 0xb8, 0xc0, 0x23, + 0x7e, 0x2b, 0xb9, 0xc9, 0xe5, 0x7e, 0x87, 0xfa, 0x35, 0x06, 0x38, 0x17, 0x23, 0x3e, 0x76, 0x23, + 0x47, 0xed, 0xb1, 0x18, 0x1d, 0x01, 0x02, 0x00, 0x38, 0x01, 0x48, 0x17, 0x17, 0x23, 0x7e, 0x30, + 0xfb, 0x18, 0x0c, 0xe6, 0x40, 0x3e, 0x01, 0x28, 0xe6, 0x23, 0x7e, 0x23, 0x06, 0x00, 0x4f, 0x03, + 0x09, 0x09, 0xd1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x19, 0xeb, 0xc9, 0x2a, 0x0a, 0x40, 0x2b, 0xed, + 0x5b, 0x08, 0x40, 0xcd, 0x53, 0x06, 0xc5, 0x78, 0x2f, 0x47, 0x79, 0x2f, 0x4f, 0x03, 0xcd, 0xdf, + 0x05, 0xeb, 0xe1, 0x19, 0xd5, 0xed, 0xb0, 0xe1, 0xc9, 0x7e, 0xd9, 0x21, 0x00, 0x00, 0x44, 0xd6, + 0x1c, 0x38, 0x17, 0xfe, 0x0a, 0x30, 0x13, 0x4f, 0x3e, 0x0d, 0xbc, 0x30, 0x01, 0x67, 0x54, 0x5d, + 0x29, 0x29, 0x19, 0x29, 0x09, 0xd9, 0xdf, 0xd9, 0x18, 0xe5, 0x7c, 0x22, 0x22, 0x40, 0xd9, 0x17, + 0xc9, 0xd5, 0xe5, 0x60, 0x69, 0xcb, 0x78, 0x28, 0x0c, 0x3e, 0x12, 0xcd, 0x59, 0x05, 0x30, 0x2d, + 0x21, 0x01, 0x00, 0xed, 0x42, 0x1e, 0xff, 0x01, 0xf0, 0xd8, 0xcd, 0x4c, 0x05, 0x18, 0x09, 0xd5, + 0x56, 0x23, 0x5e, 0xe5, 0xeb, 0x1e, 0x00, 0x37, 0x01, 0x18, 0xfc, 0xdc, 0x4c, 0x05, 0x01, 0x9c, + 0xff, 0xdc, 0x4c, 0x05, 0x0e, 0xf6, 0xdc, 0x4c, 0x05, 0x7d, 0xdc, 0x56, 0x05, 0xe1, 0xd1, 0xc9, + 0xfd, 0xcb, 0x01, 0x7e, 0xe1, 0xc8, 0xd9, 0xed, 0x5b, 0x0e, 0x40, 0xed, 0x4b, 0x24, 0x40, 0xd9, + 0xe9, 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0xcd, 0xe0, 0x06, 0x2a, 0x22, 0x40, 0xfd, 0xcb, 0x01, 0x76, + 0x28, 0x0a, 0x44, 0x4d, 0xcd, 0xa1, 0x06, 0x18, 0x1a, 0xd7, 0x30, 0x19, 0x7e, 0x23, 0xfe, 0x01, + 0x28, 0x28, 0xcb, 0x77, 0x28, 0xf3, 0xcd, 0x84, 0x05, 0x18, 0xef, 0xcd, 0xe0, 0x06, 0x3e, 0x76, + 0xcd, 0x59, 0x05, 0x38, 0x15, 0xcf, 0x04, 0xcd, 0xe0, 0x06, 0xfd, 0xcb, 0x01, 0xc6, 0xaf, 0xd7, + 0x30, 0xf3, 0xd9, 0x79, 0xd9, 0x3d, 0xe6, 0x07, 0x20, 0xf4, 0xd9, 0xeb, 0xed, 0x43, 0x24, 0x40, + 0x22, 0x0e, 0x40, 0x22, 0x10, 0x40, 0xc9, 0x2a, 0x0c, 0x40, 0x36, 0x76, 0x23, 0x01, 0x21, 0x17, + 0x18, 0xea, 0x4f, 0x2c, 0x64, 0x3f, 0x59, 0x2b, 0x17, 0x4b, 0x36, 0x4e, 0x10, 0x5e, 0x5d, 0x2a, + 0x2d, 0x5a, 0x61, 0x3b, 0x18, 0x4d, 0x0d, 0x11, 0x44, 0x4c, 0x31, 0x50, 0x01, 0xe3, 0x02, 0x06, + 0x00, 0x34, 0x09, 0x06, 0xd5, 0x05, 0xb9, 0x08, 0x06, 0x00, 0x43, 0x09, 0x00, 0x2e, 0x09, 0x00, + 0x65, 0x09, 0x04, 0xe3, 0x06, 0xd6, 0x05, 0xc4, 0x08, 0x04, 0x00, 0xf9, 0x08, 0x05, 0x72, 0x09, + 0x01, 0x00, 0x9a, 0x09, 0x04, 0xda, 0x06, 0xd9, 0x00, 0xd3, 0x0c, 0x05, 0x4a, 0x08, 0x03, 0x3d, + 0x09, 0x03, 0x56, 0x02, 0x06, 0xd8, 0x05, 0xd1, 0x09, 0x03, 0x23, 0x09, 0x00, 0x06, 0x02, 0x00, + 0xb6, 0x01, 0x00, 0x30, 0x09, 0x00, 0x5b, 0x06, 0x00, 0x47, 0x07, 0x05, 0x44, 0x08, 0x2b, 0x22, + 0x26, 0x40, 0x21, 0x00, 0x00, 0x00, 0x22, 0x15, 0x40, 0x21, 0x19, 0x40, 0xcb, 0x6e, 0x28, 0x07, + 0xcb, 0xbe, 0x46, 0xdf, 0xc3, 0x89, 0x08, 0xcb, 0xfe, 0xe7, 0xcd, 0x79, 0x06, 0x38, 0x06, 0xd9, + 0x11, 0xf0, 0xd8, 0x19, 0xd9, 0xdc, 0xae, 0x08, 0xcd, 0x1a, 0x00, 0xfd, 0xcb, 0x19, 0xbe, 0x01, + 0x00, 0x00, 0xed, 0x43, 0x22, 0x40, 0xfe, 0x76, 0xc8, 0x4f, 0xe7, 0x79, 0xd6, 0xe6, 0x38, 0xe5, + 0x4f, 0x21, 0x52, 0x07, 0x09, 0x4e, 0x09, 0x18, 0x03, 0x2a, 0x1a, 0x40, 0x7e, 0x23, 0x22, 0x1a, + 0x40, 0x01, 0x09, 0x08, 0xc5, 0x4f, 0x17, 0x38, 0x0d, 0x21, 0x36, 0x08, 0x06, 0x00, 0x09, 0x4e, + 0x09, 0xe5, 0xcd, 0x1a, 0x00, 0xc9, 0xcd, 0x1a, 0x00, 0xfe, 0xd5, 0x20, 0x04, 0xfd, 0xcb, 0x19, + 0xfe, 0xb9, 0x20, 0x7a, 0xe7, 0xc9, 0x1f, 0x33, 0x4d, 0x17, 0x64, 0x1b, 0x6c, 0xfd, 0xcb, 0x01, + 0x7e, 0xc0, 0xc1, 0x7e, 0xfe, 0x76, 0xc4, 0xae, 0x08, 0x7e, 0xfe, 0x76, 0xc8, 0xe7, 0x18, 0xfa, + 0xfe, 0x76, 0xc4, 0xa8, 0x08, 0xbf, 0xc1, 0xcc, 0x3d, 0x08, 0xeb, 0x2a, 0x1a, 0x40, 0x4e, 0x23, + 0x46, 0xeb, 0xc5, 0xed, 0x4b, 0x22, 0x40, 0x78, 0xb1, 0xc9, 0xcd, 0x14, 0x0d, 0x30, 0x3f, 0xfd, + 0xcb, 0x01, 0x7e, 0xca, 0xad, 0x0a, 0x22, 0x20, 0x40, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0xad, 0x0a, + 0xfd, 0xcb, 0x01, 0xfe, 0xc9, 0xc1, 0xfd, 0x46, 0x01, 0xc5, 0xef, 0xd1, 0x01, 0x3d, 0x0c, 0x3a, + 0x01, 0x40, 0xcb, 0x7f, 0x20, 0xcc, 0xaa, 0xe6, 0x40, 0xc4, 0xae, 0x08, 0x18, 0xa5, 0x22, 0x20, + 0x40, 0xcd, 0x14, 0x0d, 0x30, 0x08, 0xdf, 0xc9, 0xef, 0xfd, 0xcb, 0x01, 0x76, 0xc0, 0x3a, 0x15, + 0x40, 0xfd, 0xb6, 0x16, 0xc0, 0x22, 0x15, 0x40, 0xc9, 0x20, 0x06, 0xfd, 0xcb, 0x01, 0x7e, 0x20, + 0x89, 0xc3, 0xe8, 0x07, 0xc5, 0xcd, 0xa8, 0x08, 0xc1, 0xcd, 0x3d, 0x08, 0x2a, 0x22, 0x40, 0xe5, + 0xcd, 0x3d, 0x0c, 0xc1, 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0xc5, 0x2b, 0xcb, 0x7e, 0xcb, 0xfe, 0x23, + 0x23, 0x20, 0x07, 0x01, 0x04, 0x00, 0x23, 0xcd, 0xd5, 0x05, 0x23, 0xd1, 0x73, 0x23, 0x72, 0x23, + 0xed, 0x5b, 0x02, 0x40, 0x13, 0x73, 0x23, 0x72, 0xc9, 0x2a, 0x20, 0x40, 0xcd, 0x3b, 0x0b, 0xfd, + 0xcb, 0x00, 0x7e, 0xc8, 0xeb, 0x2b, 0x2b, 0xcb, 0x7e, 0x28, 0x16, 0x13, 0x23, 0x73, 0x23, 0x72, + 0x23, 0x4e, 0x23, 0x46, 0xc5, 0xe3, 0xcd, 0xcd, 0x0d, 0xe1, 0xd8, 0x23, 0x4e, 0x23, 0x46, 0x18, + 0x13, 0xcf, 0x00, 0x20, 0x04, 0xed, 0x4b, 0x1e, 0x40, 0xed, 0x43, 0x1c, 0x40, 0xc9, 0xcf, 0x08, + 0xed, 0x4b, 0x17, 0x40, 0xed, 0x43, 0x02, 0x40, 0xfd, 0xcb, 0x01, 0xde, 0xc9, 0xcd, 0x34, 0x09, + 0xc3, 0x5b, 0x06, 0x2a, 0x02, 0x40, 0x23, 0xe3, 0xe5, 0xcd, 0x34, 0x09, 0x01, 0x06, 0x00, 0x2a, + 0x10, 0x40, 0x09, 0xeb, 0x2a, 0x25, 0x40, 0x67, 0x3e, 0x13, 0x85, 0x6f, 0x7c, 0x26, 0x00, 0x19, + 0xed, 0x72, 0xd8, 0xcf, 0x03, 0xe1, 0xc1, 0xe5, 0x78, 0xfe, 0x3f, 0x20, 0xc7, 0xe1, 0xc5, 0xe5, + 0xcf, 0x06, 0x7e, 0xfe, 0x76, 0xca, 0x1b, 0x07, 0xd6, 0xd8, 0xce, 0x00, 0x28, 0x13, 0xef, 0xcd, + 0xf1, 0x06, 0xcd, 0x1a, 0x00, 0xd6, 0xd8, 0xce, 0x00, 0x28, 0x06, 0xcd, 0x3d, 0x08, 0xc3, 0x1b, + 0x07, 0xd4, 0x27, 0x07, 0xe7, 0xfe, 0x76, 0xc8, 0x18, 0xde, 0xfd, 0xcb, 0x03, 0x7e, 0x20, 0x2f, + 0xe1, 0x21, 0x19, 0x40, 0xcb, 0xee, 0xcb, 0xb6, 0x3a, 0x01, 0x40, 0xe6, 0x40, 0x01, 0x02, 0x00, + 0x20, 0x02, 0x0e, 0x04, 0xb6, 0x77, 0xf7, 0xd0, 0x36, 0x76, 0x79, 0x0f, 0x0f, 0x38, 0x03, 0x12, + 0x2b, 0x77, 0x2b, 0x36, 0xb0, 0x3a, 0x25, 0x40, 0x3c, 0x32, 0x12, 0x40, 0xc3, 0xf7, 0x02, 0xcf, + 0x07, 0xc5, 0xef, 0xd1, 0xcd, 0x3d, 0x08, 0x3a, 0x22, 0x40, 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0x12, + 0xc9, 0x48, 0xc5, 0xcd, 0x18, 0x0d, 0x38, 0x3c, 0x01, 0x00, 0x09, 0x51, 0x59, 0xd6, 0xdc, 0x28, + 0x26, 0x1b, 0x06, 0x04, 0x3c, 0x28, 0x20, 0x3c, 0x28, 0x22, 0xfe, 0x27, 0x20, 0x10, 0xfd, 0xcb, + 0x01, 0xb6, 0x23, 0x22, 0x22, 0x40, 0xdf, 0x3d, 0x28, 0x17, 0xfe, 0x75, 0x20, 0xf8, 0xcd, 0xae, + 0x08, 0xd9, 0x01, 0x00, 0x00, 0x18, 0x35, 0xd5, 0xc5, 0xe7, 0x18, 0xc7, 0xcd, 0x49, 0x00, 0x18, + 0x16, 0xdf, 0x18, 0x13, 0xfe, 0x26, 0x38, 0x05, 0xcd, 0xad, 0x0a, 0x18, 0x0a, 0xcd, 0x79, 0x06, + 0xdc, 0xae, 0x08, 0xfd, 0xcb, 0x01, 0xf6, 0xcd, 0x1a, 0x00, 0xd9, 0x01, 0x00, 0x00, 0xd6, 0xdc, + 0x38, 0x0a, 0xfe, 0x0a, 0x30, 0x06, 0x4f, 0x21, 0xa3, 0x0a, 0x09, 0x46, 0xd1, 0x7a, 0xb8, 0x38, + 0x37, 0xa7, 0xd9, 0xc8, 0xd9, 0xfd, 0xcb, 0x01, 0x7e, 0x28, 0x14, 0x16, 0x00, 0x21, 0x1f, 0x0d, + 0x19, 0x19, 0x5e, 0x23, 0x56, 0x21, 0x7f, 0x0a, 0xe3, 0xd5, 0xed, 0x5b, 0x22, 0x40, 0xc9, 0x7b, + 0xfe, 0x0a, 0x1f, 0x1f, 0xfd, 0xae, 0x01, 0xe6, 0x40, 0xd9, 0xc4, 0xae, 0x08, 0xd9, 0xe1, 0x22, + 0x22, 0x40, 0xfd, 0xcb, 0x01, 0xf6, 0x18, 0xc4, 0xd5, 0x79, 0xfd, 0xcb, 0x01, 0x76, 0x20, 0x0a, + 0xc6, 0x03, 0x4f, 0xfe, 0x0a, 0xd9, 0xdc, 0xae, 0x08, 0xd9, 0x2a, 0x22, 0x40, 0xe5, 0xc5, 0xd9, + 0xc3, 0x19, 0x0a, 0x06, 0x06, 0x08, 0x07, 0x03, 0x02, 0x0a, 0x05, 0x05, 0x05, 0xe5, 0x21, 0x01, + 0x40, 0xcb, 0xae, 0xcb, 0xf6, 0xdf, 0xfe, 0x0d, 0xca, 0x30, 0x0b, 0xfe, 0xda, 0xca, 0x2b, 0x0b, + 0xcd, 0x18, 0x0d, 0x30, 0x03, 0xdf, 0x18, 0xf8, 0xfe, 0xda, 0x28, 0x0a, 0xfe, 0x0d, 0xc2, 0x35, + 0x0b, 0xdf, 0xfe, 0xda, 0x20, 0x51, 0x11, 0xbf, 0x0b, 0xe1, 0xe5, 0x4e, 0xcd, 0x55, 0x00, 0x13, + 0x1a, 0xb9, 0x28, 0xf7, 0xe6, 0x3f, 0xb9, 0x20, 0x05, 0x3e, 0xda, 0xbe, 0x28, 0x0b, 0x1a, 0xa7, + 0x28, 0x35, 0x13, 0x17, 0x30, 0xf8, 0x13, 0x18, 0xe0, 0xd5, 0xcd, 0x49, 0x00, 0xd1, 0xe3, 0x21, + 0x01, 0x40, 0x1a, 0xae, 0xe6, 0x40, 0x20, 0x1f, 0xcb, 0xee, 0xcb, 0xf6, 0x1a, 0xe6, 0x3f, 0xfe, + 0x0d, 0x20, 0x02, 0xcb, 0xb6, 0xcb, 0x7e, 0xe1, 0xc8, 0x21, 0xba, 0x0b, 0xe5, 0xeb, 0x23, 0x5e, + 0x23, 0x56, 0xd5, 0x2a, 0x22, 0x40, 0xc9, 0xe1, 0xc3, 0xae, 0x08, 0xcd, 0x49, 0x00, 0x18, 0x05, + 0xfd, 0xcb, 0x01, 0xb6, 0xdf, 0xe1, 0xfd, 0xcb, 0x01, 0x7e, 0xc8, 0x4e, 0x23, 0x7e, 0xe5, 0xfe, + 0xda, 0x20, 0x19, 0xc5, 0xed, 0x4b, 0x26, 0x40, 0xc5, 0xcd, 0x25, 0x00, 0xe1, 0x22, 0x26, 0x40, + 0xc1, 0x21, 0x00, 0x40, 0xcb, 0x7e, 0x20, 0x13, 0x36, 0x02, 0xe1, 0xc9, 0xcb, 0xa9, 0xfe, 0x0d, + 0x28, 0x09, 0xcb, 0xf1, 0xcd, 0x18, 0x0d, 0x38, 0x02, 0xcb, 0xe9, 0x2a, 0x08, 0x40, 0x7e, 0xe6, + 0x7f, 0xca, 0xd0, 0x0c, 0xb9, 0x20, 0x1c, 0x17, 0x87, 0xfa, 0xa4, 0x0b, 0x30, 0x3a, 0xd1, 0xd5, + 0xe5, 0x23, 0x1a, 0x13, 0xbe, 0x28, 0xfa, 0xf6, 0x80, 0xbe, 0x20, 0x06, 0x1a, 0xcd, 0x18, 0x0d, + 0x30, 0x09, 0xe1, 0xc5, 0xcd, 0x24, 0x06, 0xeb, 0xc1, 0x18, 0xd3, 0xd1, 0xd1, 0x23, 0x5e, 0x23, + 0x56, 0xeb, 0x18, 0x16, 0x38, 0xf6, 0xe3, 0x2a, 0x22, 0x40, 0xcb, 0x04, 0xd1, 0x20, 0x0f, 0x13, + 0x1a, 0xbd, 0x38, 0x0a, 0x29, 0x19, 0x18, 0xe5, 0xd1, 0x23, 0x22, 0x22, 0x40, 0xc9, 0xcf, 0x02, + 0x35, 0x2a, 0x2a, 0xf0, 0x24, 0x0c, 0x28, 0x2d, 0x37, 0xcd, 0x28, 0x0c, 0x28, 0x34, 0x29, 0xaa, + 0x24, 0x0c, 0x37, 0x33, 0xe9, 0xed, 0x0b, 0x39, 0x31, 0x8d, 0x38, 0x0c, 0x3a, 0x38, 0xf7, 0xf0, + 0x06, 0x38, 0x39, 0x37, 0xcd, 0x10, 0x0c, 0x26, 0x27, 0xf8, 0xf2, 0x0d, 0x00, 0xe5, 0x2a, 0x1c, + 0x40, 0x11, 0x4d, 0x00, 0x7c, 0xb5, 0x28, 0x0b, 0xcd, 0x55, 0x0d, 0xa7, 0xed, 0x42, 0x30, 0x05, + 0x23, 0x18, 0x02, 0xed, 0x52, 0x22, 0x1c, 0x40, 0xd1, 0xcd, 0x55, 0x0d, 0x60, 0x69, 0x23, 0xc9, + 0xd9, 0x01, 0x07, 0x00, 0xf7, 0x30, 0x1d, 0xd5, 0xd9, 0x44, 0x4d, 0xcd, 0xa1, 0x06, 0xd9, 0x3e, + 0x01, 0x12, 0xe1, 0xc9, 0x6e, 0x26, 0x00, 0xc9, 0x01, 0x02, 0x00, 0x7d, 0xf7, 0x30, 0x05, 0x36, + 0x01, 0x2b, 0x77, 0xc9, 0x21, 0x30, 0x0c, 0xc9, 0x7e, 0x3d, 0xc8, 0x23, 0xc9, 0xfd, 0xcb, 0x00, + 0x7e, 0xc8, 0xc5, 0x2a, 0x20, 0x40, 0xcd, 0x3b, 0x0b, 0x21, 0x00, 0x40, 0x7e, 0xfe, 0x02, 0x28, + 0xd1, 0x17, 0xfd, 0xcb, 0x01, 0x76, 0x38, 0x3b, 0x36, 0xff, 0x28, 0x47, 0x2a, 0x20, 0x40, 0x01, + 0x02, 0x00, 0x03, 0x23, 0x7e, 0xcd, 0x18, 0x0d, 0x38, 0xf8, 0xfe, 0xda, 0x28, 0x62, 0xf7, 0x30, + 0xb1, 0xd5, 0x2a, 0x20, 0x40, 0x0b, 0x0b, 0x0b, 0x1b, 0x78, 0xb1, 0x3e, 0x40, 0x28, 0x08, 0xed, + 0xb0, 0x7e, 0xf6, 0x80, 0x12, 0x3e, 0x60, 0xe1, 0xcd, 0xb9, 0x0c, 0xeb, 0x1b, 0xe1, 0xeb, 0x72, + 0x2b, 0x73, 0xc9, 0x20, 0xf8, 0xe1, 0xcd, 0xa4, 0x0c, 0x2a, 0x22, 0x40, 0x2b, 0xcd, 0x24, 0x06, + 0xc3, 0x66, 0x06, 0xe1, 0x3e, 0x01, 0x01, 0x01, 0x00, 0xbe, 0x23, 0x03, 0x20, 0xfb, 0xe5, 0xf7, + 0xeb, 0xe1, 0xd0, 0xed, 0xb8, 0xeb, 0x23, 0x3e, 0xa0, 0xeb, 0x2a, 0x20, 0x40, 0xae, 0xeb, 0xf5, + 0xcd, 0x0d, 0x0d, 0xf1, 0x2b, 0x77, 0x2a, 0x0c, 0x40, 0x22, 0x0a, 0x40, 0x2b, 0x36, 0x80, 0xc9, + 0xe1, 0xcf, 0x01, 0xa0, 0xc2, 0xbe, 0x0b, 0xc5, 0x60, 0x69, 0x23, 0x23, 0x29, 0x44, 0x4d, 0xf7, + 0xd2, 0x22, 0x0c, 0x2b, 0x54, 0x5d, 0x1b, 0x0b, 0x0b, 0x36, 0x00, 0xed, 0xb8, 0xc1, 0x71, 0x3e, + 0x80, 0x18, 0xc6, 0x2a, 0x0a, 0x40, 0xe5, 0x2a, 0x0c, 0x40, 0x2b, 0xcd, 0xd5, 0x05, 0x23, 0x23, + 0xc1, 0xed, 0x43, 0x0a, 0x40, 0xc1, 0xeb, 0x23, 0x37, 0xc9, 0x2a, 0x0c, 0x40, 0xed, 0x5b, 0x0a, + 0x40, 0xc3, 0x63, 0x06, 0xfe, 0x26, 0x18, 0x02, 0xfe, 0x1c, 0x3f, 0xd0, 0xfe, 0x40, 0xc9, 0x39, + 0x0d, 0x3e, 0x0d, 0x44, 0x0d, 0x90, 0x0d, 0xb5, 0x0d, 0xbc, 0x0d, 0x70, 0x0d, 0xc3, 0x0d, 0xcc, + 0x0d, 0xcd, 0x0d, 0xd9, 0x0d, 0xdf, 0x0d, 0xde, 0x0d, 0xa7, 0xed, 0x52, 0x18, 0x03, 0xa7, 0xed, + 0x5a, 0xe0, 0xcf, 0x05, 0xcd, 0xed, 0x0d, 0xc5, 0x08, 0xcd, 0x55, 0x0d, 0x20, 0x3f, 0xc1, 0x08, + 0x1f, 0xd0, 0xc3, 0xf6, 0x0d, 0x44, 0x4d, 0x3e, 0x10, 0x21, 0x00, 0x00, 0x29, 0xcb, 0x11, 0xcb, + 0x10, 0x30, 0x04, 0x19, 0x30, 0x01, 0x03, 0x3d, 0x20, 0xf2, 0x7c, 0xe6, 0x80, 0xb0, 0xb1, 0xc9, + 0xcb, 0x7a, 0x20, 0xce, 0xaf, 0xcd, 0xf2, 0x0d, 0xa3, 0x08, 0xc5, 0x42, 0x4b, 0xeb, 0x21, 0x01, + 0x00, 0x0b, 0xcb, 0x78, 0x20, 0xc8, 0xc5, 0xcd, 0x55, 0x0d, 0xc1, 0x28, 0xf4, 0xc1, 0x18, 0xb2, + 0x7a, 0xb3, 0x28, 0xae, 0xcd, 0xed, 0x0d, 0xc5, 0x1f, 0xed, 0x6a, 0x7c, 0x4d, 0x21, 0x00, 0x00, + 0x06, 0x10, 0xed, 0x6a, 0xed, 0x52, 0x30, 0x01, 0x19, 0xcb, 0x11, 0x17, 0x10, 0xf4, 0x67, 0x69, + 0x23, 0xc1, 0xd8, 0x18, 0x41, 0x7c, 0xa2, 0x67, 0x7d, 0xa3, 0x6f, 0xc9, 0x7c, 0xb2, 0x67, 0x7d, + 0xb3, 0x6f, 0xc9, 0xa7, 0xed, 0x52, 0x21, 0xff, 0xff, 0xc8, 0x23, 0xc9, 0xeb, 0xa7, 0xed, 0x52, + 0x7c, 0x17, 0xe2, 0xd6, 0x0d, 0x3f, 0xed, 0x62, 0xc9, 0xcd, 0xe4, 0x0d, 0x18, 0xe8, 0xeb, 0xcd, + 0xe4, 0x0d, 0x18, 0xf2, 0x1a, 0xbe, 0xc0, 0x3d, 0xc8, 0x13, 0x23, 0x18, 0xf7, 0xaf, 0xcd, 0xf1, + 0x0d, 0xeb, 0xcb, 0x7c, 0xc8, 0x3c, 0x08, 0x7c, 0x2f, 0x67, 0x7d, 0x2f, 0x6f, 0x23, 0x08, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x21, 0x78, 0x20, 0x20, 0x7f, 0x00, 0x00, 0x08, 0x3e, 0x48, 0x3e, 0x09, 0x3e, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3e, 0x41, 0x06, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x2a, 0x1c, 0x08, 0x1c, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, + 0x00, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, + 0x00, 0x1c, 0x22, 0x41, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x0c, 0x14, 0x04, 0x04, 0x04, 0x1e, 0x00, + 0x00, 0x3e, 0x41, 0x01, 0x3e, 0x40, 0x7f, 0x00, 0x00, 0x3e, 0x41, 0x06, 0x01, 0x41, 0x3e, 0x00, + 0x00, 0x0c, 0x14, 0x24, 0x44, 0x7f, 0x04, 0x00, 0x00, 0x7f, 0x40, 0x7e, 0x01, 0x41, 0x3e, 0x00, + 0x00, 0x3e, 0x40, 0x7e, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x7f, 0x01, 0x02, 0x04, 0x08, 0x08, 0x00, + 0x00, 0x3e, 0x41, 0x3e, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x3e, 0x41, 0x41, 0x3f, 0x01, 0x3e, 0x00, + 0x00, 0x3e, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x00, 0x00, 0x7e, 0x41, 0x7e, 0x41, 0x41, 0x7e, 0x00, + 0x00, 0x1e, 0x21, 0x40, 0x40, 0x21, 0x1e, 0x00, 0x00, 0x7c, 0x42, 0x41, 0x41, 0x42, 0x7c, 0x00, + 0x00, 0x7f, 0x40, 0x7c, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x1e, 0x21, 0x40, 0x47, 0x21, 0x1e, 0x00, 0x00, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41, 0x00, + 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x02, 0x02, 0x02, 0x42, 0x22, 0x1c, 0x00, + 0x00, 0x42, 0x44, 0x78, 0x44, 0x42, 0x41, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, + 0x00, 0x41, 0x63, 0x55, 0x49, 0x41, 0x41, 0x00, 0x00, 0x61, 0x51, 0x49, 0x45, 0x43, 0x41, 0x00, + 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x7e, 0x41, 0x41, 0x7e, 0x40, 0x40, 0x00, + 0x00, 0x3e, 0x41, 0x41, 0x49, 0x45, 0x3e, 0x00, 0x00, 0x7e, 0x41, 0x41, 0x7e, 0x44, 0x42, 0x00, + 0x00, 0x3e, 0x40, 0x3e, 0x01, 0x41, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x41, 0x41, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x49, 0x55, 0x22, 0x00, 0x00, 0x21, 0x12, 0x0c, 0x0c, 0x12, 0x21, 0x00, + 0x00, 0x41, 0x22, 0x1c, 0x08, 0x08, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x04, 0x08, 0x10, 0x7f, 0x00, +}; diff --git a/MCUME_esp32/esp81/main/zx81.c b/MCUME_esp32/esp81/main/zx81.c new file mode 100644 index 0000000..9097f02 --- /dev/null +++ b/MCUME_esp32/esp81/main/zx81.c @@ -0,0 +1,561 @@ + +#include "z80.h" +#include "zx80rom.h" +#include "zx81rom.h" +#include "emuapi.h" +#include "common.h" +#include "AY8910.h" +#include "string.h" + +#define MEMORYRAM_SIZE 0x10000 + +static AY8910 ay; + +static byte memo[ MEMORYRAM_SIZE ]; +byte * mem = memo; // 0; +unsigned char *memptr[64]; +int memattr[64]; +int unexpanded=0; +int nmigen=0,hsyncgen=0,vsync=0; +int vsync_visuals=0; +int signal_int_flag=0; +int interrupted=0; +int ramsize=32; //32; + +/* the keyboard state and other */ +static byte keyboard[ 9 ] = {0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff};; +static byte * XBuf=0; +int zx80=0; +int autoload=1; + + +struct { unsigned char R,G,B; } Palette[16] = { + { 0, 0, 0}, + { 255, 255, 255} +}; + +const byte map_qw[8][5] = { + {224,29,27,6,25}, // vcxz + {10,22, 7, 9, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +}; + +static char tapename[64]={0}; +static const int kBuf[]={13,25,19,25,19,40}; //,21,40}; // LOAD "" (J shift p shift p, R ENTER) +static const int tBuf[]={2,0,2,0,2,2};//200!,2,2}; +static int kcount=0; +static int timeout=100; + + + +unsigned int in(int h, int l) +{ + + int ts=0; /* additional cycles*256 */ + int tapezeromask=0x80; /* = 0x80 if no tape noise (?) */ + + if(!(l&4)) l=0xfb; + if(!(l&1)) l=0xfe; + + switch(l) + { + //case 0xfb: + // return(printer_inout(0,0)); + + case 0xfe: + /* also disables hsync/vsync if nmi off + * (yes, vsync requires nmi off too, Flight Simulation confirms this) + */ + if(!nmigen) + { + hsyncgen=0; + + /* if vsync was on before, record position */ + if(!vsync) + vsync_raise(); + vsync=1; + + } + + switch(h) + { + case 0xfe: return(ts|(keyboard[0]^tapezeromask)); + case 0xfd: return(ts|(keyboard[1]^tapezeromask)); + case 0xfb: return(ts|(keyboard[2]^tapezeromask)); + case 0xf7: return(ts|(keyboard[3]^tapezeromask)); + case 0xef: return(ts|(keyboard[4]^tapezeromask)); + case 0xdf: return(ts|(keyboard[5]^tapezeromask)); + case 0xbf: return(ts|(keyboard[6]^tapezeromask)); + case 0x7f: return(ts|(keyboard[7]^tapezeromask)); + default: + { + int i,mask,retval=0xff; + + /* some games (e.g. ZX Galaxians) do smart-arse things + * like zero more than one bit. What we have to do to + * support this is AND together any for which the corresponding + * bit is zero. + */ + for(i=0,mask=1;i<8;i++,mask<<=1) + if(!(h&mask)) + retval&=keyboard[i]; + return(ts|(retval^tapezeromask)); + } + } + break; + } + + return(ts|255); +} + +unsigned int out(int h,int l,int a) + +{ + /* either in from fe or out to ff takes one extra cycle; + * experimentation strongly suggests not only that out to + * ff takes one extra, but that *all* outs do. + */ + int ts=1; /* additional cycles */ + + + + /* the examples in the manual (using DF/0F) and the + * documented ports (CF/0F) don't match, so decode is + * important for that. + */ + if(!(l&0xf0)) /* not sure how many needed, so assume all 4 */ + l=0x0f; + else + if(!(l&0x20)) /* bit 5 low is common to DF and CF */ + l=0xdf; + + + if(!(l&4)) l=0xfb; + if(!(l&2)) l=0xfd; + if(!(l&1)) l=0xfe; + + + switch(l) + { + case 0x0f: /* Zon X data */ + WrData8910(&ay,a); + break; + case 0xdf: /* Zon X reg. select */ + WrCtrl8910(&ay,(a &0x0F)); + break; + + case 0xfb: + return(ts/*|printer_inout(1,a)*/); + case 0xfd: + nmigen=0; + if(vsync) + vsync_lower(); + vsync=0; + hsyncgen=1; + break; + case 0xfe: + if(!zx80) + { + nmigen=1; + break; + } + /* falls through, if zx80 */ + case 0xff: /* XXX should *any* out turn off vsync? */ + /* fill screen gap since last raising of vsync */ + if(vsync) + vsync_lower(); + vsync=0; + hsyncgen=1; + break; + } + + return(ts); +} + + + +void sighandler(int a) +{ + signal_int_flag=1; +} + +void frame_pause(void) +{ + signal_int_flag=0; + + if(interrupted<2) + interrupted=1; +} + +void do_interrupt() +{ + /* being careful here not to screw up any pending reset... */ + if(interrupted==1) + interrupted=0; +} + +void bitbufBlit(unsigned char * buf) +{ + memset( XBuf, 1, WIDTH*8 ); + buf = buf + (ZX_VID_MARGIN*(ZX_VID_FULLWIDTH/8)); + int y,x,i; + byte d; + for(y=0;y<192;y++) + { + byte * src = buf + 4; + for(x=0;x<32;x++) + { + byte * dst=&XBuf[(x<<3)+BORDER]; + d = *src++; + for (i=0;i<8;i++) + { + if ( d & 128 ) + { + *dst++=0; + } + else + { + *dst++=1; + } + d <<= 1; + } + } + emu_DrawLine(&XBuf[0], WIDTH, HEIGHT, y); + buf += (ZX_VID_FULLWIDTH/8); + } +} + +static void updateKeyboard (void) +{ + int nb_keys=0; + int k = emu_GetPad(); + int hk = emu_ReadI2CKeyboard(); + if ( (k == 0) && (hk == 0) ) { + memset(keyboard, 0xff, sizeof(keyboard)); + } + else { + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) || (hk == map_qw[j][i]) ) { + keyboard[j] &= ~ (1<<(4-i)); + nb_keys++; + } + } + } + } +} + +static void handleKeyBuf(void) +{ + if (timeout) { + timeout--; + if (timeout==0) { + memset(keyboard, 0xff, sizeof(keyboard)); + emu_printf("key up"); + } + } + else { + if (!(kcount == (sizeof(kBuf)/sizeof(int)))) { + emu_printf("key dw"); + timeout=tBuf[kcount]; + int k=kBuf[kcount++]; + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) ) { + keyboard[j] &= ~ (1<<(4-i)); + } + } + } + if (timeout == 0) { + timeout=tBuf[kcount]; + int k=kBuf[kcount++]; + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) ) { + keyboard[j] &= ~ (1<<(4-i)); + } + } + } + } + } + } +} + +/* despite the name, this also works for the ZX80 :-) */ +void reset81() +{ + interrupted=2; /* will cause a reset */ + memset(mem+0x4000,0,0xc000); +} + +void load_p(int a) +{ + emu_printf("loading..."); +/* + int got_ascii_already=0; + if(zx80) { + } + else + { + if(a>=32768) + { + got_ascii_already=1; + emu_printf("got ascii"); + } + if(!got_ascii_already) + { + } + } +*/ + emu_printf(tapename); + int size = emu_FileSize(tapename); + if ( !emu_FileOpen(tapename) ) { + /* the partial snap will crash without a file, so reset */ + if(autoload) + reset81(),autoload=0; + return; + + } + + autoload=0; + emu_FileRead(( char*)&mem[(zx80?0x4000:0x4009)], size); + emu_FileClose(); + + if(zx80) + store(0x400b,fetch(0x400b)+1); +} + +void save_p(int a) +{ + +} + + + +void zx81hacks() +{ + /* patch save routine */ + mem[0x2fc]=0xed; mem[0x2fd]=0xfd; + mem[0x2fe]=0xc3; mem[0x2ff]=0x07; mem[0x300]=0x02; + + /* patch load routine */ + mem[0x347]=0xeb; + mem[0x348]=0xed; mem[0x349]=0xfc; + mem[0x34a]=0xc3; mem[0x34b]=0x07; mem[0x34c]=0x02; +} + +void zx80hacks() +{ + /* patch save routine */ + mem[0x1b6]=0xed; mem[0x1b7]=0xfd; + mem[0x1b8]=0xc3; mem[0x1b9]=0x83; mem[0x1ba]=0x02; + + /* patch load routine */ + mem[0x206]=0xed; mem[0x207]=0xfc; + mem[0x208]=0xc3; mem[0x209]=0x83; mem[0x20a]=0x02; +} + +static void initmem() +{ + int f; + int count; + + if(zx80) + { + memset(mem+0x1000,0,0xf000); + } + else + { + memset(mem+0x2000,0,0xe000); + } + + + /* ROM setup */ + count=0; + for(f=0;f<16;f++) + { + memattr[f]=memattr[32+f]=0; + memptr[f]=memptr[32+f]=mem+1024*count; + count++; + if(count>=(zx80?4:8)) count=0; + } + + /* RAM setup */ + if(unexpanded) + ramsize=1; + count=0; + for(f=16;f<32;f++) + { + memattr[f]=memattr[32+f]=1; + memptr[f]=memptr[32+f]=mem+1024*(16+count); + count++; + if(count>=ramsize) count=0; + } + + +/* z81's ROM and RAM initialisation code is OK for <= 16K RAM but beyond + * that it requires a little tweaking. + * + * The following diagram shows the ZX81 + 8K ROM. The ZX80 version is + * the same except that each 8K ROM region will contain two copies of + * the 4K ROM. + * + * RAM less than 16K is mirrored throughout the 16K region. + * + * The ROM will only detect up to 8000h when setting RAMTOP, therefore + * having more than 16K RAM will require RAMTOP to be set by the user + * (or user program) to either 49152 for 32K or 65535 for 48/56K. + * + * 1K to 16K 32K 48K 56K Extra Info. + * + * 65535 +----------+ +----------+ +----------+ +----------+ + * (FFFFh) | 16K RAM | | 16K RAM | | 16K RAM | | 16K RAM | DFILE can be + * | mirrored | | mirrored | | | | | wholly here. + * | | | | | | | | + * | | | | | | | | BASIC variables + * | | | | | | | | can go here. + * 49152 +----------+ +----------+ +----------+ +----------+ + * (C000h) | 8K ROM | | 16K RAM | | 16K RAM | | 16K RAM | BASIC program + * | mirrored | | | | | | | is restricted + * 40960 +----------+ | | | | | | to here. + * (A000h) | 8K ROM | | | | | | | + * | mirrored | | | | | | | + * 32768 +----------+ +----------+ +----------+ +----------+ + * (8000h) | 16K RAM | | 16K RAM | | 16K RAM | | 16K RAM | No machine code + * | | | | | | | | beyond here. + * | | | | | | | | + * | | | | | | | | DFILE can be + * | | | | | | | | wholly here. + * 16384 +----------+ +----------+ +----------+ +----------+ + * (4000h) | 8K ROM | | 8K ROM | | 8K ROM | | 8K RAM | + * | mirrored | | mirrored | | mirrored | | | + * 8192 +----------+ +----------+ +----------+ +----------+ + * (2000h) | 8K ROM | | 8K ROM | | 8K ROM | | 8K ROM | + * | | | | | | | | + * 0 +----------+ +----------+ +----------+ +----------+ + */ + + switch(ramsize) + { + case 56: + for(f=8;f<16;f++) + { + memattr[f]=1; /* It's now writable */ + memptr[f]=mem+1024*f; + } + case 48: + for(f=48;f<64;f++) + { + memattr[f]=1; + memptr[f]=mem+1024*f; + } + case 32: + for(f=32;f<48;f++) + { + memattr[f]=1; + memptr[f]=mem+1024*f; + } + break; + } + + if(zx80) + zx80hacks(); + else + zx81hacks(); +} + + +void z81_Init(void) +{ +#if HAS_SND + emu_sndInit(); +#endif + + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH*8); + /* Set up the palette */ + int J; + for(J=0;J<2;J++) + emu_SetPaletteEntry(Palette[J].R,Palette[J].G,Palette[J].B, J); + + emu_printf("Allocating RAM"); + if (mem == 0) mem = emu_Malloc(MEMORYRAM_SIZE); + + Reset8910(&ay,3500000,0); + + /* load rom with ghosting at 0x2000 */ + int siz=(zx80?4096:8192); + if(zx80) + { + memcpy( mem + 0x0000, zx80rom, siz ); + } + else + { + memcpy( mem + 0x0000, zx81rom, siz ); + } + memcpy(mem+siz,mem,siz); + if(zx80) + memcpy(mem+siz*2,mem,siz*2); + + initmem(); + + /* reset the keyboard state */ + memset( keyboard, 255, sizeof( keyboard ) ); + + ResetZ80(); + } + + +void z81_Step(void) +{ + ExecZ80(); + sighandler(0); + //if (strlen(tapename)) handleKeyBuf(); + emu_DrawVsync(); + updateKeyboard(); + Loop8910(&ay,20); +} + +static int endsWith(const char * s, const char * suffix) +{ + int retval = 0; + int len = strlen(s); + int slen = strlen(suffix); + if (len > slen ) { + if (!strcmp(&s[len-slen], suffix)) { + retval = 1; + } + } + return (retval); +} + +void z81_Start(char * filename) +{ + char c; + strncpy(tapename,filename,64); + if ( emu_FileOpen(tapename) ) { + int fsize = emu_FileRead(&c, 1); + if ( fsize == 0) { + autoload = 0; + emu_printf("no autoload"); + } + emu_FileClose(); + } + + emu_setKeymap(1); + if ( (endsWith(filename, ".80")) || (endsWith(filename, ".o")) || (endsWith(filename, ".O"))) { + zx80=1; + ramsize=48; + emu_setKeymap(0); + } + else if (endsWith(filename, ".56") ) { + ramsize = 56; + } +} diff --git a/MCUME_esp32/esp81/main/zx81.h b/MCUME_esp32/esp81/main/zx81.h new file mode 100755 index 0000000..6b8a118 --- /dev/null +++ b/MCUME_esp32/esp81/main/zx81.h @@ -0,0 +1,3 @@ +extern void z81_Init(void); +extern void z81_Step(void); +extern void z81_Start(char * filename); \ No newline at end of file diff --git a/MCUME_esp32/esp81/main/zx81rom.h b/MCUME_esp32/esp81/main/zx81rom.h new file mode 100644 index 0000000..ed75df4 --- /dev/null +++ b/MCUME_esp32/esp81/main/zx81rom.h @@ -0,0 +1,514 @@ +static const unsigned char zx81rom[] = { + 0xd3, 0xfd, 0x01, 0xff, 0x7f, 0xc3, 0xcb, 0x03, 0x2a, 0x16, 0x40, 0x22, 0x18, 0x40, 0x18, 0x46, + 0xa7, 0xc2, 0xf1, 0x07, 0xc3, 0xf5, 0x07, 0xff, 0x2a, 0x16, 0x40, 0x7e, 0xa7, 0xc0, 0x00, 0x00, + 0xcd, 0x49, 0x00, 0x18, 0xf7, 0xff, 0xff, 0xff, 0xc3, 0x9d, 0x19, 0xf1, 0xd9, 0xe3, 0xd9, 0xc9, + 0xc5, 0x2a, 0x14, 0x40, 0xe5, 0xc3, 0x88, 0x14, 0x0d, 0xc2, 0x45, 0x00, 0xe1, 0x05, 0xc8, 0xcb, + 0xd9, 0xed, 0x4f, 0xfb, 0xe9, 0xd1, 0xc8, 0x18, 0xf8, 0x2a, 0x16, 0x40, 0x23, 0x22, 0x16, 0x40, + 0x7e, 0xfe, 0x7f, 0xc0, 0x18, 0xf6, 0xe1, 0x6e, 0xfd, 0x75, 0x00, 0xed, 0x7b, 0x02, 0x40, 0xcd, + 0x07, 0x02, 0xc3, 0xbc, 0x14, 0xff, 0x08, 0x3c, 0xfa, 0x6d, 0x00, 0x28, 0x02, 0x08, 0xc9, 0x08, + 0xf5, 0xc5, 0xd5, 0xe5, 0x2a, 0x0c, 0x40, 0xcb, 0xfc, 0x76, 0xd3, 0xfd, 0xdd, 0xe9, 0x3f, 0x3d, + 0x28, 0x3b, 0x26, 0x38, 0x29, 0x2b, 0x2c, 0x36, 0x3c, 0x2a, 0x37, 0x39, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x1c, 0x25, 0x24, 0x23, 0x22, 0x35, 0x34, 0x2e, 0x3a, 0x3e, 0x76, 0x31, 0x30, 0x2f, 0x2d, + 0x00, 0x1b, 0x32, 0x33, 0x27, 0x0e, 0x19, 0x0f, 0x18, 0xe3, 0xe1, 0xe4, 0xe5, 0xe2, 0xc0, 0xd9, + 0xe0, 0xdb, 0xdd, 0x75, 0xda, 0xde, 0xdf, 0x72, 0x77, 0x74, 0x73, 0x70, 0x71, 0x0b, 0x11, 0x10, + 0x0d, 0xdc, 0x79, 0x14, 0x15, 0x16, 0xd8, 0x0c, 0x1a, 0x12, 0x13, 0x17, 0xcd, 0xce, 0xc1, 0x78, + 0xca, 0xcb, 0xcc, 0xd1, 0xd2, 0xc7, 0xc8, 0xc9, 0xcf, 0x40, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0xc2, 0xd3, 0xc4, 0xd6, 0xd5, 0x78, 0xd4, 0xc6, 0xc5, 0xd0, 0x78, 0x78, + 0x42, 0xd7, 0x41, 0x08, 0x0a, 0x09, 0x8a, 0x89, 0x81, 0x82, 0x07, 0x84, 0x06, 0x01, 0x02, 0x87, + 0x04, 0x05, 0x77, 0x78, 0x85, 0x03, 0x83, 0x8b, 0x91, 0x90, 0x8d, 0x86, 0x78, 0x92, 0x95, 0x96, + 0x88, 0x8f, 0x0b, 0x8b, 0x26, 0xb9, 0x39, 0x26, 0xa7, 0x8f, 0x28, 0x34, 0x29, 0xaa, 0x3b, 0x26, + 0xb1, 0x31, 0x2a, 0xb3, 0x38, 0x2e, 0xb3, 0x28, 0x34, 0xb8, 0x39, 0x26, 0xb3, 0x26, 0x38, 0xb3, + 0x26, 0x28, 0xb8, 0x26, 0x39, 0xb3, 0x31, 0xb3, 0x2a, 0x3d, 0xb5, 0x2e, 0x33, 0xb9, 0x38, 0x36, + 0xb7, 0x38, 0x2c, 0xb3, 0x26, 0x27, 0xb8, 0x35, 0x2a, 0x2a, 0xb0, 0x3a, 0x38, 0xb7, 0x38, 0x39, + 0x37, 0x8d, 0x28, 0x2d, 0x37, 0x8d, 0x33, 0x34, 0xb9, 0x17, 0x97, 0x34, 0xb7, 0x26, 0x33, 0xa9, + 0x13, 0x94, 0x12, 0x94, 0x13, 0x92, 0x39, 0x2d, 0x2a, 0xb3, 0x39, 0xb4, 0x38, 0x39, 0x2a, 0xb5, + 0x31, 0x35, 0x37, 0x2e, 0x33, 0xb9, 0x31, 0x31, 0x2e, 0x38, 0xb9, 0x38, 0x39, 0x34, 0xb5, 0x38, + 0x31, 0x34, 0xbc, 0x2b, 0x26, 0x38, 0xb9, 0x33, 0x2a, 0xbc, 0x38, 0x28, 0x37, 0x34, 0x31, 0xb1, + 0x28, 0x34, 0x33, 0xb9, 0x29, 0x2e, 0xb2, 0x37, 0x2a, 0xb2, 0x2b, 0x34, 0xb7, 0x2c, 0x34, 0x39, + 0xb4, 0x2c, 0x34, 0x38, 0x3a, 0xa7, 0x2e, 0x33, 0x35, 0x3a, 0xb9, 0x31, 0x34, 0x26, 0xa9, 0x31, + 0x2e, 0x38, 0xb9, 0x31, 0x2a, 0xb9, 0x35, 0x26, 0x3a, 0x38, 0xaa, 0x33, 0x2a, 0x3d, 0xb9, 0x35, + 0x34, 0x30, 0xaa, 0x35, 0x37, 0x2e, 0x33, 0xb9, 0x35, 0x31, 0x34, 0xb9, 0x37, 0x3a, 0xb3, 0x38, + 0x26, 0x3b, 0xaa, 0x37, 0x26, 0x33, 0xa9, 0x2e, 0xab, 0x28, 0x31, 0xb8, 0x3a, 0x33, 0x35, 0x31, + 0x34, 0xb9, 0x28, 0x31, 0x2a, 0x26, 0xb7, 0x37, 0x2a, 0x39, 0x3a, 0x37, 0xb3, 0x28, 0x34, 0x35, + 0xbe, 0x37, 0x33, 0xa9, 0x2e, 0x33, 0x30, 0x2a, 0x3e, 0x8d, 0x35, 0xae, 0x23, 0xeb, 0x2a, 0x14, + 0x40, 0x37, 0xed, 0x52, 0xeb, 0xd0, 0xe1, 0x21, 0x3b, 0x40, 0x7e, 0x17, 0xae, 0x17, 0xd0, 0x3e, + 0x7f, 0x08, 0x06, 0x11, 0xd3, 0xfe, 0x10, 0xfe, 0xd3, 0xfd, 0x08, 0x17, 0x30, 0x08, 0xcb, 0xfe, + 0xf5, 0xc5, 0xd5, 0xe5, 0x18, 0x03, 0xcb, 0xb6, 0xc9, 0x2a, 0x34, 0x40, 0x2b, 0x3e, 0x7f, 0xa4, + 0xb5, 0x7c, 0x20, 0x03, 0x17, 0x18, 0x02, 0x46, 0x37, 0x67, 0x22, 0x34, 0x40, 0xd0, 0xcd, 0xbb, + 0x02, 0xed, 0x4b, 0x25, 0x40, 0x22, 0x25, 0x40, 0x78, 0xc6, 0x02, 0xed, 0x42, 0x3a, 0x27, 0x40, + 0xb4, 0xb5, 0x58, 0x06, 0x0b, 0x21, 0x3b, 0x40, 0xcb, 0x86, 0x20, 0x08, 0xcb, 0x7e, 0xcb, 0xc6, + 0xc8, 0x05, 0x00, 0x37, 0x21, 0x27, 0x40, 0x3f, 0xcb, 0x10, 0x10, 0xfe, 0x46, 0x7b, 0xfe, 0xfe, + 0x9f, 0x06, 0x1f, 0xb6, 0xa0, 0x1f, 0x77, 0xd3, 0xff, 0x2a, 0x0c, 0x40, 0xcb, 0xfc, 0xcd, 0x92, + 0x02, 0xed, 0x5f, 0x01, 0x01, 0x19, 0x3e, 0xf5, 0xcd, 0xb5, 0x02, 0x2b, 0xcd, 0x92, 0x02, 0xc3, + 0x29, 0x02, 0xdd, 0xe1, 0xfd, 0x4e, 0x28, 0xfd, 0xcb, 0x3b, 0x7e, 0x28, 0x0c, 0x79, 0xed, 0x44, + 0x3c, 0x08, 0xd3, 0xfe, 0xe1, 0xd1, 0xc1, 0xf1, 0xc9, 0x3e, 0xfc, 0x06, 0x01, 0xcd, 0xb5, 0x02, + 0x2b, 0xe3, 0xe3, 0xdd, 0xe9, 0xed, 0x4f, 0x3e, 0xdd, 0xfb, 0xe9, 0x21, 0xff, 0xff, 0x01, 0xfe, + 0xfe, 0xed, 0x78, 0xf6, 0x01, 0xf6, 0xe0, 0x57, 0x2f, 0xfe, 0x01, 0x9f, 0xb0, 0xa5, 0x6f, 0x7c, + 0xa2, 0x67, 0xcb, 0x00, 0xed, 0x78, 0x38, 0xed, 0x1f, 0xcb, 0x14, 0x17, 0x17, 0x17, 0x9f, 0xe6, + 0x18, 0xc6, 0x1f, 0x32, 0x28, 0x40, 0xc9, 0xfd, 0xcb, 0x3b, 0x7e, 0xc8, 0x76, 0xd3, 0xfd, 0xfd, + 0xcb, 0x3b, 0xbe, 0xc9, 0xcf, 0x0e, 0xcd, 0xa8, 0x03, 0x38, 0xf9, 0xeb, 0x11, 0xcb, 0x12, 0xcd, + 0x46, 0x0f, 0x30, 0x2e, 0x10, 0xfe, 0x1b, 0x7a, 0xb3, 0x20, 0xf4, 0xcd, 0x1e, 0x03, 0xcb, 0x7e, + 0x23, 0x28, 0xf8, 0x21, 0x09, 0x40, 0xcd, 0x1e, 0x03, 0xcd, 0xfc, 0x01, 0x18, 0xf8, 0x5e, 0x37, + 0xcb, 0x13, 0xc8, 0x9f, 0xe6, 0x05, 0xc6, 0x04, 0x4f, 0xd3, 0xff, 0x06, 0x23, 0x10, 0xfe, 0xcd, + 0x46, 0x0f, 0x30, 0x72, 0x06, 0x1e, 0x10, 0xfe, 0x0d, 0x20, 0xee, 0xa7, 0x10, 0xfd, 0x18, 0xe0, + 0xcd, 0xa8, 0x03, 0xcb, 0x12, 0xcb, 0x0a, 0xcd, 0x4c, 0x03, 0x18, 0xfb, 0x0e, 0x01, 0x06, 0x00, + 0x3e, 0x7f, 0xdb, 0xfe, 0xd3, 0xff, 0x1f, 0x30, 0x49, 0x17, 0x17, 0x38, 0x28, 0x10, 0xf1, 0xf1, + 0xba, 0xd2, 0xe5, 0x03, 0x62, 0x6b, 0xcd, 0x4c, 0x03, 0xcb, 0x7a, 0x79, 0x20, 0x03, 0xbe, 0x20, + 0xd6, 0x23, 0x17, 0x30, 0xf1, 0xfd, 0x34, 0x15, 0x21, 0x09, 0x40, 0x50, 0xcd, 0x4c, 0x03, 0x71, + 0xcd, 0xfc, 0x01, 0x18, 0xf6, 0xd5, 0x1e, 0x94, 0x06, 0x1a, 0x1d, 0xdb, 0xfe, 0x17, 0xcb, 0x7b, + 0x7b, 0x38, 0xf5, 0x10, 0xf5, 0xd1, 0x20, 0x04, 0xfe, 0x56, 0x30, 0xb2, 0x3f, 0xcb, 0x11, 0x30, + 0xad, 0xc9, 0x7a, 0xa7, 0x28, 0xbb, 0xcf, 0x0c, 0xcd, 0x55, 0x0f, 0x3a, 0x01, 0x40, 0x87, 0xfa, + 0x9a, 0x0d, 0xe1, 0xd0, 0xe5, 0xcd, 0xe7, 0x02, 0xcd, 0xf8, 0x13, 0x62, 0x6b, 0x0d, 0xf8, 0x09, + 0xcb, 0xfe, 0xc9, 0xcd, 0xe7, 0x02, 0xed, 0x4b, 0x04, 0x40, 0x0b, 0x60, 0x69, 0x3e, 0x3f, 0x36, + 0x02, 0x2b, 0xbc, 0x20, 0xfa, 0xa7, 0xed, 0x42, 0x09, 0x23, 0x30, 0x06, 0x35, 0x28, 0x03, 0x35, + 0x28, 0xf3, 0x22, 0x04, 0x40, 0x2a, 0x04, 0x40, 0x2b, 0x36, 0x3e, 0x2b, 0xf9, 0x2b, 0x2b, 0x22, + 0x02, 0x40, 0x3e, 0x1e, 0xed, 0x47, 0xed, 0x56, 0xfd, 0x21, 0x00, 0x40, 0xfd, 0x36, 0x3b, 0x40, + 0x21, 0x7d, 0x40, 0x22, 0x0c, 0x40, 0x06, 0x19, 0x36, 0x76, 0x23, 0x10, 0xfb, 0x22, 0x10, 0x40, + 0xcd, 0x9a, 0x14, 0xcd, 0xad, 0x14, 0xcd, 0x07, 0x02, 0xcd, 0x2a, 0x0a, 0x2a, 0x0a, 0x40, 0xed, + 0x5b, 0x23, 0x40, 0xa7, 0xed, 0x52, 0xeb, 0x30, 0x04, 0x19, 0x22, 0x23, 0x40, 0xcd, 0xd8, 0x09, + 0x28, 0x01, 0xeb, 0xcd, 0x3e, 0x07, 0xfd, 0x35, 0x1e, 0x20, 0x37, 0x2a, 0x0a, 0x40, 0xcd, 0xd8, + 0x09, 0x2a, 0x16, 0x40, 0x37, 0xed, 0x52, 0x21, 0x23, 0x40, 0x30, 0x0b, 0xeb, 0x7e, 0x23, 0xed, + 0xa0, 0x12, 0x18, 0xc5, 0x21, 0x0a, 0x40, 0x5e, 0x23, 0x56, 0xe5, 0xeb, 0x23, 0xcd, 0xd8, 0x09, + 0xcd, 0xbb, 0x05, 0xe1, 0xfd, 0xcb, 0x2d, 0x6e, 0x20, 0x08, 0x72, 0x2b, 0x73, 0x18, 0xaa, 0xcd, + 0xad, 0x14, 0x2a, 0x14, 0x40, 0x7e, 0xfe, 0x7e, 0x20, 0x08, 0x01, 0x06, 0x00, 0xcd, 0x60, 0x0a, + 0x18, 0xf3, 0xfe, 0x76, 0x23, 0x20, 0xee, 0xcd, 0x37, 0x05, 0xcd, 0x1f, 0x0a, 0x2a, 0x14, 0x40, + 0xfd, 0x36, 0x00, 0xff, 0xcd, 0x66, 0x07, 0xfd, 0xcb, 0x00, 0x7e, 0x20, 0x24, 0x3a, 0x22, 0x40, + 0xfe, 0x18, 0x30, 0x1d, 0x3c, 0x32, 0x22, 0x40, 0x47, 0x0e, 0x01, 0xcd, 0x18, 0x09, 0x54, 0x5d, + 0x7e, 0x2b, 0xbe, 0x20, 0xfc, 0x23, 0xeb, 0x3a, 0x05, 0x40, 0xfe, 0x4d, 0xdc, 0x5d, 0x0a, 0x18, + 0xc9, 0x21, 0x00, 0x00, 0x22, 0x18, 0x40, 0x21, 0x3b, 0x40, 0xcb, 0x7e, 0xcc, 0x29, 0x02, 0xcb, + 0x46, 0x28, 0xfc, 0xed, 0x4b, 0x25, 0x40, 0xcd, 0x4b, 0x0f, 0xcd, 0xbd, 0x07, 0x30, 0x93, 0x3a, + 0x06, 0x40, 0x3d, 0xfa, 0x08, 0x05, 0x20, 0x0f, 0x32, 0x06, 0x40, 0x1d, 0x7b, 0xd6, 0x27, 0x38, + 0x01, 0x5f, 0x21, 0xcc, 0x00, 0x18, 0x0e, 0x7e, 0xfe, 0x76, 0x28, 0x2f, 0xfe, 0x40, 0xcb, 0xff, + 0x38, 0x19, 0x21, 0xc7, 0x00, 0x19, 0x18, 0x0d, 0x7e, 0xfd, 0xcb, 0x01, 0x56, 0x20, 0x07, 0xc6, + 0xc0, 0xfe, 0xe6, 0x30, 0x01, 0x7e, 0xfe, 0xf0, 0xea, 0x2d, 0x05, 0x5f, 0xcd, 0x37, 0x05, 0x7b, + 0xcd, 0x26, 0x05, 0xc3, 0x72, 0x04, 0xcd, 0x9b, 0x09, 0x12, 0xc9, 0x3e, 0x78, 0x5f, 0x21, 0x82, + 0x04, 0x19, 0x19, 0x4e, 0x23, 0x46, 0xc5, 0x2a, 0x14, 0x40, 0xfd, 0xcb, 0x2d, 0x6e, 0x20, 0x16, + 0xfd, 0xcb, 0x01, 0x96, 0x7e, 0xfe, 0x7f, 0xc8, 0x23, 0xcd, 0xb4, 0x07, 0x28, 0xf6, 0xfe, 0x26, + 0x38, 0xf2, 0xfe, 0xde, 0x28, 0xea, 0xfd, 0xcb, 0x01, 0xd6, 0x18, 0xe8, 0x01, 0x01, 0x00, 0xc3, + 0x60, 0x0a, 0x9f, 0x05, 0x54, 0x04, 0x76, 0x05, 0x7f, 0x05, 0xaf, 0x05, 0xc4, 0x05, 0x0c, 0x06, + 0x8b, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xcd, 0x93, 0x05, 0x7e, 0x36, 0x7f, 0x23, 0x18, 0x09, 0x23, + 0x7e, 0xfe, 0x76, 0x28, 0x18, 0x36, 0x7f, 0x2b, 0x77, 0x18, 0x98, 0xcd, 0x93, 0x05, 0xcd, 0x5c, + 0x05, 0x18, 0xf6, 0x2b, 0xed, 0x5b, 0x14, 0x40, 0x1a, 0xfe, 0x7f, 0xc0, 0xd1, 0x18, 0xea, 0x2a, + 0x0a, 0x40, 0xcd, 0xd8, 0x09, 0xeb, 0xcd, 0xbb, 0x05, 0x21, 0x0b, 0x40, 0xc3, 0x64, 0x04, 0x7b, + 0xe6, 0x07, 0x32, 0x06, 0x40, 0x18, 0xe6, 0xeb, 0x11, 0xc2, 0x04, 0x7e, 0xe6, 0xc0, 0x20, 0xf7, + 0x56, 0x23, 0x5e, 0xc9, 0xcd, 0x1f, 0x0a, 0x21, 0x6f, 0x04, 0xe5, 0xfd, 0xcb, 0x2d, 0x6e, 0xc0, + 0x2a, 0x14, 0x40, 0x22, 0x0e, 0x40, 0x21, 0x21, 0x18, 0x22, 0x39, 0x40, 0x2a, 0x0a, 0x40, 0xcd, + 0xd8, 0x09, 0xcd, 0xbb, 0x05, 0x7a, 0xb3, 0xc8, 0x2b, 0xcd, 0xa5, 0x0a, 0x23, 0x4e, 0x23, 0x46, + 0x23, 0xed, 0x5b, 0x0e, 0x40, 0x3e, 0x7f, 0x12, 0x13, 0xe5, 0x21, 0x1d, 0x00, 0x19, 0x09, 0xed, + 0x72, 0xe1, 0xd0, 0xed, 0xb0, 0xeb, 0xd1, 0xcd, 0xa6, 0x14, 0x18, 0x91, 0xcd, 0x1f, 0x0a, 0x21, + 0x72, 0x04, 0xfd, 0xcb, 0x2d, 0x6e, 0x20, 0x11, 0x2a, 0x14, 0x40, 0x7e, 0xfe, 0xff, 0x28, 0x06, + 0xcd, 0xe2, 0x08, 0xcd, 0x2a, 0x0a, 0x21, 0x19, 0x04, 0xe5, 0xcd, 0xba, 0x0c, 0xe1, 0xcd, 0x37, + 0x05, 0xcd, 0x5c, 0x05, 0xcd, 0x73, 0x0a, 0x20, 0x15, 0x78, 0xb1, 0xc2, 0xe0, 0x06, 0x0b, 0x0b, + 0xed, 0x43, 0x07, 0x40, 0xfd, 0x36, 0x22, 0x02, 0xed, 0x5b, 0x0c, 0x40, 0x18, 0x13, 0xfe, 0x76, + 0x28, 0x12, 0xed, 0x4b, 0x30, 0x40, 0xcd, 0x18, 0x09, 0xed, 0x5b, 0x29, 0x40, 0xfd, 0x36, 0x22, + 0x02, 0xdf, 0xfe, 0x76, 0xca, 0x13, 0x04, 0xfd, 0x36, 0x01, 0x80, 0xeb, 0x22, 0x29, 0x40, 0xeb, + 0xcd, 0x4d, 0x00, 0xcd, 0xc1, 0x0c, 0xfd, 0xcb, 0x01, 0x8e, 0x3e, 0xc0, 0xfd, 0x77, 0x19, 0xcd, + 0xa3, 0x14, 0xfd, 0xcb, 0x2d, 0xae, 0xfd, 0xcb, 0x00, 0x7e, 0x28, 0x22, 0x2a, 0x29, 0x40, 0xa6, + 0x20, 0x1c, 0x56, 0x23, 0x5e, 0xed, 0x53, 0x07, 0x40, 0x23, 0x5e, 0x23, 0x56, 0x23, 0xeb, 0x19, + 0xcd, 0x46, 0x0f, 0x38, 0xc7, 0x21, 0x00, 0x40, 0xcb, 0x7e, 0x28, 0x02, 0x36, 0x0c, 0xfd, 0xcb, + 0x38, 0x7e, 0xcc, 0x71, 0x08, 0x01, 0x21, 0x01, 0xcd, 0x18, 0x09, 0x3a, 0x00, 0x40, 0xed, 0x4b, + 0x07, 0x40, 0x3c, 0x28, 0x0c, 0xfe, 0x09, 0x20, 0x01, 0x03, 0xed, 0x43, 0x2b, 0x40, 0x20, 0x01, + 0x0b, 0xcd, 0xeb, 0x07, 0x3e, 0x18, 0xd7, 0xcd, 0x98, 0x0a, 0xcd, 0xad, 0x14, 0xc3, 0xc1, 0x04, + 0xed, 0x43, 0x0a, 0x40, 0x2a, 0x16, 0x40, 0xeb, 0x21, 0x13, 0x04, 0xe5, 0x2a, 0x1a, 0x40, 0xed, + 0x52, 0xe5, 0xc5, 0xcd, 0xe7, 0x02, 0xcd, 0x2a, 0x0a, 0xe1, 0xcd, 0xd8, 0x09, 0x20, 0x06, 0xcd, + 0xf2, 0x09, 0xcd, 0x60, 0x0a, 0xc1, 0x79, 0x3d, 0xb0, 0xc8, 0xc5, 0x03, 0x03, 0x03, 0x03, 0x2b, + 0xcd, 0x9e, 0x09, 0xcd, 0x07, 0x02, 0xc1, 0xc5, 0x13, 0x2a, 0x1a, 0x40, 0x2b, 0xed, 0xb8, 0x2a, + 0x0a, 0x40, 0xeb, 0xc1, 0x70, 0x2b, 0x71, 0x2b, 0x73, 0x2b, 0x72, 0xc9, 0xfd, 0xcb, 0x01, 0xce, + 0xcd, 0xa7, 0x0e, 0x78, 0xe6, 0x3f, 0x67, 0x69, 0x22, 0x0a, 0x40, 0xcd, 0xd8, 0x09, 0x1e, 0x00, + 0xcd, 0x45, 0x07, 0x18, 0xfb, 0xed, 0x4b, 0x0a, 0x40, 0xcd, 0xea, 0x09, 0x16, 0x92, 0x28, 0x05, + 0x11, 0x00, 0x00, 0xcb, 0x13, 0xfd, 0x73, 0x1e, 0x7e, 0xfe, 0x40, 0xc1, 0xd0, 0xc5, 0xcd, 0xa5, + 0x0a, 0x23, 0x7a, 0xd7, 0x23, 0x23, 0x22, 0x16, 0x40, 0xfd, 0xcb, 0x01, 0xc6, 0xed, 0x4b, 0x18, + 0x40, 0x2a, 0x16, 0x40, 0xa7, 0xed, 0x42, 0x20, 0x03, 0x3e, 0xb8, 0xd7, 0x2a, 0x16, 0x40, 0x7e, + 0x23, 0xcd, 0xb4, 0x07, 0x22, 0x16, 0x40, 0x28, 0xe4, 0xfe, 0x7f, 0x28, 0x10, 0xfe, 0x76, 0x28, + 0x5d, 0xcb, 0x77, 0x28, 0x05, 0xcd, 0x4b, 0x09, 0x18, 0xd3, 0xd7, 0x18, 0xd0, 0x3a, 0x06, 0x40, + 0x06, 0xab, 0xa7, 0x20, 0x05, 0x3a, 0x01, 0x40, 0x06, 0xb0, 0x1f, 0x1f, 0xe6, 0x01, 0x80, 0xcd, + 0xf5, 0x07, 0x18, 0xb9, 0xfe, 0x7e, 0xc0, 0x23, 0x23, 0x23, 0x23, 0x23, 0xc9, 0x16, 0x00, 0xcb, + 0x28, 0x9f, 0xf6, 0x26, 0x2e, 0x05, 0x95, 0x85, 0x37, 0xcb, 0x19, 0x38, 0xfa, 0x0c, 0xc0, 0x48, + 0x2d, 0x2e, 0x01, 0x20, 0xf2, 0x21, 0x7d, 0x00, 0x5f, 0x19, 0x37, 0xc9, 0x7b, 0xa7, 0xf8, 0x18, + 0x10, 0xaf, 0x09, 0x3c, 0x38, 0xfc, 0xed, 0x42, 0x3d, 0x28, 0xf1, 0x1e, 0x1c, 0x83, 0xa7, 0x28, + 0x04, 0xfd, 0xcb, 0x01, 0x86, 0xd9, 0xe5, 0xfd, 0xcb, 0x01, 0x4e, 0x20, 0x05, 0xcd, 0x08, 0x08, + 0x18, 0x03, 0xcd, 0x51, 0x08, 0xe1, 0xd9, 0xc9, 0x57, 0xed, 0x4b, 0x39, 0x40, 0x79, 0xfe, 0x21, + 0x28, 0x1a, 0x3e, 0x76, 0xba, 0x28, 0x30, 0x2a, 0x0e, 0x40, 0xbe, 0x7a, 0x20, 0x20, 0x0d, 0x20, + 0x19, 0x23, 0x22, 0x0e, 0x40, 0x0e, 0x21, 0x05, 0xed, 0x43, 0x39, 0x40, 0x78, 0xfd, 0xbe, 0x22, + 0x28, 0x03, 0xa7, 0x20, 0xdd, 0x2e, 0x04, 0xc3, 0x58, 0x00, 0xcd, 0x9b, 0x09, 0xeb, 0x77, 0x23, + 0x22, 0x0e, 0x40, 0xfd, 0x35, 0x39, 0xc9, 0x0e, 0x21, 0x05, 0xfd, 0xcb, 0x01, 0xc6, 0xc3, 0x18, + 0x09, 0xfe, 0x76, 0x28, 0x1c, 0x4f, 0x3a, 0x38, 0x40, 0xe6, 0x7f, 0xfe, 0x5c, 0x6f, 0x26, 0x40, + 0xcc, 0x71, 0x08, 0x71, 0x2c, 0xfd, 0x75, 0x38, 0xc9, 0x16, 0x16, 0x2a, 0x0c, 0x40, 0x23, 0x18, + 0x05, 0x16, 0x01, 0x21, 0x3c, 0x40, 0xcd, 0xe7, 0x02, 0xc5, 0xe5, 0xaf, 0x5f, 0xd3, 0xfb, 0xe1, + 0xcd, 0x46, 0x0f, 0x38, 0x05, 0x1f, 0xd3, 0xfb, 0xcf, 0x0c, 0xdb, 0xfb, 0x87, 0xfa, 0xde, 0x08, + 0x30, 0xee, 0xe5, 0xd5, 0x7a, 0xfe, 0x02, 0x9f, 0xa3, 0x07, 0xa3, 0x57, 0x4e, 0x79, 0x23, 0xfe, + 0x76, 0x28, 0x24, 0xe5, 0xcb, 0x27, 0x87, 0x87, 0x26, 0x0f, 0xcb, 0x14, 0x83, 0x6f, 0xcb, 0x11, + 0x9f, 0xae, 0x4f, 0x06, 0x08, 0x7a, 0xcb, 0x01, 0x1f, 0x67, 0xdb, 0xfb, 0x1f, 0x30, 0xfb, 0x7c, + 0xd3, 0xfb, 0x10, 0xf1, 0xe1, 0x18, 0xd5, 0xdb, 0xfb, 0x1f, 0x30, 0xfb, 0x7a, 0x0f, 0xd3, 0xfb, + 0xd1, 0x1c, 0xcb, 0x5b, 0x28, 0xa7, 0xc1, 0x15, 0x20, 0xa0, 0x3e, 0x04, 0xd3, 0xfb, 0xcd, 0x07, + 0x02, 0xc1, 0x21, 0x5c, 0x40, 0x36, 0x76, 0x06, 0x20, 0x2b, 0x36, 0x00, 0x10, 0xfb, 0x7d, 0xcb, + 0xff, 0x32, 0x38, 0x40, 0xc9, 0x3e, 0x17, 0x90, 0x38, 0x0b, 0xfd, 0xbe, 0x22, 0xda, 0x35, 0x08, + 0x3c, 0x47, 0x3e, 0x1f, 0x91, 0xda, 0xad, 0x0e, 0xc6, 0x02, 0x4f, 0xfd, 0xcb, 0x01, 0x4e, 0x28, + 0x07, 0x3e, 0x5d, 0x91, 0x32, 0x38, 0x40, 0xc9, 0xed, 0x43, 0x39, 0x40, 0x2a, 0x10, 0x40, 0x51, + 0x3e, 0x22, 0x91, 0x4f, 0x3e, 0x76, 0x04, 0x2b, 0xbe, 0x20, 0xfc, 0x10, 0xfa, 0x23, 0xed, 0xb1, + 0x2b, 0x22, 0x0e, 0x40, 0x37, 0xe0, 0x15, 0xc8, 0xc5, 0xcd, 0x9e, 0x09, 0xc1, 0x41, 0x62, 0x6b, + 0x36, 0x00, 0x2b, 0x10, 0xfb, 0xeb, 0x23, 0x22, 0x0e, 0x40, 0xc9, 0xf5, 0xcd, 0x75, 0x09, 0x30, + 0x08, 0xfd, 0xcb, 0x01, 0x46, 0x20, 0x02, 0xaf, 0xd7, 0x0a, 0xe6, 0x3f, 0xd7, 0x0a, 0x03, 0x87, + 0x30, 0xf7, 0xc1, 0xcb, 0x78, 0xc8, 0xfe, 0x1a, 0x28, 0x03, 0xfe, 0x38, 0xd8, 0xaf, 0xfd, 0xcb, + 0x01, 0xc6, 0xc3, 0xf5, 0x07, 0xe5, 0x21, 0x11, 0x01, 0xcb, 0x7f, 0x28, 0x02, 0xe6, 0x3f, 0xfe, + 0x43, 0x30, 0x10, 0x47, 0x04, 0xcb, 0x7e, 0x23, 0x28, 0xfb, 0x10, 0xf9, 0xcb, 0x77, 0x20, 0x02, + 0xfe, 0x18, 0x3f, 0x44, 0x4d, 0xe1, 0xd0, 0x0a, 0xc6, 0xe4, 0xc9, 0x01, 0x01, 0x00, 0xe5, 0xcd, + 0xc5, 0x0e, 0xe1, 0xcd, 0xad, 0x09, 0x2a, 0x1c, 0x40, 0xeb, 0xed, 0xb8, 0xc9, 0xf5, 0xe5, 0x21, + 0x0c, 0x40, 0x3e, 0x09, 0x5e, 0x23, 0x56, 0xe3, 0xa7, 0xed, 0x52, 0x19, 0xe3, 0x30, 0x09, 0xd5, + 0xeb, 0x09, 0xeb, 0x72, 0x2b, 0x73, 0x23, 0xd1, 0x23, 0x3d, 0x20, 0xe8, 0xeb, 0xd1, 0xf1, 0xa7, + 0xed, 0x52, 0x44, 0x4d, 0x03, 0x19, 0xeb, 0xc9, 0xe5, 0x21, 0x7d, 0x40, 0x54, 0x5d, 0xc1, 0xcd, + 0xea, 0x09, 0xd0, 0xc5, 0xcd, 0xf2, 0x09, 0xeb, 0x18, 0xf4, 0x7e, 0xb8, 0xc0, 0x23, 0x7e, 0x2b, + 0xb9, 0xc9, 0xe5, 0x7e, 0xfe, 0x40, 0x38, 0x17, 0xcb, 0x6f, 0x28, 0x14, 0x87, 0xfa, 0x01, 0x0a, + 0x3f, 0x01, 0x05, 0x00, 0x30, 0x02, 0x0e, 0x11, 0x17, 0x23, 0x7e, 0x30, 0xfb, 0x18, 0x06, 0x23, + 0x23, 0x4e, 0x23, 0x46, 0x23, 0x09, 0xd1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x19, 0xeb, 0xc9, 0xfd, + 0x46, 0x22, 0xc5, 0xcd, 0x2c, 0x0a, 0xc1, 0x05, 0x18, 0x02, 0x06, 0x18, 0xfd, 0xcb, 0x01, 0x8e, + 0x0e, 0x21, 0xc5, 0xcd, 0x18, 0x09, 0xc1, 0x3a, 0x05, 0x40, 0xfe, 0x4d, 0x38, 0x14, 0xfd, 0xcb, + 0x3a, 0xfe, 0xaf, 0xcd, 0xf5, 0x07, 0x2a, 0x39, 0x40, 0x7d, 0xb4, 0xe6, 0x7e, 0x20, 0xf3, 0xc3, + 0x18, 0x09, 0x54, 0x5d, 0x2b, 0x48, 0x06, 0x00, 0xed, 0xb0, 0x2a, 0x10, 0x40, 0xcd, 0x17, 0x0a, + 0xc5, 0x78, 0x2f, 0x47, 0x79, 0x2f, 0x4f, 0x03, 0xcd, 0xad, 0x09, 0xeb, 0xe1, 0x19, 0xd5, 0xed, + 0xb0, 0xe1, 0xc9, 0x2a, 0x14, 0x40, 0xcd, 0x4d, 0x00, 0xdf, 0xfd, 0xcb, 0x2d, 0x6e, 0xc0, 0x21, + 0x5d, 0x40, 0x22, 0x1c, 0x40, 0xcd, 0x48, 0x15, 0xcd, 0x8a, 0x15, 0x38, 0x04, 0x21, 0xf0, 0xd8, + 0x09, 0xda, 0x9a, 0x0d, 0xbf, 0xc3, 0xbc, 0x14, 0xd5, 0xe5, 0xaf, 0xcb, 0x78, 0x20, 0x20, 0x60, + 0x69, 0x1e, 0xff, 0x18, 0x08, 0xd5, 0x56, 0x23, 0x5e, 0xe5, 0xeb, 0x1e, 0x00, 0x01, 0x18, 0xfc, + 0xcd, 0xe1, 0x07, 0x01, 0x9c, 0xff, 0xcd, 0xe1, 0x07, 0x0e, 0xf6, 0xcd, 0xe1, 0x07, 0x7d, 0xcd, + 0xeb, 0x07, 0xe1, 0xd1, 0xc9, 0xcd, 0xa6, 0x0d, 0xe1, 0xc8, 0xe9, 0xfd, 0xcb, 0x01, 0xce, 0x7e, + 0xfe, 0x76, 0xca, 0x84, 0x0b, 0xd6, 0x1a, 0xce, 0x00, 0x28, 0x69, 0xfe, 0xa7, 0x20, 0x1b, 0xe7, + 0xcd, 0x92, 0x0d, 0xfe, 0x1a, 0xc2, 0x9a, 0x0d, 0xe7, 0xcd, 0x92, 0x0d, 0xcd, 0x4e, 0x0b, 0xef, + 0x01, 0x34, 0xcd, 0xf5, 0x0b, 0xcd, 0xf5, 0x08, 0x18, 0x3d, 0xfe, 0xa8, 0x20, 0x33, 0xe7, 0xcd, + 0x92, 0x0d, 0xcd, 0x4e, 0x0b, 0xcd, 0x02, 0x0c, 0xc2, 0xad, 0x0e, 0xe6, 0x1f, 0x4f, 0xfd, 0xcb, + 0x01, 0x4e, 0x28, 0x0a, 0xfd, 0x96, 0x38, 0xcb, 0xff, 0xc6, 0x3c, 0xd4, 0x71, 0x08, 0xfd, 0x86, + 0x39, 0xfe, 0x21, 0x3a, 0x3a, 0x40, 0xde, 0x01, 0xcd, 0xfa, 0x08, 0xfd, 0xcb, 0x01, 0xc6, 0x18, + 0x06, 0xcd, 0x55, 0x0f, 0xcd, 0x55, 0x0b, 0xdf, 0xd6, 0x1a, 0xce, 0x00, 0x28, 0x06, 0xcd, 0x1d, + 0x0d, 0xc3, 0x84, 0x0b, 0xd4, 0x8b, 0x0b, 0xe7, 0xfe, 0x76, 0xc8, 0xc3, 0xd5, 0x0a, 0xcd, 0xa6, + 0x0d, 0xc0, 0xe1, 0x18, 0xe2, 0xcd, 0xc5, 0x0a, 0xfd, 0xcb, 0x01, 0x76, 0xcc, 0xf8, 0x13, 0x28, + 0x0a, 0xc3, 0xdb, 0x15, 0x3e, 0x0b, 0xd7, 0xed, 0x5b, 0x18, 0x40, 0x78, 0xb1, 0x0b, 0xc8, 0x1a, + 0x13, 0xed, 0x53, 0x18, 0x40, 0xcb, 0x77, 0x28, 0xed, 0xfe, 0xc0, 0x28, 0xe7, 0xc5, 0xcd, 0x4b, + 0x09, 0xc1, 0x18, 0xe3, 0xcd, 0xc5, 0x0a, 0x3e, 0x76, 0xd7, 0xc9, 0xcd, 0xc5, 0x0a, 0xfd, 0xcb, + 0x01, 0xc6, 0xaf, 0xd7, 0xed, 0x4b, 0x39, 0x40, 0x79, 0xfd, 0xcb, 0x01, 0x4e, 0x28, 0x05, 0x3e, + 0x5d, 0xfd, 0x96, 0x38, 0x0e, 0x11, 0xb9, 0x30, 0x02, 0x0e, 0x01, 0xcd, 0x0b, 0x09, 0xc9, 0xcd, + 0xf5, 0x0b, 0xed, 0x43, 0x36, 0x40, 0x3e, 0x2b, 0x90, 0xda, 0xad, 0x0e, 0x47, 0x3e, 0x01, 0xcb, + 0x28, 0x30, 0x02, 0x3e, 0x04, 0xcb, 0x29, 0x30, 0x01, 0x07, 0xf5, 0xcd, 0xf5, 0x08, 0x7e, 0x07, + 0xfe, 0x10, 0x30, 0x06, 0x0f, 0x30, 0x02, 0xee, 0x8f, 0x47, 0x11, 0x9e, 0x0c, 0x3a, 0x30, 0x40, + 0x93, 0xfa, 0xe9, 0x0b, 0xf1, 0x2f, 0xa0, 0x18, 0x02, 0xf1, 0xb0, 0xfe, 0x08, 0x38, 0x02, 0xee, + 0x8f, 0xd9, 0xd7, 0xd9, 0xc9, 0xcd, 0x02, 0x0c, 0x47, 0xc5, 0xcd, 0x02, 0x0c, 0x59, 0xc1, 0x51, + 0x4f, 0xc9, 0xcd, 0xcd, 0x15, 0xda, 0xad, 0x0e, 0x0e, 0x01, 0xc8, 0x0e, 0xff, 0xc9, 0xfd, 0x46, + 0x22, 0x0e, 0x21, 0xcd, 0x18, 0x09, 0xcd, 0x9b, 0x09, 0x7e, 0x12, 0xfd, 0x34, 0x3a, 0x2a, 0x0c, + 0x40, 0x23, 0x54, 0x5d, 0xed, 0xb1, 0xc3, 0x5d, 0x0a, 0x8b, 0x8d, 0x2d, 0x7f, 0x81, 0x49, 0x75, + 0x5f, 0x40, 0x42, 0x2b, 0x17, 0x1f, 0x37, 0x52, 0x45, 0x0f, 0x6d, 0x2b, 0x44, 0x2d, 0x5a, 0x3b, + 0x4c, 0x45, 0x0d, 0x52, 0x5a, 0x4d, 0x15, 0x6a, 0x01, 0x14, 0x02, 0x06, 0x00, 0x81, 0x0e, 0x06, + 0xde, 0x05, 0xab, 0x0d, 0x06, 0x00, 0xb5, 0x0e, 0x00, 0xdc, 0x0c, 0x00, 0xd8, 0x0e, 0x04, 0x14, + 0x06, 0xdf, 0x06, 0x05, 0xb9, 0x0d, 0x04, 0x00, 0x2e, 0x0e, 0x05, 0xcf, 0x0a, 0x01, 0x00, 0xe9, + 0x0e, 0x05, 0x09, 0x14, 0x05, 0x6a, 0x0d, 0x00, 0xc3, 0x03, 0x03, 0xaf, 0x0e, 0x03, 0x30, 0x07, + 0x06, 0x1a, 0x06, 0x00, 0x92, 0x0e, 0x03, 0x6c, 0x0e, 0x05, 0x40, 0x03, 0x05, 0xf6, 0x02, 0x00, + 0x7c, 0x0e, 0x00, 0x9a, 0x14, 0x00, 0x2a, 0x0a, 0x06, 0x1a, 0x06, 0x00, 0xaf, 0x0b, 0x06, 0x1a, + 0x06, 0x00, 0xaf, 0x0b, 0x00, 0x0e, 0x0c, 0x06, 0x00, 0x32, 0x0f, 0x00, 0x2b, 0x0f, 0x00, 0x23, + 0x0f, 0x00, 0x69, 0x08, 0x05, 0xcb, 0x0a, 0x03, 0x2c, 0x07, 0xfd, 0x36, 0x01, 0x01, 0xcd, 0x73, + 0x0a, 0xcd, 0xbc, 0x14, 0x21, 0x00, 0x40, 0x36, 0xff, 0x21, 0x2d, 0x40, 0xcb, 0x6e, 0x28, 0x0e, + 0xfe, 0xe3, 0x7e, 0xc2, 0x6f, 0x0d, 0xcd, 0xa6, 0x0d, 0xc8, 0xcf, 0x0c, 0xcf, 0x08, 0xdf, 0x06, + 0x00, 0xfe, 0x76, 0xc8, 0x4f, 0xe7, 0x79, 0xd6, 0xe1, 0x38, 0x3b, 0x4f, 0x21, 0x29, 0x0c, 0x09, + 0x4e, 0x09, 0x18, 0x03, 0x2a, 0x30, 0x40, 0x7e, 0x23, 0x22, 0x30, 0x40, 0x01, 0xf4, 0x0c, 0xc5, + 0x4f, 0xfe, 0x0b, 0x30, 0x0b, 0x21, 0x16, 0x0d, 0x06, 0x00, 0x09, 0x4e, 0x09, 0xe5, 0xdf, 0xc9, + 0xdf, 0xb9, 0x20, 0x12, 0xe7, 0xc9, 0x17, 0x25, 0x53, 0x0f, 0x6b, 0x13, 0x76, 0xcd, 0xa6, 0x0d, + 0xc0, 0xc1, 0x7e, 0xfe, 0x76, 0xc8, 0x18, 0x72, 0xfe, 0x76, 0xcd, 0x9c, 0x0d, 0xbf, 0xc1, 0xcc, + 0x1d, 0x0d, 0xeb, 0x2a, 0x30, 0x40, 0x4e, 0x23, 0x46, 0xeb, 0xc5, 0xc9, 0xcd, 0x1c, 0x11, 0xfd, + 0x36, 0x2d, 0x00, 0x30, 0x08, 0xfd, 0xcb, 0x2d, 0xce, 0x20, 0x18, 0xcf, 0x01, 0xcc, 0xa7, 0x11, + 0xfd, 0xcb, 0x01, 0x76, 0x20, 0x0d, 0xaf, 0xcd, 0xa6, 0x0d, 0xc4, 0xf8, 0x13, 0x21, 0x2d, 0x40, + 0xb6, 0x77, 0xeb, 0xed, 0x43, 0x2e, 0x40, 0x22, 0x12, 0x40, 0xc9, 0xc1, 0x3a, 0x01, 0x40, 0xf5, + 0xcd, 0x55, 0x0f, 0xf1, 0x01, 0x21, 0x13, 0xfd, 0x56, 0x01, 0xaa, 0xe6, 0x40, 0x20, 0x1b, 0xcb, + 0x7a, 0x20, 0xb7, 0x18, 0x9d, 0xcd, 0x1c, 0x11, 0xf5, 0x79, 0xf6, 0x9f, 0x3c, 0x20, 0x0b, 0xf1, + 0x18, 0xad, 0xcd, 0x55, 0x0f, 0xfd, 0xcb, 0x01, 0x76, 0xc0, 0xcf, 0x0b, 0x20, 0xf4, 0xcd, 0xa6, + 0x0d, 0xc8, 0xef, 0xa0, 0x34, 0xc9, 0xfd, 0xcb, 0x01, 0x7e, 0xc9, 0xcd, 0xa6, 0x0d, 0x28, 0x06, + 0xef, 0x02, 0x34, 0x1a, 0xa7, 0xc8, 0xc3, 0xde, 0x0c, 0xfe, 0xe0, 0x20, 0x09, 0xe7, 0xcd, 0x92, + 0x0d, 0xcd, 0x1d, 0x0d, 0x18, 0x06, 0xcd, 0x1d, 0x0d, 0xef, 0xa1, 0x34, 0xef, 0xc0, 0x02, 0x01, + 0xe0, 0x01, 0x34, 0xcd, 0x21, 0x13, 0x22, 0x1f, 0x40, 0x2b, 0x7e, 0xcb, 0xfe, 0x01, 0x06, 0x00, + 0x09, 0x07, 0x38, 0x06, 0xcb, 0x21, 0xcd, 0x9e, 0x09, 0x23, 0xe5, 0xef, 0x02, 0x02, 0x34, 0xe1, + 0xeb, 0x0e, 0x0a, 0xed, 0xb0, 0x2a, 0x07, 0x40, 0xeb, 0x13, 0x73, 0x23, 0x72, 0xcd, 0x5a, 0x0e, + 0xd0, 0xfd, 0xcb, 0x08, 0x7e, 0xc0, 0xfd, 0x46, 0x2e, 0xcb, 0xb0, 0x2a, 0x29, 0x40, 0x7e, 0xe6, + 0xc0, 0x20, 0x17, 0xc5, 0xcd, 0xf2, 0x09, 0xc1, 0x23, 0x23, 0x23, 0xcd, 0x4c, 0x00, 0xdf, 0xfe, + 0xf3, 0xeb, 0x20, 0xea, 0xeb, 0xe7, 0xeb, 0xb8, 0x20, 0xe4, 0x22, 0x29, 0x40, 0xc9, 0xfd, 0xcb, + 0x2d, 0x4e, 0xc2, 0x4b, 0x0d, 0x2a, 0x12, 0x40, 0xcb, 0x7e, 0x28, 0x1c, 0x23, 0x22, 0x1f, 0x40, + 0xef, 0xe0, 0xe2, 0x0f, 0xc0, 0x02, 0x34, 0xcd, 0x5a, 0x0e, 0xd8, 0x2a, 0x1f, 0x40, 0x11, 0x0f, + 0x00, 0x19, 0x5e, 0x23, 0x56, 0xeb, 0x18, 0x2e, 0xcf, 0x00, 0xef, 0xe1, 0xe0, 0xe2, 0x32, 0x00, + 0x02, 0x01, 0x03, 0x33, 0x00, 0x04, 0x34, 0xa7, 0xc9, 0x34, 0x37, 0xc9, 0xcd, 0xa7, 0x0e, 0x78, + 0xb1, 0x20, 0x04, 0xed, 0x4b, 0x34, 0x40, 0xed, 0x43, 0x32, 0x40, 0xc9, 0x2a, 0x2b, 0x40, 0x18, + 0x05, 0xcd, 0xa7, 0x0e, 0x60, 0x69, 0x7c, 0xfe, 0xf0, 0x30, 0x22, 0xcd, 0xd8, 0x09, 0x22, 0x29, + 0x40, 0xc9, 0xcd, 0xcd, 0x15, 0x38, 0x16, 0x28, 0x02, 0xed, 0x44, 0xf5, 0xcd, 0xa7, 0x0e, 0xf1, + 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0x02, 0xc9, 0xcd, 0x8a, 0x15, 0x38, 0x01, 0xc8, 0xcf, 0x0a, 0xcd, + 0x81, 0x0e, 0xc3, 0x9a, 0x14, 0x2a, 0x07, 0x40, 0x23, 0xe3, 0xe5, 0xed, 0x73, 0x02, 0x40, 0xcd, + 0x81, 0x0e, 0x01, 0x06, 0x00, 0x2a, 0x1c, 0x40, 0x09, 0x38, 0x08, 0xeb, 0x21, 0x24, 0x00, 0x19, + 0xed, 0x72, 0xd8, 0x2e, 0x03, 0xc3, 0x58, 0x00, 0xe1, 0xe3, 0x7c, 0xfe, 0x3e, 0x28, 0x06, 0xed, + 0x73, 0x02, 0x40, 0x18, 0xa1, 0xe3, 0xe5, 0xcf, 0x06, 0xfd, 0xcb, 0x08, 0x7e, 0x20, 0x32, 0xcd, + 0xa3, 0x14, 0x21, 0x2d, 0x40, 0xcb, 0xee, 0xcb, 0xb6, 0x3a, 0x01, 0x40, 0xe6, 0x40, 0x01, 0x02, + 0x00, 0x20, 0x02, 0x0e, 0x04, 0xb6, 0x77, 0xf7, 0x36, 0x76, 0x79, 0x0f, 0x0f, 0x38, 0x05, 0x3e, + 0x0b, 0x12, 0x2b, 0x77, 0x2b, 0x36, 0x7f, 0x2a, 0x39, 0x40, 0x22, 0x30, 0x40, 0xe1, 0xc3, 0x72, + 0x04, 0xcf, 0x07, 0xcd, 0xe7, 0x02, 0xfd, 0xcb, 0x3b, 0xb6, 0xc9, 0xfd, 0xcb, 0x3b, 0xf6, 0xc3, + 0x07, 0x02, 0xcd, 0xa7, 0x0e, 0xcd, 0xe7, 0x02, 0x60, 0x69, 0xcd, 0x2d, 0x02, 0xfd, 0x36, 0x35, + 0xff, 0xcd, 0x07, 0x02, 0x18, 0x05, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0xfd, 0xcb, 0x3b, 0x86, 0x3e, + 0xff, 0x32, 0x27, 0x40, 0xc9, 0xdf, 0x06, 0x00, 0xc5, 0xfe, 0x40, 0x20, 0x2f, 0xcd, 0xa6, 0x0d, + 0x28, 0x28, 0xed, 0x4b, 0x32, 0x40, 0xcd, 0x20, 0x15, 0xef, 0xa1, 0x0f, 0x30, 0x37, 0x16, 0x04, + 0x30, 0x80, 0x41, 0x00, 0x00, 0x80, 0x2e, 0x02, 0xa1, 0x03, 0x2d, 0x34, 0xcd, 0x8a, 0x15, 0xed, + 0x43, 0x32, 0x40, 0x7e, 0xa7, 0x28, 0x03, 0xd6, 0x10, 0x77, 0x18, 0x0d, 0xfe, 0x42, 0x20, 0x0d, + 0xcd, 0xa6, 0x0d, 0x28, 0x04, 0xef, 0xa3, 0x34, 0x34, 0xe7, 0xc3, 0x83, 0x10, 0xfe, 0x41, 0x20, + 0x11, 0xcd, 0xbb, 0x02, 0x44, 0x4d, 0x51, 0x14, 0xc4, 0xbd, 0x07, 0x7a, 0x8a, 0x42, 0x4f, 0xeb, + 0x18, 0x3b, 0xcd, 0xd2, 0x14, 0x38, 0x6e, 0xfe, 0x1b, 0xca, 0x47, 0x10, 0x01, 0xd8, 0x09, 0xfe, + 0x16, 0x28, 0x5d, 0xfe, 0x10, 0x20, 0x0f, 0xcd, 0x49, 0x00, 0xcd, 0x55, 0x0f, 0xfe, 0x11, 0x20, + 0x2e, 0xcd, 0x49, 0x00, 0x18, 0x22, 0xfe, 0x0b, 0x20, 0x28, 0xcd, 0x49, 0x00, 0xe5, 0x18, 0x03, + 0xcd, 0x49, 0x00, 0xfe, 0x0b, 0x20, 0x14, 0xd1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x21, 0x01, 0x40, + 0xcb, 0xb6, 0xcb, 0x7e, 0xc4, 0xc3, 0x12, 0xe7, 0xc3, 0x88, 0x10, 0xfe, 0x76, 0x20, 0xe1, 0xc3, + 0x9a, 0x0d, 0xd6, 0xc4, 0x38, 0xf9, 0x01, 0xec, 0x04, 0xfe, 0x13, 0x28, 0x13, 0x30, 0xf0, 0x06, + 0x10, 0xc6, 0xd9, 0x4f, 0xfe, 0xdc, 0x30, 0x02, 0xcb, 0xb1, 0xfe, 0xea, 0x38, 0x02, 0xcb, 0xb9, + 0xc5, 0xe7, 0xc3, 0x59, 0x0f, 0xfe, 0x26, 0x38, 0x1e, 0xcd, 0x1c, 0x11, 0xda, 0x4b, 0x0d, 0xcc, + 0xa7, 0x11, 0x3a, 0x01, 0x40, 0xfe, 0xc0, 0x38, 0x4e, 0x23, 0xed, 0x5b, 0x1c, 0x40, 0xcd, 0xf6, + 0x19, 0xeb, 0x22, 0x1c, 0x40, 0x18, 0x40, 0xcd, 0xa6, 0x0d, 0x20, 0x23, 0xcd, 0xd9, 0x14, 0xdf, + 0x01, 0x06, 0x00, 0xcd, 0x9e, 0x09, 0x23, 0x36, 0x7e, 0x23, 0xeb, 0x2a, 0x1c, 0x40, 0x0e, 0x05, + 0xa7, 0xed, 0x42, 0x22, 0x1c, 0x40, 0xed, 0xb0, 0xeb, 0x2b, 0xcd, 0x4c, 0x00, 0x18, 0x14, 0xe7, + 0xfe, 0x7e, 0x20, 0xfb, 0x23, 0xed, 0x5b, 0x1c, 0x40, 0xcd, 0xf6, 0x19, 0xed, 0x53, 0x1c, 0x40, + 0x22, 0x16, 0x40, 0xfd, 0xcb, 0x01, 0xf6, 0xdf, 0xfe, 0x10, 0x20, 0x0c, 0xfd, 0xcb, 0x01, 0x76, + 0x20, 0x2a, 0xcd, 0x63, 0x12, 0xe7, 0x18, 0xf0, 0x01, 0xc3, 0x00, 0xfe, 0x12, 0x38, 0x1d, 0xd6, + 0x16, 0x30, 0x04, 0xc6, 0x0d, 0x18, 0x0e, 0xfe, 0x03, 0x38, 0x0a, 0xd6, 0xc2, 0x38, 0x0d, 0xfe, + 0x06, 0x30, 0x09, 0xc6, 0x03, 0x81, 0x4f, 0x21, 0x4c, 0x10, 0x09, 0x46, 0xd1, 0x7a, 0xb8, 0x38, + 0x2c, 0xa7, 0xca, 0x18, 0x00, 0xc5, 0xd5, 0xcd, 0xa6, 0x0d, 0x28, 0x09, 0x7b, 0xe6, 0x3f, 0x47, + 0xef, 0x37, 0x34, 0x18, 0x09, 0x7b, 0xfd, 0xae, 0x01, 0xe6, 0x40, 0xc2, 0x9a, 0x0d, 0xd1, 0x21, + 0x01, 0x40, 0xcb, 0xf6, 0xcb, 0x7b, 0x20, 0x02, 0xcb, 0xb6, 0xc1, 0x18, 0xcf, 0xd5, 0x79, 0xfd, + 0xcb, 0x01, 0x76, 0x20, 0x15, 0xe6, 0x3f, 0xc6, 0x08, 0x4f, 0xfe, 0x10, 0x20, 0x04, 0xcb, 0xf1, + 0x18, 0x08, 0x38, 0xd7, 0xfe, 0x17, 0x28, 0x02, 0xcb, 0xf9, 0xc5, 0xe7, 0xc3, 0x59, 0x0f, 0x06, + 0x08, 0x08, 0x0a, 0x02, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0xfd, 0xcb, 0x01, 0xf6, + 0xdf, 0xcd, 0xce, 0x14, 0xd2, 0x9a, 0x0d, 0xe5, 0x4f, 0xe7, 0xe5, 0xcb, 0xa9, 0xfe, 0x10, 0x28, + 0x17, 0xcb, 0xf1, 0xfe, 0x0d, 0x28, 0x0c, 0xcb, 0xe9, 0xcd, 0xd2, 0x14, 0x30, 0x0a, 0xcb, 0xb1, + 0xe7, 0x18, 0xf6, 0xe7, 0xfd, 0xcb, 0x01, 0xb6, 0x41, 0xcd, 0xa6, 0x0d, 0x20, 0x08, 0x79, 0xe6, + 0xe0, 0xcb, 0xff, 0x4f, 0x18, 0x34, 0x2a, 0x10, 0x40, 0x7e, 0xe6, 0x7f, 0x28, 0x2a, 0xb9, 0x20, + 0x1f, 0x17, 0x87, 0xf2, 0x95, 0x11, 0x38, 0x2d, 0xd1, 0xd5, 0xe5, 0x23, 0x1a, 0x13, 0xa7, 0x28, + 0xfb, 0xbe, 0x28, 0xf7, 0xf6, 0x80, 0xbe, 0x20, 0x06, 0x1a, 0xcd, 0xd2, 0x14, 0x30, 0x15, 0xe1, + 0xc5, 0xcd, 0xf2, 0x09, 0xeb, 0xc1, 0x18, 0xd1, 0xcb, 0xf8, 0xd1, 0xdf, 0xfe, 0x10, 0x28, 0x09, + 0xcb, 0xe8, 0x18, 0x0d, 0xd1, 0xd1, 0xd1, 0xe5, 0xdf, 0xcd, 0xd2, 0x14, 0x30, 0x03, 0xe7, 0x18, + 0xf8, 0xe1, 0xcb, 0x10, 0xcb, 0x70, 0xc9, 0xaf, 0x47, 0xcb, 0x79, 0x20, 0x4b, 0xcb, 0x7e, 0x20, + 0x0e, 0x3c, 0x23, 0x4e, 0x23, 0x46, 0x23, 0xeb, 0xcd, 0xc3, 0x12, 0xdf, 0xc3, 0x5a, 0x12, 0x23, + 0x23, 0x23, 0x46, 0xcb, 0x71, 0x28, 0x0a, 0x05, 0x28, 0xe8, 0xeb, 0xdf, 0xfe, 0x10, 0x20, 0x61, + 0xeb, 0xeb, 0x18, 0x24, 0xe5, 0xdf, 0xe1, 0xfe, 0x1a, 0x28, 0x20, 0xcb, 0x79, 0x28, 0x52, 0xcb, + 0x71, 0x20, 0x06, 0xfe, 0x11, 0x20, 0x3c, 0xe7, 0xc9, 0xfe, 0x11, 0x28, 0x6c, 0xfe, 0xdf, 0x20, + 0x32, 0xdf, 0x2b, 0x22, 0x16, 0x40, 0x18, 0x5e, 0x21, 0x00, 0x00, 0xe5, 0xe7, 0xe1, 0x79, 0xfe, + 0xc0, 0x20, 0x09, 0xdf, 0xfe, 0x11, 0x28, 0x51, 0xfe, 0xdf, 0x28, 0xe5, 0xc5, 0xe5, 0xcd, 0xff, + 0x12, 0xe3, 0xeb, 0xcd, 0xdd, 0x12, 0x38, 0x19, 0x0b, 0xcd, 0x05, 0x13, 0x09, 0xd1, 0xc1, 0x10, + 0xb3, 0xcb, 0x79, 0x20, 0x66, 0xe5, 0xcb, 0x71, 0x20, 0x13, 0x42, 0x4b, 0xdf, 0xfe, 0x11, 0x28, + 0x02, 0xcf, 0x02, 0xe7, 0xe1, 0x11, 0x05, 0x00, 0xcd, 0x05, 0x13, 0x09, 0xc9, 0xcd, 0xff, 0x12, + 0xe3, 0xcd, 0x05, 0x13, 0xc1, 0x09, 0x23, 0x42, 0x4b, 0xeb, 0xcd, 0xc2, 0x12, 0xdf, 0xfe, 0x11, + 0x28, 0x07, 0xfe, 0x1a, 0x20, 0xdb, 0xcd, 0x63, 0x12, 0xe7, 0xfe, 0x10, 0x28, 0xf8, 0xfd, 0xcb, + 0x01, 0xb6, 0xc9, 0xcd, 0xa6, 0x0d, 0xc4, 0xf8, 0x13, 0xe7, 0xfe, 0x11, 0x28, 0x50, 0xd5, 0xaf, + 0xf5, 0xc5, 0x11, 0x01, 0x00, 0xdf, 0xe1, 0xfe, 0xdf, 0x28, 0x17, 0xf1, 0xcd, 0xde, 0x12, 0xf5, + 0x50, 0x59, 0xe5, 0xdf, 0xe1, 0xfe, 0xdf, 0x28, 0x09, 0xfe, 0x11, 0xc2, 0x9a, 0x0d, 0x62, 0x6b, + 0x18, 0x13, 0xe5, 0xe7, 0xe1, 0xfe, 0x11, 0x28, 0x0c, 0xf1, 0xcd, 0xde, 0x12, 0xf5, 0xdf, 0x60, + 0x69, 0xfe, 0x11, 0x20, 0xe6, 0xf1, 0xe3, 0x19, 0x2b, 0xe3, 0xa7, 0xed, 0x52, 0x01, 0x00, 0x00, + 0x38, 0x07, 0x23, 0xa7, 0xfa, 0x31, 0x12, 0x44, 0x4d, 0xd1, 0xfd, 0xcb, 0x01, 0xb6, 0xcd, 0xa6, + 0x0d, 0xc8, 0xaf, 0xc5, 0xcd, 0xeb, 0x19, 0xc1, 0x2a, 0x1c, 0x40, 0x77, 0x23, 0x73, 0x23, 0x72, + 0x23, 0x71, 0x23, 0x70, 0x23, 0x22, 0x1c, 0x40, 0xfd, 0xcb, 0x01, 0xb6, 0xc9, 0xaf, 0xd5, 0xe5, + 0xf5, 0xcd, 0x92, 0x0d, 0xf1, 0xcd, 0xa6, 0x0d, 0x28, 0x12, 0xf5, 0xcd, 0xa7, 0x0e, 0xd1, 0x78, + 0xb1, 0x37, 0x28, 0x05, 0xe1, 0xe5, 0xa7, 0xed, 0x42, 0x7a, 0xde, 0x00, 0xe1, 0xd1, 0xc9, 0xeb, + 0x23, 0x5e, 0x23, 0x56, 0xc9, 0xcd, 0xa6, 0x0d, 0xc8, 0xc5, 0x06, 0x10, 0x7c, 0x4d, 0x21, 0x00, + 0x00, 0x29, 0x38, 0x06, 0xcb, 0x11, 0x17, 0x30, 0x04, 0x19, 0xda, 0xd3, 0x0e, 0x10, 0xf2, 0xc1, + 0xc9, 0x2a, 0x12, 0x40, 0xfd, 0xcb, 0x2d, 0x4e, 0x28, 0x44, 0x01, 0x05, 0x00, 0x03, 0x23, 0x7e, + 0xa7, 0x28, 0xfb, 0xcd, 0xd2, 0x14, 0x38, 0xf5, 0xfe, 0x0d, 0xca, 0xc8, 0x13, 0xf7, 0xd5, 0x2a, + 0x12, 0x40, 0x1b, 0x79, 0xd6, 0x06, 0x47, 0x3e, 0x40, 0x28, 0x0e, 0x23, 0x7e, 0xa7, 0x28, 0xfb, + 0x13, 0x12, 0x10, 0xf7, 0xf6, 0x80, 0x12, 0x3e, 0x80, 0x2a, 0x12, 0x40, 0xae, 0xe1, 0xcd, 0xe7, + 0x13, 0xe5, 0xef, 0x02, 0x34, 0xe1, 0x01, 0x05, 0x00, 0xa7, 0xed, 0x42, 0x18, 0x40, 0xfd, 0xcb, + 0x01, 0x76, 0x28, 0x06, 0x11, 0x06, 0x00, 0x19, 0x18, 0xe7, 0x2a, 0x12, 0x40, 0xed, 0x4b, 0x2e, + 0x40, 0xfd, 0xcb, 0x2d, 0x46, 0x20, 0x30, 0x78, 0xb1, 0xc8, 0xe5, 0xf7, 0xd5, 0xc5, 0x54, 0x5d, + 0x23, 0x36, 0x00, 0xed, 0xb8, 0xe5, 0xcd, 0xf8, 0x13, 0xe1, 0xe3, 0xa7, 0xed, 0x42, 0x09, 0x30, + 0x02, 0x44, 0x4d, 0xe3, 0xeb, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, 0xd1, 0xe1, 0xeb, 0x78, + 0xb1, 0xc8, 0xd5, 0xed, 0xb0, 0xe1, 0xc9, 0x2b, 0x2b, 0x2b, 0x7e, 0xe5, 0xc5, 0xcd, 0xce, 0x13, + 0xc1, 0xe1, 0x03, 0x03, 0x03, 0xc3, 0x60, 0x0a, 0x3e, 0x60, 0x2a, 0x12, 0x40, 0xae, 0xf5, 0xcd, + 0xf8, 0x13, 0xeb, 0x09, 0xe5, 0x03, 0x03, 0x03, 0xf7, 0xeb, 0xe1, 0x0b, 0x0b, 0xc5, 0xed, 0xb8, + 0xeb, 0xc1, 0x0b, 0x70, 0x2b, 0x71, 0xf1, 0xf5, 0xcd, 0xc7, 0x14, 0xf1, 0x2b, 0x77, 0x2a, 0x1a, + 0x40, 0x22, 0x14, 0x40, 0x2b, 0x36, 0x80, 0xc9, 0x2a, 0x1c, 0x40, 0x2b, 0x46, 0x2b, 0x4e, 0x2b, + 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x22, 0x1c, 0x40, 0xc9, 0xcd, 0x1c, 0x11, 0xc2, 0x9a, 0x0d, 0xcd, + 0xa6, 0x0d, 0x20, 0x08, 0xcb, 0xb1, 0xcd, 0xa7, 0x11, 0xcd, 0x1d, 0x0d, 0x38, 0x08, 0xc5, 0xcd, + 0xf2, 0x09, 0xcd, 0x60, 0x0a, 0xc1, 0xcb, 0xf9, 0x06, 0x00, 0xc5, 0x21, 0x01, 0x00, 0xcb, 0x71, + 0x20, 0x02, 0x2e, 0x05, 0xeb, 0xe7, 0x26, 0x40, 0xcd, 0xdd, 0x12, 0xda, 0x31, 0x12, 0xe1, 0xc5, + 0x24, 0xe5, 0x60, 0x69, 0xcd, 0x05, 0x13, 0xeb, 0xdf, 0xfe, 0x1a, 0x28, 0xe8, 0xfe, 0x11, 0x20, + 0xbb, 0xe7, 0xc1, 0x79, 0x68, 0x26, 0x00, 0x23, 0x23, 0x29, 0x19, 0xda, 0xd3, 0x0e, 0xd5, 0xc5, + 0xe5, 0x44, 0x4d, 0x2a, 0x14, 0x40, 0x2b, 0xcd, 0x9e, 0x09, 0x23, 0x77, 0xc1, 0x0b, 0x0b, 0x0b, + 0x23, 0x71, 0x23, 0x70, 0xf1, 0x23, 0x77, 0x62, 0x6b, 0x1b, 0x36, 0x00, 0xc1, 0xed, 0xb8, 0xc1, + 0x70, 0x2b, 0x71, 0x2b, 0x3d, 0x20, 0xf8, 0xc9, 0x2a, 0x1a, 0x40, 0x2b, 0xcd, 0x9e, 0x09, 0x23, + 0x23, 0xc1, 0xed, 0x43, 0x14, 0x40, 0xc1, 0xeb, 0x23, 0xc9, 0x2a, 0x10, 0x40, 0x36, 0x80, 0x23, + 0x22, 0x14, 0x40, 0x2a, 0x14, 0x40, 0x22, 0x1a, 0x40, 0x22, 0x1c, 0x40, 0xc9, 0x2a, 0x14, 0x40, + 0x36, 0x7f, 0x23, 0x36, 0x76, 0x23, 0xfd, 0x36, 0x22, 0x02, 0x18, 0xea, 0x21, 0x5d, 0x40, 0x22, + 0x1f, 0x40, 0x2a, 0x1a, 0x40, 0x18, 0xe2, 0xed, 0x5b, 0x14, 0x40, 0xc3, 0x5d, 0x0a, 0xfe, 0x26, + 0x18, 0x02, 0xfe, 0x1c, 0x3f, 0xd0, 0xfe, 0x40, 0xc9, 0xcd, 0x48, 0x15, 0xfe, 0x1b, 0x20, 0x15, + 0xef, 0xa1, 0xc0, 0x02, 0x34, 0xe7, 0xcd, 0x14, 0x15, 0x38, 0x0a, 0xef, 0xe0, 0xa4, 0x05, 0xc0, + 0x04, 0x0f, 0x34, 0x18, 0xf0, 0xfe, 0x2a, 0xc0, 0xfd, 0x36, 0x5d, 0xff, 0xe7, 0xfe, 0x15, 0x28, + 0x07, 0xfe, 0x16, 0x20, 0x04, 0xfd, 0x34, 0x5d, 0xe7, 0xcd, 0x48, 0x15, 0xef, 0xe0, 0x00, 0x02, + 0x18, 0x38, 0x34, 0xc9, 0xfe, 0x1c, 0xd8, 0xfe, 0x26, 0x3f, 0xd8, 0xd6, 0x1c, 0x4f, 0x06, 0x00, + 0xfd, 0x21, 0x00, 0x40, 0xc5, 0xef, 0xa0, 0x34, 0xc1, 0x36, 0x91, 0x78, 0xa7, 0x20, 0x07, 0x77, + 0xb1, 0xc8, 0x41, 0x4e, 0x36, 0x89, 0x35, 0xcb, 0x21, 0xcb, 0x10, 0x30, 0xf9, 0xcb, 0x38, 0xcb, + 0x19, 0x23, 0x70, 0x23, 0x71, 0x2b, 0x2b, 0xc9, 0xf5, 0xef, 0xa0, 0x34, 0xf1, 0xcd, 0x14, 0x15, + 0xd8, 0xef, 0x01, 0xa4, 0x04, 0x0f, 0x34, 0xe7, 0x18, 0xf3, 0xef, 0x2d, 0x32, 0xc0, 0x02, 0x27, + 0xa1, 0x03, 0x2d, 0x32, 0x00, 0x22, 0x2d, 0x30, 0x33, 0x40, 0x03, 0x2d, 0x32, 0x00, 0x0c, 0x01, + 0x02, 0x01, 0x30, 0x80, 0x48, 0x18, 0x96, 0x80, 0x2f, 0x04, 0x02, 0x01, 0xa4, 0xe0, 0x00, 0x04, + 0x04, 0x2f, 0x02, 0x05, 0x01, 0x2f, 0xda, 0x02, 0x34, 0xc9, 0xcd, 0xf8, 0x13, 0xa7, 0x20, 0x05, + 0x47, 0x4f, 0xf5, 0x18, 0x31, 0x43, 0x59, 0x4a, 0xd6, 0x91, 0x3f, 0xcb, 0x78, 0xf5, 0xcb, 0xf8, + 0x38, 0x24, 0x3c, 0xed, 0x44, 0xfe, 0x08, 0x38, 0x06, 0x59, 0x48, 0x06, 0x00, 0xd6, 0x08, 0xa7, + 0x57, 0x7b, 0x07, 0x28, 0x07, 0xcb, 0x38, 0xcb, 0x19, 0x15, 0x20, 0xf9, 0x30, 0x08, 0x03, 0x78, + 0xb1, 0x20, 0x03, 0xf1, 0x37, 0xf5, 0xc5, 0xef, 0x34, 0xc1, 0xf1, 0x79, 0xc9, 0xcd, 0x8a, 0x15, + 0xd8, 0xf5, 0x05, 0x04, 0x28, 0x03, 0xf1, 0x37, 0xc9, 0xf1, 0xc9, 0xef, 0x2d, 0x32, 0x00, 0x0b, + 0x2d, 0x33, 0x00, 0x0d, 0x02, 0x34, 0x3e, 0x1c, 0xd7, 0xc9, 0x27, 0x34, 0x3e, 0x16, 0xd7, 0xef, + 0x34, 0x7e, 0xcd, 0x1d, 0x15, 0xef, 0x30, 0x78, 0x00, 0x80, 0x03, 0x30, 0xef, 0x1a, 0x20, 0x9a, + 0x85, 0x04, 0x24, 0xc1, 0x30, 0x34, 0x00, 0x03, 0x18, 0x38, 0xa2, 0x0f, 0x24, 0x34, 0x21, 0x6b, + 0x40, 0x36, 0x90, 0x06, 0x0a, 0x23, 0xe5, 0xc5, 0xef, 0xa4, 0x2e, 0x01, 0x34, 0xcd, 0xcd, 0x15, + 0xf6, 0x90, 0xc1, 0xe1, 0x77, 0x10, 0xee, 0x23, 0x01, 0x08, 0x00, 0xe5, 0x2b, 0x7e, 0xfe, 0x90, + 0x28, 0xfa, 0xed, 0x42, 0xe5, 0x7e, 0xc6, 0x6b, 0xf5, 0xf1, 0x23, 0x7e, 0xce, 0x00, 0x27, 0xf5, + 0xe6, 0x0f, 0x77, 0xcb, 0xfe, 0x28, 0xf2, 0xf1, 0xe1, 0x06, 0x06, 0x36, 0x80, 0x2b, 0x10, 0xfb, + 0xef, 0x02, 0xe1, 0x34, 0xcd, 0xcd, 0x15, 0x28, 0x02, 0xed, 0x44, 0x5f, 0x1c, 0x1c, 0xe1, 0x2b, + 0x1d, 0x7e, 0xe6, 0x0f, 0x28, 0xf9, 0x7b, 0xd6, 0x05, 0xfe, 0x08, 0xf2, 0x82, 0x16, 0xfe, 0xf6, + 0xfa, 0x82, 0x16, 0xc6, 0x06, 0x28, 0x48, 0xfa, 0xb2, 0x16, 0x47, 0xcd, 0xd0, 0x16, 0x10, 0xfb, + 0x18, 0x40, 0x43, 0xcd, 0xd0, 0x16, 0xcd, 0xc2, 0x16, 0x3e, 0x2a, 0xd7, 0x78, 0xa7, 0xf2, 0x98, + 0x16, 0xed, 0x44, 0x47, 0x3e, 0x16, 0x18, 0x02, 0x3e, 0x15, 0xd7, 0x78, 0x06, 0xff, 0x04, 0xd6, + 0x0a, 0x30, 0xfb, 0xc6, 0x0a, 0x4f, 0x78, 0xa7, 0x28, 0x03, 0xcd, 0xeb, 0x07, 0x79, 0xcd, 0xeb, + 0x07, 0xc9, 0xed, 0x44, 0x47, 0x3e, 0x1b, 0xd7, 0x3e, 0x1c, 0xd7, 0x10, 0xfd, 0x18, 0x09, 0x3e, + 0x1c, 0xd7, 0x35, 0x34, 0xe8, 0x3e, 0x1b, 0xd7, 0x35, 0x34, 0xe8, 0xcd, 0xd0, 0x16, 0x18, 0xf8, + 0x7e, 0xe6, 0x0f, 0xcd, 0xeb, 0x07, 0x2b, 0xc9, 0x7e, 0x36, 0x00, 0xa7, 0xc8, 0x23, 0xcb, 0x7e, + 0xcb, 0xfe, 0x2b, 0xc8, 0xc5, 0x01, 0x05, 0x00, 0x09, 0x41, 0x4f, 0x37, 0x2b, 0x7e, 0x2f, 0xce, + 0x00, 0x77, 0x10, 0xf8, 0x79, 0xc1, 0xc9, 0xe5, 0xf5, 0x4e, 0x23, 0x46, 0x77, 0x23, 0x79, 0x4e, + 0xc5, 0x23, 0x4e, 0x23, 0x46, 0xeb, 0x57, 0x5e, 0xd5, 0x23, 0x56, 0x23, 0x5e, 0xd5, 0xd9, 0xd1, + 0xe1, 0xc1, 0xd9, 0x23, 0x56, 0x23, 0x5e, 0xf1, 0xe1, 0xc9, 0xa7, 0xc8, 0xfe, 0x21, 0x30, 0x16, + 0xc5, 0x47, 0xd9, 0xcb, 0x2d, 0xcb, 0x1a, 0xcb, 0x1b, 0xd9, 0xcb, 0x1a, 0xcb, 0x1b, 0x10, 0xf2, + 0xc1, 0xd0, 0xcd, 0x41, 0x17, 0xc0, 0xd9, 0xaf, 0x2e, 0x00, 0x57, 0x5d, 0xd9, 0x11, 0x00, 0x00, + 0xc9, 0x1c, 0xc0, 0x14, 0xc0, 0xd9, 0x1c, 0x20, 0x01, 0x14, 0xd9, 0xc9, 0x1a, 0xa7, 0xc8, 0x13, + 0x1a, 0xee, 0x80, 0x12, 0x1b, 0xd9, 0xe5, 0xd9, 0xd5, 0xe5, 0xcd, 0xd8, 0x16, 0x47, 0xeb, 0xcd, + 0xd8, 0x16, 0x4f, 0xb8, 0x30, 0x03, 0x78, 0x41, 0xeb, 0xf5, 0x90, 0xcd, 0xf7, 0x16, 0xcd, 0x1a, + 0x17, 0xf1, 0xe1, 0x77, 0xe5, 0x68, 0x61, 0x19, 0xd9, 0xeb, 0xed, 0x4a, 0xeb, 0x7c, 0x8d, 0x6f, + 0x1f, 0xad, 0xd9, 0xeb, 0xe1, 0x1f, 0x30, 0x08, 0x3e, 0x01, 0xcd, 0x1a, 0x17, 0x34, 0x28, 0x23, + 0xd9, 0x7d, 0xe6, 0x80, 0xd9, 0x23, 0x77, 0x2b, 0x28, 0x1f, 0x7b, 0xed, 0x44, 0x3f, 0x5f, 0x7a, + 0x2f, 0xce, 0x00, 0x57, 0xd9, 0x7b, 0x2f, 0xce, 0x00, 0x5f, 0x7a, 0x2f, 0xce, 0x00, 0x30, 0x07, + 0x1f, 0xd9, 0x34, 0xca, 0x80, 0x18, 0xd9, 0x57, 0xd9, 0xaf, 0x18, 0x6c, 0x37, 0x35, 0x34, 0xc8, + 0x23, 0xae, 0xcb, 0xfe, 0x2b, 0xc9, 0xaf, 0xcd, 0xbc, 0x17, 0xd8, 0xd9, 0xe5, 0xd9, 0xd5, 0xeb, + 0xcd, 0xbc, 0x17, 0xeb, 0x38, 0x5a, 0xe5, 0xcd, 0xf7, 0x16, 0x78, 0xa7, 0xed, 0x62, 0xd9, 0xe5, + 0xed, 0x62, 0xd9, 0x06, 0x21, 0x18, 0x11, 0x30, 0x05, 0x19, 0xd9, 0xed, 0x5a, 0xd9, 0xd9, 0xcb, + 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x18, 0xcb, 0x19, 0xd9, 0xcb, 0x19, + 0x1f, 0x10, 0xe4, 0xeb, 0xd9, 0xeb, 0xd9, 0xc1, 0xe1, 0x78, 0x81, 0x20, 0x01, 0xa7, 0x3d, 0x3f, + 0x17, 0x3f, 0x1f, 0xf2, 0x19, 0x18, 0x30, 0x68, 0xa7, 0x3c, 0x20, 0x08, 0x38, 0x06, 0xd9, 0xcb, + 0x7a, 0xd9, 0x20, 0x5c, 0x77, 0xd9, 0x78, 0xd9, 0x30, 0x15, 0x7e, 0xa7, 0x3e, 0x80, 0x28, 0x01, + 0xaf, 0xd9, 0xa2, 0xcd, 0x38, 0x17, 0x07, 0x77, 0x38, 0x2e, 0x23, 0x77, 0x2b, 0x18, 0x29, 0x06, + 0x20, 0xd9, 0xcb, 0x7a, 0xd9, 0x20, 0x12, 0x07, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0xcb, 0x13, 0xcb, + 0x12, 0xd9, 0x35, 0x28, 0xd7, 0x10, 0xea, 0x18, 0xd7, 0x17, 0x30, 0x0c, 0xcd, 0x41, 0x17, 0x20, + 0x07, 0xd9, 0x16, 0x80, 0xd9, 0x34, 0x28, 0x18, 0xe5, 0x23, 0xd9, 0xd5, 0xd9, 0xc1, 0x78, 0x17, + 0xcb, 0x16, 0x1f, 0x77, 0x23, 0x71, 0x23, 0x72, 0x23, 0x73, 0xe1, 0xd1, 0xd9, 0xe1, 0xd9, 0xc9, + 0xcf, 0x05, 0xeb, 0xaf, 0xcd, 0xbc, 0x17, 0x38, 0xf7, 0xeb, 0xcd, 0xbc, 0x17, 0xd8, 0xd9, 0xe5, + 0xd9, 0xd5, 0xe5, 0xcd, 0xf7, 0x16, 0xd9, 0xe5, 0x60, 0x69, 0xd9, 0x61, 0x68, 0xaf, 0x06, 0xdf, + 0x18, 0x10, 0x17, 0xcb, 0x11, 0xd9, 0xcb, 0x11, 0xcb, 0x10, 0xd9, 0x29, 0xd9, 0xed, 0x6a, 0xd9, + 0x38, 0x10, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xd9, 0x30, 0x0f, 0x19, 0xd9, 0xed, 0x5a, 0xd9, 0xa7, + 0x18, 0x08, 0xa7, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xd9, 0x37, 0x04, 0xfa, 0xa2, 0x18, 0xf5, 0x28, + 0xe1, 0x5f, 0x51, 0xd9, 0x59, 0x50, 0xf1, 0xcb, 0x18, 0xf1, 0xcb, 0x18, 0xd9, 0xc1, 0xe1, 0x78, + 0x91, 0xc3, 0x10, 0x18, 0x7e, 0xfe, 0x81, 0x30, 0x06, 0x36, 0x00, 0x3e, 0x20, 0x18, 0x05, 0xd6, + 0xa0, 0xf0, 0xed, 0x44, 0xd5, 0xeb, 0x2b, 0x47, 0xcb, 0x38, 0xcb, 0x38, 0xcb, 0x38, 0x28, 0x05, + 0x36, 0x00, 0x2b, 0x10, 0xfb, 0xe6, 0x07, 0x28, 0x09, 0x47, 0x3e, 0xff, 0xcb, 0x27, 0x10, 0xfc, + 0xa6, 0x77, 0xeb, 0xd1, 0xc9, 0x00, 0xb0, 0x00, 0x31, 0x00, 0x30, 0x00, 0xf1, 0x49, 0x0f, 0xda, + 0xa2, 0x34, 0x20, 0x2f, 0x1c, 0x72, 0x1a, 0xe3, 0x19, 0x4c, 0x17, 0xc6, 0x17, 0x82, 0x18, 0xe2, + 0x1d, 0xed, 0x1a, 0xf3, 0x1a, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, + 0x1b, 0x55, 0x17, 0xf8, 0x1a, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, + 0x1b, 0x62, 0x1b, 0xa0, 0x1a, 0x06, 0x1c, 0xa4, 0x1b, 0x11, 0x1c, 0x49, 0x1d, 0x3e, 0x1d, 0x6e, + 0x1d, 0xc4, 0x1d, 0xd4, 0x1d, 0x76, 0x1d, 0xa9, 0x1c, 0x5b, 0x1c, 0x46, 0x1c, 0xdb, 0x1d, 0xaf, + 0x1a, 0xaa, 0x1a, 0xbe, 0x1a, 0xc5, 0x1a, 0xd5, 0x1b, 0x8f, 0x1b, 0xd5, 0x1a, 0xf6, 0x19, 0x37, + 0x1c, 0x23, 0x1c, 0xfc, 0x19, 0x17, 0x1c, 0xdb, 0x1a, 0xce, 0x1a, 0x2b, 0x00, 0x18, 0x1d, 0xe4, + 0x18, 0xe4, 0x19, 0x5a, 0x15, 0x7f, 0x1a, 0x51, 0x1a, 0x63, 0x1a, 0x45, 0x1a, 0xcd, 0x85, 0x1b, + 0x78, 0x32, 0x1e, 0x40, 0xd9, 0xe3, 0xd9, 0xed, 0x53, 0x1c, 0x40, 0xd9, 0x7e, 0x23, 0xe5, 0xa7, + 0xf2, 0xc2, 0x19, 0x57, 0xe6, 0x60, 0x0f, 0x0f, 0x0f, 0x0f, 0xc6, 0x72, 0x6f, 0x7a, 0xe6, 0x1f, + 0x18, 0x0e, 0xfe, 0x18, 0x30, 0x08, 0xd9, 0x01, 0xfb, 0xff, 0x54, 0x5d, 0x09, 0xd9, 0x07, 0x6f, + 0x11, 0x23, 0x19, 0x26, 0x00, 0x19, 0x5e, 0x23, 0x56, 0x21, 0xa7, 0x19, 0xe3, 0xd5, 0xd9, 0xed, + 0x4b, 0x1d, 0x40, 0xc9, 0xf1, 0x3a, 0x1e, 0x40, 0xd9, 0x18, 0xc3, 0xd5, 0xe5, 0x01, 0x05, 0x00, + 0xcd, 0xc5, 0x0e, 0xe1, 0xd1, 0xc9, 0xcd, 0xeb, 0x19, 0xed, 0xb0, 0xc9, 0x62, 0x6b, 0xcd, 0xeb, + 0x19, 0xd9, 0xe5, 0xd9, 0xe3, 0xc5, 0x7e, 0xe6, 0xc0, 0x07, 0x07, 0x4f, 0x0c, 0x7e, 0xe6, 0x3f, + 0x20, 0x02, 0x23, 0x7e, 0xc6, 0x50, 0x12, 0x3e, 0x05, 0x91, 0x23, 0x13, 0x06, 0x00, 0xed, 0xb0, + 0xc1, 0xe3, 0xd9, 0xe1, 0xd9, 0x47, 0xaf, 0x05, 0xc8, 0x12, 0x13, 0x18, 0xfa, 0xa7, 0xc8, 0xf5, + 0xd5, 0x11, 0x00, 0x00, 0xcd, 0xfe, 0x19, 0xd1, 0xf1, 0x3d, 0x18, 0xf2, 0x4f, 0x07, 0x07, 0x81, + 0x4f, 0x06, 0x00, 0x09, 0xc9, 0xd5, 0x2a, 0x1f, 0x40, 0xcd, 0x3c, 0x1a, 0xcd, 0xf6, 0x19, 0xe1, + 0xc9, 0x62, 0x6b, 0xd9, 0xe5, 0x21, 0x15, 0x19, 0xd9, 0xcd, 0x2d, 0x1a, 0xcd, 0xfe, 0x19, 0xd9, + 0xe1, 0xd9, 0xc9, 0xe5, 0xeb, 0x2a, 0x1f, 0x40, 0xcd, 0x3c, 0x1a, 0xeb, 0xcd, 0xf6, 0x19, 0xeb, + 0xe1, 0xc9, 0x06, 0x05, 0x1a, 0x4e, 0xeb, 0x12, 0x71, 0x23, 0x13, 0x10, 0xf7, 0xeb, 0xc9, 0x47, + 0xcd, 0xa0, 0x19, 0x2d, 0x0f, 0xc0, 0x02, 0xa0, 0xc2, 0x2d, 0xe0, 0x04, 0xe2, 0xc1, 0x03, 0x34, + 0xcd, 0xfc, 0x19, 0xcd, 0xa4, 0x19, 0x0f, 0x01, 0xc2, 0x02, 0x31, 0xee, 0xe1, 0x03, 0x34, 0xc9, + 0x7e, 0xa7, 0xc8, 0x23, 0x7e, 0xee, 0x80, 0x77, 0x2b, 0xc9, 0x23, 0xcb, 0xbe, 0x2b, 0xc9, 0x23, + 0x7e, 0x2b, 0x35, 0x34, 0x37, 0xc4, 0xe0, 0x1a, 0x23, 0x07, 0xcb, 0x1e, 0x2b, 0xc9, 0xcd, 0xa7, + 0x0e, 0x0a, 0xc3, 0x1d, 0x15, 0xcd, 0xa7, 0x0e, 0x21, 0x20, 0x15, 0xe5, 0xc5, 0xc9, 0x7e, 0xa7, + 0xc8, 0x3e, 0xff, 0x18, 0x07, 0x7e, 0xed, 0x44, 0x3f, 0x18, 0x05, 0xaf, 0x23, 0xae, 0x2b, 0x07, + 0xe5, 0x06, 0x05, 0x36, 0x00, 0x23, 0x10, 0xfb, 0xe1, 0xd0, 0x36, 0x81, 0xc9, 0x1a, 0xa7, 0xc8, + 0x37, 0x18, 0xed, 0x1a, 0xa7, 0xc0, 0x18, 0xe8, 0x1a, 0xa7, 0xc0, 0xd5, 0x1b, 0xaf, 0x12, 0x1b, + 0x12, 0xd1, 0xc9, 0x78, 0xd6, 0x08, 0xcb, 0x57, 0x20, 0x01, 0x3d, 0x0f, 0x30, 0x08, 0xf5, 0xe5, + 0xcd, 0x72, 0x1a, 0xd1, 0xeb, 0xf1, 0xcb, 0x57, 0x20, 0x07, 0x0f, 0xf5, 0xcd, 0x4c, 0x17, 0x18, + 0x33, 0x0f, 0xf5, 0xcd, 0xf8, 0x13, 0xd5, 0xc5, 0xcd, 0xf8, 0x13, 0xe1, 0x7c, 0xb5, 0xe3, 0x78, + 0x20, 0x0b, 0xb1, 0xc1, 0x28, 0x04, 0xf1, 0x3f, 0x18, 0x16, 0xf1, 0x18, 0x13, 0xb1, 0x28, 0x0d, + 0x1a, 0x96, 0x38, 0x09, 0x20, 0xed, 0x0b, 0x13, 0x23, 0xe3, 0x2b, 0x18, 0xdf, 0xc1, 0xf1, 0xa7, + 0xf5, 0xef, 0xa0, 0x34, 0xf1, 0xf5, 0xdc, 0xd5, 0x1a, 0xcd, 0xce, 0x1a, 0xf1, 0x0f, 0xd4, 0xd5, + 0x1a, 0xc9, 0xcd, 0xf8, 0x13, 0xd5, 0xc5, 0xcd, 0xf8, 0x13, 0xe1, 0xe5, 0xd5, 0xc5, 0x09, 0x44, + 0x4d, 0xf7, 0xcd, 0xc3, 0x12, 0xc1, 0xe1, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, 0xe1, 0x78, + 0xb1, 0x28, 0x02, 0xed, 0xb0, 0x2a, 0x1c, 0x40, 0x11, 0xfb, 0xff, 0xe5, 0x19, 0xd1, 0xc9, 0xcd, + 0xcd, 0x15, 0x38, 0x0e, 0x20, 0x0c, 0xf5, 0x01, 0x01, 0x00, 0xf7, 0xf1, 0x12, 0xcd, 0xc3, 0x12, + 0xeb, 0xc9, 0xcf, 0x0a, 0x2a, 0x16, 0x40, 0xe5, 0xcd, 0xf8, 0x13, 0xd5, 0x03, 0xf7, 0xe1, 0xed, + 0x53, 0x16, 0x40, 0xd5, 0xed, 0xb0, 0xeb, 0x2b, 0x36, 0x76, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0x92, + 0x0d, 0xcd, 0x22, 0x0d, 0xe1, 0x22, 0x16, 0x40, 0xfd, 0xcb, 0x01, 0xfe, 0xcd, 0x55, 0x0f, 0xe1, + 0x22, 0x16, 0x40, 0x18, 0xb0, 0x01, 0x01, 0x00, 0xf7, 0x36, 0x76, 0x2a, 0x39, 0x40, 0xe5, 0x2e, + 0xff, 0x22, 0x39, 0x40, 0x2a, 0x0e, 0x40, 0xe5, 0xed, 0x53, 0x0e, 0x40, 0xd5, 0xcd, 0xdb, 0x15, + 0xd1, 0x2a, 0x0e, 0x40, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0xe1, 0x22, 0x0e, 0x40, 0xe1, 0x22, 0x39, + 0x40, 0xcd, 0xc3, 0x12, 0xeb, 0xc9, 0xcd, 0xf8, 0x13, 0x78, 0xb1, 0x28, 0x01, 0x1a, 0xc3, 0x1d, + 0x15, 0xcd, 0xf8, 0x13, 0xc3, 0x20, 0x15, 0xd9, 0xe5, 0x21, 0x1e, 0x40, 0x35, 0xe1, 0x20, 0x04, + 0x23, 0xd9, 0xc9, 0xd9, 0x5e, 0xaf, 0xcb, 0x7b, 0x28, 0x01, 0x2f, 0x57, 0x19, 0xd9, 0xc9, 0x1a, + 0xa7, 0x20, 0xf0, 0xd9, 0x23, 0xd9, 0xc9, 0xef, 0xc0, 0x02, 0x2d, 0xe0, 0x05, 0x24, 0xe0, 0x01, + 0xc0, 0x04, 0x03, 0xe0, 0x34, 0xc9, 0xef, 0x2d, 0x32, 0x00, 0x04, 0x36, 0x34, 0xc9, 0x2d, 0x36, + 0xc0, 0x03, 0xe0, 0x01, 0x2c, 0x00, 0x03, 0xa1, 0x03, 0x34, 0xc9, 0xef, 0x30, 0xf1, 0x38, 0xaa, + 0x3b, 0x29, 0x04, 0x2d, 0x24, 0xc3, 0x03, 0x2d, 0x0f, 0xa1, 0x03, 0x88, 0x13, 0x36, 0x58, 0x65, + 0x66, 0x9d, 0x78, 0x65, 0x40, 0xa2, 0x60, 0x32, 0xc9, 0xe7, 0x21, 0xf7, 0xaf, 0x24, 0xeb, 0x2f, + 0xb0, 0xb0, 0x14, 0xee, 0x7e, 0xbb, 0x94, 0x58, 0xf1, 0x3a, 0x7e, 0xf8, 0xcf, 0xe3, 0x34, 0xcd, + 0xcd, 0x15, 0x20, 0x07, 0x38, 0x03, 0x86, 0x30, 0x09, 0xcf, 0x05, 0x38, 0x07, 0x96, 0x30, 0x04, + 0xed, 0x44, 0x77, 0xc9, 0xef, 0x02, 0xa0, 0x34, 0xc9, 0xef, 0x2d, 0x33, 0x00, 0x04, 0x34, 0xcf, + 0x09, 0xa0, 0x02, 0x34, 0x7e, 0x36, 0x80, 0xcd, 0x1d, 0x15, 0xef, 0x30, 0x38, 0x00, 0x03, 0x01, + 0x2d, 0x30, 0xf0, 0x4c, 0xcc, 0xcc, 0xcd, 0x03, 0x33, 0x00, 0x08, 0x01, 0xa1, 0x03, 0x01, 0x34, + 0x34, 0xef, 0x01, 0x30, 0xf0, 0x31, 0x72, 0x17, 0xf8, 0x04, 0x01, 0xa2, 0x03, 0xa2, 0x03, 0x2d, + 0x30, 0x32, 0x20, 0x04, 0xa2, 0x03, 0x8c, 0x11, 0xac, 0x14, 0x09, 0x56, 0xda, 0xa5, 0x59, 0x30, + 0xc5, 0x5c, 0x90, 0xaa, 0x9e, 0x70, 0x6f, 0x61, 0xa1, 0xcb, 0xda, 0x96, 0xa4, 0x31, 0x9f, 0xb4, + 0xe7, 0xa0, 0xfe, 0x5c, 0xfc, 0xea, 0x1b, 0x43, 0xca, 0x36, 0xed, 0xa7, 0x9c, 0x7e, 0x5e, 0xf0, + 0x6e, 0x23, 0x80, 0x93, 0x04, 0x0f, 0x34, 0xc9, 0xef, 0x30, 0xee, 0x22, 0xf9, 0x83, 0x6e, 0x04, + 0x2d, 0xa2, 0x0f, 0x24, 0x03, 0x2d, 0x0f, 0x2d, 0x0f, 0x2d, 0x27, 0xa1, 0x03, 0x2d, 0x33, 0xc0, + 0x00, 0x04, 0x02, 0x34, 0xc9, 0xa1, 0x03, 0x01, 0x32, 0x00, 0x02, 0x18, 0x34, 0xc9, 0xef, 0x35, + 0x27, 0xa1, 0x03, 0xe0, 0x00, 0x06, 0x18, 0x2f, 0x03, 0xef, 0x35, 0x2d, 0x2d, 0x04, 0x2d, 0x0f, + 0xa1, 0x03, 0x86, 0x14, 0xe6, 0x5c, 0x1f, 0x0b, 0xa3, 0x8f, 0x38, 0xee, 0xe9, 0x15, 0x63, 0xbb, + 0x23, 0xee, 0x92, 0x0d, 0xcd, 0xed, 0xf1, 0x23, 0x5d, 0x1b, 0xea, 0x04, 0x34, 0xc9, 0xef, 0x2d, + 0x1c, 0x01, 0x1d, 0x05, 0x34, 0xc9, 0x7e, 0xfe, 0x81, 0x38, 0x0e, 0xef, 0xa1, 0x18, 0x01, 0x05, + 0x2d, 0x32, 0xa3, 0x01, 0x00, 0x06, 0x18, 0x2f, 0x03, 0xef, 0xa0, 0x01, 0x2d, 0x2d, 0x04, 0x2d, + 0x0f, 0xa1, 0x03, 0x8c, 0x10, 0xb2, 0x13, 0x0e, 0x55, 0xe4, 0x8d, 0x58, 0x39, 0xbc, 0x5b, 0x98, + 0xfd, 0x9e, 0x00, 0x36, 0x75, 0xa0, 0xdb, 0xe8, 0xb4, 0x63, 0x42, 0xc4, 0xe6, 0xb5, 0x09, 0x36, + 0xbe, 0xe9, 0x36, 0x73, 0x1b, 0x5d, 0xec, 0xd8, 0xde, 0x63, 0xbe, 0xf0, 0x61, 0xa1, 0xb3, 0x0c, + 0x04, 0x0f, 0x34, 0xc9, 0xef, 0x2d, 0x2d, 0x04, 0xa1, 0x03, 0x18, 0x25, 0xa1, 0x0f, 0x05, 0x21, + 0x2d, 0x0f, 0x34, 0xc9, 0xef, 0x1f, 0xa3, 0x03, 0x18, 0x34, 0xc9, 0xef, 0x2d, 0x2c, 0x00, 0x1e, + 0xa2, 0x34, 0xef, 0x01, 0x2d, 0x2c, 0x00, 0x07, 0x22, 0x04, 0x34, 0xc3, 0x5b, 0x1c, 0x02, 0x2d, + 0x2c, 0x00, 0x09, 0xa0, 0x01, 0x33, 0x00, 0x06, 0xa1, 0x01, 0x05, 0x02, 0xa1, 0x34, 0xc9, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x55, 0xaa, 0x55, + 0xaa, 0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x7e, 0x00, 0x00, 0x08, 0x3e, 0x28, 0x3e, 0x0a, 0x3e, 0x08, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3c, 0x42, 0x04, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00, + 0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x3c, 0x46, 0x4a, 0x52, 0x62, 0x3c, 0x00, 0x00, 0x18, 0x28, 0x08, 0x08, 0x08, 0x3e, 0x00, + 0x00, 0x3c, 0x42, 0x02, 0x3c, 0x40, 0x7e, 0x00, 0x00, 0x3c, 0x42, 0x0c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0x08, 0x18, 0x28, 0x48, 0x7e, 0x08, 0x00, 0x00, 0x7e, 0x40, 0x7c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0x3c, 0x40, 0x7c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7e, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00, + 0x00, 0x3c, 0x42, 0x3c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x3e, 0x02, 0x3c, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x00, 0x00, 0x7c, 0x42, 0x7c, 0x42, 0x42, 0x7c, 0x00, + 0x00, 0x3c, 0x42, 0x40, 0x40, 0x42, 0x3c, 0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x44, 0x78, 0x00, + 0x00, 0x7e, 0x40, 0x7c, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x7e, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x3c, 0x42, 0x40, 0x4e, 0x42, 0x3c, 0x00, 0x00, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x00, + 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x02, 0x02, 0x02, 0x42, 0x42, 0x3c, 0x00, + 0x00, 0x44, 0x48, 0x70, 0x48, 0x44, 0x42, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7e, 0x00, + 0x00, 0x42, 0x66, 0x5a, 0x42, 0x42, 0x42, 0x00, 0x00, 0x42, 0x62, 0x52, 0x4a, 0x46, 0x42, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, 0x7c, 0x40, 0x40, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x52, 0x4a, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, 0x7c, 0x44, 0x42, 0x00, + 0x00, 0x3c, 0x40, 0x3c, 0x02, 0x42, 0x3c, 0x00, 0x00, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, + 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x24, 0x00, 0x00, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x00, + 0x00, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00, 0x00, 0x7e, 0x04, 0x08, 0x10, 0x20, 0x7e, 0x00, +}; diff --git a/MCUME_esp32/esp81/sdkconfig b/MCUME_esp32/esp81/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/esp81/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/esp81/sdkconfig.old b/MCUME_esp32/esp81/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/esp81/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espboot/.DS_Store b/MCUME_esp32/espboot/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espboot/.DS_Store differ diff --git a/MCUME_esp32/espboot/Makefile b/MCUME_esp32/espboot/Makefile new file mode 100644 index 0000000..318eb8c --- /dev/null +++ b/MCUME_esp32/espboot/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espboot + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espboot/components/.DS_Store b/MCUME_esp32/espboot/components/.DS_Store new file mode 100644 index 0000000..f64ec69 Binary files /dev/null and b/MCUME_esp32/espboot/components/.DS_Store differ diff --git a/MCUME_esp32/espboot/components/Audio/.DS_Store b/MCUME_esp32/espboot/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espboot/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espboot/components/Audio/component.mk b/MCUME_esp32/espboot/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espboot/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espboot/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espboot/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espboot/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espboot/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espboot/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espboot/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espboot/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espboot/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espboot/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espboot/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espboot/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espboot/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espboot/components/Wire/.DS_Store b/MCUME_esp32/espboot/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espboot/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espboot/components/Wire/Wire.cpp b/MCUME_esp32/espboot/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espboot/components/Wire/Wire.h b/MCUME_esp32/espboot/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espboot/components/Wire/component.mk b/MCUME_esp32/espboot/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espboot/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espboot/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espboot/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espboot/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espboot/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espboot/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espboot/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espboot/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espboot/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espboot/components/bootloader/CMakeLists.txt b/MCUME_esp32/espboot/components/bootloader/CMakeLists.txt new file mode 100644 index 0000000..d38b8ff --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/CMakeLists.txt @@ -0,0 +1,7 @@ +# bootloader component logic is all in project_include.cmake, +# and subproject/CMakeLists.txt. +# +# This file is only included so the build system finds the +# component + + diff --git a/MCUME_esp32/espboot/components/bootloader/Kconfig.projbuild b/MCUME_esp32/espboot/components/bootloader/Kconfig.projbuild new file mode 100644 index 0000000..3ecbed9 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/Kconfig.projbuild @@ -0,0 +1,429 @@ +menu "Bootloader config" +choice LOG_BOOTLOADER_LEVEL + bool "Bootloader log verbosity" + default LOG_BOOTLOADER_LEVEL_INFO + help + Specify how much output to see in bootloader logs. + +config LOG_BOOTLOADER_LEVEL_NONE + bool "No output" +config LOG_BOOTLOADER_LEVEL_ERROR + bool "Error" +config LOG_BOOTLOADER_LEVEL_WARN + bool "Warning" +config LOG_BOOTLOADER_LEVEL_INFO + bool "Info" +config LOG_BOOTLOADER_LEVEL_DEBUG + bool "Debug" +config LOG_BOOTLOADER_LEVEL_VERBOSE + bool "Verbose" +endchoice + +config LOG_BOOTLOADER_LEVEL + int + default 0 if LOG_BOOTLOADER_LEVEL_NONE + default 1 if LOG_BOOTLOADER_LEVEL_ERROR + default 2 if LOG_BOOTLOADER_LEVEL_WARN + default 3 if LOG_BOOTLOADER_LEVEL_INFO + default 4 if LOG_BOOTLOADER_LEVEL_DEBUG + default 5 if LOG_BOOTLOADER_LEVEL_VERBOSE + +config BOOTLOADER_SPI_WP_PIN + int "SPI Flash WP Pin when customising pins via efuse (read help)" + range 0 33 + default 7 + depends on FLASHMODE_QIO || FLASHMODE_QOUT + help + This value is ignored unless flash mode is set to QIO or QOUT *and* the SPI flash pins have been + overriden by setting the efuses SPI_PAD_CONFIG_xxx. + + When this is the case, the Efuse config only defines 3 of the 4 Quad I/O data pins. The WP pin (aka ESP32 + pin "SD_DATA_3" or SPI flash pin "IO2") is not specified in Efuse. That pin number is compiled into the bootloader + instead. + + The default value (GPIO 7) is correct for WP pin on ESP32-D2WD integrated flash. + +choice BOOTLOADER_VDDSDIO_BOOST + bool "VDDSDIO LDO voltage" + default BOOTLOADER_VDDSDIO_BOOST_1_9V + help + If this option is enabled, and VDDSDIO LDO is set to 1.8V (using EFUSE + or MTDI bootstrapping pin), bootloader will change LDO settings to + output 1.9V instead. This helps prevent flash chip from browning out + during flash programming operations. + + This option has no effect if VDDSDIO is set to 3.3V, or if the internal + VDDSDIO regulator is disabled via efuse. + +config BOOTLOADER_VDDSDIO_BOOST_1_8V + bool "1.8V" + depends on !ESPTOOLPY_FLASHFREQ_80M +config BOOTLOADER_VDDSDIO_BOOST_1_9V + bool "1.9V" +endchoice + +config BOOTLOADER_FACTORY_RESET + bool "GPIO triggers factory reset" + default N + help + Allows to reset the device to factory settings: + - clear one or more data partitions; + - boot from "factory" partition. + The factory reset will occur if there is a GPIO input pulled low while device starts up. + See settings below. + +config BOOTLOADER_NUM_PIN_FACTORY_RESET + int "Number of the GPIO input for factory reset" + depends on BOOTLOADER_FACTORY_RESET + range 0 39 + default 4 + help + The selected GPIO will be configured as an input with internal pull-up enabled. + To trigger a factory reset, this GPIO must be pulled low on reset. + Note that GPIO34-39 do not have an internal pullup and an external one must be provided. + +config BOOTLOADER_OTA_DATA_ERASE + bool "Clear OTA data on factory reset (select factory partition)" + depends on BOOTLOADER_FACTORY_RESET + help + The device will boot from "factory" partition (or OTA slot 0 if no factory partition is present) after a factory reset. + +config BOOTLOADER_DATA_FACTORY_RESET + string "Comma-separated names of partitions to clear on factory reset" + depends on BOOTLOADER_FACTORY_RESET + default "nvs" + help + Allows customers to select which data partitions will be erased while factory reset. + + Specify the names of partitions as a comma-delimited with optional spaces for readability. (Like this: "nvs, phy_init, ...") + Make sure that the name specified in the partition table and here are the same. + Partitions of type "app" cannot be specified here. + +config BOOTLOADER_APP_TEST + bool "GPIO triggers boot from test app partition" + default N + help + Allows to run the test app from "TEST" partition. + A boot from "test" partition will occur if there is a GPIO input pulled low while device starts up. + See settings below. + +config BOOTLOADER_NUM_PIN_APP_TEST + int "Number of the GPIO input to boot TEST partition" + depends on BOOTLOADER_APP_TEST + range 0 39 + default 18 + help + The selected GPIO will be configured as an input with internal pull-up enabled. + To trigger a test app, this GPIO must be pulled low on reset. + After the GPIO input is deactivated and the device reboots, the old application will boot. + (factory or OTA[x]). + Note that GPIO34-39 do not have an internal pullup and an external one must be provided. + +config BOOTLOADER_HOLD_TIME_GPIO + int "Hold time of GPIO for reset/test mode (seconds)" + depends on BOOTLOADER_FACTORY_RESET || BOOTLOADER_APP_TEST + default 5 + help + The GPIO must be held low continuously for this period of time after reset + before a factory reset or test partition boot (as applicable) is performed. + +config BOOTLOADER_WDT_ENABLE + bool "Use RTC watchdog in start code" + default y + help + Tracks the execution time of startup code. + If the execution time is exceeded, the RTC_WDT will restart system. + It is also useful to prevent a lock up in start code caused by an unstable power source. + NOTE: Tracks the execution time starts from the bootloader code - re-set timeout, while selecting the source for slow_clk - and ends calling app_main. + Re-set timeout is needed due to WDT uses a SLOW_CLK clock source. After changing a frequency slow_clk a time of WDT needs to re-set for new frequency. + slow_clk depends on ESP32_RTC_CLOCK_SOURCE (INTERNAL_RC or EXTERNAL_CRYSTAL). + +config BOOTLOADER_WDT_DISABLE_IN_USER_CODE + bool "Allows RTC watchdog disable in user code" + depends on BOOTLOADER_WDT_ENABLE + default n + help + If it is set, the client must itself reset or disable rtc_wdt in their code (app_main()). + Otherwise rtc_wdt will be disabled before calling app_main function. + Use function rtc_wdt_feed() for resetting counter of rtc_wdt. + Use function rtc_wdt_disable() for disabling rtc_wdt. + +config BOOTLOADER_WDT_TIME_MS + int "Timeout for RTC watchdog (ms)" + depends on BOOTLOADER_WDT_ENABLE + default 9000 + range 0 120000 + help + Verify that this parameter is correct and more then the execution time. + Pay attention to options such as reset to factory, trigger test partition and encryption on boot + - these options can increase the execution time. + Note: RTC_WDT will reset while encryption operations will be performed. + +endmenu # Bootloader + + +menu "Security features" + +# These three are the actual options to check in code, +# selected by the displayed options +config SECURE_SIGNED_ON_BOOT + bool + default y + depends on SECURE_BOOT_ENABLED || SECURE_SIGNED_ON_BOOT_NO_SECURE_BOOT + +config SECURE_SIGNED_ON_UPDATE + bool + default y + depends on SECURE_BOOT_ENABLED || SECURE_SIGNED_ON_UPDATE_NO_SECURE_BOOT + +config SECURE_SIGNED_APPS + bool + default y + depends on SECURE_SIGNED_ON_BOOT || SECURE_SIGNED_ON_UPDATE + + +config SECURE_SIGNED_APPS_NO_SECURE_BOOT + bool "Require signed app images" + default n + depends on !SECURE_BOOT_ENABLED + help + Require apps to be signed to verify their integrity. + + This option uses the same app signature scheme as hardware secure boot, but unlike hardware secure boot it does not prevent the bootloader from being physically updated. This means that the device can be secured against remote network access, but not physical access. Compared to using hardware Secure Boot this option is much simpler to implement. + +config SECURE_SIGNED_ON_BOOT_NO_SECURE_BOOT + bool "Bootloader verifies app signatures" + default n + depends on SECURE_SIGNED_APPS_NO_SECURE_BOOT + help + If this option is set, the bootloader will be compiled with code to verify that an app is signed before booting it. + + If hardware secure boot is enabled, this option is always enabled and cannot be disabled. + If hardware secure boot is not enabled, this option doesn't add significant security by itself so most users will want to leave it disabled. + +config SECURE_SIGNED_ON_UPDATE_NO_SECURE_BOOT + bool "Verify app signature on update" + default y + depends on SECURE_SIGNED_APPS_NO_SECURE_BOOT + help + If this option is set, any OTA updated apps will have the signature verified before being considered valid. + + When enabled, the signature is automatically checked whenever the esp_ota_ops.h APIs are used for OTA updates, + or esp_image_format.h APIs are used to verify apps. + + If hardware secure boot is enabled, this option is always enabled and cannot be disabled. + If hardware secure boot is not enabled, this option still adds significant security against network-based attackers by preventing spoofing of OTA updates. + +config SECURE_BOOT_ENABLED + bool "Enable hardware secure boot in bootloader (READ DOCS FIRST)" + default n + help + Build a bootloader which enables secure boot on first boot. + + Once enabled, secure boot will not boot a modified bootloader. The bootloader will only load a partition table or boot an app if the data has a verified digital signature. There are implications for reflashing updated apps once secure boot is enabled. + + When enabling secure boot, JTAG and ROM BASIC Interpreter are permanently disabled by default. + + Refer to https://docs.espressif.com/projects/esp-idf/en/latest/security/secure-boot.html before enabling. + +choice SECURE_BOOTLOADER_MODE + bool "Secure bootloader mode" + depends on SECURE_BOOT_ENABLED + default SECURE_BOOTLOADER_ONE_TIME_FLASH + +config SECURE_BOOTLOADER_ONE_TIME_FLASH + bool "One-time flash" + help + On first boot, the bootloader will generate a key which is not readable externally or by software. A digest is generated from the bootloader image itself. This digest will be verified on each subsequent boot. + + Enabling this option means that the bootloader cannot be changed after the first time it is booted. + +config SECURE_BOOTLOADER_REFLASHABLE + bool "Reflashable" + help + Generate a reusable secure bootloader key, derived (via SHA-256) from the secure boot signing key. + + This allows the secure bootloader to be re-flashed by anyone with access to the secure boot signing key. + + This option is less secure than one-time flash, because a leak of the digest key from one device allows reflashing of any device that uses it. + +endchoice + +config SECURE_BOOT_BUILD_SIGNED_BINARIES + bool "Sign binaries during build" + depends on SECURE_SIGNED_APPS + default y + help + Once secure boot or signed app requirement is enabled, app images are required to be signed. + + If enabled (default), these binary files are signed as part of the build process. The file named in "Secure boot private signing key" will be used to sign the image. + + If disabled, unsigned app/partition data will be built. They must be signed manually using espsecure.py (for example, on a remote signing server.) + +config SECURE_BOOT_SIGNING_KEY + string "Secure boot private signing key" + depends on SECURE_BOOT_BUILD_SIGNED_BINARIES + default secure_boot_signing_key.pem + help + Path to the key file used to sign app images. + + Key file is an ECDSA private key (NIST256p curve) in PEM format. + + Path is evaluated relative to the project directory. + + You can generate a new signing key by running the following command: + espsecure.py generate_signing_key secure_boot_signing_key.pem + + See docs/security/secure-boot.rst for details. + +config SECURE_BOOT_VERIFICATION_KEY + string "Secure boot public signature verification key" + depends on SECURE_SIGNED_APPS && !SECURE_BOOT_BUILD_SIGNED_BINARIES + default signature_verification_key.bin + help + Path to a public key file used to verify signed images. This key is compiled into the bootloader and/or app, + to verify app images. + + Key file is in raw binary format, and can be extracted from a + PEM formatted private key using the espsecure.py + extract_public_key command. + + Refer to https://docs.espressif.com/projects/esp-idf/en/latest/security/secure-boot.html before enabling. + +choice SECURE_BOOTLOADER_KEY_ENCODING + bool "Hardware Key Encoding" + depends on SECURE_BOOTLOADER_REFLASHABLE + default SECURE_BOOTLOADER_NO_ENCODING + help + + In reflashable secure bootloader mode, a hardware key is derived from the signing key (with SHA-256) and can be written to efuse + with espefuse.py. + + Normally this is a 256-bit key, but if 3/4 Coding Scheme is used on the device then the efuse key is truncated to 192 bits. + + This configuration item doesn't change any firmware code, it only changes the size of key binary which is generated at build time. + +config SECURE_BOOTLOADER_KEY_ENCODING_256BIT + bool "No encoding (256 bit key)" + +config SECURE_BOOTLOADER_KEY_ENCODING_192BIT + bool "3/4 encoding (192 bit key)" + +endchoice + +config SECURE_BOOT_INSECURE + bool "Allow potentially insecure options" + depends on SECURE_BOOT_ENABLED + default N + help + You can disable some of the default protections offered by secure boot, in order to enable testing or a custom combination of security features. + + Only enable these options if you are very sure. + + Refer to https://docs.espressif.com/projects/esp-idf/en/latest/security/secure-boot.html before enabling. + +config FLASH_ENCRYPTION_ENABLED + bool "Enable flash encryption on boot (READ DOCS FIRST)" + default N + help + If this option is set, flash contents will be encrypted by the bootloader on first boot. + + Note: After first boot, the system will be permanently encrypted. Re-flashing an encrypted + system is complicated and not always possible. + + Read https://docs.espressif.com/projects/esp-idf/en/latest/security/flash-encryption.html before enabling. + +config FLASH_ENCRYPTION_INSECURE + bool "Allow potentially insecure options" + depends on FLASH_ENCRYPTION_ENABLED + default N + help + You can disable some of the default protections offered by flash encryption, in order to enable testing or a custom combination of security features. + + Only enable these options if you are very sure. + + Refer to docs/security/secure-boot.rst and docs/security/flash-encryption.rst for details. + +menu "Potentially insecure options" + visible if FLASH_ENCRYPTION_INSECURE || SECURE_BOOT_INSECURE + +# NOTE: Options in this menu NEED to have SECURE_BOOT_INSECURE +# and/or FLASH_ENCRYPTION_INSECURE in "depends on", as the menu +# itself doesn't enable/disable its children (if it's not set, +# it's possible for the insecure menu to be disabled but the insecure option +# to remain on which is very bad.) + +config SECURE_BOOT_ALLOW_ROM_BASIC + bool "Leave ROM BASIC Interpreter available on reset" + depends on SECURE_BOOT_INSECURE || FLASH_ENCRYPTION_INSECURE + default N + help + By default, the BASIC ROM Console starts on reset if no valid bootloader is + read from the flash. + + When either flash encryption or secure boot are enabled, the default is to + disable this BASIC fallback mode permanently via efuse. + + If this option is set, this efuse is not burned and the BASIC ROM Console may + remain accessible. Only set this option in testing environments. + +config SECURE_BOOT_ALLOW_JTAG + bool "Allow JTAG Debugging" + depends on SECURE_BOOT_INSECURE || FLASH_ENCRYPTION_INSECURE + default N + help + If not set (default), the bootloader will permanently disable JTAG (across entire chip) on first boot when either secure boot or flash encryption is enabled. + + Setting this option leaves JTAG on for debugging, which negates all protections of flash encryption and some of the protections of secure boot. + + Only set this option in testing environments. + +config SECURE_BOOT_ALLOW_SHORT_APP_PARTITION + bool "Allow app partition length not 64KB aligned" + depends on SECURE_BOOT_INSECURE + help + If not set (default), app partition size must be a multiple of 64KB. App images are padded to 64KB length, and the bootloader checks any trailing bytes after the signature (before the next 64KB boundary) have not been written. This is because flash cache maps entire 64KB pages into the address space. This prevents an attacker from appending unverified data after the app image in the flash, causing it to be mapped into the address space. + + Setting this option allows the app partition length to be unaligned, and disables padding of the app image to this length. It is generally not recommended to set this option, unless you have a legacy partitioning scheme which doesn't support 64KB aligned partition lengths. + +config FLASH_ENCRYPTION_UART_BOOTLOADER_ALLOW_ENCRYPT + bool "Leave UART bootloader encryption enabled" + depends on FLASH_ENCRYPTION_INSECURE + default N + help + If not set (default), the bootloader will permanently disable UART bootloader encryption access on first boot. If set, the UART bootloader will still be able to access hardware encryption. + + It is recommended to only set this option in testing environments. + +config FLASH_ENCRYPTION_UART_BOOTLOADER_ALLOW_DECRYPT + bool "Leave UART bootloader decryption enabled" + depends on FLASH_ENCRYPTION_INSECURE + default N + help + If not set (default), the bootloader will permanently disable UART bootloader decryption access on first boot. If set, the UART bootloader will still be able to access hardware decryption. + + Only set this option in testing environments. Setting this option allows complete bypass of flash encryption. + +config FLASH_ENCRYPTION_UART_BOOTLOADER_ALLOW_CACHE + bool "Leave UART bootloader flash cache enabled" + depends on FLASH_ENCRYPTION_INSECURE + default N + help + If not set (default), the bootloader will permanently disable UART bootloader flash cache access on first boot. If set, the UART bootloader will still be able to access the flash cache. + + Only set this option in testing environments. + +config SECURE_BOOT_TEST_MODE + bool "Secure boot test mode: don't permanently set any efuses" + depends on SECURE_BOOT_INSECURE + default N + help + If this option is set, all permanent secure boot changes (via Efuse) are disabled. + + Log output will state changes which would be applied, but they will not be. + + This option is for testing purposes only - it completely disables secure boot protection. + + +endmenu # Potentially Insecure +endmenu # Security features diff --git a/MCUME_esp32/espboot/components/bootloader/Makefile.projbuild b/MCUME_esp32/espboot/components/bootloader/Makefile.projbuild new file mode 100644 index 0000000..1bbbf55 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/Makefile.projbuild @@ -0,0 +1,133 @@ +# Bootloader component (top-level project parts) +# +# The bootloader is not a real component that gets linked into the project. +# Instead it is an entire standalone project (in subproject/) that gets +# built in the upper project's build directory. This Makefile.projbuild provides +# the glue to build the bootloader project from the original project. It +# basically runs Make in the subproject/ directory but it needs to +# zero some variables the ESP-IDF project.mk makefile exports first, to not +# let them interfere. +# +BOOTLOADER_COMPONENT_PATH := $(COMPONENT_PATH) +BOOTLOADER_BUILD_DIR=$(abspath $(BUILD_DIR_BASE)/bootloader) +BOOTLOADER_BIN=$(BOOTLOADER_BUILD_DIR)/bootloader.bin + +# signing key path is resolved relative to the project directory +CONFIG_SECURE_BOOT_SIGNING_KEY ?= +SECURE_BOOT_SIGNING_KEY=$(abspath $(call dequote,$(CONFIG_SECURE_BOOT_SIGNING_KEY))) +export SECURE_BOOT_SIGNING_KEY # used by bootloader_support component + +# Has a matching value in bootloader_support esp_flash_partitions.h +BOOTLOADER_OFFSET := 0x1000 + +# Custom recursive make for bootloader sub-project +# +# NB: Some variables are cleared in the environment, not +# overriden, because they need to be re-defined in the child +# project. +BOOTLOADER_MAKE= +\ + PROJECT_PATH= \ + COMPONENT_DIRS= \ + $(MAKE) -C $(BOOTLOADER_COMPONENT_PATH)/subproject \ + V=$(V) \ + BUILD_DIR_BASE=$(BOOTLOADER_BUILD_DIR) \ + TEST_COMPONENTS= \ + TESTS_ALL= \ + EXCLUDE_COMPONENTS= + +.PHONY: bootloader-clean bootloader-flash bootloader-list-components bootloader $(BOOTLOADER_BIN) + +$(BOOTLOADER_BIN): $(SDKCONFIG_MAKEFILE) + $(BOOTLOADER_MAKE) $@ + +clean: bootloader-clean + +bootloader-list-components: + $(BOOTLOADER_MAKE) list-components + +ifndef CONFIG_SECURE_BOOT_ENABLED +# If secure boot disabled, bootloader flashing is integrated +# with 'make flash' and no warnings are printed. + +bootloader: $(BOOTLOADER_BIN) | check_python_dependencies + @echo $(SEPARATOR) + @echo "Bootloader built. Default flash command is:" + @echo "$(ESPTOOLPY_WRITE_FLASH) $(BOOTLOADER_OFFSET) $^" + +ESPTOOL_ALL_FLASH_ARGS += $(BOOTLOADER_OFFSET) $(BOOTLOADER_BIN) + +bootloader-flash: $(BOOTLOADER_BIN) $(call prereq_if_explicit,erase_flash) | check_python_dependencies + $(ESPTOOLPY_WRITE_FLASH) 0x1000 $^ + +else ifdef CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH + +# One time flashing requires user to run esptool.py command themselves, +# and warning is printed about inability to reflash. +# +# The flashing command is deliberately printed without an auto-reset +# step, so the device doesn't immediately reset to flash itself. + +bootloader: $(BOOTLOADER_BIN) | check_python_dependencies + @echo $(SEPARATOR) + @echo "Bootloader built. One-time flash command is:" + @echo "$(subst hard_reset,no_reset,$(ESPTOOLPY_WRITE_FLASH)) $(BOOTLOADER_OFFSET) $(BOOTLOADER_BIN)" + @echo $(SEPARATOR) + @echo "* IMPORTANT: After first boot, BOOTLOADER CANNOT BE RE-FLASHED on same device" + +else ifdef CONFIG_SECURE_BOOTLOADER_REFLASHABLE +# Reflashable secure bootloader +# generates a digest binary (bootloader + digest) + +ifdef CONFIG_SECURE_BOOTLOADER_KEY_ENCODING_192BIT +KEY_DIGEST_LEN=192 +else +KEY_DIGEST_LEN=256 +endif + +BOOTLOADER_DIGEST_BIN := $(BOOTLOADER_BUILD_DIR)/bootloader-reflash-digest.bin +SECURE_BOOTLOADER_KEY := $(BOOTLOADER_BUILD_DIR)/secure-bootloader-key-$(KEY_DIGEST_LEN).bin + +ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES +$(SECURE_BOOTLOADER_KEY): $(SECURE_BOOT_SIGNING_KEY) | check_python_dependencies + $(ESPSECUREPY) digest_private_key --keylen $(KEY_DIGEST_LEN) -k $< $@ +else +$(SECURE_BOOTLOADER_KEY): + @echo "No pre-generated key for a reflashable secure bootloader is available, due to signing configuration." + @echo "To generate one, you can use this command:" + @echo "espsecure.py generate_flash_encryption_key $@" + @echo "then re-run make." + exit 1 +endif + +bootloader: $(BOOTLOADER_DIGEST_BIN) + @echo $(SEPARATOR) + @echo "Bootloader built and secure digest generated. First time flash command is:" + @echo "$(ESPEFUSEPY) burn_key secure_boot $(SECURE_BOOTLOADER_KEY)" + @echo "$(ESPTOOLPY_WRITE_FLASH) $(BOOTLOADER_OFFSET) $(BOOTLOADER_BIN)" + @echo $(SEPARATOR) + @echo "To reflash the bootloader after initial flash:" + @echo "$(ESPTOOLPY_WRITE_FLASH) 0x0 $(BOOTLOADER_DIGEST_BIN)" + @echo $(SEPARATOR) + @echo "* After first boot, only re-flashes of this kind (with same key) will be accepted." + @echo "* Not recommended to re-use the same secure boot keyfile on multiple production devices." + +$(BOOTLOADER_DIGEST_BIN): $(BOOTLOADER_BIN) $(SECURE_BOOTLOADER_KEY) | check_python_dependencies + @echo "DIGEST $(notdir $@)" + $(ESPSECUREPY) digest_secure_bootloader -k $(SECURE_BOOTLOADER_KEY) -o $@ $< + +else # CONFIG_SECURE_BOOT_ENABLED && !CONFIG_SECURE_BOOTLOADER_REFLASHABLE && !CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH +bootloader: + @echo "Invalid bootloader target: bad sdkconfig?" + @exit 1 +endif + +ifndef CONFIG_SECURE_BOOT_ENABLED +# don't build bootloader by default if secure boot is enabled +all_binaries: $(BOOTLOADER_BIN) +endif + +bootloader-clean: $(SDKCONFIG_MAKEFILE) + $(BOOTLOADER_MAKE) app-clean +ifdef CONFIG_SECURE_BOOTLOADER_REFLASHABLE + rm -f $(SECURE_BOOTLOADER_KEY) $(BOOTLOADER_DIGEST_BIN) +endif diff --git a/MCUME_esp32/espboot/components/bootloader/component.mk b/MCUME_esp32/espboot/components/bootloader/component.mk new file mode 100644 index 0000000..b3e40ee --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/component.mk @@ -0,0 +1,7 @@ +# bootloader component is special, as bootloader is also a project. +# +# This top-level component is only configuration files for the IDF project. +# +# See Makefile.projbuild for the targets which actually build the bootloader. +COMPONENT_CONFIG_ONLY := 1 + diff --git a/MCUME_esp32/espboot/components/bootloader/project_include.cmake b/MCUME_esp32/espboot/components/bootloader/project_include.cmake new file mode 100644 index 0000000..e08c18f --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/project_include.cmake @@ -0,0 +1,72 @@ +# This is for tracking the top level project path +if(BOOTLOADER_BUILD) + set(main_project_path "${CMAKE_BINARY_DIR}/../..") +else() + set(main_project_path "${IDF_PROJECT_PATH}") +endif() + +get_filename_component(secure_boot_signing_key + "${CONFIG_SECURE_BOOT_SIGNING_KEY}" + ABSOLUTE BASE_DIR "${main_project_path}") +if(NOT EXISTS ${secure_boot_signing_key}) + # If the signing key is not found, create a phony gen_secure_boot_signing_key target that + # fails the build. fail_at_build_time also touches CMakeCache.txt to cause a cmake run next time + # (to pick up a new signing key if one exists, etc.) + fail_at_build_time(gen_secure_boot_signing_key + "Secure Boot Signing Key ${CONFIG_SECURE_BOOT_SIGNING_KEY} does not exist. Generate using:" + "\tespsecure.py generate_signing_key ${CONFIG_SECURE_BOOT_SIGNING_KEY}") +else() + add_custom_target(gen_secure_boot_signing_key) +endif() + +if(BOOTLOADER_BUILD OR NOT IDF_BUILD_ARTIFACTS) + return() # don't keep recursing, generate on project builds +endif() + +# Glue to build the bootloader subproject binary as an external +# cmake project under this one +# +# +set(bootloader_build_dir "${IDF_BUILD_ARTIFACTS_DIR}/bootloader") +set(bootloader_binary_files + "${bootloader_build_dir}/bootloader.elf" + "${bootloader_build_dir}/bootloader.bin" + "${bootloader_build_dir}/bootloader.map" + ) + +# These additional files may get generated +if(CONFIG_SECURE_BOOTLOADER_REFLASHABLE) + set(bootloader_binary_files + ${bootloader_binary_files} + "${bootloader_build_dir}/bootloader-reflash-digest.bin" + "${bootloader_build_dir}/secure-bootloader-key-192.bin" + "${bootloader_build_dir}/secure-bootloader-key-256.bin" + ) +endif() + +if((NOT CONFIG_SECURE_BOOT_ENABLED) OR + CONFIG_SECURE_BOOTLOADER_REFLASHABLE OR + CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH) + externalproject_add(bootloader + # TODO: support overriding the bootloader in COMPONENT_PATHS + SOURCE_DIR "${IDF_PATH}/components/bootloader/subproject" + BINARY_DIR "${bootloader_build_dir}" + CMAKE_ARGS -DSDKCONFIG=${SDKCONFIG} -DIDF_PATH=${IDF_PATH} + -DSECURE_BOOT_SIGNING_KEY=${secure_boot_signing_key} + INSTALL_COMMAND "" + BUILD_ALWAYS 1 # no easy way around this... + BUILD_BYPRODUCTS ${bootloader_binary_files} + DEPENDS gen_secure_boot_signing_key + ) +else() + fail_at_build_time(bootloader "Invalid bootloader target: bad sdkconfig?") +endif() + +# this is a hack due to an (annoying) shortcoming in cmake, it can't +# extend the 'clean' target to the external project +# see thread: https://cmake.org/pipermail/cmake/2016-December/064660.html +# +# So for now we just have the top-level build remove the final build products... +set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY + ADDITIONAL_MAKE_CLEAN_FILES + ${bootloader_binary_files}) diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/.DS_Store b/MCUME_esp32/espboot/components/bootloader/subproject/.DS_Store new file mode 100644 index 0000000..0787fb7 Binary files /dev/null and b/MCUME_esp32/espboot/components/bootloader/subproject/.DS_Store differ diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/.gitignore b/MCUME_esp32/espboot/components/bootloader/subproject/.gitignore new file mode 100644 index 0000000..278a862 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/.gitignore @@ -0,0 +1,2 @@ +build +sdkconfig diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/CMakeLists.txt b/MCUME_esp32/espboot/components/bootloader/subproject/CMakeLists.txt new file mode 100644 index 0000000..da45604 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/CMakeLists.txt @@ -0,0 +1,137 @@ +cmake_minimum_required(VERSION 3.5) + +if(NOT SDKCONFIG) + message(FATAL_ERROR "Bootloader subproject expects the SDKCONFIG variable to be passed " + "in by the parent build process.") +endif() + +if(NOT IDF_PATH) + message(FATAL_ERROR "Bootloader subproject expects the IDF_PATH variable to be passed " + "in by the parent build process.") +endif() + +set(COMPONENTS bootloader esptool_py esp32 partition_table soc bootloader_support log spi_flash micro-ecc soc main) +set(BOOTLOADER_BUILD 1) +add_definitions(-DBOOTLOADER_BUILD=1) + +set(COMPONENT_REQUIRES_COMMON log esp32 soc) + +include("${IDF_PATH}/tools/cmake/project.cmake") +project(bootloader) + +target_linker_script(bootloader.elf + "main/esp32.bootloader.ld" + "main/esp32.bootloader.rom.ld" +) + +# as cmake won't attach linker args to a header-only library, attach +# linker args directly to the bootloader.elf +set(ESP32_BOOTLOADER_LINKER_SCRIPTS + "../../esp32/ld/esp32.rom.ld" + "../../esp32/ld/esp32.rom.spiram_incompatible_fns.ld" + "../../esp32/ld/esp32.peripherals.ld") + +target_linker_script(bootloader.elf ${ESP32_BOOTLOADER_LINKER_SCRIPTS}) + +target_link_libraries(bootloader.elf gcc) + +set(secure_boot_signing_key ${SECURE_BOOT_SIGNING_KEY}) + +string(REPLACE ";" " " espsecurepy "${ESPSECUREPY}") +string(REPLACE ";" " " espefusepy "${ESPEFUSEPY}") +set(esptoolpy_write_flash "${ESPTOOLPY_WRITE_FLASH_STR}") + +if(CONFIG_SECURE_BOOTLOADER_REFLASHABLE) + if(CONFIG_SECURE_BOOTLOADER_KEY_ENCODING_192BIT) + set(key_digest_len 192) + else() + set(key_digest_len 256) + endif() + + get_filename_component(bootloader_digest_bin + "bootloader-reflash-digest.bin" + ABSOLUTE BASE_DIR "${CMAKE_BINARY_DIR}") + + get_filename_component(secure_bootloader_key + "secure-bootloader-key-${key_digest_len}.bin" + ABSOLUTE BASE_DIR "${CMAKE_BINARY_DIR}") + + add_custom_command(OUTPUT "${secure_bootloader_key}" + COMMAND ${ESPSECUREPY} digest_private_key + --keylen "${key_digest_len}" + --keyfile "${secure_boot_signing_key}" + "${secure_bootloader_key}" + VERBATIM) + + if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES) + add_custom_target(gen_secure_bootloader_key ALL DEPENDS "${secure_bootloader_key}") + else() + if(NOT EXISTS "${secure_bootloader_key}") + message(FATAL_ERROR + "No pre-generated key for a reflashable secure bootloader is available, " + "due to signing configuration." + "\nTo generate one, you can use this command:" + "\n\t${espsecurepy} generate_flash_encryption_key ${secure_bootloader_key}" + "\nIf a signing key is present, then instead use:" + "\n\t${ESPSECUREPY} digest_private_key " + "--keylen (192/256) --keyfile KEYFILE " + "${secure_bootloader_key}") + endif() + add_custom_target(gen_secure_bootloader_key) + endif() + + add_custom_command(OUTPUT "${bootloader_digest_bin}" + COMMAND ${CMAKE_COMMAND} -E echo "DIGEST ${bootloader_digest_bin}" + COMMAND ${ESPSECUREPY} digest_secure_bootloader --keyfile "${secure_bootloader_key}" + -o "${bootloader_digest_bin}" "${CMAKE_BINARY_DIR}/bootloader.bin" + DEPENDS gen_secure_bootloader_key "${CMAKE_BINARY_DIR}/bootloader.bin" + VERBATIM) + + add_custom_target (gen_bootloader_digest_bin ALL DEPENDS "${bootloader_digest_bin}") +endif() + +if(CONFIG_SECURE_BOOTLOADER_ONE_TIME_FLASH) + add_custom_command(TARGET bootloader POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo + "==============================================================================" + COMMAND ${CMAKE_COMMAND} -E echo + "Bootloader built. Secure boot enabled, so bootloader not flashed automatically." + COMMAND ${CMAKE_COMMAND} -E echo + "One-time flash command is:" + COMMAND ${CMAKE_COMMAND} -E echo + "\t${esptoolpy_write_flash} ${BOOTLOADER_OFFSET} ${CMAKE_BINARY_DIR}/bootloader.bin" + COMMAND ${CMAKE_COMMAND} -E echo + "* IMPORTANT: After first boot, BOOTLOADER CANNOT BE RE-FLASHED on same device" + VERBATIM) + +elseif(CONFIG_SECURE_BOOTLOADER_REFLASHABLE) + add_custom_command(TARGET bootloader POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo + "==============================================================================" + COMMAND ${CMAKE_COMMAND} -E echo + "Bootloader built and secure digest generated." + COMMAND ${CMAKE_COMMAND} -E echo + "Secure boot enabled, so bootloader not flashed automatically." + COMMAND ${CMAKE_COMMAND} -E echo + "Burn secure boot key to efuse using:" + COMMAND ${CMAKE_COMMAND} -E echo + "\t${espefusepy} burn_key secure_boot ${secure_bootloader_key}" + COMMAND ${CMAKE_COMMAND} -E echo + "First time flash command is:" + COMMAND ${CMAKE_COMMAND} -E echo + "\t${esptoolpy_write_flash} ${BOOTLOADER_OFFSET} ${CMAKE_BINARY_DIR}/bootloader.bin" + COMMAND ${CMAKE_COMMAND} -E echo + "==============================================================================" + COMMAND ${CMAKE_COMMAND} -E echo + "To reflash the bootloader after initial flash:" + COMMAND ${CMAKE_COMMAND} -E echo + "\t${esptoolpy_write_flash} 0x0 ${bootloader_digest_bin}" + COMMAND ${CMAKE_COMMAND} -E echo + "==============================================================================" + COMMAND ${CMAKE_COMMAND} -E echo + "* After first boot, only re-flashes of this kind (with same key) will be accepted." + COMMAND ${CMAKE_COMMAND} -E echo + "* Not recommended to re-use the same secure boot keyfile on multiple production devices." + DEPENDS gen_secure_bootloader_key gen_bootloader_digest_bin + VERBATIM) +endif() diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/Makefile b/MCUME_esp32/espboot/components/bootloader/subproject/Makefile new file mode 100644 index 0000000..e01dc3c --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/Makefile @@ -0,0 +1,32 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# +ifeq ("$(MAKELEVEL)","0") +$(error Bootloader makefile expects to be run as part of 'make bootloader' from a top-level project.) +endif + +PROJECT_NAME := bootloader + +COMPONENTS := esptool_py bootloader_support log spi_flash micro-ecc soc main + +# Clear C and CXX from top level project +CFLAGS = +CXXFLAGS = + +#We cannot include the esp32 component directly but we need its includes. +CFLAGS += -I $(IDF_PATH)/components/esp32/include + +# The bootloader pseudo-component is also included in this build, for its Kconfig.projbuild to be included. +# +# IS_BOOTLOADER_BUILD tells the component Makefile.projbuild to be a no-op +IS_BOOTLOADER_BUILD := 1 +export IS_BOOTLOADER_BUILD + +# BOOTLOADER_BUILD macro is the same, for source file changes +CFLAGS += -D BOOTLOADER_BUILD=1 + +# include the top-level "project" include directory, for sdkconfig.h +CFLAGS += -I$(BUILD_DIR_BASE)/../include + +include $(IDF_PATH)/make/project.mk diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/.DS_Store b/MCUME_esp32/espboot/components/bootloader/subproject/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espboot/components/bootloader/subproject/main/.DS_Store differ diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/CMakeLists.txt b/MCUME_esp32/espboot/components/bootloader/subproject/main/CMakeLists.txt new file mode 100644 index 0000000..d090e97 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/main/CMakeLists.txt @@ -0,0 +1,4 @@ +set(COMPONENT_SRCS "bootloader_start.c") +set(COMPONENT_ADD_INCLUDEDIRS "") +set(COMPONENT_REQUIRES "bootloader bootloader_support") +register_component() diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/Makefile.projbuild b/MCUME_esp32/espboot/components/bootloader/subproject/main/Makefile.projbuild new file mode 100644 index 0000000..c368c68 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/main/Makefile.projbuild @@ -0,0 +1,4 @@ +# Submodules normally added in component.mk, but fully qualified +# paths can be added at this level (we need binary librtc to be +# available to link bootloader). +COMPONENT_SUBMODULES += $(IDF_PATH)/components/esp32/lib diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/bootloader_start.c b/MCUME_esp32/espboot/components/bootloader/subproject/main/bootloader_start.c new file mode 100644 index 0000000..041ce56 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/main/bootloader_start.c @@ -0,0 +1,106 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#include +#include +#include + +#include "esp_log.h" +#include "rom/gpio.h" +#include "rom/spi_flash.h" +#include "bootloader_config.h" +#include "bootloader_init.h" +#include "bootloader_utility.h" +#include "bootloader_common.h" +#include "sdkconfig.h" +#include "esp_image_format.h" + +#include + +static const char* TAG = "boot"; + +#define RTC_SLOW_MEM ((uint32_t*) 0x50000000) /*!< RTC slow memory, 8k size */ + +#define ULP_DATA_OFFSET 36 + +_Static_assert(ULP_DATA_OFFSET < CONFIG_ULP_COPROC_RESERVE_MEM/4 - 6, + "ULP_DATA_OFFSET is set too high, or CONFIG_ULP_COPROC_RESERVE_MEM is not sufficient"); + +static inline uint16_t ulp_data_read(size_t offset) +{ + return RTC_SLOW_MEM[ULP_DATA_OFFSET + offset] & 0xffff; +} +static inline void ulp_data_write(size_t offset, uint16_t value) +{ + RTC_SLOW_MEM[ULP_DATA_OFFSET + offset] = value; +} + +static int select_partition_number (bootloader_state_t *bs); +static int selected_boot_partition(const bootloader_state_t *bs); +/* + * We arrive here after the ROM bootloader finished loading this second stage bootloader from flash. + * The hardware is mostly uninitialized, flash cache is down and the app CPU is in reset. + * We do have a stack, so we can do the initialization in C. + */ +void __attribute__((noreturn)) call_start_cpu0() +{ + // 1. Hardware initialization + if (bootloader_init() != ESP_OK) { + bootloader_reset(); + } + + ESP_LOGI(TAG, "JMH bootloader"); + + // 2. Select the number of boot partition + bootloader_state_t bs = { 0 }; + int boot_index = select_partition_number(&bs); + if (boot_index == INVALID_INDEX) { + bootloader_reset(); + } + + // 3. Load the app image for booting + bootloader_utility_load_boot_image(&bs, boot_index); +} + +// Select the number of boot partition +static int select_partition_number (bootloader_state_t *bs) +{ + // 1. Load partition table + if (!bootloader_utility_load_partition_table(bs)) { + ESP_LOGE(TAG, "load partition table error!"); + return INVALID_INDEX; + } + + // 2. Select the number of boot partition + return selected_boot_partition(bs); +} + +/* + * Selects a boot partition. + * The conditions for switching to another firmware are checked. + */ +static int selected_boot_partition(const bootloader_state_t *bs) +{ + int boot_index = bootloader_utility_get_selected_boot_partition(bs); + if (boot_index == INVALID_INDEX) { + return boot_index; // Unrecoverable failure (not due to corrupt ota data or bad partition contents) + } else { + if (rtc_get_reset_reason(0) == 12) { + boot_index = ulp_data_read(0); + } + ESP_LOGI(TAG, "JMH reset reason is %d", rtc_get_reset_reason(0)); + ESP_LOGI(TAG, "JMH ULP mem is %d", ulp_data_read(0)); + ESP_LOGI(TAG, "JMH partition index is %d", boot_index); + } + return boot_index; +} diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/component.mk b/MCUME_esp32/espboot/components/bootloader/subproject/main/component.mk new file mode 100644 index 0000000..a54fe30 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/main/component.mk @@ -0,0 +1,21 @@ +# +# Main bootloader Makefile. +# +# This is basically the same as a component makefile, but in the case of the bootloader +# we pull in bootloader-specific linker arguments. +# + +LINKER_SCRIPTS := \ + esp32.bootloader.ld \ + $(IDF_PATH)/components/esp32/ld/esp32.rom.ld \ + $(IDF_PATH)/components/esp32/ld/esp32.rom.spiram_incompatible_fns.ld \ + $(IDF_PATH)/components/esp32/ld/esp32.peripherals.ld \ + esp32.bootloader.rom.ld + +ifndef CONFIG_SPI_FLASH_ROM_DRIVER_PATCH +LINKER_SCRIPTS += $(IDF_PATH)/components/esp32/ld/esp32.rom.spiflash.ld +endif + +COMPONENT_ADD_LDFLAGS += -L $(COMPONENT_PATH) $(addprefix -T ,$(LINKER_SCRIPTS)) + +COMPONENT_ADD_LINKER_DEPS := $(LINKER_SCRIPTS) diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/esp32.bootloader.ld b/MCUME_esp32/espboot/components/bootloader/subproject/main/esp32.bootloader.ld new file mode 100644 index 0000000..348026f --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/main/esp32.bootloader.ld @@ -0,0 +1,168 @@ +/* +Linker file used to link the bootloader. +*/ + + +/* Simplified memory map for the bootloader + + The main purpose is to make sure the bootloader can load into main memory + without overwriting itself. +*/ + +MEMORY +{ + /* I/O */ + dport0_seg (RW) : org = 0x3FF00000, len = 0x10 + /* IRAM POOL1, used for APP CPU cache. Bootloader runs from here during the final stage of loading the app because APP CPU is still held in reset, the main app enables APP CPU cache */ + iram_loader_seg (RWX) : org = 0x40078000, len = 0x8000 /* 32KB, APP CPU cache */ + /* 63kB, IRAM. We skip the first 1k to prevent the entry point being + placed into the same range as exception vectors in the app. + This leads to idf_monitor decoding ROM bootloader "entry 0x40080xxx" + message as one of the exception vectors, which looks scary to users. + */ + iram_seg (RWX) : org = 0x40080400, len = 0xfc00 + /* 64k at the end of DRAM, after ROM bootloader stack */ + dram_seg (RW) : org = 0x3FFF0000, len = 0x10000 +} + +/* Default entry point: */ +ENTRY(call_start_cpu0); + + +SECTIONS +{ + + .iram_loader.text : + { + . = ALIGN (16); + _loader_text_start = ABSOLUTE(.); + *(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) + *(.iram1 .iram1.*) /* catch stray IRAM_ATTR */ + *liblog.a:(.literal .text .literal.* .text.*) + *libgcc.a:(.literal .text .literal.* .text.*) + *libbootloader_support.a:bootloader_common.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:bootloader_flash.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:bootloader_random.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:bootloader_utility.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:bootloader_sha.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:efuse.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:esp_image_format.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:flash_encrypt.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:flash_partitions.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:secure_boot.*(.literal .text .literal.* .text.*) + *libbootloader_support.a:secure_boot_signatures.*(.literal .text .literal.* .text.*) + *libmicro-ecc.a:*.*(.literal .text .literal.* .text.*) + *libspi_flash.a:*.*(.literal .text .literal.* .text.*) + *libsoc.a:rtc_wdt.*(.literal .text .literal.* .text.*) + *(.fini.literal) + *(.fini) + *(.gnu.version) + _loader_text_end = ABSOLUTE(.); + } > iram_loader_seg + + .iram.text : + { + . = ALIGN (16); + *(.entry.text) + *(.init.literal) + *(.init) + } > iram_seg + + + /* Shared RAM */ + .dram0.bss (NOLOAD) : + { + . = ALIGN (8); + _bss_start = ABSOLUTE(.); + *(.dynsbss) + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + *(.dynbss) + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN (8); + _bss_end = ABSOLUTE(.); + } >dram_seg + + .dram0.data : + { + _data_start = ABSOLUTE(.); + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + *(.data1) + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.jcr) + _data_end = ABSOLUTE(.); + } >dram_seg + + .dram0.rodata : + { + _rodata_start = ABSOLUTE(.); + *(.rodata) + *(.rodata.*) + *(.gnu.linkonce.r.*) + *(.rodata1) + __XT_EXCEPTION_TABLE_ = ABSOLUTE(.); + *(.xt_except_table) + *(.gcc_except_table) + *(.gnu.linkonce.e.*) + *(.gnu.version_r) + *(.eh_frame) + . = (. + 3) & ~ 3; + /* C++ constructor and destructor tables, properly ordered: */ + __init_array_start = ABSOLUTE(.); + KEEP (*crtbegin.*(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.*) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __init_array_end = ABSOLUTE(.); + KEEP (*crtbegin.*(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.*) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + /* C++ exception handlers table: */ + __XT_EXCEPTION_DESCS_ = ABSOLUTE(.); + *(.xt_except_desc) + *(.gnu.linkonce.h.*) + __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.); + *(.xt_except_desc_end) + *(.dynamic) + *(.gnu.version_d) + _rodata_end = ABSOLUTE(.); + /* Literals are also RO data. */ + _lit4_start = ABSOLUTE(.); + *(*.lit4) + *(.lit4.*) + *(.gnu.linkonce.lit4.*) + _lit4_end = ABSOLUTE(.); + . = ALIGN(4); + _heap_start = ABSOLUTE(.); + } >dram_seg + + .iram.text : + { + _stext = .; + _text_start = ABSOLUTE(.); + *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) + *(.iram .iram.*) /* catch stray IRAM_ATTR */ + *(.fini.literal) + *(.fini) + *(.gnu.version) + _text_end = ABSOLUTE(.); + _etext = .; + } > iram_seg + +} diff --git a/MCUME_esp32/espboot/components/bootloader/subproject/main/esp32.bootloader.rom.ld b/MCUME_esp32/espboot/components/bootloader/subproject/main/esp32.bootloader.rom.ld new file mode 100644 index 0000000..b39af89 --- /dev/null +++ b/MCUME_esp32/espboot/components/bootloader/subproject/main/esp32.bootloader.rom.ld @@ -0,0 +1,4 @@ +PROVIDE ( ets_update_cpu_frequency = 0x40008550 ); /* Updates g_ticks_per_us on the current CPU only; not on the other core */ +PROVIDE ( MD5Final = 0x4005db1c ); +PROVIDE ( MD5Init = 0x4005da7c ); +PROVIDE ( MD5Update = 0x4005da9c ); diff --git a/MCUME_esp32/espboot/flashallapps.sh b/MCUME_esp32/espboot/flashallapps.sh new file mode 100755 index 0000000..3e49585 --- /dev/null +++ b/MCUME_esp32/espboot/flashallapps.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x080000 ../esp81/build/esp81.bin 0x0F0000 ../espspeccy/build/espspeccy.bin 0x160000 ../esp800/build/esp800.bin 0x1D0000 ../esp64/build/esp64.bin 0x240000 ../espvcs/build/espvcs.bin 0x2B0000 ../espo2em/build/espo2em.bin 0x320000 ../espcolem/build/espcolem.bin 0x390000 ../esp5200/build/esp5200.bin diff --git a/MCUME_esp32/espboot/main/.DS_Store b/MCUME_esp32/espboot/main/.DS_Store new file mode 100644 index 0000000..562feea Binary files /dev/null and b/MCUME_esp32/espboot/main/.DS_Store differ diff --git a/MCUME_esp32/espboot/main/AudioPlaySystem.cpp b/MCUME_esp32/espboot/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..9c44cc1 --- /dev/null +++ b/MCUME_esp32/espboot/main/AudioPlaySystem.cpp @@ -0,0 +1,296 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +static const i2s_port_t i2s_num = (i2s_port_t)0; +static QueueHandle_t queue; + +#else + +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; + +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]; + Buffer[i*2]=Buffer[i]; + } + printf("%d\n",n); + i2s_write_bytes(i2s_num, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } + //i2s_write(i2s_num, i2s_write_buff, i2s_wr_len, &bytes_written, portMAX_DELAY); +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espboot/main/AudioPlaySystem.h b/MCUME_esp32/espboot/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espboot/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espboot/main/LibFC14/Config.h b/MCUME_esp32/espboot/main/LibFC14/Config.h new file mode 100644 index 0000000..18f2ba8 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/Config.h @@ -0,0 +1,96 @@ +/* src/Config.h. Generated from Config.h.in by configure. */ +/* src/Config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Define if ``nothrow allocator'' is available. */ +#define FC_HAVE_NOTHROW 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_IOSTREAM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define this to make little/big endian machines access little/big endian + values in memory structures or arrays directly, disregarding alignment */ +//#define OPTIMIZE_ENDIAN_ACCESS 1 + +/* Name of package */ +#define PACKAGE "libfc14audiodecoder" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libfc14audiodecoder" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libfc14audiodecoder 1.0.3" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libfc14audiodecoder" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.0.3" + +/* The size of `char', as computed by sizeof. */ +#define SIZEOF_CHAR 1 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long int', as computed by sizeof. */ +#define SIZEOF_LONG_INT 8 + +/* The size of `short int', as computed by sizeof. */ +#define SIZEOF_SHORT_INT 2 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "1.0.3" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +//#define WORDS_BIGENDIAN 1 +/* # undef WORDS_BIGENDIAN */ diff --git a/MCUME_esp32/espboot/main/LibFC14/Dump.cpp b/MCUME_esp32/espboot/main/LibFC14/Dump.cpp new file mode 100644 index 0000000..e33e668 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/Dump.cpp @@ -0,0 +1,53 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#include "Dump.h" + +#include +#include +using namespace std; + +void dumpLines(smartPtr& fcBuf, udword startOffset, sdword length, int blockLen) { + int num = 0; + while (length > 0) { + cout << "(0x" << hex << setw(2) << setfill('0') << num << "): "; + num++; + + int b = 0; + for (int i=0; i& fcBuf, udword startOffset, sdword length, int blockLen) { + int num = 0; + while (length > 0) { + cout << "(0x" << hex << setw(2) << setfill('0') << num << "):" << endl; + num++; + + int b = 0; + for (int i=0; i& fcBuf, udword startOffset, sdword length, int blockLen); +void dumpLines(smartPtr& fcBuf, udword startOffset, sdword length, int blockLen); + +#endif // DUMP_H diff --git a/MCUME_esp32/espboot/main/LibFC14/FC.cpp b/MCUME_esp32/espboot/main/LibFC14/FC.cpp new file mode 100644 index 0000000..183d913 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/FC.cpp @@ -0,0 +1,1165 @@ +// Future Composer audio decoder -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "FC.h" + +#include +#ifdef FC_HAVE_NOTHROW +#include +#endif + +//#define DEBUG 1 +//#define DEBUG2 1 +//#define DEBUG3 1 +#if defined(DEBUG) || defined(DEBUG2) || defined(DEBUG3) +#include +#include +using namespace std; +#include "Dump.h" +#endif + +FC::FC() { + input = 0; + inputLen = 0; + _admin.initialized = false; + + // Set up some dummy voices to decouple the decoder from the mixer. + for (int v=0; voff(); + } + // (AMIGA) Power-LED on = low-pass filter on. + // May be simulated by external audio post-processing. +} + + +void FC::setMixer(PaulaMixer* mixer) { + // Create needed number of voices and replace the dummies. + mixer->init(channels); + for (int v=0; vgetVoice(v); + _CHdata[v].ch->off(); + killChannel(_CHdata[v]); + } +} + + +bool FC::isOurData(void *data, unsigned long int length) { + if ( length<5 ) { + return false; + } + ubyte *d = static_cast(data); + // Check for "SMOD" ID (Future Composer 1.0 to 1.3). + isSMOD = (d[0]==0x53 && d[1]==0x4D && d[2]==0x4F && d[3]==0x44 && + d[4]==0x00); + // Check for "FC14" ID (Future Composer 1.4). + isFC14 = (d[0]==0x46 && d[1]==0x43 && d[2]==0x31 && d[3]==0x34 && + d[4]==0x00); + // (NOTE) A very few hacked "SMOD" modules exist which contain an ID + // string "FC13". Although this could be supported easily, it should + // NOT. Format detection must be able to rely on the ID field. As no + // version of Future Composer has ever created a "FC13" ID, such hacked + // modules are likely to be incompatible in other parts due to incorrect + // conversion, e.g. effect parameters. It is like creating non-standard + // module files whose only purpose is to confuse accurate music players. + return (isSMOD || isFC14); +} + + +bool FC::init(void *data, udword length, int startStep, int endStep) { + if ( !isOurData(data,length) ) { + formatName = UNKNOWN_FORMAT_NAME; + return false; + } + if (isSMOD) + formatName = SMOD_FORMAT_NAME; + else if (isFC14) + formatName = FC14_FORMAT_NAME; + + udword copyLen = length+sizeof(silenceData); + if (copyLen > inputLen) { + delete[] input; + inputLen = 0; +#ifdef FC_HAVE_NOTHROW + if ( (input = new(std::nothrow) ubyte[copyLen]) == 0 ) { +#else + if ( (input = new ubyte[copyLen]) == 0 ) { +#endif + return false; + } + } + memcpy(input,data,copyLen); + inputLen = copyLen; + + // Set up smart pointers for signed and unsigned input buffer access. + // Ought to be read-only (const), but this implementation appends + // a few values to the end of the buffer (see further below). + fcBufS.setBuffer((sbyte*)input,inputLen); + fcBuf.setBuffer((ubyte*)input,inputLen); + + // (NOTE) This next bit is just for convenience. + // + // It is the only place where the module buffer is written to. + // + // Copy ``silent'' modulation sequence to end of FC module buffer so it + // is in the address space of the FC module and thus allows using the + // same smart pointers as throughout the rest of the code. + _admin.offsets.silence = inputLen-sizeof(silenceData); + for (ubyte i=0; i get speed at first step). + _admin.RScount = 4; + // (NOTE) Some FC implementations instead count from 0 to 4. + + // At +4 is length of track table. + udword trackTabLen = readEndian(fcBuf[4],fcBuf[5],fcBuf[6],fcBuf[7]); +#if defined(DEBUG) + cout << "trackTabLen = " << hex << setw(8) << setfill('0') << trackTabLen << endl; +#endif + + off(); + for (ubyte c=0; cpaula.period = _CHdata[c].period; + _CHdata[c].ch->paula.volume = _CHdata[c].volume; + + if (_CHdata[c].repeatDelay != 0) { + if (--_CHdata[c].repeatDelay == 1) { + _CHdata[c].repeatDelay = 0; + _CHdata[c].ch->paula.start = _CHdata[c].pSampleStart + + _CHdata[c].repeatOffset; + _CHdata[c].ch->paula.length = _CHdata[c].repeatLength; + _CHdata[c].ch->takeNextBuf(); + } + } + } + + // Finally decide which audio channels to start. + // This could be moved into previous loop. + for (ubyte c=0; con(); + } + } +} + +// -------------------------------------------------------------------------- + +void FC::killChannel(CHdata& CHXdata) { + // The interface to a cheap Paula simulator/mixer. + CHXdata.ch->off(); + CHXdata.ch->paula.start = fcBuf.tellBegin()+_admin.offsets.silence+1; + // (NOTE) Some implementations set this to 0x0100. + CHXdata.ch->paula.length = 1; + CHXdata.ch->takeNextBuf(); +} + +void FC::nextNote(CHdata& CHXdata) +{ + // Get offset to (or address of) current pattern position. + udword pattOffs = CHXdata.pattStart+CHXdata.pattPos; + + // Check for pattern end or whether pattern BREAK + // command is set. + if (CHXdata.pattPos==PATTERN_LENGTH + || (isFC14 && fcBuf[pattOffs]==PATTERN_BREAK)) + { + // End pattern. + +#if defined(DEBUG3) + if (fcBuf[pattOffs] == PATTERN_BREAK) + cout << "--- PATTERN BREAK ---" << endl; +#endif + + // (NOTE) In order for pattern break to work correctly, the + // pattern break value 0x49 must be at the same position in + // each of the four patterns which are currently activated + // for the four voices. + // + // Alternatively, one could advance all voices to the next + // track step here in a 4-voice loop to make sure voices + // stay in sync. + + CHXdata.pattPos = 0; + + // Advance one step in track table. + CHXdata.trackPos += TRACKTAB_ENTRY_LENGTH; // 0x000d + udword trackOffs = CHXdata.trackStart+CHXdata.trackPos; + + // (BUG-FIX) Some FC players here apply a normal + // compare-if-equal which is not accurate enough and + // can cause the player to step beyond the song end. + // + // (BUG-FIX) Some FC14 modules have a pattern table length + // which is not a multiple of 13. Hence we check whether + // the currently activated table line would fit. + + if ((trackOffs+12) >= CHXdata.trackEnd) // pattern table end? + { + CHXdata.trackPos = 0; // restart by default + trackOffs = CHXdata.trackStart; + + songEnd = true; + + // (NOTE) Some songs better stop here or reset all + // channels to cut off any pending sounds. + } + + // Step Voice 1 Voice 2 Voice 3 Voice 4 Speed + // SP PT TR ST PT TR ST PT TR ST PT TR ST RS + // + // SP = STEP + // PT = PATTERN + // TR = TRANSPOSE + // ST = SOUND TRANSPOSE + // RS = REPLAY SPEED + + // Decide whether to read new song speed. + if (++_admin.RScount == 5) + { + _admin.RScount = 1; + ubyte newSpeed = fcBuf[trackOffs+12]; // RS (replay speed) + if (newSpeed != 0) // 0 would be underflow + { + _admin.count = _admin.speed = newSpeed; + } + } + + uword pattern = fcBuf[trackOffs++]; // PT + CHXdata.transpose = fcBufS[trackOffs++]; + CHXdata.soundTranspose = fcBufS[trackOffs++]; + + CHXdata.pattStart = _admin.offsets.patterns+(pattern<<6); + // Get new pattern pointer (pattPos is 0 already, see above). + pattOffs = CHXdata.pattStart; + } + +#if defined(DEBUG2) + if (CHXdata.dmaMask==1 + && CHXdata.pattPos==0) + { + cout << endl; + cout << "Step = " << hex << setw(4) << setfill('0') << CHXdata.trackPos/ TRACKTAB_ENTRY_LENGTH; + cout << " | " << hex << setw(5) << setfill('0') << (int)CHXdata.trackStart << ", " << (int)(CHXdata.trackStart+CHXdata.trackPos) << ", " << (int)CHXdata.trackEnd << endl; + udword tmp = CHXdata.trackStart+CHXdata.trackPos; + for (int t = 0; t < 13; ++t) + cout << hex << setw(2) << setfill('0') << (int)fcBuf[tmp++] << ' '; + cout << endl; + cout << endl; + } + + cout << hex << setw(2) << setfill('0') << (int)fcBuf[pattOffs] << ' ' + << setw(2) << (int)fcBuf[pattOffs+1]; + if (CHXdata.dmaMask != 8) + cout << " | "; +#endif + + // Process pattern entry. + + ubyte note = fcBuf[pattOffs++]; + ubyte info1 = fcBuf[pattOffs]; // info byte #1 + + if (note != 0) + { + CHXdata.portaOffs = 0; // reset portamento offset + CHXdata.portaInfo = 0; // stop port., erase old parameter + + // (BUG-FIX) Disallow signed underflow here. + CHXdata.noteValue = note&0x7f; + + // (NOTE) Since first note is 0x01, first period at array + // offset 0 cannot be accessed directly (i.e. without adding + // transpose values from track table or modulation sequence). + + // Disable channel right now. + CHXdata.ch->off(); + // Later enable channel. + _admin.dmaFlags |= CHXdata.dmaMask; + + // Pattern offset stills points to info byte #1. + // Get instrument/volModSeq number from info byte #1 + // and add sound transpose value from track table. + uword sound = (fcBuf[pattOffs]&0x3f)+CHXdata.soundTranspose; + // + // (FC14 BUG-FIX) Better mask here to take care of overflow. + // + sound &= 0x3f; + + // (NOTE) Some FC players here put pattern info byte #1 + // into an unused byte variable at structure offset 9. + + udword seqOffs; // the modulation sequence for this sound + + if (sound > (_admin.usedVolModSeqs-1)) + { + seqOffs = _admin.offsets.silence; + } + else + { + seqOffs = _admin.offsets.volModSeqs+(sound<<6); + } + CHXdata.envelopeSpeed = CHXdata.envelopeCount = fcBuf[seqOffs++]; + // Get sound modulation sequence number. + sound = fcBuf[seqOffs++]; + CHXdata.vibSpeed = fcBuf[seqOffs++]; + CHXdata.vibFlag = 0x40; // vibrato UP at start + CHXdata.vibAmpl = CHXdata.vibCurOffs = fcBuf[seqOffs++]; + CHXdata.vibDelay = fcBuf[seqOffs++]; + CHXdata.volSeq = seqOffs; + CHXdata.volSeqPos = 0; + CHXdata.volSustainTime = 0; + + if (sound > (_admin.usedSndModSeqs-1)) + { + // (NOTE) Silent sound modulation sequence is different + // from silent instrument definition sequence. + seqOffs = _admin.offsets.silence+1; + } + else + { + seqOffs = _admin.offsets.sndModSeqs+(sound<<6); + } + CHXdata.sndSeq = seqOffs; + CHXdata.sndSeqPos = 0; + CHXdata.sndModSustainTime = 0; + } + + // Portamento: bit 7 set = ON, bit 6 set = OFF, bits 5-0 = speed + // New note resets and clears portamento working values. + + if ((info1&0x40) != 0) // portamento OFF? + { + CHXdata.portaInfo = 0; // stop port., erase old parameter + } + + if ((info1&0x80) != 0) // portamento ON? + { + // + // (FC14 BUG-FIX) Kill portamento ON/OFF bits. + // + // Get portamento speed from info byte #2. + // Info byte #2 is info byte #1 in next line of pattern, + // Therefore the +2 offset. + CHXdata.portaInfo = fcBuf[pattOffs+2]&0x3f; + } + + // Advance to next pattern entry. + CHXdata.pattPos += 2; +} + +// -------------------------------------------------------------------------- +// The order of func/proc calls might be confusing, but is necessary +// to simulate JMP instructions in the original player code without +// making use of ``goto''. + +inline void FC::setWave(CHdata& CHXdata, ubyte num) +{ + CHXdata.pSampleStart = _sounds[num].start; + CHXdata.ch->paula.start = _sounds[num].start; + CHXdata.ch->paula.length = _sounds[num].len; + CHXdata.ch->takeNextBuf(); + CHXdata.repeatOffset = _sounds[num].repOffs; + CHXdata.repeatLength = _sounds[num].repLen; + CHXdata.repeatDelay = 3; +} + +inline void FC::readSeqTranspose(CHdata& CHXdata) +{ + CHXdata.seqTranspose = fcBufS[CHXdata.sndSeq+CHXdata.sndSeqPos]; + ++CHXdata.sndSeqPos; +} + +void FC::processModulation(CHdata& CHXdata) +{ + if (CHXdata.sndModSustainTime != 0) + { + --CHXdata.sndModSustainTime; + processPerVol(CHXdata); + return; + } + readModCommand(CHXdata); +} + +void FC::readModCommand(CHdata& CHXdata) +{ + udword seqOffs = CHXdata.sndSeq+CHXdata.sndSeqPos; + + // (NOTE) After each command (except LOOP, END, SUSTAIN, + // and NEWVIB) follows a transpose value. + + if (fcBuf[seqOffs] == SNDMOD_LOOP) + { + CHXdata.sndSeqPos = fcBuf[seqOffs+1]&0x3f; + // Calc new sequence address. + seqOffs = CHXdata.sndSeq+CHXdata.sndSeqPos; + } + + if (fcBuf[seqOffs] == SNDMOD_END) + { + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_SETWAVE) + { + // Disable channel right now. + CHXdata.ch->off(); + // Enable channel later. + _admin.dmaFlags |= CHXdata.dmaMask; + // Restart envelope. + CHXdata.volSeqPos = 0; + CHXdata.envelopeCount = 1; + + setWave(CHXdata,fcBuf[seqOffs+1]); + CHXdata.sndSeqPos += 2; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_CHANGEWAVE) + { + setWave(CHXdata,fcBuf[seqOffs+1]); + CHXdata.sndSeqPos += 2; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_SETPACKWAVE) + { + // Disable channel right now. + CHXdata.ch->off(); + // Enable channel later. + _admin.dmaFlags |= CHXdata.dmaMask; + + uword i = fcBuf[seqOffs+1]; // sample/pack nr. + if (i < 10) // sample or waveform? + { + udword sndOffs = _sounds[i].start - fcBuf.tellBegin(); + // "SSMP"? sample-pack? + if (fcBuf[sndOffs]==0x53 && fcBuf[sndOffs+1]==0x53 && + fcBuf[sndOffs+2]==0x4D && fcBuf[sndOffs+3]==0x50) + { + sndOffs += 4; + // Skip header and 10*2 info blocks of size 16. + udword smpStart = sndOffs+320; + i = fcBuf[seqOffs+2]; // sample nr. + i <<= 4; // *16 (block size) + sndOffs += i; + smpStart += readEndian(fcBuf[sndOffs],fcBuf[sndOffs+1], + fcBuf[sndOffs+2],fcBuf[sndOffs+3]); + CHXdata.pSampleStart = smpStart+fcBuf.tellBegin(); + CHXdata.ch->paula.start = CHXdata.pSampleStart; + CHXdata.ch->paula.length = readEndian(fcBuf[sndOffs+4], + fcBuf[sndOffs+5]); + CHXdata.ch->takeNextBuf(); + + // (FC14 BUG-FIX): Players set period here by accident. + // m68k code move.l 4(a2),4(a3), but 6(a3) is period. + + CHXdata.repeatOffset = readEndian(fcBuf[sndOffs+6], + fcBuf[sndOffs+7]); + CHXdata.repeatLength = readEndian(fcBuf[sndOffs+8], + fcBuf[sndOffs+9]); + if (CHXdata.repeatLength == 1) + { + // Erase first word behind sample to avoid beeping + // one-shot mode upon true emulation of Paula. + fcBuf[smpStart+CHXdata.repeatOffset] = 0; + fcBuf[smpStart+CHXdata.repeatOffset+1] = 0; + } + // Restart envelope. + CHXdata.volSeqPos = 0; + CHXdata.envelopeCount = 1; + // + CHXdata.repeatDelay = 3; + } + } + CHXdata.sndSeqPos += 3; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_NEWSEQ) + { + uword seq = fcBuf[seqOffs+1]; + CHXdata.sndSeq = _admin.offsets.sndModSeqs+(seq<<6); + CHXdata.sndSeqPos = 0; + // Recursive call (ought to be protected via a counter). + readModCommand(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_SUSTAIN) + { + CHXdata.sndModSustainTime = fcBuf[seqOffs+1]; + CHXdata.sndSeqPos += 2; + + // Decrease sustain counter and decide whether to continue + // to envelope modulation. + // Recursive call (ought to be protected via a counter). + processModulation(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_NEWVIB) + { + CHXdata.vibSpeed = fcBuf[seqOffs+1]; + CHXdata.vibAmpl = fcBuf[seqOffs+2]; + CHXdata.sndSeqPos += 3; + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_PITCHBEND) + { + CHXdata.pitchBendSpeed = fcBufS[seqOffs+1]; + CHXdata.pitchBendTime = fcBuf[seqOffs+2]; + CHXdata.sndSeqPos += 3; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else // Not a command, but a transpose value. + { + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + } +} + +// -------------------------------------------------------------------------- +// (NOTE) This part of the code is not protected against a deadlock +// caused by damaged music module data. + +void FC::volSlide(CHdata& CHXdata) +{ + // Following flag divides the volume sliding speed by two. + CHXdata.volSlideDelayFlag ^= 0xff; // = NOT + if (CHXdata.volSlideDelayFlag != 0) + { + --CHXdata.volSlideTime; + CHXdata.volume += CHXdata.volSlideSpeed; + if (CHXdata.volume < 0) + { + CHXdata.volume = CHXdata.volSlideTime = 0; + } + + // (NOTE) Most FC players do not check whether Paula's + // maximum volume level is exceeded. + + if (CHXdata.volume > 64) + { + CHXdata.volume = 64; + CHXdata.volSlideTime = 0; + } + } +} + +void FC::processPerVol(CHdata& CHXdata) +{ + bool repeatVolSeq; // JUMP/GOTO - WHILE conversion + do + { + repeatVolSeq = false; + + // Sustain current volume level? NE => yes, EQ => no. + if (CHXdata.volSustainTime != 0) + { + --CHXdata.volSustainTime; + } + + // Slide volume? NE => yes, EQ => no. + else if (CHXdata.volSlideTime != 0) + { + volSlide(CHXdata); + } + + // Time to set next volume level? NE => no, EQ => yes. + else if (--CHXdata.envelopeCount == 0) + { + CHXdata.envelopeCount = CHXdata.envelopeSpeed; + + bool readNextVal; // JUMP/GOTO - WHILE conversion + do + { + readNextVal = false; + + udword seqOffs = CHXdata.volSeq+CHXdata.volSeqPos; + ubyte command = fcBuf[seqOffs]; + + switch (command) + { + case ENVELOPE_SUSTAIN: + { + CHXdata.volSustainTime = fcBuf[seqOffs+1]; + CHXdata.volSeqPos += 2; + // This shall loop to beginning of proc. + repeatVolSeq = true; + break; + } + case ENVELOPE_SLIDE: + { + CHXdata.volSlideSpeed = fcBuf[seqOffs+1]; + CHXdata.volSlideTime = fcBuf[seqOffs+2]; + CHXdata.volSeqPos += 3; + volSlide(CHXdata); + break; + } + case ENVELOPE_LOOP: + { + // Range check should be done here. + CHXdata.volSeqPos = (fcBuf[seqOffs+1]-5)&0x3f; + // (FC14 BUG) Some FC players here do not read a + // parameter at the new sequence position. They + // leave the pos value in d0, which then passes + // as parameter through all the command comparisons + // (this switch statement) in FC_effa() up to + // FC_effno(). + readNextVal = true; + break; + } + case ENVELOPE_END: + { + break; + } + default: + { + // Read volume value and advance. + CHXdata.volume = fcBuf[seqOffs]; + if (++CHXdata.volSeqPos > 0x3f) { + CHXdata.volSeqPos = 0x3f; + } + // Full range check for volume 0-64. + if (CHXdata.volume > 64) { + CHXdata.volume = 64; + } + else if (CHXdata.volume < 0) { + CHXdata.volume = 0; + } + break; + } + } + } + while (readNextVal); + } + } + while (repeatVolSeq); + + // Now determine note and period value to play. + + sdword tmp0, tmp1; + + tmp0 = CHXdata.seqTranspose; + if (tmp0 >= 0) + { + tmp0 += CHXdata.noteValue; + tmp0 += CHXdata.transpose; + // (NOTE) Permit underflow at this point. Some modules + // need it because--for some unknown reason--they work + // with huge values such as transpose = 0x8c. + } + // else: lock note (i.e. transpose value from sequence is note to play) + +#if defined(DEBUG2) + if ((tmp0&0x7f)>0x53) + { + cout << "X "; +#if defined(DEBUG3) + cout << "=== NOTE > 0x53 ===" << endl; +#endif + } +#endif + + tmp0 &= 0x7f; + tmp1 = tmp0<<1; // *2 (later used to find octave) + tmp0 = periods[tmp0]; + + // Vibrato. + // + // Vibrato offset changes between [0,1,...,2*vibAmpl] + // Offset minus vibAmpl is value to apply. + + if (CHXdata.vibDelay == 0) + { + uword noteTableOffset = tmp1; // tmp1 is note*2; + + sword vibDelta = CHXdata.vibAmpl; + vibDelta <<= 1; // pos/neg amplitude delta + + // vibFlag bit 5: 0 => vibrato down, 1 => vibrato up + // + // (NOTE) In the original player code the vibrato half speed delay + // flag (D6) in bit 0 is toggled but never checked, because the + // vibrato flag byte will never get negative. + + tmp1 = CHXdata.vibCurOffs; + + if ((CHXdata.vibFlag&(1<<5))==0) + { + tmp1 -= CHXdata.vibSpeed; + // Lowest value reached? + if (tmp1 < 0) + { + tmp1 = 0; + CHXdata.vibFlag |= (1<<5); // switch to vibrato up + } + } + else + { + tmp1 += CHXdata.vibSpeed; + // Amplitude reached? + if (tmp1 > vibDelta) + { + tmp1 = vibDelta; + CHXdata.vibFlag &= ~(1<<5); // switch to vibrato down + } + } + + CHXdata.vibCurOffs = tmp1; + + // noteTableOffset is note*2; + + tmp1 -= CHXdata.vibAmpl; + + // Octave 5 at period table byte-offset 96 contains the highest + // period only. 96+160 = 256. This next bit ensures that vibrato + // does not exceed the five octaves in the period table. + // Octave 6 (but lowest!) is FC14 only. + noteTableOffset += 160; // + $a0 + while (noteTableOffset < 256) + { + tmp1 <<= 1; // double vibrato value for each octave + noteTableOffset += 2*12; // advance octave index + }; + tmp0 += tmp1; // apply vibrato to period + + // (NOTE) Questionable code here in the original player sources. + // Although bit 0 of D6 is toggled, the code (see above) that + // checks it is unreachable. + } + else + { + --CHXdata.vibDelay; + + // (NOTE) Questionable code here in existing FC players. Although + // bit 0 of D6 is toggled, the code that checks it is unreachable. + // That bad code has not been converted. + } + + // Portamento. + + // (NOTE) As of FC 1.4 portamento plays at half speed compared to + // old versions. + + // Following flag divides the portamento speed by two + // for FC14 modules. + CHXdata.portDelayFlag ^= 0xff; // = NOT + if (isSMOD || CHXdata.portDelayFlag!=0) + { + sbyte param = CHXdata.portaInfo; + if (param != 0) + { + if (param > 0x1f) // > 0x20 = portamento down + { + param &= 0x1f; + param = (-param); + } + CHXdata.portaOffs -= param; + } + } + + // Pitchbend. + + // Following flag divides the pitch bending speed by two. + CHXdata.pitchBendDelayFlag ^= 0xff; // not + if (CHXdata.pitchBendDelayFlag != 0) + { + if (CHXdata.pitchBendTime != 0) + { + --CHXdata.pitchBendTime; + sbyte speed = CHXdata.pitchBendSpeed; + if (speed != 0) + { + CHXdata.portaOffs -= speed; + } + } + } + + tmp0 += CHXdata.portaOffs; + if (tmp0 <= 0x0070) + { + tmp0 = 0x0071; + } + // (NOTE) This should be 0x1ac0, but the extra low octave has + // been added in FC 1.4 and is a non-working hack due to this + // range-check (see header file). + if (tmp0 > 0x0d60) + { + tmp0 = 0x0d60; + } + CHXdata.period = tmp0; +} diff --git a/MCUME_esp32/espboot/main/LibFC14/FC.h b/MCUME_esp32/espboot/main/LibFC14/FC.h new file mode 100644 index 0000000..8b8af7c --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/FC.h @@ -0,0 +1,188 @@ +// Future Composer audio decoder -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#ifndef FC_H +#define FC_H + +#include + +#include "MyTypes.h" +#include "MyEndian.h" +#include "SmartPtr.h" +#include "Paula.h" + +class FC : public PaulaPlayer { + public: + FC(); + ~FC(); + + void setMixer(PaulaMixer*); + bool isOurData(void*,unsigned long int); + bool init(void*,udword,int=0,int=0); + void run(); + void restart(int=0,int=0); + void off(); + bool songEnd; // whether song end has been reached + + bool isSMOD; // whether file is in Future Composer 1.0 - 1.3 format + bool isFC14; // whether file is in Future Composer 1.4 format + + std::string formatName; + static const std::string SMOD_FORMAT_NAME; + static const std::string FC14_FORMAT_NAME; + static const std::string UNKNOWN_FORMAT_NAME; + + static const uword SMOD_SONGTAB_OFFSET = 0x0064; // 100 + + static const uword FC14_SMPHEADERS_OFFSET = 0x0028; // 40 + static const uword FC14_WAVEHEADERS_OFFSET = 0x0064; // 100 + static const uword FC14_SONGTAB_OFFSET = 0x00b4; // 180 + + static const uword TRACKTAB_ENTRY_LENGTH = 0x000d; // 3*4+1 + static const uword PATTERN_LENGTH = 0x0040; // 32*2 + static const ubyte PATTERN_BREAK = 0x49; + + static const ubyte SEQ_END = 0xE1; + + static const ubyte SNDMOD_LOOP = 0xE0; + static const ubyte SNDMOD_END = SEQ_END; + static const ubyte SNDMOD_SETWAVE = 0xE2; + static const ubyte SNDMOD_CHANGEWAVE = 0xE4; + static const ubyte SNDMOD_NEWVIB = 0xE3; + static const ubyte SNDMOD_SUSTAIN = 0xE8; + static const ubyte SNDMOD_NEWSEQ = 0xE7; + static const ubyte SNDMOD_SETPACKWAVE = 0xE9; + static const ubyte SNDMOD_PITCHBEND = 0xEA; + + static const ubyte ENVELOPE_LOOP = 0xE0; + static const ubyte ENVELOPE_END = SEQ_END; + static const ubyte ENVELOPE_SUSTAIN = 0xE8; + static const ubyte ENVELOPE_SLIDE = 0xEA; + + static const int channels = 4; + + private: + PaulaVoice _dummyVoices[channels]; + + ubyte *input; + udword inputLen; + + smartPtr fcBuf; // for safe unsigned access + smartPtr fcBufS; // for safe signed access + + // This array will be moved behind the input file. So don't forget + // to allocate additional sizeof(..) bytes. + static const ubyte silenceData[8]; + + // Index is AND 0x7f. Table is longer. + static const uword periods[(5+6)*12+4]; + + static const uword SMOD_waveInfo[47*4]; + static const ubyte SMOD_waveforms[]; + + struct Admin { + uword dmaFlags; // which audio channels to turn on (AMIGA related) + ubyte count; // speed count + ubyte speed; // speed + ubyte RScount; + bool initialized; // true => restartable + bool isEnabled; // player on => true, else false + + struct _moduleOffsets { + udword trackTable; + udword patterns; + udword sndModSeqs; + udword volModSeqs; + udword silence; + } offsets; + + int usedPatterns; + int usedSndModSeqs; + int usedVolModSeqs; + } _admin; + + struct Sound { + const ubyte* start; + uword len, repOffs, repLen; + // rest was place-holder (6 bytes) + }; + // 10 samples/sample-packs + // 80 waveforms + Sound _sounds[10+80]; + + struct CHdata + { + PaulaVoice *ch; // paula and mixer interface + + uword dmaMask; + + udword trackStart; // track/step pattern table + udword trackEnd; + uword trackPos; + + udword pattStart; + uword pattPos; + + sbyte transpose; // TR + sbyte soundTranspose; // ST + sbyte seqTranspose; // from sndModSeq + + ubyte noteValue; + + sbyte pitchBendSpeed; + ubyte pitchBendTime, pitchBendDelayFlag; + + ubyte portaInfo, portDelayFlag; + sword portaOffs; + + udword volSeq; + uword volSeqPos; + + ubyte volSlideSpeed, volSlideTime, volSustainTime, + volSlideDelayFlag; + + ubyte envelopeSpeed, envelopeCount; + + udword sndSeq; + uword sndSeqPos; + + ubyte sndModSustainTime; + + ubyte vibFlag, vibDelay, vibSpeed, + vibAmpl, vibCurOffs; + + sbyte volume; + uword period; + + const ubyte* pSampleStart; + uword repeatOffset; + uword repeatLength; + uword repeatDelay; + }; + + struct CHdata _CHdata[channels]; + + void killChannel(CHdata&); + void nextNote(CHdata&); + void processModulation(CHdata&); + void readModCommand(CHdata&); + void processPerVol(CHdata&); + inline void setWave(CHdata&, ubyte num); + inline void readSeqTranspose(CHdata&); + void volSlide(CHdata&); +}; + +#endif // FC_H diff --git a/MCUME_esp32/espboot/main/LibFC14/FC_Data.cpp b/MCUME_esp32/espboot/main/LibFC14/FC_Data.cpp new file mode 100644 index 0000000..384f991 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/FC_Data.cpp @@ -0,0 +1,215 @@ +// Future Composer audio decoder -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "FC.h" + +const std::string FC::SMOD_FORMAT_NAME = "Future Composer 1.0 - 1.3 (AMIGA)"; +const std::string FC::FC14_FORMAT_NAME = "Future Composer 1.4 (AMIGA)"; +const std::string FC::UNKNOWN_FORMAT_NAME = "unknown format"; + +const ubyte FC::silenceData[8] = { + // Used as ``silent'' volume and modulation sequence. + // seqSpeed, sndSeq, vibSpeed, vibAmp, vibDelay, initial Volume, ... + // + // Silent volume sequence starts here. + 0x01, + // Silent modulation sequence starts here. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, SEQ_END +}; + +const uword FC::periods[(5+6)*12+4] = { + 0x06b0, 0x0650, 0x05f4, 0x05a0, 0x054c, 0x0500, 0x04b8, 0x0474, + 0x0434, 0x03f8, 0x03c0, 0x038a, + // +0x0c (*2 = byte-offset) + 0x0358, 0x0328, 0x02fa, 0x02d0, 0x02a6, 0x0280, 0x025c, 0x023a, + 0x021a, 0x01fc, 0x01e0, 0x01c5, + // +0x18 (*2 = byte-offset) + 0x01ac, 0x0194, 0x017d, 0x0168, 0x0153, 0x0140, 0x012e, 0x011d, + 0x010d, 0x00fe, 0x00f0, 0x00e2, + // +0x24 (*2 = byte-offset) + 0x00d6, 0x00ca, 0x00be, 0x00b4, 0x00aa, 0x00a0, 0x0097, 0x008f, + 0x0087, 0x007f, 0x0078, 0x0071, + // +0x30 (*2 = byte-offset) + 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, + 0x0071, 0x0071, 0x0071, 0x0071, + // +0x3c (*2 = byte-offset) + 0x0d60, 0x0ca0, 0x0be8, 0x0b40, 0x0a98, 0x0a00, 0x0970, 0x08e8, + 0x0868, 0x07f0, 0x0780, 0x0714, + // +0x48 (*2 = byte-offset) + // + // (NOTE) 0x49 = PATTERN BREAK, so the extra low octave would be + // useless for direct access. Transpose values would be required. + // However, the FC 1.4 player still has hardcoded 0x0d60 as the lowest + // sample period and does a range-check prior to writing a period to + // the AMIGA custom chip. In short: This octave is useless! Plus: + // Since some music modules access the periods at offset 0x54 via + // transpose, the useless octave cause breakage. + // 0x1ac0, 0x1940, 0x17d0, 0x1680, 0x1530, 0x1400, 0x12e0, 0x11d0, + // 0x10d0, 0x0fe0, 0x0f00, 0x0e28, + // + // End of Future Composer 1.0 - 1.3 period table. + 0x06b0, 0x0650, 0x05f4, 0x05a0, 0x054c, 0x0500, 0x04b8, 0x0474, + 0x0434, 0x03f8, 0x03c0, 0x038a, + // +0x54 (*2 = byte-offset) + 0x0358, 0x0328, 0x02fa, 0x02d0, 0x02a6, 0x0280, 0x025c, 0x023a, + 0x021a, 0x01fc, 0x01e0, 0x01c5, + // +0x60 (*2 = byte-offset) + 0x01ac, 0x0194, 0x017d, 0x0168, 0x0153, 0x0140, 0x012e, 0x011d, + 0x010d, 0x00fe, 0x00f0, 0x00e2, + // +0x6c (*2 = byte-offset) + 0x00d6, 0x00ca, 0x00be, 0x00b4, 0x00aa, 0x00a0, 0x0097, 0x008f, + // +0x78 (*2 = byte-offset) + 0x0087, 0x007f, 0x0078, 0x0071 + // +0x80 (*2 = byte-offset), everything from here on is unreachable + // due to 0x7f AND. +}; + +const uword FC::SMOD_waveInfo[47*4] = { + 0x0000, 0x0010, 0x0000, 0x0010, + 0x0020, 0x0010, 0x0000, 0x0010, + 0x0040, 0x0010, 0x0000, 0x0010, + 0x0060, 0x0010, 0x0000, 0x0010, + 0x0080, 0x0010, 0x0000, 0x0010, + 0x00a0, 0x0010, 0x0000, 0x0010, + 0x00c0, 0x0010, 0x0000, 0x0010, + 0x00e0, 0x0010, 0x0000, 0x0010, + 0x0100, 0x0010, 0x0000, 0x0010, + 0x0120, 0x0010, 0x0000, 0x0010, + 0x0140, 0x0010, 0x0000, 0x0010, + 0x0160, 0x0010, 0x0000, 0x0010, + 0x0180, 0x0010, 0x0000, 0x0010, + 0x01a0, 0x0010, 0x0000, 0x0010, + 0x01c0, 0x0010, 0x0000, 0x0010, + 0x01e0, 0x0010, 0x0000, 0x0010, + 0x0200, 0x0010, 0x0000, 0x0010, + 0x0220, 0x0010, 0x0000, 0x0010, + 0x0240, 0x0010, 0x0000, 0x0010, + 0x0260, 0x0010, 0x0000, 0x0010, + 0x0280, 0x0010, 0x0000, 0x0010, + 0x02a0, 0x0010, 0x0000, 0x0010, + 0x02c0, 0x0010, 0x0000, 0x0010, + 0x02e0, 0x0010, 0x0000, 0x0010, + 0x0300, 0x0010, 0x0000, 0x0010, + 0x0320, 0x0010, 0x0000, 0x0010, + 0x0340, 0x0010, 0x0000, 0x0010, + 0x0360, 0x0010, 0x0000, 0x0010, + 0x0380, 0x0010, 0x0000, 0x0010, + 0x03a0, 0x0010, 0x0000, 0x0010, + 0x03c0, 0x0010, 0x0000, 0x0010, + 0x03e0, 0x0010, 0x0000, 0x0010, + 0x0400, 0x0008, 0x0000, 0x0008, + 0x0410, 0x0008, 0x0000, 0x0008, + 0x0420, 0x0008, 0x0000, 0x0008, + 0x0430, 0x0008, 0x0000, 0x0008, + 0x0440, 0x0008, 0x0000, 0x0008, + 0x0450, 0x0008, 0x0000, 0x0008, + 0x0460, 0x0008, 0x0000, 0x0008, + 0x0470, 0x0008, 0x0000, 0x0008, + 0x0480, 0x0010, 0x0000, 0x0010, + 0x04a0, 0x0008, 0x0000, 0x0008, + 0x04b0, 0x0010, 0x0000, 0x0010, + 0x04d0, 0x0010, 0x0000, 0x0010, + 0x04f0, 0x0008, 0x0000, 0x0008, + 0x0500, 0x0008, 0x0000, 0x0008, + 0x0510, 0x0018, 0x0000, 0x0018 +}; + +const ubyte FC::SMOD_waveforms[] = { + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0x3f,0x37,0x2f,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0x37,0x2f,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0x2f,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xa0,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xa0,0xa8,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0x37, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8, + 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7f, + 0x80,0x80,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70, + 0x45,0x45,0x79,0x7d,0x7a,0x77,0x70,0x66,0x61,0x58,0x53,0x4d,0x2c,0x20,0x18,0x12, + 0x04,0xdb,0xd3,0xcd,0xc6,0xbc,0xb5,0xae,0xa8,0xa3,0x9d,0x99,0x93,0x8e,0x8b,0x8a, + 0x45,0x45,0x79,0x7d,0x7a,0x77,0x70,0x66,0x5b,0x4b,0x43,0x37,0x2c,0x20,0x18,0x12, + 0x04,0xf8,0xe8,0xdb,0xcf,0xc6,0xbe,0xb0,0xa8,0xa4,0x9e,0x9a,0x95,0x94,0x8d,0x83, + 0x00,0x00,0x40,0x60,0x7f,0x60,0x40,0x20,0x00,0xe0,0xc0,0xa0,0x80,0xa0,0xc0,0xe0, + 0x00,0x00,0x40,0x60,0x7f,0x60,0x40,0x20,0x00,0xe0,0xc0,0xa0,0x80,0xa0,0xc0,0xe0, + 0x80,0x80,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8, + 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7f, + 0x80,0x80,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70 +}; diff --git a/MCUME_esp32/espboot/main/LibFC14/LamePaula.h b/MCUME_esp32/espboot/main/LibFC14/LamePaula.h new file mode 100644 index 0000000..1fd83ff --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/LamePaula.h @@ -0,0 +1,98 @@ +// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef LAMEPAULA_H +#define LAMEPAULA_H + +#include "Paula.h" + +class LamePaulaMixer; + +class LamePaulaVoice : public PaulaVoice +{ + public: + LamePaulaVoice(); + ~LamePaulaVoice(); + + void on(); + void off(); + void takeNextBuf(); // take parameters from paula.* (or just to repeat.*) + + friend class LamePaulaMixer; + + private: + bool isOn; + bool looping; // whether to loop sample buffer continously (PAULA emu) + + const ubyte* start; + const ubyte* end; + udword length; + + const ubyte* repeatStart; + const ubyte* repeatEnd; + udword repeatLength; + + uword curPeriod; + udword stepSpeed; + udword stepSpeedPnt; + udword stepSpeedAddPnt; +}; + +class LamePaulaMixer : public PaulaMixer +{ + public: + LamePaulaMixer(); + ~LamePaulaMixer(); + void init(udword freq, ubyte bits, ubyte channels, uword zero); + void init(ubyte voices); + PaulaVoice* getVoice(ubyte); + + void fillBuffer(void* buffer, udword bufferLen, PaulaPlayer *player); + + private: + void setReplayingSpeed(); + void setBpm(uword bpm); + void end(); + + void* (LamePaulaMixer::*_fillFunc)(void*, udword); + + void* fill8bitMono(void*, udword); + void* fill8bitStereo(void*, udword); + void* fill16bitMono(void*, udword); + void* fill16bitStereo(void*, udword); + + static const int _maxVoices = 32; + LamePaulaVoice* _voice[_maxVoices]; + int _voices; + + udword _pcmFreq; + ubyte _bitsPerSample; + ubyte _channels; + uword _zero; + + static const udword AMIGA_CLOCK_PAL = 3546895; + static const udword AMIGA_CLOCK_NTSC = 3579546; + const udword AMIGA_CLOCK; + + sbyte mix8[256]; + sword mix16[256]; + + ubyte zero8bit; // ``zero''-sample + uword zero16bit; // either signed or unsigned + + ubyte bufferScale; + + udword samplesAdd; + udword samplesPnt; + uword samples, samplesOrg; + + udword toFill; + + ubyte emptySample; +}; + +#endif // LAMEPAULA_H diff --git a/MCUME_esp32/espboot/main/LibFC14/LamePaulaMixer.cpp b/MCUME_esp32/espboot/main/LibFC14/LamePaulaMixer.cpp new file mode 100644 index 0000000..56e700b --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/LamePaulaMixer.cpp @@ -0,0 +1,377 @@ +// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +// History: This once was a simple mixer (it still is ;) that was +// used in a private MOD/TFMX player and was configured at run-time +// to mix up to 32 individual audio channels. In this particular +// version, 16-bit and mono are moved back in. Most of that old code +// has not been touched though because it has done its job well even +// if it looks quite ugly. So, please bear with me, if you find things +// in here that are not used by the FC player. + +#include "LamePaula.h" + +LamePaulaMixer::LamePaulaMixer() + : AMIGA_CLOCK(AMIGA_CLOCK_PAL) +{ + // Start with no voice ptrs. + _voices = 0; + for (ubyte v=0; v<_maxVoices; v++) { + _voice[v] = 0; + } +} + + +LamePaulaMixer::~LamePaulaMixer() { + end(); +} + + +void LamePaulaMixer::end() { + for (ubyte v=0; v<_voices; v++) { + delete _voice[v]; + _voice[v] = 0; + } + _voices = 0; +} + + +PaulaVoice* LamePaulaMixer::getVoice(ubyte n) { + if (n < _maxVoices) { + return _voice[n]; + } + else { + return 0; + } +} + + +void LamePaulaMixer::init(ubyte voices) { + if ((voices <= _maxVoices) && (voices != _voices)) { + end(); + _voices = voices; + for (ubyte v=0; v<_voices; v++) { + _voice[v] = new LamePaulaVoice; + } + } + for (ubyte v=0; v<_voices; v++) { + LamePaulaVoice* pv = _voice[v]; + pv->start = &emptySample; + pv->end = &emptySample+1; + pv->repeatStart = &emptySample; + pv->repeatEnd = &emptySample+1; + pv->length = 1; + pv->curPeriod = 0; + pv->stepSpeed = 0; + pv->stepSpeedPnt = 0; + pv->stepSpeedAddPnt = 0; + pv->off(); + } +} + + +void LamePaulaMixer::init(udword freq, ubyte bits, ubyte channels, uword zero) +{ + _pcmFreq = freq; + _bitsPerSample = bits; + _channels = channels; + _zero = zero; + + setReplayingSpeed(); + + bufferScale = 0; + toFill = 0; + + if (bits == 8) { + zero8bit = zero; + if (channels == 1) { + _fillFunc = &LamePaulaMixer::fill8bitMono; + } + else { // if (channels == 2) + _fillFunc = &LamePaulaMixer::fill8bitStereo; + ++bufferScale; + } + } + else { // if (bits == 16) + zero16bit = zero; + ++bufferScale; + if (channels == 1) { + _fillFunc = &LamePaulaMixer::fill16bitMono; + } + else { // if (channels == 2) + _fillFunc = &LamePaulaMixer::fill16bitStereo; + ++bufferScale; + } + } + + uword ui; + long si; + ubyte voicesPerChannel = _voices/_channels; + + // Input samples: 80,81,82,...,FE,FF,00,01,02,...,7E,7F + // Array: 00/x, 01/x, 02/x,...,7E/x,7F/x,80/x,81/x,82/x,...,FE/x/,FF/x + ui = 0; + si = 0; + while (si++ < 128) { + mix8[ui++] = (sbyte)(si/voicesPerChannel); + } + si = -128; + while (si++ < 0) { + mix8[ui++] = (sbyte)(si/voicesPerChannel); + } + // Input samples: 80,81,82,...,FE,FF,00,01,02,...,7E,7F + // Array: 0/x, 100/x, 200/x, ..., FF00/x + ui = 0; + si = 0; + while (si < 128*256) { + mix16[ui++] = (sword)(si/voicesPerChannel); + si += 256; + } + si = -128*256; + while (si < 0) { + mix16[ui++] = (sword)(si/voicesPerChannel); + si += 256; + } +} + + +void LamePaulaMixer::setReplayingSpeed() { + samples = ( samplesOrg = _pcmFreq / 50 ); + samplesPnt = (( _pcmFreq % 50 ) * 65536 ) / 50; + samplesAdd = 0; +} + + +void LamePaulaMixer::setBpm(uword bpm) { + uword callsPerSecond = (bpm * 2) / 5; + samples = ( samplesOrg = _pcmFreq / callsPerSecond ); + samplesPnt = (( _pcmFreq % callsPerSecond ) * 65536 ) / callsPerSecond; + samplesAdd = 0; +} + + +void LamePaulaMixer::fillBuffer(void* buffer, udword bufferLen, PaulaPlayer *player) { + // Both, 16-bit and stereo samples take more memory. + // Hence fewer samples fit into the buffer. + bufferLen >>= bufferScale; + + while ( bufferLen > 0 ) { + if ( toFill > bufferLen ) { + buffer = (this->*_fillFunc)(buffer, bufferLen); + toFill -= bufferLen; + bufferLen = 0; + } + else if ( toFill > 0 ) { + buffer = (this->*_fillFunc)(buffer, toFill); + bufferLen -= toFill; + toFill = 0; + } + if ( toFill == 0 ) { + player->run(); + + udword temp = ( samplesAdd += samplesPnt ); + samplesAdd = temp & 0xFFFF; + toFill = samples + ( temp > 65535 ); + + for (ubyte v=0; v<_voices; v++) { + LamePaulaVoice *pv = _voice[v]; + if ( pv->paula.period != pv->curPeriod ) { + pv->curPeriod = pv->paula.period; + if (pv->curPeriod != 0) { + pv->stepSpeed = (AMIGA_CLOCK/_pcmFreq) / pv->curPeriod; + pv->stepSpeedPnt = (((AMIGA_CLOCK/_pcmFreq) % pv->curPeriod ) * 65536 ) / pv->curPeriod; + } + else { + pv->stepSpeed = pv->stepSpeedPnt = 0; + } + } + } // for voices + } + } // while bufferLen +} + + +void* LamePaulaMixer::fill8bitMono(void* buffer, udword numberOfSamples) +{ + ubyte* buffer8bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v++) { + buffer8bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer8bit = zero8bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + } + } + buffer8bit++; + } + } + return(buffer8bit); +} + + +void* LamePaulaMixer::fill8bitStereo( void* buffer, udword numberOfSamples ) +{ + ubyte* buffer8bit = (static_cast(buffer))+1; + for (ubyte v=1; v<_voices; v+=2) + { + buffer8bit = (static_cast(buffer))+1; + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 1) { + *buffer8bit = zero8bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + } + } + buffer8bit += 2; + } + } + buffer8bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v+=2) { + buffer8bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer8bit = zero8bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + } + } + buffer8bit += 2; + } + } + return(buffer8bit); +} + + +void* LamePaulaMixer::fill16bitMono( void* buffer, udword numberOfSamples ) +{ + sword* buffer16bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v++) { + buffer16bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer16bit = zero16bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + } + } + buffer16bit++; + } + } + return(buffer16bit); +} + + +void* LamePaulaMixer::fill16bitStereo( void *buffer, udword numberOfSamples ) +{ + sword* buffer16bit = (static_cast(buffer))+1; + for (ubyte v=1; v<_voices; v+=2 ) { + buffer16bit = (static_cast(buffer))+1; + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 1) { + *buffer16bit = zero16bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) + { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + } + } + buffer16bit += 2; + } + } + buffer16bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v+=2 ) { + buffer16bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer16bit = zero16bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + } + } + buffer16bit += 2; + } + } + return(buffer16bit); +} diff --git a/MCUME_esp32/espboot/main/LibFC14/LamePaulaVoice.cpp b/MCUME_esp32/espboot/main/LibFC14/LamePaulaVoice.cpp new file mode 100644 index 0000000..0baca4d --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/LamePaulaVoice.cpp @@ -0,0 +1,52 @@ +// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#include "LamePaula.h" + +LamePaulaVoice::LamePaulaVoice() { + looping = true; + off(); +} + + +LamePaulaVoice::~LamePaulaVoice() { + off(); +} + + +void LamePaulaVoice::off() { + isOn = false; + paula.period = 0; + paula.volume = 0; +} + + +void LamePaulaVoice::on() { + takeNextBuf(); + isOn = true; +} + + +void LamePaulaVoice::takeNextBuf() { + if (!isOn) { + // If channel is off, take sample START parameters. + start = paula.start; + length = paula.length; + length <<= 1; + if (length == 0) { // Paula would play $FFFF words (!) + length = 1; + } + end = start+length; + } + repeatStart = paula.start; + repeatLength = paula.length; + repeatLength <<= 1; + if (repeatLength == 0) { // Paula would play $FFFF words (!) + repeatLength = 1; + } + repeatEnd = repeatStart+repeatLength; +} diff --git a/MCUME_esp32/espboot/main/LibFC14/MyEndian.h b/MCUME_esp32/espboot/main/LibFC14/MyEndian.h new file mode 100644 index 0000000..b43c679 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/MyEndian.h @@ -0,0 +1,170 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef MYENDIAN_H +#define MYENDIAN_H + +#include "Config.h" +#include "MyTypes.h" + +// This should never be true. +#if defined(LO) || defined(HI) || defined(LOLO) || defined(LOHI) || defined(HILO) || defined(HIHI) + #error Redefinition of these values can cause trouble. +#endif + +// For optional direct memory access. +// First value in memory/array = index 0. +// Second value in memory/array = index 1. + +// For a pair of bytes/words/longwords. +#undef LO +#undef HI + +// For two pairs of bytes/words/longwords. +#undef LOLO +#undef LOHI +#undef HILO +#undef HIHI + +#if defined(WORDS_BIGENDIAN) +// byte-order: HI..3210..LO + #define LO 1 + #define HI 0 + #define LOLO 3 + #define LOHI 2 + #define HILO 1 + #define HIHI 0 +#else +// byte-order: LO..0123..HI + #define LO 0 + #define HI 1 + #define LOLO 0 + #define LOHI 1 + #define HILO 2 + #define HIHI 3 +#endif + +union cpuLword +{ + uword w[2]; // single 16-bit low and high word + udword l; // complete 32-bit longword +}; + +union cpuWord +{ + ubyte b[2]; // single 8-bit low and high byte + uword w; // complete 16-bit word +}; + +union cpuLBword +{ + ubyte b[4]; // single 8-bit bytes + udword l; // complete 32-bit longword +}; + +// Convert high-byte and low-byte to 16-bit word. +// Used to read 16-bit words in little-endian order. +inline uword readEndian(ubyte hi, ubyte lo) +{ + return(( (uword)hi << 8 ) + (uword)lo ); +} + +// Convert high bytes and low bytes of MSW and LSW to 32-bit word. +// Used to read 32-bit words in little-endian order. +inline udword readEndian(ubyte hihi, ubyte hilo, ubyte hi, ubyte lo) +{ + return(( (udword)hihi << 24 ) + ( (udword)hilo << 16 ) + + ( (udword)hi << 8 ) + (udword)lo ); +} + +// Read a little-endian 16-bit word from two bytes in memory. +inline uword readLEword(const ubyte ptr[2]) +{ +#if defined(WORDS_LITTLEENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + return *((uword*)ptr); +#else + return readEndian(ptr[1],ptr[0]); +#endif +} + +// Write a big-endian 16-bit word to two bytes in memory. +inline void writeLEword(ubyte ptr[2], uword someWord) +{ +#if defined(WORDS_LITTLEENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + *((uword*)ptr) = someWord; +#else + ptr[0] = (someWord & 0xFF); + ptr[1] = (someWord >> 8); +#endif +} + + + +// Read a big-endian 16-bit word from two bytes in memory. +inline uword readBEword(const ubyte ptr[2]) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + return *((uword*)ptr); +#else + return ( (((uword)ptr[0])<<8) + ((uword)ptr[1]) ); +#endif +} + +// Read a big-endian 32-bit word from four bytes in memory. +inline udword readBEdword(const ubyte ptr[4]) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + return *((udword*)ptr); +#else + return ( (((udword)ptr[0])<<24) + (((udword)ptr[1])<<16) + + (((udword)ptr[2])<<8) + ((udword)ptr[3]) ); +#endif +} + +// Write a big-endian 16-bit word to two bytes in memory. +inline void writeBEword(ubyte ptr[2], uword someWord) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + *((uword*)ptr) = someWord; +#else + ptr[0] = someWord >> 8; + ptr[1] = someWord & 0xFF; +#endif +} + +// Write a big-endian 32-bit word to four bytes in memory. +inline void writeBEdword(ubyte ptr[4], udword someDword) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + *((udword*)ptr) = someDword; +#else + ptr[0] = someDword >> 24; + ptr[1] = (someDword>>16) & 0xFF; + ptr[2] = (someDword>>8) & 0xFF; + ptr[3] = someDword & 0xFF; +#endif +} + + + +// Convert 16-bit little-endian word to big-endian order or vice versa. +inline uword convertEndianess( uword intelword ) +{ + uword hi = intelword >> 8; + uword lo = intelword & 255; + return(( lo << 8 ) + hi ); +} + +// Convert 32-bit little-endian word to big-endian order or vice versa. +inline udword convertEndianess( udword inteldword ) +{ + udword hihi = inteldword >> 24; + udword hilo = ( inteldword >> 16 ) & 0xFF; + udword hi = ( inteldword >> 8 ) & 0xFF; + udword lo = inteldword & 0xFF; + return(( lo << 24 ) + ( hi << 16 ) + ( hilo << 8 ) + hihi ); +} + +#endif // MYENDIAN_H diff --git a/MCUME_esp32/espboot/main/LibFC14/MyTypes.h b/MCUME_esp32/espboot/main/LibFC14/MyTypes.h new file mode 100644 index 0000000..997722a --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/MyTypes.h @@ -0,0 +1,38 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef MYTYPES_H +#define MYTYPES_H + +#include "Config.h" + +// Wanted: 8-bit signed/unsigned. +#if SIZEOF_CHAR > 1 +#error Platform unsupported. +#endif // SIZEOF_CHAR +typedef signed char sbyte; +typedef unsigned char ubyte; + +// Wanted: 16-bit signed/unsigned. +#if SIZEOF_SHORT_INT >= 2 +typedef signed short int sword; +typedef unsigned short int uword; +#else +typedef signed int sword; +typedef unsigned int uword; +#endif // SIZEOF_SHORT_INT + +// Wanted: 32-bit signed/unsigned. +#if SIZEOF_INT >= 4 +typedef signed int sdword; +typedef unsigned int udword; +#elif SIZEOF_LONG_INT >= 4 +typedef signed long int sdword; +typedef unsigned long int udword; +#else +#error Platform not supported. +#endif // SIZEOF_INT + +#endif // MYTYPES_H diff --git a/MCUME_esp32/espboot/main/LibFC14/Paula.cpp b/MCUME_esp32/espboot/main/LibFC14/Paula.cpp new file mode 100644 index 0000000..659259a --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/Paula.cpp @@ -0,0 +1,20 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#include "Paula.h" + +void PaulaVoice::off() { + // intentionally left blank +} + + +void PaulaVoice::on() { + // intentionally left blank +} + + +void PaulaVoice::takeNextBuf() { + // intentionally left blank +} diff --git a/MCUME_esp32/espboot/main/LibFC14/Paula.h b/MCUME_esp32/espboot/main/LibFC14/Paula.h new file mode 100644 index 0000000..5b09b21 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/Paula.h @@ -0,0 +1,37 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef PAULA_H +#define PAULA_H + +#include "MyTypes.h" + +class PaulaVoice { + public: + // Paula + struct _paula { + const ubyte* start; // start address + uword length; // length in 16-bit words + uword period; + uword volume; // 0-64 + } paula; + + virtual void on(); + virtual void off(); + virtual void takeNextBuf(); // take parameters from paula.* (or just to repeat.*) +}; + +class PaulaMixer { + public: + virtual void init(ubyte voices) = 0; + virtual PaulaVoice* getVoice(ubyte) = 0; +}; + +class PaulaPlayer { + public: + virtual void run() = 0; +}; + +#endif // PAULA_H diff --git a/MCUME_esp32/espboot/main/LibFC14/SmartPtr.h b/MCUME_esp32/espboot/main/LibFC14/SmartPtr.h new file mode 100644 index 0000000..61cf791 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/SmartPtr.h @@ -0,0 +1,180 @@ +// Simple smart pointer class -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef SMARTPTR_H +#define SMARTPTR_H + +typedef unsigned long int ulong; + +template class smartPtrBase { + public: + smartPtrBase(T* buffer, ulong bufferLen, bool bufOwner = false) : dummy(0) { + doFree = bufOwner; + if ( bufferLen >= 1 ) { + pBufCurrent = ( bufBegin = buffer ); + bufEnd = bufBegin + bufferLen; + bufLen = bufferLen; + status = true; + } + else { + pBufCurrent = ( bufBegin = ( bufEnd = 0 )); + bufLen = 0; + status = false; + } + } + + virtual ~smartPtrBase() { + if ( doFree && (bufBegin != 0) ) { +#if defined(_MSC_VER) + delete[] (void*)bufBegin; +#else + delete[] bufBegin; +#endif + } + } + + virtual T* tellBegin() { return bufBegin; } + virtual ulong tellLength() { return bufLen; } + virtual ulong tellPos() { return (ulong)(pBufCurrent-bufBegin); } + + virtual bool checkIndex(ulong index) { + return ((pBufCurrent+index)= 1 ) { + pBufCurrent = bufBegin; + return (status = true); + } + else { + return (status = false); + } + } + + virtual bool good() { + return (pBufCurrent= bufBegin) { + pBufCurrent -= offset; + } + else { + status = false; + } + } + + T operator*() { + if ( good() ) { + return *pBufCurrent; + } + else { + status = false; + return dummy; + } + } + + T& operator[](ulong index) { + if (checkIndex(index)) { + return pBufCurrent[index]; + } + else { + status = false; + return dummy; + } + } + + virtual operator bool() { return status; } + + protected: + T* bufBegin; + T* bufEnd; + T* pBufCurrent; + ulong bufLen; + bool status; + bool doFree; + T dummy; +}; + + +template class smartPtr : public smartPtrBase { + public: + smartPtr(T* buffer, ulong bufferLen, bool bufOwner = false) + : smartPtrBase(buffer, bufferLen, bufOwner) + { + } + + smartPtr() + : smartPtrBase(0,0) + { + } + + void setBuffer(T* buffer, ulong bufferLen) { + if ( bufferLen >= 1 ) { + this->pBufCurrent = ( this->bufBegin = buffer ); + this->bufEnd = this->bufBegin + bufferLen; + this->bufLen = bufferLen; + this->status = true; + } + else { + this->pBufCurrent = this->bufBegin = this->bufEnd = 0; + this->bufLen = 0; + this->status = false; + } + } +}; + +#endif // SMARTPTR_H diff --git a/MCUME_esp32/espboot/main/LibFC14/component.mk b/MCUME_esp32/espboot/main/LibFC14/component.mk new file mode 100644 index 0000000..757a913 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/component.mk @@ -0,0 +1,12 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . +CPPFLAGS += -Wno-error=delete-non-virtual-dtor \ No newline at end of file diff --git a/MCUME_esp32/espboot/main/LibFC14/fc14audiodecoder.cpp b/MCUME_esp32/espboot/main/LibFC14/fc14audiodecoder.cpp new file mode 100644 index 0000000..dcc7e3d --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/fc14audiodecoder.cpp @@ -0,0 +1,99 @@ +// C language wrapper library for Future Composer audio decoder +// Copyright (C) 2008 Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "fc14audiodecoder.h" + +#include "FC.h" +#include "LamePaula.h" + +#define FC14_DECLARE_DECODER \ + fc14dec *p = (fc14dec*)ptr + +struct fc14dec { + FC decoder; + LamePaulaMixer mixer; +}; + +void* fc14dec_new() { + fc14dec *p = new fc14dec; + p->decoder.setMixer(&p->mixer); + return (void*)p; +} + +void fc14dec_delete(void* ptr) { + FC14_DECLARE_DECODER; + delete p; +} + +int fc14dec_detect(void* ptr, void* data, unsigned long int length) { + FC14_DECLARE_DECODER; + return p->decoder.isOurData(data,length); +} + +int fc14dec_init(void* ptr, void* data, unsigned long int length) { + FC14_DECLARE_DECODER; + return p->decoder.init(data,length); +} + +void fc14dec_restart(void* ptr) { + FC14_DECLARE_DECODER; + p->decoder.restart(); +} + +void fc14dec_seek(void* ptr, long int ms) { + FC14_DECLARE_DECODER; + p->decoder.restart(); + while (ms>=0) { + p->decoder.run(); + ms -= 20; + if ( fc14dec_song_end(p) ) { + break; + } + }; +} + +void fc14dec_mixer_init(void* ptr, int freq, int bits, int channels, int zero) { + FC14_DECLARE_DECODER; + p->mixer.init(freq,bits,channels,zero); +} + +void fc14dec_buffer_fill(void* ptr, void* buffer, unsigned long int length) { + FC14_DECLARE_DECODER; + p->mixer.fillBuffer(buffer,length,&p->decoder); +} + +int fc14dec_song_end(void* ptr) { + FC14_DECLARE_DECODER; + return p->decoder.songEnd; +} + +unsigned long int fc14dec_duration(void* ptr) { + FC14_DECLARE_DECODER; + // Determine duration with a dry-run till song-end. + unsigned long int ms = 0; + do { + p->decoder.run(); + ms += 20; + } while ( !fc14dec_song_end(p) ); + p->decoder.restart(); + return ms; +} + +const char* fc14dec_format_name(void* ptr) { + FC14_DECLARE_DECODER; + return p->decoder.formatName.c_str(); +} diff --git a/MCUME_esp32/espboot/main/LibFC14/fc14audiodecoder.h b/MCUME_esp32/espboot/main/LibFC14/fc14audiodecoder.h new file mode 100644 index 0000000..33b91a6 --- /dev/null +++ b/MCUME_esp32/espboot/main/LibFC14/fc14audiodecoder.h @@ -0,0 +1,73 @@ +/* C language wrapper library for Future Composer audio decoder + * Copyright (C) 2008 Michael Schwendt + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef FC14AUDIODECODER_H +#define FC14AUDIODECODER_H + +#ifdef __cplusplus +extern "C" { +#endif + + /* Return ptr to new decoder object. */ + void* fc14dec_new(); + + /* Delete decoder object. */ + void fc14dec_delete(void* decoder); + + /* Apply input format header check to a memory buffer. + Returns: 0 = recognized data, 1 = unknown data */ + int fc14dec_detect(void* decoder, void* buffer, unsigned long int length); + + /* Initialize decoder with input data from a memory buffer. + Input buffer may be freed as buffer contents are copied. + Returns: 0 = success, 1 = failure */ + int fc14dec_init(void* decoder, void* buffer, unsigned long int length); + + /* Restart an already initialized decoder. */ + void fc14dec_restart(void* decoder); + + /* Initialize decoder's audio sample mixer. + frequency : output sample frequency + precision : bits per sample + channels : 1=mono, 2=stereo + zero : value of silent output sample + (e.g. 0x80 for unsigned 8-bit, 0x0000 for signed 16-bit) */ + void fc14dec_mixer_init(void* decoder, int frequency, int precision, + int channels, int zero); + + /* Return 0 if song end has been reached, else 1. */ + int fc14dec_song_end(void* decoder); + + /* Return song duration in milli-seconds [ms]. + Decoder must be initialized and will be restarted afterwards. */ + unsigned long int fc14dec_duration(void* decoder); + + /* Set an initialized decoder's play position in milli-seconds [ms]. */ + void fc14dec_seek(void* decoder, long int ms); + + /* Return C-string describing the detected input data format. + Use only with an initialized decoder. */ + const char* fc14dec_format_name(void* decoder); + + /* Fill output sample buffer with audio. */ + void fc14dec_buffer_fill(void* decoder, void* buffer, unsigned long int length); + +#ifdef __cplusplus +} +#endif + +#endif /* FC14AUDIODECODER_H */ diff --git a/MCUME_esp32/espboot/main/bmpjoy.h b/MCUME_esp32/espboot/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espboot/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espboot/main/bmpvbar.h b/MCUME_esp32/espboot/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espboot/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espboot/main/component.mk b/MCUME_esp32/espboot/main/component.mk new file mode 100644 index 0000000..03de198 --- /dev/null +++ b/MCUME_esp32/espboot/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=maybe-uninitialized -Wno-error=sequence-point -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espboot/main/emuapi.cpp b/MCUME_esp32/espboot/main/emuapi.cpp new file mode 100644 index 0000000..35b6215 --- /dev/null +++ b/MCUME_esp32/espboot/main/emuapi.cpp @@ -0,0 +1,1078 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " Select emulator " +#define ROMSDIR "none" + +#define emu_Init(ROM) {} +#define emu_Step() {} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 16 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 162 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { +TAREA_END}; + +const unsigned short keys[]={ +}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { +}; +#endif + +#endif + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + diff --git a/MCUME_esp32/espboot/main/font8x8.h b/MCUME_esp32/espboot/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espboot/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espboot/main/go.cpp b/MCUME_esp32/espboot/main/go.cpp new file mode 100644 index 0000000..77a0188 --- /dev/null +++ b/MCUME_esp32/espboot/main/go.cpp @@ -0,0 +1,250 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" + + +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "LibFC14/fc14audiodecoder.h" +#include "loader.h" +#endif + +#include +#include +#include +#include "mcume.h" + +#define RTC_SLOW_MEM ((uint32_t*) 0x50000000) /*!< RTC slow memory, 8k size */ + +#define ULP_DATA_OFFSET 36 + +_Static_assert(ULP_DATA_OFFSET < CONFIG_ULP_COPROC_RESERVE_MEM/4 - 6, + "ULP_DATA_OFFSET is set too high, or CONFIG_ULP_COPROC_RESERVE_MEM is not sufficient"); + +static inline uint16_t ulp_data_read(size_t offset) +{ + return RTC_SLOW_MEM[ULP_DATA_OFFSET + offset] & 0xffff; +} +static inline void ulp_data_write(size_t offset, uint16_t value) +{ + RTC_SLOW_MEM[ULP_DATA_OFFSET + offset] = value; +} + + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +static void *decoder = nullptr; +#endif + + +#define MAX_FILENAME_SIZE 18 +#define MAX_MENULINES 7 +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (11*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (7*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x10) + + +#define NB_APPS 8 + +static bool menuRedraw=false; +static int nbFiles=NB_APPS; +static int curFile=0; +static int topFile=0; +static int xOffLogo=0; +static int swipeAngle=0; + +static char * apps[NB_APPS] = { +" Zx81 ", +" Zx Spectrum ", +" Atari 800 ", +" C64 ", +" Atari 2600 ", +//" Odyssey ", +" NES ", +" Colecovision ", +" Atari 5200 " +}; + + +static void initBootMenu(void) { + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + //tft.drawSpriteNoDma(30,10,(uint16_t*)logo); + //tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); +} + + + +static int handleBootMenu(unsigned short bClick) +{ + int action = -1; + xOffLogo = 16*sin((2*3.14*swipeAngle)/256)+30; + swipeAngle = (swipeAngle + 2)&0xff; +//printf("xOffLogo %d %d\n",xOffLogo,swipeAngle); + tft.drawSpriteNoDma(xOffLogo,10,(uint16_t*)logo); + + if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if (bClick & MASK_JOY2_BTN) { + action = curFile; + } + + if (menuRedraw && nbFiles) { + //printf("update\n"); + int fileIndex = 0; + int appcnt=0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); + if (curFile <= (MAX_MENULINES/2-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + //if (curFile <= (MAX_MENULINES-1)) topFile=0; + //else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (i= topFile) { + if ((i+topFile) < nbFiles ) { + int dx = (MAX_FILENAME_SIZE-strlen(title))*TEXT_WIDTH/2; + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET+dx,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, title, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET+dx,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, title, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + + + menuRedraw=false; + } + + + return (action); +} + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + //emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + + +static void main_step() { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleBootMenu(bClick); + if (action >= 0) { + printf("launching\n"); + ulp_data_write(0, action); + esp_restart(); + } +#ifdef HAS_SND + audio.step(); +#endif + //vTaskDelay(20 / portTICK_PERIOD_MS); +} + + + + +void setup(void) +{ + printf("App selector\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_InitJoysticks(); + initBootMenu(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); + +#ifdef HAS_SND + audio.begin(); + audio.start(); + bool haveModule = false; + decoder = fc14dec_new(); + haveModule = fc14dec_init(decoder,(void*)musym,sizeof(musym)); + if ( !haveModule ) { + fc14dec_delete(decoder); + printf("FC module not supported\n"); + } + else { + printf("FC music loaded\n"); + fc14dec_mixer_init(decoder,22050,16,1,0 /*32767*/); + + } +#endif +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + + +void SND_Process( void* stream, int len) { +#ifdef HAS_SND + fc14dec_buffer_fill(decoder,stream,len*2); +#endif +} + diff --git a/MCUME_esp32/espboot/main/go.h b/MCUME_esp32/espboot/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espboot/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espboot/main/ili9341_t3dma.cpp b/MCUME_esp32/espboot/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espboot/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espboot/main/ili9341_t3dma.h b/MCUME_esp32/espboot/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espboot/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espboot/main/iopins.h b/MCUME_esp32/espboot/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espboot/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espboot/main/keyboard_osd.h b/MCUME_esp32/espboot/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espboot/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espboot/main/loader.h b/MCUME_esp32/espboot/main/loader.h new file mode 100644 index 0000000..d162b5e --- /dev/null +++ b/MCUME_esp32/espboot/main/loader.h @@ -0,0 +1,586 @@ +const unsigned char musym[9356] = { +0x46,0x43,0x31,0x34,0x00,0x00,0x02,0xF2,0x00,0x00,0x03,0xA6,0x00,0x00,0x0A,0x40, +0x00,0x00,0x0D,0xE6,0x00,0x00,0x03,0x80,0x00,0x00,0x11,0x66,0x00,0x00,0x02,0xC0, +0x00,0x00,0x14,0x26,0x00,0x00,0x1F,0x4C,0x05,0x92,0x00,0x00,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x08,0x10,0x10, +0x08,0x08,0x10,0x08,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,0x01,0x00,0x00,0x02,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x00, +0x03,0x01,0xFE,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC, +0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x02,0x00, +0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x00,0x05,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0xFC,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x00,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02, +0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,0x02,0x00,0x00,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00, +0x00,0x00,0x00,0x03,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x0B,0x00,0x00,0x00,0x08,0x00,0x00, +0x0A,0x00,0x00,0x05,0x0C,0x00,0x0C,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00, +0x05,0x0C,0x00,0x0D,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00, +0x0E,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x0B,0x00,0x00, +0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00,0x0C,0x00,0x00,0x00,0x07,0x00, +0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x0D,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00, +0x00,0x06,0x0C,0x00,0x0E,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C, +0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00,0x10,0x00, +0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x11,0x00,0x00,0x00,0x08, +0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00,0x12,0x00,0x00,0x00,0x07,0x00,0x00,0x09, +0x00,0x00,0x05,0x0C,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05, +0x0C,0x00,0x10,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x11, +0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x06,0x0C,0x00,0x12,0x00,0x00,0x00, +0x01,0x00,0x00,0x15,0x00,0x00,0x05,0x0C,0x00,0x02,0x00,0x00,0x00,0x01,0xFE,0x00, +0x00,0x00,0x00,0x05,0x0C,0x00,0x02,0x00,0x00,0x00,0x01,0xFC,0x00,0x15,0x07,0x00, +0x05,0x0C,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x15,0x05,0x00,0x06,0x0C,0x00, +0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x15,0x03,0x00,0x00,0x00,0x00,0x02,0x00,0x00, +0x00,0x01,0xFE,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0xFC, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x15,0xFE, +0x00,0x04,0x00,0x00,0x02,0x00,0x00,0x00,0x16,0x00,0x00,0x15,0x00,0x00,0x13,0x00, +0x00,0x09,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x0A,0x00, +0x00,0x00,0x16,0x00,0x00,0x15,0x07,0x00,0x13,0x00,0x00,0x09,0x00,0x00,0x00,0x17, +0x00,0x00,0x15,0x05,0x00,0x13,0x00,0x00,0x0A,0x00,0x00,0x00,0x16,0x00,0x00,0x09, +0x00,0x00,0x13,0x00,0x00,0x11,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x14, +0x00,0x00,0x12,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x18, +0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00,0x19,0x00,0x00,0x00, +0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x00, +0x0A,0x00,0x00,0x13,0x00,0x00,0x21,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00, +0x13,0x00,0x00,0x22,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00, +0x23,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x24,0x00,0x00, +0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00, +0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x18,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00, +0x00,0x13,0x00,0x00,0x19,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00, +0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00,0x21,0x00, +0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x22,0x00,0x00,0x00,0x17, +0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00,0x23,0x00,0x00,0x00,0x16,0x00,0x00,0x09, +0x00,0x00,0x13,0x00,0x00,0x24,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,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,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,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x01,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,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,0x22,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x20,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x20,0x06,0x00,0x00,0x01,0x01,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,0x44,0x01,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,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,0x11,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x16,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x16,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x46,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x1E,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x1E,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x1E,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x1E,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x24,0x01,0x00,0x00,0x25,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x25,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0x06,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,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,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x01, +0x00,0x00,0x2E,0x01,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,0x00,0x00,0x1E,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01, +0x00,0x00,0x25,0x01,0x00,0x00,0x1E,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01, +0x00,0x00,0x25,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01,0x00,0x00,0x25,0x01, +0x00,0x00,0x27,0x01,0x00,0x00,0x22,0x01,0x00,0x00,0x25,0x01,0x00,0x00,0x27,0x01, +0x00,0x00,0x29,0x01,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x22,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x22,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x22,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x22,0x0A,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,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,0x46,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x05,0x00,0x00,0x46,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x46,0x05,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x05,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x42,0x05,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x05,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x05,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x44,0x05,0x00,0x00,0x16,0x01,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,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,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,0x16,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x1D,0x06, +0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x1D,0x06, +0x1D,0x06,0x1D,0x06,0x1B,0x06,0x1D,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,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,0x05,0x02,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x11,0x02,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x02, +0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x05,0x02,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x02,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1D,0x06,0x00,0x00,0x1B,0x06,0x1D,0x06,0x1D,0x06,0x1D,0x06,0x1D,0x06, +0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00, +0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00, +0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1B,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1B,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1B,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x20,0x06,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x1B,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x01,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,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,0x1D,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x1E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x01, +0x00,0x00,0x29,0x01,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,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x01, +0x00,0x00,0x2C,0x01,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,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,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,0x00,0x00,0x2E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x2D,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x01, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x29,0x00,0x03,0x07,0x0C,0xE0,0x02,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,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x28, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x26, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x24, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x22, +0x00,0x00,0x00,0x00,0xE7,0x02,0xE4,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x20, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1E, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1C, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1A, +0x00,0x00,0x00,0x00,0xE7,0x03,0xE4,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1B, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1D, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1F, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x21, +0x00,0x00,0x00,0x00,0xE7,0x04,0xE4,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x23, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x25, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x27, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x29, +0x00,0x00,0x00,0x00,0xE7,0x01,0xE2,0x21,0x00,0xE1,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,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,0xE2,0x00,0xA0,0xE4,0x22,0x90,0xE1,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,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,0xE2,0x00,0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0, +0x9F,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x20,0x00,0xE4,0x1B,0x00,0xE4,0x1B,0x00,0xE0, +0x03,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x00,0xB5,0xE2,0x29,0x00,0xE1,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,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,0xE2,0x21,0x00,0x03,0x07,0xE0,0x02,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,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,0xE2,0x21,0x00,0x04,0x07,0xE0,0x02,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,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,0xE2,0x21,0x00,0x05,0x09,0xE0,0x02,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,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,0xE2,0x1F,0x00,0xE1,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,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,0x01,0x00,0x00,0x00,0x00,0x20,0x28,0x30,0x34,0x38, +0x3C,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x0A,0x3F,0x3A,0x30,0xE1,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,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x01,0x01,0x04,0x3F,0x38,0x30,0x28,0x20, +0x18,0x08,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,0x00,0x30,0x3F,0x3F,0x00,0x00, +0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x00,0x00,0x00,0x3F,0xE1,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,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,0x01,0x08,0x01,0x02,0x00,0x3F,0x30,0xE1,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,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x01,0x01,0x00,0x20,0x30,0x28,0x20,0x18, +0x10,0x00,0xE1,0x08,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0A,0x01,0x01,0x00,0x30,0x2C,0x28,0x24,0x20, +0x1C,0x18,0x14,0x10,0x0C,0x08,0x04,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0B,0x01,0x01,0x00,0x30,0x2C,0x28,0x24,0x20, +0x1C,0x18,0x14,0x10,0x0C,0x08,0x04,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0C,0x01,0x01,0x00,0x30,0x2C,0x28,0x24,0x20, +0x1C,0x18,0x14,0x10,0x0C,0x08,0x04,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0D,0x01,0x02,0x0A,0x00,0x04,0x08,0x0C,0x10, +0x14,0x18,0x1C,0x20,0x24,0x28,0x2C,0x30,0x2F,0x2D,0x2C,0x2B,0x2A,0x29,0x28,0x27, +0x26,0x25,0x24,0x23,0x22,0x21,0x20,0xE1,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,0xF8,0xFB,0xF7,0xF5,0xF6,0xF6,0xF6,0xF3, +0xEF,0xF1,0xF4,0xEF,0xED,0xEC,0xF0,0xEF,0xEB,0xE8,0xE9,0xE6,0xDD,0xD9,0xE1,0xF1, +0xFB,0xFB,0xE4,0xCC,0xB8,0xB7,0xCF,0xF3,0x00,0xD0,0x80,0x80,0x80,0x9F,0x2F,0x6B, +0x58,0x08,0x98,0x80,0x83,0xBF,0xEB,0xF7,0x17,0x37,0x39,0x00,0x90,0x80,0x80,0xDF, +0x7F,0x75,0x74,0x40,0x80,0x80,0x8F,0x7F,0x78,0x74,0x60,0xD0,0x80,0x83,0xD7,0x37, +0x5F,0x55,0x38,0x00,0xA0,0x80,0x80,0x80,0xCF,0xF5,0xC0,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x83,0xB7,0xB6,0xA3,0xAF,0xDF,0x17,0x4F,0x64,0x66,0x71, +0x70,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D, +0x6D,0x6D,0x6D,0x6D,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6B,0x6B,0x6B,0x6B,0x58, +0x67,0x6D,0x6B,0x6A,0x6A,0x30,0xD0,0x99,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x9F,0xFF,0x37,0x28,0x04,0x13,0x6F,0x7A, +0x72,0x6D,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6A,0x6A,0x6A,0x69,0x69,0x69,0x6A,0x69, +0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x68,0x68,0x68,0x28,0x00,0xF0, +0xE0,0xB0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x97,0xDB, +0x0D,0x27,0x33,0x54,0x48,0x10,0x0F,0x7F,0x79,0x72,0x6E,0x6C,0x6B,0x6B,0x6B,0x6B, +0x6B,0x6B,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x69,0x69,0x69,0x69, +0x69,0x69,0x69,0x69,0x69,0x69,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0xBF,0x17,0x08,0xC0,0x80,0x80,0x80,0x9F,0x3F,0x7F,0x7F,0x7B, +0x74,0x70,0x59,0x71,0x6E,0x6D,0x6C,0x6C,0x6B,0x6B,0x6B,0x4B,0x70,0x6D,0x6C,0x6B, +0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6A,0x6A,0x58,0x4B,0x6F,0x6D,0x6B, +0x30,0xF6,0xB0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0xEF,0x18,0xD0,0x9C,0x98,0x9F,0xCF,0x5F,0x7F,0x7F,0x60,0x00,0x80,0x8F, +0x2F,0x7F,0x7E,0x76,0x71,0x40,0xEF,0x7F,0x77,0x71,0x6F,0x6D,0x6D,0x60,0x6E,0x6D, +0x6C,0x6C,0x6C,0x6B,0x6B,0x69,0x6C,0x6C,0x6B,0x6B,0x6B,0x28,0xCB,0x1F,0x7C,0x74, +0x00,0x80,0x80,0x87,0xD3,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA7,0xA0,0x80, +0x80,0x9F,0x84,0x80,0x80,0x8F,0xA0,0x80,0x8F,0x5F,0x7F,0x40,0x80,0x80,0x87,0x5F, +0x7F,0x7F,0x78,0x73,0x48,0xC0,0x80,0xBF,0x7F,0x7E,0x76,0x70,0x28,0x4B,0x44,0x47, +0x77,0x71,0x6F,0x6D,0x40,0xC4,0xF7,0x7F,0x75,0x70,0x6E,0x10,0xCF,0x6F,0x76,0x71, +0x68,0x3D,0x6F,0x70,0x6D,0x40,0xA0,0x87,0xDF,0x37,0x54,0x24,0xC0,0x80,0x80,0x80, +0x9F,0xCF,0xA8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xD3,0xA4, +0x80,0x80,0x80,0xDF,0x6B,0x68,0x28,0x80,0x80,0x80,0xBF,0x7F,0x7F,0x60,0xE0,0x80, +0x80,0xFF,0x7F,0x7C,0x75,0x71,0x6F,0x30,0x90,0x9F,0x5F,0x7D,0x75,0x71,0x28,0x0B, +0x5B,0x76,0x71,0x6F,0x6E,0x6D,0x4C,0x37,0x75,0x71,0x6E,0x6D,0x28,0xDD,0x3F,0x78, +0x72,0x6F,0x6D,0x20,0xB0,0xDF,0x6F,0x78,0x72,0x48,0x00,0xC0,0x90,0x80,0x83,0xD7, +0x0C,0xE0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x8F,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0xD7,0x24,0xC0,0x80,0x80,0x80,0xF7,0x7F,0x50,0xF0,0x80,0x80,0x97,0x3F, +0x7F,0x64,0xE0,0x80,0x80,0x8F,0x7F,0x7F,0x7A,0x20,0x80,0x87,0xFF,0x37,0x7F,0x78, +0x73,0x40,0x90,0x80,0xF7,0x7F,0x7A,0x74,0x48,0xD0,0x80,0xF7,0x7F,0x78,0x72,0x40, +0x80,0x80,0x3F,0x7F,0x78,0x72,0x20,0xA4,0xF7,0x7F,0x76,0x58,0x20,0x33,0x5B,0x76, +0x70,0x5C,0x71,0x6F,0x40,0xC0,0x87,0xEF,0x5B,0x6A,0x50,0x00,0xA0,0x80,0x80,0x9F, +0x1F,0x7A,0x50,0xA0,0x80,0x80,0x80,0xD7,0xF0,0x80,0x80,0x80,0x80,0xB7,0x88,0x80, +0x80,0x80,0x80,0x80,0xBF,0x1F,0xF0,0x80,0x80,0x80,0x80,0xFF,0x6A,0x30,0xC0,0x80, +0x80,0x80,0x80,0x7F,0x7F,0x7C,0xE0,0x80,0x80,0x80,0x3F,0x7F,0x7A,0x00,0x80,0x80, +0x80,0xF7,0x7F,0x7C,0x60,0x80,0x80,0x8F,0x3F,0x7E,0x7A,0x70,0x50,0xE0,0x80,0x83, +0x5F,0x7F,0x76,0x20,0xC0,0xBF,0xFF,0x7F,0x68,0x63,0x64,0x44,0x00,0x1F,0x77,0x74, +0x40,0xA0,0x8F,0x7F,0x7C,0x74,0x20,0x80,0x9F,0x5F,0x7C,0x74,0x48,0x27,0x6D,0x74, +0x40,0x88,0x80,0xFF,0x7F,0x76,0x68,0xA0,0x80,0xFF,0x7F,0x60,0x08,0xE0,0xC6,0xBB, +0xEF,0x4B,0x79,0x50,0xC0,0x80,0x80,0xAF,0xFF,0x1A,0x00,0xCA,0xAF,0xBB,0xC8,0xAA, +0x8C,0x80,0x80,0xBF,0xFF,0xC0,0x80,0x80,0x80,0x97,0xEF,0xE0,0x80,0x80,0x80,0x80, +0x83,0xFF,0x30,0xA0,0x80,0x80,0x80,0xBF,0xA8,0x80,0x80,0x80,0xBF,0x12,0xC0,0x80, +0x85,0x9F,0xB8,0xBD,0xA0,0x80,0x80,0x8F,0xDF,0x37,0x40,0xC0,0x80,0x80,0x8F,0x2F, +0x6D,0x58,0x00,0xC6,0xE9,0xA0,0x80,0x8F,0x2F,0x7F,0x68,0x20,0xC0,0x8F,0xFF,0x08, +0xEF,0x5F,0x74,0x4A,0x08,0xCD,0xFF,0x5B,0x7C,0x68,0xE0,0x80,0x80,0xFF,0x7F,0x79, +0x40,0x80,0x80,0xFF,0x7F,0x74,0x10,0xEF,0x37,0x7F,0x74,0x20,0x80,0x80,0x81,0x7F, +0x7F,0x78,0x00,0x80,0x83,0x7F,0x7E,0x50,0xC4,0xEF,0x6F,0x78,0x48,0x80,0x80,0x87, +0x5F,0x7F,0x70,0x00,0x88,0x87,0xFF,0x7F,0x78,0x30,0x80,0x80,0x80,0x3F,0x7F,0x78, +0x50,0x80,0x80,0x80,0xFF,0x7F,0x7A,0x40,0x80,0x80,0x80,0x9F,0x27,0x6B,0x68,0x20, +0x80,0x80,0x80,0xE7,0x00,0xEB,0x1F,0x30,0xC0,0x80,0x80,0x80,0xDF,0x47,0x30,0xC0, +0x80,0x80,0x80,0xF7,0x7F,0x78,0xF0,0x80,0x80,0x80,0xFF,0x4F,0x28,0xF6,0xA8,0x80, +0x80,0x80,0xF7,0x6C,0x30,0xA0,0x9F,0x2F,0x20,0x80,0x80,0x80,0xFF,0x7F,0x78,0xC0, +0x80,0x80,0x80,0x9F,0x7F,0x7F,0x70,0x20,0xA8,0x80,0x80,0x9F,0xF7,0x7F,0x70,0xC0, +0x80,0xF7,0x30,0xF4,0x81,0xDF,0x7F,0x7A,0x40,0x80,0x80,0xFF,0x7F,0x79,0x40,0x80, +0x80,0x80,0xBF,0x7F,0x7E,0x77,0x00,0x80,0x80,0xBF,0x7F,0x7D,0x70,0x80,0x80,0xCF, +0x77,0x70,0x30,0xE0,0xCB,0x1F,0x75,0x50,0x00,0x8D,0xF7,0x4C,0x10,0xAD,0x2F,0x7F, +0x60,0xC0,0x80,0xBF,0xE2,0xBA,0xDF,0x7F,0x7C,0x60,0x80,0x80,0x80,0xDF,0x7F,0x7E, +0x77,0x40,0xA0,0x80,0x80,0xBF,0x7F,0x7F,0x78,0x00,0x80,0x80,0xAF,0xE4,0xD7,0x37, +0x7F,0x28,0x80,0x80,0x8F,0x3F,0x49,0x28,0xB0,0x80,0x87,0xFF,0x7F,0x60,0xA0,0x80, +0x9F,0xDF,0xC0,0x80,0xAF,0xFF,0x2B,0x00,0xB0,0x9A,0x80,0x80,0xD7,0x27,0x11,0xD0, +0x90,0x87,0xCF,0xC0,0x80,0x80,0xBF,0x1F,0x2C,0x00,0x88,0x80,0x80,0x80,0x80,0xF7, +0x7F,0x60,0xC8,0x80,0x80,0x80,0xF7,0x00,0x80,0x81,0x7F,0x7C,0xF0,0x80,0x80,0xFF, +0x7F,0x7C,0x00,0x80,0x80,0x8F,0xEF,0x2F,0x20,0xC0,0x97,0xD7,0x10,0x90,0x80,0xF7, +0x7F,0x78,0x48,0x25,0xF0,0x80,0x80,0x80,0xFF,0x7F,0x7C,0x20,0x80,0x80,0x8F,0x7F, +0x7F,0x79,0x00,0xB7,0xD8,0x84,0x8F,0xCF,0x4F,0x60,0x20,0x1F,0x00,0xA8,0xBB,0x3F, +0x7F,0x58,0xF0,0xC2,0xD9,0xD7,0x1F,0x7F,0x7B,0x50,0x80,0x80,0x9F,0x7F,0x7D,0x76, +0x80,0x80,0x80,0xFF,0x7F,0x7D,0x60,0xA0,0x80,0x80,0xBF,0x4F,0x58,0x43,0x20,0x80, +0x80,0xDF,0x7F,0x7C,0x00,0x80,0x80,0x6F,0x7F,0x60,0x80,0x80,0xBF,0xC0,0x93,0xEF, +0x7F,0x68,0xC0,0x80,0xDF,0x7F,0x7E,0x00,0x80,0x81,0x7F,0x7E,0x00,0x80,0x80,0xD7, +0xF5,0x07,0x2C,0x08,0xD7,0x37,0x7F,0x60,0xC0,0x80,0x80,0x9F,0x7F,0x7F,0x40,0x80, +0x80,0x80,0xBF,0x4F,0x7F,0x7C,0x50,0xA0,0x80,0x87,0xE7,0x07,0x1F,0x5F,0x68,0x20, +0x80,0x80,0x80,0xFF,0x7F,0x7D,0x00,0x80,0x80,0xFF,0x7F,0x70,0x80,0x80,0x80,0x8F, +0x87,0xAF,0x3F,0x7F,0x70,0xE0,0x80,0x80,0xBF,0x4F,0x7F,0x7C,0x48,0x80,0x80,0x80, +0xBF,0x7F,0x7F,0x50,0x90,0x80,0x80,0xBF,0x5F,0x78,0x40,0xA0,0x80,0xBF,0x07,0xE0, +0x80,0xAF,0x3F,0x6C,0x30,0xE8,0xFF,0x00,0xB0,0x97,0xFF,0x7F,0x60,0xA0,0x80,0xF7, +0x7F,0x40,0xC0,0xD7,0x5F,0x48,0xA0,0x9F,0x2F,0x7F,0x7C,0x00,0x92,0x9F,0xCF,0xEF, +0x57,0x7F,0x78,0xC0,0x80,0x81,0x7F,0x7F,0x7B,0x20,0x80,0xFF,0x7F,0x78,0xE0,0x80, +0xDF,0x1F,0x64,0x66,0x28,0xC0,0x80,0xDF,0x7F,0x70,0x10,0x80,0x80,0xFF,0x68,0x30, +0xC8,0xA3,0xF7,0x7F,0x7C,0x00,0x80,0x80,0xF7,0x76,0x50,0x6F,0x70,0x00,0x80,0x80, +0x80,0x5F,0x7F,0x60,0xF0,0x80,0xB7,0x5F,0x78,0xC0,0x80,0x83,0x7F,0x7F,0x00,0x80, +0x80,0xFF,0x7F,0x20,0x80,0x80,0x37,0x7F,0x40,0x90,0x80,0xBF,0x29,0xE0,0x80,0x81, +0xEF,0x5F,0x4A,0x10,0x80,0x80,0xFF,0x54,0x10,0xBB,0xBF,0xA0,0x80,0x80,0x9F,0xFF, +0x58,0x00,0x80,0x80,0xFF,0x7F,0x60,0x00,0xA8,0x80,0x80,0xBF,0x2F,0x6C,0x20,0x80, +0x87,0xDF,0xB0,0x80,0x80,0x7F,0x7F,0x70,0xC0,0x80,0x80,0x80,0x80,0xFF,0x7F,0x7E, +0x00,0x80,0x80,0xFF,0x7F,0x40,0x80,0x83,0x7F,0x7F,0x40,0xA0,0x80,0x80,0xBF,0x5F, +0x7F,0x7D,0x60,0xA0,0x80,0x80,0xFF,0x7F,0x7E,0x00,0x80,0x80,0x1F,0x58,0x00,0xC0, +0xBF,0xFF,0x7F,0x70,0x20,0x0E,0xC0,0x9B,0xF7,0x7F,0x70,0xE0,0x80,0x87,0x3F,0x7F, +0x7C,0x00,0x80,0x80,0xD7,0x3F,0x70,0x40,0x00,0xEF,0x1F,0x02,0x1F,0x18,0xE8,0xE7, +0xE7,0x07,0x3D,0x38,0x00,0x90,0x87,0xFF,0x6E,0x40,0xA0,0x80,0xFF,0x7B,0x6A,0x5C, +0x40,0x10,0x80,0x80,0x3F,0x7F,0x70,0xD0,0x80,0xBF,0x2F,0x20,0xC0,0x3F,0x7F,0x7B, +0xE0,0x80,0x80,0x3F,0x7F,0x7D,0xE0,0x80,0x80,0xB7,0x37,0x7F,0x60,0xE0,0x9F,0x3F, +0x52,0x00,0x80,0x83,0xFF,0x6F,0x7F,0x40,0x90,0x80,0x80,0x83,0xF7,0x5F,0x68,0x40, +0xF0,0xA0,0x9F,0xF7,0x0C,0xE0,0xA0,0x80,0xDF,0x7F,0x7F,0x20,0x80,0x80,0x80,0x5F, +0x7F,0x7E,0x20,0x80,0x80,0x80,0xAF,0x4F,0x7F,0x44,0xC0,0x80,0x80,0x80,0xCF,0x57, +0x58,0xF0,0x88,0x97,0x2F,0x30,0xC0,0xC8,0xBD,0xF7,0x1B,0x11,0x00,0xA0,0x80,0x9F, +0x3F,0x68,0x20,0xD1,0xE0,0xD0,0xC0,0xCF,0xF3,0xFD,0x10,0xE8,0xC0,0x80,0xB7,0x1F, +0x5E,0x20,0xB0,0xCF,0x18,0xB0,0x80,0xA7,0xEF,0x4F,0x72,0x50,0x00,0x80,0x80,0x80, +0xBF,0x7F,0x7F,0x78,0xF0,0x80,0x80,0x9F,0xFF,0x18,0x37,0x65,0x40,0xE0,0xB5,0x89, +0x8F,0x88,0xBF,0x6F,0x7F,0x7E,0x00,0x80,0x80,0x87,0x7F,0x7F,0x7E,0x40,0x80,0x80, +0x80,0x5F,0x7F,0x7F,0x40,0xC4,0x98,0x80,0x8B,0xF7,0x7B,0x7E,0x40,0xA0,0x97,0xCF, +0x2D,0x18,0xEB,0xF7,0x0A,0xF4,0xC0,0xCF,0x2B,0x50,0x20,0xED,0x17,0x08,0xC0,0xCF, +0x37,0x48,0x18,0xE8,0xC5,0xDF,0x0A,0x01,0xE0,0xEF,0x3F,0x6C,0x20,0x84,0x80,0xDF, +0x5F,0x74,0x40,0xC0,0x80,0x97,0x3F,0x7F,0x74,0x00,0x80,0x80,0xBF,0x7F,0x7F,0x30, +0x80,0x8F,0xF7,0x3F,0x00,0xA0,0x81,0xAF,0x5F,0x7F,0x50,0xE0,0x80,0x80,0x87,0xFF, +0x7F,0x50,0x80,0x80,0x9F,0xFF,0x32,0x10,0xFF,0x35,0x10,0x00,0xE0,0xB0,0x9F,0xBF, +0xFF,0x48,0x00,0xA0,0x80,0xBF,0x4F,0x78,0x60,0x00,0x80,0x87,0xDF,0x4F,0x60,0x00, +0x80,0x80,0xAF,0xE7,0x0B,0x08,0xE0,0xBA,0xCF,0x2F,0x6B,0x50,0xC0,0x80,0x87,0xFF, +0x44,0x00,0x98,0xBB,0xF7,0xF8,0xA8,0x9B,0xEF,0x3F,0x5B,0x66,0x30,0x80,0x80,0x80, +0xF7,0x7F,0x7C,0x40,0xD0,0x88,0x80,0x8F,0x1F,0x7F,0x78,0x30,0x80,0x80,0xCF,0x1F, +0x0D,0x1F,0x46,0x32,0xE0,0x95,0xB7,0xFF,0x47,0x5F,0x40,0xF0,0xA0,0x80,0xAF,0x1F, +0x71,0x40,0xF4,0xD0,0xDB,0xDB,0xDF,0xFF,0x3F,0x48,0x00,0x98,0xAF,0x3F,0x79,0x48, +0xD0,0x80,0x80,0xD7,0x5F,0x7C,0x60,0x00,0x96,0xBF,0x17,0x18,0xF6,0xDA,0xEB,0x3F, +0x62,0x20,0xB0,0x8B,0xDF,0x1F,0x10,0xF0,0xE7,0x1F,0x44,0x20,0xD0,0xB7,0xDF,0x00, +0xEC,0xFF,0x3F,0x30,0x00,0xE2,0xC0,0x91,0xBF,0x2F,0x7F,0x60,0xC0,0x80,0x80,0xF7, +0x73,0x70,0x40,0xF0,0xC0,0x90,0x9D,0xDF,0x37,0x60,0x28,0xC8,0x82,0x8F,0xCA,0xD9, +0xF7,0x2F,0x46,0x10,0x90,0x80,0xEF,0x7F,0x78,0x00,0x80,0x80,0xF7,0x7F,0x70,0x00, +0x80,0x80,0x8F,0x3F,0x7F,0x7F,0x00,0x80,0x80,0xBF,0x5F,0x7F,0x60,0xF0,0x80,0x80, +0xAF,0x2F,0x74,0x60,0x10,0xC8,0xAC,0xB3,0xB7,0xCF,0x3F,0x7F,0x70,0xE0,0x80,0x80, +0x9F,0x7F,0x7F,0x7F,0x00,0x80,0x80,0x80,0xFF,0x7F,0x7E,0x40,0xA0,0x80,0x87,0xFF, +0x72,0x40,0xE0,0xBB,0xD7,0x0F,0x2B,0x04,0xA0,0x80,0xBF,0x27,0x5B,0x40,0xF0,0xB0, +0xAF,0xF3,0x01,0xF6,0xD4,0xC7,0xFF,0x38,0x10,0xC8,0x88,0x9F,0xF7,0x6F,0x78,0x40, +0xA0,0x80,0x97,0xFF,0x76,0x60,0x00,0x98,0xAB,0xFF,0x4F,0x28,0xC4,0xAF,0xF7,0x4F, +0x64,0x20,0xA0,0x80,0xCF,0x3F,0x71,0x40,0xC0,0x87,0xBF,0x1F,0x67,0x5C,0x28,0xD0, +0xA3,0xB7,0xEB,0x1F,0x19,0x0B,0x13,0x24,0x08,0xC8,0x98,0xAF,0xFF,0x5F,0x62,0x24, +0xD0,0xCB,0xDF,0xF5,0x1F,0x2C,0x00,0xB0,0x9D,0xD7,0x0F,0x47,0x44,0x00,0xA0,0x8F, +0xBF,0x0F,0x4B,0x4C,0x20,0xE0,0xDA,0xE7,0xDF,0xEF,0x00,0x17,0x12,0xD8,0xA8,0xB3, +0xEF,0x37,0x54,0x20,0xC0,0x8F,0xBF,0x37,0x73,0x68,0x20,0xA4,0x8B,0xAB,0xCF,0x1F, +0x5F,0x60,0x28,0xC0,0x98,0xBF,0xFF,0x35,0x24,0x14,0x0C,0xEB,0xD6,0xD3,0x0F,0x4B, +0x4A,0x00,0x90,0x80,0xBF,0x5F,0x7F,0x60,0xE0,0x80,0x80,0xB7,0x1F,0x67,0x5A,0x20, +0xC0,0x8F,0xB7,0xF7,0x24,0x20,0x04,0xF6,0xF6,0xE0,0xC4,0xBD,0xEB,0x14,0x14,0xF6, +0xE1,0xE2,0xF7,0x1B,0x24,0x00,0xD0,0xB6,0xBF,0xF6,0x27,0x3D,0x20,0xD8,0xA4,0xCF, +0x17,0x43,0x40,0x08,0xD0,0xBF,0xD3,0xF6,0x27,0x29,0x00,0xB4,0xAD,0xDF,0x1F,0x3E, +0x24,0x00,0xEB,0xE3,0xD4,0xCF,0xEF,0x1F,0x3A,0x28,0xF0,0xB4,0xBF,0xF6,0x33,0x41, +0x20,0xE0,0xB0,0xAB,0xEF,0x3F,0x5C,0x20,0xB0,0x83,0xBF,0x1F,0x57,0x30,0xD8,0xB0, +0xBF,0xDB,0xF6,0x1B,0x39,0x28,0xE0,0xA8,0xB7,0xDF,0xF7,0x17,0x2E,0x32,0x04,0xB4, +0x98,0xBF,0x1F,0x73,0x60,0x00,0x80,0x80,0xAF,0x3F,0x7F,0x70,0x20,0xA0,0x80,0x8F, +0xF7,0x7B,0x7E,0x40,0xC0,0x80,0x8B,0xD7,0x3F,0x67,0x50,0x10,0xD8,0xC5,0xCF,0xE3, +0xFF,0x1B,0x21,0x18,0x04,0xD8,0xB6,0xBF,0xFF,0x4B,0x52,0x20,0xD0,0xAA,0xBF,0xFF, +0x5F,0x64,0x20,0xB0,0x80,0xAF,0xFF,0x3F,0x28,0x00,0xE8,0xEA,0xE3,0xDF,0xEB,0x0F, +0x19,0x08,0xF6,0xEE,0xF7,0x05,0xF6,0xD4,0xC1,0xC7,0xDF,0x0F,0x29,0x27,0x1D,0x04, +0xF0,0xD0,0xC7,0xEB,0x0E,0x1A,0x10,0xF9,0xF0,0xF0,0xF7,0x07,0x00,0x00,0x00,0xFF, +0x17,0x27,0x20,0x00,0xEF,0xF9,0x00,0xF1,0xED,0xF3,0x0F,0x2B,0x20,0xF8,0xE0,0xE1, +0xF3,0x1B,0x37,0x28,0xF4,0xB0,0xAF,0xDF,0x2F,0x4F,0x30,0xF6,0xDB,0xF3,0x0F,0x17, +0x0C,0xF8,0xF5,0xF6,0xF8,0xF8,0xEE,0xF6,0x07,0x23,0x33,0x20,0xF8,0xD9,0xE5,0xFF, +0x2B,0x2E,0x10,0xE8,0xDF,0xDB,0xF6,0x1B,0x29,0x0C,0xED,0xFB,0x1B,0x1F,0x0C,0xF8, +0xF0,0xFF,0x0B,0x0F,0x0A,0xF8,0xDE,0xDF,0xFF,0x23,0x27,0x0A,0xF4,0xE0,0xF3,0x1B, +0x37,0x28,0x08,0xE9,0xE5,0xFB,0x1F,0x20,0x04,0xEA,0xEE,0x03,0x07,0x00,0xF6,0xF0, +0xEF,0x0F,0x2F,0x30,0x10,0xDC,0xCF,0xEF,0x1F,0x2C,0x14,0xF6,0xE6,0xEF,0x0B,0x1F, +0x20,0x09,0xF3,0xE9,0xF6,0x12,0x1B,0x11,0x00,0x00,0xFD,0x05,0x07,0x04,0x00,0xF7, +0xFD,0x03,0x04,0x00,0xF9,0xF0,0xEC,0xF5,0x07,0x1F,0x20,0x04,0xE0,0xD5,0xEB,0x0B, +0x0E,0xFA,0xE4,0xEB,0x0B,0x1F,0x16,0x00,0xE8,0xE3,0xEF,0x07,0x1B,0x14,0x00,0xE9, +0xED,0x03,0x13,0x0F,0x05,0x00,0xFA,0xF3,0xF3,0xF9,0x00,0x03,0x01,0x00,0x00,0x01, +0xFF,0xFB,0xF9,0xFF,0x03,0x05,0x01,0xF9,0xEF,0xEB,0xF5,0x02,0x0E,0x0F,0x00,0xE8, +0xE1,0xEF,0xFF,0x05,0xF8,0xE4,0xDF,0xEB,0xFB,0x01,0xF7,0xE7,0xDC,0xDD,0xE5,0xEF, +0xF9,0x00,0xF3,0xEB,0xE9,0xEC,0xE4,0xDA,0xD5,0xDF,0xF5,0x03,0xFA,0xE6,0xE0,0xE6, +0xEB,0xE7,0xE5,0xF0,0xF7,0xF7,0xEF,0xED,0xF6,0xFF,0xFB,0xF4,0xED,0xEF,0xF3,0xF4, +0xF4,0xF6,0xF6,0xF8,0xF6,0xF0,0xEF,0xF5,0x00,0x00,0x01,0xFF,0xF8,0xF0,0xE9,0xEB, +0xF6,0x01,0x09,0x06,0xF9,0xF0,0xED,0xF5,0xF6,0xFB,0x00,0x04,0x05,0x02,0x00,0x00, +0xF9,0xF5,0xFB,0x05,0x09,0x02,0xF8,0xF8,0x06,0x0C,0x05,0xFA,0xF9,0xFF,0xFD,0xF7, +0xF9,0x02,0x05,0x01,0xF9,0xF9,0xFD,0xFF,0x00,0x00,0x03,0x01,0xFB,0xF8,0xF9,0xFB, +0xF7,0xF9,0x00,0x03,0x07,0x01,0xF8,0xF6,0xF6,0xFD,0x01,0x02,0x00,0xFB,0xF8,0xFB, +0x00,0xFD,0xF6,0xF6,0x00,0x07,0x07,0x02,0x00,0xF8,0xF6,0xFB,0x01,0x06,0x05,0xFF, +0xFB,0x00,0xFE,0xFB,0xFB,0xF9,0xFC,0xFF,0xFD,0x00,0x00,0x00,0xFF,0xFD,0x01,0x05, +0x03,0xFD,0xF8,0xF8,0xF7,0xF9,0xF9,0x00,0xFB,0xF7,0x00,0x00,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0x3F,0x37,0x2F,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0x37,0x2F,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0x2F,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xA0,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xA0,0xA8,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xA0,0xA8,0xB0,0x37,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x90,0x98, +0xA0,0xA8,0xB0,0xB8,0xC0,0xC8,0xD0,0xD8,0xE0,0xE8,0xF0,0xF8,0x00,0x08,0x10,0x18, +0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7F,0x80,0x80,0xA0,0xB0, +0xC0,0xD0,0xE0,0xF0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x45,0x45,0x79,0x7D, +0x7A,0x77,0x70,0x66,0x61,0x58,0x53,0x4D,0x2C,0x20,0x18,0x12,0x04,0xDB,0xD3,0xCD, +0xC6,0xBC,0xB5,0xAE,0xA8,0xA3,0x9D,0x99,0x93,0x8E,0x8B,0x8A,0x45,0x45,0x79,0x7D, +0x7A,0x77,0x70,0x66,0x5B,0x4B,0x43,0x37,0x2C,0x20,0x18,0x12,0x04,0xF8,0xE8,0xDB, +0xCF,0xC6,0xBE,0xB0,0xA8,0xA4,0x9E,0x9A,0x95,0x94,0x8D,0x83,0x00,0x00,0x40,0x60, +0x7F,0x60,0x40,0x20,0x00,0xE0,0xC0,0xA0,0x80,0xA0,0xC0,0xE0,0x00,0x00,0x40,0x60, +0x7F,0x60,0x40,0x20,0x00,0xE0,0xC0,0xA0,0x80,0xA0,0xC0,0xE0,0x80,0x80,0x90,0x98, +0xA0,0xA8,0xB0,0xB8,0xC0,0xC8,0xD0,0xD8,0xE0,0xE8,0xF0,0xF8,0x00,0x08,0x10,0x18, +0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7F,0x80,0x80,0xA0,0xB0, +0xC0,0xD0,0xE0,0xF0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,}; diff --git a/MCUME_esp32/espboot/main/main.c b/MCUME_esp32/espboot/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espboot/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espboot/main/mcume.h b/MCUME_esp32/espboot/main/mcume.h new file mode 100644 index 0000000..2c13fcd --- /dev/null +++ b/MCUME_esp32/espboot/main/mcume.h @@ -0,0 +1,87 @@ +const uint16_t logo[] = { +0x00fc,0x0056,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x2120,0x4a01,0x5242,0x5a82,0x62c3,0x4201,0x0120,0x0140,0x0160,0x4a42,0x8be4,0x9404,0x9405,0x9405,0x6b23,0x3201,0x3201,0x5ae3,0x83c4,0x3a21,0x52a2,0x83c4,0x3a41,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x0200,0x0200,0x0200,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a20,0x1221,0x5305,0x73c8,0x6b67,0x2a62,0x1a21,0x6346,0x8c29,0x5305,0x1220,0x0a20,0x0a20,0x0a20,0x0a20,0x0a20,0x1220,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x1a21,0x0a00,0x0a00,0x0200,0x0200,0x0200,0x0200,0x0a00,0x3262,0x8408,0x52e4,0x0a00,0x0200,0x0200,0x0a00,0x0a00,0x0200,0x0200,0x0a00,0x0a00,0x0200,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x0200,0x0200,0x0200,0x1a01,0x6345,0x8c27,0x8407,0x4ac3,0x11e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x2201,0x7ba5,0x9486,0x9466,0x6b84,0x2200,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x2a21,0x6b44,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x5b03,0x19c0,0x5b03,0x8c05,0x5ac3,0x09a0,0x01a0,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0160,0x0160,0x0140,0x0140,0x0120,0x0100,0x0100,0x00e0,0x00c0,0x00a0,0x0080,0x0060,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x08e0,0x5262,0x7b63,0x8be4,0x9c45,0x9c65,0x5b02,0x0220,0x0240,0x1a60,0x94a5,0xe668,0xeea8,0xf6a9,0xeec9,0xd648,0xbdc7,0xbdc7,0xce28,0xcde8,0x5ba3,0x9d06,0xce08,0x5383,0x0ae0,0x0ae0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x1300,0x1300,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x0b20,0x0b20,0x1320,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1360,0x2361,0x3382,0x3382,0x2361,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1380,0x1380,0x1381,0x1381,0x1381,0x1381,0x1b81,0x33a2,0x3ba3,0x2ba2,0x1b81,0x13a1,0x13a1,0x13a1,0x1381,0x1ba1,0x1b81,0x1b81,0x2381,0x2381,0x2381,0x2381,0x23a1,0x2381,0x1b81,0x13a1,0x23a1,0x5c46,0x7cc8,0x6c87,0x43e4,0x8d09,0xce6e,0xb5ec,0x5c26,0x1ba1,0x13a1,0x13a1,0x13a1,0x1381,0x1381,0x1b81,0x33a2,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba2,0x33a3,0x2382,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x5404,0xdeae,0x9529,0x1b81,0x1381,0x1381,0x1380,0x1380,0x1380,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1380,0x1360,0x2381,0x6c46,0x9508,0x9507,0x5be4,0x1b40,0x1340,0x1340,0x0b40,0x0b40,0x0b40,0x0b40,0x0b40,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x1320,0x5be3,0xdeaa,0xd669,0xce29,0xde89,0xa547,0x8cc5,0x8cc5,0x8cc5,0x8cc5,0x8cc5,0x94e6,0xad67,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xad26,0x9ce6,0xce28,0xc5e8,0x63c3,0x12e0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x02a0,0x0280,0x0280,0x0280,0x0260,0x0240,0x0220,0x0200,0x01e0,0x01a0,0x0180,0x0140,0x0120,0x00e0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x2120,0x62c2,0x7b63,0x8bc4,0x9c45,0x8c04,0x2a20,0x0220,0x0240,0x3ac1,0xc587,0xe688,0xeea9,0xeea9,0xde48,0x73e4,0x5ba3,0x5ba3,0x5ba3,0x4b62,0x4b62,0xc5e7,0xad47,0x2b01,0x0ae0,0x1ae0,0x7c44,0x94c5,0x94c5,0x94c5,0x94c5,0x94c5,0x94c5,0x94c6,0x94e6,0x7c44,0x2b21,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x0b20,0x0b20,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1360,0x43c3,0x9d48,0xc62b,0xc64b,0x9d28,0x43c3,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x3bc3,0x84c8,0xbe0c,0xce4d,0xb5cb,0x5c46,0x1ba1,0x13a1,0x13a1,0x3be3,0x84e8,0x9529,0x9529,0x9529,0x9529,0x9549,0x9549,0x9549,0x9529,0x6466,0x2ba2,0x23a1,0x23a1,0x2ba2,0x5c46,0xb5cc,0xd68e,0x952a,0x3be4,0x43e4,0x4c25,0x4c24,0x4c24,0x4c24,0x4c24,0x4c25,0x5c45,0x8d08,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x6466,0x1ba1,0x1381,0x1381,0x1381,0x1381,0x1381,0x33a3,0x8ce8,0xe6ee,0xce4c,0x7ca7,0x33a2,0x1380,0x1380,0x1361,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1b60,0x5c25,0xa568,0xb5c9,0x9507,0x4be4,0x1340,0x1340,0x1340,0x1340,0x0b40,0x0b40,0x1340,0x1340,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x3b82,0x7465,0x9d06,0xe6ca,0xde8a,0xc609,0xeeea,0xce08,0xb587,0xb587,0xb587,0xb587,0xb587,0xb587,0xbd87,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c7,0xc5c7,0xc5c7,0xc5c7,0xc5c7,0xbd87,0xa526,0x4b62,0x12e0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x02a0,0x02a0,0x0280,0x0280,0x0260,0x0240,0x0220,0x0200,0x01e0,0x01c0,0x0180,0x0140,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x39c1,0x62c2,0x7b43,0x8bc4,0x9425,0x6b23,0x1a00,0x1220,0x0a40,0x73c4,0xd5e8,0xe668,0xee89,0xeea9,0xb567,0x2ae1,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x6be3,0xd648,0x8485,0x0ae0,0x0ae0,0x4b62,0xde69,0xff0a,0xff0a,0xff2a,0xff2a,0xff2a,0xff2a,0xff2a,0xff2a,0xbdc8,0x3b62,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x1320,0x2341,0x5be3,0xa547,0xbde8,0xbde8,0xbde8,0xbde8,0xbde9,0xbde9,0xad88,0x5be4,0x1b40,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1360,0x1360,0x9d48,0xeeed,0xb58a,0xce4b,0xef0d,0xc64b,0xbe2b,0xbe2b,0xbe2b,0xc62b,0xc62b,0xc62b,0xbe2c,0xc62c,0xc62c,0xbe2c,0xbe2c,0xc62c,0xc62c,0xc62c,0xc62c,0xc62c,0xc62c,0xc62c,0xbe2c,0xbe2c,0xc62d,0xe6ee,0xd68d,0xadab,0xef0f,0xadab,0x23a1,0x13a1,0x13a1,0x6c86,0xe6ee,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xdeae,0xc62d,0xc62d,0xc62d,0xc62d,0xce6e,0xbe0d,0x6c67,0x3bc3,0x84e8,0xc64d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xce4d,0xf730,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xf750,0xadcb,0x23a2,0x13a1,0x1ba1,0x1ba1,0x1381,0x1381,0x7cc8,0xe6ce,0xce4d,0xce4d,0xe6ee,0xbe0c,0xadcb,0xadcb,0xadcb,0xadcb,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xd68c,0xe6ed,0xbdca,0xe6cc,0xbdea,0x3382,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b40,0x2361,0x9507,0xe6ca,0xd669,0xe6ca,0xeeeb,0xd669,0xc608,0x9d06,0x8ca5,0x8ca5,0x8ca5,0x8ca5,0x8ca5,0x8ca5,0xa506,0xd628,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde68,0xde68,0x9d06,0x3321,0x0ae0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x02a0,0x0280,0x0280,0x0260,0x0a40,0x0220,0x0200,0x01e0,0x01c0,0x0180,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x2940,0x41c1,0x4a21,0x5282,0x6303,0x6b43,0x83e4,0x83e4,0x4ae2,0x5b22,0x8c24,0x9ca5,0xd608,0xbd67,0x63a3,0x12c0,0x0ac0,0x0ac0,0x0ac0,0x22e0,0xa506,0xd628,0x5382,0x0ae0,0x0ae0,0x6be3,0xce08,0xde69,0xde69,0xde69,0xde69,0xde89,0xde89,0xde89,0xde89,0x8ca5,0x1b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x2320,0x63e4,0xa567,0xce4a,0xb589,0x84a6,0x7c85,0x7c85,0x7c85,0x7c85,0x8cc6,0xc62a,0xce4a,0x7c86,0x2b61,0x1340,0x1340,0x1341,0x1360,0x1360,0x1360,0x1360,0x1360,0x8ce7,0xe6ac,0xde8c,0xdeac,0xbdeb,0x7c87,0x6c46,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c67,0x6c67,0x6c67,0x6c67,0x7c87,0xce4d,0xdece,0xd6ae,0xdeae,0x84c8,0x1ba1,0x13a1,0x13a1,0x6c66,0xce6d,0xe6ce,0xe6ce,0xe6ce,0xe6ce,0xe6ce,0xe6ce,0xdece,0xdece,0xad8b,0x7487,0x7487,0x7487,0x7487,0x6c67,0x43e4,0x5425,0xadab,0xd68e,0x9d6b,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x7ca7,0xce4d,0xdece,0xe6ce,0xe6ce,0xdecf,0xdecf,0xdece,0xe6ce,0xdece,0xa58b,0x2ba2,0x5425,0x8d09,0x9529,0x7487,0x33c3,0x7487,0xd68e,0xd68e,0xd66d,0xe6ef,0xad8b,0x9509,0x9509,0x9509,0x9509,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0xbdeb,0xe6cd,0xc62b,0xe6cc,0xce2b,0x3b82,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x0b20,0x0b20,0x0b40,0x0b40,0x0b40,0x2361,0x9507,0xe6eb,0xbdc8,0xce49,0xeeea,0xc5e8,0xbda8,0xbda8,0xbda8,0xbda7,0xbda7,0xb5a7,0xbda7,0xb5a7,0xbda7,0xe6a9,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6e9,0xf6c9,0xf6e9,0xce08,0x4b62,0x0ae0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x02a0,0x0280,0x0280,0x0260,0x0240,0x0220,0x0200,0x01e0,0x01c0,0x01a0,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2120,0x3160,0x39c1,0x4a21,0x5282,0x62e2,0x7ba4,0x8c05,0x8c04,0xb526,0xace6,0x9445,0x9485,0xad06,0xcde8,0x7c04,0x12a0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x3b21,0xcde8,0xb567,0x22e0,0x0ae0,0x0ae0,0x1ae0,0x2b01,0x3301,0x3301,0x3301,0x3321,0x3321,0x3321,0x3321,0x3321,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x1320,0x5be3,0xce49,0xbdc9,0x6c25,0x2b41,0x1320,0x1b21,0x1b41,0x1b41,0x1340,0x1b40,0x53c3,0xb5c9,0xd66b,0x6c45,0x1340,0x1341,0x1360,0x1b61,0x1b61,0x1360,0x1360,0x1360,0x2b81,0x6c45,0x8ce8,0x7467,0x3ba3,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x1b81,0x43e4,0x7cc8,0x84e9,0x5c26,0x23a2,0x13a1,0x13a1,0x13a1,0x23a1,0x33a2,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x23a2,0x1ba1,0x1ba1,0x1ba1,0x1ba1,0x23a2,0x74a8,0xc64d,0xc64d,0x7ca8,0x2ba2,0x1ba1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1ba1,0x33a2,0x3bc3,0x3bc3,0x3bc3,0x3bc3,0x3bc3,0x3bc3,0x33c3,0x33c3,0x2ba2,0x4c04,0xc64d,0xe6ef,0xd66e,0xdecf,0x9529,0x2bc2,0x6c67,0xa56a,0xad8b,0x7cc8,0x33a3,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x3ba3,0x84c8,0xad69,0x9d48,0x5c05,0x1b60,0x1360,0x1360,0x1360,0x1360,0x1360,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x3b83,0x9507,0xc5e9,0xc608,0x9d06,0x4b82,0x6404,0x94e6,0x94e6,0x94e6,0x94e6,0x94c6,0x94c6,0x94c5,0x94c6,0xb587,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xbda7,0x94c5,0x8ca5,0x8ca5,0x8ca5,0x8c85,0x8c85,0x8c85,0x8c85,0x8c85,0x8c85,0x8c65,0x8c64,0x8c64,0x8c44,0x8444,0x8424,0x8404,0x7bc4,0x73a3,0x6b63,0x6322,0x5ae2,0x5282,0x4a41,0x41e1,0x3180,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2100,0x2940,0x3180,0x39e1,0x5282,0x83c4,0x8c04,0x8c25,0xa4c6,0x8c04,0x8404,0x8c24,0x9445,0x8424,0x3b01,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x7404,0xde68,0x8464,0x12e0,0x0ae0,0x2301,0x4b82,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x53a3,0x4362,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1320,0x1b20,0x5bc3,0xa547,0xe6ca,0x9506,0x2b41,0x1b21,0x53c3,0x8cc6,0x9d47,0x7c85,0x3382,0x1340,0x2361,0x94e7,0xde8b,0x6425,0x1361,0x3382,0x6c45,0x9528,0x9528,0x5c25,0x2381,0x1360,0x1360,0x1360,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1381,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x3bc3,0x5c25,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x5c46,0x3bc3,0x1381,0x1381,0x1b81,0x43e4,0x9d4a,0xd68e,0xadab,0x5425,0x1ba1,0x13a1,0x13a1,0x1381,0x1381,0x1381,0x1381,0x1381,0x23a2,0x5405,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x5405,0x5425,0xd68e,0xdeae,0xb5ec,0xef0f,0xbe0c,0x3bc3,0x13a1,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1380,0x1b81,0x43c3,0x6445,0x6445,0x4be4,0x1b81,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1340,0x2b82,0x5c04,0x6c45,0x5c04,0x2b61,0x1340,0x0b40,0x0b40,0x0b40,0x1320,0x3361,0x3361,0x3361,0x84a6,0xd669,0xc608,0xb587,0xb587,0xb587,0xb587,0xb587,0xb587,0xb587,0xbd87,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c7,0xc5c7,0xc5c7,0xc5c7,0xc5a7,0xb567,0xb566,0xb546,0xb546,0xb546,0xb546,0xb546,0xb546,0xb526,0xb526,0xb526,0xb526,0xad06,0xace5,0xacc5,0xa4a5,0x9c65,0x9444,0x8be4,0x83a4,0x7b63,0x6b03,0x5aa2,0x5242,0x41e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x31c1,0x6303,0x7bc4,0x83e4,0x6b63,0x3281,0x1a40,0x1a60,0x1a80,0x1280,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x1ac0,0xa526,0xd628,0x4342,0x0ae0,0x0ae0,0x7424,0xd648,0xe689,0xe689,0xe689,0xe689,0xe6a9,0xe6a9,0xe6a9,0xde89,0x9d26,0x1300,0x0b00,0x0b00,0x0b00,0x1320,0x1320,0x7445,0xd669,0xd66a,0xde8a,0xe6ca,0x7c65,0x6404,0xce49,0xde8a,0xd66a,0xe6eb,0x8cc6,0x2361,0x3382,0xb5a9,0xce4a,0x3ba2,0x2b81,0x9508,0xdecc,0xce4c,0xdecc,0xce4b,0x5c04,0x1360,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x13a1,0x13a1,0x13a1,0x13a1,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x8d09,0xe6ce,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef0f,0xbe0c,0xa56a,0xa56a,0xa56a,0xc62d,0xce6e,0x8ce9,0x33a3,0x1b81,0x1b81,0x43e4,0x84e9,0x9529,0x952a,0x952a,0x952a,0x952a,0x9d6a,0xd68e,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef0f,0xce4d,0x33c3,0x7487,0xb5ec,0xc64d,0xce4d,0xce8e,0xa5ab,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9528,0x9d49,0xc62c,0xdecd,0xdead,0xce6c,0xa569,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9527,0xb5a9,0xe6cb,0xde8b,0xd68b,0xa568,0x3382,0x1340,0x1340,0x0b20,0x0b20,0x1320,0x4382,0xa547,0xde8a,0xad67,0x4b82,0x2b41,0x2b21,0x2b21,0x2b21,0x2b21,0x2b21,0x2b21,0x5ba3,0xce28,0xe6c9,0xeec9,0xeea9,0xeea9,0xeea9,0xeea9,0xe6a9,0xe6a9,0xd628,0x9ce6,0x94e6,0x94e6,0x94e6,0x94e5,0x94c5,0x94c5,0x94c5,0x94c5,0x94c5,0x94a5,0x94a5,0x9485,0x8c85,0x8c64,0x8444,0x8404,0x7bc4,0x7383,0x6b43,0x62e2,0x52a2,0x4a42,0x4201,0x31a1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00a0,0x00e0,0x1940,0x62e3,0x83c4,0x9425,0xa485,0x9c85,0x42a2,0x0a20,0x0240,0x0260,0x0280,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x4342,0xcde8,0xad47,0x2b01,0x0ae0,0x2300,0x9ce6,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf70a,0xf70a,0xeec9,0x8ca5,0x1300,0x0b00,0x0b20,0x1320,0x1320,0x1320,0x9d27,0xeeea,0xc609,0xce49,0xe6ab,0x7425,0x8cc6,0xe6cb,0xce4a,0xc62a,0xe6cb,0x84a6,0x1b61,0x3b82,0xce4a,0xb5c9,0x1b61,0x3ba2,0xb5aa,0xeeed,0xbdea,0xdeac,0xce4b,0x5405,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x1b81,0x1b81,0x1b81,0x9529,0xef0f,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf730,0xc62d,0xa58b,0xa58b,0xa58b,0x9d4a,0x6446,0x2382,0x1b81,0x23a2,0x6c67,0xbe2d,0xce6e,0xb5cc,0xadab,0xadab,0xadab,0xadab,0xb5cc,0xdece,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xd68e,0x3bc3,0x1ba1,0x23a2,0x33c2,0x3bc3,0x84c8,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadaa,0xadaa,0xadaa,0xadaa,0xbdcb,0xeeee,0xce4c,0xa569,0xef0e,0xd66c,0xad8a,0xad8a,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xd64b,0xeeeb,0xa548,0xce4a,0xe6cb,0x5be4,0x1340,0x1320,0x0b20,0x1320,0x53c3,0xbde9,0xd66a,0xa527,0x8485,0x7444,0x4b82,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x4362,0xbdc8,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6e9,0xeec9,0xbdc7,0xad46,0xad46,0xad46,0xad26,0xa526,0xa526,0xa526,0xa526,0xa506,0xa506,0xa506,0xa4e5,0x9cc5,0x9ca5,0x9485,0x8c45,0x8424,0x7bc4,0x7383,0x6b23,0x5ac2,0x5282,0x4a21,0x39c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18e0,0x2940,0x3181,0x39c1,0x5262,0x7343,0x8be4,0x9c45,0xaca6,0x9445,0x2a40,0x0220,0x0240,0x0260,0x0280,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x7c44,0xd648,0x7c24,0x12e0,0x0ae0,0x2300,0x6be4,0x94c5,0x94c6,0x94c6,0x94c6,0x94c6,0x94e6,0x94e6,0x94e6,0x8ca5,0x4362,0x0b00,0x0b00,0x1320,0x1320,0x1320,0x1320,0x4ba3,0xad67,0xce09,0xbdc9,0x7466,0x2361,0x4383,0xa548,0xc60a,0xbdea,0x84a7,0x3382,0x1361,0x53e4,0xdeac,0x9d28,0x1b61,0x1b61,0x6425,0xb5ca,0xce2b,0xb5aa,0x6446,0x1b81,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x1b81,0x1b81,0x1381,0x1381,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1381,0x5405,0x84c8,0x84e9,0x84e9,0x84e9,0x8ce9,0x8ce9,0x8ce9,0x84e9,0x84c9,0x5405,0x2ba2,0x2ba2,0x2ba2,0x23a2,0x1b81,0x1b81,0x43e4,0x9d4a,0xce8e,0xbded,0x5c26,0x33a3,0x33a3,0x33a3,0x33a3,0x33a3,0x3bc3,0x7487,0x84e9,0x8ce9,0x8ce9,0x8ce9,0x8ce9,0x8ce9,0x8ce9,0x84e9,0x74a8,0x2ba2,0x1381,0x1381,0x1381,0x13a1,0x1ba1,0x2ba2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x43c3,0x9529,0xd68d,0xef2e,0xd68c,0x7ca7,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b62,0x2b62,0x2b62,0x5c05,0xbdea,0xd68b,0xde8a,0xb5a9,0x4382,0x1b40,0x1b41,0x2341,0x7445,0xce29,0xce49,0x94e7,0xd649,0xe6ca,0xde8a,0xce49,0x7445,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x1b00,0x5bc3,0x8485,0x8485,0x8485,0x8485,0x8485,0x8485,0x8485,0x8465,0x8444,0x5383,0x2b00,0x2b00,0x2b00,0x2b00,0x2ae0,0x2ae0,0x2ae0,0x2ae0,0x22e0,0x22e0,0x22c0,0x22c0,0x22a0,0x22a0,0x2280,0x2260,0x1a20,0x1a00,0x19c0,0x11a0,0x1160,0x0940,0x0900,0x08c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2120,0x2960,0x39c1,0x5aa2,0x7b64,0x8be4,0x9c45,0xa4a5,0x6b43,0x1220,0x0220,0x0240,0x0260,0x0280,0x0a80,0x0aa0,0x0aa0,0x22e0,0x5ba3,0xbda7,0xc5e8,0x5382,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x0b00,0x0b00,0x0b00,0x1b20,0x53a3,0x63e3,0x63e3,0x63e3,0x3b62,0x2b41,0x53c3,0x6404,0x6c04,0x6404,0x3382,0x1340,0x2b62,0x5be4,0x6c24,0x6404,0x3382,0x1341,0x3b82,0x8ce7,0xe6cc,0x8ce7,0x33a2,0x1361,0x3ba3,0x6425,0x6c25,0x5c04,0x2381,0x1b61,0x43c3,0x6425,0x6425,0x5404,0x1b81,0x1b61,0x3ba3,0x6425,0x6425,0x5c05,0x2381,0x1b61,0x3ba3,0x6425,0x6445,0x5c25,0x2382,0x1381,0x2ba2,0x6425,0x6446,0x6445,0x33a2,0x1b81,0x2ba2,0x5c25,0x6446,0x6446,0x33a3,0x1b81,0x43c3,0x6446,0x6446,0x5c25,0x2ba2,0x1381,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b82,0x1b81,0x1b81,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x23a2,0x6c67,0xbe2d,0xce6e,0x8d0a,0x3bc4,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x23a2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x1b81,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x2ba2,0x43c4,0x43e4,0x7466,0xdecd,0x9d49,0x2361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1340,0x1340,0x1340,0x1341,0x43a3,0xa548,0xd66a,0xce2a,0xc629,0xc629,0xc609,0xc629,0xd68a,0xbdc9,0x63e4,0x6c24,0xde8a,0xd649,0xad88,0xeeca,0xb588,0x2b41,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1300,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1ae0,0x1ae0,0x12e0,0x0ae0,0x0ae0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0260,0x0240,0x0220,0x0200,0x01c0,0x01a0,0x0180,0x0140,0x0120,0x00e0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x1920,0x5a82,0x7343,0x83a4,0x9405,0x8c05,0x4281,0x0200,0x0220,0x0240,0x0260,0x0280,0x0a80,0x12c0,0x5362,0x9ce6,0xc5e8,0xad67,0x5ba4,0x1ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x0b00,0x0b00,0x0b00,0x5bc3,0xd669,0xf70a,0xf70a,0xef0a,0x8485,0x7444,0xde89,0xf72b,0xf70b,0xeecb,0x7c65,0x1340,0x84a6,0xe6cb,0xf72c,0xe6cb,0x7c86,0x1340,0x94e7,0xeeec,0xff4d,0xdeac,0x7466,0x2b81,0xa568,0xf72d,0xf72d,0xd66c,0x4bc3,0x3ba2,0xb5ca,0xf72e,0xf72e,0xce4c,0x3382,0x2b82,0x9d49,0xf72e,0xf72e,0xdead,0x43c3,0x2382,0x9528,0xef2e,0xf72f,0xdecd,0x4be4,0x1b81,0x6c66,0xef0e,0xf72f,0xef0f,0x7466,0x2381,0x7487,0xe6ef,0xf750,0xef0f,0x7467,0x1b82,0x9d4a,0xef0f,0xf750,0xdeae,0x6446,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1381,0x1381,0x1b81,0x1b82,0x43c4,0x952a,0xd68e,0xbded,0x6446,0x3bc4,0x4c05,0x5405,0x5405,0x5405,0x5405,0x5405,0x5405,0x5c25,0x8d09,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xa56a,0x4c05,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1381,0x1381,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x43c4,0xad8a,0xd68d,0xd66d,0xb5cb,0xdead,0xadaa,0x2361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1341,0x1361,0x1361,0x1361,0x1341,0x1340,0x1341,0x4bc3,0xad88,0xde8b,0xad68,0x7c86,0x7c65,0x7c65,0x7c65,0x7c65,0x7445,0x4382,0x1320,0x4382,0xbde9,0xeeea,0xde8a,0xd649,0x7c45,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1b00,0x7444,0x9d06,0x9d06,0x9d06,0x9ce6,0x9ce6,0x9ce6,0x9ce6,0x9ce6,0x94c5,0x6c04,0x5382,0x3b42,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0260,0x0240,0x0220,0x0200,0x01c0,0x01a0,0x0160,0x0140,0x0100,0x00e0,0x10e0,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x08e0,0x31a0,0x39e1,0x4221,0x4a82,0x4261,0x1a00,0x0200,0x0220,0x0240,0x0260,0x1280,0x4302,0x8ca5,0xbdc8,0xb567,0x7405,0x22e1,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x0b00,0x0b00,0x0b00,0x8ca5,0xeeca,0xff2a,0xff2b,0xe6ca,0x6c04,0x94c6,0xf6ea,0xff2b,0xff2b,0xde6a,0x6404,0x1321,0xa527,0xef0b,0xff2c,0xde6a,0x6404,0x2341,0xad68,0xff4d,0xff4d,0xd66b,0x53e4,0x43a3,0xc60a,0xff4e,0xff4e,0xce4b,0x2b62,0x4bc3,0xce4c,0xff4e,0xff4e,0xbdeb,0x2b82,0x33a3,0xbdeb,0xff4e,0xff4f,0xd66c,0x3ba3,0x2b82,0xadaa,0xf72f,0xf72f,0xd66d,0x4bc4,0x1b61,0x84a7,0xef0f,0xf72f,0xeeee,0x6426,0x1b62,0x8ce8,0xef0f,0xff50,0xeeef,0x6c46,0x1b62,0xa58a,0xf72f,0xff50,0xde8e,0x6446,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x2382,0x6467,0xbdec,0xce6e,0x950a,0x43c4,0x6446,0xb5ec,0xce4e,0xce4d,0xce4d,0xce4d,0xce4d,0xce4d,0xce4d,0xce6d,0xe6ef,0xff71,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xef0f,0x7ca8,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b61,0x1b61,0x1b61,0x1b61,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x7ca7,0xe6ce,0xc60c,0xb5ab,0xeeee,0xf72e,0xc60b,0x2b62,0x1361,0x1361,0x1361,0x1361,0x1361,0x1341,0x1341,0x1341,0x1341,0x1341,0x1b41,0x6425,0xbdea,0xd64b,0x84a6,0x2b42,0x1321,0x1321,0x1320,0x1320,0x1320,0x1320,0x1320,0x4382,0xa567,0xde8a,0x9d07,0x5ba3,0x3b41,0x1300,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1b00,0xad67,0xf70a,0xf70a,0xf70a,0xf70a,0xf70a,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xd648,0xce08,0xb547,0x3301,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0a60,0x0260,0x0240,0x0220,0x0a00,0x09c0,0x09a0,0x0160,0x0140,0x0100,0x00e0,0x2140,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0160,0x01a0,0x01c0,0x01e0,0x0220,0x0240,0x0a60,0x32c1,0x7c24,0xb587,0xb588,0x7c25,0x3302,0x12c0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x2300,0xad47,0xff2a,0xff2a,0xff2b,0xce09,0x5bc3,0xad67,0xf72b,0xff2b,0xf72b,0xc5c9,0x4363,0x3342,0xb5a8,0xf70b,0xf70b,0xc5e9,0x4362,0x4383,0xc5e9,0xff4d,0xff2d,0xc60a,0x2b62,0x53e4,0xde8c,0xff4e,0xff2d,0xb5aa,0x2362,0x53e4,0xe6cd,0xff4e,0xff4e,0xa549,0x2b82,0x3ba3,0xce4c,0xff2e,0xf72f,0xbdeb,0x33a3,0x3383,0xbdeb,0xf70f,0xf70f,0xc60c,0x3ba3,0x2362,0x9509,0xeeee,0xf70f,0xde8e,0x53e5,0x1b62,0x9529,0xeeef,0xf72f,0xdeae,0x6426,0x1b62,0xb5ab,0xf72f,0xff50,0xd66d,0x6c66,0x43c4,0x43e4,0x43c4,0x43c4,0x43e4,0x43e4,0x43e4,0x4be4,0x4be4,0x43e4,0x43e4,0x43e4,0x5405,0x952a,0xce6e,0xbdec,0x6426,0x43c4,0x8d09,0xce6e,0xbded,0x7467,0x5c26,0x5c26,0x5c26,0x5c26,0x5c26,0x5c26,0x6446,0xadab,0xdecf,0xe6cf,0xe6cf,0xe6cf,0xe6cf,0xe6cf,0xe6cf,0xdecf,0xd68e,0x7ca7,0x1b82,0x1b82,0x1381,0x1381,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x53e5,0xbe0c,0xdeae,0xdeae,0xe6ce,0xd68d,0xd66c,0x43a3,0x1361,0x1361,0x1361,0x1361,0x1361,0x1341,0x1341,0x1341,0x1341,0x2362,0x7c86,0xce2b,0xc60a,0x6c05,0x1b21,0x0b21,0x0b00,0x0b00,0x1300,0x1300,0x1320,0x1320,0x4ba3,0xad88,0xd68a,0x8cc6,0x2b41,0x1300,0x1300,0x1300,0x0b00,0x0b00,0x0b00,0x0b00,0x0ae0,0x0ae0,0x0ae0,0x7c45,0xce08,0xd649,0xd649,0xd648,0xd648,0xd628,0xd628,0xd628,0xd628,0xb567,0x9cc6,0xd628,0x6be3,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0a80,0x0a60,0x0240,0x0a20,0x2240,0x52e2,0x6323,0x52c2,0x31e1,0x0940,0x0100,0x00c0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x00e0,0x0100,0x0140,0x0160,0x01a0,0x01c0,0x01e0,0x0a20,0x2260,0x6ba3,0xad26,0xb567,0x8465,0x3b02,0x12a0,0x0aa0,0x0aa0,0x12c1,0x2ae4,0x22e3,0x12c1,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x4b82,0xc5e8,0xff2a,0xff2a,0xf72a,0xad47,0x53a3,0xce29,0xf70b,0xf70b,0xeecd,0xbdb1,0x8cb0,0x744b,0xce0a,0xeecb,0xeecb,0xad48,0x1b01,0x5bc4,0xd66a,0xf72c,0xf70c,0xad69,0x1b41,0x6425,0xeeed,0xff4e,0xf72d,0x9508,0x2361,0x6c46,0xef0e,0xff4e,0xf72e,0x84a7,0x2361,0x4bc4,0xdead,0xf72f,0xf72e,0xa549,0x2b82,0x3383,0xce2c,0xeeee,0xeeee,0xad8a,0x43a3,0x3382,0xa54a,0xe6ae,0xeece,0xce2c,0x53c4,0x1b42,0xa54a,0xe6cf,0xeeef,0xd64d,0x5be5,0x2362,0xb5cb,0xf72f,0xf730,0xe6ef,0xc64d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xce4e,0x950a,0x43c4,0x5c26,0xb5cc,0xce6e,0x9d2a,0x43c4,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x2ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x33a3,0x2382,0x1b82,0x2b83,0x3383,0x3383,0x2382,0x1361,0x1b61,0x2b82,0x2b83,0x2b83,0x2382,0x1b61,0x1361,0x2362,0x2b82,0x2b63,0x2b64,0x2363,0x1361,0x2362,0x2b62,0x2b62,0x4bc4,0x9d2a,0xe6ce,0x9d29,0x9d29,0xd68d,0x6c25,0x1b61,0x1361,0x2361,0x2b62,0x3362,0x2b62,0x1b41,0x1341,0x2341,0x7446,0xd66c,0xbdac,0x846d,0x6bed,0x4348,0x2302,0x2b21,0x2301,0x1301,0x0b00,0x1301,0x53a3,0xb5a8,0xd66a,0x8486,0x2321,0x1b01,0x2b21,0x2b21,0x2b21,0x1b02,0x1b02,0x1b02,0x22e2,0x22e2,0x22e2,0x1ae2,0x22e2,0x3302,0x3b02,0x3b02,0x3ae2,0x32e2,0x32e2,0x32e2,0x3ae2,0x32e2,0x32c2,0x5b84,0xc5e8,0x9486,0x1aa2,0x12a2,0x12a2,0x12a2,0x0a81,0x0a80,0x0260,0x0260,0x0260,0x0240,0x0220,0x5b22,0xa4a5,0x9445,0x83c4,0x7364,0x5262,0x39c1,0x3180,0x2940,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x10a0,0x18e0,0x08c0,0x00e0,0x0100,0x0140,0x1180,0x3a41,0x4aa2,0x52e2,0x6343,0x9485,0xad47,0x8c45,0x4b22,0x12a0,0x0aa0,0x0aa0,0x12a1,0x3b07,0x6bed,0x9cf3,0x94d2,0x5b8b,0x22c4,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x6be4,0xe689,0xff0a,0xff0a,0xeeca,0x8ca6,0x63e4,0xe68a,0xf6eb,0xe68f,0xc5f4,0xb5b6,0xb596,0xad95,0xc5f2,0xde6e,0xd64b,0x8486,0x12e1,0x7405,0xe6ab,0xf70c,0xeecc,0x8cc7,0x2341,0x84a6,0xf72d,0xff4e,0xf70d,0x7445,0x2361,0x8ce8,0xf72e,0xff4e,0xeeed,0x6425,0x1b61,0x6425,0xe6cd,0xf72e,0xef0e,0x8cc8,0x6423,0x7464,0xce4b,0xdec9,0xdec8,0xd687,0xce46,0xc646,0xce67,0xd6a8,0xd688,0xce68,0xa565,0x6403,0xad8a,0xde8d,0xe6ae,0xc5ec,0x4bc5,0x2b42,0xbdcc,0xef0f,0xf70f,0xc62d,0x7c68,0x6c47,0x6c47,0x6c47,0x6c47,0x6c47,0x6c47,0x6c47,0x6c67,0x6c47,0x6c47,0x7468,0x7c8b,0x84ab,0x744b,0x53e8,0x84a9,0xc62d,0xbdcc,0x6c47,0x2382,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x43c4,0xbded,0xc62e,0xbe0e,0x84ab,0x3b86,0x3383,0xadab,0xce4d,0xce4d,0x9509,0x2b83,0x2362,0x8ce9,0xbded,0xad8f,0x94b1,0x7c4f,0x4ba9,0x9d2a,0xc60c,0xc62c,0xa56a,0x7447,0xd66d,0xad8a,0xce4c,0xef0e,0xd66c,0x6c26,0x1b41,0x84a7,0xce4b,0xd68c,0xc60b,0x6425,0x1321,0x7c87,0xce2c,0xd62e,0x9cf1,0x9492,0x9492,0x8c71,0x9cee,0xb58b,0xa549,0x4b63,0x0ae0,0x5383,0xbdc9,0xeecb,0xde8a,0x94e6,0x1300,0x5bc3,0xbde8,0xce49,0xbdca,0x846d,0x7c0e,0x7c2e,0x948f,0x94af,0x948e,0x7c0e,0x73ee,0x73ee,0x73ee,0x73ee,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73ee,0x9cae,0x948e,0x73ce,0x73ce,0x73ce,0x6bad,0x534a,0x2aa5,0x0a61,0x0260,0x0240,0x0240,0x0220,0x52e2,0x9c85,0x8c25,0x6b23,0x83a4,0x6b23,0x5262,0x4201,0x3181,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0820,0x3160,0x39a1,0x2120,0x00c0,0x0100,0x0140,0x3a01,0x8c05,0xa4a6,0xb506,0xbd67,0xb526,0x5b43,0x1a80,0x0a80,0x0a80,0x12a1,0x4308,0x740e,0x94d2,0xad55,0xad55,0xad55,0xa514,0x7c4f,0x4308,0x12a1,0x0aa0,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x1ae0,0x8c85,0xeeea,0xf70a,0xf70a,0xde49,0x6be4,0x8486,0xde8d,0xce12,0xb5b5,0xb596,0xb596,0xad75,0xad75,0xb595,0xb595,0xb592,0x7c2c,0x2b04,0x8486,0xe6ab,0xeeec,0xde8b,0x63e4,0x2b62,0xa549,0xf72d,0xff4d,0xe6ac,0x53c4,0x2382,0xad89,0xf72e,0xff2e,0xde8c,0x53e4,0x1b61,0x8487,0xe6cd,0xeeed,0xdeab,0xb5c6,0xce66,0xd686,0xd686,0xd686,0xce66,0xce66,0xce66,0xce66,0xce66,0xce66,0xce66,0xce66,0xce46,0xce46,0xce46,0xce47,0xd64b,0xad69,0x4b84,0x3b63,0xbdab,0xe6ce,0xeeef,0xb5ab,0x3b83,0x1b62,0x1b62,0x1b62,0x1b62,0x1b62,0x1b82,0x1b82,0x1b62,0x1b62,0x3ba6,0x8490,0xa534,0xad55,0xad55,0xa533,0xbdd0,0x94eb,0x43a4,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x4bc8,0xb591,0xa513,0x9cf3,0x9cd2,0x8470,0x63eb,0xbdec,0xe6ce,0xeece,0xb5ab,0x3b84,0x4387,0x94ce,0xad31,0x9cd2,0x94b2,0x94b2,0x8c71,0xa50f,0xd64e,0xe68e,0xc60c,0x7447,0xc60d,0xb58b,0xdeae,0xf70e,0xef0e,0x8cc8,0x2361,0x84a7,0xe6cd,0xf72e,0xeeed,0x84a7,0x1b22,0x7c4a,0xad50,0x9cd2,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x9cb1,0xa50e,0x6bc9,0x1ae2,0x4342,0xbda8,0xeecb,0xeeeb,0xbda8,0x3322,0x53a3,0xce09,0xde6d,0xb550,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x73ce,0x5b68,0x5b63,0x5b63,0x5b43,0x5b43,0x5b23,0x73a4,0x8c25,0x8c25,0x7ba4,0x5282,0x31c1,0x2960,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0820,0x3161,0x3181,0x10e0,0x00c0,0x0100,0x0940,0x5ac2,0x9c45,0xaca6,0xb506,0xbd47,0x9445,0x2260,0x0a60,0x0a60,0x22a3,0x73ee,0x9cf3,0xa534,0xad55,0xad55,0xa534,0xa534,0xa534,0xa514,0x94b2,0x63ac,0x2aa5,0x0a80,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x3301,0xad47,0xeeca,0xeeea,0xeeea,0xc5c8,0x5387,0x9d0f,0xb5b4,0xad75,0xad75,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0x9cf3,0x5b8a,0x9ce7,0xde6b,0xe6ab,0xce0a,0x3b63,0x3362,0xbdea,0xf70d,0xf72d,0xce2b,0x43a3,0x2b62,0xc60b,0xf72e,0xf72e,0xc60b,0x43a4,0x3b82,0x9d27,0xce68,0xd667,0xce65,0xce45,0xce45,0xce45,0xce45,0xc625,0xc625,0xc625,0xc625,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xbde5,0xad85,0x94e5,0xb58b,0xde6e,0xde8e,0xa54a,0x2b42,0x1b42,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b62,0x1b62,0x2b84,0x7c8f,0xad75,0xad75,0xad55,0xa534,0xa534,0x9d13,0x63ec,0x1b22,0x1b22,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x2b84,0x7c4f,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x8c91,0xb58d,0xde8e,0xe68e,0xbdcc,0x742d,0x8c71,0x94b2,0x94b2,0x94b2,0x9492,0x9492,0x9492,0x9491,0xa4f0,0xc5ce,0xc5ec,0x6c06,0xb58b,0xad6b,0xd64d,0xeeee,0xeeee,0xa549,0x3362,0x5be4,0xde8c,0xf70e,0xef0d,0x9d0a,0x6bed,0x8c71,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x7c0f,0x3ae6,0x1ac1,0xa507,0xe68a,0xeecb,0xce09,0x5ba3,0x3b24,0x8c8d,0x9cf1,0x9492,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x8c2d,0xa4a7,0xa4c6,0xa4a5,0xa4a5,0x9c65,0x9445,0x8c04,0x83c4,0x7363,0x6ae3,0x5a82,0x4a22,0x39c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0820,0x3140,0x2920,0x00a0,0x00c0,0x0100,0x1960,0x7343,0x9425,0xa486,0xb4e6,0xb4e6,0x6b83,0x0a20,0x0240,0x0260,0x32c6,0x9cd3,0xa534,0xa534,0xa534,0xa514,0xa514,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x8450,0x532a,0x1a82,0x0a80,0x0a80,0x0aa0,0x0aa0,0x2ae1,0x8485,0xa527,0xa527,0xa528,0x94cc,0x94d2,0xad55,0xad55,0xad55,0xad55,0xa534,0xa534,0xa514,0xa514,0xa514,0xa514,0xa514,0x9cd3,0x536a,0x7406,0x9cc7,0x9ce8,0x8466,0x2322,0x2342,0x94e8,0xad69,0xad89,0x84a7,0x2b62,0x2362,0x9d29,0xdead,0xd64c,0x84a7,0x84a3,0xa563,0xc624,0xc624,0xc624,0xc624,0xc604,0xc604,0xbde5,0xbde5,0xbde5,0xbdc5,0xbdc5,0xbdc5,0xbdc5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xbdc4,0xbdc4,0xbdc4,0xbdc4,0xb585,0xb569,0x9cea,0x6c07,0x2322,0x1b22,0x1b22,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b62,0x3385,0x9d33,0xad75,0xad55,0xa534,0xa534,0xa514,0x9cf3,0x8470,0x3b44,0x5bc5,0x6406,0x6406,0x6426,0x6c46,0x6c46,0x6c67,0x6c67,0x6c67,0x6c67,0x6c87,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c66,0x6c66,0x746b,0x94b2,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cef,0xd62d,0xde4d,0xc5ed,0x94b1,0x9492,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x9471,0xa4ef,0x6bc9,0x9cea,0xb56b,0xc5ec,0xe6ad,0xeece,0xb5aa,0x3b63,0x3b62,0xce2b,0xeecd,0xd64f,0xa511,0x9492,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8430,0x7bef,0x3ae7,0x0a80,0x8446,0xd62a,0xe68a,0xde4a,0x7425,0x4b69,0x8c71,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x5305,0x52e2,0x52e2,0x52c2,0x4ac2,0x4aa2,0x4261,0x4241,0x3a01,0x31c1,0x2980,0x2140,0x1900,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x18c0,0x08c0,0x08e0,0x00e0,0x39e1,0x7b64,0x8c05,0x9c65,0xacc6,0x9c65,0x3a81,0x0220,0x0240,0x0260,0x32c6,0x9cd3,0xa514,0xa514,0xa514,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x73ce,0x32a6,0x1281,0x0a80,0x0a80,0x0aa0,0x0aa0,0x1ac2,0x3b27,0x8470,0xa514,0xad55,0xad55,0xa534,0xa534,0xa514,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x5329,0x0a80,0x0aa0,0x12c1,0x12e1,0x1301,0x1323,0x1322,0x1321,0x1341,0x1341,0x1341,0x1341,0x53c4,0xce4c,0xa549,0x9503,0xbde3,0xc604,0xbde4,0xbde4,0xbde4,0xbdc4,0xbdc4,0xb5a4,0xb5a4,0xb584,0xb584,0xb584,0xad64,0xad64,0xad64,0xad64,0xad44,0xad44,0xad44,0xad44,0xad64,0xad64,0xad64,0xad64,0xad64,0xb584,0xb584,0xb584,0xad64,0x94c3,0x63a2,0x22e2,0x1302,0x1b02,0x1b22,0x1b42,0x1b42,0x1b42,0x1b62,0x1b62,0x3b86,0xa534,0xad55,0xad55,0xa514,0xa514,0x9cf3,0x9cd3,0x94b0,0x9cea,0xb58c,0xb58c,0xb5ac,0xbded,0xc60d,0xc62d,0xce4d,0xce4e,0xce4e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce4e,0xce4d,0xc62d,0xb5af,0x9cf2,0x9cd3,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x948f,0xcded,0xce0d,0xc5cd,0x94b1,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c50,0x840f,0x94ad,0xad4b,0xad4a,0xde6d,0xe68d,0xc5eb,0x4363,0x2b23,0xad4b,0xb570,0x9cd1,0x9492,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bee,0x3ac7,0x0a60,0x5b64,0xc5c9,0xe66a,0xe68a,0x8ca7,0x6bcd,0x8c71,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bee,0x9c67,0x9c86,0x9ca5,0x9ca5,0x9c85,0x9465,0x8c25,0x83c4,0x7b84,0x6b23,0x62c2,0x5262,0x41e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2120,0x39a1,0x39c1,0x31a1,0x39e1,0x5282,0x6303,0x8c05,0x7ba4,0x52c2,0x0a00,0x0220,0x0240,0x0240,0x32a6,0x94b2,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x94b2,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x8450,0x5b6b,0x2283,0x0a60,0x0a80,0x2ac5,0x6bcd,0x94d2,0xa534,0xa534,0xa534,0xa514,0xa514,0x9cf3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9492,0x9492,0x9492,0x94b2,0x8c71,0x4b09,0x0a40,0x0a80,0x0aa1,0x12c1,0x12e3,0x1325,0x1322,0x1321,0x1321,0x1321,0x1341,0x1341,0x53c4,0xc629,0xbde4,0xbdc3,0xbdc3,0xbdc3,0xb5a3,0xb5a3,0xb583,0xb583,0xad63,0xad63,0xad43,0xad43,0xa523,0xa523,0xa523,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa523,0xa523,0xa523,0xad43,0xad43,0xad43,0xa503,0x73e3,0x63c6,0x6be6,0x6c27,0x7427,0x7447,0x7467,0x7c67,0x7c68,0x9d2b,0xad74,0xad55,0xa534,0xa514,0x9cf3,0x9cd3,0x94b2,0x9cd1,0x9ccb,0x5b86,0x3b24,0x3b44,0x3b64,0x3b84,0x4384,0x43a4,0x43a4,0x43a4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43a4,0x43a4,0x43a4,0x4384,0x6c0c,0x94b2,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c4e,0xbd8c,0xc5ac,0xbdad,0x9491,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x8430,0x8c6f,0x94ac,0xcdec,0xd64c,0xce0c,0x5386,0x63ab,0x8c70,0x9491,0x8c71,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bce,0x3aa6,0x0a40,0x2aa1,0xb568,0xde4a,0xde6a,0xad49,0x8c50,0x8c71,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x73ce,0x5b0b,0x3243,0x3241,0x3241,0x3241,0x3241,0x2a21,0x2a00,0x29e0,0x21a0,0x1960,0x1940,0x1100,0x10c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3161,0x3161,0x5242,0x5a82,0x5aa2,0x6303,0x7364,0x83c4,0x4282,0x09e0,0x0200,0x0220,0x0220,0x0240,0x32a5,0x94b2,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x9492,0x94b2,0x94b2,0x94b2,0x7c0f,0x42e8,0x4b29,0x8450,0x9cf3,0xa514,0xa514,0xa514,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x4ae9,0x0a20,0x0a60,0x0a81,0x12c1,0x12e1,0x1301,0x1301,0x1321,0x1321,0x1321,0x1321,0x3361,0x8cc2,0xb5a2,0xb5a2,0xb5a3,0xb583,0xb583,0xad63,0xad63,0xad43,0xa523,0xa523,0xa503,0xa503,0x9ce3,0x9ce3,0x9ce3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9ce3,0x9ce3,0xa503,0xa503,0xa503,0xa523,0xa503,0x9cc7,0x9cea,0xa50a,0xad4b,0xad6b,0xb58b,0xb58b,0xb5ac,0xad8c,0xad54,0xa534,0xa514,0x9cf3,0x9cd3,0x94b2,0x9492,0x842f,0x3ae5,0x12a1,0x12c1,0x12e2,0x1b22,0x1b42,0x1b42,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b62,0x1b42,0x63ec,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x840d,0xb54b,0xbd6b,0xbd6d,0x8c70,0x8c51,0x8c51,0x8430,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8430,0xa4ee,0xbd8c,0xbd6d,0x842f,0x8c51,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bae,0x42a6,0x0a40,0x1a61,0x94a7,0xd609,0xde2a,0xbd8a,0x9490,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bae,0x6b6b,0x5ae5,0x52e2,0x52e2,0x5302,0x5b02,0x52e2,0x52e2,0x52a2,0x4a82,0x4241,0x3a01,0x31c1,0x2980,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3161,0x3181,0x4a22,0x39e1,0x1940,0x2180,0x21a0,0x21c0,0x11c0,0x01c0,0x01e0,0x0200,0x0220,0x0220,0x2a85,0x94b2,0x9cd3,0x9cd3,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x9492,0x9492,0x94b2,0x8c91,0x94b2,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x4ac8,0x0a20,0x0a40,0x0a81,0x12a1,0x12c2,0x12e2,0x1302,0x1323,0x1321,0x1321,0x3b61,0x94e2,0xb5a2,0xb582,0xb582,0xad62,0xad62,0xad42,0xa522,0xa502,0xa502,0x9ce2,0x9cc2,0x9cc2,0x94a2,0x94a2,0x94a2,0x94a2,0x9482,0x9482,0x9482,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x94a3,0x94a3,0x94a3,0x94a3,0x9cc2,0x9cc2,0x9ce2,0xa4e2,0x9ce3,0x7c03,0x4323,0x3b23,0x3b44,0x3b44,0x3b64,0x3b64,0x4366,0x9cf3,0xa514,0x9cf3,0x9cd3,0x94b2,0x9492,0x8c71,0x7bef,0x1a83,0x1281,0x12c1,0x12e2,0x1b02,0x1b22,0x1b42,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b62,0x1b42,0x63cc,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x73cd,0x9caa,0xad0b,0xa4eb,0x8c30,0x8430,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8430,0x8c4f,0x8c50,0x8c50,0x8c51,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x73ad,0x52e7,0x1220,0x1240,0x6bc5,0xb568,0xc5a9,0xad0d,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b4d,0x5aea,0x6b4a,0x6b6a,0x6309,0x3a47,0x4aa9,0x52ca,0x52ca,0x5b0a,0x7baa,0x634a,0x52e9,0x632a,0x632a,0x632a,0x632a,0x632a,0x632a,0x632a,0x632a,0x6b49,0x7ba8,0x8c06,0x9425,0x9445,0x9c65,0x9c85,0x9c85,0x9c65,0x9445,0x8c25,0x83c4,0x7b84,0x6b23,0x62c3,0x5262,0x41e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2940,0x3161,0x2961,0x0900,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x01e0,0x0200,0x0220,0x0220,0x2a85,0x9492,0x9cd3,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8c51,0x8c71,0x8c71,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x8430,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x42c8,0x0a20,0x0a40,0x0a61,0x12a1,0x12c2,0x12e2,0x1302,0x1324,0x1321,0x4381,0x94e1,0xb582,0xb582,0xad62,0xad42,0xa522,0xa522,0xa502,0x9ce2,0x9cc2,0x94a2,0x94a2,0x9482,0x9482,0x9482,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x9482,0x9482,0x94a2,0x94a2,0x9cc2,0x9cc2,0x94a2,0x73e3,0x8c89,0x94ca,0x9d0a,0xa52a,0xa52a,0xa52b,0xa513,0xa514,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x73ee,0x1a63,0x1281,0x12a1,0x12c2,0x1302,0x1b22,0x1b42,0x1b42,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b42,0x63cb,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x634c,0x6366,0x9caa,0x73c9,0x840f,0x8410,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x3a86,0x0a00,0x0a20,0x2a81,0x4b23,0x5364,0x7bee,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x6309,0x52c3,0x5b03,0x6303,0x6323,0x5ae3,0x5ae3,0x5ae3,0x5ae3,0x6b44,0x9466,0x6303,0x2201,0x4aa2,0x52c3,0x52c3,0x52c3,0x52c3,0x52c3,0x52c2,0x52c2,0x52e2,0x52e2,0x52e2,0x5b03,0x5b03,0x5b23,0x5b23,0x5b23,0x5b02,0x5b02,0x52c2,0x4a82,0x4242,0x3a22,0x31c2,0x2980,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2100,0x3161,0x39c1,0x41e1,0x1920,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x3281,0x5302,0x5302,0x42c6,0x9492,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x7bef,0x73ce,0x8410,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c71,0x8c71,0x9492,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x7bce,0x4ac9,0x634c,0x8430,0x8430,0x8410,0x8410,0x8410,0x8430,0x7c0f,0x42a8,0x0a00,0x0a40,0x0a60,0x12a1,0x12c1,0x12e1,0x1301,0x1302,0x2321,0x94e1,0xad61,0xad61,0xad41,0xa521,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x9481,0x8c61,0x8c61,0x8c41,0x8c42,0x8c42,0x8c42,0x8c42,0x8422,0x8422,0x8422,0x8422,0x8422,0x8422,0x8422,0x8422,0x8c42,0x8422,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c62,0x8c62,0x9482,0x9482,0x94a2,0x94a2,0x9482,0x8405,0x7c08,0x7c28,0x8448,0x8468,0x8469,0x9cf2,0x9cf3,0x9cd3,0x94b2,0x8c71,0x8c51,0x8c51,0x73ce,0x1a63,0x1261,0x12a1,0x12c2,0x1b02,0x1b22,0x1b42,0x1b62,0x1b62,0x1b83,0x1b83,0x1b83,0x1b83,0x1b82,0x1b83,0x1b83,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b42,0x63cc,0x9492,0x9492,0x8c71,0x8c51,0x8410,0x7bef,0x7bef,0x6b6c,0x7be8,0x8c69,0x5b27,0x7bef,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x6b4d,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x634c,0x4268,0x5b0b,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x3246,0x0a00,0x0a20,0x0a40,0x0a60,0x2aa5,0x73ee,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x738d,0x7367,0x7384,0x7ba4,0x7ba4,0x7bc5,0x83e5,0x8405,0x8405,0x8c05,0x8c25,0x8c45,0x6324,0x4282,0x9445,0xa4a6,0x9445,0x9445,0x9445,0x9445,0x9445,0x9445,0x9465,0x9465,0x9c65,0x9c85,0x9c85,0xa4a6,0xa4a6,0xa4a5,0x9c85,0x9445,0x9425,0x8be4,0x7b84,0x6b03,0x5aa2,0x5242,0x41c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3981,0x41c1,0x39c1,0x08e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x11e0,0x6343,0x9ca6,0xad27,0xb547,0x9488,0x94b2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x3a27,0x5b0b,0x7bcf,0x8410,0x8410,0x8430,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8410,0x6b6c,0x4a86,0x3a44,0x634c,0x8430,0x8430,0x8410,0x8410,0x8410,0x8430,0x7c0f,0x52e8,0x4282,0x42c3,0x4b03,0x5344,0x5364,0x5b84,0x5ba4,0x5ba4,0x7422,0xa521,0xad41,0xad41,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x8c61,0x8c61,0x8c41,0x8c41,0x8421,0x8421,0x8421,0x8421,0x8401,0x8401,0x8401,0x8401,0x8401,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8422,0x8422,0x8422,0x8c41,0x8c41,0x8c41,0x8c61,0x9461,0x9481,0x8422,0x6385,0x5b87,0x63c7,0x63c7,0x7409,0x94b2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x7bee,0x5b26,0x5b66,0x63a7,0x6be7,0x7428,0x7c68,0x7c89,0x84a9,0x84c9,0x84e9,0x8ce9,0x8ce9,0x8cea,0x8cea,0x8cea,0x8ce9,0x84e9,0x84e9,0x84e9,0x84c9,0x84c9,0x84a9,0x848d,0x9492,0x9492,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcc,0x7be8,0x4ac4,0x3286,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5aeb,0x4287,0x738b,0x6b6d,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x4aa9,0x2204,0x19e3,0x5aea,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x4286,0x2221,0x2241,0x2261,0x2281,0x5309,0x8410,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x634c,0x2a03,0x21e0,0x2200,0x2200,0x2221,0x2a21,0x2a41,0x2a41,0x2a41,0x2a61,0x2a61,0x2a41,0x3281,0x8c45,0x9ca6,0x3aa2,0x1a20,0x1a20,0x1220,0x1220,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a00,0x2a21,0x7364,0x83c4,0x7343,0x5282,0x2160,0x08e0,0x08a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3981,0x41c1,0x2940,0x00e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x4aa2,0x9ca6,0xa4a6,0x73c4,0xb526,0xb549,0x9cd2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b6d,0x19a3,0x11a2,0x4268,0x6b8d,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x7bcd,0x83e9,0x83e6,0x83e6,0x7bc6,0x7bcc,0x8430,0x8430,0x8430,0x8410,0x8410,0x8430,0x840f,0x840a,0x8c47,0x9ca8,0xa4e9,0xad49,0xb58a,0xbdcb,0xc5cb,0xb589,0xa522,0xad41,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x8c61,0x8c41,0x8c41,0x8421,0x8421,0x8401,0x8401,0x8401,0x8401,0x8401,0x8401,0x8401,0x8401,0x83e1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7be1,0x7be1,0x83e1,0x8401,0x8401,0x8421,0x8c21,0x8c41,0x8c42,0x8425,0x8c49,0x94cb,0x9ceb,0xa50c,0x9cd2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x840f,0x840a,0x8c6a,0x94ab,0xa50c,0xad6d,0xb5ad,0xbdee,0xc60e,0xc62e,0xce4f,0xce4f,0xce6f,0xce6f,0xce6f,0xce6f,0xce6f,0xce6f,0xce6f,0xce4f,0xce4e,0xc62e,0xc60e,0xad6f,0x94b2,0x9492,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6b,0x3264,0x1221,0x3285,0x7bcf,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x6b4b,0x7368,0x6b47,0x4287,0x632c,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x73ae,0x73ae,0x73ae,0x738e,0x5b0b,0x2a45,0x11e1,0x09e0,0x1a03,0x52ea,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738d,0x7bc8,0x8c26,0x9467,0x9ca7,0xa4e7,0x948c,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x736a,0x83e5,0x8405,0x8c25,0x9446,0x9c86,0x9ca6,0xa4c6,0xa4e6,0xad07,0xad07,0xad27,0xad07,0xad27,0xb547,0xb547,0x5302,0x0a40,0x0a40,0x0240,0x0240,0x0240,0x0240,0x0240,0x0240,0x0240,0x0a40,0x0240,0x0220,0x0220,0x0a00,0x42a2,0x9c85,0x8be5,0x6303,0x7343,0x5aa2,0x4201,0x3181,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3161,0x39a1,0x10e0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x4aa2,0x9c86,0xb527,0xad06,0xc587,0x9468,0x94b1,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x19a3,0x0180,0x0180,0x21e4,0x52ea,0x7bcf,0x8430,0x8430,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x73ce,0x52ea,0x3224,0x2a21,0x2a21,0x2a21,0x3223,0x632b,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x7c0f,0x4ac8,0x3242,0x3282,0x3aa2,0x3ae3,0x4303,0x4323,0x5363,0x94a2,0xa521,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x8c61,0x8c41,0x8421,0x8401,0x8401,0x8401,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7ba1,0x7ba1,0x73a1,0x73a1,0x73a1,0x73a1,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x73a1,0x73a1,0x7ba1,0x7bc1,0x7ba1,0x6b42,0x3aa3,0x22a3,0x2ac3,0x32e5,0x8c71,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x73ae,0x2a64,0x2282,0x22a3,0x2ae3,0x2b03,0x3344,0x3364,0x3384,0x3384,0x3ba4,0x3ba4,0x3ba4,0x3ba4,0x3bc4,0x3ba4,0x3ba4,0x3ba4,0x3ba4,0x3ba4,0x33a4,0x3384,0x3364,0x63ec,0x8c91,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x5b0a,0x1a23,0x1221,0x3aa6,0x7bcf,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x738c,0x5b06,0x2a02,0x09e1,0x2203,0x4ac9,0x6b6d,0x7bae,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x634c,0x4288,0x1202,0x09e0,0x09e0,0x0a00,0x1a02,0x52ea,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x6b6d,0x4ac7,0x4aa3,0x4ae3,0x5303,0x5b25,0x73ad,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4aa7,0x4282,0x4aa2,0x4ac2,0x52e2,0x5303,0x5b23,0x5b43,0x5b43,0x5b63,0x6363,0x6363,0x6363,0x6383,0x6363,0x5b63,0x32a1,0x0a80,0x0a80,0x0a60,0x0a60,0x0a60,0x0a60,0x0a60,0x0a60,0x0260,0x0a40,0x0240,0x0240,0x0220,0x0200,0x2a41,0x83e5,0x8c05,0x6303,0x7323,0x62c3,0x41e1,0x2960,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x20e0,0x2940,0x2120,0x08c0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x11e0,0x4aa2,0x7384,0x7be4,0xad06,0xb548,0x9cd1,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x19c3,0x0180,0x01a0,0x01a0,0x09c1,0x3246,0x636c,0x8430,0x8c51,0x8430,0x8430,0x8430,0x7c0f,0x634c,0x3246,0x09e0,0x09e0,0x09e0,0x09e0,0x0a00,0x1202,0x5b2b,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8430,0x7c0f,0x42a8,0x0a00,0x0a20,0x0a61,0x1281,0x12a1,0x1ac1,0x5b61,0x9ce1,0xa500,0xa500,0x9ce0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8420,0x8400,0x7be0,0x7be0,0x7be0,0x7be0,0x7bc0,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7ba1,0x7ba1,0x7ba1,0x73a1,0x73a1,0x73a1,0x73a1,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x7361,0x7361,0x7361,0x6b61,0x6b61,0x6b41,0x6b41,0x6b41,0x6321,0x5aa1,0x39e1,0x3a03,0x5b27,0x7c09,0x844a,0x846b,0x9491,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x7bee,0x6b89,0x73e9,0x7c4a,0x8c8b,0x94cb,0x9d2c,0xa54d,0xa58d,0xadad,0xadae,0xadce,0xadce,0xadce,0xadce,0xadce,0xadce,0xadce,0xadce,0xadad,0xadad,0xad8d,0xa56d,0x9d0f,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6b,0x6b88,0x73a8,0x842b,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5b0b,0x21e2,0x09e0,0x09e0,0x0a01,0x3a84,0x73a9,0x7bcc,0x73ae,0x73ce,0x73ae,0x73ae,0x73ae,0x6b8d,0x4aa9,0x2224,0x0a01,0x0a00,0x0a00,0x0a00,0x0a20,0x1a22,0x5b0b,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x6b6d,0x4aa6,0x3a82,0x42a2,0x42e3,0x5307,0x73ce,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x6b6d,0x4285,0x3a62,0x4282,0x42c2,0x4ae2,0x5303,0x5343,0x5b43,0x5b63,0x5b63,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b63,0x5b63,0x5b63,0x5b43,0x5b42,0x5322,0x3aa1,0x0a00,0x09e0,0x3241,0x5ae3,0x7b64,0x7343,0x41e1,0x08e0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x01c0,0x01e0,0x1220,0x1220,0x5323,0xa4c8,0x9cd1,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x21c4,0x01a0,0x01a0,0x01c0,0x01e0,0x09e0,0x1a02,0x4ac9,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x3a87,0x11e2,0x09e0,0x09e0,0x0a00,0x0a00,0x0a00,0x0a20,0x1222,0x5b2b,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x42a8,0x0a00,0x0a20,0x0a61,0x1281,0x12a1,0x2ae1,0x8c61,0xa500,0xa500,0x9ce0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8400,0x8400,0x7be0,0x7be0,0x7bc0,0x7bc0,0x7bc0,0x7bc0,0x7bc0,0x7ba0,0x7ba0,0x73a0,0x73a1,0x73a1,0x73a1,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x7361,0x7361,0x7361,0x6b61,0x6b61,0x6b61,0x6b41,0x6b41,0x6b21,0x6321,0x6301,0x52a1,0x39e1,0x2141,0x1981,0x4aa5,0x6ba8,0x73c9,0x7c0a,0x842a,0x8c70,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bce,0x6b69,0x73c9,0x7c0a,0x846b,0x8cab,0x94ec,0x9d2c,0xa54d,0xa56d,0xad8d,0xad8e,0xadae,0xadae,0xadae,0xadae,0xadad,0xadad,0xad8d,0xad8d,0xa56d,0xa56d,0xa54c,0x9cef,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6b,0x6b68,0x6b88,0x6ba9,0x7bcf,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5b0b,0x11e2,0x0a01,0x1201,0x4ae5,0x8429,0x8c4a,0x5306,0x42a8,0x52ea,0x530a,0x5b2a,0x5309,0x3266,0x1221,0x0a21,0x0a21,0x0a21,0x0a21,0x0a41,0x0a41,0x1242,0x5b0b,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x73ae,0x738d,0x7bc8,0x8406,0x8c46,0x9487,0x946a,0x840f,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6b,0x7bc6,0x8405,0x8c46,0x9486,0xa4c6,0xad07,0xb547,0xb567,0xbd87,0xbda8,0xbdc8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c7,0xc5a7,0xc5a7,0xbda7,0xbd87,0xbd67,0xc587,0x9ca6,0x2240,0x09e0,0x01c0,0x11a0,0x4a62,0x6b23,0x31a1,0x00c0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0880,0x08a0,0x10c0,0x1100,0x1920,0x2160,0x21a0,0x21a0,0x09a0,0x01c0,0x01e0,0x0200,0x0220,0x0a40,0x4b06,0x9491,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ae,0x3a24,0x3221,0x3221,0x3241,0x3a61,0x3a81,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3aa2,0x3aa2,0x3ac2,0x42c2,0x42c3,0x636b,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x52e9,0x3262,0x3282,0x3ac3,0x3ae3,0x3ae3,0x6bc2,0x9cc1,0x9ce0,0x9ce0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7be0,0x7bc0,0x7bc0,0x7bc0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7361,0x7361,0x6b61,0x6b61,0x6b61,0x6b41,0x6b41,0x6b41,0x6b41,0x6b41,0x6321,0x6321,0x62e1,0x5281,0x39c0,0x2121,0x2963,0x29e3,0x2a43,0x3283,0x32a4,0x3ac4,0x3ae4,0x4306,0x8430,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ae,0x3285,0x32a4,0x3ae4,0x3b05,0x4345,0x4385,0x4ba6,0x4bc6,0x4bc6,0x4be6,0x53e6,0x53e6,0x5406,0x5406,0x5406,0x5406,0x5406,0x53e6,0x53e6,0x4be6,0x4bc6,0x4ba6,0x6c0c,0x8c91,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x52ea,0x3264,0x3263,0x42a6,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5b0b,0x11e2,0x1a22,0x5b26,0x948a,0x8c29,0x42e4,0x1261,0x1261,0x42e4,0x8c49,0x9caa,0x94aa,0x7be8,0x42c4,0x32a3,0x32a3,0x32a3,0x32c3,0x3ac3,0x3ac3,0x3ac3,0x634b,0x8410,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x738d,0x7bc8,0x8406,0x8c46,0x6345,0x632b,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x7ba9,0x83e5,0x8c05,0x7bc5,0x4ae2,0x6364,0xa507,0xb567,0xbd87,0xb587,0x7404,0x4b42,0x4b42,0x4b62,0x5383,0x5b83,0x5b83,0x5b83,0x63c3,0xa526,0xce08,0xcde8,0x9ce6,0x63a3,0x4b42,0x4b22,0x4b22,0x4b02,0x7c04,0xbd67,0xc587,0x8c45,0x73a4,0x2a21,0x21e0,0x5aa2,0x7323,0x5a82,0x39c1,0x2100,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18e0,0x2920,0x3161,0x39c1,0x4a02,0x5262,0x5ac3,0x7343,0x7364,0x3221,0x01c0,0x01e0,0x0200,0x0a20,0x0a20,0x2a85,0x8c91,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x83ee,0x7bc6,0x83e5,0x8c25,0x8c66,0x9486,0x9ca6,0x9cc6,0x9cc6,0x9cc6,0x9cc6,0x9cc6,0x9ca6,0x9ca6,0x9ca6,0x9cc6,0x9cc7,0xa4e7,0xa4e7,0xa507,0xa507,0xa507,0x948c,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x83ea,0x8427,0x8c68,0x9ca9,0xa4e9,0x9ce9,0x9cc4,0x9ce0,0x9cc0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7be0,0x7bc0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b41,0x6b21,0x6b21,0x6321,0x6320,0x62e0,0x5280,0x39e0,0x2121,0x39c4,0x5286,0x73a9,0x7bc9,0x840a,0x844a,0x8c8b,0x94ac,0x9cec,0x9ced,0x8c90,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bee,0x7bea,0x8c6b,0x94cc,0xa50d,0xad6e,0xb5cf,0xbdef,0xc630,0xc650,0xce70,0xce70,0xce70,0xce90,0xce91,0xce91,0xce90,0xce90,0xce70,0xce70,0xce50,0xc650,0xc60f,0xad70,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bcf,0x7bcf,0x73ab,0x7be9,0x8409,0x842a,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b0b,0x2a43,0x6b87,0x948b,0x7be8,0x32c4,0x1281,0x1281,0x1aa1,0x7408,0xbd8d,0x8c69,0x8449,0xb54c,0xa4eb,0x9cca,0x9cca,0x9cea,0x9cea,0xa50a,0xa50a,0x9cea,0x8c4d,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x9449,0xa4a7,0xa4c8,0x7be7,0x738d,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738d,0x8c08,0xa486,0xa4c7,0xa4a6,0x4ae3,0x5343,0xbd88,0xde49,0xe669,0xe689,0x94a6,0x22e1,0x12c0,0x5ba3,0xa527,0xb587,0xb567,0xb567,0xbdc8,0xe669,0xd628,0xbd87,0xde49,0xad47,0x32e1,0x0a80,0x0a80,0x0a80,0x73e4,0xcdc7,0xd5c8,0xc587,0xb506,0x5ae2,0x21c0,0x6b23,0x7b64,0x6ae3,0x5a82,0x39c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x10a0,0x10c0,0x1900,0x2140,0x2980,0x31a1,0x5282,0x83e4,0x6303,0x11e0,0x01e0,0x0200,0x0a20,0x0a20,0x2a85,0x8c71,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ae,0x4265,0x3a62,0x4282,0x42c2,0x4ae2,0x4b02,0x4b02,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x5343,0x5343,0x5343,0x5343,0x5343,0x6bab,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5b09,0x42a3,0x42c4,0x4ae4,0x4b24,0x73e4,0x9cc1,0x9cc0,0x9cc0,0x94a0,0x9480,0x8c60,0x8420,0x8400,0x7be0,0x7be0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6300,0x6300,0x62e0,0x52a0,0x39e0,0x2120,0x1920,0x11a1,0x3244,0x3a84,0x42a5,0x42c5,0x4ae6,0x4b06,0x5346,0x5367,0x5b67,0x5b88,0x8430,0x9492,0x9492,0x8c71,0x8430,0x8430,0x8410,0x73ae,0x4ac6,0x4b06,0x5347,0x5b87,0x63c8,0x6c08,0x6c29,0x7449,0x7469,0x7469,0x7489,0x7489,0x748a,0x748a,0x7c8a,0x7489,0x7489,0x7489,0x7489,0x7489,0x7469,0x6c49,0x7c4d,0x9492,0x8c71,0x8c51,0x8430,0x7bef,0x7bcf,0x7bcf,0x5b0a,0x4ac5,0x4ae5,0x5307,0x7bce,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x634b,0x73a9,0x8c6a,0x6367,0x2aa3,0x1282,0x12a2,0x12c2,0x12c2,0x6bc7,0xb58d,0xad4c,0xa52b,0xc5cd,0x9489,0x63a6,0x63a6,0x63a6,0x63c6,0x63c6,0x63c6,0x63a6,0x73cc,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x9449,0xa4a7,0xa4c7,0x8c28,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x6b6c,0x8be6,0xa486,0xacc7,0xad07,0x6b64,0x32a1,0xad07,0xde49,0xe689,0xe689,0xbd87,0x4322,0x63c4,0xc5c8,0xce28,0x94c6,0x8c85,0x8c85,0x94a6,0xce09,0xd608,0xa526,0xd628,0xd628,0x4322,0x0a80,0x0a80,0x0a80,0x42e2,0xbd67,0xd5c8,0xc587,0xbd26,0x83c4,0x19c0,0x52a2,0x7344,0x6b03,0x5a82,0x4a02,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x21a0,0x7384,0x83e5,0x3241,0x01e0,0x0200,0x0a20,0x0a40,0x2a85,0x8c91,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x2204,0x01c0,0x01e0,0x0a00,0x0a40,0x0a40,0x0a60,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x12a1,0x12a1,0x12a1,0x5b6b,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x0a00,0x0a21,0x0a41,0x1261,0x6381,0x9cc0,0x9cc0,0x94a0,0x9480,0x8c60,0x8c40,0x8420,0x7be0,0x7be0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6300,0x6300,0x5ae0,0x52a0,0x4200,0x2120,0x39c4,0x4a46,0x4ac6,0x52e6,0x5307,0x5b27,0x5b67,0x6388,0x63a8,0x6bc9,0x6be9,0x7409,0x7429,0x742a,0x8450,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ae,0x5b08,0x6368,0x63a8,0x6be9,0x742a,0x7c6a,0x84ab,0x84cb,0x8ceb,0x8d0c,0x8d0c,0x8d0c,0x8d2c,0x8d2c,0x952c,0x8d2c,0x8d2c,0x8d0b,0x6448,0x2383,0x2363,0x2363,0x63ec,0x8c91,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6a,0x6b88,0x6ba8,0x73c9,0x7bce,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bac,0x7be9,0x5305,0x1a62,0x1281,0x12a2,0x12c2,0x12e2,0x12e2,0x2b03,0x6c08,0xa52b,0xad4c,0x94aa,0x5365,0x22e2,0x12e2,0x12e2,0x12e2,0x12e1,0x12e1,0x12c2,0x5b6b,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x9449,0xa4a7,0xa4c8,0x840a,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x6b4a,0x8c06,0xa486,0xacc7,0xb507,0x8c25,0x2a81,0x8c86,0xd629,0xe669,0xe689,0xd629,0x9cc6,0xc5c8,0xc5e8,0x6bc4,0x1ac1,0x12a0,0x12a0,0x1aa1,0x63a4,0xad47,0xcde8,0xc5e8,0x9485,0x2ac1,0x0a80,0x0a60,0x0a60,0x1a60,0x9486,0xcdc7,0xc587,0xbd46,0x9c85,0x3221,0x31e1,0x7323,0x6b03,0x5aa2,0x4a22,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x5ac3,0x9445,0x6343,0x1200,0x0a20,0x0a20,0x0a40,0x2a85,0x8c91,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x2a04,0x01c0,0x01e0,0x0a20,0x0a40,0x0a60,0x0a80,0x0a80,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x12a1,0x22c1,0x4342,0x5b83,0x4322,0x1ac1,0x12c1,0x12c1,0x12a1,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x0a00,0x0a21,0x0a41,0x32a1,0x7c00,0x94a0,0x94a0,0x9480,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x5ae0,0x52a0,0x4200,0x2960,0x2121,0x3a04,0x5ae6,0x6b68,0x7389,0x73c9,0x7be9,0x842a,0x8c4b,0x948b,0x94cc,0x9cec,0x9d0d,0xa52d,0xa52d,0xa52d,0x8c90,0x94b2,0x9492,0x8c71,0x8430,0x8430,0x8410,0x7bce,0x73ca,0x844b,0x8c8c,0x9cec,0xa52d,0xad8e,0xb5af,0xbdef,0xbe10,0xc630,0xc630,0xc650,0xc650,0xc650,0xc650,0xc650,0xc650,0xe713,0xb5ef,0x2b84,0x2363,0x2363,0x63ec,0x9492,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b4a,0x6b88,0x6ba8,0x73c9,0x7bce,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b4c,0x3a64,0x1241,0x1261,0x22a2,0x3304,0x3b24,0x2b03,0x1b02,0x53a6,0xad6c,0xbdcd,0xbdcd,0xbdcd,0xbdcd,0x6c07,0x1b02,0x2b23,0x3b64,0x3b64,0x2b23,0x1ae2,0x5b6b,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x9449,0x9c87,0xa4a7,0x840c,0x7bcf,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x736d,0x6b29,0x83c6,0x9427,0x9c67,0xa4a7,0x9447,0x3a85,0x6b86,0xb529,0xc589,0xc58a,0xc58a,0xb549,0xa4e9,0x73a8,0x42c7,0x3ac7,0x42c8,0x42e8,0x42e8,0x42e8,0x4ae9,0x5b29,0x5b29,0x4ae9,0x4ae8,0x32a6,0x1262,0x0a60,0x0a60,0x6363,0xc587,0xc587,0xbd47,0xacc6,0x6303,0x1980,0x5ac3,0x7303,0x62a3,0x4a22,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x29e1,0x8c05,0x9445,0x4ac2,0x5302,0x5323,0x42e2,0x32a5,0x8c91,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x2a05,0x09c0,0x0a00,0x1220,0x1240,0x1260,0x1281,0x12a1,0x12a1,0x12c1,0x1ac1,0x1ac1,0x4b43,0xa527,0xce29,0xde6a,0xce29,0x7405,0x1ae1,0x12c1,0x12c1,0x5b8b,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x09e0,0x0a01,0x0a41,0x42e1,0x8c60,0x94a0,0x9480,0x9480,0x8c60,0x8420,0x8400,0x7be0,0x7bc0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x5ac0,0x5280,0x4200,0x2120,0x18e0,0x1981,0x19c1,0x2202,0x2a22,0x2a43,0x2a63,0x2a83,0x32a3,0x5346,0x8c8c,0xad6e,0xad6f,0x8c8b,0x4b66,0x3b44,0x3b44,0x4346,0x7c2f,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ae,0x3265,0x2a83,0x2aa3,0x32e4,0x3324,0x3b45,0x3b85,0x43a5,0x43a5,0x43c5,0x43c6,0x43c6,0x43e6,0x43e6,0x43e6,0x43e6,0x5407,0xd6b2,0xbe10,0x2b84,0x2363,0x2343,0x63ec,0x8c91,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x73ce,0x4aa9,0x1a22,0x1a22,0x3285,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b2b,0x2223,0x1a62,0x3ac4,0x846a,0xb58d,0xbdce,0xa54c,0x63e7,0x6c07,0xce2e,0xeef1,0xeef1,0xeef1,0xe6d0,0x9d2b,0x5bc5,0xa56b,0xd66e,0xce4e,0xad8b,0x5bc6,0x5b8b,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x8409,0x8c27,0x8c07,0x7bcd,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x738d,0x7bad,0x7bce,0x7bee,0x83ef,0x7bef,0x7c0f,0x8c4f,0x8c50,0x8c50,0x8c50,0x8c50,0x8430,0x8430,0x8410,0x8410,0x8430,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7c0f,0x636c,0x2a85,0x0a40,0x3281,0xa4e6,0xbd67,0xbd47,0xacc6,0x7ba4,0x1980,0x3a01,0x6b03,0x62a3,0x5222,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0160,0x11a0,0x7364,0xace6,0xace6,0xbd47,0xbd87,0xb547,0x9488,0x94b1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x4ac5,0x73a4,0x8c25,0x9465,0x9ca6,0xa506,0xad27,0xb567,0xb567,0xb587,0xb588,0xb5a8,0xce09,0xe6aa,0xad28,0xad47,0xe6aa,0xad48,0x2b02,0x12c1,0x12c1,0x5b8b,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ac9,0x09e1,0x0a01,0x0a21,0x42e1,0x9480,0x9480,0x9480,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x62e0,0x5ae0,0x5ac0,0x5280,0x4200,0x2940,0x2101,0x5ac7,0x6328,0x6b89,0x73a9,0x73ca,0x7c0a,0x842b,0x8c6c,0x8c8c,0x94cd,0xad4e,0xbdd0,0x94ec,0xad6e,0xce51,0x744a,0x2323,0x1b23,0x2b25,0x7c0f,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a44,0x1242,0x1a82,0x1aa2,0x1ae3,0x2303,0x2323,0x2343,0x2363,0x2363,0x2383,0x2383,0x2383,0x2383,0x2383,0x2384,0x3bc5,0xce91,0xc630,0x3384,0x2363,0x2343,0x63cc,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x73ce,0x4aa8,0x1a22,0x1a42,0x3285,0x73ae,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x738c,0x73c9,0x842a,0x94ab,0xbd8e,0xad2c,0x94eb,0xce4f,0xce4f,0xc60e,0xe6d0,0xf711,0xf711,0xf711,0xf711,0xde8f,0xce4e,0xe6d0,0xc60d,0xa52b,0xd66e,0xc60d,0x9cee,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x73a8,0x7ba5,0x7369,0x738e,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x7bcf,0x7bcf,0x7bef,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x634c,0x1222,0x1a20,0x5b23,0x8c25,0xace6,0x83c4,0x52c2,0x19a0,0x1960,0x4201,0x39c1,0x3160,0x0820,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0960,0x52c2,0x9c65,0xb527,0xb527,0xb547,0xc5a7,0xd608,0xcde9,0xa4f1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x840e,0x83e7,0x7be5,0x7ba4,0x83e4,0x8c25,0x9445,0x9485,0x9ca6,0x9cc6,0xa4c6,0xa4e6,0xa4e6,0xc5c8,0xeeea,0xce29,0xd649,0xde8a,0x7c46,0x1b01,0x12e1,0x12c1,0x5b8b,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ac9,0x0a01,0x0a01,0x0a21,0x42c1,0x8c60,0x9480,0x8c60,0x8c60,0x8c40,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x62e0,0x5ac0,0x52a0,0x4a20,0x2960,0x1900,0x2162,0x3203,0x4a85,0x52c6,0x52e6,0x5307,0x5b27,0x6348,0x6388,0x6ba8,0x6bc9,0x740a,0xad4e,0xc611,0x9d2d,0xbdd0,0xd672,0x744a,0x2323,0x2323,0x2b25,0x7c0f,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a25,0x1242,0x1a82,0x1aa2,0x1ae3,0x2303,0x2323,0x2363,0x2363,0x2363,0x2383,0x2383,0x2383,0x2383,0x2384,0x33a4,0x6448,0xd692,0xce72,0x5407,0x2b64,0x2343,0x63cc,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6a,0x7bc9,0x7bea,0x840b,0x7bce,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x6b4c,0x5b07,0x6367,0x7be9,0xad4d,0xb58e,0xa54c,0xd670,0xc60e,0x84aa,0xc60e,0xf731,0xf731,0xf731,0xf731,0xde8f,0x9d0a,0xd66f,0xde8f,0xb5ac,0xde8e,0xce2d,0x94ad,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x6328,0x6305,0x6b4b,0x73ae,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x738e,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x3246,0x0200,0x0200,0x42a2,0x9c86,0x7bc4,0x19c0,0x0180,0x0140,0x0120,0x00e0,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x3a21,0x8c05,0xacc6,0x9466,0x5303,0x2a61,0x73a4,0xc5a7,0xd5ea,0xa4f2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x7bee,0x52c6,0x2201,0x1200,0x1220,0x1a60,0x1a81,0x1aa1,0x1ac1,0x1ac1,0x1ae1,0x22e1,0x2301,0x5ba3,0xa527,0xbda8,0xad68,0x7426,0x2b02,0x12e1,0x12e1,0x12c1,0x5bab,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ae9,0x0a01,0x0a01,0x0a21,0x42c1,0x8c60,0x9480,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x5ac0,0x4220,0x2940,0x10a0,0x1120,0x0981,0x09a1,0x11c1,0x11e1,0x1201,0x1222,0x1242,0x1a62,0x1a82,0x1aa2,0x1ac3,0x22e3,0x2303,0x5bc8,0xa56e,0xc610,0xbdf0,0x8ccc,0x3b65,0x2343,0x2343,0x2b25,0x7c0f,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1242,0x1a82,0x1aa3,0x1ae3,0x2303,0x2343,0x2344,0x2364,0x2384,0x2384,0x2384,0x2384,0x2384,0x2ba4,0x7ccb,0xded3,0xe714,0xe714,0xce71,0x6c49,0x2343,0x63cc,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bcb,0x9cac,0xa4cd,0xa4cd,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x5b2b,0x1a03,0x1242,0x1a62,0x6387,0x9cec,0xb58d,0xad6d,0x6c08,0x2b43,0xa56c,0xf731,0xff52,0xff52,0xff52,0xdeb0,0x53c5,0x7448,0xb5ac,0xc60d,0xb5ac,0x7427,0x63ab,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a67,0x21e4,0x630c,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x738e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x738e,0x3a67,0x0200,0x0200,0x1a00,0x8405,0x9465,0x3201,0x0180,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0140,0x5ac3,0x9c65,0xa4a6,0x6343,0x1a20,0x2a61,0x7be4,0xcdc8,0xd5ea,0xa4f2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ce,0x2a25,0x01c0,0x0a00,0x0a20,0x0a40,0x0a80,0x12a0,0x12a1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x1ae1,0x2b02,0x2301,0x1301,0x1301,0x12e1,0x12e1,0x12c1,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ac9,0x09e1,0x0a01,0x0a21,0x42c1,0x8c60,0x8c60,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x5260,0x2120,0x08e0,0x0960,0x0981,0x09a1,0x09c1,0x11e1,0x1201,0x1222,0x1242,0x1a62,0x1a82,0x1aa2,0x1ac2,0x1ae3,0x2303,0x2303,0x2323,0x3b65,0x53c7,0x43a6,0x2b64,0x2364,0x2344,0x2343,0x2b25,0x73ee,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1242,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2384,0x2384,0x3bc5,0xb5cf,0xef55,0xa56e,0xa58e,0xef34,0xa56e,0x3384,0x63ec,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bab,0x9cac,0xa4ed,0xa4ed,0x83ee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x5b2b,0x1a03,0x1241,0x1262,0x12a2,0x2ae3,0x3b44,0x2b23,0x1b22,0x1b43,0x8cca,0xd690,0xe6d1,0xe6d0,0xe6d1,0xce6f,0x6c27,0x1b62,0x2b63,0x4384,0x3363,0x1b02,0x5bab,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x11c2,0x5aeb,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x6b4c,0x21e3,0x01e0,0x01e0,0x09e0,0x5b03,0x9c86,0x6323,0x11a0,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0140,0x5ac3,0x9c65,0xacc6,0x9c86,0x8404,0x9c85,0xc5a7,0xd608,0xb549,0x94b1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ce,0x3225,0x01c0,0x0a00,0x0a20,0x0a40,0x0a81,0x12a1,0x1ac1,0x1ac1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1b01,0x1b01,0x1b02,0x1ae2,0x1ae1,0x1ac1,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x11e1,0x1201,0x1221,0x42c1,0x8c60,0x8c60,0x8c60,0x8c40,0x8420,0x7be0,0x7bc0,0x7bc0,0x73a0,0x7380,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x5ac0,0x4a60,0x3a20,0x21c0,0x09a1,0x09c1,0x11e1,0x1201,0x1221,0x1242,0x1a62,0x1a82,0x1aa2,0x1ac3,0x1ae3,0x2303,0x2323,0x2323,0x2343,0x2343,0x2364,0x2364,0x2364,0x2364,0x2364,0x2344,0x2b45,0x73ee,0x94b2,0x9492,0x8c51,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1a42,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2b84,0x2b84,0x33a4,0x8d0c,0xe714,0xded3,0xded3,0xe6f4,0x8ccc,0x2b64,0x63ec,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x738b,0x9cac,0xa4ed,0xa4ed,0x7bee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x5b0b,0x1a03,0x1241,0x1262,0x1aa2,0x1ac2,0x1ae2,0x1b02,0x1b23,0x1b22,0x2b63,0x4ba5,0x7c89,0x950b,0x8cca,0x5be6,0x2b63,0x2363,0x2363,0x1b42,0x1b42,0x1b22,0x5bab,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x09c0,0x3a67,0x6b6d,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bad,0x83c8,0x3a62,0x01c0,0x01c0,0x01e0,0x2a21,0x83e5,0x8c25,0x6323,0x29e1,0x0140,0x0120,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x0140,0x31e1,0x7bc4,0xa4c6,0xb527,0xc567,0xcda7,0xc5a7,0x9486,0x5b66,0x8c91,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ce,0x3226,0x01c0,0x09e0,0x0a20,0x0a40,0x2aa1,0x7404,0xa527,0xad67,0xad67,0xad87,0xb588,0xb588,0xb588,0xb588,0xb5a8,0xb588,0xb588,0xad88,0xad68,0xa548,0xa50c,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x738a,0x6b87,0x73c7,0x7be8,0x8407,0x8c61,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x6300,0x6b20,0x6b40,0x6300,0x4240,0x21e1,0x11e1,0x1221,0x1242,0x1a62,0x1a82,0x1aa3,0x1ac3,0x1ae3,0x2303,0x2323,0x2323,0x2343,0x2344,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2344,0x2b45,0x73ee,0x94b2,0x9492,0x8c51,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1a42,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2b84,0x2b84,0x2b84,0x3bc6,0x7cab,0xa58e,0xad8e,0x7cab,0x3ba5,0x2343,0x63ec,0x8c91,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x7bce,0x6b8a,0x9cad,0xa4ed,0xa4ed,0x7bee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b0b,0x1a03,0x1241,0x1262,0x1aa2,0x1ac2,0x1ae2,0x1b03,0x1b23,0x1b23,0x2343,0x8cea,0xded1,0xef11,0xe6f1,0xce6f,0x9d4b,0x950a,0x950a,0x950a,0x8cea,0x8cc9,0x848d,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x09c0,0x19e3,0x634c,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4d,0x630c,0x630c,0x630c,0x630c,0x6b4c,0x6b4c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b4b,0x630b,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x630b,0x738b,0x738b,0x738b,0x7b8b,0x8be9,0x9c67,0xa4a6,0x6b63,0x09e0,0x01e0,0x0200,0x0a00,0x2221,0x5b03,0x83e5,0x7ba4,0x4a62,0x1960,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x0140,0x0160,0x29e0,0x5b03,0x7be4,0x8c25,0x7bc4,0x5302,0x6363,0x94a8,0x9cd1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ce,0x3226,0x09c0,0x09e0,0x1220,0x5323,0x9ce6,0xc5c8,0xb587,0xb567,0xb587,0xb588,0xbd88,0xbda8,0xbda8,0xbda8,0xbda8,0xbda8,0xbda8,0xb588,0xb568,0xad48,0xa50c,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x738a,0x73a7,0x7bc7,0x7be8,0x8427,0x8c61,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6300,0x6320,0x6b40,0x7360,0x7380,0x73a0,0x7380,0x6300,0x4260,0x2241,0x1242,0x1a62,0x1aa2,0x1ac3,0x1ae3,0x2303,0x2303,0x2323,0x2344,0x2344,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2344,0x2b45,0x73ce,0x9492,0x9492,0x8c51,0x8430,0x8410,0x7bef,0x738e,0x3245,0x1242,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2b84,0x2b84,0x2b84,0x2b84,0x2b84,0x3385,0x3385,0x2b84,0x2364,0x2344,0x63ec,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ce,0x634a,0x9cad,0xa4ed,0xa4ee,0x83ee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2203,0x1242,0x1262,0x1a82,0x1ac2,0x1ae2,0x1b03,0x1b23,0x1b43,0x3364,0xbdee,0xeef1,0x9d2b,0xa54c,0xf732,0xe6d0,0xce4f,0xce4e,0xce2e,0xc60e,0xc5ed,0xad2e,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x09c0,0x11c2,0x5b0b,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x632c,0x31e6,0x19a3,0x19a3,0x4264,0x7ba6,0x83e6,0x7bc6,0x83e6,0x83e6,0x83e6,0x8406,0x8406,0x8406,0x8406,0x8406,0x8c26,0x6b65,0x3a63,0x19e2,0x11c2,0x11c2,0x4a83,0x8c26,0x9446,0x9446,0x9446,0x9c65,0x9c85,0xa4a6,0x7bc4,0x1a00,0x0200,0x0200,0x0200,0x09e0,0x1a00,0x3a41,0x6303,0x7384,0x62e3,0x31c1,0x0040,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x01a0,0x01c0,0x09e0,0x1220,0x3aa2,0x8c45,0xb547,0xa4e8,0x94b1,0x94d2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ce,0x3226,0x09e0,0x2a41,0x73e5,0xad27,0xa527,0x6bc4,0x2ac1,0x12c1,0x12c1,0x12c1,0x12e1,0x1ae1,0x1ae1,0x1b01,0x1b01,0x1b01,0x1b02,0x1ae1,0x1ae1,0x1ac2,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x11e1,0x1201,0x1221,0x3aa1,0x8c40,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6320,0x6320,0x6b40,0x6b60,0x7380,0x7380,0x73a0,0x7bc0,0x7bc0,0x73a0,0x6340,0x4aa1,0x2262,0x2aa3,0x32e4,0x3305,0x3b25,0x3b45,0x3b65,0x3b86,0x3b86,0x43a6,0x43a6,0x43a6,0x43a6,0x43a6,0x43a6,0x43a6,0x3b86,0x4386,0x73ce,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x738e,0x3a66,0x2a84,0x2aa4,0x32e4,0x3305,0x3b45,0x3b66,0x4386,0x43a6,0x43a6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43a6,0x43a6,0x3b86,0x6bed,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x5b29,0x9cad,0xa4ed,0xa4ee,0x83ee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2203,0x1222,0x1262,0x1a82,0x4325,0x84aa,0x8ceb,0x950b,0x952c,0x9d2c,0x9d4c,0xe6d1,0xdeb0,0xdeb0,0xef11,0xbdcd,0x9d2b,0x9d4b,0x9d2b,0x9d0a,0x94ca,0x7c2c,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4267,0x2a02,0x2a22,0x52a9,0x738e,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4d,0x4268,0x21c1,0x4262,0x7ba5,0x7ba5,0x4282,0x21e1,0x2201,0x2201,0x2201,0x2a21,0x4aa2,0x6323,0x52e3,0x3a62,0x5b03,0x8405,0x8c45,0x6323,0x2221,0x09e0,0x1a00,0x4282,0x4aa2,0x4aa2,0x4aa2,0x4ac2,0x4ac2,0x52c2,0x4282,0x1220,0x0a00,0x0a00,0x1220,0x5b23,0x9445,0x9445,0x7ba4,0x52c3,0x5ac3,0x5ac3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x10a0,0x18e0,0x2120,0x2960,0x31a1,0x31e1,0x3a01,0x4242,0x4a82,0x52c2,0x52e2,0x7384,0xa4e6,0xad27,0x73c4,0x42c5,0x8c71,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ce,0x3a46,0x52c3,0x8c46,0xa4e7,0x7be5,0x3ac2,0x1281,0x12a1,0x12c1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x1301,0x1301,0x1301,0x1b02,0x12e2,0x12e1,0x12c2,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x52c9,0x11e1,0x0a01,0x1221,0x3aa1,0x8400,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6b20,0x6b40,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7be0,0x7be0,0x7bc0,0x6b40,0x7be9,0x9ccd,0xa52e,0xad6f,0xad8f,0xb5b0,0xbdd0,0xbdf1,0xbe11,0xc631,0xc631,0xc631,0xc631,0xc611,0xbe11,0xbdf1,0xbdd1,0x9490,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ce,0x73cb,0x8c4c,0x948d,0x9cee,0xa54f,0xad90,0xb5d0,0xbe11,0xc631,0xc652,0xc652,0xce52,0xce72,0xce72,0xce72,0xce72,0xce72,0xce72,0xc652,0xc651,0xc631,0xbdf1,0xa551,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x5b09,0x9cac,0xa4ed,0xa4ee,0x83ee,0x83ef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1242,0x1262,0x1a82,0x63a7,0xd650,0xe6b1,0xeef2,0xef12,0xef32,0xa56c,0x7c69,0xb5ad,0xbdee,0x950b,0x950b,0xe6f1,0xf731,0xf711,0xeef0,0xe6af,0xad4e,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x7389,0x7bc6,0x83e6,0x73a8,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4a,0x7385,0x7bc5,0x7385,0x3a62,0x09e0,0x09e0,0x09e0,0x0a00,0x0a00,0x6364,0xa4e7,0xad07,0xace7,0x9486,0x4ae3,0x3261,0x73a4,0x9ca6,0x8c45,0x6b84,0x6b63,0x6b64,0x6b63,0x6b63,0x6b63,0x6b83,0x6b83,0x7383,0x73a4,0x73a4,0x73a4,0x73a4,0x6b84,0xa4a6,0xb506,0x8c25,0x8c05,0x83e5,0x4a62,0x29a1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2941,0x39a1,0x4201,0x5262,0x5aa3,0x6b03,0x7364,0x83c4,0x8c05,0x9445,0x9c86,0xa4c6,0x8425,0x42c2,0x1240,0x2a85,0x8450,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x7bce,0x7387,0x9446,0x8405,0x4ae3,0x1241,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x12e1,0x1302,0x1302,0x1b02,0x12e2,0x12e2,0x12c2,0x5b8a,0x94d2,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x52ca,0x11e1,0x1201,0x3263,0x6ba6,0x8401,0x8c40,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x7be1,0x8c48,0x842a,0x7c2a,0x844b,0x846b,0x848c,0x8cac,0x8ccc,0x8cec,0x8cec,0x94ed,0x94ed,0x8cec,0x8cec,0x8ccc,0x8cac,0x842f,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x5b29,0x6369,0x6ba9,0x73ea,0x7c2b,0x846b,0x8cac,0x8ccc,0x94ed,0x950d,0x950d,0x950d,0x952d,0x952d,0x952d,0x952d,0x952d,0x950d,0x950d,0x950d,0x8ced,0x8ccc,0x8c8f,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x52e8,0x948c,0xa4ed,0xa4ee,0x83ee,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1242,0x1262,0x1a82,0x5b87,0xce30,0xeed2,0xf712,0xf733,0xf753,0xbdce,0x3b85,0x2363,0x2363,0x2363,0x7468,0xe6d0,0xff52,0xf731,0xf710,0xeed0,0xbdaf,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x52a8,0x4a83,0x4aa3,0x4aa5,0x738d,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x630b,0x4244,0x4262,0x2a21,0x09e0,0x1200,0x2221,0x2241,0x1a41,0x1220,0x8425,0xbd88,0x8c45,0x7c05,0xbd47,0x9ca6,0x2261,0x1a41,0x5323,0x8c45,0x9cc6,0x9cc6,0xa4c6,0xa4c6,0xa4c6,0xa4c6,0xa4c6,0xa4e6,0xa4e6,0xa506,0xad06,0xad06,0xb527,0xbd87,0xa4c6,0xb527,0x83e4,0x7364,0x9425,0x6303,0x1120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x08a0,0x10c0,0x1100,0x1920,0x2160,0x21a0,0x29c1,0x3201,0x3221,0x3a61,0x3a81,0x3a81,0x1a40,0x0a20,0x0a40,0x2a85,0x8450,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x840f,0x7bc8,0x52e3,0x2221,0x0a20,0x0a40,0x2281,0x3b02,0x4322,0x4322,0x4342,0x4342,0x4b43,0x4b63,0x4b63,0x4b63,0x4b63,0x4b63,0x4b63,0x4363,0x4343,0x4343,0x63ab,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x52ea,0x2a43,0x4ae5,0x8c49,0x948a,0x7be5,0x8c40,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7be0,0x8400,0x8420,0x8420,0x7be0,0x6b60,0x42e2,0x4b25,0x6be9,0x6c09,0x742a,0x744a,0x744a,0x746a,0x7c6b,0x7c6b,0x7c6b,0x7c6a,0x744a,0x7c0e,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x52e8,0x5327,0x5b68,0x63a9,0x6be9,0x6c0a,0x744a,0x7c6b,0x7c8b,0x7cab,0x7cab,0x84ab,0x84cb,0x84cb,0x84cb,0x84cb,0x84cb,0x84ab,0x7cab,0x7cab,0x7c8b,0x746a,0x846e,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x4287,0x6327,0x6b68,0x7389,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1222,0x1262,0x1a82,0x4b66,0xc5ef,0xeed2,0xf712,0xf733,0xf753,0xce50,0x43a5,0x1b63,0x1b63,0x1b63,0x53c6,0xde90,0xff52,0xf731,0xf711,0xeef0,0xc5f0,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4268,0x09c1,0x09e1,0x1a03,0x632c,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x632c,0x3205,0x09c0,0x09c0,0x2221,0x73a4,0xa4c6,0xa507,0x8c65,0x4b03,0x73e5,0xc5a8,0xc5a8,0xb567,0xcde8,0xad27,0x2a81,0x0a40,0x0a60,0x2281,0x32a1,0x32a1,0x3ac1,0x5343,0x6384,0x6383,0x6383,0x6b83,0x6b83,0x6b83,0x6383,0x42e2,0x5b43,0xb527,0x9c86,0x8425,0xa4a6,0xa485,0x8c05,0x5282,0x0900,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x01a0,0x01c0,0x01e0,0x0200,0x0a20,0x0a20,0x0a20,0x0a40,0x2a85,0x8450,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bcf,0x4267,0x09c0,0x0a00,0x1220,0x42e2,0x94a6,0xbd88,0xc5c8,0xcde8,0xce08,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xc609,0xc5e9,0xb56c,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ab,0x83e8,0x8c69,0x7c08,0x4ac4,0x5321,0x8c20,0x8c40,0x8c40,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7be0,0x7be0,0x8400,0x8420,0x8420,0x7be0,0x7be6,0xa50e,0xbdb0,0xce32,0xbdf1,0xbdf1,0xc611,0xc611,0xc632,0xc632,0xc611,0xbdf1,0x9490,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x7bcc,0x8c6c,0x94ad,0xa50e,0xad6f,0xb5b0,0xbdf1,0xc632,0xce52,0xce72,0xce93,0xd693,0xd693,0xd693,0xd693,0xd693,0xd693,0xce93,0xce92,0xce72,0xce52,0xc611,0xad71,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x3a67,0x1a22,0x1a22,0x2a65,0x6b8d,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1222,0x1262,0x1a82,0x4325,0xb58e,0xe6f2,0xf713,0xf733,0xf753,0xe6d1,0x53c6,0x2363,0x2363,0x2363,0x3b64,0xce4f,0xff52,0xf731,0xf711,0xeef0,0xcdf0,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4268,0x11c1,0x09e1,0x11e2,0x4aa9,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x4268,0x09c0,0x09e0,0x5b03,0xad27,0xb527,0x9ca6,0xc5a8,0xad47,0xa507,0xce09,0xa507,0xad27,0xa4e6,0x6384,0x1281,0x0a80,0x0a80,0x0a80,0x0a80,0x0a60,0x2281,0x9cc6,0xce08,0xd608,0xd608,0xd608,0xcde8,0xcde8,0xcdc8,0x7c04,0x2a61,0x9ca6,0xad06,0x3a81,0x5b03,0x9c65,0x7364,0x4a42,0x39e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x01c0,0x01e0,0x0200,0x0a20,0x0a20,0x0a20,0x0a40,0x2a85,0x8450,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x3a47,0x09c0,0x2a41,0x6b84,0xad27,0xb547,0x8c66,0x8445,0x8465,0x8c85,0x8c86,0x8c86,0x8c86,0x8ca6,0x8ca6,0x8ca6,0x8c86,0x8c86,0x8c86,0x8466,0x8446,0x844b,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x632b,0x52e5,0x4ac5,0x2a42,0x1241,0x2a81,0x73a0,0x8c40,0x8c40,0x8400,0x83e0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8420,0x8403,0x8428,0xad6f,0x740a,0x4b87,0x53a7,0x53a7,0x53c8,0x53c8,0x53c8,0x53a8,0x73cd,0x8c91,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x738e,0x42a8,0x3aa5,0x3ac5,0x4306,0x4346,0x4b67,0x53a7,0x53c7,0x53e8,0x53e8,0x53e8,0x5c08,0x5c08,0x5c08,0x5c08,0x5c08,0x5c08,0x5408,0x5408,0x53e8,0x53c7,0x53c7,0x740d,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x3a67,0x1202,0x1222,0x2a65,0x6b6d,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1222,0x1262,0x1a82,0x3304,0xa54d,0xe6f2,0xef13,0xf733,0xff53,0xef12,0x6c28,0x6427,0x8cea,0x8cea,0x6c28,0xbdee,0xf732,0xff32,0xf711,0xeef0,0xcdf0,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4268,0x11c1,0x09e1,0x09e1,0x4288,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x4a89,0x09c1,0x09e0,0x5303,0xb527,0xad27,0x73e5,0xbd88,0xce08,0xb568,0xce29,0x7c05,0x8465,0x8465,0x5b83,0x2ac1,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x1280,0x9486,0xe669,0xee89,0xeea9,0xee89,0xe689,0xe669,0xe648,0xb526,0x2a81,0x73a4,0xb526,0x6b63,0x3a41,0x8c05,0x9405,0x7b64,0x62c3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2940,0x31a1,0x41e1,0x4a22,0x5282,0x5ac3,0x6303,0x6b43,0x7384,0x7ba4,0x7be4,0x8404,0x8404,0x8425,0x8425,0x8447,0x9490,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8430,0x7bcf,0x3a67,0x42a2,0x8425,0xa4e7,0x8c45,0x42e2,0x1aa1,0x12a1,0x1ac1,0x1ae1,0x1ae1,0x1ae1,0x1b01,0x1b01,0x1b02,0x1b02,0x1b02,0x1b02,0x1b02,0x1ae2,0x1ae2,0x536a,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5aeb,0x1a02,0x1201,0x1221,0x1241,0x1241,0x6380,0x8c40,0x8c40,0x8420,0x8400,0x7be0,0x7ba0,0x7380,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8420,0x7be2,0x6342,0x4b04,0x94cd,0x9d2e,0xa54e,0xa54f,0xa54f,0xa54e,0x8c4f,0x9491,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x52e9,0x3aa5,0x42e6,0x4b26,0x5367,0x5387,0x5bc7,0x5be8,0x6408,0x6408,0x6428,0x6428,0x6428,0x6428,0x6428,0x6428,0x6448,0x6428,0x6428,0x6408,0x6408,0x5bc8,0x740e,0x8c71,0x8c51,0x8430,0x7bef,0x7bef,0x7bcf,0x73ae,0x6b6a,0x6b89,0x6ba9,0x73ca,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b4c,0x6349,0x5307,0x1a62,0x1a82,0x22c3,0x846a,0xd671,0xe6f2,0xce50,0xce50,0xce30,0x9d0b,0xdeb1,0xef12,0xe6f1,0xded1,0xc60e,0xce2f,0xce2e,0xd64e,0xe6b0,0xbdaf,0x8c50,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4288,0x11e2,0x09e1,0x09e1,0x3a66,0x738e,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x52ca,0x19e3,0x2a21,0x7bc5,0xb547,0xbd68,0xc5c8,0xce08,0xad47,0x8c66,0xde49,0xde69,0xe6a9,0xde69,0xd669,0x9ce6,0x32e2,0x0aa1,0x0aa1,0x0aa1,0x0aa0,0x12a0,0x6384,0xde48,0xeea9,0xeea9,0xeea9,0xee89,0xee89,0xe668,0xcde7,0x5322,0x3aa2,0xace6,0x8c45,0x7ba4,0x9445,0x8bc4,0x7343,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0840,0x39a1,0x4201,0x5262,0x5ac3,0x6b03,0x7364,0x83c4,0x8c05,0x9445,0x9c85,0xa4c6,0xa4e6,0xad06,0xad06,0xad26,0xad08,0x9cd0,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bcf,0x6b68,0x9446,0x8c26,0x5303,0x2261,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x12e1,0x1302,0x1302,0x12e2,0x1ae2,0x1ae2,0x1ae2,0x22e2,0x5b8a,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5b0b,0x1a03,0x1201,0x1221,0x1241,0x1262,0x3ac1,0x7be0,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8400,0x7bc2,0x94ab,0xc5f1,0xd652,0xd693,0xde93,0xd673,0xa4f0,0x9491,0x8c71,0x8c51,0x8410,0x8410,0x7bef,0x7bef,0x73ce,0x840d,0x94ae,0xa50f,0xad70,0xbdd1,0xc612,0xce53,0xce73,0xd694,0xd6b4,0xded4,0xded4,0xdef4,0xdef4,0xdef4,0xded4,0xded4,0xd6d4,0xd6b4,0xce73,0xb592,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ce,0x73cb,0x7bea,0x840b,0x842b,0x7bce,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x8c4c,0x842a,0x2283,0x1a82,0x1ac3,0x3304,0xa54d,0xe6d2,0xdeb1,0xdeb1,0xdeb1,0xe6d1,0xf753,0xb5ae,0x94eb,0xded1,0xd690,0x6407,0x4385,0x63e7,0xd66f,0xad6e,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4a89,0x11e2,0x09e1,0x09e1,0x2a25,0x634c,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x632c,0x3a45,0x73a4,0xace7,0x8c46,0x5323,0x6363,0x6384,0x4302,0x63a4,0xd649,0xf6ea,0xce08,0x7c45,0xc5e9,0xde89,0x7c25,0x12a1,0x12a1,0x12a1,0x12a0,0x12a0,0x32e1,0xc5c8,0xf6c9,0xf6c9,0xeec9,0xeea9,0xee89,0xe668,0xd608,0x8c45,0x2241,0x8c25,0xa4c6,0x9c65,0x9425,0x5262,0x5282,0x62c3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x08c0,0x0900,0x1140,0x1160,0x1980,0x19c0,0x19e0,0x2200,0x2220,0x2241,0x2a61,0x2a61,0x2a81,0x2a81,0x3aa5,0x8c70,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x840f,0x7bc8,0x6344,0x2a41,0x0a20,0x0a40,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x12e2,0x1302,0x1302,0x12e2,0x1ae2,0x2302,0x63e4,0x9d07,0xa52c,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5b0b,0x1a03,0x1201,0x1221,0x1241,0x1262,0x2282,0x73c3,0x8420,0x8c20,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8401,0x8404,0xad0e,0xc5f1,0xce12,0xce12,0xad30,0x8c71,0x8c51,0x8430,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bcf,0x634b,0x5307,0x5347,0x5b88,0x63c8,0x63e9,0x6c09,0x6c29,0x6c29,0x6c49,0x6c4a,0x7449,0x744a,0x7449,0x7449,0x6c49,0x6c29,0x6c29,0x7c4d,0x9491,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6d,0x3266,0x2243,0x2243,0x3285,0x6b6d,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x842b,0x8c6b,0x2a63,0x1a82,0x1ac3,0x22e3,0x8ccb,0xdeb2,0xad6d,0x94ec,0x94ec,0xa54c,0xdeb1,0xe6f2,0xd670,0xef12,0xce2f,0x4ba6,0x1b23,0x4365,0xce2e,0xbdaf,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4aa9,0x11e2,0x09e1,0x09e1,0x1a02,0x5b0b,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x7387,0x9c86,0x83e5,0x3282,0x1261,0x1281,0x1281,0x5343,0xb587,0xde89,0xd629,0xe689,0xce08,0xe689,0xe689,0x7c25,0x12c1,0x12a1,0x12a0,0x12a1,0x12a0,0x22c1,0x9cc6,0xeec9,0xf6c9,0xeec9,0xeea9,0xee89,0xe648,0xde28,0xace6,0x3261,0x4ac2,0x7bc4,0x7ba4,0x8be5,0x6b23,0x5aa3,0x5aa3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x01c0,0x01e0,0x09e0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a40,0x2a85,0x8450,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bef,0x4aa7,0x11e0,0x09e0,0x0a20,0x0a40,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e2,0x12e2,0x12e2,0x12e2,0x1302,0x1302,0x12e2,0x1ae2,0x7425,0xce29,0xd64a,0xb56c,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x42a5,0x4ac4,0x4ae4,0x5305,0x5325,0x73e8,0x9ccb,0x7bc3,0x8400,0x8400,0x83e0,0x7bc0,0x73a0,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7bc0,0x7be0,0x7be0,0x73a0,0x6b47,0x73ea,0x740b,0x7c2b,0x740b,0x7c0f,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bcf,0x5b2b,0x3ac5,0x4b46,0x5387,0x53a7,0x5bc8,0x5be8,0x5c08,0x5c08,0x6408,0x6428,0x6428,0x6428,0x6428,0x6408,0x5be8,0x5baa,0x8450,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bce,0x6b8c,0x42a6,0x1a22,0x1242,0x2a85,0x6b6d,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x7beb,0x948c,0x3284,0x1a82,0x1ac3,0x22e3,0x7c49,0xd692,0x94eb,0x2344,0x2343,0x2b64,0x6c28,0xad6d,0xc60f,0xad8d,0x6c28,0x2344,0x1b23,0x3b64,0xb5ad,0xc5f0,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4aa9,0x11e2,0x09e1,0x0a01,0x0a01,0x52ea,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x7b89,0x7364,0x2a41,0x0a21,0x0a41,0x1261,0x4b23,0xb567,0xd649,0x94c6,0x5363,0x8c86,0xd629,0xe6a9,0x94a6,0x3302,0x12a1,0x12a1,0x12a1,0x12a0,0x12a0,0x12a1,0x63a4,0xde89,0xeec9,0xe6a9,0xe689,0xe669,0xde48,0xd608,0xb547,0x5302,0x01e0,0x01a0,0x19a0,0x4242,0x5ac3,0x5aa2,0x4a22,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a40,0x2a85,0x8430,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x3a67,0x09c0,0x09e0,0x0a00,0x0a40,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e1,0x12e2,0x12e2,0x12e2,0x1302,0x1302,0x12e2,0x2b02,0xa507,0xeeea,0xa507,0x7c2a,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bcc,0x8c29,0x948a,0x9cca,0xa50b,0xad2c,0xad4c,0x8c6a,0x5303,0x7bc0,0x8400,0x83e0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7360,0x6b60,0x6b60,0x6b60,0x6b40,0x6300,0x4a61,0x8c4c,0xa52f,0xad4f,0xad70,0xad70,0x9cef,0x8c50,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bef,0x7bef,0x7bef,0x842e,0xa52f,0xb590,0xbdd1,0xc612,0xc632,0xce73,0xce73,0xd693,0xd693,0xd6b3,0xd6b3,0xd693,0xd693,0xc612,0x9cd1,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6d,0x7bec,0x8c4c,0x5b48,0x2a84,0x2a85,0x6b8d,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x73aa,0x9cad,0x42e5,0x2ac4,0x6be9,0x744a,0x8ccc,0xdeb2,0xbdef,0x84cb,0x7caa,0x3384,0x2363,0x3364,0x3b85,0x3364,0x2b64,0x7448,0x84aa,0x84aa,0xb5ad,0xc5f0,0x8c50,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x52aa,0x19e2,0x09e1,0x0a01,0x1201,0x42a8,0x73ae,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x5b0a,0x2202,0x0a01,0x0a21,0x0a41,0x1a81,0x7c05,0xd629,0x9ce6,0x2ae1,0x12a1,0x22c1,0x8ca6,0xde69,0x8445,0x12c1,0x12a1,0x12a1,0x12a1,0x1281,0x1281,0x1281,0x22a1,0x5b43,0x6363,0x6363,0x8c45,0xd628,0x9445,0x5b02,0x4ac2,0x2221,0x01e0,0x01a0,0x0180,0x0160,0x1140,0x1120,0x08e0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x08a0,0x08e0,0x1100,0x1140,0x1960,0x19a0,0x21c0,0x21e0,0x2200,0x2a21,0x2a41,0x2a61,0x2a61,0x2a81,0x2a81,0x3aa5,0x8430,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x4267,0x09c0,0x09e0,0x0a20,0x0a41,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12c1,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x2302,0x8c86,0xde8a,0xde69,0xc5ac,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x4285,0x42a4,0x42c4,0x4ae4,0x4b05,0x4b05,0x2aa3,0x1a82,0x5b02,0x7bc0,0x7be0,0x7bc0,0x7bc0,0x7ba0,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x5ae0,0x52a0,0x4263,0x5307,0x6368,0x6389,0x6ba9,0x6bc9,0x63a9,0x5b6a,0x7c0f,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x840f,0x7bcd,0x5b68,0x5388,0x5ba8,0x5bc9,0x63e9,0x6409,0x6409,0x6409,0x6429,0x6429,0x6409,0x6c0b,0x8c90,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6d,0x3a87,0x3264,0x73aa,0x94ad,0x846c,0x7c0b,0x73ce,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x6b69,0x9cad,0x5b47,0x4305,0xbdcf,0xd672,0xdeb2,0xef13,0xef33,0xef33,0xe6f3,0x6c28,0x2363,0x2343,0x2363,0x2363,0x4385,0xbdee,0xef12,0xeef1,0xe6d1,0xce10,0x8c70,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x52ca,0x19e2,0x09e1,0x1a21,0x5b44,0x73a7,0x7bce,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x6b6c,0x6345,0x4ac2,0x1221,0x4ae3,0x8425,0x9cc6,0xd629,0xb567,0x5b63,0x1aa1,0x6bc4,0xad27,0xe689,0xc5c8,0x94c6,0x4b22,0x12a1,0x0a81,0x0a81,0x0a81,0x0a81,0x0a81,0x0a81,0x0a81,0x0a60,0x5b43,0xc5a8,0x9ca5,0x2a61,0x0a00,0x09e0,0x01c0,0x01a0,0x0160,0x1160,0x31c1,0x31a1,0x2940,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0840,0x39a1,0x4a22,0x5262,0x62c3,0x6b23,0x7384,0x83c4,0x8c25,0x9465,0x9ca5,0xa4c6,0xa4e6,0xad06,0xad26,0xad26,0xad28,0x9cd0,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x3a68,0x09c0,0x09e0,0x0a20,0x0a41,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12c2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x3302,0x7405,0x9cc7,0x94ab,0x9492,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x2224,0x1201,0x1242,0x1262,0x1282,0x12a2,0x22c3,0x5b87,0x9ccc,0x8407,0x7bc0,0x7be0,0x7bc0,0x7ba0,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5aa0,0x4220,0x52a6,0x8c6d,0x9cce,0xa50f,0xad50,0xb590,0xb5b1,0xad70,0x9cee,0x94ae,0x8c50,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x6b8d,0x32a6,0x22c3,0x22e4,0x22e4,0x2304,0x2304,0x2324,0x2324,0x2324,0x3b47,0x7c0f,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x738e,0x4288,0x1a22,0x1222,0x2a63,0x73aa,0xad4f,0xb570,0x8c2f,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x634c,0x5b08,0x9ccd,0x6ba9,0x3ae5,0xbdaf,0xdeb2,0xeef3,0xef13,0xf734,0xf754,0xf733,0x8ceb,0x2b64,0x2343,0x2343,0x2343,0x3b85,0xb58d,0xf732,0xf732,0xeef1,0xce10,0x8c70,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x52ca,0x19e3,0x09e1,0x2a42,0x8406,0xb528,0x944d,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x73ad,0x8c07,0x7bc4,0x2a41,0x6364,0xbd68,0xd5e8,0xde49,0xde49,0x9ca6,0x2aa2,0x8c86,0xde69,0xeea9,0xee89,0xe669,0x8c65,0x22a1,0x0a80,0x0a80,0x0a80,0x0a60,0x0a60,0x0a60,0x0a60,0x0a60,0x2a81,0xa4e6,0xbd67,0x42c2,0x0a00,0x01e0,0x01c0,0x01a0,0x0160,0x1980,0x5a83,0x62e3,0x5242,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2940,0x31a1,0x41e1,0x4a42,0x5282,0x5ac2,0x6303,0x6b43,0x7383,0x7ba4,0x7bc4,0x83e4,0x8404,0x8424,0x8c24,0x8c26,0x9490,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bcf,0x3a68,0x09c0,0x09e0,0x0a21,0x1241,0x2281,0x2aa2,0x22c1,0x12c1,0x12c1,0x12c2,0x12c2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x1ae2,0x1ae2,0x4b49,0x8c91,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x2224,0x1201,0x1a42,0x2283,0x2aa3,0x3ae4,0x846a,0xb58e,0xa50d,0x6387,0x5b42,0x7bc0,0x7bc0,0x7ba0,0x7380,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x52a0,0x4220,0x39e3,0x7bcb,0x9cce,0xad2f,0xb570,0xbdd1,0xc612,0xce33,0xbdb1,0x94ad,0x8c6c,0x73cb,0x73ce,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x73ae,0x638c,0x638c,0x63ac,0x63ac,0x63ac,0x638c,0x638c,0x5b8b,0x73ee,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x4ac9,0x2243,0x1222,0x1a42,0x1a62,0x5b68,0xad4f,0xbdb0,0x8c4f,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x634c,0x4ac7,0x9ccd,0x7c0a,0x32c4,0xb56e,0xde92,0xe6d3,0xef13,0xf734,0xff54,0xf754,0xa56d,0x2b64,0x2343,0x2343,0x2343,0x2b44,0x950b,0xf732,0xf732,0xeef1,0xce10,0x9470,0x8c51,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x52ca,0x1a03,0x0a01,0x1a21,0x73a5,0xbd68,0x946c,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738d,0x738a,0x7388,0x4287,0x52e7,0x9449,0xacea,0xad0a,0xb52a,0x9469,0x5309,0x6b89,0xad0a,0xbd4a,0xbd4a,0xbd4b,0x946a,0x4ae8,0x4ac8,0x4ac8,0x4ac8,0x4ac9,0x4ac9,0x4ac9,0x3aa7,0x2263,0x0a41,0x8405,0xc587,0x6b63,0x1200,0x01e0,0x01c0,0x0180,0x0160,0x0940,0x4222,0x62e3,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x09a0,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x2a64,0x8430,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bef,0x4288,0x09c0,0x09e0,0x3262,0x73c4,0xa527,0xb587,0x9ce6,0x4b43,0x12c1,0x12c2,0x12c2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x1ae2,0x1ae2,0x1ae2,0x1ac2,0x4b49,0x8c91,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x6b6d,0x2224,0x3284,0x73c8,0x9ceb,0xa50c,0xad6d,0xbdcf,0x94ab,0x4325,0x1aa2,0x2282,0x52c0,0x7380,0x73a0,0x73a0,0x73a0,0x7380,0x7360,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x5280,0x4200,0x31c0,0x52c7,0x842c,0x948d,0x9cce,0xad2f,0xb570,0xbdb1,0xbdd2,0x9d0e,0x3304,0x22e4,0x22c3,0x32c6,0x6bad,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x7bce,0x840d,0x8c4c,0x6baa,0x3aa5,0x1a42,0x1a63,0x5367,0xb56f,0xc5d1,0x946f,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x634c,0x42a7,0x9ccd,0x844b,0x32c4,0xa50d,0xde92,0xe6d3,0xef13,0xf754,0xff54,0xf754,0xbdef,0x2b64,0x2343,0x2343,0x2343,0x2343,0x7c69,0xef12,0xf732,0xeef1,0xce10,0x9490,0x8c51,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x5aeb,0x1a03,0x1201,0x1201,0x5b44,0xb548,0xa4aa,0x840f,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x7bef,0x840f,0x840f,0x840f,0x840f,0x8410,0x8410,0x8430,0x8c30,0x8c30,0x8c30,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7c0f,0x7bef,0x73ae,0x42a7,0x73a4,0xbd67,0x9ca5,0x52e2,0x2200,0x01c0,0x0180,0x0160,0x0140,0x31a1,0x5aa3,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x2a64,0x7c0f,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8c51,0x7bef,0x4288,0x09e0,0x2221,0x8425,0xc5a8,0xb567,0xcdc8,0xe689,0xb588,0x94c6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94c6,0x94c6,0x8ca6,0x8c8a,0x94b1,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ad,0x6368,0x8c4a,0xad2d,0xa4ec,0xbd8e,0xd650,0x8c8b,0x2ae4,0x1ac3,0x1ac3,0x1aa2,0x2262,0x4ae1,0x6b40,0x7380,0x73a0,0x7380,0x7360,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x52a0,0x4a60,0x39c0,0x39c2,0x3a44,0x4285,0x4ac6,0x5306,0x5b27,0x6368,0x63a8,0x6bc9,0x6be9,0x6be9,0x5ba8,0x5ba8,0x5b88,0x5367,0x5b68,0x73cd,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bce,0x840d,0x840b,0x7c0b,0x9cce,0x842b,0x2a83,0x1a83,0x5347,0xb56f,0xce12,0x9490,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x634c,0x3a86,0x9cad,0x8c8c,0x32c4,0x94ac,0xde92,0xeef3,0xf734,0xf754,0xff74,0xff74,0xce71,0x3b64,0x2343,0x2343,0x2343,0x2343,0x6c28,0xe6b1,0xf732,0xeef1,0xd630,0x9490,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5aeb,0x1a03,0x1201,0x1221,0x4b04,0xad08,0xb529,0x8c2f,0x7bef,0x7bef,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bce,0xa4c9,0xbd47,0xad06,0xace6,0x7bc4,0x52c2,0x4a82,0x4241,0x3a01,0x39e1,0x5262,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x1a63,0x6bad,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x7bef,0x4287,0x09e0,0x4ae2,0xad07,0xbd88,0x73c4,0xad07,0xe689,0xde69,0xd629,0xd649,0xd649,0xd649,0xd669,0xd649,0xd649,0xd649,0xd649,0xd649,0xd629,0xce09,0xbdab,0x9cd1,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x7bed,0x946a,0xad2c,0x9ccb,0x6387,0xa50c,0xd650,0x7c29,0x22e3,0x1ae3,0x2b04,0x4325,0x4305,0x2aa3,0x3262,0x52c0,0x6b40,0x7360,0x7360,0x6b60,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x5280,0x4220,0x3160,0x39c4,0x73ab,0x840c,0x8c4c,0x948d,0x9cce,0xa52f,0xad70,0xb5b1,0xbdf2,0xc612,0xc633,0xce33,0xc633,0xc612,0xbdf2,0xb5b1,0xad30,0x8c6f,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x738c,0x946d,0x73aa,0x5b27,0xa4ee,0x9ccd,0x42e5,0x1aa3,0x4346,0xb590,0xd652,0xad31,0x8c51,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x632c,0x3265,0x948c,0x9ccd,0x3b05,0x7c2a,0xd672,0xe6b3,0xe6f3,0xef13,0xef34,0xf734,0xd691,0x4ba6,0x2343,0x3385,0x53c7,0x4ba6,0x5be7,0xce2f,0xeef2,0xe6d1,0xce10,0x9490,0x8c51,0x8430,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5aeb,0x1a03,0x1201,0x1221,0x3aa3,0x9cc7,0xc5a9,0x8c4e,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x9c6b,0x9445,0x5b03,0x9445,0xacc6,0x9445,0x8be4,0x83a4,0x7343,0x62e3,0x5aa2,0x5242,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a40,0x0a41,0x3ac7,0x8450,0x94b2,0x9492,0x9492,0x8c71,0x8430,0x52ea,0x11e1,0x09e0,0x3aa2,0xa4c6,0xce08,0xcde8,0xd649,0xbda8,0x5b84,0x3b02,0x3b02,0x3b02,0x3b02,0x3b02,0x3b22,0x3b22,0x3b03,0x3b03,0x3b03,0x3b03,0x3ae3,0x3ae5,0x7c0f,0x9cd3,0x94b2,0x8c71,0x8c51,0x8c51,0x8430,0x530a,0x42a5,0x948a,0xbd8d,0xbd8e,0xce0f,0xad4d,0x4b66,0x2303,0x5bc7,0xa52d,0xbdcf,0xb5af,0x8cab,0x3ae4,0x2a42,0x4240,0x5ac0,0x6b40,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x52a0,0x5280,0x4a40,0x39c0,0x31a0,0x1961,0x3204,0x4265,0x42a6,0x6b89,0x844c,0x948d,0x9cce,0xa50e,0xa54f,0xad70,0xad90,0x9d0e,0x740a,0x6c0a,0x6bea,0x6be9,0x63c9,0x6388,0x5348,0x636c,0x7bef,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b0b,0x4aa7,0x842c,0x9cce,0xa50f,0xad2f,0x7c0b,0x22a3,0x1ac3,0x3b05,0xb590,0xde93,0xce12,0x9cb1,0x8c50,0x8430,0x8410,0x7bef,0x7bee,0x634a,0x2a64,0x8c6b,0xa52e,0x5346,0x4b46,0x846b,0x8c8b,0x8cac,0x8ccc,0x94cc,0x94ec,0x84aa,0x4385,0x5be7,0xb5ce,0xd691,0xce70,0xad6d,0x8caa,0x8cab,0x8c8a,0x7c4a,0x842e,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x4288,0x1202,0x1201,0x1221,0x2262,0x8426,0xb548,0x8c2c,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x8c0b,0xa4a6,0x8c05,0x9c65,0xa485,0x5ac3,0x3a01,0x31c1,0x29a0,0x2160,0x2961,0x4202,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00a0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a40,0x0a40,0x0a40,0x1242,0x5308,0x8c4e,0x9cd1,0x9cb1,0x8c4f,0x738a,0x5b04,0x5b03,0x5b23,0x6343,0x7be4,0xa4e6,0xb547,0xa4e6,0x8445,0x7c04,0x7c24,0x7c24,0x7c25,0x7c25,0x7c45,0x7c45,0x7c45,0x7c45,0x7c25,0x7c25,0x7c25,0x7425,0x7406,0x7c0a,0x94b0,0x94b2,0x9492,0x8c71,0x8c51,0x7bed,0x5b27,0x5b26,0x73a7,0x948a,0xa50c,0x9ccb,0x7c49,0x7428,0x7c69,0xbdef,0xde91,0xb58e,0xc5f0,0xd631,0x94ab,0x63a8,0x6367,0x6346,0x6305,0x5ae2,0x6300,0x6b20,0x6b20,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x52a0,0x52a0,0x5280,0x4a40,0x39c0,0x2960,0x1900,0x11a1,0x11c1,0x11e2,0x1202,0x1a23,0x842c,0xb590,0xc5f2,0xce33,0xd673,0xdeb4,0xe6f5,0xe6f5,0xce73,0x8ced,0x4ba7,0x2324,0x2304,0x22e4,0x22e3,0x1ac3,0x22a4,0x532a,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x632c,0x2a25,0x1a02,0x3a85,0x5b28,0x6b89,0x5347,0x32c4,0x1ac3,0x1ae3,0x2b04,0xad8f,0xe6b4,0xdeb3,0xce12,0xa4f0,0x9470,0x8c50,0x8c2e,0xa4ce,0x840b,0x2a83,0x7c2a,0xbdb0,0xad6e,0xad8e,0xb5af,0xbdef,0xc610,0xc630,0xc630,0xc630,0xc650,0xc650,0xdeb1,0xf753,0xd691,0xce30,0xef13,0xc60f,0x8ceb,0x8cca,0x84aa,0x8c6b,0x844f,0x8430,0x8410,0x7bef,0x7bcf,0x5b0b,0x3244,0x2a42,0x2a62,0x2a83,0x32a2,0x42e3,0x5b44,0x5306,0x6b6c,0x7bef,0x7bef,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b4d,0x52a8,0x6b24,0x83e5,0x8be5,0x6323,0x29e1,0x1160,0x0140,0x0100,0x00e0,0x00c0,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a41,0x1a61,0x6383,0xa506,0xbd88,0xb548,0xad07,0xace7,0xa4c6,0xa4a6,0xa4c6,0xace6,0xb527,0xbd67,0xc5a8,0xcde8,0xce08,0xd628,0xd649,0xd649,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xd649,0xd64a,0xce2b,0xc5eb,0xbd8c,0x9cae,0x8c6f,0x8c4e,0x8c4c,0x9cab,0x9cca,0xa4eb,0xad0b,0xb54d,0xbdae,0xc5ce,0xc60f,0xce30,0xd670,0xe6d2,0xd650,0x7c6a,0xb58e,0xde92,0xc5f0,0xb58f,0xad6e,0xa50e,0x9ccd,0x840a,0x7368,0x5281,0x52a0,0x5ac0,0x6300,0x6300,0x6300,0x6300,0x6300,0x5ae0,0x5ac0,0x5ac0,0x5aa0,0x5aa0,0x5aa0,0x5aa0,0x5aa0,0x52a0,0x5280,0x4a40,0x4220,0x31a0,0x2961,0x31c3,0x21a2,0x11c2,0x11e2,0x11e2,0x1202,0x1222,0x2263,0x94ad,0xc5f2,0xce53,0xd694,0xded5,0xe6f5,0xef36,0xef36,0xded5,0xdeb5,0xbdf2,0x6409,0x2324,0x2304,0x22e4,0x22e3,0x1ac3,0x22a4,0x4ae9,0x6b8d,0x73ce,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x5b0b,0x2a25,0x1202,0x1222,0x1222,0x1a62,0x1a83,0x1aa3,0x1ac3,0x1ae3,0x1ae3,0x2304,0xad6f,0xe6d4,0xe6d4,0xdeb3,0xd673,0xce32,0xc5f1,0xc5d1,0xbdb0,0x94ac,0x2aa3,0x5b47,0x94ac,0x9ced,0xa50d,0xad4e,0xad6e,0xb58f,0xb5af,0xb5af,0xb5af,0xb5cf,0xbdcf,0xd671,0xf733,0xb5ce,0x8cab,0xe6f2,0xef12,0xd670,0xce2f,0xce2f,0xd670,0x9d0c,0x638c,0x6b8d,0x636c,0x4ac9,0x2a64,0x8408,0x9469,0x94a9,0x9cc9,0xa4e9,0xa508,0xa508,0xa507,0xa4e7,0x9c8b,0x840e,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738a,0x7366,0x6b45,0x7364,0x7364,0x7344,0x6b43,0x5ac3,0x31c2,0x0921,0x00e0,0x00c0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x0180,0x09a0,0x09c0,0x0a00,0x0a20,0x0a20,0x1241,0x3ac2,0x9485,0xc5a7,0xad26,0x6b84,0x5302,0x4ae2,0x4ac2,0x4ac2,0x4ac2,0x4ac2,0x4ae2,0x4b03,0x5323,0x5343,0x5b63,0x5b63,0x5b83,0x63a4,0x63a4,0x63a4,0x63a4,0x63a4,0x63c4,0x63c4,0x63c4,0x63c4,0x63c4,0x63a4,0x63a4,0x63a4,0x5b84,0x5b84,0x5364,0x5344,0x5324,0x4b04,0x4ae4,0x4ae4,0x4ae4,0x4ae4,0x4b05,0x5325,0x5366,0x5b86,0x5ba6,0x5ba7,0x6c08,0xc5ef,0xe6d2,0xde91,0xde92,0xb58f,0x63c8,0x5386,0x5366,0x4b26,0x4b06,0x6b88,0x73c9,0x5ae6,0x4244,0x4221,0x4a80,0x4200,0x4a40,0x5280,0x5280,0x5280,0x5280,0x5280,0x5280,0x5280,0x4a40,0x4220,0x39e0,0x39c0,0x39e0,0x2980,0x2180,0x19a1,0x19a2,0x2a03,0x11e2,0x11e2,0x1202,0x1222,0x1242,0x1a62,0x2283,0x73ea,0x94ad,0x9cee,0x9d2f,0xa54f,0xad70,0xad90,0xad90,0x8ccd,0x8cad,0xd694,0xce73,0x7c8c,0x2b25,0x2304,0x22e4,0x22e4,0x1ac3,0x1aa3,0x2284,0x3ac7,0x4ae9,0x4ac9,0x4ac9,0x4aa9,0x4aa9,0x4aa9,0x4aa9,0x4ac9,0x52ca,0x52ea,0x5aeb,0x5aeb,0x42a8,0x3246,0x1a03,0x1222,0x1222,0x1242,0x1a62,0x1a83,0x1aa3,0x1ac3,0x1ae3,0x22e3,0x2304,0x2324,0x742a,0x9d0d,0x9d0d,0x9d0d,0xc631,0xc611,0x8c8c,0x8c6b,0x844b,0x6bc9,0x22a3,0x1aa3,0x1ac3,0x1ae3,0x2303,0x3345,0x4386,0x4386,0x4386,0x4386,0x4386,0x4386,0x3b65,0x6408,0xd671,0xef13,0xe6f2,0xef13,0xbdce,0x6407,0x5bc7,0x6be8,0xc5ee,0xbdad,0x4b25,0x32c4,0x2282,0x1242,0x2a62,0xa4ea,0xb54b,0x8c48,0x8c48,0x9467,0x9487,0x9487,0x9486,0x9466,0x8c25,0x6b68,0x632b,0x632b,0x5b0b,0x5aeb,0x5aea,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aca,0x52a9,0x52a7,0x62e4,0x6b23,0x6b23,0x6b23,0x6b03,0x6303,0x62e3,0x6b03,0x6303,0x4201,0x1100,0x00a0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x0a00,0x2261,0x6ba4,0xb547,0xc5c7,0x8c65,0x3aa2,0x1261,0x0a40,0x0a40,0x0a20,0x0a20,0x0a21,0x0a41,0x0a41,0x1261,0x1261,0x1281,0x1281,0x12a1,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1a82,0x1282,0x1262,0x1262,0x1262,0x1262,0x1262,0x1282,0x1aa2,0x1ac3,0x1ae3,0x1ae3,0x1b03,0x2303,0x4b86,0x94cb,0xa52d,0x846a,0x4345,0x2303,0x1ae3,0x1ae3,0x1ac3,0x1aa3,0x1a83,0x2283,0x2263,0x1a42,0x1a22,0x1a02,0x19c1,0x31e0,0x3a20,0x4240,0x3a20,0x29a0,0x2960,0x31c0,0x4220,0x3a00,0x31c0,0x2180,0x1140,0x11a1,0x11c1,0x11e2,0x11e2,0x11e2,0x1202,0x1202,0x1222,0x1242,0x1a62,0x1a63,0x1a83,0x1aa3,0x22c4,0x2b04,0x2b05,0x3325,0x3345,0x3345,0x3365,0x3365,0x2b65,0x2b65,0x6c2a,0xce53,0xd6b5,0x9d4f,0x848c,0x7c6c,0x7c6c,0x744b,0x742b,0x73ea,0x6bca,0x6baa,0x6389,0x6369,0x6369,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b48,0x5b48,0x5b48,0x6369,0x6389,0x63a9,0x6bca,0x6bea,0x5ba8,0x2b04,0x22e3,0x2304,0x2324,0x2324,0x2b44,0x2b44,0x2b24,0x3b45,0xb5b0,0xc611,0x4325,0x22e3,0x22c3,0x22c3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x3345,0x94ec,0xc630,0xc630,0xce51,0xce50,0xce50,0xce71,0x9d4d,0x3b65,0x53c6,0x94eb,0xad6d,0x8ccb,0x6c07,0xb5ae,0xc60f,0xc60e,0xde90,0xde70,0xb58d,0xad4c,0x6386,0x1a82,0x2282,0x94aa,0xb56b,0x5325,0x22a2,0x22a2,0x22a2,0x22c2,0x22a2,0x22a2,0x2282,0x2262,0x32a3,0x5324,0x5b24,0x5304,0x52e4,0x52c4,0x52c3,0x52c3,0x52c3,0x4ac3,0x4ac3,0x4ac3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4a83,0x4a82,0x4a82,0x4a82,0x4a82,0x4a62,0x4242,0x29c1,0x1160,0x2160,0x4a22,0x5a82,0x4202,0x2120,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x09c0,0x1200,0x42a2,0x9485,0xc5a7,0xad06,0x6363,0x2281,0x0a61,0x0a61,0x0a40,0x0a41,0x0a41,0x0a41,0x0a41,0x0a41,0x1261,0x1261,0x1261,0x1281,0x12a1,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1aa2,0x1a82,0x1a82,0x1a82,0x1a82,0x12a2,0x1aa3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x1b03,0x1b03,0x2323,0x2323,0x2323,0x2323,0x2303,0x1b03,0x1b03,0x1ae3,0x1ac3,0x1ac3,0x1aa3,0x1a82,0x1a82,0x1a62,0x1242,0x1242,0x1222,0x1222,0x1202,0x1202,0x1202,0x11e2,0x09c1,0x09c1,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x1202,0x1202,0x1202,0x1202,0x1222,0x1222,0x1242,0x1a62,0x1a63,0x1a83,0x1aa3,0x1ac3,0x1ac3,0x22e4,0x2304,0x2304,0x2324,0x2324,0x2344,0x2344,0x2344,0x2344,0x2344,0x2b44,0x5be8,0xb5d1,0xd694,0xd674,0xce53,0xce33,0xc612,0xbdf2,0xbdd1,0xb591,0xad70,0xad50,0xa52f,0xa50f,0x9cef,0x9cef,0x9cce,0x9cce,0x9cce,0x9cce,0x9cce,0x9cce,0x9cce,0x9cee,0x9cef,0xa50f,0xa52f,0xad50,0xb590,0xbdd1,0xc5f2,0x8ccd,0x3b45,0x2324,0x2324,0x2324,0x2344,0x2344,0x2324,0x2b44,0xad8f,0xce52,0x5b86,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x2303,0x3344,0xad6e,0xf755,0xff54,0xff55,0xff75,0xff75,0xff75,0xce51,0x53c6,0x2344,0x2324,0x2324,0x2324,0x53a6,0xd671,0xf733,0xf732,0xf712,0xeed1,0xe6b0,0xde8f,0x94ca,0x2ac3,0x22a2,0x8448,0xc5cc,0x73e7,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1ac2,0x2ae2,0x2ac2,0x42e3,0x9486,0xb547,0xad07,0xa4e7,0xa4c6,0xa4a6,0x9ca6,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c66,0x9c66,0x9c65,0x9c65,0x9c65,0x9c65,0x9c65,0x9465,0x9465,0x9465,0x9445,0x9445,0x9445,0x9425,0x8c25,0x8c05,0x83e4,0x7364,0x4221,0x1140,0x0900,0x2160,0x41e1,0x41e1,0x2960,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x0180,0x2201,0x6343,0xace6,0xb547,0x7c05,0x32a2,0x1261,0x1261,0x0a61,0x0a61,0x0a61,0x0a61,0x0a41,0x0a61,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x1b03,0x1b03,0x1b03,0x2323,0x2323,0x2323,0x1b03,0x1b03,0x1b03,0x1b03,0x1ae3,0x1ae3,0x3b25,0x6be9,0x740a,0x73e9,0x6be9,0x6bc9,0x6ba9,0x6389,0x5b68,0x2a63,0x1242,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1242,0x1242,0x1242,0x1a63,0x1a63,0x1a83,0x1a83,0x1aa3,0x1ac3,0x1ac3,0x22e4,0x2304,0x53a8,0x6409,0x6409,0x642a,0x6c2a,0x6c2a,0x6c4a,0x642a,0x4bc7,0x2344,0x2344,0x2b44,0x3b66,0x53a8,0x53a8,0x4ba8,0x4b87,0x4b87,0x4b67,0x4b47,0x4347,0x4326,0x4326,0x4306,0x3b06,0x3ae6,0x3ae6,0x3ae6,0x3ae6,0x3ac6,0x3ac5,0x3ac5,0x3ac5,0x3ae5,0x3ae6,0x3ae6,0x3b06,0x4306,0x4326,0x4326,0x5387,0xa54f,0xd673,0xad8f,0x53a7,0x2344,0x2344,0x2344,0x2344,0x2344,0x4ba7,0xb5d0,0xdeb3,0x9d2d,0x5bc8,0x2304,0x1b03,0x1b03,0x2303,0x2303,0x2303,0x2323,0x9d2d,0xf754,0xff54,0xff74,0xff74,0xff75,0xff75,0xdeb2,0x6408,0x2323,0x2323,0x2323,0x2323,0x3344,0xc62f,0xf733,0xf733,0xf712,0xeef1,0xeed1,0xe6b0,0xb58c,0x3b04,0x1aa2,0x63a6,0xce2d,0x94a9,0x1aa2,0x1aa2,0x1ac2,0x3b23,0x8c86,0xad47,0xa507,0xad27,0xcde8,0x9486,0x5303,0x42c2,0x42a2,0x42a2,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4262,0x4262,0x4262,0x4262,0x3a62,0x3a61,0x3a61,0x3a62,0x3a62,0x3a62,0x3a61,0x3a41,0x3a41,0x3a41,0x3a41,0x3a21,0x3a21,0x4241,0x6b23,0x7b64,0x52a2,0x2161,0x00e1,0x08e1,0x2120,0x2940,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x20e0,0x2920,0x3161,0x39c1,0x4201,0x4a42,0x5aa2,0x62e3,0x6b43,0x8404,0xa4e6,0x9465,0x52e2,0x1a41,0x0a41,0x0a61,0x1261,0x1261,0x0a61,0x0a61,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x12a2,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1aa3,0x1ac3,0x1ac3,0x4345,0x6c08,0x7428,0x7428,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7429,0x6c29,0x8ccc,0xd651,0xde92,0xde92,0xd672,0xd652,0xce31,0xcdf1,0xbd90,0x6bc9,0x5b68,0x5b68,0x5b67,0x5b47,0x3ac5,0x1a63,0x1262,0x1242,0x1262,0x1262,0x1a62,0x1a62,0x1a83,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x22e4,0x22e4,0x2304,0x4345,0xbdf1,0xdeb4,0xded4,0xded5,0xe6f5,0xe6f5,0xe6f5,0xdef5,0xb5d1,0x7c8c,0x7c8b,0x7c8b,0x7c8b,0x7c8b,0x7c8b,0x7c6b,0x746b,0x744b,0x744b,0x744b,0x742a,0x6c0a,0x6c0a,0x6c0a,0x6bea,0x6bea,0x6bea,0x63ea,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63e9,0x6be9,0x6bea,0x6c0a,0x6c0a,0x5ba8,0x2b24,0x3b45,0x94ee,0xd694,0xc612,0x6409,0x2b44,0x2344,0x2344,0x4386,0xadb0,0xef15,0xe6d4,0xe6d4,0xce52,0x7c6a,0x53a7,0x53a7,0x53a7,0x53a7,0x53a6,0x53a6,0x9d2d,0xef34,0xff54,0xff54,0xff74,0xff74,0xff74,0xe6f3,0x7449,0x1b23,0x1b23,0x1b23,0x1b23,0x2b24,0xb5ae,0xf733,0xf733,0xf712,0xf711,0xf711,0xeef0,0xce2e,0x4325,0x1ac3,0x5365,0xce2e,0xad4b,0x2ae3,0x1ac2,0x22e2,0x94e7,0xe6aa,0xde69,0xd629,0xe689,0xbd87,0x4b03,0x1262,0x1a61,0x2282,0x2a82,0x2a62,0x2a62,0x2a62,0x2a61,0x2a61,0x2a61,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2221,0x2221,0x2221,0x2221,0x2221,0x2221,0x2201,0x2201,0x2201,0x19e0,0x09a0,0x0980,0x1980,0x4a62,0x6b03,0x62c3,0x39c1,0x08c0,0x0080,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3981,0x41c1,0x4a22,0x5a82,0x62e3,0x7343,0x83a4,0x8be4,0x9425,0x6323,0x2a41,0x0a20,0x0a20,0x0a40,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x8caa,0xde90,0xd690,0xd671,0xd671,0xd691,0xde91,0xde91,0xde92,0xde92,0xde92,0xd692,0xd692,0xd692,0xd672,0xd672,0xde92,0xe6d3,0xeed3,0xe6d3,0xe6b3,0xde93,0xde93,0xde72,0xce32,0xbdb0,0xb5b0,0xb590,0xb570,0xb590,0xa52f,0x6388,0x22a3,0x2283,0x1a83,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x1ae3,0x22e4,0x2304,0x2304,0x2304,0x4b86,0xd6b4,0xf757,0xf777,0xf777,0xff77,0xff97,0xff97,0xff97,0xef36,0xdef5,0xdef5,0xded5,0xded5,0xded5,0xded5,0xdeb5,0xd6b5,0xd695,0xd694,0xd674,0xce74,0xce54,0xce53,0xce33,0xc633,0xc633,0xc613,0xc613,0xc613,0xc612,0xc612,0xc612,0xc612,0xc612,0xc612,0xc632,0xce33,0xce53,0xce53,0xce53,0x8ccd,0x3b66,0x3345,0x848c,0xd673,0xd693,0x7c8b,0x3365,0x2344,0x6409,0xd693,0xe6f4,0x7c4a,0xa54e,0xe6f4,0xe6d4,0xd693,0xd693,0xd693,0xde93,0xdeb2,0xdeb2,0xe6d3,0xf734,0xf754,0xff54,0xff54,0xff54,0xff54,0xef13,0x848a,0x2303,0x1b03,0x1b03,0x1b03,0x2303,0x9d0c,0xeef2,0xf732,0xf732,0xf712,0xf711,0xf711,0xdeb0,0x63a6,0x1ac3,0x4345,0xc5cd,0xbdcc,0x4b64,0x1ac2,0x22e3,0xb569,0xe6ab,0xad27,0x73e5,0xd629,0xce08,0x63a4,0x1aa2,0x6384,0xad27,0xb587,0xb567,0xb567,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xad46,0xad46,0xad26,0xad26,0xad26,0xad26,0xad26,0xad06,0xa506,0xa4e6,0xa4c6,0x9ca6,0x9465,0x6323,0x21e1,0x0160,0x0960,0x29a0,0x4a62,0x5a82,0x4201,0x1900,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x08a0,0x08e0,0x0900,0x1140,0x1160,0x1180,0x11c0,0x09e0,0x09e0,0x0a00,0x0a20,0x0a40,0x0a41,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x12a1,0x12a1,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x2ae3,0xa52b,0xde90,0x846a,0x6be8,0x6be8,0x6be8,0x6be8,0x6be9,0x6be9,0x6be8,0x6be8,0x6be9,0x6be8,0x6be8,0x63e8,0x63e8,0x94cc,0xbdf0,0xc5f0,0xc5f0,0xc5f0,0xbdd0,0xbdd0,0xbdb0,0xa50e,0x63a9,0x5b88,0x5b88,0x5b68,0x73ea,0xb570,0xbdb0,0x9cee,0x9d0e,0x848c,0x4b47,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x1ac3,0x22e4,0x22e4,0x2304,0x2304,0x2304,0x2324,0x2324,0x53a7,0xce53,0xe6f5,0xeef5,0xef15,0xef15,0xef15,0xef16,0xe6f5,0xadb0,0x6c2a,0x6c2a,0x6c0a,0x6c0a,0x6c0a,0x6c0a,0x6409,0x6409,0x63e9,0x63e9,0x63e9,0x63e9,0x63e9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x6be9,0x7c2a,0x7c2a,0x7c2a,0x7c2a,0x7c2a,0x6c0a,0x63e9,0x6c0a,0xb5b0,0xd6b4,0xa56f,0x4ba7,0x2b44,0x6c2a,0xc632,0xded4,0x952e,0x4386,0x4ba6,0xbdf1,0xef35,0xc611,0xce72,0xef15,0xbdf0,0x8cac,0x84ab,0x84ab,0x84ab,0x84ab,0x84ab,0x9d2d,0xe6d3,0xf734,0xf734,0xf734,0xf734,0xf734,0xf734,0x94ec,0x2b03,0x1b03,0x1b03,0x1b03,0x2303,0x7c49,0xe6d2,0xf712,0xf712,0xf712,0xf711,0xf711,0xe6d0,0x8489,0x22e3,0x3304,0xad4b,0xd64d,0x63c6,0x1ac2,0x1ae2,0x7426,0xd64a,0xde6a,0xc5c8,0xe689,0xce08,0x63a4,0x63a4,0xc5a8,0xce08,0x9cc6,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9465,0x9465,0x9465,0x9485,0x9485,0x9485,0x9465,0x9465,0x9465,0x9465,0x8c45,0x8c25,0x8404,0x83e4,0x8c25,0xa4a6,0x83e4,0x4262,0x0960,0x0120,0x0920,0x31a1,0x4a02,0x41e1,0x2920,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x01a0,0x09c0,0x09e0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a41,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x12a1,0x12a1,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x1aa2,0x12a2,0x12a2,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1ac2,0x1ac2,0x1aa3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x4324,0xb58d,0xce0f,0x5366,0x1ac3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x3304,0x4346,0x4b66,0x4b46,0x4b46,0x4b46,0x4346,0x4346,0x3b25,0x22e4,0x1ae3,0x1ac3,0x1ac3,0x22e4,0x7c4b,0xce32,0xce12,0xc5f1,0xce32,0xa52f,0x4306,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x22e3,0x22e4,0x2304,0x2304,0x2324,0x2324,0x2324,0x3345,0x5be9,0x6c0a,0x6c0a,0x6c0a,0x6c0a,0x6c2a,0x6c2a,0x6c0a,0x4ba7,0x2b44,0x2344,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x3325,0x94ee,0xd6b4,0xdeb4,0xdeb4,0xdeb4,0xd6b4,0xad90,0x2b25,0x2324,0x4366,0x9d2e,0xd6b4,0xbe11,0x6409,0x2b45,0x5bc8,0xb5b0,0xded4,0xad8f,0x53c7,0x63e9,0xb5d0,0xded4,0xded4,0xbdd0,0x5bc8,0x2324,0x2324,0x2324,0x2304,0x2304,0x2304,0x5bc7,0xce31,0xe6f3,0xe6d3,0xe6d3,0xef13,0xe6f3,0xe6d3,0x9d0d,0x3324,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x5366,0xd671,0xe6d1,0xe6d1,0xe6d1,0xe6d1,0xe6d0,0xde90,0x9cea,0x22e3,0x22e3,0x8ca9,0xde8e,0x7c28,0x1ac2,0x1ac2,0x2ac3,0x73e6,0xb588,0xd629,0xc5c8,0x8445,0x63a4,0xc5e8,0xce08,0x8425,0x2aa2,0x1281,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1241,0x1241,0x1241,0x5b23,0xbd87,0xcdc7,0xc5c7,0xc5c7,0xc5a7,0xc5a7,0xbd67,0x73a4,0x0a00,0x0a00,0x0a00,0x2201,0x5b03,0x8c25,0x8c25,0x5ae3,0x2180,0x0120,0x00e0,0x1100,0x3181,0x39a1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a41,0x0a61,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x12a1,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x1282,0x12a2,0x12a2,0x12a2,0x1aa2,0x1aa2,0x1aa2,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x5366,0xc5ee,0xb58d,0x4325,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ac3,0x1ac3,0x2ae4,0x9d0e,0xce32,0x94ad,0x5b68,0xc5d1,0xbdd1,0x5b88,0x1ac3,0x1ac3,0x22c3,0x22c3,0x22e4,0x22e4,0x2304,0x2304,0x2304,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2b25,0x63e9,0x7c8c,0x848c,0x848c,0x848c,0x7c8c,0x6c0a,0x2b04,0x2304,0x2304,0x2304,0x2304,0x3325,0x9d2e,0xef16,0xef16,0xef16,0xef36,0xef16,0xbdf1,0x3345,0x2b25,0x2b24,0x3345,0x84ac,0xce73,0xce53,0x7c6b,0x3345,0x4386,0x9d2e,0xdeb4,0xbe11,0x6409,0x3345,0x4b86,0x4b86,0x3345,0x2324,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x3324,0x6be8,0x7c29,0x7c29,0x9cec,0xd672,0xad4e,0x7c29,0x5b87,0x22e3,0x1ae3,0x1ac3,0x1ae3,0x1ae3,0x2ae3,0x73e8,0x7c28,0x7c28,0x7c08,0x7c08,0x7c08,0x7c07,0x5b86,0x1ac3,0x1ac3,0x7408,0xde6e,0x8c89,0x22c2,0x1ac2,0x1ac2,0x1ac2,0x2ac2,0x32c3,0x2ac2,0x22c2,0x8c86,0xd649,0x9cc6,0x22a2,0x1282,0x32e3,0x73e5,0x8445,0x8425,0x8425,0x8425,0x7c05,0x4b23,0x1261,0x1261,0x0a61,0x0a61,0x4b03,0xbd87,0xde28,0xde28,0xde28,0xde28,0xde08,0xd608,0x9485,0x1a21,0x0a00,0x0a00,0x09e0,0x11e0,0x3221,0x6b43,0x83c4,0x6b23,0x39e1,0x0900,0x00c0,0x00a0,0x10c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2120,0x1900,0x00a0,0x00a0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a41,0x0a40,0x0a41,0x0a61,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1a82,0x1a82,0x1a82,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1aa3,0x63a7,0xce2f,0x9ccb,0x2ac3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x22c3,0x4326,0x5366,0x5367,0x5367,0x5367,0x5367,0x5387,0x5387,0x3305,0x22e3,0x1ae3,0x1ae3,0x1ae3,0x22e4,0x94cd,0xd653,0xbdf1,0xb590,0xce32,0xa54f,0x4306,0x1ac3,0x1ac3,0x1ac3,0x22c3,0x22e4,0x22e4,0x22e4,0x2304,0x2304,0x2304,0x2324,0x2b25,0x3b66,0x4366,0x4366,0x4366,0x4366,0x4366,0x4366,0x4366,0x3345,0x2324,0x2324,0x2324,0x2304,0x2304,0x2304,0x2304,0x3b25,0xa52f,0xdeb5,0xdeb5,0xded5,0xded5,0xdeb5,0xb5b1,0x3325,0x2304,0x2304,0x2304,0x2304,0x2b24,0x9d2e,0xef36,0xef36,0xef36,0xef36,0xef16,0xce73,0xb5d1,0xce53,0xbdf1,0x7c8c,0x3b45,0x6c0a,0xc5f1,0xd693,0x8ccd,0x3b66,0x3345,0x848c,0xce73,0xce52,0x7c6b,0x3345,0x2324,0x2324,0x2304,0x2304,0x2304,0x2304,0x22e4,0x22e4,0x1ae3,0x22e3,0x1ac3,0x1ac3,0x1ac3,0x5b87,0xc610,0x9d0d,0x22c3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x1aa3,0x1aa2,0x1aa2,0x1aa2,0x5ba6,0xc5ed,0xa52a,0x32e3,0x1aa2,0x1aa2,0x12a2,0x12a2,0x12a2,0x12a2,0x1aa2,0x63a5,0xce09,0x9ce6,0x1a82,0x1282,0x4b23,0xb567,0xde49,0xde28,0xde28,0xde28,0xd628,0x9ca6,0x1261,0x1261,0x0a61,0x0a61,0x32a2,0xa4c6,0xde48,0xde28,0xde28,0xde28,0xd608,0xd608,0xad06,0x42a2,0x0a00,0x0a00,0x2a41,0x52c2,0x5ae2,0x4242,0x4a62,0x6b23,0x6b23,0x4a22,0x1900,0x00a0,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x20e0,0x2940,0x3981,0x18e0,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a21,0x0a41,0x0a41,0x0a41,0x0a41,0x1241,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1282,0x1282,0x1282,0x1a82,0x1a82,0x1a82,0x73e8,0xce0f,0x8449,0x1a82,0x1a82,0x1a82,0x1a82,0x1282,0x1282,0x1282,0x1a82,0x1a82,0x1a83,0x1a83,0x1a83,0x1a83,0x5346,0xb56e,0xce11,0xce31,0xce31,0xce31,0xd631,0xd652,0xce52,0x94ac,0x5ba8,0x2ae4,0x1ac3,0x1ac3,0x1ac3,0x4326,0x9cee,0xb590,0xb590,0x9cee,0x5347,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x22c3,0x22e4,0x22e4,0x22e4,0x22e4,0x2304,0x5bc8,0xad90,0xbdf1,0xbdf1,0xbdf1,0xbdf1,0xbdf1,0xbdf1,0xb5b1,0x742b,0x2304,0x2304,0x2304,0x22e4,0x22e4,0x22e4,0x22e4,0x3b25,0xa52f,0xe6d5,0xe6d5,0xe6d5,0xe6d5,0xe6d5,0xbdd2,0x3b26,0x2304,0x2304,0x2304,0x2304,0x2b04,0x94ed,0xe6f5,0xeef5,0xeef5,0xe6f5,0xe6f5,0xe6f5,0xdeb4,0xc612,0xd653,0xd673,0x7c6b,0x2b04,0x5388,0xad70,0xd673,0x9d2f,0x4b87,0x2b04,0x6be9,0xbdf1,0xce73,0x8ccc,0x3b45,0x2304,0x2304,0x22e4,0x22e4,0x22e4,0x22e4,0x1ac3,0x1ac3,0x1ac3,0x1aa3,0x1aa3,0x1aa3,0x42e5,0xbd8f,0xa52d,0x2aa3,0x1a83,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1a82,0x1a82,0x1a82,0x1a82,0x4304,0xb54b,0xb58b,0x42e4,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x3ae3,0xbda8,0xb547,0x2a82,0x2282,0x32a2,0xad07,0xde29,0xde28,0xde28,0xde28,0xde48,0xb526,0x32a2,0x1241,0x0a41,0x0a41,0x1241,0x7be5,0xcde8,0xd608,0xd5e8,0xd5e7,0xcdc7,0xcdc7,0xbd67,0x5b23,0x09e0,0x2a21,0x8405,0xace6,0xa4a6,0x9445,0x6b23,0x39e1,0x4a42,0x5aa3,0x4a42,0x2940,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2100,0x3161,0x18e0,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x09e0,0x0a00,0x0a01,0x0a20,0x0a21,0x0a21,0x0a41,0x0a41,0x0a41,0x0a41,0x1241,0x1241,0x1241,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1262,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1262,0x1262,0x1262,0x1262,0x2283,0x8429,0xbdae,0x6ba8,0x1262,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1262,0x1262,0x1a62,0x1a62,0x1a62,0x5b47,0xb56f,0xcdf0,0xcdf1,0xce11,0xce11,0xce11,0xce11,0xce32,0xc5d1,0xb5b0,0x7c2b,0x2aa4,0x1aa3,0x1a83,0x1a83,0x2284,0x42e6,0x42e6,0x2a83,0x1a63,0x1a63,0x1a63,0x1a63,0x1a83,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1ac3,0x22c3,0x22c3,0x22e4,0x742b,0xce53,0xdeb5,0xe6b5,0xe6b5,0xe6d5,0xe6d5,0xe6d5,0xd694,0x8c8d,0x22e4,0x22e4,0x22e4,0x22c4,0x22c4,0x22c4,0x22c4,0x3305,0x9d0e,0xde94,0xde94,0xde94,0xde94,0xde94,0xb5b1,0x3305,0x22c4,0x22e4,0x22e4,0x22e4,0x22e4,0x8c8c,0xdeb4,0xdeb5,0xdeb4,0xdeb4,0xdeb4,0xdeb4,0xbdd1,0x6bc9,0x8cad,0xd694,0x9cee,0x3304,0x22c4,0x4326,0x8cad,0xce32,0xad90,0x5ba8,0x22e4,0x5387,0xad4f,0xce52,0x9d2e,0x4346,0x22e4,0x1ae4,0x1ac3,0x1ac3,0x1ac3,0x1aa3,0x1aa3,0x1aa3,0x1a83,0x1a83,0x1a63,0x2a83,0xa50d,0xb56e,0x844b,0x844a,0x844b,0x846b,0x846b,0x8c6b,0x8c6b,0x8c6b,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c69,0x8c69,0x8c69,0x8c69,0xb54b,0xbd8c,0x4ae4,0x1242,0x1242,0x1242,0x1242,0x1241,0x1241,0x1241,0x2a82,0xa4e7,0xb547,0x5303,0x7c05,0xad06,0xbd67,0xcdc8,0xd5c8,0xd5e8,0xd5e8,0xd5e8,0xbd67,0x5b23,0x0a21,0x0a21,0x0a21,0x0a21,0x5b23,0xb527,0xcda7,0xc587,0xc587,0xc587,0xc567,0xbd67,0x73a4,0x19e0,0x4262,0x9c86,0xa4a6,0x6b23,0x7344,0x8be4,0x62e3,0x1120,0x2960,0x4201,0x4a02,0x3181,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x2100,0x2100,0x0880,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x09c0,0x09e0,0x09e0,0x0a00,0x0a01,0x0a01,0x0a21,0x0a21,0x2a61,0x5323,0x6363,0x4b03,0x2241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1221,0x1221,0x1221,0x1221,0x1222,0x1221,0x1221,0x1201,0x1201,0x1201,0x1221,0x1222,0x1222,0x1222,0x1242,0x1242,0x1242,0x42c4,0x94aa,0xad2d,0x5b47,0x1a22,0x1222,0x1222,0x3263,0x4ae6,0x5306,0x3a84,0x1a22,0x1222,0x1222,0x1222,0x1222,0x1222,0x5307,0xa4ed,0xad2e,0xad2e,0xb54e,0xb54f,0xb54f,0xb54f,0xad2e,0x73c9,0xa4ee,0xad4f,0x6ba9,0x2283,0x1a63,0x1a43,0x1a43,0x1a43,0x1242,0x1242,0x1222,0x1222,0x1222,0x1a23,0x1a43,0x1a43,0x1a63,0x1a63,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1aa3,0x740b,0xc5f2,0xd653,0xd654,0xd654,0xd674,0xd674,0xd674,0xce33,0x7c4c,0x22c4,0x22a4,0x22a4,0x22a4,0x1aa4,0x1aa3,0x1aa3,0x32c5,0x94cd,0xce33,0xce33,0xce53,0xd653,0xce53,0xb570,0x32c5,0x1aa4,0x1aa4,0x22a4,0x22c4,0x22c4,0x7c4b,0xce53,0xd653,0xd653,0xd653,0xd653,0xce53,0xc612,0xb570,0xbdd1,0xc5f2,0x7c2b,0x22c4,0x1aa3,0x1aa3,0x2ac4,0x740a,0xbdb0,0xb590,0x6bea,0x2ac4,0x3b05,0x8cac,0xc611,0xa54f,0x5368,0x22a3,0x1aa3,0x1aa3,0x1a83,0x1a83,0x1a83,0x1a63,0x1a63,0x1242,0x1242,0x2243,0x7c0a,0x9ced,0x9ccd,0xa4ed,0xa4ed,0xa50d,0xa50d,0xad0d,0xad2d,0xad0d,0xad0d,0xad2d,0xad2d,0xad2c,0xad2c,0xad2c,0xad2c,0xad0c,0xad0b,0xad0b,0xa50b,0xa50a,0xa4ea,0x4ae4,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1a42,0x7bc5,0xb527,0x6b64,0x73a5,0xb547,0xa4c6,0xbd47,0xc567,0xc587,0xc587,0xc587,0xbd67,0x6b84,0x1201,0x0a01,0x0a01,0x0a01,0x3242,0x9c86,0xbd47,0xbd26,0xbd26,0xb526,0xb506,0xb506,0x8c05,0x2a01,0x21e1,0x83c5,0x9445,0x6b23,0x5aa2,0x83a4,0x6b03,0x2160,0x00c0,0x08c0,0x2120,0x2920,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x10a0,0x0860,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x0160,0x0180,0x09a0,0x09a0,0x09c0,0x09c0,0x09e0,0x09e0,0x1201,0x42a2,0x9465,0xb506,0xbd47,0xad06,0x7384,0x1a21,0x0a21,0x0a21,0x0a21,0x0a21,0x0a21,0x0a21,0x0a01,0x0a01,0x0a01,0x0a01,0x0a01,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x1201,0x1202,0x1202,0x1a22,0x5b26,0x948a,0xad2c,0xad0c,0x946b,0x4ac5,0x1202,0x4ac5,0x840a,0x948b,0x9c8c,0x8c2b,0x4ac6,0x11e2,0x11e2,0x11e2,0x1202,0x1202,0x2a43,0x52e6,0x52e6,0x52e7,0x52e7,0x52e7,0x5307,0x5307,0x52e6,0x2a43,0x4ae6,0x9cad,0x9cce,0x5b28,0x1a23,0x1222,0x1222,0x1202,0x1202,0x1202,0x11e2,0x11e2,0x1202,0x1202,0x1202,0x1222,0x1222,0x1a23,0x1a43,0x1a63,0x1a63,0x1a63,0x1a83,0x4b07,0x7c0b,0x844c,0x844c,0x844c,0x844c,0x844c,0x844c,0x842c,0x4b27,0x1a83,0x1a83,0x1a83,0x1a83,0x1a63,0x1a63,0x1a63,0x32a4,0x8c6d,0xc5d2,0xc5d2,0xc5d2,0xc5d2,0xc5d2,0xad2f,0x32a5,0x1a83,0x1a83,0x1a83,0x1a83,0x1a83,0x73ea,0xbdd2,0xc5f2,0xc5f2,0xc5f2,0xc5f2,0xb591,0x948d,0xa4ef,0x9cce,0x7beb,0x3ac5,0x1a63,0x1a63,0x1a63,0x1a63,0x2283,0x5b68,0xa50e,0xb590,0x7c2b,0x32c5,0x2ac4,0x73ea,0xb590,0xad4f,0x63a9,0x2aa4,0x2283,0x2283,0x2283,0x2263,0x2243,0x2243,0x1a23,0x1a22,0x1a22,0x2a23,0x3243,0x3243,0x3243,0x3243,0x3263,0x3263,0x3263,0x3263,0x3264,0x3263,0x3263,0x3263,0x3263,0x3263,0x3263,0x3263,0x3263,0x3243,0x3243,0x3243,0x3242,0x3242,0x2202,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x52e3,0xa4e6,0x7384,0x4ac3,0xa4c6,0x7bc5,0x9c86,0xb507,0xb506,0xb526,0xbd26,0xbd27,0x7bc4,0x2201,0x09e0,0x09e0,0x09c0,0x11c0,0x7ba4,0xacc6,0xacc6,0xacc6,0xaca6,0xa4a5,0xa485,0x9425,0x3201,0x0980,0x3a22,0x7364,0x83c4,0x7b84,0x7344,0x5262,0x1100,0x00c0,0x00a0,0x0080,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0100,0x0120,0x0140,0x0160,0x0180,0x0180,0x09a0,0x09a0,0x09c0,0x09c0,0x2a01,0x9445,0xace6,0x8c25,0x8c05,0xb527,0x9446,0x3262,0x09e1,0x0a01,0x0a01,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09c1,0x09c1,0x09c1,0x09a1,0x09a1,0x09a1,0x09a1,0x09a1,0x09c1,0x09c1,0x09c1,0x11c1,0x11e1,0x3a84,0x8c49,0x9cab,0x7ba8,0x8409,0x9cab,0x6b88,0x3244,0x7bc9,0x944b,0x7368,0x7ba9,0x944b,0x7389,0x11c2,0x09c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11e2,0x11e2,0x19e2,0x4ac6,0x8c4c,0x8c6c,0x5b28,0x52e7,0x52c6,0x4ac6,0x4aa6,0x4aa6,0x4a86,0x4a86,0x4a86,0x4a86,0x4aa6,0x4ac6,0x52c7,0x52e7,0x5307,0x5328,0x5b28,0x5b48,0x5b48,0x5b48,0x5b68,0x6368,0x6368,0x6368,0x6368,0x6369,0x6369,0x6369,0x5b69,0x5b68,0x5b68,0x5b48,0x5b48,0x42e6,0x1a43,0x1a43,0x2a64,0x840b,0xb571,0xb571,0xb571,0xb571,0xb571,0x9cce,0x2a64,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x6389,0xb550,0xb571,0xb570,0xb570,0xb550,0xa4ef,0x4ae6,0x3285,0x3284,0x2243,0x1a22,0x1222,0x1a42,0x1a43,0x1a43,0x1a43,0x1a43,0x42c6,0x8c6c,0xad4f,0x844c,0x3ac5,0x2263,0x5b47,0xa4ee,0xad2f,0x8c6b,0x7c2a,0x7c0a,0x7c0a,0x73ea,0x73c9,0x73a9,0x6b88,0x6b68,0x6348,0x6348,0x6348,0x6348,0x6b68,0x6b68,0x6b88,0x6b88,0x7388,0x7388,0x73a8,0x73a8,0x73a8,0x73a8,0x73a8,0x7388,0x7387,0x6b87,0x6b87,0x6b67,0x6b66,0x6b46,0x6b46,0x6b46,0x6346,0x6b45,0x6b45,0x6b45,0x6b45,0x6b64,0x6b64,0x6b64,0x6b64,0x7384,0x9c66,0x7384,0x3a42,0x8c05,0x7ba4,0x83c5,0x9c86,0xa486,0xa4a6,0xa4a6,0xacc6,0x8c05,0x3221,0x09a0,0x09a0,0x09a0,0x09a0,0x52a3,0x9445,0x9c65,0x9c45,0x9425,0x9425,0x9405,0x8be4,0x4a62,0x0960,0x0140,0x1980,0x39e1,0x4221,0x39c1,0x1100,0x00c0,0x00a0,0x0080,0x0060,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0040,0x0040,0x0060,0x0080,0x00a0,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0120,0x0140,0x0160,0x0160,0x0980,0x0980,0x09a0,0x3a41,0x9c85,0x9c65,0x5ae3,0x7364,0xa4c6,0x7bc5,0x2201,0x09c0,0x09c1,0x09c1,0x09c1,0x09c1,0x09c1,0x09a1,0x09a1,0x09a1,0x09a1,0x0981,0x0981,0x0981,0x0981,0x0981,0x0961,0x0981,0x0981,0x0981,0x0981,0x09a1,0x09a1,0x4a84,0x9449,0x83e9,0x4284,0x6b47,0x8c0a,0x6307,0x4265,0x7ba9,0x7bc9,0x4244,0x5b07,0x83ca,0x6328,0x1181,0x0981,0x0981,0x0981,0x0981,0x1181,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x09a1,0x09a2,0x11c2,0x4a86,0x7bca,0x83eb,0x83eb,0x7bcb,0x7bca,0x7baa,0x738a,0x738a,0x738a,0x738a,0x738a,0x738a,0x7bab,0x7bcb,0x83eb,0x840c,0x8c2c,0x8c4d,0x946d,0x946d,0x948d,0x948d,0x948d,0x948e,0x948e,0x948e,0x948e,0x94ae,0x94ae,0x948e,0x948e,0x948e,0x948e,0x94ae,0x8c6d,0x5b29,0x1a23,0x1a03,0x52e7,0x73aa,0x73aa,0x73aa,0x73aa,0x73aa,0x6349,0x2203,0x1202,0x1202,0x1202,0x1202,0x1202,0x5b28,0x9cce,0xa4ef,0xa4ef,0xa4cf,0xa4cf,0x946d,0x42a6,0x1202,0x1202,0x1202,0x1a03,0x1a03,0x1a03,0x1202,0x1202,0x1202,0x1202,0x1202,0x2a64,0x73aa,0x9cce,0x8c4c,0x4ae6,0x1a23,0x42a5,0x7beb,0x8c6c,0x8c4c,0x8c4b,0x8c2b,0x840b,0x83ea,0x7bca,0x73a9,0x7389,0x7369,0x6b49,0x6b49,0x7369,0x7389,0x7389,0x7ba9,0x7ba9,0x7bc9,0x7bc9,0x7bc9,0x7bc9,0x7bc9,0x7ba9,0x7ba8,0x7ba8,0x7ba8,0x7ba8,0x7b88,0x7387,0x7387,0x7367,0x7366,0x7366,0x7366,0x7346,0x7366,0x7365,0x7365,0x7365,0x7364,0x7b64,0x7b84,0x7b64,0x7364,0x62e3,0x31e1,0x6b24,0x7b84,0x52a3,0x5ae3,0x62e3,0x6303,0x6303,0x6303,0x5ac3,0x21c1,0x0980,0x0980,0x0160,0x0160,0x29c1,0x7ba4,0x8be4,0x8bc4,0x83c4,0x83a4,0x8384,0x7b84,0x5aa2,0x0920,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00c0,0x00a0,0x0080,0x0060,0x0040,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x0060,0x0060,0x0080,0x00a0,0x00c0,0x00e0,0x00e0,0x0100,0x0120,0x0120,0x0140,0x0140,0x0160,0x0160,0x29c1,0x83c4,0x9445,0x9425,0x9425,0x83c5,0x4242,0x09a0,0x09a0,0x09a1,0x09a1,0x0980,0x0980,0x0980,0x0980,0x0960,0x0960,0x0960,0x0940,0x0940,0x0940,0x0140,0x0140,0x0940,0x0940,0x0940,0x0941,0x0961,0x0961,0x0961,0x31e3,0x7367,0x83c9,0x7ba8,0x7ba8,0x6b27,0x31c3,0x21a2,0x6307,0x7b89,0x7369,0x7369,0x7389,0x52a7,0x1982,0x0941,0x0941,0x0941,0x1161,0x4245,0x52a6,0x52a6,0x52a6,0x52a6,0x52a7,0x52a7,0x52a7,0x3a25,0x1161,0x0961,0x0961,0x1181,0x29c3,0x29e4,0x29e4,0x29c4,0x29c3,0x29c3,0x29a3,0x29a3,0x29a3,0x29a3,0x29a3,0x29a3,0x29c3,0x29c4,0x29e4,0x31e4,0x3204,0x3224,0x3225,0x3225,0x4aa6,0x5b28,0x6328,0x6329,0x6329,0x6329,0x6329,0x6329,0x5b28,0x4286,0x3a45,0x3245,0x3245,0x4266,0x73ab,0x840c,0x5b08,0x21e3,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x4286,0x7beb,0x840c,0x840c,0x840c,0x83ec,0x7bab,0x3a65,0x11c2,0x11c2,0x3224,0x6328,0x73aa,0x6b8a,0x4aa7,0x19e3,0x11c2,0x11c2,0x11c2,0x11e2,0x2203,0x52e7,0x8c2c,0x8c2c,0x52e7,0x3a65,0x3a85,0x4285,0x4285,0x4285,0x4265,0x3a45,0x3a24,0x3a24,0x3204,0x31e3,0x31e3,0x31c3,0x31c3,0x31c3,0x31e3,0x31e3,0x3203,0x3204,0x3a04,0x3a04,0x3a04,0x3a04,0x3a03,0x3a03,0x3a03,0x3203,0x3203,0x3203,0x31e3,0x31e3,0x31c2,0x31c2,0x31c2,0x31c2,0x29c2,0x31c2,0x31c2,0x31c2,0x31c2,0x31c1,0x31c1,0x31e1,0x31e1,0x31e1,0x31c1,0x29c1,0x29a1,0x5283,0x7344,0x39e1,0x0920,0x0940,0x0940,0x0140,0x0940,0x0940,0x0160,0x0140,0x0140,0x0140,0x0140,0x1140,0x5283,0x6b03,0x62e3,0x62e3,0x62c3,0x62c2,0x5aa2,0x4a42,0x1100,0x00e0,0x00c0,0x1100,0x2961,0x3181,0x2120,0x10c0,0x0060,0x0040,0x0040,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0840,0x0860,0x1080,0x0840,0x0020,0x0040,0x0040,0x0060,0x0080,0x0080,0x00a0,0x00c0,0x00c0,0x00e0,0x0100,0x0100,0x0120,0x0120,0x0140,0x0940,0x3a01,0x7364,0x83a4,0x5ac3,0x29c1,0x0960,0x0960,0x0960,0x0960,0x0960,0x0960,0x0960,0x0940,0x0940,0x0140,0x0120,0x0120,0x0120,0x0120,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0920,0x0920,0x0920,0x0940,0x0941,0x31c3,0x5285,0x52a5,0x4244,0x2182,0x0921,0x0921,0x2182,0x4a45,0x5266,0x4a45,0x5286,0x6308,0x4a66,0x4225,0x4225,0x4205,0x4225,0x5ac7,0x6308,0x62e8,0x62e8,0x62e8,0x62e8,0x62e8,0x6308,0x4225,0x0921,0x0921,0x0921,0x0941,0x0941,0x0941,0x0921,0x0921,0x0921,0x0921,0x0901,0x0901,0x0901,0x0100,0x0101,0x0901,0x0921,0x0921,0x0941,0x0941,0x0961,0x0961,0x0961,0x0981,0x52c7,0x7bcb,0x7bcc,0x7bcc,0x83cc,0x83ec,0x83ec,0x83ec,0x7bcb,0x4a66,0x1182,0x0981,0x0981,0x1181,0x29c4,0x6309,0x738b,0x5ae8,0x3204,0x2a04,0x29e4,0x29e4,0x29e4,0x29e4,0x29e4,0x29e4,0x2a04,0x2a04,0x2a04,0x2a04,0x2a04,0x3204,0x3a04,0x3a04,0x3a04,0x3204,0x3204,0x3204,0x29e4,0x29e3,0x3204,0x5b08,0x738a,0x6b49,0x736a,0x738a,0x4a66,0x1182,0x0981,0x0981,0x0981,0x09a2,0x11a2,0x3a45,0x738a,0x840b,0x7bea,0x7bea,0x7bca,0x7bca,0x7baa,0x7389,0x7369,0x6b48,0x6328,0x62e7,0x5ac7,0x5aa7,0x52a7,0x5aa7,0x5aa7,0x5ac7,0x5ac7,0x62e7,0x6307,0x6307,0x6307,0x6307,0x6307,0x6307,0x6307,0x6307,0x6306,0x62e6,0x62e6,0x5ae6,0x5ac5,0x5aa5,0x5aa5,0x52a5,0x5284,0x5284,0x5284,0x5284,0x5aa4,0x5aa4,0x5aa3,0x5ac3,0x5ac3,0x5ac3,0x5ac3,0x5aa3,0x5aa3,0x5aa3,0x62c3,0x6b03,0x4202,0x0900,0x0100,0x0120,0x0120,0x0120,0x0120,0x0120,0x0120,0x0120,0x0100,0x0100,0x0900,0x0900,0x1100,0x1100,0x10e0,0x08e0,0x08e0,0x08c0,0x08c0,0x00c0,0x00a0,0x08c0,0x3181,0x4a02,0x41c1,0x39a1,0x3161,0x10a0,0x0040,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0840,0x1080,0x1080,0x0840,0x0020,0x0020,0x0040,0x0040,0x0060,0x0060,0x0080,0x00a0,0x1900,0x2940,0x2960,0x2981,0x3181,0x31a1,0x31a1,0x31c1,0x4201,0x6b23,0x6b03,0x4202,0x39e1,0x31c1,0x1140,0x0140,0x0140,0x0120,0x0120,0x0120,0x0120,0x0100,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00e0,0x1921,0x31a2,0x31c2,0x31c3,0x39e3,0x39e3,0x39e3,0x39c3,0x31c3,0x31c3,0x31c3,0x31c3,0x31c3,0x31c3,0x31c3,0x2162,0x0100,0x1942,0x4205,0x5266,0x5266,0x5266,0x4a46,0x4a46,0x5286,0x5286,0x5286,0x5286,0x5286,0x5287,0x5287,0x5287,0x31c4,0x00e0,0x00e0,0x0100,0x0100,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00c0,0x00e0,0x00e0,0x00e0,0x0100,0x0901,0x0921,0x0921,0x0921,0x0941,0x4a66,0x6b2a,0x6b4a,0x6b4a,0x6b4a,0x734a,0x736a,0x736a,0x6b4a,0x5ae8,0x31e4,0x0941,0x0941,0x0941,0x0941,0x1962,0x4a67,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x62e9,0x62e9,0x5ae8,0x5ae8,0x5ac8,0x5ae8,0x5ae8,0x5ac8,0x5ac8,0x6309,0x5ac8,0x31c4,0x4225,0x6308,0x52a7,0x1162,0x0941,0x0941,0x0941,0x0961,0x0961,0x0961,0x29c3,0x4245,0x4a66,0x4a66,0x4a65,0x4a45,0x4245,0x4225,0x4225,0x3a04,0x39e4,0x31c4,0x31a3,0x31a3,0x3183,0x3183,0x3183,0x31a3,0x31a3,0x31c3,0x39c3,0x39c4,0x39c4,0x39e4,0x39e3,0x39c3,0x39c3,0x39c3,0x39c3,0x31c3,0x31a3,0x31a3,0x31a2,0x3182,0x3182,0x3182,0x2982,0x2982,0x2962,0x3182,0x3182,0x3181,0x3181,0x31a1,0x31a1,0x31a1,0x31a1,0x31a1,0x3181,0x3181,0x3181,0x31a1,0x2140,0x00e0,0x00e0,0x00e0,0x00e0,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x2981,0x4a42,0x4a42,0x4a22,0x4a02,0x4201,0x41e1,0x41e1,0x39c1,0x39c1,0x39a1,0x39a1,0x3181,0x39a1,0x39a1,0x20e0,0x18e0,0x2920,0x2100,0x18c0,0x10a0,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0840,0x0840,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x0040,0x0060,0x10c0,0x39a1,0x4a22,0x5242,0x5262,0x5a82,0x62a3,0x62c3,0x62e3,0x6ae3,0x6b03,0x6b03,0x6b23,0x6b23,0x5aa3,0x2161,0x0100,0x0100,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x3182,0x4a44,0x5264,0x5264,0x5285,0x5a85,0x5a85,0x5285,0x5265,0x5265,0x5265,0x5265,0x5285,0x5286,0x5266,0x31c4,0x00e0,0x00c0,0x08e0,0x08e0,0x08c0,0x08c0,0x08c0,0x1901,0x39c4,0x39c4,0x39c4,0x39c4,0x39c4,0x39c4,0x39c4,0x39a4,0x2122,0x00a0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x00e0,0x00e0,0x00e0,0x0900,0x39c5,0x5267,0x5267,0x5267,0x5267,0x5287,0x5287,0x5287,0x5287,0x5287,0x5287,0x31a4,0x0901,0x0101,0x0101,0x0901,0x1121,0x2983,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31a4,0x31a4,0x31a4,0x31a4,0x31a4,0x31a4,0x31a4,0x4a26,0x5287,0x4226,0x4a26,0x52a7,0x4205,0x1121,0x0100,0x0101,0x0901,0x0921,0x0921,0x0921,0x0921,0x0941,0x0941,0x0941,0x0941,0x0921,0x0921,0x0921,0x0901,0x0900,0x00e0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x2140,0x4a22,0x4a22,0x39c1,0x39a1,0x3181,0x3181,0x3161,0x3161,0x2940,0x2940,0x2940,0x2920,0x2920,0x2920,0x2940,0x20e0,0x10a0,0x20e0,0x20e0,0x1080,0x1060,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x18c0,0x3981,0x41c1,0x41e1,0x4a02,0x5222,0x5242,0x5a62,0x5a82,0x5a82,0x62a3,0x62a3,0x62c3,0x62c3,0x4202,0x08e0,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x3162,0x41e3,0x4203,0x4a04,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a25,0x4a25,0x4a25,0x2942,0x00a0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0880,0x0080,0x0080,0x0080,0x0080,0x0880,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x0080,0x0080,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0060,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x10e1,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x2123,0x39e6,0x4226,0x2984,0x08e1,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x1902,0x31a4,0x4226,0x4226,0x39c4,0x1922,0x08e1,0x08e1,0x08e1,0x08e1,0x0901,0x0901,0x0901,0x0901,0x0901,0x0901,0x0921,0x0901,0x0901,0x0901,0x0901,0x08e1,0x08e0,0x08c0,0x08a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0060,0x0060,0x0060,0x0060,0x0060,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x08a0,0x08c0,0x08c0,0x08c0,0x08c0,0x08a0,0x1900,0x39c1,0x41e1,0x2940,0x0080,0x0060,0x0060,0x0060,0x0040,0x0040,0x0040,0x0040,0x0040,0x0020,0x0020,0x0040,0x18a0,0x18e0,0x18c0,0x18a0,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1080,0x2900,0x2920,0x3140,0x3161,0x3981,0x39a1,0x39a1,0x41c1,0x41c1,0x41e1,0x41e2,0x41e1,0x41e2,0x2941,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0060,0x0060,0x0060,0x0060,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x2101,0x2942,0x3162,0x3162,0x3162,0x3162,0x3162,0x3162,0x3163,0x3163,0x3163,0x3183,0x3183,0x3183,0x3183,0x10c1,0x0060,0x0060,0x0060,0x0060,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0080,0x0080,0x0080,0x0080,0x0080,0x10c1,0x2964,0x3184,0x18e2,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0880,0x2943,0x2943,0x18e2,0x18c1,0x18e1,0x18e1,0x18e2,0x1902,0x1902,0x1902,0x1902,0x1922,0x1922,0x2122,0x2122,0x2122,0x2122,0x1922,0x1902,0x1902,0x18e1,0x10c1,0x10c1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a0,0x10a0,0x10a1,0x10a1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10a0,0x10a0,0x10a0,0x10a0,0x1080,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x1080,0x1080,0x1080,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10c0,0x18c0,0x18c0,0x18e0,0x18e0,0x18e0,0x18e0,0x18e0,0x2940,0x3161,0x2100,0x0040,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; diff --git a/MCUME_esp32/espboot/partitions.csv b/MCUME_esp32/espboot/partitions.csv new file mode 100755 index 0000000..09e5020 --- /dev/null +++ b/MCUME_esp32/espboot/partitions.csv @@ -0,0 +1,13 @@ +# Name, Type, SubType, Offset, Size +# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild +nvs, data, nvs, 0x9000, 0x6000 +phy_init, data, phy, 0xf000, 0x1000 +factory, app, factory, 0x10000, 0x070000 +ota_0, app, ota_0, 0x080000, 0x070000 +ota_1, app, ota_1, 0x0F0000, 0x070000 +ota_2, app, ota_2, 0x160000, 0x070000 +ota_3, app, ota_3, 0x1D0000, 0x070000 +ota_4, app, ota_4, 0x240000, 0x070000 +ota_5, app, ota_5, 0x2B0000, 0x070000 +ota_6, app, ota_6, 0x320000, 0x070000 +ota_7, app, ota_7, 0x390000, 0x070000 diff --git a/MCUME_esp32/espboot/sdkconfig b/MCUME_esp32/espboot/sdkconfig new file mode 100644 index 0000000..e7a6ec8 --- /dev/null +++ b/MCUME_esp32/espboot/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB= +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP= +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED=y +CONFIG_ULP_COPROC_RESERVE_MEM=512 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espboot/sdkconfig.old b/MCUME_esp32/espboot/sdkconfig.old new file mode 100644 index 0000000..9c7c5fa --- /dev/null +++ b/MCUME_esp32/espboot/sdkconfig.old @@ -0,0 +1,681 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=5 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE= + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB= +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP= +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED=y +CONFIG_ULP_COPROC_RESERVE_MEM=512 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=n +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espcolem/.DS_Store b/MCUME_esp32/espcolem/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espcolem/.DS_Store differ diff --git a/MCUME_esp32/espcolem/Makefile b/MCUME_esp32/espcolem/Makefile new file mode 100644 index 0000000..606c147 --- /dev/null +++ b/MCUME_esp32/espcolem/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espcolem + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espcolem/components/.DS_Store b/MCUME_esp32/espcolem/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/espcolem/components/.DS_Store differ diff --git a/MCUME_esp32/espcolem/components/Audio/.DS_Store b/MCUME_esp32/espcolem/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espcolem/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espcolem/components/Audio/component.mk b/MCUME_esp32/espcolem/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espcolem/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espcolem/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espcolem/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espcolem/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espcolem/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espcolem/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espcolem/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espcolem/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espcolem/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espcolem/components/Wire/.DS_Store b/MCUME_esp32/espcolem/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espcolem/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espcolem/components/Wire/Wire.cpp b/MCUME_esp32/espcolem/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espcolem/components/Wire/Wire.h b/MCUME_esp32/espcolem/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espcolem/components/Wire/component.mk b/MCUME_esp32/espcolem/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espcolem/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espcolem/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espcolem/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espcolem/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espcolem/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espcolem/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espcolem/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espcolem/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espcolem/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espcolem/flashapp.sh b/MCUME_esp32/espcolem/flashapp.sh new file mode 100755 index 0000000..af60efe --- /dev/null +++ b/MCUME_esp32/espcolem/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x320000 ../espcolem/build/espcolem.bin diff --git a/MCUME_esp32/espcolem/main/.DS_Store b/MCUME_esp32/espcolem/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espcolem/main/.DS_Store differ diff --git a/MCUME_esp32/espcolem/main/AudioPlaySystem.cpp b/MCUME_esp32/espcolem/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..1b0fcc8 --- /dev/null +++ b/MCUME_esp32/espcolem/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espcolem/main/AudioPlaySystem.h b/MCUME_esp32/espcolem/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espcolem/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espcolem/main/Codes.h b/MCUME_esp32/espcolem/main/Codes.h new file mode 100644 index 0000000..28f1d1b --- /dev/null +++ b/MCUME_esp32/espcolem/main/Codes.h @@ -0,0 +1,378 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Codes.h **/ +/** **/ +/** This file contains implementation for the main table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=6;M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { R->ICount-=6;M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=6;M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { R->ICount-=6;M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->HL.B.h);break; +case ADD_L: M_ADD(R->HL.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->HL.W);M_ADD(I);break; +case ADD_BYTE: I=RdZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->HL.B.h);break; +case SUB_L: M_SUB(R->HL.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->HL.W);M_SUB(I);break; +case SUB_BYTE: I=RdZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->HL.B.h);break; +case AND_L: M_AND(R->HL.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->HL.W);M_AND(I);break; +case AND_BYTE: I=RdZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->HL.B.h);break; +case OR_L: M_OR(R->HL.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->HL.W);M_OR(I);break; +case OR_BYTE: I=RdZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->HL.B.h);break; +case ADC_L: M_ADC(R->HL.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->HL.W);M_ADC(I);break; +case ADC_BYTE: I=RdZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->HL.B.h);break; +case SBC_L: M_SBC(R->HL.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->HL.W);M_SBC(I);break; +case SBC_BYTE: I=RdZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->HL.B.h);break; +case XOR_L: M_XOR(R->HL.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->HL.W);M_XOR(I);break; +case XOR_BYTE: I=RdZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->HL.B.h);break; +case CP_L: M_CP(R->HL.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->HL.W);M_CP(I);break; +case CP_BYTE: I=RdZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(HL);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->HL.W;break; +case LD_SP_HL: R->SP.W=R->HL.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(HL,BC);break; +case ADD_HL_DE: M_ADDW(HL,DE);break; +case ADD_HL_HL: M_ADDW(HL,HL);break; +case ADD_HL_SP: M_ADDW(HL,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->HL.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->HL.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->HL.B.h);break; +case DEC_L: M_DEC(R->HL.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->HL.W);M_DEC(I);WrZ80(R->HL.W,I);break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->HL.B.h);break; +case INC_L: M_INC(R->HL.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->HL.W);M_INC(I);WrZ80(R->HL.W,I);break; + +case RLCA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(HL);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(HL);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: OutZ80(RdZ80(R->PC.W++),R->AF.B.h);break; +case INA: R->AF.B.h=InZ80(RdZ80(R->PC.W++));break; +case HALT: R->PC.W--;R->IFF|=0x80;R->ICount=0;break; + +case DI: + R->IFF&=0xFE; + break; +case EI: + R->IFF|=0x01; + if(R->IRequest!=INT_NONE) + { + R->IFF|=0x20; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->HL.B.h=R->BC.B.h;break; +case LD_L_B: R->HL.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: WrZ80(R->HL.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->HL.B.h=R->BC.B.l;break; +case LD_L_C: R->HL.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: WrZ80(R->HL.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->HL.B.h=R->DE.B.h;break; +case LD_L_D: R->HL.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: WrZ80(R->HL.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->HL.B.h=R->DE.B.l;break; +case LD_L_E: R->HL.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: WrZ80(R->HL.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->HL.B.h;break; +case LD_C_H: R->BC.B.l=R->HL.B.h;break; +case LD_D_H: R->DE.B.h=R->HL.B.h;break; +case LD_E_H: R->DE.B.l=R->HL.B.h;break; +case LD_H_H: R->HL.B.h=R->HL.B.h;break; +case LD_L_H: R->HL.B.l=R->HL.B.h;break; +case LD_A_H: R->AF.B.h=R->HL.B.h;break; +case LD_xHL_H: WrZ80(R->HL.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->HL.B.l;break; +case LD_C_L: R->BC.B.l=R->HL.B.l;break; +case LD_D_L: R->DE.B.h=R->HL.B.l;break; +case LD_E_L: R->DE.B.l=R->HL.B.l;break; +case LD_H_L: R->HL.B.h=R->HL.B.l;break; +case LD_L_L: R->HL.B.l=R->HL.B.l;break; +case LD_A_L: R->AF.B.h=R->HL.B.l;break; +case LD_xHL_L: WrZ80(R->HL.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->HL.B.h=R->AF.B.h;break; +case LD_L_A: R->HL.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: WrZ80(R->HL.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->HL.W);break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->HL.W);break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->HL.W);break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->HL.W);break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->HL.W);break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->HL.W);break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->HL.W);break; + +case LD_B_BYTE: R->BC.B.h=RdZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=RdZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=RdZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=RdZ80(R->PC.W++);break; +case LD_H_BYTE: R->HL.B.h=RdZ80(R->PC.W++);break; +case LD_L_BYTE: R->HL.B.l=RdZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=RdZ80(R->PC.W++);break; +case LD_xHL_BYTE: WrZ80(R->HL.W,RdZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; + +case LD_HL_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->HL.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->HL.B.h); + R->HL.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; + +default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-1),R->PC.W-1 + ); + break; diff --git a/MCUME_esp32/espcolem/main/CodesCB.h b/MCUME_esp32/espcolem/main/CodesCB.h new file mode 100644 index 0000000..c8a5f91 --- /dev/null +++ b/MCUME_esp32/espcolem/main/CodesCB.h @@ -0,0 +1,204 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesCB.h **/ +/** **/ +/** This file contains implementation for the CB table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_B: M_RLC(R->BC.B.h);break; case RLC_C: M_RLC(R->BC.B.l);break; +case RLC_D: M_RLC(R->DE.B.h);break; case RLC_E: M_RLC(R->DE.B.l);break; +case RLC_H: M_RLC(R->HL.B.h);break; case RLC_L: M_RLC(R->HL.B.l);break; +case RLC_xHL: I=RdZ80(R->HL.W);M_RLC(I);WrZ80(R->HL.W,I);break; +case RLC_A: M_RLC(R->AF.B.h);break; + +case RRC_B: M_RRC(R->BC.B.h);break; case RRC_C: M_RRC(R->BC.B.l);break; +case RRC_D: M_RRC(R->DE.B.h);break; case RRC_E: M_RRC(R->DE.B.l);break; +case RRC_H: M_RRC(R->HL.B.h);break; case RRC_L: M_RRC(R->HL.B.l);break; +case RRC_xHL: I=RdZ80(R->HL.W);M_RRC(I);WrZ80(R->HL.W,I);break; +case RRC_A: M_RRC(R->AF.B.h);break; + +case RL_B: M_RL(R->BC.B.h);break; case RL_C: M_RL(R->BC.B.l);break; +case RL_D: M_RL(R->DE.B.h);break; case RL_E: M_RL(R->DE.B.l);break; +case RL_H: M_RL(R->HL.B.h);break; case RL_L: M_RL(R->HL.B.l);break; +case RL_xHL: I=RdZ80(R->HL.W);M_RL(I);WrZ80(R->HL.W,I);break; +case RL_A: M_RL(R->AF.B.h);break; + +case RR_B: M_RR(R->BC.B.h);break; case RR_C: M_RR(R->BC.B.l);break; +case RR_D: M_RR(R->DE.B.h);break; case RR_E: M_RR(R->DE.B.l);break; +case RR_H: M_RR(R->HL.B.h);break; case RR_L: M_RR(R->HL.B.l);break; +case RR_xHL: I=RdZ80(R->HL.W);M_RR(I);WrZ80(R->HL.W,I);break; +case RR_A: M_RR(R->AF.B.h);break; + +case SLA_B: M_SLA(R->BC.B.h);break; case SLA_C: M_SLA(R->BC.B.l);break; +case SLA_D: M_SLA(R->DE.B.h);break; case SLA_E: M_SLA(R->DE.B.l);break; +case SLA_H: M_SLA(R->HL.B.h);break; case SLA_L: M_SLA(R->HL.B.l);break; +case SLA_xHL: I=RdZ80(R->HL.W);M_SLA(I);WrZ80(R->HL.W,I);break; +case SLA_A: M_SLA(R->AF.B.h);break; + +case SRA_B: M_SRA(R->BC.B.h);break; case SRA_C: M_SRA(R->BC.B.l);break; +case SRA_D: M_SRA(R->DE.B.h);break; case SRA_E: M_SRA(R->DE.B.l);break; +case SRA_H: M_SRA(R->HL.B.h);break; case SRA_L: M_SRA(R->HL.B.l);break; +case SRA_xHL: I=RdZ80(R->HL.W);M_SRA(I);WrZ80(R->HL.W,I);break; +case SRA_A: M_SRA(R->AF.B.h);break; + +case SLL_B: M_SLL(R->BC.B.h);break; case SLL_C: M_SLL(R->BC.B.l);break; +case SLL_D: M_SLL(R->DE.B.h);break; case SLL_E: M_SLL(R->DE.B.l);break; +case SLL_H: M_SLL(R->HL.B.h);break; case SLL_L: M_SLL(R->HL.B.l);break; +case SLL_xHL: I=RdZ80(R->HL.W);M_SLL(I);WrZ80(R->HL.W,I);break; +case SLL_A: M_SLL(R->AF.B.h);break; + +case SRL_B: M_SRL(R->BC.B.h);break; case SRL_C: M_SRL(R->BC.B.l);break; +case SRL_D: M_SRL(R->DE.B.h);break; case SRL_E: M_SRL(R->DE.B.l);break; +case SRL_H: M_SRL(R->HL.B.h);break; case SRL_L: M_SRL(R->HL.B.l);break; +case SRL_xHL: I=RdZ80(R->HL.W);M_SRL(I);WrZ80(R->HL.W,I);break; +case SRL_A: M_SRL(R->AF.B.h);break; + +case BIT0_B: M_BIT(0,R->BC.B.h);break; case BIT0_C: M_BIT(0,R->BC.B.l);break; +case BIT0_D: M_BIT(0,R->DE.B.h);break; case BIT0_E: M_BIT(0,R->DE.B.l);break; +case BIT0_H: M_BIT(0,R->HL.B.h);break; case BIT0_L: M_BIT(0,R->HL.B.l);break; +case BIT0_xHL: I=RdZ80(R->HL.W);M_BIT(0,I);break; +case BIT0_A: M_BIT(0,R->AF.B.h);break; + +case BIT1_B: M_BIT(1,R->BC.B.h);break; case BIT1_C: M_BIT(1,R->BC.B.l);break; +case BIT1_D: M_BIT(1,R->DE.B.h);break; case BIT1_E: M_BIT(1,R->DE.B.l);break; +case BIT1_H: M_BIT(1,R->HL.B.h);break; case BIT1_L: M_BIT(1,R->HL.B.l);break; +case BIT1_xHL: I=RdZ80(R->HL.W);M_BIT(1,I);break; +case BIT1_A: M_BIT(1,R->AF.B.h);break; + +case BIT2_B: M_BIT(2,R->BC.B.h);break; case BIT2_C: M_BIT(2,R->BC.B.l);break; +case BIT2_D: M_BIT(2,R->DE.B.h);break; case BIT2_E: M_BIT(2,R->DE.B.l);break; +case BIT2_H: M_BIT(2,R->HL.B.h);break; case BIT2_L: M_BIT(2,R->HL.B.l);break; +case BIT2_xHL: I=RdZ80(R->HL.W);M_BIT(2,I);break; +case BIT2_A: M_BIT(2,R->AF.B.h);break; + +case BIT3_B: M_BIT(3,R->BC.B.h);break; case BIT3_C: M_BIT(3,R->BC.B.l);break; +case BIT3_D: M_BIT(3,R->DE.B.h);break; case BIT3_E: M_BIT(3,R->DE.B.l);break; +case BIT3_H: M_BIT(3,R->HL.B.h);break; case BIT3_L: M_BIT(3,R->HL.B.l);break; +case BIT3_xHL: I=RdZ80(R->HL.W);M_BIT(3,I);break; +case BIT3_A: M_BIT(3,R->AF.B.h);break; + +case BIT4_B: M_BIT(4,R->BC.B.h);break; case BIT4_C: M_BIT(4,R->BC.B.l);break; +case BIT4_D: M_BIT(4,R->DE.B.h);break; case BIT4_E: M_BIT(4,R->DE.B.l);break; +case BIT4_H: M_BIT(4,R->HL.B.h);break; case BIT4_L: M_BIT(4,R->HL.B.l);break; +case BIT4_xHL: I=RdZ80(R->HL.W);M_BIT(4,I);break; +case BIT4_A: M_BIT(4,R->AF.B.h);break; + +case BIT5_B: M_BIT(5,R->BC.B.h);break; case BIT5_C: M_BIT(5,R->BC.B.l);break; +case BIT5_D: M_BIT(5,R->DE.B.h);break; case BIT5_E: M_BIT(5,R->DE.B.l);break; +case BIT5_H: M_BIT(5,R->HL.B.h);break; case BIT5_L: M_BIT(5,R->HL.B.l);break; +case BIT5_xHL: I=RdZ80(R->HL.W);M_BIT(5,I);break; +case BIT5_A: M_BIT(5,R->AF.B.h);break; + +case BIT6_B: M_BIT(6,R->BC.B.h);break; case BIT6_C: M_BIT(6,R->BC.B.l);break; +case BIT6_D: M_BIT(6,R->DE.B.h);break; case BIT6_E: M_BIT(6,R->DE.B.l);break; +case BIT6_H: M_BIT(6,R->HL.B.h);break; case BIT6_L: M_BIT(6,R->HL.B.l);break; +case BIT6_xHL: I=RdZ80(R->HL.W);M_BIT(6,I);break; +case BIT6_A: M_BIT(6,R->AF.B.h);break; + +case BIT7_B: M_BIT(7,R->BC.B.h);break; case BIT7_C: M_BIT(7,R->BC.B.l);break; +case BIT7_D: M_BIT(7,R->DE.B.h);break; case BIT7_E: M_BIT(7,R->DE.B.l);break; +case BIT7_H: M_BIT(7,R->HL.B.h);break; case BIT7_L: M_BIT(7,R->HL.B.l);break; +case BIT7_xHL: I=RdZ80(R->HL.W);M_BIT(7,I);break; +case BIT7_A: M_BIT(7,R->AF.B.h);break; + +case RES0_B: M_RES(0,R->BC.B.h);break; case RES0_C: M_RES(0,R->BC.B.l);break; +case RES0_D: M_RES(0,R->DE.B.h);break; case RES0_E: M_RES(0,R->DE.B.l);break; +case RES0_H: M_RES(0,R->HL.B.h);break; case RES0_L: M_RES(0,R->HL.B.l);break; +case RES0_xHL: I=RdZ80(R->HL.W);M_RES(0,I);WrZ80(R->HL.W,I);break; +case RES0_A: M_RES(0,R->AF.B.h);break; + +case RES1_B: M_RES(1,R->BC.B.h);break; case RES1_C: M_RES(1,R->BC.B.l);break; +case RES1_D: M_RES(1,R->DE.B.h);break; case RES1_E: M_RES(1,R->DE.B.l);break; +case RES1_H: M_RES(1,R->HL.B.h);break; case RES1_L: M_RES(1,R->HL.B.l);break; +case RES1_xHL: I=RdZ80(R->HL.W);M_RES(1,I);WrZ80(R->HL.W,I);break; +case RES1_A: M_RES(1,R->AF.B.h);break; + +case RES2_B: M_RES(2,R->BC.B.h);break; case RES2_C: M_RES(2,R->BC.B.l);break; +case RES2_D: M_RES(2,R->DE.B.h);break; case RES2_E: M_RES(2,R->DE.B.l);break; +case RES2_H: M_RES(2,R->HL.B.h);break; case RES2_L: M_RES(2,R->HL.B.l);break; +case RES2_xHL: I=RdZ80(R->HL.W);M_RES(2,I);WrZ80(R->HL.W,I);break; +case RES2_A: M_RES(2,R->AF.B.h);break; + +case RES3_B: M_RES(3,R->BC.B.h);break; case RES3_C: M_RES(3,R->BC.B.l);break; +case RES3_D: M_RES(3,R->DE.B.h);break; case RES3_E: M_RES(3,R->DE.B.l);break; +case RES3_H: M_RES(3,R->HL.B.h);break; case RES3_L: M_RES(3,R->HL.B.l);break; +case RES3_xHL: I=RdZ80(R->HL.W);M_RES(3,I);WrZ80(R->HL.W,I);break; +case RES3_A: M_RES(3,R->AF.B.h);break; + +case RES4_B: M_RES(4,R->BC.B.h);break; case RES4_C: M_RES(4,R->BC.B.l);break; +case RES4_D: M_RES(4,R->DE.B.h);break; case RES4_E: M_RES(4,R->DE.B.l);break; +case RES4_H: M_RES(4,R->HL.B.h);break; case RES4_L: M_RES(4,R->HL.B.l);break; +case RES4_xHL: I=RdZ80(R->HL.W);M_RES(4,I);WrZ80(R->HL.W,I);break; +case RES4_A: M_RES(4,R->AF.B.h);break; + +case RES5_B: M_RES(5,R->BC.B.h);break; case RES5_C: M_RES(5,R->BC.B.l);break; +case RES5_D: M_RES(5,R->DE.B.h);break; case RES5_E: M_RES(5,R->DE.B.l);break; +case RES5_H: M_RES(5,R->HL.B.h);break; case RES5_L: M_RES(5,R->HL.B.l);break; +case RES5_xHL: I=RdZ80(R->HL.W);M_RES(5,I);WrZ80(R->HL.W,I);break; +case RES5_A: M_RES(5,R->AF.B.h);break; + +case RES6_B: M_RES(6,R->BC.B.h);break; case RES6_C: M_RES(6,R->BC.B.l);break; +case RES6_D: M_RES(6,R->DE.B.h);break; case RES6_E: M_RES(6,R->DE.B.l);break; +case RES6_H: M_RES(6,R->HL.B.h);break; case RES6_L: M_RES(6,R->HL.B.l);break; +case RES6_xHL: I=RdZ80(R->HL.W);M_RES(6,I);WrZ80(R->HL.W,I);break; +case RES6_A: M_RES(6,R->AF.B.h);break; + +case RES7_B: M_RES(7,R->BC.B.h);break; case RES7_C: M_RES(7,R->BC.B.l);break; +case RES7_D: M_RES(7,R->DE.B.h);break; case RES7_E: M_RES(7,R->DE.B.l);break; +case RES7_H: M_RES(7,R->HL.B.h);break; case RES7_L: M_RES(7,R->HL.B.l);break; +case RES7_xHL: I=RdZ80(R->HL.W);M_RES(7,I);WrZ80(R->HL.W,I);break; +case RES7_A: M_RES(7,R->AF.B.h);break; + +case SET0_B: M_SET(0,R->BC.B.h);break; case SET0_C: M_SET(0,R->BC.B.l);break; +case SET0_D: M_SET(0,R->DE.B.h);break; case SET0_E: M_SET(0,R->DE.B.l);break; +case SET0_H: M_SET(0,R->HL.B.h);break; case SET0_L: M_SET(0,R->HL.B.l);break; +case SET0_xHL: I=RdZ80(R->HL.W);M_SET(0,I);WrZ80(R->HL.W,I);break; +case SET0_A: M_SET(0,R->AF.B.h);break; + +case SET1_B: M_SET(1,R->BC.B.h);break; case SET1_C: M_SET(1,R->BC.B.l);break; +case SET1_D: M_SET(1,R->DE.B.h);break; case SET1_E: M_SET(1,R->DE.B.l);break; +case SET1_H: M_SET(1,R->HL.B.h);break; case SET1_L: M_SET(1,R->HL.B.l);break; +case SET1_xHL: I=RdZ80(R->HL.W);M_SET(1,I);WrZ80(R->HL.W,I);break; +case SET1_A: M_SET(1,R->AF.B.h);break; + +case SET2_B: M_SET(2,R->BC.B.h);break; case SET2_C: M_SET(2,R->BC.B.l);break; +case SET2_D: M_SET(2,R->DE.B.h);break; case SET2_E: M_SET(2,R->DE.B.l);break; +case SET2_H: M_SET(2,R->HL.B.h);break; case SET2_L: M_SET(2,R->HL.B.l);break; +case SET2_xHL: I=RdZ80(R->HL.W);M_SET(2,I);WrZ80(R->HL.W,I);break; +case SET2_A: M_SET(2,R->AF.B.h);break; + +case SET3_B: M_SET(3,R->BC.B.h);break; case SET3_C: M_SET(3,R->BC.B.l);break; +case SET3_D: M_SET(3,R->DE.B.h);break; case SET3_E: M_SET(3,R->DE.B.l);break; +case SET3_H: M_SET(3,R->HL.B.h);break; case SET3_L: M_SET(3,R->HL.B.l);break; +case SET3_xHL: I=RdZ80(R->HL.W);M_SET(3,I);WrZ80(R->HL.W,I);break; +case SET3_A: M_SET(3,R->AF.B.h);break; + +case SET4_B: M_SET(4,R->BC.B.h);break; case SET4_C: M_SET(4,R->BC.B.l);break; +case SET4_D: M_SET(4,R->DE.B.h);break; case SET4_E: M_SET(4,R->DE.B.l);break; +case SET4_H: M_SET(4,R->HL.B.h);break; case SET4_L: M_SET(4,R->HL.B.l);break; +case SET4_xHL: I=RdZ80(R->HL.W);M_SET(4,I);WrZ80(R->HL.W,I);break; +case SET4_A: M_SET(4,R->AF.B.h);break; + +case SET5_B: M_SET(5,R->BC.B.h);break; case SET5_C: M_SET(5,R->BC.B.l);break; +case SET5_D: M_SET(5,R->DE.B.h);break; case SET5_E: M_SET(5,R->DE.B.l);break; +case SET5_H: M_SET(5,R->HL.B.h);break; case SET5_L: M_SET(5,R->HL.B.l);break; +case SET5_xHL: I=RdZ80(R->HL.W);M_SET(5,I);WrZ80(R->HL.W,I);break; +case SET5_A: M_SET(5,R->AF.B.h);break; + +case SET6_B: M_SET(6,R->BC.B.h);break; case SET6_C: M_SET(6,R->BC.B.l);break; +case SET6_D: M_SET(6,R->DE.B.h);break; case SET6_E: M_SET(6,R->DE.B.l);break; +case SET6_H: M_SET(6,R->HL.B.h);break; case SET6_L: M_SET(6,R->HL.B.l);break; +case SET6_xHL: I=RdZ80(R->HL.W);M_SET(6,I);WrZ80(R->HL.W,I);break; +case SET6_A: M_SET(6,R->AF.B.h);break; + +case SET7_B: M_SET(7,R->BC.B.h);break; case SET7_C: M_SET(7,R->BC.B.l);break; +case SET7_D: M_SET(7,R->DE.B.h);break; case SET7_E: M_SET(7,R->DE.B.l);break; +case SET7_H: M_SET(7,R->HL.B.h);break; case SET7_L: M_SET(7,R->HL.B.l);break; +case SET7_xHL: I=RdZ80(R->HL.W);M_SET(7,I);WrZ80(R->HL.W,I);break; +case SET7_A: M_SET(7,R->AF.B.h);break; diff --git a/MCUME_esp32/espcolem/main/CodesED.h b/MCUME_esp32/espcolem/main/CodesED.h new file mode 100644 index 0000000..56a7c69 --- /dev/null +++ b/MCUME_esp32/espcolem/main/CodesED.h @@ -0,0 +1,282 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesED.h **/ +/** **/ +/** This file contains implementation for the ED table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +/** This is a special patch for emulating BIOS calls: ********/ +case DB_FE: PatchZ80(R);break; +/*************************************************************/ + +case ADC_HL_BC: M_ADCW(BC);break; +case ADC_HL_DE: M_ADCW(DE);break; +case ADC_HL_HL: M_ADCW(HL);break; +case ADC_HL_SP: M_ADCW(SP);break; + +case SBC_HL_BC: M_SBCW(BC);break; +case SBC_HL_DE: M_SBCW(DE);break; +case SBC_HL_HL: M_SBCW(HL);break; +case SBC_HL_SP: M_SBCW(SP);break; + +case LD_xWORDe_HL: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; +case LD_xWORDe_DE: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->DE.B.l); + WrZ80(J.W,R->DE.B.h); + break; +case LD_xWORDe_BC: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->BC.B.l); + WrZ80(J.W,R->BC.B.h); + break; +case LD_xWORDe_SP: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->SP.B.l); + WrZ80(J.W,R->SP.B.h); + break; + +case LD_HL_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; +case LD_DE_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->DE.B.l=RdZ80(J.W++); + R->DE.B.h=RdZ80(J.W); + break; +case LD_BC_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->BC.B.l=RdZ80(J.W++); + R->BC.B.h=RdZ80(J.W); + break; +case LD_SP_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->SP.B.l=RdZ80(J.W++); + R->SP.B.h=RdZ80(J.W); + break; + +case RRD: + I=RdZ80(R->HL.W); + J.B.l=(I>>4)|(R->AF.B.h<<4); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I&0x0F)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; +case RLD: + I=RdZ80(R->HL.W); + J.B.l=(I<<4)|(R->AF.B.h&0x0F); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I>>4)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; + +case LD_A_I: + R->AF.B.h=R->I; + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&1? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_A_R: + R->R++; + R->AF.B.h=(byte)(R->R-R->ICount); + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&1? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_I_A: R->I=R->AF.B.h;break; +case LD_R_A: break; + +case IM_0: R->IFF&=0xF9;break; +case IM_1: R->IFF=(R->IFF&0xF9)|2;break; +case IM_2: R->IFF=(R->IFF&0xF9)|4;break; + +case RETI: M_RET;break; +case RETN: if(R->IFF&0x40) R->IFF|=0x01; else R->IFF&=0xFE; + M_RET;break; + +case NEG: I=R->AF.B.h;R->AF.B.h=0;M_SUB(I);break; + +case IN_B_xC: M_IN(R->BC.B.h);break; +case IN_C_xC: M_IN(R->BC.B.l);break; +case IN_D_xC: M_IN(R->DE.B.h);break; +case IN_E_xC: M_IN(R->DE.B.l);break; +case IN_H_xC: M_IN(R->HL.B.h);break; +case IN_L_xC: M_IN(R->HL.B.l);break; +case IN_A_xC: M_IN(R->AF.B.h);break; +case IN_F_xC: M_IN(J.B.l);break; + +case OUT_xC_B: OutZ80(R->BC.B.l,R->BC.B.h);break; +case OUT_xC_C: OutZ80(R->BC.B.l,R->BC.B.l);break; +case OUT_xC_D: OutZ80(R->BC.B.l,R->DE.B.h);break; +case OUT_xC_E: OutZ80(R->BC.B.l,R->DE.B.l);break; +case OUT_xC_H: OutZ80(R->BC.B.l,R->HL.B.h);break; +case OUT_xC_L: OutZ80(R->BC.B.l,R->HL.B.l);break; +case OUT_xC_A: OutZ80(R->BC.B.l,R->AF.B.h);break; + +case INI: + WrZ80(R->HL.W++,InZ80(R->BC.B.l)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INIR: + do + { + WrZ80(R->HL.W++,InZ80(R->BC.B.l)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case IND: + WrZ80(R->HL.W--,InZ80(R->BC.B.l)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INDR: + do + { + WrZ80(R->HL.W--,InZ80(R->BC.B.l)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case OUTI: + OutZ80(R->BC.B.l,RdZ80(R->HL.W++)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case OTIR: + do + { + OutZ80(R->BC.B.l,RdZ80(R->HL.W++)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case OUTD: + OutZ80(R->BC.B.l,RdZ80(R->HL.W--)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case OTDR: + do + { + OutZ80(R->BC.B.l,RdZ80(R->HL.W--)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case LDI: + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + R->BC.W--; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDIR: + do + { + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case LDD: + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + R->BC.W--; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDDR: + do + { + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case CPI: + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + R->BC.W--; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPIR: + do + { + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&J.B.l&&(R->ICount>0)); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; + +case CPD: + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + R->BC.W--; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPDR: + do + { + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&J.B.l); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; diff --git a/MCUME_esp32/espcolem/main/CodesXCB.h b/MCUME_esp32/espcolem/main/CodesXCB.h new file mode 100644 index 0000000..0b84ca2 --- /dev/null +++ b/MCUME_esp32/espcolem/main/CodesXCB.h @@ -0,0 +1,64 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXCB.h **/ +/** **/ +/** This file contains implementation for FD/DD-CB tables **/ +/** of Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_xHL: I=RdZ80(J.W);M_RLC(I);WrZ80(J.W,I);break; +case RRC_xHL: I=RdZ80(J.W);M_RRC(I);WrZ80(J.W,I);break; +case RL_xHL: I=RdZ80(J.W);M_RL(I);WrZ80(J.W,I);break; +case RR_xHL: I=RdZ80(J.W);M_RR(I);WrZ80(J.W,I);break; +case SLA_xHL: I=RdZ80(J.W);M_SLA(I);WrZ80(J.W,I);break; +case SRA_xHL: I=RdZ80(J.W);M_SRA(I);WrZ80(J.W,I);break; +case SLL_xHL: I=RdZ80(J.W);M_SLL(I);WrZ80(J.W,I);break; +case SRL_xHL: I=RdZ80(J.W);M_SRL(I);WrZ80(J.W,I);break; + +case BIT0_B: case BIT0_C: case BIT0_D: case BIT0_E: +case BIT0_H: case BIT0_L: case BIT0_A: +case BIT0_xHL: I=RdZ80(J.W);M_BIT(0,I);break; +case BIT1_B: case BIT1_C: case BIT1_D: case BIT1_E: +case BIT1_H: case BIT1_L: case BIT1_A: +case BIT1_xHL: I=RdZ80(J.W);M_BIT(1,I);break; +case BIT2_B: case BIT2_C: case BIT2_D: case BIT2_E: +case BIT2_H: case BIT2_L: case BIT2_A: +case BIT2_xHL: I=RdZ80(J.W);M_BIT(2,I);break; +case BIT3_B: case BIT3_C: case BIT3_D: case BIT3_E: +case BIT3_H: case BIT3_L: case BIT3_A: +case BIT3_xHL: I=RdZ80(J.W);M_BIT(3,I);break; +case BIT4_B: case BIT4_C: case BIT4_D: case BIT4_E: +case BIT4_H: case BIT4_L: case BIT4_A: +case BIT4_xHL: I=RdZ80(J.W);M_BIT(4,I);break; +case BIT5_B: case BIT5_C: case BIT5_D: case BIT5_E: +case BIT5_H: case BIT5_L: case BIT5_A: +case BIT5_xHL: I=RdZ80(J.W);M_BIT(5,I);break; +case BIT6_B: case BIT6_C: case BIT6_D: case BIT6_E: +case BIT6_H: case BIT6_L: case BIT6_A: +case BIT6_xHL: I=RdZ80(J.W);M_BIT(6,I);break; +case BIT7_B: case BIT7_C: case BIT7_D: case BIT7_E: +case BIT7_H: case BIT7_L: case BIT7_A: +case BIT7_xHL: I=RdZ80(J.W);M_BIT(7,I);break; + +case RES0_xHL: I=RdZ80(J.W);M_RES(0,I);WrZ80(J.W,I);break; +case RES1_xHL: I=RdZ80(J.W);M_RES(1,I);WrZ80(J.W,I);break; +case RES2_xHL: I=RdZ80(J.W);M_RES(2,I);WrZ80(J.W,I);break; +case RES3_xHL: I=RdZ80(J.W);M_RES(3,I);WrZ80(J.W,I);break; +case RES4_xHL: I=RdZ80(J.W);M_RES(4,I);WrZ80(J.W,I);break; +case RES5_xHL: I=RdZ80(J.W);M_RES(5,I);WrZ80(J.W,I);break; +case RES6_xHL: I=RdZ80(J.W);M_RES(6,I);WrZ80(J.W,I);break; +case RES7_xHL: I=RdZ80(J.W);M_RES(7,I);WrZ80(J.W,I);break; + +case SET0_xHL: I=RdZ80(J.W);M_SET(0,I);WrZ80(J.W,I);break; +case SET1_xHL: I=RdZ80(J.W);M_SET(1,I);WrZ80(J.W,I);break; +case SET2_xHL: I=RdZ80(J.W);M_SET(2,I);WrZ80(J.W,I);break; +case SET3_xHL: I=RdZ80(J.W);M_SET(3,I);WrZ80(J.W,I);break; +case SET4_xHL: I=RdZ80(J.W);M_SET(4,I);WrZ80(J.W,I);break; +case SET5_xHL: I=RdZ80(J.W);M_SET(5,I);WrZ80(J.W,I);break; +case SET6_xHL: I=RdZ80(J.W);M_SET(6,I);WrZ80(J.W,I);break; +case SET7_xHL: I=RdZ80(J.W);M_SET(7,I);WrZ80(J.W,I);break; diff --git a/MCUME_esp32/espcolem/main/CodesXX.h b/MCUME_esp32/espcolem/main/CodesXX.h new file mode 100644 index 0000000..98733cd --- /dev/null +++ b/MCUME_esp32/espcolem/main/CodesXX.h @@ -0,0 +1,388 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXX.h **/ +/** **/ +/** This file contains implementation for FD/DD tables of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->XX.B.h);break; +case ADD_L: M_ADD(R->XX.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_ADD(I);break; +case ADD_BYTE: I=RdZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->XX.B.h);break; +case SUB_L: M_SUB(R->XX.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_SUB(I);break; +case SUB_BYTE: I=RdZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->XX.B.h);break; +case AND_L: M_AND(R->XX.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_AND(I);break; +case AND_BYTE: I=RdZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->XX.B.h);break; +case OR_L: M_OR(R->XX.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_OR(I);break; +case OR_BYTE: I=RdZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->XX.B.h);break; +case ADC_L: M_ADC(R->XX.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_ADC(I);break; +case ADC_BYTE: I=RdZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->XX.B.h);break; +case SBC_L: M_SBC(R->XX.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_SBC(I);break; +case SBC_BYTE: I=RdZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->XX.B.h);break; +case XOR_L: M_XOR(R->XX.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_XOR(I);break; +case XOR_BYTE: I=RdZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->XX.B.h);break; +case CP_L: M_CP(R->XX.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_CP(I);break; +case CP_BYTE: I=RdZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(XX);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->XX.W;break; +case LD_SP_HL: R->SP.W=R->XX.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(XX,BC);break; +case ADD_HL_DE: M_ADDW(XX,DE);break; +case ADD_HL_HL: M_ADDW(XX,XX);break; +case ADD_HL_SP: M_ADDW(XX,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->XX.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->XX.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->XX.B.h);break; +case DEC_L: M_DEC(R->XX.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_DEC(I); + WrZ80(R->XX.W+(offset)RdZ80(R->PC.W++),I); + break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->XX.B.h);break; +case INC_L: M_INC(R->XX.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_INC(I); + WrZ80(R->XX.W+(offset)RdZ80(R->PC.W++),I); + break; + +case RLCA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(XX);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(XX);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: OutZ80(RdZ80(R->PC.W++),R->AF.B.h);break; +case INA: R->AF.B.h=InZ80(RdZ80(R->PC.W++));break; + +case DI: + R->IFF&=0xFE; + break; +case EI: + R->IFF|=0x01; + if(R->IRequest!=INT_NONE) + { + R->IFF|=0x20; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->XX.B.h=R->BC.B.h;break; +case LD_L_B: R->XX.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->XX.B.h=R->BC.B.l;break; +case LD_L_C: R->XX.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->XX.B.h=R->DE.B.h;break; +case LD_L_D: R->XX.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->XX.B.h=R->DE.B.l;break; +case LD_L_E: R->XX.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->XX.B.h;break; +case LD_C_H: R->BC.B.l=R->XX.B.h;break; +case LD_D_H: R->DE.B.h=R->XX.B.h;break; +case LD_E_H: R->DE.B.l=R->XX.B.h;break; +case LD_H_H: R->XX.B.h=R->XX.B.h;break; +case LD_L_H: R->XX.B.l=R->XX.B.h;break; +case LD_A_H: R->AF.B.h=R->XX.B.h;break; +case LD_xHL_H: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->XX.B.l;break; +case LD_C_L: R->BC.B.l=R->XX.B.l;break; +case LD_D_L: R->DE.B.h=R->XX.B.l;break; +case LD_E_L: R->DE.B.l=R->XX.B.l;break; +case LD_H_L: R->XX.B.h=R->XX.B.l;break; +case LD_L_L: R->XX.B.l=R->XX.B.l;break; +case LD_A_L: R->AF.B.h=R->XX.B.l;break; +case LD_xHL_L: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->XX.B.h=R->AF.B.h;break; +case LD_L_A: R->XX.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; + +case LD_B_BYTE: R->BC.B.h=RdZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=RdZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=RdZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=RdZ80(R->PC.W++);break; +case LD_H_BYTE: R->XX.B.h=RdZ80(R->PC.W++);break; +case LD_L_BYTE: R->XX.B.l=RdZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=RdZ80(R->PC.W++);break; +case LD_xHL_BYTE: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,RdZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->XX.B.l); + WrZ80(J.W,R->XX.B.h); + break; + +case LD_HL_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->XX.B.l=RdZ80(J.W++); + R->XX.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->XX.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->XX.B.h); + R->XX.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; diff --git a/MCUME_esp32/espcolem/main/Colem.c b/MCUME_esp32/espcolem/main/Colem.c new file mode 100644 index 0000000..16ba621 --- /dev/null +++ b/MCUME_esp32/espcolem/main/Colem.c @@ -0,0 +1,896 @@ +#include "options.h" + +#include "Z80.h" /* Z80 CPU emulation */ +#include "SN76489.h" /* SN76489 PSG emulation */ +#include +#include + +#include "emuapi.h" + + +/************************************** +* Local macros/typedef +**************************************/ +#define WIDTH 256 //272 +#define HEIGHT 192 //208 + +#define MAXSCREEN 3 /* Highest screen mode supported */ +#define NORAM 0xFF /* Byte to be returned from */ + /* non-existing pages and ports */ + +/***** Following are macros to be used in screen drivers *****/ +#define BigSprites (VDP[1]&0x01) /* Zoomed sprites */ +#define Sprites16x16 (VDP[1]&0x02) /* 16x16/8x8 sprites */ +#define ScreenON (VDP[1]&0x40) /* Show screen */ + +/*************************************** +* Local procedures definition +***************************************/ +static void snd_Reset(void); +static void snd_Sound(int C, int F, int V); +static void SetColor(byte N,byte R,byte G,byte B); +static void RefreshSprites(byte Y); +static void RefreshBorder(byte Y); +static void RefreshLine0(byte Y); +static void RefreshLine1(byte Y); +static void RefreshLine2(byte Y); +static void RefreshLine3(byte Y); +static void RefreshScreen(void); +static void VDPOut(byte Reg,byte Value); /* Write value into VDP */ +static void CheckSprites(void); /* Collisions/5th spr. */ +static void Play(int C,int F,int V); /* Log and play sound */ + +/*************************************** +* Local data +***************************************/ +static byte * XBuf=0; // = (byte *)XBuf32; +static byte XPal[16],XPal0; + + +/*** TMS9918/9928 Palette *******************************************/ +struct { byte R,G,B; } Palette[16] = +{ + {0x00,0x00,0x00},{0x00,0x00,0x00},{0x20,0xC0,0x20},{0x60,0xE0,0x60}, + {0x20,0x20,0xE0},{0x40,0x60,0xE0},{0xA0,0x20,0x20},{0x40,0xC0,0xE0}, + {0xE0,0x20,0x20},{0xE0,0x60,0x60},{0xC0,0xC0,0x20},{0xC0,0xC0,0x80}, + {0x20,0x80,0x20},{0xC0,0x40,0xA0},{0xA0,0xA0,0xA0},{0xE0,0xE0,0xE0} +}; + +byte Verbose = 1; /* Debug msgs ON/OFF */ +byte UPeriod = 2; /* Interrupts/scr. update */ +int VPeriod = 60000; /* Number of cycles per VBlank */ +int HPeriod = 215; /* Number of cycles per HBlank */ +byte AutoA=0,AutoB=0; /* 1: Autofire for A,B buttons */ +byte Adam = 0; /* 1: Emulate Coleco Adam */ + +#define MEMRELOC -0x4000 + +#define VRAMSIZE 0x4000 +#define RAMSIZE 0xC000 + + +/* Main and Video RAMs */ +static byte * VRAM=0; //[VRAMSIZE]; +static byte * RAM=0; //RAM[RAMSIZE]; + +Z80 ccpu; /* Z80 CPU registers and state */ +SN76489 PSG; /* SN76489 PSG state */ + +byte *ChrGen,*ChrTab,*ColTab; /* VDP tables (screens) */ +byte *SprGen,*SprTab; /* VDP tables (sprites) */ +pair WVAddr,RVAddr; /* Storage for VRAM addresses */ +byte VKey; /* VDP address latch key */ +byte FGColor,BGColor; /* Colors */ +byte ScrMode; /* Current screen mode */ +byte CurLine; /* Current scanline */ +byte VDP[8],VDPStatus; /* VDP registers */ + +byte JoyMode; /* Joystick controller mode */ +word JoyState[2]; /* Joystick states */ + +/*** Screen handlers and masks for VDP table address registers ******/ +struct +{ + void (*Refresh)(byte Y); + byte R2,R3,R4,R5; +} SCR[MAXSCREEN+1] = +{ + { RefreshLine0,0x7F,0x00,0x3F,0x00 }, /* SCREEN 0:TEXT 40x24 */ + { RefreshLine1,0x7F,0xFF,0x3F,0xFF }, /* SCREEN 1:TEXT 32x24 */ + { RefreshLine2,0x7F,0x80,0x3C,0xFF }, /* SCREEN 2:BLOCK 256x192 */ + { RefreshLine3,0x7F,0x00,0x3F,0xFF } /* SCREEN 3:GFX 64x48x16 */ +}; + +/*************************************** +* Global data +***************************************/ + +/*************************************** +* Exported procedures +***************************************/ +void coc_Init(void) +{ + int J; + + /* Set up the palette */ + for(J=0;J<16;J++) + SetColor(J,Palette[J].R,Palette[J].G,Palette[J].B); + + if (VRAM == 0) VRAM = (byte *)emu_Malloc(VRAMSIZE); + if (RAM == 0) RAM = (byte *)emu_Malloc(RAMSIZE); +#if SINGLELINE_RENDERING + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH); +#else + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH*HEIGHT); +#endif + +} + +int coc_Start(char * Cartridge) +{ + int *T,I,J; + char *P; + + /*** VDP control register states: ***/ + static byte VDPInit[8] = + { 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00 }; + + /*** STARTUP CODE starts here: ***/ + T=(int *)"\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; +#ifdef LSB_FIRST + if(*T!=1) + { + emu_printf("********** This machine is high-endian. **********\n"); + emu_printf("Take #define LSB_FIRST out and compile ColEm again.\n"); + return(0); + } +#else + if(*T==1) + { + emu_printf("********** This machine is low-endian. **********\n"); + emu_printf("Insert #define LSB_FIRST and compile ColEm again.\n"); + return(0); + } +#endif + + /* Calculate IPeriod from VPeriod */ + if(UPeriod<1) UPeriod=1; + if(VPeriod/HPeriod<256) VPeriod=256*HPeriod; + ccpu.IPeriod=HPeriod; + ccpu.TrapBadOps=Verbose&0x04; + ccpu.IAutoReset=0; + + memset(RAM,NORAM,RAMSIZE); + memset(VRAM,NORAM,VRAMSIZE); + + if(Verbose) emu_printf("OK\nLoading ROMs:\nOpening COLECO.ROM..."); + P=NULL; + if (emu_LoadFile("coleco.rom", (unsigned char *)RAM, 0x2000) != 0x2000) + P="NOT FOUND OR SHORT FILE"; + + //if(P) { if(Verbose) puts(P);return(0); } + if(Verbose) emu_printf("OK\nOpening ROM"); + if(Verbose) emu_printf(Cartridge); + + P=NULL; + J= emu_LoadFile(Cartridge, (unsigned char *)RAM+0x8000+MEMRELOC, 0x8000); + + if(J<0x1000) P="SHORT FILE"; + I=RAM[0x8000+MEMRELOC];J=RAM[0x8001+MEMRELOC]; + if( !( ((I==0x55)&&(J==0xAA))||((I==0xAA)&&(J==0x55)) ) ) + P="INVALID IMAGE"; + + //if(P) { if(Verbose) puts(P);return(0); } + if(Verbose) emu_printf("bytes loaded\n"); + + if(Verbose) + { + emu_printf("Initializing CPU and System Hardware:\n"); + //emu_printf(" VBlank = %d cycles\n HBlank = %d cycles\n",VPeriod,HPeriod); + } + +#ifdef HAS_SND + snd_Reset(); +#endif +#ifdef SOUND_PRESENT + snd_Open(22050, 2, 4096/*16384*/,(void*)snd_Mixer); +#endif + + /* Initialize VDP registers */ + memcpy(VDP,VDPInit,sizeof(VDP)); + + /* Initialize internal variables */ + VKey=1; /* VDP address latch key */ + VDPStatus=0x9F; /* VDP status register */ + FGColor=BGColor=0; /* Fore/Background color */ + ScrMode=0; /* Current screenmode */ + CurLine=0; /* Current scanline */ + ChrTab=ColTab=ChrGen=VRAM; /* VDP tables (screen) */ + SprTab=SprGen=VRAM; /* VDP tables (sprites) */ + JoyMode=0; /* Joystick mode key */ + JoyState[0]=JoyState[1]=0xFFFF; /* Joystick states */ + Reset76489(&PSG,Play); /* Reset SN76489 PSG */ + Sync76489(&PSG,PSG_SYNC); /* Make it synchronous */ + ResetZ80(&ccpu); /* Reset Z80 registers */ + + if(Verbose) emu_printf("RUNNING ROM CODE...\n"); + return(1); +} + +void coc_Step(void) +{ + //emu_printf("s"); + RunZ80(&ccpu); + RunZ80(&ccpu); +} + +void coc_Stop(void) +{ +} + + +#ifdef HAS_SND + +static void snd_Reset(void) +{ + emu_sndInit(); +} + +static void snd_Sound(int C, int F, int V) +{ + emu_sndPlaySound(C, V, F); +} +#endif + +/** Joysticks ************************************************/ +/** Check for keyboard events, parse them, and modify **/ +/** joystick controller status **/ +/*************************************************************/ + +void SetColor(byte N,byte R,byte G,byte B) +{ + unsigned char val = R; + XPal[N] = N; //(R&0xe0) | ((G>>3) & 0x1c) | ((B>>6) & 0x3); // RGBVAL(R,G,B); //(byte)lld_SetPaletteEntry(-1, R,G,B,0); + emu_SetPaletteEntry(R,G,B,N); +} + +void Joysticks(void) +{ + int k; + int j; + int ij; + int N=0; + word JS[2] = { 0xFFFF,0xFFFF }; + + k=emu_ReadKeys(); + j=emu_GetPad(); + ij=emu_ReadI2CKeyboard(); + + if (j & 0x8000) N = 1; + else N = 0; + + if(j) + JS[N]=(JS[N]&0xFFF0)|(j-1); + if(ij) + JS[N]=(JS[N]&0xFFF0)|(ij-1); + + if (k & MASK_JOY2_BTN) + { + JS[N]&=0xBFFF; //Fire 1 + } + if (k & MASK_KEY_USER1) + { + JS[N]&=0xFFBF; //Fire 2 + } + if (k & MASK_KEY_USER2) + { + JS[0]=(JS[0]&0xFFF0)|(2); //1 + } + // JS[0]=(JS[0]&0xFFF0)|(12); + // JS[0]=(JS[0]&0xFFF0)|(13); + + if (k & MASK_JOY2_DOWN) + JS[N]&=0xFBFF; //Down + if (k & MASK_JOY2_UP) + JS[N]&=0xFEFF; //Up + if (k & MASK_JOY2_RIGHT) + JS[N]&=0xF7FF; //Right + if (k & MASK_JOY2_LEFT) + JS[N]&=0xFDFF; //Left + + JoyState[0]=JS[0];JoyState[1]=JS[1]; +} + +/** WrZ80() **************************************************/ +/** Z80 emulation calls this function to write byte V to **/ +/** address A of Z80 address space. **/ +/*************************************************************/ +void WrZ80(register word A,register byte V) +{ + if((A>0x5FFF)&&(A<0x8000)) + { + A&=0x03FF; + RAM[0x6000+A+MEMRELOC]=RAM[0x6400+A+MEMRELOC]=RAM[0x6800+A+MEMRELOC]=RAM[0x6C00+A+MEMRELOC]= + RAM[0x7000+A+MEMRELOC]=RAM[0x7400+A+MEMRELOC]=RAM[0x7800+A+MEMRELOC]=RAM[0x7C00+A+MEMRELOC]=V; + } +} + +/** RdZ80() **************************************************/ +/** Z80 emulation calls this function to read a byte from **/ +/** address A of Z80 address space. Now moved to z80.c and **/ +/** made inlined to speed things up. **/ +/*************************************************************/ + +byte RdZ80(register word A) { + if ( (A>=0x6000) && (A<0x10000) ) + return(RAM[A+MEMRELOC]); + else + return(RAM[A]); +} + + +/** PatchZ80() ***********************************************/ +/** Z80 emulation calls this function when it encounters a **/ +/** special patch command (ED FE) provided for user needs. **/ +/*************************************************************/ +void PatchZ80(Z80 *R) {} + +/** InZ80() **************************************************/ +/** Z80 emulation calls this function to read a byte from **/ +/** a given I/O port. **/ +/*************************************************************/ +byte InZ80(register word Port) +{ + static byte KeyCodes[16] = + { + 0x0A,0x0D,0x07,0x0C,0x02,0x03,0x0E,0x05, + 0x01,0x0B,0x06,0x09,0x08,0x04,0x0F,0x0F, + }; + + switch(Port&0xE0) + { + +case 0x40: /* Printer Status */ + if(Adam&&(Port==0x40)) return(0xFF); + break; + +case 0xE0: /* Joysticks Data */ + Port=(Port>>1)&0x01; + Port=JoyMode? + (JoyState[Port]>>8): + (JoyState[Port]&0xF0)|KeyCodes[JoyState[Port]&0x0F]; + return((Port|0xB0)&0x7F); + +case 0xA0: /* VDP Status/Data */ + if(Port&0x01) { Port=VDPStatus;VDPStatus&=0x5F;VKey=1; } + else { Port=VRAM[RVAddr.W];RVAddr.W=(RVAddr.W+1)&0x3FFF; } + return(Port); + } + + /* No such port */ + return(NORAM); +} + +/** OutZ80() *************************************************/ +/** Z80 emulation calls this function to write a byte to a **/ +/** given I/O port. **/ +/*************************************************************/ +void OutZ80(register word Port,register byte Value) +{ + static byte SR,VR; /* Sound and VDP register storage */ + + switch(Port&0xE0) + { + +case 0x80: JoyMode=0;return; +case 0xC0: JoyMode=1;return; +case 0xE0: Write76489(&PSG,Value);return; + +case 0x40: +// if(Adam&&(Port==0x40)) fputc(Value,PrnStream); + return; + +case 0xA0: + if(Port&0x01) + if(VKey) { VR=Value;VKey--; } + else + { + VKey++; + switch(Value&0xC0) + { + case 0x80: VDPOut(Value&0x07,VR);break; + case 0x40: WVAddr.B.l=VR;WVAddr.B.h=Value&0x3F;break; + case 0x00: RVAddr.B.l=VR;RVAddr.B.h=Value; + } + } + else + if(VKey) + { VRAM[WVAddr.W]=Value;WVAddr.W=(WVAddr.W+1)&0x3FFF; } + return; + + } +} + +/** LoopZ80() ************************************************/ +/** Z80 emulation calls this function periodically to check **/ +/** if the system hardware requires any interrupts. **/ +/*************************************************************/ +word LoopZ80(Z80 *R, int * ras) +{ + static byte UCount=0; + static byte ACount=0; + + /* Next scanline */ + CurLine=(CurLine+1)%193; + + /* Refresh scanline if needed */ + if(CurLine<192) + { + if(!UCount) { + (SCR[ScrMode].Refresh)(CurLine); +#if SINGLELINE_RENDERING + emu_DrawLine(XBuf, WIDTH, HEIGHT, CurLine); +#else +#endif + } + R->IPeriod=HPeriod; + return(INT_NONE); + } + + /* End of screen reached... */ + + /* Set IPeriod to the beginning of next screen */ + R->IPeriod=VPeriod-HPeriod*192; + + /* Check joysticks */ + Joysticks(); + + /* Autofire emulation */ + ACount=(ACount+1)&0x07; + if(ACount>3) + { + if(AutoA) { JoyState[0]|=0x0040;JoyState[1]|=0x0040; } + if(AutoB) { JoyState[0]|=0x4000;JoyState[1]|=0x4000; } + } + + + /* Flush any accumulated sound changes */ + Sync76489(&PSG,PSG_FLUSH); + + /* Refresh screen if needed */ + if(UCount) + UCount--; + else + { + UCount=UPeriod-1; + RefreshScreen(); + } + + /* Setting VDPStatus flags */ + VDPStatus=(VDPStatus&0xDF)|0x80; + + /* Checking sprites: */ + if(ScrMode) CheckSprites(); + + /* If exit requested, return INT_QUIT */ +// if(ExitNow) return(INT_QUIT); + *ras = 1; + /* Generate VDP interrupt */ + return(VKey&&(VDP[1]&0x20)? INT_NMI:INT_NONE); +} + +/** VDPOut() *************************************************/ +/** Emulator calls this function to write byte V into a VDP **/ +/** register R. **/ +/*************************************************************/ +void VDPOut(register byte R,register byte V) +{ + register byte J; + + switch(R) + { + case 0: switch(((V&0x0E)>>1)|(VDP[1]&0x18)) + { + case 0x10: J=0;break; + case 0x00: J=1;break; + case 0x01: J=2;break; + case 0x08: J=3;break; + default: J=ScrMode; + } + if(J!=ScrMode) + { + ChrTab=VRAM+((long)(VDP[2]&SCR[J].R2)<<10); + ChrGen=VRAM+((long)(VDP[4]&SCR[J].R4)<<11); + ColTab=VRAM+((long)(VDP[3]&SCR[J].R3)<<6); + SprTab=VRAM+((long)(VDP[5]&SCR[J].R5)<<7); + SprGen=VRAM+((long)VDP[6]<<11); + ScrMode=J; + } + break; + case 1: switch(((VDP[0]&0x0E)>>1)|(V&0x18)) + { + case 0x10: J=0;break; + case 0x00: J=1;break; + case 0x01: J=2;break; + case 0x08: J=3;break; + default: J=ScrMode; + } + if(J!=ScrMode) + { + ChrTab=VRAM+((long)(VDP[2]&SCR[J].R2)<<10); + ChrGen=VRAM+((long)(VDP[4]&SCR[J].R4)<<11); + ColTab=VRAM+((long)(VDP[3]&SCR[J].R3)<<6); + SprTab=VRAM+((long)(VDP[5]&SCR[J].R5)<<7); + SprGen=VRAM+((long)VDP[6]<<11); + ScrMode=J; + } + break; + case 2: ChrTab=VRAM+((long)(V&SCR[ScrMode].R2)<<10);break; + case 3: ColTab=VRAM+((long)(V&SCR[ScrMode].R3)<<6);break; + case 4: ChrGen=VRAM+((long)(V&SCR[ScrMode].R4)<<11);break; + case 5: SprTab=VRAM+((long)(V&SCR[ScrMode].R5)<<7);break; + case 6: V&=0x3F;SprGen=VRAM+((long)V<<11);break; + case 7: FGColor=V>>4;BGColor=V&0x0F;break; + + } + VDP[R]=V;return; +} + +/** CheckSprites() *******************************************/ +/** This function is periodically called to check for the **/ +/** sprite collisions and 5th sprite, and set appropriate **/ +/** bits in the VDP status register. **/ +/*************************************************************/ +void CheckSprites(void) +{ + register word LS,LD; + register byte DH,DV,*PS,*PD,*T; + byte I,J,N,*S,*D; + + VDPStatus=(VDPStatus&0x9F)|0x1F; + for(N=0,S=SprTab;(N<32)&&(S[0]!=208);N++,S+=4); + + if(Sprites16x16) + { + for(J=0,S=SprTab;J240)) + { + DH=S[1]-D[1]; + if((DH<16)||(DH>240)) + { + PS=SprGen+((long)(S[2]&0xFC)<<3); + PD=SprGen+((long)(D[2]&0xFC)<<3); + if(DV<16) PD+=DV; else { DV=256-DV;PS+=DV; } + if(DH>240) { DH=256-DH;T=PS;PS=PD;PD=T; } + while(DV<16) + { + LS=((word)*PS<<8)+*(PS+16); + LD=((word)*PD<<8)+*(PD+16); + if(LD&(LS>>DH)) break; + else { DV++;PS++;PD++; } + } + if(DV<16) { VDPStatus|=0x20;return; } + } + } + } + } + else + { + for(J=0,S=SprTab;J248)) + { + DH=S[1]-D[1]; + if((DH<8)||(DH>248)) + { + PS=SprGen+((long)S[2]<<3); + PD=SprGen+((long)D[2]<<3); + if(DV<8) PD+=DV; else { DV=256-DV;PS+=DV; } + if(DH>248) { DH=256-DH;T=PS;PS=PD;PD=T; } + while((DV<8)&&!(*PD&(*PS>>DH))) { DV++;PS++;PD++; } + if(DV<8) { VDPStatus|=0x20;return; } + } + } + } + } +} + + +/** Play() ***************************************************/ +/** Log and play sound of given frequency (Hz) and volume **/ +/** (0..255) via given channel (0..3). **/ +/*************************************************************/ +void Play(int C,int F,int V) +{ + /* Play actual sound */ +#ifdef HAS_SND + snd_Sound(C,F,V); +#endif +} + + +/** RefreshScreen() ******************************************/ +/** Refresh screen. This function is called in the end of **/ +/** refresh cycle to show the entire screen. **/ +/*************************************************************/ +void RefreshScreen(void) +{ +#if SINGLELINE_RENDERING +#else + emu_DrawScreen(XBuf, WIDTH, HEIGHT, WIDTH); +#endif + emu_DrawVsync(); +} + +/** RefreshBorder() ******************************************/ +/** This function is called from RefreshLine#() to refresh **/ +/** the screen border. **/ +/*************************************************************/ +void RefreshBorder(register byte Y) +{ +// if(!Y) +// memset(XBuf,XPal[BGColor],WIDTH*(HEIGHT-192)/2); +// if(Y==191) +// memset(XBuf+WIDTH*(HEIGHT+192)/2,XPal[BGColor],WIDTH*(HEIGHT-192)/2); +} + +/** RefreshSprites() *****************************************/ +/** This function is called from RefreshLine#() to refresh **/ +/** sprites. **/ +/*************************************************************/ +void RefreshSprites(register byte Y) +{ + register byte C,H; + register byte *P,*PT,*AT; + register int L,K; + register unsigned int M; + + H=Sprites16x16? 16:8; + C=0;M=0;L=0;AT=SprTab-4; + do + { + M<<=1;AT+=4;L++; /* Iterating through SprTab */ + K=AT[0]; /* K = sprite Y coordinate */ + if(K==208) break; /* Iteration terminates if Y=208 */ + if(K>256-H) K-=256; /* Y coordinate may be negative */ + + /* Mark all valid sprites with 1s, break at 4 sprites */ + if((Y>K)&&(Y<=K+H)) { M|=1;if(++C==4) break; } + } + while(L<32); + + for(;M;M>>=1,AT-=4) + if(M&1) + { + C=AT[3]; /* C = sprite attributes */ + L=C&0x80? AT[1]-32:AT[1]; /* Sprite may be shifted left by 32 */ + C&=0x0F; /* C = sprite color */ + + if((L<256)&&(L>-H)&&C) + { + K=AT[0]; /* K = sprite Y coordinate */ + if(K>256-H) K-=256; /* Y coordinate may be negative */ + +#if SINGLELINE_RENDERING + P=XBuf+L; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+(WIDTH-256)/2+WIDTH*Y+L; +#endif + PT=SprGen+((int)(H>8? AT[2]&0xFC:AT[2])<<3)+Y-K-1; + C=XPal[C]; + + /* Mask 1: clip left sprite boundary */ + K=L>=0? 0x0FFFF:(0x10000>>-L)-1; + /* Mask 2: clip right sprite boundary */ + if(L>256-H) K^=((0x00200>>(H-8))<<(L-257+H))-1; + /* Get and clip the sprite data */ + K&=((int)PT[0]<<8)|(H>8? PT[16]:0x00); + + /* Draw left 8 pixels of the sprite */ + if(K&0xFF00) + { + if(K&0x8000) P[0]=C;if(K&0x4000) P[1]=C; + if(K&0x2000) P[2]=C;if(K&0x1000) P[3]=C; + if(K&0x0800) P[4]=C;if(K&0x0400) P[5]=C; + if(K&0x0200) P[6]=C;if(K&0x0100) P[7]=C; + } + + /* Draw right 8 pixels of the sprite */ + if(K&0x00FF) + { + if(K&0x0080) P[8]=C; if(K&0x0040) P[9]=C; + if(K&0x0020) P[10]=C;if(K&0x0010) P[11]=C; + if(K&0x0008) P[12]=C;if(K&0x0004) P[13]=C; + if(K&0x0002) P[14]=C;if(K&0x0001) P[15]=C; + } + } + } +} + +/** RefreshLine0() *******************************************/ +/** Refresh line Y (0..191) of SCREEN0, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine0(register byte Y) +{ + register byte X,K,Offset,FC,BC; + register byte *P,*T; +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + BC=XPal[BGColor]; + FC=XPal[FGColor]; + T=ChrTab+(Y>>3)*40; + Offset=Y&0x07; + + //memset(P,BC,(WIDTH-240)/2); + //P+=(WIDTH-240)/2; + + for(X=0;X<40;X++) + { + K=ChrGen[((int)*T<<3)+Offset]; + P[0]=K&0x80? FC:BC;P[1]=K&0x40? FC:BC; + P[2]=K&0x20? FC:BC;P[3]=K&0x10? FC:BC; + P[4]=K&0x08? FC:BC;P[5]=K&0x04? FC:BC; + P+=6;T++; + } + + //memset(P,BC,(WIDTH-240)/2); + } + + //RefreshBorder(Y); +} + +/** RefreshLine1() *******************************************/ +/** Refresh line Y (0..191) of SCREEN1, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine1(register byte Y) +{ + register byte X,K,Offset,FC,BC; + register byte *P,*T; + +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + T=ChrTab+(Y>>3)*32; + Offset=Y&0x07; + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + //P+=(WIDTH-256)/2; + + for(X=0;X<32;X++) + { + K=*T; + BC=ColTab[K>>3]; + K=ChrGen[((int)K<<3)+Offset]; + FC=XPal[BC>>4]; + BC=XPal[BC&0x0F]; + P[0]=K&0x80? FC:BC;P[1]=K&0x40? FC:BC; + P[2]=K&0x20? FC:BC;P[3]=K&0x10? FC:BC; + P[4]=K&0x08? FC:BC;P[5]=K&0x04? FC:BC; + P[6]=K&0x02? FC:BC;P[7]=K&0x01? FC:BC; + P+=8;T++; + } + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + RefreshSprites(Y); + } + + RefreshBorder(Y); +} + +/** RefreshLine2() *******************************************/ +/** Refresh line Y (0..191) of SCREEN2, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine2(register byte Y) +{ + register byte X,K,FC,BC,Offset; + register byte *P,*T,*PGT,*CLT; + register int I; + +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + I=(int)(Y&0xC0)<<5; + PGT=ChrGen+I; + CLT=ColTab+I; + T=ChrTab+(Y>>3)*32; + Offset=Y&0x07; + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + //P+=(WIDTH-256)/2; + + for(X=0;X<32;X++) + { + I=((int)*T<<3)+Offset; + K=PGT[I]; + BC=CLT[I]; + FC=XPal[BC>>4]; + BC=XPal[BC&0x0F]; + P[0]=K&0x80? FC:BC;P[1]=K&0x40? FC:BC; + P[2]=K&0x20? FC:BC;P[3]=K&0x10? FC:BC; + P[4]=K&0x08? FC:BC;P[5]=K&0x04? FC:BC; + P[6]=K&0x02? FC:BC;P[7]=K&0x01? FC:BC; + P+=8;T++; + } + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + RefreshSprites(Y); + } + + RefreshBorder(Y); +} + +/** RefreshLine3() *******************************************/ +/** Refresh line Y (0..191) of SCREEN3, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine3(register byte Y) +{ + register byte X,K,Offset; + register byte *P,*T; + +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + T=ChrTab+(Y>>3)*32; + Offset=(Y&0x1C)>>2; + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + //P+=(WIDTH-256)/2; + + for(X=0;X<32;X++) + { + K=ChrGen[((int)*T<<3)+Offset]; + P[0]=P[1]=P[2]=P[3]=XPal[K>>4]; + P[4]=P[5]=P[6]=P[7]=XPal[K&0x0F]; + P+=8;T++; + } + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + RefreshSprites(Y); + } + + RefreshBorder(Y); +} + + diff --git a/MCUME_esp32/espcolem/main/Colem.h b/MCUME_esp32/espcolem/main/Colem.h new file mode 100644 index 0000000..24898aa --- /dev/null +++ b/MCUME_esp32/espcolem/main/Colem.h @@ -0,0 +1,4 @@ +extern void coc_Init(void); +extern void coc_Start(char * CartName); +extern void coc_Step(void); +extern void coc_Stop(void); diff --git a/MCUME_esp32/espcolem/main/SN76489.c b/MCUME_esp32/espcolem/main/SN76489.c new file mode 100644 index 0000000..d359590 --- /dev/null +++ b/MCUME_esp32/espcolem/main/SN76489.c @@ -0,0 +1,98 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** SN76489.c **/ +/** **/ +/** This file contains emulation for the SN76489 sound chip **/ +/** produced by Intel. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "SN76489.h" + +/** Reset76489() *********************************************/ +/** Reset the sound chip. The user has to provide a pointer **/ +/** to a function Sound(Channel,Freq,Volume) used to make **/ +/** actual sound. **/ +/*************************************************************/ +void Reset76489(SN76489 *D,void (*Sound)(int,int,int)) +{ + register int J; + + for(J=0;J<4;J++) D->Volume[J]=D->Freq[J]=0; + D->NoiseMode=D->Buf=D->Changed=0x00; + D->Sync=PSG_ASYNC;D->Sound=Sound; +} + +/** Sync76489() **********************************************/ +/** Flush all accumulated changes by issuing Sound() calls, **/ +/** and set the synchronization on/off. The second argument **/ +/** should be PSG_SYNC, PSG_ASYNC to set/reset sync, or **/ +/** PSG_FLUSH to leave sync mode as it is. **/ +/*************************************************************/ +void Sync76489(SN76489 *D,unsigned char Sync) +{ + register int J,I; + + if(D->Sync&&D->Changed) + { + for(J=0,I=1;J<4;J++,I<<=1) + if(D->Changed&I) + D->Sound(J,D->Freq[J],D->Volume[J]); + } + D->Changed=0x00; + if(Sync!=PSG_FLUSH) D->Sync=Sync; +} + +/** Write76489() *********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write76489(SN76489 *D,unsigned char V) +{ + register unsigned char N,J; + register long L; + + switch(V&0xF0) + { + case 0xE0: + J=V&0x03; + if(J==D->NoiseMode) return; + switch(J) + { + case 0: D->Freq[3]=20000;break; + case 1: D->Freq[3]=10000;break; + case 2: D->Freq[3]=5000;break; + case 3: D->Freq[3]=D->Freq[2];break; + } + N=3;break; + case 0x80: case 0xA0: case 0xC0: + D->Buf=V;return; + case 0x90: case 0xB0: case 0xD0: case 0xF0: + N=(V-0x90)>>5; + J=(~V&0x0F)*16; + if(J==D->Volume[N]) return; + D->Volume[N]=J; + break; + default: + if(!(D->Buf&0xC0)) return; + N=(D->Buf-0x80)>>5; + L=PSG_BASE/((V&0x3F)*16+(D->Buf&0x0F)+1); + if(L>15000) L=0; + if(L==D->Freq[N]) return; + if((N==2)&&(D->NoiseMode==3)) + { + D->Freq[3]=L; + if(D->Sync) D->Changed|=0x08; + else D->Sound(3,D->Freq[3],D->Volume[3]); + } + D->Freq[N]=L; + break; + } + + if(D->Sync) D->Changed|=1<Sound(N,D->Freq[N],D->Volume[N]); +} diff --git a/MCUME_esp32/espcolem/main/SN76489.h b/MCUME_esp32/espcolem/main/SN76489.h new file mode 100644 index 0000000..552fc15 --- /dev/null +++ b/MCUME_esp32/espcolem/main/SN76489.h @@ -0,0 +1,50 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** SN76489.c **/ +/** **/ +/** This file contains emulation for the SN76489 sound chip **/ +/** produced by Intel. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef SN76489_H +#define SN76489_H + +#define PSG_BASE 131072 /* Base frequency for SN76489 */ + +#define PSG_ASYNC 0 /* Asynchronous emulation */ +#define PSG_SYNC 1 /* Synchronous emulation mode */ +#define PSG_FLUSH 2 /* Flush buffers only */ + +typedef struct +{ + int Channel,Freq[4],Volume[4],Sync; + unsigned char NoiseMode,Buf,Changed; + void (*Sound)(int,int,int); +} SN76489; + +/** Reset76489() *********************************************/ +/** Reset the sound chip. The user has to provide a pointer **/ +/** to a function Sound(Channel,Freq,Volume) used to make **/ +/** actual sound. **/ +/*************************************************************/ +void Reset76489(register SN76489 *D,void (*Sound)(int,int,int)); + +/** Sync76489() **********************************************/ +/** Flush all accumulated changes by issuing Sound() calls, **/ +/** and set the synchronization on/off. The second argument **/ +/** should be PSG_SYNC, PSG_ASYNC to set/reset sync, or **/ +/** PSG_FLUSH to leave sync mode as it is. **/ +/*************************************************************/ +void Sync76489(register SN76489 *D,register unsigned char Sync); + +/** Write76489() *********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write76489(register SN76489 *D,register unsigned char V); + +#endif /* SN76489_H */ diff --git a/MCUME_esp32/espcolem/main/Tables.h b/MCUME_esp32/espcolem/main/Tables.h new file mode 100644 index 0000000..3373adf --- /dev/null +++ b/MCUME_esp32/espcolem/main/Tables.h @@ -0,0 +1,447 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Tables.h **/ +/** **/ +/** This file contains tables of used by Z80 emulation to **/ +/** compute SIGN,ZERO, PARITY flags, and decimal correction **/ +/** There are also timing tables for Z80 opcodes. This file **/ +/** is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +static byte Cycles[256] = +{ + 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, + 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4, + 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, + 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 5,10,10,10,10,11, 7,11, 5,10,10, 0,10,17, 7,11, + 5,10,10,11,10,11, 7,11, 5, 4,10,11,10, 0, 7,11, + 5,10,10,19,10,11, 7,11, 5, 4,10, 4,10, 0, 7,11, + 5,10,10, 4,10,11, 7,11, 5, 6,10, 4,10, 0, 7,11 +}; + +static byte CyclesCB[256] = +{ + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8 +}; + +static byte CyclesED[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12,12,15,20, 8,14, 8, 9,12,12,15,20, 0,14, 0, 9, + 12,12,15,20, 0, 0, 8, 9,12,12,15,20, 0, 0, 8, 9, + 12,12,15,20, 0, 0, 0,18,12,12,15,20, 0, 0, 0,18, + 12, 0,15,20, 0, 0, 0, 0,12,12,15,20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,16,16,16, 0, 0, 0, 0,16,16,16,16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static byte CyclesXX[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0,14,20,10, 9, 9, 9, 0, 0,15,20,10, 9, 9, 9, 0, + 0, 0, 0, 0,23,23,19, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 19,19,19,19,19,19,19,19, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,14, 0,23, 0,15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0 +}; + +static byte CyclesXXCB[256] = +{ + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0 +}; + +static byte ZSTable[256] = +{ + Z_FLAG,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG +}; + +static byte PZSTable[256] = +{ + Z_FLAG|P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG +}; + +static word DAATable[2048] = +{ + 0x0044,0x0100,0x0200,0x0304,0x0400,0x0504,0x0604,0x0700, + 0x0808,0x090C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1000,0x1104,0x1204,0x1300,0x1404,0x1500,0x1600,0x1704, + 0x180C,0x1908,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2020,0x2124,0x2224,0x2320,0x2424,0x2520,0x2620,0x2724, + 0x282C,0x2928,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3024,0x3120,0x3220,0x3324,0x3420,0x3524,0x3624,0x3720, + 0x3828,0x392C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4000,0x4104,0x4204,0x4300,0x4404,0x4500,0x4600,0x4704, + 0x480C,0x4908,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5004,0x5100,0x5200,0x5304,0x5400,0x5504,0x5604,0x5700, + 0x5808,0x590C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6024,0x6120,0x6220,0x6324,0x6420,0x6524,0x6624,0x6720, + 0x6828,0x692C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7020,0x7124,0x7224,0x7320,0x7424,0x7520,0x7620,0x7724, + 0x782C,0x7928,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8080,0x8184,0x8284,0x8380,0x8484,0x8580,0x8680,0x8784, + 0x888C,0x8988,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9084,0x9180,0x9280,0x9384,0x9480,0x9584,0x9684,0x9780, + 0x9888,0x998C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6025,0x6121,0x6221,0x6325,0x6421,0x6525,0x6625,0x6721, + 0x6829,0x692D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7021,0x7125,0x7225,0x7321,0x7425,0x7521,0x7621,0x7725, + 0x782D,0x7929,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8081,0x8185,0x8285,0x8381,0x8485,0x8581,0x8681,0x8785, + 0x888D,0x8989,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9085,0x9181,0x9281,0x9385,0x9481,0x9585,0x9685,0x9781, + 0x9889,0x998D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA0A5,0xA1A1,0xA2A1,0xA3A5,0xA4A1,0xA5A5,0xA6A5,0xA7A1, + 0xA8A9,0xA9AD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB0A1,0xB1A5,0xB2A5,0xB3A1,0xB4A5,0xB5A1,0xB6A1,0xB7A5, + 0xB8AD,0xB9A9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC085,0xC181,0xC281,0xC385,0xC481,0xC585,0xC685,0xC781, + 0xC889,0xC98D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD081,0xD185,0xD285,0xD381,0xD485,0xD581,0xD681,0xD785, + 0xD88D,0xD989,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE0A1,0xE1A5,0xE2A5,0xE3A1,0xE4A5,0xE5A1,0xE6A1,0xE7A5, + 0xE8AD,0xE9A9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF0A5,0xF1A1,0xF2A1,0xF3A5,0xF4A1,0xF5A5,0xF6A5,0xF7A1, + 0xF8A9,0xF9AD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0604,0x0700,0x0808,0x090C,0x0A0C,0x0B08,0x0C0C,0x0D08, + 0x0E08,0x0F0C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1600,0x1704,0x180C,0x1908,0x1A08,0x1B0C,0x1C08,0x1D0C, + 0x1E0C,0x1F08,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2620,0x2724,0x282C,0x2928,0x2A28,0x2B2C,0x2C28,0x2D2C, + 0x2E2C,0x2F28,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3624,0x3720,0x3828,0x392C,0x3A2C,0x3B28,0x3C2C,0x3D28, + 0x3E28,0x3F2C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4600,0x4704,0x480C,0x4908,0x4A08,0x4B0C,0x4C08,0x4D0C, + 0x4E0C,0x4F08,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5604,0x5700,0x5808,0x590C,0x5A0C,0x5B08,0x5C0C,0x5D08, + 0x5E08,0x5F0C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6624,0x6720,0x6828,0x692C,0x6A2C,0x6B28,0x6C2C,0x6D28, + 0x6E28,0x6F2C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7620,0x7724,0x782C,0x7928,0x7A28,0x7B2C,0x7C28,0x7D2C, + 0x7E2C,0x7F28,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8680,0x8784,0x888C,0x8988,0x8A88,0x8B8C,0x8C88,0x8D8C, + 0x8E8C,0x8F88,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9684,0x9780,0x9888,0x998C,0x9A8C,0x9B88,0x9C8C,0x9D88, + 0x9E88,0x9F8C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6625,0x6721,0x6829,0x692D,0x6A2D,0x6B29,0x6C2D,0x6D29, + 0x6E29,0x6F2D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7621,0x7725,0x782D,0x7929,0x7A29,0x7B2D,0x7C29,0x7D2D, + 0x7E2D,0x7F29,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8681,0x8785,0x888D,0x8989,0x8A89,0x8B8D,0x8C89,0x8D8D, + 0x8E8D,0x8F89,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9685,0x9781,0x9889,0x998D,0x9A8D,0x9B89,0x9C8D,0x9D89, + 0x9E89,0x9F8D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA6A5,0xA7A1,0xA8A9,0xA9AD,0xAAAD,0xABA9,0xACAD,0xADA9, + 0xAEA9,0xAFAD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB6A1,0xB7A5,0xB8AD,0xB9A9,0xBAA9,0xBBAD,0xBCA9,0xBDAD, + 0xBEAD,0xBFA9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC685,0xC781,0xC889,0xC98D,0xCA8D,0xCB89,0xCC8D,0xCD89, + 0xCE89,0xCF8D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD681,0xD785,0xD88D,0xD989,0xDA89,0xDB8D,0xDC89,0xDD8D, + 0xDE8D,0xDF89,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE6A1,0xE7A5,0xE8AD,0xE9A9,0xEAA9,0xEBAD,0xECA9,0xEDAD, + 0xEEAD,0xEFA9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF6A5,0xF7A1,0xF8A9,0xF9AD,0xFAAD,0xFBA9,0xFCAD,0xFDA9, + 0xFEA9,0xFFAD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702, + 0x080A,0x090E,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706, + 0x180E,0x190A,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726, + 0x282E,0x292A,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722, + 0x382A,0x392E,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706, + 0x480E,0x490A,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702, + 0x580A,0x590E,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722, + 0x682A,0x692E,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726, + 0x782E,0x792A,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786, + 0x888E,0x898A,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x9086,0x9182,0x9282,0x9386,0x9482,0x9586,0x9686,0x9782, + 0x988A,0x998E,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xA0A7,0xA1A3,0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3, + 0xA8AB,0xA9AF,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xB0A3,0xB1A7,0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7, + 0xB8AF,0xB9AB,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xC087,0xC183,0xC283,0xC387,0xC483,0xC587,0xC687,0xC783, + 0xC88B,0xC98F,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xD083,0xD187,0xD287,0xD383,0xD487,0xD583,0xD683,0xD787, + 0xD88F,0xD98B,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xE0A3,0xE1A7,0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7, + 0xE8AF,0xE9AB,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xF0A7,0xF1A3,0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3, + 0xF8AB,0xF9AF,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703, + 0x080B,0x090F,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707, + 0x180F,0x190B,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727, + 0x282F,0x292B,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723, + 0x382B,0x392F,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xFABE,0xFBBA,0xFCBE,0xFDBA,0xFEBA,0xFFBE,0x0046,0x0102, + 0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x0A1E,0x0B1A,0x0C1E,0x0D1A,0x0E1A,0x0F1E,0x1002,0x1106, + 0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x1A1A,0x1B1E,0x1C1A,0x1D1E,0x1E1E,0x1F1A,0x2022,0x2126, + 0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x2A3A,0x2B3E,0x2C3A,0x2D3E,0x2E3E,0x2F3A,0x3026,0x3122, + 0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x3A3E,0x3B3A,0x3C3E,0x3D3A,0x3E3A,0x3F3E,0x4002,0x4106, + 0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x4A1A,0x4B1E,0x4C1A,0x4D1E,0x4E1E,0x4F1A,0x5006,0x5102, + 0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x5A1E,0x5B1A,0x5C1E,0x5D1A,0x5E1A,0x5F1E,0x6026,0x6122, + 0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x6A3E,0x6B3A,0x6C3E,0x6D3A,0x6E3A,0x6F3E,0x7022,0x7126, + 0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x7A3A,0x7B3E,0x7C3A,0x7D3E,0x7E3E,0x7F3A,0x8082,0x8186, + 0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x8A9A,0x8B9E,0x8C9A,0x8D9E,0x8E9E,0x8F9A,0x9086,0x9182, + 0x9282,0x9386,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0x9A9F,0x9B9B,0x9C9F,0x9D9B,0x9E9B,0x9F9F,0xA0A7,0xA1A3, + 0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xAABF,0xABBB,0xACBF,0xADBB,0xAEBB,0xAFBF,0xB0A3,0xB1A7, + 0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xBABB,0xBBBF,0xBCBB,0xBDBF,0xBEBF,0xBFBB,0xC087,0xC183, + 0xC283,0xC387,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xCA9F,0xCB9B,0xCC9F,0xCD9B,0xCE9B,0xCF9F,0xD083,0xD187, + 0xD287,0xD383,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xDA9B,0xDB9F,0xDC9B,0xDD9F,0xDE9F,0xDF9B,0xE0A3,0xE1A7, + 0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xEABB,0xEBBF,0xECBB,0xEDBF,0xEEBF,0xEFBB,0xF0A7,0xF1A3, + 0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0xFABF,0xFBBB,0xFCBF,0xFDBB,0xFEBB,0xFFBF,0x0047,0x0103, + 0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x0A1F,0x0B1B,0x0C1F,0x0D1B,0x0E1B,0x0F1F,0x1003,0x1107, + 0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x1A1B,0x1B1F,0x1C1B,0x1D1F,0x1E1F,0x1F1B,0x2023,0x2127, + 0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x2A3B,0x2B3F,0x2C3B,0x2D3F,0x2E3F,0x2F3B,0x3027,0x3123, + 0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F +}; diff --git a/MCUME_esp32/espcolem/main/Z80.c b/MCUME_esp32/espcolem/main/Z80.c new file mode 100644 index 0000000..7da58db --- /dev/null +++ b/MCUME_esp32/espcolem/main/Z80.c @@ -0,0 +1,583 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.c **/ +/** **/ +/** This file contains implementation for Z80 CPU. Don't **/ +/** forget to provide RdZ80(), WrZ80(), InZ80(), OutZ80(), **/ +/** LoopZ80(), and PatchZ80() functions to accomodate the **/ +/** emulated machine's architecture. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#include "options.h" +#include "Z80.h" +#include "Tables.h" +//#include +#define printf(...) + +/** INLINE ***************************************************/ +/** Different compilers inline C functions differently. **/ +/*************************************************************/ +#ifdef __GNUC__ +#define INLINE inline +#else +#define INLINE static +#endif + +/** System-Dependent Stuff ***********************************/ +/** This is system-dependent code put here to speed things **/ +/** up. It has to stay inlined to be fast. **/ +/*************************************************************/ +#ifdef COLEM +extern byte *RAM; +INLINE byte RdZ80(word A) { return(RAM[A]); } +#endif +#ifdef MG +extern byte *Page[]; +INLINE byte RdZ80(word A) { return(Page[A>>13][A&0x1FFF]); } +#endif +#ifdef FMSX +extern byte *RAM[],PSL[],SSLReg; +INLINE byte RdZ80(word A) +{ + if(A!=0xFFFF) return(RAM[A>>13][A&0x1FFF]); + else return((PSL[3]==3)? ~SSLReg:RAM[7][0x1FFF]); +} +#endif + +#define S(Fl) R->AF.B.l|=Fl +#define R(Fl) R->AF.B.l&=~(Fl) +#define FLAGS(Rg,Fl) R->AF.B.l=Fl|ZSTable[Rg] + +#define M_RLC(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|R->AF.B.l;R->AF.B.l|=PZSTable[Rg] +#define M_RRC(Rg) \ + R->AF.B.l=Rg&0x01;Rg=(Rg>>1)|(R->AF.B.l<<7);R->AF.B.l|=PZSTable[Rg] +#define M_RL(Rg) \ + if(Rg&0x80) \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]; \ + } +#define M_RR(Rg) \ + if(Rg&0x01) \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]; \ + } + +#define M_SLA(Rg) \ + R->AF.B.l=Rg>>7;Rg<<=1;R->AF.B.l|=PZSTable[Rg] +#define M_SRA(Rg) \ + R->AF.B.l=Rg&C_FLAG;Rg=(Rg>>1)|(Rg&0x80);R->AF.B.l|=PZSTable[Rg] + +#define M_SLL(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|0x01;R->AF.B.l|=PZSTable[Rg] +#define M_SRL(Rg) \ + R->AF.B.l=Rg&0x01;Rg>>=1;R->AF.B.l|=PZSTable[Rg] + +#define M_BIT(Bit,Rg) \ + R->AF.B.l=(R->AF.B.l&~(N_FLAG|Z_FLAG))|H_FLAG|(Rg&(1<Rg.B.l=RdZ80(R->SP.W++);R->Rg.B.h=RdZ80(R->SP.W++) +#define M_PUSH(Rg) \ + WrZ80(--R->SP.W,R->Rg.B.h);WrZ80(--R->SP.W,R->Rg.B.l) + +#define M_CALL \ + J.B.l=RdZ80(R->PC.W++);J.B.h=RdZ80(R->PC.W++); \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l); \ + R->PC.W=J.W + +#define M_JP J.B.l=RdZ80(R->PC.W++);J.B.h=RdZ80(R->PC.W);R->PC.W=J.W +#define M_JR R->PC.W+=(offset)RdZ80(R->PC.W)+1 +#define M_RET R->PC.B.l=RdZ80(R->SP.W++);R->PC.B.h=RdZ80(R->SP.W++) + +#define M_RST(Ad) \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l);R->PC.W=Ad + +#define M_LDWORD(Rg) \ + R->Rg.B.l=RdZ80(R->PC.W++);R->Rg.B.h=RdZ80(R->PC.W++) + +#define M_ADD(Rg) \ + J.W=R->AF.B.h+Rg; \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SUB(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_ADC(Rg) \ + J.W=R->AF.B.h+Rg+(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SBC(Rg) \ + J.W=R->AF.B.h-Rg-(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_CP(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG) + +#define M_AND(Rg) R->AF.B.h&=Rg;R->AF.B.l=H_FLAG|PZSTable[R->AF.B.h] +#define M_OR(Rg) R->AF.B.h|=Rg;R->AF.B.l=PZSTable[R->AF.B.h] +#define M_XOR(Rg) R->AF.B.h^=Rg;R->AF.B.l=PZSTable[R->AF.B.h] +#define M_IN(Rg) Rg=InZ80(R->BC.B.l);R->AF.B.l=PZSTable[Rg]|(R->AF.B.l&C_FLAG) + +#define M_INC(Rg) \ + Rg++; \ + R->AF.B.l= \ + (R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x80? V_FLAG:0)|(Rg&0x0F? 0:H_FLAG) + +#define M_DEC(Rg) \ + Rg--; \ + R->AF.B.l= \ + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x7F? V_FLAG:0)|((Rg&0x0F)==0x0F? H_FLAG:0) + +#define M_ADDW(Rg1,Rg2) \ + J.W=(R->Rg1.W+R->Rg2.W)&0xFFFF; \ + R->AF.B.l= \ + (R->AF.B.l&~(H_FLAG|N_FLAG|C_FLAG))| \ + ((R->Rg1.W^R->Rg2.W^J.W)&0x1000? H_FLAG:0)| \ + (((long)R->Rg1.W+(long)R->Rg2.W)&0x10000? C_FLAG:0); \ + R->Rg1.W=J.W + +#define M_ADCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W+R->Rg.W+I)&0xFFFF; \ + R->AF.B.l= \ + (((long)R->HL.W+(long)R->Rg.W+(long)I)&0x10000? C_FLAG:0)| \ + (~(R->HL.W^R->Rg.W)&(R->Rg.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +#define M_SBCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W-R->Rg.W-I)&0xFFFF; \ + R->AF.B.l= \ + N_FLAG| \ + (((long)R->HL.W-(long)R->Rg.W-(long)I)&0x10000? C_FLAG:0)| \ + ((R->HL.W^R->Rg.W)&(R->HL.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +enum Codes +{ + NOP,LD_BC_WORD,LD_xBC_A,INC_BC,INC_B,DEC_B,LD_B_BYTE,RLCA, + EX_AF_AF,ADD_HL_BC,LD_A_xBC,DEC_BC,INC_C,DEC_C,LD_C_BYTE,RRCA, + DJNZ,LD_DE_WORD,LD_xDE_A,INC_DE,INC_D,DEC_D,LD_D_BYTE,RLA, + JR,ADD_HL_DE,LD_A_xDE,DEC_DE,INC_E,DEC_E,LD_E_BYTE,RRA, + JR_NZ,LD_HL_WORD,LD_xWORD_HL,INC_HL,INC_H,DEC_H,LD_H_BYTE,DAA, + JR_Z,ADD_HL_HL,LD_HL_xWORD,DEC_HL,INC_L,DEC_L,LD_L_BYTE,CPL, + JR_NC,LD_SP_WORD,LD_xWORD_A,INC_SP,INC_xHL,DEC_xHL,LD_xHL_BYTE,SCF, + JR_C,ADD_HL_SP,LD_A_xWORD,DEC_SP,INC_A,DEC_A,LD_A_BYTE,CCF, + LD_B_B,LD_B_C,LD_B_D,LD_B_E,LD_B_H,LD_B_L,LD_B_xHL,LD_B_A, + LD_C_B,LD_C_C,LD_C_D,LD_C_E,LD_C_H,LD_C_L,LD_C_xHL,LD_C_A, + LD_D_B,LD_D_C,LD_D_D,LD_D_E,LD_D_H,LD_D_L,LD_D_xHL,LD_D_A, + LD_E_B,LD_E_C,LD_E_D,LD_E_E,LD_E_H,LD_E_L,LD_E_xHL,LD_E_A, + LD_H_B,LD_H_C,LD_H_D,LD_H_E,LD_H_H,LD_H_L,LD_H_xHL,LD_H_A, + LD_L_B,LD_L_C,LD_L_D,LD_L_E,LD_L_H,LD_L_L,LD_L_xHL,LD_L_A, + LD_xHL_B,LD_xHL_C,LD_xHL_D,LD_xHL_E,LD_xHL_H,LD_xHL_L,HALT,LD_xHL_A, + LD_A_B,LD_A_C,LD_A_D,LD_A_E,LD_A_H,LD_A_L,LD_A_xHL,LD_A_A, + ADD_B,ADD_C,ADD_D,ADD_E,ADD_H,ADD_L,ADD_xHL,ADD_A, + ADC_B,ADC_C,ADC_D,ADC_E,ADC_H,ADC_L,ADC_xHL,ADC_A, + SUB_B,SUB_C,SUB_D,SUB_E,SUB_H,SUB_L,SUB_xHL,SUB_A, + SBC_B,SBC_C,SBC_D,SBC_E,SBC_H,SBC_L,SBC_xHL,SBC_A, + AND_B,AND_C,AND_D,AND_E,AND_H,AND_L,AND_xHL,AND_A, + XOR_B,XOR_C,XOR_D,XOR_E,XOR_H,XOR_L,XOR_xHL,XOR_A, + OR_B,OR_C,OR_D,OR_E,OR_H,OR_L,OR_xHL,OR_A, + CP_B,CP_C,CP_D,CP_E,CP_H,CP_L,CP_xHL,CP_A, + RET_NZ,POP_BC,JP_NZ,JP,CALL_NZ,PUSH_BC,ADD_BYTE,RST00, + RET_Z,RET,JP_Z,PFX_CB,CALL_Z,CALL,ADC_BYTE,RST08, + RET_NC,POP_DE,JP_NC,OUTA,CALL_NC,PUSH_DE,SUB_BYTE,RST10, + RET_C,EXX,JP_C,INA,CALL_C,PFX_DD,SBC_BYTE,RST18, + RET_PO,POP_HL,JP_PO,EX_HL_xSP,CALL_PO,PUSH_HL,AND_BYTE,RST20, + RET_PE,LD_PC_HL,JP_PE,EX_DE_HL,CALL_PE,PFX_ED,XOR_BYTE,RST28, + RET_P,POP_AF,JP_P,DI,CALL_P,PUSH_AF,OR_BYTE,RST30, + RET_M,LD_SP_HL,JP_M,EI,CALL_M,PFX_FD,CP_BYTE,RST38 +}; + +enum CodesCB +{ + RLC_B,RLC_C,RLC_D,RLC_E,RLC_H,RLC_L,RLC_xHL,RLC_A, + RRC_B,RRC_C,RRC_D,RRC_E,RRC_H,RRC_L,RRC_xHL,RRC_A, + RL_B,RL_C,RL_D,RL_E,RL_H,RL_L,RL_xHL,RL_A, + RR_B,RR_C,RR_D,RR_E,RR_H,RR_L,RR_xHL,RR_A, + SLA_B,SLA_C,SLA_D,SLA_E,SLA_H,SLA_L,SLA_xHL,SLA_A, + SRA_B,SRA_C,SRA_D,SRA_E,SRA_H,SRA_L,SRA_xHL,SRA_A, + SLL_B,SLL_C,SLL_D,SLL_E,SLL_H,SLL_L,SLL_xHL,SLL_A, + SRL_B,SRL_C,SRL_D,SRL_E,SRL_H,SRL_L,SRL_xHL,SRL_A, + BIT0_B,BIT0_C,BIT0_D,BIT0_E,BIT0_H,BIT0_L,BIT0_xHL,BIT0_A, + BIT1_B,BIT1_C,BIT1_D,BIT1_E,BIT1_H,BIT1_L,BIT1_xHL,BIT1_A, + BIT2_B,BIT2_C,BIT2_D,BIT2_E,BIT2_H,BIT2_L,BIT2_xHL,BIT2_A, + BIT3_B,BIT3_C,BIT3_D,BIT3_E,BIT3_H,BIT3_L,BIT3_xHL,BIT3_A, + BIT4_B,BIT4_C,BIT4_D,BIT4_E,BIT4_H,BIT4_L,BIT4_xHL,BIT4_A, + BIT5_B,BIT5_C,BIT5_D,BIT5_E,BIT5_H,BIT5_L,BIT5_xHL,BIT5_A, + BIT6_B,BIT6_C,BIT6_D,BIT6_E,BIT6_H,BIT6_L,BIT6_xHL,BIT6_A, + BIT7_B,BIT7_C,BIT7_D,BIT7_E,BIT7_H,BIT7_L,BIT7_xHL,BIT7_A, + RES0_B,RES0_C,RES0_D,RES0_E,RES0_H,RES0_L,RES0_xHL,RES0_A, + RES1_B,RES1_C,RES1_D,RES1_E,RES1_H,RES1_L,RES1_xHL,RES1_A, + RES2_B,RES2_C,RES2_D,RES2_E,RES2_H,RES2_L,RES2_xHL,RES2_A, + RES3_B,RES3_C,RES3_D,RES3_E,RES3_H,RES3_L,RES3_xHL,RES3_A, + RES4_B,RES4_C,RES4_D,RES4_E,RES4_H,RES4_L,RES4_xHL,RES4_A, + RES5_B,RES5_C,RES5_D,RES5_E,RES5_H,RES5_L,RES5_xHL,RES5_A, + RES6_B,RES6_C,RES6_D,RES6_E,RES6_H,RES6_L,RES6_xHL,RES6_A, + RES7_B,RES7_C,RES7_D,RES7_E,RES7_H,RES7_L,RES7_xHL,RES7_A, + SET0_B,SET0_C,SET0_D,SET0_E,SET0_H,SET0_L,SET0_xHL,SET0_A, + SET1_B,SET1_C,SET1_D,SET1_E,SET1_H,SET1_L,SET1_xHL,SET1_A, + SET2_B,SET2_C,SET2_D,SET2_E,SET2_H,SET2_L,SET2_xHL,SET2_A, + SET3_B,SET3_C,SET3_D,SET3_E,SET3_H,SET3_L,SET3_xHL,SET3_A, + SET4_B,SET4_C,SET4_D,SET4_E,SET4_H,SET4_L,SET4_xHL,SET4_A, + SET5_B,SET5_C,SET5_D,SET5_E,SET5_H,SET5_L,SET5_xHL,SET5_A, + SET6_B,SET6_C,SET6_D,SET6_E,SET6_H,SET6_L,SET6_xHL,SET6_A, + SET7_B,SET7_C,SET7_D,SET7_E,SET7_H,SET7_L,SET7_xHL,SET7_A +}; + +enum CodesED +{ + DB_00,DB_01,DB_02,DB_03,DB_04,DB_05,DB_06,DB_07, + DB_08,DB_09,DB_0A,DB_0B,DB_0C,DB_0D,DB_0E,DB_0F, + DB_10,DB_11,DB_12,DB_13,DB_14,DB_15,DB_16,DB_17, + DB_18,DB_19,DB_1A,DB_1B,DB_1C,DB_1D,DB_1E,DB_1F, + DB_20,DB_21,DB_22,DB_23,DB_24,DB_25,DB_26,DB_27, + DB_28,DB_29,DB_2A,DB_2B,DB_2C,DB_2D,DB_2E,DB_2F, + DB_30,DB_31,DB_32,DB_33,DB_34,DB_35,DB_36,DB_37, + DB_38,DB_39,DB_3A,DB_3B,DB_3C,DB_3D,DB_3E,DB_3F, + IN_B_xC,OUT_xC_B,SBC_HL_BC,LD_xWORDe_BC,NEG,RETN,IM_0,LD_I_A, + IN_C_xC,OUT_xC_C,ADC_HL_BC,LD_BC_xWORDe,DB_4C,RETI,DB_,LD_R_A, + IN_D_xC,OUT_xC_D,SBC_HL_DE,LD_xWORDe_DE,DB_54,DB_55,IM_1,LD_A_I, + IN_E_xC,OUT_xC_E,ADC_HL_DE,LD_DE_xWORDe,DB_5C,DB_5D,IM_2,LD_A_R, + IN_H_xC,OUT_xC_H,SBC_HL_HL,LD_xWORDe_HL,DB_64,DB_65,DB_66,RRD, + IN_L_xC,OUT_xC_L,ADC_HL_HL,LD_HL_xWORDe,DB_6C,DB_6D,DB_6E,RLD, + IN_F_xC,DB_71,SBC_HL_SP,LD_xWORDe_SP,DB_74,DB_75,DB_76,DB_77, + IN_A_xC,OUT_xC_A,ADC_HL_SP,LD_SP_xWORDe,DB_7C,DB_7D,DB_7E,DB_7F, + DB_80,DB_81,DB_82,DB_83,DB_84,DB_85,DB_86,DB_87, + DB_88,DB_89,DB_8A,DB_8B,DB_8C,DB_8D,DB_8E,DB_8F, + DB_90,DB_91,DB_92,DB_93,DB_94,DB_95,DB_96,DB_97, + DB_98,DB_99,DB_9A,DB_9B,DB_9C,DB_9D,DB_9E,DB_9F, + LDI,CPI,INI,OUTI,DB_A4,DB_A5,DB_A6,DB_A7, + LDD,CPD,IND,OUTD,DB_AC,DB_AD,DB_AE,DB_AF, + LDIR,CPIR,INIR,OTIR,DB_B4,DB_B5,DB_B6,DB_B7, + LDDR,CPDR,INDR,OTDR,DB_BC,DB_BD,DB_BE,DB_BF, + DB_C0,DB_C1,DB_C2,DB_C3,DB_C4,DB_C5,DB_C6,DB_C7, + DB_C8,DB_C9,DB_CA,DB_CB,DB_CC,DB_CD,DB_CE,DB_CF, + DB_D0,DB_D1,DB_D2,DB_D3,DB_D4,DB_D5,DB_D6,DB_D7, + DB_D8,DB_D9,DB_DA,DB_DB,DB_DC,DB_DD,DB_DE,DB_DF, + DB_E0,DB_E1,DB_E2,DB_E3,DB_E4,DB_E5,DB_E6,DB_E7, + DB_E8,DB_E9,DB_EA,DB_EB,DB_EC,DB_ED,DB_EE,DB_EF, + DB_F0,DB_F1,DB_F2,DB_F3,DB_F4,DB_F5,DB_F6,DB_F7, + DB_F8,DB_F9,DB_FA,DB_FB,DB_FC,DB_FD,DB_FE,DB_FF +}; + +static void CodesCB(register Z80 *R) +{ + register byte I; + + I=RdZ80(R->PC.W++); + R->ICount-=CyclesCB[I]; + switch(I) + { +#include "CodesCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: CB %02X at PC=%04X\n", + (long)(R->User),RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IX + J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD CB %02X %02X at PC=%04X\n", + (long)(R->User),RdZ80(R->PC.W-2),RdZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesFDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IY + J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: FD CB %02X %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-2),RdZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesED(register Z80 *R) +{ + register byte I; + register pair J; + + I=RdZ80(R->PC.W++); + R->ICount-=CyclesED[I]; + switch(I) + { +#include "CodesED.h" + case PFX_ED: + R->PC.W--;break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: ED %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IX + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesDDCB(R);break; + case HALT: + R->PC.W--;R->IFF|=0x80;R->ICount=0;break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +static void CodesFD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IY + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesFDCB(R);break; + case HALT: + R->PC.W--;R->IFF|=0x80;R->ICount=0;break; + default: + printf + ( + "Unrecognized instruction: FD %02X at PC=%04X\n", + RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the register struct **/ +/** before starting execution with Z80(). It sets the **/ +/** registers to their supposed initial values. **/ +/*************************************************************/ +void ResetZ80(Z80 *R) +{ + R->PC.W=0x0000;R->SP.W=0xF000; + R->AF.W=R->BC.W=R->DE.W=R->HL.W=0x0000; + R->AF1.W=R->BC1.W=R->DE1.W=R->HL1.W=0x0000; + R->IX.W=R->IY.W=0x0000; + R->I=0x00;R->IFF=0x00; + R->ICount=R->IPeriod; + R->IRequest=INT_NONE; +} + +/** ExecZ80() ************************************************/ +/** This function will execute a single Z80 opcode. It will **/ +/** then return next PC, and current register values in R. **/ +/*************************************************************/ +word ExecZ80(Z80 *R) +{ + register byte I; + register pair J; + + I=RdZ80(R->PC.W++); + R->ICount-=Cycles[I]; + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + + /* We are done */ + return(R->PC.W); +} + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(Z80 *R,word Vector) +{ + if((R->IFF&0x01)||(Vector==INT_NMI)) + { + /* Experimental V Shouldn't disable all interrupts? */ + R->IFF=(R->IFF&0x9E)|((R->IFF&0x01)<<6); + if(R->IFF&0x80) { R->PC.W++;R->IFF&=0x7F; } + M_PUSH(PC); + + /* Automatically reset IRequest if needed */ + if(R->IAutoReset&&(Vector==R->IRequest)) R->IRequest=INT_NONE; + + if(Vector==INT_NMI) R->PC.W=INT_NMI; + else + if(R->IFF&0x04) + { + Vector=(Vector&0xFF)|((word)(R->I)<<8); + R->PC.B.l=RdZ80(Vector++); + R->PC.B.h=RdZ80(Vector); + } + else + if(R->IFF&0x02) R->PC.W=INT_IRQ; + else R->PC.W=Vector; + } +} + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +static byte I; +static pair J; + +word RunZ80(Z80 *R) +{ +// register byte I; +// register pair J; + int ras=0; + + for(;;) + { +//#ifdef DEBUG +// /* Turn tracing on when reached trap address */ +// if(R->PC.W==R->Trap) R->Trace=1; +// /* Call single-step debugger, exit if requested */ +// if(R->Trace) +// if(!DebugZ80(R)) return(R->PC.W); +//#endif + + I=RdZ80(R->PC.W++); + R->ICount-=Cycles[I]; + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + + /* If cycle counter expired... */ + if(R->ICount<=0) + { + /* If we have come after EI, get address from IRequest */ + /* Otherwise, get it from the loop handler */ + if(R->IFF&0x20) + { + J.W=R->IRequest; /* Get pending interrupt */ + R->ICount+=R->IBackup-1; /* Restore the ICount */ + R->IFF&=0xDF; /* Done with AfterEI state */ + } + else + { + J.W=LoopZ80(R, &ras); /* Call periodic handler */ + R->ICount=R->IPeriod; /* Reset the cycle counter */ + if(J.W==INT_NONE) I=R->IRequest; /* Pending int-rupt */ + } + + if(J.W==INT_QUIT) return(R->PC.W); /* Exit if INT_QUIT */ + if(J.W!=INT_NONE) IntZ80(R,J.W); /* Int-pt if needed */ + } + if (ras == 1) break; + } + + /* Execution stopped */ + return(R->PC.W); +} diff --git a/MCUME_esp32/espcolem/main/Z80.h b/MCUME_esp32/espcolem/main/Z80.h new file mode 100644 index 0000000..2f222e4 --- /dev/null +++ b/MCUME_esp32/espcolem/main/Z80.h @@ -0,0 +1,141 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.h **/ +/** **/ +/** This file contains declarations relevant to emulation **/ +/** of Z80 CPU. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef Z80_H +#define Z80_H + + /* Compilation options: */ +/* #define DEBUG */ /* Compile debugging version */ +/* #define LSB_FIRST */ /* Compile for low-endian CPU */ +/* #define MSB_FIRST */ /* Compile for hi-endian CPU */ + + /* LoopZ80() may return: */ +#define INT_IRQ 0x0038 /* Standard RST 38h interrupt */ +#define INT_NMI 0x0066 /* Non-maskable interrupt */ +#define INT_NONE 0xFFFF /* No interrupt required */ +#define INT_QUIT 0xFFFE /* Exit the emulation */ + + /* Bits in Z80 F register: */ +#define S_FLAG 0x80 /* 1: Result negative */ +#define Z_FLAG 0x40 /* 1: Result is zero */ +#define H_FLAG 0x10 /* 1: Halfcarry/Halfborrow */ +#define P_FLAG 0x04 /* 1: Result is even */ +#define V_FLAG 0x04 /* 1: Overflow occured */ +#define N_FLAG 0x02 /* 1: Subtraction occured */ +#define C_FLAG 0x01 /* 1: Carry/Borrow occured */ + +/** Simple Datatypes *****************************************/ +/** NOTICE: sizeof(byte)=1 and sizeof(word)=2 **/ +/*************************************************************/ +typedef unsigned char byte; +typedef unsigned short word; +typedef signed char offset; + +/** Structured Datatypes *************************************/ +/** NOTICE: #define LSB_FIRST for machines where least **/ +/** signifcant byte goes first. **/ +/*************************************************************/ +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h; } B; +#else + struct { byte h,l; } B; +#endif + word W; +} pair; + +typedef struct +{ + pair AF,BC,DE,HL,IX,IY,PC,SP; /* Main registers */ + pair AF1,BC1,DE1,HL1; /* Shadow registers */ + byte IFF,I; /* Interrupt registers */ + byte R; /* Refresh register */ + + int IPeriod,ICount; /* Set IPeriod to number of CPU cycles */ + /* between calls to LoopZ80() */ + int IBackup; /* Private, don't touch */ + word IRequest; /* Set to address of pending IRQ */ + byte IAutoReset; /* Set to 1 to autom. reset IRequest */ + byte TrapBadOps; /* Set to 1 to warn of illegal opcodes */ + word Trap; /* Set Trap to address to trace from */ + byte Trace; /* Set Trace=1 to start tracing */ + void *User; /* Arbitrary user data (ID,RAM*,etc.) */ +} Z80; + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the registers before **/ +/** starting execution with RunZ80(). It sets registers to **/ +/** their initial values. **/ +/*************************************************************/ +void ResetZ80(register Z80 *R); + +/** ExecZ80() ************************************************/ +/** This function will execute a single Z80 opcode. It will **/ +/** then return next PC, and current register values in R. **/ +/*************************************************************/ +word ExecZ80(register Z80 *R); + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(register Z80 *R,register word Vector); + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +word RunZ80(register Z80 *R); + +/** RdZ80()/WrZ80() ******************************************/ +/** These functions are called when access to RAM occurs. **/ +/** They allow to control memory access. **/ +/************************************ TO BE WRITTEN BY USER **/ +void WrZ80(register word Addr,register byte Value); +byte RdZ80(register word Addr); + +/** InZ80()/OutZ80() *****************************************/ +/** Z80 emulation calls these functions to read/write from **/ +/** I/O ports. There can be 65536 I/O ports, but only first **/ +/** 256 are usually used **/ +/************************************ TO BE WRITTEN BY USER **/ +void OutZ80(register word Port,register byte Value); +byte InZ80(register word Port); + +/** PatchZ80() ***********************************************/ +/** Z80 emulation calls this function when it encounters a **/ +/** special patch command (ED FE) provided for user needs. **/ +/** For example, it can be called to emulate BIOS calls, **/ +/** such as disk and tape access. Replace it with an empty **/ +/** macro for no patching. **/ +/************************************ TO BE WRITTEN BY USER **/ +void PatchZ80(register Z80 *R); + +/** DebugZ80() ***********************************************/ +/** This function should exist if DEBUG is #defined. When **/ +/** Trace!=0, it is called after each command executed by **/ +/** the CPU, and given the Z80 registers. Emulation exits **/ +/** if DebugZ80() returns 0. **/ +/*************************************************************/ +byte DebugZ80(register Z80 *R); + +/** LoopZ80() ************************************************/ +/** Z80 emulation calls this function periodically to check **/ +/** if the system hardware requires any interrupts. This **/ +/** function must return an address of the interrupt vector **/ +/** (0x0038, 0x0066, etc.) or INT_NONE for no interrupt. **/ +/** Return INT_QUIT to exit the emulation loop. **/ +/************************************ TO BE WRITTEN BY USER **/ +word LoopZ80(register Z80 *R, int * ras); + +#endif /* Z80_H */ diff --git a/MCUME_esp32/espcolem/main/bmpjoy.h b/MCUME_esp32/espcolem/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espcolem/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espcolem/main/bmpvbar.h b/MCUME_esp32/espcolem/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espcolem/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espcolem/main/component.mk b/MCUME_esp32/espcolem/main/component.mk new file mode 100644 index 0000000..6d6cf84 --- /dev/null +++ b/MCUME_esp32/espcolem/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espcolem/main/emuapi.cpp b/MCUME_esp32/espcolem/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/espcolem/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " Coleco Emulator " +#define ROMSDIR "coleco" + +#define emu_Init(ROM) {coc_Init();coc_Start(ROM);} +#define emu_Step() {coc_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 16 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 128 +#define KEYBOARD_Y 84 +#define KEYBOARD_KEY_H 21 +#define KEYBOARD_KEY_W 21 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,20,20,20, + TAREA_NEW_ROW,20,20,20, + TAREA_NEW_ROW,20,20,20, + TAREA_NEW_ROW,20,20,20, + TAREA_END}; + +const unsigned short keys[] = { + 2,3,4, + 5,6,7, + 8,9,10, + 11,1,12}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180, + 0X0108,0X0280,0X0208, + 0X0380,0X0308,0X0480, + 0X0040,0X0408,0X0004}; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + diff --git a/MCUME_esp32/espcolem/main/font8x8.h b/MCUME_esp32/espcolem/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espcolem/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espcolem/main/go.cpp b/MCUME_esp32/espcolem/main/go.cpp new file mode 100644 index 0000000..fcd6258 --- /dev/null +++ b/MCUME_esp32/espcolem/main/go.cpp @@ -0,0 +1,102 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "colem.h" +} + + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/espcolem/main/go.h b/MCUME_esp32/espcolem/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espcolem/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espcolem/main/ili9341_t3dma.cpp b/MCUME_esp32/espcolem/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espcolem/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espcolem/main/ili9341_t3dma.h b/MCUME_esp32/espcolem/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espcolem/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espcolem/main/iopins.h b/MCUME_esp32/espcolem/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espcolem/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espcolem/main/keyboard_osd.h b/MCUME_esp32/espcolem/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espcolem/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espcolem/main/logo.h b/MCUME_esp32/espcolem/main/logo.h new file mode 100644 index 0000000..1ad9f31 --- /dev/null +++ b/MCUME_esp32/espcolem/main/logo.h @@ -0,0 +1,201 @@ +const uint16_t logo[] = { +0x0140,0x00c8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x94b2,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa513,0x94b2,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x0000,0x4a49,0x39e7,0x39c6,0x31a6,0x31c6,0x31a7,0x31a7,0x31a6,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x39c7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c6,0x39c7,0x39c7,0x39c7,0x39c7,0x39c6,0x39c6,0x39c6,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c6,0x39c7,0x4207,0x4a49,0x10a2,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2944,0x2965,0x2965,0x2965,0x2945,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2965,0x2965,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2945,0x2124,0x2124,0x2124,0x2103,0x0861,0x0020,0x0840,0x0861,0x0861,0x18a2,0x2103,0x2103,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2965,0x3186,0x2945,0x2104,0x2945,0x18e3,0x0000,0x0000,0x1081,0x39e7,0x4a48,0x4228,0x4228,0x4228,0x39c7,0x18e3,0x1081,0x10a2,0x2103,0x2104,0x2103,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4207,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2965,0x2104,0x2124,0x2124,0x0000,0x18c3,0x632c,0x8c71,0x9cf3,0xb5b6,0xbdf7,0xbdd7,0xb596,0xad75,0x9cd3,0x8410,0x6b6d,0x4a69,0x2945,0x10a2,0x2124,0x2104,0x18e3,0x2945,0x2965,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2945,0x18e3,0x2945,0x0000,0x0000,0x8410,0xbdd7,0xd6ba,0xdefb,0xdedb,0xce79,0xce59,0xc618,0xbdd7,0xb596,0xad75,0xad75,0xa534,0x94b2,0x7bef,0x5acb,0x2944,0x2103,0x2124,0x18e3,0x2124,0x2965,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2944,0x2104,0x2944,0x0000,0x632c,0xc618,0xe73c,0xef5d,0xdefb,0xd6ba,0xce79,0xce59,0xc638,0xbdf7,0xb5b6,0xad75,0xad55,0xa514,0x9cd3,0x9cd3,0x9cd3,0x8c72,0x73ae,0x4228,0x2103,0x2124,0x18e3,0x2104,0x2965,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3185,0x2944,0x2103,0x2124,0x0000,0x9491,0xe71c,0xef7d,0xe73c,0xdefb,0xdefb,0xdedb,0xd69a,0xce79,0xc638,0xbdf7,0xb5b6,0xad75,0xad55,0xa514,0x9cd3,0x9492,0x8c71,0x8c71,0x8c71,0x8410,0x52aa,0x2124,0x2944,0x18e3,0x2104,0x2945,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2103,0x2124,0x0000,0xa534,0xef7d,0xef7d,0xe73c,0xe73c,0xe71c,0xdefb,0xdedb,0xd6ba,0xce79,0xc638,0xbdf7,0xb5b6,0xad75,0xa534,0x9cf3,0x9cd3,0x9492,0x8c71,0x8430,0x8410,0x8410,0x8410,0x5aeb,0x2124,0x2944,0x18e3,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b76,0x7417,0x5b76,0x7417,0xb5fa,0xdf1d,0xce7b,0xe75d,0xe75d,0xe75d,0xe73d,0xe73c,0xdf1c,0xdf1c,0xdf1c,0xdefc,0xdefb,0xdefb,0xdefc,0xdefb,0xdefb,0xdedb,0xd6db,0xd6db,0xd6bb,0xd6bb,0xd6ba,0xd69a,0xd69a,0xd69a,0xce9a,0xce79,0xce79,0xc679,0xc659,0xc659,0xc659,0xc659,0xc639,0xbe18,0xbdf7,0xb5d7,0xbdd8,0xb5f7,0xb5d7,0xb5d7,0xb5d7,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6db,0xb5b6,0xad96,0xad96,0xad96,0xad75,0xa555,0xad76,0xad75,0xa575,0xad55,0xa555,0xa555,0xa555,0xad75,0xad75,0xa555,0xad75,0xad76,0xad76,0xad76,0xad75,0xad76,0xad75,0xad75,0xa555,0xa555,0xa575,0xa575,0xa575,0xad75,0xad75,0xad76,0xad96,0xad96,0xadb6,0xadb6,0xb596,0xb5b6,0xb5b7,0xb5b7,0xb5b7,0xb5b7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf8,0xbdf8,0xbdf8,0xbdf8,0xbdf8,0xc618,0xc618,0xc5f8,0xc618,0xc618,0xc618,0xc618,0xc639,0xc618,0xc639,0xc639,0xc639,0xc639,0xc639,0xc639,0xc659,0xc639,0xc639,0xce59,0xce59,0xc639,0xc659,0xce79,0xd6ba,0x8c50,0x0861,0x39e7,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2945,0x2965,0x18e3,0x2945,0x0000,0xa514,0xf79e,0xef7d,0xe73c,0xef5d,0xe73c,0xe73c,0xe71c,0xdefb,0xd6ba,0xd69a,0xc638,0xbdf7,0xb5b6,0xad75,0xa534,0x9cf3,0x94b2,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x8410,0x5acb,0x2104,0x2944,0x18e3,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x2965,0x9cf4,0xc5f8,0xb5b7,0xbdd7,0xb5b7,0xb5b6,0xb5b6,0xb596,0xb596,0xad76,0xb596,0xad96,0xad75,0xad75,0xa555,0xa555,0xa535,0xa535,0xa535,0xa514,0xa534,0xa535,0xa535,0xa514,0x9d14,0xa514,0xa534,0xad55,0xad96,0xb596,0xad76,0xad55,0xa555,0x9d34,0x9cf4,0x94d3,0x8cb2,0x8c92,0x8c72,0x8c72,0x8c71,0x8c71,0x8471,0x8c71,0x8c71,0x8451,0x8451,0x8451,0x8451,0x7c30,0x8451,0x8451,0x8430,0x8430,0x8430,0x8430,0x7c30,0x7c30,0x7c30,0x7c30,0x7c10,0x7bf0,0x7bf0,0x7bf0,0x7c10,0x7c10,0x7bf0,0x7c10,0x7bef,0x7c10,0x7bf0,0x7bef,0x7bef,0x7bf0,0x73ef,0x7bf0,0x7bcf,0x73af,0x7bcf,0x7bcf,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73af,0x6b8e,0x6b8e,0x6bae,0x73cf,0x73ef,0x73af,0x73ae,0x73cf,0x73cf,0x73cf,0x6b4e,0xa535,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x73cf,0x6b8e,0x6bae,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x73af,0x6bae,0x6b8e,0x73af,0x6b8e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6bae,0x6b8e,0x6b8e,0x6bae,0x6bae,0x73cf,0x73ae,0x6bae,0x6bae,0x6b8e,0x73af,0x6baf,0x73af,0x6bae,0x6baf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73af,0x738e,0x738e,0x738e,0x73ae,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73af,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x73af,0x73af,0x738e,0x6b8e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73cf,0x52ca,0x39c6,0x39c6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2104,0x2945,0x0000,0x8c71,0xef7d,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdefb,0xdedb,0xd69a,0xce59,0xc618,0xb5b6,0xad75,0xa514,0x9cd3,0x9492,0x8c71,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bef,0x8410,0x528a,0x2103,0x2124,0x2103,0x2945,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x630c,0x6b8e,0x6b6d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b6d,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x6b6e,0x738e,0x6b6e,0x738e,0x738e,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b4e,0x73ae,0x73ae,0x6bae,0x6b8e,0x6b8e,0x73af,0x6b8e,0x6b8e,0x73ae,0x6bae,0x6bae,0x6baf,0x73af,0x73cf,0x73af,0x73af,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73af,0x73ae,0x73af,0x73af,0x73ae,0x73ae,0x738e,0x6bae,0x73ae,0x738e,0x6b8e,0x73af,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x6b6d,0x6b6e,0x6b8e,0x6b8e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b6d,0x6b4d,0x6b4d,0x6b6e,0x6b4e,0x6b4d,0x6b6e,0x6b6e,0x632d,0x5b0c,0x634d,0x6b8e,0x6b8e,0x73ae,0x7c2f,0x8450,0x8430,0x8450,0x8451,0x8410,0x7bf0,0xd6bb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x8c92,0x7bef,0x8410,0x8410,0x7bef,0x7bef,0x73af,0x6b6e,0x6b4d,0x5b0c,0x5aec,0x5aec,0x5aeb,0x5aec,0x5b0c,0x5b0c,0x630c,0x632c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x632c,0x632c,0x632c,0x632c,0x634d,0x632d,0x632c,0x634d,0x632d,0x632d,0x632d,0x632d,0x632c,0x632c,0x632d,0x632d,0x632c,0x634d,0x634d,0x634d,0x632c,0x634d,0x632d,0x632c,0x632d,0x632c,0x632d,0x632d,0x632c,0x632c,0x634d,0x634d,0x632d,0x634d,0x634d,0x634d,0x634d,0x634d,0x634d,0x636d,0x6b6d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8e,0x52aa,0x39c7,0x39c6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2965,0x2945,0x2124,0x0000,0x630c,0xdefb,0xef7d,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdedb,0xd6ba,0xce59,0xc618,0xb5b6,0xad55,0xa514,0x94d3,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8430,0x7bcf,0x39c7,0x2124,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x5b0c,0x6b8d,0x6b6e,0x634d,0x6b6d,0x6b6e,0x632d,0x6b4d,0x6b6d,0x634d,0x632d,0x6b4d,0x632d,0x632c,0x632c,0x630c,0x630c,0x634c,0x5b0b,0x5aec,0x630d,0x632d,0x630c,0x5acb,0x630c,0x632d,0x630c,0x5aec,0x5b0c,0x5b2d,0x630c,0x5aeb,0x5aeb,0x632d,0x632d,0x5aeb,0x52cb,0x5b2d,0x5b0d,0x5aeb,0x52cb,0x52cb,0x5b2d,0x5b0c,0x52aa,0x52cb,0x5b0c,0x632c,0x5aeb,0x52ab,0x5b0d,0x5b0c,0x5acc,0x52ab,0x52cc,0x5b2c,0x5b0c,0x5aec,0x52ab,0x5b0c,0x5b0c,0x528a,0x52ab,0x5aec,0x5b0c,0x5aec,0x52ec,0x4aab,0x52cc,0x5aec,0x5acc,0x4a8b,0x52ac,0x5acc,0x5acb,0x52aa,0x528b,0x528b,0x52ab,0x52ab,0x52aa,0x5aeb,0x5acb,0x52ab,0x52cb,0x4249,0x31a6,0x4a8a,0x5aec,0x4a6a,0x2946,0x4a48,0x73ae,0x8430,0x8410,0x7c0f,0x7c10,0x8430,0x7bef,0xad95,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbe38,0x7bef,0x7bef,0x73ce,0x73ce,0x73ae,0x7bcf,0x6b4d,0x4208,0x3a08,0x2966,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0041,0x0021,0x0000,0x0041,0x0001,0x0062,0x0021,0x0000,0x0062,0x0062,0x0062,0x0062,0x08a2,0x10c3,0x10c3,0x1904,0x10e3,0x1904,0x1904,0x1925,0x2145,0x1925,0x10e4,0x10e4,0x1925,0x1925,0x10e4,0x1904,0x1924,0x1904,0x1904,0x2124,0x2104,0x2125,0x2965,0x2945,0x3186,0x31a7,0x3186,0x2986,0x3186,0x31a6,0x31c7,0x29a6,0x2986,0x2986,0x31a6,0x29a6,0x3a07,0x39e7,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2965,0x2124,0x2104,0x0861,0xb5b6,0xef7d,0xe71c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xdefb,0xd6ba,0xce59,0xc618,0xb5b6,0xad55,0x9cf3,0x94b2,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8430,0x8c71,0x632c,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x4a8a,0x52ab,0x52cb,0x52cb,0x5aeb,0x52ab,0x52cb,0x5acb,0x52cb,0x52aa,0x52ab,0x52cb,0x52ab,0x52ab,0x52ab,0x528a,0x4a4a,0x4a69,0x52ca,0x52ab,0x4a4a,0x528a,0x5acb,0x5acb,0x4a6a,0x4a8a,0x52cb,0x630c,0x52cb,0x4a6a,0x52aa,0x630c,0x5b0c,0x4a8a,0x4a8a,0x5aeb,0x632d,0x4a8b,0x4a6a,0x5aeb,0x6b6d,0x5b0d,0x4229,0x4a8a,0x6b4d,0x6b6e,0x52ab,0x528a,0x634c,0x6b8e,0x52ab,0x3a08,0x5aeb,0x73cf,0x5b2d,0x4228,0x4a8a,0x73af,0x738f,0x426a,0x4249,0x6b6d,0x7bf0,0x52ab,0x31e8,0x5b0c,0x7c10,0x636e,0x31e8,0x4a49,0x73ae,0x7c10,0x4229,0x2986,0x6b4d,0x8410,0x5acb,0x2966,0x528a,0x73cf,0x73ae,0x39e7,0x41e8,0x73ae,0x7c30,0x3a08,0x0000,0x632d,0x8c72,0x5acb,0x4228,0x7c10,0x7bcf,0x7bef,0x8410,0x8410,0x8410,0x8430,0x8430,0x8471,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8cb8,0x9d14,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6e,0x634d,0x4208,0x31a7,0x39c7,0x3186,0x31a7,0x2966,0x2945,0x2986,0x2966,0x2986,0x3186,0x2125,0x2945,0x31a7,0x2945,0x2966,0x2945,0x2945,0x2986,0x3186,0x3186,0x3186,0x3186,0x2965,0x2965,0x2965,0x2986,0x2966,0x2966,0x2145,0x2966,0x2965,0x2124,0x2986,0x2945,0x2945,0x3186,0x2945,0x2965,0x2965,0x2124,0x2986,0x3186,0x2966,0x3186,0x2966,0x3186,0x2946,0x2966,0x3187,0x3186,0x2966,0x2945,0x2966,0x3186,0x3186,0x2145,0x2946,0x2966,0x2966,0x2946,0x2125,0x2125,0x2125,0x2125,0x2945,0x2125,0x2145,0x2925,0x2945,0x2125,0x2946,0x2945,0x2125,0x39e7,0x4207,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2945,0x2965,0x2124,0x0000,0x738e,0xdefb,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xdefb,0xdedb,0xce79,0xc618,0xb5b6,0xa534,0x9cd3,0x8c71,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8c51,0x8c51,0x8c71,0x8430,0x4207,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x4a8a,0x73af,0x6b6e,0x2965,0x3186,0x738e,0x73af,0x39e8,0x1904,0x632c,0x7bef,0x52cb,0x1082,0x4a69,0x7bcf,0x6b6e,0x18c3,0x2144,0x7bee,0x8410,0x3187,0x0000,0x632d,0x8410,0x52cb,0x0000,0x4a49,0x7bef,0x6b8e,0x0021,0x18a2,0x73ce,0x8410,0x2104,0x0000,0x632c,0x8410,0x4a8a,0x0000,0x4228,0x7bef,0x6baf,0x0000,0x0861,0x73ae,0x8410,0x2145,0x0000,0x630b,0x7c30,0x4a8a,0x0000,0x39c6,0x7bef,0x73cf,0x0000,0x0000,0x738e,0x8430,0x2966,0x0000,0x62eb,0x7c30,0x5aec,0x0000,0x2144,0x7bf0,0x8410,0x0000,0x0000,0x6b8d,0x8c71,0x39e7,0x0000,0x528a,0x8430,0x6b6e,0x0000,0x0840,0x7bcf,0x8451,0x18e3,0x0000,0x632d,0x8c51,0x52cb,0x0000,0x39c7,0x8410,0x73cf,0x10c2,0x73ae,0x7c10,0x73ae,0x8430,0x8c51,0x8430,0x8430,0x8430,0x7c10,0xb5d6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7a,0x7bf0,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x6b6e,0x6b8e,0x3186,0x1082,0x39e8,0x39c7,0x39e7,0x31c7,0x3186,0x39c7,0x31a7,0x39c7,0x31c7,0x2125,0x3186,0x4208,0x3186,0x31c7,0x31a6,0x3186,0x39c7,0x39c7,0x31a7,0x39e7,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2145,0x2965,0x2124,0x2144,0x2145,0x2104,0x2965,0x1903,0x2124,0x2965,0x1903,0x2945,0x2965,0x2124,0x2965,0x2965,0x2945,0x2945,0x2124,0x2125,0x18e4,0x2125,0x2946,0x2966,0x2966,0x1904,0x2945,0x2945,0x2125,0x2124,0x2946,0x2125,0x2124,0x2945,0x18e4,0x18c3,0x18c3,0x18e4,0x2124,0x2104,0x2104,0x18c3,0x18e4,0x2125,0x2125,0x18e4,0x10c3,0x39c7,0x4207,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x2965,0x2945,0x18e3,0x10a2,0xad75,0xe71c,0xdedb,0xdefb,0xdefb,0xe71c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xdefb,0xd6ba,0xc638,0xb5b6,0xa534,0x94b2,0x8c51,0x8410,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8c51,0x8c71,0x8c71,0x9492,0x94b2,0x632c,0x2104,0x2124,0x2104,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x3185,0x73ce,0x738d,0x0000,0x0000,0x738d,0x7bef,0x2966,0x0000,0x4a89,0x7bef,0x5aeb,0x0000,0x10c2,0x73ce,0x73ae,0x0000,0x0000,0x738d,0x8410,0x31a7,0x0000,0x52aa,0x7bef,0x630c,0x0000,0x1061,0x73ae,0x73cf,0x0000,0x0000,0x6b4d,0x7c0f,0x39e7,0x0000,0x4a8a,0x8410,0x636d,0x0000,0x1060,0x7bce,0x7bf0,0x10a3,0x0000,0x6b6d,0x8430,0x4a48,0x0000,0x4228,0x7c0f,0x738e,0x0000,0x0000,0x73cf,0x7c30,0x2985,0x0000,0x632c,0x8430,0x52eb,0x0000,0x3185,0x7bcf,0x73cf,0x18e3,0x0000,0x73ae,0x8451,0x4a6a,0x0000,0x528a,0x7c0f,0x6b6d,0x10a3,0x0000,0x840f,0x8431,0x39e7,0x0000,0x6b4c,0x8450,0x632c,0x0000,0x31a6,0x8430,0x8430,0x31a6,0x0000,0x73ae,0x8c51,0x31a6,0x5aeb,0x8430,0x6b6d,0x7bcf,0x8410,0x7c10,0x8410,0x8430,0x7c10,0x8c92,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x73ef,0x7bef,0x7bef,0x73ae,0x73ae,0x73ae,0x6b4d,0x738e,0x5b0c,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2965,0x2124,0x0000,0x528a,0xce79,0xd6ba,0xd6ba,0xdedb,0xdedb,0xdefb,0xe71c,0xe73c,0xe73c,0xe73c,0xef5d,0xef7d,0xef5d,0xe71c,0xd6ba,0xc638,0xb596,0xa514,0x9492,0x8430,0x7bef,0x7bcf,0x7c0f,0x8430,0x8c51,0x8c71,0x9492,0x9492,0x94b2,0x94b2,0x9cf3,0x8430,0x2965,0x2124,0x2104,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x2124,0x73cf,0x7bcf,0x3186,0x0000,0x630c,0x7bef,0x52ab,0x0000,0x31a6,0x7bef,0x6b8e,0x2104,0x0000,0x73ae,0x7bef,0x4208,0x0000,0x634c,0x7bef,0x5aeb,0x2104,0x3186,0x7bef,0x73ae,0x3186,0x0000,0x7bcf,0x7bef,0x4a6a,0x0000,0x5acb,0x7bef,0x6b4d,0x2965,0x2124,0x7bef,0x7bcf,0x4a49,0x0000,0x73ae,0x7bef,0x5b0c,0x10a2,0x4a69,0x7bef,0x73ae,0x39e8,0x0000,0x8410,0x8410,0x5acb,0x0000,0x738d,0x840f,0x6b6d,0x2124,0x39c6,0x7bce,0x7c10,0x52aa,0x0000,0x7bce,0x8430,0x6b6c,0x0000,0x52aa,0x7c0f,0x7bf0,0x31c6,0x0821,0x7bf0,0x8c51,0x6b2d,0x0000,0x6b4d,0x8c30,0x7bd0,0x1083,0x31a6,0x8430,0x8c51,0x5acb,0x0000,0x7bcf,0x94b2,0x7c10,0x0000,0x4a69,0x94b2,0x8450,0x2104,0x73cf,0x73cf,0x73ae,0x8430,0x7c10,0x7c0f,0x8410,0x8410,0x8410,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x8430,0x7c0f,0x7bef,0x73ae,0x73ae,0x73ce,0x6b8d,0x6b4c,0x73af,0x4a6a,0x0000,0x0862,0x0020,0x0841,0x0861,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0041,0x0041,0x0841,0x0021,0x0821,0x0841,0x0020,0x0020,0x0041,0x0020,0x0040,0x0040,0x0841,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0841,0x0841,0x0020,0x0021,0x0020,0x0041,0x0041,0x0020,0x0020,0x0020,0x0040,0x0020,0x0841,0x0041,0x0021,0x0841,0x0041,0x0020,0x0040,0x0020,0x0040,0x0040,0x0040,0x0000,0x39c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2124,0x2965,0x2124,0x0000,0x7bcf,0xd69a,0xce79,0xd69a,0xd69a,0xd6ba,0xdedb,0xdedb,0xdefb,0xdefb,0xe71c,0xef5d,0xef5d,0xef5d,0xe73c,0xdedb,0xce59,0xb596,0x9cd3,0x8c51,0x8410,0x7bef,0x8410,0x8430,0x8c51,0x9492,0x94b2,0x94b2,0x9cd3,0x9cd3,0x9cf3,0xa514,0x9cd3,0x4208,0x2124,0x2104,0x2104,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x2124,0x7bcf,0x7c0f,0x630c,0x31a6,0x52aa,0x8430,0x738e,0x4228,0x10c2,0x8450,0x7bef,0x5acb,0x18c3,0x7bef,0x8410,0x6b8d,0x4208,0x4a69,0x8430,0x7bef,0x4a89,0x0000,0x8430,0x7c10,0x632c,0x1903,0x73ae,0x8410,0x7bef,0x4a48,0x39c7,0x8410,0x8431,0x630c,0x0000,0x83f0,0x8451,0x7bef,0x0861,0x5b0b,0x8430,0x8451,0x4a8a,0x1061,0x8410,0x8c71,0x6b8d,0x0000,0x73ae,0x8451,0x7bf0,0x1082,0x4a69,0x8410,0x8430,0x52cb,0x0000,0x7bef,0x8451,0x73ae,0x0000,0x5aec,0x7c10,0x8430,0x2966,0x20e4,0x7bcf,0x7bf0,0x5b0c,0x0000,0x632d,0x7bcf,0x738e,0x0862,0x31a6,0x738e,0x7bd0,0x528a,0x0000,0x634d,0x73af,0x6b6e,0x0000,0x4228,0x738e,0x73ae,0x39e8,0x0000,0x6b6d,0x6b6d,0x0040,0x634c,0x7c10,0x73ae,0x7c0f,0x8430,0x8410,0x8410,0x8430,0x7c0f,0x94d2,0xdefc,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x7bcf,0x7bef,0x73ce,0x73ae,0x73ce,0x738d,0x634c,0x6b6d,0x6b4d,0x2945,0x0000,0x0861,0x0020,0x0861,0x0841,0x0841,0x0020,0x0020,0x0861,0x0841,0x0020,0x0861,0x0861,0x0881,0x0041,0x0841,0x0020,0x0861,0x0841,0x0020,0x0020,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0041,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0020,0x0020,0x0040,0x0020,0x0020,0x0000,0x39c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2104,0x2945,0x2944,0x2104,0x0000,0x9cd3,0xce79,0xc638,0xce59,0xce59,0xce79,0xd69a,0xd69a,0xd69a,0xd6ba,0xdefb,0xe71c,0xe71c,0xef5d,0xef7d,0xe73c,0xce79,0xad75,0x9492,0x7bef,0x7bef,0x8430,0x8c51,0x8c71,0x94b2,0x9cd3,0x9cf3,0x9cf3,0xa514,0xa514,0xa534,0xad55,0xa534,0x5acb,0x18e3,0x2124,0x2104,0x2124,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x2145,0x6b4d,0x6b6d,0x73ae,0x630c,0x3186,0x738e,0x6b6d,0x634c,0x2124,0x6b8d,0x6b4d,0x73ae,0x4a69,0x52ca,0x632c,0x73ae,0x632c,0x10a2,0x630c,0x632c,0x632c,0x1904,0x5aeb,0x52ca,0x6b8d,0x4a89,0x39e7,0x4a8a,0x6b6d,0x632c,0x0000,0x4a8a,0x5aeb,0x632d,0x18c3,0x4229,0x4228,0x6b6d,0x528a,0x10a2,0x39e7,0x632c,0x630c,0x0000,0x39c7,0x4249,0x5aec,0x2125,0x2124,0x2966,0x5aec,0x528a,0x0000,0x2145,0x4a69,0x5acb,0x0000,0x2966,0x2966,0x528a,0x31a7,0x0000,0x10a3,0x4249,0x4249,0x0000,0x18e3,0x2966,0x4229,0x0841,0x0000,0x0000,0x3a08,0x39e8,0x0000,0x0000,0x2945,0x4208,0x0000,0x0000,0x0000,0x39c7,0x2986,0x0000,0x0000,0x1904,0x39c7,0x0000,0x0000,0x2965,0x4a69,0x31a6,0x7bef,0x73ae,0x73ae,0x8430,0x8410,0x8410,0x8410,0x7c10,0x8430,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0x8c71,0x7bef,0x73ce,0x738e,0x73ae,0x73ae,0x6b8e,0x6b8e,0x6b4d,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0881,0x0041,0x0041,0x0861,0x0881,0x0861,0x0881,0x10a2,0x0882,0x0881,0x0040,0x0841,0x0041,0x0861,0x0861,0x0041,0x0841,0x0881,0x0841,0x0040,0x0040,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0841,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0041,0x0040,0x0020,0x0000,0x39c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2103,0x2945,0x2944,0x18e3,0x18c2,0xb596,0xc638,0xc618,0xc618,0xc618,0xc638,0xc638,0xce59,0xce59,0xce79,0xd69a,0xd69a,0xdedb,0xe73c,0xef5d,0xef7d,0xd6ba,0xad55,0x8410,0x7bef,0x8430,0x9492,0x9cd3,0x9cd3,0x9cf3,0xa514,0xa534,0xad55,0xad55,0xad55,0xad55,0xad75,0xad75,0x6b6d,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39c7,0x4228,0x2945,0x0000,0x0000,0x528a,0x52ca,0x0000,0x0000,0x2145,0x52aa,0x2124,0x0000,0x0000,0x528a,0x4228,0x0000,0x0000,0x39e7,0x4a49,0x0000,0x0000,0x0000,0x4208,0x2124,0x0000,0x0000,0x31a6,0x31c6,0x0000,0x0000,0x18c3,0x3186,0x0000,0x0000,0x0000,0x18e3,0x10a2,0x0000,0x0000,0x0061,0x1904,0x0000,0x0000,0x0000,0x18e4,0x18e4,0x0000,0x0000,0x0883,0x2125,0x10c3,0x0841,0x0862,0x2966,0x2965,0x18c3,0x18e3,0x2124,0x2985,0x1904,0x18e4,0x2945,0x31c7,0x3186,0x3186,0x2986,0x31c7,0x39e8,0x39c7,0x31a7,0x39c7,0x4208,0x3a08,0x39c7,0x39e8,0x4228,0x4228,0x4208,0x4208,0x4208,0x4229,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x528a,0x528a,0x528a,0x5aeb,0x52cb,0x5acb,0x6b8e,0x4228,0x6b4d,0x73ce,0x6b6d,0x7bcf,0x7c10,0x7c10,0x7c0f,0x8410,0x7bef,0x9d13,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbe18,0x738e,0x6bad,0x73ce,0x8451,0x8430,0x7bef,0x8430,0x73ce,0x7bef,0x5aec,0x4a6a,0x6b4d,0x2103,0x2124,0x5aeb,0x2985,0x0000,0x0881,0x0840,0x10a2,0x10c2,0x1081,0x0861,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x0881,0x1082,0x0861,0x0841,0x0040,0x0841,0x0861,0x0020,0x0841,0x0041,0x0020,0x0040,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2103,0xad76,0xc618,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc638,0xce79,0xd69a,0xd6ba,0xe73c,0xe73c,0x9cf3,0x7bef,0x9492,0x9cf3,0xa514,0xad55,0xad55,0xad55,0xad75,0xb596,0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb5b6,0x7bcf,0x18c2,0x2945,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39c7,0x4208,0x4249,0x4a49,0x4a69,0x4208,0x3a07,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4a8a,0x4a69,0x4228,0x4a69,0x528a,0x4a89,0x4a69,0x528a,0x5acb,0x52cb,0x52ca,0x52ca,0x52ca,0x52cb,0x5aeb,0x5aeb,0x5acb,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x630c,0x630c,0x5aec,0x5aec,0x632d,0x632d,0x632c,0x632c,0x5b0c,0x6b4d,0x6b4c,0x632c,0x632d,0x632d,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x738e,0x6b8d,0x738e,0x738e,0x738e,0x738e,0x73af,0x73cf,0x73af,0x73ae,0x73af,0x7bcf,0x7bcf,0x738e,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x73af,0x73cf,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bf0,0x7bf0,0x73af,0x7bcf,0x7bf0,0x73af,0x73ae,0x52aa,0x31a6,0x7bef,0x6b4d,0x6b8e,0x7c10,0x7c0f,0x7c0f,0x7c10,0x7bef,0x8430,0xce79,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b76,0x9cf3,0x7bf0,0x7bef,0x7c0f,0x632c,0x6b8e,0x8430,0x528a,0x18e2,0x632c,0x7bcf,0x31a7,0x52ab,0x8410,0x6b6e,0x39e7,0x5aec,0x31a7,0x0000,0x10a4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x10a2,0x0881,0x0000,0x1082,0x0881,0x0840,0x0861,0x0041,0x0040,0x0861,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0040,0x0020,0x0020,0x0841,0x0020,0x0040,0x0861,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0020,0x0841,0x0041,0x0020,0x0041,0x0040,0x0020,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2944,0xad75,0xbdd7,0xb596,0xb596,0xb596,0xb5b6,0xb596,0xb5b6,0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb596,0xb596,0xb5b6,0xb5b6,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0x7bef,0x10a2,0x2945,0x18e3,0x18e3,0x2103,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x39e7,0x634d,0x7bef,0x7bcf,0x738e,0x73ae,0x73cf,0x7bcf,0x7bef,0x7bef,0x7bcf,0x73ae,0x7bcf,0x7bef,0x7c0f,0x7bef,0x73cf,0x7c10,0x73ce,0x7bef,0x7bcf,0x73ce,0x7bef,0x7bef,0x7bcf,0x7bef,0x7c0f,0x8410,0x7bef,0x7bef,0x7c0f,0x7bef,0x7bef,0x7bcf,0x7bcf,0x8410,0x7c10,0x7bf0,0x7bef,0x7c0f,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bf0,0x7bf0,0x7bf0,0x7bcf,0x7bef,0x7bf0,0x7bf0,0x73cf,0x7bef,0x7bef,0x7bcf,0x7bef,0x7bcf,0x7bef,0x7bcf,0x7bcf,0x7bf0,0x7bf0,0x7bcf,0x7bcf,0x7bcf,0x73cf,0x73af,0x73af,0x7bcf,0x7bef,0x73af,0x7bcf,0x73cf,0x73ae,0x73cf,0x73af,0x7bcf,0x7bcf,0x73cf,0x7bef,0x7bef,0x73ce,0x7bef,0x73ae,0x73af,0x73af,0x73af,0x73af,0x73af,0x73cf,0x6b6d,0x634d,0x39c7,0x6b8d,0x6b6d,0x6b4d,0x7bef,0x7c0f,0x7c10,0x7c10,0x7c0f,0x7bcf,0xa514,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x73ae,0x6b6d,0x94b2,0x634d,0x0000,0x0000,0x630c,0x4a49,0x0000,0x0000,0x5acb,0x39c7,0x0000,0x5acb,0x4a29,0x0000,0x5289,0x73ad,0x73ad,0x7bee,0x7bce,0x7bee,0x8c50,0x94b1,0x8c91,0x7bee,0x52a9,0x2143,0x0000,0x0842,0x3186,0x0000,0x0000,0x10a2,0x0041,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2944,0xad55,0xb596,0xad55,0xad75,0xad55,0xad55,0xad55,0xad55,0xa534,0xa534,0xa534,0xa514,0x9cf3,0x9cd3,0x9492,0x7bef,0x7bef,0xd69a,0xef5d,0xdefb,0xd69a,0xce79,0xce79,0xce59,0xc638,0xc638,0xc638,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0x7bef,0x10a2,0x2945,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bef,0x7bef,0x7bcf,0x73ce,0x73ae,0x7bcf,0x7bcf,0x73ce,0x73ce,0x7bcf,0x73ce,0x73cf,0x73ae,0x73cf,0x73cf,0x73ae,0x73ce,0x73ae,0x73ae,0x7bcf,0x73cf,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x738e,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x7bcf,0x73ae,0x73cf,0x6b8e,0x73ae,0x73ae,0x73ae,0x73cf,0x73cf,0x7bcf,0x7bcf,0x73cf,0x73af,0x7bef,0x73cf,0x73ae,0x73ae,0x73cf,0x73ae,0x738e,0x738e,0x73ae,0x7bef,0x738e,0x738e,0x73af,0x73af,0x73af,0x7bcf,0x73af,0x73af,0x73ae,0x73af,0x73af,0x73ae,0x73af,0x738e,0x73af,0x7bcf,0x73cf,0x73cf,0x7bcf,0x7bef,0x73ce,0x7bcf,0x7bcf,0x73cf,0x7bcf,0x73af,0x73cf,0x73cf,0x6b6d,0x73cf,0x39e8,0x4248,0x7bcf,0x632c,0x73ae,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xce59,0xce9a,0x8411,0x0000,0x0000,0x4228,0x636e,0x39e7,0x0000,0x2966,0x426a,0x2124,0x0000,0x0001,0x52aa,0x10a1,0x39a4,0x842f,0xb5b4,0xc636,0xce97,0xd6d9,0xded9,0xdf19,0xdf1a,0xdf19,0xdf1a,0xdef9,0xd6b8,0xbe16,0xad73,0x94b1,0x634c,0x4a2a,0x630c,0x3185,0x0000,0x10a2,0x0000,0x0020,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2124,0xa534,0xad75,0xa534,0xa534,0xa514,0xa514,0xa514,0x9cf3,0x9cd3,0x9cd3,0x94b2,0x9492,0x8c71,0x8430,0x7bef,0x7bcf,0x9492,0xc638,0xe73c,0xef5d,0xe71c,0xdefb,0xdedb,0xd6ba,0xd69a,0xd69a,0xce79,0xce79,0xce59,0xce59,0xc638,0xce59,0xc638,0x738e,0x10a2,0x2945,0x18e3,0x2104,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x41e7,0x632c,0x73ae,0x73ae,0x73ce,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73cf,0x73ce,0x73ce,0x73ae,0x7bcf,0x7bcf,0x73ae,0x73cf,0x7bcf,0x73ce,0x73cf,0x7bcf,0x738e,0x73ae,0x73cf,0x7bcf,0x73ce,0x73cf,0x73cf,0x73ce,0x7bcf,0x73ce,0x73ae,0x73af,0x73af,0x738e,0x738e,0x73af,0x7bcf,0x7bcf,0x73ce,0x7bcf,0x73ae,0x73ce,0x7bcf,0x73ce,0x73ce,0x73ae,0x7bcf,0x7bef,0x73ae,0x7bef,0x7bef,0x73cf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x73ae,0x73cf,0x73ce,0x73ae,0x73ae,0x73cf,0x73ae,0x73ae,0x738e,0x73af,0x7bf0,0x73af,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73af,0x738e,0x73af,0x73af,0x738e,0x73ae,0x7bcf,0x73cf,0x7bef,0x7bcf,0x73cf,0x73af,0x73cf,0x73af,0x738e,0x73af,0x6b8e,0x6b6d,0x632c,0x39c7,0x738e,0x6b6d,0x6b6d,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7bef,0x9d14,0x5b75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xbe17,0xc618,0x5b0c,0x0000,0x0000,0x4aab,0x52cb,0x0000,0x0000,0x31c7,0x31a6,0x10a2,0x0883,0x2125,0x0000,0x4228,0x8450,0x5aca,0xa533,0xc657,0xd6b9,0xdf1a,0xdf1a,0xdefa,0xdf1a,0xdf1a,0xd6d9,0xce98,0xce98,0xce57,0xc636,0xc637,0xce77,0xd6d8,0xd6d8,0xce56,0x9cf1,0x7bef,0x94b2,0x4a49,0x0000,0x10a2,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x9cd3,0xa534,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x94b2,0x9492,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bef,0x8410,0x9cf3,0xbdf7,0xdedb,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xd69a,0xd69a,0xce79,0xd69a,0xce59,0x5aeb,0x18c3,0x2945,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x39e7,0x6b4d,0x73cf,0x73ae,0x73ae,0x738e,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x6b8e,0x73ce,0x73ae,0x73cf,0x73cf,0x7bcf,0x73cf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x6b8e,0x73ae,0x738e,0x7bef,0x73ce,0x6b8e,0x73ae,0x73ae,0x73ae,0x6b6e,0x738e,0x73af,0x738e,0x6b6e,0x738e,0x73cf,0x6b6d,0x73ae,0x738e,0x73ce,0x73cf,0x73ae,0x7bcf,0x73ae,0x73cf,0x73ce,0x7bcf,0x7bcf,0x73ae,0x73ae,0x7bcf,0x73af,0x73cf,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x73af,0x738e,0x738e,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x73af,0x6b8e,0x738e,0x6b6e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x73af,0x738e,0x738e,0x73ae,0x738e,0x73ae,0x634d,0x7bcf,0x2945,0x5acb,0x7bcf,0x632c,0x73ce,0x7bef,0x7bef,0x7bef,0x7bef,0x7c0f,0x8430,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xd69a,0x39e8,0x0000,0x0000,0x5acb,0x5acb,0x0000,0x2986,0x4a49,0x18c3,0x528a,0x39e8,0x18c3,0x0000,0x6b6e,0x5aec,0x18a2,0x9cd2,0x8430,0xad74,0xdef9,0xd6b8,0xce57,0xc636,0xc636,0xc656,0xc656,0xce77,0xd6b8,0xce78,0xbe16,0xbdf6,0xbe16,0xbe16,0xbe15,0xbe15,0xbdf4,0xce97,0xe75a,0x8450,0x94b3,0x94b2,0x0000,0x0000,0x0841,0x0020,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2945,0x2104,0x0861,0x8410,0xa534,0x94b2,0x94b2,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x8410,0x8c71,0xa514,0xbdf7,0xd6ba,0xe73c,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdefb,0xdefb,0xdedb,0xdedb,0xd6ba,0xd69a,0xd6ba,0xc618,0x39e7,0x2124,0x2124,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x73ae,0x73ae,0x738e,0x6b6d,0x6b6d,0x738e,0x73ae,0x738e,0x6b8d,0x738e,0x73ae,0x7bcf,0x7bcf,0x73ae,0x738e,0x73cf,0x738e,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x6b8e,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x738d,0x73ae,0x738e,0x73af,0x73af,0x73af,0x73af,0x738e,0x73ce,0x73ae,0x73ae,0x73ce,0x7bef,0x73cf,0x73ce,0x73cf,0x7bcf,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x73cf,0x6b8d,0x7bcf,0x7bcf,0x73af,0x73ae,0x738e,0x73af,0x73ae,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73af,0x73af,0x738e,0x738e,0x73ae,0x738e,0x73ae,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x738e,0x73ae,0x73ae,0x73ce,0x738e,0x73ae,0x738e,0x738e,0x6b6e,0x73af,0x738e,0x73ae,0x6bae,0x6b4d,0x632c,0x4208,0x73ae,0x6b6d,0x6b6d,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad55,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x73cf,0x528a,0x4aaa,0x4a6a,0x31a6,0x18e3,0x3a08,0x41e8,0x18e3,0x5b2d,0x31a7,0x1082,0x4228,0x7c11,0x4249,0x0000,0x7bd0,0x634e,0x632b,0x8c50,0x7c0f,0xdef9,0xce97,0xbdd5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdd5,0xbdf5,0xc636,0xce98,0xce77,0xc657,0xc637,0xc636,0xce77,0xce77,0xd6b7,0xdef9,0xdef9,0x7bef,0x632c,0x8410,0x39e7,0x2103,0x0000,0x0841,0x0000,0x0000,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4207,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2104,0x2945,0x2104,0x0860,0x630c,0xa534,0x9492,0x9492,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x8430,0x94b2,0xa534,0xbdd7,0xd69a,0xdefb,0xe73c,0xef5d,0xef5d,0xe73c,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xa534,0x10a2,0x2965,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x630c,0x6b8e,0x738e,0x73ae,0x6b8d,0x738e,0x6b8e,0x6b8e,0x73cf,0x738e,0x6b8d,0x73ae,0x738e,0x6b8d,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x7bcf,0x73ae,0x73cf,0x73ce,0x73ae,0x73ae,0x7baf,0x73af,0x7bcf,0x73af,0x73af,0x7bef,0x73ce,0x73ae,0x73ce,0x7bcf,0x73ae,0x73ae,0x7bef,0x73cf,0x7bef,0x7bef,0x7bef,0x7bef,0x73cf,0x73ce,0x73ce,0x73cf,0x73af,0x738e,0x73af,0x7bcf,0x738e,0x738e,0x73ae,0x73cf,0x73ce,0x73cf,0x73cf,0x73af,0x7bcf,0x73af,0x738e,0x73ae,0x73ce,0x73ae,0x73ae,0x738e,0x73ae,0x738f,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ce,0x73ce,0x7bcf,0x73ce,0x7bcf,0x73af,0x73af,0x738e,0x73af,0x7baf,0x73ae,0x6b8e,0x6b6d,0x73ae,0x18c3,0x632c,0x73ae,0x632c,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x8451,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xdefb,0x8451,0x0000,0x0000,0x0000,0x528a,0x4208,0x2965,0x6b6e,0x39c7,0x0000,0x52cb,0x8431,0x2966,0x0000,0x7c10,0x4249,0x0000,0x424a,0x3a08,0x52ca,0x4a69,0x52ca,0xa553,0xce77,0xd698,0xd698,0xd698,0xce98,0xce97,0xd6b8,0xd6d9,0xd6d9,0xdefa,0xe73a,0xe75b,0xe73b,0xe73a,0xe71a,0xe71a,0xdf19,0xbdd5,0x632c,0x3186,0x5aeb,0x4228,0x52aa,0x6b6d,0x4228,0x0000,0x39a7,0x18e4,0x0000,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2103,0x18e3,0x2945,0x2104,0x10a2,0x39e7,0x9cd3,0x9492,0x8c51,0x8c51,0x8430,0x8410,0x8410,0x8410,0x7bef,0x7bcf,0x7bef,0x7bef,0x8410,0x8c51,0x94b2,0xa554,0xbdd7,0xce59,0xd6ba,0xe71c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0x73ae,0x0840,0x2965,0x18e3,0x2104,0x18e3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x738e,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b8d,0x738e,0x6b8d,0x738e,0x738e,0x6b4d,0x73ae,0x738e,0x6b8d,0x6b6d,0x73ae,0x73ae,0x73ae,0x738e,0x6b8d,0x6b8e,0x73ae,0x73ae,0x738e,0x73ae,0x738e,0x73ae,0x73cf,0x738e,0x738e,0x6b8e,0x73af,0x738f,0x6b8e,0x73cf,0x7bcf,0x73ce,0x73ce,0x73ae,0x73ae,0x7bef,0x73ae,0x73ae,0x7bcf,0x73ce,0x738e,0x73ae,0x73ae,0x7bcf,0x73ce,0x6b8e,0x73af,0x7bcf,0x73cf,0x73cf,0x73ae,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x738e,0x738f,0x6b8e,0x73cf,0x6b8e,0x73ae,0x73ae,0x738e,0x73ae,0x73ce,0x73ae,0x738f,0x738e,0x738e,0x738f,0x73ae,0x73ae,0x6b8d,0x73ae,0x73ae,0x73ae,0x73cf,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x73ae,0x73ae,0x6b8d,0x6b6d,0x5acb,0x4a69,0x73ae,0x6b4d,0x6b6e,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73cf,0x7bef,0xad75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd69a,0x31a6,0x0000,0x3a08,0x5b0c,0x2945,0x4228,0x5b0c,0x3187,0x0000,0x6b8e,0x8431,0x0002,0x2965,0x73ae,0x18e4,0x0000,0x39e8,0x1904,0x0000,0x10c3,0x10a2,0x0882,0x0000,0x0000,0x0000,0x528a,0x9492,0xb595,0xbdf6,0xc637,0xd6b8,0xdef9,0xdf1a,0xdefa,0xdefb,0xdefb,0xdefb,0xd6da,0xc658,0xad55,0x8410,0x39e7,0x0000,0x0000,0x2104,0x2945,0x0000,0x0000,0x4229,0x632d,0x2104,0x5aec,0x5acb,0x2124,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2104,0x18c3,0x2124,0x2124,0x2104,0x18c3,0x7bcf,0x9cf3,0x8410,0x8430,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8430,0x8c71,0x9cd3,0xad55,0xb5b6,0xc638,0xd69a,0xdefb,0xe71c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xe71c,0xef5d,0xc618,0x39c7,0x2124,0x2124,0x2104,0x2104,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x73ae,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b8e,0x6b6d,0x6b6d,0x6b8d,0x6b8e,0x73ae,0x6b8d,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x738e,0x738e,0x6b6d,0x6b8d,0x6b8e,0x6b6d,0x738e,0x73ae,0x73ae,0x73cf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x738e,0x73af,0x738e,0x738e,0x73ae,0x738e,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73af,0x738e,0x73af,0x7bcf,0x73ae,0x73ae,0x738f,0x73af,0x73cf,0x738e,0x738e,0x738e,0x73af,0x738e,0x6b6e,0x738e,0x6b6e,0x73af,0x738e,0x738e,0x6b8e,0x738e,0x6b8d,0x6b8d,0x6b6d,0x73ae,0x73cf,0x738e,0x6b8e,0x738e,0x6b6e,0x6b6e,0x6b8e,0x73ae,0x6b8e,0x73af,0x73cf,0x738e,0x738e,0x73af,0x73ae,0x738e,0x738e,0x73af,0x73af,0x6b6e,0x738e,0x6b4d,0x10c3,0x73ae,0x738e,0x6b6d,0x7bcf,0x7bcf,0x7bef,0x7c0f,0x7bcf,0x73ce,0x8c71,0xd6da,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x6b6e,0x0000,0x18c3,0x18e4,0x4229,0x39e7,0x10a2,0x9cf4,0x7c10,0x0001,0x39e8,0x5b0d,0x2987,0x1081,0x1904,0x1082,0x0000,0x0841,0x0841,0x0000,0x0841,0x0041,0x0020,0x0841,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x1101,0x4a68,0x5b0b,0x6b6c,0x6b6d,0x6b6d,0x5b0c,0x4a89,0x39e7,0x10c2,0x0001,0x31a7,0x31a7,0x0020,0x1082,0x0000,0x0000,0x0862,0x0020,0x0862,0x39e7,0x31a6,0x10c3,0x52cb,0x4a8a,0x2965,0x5aeb,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0020,0x0020,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x2104,0x2945,0x2104,0x1082,0x4a69,0x9cd3,0x8431,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x8410,0x8c51,0x9492,0x9cf3,0xad55,0xb5b6,0xc638,0xce79,0xd6ba,0xdefb,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xef5d,0x8430,0x0000,0x3186,0x2104,0x2104,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x632c,0x6b6d,0x6b8d,0x6b4d,0x738e,0x738e,0x6b8d,0x6b8d,0x6b6d,0x73ae,0x6b8d,0x6b6d,0x6b8e,0x73ae,0x6b8e,0x6b8d,0x73ae,0x6b6d,0x6b8e,0x738e,0x73ae,0x6b6d,0x6b6d,0x73ae,0x6b6d,0x6b8e,0x73ae,0x73ae,0x6b8e,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x6b8d,0x73ce,0x73ce,0x73af,0x73af,0x73af,0x738f,0x7bcf,0x738e,0x73ae,0x7bcf,0x73ae,0x738e,0x7bcf,0x73af,0x6b6e,0x73af,0x73af,0x6b6e,0x73af,0x73cf,0x73ae,0x738e,0x73af,0x73af,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73af,0x6b4d,0x738e,0x73cf,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x738e,0x738e,0x6b6e,0x6b6e,0x738e,0x6b8e,0x73af,0x73af,0x738e,0x6b8e,0x738e,0x738e,0x6b6e,0x738e,0x73af,0x6b8e,0x7bcf,0x73af,0x73af,0x6b6e,0x6b4d,0x4a49,0x5acb,0x738e,0x6b4d,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bcf,0x7bef,0x7bcf,0xad75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x7c10,0x5aeb,0x4249,0x0021,0x528a,0xad55,0x52ab,0x0000,0x4a6a,0x6b8e,0x4a6a,0x0000,0x0000,0x1904,0x0000,0x0021,0x0862,0x0000,0x0861,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x18a2,0x2104,0x10c2,0x39c7,0x8c72,0xa536,0x8c73,0x6b6f,0x39c8,0x0000,0x0000,0x0000,0x0000,0x1083,0x52ab,0x632c,0x528a,0x3186,0x0020,0x0020,0x0020,0x0841,0x1082,0x0000,0x0000,0x18e3,0x10a2,0x0000,0x1904,0x3186,0x1904,0x39e7,0x630c,0x31a6,0x0000,0x39c7,0x2965,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0040,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0841,0x0841,0x1082,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x39c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18c3,0x2945,0x2124,0x2124,0x10a2,0x73ae,0x94b2,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x8410,0x8430,0x8c51,0x94b2,0x9cf3,0xad55,0xb5b6,0xc618,0xce59,0xd6ba,0xdefb,0xe71c,0xe73c,0xef5d,0xef7d,0xef5d,0xef5d,0xe73c,0xf79e,0xbdd7,0x2104,0x2965,0x2945,0x18e3,0x2104,0x18c3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x39e7,0x6b4d,0x6b8d,0x6b4d,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b8e,0x6b8d,0x6b8d,0x738e,0x738e,0x6b8d,0x738e,0x738e,0x738e,0x738e,0x73ae,0x6b6d,0x6b8d,0x73ae,0x6b6d,0x6b8e,0x738e,0x6b8d,0x6b6d,0x73ae,0x73ae,0x738e,0x6b6d,0x738e,0x73ae,0x6b8e,0x6b8e,0x738e,0x738e,0x738e,0x738e,0x6b6e,0x738e,0x73ae,0x73ae,0x73ce,0x738e,0x738e,0x738e,0x6b6e,0x6b6e,0x73af,0x73ae,0x738e,0x738e,0x73af,0x73af,0x6b6e,0x738e,0x738e,0x738e,0x738e,0x73af,0x73af,0x73af,0x6b6e,0x73af,0x6b8e,0x6b8e,0x73cf,0x73ce,0x73ae,0x73ae,0x73ce,0x6b8e,0x6b6e,0x738e,0x632d,0x6b6e,0x73af,0x73ae,0x73ae,0x73ae,0x73af,0x738e,0x738e,0x73ae,0x738e,0x738e,0x738e,0x73af,0x73af,0x738e,0x738e,0x6b4d,0x738e,0x5acb,0x1903,0x73ae,0x632c,0x6b6d,0x7bcf,0x73cf,0x7bcf,0x7bef,0x7bef,0x7bef,0x8c71,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdf8,0x0000,0x0000,0x1904,0x10e4,0x3a08,0x0001,0x9cd3,0x8c72,0x39e8,0x1082,0x1082,0x39c7,0x10a3,0x0841,0x0862,0x0021,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x2145,0x31a6,0x31a6,0x4a4a,0x5acc,0x632d,0x6b6e,0x4209,0x10a3,0x18e3,0x18e3,0x10a3,0x0862,0x2104,0x1904,0x0000,0x0000,0x0021,0x0020,0x0020,0x0861,0x0000,0x1903,0x4208,0x4229,0x0000,0x0000,0x10a2,0x2945,0x1082,0x0000,0x3a07,0x39e7,0x2124,0x3a08,0x5aeb,0x31a6,0x18e3,0x1082,0x0841,0x2965,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4208,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4a49,0x39c7,0x39e7,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x4a49,0x4228,0x39e8,0x4229,0x4229,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x4207,0x39e7,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x2104,0x2945,0x2103,0x18e3,0x31a6,0x8c51,0x8c71,0x73ae,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8c51,0x8c71,0x94b2,0x9cf3,0xad55,0xb5b6,0xc618,0xce59,0xd69a,0xdedb,0xdefb,0xe73c,0xef5d,0xef5d,0xef5d,0xe73c,0xf79e,0xdedb,0x52aa,0x18c2,0x3186,0x18e3,0x2104,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x738e,0x6b4d,0x6b4d,0x6b8e,0x6b6d,0x73ae,0x738e,0x6b6d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x73ae,0x6b6d,0x6b8e,0x738e,0x738e,0x73ae,0x6b6d,0x6b6d,0x738e,0x73ae,0x6b8d,0x73ae,0x738e,0x73ae,0x73ce,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x6b8e,0x73ae,0x6b8e,0x738e,0x6b6e,0x738e,0x738e,0x6b6e,0x6b8e,0x73ae,0x73cf,0x73ae,0x73ae,0x6b8d,0x6b6d,0x738e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x738e,0x73ae,0x73af,0x738e,0x6b6e,0x73af,0x73af,0x6b8e,0x73af,0x738e,0x738e,0x6b8e,0x738e,0x73af,0x738e,0x738e,0x73ae,0x73ae,0x738e,0x738e,0x73ae,0x738e,0x738e,0x6b6e,0x6b8e,0x6b6e,0x73ae,0x738e,0x738e,0x73af,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x73af,0x73af,0x73af,0x73ae,0x738e,0x6b6e,0x73ae,0x39e7,0x5aeb,0x738e,0x632c,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5aec,0x0000,0x0860,0x528a,0x9cf4,0x52ac,0x0001,0x0000,0x5b0d,0x52ab,0x4249,0x0000,0x10a3,0x1082,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x18c3,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0841,0x18e3,0x2965,0x2144,0x2965,0x18e2,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x1082,0x10a3,0x18c3,0x10c3,0x0861,0x0020,0x0841,0x0000,0x39e7,0x632c,0x632c,0x632c,0x52ca,0x39e7,0x39e7,0x5289,0x4248,0x4a49,0x4a49,0x4a69,0x4249,0x4a49,0x528a,0x52aa,0x528a,0x39e7,0x4248,0x5aeb,0x5acb,0x52aa,0x4a69,0x52aa,0x52ca,0x4a69,0x52aa,0x52cb,0x528a,0x4a69,0x4a8a,0x528a,0x5aeb,0x4a69,0x3185,0x2124,0x2125,0x2166,0x2966,0x2146,0x1925,0x2125,0x0000,0x5acb,0x52ab,0x31a6,0x52ab,0x31c7,0x2104,0x0861,0x1082,0x10a3,0x0001,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x2944,0x2104,0x2124,0x18c2,0x4a69,0x8c71,0x8430,0x73ae,0x7bcf,0x7bef,0x7bef,0x8410,0x8430,0x8c51,0x9492,0x9cd3,0xa514,0xad55,0xb5b6,0xbdf7,0xc638,0xce79,0xd6ba,0xdefb,0xe71c,0xe73c,0xe73c,0xe73c,0xf79e,0xe73c,0x73ae,0x0000,0x31a6,0x2104,0x2104,0x2104,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x632c,0x6b8e,0x6b8d,0x738e,0x738e,0x6b4d,0x6b8d,0x738e,0x6b8d,0x73ae,0x6b8d,0x738e,0x738e,0x6b8d,0x6b6d,0x6b8e,0x738e,0x6b6d,0x6b8e,0x6b8d,0x738e,0x738e,0x738e,0x6b6d,0x73ae,0x6b8e,0x6b8e,0x73ce,0x6b6d,0x73ae,0x738e,0x6b6d,0x73ae,0x73ae,0x738e,0x73ae,0x6b8d,0x738e,0x738e,0x73af,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ce,0x73ae,0x73af,0x73af,0x738e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6e,0x632d,0x6b4d,0x6b6e,0x6b8e,0x6b4d,0x738e,0x738e,0x6b8e,0x738e,0x6b8d,0x738e,0x6b6d,0x6b8d,0x6b8e,0x6b6d,0x738e,0x73af,0x6b6e,0x6b6e,0x738e,0x738e,0x6b8e,0x738e,0x6b6e,0x6b8e,0x73af,0x6b6e,0x73ae,0x73ae,0x738e,0x6b8e,0x738e,0x738e,0x73af,0x6b6e,0x73af,0x52aa,0x39c7,0x8410,0x6b4d,0x6b6d,0x73cf,0x73cf,0x73ce,0x73ae,0x73ae,0x73ae,0x94b2,0xe75c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0xb596,0x4a4a,0x2145,0x10c3,0x1042,0xb5b7,0xad76,0x2166,0x31c7,0x0000,0x2145,0x2986,0x0000,0x0020,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x2124,0x2965,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0862,0x2125,0x2985,0x31a7,0x4a69,0x5aeb,0x52cb,0x4249,0x2945,0x0861,0x0841,0x0020,0x0020,0x0861,0x2124,0x2945,0x2104,0x0862,0x0041,0x0000,0x0000,0x39e7,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x4228,0x4a69,0x52aa,0x528a,0x4a8a,0x4a69,0x52aa,0x52aa,0x4228,0x4228,0x4a69,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x4228,0x4a49,0x4a89,0x4228,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a49,0x528a,0x2104,0x0000,0x0000,0x0000,0x0862,0x1083,0x2124,0x39c7,0x29a6,0x1967,0x3a09,0x2146,0x31c7,0x52aa,0x0000,0x10a1,0x4228,0x4a69,0x4249,0x5acb,0x4a69,0x39e7,0x39c6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18c3,0x18e3,0x2945,0x18e3,0x2944,0x10a2,0x5acb,0x8c71,0x8430,0x7bcf,0x7bef,0x8410,0x8430,0x8c51,0x8c71,0x9492,0x9cd3,0xa514,0xad55,0xb5b6,0xbdf7,0xc638,0xce79,0xd6ba,0xdedb,0xdefb,0xe71c,0xe73c,0xf79e,0xe71c,0x7bef,0x0000,0x31a6,0x2124,0x18e3,0x2104,0x18c3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x632c,0x6b6d,0x73ae,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b8e,0x6b6d,0x6b6e,0x6b6d,0x738e,0x738e,0x6b6d,0x6b8e,0x738e,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x738e,0x6b8e,0x6b6d,0x6b8e,0x73ae,0x6b8e,0x6b8e,0x6b6d,0x6b6d,0x73ce,0x73ae,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x6b6d,0x6b6d,0x6b6e,0x738e,0x73cf,0x738e,0x738e,0x73ae,0x738e,0x73ae,0x6b8e,0x738e,0x73ae,0x738e,0x738e,0x738e,0x6b6d,0x73ae,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6e,0x6b6d,0x6b6d,0x6b6e,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x738e,0x73af,0x738e,0x738e,0x738e,0x73af,0x6b8e,0x6b6e,0x738e,0x738e,0x73af,0x6b6e,0x738e,0x6b6e,0x632c,0x738e,0x31a7,0x632c,0x6b8e,0x632c,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bef,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c92,0x0000,0x0883,0x31c7,0x2986,0x3a08,0x1102,0x6b8e,0x4249,0x634d,0x3186,0x0000,0x1082,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x18e3,0x10a2,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x1082,0x18e4,0x2125,0x2125,0x31e7,0x4229,0x39e8,0x2145,0x0862,0x0841,0x1082,0x1082,0x0861,0x0840,0x0841,0x0000,0x0020,0x0000,0x10a2,0x4a69,0x6b4d,0x634d,0x5b0b,0x5b0c,0x52cb,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x39e7,0x3a08,0x4208,0x39c7,0x4a69,0x52cb,0x52aa,0x4a8a,0x4a69,0x528a,0x4a69,0x4a69,0x52aa,0x4a69,0x4a69,0x4a49,0x4a49,0x4249,0x4a49,0x4a69,0x4248,0x4a69,0x4a49,0x3a08,0x2986,0x73f0,0xa596,0xbe39,0xbe5a,0xc67a,0xc65a,0xb619,0xc67b,0xce9b,0xc65a,0xa556,0x52cb,0x2144,0x6baf,0xbe39,0xc6bb,0xcedc,0xd6fd,0xcebb,0x7c10,0x20c2,0x39e7,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x10a2,0x2103,0x2944,0x18e3,0x2944,0x10a2,0x528a,0x8430,0x8c51,0x7bf0,0x8410,0x8430,0x8c51,0x8c71,0x94b2,0x9cf3,0xa534,0xad75,0xb5b6,0xbdf7,0xc638,0xce79,0xd69a,0xd6ba,0xdefb,0xe73c,0xef7d,0xce79,0x6b4d,0x0000,0x31a6,0x2944,0x18e3,0x2104,0x18c3,0x18c3,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x630c,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b6d,0x6b4d,0x6b4d,0x6b6e,0x738e,0x738e,0x6b8d,0x6b6d,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x73ae,0x6b6d,0x73ae,0x738e,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x73ce,0x738d,0x73ae,0x73ae,0x7bce,0x73ae,0x73ae,0x6b8d,0x73ae,0x6b8e,0x738e,0x6b6e,0x738e,0x6b6e,0x634d,0x738e,0x738e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x73af,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x738e,0x6b6e,0x738e,0x738e,0x73af,0x738e,0x738e,0x73af,0x738e,0x738e,0x73af,0x738e,0x7bcf,0x738e,0x738e,0x6b8e,0x6b6e,0x6b4e,0x4229,0x4229,0x738e,0x630c,0x6b8d,0x7bef,0x7bef,0x73cf,0x73cf,0x7bef,0x73ce,0x9cf3,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x39e8,0x2104,0x0000,0x9d14,0xa555,0x31c7,0x18c5,0x0000,0x0882,0x4a8a,0x2986,0x0000,0x0841,0x0020,0x0020,0x0020,0x0841,0x1082,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x10a2,0x18c3,0x0021,0x0000,0x1082,0x0820,0x0000,0x0000,0x0862,0x0020,0x0020,0x0841,0x0840,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x18c3,0x31c7,0x31a6,0x4a69,0x6b4d,0x6b4d,0x52cb,0x4a89,0x4a69,0x4228,0x4a69,0x4208,0x4228,0x4228,0x4a69,0x4208,0x4a69,0x52aa,0x52aa,0x52aa,0x52aa,0x5acb,0x5acb,0x52aa,0x528a,0x52aa,0x4a8a,0x4a49,0x528a,0x52aa,0x4a49,0x4249,0x4228,0x4249,0x4a69,0x4228,0x52cb,0x9d35,0xc67a,0xb5f9,0xa597,0xa5b8,0xadb8,0xa5b8,0xadd8,0xcebb,0xc65a,0x9d15,0x4a49,0x2986,0x84b4,0xcebc,0xcebc,0xb5f9,0xbe5a,0x9d76,0x636d,0x3165,0x39c7,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x18e3,0x10a2,0x2104,0x2124,0x18e3,0x2944,0x18e3,0x4207,0x73ae,0x8c51,0x8c51,0x8c51,0x8c71,0x9492,0x94b2,0x9cf3,0xa514,0xad55,0xb596,0xbdd7,0xc618,0xce59,0xd69a,0xdedb,0xe71c,0xdefb,0xa534,0x4207,0x0020,0x31a6,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x2103,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x5aeb,0x6b6d,0x6b6d,0x6b8d,0x73ae,0x6b8e,0x6b8d,0x6b6d,0x738e,0x73ae,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x73ae,0x6b6d,0x738e,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b8e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x73ae,0x738e,0x738e,0x6b8e,0x738e,0x6b8e,0x6b8e,0x738e,0x738e,0x73ae,0x6b6d,0x6b8d,0x6b6d,0x6b6e,0x6b8e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x6b6d,0x738e,0x73ae,0x73ae,0x7bef,0x6b8e,0x73ae,0x6b8e,0x73ae,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b8e,0x73af,0x6b8e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x6b6e,0x6b8e,0x73af,0x6b6e,0x6b6e,0x738e,0x738e,0x6b8e,0x73af,0x73af,0x73af,0x738e,0x632d,0x6b6e,0x2124,0x6b4d,0x6b6e,0x6b4d,0x7bef,0x7c0f,0x7bef,0x7bcf,0x7bcf,0x7bef,0x8430,0xce9a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb596,0x31a7,0x2145,0x18c3,0x18e4,0xad96,0x7bd0,0x2967,0x52ab,0x0000,0x0821,0x1082,0x0020,0x0020,0x0020,0x0020,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x1082,0x2125,0x2966,0x3186,0x18e4,0x0000,0x2124,0x2965,0x2124,0x0020,0x0041,0x18c3,0x0861,0x0000,0x0020,0x0020,0x10a2,0x0861,0x0021,0x0000,0x0000,0x0861,0x0000,0x0000,0x0040,0x31c7,0x5b0b,0x5aeb,0x5aeb,0x4a69,0x4a69,0x4a69,0x5acb,0x6b6d,0x4228,0x5acb,0x6b6d,0x4a49,0x4a8a,0x528a,0x52aa,0x5aeb,0x52ca,0x5aeb,0x52ca,0x4a69,0x528a,0x4a89,0x4a69,0x4a8a,0x4a69,0x4a49,0x4248,0x4228,0x4a49,0x4248,0x4228,0x3a08,0x31c7,0x2987,0x1904,0x18e5,0x08c4,0x1905,0x31c7,0x08c3,0x29a7,0x424a,0x2986,0x4a69,0x4248,0x3a28,0x31c7,0x29a6,0x2166,0x10c3,0x0083,0x39e7,0x4207,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x2104,0x2124,0x18e3,0x2124,0x2104,0x2944,0x52aa,0x7bcf,0x8430,0x8c71,0x94b2,0x9cf3,0xa514,0xad55,0xb596,0xbdd7,0xc618,0xce59,0xce79,0xd69a,0xce59,0xad55,0x630c,0x0000,0x2124,0x31a6,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0x6b8e,0x6b6e,0x6b6d,0x6b6e,0x6b6d,0x73ae,0x738e,0x6b8d,0x738e,0x6b8d,0x6b6d,0x738e,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b8e,0x6b6d,0x738e,0x73ae,0x6b6d,0x6b8e,0x73ae,0x73ae,0x73ae,0x6b8d,0x6b8e,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b4d,0x73ae,0x6b6d,0x6b8d,0x73ce,0x738e,0x6b8d,0x738e,0x73ae,0x73ae,0x738e,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x738e,0x6b8e,0x6b6e,0x73af,0x6b8e,0x738e,0x73af,0x6b6e,0x6b6e,0x738e,0x738e,0x73af,0x6b4d,0x634d,0x31a7,0x5acb,0x73af,0x632c,0x738e,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x9d14,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x2145,0x0000,0x0000,0x2966,0x0000,0x2945,0x39e8,0x5b0c,0x3186,0x0000,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x0020,0x0020,0x0020,0x0020,0x0000,0x2965,0x4208,0x39c8,0x2965,0x2124,0x1082,0x0000,0x10c2,0x2144,0x2985,0x0841,0x0881,0x2145,0x1082,0x0000,0x0841,0x0000,0x4a48,0x4a69,0x39c7,0x39c6,0x3186,0x0861,0x0000,0x1082,0x31c6,0x4208,0x52aa,0x634c,0x6b4d,0x4a69,0x528a,0x4a8a,0x632c,0x6b4d,0x4a69,0x5b0b,0x5acb,0x4228,0x528a,0x528a,0x52aa,0x52ca,0x4a69,0x528a,0x4a69,0x4a69,0x52aa,0x528a,0x4a69,0x4249,0x4a69,0x4a49,0x4a89,0x4a49,0x4248,0x4a69,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a7,0x0001,0x4a69,0x31a5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3165,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x2104,0x2124,0x2103,0x2104,0x2124,0x2104,0x2965,0x4a69,0x6b4d,0x7bcf,0x8c51,0x94b2,0x9cf3,0xa534,0xad55,0xad75,0xa534,0x9cf3,0x8410,0x4a49,0x0000,0x18c2,0x3186,0x2965,0x2104,0x18e3,0x2104,0x18c3,0x10a2,0x18e3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a08,0x630c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0x6b6d,0x634c,0x632c,0x6b6d,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x6b6d,0x6b6d,0x6b4d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b6e,0x634d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x73ae,0x738e,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x73ae,0x6b6d,0x6b4d,0x6b6d,0x6b6e,0x6b6e,0x632d,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b8e,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x6b4d,0x630c,0x632d,0x2105,0x6b6e,0x6b6d,0x6b4d,0x73cf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73cf,0x8430,0xce99,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x0000,0x0882,0x2945,0xad96,0xad97,0x2145,0x31a7,0x0000,0x0000,0x2945,0x31a6,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x1081,0x0861,0x0000,0x0020,0x0020,0x0020,0x10a2,0x2985,0x39c7,0x2966,0x2125,0x18c3,0x0882,0x0862,0x10c2,0x2124,0x2124,0x0000,0x1082,0x2104,0x0861,0x0000,0x0840,0x0000,0x3185,0x4208,0x528a,0x528a,0x52aa,0x2945,0x18c3,0x2965,0x3186,0x39c7,0x52aa,0x630c,0x630c,0x4a49,0x52ca,0x52aa,0x630c,0x52aa,0x4a8a,0x632c,0x52aa,0x4228,0x4a89,0x52aa,0x4249,0x528a,0x528a,0x4249,0x4a69,0x4a69,0x4a69,0x4a49,0x4228,0x4a49,0x4a49,0x4249,0x528a,0x4a69,0x3a28,0x4a6a,0x2965,0x10a4,0x4aab,0x6baf,0x7411,0x7c52,0x7c72,0x7c52,0x8cd4,0x8cb4,0x8493,0x73f0,0x52ab,0x4a49,0x3185,0x4acc,0x7c52,0x9515,0x9515,0x94f5,0x9d76,0x6b8f,0x2944,0x39c7,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2103,0x18c3,0x1082,0x18e3,0x2124,0x2124,0x2103,0x2124,0x2124,0x2104,0x2124,0x2965,0x39e7,0x4a48,0x4a69,0x528a,0x528a,0x4228,0x3186,0x0861,0x0000,0x2124,0x3186,0x3185,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x5b0b,0x6b8d,0x6b4d,0x6b4c,0x6b6d,0x6b4d,0x6b6d,0x6b6d,0x6b8d,0x6b8e,0x6b8e,0x6b6d,0x6b4d,0x6b4d,0x6b6e,0x6b8e,0x6b6d,0x6b8d,0x6b8e,0x6b6e,0x738e,0x6b8d,0x6b6d,0x6b8e,0x6b4d,0x6b6d,0x6b8e,0x634d,0x6b4d,0x6b8e,0x6b8e,0x6b6e,0x73ae,0x6b6d,0x6b4d,0x738e,0x6b8e,0x6b6d,0x6b4d,0x6b6d,0x6b6d,0x6b4d,0x6b6e,0x6b6e,0x634d,0x6b4d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x738e,0x6b6d,0x6b6e,0x6b6d,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x738e,0x6b6e,0x6b6e,0x634d,0x632d,0x6b4d,0x738e,0x6b4d,0x632d,0x6b8e,0x6b4d,0x6b4d,0x6b6e,0x6b4d,0x634d,0x634d,0x6b4d,0x632d,0x6b4d,0x632d,0x632d,0x6b6e,0x6b6e,0x6b4d,0x6b8e,0x738e,0x6b6e,0x738e,0x73af,0x6b8e,0x6b6e,0x738e,0x6b6e,0x632d,0x632d,0x3186,0x630c,0x73ae,0x634d,0x738e,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x73cf,0xad55,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6bb,0x2966,0x18e4,0x2104,0x6b6e,0x94d4,0x6b6e,0x2967,0x632d,0x2125,0x0000,0x1081,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0881,0x0881,0x10a2,0x0861,0x0000,0x0020,0x0020,0x0041,0x18e3,0x10a2,0x0000,0x0840,0x10c2,0x10a2,0x10a2,0x10c2,0x2104,0x18e3,0x0861,0x0000,0x0861,0x18e3,0x0861,0x0000,0x0021,0x0020,0x0000,0x0000,0x2965,0x4a89,0x52ca,0x4248,0x4a89,0x4a49,0x0000,0x31c7,0x39e7,0x4a49,0x5aeb,0x4228,0x4a69,0x52aa,0x634c,0x4a8a,0x5aeb,0x630c,0x4a49,0x4a69,0x4a8a,0x4a49,0x4248,0x4a49,0x4228,0x4a49,0x4a69,0x4228,0x4a69,0x528a,0x4a69,0x4249,0x4a69,0x4a49,0x4a69,0x4a89,0x4208,0x4229,0x3a08,0x7c52,0xa598,0xbe7b,0xc69b,0xbe7b,0xcedc,0xd71d,0xbe5a,0xcefd,0xcf1e,0xbe5a,0x73d0,0x1904,0x52cc,0xa5b8,0xd71d,0xbe7a,0xcedd,0xd71d,0xbe5a,0x7c11,0x20e0,0x39e7,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x10a3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2104,0x2103,0x2124,0x2945,0x3185,0x3185,0x2945,0x2124,0x18e3,0x2103,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x630c,0x6b8d,0x634c,0x6b6d,0x6b4d,0x632d,0x634d,0x632d,0x634d,0x632c,0x632c,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x6b6d,0x6b6e,0x632d,0x6b6e,0x634d,0x634d,0x632d,0x6b4d,0x6b4d,0x632d,0x634d,0x6b6e,0x632d,0x632d,0x632d,0x630c,0x630c,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b4d,0x634d,0x634d,0x6b4d,0x632d,0x632d,0x6b4d,0x632d,0x632d,0x6b6d,0x5b0c,0x632d,0x632d,0x634d,0x6b6e,0x6b6e,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x632d,0x634d,0x6b8e,0x6b4d,0x634d,0x6b6e,0x634d,0x632d,0x632d,0x6b4d,0x6b4d,0x632d,0x632d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x634d,0x632d,0x632d,0x634d,0x632d,0x632d,0x632d,0x6b6e,0x6b8e,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x634d,0x6b6e,0x738e,0x6b8e,0x738e,0x6b6e,0x738e,0x6b6e,0x738e,0x632d,0x6b4d,0x5aec,0x2965,0x73ae,0x6b4d,0x6b6d,0x7bce,0x7bcf,0x73cf,0x73cf,0x7bcf,0x73ce,0x8c71,0xdedb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x18e4,0x0000,0x0000,0x0000,0x0000,0x2966,0x18c4,0x632d,0x4a6a,0x0000,0x0861,0x2124,0x0861,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x1082,0x10c3,0x18e3,0x18e3,0x0000,0x0020,0x0000,0x0861,0x0882,0x0841,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18e3,0x1903,0x1903,0x0841,0x0000,0x0020,0x0841,0x18c3,0x0861,0x0000,0x0020,0x0020,0x0000,0x0000,0x2945,0x4a69,0x52ca,0x52ca,0x52cb,0x4a69,0x39c7,0x31c7,0x18e3,0x4a8a,0x4a69,0x4248,0x4228,0x4a89,0x634c,0x4228,0x5acb,0x630c,0x39e7,0x4249,0x4248,0x4249,0x4a69,0x4248,0x4228,0x4208,0x39e7,0x4228,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x4248,0x4a69,0x4a69,0x4228,0x3a08,0x4aaa,0x7c31,0x9d15,0x94d5,0x7c10,0x8451,0x8c93,0x94f4,0x6b6e,0x9515,0x9515,0x8431,0x52ab,0x39c7,0x52cb,0x8492,0xad76,0x73f0,0x7c10,0x8472,0x8cb3,0x73cf,0x2103,0x39c7,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x18c2,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18c3,0x2103,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x31a6,0x39c7,0x39e7,0x5aeb,0x6b4d,0x634d,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b6e,0x73af,0x7bcf,0x738e,0x73ae,0x73ce,0x73ce,0x7bcf,0x73ae,0x73af,0x73af,0x73af,0x738f,0x73af,0x7bcf,0x738e,0x738e,0x73af,0x7bcf,0x73af,0x73af,0x738e,0x738e,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x73af,0x73af,0x7bef,0x7bcf,0x73af,0x73ae,0x73af,0x7bcf,0x73af,0x7bcf,0x73af,0x73cf,0x73af,0x73af,0x73af,0x738e,0x73cf,0x7bcf,0x73af,0x73cf,0x7bcf,0x7bcf,0x73cf,0x73af,0x73af,0x73cf,0x7bcf,0x7bcf,0x7bf0,0x738e,0x7bcf,0x7bf0,0x73cf,0x73cf,0x7bcf,0x73cf,0x73cf,0x7bcf,0x73af,0x73cf,0x73af,0x73af,0x738e,0x738e,0x73af,0x73af,0x738f,0x6b8e,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x634d,0x632d,0x630c,0x2966,0x6b6d,0x6b6d,0x632d,0x73ae,0x7bcf,0x73ce,0x73cf,0x7bcf,0x7bcf,0x73ce,0xb5d6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x0000,0x0000,0x6b4d,0x8431,0x4249,0x2987,0x0000,0x0000,0x0842,0x3186,0x10a2,0x0000,0x2124,0x18e3,0x0000,0x0020,0x0020,0x0020,0x0000,0x0882,0x2104,0x2104,0x2124,0x18c3,0x0000,0x0020,0x0000,0x0882,0x18e3,0x0882,0x0841,0x10c3,0x1904,0x10a2,0x0040,0x10a2,0x2124,0x2124,0x2104,0x1082,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x18e3,0x39e7,0x52aa,0x39c7,0x1903,0x4249,0x4228,0x31c6,0x2104,0x18c3,0x4a69,0x5acb,0x39c7,0x4228,0x4228,0x5aeb,0x5aeb,0x4228,0x5acb,0x52aa,0x39e7,0x4a69,0x4a69,0x528a,0x4249,0x4a49,0x4a8a,0x4228,0x4228,0x4249,0x4228,0x4228,0x4a49,0x4248,0x4208,0x4249,0x4a89,0x4249,0x3a28,0x3a08,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x2165,0x10a2,0x4228,0x52aa,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4248,0x31a6,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31c6,0x4208,0x4228,0x5aec,0x632d,0x6b4d,0x738e,0x632d,0x6b6d,0x6b4d,0x630c,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b4d,0x73ae,0x6b8e,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x738e,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b6d,0x6b4d,0x6b6e,0x634d,0x6b4d,0x6b6d,0x6b6d,0x632d,0x6b4d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b4d,0x632d,0x6b4d,0x632d,0x632c,0x632d,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x5aeb,0x632c,0x5aec,0x630c,0x632d,0x630c,0x632c,0x5b0c,0x630c,0x6b4d,0x630c,0x632c,0x632d,0x5acb,0x630c,0x632c,0x5aec,0x5aeb,0x5aec,0x5aec,0x5b0c,0x630c,0x52ab,0x5aec,0x5acb,0x5acb,0x5acb,0x52ab,0x5acb,0x630c,0x5aec,0x6b6e,0x738e,0x6b4d,0x6b8e,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x738e,0x6b6e,0x738e,0x6b6e,0x73af,0x630c,0x6b6e,0x4a6a,0x39c6,0x73ce,0x632c,0x6b6d,0x73ce,0x73cf,0x7bcf,0x7bef,0x7bef,0x73ae,0x8c71,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c71,0x0000,0x10a3,0x6b4e,0xad76,0x8431,0x1104,0x4a4a,0x31a7,0x0000,0x0841,0x0000,0x738e,0x528a,0x0000,0x1082,0x0020,0x0020,0x0041,0x0020,0x2104,0x2965,0x2965,0x2945,0x0020,0x0020,0x0000,0x0841,0x1904,0x1904,0x1904,0x10a2,0x0041,0x0861,0x10a2,0x10c3,0x10c3,0x18e3,0x18c3,0x18e4,0x18e4,0x0021,0x0000,0x0021,0x0021,0x0020,0x0020,0x0020,0x2965,0x3a08,0x39c7,0x2145,0x0882,0x0841,0x0000,0x0000,0x2965,0x4228,0x4a69,0x3a07,0x39e7,0x4248,0x4a49,0x4a69,0x4a49,0x4a69,0x4a49,0x4249,0x4248,0x4a8a,0x4a69,0x4248,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a49,0x4228,0x4a69,0x4a69,0x4248,0x3a07,0x4a8a,0x39e8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x29a7,0x0882,0x528a,0x4a49,0x0000,0x0000,0x0000,0x0041,0x18e4,0x1904,0x1905,0x4a49,0x5aca,0x4a69,0x39c7,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x2104,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x39e7,0x528a,0x5289,0x52ec,0x3a0a,0x1060,0x18e4,0x0821,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0862,0x0021,0x0862,0x18c3,0x10a3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x2124,0x2125,0x2104,0x2945,0x2965,0x2965,0x2986,0x2945,0x3166,0x3186,0x3186,0x31a6,0x31a7,0x39a7,0x39c7,0x39c7,0x39e8,0x39a7,0x31a7,0x39c7,0x4a29,0x4229,0x0000,0x0000,0x5aec,0x7bf0,0x6b6e,0x738e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b4d,0x5aec,0x5b0c,0x31a6,0x6b6d,0x634c,0x632c,0x73ae,0x73cf,0x73cf,0x7bcf,0x7bce,0x7bef,0x7bef,0xbdd7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9cf4,0x0000,0x10a2,0x0000,0x31c7,0x52aa,0x08a3,0x4a49,0x630c,0x2125,0x0841,0x0000,0x7bef,0x5aeb,0x0000,0x10a2,0x0861,0x1082,0x0882,0x18e3,0x31a6,0x2986,0x31a6,0x2104,0x0000,0x0020,0x0000,0x10c3,0x2965,0x2124,0x2124,0x2144,0x2124,0x10a2,0x0881,0x10a2,0x18e3,0x2145,0x39c7,0x39c7,0x31a7,0x2966,0x2124,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10a2,0x0841,0x0000,0x0862,0x10a2,0x0882,0x2104,0x39e7,0x4248,0x39e7,0x39c7,0x31a6,0x4208,0x4a49,0x4a49,0x4a69,0x4a49,0x4a69,0x4248,0x4a49,0x4a49,0x4a49,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4a49,0x4a69,0x4248,0x4a49,0x4228,0x4a69,0x4228,0x4a49,0x3167,0x31a7,0x5b0d,0x7c51,0x9534,0x9d76,0xa597,0xadb7,0xadd8,0xadd8,0xadb8,0xa555,0x7bf0,0x4249,0x3186,0x634e,0xa597,0xb5f8,0xbe39,0xc67a,0xbe5a,0xc69b,0x8473,0x2987,0x4a28,0x4228,0x39c6,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x2104,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39c7,0x4228,0x4208,0x4a6a,0x534f,0x5b2e,0x6b6d,0x73ae,0x7bef,0x8430,0x8410,0x7bf0,0x7bf0,0x8410,0x7bf0,0x7bef,0x7c0f,0x7bef,0x7c0f,0x7c0f,0x7bef,0x7bf0,0x7bcf,0x7bd0,0x7bf0,0x7bf0,0x7bcf,0x73cf,0x7bf0,0x7bcf,0x73af,0x7bcf,0x7bcf,0x7baf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73ae,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x73ae,0x73af,0x73af,0x7bcf,0x73af,0x738e,0x73af,0x73af,0x7bcf,0x73af,0x73af,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73ae,0x73cf,0x73cf,0x7bcf,0x7bcf,0x73cf,0x7bcf,0x7bf0,0x7c10,0x7bcf,0x7bf0,0x94b3,0x8410,0x0000,0x3186,0x7bf0,0x73af,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x6b6e,0x5b0c,0x738e,0x39c7,0x4a69,0x73ae,0x5b0b,0x6b8d,0x73ae,0x73af,0x73cf,0x7bcf,0x7bef,0x7bef,0x8c71,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x2986,0x1904,0x2145,0x0000,0x0002,0x0001,0x0000,0x0000,0x2965,0x2104,0x0000,0x2104,0x4228,0x0000,0x1082,0x10a2,0x10a2,0x10c3,0x18c3,0x2986,0x39e7,0x3186,0x3186,0x0861,0x0000,0x0020,0x0000,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2104,0x10a2,0x0881,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0041,0x0041,0x0862,0x1082,0x18c3,0x2125,0x2965,0x31c7,0x39c7,0x39e8,0x4a49,0x3a08,0x3208,0x3a08,0x4228,0x4269,0x3a28,0x3a28,0x3a28,0x3a08,0x4208,0x4228,0x39e8,0x4228,0x4a69,0x4229,0x4249,0x528a,0x4a6a,0x4a6a,0x4a8a,0x528a,0x4a49,0x4a49,0x528a,0x4a8a,0x4a49,0x4a8a,0x528a,0x39e8,0x8451,0xadb7,0xc69b,0xc69b,0xc6bc,0xcedc,0xcebc,0xc6bb,0xd71d,0xdf1d,0xcedb,0x94d3,0x29e7,0x4248,0x9d34,0xd6fd,0xdf3e,0xb619,0xadd8,0xbe5a,0x9d35,0x5370,0x2a6c,0x31c7,0x2102,0x18e3,0x10a2,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x18c2,0x18e3,0x2945,0x20e3,0x31c8,0x3aad,0x4330,0x636e,0x7bce,0x73ce,0x7bef,0x8410,0x8410,0x7bf0,0x6b4d,0x630d,0x632d,0x632d,0x632d,0x630c,0x632d,0x632d,0x632d,0x5b0c,0x632d,0x634d,0x630d,0x630d,0x632d,0x6b4d,0x6b4d,0x630c,0x632d,0x634d,0x632d,0x634d,0x634d,0x634d,0x632d,0x632d,0x636d,0x636d,0x636d,0x636e,0x636e,0x634d,0x632d,0x634d,0x5b2c,0x632d,0x634d,0x632d,0x5b2c,0x634d,0x636e,0x634d,0x5b2d,0x632d,0x6b6e,0x634d,0x5b0c,0x5b0c,0x630d,0x5b0d,0x5b0c,0x5b0c,0x5b0d,0x5b0d,0x5aec,0x5b0c,0x5b0c,0x52cb,0x5b0c,0x5b2d,0x5aec,0x630d,0x630d,0x5aed,0x5aec,0x632d,0x5aed,0x5aec,0x73af,0x7bcf,0x73af,0x73af,0x8c51,0x94b2,0x31c6,0x0000,0x73cf,0x73ce,0x630c,0x6b6e,0x6b4e,0x6b4d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x634d,0x5aec,0x528a,0x39c7,0x738e,0x630c,0x632d,0x738e,0x73af,0x73af,0x73af,0x73cf,0x7bcf,0x7bef,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x73ae,0x0000,0x2145,0x7c30,0x9d35,0x52cb,0x2966,0x39c8,0x18a3,0x0000,0x0000,0x5289,0x8c71,0x31a7,0x0000,0x2104,0x18e3,0x18e3,0x2104,0x2144,0x39e7,0x39e7,0x39e7,0x2945,0x0000,0x0020,0x0000,0x1082,0x31c7,0x31a6,0x3186,0x31a6,0x2986,0x2144,0x1903,0x10c3,0x10a2,0x0881,0x0881,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0041,0x0841,0x0861,0x10a2,0x18e3,0x18e4,0x2104,0x2125,0x2125,0x2145,0x2966,0x31a7,0x4208,0x39e8,0x2945,0x2125,0x2125,0x2125,0x2125,0x2124,0x2145,0x2145,0x2966,0x2145,0x2946,0x18e4,0x10a3,0x39c7,0x4a6a,0x4a49,0x4229,0x4a49,0x4229,0x4229,0x4229,0x4229,0x4249,0x4229,0x4208,0x4228,0x4a49,0x4a6a,0x4a4a,0x634e,0x8431,0x8452,0x5b0e,0x52ed,0x52ec,0x634e,0x5b0d,0x7411,0x8452,0x6b8f,0x4249,0x4249,0x4248,0x636d,0x6bb0,0x73d0,0x73d0,0x632e,0x5b0d,0x424a,0x9d35,0xc639,0xb5d7,0x9cf3,0x9cf3,0x9cd3,0x5aeb,0x18c3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2104,0x2124,0x8410,0x9492,0x738e,0xa514,0xbdd7,0xbdf8,0x9515,0x4acd,0x73ae,0x73af,0x6b6e,0x738e,0x738f,0x73cf,0x73af,0x52ab,0x4a49,0x528b,0x528b,0x4a8a,0x52ab,0x52ab,0x52ab,0x4a8a,0x52ab,0x52ab,0x52cb,0x52ab,0x5aec,0x5acb,0x528a,0x52ab,0x5aec,0x52cb,0x52cb,0x52cb,0x52ab,0x5aec,0x52cb,0x52cb,0x632d,0x632d,0x5aec,0x5aec,0x5b0c,0x5aec,0x52ab,0x5aec,0x52ab,0x52ab,0x5b0c,0x52cb,0x52ab,0x5aec,0x5aec,0x5aec,0x4a8a,0x52ab,0x5aec,0x4aab,0x4a6a,0x4a8a,0x52ab,0x528a,0x4a6a,0x4a8a,0x4a8a,0x528a,0x4a8a,0x52cb,0x4aab,0x4a6a,0x4a8a,0x52ab,0x4a6a,0x4a8a,0x4a6a,0x4a6b,0x4a6a,0x4a6a,0x4a6a,0x5b0c,0x6b6e,0x738f,0x73af,0x738e,0x8410,0x94b2,0x6b4d,0x0000,0x5acb,0x8c71,0x7bef,0x73af,0x7bd0,0x7bf0,0x7bcf,0x7bf0,0x7bf0,0x7bf0,0x7bcf,0x7c10,0x8410,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x738e,0x7bcf,0x31a6,0x5acb,0x6b8e,0x5aec,0x6b6e,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x7bef,0x94b2,0xef5d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe75d,0x73af,0x1905,0x2125,0x634d,0x9d14,0x632d,0x0000,0x528b,0x4229,0x0841,0x0000,0x632c,0x8c91,0x0000,0x2945,0x2144,0x2945,0x2945,0x2145,0x39e7,0x4249,0x3a08,0x39e7,0x18c3,0x0000,0x0841,0x0000,0x3186,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x2144,0x1903,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0881,0x0861,0x0881,0x1082,0x1082,0x1082,0x10c3,0x18e3,0x1904,0x2104,0x2104,0x2125,0x2145,0x2966,0x31a7,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e4,0x18c3,0x10a3,0x2104,0x2104,0x2104,0x2125,0x2104,0x2104,0x2125,0x2125,0x2946,0x2125,0x2104,0x1904,0x18e4,0x18c3,0x20e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0842,0x18e4,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x0000,0xd6ba,0xf7be,0xdefc,0xce7a,0xce7a,0xce59,0x73ae,0x0040,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18c3,0x2124,0xad75,0xc618,0x94d3,0xd69a,0xe71c,0xef7d,0xcebb,0x42cc,0x73ae,0x73ce,0x6b8e,0x738e,0x738e,0x738e,0x7bf0,0x73cf,0x4228,0x0000,0x0000,0x0861,0x0842,0x0042,0x0020,0x08a3,0x0062,0x0042,0x0062,0x1083,0x0862,0x0001,0x0021,0x0021,0x0021,0x0822,0x0822,0x0001,0x0000,0x0822,0x0822,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0x6b6d,0x632d,0x6b6e,0x73ae,0x6b8e,0x7bcf,0x8c92,0x8410,0x31a7,0x0020,0x738e,0x6b6d,0x5aec,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aec,0x5aeb,0x5aec,0x31a6,0x39c7,0x634d,0x5acc,0x632d,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x73cf,0x8410,0xc618,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a3,0x18e4,0x2945,0x0000,0x1082,0x0000,0x0000,0x2945,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x4a69,0x4a49,0x4249,0x2965,0x0000,0x0000,0x0000,0x0000,0x18e3,0x18e3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e4,0x2104,0x1904,0x2104,0x2104,0x1904,0x18e4,0x18e3,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x2104,0x2104,0x18e4,0x18e4,0x20e4,0x1904,0x18e4,0x2104,0x18e4,0x0000,0x6b8e,0x9d14,0x7c72,0x8492,0x8492,0x8492,0x8492,0x8492,0x8c92,0x8431,0x9cf4,0x7bf0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0041,0x0021,0x0000,0x0000,0x0020,0x0020,0x0861,0x0862,0x0842,0x0001,0x0000,0x0000,0x0861,0x0882,0x1082,0x0882,0x1081,0x1903,0x0000,0xd69a,0xef7d,0xd69a,0xc638,0xc638,0xbdd7,0x736e,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18e3,0x2124,0xa534,0xbdd7,0x9492,0xc659,0xd6ba,0xe73c,0xd6bb,0x4acd,0x6b4d,0x73ce,0x6b8d,0x738e,0x73ae,0x738e,0x7bf0,0x7bf0,0x52ab,0x2125,0x4249,0x528a,0x4a69,0x528a,0x5acb,0x52ab,0x52cb,0x52cb,0x52aa,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aeb,0x5aec,0x5aec,0x5aec,0x630c,0x630c,0x632c,0x630c,0x632d,0x632d,0x632d,0x632d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4e,0x6b6e,0x6b6e,0x6b6d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x7bce,0x73ae,0x7bce,0x7bef,0x73cf,0x7bcf,0x7bef,0x840f,0x7bef,0x7bef,0x840f,0x840f,0x7bef,0x840f,0x8410,0x8410,0x8c51,0x8c71,0x8c71,0x8451,0x8c92,0x4a8a,0x4248,0x6b6c,0x632c,0x6b6e,0x73af,0x73ae,0x73af,0x8c72,0x8c71,0x5aeb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x2125,0x6b8e,0x8c71,0x7bf0,0x6b8e,0x73af,0x73af,0x73cf,0x7bef,0x7bef,0x7bcf,0x9cf3,0xdf1c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc618,0x2945,0x08a3,0x52cb,0x52aa,0x31a6,0x31a6,0x0000,0x0000,0x0000,0x0000,0x2945,0x5aec,0x18e3,0x39e7,0x4208,0x3a08,0x3a07,0x4228,0x4228,0x4208,0x39c6,0x39e7,0x2945,0x2104,0x2124,0x2124,0x2945,0x3186,0x2986,0x31a6,0x31a7,0x3186,0x3186,0x2145,0x2104,0x18e4,0x18e4,0x18c4,0x18c4,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x18e4,0x2125,0x2945,0x2125,0x2145,0x2945,0x2945,0x3186,0x39c7,0x31a7,0x7c10,0x94f3,0x8472,0x84b2,0x84b2,0x8492,0x8492,0x8492,0x8c92,0x8472,0x94f4,0x7c31,0x39e8,0x4a69,0x528a,0x528a,0x52aa,0x4a6a,0x4a8a,0x528a,0x4a6a,0x528a,0x528a,0x528a,0x528a,0x528a,0x52aa,0x528a,0x4a8a,0x4aab,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x528a,0x52aa,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x4aaa,0x4a8a,0x4a8a,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x52aa,0x2166,0xd6ba,0xef7d,0xd6ba,0xce59,0xce59,0xbdf7,0x738e,0x0861,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18c3,0x2124,0xad55,0xbdf7,0x94b3,0xce79,0xdedb,0xef3c,0xd6bb,0x6bd0,0x7bef,0x8450,0x8410,0x7bef,0x7bf0,0x7bcf,0x8431,0x8431,0x4a6a,0xce59,0xef5d,0xc638,0xe71c,0xf79e,0xef7d,0xef9d,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xdefc,0xef5d,0xd69a,0x18e2,0x632c,0x738e,0x73af,0x7bcf,0x7bcf,0x7bcf,0x8410,0x8410,0x7bcf,0x7bcf,0x7bcf,0x7c10,0x7c10,0x8410,0x8410,0x8410,0x7c10,0x7bf0,0x8431,0x8431,0x7c10,0x8410,0x8410,0x7bf0,0x7c10,0x7bf0,0x8410,0x7bf0,0x8410,0x7c10,0x8410,0x7bef,0x7bf0,0x7c10,0x7bcf,0x73af,0x738e,0x738e,0x73af,0x7bcf,0x73ae,0x7c0f,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0x4229,0x0000,0x2146,0xa555,0xbe19,0x5aed,0x1905,0x39e8,0x18c3,0x0000,0x0020,0x0841,0x20e4,0x3a08,0x4a69,0x4228,0x4228,0x4228,0x4228,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x52aa,0x52aa,0x52aa,0x5acb,0x5aeb,0x52cb,0x52ab,0x5acb,0x52ab,0x528a,0x3a08,0x31a6,0x2124,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x2125,0x2125,0x2965,0x2966,0x3186,0x39e8,0x4249,0x52eb,0x52cb,0x4a8b,0x5aec,0x5aec,0x5aec,0x5acc,0x5aec,0x5b0d,0x530c,0x5b0c,0x52cb,0x634e,0x73cf,0x73af,0x73af,0x6b8e,0x73af,0x738e,0x738e,0x73af,0x73af,0x73af,0x738f,0x738e,0x738e,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73cf,0x73ae,0x73cf,0x73cf,0x73af,0x73cf,0x73ce,0x73ae,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x5b2c,0xdedb,0xef7d,0xd6ba,0xce59,0xc639,0xbdd7,0x6b6d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2124,0xad55,0xbdf7,0x9cd3,0xce59,0xd6db,0xe73c,0xd6bb,0x6bb0,0x630c,0x634d,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b6e,0x7bf0,0x5aeb,0xce59,0xffff,0xdf3c,0xef7d,0xf7df,0xf7be,0xf7be,0xf7be,0xf7be,0xef9e,0xefbe,0xf7be,0xf7be,0xefbe,0xef9e,0xf7be,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefde,0xefde,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbf,0xefbe,0xefbe,0xefbe,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9d,0xef9e,0xef9e,0xef9e,0xe71c,0xe73d,0xef9e,0x52cb,0x4a8a,0x6b6e,0x632d,0x632c,0x630c,0x5acb,0x52ab,0x5aec,0x632d,0x6b6e,0x73cf,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b4e,0x6b4d,0x632d,0x632d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x632d,0x6b4e,0x6b6e,0x632d,0x632d,0x5aec,0x5aec,0x4a6a,0x630c,0x73cf,0x73af,0x738e,0x73af,0x73ce,0x73ce,0x73ae,0x9cf3,0x9d39,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9d39,0x73af,0x39c7,0x2966,0x2987,0x6b90,0x632e,0x0021,0x39e8,0x18e3,0x0000,0x0020,0x0000,0x39e7,0x52aa,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4229,0x4208,0x4208,0x31a7,0x2965,0x2945,0x2144,0x2945,0x2124,0x2124,0x2124,0x18c3,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x1903,0x2124,0x2124,0x2104,0x1903,0x2124,0x2124,0x1903,0x2124,0x2945,0x2144,0x2124,0x2124,0x1904,0x2104,0x2925,0x2125,0x2125,0x2125,0x18c4,0x18c3,0x18c3,0x18e4,0x1082,0x1062,0x18c3,0x18e3,0x18e4,0x18a3,0x1082,0x20e4,0x2104,0x18e3,0x1082,0x0862,0x18c3,0x2125,0x1082,0x0862,0x0882,0x2104,0x2125,0x18e4,0x10a3,0x0882,0x2104,0x2125,0x2125,0x18c4,0x18c3,0x2945,0x2945,0x2104,0x18e4,0x2125,0x2946,0x2125,0x2125,0x2105,0x2105,0x2966,0x2966,0x2105,0x18e4,0x2966,0x31a7,0x2946,0x2125,0x2125,0x3186,0x39e8,0x0000,0xd69a,0xef7d,0xd6ba,0xce79,0xc639,0xbdd7,0x6b6d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2924,0x18e3,0x2124,0xad55,0xc5f8,0x9cd3,0xce79,0xd6db,0xe73c,0xd6bb,0x3a8c,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0x39c7,0x4229,0xad96,0xa535,0x9cf4,0xa575,0xa555,0xa535,0x9d14,0x9d14,0x9d14,0x94f3,0x94f3,0x94f3,0x94d3,0x94d3,0x94d3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x9513,0x94f3,0x94f3,0x9514,0x9514,0x94f3,0x9cf3,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0xa534,0xa534,0xa535,0xa535,0x9d55,0x9d54,0x9d54,0x9d34,0x9d34,0x9d34,0x9d34,0x9514,0x9514,0x9d34,0x9d14,0x9d14,0x9d14,0x9d14,0x9cf4,0x9cf3,0x9cf4,0x9d14,0x9d14,0x9d34,0x9d35,0xa555,0x9cf4,0x8cb2,0xa575,0x5b0c,0x4229,0x4a6a,0x526a,0x52ab,0x52ab,0x630c,0x632d,0x3a29,0x5aec,0x4a4a,0x5aec,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4a6a,0x4a4a,0x4a6a,0x4a6a,0x4208,0x4a49,0x4a4a,0x4229,0x4a4a,0x4a6b,0x4a4a,0x422a,0x4a4a,0x4229,0x4209,0x4a6a,0x630d,0x52ab,0x2966,0x4a6a,0x6b4d,0x73af,0x738f,0x73ae,0x73ce,0x7bcf,0x73cf,0x7c10,0xce79,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x0001,0x0000,0x0000,0x0000,0x0000,0x0881,0x0000,0x0000,0x0020,0x0000,0x2985,0x52ca,0x52cb,0x528a,0x528a,0x528a,0x52aa,0x52ab,0x528a,0x4208,0x4229,0x2104,0x0000,0x0841,0x0861,0x0020,0x0000,0x0840,0x0040,0x0861,0x0020,0x0000,0x0861,0x10a2,0x0861,0x0000,0x0041,0x0841,0x0840,0x1082,0x0861,0x0861,0x0861,0x1082,0x0882,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x0860,0x0881,0x10a2,0x18e3,0x10a2,0x0881,0x10a2,0x18e3,0x2965,0x10c3,0x0881,0x1904,0x2965,0x2165,0x0882,0x18c2,0x2966,0x2966,0x2125,0x18c3,0x18c3,0x2165,0x2965,0x2985,0x18e3,0x18e3,0x31a6,0x31c6,0x2965,0x18c3,0x1904,0x31a6,0x39c7,0x2104,0x18e3,0x2124,0x39e7,0x39e7,0x2124,0x2104,0x2966,0x39c7,0x3186,0x2945,0x2104,0x3186,0x39e8,0x31a7,0x2966,0x2125,0x31a7,0x39e8,0x2986,0x2145,0x2986,0x31c7,0x39e8,0x3186,0x31c7,0x0000,0xd6ba,0xef7d,0xd6ba,0xce79,0xc638,0xbdb6,0x6b6d,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2965,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2124,0xad55,0xc618,0x9cf3,0xce79,0xd6bb,0xef3c,0xce9a,0xa556,0xbdf7,0xbdf7,0xbe18,0xbe18,0xc638,0xc638,0xc658,0xc658,0xc658,0xc659,0xb5d7,0xbe18,0xbe18,0xbe18,0xbe18,0xbe18,0xbe38,0xc638,0xc638,0xc639,0xc639,0xc639,0xc659,0xc659,0xc659,0xc659,0xce59,0xce59,0xc639,0xce59,0xc639,0xce59,0xc639,0xc618,0xc638,0xc639,0xc639,0xc659,0xc639,0xc659,0xc639,0xc638,0xbe38,0xc639,0xc639,0xc639,0xc638,0xc659,0xc618,0xc638,0xce59,0xc639,0xc639,0xce59,0xce59,0xc659,0xce59,0xce59,0xce79,0xc659,0xc659,0xc659,0xc659,0xc659,0xce79,0xc659,0xc659,0xc659,0xc659,0xc659,0xc659,0xc659,0xcebb,0xd6db,0xd6db,0xd6db,0xdefb,0xdf1c,0xce7a,0xc679,0xc659,0x5acb,0x39e7,0x3a08,0x4a49,0x4249,0x4a69,0x4228,0x31c6,0x39e7,0x39e7,0x31a6,0x3a07,0x31c7,0x39c7,0x39c6,0x39e7,0x39e7,0x31a6,0x4a6a,0x528a,0x4a49,0x4a49,0x52aa,0x52aa,0x3186,0x632d,0x632d,0x5aec,0x738e,0x73af,0x738e,0x73ae,0x73ae,0x73ce,0x73ae,0xa534,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x5acb,0x0000,0x4a6a,0x630c,0x4229,0x39e8,0x20e5,0x0000,0x0041,0x0000,0x0020,0x5aeb,0x5aeb,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52cb,0x52aa,0x3186,0x10a2,0x4a49,0x6b6d,0x31c6,0x0841,0x2945,0x528a,0x5aeb,0x2945,0x0020,0x2966,0x4a69,0x4228,0x18c3,0x2124,0x2965,0x2965,0x31a6,0x18e3,0x1082,0x2124,0x2965,0x2986,0x18e3,0x1082,0x18e3,0x2965,0x31a6,0x18e3,0x0861,0x2124,0x39e7,0x3a08,0x18e3,0x0040,0x31c6,0x5aeb,0x4a69,0x1081,0x0000,0x5acb,0x73ae,0x4a69,0x0000,0x10a2,0x632d,0x7baf,0x4228,0x0000,0x2945,0x738e,0x7bcf,0x31a6,0x0000,0x39e7,0x738e,0x738e,0x2945,0x0000,0x4a49,0x73ae,0x6b4d,0x18c3,0x0000,0x528a,0x7bef,0x632c,0x0000,0x1082,0x5acb,0x8410,0x5acb,0x0000,0x2104,0x6b4d,0x8410,0x5289,0x0000,0x31a6,0x6b6d,0x7bef,0x4208,0x0000,0x4228,0x6b6d,0x73ae,0x31a6,0x0000,0x31c7,0xdefb,0xef7d,0xd6ba,0xce79,0xc638,0xb5b6,0x6b4d,0x1082,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2944,0x2125,0x2124,0x2965,0x2965,0x2945,0x2124,0x2124,0x2965,0x2965,0x2124,0x2124,0x2124,0x2945,0x2965,0x2945,0x2124,0x2124,0x2124,0x2944,0x2945,0x2124,0x2965,0x2965,0x2945,0x2945,0x2124,0x2945,0x2965,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2104,0xad55,0xc638,0x9cf4,0xce79,0xd6ba,0xef3c,0xc67a,0xcebb,0xf7df,0xef9e,0xefbe,0xf7be,0xf7bd,0xf7be,0xf7de,0xefbe,0xf7de,0xf7de,0xf7bf,0xf7bf,0xf7be,0xf7bf,0xf7bf,0xf7df,0xf7bf,0xf7bf,0xf7bf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xef9e,0xe73d,0xef7d,0xef5d,0xe75d,0xe71c,0xef5d,0xe71c,0xef5d,0xef5d,0xffdf,0xe73d,0xf7be,0xef9e,0xe75d,0xe73c,0xdf1c,0xe77d,0xe75d,0xdf3c,0xe73d,0xe73c,0xef7e,0xe71c,0xef5d,0xf79e,0xdefc,0xf7bf,0xef7e,0xef5d,0xe71c,0xe73d,0xe75d,0xdefc,0xdefc,0xef9e,0xf7df,0xf7bf,0xf7bf,0xf7bf,0xf7df,0xf7bf,0xf7bf,0xf7df,0xf7bf,0xf7bf,0xf7df,0xf7df,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xf7be,0xf7df,0xf7df,0xbe17,0xef7d,0x8c91,0x634d,0x73ae,0x73ce,0x73cf,0x52aa,0x4228,0x52aa,0x52aa,0x528a,0x52aa,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x4228,0x73ae,0x7bce,0x73ae,0x738d,0x634c,0x3185,0x5aeb,0x6b4d,0x5aec,0x6b6d,0x738e,0x738e,0x73ae,0x73ae,0x73ce,0x73ae,0x7c30,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x6b6d,0x0000,0x2104,0x94d3,0xd6bb,0x8c73,0x0001,0x2987,0x10a3,0x0020,0x0000,0x4248,0x6b6d,0x5aeb,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x0000,0x2945,0x5acb,0x630c,0x2104,0x0000,0x31c7,0x5aeb,0x5aeb,0x1082,0x0000,0x4208,0x52aa,0x4228,0x0000,0x0000,0x31a6,0x39e7,0x31c6,0x0000,0x0020,0x2124,0x39c7,0x31a6,0x0000,0x0841,0x2124,0x39e7,0x31a6,0x0000,0x0841,0x2985,0x4a89,0x39e7,0x0000,0x1082,0x4248,0x634d,0x39e7,0x0000,0x2103,0x5aeb,0x7baf,0x39a7,0x0000,0x2965,0x6b2d,0x738e,0x2945,0x0000,0x39e7,0x738e,0x73ae,0x1082,0x0000,0x4a49,0x738e,0x6b4d,0x0000,0x0000,0x52aa,0x738e,0x632c,0x0000,0x0000,0x630b,0x7bce,0x52aa,0x0000,0x18e3,0x630c,0x7bcf,0x52aa,0x0000,0x2965,0x6b4d,0x7bcf,0x4a49,0x0000,0x39c7,0x6b6e,0x73ae,0x39c7,0x0000,0x4a49,0x73ae,0x736e,0x2945,0x0000,0x39c7,0xdefb,0xef7d,0xd6ba,0xce79,0xc638,0xb5b6,0x6b4d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2104,0xad55,0xc638,0x9cf4,0xce79,0xd6ba,0xef5c,0xce7a,0xc65a,0xe77d,0xdf3c,0xe73c,0xe73c,0xe73c,0xe75c,0xe73c,0xdf3c,0xe73c,0xe73d,0xe75d,0xe73d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe73d,0xe75d,0xe73c,0xe75d,0xe73d,0xe73d,0xe73c,0xe75d,0xe73c,0xdf3d,0xdf1c,0xe73c,0xdf3c,0xe75d,0xe73d,0xe75d,0xe73c,0xdf3c,0xe73d,0xe73d,0xdf1c,0xdf1c,0xe73d,0xe73d,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe73c,0xdf3c,0xdf3c,0xdf1c,0xe73d,0xe75d,0xe73c,0xdf3c,0xe73c,0xe73d,0xe73d,0xdf3c,0xe73c,0xe73d,0xe75d,0xe75d,0xe73d,0xe73d,0xe73d,0xe73d,0xe73d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe73c,0xe73d,0xe75d,0xe75d,0xdf1c,0xf7be,0xb5d7,0xce79,0xc658,0x52cb,0x73ae,0x6b6d,0x6b8d,0x4208,0x528a,0x94d2,0x8c51,0x8c71,0x8c91,0x8c71,0x8430,0x7bcf,0x8410,0x8c72,0x8c71,0x9cd3,0x6b8e,0x4a69,0x73ae,0x738e,0x6b8e,0x73ae,0x3a08,0x31a7,0x738e,0x5aec,0x630c,0x738e,0x6b8e,0x73ae,0x73ae,0x73cf,0x73ae,0x73ce,0xa555,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c71,0x39e7,0x39e8,0x1103,0x3208,0x4a8a,0x1925,0x10c3,0x0882,0x0000,0x18e3,0x6b6d,0x634c,0x52ca,0x5acb,0x52ca,0x52aa,0x52cb,0x5acb,0x528a,0x5acb,0x39e7,0x0000,0x4a49,0x632c,0x3a08,0x0000,0x10a2,0x52aa,0x630c,0x39c7,0x0000,0x10c2,0x4a69,0x52aa,0x3186,0x0000,0x18c3,0x4207,0x3a07,0x2985,0x0000,0x18c3,0x31c7,0x3a08,0x3186,0x0000,0x18e3,0x31c6,0x4208,0x2985,0x0000,0x2124,0x39e7,0x4a89,0x31a6,0x0000,0x2965,0x52aa,0x5aeb,0x2965,0x0000,0x4228,0x630b,0x630c,0x2944,0x0000,0x4a69,0x6b6d,0x632c,0x18c3,0x0040,0x5acb,0x738d,0x630b,0x0020,0x18c3,0x5aeb,0x6b6d,0x5acb,0x0000,0x2945,0x632b,0x6b6d,0x52aa,0x0000,0x3185,0x6b4c,0x6b6d,0x4228,0x0000,0x31a6,0x6b4d,0x6b6d,0x4208,0x0000,0x39e7,0x6b8d,0x6b6d,0x39c7,0x0000,0x4a49,0x738e,0x630c,0x2965,0x0000,0x528a,0x73ae,0x62ec,0x2124,0x18e3,0x39e7,0xdefb,0xef7d,0xd6ba,0xce79,0xc618,0xb596,0x6b4d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2103,0xad55,0xc638,0xa514,0xce79,0xd6ba,0xef5c,0xce7a,0xc67a,0xe77d,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe73d,0xe73d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe73d,0xe73d,0xe75d,0xe75d,0xe75d,0xe73c,0xef9d,0xdefc,0xbdd7,0xdf1c,0x5b0c,0x632d,0x632d,0x6b4d,0x52ab,0x2966,0x8c72,0x8431,0x73af,0x5acb,0x39c8,0x8411,0xad96,0x8431,0x52ab,0x6b6e,0x8410,0x8430,0x4228,0x6b6e,0x6b8e,0x6b8e,0x6b4d,0x634d,0x2965,0x5aec,0x630c,0x5aeb,0x6b4d,0x738e,0x6b8e,0x738e,0x738e,0x73ce,0x73ce,0x8451,0xdedb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x73cf,0x2124,0x0000,0x0000,0x0000,0x0820,0x0000,0x1082,0x0000,0x5acb,0x7bef,0x5aeb,0x52cb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52ca,0x5aeb,0x1903,0x2965,0x5aeb,0x632c,0x2965,0x0000,0x4a69,0x52aa,0x52cb,0x2104,0x0000,0x4249,0x52aa,0x52aa,0x18c3,0x0000,0x31a6,0x4248,0x4a48,0x10a2,0x0020,0x31a6,0x4228,0x4228,0x18c3,0x0841,0x2124,0x4228,0x4208,0x1082,0x1082,0x2985,0x4a89,0x4248,0x10a2,0x1903,0x39e7,0x5aeb,0x4a69,0x1081,0x3a08,0x52ca,0x6b6d,0x52aa,0x10a2,0x4a69,0x5aeb,0x6b8e,0x4a69,0x10c3,0x4a8a,0x630c,0x6b8d,0x4a48,0x2103,0x52aa,0x632c,0x6b4c,0x39e7,0x2965,0x52ca,0x632c,0x6b8d,0x31a6,0x31c6,0x5aeb,0x634c,0x6b6d,0x2965,0x4207,0x52aa,0x6b4c,0x6b4c,0x18e3,0x4a48,0x52ca,0x738d,0x632c,0x2124,0x4a48,0x5aca,0x73ae,0x5aeb,0x18e3,0x5289,0x5aeb,0x7bcf,0x5aca,0x2144,0x52aa,0x4248,0xdedb,0xef7d,0xd6ba,0xce7a,0xc618,0xb575,0x634d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18e3,0x18e3,0xad54,0xce38,0xa514,0xce79,0xd6db,0xef5c,0xce7a,0xc65a,0xe75d,0xdf1c,0xdf3c,0xdf3c,0xdf5d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe79e,0xe79d,0xe77e,0xe75d,0xef5e,0xef5e,0xef7d,0xe79d,0xef9e,0xef9e,0xefbe,0xf7be,0xb5f7,0xdf1c,0x94b2,0x528b,0x6b4d,0x5aec,0x632d,0x3186,0x632d,0x9492,0x6b6e,0x2966,0x0842,0x630d,0x8c92,0x630c,0x0000,0x0000,0x3186,0x8c51,0x632c,0x52ab,0x738e,0x6b4d,0x6b8e,0x6b6e,0x3186,0x4a69,0x6b8d,0x5aca,0x632c,0x738e,0x6b8d,0x6b8e,0x738e,0x73ae,0x73ae,0x73cf,0xad75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x39c7,0x18c3,0x528a,0x4a6a,0x31a7,0x39c7,0x10a2,0x0000,0x3186,0x8410,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5acb,0x52aa,0x630c,0x4a49,0x0861,0x4a69,0x630c,0x4a8a,0x0861,0x2124,0x4a8a,0x52aa,0x4a49,0x0000,0x2145,0x52aa,0x52aa,0x4a69,0x0840,0x10a2,0x4208,0x4a49,0x4a49,0x0000,0x10a2,0x39e7,0x4248,0x4a49,0x0000,0x10a2,0x39c7,0x4a69,0x4228,0x0000,0x18e3,0x31c7,0x5acb,0x4a69,0x0000,0x31a6,0x4a69,0x630b,0x4248,0x0000,0x5acb,0x52aa,0x738d,0x4228,0x0020,0x5b0c,0x632c,0x73ae,0x31a6,0x2124,0x632c,0x632c,0x73ae,0x2124,0x31a6,0x634c,0x634c,0x73ae,0x10a2,0x3a07,0x636c,0x6b6d,0x6b6e,0x0000,0x4a89,0x634c,0x636c,0x6b8d,0x0000,0x52ca,0x632b,0x73ad,0x634c,0x0000,0x5aeb,0x5aeb,0x73ad,0x630b,0x0000,0x5b0b,0x5b2b,0x73ee,0x52aa,0x10c2,0x5b0b,0x5aeb,0x7c10,0x4a89,0x2944,0x5b0b,0x4248,0xdefb,0xef7d,0xd6ba,0xce79,0xc618,0xad75,0x632c,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18e3,0x18e3,0xad55,0xce59,0xa514,0xce79,0xd6da,0xef5c,0xce7a,0xcebb,0xf7ff,0xefbf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7de,0xf7de,0xf7df,0xf7de,0xf7df,0xf7df,0xf7df,0xf7de,0xf7de,0xf7de,0xf7de,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xefbe,0xefbe,0xf7df,0xf7df,0xf7df,0xf7df,0xefbe,0xefbe,0xf7df,0xefbf,0xefbe,0xf7be,0xf7bf,0xf7bf,0xf7be,0xf7be,0xf7be,0xf7be,0xefbe,0xefbe,0xf7bf,0xf7bf,0xefbe,0xefbe,0xefbe,0xefbe,0xef9e,0xf79e,0xefbe,0xe7de,0xdfbe,0xdf9e,0xe77e,0xe77e,0xe77e,0xdf5e,0xdf7e,0xefbe,0xc659,0xce9a,0xc618,0x4209,0x6b6d,0x632d,0x6b6e,0x4208,0x39c7,0x9492,0x8c71,0x7c10,0x6b4d,0x4228,0x2104,0x3a07,0x52aa,0x634c,0x7bcf,0x8450,0x73ae,0x4229,0x73af,0x6b6e,0x6b6e,0x6b6e,0x632c,0x2965,0x6b4d,0x6b4d,0x630c,0x6b6d,0x6b8e,0x6b6d,0x738e,0x738e,0x738e,0x73ae,0x8c71,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x0061,0x0000,0x4a49,0xbdf8,0xc639,0x4a8b,0x10c4,0x2145,0x0000,0x634c,0x9492,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x630c,0x39c7,0x18e3,0x630c,0x632c,0x4228,0x0000,0x3a07,0x52aa,0x5b0c,0x39c7,0x0000,0x39e7,0x4aaa,0x52cb,0x31a6,0x0000,0x3186,0x4a69,0x52aa,0x31a6,0x0000,0x2965,0x4228,0x4a69,0x31a6,0x0000,0x2124,0x4248,0x4a69,0x31c7,0x0000,0x2965,0x4a69,0x5289,0x39e7,0x0841,0x3a07,0x52aa,0x5b0b,0x39c7,0x2124,0x5aeb,0x5b0b,0x634d,0x31a6,0x3186,0x634c,0x630c,0x6b6d,0x2965,0x39e7,0x6b4d,0x632c,0x6b6d,0x2104,0x4227,0x634c,0x632c,0x6b6d,0x0821,0x4a69,0x6b6d,0x6b4d,0x6b8e,0x0000,0x52aa,0x634c,0x6b6d,0x632c,0x0000,0x5aeb,0x630b,0x73ad,0x630b,0x0000,0x5b0b,0x5b0b,0x73ce,0x5aca,0x10a2,0x632c,0x5aeb,0x73ae,0x4a69,0x2965,0x632c,0x52aa,0x7bcf,0x4228,0x39c6,0x630b,0x31c5,0xdedb,0xef7d,0xd6ba,0xce7a,0xc618,0xad55,0x630c,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2103,0x18c2,0xad55,0xce59,0xa534,0xce79,0xd6ba,0xef5c,0xce9a,0x9d56,0xbdf8,0xb5d7,0xadd7,0xadb7,0xad96,0xad75,0xad76,0xad75,0xa555,0xa555,0xa555,0xa535,0xa535,0xa535,0xa534,0xa534,0xa534,0xa534,0x9d34,0x9d34,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9cf3,0x9cf3,0x9cf3,0x9d14,0x9d14,0x9d14,0x9cf4,0x9cf3,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x94f3,0x94f3,0x94f3,0x94f4,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x94d3,0x94d3,0x94d3,0x94d3,0x94d3,0x94f3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94f3,0x94d3,0x94d3,0x94b2,0x8cb2,0x8491,0x8471,0x8451,0x8c31,0x8411,0x8410,0x8431,0x8431,0x8c92,0x73af,0xc638,0xe73c,0x634d,0x632d,0x6b4d,0x632d,0x5aeb,0x31a6,0x7bef,0x8430,0x7c0f,0x7c0f,0x840f,0x7bef,0x7bef,0x7bef,0x7bef,0x7c0f,0x7bef,0x8c71,0x52ab,0x5aeb,0x6b4d,0x6b4d,0x6b6e,0x6b6d,0x2965,0x5aeb,0x738e,0x5acb,0x632c,0x6b6d,0x634c,0x634c,0x6b4d,0x6b6d,0x6b8e,0x73ce,0xb5b6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x2145,0x31c7,0x3186,0x29a6,0x3a08,0x3187,0x18e4,0x0000,0x2985,0x8c91,0x73ae,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x2124,0x4208,0x632c,0x5b0c,0x2965,0x0000,0x4a69,0x52aa,0x52aa,0x2125,0x0860,0x4a69,0x52aa,0x52cb,0x2124,0x0000,0x4a69,0x4a69,0x5acb,0x2104,0x0020,0x4208,0x4228,0x52ca,0x10a2,0x1082,0x39e7,0x4a49,0x528a,0x0020,0x2104,0x39e7,0x4a89,0x528a,0x0000,0x31a7,0x4a69,0x5aeb,0x5acb,0x0000,0x4a89,0x5aeb,0x632c,0x52cb,0x1082,0x52aa,0x630c,0x6b4d,0x5aeb,0x18e3,0x52aa,0x5b0c,0x634c,0x5aeb,0x2104,0x5aca,0x5aeb,0x632c,0x5aeb,0x2945,0x5aeb,0x632c,0x632c,0x5acb,0x2124,0x630b,0x5b0b,0x632c,0x52ca,0x31a6,0x5aeb,0x52aa,0x6b4c,0x52aa,0x31a6,0x5b0b,0x52aa,0x6b4d,0x4a69,0x4228,0x5b0b,0x4a89,0x6b6d,0x4a49,0x4207,0x5aea,0x4a8a,0x634d,0x39e7,0x4a68,0x5aeb,0x29a5,0xd6ba,0xef7d,0xd6ba,0xce79,0xbdf7,0xad55,0x5b0b,0x1082,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x0861,0xa514,0xce59,0xa534,0xce79,0xd6ba,0xe73c,0xce9b,0x638f,0x6b0c,0x632d,0x5b2d,0x5b2d,0x630d,0x632c,0x5b0c,0x630c,0x630c,0x5b0c,0x5b0c,0x632c,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x632d,0x634d,0x634d,0x634d,0x634d,0x634d,0x636d,0x636d,0x634d,0x634d,0x6b6d,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6bae,0x6bae,0x6bae,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6bae,0x6bae,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x738e,0x6b8e,0x738e,0x73ae,0x73ae,0x738e,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x6bcf,0x6bef,0x73af,0x93f0,0xa3f0,0x9baf,0x8bee,0x940f,0x940f,0x8bee,0x942f,0x7bef,0x6b6e,0x94b3,0xefbe,0x9d34,0x4a8a,0x632d,0x632d,0x632d,0x31a6,0x630c,0x94b2,0x8410,0x8450,0x8450,0x8450,0x8450,0x8451,0x8431,0x7c10,0x8410,0x8c71,0x738e,0x52ab,0x73ae,0x630d,0x6b4d,0x6b6d,0x5b0b,0x2145,0x6b4d,0x5acb,0x52aa,0x6b6d,0x6b4d,0x632c,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x8c71,0xdf1b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa575,0x6b6e,0x18c3,0x0000,0x0000,0x0000,0x1082,0x0000,0x6b4c,0x94d3,0x632c,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x632c,0x528a,0x0000,0x52ca,0x634c,0x5acb,0x0000,0x31a6,0x4a69,0x5acb,0x4a69,0x0000,0x31a6,0x4a89,0x5aeb,0x4a69,0x0000,0x2965,0x4a89,0x4a8a,0x4248,0x0841,0x2945,0x4249,0x4a89,0x4a69,0x0020,0x2145,0x4228,0x4a69,0x528a,0x0000,0x31a6,0x4249,0x52aa,0x5acb,0x0000,0x4228,0x4a69,0x5acb,0x52aa,0x0000,0x52cb,0x4a8a,0x632c,0x52aa,0x0000,0x630c,0x52aa,0x634c,0x4a49,0x0000,0x632c,0x52aa,0x632c,0x39e7,0x2103,0x632c,0x52aa,0x5b0b,0x31a6,0x31a6,0x632c,0x4a89,0x5aeb,0x31a7,0x39e7,0x632c,0x52aa,0x630b,0x31a6,0x4a49,0x5aeb,0x52aa,0x630b,0x3185,0x4a69,0x5aca,0x52a9,0x630b,0x31a6,0x52aa,0x52aa,0x5aca,0x632c,0x31c6,0x52aa,0x4a69,0x52ca,0x632c,0x3a07,0x5289,0x4a48,0x4228,0xdefb,0xf79e,0xd6ba,0xd69a,0xc618,0xad75,0x5aeb,0x1081,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x0000,0xa514,0xd6ba,0xad75,0xce79,0xdedb,0xef7d,0xd6bb,0x8431,0x83ee,0x7bce,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7bcf,0x7bcf,0x73af,0x73ce,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73ef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bf0,0x7bf0,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7bef,0x7c10,0x7c10,0x7c10,0x8410,0x8410,0x8410,0x8410,0x83f0,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x8410,0x8410,0x7bf0,0x7bf0,0x7c10,0x7bcf,0x9410,0x9c10,0x93cf,0x83ae,0x83cf,0x83ef,0x7bae,0x83ce,0x738e,0x738e,0x4a6a,0xdedb,0xe77d,0x636d,0x630c,0x632d,0x6b4d,0x4228,0x2966,0x5aec,0x52aa,0x52aa,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a4a,0x4249,0x4a49,0x31a7,0x6b6e,0x738e,0x6b4d,0x6b8d,0x632c,0x2965,0x5aeb,0x632c,0x52aa,0x6b6d,0x73ce,0x73ae,0x73ae,0x738e,0x738d,0x6b6d,0x6b6d,0xb5d6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe75d,0x3a08,0x0000,0x2966,0x2105,0x2986,0x2125,0x10e2,0x9d13,0x7c0f,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x31a6,0x3186,0x5b0c,0x632c,0x39c7,0x0000,0x4229,0x4a69,0x52aa,0x39e7,0x0000,0x4229,0x4a69,0x5aeb,0x3a07,0x0000,0x4228,0x3a28,0x52aa,0x31a6,0x0000,0x39e7,0x4228,0x52aa,0x2985,0x0821,0x39c7,0x4208,0x52aa,0x31a6,0x10a2,0x39e7,0x4228,0x52aa,0x39e7,0x2104,0x4249,0x4a49,0x52aa,0x39e7,0x2124,0x52aa,0x4a89,0x5aeb,0x4228,0x2104,0x5aeb,0x52aa,0x5aeb,0x39c7,0x2124,0x632c,0x4aaa,0x632d,0x31a7,0x2124,0x630c,0x52aa,0x632c,0x2145,0x31a7,0x630c,0x5289,0x632c,0x18c3,0x39e7,0x632c,0x52aa,0x632c,0x0020,0x4a49,0x5acb,0x5aeb,0x632c,0x10a2,0x528a,0x52aa,0x630c,0x630c,0x0861,0x52aa,0x52aa,0x630c,0x5b0b,0x2944,0x5aca,0x4a89,0x5b0b,0x5aeb,0x31a6,0x5acb,0x4a89,0x52a9,0xbdf8,0xdefc,0xd6ba,0xc639,0xad75,0x9cd3,0x52aa,0x10a2,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x0000,0x9492,0xc618,0x9cd3,0xc659,0xd6ba,0xd6ba,0xa597,0x8472,0xa514,0x9cf4,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d35,0x9d34,0xa555,0xa555,0xa555,0xa555,0xa555,0xa555,0xa555,0xa576,0xa555,0xad76,0xad76,0xad96,0xa596,0xad96,0xad96,0xad96,0xad96,0xad76,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad76,0xad96,0xadb7,0xad96,0xad96,0xadb7,0xb5b7,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad97,0xad96,0xad96,0xad96,0xad76,0xad76,0xad76,0xa576,0xad76,0xad96,0xad76,0xa556,0xa556,0xa576,0xa555,0xa535,0x9d55,0xa555,0x9d35,0xa555,0xa555,0xa555,0xad96,0xad96,0xb5d7,0xef9e,0xe75d,0x73cf,0x7bf0,0x7bf0,0x7bef,0x6b2d,0x52aa,0x52ab,0x5acb,0x528a,0x52cb,0x5acb,0x528a,0x5acb,0x5acb,0x52aa,0x528a,0x52cb,0x52cb,0x52aa,0x6b6e,0x7bf0,0x7bcf,0x7bcf,0x7c10,0x5b0c,0x2124,0x6b8d,0x5b0c,0x5b0c,0x73ae,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x6b8d,0x8c71,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x630c,0x0000,0x52ab,0xad56,0x94d4,0x31e8,0x0000,0x634c,0x94f2,0x6b4d,0x630c,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5aeb,0x52ca,0x0000,0x52aa,0x632c,0x5acb,0x0000,0x2124,0x4a6a,0x5aeb,0x52aa,0x0000,0x2103,0x4a49,0x52ab,0x52aa,0x18e3,0x18e3,0x4a89,0x4a89,0x528a,0x2104,0x18e3,0x4a69,0x4a69,0x52aa,0x18c3,0x2104,0x4a49,0x4248,0x5acb,0x1082,0x2945,0x4a69,0x4a69,0x52cb,0x0000,0x39c7,0x528a,0x52aa,0x5b0b,0x0000,0x4228,0x52aa,0x5aeb,0x5b0b,0x10a2,0x4228,0x5aeb,0x630c,0x630c,0x2104,0x4208,0x5aeb,0x5aeb,0x630c,0x2945,0x4228,0x5aeb,0x5b0c,0x634d,0x2945,0x4228,0x5b0b,0x5aeb,0x6b4d,0x2104,0x4228,0x632c,0x632c,0x6b6d,0x1082,0x4a69,0x5b0b,0x632c,0x6b6d,0x0000,0x52aa,0x5aeb,0x6b4d,0x6b4d,0x0000,0x52aa,0x5aeb,0x6b6d,0x5b0c,0x0861,0x5aeb,0x52aa,0x6b6d,0x5acb,0x1904,0x5aeb,0x52cb,0x6b4c,0x5b6f,0x63b1,0x6bb0,0x634d,0x4228,0x39e7,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2103,0x39e7,0x4a69,0x4208,0x636e,0x6bb0,0x6390,0x5370,0x5b4e,0x634d,0x634d,0x634d,0x634d,0x634d,0x632d,0x632c,0x632d,0x5b2c,0x632c,0x632c,0x630c,0x5b0c,0x5b0c,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aec,0x5aec,0x5aec,0x5acc,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52ab,0x52ab,0x52ab,0x52aa,0x52ab,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x52cb,0x52cb,0x52cb,0x52cb,0x52eb,0x52cb,0x52cb,0x5aec,0x5aec,0x634d,0x6b6d,0x4a49,0x2945,0x39c7,0x39e7,0x39c7,0x31a7,0x31a7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7,0x31a6,0x3186,0x31a7,0x3186,0x39e7,0x2145,0x0000,0x5b0b,0x5aeb,0x52ab,0x634d,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b8e,0x73ae,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x0000,0x31c7,0x4a69,0x5aec,0x52ab,0x2986,0x0000,0x9cf3,0x8450,0x5aeb,0x630c,0x5aeb,0x5b0c,0x5b0b,0x630c,0x5aeb,0x5aeb,0x632c,0x39e7,0x2124,0x5aeb,0x630c,0x4208,0x0000,0x39e8,0x4a6a,0x52aa,0x4248,0x0000,0x39c6,0x4a49,0x52aa,0x4228,0x0000,0x39e7,0x4a69,0x52aa,0x4208,0x0000,0x39c7,0x4a49,0x4a69,0x3a08,0x0861,0x39e7,0x4249,0x4228,0x3a08,0x0861,0x39c7,0x4a49,0x4248,0x4249,0x0000,0x4208,0x4a69,0x4249,0x4a49,0x0000,0x4a69,0x4a89,0x4a69,0x4a69,0x0000,0x4a8a,0x4a69,0x4a69,0x4249,0x0000,0x52aa,0x4249,0x4a69,0x4208,0x0020,0x52aa,0x4a69,0x4a49,0x39e7,0x18e3,0x5acb,0x4a69,0x4248,0x4208,0x2104,0x52ca,0x4a69,0x4208,0x4228,0x2124,0x52cb,0x4a69,0x39e7,0x39e7,0x2104,0x52aa,0x4208,0x39e7,0x39e7,0x18e3,0x5acb,0x3a07,0x39e7,0x31a6,0x10c2,0x52cb,0x31a6,0x31a6,0x2965,0x2124,0x5acb,0x2986,0x3165,0x42cd,0x42ac,0x39c6,0x3185,0x2945,0x2103,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18c2,0x1081,0x2944,0x2944,0x31a7,0x3a8c,0x5391,0x21ca,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0041,0x18e4,0x39e7,0x73af,0x7bcf,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x73ce,0x94b2,0xe75c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce59,0x2186,0x52ab,0x2965,0x0000,0x0000,0x0000,0x73ae,0x9d13,0x634d,0x5aeb,0x630c,0x5b0c,0x5b0c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x0000,0x31c6,0x39e7,0x2104,0x0000,0x10a2,0x39c7,0x10c3,0x0000,0x0000,0x0000,0x39e7,0x18e3,0x0000,0x0000,0x0000,0x39e7,0x10a2,0x0000,0x0000,0x0000,0x39e7,0x0861,0x0041,0x0000,0x0841,0x3a08,0x10a2,0x0000,0x0000,0x10a2,0x4228,0x18c3,0x0000,0x0000,0x2104,0x4a69,0x18e3,0x0000,0x0000,0x2945,0x52aa,0x18e3,0x0000,0x0000,0x2144,0x5aeb,0x1903,0x0000,0x0000,0x2124,0x632c,0x1903,0x0000,0x0000,0x2945,0x632c,0x18c2,0x0000,0x0000,0x31c7,0x634c,0x10c2,0x0000,0x0000,0x39e7,0x632c,0x2104,0x0000,0x0000,0x4208,0x630c,0x1904,0x0861,0x0000,0x4a49,0x632c,0x2124,0x0882,0x0000,0x4a49,0x632c,0x2945,0x1903,0x10c3,0x4248,0x630c,0x2945,0x2104,0x18e3,0x4a69,0x632c,0x2145,0x2103,0x426a,0x4249,0x39a6,0x3186,0x2965,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x2945,0x2985,0x31a6,0x39e7,0x532f,0x530d,0x5269,0x528a,0x5289,0x528a,0x528a,0x528a,0x528a,0x528a,0x528a,0x528a,0x528a,0x52aa,0x5aab,0x52ab,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aca,0x5aaa,0x5aca,0x5acb,0x5aca,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5aaa,0x5aca,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x62ec,0x62eb,0x630b,0x62eb,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x62ec,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x630c,0x5b0c,0x632c,0x630b,0x630c,0x5b0c,0x5b0b,0x630c,0x630c,0x5aec,0x5aec,0x5aec,0x5b0c,0x630c,0x5aec,0x5b0c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x634d,0x6b6d,0x6b8d,0x7c10,0x7bf0,0x738e,0x6b6e,0x6b8e,0x738e,0x6b8e,0x6b6d,0x6b6d,0x6b6d,0x73cf,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x6b6e,0x0001,0x0000,0x0000,0x39e8,0xa534,0x7c30,0x52aa,0x630c,0x5b0c,0x5b0c,0x5b0b,0x630c,0x5aeb,0x5b0b,0x5b0b,0x52aa,0x528a,0x52aa,0x4a69,0x4a49,0x4a69,0x52aa,0x52aa,0x528a,0x52aa,0x528a,0x5aaa,0x5aaa,0x4a6a,0x52aa,0x52aa,0x52aa,0x52ca,0x4a89,0x4a89,0x4a69,0x4a69,0x528a,0x4a49,0x4248,0x4a69,0x528a,0x4a89,0x4228,0x4a69,0x4a69,0x4a8a,0x528a,0x4a49,0x4a69,0x4a69,0x52aa,0x528a,0x4a69,0x4a69,0x4a69,0x4a8a,0x52aa,0x52aa,0x5aeb,0x5aeb,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634d,0x634d,0x632c,0x632c,0x632c,0x632c,0x634d,0x630c,0x632c,0x632c,0x6b4d,0x6b4d,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632c,0x632c,0x632c,0x630c,0x630c,0x630c,0x632c,0x632c,0x5aeb,0x630c,0x5b0b,0x5b0b,0x630c,0x5aeb,0x632c,0x4a48,0x2945,0x3186,0x3165,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x2986,0x2943,0x424a,0x632d,0x632c,0x632c,0x632c,0x632c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b2d,0x632c,0x632c,0x632c,0x632d,0x632c,0x5b0c,0x630c,0x632c,0x632c,0x632c,0x630c,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634d,0x632c,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b2c,0x6b2d,0x634c,0x632d,0x634d,0x634d,0x6b4d,0x6b4d,0x634d,0x6b4d,0x634c,0x634d,0x634c,0x634d,0x634d,0x634c,0x634c,0x6b4d,0x634d,0x632d,0x632d,0x632d,0x632d,0x632d,0x632d,0x630c,0x632d,0x632d,0x632c,0x634d,0x632c,0x632c,0x5b2c,0x52aa,0x52ab,0x5acc,0x5aec,0x5aec,0x5aec,0x5aec,0x5b0c,0x630c,0x630c,0x5aeb,0x7bef,0xd6db,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbe18,0x0000,0x39e7,0x8c72,0x6b8e,0x7bef,0x8c92,0x52aa,0x528a,0x4a69,0x4a69,0x4249,0x4249,0x4a69,0x4a49,0x4249,0x4249,0x4a49,0x4a69,0x4a49,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a8a,0x4a8a,0x528a,0x4a6a,0x4a69,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4249,0x4a69,0x4a69,0x4a49,0x4228,0x4248,0x4a69,0x4a69,0x4228,0x4208,0x4248,0x4228,0x4248,0x4228,0x39e7,0x4248,0x4a69,0x4a69,0x4a49,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a69,0x4a8a,0x4a6a,0x4a69,0x4228,0x4a89,0x4a8a,0x4a8a,0x4a69,0x4228,0x4a69,0x4a69,0x4a8a,0x4a69,0x4208,0x4a69,0x4a89,0x4a69,0x4a49,0x4208,0x4a69,0x4a69,0x4a69,0x4248,0x4208,0x4a69,0x4a69,0x4a89,0x4248,0x4228,0x4a69,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x31a6,0x2945,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x31a6,0x39c6,0x426a,0x4a8a,0x4a69,0x528a,0x528a,0x52aa,0x4aa9,0x4aa9,0x4aa9,0x4aa9,0x4a89,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a89,0x4a89,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x4a89,0x4a69,0x4a69,0x4a69,0x4a49,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a69,0x4269,0x4269,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x52aa,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x4a8a,0x52aa,0x52aa,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4aaa,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x528a,0x52aa,0x52aa,0x528a,0x4a6a,0x528a,0x5289,0x5289,0x528a,0x5289,0x528a,0x528a,0x528a,0x52aa,0x528a,0x528a,0x528a,0x528a,0x4a8a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aca,0x52ca,0x5aeb,0x5b0b,0x4a8a,0x7c10,0xe71c,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0x2125,0x0000,0x73af,0x9d56,0x7c52,0x73f0,0x5aec,0x4a48,0x4a48,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x3a08,0x3a07,0x4208,0x39e7,0x4208,0x3a07,0x3a07,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x3a08,0x3a07,0x4208,0x3a07,0x3a07,0x4228,0x3a08,0x4208,0x3a07,0x3a07,0x3a07,0x4208,0x3a07,0x3a07,0x39e7,0x3a07,0x4207,0x3a07,0x39e7,0x39e7,0x4208,0x3a07,0x3a07,0x4208,0x4208,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x4227,0x39e7,0x39e6,0x39e6,0x39e7,0x4208,0x3a07,0x4228,0x39c7,0x39e7,0x4228,0x4208,0x39e7,0x3a07,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4228,0x3a08,0x4228,0x3a08,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4248,0x4248,0x4249,0x4228,0x4a69,0x4a69,0x4249,0x4208,0x39e7,0x3185,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3185,0x39c6,0x4249,0x52cb,0x52aa,0x52aa,0x5acb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52cb,0x52cb,0x52cb,0x52aa,0x52ca,0x52cb,0x5acb,0x52ca,0x52ca,0x52cb,0x52cb,0x52ca,0x52ca,0x52cb,0x52ca,0x52cb,0x52aa,0x5acb,0x5aeb,0x52cb,0x5acb,0x52cb,0x52cb,0x5acb,0x52cb,0x52cb,0x5acb,0x52aa,0x52cb,0x52cb,0x52ca,0x52ca,0x52cb,0x52ca,0x52ca,0x52aa,0x52ca,0x52ca,0x52ca,0x5acb,0x52cb,0x5acb,0x52ab,0x5acb,0x5acb,0x52ca,0x5aca,0x5aea,0x5aca,0x52ca,0x5aca,0x5aca,0x5aea,0x5aeb,0x52cb,0x52ca,0x52ca,0x52ca,0x5aea,0x5aca,0x52ca,0x52cb,0x52cb,0x5aec,0x5aec,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aec,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aec,0x5aec,0x5aec,0x5aec,0x5b0c,0x632c,0x632b,0x632c,0x632c,0x634c,0x634c,0x634c,0x632c,0x6b4c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x738d,0x738d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x738e,0x6b8d,0x6b8e,0x738f,0xb5b6,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5d7,0x2166,0x4249,0x2145,0x0000,0x630b,0x8430,0x632c,0x52ca,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x52ca,0x52ca,0x52aa,0x52cb,0x52ca,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a8a,0x528a,0x52aa,0x52aa,0x528a,0x528a,0x528a,0x528a,0x4a8a,0x528a,0x4a69,0x4a89,0x528a,0x4a8a,0x4a8a,0x4a89,0x4a69,0x528a,0x4a89,0x4a69,0x4a89,0x4a8a,0x4a8a,0x4a89,0x4a89,0x4a8a,0x528a,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x5aca,0x52ca,0x52aa,0x52ca,0x52ca,0x52cb,0x52ca,0x52aa,0x52cb,0x52aa,0x5acb,0x52ca,0x52aa,0x52ca,0x52cb,0x5acb,0x5acb,0x52aa,0x52ca,0x52cb,0x5acb,0x52cb,0x52cb,0x52cb,0x52aa,0x52cb,0x52cb,0x52ca,0x52ca,0x5acb,0x52ca,0x52cb,0x52cb,0x5aeb,0x5acb,0x52aa,0x52ca,0x5acb,0x5acb,0x5aeb,0x4a49,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39c6,0x4249,0x52cb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x5b0c,0x630c,0x630c,0x632c,0x5b0c,0x630c,0x5b0c,0x630c,0x5b0b,0x630c,0x632c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632d,0x630c,0x630c,0x632d,0x632d,0x632c,0x630c,0x632d,0x632d,0x630c,0x632d,0x632d,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x632d,0x634d,0x6b4d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b6d,0x6b6e,0x6b6d,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x634d,0x632d,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6e,0x6b6e,0x6b6d,0x9492,0xe73c,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x2165,0x4249,0x10c4,0x2944,0xb594,0x7bef,0x5aeb,0x5b0c,0x5b0c,0x630c,0x5acb,0x5acb,0x5acb,0x52cb,0x52ab,0x52aa,0x52ab,0x52cb,0x52aa,0x5acb,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52ab,0x52cb,0x528a,0x52aa,0x52aa,0x52aa,0x528a,0x4a8a,0x528a,0x528a,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x528a,0x528a,0x528a,0x4a69,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x4a89,0x528a,0x4a89,0x4a69,0x4a69,0x4a89,0x4a6a,0x4a6a,0x4a8a,0x528a,0x4a8a,0x4a89,0x52aa,0x528a,0x52aa,0x528a,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x52ab,0x52cb,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x52aa,0x52cb,0x52aa,0x52aa,0x52ca,0x52cb,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x5acb,0x5acb,0x52aa,0x52aa,0x52cb,0x5acb,0x528a,0x52ca,0x52cb,0x52aa,0x5acb,0x52cb,0x52cb,0x52cb,0x52ca,0x4a48,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2965,0x39c6,0x4249,0x52eb,0x5aeb,0x5b0c,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x630c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0c,0x5aeb,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acc,0x5acc,0x5aec,0x5acc,0x5acc,0x5acc,0x5acc,0x5acb,0x5acc,0x5aec,0x5acc,0x52ab,0x5acb,0x5acc,0x5acb,0x5acc,0x5acb,0x52ab,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x52cb,0x52ab,0x52ab,0x5acb,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x528a,0x4a6a,0x4a6a,0x4a4a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4a49,0x4a4a,0x4a49,0x4a4a,0x4249,0x4a4a,0x4229,0x4249,0x4249,0x4a49,0x4a4a,0x4249,0x4229,0x4209,0x4a49,0x4209,0x4209,0x4229,0x4229,0x41e8,0x4229,0x4208,0x39e8,0x4229,0x4228,0x3186,0xad76,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x4a8a,0x0000,0x630b,0xa4f3,0x4a69,0x4228,0x3a08,0x3a08,0x39e8,0x31c7,0x39c7,0x39c7,0x39c7,0x39e7,0x31e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x3187,0x3186,0x31a7,0x31a7,0x3187,0x3187,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x3187,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x31a6,0x2986,0x31c6,0x31a6,0x2986,0x31a7,0x3186,0x3186,0x3187,0x31a7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2986,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x2965,0x3186,0x2985,0x2965,0x2985,0x2985,0x2985,0x31a6,0x2945,0x39c6,0x4207,0x2985,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4249,0x3a08,0x2924,0x2985,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2945,0x2104,0x2145,0x2124,0x2124,0x2144,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x1904,0x1904,0x18c3,0x18e3,0x18c3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x10a3,0x1082,0x1082,0x10a3,0x10a2,0x1082,0x18c3,0x1082,0x0021,0x1082,0x0861,0x0862,0x0841,0x0021,0x0000,0x0000,0x0001,0x0842,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x10a3,0x10a2,0x0862,0x0842,0x1083,0x1083,0x0862,0x0861,0x0862,0x10a3,0x0862,0x1082,0x0862,0x0862,0x10a2,0x10a3,0x18c4,0x1083,0x10a3,0x0862,0x0861,0x0000,0x0000,0x0842,0x0021,0x0021,0x1062,0x1062,0x0861,0x10a2,0x10a3,0x39e8,0x4228,0xd69a,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x0000,0x4249,0x8431,0x52ab,0x6b8e,0x6b6e,0x52cb,0x634d,0x5b0c,0x52cb,0x4a8a,0x4a8a,0x4a69,0x4269,0x3a08,0x4228,0x4229,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x3a28,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x39c7,0x31c7,0x39c7,0x39c7,0x31a7,0x3187,0x3186,0x3187,0x3186,0x3186,0x39c7,0x4a49,0x4208,0x39c7,0x3186,0x3186,0x2945,0x2966,0x31a7,0x3186,0x2945,0x2945,0x2124,0x2144,0x1904,0x2145,0x2104,0x1904,0x2145,0x2104,0x2104,0x2125,0x2104,0x2104,0x2945,0x2124,0x2104,0x2104,0x18c3,0x10a2,0x18e3,0x10c3,0x10a2,0x0882,0x18e3,0x1904,0x0861,0x0861,0x10a2,0x0861,0x0881,0x0020,0x0861,0x0882,0x0041,0x0882,0x0041,0x0861,0x0041,0x0041,0x0040,0x0000,0x0000,0x0000,0x0041,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4207,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39c6,0x426a,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0840,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x2104,0x1082,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x0021,0x3186,0x0000,0x9492,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5aec,0x10a3,0x632d,0x4a8a,0x4a6a,0x31a6,0x1082,0x1904,0x2124,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x10c3,0x18c3,0x18e3,0x10c3,0x10a3,0x10c3,0x10c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0882,0x1082,0x0882,0x0862,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0041,0x0841,0x0041,0x0020,0x0020,0x0841,0x0841,0x0020,0x0021,0x0841,0x0841,0x0841,0x0021,0x0841,0x0841,0x0841,0x0021,0x0821,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0820,0x0000,0x31a6,0x4207,0x2985,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39c6,0x4269,0x2987,0x0000,0x1082,0x10a2,0x10a2,0x0862,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0040,0x0841,0x0841,0x0020,0x0841,0x0021,0x0841,0x0841,0x0021,0x0841,0x0041,0x0841,0x0821,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0021,0x0021,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x1903,0x2124,0x0861,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x10a2,0x10a1,0x1082,0x0861,0x1082,0x0000,0x8430,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x5aeb,0x2945,0x2105,0x39e7,0x0840,0x0000,0x0000,0x18e3,0x2123,0x2104,0x2125,0x10a2,0x18a3,0x1082,0x1082,0x18e3,0x18e4,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1062,0x1082,0x0862,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0882,0x0862,0x0861,0x0861,0x0861,0x0861,0x0861,0x0882,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0041,0x39a6,0x4207,0x2985,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x424a,0x31a7,0x0820,0x10c3,0x18c3,0x1082,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0021,0x0041,0x0841,0x0841,0x0841,0x0841,0x0040,0x0021,0x0041,0x0021,0x0021,0x0041,0x0041,0x0041,0x0841,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0841,0x10a2,0x10c3,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x10a2,0x1082,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x0862,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0841,0x0841,0x0862,0x1082,0x1082,0x10c3,0x0020,0x0861,0x18c3,0x10a2,0x0861,0x18c3,0x0000,0x8c51,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7c10,0x0001,0x31a7,0x4229,0x18c3,0x0000,0x0841,0x18e3,0x2985,0x10a2,0x0000,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1062,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0000,0x0861,0x0841,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3185,0x4208,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4a6a,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a3,0x18c3,0x10a2,0x0861,0x18c3,0x0000,0x94b2,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdf7,0x0000,0x630c,0x5acb,0x0021,0x0000,0x0020,0x18c2,0x2985,0x18c3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x1040,0x1000,0x1820,0x0800,0x1000,0x1060,0x18e0,0x18e0,0x18e1,0x1901,0x2984,0x2924,0x2124,0x2104,0x2944,0x2944,0x2944,0x2965,0x2945,0x31a6,0x31c7,0x31a6,0x39c6,0x3164,0x31a5,0x39c6,0x3185,0x3164,0x3185,0x3185,0x4207,0x39e7,0x39a6,0x39c6,0x39a6,0x39a6,0x41e7,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x4208,0x3a08,0x4208,0x4249,0x4208,0x4a49,0x4a69,0x4208,0x4249,0x4208,0x4228,0x4a69,0x4208,0x4208,0x39e7,0x3185,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4229,0x632c,0x5b0c,0x4a8a,0x4a6a,0x4229,0x3a28,0x4249,0x3a08,0x31c7,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x29a7,0x2986,0x2986,0x29a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x31c7,0x31e8,0x3a08,0x3a08,0x39e8,0x31e8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e7,0x3a28,0x3a08,0x4229,0x4228,0x39e8,0x4249,0x3a08,0x39e8,0x31c7,0x426a,0x4249,0x4249,0x52cb,0x52ab,0x52ab,0x4269,0x4a6a,0x4a8a,0x52cb,0x52cb,0x52ab,0x52cb,0x5aec,0x52cb,0x5aec,0x5b2c,0x5b0c,0x632d,0x634d,0x634d,0x634d,0x6b6e,0x6b8e,0x6b8e,0x7bef,0x9492,0x94b2,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x94b2,0xa4f3,0xad54,0xa534,0xa513,0xad54,0xa513,0x9cf3,0x9cf3,0x9cf3,0xa534,0xa534,0x9cf3,0xa4f3,0xa534,0xad55,0xa534,0xad55,0xa534,0xa514,0xa514,0xad55,0xad75,0xad75,0x9cf3,0x8451,0x73ae,0x6b8d,0x2945,0x0020,0x18e3,0x10a2,0x0861,0x18c3,0x0000,0xa513,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7bcf,0x2125,0x6b6d,0x5acb,0x0841,0x0000,0x0020,0x10c2,0x3185,0x2945,0x10a2,0x840f,0xa514,0xad34,0xad55,0xad95,0xb595,0xad55,0xad55,0xad75,0xad75,0xb596,0xb5b6,0xb5b6,0xc618,0xbdd6,0xb5d6,0xbdf7,0xbe17,0xc617,0xbdf7,0xc638,0xc618,0xc638,0xc638,0xbe17,0xc638,0xc638,0xc658,0xce58,0xc658,0xc658,0xc638,0xc658,0xc658,0xce79,0xc659,0xb638,0xc679,0xce99,0xce99,0xc69a,0xbe59,0xb5f7,0xbe38,0xb618,0xb618,0xb618,0xb5d8,0xb5f9,0xb5f8,0xadb7,0xadb7,0xadd8,0xadd8,0xadd8,0xb5d8,0xb618,0xb5f8,0xadd8,0xadd7,0xadd7,0xadb7,0xadb7,0xadd7,0xadb7,0xb618,0xbe39,0xb618,0xbe39,0xb5f8,0xb5f8,0xb5f8,0xa596,0xa597,0xa597,0xa597,0xb5d8,0xadd7,0xb5d8,0xb5f8,0xadb7,0xa597,0xadb7,0xb5d7,0xb5d8,0xb5f9,0xb5f9,0xb5f8,0xb5d8,0xadd8,0xb5f8,0xb619,0xb5f9,0xbe3a,0xbe39,0xadb7,0xadb7,0xa577,0xa597,0xb5f8,0xadd8,0x73af,0x2923,0x31a6,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x4207,0x10e4,0xc639,0xc67a,0x9d35,0x8cd3,0x7c72,0x7c51,0x7c31,0x7411,0x6bf0,0x6bd0,0x6bb0,0x6b8f,0x638f,0x638f,0x638f,0x638f,0x636e,0x636e,0x636e,0x636e,0x636e,0x636e,0x636e,0x636e,0x638e,0x638e,0x636e,0x638f,0x636e,0x636e,0x7411,0x638f,0x5b6e,0x6baf,0x636e,0x636e,0x638f,0x63af,0x6baf,0x6baf,0x638e,0x638f,0x638f,0x638f,0x636f,0x636f,0x636e,0x5b4e,0x636e,0x638f,0x638f,0x6baf,0x638f,0x636e,0x6b8f,0x638f,0x63af,0x636e,0x63af,0x6baf,0x6baf,0x6bd0,0x73f0,0x7c31,0x73f0,0x7410,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x8472,0x8472,0x8493,0x8cb3,0x8cb3,0x8472,0x7c52,0x8472,0x8472,0xa555,0xdefb,0xe75d,0xe73c,0xe75d,0xe75d,0xe75d,0xef5d,0xe75d,0xe75d,0xef5d,0xef5d,0xef5d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef9e,0xef9e,0xef7e,0xef9e,0xf79e,0xf79e,0xf7df,0xf7be,0xf7be,0xf7be,0xef9e,0xefdf,0xef9e,0xefbe,0x73ae,0x0000,0x2125,0x10a3,0x0861,0x18c3,0x0000,0xad75,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x528a,0x2104,0x0000,0x4a49,0x2945,0x0000,0x0020,0x10a2,0x3186,0x2965,0x0000,0xdefb,0xffff,0xf7ff,0xef9e,0xf79e,0xef7e,0xef7e,0xef7d,0xef7d,0xef9e,0xe75d,0xdedb,0xdf1c,0xdefc,0xdf1c,0xe73c,0xef5d,0xef5d,0xe73c,0xe71c,0xe71c,0xdf1c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd6db,0xd6db,0xd6db,0xd69a,0xce79,0xc659,0xb638,0xbe38,0xce79,0xc679,0xbe59,0xb638,0xb5f8,0xadd7,0xadb6,0xa5b7,0xa597,0xa597,0xa597,0xa5b7,0x9d77,0x9d56,0x9d16,0x9d16,0x9d16,0x9d16,0x9515,0x9514,0x9514,0x94f4,0x8cd4,0x8cb4,0x8cd3,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x84b3,0x84d4,0x8cd5,0x84b4,0x7c73,0x7452,0x7c73,0x7432,0x7c53,0x6c11,0x7432,0x7c73,0x7c73,0x7452,0x7432,0x6bf1,0x63d0,0x73f1,0x7c32,0x7c52,0x7411,0x7411,0x73f1,0x7411,0x73f1,0x7432,0x7411,0x6bd0,0x63b0,0x634f,0x634e,0x5b6f,0x5b4e,0x5b8f,0x4a8a,0x39c6,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4229,0x636e,0x3a69,0x0166,0x0105,0x00c5,0x00c5,0x0084,0x00a5,0x1126,0x1947,0x1126,0x0926,0x1126,0x1105,0x0905,0x1105,0x0905,0x0905,0x0105,0x00e4,0x00c4,0x00e4,0x0084,0x00c4,0x00c4,0x0083,0x00c4,0x0905,0x00e4,0x00a3,0x1105,0x08e5,0x00a4,0x08c5,0x08e5,0x00a5,0x0084,0x00a3,0x0083,0x0083,0x0001,0x0001,0x0043,0x0023,0x0003,0x0023,0x0002,0x0043,0x0002,0x0001,0x0023,0x0001,0x0002,0x0002,0x0000,0x0022,0x0001,0x0002,0x0002,0x0001,0x0002,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0043,0x00a4,0x0084,0x0000,0x0000,0x0000,0x00e4,0x0001,0x0000,0x0000,0x0000,0x0000,0x1125,0x4aab,0x4249,0x4a8a,0x4aab,0x4aab,0x52cb,0x52eb,0x52eb,0x52cb,0x4aab,0x4acb,0x52eb,0x52eb,0x52ec,0x52ec,0x5b2d,0x5b4d,0x530c,0x5b2d,0x5b2d,0x5b2d,0x5b4d,0x5b4d,0x5b4d,0x638e,0x6b8f,0x6baf,0x8451,0x73d0,0x73cf,0x73d0,0x6baf,0x94d4,0xe73c,0xffff,0x6b8e,0x0000,0x2924,0x18a3,0x0861,0x18c3,0x0000,0xbdf7,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0x528a,0x0000,0x52cb,0x634e,0x2104,0x0000,0x0020,0x1082,0x3186,0x3166,0x0000,0xd6db,0xd6db,0x7c30,0x7c30,0x7c10,0x7c30,0x7c30,0x7c10,0x7c10,0x8472,0x6baf,0x00e5,0x31e8,0x3a29,0x4249,0x5b0c,0x73ae,0x7bef,0x7bef,0x73ce,0x6bae,0x6bae,0x634d,0x5aeb,0x5b0b,0x636d,0x636d,0x636d,0x636d,0x5b2c,0x4aeb,0x3249,0x19c7,0x0104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0003,0x0001,0x0000,0x0000,0x0080,0x0080,0x0042,0x2985,0x29c6,0x29c6,0x21a5,0x2185,0x29c6,0x3a07,0x4a6a,0x422a,0x422a,0x4a4a,0x4a4a,0x528a,0x528a,0x4a8a,0x4aaa,0x4a8a,0x5aec,0x52ca,0x528a,0x52aa,0x5b0c,0x632c,0x634c,0x636e,0x636e,0x6b8f,0x6b8f,0x636e,0x6baf,0x6bae,0x636e,0x6b8e,0x6b6e,0x634d,0x5b2c,0x634d,0x636d,0x634d,0x634d,0x634d,0x6b6d,0x6b8e,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x6bae,0x6b8e,0x73af,0x52ab,0x39c6,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39e7,0x2986,0xa534,0xad96,0x94d3,0x7c31,0x6b8f,0x636d,0x634d,0x6bae,0x73ef,0x6b6e,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x5b0d,0x5b0c,0x5b0c,0x5b2d,0x5b2d,0x5b2d,0x5b2c,0x5b2d,0x5b0c,0x530c,0x5b2d,0x5b2d,0x530d,0x5b2d,0x5b2d,0x5b2d,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x632d,0x632d,0x5b2d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5aec,0x5b0d,0x5b0d,0x5b0d,0x5b0d,0x5aec,0x5b0c,0x5b0d,0x5b0d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x5b2d,0x5b2e,0x636e,0x636e,0x636e,0x636e,0x636e,0x638f,0x6b8f,0x6b8f,0x6baf,0x6baf,0x6baf,0x73af,0x6bae,0x6b8e,0x6b8e,0x6bae,0x73ef,0x7c10,0x73ef,0x73ef,0x7c30,0x6baf,0x636e,0x6b8e,0x6baf,0x7c31,0xad76,0xc618,0xc639,0xce7a,0xce79,0xce7a,0xce7a,0xce7a,0xce7a,0xce7a,0xce7a,0xd67a,0xce7a,0xce7a,0xd69a,0xce7a,0xce7a,0xd69a,0xce7a,0xd69a,0xd69a,0xd67a,0xd699,0xd699,0xd699,0xce99,0xce79,0xce79,0xce79,0xce79,0xc638,0xd69a,0x94b2,0x6b4c,0xef7d,0x6b8e,0x0000,0x2944,0x10a2,0x0842,0x18c3,0x0000,0xce59,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc659,0x0842,0x528b,0xad96,0x8452,0x0000,0x0020,0x0020,0x1082,0x3166,0x3186,0x0000,0xd6ba,0x9cf3,0xceba,0xef5d,0xe73c,0xe75d,0xef5d,0xef5d,0xef5d,0xef5d,0xe75d,0xe73c,0xe73c,0xdf1c,0xdf3c,0xdf3c,0xd6fc,0xd71c,0xd71c,0xdf3c,0xdf3c,0xe73c,0xe73c,0xe75d,0xe75d,0xdf3c,0xdf1c,0xd6fb,0xd6db,0xceba,0xc69a,0xc679,0xbe59,0xbe59,0xbe59,0xb618,0xb5f8,0xb5f8,0xb618,0xb5f8,0xadf7,0xadb7,0xadd7,0xadd7,0xadb6,0xa5b7,0xa597,0xa5b6,0xadb7,0xa596,0xa596,0xa596,0xa596,0xa596,0xa596,0xa576,0xa576,0xa576,0xa576,0xa576,0xa576,0x9d56,0x9d76,0x9d55,0x9d76,0xa576,0x9d55,0xa576,0x9d76,0x9d55,0x9d55,0x9d55,0xa596,0xadb7,0xadb7,0xad97,0xadb7,0xadd8,0xadd8,0xa5b7,0x9d76,0x9d55,0x9535,0x9514,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x9514,0x94f4,0x9514,0x9514,0x94f4,0x9515,0x9515,0x94f4,0x9514,0x9515,0x9515,0x9d35,0x636d,0x3144,0x31a6,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x41e7,0x2125,0xb5d7,0xc65a,0xa597,0x94f5,0x7c31,0x73f0,0x6bb0,0x7411,0x8472,0x7c31,0x7c31,0x7411,0x6bf0,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6baf,0x638f,0x63af,0x63af,0x63af,0x63cf,0x63cf,0x5baf,0x63af,0x63b0,0x5b90,0x5b90,0x63b0,0x638f,0x63af,0x638f,0x638f,0x638f,0x638f,0x6390,0x6390,0x6390,0x6390,0x6b90,0x6bb0,0x6390,0x6390,0x6390,0x6b90,0x6390,0x63b0,0x63b0,0x63d0,0x63d0,0x63f1,0x6bd0,0x6bb0,0x6bb0,0x6bb0,0x6bb0,0x6bd0,0x63d0,0x63d0,0x63d0,0x63d1,0x6bf1,0x6c11,0x7432,0x6c32,0x7432,0x6c12,0x7432,0x7c31,0x7c52,0x8452,0x8473,0x8493,0x8cb3,0x8cb4,0x8493,0x7c72,0x84b3,0x7c52,0x6bd0,0x6bf0,0x7411,0x8493,0xb5f8,0xd6db,0xdf1c,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xef7d,0xe77d,0xe77d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7e,0xef9e,0xef7e,0xef7e,0xef7e,0xef7d,0xef7e,0xe73d,0xf7bf,0xdf1c,0x4207,0xe71c,0x73ae,0x0000,0x2944,0x10a2,0x0841,0x18c3,0x0000,0xd69a,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8410,0x2925,0x3166,0x10a3,0x528a,0x2966,0x0000,0x0020,0x1082,0x3145,0x3186,0x0000,0xd69a,0xad55,0xefbe,0xffff,0xf7bf,0xf7df,0xf7df,0xf7df,0xefbf,0xefbf,0xef9e,0xdf5d,0xdf1c,0xd71c,0xd71c,0xd6fc,0xcefb,0xcefb,0xcefb,0xd6fc,0xd6fb,0xcedb,0xd6bb,0xcedb,0xcedb,0xcedb,0xc6ba,0xc69a,0xc679,0xbe79,0xbe59,0xbe59,0xb638,0xb618,0xb618,0xadd7,0xadb7,0xadf8,0xb618,0xadd7,0xa5b7,0xa5b7,0xa597,0xa596,0xa596,0xa596,0xa576,0xa576,0x9d56,0xa576,0xa556,0xa556,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0x9d55,0x9d55,0x9535,0x9535,0x9535,0x9555,0x9d55,0x9515,0x9515,0x9535,0x9535,0x9515,0x9515,0x8cf4,0x9515,0x9d55,0xa576,0xa576,0xa576,0x9d36,0x9515,0x8cf4,0x8cd4,0x84d3,0x8493,0x84b3,0x84b3,0x84b3,0x84b4,0x84b4,0x84b4,0x84b3,0x8cb3,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x8cd4,0x84b3,0x8493,0x84b4,0x5b2d,0x3185,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39e7,0x2965,0xa576,0xb618,0x9535,0x8494,0x6bd1,0x63b0,0x5b8f,0x638f,0x7411,0x6bf1,0x6bf1,0x6bf1,0x63d0,0x6bb0,0x6bb0,0x6bf0,0x63b0,0x638f,0x6bb0,0x638f,0x63b0,0x638f,0x636f,0x6bd0,0x6bd0,0x638f,0x63b0,0x63af,0x63af,0x638f,0x63af,0x63af,0x638f,0x63b0,0x6390,0x5b8f,0x63b0,0x6bf0,0x63af,0x63af,0x63af,0x638f,0x63af,0x63af,0x638f,0x5b8e,0x5b6e,0x63af,0x638f,0x5b6e,0x63af,0x638e,0x638f,0x638f,0x5b6e,0x63af,0x63af,0x63af,0x6bd0,0x6bd0,0x6bd0,0x6bf0,0x7411,0x7411,0x7410,0x7411,0x7431,0x7411,0x7411,0x7431,0x7432,0x7c53,0x7c73,0x7c52,0x7c52,0x7c53,0x7c52,0x7c32,0x6bd0,0x7412,0x7432,0x5b8f,0x5b8f,0x63b0,0x6bd1,0x9515,0xbe79,0xc69a,0xceba,0xcedb,0xcedb,0xd6db,0xcedb,0xceda,0xcefb,0xcedb,0xcedb,0xd6fb,0xd6fb,0xd6fb,0xcefb,0xcefb,0xd6fb,0xd6fb,0xd6fb,0xcefb,0xd6fb,0xd6db,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6db,0xd6fb,0xd6fc,0xcebb,0xdf3d,0xc69a,0x630b,0xe73c,0x6b6d,0x0000,0x2945,0x10c2,0x0861,0x18c3,0x0000,0xd69a,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x6b6e,0x0000,0x4208,0x73ae,0x634d,0x2946,0x0000,0x0020,0x1082,0x2945,0x3186,0x0000,0xd6ba,0x9d14,0xceba,0xefdf,0xdf5d,0xe77e,0xe75d,0xdf5d,0xdf3d,0xdf1c,0xdf1c,0xd6fc,0xcebb,0xcebb,0xc69b,0xc69a,0xc67a,0xc69a,0xc69a,0xc67a,0xc67a,0xbe79,0xbe79,0xbe79,0xbe79,0xbe59,0xb638,0xb638,0xb618,0xb618,0xb5f8,0xadd8,0xadd8,0xadd7,0xadb7,0xa597,0xa5b7,0xadd7,0xadd7,0xa5b7,0xa596,0x9d76,0x9d56,0x9d56,0x9d76,0x9d55,0x9d55,0x9d35,0x9515,0x9d35,0x9d55,0x9d35,0x9d35,0x9d55,0x9d56,0x9d35,0x9535,0x9d35,0x9535,0x9535,0x9515,0x9515,0x9515,0x9515,0x9515,0x94f5,0x8cf5,0x94f5,0x8cf4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cf4,0x94f4,0x8cf4,0x8cd4,0x84b3,0x84b3,0x84b3,0x8493,0x8493,0x8493,0x7c72,0x7c92,0x84b3,0x84b4,0x84b3,0x84b3,0x8cb3,0x8cb3,0x8492,0x84b3,0x8cd4,0x8cb3,0x8cb3,0x84d3,0x8cd3,0x8cd3,0x8cd3,0x8cd4,0x634d,0x3185,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2945,0x2944,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2944,0x2944,0x2124,0x2124,0x2944,0x2944,0x2945,0x2944,0x2124,0x2124,0x2124,0x2124,0x2965,0x41e7,0x2145,0xad96,0xbe39,0xa576,0x8cd4,0x6bf0,0x63b0,0x638f,0x5b8f,0x638f,0x5b8f,0x5b6e,0x5b8f,0x638f,0x638f,0x63b0,0x6b8f,0x638f,0x638f,0x638f,0x638f,0x638f,0x636f,0x636f,0x6b8f,0x6b90,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x638f,0x6baf,0x6baf,0x63af,0x6bd0,0x638f,0x63af,0x63d0,0x6bd0,0x63af,0x63af,0x6baf,0x63af,0x63cf,0x63cf,0x63cf,0x63af,0x63cf,0x6bf0,0x6bcf,0x6baf,0x73d0,0x6baf,0x6baf,0x6bcf,0x63af,0x6bf0,0x6c10,0x6bf0,0x6bf0,0x73f0,0x6bd0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7c11,0x7c11,0x7411,0x7411,0x7432,0x7432,0x7431,0x7431,0x7431,0x7432,0x7452,0x7411,0x7411,0x7452,0x7432,0x6390,0x638f,0x6bd0,0x6bd1,0x8cb3,0xbe18,0xce9a,0xcebb,0xd6db,0xd6bb,0xd6db,0xd6fc,0xd6db,0xd6db,0xd6fc,0xd6db,0xd6db,0xd6fc,0xdefc,0xd6fc,0xd6fc,0xdf1c,0xdf1b,0xdf1b,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xd71c,0xdf1c,0xd6bb,0xe75d,0xc65a,0x6b2c,0xef5d,0x6b6d,0x0000,0x2945,0x10a2,0x0861,0x1082,0x0000,0xd6ba,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc618,0x0000,0x4249,0x9cf4,0xad76,0x8431,0x2925,0x0000,0x0841,0x0861,0x2124,0x2965,0x0000,0xd6ba,0x9492,0xb5f7,0xf7df,0xdf3d,0xdf5d,0xdf3d,0xdf3d,0xdf3d,0xd73c,0xd71c,0xd6fc,0xcefb,0xcebb,0xc69a,0xc6bb,0xc69a,0xbe5a,0xc67a,0xbe5a,0xbe79,0xc67a,0xbe79,0xbe59,0xbe59,0xbe39,0xb639,0xb618,0xb618,0xadf8,0xadd8,0xadd8,0xadd8,0xa5b7,0xa597,0xadb7,0xadd8,0xadb7,0xa596,0xa596,0xa596,0x9d76,0x9d76,0xa576,0x9d56,0x9d76,0x9d76,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d55,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0x9535,0x9535,0x9535,0x9535,0x9515,0x9515,0x94f5,0x94f5,0x8cd5,0x8cf5,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x84b3,0x8cb3,0x8493,0x8493,0x8cb3,0x8cb3,0x8493,0x8493,0x8493,0x8492,0x8493,0x8cb3,0x84b3,0x8493,0x8493,0x84b3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cd3,0x9514,0x634d,0x3165,0x31a6,0x2104,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c2,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39e7,0x2145,0xadb6,0xc659,0xa576,0x8cd4,0x6bd0,0x63b0,0x638f,0x5b4e,0x5b2e,0x5b2e,0x5b4e,0x5b2d,0x5b0d,0x530d,0x530d,0x5b2d,0x530c,0x530d,0x532d,0x532d,0x532d,0x532d,0x532e,0x534e,0x532e,0x534e,0x534e,0x532e,0x530e,0x532e,0x532e,0x532e,0x530e,0x530d,0x530e,0x5b4e,0x532d,0x52ee,0x530e,0x532e,0x530e,0x5b4e,0x532e,0x5b2e,0x532e,0x532e,0x530e,0x530e,0x532e,0x5b4f,0x532e,0x532e,0x532e,0x530e,0x5b4f,0x5b2e,0x532e,0x532e,0x530e,0x532e,0x5b4f,0x532e,0x534f,0x534f,0x5b4f,0x5b90,0x5b6f,0x5b6f,0x5b6f,0x6390,0x6b90,0x6bb0,0x63af,0x638f,0x6bb0,0x6bd0,0x6bd0,0x6bd0,0x6bd0,0x6bd0,0x638f,0x5b6e,0x5b6e,0x638f,0x6bd0,0x8472,0xbdf8,0xcebb,0xd6bb,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6dc,0xd6dc,0xd6db,0xd6db,0xdefc,0xdefc,0xd6fb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1b,0xdf1b,0xdefb,0xdf1b,0xdf1c,0xdf1c,0xdefb,0xdefb,0xd69a,0xe75d,0xc659,0x7bae,0xef7d,0x632c,0x0000,0x2945,0x1082,0x0862,0x0040,0x0000,0xdeda,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8431,0x0000,0x4a6a,0x3a08,0x18e3,0x4a8a,0x4208,0x0000,0x0000,0x0840,0x2103,0x2965,0x0000,0xd6ba,0x94b2,0xa575,0xf7ff,0xdf5d,0xdf5d,0xdf5d,0xdf5d,0xdf3d,0xdf3d,0xd71c,0xd6fc,0xd6fc,0xcedb,0xcebb,0xcebb,0xc69a,0xc67a,0xc67a,0xc67a,0xc67a,0xc65a,0xbe59,0xbe5a,0xbe5a,0xbe59,0xb619,0xb5f8,0xb618,0xadf8,0xadf8,0xadd8,0xadd7,0xadd8,0xadb7,0xadd7,0xa596,0xadb7,0xadb7,0xa596,0x9d76,0xa596,0xa596,0xa576,0x9d76,0x9d56,0x9d76,0x9d76,0x9d55,0x9d55,0x9d35,0x9d55,0x9d55,0x9d35,0x9d55,0x9d55,0x9535,0x9d35,0x9d55,0x9d56,0x9d55,0x9535,0x9535,0x9515,0x8cf4,0x94f4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x8cd4,0x8cd4,0x8cf4,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8cb3,0x84b3,0x8493,0x84b3,0x84b3,0x84b3,0x8cb3,0x84b3,0x84b3,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cd4,0x8cf4,0x634d,0x3185,0x3186,0x2104,0x2124,0x2124,0x2124,0x1081,0x8410,0xb5b6,0xbdd7,0xbdd7,0xbdd6,0xbdd7,0xbdd7,0xb5b6,0xbdd6,0xbdd6,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0x73ae,0x0000,0x2944,0x2124,0x10a2,0x4a48,0xa514,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xb5b6,0xb5b6,0xb5b6,0xbdd7,0xbdd6,0xbdd7,0xbdd7,0xbdf7,0xa534,0x39e7,0x10a2,0x2944,0x2124,0x0861,0x7bcf,0xb5b6,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xb5d6,0xbdd6,0xbdd6,0xbdd6,0xb5b6,0xbdd6,0xbdd7,0xbdd7,0x8410,0x0000,0x2124,0x2124,0x2124,0x2124,0x2965,0x41e7,0x1925,0xb5d7,0xce9a,0xa575,0x8cd4,0x6bd0,0x638f,0x5b6f,0x5b4e,0x5b4e,0x5b2e,0x5b2e,0x5b2e,0x5b2e,0x5b2e,0x52ed,0x530d,0x5b2e,0x5b2e,0x530d,0x530d,0x4b0d,0x530d,0x4aed,0x530d,0x530d,0x4aed,0x4aed,0x530e,0x530e,0x530e,0x530e,0x530d,0x4acc,0x52ed,0x532e,0x4aac,0x52ed,0x532e,0x532e,0x4aed,0x52ed,0x530d,0x530d,0x5b2e,0x4acd,0x4aac,0x5b2e,0x4aac,0x4acd,0x530e,0x52ed,0x52ed,0x52ed,0x52ed,0x4acd,0x52ed,0x530d,0x532e,0x5b2e,0x530d,0x4aed,0x52ed,0x52ed,0x530d,0x532d,0x532e,0x530d,0x5b6e,0x638f,0x5b2e,0x52ed,0x5b2e,0x5b2e,0x636f,0x638f,0x636f,0x636f,0x638f,0x5b4e,0x5b4e,0x5b6e,0x5b6f,0x636f,0x6390,0x6bb0,0x7c11,0xad97,0xce9a,0xd6da,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdf1c,0xd71c,0xd71b,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdefc,0xd6fc,0xd6fb,0xceba,0xe75d,0xbe19,0x8c50,0xe77e,0x52cc,0x0000,0x2945,0x0882,0x1082,0x0000,0x2924,0xdedb,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x634d,0x1905,0x4249,0x73cf,0x52cb,0x4249,0x4208,0x0000,0x0000,0x0841,0x18c3,0x2945,0x0000,0xd69a,0x94d3,0x9cf3,0xf7df,0xd73d,0xdf5d,0xdf5d,0xdf5d,0xdf5d,0xdf3c,0xdf3c,0xd71c,0xd71c,0xcefb,0xcebb,0xc69a,0xc67a,0xbe79,0xbe59,0xc67a,0xc67a,0xbe5a,0xbe59,0xbe59,0xbe39,0xbe39,0xb618,0xb5f8,0xadf8,0xadd7,0xadd8,0xadd7,0xb5f8,0xb5f8,0xadd8,0xa597,0xa5b7,0xb5f8,0xb618,0xadd7,0xa596,0xa596,0xa576,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d55,0x9d35,0x9d55,0x9d55,0x9d55,0x9d76,0x9d76,0x9535,0x9535,0x9d56,0x9d56,0x9d56,0x9d56,0x9515,0x9515,0x9515,0x9515,0x94f4,0x94f5,0x94f4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x8cd4,0x8cb4,0x8cd4,0x8cd4,0x8cd4,0x84b3,0x8493,0x8493,0x8493,0x8cb3,0x84b3,0x84b3,0x84b3,0x8cb3,0x8cd4,0x8493,0x84b3,0x84b3,0x84b3,0x8493,0x8c93,0x8cb3,0x8cb4,0x8cb3,0x8cd4,0x632d,0x3185,0x3186,0x2124,0x2124,0x2965,0x0000,0x6b6d,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xe71c,0x52aa,0x0000,0x2965,0x0000,0xad55,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x3186,0x0000,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x632c,0x0000,0x2965,0x2124,0x2124,0x3186,0x4228,0x2166,0xb5b7,0xce9a,0xa575,0x8cd4,0x6bd0,0x636f,0x5b6f,0x5b4e,0x5b2e,0x5b2e,0x532e,0x5b6f,0x638f,0x638f,0x5aed,0x5b4e,0x6bf1,0x6bb0,0x52ed,0x4aed,0x532e,0x426b,0x3a2a,0x3a2a,0x3a09,0x3209,0x29a7,0x31c8,0x4aab,0x3209,0x4aab,0x31e8,0x3a4a,0x3a4a,0x31e9,0x428b,0x3a4a,0x29a8,0x3a4a,0x52cc,0x426a,0x3a29,0x530d,0x29c8,0x3a4a,0x428b,0x31e8,0x3a4a,0x3a4a,0x29a7,0x52ec,0x428b,0x3a09,0x428b,0x3209,0x52ed,0x3a2a,0x29a7,0x52cc,0x426b,0x31e8,0x31c8,0x3a4a,0x3209,0x31e8,0x29c8,0x428b,0x3a29,0x426a,0x426a,0x52ec,0x29c8,0x4acc,0x5b6f,0x5b4e,0x5b4e,0x5b4e,0x636f,0x5b6f,0x5b4e,0x5b4e,0x5b4e,0x5b4e,0x636f,0x63b0,0x6bf0,0x9d35,0xce9a,0xd6da,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fc,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdf1c,0xdefc,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xd6fc,0xd71c,0xdf1c,0xdf1c,0xdf1c,0xdefc,0xd6fc,0xd6fb,0xceba,0xe75e,0xb5f8,0xa4f3,0xdf3d,0x426a,0x0000,0x2145,0x1083,0x1082,0x0000,0x39e7,0xdefb,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x4249,0x0000,0x94d3,0xd6bb,0x9cf4,0x4a8a,0x4208,0x0000,0x0020,0x0820,0x10a2,0x2124,0x0000,0xbdf8,0x94d3,0x94b2,0xf7bf,0xcefc,0xdf3c,0xdf5d,0xdf3d,0xd71c,0xd71c,0xd73c,0xd71c,0xcefb,0xcebb,0xc69a,0xc69a,0xc69a,0xbe79,0xbe59,0xbe59,0xc67a,0xbe5a,0xbe59,0xbe39,0xbe39,0xb639,0xb619,0xb5f8,0xb5f8,0xb618,0xb5f8,0xb5f8,0xbe39,0xb619,0xb5f8,0xa5b7,0xadd7,0xb618,0xadf8,0xa5b7,0xa596,0x9d76,0x9d56,0x9d76,0x9d56,0x9d56,0x9d35,0x9535,0x9d56,0x9d35,0x9d35,0x9d56,0x9d76,0x9d35,0x9535,0x9d35,0x9d55,0x9d56,0x9d56,0x9d76,0x9d35,0x9535,0x9515,0x9535,0x9515,0x94f4,0x94f4,0x8cf4,0x94f4,0x8cf4,0x8cd4,0x84b3,0x84b3,0x8cb4,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x8cd3,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x8cd3,0x84b3,0x8493,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb4,0x94f4,0x634d,0x3165,0x3186,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3186,0x2124,0x2124,0x2124,0x41e7,0x2966,0xb5d7,0xd6fb,0xadb6,0x84b3,0x638f,0x634e,0x5b2e,0x532d,0x530d,0x530d,0x4b0d,0x532e,0x5b0e,0x5aed,0x5aad,0x5aed,0x5b4e,0x5b4e,0x52ed,0x4aed,0x532d,0x3a49,0x3a08,0x422a,0x1925,0x31c7,0x31c8,0x31a7,0x31a7,0x31e8,0x2166,0x31e8,0x29a7,0x2166,0x2166,0x52ec,0x31e8,0x29a7,0x2166,0x3a29,0x426a,0x2146,0x2987,0x10e4,0x31e8,0x52cb,0x08a3,0x3a4a,0x424a,0x08c4,0x426a,0x31e8,0x31c8,0x31e8,0x31c8,0x5b0d,0x29a7,0x31c8,0x2987,0x31c8,0x424a,0x2987,0x3a09,0x2987,0x2166,0x29a7,0x3a09,0x3a09,0x0001,0x424a,0x5b2e,0x2167,0x52cc,0x636f,0x5b2e,0x5b4e,0x5b4e,0x5b4e,0x5b4e,0x5b2e,0x5b2e,0x5b4e,0x5b4e,0x636f,0x6bd0,0x6bd0,0x8cb3,0xc659,0xd6db,0xd6db,0xd6fb,0xd6fb,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6fb,0xd6fc,0xd6fc,0xd6fc,0xd6fb,0xd6fb,0xd6fb,0xd6fc,0xd6fc,0xdf1b,0xdf1c,0xd6fb,0xdf1b,0xd6fb,0xd6dc,0xd6fb,0xd6da,0xe75d,0xadb7,0xb595,0xdf1d,0x29c8,0x0000,0x2124,0x1082,0x1082,0x0000,0x4a49,0xe71c,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdf7,0x0000,0x4a8a,0x4249,0x0000,0x0000,0x31a7,0x4229,0x0000,0x0000,0x0020,0x1082,0x2104,0x0000,0xad76,0x9d34,0x8c71,0xf7bf,0xd71c,0xdf3c,0xd73c,0xd73d,0xd71c,0xd71c,0xd6fc,0xcefc,0xcedb,0xc67a,0xbe7a,0xc69a,0xbe79,0xbe79,0xbe59,0xbe39,0xbe5a,0xbe39,0xbe19,0xb5f9,0xadd8,0xadb7,0xa5b7,0xa5b7,0xa5b7,0xadd8,0xadd8,0xadb7,0xa597,0xad97,0xad97,0xa597,0xadd7,0xadf8,0xb5f8,0xa597,0x9d75,0x9d76,0x9d56,0x9d76,0x9d76,0x9d76,0x9d55,0x9d35,0x9d35,0x9d55,0x9d55,0x9d55,0x9d56,0x9d55,0x9d35,0x9d55,0x9d55,0x9d55,0x9d56,0x9d56,0x9d55,0x9515,0x9535,0x9515,0x8d15,0x9515,0x8cd4,0x8cf4,0x8cf4,0x8cb3,0x84b3,0x8493,0x84b3,0x8cd4,0x8cd4,0x8cd4,0x8cf4,0x8cd4,0x84b3,0x84b3,0x8cb3,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x8cd3,0x84b3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x84b3,0x8cd3,0x8cd4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x8cf4,0x634d,0x3185,0x3186,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2104,0x39e7,0x2986,0xb5d7,0xdefb,0xb5d7,0x8493,0x5b6f,0x5b2d,0x532d,0x530d,0x530d,0x4acd,0x4b0d,0x4aec,0x52cc,0x52cc,0x52ac,0x52cd,0x4acc,0x4aac,0x4acc,0x4aec,0x4acc,0x428b,0x3a4a,0x4a8b,0x426a,0x426a,0x4aab,0x52cc,0x424a,0x4acc,0x4aab,0x426a,0x428a,0x428b,0x428b,0x3a09,0x424a,0x4acc,0x4aab,0x424a,0x4a8b,0x428b,0x426a,0x428b,0x3a49,0x3a29,0x428b,0x3a2a,0x424a,0x428b,0x3a29,0x428b,0x426a,0x3a4a,0x428a,0x4acc,0x428b,0x4aab,0x4aab,0x428b,0x4acc,0x4a8b,0x426b,0x4aab,0x4aab,0x4aab,0x4acb,0x530d,0x4acb,0x428b,0x428b,0x4aac,0x4acd,0x5b2e,0x5b2e,0x530d,0x532e,0x5b2e,0x5b2e,0x530d,0x5b2e,0x532e,0x5b4e,0x5b4f,0x638f,0x6bb0,0x7431,0xadb7,0xceba,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdefb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdefb,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6fc,0xd6db,0xd6bb,0xe73d,0xa556,0xc638,0xdf3d,0x1126,0x0800,0x2124,0x0882,0x10a2,0x0000,0x5aca,0xe73c,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x0022,0x2125,0x4229,0x5b0c,0x2986,0x31c7,0x4a69,0x0020,0x0000,0x0020,0x1061,0x2124,0x0000,0x9cf3,0xad96,0x8c91,0xf7be,0xd6fc,0xd73c,0xd71c,0xd71c,0xd6fc,0xd71b,0xd71c,0xcedb,0xc6ba,0xc69a,0xc69a,0xc69a,0xc679,0xc67a,0xbe59,0xbe39,0xc65a,0xbe79,0xbe3a,0xb618,0xb619,0xb618,0xb618,0xb5f8,0xb5f8,0xb5f8,0xadd8,0xb5f8,0xadd8,0xb5d8,0xadd8,0xadd7,0xb618,0xb618,0xb639,0xadd8,0xa596,0xa597,0xa597,0xa597,0xa576,0xa576,0xa596,0x9d76,0x9d55,0x9d55,0x9d76,0x9d55,0x9d55,0x9d76,0x9d55,0x9d55,0x9d55,0x9d55,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0x9535,0x94f4,0x9515,0x8cf4,0x8cd4,0x8cd4,0x84b3,0x84b3,0x8cd4,0x8cd3,0x8cf4,0x8cf4,0x94f4,0x94f5,0x8cf4,0x8cf4,0x94f4,0x94f4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x94f4,0x8cf4,0x94f4,0x9515,0x9515,0x9515,0x94f5,0x9d15,0x9515,0x9515,0x9d35,0x636d,0x3165,0x31a6,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdedb,0xb5b6,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xbdd7,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bce,0xef7d,0xffff,0xffdf,0xffff,0xffff,0xdefb,0xad75,0x9cd3,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2124,0x41e7,0x1904,0xc659,0xf7de,0xcebb,0x8d15,0x63d0,0x636f,0x5b4e,0x5b4e,0x5b2e,0x530d,0x532e,0x532e,0x530e,0x532e,0x530e,0x530e,0x532e,0x530d,0x52ed,0x4b0d,0x4acc,0x4acc,0x4acc,0x4aed,0x530e,0x4aed,0x4aed,0x4aed,0x52ed,0x52ed,0x530d,0x52ed,0x530d,0x530e,0x530e,0x52ed,0x530d,0x530d,0x530e,0x532e,0x532e,0x530d,0x530e,0x530e,0x530d,0x530d,0x532e,0x530e,0x530d,0x530d,0x530e,0x530e,0x532e,0x532e,0x532e,0x532e,0x532e,0x530e,0x532e,0x5b4e,0x532e,0x5b2e,0x5b2e,0x5b2e,0x5b4e,0x5b4e,0x5b4e,0x5b2e,0x5b6f,0x636f,0x5b4f,0x5b6f,0x5b4f,0x5b6f,0x5b6f,0x5b4e,0x5b2e,0x5b4f,0x5b6f,0x5b6f,0x638f,0x5b6f,0x5b6f,0x5b8f,0x6bb0,0x6bf1,0x6c31,0xa596,0xe75d,0xefbe,0xef9e,0xef9e,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xef7d,0xef7d,0xef9d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe73c,0xdf3c,0xef9f,0x9d15,0xce58,0xdf1c,0x00e5,0x1820,0x2104,0x0882,0x10a2,0x0000,0x6b4d,0xef5d,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9492,0x0000,0x8451,0xc659,0xa535,0x39e8,0x39c7,0x52aa,0x0020,0x0000,0x0020,0x0861,0x1904,0x0000,0x8410,0xbdf8,0x9492,0xf7ff,0xe7be,0xe79e,0xe79f,0xe7bf,0xefbf,0xefbf,0xdfbe,0xe77e,0xdf5e,0xcf7d,0xd75d,0xd73d,0xd71d,0xd71c,0xcf1b,0xcefc,0xd71b,0xcefc,0xced9,0xc69b,0xc69b,0xbe7b,0xbe9a,0xbe79,0xb639,0xb65a,0xbe3a,0xbe3a,0xbe9b,0xc6bb,0xc65a,0xc61a,0xc69b,0xbebb,0xc65b,0xbdf9,0xae18,0xb638,0xbdd8,0xbdb9,0xbd98,0xb5b8,0xbdd8,0xadf8,0x9df7,0xa5f8,0xb598,0xb5b8,0xadd7,0xadd8,0xad98,0xa598,0xa598,0xa597,0xa597,0xa598,0xa577,0xa578,0x9d97,0x9d96,0x9d55,0x9d35,0x8d35,0x8534,0x8cd4,0x8cd4,0x8cf5,0x8cf5,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cb4,0x8493,0x8493,0x8493,0x8473,0x8493,0x8493,0x8493,0x8493,0x7c73,0x7c52,0x8473,0x8493,0x8493,0x7c73,0x8473,0x7c73,0x8473,0x8473,0x7c52,0x8493,0x5b0c,0x39a5,0x31a6,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x630c,0xdefb,0xffff,0xffdf,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0xd69a,0x8430,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xdedb,0xe73c,0xdefb,0x4a49,0xdefb,0xffff,0xffdf,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2104,0x39e7,0x31c7,0x94f4,0xbe39,0x94f4,0x636e,0x4acb,0x52cc,0x52cc,0x4a8b,0x426b,0x428b,0x426a,0x426a,0x426a,0x4a8b,0x4a8b,0x426a,0x424a,0x426a,0x424a,0x426a,0x5b2d,0x636e,0x5b4e,0x4aac,0x3a29,0x426a,0x428b,0x424a,0x426a,0x424a,0x3a29,0x3a4a,0x3a2a,0x3a09,0x3a09,0x3a29,0x3a2a,0x424a,0x426a,0x3209,0x3a4a,0x3a29,0x3209,0x3209,0x426a,0x3a4a,0x3a09,0x3a2a,0x3a09,0x3a4a,0x426a,0x29a7,0x426a,0x4aab,0x3a29,0x3a29,0x3a49,0x428a,0x31e8,0x31e8,0x31e8,0x31e8,0x3a09,0x3208,0x31c8,0x3208,0x3208,0x31c8,0x29c7,0x3a09,0x424a,0x31c8,0x31e8,0x3a29,0x3a29,0x3a09,0x3a2a,0x3a29,0x3a09,0x3a29,0x424a,0x3a49,0x4a8b,0x52cb,0x424a,0x426a,0x428a,0x5b0c,0x7bf0,0xa555,0x9d15,0xa554,0xbe38,0xbe38,0xbe39,0xbe39,0xc659,0xc65a,0xc639,0xc639,0xc659,0xc659,0xc659,0xc659,0xc659,0xc659,0xc67a,0xce9a,0xce7a,0xce9a,0xce9a,0xce9a,0xceba,0xce9a,0xce9a,0xd6fb,0xe77e,0x94b4,0xce59,0xd6dc,0x0064,0x1080,0x2104,0x0862,0x18c2,0x0000,0x7bce,0x8cb8,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x2986,0x4a8a,0x31c8,0x0000,0x2104,0x0082,0x2125,0x52ab,0x0881,0x0000,0x0020,0x0861,0x1904,0x0000,0x6b6e,0xd6bb,0x73ef,0xb5f8,0xb5b7,0xad76,0xa5b7,0x9d76,0x9d95,0xa596,0x9d15,0x8535,0x9515,0xa494,0x9494,0x8494,0x8474,0x7c12,0x7b90,0x6b70,0x6bd0,0x6b91,0x6b8e,0x6330,0x5b2e,0x5b2c,0x5b2c,0x532b,0x52eb,0x530d,0x52ec,0x530d,0x4b2c,0x4b0b,0x4acb,0x4a8b,0x428a,0x42ea,0x52ac,0x4a4a,0x3289,0x3aa9,0x3a29,0x3a29,0x424a,0x3249,0x3a29,0x4209,0x3208,0x39c9,0x41a8,0x3208,0x31e8,0x39e8,0x31a8,0x31c8,0x29e7,0x29a7,0x29a6,0x31c6,0x2986,0x2165,0x2966,0x2946,0x2945,0x2145,0x1924,0x1925,0x1904,0x1904,0x2105,0x1904,0x18e4,0x1904,0x18e3,0x18c3,0x18e3,0x10e3,0x10a3,0x10a3,0x10a3,0x1083,0x10a3,0x0882,0x1083,0x10a3,0x10c3,0x10a3,0x0883,0x0882,0x0862,0x0882,0x0882,0x0882,0x0862,0x0062,0x0062,0x0042,0x0062,0x0041,0x0001,0x39a6,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x840f,0xe71b,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0xef5d,0xffff,0xb596,0x5aeb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x7bcf,0xe71c,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x29a7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x18e3,0x18c3,0x0861,0x0000,0x0820,0x0840,0x0020,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2986,0x1946,0x1947,0x2147,0x2967,0x2987,0x2987,0x2967,0x2967,0x2967,0x2987,0x2986,0x2986,0x2987,0x2987,0x31a7,0x31a7,0x31a7,0x31c8,0x31c7,0x31a7,0x31c7,0x31c7,0x39e8,0x4249,0x0000,0xd6ba,0xce7a,0x0000,0x18e1,0x2104,0x0862,0x18c3,0x0000,0x8430,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7a,0x2987,0x1904,0x7bf0,0x94d3,0x52cb,0x1104,0x3186,0x52ab,0x0861,0x0000,0x0020,0x0841,0x2104,0x0000,0x52ab,0xdf3c,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x4804,0x4003,0x3000,0x4800,0x3000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x00e3,0x1924,0x0000,0x0000,0x0000,0x0000,0x19a3,0x09c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8430,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x8410,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2124,0x39c6,0x4a69,0x4a69,0x18a2,0x10c2,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0021,0x0020,0x0020,0x0020,0x0020,0x0021,0x0041,0x0041,0x0021,0x0020,0x0041,0x0041,0x0021,0x0020,0x0041,0x0020,0x0021,0x0841,0x0841,0x0021,0x0841,0x0020,0x0000,0x0841,0x0841,0x0841,0x1082,0x18c2,0x2924,0x2104,0x31a6,0x4a6a,0x31e8,0x31e8,0x3a08,0x39e8,0x31e8,0x31e8,0x31e7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c8,0x31c7,0x31a7,0x31a7,0x2986,0x2986,0x3186,0x2986,0x3186,0x3166,0x2924,0x0000,0xd6ba,0xbdf8,0x0000,0x2123,0x18e3,0x0862,0x18e3,0x0000,0x94b2,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x0000,0x6b6e,0x9d14,0x94b3,0x4a6a,0x0062,0x39c7,0x5acb,0x0861,0x0000,0x0020,0x0841,0x2124,0x0000,0x4a69,0xe71c,0x5acb,0x0000,0x2144,0x0000,0x5a09,0xabf2,0x722b,0x61c8,0x4185,0x40e3,0x7146,0xa1ea,0x89a7,0x7227,0x6287,0x6a67,0x7966,0x6265,0x6328,0x39a4,0x0001,0x6367,0x73c8,0x6ba7,0x6386,0x6387,0x4ae5,0x42c5,0x4349,0x3309,0x2aa7,0x2287,0x2ac8,0x2b09,0x226a,0x1a0a,0x1a68,0x2269,0x1925,0x2b0c,0x2248,0x3289,0x22ca,0x0800,0x2206,0x3b8b,0x2184,0x2ae7,0x3baa,0x7389,0x6ba6,0x5305,0x52c5,0x4a46,0x4a66,0x52a4,0x5b05,0x73a9,0x4a45,0x4163,0x2923,0x2903,0x5926,0x50e5,0x30c3,0x20e3,0x28a3,0x30c4,0x3947,0x18c3,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0862,0x0862,0x0841,0x0861,0x0862,0x0841,0x0862,0x0862,0x0862,0x0841,0x0861,0x0862,0x0041,0x0841,0x0862,0x0882,0x0862,0x0862,0x0861,0x1082,0x0000,0x39c6,0x4208,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8430,0xef5c,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc618,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xe73c,0x7bef,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xce79,0x73ae,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3186,0x2124,0x2124,0x2124,0x39c6,0x4a69,0x4249,0x2103,0x0861,0x1082,0x18c3,0x1082,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0021,0x0841,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0021,0x0020,0x0020,0x0000,0x0841,0x2924,0x2104,0x0860,0x4a29,0x5b0c,0x3a08,0x3a29,0x3a08,0x3186,0x4229,0x39c7,0x3a08,0x3a29,0x31c7,0x4229,0x4228,0x4229,0x3a08,0x31e8,0x4208,0x39e8,0x3186,0x4228,0x31a6,0x39c7,0x3a07,0x2965,0x4208,0x39e7,0x0000,0xdedb,0xb5b7,0x0000,0x2123,0x18e3,0x0862,0x18e3,0x0000,0xa513,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c51,0x2926,0x4a6a,0x0000,0x0000,0x0820,0x18a2,0x2104,0x4a6a,0x18c2,0x0000,0x0020,0x0841,0x18e4,0x0000,0x39c7,0xe71c,0x5aeb,0x0000,0x0903,0x1862,0x8aee,0x7aac,0x2001,0x4986,0x5146,0x2842,0x7146,0xa1a8,0x68c5,0x3123,0x2964,0x30e2,0x7269,0x6a88,0x6b49,0x736a,0x0000,0x7c09,0x52c5,0x4aa5,0x5b06,0x4ac3,0x4ae8,0x534b,0x19a3,0x1905,0x1084,0x2185,0x3a68,0x21c5,0x10e3,0x1102,0x08a0,0x2a2a,0x2a0d,0x1a4a,0x1aaa,0x0000,0x338c,0x1a27,0x1aa8,0x2309,0x0800,0x0162,0x32a7,0x5b49,0x4243,0x4264,0x4264,0x4224,0x5ac6,0x4224,0x4a66,0x5ac7,0x2962,0x2122,0x20c2,0x2041,0x40e4,0x38a3,0x2041,0x2882,0x2882,0x2082,0x20c4,0x3986,0x1082,0x0000,0x0020,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4208,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x7bef,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x9cd3,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0xb5b6,0xffff,0xffdf,0xffff,0xffff,0xffde,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2124,0x39c6,0x4a69,0x426a,0x2104,0x0000,0x0000,0x10a2,0x1081,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0021,0x0021,0x0021,0x0020,0x0021,0x0021,0x1904,0x1904,0x0861,0x39c7,0x5acb,0x3a09,0x39e8,0x31a6,0x9492,0x8c51,0x8c71,0x7bef,0x73ae,0x94b2,0x73af,0x73af,0x94b3,0x8410,0x8410,0x83f0,0x73af,0x8c72,0x6b6e,0x8431,0x7c10,0x8cb2,0x7bf0,0x2105,0x3186,0x2144,0xdefb,0xad76,0x0000,0x2944,0x18c3,0x0842,0x18e3,0x0000,0xad74,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9d59,0x632d,0x18e4,0x29c7,0x73f0,0x94b3,0x6b8e,0x2125,0x18e4,0x528a,0x1903,0x0000,0x0020,0x0861,0x18e4,0x0000,0x2145,0xe71c,0x5b0c,0x0000,0x00c2,0x28e4,0x828d,0x0000,0x79cc,0xec97,0xfbd3,0xfb2f,0xdb4f,0x4144,0x2103,0xaacb,0xc2aa,0x8a68,0x00e2,0x1062,0x5286,0x6327,0x0000,0x6366,0x0000,0x5266,0x73c8,0x5b64,0x5327,0x0003,0x3b06,0x4ca9,0x2c6a,0x3c0c,0x0801,0x19a3,0x2430,0x2454,0x2b6f,0x0000,0x1b0e,0x0126,0x1a68,0x1206,0x00c0,0x2bec,0x334b,0x0000,0x33cb,0x2b49,0x0800,0x2164,0x0000,0x4a88,0x4ae6,0x6b83,0x8c88,0x4a45,0x0001,0x0000,0x72e7,0xabe9,0xa287,0x6925,0x0000,0x0020,0x2862,0x48a3,0x4103,0x3924,0x0800,0x4166,0x1882,0x0000,0x0820,0x0000,0x10a2,0x2125,0x0000,0x2103,0x20e3,0x2103,0x2924,0x1060,0x20e4,0x1061,0x1062,0x2965,0x3186,0x0000,0x1062,0x2945,0x2124,0x0841,0x18c3,0x3185,0x3165,0x1081,0x1082,0x3185,0x2125,0x4207,0x41e7,0x3185,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x5aeb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xef5d,0x8c71,0xbdf7,0xf79e,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bce,0xef7d,0xffff,0xffdf,0xffff,0xf7be,0xd6ba,0xef5d,0xdedb,0x632c,0xdedb,0xffff,0xffdf,0xffff,0xffff,0xffde,0x7bcf,0x0000,0x2985,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x426a,0x2124,0x0861,0x2986,0x1904,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x1082,0x1062,0x1082,0x0882,0x1082,0x0861,0x0881,0x0881,0x0881,0x0861,0x0882,0x0881,0x0882,0x0882,0x0861,0x0861,0x0882,0x0882,0x0861,0x0862,0x0862,0x0862,0x0862,0x0882,0x0861,0x0862,0x0882,0x0862,0x0882,0x0862,0x0862,0x0862,0x0862,0x0882,0x0882,0x0881,0x0861,0x0882,0x0882,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0881,0x1081,0x1081,0x1081,0x1081,0x0881,0x0881,0x1081,0x1082,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x2986,0x10c3,0x2124,0x4a4a,0x4229,0x2125,0x630b,0x8c91,0xa555,0x9492,0x8c72,0xa534,0x8c91,0xb5b7,0xad55,0x0000,0xb596,0xad75,0x9492,0xad75,0x9471,0xa514,0xa514,0xa534,0x9d14,0x8431,0x4a69,0x10a3,0x31c7,0xe71c,0x9d14,0x0000,0x2965,0x10a2,0x0861,0x18e3,0x0000,0xb595,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x632d,0x10c2,0x73f0,0x9d15,0x8472,0x424a,0x0002,0x1904,0x528a,0x2924,0x0000,0x0020,0x0841,0x2124,0x0000,0x18e3,0xdf1b,0x636d,0x0000,0x00e2,0x20c3,0x7a4b,0x1800,0x61ed,0xdbd5,0xeb0f,0xe34d,0xd34e,0x5106,0x59e6,0xec0f,0xfc6e,0xbc0d,0x0060,0x0000,0x3a03,0x6368,0x5aaa,0x7388,0x10a0,0x4246,0x6327,0x52e6,0x5327,0x0000,0x5c6a,0x6e6b,0x460b,0x4d50,0x0004,0x0ac6,0x2556,0x1d1a,0x1cb5,0x0000,0x1aab,0x08e5,0x01a4,0x22e9,0x1862,0x1247,0x0924,0x2163,0x3b49,0x1246,0x1802,0x6348,0x5b46,0x31e3,0x4a67,0x2964,0x0002,0x0082,0x0861,0x0000,0x7ae8,0xb3a9,0x9a66,0x6165,0x0000,0x0000,0x18c2,0x2061,0x0020,0x3082,0x2842,0x48c5,0x2042,0x0000,0x0821,0x0000,0x18c3,0x4a49,0x2125,0x2944,0x4228,0x4228,0x20e3,0x52aa,0x5aec,0x2945,0x4a4a,0x2945,0x4229,0x39e8,0x4229,0x5aec,0x0000,0x0000,0x52cb,0x6b6d,0x39c6,0x5aec,0x39c7,0x630c,0x52ab,0x5acb,0x39c6,0x3186,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad75,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xce59,0x9cd3,0xbdd7,0xad55,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xf7be,0xc618,0xad55,0xad55,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a69,0x4269,0x10a1,0x2965,0x5b0c,0x31a7,0x0000,0x18e4,0x18c3,0x18e4,0x10c3,0x18c3,0x10a3,0x08c3,0x08c3,0x10a3,0x10a3,0x10a3,0x1083,0x10c3,0x18c3,0x18c2,0x10c3,0x10a2,0x10a2,0x10c3,0x10a3,0x10a3,0x1083,0x10a3,0x10a3,0x10a3,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x10a3,0x1083,0x10a3,0x10a3,0x1082,0x1082,0x10a3,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1083,0x1082,0x10a3,0x1082,0x10a2,0x10a2,0x10a2,0x10c3,0x10a3,0x18c3,0x18e4,0x10c3,0x39e7,0x2965,0x18e3,0x39e8,0x4229,0x2105,0x6b4d,0x8410,0xc618,0x8410,0xa514,0xbdf8,0x6b6e,0xd6ba,0xd69a,0x52cb,0xc618,0xad55,0xa535,0xc618,0x5aec,0xc638,0x94b3,0x9cf4,0xb5d7,0x6bae,0x4a69,0x0000,0x4a89,0xe73c,0x9cd3,0x0000,0x2985,0x10a2,0x0861,0x18e3,0x0000,0xbdd6,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x5b0c,0x4249,0x41e7,0x0000,0x0000,0x0000,0x18c2,0x10a2,0x4208,0x2945,0x0000,0x0020,0x0841,0x2124,0x0000,0x10c3,0xe71c,0x73cf,0x0000,0x10e3,0x0000,0x6a4b,0x7aed,0x0000,0x4947,0x4925,0x30a0,0x61a6,0x41a5,0x0080,0x71c7,0x7a07,0x41a5,0x00a1,0x6ac8,0x0000,0x4207,0x62ea,0x52a6,0x2920,0x4246,0x6348,0x52e5,0x5307,0x2186,0x0801,0x2a04,0x2224,0x21c7,0x18a4,0x1000,0x0946,0x0149,0x00c5,0x0843,0x1aed,0x1166,0x1000,0x2227,0x22a8,0x0000,0x0082,0x3aa9,0x29a4,0x3a27,0x10c3,0x3a23,0x4ac6,0x3a04,0x4a67,0x1924,0x5ac6,0x5245,0x3183,0x5b07,0x0000,0x0002,0x0021,0x0000,0x40e4,0x38e4,0x3882,0x48a2,0x0040,0x3904,0x38e4,0x5187,0x28c3,0x0020,0x0861,0x10a2,0x0000,0x39e7,0x5aeb,0x10e4,0x4a6a,0x4249,0x0021,0x52ab,0x52eb,0x2965,0x4a8a,0x2985,0x3a28,0x4228,0x4a69,0x5b0c,0x08a2,0x5b0c,0x4249,0x634d,0x4a8b,0x4a8a,0x5b0c,0x424a,0x634d,0x52a9,0x39c7,0x3186,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a69,0x4a6a,0x10a2,0x2965,0x5b0c,0x31c7,0x0000,0x18c3,0x18c3,0x10a3,0x1082,0x18a3,0x1082,0x10c2,0x08c2,0x10e2,0x10e1,0x00e2,0x00a2,0x0000,0x1083,0x18a3,0x10a3,0x1083,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x1083,0x1082,0x1082,0x10a3,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0882,0x0862,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x1083,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x18c3,0x18e4,0x0882,0x3186,0x4a49,0x10a2,0x39e8,0x4a49,0x31a7,0x5aeb,0x9cd3,0x8c52,0x9d14,0x8c92,0x8411,0xad55,0x7bf0,0x8c52,0xa535,0x8c52,0x94b3,0x8c51,0x9492,0x9d14,0x73cf,0x9cf4,0x94d3,0x8c72,0x8430,0x39a6,0x18a3,0x632c,0xef7d,0x94b2,0x0000,0x3185,0x10a2,0x0861,0x18c3,0x0000,0xbdf7,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x52cb,0x2125,0x0000,0x8452,0xbdf9,0x8431,0x2986,0x18c3,0x4208,0x2965,0x0000,0x0020,0x0021,0x2124,0x0020,0x1082,0xe71c,0x7c10,0x0000,0x2965,0x1103,0x3146,0x832f,0x8aee,0x7a4a,0x724b,0x69c9,0x79c8,0xaa8b,0x8a29,0x6988,0x69e9,0x71e8,0x9a6a,0xb46c,0x8409,0x5ac6,0x4a84,0x73e7,0x8caa,0x6328,0x5b07,0x6347,0x5327,0x5ba9,0x3ae9,0x3288,0x2a46,0x2a87,0x334a,0x22c7,0x1266,0x1a66,0x29e6,0x2a6a,0x1209,0x10c2,0x18a2,0x0103,0x1246,0x2a27,0x2228,0x1a07,0x0000,0x3207,0x3247,0x3a85,0x52a6,0x4a86,0x4226,0x4a46,0x5ae8,0x5a86,0x5284,0x52e5,0x39c1,0x3962,0x2923,0x20c2,0x30a3,0x30a3,0x2880,0x2820,0x0000,0x2041,0x28a2,0x30c4,0x0800,0x0000,0x0000,0x0000,0x0000,0x0860,0x2965,0x0000,0x18e3,0x10c3,0x0840,0x0000,0x0000,0x0000,0x0000,0x18c2,0x18e2,0x0000,0x0000,0x10a3,0x0000,0x31c7,0x0000,0x0001,0x2125,0x0000,0x08a3,0x0000,0x0020,0x31a5,0x4208,0x2965,0x2104,0x2124,0x2965,0x0000,0x8c71,0xf7be,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0840,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xce79,0x0000,0x31a6,0x0000,0x7bef,0xf79e,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xffdf,0x8410,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x2146,0x0000,0x2124,0x5aeb,0x3a08,0x0000,0x18e4,0x18c3,0x10a3,0x18c3,0x0082,0x2986,0x39c7,0x72cb,0x6228,0x3840,0x5165,0x6aec,0x5aec,0x00c3,0x08c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x10a3,0x10a3,0x1082,0x1082,0x10a3,0x10a3,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x1904,0x18c3,0x2104,0x4a6a,0x2124,0x0000,0x0002,0x0001,0x0000,0x39e8,0x4a4a,0x2105,0x39c7,0x3186,0x2145,0x4209,0x31c8,0x2967,0x3a09,0x4229,0x4a6a,0x39c7,0x3166,0x4a49,0x31a6,0x3186,0x5acb,0x2125,0x18c3,0x0000,0x636d,0xf79e,0x9492,0x0000,0x2965,0x10a2,0x0861,0x10a3,0x0000,0xbdf7,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0x52cb,0x0000,0x63ae,0x9d35,0x73f0,0x39e8,0x0882,0x0861,0x4208,0x39a6,0x0000,0x0020,0x0020,0x2104,0x18c2,0x0000,0xdf1b,0xa575,0x0000,0x0000,0x0000,0x0000,0x0000,0x2000,0x1000,0x0000,0x0000,0x0000,0x1800,0x0000,0x0000,0x0000,0x0000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0041,0x0020,0x1082,0x1882,0x18e3,0x18e3,0x18c3,0x20e3,0x2125,0x2104,0x2105,0x2966,0x2966,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x39e7,0x39c7,0x31a7,0x4208,0x39e7,0x4a49,0x4a49,0x4a69,0x528a,0x5289,0x52ca,0x52aa,0x4a48,0x39e7,0x3185,0x2104,0x2124,0x2965,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71b,0x5289,0x0000,0x2965,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x31a6,0x0000,0x6b4d,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x630c,0x0000,0x2965,0x2124,0x2124,0x2124,0x39c6,0x4229,0x7bef,0x4a69,0x0000,0x52eb,0x4229,0x0000,0x18e4,0x18c3,0x18e4,0x18e4,0x08e3,0x2145,0x3146,0x4165,0x828b,0x71e8,0x7a09,0x6aec,0x630d,0x0041,0x10e3,0x18e4,0x18c4,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10a3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10a3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c4,0x18c4,0x18c4,0x18e4,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x1904,0x2104,0x0883,0x39e7,0x5aeb,0x6b4d,0x73ae,0x73ae,0x73ce,0x6b6d,0x6b6d,0x738e,0x6b6e,0x738e,0x6b6d,0x6b2d,0x632d,0x6b4d,0x632c,0x630c,0x62eb,0x5aeb,0x52cb,0x52aa,0x5acb,0x52cb,0x4a69,0x528a,0x4249,0x2841,0xad75,0xffff,0x8451,0x0000,0x2965,0x1082,0x0861,0x1082,0x0000,0xc618,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5aec,0x31e7,0x4269,0x0000,0x0000,0x0000,0x2944,0x0040,0x39c7,0x4208,0x0000,0x0020,0x0020,0x2104,0x2124,0x0000,0xce9a,0xef9e,0x94d3,0x8c51,0x9471,0x8450,0x7c4f,0x7c10,0x7c71,0x8c71,0x9c92,0x94f3,0x94d3,0x94d3,0x94f3,0x9cd3,0x9cd4,0x8cf3,0x8493,0x8cb2,0x8cb2,0x8cb1,0x8c73,0x8c72,0x8cb2,0x8452,0x8c52,0x8c52,0x8451,0x8491,0x7c71,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x7cb2,0x9452,0x84f2,0x9491,0x8471,0x7491,0x9452,0x8471,0x7c51,0x8c72,0x8cb3,0x8cd2,0x84d3,0x84b3,0x84b2,0x8cb3,0x94f4,0x94d4,0x8cb4,0x8c93,0x8cb2,0x94f3,0x9514,0x9535,0x8d34,0x8cf3,0x8cf3,0x8d13,0x8d14,0x94f4,0x9cd4,0x9d14,0x9515,0x9535,0x9535,0x9d14,0x9d35,0x9d35,0x9d55,0x9d35,0xa555,0x9d56,0xa556,0xa576,0xa577,0xa597,0xad97,0xadb7,0xadb6,0xadd7,0xb5f7,0xb5f8,0xbe38,0xbe38,0xbe59,0xc679,0xceba,0xcedb,0xcedb,0xcefb,0xd6db,0xd6fc,0xd6fc,0xdf3d,0x8c72,0x0000,0x39c7,0x2104,0x2124,0x2124,0x2124,0x1082,0xa514,0xd6ba,0xd69a,0xd699,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd67a,0xd69a,0xd699,0x7bcf,0x0000,0x2965,0x2945,0x0000,0x5aeb,0xc638,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0xd69a,0xd69a,0xd69a,0xce79,0xd6ba,0xb5b6,0x3186,0x18c3,0x2945,0x2124,0x0000,0x9cd3,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0x8430,0x0000,0x2945,0x2944,0x2124,0x2124,0x2124,0x39e7,0x10e4,0xd6db,0x9492,0x0000,0x5aeb,0x4229,0x0000,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x18e4,0x18e4,0x0882,0x3145,0x3104,0x28c3,0x08c3,0x08c2,0x18e3,0x20e4,0x1904,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18c3,0x1904,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2105,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2105,0x2104,0x2105,0x2125,0x2105,0x2125,0x2105,0x18e4,0x2125,0x0000,0x6b8d,0xef7d,0xffff,0xf7de,0xf7de,0xffdf,0xffdf,0xffdf,0xf7df,0xf7df,0xf7bf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xffdf,0xffdf,0xf7df,0xf7df,0xffdf,0xf7ff,0xf7df,0xf7be,0xe75d,0xef7d,0xffff,0xffff,0x8c71,0x0000,0x2965,0x1082,0x0861,0x0021,0x0000,0xc638,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x4a49,0x31a7,0x0000,0x73af,0xc639,0x8cb2,0x2965,0x0862,0x31a7,0x4208,0x0000,0x0020,0x0020,0x18c3,0x2945,0x0000,0xadb6,0xffff,0xffff,0xffff,0xf7ff,0xf7ff,0xefff,0xe79e,0xdf5e,0xefbf,0xf7bf,0xefdf,0xef7e,0xe77e,0xdf5d,0xe73d,0xe73d,0xdf5d,0xd71c,0xcedb,0xcebb,0xc6ba,0xc67b,0xc67a,0xc69a,0xc67a,0xc659,0xbe19,0xb5d8,0xae17,0xadf8,0xa5d7,0xa5d6,0xa5d7,0xa5b7,0x9db6,0x9dd7,0xad97,0xa5b6,0xad75,0x9d75,0x9d96,0xad76,0x9d75,0x9555,0xa555,0x9d76,0x9575,0x9575,0x9576,0x9d75,0xa575,0xa576,0xa536,0x9d17,0x9d17,0x9d34,0x9d33,0x9d55,0x9d75,0x9533,0x84f3,0x84f3,0x84f3,0x84f4,0x8cf4,0x94f4,0x9514,0x8cd3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x8472,0x8493,0x84b3,0x8cb3,0x8cb3,0x8493,0x8492,0x8492,0x8cb3,0x8cd3,0x8cb3,0x8cd3,0x94f3,0x9514,0x9514,0x9514,0x9534,0x9515,0x94f4,0x94f4,0x9514,0x94d4,0x9d14,0x6b6d,0x3165,0x31a6,0x2104,0x2124,0x2104,0x2124,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2104,0x2124,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c2,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x39c7,0x4208,0x8451,0x52cb,0x39c7,0x5acb,0x4a6a,0x0000,0x18e4,0x18e3,0x18c3,0x18c3,0x0862,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0020,0x0001,0x0821,0x0000,0x0000,0x0841,0x0001,0x0000,0x0000,0x0842,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0821,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1904,0x2104,0x2105,0x0021,0x3a08,0x9cf4,0xad75,0x9d13,0x9d13,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0xa555,0xad96,0xa575,0xa575,0xad96,0xad96,0xb5b7,0xbdd7,0xb5d7,0xbdd7,0xbdf8,0xb5f7,0xb5f7,0xc618,0xc618,0xbe18,0xc638,0x632c,0x0000,0x1904,0x0861,0x0861,0x0000,0x1080,0xce59,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b75,0x6b2d,0x0000,0x4229,0x94b2,0xa555,0x5b2d,0x0000,0x0000,0x31a7,0x4a49,0x0000,0x0020,0x0020,0x0820,0x18e3,0x0000,0x4a8a,0x8cb2,0x8472,0x8cd3,0x84b2,0x8cb3,0x8cb3,0x7c51,0x6baf,0x6bf0,0x63f0,0x634e,0x52ec,0x52ab,0x4a6a,0x428a,0x428a,0x4a8a,0x426a,0x320a,0x4249,0x424a,0x3a28,0x3208,0x3208,0x3a28,0x3228,0x1186,0x0125,0x1844,0x3146,0x1801,0x0000,0x0000,0x0000,0x0000,0x0800,0x0040,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x4228,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x3185,0x2965,0x2965,0x3185,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x3185,0x2965,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2945,0x3185,0x3185,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x3185,0x2965,0x2965,0x2965,0x3186,0x3186,0x2944,0x2124,0x2124,0x2124,0x2124,0x2965,0x3185,0x3185,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x3185,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x39c6,0x4a8a,0x0000,0x0000,0x2966,0x52ab,0x528a,0x0021,0x18e3,0x18e3,0x18e4,0x0000,0x0000,0x2125,0x2125,0x3166,0x3186,0x2925,0x2925,0x18a3,0x1082,0x10a3,0x1904,0x2104,0x18c3,0x18c3,0x18e4,0x18e3,0x18c3,0x10a3,0x18c3,0x2125,0x1904,0x0822,0x2124,0x18e4,0x0821,0x2965,0x0000,0x2104,0x2125,0x2145,0x1904,0x10a2,0x2124,0x2125,0x10a3,0x2966,0x2104,0x2966,0x2965,0x2966,0x29a6,0x2966,0x31a6,0x31c7,0x2986,0x2145,0x3a08,0x3a08,0x2946,0x4229,0x3a08,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x39e8,0x3a08,0x3a08,0x4208,0x4228,0x4228,0x4228,0x4229,0x4269,0x4269,0x4269,0x4a69,0x4a8a,0x4aaa,0x4a8a,0x528a,0x52aa,0x4a6a,0x4a69,0x5b0c,0x39e8,0x0000,0x2104,0x2105,0x0041,0x4209,0x18c5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0020,0x0861,0x0000,0x3165,0xd699,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa535,0x0843,0x528a,0x0000,0x0000,0x2104,0x39c7,0x0000,0x31a7,0x4a69,0x0000,0x0020,0x0020,0x0020,0x0000,0x0862,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x3102,0x4a27,0x5aca,0x630b,0x6b6c,0x7bce,0x7bce,0x73ad,0x5aca,0x3185,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0820,0x0861,0x0861,0x0861,0x0061,0x0040,0x0020,0x0861,0x0821,0x0841,0x0001,0x0000,0x1081,0x1081,0x0881,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x39c6,0x4207,0x2965,0x2124,0x2124,0x2124,0x2124,0x2944,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x2124,0x2124,0x2124,0x2124,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x2124,0x2124,0x2124,0x2944,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c2,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x29a7,0x0000,0x0020,0x526a,0x52ab,0x1083,0x18c3,0x2124,0x0000,0x73af,0xc679,0xc659,0xc639,0xd6db,0xdefc,0xd6bb,0xce9a,0xb5d7,0xb5b7,0xbdf8,0xb5f8,0xb5d7,0xbdf8,0xad96,0xbdf8,0xc619,0xb5d7,0xa575,0xbe18,0xb5f7,0xb5d6,0xb618,0xbe18,0xbe59,0xb5f7,0xbe39,0xbe19,0xbdf8,0xbe18,0xbe18,0xb5b7,0xa555,0xb5d7,0xbe39,0xb5d7,0xbe18,0xbe18,0xb5d7,0xa576,0xb5f8,0xb618,0xadb7,0xadd7,0xb5f7,0xb5f7,0xadd7,0xb5f7,0xb618,0xadd7,0xb618,0xb5d7,0xa596,0xad96,0xa596,0xadb6,0xad96,0xadb6,0xb5d7,0xb5d7,0xadb7,0xadb7,0xadd7,0xb5d7,0xb5d7,0xb5d7,0xb5f8,0xb5f8,0xb5f8,0xb618,0xb618,0xbe18,0xbe19,0xbe18,0xbe39,0xb5f8,0xb5f7,0xdefb,0x73af,0x0000,0x2145,0x18e4,0x18e4,0x5aec,0x39e7,0x0861,0x2104,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x0861,0x0000,0x0020,0x0020,0x1082,0x0000,0x41e7,0xd6ba,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x18e5,0x0821,0x4229,0x9d15,0xa576,0x6b6d,0x18c3,0x31a7,0x3a08,0x0000,0x0020,0x0040,0x0000,0x1082,0x18e3,0x2104,0x2145,0x31a6,0x31a6,0x2103,0x4a69,0x840f,0xa513,0xbdb5,0xce37,0xce78,0xd6b9,0xdefa,0xdf1a,0xe73b,0xe75b,0xe75b,0xe71a,0xd699,0xbdf6,0x9cb1,0x73ce,0x2985,0x0000,0x2965,0x0882,0x1082,0x0882,0x0882,0x0861,0x0862,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0020,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x4207,0x2965,0x2104,0x2124,0x2124,0x2944,0x0020,0x39c7,0x632c,0x6b4d,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4d,0x632c,0x2945,0x0840,0x2944,0x2124,0x2104,0x0861,0x52aa,0x6b4d,0x6b4d,0x6b4c,0x6b4d,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b6d,0x52aa,0x0000,0x2124,0x2104,0x2944,0x1081,0x3186,0x632c,0x6b4d,0x6b4c,0x6b4d,0x6b4c,0x632c,0x632c,0x6b4d,0x6b4c,0x6b4c,0x6b4d,0x6b4d,0x6b4d,0x3186,0x0000,0x2945,0x2104,0x2124,0x2124,0x3186,0x4207,0x4a69,0x2166,0x0000,0x0000,0x4a49,0x5acb,0x18c3,0x10c3,0x2125,0x0000,0x8c52,0xdf1d,0x9d14,0xceba,0xb5f8,0x8c92,0xa575,0x8451,0xce7a,0xb5f7,0x7c30,0x8c92,0x9d35,0x8c72,0xbe18,0x8c71,0x73cf,0xb5f7,0xd71b,0x8491,0x9d55,0xb5d7,0xbe59,0x8cb3,0x8cb3,0xc67a,0x7c51,0xadd7,0x94f3,0x8471,0x7410,0xb5d7,0xd71c,0xadb6,0x8c92,0xb5f7,0x8471,0x94f3,0xa575,0xb618,0x8492,0x7c30,0xa596,0xa576,0x7c51,0x9514,0xd73c,0x84b2,0x7410,0xdf5d,0x7410,0x9534,0xd6fc,0xcedb,0xcebb,0xcebb,0xcedb,0xcedb,0xcedb,0xcedb,0xcedb,0xcedb,0xd6db,0xcedb,0xd6fb,0xd6db,0xcefb,0xcedb,0xcefb,0xcefb,0xcefb,0xd6fb,0xd6db,0xd6fb,0xd6fc,0xdf5d,0xa576,0xcebb,0xb5d7,0x0000,0x2966,0x2125,0x0042,0x528a,0x39e7,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x10a2,0x0000,0x4a48,0xdeda,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x0000,0x3186,0x8c72,0xad97,0x632d,0x0000,0x0000,0x2125,0x4208,0x0020,0x0000,0x0020,0x0000,0x18e3,0x2945,0x2925,0x10a3,0x2104,0x4a49,0x8450,0xad95,0xce57,0xd6d9,0xe73b,0xdf1a,0xdefa,0xd6b9,0xc657,0xc678,0xce98,0xd6b9,0xce98,0xc657,0xbe36,0xc657,0xce98,0xc657,0xb5b5,0x7bee,0x1084,0x2124,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4207,0x2965,0x2104,0x2124,0x2944,0x10a2,0x4228,0xbdd7,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xb596,0x2965,0x18e3,0x2965,0x0000,0x7bef,0xd6ba,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x7bef,0x0000,0x2965,0x18e2,0x39c7,0xb596,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe73c,0xe73c,0xef5d,0xbdf7,0x39e7,0x10a2,0x2945,0x2124,0x2124,0x2965,0x39e7,0x4249,0x2966,0x0000,0x0000,0x4208,0x5aeb,0x2145,0x1083,0x2125,0x0000,0x5aec,0xcedb,0x8cd3,0xdf3d,0xcedb,0x8d14,0x8cf3,0x7cd3,0xb639,0xb639,0x7451,0x9d76,0xbe7a,0x8492,0xc67a,0x8cf4,0x6bd0,0xb618,0xdf3d,0x8473,0xadd7,0xadb7,0x9d35,0xa576,0x8cb3,0x9d76,0x9d55,0x8492,0x9535,0x8472,0x7431,0xa5b7,0xcedb,0xadd7,0x7c52,0x8cf4,0x84b3,0x7c31,0x9d76,0xadf8,0x7c71,0x7c92,0x9d35,0x9d55,0x9514,0x8cd3,0xa596,0x9514,0x7c51,0xb5f8,0x8472,0x8cb3,0xbe59,0xbe39,0xb639,0xbe39,0xb639,0xbe39,0xbe39,0xb639,0xbe39,0xbe39,0xbe39,0xb618,0xb5f7,0xb5f8,0xb5f8,0xb5f7,0xb618,0xb5f8,0xb5f8,0xb5f8,0xb5f8,0xb5f8,0xb5f8,0xc659,0x9d35,0xb5f7,0xd6fb,0x00a3,0x1082,0x2946,0x18e4,0x2986,0x52aa,0x18c2,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0041,0x0000,0x6b4d,0xb5da,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x29a7,0x52ab,0x4249,0x0000,0x0000,0x3a08,0x18e4,0x2125,0x4208,0x0841,0x0000,0x0020,0x0020,0x1082,0x0020,0x1082,0x0000,0x634b,0xa573,0xb5d5,0xbe16,0xbdf5,0xb5f5,0xbe16,0xc657,0xceb9,0xceb9,0xc637,0xc678,0xd6d9,0xc657,0xb5d5,0xadb5,0xad94,0xad94,0xad93,0xb5b4,0xce77,0xce57,0x840f,0x2965,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39a6,0x4207,0x2965,0x2124,0x2124,0x2965,0x0000,0x8410,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x632c,0x0000,0x2965,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x738e,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3186,0x2124,0x2124,0x2965,0x39c7,0x4249,0x2966,0x0000,0x0000,0x39c6,0x5aec,0x3186,0x0862,0x2945,0x0000,0x4208,0xdf3c,0x7c71,0x5b4d,0x7c31,0x7c11,0x73ef,0x8c71,0x5b0c,0x6bcf,0x7c51,0x7c51,0x8472,0x6bcf,0x5b2d,0x7410,0x7c30,0x5b4d,0x530d,0x7c11,0x5b2d,0x4acc,0x530d,0x73d0,0x7c10,0x52ec,0x6baf,0x6bcf,0x6bcf,0x638e,0x636e,0x428b,0x2a08,0x4aec,0x636e,0x5acb,0x5b4d,0x5b4e,0x428a,0x1986,0x530c,0x530c,0x3a29,0x3a29,0x4aab,0x428a,0x0904,0x3a49,0x4aaa,0x0002,0x424a,0x29a7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x3a08,0x1924,0x31e7,0x3a27,0x0000,0x31e7,0x4248,0x2165,0x00c1,0x29c6,0x08c2,0x0000,0x0000,0x6b8e,0xe77d,0x8450,0x0000,0x3186,0x2125,0x2104,0x52aa,0x2145,0x0000,0x0020,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x62eb,0x0000,0x94b2,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x3a08,0x31c7,0x0000,0x8c72,0xd6fb,0x94d3,0x08a3,0x10a3,0x2145,0x2965,0x10a2,0x0000,0x0020,0x0000,0x39e8,0x0843,0x5b0a,0xb5b3,0xa572,0x9d11,0x9d12,0xa553,0xad73,0xad94,0xb5b4,0xbdf6,0xce78,0xce98,0xce58,0xb5b5,0xa553,0xad53,0xad54,0xad73,0xb5b4,0xb5b4,0xb5d4,0xad73,0xbdf5,0xbe16,0x4a69,0x0002,0x10a2,0x0040,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x1082,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0862,0x1082,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x1904,0x18e3,0x1903,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x0861,0x39c6,0x4208,0x2965,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xf79e,0x6b6d,0x0000,0x2945,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce58,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3186,0x2124,0x2104,0x2965,0x39e7,0x4249,0x2986,0x0840,0x0841,0x2945,0x630c,0x39e8,0x0841,0x2945,0x0000,0x2104,0xdf3c,0xadb6,0x0000,0x0000,0x0000,0x2800,0x5800,0x4000,0x0800,0x3800,0x0000,0x0000,0x0000,0x20a0,0x0000,0x00a0,0x20c0,0x31e0,0x2200,0x10a0,0x2249,0x11e7,0x0000,0x0000,0x18e2,0x0000,0x0840,0x1900,0x2160,0x2960,0x3184,0x39a5,0x2944,0x3122,0x4984,0x3143,0x2944,0x3186,0x39c7,0x3965,0x39a6,0x4208,0x39e7,0x39c7,0x39e7,0x4228,0x4208,0x41e7,0x4a49,0x4208,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5289,0x528a,0x528a,0x528a,0x52cb,0x632c,0x5b0b,0x632c,0x634c,0x52ca,0x634c,0x636d,0x632c,0x632c,0x636d,0x634c,0x5aeb,0x5acb,0x4a8a,0xdf1c,0xbe19,0x0000,0x2924,0x2945,0x1904,0x31a7,0x4228,0x10c2,0x2104,0x2104,0x2124,0x2103,0x2124,0x2103,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x2103,0x2945,0x3185,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x41e7,0x8c50,0x7417,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x5b0c,0x0000,0x5aec,0xa535,0x6b6d,0x0000,0x0000,0x1082,0x10a2,0x2124,0x2945,0x2125,0x0000,0x528a,0x738e,0x39c7,0x94d1,0xa552,0x94b0,0x9d11,0x9d31,0x9d11,0x9d12,0x9d12,0x9d12,0x9cf2,0x9d12,0xc637,0xc637,0xad74,0xad74,0xad74,0xad74,0xb5b4,0xb5b4,0xb594,0xad73,0xb5b4,0xce77,0xa553,0x0000,0x0862,0x10a3,0x1903,0x18e3,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x3186,0x39c7,0x39c7,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x39c6,0x39c6,0x31a6,0x31a6,0x31c6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2124,0x2944,0x2944,0x2144,0x2945,0x2944,0x2965,0x2945,0x2944,0x2945,0x2945,0x2965,0x2945,0x39e7,0x4207,0x3185,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xef5d,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xd6ba,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39c6,0x4249,0x2986,0x18e3,0x10a2,0x18c2,0x5aeb,0x4208,0x0842,0x2945,0x1082,0x0000,0xce9a,0xdefc,0x8c72,0x8431,0x8451,0x8451,0x7c2f,0x7c70,0x7c71,0x7c70,0x84b1,0x8c91,0x8c71,0x9491,0x8c92,0x8491,0x94b2,0x9471,0x8c70,0x9cd2,0x8472,0x8c93,0x94f3,0x94f3,0x94d3,0x94f3,0x94f3,0x94f2,0x9512,0x94f2,0x9d13,0xa514,0xa555,0x9d54,0x9cf3,0xad74,0xa575,0xa556,0xa555,0xad75,0xad96,0xad96,0xadb6,0xb5d7,0xb5b7,0xb5b7,0xb5d7,0xbdd7,0xb5d7,0xbdf7,0xbdf7,0xbe18,0xbe18,0xbe18,0xc618,0xc638,0xbe38,0xc638,0xc638,0xc638,0xc639,0xc639,0xbe18,0xb5d7,0xb5d7,0xb5d7,0xbdf8,0xbdf8,0xbe18,0xbdf8,0xbdf8,0xbe18,0xbe18,0xc639,0xc659,0xce9a,0xce7a,0xce7a,0xb5f9,0x4229,0x0800,0x2966,0x2125,0x2965,0x4248,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2944,0x3165,0x0000,0x73ae,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xb5b6,0xbdd7,0xc618,0xc638,0xbdf7,0xb5b6,0xb5b6,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9d14,0x18c4,0x52cb,0x0000,0x10c3,0x8451,0x634d,0x1062,0x0841,0x0000,0x2104,0x2965,0x0000,0x7baf,0x738e,0x0000,0x9491,0xad94,0x94d0,0x9cf1,0x94f1,0x9cf1,0x9d12,0x9d12,0x9d12,0xad94,0xc657,0xce78,0xce78,0xd6b9,0xce78,0xbe16,0xbdf6,0xbe15,0xb5b4,0xb5d5,0xc657,0xce98,0xad94,0x31a6,0x2124,0x2125,0x0861,0x1081,0x18e3,0x10a2,0x0841,0x0861,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x1082,0x0841,0x0020,0x0020,0x0861,0x0861,0x0841,0x0020,0x0020,0x0861,0x0861,0x0841,0x0020,0x0020,0x0861,0x1082,0x0861,0x0000,0x0020,0x1082,0x1082,0x0861,0x0000,0x0020,0x1082,0x18c3,0x0861,0x0000,0x0020,0x1082,0x18c3,0x0841,0x0000,0x0020,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x0841,0x0000,0x0020,0x2124,0x2124,0x0841,0x0000,0x0861,0x2124,0x2104,0x1082,0x0000,0x0861,0x2125,0x18e3,0x39c6,0x4207,0x3185,0x2124,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x8c71,0xe73c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0xad55,0xa514,0xad75,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffdf,0xb5b6,0x9cd3,0xce79,0xf7be,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39c6,0x4249,0x2966,0x18e3,0x18c3,0x0000,0x5acb,0x4229,0x0882,0x2125,0x2104,0x1904,0x31c7,0x4249,0x634d,0x6b8e,0x6b8e,0x6b8e,0x638e,0x6b8e,0x6b8e,0x636e,0x634d,0x632c,0x634d,0x634d,0x632d,0x634d,0x5b4d,0x530c,0x532c,0x532b,0x530c,0x52eb,0x5acb,0x5acb,0x52cb,0x52ab,0x4aab,0x4aaa,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4269,0x4269,0x4a49,0x4249,0x4209,0x3a09,0x3a28,0x3207,0x3a08,0x39c7,0x39c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x2186,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2966,0x2966,0x2946,0x2946,0x2946,0x2966,0x2966,0x2966,0x2166,0x2165,0x2166,0x2166,0x2946,0x2946,0x2926,0x2125,0x2125,0x2125,0x2144,0x0000,0x0000,0x2945,0x2925,0x2945,0x2145,0x2145,0x39e7,0x2945,0x0000,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x18e3,0x18c2,0x0000,0x8430,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad55,0x10a4,0x0000,0x6b6e,0xbe18,0xad96,0x634d,0x0000,0x0041,0x0020,0x1082,0x0000,0x2965,0x4228,0x2104,0x1082,0x4a48,0xa533,0xb5b4,0xad94,0xa553,0xa552,0xa553,0xad73,0xbdd5,0xce78,0xce98,0xc637,0xc637,0xce78,0xce98,0xce98,0xceb8,0xd6d9,0xd71a,0xceb9,0xb5f6,0x8c91,0x08a2,0x2925,0x39e7,0x2965,0x0020,0x0861,0x1903,0x10a2,0x0020,0x0000,0x0861,0x18c3,0x1082,0x0020,0x0000,0x0861,0x1082,0x0861,0x0000,0x0000,0x0861,0x0861,0x0841,0x0000,0x0000,0x0841,0x0861,0x0841,0x0000,0x0000,0x0841,0x1082,0x0861,0x0000,0x0020,0x0861,0x10a2,0x0861,0x0000,0x0000,0x0861,0x18c3,0x0861,0x0000,0x0020,0x1082,0x18c3,0x0861,0x0000,0x0000,0x10a2,0x18c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10c3,0x18c3,0x18c3,0x18e4,0x0861,0x0000,0x0020,0x2103,0x2103,0x1081,0x0000,0x0040,0x2103,0x2104,0x1082,0x0000,0x0861,0x2104,0x18c3,0x39c6,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9cf3,0x52aa,0xe71c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0xa534,0xe71c,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffdf,0xffff,0xce79,0x5aeb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x2965,0x2124,0x2124,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0000,0x5acb,0x4a69,0x1083,0x2145,0x2125,0x2945,0x08a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0822,0x0001,0x0021,0x0801,0x0802,0x0842,0x0823,0x0821,0x0841,0x0841,0x0842,0x0842,0x0822,0x0842,0x0862,0x0862,0x1062,0x0882,0x0862,0x0842,0x0862,0x0882,0x0882,0x0882,0x0862,0x0882,0x1083,0x1083,0x1083,0x0862,0x1083,0x10a3,0x1083,0x10a3,0x10a3,0x10a3,0x18c4,0x18c3,0x10a3,0x1083,0x18a3,0x18a3,0x18a3,0x10c4,0x10c3,0x18c4,0x10e3,0x18e3,0x2105,0x2125,0x2965,0x2966,0x2945,0x2946,0x2125,0x31a6,0x39c6,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x2124,0x0000,0x0000,0x9cf3,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5b7,0x0000,0x31c7,0x73cf,0x73ae,0x0000,0x0000,0x2104,0x1062,0x0861,0x18e3,0x0000,0x39e7,0x630c,0x18a3,0x10a2,0x0000,0x3185,0x842f,0xa554,0xbe16,0xce77,0xce98,0xd6d9,0xdf1a,0xdf1a,0xd6d9,0xd6b9,0xd6d9,0xdefa,0xe73b,0xe75b,0xdefa,0xc637,0x9d34,0x7c0f,0x2145,0x0000,0x18e3,0x10a3,0x1081,0x10c2,0x0020,0x0861,0x18c3,0x18c3,0x0841,0x0000,0x1082,0x18c3,0x10a2,0x0020,0x0000,0x0861,0x1082,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x0020,0x0020,0x0841,0x0861,0x0861,0x0020,0x0020,0x0841,0x1081,0x0861,0x0000,0x0020,0x0841,0x10a2,0x0861,0x0020,0x0020,0x0861,0x10a2,0x0861,0x0020,0x0000,0x0861,0x18c3,0x1082,0x0020,0x0000,0x10a2,0x18c3,0x10a2,0x10c2,0x10c2,0x10c2,0x18c3,0x10e2,0x10c2,0x18c3,0x18c3,0x18e3,0x1082,0x0000,0x0020,0x18e3,0x18e3,0x10a2,0x0000,0x0841,0x2103,0x18e3,0x1082,0x0000,0x0861,0x2104,0x18e3,0x39c7,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0xbdd7,0x7bef,0xe71c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad75,0xd6ba,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0x9cf3,0xb596,0xef7d,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0000,0x52aa,0x4a8a,0x18e4,0x2945,0x2945,0x2945,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2946,0x2946,0x2946,0x2966,0x2945,0x2945,0x2946,0x2945,0x2946,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x3166,0x2966,0x2966,0x3186,0x3186,0x2986,0x2986,0x3186,0x3166,0x2966,0x2966,0x2966,0x2966,0x2965,0x2985,0x39e7,0x10c3,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x0000,0x0000,0xb5b6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd69a,0x39e9,0x526a,0x0000,0x18c4,0x8cb2,0x94d3,0x5b0c,0x10c3,0x2145,0x4a49,0x39c7,0x0000,0x8430,0x738e,0x0000,0x10a2,0x0000,0x0000,0x2965,0x4a68,0x6b6c,0x94b1,0xb5b5,0xbe17,0xbe17,0xbdf6,0xb5b5,0xad95,0xa533,0x9491,0x8410,0x6b6d,0x4a69,0x0002,0x0000,0x3187,0x2966,0x0841,0x0861,0x18e3,0x2965,0x0881,0x0820,0x10a2,0x18c3,0x0841,0x0000,0x0861,0x10a2,0x10a2,0x0020,0x0000,0x0841,0x0861,0x0861,0x0020,0x0000,0x0020,0x0861,0x0841,0x0000,0x0020,0x0020,0x0861,0x0841,0x0000,0x0020,0x0020,0x1081,0x0861,0x0000,0x0000,0x0840,0x1082,0x0861,0x0000,0x0000,0x0841,0x1082,0x0861,0x0020,0x0000,0x0861,0x10a2,0x0861,0x0020,0x0000,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x10c2,0x18c2,0x18e3,0x10a2,0x0000,0x0000,0x18c3,0x18e3,0x1082,0x0000,0x0020,0x18e3,0x18e3,0x1081,0x0000,0x0841,0x18e3,0x18c2,0x39c6,0x4207,0x2985,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xc638,0xc638,0xef5d,0x738e,0xe73c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0xb596,0x8430,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xf7be,0x8c51,0x9cf3,0xc618,0x8c71,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3186,0x2124,0x2104,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0000,0x4a49,0x528a,0x2125,0x2945,0x2945,0x2946,0x2966,0x2966,0x2945,0x2945,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2125,0x2145,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2925,0x2945,0x2945,0x2145,0x2125,0x2125,0x2945,0x2945,0x2145,0x2945,0x2946,0x2945,0x2145,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2966,0x2966,0x2946,0x2965,0x2966,0x2945,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x3186,0x2966,0x2966,0x2986,0x2966,0x3166,0x3166,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x39c7,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4207,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6bb,0x4a6a,0x2125,0x10e3,0xad76,0xce9a,0x7c30,0x10e4,0x0862,0x0000,0x2125,0x52aa,0x0000,0x8c51,0x8c71,0x1903,0x2124,0x10a3,0x0882,0x2105,0x4a4a,0x4a6a,0x2105,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0x4249,0x5aec,0x630c,0x5acb,0x3187,0x0841,0x10c2,0x2945,0x2965,0x10a2,0x0000,0x1082,0x18c3,0x0861,0x0000,0x0841,0x1082,0x10a2,0x0841,0x0020,0x0841,0x0861,0x0861,0x0020,0x0020,0x0020,0x0840,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x1082,0x1081,0x0861,0x0841,0x0861,0x10a2,0x1081,0x0861,0x0861,0x1081,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1082,0x10a2,0x18e3,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x2103,0x18c3,0x1082,0x18a2,0x18e3,0x18e3,0x39c7,0x4208,0x3185,0x2124,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffdf,0xffff,0xe71c,0x632c,0xc618,0xbdf7,0x4a48,0xc638,0xffff,0xffff,0xffdf,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce59,0x632c,0xf7be,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xf7be,0x8410,0xad75,0xffff,0xdedb,0x39c7,0xe73c,0xffff,0xffdf,0xffff,0xf7be,0x7bef,0x0000,0x3186,0x2124,0x2104,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0820,0x39e7,0x528a,0x2945,0x2945,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2986,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x3186,0x3186,0x3186,0x2986,0x3186,0x3186,0x2986,0x3186,0x2986,0x2966,0x3186,0x2966,0x2986,0x2966,0x31c7,0x3186,0x2104,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0xad55,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x7bf0,0x0043,0x632d,0x632c,0x0000,0x0000,0x2145,0x2125,0x10a3,0x18e3,0x18c2,0x0000,0x7bef,0x8430,0x4248,0x4a49,0x39c7,0x2145,0x4a49,0x8c52,0xad56,0xb597,0xb597,0xa515,0x738f,0x2987,0x0863,0x1083,0x1062,0x1082,0x10a2,0x10a2,0x4249,0x52cb,0x3186,0x0000,0x0000,0x0020,0x0881,0x2145,0x2965,0x1903,0x18e3,0x18c3,0x0861,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18e3,0x18e3,0x18e3,0x18c2,0x0841,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4207,0x2985,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xef7d,0xd69a,0xd69a,0xbdf7,0x52aa,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xd69a,0x630c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xffff,0x9cf3,0xb5b6,0xffff,0xe71b,0x4207,0xe71c,0xffff,0xffdf,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2104,0x2965,0x39c6,0x4249,0x2986,0x18c3,0x18e3,0x18a2,0x2986,0x52ab,0x3186,0x18c3,0x2104,0x1904,0x18c4,0x18e4,0x18e4,0x2104,0x1904,0x18e4,0x2104,0x2104,0x1904,0x18c3,0x2104,0x18e4,0x18c4,0x2125,0x2125,0x2104,0x2104,0x2104,0x2125,0x18e4,0x1904,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18c3,0x2104,0x1904,0x18c3,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e4,0x1904,0x18e3,0x18e4,0x2104,0x20e4,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2966,0x2104,0x6b6d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x2146,0x39e8,0x0000,0x8c92,0xc639,0x8c92,0x2986,0x18e4,0x2125,0x4a69,0x31a6,0x7bef,0x8430,0x39e7,0x4a69,0x4249,0x4229,0x4209,0x4229,0x630d,0x8410,0x9492,0x8c52,0x630c,0x2125,0x10a3,0x10a3,0x1082,0x0862,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0862,0x0041,0x0881,0x18e3,0x10c3,0x2144,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2985,0x4208,0x2945,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x1081,0x1081,0x0860,0x0020,0x0861,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2944,0x2945,0x2945,0x2965,0x3185,0x3185,0x3185,0x3186,0x31a6,0x39c6,0x31a6,0x39c6,0x39c6,0x39c6,0x39c6,0x39c7,0x39e7,0x39e7,0x39c6,0x39e7,0x4207,0x39e7,0x4207,0x39e7,0x4207,0x39e7,0x2965,0x2104,0x2124,0x2965,0x0000,0x8c50,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x6b4d,0xe73c,0xffff,0xffdf,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xdedb,0xad55,0xc618,0x8c51,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffdf,0xffff,0xe71c,0x9492,0xbdd7,0x9cd2,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39e7,0x4229,0x39e8,0x18c2,0x18e3,0x2965,0x2125,0x39e8,0x2125,0x18e4,0x18e4,0x18c3,0x2104,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x18c3,0x18c3,0x18e4,0x18c3,0x10c3,0x18e4,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x18c3,0x10c3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a3,0x1082,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x10a3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x1904,0x2104,0x2104,0x2125,0x2104,0x2124,0x2125,0x0000,0x7bef,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x3187,0x10a3,0x73d0,0x9d15,0x7bf0,0x2105,0x0000,0x0841,0x0020,0x2124,0x0061,0x4a69,0x8451,0x5b0b,0x39e7,0x4228,0x4228,0x4229,0x4209,0x31a8,0x10a4,0x0000,0x0000,0x0040,0x2144,0x2145,0x2124,0x18c3,0x0861,0x0840,0x0020,0x0861,0x18c3,0x18c3,0x1082,0x0862,0x0841,0x0020,0x0000,0x2124,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2144,0x3186,0x4228,0x4a49,0x39c7,0x31a6,0x39c7,0x31c7,0x3186,0x4a49,0x5acb,0x5aeb,0x8410,0xad75,0xb5d6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xbdd6,0xbdd7,0xbdd6,0xbdd7,0xc617,0xce59,0xd699,0xce79,0xce59,0xc618,0xc618,0xd69a,0xdedb,0xdedb,0xdedb,0xdeda,0xdeda,0xdeda,0xdeda,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0x8cb8,0x7417,0x8cb8,0x4ad4,0x9cd2,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xf7be,0xe73c,0xf7be,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b4d,0x0000,0x2965,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdefb,0xd69a,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xce7a,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39e7,0x39e8,0x52ab,0x2944,0x18e3,0x39e7,0x3186,0x2104,0x18c3,0x2104,0x2104,0x2104,0x2125,0x2104,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2104,0x1904,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x2104,0x2124,0x2104,0x2104,0x2104,0x2125,0x2105,0x2104,0x2945,0x0000,0x73ae,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x5b0c,0x4229,0x52cb,0x0000,0x0000,0x73cf,0x632c,0x10c4,0x10a3,0x2104,0x2945,0x0000,0x632c,0x6b4d,0x4208,0x4228,0x4228,0x4a49,0x4a6a,0x528a,0x528a,0x4a69,0x4229,0x31c7,0x3186,0x2125,0x1904,0x18c3,0x0841,0x0020,0x0840,0x0861,0x1082,0x0861,0x0841,0x0841,0x0000,0x1082,0x31a6,0x39c7,0x3186,0x3186,0x2965,0x2985,0x2965,0x2965,0x2145,0x1924,0x2104,0x2945,0x31a7,0x52cb,0x73cf,0x73cf,0x9d14,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0820,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2965,0x39c7,0x31c8,0x73af,0x4208,0x10a2,0x4a69,0x2986,0x2125,0x1904,0x2104,0x2104,0x1904,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2105,0x2125,0x2945,0x0000,0x73cf,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x73cf,0x2966,0x0000,0x73af,0xb5b7,0xbe18,0x8431,0x10c4,0x18c3,0x2986,0x4a49,0x2125,0x0000,0x52ab,0x4208,0x18e4,0x39c7,0x4229,0x4a49,0x4a6a,0x4a6a,0x4a49,0x39e8,0x3187,0x2946,0x2125,0x18e4,0x18c3,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x18e3,0x31a6,0x39c7,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2986,0x2986,0x2166,0x2166,0x1925,0x10c3,0x10e4,0x1925,0x73cf,0xc638,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x632c,0x0000,0x2965,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x2965,0x2124,0x2104,0x2965,0x41e7,0x29c8,0x8c72,0x528a,0x0020,0x52aa,0x31a6,0x2104,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2105,0x2125,0x2945,0x0000,0x738e,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7c10,0x1904,0x39e8,0x8c72,0x7c10,0x0001,0x0000,0x0000,0x0041,0x0000,0x0841,0x10a3,0x0020,0x4229,0x39c7,0x10a2,0x0000,0x1083,0x2945,0x2966,0x2966,0x3186,0x2965,0x2945,0x1904,0x18c3,0x10a2,0x0861,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x1082,0x18e3,0x39e7,0x4a49,0x39c7,0x2965,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2166,0x2186,0x2186,0x2986,0x2145,0x1904,0x0000,0x0000,0x632c,0x9d14,0xb5d7,0xceba,0xb5da,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2945,0x0000,0x52aa,0xdedb,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xbdd7,0x2124,0x2103,0x2965,0x0000,0x9cd3,0xf7be,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xef5d,0x7bef,0x0000,0x3185,0x0861,0x4228,0xd69a,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xc618,0x31a6,0x18c2,0x2945,0x2124,0x2104,0x3185,0x4207,0x1126,0xbdf7,0x6b6d,0x0000,0x5aeb,0x39c7,0x18c4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x1904,0x18e4,0x1904,0x1904,0x1904,0x2104,0x2104,0x2104,0x2125,0x2945,0x0000,0x73ae,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5b7,0x4229,0x4a8a,0x0000,0x39e8,0x7bf0,0x6b8e,0x31a7,0x0841,0x18c3,0x10a3,0x0882,0x10c3,0x0000,0x0020,0x2124,0x18c3,0x0000,0x0000,0x0000,0x0841,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x39e7,0x39c7,0x39e7,0x2124,0x0000,0x0020,0x10a2,0x2965,0x5acb,0x8410,0x738e,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x39e8,0x426a,0x3269,0x5b6d,0x8472,0xa555,0xc638,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2124,0x2945,0x0000,0x5aca,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x840f,0x31a6,0x0000,0x2945,0x2124,0x18e3,0x2103,0x73ae,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x6b4d,0x0000,0x2944,0x2124,0x2944,0x0000,0x528a,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x8410,0x8430,0x8410,0x39e7,0x0000,0x2945,0x2124,0x2124,0x2103,0x31a6,0x4a28,0x0004,0xdedb,0xa514,0x0000,0x4a69,0x4228,0x10a3,0x2125,0x2104,0x2125,0x2125,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x2125,0x2125,0x2125,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x1904,0x2104,0x2104,0x1904,0x18e4,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x1904,0x2105,0x2105,0x2104,0x2104,0x2125,0x2966,0x0000,0x8430,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6bb,0x4a6a,0x0000,0x52cb,0xc639,0xc639,0x7bef,0x31c7,0x1082,0x18e3,0x2125,0x18e3,0x0862,0x1082,0x0841,0x1082,0x1082,0x0841,0x2104,0x2965,0x3186,0x31c7,0x2945,0x0000,0x1082,0x10a3,0x0020,0x0020,0x0841,0x0000,0x2104,0x4208,0x31a6,0x39c7,0x2965,0x10a2,0x2104,0x2965,0x31a6,0x632c,0x7bcf,0x6b6d,0x4207,0x31a6,0x39e7,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x31c7,0x31e7,0x31c7,0x31e7,0x31c7,0x39e8,0x31c7,0x31c7,0x3a29,0x424a,0x424a,0x42ab,0x5b4e,0x7430,0x9514,0xb5f7,0xdefb,0x5b75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x2945,0x2124,0x2124,0x2944,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x2124,0x2124,0x2104,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x2945,0x2104,0x2124,0x2124,0x2104,0x31a6,0x4a48,0x0003,0xdedb,0x4ad4,0x8c71,0x632c,0x39c7,0x10a3,0x2125,0x1904,0x1904,0x2104,0x2104,0x2104,0x2125,0x2125,0x2125,0x2104,0x2104,0x2104,0x2125,0x2125,0x2104,0x2105,0x2104,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2125,0x2104,0x2104,0x2104,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x18e4,0x1904,0x2104,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x2125,0x2966,0x0000,0x73af,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x5b0c,0x2966,0x52cb,0x2966,0x0000,0x10a2,0x18c3,0x18c3,0x18e3,0x18c3,0x0021,0x0021,0x0841,0x0841,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2965,0x31a6,0x2104,0x0000,0x1082,0x10a2,0x0020,0x0020,0x0841,0x0020,0x0841,0x2965,0x31a6,0x3186,0x3186,0x3186,0x2965,0x4228,0x4208,0x1082,0x0000,0x39e7,0x4a89,0x2144,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31a6,0x39e8,0x3a08,0x31c7,0x39c7,0x3187,0x3166,0x39c8,0x3a09,0x3a49,0x42ab,0x3aaa,0x4b0c,0x4aeb,0x6baf,0x94d3,0xb5d7,0xd6ba,0xce7b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2945,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2944,0x2124,0x2124,0x2124,0x2124,0x2965,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x2965,0x2124,0x2124,0x2124,0x2124,0x2103,0x31a6,0x4a48,0x0004,0xd6bb,0x4ad4,0x4ad4,0xc638,0x0000,0x2125,0x2105,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2125,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2125,0x2125,0x2124,0x2104,0x2125,0x2125,0x2125,0x2104,0x2104,0x2125,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x1904,0x2104,0x18e4,0x18e4,0x1904,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x2125,0x2104,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2986,0x0000,0x738e,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x634d,0x31c8,0x10a2,0x0021,0x2125,0x2966,0x2945,0x2124,0x2104,0x1082,0x0020,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a3,0x2145,0x2966,0x2945,0x18c3,0x0020,0x0020,0x1082,0x1082,0x0020,0x0000,0x0841,0x0861,0x0000,0x0000,0x2124,0x3186,0x31a6,0x39c7,0x3186,0x39c7,0x39c7,0x0000,0x18c3,0x528a,0x39e7,0x1904,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x4228,0x2965,0x4208,0x4208,0x39e8,0x4229,0x39e8,0x31a7,0x39c7,0x31a7,0x31c7,0x39c7,0x3186,0x39c7,0x31a6,0x3186,0x3166,0x2105,0x1022,0x0000,0x0000,0x0000,0x6b6d,0xa534,0xbdf7,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2944,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x2124,0x2124,0x2944,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x2124,0x39c7,0x4a48,0x0004,0xd6db,0x4ad4,0x4ad4,0xd6ba,0x0000,0x2945,0x2945,0x2945,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2104,0x2125,0x2125,0x2124,0x2124,0x2105,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18c3,0x18e4,0x18c3,0x18c3,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x2104,0x2104,0x2105,0x2105,0x2125,0x2125,0x3186,0x0000,0x7baf,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x6b6e,0x0000,0x2966,0x31a7,0x3186,0x2125,0x2124,0x2125,0x2125,0x1082,0x1082,0x1082,0x0841,0x1082,0x18c3,0x18e4,0x2104,0x2145,0x2945,0x1082,0x0000,0x0020,0x0020,0x18c3,0x18c3,0x0841,0x0020,0x0841,0x0841,0x0020,0x0000,0x0000,0x2945,0x39c7,0x39c7,0x39c7,0x3186,0x4208,0x39e7,0x39e7,0x39e7,0x0000,0x2985,0x39e7,0x31c7,0x3a07,0x3a08,0x31c7,0x2125,0x18e4,0x39c7,0x2966,0x2966,0x39c7,0x39c7,0x31a7,0x2986,0x39e7,0x39c7,0x31a7,0x31a7,0x39c7,0x31a6,0x39e8,0x31a7,0x31c7,0x31c7,0x39c7,0x39e7,0x31c7,0x1924,0x0000,0x0000,0x5b0c,0x8451,0xb5d7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x1082,0x7bcf,0xad75,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0x738d,0x0000,0x2124,0x2944,0x18c2,0x4208,0x9cd3,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb5b6,0x9cf3,0x39c7,0x18c2,0x2944,0x2124,0x0861,0x738e,0xad75,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb595,0xb596,0xb596,0xb596,0xb596,0xb596,0x7bcf,0x0000,0x2124,0x2124,0x2124,0x2124,0x31a6,0x4a48,0x0004,0xd6db,0x4ad4,0x4ad4,0xd6ba,0x0000,0x18a3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0862,0x0862,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x1082,0x0882,0x0862,0x0862,0x1082,0x0862,0x0862,0x0862,0x0862,0x0882,0x1082,0x1082,0x1082,0x1082,0x0862,0x0862,0x0882,0x0862,0x0862,0x0862,0x0862,0x0841,0x0862,0x0862,0x0841,0x0841,0x0841,0x0862,0x0861,0x0841,0x0841,0x0862,0x0862,0x0861,0x0862,0x0841,0x0841,0x0841,0x0862,0x0862,0x0841,0x0861,0x0861,0x0861,0x0861,0x0862,0x0862,0x0862,0x0862,0x1082,0x18e3,0x0000,0x6b2d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x5aec,0x10a3,0x39e7,0x31a6,0x2966,0x2945,0x2125,0x1904,0x18e4,0x10a2,0x0020,0x0020,0x0841,0x10a2,0x10c3,0x2104,0x2945,0x2125,0x18e4,0x0000,0x0020,0x0020,0x0020,0x1082,0x18a3,0x0841,0x0020,0x0020,0x0000,0x0020,0x10a2,0x18c3,0x2965,0x31a6,0x3186,0x2965,0x3186,0x4228,0x4228,0x2945,0x0000,0x2125,0x39c7,0x31c6,0x39c7,0x31c6,0x2124,0x2125,0x2966,0x31c7,0x2945,0x2125,0x2966,0x31a7,0x39e8,0x39c7,0x39e8,0x39c7,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39c7,0x39e8,0x39e8,0x0842,0x0000,0x0021,0x632d,0xa514,0xd69a,0xce7b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x6b4d,0xdefb,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xdefb,0x5289,0x0000,0x2965,0x0000,0xa534,0xf79e,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffdf,0xad55,0x0000,0x3185,0x0000,0x5acb,0xd6ba,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xe73c,0x630c,0x0000,0x2965,0x2124,0x2103,0x31a6,0x4a48,0x0003,0xd6bb,0x4ad4,0x4ad4,0xdefb,0x31e7,0x0000,0x2104,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2124,0x2104,0x2125,0x2145,0x2945,0x2145,0x2945,0x2125,0x2145,0x2945,0x2125,0x2145,0x2125,0x2125,0x2125,0x2145,0x2945,0x2945,0x2945,0x2945,0x2125,0x2125,0x2125,0x2125,0x2945,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2945,0x2125,0x2145,0x2945,0x2145,0x2145,0x2945,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2125,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2944,0x2944,0x2944,0x2985,0x0000,0x7bef,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7a,0x632c,0x10c3,0x31c7,0x3186,0x3186,0x3186,0x2966,0x2945,0x2104,0x18c3,0x18c3,0x10a2,0x0000,0x0841,0x18e3,0x18e4,0x18e4,0x2966,0x2966,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x2124,0x2965,0x2965,0x2965,0x18e3,0x1082,0x2945,0x2965,0x10a2,0x0000,0x2104,0x31a7,0x3186,0x3186,0x2945,0x2125,0x2945,0x31a7,0x2945,0x31a7,0x2966,0x31a7,0x31a7,0x39c7,0x39c7,0x3186,0x39e8,0x3a08,0x3186,0x2966,0x39e8,0x31a7,0x3186,0x31a7,0x3187,0x3186,0x31a7,0x3186,0x3186,0x31a7,0x2966,0x2966,0x31a7,0x39e8,0x3a08,0x31a7,0x10a3,0x1083,0x2945,0x4a8a,0x7bf0,0xbdd7,0xdedb,0xdf1c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x840f,0x0000,0x3186,0x2124,0x2104,0x31a6,0x4a48,0x0003,0xd6bb,0x4ad4,0x4ad4,0xe71c,0x52aa,0x18a3,0x31a7,0x3186,0x2966,0x2966,0x2966,0x2966,0x3186,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2945,0x2966,0x2966,0x2965,0x2965,0x2966,0x2945,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2125,0x2945,0x2945,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2125,0x2145,0x2945,0x2145,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2965,0x2986,0x0000,0x94b3,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x9cf4,0x31c7,0x10a3,0x39c7,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2125,0x2104,0x18e4,0x0861,0x18c3,0x18c3,0x0841,0x0861,0x18c3,0x18c3,0x18e3,0x2966,0x2966,0x2945,0x18e3,0x10a2,0x0861,0x0841,0x0841,0x0020,0x0020,0x0841,0x0841,0x0020,0x0861,0x18e3,0x2104,0x2104,0x10a2,0x1082,0x0861,0x0000,0x10a2,0x2124,0x2965,0x2125,0x1904,0x2125,0x2125,0x2966,0x39e7,0x2986,0x2945,0x3186,0x39c7,0x31c7,0x31a7,0x3186,0x39c7,0x39c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x31a7,0x3186,0x31a7,0x31a7,0x3187,0x2966,0x31a7,0x3186,0x3186,0x3186,0x2986,0x3186,0x39c7,0x39c7,0x31a6,0x3166,0x39e8,0x5b0c,0x1925,0x0000,0x0001,0x634d,0x9d14,0xbdf8,0xd6ba,0x5b76,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2104,0x3186,0x4a28,0x0002,0xd6bb,0x4ad4,0x4ad4,0xe75d,0x634d,0x0000,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2145,0x2145,0x2125,0x2145,0x2125,0x2145,0x2945,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2124,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2145,0x2946,0x2946,0x2966,0x0000,0xad54,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0xce79,0x8c92,0x4a48,0x20c2,0x4208,0x39e8,0x39c7,0x39c7,0x39c6,0x31a6,0x2986,0x2965,0x2125,0x2104,0x1904,0x18c2,0x0861,0x10c2,0x18e3,0x18e3,0x10a3,0x0841,0x0000,0x1082,0x18e4,0x18e4,0x2945,0x2944,0x1082,0x0020,0x1082,0x0861,0x0020,0x0841,0x0040,0x0040,0x0881,0x10a2,0x10a2,0x0882,0x0861,0x0861,0x1082,0x18c3,0x2104,0x2125,0x10c3,0x3186,0x39e8,0x3186,0x3186,0x2104,0x2145,0x3186,0x39c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x3186,0x31a7,0x31c7,0x2966,0x31a7,0x31c7,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2986,0x2946,0x3186,0x31a7,0x3186,0x2966,0x2144,0x10a2,0x0000,0x0000,0x20e3,0x18c3,0x2945,0x3186,0x2946,0x0000,0x0000,0x3a08,0x7c30,0xa535,0xce9a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xd69a,0xb5b6,0xc618,0xc618,0xce59,0xf7be,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xad55,0xa514,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xef7d,0xb596,0xa534,0xbdd7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2104,0x2965,0x4228,0x0001,0xd6bb,0x4ad4,0x4ad4,0x8cb8,0x73cf,0x0000,0x31a7,0x2966,0x2966,0x2945,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2945,0x2125,0x2125,0x2945,0x2125,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2145,0x2145,0x2125,0x2145,0x2125,0x2125,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2945,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2145,0x2945,0x2125,0x2125,0x2125,0x2945,0x2145,0x2145,0x2945,0x2945,0x2945,0x2966,0x2946,0x0000,0xbdd6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0xb596,0x0863,0x0000,0x39a6,0x4a28,0x4208,0x4208,0x39e7,0x39e7,0x39c6,0x3186,0x3186,0x2966,0x2125,0x2124,0x2104,0x18e3,0x18c3,0x0861,0x10a2,0x2104,0x2966,0x31a6,0x2986,0x2945,0x2125,0x2104,0x2104,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x0881,0x0861,0x0881,0x10a2,0x10a2,0x0861,0x0882,0x10c2,0x10a2,0x18c3,0x18e4,0x2104,0x2104,0x18e4,0x18c3,0x31a7,0x4208,0x2945,0x2125,0x2986,0x2966,0x3186,0x3186,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x39c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x3186,0x3186,0x31a7,0x31a7,0x3186,0x31a7,0x3186,0x2966,0x3186,0x2986,0x31a7,0x31a6,0x2966,0x2125,0x2124,0x0000,0x0000,0x31e7,0x632d,0x6bb0,0x634d,0x424a,0x2125,0x10a4,0x2966,0x2966,0x2145,0x0000,0x0000,0x39e8,0x6b6e,0x8c92,0xce79,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2124,0x2124,0x3165,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xbdf7,0xa534,0xdedb,0xa534,0x9492,0xffdf,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffdf,0xffff,0xf79e,0x632c,0xc638,0xdedb,0x632c,0xef7d,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0x9cf3,0xa534,0xf79e,0xa554,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2965,0x4207,0x0000,0xd6bb,0x4ad4,0x4ad4,0x4ad4,0x8451,0x0000,0x31a7,0x2966,0x2966,0x2965,0x2966,0x2966,0x2945,0x2966,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2145,0x2145,0x2945,0x2945,0x2145,0x2145,0x2945,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2125,0x2945,0x2145,0x2145,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2945,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2105,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2145,0x2125,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2125,0x0000,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0xc618,0x0000,0x31c7,0x31c7,0x2125,0x2104,0x2945,0x31a6,0x39c7,0x39c7,0x39e7,0x39c7,0x3186,0x2966,0x2945,0x2125,0x2104,0x1903,0x18e3,0x10c3,0x10a2,0x0881,0x1082,0x1904,0x2945,0x3186,0x31c7,0x39c7,0x39c6,0x3185,0x3186,0x3186,0x2124,0x18e3,0x18e3,0x10a2,0x0861,0x10a2,0x10a2,0x0882,0x10a2,0x18e3,0x1903,0x2104,0x2125,0x1904,0x10a3,0x18c3,0x2125,0x18c3,0x18e4,0x2125,0x3186,0x3186,0x2966,0x3186,0x2966,0x31a7,0x3186,0x2966,0x31a7,0x2986,0x3186,0x31a7,0x3186,0x31a7,0x31a7,0x3186,0x2966,0x3186,0x31a7,0x2966,0x2986,0x3186,0x2966,0x2966,0x2966,0x3186,0x2966,0x2104,0x18c3,0x0000,0x0000,0x4a6a,0x94f4,0xcebb,0xd6fd,0xc6dc,0xc67b,0xb5f8,0x9d36,0x7bf1,0x4a8b,0x52ab,0x4229,0x31a7,0x39e7,0x2986,0x0000,0x0002,0x3a08,0x4a6a,0x8451,0xce79,0xef5d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xf7be,0x9cd3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8410,0xe71c,0xf7be,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bce,0xef7d,0xffff,0xffdf,0xffff,0xe73c,0x4a49,0xe73c,0xffff,0xdedb,0x5aeb,0xef7d,0xffff,0xffdf,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2944,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x94b2,0x0000,0x31a7,0x2966,0x2966,0x2965,0x2965,0x2966,0x2945,0x2966,0x2966,0x2945,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2945,0x2145,0x2145,0x2125,0x2145,0x2145,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2124,0x0000,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce7b,0x4a6a,0x4249,0x4a8a,0x3a08,0x31a7,0x2966,0x2125,0x2124,0x2124,0x2145,0x2966,0x3186,0x3186,0x2966,0x2945,0x2125,0x2104,0x2124,0x1903,0x18c3,0x10c2,0x10a2,0x0861,0x0021,0x0862,0x0841,0x0041,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x1904,0x18e3,0x1904,0x18e3,0x18c3,0x0862,0x18c3,0x1904,0x10a3,0x2104,0x2945,0x2966,0x2966,0x2966,0x2966,0x3186,0x2986,0x3186,0x3186,0x3186,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x2986,0x3186,0x3186,0x31a7,0x3186,0x2966,0x2966,0x3186,0x2966,0x3186,0x3186,0x2986,0x2966,0x18e4,0x1082,0x1082,0x52cb,0x94d3,0xb5f8,0xb619,0xa597,0xb61a,0xb67b,0xcedd,0xcebc,0xc69b,0xcedc,0xdf1d,0xad97,0x4a8b,0x2966,0x31a6,0x31a6,0x2966,0x39e8,0x4a6a,0x10a4,0x10c4,0x0000,0x3a08,0x9cd3,0xce59,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2103,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x94b2,0x9cd3,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0xbdf7,0xffff,0xb5b6,0x31a6,0xe73c,0xffff,0xffdf,0xffff,0xf7be,0x7bcf,0x0000,0x2965,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x9cf3,0x0000,0x39c7,0x2966,0x2986,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2145,0x2145,0x2125,0x2145,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2125,0x2945,0x2125,0x2945,0x2945,0x2966,0x2946,0x2945,0x2965,0x2986,0x18e4,0x2965,0xdeda,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce7a,0x2186,0x4a8a,0x4a6a,0x4249,0x4249,0x3a29,0x39e8,0x31a7,0x2965,0x2124,0x18e4,0x18e4,0x2104,0x2125,0x2145,0x2125,0x2125,0x2124,0x1903,0x1903,0x18c3,0x18c2,0x10a2,0x10a2,0x10c3,0x1082,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0881,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x0881,0x10a2,0x18e4,0x0862,0x18c3,0x2104,0x2104,0x2125,0x2125,0x2945,0x2966,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x3186,0x3186,0x3186,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2966,0x3186,0x2966,0x3186,0x3186,0x31a7,0x3186,0x31a7,0x2946,0x4a49,0x52ab,0x31c7,0x2986,0x2104,0x7c31,0xbe7a,0xadd9,0xc65a,0x9d34,0x8472,0xa557,0x6bd0,0xc67b,0xdf5f,0xcf1d,0xb5d7,0x6b6f,0x10c4,0x2966,0x0000,0x0000,0x0000,0x20e4,0x1882,0x1042,0x2945,0x31a7,0x31a7,0x0043,0x0000,0x31e8,0x8c71,0xad75,0xc659,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0xc638,0xd69a,0x6b6d,0xce79,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bce,0xef7d,0xffff,0xffff,0xffff,0xffff,0xe71c,0x9492,0xbdd7,0xad55,0x738e,0xef7d,0xffff,0xffdf,0xffff,0xf7be,0x7bcf,0x0000,0x3186,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0xa535,0x0000,0x31a7,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2945,0x2966,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2125,0x2945,0x2945,0x2945,0x2945,0x2145,0x2125,0x2145,0x2125,0x2125,0x2125,0x2945,0x2945,0x2945,0x2145,0x2125,0x2945,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2145,0x2125,0x2145,0x2945,0x2145,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2145,0x3186,0x10a3,0x5289,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb5b7,0x3a08,0x52ab,0x4a6a,0x424a,0x4229,0x4249,0x4229,0x4229,0x4209,0x39e8,0x3186,0x2145,0x2104,0x18c3,0x18e4,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2145,0x10c3,0x2104,0x2104,0x2124,0x2125,0x2125,0x2125,0x2966,0x2945,0x2966,0x3186,0x2966,0x31a7,0x31a7,0x3186,0x2986,0x31a7,0x2986,0x2966,0x3186,0x2986,0x3186,0x3186,0x3186,0x2966,0x3186,0x3186,0x2986,0x2124,0x2124,0x2124,0x31a7,0x39c7,0x31a7,0x4208,0x39c7,0x3a29,0x3a8b,0x52ed,0xa576,0xcedc,0xdf3c,0xbe3a,0xadb8,0xd6fd,0xb5f9,0x5b4e,0x0000,0x0000,0x10c3,0x0000,0x2965,0x94d3,0xbe3a,0xbe39,0xad97,0x8452,0x5b0d,0x31c7,0x2945,0x10c2,0x2125,0x3187,0x0000,0x0000,0x1124,0x6b8e,0x8c92,0xc639,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0840,0xc638,0xffff,0xffff,0xffdf,0xffff,0xad75,0x8430,0xffff,0xffff,0x8430,0x9492,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bce,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xf79e,0xb5b6,0xa534,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3186,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0xa555,0x0000,0x39e7,0x2966,0x2966,0x2986,0x3186,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x3186,0x2966,0x2966,0x2965,0x2965,0x2966,0x2966,0x2966,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2965,0x2945,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2946,0x2125,0x2945,0x2925,0x2945,0x2945,0x2925,0x2945,0x2125,0x2125,0x2125,0x2125,0x2945,0x2945,0x2125,0x2125,0x2945,0x2125,0x2125,0x2945,0x2925,0x2125,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2966,0x3166,0x3186,0x3186,0x2986,0x2986,0x3186,0x2986,0x3186,0x3186,0x3186,0x3186,0x39e7,0x0000,0x736d,0xb5fa,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xbdb7,0x3a08,0x52cb,0x4aab,0x4a6a,0x4249,0x4249,0x4229,0x4229,0x4229,0x424a,0x4229,0x3a08,0x39c7,0x3186,0x2966,0x2125,0x2104,0x1904,0x1904,0x2104,0x1904,0x18e4,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x1903,0x2125,0x2104,0x18a3,0x18c3,0x18e4,0x18e4,0x1904,0x2104,0x2124,0x2124,0x1904,0x1904,0x2104,0x2104,0x2125,0x2125,0x2125,0x2125,0x2945,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2986,0x2986,0x31a7,0x3186,0x2966,0x2986,0x2986,0x3186,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x1904,0x18e3,0x18e3,0x0000,0x0000,0x0001,0x2966,0x2125,0x0000,0x0042,0x2944,0x3164,0x2945,0x0003,0x424a,0x6baf,0x7c32,0x8cd3,0x634e,0x0000,0x0000,0x2945,0x0000,0x0000,0x73d0,0xcebc,0xd71d,0xc6bc,0xcefd,0xd71d,0xd6fd,0xc65b,0xb5d8,0x8c93,0x6b8f,0x6b6e,0x4229,0x31a7,0x39e8,0x3187,0x0000,0x0000,0x39e7,0x4aab,0x73af,0xb5b7,0xe73c,0x4ad4,0x4ad4,0xa535,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x8430,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x73ae,0xdefb,0xe71c,0x7bcf,0xd69a,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xf79e,0xf79e,0xe73c,0x8430,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2104,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0xce59,0x0000,0x2945,0x39e7,0x31a6,0x39c7,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x2966,0x2945,0x2965,0x2966,0x2965,0x2966,0x2966,0x2945,0x2966,0x2945,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2925,0x2945,0x2945,0x2125,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x10a3,0x0000,0x10a3,0x0001,0x0000,0x0000,0x0002,0x0822,0x0862,0x10c3,0x1904,0x18c4,0x18c4,0x18c4,0x18c4,0x20e4,0x1061,0x0000,0xb5b6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb5b7,0x3a09,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4249,0x4229,0x4229,0x4229,0x4229,0x4249,0x424a,0x4229,0x3a09,0x31c8,0x3186,0x2125,0x2105,0x2125,0x2104,0x2104,0x2104,0x1904,0x18c3,0x10c3,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x2125,0x31a6,0x31a7,0x2925,0x2125,0x2145,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x2125,0x2125,0x2145,0x2945,0x2966,0x2145,0x2945,0x2945,0x2965,0x2966,0x2966,0x2986,0x2966,0x2966,0x2966,0x31a7,0x2986,0x2966,0x2966,0x2125,0x18c3,0x18a2,0x0000,0x0000,0x4aab,0x8c93,0x9d35,0xa556,0x8cb4,0x73f0,0x530d,0x31c8,0x0000,0x0000,0x39a7,0x1802,0x0000,0x0880,0x0000,0x0000,0x2964,0x2965,0x0000,0x7bf0,0xce9a,0xe77e,0xa5b8,0xbe7b,0xcefd,0xadb8,0xadd9,0xcebc,0xc69c,0xbe7c,0xd73e,0xdf5e,0xa577,0x424a,0x2925,0x2945,0x2965,0x2124,0x39e7,0x4a28,0x20e5,0x18c4,0x2104,0x1924,0x6b8d,0xbe38,0x8c71,0x1000,0x31a7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xc638,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0xa534,0xad55,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xef5d,0xad75,0xad75,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c3,0x2966,0x3186,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2946,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2125,0x2125,0x2945,0x2125,0x2945,0x2945,0x2945,0x2925,0x2925,0x2125,0x2945,0x2945,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x18e4,0x4229,0x4a6a,0x39c7,0x528a,0x5acb,0x52ab,0x4a69,0x4228,0x4228,0x41e7,0x2944,0x31a6,0x31a6,0x39c6,0x39e7,0x39c6,0x4a48,0xa534,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb596,0x3a08,0x5acb,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x424a,0x426a,0x424a,0x424a,0x422a,0x424a,0x426a,0x4a6a,0x4a4a,0x4249,0x4209,0x39c7,0x31a7,0x2986,0x2125,0x2124,0x2104,0x18e4,0x2104,0x2125,0x0001,0x0842,0x0000,0x18c4,0x18a4,0x18e3,0x2966,0x31c7,0x3186,0x31a6,0x2986,0x2945,0x2104,0x18e4,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2125,0x2125,0x2125,0x2125,0x2145,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2966,0x2966,0x2966,0x2986,0x3186,0x2966,0x3186,0x2966,0x2966,0x2965,0x10a2,0x0841,0x0000,0x0000,0x4209,0x9d15,0xc69b,0xdf5e,0xd71d,0xbe5b,0xbe5a,0xb63a,0xadb8,0x9515,0x8d15,0x84b3,0x3208,0x2986,0x39e7,0x39a7,0x3186,0x5aec,0x5aec,0x39c8,0x2104,0x8c92,0xbe39,0xce9b,0x8cf5,0x8cd4,0x9515,0xa597,0x8cb3,0x63b0,0xcefd,0xdf7f,0xbebc,0x9514,0x2987,0x18c4,0x2125,0x0000,0x0000,0x1081,0x39e7,0x0862,0x1002,0x3166,0x4229,0x4208,0x31a6,0x0000,0x2965,0x4208,0x2965,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7de,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce59,0xbdf7,0xc617,0xc618,0xc618,0xc618,0xbdf8,0xbdf8,0xbdf8,0xc618,0xbdf7,0xc618,0xce59,0x6b6e,0x0000,0x2945,0x2124,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x0000,0xa534,0xe71c,0xd6bb,0xdefb,0xe71c,0xe71c,0xdefb,0xdefb,0xdefb,0xdeda,0xd6ba,0xd6ba,0xd6ba,0xdedb,0xdedb,0xdeba,0xe71b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xa535,0x4208,0x52eb,0x4aaa,0x52ab,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4a4a,0x4a4a,0x424a,0x4249,0x4249,0x4249,0x4249,0x4249,0x424a,0x4a6a,0x426a,0x4249,0x4229,0x39c7,0x3187,0x2105,0x2945,0x31a7,0x10c3,0x7c31,0x7410,0x6bae,0x6b8e,0x4acb,0x31c8,0x18e4,0x18c3,0x1904,0x2145,0x3186,0x31a7,0x31a7,0x2965,0x1904,0x2104,0x2104,0x2125,0x2105,0x2125,0x2125,0x2125,0x2145,0x2945,0x2145,0x2945,0x2945,0x2966,0x2945,0x2966,0x2966,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x31a7,0x39c7,0x2966,0x18c3,0x0820,0x426a,0x9515,0xc67b,0xbe5a,0xa576,0x7c32,0xa5b8,0xcedc,0xcebc,0xbe5b,0xc69b,0xdf5e,0xc6dc,0x7c52,0x29a7,0x2986,0x2965,0x1001,0x0000,0x2926,0x39a7,0x3187,0x3a29,0x00a3,0x0000,0x4a8b,0x7c32,0x5b2d,0x6b6e,0xadd8,0xc67b,0xcebc,0xcedc,0x9d15,0x3a29,0x0000,0x18c3,0x10a3,0x0000,0x3185,0x9d15,0xc65a,0xbe5a,0xadd8,0x8cb3,0x5b2d,0x31a8,0x3146,0x2924,0x2966,0x39e8,0x4207,0x2985,0x2104,0x2124,0x3185,0x0000,0x8c71,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0840,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce59,0x0000,0x3186,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x8410,0x0000,0x2965,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x0000,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xa535,0x4a6a,0x5aec,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4269,0x4269,0x4269,0x4269,0x4249,0x4249,0x4229,0x4229,0x424a,0x4a6a,0x424a,0x4a4a,0x4229,0x424a,0x4a8a,0x0000,0x6bcf,0xa5b6,0x9535,0x9534,0x8cf4,0x8492,0x7c10,0x6b8e,0x52cb,0x3208,0x1925,0x0021,0x1062,0x2145,0x2966,0x1904,0x2104,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2945,0x2945,0x2945,0x2965,0x2945,0x2966,0x2966,0x2966,0x2966,0x2986,0x2966,0x3186,0x31a6,0x2986,0x2124,0x4208,0x632d,0x4a49,0x39c7,0x3185,0x426b,0x9d57,0xadd8,0x8cd4,0xcedc,0xbe19,0x7c32,0xc67b,0x9d36,0xc67a,0xdf3e,0x9d36,0x4a8a,0x0000,0x2125,0x18a3,0x0000,0x0002,0x52cb,0x5b0c,0x428a,0x2166,0x0000,0x10e4,0x39e8,0x31a7,0x18a2,0x4228,0x4a8a,0x4a6a,0x6bb0,0x8472,0x52cb,0x0000,0x0000,0x2966,0x0000,0x0000,0x73d0,0xce9b,0xd6dc,0xcedd,0xd73e,0xd73e,0xcedc,0xc69b,0xb5f9,0x9494,0x73b0,0x6b4e,0x4a49,0x39e7,0x3185,0x2103,0x2124,0x2965,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x528a,0x0000,0x2965,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x31a6,0x0000,0x6b6d,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x632c,0x0000,0x2965,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x0000,0x18e3,0x2104,0x2103,0x2103,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x0000,0x4a49,0xdedb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce9a,0x4a8a,0x52ab,0x52cb,0x52ab,0x528a,0x4a49,0x4269,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4269,0x4249,0x4249,0x4249,0x4249,0x4269,0x4249,0x4249,0x4249,0x4249,0x4249,0x4229,0x630c,0x3a08,0x2165,0xa596,0xadd8,0x9515,0x9535,0x9515,0x9515,0x94f4,0x8cd3,0x8492,0x7430,0x638e,0x5b4d,0x4aab,0x2145,0x18e4,0x2965,0x2104,0x18e4,0x1904,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2966,0x2945,0x2945,0x2966,0x2966,0x2966,0x2966,0x2986,0x2987,0x2966,0x2125,0x18e3,0x18e3,0x1082,0x1904,0x2145,0x31a7,0x39e8,0x31c7,0x2145,0x1904,0x5b2c,0x9d35,0xd6bb,0xa576,0x6390,0xb5d8,0xbe19,0x52ac,0x0000,0x0000,0x2124,0x0000,0x0000,0x8431,0xbe3a,0xc67b,0xbe7b,0xadf9,0x9515,0x8411,0x62ec,0x31a7,0x0000,0x10a4,0x31a7,0x1925,0x2145,0x08a2,0x0000,0x18c3,0x39c7,0x2105,0x0000,0x634e,0xbe19,0xd73e,0xbe7b,0xa5d8,0x9515,0x8cd3,0xb5f8,0xcefd,0xc69c,0xbe9b,0xd75e,0xd73f,0xa576,0x5269,0x39c7,0x3186,0x2124,0x2124,0x2944,0x2124,0x18c3,0xad55,0xdedb,0xd69a,0xd6ba,0xd6ba,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd6ba,0xd6ba,0x8410,0x0000,0x2965,0x2945,0x0000,0x630c,0xce79,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd69a,0xdedb,0xbdd7,0x39c7,0x18c2,0x2965,0x2124,0x0000,0x9cf3,0xdedb,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0x8c51,0x0000,0x2945,0x2945,0x2944,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce59,0x0000,0x0000,0x10a2,0x1061,0x1081,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb5d7,0x39c7,0x3186,0x31a7,0x4229,0x4a49,0x52ab,0x52ab,0x4a8a,0x4249,0x4249,0x4a69,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x4249,0x4a6a,0x4249,0x4249,0x4249,0x4249,0x4a6a,0x0000,0x6bae,0xb639,0xa597,0xa597,0xa597,0x9d76,0x9535,0x9515,0x9515,0x9535,0x8cf4,0x9d35,0x7c31,0x5b2d,0x2125,0x18e4,0x39c7,0x39e8,0x39c7,0x2986,0x2125,0x2104,0x1904,0x2145,0x2945,0x2945,0x2945,0x2966,0x3186,0x2966,0x2945,0x31a7,0x31a6,0x2945,0x2125,0x1904,0x0882,0x0000,0x0000,0x1904,0x528b,0x4a4a,0x10a3,0x0000,0x18e4,0x2986,0x2986,0x2965,0x0000,0x0000,0x3a4a,0x638e,0x52ec,0x0000,0x0000,0x18e4,0x1082,0x0000,0x634e,0xb619,0xdf1d,0xc67a,0xcedd,0xcf1d,0xd71d,0xcedc,0xc65a,0xb5f9,0x9d36,0x9d15,0x7c32,0x31a8,0x3186,0x31a6,0x31c7,0x3186,0x52ab,0x52ab,0x4209,0x2966,0x7bf0,0xb5f8,0xbe59,0x638f,0x94f5,0xa5b7,0x8473,0x8cd4,0x84b4,0xd71d,0xdf3e,0xc69b,0x84b3,0x10c3,0x39a6,0x4208,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2104,0x2124,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x2945,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2944,0x2124,0x2104,0x2965,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0x5aeb,0x0000,0x2104,0x10a3,0x0841,0x2104,0x528a,0x5acb,0x52aa,0x52ab,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0xb596,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce99,0x0083,0x4228,0x4a49,0x31c7,0x2965,0x31a7,0x39e8,0x4a6a,0x5acb,0x52aa,0x4a6a,0x4a6a,0x4a8a,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4a6a,0x4229,0x0000,0x8431,0xc67a,0xa597,0xa597,0xa597,0xa5b7,0xa5b7,0xa577,0x9d76,0x9515,0xa597,0x94d4,0x2145,0x0000,0x10c3,0x1904,0x2104,0x2966,0x39c7,0x39e8,0x39e8,0x39c7,0x2986,0x2945,0x2125,0x2125,0x2966,0x2966,0x2966,0x2966,0x3166,0x2986,0x2145,0x18c3,0x0820,0x0000,0x0000,0x634e,0xa576,0xb619,0xbe19,0xadb8,0x9d36,0x8473,0x530d,0x10c5,0x18e4,0x31a7,0x31a7,0x3166,0x3166,0x1882,0x20e4,0x3a08,0x39e7,0x0821,0x4a49,0xbdf7,0xe77e,0xcefd,0x7c52,0x94d4,0xb5f9,0x9515,0x9d36,0xbe3a,0xbe9c,0xc6dd,0xdf7f,0xbe3a,0x73d0,0x2966,0x2965,0x2124,0x0862,0x0000,0x2965,0x31a7,0x31c7,0x4229,0x1925,0x0000,0x31a7,0x52ab,0x52cc,0x94f4,0xd71d,0xcedc,0xadb8,0xcebb,0x9d35,0x3187,0x0000,0x0820,0x39c6,0x4208,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2124,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2965,0x2124,0x2124,0x2124,0x2104,0x2104,0x3186,0x4a48,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xdefc,0xdefc,0xdefc,0xdefc,0xdefc,0xdefc,0xce7b,0xce7b,0xce7b,0xce7b,0xce7b,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0x9d39,0x9d39,0x9d39,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x7417,0x8cb8,0x9d39,0x9d39,0x9d39,0x9d39,0x9d39,0x9d39,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x9cd3,0x630b,0x4a69,0x1923,0x39c7,0x4229,0x39c7,0x3186,0x3166,0x31a7,0x4a8a,0x52ab,0x4a6a,0x4a6a,0x426a,0x4249,0x4249,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x426a,0x4a8a,0x4a49,0x0000,0x8431,0xc67a,0xa597,0xa597,0xadb7,0xa597,0xa597,0xadb8,0xa597,0xa5b7,0xb5f8,0x5aec,0x0000,0x2125,0x2145,0x18e4,0x1904,0x18c3,0x18a3,0x2104,0x2145,0x31a7,0x4208,0x4209,0x39e8,0x31a7,0x2966,0x2966,0x2145,0x2966,0x2945,0x1082,0x1082,0x0862,0x0001,0x4249,0xa556,0xd6fc,0xd71d,0xd71d,0xcedc,0xcebc,0xc69c,0xbe5a,0xbe3a,0xbe39,0xad97,0x630d,0x2104,0x31a7,0x31a6,0x31a6,0x4229,0x630d,0x4229,0x39c7,0x4229,0x7c10,0x9d35,0xadd8,0xb619,0xb5d9,0xadb8,0xbe9b,0x8493,0x94f5,0xe7bf,0xcefd,0x94f4,0x31e8,0x0000,0x2104,0x18c3,0x0000,0x0000,0x31a7,0x4aab,0x424a,0x2987,0x10c4,0x1925,0x31e7,0x39e8,0x31c7,0x31a6,0x424a,0x636e,0x634e,0x73f0,0x52cb,0x0000,0x0000,0x2104,0x0020,0x39c6,0x4208,0x3185,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2945,0x2944,0x2944,0x2944,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2945,0x2124,0x2945,0x2944,0x2944,0x2944,0x2945,0x2944,0x2944,0x2944,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x4228,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0xce58,0x94d2,0x73cf,0x2986,0x2145,0x4a69,0x4249,0x39c7,0x3186,0x2125,0x31e8,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4249,0x4269,0x426a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a49,0x0000,0x7c30,0xc659,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xa576,0xbe59,0x9d75,0x0000,0x10a2,0x39e7,0x4228,0x39c7,0x31c7,0x2987,0x2965,0x2104,0x18e3,0x18c3,0x1904,0x2125,0x31a7,0x4208,0x3a08,0x39c7,0x39c7,0x31a7,0x2986,0x2125,0x1082,0x39e7,0x8cd4,0xcefd,0xd6fd,0x8493,0x7c73,0xadd8,0xc67b,0xc69c,0xbe7b,0xd6fd,0xdf5e,0xd6fd,0x8493,0x2166,0x3186,0x2966,0x0000,0x0000,0x0000,0x0000,0x0001,0x2987,0x39e8,0x0003,0x0001,0x4249,0x636e,0x8c94,0xc67b,0xbe7b,0xa5b8,0xc67b,0x9d36,0x424a,0x0000,0x0000,0x2944,0x0000,0x0000,0x52ab,0x9d14,0xbe19,0xb5f9,0xa577,0x94d4,0x7c11,0x632d,0x3a29,0x0000,0x0000,0x31e8,0x10a3,0x0000,0x1061,0x0000,0x20e3,0x41e7,0x2124,0x0021,0x0000,0x39c6,0x4208,0x3185,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2124,0x2124,0x0861,0x4a69,0x630c,0x5aeb,0x630b,0x630b,0x630b,0x630b,0x630b,0x630c,0x5b0b,0x630b,0x630c,0x632c,0x4a49,0x0000,0x2944,0x2124,0x2124,0x2945,0x2104,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2944,0x2124,0x2124,0x2144,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x9cb3,0x528a,0x18e4,0x4208,0x4249,0x4208,0x39c7,0x18e3,0x18e4,0x39e8,0x4249,0x4a6a,0x4a8a,0x4a6a,0x4249,0x4249,0x4249,0x528b,0x4a49,0x0000,0x7c10,0xbe7a,0xa5d7,0xa5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xa596,0xb639,0x8c93,0x0000,0x2945,0x4229,0x4229,0x4229,0x424a,0x4249,0x4229,0x3a08,0x31a7,0x2986,0x2145,0x2104,0x2105,0x18c4,0x2104,0x3185,0x39c7,0x39e8,0x41e8,0x4208,0x3186,0x4a49,0x8493,0xb619,0xa556,0xa597,0xc67a,0xadd8,0x8494,0x9d57,0xdf5e,0xd6fd,0x9d36,0x0925,0x0000,0x2125,0x18e3,0x0000,0x2945,0x8451,0x9cd4,0x8c52,0x6b6c,0x31c5,0x0000,0x2124,0x39e8,0x3166,0x18c3,0x1924,0x0001,0x3229,0x52cb,0x31c8,0x0000,0x0000,0x18c4,0x18e4,0x0000,0x29e8,0x84d4,0xc6bc,0xcebc,0xc6bc,0xcedc,0xcedc,0xcedc,0xbe3a,0xb5d8,0x9d16,0x9536,0x8493,0x3a09,0x31a6,0x39e7,0x39e8,0x2985,0x52cb,0x5b0c,0x4249,0x4229,0x3187,0x39e7,0x4207,0x3185,0x2104,0x2124,0x2124,0x2124,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x2124,0x2944,0x0000,0x7bcf,0xce79,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xd6ba,0x7bcf,0x0000,0x2944,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x4207,0x0001,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xbdf7,0x9492,0x5aeb,0x4208,0x52ab,0x4a69,0x4229,0x39c7,0x18c3,0x2125,0x31a7,0x39e8,0x4a6a,0x528a,0x4a6a,0x4a6a,0x4229,0x0000,0x7bf0,0xbe59,0xa5b7,0xa5d7,0xadb7,0xadb7,0xadb7,0xadb7,0xa5b7,0xb639,0x8472,0x0000,0x31a7,0x4a6b,0x3a29,0x3a09,0x3a09,0x4229,0x424a,0x4a8a,0x4a6a,0x4249,0x4249,0x39e8,0x31a7,0x2104,0x10a2,0x10a2,0x0862,0x18e4,0x2965,0x31a7,0x39c7,0x31c6,0x20e4,0x0000,0x29c8,0x94d4,0xbe18,0xc69b,0xbe59,0xa576,0xa555,0x428b,0x0000,0x18c3,0x0842,0x0000,0x0000,0x8452,0xcedb,0xdf5e,0xd6fe,0xcebc,0xbe5a,0xadb7,0x94d4,0x636f,0x2167,0x08c4,0x31a7,0x31c7,0x2945,0x2966,0x2104,0x3186,0x4a49,0x39c7,0x18e4,0x2166,0x94b3,0xcebc,0xd71e,0xadb8,0x8d16,0x8493,0xa5b8,0xa5b8,0xadf9,0xc67b,0xc69c,0xdf5e,0xc67b,0x7c52,0x29a7,0x29a6,0x2945,0x0000,0x0000,0x18c4,0x2946,0x3146,0x4209,0x4a4a,0x4228,0x39e7,0x3185,0x2124,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x2103,0x2104,0x2103,0x18e3,0x18e3,0x18e3,0x2104,0x18e3,0x18c3,0x2104,0x2944,0x2124,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x0000,0x2945,0x2124,0x18e3,0x10a2,0x18e3,0x2103,0x18e3,0x18e3,0x2103,0x18e3,0x0841,0x18e3,0x10a2,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x4207,0x0001,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x7bcf,0x2945,0x528a,0x528a,0x528a,0x528a,0x4249,0x2945,0x18e4,0x2945,0x2965,0x39e8,0x52aa,0x4a49,0x0000,0x7c30,0xc659,0xa597,0xa5b7,0xa597,0xadb7,0xadb7,0xadb7,0xa5b7,0xbe39,0x8492,0x0000,0x31a6,0x4a8a,0x4a6a,0x4249,0x4229,0x4229,0x3a08,0x3a29,0x4249,0x4a8a,0x52ab,0x4a6a,0x4209,0x31a7,0x2986,0x2104,0x1904,0x18e2,0x0881,0x10c2,0x1903,0x2965,0x39c7,0x39e8,0x39e7,0x0000,0x0000,0x2126,0x634d,0x5aec,0x0000,0x0021,0x2145,0x10c3,0x2986,0x6b8f,0xadd8,0xd71d,0xbe5a,0x9d98,0xc69c,0xd73e,0xcf1e,0xc6bc,0xb65b,0xb63a,0xbe3a,0xadb8,0x636e,0x2925,0x39c7,0x31a7,0x2966,0x39e8,0x630c,0x4a6a,0x39e8,0x3a08,0x738e,0x9cf4,0xadd8,0x8493,0x9d36,0x6b8f,0x9d56,0xadd9,0x63d0,0xcebb,0xdf3d,0x9d35,0x424a,0x0000,0x2145,0x0000,0x0000,0x3a08,0x7bf0,0x8c32,0x736e,0x4a4a,0x2925,0x1082,0x39e7,0x4207,0x3165,0x2124,0x2124,0x2944,0x2124,0x18e3,0x10a2,0x2103,0x2103,0x2103,0x2103,0x2103,0x2103,0x18e3,0x2103,0x2103,0x2103,0x2103,0x2103,0x18e3,0x18c3,0x2104,0x2945,0x2124,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce59,0x0000,0x2965,0x2945,0x18e3,0x10a2,0x2103,0x2104,0x2103,0x2103,0x2103,0x2945,0x39e7,0x2944,0x3186,0x2944,0x18e3,0x2104,0x2103,0x18c3,0x2104,0x2124,0x2944,0x2944,0x2124,0x2124,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x2125,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a8a,0x52cb,0x4229,0x2966,0x2125,0x2125,0x2966,0x0000,0x73ce,0xceba,0xbe39,0xb5f8,0xadb7,0xa597,0xa597,0xadb7,0xa5b7,0xbe59,0x8492,0x0000,0x3186,0x528a,0x4a49,0x4a49,0x4a6a,0x4a6a,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4a6a,0x4a6a,0x4249,0x39e8,0x31a7,0x2965,0x2124,0x1903,0x18e3,0x18c3,0x10a2,0x20e4,0x2945,0x39c7,0x4228,0x39e7,0x2104,0x2104,0x4208,0x39e8,0x2945,0x0000,0x9cf4,0xdf3d,0xd73e,0xdf5f,0x9d36,0x52cb,0x8cb3,0x636f,0x8452,0xbe5b,0xcefd,0xd73e,0xd6fc,0x8473,0x29a7,0x3165,0x2124,0x10a3,0x0000,0x0000,0x10a4,0x0002,0x2166,0x3a09,0x1905,0x0000,0x29a7,0x52ec,0x8452,0x8cb3,0x8c93,0xa5b8,0xc67a,0xad97,0x52eb,0x0000,0x0000,0x1904,0x0000,0x2966,0x94b3,0xcebb,0xd73d,0xd73d,0xd6fd,0xb639,0x9d56,0x7c31,0x528a,0x39c7,0x3185,0x2124,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x2103,0x2104,0x18e3,0x2124,0x2944,0x18e3,0x0000,0x18c3,0x2945,0x2124,0x18e3,0x2104,0x18e3,0x18c2,0x2104,0x2945,0x2104,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7de,0xd6ba,0xd6ba,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x0000,0x31a6,0x8c51,0x528a,0x738e,0x2965,0x18c3,0x2104,0x18e3,0x18c2,0x2103,0x2124,0x2944,0x2124,0x2124,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x94b2,0x0000,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4a6a,0x528a,0x528a,0x4a48,0x2965,0x2104,0x2985,0x7c10,0xa556,0xadb7,0xb639,0xb639,0xadf8,0xa5b6,0xa596,0xbe39,0x8c93,0x0000,0x3186,0x528a,0x4a49,0x4a69,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4229,0x4228,0x4229,0x4229,0x424a,0x4a6b,0x4a6a,0x4249,0x3a08,0x31c7,0x2986,0x2145,0x2125,0x18e4,0x1082,0x10a2,0x18e4,0x2945,0x3187,0x39e8,0x39e8,0x39e8,0x4208,0x3a08,0x4a6a,0x73d0,0xa577,0xc67b,0xd6fd,0xa577,0x9d35,0xb5b6,0xadb7,0xc6bc,0xd71d,0x9515,0x2987,0x0000,0x18e3,0x2103,0x0000,0x0000,0x5aeb,0x7c10,0x7bf0,0x636e,0x3a08,0x0000,0x18e3,0x39e7,0x31e7,0x2986,0x2124,0x2945,0x4229,0x4a8b,0x4a6a,0x0000,0x0000,0x2123,0x10a1,0x10a2,0x6b8f,0xadb8,0xd71c,0xc69b,0xadb8,0xadf8,0xc69b,0xd71e,0xcedc,0xcedc,0x7c30,0x20a1,0x31a6,0x2104,0x2124,0x2124,0x2124,0x18c3,0x10a2,0x2104,0x2104,0x2124,0x0000,0x0000,0x4a49,0xad75,0x632c,0x0000,0x0000,0x18e3,0x2104,0x18e3,0x18c2,0x2104,0x2944,0x2103,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0xad55,0xad75,0x9cd3,0xf7be,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2945,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x0000,0x73ae,0x8410,0x7bcf,0x94b2,0x0000,0x2104,0x2104,0x2104,0x18c2,0x2103,0x2124,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa4f4,0x4229,0x31a7,0x4229,0x4a49,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x52aa,0x4228,0x39c7,0x31a6,0x0000,0x1925,0x52ac,0x7c31,0x9d35,0xadd7,0xbe59,0xb618,0xbe5a,0x8cb3,0x0000,0x2986,0x528a,0x4a49,0x4a69,0x4a4a,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4249,0x4229,0x424a,0x424a,0x4a6a,0x4a6a,0x4a6a,0x424a,0x4229,0x39e8,0x2986,0x2986,0x2125,0x18c3,0x10a3,0x10a3,0x10a2,0x2104,0x2966,0x31a6,0x39e8,0x3187,0x1083,0x0000,0x10c4,0x7c53,0x8494,0x9d55,0xd6fb,0xcebb,0xa597,0x426b,0x0000,0x08a2,0x18e3,0x0000,0x0000,0x52ec,0xad97,0xd6fc,0xcedc,0xbe7a,0xbe19,0xad97,0x94d4,0x7bd1,0x3a2b,0x0043,0x31a7,0x39e8,0x1924,0x31a6,0x2946,0x2104,0x4228,0x4228,0x1903,0x2985,0x9d15,0xe73e,0xe75f,0x7411,0x7c73,0xad77,0xa556,0x8473,0x9d16,0xc65a,0xcedd,0x8452,0x1840,0x31c7,0x2124,0x2124,0x2124,0x2944,0x18c3,0x10a2,0x2104,0x2124,0x0000,0x738e,0x6b4d,0x4228,0xce79,0x632c,0x5aeb,0x7bcf,0x18e3,0x18e3,0x2104,0x18c3,0x2104,0x2944,0x2104,0x1082,0xc638,0xffff,0xffff,0xffdf,0xffff,0xd69a,0x8430,0xffdf,0xffff,0x7bef,0xbdf7,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x2965,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2125,0x0000,0x6b6d,0xe71c,0xef5d,0xef5d,0xe73c,0x6b4d,0x0000,0x2945,0x18e4,0x10a2,0x2103,0x2124,0x2124,0x2124,0x2124,0x2124,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xc618,0x7bef,0x528a,0x4208,0x4208,0x4a49,0x4a6a,0x4a49,0x4a49,0x3a08,0x2966,0x31a7,0x31c7,0x3a29,0x3a07,0x2125,0x2966,0x5b0c,0x7c32,0x94f4,0xce9a,0x9d14,0x0000,0x2986,0x4a8a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4249,0x424a,0x4249,0x424a,0x424a,0x4a6a,0x4a6a,0x4249,0x4229,0x39e9,0x2987,0x2925,0x2104,0x18c3,0x18c2,0x18c2,0x1082,0x18c3,0x2966,0x39c7,0x39e7,0x39e7,0x18a0,0x18e2,0x4229,0x1927,0x0003,0x0000,0x20c2,0x2125,0x18c3,0x10c3,0x4229,0x8cb4,0xcedc,0xd73d,0xa597,0xbe5a,0xcefd,0xc67b,0xc69c,0xbe7b,0xbe3a,0xb5fa,0xb619,0x8472,0x2987,0x39c7,0x31a6,0x2986,0x2966,0x5aec,0x5acb,0x4229,0x426a,0x73d0,0x8c72,0xa556,0xbe39,0xa556,0x9d56,0xad98,0xa577,0x7431,0xce9b,0xe77f,0x8453,0x0820,0x39c7,0x2104,0x2124,0x2124,0x2124,0x18c3,0x10a2,0x2103,0x2945,0x0000,0x8410,0xdefb,0xa534,0x9cf3,0x94b2,0xdedb,0xad55,0x0000,0x2104,0x2104,0x18c2,0x2104,0x2944,0x2124,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0x9cd3,0xa534,0xffff,0xffff,0x94b2,0x94b2,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2944,0x18e3,0x1082,0x18e3,0x2104,0x2124,0x0020,0x52aa,0xc618,0xad75,0xb5b6,0xa534,0x4208,0x0861,0x2124,0x2104,0x10a2,0x2124,0x2944,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xa534,0x73af,0x4a6a,0x2966,0x4208,0x4a8a,0x4249,0x3186,0x31a6,0x31a6,0x39e8,0x4a6a,0x4a6a,0x4249,0x31c7,0x2146,0x31c8,0x6b4d,0x6b6e,0x4229,0x31c7,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x424a,0x4229,0x4229,0x424a,0x424a,0x4a6a,0x4a8b,0x4a4a,0x4249,0x3a09,0x31a7,0x2145,0x2104,0x18e4,0x10c3,0x10c3,0x10a2,0x18c3,0x2945,0x39e7,0x39c7,0x3166,0x39e7,0x39e8,0x4208,0x4208,0x3186,0x0000,0x73af,0xce7a,0xdf5e,0xbe5a,0x7c73,0x8cd4,0x7c73,0xbe7b,0xcedd,0xbe5a,0xc69c,0xd71e,0xdf3e,0xa556,0x4a8b,0x2986,0x2104,0x0841,0x0020,0x2104,0x4209,0x39e8,0x39e8,0x4229,0x1925,0x0000,0x1925,0x6b6e,0x73f0,0x9516,0xb63a,0xc69c,0xdf3d,0xc69b,0x7c32,0x4a49,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x18c3,0x10a2,0x2103,0x2104,0x2124,0x0000,0x528a,0xb596,0xf7be,0xdedb,0x73ae,0x0020,0x18c3,0x2104,0x18e3,0x18c2,0x2103,0x2944,0x2104,0x0020,0xc638,0xffff,0xffff,0xffdf,0xffff,0x8c50,0xa534,0xffff,0xffff,0x94b2,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2945,0x2944,0x18e3,0x10a2,0x2103,0x2104,0x2124,0x1081,0x0000,0x738d,0x0000,0x4a69,0x0000,0x0000,0x2124,0x18e3,0x2103,0x18c2,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x9cd3,0x6b6d,0x31c6,0x31a6,0x2986,0x39c7,0x31c7,0x31a6,0x4a8a,0x4a6a,0x4a29,0x4a6a,0x4a69,0x4a29,0x31a7,0x39e8,0x52ab,0x4208,0x10c3,0x3186,0x4229,0x4a6a,0x4a6a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x426a,0x424a,0x424a,0x4249,0x4229,0x4249,0x426a,0x4aab,0x52ab,0x4a8b,0x3a29,0x31c8,0x2966,0x2125,0x1904,0x18e4,0x10a3,0x1082,0x18c3,0x2124,0x3186,0x39c7,0x39e7,0x4208,0x4208,0x39e8,0x4249,0x73d0,0xa577,0x94f4,0xbe3a,0xefdf,0xcedc,0x8494,0xc69c,0xdf5e,0xd71d,0xbe1a,0x5b0d,0x0000,0x0000,0x10a2,0x0041,0x1082,0x0861,0x10c3,0x18e3,0x20e4,0x3167,0x31a7,0x3a08,0x424a,0x4229,0x2145,0x2966,0x39e7,0x426a,0x52ab,0x5aec,0x31c8,0x0000,0x39a6,0x4208,0x2965,0x2104,0x2124,0x2944,0x2124,0x18c3,0x10a2,0x2103,0x2124,0x0000,0x5aeb,0xad55,0xb5b6,0xce58,0xc618,0xb5b6,0x7c0f,0x1082,0x2104,0x2104,0x18c2,0x2104,0x2945,0x2104,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0x94b2,0xa534,0xffff,0xffff,0x94b2,0x94b2,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x2965,0x2945,0x18e3,0x10a2,0x2103,0x2104,0x18c3,0x2965,0x9492,0xbdd6,0xad75,0xc638,0x6b4d,0x0000,0x2124,0x2104,0x2104,0x18c2,0x2103,0x2124,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1b,0xbdf7,0x94b2,0x31a6,0x0000,0x2144,0x2965,0x4228,0x5b0b,0x52cb,0x4249,0x4a49,0x4a69,0x4a8a,0x4a4a,0x4249,0x528a,0x4229,0x31c7,0x2945,0x18e4,0x3186,0x3a08,0x4a49,0x528a,0x528a,0x4a4a,0x426a,0x4aab,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8b,0x4a6a,0x4a6a,0x424a,0x4a4a,0x424a,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4249,0x4249,0x426a,0x52cb,0x52cb,0x52ab,0x52ab,0x424a,0x3a08,0x31a7,0x2145,0x2104,0x18e3,0x10a3,0x1082,0x10a2,0x18e3,0x2945,0x3186,0x39e8,0x31c7,0x08c3,0x0000,0x4249,0x7410,0x9d35,0xc69a,0xa577,0xa577,0xc67a,0x73f0,0x0000,0x0000,0x18e4,0x10a3,0x0861,0x0020,0x0000,0x2104,0x0000,0x0000,0x2945,0x0000,0x0882,0x1924,0x2966,0x31a7,0x3a08,0x4229,0x20e2,0x1840,0x2943,0x1881,0x2903,0x2104,0x39c6,0x4207,0x2965,0x2124,0x2944,0x2124,0x2124,0x18c3,0x10a2,0x2103,0x2945,0x0000,0x8410,0xc618,0x738e,0xad55,0x5acb,0xad55,0xad55,0x0000,0x18e3,0x2104,0x18c3,0x2104,0x2945,0x2104,0x0020,0xc638,0xffff,0xffff,0xffdf,0xffff,0xce59,0x8410,0xffff,0xffff,0x8410,0xc638,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x2965,0x2944,0x18e3,0x10a2,0x18e3,0x2124,0x0000,0x4a69,0xdedb,0xef5d,0xe73c,0xef5d,0x8c51,0x0000,0x2945,0x2104,0x2104,0x18c2,0x2103,0x2124,0x2945,0x2945,0x2124,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xad75,0x4a49,0x1080,0x10a1,0x2965,0x5aeb,0x632d,0x4269,0x3a28,0x4249,0x4269,0x426a,0x4a8a,0x4a8a,0x528a,0x4a6a,0x4229,0x39e8,0x2104,0x2104,0x3186,0x39e8,0x4a4a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x52cc,0x52cb,0x4a8a,0x4229,0x31a7,0x2966,0x2145,0x18e3,0x10c3,0x10a3,0x10a3,0x18c3,0x2966,0x31c7,0x3a08,0x31a6,0x2104,0x0000,0x0000,0x632d,0x5aec,0x0000,0x0800,0x1904,0x10c3,0x0861,0x0861,0x0000,0x31a6,0x4a69,0x0000,0x8410,0x94b3,0x0000,0x4a48,0x31a6,0x2124,0x18c3,0x10a3,0x18e4,0x2966,0x31c7,0x3a28,0x39c7,0x2145,0x0862,0x1903,0x41e7,0x4207,0x2985,0x2124,0x2124,0x2104,0x2124,0x18c3,0x10a2,0x2104,0x2104,0x2104,0x1082,0x0000,0x4a69,0xd6ba,0x73ae,0x0000,0x0000,0x2104,0x2104,0x18e3,0x18c3,0x2104,0x2944,0x2103,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0x9cd3,0xa534,0xb596,0xad55,0xffdf,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2945,0x2124,0x18c3,0x10a2,0x18e3,0x2104,0x2104,0x0000,0x9cf3,0x7bef,0x7bcf,0x8410,0x0000,0x2124,0x2104,0x2104,0x2104,0x18c3,0x2103,0x2124,0x2944,0x2124,0x2104,0x2124,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8cb8,0xe73c,0xdefb,0xdeda,0xdefb,0xd6ba,0xbdd6,0x8c92,0x6b4d,0x4a6a,0x39e8,0x4a69,0x4a8a,0x4a49,0x4249,0x4a6a,0x4a8a,0x4a6a,0x4a49,0x39c7,0x2124,0x2945,0x2966,0x31a7,0x4a4a,0x528a,0x4a8a,0x4a8a,0x4a8b,0x4a8a,0x4a8a,0x4a8b,0x4a8b,0x4a8b,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4229,0x4249,0x4a6a,0x52ab,0x52cc,0x5aec,0x52cc,0x4a8b,0x424a,0x39e8,0x2986,0x2125,0x18e3,0x10c3,0x08a1,0x10c1,0x18e3,0x2945,0x39c7,0x3a08,0x4208,0x3186,0x3166,0x39e8,0x4228,0x2966,0x18c3,0x1061,0x18e3,0x10e2,0x4a8a,0x94f4,0x9514,0xb638,0xb5b7,0x7c51,0x8cd3,0x4a69,0x31a7,0x39e8,0x3186,0x2986,0x39e7,0x3a08,0x2125,0x0000,0x10a2,0x31a6,0x3a08,0x4208,0x4207,0x3186,0x2124,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x31a6,0x632c,0x39e7,0x2104,0x2124,0x18e4,0x2104,0x18e3,0x18c3,0x2104,0x2944,0x2124,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xd6ba,0xd6ba,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x0000,0x8430,0x632c,0x738e,0x4a49,0x0000,0x2104,0x18e4,0x2104,0x2104,0x18c3,0x2103,0x2124,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0xb5b6,0x8c71,0x5b0b,0x39c7,0x4a6a,0x4a6a,0x424a,0x4249,0x4a49,0x4a49,0x4a69,0x4a6a,0x4a49,0x31a7,0x2965,0x2125,0x2124,0x31c7,0x4a6a,0x4a8a,0x4a8a,0x52ab,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4249,0x4249,0x4229,0x424a,0x4a8b,0x52cc,0x5b0c,0x5aed,0x5acc,0x4a8b,0x4229,0x29a7,0x2125,0x1904,0x18e3,0x10c3,0x1082,0x18e3,0x2965,0x31a6,0x39e8,0x39e8,0x39e8,0x4229,0x4208,0x39c7,0x31a6,0x2966,0x7bf0,0x8472,0x94d5,0xcebc,0x94f5,0x9d36,0x636e,0x2986,0x39e7,0x39e8,0x4208,0x3a08,0x3186,0x0020,0x0861,0x2965,0x4208,0x39e7,0x31a7,0x4207,0x39e7,0x3186,0x2124,0x2124,0x2124,0x2944,0x18e3,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x18c3,0x0000,0x1082,0x2104,0x2104,0x2104,0x2104,0x2103,0x18c3,0x2104,0x2944,0x2104,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x2965,0x2944,0x18e3,0x10a2,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2965,0x31a6,0x2124,0x2104,0x2104,0x2104,0x2104,0x2103,0x18c3,0x2104,0x2945,0x2124,0x2124,0x2124,0x2124,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xce9a,0x8c71,0x0000,0x4a69,0x4a69,0x4a69,0x4a6a,0x4249,0x4229,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x39e8,0x3166,0x18a3,0x18e4,0x39e8,0x4229,0x4a6a,0x528b,0x52ab,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4229,0x4229,0x4249,0x4a8b,0x5aec,0x5b0d,0x632d,0x5aed,0x52ab,0x4229,0x39c8,0x2946,0x18e4,0x10a3,0x1083,0x10a2,0x10a3,0x2104,0x2966,0x31c7,0x4208,0x4229,0x4228,0x39e7,0x4a6a,0x18e4,0x52ed,0xa536,0x0001,0x630d,0x5b0d,0x2966,0x3a08,0x3a08,0x31a6,0x10a3,0x0000,0x2945,0x39e7,0x3a07,0x31c6,0x39e7,0x4208,0x4208,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x18e3,0x2104,0x18e3,0x2104,0x2945,0x2104,0x18e3,0x18e3,0x2103,0x2103,0x18e3,0x18c3,0x2104,0x2944,0x2104,0x0020,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2944,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x18e3,0x1082,0x18c3,0x10a2,0x18e3,0x2104,0x2104,0x2103,0x2103,0x18e3,0x18c3,0x2124,0x2944,0x2104,0x2124,0x2944,0x2124,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad55,0x52aa,0x39e7,0x3a07,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4208,0x4208,0x4a49,0x4a49,0x4a6a,0x4229,0x4208,0x2966,0x0882,0x2104,0x31a7,0x3a08,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a4a,0x4249,0x3a29,0x424a,0x4a8b,0x52ec,0x5b0d,0x632d,0x632d,0x5b0c,0x4a8a,0x39c8,0x2986,0x1904,0x18c3,0x10a3,0x0882,0x1082,0x1904,0x2945,0x31a6,0x39e7,0x31a7,0x4229,0x39e7,0x0020,0x3a07,0x2122,0x2963,0x4208,0x39c7,0x2104,0x0000,0x18e4,0x39c7,0x3a08,0x39e7,0x39c6,0x4207,0x4228,0x3a08,0x4208,0x4207,0x3186,0x2104,0x2124,0x2124,0x2124,0x2104,0x18c3,0x18c2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18e3,0x2124,0x2124,0x2945,0x0000,0x9cf3,0xf7be,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xef5d,0x7bef,0x0000,0x2945,0x2124,0x2103,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xd6ba,0xad54,0x6b8e,0x528a,0x31c6,0x31c6,0x4249,0x4a6a,0x4229,0x4208,0x3a08,0x4229,0x4249,0x4a49,0x4a69,0x4a49,0x4208,0x2965,0x10c3,0x2125,0x2966,0x39e8,0x4a8a,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4229,0x3a29,0x424a,0x4a8b,0x52cc,0x632e,0x636e,0x632d,0x5aec,0x52ab,0x4a69,0x31a6,0x2145,0x18c3,0x10a3,0x0083,0x10a3,0x18e3,0x2945,0x3186,0x31c7,0x4228,0x4249,0x4228,0x3a08,0x2965,0x0841,0x0862,0x31a7,0x39e8,0x39c7,0x39c7,0x3a07,0x4228,0x4208,0x4208,0x4208,0x4208,0x39e7,0x3185,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2104,0x7bef,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x6b6d,0x0000,0x2124,0x2944,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2945,0x4a28,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd69a,0x94d2,0x6b6d,0x29a6,0x18c3,0x4228,0x528a,0x4a49,0x4229,0x4249,0x4229,0x4229,0x4a49,0x4a69,0x4a6a,0x4a6a,0x39e8,0x2945,0x2124,0x18e3,0x2124,0x3a08,0x4a69,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x424a,0x4229,0x4229,0x4229,0x4a8a,0x52ec,0x632d,0x6b8e,0x6b6e,0x634d,0x5acc,0x4249,0x39c7,0x2945,0x18e3,0x10a3,0x1082,0x1082,0x18c4,0x2105,0x2945,0x39c8,0x2945,0x0861,0x2945,0x39e7,0x39e7,0x31a6,0x39e7,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x4208,0x4208,0x39e7,0x3185,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2945,0x2124,0x3186,0x4228,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xbdd7,0x94b2,0x5aeb,0x10a2,0x3186,0x4a49,0x4a69,0x4a69,0x4269,0x4249,0x4249,0x4249,0x4a49,0x4a69,0x528a,0x4a69,0x39e7,0x31a6,0x2965,0x0862,0x2104,0x41e8,0x4a49,0x4a6a,0x4a8a,0x4a8a,0x428a,0x426a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4269,0x4249,0x4229,0x4229,0x426a,0x5aec,0x634e,0x6b6e,0x636e,0x634d,0x630c,0x528a,0x39e8,0x2966,0x1904,0x10c3,0x1083,0x10a2,0x18a3,0x18c3,0x2965,0x39e7,0x39c7,0x31c7,0x4227,0x4208,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x3a08,0x4208,0x39e7,0x2985,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x3185,0x3185,0x3185,0x3185,0x2965,0x3185,0x3186,0x3185,0x3185,0x3165,0x3185,0x3185,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0xc617,0x9491,0x4248,0x2966,0x39e8,0x4208,0x4249,0x4a69,0x4a6a,0x4a49,0x4a49,0x4249,0x4a49,0x4a69,0x4a6a,0x4a6a,0x3a08,0x31a7,0x2104,0x0001,0x2145,0x39c7,0x4228,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x528a,0x528a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4a6a,0x4a8a,0x4a6a,0x4249,0x4229,0x3a28,0x3a28,0x426a,0x52cb,0x5b2d,0x636e,0x6b8e,0x636e,0x5b0c,0x52ab,0x3a09,0x2986,0x18c4,0x10a3,0x0862,0x2124,0x39e7,0x3a07,0x4228,0x3a27,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x3a08,0x4208,0x39e7,0x3186,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2144,0x2124,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xc638,0x8c71,0x52ca,0x4228,0x39e7,0x39e7,0x4a49,0x4a6a,0x4a6a,0x4a49,0x4229,0x4208,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x39c7,0x10a3,0x1082,0x2945,0x3186,0x4208,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x528a,0x526a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a09,0x4249,0x52ab,0x5b0d,0x636e,0x73af,0x73af,0x634e,0x52cb,0x4249,0x39e8,0x39e7,0x3a08,0x3a08,0x4207,0x3a08,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4208,0x39e7,0x31a6,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x3185,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x39e7,0x4a49,0x0841,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xc618,0x8c71,0x738e,0x4a6a,0x2146,0x39e8,0x4a8a,0x4a6a,0x4a49,0x4229,0x4229,0x4208,0x4228,0x4229,0x4229,0x4a49,0x4229,0x31a7,0x18e3,0x18e4,0x1904,0x2945,0x3a08,0x4a69,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a8a,0x4a69,0x4a69,0x4a69,0x4249,0x3a08,0x3a08,0x4229,0x52aa,0x632d,0x73af,0x73cf,0x73cf,0x6b4e,0x39e8,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4229,0x4208,0x31a6,0x2965,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x2944,0x2124,0x3186,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b76,0xc638,0x9cd3,0x738e,0x2145,0x2966,0x4a49,0x4a6a,0x4a49,0x4249,0x4209,0x4208,0x4208,0x4208,0x4228,0x4a49,0x4a69,0x4229,0x31a7,0x2945,0x1904,0x1062,0x2946,0x3a09,0x4229,0x4a6a,0x4a8a,0x528a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a69,0x4a6a,0x4a69,0x4a8a,0x4a8a,0x4a69,0x4a6a,0x4a29,0x4208,0x39e8,0x4249,0x4a8b,0x6b6e,0x5aec,0x3186,0x4208,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4229,0x31e8,0x2167,0x39e8,0x39e8,0x2986,0x3187,0x3187,0x2986,0x2986,0x3187,0x2987,0x2986,0x2986,0x31a7,0x31c7,0x0000,0x1924,0x840f,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94d3,0x8c72,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xc618,0x9cf3,0x5acb,0x2104,0x39c7,0x4208,0x4229,0x4249,0x4249,0x4229,0x4208,0x4229,0x4229,0x4229,0x4249,0x4a49,0x4229,0x31c7,0x2965,0x10a2,0x0841,0x2965,0x39e7,0x4229,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4a8a,0x4a8b,0x4a4a,0x4229,0x4208,0x39e8,0x29a6,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4208,0x4229,0x4208,0x3a08,0x4229,0x4228,0x2965,0x18c2,0x31a6,0x4249,0x4248,0x3a08,0x4208,0x3a08,0x39e8,0x39e8,0x39e8,0x39c7,0x39e8,0x4208,0x2965,0x0000,0x632c,0xc617,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce59,0x94b2,0x52aa,0x39e7,0x31c6,0x31e7,0x4228,0x4249,0x4248,0x4228,0x4229,0x4208,0x4208,0x4208,0x4249,0x4a49,0x4228,0x4208,0x31a7,0x1082,0x10a2,0x2145,0x31a7,0x3a08,0x4a6a,0x4aaa,0x4aaa,0x4a8b,0x4a8b,0x4a8b,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4229,0x2986,0x39e7,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a49,0x31a6,0x18c3,0x2965,0x4228,0x4a49,0x4228,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x41e7,0x39c6,0x0000,0x2103,0xad54,0xef3c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xce59,0x8c51,0x630c,0x4228,0x2985,0x31c7,0x4249,0x4a69,0x4249,0x4208,0x4208,0x4208,0x4208,0x4229,0x4249,0x4249,0x4229,0x4229,0x3186,0x10c3,0x18e4,0x18e3,0x2966,0x3a09,0x4a6a,0x4aab,0x52ab,0x4aab,0x4a8b,0x4aaa,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x31a7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4228,0x4248,0x3a07,0x2124,0x18c3,0x4208,0x4a69,0x4228,0x4208,0x3a07,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x4208,0x18a1,0x0000,0x73ae,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0xbdf7,0x94b2,0x6b8d,0x31e6,0x1903,0x3a07,0x4249,0x4249,0x4228,0x4208,0x4208,0x4209,0x4229,0x4229,0x4229,0x4229,0x4a4a,0x4229,0x3166,0x2125,0x18e4,0x1082,0x2966,0x3a09,0x4a6a,0x528a,0x52cb,0x52ab,0x4a8a,0x4aaa,0x4aaa,0x528b,0x528a,0x4a6a,0x4a6a,0x39c7,0x39e7,0x4208,0x4208,0x4208,0x4229,0x4229,0x2965,0x10a2,0x31a6,0x4a49,0x4249,0x4228,0x3a08,0x3a08,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x39e8,0x31c6,0x0000,0x5269,0xb575,0xce7b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xbe17,0x9cf3,0x632c,0x10e3,0x2985,0x3a07,0x4229,0x4229,0x4229,0x4229,0x4228,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a69,0x4228,0x39a6,0x3145,0x1882,0x1061,0x2966,0x39e8,0x426a,0x4aaa,0x52cb,0x52ab,0x528a,0x528a,0x528a,0x526a,0x39c7,0x39e7,0x39e8,0x4229,0x4229,0x39a7,0x0862,0x2945,0x4228,0x4a69,0x4228,0x4207,0x3a07,0x3a07,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x39e7,0x0000,0x0000,0x9491,0xdeda,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce58,0x9cd3,0x528a,0x2965,0x31a6,0x39c7,0x4207,0x4228,0x4228,0x4229,0x4228,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x39e7,0x2986,0x0021,0x08a2,0x2986,0x31e7,0x4a49,0x4aaa,0x4aab,0x52ab,0x4a8a,0x39e8,0x3a07,0x4a49,0x39e7,0x2104,0x1903,0x4207,0x4a69,0x4249,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x39c8,0x41e7,0x2923,0x0000,0x6b4c,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xce59,0x8c71,0x5aeb,0x4228,0x2965,0x31a6,0x4228,0x4a49,0x4229,0x4228,0x4228,0x4229,0x4229,0x4229,0x4229,0x4a49,0x4a49,0x4a49,0x4208,0x2946,0x10a2,0x18e3,0x2145,0x31e8,0x4a8a,0x4a8a,0x3a29,0x4208,0x2965,0x18e3,0x39c7,0x4a69,0x4a69,0x4228,0x4208,0x4208,0x3a08,0x39e7,0x39e7,0x39c6,0x39c7,0x4207,0x3186,0x0000,0x3185,0xa514,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8cb8,0xc618,0x8c92,0x6b6d,0x3a07,0x10e2,0x31c6,0x4269,0x4249,0x4228,0x4229,0x4229,0x4229,0x4228,0x4229,0x4229,0x4229,0x4249,0x4a69,0x4228,0x3186,0x2145,0x1904,0x2986,0x31a7,0x18c3,0x2944,0x4a49,0x528a,0x4248,0x4228,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39c8,0x4208,0x0020,0x0000,0x7bce,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe75c,0xbe17,0x9cf3,0x6b8e,0x2965,0x2145,0x3a07,0x4248,0x4248,0x4248,0x4248,0x4228,0x4229,0x4229,0x4229,0x4229,0x4a49,0x4a4a,0x4a6a,0x4a49,0x39e8,0x2125,0x39e7,0x528a,0x4a49,0x4228,0x4228,0x4208,0x4208,0x3a07,0x39e7,0x39c7,0x39e7,0x4208,0x3166,0x0000,0x5aca,0xb5b5,0xef7c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce59,0xa534,0x634d,0x31a6,0x39e7,0x3a07,0x3a08,0x4249,0x4a49,0x4229,0x4229,0x4a49,0x4a49,0x4229,0x4229,0x528a,0x52ab,0x4a29,0x4a6a,0x4a69,0x4249,0x4228,0x4228,0x4208,0x3a07,0x3a07,0x39e7,0x39e7,0x31c7,0x0000,0x1080,0x9cf2,0xdeda,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xd69a,0xa514,0x632c,0x4249,0x39c7,0x31a6,0x4208,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4228,0x4a69,0x4a69,0x4248,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x39e7,0x18c3,0x0000,0x840f,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0xce79,0x9cd2,0x738d,0x4a69,0x2944,0x31a5,0x4a48,0x4a69,0x4a69,0x4a69,0x4a69,0x4248,0x4a89,0x4a49,0x4228,0x4228,0x3a08,0x39e7,0x3a08,0x3186,0x0000,0x5aca,0xc5f7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b75,0xce59,0xa4f4,0x7bcf,0x4228,0x2945,0x4208,0x4a69,0x4a69,0x4229,0x528a,0x4a49,0x4228,0x4208,0x4208,0x4208,0x0000,0x1080,0x9491,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce59,0xad55,0x7bae,0x41e7,0x4228,0x4208,0x4228,0x528a,0x4a69,0x4a48,0x31a6,0x0000,0x632c,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xd6ba,0xb5b6,0x8430,0x4a49,0x2944,0x2944,0x0000,0x2964,0xa513,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0xa513,0x6b6d,0x9492,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4}; diff --git a/MCUME_esp32/espcolem/main/main.c b/MCUME_esp32/espcolem/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espcolem/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espcolem/main/options.h b/MCUME_esp32/espcolem/main/options.h new file mode 100644 index 0000000..36c1ef8 --- /dev/null +++ b/MCUME_esp32/espcolem/main/options.h @@ -0,0 +1 @@ +#define LSB_FIRST 1 diff --git a/MCUME_esp32/espcolem/sdkconfig b/MCUME_esp32/espcolem/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/espcolem/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espcolem/sdkconfig.old b/MCUME_esp32/espcolem/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/espcolem/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espnes/.DS_Store b/MCUME_esp32/espnes/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnes/.DS_Store differ diff --git a/MCUME_esp32/espnes/Makefile b/MCUME_esp32/espnes/Makefile new file mode 100644 index 0000000..bdfdbb0 --- /dev/null +++ b/MCUME_esp32/espnes/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espnes + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espnes/components/.DS_Store b/MCUME_esp32/espnes/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/espnes/components/.DS_Store differ diff --git a/MCUME_esp32/espnes/components/Audio/.DS_Store b/MCUME_esp32/espnes/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnes/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espnes/components/Audio/component.mk b/MCUME_esp32/espnes/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espnes/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espnes/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espnes/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espnes/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espnes/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espnes/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espnes/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espnes/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espnes/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espnes/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espnes/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espnes/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espnes/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espnes/components/Wire/.DS_Store b/MCUME_esp32/espnes/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnes/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espnes/components/Wire/Wire.cpp b/MCUME_esp32/espnes/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espnes/components/Wire/Wire.h b/MCUME_esp32/espnes/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espnes/components/Wire/component.mk b/MCUME_esp32/espnes/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espnes/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espnes/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espnes/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espnes/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espnes/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espnes/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espnes/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espnes/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espnes/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espnes/flashapp.sh b/MCUME_esp32/espnes/flashapp.sh new file mode 100755 index 0000000..6cda97e --- /dev/null +++ b/MCUME_esp32/espnes/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x080000 ../espnes/build/espnes.bin diff --git a/MCUME_esp32/espnes/main/.DS_Store b/MCUME_esp32/espnes/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnes/main/.DS_Store differ diff --git a/MCUME_esp32/espnes/main/6502.c b/MCUME_esp32/espnes/main/6502.c new file mode 100644 index 0000000..391d49b --- /dev/null +++ b/MCUME_esp32/espnes/main/6502.c @@ -0,0 +1,835 @@ +/* MoarNES source - CPU.c + + This open-source software is (c)2010-2013 Mike Chambers, and is released + under the terms of the GNU GPL v2 license. + + This is my implementation of a MOS Technology 6502 CPU emulator. The + NES technically has a Ricoh 2A03, not a true 6502, however it is nearly + identical to it. + + The differences are small: + - The 2A03 does not support binary-coded decimal (BCD) arithmetic. + - It has the audio processor built into it. + + The audio emulation is, however, handled in APU.c. +*/ + +#include +#include "moarnes.h" + +//externally supplied functions +extern uint8_t read6502(uint16_t address); +extern void write6502(uint16_t address, uint8_t value); + +//6502 CPU registers +uint16_t pc; +uint8_t sp, a, x, y, status; + +//helper variables +uint64_t instructions = 0; //keep track of total instructions executed +uint64_t clockticks6502 = 0, clockgoal6502 = 0; +uint16_t oldpc, ea, reladdr, value, result; +uint8_t opcode, oldstatus; + +//a few general functions used by various other functions +void push16(uint16_t pushval) { + write6502(BASE_STACK + sp, (pushval >> 8) & 0xFF); + write6502(BASE_STACK + ((sp - 1) & 0xFF), pushval & 0xFF); + sp -= 2; +} + +void push8(uint8_t pushval) { + write6502(BASE_STACK + sp--, pushval); +} + +uint16_t pull16() { + uint16_t temp16; + temp16 = read6502(BASE_STACK + ((sp + 1) & 0xFF)) | ((uint16_t)read6502(BASE_STACK + ((sp + 2) & 0xFF)) << 8); + sp += 2; + return(temp16); +} + +uint8_t pull8() { + return (read6502(BASE_STACK + ++sp)); +} + +void reset6502() { + pc = (uint16_t)read6502(0xFFFC) | ((uint16_t)read6502(0xFFFD) << 8); + a = 0; + x = 0; + y = 0; + sp = 0xFF; + status |= FLAG_CONSTANT; +} + + +static const void (*addrtable[256])(); +static const void (*optable[256])(); +uint8_t penaltyop, penaltyaddr; + +//addressing mode functions, calculates effective addresses +static void imp() { //implied +} + +static void acc() { //accumulator +} + +static void imm() { //immediate + ea = pc++; +} + +static void zp() { //zero-page + ea = (uint16_t)read6502((uint16_t)pc++); +} + +static void zpx() { //zero-page,X + ea = ((uint16_t)read6502((uint16_t)pc++) + (uint16_t)x) & 0xFF; //zero-page wraparound +} + +static void zpy() { //zero-page,Y + ea = ((uint16_t)read6502((uint16_t)pc++) + (uint16_t)y) & 0xFF; //zero-page wraparound +} + +static void rel() { //relative for branch ops (8-bit immediate value, sign-extended) + reladdr = (uint16_t)read6502(pc++); + if (reladdr & 0x80) reladdr |= 0xFF00; +} + +static void abso() { //absolute + ea = (uint16_t)read6502(pc) | ((uint16_t)read6502(pc+1) << 8); + pc += 2; +} + +static void absx() { //absolute,X + uint16_t startpage; + ea = ((uint16_t)read6502(pc) | ((uint16_t)read6502(pc+1) << 8)); + startpage = ea & 0xFF00; + ea += (uint16_t)x; + + if (startpage != (ea & 0xFF00)) { //one cycle penlty for page-crossing on some opcodes + penaltyaddr = 1; + } + + pc += 2; +} + +static void absy() { //absolute,Y + uint16_t startpage; + ea = ((uint16_t)read6502(pc) | ((uint16_t)read6502(pc+1) << 8)); + startpage = ea & 0xFF00; + ea += (uint16_t)y; + + if (startpage != (ea & 0xFF00)) { //one cycle penlty for page-crossing on some opcodes + penaltyaddr = 1; + } + + pc += 2; +} + +static void ind() { //indirect + uint16_t eahelp, eahelp2; + eahelp = (uint16_t)read6502(pc) | (uint16_t)((uint16_t)read6502(pc+1) << 8); + eahelp2 = (eahelp & 0xFF00) | ((eahelp + 1) & 0x00FF); //replicate 6502 page-boundary wraparound bug + ea = (uint16_t)read6502(eahelp) | ((uint16_t)read6502(eahelp2) << 8); + pc += 2; +} + +static void indx() { // (indirect,X) + uint16_t eahelp; + eahelp = (uint16_t)(((uint16_t)read6502(pc++) + (uint16_t)x) & 0xFF); //zero-page wraparound for table pointer + ea = (uint16_t)read6502(eahelp & 0x00FF) | ((uint16_t)read6502((eahelp+1) & 0x00FF) << 8); +} + +static void indy() { // (indirect),Y + uint16_t eahelp, eahelp2, startpage; + eahelp = (uint16_t)read6502(pc++); + eahelp2 = (eahelp & 0xFF00) | ((eahelp + 1) & 0x00FF); //zero-page wraparound + ea = (uint16_t)read6502(eahelp) | ((uint16_t)read6502(eahelp2) << 8); + startpage = ea & 0xFF00; + ea += (uint16_t)y; + + if (startpage != (ea & 0xFF00)) { //one cycle penlty for page-crossing on some opcodes + penaltyaddr = 1; + } +} + +static uint16_t getvalue() { + if (addrtable[opcode] == acc) return((uint16_t)a); + else return((uint16_t)read6502(ea)); +} + +//static uint16_t getvalue16() { +// return((uint16_t)read6502(ea) | ((uint16_t)read6502(ea+1) << 8)); +//} + +static void putvalue(uint16_t saveval) { + if (addrtable[opcode] == acc) a = (uint8_t)(saveval & 0x00FF); + else write6502(ea, (saveval & 0x00FF)); +} + + +//instruction handler functions +static void adc() { + penaltyop = 1; + value = getvalue(); + result = (uint16_t)a + value + (uint16_t)(status & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + overflowcalc(result, a, value); + signcalc(result); + + #ifndef NES_CPU + if (status & FLAG_DECIMAL) { + clearcarry(); + + if ((a & 0x0F) > 0x09) { + a += 0x06; + } + if ((a & 0xF0) > 0x90) { + a += 0x60; + setcarry(); + } + + clockticks6502++; + } + #endif + + saveaccum(result); +} + +static void and() { + penaltyop = 1; + value = getvalue(); + result = (uint16_t)a & value; + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +static void asl() { + value = getvalue(); + result = value << 1; + + carrycalc(result); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +static void bcc() { + if ((status & FLAG_CARRY) == 0) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void bcs() { + if ((status & FLAG_CARRY) == FLAG_CARRY) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void beq() { + if ((status & FLAG_ZERO) == FLAG_ZERO) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void bit() { + value = getvalue(); + result = (uint16_t)a & value; + + zerocalc(result); + status = (status & 0x3F) | (uint8_t)(value & 0xC0); +} + +static void bmi() { + if ((status & FLAG_SIGN) == FLAG_SIGN) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void bne() { + if ((status & FLAG_ZERO) == 0) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void bpl() { + if ((status & FLAG_SIGN) == 0) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void brk() { + pc++; + push16(pc); //push next instruction address onto stack + push8(status | FLAG_BREAK); //push CPU status OR'd with break flag to stack + setinterrupt(); //set interrupt flag + pc = (uint16_t)read6502(0xFFFE) | ((uint16_t)read6502(0xFFFF) << 8); +} + +static void bvc() { + if ((status & FLAG_OVERFLOW) == 0) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void bvs() { + if ((status & FLAG_OVERFLOW) == FLAG_OVERFLOW) { + oldpc = pc; + pc += reladdr; + if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary + else clockticks6502++; + } +} + +static void clc() { + clearcarry(); +} + +static void cld() { + cleardecimal(); +} + +static void cli() { + clearinterrupt(); +} + +static void clv() { + clearoverflow(); +} + +static void cmp() { + penaltyop = 1; + value = getvalue(); + result = (uint16_t)a - value; + + if (a >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (a == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +static void cpx() { + value = getvalue(); + result = (uint16_t)x - value; + + if (x >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (x == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +static void cpy() { + value = getvalue(); + result = (uint16_t)y - value; + + if (y >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (y == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +static void dec() { + value = getvalue(); + result = value - 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +static void dex() { + x--; + + zerocalc(x); + signcalc(x); +} + +static void dey() { + y--; + + zerocalc(y); + signcalc(y); +} + +static void eor() { + penaltyop = 1; + value = getvalue(); + result = (uint16_t)a ^ value; + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +static void inc() { + value = getvalue(); + result = value + 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +static void inx() { + x++; + + zerocalc(x); + signcalc(x); +} + +static void iny() { + y++; + + zerocalc(y); + signcalc(y); +} + +static void jmp() { + pc = ea; +} + +static void jsr() { + push16(pc - 1); + pc = ea; +} + +static void lda() { + penaltyop = 1; + value = getvalue(); + a = (uint8_t)(value & 0x00FF); + + zerocalc(a); + signcalc(a); +} + +static void ldx() { + penaltyop = 1; + value = getvalue(); + x = (uint8_t)(value & 0x00FF); + + zerocalc(x); + signcalc(x); +} + +static void ldy() { + penaltyop = 1; + value = getvalue(); + y = (uint8_t)(value & 0x00FF); + + zerocalc(y); + signcalc(y); +} + +static void lsr() { + value = getvalue(); + result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +static void nop() { + switch (opcode) { + case 0x1C: + case 0x3C: + case 0x5C: + case 0x7C: + case 0xDC: + case 0xFC: + penaltyop = 1; + break; + } +} + +static void ora() { + penaltyop = 1; + value = getvalue(); + result = (uint16_t)a | value; + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +static void pha() { + push8(a); +} + +static void php() { + push8(status | FLAG_BREAK); +} + +static void pla() { + a = pull8(); + + zerocalc(a); + signcalc(a); +} + +static void plp() { + status = pull8() | FLAG_CONSTANT; +} + +static void rol() { + value = getvalue(); + result = (value << 1) | (status & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +static void ror() { + value = getvalue(); + result = (value >> 1) | ((status & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +static void rti() { + status = pull8(); + value = pull16(); + pc = value; +} + +static void rts() { + value = pull16(); + pc = value + 1; +} + +static void sbc() { + penaltyop = 1; + value = getvalue() ^ 0x00FF; + result = (uint16_t)a + value + (uint16_t)(status & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + overflowcalc(result, a, value); + signcalc(result); + + #ifndef NES_CPU + if (status & FLAG_DECIMAL) { + clearcarry(); + + a -= 0x66; + if ((a & 0x0F) > 0x09) { + a += 0x06; + } + if ((a & 0xF0) > 0x90) { + a += 0x60; + setcarry(); + } + + clockticks6502++; + } + #endif + + saveaccum(result); +} + +static void sec() { + setcarry(); +} + +static void sed() { + setdecimal(); +} + +static void sei() { + setinterrupt(); +} + +static void sta() { + putvalue(a); +} + +static void stx() { + putvalue(x); +} + +static void sty() { + putvalue(y); +} + +static void tax() { + x = a; + + zerocalc(x); + signcalc(x); +} + +static void tay() { + y = a; + + zerocalc(y); + signcalc(y); +} + +static void tsx() { + x = sp; + + zerocalc(x); + signcalc(x); +} + +static void txa() { + a = x; + + zerocalc(a); + signcalc(a); +} + +static void txs() { + sp = x; +} + +static void tya() { + a = y; + + zerocalc(a); + signcalc(a); +} + +//undocumented instructions +#ifdef UNDOCUMENTED + static void lax() { + lda(); + ldx(); + } + + static void sax() { + sta(); + stx(); + putvalue(a & x); + if (penaltyop && penaltyaddr) clockticks6502--; + } + + static void dcp() { + dec(); + cmp(); + if (penaltyop && penaltyaddr) clockticks6502--; + } + + static void isb() { + inc(); + sbc(); + if (penaltyop && penaltyaddr) clockticks6502--; + } + + static void slo() { + asl(); + ora(); + if (penaltyop && penaltyaddr) clockticks6502--; + } + + static void rla() { + rol(); + and(); + if (penaltyop && penaltyaddr) clockticks6502--; + } + + static void sre() { + lsr(); + eor(); + if (penaltyop && penaltyaddr) clockticks6502--; + } + + static void rra() { + ror(); + adc(); + if (penaltyop && penaltyaddr) clockticks6502--; + } +#else + #define lax nop + #define sax nop + #define dcp nop + #define isb nop + #define slo nop + #define rla nop + #define sre nop + #define rra nop +#endif + + +static const void (*addrtable[256])() = { +/* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | */ +/* 0 */ imp, indx, imp, indx, zp, zp, zp, zp, imp, imm, acc, imm, abso, abso, abso, abso, /* 0 */ +/* 1 */ rel, indy, imp, indy, zpx, zpx, zpx, zpx, imp, absy, imp, absy, absx, absx, absx, absx, /* 1 */ +/* 2 */ abso, indx, imp, indx, zp, zp, zp, zp, imp, imm, acc, imm, abso, abso, abso, abso, /* 2 */ +/* 3 */ rel, indy, imp, indy, zpx, zpx, zpx, zpx, imp, absy, imp, absy, absx, absx, absx, absx, /* 3 */ +/* 4 */ imp, indx, imp, indx, zp, zp, zp, zp, imp, imm, acc, imm, abso, abso, abso, abso, /* 4 */ +/* 5 */ rel, indy, imp, indy, zpx, zpx, zpx, zpx, imp, absy, imp, absy, absx, absx, absx, absx, /* 5 */ +/* 6 */ imp, indx, imp, indx, zp, zp, zp, zp, imp, imm, acc, imm, ind, abso, abso, abso, /* 6 */ +/* 7 */ rel, indy, imp, indy, zpx, zpx, zpx, zpx, imp, absy, imp, absy, absx, absx, absx, absx, /* 7 */ +/* 8 */ imm, indx, imm, indx, zp, zp, zp, zp, imp, imm, imp, imm, abso, abso, abso, abso, /* 8 */ +/* 9 */ rel, indy, imp, indy, zpx, zpx, zpy, zpy, imp, absy, imp, absy, absx, absx, absy, absy, /* 9 */ +/* A */ imm, indx, imm, indx, zp, zp, zp, zp, imp, imm, imp, imm, abso, abso, abso, abso, /* A */ +/* B */ rel, indy, imp, indy, zpx, zpx, zpy, zpy, imp, absy, imp, absy, absx, absx, absy, absy, /* B */ +/* C */ imm, indx, imm, indx, zp, zp, zp, zp, imp, imm, imp, imm, abso, abso, abso, abso, /* C */ +/* D */ rel, indy, imp, indy, zpx, zpx, zpx, zpx, imp, absy, imp, absy, absx, absx, absx, absx, /* D */ +/* E */ imm, indx, imm, indx, zp, zp, zp, zp, imp, imm, imp, imm, abso, abso, abso, abso, /* E */ +/* F */ rel, indy, imp, indy, zpx, zpx, zpx, zpx, imp, absy, imp, absy, absx, absx, absx, absx /* F */ +}; + +static const void (*optable[256])() = { +/* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | */ +/* 0 */ brk, ora, nop, slo, nop, ora, asl, slo, php, ora, asl, nop, nop, ora, asl, slo, /* 0 */ +/* 1 */ bpl, ora, nop, slo, nop, ora, asl, slo, clc, ora, nop, slo, nop, ora, asl, slo, /* 1 */ +/* 2 */ jsr, and, nop, rla, bit, and, rol, rla, plp, and, rol, nop, bit, and, rol, rla, /* 2 */ +/* 3 */ bmi, and, nop, rla, nop, and, rol, rla, sec, and, nop, rla, nop, and, rol, rla, /* 3 */ +/* 4 */ rti, eor, nop, sre, nop, eor, lsr, sre, pha, eor, lsr, nop, jmp, eor, lsr, sre, /* 4 */ +/* 5 */ bvc, eor, nop, sre, nop, eor, lsr, sre, cli, eor, nop, sre, nop, eor, lsr, sre, /* 5 */ +/* 6 */ rts, adc, nop, rra, nop, adc, ror, rra, pla, adc, ror, nop, jmp, adc, ror, rra, /* 6 */ +/* 7 */ bvs, adc, nop, rra, nop, adc, ror, rra, sei, adc, nop, rra, nop, adc, ror, rra, /* 7 */ +/* 8 */ nop, sta, nop, sax, sty, sta, stx, sax, dey, nop, txa, nop, sty, sta, stx, sax, /* 8 */ +/* 9 */ bcc, sta, nop, nop, sty, sta, stx, sax, tya, sta, txs, nop, nop, sta, nop, nop, /* 9 */ +/* A */ ldy, lda, ldx, lax, ldy, lda, ldx, lax, tay, lda, tax, nop, ldy, lda, ldx, lax, /* A */ +/* B */ bcs, lda, nop, lax, ldy, lda, ldx, lax, clv, lda, tsx, lax, ldy, lda, ldx, lax, /* B */ +/* C */ cpy, cmp, nop, dcp, cpy, cmp, dec, dcp, iny, cmp, dex, nop, cpy, cmp, dec, dcp, /* C */ +/* D */ bne, cmp, nop, dcp, nop, cmp, dec, dcp, cld, cmp, nop, dcp, nop, cmp, dec, dcp, /* D */ +/* E */ cpx, sbc, nop, isb, cpx, sbc, inc, isb, inx, sbc, nop, sbc, cpx, sbc, inc, isb, /* E */ +/* F */ beq, sbc, nop, isb, nop, sbc, inc, isb, sed, sbc, nop, isb, nop, sbc, inc, isb /* F */ +}; + +static const uint32_t ticktable[256] = { +/* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | */ +/* 0 */ 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, /* 0 */ +/* 1 */ 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 1 */ +/* 2 */ 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, /* 2 */ +/* 3 */ 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 3 */ +/* 4 */ 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, /* 4 */ +/* 5 */ 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 5 */ +/* 6 */ 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, /* 6 */ +/* 7 */ 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 7 */ +/* 8 */ 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* 8 */ +/* 9 */ 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, /* 9 */ +/* A */ 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* A */ +/* B */ 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, /* B */ +/* C */ 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* C */ +/* D */ 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* D */ +/* E */ 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* E */ +/* F */ 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7 /* F */ +}; + + +void nmi6502() { + push16(pc); + push8(status); + status |= FLAG_INTERRUPT; + pc = (uint16_t)read6502(0xFFFA) | ((uint16_t)read6502(0xFFFB) << 8); +} + +void irq6502() { + if ((status & FLAG_INTERRUPT) == FLAG_INTERRUPT) return; //abort if interrupts are inhibited + push16(pc); + push8(status); + status |= FLAG_INTERRUPT; + pc = (uint16_t)read6502(0xFFFE) | ((uint16_t)read6502(0xFFFF) << 8); +} + +uint8_t callexternal = 0; +void (*loopexternal)(); +uint8_t showdump = 0; + +uint64_t exec6502(uint64_t tickcount) { + uint64_t startticks; + clockgoal6502 += tickcount; + + startticks = clockticks6502; + while (clockticks6502 < clockgoal6502) { + opcode = read6502(pc++); + status |= FLAG_CONSTANT; + + penaltyop = 0; + penaltyaddr = 0; + + (*addrtable[opcode])(); + (*optable[opcode])(); + clockticks6502 += ticktable[opcode]; + if (penaltyop && penaltyaddr) clockticks6502++; + + instructions++; + + if (callexternal) (*loopexternal)(); + } + + return(clockticks6502 - startticks); +} + +void step6502() { + opcode = read6502(pc++); + status |= FLAG_CONSTANT; + + penaltyop = 0; + penaltyaddr = 0; + + (*addrtable[opcode])(); + (*optable[opcode])(); + clockticks6502 += ticktable[opcode]; + //if (penaltyop && penaltyaddr) clockticks6502++; + clockgoal6502 = clockticks6502; + + instructions++; + + if (callexternal) (*loopexternal)(); +} + +void hookexternal(void *funcptr) { + if (funcptr != (void *)NULL) { + loopexternal = funcptr; + callexternal = 1; + } else callexternal = 0; +} + +uint16_t getPC() { + return(pc); +} + +uint64_t getclockticks() { + return(clockticks6502); +} diff --git a/MCUME_esp32/espnes/main/6502.h b/MCUME_esp32/espnes/main/6502.h new file mode 100755 index 0000000..12c3747 --- /dev/null +++ b/MCUME_esp32/espnes/main/6502.h @@ -0,0 +1,64 @@ +#ifndef __6502_H__ +#define __6502_H__ + +//6502 defines +#define UNDOCUMENTED //when this is defined, undocumented opcodes are handled. + //otherwise, they're simply treated as NOPs. + +#define NES_CPU //when this is defined, the binary-coded decimal (BCD) + //status flag is not honored by ADC and SBC. the 2A03 + //CPU in the Nintendo Entertainment System does not + //support BCD operation. + +#define FLAG_CARRY 0x01 +#define FLAG_ZERO 0x02 +#define FLAG_INTERRUPT 0x04 +#define FLAG_DECIMAL 0x08 +#define FLAG_BREAK 0x10 +#define FLAG_CONSTANT 0x20 +#define FLAG_OVERFLOW 0x40 +#define FLAG_SIGN 0x80 + +#define BASE_STACK 0x100 + +#define saveaccum(n) a = (uint8_t)((n) & 0x00FF) + + +//flag modifier macros +#define setcarry() status |= FLAG_CARRY +#define clearcarry() status &= (~FLAG_CARRY) +#define setzero() status |= FLAG_ZERO +#define clearzero() status &= (~FLAG_ZERO) +#define setinterrupt() status |= FLAG_INTERRUPT +#define clearinterrupt() status &= (~FLAG_INTERRUPT) +#define setdecimal() status |= FLAG_DECIMAL +#define cleardecimal() status &= (~FLAG_DECIMAL) +#define setbreak() status |= FLAG_BREAK +#define clearbreak() status &= (~FLAG_BREAK) +#define setoverflow() status |= FLAG_OVERFLOW +#define clearoverflow() status &= (~FLAG_OVERFLOW) +#define setsign() status |= FLAG_SIGN +#define clearsign() status &= (~FLAG_SIGN) + + +//flag calculation macros +#define zerocalc(n) {\ + if ((n) & 0x00FF) clearzero();\ + else setzero();\ +} + +#define signcalc(n) {\ + if ((n) & 0x0080) setsign();\ + else clearsign();\ +} + +#define carrycalc(n) {\ + if ((n) & 0xFF00) setcarry();\ + else clearcarry();\ +} + +#define overflowcalc(n, m, o) { /* n = result, m = accumulator, o = memory */ \ + if (((n) ^ (uint16_t)(m)) & ((n) ^ (o)) & 0x0080) setoverflow();\ + else clearoverflow();\ +} +#endif diff --git a/MCUME_esp32/espnes/main/AudioPlaySystem.cpp b/MCUME_esp32/espnes/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..1b0fcc8 --- /dev/null +++ b/MCUME_esp32/espnes/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espnes/main/AudioPlaySystem.h b/MCUME_esp32/espnes/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espnes/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espnes/main/NES.c b/MCUME_esp32/espnes/main/NES.c new file mode 100644 index 0000000..8c7b4f6 --- /dev/null +++ b/MCUME_esp32/espnes/main/NES.c @@ -0,0 +1,219 @@ +/* MoarNES source - NES.c + + This open-source software is (c)2010-2013 Mike Chambers, and is released + under the terms of the GNU GPL v2 license. + + This file contains the code to simulate the internal NES architecture, + such as memory mapping, redirecting read/writes to I/O registers, etc. +*/ + +#include +#include "moarnes.h" +#include "emuapi.h" + +const uint32_t nesRgb[] = +{ 0x7C7C7C, 0x0000FC, 0x0000BC, 0x4428BC, 0x940084, 0xA80020, 0xA81000, 0x881400, + 0x503000, 0x007800, 0x006800, 0x005800, 0x004058, 0x000000, 0x000000, 0x000000, + 0xBCBCBC, 0x0078F8, 0x0058F8, 0x6844FC, 0xD800CC, 0xE40058, 0xF83800, 0xE45C10, + 0xAC7C00, 0x00B800, 0x00A800, 0x00A844, 0x008888, 0x000000, 0x000000, 0x000000, + 0xF8F8F8, 0x3CBCFC, 0x6888FC, 0x9878F8, 0xF878F8, 0xF85898, 0xF87858, 0xFCA044, + 0xF8B800, 0xB8F818, 0x58D854, 0x58F898, 0x00E8D8, 0x787878, 0x000000, 0x000000, + 0xFCFCFC, 0xA4E4FC, 0xB8B8F8, 0xD8B8F8, 0xF8B8F8, 0xF8A4C0, 0xF0D0B0, 0xFCE0A8, + 0xF8D878, 0xD8F878, 0xB8F8B8, 0xB8F8D8, 0x00FCFC, 0xF8D8F8, 0x000000, 0x000000 }; + +/* + Nintendo Entertainment System: CPU memory map + + $0000-$07FF = 2 KB internal RAM + $0800-$1FFF = Mirrors of $0000-$07FF + $2000-$2007 = PPU registers + $2008-$3FFF = Mirrors of $2000-$2007 + $4000-$4017 = APU and I/O registers + $4018-$FFFF = Cartridge PRG ROM, cartridge PRG RAM, and mapper registers + + $FFFA = NMI vector + $FFFC = Reset vector + $FFFE = IRQ/BRK vector + + In some cartridges, $6000-$7FFF is SRAM. + +*/ + +uint8_t NESRAM[0x800]; //2 KB internal RAM +uint16_t sprtablesave; +extern struct cart_s cartridge; //struct is declared in rom.c +extern struct PPU_s *PPU; +extern struct OAM_s *OAM; +extern struct map4_s *map4; + +extern uint8_t * outputNES; + +static uint8_t m_strobe; // Joypad strobe latch. +static unsigned int m_keyStates; + +static uint8_t joypad_state(uint8_t joy) { + int val = emu_ReadKeys(); + int but = emu_GetPad(); + int hbut = emu_ReadI2CKeyboard(); + uint8_t retval=0x00; + + if (joy == 0) + { + if (val & MASK_JOY2_BTN) retval |= 0x01; //A + if (val & MASK_KEY_USER1) retval |= 0x02; //B + if ( (val & MASK_KEY_USER2) || (but == 2) || (hbut == 2) ) retval |= 0x04; //Select + if ( (val & MASK_KEY_USER3) || (but == 3) || (hbut == 3) ) retval |= 0x08; //Start + if (val & MASK_JOY2_UP) retval |= 0x10; //Up + if (val & MASK_JOY2_DOWN) retval |= 0x20; //Down + if (val & MASK_JOY2_RIGHT) retval |= 0x40; //Right + if (val & MASK_JOY2_LEFT) retval |= 0x80; //Left + } + + return retval; +} + +static void joystrobe(uint8_t b) +{ + m_strobe = (b & 1); + if (!m_strobe) + { + m_keyStates = joypad_state(0); + } +} + +static uint8_t joyread(uint8_t n) +{ + uint8_t ret; + if (m_strobe) + ret = (joypad_state(0) & 1); + else + { + ret = (m_keyStates & 1); + m_keyStates >>= 1; + m_keyStates |= 0x80; + } + return ret | 0x40; +} + + +#define readAPU(x) 0 +#define writeAPU(x,y) {} + + +uint8_t read6502(uint16_t addr) { + if (addr < 0x2000) return (NESRAM[addr & 0x7FF]); + else if (addr < 0x4000) return (readPPUregs(0x2000 | (addr & 7))); + else if (addr < 0x4018) { + switch (addr) { + case 0x4016: return (joyread(0)); break; + //case 0x4017: return (joyread(1)); break; + default: return (readAPU(addr)); break; + } + } + else if (addr < 0x8000) { + return ((cartridge.hasSRAM == true)?cartridge.SRAM[addr & 0x1FFF]:0); + } else { + //if we get to this point, it's a read from the cartridge + addr &= 0x7FFF; + return (cartridge.PRGbank[addr>>10][addr&1023]); + } +} + +void write6502(uint16_t addr, uint8_t value) { + uint16_t tempsprite; + + if ((cartridge.mapper>0) && (addr>0x7FFF)) if (mapperwrite(addr, value)) return; + if (addr < 0x2000) { NESRAM[addr & 0x7FF] = value; return; } + if (addr < 0x4000) { writePPUregs(0x2000 | (addr & 7), value); return; } + if (addr < 0x4018) { + if (addr == 0x4014) { + addr = (value<<8); + for (tempsprite=0; tempsprite<64; tempsprite++) { + OAM->RAM[OAM->addr++] = NESRAM[addr++]; + OAM->RAM[OAM->addr++] = NESRAM[addr++]; + OAM->RAM[OAM->addr++] = NESRAM[addr++]; + OAM->RAM[OAM->addr++] = NESRAM[addr++]; + } + //for (tempsprite=0; tempsprite<256; tempsprite++) { + // OAM->RAM[(OAM->addr+tempsprite)&255] = read6502(value*256+tempsprite); + //} + return; + } + if (addr == 0x4016) joystrobe(value); + else writeAPU(addr, value); + return; + } + + if (addr < 0x8000) { + if (cartridge.hasSRAM == true) { + cartridge.SRAM[addr & 0x1FFF] = value; + } else return; //open data bus if no cartidge SRAM + } + + //if we get to this point, it's an attempted write to the cartridge. + //obviously, being ROM, nothing would actually get written anywhere. +} + + +void execframe(bool skiprender) { + uint16_t scanline; + + if (cartridge.mapper == 4) map4->irqcounter = map4->irqlatch; + PPU->vblank = 0; + PPU->sprzero = 0; + PPU->sprover = 0; + sprtablesave = PPU->sprtable; + if (PPU->bgvisible) { + execCPU(101); + PPU->addr = PPU->tempaddr; + execCPU(13); + } else execCPU(114); + for (scanline=0; scanline<240; scanline++) { + if (cartridge.mapper == 4) { + if (map4->irqenable && map4->irqcounter == 0) irqCPU(); + if (map4->irqcounter == 0) map4->irqcounter = map4->irqlatch; + if (PPU->bgvisible || PPU->sprvisible) { + map4irqdecrement(); + //if (map4->irqcounter > 0) map4->irqcounter--; + // else map4->irqcounter = map4->irqlatch; + } + } + +#ifdef PIXEL_ACCURACY + if ((scanline%3)==0) execCPU(8); +#else + if ((scanline%3)==0) execCPU(86); + else execCPU(85); +#endif + + if (skiprender == false) { + renderscanline(scanline); + emu_DrawLine(outputNES, 256, 240, scanline); + } + + if (PPU->bgvisible) PPU->addr = (PPU->addr & 0xFBE0) | (PPU->tempaddr & 0x041F); + + execCPU(28); + } + + execCPU(340); + + PPU->vblank = 1; + if (PPU->nmivblank) nmiCPU(); + emu_DrawVsync(); + + execCPU(1930); +} + + +void execNES() { + resetCPU(); + memset(&NESRAM[0], 0, 2048); + + int i; + for (i=0; i<64; i++) { + emu_SetPaletteEntry((nesRgb[i]>>16)&0xff,(nesRgb[i]>>8)&0xff,(nesRgb[i])&0xff, i); + } + +} + diff --git a/MCUME_esp32/espnes/main/PPU.c b/MCUME_esp32/espnes/main/PPU.c new file mode 100644 index 0000000..d5daaf6 --- /dev/null +++ b/MCUME_esp32/espnes/main/PPU.c @@ -0,0 +1,359 @@ +/* MoarNES source - PPU.c + + This open-source software is (c)2010-2012 Mike Chambers, and is released + under the terms of the GNU GPL v2 license. + + This is my implementation of the Picture Processing Unit (PPU) of the + Nintendo Entertainment System. It is not perfect at this point, but the + vast majority games will run correctly. + + This is arguably the most difficult aspect of a NES emulator to make + perfect! +*/ + +//#include +//#include +//#include "stdint.h" +//#include + +#include "moarnes.h" + +#include "PPU.h" +#include "rom.h" +#include "prototypes.h" + +#include "emuapi.h" + + +struct PPU_s *PPU; +struct OAM_s *OAM; +uint8_t *VRAM; +uint8_t * outputNES; + +extern struct cart_s cartridge; +extern struct map9_s *map9; + +uint8_t readPPU(uint16_t addr) { + uint8_t tempbyte, oldbyte; + addr &= 0x3FFF; + if (addr>=0x3F00) addr = 0x3F00 | (addr & 0x1F); + if (addr>0x2FFF && addr<0x3F00) addr = 0x3000 | (addr & 0xEFF); + if (addr>=0x2000 && addr<0x2400) addr = (addr - 0x2000) + PPU->ntmap[0]; + else if (addr>=0x2400 && addr<0x2800) addr = (addr - 0x2400) + PPU->ntmap[1]; + else if (addr>=0x2800 && addr<0x2C00) addr = (addr - 0x2800) + PPU->ntmap[2]; + else if (addr>=0x2C00 && addr<0x3000) addr = (addr - 0x2C00) + PPU->ntmap[3]; + if (addr<0x2000) { + tempbyte = cartridge.CHRbank[addr>>10][addr&1023]; + if (cartridge.mapper == 9) { + switch (addr & 0x3FF0) { + case 0x0FD0: map9->latch1 = 0xFD; CHRswap(&cartridge, 0, map9->latch0_fd, 4096); break; + case 0x0FE0: map9->latch1 = 0xFE; CHRswap(&cartridge, 0, map9->latch0_fe, 4096); break; + case 0x1FD0: map9->latch2 = 0xFD; CHRswap(&cartridge, 1, map9->latch1_fd, 4096); break; + case 0x1FE0: map9->latch2 = 0xFE; CHRswap(&cartridge, 1, map9->latch1_fe, 4096); break; + } + } + oldbyte = PPU->bytebuffer; + PPU->bytebuffer = tempbyte; + return oldbyte; + } + if (addr >= 0x3F00) tempbyte = VRAM[addr]; + else tempbyte = PPU->bytebuffer; + PPU->bytebuffer = VRAM[addr]; + return(tempbyte); +} + +void writePPU(uint16_t addr, uint8_t value){ + addr &= 0x3FFF; + if (addr>=0x3F00) addr = 0x3F00 | (addr & 0x1F); + if (addr==0x3F00 || addr==0x3F10) { VRAM[0x3F00] = value; VRAM[0x3F10] = value; return; } + if (addr==0x3F04 || addr==0x3F14) { VRAM[0x3F04] = value; VRAM[0x3F14] = value; return; } + if (addr==0x3F08 || addr==0x3F18) { VRAM[0x3F08] = value; VRAM[0x3F18] = value; return; } + if (addr==0x3F0C || addr==0x3F1C) { VRAM[0x3F0C] = value; VRAM[0x3F1C] = value; return; } + if (addr>0x2FFF && addr<0x3F00) addr = 0x3000 | (addr & 0xEFF); + if (addr>=0x2000 && addr<0x2400) addr = (addr - 0x2000) + PPU->ntmap[0]; + else if (addr>=0x2400 && addr<0x2800) addr = (addr - 0x2400) + PPU->ntmap[1]; + else if (addr>=0x2800 && addr<0x2C00) addr = (addr - 0x2800) + PPU->ntmap[2]; + else if (addr>=0x2C00 && addr<0x3000) addr = (addr - 0x2C00) + PPU->ntmap[3]; + if (addr>=0x2000) { +//emu_printf("v"); + + VRAM[addr] = value; + if (cartridge.mapper == 9) { + switch (addr & 0x3FF0) { + case 0x0FD0: map9->latch1 = 0xFD; CHRswap(&cartridge, 0, map9->latch0_fd, 4096); break; + case 0x0FE0: map9->latch1 = 0xFE; CHRswap(&cartridge, 0, map9->latch0_fe, 4096); break; + case 0x1FD0: map9->latch2 = 0xFD; CHRswap(&cartridge, 1, map9->latch1_fd, 4096); break; + case 0x1FE0: map9->latch2 = 0xFE; CHRswap(&cartridge, 1, map9->latch1_fe, 4096); break; + } + } + } else if (cartridge.CHRcount==0) cartridge.CHRbank[addr>>10][addr&1023] = value; +} + +uint8_t lastwritten; +uint8_t readPPUregs(uint16_t addr) { + uint8_t tempbyte; + switch (addr) { + case 0x2002: + tempbyte = (PPU->vblank << 7) | (PPU->sprzero << 6) | (PPU->sprover << 5) | (lastwritten & 0x1F); + PPU->vblank = 0; + PPU->addrlatch = 0; + PPU->scrolllatch = 0; + return(tempbyte); + case 0x2004: + return(OAM->RAM[OAM->addr]); + case 0x2007: + tempbyte = readPPU(PPU->addr); + PPU->addr = (PPU->addr + PPU->addrinc) & 0x3FFF; + return(tempbyte); + } + return(0); +} + +void writePPUregs(uint16_t addr, uint8_t value) { + PPU->regs[addr & 7] = value; + lastwritten = value; + switch (addr) { + case 0x2000: + if (value&128) PPU->nmivblank = 1; else PPU->nmivblank = 0; + if (value&32) PPU->sprsize = 16; else PPU->sprsize = 8; + if (value&16) PPU->bgtable = 0x1000; else PPU->bgtable = 0x0000; + if (value&8) PPU->sprtable = 0x1000; else PPU->sprtable = 0x0000; + if (value&4) PPU->addrinc = 32; else PPU->addrinc = 1; + PPU->nametable = value&3; + PPU->tempaddr = (PPU->tempaddr & 0xF3FF) | (((uint16_t)value & 3) << 10); + break; + case 0x2001: + if (value&16) PPU->sprvisible = 1; else PPU->sprvisible = 0; + if (value&8) { + PPU->bgvisible = 1; + //emu_printf("a"); + + } + else PPU->bgvisible = 0; + if (value&4) PPU->sprclip = 0; else PPU->sprclip = 1; + if (value&2) PPU->bgclip = 0; else PPU->bgclip = 1; + break; + case 0x2003: + OAM->addr = value; + break; + case 0x2004: + OAM->RAM[OAM->addr++] = value; + break; + case 0x2005: + if (PPU->addrlatch == 0) { + PPU->xscroll = value & 7; + PPU->tempaddr = (PPU->tempaddr & 0xFFE0) | ((uint16_t)value >> 3); + PPU->addrlatch = 1; + } else { + PPU->yscroll = value & 7; + PPU->tempaddr = (PPU->tempaddr & 0xFC1F) | (((uint16_t)value & 0xF8) << 2); + PPU->addrlatch = 0; + } + break; + case 0x2006: + if (PPU->addrlatch == 0) { + PPU->tempaddr = (PPU->tempaddr & 0x00FF) | (((uint16_t)value & 0x3F) << 8); + PPU->addrlatch = 1; + } else { + PPU->tempaddr = (PPU->tempaddr & 0xFF00) | (uint16_t)value; + PPU->addr = PPU->tempaddr; + PPU->addrlatch = 0; + } + break; + case 0x2007: + writePPU(PPU->addr, value); + PPU->addr = (PPU->addr + PPU->addrinc) & 0x3FFF; + break; + } +} + +uint16_t backgnd[256], sprfront[256], sprback[256], sprzero[256]; +uint8_t frontidx[256], backidx[256]; +extern uint16_t sprtablesave; + +void rendersprites(uint16_t scanline) { + int16_t OAMptr; + uint16_t attr, spry, sprx, table, tile, flipx, flipy, x, startx, plotx, calcx, calcy, patoffset; + uint8_t curpixel, palette, priority; + //uint8_t valid[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + //uint8_t spr0idx = 255; + uint8_t drawcount = 0; + + if (scanline == 0) return; + else scanline--; + + memset(backidx, 255, sizeof(backidx)); + memset(frontidx, 255, sizeof(frontidx)); + OAMptr = 0; + + if (PPU->sprclip) startx = 8; + else startx = 0; + if (PPU->sprsize == 8) table = PPU->sprtable; + + for (OAMptr=252; OAMptr>=0; OAMptr-=4) { + if ((scanline >= OAM->buf[OAMptr]) && (scanline < (OAM->buf[OAMptr] + PPU->sprsize))) { + spry = OAM->buf[OAMptr]; + spry = scanline - spry; + tile = OAM->buf[OAMptr+1]; + attr = OAM->buf[OAMptr+2]; + sprx = OAM->buf[OAMptr+3]; + palette = (attr & 3) << 2; + priority = (attr >> 5) & 1; + flipx = (attr >> 6) & 1; + flipy = (attr >> 7) & 1; + + if (++drawcount > 8) { + PPU->sprover = 1; + break; + } + + if (PPU->sprsize == 16) { + table = (tile & 1) << 12; + tile &= 0xFE; + if (flipy) calcy = (~spry & 15); + else calcy = spry & 15; + if (calcy > 7) tile++; + calcy &= 7; + } else { + if (flipy) calcy = (~spry & 7); + else calcy = spry & 7; + } + + for (x=0; x<8; x++) { + if (flipx) calcx = ~x & 7; + else calcx = x; + plotx = sprx + x; + if ((plotx >= startx) && (plotx < 255)) { + patoffset = table + (tile << 4) + calcy; + curpixel = (cartridge.CHRbank[patoffset>>10][patoffset&1023] >> (~calcx & 7)) & 1; patoffset += 8; + curpixel |= ((cartridge.CHRbank[patoffset>>10][patoffset&1023] >> (~calcx & 7)) & 1) << 1; + if (curpixel > 0) { + if (OAMptr == 0) if (backgnd[plotx] > 0) PPU->sprzero = 1; + curpixel |= palette; + if (priority) { sprback[plotx] = 0x3F10 + (uint16_t)curpixel; backidx[plotx] = (uint8_t)OAMptr; } + else { sprfront[plotx] = 0x3F10 + (uint16_t)curpixel; frontidx[plotx] = (uint8_t)OAMptr; } + } + } + } + + } + } +} + +void renderbackground(uint16_t scanline) { + uint16_t x, startx, calcx, calcy, patoffset, usent, ntbase, tile, tempval, patbank; + uint8_t curpixel, curattrib; + uint16_t lastx= 0xFFFF; + //uint16_t lasty = lastx = 0xFFFF; + + if (PPU->bgclip) startx = 8; //if background clipping enabled, don't draw leftmost 8 pixels + else startx = 0; //otherwise do + + + + for (x=0; x<264; x++) { + calcx = ((PPU->addr << 3) & 0xFF) | PPU->xscroll; + calcy = ((PPU->addr >> 2) & 0xF8) | PPU->yscroll; + usent = (PPU->addr >> 10) & 3; + ntbase = PPU->ntmap[usent]; //nametable base address + tile = VRAM[ntbase + ((calcy & 248) << 2) + (calcx >> 3)]; //calculate tile offset based on X,Y coords + + patoffset = PPU->bgtable + (tile << 4) + (calcy & 7); //then turn that into the byte offset in the nametable array + curattrib = (VRAM[ntbase + 0x3C0 + ((calcy & 224) >> 2) + (calcx >> 5)] >> (((calcx & 16) >> 3) | ((calcy & 16) >> 2)) & 3) << 2; + patbank = patoffset >> 10; + + curpixel = (cartridge.CHRbank[patoffset>>10][patoffset&1023] >> (~calcx & 7)) & 1; //used to go fetch the two + curpixel |= ((cartridge.CHRbank[patoffset>>10][(patoffset+8)&1023] >> (~calcx & 7)) & 1) << 1; //lower bits of the pixel's palette index + + if ((curpixel > 0) && (x >= startx) && (x < 256)) { //if those are not zero, then this is a visible pixel + backgnd[x] = 0x3F00 + (curpixel | curattrib); //stick it in the buffer to be drawn + } +/* + if (cartridge.mapper == 9) { + if (tile == 0xFD) { + if (patbank > 3) CHRswap(&cartridge, 1, map9->latch1_fd, 4096); + else CHRswap(&cartridge, 0, map9->latch0_fd, 4096); + } else if (tile == 0xFE) { + if (patbank > 3) CHRswap(&cartridge, 1, map9->latch1_fe, 4096); + else CHRswap(&cartridge, 0, map9->latch0_fe, 4096); + } + } +*/ + PPU->xscroll++; + if (PPU->xscroll == 8) { + PPU->xscroll = 0; + tempval = (PPU->addr & 0x1F) + 1; + if (tempval == 32) PPU->addr ^= 1024; + PPU->addr = (PPU->addr & 0xFFE0) | (tempval & 0x1F); + } + } + + PPU->yscroll++; + if (PPU->yscroll == 8) + { + PPU->yscroll = 0; + tempval = ((PPU->addr >> 5) & 0x1F) + 1; + if (tempval == 30) + { + tempval = 0; + PPU->addr ^= 2048; + } + PPU->addr = (PPU->addr & 0xFC1F) | ((tempval & 0x1F) << 5); + } +} + +void renderscanline(uint16_t scanline) { + uint16_t tmpx; + + PPU->sprover = 0; + + memset(&backgnd[0], 0, sizeof(backgnd)); + memset(&sprback[0], 0, sizeof(sprback)); + memset(&sprfront[0], 0, sizeof(sprfront)); + memset(&sprzero[0], 0, sizeof(sprzero)); + + + if (PPU->bgvisible) renderbackground(scanline); + else if ((scanline%3)==0) execCPU(86); else execCPU(85); + memcpy(&OAM->buf[0], &OAM->RAM[0], sizeof(OAM->RAM)); + if (PPU->sprvisible) rendersprites(scanline); + + uint8_t *dst=outputNES; + for (tmpx=0; tmpx<256; tmpx++) { + if ((sprfront[tmpx]>0) && (frontidx[tmpx] < backidx[tmpx])) + *dst++ = VRAM[sprfront[tmpx]] & 0x3F; + else { + if (backgnd[tmpx]>0) { + *dst++ = VRAM[backgnd[tmpx]] & 0x3F; + if (sprzero[tmpx]) PPU->sprzero = 1; + } + else { + if (sprback[tmpx]==0) + *dst++ = VRAM[0x3F00] & 0x3F; + else + *dst++ = VRAM[sprback[tmpx]] & 0x3F; + } + } + } +} + +void initPPU() { + outputNES = emu_Malloc(256); + PPU = emu_Malloc(sizeof(struct PPU_s)); + VRAM = emu_Malloc(16384); + if ((PPU == NULL) || (VRAM == NULL)) fatalerr("Unable to allocate memory for PPU!"); + OAM = emu_Malloc(sizeof(struct OAM_s)); + if (OAM == NULL) fatalerr("Unable to allocate memory for OAM!"); + + memset(PPU, 0, sizeof(*PPU)); + memset(OAM, 0, sizeof(*OAM)); + memset(VRAM, 0, 16384); + PPU->sprsize = 8; +} + +void killPPU() { + if (PPU != NULL) free(PPU); + if (VRAM != NULL) free(VRAM); + if (OAM != NULL) free(OAM); + if (outputNES != NULL) free(outputNES); +} diff --git a/MCUME_esp32/espnes/main/PPU.h b/MCUME_esp32/espnes/main/PPU.h new file mode 100644 index 0000000..6a99878 --- /dev/null +++ b/MCUME_esp32/espnes/main/PPU.h @@ -0,0 +1,44 @@ +#ifndef __PPU_H__ +#define __PPU_H__ + +struct PPU_s { + uint16_t ntx; + uint16_t nty; + uint16_t ntmap[4]; + uint16_t addr; + uint16_t tempaddr; + uint16_t addrinc; + uint16_t addrlatch; + uint16_t nametable; + uint8_t r2006[2]; + + uint16_t sprtable; + uint16_t bgtable; + uint16_t sprvisible; + uint16_t bgvisible; + uint16_t sprsize; + uint16_t nmivblank; + + uint16_t xscroll; + uint16_t yscroll; + uint16_t scrolllatch; + + uint8_t greyscale; + uint8_t bgclip; + uint8_t sprclip; + + uint8_t regs[8]; + uint8_t sprzero; + uint8_t sprover; + uint8_t vblank; + + uint8_t bytebuffer; +}; + +struct OAM_s { + uint8_t addr; + uint8_t RAM[256]; + uint8_t buf[256]; + uint8_t valid[8]; +}; +#endif diff --git a/MCUME_esp32/espnes/main/bmpjoy.h b/MCUME_esp32/espnes/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espnes/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espnes/main/bmpvbar.h b/MCUME_esp32/espnes/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espnes/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espnes/main/component.mk b/MCUME_esp32/espnes/main/component.mk new file mode 100644 index 0000000..03de198 --- /dev/null +++ b/MCUME_esp32/espnes/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=maybe-uninitialized -Wno-error=sequence-point -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espnes/main/emuapi.cpp b/MCUME_esp32/espnes/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/espnes/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " NES Emulator " +#define ROMSDIR "nes" + +#define emu_Init(ROM) {initPPU();loadROM(filename);execNES();} +#define emu_Step(x) {execframe(x);} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x3 +#define PALETTE_SIZE 64 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 12 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 104 +#define KEYBOARD_Y 78 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 21 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,40,40, + TAREA_END}; + +const unsigned short keys[] = { + 2,3}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008}; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + + + diff --git a/MCUME_esp32/espnes/main/font8x8.h b/MCUME_esp32/espnes/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espnes/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espnes/main/go.cpp b/MCUME_esp32/espnes/main/go.cpp new file mode 100644 index 0000000..ba6ddaf --- /dev/null +++ b/MCUME_esp32/espnes/main/go.cpp @@ -0,0 +1,106 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "moarnes.h" +} + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step((emu_FrameSkip()==0)?false:true); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + +void fatalerr(char *errmsg) { + printf("Error %s\n",errmsg); +} + diff --git a/MCUME_esp32/espnes/main/go.h b/MCUME_esp32/espnes/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espnes/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espnes/main/ili9341_t3dma.cpp b/MCUME_esp32/espnes/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espnes/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espnes/main/ili9341_t3dma.h b/MCUME_esp32/espnes/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espnes/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espnes/main/iopins.h b/MCUME_esp32/espnes/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espnes/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espnes/main/keyboard_osd.h b/MCUME_esp32/espnes/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espnes/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espnes/main/main.c b/MCUME_esp32/espnes/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espnes/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espnes/main/mapper.c b/MCUME_esp32/espnes/main/mapper.c new file mode 100644 index 0000000..7d1ee71 --- /dev/null +++ b/MCUME_esp32/espnes/main/mapper.c @@ -0,0 +1,375 @@ +/* MoarNES source - mapper.c + + This open-source software is (c)2010-2013 Mike Chambers, and is released + under the terms of the GNU GPL v2 license. + + This code handles the many video and system mapping hardware found in most + game cartridge hardware. It doesn't handle them all by any means, but most + major mappers are supported. +*/ + +#include +#include "moarnes.h" +#include "emuapi.h" + +extern uint16_t lastop; +uint16_t lastchange = 0; +struct map9_s *map9; +struct map4_s *map4; +struct map1_s *map1; +void *mappermemory = NULL; //this gets allocated, and a mapper struct shares it's pointer. it's for easier state saving. +uint32_t mappersize = 0; + +extern struct cart_s cartridge; +extern struct PPU_s *PPU; + +//extern bool running; +//extern bool paused; + +void PRGswap(struct cart_s *cart, uint16_t banknum, uint16_t newbank, uint16_t banksize) { + uint16_t tmpstart, tmplen, tmpcur, tmpcur2; + tmpstart = (newbank*banksize)>>10; + tmplen = banksize>>10; + tmpcur2 = (banknum*banksize)>>10; + for (tmpcur=0; tmpcurPRGbank[tmpcur2] = &cart->PRGfull[(uint32_t)tmpstart << 10]; + cart->PRGblock[tmpcur2++] = tmpstart++; + } +} + +void CHRswap(struct cart_s *cart, uint16_t banknum, uint16_t newbank, uint16_t banksize) { + uint16_t tmpstart, tmplen, tmpcur, tmpcur2; + tmpstart = (newbank*banksize)>>10; + tmplen = banksize>>10; + tmpcur2 = (banknum*banksize)>>10; + for (tmpcur=0; tmpcurCHRbank[tmpcur2] = &cart->CHRfull[(uint32_t)tmpstart << 10]; + cart->CHRblock[tmpcur2++] = tmpstart++; + } +} + +extern uint8_t *VRAM; +bool mapperinit(struct cart_s *cart) { + //uint8_t msgdata[256]; + + mappersize = 0; + if (mappermemory != NULL) free(mappermemory); + mappermemory = NULL; + memset(VRAM, 0, 16384); + + switch (cart->mapper) { + case 0: + if (cart->PRGcount == 16) { + PRGswap(cart, 0, 0, 16384); + PRGswap(cart, 1, 0, 16384); + } else { + PRGswap(cart, 0, 0, 32768); + } + CHRswap(cart, 0, 0, 8192); + break; + + case 1: //MMC1 + mappermemory = emu_Malloc(sizeof(struct map1_s)); + memset(mappermemory, 0, sizeof(struct map1_s)); + mappersize = sizeof(struct map1_s); + map1 = mappermemory; + PRGswap(cart, 0, 0, 16384); + PRGswap(cart, 1, (cart->PRGcount>>4)-1, 16384); + CHRswap(cart, 0, 0, 8192); + write6502(0x8000, 12); + break; + + case 2: //UxROM + PRGswap(cart, 0, 0, 16384); + PRGswap(cart, 1, (cart->PRGcount>>4)-1, 16384); + CHRswap(cart, 0, 0, 8192); + break; + + case 3: //CNROM + if (cart->PRGcount == 16) { + PRGswap(cart, 0, 0, 16384); + PRGswap(cart, 1, 0, 16384); + } else { + PRGswap(cart, 0, 0, 32768); + } + CHRswap(cart, 0, 0, 8192); + break; + + case 4: //MMC3 + mappermemory = emu_Malloc(sizeof(struct map4_s)); + memset(mappermemory, 0, sizeof(struct map4_s)); + mappersize = sizeof(struct map4_s); + map4 = mappermemory; + PRGswap(cart, 0, 0, 16384); + PRGswap(cart, 1, (cart->PRGcount >> 4) - 1, 16384); + CHRswap(cart, 0, 0, 8192); + map4->irqenable = 0; + map4->irqcounter = 255; + map4->irqlatch = 255; + PPU->bgtable = 0x0000; + PPU->sprtable = 0x1000; + break; + + case 7: //AxROM + PRGswap(cart, 0, 0, 32768); + CHRswap(cart, 0, 0, 8192); + cart->CHRcount = 0; + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2000; + break; + + case 9: //MMC2 + case 10: //MMC4 + mappermemory = emu_Malloc(sizeof(struct map9_s)); + memset(mappermemory, 0, sizeof(struct map9_s)); + mappersize = sizeof(struct map9_s); + map9 = mappermemory; + PRGswap(cart, 0, 0, 8192); + PRGswap(cart, 1, (cart->PRGcount>>3)-3, 8192); + PRGswap(cart, 2, (cart->PRGcount>>3)-2, 8192); + PRGswap(cart, 3, (cart->PRGcount>>3)-1, 8192); + map9->latch1 = 0xFE; + map9->latch2 = 0xFE; + break; + + case 11: //color dreams + PRGswap(cart, 0, 0, 32768); + CHRswap(cart, 0, 0, 8192); + break; + + case 13: //CPROM + PRGswap(cart, 0, 0, 32768); + CHRswap(cart, 0, 0, 4096); + CHRswap(cart, 1, 0, 4096); + break; + + default: + //sprintf((int8_t *)msgdata, "Sorry, mapper %u is not yet supported.", cart->mapper); + //msgbox(msgdata, MB_ICONERROR | MB_OK); + //running = false; + //paused = false; + return(false); + } + + return(true); +} + +void map4irqdecrement() { + if (map4->irqcounter > 0) { + map4->irqcounter--; + } else { + if (map4->irqenable) + irqCPU(); + map4->irqcounter = map4->irqlatch; + } +} + +//uint8_t map1reg[4] = { 0, 0, 0, 0 }; +//uint8_t map1bitpos = 0, map1accum = 0; +void map1calc() { + switch (map1->map1reg[0]&3) { + case 0: + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2000; break; + case 1: + PPU->ntmap[0] = 0x2400; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2400; + PPU->ntmap[3] = 0x2400; break; + case 2: + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2400; break; + case 3: + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2400; + PPU->ntmap[3] = 0x2400; break; + } + if (map1->map1reg[0]&8) { + if (map1->map1reg[0]&4) { PRGswap(&cartridge, 0, map1->map1reg[3]&0xF, 16384); PRGswap(&cartridge, 1, (cartridge.PRGcount>>4)-1, 16384); } + else { PRGswap(&cartridge, 0, 0, 16384); PRGswap(&cartridge, 1, map1->map1reg[3]&0xF, 16384); } + } else { + PRGswap(&cartridge, 0, (map1->map1reg[3]&0xF)>>1, 32768); + } + if (map1->map1reg[0]&16) { + CHRswap(&cartridge, 0, map1->map1reg[1], 4096); + CHRswap(&cartridge, 1, map1->map1reg[2], 4096); + } else { + CHRswap(&cartridge, 0, map1->map1reg[1]>>1, 8192); + } + +} + +uint8_t mapperwrite(uint16_t addr, uint8_t value) { + switch (cartridge.mapper) { + case 1: //MMC1 + if (value&128) { + map1->map1reg[0] = (map1->map1reg[0]&0xF3)+0xC; //bits 2, 3 set - others unchanged + map1->map1bitpos = 0; map1->map1accum = 0; + return(1); + } + map1->map1accum |= (value&1) << map1->map1bitpos; + if (map1->map1bitpos==4) { + if (addr>=0xE000) { + map1->map1reg[3] = map1->map1accum; + } else if (addr>=0xC000) { + map1->map1reg[2] = map1->map1accum; + } else if (addr>=0xA000) { + map1->map1reg[1] = map1->map1accum; + } else map1->map1reg[0] = map1->map1accum; + map1calc(); + map1->map1bitpos = 0; map1->map1accum = 0; + return(1); + } + map1->map1bitpos = (map1->map1bitpos + 1) % 5; + break; + + case 2: //UxROM + PRGswap(&cartridge, 0, value, 16384); + return(1); + + case 3: //CNROM + CHRswap(&cartridge, 0, value & 3, 8192); + return(1); + + case 4: //MMC3 + if ((addr >= 0x8000) && (addr < 0xA000)) { + if (addr & 1) { + switch (map4->command) { + case 0: //select two 1 KB VROM pages at PPU $0000 + CHRswap(&cartridge, ((0<<10)^map4->chraddrselect)>>10, value, 1024); + CHRswap(&cartridge, ((1<<10)^map4->chraddrselect)>>10, value+1, 1024); + break; + case 1: //select two 1 KB VROM pages at PPU $0800 + CHRswap(&cartridge, ((2<<10)^map4->chraddrselect)>>10, value, 1024); + CHRswap(&cartridge, ((3<<10)^map4->chraddrselect)>>10, value+1, 1024); + break; + case 2: //select 1 KB VROM page at PPU $1000 + CHRswap(&cartridge, ((4<<10)^map4->chraddrselect)>>10, value, 1024); + break; + case 3: //select 1 KB VROM page at PPU $1400 + CHRswap(&cartridge, ((5<<10)^map4->chraddrselect)>>10, value, 1024); + break; + case 4: //select 1 KB VROM page at PPU $1800 + CHRswap(&cartridge, ((6<<10)^map4->chraddrselect)>>10, value, 1024); + break; + case 5: //select 1 KB VROM page at PPU $1C00 + CHRswap(&cartridge, ((7<<10)^map4->chraddrselect)>>10, value, 1024); + break; + case 6: //select first switchable ROM page + map4->prgswitch1 = value & ((cartridge.PRGcount>>3)-1); + break; + case 7: //select second switchable ROM page + map4->prgswitch2 = value & ((cartridge.PRGcount>>3)-1); + break; + } + if ((map4->command == 6) || (map4->command == 7)) { + if (map4->prgaddr) { + PRGswap(&cartridge, 0, (cartridge.PRGcount>>3)-2, 8192); + PRGswap(&cartridge, 1, map4->prgswitch2, 8192); + PRGswap(&cartridge, 2, map4->prgswitch1, 8192); + PRGswap(&cartridge, 3, (cartridge.PRGcount>>3)-1, 8192); + } else { + PRGswap(&cartridge, 0, map4->prgswitch1, 8192); + PRGswap(&cartridge, 1, map4->prgswitch2, 8192); + PRGswap(&cartridge, 2, (cartridge.PRGcount>>3)-2, 8192); + PRGswap(&cartridge, 3, (cartridge.PRGcount>>3)-1, 8192); + } + return(1); + } + } else { + map4->command = value & 7; + map4->prgaddr = value & 0x40; + if (value & 0x80) map4->chraddrselect = 0x1000; + else map4->chraddrselect = 0x0000; + return(1); + } + } else if ((addr >= 0xA000) && (addr < 0xC000)) { + if (addr & 1) { + //if (value & 0x80) + } else { + cartridge.mirroring = value & 1; + if (cartridge.mirroring) { + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2400; + PPU->ntmap[3] = 0x2400; + } else { + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2400; + } + } + } else if ((addr >= 0xC000) && (addr < 0xE000)) { + if (addr & 1) map4->irqcounter = 0; + else map4->irqlatch = value; + } else { + if (addr & 1) map4->irqenable = 1; + else map4->irqenable = 0; + } + return(1); + + case 7: //AxROM + PRGswap(&cartridge, 0, value & 0x0F, 32768); + if (value & 0x10) { + PPU->ntmap[0] = 0x2400; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2400; + PPU->ntmap[3] = 0x2400; + } else { + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2000; + } + return(1); + + case 9: //MMC2 + case 10: //MMC4 + if ((addr >= 0xA000) && (addr < 0xB000)) { + PRGswap(&cartridge, 0, value & 0x0F, 8192); + } else if ((addr >= 0xB000) && (addr < 0xC000)) { + map9->latch0_fd = value; + if (map9->latch1 == 0xFD) CHRswap(&cartridge, 0, map9->latch0_fd, 4096); + } else if ((addr >= 0xC000) && (addr < 0xD000)) { + map9->latch0_fe = value; + if (map9->latch1 == 0xFE) CHRswap(&cartridge, 0, map9->latch0_fe, 4096); + } else if ((addr >= 0xD000) && (addr < 0xE000)) { + map9->latch1_fd = value; + if (map9->latch2 == 0xFD) CHRswap(&cartridge, 1, map9->latch1_fd, 4096); + } else if ((addr >= 0xE000) && (addr < 0xF000)) { + map9->latch1_fe = value; + if (map9->latch2 == 0xFE) CHRswap(&cartridge, 1, map9->latch1_fe, 4096); + } else if (addr >= 0xF000) { + if (value & 1) { //horizontal + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2400; + PPU->ntmap[3] = 0x2400; + } else { //vertical + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2400; + } + } + break; + + case 11: //color dreams + PRGswap(&cartridge, 0, value & 3, 32768); + CHRswap(&cartridge, 0, value >> 4, 8192); + break; + + case 13: //CPROM + CHRswap(&cartridge, 1, value & 3, 4096); + break; + } + return(0); +} diff --git a/MCUME_esp32/espnes/main/moarnes.h b/MCUME_esp32/espnes/main/moarnes.h new file mode 100644 index 0000000..5895911 --- /dev/null +++ b/MCUME_esp32/espnes/main/moarnes.h @@ -0,0 +1,20 @@ +#define PIXEL_ACCURACY 1 + +//#define resetCPU() CPU_reset() //nes6502_reset() +//#define execCPU(x) CPU_execute(x) //nes6502_execute(x) +//#define nmiCPU() NMI(0) //nes6502_nmi() +//#define irqCPU() IRQ(0) //nes6502_irq() + +#define resetCPU() reset6502(); +#define execCPU(x) exec6502(x) +#define nmiCPU() nmi6502() +#define irqCPU() irq6502() + + +#include +#include "stdint.h" +#include "6502.h" +//#include "APU.h" +#include "PPU.h" +#include "rom.h" +#include "prototypes.h" diff --git a/MCUME_esp32/espnes/main/prototypes.h b/MCUME_esp32/espnes/main/prototypes.h new file mode 100644 index 0000000..c77c588 --- /dev/null +++ b/MCUME_esp32/espnes/main/prototypes.h @@ -0,0 +1,38 @@ +#ifndef __PROTOTYPES_H__ +#define __PROTOTYPES_H__ + +extern void fatalerr(char *errmsg); + +extern bool mapperinit(struct cart_s *cart); +extern void CHRswap(struct cart_s *cart, uint16_t banknum, uint16_t newbank, uint16_t banksize); +extern void map4irqdecrement(); +extern uint8_t mapperwrite(uint16_t addr, uint8_t value); + +extern uint64_t exec6502(uint64_t tickcount); +extern void step6502(); +extern void reset6502(); +extern void nmi6502(); +extern uint8_t read6502(uint16_t addr); +extern void write6502(uint16_t addr, uint8_t value); +extern void irq6502(); + +extern void renderscanline(uint16_t scanline); + +extern bool loadROM(char *filename); +extern void execNES(); +extern void execframe(bool skip); + +extern void hookexternal(void *funcptr); +extern void initPPU(); +extern void killPPU(); +extern uint8_t readPPU(uint16_t addr); +extern void writePPU(uint16_t addr, uint8_t value); +extern uint8_t readPPUregs(uint16_t addr); +extern void writePPUregs(uint16_t addr, uint8_t value); +//extern bool initAPU(uint8_t CPUmode, uint32_t samplerate); +//extern void killAPU(); +//extern void tickchannelsAPU(); +//extern uint8_t readAPU(uint16_t addr); +//extern void writeAPU(uint16_t addr, uint8_t value); + +#endif diff --git a/MCUME_esp32/espnes/main/rom.c b/MCUME_esp32/espnes/main/rom.c new file mode 100644 index 0000000..561f503 --- /dev/null +++ b/MCUME_esp32/espnes/main/rom.c @@ -0,0 +1,86 @@ +/* MoarNES source - rom.c + + This open-source software is (c)2010-2013 Mike Chambers, and is released + under the terms of the GNU GPL v2 license. + + This file contains the code to load NES ROM files. +*/ + +#include +#include "moarnes.h" +#include "emuapi.h" + +extern bool ROMisNSF; +struct cart_s cartridge; +extern struct PPU_s *PPU; +static const uint8_t validhdr[4] = { 'N', 'E', 'S', 0x1A }; + +bool loadROM(char *filename) { + static struct hdr_s header; + uint16_t setptr; + + emu_printf("Loading ROM..."); + + emu_LoadFileSeek(filename, (char*)&header, sizeof(header), 0); + if (memcmp((void *)&header.match, (void *)&validhdr[0], 4)) return(false); + emu_printf("ROM header read!"); + + //parse through the header data + if (header.flags[1] == 'D') header.flags[1] = 0; //DISKDUDE fix + cartridge.mapper = ((header.flags[0] >> 4) | (header.flags[1] & 0xF0)); + cartridge.hasSRAM = 1; //(header.flags[0] & 2) >> 1; + if (header.flags[0] & 8) cartridge.mirroring = MIR_FOURSCREEN; + else if (header.flags[0] & 1) cartridge.mirroring = MIR_VERTICAL; + else cartridge.mirroring = MIR_HORIZONTAL; + if (header.flags[0] & 4) cartridge.hasTrainer = true; + else cartridge.hasTrainer = false; + cartridge.PRGcount = (uint16_t)header.PRGsize << 4; //header gives PRG size in 16 KB units, we want it in 1 KB + cartridge.CHRcount = (uint16_t)header.CHRsize << 3; //and CHR size is in 8 KB units + + switch (cartridge.mirroring) { + case 0: + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2000; + PPU->ntmap[2] = 0x2400; + PPU->ntmap[3] = 0x2400; + break; + case 1: + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2000; + PPU->ntmap[3] = 0x2400; + break; + case 2: + PPU->ntmap[0] = 0x2000; + PPU->ntmap[1] = 0x2400; + PPU->ntmap[2] = 0x2600; + PPU->ntmap[3] = 0x2800; + break; + default: + break; + } + + cartridge.PRGfull = emu_Malloc(cartridge.PRGcount << 10); + if (cartridge.PRGfull == NULL) fatalerr("Unable to allocate for PRG-ROM data!"); + if (cartridge.CHRcount > 0) { + cartridge.CHRfull = emu_Malloc(cartridge.CHRcount << 10); + if (cartridge.CHRfull == NULL) fatalerr("Unable to allocate for CHR-ROM data!"); + } else { + cartridge.CHRfull = emu_Malloc(1024 << 10); + } + + emu_LoadFileSeek(filename, (char*)cartridge.PRGfull, (int)cartridge.PRGcount << 10, 16); + emu_LoadFileSeek(filename, (char*)cartridge.CHRfull, (int)cartridge.CHRcount << 10, 16+((int)cartridge.PRGcount << 10)); + + //first init all PRG/CHR bank pointers to the beginning of PRG/CHR memory + //just in case, to avoid possible crashes from bad pointers + for (setptr=0; setptr<1024; setptr++) { + cartridge.CHRbank[setptr] = cartridge.CHRfull; + cartridge.PRGbank[setptr] = cartridge.PRGfull; + } + + if (mapperinit(&cartridge) == false) return(false); + emu_printf("ROM read!"); + + return(true); +} diff --git a/MCUME_esp32/espnes/main/rom.h b/MCUME_esp32/espnes/main/rom.h new file mode 100644 index 0000000..861e615 --- /dev/null +++ b/MCUME_esp32/espnes/main/rom.h @@ -0,0 +1,75 @@ +#ifndef __ROM_H__ +#define __ROM_H__ + +#define MIR_HORIZONTAL 0 +#define MIR_VERTICAL 1 +#define MIR_FOURSCREEN 2 + +struct cart_s { +// uint8_t title[MAX_PATH]; + uint8_t mapper; + uint8_t mirroring; + uint16_t PRGcount; + uint16_t CHRcount; + bool hasSRAM; + bool hasCHRRAM; + bool hasTrainer; + uint8_t *PRGfull; + uint8_t *CHRfull; + uint8_t *PRGbank[1024]; + uint8_t *CHRbank[1024]; + uint16_t PRGblock[1024]; //this and CHRblock aren't used for memory access, but they are used to + uint16_t CHRblock[1024]; //store save states since pointers can change between executions + uint8_t SRAM[8192]; + //uint8_t trainer[512]; +}; + +struct hdr_s { + uint8_t match[4]; + uint8_t PRGsize; + uint8_t CHRsize; + uint8_t flags[4]; //flags[2] is actually size of PRG RAM in 8 KB units + uint8_t zerobytes[5]; +}; + +struct map9_s { + uint8_t latch0_fd; + uint8_t latch0_fe; + uint8_t latch1_fd; + uint8_t latch1_fe; + uint8_t latch1; + uint8_t latch2; +}; + +struct map4_s { + /*uint8_t prgmode; //0 = $8000-$9FFF swappable, $C000-$DFFF fixed to second-last bank. 1 = reversed. + uint8_t chrmode; //0 = two 2 KB at $0000-$0FFF, four 1 KB at $1000-$1FFF. 1 = reversed. + uint8_t bankselect; + uint8_t irqlatch; + uint8_t irqenable;*/ + uint8_t command; + uint8_t vromsize; + uint16_t chraddrselect; + uint16_t irqcounter; + uint16_t irqlatch; + uint8_t irqenable; + uint8_t swap; + uint16_t prgswitch1; + uint16_t prgswitch2; + uint8_t prgaddr; +}; + +struct map1_s { + uint8_t map1reg[4]; + uint8_t map1bitpos; + uint8_t map1accum; +}; + +struct cheat_s { + uint8_t replace; + uint8_t compare; + uint8_t docompare; + uint8_t valid; + uint16_t addr; +}; +#endif diff --git a/MCUME_esp32/espnes/main/stdint.h b/MCUME_esp32/espnes/main/stdint.h new file mode 100755 index 0000000..b2cc725 --- /dev/null +++ b/MCUME_esp32/espnes/main/stdint.h @@ -0,0 +1,14 @@ +#define uint8_t unsigned char +#define int8_t char +#define uint16_t unsigned short +#define int16_t short +#define uint32_t unsigned long +#define int32_t long +#define uint64_t unsigned long long +#define int64_t long long + +#ifndef __BOOL_DEFINED + #define bool uint8_t + #define true 1 + #define false 0 +#endif diff --git a/MCUME_esp32/espnes/sdkconfig b/MCUME_esp32/espnes/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/espnes/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espnes/sdkconfig.old b/MCUME_esp32/espnes/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/espnes/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espnofrendo/.DS_Store b/MCUME_esp32/espnofrendo/.DS_Store new file mode 100644 index 0000000..0787fb7 Binary files /dev/null and b/MCUME_esp32/espnofrendo/.DS_Store differ diff --git a/MCUME_esp32/espnofrendo/Makefile b/MCUME_esp32/espnofrendo/Makefile new file mode 100644 index 0000000..6d0639c --- /dev/null +++ b/MCUME_esp32/espnofrendo/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espnofrendo + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espnofrendo/components/.DS_Store b/MCUME_esp32/espnofrendo/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/espnofrendo/components/.DS_Store differ diff --git a/MCUME_esp32/espnofrendo/components/Audio/.DS_Store b/MCUME_esp32/espnofrendo/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnofrendo/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espnofrendo/components/Audio/component.mk b/MCUME_esp32/espnofrendo/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espnofrendo/components/Wire/.DS_Store b/MCUME_esp32/espnofrendo/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnofrendo/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espnofrendo/components/Wire/Wire.cpp b/MCUME_esp32/espnofrendo/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espnofrendo/components/Wire/Wire.h b/MCUME_esp32/espnofrendo/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espnofrendo/components/Wire/component.mk b/MCUME_esp32/espnofrendo/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espnofrendo/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espnofrendo/flashapp.sh b/MCUME_esp32/espnofrendo/flashapp.sh new file mode 100755 index 0000000..c0c8d63 --- /dev/null +++ b/MCUME_esp32/espnofrendo/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x2B0000 ../espnofrendo/build/espnofrendo.bin diff --git a/MCUME_esp32/espnofrendo/main/.DS_Store b/MCUME_esp32/espnofrendo/main/.DS_Store new file mode 100644 index 0000000..c780dc0 Binary files /dev/null and b/MCUME_esp32/espnofrendo/main/.DS_Store differ diff --git a/MCUME_esp32/espnofrendo/main/AudioPlaySystem.cpp b/MCUME_esp32/espnofrendo/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..c548380 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/AudioPlaySystem.cpp @@ -0,0 +1,291 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ + if (playing) { +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif + } +} +#endif + + diff --git a/MCUME_esp32/espnofrendo/main/AudioPlaySystem.h b/MCUME_esp32/espnofrendo/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espnofrendo/main/bmpjoy.h b/MCUME_esp32/espnofrendo/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espnofrendo/main/bmpvbar.h b/MCUME_esp32/espnofrendo/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espnofrendo/main/component.mk b/MCUME_esp32/espnofrendo/main/component.mk new file mode 100644 index 0000000..03de198 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=maybe-uninitialized -Wno-error=sequence-point -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espnofrendo/main/emuapi.cpp b/MCUME_esp32/espnofrendo/main/emuapi.cpp new file mode 100644 index 0000000..42de3db --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_JOY1_BTN) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_JOY1_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if ( (bClick & MASK_JOY2_UP) || (bClick & MASK_JOY1_UP) ) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_DOWN) || (bClick & MASK_JOY1_DOWN) ) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " NOFRENDO Emulator " +#define ROMSDIR "nes" + +#define emu_Init(ROM) {nes_Start(ROM); nes_Init(); } +#define emu_Step(x) { nes_Step(); } +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x1 +#define PALETTE_SIZE 256 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,40,40, + TAREA_END}; + +const unsigned short keys[] = { + 2,3}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008}; +#endif + + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + diff --git a/MCUME_esp32/espnofrendo/main/font8x8.h b/MCUME_esp32/espnofrendo/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espnofrendo/main/go.cpp b/MCUME_esp32/espnofrendo/main/go.cpp new file mode 100644 index 0000000..22f6586 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/go.cpp @@ -0,0 +1,96 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "nes_emu.h" +} + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + emu_Input(bClick); +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/espnofrendo/main/go.h b/MCUME_esp32/espnofrendo/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espnofrendo/main/ili9341_t3dma.cpp b/MCUME_esp32/espnofrendo/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..3628402 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/ili9341_t3dma.cpp @@ -0,0 +1,667 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + // Area width, height +#define DX ((ILI9341_TFTREALWIDTH-ILI9341_TFTWIDTH)/2) +#define DY ((ILI9341_TFTREALHEIGHT-ILI9341_TFTHEIGHT)/2) + {ILI9341_CASET, {DX>>8, DX&0xff, (DX+ILI9341_TFTWIDTH-1)>>8, (DX+ILI9341_TFTWIDTH-1)&0xff}, 4}, + {ILI9341_PASET, {DY>>8, DY&0xff, (DY+ILI9341_TFTHEIGHT-1)>>8, (DY+ILI9341_TFTHEIGHT-1)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTWIDTH+(ILI9341_TFTWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTWIDTH+(ILI9341_TFTWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espnofrendo/main/ili9341_t3dma.h b/MCUME_esp32/espnofrendo/main/ili9341_t3dma.h new file mode 100644 index 0000000..8f54ccf --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 256 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espnofrendo/main/iopins.h b/MCUME_esp32/espnofrendo/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espnofrendo/main/keyboard_osd.h b/MCUME_esp32/espnofrendo/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espnofrendo/main/main.c b/MCUME_esp32/espnofrendo/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espnofrendo/main/nes_emu.c b/MCUME_esp32/espnofrendo/main/nes_emu.c new file mode 100644 index 0000000..1d7ad54 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nes_emu.c @@ -0,0 +1,280 @@ +#include "emuapi.h" + +#include +#include +#include +#include +#include +#include +#include + +//Nes stuff wants to define this as well... +#undef false +#undef true +#undef bool + +#include "nes.h" +#include "noftypes.h" +#include "nofconfig.h" +#include "event.h" +#include "osd.h" +#include "nofrendo.h" +#include "nesinput.h" + +#define DEFAULT_WIDTH 256 +#define DEFAULT_HEIGHT NES_VISIBLE_HEIGHT + +char configfilename[]="na"; +char romname[64]; + +/* This is os-specific part of main() */ +int osd_main(int argc, char *argv[]) +{ + config.filename = configfilename; + + return main_loop(romname, system_nes); +} + +/* File system interface */ +void osd_fullname(char *fullname, const char *shortname) +{ + strncpy(fullname, shortname, 64); +} + +/* This gives filenames for storage of saves */ +char *osd_newextension(char *string, char *ext) +{ + return string; +} + +/* This gives filenames for storage of PCX snapshots */ +int osd_makesnapname(char *filename, int len) +{ + return -1; +} + +#if HAS_SND +static void (*audio_callback)(void *buffer, int length) = NULL; + +void SND_Process( void * stream, int len ) +{ + if (audio_callback != NULL) { + audio_callback(stream,len); + } +} +#endif + +void osd_setsound(void (*playfunc)(void *buffer, int length)) +{ + //Indicates we should call playfunc() to get more data. +#if HAS_SND + audio_callback = playfunc; +#endif +} + +static void osd_stopsound(void) +{ +#if HAS_SND + audio_callback = NULL; +#endif +} + + +static int osd_init_sound(void) +{ + audio_callback = NULL; + + return 0; +} + +void osd_getsoundinfo(sndinfo_t *info) +{ + info->sample_rate = 22050; + info->bps = 16; +} + +void osd_getinput(void) +{ + const int ev[16]={ + event_joypad1_select,0,0,event_joypad1_start,event_joypad1_up,event_joypad1_right,event_joypad1_down,event_joypad1_left, + 0,0,0,0,event_soft_reset,event_joypad1_a,event_joypad1_b,event_hard_reset + }; + + int j=emu_ReadKeys(); + int hk = emu_ReadI2CKeyboard(); + int b=0xffff; + + + if ( (j & MASK_KEY_USER3) ) // B + b &= ~0x4000; + if ( (j & MASK_KEY_USER2) || (hk == 2) ) // SELECT + b &= ~0x0001; + if ( (j & MASK_KEY_USER1) || (hk == 3) ) // START + b &= ~0x0008; + if (j & MASK_JOY2_UP) + b &= ~0x0010; + if (j & MASK_JOY2_LEFT) + b &= ~0x0020; + if (j & MASK_JOY2_DOWN) + b &= ~0x0040; + if (j & MASK_JOY2_RIGHT) + b &= ~0x0080; + if (j & MASK_JOY2_BTN) // A + b &= ~0x2000; + + static int oldb=0xffff; + + int chg=b^oldb; + int x; + oldb=b; + event_t evh; + for (x=0; x<16; x++) { + if (chg&1) { + evh=event_get(ev[x]); + if (evh) evh((b&1)?INP_STATE_BREAK:INP_STATE_MAKE); + } + chg>>=1; + b>>=1; + } +} + + +void osd_getmouse(int *x, int *y, int *button) +{ +} + +/* this is at the bottom, to eliminate warnings */ +void osd_shutdown() +{ +} + +int osd_init() +{ + return 0; +} + + +/* +** Video +*/ +static int init(int width, int height) +{ + return 0; +} + +static void shutdown(void) +{ +} + +static int set_mode(int width, int height) +{ + return 0; +} + +static bitmap_t *myBitmap=NULL; +static void set_palette(rgb_t *pal) +{ + int i; + for (i = 0; i < PALETTE_SIZE; i++) + { + emu_SetPaletteEntry(pal[i].r, pal[i].g, pal[i].b,i); + } + +} + +/* clear all frames to a particular color */ +static void clear(uint8 color) +{ +} + +/* acquire the directbuffer for writing */ +static char fb[1]; //dummy +static bitmap_t *lock_write(void) +{ + if (myBitmap == NULL) + myBitmap = bmp_createhw((uint8*)fb, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH*2); + + return myBitmap; +} + +/* release the resource */ +static void free_write(int num_dirties, rect_t *dirty_rects) +{ + //bmp_destroy(&myBitmap); +} + + +static void custom_blit(bitmap_t *bmp, int num_dirties, rect_t *dirty_rects) { +} + +static viddriver_t sdlDriver = +{ + "Simple DirectMedia Layer", /* name */ + init, /* init */ + shutdown, /* shutdown */ + set_mode, /* set_mode */ + set_palette, /* set_palette */ + clear, /* clear */ + lock_write, /* lock_write */ + free_write, /* free_write */ + custom_blit, /* custom_blit */ + false /* invalidate flag */ +}; + +void osd_getvideoinfo(vidinfo_t *info) +{ + info->default_width = DEFAULT_WIDTH; + info->default_height = DEFAULT_HEIGHT; + info->driver = &sdlDriver; +} + +void osd_togglefullscreen(int code) +{ +} + +//Seemingly, this will be called only once. Should call func with a freq of frequency, +int osd_installtimer(int frequency, void *func, int funcsize, void *counter, int countersize) +{ + return 0; +} + + +char* romdata=NULL; +char *osd_getromdata() { + + return (char*)romdata; +} + + + + +void nes_Init(void) +{ + nofrendo_main(0, NULL); +} + +void nes_Step(void) +{ + nes_step(emu_FrameSkip()); + emu_DrawVsync(); + vTaskDelay(10 / portTICK_PERIOD_MS); +} + + +void nes_Start(char * filename) +{ + strcpy(romname,filename); + int romsize = emu_FileSize(filename); + romdata = (char*)emu_Malloc(romsize); + if (romdata) + { + if (emu_FileOpen(filename)) { + if (emu_FileRead((char*)romdata, romsize) != romsize ) { + romdata = NULL; + } + emu_FileClose(); + } else { + romdata = NULL; + } + } +} diff --git a/MCUME_esp32/espnofrendo/main/nes_emu.h b/MCUME_esp32/espnofrendo/main/nes_emu.h new file mode 100644 index 0000000..2ece48c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nes_emu.h @@ -0,0 +1,4 @@ +extern void nes_Init(void); +extern void nes_Step(void); +extern void nes_Start(char * filename); + diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/.DS_Store b/MCUME_esp32/espnofrendo/main/nofrendo/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espnofrendo/main/nofrendo/.DS_Store differ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/bitmap.c b/MCUME_esp32/espnofrendo/main/nofrendo/bitmap.c new file mode 100644 index 0000000..f26a775 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/bitmap.c @@ -0,0 +1,152 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** bitmap.c +** +** Bitmap object manipulation routines +** $Id: bitmap.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include "noftypes.h" +#include "bitmap.h" + +// JMH this file had to be adapted for the ESP + + +#include "emuapi.h" + +void bmp_clear(const bitmap_t *bitmap, uint8 color) +{ + // + //memset(bitmap->data, color, bitmap->pitch * bitmap->height); +} + +static bitmap_t *_make_bitmap(uint8 *data_addr, bool hw, int width, + int height, int pitch, int overdraw) +{ + bitmap_t *bitmap; + int i; + + /* quick safety check */ + if (NULL == data_addr) + return NULL; + + /* Make sure to add in space for line pointers */ + bitmap = emu_Malloc(sizeof(bitmap_t) + (sizeof(uint8 *) * height)); + if (NULL == bitmap) + { + return NULL; + } + bitmap->hardware = hw; + bitmap->height = height; + bitmap->width = width; + bitmap->data = data_addr; + bitmap->pitch = pitch + (overdraw * 2); + + /* Set up line pointers */ + /* we want to make some 32-bit aligned adjustment + ** if we haven't been given a hardware bitmap + */ + //printf("setting up bitmap %d\n",(int)bitmap); + for (i = 0; i < height; i++) { + bitmap->line[i] = emu_LineBuffer(i); + } + + return bitmap; +} + +static char fb[1]; +/* Allocate and initialize a bitmap structure */ +bitmap_t *bmp_create(int width, int height, int overdraw) +{ +// uint8 *addr; +// int pitch; +// +// pitch = width + (overdraw * 2); /* left and right */ +// addr = malloc((pitch * height) + 3); /* add max 32-bit aligned adjustment */ +// if (NULL == addr) +// return NULL; +//printf("bmp_create\n"); + return _make_bitmap((uint8*)fb, false, width, height, width, overdraw); +} + + +/* allocate and initialize a hardware bitmap */ +bitmap_t *bmp_createhw(uint8 *addr, int width, int height, int pitch) +{ + return _make_bitmap(addr, true, width, height, pitch, 0); /* zero overdraw */ +} + +/* Deallocate space for a bitmap structure */ +void bmp_destroy(bitmap_t **bitmap) +{ + if (*bitmap) + { + free(*bitmap); + *bitmap = NULL; + } +} + +/* +** $Log: bitmap.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.16 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.15 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.14 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.13 2000/08/13 13:16:30 matt +** bugfix for alignment adjustment +** +** Revision 1.12 2000/07/24 04:31:43 matt +** pitch/data area on non-hw bitmaps get padded to 32-bit boundaries +** +** Revision 1.11 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.10 2000/07/09 14:43:01 matt +** pitch is now configurable for bmp_createhw() +** +** Revision 1.9 2000/07/06 17:55:57 matt +** two big bugs fixed +** +** Revision 1.8 2000/07/06 17:38:11 matt +** replaced missing string.h include +** +** Revision 1.7 2000/07/06 16:46:57 matt +** added bmp_clear() routine +** +** Revision 1.6 2000/06/26 04:56:24 matt +** minor cleanup +** +** Revision 1.5 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/bitmap.h b/MCUME_esp32/espnofrendo/main/nofrendo/bitmap.h new file mode 100644 index 0000000..4e3ce7a --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/bitmap.h @@ -0,0 +1,93 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** bitmap.h +** +** Bitmap object defines / prototypes +** $Id: bitmap.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _BITMAP_H_ +#define _BITMAP_H_ + +#include "noftypes.h" + +/* a bitmap rectangle */ +typedef struct rect_s +{ + int16 x, y; + uint16 w, h; +} rect_t; + +typedef struct rgb_s +{ + int r, g, b; +} rgb_t; + +typedef struct bitmap_s +{ + int width, height, pitch; + bool hardware; /* is data a hardware region? */ + uint8 *data; /* protected */ + uint8 *line[ZERO_LENGTH]; /* will hold line pointers */ +} bitmap_t; + +extern void bmp_clear(const bitmap_t *bitmap, uint8 color); +extern bitmap_t *bmp_create(int width, int height, int overdraw); +extern bitmap_t *bmp_createhw(uint8 *addr, int width, int height, int pitch); +extern void bmp_destroy(bitmap_t **bitmap); + +#endif /* _BITMAP_H_ */ + +/* +** $Log: bitmap.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.12 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.11 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.10 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.9 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.8 2000/07/24 04:31:43 matt +** pitch/data area on non-hw bitmaps get padded to 32-bit boundaries +** +** Revision 1.7 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.6 2000/07/09 14:43:01 matt +** pitch is now configurable for bmp_createhw() +** +** Revision 1.5 2000/07/06 16:46:57 matt +** added bmp_clear() routine +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/component.mk b/MCUME_esp32/espnofrendo/main/nofrendo/component.mk new file mode 100755 index 0000000..ba688e6 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/component.mk @@ -0,0 +1,14 @@ +# +# Component Makefile +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := cpu libsnss nes sndhrdw . .. +COMPONENT_SRCDIRS := cpu libsnss nes sndhrdw mappers . + +CFLAGS += -Wno-error=maybe-uninitialized -Wno-error=char-subscripts -Wno-error=attributes +CPPFLAGS += -Wno-error=maybe-uninitialized -Wno-error=sequence-point -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/config.c b/MCUME_esp32/espnofrendo/main/nofrendo/config.c new file mode 100644 index 0000000..806d41b --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/config.c @@ -0,0 +1,75 @@ +/* Nofrendo Configuration Braindead Sample Implementation +** +** $Id: config.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include +#include + +#include "noftypes.h" +#include "log.h" +#include "osd.h" +#include "nofconfig.h" +#include "version.h" + + +/* interface */ +config_t config = +{ + CONFIG_FILE +}; + +/* +** $Log: config.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.14 2000/11/05 06:23:10 matt +** realloc was incompatible with memguard +** +** Revision 1.13 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.12 2000/09/20 01:13:28 matt +** damn tabs +** +** Revision 1.11 2000/08/04 12:41:04 neil +** current not a bug +** +** Revision 1.10 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.9 2000/07/24 04:30:42 matt +** slight cleanup +** +** Revision 1.8 2000/07/23 15:16:08 matt +** changed strcasecmp to stricmp +** +** Revision 1.7 2000/07/19 15:58:55 neil +** config file now configurable (ha) +** +** Revision 1.6 2000/07/18 03:28:32 matt +** help me! I'm a complete mess! +** +** Revision 1.5 2000/07/12 11:03:08 neil +** Always write a config, even if no defaults are changed +** +** Revision 1.4 2000/07/11 15:09:30 matt +** suppressed all warnings +** +** Revision 1.3 2000/07/11 14:59:27 matt +** minor cosmetics.. =) +** +** Revision 1.2 2000/07/11 13:35:38 bsittler +** Changed the config API, implemented config file "nofrendo.cfg". The +** GGI drivers use the group [GGI]. Visual= and Mode= keys are understood. +** +** Revision 1.1 2000/07/11 09:21:10 bsittler +** This is a skeletal configuration system. +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/event.c b/MCUME_esp32/espnofrendo/main/nofrendo/event.c new file mode 100644 index 0000000..a6f8dcb --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/event.c @@ -0,0 +1,324 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** event.c +** +** OS-independent event handling +** $Id: event.c,v 1.3 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "event.h" +#include "nesinput.h" + + + +/* pointer to our current system's event handler table */ +static event_t *system_events = NULL; + +/* standard keyboard input */ +static nesinput_t kb_input = { INP_JOYPAD0, 0 }; +static nesinput_t kb_alt_input = { INP_JOYPAD1, 0 }; + + + +static void func_event_joypad1_a(int code) +{ + input_event(&kb_input, code, INP_PAD_A); +} + +static void func_event_joypad1_b(int code) +{ + input_event(&kb_input, code, INP_PAD_B); +} + +static void func_event_joypad1_start(int code) +{ + input_event(&kb_input, code, INP_PAD_START); +} + +static void func_event_joypad1_select(int code) +{ + input_event(&kb_input, code, INP_PAD_SELECT); +} + +static void func_event_joypad1_up(int code) +{ + input_event(&kb_input, code, INP_PAD_UP); +} + +static void func_event_joypad1_down(int code) +{ + input_event(&kb_input, code, INP_PAD_DOWN); +} + +static void func_event_joypad1_left(int code) +{ + input_event(&kb_input, code, INP_PAD_LEFT); +} + +static void func_event_joypad1_right(int code) +{ + input_event(&kb_input, code, INP_PAD_RIGHT); +} + +static void func_event_joypad2_a(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_A); +} + +static void func_event_joypad2_b(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_B); +} + +static void func_event_joypad2_start(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_START); +} + +static void func_event_joypad2_select(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_SELECT); +} + +static void func_event_joypad2_up(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_UP); +} + +static void func_event_joypad2_down(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_DOWN); +} + +static void func_event_joypad2_left(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_LEFT); +} + +static void func_event_joypad2_right(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_RIGHT); +} + + + +/* NES events */ +static const event_t nes_events[] = +{ + NULL, /* 0 */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + /* saves */ + NULL, + NULL, /* 10 */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, /* 20 */ + /* GUI */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + /* sound */ + NULL, + NULL, /* 30 */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + /* picture */ + NULL, + NULL, + NULL, + NULL, /* 40 */ + NULL, + NULL, + NULL, + /* joypad 1 */ + func_event_joypad1_a, + func_event_joypad1_b, + func_event_joypad1_start, + func_event_joypad1_select, + func_event_joypad1_up, + func_event_joypad1_down, + func_event_joypad1_left, /* 50 */ + func_event_joypad1_right, + /* joypad 2 */ + func_event_joypad2_a, + func_event_joypad2_b, + func_event_joypad2_start, + func_event_joypad2_select, + func_event_joypad2_up, + func_event_joypad2_down, + func_event_joypad2_left, + func_event_joypad2_right, + /* NSF control */ + NULL, /* 60 */ + NULL, + NULL, + /* OS-specific */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, /* 70 */ + NULL, + /* last */ + NULL +}; +static event_t *event_system_table[NUM_SUPPORTED_SYSTEMS] = +{ + NULL, /* unknown */ + NULL, /* autodetect */ + nes_events, /* nes */ +}; + + + +void event_init(void) +{ + input_register(&kb_input); + input_register(&kb_alt_input); +} + +/* set up the event system for a certain console/system type */ +void event_set_system(system_t type) +{ + ASSERT(type < NUM_SUPPORTED_SYSTEMS); + + system_events = event_system_table[type]; +} + +void event_set(int index, event_t handler) +{ + /* now, event_set is used to set osd-specific events. We should assume + ** (for now, at least) that these events should be used across all + ** emulated systems, so let's loop through all system event handler + ** tables and add this event... + */ + int i; + + for (i = 0; i < NUM_SUPPORTED_SYSTEMS; i++) + { + if(event_system_table[i]) + { + event_system_table[i][index] = handler; + } + } +} + + +event_t event_get(int index) +{ + return system_events[index]; +} + + +/* +** $Log: event.c,v $ +** Revision 1.3 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.2 2001/04/27 11:10:08 neil +** compile +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.18 2000/11/25 20:26:05 matt +** removed fds "system" +** +** Revision 1.17 2000/11/09 14:05:42 matt +** state load fixed, state save mostly fixed +** +** Revision 1.16 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.15 2000/11/01 17:33:26 neil +** little crash bugs fixed +** +** Revision 1.14 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.13 2000/10/27 12:59:48 matt +** api change for ppu palette functions +** +** Revision 1.12 2000/10/26 22:48:05 matt +** no need for extern +** +** Revision 1.11 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.10 2000/10/23 17:50:46 matt +** adding fds support +** +** Revision 1.9 2000/10/23 15:52:04 matt +** better system handling +** +** Revision 1.8 2000/10/22 15:01:51 matt +** prevented palette changing in VS unisystem games +** +** Revision 1.7 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.6 2000/08/16 02:58:34 matt +** random cleanups +** +** Revision 1.5 2000/07/27 01:15:33 matt +** name changes +** +** Revision 1.4 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.3 2000/07/23 15:17:19 matt +** non-osd calls moved from osd.c to gui.c +** +** Revision 1.2 2000/07/21 12:07:40 neil +** added room in event_array for all osd events +** +** Revision 1.1 2000/07/21 04:26:38 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/event.h b/MCUME_esp32/espnofrendo/main/nofrendo/event.h new file mode 100755 index 0000000..9710412 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/event.h @@ -0,0 +1,154 @@ +/* vim: set tabstop=3 expandtab: +** +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** event.h +** +** OS-independent event handling +** $Id: event.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _EVENT_H_ +#define _EVENT_H_ + +#include "nofrendo.h" + +enum +{ + event_none = 0, + event_quit, + event_insert, + event_eject, + event_togglepause, + event_soft_reset, + event_hard_reset, + event_snapshot, + event_toggle_frameskip, + /* saves */ + event_state_save, + event_state_load, + event_state_slot_0, + event_state_slot_1, + event_state_slot_2, + event_state_slot_3, + event_state_slot_4, + event_state_slot_5, + event_state_slot_6, + event_state_slot_7, + event_state_slot_8, + event_state_slot_9, + /* GUI */ + event_gui_toggle_oam, + event_gui_toggle_wave, + event_gui_toggle_pattern, + event_gui_pattern_color_up, + event_gui_pattern_color_down, + event_gui_toggle_fps, + event_gui_display_info, + event_gui_toggle, + /* sound */ + event_toggle_channel_0, + event_toggle_channel_1, + event_toggle_channel_2, + event_toggle_channel_3, + event_toggle_channel_4, + event_toggle_channel_5, + event_set_filter_0, + event_set_filter_1, + event_set_filter_2, + /* picture */ + event_toggle_sprites, + event_palette_hue_up, + event_palette_hue_down, + event_palette_tint_up, + event_palette_tint_down, + event_palette_set_default, + event_palette_set_shady, + /* joypad 1 */ + event_joypad1_a, + event_joypad1_b, + event_joypad1_start, + event_joypad1_select, + event_joypad1_up, + event_joypad1_down, + event_joypad1_left, + event_joypad1_right, + /* joypad 2 */ + event_joypad2_a, + event_joypad2_b, + event_joypad2_start, + event_joypad2_select, + event_joypad2_up, + event_joypad2_down, + event_joypad2_left, + event_joypad2_right, + /* NSF control */ + event_songup, + event_songdown, + event_startsong, + /* OS specific */ + event_osd_1, + event_osd_2, + event_osd_3, + event_osd_4, + event_osd_5, + event_osd_6, + event_osd_7, + event_osd_8, + event_osd_9, + /* last */ + event_last +}; + +typedef void (*event_t)(int code); + +extern void event_init(void); +extern void event_set(int index, event_t handler); +extern event_t event_get(int index); +extern void event_set_system(system_t type); + +#endif /* !_EVENT_H_ */ + +/* +** $Log: event.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.6 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.5 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.4 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.3 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.2 2000/07/21 04:27:40 matt +** don't mind me... +** +** Revision 1.1 2000/07/21 04:26:38 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/libsnss.h b/MCUME_esp32/espnofrendo/main/nofrendo/libsnss.h new file mode 100755 index 0000000..576227c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/libsnss.h @@ -0,0 +1,397 @@ +/**************************************************************************/ +/* + libsnss.h + + (C) 2000 The SNSS Group + See README.TXT file for license and terms of use. + + $Id: libsnss.h,v 1.1 2001/04/27 12:54:40 neil Exp $ +*/ +/**************************************************************************/ + +#ifndef _LIBSNSS_H_ +#define _LIBSNSS_H_ + +#include + +/**************************************************************************/ +/* endian customization */ +/**************************************************************************/ +/* + Endian-ness quick reference: + the number is: + $12345678 + the little-endian representation (e.g.: 6502, Intel x86) is: + 78 56 34 12 + the big-endian representation (e.g.: Motorola 68000) is: + 12 34 56 78 + the SNSS file format uses big-endian representation +*/ + +/* comment/uncomment depending on your processor architecture */ +/* commenting this out implies BIG ENDIAN */ +#define USE_LITTLE_ENDIAN + +/**************************************************************************/ +/* SNSS constants */ +/**************************************************************************/ + +typedef enum _SNSS_OPEN_MODES +{ + SNSS_OPEN_READ, + SNSS_OPEN_WRITE +} SNSS_OPEN_MODE; + +/* block types */ +typedef enum _SNSS_BLOCK_TYPES +{ + SNSS_BASR, + SNSS_VRAM, + SNSS_SRAM, + SNSS_MPRD, + SNSS_CNTR, + SNSS_SOUN, + SNSS_UNKNOWN_BLOCK +} SNSS_BLOCK_TYPE; + +/* function return types */ +typedef enum _SNSS_RETURN_CODES +{ + SNSS_OK, + SNSS_BAD_FILE_TAG, + SNSS_OPEN_FAILED, + SNSS_CLOSE_FAILED, + SNSS_READ_FAILED, + SNSS_WRITE_FAILED, + SNSS_OUT_OF_MEMORY, + SNSS_UNSUPPORTED_BLOCK +} SNSS_RETURN_CODE; + + +#define TAG_LENGTH 4 +#define SNSS_BLOCK_VERSION 1 + +/**************************************************************************/ +/* SNSS data structures */ +/**************************************************************************/ + +struct mapper1Data +{ + unsigned char registers[4]; + unsigned char latch; + unsigned char numberOfBits; +}; + +struct mapper4Data +{ + unsigned char irqCounter; + unsigned char irqLatchCounter; + unsigned char irqCounterEnabled; + unsigned char last8000Write; +}; + +struct mapper5Data +{ + unsigned char dummy; /* needed for some compilers; remove if any members are added */ +}; + +struct mapper6Data +{ + unsigned char irqCounter; + unsigned char irqLatchCounter; + unsigned char irqCounterEnabled; + unsigned char last43FEWrite; + unsigned char last4500Write; +}; + +struct mapper9Data +{ + unsigned char latch[2]; + unsigned char lastB000Write; + unsigned char lastC000Write; + unsigned char lastD000Write; + unsigned char lastE000Write; +}; + +struct mapper10Data +{ + unsigned char latch[2]; + unsigned char lastB000Write; + unsigned char lastC000Write; + unsigned char lastD000Write; + unsigned char lastE000Write; +}; + +struct mapper16Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper17Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper18Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper19Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper21Data +{ + unsigned char irqCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper24Data +{ + unsigned char irqCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper40Data +{ + unsigned char irqCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper69Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper90Data +{ + unsigned char irqCounter; + unsigned char irqLatchCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper224Data +{ + unsigned char chrRamWriteable; +}; + +struct mapper225Data +{ + unsigned char prgSize; + unsigned char registers[4]; +}; + +struct mapper226Data +{ + unsigned char chrRamWriteable; +}; + +struct mapper228Data +{ + unsigned char prgChipSelected; +}; + +struct mapper230Data +{ + unsigned char numberOfResets; +}; + +typedef struct _SnssFileHeader +{ + char tag[TAG_LENGTH + 1]; + unsigned int numberOfBlocks; +} SnssFileHeader; + +/* this block appears before every block in the SNSS file */ +typedef struct _SnssBlockHeader +{ + char tag[TAG_LENGTH + 1]; + unsigned int blockVersion; + unsigned int blockLength; +} SnssBlockHeader; + +#define BASE_BLOCK_LENGTH 0x1931 +typedef struct _SnssBaseBlock +{ + unsigned char regA; + unsigned char regX; + unsigned char regY; + unsigned char regFlags; + unsigned char regStack; + unsigned short regPc; + unsigned char reg2000; + unsigned char reg2001; + unsigned char cpuRam[0x800]; + unsigned char spriteRam[0x100]; + unsigned char ppuRam[0x1000]; + unsigned char palette[0x20]; + unsigned char mirrorState[4]; + unsigned short vramAddress; + unsigned char spriteRamAddress; + unsigned char tileXOffset; +} SnssBaseBlock; + +#define VRAM_8K 0x2000 +#define VRAM_16K 0x4000 +typedef struct _SnssVramBlock +{ + unsigned short vramSize; + unsigned char vram[VRAM_16K]; +} SnssVramBlock; + +#define SRAM_1K 0x0400 +#define SRAM_2K 0x0800 +#define SRAM_3K 0x0C00 +#define SRAM_4K 0x1000 +#define SRAM_5K 0x1400 +#define SRAM_6K 0x1800 +#define SRAM_7K 0x1C00 +#define SRAM_8K 0x2000 +typedef struct _SnssSramBlock +{ + unsigned short sramSize; + unsigned char sramEnabled; + unsigned char sram[SRAM_8K]; +} SnssSramBlock; + +#define MAPPER_BLOCK_LENGTH 0x98 +typedef struct _SnssMapperBlock +{ + unsigned short prgPages[4]; + unsigned short chrPages[8]; + + union _extraData + { + unsigned char mapperData[128]; + struct mapper1Data mapper1; + struct mapper4Data mapper4; + struct mapper5Data mapper5; + struct mapper6Data mapper6; + struct mapper9Data mapper9; + struct mapper10Data mapper10; + struct mapper16Data mapper16; + struct mapper17Data mapper17; + struct mapper18Data mapper18; + struct mapper19Data mapper19; + struct mapper21Data mapper21; + struct mapper24Data mapper24; + struct mapper40Data mapper40; + struct mapper69Data mapper69; + struct mapper90Data mapper90; + struct mapper224Data mapper224; + struct mapper225Data mapper225; + struct mapper226Data mapper226; + struct mapper228Data mapper228; + struct mapper230Data mapper230; + } extraData; +} SnssMapperBlock; + +typedef struct _SnssControllersBlock +{ + unsigned char dummy; /* needed for some compilers; remove if any members are added */ +} SnssControllersBlock; + +#define SOUND_BLOCK_LENGTH 0x16 +typedef struct _SnssSoundBlock +{ + unsigned char soundRegisters[0x16]; +} SnssSoundBlock; + +/**************************************************************************/ +/* SNSS file manipulation functions */ +/**************************************************************************/ + +typedef struct _SNSS_FILE +{ + FILE *fp; + SNSS_OPEN_MODE mode; + SnssFileHeader headerBlock; + SnssBaseBlock baseBlock; + SnssVramBlock vramBlock; + SnssSramBlock sramBlock; + SnssMapperBlock mapperBlock; + SnssControllersBlock contBlock; + SnssSoundBlock soundBlock; +} SNSS_FILE; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* general file manipulation routines */ +SNSS_RETURN_CODE SNSS_OpenFile (SNSS_FILE **snssFile, const char *filename, + SNSS_OPEN_MODE mode); +SNSS_RETURN_CODE SNSS_CloseFile (SNSS_FILE **snssFile); + +/* block traversal */ +SNSS_RETURN_CODE SNSS_GetNextBlockType (SNSS_BLOCK_TYPE *blockType, + SNSS_FILE *snssFile); +SNSS_RETURN_CODE SNSS_SkipNextBlock (SNSS_FILE *snssFile); + +/* functions to read/write SNSS blocks */ +SNSS_RETURN_CODE SNSS_ReadBlock (SNSS_FILE *snssFile, SNSS_BLOCK_TYPE blockType); +SNSS_RETURN_CODE SNSS_WriteBlock (SNSS_FILE *snssFile, SNSS_BLOCK_TYPE blockType); + +/* support functions */ +const char *SNSS_GetErrorString (SNSS_RETURN_CODE code); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _LIBSNSS_H_ */ + +/* +** $Log: libsnss.h,v $ +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/09 14:07:41 matt +** minor update +** +** Revision 1.1 2000/10/24 12:19:01 matt +** changed directory structure +** +** Revision 1.9 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.8 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/07/15 23:49:14 matt +** fixed some typos in the mapper-specific data +** +** Revision 1.6 2000/07/09 15:37:21 matt +** all block read/write calls now pass through a common handler +** +** Revision 1.5 2000/07/09 03:39:06 matt +** minor modifications +** +** Revision 1.4 2000/07/08 16:01:39 matt +** added bald's changes, made error checking more robust +** +** Revision 1.3 2000/07/05 22:46:52 matt +** cleaned up header +** +** Revision 1.2 2000/07/04 04:46:06 matt +** simplified handling of SNSS states +** +** Revision 1.1 2000/06/29 14:13:28 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/log.c b/MCUME_esp32/espnofrendo/main/nofrendo/log.c new file mode 100755 index 0000000..c75d482 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/log.c @@ -0,0 +1,121 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** log.c +** +** Error logging functions +** $Id: log.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include +#include "noftypes.h" +#include "log.h" + + +//static FILE *errorlog = NULL; +static int (*log_func)(const char *string) = NULL; + + +int log_init(void) +{ + return 0; +} + +void log_shutdown(void) +{ +} + +int log_print(const char *string) +{ + UNUSED(string); + + return 0; +} + +int log_printf(const char *format, ... ) +{ + UNUSED(format); + + return 0; /* should be number of chars written */ +} + +void log_chain_logfunc(int (*func)(const char *string)) +{ + log_func = func; +} + +void log_assert(int expr, int line, const char *file, char *msg) +{ + if (expr) + return; + + if (NULL != msg) + log_printf("ASSERT: line %d of %s, %s\n", line, file, msg); + else + log_printf("ASSERT: line %d of %s\n", line, file); + + //asm("break.n 1"); +// exit(-1); +} + + +/* +** $Log: log.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.14 2000/11/13 00:56:17 matt +** doesn't look as nasty now +** +** Revision 1.13 2000/11/06 02:15:07 matt +** more robust logging routines +** +** Revision 1.12 2000/10/15 13:28:12 matt +** need stdlib.h for exit() +** +** Revision 1.11 2000/10/10 13:13:13 matt +** dumb bug in log_chain_logfunc +** +** Revision 1.10 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.9 2000/08/28 01:47:10 matt +** quelled fricking compiler complaints +** +** Revision 1.8 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.7 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.6 2000/07/06 17:20:52 matt +** block manager space itself wasn't being freed - d'oh! +** +** Revision 1.5 2000/06/26 04:55:33 matt +** minor change +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/log.h b/MCUME_esp32/espnofrendo/main/nofrendo/log.h new file mode 100755 index 0000000..58d93c7 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/log.h @@ -0,0 +1,57 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** log.h +** +** Error logging header file +** $Id: log.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $ +*/ + +#ifndef _LOG_H_ +#define _LOG_H_ + +#include + +extern int log_init(void); +extern void log_shutdown(void); +extern int log_print(const char *string); +extern int log_printf(const char *format, ...); +extern void log_chain_logfunc(int (*logfunc)(const char *string)); +extern void log_assert(int expr, int line, const char *file, char *msg); + +#endif /* _LOG_H_ */ + +/* +** $Log: log.h,v $ +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.7 2000/11/06 02:15:07 matt +** more robust logging routines +** +** Revision 1.6 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.5 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map000.c b/MCUME_esp32/espnofrendo/main/nofrendo/map000.c new file mode 100644 index 0000000..f5ab3cc --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map000.c @@ -0,0 +1,63 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map0.c +** +** mapper 0 interface +** $Id: map000.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +const mapintf_t map0_intf = +{ + 0, /* mapper number */ + "None", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + NULL, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map000.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map001.c b/MCUME_esp32/espnofrendo/main/nofrendo/map001.c new file mode 100644 index 0000000..af6be33 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map001.c @@ -0,0 +1,242 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map1.c +** +** mapper 1 interface +** $Id: map001.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* TODO: WRAM enable ala Mark Knibbs: + ================================== +The SNROM board uses 8K CHR-RAM. The CHR-RAM is paged (i.e. it can be split +into two 4Kbyte pages). + +The CRA16 line of the MMC1 is connected to the /CS1 pin of the WRAM. THIS MEANS +THAT THE WRAM CAN BE ENABLED OR DISABLED ACCORDING TO THE STATE OF THE CRA16 +LINE. The CRA16 line corresponds to bit 4 of MMC1 registers 1 & 2. + +The WRAM is enabled when the CRA16 line is low, and disabled when CRA16 is +high. This has implications when CHR page size is 4K, if the two page numbers +set have different CRA16 states (e.g. reg 1 bit 4 = 0, reg 2 bit 4 = 1). Then +the WRAM will be enabled and disabled depending on what CHR address is being +accessed. + +When CHR page size is 8K, bit 4 of MMC1 register 1 (and not register 2, because +page size is 8K) controls whether the WRAM is enabled or not. It must be low +to be enabled. When the WRAM is disabled, reading from and writing to it will +not be possible. +*/ + +/* TODO: roll this into something... */ +static int bitcount = 0; +static uint8 latch = 0; +static uint8 regs[4]; +static int bank_select; +static uint8 lastreg; + +static void map1_write(uint32 address, uint8 value) +{ + int regnum = (address >> 13) - 4; + + if (value & 0x80) + { + regs[0] |= 0x0C; + bitcount = 0; + latch = 0; + return; + } + + if (lastreg != regnum) + { + bitcount = 0; + latch = 0; + lastreg = regnum; + } + //lastreg = regnum; + + latch |= ((value & 1) << bitcount++); + + /* 5 bit registers */ + if (5 != bitcount) + return; + + regs[regnum] = latch; + value = latch; + bitcount = 0; + latch = 0; + + switch (regnum) + { + case 0: + { + if (0 == (value & 2)) + { + int mirror = value & 1; + ppu_mirror(mirror, mirror, mirror, mirror); + } + else + { + if (value & 1) + ppu_mirror(0, 0, 1, 1); + else + ppu_mirror(0, 1, 0, 1); + } + } + break; + + case 1: + if (regs[0] & 0x10) + mmc_bankvrom(4, 0x0000, value); + else + mmc_bankvrom(8, 0x0000, value >> 1); + break; + + case 2: + if (regs[0] & 0x10) + mmc_bankvrom(4, 0x1000, value); + break; + + case 3: + if (mmc_getinfo()->rom_banks == 0x20) + { + bank_select = (regs[1] & 0x10) ? 0 : 0x10; + } + else if (mmc_getinfo()->rom_banks == 0x40) + { + if (regs[0] & 0x10) + bank_select = (regs[1] & 0x10) | ((regs[2] & 0x10) << 1); + else + bank_select = (regs[1] & 0x10) << 1; + } + else + { + bank_select = 0; + } + + if (0 == (regs[0] & 0x08)) + mmc_bankrom(32, 0x8000, ((regs[3] >> 1) + (bank_select >> 1))); + else if (regs[0] & 0x04) + mmc_bankrom(16, 0x8000, ((regs[3] & 0xF) + bank_select)); + else + mmc_bankrom(16, 0xC000, ((regs[3] & 0xF) + bank_select)); + + default: + break; + } +} + +static void map1_init(void) +{ + bitcount = 0; + latch = 0; + + memset(regs, 0, sizeof(regs)); + + if (mmc_getinfo()->rom_banks == 0x20) + mmc_bankrom(16, 0xC000, 0x0F); + + map1_write(0x8000, 0x80); +} + +static void map1_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper1.registers[0] = regs[0]; + state->extraData.mapper1.registers[1] = regs[1]; + state->extraData.mapper1.registers[2] = regs[2]; + state->extraData.mapper1.registers[3] = regs[3]; + state->extraData.mapper1.latch = latch; + state->extraData.mapper1.numberOfBits = bitcount; +} + + +static void map1_setstate(SnssMapperBlock *state) +{ + regs[1] = state->extraData.mapper1.registers[0]; + regs[1] = state->extraData.mapper1.registers[1]; + regs[2] = state->extraData.mapper1.registers[2]; + regs[3] = state->extraData.mapper1.registers[3]; + latch = state->extraData.mapper1.latch; + bitcount = state->extraData.mapper1.numberOfBits; +} + +static map_memwrite map1_memwrite[] = +{ + { 0x8000, 0xFFFF, map1_write }, + { -1, -1, NULL } +}; + +const mapintf_t map1_intf = +{ + 1, /* mapper number */ + "MMC1", /* mapper name */ + map1_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map1_getstate, /* get state (snss) */ + map1_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map1_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map001.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:46:50 matt +** mirroring bugfix +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map002.c b/MCUME_esp32/espnofrendo/main/nofrendo/map002.c new file mode 100644 index 0000000..73f9dfd --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map002.c @@ -0,0 +1,86 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map2.c +** +** mapper 2 interface +** $Id: map002.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 2: UNROM */ +static void map2_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, value); +} + +static const map_memwrite map2_memwrite[] = +{ + { 0x8000, 0xFFFF, map2_write }, + { -1, -1, NULL } +}; + +const mapintf_t map2_intf = +{ + 2, /* mapper number */ + "UNROM", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map2_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map002.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map003.c b/MCUME_esp32/espnofrendo/main/nofrendo/map003.c new file mode 100644 index 0000000..2a37c57 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map003.c @@ -0,0 +1,85 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map3.c +** +** mapper 3 interface +** $Id: map003.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 3: CNROM */ +static void map3_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankvrom(8, 0x0000, value); +} + +static const map_memwrite map3_memwrite[] = +{ + { 0x8000, 0xFFFF, map3_write }, + { -1, -1, NULL } +}; + +const mapintf_t map3_intf = +{ + 3, /* mapper number */ + "CNROM", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map3_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map003.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map004.c b/MCUME_esp32/espnofrendo/main/nofrendo/map004.c new file mode 100644 index 0000000..6587b91 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map004.c @@ -0,0 +1,269 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map4.c +** +** mapper 4 interface +** $Id: map004.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" + +static struct +{ + int counter, latch; + bool enabled, reset; +} irq; + +static uint8 reg; +static uint8 command; +static uint16 vrombase; + +/* mapper 4: MMC3 */ +static void map4_write(uint32 address, uint8 value) +{ + switch (address & 0xE001) + { + case 0x8000: + command = value; + vrombase = (command & 0x80) ? 0x1000 : 0x0000; + + if (reg != (value & 0x40)) + { + if (value & 0x40) + mmc_bankrom(8, 0x8000, (mmc_getinfo()->rom_banks * 2) - 2); + else + mmc_bankrom(8, 0xC000, (mmc_getinfo()->rom_banks * 2) - 2); + } + reg = value & 0x40; + break; + + case 0x8001: + switch (command & 0x07) + { + case 0: + value &= 0xFE; + mmc_bankvrom(1, vrombase ^ 0x0000, value); + mmc_bankvrom(1, vrombase ^ 0x0400, value + 1); + break; + + case 1: + value &= 0xFE; + mmc_bankvrom(1, vrombase ^ 0x0800, value); + mmc_bankvrom(1, vrombase ^ 0x0C00, value + 1); + break; + + case 2: + mmc_bankvrom(1, vrombase ^ 0x1000, value); + break; + + case 3: + mmc_bankvrom(1, vrombase ^ 0x1400, value); + break; + + case 4: + mmc_bankvrom(1, vrombase ^ 0x1800, value); + break; + + case 5: + mmc_bankvrom(1, vrombase ^ 0x1C00, value); + break; + + case 6: + mmc_bankrom(8, (command & 0x40) ? 0xC000 : 0x8000, value); + break; + + case 7: + mmc_bankrom(8, 0xA000, value); + break; + } + break; + + case 0xA000: + /* four screen mirroring crap */ + if (0 == (mmc_getinfo()->flags & ROM_FLAG_FOURSCREEN)) + { + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + } + break; + + case 0xA001: + /* Save RAM enable / disable */ + /* Messes up Startropics I/II if implemented -- bah */ + break; + + case 0xC000: + irq.latch = value; +// if (irq.reset) +// irq.counter = irq.latch; + break; + + case 0xC001: + irq.reset = true; + irq.counter = irq.latch; + break; + + case 0xE000: + irq.enabled = false; +// if (irq.reset) +// irq.counter = irq.latch; + break; + + case 0xE001: + irq.enabled = true; +// if (irq.reset) +// irq.counter = irq.latch; + break; + + default: + break; + } + + if (true == irq.reset) + irq.counter = irq.latch; +} + +static void map4_hblank(int vblank) +{ + if (vblank) + return; + + if (ppu_enabled()) + { + if (irq.counter >= 0) + { + irq.reset = false; + irq.counter--; + + if (irq.counter < 0) + { + if (irq.enabled) + { + irq.reset = true; + nes_irq(); + } + } + } + } +} + +static void map4_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper4.irqCounter = irq.counter; + state->extraData.mapper4.irqLatchCounter = irq.latch; + state->extraData.mapper4.irqCounterEnabled = irq.enabled; + state->extraData.mapper4.last8000Write = command; +} + +static void map4_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper4.irqCounter; + irq.latch = state->extraData.mapper4.irqLatchCounter; + irq.enabled = state->extraData.mapper4.irqCounterEnabled; + command = state->extraData.mapper4.last8000Write; +} + +static void map4_init(void) +{ + irq.counter = irq.latch = 0; + irq.enabled = irq.reset = false; + reg = command = 0; + vrombase = 0x0000; +} + +static const map_memwrite map4_memwrite[] = +{ + { 0x8000, 0xFFFF, map4_write }, + { -1, -1, NULL } +}; + +const mapintf_t map4_intf = +{ + 4, /* mapper number */ + "MMC3", /* mapper name */ + map4_init, /* init routine */ + NULL, /* vblank callback */ + map4_hblank, /* hblank callback */ + map4_getstate, /* get state (snss) */ + map4_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map4_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map004.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/26 15:40:49 matt +** hey, it actually works now +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.12 2000/10/23 15:53:27 matt +** suppressed warnings +** +** Revision 1.11 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.10 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.9 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.8 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.7 2000/10/08 18:05:44 matt +** kept old version around, just in case.... +** +** Revision 1.6 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.5 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.4 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.3 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.2 2000/07/05 05:04:39 matt +** minor modifications +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map005.c b/MCUME_esp32/espnofrendo/main/nofrendo/map005.c new file mode 100755 index 0000000..16a8347 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map005.c @@ -0,0 +1,326 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map5.c +** +** mapper 5 interface +** $Id: map005.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" +#include "mmc5_snd.h" + +/* TODO: there's lots of info about this mapper now; +** let's implement it correctly/completely +*/ + +static struct +{ + int counter, enabled; + int reset, latch; +} irq; + +/* MMC5 - Castlevania III, etc */ +static void map5_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.counter == nes_getcontextptr()->scanline) + { + if (true == irq.enabled) + { + nes_irq(); + irq.reset = true; + } + //else + // irq.reset = false; + irq.counter = irq.latch; + } +} + +static void map5_write(uint32 address, uint8 value) +{ + static int page_size = 8; + + /* ex-ram memory-- bleh! */ + if (address >= 0x5C00 && address <= 0x5FFF) + return; + + switch (address) + { + case 0x5100: + /* PRG page size setting */ + /* 0:32k 1:16k 2,3:8k */ + switch (value & 3) + { + case 0: + page_size = 32; + break; + + case 1: + page_size = 16; + break; + + case 2: + case 3: + page_size = 8; + break; + } + break; + + case 0x5101: + /* CHR page size setting */ + /* 0:8k 1:4k 2:2k 3:1k */ + break; + + case 0x5104: + /* GFX mode setting */ + /* + 00:split mode + 01:split & exgraffix + 10:ex-ram + 11:exram + write protect + */ + break; + + case 0x5105: + /* TODO: exram needs to fill in nametables 2-3 */ + ppu_mirror(value & 3, (value >> 2) & 3, (value >> 4) & 3, value >> 6); + break; + + case 0x5106: + case 0x5107: + /* ex-ram fill mode stuff */ + break; + + case 0x5113: + /* ram page for $6000-7FFF? bit 2*/ + break; + + case 0x5114: + mmc_bankrom(8, 0x8000, value); + //if (page_size == 8) + // mmc_bankrom(8, 0x8000, value); + break; + + case 0x5115: + mmc_bankrom(8, 0x8000, value); + mmc_bankrom(8, 0xA000, value + 1); + //if (page_size == 8) + // mmc_bankrom(8, 0xA000, value); + //else if (page_size == 16) + // mmc_bankrom(16, 0x8000, value >> 1); + //mmc_bankrom(16, 0x8000, value & 0xFE); + break; + + case 0x5116: + mmc_bankrom(8, 0xC000, value); + //if (page_size == 8) + // mmc_bankrom(8, 0xC000, value); + break; + + case 0x5117: + //if (page_size == 8) + // mmc_bankrom(8, 0xE000, value); + //else if (page_size == 16) + // mmc_bankrom(16, 0xC000, value >> 1); + //mmc_bankrom(16, 0xC000, value & 0xFE); + //else if (page_size == 32) + // mmc_bankrom(32, 0x8000, value >> 2); + //mmc_bankrom(32, 0x8000, value & 0xFC); + break; + + case 0x5120: + mmc_bankvrom(1, 0x0000, value); + break; + + case 0x5121: + mmc_bankvrom(1, 0x0400, value); + break; + + case 0x5122: + mmc_bankvrom(1, 0x0800, value); + break; + + case 0x5123: + mmc_bankvrom(1, 0x0C00, value); + break; + + case 0x5124: + case 0x5125: + case 0x5126: + case 0x5127: + /* more VROM shit? */ + break; + + case 0x5128: + mmc_bankvrom(1, 0x1000, value); + break; + + case 0x5129: + mmc_bankvrom(1, 0x1400, value); + break; + + case 0x512A: + mmc_bankvrom(1, 0x1800, value); + break; + + case 0x512B: + mmc_bankvrom(1, 0x1C00, value); + break; + + case 0x5203: + irq.counter = value; + irq.latch = value; +// irq.reset = false; + break; + + case 0x5204: + irq.enabled = (value & 0x80) ? true : false; +// irq.reset = false; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("unknown mmc5 write: $%02X to $%04X\n", value, address); +#endif /* NOFRENDO_DEBUG */ + break; + } +} + +static uint8 map5_read(uint32 address) +{ + /* Castlevania 3 IRQ counter */ + if (address == 0x5204) + { + /* if reset == 1, we've hit scanline */ + return (irq.reset ? 0x40 : 0x00); + } + else + { +#ifdef NOFRENDO_DEBUG + log_printf("invalid MMC5 read: $%04X", address); +#endif + return 0xFF; + } +} + +static void map5_init(void) +{ + mmc_bankrom(8, 0x8000, MMC_LASTBANK); + mmc_bankrom(8, 0xA000, MMC_LASTBANK); + mmc_bankrom(8, 0xC000, MMC_LASTBANK); + mmc_bankrom(8, 0xE000, MMC_LASTBANK); + + irq.counter = irq.enabled = 0; + irq.reset = irq.latch = 0; +} + +/* incomplete SNSS definition */ +static void map5_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper5.dummy = 0; +} + +static void map5_setstate(SnssMapperBlock *state) +{ + UNUSED(state); +} + +static map_memwrite map5_memwrite[] = +{ + /* $5000 - $5015 handled by sound */ + { 0x5016, 0x5FFF, map5_write }, + { 0x8000, 0xFFFF, map5_write }, + { -1, -1, NULL } +}; + +static map_memread map5_memread[] = +{ + { 0x5204, 0x5204, map5_read }, + { -1, -1, NULL } +}; + +mapintf_t map5_intf = +{ + 5, /* mapper number */ + "MMC5", /* mapper name */ + map5_init, /* init routine */ + NULL, /* vblank callback */ + map5_hblank, /* hblank callback */ + map5_getstate, /* get state (snss) */ + map5_setstate, /* set state (snss) */ + map5_memread, /* memory read structure */ + map5_memwrite, /* memory write structure */ + &mmc5_ext /* external sound device */ +}; +/* +** $Log: map005.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/25 20:32:33 matt +** scanline interface change +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.11 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.10 2000/10/21 19:33:37 matt +** many more cleanups +** +** Revision 1.9 2000/10/17 03:23:16 matt +** added mmc5 sound interface +** +** Revision 1.8 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.7 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.6 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.5 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.4 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.3 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.2 2000/07/05 05:04:51 matt +** fixed h-blank callback +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map007.c b/MCUME_esp32/espnofrendo/main/nofrendo/map007.c new file mode 100644 index 0000000..f1530f1 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map007.c @@ -0,0 +1,99 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map7.c +** +** mapper 7 interface +** $Id: map007.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "log.h" + +/* mapper 7: AOROM */ +static void map7_write(uint32 address, uint8 value) +{ + int mirror; + UNUSED(address); + + mmc_bankrom(32, 0x8000, value); + mirror = (value & 0x10) >> 4; + ppu_mirror(mirror, mirror, mirror, mirror); +} + +static void map7_init(void) +{ + mmc_bankrom(32, 0x8000, 0); +} + +static const map_memwrite map7_memwrite[] = +{ + { 0x8000, 0xFFFF, map7_write }, + { -1, -1, NULL } +}; + +const mapintf_t map7_intf = +{ + 7, /* mapper number */ + "AOROM", /* mapper name */ + map7_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map7_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map007.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map008.c b/MCUME_esp32/espnofrendo/main/nofrendo/map008.c new file mode 100644 index 0000000..5b7ad2b --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map008.c @@ -0,0 +1,94 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map8.c +** +** mapper 8 interface +** $Id: map008.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 8: FFE F3xxx -- what the hell uses this? */ +static void map8_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, value >> 3); + mmc_bankvrom(8, 0x0000, value & 7); +} + +static void map8_init(void) +{ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, 1); + mmc_bankvrom(8, 0x0000, 0); +} + +static const map_memwrite map8_memwrite[] = +{ + { 0x8000, 0xFFFF, map8_write }, + { -1, -1, NULL } +}; + +const mapintf_t map8_intf = +{ + 8, /* mapper number */ + "FFE F3xxx", /* mapper name */ + map8_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map8_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map008.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map009.c b/MCUME_esp32/espnofrendo/main/nofrendo/map009.c new file mode 100644 index 0000000..c01c44e --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map009.c @@ -0,0 +1,199 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map9.c +** +** mapper 9 interface +** $Id: map009.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "libsnss.h" + +static uint8 latch[2]; +static uint8 regs[4]; + +/* Used when tile $FD/$FE is accessed */ +static void mmc9_latchfunc(uint32 address, uint8 value) +{ + if (0xFD == value || 0xFE == value) + { + int reg; + + if (address) + { + latch[1] = value; + reg = 2 + (value - 0xFD); + } + else + { + latch[0] = value; + reg = value - 0xFD; + } + + mmc_bankvrom(4, address, regs[reg]); + } +} + +/* mapper 9: MMC2 */ +/* MMC2: Punch-Out! */ +static void map9_write(uint32 address, uint8 value) +{ + switch ((address & 0xF000) >> 12) + { + case 0xA: + mmc_bankrom(8, 0x8000, value); + break; + + case 0xB: + regs[0] = value; + if (0xFD == latch[0]) + mmc_bankvrom(4, 0x0000, value); + break; + + case 0xC: + regs[1] = value; + if (0xFE == latch[0]) + mmc_bankvrom(4, 0x0000, value); + break; + + case 0xD: + regs[2] = value; + if (0xFD == latch[1]) + mmc_bankvrom(4, 0x1000, value); + break; + + case 0xE: + regs[3] = value; + if (0xFE == latch[1]) + mmc_bankvrom(4, 0x1000, value); + break; + + case 0xF: + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + default: + break; + } +} + +static void map9_init(void) +{ + memset(regs, 0, sizeof(regs)); + + mmc_bankrom(8, 0x8000, 0); + mmc_bankrom(8, 0xA000, (mmc_getinfo()->rom_banks * 2) - 3); + mmc_bankrom(8, 0xC000, (mmc_getinfo()->rom_banks * 2) - 2); + mmc_bankrom(8, 0xE000, (mmc_getinfo()->rom_banks * 2) - 1); + + latch[0] = 0xFE; + latch[1] = 0xFE; + + ppu_setlatchfunc(mmc9_latchfunc); +} + +static void map9_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper9.latch[0] = latch[0]; + state->extraData.mapper9.latch[1] = latch[1]; + state->extraData.mapper9.lastB000Write = regs[0]; + state->extraData.mapper9.lastC000Write = regs[1]; + state->extraData.mapper9.lastD000Write = regs[2]; + state->extraData.mapper9.lastE000Write = regs[3]; +} + +static void map9_setstate(SnssMapperBlock *state) +{ + latch[0] = state->extraData.mapper9.latch[0]; + latch[1] = state->extraData.mapper9.latch[1]; + regs[0] = state->extraData.mapper9.lastB000Write; + regs[1] = state->extraData.mapper9.lastC000Write; + regs[2] = state->extraData.mapper9.lastD000Write; + regs[3] = state->extraData.mapper9.lastE000Write; +} + +static map_memwrite map9_memwrite[] = +{ + { 0x8000, 0xFFFF, map9_write }, + { -1, -1, NULL } +}; + +const mapintf_t map9_intf = +{ + 9, /* mapper number */ + "MMC2", /* mapper name */ + map9_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map9_getstate, /* get state (snss) */ + map9_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map9_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map009.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.9 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.8 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.7 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.6 2000/07/17 05:11:35 matt +** minor update from making PPU code less filthy +** +** Revision 1.5 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.4 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.3 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.2 2000/07/05 22:50:33 matt +** fixed punchout -- works 100% now +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map011.c b/MCUME_esp32/espnofrendo/main/nofrendo/map011.c new file mode 100644 index 0000000..f253945 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map011.c @@ -0,0 +1,94 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map11.c +** +** mapper 11 interface +** $Id: map011.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + + +/* mapper 11: Color Dreams, Wisdom Tree */ +static void map11_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(32, 0x8000, value & 0x0F); + mmc_bankvrom(8, 0x0000, value >> 4); +} + +static void map11_init(void) +{ + mmc_bankrom(32, 0x8000, 0); + mmc_bankvrom(8, 0x0000, 0); +} + +static const map_memwrite map11_memwrite[] = +{ + { 0x8000, 0xFFFF, map11_write }, + { -1, -1, NULL } +}; + +const mapintf_t map11_intf = +{ + 11, /* mapper number */ + "Color Dreams", /* mapper name */ + map11_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map11_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map011.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map015.c b/MCUME_esp32/espnofrendo/main/nofrendo/map015.c new file mode 100644 index 0000000..d1b3b63 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map015.c @@ -0,0 +1,144 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map15.c +** +** mapper 15 interface +** $Id: map015.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 15: Contra 100-in-1 */ +static void map15_write(uint32 address, uint8 value) +{ + int bank = value & 0x3F; + uint8 swap = (value & 0x80) >> 7; + + switch (address & 0x3) + { + case 0: + mmc_bankrom(8, 0x8000, (bank << 1) + swap); + mmc_bankrom(8, 0xA000, (bank << 1) + (swap ^ 1)); + mmc_bankrom(8, 0xC000, ((bank + 1) << 1) + swap); + mmc_bankrom(8, 0xE000, ((bank + 1) << 1) + (swap ^ 1)); + + if (value & 0x40) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + mmc_bankrom(8, 0xC000, (bank << 1) + swap); + mmc_bankrom(8, 0xE000, (bank << 1) + (swap ^ 1)); + break; + + case 2: + if (swap) + { + mmc_bankrom(8, 0x8000, (bank << 1) + 1); + mmc_bankrom(8, 0xA000, (bank << 1) + 1); + mmc_bankrom(8, 0xC000, (bank << 1) + 1); + mmc_bankrom(8, 0xE000, (bank << 1) + 1); + } + else + { + mmc_bankrom(8, 0x8000, (bank << 1)); + mmc_bankrom(8, 0xA000, (bank << 1)); + mmc_bankrom(8, 0xC000, (bank << 1)); + mmc_bankrom(8, 0xE000, (bank << 1)); + } + break; + + case 3: + mmc_bankrom(8, 0xC000, (bank << 1) + swap); + mmc_bankrom(8, 0xE000, (bank << 1) + (swap ^ 1)); + + if (value & 0x40) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + default: + break; + } +} + +static void map15_init(void) +{ + mmc_bankrom(32, 0x8000, 0); +} + +static const map_memwrite map15_memwrite[] = +{ + { 0x8000, 0xFFFF, map15_write }, + { -1, -1, NULL } +}; + +const mapintf_t map15_intf = +{ + 15, /* mapper number */ + "Contra 100-in-1", /* mapper name */ + map15_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map15_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map015.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map016.c b/MCUME_esp32/espnofrendo/main/nofrendo/map016.c new file mode 100755 index 0000000..3d193b1 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map016.c @@ -0,0 +1,192 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map16.c +** +** mapper 16 interface +** $Id: map016.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes.h" + +static struct +{ + int counter; + bool enabled; +} irq; + +/* mapper 16: Bandai */ + +static void map16_init(void) +{ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, MMC_LASTBANK); + irq.counter = 0; + irq.enabled = false; +} + +static void map16_write(uint32 address, uint8 value) +{ + int reg = address & 0xF; + + if (reg < 8) + { + mmc_bankvrom(1, reg << 10, value); + } + else + { + switch (address & 0x000F) + { + case 0x8: + mmc_bankrom(16, 0x8000, value); + break; + + case 0x9: + switch (value & 3) + { + case 0: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 1: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + } + break; + + case 0xA: + irq.enabled = (value & 1) ? true : false; + break; + + case 0xB: + irq.counter = (irq.counter & 0xFF00) | value; + break; + + case 0xC: + irq.counter = (value << 8) | (irq.counter & 0xFF); + break; + + case 0xD: + /* eeprom I/O port? */ + break; + } + } +} + +static void map16_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (irq.counter) + { + if (0 == --irq.counter) + nes_irq(); + } + } +} + +static void map16_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper16.irqCounterLowByte = irq.counter & 0xFF; + state->extraData.mapper16.irqCounterHighByte = irq.counter >> 8; + state->extraData.mapper16.irqCounterEnabled = irq.enabled; +} + +static void map16_setstate(SnssMapperBlock *state) +{ + irq.counter = (state->extraData.mapper16.irqCounterHighByte << 8) + | state->extraData.mapper16.irqCounterLowByte; + irq.enabled = state->extraData.mapper16.irqCounterEnabled; +} + +static const map_memwrite map16_memwrite[] = +{ + { 0x6000, 0x600D, map16_write }, + { 0x7FF0, 0x7FFD, map16_write }, + { 0x8000, 0x800D, map16_write }, + { -1, -1, NULL } +}; + +const mapintf_t map16_intf = +{ + 16, /* mapper number */ + "Bandai", /* mapper name */ + map16_init, /* init routine */ + NULL, /* vblank callback */ + map16_hblank, /* hblank callback */ + map16_getstate, /* get state (snss) */ + map16_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map16_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map016.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.6 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.5 2000/10/10 13:58:16 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.3 2000/07/15 23:52:20 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.2 2000/07/11 05:03:49 matt +** value masking isn't necessary for the banking routines +** +** Revision 1.1 2000/07/11 03:14:18 melanson +** Initial commit for mappers 16, 34, and 231 +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map018.c b/MCUME_esp32/espnofrendo/main/nofrendo/map018.c new file mode 100755 index 0000000..6f182ef --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map018.c @@ -0,0 +1,215 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map18.c +** +** mapper 18 interface +** $Id: map018.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 18: Jaleco SS8806 */ +#define VRC_PBANK(bank, value, high) \ +do { \ + if ((high)) \ + highprgnybbles[(bank)] = (value) & 0x0F; \ + else \ + lowprgnybbles[(bank)] = (value) & 0x0F; \ + mmc_bankrom(8, 0x8000 + ((bank) << 13), (highprgnybbles[(bank)] << 4)+lowprgnybbles[(bank)]); \ +} while (0) + +#define VRC_VBANK(bank, value, high) \ +{ \ + if ((high)) \ + highnybbles[(bank)] = (value) & 0x0F; \ + else \ + lownybbles[(bank)] = (value) & 0x0F; \ + mmc_bankvrom(1, (bank) << 10, (highnybbles[(bank)] << 4)+lownybbles[(bank)]); \ +} + +static struct +{ + int counter, enabled; + uint8 nybbles[4]; + int clockticks; +} irq; + +static void map18_init(void) +{ + irq.counter = irq.enabled = 0; +} + +static uint8 lownybbles[8]; +static uint8 highnybbles[8]; +static uint8 lowprgnybbles[3]; +static uint8 highprgnybbles[3]; + + +static void map18_write(uint32 address, uint8 value) +{ + switch (address) + { + case 0x8000: VRC_PBANK(0, value, 0); break; + case 0x8001: VRC_PBANK(0, value, 1); break; + case 0x8002: VRC_PBANK(1, value, 0); break; + case 0x8003: VRC_PBANK(1, value, 1); break; + case 0x9000: VRC_PBANK(2, value, 0); break; + case 0x9001: VRC_PBANK(2, value, 1); break; + case 0xA000: VRC_VBANK(0, value, 0); break; + case 0xA001: VRC_VBANK(0, value, 1); break; + case 0xA002: VRC_VBANK(1, value, 0); break; + case 0xA003: VRC_VBANK(1, value, 1); break; + case 0xB000: VRC_VBANK(2, value, 0); break; + case 0xB001: VRC_VBANK(2, value, 1); break; + case 0xB002: VRC_VBANK(3, value, 0); break; + case 0xB003: VRC_VBANK(3, value, 1); break; + case 0xC000: VRC_VBANK(4, value, 0); break; + case 0xC001: VRC_VBANK(4, value, 1); break; + case 0xC002: VRC_VBANK(5, value, 0); break; + case 0xC003: VRC_VBANK(5, value, 1); break; + case 0xD000: VRC_VBANK(6, value, 0); break; + case 0xD001: VRC_VBANK(6, value, 1); break; + case 0xD002: VRC_VBANK(7, value, 0); break; + case 0xD003: VRC_VBANK(7, value, 1); break; + case 0xE000: + irq.nybbles[0]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xE001: + irq.nybbles[1]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xE002: + irq.nybbles[2]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xE003: + irq.nybbles[3]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xF000: + if(value&0x01) irq.enabled=true; + break; + case 0xF001: + irq.enabled=value&0x01; + break; + case 0xF002: + switch(value&0x03) + { + case 0: ppu_mirror(0, 0, 1, 1); break; + case 1: ppu_mirror(0, 1, 0, 1); break; + case 2: ppu_mirror(1,1,1,1);break; + case 3: ppu_mirror(1,1,1,1);break; // should this be zero? + default: break; + } + break; + default: + break; + } +} + + +static const map_memwrite map18_memwrite[] = +{ + { 0x8000, 0xFFFF, map18_write }, + { -1, -1, NULL } +}; + +static void map18_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper18.irqCounterLowByte = irq.counter & 0xFF; + state->extraData.mapper18.irqCounterHighByte = irq.counter >> 8; + state->extraData.mapper18.irqCounterEnabled = irq.enabled; +} + +static void map18_setstate(SnssMapperBlock *state) +{ + irq.counter = (state->extraData.mapper18.irqCounterHighByte << 8) + | state->extraData.mapper18.irqCounterLowByte; + irq.enabled = state->extraData.mapper18.irqCounterEnabled; +} + +const mapintf_t map18_intf = +{ + 18, /* mapper number */ + "Jaleco SS8806", /* mapper name */ + map18_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map18_getstate, /* get state (snss) */ + map18_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map18_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map018.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.6 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.5 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:42 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map019.c b/MCUME_esp32/espnofrendo/main/nofrendo/map019.c new file mode 100755 index 0000000..e5f6f1c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map019.c @@ -0,0 +1,170 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map19.c +** +** mapper 19 interface +** $Id: map019.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* TODO: shouldn't there be an h-blank IRQ handler??? */ + +/* Special mirroring macro for mapper 19 */ +#define N_BANK1(table, value) \ +{ \ + if ((value) < 0xE0) \ + ppu_setpage(1, (table) + 8, &mmc_getinfo()->vrom[((value) % (mmc_getinfo()->vrom_banks * 8)) << 10] - (0x2000 + ((table) << 10))); \ + else \ + ppu_setpage(1, (table) + 8, &mmc_getinfo()->vram[((value) & 7) << 10] - (0x2000 + ((table) << 10))); \ + ppu_mirrorhipages(); \ +} + +static struct +{ + int counter, enabled; +} irq; + +static void map19_init(void) +{ + irq.counter = irq.enabled = 0; +} + +/* mapper 19: Namcot 106 */ +static void map19_write(uint32 address, uint8 value) +{ + int reg = address >> 11; + switch (reg) + { + case 0xA: + irq.counter &= ~0xFF; + irq.counter |= value; + break; + + case 0xB: + irq.counter = ((value & 0x7F) << 8) | (irq.counter & 0xFF); + irq.enabled = (value & 0x80) ? true : false; + break; + + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + mmc_bankvrom(1, (reg & 7) << 10, value); + break; + + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + N_BANK1(reg & 3, value); + break; + + case 0x1C: + mmc_bankrom(8, 0x8000, value); + break; + + case 0x1D: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x1E: + mmc_bankrom(8, 0xC000, value); + break; + + default: + break; + } +} + +static void map19_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper19.irqCounterLowByte = irq.counter & 0xFF; + state->extraData.mapper19.irqCounterHighByte = irq.counter >> 8; + state->extraData.mapper19.irqCounterEnabled = irq.enabled; +} + +static void map19_setstate(SnssMapperBlock *state) +{ + irq.counter = (state->extraData.mapper19.irqCounterHighByte << 8) + | state->extraData.mapper19.irqCounterLowByte; + irq.enabled = state->extraData.mapper19.irqCounterEnabled; +} + +static const map_memwrite map19_memwrite[] = +{ + { 0x5000, 0x5FFF, map19_write }, + { 0x8000, 0xFFFF, map19_write }, + { -1, -1, NULL } +}; + +const mapintf_t map19_intf = +{ + 19, /* mapper number */ + "Namcot 106", /* mapper name */ + map19_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map19_getstate, /* get state (snss) */ + map19_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map19_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map019.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.3 2000/07/15 23:52:20 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map024.c b/MCUME_esp32/espnofrendo/main/nofrendo/map024.c new file mode 100755 index 0000000..785e215 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map024.c @@ -0,0 +1,235 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map24.c +** +** mapper 24 interface +** $Id: map024.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" +#include "vrcvisnd.h" + +static struct +{ + int counter, enabled; + int latch, wait_state; +} irq; + +static void map24_init(void) +{ + irq.counter = irq.enabled = 0; + irq.latch = irq.wait_state = 0; +} + +static void map24_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (256 == ++irq.counter) + { + irq.counter = irq.latch; + nes_irq(); + //irq.enabled = false; + irq.enabled = irq.wait_state; + } + } +} + +static void map24_write(uint32 address, uint8 value) +{ + switch (address & 0xF003) + { + case 0x8000: + mmc_bankrom(16, 0x8000, value); + break; + + case 0x9003: + /* ??? */ + break; + + case 0xB003: + switch (value & 0x0C) + { + case 0x00: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 0x04: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 0x08: + ppu_mirror(0, 0, 0, 0); + break; + + case 0x0C: + ppu_mirror(1, 1, 1, 1); + break; + + default: + break; + } + break; + + + case 0xC000: + mmc_bankrom(8, 0xC000, value); + break; + + case 0xD000: + mmc_bankvrom(1, 0x0000, value); + break; + + case 0xD001: + mmc_bankvrom(1, 0x0400, value); + break; + + case 0xD002: + mmc_bankvrom(1, 0x0800, value); + break; + + case 0xD003: + mmc_bankvrom(1, 0x0C00, value); + break; + + case 0xE000: + mmc_bankvrom(1, 0x1000, value); + break; + + case 0xE001: + mmc_bankvrom(1, 0x1400, value); + break; + + case 0xE002: + mmc_bankvrom(1, 0x1800, value); + break; + + case 0xE003: + mmc_bankvrom(1, 0x1C00, value); + break; + + case 0xF000: + irq.latch = value; + break; + + case 0xF001: + irq.enabled = (value >> 1) & 0x01; + irq.wait_state = value & 0x01; + if (irq.enabled) + irq.counter = irq.latch; + break; + + case 0xF002: + irq.enabled = irq.wait_state; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("invalid VRC6 write: $%02X to $%04X", value, address); +#endif + break; + } +} + +static void map24_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper24.irqCounter = irq.counter; + state->extraData.mapper24.irqCounterEnabled = irq.enabled; +} + +static void map24_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper24.irqCounter; + irq.enabled = state->extraData.mapper24.irqCounterEnabled; +} + +static const map_memwrite map24_memwrite[] = +{ + { 0x8000, 0xF002, map24_write }, + { -1, -1, NULL } +}; + +mapintf_t const map24_intf = +{ + 24, /* mapper number */ + "Konami VRC6", /* mapper name */ + map24_init, /* init routine */ + NULL, /* vblank callback */ + map24_hblank, /* hblank callback */ + map24_getstate, /* get state (snss) */ + map24_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map24_memwrite, /* memory write structure */ + &vrcvi_ext /* external sound device */ +}; + +/* +** $Log: map024.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.11 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.10 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.9 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.8 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.7 2000/10/09 12:00:53 matt +** removed old code +** +** Revision 1.6 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.5 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.4 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map032.c b/MCUME_esp32/espnofrendo/main/nofrendo/map032.c new file mode 100755 index 0000000..6719678 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map032.c @@ -0,0 +1,121 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map32.c +** +** mapper 32 interface +** $Id: map032.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +static int select_c000 = 0; + +/* mapper 32: Irem G-101 */ +static void map32_write(uint32 address, uint8 value) +{ + switch (address >> 12) + { + case 0x08: + if (select_c000) + mmc_bankrom(8, 0xC000, value); + else + mmc_bankrom(8, 0x8000, value); + break; + + case 0x09: + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + + select_c000 = (value & 0x02); + break; + + case 0x0A: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x0B: + { + int loc = (address & 0x07) << 10; + mmc_bankvrom(1, loc, value); + } + break; + + default: + break; + } +} + +static const map_memwrite map32_memwrite[] = +{ + { 0x8000, 0xFFFF, map32_write }, + { -1, -1, NULL } +}; + +const mapintf_t map32_intf = +{ + 32, /* mapper number */ + "Irem G-101", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map32_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map032.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map033.c b/MCUME_esp32/espnofrendo/main/nofrendo/map033.c new file mode 100755 index 0000000..fb70233 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map033.c @@ -0,0 +1,145 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map33.c +** +** mapper 33 interface +** $Id: map033.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 33: Taito TC0190*/ +static void map33_write(uint32 address, uint8 value) +{ + int page = (address >> 13) & 3; + int reg = address & 3; + + switch (page) + { + case 0: /* $800X */ + switch (reg) + { + case 0: + mmc_bankrom(8, 0x8000, value); + break; + + case 1: + mmc_bankrom(8, 0xA000, value); + break; + + case 2: + mmc_bankvrom(2, 0x0000, value); + break; + + case 3: + mmc_bankvrom(2, 0x0800, value); + break; + } + break; + + case 1: /* $A00X */ + { + int loc = 0x1000 + (reg << 10); + mmc_bankvrom(1, loc, value); + } + break; + + case 2: /* $C00X */ + case 3: /* $E00X */ + switch (reg) + { + case 0: + /* irqs maybe ? */ + //break; + + case 1: + /* this doesn't seem to work just right */ + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); + break; + + default: + break; + } + break; + } +} + + +static const map_memwrite map33_memwrite[] = +{ + { 0x8000, 0xFFFF, map33_write }, + { -1, -1, NULL } +}; + +const mapintf_t map33_intf = +{ + 33, /* mapper number */ + "Taito TC0190", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map33_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map033.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map034.c b/MCUME_esp32/espnofrendo/main/nofrendo/map034.c new file mode 100755 index 0000000..b8cadc0 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map034.c @@ -0,0 +1,100 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map34.c +** +** mapper 34 interface +** $Id: map034.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +static void map34_init(void) +{ + mmc_bankrom(32, 0x8000, MMC_LASTBANK); +} + +static void map34_write(uint32 address, uint8 value) +{ + if ((address & 0x8000) || (0x7FFD == address)) + { + mmc_bankrom(32, 0x8000, value); + } + else if (0x7FFE == address) + { + mmc_bankvrom(4, 0x0000, value); + } + else if (0x7FFF == address) + { + mmc_bankvrom(4, 0x1000, value); + } +} + +static const map_memwrite map34_memwrite[] = +{ + { 0x7FFD, 0xFFFF, map34_write }, + { -1, -1, NULL } +}; + +const mapintf_t map34_intf = +{ + 34, /* mapper number */ + "Nina-1", /* mapper name */ + map34_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map34_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map034.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/11 05:03:49 matt +** value masking isn't necessary for the banking routines +** +** Revision 1.2 2000/07/11 03:35:08 bsittler +** Fixes to make mikes new mappers compile. +** +** Revision 1.1 2000/07/11 03:14:18 melanson +** Initial commit for mappers 16, 34, and 231 +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map040.c b/MCUME_esp32/espnofrendo/main/nofrendo/map040.c new file mode 100755 index 0000000..0d744fe --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map040.c @@ -0,0 +1,163 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map40.c +** +** mapper 40 interface +** $Id: map040.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +#define MAP40_IRQ_PERIOD (4096 / 113.666666) + +static struct +{ + int enabled, counter; +} irq; + +/* mapper 40: SMB 2j (hack) */ +static void map40_init(void) +{ + mmc_bankrom(8, 0x6000, 6); + mmc_bankrom(8, 0x8000, 4); + mmc_bankrom(8, 0xA000, 5); + mmc_bankrom(8, 0xE000, 7); + + irq.enabled = false; + irq.counter = (int) MAP40_IRQ_PERIOD; +} + +static void map40_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled && irq.counter) + { + irq.counter--; + if (0 == irq.counter) + { + nes_irq(); + irq.enabled = false; + } + } +} + +static void map40_write(uint32 address, uint8 value) +{ + int range = (address >> 13) - 4; + + switch (range) + { + case 0: /* 0x8000-0x9FFF */ + irq.enabled = false; + irq.counter = (int) MAP40_IRQ_PERIOD; + break; + + case 1: /* 0xA000-0xBFFF */ + irq.enabled = true; + break; + + case 3: /* 0xE000-0xFFFF */ + mmc_bankrom(8, 0xC000, value & 7); + break; + + default: + break; + } +} + +static void map40_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper40.irqCounter = irq.counter; + state->extraData.mapper40.irqCounterEnabled = irq.enabled; +} + +static void map40_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper40.irqCounter; + irq.enabled = state->extraData.mapper40.irqCounterEnabled; +} + +static const map_memwrite map40_memwrite[] = +{ + { 0x8000, 0xFFFF, map40_write }, + { -1, -1, NULL } +}; + +const mapintf_t map40_intf = +{ + 40, /* mapper number */ + "SMB 2j (pirate)", /* mapper name */ + map40_init, /* init routine */ + NULL, /* vblank callback */ + map40_hblank, /* hblank callback */ + map40_getstate, /* get state (snss) */ + map40_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map40_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map040.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.9 2000/10/23 15:53:27 matt +** suppressed warnings +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.6 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.5 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map041.c b/MCUME_esp32/espnofrendo/main/nofrendo/map041.c new file mode 100755 index 0000000..f823ff2 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map041.c @@ -0,0 +1,167 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map041.c +** +** Mapper #41 (Caltron 6 in 1) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map041.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static uint8 register_low; +static uint8 register_high; + +/*****************************************************/ +/* Set 8K CHR bank from the combined register values */ +/*****************************************************/ +static void map41_set_chr (void) +{ + /* Set the CHR bank from the appropriate register bits */ + mmc_bankvrom (8, 0x0000, ((register_low >> 1) & 0x0C) | (register_high)); + + /* Done */ + return; +} + +/******************************/ +/* Mapper #41: Caltron 6 in 1 */ +/******************************/ +static void map41_init (void) +{ + /* Both registers set to zero at power on */ + /* TODO: Registers should also be cleared on a soft reset */ + register_low = 0x00; + register_high = 0x00; + mmc_bankrom (32, 0x8000, 0x00); + map41_set_chr (); + + /* Done */ + return; +} + +/******************************************/ +/* Mapper #41 write handler ($6000-$67FF) */ +/******************************************/ +static void map41_low_write (uint32 address, uint8 value) +{ + /* Within this range the value written is irrelevant */ + UNUSED (value); + + /* $6000-$67FF: A5 = mirroring (1=horizontal, 0=vertical) */ + /* A4-A3 = high two bits of 8K CHR bank */ + /* A2 = register 1 enable (0=disabled, 1=enabled) */ + /* A2-A0 = 32K PRG bank */ + register_low = (uint8) (address & 0x3F); + mmc_bankrom (32, 0x8000, register_low & 0x07); + map41_set_chr (); + if (register_low & 0x20) ppu_mirror(0, 0, 1, 1); /* horizontal */ + else ppu_mirror(0, 1, 0, 1); /* vertical */ + + /* Done */ + return; +} + +/******************************************/ +/* Mapper #41 write handler ($8000-$FFFF) */ +/******************************************/ +static void map41_high_write (uint32 address, uint8 value) +{ + /* Address doesn't matter within this range */ + UNUSED (address); + + /* $8000-$FFFF: D1-D0 = low two bits of 8K CHR bank */ + if (register_low & 0x04) + { + register_high = value & 0x03; + map41_set_chr (); + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map41_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map41_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map41_memwrite [] = +{ + { 0x6000, 0x67FF, map41_low_write }, + { 0x8000, 0xFFFF, map41_high_write }, + { -1, -1, NULL } +}; + +const mapintf_t map41_intf = +{ + 41, /* Mapper number */ + "Caltron 6 in 1", /* Mapper name */ + map41_init, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + map41_getstate, /* Get state (SNSS) */ + map41_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map41_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map041.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 00:33:15 firebug +** initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map042.c b/MCUME_esp32/espnofrendo/main/nofrendo/map042.c new file mode 100755 index 0000000..1ca5af1 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map042.c @@ -0,0 +1,188 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map042.c +** +** Mapper #42 (Baby Mario bootleg) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map042.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static struct +{ + bool enabled; + uint32 counter; +} irq; + +/********************************/ +/* Mapper #42 IRQ reset routine */ +/********************************/ +static void map42_irq_reset (void) +{ + /* Turn off IRQs */ + irq.enabled = false; + irq.counter = 0x0000; + + /* Done */ + return; +} + +/********************************************/ +/* Mapper #42: Baby Mario bootleg cartridge */ +/********************************************/ +static void map42_init (void) +{ + /* Set the hardwired pages */ + mmc_bankrom (8, 0x8000, 0x0C); + mmc_bankrom (8, 0xA000, 0x0D); + mmc_bankrom (8, 0xC000, 0x0E); + mmc_bankrom (8, 0xE000, 0x0F); + + /* Reset the IRQ counter */ + map42_irq_reset (); + + /* Done */ + return; +} + +/****************************************/ +/* Mapper #42 callback for IRQ handling */ +/****************************************/ +static void map42_hblank (int vblank) +{ + /* Counter is M2 based so it doesn't matter whether */ + /* the PPU is in its VBlank period or not */ + UNUSED(vblank); + + /* Increment the counter if it is enabled and check for strike */ + if (irq.enabled) + { + /* Is there a constant for cycles per scanline? */ + /* If so, someone ought to substitute it here */ + irq.counter = irq.counter + 114; + + /* IRQ is triggered after 24576 M2 cycles */ + if (irq.counter >= 0x6000) + { + /* Trigger the IRQ */ + nes_irq (); + + /* Reset the counter */ + map42_irq_reset (); + } + } +} + +/******************************************/ +/* Mapper #42 write handler ($E000-$FFFF) */ +/******************************************/ +static void map42_write (uint32 address, uint8 value) +{ + switch (address & 0x03) + { + /* Register 0: Select ROM page at $6000-$7FFF */ + case 0x00: mmc_bankrom (8, 0x6000, value & 0x0F); + break; + + /* Register 1: mirroring */ + case 0x01: if (value & 0x08) ppu_mirror(0, 0, 1, 1); /* horizontal */ + else ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + /* Register 2: IRQ */ + case 0x02: if (value & 0x02) irq.enabled = true; + else map42_irq_reset (); + break; + + /* Register 3: unused */ + default: break; + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map42_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map42_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map42_memwrite [] = +{ + { 0xE000, 0xFFFF, map42_write }, + { -1, -1, NULL } +}; + +const mapintf_t map42_intf = +{ + 42, /* Mapper number */ + "Baby Mario (bootleg)", /* Mapper name */ + map42_init, /* Initialization routine */ + NULL, /* VBlank callback */ + map42_hblank, /* HBlank callback */ + map42_getstate, /* Get state (SNSS) */ + map42_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map42_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map042.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 19:23:30 firebug +** initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map046.c b/MCUME_esp32/espnofrendo/main/nofrendo/map046.c new file mode 100755 index 0000000..9bd9f5c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map046.c @@ -0,0 +1,152 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map046.c +** +** Mapper #46 (Pelican Game Station) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map046.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static uint8 prg_low_bank; +static uint8 chr_low_bank; +static uint8 prg_high_bank; +static uint8 chr_high_bank; + +/*************************************************/ +/* Set banks from the combined register values */ +/*************************************************/ +static void map46_set_banks (void) +{ + /* Set the PRG and CHR pages */ + mmc_bankrom (32, 0x8000, (prg_high_bank << 1) | (prg_low_bank)); + mmc_bankvrom (8, 0x0000, (chr_high_bank << 3) | (chr_low_bank)); + + /* Done */ + return; +} + +/*********************************************************/ +/* Mapper #46: Pelican Game Station (aka Rumble Station) */ +/*********************************************************/ +static void map46_init (void) +{ + /* High bank switch register is set to zero on reset */ + prg_high_bank = 0x00; + chr_high_bank = 0x00; + map46_set_banks (); + + /* Done */ + return; +} + +/******************************************/ +/* Mapper #46 write handler ($6000-$FFFF) */ +/******************************************/ +static void map46_write (uint32 address, uint8 value) +{ + /* $8000-$FFFF: D6-D4 = lower three bits of CHR bank */ + /* D0 = low bit of PRG bank */ + /* $6000-$7FFF: D7-D4 = high four bits of CHR bank */ + /* D3-D0 = high four bits of PRG bank */ + if (address & 0x8000) + { + prg_low_bank = value & 0x01; + chr_low_bank = (value >> 4) & 0x07; + map46_set_banks (); + } + else + { + prg_high_bank = value & 0x0F; + chr_high_bank = (value >> 4) & 0x0F; + map46_set_banks (); + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map46_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map46_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map46_memwrite [] = +{ + { 0x6000, 0xFFFF, map46_write }, + { -1, -1, NULL } +}; + +const mapintf_t map46_intf = +{ + 46, /* Mapper number */ + "Pelican Game Station", /* Mapper name */ + map46_init, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + map46_getstate, /* Get state (SNSS) */ + map46_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map46_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map046.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 19:23:05 firebug +** initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map050.c b/MCUME_esp32/espnofrendo/main/nofrendo/map050.c new file mode 100755 index 0000000..89d8578 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map050.c @@ -0,0 +1,192 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map050.c +** +** Mapper #50 (SMB2j - 3rd discovered variation) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map050.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static struct +{ + bool enabled; + uint32 counter; +} irq; + +/********************************/ +/* Mapper #50 IRQ reset routine */ +/********************************/ +static void map50_irq_reset (void) +{ + /* Turn off IRQs */ + irq.enabled = false; + irq.counter = 0x0000; + + /* Done */ + return; +} + +/**************************************************************/ +/* Mapper #50: 3rd discovered variation of SMB2j cart bootleg */ +/**************************************************************/ +static void map50_init (void) +{ + /* Set the hardwired pages */ + mmc_bankrom (8, 0x6000, 0x0F); + mmc_bankrom (8, 0x8000, 0x08); + mmc_bankrom (8, 0xA000, 0x09); + mmc_bankrom (8, 0xE000, 0x0B); + + /* Reset the IRQ counter */ + map50_irq_reset (); + + /* Done */ + return; +} + +/****************************************/ +/* Mapper #50 callback for IRQ handling */ +/****************************************/ +static void map50_hblank (int vblank) +{ + /* Counter is M2 based so it doesn't matter whether */ + /* the PPU is in its VBlank period or not */ + UNUSED(vblank); + + /* Increment the counter if it is enabled and check for strike */ + if (irq.enabled) + { + /* Is there a constant for cycles per scanline? */ + /* If so, someone ought to substitute it here */ + irq.counter = irq.counter + 114; + + /* IRQ line is hooked to Q12 of the counter */ + if (irq.counter & 0x1000) + { + /* Trigger the IRQ */ + nes_irq (); + + /* Reset the counter */ + map50_irq_reset (); + } + } +} + +/******************************************/ +/* Mapper #50 write handler ($4000-$5FFF) */ +/******************************************/ +static void map50_write (uint32 address, uint8 value) +{ + uint8 selectable_bank; + + /* For address to be decoded, A5 must be high and A6 low */ + if ((address & 0x60) != 0x20) return; + + /* A8 low = $C000-$DFFF page selection */ + /* A8 high = IRQ timer toggle */ + if (address & 0x100) + { + /* IRQ settings */ + if (value & 0x01) irq.enabled = true; + else map50_irq_reset (); + } + else + { + /* Stupid data line swapping */ + selectable_bank = 0x00; + if (value & 0x08) selectable_bank |= 0x08; + if (value & 0x04) selectable_bank |= 0x02; + if (value & 0x02) selectable_bank |= 0x01; + if (value & 0x01) selectable_bank |= 0x04; + mmc_bankrom (8, 0xC000, selectable_bank); + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map50_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map50_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map50_memwrite [] = +{ + { 0x4000, 0x5FFF, map50_write }, + { -1, -1, NULL } +}; + +const mapintf_t map50_intf = +{ + 50, /* Mapper number */ + "SMB2j (3rd discovered variant)", /* Mapper name */ + map50_init, /* Initialization routine */ + NULL, /* VBlank callback */ + map50_hblank, /* HBlank callback */ + map50_getstate, /* Get state (SNSS) */ + map50_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map50_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map050.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 19:22:13 firebug +** initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map064.c b/MCUME_esp32/espnofrendo/main/nofrendo/map064.c new file mode 100755 index 0000000..59b668f --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map064.c @@ -0,0 +1,234 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map64.c +** +** mapper 64 interface +** $Id: map064.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" + +static struct +{ + int counter, latch; + bool enabled, reset; +} irq; + +static uint8 command = 0; +static uint16 vrombase = 0x0000; + +static void map64_hblank(int vblank) +{ + if (vblank) + return; + + irq.reset = false; + + if (ppu_enabled()) + { + if (0 == irq.counter--) + { + irq.counter = irq.latch; + + if (true == irq.enabled) + nes_irq(); + + irq.reset = true; + } + } +} + +/* mapper 64: Tengen RAMBO-1 */ +static void map64_write(uint32 address, uint8 value) +{ + switch (address & 0xE001) + { + case 0x8000: + command = value; + vrombase = (value & 0x80) ? 0x1000 : 0x0000; + break; + + case 0x8001: + switch (command & 0xF) + { + case 0: + mmc_bankvrom(1, 0x0000 ^ vrombase, value); + mmc_bankvrom(1, 0x0400 ^ vrombase, value); + break; + + case 1: + mmc_bankvrom(1, 0x0800 ^ vrombase, value); + mmc_bankvrom(1, 0x0C00 ^ vrombase, value); + break; + + case 2: + mmc_bankvrom(1, 0x1000 ^ vrombase, value); + break; + + case 3: + mmc_bankvrom(1, 0x1400 ^ vrombase, value); + break; + + case 4: + mmc_bankvrom(1, 0x1800 ^ vrombase, value); + break; + + case 5: + mmc_bankvrom(1, 0x1C00 ^ vrombase, value); + break; + + case 6: + mmc_bankrom(8, (command & 0x40) ? 0xA000 : 0x8000, value); + break; + + case 7: + mmc_bankrom(8, (command & 0x40) ? 0xC000 : 0xA000, value); + break; + + case 8: + mmc_bankvrom(1, 0x0400, value); + break; + + case 9: + mmc_bankvrom(1, 0x0C00, value); + break; + + case 15: + mmc_bankrom(8, (command & 0x40) ? 0x8000 : 0xC000, value); + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("mapper 64: unknown command #%d", command & 0xF); +#endif + break; + } + break; + + case 0xA000: + if (value & 1) + ppu_mirror(0, 0, 1, 1); + else + ppu_mirror(0, 1, 0, 1); + break; + + case 0xC000: + //irq.counter = value; + irq.latch = value; + break; + + case 0xC001: + //irq.latch = value; + irq.reset = true; + break; + + case 0xE000: + //irq.counter = irq.latch; + irq.enabled = false; + break; + + case 0xE001: + irq.enabled = true; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("mapper 64: Wrote $%02X to $%04X", value, address); +#endif + break; + } + + if (true == irq.reset) + irq.counter = irq.latch; +} + +static void map64_init(void) +{ + mmc_bankrom(8, 0x8000, MMC_LASTBANK); + mmc_bankrom(8, 0xA000, MMC_LASTBANK); + mmc_bankrom(8, 0xC000, MMC_LASTBANK); + mmc_bankrom(8, 0xE000, MMC_LASTBANK); + + irq.counter = irq.latch = 0; + irq.reset = irq.enabled = false; +} + +static const map_memwrite map64_memwrite[] = +{ + { 0x8000, 0xFFFF, map64_write }, + { -1, -1, NULL } +}; + +const mapintf_t map64_intf = +{ + 64, /* mapper number */ + "Tengen RAMBO-1", /* mapper name */ + map64_init, /* init routine */ + NULL, /* vblank callback */ + map64_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map64_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map064.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.6 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.5 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map065.c b/MCUME_esp32/espnofrendo/main/nofrendo/map065.c new file mode 100755 index 0000000..a152ee3 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map065.c @@ -0,0 +1,144 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map65.c +** +** mapper 65 interface +** $Id: map065.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +static struct +{ + int counter; + bool enabled; + int cycles; + uint8 low, high; +} irq; + +static void map65_init(void) +{ + irq.counter = 0; + irq.enabled = false; + irq.low = irq.high = 0; + irq.cycles = 0; +} + +/* TODO: shouldn't there be some kind of HBlank callback??? */ + +/* mapper 65: Irem H-3001*/ +static void map65_write(uint32 address, uint8 value) +{ + int range = address & 0xF000; + int reg = address & 7; + + switch (range) + { + case 0x8000: + case 0xA000: + case 0xC000: + mmc_bankrom(8, range, value); + break; + + case 0xB000: + mmc_bankvrom(1, reg << 10, value); + break; + + case 0x9000: + switch (reg) + { + case 4: + irq.enabled = (value & 0x01) ? false : true; + break; + + case 5: + irq.high = value; + irq.cycles = (irq.high << 8) | irq.low; + irq.counter = (uint8)(irq.cycles / 128); + break; + + case 6: + irq.low = value; + irq.cycles = (irq.high << 8) | irq.low; + irq.counter = (uint8)(irq.cycles / 128); + break; + + default: + break; + } + break; + + default: + break; + } +} + +static const map_memwrite map65_memwrite[] = +{ + { 0x8000, 0xFFFF, map65_write }, + { -1, -1, NULL } +}; + +const mapintf_t map65_intf = +{ + 65, /* mapper number */ + "Irem H-3001", /* mapper name */ + map65_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map65_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map065.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map066.c b/MCUME_esp32/espnofrendo/main/nofrendo/map066.c new file mode 100755 index 0000000..1e789a7 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map066.c @@ -0,0 +1,94 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map66.c +** +** mapper 66 interface +** $Id: map066.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 66: GNROM */ +static void map66_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(32, 0x8000, (value >> 4) & 3); + mmc_bankvrom(8, 0x0000, value & 3); +} + +static void map66_init(void) +{ + mmc_bankrom(32, 0x8000, 0); + mmc_bankvrom(8, 0x0000, 0); +} + + +static const map_memwrite map66_memwrite[] = +{ + { 0x8000, 0xFFFF, map66_write }, + { -1, -1, NULL } +}; + +const mapintf_t map66_intf = +{ + 66, /* mapper number */ + "GNROM", /* mapper name */ + map66_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map66_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map066.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map070.c b/MCUME_esp32/espnofrendo/main/nofrendo/map070.c new file mode 100755 index 0000000..2299b8a --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map070.c @@ -0,0 +1,115 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map70.c +** +** mapper 70 interface +** $Id: map070.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 70: Arkanoid II, Kamen Rider Club, etc. */ +/* ($8000-$FFFF) D6-D4 = switch $8000-$BFFF */ +/* ($8000-$FFFF) D3-D0 = switch PPU $0000-$1FFF */ +/* ($8000-$FFFF) D7 = switch mirroring */ +static void map70_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, (value >> 4) & 0x07); + mmc_bankvrom(8, 0x0000, value & 0x0F); + + /* Argh! FanWen used the 4-screen bit to determine + ** whether the game uses D7 to switch between + ** horizontal and vertical mirroring, or between + ** one-screen mirroring from $2000 or $2400. + */ + if (mmc_getinfo()->flags & ROM_FLAG_FOURSCREEN) + { + if (value & 0x80) + ppu_mirror(0, 0, 1, 1); /* horiz */ + else + ppu_mirror(0, 1, 0, 1); /* vert */ + } + else + { + int mirror = (value & 0x80) >> 7; + ppu_mirror(mirror, mirror, mirror, mirror); + } +} + +static const map_memwrite map70_memwrite[] = +{ + { 0x8000, 0xFFFF, map70_write }, + { -1, -1, NULL } +}; + +const mapintf_t map70_intf = +{ + 70, /* mapper number */ + "Mapper 70", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map70_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map070.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map073.c b/MCUME_esp32/espnofrendo/main/nofrendo/map073.c new file mode 100755 index 0000000..619ad60 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map073.c @@ -0,0 +1,173 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map073.c +** +** Mapper #73 (Konami VRC3) +** Implementation by Firebug +** $Id: map073.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static struct +{ + bool enabled; + uint32 counter; +} irq; + +/**************************/ +/* Mapper #73: Salamander */ +/**************************/ +static void map73_init (void) +{ + /* Turn off IRQs */ + irq.enabled = false; + irq.counter = 0x0000; + + /* Done */ + return; +} + +/****************************************/ +/* Mapper #73 callback for IRQ handling */ +/****************************************/ +static void map73_hblank (int vblank) +{ + /* Counter is M2 based so it doesn't matter whether */ + /* the PPU is in its VBlank period or not */ + UNUSED (vblank); + + /* Increment the counter if it is enabled and check for strike */ + if (irq.enabled) + { + /* Is there a constant for cycles per scanline? */ + /* If so, someone ought to substitute it here */ + irq.counter = irq.counter + 114; + + /* Counter triggered on overflow into Q16 */ + if (irq.counter & 0x10000) + { + /* Clip to sixteen-bit word */ + irq.counter &= 0xFFFF; + + /* Trigger the IRQ */ + nes_irq (); + + /* Shut off IRQ counter */ + irq.enabled = false; + } + } +} + +/******************************************/ +/* Mapper #73 write handler ($8000-$FFFF) */ +/******************************************/ +static void map73_write (uint32 address, uint8 value) +{ + switch (address & 0xF000) + { + case 0x8000: irq.counter &= 0xFFF0; + irq.counter |= (uint32) (value); + break; + case 0x9000: irq.counter &= 0xFF0F; + irq.counter |= (uint32) (value << 4); + break; + case 0xA000: irq.counter &= 0xF0FF; + irq.counter |= (uint32) (value << 8); + break; + case 0xB000: irq.counter &= 0x0FFF; + irq.counter |= (uint32) (value << 12); + break; + case 0xC000: if (value & 0x02) irq.enabled = true; + else irq.enabled = false; + break; + case 0xF000: mmc_bankrom (16, 0x8000, value); + default: break; + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map73_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map73_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map73_memwrite [] = +{ + { 0x8000, 0xFFFF, map73_write }, + { -1, -1, NULL } +}; + +const mapintf_t map73_intf = +{ + 73, /* Mapper number */ + "Konami VRC3", /* Mapper name */ + map73_init, /* Initialization routine */ + NULL, /* VBlank callback */ + map73_hblank, /* HBlank callback */ + map73_getstate, /* Get state (SNSS) */ + map73_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map73_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map073.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 06:35:05 firebug +** Initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map075.c b/MCUME_esp32/espnofrendo/main/nofrendo/map075.c new file mode 100755 index 0000000..5622e2d --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map075.c @@ -0,0 +1,131 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map75.c +** +** mapper 75 interface +** $Id: map075.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + + +static uint8 latch[2]; +static uint8 hibits; + +/* mapper 75: Konami VRC1 */ +static void map75_write(uint32 address, uint8 value) +{ + switch ((address & 0xF000) >> 12) + { + case 0x8: + mmc_bankrom(8, 0x8000, value); + break; + + case 0x9: + hibits = (value & 0x06); + + mmc_bankvrom(4, 0x0000, ((hibits & 0x02) << 3) | latch[0]); + mmc_bankvrom(4, 0x1000, ((hibits & 0x04) << 2) | latch[1]); + + if (value & 1) + ppu_mirror(0, 1, 0, 1); /* vert */ + else + ppu_mirror(0, 0, 1, 1); /* horiz */ + + break; + + case 0xA: + mmc_bankrom(8, 0xA000, value); + break; + + case 0xC: + mmc_bankrom(8, 0xC000, value); + break; + + case 0xE: + latch[0] = (value & 0x0F); + mmc_bankvrom(4, 0x0000, ((hibits & 0x02) << 3) | latch[0]); + break; + + case 0xF: + latch[1] = (value & 0x0F); + mmc_bankvrom(4, 0x1000, ((hibits & 0x04) << 2) | latch[1]); + break; + + default: + break; + } +} + +static const map_memwrite map75_memwrite[] = +{ + { 0x8000, 0xFFFF, map75_write }, + { -1, -1, NULL } +}; + +const mapintf_t map75_intf = +{ + 75, /* mapper number */ + "Konami VRC1", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map75_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map075.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map078.c b/MCUME_esp32/espnofrendo/main/nofrendo/map078.c new file mode 100755 index 0000000..306da78 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map078.c @@ -0,0 +1,111 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map78.c +** +** mapper 78 interface +** $Id: map078.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 78: Holy Diver, Cosmo Carrier */ +/* ($8000-$FFFF) D2-D0 = switch $8000-$BFFF */ +/* ($8000-$FFFF) D7-D4 = switch PPU $0000-$1FFF */ +/* ($8000-$FFFF) D3 = switch mirroring */ +static void map78_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, value & 7); + mmc_bankvrom(8, 0x0000, (value >> 4) & 0x0F); + + /* Ugh! Same abuse of the 4-screen bit as with Mapper #70 */ + if (mmc_getinfo()->flags & ROM_FLAG_FOURSCREEN) + { + if (value & 0x08) + ppu_mirror(0, 1, 0, 1); /* vert */ + else + ppu_mirror(0, 0, 1, 1); /* horiz */ + } + else + { + int mirror = (value >> 3) & 1; + ppu_mirror(mirror, mirror, mirror, mirror); + } +} + +static const map_memwrite map78_memwrite[] = +{ + { 0x8000, 0xFFFF, map78_write }, + { -1, -1, NULL } +}; + +const mapintf_t map78_intf = +{ + 78, /* mapper number */ + "Mapper 78", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map78_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map078.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map079.c b/MCUME_esp32/espnofrendo/main/nofrendo/map079.c new file mode 100755 index 0000000..3f92f6e --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map079.c @@ -0,0 +1,92 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map78.c +** +** mapper 78 interface +** $Id: map079.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + + +/* mapper 79: NINA-03/06 */ +static void map79_write(uint32 address, uint8 value) +{ + if ((address & 0x5100) == 0x4100) + { + mmc_bankrom(32, 0x8000, (value >> 3) & 1); + mmc_bankvrom(8, 0x0000, value & 7); + } +} + +static void map79_init(void) +{ + mmc_bankrom(32, 0x8000, 0); + mmc_bankvrom(8, 0x0000, 0); +} + +static const map_memwrite map79_memwrite[] = +{ + { 0x4100, 0x5FFF, map79_write }, /* ????? incorrect range ??? */ + { -1, -1, NULL } +}; + +const mapintf_t map79_intf = +{ + 79, /* mapper number */ + "NINA-03/06", /* mapper name */ + map79_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map79_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map079.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.4 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.3 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map085.c b/MCUME_esp32/espnofrendo/main/nofrendo/map085.c new file mode 100755 index 0000000..a1252d0 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map085.c @@ -0,0 +1,232 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map85.c +** +** mapper 85 interface +** $Id: map085.c,v 1.3 2001/05/06 01:42:03 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" + +static struct +{ + int counter, latch; + int wait_state; + bool enabled; +} irq; + +/* mapper 85: Konami VRC7 */ +static void map85_write(uint32 address, uint8 value) +{ + uint8 bank = address >> 12; + uint8 reg = (address & 0x10) | ((address & 0x08) << 1); + + switch (bank) + { + case 0x08: + if (0x10 == reg) + mmc_bankrom(8, 0xA000, value); + else + mmc_bankrom(8, 0x8000, value); + break; + + case 0x09: + /* 0x10 & 0x30 should be trapped by sound emulation */ + mmc_bankrom(8, 0xC000, value); + break; + + case 0x0A: + if (0x10 == reg) + mmc_bankvrom(1, 0x0400, value); + else + mmc_bankvrom(1, 0x0000, value); + break; + + case 0x0B: + if (0x10 == reg) + mmc_bankvrom(1, 0x0C00, value); + else + mmc_bankvrom(1, 0x0800, value); + break; + + case 0x0C: + if (0x10 == reg) + mmc_bankvrom(1, 0x1400, value); + else + mmc_bankvrom(1, 0x1000, value); + break; + + case 0x0D: + if (0x10 == reg) + mmc_bankvrom(1, 0x1C00, value); + else + mmc_bankvrom(1, 0x1800, value); + break; + + case 0x0E: + if (0x10 == reg) + { + irq.latch = value; + } + else + { + switch (value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + } + } + break; + + case 0x0F: + if (0x10 == reg) + { + irq.enabled = irq.wait_state; + } + else + { + irq.wait_state = value & 0x01; + irq.enabled = (value & 0x02) ? true : false; + if (true == irq.enabled) + irq.counter = irq.latch; + } + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("unhandled vrc7 write: $%02X to $%04X\n", value, address); +#endif /* NOFRENDO_DEBUG */ + break; + } +} + +static void map85_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (++irq.counter > 0xFF) + { + irq.counter = irq.latch; + nes_irq(); + + //return; + } + //irq.counter++; + } +} + +static const map_memwrite map85_memwrite[] = +{ + { 0x8000, 0xFFFF, map85_write }, + { -1, -1, NULL } +}; + +static void map85_init(void) +{ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, MMC_LASTBANK); + + mmc_bankvrom(8, 0x0000, 0); + + irq.counter = irq.latch = 0; + irq.wait_state = 0; + irq.enabled = false; +} + +const mapintf_t map85_intf = +{ + 85, /* mapper number */ + "Konami VRC7", /* mapper name */ + map85_init, /* init routine */ + NULL, /* vblank callback */ + map85_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map85_memwrite, /* memory write structure */ + NULL +}; + +/* +** $Log: map085.c,v $ +** Revision 1.3 2001/05/06 01:42:03 neil +** boooo +** +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.10 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.9 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.8 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.7 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.6 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.5 2000/07/23 14:37:21 matt +** added a break statement +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.2 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.1 2000/07/06 02:47:47 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map087.c b/MCUME_esp32/espnofrendo/main/nofrendo/map087.c new file mode 100755 index 0000000..4941167 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map087.c @@ -0,0 +1,85 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map087.c +** +** Mapper #87 (16K VROM switch) +** Implementation by Firebug +** $Id: map087.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +/******************************************/ +/* Mapper #87 write handler ($6000-$7FFF) */ +/******************************************/ +static void map87_write (uint32 address, uint8 value) +{ + /* Within range, address written to is irrelevant */ + UNUSED (address); + + /* Very simple: 8K CHR page is selected by D1 */ + if (value & 0x02) mmc_bankvrom (8, 0x0000, 0x01); + else mmc_bankvrom (8, 0x0000, 0x00); + + /* Done */ + return; +} + +static const map_memwrite map87_memwrite [] = +{ + { 0x6000, 0x7FFF, map87_write }, + { -1, -1, NULL } +}; + +const mapintf_t map87_intf = +{ + 87, /* Mapper number */ + "16K VROM switch", /* Mapper name */ + NULL, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + NULL, /* Get state (SNSS) */ + NULL, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map87_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map087.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 06:34:44 firebug +** Initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map093.c b/MCUME_esp32/espnofrendo/main/nofrendo/map093.c new file mode 100755 index 0000000..80b9be5 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map093.c @@ -0,0 +1,77 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map93.c +** +** mapper 93 interface +** $Id: map093.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +static void map93_write(uint32 address, uint8 value) +{ + UNUSED(address); + + /* ($8000-$FFFF) D7-D4 = switch $8000-$BFFF D0: mirror */ + mmc_bankrom(16, 0x8000, value >> 4); + + if (value & 1) + ppu_mirror(0, 1, 0, 1); /* vert */ + else + ppu_mirror(0, 0, 1, 1); /* horiz */ +} + +static const map_memwrite map93_memwrite[] = +{ + { 0x8000, 0xFFFF, map93_write }, + { -1, -1, NULL } +}; + +const mapintf_t map93_intf = +{ + 93, /* mapper number */ + "Mapper 93", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map93_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map093.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/12/11 12:33:48 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map094.c b/MCUME_esp32/espnofrendo/main/nofrendo/map094.c new file mode 100755 index 0000000..04f3922 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map094.c @@ -0,0 +1,87 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map94.c +** +** mapper 94 interface +** $Id: map094.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 94: Senjou no Ookami */ +static void map94_write(uint32 address, uint8 value) +{ + UNUSED(address); + + /* ($8000-$FFFF) D7-D2 = switch $8000-$BFFF */ + mmc_bankrom(16, 0x8000, value >> 2); +} + +static const map_memwrite map94_memwrite[] = +{ + { 0x8000, 0xFFFF, map94_write }, + { -1, -1, NULL } +}; + +const mapintf_t map94_intf = +{ + 94, /* mapper number */ + "Mapper 94", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map94_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map094.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map099.c b/MCUME_esp32/espnofrendo/main/nofrendo/map099.c new file mode 100755 index 0000000..01ceec4 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map099.c @@ -0,0 +1,90 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map99.c +** +** mapper 99 interface +** $Id: map099.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* Switch VROM for VS games */ +static void map99_vromswitch(uint8 value) +{ + int bank = (value & 0x04) >> 2; + mmc_bankvrom(8, 0x0000, bank); +} + +/* mapper 99: VS. System */ +static const void map99_init(void) +{ + ppu_mirror(0, 1, 2, 3); + ppu_setvromswitch(map99_vromswitch); +} + +const mapintf_t map99_intf = +{ + 99, /* mapper number */ + "VS. System", /* mapper name */ + map99_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + NULL, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map099.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map160.c b/MCUME_esp32/espnofrendo/main/nofrendo/map160.c new file mode 100755 index 0000000..9b53339 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map160.c @@ -0,0 +1,140 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map160.c +** +** mapper 160 interface +** $Id: map160.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes.h" + +static struct +{ + bool enabled, expired; + int counter; + int latch_c005, latch_c003; +} irq; + +static void map160_write(uint32 address, uint8 value) +{ + if (address >= 0x8000 && address <= 0x8003) + { + mmc_bankrom(8, 0x8000 + 0x2000 * (address & 3), value); + } + else if (address >= 0x9000 && address <= 0x9007) + { + mmc_bankvrom(1, 0x400 * (address & 7), value); + } + else if (0xC002 == address) + { + irq.enabled = false; + irq.latch_c005 = irq.latch_c003; + } + else if (0xC003 == address) + { + if (false == irq.expired) + { + irq.counter = value; + } + else + { + irq.expired = false; + irq.enabled = true; + irq.counter = irq.latch_c005; + } + } + else if (0xC005 == address) + { + irq.latch_c005 = value; + irq.counter = value; + } +#ifdef NOFRENDO_DEBUG + else + { + log_printf("mapper 160: untrapped write $%02X to $%04X\n", value, address); + } +#endif /* NOFRENDO_DEBUG */ +} + +static void map160_hblank(int vblank) +{ + if (!vblank) + { + if (ppu_enabled() && irq.enabled) + { + if (0 == irq.counter && false == irq.expired) + { + irq.expired = true; + nes_irq(); + } + else + { + irq.counter--; + } + } + } +} + +static void map160_init(void) +{ + irq.enabled = false; + irq.expired = false; + irq.counter = 0; + irq.latch_c003 = irq.latch_c005 = 0; +} + +static const map_memwrite map160_memwrite[] = +{ + { 0x8000, 0xFFFF, map160_write }, + { -1, -1, NULL } +}; + +const mapintf_t map160_intf = +{ + 160, /* mapper number */ + "Aladdin (pirate)", /* mapper name */ + map160_init, /* init routine */ + NULL, /* vblank callback */ + map160_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map160_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map160.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 04:24:46 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map229.c b/MCUME_esp32/espnofrendo/main/nofrendo/map229.c new file mode 100755 index 0000000..f3114fa --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map229.c @@ -0,0 +1,114 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map229.c +** +** Mapper #229 (31 in 1) +** Implementation by Firebug +** Mapper information courtesy of Mark Knibbs +** $Id: map229.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +/************************/ +/* Mapper #229: 31 in 1 */ +/************************/ +static void map229_init (void) +{ + /* On reset, PRG is set to first 32K and CHR to first 8K */ + mmc_bankrom (32, 0x8000, 0x00); + mmc_bankvrom (8, 0x0000, 0x00); + + /* Done */ + return; +} + +/*******************************************/ +/* Mapper #229 write handler ($8000-$FFFF) */ +/*******************************************/ +static void map229_write (uint32 address, uint8 value) +{ + /* Value written is irrelevant */ + UNUSED (value); + + /* A4-A0 sets 8K CHR page */ + mmc_bankvrom (8, 0x0000, (uint8) (address & 0x1F)); + + /* If A4-A1 are all low then select the first 32K, */ + /* otherwise select a 16K bank at both $8000 and $C000 */ + if ((address & 0x1E) == 0x00) + { + mmc_bankrom (32, 0x8000, 0x00); + } + else + { + mmc_bankrom (16, 0x8000, (uint8) (address & 0x1F)); + mmc_bankrom (16, 0xC000, (uint8) (address & 0x1F)); + } + + /* A5: mirroring (low = vertical, high = horizontal) */ + if (address & 0x20) ppu_mirror(0, 0, 1, 1); + else ppu_mirror(0, 1, 0, 1); + + /* Done */ + return; +} + +static const map_memwrite map229_memwrite [] = +{ + { 0x8000, 0xFFFF, map229_write }, + { -1, -1, NULL } +}; + +const mapintf_t map229_intf = +{ + 229, /* Mapper number */ + "31 in 1 (bootleg)", /* Mapper name */ + map229_init, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + NULL, /* Get state (SNSS) */ + NULL, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map229_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map229.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 06:34:31 firebug +** Initial revision +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/map231.c b/MCUME_esp32/espnofrendo/main/nofrendo/map231.c new file mode 100755 index 0000000..5946b2b --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/map231.c @@ -0,0 +1,95 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map231.c +** +** mapper 231 interface +** $Id: map231.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 231: NINA-07, used in Wally Bear and the NO! Gang */ + +static void map231_init(void) +{ + mmc_bankrom(32, 0x8000, MMC_LASTBANK); +} + +static void map231_write(uint32 address, uint8 value) +{ + int bank, vbank; + UNUSED(address); + + bank = ((value & 0x80) >> 5) | (value & 0x03); + vbank = (value >> 4) & 0x07; + + mmc_bankrom(32, 0x8000, bank); + mmc_bankvrom(8, 0x0000, vbank); +} + +static const map_memwrite map231_memwrite[] = +{ + { 0x8000, 0xFFFF, map231_write }, + { -1, -1, NULL } +}; + +const mapintf_t map231_intf = +{ + 231, /* mapper number */ + "NINA-07", /* mapper name */ + map231_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map231_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map231.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.4 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.3 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.2 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.1 2000/07/11 03:14:18 melanson +** Initial commit for mappers 16, 34, and 231 +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/mapvrc.c b/MCUME_esp32/espnofrendo/main/nofrendo/mapvrc.c new file mode 100755 index 0000000..67124f2 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/mapvrc.c @@ -0,0 +1,452 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map_vrc.c +** +** VRC mapper interface +** $Id: mapvrc.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" + +#define VRC_VBANK(bank, value, high) \ +{ \ + if ((high)) \ + highnybbles[(bank)] = (value) & 0x0F; \ + else \ + lownybbles[(bank)] = (value) & 0x0F; \ + mmc_bankvrom(1, (bank) << 10, (highnybbles[(bank)] << 4)+lownybbles[(bank)]); \ +} + +static struct +{ + int counter, enabled; + int latch, wait_state; +} irq; + +static int select_c000 = 0; +static uint8 lownybbles[8]; +static uint8 highnybbles[8]; + +static void vrc_init(void) +{ + irq.counter = irq.enabled = 0; + irq.latch = irq.wait_state = 0; +} + +static void map21_write(uint32 address, uint8 value) +{ + switch (address) + { + case 0x8000: + if (select_c000) + mmc_bankrom(8, 0xC000,value); + else + mmc_bankrom(8, 0x8000,value); + break; + + case 0x9000: + switch (value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + + default: + break; + } + break; + case 0x9002: select_c000=(value&0x02)>>1; break; + case 0xA000: mmc_bankrom(8, 0xA000,value); break; + + case 0xB000: VRC_VBANK(0,value,0); break; + case 0xB002: + case 0xB040: VRC_VBANK(0,value,1); break; + case 0xB001: + case 0xB004: + case 0xB080: VRC_VBANK(1,value,0); break; + case 0xB003: + case 0xB006: + case 0xB0C0: VRC_VBANK(1,value,1); break; + case 0xC000: VRC_VBANK(2,value,0); break; + case 0xC002: + case 0xC040: VRC_VBANK(2,value,1); break; + case 0xC001: + case 0xC004: + case 0xC080: VRC_VBANK(3,value,0); break; + case 0xC003: + case 0xC006: + case 0xC0C0: VRC_VBANK(3,value,1); break; + case 0xD000: VRC_VBANK(4,value,0); break; + case 0xD002: + case 0xD040: VRC_VBANK(4,value,1); break; + case 0xD001: + case 0xD004: + case 0xD080: VRC_VBANK(5,value,0); break; + case 0xD003: + case 0xD006: + case 0xD0C0: VRC_VBANK(5,value,1); break; + case 0xE000: VRC_VBANK(6,value,0); break; + case 0xE002: + case 0xE040: VRC_VBANK(6,value,1); break; + case 0xE001: + case 0xE004: + case 0xE080: VRC_VBANK(7,value,0); break; + case 0xE003: + case 0xE006: + case 0xE0C0: VRC_VBANK(7,value,1); break; + + case 0xF000: + irq.latch &= 0xF0; + irq.latch |= (value & 0x0F); + break; + case 0xF002: + case 0xF040: + irq.latch &= 0x0F; + irq.latch |= ((value & 0x0F) << 4); + break; + case 0xF004: + case 0xF001: + case 0xF080: + irq.enabled = (value >> 1) & 0x01; + irq.wait_state = value & 0x01; + irq.counter = irq.latch; + break; + case 0xF006: + case 0xF003: + case 0xF0C0: + irq.enabled = irq.wait_state; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("wrote $%02X to $%04X", value, address); +#endif + break; + } +} + +static void map22_write(uint32 address, uint8 value) +{ + int reg = address >> 12; + + switch (reg) + { + case 0x8: + mmc_bankrom(8, 0x8000, value); + break; + + case 0xA: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x9: + switch (value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(1, 1, 1, 1); + break; + + case 3: + ppu_mirror(0, 0, 0, 0); + break; + } + break; + + case 0xB: + case 0xC: + case 0xD: + case 0xE: + { + int loc = (((reg - 0xB) << 1) + (address & 1)) << 10; + mmc_bankvrom(1, loc, value >> 1); + } + break; + + default: + break; + } +} + +static void map23_write(uint32 address, uint8 value) +{ + switch (address) + { + case 0x8000: + case 0x8FFF: + mmc_bankrom(8, 0x8000, value); + break; + + case 0xA000: + case 0xAFFF: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x9000: + case 0x9004: + case 0x9008: + switch(value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + } + break; + + case 0xB000: VRC_VBANK(0,value,0); break; + case 0xB001: + case 0xB004: VRC_VBANK(0,value,1); break; + case 0xB002: + case 0xB008: VRC_VBANK(1,value,0); break; + case 0xB003: + case 0xB00C: VRC_VBANK(1,value,1); break; + case 0xC000: VRC_VBANK(2,value,0); break; + case 0xC001: + case 0xC004: VRC_VBANK(2,value,1); break; + case 0xC002: + case 0xC008: VRC_VBANK(3,value,0); break; + case 0xC003: + case 0xC00C: VRC_VBANK(3,value,1); break; + case 0xD000: VRC_VBANK(4,value,0); break; + case 0xD001: + case 0xD004: VRC_VBANK(4,value,1); break; + case 0xD002: + case 0xD008: VRC_VBANK(5,value,0); break; + case 0xD003: + case 0xD00C: VRC_VBANK(5,value,1); break; + case 0xE000: VRC_VBANK(6,value,0); break; + case 0xE001: + case 0xE004: VRC_VBANK(6,value,1); break; + case 0xE002: + case 0xE008: VRC_VBANK(7,value,0); break; + case 0xE003: + case 0xE00C: VRC_VBANK(7,value,1); break; + + case 0xF000: + irq.latch &= 0xF0; + irq.latch |= (value & 0x0F); + break; + + case 0xF004: + irq.latch &= 0x0F; + irq.latch |= ((value & 0x0F) << 4); + break; + + case 0xF008: + irq.enabled = (value >> 1) & 0x01; + irq.wait_state = value & 0x01; + irq.counter = irq.latch; + break; + + case 0xF00C: + irq.enabled = irq.wait_state; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("wrote $%02X to $%04X",value,address); +#endif + break; + } +} + +static void vrc_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (256 == ++irq.counter) + { + irq.counter = irq.latch; + nes_irq(); + //irq.enabled = false; + irq.enabled = irq.wait_state; + } + } +} + + + +static map_memwrite map21_memwrite[] = +{ + { 0x8000, 0xFFFF, map21_write }, + { -1, -1, NULL } +}; + +static map_memwrite map22_memwrite[] = +{ + { 0x8000, 0xFFFF, map22_write }, + { -1, -1, NULL } +}; + +static map_memwrite map23_memwrite[] = +{ + { 0x8000, 0xFFFF, map23_write }, + { -1, -1, NULL } +}; + +static void map21_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper21.irqCounter = irq.counter; + state->extraData.mapper21.irqCounterEnabled = irq.enabled; +} + +static void map21_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper21.irqCounter; + irq.enabled = state->extraData.mapper21.irqCounterEnabled; +} + +const mapintf_t map21_intf = +{ + 21, /* mapper number */ + "Konami VRC4 A", /* mapper name */ + vrc_init, /* init routine */ + NULL, /* vblank callback */ + vrc_hblank, /* hblank callback */ + map21_getstate, /* get state (snss) */ + map21_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map21_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +const mapintf_t map22_intf = +{ + 22, /* mapper number */ + "Konami VRC2 A", /* mapper name */ + vrc_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map22_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +const mapintf_t map23_intf = +{ + 23, /* mapper number */ + "Konami VRC2 B", /* mapper name */ + vrc_init, /* init routine */ + NULL, /* vblank callback */ + vrc_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map23_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +const mapintf_t map25_intf = +{ + 25, /* mapper number */ + "Konami VRC4 B", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + vrc_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map21_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: mapvrc.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.10 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.9 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.8 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.7 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.6 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.5 2000/07/15 23:52:20 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.4 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/mmc5_snd.c b/MCUME_esp32/espnofrendo/main/nofrendo/mmc5_snd.c new file mode 100755 index 0000000..29fb00e --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/mmc5_snd.c @@ -0,0 +1,447 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmc5_snd.c +** +** Nintendo MMC5 sound emulation +** $Id: mmc5_snd.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "mmc5_snd.h" +#include "nes_apu.h" + +/* TODO: encapsulate apu/mmc5 rectangle */ + +#define APU_OVERSAMPLE +#define APU_VOLUME_DECAY(x) ((x) -= ((x) >> 7)) + +/* look up table madness */ +static int32 decay_lut[16]; +static int vbl_lut[32]; + +/* various sound constants for sound emulation */ +/* vblank length table used for rectangles, triangle, noise */ +static const uint8 vbl_length[32] = +{ + 5, 127, 10, 1, 19, 2, 40, 3, 80, 4, 30, 5, 7, 6, 13, 7, + 6, 8, 12, 9, 24, 10, 48, 11, 96, 12, 36, 13, 8, 14, 16, 15 +}; + +/* ratios of pos/neg pulse for rectangle waves +** 2/16 = 12.5%, 4/16 = 25%, 8/16 = 50%, 12/16 = 75% +** (4-bit adder in rectangles, hence the 16) +*/ +static const int duty_lut[4] = +{ + 2, 4, 8, 12 +}; + + +#define MMC5_WRA0 0x5000 +#define MMC5_WRA1 0x5001 +#define MMC5_WRA2 0x5002 +#define MMC5_WRA3 0x5003 +#define MMC5_WRB0 0x5004 +#define MMC5_WRB1 0x5005 +#define MMC5_WRB2 0x5006 +#define MMC5_WRB3 0x5007 +#define MMC5_SMASK 0x5015 + +typedef struct mmc5rectangle_s +{ + uint8 regs[4]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + bool fixed_envelope; + bool holdnote; + uint8 volume; + + int32 env_phase; + int32 env_delay; + uint8 env_vol; + + int vbl_length; + uint8 adder; + int duty_flip; +} mmc5rectangle_t; + +typedef struct mmc5dac_s +{ + int32 output; + bool enabled; +} mmc5dac_t; + + +static struct +{ + float incsize; + uint8 mul[2]; + mmc5rectangle_t rect[2]; + mmc5dac_t dac; +} mmc5; + + +#define MMC5_RECTANGLE_OUTPUT chan->output_vol +static int32 mmc5_rectangle(mmc5rectangle_t *chan) +{ + int32 output; + +#ifdef APU_OVERSAMPLE + int num_times; + int32 total; +#endif /* APU_OVERSAMPLE */ + + /* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle + ** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on + ** reg2: 8 bits of freq + ** reg3: 0-2=high freq, 7-4=vbl length counter + */ + + APU_VOLUME_DECAY(chan->output_vol); + + if (false == chan->enabled || 0 == chan->vbl_length) + return MMC5_RECTANGLE_OUTPUT; + + /* vbl length counter */ + if (false == chan->holdnote) + chan->vbl_length--; + + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ + chan->env_phase -= 4; /* 240/60 */ + while (chan->env_phase < 0) + { + chan->env_phase += chan->env_delay; + + if (chan->holdnote) + chan->env_vol = (chan->env_vol + 1) & 0x0F; + else if (chan->env_vol < 0x0F) + chan->env_vol++; + } + + if (chan->freq < 4) + return MMC5_RECTANGLE_OUTPUT; + + chan->accum -= mmc5.incsize; /* # of cycles per sample */ + if (chan->accum >= 0) + return MMC5_RECTANGLE_OUTPUT; + +#ifdef APU_OVERSAMPLE + num_times = total = 0; + + if (chan->fixed_envelope) + output = chan->volume << 8; /* fixed volume */ + else + output = (chan->env_vol ^ 0x0F) << 8; +#endif + + while (chan->accum < 0) + { + chan->accum += chan->freq; + chan->adder = (chan->adder + 1) & 0x0F; + +#ifdef APU_OVERSAMPLE + if (chan->adder < chan->duty_flip) + total += output; + else + total -= output; + + num_times++; +#endif + } + +#ifdef APU_OVERSAMPLE + chan->output_vol = total / num_times; +#else + if (chan->fixed_envelope) + output = chan->volume << 8; /* fixed volume */ + else + output = (chan->env_vol ^ 0x0F) << 8; + + if (0 == chan->adder) + chan->output_vol = output; + else if (chan->adder == chan->duty_flip) + chan->output_vol = -output; +#endif + + return MMC5_RECTANGLE_OUTPUT; +} + +static uint8 mmc5_read(uint32 address) +{ + uint32 retval; + + retval = (uint32) (mmc5.mul[0] * mmc5.mul[1]); + + switch (address) + { + case 0x5205: + return (uint8) retval; + + case 0x5206: + return (uint8) (retval >> 8); + + default: + return 0xFF; + } +} + +/* mix vrcvi sound channels together */ +static int32 mmc5_process(void) +{ + int32 accum; + + accum = mmc5_rectangle(&mmc5.rect[0]); + accum += mmc5_rectangle(&mmc5.rect[1]); + if (mmc5.dac.enabled) + accum += mmc5.dac.output; + + return accum; +} + +/* write to registers */ +static void mmc5_write(uint32 address, uint8 value) +{ + int chan; + + switch (address) + { + /* rectangles */ + case MMC5_WRA0: + case MMC5_WRB0: + chan = (address & 4) ? 1 : 0; + mmc5.rect[chan].regs[0] = value; + + mmc5.rect[chan].volume = value & 0x0F; + mmc5.rect[chan].env_delay = decay_lut[value & 0x0F]; + mmc5.rect[chan].holdnote = (value & 0x20) ? true : false; + mmc5.rect[chan].fixed_envelope = (value & 0x10) ? true : false; + mmc5.rect[chan].duty_flip = duty_lut[value >> 6]; + break; + + case MMC5_WRA1: + case MMC5_WRB1: + break; + + case MMC5_WRA2: + case MMC5_WRB2: + chan = (address & 4) ? 1 : 0; + mmc5.rect[chan].regs[2] = value; + if (mmc5.rect[chan].enabled) + mmc5.rect[chan].freq = (((mmc5.rect[chan].regs[3] & 7) << 8) + value) + 1; + break; + + case MMC5_WRA3: + case MMC5_WRB3: + chan = (address & 4) ? 1 : 0; + mmc5.rect[chan].regs[3] = value; + + if (mmc5.rect[chan].enabled) + { + mmc5.rect[chan].vbl_length = vbl_lut[value >> 3]; + mmc5.rect[chan].env_vol = 0; + mmc5.rect[chan].freq = (((value & 7) << 8) + mmc5.rect[chan].regs[2]) + 1; + mmc5.rect[chan].adder = 0; + } + break; + + case MMC5_SMASK: + if (value & 0x01) + { + mmc5.rect[0].enabled = true; + } + else + { + mmc5.rect[0].enabled = false; + mmc5.rect[0].vbl_length = 0; + } + + if (value & 0x02) + { + mmc5.rect[1].enabled = true; + } + else + { + mmc5.rect[1].enabled = false; + mmc5.rect[1].vbl_length = 0; + } + + break; + + case 0x5010: + if (value & 0x01) + mmc5.dac.enabled = true; + else + mmc5.dac.enabled = false; + break; + + case 0x5011: + mmc5.dac.output = (value ^ 0x80) << 8; + break; + + case 0x5205: + mmc5.mul[0] = value; + break; + + case 0x5206: + mmc5.mul[1] = value; + break; + + case 0x5114: + case 0x5115: + /* ???? */ + break; + + default: + break; + } +} + +/* reset state of vrcvi sound channels */ +static void mmc5_reset(void) +{ + int i; + apu_t apu; + + + /* get the phase period from the apu */ + apu_getcontext(&apu); + mmc5.incsize = apu.cycle_rate; + + for (i = 0x5000; i < 0x5008; i++) + mmc5_write(i, 0); + + mmc5_write(0x5010, 0); + mmc5_write(0x5011, 0); +} + +static int mmc5_init(void) +{ + int i, num_samples; + apu_t apu; + + apu_getcontext(&apu); + num_samples = apu.num_samples; + + /* lut used for enveloping and frequency sweeps */ + for (i = 0; i < 16; i++) + decay_lut[i] = num_samples * (i + 1); + + /* used for note length, based on vblanks and size of audio buffer */ + for (i = 0; i < 32; i++) + vbl_lut[i] = vbl_length[i] * num_samples; + + return 0; +} + +static const apu_memread mmc5_memread[] = +{ + { 0x5205, 0x5206, mmc5_read }, + { -1, -1, NULL } +}; + +static const apu_memwrite mmc5_memwrite[] = +{ + { 0x5000, 0x5015, mmc5_write }, + { 0x5114, 0x5115, mmc5_write }, + { 0x5205, 0x5206, mmc5_write }, + { -1, -1, NULL } +}; + +const apuext_t mmc5_ext = +{ + mmc5_init, + NULL, /* no shutdown */ + mmc5_reset, + mmc5_process, + mmc5_memread, + mmc5_memwrite +}; + +/* +** $Log: mmc5_snd.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/13 00:57:08 matt +** doesn't look as nasty now +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.16 2000/10/17 11:56:42 matt +** selectable apu base frequency +** +** Revision 1.15 2000/10/10 14:04:29 matt +** make way for bjarne +** +** Revision 1.14 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.13 2000/10/08 17:50:18 matt +** appears $5114/$5115 do something +** +** Revision 1.12 2000/10/03 11:56:20 matt +** better support for optional sound ext routines +** +** Revision 1.11 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.10 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.9 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.8 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.7 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.6 2000/07/04 04:51:41 matt +** cleanups +** +** Revision 1.5 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.4 2000/06/28 22:03:51 matt +** fixed stupid oversight +** +** Revision 1.3 2000/06/20 20:46:58 matt +** minor cleanups +** +** Revision 1.2 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.1 2000/06/20 00:06:47 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/mmc5_snd.h b/MCUME_esp32/espnofrendo/main/nofrendo/mmc5_snd.h new file mode 100644 index 0000000..1681611 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/mmc5_snd.h @@ -0,0 +1,70 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmc5_snd.h +** +** Nintendo MMC5 sound emulation header +** $Id: mmc5_snd.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _MMC5_SND_H_ +#define _MMC5_SND_H_ + +#include "nes_apu.h" + +extern const apuext_t mmc5_ext; + +#endif /* !_MMC5_SND_H_ */ + +/* +** $Log: mmc5_snd.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/13 00:57:08 matt +** doesn't look as nasty now +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.6 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.5 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.4 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.3 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.2 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.1 2000/06/20 00:06:47 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/mmclist.c b/MCUME_esp32/espnofrendo/main/nofrendo/mmclist.c new file mode 100755 index 0000000..3e0d5e7 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/mmclist.c @@ -0,0 +1,122 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmclist.c +** +** list of all mapper interfaces +** $Id: mmclist.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper interfaces */ +extern mapintf_t map0_intf; +extern mapintf_t map1_intf; +extern mapintf_t map2_intf; +extern mapintf_t map3_intf; +extern mapintf_t map4_intf; +extern mapintf_t map5_intf; +extern mapintf_t map7_intf; +extern mapintf_t map8_intf; +extern mapintf_t map9_intf; +extern mapintf_t map11_intf; +extern mapintf_t map15_intf; +extern mapintf_t map16_intf; +extern mapintf_t map18_intf; +extern mapintf_t map19_intf; +extern mapintf_t map21_intf; +extern mapintf_t map22_intf; +extern mapintf_t map23_intf; +extern mapintf_t map24_intf; +extern mapintf_t map25_intf; +extern mapintf_t map32_intf; +extern mapintf_t map33_intf; +extern mapintf_t map34_intf; +extern mapintf_t map40_intf; +extern mapintf_t map64_intf; +extern mapintf_t map65_intf; +extern mapintf_t map66_intf; +extern mapintf_t map70_intf; +extern mapintf_t map75_intf; +extern mapintf_t map78_intf; +extern mapintf_t map79_intf; +extern mapintf_t map85_intf; +extern mapintf_t map94_intf; +extern mapintf_t map99_intf; +extern mapintf_t map231_intf; + +/* implemented mapper interfaces */ +const mapintf_t *mappers[] = +{ + &map0_intf, + &map1_intf, + &map2_intf, + &map3_intf, + &map4_intf, + &map5_intf, + &map7_intf, + &map8_intf, + &map9_intf, + &map11_intf, + &map15_intf, + &map16_intf, + &map18_intf, + &map19_intf, + &map21_intf, + &map22_intf, + &map23_intf, + &map24_intf, + &map25_intf, + &map32_intf, + &map33_intf, + &map34_intf, + &map40_intf, + &map64_intf, + &map65_intf, + &map66_intf, + &map70_intf, + &map75_intf, + &map78_intf, + &map79_intf, + &map85_intf, + &map94_intf, + &map99_intf, + &map231_intf, + NULL +}; + +/* +** $Log: mmclist.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.2 2000/10/10 13:05:30 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.1 2000/07/31 04:27:39 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/mmclist.h b/MCUME_esp32/espnofrendo/main/nofrendo/mmclist.h new file mode 100755 index 0000000..da2ac93 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/mmclist.h @@ -0,0 +1,49 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmclist.h +** +** list of all mapper interfaces +** $Id: mmclist.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _MMCLIST_H_ +#define _MMCLIST_H_ + +#include "nes_mmc.h" + +extern mapintf_t *mappers[]; + +#endif /* !_MMCLIST_H_ */ + +/* +** $Log: mmclist.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.1 2000/07/31 04:27:40 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes.c new file mode 100644 index 0000000..c707cf8 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes.c @@ -0,0 +1,762 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes.c +** +** NES hardware related routines +** $Id: nes.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include +#include "noftypes.h" +#include "nes6502.h" +#include "log.h" +#include "osd.h" +#include "nes.h" +#include "nes_apu.h" +#include "nes_ppu.h" +#include "nes_rom.h" +#include "nes_mmc.h" +#include "vid_drv.h" +#include "nofrendo.h" + + +#define NES_CLOCK_DIVIDER 12 +//#define NES_MASTER_CLOCK 21477272.727272727272 +#define NES_MASTER_CLOCK (236250000 / 11) +#define NES_SCANLINE_CYCLES (1364.0 / NES_CLOCK_DIVIDER) +#define NES_FIQ_PERIOD (NES_MASTER_CLOCK / NES_CLOCK_DIVIDER / 60) + +#define NES_RAMSIZE 0x800 + +#define NES_SKIP_LIMIT (NES_REFRESH_RATE / 5) /* 12 or 10, depending on PAL/NTSC */ + +static nes_t nes; + +/* find out if a file is ours */ +int nes_isourfile(const char *filename) +{ + return rom_checkmagic(filename); +} + +/* TODO: just asking for problems -- please remove */ +nes_t *nes_getcontextptr(void) +{ + return &nes; +} + +void nes_getcontext(nes_t *machine) +{ + apu_getcontext(nes.apu); + ppu_getcontext(nes.ppu); + nes6502_getcontext(nes.cpu); + mmc_getcontext(nes.mmc); + + *machine = nes; +} + +void nes_setcontext(nes_t *machine) +{ + ASSERT(machine); + + apu_setcontext(machine->apu); + ppu_setcontext(machine->ppu); + nes6502_setcontext(machine->cpu); + mmc_setcontext(machine->mmc); + + nes = *machine; +} + +static uint8 ram_read(uint32 address) +{ + return nes.cpu->mem_page[0][address & (NES_RAMSIZE - 1)]; +} + +static void ram_write(uint32 address, uint8 value) +{ + nes.cpu->mem_page[0][address & (NES_RAMSIZE - 1)] = value; +} + +static void write_protect(uint32 address, uint8 value) +{ + /* don't allow write to go through */ + UNUSED(address); + UNUSED(value); +} + +static uint8 read_protect(uint32 address) +{ + /* don't allow read to go through */ + UNUSED(address); + + return 0xFF; +} + +#define LAST_MEMORY_HANDLER { -1, -1, NULL } +/* read/write handlers for standard NES */ +static const nes6502_memread default_readhandler[] = +{ + { 0x0800, 0x1FFF, ram_read }, + { 0x2000, 0x3FFF, ppu_read }, + { 0x4000, 0x4015, apu_read }, + { 0x4016, 0x4017, ppu_readhigh }, + LAST_MEMORY_HANDLER +}; + +static const nes6502_memwrite default_writehandler[] = +{ + { 0x0800, 0x1FFF, ram_write }, + { 0x2000, 0x3FFF, ppu_write }, + { 0x4000, 0x4013, apu_write }, + { 0x4015, 0x4015, apu_write }, + { 0x4014, 0x4017, ppu_writehigh }, + LAST_MEMORY_HANDLER +}; + +/* this big nasty boy sets up the address handlers that the CPU uses */ +static void build_address_handlers(nes_t *machine) +{ + int count, num_handlers = 0; + mapintf_t *intf; + + ASSERT(machine); + intf = machine->mmc->intf; + + memset(machine->readhandler, 0, sizeof(machine->readhandler)); + memset(machine->writehandler, 0, sizeof(machine->writehandler)); + + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == default_readhandler[count].read_func) + break; + + memcpy(&machine->readhandler[num_handlers], &default_readhandler[count], + sizeof(nes6502_memread)); + } + + if (intf->sound_ext) + { + if (NULL != intf->sound_ext->mem_read) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->sound_ext->mem_read[count].read_func) + break; + + memcpy(&machine->readhandler[num_handlers], &intf->sound_ext->mem_read[count], + sizeof(nes6502_memread)); + } + } + } + + if (NULL != intf->mem_read) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->mem_read[count].read_func) + break; + + memcpy(&machine->readhandler[num_handlers], &intf->mem_read[count], + sizeof(nes6502_memread)); + } + } + + /* TODO: poof! numbers */ + machine->readhandler[num_handlers].min_range = 0x4018; + machine->readhandler[num_handlers].max_range = 0x5FFF; + machine->readhandler[num_handlers].read_func = read_protect; + num_handlers++; + machine->readhandler[num_handlers].min_range = -1; + machine->readhandler[num_handlers].max_range = -1; + machine->readhandler[num_handlers].read_func = NULL; + num_handlers++; + ASSERT(num_handlers <= MAX_MEM_HANDLERS); + + num_handlers = 0; + + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == default_writehandler[count].write_func) + break; + + memcpy(&machine->writehandler[num_handlers], &default_writehandler[count], + sizeof(nes6502_memwrite)); + } + + if (intf->sound_ext) + { + if (NULL != intf->sound_ext->mem_write) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->sound_ext->mem_write[count].write_func) + break; + + memcpy(&machine->writehandler[num_handlers], &intf->sound_ext->mem_write[count], + sizeof(nes6502_memwrite)); + } + } + } + + if (NULL != intf->mem_write) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->mem_write[count].write_func) + break; + + memcpy(&machine->writehandler[num_handlers], &intf->mem_write[count], + sizeof(nes6502_memwrite)); + } + } + + /* catch-all for bad writes */ + /* TODO: poof! numbers */ + machine->writehandler[num_handlers].min_range = 0x4018; + machine->writehandler[num_handlers].max_range = 0x5FFF; + machine->writehandler[num_handlers].write_func = write_protect; + num_handlers++; + machine->writehandler[num_handlers].min_range = 0x8000; + machine->writehandler[num_handlers].max_range = 0xFFFF; + machine->writehandler[num_handlers].write_func = write_protect; + num_handlers++; + machine->writehandler[num_handlers].min_range = -1; + machine->writehandler[num_handlers].max_range = -1; + machine->writehandler[num_handlers].write_func = NULL; + num_handlers++; + ASSERT(num_handlers <= MAX_MEM_HANDLERS); +} + +/* raise an IRQ */ +void nes_irq(void) +{ + nes6502_irq(); +} + +static uint8 nes_clearfiq(void) +{ + if (nes.fiq_occurred) + { + nes.fiq_occurred = false; + return 0x40; + } + + return 0; +} + +void nes_setfiq(uint8 value) +{ + nes.fiq_state = value; + nes.fiq_cycles = (int) NES_FIQ_PERIOD; +} + +static void nes_checkfiq(int cycles) +{ + nes.fiq_cycles -= cycles; + if (nes.fiq_cycles <= 0) + { + nes.fiq_cycles += (int) NES_FIQ_PERIOD; + if (0 == (nes.fiq_state & 0xC0)) + { + nes.fiq_occurred = true; + nes6502_irq(); + } + } +} + +void nes_nmi(void) +{ + nes6502_nmi(); +} + +static void nes_renderframe(bool draw_flag) +{ + int elapsed_cycles; + mapintf_t *mapintf = nes.mmc->intf; + int in_vblank = 0; + + while (262 != nes.scanline) + { +// ppu_scanline(nes.vidbuf, nes.scanline, draw_flag); + ppu_scanline(vid_getbuffer(), nes.scanline, draw_flag); + + if (241 == nes.scanline) + { + /* 7-9 cycle delay between when VINT flag goes up and NMI is taken */ + elapsed_cycles = nes6502_execute(7); + nes.scanline_cycles -= elapsed_cycles; + nes_checkfiq(elapsed_cycles); + + ppu_checknmi(); + + if (mapintf->vblank) + mapintf->vblank(); + in_vblank = 1; + } + + if (mapintf->hblank) + mapintf->hblank(in_vblank); + + nes.scanline_cycles += (float) NES_SCANLINE_CYCLES; + elapsed_cycles = nes6502_execute((int) nes.scanline_cycles); + nes.scanline_cycles -= (float) elapsed_cycles; + nes_checkfiq(elapsed_cycles); + + ppu_endscanline(nes.scanline); + nes.scanline++; + } + + nes.scanline = 0; +} + +static void system_video(bool draw) +{ + +#ifdef NOLOOP +#else +#endif + /* blit to screen */ + vid_flush(); + + /* grab input */ + osd_getinput(); +} + +/* main emulation loop */ +static int last_ticks, frames_to_render; +void nes_emulate(void) +{ + osd_setsound(nes.apu->process); + + last_ticks = nofrendo_ticks; + frames_to_render = 0; + nes.scanline_cycles = 0; + nes.fiq_cycles = (int) NES_FIQ_PERIOD; +#ifdef NOLOOP +#else + while (false == nes.poweroff) + { + if (nofrendo_ticks != last_ticks) + { + int tick_diff = nofrendo_ticks - last_ticks; + + frames_to_render += tick_diff; + last_ticks = nofrendo_ticks; + } + + if (true == nes.pause) + { + /* TODO: dim the screen, and pause/silence the apu */ + system_video(true); + frames_to_render = 0; + } + else if (frames_to_render > 1) + { + frames_to_render--; + nes_renderframe(false); + system_video(false); + } + else if ((1 == frames_to_render && true == nes.autoframeskip) + || false == nes.autoframeskip) + { + frames_to_render = 0; + nes_renderframe(true); + system_video(true); + } + } +#endif +} + +//ADD ON +#ifdef NOLOOP +void nes_step(int skip) +{ + if (skip) { + nes_renderframe(false); + system_video(false); + } + else { + nes_renderframe(true); + system_video(true); + } + +} +#endif + +static void mem_trash(uint8 *buffer, int length) +{ + int i; + + for (i = 0; i < length; i++) + buffer[i] = (uint8) rand(); +} + +/* Reset NES hardware */ +void nes_reset(int reset_type) +{ + if (HARD_RESET == reset_type) + { + memset(nes.cpu->mem_page[0], 0, NES_RAMSIZE); + if (nes.rominfo->vram) + mem_trash(nes.rominfo->vram, 0x2000 * nes.rominfo->vram_banks); + } + + apu_reset(); + ppu_reset(reset_type); + mmc_reset(); + nes6502_reset(); + + nes.scanline = 241; +} + +void nes_destroy(nes_t **machine) +{ + if (*machine) + { + rom_free(&(*machine)->rominfo); + mmc_destroy(&(*machine)->mmc); + ppu_destroy(&(*machine)->ppu); + apu_destroy(&(*machine)->apu); +// bmp_destroy(&(*machine)->vidbuf); + if ((*machine)->cpu) + { + if ((*machine)->cpu->mem_page[0]) + free((*machine)->cpu->mem_page[0]); + free((*machine)->cpu); + } + + free(*machine); + *machine = NULL; + } +} + +void nes_poweroff(void) +{ + nes.poweroff = true; +} + +void nes_togglepause(void) +{ + nes.pause ^= true; +} + +/* insert a cart into the NES */ +int nes_insertcart(const char *filename, nes_t *machine) +{ + nes6502_setcontext(machine->cpu); + /* rom file */ + machine->rominfo = rom_load(filename); + if (NULL == machine->rominfo) + goto _fail; + /* map cart's SRAM to CPU $6000-$7FFF */ + if (machine->rominfo->sram) + { + machine->cpu->mem_page[6] = machine->rominfo->sram; + machine->cpu->mem_page[7] = machine->rominfo->sram + 0x1000; + } + /* mapper */ + machine->mmc = mmc_create(machine->rominfo); + if (NULL == machine->mmc) + goto _fail; + + /* if there's VRAM, let the PPU know */ + if (NULL != machine->rominfo->vram) + machine->ppu->vram_present = true; + apu_setext(machine->apu, machine->mmc->intf->sound_ext); + build_address_handlers(machine); + nes_setcontext(machine); + nes_reset(HARD_RESET); + + return 0; + +_fail: + nes_destroy(&machine); + return -1; +} + + +/* Initialize NES CPU, hardware, etc. */ +nes_t *nes_create(void) +{ + nes_t *machine; + sndinfo_t osd_sound; + int i; + + machine = malloc(sizeof(nes_t)); + if (NULL == machine) + return NULL; + + memset(machine, 0, sizeof(nes_t)); + + /* bitmap */ + /* 8 pixel overdraw */ +// machine->vidbuf = bmp_create(NES_SCREEN_WIDTH, NES_SCREEN_HEIGHT, 8); +// if (NULL == machine->vidbuf) +// goto _fail; + + machine->autoframeskip = true; + + /* cpu */ + machine->cpu = malloc(sizeof(nes6502_context)); + if (NULL == machine->cpu) + goto _fail; + + memset(machine->cpu, 0, sizeof(nes6502_context)); + + /* allocate 2kB RAM */ + machine->cpu->mem_page[0] = malloc(NES_RAMSIZE); + if (NULL == machine->cpu->mem_page[0]) + goto _fail; + + /* point all pages at NULL for now */ + for (i = 1; i < NES6502_NUMBANKS; i++) + machine->cpu->mem_page[i] = NULL; + + machine->cpu->read_handler = machine->readhandler; + machine->cpu->write_handler = machine->writehandler; + + /* apu */ + osd_getsoundinfo(&osd_sound); + machine->apu = apu_create(0, osd_sound.sample_rate, NES_REFRESH_RATE, osd_sound.bps); + + if (NULL == machine->apu) + goto _fail; + + /* set the IRQ routines */ + machine->apu->irq_callback = nes_irq; + machine->apu->irqclear_callback = nes_clearfiq; + + /* ppu */ + machine->ppu = ppu_create(); + if (NULL == machine->ppu) + goto _fail; + + machine->poweroff = false; + machine->pause = false; + + return machine; + +_fail: + nes_destroy(&machine); + return NULL; +} + +/* +** $Log: nes.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.18 2000/11/29 12:58:23 matt +** timing/fiq fixes +** +** Revision 1.17 2000/11/27 19:36:15 matt +** more timing fixes +** +** Revision 1.16 2000/11/26 16:13:13 matt +** slight fix (?) to nes_fiq +** +** Revision 1.15 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.14 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.13 2000/11/25 01:53:42 matt +** bool stinks sometimes +** +** Revision 1.12 2000/11/21 13:28:40 matt +** take care to zero allocated mem +** +** Revision 1.11 2000/11/20 13:23:32 matt +** nofrendo.c now handles timer +** +** Revision 1.10 2000/11/09 14:07:27 matt +** state load fixed, state save mostly fixed +** +** Revision 1.9 2000/11/05 22:19:37 matt +** pause buglet fixed +** +** Revision 1.8 2000/11/05 06:27:09 matt +** thinlib spawns changes +** +** Revision 1.7 2000/10/29 14:36:45 matt +** nes_clearframeirq is static +** +** Revision 1.6 2000/10/28 15:20:41 matt +** irq callbacks in nes_apu +** +** Revision 1.5 2000/10/27 12:55:58 matt +** nes6502 now uses 4kB banks across the boards +** +** Revision 1.4 2000/10/25 13:44:02 matt +** no more silly define names +** +** Revision 1.3 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.50 2000/10/23 17:51:09 matt +** adding fds support +** +** Revision 1.49 2000/10/23 15:53:08 matt +** better system handling +** +** Revision 1.48 2000/10/22 20:02:29 matt +** autoframeskip bugfix +** +** Revision 1.47 2000/10/22 19:16:15 matt +** more sane timer ISR / autoframeskip +** +** Revision 1.46 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.45 2000/10/17 12:00:56 matt +** selectable apu base frequency +** +** Revision 1.44 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.43 2000/10/10 13:05:30 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.42 2000/10/08 17:53:37 matt +** minor accuracy changes +** +** Revision 1.41 2000/09/18 02:09:12 matt +** -pedantic is your friend +** +** Revision 1.40 2000/09/15 13:38:39 matt +** changes for optimized apu core +** +** Revision 1.39 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.38 2000/09/08 11:57:29 matt +** no more nes_fiq +** +** Revision 1.37 2000/08/31 02:39:01 matt +** moved dos stuff in here (temp) +** +** Revision 1.36 2000/08/16 02:51:55 matt +** random cleanups +** +** Revision 1.35 2000/08/11 02:43:50 matt +** moved frame irq stuff out of APU into here +** +** Revision 1.34 2000/08/11 01:42:43 matt +** change to OSD sound info interface +** +** Revision 1.33 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.32 2000/07/30 04:32:32 matt +** emulation of the NES frame IRQ +** +** Revision 1.31 2000/07/27 04:07:14 matt +** cleaned up the neighborhood lawns +** +** Revision 1.30 2000/07/27 03:59:52 neil +** pausing tweaks, during fullscreen toggles +** +** Revision 1.29 2000/07/27 03:19:22 matt +** just a little cleaner, that's all +** +** Revision 1.28 2000/07/27 02:55:23 matt +** nes_emulate went through detox +** +** Revision 1.27 2000/07/27 02:49:18 matt +** cleaner flow in nes_emulate +** +** Revision 1.26 2000/07/27 01:17:09 matt +** nes_insertrom -> nes_insertcart +** +** Revision 1.25 2000/07/26 21:36:14 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.24 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.23 2000/07/24 04:32:40 matt +** autoframeskip bugfix +** +** Revision 1.22 2000/07/23 15:13:48 matt +** apu API change, autoframeskip part of nes_t struct +** +** Revision 1.21 2000/07/21 02:44:41 matt +** merged osd_getinput and osd_gethostinput +** +** Revision 1.20 2000/07/17 05:12:55 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.19 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.18 2000/07/15 23:51:23 matt +** hack for certain filthy NES titles +** +** Revision 1.17 2000/07/11 04:31:54 matt +** less magic number nastiness for screen dimensions +** +** Revision 1.16 2000/07/11 02:38:25 matt +** encapsulated memory address handlers into nes/nsf +** +** Revision 1.15 2000/07/10 13:50:49 matt +** added function nes_irq() +** +** Revision 1.14 2000/07/10 05:27:55 matt +** cleaned up mapper-specific callbacks +** +** Revision 1.13 2000/07/09 03:43:26 matt +** minor changes to gui handling +** +** Revision 1.12 2000/07/06 16:42:23 matt +** updated for new video driver +** +** Revision 1.11 2000/07/05 19:57:36 neil +** __GNUC -> __DJGPP in nes.c +** +** Revision 1.10 2000/07/05 12:23:03 matt +** removed unnecessary references +** +** Revision 1.9 2000/07/04 23:12:34 matt +** memory protection handlers +** +** Revision 1.8 2000/07/04 04:58:29 matt +** dynamic memory range handlers +** +** Revision 1.7 2000/06/26 04:58:51 matt +** minor bugfix +** +** Revision 1.6 2000/06/20 20:42:12 matt +** fixed some NULL pointer problems +** +** Revision 1.5 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes.h new file mode 100755 index 0000000..dca6d69 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes.h @@ -0,0 +1,221 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes.h +** +** NES hardware related definitions / prototypes +** $Id: nes.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_H_ +#define _NES_H_ + +#include "noftypes.h" +#include "nes_apu.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes_rom.h" +#include "nes6502.h" +#include "bitmap.h" + +/* Visible (NTSC) screen height */ +#ifndef NES_VISIBLE_HEIGHT +#define NES_VISIBLE_HEIGHT 224 +#endif /* !NES_VISIBLE_HEIGHT */ +#define NES_SCREEN_WIDTH 256 +#define NES_SCREEN_HEIGHT 240 + +/* NTSC = 60Hz, PAL = 50Hz */ +#ifdef PAL +#define NES_REFRESH_RATE 50 +#else /* !PAL */ +#define NES_REFRESH_RATE 60 +#endif /* !PAL */ + +#define MAX_MEM_HANDLERS 32 + +enum +{ + SOFT_RESET, + HARD_RESET +}; + + +typedef struct nes_s +{ + /* hardware things */ + nes6502_context *cpu; + nes6502_memread readhandler[MAX_MEM_HANDLERS]; + nes6502_memwrite writehandler[MAX_MEM_HANDLERS]; + + ppu_t *ppu; + apu_t *apu; + mmc_t *mmc; + rominfo_t *rominfo; + + /* video buffer */ + /* For the ESP32, it costs too much memory to render to a separate buffer and blit that to the main buffer. + Instead, the code has been modified to directly grab the primary buffer from the video subsystem and render + there, saving us about 64K of memory. */ +// bitmap_t *vidbuf; + + bool fiq_occurred; + uint8 fiq_state; + int fiq_cycles; + + int scanline; + + /* Timing stuff */ + float scanline_cycles; + bool autoframeskip; + + /* control */ + bool poweroff; + bool pause; + +} nes_t; + + +extern int nes_isourfile(const char *filename); + +/* temp hack */ +extern nes_t *nes_getcontextptr(void); + +/* Function prototypes */ +extern void nes_getcontext(nes_t *machine); +extern void nes_setcontext(nes_t *machine); + +extern nes_t *nes_create(void); +extern void nes_destroy(nes_t **machine); +extern int nes_insertcart(const char *filename, nes_t *machine); + +extern void nes_setfiq(uint8 state); +extern void nes_nmi(void); +extern void nes_irq(void); +extern void nes_emulate(void); + +extern void nes_reset(int reset_type); + +extern void nes_poweroff(void); +extern void nes_togglepause(void); + +#endif /* _NES_H_ */ + +/* +** $Log: nes.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.8 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.7 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.6 2000/11/25 01:52:17 matt +** bool stinks sometimes +** +** Revision 1.5 2000/11/09 14:07:28 matt +** state load fixed, state save mostly fixed +** +** Revision 1.4 2000/10/29 14:36:45 matt +** nes_clearframeirq is static +** +** Revision 1.3 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.26 2000/10/23 17:51:10 matt +** adding fds support +** +** Revision 1.25 2000/10/23 15:53:08 matt +** better system handling +** +** Revision 1.24 2000/10/22 19:16:15 matt +** more sane timer ISR / autoframeskip +** +** Revision 1.23 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.22 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.21 2000/10/08 17:53:36 matt +** minor accuracy changes +** +** Revision 1.20 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.19 2000/09/08 11:57:29 matt +** no more nes_fiq +** +** Revision 1.18 2000/08/11 02:43:50 matt +** moved frame irq stuff out of APU into here +** +** Revision 1.17 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.16 2000/07/30 04:32:32 matt +** emulation of the NES frame IRQ +** +** Revision 1.15 2000/07/27 01:17:09 matt +** nes_insertrom -> nes_insertcart +** +** Revision 1.14 2000/07/26 21:36:16 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.13 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.12 2000/07/23 15:13:13 matt +** autoframeskip is now a member variable of nes_t +** +** Revision 1.11 2000/07/17 05:12:55 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.10 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.9 2000/07/16 09:48:58 neil +** Make visible height compile-time configurable in the Makefile +** +** Revision 1.8 2000/07/11 04:31:55 matt +** less magic number nastiness for screen dimensions +** +** Revision 1.7 2000/07/11 02:40:36 matt +** forgot to remove framecounter +** +** Revision 1.6 2000/07/11 02:38:25 matt +** encapsulated memory address handlers into nes/nsf +** +** Revision 1.5 2000/07/10 13:50:50 matt +** added function nes_irq() +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes6502.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes6502.c new file mode 100755 index 0000000..db2ee64 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes6502.c @@ -0,0 +1,2573 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes6502.c +** +** NES custom 6502 (2A03) CPU implementation +** $Id: nes6502.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + + +#include "noftypes.h" +#include "nes6502.h" +//#include "dis6502.h" + +//#define NES6502_DISASM + +#ifdef __GNUC__ +#define NES6502_JUMPTABLE +#endif /* __GNUC__ */ + + +#define ADD_CYCLES(x) \ +{ \ + remaining_cycles -= (x); \ + cpu.total_cycles += (x); \ +} + +/* +** Check to see if an index reg addition overflowed to next page +*/ +#define PAGE_CROSS_CHECK(addr, reg) \ +{ \ + if ((reg) > (uint8) (addr)) \ + ADD_CYCLES(1); \ +} + +#define EMPTY_READ(value) /* empty */ + +/* +** Addressing mode macros +*/ + +/* Immediate */ +#define IMMEDIATE_BYTE(value) \ +{ \ + value = bank_readbyte(PC++); \ +} + +/* Absolute */ +#define ABSOLUTE_ADDR(address) \ +{ \ + address = bank_readword(PC); \ + PC += 2; \ +} + +#define ABSOLUTE(address, value) \ +{ \ + ABSOLUTE_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define ABSOLUTE_BYTE(value) \ +{ \ + ABSOLUTE(temp, value); \ +} + +/* Absolute indexed X */ +#define ABS_IND_X_ADDR(address) \ +{ \ + ABSOLUTE_ADDR(address); \ + address = (address + X) & 0xFFFF; \ +} + +#define ABS_IND_X(address, value) \ +{ \ + ABS_IND_X_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define ABS_IND_X_BYTE(value) \ +{ \ + ABS_IND_X(temp, value); \ +} + +/* special page-cross check version for read instructions */ +#define ABS_IND_X_BYTE_READ(value) \ +{ \ + ABS_IND_X_ADDR(temp); \ + PAGE_CROSS_CHECK(temp, X); \ + value = mem_readbyte(temp); \ +} + +/* Absolute indexed Y */ +#define ABS_IND_Y_ADDR(address) \ +{ \ + ABSOLUTE_ADDR(address); \ + address = (address + Y) & 0xFFFF; \ +} + +#define ABS_IND_Y(address, value) \ +{ \ + ABS_IND_Y_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define ABS_IND_Y_BYTE(value) \ +{ \ + ABS_IND_Y(temp, value); \ +} + +/* special page-cross check version for read instructions */ +#define ABS_IND_Y_BYTE_READ(value) \ +{ \ + ABS_IND_Y_ADDR(temp); \ + PAGE_CROSS_CHECK(temp, Y); \ + value = mem_readbyte(temp); \ +} + +/* Zero-page */ +#define ZERO_PAGE_ADDR(address) \ +{ \ + IMMEDIATE_BYTE(address); \ +} + +#define ZERO_PAGE(address, value) \ +{ \ + ZERO_PAGE_ADDR(address); \ + value = ZP_READBYTE(address); \ +} + +#define ZERO_PAGE_BYTE(value) \ +{ \ + ZERO_PAGE(btemp, value); \ +} + +/* Zero-page indexed X */ +#define ZP_IND_X_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(address); \ + address += X; \ +} + +#define ZP_IND_X(address, value) \ +{ \ + ZP_IND_X_ADDR(address); \ + value = ZP_READBYTE(address); \ +} + +#define ZP_IND_X_BYTE(value) \ +{ \ + ZP_IND_X(btemp, value); \ +} + +/* Zero-page indexed Y */ +/* Not really an adressing mode, just for LDx/STx */ +#define ZP_IND_Y_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(address); \ + address += Y; \ +} + +#define ZP_IND_Y_BYTE(value) \ +{ \ + ZP_IND_Y_ADDR(btemp); \ + value = ZP_READBYTE(btemp); \ +} + +/* Indexed indirect */ +#define INDIR_X_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(btemp); \ + btemp += X; \ + address = zp_readword(btemp); \ +} + +#define INDIR_X(address, value) \ +{ \ + INDIR_X_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define INDIR_X_BYTE(value) \ +{ \ + INDIR_X(temp, value); \ +} + +/* Indirect indexed */ +#define INDIR_Y_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(btemp); \ + address = (zp_readword(btemp) + Y) & 0xFFFF; \ +} + +#define INDIR_Y(address, value) \ +{ \ + INDIR_Y_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define INDIR_Y_BYTE(value) \ +{ \ + INDIR_Y(temp, value); \ +} + +/* special page-cross check version for read instructions */ +#define INDIR_Y_BYTE_READ(value) \ +{ \ + INDIR_Y_ADDR(temp); \ + PAGE_CROSS_CHECK(temp, Y); \ + value = mem_readbyte(temp); \ +} + + + +/* Stack push/pull */ +#define PUSH(value) stack[S--] = (uint8) (value) +#define PULL() stack[++S] + + +/* +** flag register helper macros +*/ + +/* Theory: Z and N flags are set in just about every +** instruction, so we will just store the value in those +** flag variables, and mask out the irrelevant data when +** we need to check them (branches, etc). This makes the +** zero flag only really be 'set' when z_flag == 0. +** The rest of the flags are stored as true booleans. +*/ + +/* Scatter flags to separate variables */ +#define SCATTER_FLAGS(value) \ +{ \ + n_flag = (value) & N_FLAG; \ + v_flag = (value) & V_FLAG; \ + b_flag = (value) & B_FLAG; \ + d_flag = (value) & D_FLAG; \ + i_flag = (value) & I_FLAG; \ + z_flag = (0 == ((value) & Z_FLAG)); \ + c_flag = (value) & C_FLAG; \ +} + +/* Combine flags into flag register */ +#define COMBINE_FLAGS() \ +( \ + (n_flag & N_FLAG) \ + | (v_flag ? V_FLAG : 0) \ + | R_FLAG \ + | (b_flag ? B_FLAG : 0) \ + | (d_flag ? D_FLAG : 0) \ + | (i_flag ? I_FLAG : 0) \ + | (z_flag ? 0 : Z_FLAG) \ + | c_flag \ +) + +/* Set N and Z flags based on given value */ +#define SET_NZ_FLAGS(value) n_flag = z_flag = (value); + +/* For BCC, BCS, BEQ, BMI, BNE, BPL, BVC, BVS */ +#define RELATIVE_BRANCH(condition) \ +{ \ + if (condition) \ + { \ + IMMEDIATE_BYTE(btemp); \ + if (((int8) btemp + (PC & 0x00FF)) & 0x100) \ + ADD_CYCLES(1); \ + ADD_CYCLES(3); \ + PC += (int8) btemp; \ + } \ + else \ + { \ + PC++; \ + ADD_CYCLES(2); \ + } \ +} + +#define JUMP(address) \ +{ \ + PC = bank_readword((address)); \ +} + +/* +** Interrupt macros +*/ +#define NMI_PROC() \ +{ \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + b_flag = 0; \ + PUSH(COMBINE_FLAGS()); \ + i_flag = 1; \ + JUMP(NMI_VECTOR); \ +} + +#define IRQ_PROC() \ +{ \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + b_flag = 0; \ + PUSH(COMBINE_FLAGS()); \ + i_flag = 1; \ + JUMP(IRQ_VECTOR); \ +} + +/* +** Instruction macros +*/ + +/* Warning! NES CPU has no decimal mode, so by default this does no BCD! */ +#ifdef NES6502_DECIMAL +#define ADC(cycles, read_func) \ +{ \ + read_func(data); \ + if (d_flag) \ + { \ + temp = (A & 0x0F) + (data & 0x0F) + c_flag; \ + if (temp >= 10) \ + temp = (temp - 10) | 0x10; \ + temp += (A & 0xF0) + (data & 0xF0); \ + z_flag = (A + data + c_flag) & 0xFF; \ + n_flag = temp; \ + v_flag = ((~(A ^ data)) & (A ^ temp) & 0x80); \ + if (temp > 0x90) \ + { \ + temp += 0x60; \ + c_flag = 1; \ + } \ + else \ + { \ + c_flag = 0; \ + } \ + A = (uint8) temp; \ + } \ + else \ + { \ + temp = A + data + c_flag; \ + c_flag = (temp >> 8) & 1; \ + v_flag = ((~(A ^ data)) & (A ^ temp) & 0x80); \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A); \ + }\ + ADD_CYCLES(cycles); \ +} +#else +#define ADC(cycles, read_func) \ +{ \ + read_func(data); \ + temp = A + data + c_flag; \ + c_flag = (temp >> 8) & 1; \ + v_flag = ((~(A ^ data)) & (A ^ temp) & 0x80); \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} +#endif /* NES6502_DECIMAL */ + +/* undocumented */ +#define ANC(cycles, read_func) \ +{ \ + read_func(data); \ + A &= data; \ + c_flag = (n_flag & N_FLAG) >> 7; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define AND(cycles, read_func) \ +{ \ + read_func(data); \ + A &= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define ANE(cycles, read_func) \ +{ \ + read_func(data); \ + A = (A | 0xEE) & X & data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#ifdef NES6502_DECIMAL +#define ARR(cycles, read_func) \ +{ \ + read_func(data); \ + data &= A; \ + if (d_flag) \ + { \ + temp = (data >> 1) | (c_flag << 7); \ + SET_NZ_FLAGS(temp); \ + v_flag = (temp ^ data) & 0x40; \ + if (((data & 0x0F) + (data & 0x01)) > 5) \ + temp = (temp & 0xF0) | ((temp + 0x6) & 0x0F); \ + if (((data & 0xF0) + (data & 0x10)) > 0x50) \ + { \ + temp = (temp & 0x0F) | ((temp + 0x60) & 0xF0); \ + c_flag = 1; \ + } \ + else \ + { \ + c_flag = 0; \ + } \ + A = (uint8) temp; \ + } \ + else \ + { \ + A = (data >> 1) | (c_flag << 7); \ + SET_NZ_FLAGS(A); \ + c_flag = (A & 0x40) >> 6; \ + v_flag = ((A >> 6) ^ (A >> 5)) & 1; \ + }\ + ADD_CYCLES(cycles); \ +} +#else +#define ARR(cycles, read_func) \ +{ \ + read_func(data); \ + data &= A; \ + A = (data >> 1) | (c_flag << 7); \ + SET_NZ_FLAGS(A); \ + c_flag = (A & 0x40) >> 6; \ + v_flag = ((A >> 6) ^ (A >> 5)) & 1; \ + ADD_CYCLES(cycles); \ +} +#endif /* NES6502_DECIMAL */ + +#define ASL(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data >> 7; \ + data <<= 1; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define ASL_A() \ +{ \ + c_flag = A >> 7; \ + A <<= 1; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define ASR(cycles, read_func) \ +{ \ + read_func(data); \ + data &= A; \ + c_flag = data & 1; \ + A = data >> 1; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define BCC() \ +{ \ + RELATIVE_BRANCH(0 == c_flag); \ +} + +#define BCS() \ +{ \ + RELATIVE_BRANCH(0 != c_flag); \ +} + +#define BEQ() \ +{ \ + RELATIVE_BRANCH(0 == z_flag); \ +} + +/* bit 7/6 of data move into N/V flags */ +#define BIT(cycles, read_func) \ +{ \ + read_func(data); \ + n_flag = data; \ + v_flag = data & V_FLAG; \ + z_flag = data & A; \ + ADD_CYCLES(cycles); \ +} + +#define BMI() \ +{ \ + RELATIVE_BRANCH(n_flag & N_FLAG); \ +} + +#define BNE() \ +{ \ + RELATIVE_BRANCH(0 != z_flag); \ +} + +#define BPL() \ +{ \ + RELATIVE_BRANCH(0 == (n_flag & N_FLAG)); \ +} + +/* Software interrupt type thang */ +#define BRK() \ +{ \ + PC++; \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + b_flag = 1; \ + PUSH(COMBINE_FLAGS()); \ + i_flag = 1; \ + JUMP(IRQ_VECTOR); \ + ADD_CYCLES(7); \ +} + +#define BVC() \ +{ \ + RELATIVE_BRANCH(0 == v_flag); \ +} + +#define BVS() \ +{ \ + RELATIVE_BRANCH(0 != v_flag); \ +} + +#define CLC() \ +{ \ + c_flag = 0; \ + ADD_CYCLES(2); \ +} + +#define CLD() \ +{ \ + d_flag = 0; \ + ADD_CYCLES(2); \ +} + +#define CLI() \ +{ \ + i_flag = 0; \ + ADD_CYCLES(2); \ + if (cpu.int_pending && remaining_cycles > 0) \ + { \ + cpu.int_pending = 0; \ + IRQ_PROC(); \ + ADD_CYCLES(INT_CYCLES); \ + } \ +} + +#define CLV() \ +{ \ + v_flag = 0; \ + ADD_CYCLES(2); \ +} + +/* C is clear when data > A */ +#define _COMPARE(reg, value) \ +{ \ + temp = (reg) - (value); \ + c_flag = ((temp & 0x100) >> 8) ^ 1; \ + SET_NZ_FLAGS((uint8) temp); \ +} + +#define CMP(cycles, read_func) \ +{ \ + read_func(data); \ + _COMPARE(A, data); \ + ADD_CYCLES(cycles); \ +} + +#define CPX(cycles, read_func) \ +{ \ + read_func(data); \ + _COMPARE(X, data); \ + ADD_CYCLES(cycles); \ +} + +#define CPY(cycles, read_func) \ +{ \ + read_func(data); \ + _COMPARE(Y, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define DCP(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data--; \ + write_func(addr, data); \ + CMP(cycles, EMPTY_READ); \ +} + +#define DEC(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data--; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define DEX() \ +{ \ + X--; \ + SET_NZ_FLAGS(X); \ + ADD_CYCLES(2); \ +} + +#define DEY() \ +{ \ + Y--; \ + SET_NZ_FLAGS(Y); \ + ADD_CYCLES(2); \ +} + +/* undocumented (double-NOP) */ +#define DOP(cycles) \ +{ \ + PC++; \ + ADD_CYCLES(cycles); \ +} + +#define EOR(cycles, read_func) \ +{ \ + read_func(data); \ + A ^= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define INC(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data++; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define INX() \ +{ \ + X++; \ + SET_NZ_FLAGS(X); \ + ADD_CYCLES(2); \ +} + +#define INY() \ +{ \ + Y++; \ + SET_NZ_FLAGS(Y); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define ISB(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data++; \ + write_func(addr, data); \ + SBC(cycles, EMPTY_READ); \ +} + +/* TODO: make this a function callback */ +#ifdef NES6502_TESTOPS +#define JAM() \ +{ \ + cpu_Jam(); \ +} +#else /* !NES6502_TESTOPS */ +#define JAM() \ +{ \ + PC--; \ + cpu.jammed = true; \ + cpu.int_pending = 0; \ + ADD_CYCLES(2); \ +} +#endif /* !NES6502_TESTOPS */ + +#define JMP_INDIRECT() \ +{ \ + temp = bank_readword(PC); \ + /* bug in crossing page boundaries */ \ + if (0xFF == (temp & 0xFF)) \ + PC = (bank_readbyte(temp & 0xFF00) << 8) | bank_readbyte(temp); \ + else \ + JUMP(temp); \ + ADD_CYCLES(5); \ +} + +#define JMP_ABSOLUTE() \ +{ \ + JUMP(PC); \ + ADD_CYCLES(3); \ +} + +#define JSR() \ +{ \ + PC++; \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + JUMP(PC - 1); \ + ADD_CYCLES(6); \ +} + +/* undocumented */ +#define LAS(cycles, read_func) \ +{ \ + read_func(data); \ + A = X = S = (S & data); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define LAX(cycles, read_func) \ +{ \ + read_func(A); \ + X = A; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define LDA(cycles, read_func) \ +{ \ + read_func(A); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define LDX(cycles, read_func) \ +{ \ + read_func(X); \ + SET_NZ_FLAGS(X);\ + ADD_CYCLES(cycles); \ +} + +#define LDY(cycles, read_func) \ +{ \ + read_func(Y); \ + SET_NZ_FLAGS(Y);\ + ADD_CYCLES(cycles); \ +} + +#define LSR(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data & 1; \ + data >>= 1; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define LSR_A() \ +{ \ + c_flag = A & 1; \ + A >>= 1; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define LXA(cycles, read_func) \ +{ \ + read_func(data); \ + A = X = ((A | 0xEE) & data); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define NOP() \ +{ \ + ADD_CYCLES(2); \ +} + +#define ORA(cycles, read_func) \ +{ \ + read_func(data); \ + A |= data; \ + SET_NZ_FLAGS(A);\ + ADD_CYCLES(cycles); \ +} + +#define PHA() \ +{ \ + PUSH(A); \ + ADD_CYCLES(3); \ +} + +#define PHP() \ +{ \ + /* B flag is pushed on stack as well */ \ + PUSH(COMBINE_FLAGS() | B_FLAG); \ + ADD_CYCLES(3); \ +} + +#define PLA() \ +{ \ + A = PULL(); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(4); \ +} + +#define PLP() \ +{ \ + btemp = PULL(); \ + SCATTER_FLAGS(btemp); \ + ADD_CYCLES(4); \ +} + +/* undocumented */ +#define RLA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag; \ + c_flag = data >> 7; \ + data = (data << 1) | btemp; \ + write_func(addr, data); \ + A &= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* 9-bit rotation (carry flag used for rollover) */ +#define ROL(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag; \ + c_flag = data >> 7; \ + data = (data << 1) | btemp; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define ROL_A() \ +{ \ + btemp = c_flag; \ + c_flag = A >> 7; \ + A = (A << 1) | btemp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +#define ROR(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag << 7; \ + c_flag = data & 1; \ + data = (data >> 1) | btemp; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define ROR_A() \ +{ \ + btemp = c_flag << 7; \ + c_flag = A & 1; \ + A = (A >> 1) | btemp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define RRA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag << 7; \ + c_flag = data & 1; \ + data = (data >> 1) | btemp; \ + write_func(addr, data); \ + ADC(cycles, EMPTY_READ); \ +} + +#define RTI() \ +{ \ + btemp = PULL(); \ + SCATTER_FLAGS(btemp); \ + PC = PULL(); \ + PC |= PULL() << 8; \ + ADD_CYCLES(6); \ + if (0 == i_flag && cpu.int_pending && remaining_cycles > 0) \ + { \ + cpu.int_pending = 0; \ + IRQ_PROC(); \ + ADD_CYCLES(INT_CYCLES); \ + } \ +} + +#define RTS() \ +{ \ + PC = PULL(); \ + PC = (PC | (PULL() << 8)) + 1; \ + ADD_CYCLES(6); \ +} + +/* undocumented */ +#define SAX(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = A & X; \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* Warning! NES CPU has no decimal mode, so by default this does no BCD! */ +#ifdef NES6502_DECIMAL +#define SBC(cycles, read_func) \ +{ \ + read_func(data); \ + temp = A - data - (c_flag ^ 1); \ + if (d_flag) \ + { \ + uint8 al, ah; \ + al = (A & 0x0F) - (data & 0x0F) - (c_flag ^ 1); \ + ah = (A >> 4) - (data >> 4); \ + if (al & 0x10) \ + { \ + al -= 6; \ + ah--; \ + } \ + if (ah & 0x10) \ + { \ + ah -= 6; \ + c_flag = 0; \ + } \ + else \ + { \ + c_flag = 1; \ + } \ + v_flag = (A ^ temp) & (A ^ data) & 0x80; \ + SET_NZ_FLAGS(temp & 0xFF); \ + A = (ah << 4) | (al & 0x0F); \ + } \ + else \ + { \ + v_flag = (A ^ temp) & (A ^ data) & 0x80; \ + c_flag = ((temp & 0x100) >> 8) ^ 1; \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A & 0xFF); \ + } \ + ADD_CYCLES(cycles); \ +} +#else +#define SBC(cycles, read_func) \ +{ \ + read_func(data); \ + temp = A - data - (c_flag ^ 1); \ + v_flag = (A ^ data) & (A ^ temp) & 0x80; \ + c_flag = ((temp >> 8) & 1) ^ 1; \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} +#endif /* NES6502_DECIMAL */ + +/* undocumented */ +#define SBX(cycles, read_func) \ +{ \ + read_func(data); \ + temp = (A & X) - data; \ + c_flag = ((temp >> 8) & 1) ^ 1; \ + X = temp & 0xFF; \ + SET_NZ_FLAGS(X); \ + ADD_CYCLES(cycles); \ +} + +#define SEC() \ +{ \ + c_flag = 1; \ + ADD_CYCLES(2); \ +} + +#define SED() \ +{ \ + d_flag = 1; \ + ADD_CYCLES(2); \ +} + +#define SEI() \ +{ \ + i_flag = 1; \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define SHA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = A & X & ((uint8) ((addr >> 8) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SHS(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + S = A & X; \ + data = S & ((uint8) ((addr >> 8) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SHX(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = X & ((uint8) ((addr >> 8) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SHY(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = Y & ((uint8) ((addr >> 8 ) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SLO(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data >> 7; \ + data <<= 1; \ + write_func(addr, data); \ + A |= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SRE(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data & 1; \ + data >>= 1; \ + write_func(addr, data); \ + A ^= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define STA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + write_func(addr, A); \ + ADD_CYCLES(cycles); \ +} + +#define STX(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + write_func(addr, X); \ + ADD_CYCLES(cycles); \ +} + +#define STY(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + write_func(addr, Y); \ + ADD_CYCLES(cycles); \ +} + +#define TAX() \ +{ \ + X = A; \ + SET_NZ_FLAGS(X);\ + ADD_CYCLES(2); \ +} + +#define TAY() \ +{ \ + Y = A; \ + SET_NZ_FLAGS(Y);\ + ADD_CYCLES(2); \ +} + +/* undocumented (triple-NOP) */ +#define TOP() \ +{ \ + PC += 2; \ + ADD_CYCLES(4); \ +} + +#define TSX() \ +{ \ + X = S; \ + SET_NZ_FLAGS(X);\ + ADD_CYCLES(2); \ +} + +#define TXA() \ +{ \ + A = X; \ + SET_NZ_FLAGS(A);\ + ADD_CYCLES(2); \ +} + +#define TXS() \ +{ \ + S = X; \ + ADD_CYCLES(2); \ +} + +#define TYA() \ +{ \ + A = Y; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + + + +/* internal CPU context */ +static nes6502_context cpu; +static int remaining_cycles = 0; /* so we can release timeslice */ +/* memory region pointers */ +static uint8 *ram = NULL, *stack = NULL; +static uint8 null_page[NES6502_BANKSIZE]; + + +/* +** Zero-page helper macros +*/ + +#define ZP_READBYTE(addr) ram[(addr)] +#define ZP_WRITEBYTE(addr, value) ram[(addr)] = (uint8) (value) + +#ifdef HOST_LITTLE_ENDIAN + +/* NOTE: following two functions will fail on architectures +** which do not support byte alignment +*/ +INLINE uint32 zp_readword(register uint8 address) +{ + return (uint32) (*(uint16 *)(ram + address)); +} + +INLINE uint32 bank_readword(register uint32 address) +{ + /* technically, this should fail if the address is $xFFF, but + ** any code that does this would be suspect anyway, as it would + ** be fetching a word across page boundaries, which only would + ** make sense if the banks were physically consecutive. + */ + return (uint32) (*(uint16 *)(cpu.mem_page[address >> NES6502_BANKSHIFT] + (address & NES6502_BANKMASK))); +} + +#else /* !HOST_LITTLE_ENDIAN */ + +INLINE uint32 zp_readword(register uint8 address) +{ +#ifdef TARGET_CPU_PPC + return __lhbrx(ram, address); +#else /* !TARGET_CPU_PPC */ + uint32 x = (uint32) *(uint16 *)(ram + address); + return (x << 8) | (x >> 8); +#endif /* !TARGET_CPU_PPC */ +} + +INLINE uint32 bank_readword(register uint32 address) +{ +#ifdef TARGET_CPU_PPC + return __lhbrx(cpu.mem_page[address >> NES6502_BANKSHIFT], address & NES6502_BANKMASK); +#else /* !TARGET_CPU_PPC */ + uint32 x = (uint32) *(uint16 *)(cpu.mem_page[address >> NES6502_BANKSHIFT] + (address & NES6502_BANKMASK)); + return (x << 8) | (x >> 8); +#endif /* !TARGET_CPU_PPC */ +} + +#endif /* !HOST_LITTLE_ENDIAN */ + +INLINE uint8 bank_readbyte(register uint32 address) +{ + return cpu.mem_page[address >> NES6502_BANKSHIFT][address & NES6502_BANKMASK]; +} + +INLINE void bank_writebyte(register uint32 address, register uint8 value) +{ + cpu.mem_page[address >> NES6502_BANKSHIFT][address & NES6502_BANKMASK] = value; +} + +/* read a byte of 6502 memory */ +static uint8 mem_readbyte(uint32 address) +{ + nes6502_memread *mr; + + /* TODO: following 2 cases are N2A03-specific */ + if (address < 0x800) + { + /* RAM */ + return ram[address]; + } + else if (address >= 0x8000) + { + /* always paged memory */ + return bank_readbyte(address); + } + /* check memory range handlers */ + else + { + for (mr = cpu.read_handler; mr->min_range != 0xFFFFFFFF; mr++) + { + if (address >= mr->min_range && address <= mr->max_range) + return mr->read_func(address); + } + } + + /* return paged memory */ + return bank_readbyte(address); +} + +/* write a byte of data to 6502 memory */ +static void mem_writebyte(uint32 address, uint8 value) +{ + nes6502_memwrite *mw; + + /* RAM */ + if (address < 0x800) + { + ram[address] = value; + return; + } + /* check memory range handlers */ + else + { + for (mw = cpu.write_handler; mw->min_range != 0xFFFFFFFF; mw++) + { + if (address >= mw->min_range && address <= mw->max_range) + { + mw->write_func(address, value); + return; + } + } + } + + /* write to paged memory */ + bank_writebyte(address, value); +} + +/* set the current context */ +void nes6502_setcontext(nes6502_context *context) +{ + int loop; + + ASSERT(context); + + cpu = *context; + + /* set dead page for all pages not pointed at anything */ + for (loop = 0; loop < NES6502_NUMBANKS; loop++) + { + if (NULL == cpu.mem_page[loop]) + cpu.mem_page[loop] = null_page; + } + + ram = cpu.mem_page[0]; /* quick zero-page/RAM references */ + stack = ram + STACK_OFFSET; +} + +/* get the current context */ +void nes6502_getcontext(nes6502_context *context) +{ + int loop; + + ASSERT(context); + + *context = cpu; + + /* reset dead pages to null */ + for (loop = 0; loop < NES6502_NUMBANKS; loop++) + { + if (null_page == context->mem_page[loop]) + context->mem_page[loop] = NULL; + } +} + +/* DMA a byte of data from ROM */ +uint8 nes6502_getbyte(uint32 address) +{ + return bank_readbyte(address); +} + +/* get number of elapsed cycles */ +uint32 nes6502_getcycles(bool reset_flag) +{ + uint32 cycles = cpu.total_cycles; + + if (reset_flag) + cpu.total_cycles = 0; + + return cycles; +} + +#define GET_GLOBAL_REGS() \ +{ \ + PC = cpu.pc_reg; \ + A = cpu.a_reg; \ + X = cpu.x_reg; \ + Y = cpu.y_reg; \ + SCATTER_FLAGS(cpu.p_reg); \ + S = cpu.s_reg; \ +} + +#define STORE_LOCAL_REGS() \ +{ \ + cpu.pc_reg = PC; \ + cpu.a_reg = A; \ + cpu.x_reg = X; \ + cpu.y_reg = Y; \ + cpu.p_reg = COMBINE_FLAGS(); \ + cpu.s_reg = S; \ +} + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +#ifdef NES6502_JUMPTABLE + +#define OPCODE_BEGIN(xx) op##xx: +#ifdef NES6502_DISASM + +#define OPCODE_END \ + if (remaining_cycles <= 0) \ + goto end_execute; \ + log_printf(nes6502_disasm(PC, COMBINE_FLAGS(), A, X, Y, S)); \ + goto *opcode_table[bank_readbyte(PC++)]; + +#else /* !NES6520_DISASM */ + +#define OPCODE_END \ + if (remaining_cycles <= 0) \ + goto end_execute; \ + goto *opcode_table[bank_readbyte(PC++)]; + +#endif /* !NES6502_DISASM */ + +#else /* !NES6502_JUMPTABLE */ +#define OPCODE_BEGIN(xx) case 0x##xx: +#define OPCODE_END break; +#endif /* !NES6502_JUMPTABLE */ + + +/* Execute instructions until count expires +** +** Returns the number of cycles *actually* executed, which will be +** anywhere from zero to timeslice_cycles + 6 +*/ +int nes6502_execute(int timeslice_cycles) +{ + int old_cycles = cpu.total_cycles; + + uint32 temp, addr; /* for macros */ + uint8 btemp, baddr; /* for macros */ + uint8 data; + + /* flags */ + uint8 n_flag, v_flag, b_flag; + uint8 d_flag, i_flag, z_flag, c_flag; + + /* local copies of regs */ + uint32 PC; + uint8 A, X, Y, S; + +#ifdef NES6502_JUMPTABLE + + static const void *opcode_table[256] = + { + &&op00, &&op01, &&op02, &&op03, &&op04, &&op05, &&op06, &&op07, + &&op08, &&op09, &&op0A, &&op0B, &&op0C, &&op0D, &&op0E, &&op0F, + &&op10, &&op11, &&op12, &&op13, &&op14, &&op15, &&op16, &&op17, + &&op18, &&op19, &&op1A, &&op1B, &&op1C, &&op1D, &&op1E, &&op1F, + &&op20, &&op21, &&op22, &&op23, &&op24, &&op25, &&op26, &&op27, + &&op28, &&op29, &&op2A, &&op2B, &&op2C, &&op2D, &&op2E, &&op2F, + &&op30, &&op31, &&op32, &&op33, &&op34, &&op35, &&op36, &&op37, + &&op38, &&op39, &&op3A, &&op3B, &&op3C, &&op3D, &&op3E, &&op3F, + &&op40, &&op41, &&op42, &&op43, &&op44, &&op45, &&op46, &&op47, + &&op48, &&op49, &&op4A, &&op4B, &&op4C, &&op4D, &&op4E, &&op4F, + &&op50, &&op51, &&op52, &&op53, &&op54, &&op55, &&op56, &&op57, + &&op58, &&op59, &&op5A, &&op5B, &&op5C, &&op5D, &&op5E, &&op5F, + &&op60, &&op61, &&op62, &&op63, &&op64, &&op65, &&op66, &&op67, + &&op68, &&op69, &&op6A, &&op6B, &&op6C, &&op6D, &&op6E, &&op6F, + &&op70, &&op71, &&op72, &&op73, &&op74, &&op75, &&op76, &&op77, + &&op78, &&op79, &&op7A, &&op7B, &&op7C, &&op7D, &&op7E, &&op7F, + &&op80, &&op81, &&op82, &&op83, &&op84, &&op85, &&op86, &&op87, + &&op88, &&op89, &&op8A, &&op8B, &&op8C, &&op8D, &&op8E, &&op8F, + &&op90, &&op91, &&op92, &&op93, &&op94, &&op95, &&op96, &&op97, + &&op98, &&op99, &&op9A, &&op9B, &&op9C, &&op9D, &&op9E, &&op9F, + &&opA0, &&opA1, &&opA2, &&opA3, &&opA4, &&opA5, &&opA6, &&opA7, + &&opA8, &&opA9, &&opAA, &&opAB, &&opAC, &&opAD, &&opAE, &&opAF, + &&opB0, &&opB1, &&opB2, &&opB3, &&opB4, &&opB5, &&opB6, &&opB7, + &&opB8, &&opB9, &&opBA, &&opBB, &&opBC, &&opBD, &&opBE, &&opBF, + &&opC0, &&opC1, &&opC2, &&opC3, &&opC4, &&opC5, &&opC6, &&opC7, + &&opC8, &&opC9, &&opCA, &&opCB, &&opCC, &&opCD, &&opCE, &&opCF, + &&opD0, &&opD1, &&opD2, &&opD3, &&opD4, &&opD5, &&opD6, &&opD7, + &&opD8, &&opD9, &&opDA, &&opDB, &&opDC, &&opDD, &&opDE, &&opDF, + &&opE0, &&opE1, &&opE2, &&opE3, &&opE4, &&opE5, &&opE6, &&opE7, + &&opE8, &&opE9, &&opEA, &&opEB, &&opEC, &&opED, &&opEE, &&opEF, + &&opF0, &&opF1, &&opF2, &&opF3, &&opF4, &&opF5, &&opF6, &&opF7, + &&opF8, &&opF9, &&opFA, &&opFB, &&opFC, &&opFD, &&opFE, &&opFF + }; + +#endif /* NES6502_JUMPTABLE */ + + remaining_cycles = timeslice_cycles; + + GET_GLOBAL_REGS(); + + /* check for DMA cycle burning */ + if (cpu.burn_cycles && remaining_cycles > 0) + { + int burn_for; + + burn_for = MIN(remaining_cycles, cpu.burn_cycles); + ADD_CYCLES(burn_for); + cpu.burn_cycles -= burn_for; + } + + if (0 == i_flag && cpu.int_pending && remaining_cycles > 0) + { + cpu.int_pending = 0; + IRQ_PROC(); + ADD_CYCLES(INT_CYCLES); + } + +#ifdef NES6502_JUMPTABLE + /* fetch first instruction */ + OPCODE_END + +#else /* !NES6502_JUMPTABLE */ + + /* Continue until we run out of cycles */ + while (remaining_cycles > 0) + { +#ifdef NES6502_DISASM + log_printf(nes6502_disasm(PC, COMBINE_FLAGS(), A, X, Y, S)); +#endif /* NES6502_DISASM */ + + /* Fetch and execute instruction */ + switch (bank_readbyte(PC++)) + { +#endif /* !NES6502_JUMPTABLE */ + + OPCODE_BEGIN(00) /* BRK */ + BRK(); + OPCODE_END + + OPCODE_BEGIN(01) /* ORA ($nn,X) */ + ORA(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(02) /* JAM */ + OPCODE_BEGIN(12) /* JAM */ + OPCODE_BEGIN(22) /* JAM */ + OPCODE_BEGIN(32) /* JAM */ + OPCODE_BEGIN(42) /* JAM */ + OPCODE_BEGIN(52) /* JAM */ + OPCODE_BEGIN(62) /* JAM */ + OPCODE_BEGIN(72) /* JAM */ + OPCODE_BEGIN(92) /* JAM */ + OPCODE_BEGIN(B2) /* JAM */ + OPCODE_BEGIN(D2) /* JAM */ + OPCODE_BEGIN(F2) /* JAM */ + JAM(); + /* kill the CPU */ + remaining_cycles = 0; + OPCODE_END + + OPCODE_BEGIN(03) /* SLO ($nn,X) */ + SLO(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(04) /* NOP $nn */ + OPCODE_BEGIN(44) /* NOP $nn */ + OPCODE_BEGIN(64) /* NOP $nn */ + DOP(3); + OPCODE_END + + OPCODE_BEGIN(05) /* ORA $nn */ + ORA(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(06) /* ASL $nn */ + ASL(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(07) /* SLO $nn */ + SLO(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(08) /* PHP */ + PHP(); + OPCODE_END + + OPCODE_BEGIN(09) /* ORA #$nn */ + ORA(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(0A) /* ASL A */ + ASL_A(); + OPCODE_END + + OPCODE_BEGIN(0B) /* ANC #$nn */ + ANC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(0C) /* NOP $nnnn */ + TOP(); + OPCODE_END + + OPCODE_BEGIN(0D) /* ORA $nnnn */ + ORA(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(0E) /* ASL $nnnn */ + ASL(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(0F) /* SLO $nnnn */ + SLO(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(10) /* BPL $nnnn */ + BPL(); + OPCODE_END + + OPCODE_BEGIN(11) /* ORA ($nn),Y */ + ORA(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(13) /* SLO ($nn),Y */ + SLO(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(14) /* NOP $nn,X */ + OPCODE_BEGIN(34) /* NOP */ + OPCODE_BEGIN(54) /* NOP $nn,X */ + OPCODE_BEGIN(74) /* NOP $nn,X */ + OPCODE_BEGIN(D4) /* NOP $nn,X */ + OPCODE_BEGIN(F4) /* NOP ($nn,X) */ + DOP(4); + OPCODE_END + + OPCODE_BEGIN(15) /* ORA $nn,X */ + ORA(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(16) /* ASL $nn,X */ + ASL(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(17) /* SLO $nn,X */ + SLO(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(18) /* CLC */ + CLC(); + OPCODE_END + + OPCODE_BEGIN(19) /* ORA $nnnn,Y */ + ORA(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(1A) /* NOP */ + OPCODE_BEGIN(3A) /* NOP */ + OPCODE_BEGIN(5A) /* NOP */ + OPCODE_BEGIN(7A) /* NOP */ + OPCODE_BEGIN(DA) /* NOP */ + OPCODE_BEGIN(FA) /* NOP */ + NOP(); + OPCODE_END + + OPCODE_BEGIN(1B) /* SLO $nnnn,Y */ + SLO(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(1C) /* NOP $nnnn,X */ + OPCODE_BEGIN(3C) /* NOP $nnnn,X */ + OPCODE_BEGIN(5C) /* NOP $nnnn,X */ + OPCODE_BEGIN(7C) /* NOP $nnnn,X */ + OPCODE_BEGIN(DC) /* NOP $nnnn,X */ + OPCODE_BEGIN(FC) /* NOP $nnnn,X */ + TOP(); + OPCODE_END + + OPCODE_BEGIN(1D) /* ORA $nnnn,X */ + ORA(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(1E) /* ASL $nnnn,X */ + ASL(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(1F) /* SLO $nnnn,X */ + SLO(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(20) /* JSR $nnnn */ + JSR(); + OPCODE_END + + OPCODE_BEGIN(21) /* AND ($nn,X) */ + AND(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(23) /* RLA ($nn,X) */ + RLA(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(24) /* BIT $nn */ + BIT(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(25) /* AND $nn */ + AND(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(26) /* ROL $nn */ + ROL(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(27) /* RLA $nn */ + RLA(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(28) /* PLP */ + PLP(); + OPCODE_END + + OPCODE_BEGIN(29) /* AND #$nn */ + AND(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2A) /* ROL A */ + ROL_A(); + OPCODE_END + + OPCODE_BEGIN(2B) /* ANC #$nn */ + ANC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2C) /* BIT $nnnn */ + BIT(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2D) /* AND $nnnn */ + AND(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2E) /* ROL $nnnn */ + ROL(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(2F) /* RLA $nnnn */ + RLA(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(30) /* BMI $nnnn */ + BMI(); + OPCODE_END + + OPCODE_BEGIN(31) /* AND ($nn),Y */ + AND(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(33) /* RLA ($nn),Y */ + RLA(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(35) /* AND $nn,X */ + AND(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(36) /* ROL $nn,X */ + ROL(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(37) /* RLA $nn,X */ + RLA(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(38) /* SEC */ + SEC(); + OPCODE_END + + OPCODE_BEGIN(39) /* AND $nnnn,Y */ + AND(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(3B) /* RLA $nnnn,Y */ + RLA(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(3D) /* AND $nnnn,X */ + AND(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(3E) /* ROL $nnnn,X */ + ROL(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(3F) /* RLA $nnnn,X */ + RLA(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(40) /* RTI */ + RTI(); + OPCODE_END + + OPCODE_BEGIN(41) /* EOR ($nn,X) */ + EOR(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(43) /* SRE ($nn,X) */ + SRE(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(45) /* EOR $nn */ + EOR(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(46) /* LSR $nn */ + LSR(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(47) /* SRE $nn */ + SRE(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(48) /* PHA */ + PHA(); + OPCODE_END + + OPCODE_BEGIN(49) /* EOR #$nn */ + EOR(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(4A) /* LSR A */ + LSR_A(); + OPCODE_END + + OPCODE_BEGIN(4B) /* ASR #$nn */ + ASR(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(4C) /* JMP $nnnn */ + JMP_ABSOLUTE(); + OPCODE_END + + OPCODE_BEGIN(4D) /* EOR $nnnn */ + EOR(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(4E) /* LSR $nnnn */ + LSR(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(4F) /* SRE $nnnn */ + SRE(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(50) /* BVC $nnnn */ + BVC(); + OPCODE_END + + OPCODE_BEGIN(51) /* EOR ($nn),Y */ + EOR(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(53) /* SRE ($nn),Y */ + SRE(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(55) /* EOR $nn,X */ + EOR(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(56) /* LSR $nn,X */ + LSR(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(57) /* SRE $nn,X */ + SRE(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(58) /* CLI */ + CLI(); + OPCODE_END + + OPCODE_BEGIN(59) /* EOR $nnnn,Y */ + EOR(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(5B) /* SRE $nnnn,Y */ + SRE(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(5D) /* EOR $nnnn,X */ + EOR(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(5E) /* LSR $nnnn,X */ + LSR(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(5F) /* SRE $nnnn,X */ + SRE(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(60) /* RTS */ + RTS(); + OPCODE_END + + OPCODE_BEGIN(61) /* ADC ($nn,X) */ + ADC(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(63) /* RRA ($nn,X) */ + RRA(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(65) /* ADC $nn */ + ADC(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(66) /* ROR $nn */ + ROR(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(67) /* RRA $nn */ + RRA(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(68) /* PLA */ + PLA(); + OPCODE_END + + OPCODE_BEGIN(69) /* ADC #$nn */ + ADC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(6A) /* ROR A */ + ROR_A(); + OPCODE_END + + OPCODE_BEGIN(6B) /* ARR #$nn */ + ARR(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(6C) /* JMP ($nnnn) */ + JMP_INDIRECT(); + OPCODE_END + + OPCODE_BEGIN(6D) /* ADC $nnnn */ + ADC(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(6E) /* ROR $nnnn */ + ROR(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(6F) /* RRA $nnnn */ + RRA(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(70) /* BVS $nnnn */ + BVS(); + OPCODE_END + + OPCODE_BEGIN(71) /* ADC ($nn),Y */ + ADC(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(73) /* RRA ($nn),Y */ + RRA(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(75) /* ADC $nn,X */ + ADC(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(76) /* ROR $nn,X */ + ROR(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(77) /* RRA $nn,X */ + RRA(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(78) /* SEI */ + SEI(); + OPCODE_END + + OPCODE_BEGIN(79) /* ADC $nnnn,Y */ + ADC(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(7B) /* RRA $nnnn,Y */ + RRA(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(7D) /* ADC $nnnn,X */ + ADC(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(7E) /* ROR $nnnn,X */ + ROR(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(7F) /* RRA $nnnn,X */ + RRA(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(80) /* NOP #$nn */ + OPCODE_BEGIN(82) /* NOP #$nn */ + OPCODE_BEGIN(89) /* NOP #$nn */ + OPCODE_BEGIN(C2) /* NOP #$nn */ + OPCODE_BEGIN(E2) /* NOP #$nn */ + DOP(2); + OPCODE_END + + OPCODE_BEGIN(81) /* STA ($nn,X) */ + STA(6, INDIR_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(83) /* SAX ($nn,X) */ + SAX(6, INDIR_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(84) /* STY $nn */ + STY(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(85) /* STA $nn */ + STA(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(86) /* STX $nn */ + STX(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(87) /* SAX $nn */ + SAX(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(88) /* DEY */ + DEY(); + OPCODE_END + + OPCODE_BEGIN(8A) /* TXA */ + TXA(); + OPCODE_END + + OPCODE_BEGIN(8B) /* ANE #$nn */ + ANE(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(8C) /* STY $nnnn */ + STY(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(8D) /* STA $nnnn */ + STA(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(8E) /* STX $nnnn */ + STX(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(8F) /* SAX $nnnn */ + SAX(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(90) /* BCC $nnnn */ + BCC(); + OPCODE_END + + OPCODE_BEGIN(91) /* STA ($nn),Y */ + STA(6, INDIR_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(93) /* SHA ($nn),Y */ + SHA(6, INDIR_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(94) /* STY $nn,X */ + STY(4, ZP_IND_X_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(95) /* STA $nn,X */ + STA(4, ZP_IND_X_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(96) /* STX $nn,Y */ + STX(4, ZP_IND_Y_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(97) /* SAX $nn,Y */ + SAX(4, ZP_IND_Y_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(98) /* TYA */ + TYA(); + OPCODE_END + + OPCODE_BEGIN(99) /* STA $nnnn,Y */ + STA(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9A) /* TXS */ + TXS(); + OPCODE_END + + OPCODE_BEGIN(9B) /* SHS $nnnn,Y */ + SHS(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9C) /* SHY $nnnn,X */ + SHY(5, ABS_IND_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9D) /* STA $nnnn,X */ + STA(5, ABS_IND_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9E) /* SHX $nnnn,Y */ + SHX(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9F) /* SHA $nnnn,Y */ + SHA(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(A0) /* LDY #$nn */ + LDY(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A1) /* LDA ($nn,X) */ + LDA(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(A2) /* LDX #$nn */ + LDX(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A3) /* LAX ($nn,X) */ + LAX(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(A4) /* LDY $nn */ + LDY(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A5) /* LDA $nn */ + LDA(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A6) /* LDX $nn */ + LDX(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A7) /* LAX $nn */ + LAX(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A8) /* TAY */ + TAY(); + OPCODE_END + + OPCODE_BEGIN(A9) /* LDA #$nn */ + LDA(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AA) /* TAX */ + TAX(); + OPCODE_END + + OPCODE_BEGIN(AB) /* LXA #$nn */ + LXA(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AC) /* LDY $nnnn */ + LDY(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AD) /* LDA $nnnn */ + LDA(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AE) /* LDX $nnnn */ + LDX(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AF) /* LAX $nnnn */ + LAX(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(B0) /* BCS $nnnn */ + BCS(); + OPCODE_END + + OPCODE_BEGIN(B1) /* LDA ($nn),Y */ + LDA(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(B3) /* LAX ($nn),Y */ + LAX(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(B4) /* LDY $nn,X */ + LDY(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(B5) /* LDA $nn,X */ + LDA(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(B6) /* LDX $nn,Y */ + LDX(4, ZP_IND_Y_BYTE); + OPCODE_END + + OPCODE_BEGIN(B7) /* LAX $nn,Y */ + LAX(4, ZP_IND_Y_BYTE); + OPCODE_END + + OPCODE_BEGIN(B8) /* CLV */ + CLV(); + OPCODE_END + + OPCODE_BEGIN(B9) /* LDA $nnnn,Y */ + LDA(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BA) /* TSX */ + TSX(); + OPCODE_END + + OPCODE_BEGIN(BB) /* LAS $nnnn,Y */ + LAS(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BC) /* LDY $nnnn,X */ + LDY(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BD) /* LDA $nnnn,X */ + LDA(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BE) /* LDX $nnnn,Y */ + LDX(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BF) /* LAX $nnnn,Y */ + LAX(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(C0) /* CPY #$nn */ + CPY(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(C1) /* CMP ($nn,X) */ + CMP(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(C3) /* DCP ($nn,X) */ + DCP(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(C4) /* CPY $nn */ + CPY(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(C5) /* CMP $nn */ + CMP(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(C6) /* DEC $nn */ + DEC(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(C7) /* DCP $nn */ + DCP(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(C8) /* INY */ + INY(); + OPCODE_END + + OPCODE_BEGIN(C9) /* CMP #$nn */ + CMP(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CA) /* DEX */ + DEX(); + OPCODE_END + + OPCODE_BEGIN(CB) /* SBX #$nn */ + SBX(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CC) /* CPY $nnnn */ + CPY(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CD) /* CMP $nnnn */ + CMP(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CE) /* DEC $nnnn */ + DEC(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(CF) /* DCP $nnnn */ + DCP(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(D0) /* BNE $nnnn */ + BNE(); + OPCODE_END + + OPCODE_BEGIN(D1) /* CMP ($nn),Y */ + CMP(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(D3) /* DCP ($nn),Y */ + DCP(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(D5) /* CMP $nn,X */ + CMP(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(D6) /* DEC $nn,X */ + DEC(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(D7) /* DCP $nn,X */ + DCP(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(D8) /* CLD */ + CLD(); + OPCODE_END + + OPCODE_BEGIN(D9) /* CMP $nnnn,Y */ + CMP(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(DB) /* DCP $nnnn,Y */ + DCP(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(DD) /* CMP $nnnn,X */ + CMP(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(DE) /* DEC $nnnn,X */ + DEC(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(DF) /* DCP $nnnn,X */ + DCP(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(E0) /* CPX #$nn */ + CPX(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(E1) /* SBC ($nn,X) */ + SBC(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(E3) /* ISB ($nn,X) */ + ISB(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(E4) /* CPX $nn */ + CPX(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(E5) /* SBC $nn */ + SBC(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(E6) /* INC $nn */ + INC(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(E7) /* ISB $nn */ + ISB(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(E8) /* INX */ + INX(); + OPCODE_END + + OPCODE_BEGIN(E9) /* SBC #$nn */ + OPCODE_BEGIN(EB) /* USBC #$nn */ + SBC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(EA) /* NOP */ + NOP(); + OPCODE_END + + OPCODE_BEGIN(EC) /* CPX $nnnn */ + CPX(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(ED) /* SBC $nnnn */ + SBC(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(EE) /* INC $nnnn */ + INC(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(EF) /* ISB $nnnn */ + ISB(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(F0) /* BEQ $nnnn */ + BEQ(); + OPCODE_END + + OPCODE_BEGIN(F1) /* SBC ($nn),Y */ + SBC(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(F3) /* ISB ($nn),Y */ + ISB(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(F5) /* SBC $nn,X */ + SBC(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(F6) /* INC $nn,X */ + INC(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(F7) /* ISB $nn,X */ + ISB(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(F8) /* SED */ + SED(); + OPCODE_END + + OPCODE_BEGIN(F9) /* SBC $nnnn,Y */ + SBC(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(FB) /* ISB $nnnn,Y */ + ISB(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(FD) /* SBC $nnnn,X */ + SBC(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(FE) /* INC $nnnn,X */ + INC(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(FF) /* ISB $nnnn,X */ + ISB(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + +#ifdef NES6502_JUMPTABLE +end_execute: + +#else /* !NES6502_JUMPTABLE */ + } + } +#endif /* !NES6502_JUMPTABLE */ + + /* store local copy of regs */ + STORE_LOCAL_REGS(); + + /* Return our actual amount of executed cycles */ + return (cpu.total_cycles - old_cycles); +} + +/* Issue a CPU Reset */ +void nes6502_reset(void) +{ + cpu.p_reg = Z_FLAG | R_FLAG | I_FLAG; /* Reserved bit always 1 */ + cpu.int_pending = 0; /* No pending interrupts */ + cpu.int_latency = 0; /* No latent interrupts */ + cpu.pc_reg = bank_readword(RESET_VECTOR); /* Fetch reset vector */ + cpu.burn_cycles = RESET_CYCLES; + cpu.jammed = false; +} + +/* following macro is used for below 2 functions */ +#define DECLARE_LOCAL_REGS \ + uint32 PC; \ + uint8 A, X, Y, S; \ + uint8 n_flag, v_flag, b_flag; \ + uint8 d_flag, i_flag, z_flag, c_flag; + +/* Non-maskable interrupt */ +void nes6502_nmi(void) +{ + DECLARE_LOCAL_REGS + + if (false == cpu.jammed) + { + GET_GLOBAL_REGS(); + NMI_PROC(); + cpu.burn_cycles += INT_CYCLES; + STORE_LOCAL_REGS(); + } +} + +/* Interrupt request */ +void nes6502_irq(void) +{ + DECLARE_LOCAL_REGS + + if (false == cpu.jammed) + { + GET_GLOBAL_REGS(); + if (0 == i_flag) + { + IRQ_PROC(); + cpu.burn_cycles += INT_CYCLES; + } + else + { + cpu.int_pending = 1; + } + STORE_LOCAL_REGS(); + } +} + +/* Set dead cycle period */ +void nes6502_burn(int cycles) +{ + cpu.burn_cycles += cycles; +} + +/* Release our timeslice */ +void nes6502_release(void) +{ + remaining_cycles = 0; +} + +/* +** $Log: nes6502.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:39 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.34 2000/11/27 19:33:07 matt +** concise interrupts +** +** Revision 1.33 2000/11/26 15:39:54 matt +** timing fixes +** +** Revision 1.32 2000/11/20 13:22:51 matt +** added note about word fetches across page boundaries +** +** Revision 1.31 2000/11/13 00:57:39 matt +** trying to add 1-instruction interrupt latency... and failing. +** +** Revision 1.30 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.29 2000/10/10 13:05:05 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.28 2000/10/08 17:55:41 matt +** check burn cycles before ints +** +** Revision 1.27 2000/09/15 03:42:32 matt +** nes6502_release to release current timeslice +** +** Revision 1.26 2000/09/15 03:16:17 matt +** optimized C flag handling, and ADC/SBC/ROL/ROR macros +** +** Revision 1.25 2000/09/14 02:12:03 matt +** disassembling now works with goto table, and removed memcpy from context get/set +** +** Revision 1.24 2000/09/11 03:55:57 matt +** cosmetics +** +** Revision 1.23 2000/09/11 01:45:45 matt +** flag optimizations. this thing is fast! +** +** Revision 1.22 2000/09/08 13:29:25 matt +** added switch()-less execution for gcc +** +** Revision 1.21 2000/09/08 11:54:48 matt +** optimize +** +** Revision 1.20 2000/09/07 21:58:18 matt +** api change for nes6502_burn, optimized core +** +** Revision 1.19 2000/09/07 13:39:01 matt +** resolved a few conflicts +** +** Revision 1.18 2000/09/07 01:34:55 matt +** nes6502_init deprecated, moved flag regs to separate vars +** +** Revision 1.17 2000/08/31 13:26:35 matt +** added DISASM flag, to sync with asm version +** +** Revision 1.16 2000/08/29 05:38:00 matt +** removed faulty failure note +** +** Revision 1.15 2000/08/28 12:53:44 matt +** fixes for disassembler +** +** Revision 1.14 2000/08/28 04:32:28 matt +** naming convention changes +** +** Revision 1.13 2000/08/28 01:46:15 matt +** moved some of them defines around, cleaned up jamming code +** +** Revision 1.12 2000/08/16 04:56:37 matt +** accurate CPU jamming, added dead page emulation +** +** Revision 1.11 2000/07/30 04:32:00 matt +** now emulates the NES frame IRQ +** +** Revision 1.10 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.9 2000/07/11 04:27:18 matt +** new disassembler calling convention +** +** Revision 1.8 2000/07/10 05:26:38 matt +** cosmetic +** +** Revision 1.7 2000/07/06 17:10:51 matt +** minor (er, spelling) error fixed +** +** Revision 1.6 2000/07/04 04:50:07 matt +** minor change to includes +** +** Revision 1.5 2000/07/03 02:18:16 matt +** added a few notes about potential failure cases +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes6502.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes6502.h new file mode 100755 index 0000000..7a2d040 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes6502.h @@ -0,0 +1,175 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes6502.h +** +** NES custom 6502 CPU definitions / prototypes +** $Id: nes6502.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +/* NOTE: 16-bit addresses avoided like the plague: use 32-bit values +** wherever humanly possible +*/ +#ifndef _NES6502_H_ +#define _NES6502_H_ + +#include "noftypes.h" + +/* Define this to enable decimal mode in ADC / SBC (not needed in NES) */ +/*#define NES6502_DECIMAL*/ + +#define NES6502_NUMBANKS 16 +#define NES6502_BANKSHIFT 12 +#define NES6502_BANKSIZE (0x10000 / NES6502_NUMBANKS) +#define NES6502_BANKMASK (NES6502_BANKSIZE - 1) + +/* P (flag) register bitmasks */ +#define N_FLAG 0x80 +#define V_FLAG 0x40 +#define R_FLAG 0x20 /* Reserved, always 1 */ +#define B_FLAG 0x10 +#define D_FLAG 0x08 +#define I_FLAG 0x04 +#define Z_FLAG 0x02 +#define C_FLAG 0x01 + +/* Vector addresses */ +#define NMI_VECTOR 0xFFFA +#define RESET_VECTOR 0xFFFC +#define IRQ_VECTOR 0xFFFE + +/* cycle counts for interrupts */ +#define INT_CYCLES 7 +#define RESET_CYCLES 6 + +#define NMI_MASK 0x01 +#define IRQ_MASK 0x02 + +/* Stack is located on 6502 page 1 */ +#define STACK_OFFSET 0x0100 + +typedef struct +{ + uint32 min_range, max_range; + uint8 (*read_func)(uint32 address); +} nes6502_memread; + +typedef struct +{ + uint32 min_range, max_range; + void (*write_func)(uint32 address, uint8 value); +} nes6502_memwrite; + +typedef struct +{ + uint8 *mem_page[NES6502_NUMBANKS]; /* memory page pointers */ + + nes6502_memread *read_handler; + nes6502_memwrite *write_handler; + + uint32 pc_reg; + uint8 a_reg, p_reg; + uint8 x_reg, y_reg; + uint8 s_reg; + + uint8 jammed; /* is processor jammed? */ + + uint8 int_pending, int_latency; + + int32 total_cycles, burn_cycles; +} nes6502_context; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Functions which govern the 6502's execution */ +extern void nes6502_reset(void); +extern int nes6502_execute(int total_cycles); +extern void nes6502_nmi(void); +extern void nes6502_irq(void); +extern uint8 nes6502_getbyte(uint32 address); +extern uint32 nes6502_getcycles(bool reset_flag); +extern void nes6502_burn(int cycles); +extern void nes6502_release(void); + +/* Context get/set */ +extern void nes6502_setcontext(nes6502_context *cpu); +extern void nes6502_getcontext(nes6502_context *cpu); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _NES6502_H_ */ + +/* +** $Log: nes6502.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:39 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.17 2000/11/13 00:57:39 matt +** trying to add 1-instruction interrupt latency... and failing. +** +** Revision 1.16 2000/10/27 12:53:36 matt +** banks are always 4kB now +** +** Revision 1.15 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.14 2000/09/15 03:42:32 matt +** nes6502_release to release current timeslice +** +** Revision 1.13 2000/09/11 03:55:32 matt +** cosmetics +** +** Revision 1.12 2000/09/08 11:54:48 matt +** optimize +** +** Revision 1.11 2000/09/07 21:58:18 matt +** api change for nes6502_burn, optimized core +** +** Revision 1.10 2000/09/07 01:34:55 matt +** nes6502_init deprecated, moved flag regs to separate vars +** +** Revision 1.9 2000/08/28 12:53:44 matt +** fixes for disassembler +** +** Revision 1.8 2000/08/28 01:46:15 matt +** moved some of them defines around, cleaned up jamming code +** +** Revision 1.7 2000/08/16 04:56:37 matt +** accurate CPU jamming, added dead page emulation +** +** Revision 1.6 2000/07/30 04:32:00 matt +** now emulates the NES frame IRQ +** +** Revision 1.5 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_apu.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes_apu.c new file mode 100755 index 0000000..9707411 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_apu.c @@ -0,0 +1,1195 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_apu.c +** +** NES APU emulation +** $Id: nes_apu.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "log.h" +#include "nes_apu.h" +#include "nes6502.h" + + +#define APU_OVERSAMPLE +#define APU_VOLUME_DECAY(x) ((x) -= ((x) >> 7)) + +/* the following seem to be the correct (empirically determined) +** relative volumes between the sound channels +*/ +#define APU_RECTANGLE_OUTPUT(channel) (apu.rectangle[channel].output_vol) +#define APU_TRIANGLE_OUTPUT (apu.triangle.output_vol + (apu.triangle.output_vol >> 2)) +#define APU_NOISE_OUTPUT ((apu.noise.output_vol + apu.noise.output_vol + apu.noise.output_vol) >> 2) +#define APU_DMC_OUTPUT ((apu.dmc.output_vol + apu.dmc.output_vol + apu.dmc.output_vol) >> 2) + +/* active APU */ +static apu_t apu; + +/* look up table madness */ +static int32 decay_lut[16]; +static int vbl_lut[32]; +static int trilength_lut[128]; + +/* noise lookups for both modes */ +#ifndef REALTIME_NOISE +static int8 noise_long_lut[APU_NOISE_32K]; +static int8 noise_short_lut[APU_NOISE_93]; +#endif /* !REALTIME_NOISE */ + + +/* vblank length table used for rectangles, triangle, noise */ +static const uint8 vbl_length[32] = +{ + 5, 127, + 10, 1, + 19, 2, + 40, 3, + 80, 4, + 30, 5, + 7, 6, + 13, 7, + 6, 8, + 12, 9, + 24, 10, + 48, 11, + 96, 12, + 36, 13, + 8, 14, + 16, 15 +}; + +/* frequency limit of rectangle channels */ +static const int freq_limit[8] = +{ + 0x3FF, 0x555, 0x666, 0x71C, 0x787, 0x7C1, 0x7E0, 0x7F0 +}; + +/* noise frequency lookup table */ +static const int noise_freq[16] = +{ + 4, 8, 16, 32, 64, 96, 128, 160, + 202, 254, 380, 508, 762, 1016, 2034, 4068 +}; + +/* DMC transfer freqs */ +const int dmc_clocks[16] = +{ + 428, 380, 340, 320, 286, 254, 226, 214, + 190, 160, 142, 128, 106, 85, 72, 54 +}; + +/* ratios of pos/neg pulse for rectangle waves */ +static const int duty_flip[4] = { 2, 4, 8, 12 }; + + +void apu_setcontext(apu_t *src_apu) +{ + apu = *src_apu; +} + +void apu_getcontext(apu_t *dest_apu) +{ + *dest_apu = apu; +} + +void apu_setchan(int chan, bool enabled) +{ + if (enabled) + apu.mix_enable |= (1 << chan); + else + apu.mix_enable &= ~(1 << chan); +} + +/* emulation of the 15-bit shift register the +** NES uses to generate pseudo-random series +** for the white noise channel +*/ +#ifdef REALTIME_NOISE +INLINE int8 shift_register15(uint8 xor_tap) +{ + static int sreg = 0x4000; + int bit0, tap, bit14; + + bit0 = sreg & 1; + tap = (sreg & xor_tap) ? 1 : 0; + bit14 = (bit0 ^ tap); + sreg >>= 1; + sreg |= (bit14 << 14); + return (bit0 ^ 1); +} +#else /* !REALTIME_NOISE */ +static void shift_register15(int8 *buf, int count) +{ + static int sreg = 0x4000; + int bit0, bit1, bit6, bit14; + + if (count == APU_NOISE_93) + { + while (count--) + { + bit0 = sreg & 1; + bit6 = (sreg & 0x40) >> 6; + bit14 = (bit0 ^ bit6); + sreg >>= 1; + sreg |= (bit14 << 14); + *buf++ = bit0 ^ 1; + } + } + else /* 32K noise */ + { + while (count--) + { + bit0 = sreg & 1; + bit1 = (sreg & 2) >> 1; + bit14 = (bit0 ^ bit1); + sreg >>= 1; + sreg |= (bit14 << 14); + *buf++ = bit0 ^ 1; + } + } +} +#endif /* !REALTIME_NOISE */ + +/* RECTANGLE WAVE +** ============== +** reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle +** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on +** reg2: 8 bits of freq +** reg3: 0-2=high freq, 7-4=vbl length counter +*/ +#ifdef APU_OVERSAMPLE + +#define APU_MAKE_RECTANGLE(ch) \ +static int32 apu_rectangle_##ch(void) \ +{ \ + int32 output, total; \ + int num_times; \ +\ + APU_VOLUME_DECAY(apu.rectangle[ch].output_vol); \ +\ + if (false == apu.rectangle[ch].enabled || 0 == apu.rectangle[ch].vbl_length) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* vbl length counter */ \ + if (false == apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].vbl_length--; \ +\ + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ \ + apu.rectangle[ch].env_phase -= 4; /* 240/60 */ \ + while (apu.rectangle[ch].env_phase < 0) \ + { \ + apu.rectangle[ch].env_phase += apu.rectangle[ch].env_delay; \ +\ + if (apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].env_vol = (apu.rectangle[ch].env_vol + 1) & 0x0F; \ + else if (apu.rectangle[ch].env_vol < 0x0F) \ + apu.rectangle[ch].env_vol++; \ + } \ +\ + /* TODO: find true relation of freq_limit to register values */ \ + if (apu.rectangle[ch].freq < 8 \ + || (false == apu.rectangle[ch].sweep_inc \ + && apu.rectangle[ch].freq > apu.rectangle[ch].freq_limit)) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* frequency sweeping at a rate of (sweep_delay + 1) / 120 secs */ \ + if (apu.rectangle[ch].sweep_on && apu.rectangle[ch].sweep_shifts) \ + { \ + apu.rectangle[ch].sweep_phase -= 2; /* 120/60 */ \ + while (apu.rectangle[ch].sweep_phase < 0) \ + { \ + apu.rectangle[ch].sweep_phase += apu.rectangle[ch].sweep_delay; \ +\ + if (apu.rectangle[ch].sweep_inc) /* ramp up */ \ + { \ + if (0 == ch) \ + apu.rectangle[ch].freq += ~(apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + else \ + apu.rectangle[ch].freq -= (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + else /* ramp down */ \ + { \ + apu.rectangle[ch].freq += (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + } \ + } \ +\ + apu.rectangle[ch].accum -= apu.cycle_rate; \ + if (apu.rectangle[ch].accum >= 0) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + if (apu.rectangle[ch].fixed_envelope) \ + output = apu.rectangle[ch].volume << 8; /* fixed volume */ \ + else \ + output = (apu.rectangle[ch].env_vol ^ 0x0F) << 8; \ +\ + num_times = total = 0; \ +\ + while (apu.rectangle[ch].accum < 0) \ + { \ + apu.rectangle[ch].accum += apu.rectangle[ch].freq + 1; \ + apu.rectangle[ch].adder = (apu.rectangle[ch].adder + 1) & 0x0F; \ +\ + if (apu.rectangle[ch].adder < apu.rectangle[ch].duty_flip) \ + total += output; \ + else \ + total -= output; \ +\ + num_times++; \ + } \ +\ + apu.rectangle[ch].output_vol = total / num_times; \ + return APU_RECTANGLE_OUTPUT(ch); \ +} + +#else /* !APU_OVERSAMPLE */ +#define APU_MAKE_RECTANGLE(ch) \ +static int32 apu_rectangle_##ch(void) \ +{ \ + int32 output; \ +\ + APU_VOLUME_DECAY(apu.rectangle[ch].output_vol); \ +\ + if (false == apu.rectangle[ch].enabled || 0 == apu.rectangle[ch].vbl_length) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* vbl length counter */ \ + if (false == apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].vbl_length--; \ +\ + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ \ + apu.rectangle[ch].env_phase -= 4; /* 240/60 */ \ + while (apu.rectangle[ch].env_phase < 0) \ + { \ + apu.rectangle[ch].env_phase += apu.rectangle[ch].env_delay; \ +\ + if (apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].env_vol = (apu.rectangle[ch].env_vol + 1) & 0x0F; \ + else if (apu.rectangle[ch].env_vol < 0x0F) \ + apu.rectangle[ch].env_vol++; \ + } \ +\ + /* TODO: find true relation of freq_limit to register values */ \ + if (apu.rectangle[ch].freq < 8 || (false == apu.rectangle[ch].sweep_inc && apu.rectangle[ch].freq > apu.rectangle[ch].freq_limit)) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* frequency sweeping at a rate of (sweep_delay + 1) / 120 secs */ \ + if (apu.rectangle[ch].sweep_on && apu.rectangle[ch].sweep_shifts) \ + { \ + apu.rectangle[ch].sweep_phase -= 2; /* 120/60 */ \ + while (apu.rectangle[ch].sweep_phase < 0) \ + { \ + apu.rectangle[ch].sweep_phase += apu.rectangle[ch].sweep_delay; \ +\ + if (apu.rectangle[ch].sweep_inc) /* ramp up */ \ + { \ + if (0 == ch) \ + apu.rectangle[ch].freq += ~(apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + else \ + apu.rectangle[ch].freq -= (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + else /* ramp down */ \ + { \ + apu.rectangle[ch].freq += (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + } \ + } \ +\ + apu.rectangle[ch].accum -= apu.cycle_rate; \ + if (apu.rectangle[ch].accum >= 0) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + while (apu.rectangle[ch].accum < 0) \ + { \ + apu.rectangle[ch].accum += (apu.rectangle[ch].freq + 1); \ + apu.rectangle[ch].adder = (apu.rectangle[ch].adder + 1) & 0x0F; \ + } \ +\ + if (apu.rectangle[ch].fixed_envelope) \ + output = apu.rectangle[ch].volume << 8; /* fixed volume */ \ + else \ + output = (apu.rectangle[ch].env_vol ^ 0x0F) << 8; \ +\ + if (0 == apu.rectangle[ch].adder) \ + apu.rectangle[ch].output_vol = output; \ + else if (apu.rectangle[ch].adder == apu.rectangle[ch].duty_flip) \ + apu.rectangle[ch].output_vol = -output; \ +\ + return APU_RECTANGLE_OUTPUT(ch); \ +} + +#endif /* !APU_OVERSAMPLE */ + +/* generate the functions */ +APU_MAKE_RECTANGLE(0) +APU_MAKE_RECTANGLE(1) + + +/* TRIANGLE WAVE +** ============= +** reg0: 7=holdnote, 6-0=linear length counter +** reg2: low 8 bits of frequency +** reg3: 7-3=length counter, 2-0=high 3 bits of frequency +*/ +static int32 apu_triangle(void) +{ + APU_VOLUME_DECAY(apu.triangle.output_vol); + + if (false == apu.triangle.enabled || 0 == apu.triangle.vbl_length) + return APU_TRIANGLE_OUTPUT; + + if (apu.triangle.counter_started) + { + if (apu.triangle.linear_length > 0) + apu.triangle.linear_length--; + if (apu.triangle.vbl_length && false == apu.triangle.holdnote) + apu.triangle.vbl_length--; + } + else if (false == apu.triangle.holdnote && apu.triangle.write_latency) + { + if (--apu.triangle.write_latency == 0) + apu.triangle.counter_started = true; + } + + if (0 == apu.triangle.linear_length || apu.triangle.freq < 4) /* inaudible */ + return APU_TRIANGLE_OUTPUT; + + apu.triangle.accum -= apu.cycle_rate; \ + while (apu.triangle.accum < 0) + { + apu.triangle.accum += apu.triangle.freq; + apu.triangle.adder = (apu.triangle.adder + 1) & 0x1F; + + if (apu.triangle.adder & 0x10) + apu.triangle.output_vol -= (2 << 8); + else + apu.triangle.output_vol += (2 << 8); + } + + return APU_TRIANGLE_OUTPUT; +} + + +/* WHITE NOISE CHANNEL +** =================== +** reg0: 0-3=volume, 4=envelope, 5=hold +** reg2: 7=small(93 byte) sample,3-0=freq lookup +** reg3: 7-4=vbl length counter +*/ +/* TODO: AAAAAAAAAAAAAAAAAAAAAAAA! #ifdef MADNESS! */ +static int32 apu_noise(void) +{ + int32 outvol; + +#if defined(APU_OVERSAMPLE) && defined(REALTIME_NOISE) +#else /* !(APU_OVERSAMPLE && REALTIME_NOISE) */ + int32 noise_bit; +#endif /* !(APU_OVERSAMPLE && REALTIME_NOISE) */ +#ifdef APU_OVERSAMPLE + int num_times; + int32 total; +#endif /* APU_OVERSAMPLE */ + + APU_VOLUME_DECAY(apu.noise.output_vol); + + if (false == apu.noise.enabled || 0 == apu.noise.vbl_length) + return APU_NOISE_OUTPUT; + + /* vbl length counter */ + if (false == apu.noise.holdnote) + apu.noise.vbl_length--; + + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ + apu.noise.env_phase -= 4; /* 240/60 */ + while (apu.noise.env_phase < 0) + { + apu.noise.env_phase += apu.noise.env_delay; + + if (apu.noise.holdnote) + apu.noise.env_vol = (apu.noise.env_vol + 1) & 0x0F; + else if (apu.noise.env_vol < 0x0F) + apu.noise.env_vol++; + } + + apu.noise.accum -= apu.cycle_rate; + if (apu.noise.accum >= 0) + return APU_NOISE_OUTPUT; + +#ifdef APU_OVERSAMPLE + if (apu.noise.fixed_envelope) + outvol = apu.noise.volume << 8; /* fixed volume */ + else + outvol = (apu.noise.env_vol ^ 0x0F) << 8; + + num_times = total = 0; +#endif /* APU_OVERSAMPLE */ + + while (apu.noise.accum < 0) + { + apu.noise.accum += apu.noise.freq; + +#ifdef REALTIME_NOISE + +#ifdef APU_OVERSAMPLE + if (shift_register15(apu.noise.xor_tap)) + total += outvol; + else + total -= outvol; + + num_times++; +#else /* !APU_OVERSAMPLE */ + noise_bit = shift_register15(apu.noise.xor_tap); +#endif /* !APU_OVERSAMPLE */ + +#else /* !REALTIME_NOISE */ + apu.noise.cur_pos++; + + if (apu.noise.short_sample) + { + if (APU_NOISE_93 == apu.noise.cur_pos) + apu.noise.cur_pos = 0; + } + else + { + if (APU_NOISE_32K == apu.noise.cur_pos) + apu.noise.cur_pos = 0; + } + +#ifdef APU_OVERSAMPLE + if (apu.noise.short_sample) + noise_bit = noise_short_lut[apu.noise.cur_pos]; + else + noise_bit = noise_long_lut[apu.noise.cur_pos]; + + if (noise_bit) + total += outvol; + else + total -= outvol; + + num_times++; +#endif /* APU_OVERSAMPLE */ +#endif /* !REALTIME_NOISE */ + } + +#ifdef APU_OVERSAMPLE + apu.noise.output_vol = total / num_times; +#else /* !APU_OVERSAMPLE */ + if (apu.noise.fixed_envelope) + outvol = apu.noise.volume << 8; /* fixed volume */ + else + outvol = (apu.noise.env_vol ^ 0x0F) << 8; + +#ifndef REALTIME_NOISE + if (apu.noise.short_sample) + noise_bit = noise_short_lut[apu.noise.cur_pos]; + else + noise_bit = noise_long_lut[apu.noise.cur_pos]; +#endif /* !REALTIME_NOISE */ + + if (noise_bit) + apu.noise.output_vol = outvol; + else + apu.noise.output_vol = -outvol; +#endif /* !APU_OVERSAMPLE */ + + return APU_NOISE_OUTPUT; +} + + +INLINE void apu_dmcreload(void) +{ + apu.dmc.address = apu.dmc.cached_addr; + apu.dmc.dma_length = apu.dmc.cached_dmalength; + apu.dmc.irq_occurred = false; +} + +/* DELTA MODULATION CHANNEL +** ========================= +** reg0: 7=irq gen, 6=looping, 3-0=pointer to clock table +** reg1: output dc level, 6 bits unsigned +** reg2: 8 bits of 64-byte aligned address offset : $C000 + (value * 64) +** reg3: length, (value * 16) + 1 +*/ +static int32 apu_dmc(void) +{ + int delta_bit; + + APU_VOLUME_DECAY(apu.dmc.output_vol); + + /* only process when channel is alive */ + if (apu.dmc.dma_length) + { + apu.dmc.accum -= apu.cycle_rate; + + while (apu.dmc.accum < 0) + { + apu.dmc.accum += apu.dmc.freq; + + delta_bit = (apu.dmc.dma_length & 7) ^ 7; + + if (7 == delta_bit) + { + apu.dmc.cur_byte = nes6502_getbyte(apu.dmc.address); + + /* steal a cycle from CPU*/ + nes6502_burn(1); + + /* prevent wraparound */ + if (0xFFFF == apu.dmc.address) + apu.dmc.address = 0x8000; + else + apu.dmc.address++; + } + + if (--apu.dmc.dma_length == 0) + { + /* if loop bit set, we're cool to retrigger sample */ + if (apu.dmc.looping) + { + apu_dmcreload(); + } + else + { + /* check to see if we should generate an irq */ + if (apu.dmc.irq_gen) + { + apu.dmc.irq_occurred = true; + if (apu.irq_callback) + apu.irq_callback(); + } + + /* bodge for timestamp queue */ + apu.dmc.enabled = false; + break; + } + } + + /* positive delta */ + if (apu.dmc.cur_byte & (1 << delta_bit)) + { + if (apu.dmc.regs[1] < 0x7D) + { + apu.dmc.regs[1] += 2; + apu.dmc.output_vol += (2 << 8); + } + } + /* negative delta */ + else + { + if (apu.dmc.regs[1] > 1) + { + apu.dmc.regs[1] -= 2; + apu.dmc.output_vol -= (2 << 8); + } + } + } + } + + return APU_DMC_OUTPUT; +} + + +void apu_write(uint32 address, uint8 value) +{ + int chan; + + switch (address) + { + /* rectangles */ + case APU_WRA0: + case APU_WRB0: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[0] = value; + apu.rectangle[chan].volume = value & 0x0F; + apu.rectangle[chan].env_delay = decay_lut[value & 0x0F]; + apu.rectangle[chan].holdnote = (value & 0x20) ? true : false; + apu.rectangle[chan].fixed_envelope = (value & 0x10) ? true : false; + apu.rectangle[chan].duty_flip = duty_flip[value >> 6]; + break; + + case APU_WRA1: + case APU_WRB1: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[1] = value; + apu.rectangle[chan].sweep_on = (value & 0x80) ? true : false; + apu.rectangle[chan].sweep_shifts = value & 7; + apu.rectangle[chan].sweep_delay = decay_lut[(value >> 4) & 7]; + apu.rectangle[chan].sweep_inc = (value & 0x08) ? true : false; + apu.rectangle[chan].freq_limit = freq_limit[value & 7]; + break; + + case APU_WRA2: + case APU_WRB2: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[2] = value; + apu.rectangle[chan].freq = (apu.rectangle[chan].freq & ~0xFF) | value; + break; + + case APU_WRA3: + case APU_WRB3: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[3] = value; + apu.rectangle[chan].vbl_length = vbl_lut[value >> 3]; + apu.rectangle[chan].env_vol = 0; + apu.rectangle[chan].freq = ((value & 7) << 8) | (apu.rectangle[chan].freq & 0xFF); + apu.rectangle[chan].adder = 0; + break; + + /* triangle */ + case APU_WRC0: + apu.triangle.regs[0] = value; + apu.triangle.holdnote = (value & 0x80) ? true : false; + + if (false == apu.triangle.counter_started && apu.triangle.vbl_length) + apu.triangle.linear_length = trilength_lut[value & 0x7F]; + + break; + + case APU_WRC2: + apu.triangle.regs[1] = value; + apu.triangle.freq = (((apu.triangle.regs[2] & 7) << 8) + value) + 1; + break; + + case APU_WRC3: + + apu.triangle.regs[2] = value; + + /* this is somewhat of a hack. there appears to be some latency on + ** the Real Thing between when trireg0 is written to and when the + ** linear length counter actually begins its countdown. we want to + ** prevent the case where the program writes to the freq regs first, + ** then to reg 0, and the counter accidentally starts running because + ** of the sound queue's timestamp processing. + ** + ** set latency to a couple hundred cycles -- should be plenty of time + ** for the 6502 code to do a couple of table dereferences and load up + ** the other triregs + */ + apu.triangle.write_latency = (int) (228 / apu.cycle_rate); + apu.triangle.freq = (((value & 7) << 8) + apu.triangle.regs[1]) + 1; + apu.triangle.vbl_length = vbl_lut[value >> 3]; + apu.triangle.counter_started = false; + apu.triangle.linear_length = trilength_lut[apu.triangle.regs[0] & 0x7F]; + break; + + /* noise */ + case APU_WRD0: + apu.noise.regs[0] = value; + apu.noise.env_delay = decay_lut[value & 0x0F]; + apu.noise.holdnote = (value & 0x20) ? true : false; + apu.noise.fixed_envelope = (value & 0x10) ? true : false; + apu.noise.volume = value & 0x0F; + break; + + case APU_WRD2: + apu.noise.regs[1] = value; + apu.noise.freq = noise_freq[value & 0x0F]; + +#ifdef REALTIME_NOISE + apu.noise.xor_tap = (value & 0x80) ? 0x40: 0x02; +#else /* !REALTIME_NOISE */ + /* detect transition from long->short sample */ + if ((value & 0x80) && false == apu.noise.short_sample) + { + /* recalculate short noise buffer */ + shift_register15(noise_short_lut, APU_NOISE_93); + apu.noise.cur_pos = 0; + } + apu.noise.short_sample = (value & 0x80) ? true : false; +#endif /* !REALTIME_NOISE */ + break; + + case APU_WRD3: + apu.noise.regs[2] = value; + apu.noise.vbl_length = vbl_lut[value >> 3]; + apu.noise.env_vol = 0; /* reset envelope */ + break; + + /* DMC */ + case APU_WRE0: + apu.dmc.regs[0] = value; + apu.dmc.freq = dmc_clocks[value & 0x0F]; + apu.dmc.looping = (value & 0x40) ? true : false; + + if (value & 0x80) + { + apu.dmc.irq_gen = true; + } + else + { + apu.dmc.irq_gen = false; + apu.dmc.irq_occurred = false; + } + break; + + case APU_WRE1: /* 7-bit DAC */ + /* add the _delta_ between written value and + ** current output level of the volume reg + */ + value &= 0x7F; /* bit 7 ignored */ + apu.dmc.output_vol += ((value - apu.dmc.regs[1]) << 8); + apu.dmc.regs[1] = value; + break; + + case APU_WRE2: + apu.dmc.regs[2] = value; + apu.dmc.cached_addr = 0xC000 + (uint16) (value << 6); + break; + + case APU_WRE3: + apu.dmc.regs[3] = value; + apu.dmc.cached_dmalength = ((value << 4) + 1) << 3; + break; + + case APU_SMASK: + /* bodge for timestamp queue */ + apu.dmc.enabled = (value & 0x10) ? true : false; + apu.enable_reg = value; + + for (chan = 0; chan < 2; chan++) + { + if (value & (1 << chan)) + { + apu.rectangle[chan].enabled = true; + } + else + { + apu.rectangle[chan].enabled = false; + apu.rectangle[chan].vbl_length = 0; + } + } + + if (value & 0x04) + { + apu.triangle.enabled = true; + } + else + { + apu.triangle.enabled = false; + apu.triangle.vbl_length = 0; + apu.triangle.linear_length = 0; + apu.triangle.counter_started = false; + apu.triangle.write_latency = 0; + } + + if (value & 0x08) + { + apu.noise.enabled = true; + } + else + { + apu.noise.enabled = false; + apu.noise.vbl_length = 0; + } + + if (value & 0x10) + { + if (0 == apu.dmc.dma_length) + apu_dmcreload(); + } + else + { + apu.dmc.dma_length = 0; + } + + apu.dmc.irq_occurred = false; + break; + + /* unused, but they get hit in some mem-clear loops */ + case 0x4009: + case 0x400D: + break; + + default: + break; + } +} + +/* Read from $4000-$4017 */ +uint8 apu_read(uint32 address) +{ + uint8 value; + + switch (address) + { + case APU_SMASK: + value = 0; + /* Return 1 in 0-5 bit pos if a channel is playing */ + if (apu.rectangle[0].enabled && apu.rectangle[0].vbl_length) + value |= 0x01; + if (apu.rectangle[1].enabled && apu.rectangle[1].vbl_length) + value |= 0x02; + if (apu.triangle.enabled && apu.triangle.vbl_length) + value |= 0x04; + if (apu.noise.enabled && apu.noise.vbl_length) + value |= 0x08; + + /* bodge for timestamp queue */ + if (apu.dmc.enabled) + value |= 0x10; + + if (apu.dmc.irq_occurred) + value |= 0x80; + + if (apu.irqclear_callback) + value |= apu.irqclear_callback(); + + break; + + default: + value = (address >> 8); /* heavy capacitance on data bus */ + break; + } + + return value; +} + +#define CLIP_OUTPUT16(out) \ +{ \ + /*out <<= 1;*/ \ + if (out > 0x7FFF) \ + out = 0x7FFF; \ + else if (out < -0x8000) \ + out = -0x8000; \ +} + +void apu_process(void *buffer, int num_samples) +{ + static int32 prev_sample = 0; + + int16 *buf16; + uint8 *buf8; + + if (NULL != buffer) + { + /* bleh */ + apu.buffer = buffer; + + buf16 = (int16 *) buffer; + buf8 = (uint8 *) buffer; + + while (num_samples--) + { + int32 next_sample, accum = 0; + + if (apu.mix_enable & 0x01) + accum += apu_rectangle_0(); + if (apu.mix_enable & 0x02) + accum += apu_rectangle_1(); + if (apu.mix_enable & 0x04) + accum += apu_triangle(); + if (apu.mix_enable & 0x08) + accum += apu_noise(); + if (apu.mix_enable & 0x10) + accum += apu_dmc(); + if (apu.ext && (apu.mix_enable & 0x20)) + accum += apu.ext->process(); + + /* do any filtering */ + if (APU_FILTER_NONE != apu.filter_type) + { + next_sample = accum; + + if (APU_FILTER_LOWPASS == apu.filter_type) + { + accum += prev_sample; + accum >>= 1; + } + else + accum = (accum + accum + accum + prev_sample) >> 2; + + prev_sample = next_sample; + } + + /* do clipping */ + CLIP_OUTPUT16(accum); + + /* signed 16-bit output, unsigned 8-bit */ + if (16 == apu.sample_bits) + *buf16++ = (int16) accum; + else + *buf8++ = (accum >> 8) ^ 0x80; + } + } +} + +/* set the filter type */ +void apu_setfilter(int filter_type) +{ + apu.filter_type = filter_type; +} + +void apu_reset(void) +{ + uint32 address; + + /* initialize all channel members */ + for (address = 0x4000; address <= 0x4013; address++) + apu_write(address, 0); + + apu_write(0x4015, 0); + + if (apu.ext && NULL != apu.ext->reset) + apu.ext->reset(); +} + +void apu_build_luts(int num_samples) +{ + int i; + + /* lut used for enveloping and frequency sweeps */ + for (i = 0; i < 16; i++) + decay_lut[i] = num_samples * (i + 1); + + /* used for note length, based on vblanks and size of audio buffer */ + for (i = 0; i < 32; i++) + vbl_lut[i] = vbl_length[i] * num_samples; + + /* triangle wave channel's linear length table */ + for (i = 0; i < 128; i++) + trilength_lut[i] = (int) (0.25 * i * num_samples); + +#ifndef REALTIME_NOISE + /* generate noise samples */ + shift_register15(noise_long_lut, APU_NOISE_32K); + shift_register15(noise_short_lut, APU_NOISE_93); +#endif /* !REALTIME_NOISE */ +} + +void apu_setparams(double base_freq, int sample_rate, int refresh_rate, int sample_bits) +{ + apu.sample_rate = sample_rate; + apu.refresh_rate = refresh_rate; + apu.sample_bits = sample_bits; + apu.num_samples = sample_rate / refresh_rate; + if (0 == base_freq) + apu.base_freq = APU_BASEFREQ; + else + apu.base_freq = base_freq; + apu.cycle_rate = (float) (apu.base_freq / sample_rate); + + /* build various lookup tables for apu */ + apu_build_luts(apu.num_samples); + + apu_reset(); +} + +/* Initializes emulated sound hardware, creates waveforms/voices */ +apu_t *apu_create(double base_freq, int sample_rate, int refresh_rate, int sample_bits) +{ + apu_t *temp_apu; + int channel; + + temp_apu = malloc(sizeof(apu_t)); + if (NULL == temp_apu) + return NULL; + + memset(temp_apu, 0, sizeof(apu_t)); + + /* set the update routine */ + temp_apu->process = apu_process; + temp_apu->ext = NULL; + + /* clear the callbacks */ + temp_apu->irq_callback = NULL; + temp_apu->irqclear_callback = NULL; + + apu_setcontext(temp_apu); + + apu_setparams(base_freq, sample_rate, refresh_rate, sample_bits); + + for (channel = 0; channel < 6; channel++) + apu_setchan(channel, true); + + apu_setfilter(APU_FILTER_WEIGHTED); + + apu_getcontext(temp_apu); + + return temp_apu; +} + +void apu_destroy(apu_t **src_apu) +{ + if (*src_apu) + { + if ((*src_apu)->ext && NULL != (*src_apu)->ext->shutdown) + (*src_apu)->ext->shutdown(); + free(*src_apu); + *src_apu = NULL; + } +} + +void apu_setext(apu_t *src_apu, apuext_t *ext) +{ + ASSERT(src_apu); + + src_apu->ext = ext; + + /* initialize it */ + if (src_apu->ext && NULL != src_apu->ext->init) + src_apu->ext->init(); +} + +/* +** $Log: nes_apu.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.6 2000/12/08 02:36:14 matt +** bye bye apu queue (for now) +** +** Revision 1.5 2000/11/27 19:33:53 matt +** no special treatment for nsf +** +** Revision 1.4 2000/11/25 20:29:17 matt +** weighted filter is now default +** +** Revision 1.3 2000/11/21 13:28:19 matt +** take care to zero allocated mem +** +** Revision 1.2 2000/10/28 15:20:59 matt +** irq callbacks in nes_apu +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.44 2000/10/23 17:53:06 matt +** set ptr to NULL after freeing +** +** Revision 1.43 2000/10/17 11:56:42 matt +** selectable apu base frequency +** +** Revision 1.42 2000/10/13 12:16:01 matt +** macro-ized the stuff that should be removed +** +** Revision 1.41 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.40 2000/10/03 11:56:20 matt +** better support for optional sound ext routines +** +** Revision 1.39 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.38 2000/09/18 02:12:55 matt +** more optimizations +** +** Revision 1.37 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.36 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.35 2000/09/07 21:57:14 matt +** api change +** +** Revision 1.34 2000/08/16 05:01:01 matt +** small buglet fixed +** +** Revision 1.33 2000/08/15 12:38:04 matt +** removed debug output +** +** Revision 1.32 2000/08/15 12:36:51 matt +** calling apu_process with buffer=NULL causes silent emulation of APU +** +** Revision 1.31 2000/08/11 02:27:21 matt +** general cleanups, plus apu_setparams routine +** +** Revision 1.30 2000/07/31 04:32:52 matt +** fragsize problem fixed, perhaps +** +** Revision 1.29 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.28 2000/07/28 03:15:46 matt +** accuracy changes for rectangle frequency sweeps +** +** Revision 1.27 2000/07/27 02:49:50 matt +** eccentricity in sweeping hardware now emulated correctly +** +** Revision 1.26 2000/07/25 02:25:14 matt +** safer apu_destroy +** +** Revision 1.25 2000/07/23 15:10:54 matt +** hacks for win32 +** +** Revision 1.24 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.23 2000/07/10 19:24:55 matt +** irqs are not supported in NSF playing mode +** +** Revision 1.22 2000/07/10 13:54:32 matt +** using generic nes_irq() now +** +** Revision 1.21 2000/07/10 05:29:34 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.20 2000/07/09 03:49:31 matt +** apu irqs now draw an irq line (bleh) +** +** Revision 1.19 2000/07/04 04:53:26 matt +** minor changes, sound amplification +** +** Revision 1.18 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.17 2000/06/26 11:01:55 matt +** made triangle a tad quieter +** +** Revision 1.16 2000/06/26 05:10:33 matt +** fixed cycle rate generation accuracy +** +** Revision 1.15 2000/06/26 05:00:37 matt +** cleanups +** +** Revision 1.14 2000/06/23 11:06:24 matt +** more faithful mixing of channels +** +** Revision 1.13 2000/06/23 03:29:27 matt +** cleaned up external sound inteface +** +** Revision 1.12 2000/06/20 00:08:39 matt +** bugfix to rectangle wave +** +** Revision 1.11 2000/06/13 13:48:58 matt +** fixed triangle write latency for fixed point apu cycle rate +** +** Revision 1.10 2000/06/12 01:14:36 matt +** minor change to clipping extents +** +** Revision 1.9 2000/06/09 20:00:56 matt +** fixed noise hiccup in NSF player mode +** +** Revision 1.8 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.7 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_apu.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes_apu.h new file mode 100755 index 0000000..523c969 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_apu.h @@ -0,0 +1,349 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_apu.h +** +** NES APU emulation header file +** $Id: nes_apu.h,v 1.1 2001/04/27 12:54:40 neil Exp $ +*/ + +#ifndef _NES_APU_H_ +#define _NES_APU_H_ + + +/* define this for realtime generated noise */ +#define REALTIME_NOISE + +#define APU_WRA0 0x4000 +#define APU_WRA1 0x4001 +#define APU_WRA2 0x4002 +#define APU_WRA3 0x4003 +#define APU_WRB0 0x4004 +#define APU_WRB1 0x4005 +#define APU_WRB2 0x4006 +#define APU_WRB3 0x4007 +#define APU_WRC0 0x4008 +#define APU_WRC2 0x400A +#define APU_WRC3 0x400B +#define APU_WRD0 0x400C +#define APU_WRD2 0x400E +#define APU_WRD3 0x400F +#define APU_WRE0 0x4010 +#define APU_WRE1 0x4011 +#define APU_WRE2 0x4012 +#define APU_WRE3 0x4013 + +#define APU_SMASK 0x4015 + +/* length of generated noise */ +#define APU_NOISE_32K 0x7FFF +#define APU_NOISE_93 93 + +#define APU_BASEFREQ 1789772.7272727272727272 + + +/* channel structures */ +/* As much data as possible is precalculated, +** to keep the sample processing as lean as possible +*/ + +typedef struct rectangle_s +{ + uint8 regs[4]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + bool fixed_envelope; + bool holdnote; + uint8 volume; + + int32 sweep_phase; + int32 sweep_delay; + bool sweep_on; + uint8 sweep_shifts; + uint8 sweep_length; + bool sweep_inc; + + /* this may not be necessary in the future */ + int32 freq_limit; + int32 env_phase; + int32 env_delay; + uint8 env_vol; + + int vbl_length; + uint8 adder; + int duty_flip; +} rectangle_t; + +typedef struct triangle_s +{ + uint8 regs[3]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + + uint8 adder; + + bool holdnote; + bool counter_started; + /* quasi-hack */ + int write_latency; + + int vbl_length; + int linear_length; +} triangle_t; + + +typedef struct noise_s +{ + uint8 regs[3]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + + int32 env_phase; + int32 env_delay; + uint8 env_vol; + bool fixed_envelope; + bool holdnote; + + uint8 volume; + + int vbl_length; + +#ifdef REALTIME_NOISE + uint8 xor_tap; +#else + bool short_sample; + int cur_pos; +#endif /* REALTIME_NOISE */ +} noise_t; + +typedef struct dmc_s +{ + uint8 regs[4]; + + /* bodge for timestamp queue */ + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + + uint32 address; + uint32 cached_addr; + int dma_length; + int cached_dmalength; + uint8 cur_byte; + + bool looping; + bool irq_gen; + bool irq_occurred; + +} dmc_t; + +enum +{ + APU_FILTER_NONE, + APU_FILTER_LOWPASS, + APU_FILTER_WEIGHTED +}; + +typedef struct +{ + uint32 min_range, max_range; + uint8 (*read_func)(uint32 address); +} apu_memread; + +typedef struct +{ + uint32 min_range, max_range; + void (*write_func)(uint32 address, uint8 value); +} apu_memwrite; + +/* external sound chip stuff */ +typedef struct apuext_s +{ + int (*init)(void); + void (*shutdown)(void); + void (*reset)(void); + int32 (*process)(void); + apu_memread *mem_read; + apu_memwrite *mem_write; +} apuext_t; + + +typedef struct apu_s +{ + rectangle_t rectangle[2]; + triangle_t triangle; + noise_t noise; + dmc_t dmc; + uint8 enable_reg; + + void *buffer; /* pointer to output buffer */ + int num_samples; + + uint8 mix_enable; + int filter_type; + + double base_freq; + float cycle_rate; + + int sample_rate; + int sample_bits; + int refresh_rate; + + void (*process)(void *buffer, int num_samples); + void (*irq_callback)(void); + uint8 (*irqclear_callback)(void); + + /* external sound chip */ + apuext_t *ext; +} apu_t; + + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Function prototypes */ +extern void apu_setcontext(apu_t *src_apu); +extern void apu_getcontext(apu_t *dest_apu); + +extern void apu_setparams(double base_freq, int sample_rate, int refresh_rate, int sample_bits); +extern apu_t *apu_create(double base_freq, int sample_rate, int refresh_rate, int sample_bits); +extern void apu_destroy(apu_t **apu); + +extern void apu_process(void *buffer, int num_samples); +extern void apu_reset(void); + +extern void apu_setext(apu_t *apu, apuext_t *ext); +extern void apu_setfilter(int filter_type); +extern void apu_setchan(int chan, bool enabled); + +extern uint8 apu_read(uint32 address); +extern void apu_write(uint32 address, uint8 value); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _NES_APU_H_ */ + +/* +** $Log: nes_apu.h,v $ +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.3 2000/12/08 02:36:14 matt +** bye bye apu queue (for now) +** +** Revision 1.2 2000/10/28 15:20:59 matt +** irq callbacks in nes_apu +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.28 2000/10/17 11:56:42 matt +** selectable apu base frequency +** +** Revision 1.27 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.26 2000/09/28 23:20:58 matt +** bye bye, fixed point +** +** Revision 1.25 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.24 2000/09/18 02:12:55 matt +** more optimizations +** +** Revision 1.23 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.22 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.21 2000/08/11 02:27:21 matt +** general cleanups, plus apu_setparams routine +** +** Revision 1.20 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.19 2000/07/27 02:49:50 matt +** eccentricity in sweeping hardware now emulated correctly +** +** Revision 1.18 2000/07/25 02:25:15 matt +** safer apu_destroy +** +** Revision 1.17 2000/07/23 15:10:54 matt +** hacks for win32 +** +** Revision 1.16 2000/07/23 00:48:15 neil +** Win32 SDL +** +** Revision 1.15 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.14 2000/07/11 02:39:26 matt +** added setcontext() routine +** +** Revision 1.13 2000/07/10 05:29:34 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.12 2000/07/04 04:54:48 matt +** minor changes that helped with MAME +** +** Revision 1.11 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.10 2000/06/26 05:00:37 matt +** cleanups +** +** Revision 1.9 2000/06/23 03:29:28 matt +** cleaned up external sound inteface +** +** Revision 1.8 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.7 2000/06/20 00:07:35 matt +** added convenience members to apu_t struct +** +** Revision 1.6 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.5 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_mmc.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes_mmc.c new file mode 100755 index 0000000..b6bad5c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_mmc.c @@ -0,0 +1,353 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_mmc.c +** +** NES Memory Management Controller (mapper) emulation +** $Id: nes_mmc.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "nes6502.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "libsnss.h" +#include "log.h" +#include "mmclist.h" +#include "nes_rom.h" + +#define MMC_8KROM (mmc.cart->rom_banks * 2) +#define MMC_16KROM (mmc.cart->rom_banks) +#define MMC_32KROM (mmc.cart->rom_banks / 2) +#define MMC_8KVROM (mmc.cart->vrom_banks) +#define MMC_4KVROM (mmc.cart->vrom_banks * 2) +#define MMC_2KVROM (mmc.cart->vrom_banks * 4) +#define MMC_1KVROM (mmc.cart->vrom_banks * 8) + +#define MMC_LAST8KROM (MMC_8KROM - 1) +#define MMC_LAST16KROM (MMC_16KROM - 1) +#define MMC_LAST32KROM (MMC_32KROM - 1) +#define MMC_LAST8KVROM (MMC_8KVROM - 1) +#define MMC_LAST4KVROM (MMC_4KVROM - 1) +#define MMC_LAST2KVROM (MMC_2KVROM - 1) +#define MMC_LAST1KVROM (MMC_1KVROM - 1) + +static mmc_t mmc; + +rominfo_t *mmc_getinfo(void) +{ + return mmc.cart; +} + +void mmc_setcontext(mmc_t *src_mmc) +{ + ASSERT(src_mmc); + + mmc = *src_mmc; +} + +void mmc_getcontext(mmc_t *dest_mmc) +{ + *dest_mmc = mmc; +} + +/* VROM bankswitching */ +void mmc_bankvrom(int size, uint32 address, int bank) +{ + if (0 == mmc.cart->vrom_banks) + return; + + switch (size) + { + case 1: + if (bank == MMC_LASTBANK) + bank = MMC_LAST1KVROM; + ppu_setpage(1, address >> 10, &mmc.cart->vrom[(bank % MMC_1KVROM) << 10] - address); + break; + + case 2: + if (bank == MMC_LASTBANK) + bank = MMC_LAST2KVROM; + ppu_setpage(2, address >> 10, &mmc.cart->vrom[(bank % MMC_2KVROM) << 11] - address); + break; + + case 4: + if (bank == MMC_LASTBANK) + bank = MMC_LAST4KVROM; + ppu_setpage(4, address >> 10, &mmc.cart->vrom[(bank % MMC_4KVROM) << 12] - address); + break; + + case 8: + if (bank == MMC_LASTBANK) + bank = MMC_LAST8KVROM; + ppu_setpage(8, 0, &mmc.cart->vrom[(bank % MMC_8KVROM) << 13]); + break; + + default: + log_printf("invalid VROM bank size %d\n", size); + } +} + +/* ROM bankswitching */ +void mmc_bankrom(int size, uint32 address, int bank) +{ + nes6502_context mmc_cpu; + + nes6502_getcontext(&mmc_cpu); + + switch (size) + { + case 8: + if (bank == MMC_LASTBANK) + bank = MMC_LAST8KROM; + { + int page = address >> NES6502_BANKSHIFT; + mmc_cpu.mem_page[page] = &mmc.cart->rom[(bank % MMC_8KROM) << 13]; + mmc_cpu.mem_page[page + 1] = mmc_cpu.mem_page[page] + 0x1000; + } + + break; + + case 16: + if (bank == MMC_LASTBANK) + bank = MMC_LAST16KROM; + { + int page = address >> NES6502_BANKSHIFT; + mmc_cpu.mem_page[page] = &mmc.cart->rom[(bank % MMC_16KROM) << 14]; + mmc_cpu.mem_page[page + 1] = mmc_cpu.mem_page[page] + 0x1000; + mmc_cpu.mem_page[page + 2] = mmc_cpu.mem_page[page] + 0x2000; + mmc_cpu.mem_page[page + 3] = mmc_cpu.mem_page[page] + 0x3000; + } + break; + + case 32: + if (bank == MMC_LASTBANK) + bank = MMC_LAST32KROM; + + mmc_cpu.mem_page[8] = &mmc.cart->rom[(bank % MMC_32KROM) << 15]; + mmc_cpu.mem_page[9] = mmc_cpu.mem_page[8] + 0x1000; + mmc_cpu.mem_page[10] = mmc_cpu.mem_page[8] + 0x2000; + mmc_cpu.mem_page[11] = mmc_cpu.mem_page[8] + 0x3000; + mmc_cpu.mem_page[12] = mmc_cpu.mem_page[8] + 0x4000; + mmc_cpu.mem_page[13] = mmc_cpu.mem_page[8] + 0x5000; + mmc_cpu.mem_page[14] = mmc_cpu.mem_page[8] + 0x6000; + mmc_cpu.mem_page[15] = mmc_cpu.mem_page[8] + 0x7000; + break; + + default: + log_printf("invalid ROM bank size %d\n", size); + break; + } + + nes6502_setcontext(&mmc_cpu); +} + +/* Check to see if this mapper is supported */ +bool mmc_peek(int map_num) +{ + mapintf_t **map_ptr = mappers; + + while (NULL != *map_ptr) + { + if ((*map_ptr)->number == map_num) + return true; + map_ptr++; + } + + return false; +} + +static void mmc_setpages(void) +{ + log_printf("setting up mapper %d\n", mmc.intf->number); + + /* Switch ROM into CPU space, set VROM/VRAM (done for ALL ROMs) */ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, MMC_LASTBANK); + mmc_bankvrom(8, 0x0000, 0); + + if (mmc.cart->flags & ROM_FLAG_FOURSCREEN) + { + ppu_mirror(0, 1, 2, 3); + } + else + { + if (MIRROR_VERT == mmc.cart->mirror) + ppu_mirror(0, 1, 0, 1); + else + ppu_mirror(0, 0, 1, 1); + } + + /* if we have no VROM, switch in VRAM */ + /* TODO: fix this hack implementation */ + if (0 == mmc.cart->vrom_banks) + { + ASSERT(mmc.cart->vram); + + ppu_setpage(8, 0, mmc.cart->vram); + ppu_mirrorhipages(); + } +} + +/* Mapper initialization routine */ +void mmc_reset(void) +{ + mmc_setpages(); + + ppu_setlatchfunc(NULL); + ppu_setvromswitch(NULL); + + if (mmc.intf->init) + mmc.intf->init(); + + log_printf("reset memory mapper\n"); +} + + +void mmc_destroy(mmc_t **nes_mmc) +{ + if (*nes_mmc) + free(*nes_mmc); +} + +mmc_t *mmc_create(rominfo_t *rominfo) +{ + mmc_t *temp; + mapintf_t **map_ptr; + + for (map_ptr = mappers; (*map_ptr)->number != rominfo->mapper_number; map_ptr++) + { + if (NULL == *map_ptr) + return NULL; /* Should *never* happen */ + } + + temp = malloc(sizeof(mmc_t)); + if (NULL == temp) + return NULL; + + memset(temp, 0, sizeof(mmc_t)); + + temp->intf = *map_ptr; + temp->cart = rominfo; + + mmc_setcontext(temp); + + log_printf("created memory mapper: %s\n", (*map_ptr)->name); + + return temp; +} + + +/* +** $Log: nes_mmc.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.4 2000/11/21 13:28:40 matt +** take care to zero allocated mem +** +** Revision 1.3 2000/10/27 12:55:58 matt +** nes6502 now uses 4kB banks across the boards +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.28 2000/10/22 19:17:24 matt +** mapper cleanups galore +** +** Revision 1.27 2000/10/22 15:02:32 matt +** simplified mirroring +** +** Revision 1.26 2000/10/21 19:38:56 matt +** that two year old crap code *was* flushed +** +** Revision 1.25 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.24 2000/10/17 03:22:57 matt +** cleaning up rom module +** +** Revision 1.23 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.22 2000/08/16 02:51:55 matt +** random cleanups +** +** Revision 1.21 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.20 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.19 2000/07/23 15:11:45 matt +** removed unused variables +** +** Revision 1.18 2000/07/15 23:50:03 matt +** migrated state get/set from nes_mmc.c to state.c +** +** Revision 1.17 2000/07/11 03:15:09 melanson +** Added support for mappers 16, 34, and 231 +** +** Revision 1.16 2000/07/10 05:27:41 matt +** cleaned up mapper-specific callbacks +** +** Revision 1.15 2000/07/10 03:02:49 matt +** minor change on loading state +** +** Revision 1.14 2000/07/06 17:38:49 matt +** replaced missing string.h include +** +** Revision 1.13 2000/07/06 02:47:11 matt +** mapper addition madness +** +** Revision 1.12 2000/07/05 05:04:15 matt +** added more mappers +** +** Revision 1.11 2000/07/04 23:12:58 matt +** brand spankin' new mapper interface implemented +** +** Revision 1.10 2000/07/04 04:56:36 matt +** modifications for new SNSS +** +** Revision 1.9 2000/06/29 14:17:18 matt +** uses snsslib now +** +** Revision 1.8 2000/06/29 03:09:24 matt +** modified to support new snss code +** +** Revision 1.7 2000/06/26 04:57:54 matt +** bugfix - irqs/mmcstate not cleared on reset +** +** Revision 1.6 2000/06/23 11:01:10 matt +** updated for new external sound interface +** +** Revision 1.5 2000/06/20 04:04:57 matt +** hacked to use new external soundchip struct +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_mmc.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes_mmc.h new file mode 100755 index 0000000..97205d3 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_mmc.h @@ -0,0 +1,146 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_mmc.h +** +** NES Memory Management Controller (mapper) defines / prototypes +** $Id: nes_mmc.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_MMC_H_ +#define _NES_MMC_H_ + +#include "libsnss.h" +#include "nes_apu.h" + +#define MMC_LASTBANK -1 + +typedef struct +{ + uint32 min_range, max_range; + uint8 (*read_func)(uint32 address); +} map_memread; + +typedef struct +{ + uint32 min_range, max_range; + void (*write_func)(uint32 address, uint8 value); +} map_memwrite; + + +typedef struct mapintf_s +{ + int number; + char *name; + void (*init)(void); + void (*vblank)(void); + void (*hblank)(int vblank); + void (*get_state)(SnssMapperBlock *state); + void (*set_state)(SnssMapperBlock *state); + map_memread *mem_read; + map_memwrite *mem_write; + apuext_t *sound_ext; +} mapintf_t; + + +#include "nes_rom.h" +typedef struct mmc_s +{ + mapintf_t *intf; + rominfo_t *cart; /* link it back to the cart */ +} mmc_t; + +extern rominfo_t *mmc_getinfo(void); + +extern void mmc_bankvrom(int size, uint32 address, int bank); +extern void mmc_bankrom(int size, uint32 address, int bank); + +/* Prototypes */ +extern mmc_t *mmc_create(rominfo_t *rominfo); +extern void mmc_destroy(mmc_t **nes_mmc); + +extern void mmc_getcontext(mmc_t *dest_mmc); +extern void mmc_setcontext(mmc_t *src_mmc); + +extern bool mmc_peek(int map_num); + +extern void mmc_reset(void); + +#endif /* _NES_MMC_H_ */ + +/* +** $Log: nes_mmc.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.18 2000/10/22 19:17:24 matt +** mapper cleanups galore +** +** Revision 1.17 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.16 2000/10/17 03:22:58 matt +** cleaning up rom module +** +** Revision 1.15 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.14 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.13 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.12 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.11 2000/07/15 23:50:03 matt +** migrated state get/set from nes_mmc.c to state.c +** +** Revision 1.10 2000/07/11 02:38:01 matt +** added setcontext() routine +** +** Revision 1.9 2000/07/10 05:27:41 matt +** cleaned up mapper-specific callbacks +** +** Revision 1.8 2000/07/04 23:12:58 matt +** brand spankin' new mapper interface implemented +** +** Revision 1.7 2000/07/04 04:56:36 matt +** modifications for new SNSS +** +** Revision 1.6 2000/06/29 14:17:18 matt +** uses snsslib now +** +** Revision 1.5 2000/06/29 03:09:24 matt +** modified to support new snss code +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_pal.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes_pal.c new file mode 100644 index 0000000..9d44570 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_pal.c @@ -0,0 +1,185 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_pal.c +** +** NES RGB palette +** $Id: nes_pal.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "bitmap.h" +#include "nes_pal.h" + +#ifndef PI +#define PI 3.1415926535897932384626433832795 +#endif + +/* my NES palette, converted to RGB */ +const rgb_t shady_palette[] = +{ + {0x80,0x80,0x80}, {0x00,0x00,0xBB}, {0x37,0x00,0xBF}, {0x84,0x00,0xA6}, + {0xBB,0x00,0x6A}, {0xB7,0x00,0x1E}, {0xB3,0x00,0x00}, {0x91,0x26,0x00}, + {0x7B,0x2B,0x00}, {0x00,0x3E,0x00}, {0x00,0x48,0x0D}, {0x00,0x3C,0x22}, + {0x00,0x2F,0x66}, {0x00,0x00,0x00}, {0x05,0x05,0x05}, {0x05,0x05,0x05}, + + {0xC8,0xC8,0xC8}, {0x00,0x59,0xFF}, {0x44,0x3C,0xFF}, {0xB7,0x33,0xCC}, + {0xFF,0x33,0xAA}, {0xFF,0x37,0x5E}, {0xFF,0x37,0x1A}, {0xD5,0x4B,0x00}, + {0xC4,0x62,0x00}, {0x3C,0x7B,0x00}, {0x1E,0x84,0x15}, {0x00,0x95,0x66}, + {0x00,0x84,0xC4}, {0x11,0x11,0x11}, {0x09,0x09,0x09}, {0x09,0x09,0x09}, + + {0xFF,0xFF,0xFF}, {0x00,0x95,0xFF}, {0x6F,0x84,0xFF}, {0xD5,0x6F,0xFF}, + {0xFF,0x77,0xCC}, {0xFF,0x6F,0x99}, {0xFF,0x7B,0x59}, {0xFF,0x91,0x5F}, + {0xFF,0xA2,0x33}, {0xA6,0xBF,0x00}, {0x51,0xD9,0x6A}, {0x4D,0xD5,0xAE}, + {0x00,0xD9,0xFF}, {0x66,0x66,0x66}, {0x0D,0x0D,0x0D}, {0x0D,0x0D,0x0D}, + + {0xFF,0xFF,0xFF}, {0x84,0xBF,0xFF}, {0xBB,0xBB,0xFF}, {0xD0,0xBB,0xFF}, + {0xFF,0xBF,0xEA}, {0xFF,0xBF,0xCC}, {0xFF,0xC4,0xB7}, {0xFF,0xCC,0xAE}, + {0xFF,0xD9,0xA2}, {0xCC,0xE1,0x99}, {0xAE,0xEE,0xB7}, {0xAA,0xF7,0xEE}, + {0xB3,0xEE,0xFF}, {0xDD,0xDD,0xDD}, {0x11,0x11,0x11}, {0x11,0x11,0x11} +}; + +/* dynamic palette building routines, +** care of Kevin Horton (khorton@iquest.net) +*/ + +/* our global palette */ +rgb_t nes_palette[64]; + + +static float hue = 334.0f; +static float tint = 0.4f; + + +static const float brightness[4][4] = +{ + { 0.50f, 0.75f, 1.00f, 1.00f }, + { 0.29f, 0.45f, 0.73f, 0.90f }, + { 0.00f, 0.24f, 0.47f, 0.77f }, + { 0.02f, 0.04f, 0.05f, 0.07f } +}; + +static const int col_angles[16] = +{ + 0, 240, 210, 180, 150, 120, 90, 60, 30, 0, 330, 300, 270, 0, 0, 0 +}; + +void pal_generate(void) +{ + int x, z; + float s, y, theta; + int r, g, b; + + for (x = 0; x < 4; x++) + { + for (z = 0; z < 16; z++) + { + switch (z) + { + case 0: + /* is color $x0? If so, get luma */ + s = 0; + y = brightness[0][x]; + break; + + case 13: + /* is color $xD? If so, get luma */ + s = 0; + y = brightness[2][x]; + break; + + case 14: + case 15: + /* is color $xE/F? If so, set to black */ + s = 0; + y = brightness[3][x]; + + break; + + default: + s = tint; /* grab tint */ + y = brightness[1][x]; /* grab default luminance */ + break; + } + + theta = (float) (PI * ((col_angles[z] + hue) / 180.0)); + + r = (int) (256.0 * (y + s * sin(theta))); + g = (int) (256.0 * (y - ((27 / 53.0) * s * sin(theta)) + ((10 / 53.0) * s * cos(theta)))); + b = (int) (256.0 * (y - (s * cos(theta)))); + + if (r > 255) + r = 255; + else if (r < 0) + r = 0; + + if (g > 255) + g = 255; + else if (g < 0) + g = 0; + + if (b > 255) + b = 255; + else if (b < 0) + b = 0; + + nes_palette[(x << 4) + z].r = r; + nes_palette[(x << 4) + z].g = g; + nes_palette[(x << 4) + z].b = b; + } + } +} + +/* +** $Log: nes_pal.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.3 2000/11/06 02:17:18 matt +** no more double->float warnings +** +** Revision 1.2 2000/11/05 16:35:41 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.9 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.8 2000/07/10 13:49:31 matt +** renamed my palette and extern'ed it +** +** Revision 1.7 2000/06/26 04:59:13 matt +** selectable tint/hue hack (just for the time being) +** +** Revision 1.6 2000/06/21 21:48:19 matt +** changed range multiplier from 255.0 to 256.0 +** +** Revision 1.5 2000/06/20 20:42:47 matt +** accuracy changes +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_pal.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes_pal.h new file mode 100644 index 0000000..eb4828e --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_pal.h @@ -0,0 +1,65 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_pal.h +** +** NES palette definition +** $Id: nes_pal.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $ +*/ + +#ifndef _NESPAL_H_ +#define _NESPAL_H_ + +extern rgb_t nes_palette[]; +extern const rgb_t shady_palette[]; + +extern void pal_generate(void); + +/* TODO: these are temporary hacks */ +extern void pal_dechue(void); +extern void pal_inchue(void); +extern void pal_dectint(void); +extern void pal_inctint(void); + +#endif /* _NESPAL_H_ */ + +/* +** $Log: nes_pal.h,v $ +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.8 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.7 2000/07/21 04:20:35 matt +** added some nasty externs +** +** Revision 1.6 2000/07/10 13:49:32 matt +** renamed my palette and extern'ed it +** +** Revision 1.5 2000/07/05 17:14:34 neil +** Linux: Act Two, Scene One +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_ppu.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes_ppu.c new file mode 100644 index 0000000..ac884ca --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_ppu.c @@ -0,0 +1,1340 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_ppu.c +** +** NES PPU emulation +** $Id: nes_ppu.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include "noftypes.h" +#include "nes_ppu.h" +#include "nes.h" +#include "nes6502.h" +#include "log.h" +#include "nes_mmc.h" + +#include "bitmap.h" +#include "vid_drv.h" +#include "nes_pal.h" +#include "nesinput.h" + + +/* PPU access */ +#define PPU_MEM(x) ppu.page[(x) >> 10][(x)] + +/* Background (color 0) and solid sprite pixel flags */ +#define BG_TRANS 0x80 +#define SP_PIXEL 0x40 +#define BG_CLEAR(V) ((V) & BG_TRANS) +#define BG_SOLID(V) (0 == BG_CLEAR(V)) +#define SP_CLEAR(V) (0 == ((V) & SP_PIXEL)) + +/* Full BG color */ +#define FULLBG (ppu.palette[0] | BG_TRANS) + +/* the NES PPU */ +static ppu_t ppu; + + +void ppu_displaysprites(bool display) +{ + ppu.drawsprites = display; +} + +void ppu_setcontext(ppu_t *src_ppu) +{ + int nametab[4]; + ASSERT(src_ppu); + ppu = *src_ppu; + + /* we can't just copy contexts here, because more than likely, + ** the top 8 pages of the ppu are pointing to internal PPU memory, + ** which means we need to recalculate the page pointers. + ** TODO: we can either get rid of the page pointing in the code, + ** or add more robust checks to make sure that pages 8-15 are + ** definitely pointing to internal PPU RAM, not just something + ** that some crazy mapper paged in. + */ + nametab[0] = (src_ppu->page[8] - src_ppu->nametab + 0x2000) >> 10; + nametab[1] = (src_ppu->page[9] - src_ppu->nametab + 0x2400) >> 10; + nametab[2] = (src_ppu->page[10] - src_ppu->nametab + 0x2800) >> 10; + nametab[3] = (src_ppu->page[11] - src_ppu->nametab + 0x2C00) >> 10; + + ppu.page[8] = ppu.nametab + (nametab[0] << 10) - 0x2000; + ppu.page[9] = ppu.nametab + (nametab[1] << 10) - 0x2400; + ppu.page[10] = ppu.nametab + (nametab[2] << 10) - 0x2800; + ppu.page[11] = ppu.nametab + (nametab[3] << 10) - 0x2C00; + ppu.page[12] = ppu.page[8] - 0x1000; + ppu.page[13] = ppu.page[9] - 0x1000; + ppu.page[14] = ppu.page[10] - 0x1000; + ppu.page[15] = ppu.page[11] - 0x1000; +} + +void ppu_getcontext(ppu_t *dest_ppu) +{ + int nametab[4]; + + ASSERT(dest_ppu); + *dest_ppu = ppu; + + /* we can't just copy contexts here, because more than likely, + ** the top 8 pages of the ppu are pointing to internal PPU memory, + ** which means we need to recalculate the page pointers. + ** TODO: we can either get rid of the page pointing in the code, + ** or add more robust checks to make sure that pages 8-15 are + ** definitely pointing to internal PPU RAM, not just something + ** that some crazy mapper paged in. + */ + nametab[0] = (ppu.page[8] - ppu.nametab + 0x2000) >> 10; + nametab[1] = (ppu.page[9] - ppu.nametab + 0x2400) >> 10; + nametab[2] = (ppu.page[10] - ppu.nametab + 0x2800) >> 10; + nametab[3] = (ppu.page[11] - ppu.nametab + 0x2C00) >> 10; + + dest_ppu->page[8] = dest_ppu->nametab + (nametab[0] << 10) - 0x2000; + dest_ppu->page[9] = dest_ppu->nametab + (nametab[1] << 10) - 0x2400; + dest_ppu->page[10] = dest_ppu->nametab + (nametab[2] << 10) - 0x2800; + dest_ppu->page[11] = dest_ppu->nametab + (nametab[3] << 10) - 0x2C00; + dest_ppu->page[12] = dest_ppu->page[8] - 0x1000; + dest_ppu->page[13] = dest_ppu->page[9] - 0x1000; + dest_ppu->page[14] = dest_ppu->page[10] - 0x1000; + dest_ppu->page[15] = dest_ppu->page[11] - 0x1000; +} + +ppu_t *ppu_create(void) +{ + static bool pal_generated = false; + ppu_t *temp; + + temp = malloc(sizeof(ppu_t)); + if (NULL == temp) + return NULL; + + memset(temp, 0, sizeof(ppu_t)); + + temp->latchfunc = NULL; + temp->vromswitch = NULL; + temp->vram_present = false; + temp->drawsprites = true; + + /* TODO: probably a better way to do this... */ + if (false == pal_generated) + { + pal_generate(); + pal_generated = true; + } + + ppu_setdefaultpal(temp); + + return temp; +} + +void ppu_destroy(ppu_t **src_ppu) +{ + if (*src_ppu) + { + free(*src_ppu); + *src_ppu = NULL; + } +} + +void ppu_setpage(int size, int page_num, uint8 *location) +{ + /* deliberately fall through */ + switch (size) + { + case 8: + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + case 4: + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + case 2: + ppu.page[page_num++] = location; + case 1: + ppu.page[page_num++] = location; + break; + } +} + +/* make sure $3000-$3F00 mirrors $2000-$2F00 */ +void ppu_mirrorhipages(void) +{ + ppu.page[12] = ppu.page[8] - 0x1000; + ppu.page[13] = ppu.page[9] - 0x1000; + ppu.page[14] = ppu.page[10] - 0x1000; + ppu.page[15] = ppu.page[11] - 0x1000; +} + +void ppu_mirror(int nt1, int nt2, int nt3, int nt4) +{ + ppu.page[8] = ppu.nametab + (nt1 << 10) - 0x2000; + ppu.page[9] = ppu.nametab + (nt2 << 10) - 0x2400; + ppu.page[10] = ppu.nametab + (nt3 << 10) - 0x2800; + ppu.page[11] = ppu.nametab + (nt4 << 10) - 0x2C00; + ppu.page[12] = ppu.page[8] - 0x1000; + ppu.page[13] = ppu.page[9] - 0x1000; + ppu.page[14] = ppu.page[10] - 0x1000; + ppu.page[15] = ppu.page[11] - 0x1000; +} + +/* bleh, for snss */ +uint8 *ppu_getpage(int page) +{ + return ppu.page[page]; +} + +static void mem_trash(uint8 *buffer, int length) +{ + int i; + + for (i = 0; i < length; i++) + buffer[i] = (uint8) rand(); +} + +/* reset state of ppu */ +void ppu_reset(int reset_type) +{ + if (HARD_RESET == reset_type) + mem_trash(ppu.oam, 256); + + ppu.ctrl0 = 0; + ppu.ctrl1 = PPU_CTRL1F_OBJON | PPU_CTRL1F_BGON; + ppu.stat = 0; + ppu.flipflop = 0; + ppu.vaddr = ppu.vaddr_latch = 0x2000; + ppu.oam_addr = 0; + ppu.tile_xofs = 0; + + ppu.latch = 0; + ppu.vram_accessible = true; +} + +/* we render a scanline of graphics first so we know exactly +** where the sprite 0 strike is going to occur (in terms of +** cpu cycles), using the relation that 3 pixels == 1 cpu cycle +*/ +static void ppu_setstrike(int x_loc) +{ + if (false == ppu.strikeflag) + { + ppu.strikeflag = true; + + /* 3 pixels per cpu cycle */ + ppu.strike_cycle = nes6502_getcycles(false) + (x_loc / 3); + } +} + +static void ppu_oamdma(uint8 value) +{ + uint32 cpu_address; + uint8 oam_loc; + + cpu_address = (uint32) (value << 8); + + /* Sprite DMA starts at the current SPRRAM address */ + oam_loc = ppu.oam_addr; + do + { + ppu.oam[oam_loc++] = nes6502_getbyte(cpu_address++); + } + while (oam_loc != ppu.oam_addr); + + /* TODO: enough with houdini */ + cpu_address -= 256; + /* Odd address in $2003 */ + if ((ppu.oam_addr >> 2) & 1) + { + for (oam_loc = 4; oam_loc < 8; oam_loc++) + ppu.oam[oam_loc] = nes6502_getbyte(cpu_address++); + cpu_address += 248; + for (oam_loc = 0; oam_loc < 4; oam_loc++) + ppu.oam[oam_loc] = nes6502_getbyte(cpu_address++); + } + /* Even address in $2003 */ + else + { + for (oam_loc = 0; oam_loc < 8; oam_loc++) + ppu.oam[oam_loc] = nes6502_getbyte(cpu_address++); + } + + /* make the CPU spin for DMA cycles */ + nes6502_burn(513); + nes6502_release(); +} + +/* TODO: this isn't the PPU! */ +void ppu_writehigh(uint32 address, uint8 value) +{ + switch (address) + { + case PPU_OAMDMA: + ppu_oamdma(value); + break; + + case PPU_JOY0: + /* VS system VROM switching - bleh!*/ + if (ppu.vromswitch) + ppu.vromswitch(value); + + /* see if we need to strobe them joypads */ + value &= 1; + + if (0 == value && ppu.strobe) + input_strobe(); + + ppu.strobe = value; + break; + + case PPU_JOY1: /* frame IRQ control */ + nes_setfiq(value); + break; + + default: + break; + } +} + +/* TODO: this isn't the PPU! */ +uint8 ppu_readhigh(uint32 address) +{ + uint8 value; + + switch (address) + { + case PPU_JOY0: + value = input_get(INP_JOYPAD0); + break; + + case PPU_JOY1: + /* TODO: better input handling */ + value = input_get(INP_ZAPPER | INP_JOYPAD1 + /*| INP_ARKANOID*/ + /*| INP_POWERPAD*/); + break; + + default: + value = 0xFF; + break; + } + + return value; +} + +/* Read from $2000-$2007 */ +uint8 ppu_read(uint32 address) +{ + uint8 value; + + /* handle mirrored reads up to $3FFF */ + switch (address & 0x2007) + { + case PPU_STAT: + value = (ppu.stat & 0xE0) | (ppu.latch & 0x1F); + + if (ppu.strikeflag) + { + if (nes6502_getcycles(false) >= ppu.strike_cycle) + value |= PPU_STATF_STRIKE; + } + + /* clear both vblank flag and vram address flipflop */ + ppu.stat &= ~PPU_STATF_VBLANK; + ppu.flipflop = 0; + break; + + case PPU_VDATA: + /* buffered VRAM reads */ + value = ppu.latch = ppu.vdata_latch; + + /* VRAM only accessible during VBL */ + if ((ppu.bg_on || ppu.obj_on) && !ppu.vram_accessible) + { + ppu.vdata_latch = 0xFF; + log_printf("VRAM read at $%04X, scanline %d\n", + ppu.vaddr, nes_getcontextptr()->scanline); + } + else + { + uint32 addr = ppu.vaddr; + if (addr >= 0x3000) + addr -= 0x1000; + ppu.vdata_latch = PPU_MEM(addr); + } + + ppu.vaddr += ppu.vaddr_inc; + ppu.vaddr &= 0x3FFF; + break; + + case PPU_OAMDATA: + case PPU_CTRL0: + case PPU_CTRL1: + case PPU_OAMADDR: + case PPU_SCROLL: + case PPU_VADDR: + default: + value = ppu.latch; + break; + } + + return value; +} + +/* Write to $2000-$2007 */ +void ppu_write(uint32 address, uint8 value) +{ + /* write goes into ppu latch... */ + ppu.latch = value; + + switch (address & 0x2007) + { + case PPU_CTRL0: + ppu.ctrl0 = value; + + ppu.obj_height = (value & PPU_CTRL0F_OBJ16) ? 16 : 8; + ppu.bg_base = (value & PPU_CTRL0F_BGADDR) ? 0x1000 : 0; + ppu.obj_base = (value & PPU_CTRL0F_OBJADDR) ? 0x1000 : 0; + ppu.vaddr_inc = (value & PPU_CTRL0F_ADDRINC) ? 32 : 1; + ppu.tile_nametab = value & PPU_CTRL0F_NAMETAB; + + /* Mask out bits 10 & 11 in the ppu latch */ + ppu.vaddr_latch &= ~0x0C00; + ppu.vaddr_latch |= ((value & 3) << 10); + break; + + case PPU_CTRL1: + ppu.ctrl1 = value; + + ppu.obj_on = (value & PPU_CTRL1F_OBJON) ? true : false; + ppu.bg_on = (value & PPU_CTRL1F_BGON) ? true : false; + ppu.obj_mask = (value & PPU_CTRL1F_OBJMASK) ? false : true; + ppu.bg_mask = (value & PPU_CTRL1F_BGMASK) ? false : true; + break; + + case PPU_OAMADDR: + ppu.oam_addr = value; + break; + + case PPU_OAMDATA: + ppu.oam[ppu.oam_addr++] = value; + break; + + case PPU_SCROLL: + if (0 == ppu.flipflop) + { + /* Mask out bits 4 - 0 in the ppu latch */ + ppu.vaddr_latch &= ~0x001F; + ppu.vaddr_latch |= (value >> 3); /* Tile number */ + ppu.tile_xofs = (value & 7); /* Tile offset (0-7 pix) */ + } + else + { + /* Mask out bits 14-12 and 9-5 in the ppu latch */ + ppu.vaddr_latch &= ~0x73E0; + ppu.vaddr_latch |= ((value & 0xF8) << 2); /* Tile number */ + ppu.vaddr_latch |= ((value & 7) << 12); /* Tile offset (0-7 pix) */ + } + + ppu.flipflop ^= 1; + + break; + + case PPU_VADDR: + if (0 == ppu.flipflop) + { + /* Mask out bits 15-8 in ppu latch */ + ppu.vaddr_latch &= ~0xFF00; + ppu.vaddr_latch |= ((value & 0x3F) << 8); + } + else + { + /* Mask out bits 7-0 in ppu latch */ + ppu.vaddr_latch &= ~0x00FF; + ppu.vaddr_latch |= value; + ppu.vaddr = ppu.vaddr_latch; + } + + ppu.flipflop ^= 1; + + break; + + case PPU_VDATA: + if (ppu.vaddr < 0x3F00) + { + /* VRAM only accessible during scanlines 241-260 */ + if ((ppu.bg_on || ppu.obj_on) && !ppu.vram_accessible) + { + log_printf("VRAM write to $%04X, scanline %d\n", + ppu.vaddr, nes_getcontextptr()->scanline); + PPU_MEM(ppu.vaddr) = 0xFF; /* corrupt */ + } + else + { + uint32 addr = ppu.vaddr; + + if (false == ppu.vram_present && addr >= 0x3000) + ppu.vaddr -= 0x1000; + + PPU_MEM(addr) = value; + } + } + else + { + if (0 == (ppu.vaddr & 0x0F)) + { + int i; + + for (i = 0; i < 8; i ++) + ppu.palette[i << 2] = (value & 0x3F) | BG_TRANS; + } + else if (ppu.vaddr & 3) + { + ppu.palette[ppu.vaddr & 0x1F] = value & 0x3F; + } + } + + ppu.vaddr += ppu.vaddr_inc; + ppu.vaddr &= 0x3FFF; + break; + + default: + break; + } +} + +/* Builds a 256 color 8-bit palette based on a 64-color NES palette +** Note that we set it up 3 times so that we flip bits on the primary +** NES buffer for priorities +*/ +static void ppu_buildpalette(ppu_t *src_ppu, rgb_t *pal) +{ + int i; + + /* Set it up 3 times, for sprite priority/BG transparency trickery */ + for (i = 0; i < 64; i++) + { + src_ppu->curpal[i].r = src_ppu->curpal[i + 64].r + = src_ppu->curpal[i + 128].r = pal[i].r; + src_ppu->curpal[i].g = src_ppu->curpal[i + 64].g + = src_ppu->curpal[i + 128].g = pal[i].g; + src_ppu->curpal[i].b = src_ppu->curpal[i + 64].b + = src_ppu->curpal[i + 128].b = pal[i].b; + } +} + +/* build the emulator specific palette based on a 64-entry palette +** input palette can be either nes_palette or a 64-entry RGB palette +** read in from disk (i.e. for VS games) +*/ +void ppu_setpal(ppu_t *src_ppu, rgb_t *pal) +{ + ppu_buildpalette(src_ppu, pal); + vid_setpalette(src_ppu->curpal); +} + +void ppu_setdefaultpal(ppu_t *src_ppu) +{ + ppu_setpal(src_ppu, nes_palette); +} + +void ppu_setlatchfunc(ppulatchfunc_t func) +{ + ppu.latchfunc = func; +} + +void ppu_setvromswitch(ppuvromswitch_t func) +{ + ppu.vromswitch = func; +} + +/* rendering routines */ +INLINE void draw_bgtile(uint8 *surface, uint8 pat1, uint8 pat2, + const uint8 *colors) +{ + uint32 pattern = ((pat2 & 0xAA) << 8) | ((pat2 & 0x55) << 1) + | ((pat1 & 0xAA) << 7) | (pat1 & 0x55); + + *surface++ = colors[(pattern >> 14) & 3]; + *surface++ = colors[(pattern >> 6) & 3]; + *surface++ = colors[(pattern >> 12) & 3]; + *surface++ = colors[(pattern >> 4) & 3]; + *surface++ = colors[(pattern >> 10) & 3]; + *surface++ = colors[(pattern >> 2) & 3]; + *surface++ = colors[(pattern >> 8) & 3]; + *surface = colors[pattern & 3]; +} + +INLINE int draw_oamtile(uint8 *surface, uint8 attrib, uint8 pat1, + uint8 pat2, const uint8 *col_tbl, bool check_strike) +{ + int strike_pixel = -1; + uint32 color = ((pat2 & 0xAA) << 8) | ((pat2 & 0x55) << 1) + | ((pat1 & 0xAA) << 7) | (pat1 & 0x55); + + /* sprite is not 100% transparent */ + if (color) + { + uint8 colors[8]; + + /* swap pixels around if our tile is flipped */ + if (0 == (attrib & OAMF_HFLIP)) + { + colors[0] = (color >> 14) & 3; + colors[1] = (color >> 6) & 3; + colors[2] = (color >> 12) & 3; + colors[3] = (color >> 4) & 3; + colors[4] = (color >> 10) & 3; + colors[5] = (color >> 2) & 3; + colors[6] = (color >> 8) & 3; + colors[7] = color & 3; + } + else + { + colors[7] = (color >> 14) & 3; + colors[6] = (color >> 6) & 3; + colors[5] = (color >> 12) & 3; + colors[4] = (color >> 4) & 3; + colors[3] = (color >> 10) & 3; + colors[2] = (color >> 2) & 3; + colors[1] = (color >> 8) & 3; + colors[0] = color & 3; + } + + /* check for solid sprite pixel overlapping solid bg pixel */ + if (check_strike) + { + if (colors[0] && BG_SOLID(surface[0])) + strike_pixel = 0; + else if (colors[1] && BG_SOLID(surface[1])) + strike_pixel = 1; + else if (colors[2] && BG_SOLID(surface[2])) + strike_pixel = 2; + else if (colors[3] && BG_SOLID(surface[3])) + strike_pixel = 3; + else if (colors[4] && BG_SOLID(surface[4])) + strike_pixel = 4; + else if (colors[5] && BG_SOLID(surface[5])) + strike_pixel = 5; + else if (colors[6] && BG_SOLID(surface[6])) + strike_pixel = 6; + else if (colors[7] && BG_SOLID(surface[7])) + strike_pixel = 7; + } + + /* draw the character */ + if (attrib & OAMF_BEHIND) + { + if (colors[0]) + surface[0] = SP_PIXEL | (BG_CLEAR(surface[0]) ? col_tbl[colors[0]] : surface[0]); + if (colors[1]) + surface[1] = SP_PIXEL | (BG_CLEAR(surface[1]) ? col_tbl[colors[1]] : surface[1]); + if (colors[2]) + surface[2] = SP_PIXEL | (BG_CLEAR(surface[2]) ? col_tbl[colors[2]] : surface[2]); + if (colors[3]) + surface[3] = SP_PIXEL | (BG_CLEAR(surface[3]) ? col_tbl[colors[3]] : surface[3]); + if (colors[4]) + surface[4] = SP_PIXEL | (BG_CLEAR(surface[4]) ? col_tbl[colors[4]] : surface[4]); + if (colors[5]) + surface[5] = SP_PIXEL | (BG_CLEAR(surface[5]) ? col_tbl[colors[5]] : surface[5]); + if (colors[6]) + surface[6] = SP_PIXEL | (BG_CLEAR(surface[6]) ? col_tbl[colors[6]] : surface[6]); + if (colors[7]) + surface[7] = SP_PIXEL | (BG_CLEAR(surface[7]) ? col_tbl[colors[7]] : surface[7]); + } + else + { + if (colors[0] && SP_CLEAR(surface[0])) + surface[0] = SP_PIXEL | col_tbl[colors[0]]; + if (colors[1] && SP_CLEAR(surface[1])) + surface[1] = SP_PIXEL | col_tbl[colors[1]]; + if (colors[2] && SP_CLEAR(surface[2])) + surface[2] = SP_PIXEL | col_tbl[colors[2]]; + if (colors[3] && SP_CLEAR(surface[3])) + surface[3] = SP_PIXEL | col_tbl[colors[3]]; + if (colors[4] && SP_CLEAR(surface[4])) + surface[4] = SP_PIXEL | col_tbl[colors[4]]; + if (colors[5] && SP_CLEAR(surface[5])) + surface[5] = SP_PIXEL | col_tbl[colors[5]]; + if (colors[6] && SP_CLEAR(surface[6])) + surface[6] = SP_PIXEL | col_tbl[colors[6]]; + if (colors[7] && SP_CLEAR(surface[7])) + surface[7] = SP_PIXEL | col_tbl[colors[7]]; + } + } + + return strike_pixel; +} + +static void ppu_renderbg(uint8 *vidbuf) +{ + uint8 *bmp_ptr, *data_ptr, *tile_ptr, *attrib_ptr; + uint32 refresh_vaddr, bg_offset, attrib_base; + int tile_count; + uint8 tile_index, x_tile, y_tile; + uint8 col_high, attrib, attrib_shift; + + /* draw a line of transparent background color if bg is disabled */ + if (false == ppu.bg_on) + { + memset(vidbuf, FULLBG, NES_SCREEN_WIDTH); + return; + } + + bmp_ptr = vidbuf - ppu.tile_xofs; /* scroll x */ + refresh_vaddr = 0x2000 + (ppu.vaddr & 0x0FE0); /* mask out x tile */ + x_tile = ppu.vaddr & 0x1F; + y_tile = (ppu.vaddr >> 5) & 0x1F; /* to simplify calculations */ + bg_offset = ((ppu.vaddr >> 12) & 7) + ppu.bg_base; /* offset in y tile */ + + /* calculate initial values */ + tile_ptr = &PPU_MEM(refresh_vaddr + x_tile); /* pointer to tile index */ + attrib_base = (refresh_vaddr & 0x2C00) + 0x3C0 + ((y_tile & 0x1C) << 1); + attrib_ptr = &PPU_MEM(attrib_base + (x_tile >> 2)); + attrib = *attrib_ptr++; + attrib_shift = (x_tile & 2) + ((y_tile & 2) << 1); + col_high = ((attrib >> attrib_shift) & 3) << 2; + + /* ppu fetches 33 tiles */ + tile_count = 33; + while (tile_count--) + { + /* Tile number from nametable */ + tile_index = *tile_ptr++; + data_ptr = &PPU_MEM(bg_offset + (tile_index << 4)); + + /* Handle $FD/$FE tile VROM switching (PunchOut) */ + if (ppu.latchfunc) + ppu.latchfunc(ppu.bg_base, tile_index); + + draw_bgtile(bmp_ptr, data_ptr[0], data_ptr[8], ppu.palette + col_high); + bmp_ptr += 8; + + x_tile++; + + if (0 == (x_tile & 1)) /* check every 2 tiles */ + { + if (0 == (x_tile & 3)) /* check every 4 tiles */ + { + if (32 == x_tile) /* check every 32 tiles */ + { + x_tile = 0; + refresh_vaddr ^= (1 << 10); /* switch nametable */ + attrib_base ^= (1 << 10); + + /* recalculate pointers */ + tile_ptr = &PPU_MEM(refresh_vaddr); + attrib_ptr = &PPU_MEM(attrib_base); + } + + /* Get the attribute byte */ + attrib = *attrib_ptr++; + } + + attrib_shift ^= 2; + col_high = ((attrib >> attrib_shift) & 3) << 2; + } + } + + /* Blank left hand column if need be */ + if (ppu.bg_mask) + { + uint32 *buf_ptr = (uint32 *) vidbuf; + uint32 bg_clear = FULLBG | FULLBG << 8 | FULLBG << 16 | FULLBG << 24; + + ((uint32 *) buf_ptr)[0] = bg_clear; + ((uint32 *) buf_ptr)[1] = bg_clear; + } +} + +/* OAM entry */ +typedef struct obj_s +{ + uint8 y_loc; + uint8 tile; + uint8 atr; + uint8 x_loc; +} obj_t; + +/* TODO: fetch valid OAM a scanline before, like the Real Thing */ +static void ppu_renderoam(uint8 *vidbuf, int scanline) +{ + uint8 *buf_ptr; + uint32 vram_offset, savecol[2]; + int sprite_num, spritecount; + obj_t *sprite_ptr; + uint8 sprite_height; + + if (false == ppu.obj_on) + return; + + /* Get our buffer pointer */ + buf_ptr = vidbuf; + + /* Save left hand column? */ + if (ppu.obj_mask) + { + savecol[0] = ((uint32 *) buf_ptr)[0]; + savecol[1] = ((uint32 *) buf_ptr)[1]; + } + + sprite_height = ppu.obj_height; + vram_offset = ppu.obj_base; + spritecount = 0; + + sprite_ptr = (obj_t *) ppu.oam; + + for (sprite_num = 0; sprite_num < 64; sprite_num++, sprite_ptr++) + { + uint8 *data_ptr, *bmp_ptr; + uint32 vram_adr; + int y_offset; + uint8 tile_index, attrib, col_high; + uint8 sprite_y, sprite_x; + bool check_strike; + int strike_pixel; + + sprite_y = sprite_ptr->y_loc + 1; + + /* Check to see if sprite is out of range */ + if ((sprite_y > scanline) || (sprite_y <= (scanline - sprite_height)) + || (0 == sprite_y) || (sprite_y >= 240)) + continue; + + sprite_x = sprite_ptr->x_loc; + tile_index = sprite_ptr->tile; + attrib = sprite_ptr->atr; + + bmp_ptr = buf_ptr + sprite_x; + + /* Handle $FD/$FE tile VROM switching (PunchOut) */ + if (ppu.latchfunc) + ppu.latchfunc(vram_offset, tile_index); + + /* Get upper two bits of color */ + col_high = ((attrib & 3) << 2); + + /* 8x16 even sprites use $0000, odd use $1000 */ + if (16 == ppu.obj_height) + vram_adr = ((tile_index & 1) << 12) | ((tile_index & 0xFE) << 4); + else + vram_adr = vram_offset + (tile_index << 4); + + /* Get the address of the tile */ + data_ptr = &PPU_MEM(vram_adr); + + /* Calculate offset (line within the sprite) */ + y_offset = scanline - sprite_y; + if (y_offset > 7) + y_offset += 8; + + /* Account for vertical flippage */ + if (attrib & OAMF_VFLIP) + { + if (16 == ppu.obj_height) + y_offset -= 23; + else + y_offset -= 7; + + data_ptr -= y_offset; + } + else + { + data_ptr += y_offset; + } + + /* if we're on sprite 0 and sprite 0 strike flag isn't set, + ** check for a strike + */ + check_strike = (0 == sprite_num) && (false == ppu.strikeflag); + strike_pixel = draw_oamtile(bmp_ptr, attrib, data_ptr[0], data_ptr[8], ppu.palette + 16 + col_high, check_strike); + if (strike_pixel >= 0) + ppu_setstrike(strike_pixel); + + /* maximum of 8 sprites per scanline */ + if (++spritecount == PPU_MAXSPRITE) + { + ppu.stat |= PPU_STATF_MAXSPRITE; + break; + } + } + + /* Restore lefthand column */ + if (ppu.obj_mask) + { + ((uint32 *) buf_ptr)[0] = savecol[0]; + ((uint32 *) buf_ptr)[1] = savecol[1]; + } +} + +/* Fake rendering a line */ +/* This is needed for sprite 0 hits when we're skipping drawing a frame */ +static void ppu_fakeoam(int scanline) +{ + uint8 *data_ptr; + obj_t *sprite_ptr; + uint32 vram_adr, color; + int y_offset; + uint8 pat1, pat2; + uint8 tile_index, attrib; + uint8 sprite_height, sprite_y, sprite_x; + + /* we don't need to be here if strike flag is set */ + + if (false == ppu.obj_on || ppu.strikeflag) + return; + + sprite_height = ppu.obj_height; + sprite_ptr = (obj_t *) ppu.oam; + sprite_y = sprite_ptr->y_loc + 1; + + /* Check to see if sprite is out of range */ + if ((sprite_y > scanline) || (sprite_y <= (scanline - sprite_height)) + || (0 == sprite_y) || (sprite_y > 240)) + return; + + sprite_x = sprite_ptr->x_loc; + tile_index = sprite_ptr->tile; + attrib = sprite_ptr->atr; + + /* 8x16 even sprites use $0000, odd use $1000 */ + if (16 == ppu.obj_height) + vram_adr = ((tile_index & 1) << 12) | ((tile_index & 0xFE) << 4); + else + vram_adr = ppu.obj_base + (tile_index << 4); + + data_ptr = &PPU_MEM(vram_adr); + + /* Calculate offset (line within the sprite) */ + y_offset = scanline - sprite_y; + if (y_offset > 7) + y_offset += 8; + + /* Account for vertical flippage */ + if (attrib & OAMF_VFLIP) + { + if (16 == ppu.obj_height) + y_offset -= 23; + else + y_offset -= 7; + data_ptr -= y_offset; + } + else + { + data_ptr += y_offset; + } + + /* check for a solid sprite 0 pixel */ + pat1 = data_ptr[0]; + pat2 = data_ptr[8]; + color = ((pat2 & 0xAA) << 8) | ((pat2 & 0x55) << 1) + | ((pat1 & 0xAA) << 7) | (pat1 & 0x55); + + if (color) + { + uint8 colors[8]; + + /* buckle up, it's going to get ugly... */ + if (0 == (attrib & OAMF_HFLIP)) + { + colors[0] = (color >> 14) & 3; + colors[1] = (color >> 6) & 3; + colors[2] = (color >> 12) & 3; + colors[3] = (color >> 4) & 3; + colors[4] = (color >> 10) & 3; + colors[5] = (color >> 2) & 3; + colors[6] = (color >> 8) & 3; + colors[7] = color & 3; + } + else + { + colors[7] = (color >> 14) & 3; + colors[6] = (color >> 6) & 3; + colors[5] = (color >> 12) & 3; + colors[4] = (color >> 4) & 3; + colors[3] = (color >> 10) & 3; + colors[2] = (color >> 2) & 3; + colors[1] = (color >> 8) & 3; + colors[0] = color & 3; + } + + if (colors[0]) + ppu_setstrike(sprite_x + 0); + else if (colors[1]) + ppu_setstrike(sprite_x + 1); + else if (colors[2]) + ppu_setstrike(sprite_x + 2); + else if (colors[3]) + ppu_setstrike(sprite_x + 3); + else if (colors[4]) + ppu_setstrike(sprite_x + 4); + else if (colors[5]) + ppu_setstrike(sprite_x + 5); + else if (colors[6]) + ppu_setstrike(sprite_x + 6); + else if (colors[7]) + ppu_setstrike(sprite_x + 7); + } +} + +bool ppu_enabled(void) +{ + return (ppu.bg_on || ppu.obj_on); +} + +static uint8 line[320]; + +static void ppu_renderscanline(bitmap_t *bmp, int scanline, bool draw_flag) +{ + uint8 *buf = &line[0]; //bmp->line[scanline]; + + /* start scanline - transfer ppu latch into vaddr */ + if (ppu.bg_on || ppu.obj_on) + { + if (0 == scanline) + { + ppu.vaddr = ppu.vaddr_latch; + } + else + { + ppu.vaddr &= ~0x041F; + ppu.vaddr |= (ppu.vaddr_latch & 0x041F); + } + } + + if (draw_flag) + ppu_renderbg(buf); + + /* TODO: fetch obj data 1 scanline before */ + if (true == ppu.drawsprites && true == draw_flag) + ppu_renderoam(buf, scanline); + else + ppu_fakeoam(scanline); + + if (draw_flag) + emu_DrawLine(buf, 256, 240, scanline); +} + + +void ppu_endscanline(int scanline) +{ + /* modify vram address at end of scanline */ + if (scanline < 240 && (ppu.bg_on || ppu.obj_on)) + { + int ytile; + + /* check for max 3 bit y tile offset */ + if (7 == (ppu.vaddr >> 12)) + { + ppu.vaddr &= ~0x7000; /* clear y tile offset */ + ytile = (ppu.vaddr >> 5) & 0x1F; + + if (29 == ytile) + { + ppu.vaddr &= ~0x03E0; /* clear y tile */ + ppu.vaddr ^= 0x0800; /* toggle nametable */ + } + else if (31 == ytile) + { + ppu.vaddr &= ~0x03E0; /* clear y tile */ + } + else + { + ppu.vaddr += 0x20; /* increment y tile */ + } + } + else + { + ppu.vaddr += 0x1000; /* increment tile y offset */ + } + } +} + +void ppu_checknmi(void) +{ + if (ppu.ctrl0 & PPU_CTRL0F_NMI) + nes_nmi(); +} + +void ppu_scanline(bitmap_t *bmp, int scanline, bool draw_flag) +{ + if (scanline < 240) + { + /* Lower the Max Sprite per scanline flag */ + ppu.stat &= ~PPU_STATF_MAXSPRITE; + ppu_renderscanline(bmp, scanline, draw_flag); + } + else if (241 == scanline) + { + ppu.stat |= PPU_STATF_VBLANK; + ppu.vram_accessible = true; + } + else if (261 == scanline) + { + ppu.stat &= ~PPU_STATF_VBLANK; + ppu.strikeflag = false; + ppu.strike_cycle = (uint32) -1; + + ppu.vram_accessible = false; + } +} + + + +/* Stuff for the OAM viewer */ +static void draw_sprite(bitmap_t *bmp, int x, int y, uint8 tile_num, uint8 attrib) +{ + int line, height; + int col_high, vram_adr; + uint8 *vid, *data_ptr; + + vid = bmp->line[y] + x; + + /* Get upper two bits of color */ + col_high = ((attrib & 3) << 2); + + /* 8x16 even sprites use $0000, odd use $1000 */ + height = ppu.obj_height; + if (16 == height) + vram_adr = ((tile_num & 1) << 12) | ((tile_num & 0xFE) << 4); + /* else just use the offset from $2000 */ + else + vram_adr = ppu.obj_base + (tile_num << 4); + + data_ptr = &PPU_MEM(vram_adr); + + for (line = 0; line < height; line++) + { + if (line == 8) + data_ptr += 8; + + draw_bgtile(vid, data_ptr[0], data_ptr[8], ppu.palette + 16 + col_high); + //draw_oamtile(vid, attrib, data_ptr[0], data_ptr[8], ppu.palette + 16 + col_high); + + data_ptr++; + vid += bmp->pitch; + } +} + +void ppu_dumpoam(bitmap_t *bmp, int x_loc, int y_loc) +{ + int sprite, x_pos, y_pos, height; + obj_t *spr_ptr; + + spr_ptr = (obj_t *) ppu.oam; + height = ppu.obj_height; + + for (sprite = 0; sprite < 64; sprite++) + { + x_pos = ((sprite & 0x0F) << 3) + (sprite & 0x0F) + x_loc; + if (height == 16) + y_pos = (sprite & 0xF0) + (sprite >> 4) + y_loc; + else + y_pos = ((sprite & 0xF0) >> 1) + (sprite >> 4) + y_loc; + + draw_box(bmp, x_pos, y_pos, height); + + if (spr_ptr->y_loc && spr_ptr->y_loc < 240) + draw_sprite(bmp, x_pos + 1, y_pos + 1, spr_ptr->tile, spr_ptr->atr); + else + draw_deadsprite(bmp, x_pos + 1, y_pos + 1, height); + + spr_ptr++; + } +} + +/* More of a debugging thing than anything else */ +void ppu_dumppattern(bitmap_t *bmp, int table_num, int x_loc, int y_loc, int col) +{ + int x_tile, y_tile; + uint8 *bmp_ptr, *data_ptr, *ptr; + int tile_num, line; + uint8 col_high; + + tile_num = 0; + col_high = col << 2; + + for (y_tile = 0; y_tile < 16; y_tile++) + { + /* Get our pointer to the bitmap */ + bmp_ptr = bmp->line[y_loc] + x_loc; + + for (x_tile = 0; x_tile < 16; x_tile++) + { + data_ptr = &PPU_MEM((table_num << 12) + (tile_num << 4)); + ptr = bmp_ptr; + + for (line = 0; line < 8; line ++) + { + draw_bgtile(ptr, data_ptr[0], data_ptr[8], ppu.palette + col_high); + data_ptr++; + ptr += bmp->pitch; + } + + bmp_ptr += 8; + tile_num++; + } + y_loc += 8; + } +} + +/* +** $Log: nes_ppu.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.14 2000/11/29 12:58:23 matt +** timing/fiq fixes +** +** Revision 1.13 2000/11/27 19:36:15 matt +** more timing fixes +** +** Revision 1.12 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.11 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.10 2000/11/24 14:56:02 matt +** fixed a long-standing sprite 0 strike bug +** +** Revision 1.9 2000/11/20 13:23:17 matt +** PPU fixes +** +** Revision 1.8 2000/11/19 13:47:30 matt +** problem with frame irqs fixed +** +** Revision 1.7 2000/11/19 13:40:19 matt +** more accurate ppu behavior +** +** Revision 1.6 2000/11/14 12:09:37 matt +** only generate the palette once, please +** +** Revision 1.5 2000/11/11 14:51:43 matt +** context get/set fixed +** +** Revision 1.4 2000/11/09 12:35:50 matt +** fixed timing problem with VRAM reads/writes +** +** Revision 1.3 2000/11/05 16:35:41 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.2 2000/10/27 12:55:03 matt +** palette generating functions now take *this pointers +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.33 2000/10/23 15:53:08 matt +** better system handling +** +** Revision 1.32 2000/10/22 15:02:32 matt +** simplified mirroring +** +** Revision 1.31 2000/10/21 21:36:04 matt +** ppu cleanups / fixes +** +** Revision 1.30 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.29 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.28 2000/10/08 17:54:32 matt +** reject VRAM access out of VINT period +** +** Revision 1.27 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.26 2000/09/08 11:57:29 matt +** no more nes_fiq +** +** Revision 1.25 2000/09/07 21:57:31 matt +** api change +** +** Revision 1.24 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.23 2000/07/30 06:13:12 matt +** default to no FIQs on startup +** +** Revision 1.22 2000/07/30 04:32:32 matt +** emulation of the NES frame IRQ +** +** Revision 1.21 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.20 2000/07/23 15:12:43 matt +** removed unused variables, changed INLINE +** +** Revision 1.19 2000/07/21 04:50:39 matt +** moved palette calls out of nofrendo.c and into ppu_create +** +** Revision 1.18 2000/07/17 05:12:55 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.17 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.16 2000/07/11 04:42:39 matt +** updated for new screen dimension defines +** +** Revision 1.15 2000/07/10 19:10:16 matt +** should bomb out now if a game tries to write to VROM +** +** Revision 1.14 2000/07/10 05:28:30 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.13 2000/07/10 03:03:16 matt +** added ppu_getcontext() routine +** +** Revision 1.12 2000/07/09 03:46:05 matt +** using pitch instead of width... +** +** Revision 1.11 2000/07/06 16:42:40 matt +** better palette setting interface +** +** Revision 1.10 2000/07/05 22:49:25 matt +** changed mmc2 (punchout) tile-access switching +** +** Revision 1.9 2000/07/04 23:13:26 matt +** added an irq line drawing debug feature hack +** +** Revision 1.8 2000/06/26 04:58:08 matt +** accuracy changes +** +** Revision 1.7 2000/06/22 02:13:49 matt +** more accurate emulation of $2002 +** +** Revision 1.6 2000/06/20 20:42:47 matt +** accuracy changes +** +** Revision 1.5 2000/06/20 00:05:12 matt +** tested and verified STAT quirk, added code +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_ppu.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes_ppu.h new file mode 100755 index 0000000..46a9813 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_ppu.h @@ -0,0 +1,241 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_ppu.h +** +** NES Picture Processing Unit (PPU) emulation header file +** $Id: nes_ppu.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_PPU_H_ +#define _NES_PPU_H_ + +#include "bitmap.h" + +/* PPU register defines */ +#define PPU_CTRL0 0x2000 +#define PPU_CTRL1 0x2001 +#define PPU_STAT 0x2002 +#define PPU_OAMADDR 0x2003 +#define PPU_OAMDATA 0x2004 +#define PPU_SCROLL 0x2005 +#define PPU_VADDR 0x2006 +#define PPU_VDATA 0x2007 + +#define PPU_OAMDMA 0x4014 +#define PPU_JOY0 0x4016 +#define PPU_JOY1 0x4017 + +/* $2000 */ +#define PPU_CTRL0F_NMI 0x80 +#define PPU_CTRL0F_OBJ16 0x20 +#define PPU_CTRL0F_BGADDR 0x10 +#define PPU_CTRL0F_OBJADDR 0x08 +#define PPU_CTRL0F_ADDRINC 0x04 +#define PPU_CTRL0F_NAMETAB 0x03 + +/* $2001 */ +#define PPU_CTRL1F_OBJON 0x10 +#define PPU_CTRL1F_BGON 0x08 +#define PPU_CTRL1F_OBJMASK 0x04 +#define PPU_CTRL1F_BGMASK 0x02 + +/* $2002 */ +#define PPU_STATF_VBLANK 0x80 +#define PPU_STATF_STRIKE 0x40 +#define PPU_STATF_MAXSPRITE 0x20 + +/* Sprite attribute byte bitmasks */ +#define OAMF_VFLIP 0x80 +#define OAMF_HFLIP 0x40 +#define OAMF_BEHIND 0x20 + +/* Maximum number of sprites per horizontal scanline */ +#define PPU_MAXSPRITE 8 + +/* some mappers do *dumb* things */ +typedef void (*ppulatchfunc_t)(uint32 address, uint8 value); +typedef void (*ppuvromswitch_t)(uint8 value); + +typedef struct ppu_s +{ + /* big nasty memory chunks */ + uint8 nametab[0x1000]; + uint8 oam[256]; + uint8 palette[32]; + uint8 *page[16]; + + /* hardware registers */ + uint8 ctrl0, ctrl1, stat, oam_addr; + uint32 vaddr, vaddr_latch; + int tile_xofs, flipflop; + int vaddr_inc; + uint32 tile_nametab; + + uint8 obj_height; + uint32 obj_base, bg_base; + + bool bg_on, obj_on; + bool obj_mask, bg_mask; + + uint8 latch, vdata_latch; + uint8 strobe; + + bool strikeflag; + uint32 strike_cycle; + + /* callbacks for naughty mappers */ + ppulatchfunc_t latchfunc; + ppuvromswitch_t vromswitch; + + /* copy of our current palette */ + rgb_t curpal[256]; + + bool vram_accessible; + + bool vram_present; + bool drawsprites; +} ppu_t; + + +/* TODO: should use this pointers */ +extern void ppu_setlatchfunc(ppulatchfunc_t func); +extern void ppu_setvromswitch(ppuvromswitch_t func); + +extern void ppu_getcontext(ppu_t *dest_ppu); +extern void ppu_setcontext(ppu_t *src_ppu); + +/* Mirroring */ +/* TODO: this is only used bloody once */ +extern void ppu_mirrorhipages(void); + +extern void ppu_mirror(int nt1, int nt2, int nt3, int nt4); + +extern void ppu_setpage(int size, int page_num, uint8 *location); +extern uint8 *ppu_getpage(int page); + + +/* control */ +extern void ppu_reset(int reset_type); +extern bool ppu_enabled(void); +extern void ppu_scanline(bitmap_t *bmp, int scanline, bool draw_flag); +extern void ppu_endscanline(int scanline); +extern void ppu_checknmi(); + +extern ppu_t *ppu_create(void); +extern void ppu_destroy(ppu_t **ppu); + +/* IO */ +extern uint8 ppu_read(uint32 address); +extern void ppu_write(uint32 address, uint8 value); +extern uint8 ppu_readhigh(uint32 address); +extern void ppu_writehigh(uint32 address, uint8 value); + +/* rendering */ +extern void ppu_setpal(ppu_t *src_ppu, rgb_t *pal); +extern void ppu_setdefaultpal(ppu_t *src_ppu); + +/* bleh */ +extern void ppu_dumppattern(bitmap_t *bmp, int table_num, int x_loc, int y_loc, int col); +extern void ppu_dumpoam(bitmap_t *bmp, int x_loc, int y_loc); +extern void ppu_displaysprites(bool display); + +#endif /* _NES_PPU_H_ */ + +/* +** $Log: nes_ppu.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.8 2000/11/29 12:58:23 matt +** timing/fiq fixes +** +** Revision 1.7 2000/11/27 19:36:16 matt +** more timing fixes +** +** Revision 1.6 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.5 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.4 2000/11/19 13:40:19 matt +** more accurate ppu behavior +** +** Revision 1.3 2000/11/05 16:35:41 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.2 2000/10/27 12:55:03 matt +** palette generating functions now take *this pointers +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.19 2000/10/22 15:02:32 matt +** simplified mirroring +** +** Revision 1.18 2000/10/21 21:36:04 matt +** ppu cleanups / fixes +** +** Revision 1.17 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.16 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.15 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.14 2000/07/30 04:32:33 matt +** emulation of the NES frame IRQ +** +** Revision 1.13 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.12 2000/07/17 05:12:56 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.11 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.10 2000/07/10 05:28:30 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.9 2000/07/10 03:03:16 matt +** added ppu_getcontext() routine +** +** Revision 1.8 2000/07/06 16:42:40 matt +** better palette setting interface +** +** Revision 1.7 2000/07/04 23:13:26 matt +** added an irq line drawing debug feature hack +** +** Revision 1.6 2000/06/26 04:58:08 matt +** accuracy changes +** +** Revision 1.5 2000/06/20 00:04:35 matt +** removed STATQUIRK macro +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_rom.h b/MCUME_esp32/espnofrendo/main/nofrendo/nes_rom.h new file mode 100755 index 0000000..f6c17a2 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_rom.h @@ -0,0 +1,110 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_rom.h +** +** NES ROM loading/saving related defines / prototypes +** $Id: nes_rom.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_ROM_H_ +#define _NES_ROM_H_ + +#include +#include "osd.h" + +typedef enum +{ + MIRROR_HORIZ = 0, + MIRROR_VERT = 1 +} mirror_t; + +#define ROM_FLAG_BATTERY 0x01 +#define ROM_FLAG_TRAINER 0x02 +#define ROM_FLAG_FOURSCREEN 0x04 +#define ROM_FLAG_VERSUS 0x08 + +typedef struct rominfo_s +{ + /* pointers to ROM and VROM */ + uint8 *rom, *vrom; + + /* pointers to SRAM and VRAM */ + uint8 *sram, *vram; + + /* number of banks */ + int rom_banks, vrom_banks; + int sram_banks, vram_banks; + + int mapper_number; + mirror_t mirror; + + uint8 flags; + + char filename[PATH_MAX + 1]; +} rominfo_t; + + +extern int rom_checkmagic(const char *filename); +extern rominfo_t *rom_load(const char *filename); +extern void rom_free(rominfo_t **rominfo); +extern char *rom_getinfo(rominfo_t *rominfo); + + +#endif /* _NES_ROM_H_ */ + +/* +** $Log: nes_rom.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.11 2000/10/22 15:01:29 matt +** irrelevant mirroring modes removed +** +** Revision 1.10 2000/10/17 03:22:38 matt +** cleaning up rom module +** +** Revision 1.9 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.8 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.7 2000/07/25 02:20:58 matt +** cleanups +** +** Revision 1.6 2000/07/19 15:59:39 neil +** PATH_MAX, strncpy, snprintf, and strncat are our friends +** +** Revision 1.5 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nes_rom_light.c b/MCUME_esp32/espnofrendo/main/nofrendo/nes_rom_light.c new file mode 100644 index 0000000..b3bffd3 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nes_rom_light.c @@ -0,0 +1,411 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_rom.c +** +** NES ROM loading/saving related functions +** $Id: nes_rom.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +/* TODO: make this a generic ROM loading routine */ + +#include +#include +#include "noftypes.h" +#include "nes_rom.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes.h" +#include "log.h" +#include "osd.h" + +extern char *osd_getromdata(); + +/* Max length for displayed filename */ +#define ROM_DISP_MAXLEN 20 + + +#define ROM_FOURSCREEN 0x08 +#define ROM_TRAINER 0x04 +#define ROM_BATTERY 0x02 +#define ROM_MIRRORTYPE 0x01 +#define ROM_INES_MAGIC "NES\x1A" + +//ToDo: packed - JD +typedef struct inesheader_s +{ + uint8 ines_magic[4] ; + uint8 rom_banks ; + uint8 vrom_banks ; + uint8 rom_type ; + uint8 mapper_hinybble ; + uint8 reserved[8] ; +} inesheader_t; + + +#define TRAINER_OFFSET 0x1000 +#define TRAINER_LENGTH 0x200 +#define VRAM_LENGTH 0x2000 + +#define ROM_BANK_LENGTH 0x4000 +#define VROM_BANK_LENGTH 0x2000 + +#define SRAM_BANK_LENGTH 0x0400 +#define VRAM_BANK_LENGTH 0x2000 + + + + + +static int rom_loadrom(unsigned char **rom, rominfo_t *rominfo) +{ + ASSERT(rom); + ASSERT(rominfo); + /* Allocate ROM space, and load it up! */ + rominfo->rom=*rom; + *rom+=ROM_BANK_LENGTH*rominfo->rom_banks; + + /* If there's VROM, allocate and stuff it in */ + if (rominfo->vrom_banks) + { + rominfo->vrom=*rom; + *rom+=VROM_BANK_LENGTH*rominfo->vrom_banks; + } + else + { + rominfo->vram = emu_Malloc(VRAM_LENGTH); + if (NULL == rominfo->vram) + { + return -1; + } + memset(rominfo->vram, 0, VRAM_LENGTH); + } + return 0; +} + + +static int *rom_findrom(const char *filename, rominfo_t *rominfo) +{ + int fp; + + ASSERT(rominfo); + + if (NULL == filename) + return NULL; + + /* Make a copy of the name so we can extend it */ + osd_fullname(rominfo->filename, filename); + + fp = emu_FileOpen(rominfo->filename); + if (!fp) + { + /* Didn't find the file? Maybe the .NES extension was omitted */ + if (NULL == strrchr(rominfo->filename, '.')) + strncat(rominfo->filename, ".nes", PATH_MAX - strlen(rominfo->filename)); + + /* this will either return NULL or a valid file pointer */ + fp = emu_FileOpen(rominfo->filename); + } + + return fp; +} + +/* Add ROM name to a list with dirty headers */ +static int rom_adddirty(char *filename) +{ + return 0; +} + +/* return 0 if this *is* an iNES file */ +int rom_checkmagic(const char *filename) +{ + inesheader_t head; + rominfo_t rominfo; + int fp; + + fp = rom_findrom(filename, &rominfo); + if (0 == fp) + return -1; + + emu_FileRead(&head, 1*sizeof(head)); + + emu_FileClose(); + + if (0 == memcmp(head.ines_magic, ROM_INES_MAGIC, 4)) + /* not an iNES file */ + return 0; + + return -1; +} + + + +static int rom_getheader(unsigned char **rom, rominfo_t *rominfo) +{ +#define RESERVED_LENGTH 8 + inesheader_t head; + uint8 reserved[RESERVED_LENGTH]; + bool header_dirty; + + ASSERT(rom); + ASSERT(*rom); + ASSERT(rominfo); + + /* Read in the header */ +// _fread(&head, 1, sizeof(head), fp); + log_printf("Head: %p (%x %x %x %x)\n", *rom, (*rom)[0], (*rom)[1], (*rom)[2], (*rom)[3]); + memcpy(&head, *rom, sizeof(head)); + *rom+=sizeof(head); + + if (memcmp(head.ines_magic, ROM_INES_MAGIC, 4)) + { + return -1; + } + + rominfo->rom_banks = head.rom_banks; + rominfo->vrom_banks = head.vrom_banks; + /* iNES assumptions */ + rominfo->sram_banks = 8; /* 1kB banks, so 8KB */ + rominfo->vram_banks = 1; /* 8kB banks, so 8KB */ + rominfo->mirror = (head.rom_type & ROM_MIRRORTYPE) ? MIRROR_VERT : MIRROR_HORIZ; + rominfo->flags = 0; + if (head.rom_type & ROM_BATTERY) + rominfo->flags |= ROM_FLAG_BATTERY; + if (head.rom_type & ROM_TRAINER) + rominfo->flags |= ROM_FLAG_TRAINER; + if (head.rom_type & ROM_FOURSCREEN) + rominfo->flags |= ROM_FLAG_FOURSCREEN; + /* TODO: fourscreen a mirroring type? */ + rominfo->mapper_number = head.rom_type >> 4; + + /* Do a compare - see if we've got a clean extended header */ + memset(reserved, 0, RESERVED_LENGTH); + if (0 == memcmp(head.reserved, reserved, RESERVED_LENGTH)) + { + /* We were clean */ + header_dirty = false; + rominfo->mapper_number |= (head.mapper_hinybble & 0xF0); + } + else + { + header_dirty = true; + + /* @!?#@! DiskDude. */ + if (('D' == head.mapper_hinybble) && (0 == memcmp(head.reserved, "iskDude!", 8))) + log_printf("`DiskDude!' found in ROM header, ignoring high mapper nybble\n"); + else + { + log_printf("ROM header dirty, possible problem\n"); + rominfo->mapper_number |= (head.mapper_hinybble & 0xF0); + } + + rom_adddirty(rominfo->filename); + } + + /* TODO: this is an ugly hack, but necessary, I guess */ + /* Check for VS unisystem mapper */ + if (99 == rominfo->mapper_number) + rominfo->flags |= ROM_FLAG_VERSUS; + + return 0; +} + +/* Build the info string for ROM display */ +char *rom_getinfo(rominfo_t *rominfo) +{ + static char info[PATH_MAX + 1]; + char romname[PATH_MAX + 1], temp[PATH_MAX + 1]; + + /* Look to see if we were given a path along with filename */ + /* TODO: strip extensions */ + if (strrchr(rominfo->filename, PATH_SEP)) + strncpy(romname, strrchr(rominfo->filename, PATH_SEP) + 1, PATH_MAX); + else + strncpy(romname, rominfo->filename, PATH_MAX); + + /* If our filename is too long, truncate our displayed filename */ + if (strlen(romname) > ROM_DISP_MAXLEN) + { + strncpy(info, romname, ROM_DISP_MAXLEN - 3); + strcpy(info + (ROM_DISP_MAXLEN - 3), "..."); + } + else + { + strcpy(info, romname); + } + + sprintf(temp, " [%d] %dk/%dk %c", rominfo->mapper_number, + rominfo->rom_banks * 16, rominfo->vrom_banks * 8, + (rominfo->mirror == MIRROR_VERT) ? 'V' : 'H'); + + /* Stick it on there! */ + strncat(info, temp, PATH_MAX - strlen(info)); + + if (rominfo->flags & ROM_FLAG_BATTERY) + strncat(info, "B", PATH_MAX - strlen(info)); + if (rominfo->flags & ROM_FLAG_TRAINER) + strncat(info, "T", PATH_MAX - strlen(info)); + if (rominfo->flags & ROM_FLAG_FOURSCREEN) + strncat(info, "4", PATH_MAX - strlen(info)); + + return info; +} + +/* Load a ROM image into memory */ +rominfo_t *rom_load(const char *filename) +{ + unsigned char *rom=(unsigned char*)osd_getromdata(); + rominfo_t *rominfo; + + rominfo = emu_Malloc(sizeof(rominfo_t)); + if (NULL == rominfo) + return NULL; + + memset(rominfo, 0, sizeof(rominfo_t)); + + /* Get the header and stick it into rominfo struct */ + if (rom_getheader(&rom, rominfo)) + goto _fail; + + /* Make sure we really support the mapper */ + if (false == mmc_peek(rominfo->mapper_number)) + { + goto _fail; + } + + if (rom_loadrom(&rom, rominfo)) + goto _fail; + + return rominfo; + +_fail: + rom_free(&rominfo); + return NULL; +} + +/* Free a ROM */ +void rom_free(rominfo_t **rominfo) +{ + if (NULL == *rominfo) + { + return; + } + + /* Restore palette if we loaded in a VS jobber */ + if ((*rominfo)->flags & ROM_FLAG_VERSUS) + { + /* TODO: bad idea calling nes_getcontextptr... */ + ppu_setdefaultpal(nes_getcontextptr()->ppu); + log_printf("Default NES palette restored\n"); + } + + + if ((*rominfo)->sram) + free((*rominfo)->sram); + if ((*rominfo)->rom) + free((*rominfo)->rom); + if ((*rominfo)->vrom) + free((*rominfo)->vrom); + if ((*rominfo)->vram) + free((*rominfo)->vram); + + free(*rominfo); +} + +/* +** $Log: nes_rom.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.8 2000/11/21 13:28:40 matt +** take care to zero allocated mem +** +** Revision 1.7 2000/11/09 14:07:28 matt +** state load fixed, state save mostly fixed +** +** Revision 1.6 2000/10/28 14:24:54 matt +** where did I put that underscore? +** +** Revision 1.5 2000/10/27 12:56:35 matt +** api change for ppu palette functions +** +** Revision 1.4 2000/10/26 22:51:44 matt +** correct NULL filename handling +** +** Revision 1.3 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.19 2000/10/21 14:35:58 matt +** typo +** +** Revision 1.18 2000/10/17 03:22:37 matt +** cleaning up rom module +** +** Revision 1.17 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.16 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.15 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.14 2000/07/30 04:31:26 matt +** automagic loading of the nofrendo intro +** +** Revision 1.13 2000/07/25 02:20:58 matt +** cleanups +** +** Revision 1.12 2000/07/20 01:53:27 matt +** snprintf() ain't no standard function, eh? +** +** Revision 1.11 2000/07/19 16:06:54 neil +** little error fixed (tempinfo vs rominfo->info) +** +** Revision 1.10 2000/07/19 15:59:39 neil +** PATH_MAX, strncpy, snprintf, and strncat are our friends +** +** Revision 1.9 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.8 2000/07/06 16:47:50 matt +** new ppu palette setting calls +** +** Revision 1.7 2000/07/05 23:21:54 neil +** fclose(fp) should not be done if fp == NULL +** +** Revision 1.6 2000/07/04 04:45:14 matt +** changed include +** +** Revision 1.5 2000/06/26 04:56:10 matt +** minor cleanup +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nesinput.c b/MCUME_esp32/espnofrendo/main/nofrendo/nesinput.c new file mode 100755 index 0000000..f881070 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nesinput.c @@ -0,0 +1,212 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nesinput.c +** +** Event handling system routines +** $Id: nesinput.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nesinput.h" +#include "log.h" + +/* TODO: make a linked list of inputs sources, so they +** can be removed if need be +*/ + +static nesinput_t *nes_input[MAX_CONTROLLERS]; +static int active_entries = 0; + +/* read counters */ +static int pad0_readcount, pad1_readcount, ppad_readcount, ark_readcount; + + +static int retrieve_type(int type) +{ + int i, value = 0; + + for (i = 0; i < active_entries; i++) + { + ASSERT(nes_input[i]); + + if (type == nes_input[i]->type) + value |= nes_input[i]->data; + } + + return value; +} + +static uint8 get_pad0(void) +{ + uint8 value; + + value = (uint8) retrieve_type(INP_JOYPAD0); + + /* mask out left/right simultaneous keypresses */ + if ((value & INP_PAD_UP) && (value & INP_PAD_DOWN)) + value &= ~(INP_PAD_UP | INP_PAD_DOWN); + + if ((value & INP_PAD_LEFT) && (value & INP_PAD_RIGHT)) + value &= ~(INP_PAD_LEFT | INP_PAD_RIGHT); + + /* return (0x40 | value) due to bus conflicts */ + return (0x40 | ((value >> pad0_readcount++) & 1)); +} + +static uint8 get_pad1(void) +{ + uint8 value; + + value = (uint8) retrieve_type(INP_JOYPAD1); + + /* mask out left/right simultaneous keypresses */ + if ((value & INP_PAD_UP) && (value & INP_PAD_DOWN)) + value &= ~(INP_PAD_UP | INP_PAD_DOWN); + + if ((value & INP_PAD_LEFT) && (value & INP_PAD_RIGHT)) + value &= ~(INP_PAD_LEFT | INP_PAD_RIGHT); + + /* return (0x40 | value) due to bus conflicts */ + return (0x40 | ((value >> pad1_readcount++) & 1)); +} + +static uint8 get_zapper(void) +{ + return (uint8) (retrieve_type(INP_ZAPPER)); +} + +static uint8 get_powerpad(void) +{ + int value; + uint8 ret_val = 0; + + value = retrieve_type(INP_POWERPAD); + + if (((value >> 8) >> ppad_readcount) & 1) + ret_val |= 0x10; + if (((value & 0xFF) >> ppad_readcount) & 1) + ret_val |= 0x08; + + ppad_readcount++; + + return ret_val; +} + +static uint8 get_vsdips0(void) +{ + return (retrieve_type(INP_VSDIPSW0)); +} + +static uint8 get_vsdips1(void) +{ + return (retrieve_type(INP_VSDIPSW1)); +} + +static uint8 get_arkanoid(void) +{ + uint8 value = retrieve_type(INP_ARKANOID); + + if ((value >> (7 - ark_readcount++)) & 1) + return 0x02; + else + return 0; +} + +/* return input state for all types indicated (can be ORed together) */ +uint8 input_get(int types) +{ + uint8 value = 0; + + if (types & INP_JOYPAD0) + value |= get_pad0(); + if (types & INP_JOYPAD1) + value |= get_pad1(); + if (types & INP_ZAPPER) + value |= get_zapper(); + if (types & INP_POWERPAD) + value |= get_powerpad(); + if (types & INP_VSDIPSW0) + value |= get_vsdips0(); + if (types & INP_VSDIPSW1) + value |= get_vsdips1(); + if (types & INP_ARKANOID) + value |= get_arkanoid(); + + return value; +} + +/* register an input type */ +void input_register(nesinput_t *input) +{ + if (NULL == input) + return; + + nes_input[active_entries] = input; + active_entries++; +} + +void input_event(nesinput_t *input, int state, int value) +{ + ASSERT(input); + + if (state == INP_STATE_MAKE) + input->data |= value; /* OR it in */ + else /* break state */ + input->data &= ~value; /* mask it out */ +} + +void input_strobe(void) +{ + pad0_readcount = 0; + pad1_readcount = 0; + ppad_readcount = 0; + ark_readcount = 0; +} + +/* +** $Log: nesinput.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.9 2000/09/10 23:25:03 matt +** minor changes +** +** Revision 1.8 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.7 2000/07/23 15:11:45 matt +** removed unused variables +** +** Revision 1.6 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.5 2000/07/04 04:56:50 matt +** include changes +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nesinput.h b/MCUME_esp32/espnofrendo/main/nofrendo/nesinput.h new file mode 100755 index 0000000..49871dc --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nesinput.h @@ -0,0 +1,104 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nesinput.h +** +** Platform independent input definitions +** $Id: nesinput.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $ +*/ + +#ifndef _NESINPUT_H_ +#define _NESINPUT_H_ + +/* NES control pad bitmasks */ +#define INP_PAD_A 0x01 +#define INP_PAD_B 0x02 +#define INP_PAD_SELECT 0x04 +#define INP_PAD_START 0x08 +#define INP_PAD_UP 0x10 +#define INP_PAD_DOWN 0x20 +#define INP_PAD_LEFT 0x40 +#define INP_PAD_RIGHT 0x80 + +#define INP_ZAPPER_HIT 0x00 +#define INP_ZAPPER_MISS 0x08 +#define INP_ZAPPER_TRIG 0x10 + +#define INP_JOYPAD0 0x0001 +#define INP_JOYPAD1 0x0002 +#define INP_ZAPPER 0x0004 +#define INP_POWERPAD 0x0008 +#define INP_ARKANOID 0x0010 +#define INP_VSDIPSW0 0x0020 +#define INP_VSDIPSW1 0x0040 + +/* upper byte is what's returned in D4, lower is D3 */ +#define INP_PPAD_1 0x0002 +#define INP_PPAD_2 0x0001 +#define INP_PPAD_3 0x0200 +#define INP_PPAD_4 0x0100 +#define INP_PPAD_5 0x0004 +#define INP_PPAD_6 0x0010 +#define INP_PPAD_7 0x0080 +#define INP_PPAD_8 0x0800 +#define INP_PPAD_9 0x0008 +#define INP_PPAD_10 0x0020 +#define INP_PPAD_11 0x0040 +#define INP_PPAD_12 0x0400 + + +enum +{ + INP_STATE_BREAK, + INP_STATE_MAKE +}; + +typedef struct nesinput_s +{ + int type; + int data; +} nesinput_t; + +#define MAX_CONTROLLERS 32 + +extern uint8 input_get(int type); +extern void input_register(nesinput_t *input); +extern void input_event(nesinput_t *input, int state, int value); +extern void input_strobe(void); + +#endif /* _NESINPUT_H_ */ + +/* +** $Log: nesinput.h,v $ +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.6 2000/09/10 23:25:02 matt +** minor changes +** +** Revision 1.5 2000/07/17 01:52:29 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nofconfig.h b/MCUME_esp32/espnofrendo/main/nofrendo/nofconfig.h new file mode 100755 index 0000000..44005ff --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nofconfig.h @@ -0,0 +1,49 @@ +/* Nofrendo Configuration API +** +** This file is in the public domain. +** +** $Id: nofconfig.h,v 1.1 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#ifndef CONFIG_FILE +#define CONFIG_FILE "nofrendo.cfg" +#endif + +typedef struct config_s +{ + char *filename; +} config_t; + +extern config_t config; + +#endif /* !_CONFIG_H_ */ + +/* +** $Log: nofconfig.h,v $ +** Revision 1.1 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.5 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/07/19 15:58:55 neil +** config file now configurable (ha) +** +** Revision 1.3 2000/07/11 14:59:27 matt +** minor cosmetics.. =) +** +** Revision 1.2 2000/07/11 13:35:38 bsittler +** Changed the config API, implemented config file "nofrendo.cfg". The +** GGI drivers use the group [GGI]. Visual= and Mode= keys are understood. +** +** Revision 1.1 2000/07/11 07:46:11 neil +** Initial commit +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nofrendo.c b/MCUME_esp32/espnofrendo/main/nofrendo/nofrendo.c new file mode 100644 index 0000000..123ba5d --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nofrendo.c @@ -0,0 +1,394 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nofrendo.c +** +** Entry point of program +** Note: all architectures should call these functions +** $Id: nofrendo.c,v 1.3 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include "noftypes.h" +#include "nofrendo.h" +#include "event.h" +#include "nofconfig.h" +#include "log.h" +#include "osd.h" +#include "vid_drv.h" + +/* emulated system includes */ +#include "nes.h" + +/* our global machine structure */ +static struct +{ + char *filename, *nextfilename; + system_t type, nexttype; + + union + { + nes_t *nes; + } machine; + + int refresh_rate; + + bool quit; +} console; + +/* our happy little timer ISR */ +volatile int nofrendo_ticks = 0; +static void timer_isr(void) +{ + nofrendo_ticks++; +} + +static void timer_isr_end(void) {} /* code marker for djgpp */ + +static void shutdown_everything(void) +{ + if (console.filename) + { + free(console.filename); + console.filename = NULL; + } + if (console.nextfilename) + { + free(console.nextfilename); + console.nextfilename = NULL; + } + + //config.close(); JMH + osd_shutdown(); + vid_shutdown(); + log_shutdown(); +} + +/* End the current context */ +void main_eject(void) +{ + switch (console.type) + { + case system_nes: + nes_poweroff(); + nes_destroy(&(console.machine.nes)); + break; + + default: + break; + } + + if (NULL != console.filename) + { + free(console.filename); + console.filename = NULL; + } + console.type = system_unknown; +} + +/* Act on the user's quit requests */ +void main_quit(void) +{ + console.quit = true; + + main_eject(); + + /* if there's a pending filename / system, clear */ + if (NULL != console.nextfilename) + { + free(console.nextfilename); + console.nextfilename = NULL; + } + console.nexttype = system_unknown; +} + +/* brute force system autodetection */ +static system_t detect_systemtype(const char *filename) +{ + if (NULL == filename) + return system_unknown; + + if (0 == nes_isourfile(filename)) + return system_nes; + + /* can't figure out what this thing is */ + return system_unknown; +} + +static int install_timer(int hertz) +{ + return osd_installtimer(hertz, (void *) timer_isr, + (int) timer_isr_end - (int) timer_isr, + (void *) &nofrendo_ticks, + sizeof(nofrendo_ticks)); +} + +/* This assumes there is no current context */ +static int internal_insert(const char *filename, system_t type) +{ + /* autodetect system type? */ + if (system_autodetect == type) + type = detect_systemtype(filename); + + console.filename = strdup(filename); + console.type = type; + + /* set up the event system for this system type */ + event_set_system(type); + + switch (console.type) + { + case system_nes: + console.machine.nes = nes_create(); + if (NULL == console.machine.nes) + { + log_printf("Failed to create NES instance.\n"); + return -1; + } + if (nes_insertcart(console.filename, console.machine.nes)) + return -1; + vid_setmode(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT); + if (install_timer(NES_REFRESH_RATE)) + return -1; + + nes_emulate(); + break; + + case system_unknown: + default: + log_printf("system type unknown, playing nofrendo NES intro.\n"); + if (NULL != console.filename) + free(console.filename); + + /* oooh, recursion */ + return internal_insert(filename, system_nes); + } + + return 0; +} + +/* This tells main_loop to load this next image */ +void main_insert(const char *filename, system_t type) +{ + console.nextfilename = strdup(filename); + console.nexttype = type; + + main_eject(); +} + +int nofrendo_main(int argc, char *argv[]) +{ + /* initialize our system structure */ + console.filename = NULL; + console.nextfilename = NULL; + console.type = system_unknown; + console.nexttype = system_unknown; + console.refresh_rate = 0; + console.quit = false; + + if (log_init()) + return -1; + + event_init(); + + return osd_main(argc, argv); +} + +/* This is the final leg of main() */ +int main_loop(const char *filename, system_t type) +{ + vidinfo_t video; + + /* register shutdown, in case of assertions, etc. */ +// atexit(shutdown_everything); + + //if (config.open()) // JMH + // return -1; + + if (osd_init()) + return -1; + + osd_getvideoinfo(&video); + if (vid_init(video.default_width, video.default_height, video.driver)) + return -1; + //log printf("vid_init done\n"); + + console.nextfilename = strdup(filename); + console.nexttype = type; + +// while (false == console.quit) +// { +//emu_printf("internal_insert in loop\n"); + if (internal_insert(console.nextfilename, console.nexttype)) + return 1; +// } + + return 0; +} + + +/* +** $Log: nofrendo.c,v $ +** Revision 1.3 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.2 2001/04/27 11:10:08 neil +** compile +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.48 2000/11/27 12:47:08 matt +** free them strings +** +** Revision 1.47 2000/11/25 20:26:05 matt +** removed fds "system" +** +** Revision 1.46 2000/11/25 01:51:53 matt +** bool stinks sometimes +** +** Revision 1.45 2000/11/20 13:22:12 matt +** standardized timer ISR, added nofrendo_ticks +** +** Revision 1.44 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.43 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.42 2000/10/28 15:16:24 matt +** removed nsf_init +** +** Revision 1.41 2000/10/27 12:58:44 matt +** gui_init can now fail +** +** Revision 1.40 2000/10/26 22:48:57 matt +** prelim NSF support +** +** Revision 1.39 2000/10/25 13:42:02 matt +** strdup - giddyap! +** +** Revision 1.38 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.37 2000/10/23 17:50:47 matt +** adding fds support +** +** Revision 1.36 2000/10/23 15:52:04 matt +** better system handling +** +** Revision 1.35 2000/10/21 19:25:59 matt +** many more cleanups +** +** Revision 1.34 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.33 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.32 2000/09/15 04:58:06 matt +** simplifying and optimizing APU core +** +** Revision 1.31 2000/09/10 23:19:14 matt +** i'm a sloppy coder +** +** Revision 1.30 2000/09/07 01:30:57 matt +** nes6502_init deprecated +** +** Revision 1.29 2000/08/16 03:17:49 matt +** bpb +** +** Revision 1.28 2000/08/16 02:58:19 matt +** changed video interface a wee bit +** +** Revision 1.27 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.26 2000/07/30 04:31:26 matt +** automagic loading of the nofrendo intro +** +** Revision 1.25 2000/07/27 01:16:36 matt +** sorted out the video problems +** +** Revision 1.24 2000/07/26 21:54:53 neil +** eject has to clear the nextfilename and nextsystem +** +** Revision 1.23 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.22 2000/07/25 02:21:36 matt +** safer xxx_destroy calls +** +** Revision 1.21 2000/07/23 16:46:47 matt +** fixed crash in win32 by reodering shutdown calls +** +** Revision 1.20 2000/07/23 15:18:23 matt +** removed unistd.h from includes +** +** Revision 1.19 2000/07/23 00:48:15 neil +** Win32 SDL +** +** Revision 1.18 2000/07/21 13:42:06 neil +** get_options removed, as it should be handled by osd_main +** +** Revision 1.17 2000/07/21 04:53:48 matt +** moved palette calls out of nofrendo.c and into ppu_create +** +** Revision 1.16 2000/07/21 02:40:43 neil +** more main fixes +** +** Revision 1.15 2000/07/21 02:09:07 neil +** new main structure? +** +** Revision 1.14 2000/07/20 17:05:12 neil +** Moved osd_init before setup_video +** +** Revision 1.13 2000/07/11 15:01:05 matt +** moved config.close() into registered atexit() routine +** +** Revision 1.12 2000/07/11 13:35:38 bsittler +** Changed the config API, implemented config file "nofrendo.cfg". The +** GGI drivers use the group [GGI]. Visual= and Mode= keys are understood. +** +** Revision 1.11 2000/07/11 04:32:21 matt +** less magic number nastiness for screen dimensions +** +** Revision 1.10 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.9 2000/07/07 04:39:54 matt +** removed garbage dpp shite +** +** Revision 1.8 2000/07/06 16:48:25 matt +** new video driver +** +** Revision 1.7 2000/07/05 17:26:16 neil +** Moved the externs in nofrendo.c to osd.h +** +** Revision 1.6 2000/06/26 04:55:44 matt +** cleaned up main() +** +** Revision 1.5 2000/06/20 20:41:21 matt +** moved include to top (duh) +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/nofrendo.h b/MCUME_esp32/espnofrendo/main/nofrendo/nofrendo.h new file mode 100755 index 0000000..01075a8 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/nofrendo.h @@ -0,0 +1,98 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nofrendo.h (c) 1998-2000 Matthew Conte (matt@conte.com) +** (c) 2000 Neil Stevens (multivac@fcmail.com) +** +** Note: all architectures should call these functions +** +** $Id: nofrendo.h,v 1.2 2001/04/27 11:10:08 neil Exp $ +*/ + +#ifndef _NOFRENDO_H_ +#define _NOFRENDO_H_ + +#define NOLOOP 1 + +typedef enum +{ + system_unknown, + system_autodetect, + system_nes, + NUM_SUPPORTED_SYSTEMS +} system_t; + +int nofrendo_main(int argc, char *argv[]); + + +extern volatile int nofrendo_ticks; /* system timer ticks */ + +/* osd_main should end with a call to main_loop(). +** Pass filename = NULL if you want to start with the demo rom +*/ +extern int main_loop(const char *filename, system_t type); + +/* These should not be called directly. Use the event interface */ +extern void main_insert(const char *filename, system_t type); +extern void main_eject(void); +extern void main_quit(void); + +#ifdef NOLOOP +extern void nes_step(int skip); +#endif + +#endif /* !_NOFRENDO_H_ */ + +/* +** $Log: nofrendo.h,v $ +** Revision 1.2 2001/04/27 11:10:08 neil +** compile +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.9 2000/11/25 20:26:05 matt +** removed fds "system" +** +** Revision 1.8 2000/11/20 13:22:12 matt +** standardized timer ISR, added nofrendo_ticks +** +** Revision 1.7 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.6 2000/10/25 13:42:02 matt +** strdup - giddyap! +** +** Revision 1.5 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.4 2000/10/23 15:52:04 matt +** better system handling +** +** Revision 1.3 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.2 2000/07/27 01:16:36 matt +** sorted out the video problems +** +** Revision 1.1 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/noftypes.h b/MCUME_esp32/espnofrendo/main/nofrendo/noftypes.h new file mode 100644 index 0000000..7e3c67c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/noftypes.h @@ -0,0 +1,121 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** types.h +** +** Data type definitions +** $Id: noftypes.h,v 1.1 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _TYPES_H_ +#define _TYPES_H_ + + + +/* Define this if running on little-endian (x86) systems */ +#define HOST_LITTLE_ENDIAN + +#ifdef __GNUC__ +#define INLINE static inline +#define ZERO_LENGTH 0 +#elif defined(WIN32) +#define INLINE static __inline +#define ZERO_LENGTH 0 +#else /* crapintosh? */ +#define INLINE static +#define ZERO_LENGTH 1 +#endif + +/* quell stupid compiler warnings */ +#define UNUSED(x) ((x) = (x)) + +typedef signed char int8; +typedef signed short int16; +typedef signed int int32; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; + +#ifndef __cplusplus +typedef enum +{ + false = 0, + true = 1 +} bool; + +#ifndef NULL +#define NULL ((void *) 0) +#endif +#endif /* !__cplusplus */ + +#include "log.h" + +#ifdef NOFRENDO_DEBUG + +#define ASSERT(expr) log_assert((int) (expr), __LINE__, __FILE__, NULL) +#define ASSERT_MSG(msg) log_assert(false, __LINE__, __FILE__, (msg)) + +#else /* !NOFRENDO_DEBUG */ + +#define ASSERT(expr) +#define ASSERT_MSG(msg) + +#endif /* !NOFRENDO_DEBUG */ + +#endif /* _TYPES_H_ */ + +/* +** $Log: noftypes.h,v $ +** Revision 1.1 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.15 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.14 2000/10/17 03:22:16 matt +** safe UNUSED +** +** Revision 1.13 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.12 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.11 2000/08/11 01:44:05 matt +** cosmeses +** +** Revision 1.10 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.9 2000/07/24 04:30:17 matt +** ASSERTs should have been calling log_shutdown +** +** Revision 1.8 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/07/04 04:46:44 matt +** moved INLINE define from osd.h +** +** Revision 1.6 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/osd.h b/MCUME_esp32/espnofrendo/main/nofrendo/osd.h new file mode 100755 index 0000000..06d2677 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/osd.h @@ -0,0 +1,188 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** osd.h +** +** O/S dependent routine defintions (must be customized) +** $Id: osd.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _OSD_H_ +#define _OSD_H_ + +#include +#ifndef PATH_MAX +#define PATH_MAX 512 +#endif /* PATH_MAX */ + +#ifdef __GNUC__ +#define __PACKED__ __attribute__ ((packed)) + +#ifdef __DJGPP__ +#define PATH_SEP '\\' +#else /* !__DJGPP__ */ +#define PATH_SEP '/' +#endif /* !__DJGPP__ */ + +#elif defined(WIN32) +#define __PACKED__ +#define PATH_SEP '\\' +#else /* !defined(WIN32) && !__GNUC__ */ +#define __PACKED__ +#define PATH_SEP ':' +#endif /* !defined(WIN32) && !__GNUC__ */ + +#if !defined(WIN32) && !defined(__DJGPP__) +#define stricmp strcasecmp +#endif /* !WIN32 && !__DJGPP__ */ + + +extern void osd_setsound(void (*playfunc)(void *buffer, int size)); + + +#ifndef NSF_PLAYER +#include "noftypes.h" +#include "vid_drv.h" + +typedef struct vidinfo_s +{ + int default_width, default_height; + viddriver_t *driver; +} vidinfo_t; + +typedef struct sndinfo_s +{ + int sample_rate; + int bps; +} sndinfo_t; + +/* get info */ +extern void osd_getvideoinfo(vidinfo_t *info); +extern void osd_getsoundinfo(sndinfo_t *info); + +/* init / shutdown */ +extern int osd_init(void); +extern void osd_shutdown(void); +extern int osd_main(int argc, char *argv[]); + +extern int osd_installtimer(int frequency, void *func, int funcsize, + void *counter, int countersize); + +/* filename manipulation */ +extern void osd_fullname(char *fullname, const char *shortname); +extern char *osd_newextension(char *string, char *ext); + +/* input */ +extern void osd_getinput(void); +extern void osd_getmouse(int *x, int *y, int *button); + +/* build a filename for a snapshot, return -ve for error */ +extern int osd_makesnapname(char *filename, int len); + +#endif /* !NSF_PLAYER */ + +#endif /* _OSD_H_ */ + +/* +** $Log: osd.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.30 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.29 2000/11/05 06:23:41 matt +** thinlib spawns changes +** +** Revision 1.28 2000/10/22 19:15:39 matt +** more sane timer ISR / autoframeskip +** +** Revision 1.27 2000/10/21 19:25:59 matt +** many more cleanups +** +** Revision 1.26 2000/10/10 13:03:53 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.25 2000/10/02 15:01:12 matt +** frag size has been removed +** +** Revision 1.24 2000/08/31 02:40:18 matt +** fixed some crap +** +** Revision 1.23 2000/08/16 02:57:14 matt +** changed video interface a wee bit +** +** Revision 1.22 2000/08/11 01:46:30 matt +** new OSD sound information interface +** +** Revision 1.21 2000/08/04 15:01:32 neil +** BeOS cleanups +** +** Revision 1.20 2000/08/04 14:36:14 neil +** BeOS is working.. kinda +** +** Revision 1.19 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.18 2000/07/23 16:21:35 neil +** neither stricmp nor strcasecmp works everywhere +** +** Revision 1.17 2000/07/23 15:17:40 matt +** osd_getfragsize +** +** Revision 1.16 2000/07/21 13:37:20 neil +** snap filenames are OS-dependent +** +** Revision 1.15 2000/07/21 04:58:37 matt +** new osd_main structure +** +** Revision 1.14 2000/07/21 04:26:15 matt +** added some nasty externs +** +** Revision 1.13 2000/07/21 02:42:45 matt +** merged osd_getinput and osd_gethostinput +** +** Revision 1.12 2000/07/19 13:10:35 neil +** PATH_MAX +** +** Revision 1.11 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.10 2000/07/06 16:48:25 matt +** new video driver +** +** Revision 1.9 2000/07/05 17:26:16 neil +** Moved the externs in nofrendo.c to osd.h +** +** Revision 1.8 2000/07/04 23:07:06 matt +** djgpp path separator bugfix +** +** Revision 1.7 2000/07/04 04:45:33 matt +** moved INLINE define into types.h +** +** Revision 1.6 2000/06/29 16:06:18 neil +** Wrapped DOS-specific headers in an ifdef +** +** Revision 1.5 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/version.h b/MCUME_esp32/espnofrendo/main/nofrendo/version.h new file mode 100755 index 0000000..56e68f7 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/version.h @@ -0,0 +1,65 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** version.h +** +** Program name / version definitions +** $Id: version.h,v 1.2 2001/05/05 16:50:49 neil Exp $ +*/ + +#ifndef _VERSION_H_ +#define _VERSION_H_ + +#ifdef NSF_PLAYER +#define APP_STRING "Nosefart" +#else +#define APP_STRING "Nofrendo" +#endif /* NSF_PLAYER */ + +#define APP_VERSION "2.0" + +#endif /* _VERSION_H_ */ + +/* +** $Log: version.h,v $ +** Revision 1.2 2001/05/05 16:50:49 neil +** preparing for distribution +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.9 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.8 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/07/04 04:46:55 matt +** updated version number +** +** Revision 1.6 2000/06/20 00:03:39 matt +** updated for 1.91 +** +** Revision 1.5 2000/06/09 17:01:56 matt +** changed version to 1.90 +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/vid_drv.c b/MCUME_esp32/espnofrendo/main/nofrendo/vid_drv.c new file mode 100644 index 0000000..8e7aaa9 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/vid_drv.c @@ -0,0 +1,559 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vid_drv.c +** +** Video driver +** $Id: vid_drv.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "log.h" +#include "bitmap.h" +#include "vid_drv.h" +#include "osd.h" + +/* hardware surface */ +static bitmap_t *screen = NULL; + +/* primary / backbuffer surfaces */ +static bitmap_t *primary_buffer = NULL; //, *back_buffer = NULL; + +static viddriver_t *driver = NULL; + +/* fast automagic loop unrolling */ +#define DUFFS_DEVICE(transfer, count) \ +{ \ + register int n = (count + 7) / 8; \ + switch (count % 8) \ + { \ + case 0: do { { transfer; } \ + case 7: { transfer; } \ + case 6: { transfer; } \ + case 5: { transfer; } \ + case 4: { transfer; } \ + case 3: { transfer; } \ + case 2: { transfer; } \ + case 1: { transfer; } \ + } while (--n > 0); \ + } \ +} + +/* some system dependent replacement routines (for speed) */ +INLINE int vid_memcmp(const void *p1, const void *p2, int len) +{ + /* check for 32-bit aligned data */ + if (0 == (((uint32) p1 & 3) | ((uint32) p2 & 3))) + { + uint32 *dw1 = (uint32 *) p1; + uint32 *dw2 = (uint32 *) p2; + + len >>= 2; + + DUFFS_DEVICE(if (*dw1++ != *dw2++) return -1, len); + } + else + /* fall back to 8-bit compares */ + { + uint8 *b1 = (uint8 *) p1; + uint8 *b2 = (uint8 *) p2; + + DUFFS_DEVICE(if (*b1++ != *b2++) return -1, len); + } + + return 0; +} + +/* super-dooper assembly memcpy (thanks, SDL!) */ +#if defined(__GNUC__) && defined(i386) +#define vid_memcpy(dest, src, len) \ +{ \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + " cld \n" \ + " rep \n" \ + " movsl \n" \ + " testb $2,%b4 \n" \ + " je 1f \n" \ + " movsw \n" \ + "1: \n" \ + " testb $1,%b4 \n" \ + " je 2f \n" \ + " movsb \n" \ + "2: \n" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" ((len)/4), "q" (len), "1" (dest), "2" (src) \ + : "memory"); \ +} +#else /* !(defined(__GNUC__) && defined(i386)) */ +INLINE void vid_memcpy(void *dest, const void *src, int len) +{ + uint32 *s = (uint32 *) src; + uint32 *d = (uint32 *) dest; + + ASSERT(0 == ((len & 3) | ((uint32) src & 3) | ((uint32) dest & 3))); + len >>= 2; + + DUFFS_DEVICE(*d++ = *s++, len); +} +#endif /* !(defined(__GNUC__) && defined(i386)) */ + + +extern bitmap_t *lock_write(void); +/* TODO: any way to remove this filth (GUI needs it)? */ +bitmap_t *vid_getbuffer(void) +{ + return primary_buffer; +} + +void vid_setpalette(rgb_t *p) +{ + ASSERT(driver); + ASSERT(p); + + driver->set_palette(p); +} + +/* blits a bitmap onto primary buffer */ +void vid_blit(bitmap_t *bitmap, int src_x, int src_y, int dest_x, int dest_y, + int width, int height) +{ + int bitmap_pitch, primary_pitch; + uint8 *dest_ptr, *src_ptr; + + ASSERT(bitmap); + + /* clip to source */ + if (src_y >= bitmap->height) + return; + if (src_y + height > bitmap->height) + height = bitmap->height - src_y; + + if (src_x >= bitmap->width) + return; + if (src_x + width > bitmap->width) + width = bitmap->width - src_x; + + /* clip to dest */ + if (dest_y + height <= 0) + { + return; + } + else if (dest_y < 0) + { + height += dest_y; + src_y -= dest_y; + dest_y = 0; + } + + if (dest_y >= primary_buffer->height) + return; + if (dest_y + height > primary_buffer->height) + height = primary_buffer->height - dest_y; + + if (dest_x + width <= 0) + { + return; + } + else if (dest_x < 0) + { + width += dest_x; + src_x -= dest_x; + dest_x = 0; + } + + if (dest_x >= primary_buffer->width) + return; + if (dest_x + width > primary_buffer->width) + width = primary_buffer->width - dest_x; + + src_ptr = bitmap->line[src_y] + src_x; + dest_ptr = primary_buffer->line[dest_y] + dest_x; + + /* Avoid doing unnecessary indexed lookups */ + bitmap_pitch = bitmap->pitch; + primary_pitch = primary_buffer->pitch; + + /* do the copy */ + while (height--) + { + vid_memcpy(dest_ptr, src_ptr, width); + src_ptr += bitmap_pitch; + dest_ptr += primary_pitch; + } +} + +static void vid_blitscreen(int num_dirties, rect_t *dirty_rects) +{ + int src_x, src_y, dest_x, dest_y; + int blit_width, blit_height; + + screen = driver->lock_write(); + + /* center in y direction */ + if (primary_buffer->height <= screen->height) + { + src_y = 0; + blit_height = primary_buffer->height; + dest_y = (screen->height - blit_height) >> 1; + } + else + { + src_y = (primary_buffer->height - screen->height) >> 1; + blit_height = screen->height; + dest_y = 0; + } + + /* and in x */ + if (primary_buffer->width <= screen->width) + { + src_x = 0; + blit_width = primary_buffer->width; + dest_x = (screen->width - blit_width) >> 1; + } + else + { + src_x = (primary_buffer->width - screen->width) >> 1; + blit_width = screen->width; + dest_x = 0; + } + + /* should we just copy the entire screen? */ + if (-1 == num_dirties) + { + uint8 *dest, *src; + + src = primary_buffer->line[src_y] + src_x; + dest = screen->line[dest_y] + dest_x; + + while (blit_height--) + { + vid_memcpy(dest, src, primary_buffer->width); + src += primary_buffer->pitch; + dest += screen->pitch; + } + } + else + { + /* we need to blit just a bunch of dirties */ + int i, j, height; + rect_t *rects = dirty_rects; + + for (i = 0; i < num_dirties && blit_height; i++) + { + height = rects->h; + if (blit_height < height) + height = blit_height; + + j = 0; + DUFFS_DEVICE( + { + vid_memcpy(screen->line[dest_y + rects->y + j] + rects->x + dest_x, + primary_buffer->line[src_y + rects->y + j] + rects->x + src_x, + rects->w); + j++; + blit_height--; + }, height); + + rects++; + } + } + + if (driver->free_write) + driver->free_write(num_dirties, dirty_rects); +} + +/* TODO: this code is sickly */ + +#define CHUNK_WIDTH 256 +#define CHUNK_HEIGHT 16 +#define MAX_DIRTIES ((256 / CHUNK_WIDTH) * (240 / CHUNK_HEIGHT)) +#define DIRTY_CUTOFF ((3 * MAX_DIRTIES) / 4) + +#if 0 +INLINE int calc_dirties(rect_t *list) +{ + bool dirty; + int num_dirties = 0; + int i = 0, j, line_offset = 0; + int iterations = primary_buffer->height / CHUNK_HEIGHT; + + for (i = 0; i < iterations; i++) + { + dirty = false; + + j = line_offset; + DUFFS_DEVICE( + { + if (vid_memcmp(back_buffer->line[j], primary_buffer->line[j], + CHUNK_WIDTH)) + { + dirty = true; + break; + } + + j++; + }, CHUNK_HEIGHT); + + if (true == dirty) + { + list->h = CHUNK_HEIGHT; + list->w = CHUNK_WIDTH; + list->x = 0; + list->y = line_offset; + list++; + + /* totally arbitrary at this point */ + if (++num_dirties > DIRTY_CUTOFF) + return -1; + } + + line_offset += CHUNK_HEIGHT; + } + + return num_dirties; +} +#endif + +void vid_flush(void) +{ + bitmap_t *temp; + int num_dirties; + rect_t dirty_rects[MAX_DIRTIES]; + + ASSERT(driver); + + if (true == driver->invalidate) + { + driver->invalidate = false; + num_dirties = -1; + } + else + { + //num_dirties = calc_dirties(dirty_rects); + num_dirties = -1; + } + + if (driver->custom_blit) + driver->custom_blit(primary_buffer, num_dirties, dirty_rects); + else + vid_blitscreen(num_dirties, dirty_rects); + + /* Swap pointers to the main/back buffers */ +// temp = back_buffer; +// back_buffer = primary_buffer; +// primary_buffer = temp; +} + +/* emulated machine tells us which resolution it wants */ +int vid_setmode(int width, int height) +{ + if (NULL != primary_buffer) + bmp_destroy(&primary_buffer); +// if (NULL != back_buffer) +// bmp_destroy(&back_buffer); + primary_buffer = bmp_create(width, height, 0); /* no overdraw */ + if (NULL == primary_buffer) + return -1; + + return 0; +} + +static int vid_findmode(int width, int height, viddriver_t *osd_driver) +{ + if (osd_driver->init(width, height)) + { + driver = NULL; + return -1; /* mode not available! */ + } + + /* we got our driver */ + driver = osd_driver; + + /* re-assert dimensions, clear the surface */ + screen = driver->lock_write(); + + /* release surface */ + if (driver->free_write) + driver->free_write(-1, NULL); + + log_printf("video driver: %s at %dx%d\n", driver->name, + screen->width, screen->height); + + return 0; +} + +/* This is the interface to the drivers, used in nofrendo.c */ +int vid_init(int width, int height, viddriver_t *osd_driver) +{ + if (vid_findmode(width, height, osd_driver)) + { + log_printf("video initialization failed for %s at %dx%d\n", + osd_driver->name, width, height); + return -1; + } + log_printf("vid_init done\n"); + + return 0; +} + +void vid_shutdown(void) +{ + if (NULL == driver) + return; + + if (NULL != primary_buffer) + bmp_destroy(&primary_buffer); +#if 0 + if (NULL != back_buffer) + bmp_destroy(&back_buffer); +#endif + + if (driver && driver->shutdown) + driver->shutdown(); +} + + +/* +** $Log: vid_drv.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.40 2000/11/25 20:26:42 matt +** not much +** +** Revision 1.39 2000/11/16 14:27:27 matt +** even more crash-proofness +** +** Revision 1.38 2000/11/16 14:11:18 neil +** Better *not* to crash in case of catastrophic failure in the driver +** +** Revision 1.37 2000/11/13 00:55:16 matt +** no dirties seems to be faster (!?!?) +** +** Revision 1.36 2000/11/06 05:16:18 matt +** minor clipping bug +** +** Revision 1.35 2000/11/06 02:16:26 matt +** cleanups +** +** Revision 1.34 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.33 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.32 2000/11/05 06:23:41 matt +** thinlib spawns changes +** +** Revision 1.31 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.30 2000/10/10 13:03:53 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.29 2000/10/08 17:58:23 matt +** lock_read() should not allow us to clear the bitmap +** +** Revision 1.28 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.27 2000/08/16 02:53:05 matt +** changed init() interface a wee bit +** +** Revision 1.26 2000/08/14 02:45:59 matt +** fixed nasty bug in vid_blitscreen +** +** Revision 1.24 2000/08/11 01:44:37 matt +** clipping bugfix +** +** Revision 1.23 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.22 2000/07/28 07:25:49 neil +** Video driver has an invalidate flag, telling vid_drv not to calculate dirties for the next frame +** +** Revision 1.21 2000/07/28 03:51:45 matt +** lock_read used instead of lock_write in some places +** +** Revision 1.20 2000/07/28 01:24:05 matt +** dirty rectangle support +** +** Revision 1.19 2000/07/27 23:49:52 matt +** no more getmode +** +** Revision 1.18 2000/07/27 04:30:37 matt +** change to get_mode api +** +** Revision 1.17 2000/07/27 04:05:58 matt +** changed place where name goes +** +** Revision 1.16 2000/07/27 01:16:22 matt +** api changes for new main and dirty rects +** +** Revision 1.15 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.14 2000/07/24 04:33:57 matt +** skeleton of dirty rectangle code in place +** +** Revision 1.13 2000/07/23 14:35:39 matt +** cleanups +** +** Revision 1.12 2000/07/18 19:41:26 neil +** use screen->pitch in blitscreen, not screen_width +** +** Revision 1.11 2000/07/11 04:30:16 matt +** overdraw unnecessary! +** +** Revision 1.10 2000/07/10 19:07:57 matt +** added custom clear() member call to video driver +** +** Revision 1.9 2000/07/10 03:06:49 matt +** my dependency file is broken... *snif* +** +** Revision 1.8 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.7 2000/07/10 01:03:20 neil +** New video scheme allows for custom blitters to be determined by the driver at runtime +** +** Revision 1.6 2000/07/09 03:34:46 matt +** temporary cleanup +** +** Revision 1.5 2000/07/08 23:48:29 neil +** Another assumption GGI kills: pitch == width for hardware bitmaps +** +** Revision 1.4 2000/07/07 20:18:03 matt +** added overdraw, fixed some bugs in blitters +** +** Revision 1.3 2000/07/07 18:33:55 neil +** no need to lock for reading just to get the dimensions +** +** Revision 1.2 2000/07/07 18:11:37 neil +** Generalizing the video driver +** +** Revision 1.1 2000/07/06 16:48:47 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/vid_drv.h b/MCUME_esp32/espnofrendo/main/nofrendo/vid_drv.h new file mode 100755 index 0000000..e97ed03 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/vid_drv.h @@ -0,0 +1,145 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vid_drv.h +** +** Video driver +** $Id: vid_drv.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _VID_DRV_H_ +#define _VID_DRV_H_ + +#include "bitmap.h" + +typedef struct viddriver_s +{ + /* name of driver */ + const char *name; + /* init function - return 0 on success, nonzero on failure */ + int (*init)(int width, int height); + /* clean up after driver (can be NULL) */ + void (*shutdown)(void); + /* set a video mode - return 0 on success, nonzero on failure */ + int (*set_mode)(int width, int height); + /* set up a palette */ + void (*set_palette)(rgb_t *palette); + /* custom bitmap clear (can be NULL) */ + void (*clear)(uint8 color); + /* lock surface for writing (required) */ + bitmap_t *(*lock_write)(void); + /* free a locked surface (can be NULL) */ + void (*free_write)(int num_dirties, rect_t *dirty_rects); + /* custom blitter - num_dirties == -1 if full blit required */ + void (*custom_blit)(bitmap_t *primary, int num_dirties, + rect_t *dirty_rects); + /* immediately invalidate the buffer, i.e. full redraw */ + bool invalidate; +} viddriver_t; + +/* TODO: filth */ +extern bitmap_t *vid_getbuffer(void); + +extern int vid_init(int width, int height, viddriver_t *osd_driver); +extern void vid_shutdown(void); + +extern int vid_setmode(int width, int height); +extern void vid_setpalette(rgb_t *pal); + +extern void vid_blit(bitmap_t *bitmap, int src_x, int src_y, int dest_x, + int dest_y, int blit_width, int blit_height); +extern void vid_flush(void); + +#endif /* _VID_DRV_H_ */ + +/* +** $Log: vid_drv.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.22 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.21 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.20 2000/11/05 06:23:41 matt +** thinlib spawns changes +** +** Revision 1.19 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.18 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.17 2000/08/16 02:53:04 matt +** changed init() interface a wee bit +** +** Revision 1.16 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.15 2000/07/28 07:25:49 neil +** Video driver has an invalidate flag, telling vid_drv not to calculate dirties for the next frame +** +** Revision 1.14 2000/07/27 23:49:52 matt +** no more getmode +** +** Revision 1.13 2000/07/27 04:30:37 matt +** change to get_mode api +** +** Revision 1.12 2000/07/27 04:08:04 matt +** char * -> const char * +** +** Revision 1.11 2000/07/27 04:05:58 matt +** changed place where name goes +** +** Revision 1.10 2000/07/27 01:16:22 matt +** api changes for new main and dirty rects +** +** Revision 1.9 2000/07/26 21:36:14 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.8 2000/07/24 04:33:57 matt +** skeleton of dirty rectangle code in place +** +** Revision 1.7 2000/07/10 19:07:57 matt +** added custom clear() member call to video driver +** +** Revision 1.6 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.5 2000/07/10 01:03:20 neil +** New video scheme allows for custom blitters to be determined by the driver at runtime +** +** Revision 1.4 2000/07/09 03:34:47 matt +** temporary cleanup +** +** Revision 1.3 2000/07/07 20:17:35 matt +** better custom blitting support +** +** Revision 1.2 2000/07/07 18:11:38 neil +** Generalizing the video driver +** +** Revision 1.1 2000/07/06 16:48:47 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/vrcvisnd.c b/MCUME_esp32/espnofrendo/main/nofrendo/vrcvisnd.c new file mode 100755 index 0000000..ca3d95c --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/vrcvisnd.c @@ -0,0 +1,278 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vrcvisnd.c +** +** VRCVI sound hardware emulation +** $Id: vrcvisnd.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "vrcvisnd.h" +#include "nes_apu.h" + +typedef struct vrcvirectangle_s +{ + bool enabled; + + uint8 reg[3]; + + float accum; + uint8 adder; + + int32 freq; + int32 volume; + uint8 duty_flip; +} vrcvirectangle_t; + +typedef struct vrcvisawtooth_s +{ + bool enabled; + + uint8 reg[3]; + + float accum; + uint8 adder; + uint8 output_acc; + + int32 freq; + uint8 volume; +} vrcvisawtooth_t; + +typedef struct vrcvisnd_s +{ + vrcvirectangle_t rectangle[2]; + vrcvisawtooth_t saw; + float incsize; +} vrcvisnd_t; + + +static vrcvisnd_t vrcvi; + +/* VRCVI rectangle wave generation */ +static int32 vrcvi_rectangle(vrcvirectangle_t *chan) +{ + /* reg0: 0-3=volume, 4-6=duty cycle + ** reg1: 8 bits of freq + ** reg2: 0-3=high freq, 7=enable + */ + + chan->accum -= vrcvi.incsize; /* # of clocks per wave cycle */ + while (chan->accum < 0) + { + chan->accum += chan->freq; + chan->adder = (chan->adder + 1) & 0x0F; + } + + /* return if not enabled */ + if (false == chan->enabled) + return 0; + + if (chan->adder < chan->duty_flip) + return -(chan->volume); + else + return chan->volume; +} + +/* VRCVI sawtooth wave generation */ +static int32 vrcvi_sawtooth(vrcvisawtooth_t *chan) +{ + /* reg0: 0-5=phase accumulator bits + ** reg1: 8 bits of freq + ** reg2: 0-3=high freq, 7=enable + */ + + chan->accum -= vrcvi.incsize; /* # of clocks per wav cycle */ + while (chan->accum < 0) + { + chan->accum += chan->freq; + chan->output_acc += chan->volume; + + chan->adder++; + if (7 == chan->adder) + { + chan->adder = 0; + chan->output_acc = 0; + } + } + + /* return if not enabled */ + if (false == chan->enabled) + return 0; + + return (chan->output_acc >> 3) << 9; +} + +/* mix vrcvi sound channels together */ +static int32 vrcvi_process(void) +{ + int32 output; + + output = vrcvi_rectangle(&vrcvi.rectangle[0]); + output += vrcvi_rectangle(&vrcvi.rectangle[1]); + output += vrcvi_sawtooth(&vrcvi.saw); + + return output; +} + +/* write to registers */ +static void vrcvi_write(uint32 address, uint8 value) +{ + int chan = (address >> 12) - 9; + + switch (address & 0xB003) + { + case 0x9000: + case 0xA000: + vrcvi.rectangle[chan].reg[0] = value; + vrcvi.rectangle[chan].volume = (value & 0x0F) << 8; + vrcvi.rectangle[chan].duty_flip = (value >> 4) + 1; + break; + + case 0x9001: + case 0xA001: + vrcvi.rectangle[chan].reg[1] = value; + vrcvi.rectangle[chan].freq = ((vrcvi.rectangle[chan].reg[2] & 0x0F) << 8) + value + 1; + break; + + case 0x9002: + case 0xA002: + vrcvi.rectangle[chan].reg[2] = value; + vrcvi.rectangle[chan].freq = ((value & 0x0F) << 8) + vrcvi.rectangle[chan].reg[1] + 1; + vrcvi.rectangle[chan].enabled = (value & 0x80) ? true : false; + break; + + case 0xB000: + vrcvi.saw.reg[0] = value; + vrcvi.saw.volume = value & 0x3F; + break; + + case 0xB001: + vrcvi.saw.reg[1] = value; + vrcvi.saw.freq = (((vrcvi.saw.reg[2] & 0x0F) << 8) + value + 1) << 1; + break; + + case 0xB002: + vrcvi.saw.reg[2] = value; + vrcvi.saw.freq = (((value & 0x0F) << 8) + vrcvi.saw.reg[1] + 1) << 1; + vrcvi.saw.enabled = (value & 0x80) ? true : false; + break; + + default: + break; + } +} + +/* reset state of vrcvi sound channels */ +static void vrcvi_reset(void) +{ + int i; + apu_t apu; + + /* get the phase period from the apu */ + apu_getcontext(&apu); + vrcvi.incsize = apu.cycle_rate; + + /* preload regs */ + for (i = 0; i < 3; i++) + { + vrcvi_write(0x9000 + i, 0); + vrcvi_write(0xA000 + i, 0); + vrcvi_write(0xB000 + i, 0); + } +} + +static apu_memwrite vrcvi_memwrite[] = +{ + { 0x9000, 0x9002, vrcvi_write }, /* vrc6 */ + { 0xA000, 0xA002, vrcvi_write }, + { 0xB000, 0xB002, vrcvi_write }, + { -1, -1, NULL } +}; + +apuext_t vrcvi_ext = +{ + NULL, /* no init */ + NULL, /* no shutdown */ + vrcvi_reset, + vrcvi_process, + NULL, /* no reads */ + vrcvi_memwrite +}; + +/* +** $Log: vrcvisnd.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/05 22:21:00 matt +** help me! +** +** Revision 1.1 2000/10/24 12:20:00 matt +** changed directory structure +** +** Revision 1.17 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.16 2000/10/03 11:56:20 matt +** better support for optional sound ext routines +** +** Revision 1.15 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.14 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.13 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.12 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.11 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.10 2000/07/06 11:42:41 matt +** forgot to remove FDS register range +** +** Revision 1.9 2000/07/04 04:51:41 matt +** cleanups +** +** Revision 1.8 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.7 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.6 2000/06/20 00:08:58 matt +** changed to driver based API +** +** Revision 1.5 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.4 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/main/nofrendo/vrcvisnd.h b/MCUME_esp32/espnofrendo/main/nofrendo/vrcvisnd.h new file mode 100755 index 0000000..136cbc2 --- /dev/null +++ b/MCUME_esp32/espnofrendo/main/nofrendo/vrcvisnd.h @@ -0,0 +1,70 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vrcvisnd.h +** +** VRCVI (Konami MMC) sound hardware emulation header +** $Id: vrcvisnd.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _VRCVISND_H_ +#define _VRCVISND_H_ + +#include "nes_apu.h" + +extern apuext_t vrcvi_ext; + +#endif /* _VRCVISND_H_ */ + +/* +** $Log: vrcvisnd.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:00 matt +** changed directory structure +** +** Revision 1.10 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.9 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.8 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.6 2000/06/20 00:08:58 matt +** changed to driver based API +** +** Revision 1.5 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.4 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_esp32/espnofrendo/sdkconfig b/MCUME_esp32/espnofrendo/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/espnofrendo/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espnofrendo/sdkconfig.old b/MCUME_esp32/espnofrendo/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/espnofrendo/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espo2em/.DS_Store b/MCUME_esp32/espo2em/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espo2em/.DS_Store differ diff --git a/MCUME_esp32/espo2em/Makefile b/MCUME_esp32/espo2em/Makefile new file mode 100644 index 0000000..e54e4b1 --- /dev/null +++ b/MCUME_esp32/espo2em/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espo2em + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espo2em/components/.DS_Store b/MCUME_esp32/espo2em/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/espo2em/components/.DS_Store differ diff --git a/MCUME_esp32/espo2em/components/Audio/.DS_Store b/MCUME_esp32/espo2em/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espo2em/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espo2em/components/Audio/component.mk b/MCUME_esp32/espo2em/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espo2em/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espo2em/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espo2em/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espo2em/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espo2em/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espo2em/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espo2em/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espo2em/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espo2em/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espo2em/components/Wire/.DS_Store b/MCUME_esp32/espo2em/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espo2em/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espo2em/components/Wire/Wire.cpp b/MCUME_esp32/espo2em/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espo2em/components/Wire/Wire.h b/MCUME_esp32/espo2em/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espo2em/components/Wire/component.mk b/MCUME_esp32/espo2em/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espo2em/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espo2em/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espo2em/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espo2em/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espo2em/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espo2em/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espo2em/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espo2em/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espo2em/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espo2em/flashapp.sh b/MCUME_esp32/espo2em/flashapp.sh new file mode 100755 index 0000000..a1ed068 --- /dev/null +++ b/MCUME_esp32/espo2em/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x2B0000 ../espo2em/build/espo2em.bin diff --git a/MCUME_esp32/espo2em/main/.DS_Store b/MCUME_esp32/espo2em/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espo2em/main/.DS_Store differ diff --git a/MCUME_esp32/espo2em/main/AudioPlaySystem.cpp b/MCUME_esp32/espo2em/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..1b0fcc8 --- /dev/null +++ b/MCUME_esp32/espo2em/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espo2em/main/AudioPlaySystem.h b/MCUME_esp32/espo2em/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espo2em/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espo2em/main/Oddemu.c b/MCUME_esp32/espo2em/main/Oddemu.c new file mode 100644 index 0000000..7f2df59 --- /dev/null +++ b/MCUME_esp32/espo2em/main/Oddemu.c @@ -0,0 +1,208 @@ + +/**************************************************************************** +* Module name : oddemu +* Description : Library SMSEMU +* Author : J-M Harvengt +* History : 14-07-97 Creation +****************************************************************************/ +#include "vmachine.h" +#include "vdc.h" +#include "oddemu.h" + +#include "emuapi.h" + +/**************************************************************************** +* Local macros / typedefs +****************************************************************************/ +#define MAX_ROM_SIZE 8192 //16384 + +/**************************************************************************** +* Local procedures definition +****************************************************************************/ + + +/**************************************************************************** +* Local data +****************************************************************************/ +#define MAXC 1024 +static char * bios=0; //[MAXC]; +static char * scshot=0; //[MAXC]; +static char * lorom=0; //[MAX_ROM_SIZE]; + + +/**************************************************************************** +* Global data +****************************************************************************/ + +/**************************************************************************** +* Local procedures +****************************************************************************/ + +/**************************************************************************** +* Exported procedures +****************************************************************************/ +void odd_Init(void) +{ + if (bios == 0) bios = (char *)emu_Malloc(MAXC); + if (scshot == 0) scshot = (char *)emu_Malloc(MAXC); + if (lorom == 0) lorom = (char *)emu_Malloc(MAX_ROM_SIZE); + + app_data.debug = 0; + app_data.stick[0] = 0; + app_data.stick[1] = 1; + app_data.bank = 0; + app_data.limit = 1; + app_data.sound_en = 1; + app_data.speed = 100; + app_data.wsize = 1; + app_data.fullscreen = 0; + app_data.scanlines = 0; + app_data.voice = 1; + app_data.window_title = "O2EM v"; + app_data.svolume = 200; + app_data.vvolume = 100; + app_data.filter = 0; + app_data.exrom = 0; + app_data.crc = 0; + app_data.scshot = scshot; + app_data.euro = 0; + app_data.openb = 0; +} + + +static void load_bios( char *biosname) +{ + static char s[MAXC+10]; + unsigned long crc; + + emu_LoadFile(biosname,&rom1[0],1024); + + memcpy(&rom2[0],&rom1[0],1024); + memcpy(&rom3[0],&rom1[0],1024); + memcpy(&rom4[0],&rom1[0],1024); + + crc = crc32_buf(rom1,1024); + + if (crc==0x8016A315) + emu_printf("Odyssey2 bios ROM loaded\n"); + else if (crc==0xE20A9F41) + emu_printf("Videopac+ G7400 bios ROM loaded\n"); + else + emu_printf("Bios ROM loaded (unknown version)\n"); +} + + +static void load_cart(char *file) +{ + long l; + + l = emu_LoadFile(file,&lorom[0],MAX_ROM_SIZE); + + app_data.crc = crc32_buf(lorom, l); // crc32_file(file); + + if (app_data.crc == 0xAFB23F89) app_data.exrom = 1; /* Musician */ + if (app_data.crc == 0x3BFEF56B) app_data.exrom = 1; /* Four in 1 Row! */ + + if (((app_data.crc == 0x975AB8DA) || (app_data.crc == 0xE246A812)) && (!app_data.debug)) { + emu_printf("Error: file is an incomplete ROM dump\n"); + } + + if (l < 2049) { + app_data.bank=1; + memcpy(&rom1[1024],&lorom[0],l); + memcpy(&rom1[3072],&rom1[2048],1024); /* simulate missing A10 */ + rom=rom1; + emu_printf("2K"); + } else if (l == 3072) { + app_data.bank=1; + memcpy(&rom1[1024],&lorom[0],3072); + rom=rom1; + emu_printf("3K"); + } else if (l == 4096) { + if (app_data.exrom) { + app_data.bank=1; + memcpy(&extROM[0],&lorom[0],1024); + memcpy(&rom1[1024],&lorom[1024],3072); + rom=rom1; + emu_printf("3K EXROM"); + } else { + app_data.bank=2; + memcpy(&rom1[1024],&lorom[0],2048); + memcpy(&rom2[1024],&lorom[2048],2048); + memcpy(&rom1[3072],&rom1[2048],1024); /* simulate missing A10 */ + memcpy(&rom2[3072],&rom2[2048],1024); /* simulate missing A10 */ + rom=rom2; + emu_printf("4K"); + } + } else if (l == 6144) { + app_data.bank=2; + memcpy(&rom1[1024],&lorom[0],3072); + memcpy(&rom2[1024],&lorom[3072],3072); + rom=rom2; + emu_printf("6K"); + } else if (l == 8192) { + app_data.bank=3; + memcpy(&rom1[1024],&lorom[0],2048); + memcpy(&rom2[1024],&lorom[2048],2048); + memcpy(&rom3[1024],&lorom[2*2048],2048); + memcpy(&rom4[1024],&lorom[3*2048],2048); + memcpy(&rom1[3072],&rom1[2048],1024); /* simulate missing A10 */ + memcpy(&rom2[3072],&rom2[2048],1024); /* simulate missing A10 */ + memcpy(&rom3[3072],&rom3[2048],1024); /* simulate missing A10 */ + memcpy(&rom4[3072],&rom4[2048],1024); /* simulate missing A10 */ + rom=rom4; + emu_printf("8K"); + } else if (l == 12288) { + app_data.bank=3; + memcpy(&rom1[1024],&lorom[0],3072); + memcpy(&rom2[1024],&lorom[3072],3072); + memcpy(&rom3[1024],&lorom[2*3072],3072); + memcpy(&rom4[1024],&lorom[3*3072],3072); + rom=rom4; + emu_printf("12K"); + } else { + emu_printf("Invalid ROM size"); + } + if ((rom1[1024+12]=='O') && (rom1[1024+13]=='P') && (rom1[1024+14]=='N') && (rom1[1024+15]=='B')) app_data.openb=1; + orom=rom; + //printf("CRC: %08lX\n",app_data.crc); +} + +void odd_Start(char * filename) +{ + load_bios("o2rom.bin"); + load_cart(filename); + init_display(); + init_cpu(); + init_system(); +} + + +//static void snd_Mixer(short * stream, int len ) +//{ +// audio_process(stream, len>>2); +//} + +void odd_Stop(void) +{ + close_audio(); + close_display(); +} + + + + +void odd_Step(void) +{ + run(); + +//emu_printf("s"); + emu_DrawScreen((unsigned char *)getGBuf()+BORDERW/2, BMPW-BORDERW, BMPH, BMPW); + emu_DrawVsync(); +} + + + + + + diff --git a/MCUME_esp32/espo2em/main/Oddemu.h b/MCUME_esp32/espo2em/main/Oddemu.h new file mode 100644 index 0000000..62f975f --- /dev/null +++ b/MCUME_esp32/espo2em/main/Oddemu.h @@ -0,0 +1,9 @@ +extern void odd_Init(void); +extern void odd_Start(char * filename); +extern void odd_Stop(void); +extern void odd_Step(void); + + + + + diff --git a/MCUME_esp32/espo2em/main/audio.c b/MCUME_esp32/espo2em/main/audio.c new file mode 100644 index 0000000..0a7a84a --- /dev/null +++ b/MCUME_esp32/espo2em/main/audio.c @@ -0,0 +1,183 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * O2 audio emulation + */ + + +#include +#include +#include +#include "cpu.h" +#include "types.h" +#include "config.h" +#include "vmachine.h" +#include "audio.h" + +//#define SAMPLE_RATE 44100 +#define PERIOD1 11 //11 +#define PERIOD2 44 //44 + +#define SOUND_BUFFER_LEN 1056 + +#define AUD_CTRL 0xAA +#define AUD_D0 0xA7 +#define AUD_D1 0xA8 +#define AUD_D2 0xA9 + + +int sound_IRQ; +//static short *stream=NULL; +//static AUDIOSTREAM *stream=NULL; +//FILE *sndlog=NULL; + +static double flt_a=0.0, flt_b=0.0; +static unsigned char flt_prv = 0; + + +static void filter(unsigned char *buf, unsigned long len); + + +//void audio_process(unsigned char *buffer){ +#ifdef GP32 +void audio_process(unsigned short *buffer, int len) +#else +void audio_process(short *buffer, int len) +#endif +{ + unsigned long aud_data; +#ifdef GP32 + unsigned short s; +#else + short s; +#endif + int volume, re_circ, noise, enabled, intena, period, pnt, cnt, rndbit, pos; + + aud_data = (VDCwrite[AUD_D2] | (VDCwrite[AUD_D1] << 8) | (VDCwrite[AUD_D0] << 16)); + + intena = VDCwrite[0xA0] & 0x04; + + pnt = cnt = 0; + + noise = VDCwrite[AUD_CTRL] & 0x10; + enabled = VDCwrite[AUD_CTRL] & 0x80; + rndbit = (enabled && noise) ? (rand()%2) : 0; + + while (pnt < len/*SOUND_BUFFER_LEN*/) { + pos = (tweakedaudio) ? (pnt/3) : (MAXLINES-1); + volume = AudioVector[pos] & 0x0F; + enabled = AudioVector[pos] & 0x80; + period = (AudioVector[pos] & 0x20) ? PERIOD1 : PERIOD2; + re_circ = AudioVector[pos] & 0x40; + +#ifdef GP32 + s= ( (enabled) ? ((aud_data & 0x01)^rndbit) * (0x10 * volume) : 0) << 8; +#else + s= (( (enabled) ? ((aud_data & 0x01)^rndbit) * (0x10 * volume) : 0) - 128) << 8 ; +#endif + *buffer++ = s; + *buffer++ = s; + pnt++; + cnt++; + + if (cnt >= period) { + cnt=0; + aud_data = (re_circ) ? ((aud_data >> 1) | ((aud_data & 1) << 23)) : (aud_data >>= 1); + rndbit = (enabled && noise) ? (rand()%2) : 0; + + if (enabled && intena && (!sound_IRQ)) { + sound_IRQ = 1; + ext_IRQ(); + } + } + } + +// if (app_data.filter) filter(buffer, SOUND_BUFFER_LEN); +} + + +void update_audio(void) { +// unsigned char *p; + if (app_data.sound_en) { +// p = (unsigned char *)get_audio_stream_buffer(stream); +// if (p) { +// audio_process(p); +// if (sndlog) fwrite(p,1,SOUND_BUFFER_LEN,sndlog); +// free_audio_stream_buffer(stream); +// } + } +} + + +void init_audio(void) { +// int i; + + sound_IRQ=0; +// set_volume(255,255); + init_sound_stream(); + +// sndlog = NULL; +} + + +void init_sound_stream(void){ + int vol; + if (app_data.sound_en){ + if (app_data.filter) + vol = (255*app_data.svolume)/100; + else + vol = (255*app_data.svolume)/200; +// stream = play_audio_stream(SOUND_BUFFER_LEN,8,0,SAMPLE_RATE,vol,128); +// if (!stream) { +// printf("Error creating audio stream!\n"); +// app_data.sound_en=0; +// } + flt_a = flt_b = 0.0; + flt_prv = 0; + } +} + + +void mute_audio(void){ + if (app_data.sound_en /*&& stream*/){ +// stop_audio_stream(stream); +// stream=NULL; + } +} + + +void close_audio(void) { + if (app_data.sound_en /*&& stream*/) { +// stop_audio_stream(stream); + } + app_data.sound_en=0; +} + + +static void filter(unsigned char *buffer, unsigned long len){ + static unsigned char buf[SOUND_BUFFER_LEN]; + int t; + unsigned long i; + if (len>SOUND_BUFFER_LEN) return; + memcpy(buf,buffer,len); + for (i=0; i255.0)||(flt_a<-255.0)) flt_a=0.0; + buffer[i] = (unsigned char)((flt_a+255.0)/2.0); + } + flt_prv = buf[len-1]; +} + + diff --git a/MCUME_esp32/espo2em/main/audio.h b/MCUME_esp32/espo2em/main/audio.h new file mode 100644 index 0000000..ee52fa6 --- /dev/null +++ b/MCUME_esp32/espo2em/main/audio.h @@ -0,0 +1,18 @@ +#ifndef __AUDIO_H +#define __AUDIO_H + +void update_audio(void); +void init_audio(void); +void close_audio(void); +void init_sound_stream(void); +void mute_audio(void); +#ifdef GP32 +void audio_process(unsigned short *buffer, int len); +#else +void audio_process(short *buffer, int len); +#endif +extern int sound_IRQ; + +#endif + + diff --git a/MCUME_esp32/espo2em/main/bmpjoy.h b/MCUME_esp32/espo2em/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espo2em/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espo2em/main/bmpvbar.h b/MCUME_esp32/espo2em/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espo2em/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espo2em/main/component.mk b/MCUME_esp32/espo2em/main/component.mk new file mode 100644 index 0000000..03de198 --- /dev/null +++ b/MCUME_esp32/espo2em/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=maybe-uninitialized -Wno-error=sequence-point -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espo2em/main/config.h b/MCUME_esp32/espo2em/main/config.h new file mode 100644 index 0000000..1c7168c --- /dev/null +++ b/MCUME_esp32/espo2em/main/config.h @@ -0,0 +1,8 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#define O2EM_VERSION "1.01" +#define RELEASE_DATE "(October/2002)" + +#endif + diff --git a/MCUME_esp32/espo2em/main/cpu.c b/MCUME_esp32/espo2em/main/cpu.c new file mode 100644 index 0000000..477f95f --- /dev/null +++ b/MCUME_esp32/espo2em/main/cpu.c @@ -0,0 +1,1596 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * 8048 microcontroller emulation + */ + + +#include +#include "types.h" +#include "vmachine.h" +//#include "voice.h" +#include "vdc.h" +//#include "vpp.h" +#include "cpu.h" + + +Byte acc; /* Accumulator */ +ADDRESS pc; /* Program counter */ +long clk; /* clock */ + +Byte itimer; /* Internal timer */ +Byte reg_pnt; /* pointer to register bank */ +Byte timer_on; /* 0=timer off/1=timer on */ +Byte count_on; /* 0=count off/1=count on */ +Byte psw; /* Processor status word */ +Byte sp; /* Stack pointer (part of psw) */ + +Byte p1; /* I/O port 1 */ +Byte p2; /* I/O port 2 */ +Byte xirq_pend; /* external IRQ pending */ +Byte tirq_pend; /* timer IRQ pending */ +Byte t_flag; /* Timer flag */ + +static ADDRESS lastpc; +static ADDRESS A11; /* PC bit 11 */ +static ADDRESS A11ff; +static Byte bs; /* Register Bank (part of psw) */ +static Byte f0; /* Flag Bit (part of psw) */ +static Byte f1; /* Flag Bit 1 */ +static Byte ac; /* Aux Carry (part of psw) */ +static Byte cy; /* Carry flag (part of psw) */ +static Byte xirq_en; /* external IRQ's enabled */ +static Byte tirq_en; /* Timer IRQ enabled */ +static Byte irq_ex; /* IRQ executing */ + +static int master_count; + + +#define push(d) {intRAM[sp++] = (d); if (sp > 23) sp = 8;} +#define pull() (sp--, (sp < 8)?(sp=23):0, intRAM[sp]) +#define make_psw() {psw = (cy << 7) | ac | f0 | bs | 0x08; psw = psw | ((sp - 8) >> 1);} +#define illegal(o) {} +#define undef(i) {printf("** unimplemented instruction %x, %x**\n",i,pc);} + + +void init_cpu(void){ + pc=0; + sp=8; + bs=0; + p1=p2=0xFF; + ac=cy=f0=0; + A11=A11ff=0; + timer_on=0; + count_on=0; + reg_pnt=0; + tirq_en=xirq_en=irq_ex=xirq_pend=tirq_pend=0; +} + + +void ext_IRQ(void){ + int_clk = 5; /* length of pulse on /INT */ + if (xirq_en && !irq_ex) { + irq_ex=1; + xirq_pend=0; + clk+=2; + make_psw(); + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = 0x03; + A11ff=A11; + A11=0; + } + if (pendirq && (!xirq_en)) xirq_pend=1; +} + + +void tim_IRQ(void){ + if (tirq_en && !irq_ex) { + irq_ex=2; + tirq_pend=0; + clk+=2; + make_psw(); + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = 0x07; + A11ff=A11; + A11=0; + } + if (pendirq && (!tirq_en)) tirq_pend=1; +} + + +void make_psw_debug(void){ + make_psw(); +} + + + +void cpu_exec(void) { + Byte op; + ADDRESS adr; + Byte dat; + int temp; + + for (;;) { + + clk=0; + + lastpc=pc; + op=rom[pc++]; + switch (op) { + case 0x00: /* NOP */ + clk++; + break; + case 0x01: /* ILL */ + illegal(op); + clk++; + break; + case 0x02: /* OUTL BUS,A */ + clk+=2; + undef(0x02); + break; + case 0x03: /* ADD A,#data */ + clk+=2; + cy=ac=0; + dat=rom[pc++]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x04: /* JMP */ + pc=rom[pc] | A11; + clk+=2; + break; + case 0x05: /* EN I */ + xirq_en=1; + clk++; + break; + case 0x06: /* ILL */ + clk++; + illegal(op); + break; + case 0x07: /* DEC A */ + acc--; + clk++; + break; + case 0x08: /* INS A,BUS*/ + clk+=2; + acc=in_bus(); + break; + case 0x09: /* IN A,Pp */ + acc=p1; + clk+=2; + break; + case 0x0A: /* IN A,Pp */ + acc=read_P2(); + clk+=2; + break; + case 0x0B: /* ILL */ + clk++; + illegal(op); + case 0x0C: /* MOVD A,P4 */ + clk+=2; + //acc=read_PB(0); + break; + case 0x0D: /* MOVD A,P5 */ + clk+=2; + //acc=read_PB(1); + break; + case 0x0E: /* MOVD A,P6 */ + clk+=2; + //acc=read_PB(2); + break; + case 0x0F: /* MOVD A,P7 */ + clk+=2; + //acc=read_PB(3); + break; + case 0x10: /* INC @Ri */ + intRAM[intRAM[reg_pnt] & 0x3F]++; + clk++; + break; + case 0x11: /* INC @Ri */ + intRAM[intRAM[reg_pnt+1] & 0x3F]++; + clk++; + break; + case 0x12: /* JBb address */ + clk+=2; + dat = rom[pc]; + if (acc & 0x01) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x13: /* ADDC A,#data */ + clk+=2; + dat=rom[pc++]; + ac=0; + if (((acc & 0x0f) + (dat & 0x0f) + cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + + case 0x14: /* CALL */ + make_psw(); + adr = rom[pc] | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x15: /* DIS I */ + xirq_en=0; + clk++; + break; + case 0x16: /* JTF */ + clk+=2; + dat = rom[pc]; + if (t_flag) + pc=(pc & 0xF00) | dat; + else + pc++; + t_flag=0; + break; + case 0x17: /* INC A */ + acc++; + clk++; + break; + case 0x18: /* INC Rr */ + intRAM[reg_pnt]++; + clk++; + break; + case 0x19: /* INC Rr */ + intRAM[reg_pnt+1]++; + clk++; + break; + case 0x1A: /* INC Rr */ + intRAM[reg_pnt+2]++; + clk++; + break; + case 0x1B: /* INC Rr */ + intRAM[reg_pnt+3]++; + clk++; + break; + case 0x1C: /* INC Rr */ + intRAM[reg_pnt+4]++; + clk++; + break; + case 0x1D: /* INC Rr */ + intRAM[reg_pnt+5]++; + clk++; + break; + case 0x1E: /* INC Rr */ + intRAM[reg_pnt+6]++; + clk++; + break; + case 0x1F: /* INC Rr */ + intRAM[reg_pnt+7]++; + clk++; + break; + case 0x20: /* XCH A,@Ri */ + clk++; + dat=acc; + acc=intRAM[intRAM[reg_pnt] & 0x3F]; + intRAM[intRAM[reg_pnt] & 0x3F] = dat; + break; + case 0x21: /* XCH A,@Ri */ + clk++; + dat=acc; + acc=intRAM[intRAM[reg_pnt+1] & 0x3F]; + intRAM[intRAM[reg_pnt+1] & 0x3F] = dat; + break; + case 0x22: /* ILL */ + illegal(op); + break; + case 0x23: /* MOV a,#data */ + clk+=2; + acc = rom[pc++]; + break; + + case 0x24: /* JMP */ + pc=rom[pc] | 0x100 | A11; + clk+=2; + break; + case 0x25: /* EN TCNTI */ + tirq_en=1; + clk++; + break; + case 0x26: /* JNT0 */ + clk+=2; + dat = rom[pc]; +//JMH if (!get_voice_status()) +// pc=(pc & 0xF00) | dat; +// else + pc++; + break; + case 0x27: /* CLR A */ + clk++; + acc=0; + break; + case 0x28: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt]; + intRAM[reg_pnt]=dat; + clk++; + break; + case 0x29: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+1]; + intRAM[reg_pnt+1]=dat; + clk++; + break; + case 0x2A: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+2]; + intRAM[reg_pnt+2]=dat; + clk++; + break; + case 0x2B: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+3]; + intRAM[reg_pnt+3]=dat; + clk++; + break; + case 0x2C: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+4]; + intRAM[reg_pnt+4]=dat; + clk++; + break; + case 0x2D: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+5]; + intRAM[reg_pnt+5]=dat; + clk++; + break; + case 0x2E: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+6]; + intRAM[reg_pnt+6]=dat; + clk++; + break; + case 0x2F: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+7]; + intRAM[reg_pnt+7]=dat; + clk++; + break; + case 0x30: /* XCHD A,@Ri */ + clk++; + adr=intRAM[reg_pnt] & 0x3F; + dat=acc & 0x0F; + acc=acc & 0xF0; + acc=acc | (intRAM[adr] & 0x0F); + intRAM[adr] &= 0xF0; + intRAM[adr] |= dat; + break; + case 0x31: /* XCHD A,@Ri */ + clk++; + adr=intRAM[reg_pnt+1] & 0x3F; + dat=acc & 0x0F; + acc=acc & 0xF0; + acc=acc | (intRAM[adr] & 0x0F); + intRAM[adr] &= 0xF0; + intRAM[adr] |= dat; + break; + case 0x32: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x02) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x33: /* ILL */ + clk++; + illegal(op); + break; + case 0x34: /* CALL */ + make_psw(); + adr = rom[pc] | 0x100 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x35: /* DIS TCNTI */ + tirq_en=0; + tirq_pend=0; + clk++; + break; + case 0x36: /* JT0 */ + clk+=2; + dat=rom[pc]; +// JMH if (get_voice_status()) +// pc=(pc & 0xF00) | dat; +// else + pc++; + break; + case 0x37: /* CPL A */ + acc = acc ^ 0xFF; + clk++; + break; + case 0x38: /* ILL */ + clk++; + illegal(op); + break; + case 0x39: /* OUTL P1,A */ + clk+=2; + write_p1(acc); + break; + case 0x3A: /* OUTL P2,A */ + clk+=2; + p2=acc; + break; + case 0x3B: /* ILL */ + clk++; + illegal(op); + break; + case 0x3C: /* MOVD P4,A */ + clk+=2; + //write_PB(0,acc); + break; + case 0x3D: /* MOVD P5,A */ + clk+=2; + //write_PB(1,acc); + break; + case 0x3E: /* MOVD P6,A */ + clk+=2; + //write_PB(2,acc); + break; + case 0x3F: /* MOVD P7,A */ + clk+=2; + //write_PB(3,acc); + break; + case 0x40: /* ORL A,@Ri */ + clk++; + acc = acc | intRAM[intRAM[reg_pnt] & 0x3F]; + break; + case 0x41: /* ORL A,@Ri */ + clk++; + acc = acc | intRAM[intRAM[reg_pnt+1] & 0x3F]; + break; + case 0x42: /* MOV A,T */ + clk++; + acc = itimer; + break; + case 0x43: /* ORL A,#data */ + clk+=2; + acc = acc | rom[pc++]; + break; + case 0x44: /* JMP */ + pc=rom[pc] | 0x200 | A11; + clk+=2; + break; + case 0x45: /* STRT CNT */ + /* printf("START: %d=%d\n",master_clk/22,itimer); */ + count_on=1; + clk++; + break; + case 0x46: /* JNT1 */ + clk+=2; + dat = rom[pc]; + if (!read_t1()) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x47: /* SWAP A */ + clk++; + dat=(acc & 0xF0) >> 4; + acc = acc << 4; + acc = acc | dat; + break; + case 0x48: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt]; + break; + case 0x49: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+1]; + break; + case 0x4A: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+2]; + break; + case 0x4B: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+3]; + break; + case 0x4C: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+4]; + break; + case 0x4D: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+5]; + break; + case 0x4E: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+6]; + break; + case 0x4F: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+7]; + break; + + case 0x50: /* ANL A,@Ri */ + acc = acc & intRAM[intRAM[reg_pnt] & 0x3F]; + clk++; + break; + case 0x51: /* ANL A,@Ri */ + acc = acc & intRAM[intRAM[reg_pnt+1] & 0x3F]; + clk++; + break; + case 0x52: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x04) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x53: /* ANL A,#data */ + clk+=2; + acc = acc & rom[pc++]; + break; + case 0x54: /* CALL */ + make_psw(); + adr = rom[pc] | 0x200 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x55: /* STRT T */ + timer_on=1; + clk++; + break; + case 0x56: /* JT1 */ + clk+=2; + dat = rom[pc]; + if (read_t1()) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x57: /* DA A */ + clk++; + if (((acc & 0x0F) > 0x09) || ac) acc+=6; + dat = (acc & 0xF0) >> 4; + if ((dat > 9) || cy) { + dat+=6; + cy=1; + } + else { + cy=0; + } + /* if (dat > 0x0F) cy=1; */ + acc = (acc & 0x0F) | (dat << 4); + break; + case 0x58: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt]; + break; + case 0x59: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+1]; + break; + case 0x5A: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+2]; + break; + case 0x5B: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+3]; + break; + case 0x5C: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+4]; + break; + case 0x5D: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+5]; + break; + case 0x5E: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+6]; + break; + case 0x5F: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+7]; + break; + + case 0x60: /* ADD A,@Ri */ + clk++; + cy=ac=0; + dat=intRAM[intRAM[reg_pnt] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x61: /* ADD A,@Ri */ + clk++; + cy=ac=0; + dat=intRAM[intRAM[reg_pnt+1] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x62: /* MOV T,A */ + clk++; + itimer=acc; + break; + case 0x63: /* ILL */ + clk++; + illegal(op); + break; + case 0x64: /* JMP */ + pc=rom[pc] | 0x300 | A11; + clk+=2; + break; + case 0x65: /* STOP TCNT */ + clk++; + /* printf("STOP %d\n",master_clk/22); */ + count_on=timer_on=0; + break; + case 0x66: /* ILL */ + clk++; + illegal(op); + break; + case 0x67: /* RRC A */ + dat=cy; + cy=acc & 0x01; + acc = acc >> 1; + if (dat) + acc = acc | 0x80; + else + acc = acc & 0x7F; + clk++; + break; + case 0x68: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x69: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+1]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6A: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+2]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6B: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+3]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6C: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+4]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6D: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+5]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6E: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+6]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6F: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+7]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x70: /* ADDC A,@Ri */ + clk++; + ac=0; + dat=intRAM[intRAM[reg_pnt] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f) + cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x71: /* ADDC A,@Ri */ + clk++; + ac=0; + dat=intRAM[intRAM[reg_pnt+1] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f) + cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + + case 0x72: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x08) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x73: /* ILL */ + clk++; + illegal(op); + break; + case 0x74: /* CALL */ + make_psw(); + adr = rom[pc] | 0x300 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x75: /* EN CLK */ + clk++; + undef(op); + break; + case 0x76: /* JF1 address */ + clk+=2; + dat=rom[pc]; + if (f1) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x77: /* RR A */ + clk++; + dat=acc & 0x01; + acc = acc >> 1; + if (dat) + acc = acc | 0x80; + else + acc = acc & 0x7f; + break; + + case 0x78: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x79: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+1]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7A: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+2]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7B: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+3]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7C: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+4]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7D: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+5]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7E: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+6]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7F: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+7]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + + case 0x80: /* MOVX A,@Ri */ + acc=ext_read(intRAM[reg_pnt]); + clk+=2; + break; + case 0x81: /* MOVX A,@Ri */ + acc=ext_read(intRAM[reg_pnt+1]); + clk+=2; + break; + case 0x82: /* ILL */ + clk++; + illegal(op); + break; + case 0x83: /* RET */ + pc = ((pull() & 0x0F) << 8); + pc = pc | pull(); + break; + + case 0x84: /* JMP */ + pc=rom[pc] | 0x400 | A11; + clk+=2; + break; + case 0x85: /* CLR F0 */ + clk++; + f0=0; + break; + case 0x86: /* JNI address */ + clk+=2; + dat=rom[pc]; + if (int_clk > 0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + break; + case 0x87: /* ILL */ + illegal(op); + clk++; + break; + case 0x88: /* BUS,#data */ + clk+=2; + undef(op); + break; + case 0x89: /* ORL Pp,#data */ + write_p1(p1 | rom[pc++]); + clk+=2; + break; + case 0x8A: /* ORL Pp,#data */ + p2 = p2 | rom[pc++]; + clk+=2; + break; + case 0x8B: /* ILL */ + illegal(op); + clk++; + break; + case 0x8C: /* ORLD P4,A */ + //write_PB(0,read_PB(0)|acc); + clk+=2; + break; + case 0x8D: /* ORLD P5,A */ + //write_PB(1,read_PB(1)|acc); + clk+=2; + break; + case 0x8E: /* ORLD P6,A */ + //write_PB(2,read_PB(2)|acc); + clk+=2; + break; + case 0x8F: /* ORLD P7,A */ + //write_PB(3,read_PB(3)|acc); + clk+=2; + break; + case 0x90: /* MOVX @Ri,A */ + ext_write(acc,intRAM[reg_pnt]); + clk+=2; + break; + case 0x91: /* MOVX @Ri,A */ + ext_write(acc,intRAM[reg_pnt+1]); + clk+=2; + break; + case 0x92: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x10) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x93: /* RETR*/ + /* printf("RETR %d\n",master_clk/22); */ + clk+=2; + dat=pull(); + pc = (dat & 0x0F) << 8; + cy = (dat & 0x80) >> 7; + ac = dat & 0x40; + f0 = dat & 0x20; + bs = dat & 0x10; + if (bs) + reg_pnt=24; + else + reg_pnt=0; + pc = pc | pull(); + irq_ex=0; + A11=A11ff; + break; + case 0x94: /* CALL */ + make_psw(); + adr = rom[pc] | 0x400 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x95: /* CPL F0 */ + f0 = f0 ^ 0x20; + clk++; + break; + case 0x96: /* JNZ address */ + clk+=2; + dat=rom[pc]; + if (acc != 0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x97: /* CLR C */ + cy=0; + clk++; + break; + case 0x98: /* ANL BUS,#data */ + clk+=2; + undef(op); + break; + case 0x99: /* ANL Pp,#data */ + write_p1(p1 & rom[pc++]); + clk+=2; + break; + case 0x9A: /* ANL Pp,#data */ + p2 = p2 & rom[pc++]; + clk+=2; + break; + case 0x9B: /* ILL */ + illegal(op); + clk++; + break; + case 0x9C: /* ANLD P4,A */ + //write_PB(0,read_PB(0)&acc); + clk+=2; + break; + case 0x9D: /* ANLD P5,A */ + //write_PB(1,read_PB(1)&acc); + clk+=2; + break; + case 0x9E: /* ANLD P6,A */ + //write_PB(2,read_PB(2)&acc); + clk+=2; + break; + case 0x9F: /* ANLD P7,A */ + //write_PB(3,read_PB(3)&acc); + clk+=2; + break; + case 0xA0: /* MOV @Ri,A */ + intRAM[intRAM[reg_pnt] & 0x3F]=acc; + clk++; + break; + case 0xA1: /* MOV @Ri,A */ + intRAM[intRAM[reg_pnt+1] & 0x3F]=acc; + clk++; + break; + case 0xA2: /* ILL */ + clk++; + illegal(op); + break; + case 0xA3: /* MOVP A,@A */ + acc=rom[(pc & 0xF00) | acc]; + clk+=2; + break; + case 0xA4: /* JMP */ + pc=rom[pc] | 0x500 | A11; + clk+=2; + break; + case 0xA5: /* CLR F1 */ + clk++; + f1=0; + break; + case 0xA6: /* ILL */ + illegal(op); + clk++; + break; + case 0xA7: /* CPL C */ + cy = cy ^ 0x01; + clk++; + break; + case 0xA8: /* MOV Rr,A */ + intRAM[reg_pnt] = acc; + break; + case 0xA9: /* MOV Rr,A */ + intRAM[reg_pnt+1] = acc; + break; + case 0xAA: /* MOV Rr,A */ + intRAM[reg_pnt+2] = acc; + break; + case 0xAB: /* MOV Rr,A */ + intRAM[reg_pnt+3] = acc; + break; + case 0xAC: /* MOV Rr,A */ + intRAM[reg_pnt+4] = acc; + break; + case 0xAD: /* MOV Rr,A */ + intRAM[reg_pnt+5] = acc; + break; + case 0xAE: /* MOV Rr,A */ + intRAM[reg_pnt+6] = acc; + break; + case 0xAF: /* MOV Rr,A */ + intRAM[reg_pnt+7] = acc; + break; + case 0xB0: /* MOV @Ri,#data */ + intRAM[intRAM[reg_pnt] & 0x3F]=rom[pc++]; + clk+=2; + break; + case 0xB1: /* MOV @Ri,#data */ + intRAM[intRAM[reg_pnt+1] & 0x3F]=rom[pc++]; + clk+=2; + break; + case 0xB2: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x20) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xB3: /* JMPP @A */ + adr = (pc & 0xF00) | acc; + pc=(pc & 0xF00) | rom[adr]; + clk+=2; + break; + case 0xB4: /* CALL */ + make_psw(); + adr = rom[pc] | 0x500 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0xB5: /* CPL F1 */ + f1 = f1 ^ 0x01; + clk++; + break; + case 0xB6: /* JF0 address */ + clk+=2; + dat=rom[pc]; + if (f0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xB7: /* ILL */ + clk++; + illegal(op); + break; + case 0xB8: /* MOV Rr,#data */ + intRAM[reg_pnt]=rom[pc++]; + clk+=2; + break; + case 0xB9: /* MOV Rr,#data */ + intRAM[reg_pnt+1]=rom[pc++]; + clk+=2; + break; + case 0xBA: /* MOV Rr,#data */ + intRAM[reg_pnt+2]=rom[pc++]; + clk+=2; + break; + case 0xBB: /* MOV Rr,#data */ + intRAM[reg_pnt+3]=rom[pc++]; + clk+=2; + break; + case 0xBC: /* MOV Rr,#data */ + intRAM[reg_pnt+4]=rom[pc++]; + clk+=2; + break; + case 0xBD: /* MOV Rr,#data */ + intRAM[reg_pnt+5]=rom[pc++]; + clk+=2; + break; + case 0xBE: /* MOV Rr,#data */ + intRAM[reg_pnt+6]=rom[pc++]; + clk+=2; + break; + case 0xBF: /* MOV Rr,#data */ + intRAM[reg_pnt+7]=rom[pc++]; + clk+=2; + break; + case 0xC0: /* ILL */ + illegal(op); + clk++; + break; + case 0xC1: /* ILL */ + illegal(op); + clk++; + break; + case 0xC2: /* ILL */ + illegal(op); + clk++; + break; + case 0xC3: /* ILL */ + illegal(op); + clk++; + break; + case 0xC4: /* JMP */ + pc=rom[pc] | 0x600 | A11; + clk+=2; + break; + case 0xC5: /* SEL RB0 */ + bs=reg_pnt=0; + clk++; + break; + case 0xC6: /* JZ address */ + clk+=2; + dat=rom[pc]; + if (acc == 0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xC7: /* MOV A,PSW */ + clk++; + make_psw(); + acc=psw; + break; + case 0xC8: /* DEC Rr */ + intRAM[reg_pnt]--; + clk++; + break; + case 0xC9: /* DEC Rr */ + intRAM[reg_pnt+1]--; + clk++; + break; + case 0xCA: /* DEC Rr */ + intRAM[reg_pnt+2]--; + clk++; + break; + case 0xCB: /* DEC Rr */ + intRAM[reg_pnt+3]--; + clk++; + break; + case 0xCC: /* DEC Rr */ + intRAM[reg_pnt+4]--; + clk++; + break; + case 0xCD: /* DEC Rr */ + intRAM[reg_pnt+5]--; + clk++; + break; + case 0xCE: /* DEC Rr */ + intRAM[reg_pnt+6]--; + clk++; + break; + case 0xCF: /* DEC Rr */ + intRAM[reg_pnt+7]--; + clk++; + break; + case 0xD0: /* XRL A,@Ri */ + acc = acc ^ intRAM[intRAM[reg_pnt] & 0x3F]; + clk++; + break; + case 0xD1: /* XRL A,@Ri */ + acc = acc ^ intRAM[intRAM[reg_pnt+1] & 0x3F]; + clk++; + break; + case 0xD2: /* JBb address */ + clk+=2; + dat = rom[pc]; + if (acc & 0x40) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xD3: /* XRL A,#data */ + clk+=2; + acc = acc ^ rom[pc++]; + break; + case 0xD4: /* CALL */ + make_psw(); + adr = rom[pc] | 0x600 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0xD5: /* SEL RB1 */ + bs=0x10; + reg_pnt=24; + clk++; + break; + case 0xD6: /* ILL */ + illegal(op); + clk++; + break; + case 0xD7: /* MOV PSW,A */ + psw=acc; + clk++; + cy = (psw & 0x80) >> 7; + ac = psw & 0x40; + f0 = psw & 0x20; + bs = psw & 0x10; + if (bs) + reg_pnt = 24; + else + reg_pnt = 0; + sp = (psw & 0x07) << 1; + sp+=8; + break; + case 0xD8: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt]; + clk++; + break; + case 0xD9: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+1]; + clk++; + break; + case 0xDA: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+2]; + clk++; + break; + case 0xDB: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+3]; + clk++; + break; + case 0xDC: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+4]; + clk++; + break; + case 0xDD: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+5]; + clk++; + break; + case 0xDE: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+6]; + clk++; + break; + case 0xDF: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+7]; + clk++; + break; + case 0xE0: /* ILL */ + clk++; + illegal(op); + break; + case 0xE1: /* ILL */ + clk++; + illegal(op); + break; + case 0xE2: /* ILL */ + clk++; + illegal(op); + break; + case 0xE3: /* MOVP3 A,@A */ + + adr = 0x300 | acc; + acc=rom[adr]; + clk+=2; + break; + case 0xE4: /* JMP */ + pc=rom[pc] | 0x700 | A11; + clk+=2; + break; + case 0xE5: /* SEL MB0 */ + A11=0; + A11ff = 0; + clk++; + break; + case 0xE6: /* JNC address */ + clk+=2; + dat=rom[pc]; + if (!cy) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xE7: /* RL A */ + clk++; + dat=acc & 0x80; + acc = acc << 1; + if (dat) + acc = acc | 0x01; + else + acc = acc & 0xFE; + break; + case 0xE8: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt]--; + dat=rom[pc]; + if (intRAM[reg_pnt] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xE9: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+1]--; + dat=rom[pc]; + if (intRAM[reg_pnt+1] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEA: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+2]--; + dat=rom[pc]; + if (intRAM[reg_pnt+2] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEB: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+3]--; + dat=rom[pc]; + if (intRAM[reg_pnt+3] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEC: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+4]--; + dat=rom[pc]; + if (intRAM[reg_pnt+4] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xED: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+5]--; + dat=rom[pc]; + if (intRAM[reg_pnt+5] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEE: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+6]--; + dat=rom[pc]; + if (intRAM[reg_pnt+6] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEF: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+7]--; + dat=rom[pc]; + if (intRAM[reg_pnt+7] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xF0: /* MOV A,@Ri */ + clk++; + acc=intRAM[intRAM[reg_pnt] & 0x3F]; + break; + case 0xF1: /* MOV A,@Ri */ + clk++; + acc=intRAM[intRAM[reg_pnt + 1] & 0x3F]; + break; + case 0xF2: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x80) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xF3: /* ILL */ + illegal(op); + clk++; + break; + case 0xF4: /* CALL */ + clk+=2; + make_psw(); + adr = rom[pc] | 0x700 | A11; + pc++; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0xF5: /* SEL MB1 */ + if (irq_ex) { + A11ff = 0x800; + } + else + { + A11=0x800; + A11ff = 0x800; + } + clk++; + break; + case 0xF6: /* JC address */ + clk+=2; + dat=rom[pc]; + if (cy) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xF7: /* RLC A */ + dat=cy; + cy=(acc & 0x80) >> 7; + acc = acc << 1; + if (dat) + acc = acc | 0x01; + else + acc = acc & 0xFE; + clk++; + break; + case 0xF8: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt]; + break; + case 0xF9: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 1]; + break; + case 0xFA: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 2]; + break; + case 0xFB: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 3]; + break; + case 0xFC: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 4]; + break; + case 0xFD: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 5]; + break; + case 0xFE: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 6]; + break; + case 0xFF: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 7]; + break; + } + + + master_clk+=clk; + h_clk+=clk; + clk_counter+=clk; + + /* flag for JNI */ + if (int_clk > clk) + int_clk -= clk; + else + int_clk = 0; + + /* pending IRQs */ + if (xirq_pend) ext_IRQ(); + if (tirq_pend) tim_IRQ(); + + if (h_clk > LINECNT-1) { + h_clk-=LINECNT; + if (enahirq && (VDCwrite[0xA0] & 0x01)) ext_IRQ(); + if (count_on && mstate == 0) { + itimer++; + if (itimer == 0) { + t_flag=1; + tim_IRQ(); + if (!ccolflag) { + clear_collision(); + ccolflag=1; + } + draw_region(); + } + } + } + + if (timer_on) { + master_count+=clk; + if (master_count > 31) { + master_count-=31; + itimer++; + if (itimer == 0) { + t_flag=1; + tim_IRQ(); + } + } + } + + if ((mstate==0) && (master_clk > VBLCLK)) + handle_vbl(); + + if ((mstate==1) && (master_clk > evblclk)) { + handle_evbl(); + break; + } + + if (app_data.debug) break; + } + +} + diff --git a/MCUME_esp32/espo2em/main/cpu.h b/MCUME_esp32/espo2em/main/cpu.h new file mode 100644 index 0000000..c7d9380 --- /dev/null +++ b/MCUME_esp32/espo2em/main/cpu.h @@ -0,0 +1,34 @@ +#ifndef CPU_H +#define CPU_H + +#include "types.h" + +extern Byte acc; /* Accumulator */ +extern ADDRESS pc; /* Program counter */ +extern long clk; /* clock */ + +extern Byte itimer; /* Internal timer */ +extern Byte reg_pnt; /* pointer to register bank */ +extern Byte timer_on; /* 0=timer off/1=timer on */ +extern Byte count_on; /* 0=count off/1=count on */ + +extern Byte t_flag; /* Timer flag */ + +extern Byte psw; /* Processor status word */ +extern Byte sp; /* Stack pointer (part of psw) */ + +extern Byte p1; /* I/O port 1 */ +extern Byte p2; /* I/O port 2 */ + +extern Byte xirq_pend; +extern Byte tirq_pend; + +void init_cpu(void); +void cpu_exec(void); +void ext_IRQ(void); +void tim_IRQ(void); +void make_psw_debug(void); + + +#endif /* CPU_H */ + diff --git a/MCUME_esp32/espo2em/main/crc32.c b/MCUME_esp32/espo2em/main/crc32.c new file mode 100644 index 0000000..b38b4e3 --- /dev/null +++ b/MCUME_esp32/espo2em/main/crc32.c @@ -0,0 +1,111 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * CRC32 functions used to identify files + */ + + +#include +#include +#include "crc32.h" +//#include "pgmspace.h" + +static const unsigned long crc32tab[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, +}; + + +unsigned long crc32_buf(const void *buf, long len){ + unsigned long crc = ~0; + unsigned char *p = (unsigned char*)buf; + + while (len--) crc = (crc >> 8) ^ crc32tab[(crc ^ (*p++)) & 0xff]; + return ~crc; +} + + +unsigned long crc32_file(const char *filename){ + unsigned long crc = ~0; + FILE *f; + int c; + + f = fopen(filename,"rb"); + if (f){ + while ((c=fgetc(f)) != EOF) crc = (crc >> 8) ^ crc32tab[(crc ^ c) & 0xff]; + fclose(f); + } + return ~crc; +} + diff --git a/MCUME_esp32/espo2em/main/crc32.h b/MCUME_esp32/espo2em/main/crc32.h new file mode 100644 index 0000000..e00c9a2 --- /dev/null +++ b/MCUME_esp32/espo2em/main/crc32.h @@ -0,0 +1,7 @@ +#ifndef __CRC32_H +#define __CRC32_H + +unsigned long crc32_buf(const void *buf, long len); +unsigned long crc32_file(const char *filename); + +#endif diff --git a/MCUME_esp32/espo2em/main/cset.c b/MCUME_esp32/espo2em/main/cset.c new file mode 100644 index 0000000..3adbcb8 --- /dev/null +++ b/MCUME_esp32/espo2em/main/cset.c @@ -0,0 +1,86 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * O2 character table + */ + + +#include "types.h" +#include "cset.h" + + +const Byte cset[512]= { +0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00, +0x18,0x38,0x18,0x18,0x18,0x18,0x3C,0x00, +0x3C,0x66,0x0C,0x18,0x30,0x60,0x7E,0x00, +0x7C,0xC6,0x06,0x3C,0x06,0xC6,0x7C,0x00, +0xCC,0xCC,0xCC,0xFE,0x0C,0x0C,0x0C,0x00, +0xFE,0xC0,0xC0,0x7C,0x06,0xC6,0x7C,0x00, +0x7C,0xC6,0xC0,0xFC,0xC6,0xC6,0x7C,0x00, +0xFE,0x06,0x0C,0x18,0x30,0x60,0xC0,0x00, +0x7C,0xC6,0xC6,0x7C,0xC6,0xC6,0x7C,0x00, +0x7C,0xC6,0xC6,0x7E,0x06,0xC6,0x7C,0x00, +0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00, +0x18,0x7E,0x58,0x7E,0x1A,0x7E,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x3C,0x66,0x0C,0x18,0x18,0x00,0x18,0x00, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFE,0x00, +0xFC,0xC6,0xC6,0xFC,0xC0,0xC0,0xC0,0x00, +0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00, +0xFE,0xC0,0xC0,0xF8,0xC0,0xC0,0xFE,0x00, +0xFC,0xC6,0xC6,0xFC,0xD8,0xCC,0xC6,0x00, +0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00, +0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00, +0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, +0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00, +0x7C,0xC6,0xC6,0xC6,0xDE,0xCC,0x76,0x00, +0x7C,0xC6,0xC0,0x7C,0x06,0xC6,0x7C,0x00, +0xFC,0xC6,0xC6,0xC6,0xC6,0xC6,0xFC,0x00, +0xFE,0xC0,0xC0,0xF8,0xC0,0xC0,0xC0,0x00, +0x7C,0xC6,0xC0,0xC0,0xCE,0xC6,0x7E,0x00, +0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0x00, +0x06,0x06,0x06,0x06,0x06,0xC6,0x7C,0x00, +0xC6,0xCC,0xD8,0xF0,0xD8,0xCC,0xC6,0x00, +0x38,0x6C,0xC6,0xC6,0xFE,0xC6,0xC6,0x00, +0x7E,0x06,0x0C,0x18,0x30,0x60,0x7E,0x00, +0xC6,0xC6,0x6C,0x38,0x6C,0xC6,0xC6,0x00, +0x7C,0xC6,0xC0,0xC0,0xC0,0xC6,0x7C,0x00, +0xC6,0xC6,0xC6,0xC6,0xC6,0x6C,0x38,0x00, +0xFC,0xC6,0xC6,0xFC,0xC6,0xC6,0xFC,0x00, +0xC6,0xEE,0xFE,0xD6,0xC6,0xC6,0xC6,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, +0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00, +0x00,0x18,0x00,0x7E,0x00,0x18,0x00,0x00, +0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00, +0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0xC6,0xE6,0xF6,0xFE,0xDE,0xCE,0xC6,0x00, +0x03,0x06,0x0C,0x18,0x30,0x60,0xC0,0x00, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, +0xCE,0xDB,0xDB,0xDB,0xDB,0xDB,0xCE,0x00, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00, +0x1C,0x1C,0x18,0x1E,0x18,0x18,0x1C,0x00, +0x1C,0x1C,0x18,0x1E,0x18,0x34,0x26,0x00, +0x38,0x38,0x18,0x78,0x18,0x2C,0x64,0x00, +0x38,0x38,0x18,0x78,0x18,0x18,0x38,0x00, +0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00, +0x18,0x3C,0x7E,0xFF,0xFF,0x18,0x18,0x00, +0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00, +0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x00, +0x38,0x38,0x12,0xFE,0xB8,0x28,0x6C,0x00, +0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x00, +0x00,0x00,0x0C,0x08,0x08,0x7F,0x3E,0x00, +0x00,0x03,0x63,0xFF,0xFF,0x18,0x08,0x00, +0x00,0x00,0x00,0x10,0x38,0xFF,0x7E,0x00, +0x00,0x00,0x00,0x06,0x6E,0xFF,0x7E,0x00}; + diff --git a/MCUME_esp32/espo2em/main/cset.h b/MCUME_esp32/espo2em/main/cset.h new file mode 100644 index 0000000..49f7ecf --- /dev/null +++ b/MCUME_esp32/espo2em/main/cset.h @@ -0,0 +1,6 @@ +#ifndef __CSET_H +#define __CSET_H + +extern const Byte cset[512]; + +#endif diff --git a/MCUME_esp32/espo2em/main/emuapi.cpp b/MCUME_esp32/espo2em/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/espo2em/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " Oddysey Emulator " +#define ROMSDIR "o2em" + +extern void odd_Init(void); +extern void odd_Start(char * filename); +extern void odd_Step(void); +#define emu_Init(ROM) {odd_Init();odd_Start(ROM);} +#define emu_Step() {odd_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 256 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 45 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 20 +#define KEYBOARD_Y 15 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,28,28,28,28,29,29,28,28,28,28, + TAREA_NEW_ROW,28,28,28,28,29,29,28,28,28,28, + TAREA_XY,KEYBOARD_X,KEYBOARD_Y+KEYBOARD_KEY_H+KEYBOARD_KEY_H+14, + TAREA_NEW_ROW,28,28,28,28,29,29,28,28,28,28, + + TAREA_NEW_ROW,12, 28,28,29,29,29,29,28,28,28, + TAREA_NEW_ROW,28, 28,28,29,29,29,29,28,28,28, + TAREA_NEW_ROW,100,90, + TAREA_END}; + +const unsigned short keys[] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 35,36,40,39,42,34,23,42,43,44, + 27,33,15,28,30,35,31,19,25,26, + + ACTION_NONE, 11,29,14,16,17,18,20,21,22, + ACTION_NONE, 36,34,13,32,12,24,23,ACTION_NONE,ACTION_NONE, + ACTION_NONE, 41}; + +/* +"A B C D E F G H I J" + 11,12,13,14,15,16,17,18,19,20, + +"K L M N O P Q R S T" + 21,22,23,24,25,26,27,28,29,30, + +"U V W X Y Z + 31,32,33,34,35,36,37,36,39,40, +*/ + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0, 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + 0, 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310, 0, + 0, 0X0010}; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + diff --git a/MCUME_esp32/espo2em/main/font8x8.h b/MCUME_esp32/espo2em/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espo2em/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espo2em/main/go.cpp b/MCUME_esp32/espo2em/main/go.cpp new file mode 100644 index 0000000..926536d --- /dev/null +++ b/MCUME_esp32/espo2em/main/go.cpp @@ -0,0 +1,99 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +#include "Oddemu.h" + + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/espo2em/main/go.h b/MCUME_esp32/espo2em/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espo2em/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espo2em/main/ili9341_t3dma.cpp b/MCUME_esp32/espo2em/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espo2em/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espo2em/main/ili9341_t3dma.h b/MCUME_esp32/espo2em/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espo2em/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espo2em/main/iopins.h b/MCUME_esp32/espo2em/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espo2em/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espo2em/main/keyboard_osd.h b/MCUME_esp32/espo2em/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espo2em/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espo2em/main/logo.h b/MCUME_esp32/espo2em/main/logo.h new file mode 100644 index 0000000..5d0e5fd --- /dev/null +++ b/MCUME_esp32/espo2em/main/logo.h @@ -0,0 +1,225 @@ +const uint16_t logo[] = { +0x0140,0x00e0,0x94d2,0x94d2,0x94d2,0x94d2,0x9cf2,0x94f2,0x9512,0x9513,0x9d12,0x9d12,0x9d33,0xa533,0xa533,0x9d33,0xa513,0xa533,0xa533,0xa533,0xa554,0xa554,0xad54,0xad54,0xa554,0xa554,0xad54,0xad74,0xad74,0xad74,0xad74,0xad74,0xad94,0xad94,0xb575,0xad95,0xb595,0xb595,0xad95,0xadb5,0xb5d5,0xb5d6,0xb5d6,0xb5d6,0xb5d5,0xb5d6,0xbdf6,0xbdf6,0xbdf6,0xb5f6,0xbdf6,0xbe16,0xbe16,0xc617,0xc617,0xc637,0xbe37,0xbe37,0xbe57,0xbe38,0xc658,0xc658,0xc658,0xce58,0xc678,0xc678,0xc678,0xc678,0xce79,0xc699,0xce99,0xce99,0xce99,0xce99,0xce99,0xce99,0xce99,0xceb9,0xceba,0xceba,0xceba,0xd6ba,0xd6ba,0xceba,0xd6ba,0xd6ba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6da,0xd6ba,0xd6ba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6fa,0xd6da,0xd6ba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6da,0xd6da,0xd6da,0xdeda,0xd6da,0xd6da,0xd6da,0xd6da,0xdedb,0xd6da,0xd6da,0xd6db,0xdedb,0xd6da,0xd6da,0xd6da,0xd6ba,0xd6ba,0xd6da,0xd6da,0xd6ba,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xceba,0xceb9,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xd699,0xce99,0xce79,0xd699,0xd699,0xd699,0xd699,0xd699,0xce99,0xce79,0xd699,0xd679,0xce79,0xd6ba,0xd69a,0xce79,0xce79,0xd6ba,0xce99,0xce79,0xce99,0xd69a,0xd679,0xd679,0xd699,0xd699,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce58,0xce58,0xc658,0xc678,0xce59,0xc679,0xc658,0xc638,0xce58,0xc638,0xc658,0xc638,0xc658,0xce79,0xce58,0xc638,0xc617,0xc617,0xc617,0xc637,0xc617,0xc5f7,0xc5d7,0xc617,0xbe17,0xc617,0xc617,0xbdf7,0xbdf7,0xbe17,0xbdf6,0xc5d6,0xc5f7,0xbdf7,0xb5d6,0xbdf6,0xb5b6,0xbdf6,0xbdd6,0xbdd5,0xbdd6,0xb5d6,0xb595,0xb5b5,0xb5d6,0xb5b5,0xb5b5,0xb5b5,0xad95,0xad74,0xad74,0xad74,0xb575,0xb574,0xad74,0xad54,0xa554,0xad74,0xa554,0xa534,0xad54,0xa554,0xa513,0xa533,0xa553,0xa533,0xa513,0xad33,0xa533,0xa533,0x9cf3,0xa512,0x9cf2,0x9cf3,0x9cf2,0x9cd2,0x94d2,0x94d1,0x94b1,0x94d2,0x8cb1,0x9491,0x9492,0x9c91,0x94b1,0x94b1,0x9471,0x8c71,0x9491,0x9470,0x9470,0x8450,0x8c50,0x8c50,0x8c6f,0x844f,0x844f,0x8450,0x844f,0x8c2f,0x842f,0x844f,0x842f,0x840f,0x840f,0x83ee,0x840f,0x7c0f,0x7c0e,0x7bee,0x73ee,0x73ce,0x7bce,0x7bce,0x7bce,0x7bee,0x73cd,0x7bce,0x73cd,0x6bce,0x73cd,0x73ad,0x738d,0x7bad,0x7bad,0x73ad,0x736c,0x736c,0x6b8d,0x6b8d,0x636c,0x6b6c,0x6b6c,0x736c,0x636c,0x634c,0x6b4c,0x632b,0x630b,0x6aeb,0x52eb,0x5aeb,0x5acb,0x52ca,0x5aa9,0x5aca,0x5aaa,0x528a, +0x94d2,0x94f2,0x94d2,0x94d2,0x9512,0x9512,0x9d33,0x9d33,0xa513,0xa513,0x9d12,0xa512,0xad74,0xa553,0xa553,0xa553,0xad94,0xad74,0xad74,0xad75,0xad54,0xad54,0xb5b5,0xb5b5,0xb595,0xad54,0xa574,0xad95,0xb5d5,0xb5d5,0xb5d5,0xb595,0xadb5,0xb5d5,0xbdb5,0xbdd6,0xb5b6,0xb5d6,0xbe37,0xbe17,0xbdf7,0xbe17,0xbe37,0xbe17,0xc617,0xce58,0xc658,0xc658,0xc658,0xce78,0xce78,0xce99,0xce99,0xd6b9,0xd679,0xd699,0xd6da,0xdeda,0xdefa,0xdf1b,0xdf1b,0xdefb,0xdf1b,0xdf1b,0xe73b,0xdf3c,0xe71c,0xe73c,0xef5c,0xef7c,0xef5c,0xef7d,0xef5c,0xef7c,0xef5d,0xe75c,0xe77c,0xe75c,0xef7d,0xef9d,0xef9d,0xf79d,0xf79e,0xf79d,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xffde,0xffde,0xf7de,0xffde,0xffde,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffde,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffde,0xffde,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xfffe,0xfffe,0xfffe,0xfffe,0xf7de,0xf7dd,0xf7dd,0xf7bd,0xf79d,0xef9d,0xef9d,0xef7c,0xef7c,0xe75c,0xe75b,0xe75b,0xe73b,0xdf3b,0xdf1a,0xe73b,0xdf3b,0xdf3b,0xe71b,0xdf1a,0xdefa,0xd6fa,0xd6da,0xd6d9,0xd6d9,0xd6b9,0xdef9,0xc697,0xc698,0xc698,0xc677,0xce78,0xce98,0xc698,0xbe77,0xc656,0xbe76,0xbe56,0xc656,0xc657,0xbe36,0xb636,0xb616,0xadf5,0xadd5,0xb5f5,0xadd5,0xadf5,0xadb4,0xad74,0xad94,0xadb4,0xa593,0xa572,0x9d73,0xa5b5,0xa593,0xad94,0xad53,0xa553,0xa553,0xa552,0x9d73,0x9d93,0x9d52,0x9d12,0x9511,0x9d11,0x94f1,0x94f1,0x94f1,0x8cb0,0x94d1,0x8cb0,0x8cb0,0x8cb0,0x8490,0x8c90,0x9490,0x9490,0x9490,0x8c90,0x8470,0x8c90,0x8c90,0x8470,0x8490,0x846f,0x846f,0x844f,0x8c4f,0x842e,0x842f,0x7c0f,0x7c0e,0x7bcd,0x7bed,0x73cd,0x6bad,0x6bac,0x6bad,0x73ad,0x738c,0x63ac,0x6bcd,0x6b8d,0x738c,0x738c,0x6b8c,0x5b6c,0x5b6c,0x638b,0x638c,0x6b4c,0x6b4c,0x634b,0x636b,0x6b6c,0x632b,0x636b,0x634b,0x634b,0x634b,0x632b,0x5b0a,0x5b2b,0x630b,0x5b0a,0x5b0a,0x5b0a,0x52ea,0x52ca,0x52ea,0x52ea,0x52a8,0x5ae9,0x52a9,0x52c9,0x5ac9,0x62ca,0x5aca,0x52c9,0x4aa8,0x52ca,0x5b0a,0x6b8c,0x7bee,0x73ae,0x630c,0x5aab,0x52ea,0x5acb,0x5aca,0x5aaa,0x52ca, +0x94f2,0x9cf2,0x94d2,0x94d2,0x9cf2,0x9d13,0x9d33,0xa533,0xad94,0xc637,0xceb9,0xc698,0xbe37,0xb5f5,0xb615,0xb5f5,0xb5d5,0xb5f5,0xb5f5,0xb5d5,0xb5d5,0xbe16,0xb5d5,0xb5f5,0xb5f5,0xbe16,0xbe15,0xb5f5,0xb5f5,0xb5d5,0xb5d5,0xb5d5,0xb5f5,0xadf5,0xb5f5,0xb5d5,0xb5f6,0xb5f5,0xb5f5,0xb5f5,0xb5d5,0xb5f5,0xb5d5,0xb5f5,0xb5d5,0xb5d5,0xb5d5,0xadd5,0xadd5,0xadb4,0xa5b4,0xadd5,0xa5d5,0xa5d5,0xa5d5,0xadb4,0xad94,0xa594,0xad94,0xad94,0xa594,0xa593,0xad93,0xa573,0xa553,0xa573,0xa573,0xa553,0x9d52,0x9d52,0x9d53,0x9d32,0x9d32,0x9d32,0xa552,0x9d32,0x9512,0x9d32,0x9d32,0x9d12,0x9d12,0x9d12,0x94f1,0x9cf1,0x94d1,0x94b1,0x94d1,0x8cd1,0x8cb0,0x8c91,0x8c90,0x8c90,0x8c90,0x8c90,0x8c70,0x8c70,0x8c70,0x846f,0x846f,0x846f,0x844f,0x844e,0x844e,0x842e,0x7c0e,0x7bee,0x7bee,0x73ee,0x7bed,0x7bed,0x7bed,0x7bed,0x7bed,0x73ad,0x7bed,0x7bad,0x73cc,0x73ac,0x7bad,0x73ac,0x738c,0x738c,0x73ac,0x73ac,0x6b8b,0x6b8b,0x6b6b,0x6b6b,0x6b6b,0x6b6b,0x6b4b,0x6b4b,0x636b,0x634b,0x634a,0x6b6a,0x6b6b,0x6b4b,0x634a,0x6b4a,0x6b2a,0x6b2a,0x632a,0x630a,0x5b09,0x632a,0x630a,0x630a,0x62e9,0x62e9,0x62e9,0x5ae9,0x62c9,0x62c8,0x62c9,0x5ac8,0x5ac8,0x5ac8,0x5aa8,0x5aa9,0x62a8,0x5aa8,0x5aa8,0x5288,0x52a8,0x5a88,0x5aa8,0x52a8,0x4a88,0x5268,0x5a88,0x5288,0x5288,0x5287,0x5288,0x5268,0x5288,0x5288,0x5268,0x5288,0x4a67,0x4a88,0x5288,0x5a68,0x5248,0x5248,0x4a48,0x5248,0x4a48,0x5248,0x4a47,0x4a47,0x5a68,0x5247,0x4a47,0x4a48,0x4a47,0x5248,0x4a47,0x4a47,0x4a47,0x4a47,0x4a47,0x4a47,0x4a27,0x4a47,0x4227,0x4a47,0x4a47,0x4a47,0x4a26,0x4a27,0x4a27,0x4a47,0x4a47,0x5247,0x4a07,0x4a27,0x4a27,0x5226,0x4a26,0x4a07,0x4a07,0x41e6,0x4227,0x4a27,0x4a27,0x4a27,0x4226,0x4a06,0x4a06,0x4a27,0x4226,0x4227,0x4207,0x4206,0x4226,0x4247,0x4227,0x4226,0x4206,0x41e6,0x4a06,0x4a06,0x49e6,0x41e6,0x41e6,0x4206,0x39c6,0x41e5,0x4205,0x39e5,0x4206,0x4206,0x41e7,0x41c7,0x41e6,0x41e6,0x39e6,0x41e6,0x41e6,0x41e5,0x4205,0x41e6,0x4206,0x39e6,0x39c6,0x41e6,0x41e6,0x41c5,0x39e6,0x39e6,0x39c6,0x39c6,0x39e7,0x41e6,0x41c6,0x39c5,0x39c5,0x41c6,0x39c6,0x39c6,0x39c5,0x39a5,0x39a6,0x39a5,0x39a5,0x39a5,0x39c5,0x39c5,0x31c5,0x39c5,0x39e5,0x39c5,0x39a5,0x39a5,0x39c6,0x39c5,0x31a5,0x39c5,0x39a5,0x31a5,0x39a5,0x39a5,0x3985,0x31c5,0x39c5,0x39c5,0x39a5,0x39a5,0x31c5,0x39e5,0x52a8,0x7c0f,0x9491,0x5b0c,0x62eb,0x52ea,0x5aca,0x52c9, +0x94f1,0x9cf1,0x9cf2,0x9cf3,0x9513,0xa533,0xad94,0xce78,0xdf7c,0xadf6,0x6bee,0x4ac9,0x4247,0x4227,0x4227,0x4246,0x4247,0x4a46,0x4206,0x4a26,0x4206,0x4226,0x4a47,0x4227,0x4a27,0x4a27,0x4a47,0x4247,0x4247,0x4a27,0x5268,0x4a68,0x4a67,0x5288,0x4a68,0x4a48,0x5268,0x5a88,0x5aa8,0x5a69,0x5289,0x5288,0x52a9,0x52a9,0x52a9,0x5268,0x62a8,0x5aa8,0x5aa8,0x5aa9,0x5ac9,0x5289,0x5288,0x52c9,0x5ac9,0x5ae9,0x5b0a,0x62ea,0x62ca,0x6b0a,0x630a,0x6b0a,0x6309,0x6b2a,0x734b,0x632a,0x6b0a,0x6b2b,0x6b4b,0x6b4b,0x6b4b,0x6b4a,0x6b6b,0x6b4b,0x736a,0x738b,0x6b4b,0x736b,0x6b6b,0x736a,0x738b,0x738c,0x736b,0x738b,0x73ac,0x7b8c,0x736c,0x7b8c,0x7b8c,0x738c,0x73ac,0x738c,0x6b8b,0x738c,0x738c,0x736b,0x734c,0x738c,0x73ac,0x738d,0x73ac,0x738c,0x7b8c,0x736c,0x734b,0x736c,0x738d,0x7b8d,0x736c,0x738b,0x736c,0x738c,0x738d,0x736c,0x738c,0x7bac,0x7b8c,0x7b8c,0x7b8c,0x6bac,0x738c,0x738c,0x736c,0x6b4b,0x738c,0x736b,0x736c,0x738c,0x6b6c,0x734c,0x736c,0x738c,0x6b6c,0x6b4b,0x6b4b,0x734c,0x6b6b,0x6b6c,0x6b4b,0x736b,0x736b,0x734b,0x6b4b,0x6b4b,0x6b4b,0x6b6c,0x6b6b,0x634b,0x734b,0x732b,0x734b,0x6b2b,0x736b,0x734b,0x6b2b,0x6b4b,0x6b4b,0x6b4b,0x6b2b,0x6b2b,0x6b2a,0x630a,0x6b2b,0x6b2b,0x6b2b,0x732a,0x6b2b,0x632b,0x6b2b,0x732b,0x632a,0x632a,0x6b2b,0x6b0a,0x630b,0x5b0a,0x630a,0x6b0a,0x6b0a,0x630a,0x5aea,0x630a,0x5aea,0x5aea,0x630a,0x62ea,0x62ea,0x630a,0x62ea,0x5aca,0x630a,0x62ca,0x5aca,0x62ea,0x62ca,0x5aea,0x630a,0x5ae9,0x5aea,0x62ca,0x62ca,0x62aa,0x5ac9,0x5aea,0x62e9,0x62ea,0x62ca,0x62ca,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5aa9,0x62c9,0x62c9,0x5ac9,0x62a9,0x62a9,0x62a9,0x5aa9,0x5ac9,0x5aa9,0x62a9,0x5aa9,0x5aa9,0x5aa9,0x5aa9,0x5aa9,0x52a9,0x52a8,0x5289,0x5289,0x5aa9,0x52a8,0x5288,0x5aa8,0x5268,0x5268,0x5288,0x5288,0x5268,0x4a49,0x4a68,0x4a67,0x5268,0x5248,0x5268,0x4a68,0x4a67,0x4a68,0x4a68,0x4a48,0x4a48,0x4a67,0x5268,0x5247,0x5227,0x4a27,0x4a27,0x4a47,0x4a27,0x4207,0x4a28,0x4a47,0x4a27,0x4228,0x4227,0x3a27,0x4207,0x4227,0x4227,0x4227,0x4207,0x4a07,0x4a07,0x4a07,0x4207,0x49e7,0x4a07,0x4206,0x3a06,0x4206,0x49e7,0x4206,0x4206,0x3a06,0x39e6,0x39e6,0x4206,0x41e5,0x41e6,0x39e6,0x41c6,0x41e6,0x41e6,0x3a06,0x41e6,0x41c6,0x39e6,0x41c6,0x39c6,0x39e5,0x39e5,0x41e6,0x41e6,0x39e6,0x4206,0x4227,0x4a48,0x4a67,0x4247,0x6b8c,0xbe17,0x734e,0x52ab,0x5aea,0x52ca, +0x94f2,0x94f2,0x9cf2,0xa513,0xa513,0xbdd6,0xef7d,0xbeb9,0x5b4b,0x52c9,0x5ac9,0x62c9,0x5b09,0x5b09,0x5aea,0x5aca,0x62c9,0x62e9,0x5ac9,0x5ac9,0x5aca,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x52e9,0x5b0a,0x630a,0x62ea,0x5aea,0x62ea,0x5aea,0x62ea,0x62ea,0x630b,0x62ea,0x5b0a,0x630a,0x630a,0x630a,0x630a,0x630a,0x630b,0x5b0a,0x632b,0x5b2a,0x632b,0x6b2b,0x632b,0x6b2b,0x632a,0x734b,0x6b2b,0x632b,0x6b4b,0x6b2b,0x6b4b,0x6b6b,0x734b,0x6b4b,0x734c,0x736c,0x736c,0x734c,0x736b,0x6b4b,0x6b6b,0x6b6b,0x736c,0x736b,0x736b,0x6b6b,0x6b6b,0x6b6b,0x736b,0x736b,0x6b8c,0x736b,0x736b,0x736b,0x736c,0x7b8c,0x736b,0x736c,0x736c,0x736c,0x7b8c,0x736c,0x738b,0x738b,0x738c,0x6b8c,0x7b8c,0x738b,0x738c,0x738c,0x6bac,0x736c,0x7b6c,0x738c,0x738c,0x736b,0x736b,0x736b,0x7b4b,0x736b,0x6b6b,0x7b6b,0x736c,0x7b4c,0x736b,0x736b,0x6b8c,0x736c,0x6b6c,0x7b8c,0x736c,0x736b,0x6b8b,0x6b8c,0x736b,0x736c,0x736c,0x736b,0x734b,0x6b6c,0x6b6b,0x6b6b,0x734b,0x732b,0x732b,0x6b4b,0x6b4b,0x6b4b,0x6b4c,0x6b4b,0x6b4b,0x734b,0x734b,0x734b,0x732b,0x6b2b,0x6b2b,0x6b2b,0x6b2b,0x6b4b,0x734b,0x6b4b,0x6b4b,0x6b4b,0x6b4b,0x634b,0x634b,0x632b,0x6b2b,0x632a,0x634b,0x632b,0x5b2b,0x632a,0x632a,0x632b,0x6b0b,0x6b2a,0x632a,0x6b0b,0x632b,0x6b2b,0x6b0b,0x632a,0x6b0a,0x632a,0x6b0a,0x630b,0x630b,0x62ea,0x630a,0x630b,0x62eb,0x5aeb,0x630a,0x630b,0x630b,0x630a,0x62eb,0x62ea,0x62ea,0x62ea,0x5aea,0x5aea,0x62ca,0x62ca,0x62c9,0x62c9,0x62c9,0x62ea,0x52e9,0x5ac9,0x62ca,0x5ac9,0x5aca,0x5ac9,0x5ac9,0x62c9,0x5aa9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x62c9,0x5aa9,0x62a9,0x62a9,0x5aa9,0x5aa9,0x52a9,0x5aa9,0x52a9,0x52a9,0x5aa9,0x5a89,0x5a89,0x5a88,0x5aa9,0x5aa9,0x52a9,0x5289,0x5a89,0x5a88,0x5a88,0x5288,0x52a9,0x5288,0x5268,0x5268,0x6268,0x4a67,0x5267,0x5268,0x5268,0x4a68,0x4a68,0x4a68,0x4a67,0x5267,0x4a68,0x5248,0x5267,0x4a67,0x4a68,0x4a67,0x4a47,0x4a48,0x4a68,0x4247,0x4a47,0x4a47,0x5227,0x4a27,0x4a47,0x4227,0x4227,0x4227,0x4227,0x4a27,0x4227,0x4a27,0x4227,0x4227,0x4a07,0x4a06,0x4227,0x4227,0x4227,0x4a07,0x4a07,0x4a07,0x51e7,0x4a06,0x4a06,0x4a06,0x4a07,0x4206,0x4206,0x4a06,0x4206,0x4226,0x3a06,0x41e6,0x4206,0x41e6,0x3a06,0x39e6,0x4206,0x41e6,0x41e6,0x41e6,0x3a06,0x41e6,0x49e6,0x41e6,0x41e6,0x41c6,0x39e6,0x39e6,0x41e5,0x41e6,0x3a06,0x4206,0x4a27,0x5247,0x5268,0x4a68,0x4267,0x536a,0xef9d,0x7b8f,0x52eb,0x52ca, +0x94f2,0x94d2,0x9cf2,0xa533,0xc5b5,0xef7e,0x9df6,0x4ac9,0x6329,0x630a,0x5b29,0x5b0b,0x5ae9,0x62c9,0x5ac9,0x52c9,0x5ac9,0x5ac9,0x52e9,0x5ac9,0x62c9,0x62aa,0x62c9,0x5ac9,0x5ae9,0x5ae9,0x5ae9,0x5b0a,0x5b09,0x62c9,0x62ca,0x62ca,0x62ea,0x5aea,0x62e9,0x62ea,0x62ca,0x6aea,0x62ea,0x62ea,0x62ea,0x62ea,0x630a,0x62ea,0x5aea,0x5b0a,0x5b0a,0x630a,0x630a,0x6b0b,0x6b0b,0x632a,0x630a,0x632a,0x632a,0x632b,0x632a,0x632b,0x634a,0x734b,0x734b,0x734c,0x6b4b,0x734a,0x734b,0x734b,0x6b4b,0x6b6b,0x636b,0x734b,0x736b,0x736b,0x6b6b,0x6b6c,0x6b6b,0x6b6b,0x736b,0x736b,0x6b6b,0x736b,0x736b,0x6b6b,0x6b6b,0x6b6b,0x736b,0x736b,0x7b6b,0x736b,0x736c,0x6b6b,0x6b8b,0x738c,0x738c,0x736c,0x736b,0x736b,0x738c,0x6b8b,0x738c,0x7b6c,0x7b8b,0x736b,0x6b8b,0x6b6b,0x6b8b,0x736b,0x736c,0x636b,0x6b6b,0x6b6b,0x736c,0x736b,0x738b,0x738b,0x7b6b,0x736b,0x736c,0x736c,0x738b,0x6b8c,0x6b6c,0x736c,0x6b4c,0x6b4c,0x736c,0x734b,0x6b6b,0x634b,0x6b2b,0x6b2b,0x6b4b,0x732c,0x6b2c,0x734b,0x6b4b,0x634b,0x6b2b,0x734b,0x6b2b,0x734b,0x6b4b,0x6b4b,0x6b4b,0x6b4b,0x6b2b,0x6b2b,0x6b2b,0x632b,0x6b2b,0x6b4b,0x632a,0x632b,0x6b4b,0x632b,0x6b2c,0x6b2b,0x630a,0x6b0b,0x630a,0x632a,0x6b2a,0x630b,0x6b2b,0x632a,0x632a,0x5b0a,0x6b0b,0x6aeb,0x630b,0x630b,0x630a,0x630a,0x630a,0x6b0a,0x630a,0x630a,0x630a,0x62ea,0x630a,0x5ae9,0x5aea,0x5aea,0x62ea,0x62ca,0x62e9,0x5aea,0x5ac9,0x62ea,0x5ae9,0x62c9,0x5aca,0x62ea,0x5aaa,0x62a9,0x5aa9,0x5aaa,0x5aa9,0x52c9,0x5ac9,0x5ac9,0x5ac9,0x62a9,0x62a9,0x62c9,0x62c9,0x62c9,0x5ac9,0x5aa8,0x5aa8,0x52a8,0x5ac8,0x5aa9,0x5a89,0x5a89,0x5289,0x5288,0x5288,0x5a89,0x5288,0x5288,0x5aa8,0x5aa9,0x52a9,0x5289,0x5289,0x5288,0x5288,0x5268,0x5288,0x5a88,0x5a68,0x5a48,0x5a68,0x5288,0x5248,0x4a88,0x5268,0x4a68,0x4a68,0x4a68,0x4a68,0x4a87,0x4a68,0x4a67,0x4247,0x4a47,0x4248,0x4a27,0x4a28,0x4247,0x4267,0x4247,0x4247,0x4a27,0x4a47,0x4247,0x4a47,0x4a27,0x4a47,0x4a27,0x4a47,0x4a27,0x4227,0x4a07,0x4a27,0x4a07,0x4a26,0x4a26,0x4227,0x4206,0x4207,0x4206,0x4206,0x41e6,0x4206,0x3a06,0x4206,0x41e6,0x41e6,0x41e6,0x41e5,0x39e6,0x41e6,0x39e6,0x4206,0x41e6,0x41e6,0x39e6,0x41e6,0x39e6,0x39e6,0x41c6,0x39c6,0x41c6,0x41c6,0x31c6,0x31e6,0x31c6,0x39e6,0x39e6,0x39e6,0x39e6,0x39c6,0x41c6,0x39e6,0x31c5,0x39e6,0x39e6,0x3a06,0x4206,0x4a27,0x5247,0x5268,0x52a9,0x52a9,0x4a46,0x84af,0xd69b,0x52cc,0x5aca, +0x94f2,0x9cf3,0x9cf3,0xa533,0xe73c,0xa637,0x4aa8,0x630a,0x630b,0x630b,0x630a,0x5b0a,0x5b09,0x5ae9,0x5ac9,0x5ac9,0x52c9,0x5ac9,0x5ae9,0x5ac9,0x5aa9,0x5aca,0x5ac9,0x5ac9,0x5aa9,0x62c9,0x62c9,0x5ac9,0x5ac9,0x5ac9,0x62ea,0x5aca,0x52c9,0x5aea,0x5b09,0x62e9,0x630a,0x62e9,0x5b09,0x62e9,0x62ea,0x62ea,0x632a,0x5b29,0x5ae9,0x62ea,0x5b0a,0x5b0a,0x630a,0x630a,0x630a,0x632a,0x630a,0x5b0a,0x62ea,0x6aea,0x6aea,0x6b2b,0x632b,0x634b,0x6b4a,0x6b4b,0x634a,0x6b4b,0x6b4b,0x6b2a,0x632a,0x6b6b,0x6b2b,0x734b,0x6b2a,0x6b4b,0x6b2a,0x632c,0x6b4b,0x6b4a,0x6b2b,0x734b,0x732b,0x6b4b,0x734b,0x6b2b,0x6b4b,0x6b6b,0x634a,0x636a,0x6b8c,0x636b,0x6b6b,0x6b4b,0x6b4b,0x6b6b,0x636b,0x6b4b,0x6b4b,0x6b4b,0x6b4a,0x6b6b,0x6b6b,0x632b,0x6b4b,0x634b,0x6b4b,0x634b,0x632b,0x6b4b,0x632b,0x6b2b,0x6b2b,0x6b0a,0x6b2b,0x632b,0x632a,0x632a,0x632a,0x6b4b,0x6b2b,0x6b0a,0x6b0b,0x630a,0x630a,0x6b0b,0x630a,0x630a,0x6b0a,0x630a,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x52ca,0x5b0a,0x5aea,0x5ae9,0x632a,0x6309,0x62e9,0x5aea,0x5aea,0x5ac9,0x5ac9,0x5ae9,0x5ac9,0x62c9,0x52a9,0x52c9,0x5ac9,0x5ac9,0x5aa9,0x62c9,0x5ac9,0x5aca,0x52c9,0x5aa9,0x5aa9,0x62c9,0x5ac8,0x62a8,0x5aa9,0x5aa8,0x5aa9,0x5aa9,0x5aa9,0x5aa8,0x52a8,0x5288,0x5288,0x5289,0x5a89,0x5a89,0x5289,0x52a9,0x4a88,0x4a68,0x5268,0x4a68,0x5288,0x4a68,0x4a67,0x5267,0x5267,0x5288,0x4a48,0x4a68,0x4a47,0x4a27,0x4a48,0x4a47,0x4a48,0x4227,0x4a47,0x4a47,0x5227,0x4a27,0x4a48,0x4a48,0x4a47,0x4a27,0x5247,0x4a27,0x4a27,0x5227,0x4a27,0x4207,0x4247,0x4227,0x4227,0x3a47,0x4a47,0x4a26,0x4247,0x4227,0x3a27,0x4a27,0x4227,0x4226,0x4a27,0x4a07,0x4a26,0x4226,0x41e7,0x41e6,0x4207,0x4207,0x4227,0x4227,0x4207,0x3a06,0x4206,0x3a07,0x3a06,0x4206,0x4226,0x4206,0x39e6,0x41c6,0x39c6,0x31e5,0x39e7,0x49c6,0x41e6,0x39a6,0x4206,0x39e6,0x39e5,0x31a5,0x39a5,0x39c6,0x39e6,0x41e6,0x39e6,0x41e6,0x39c6,0x31a5,0x39c5,0x3185,0x39a6,0x3185,0x39a5,0x39a5,0x31a5,0x39c6,0x3985,0x2965,0x3986,0x31a5,0x3985,0x3965,0x39a5,0x3985,0x3985,0x3185,0x31a5,0x3165,0x3185,0x29a4,0x2984,0x3185,0x3965,0x3185,0x2985,0x3945,0x3184,0x2944,0x3144,0x2944,0x2923,0x3144,0x3984,0x3163,0x2943,0x2964,0x2924,0x3124,0x2163,0x1964,0x2164,0x2964,0x2944,0x2964,0x2964,0x2965,0x3144,0x3964,0x3164,0x2965,0x2985,0x3184,0x39e6,0x4a88,0x5288,0x5289,0x5a89,0x52a9,0x52c9,0x31c5,0xb636,0x8411,0x5aab, +0x94f2,0x9d13,0xa513,0xb5b5,0xbefb,0x4aca,0x5309,0x630a,0x630a,0x5aea,0x5b0a,0x530a,0x52ca,0x4a89,0x4a88,0x4a68,0x4247,0x4a48,0x4227,0x4227,0x4a48,0x4226,0x4a48,0x4a27,0x4a47,0x4247,0x4247,0x4a27,0x4a47,0x4207,0x4a27,0x4a07,0x4a47,0x4247,0x4247,0x4206,0x4a06,0x41e6,0x4227,0x4a27,0x4227,0x4a07,0x4206,0x4a47,0x4a47,0x4a48,0x4a47,0x4a27,0x4227,0x4a68,0x4a27,0x4227,0x4a27,0x4a47,0x4227,0x4247,0x4248,0x4a47,0x4a67,0x4a48,0x5268,0x4a67,0x4a47,0x4a28,0x5a69,0x5268,0x5268,0x4a47,0x5289,0x4a48,0x4a88,0x5288,0x5289,0x4a48,0x4a68,0x52a8,0x4a88,0x52a8,0x52a8,0x4a88,0x4a89,0x5a8a,0x5a89,0x5289,0x52a9,0x4a68,0x4ac9,0x52c9,0x5288,0x5289,0x4a88,0x5269,0x5289,0x5288,0x4a89,0x5289,0x52a8,0x5a88,0x5288,0x5288,0x5289,0x4a68,0x5268,0x52a8,0x5289,0x5268,0x4a89,0x5288,0x5269,0x5269,0x4a69,0x5268,0x4a68,0x4a88,0x5268,0x5a48,0x5288,0x5289,0x5269,0x5249,0x4a68,0x5268,0x5268,0x5268,0x4a68,0x4229,0x5269,0x5269,0x5269,0x4a48,0x4a89,0x4289,0x4a89,0x4a69,0x4a48,0x4a67,0x4a68,0x4a48,0x4a69,0x4a68,0x4a69,0x4a48,0x4a48,0x5249,0x4a69,0x4a28,0x4a48,0x5268,0x4a48,0x4a28,0x4a68,0x4a68,0x4227,0x4228,0x4269,0x4a48,0x4a68,0x5268,0x4a48,0x4a48,0x4a48,0x4a08,0x4a28,0x4228,0x4227,0x4269,0x3a28,0x3a28,0x4208,0x4a08,0x49e7,0x4228,0x4227,0x4a07,0x4a07,0x4a08,0x41e8,0x41e7,0x4208,0x4207,0x4a07,0x4208,0x39e7,0x4207,0x4207,0x41e7,0x4207,0x39e8,0x41e7,0x39c6,0x39e7,0x41e7,0x39e7,0x31c6,0x31e6,0x39e7,0x39e7,0x39e7,0x39c7,0x41c6,0x39c7,0x39a7,0x39e7,0x31e6,0x39c7,0x39c6,0x39c6,0x39a6,0x31c6,0x31c6,0x31c6,0x31c7,0x39c6,0x39c6,0x39c7,0x31a7,0x39c6,0x39c6,0x39a6,0x3986,0x39a6,0x31c5,0x39c6,0x31a5,0x29a5,0x29a6,0x31c6,0x3186,0x31a6,0x39a5,0x29a6,0x2985,0x3165,0x31a6,0x2985,0x31a6,0x3185,0x2966,0x2985,0x3186,0x3185,0x3184,0x2986,0x2965,0x3165,0x3184,0x2985,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2945,0x2965,0x2945,0x2964,0x2945,0x2125,0x2145,0x2944,0x3164,0x2165,0x2965,0x2145,0x2945,0x1925,0x2124,0x2944,0x2144,0x2144,0x2943,0x2145,0x2145,0x1924,0x2123,0x2144,0x2964,0x1944,0x20e5,0x2104,0x2104,0x2904,0x1903,0x1904,0x10e3,0x1903,0x2123,0x2104,0x2925,0x2105,0x18e4,0x18e4,0x2124,0x18e4,0x10e3,0x10e4,0x1104,0x10e3,0x18e3,0x20e3,0x1904,0x1904,0x2103,0x2923,0x2103,0x1903,0x1923,0x2965,0x3985,0x4247,0x52a8,0x5aa9,0x5aa9,0x5ac9,0x5ac9,0x5289,0x5b6b,0xc5f7,0x5aab, +0x94f2,0x9d13,0xa513,0xbe57,0x6c10,0x52a8,0x5ac9,0x62ea,0x5b0a,0x5aea,0x52ca,0x52a9,0x4a68,0x4247,0x4207,0x4227,0x4248,0x4247,0x5268,0x5248,0x4a08,0x4a28,0x4228,0x4a08,0x39e7,0x41e7,0x39e7,0x4a28,0x4a07,0x4206,0x41e7,0x4a07,0x4227,0x4207,0x4207,0x4a68,0x5268,0x5289,0x5289,0x5269,0x5289,0x4a48,0x528a,0x4a48,0x4a48,0x4a68,0x4a89,0x4a88,0x4a48,0x4269,0x52a9,0x632b,0x630b,0x632c,0x634b,0x5b0b,0x52c9,0x4aea,0x4aea,0x52eb,0x52aa,0x5289,0x52ca,0x52aa,0x4a89,0x4a89,0x4a69,0x5aaa,0x52aa,0x52aa,0x4a89,0x4a89,0x4a89,0x4a89,0x4a8a,0x5289,0x5289,0x4a89,0x4a69,0x4a89,0x5289,0x4a69,0x4269,0x4289,0x4a4a,0x4a8a,0x4a89,0x42a9,0x4a89,0x4a89,0x4aa9,0x5269,0x4a8a,0x4a69,0x4a89,0x4a89,0x4a89,0x5289,0x5289,0x528a,0x526a,0x4a6a,0x4a69,0x4a6a,0x526a,0x4a8a,0x528a,0x526a,0x5a6a,0x528b,0x528a,0x526a,0x4a8a,0x528a,0x4a6a,0x526a,0x4aaa,0x528a,0x526a,0x528a,0x528a,0x526a,0x4a69,0x4a8a,0x52ab,0x4a6a,0x4a6a,0x4a8b,0x424a,0x4a69,0x4a6a,0x3a4a,0x426a,0x426a,0x4289,0x4269,0x4249,0x4249,0x4249,0x3a29,0x4a6a,0x4a69,0x4a89,0x4a4a,0x4a69,0x4a6a,0x424a,0x4249,0x4a6a,0x39e8,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4249,0x4249,0x4a6a,0x4269,0x4229,0x4a49,0x4a49,0x4a49,0x3a49,0x3a29,0x4a49,0x4229,0x3228,0x3229,0x3a08,0x3a08,0x3209,0x3229,0x3a28,0x3a27,0x4208,0x4209,0x41c8,0x39c7,0x39e7,0x3208,0x3228,0x39e8,0x3a07,0x3208,0x39e7,0x41e9,0x31c8,0x31e7,0x39c7,0x39c7,0x3207,0x31e8,0x31c8,0x31e8,0x31e7,0x3208,0x31a8,0x31a6,0x39e7,0x31e7,0x39e7,0x31e7,0x29c7,0x31c7,0x39e7,0x39e7,0x39e8,0x31e7,0x31a7,0x31c7,0x31a7,0x2986,0x31c7,0x29a7,0x2986,0x29c6,0x29c7,0x31c7,0x31a7,0x29c7,0x29a6,0x31a7,0x2987,0x3186,0x2986,0x2186,0x29a6,0x3166,0x3186,0x2986,0x29a7,0x2986,0x3186,0x2965,0x2165,0x3186,0x3965,0x29a6,0x2966,0x3187,0x31a5,0x2966,0x2986,0x1986,0x2186,0x2186,0x1165,0x1945,0x2146,0x2945,0x2166,0x2946,0x2925,0x2945,0x2925,0x2165,0x2145,0x1924,0x2145,0x2165,0x1944,0x1924,0x2104,0x2125,0x1924,0x18e5,0x1905,0x1904,0x10e4,0x1903,0x20e4,0x18e5,0x1905,0x2104,0x1904,0x1903,0x2105,0x1924,0x2105,0x1925,0x1905,0x20e5,0x28e4,0x2904,0x1905,0x1124,0x1904,0x20e4,0x1903,0x1903,0x1924,0x1904,0x1925,0x2125,0x2145,0x1104,0x1904,0x18e4,0x20e4,0x2125,0x1904,0x1124,0x2144,0x2925,0x2924,0x2144,0x2124,0x1903,0x1923,0x31c4,0x3a46,0x5b0a,0x5aa9,0x5aa9,0x5aa9,0x5aaa,0x4247,0xadf5,0x630c, +0x9cf2,0x9d12,0xa533,0xb678,0x4aeb,0x5288,0x5ac9,0x5ac9,0x5ae9,0x5ae9,0x4a68,0x4227,0x4228,0x3a07,0x4207,0x31e6,0x39e7,0x31c7,0x31e8,0x39c7,0x31e7,0x3a08,0x3a28,0x31a6,0x39a6,0x3206,0x3207,0x39e7,0x31c6,0x39c8,0x39e8,0x31e7,0x31e8,0x3209,0x39e7,0x31a6,0x39a7,0x31a7,0x39e7,0x39e7,0x41e8,0x3a08,0x3a28,0x3a08,0x39e8,0x39e8,0x4229,0x3228,0x3a07,0x4208,0x3a08,0x3a08,0x4229,0x3a28,0x39e8,0x4229,0x3a29,0x4249,0x3a29,0x3a49,0x4248,0x4249,0x3a29,0x4249,0x4249,0x4269,0x3a49,0x4269,0x4a69,0x4a6a,0x4249,0x4a8a,0x4aab,0x4a6a,0x4a6a,0x428a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x426a,0x4a6a,0x526a,0x4a8b,0x4a6b,0x4a8b,0x4a89,0x4a49,0x528a,0x52ab,0x4aab,0x428b,0x52ab,0x52ab,0x4aab,0x52ab,0x52ab,0x52ac,0x4a6a,0x52cb,0x4acb,0x4a8b,0x52ab,0x5aeb,0x5a8a,0x52ab,0x4a8a,0x4a8b,0x526b,0x528b,0x4aab,0x4aaa,0x528b,0x4a8a,0x52cb,0x52aa,0x528a,0x52ab,0x52aa,0x4aab,0x428b,0x426a,0x4a6a,0x428b,0x426b,0x428b,0x4a8a,0x4a8a,0x528b,0x3a8a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x428a,0x4a8a,0x4a6a,0x424a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4a4a,0x3a8a,0x428b,0x4a8a,0x4a69,0x4249,0x3a49,0x4249,0x3a29,0x4269,0x4249,0x424a,0x3a49,0x424a,0x4249,0x3a08,0x4a2a,0x424a,0x4a49,0x4a09,0x4209,0x3a08,0x3a09,0x4229,0x3a28,0x3a29,0x3a08,0x3a28,0x3a08,0x3a08,0x3a29,0x3a09,0x3a08,0x3a09,0x3a09,0x3228,0x3a28,0x4208,0x39e8,0x4208,0x4208,0x39e8,0x3a29,0x3a08,0x39e8,0x41e8,0x3a08,0x3208,0x39e8,0x31c8,0x3206,0x31a7,0x31c8,0x31c7,0x31a7,0x31c6,0x31c7,0x31a7,0x31a7,0x39e8,0x31c7,0x39c7,0x31c6,0x31a7,0x31a6,0x29a6,0x29a6,0x3186,0x3187,0x2966,0x29a6,0x31a7,0x29a7,0x29c7,0x3a07,0x29a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x3186,0x2985,0x2985,0x3166,0x3146,0x2986,0x2986,0x3186,0x29a6,0x3166,0x3166,0x2966,0x2986,0x2985,0x2965,0x2986,0x2986,0x1945,0x2145,0x2145,0x2145,0x2146,0x1945,0x2945,0x2125,0x2926,0x2925,0x1925,0x2905,0x2145,0x2145,0x2125,0x2125,0x1944,0x1944,0x2125,0x1904,0x2125,0x2124,0x1905,0x1904,0x18e4,0x2104,0x1904,0x20e4,0x18e4,0x1103,0x2104,0x18e3,0x20e4,0x18c4,0x1104,0x10e3,0x10c3,0x18e4,0x18e3,0x18e3,0x10e4,0x18c4,0x10e3,0x20c3,0x18e3,0x10e3,0x18c4,0x10e3,0x08c2,0x08e4,0x18c4,0x18c2,0x10c3,0x10c3,0x10e3,0x20e3,0x20e4,0x10e4,0x1104,0x1104,0x2125,0x2105,0x2125,0x2145,0x2185,0x2124,0x2144,0x39e5,0x4a48,0x52a9,0x52a9,0x5aa8,0x5289,0x4227,0x7cd0,0x736e, +0x9cf2,0xa513,0xad74,0x9e57,0x42a9,0x5288,0x5289,0x52a9,0x52a8,0x4a68,0x4247,0x3a07,0x31c7,0x39e7,0x4228,0x3a28,0x3a08,0x3a09,0x39e7,0x41e7,0x3a08,0x31e7,0x31c7,0x31c6,0x41c7,0x39e7,0x31e7,0x3207,0x31c7,0x29e8,0x2a07,0x31e6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e8,0x31c7,0x39e8,0x3a08,0x3a28,0x3a27,0x3a07,0x4208,0x4209,0x3a09,0x3a09,0x3a08,0x4228,0x3a08,0x3a08,0x3a29,0x3a49,0x4229,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4a49,0x4249,0x3a49,0x4269,0x4249,0x4249,0x424a,0x4a49,0x4249,0x4a29,0x4249,0x426a,0x4269,0x4a6a,0x426a,0x426a,0x4a6a,0x428a,0x4a8a,0x526a,0x4a6a,0x4a6a,0x4a6a,0x528a,0x4a8b,0x4a6b,0x4a4a,0x4269,0x4a49,0x526a,0x52ab,0x428b,0x42aa,0x4aab,0x4a8b,0x4a8b,0x528a,0x4a8a,0x4aab,0x428b,0x4a8b,0x4a8b,0x528a,0x528a,0x528b,0x528b,0x526b,0x526b,0x4289,0x4a8a,0x4a49,0x42aa,0x4a8b,0x4a8b,0x4a8a,0x4a8b,0x4a6a,0x528a,0x4a8a,0x4a6a,0x4a8b,0x426a,0x4a8b,0x4a4b,0x4a6a,0x426a,0x4a6a,0x4a49,0x428b,0x426a,0x428a,0x4a6a,0x4a6a,0x426a,0x4249,0x4a49,0x4269,0x426a,0x4a8a,0x4a6a,0x4a69,0x424a,0x4a49,0x4a49,0x4249,0x4269,0x3a6a,0x4269,0x4269,0x424a,0x3a49,0x4a49,0x4249,0x3a49,0x3a49,0x3a29,0x426a,0x3a08,0x4209,0x3a29,0x4249,0x3a49,0x3a4a,0x3a09,0x4208,0x3a09,0x4208,0x4229,0x4208,0x4228,0x3a08,0x3a08,0x39e8,0x31e8,0x3a08,0x31a7,0x39e8,0x39e8,0x39c8,0x31e8,0x31c7,0x3a07,0x3a07,0x31e8,0x41e7,0x31c7,0x29a7,0x31c7,0x39c7,0x39c7,0x39c7,0x31e7,0x31c7,0x31a7,0x31c7,0x31a7,0x3186,0x3187,0x29a6,0x2986,0x3186,0x3166,0x2166,0x3167,0x2186,0x2186,0x2986,0x2986,0x2986,0x3186,0x3166,0x2966,0x2986,0x2186,0x2166,0x2946,0x3165,0x2166,0x2166,0x2165,0x2965,0x2965,0x3145,0x2966,0x2166,0x2946,0x3145,0x2964,0x2165,0x2925,0x2145,0x1945,0x2945,0x2144,0x2105,0x2145,0x2945,0x1925,0x1925,0x2125,0x2145,0x2125,0x2125,0x1925,0x2125,0x1924,0x1125,0x1924,0x2104,0x2124,0x1904,0x10e4,0x1905,0x18e5,0x20e4,0x2124,0x1104,0x1905,0x1104,0x1903,0x1903,0x1903,0x10e4,0x1904,0x20c4,0x28e4,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x08c3,0x08c3,0x10c3,0x10a4,0x08e3,0x10c3,0x18e3,0x18a3,0x08c3,0x10c3,0x10e2,0x10a3,0x08a3,0x10c2,0x18c3,0x10c3,0x08a2,0x00c3,0x10c3,0x18a2,0x10c2,0x18a3,0x18c2,0x18c2,0x10c3,0x08c3,0x08a4,0x08c3,0x18e4,0x18e4,0x2905,0x2145,0x1965,0x3166,0x1145,0x1943,0x3a06,0x4a68,0x4a88,0x5288,0x5268,0x4227,0x63ab,0x83cf, +0x9cf3,0xa513,0xb5b5,0x8dd6,0x4248,0x5288,0x5288,0x4aa8,0x4aa8,0x3a07,0x3a07,0x3a07,0x3a08,0x4248,0x3a28,0x31e8,0x31c8,0x31e7,0x3186,0x31a7,0x31e7,0x31e6,0x29a5,0x3986,0x31a6,0x31a6,0x39c6,0x31c7,0x31c7,0x29a6,0x29c6,0x3187,0x29c7,0x29c7,0x39c7,0x39c7,0x31c8,0x39a7,0x41c7,0x31a6,0x39e8,0x31c7,0x39c7,0x39e8,0x39e8,0x3a08,0x3a08,0x3208,0x39e8,0x3208,0x29c7,0x3207,0x39e8,0x3228,0x3a08,0x3a07,0x4208,0x4229,0x4229,0x4208,0x4229,0x4228,0x3a28,0x3a29,0x4269,0x3a49,0x3a08,0x3a08,0x3a2a,0x424a,0x424a,0x3228,0x3a69,0x3a48,0x4269,0x4249,0x3a29,0x4249,0x4269,0x428a,0x422a,0x4a4a,0x426a,0x4249,0x4a69,0x4a49,0x4a6a,0x4a6a,0x3a4a,0x4229,0x426a,0x4a6a,0x528a,0x4a8a,0x4a8a,0x428a,0x4a8a,0x4a8a,0x426a,0x426a,0x428a,0x428b,0x426a,0x4a8a,0x428a,0x528b,0x4aab,0x428b,0x528a,0x4a8a,0x4a6b,0x524a,0x4a6a,0x426a,0x4a69,0x5249,0x526a,0x52ab,0x4a6a,0x4a6a,0x426a,0x4a8a,0x426a,0x528b,0x4a6a,0x4a6a,0x428a,0x426a,0x428a,0x424a,0x4229,0x428a,0x4a6b,0x4269,0x4249,0x3a4a,0x4a4a,0x424a,0x4269,0x4248,0x4249,0x4229,0x4229,0x4a2a,0x424a,0x3a28,0x426a,0x3a49,0x424a,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x3a49,0x4249,0x4229,0x4249,0x4249,0x4208,0x4209,0x39e8,0x31e8,0x31e9,0x39c8,0x31e7,0x31e8,0x39e8,0x41c8,0x4208,0x3a28,0x3a08,0x31e8,0x39e8,0x41c8,0x39e8,0x3208,0x39c7,0x39e7,0x39c8,0x39c8,0x39c8,0x39e7,0x39e7,0x39c7,0x39a7,0x29c7,0x31c8,0x39c7,0x31a7,0x31c7,0x31c7,0x31e7,0x31a7,0x2987,0x3186,0x3187,0x39a6,0x3187,0x2987,0x2166,0x3186,0x2986,0x2186,0x3186,0x29a6,0x3166,0x2986,0x2145,0x2965,0x3166,0x3166,0x2966,0x1945,0x2186,0x2145,0x2145,0x2125,0x2925,0x2966,0x2946,0x2166,0x1925,0x2145,0x2946,0x1926,0x1945,0x2145,0x2125,0x2925,0x2145,0x1945,0x1904,0x1944,0x2144,0x2145,0x1925,0x1905,0x1104,0x1924,0x1905,0x2105,0x2105,0x2124,0x1904,0x1904,0x1904,0x1905,0x1903,0x1903,0x1904,0x1905,0x1904,0x1104,0x1904,0x1904,0x1904,0x18e4,0x18e4,0x10e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1103,0x18e4,0x18c4,0x18e4,0x20e4,0x10c2,0x18e3,0x10c2,0x18c3,0x18c3,0x18c2,0x18e3,0x08c3,0x00a3,0x08c3,0x10c4,0x08c3,0x08c3,0x10c3,0x18a3,0x0882,0x08a3,0x10c2,0x10a3,0x08a2,0x10a3,0x18c2,0x1082,0x0883,0x08c2,0x10c3,0x1082,0x08a3,0x10a2,0x08a2,0x08c3,0x08a3,0x08a3,0x00c3,0x08c3,0x10c3,0x10e4,0x1124,0x1924,0x2145,0x2946,0x1165,0x2103,0x39e6,0x4227,0x4a68,0x5287,0x5268,0x4a27,0x5b2a,0x83cf, +0x9d13,0xa513,0xb5b5,0x8575,0x4a28,0x5288,0x4a68,0x4a88,0x4288,0x39e6,0x31a6,0x39e8,0x39e8,0x4208,0x3a08,0x31e8,0x31c7,0x31e7,0x39e7,0x39e7,0x39c7,0x31c7,0x2186,0x31a6,0x31a7,0x31a7,0x29c6,0x29a7,0x29a7,0x3186,0x31a6,0x3186,0x29c6,0x29c7,0x31c7,0x29c7,0x29a7,0x31c7,0x31e7,0x31c7,0x31c7,0x39c7,0x41e8,0x39c8,0x31c8,0x39e7,0x31c7,0x31e8,0x29c7,0x3a08,0x3207,0x31e7,0x39e7,0x39e7,0x41e8,0x3a07,0x4208,0x3a08,0x3a48,0x4249,0x4229,0x3a09,0x4209,0x3a29,0x4249,0x3a29,0x4229,0x4229,0x3a09,0x4249,0x4249,0x3249,0x3249,0x3a49,0x4228,0x4228,0x3a49,0x3a49,0x4269,0x4249,0x426a,0x428a,0x4269,0x4249,0x4a49,0x4a4a,0x3a4a,0x424a,0x4269,0x4a89,0x3a49,0x428a,0x526a,0x424a,0x3a4a,0x426a,0x4249,0x4a6a,0x426a,0x428a,0x4a8a,0x4aaa,0x426a,0x4a6a,0x4a8b,0x526b,0x428a,0x4a8b,0x4a8a,0x528a,0x4a6a,0x4a4a,0x4a4a,0x424a,0x428a,0x4a69,0x4a8a,0x428a,0x4a4a,0x4a49,0x4269,0x426a,0x426a,0x4a6a,0x4249,0x4249,0x4269,0x4a8a,0x424a,0x426a,0x426a,0x428a,0x426a,0x428a,0x4269,0x424a,0x3a4a,0x4249,0x3a08,0x3a08,0x4a49,0x4208,0x4209,0x4a2a,0x3a49,0x3a49,0x4208,0x8431,0x4a4b,0x39e9,0x52ac,0x528b,0x4a8b,0x31a7,0x632d,0x39e9,0x9c93,0x526b,0x31a7,0x738f,0x6b4f,0x528b,0x9cb4,0xa515,0x528b,0xa515,0x94b3,0x83d0,0x3187,0x7bd1,0x2126,0x8411,0xad55,0x8c11,0x3166,0x39e8,0x39c7,0x39e7,0x39e8,0x39c8,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x39c7,0x39a7,0x31a7,0x3167,0x3167,0x2987,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x31a7,0x3986,0x2966,0x31a7,0x3187,0x2966,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3166,0x2966,0x2166,0x2166,0x2166,0x2166,0x2166,0x2146,0x2966,0x2985,0x2965,0x2946,0x2165,0x2145,0x1145,0x2145,0x2166,0x2145,0x2925,0x2945,0x2925,0x2945,0x1945,0x1145,0x2145,0x2145,0x2125,0x1905,0x1905,0x2105,0x1925,0x1904,0x2104,0x18e4,0x1904,0x1904,0x1105,0x1905,0x1104,0x1104,0x18e4,0x10e5,0x1104,0x10e4,0x1904,0x1104,0x20e4,0x18e3,0x20e4,0x10e4,0x18e4,0x18e4,0x18c3,0x18e4,0x20e4,0x18c3,0x10c3,0x08e3,0x18c3,0x18c3,0x10c3,0x10c4,0x18e3,0x20c2,0x18c2,0x18c3,0x10c2,0x10c3,0x08c3,0x08c3,0x08c3,0x08c2,0x10c2,0x10c4,0x08a3,0x08a2,0x08a2,0x08a3,0x10a3,0x08c2,0x10a2,0x10a2,0x08c3,0x10a3,0x18c2,0x18c3,0x18c3,0x10a3,0x10a3,0x1083,0x10c2,0x10c2,0x08a3,0x18a4,0x10c4,0x1104,0x1904,0x2104,0x1924,0x2124,0x2125,0x1945,0x18e4,0x3184,0x4227,0x5288,0x4a68,0x4a68,0x4a28,0x52c9,0x8c0f, +0x9d13,0x9d33,0xadb5,0x8d54,0x4a28,0x5288,0x5288,0x4a88,0x4268,0x31c5,0x39c6,0x3a07,0x3207,0x3a08,0x4208,0x39c7,0x31c7,0x31e7,0x31e7,0x31a6,0x31a7,0x31a7,0x3186,0x29a7,0x31c8,0x31a7,0x31a7,0x3187,0x31c7,0x3186,0x29a7,0x31a6,0x31a6,0x31c7,0x31a7,0x39c7,0x39a8,0x39c8,0x39e7,0x39c7,0x39e7,0x39c6,0x4208,0x39e8,0x39e8,0x39e8,0x29c7,0x31e8,0x39e7,0x3a08,0x4228,0x39e8,0x3a08,0x3a08,0x3a08,0x4209,0x39e8,0x39e8,0x4229,0x4248,0x4249,0x3a08,0x3a29,0x4229,0x4229,0x4229,0x4229,0x3a28,0x424a,0x4229,0x4228,0x3a08,0x3a29,0x3a2a,0x4229,0x4249,0x426a,0x4a8b,0x424a,0x4a6a,0x424a,0x424a,0x426a,0x426a,0x3a69,0x4a6a,0x4229,0x424a,0x4a29,0x528a,0x426a,0x4a6a,0x426b,0x426a,0x428b,0x426b,0x426a,0x426a,0x428a,0x4a6a,0x4249,0x4a8a,0x4a8b,0x4a6a,0x4a6a,0x4a8a,0x4249,0x4a69,0x528a,0x4a6a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4269,0x4a89,0x4a8a,0x426a,0x4a6a,0x426a,0x424a,0x424a,0x4249,0x4249,0x4a4a,0x4a4a,0x4249,0x4209,0x420a,0x49e8,0x4a29,0x4269,0x4229,0x4229,0x4249,0x424a,0x426a,0x4229,0x4229,0x4249,0x3a48,0x4249,0x4a29,0x4a4a,0x4229,0x3a08,0x41e8,0xe75b,0x9d56,0x3166,0xad77,0x83f0,0x636f,0x2104,0xc637,0x420a,0xe75c,0x9d37,0x2945,0xef5c,0x9d55,0x7c30,0x7c72,0x5b4e,0x426a,0xc6da,0x2a28,0xc69a,0x39e9,0xcedb,0x39a7,0xb638,0x2a06,0xb5f7,0x52ac,0x39e8,0x39e8,0x3a08,0x3a08,0x31a7,0x3167,0x31a6,0x31a6,0x31c7,0x29a7,0x31a7,0x2946,0x3186,0x3987,0x3187,0x2966,0x3166,0x3186,0x2966,0x2946,0x3186,0x3166,0x2946,0x2946,0x2146,0x2946,0x2946,0x2945,0x3166,0x2145,0x2945,0x1945,0x2145,0x2926,0x2946,0x2145,0x2925,0x2925,0x2925,0x2925,0x2126,0x2126,0x2126,0x1925,0x2145,0x1905,0x2105,0x2125,0x1904,0x1905,0x1105,0x1905,0x2105,0x2905,0x2105,0x2125,0x2104,0x0904,0x1904,0x1904,0x1905,0x18e5,0x18e4,0x2105,0x2125,0x1904,0x18e5,0x10e4,0x18e3,0x18c4,0x18e4,0x18e4,0x1904,0x18e4,0x20e4,0x18e4,0x18c4,0x10c4,0x10a3,0x20e3,0x18c4,0x18e4,0x18e4,0x10e3,0x18c4,0x10e4,0x10c4,0x10c4,0x18c4,0x10e4,0x10c3,0x1104,0x18e3,0x10c3,0x10c3,0x10c4,0x18c3,0x18c3,0x10e2,0x10c3,0x10c3,0x18c2,0x10c2,0x08c2,0x18c3,0x10a3,0x10a2,0x10a4,0x10c4,0x08c3,0x10c3,0x10c2,0x08a2,0x0883,0x18a2,0x1882,0x10a2,0x10c3,0x08c2,0x10a2,0x10a2,0x10a2,0x10a3,0x1082,0x10a2,0x0082,0x00c2,0x20a2,0x1883,0x10a3,0x10e3,0x18e4,0x18e4,0x1923,0x2124,0x2125,0x1904,0x2943,0x4227,0x5268,0x5268,0x5288,0x4248,0x4ac9,0x8450, +0x9d12,0xa533,0xb5d5,0x8554,0x4228,0x5a88,0x5269,0x4a88,0x4248,0x31e7,0x39c6,0x39e7,0x3a07,0x3a07,0x3208,0x31e8,0x31e7,0x31e7,0x31c7,0x31c7,0x29a7,0x3187,0x3987,0x3186,0x2966,0x3187,0x2965,0x2966,0x2966,0x2987,0x29c7,0x2986,0x3187,0x31c8,0x31c7,0x2986,0x2986,0x3187,0x2966,0x2966,0x3166,0x3166,0x4187,0x31c7,0x2986,0x2166,0x2146,0x2987,0x31a7,0x2966,0x3186,0x3187,0x2987,0x2987,0x3187,0x3187,0x3167,0x2947,0x3146,0x2966,0x2946,0x2946,0x31a8,0x31e7,0x2987,0x2167,0x2927,0x2967,0x2147,0x2926,0x3187,0x39a8,0x31a8,0x3188,0x3167,0x3988,0x3988,0x39c9,0x3188,0x3988,0x3968,0x2968,0x29a9,0x2967,0x2988,0x39c9,0x39a8,0x2968,0x2947,0x3187,0x2147,0x3188,0x2967,0x2968,0x3168,0x31a9,0x2968,0x2947,0x2927,0x3988,0x2967,0x2968,0x39c9,0x31c8,0x39a9,0x39a9,0x39a9,0x39c9,0x41e9,0x49e9,0x41c9,0x4a0a,0x422a,0x420a,0x3a2b,0x422b,0x422a,0x420a,0x4a2b,0x420b,0x41e9,0x526b,0x4209,0x422a,0x4a6b,0x526b,0x5aac,0x62ac,0x526b,0x524b,0x5a2b,0x524b,0x4a4a,0x522a,0x4a2a,0x422a,0x4a4a,0x526b,0x5a8b,0x5a8b,0x39e9,0x422a,0x4229,0x4229,0x4a49,0x3a09,0x39e7,0xbe57,0xa576,0x4a29,0x9535,0x738f,0x5b4e,0x2145,0xc657,0x4a0a,0xc699,0xcebb,0x736e,0xb5f7,0x8cf4,0x7bf0,0xc69a,0xe6fc,0x422a,0xd6fb,0xc67a,0xbedb,0x2106,0xc6ba,0x6aed,0x94b3,0x31a7,0x39e8,0x39c8,0x39a8,0x39e8,0x39c7,0x3186,0x6b2e,0x6b2f,0x630e,0x52ac,0x4aac,0x52ac,0x5aac,0x5acd,0x52ac,0x5acc,0x632d,0x634e,0x6b4e,0x5aac,0x62cc,0x5acc,0x528b,0x528b,0x528b,0x62cd,0x62ed,0x5a6c,0x628c,0x524b,0x524b,0x5aac,0x52ac,0x5acd,0x5a6b,0x5a4b,0x5a8b,0x6acc,0x62ac,0x522a,0x4a09,0x5229,0x4a09,0x5229,0x5a4a,0x526a,0x49e9,0x4209,0x4a6b,0x4209,0x420a,0x49ea,0x4a0a,0x4a0a,0x41e9,0x4a2a,0x39c8,0x3988,0x3988,0x3167,0x3987,0x3187,0x2987,0x3188,0x31c9,0x3187,0x3187,0x3188,0x2147,0x2105,0x2106,0x2926,0x2926,0x2906,0x2926,0x2926,0x2125,0x2946,0x2926,0x1925,0x2906,0x2905,0x2905,0x20e5,0x20c4,0x20c4,0x20c4,0x2905,0x2105,0x2125,0x2905,0x18a3,0x18a4,0x18c4,0x18a3,0x1884,0x20a5,0x18c4,0x20c4,0x20c5,0x18c4,0x18c4,0x18e4,0x18e4,0x18e4,0x18c3,0x18a3,0x18a3,0x20c5,0x18c5,0x18c5,0x18e4,0x18c5,0x10a4,0x1905,0x2105,0x1905,0x1905,0x2105,0x18c5,0x10c4,0x18e4,0x18e4,0x2106,0x2105,0x2905,0x2926,0x2126,0x2125,0x2925,0x2126,0x1083,0x10a3,0x18e4,0x10c4,0x10c3,0x2104,0x2905,0x2124,0x2964,0x4207,0x5268,0x4a68,0x4a69,0x4a47,0x4aa9,0x8451, +0x9d13,0xa533,0xadf6,0x7d13,0x4248,0x5a88,0x5287,0x4a88,0x4a48,0x39e6,0x31e7,0x31e8,0x39e8,0x39e8,0x39e8,0x31e8,0x3187,0x3167,0x526b,0x52ac,0x62ed,0x6b2e,0x732f,0x6b2e,0x632e,0x6b4e,0x6b6f,0x73b0,0x6b8f,0x6b6f,0x6b6f,0x6b8f,0x6b6f,0x7bb0,0x7bd0,0x83f1,0x8432,0x7c32,0x8452,0x7c32,0x8c73,0x9493,0x9c73,0x9c73,0x9cb4,0x94d4,0x9cf4,0x9cd4,0x9cd4,0xa516,0xa536,0xa516,0xa536,0xad56,0xad56,0xad97,0xb5b8,0xb5b7,0xbdd8,0xc619,0xbe19,0xbdf8,0xbe19,0xc65a,0xc67b,0xc65a,0xce5a,0xce5a,0xce7a,0xce7b,0xd69b,0xd6bb,0xd69b,0xdebb,0xd6bc,0xdebc,0xdedc,0xcebb,0xd6bb,0xdefc,0xdf1c,0xe71c,0xe6fc,0xe71d,0xe75d,0xe75d,0xe73d,0xe73d,0xef5e,0xe75d,0xef5d,0xef5e,0xef5d,0xef7e,0xef9e,0xef9e,0xef7e,0xef9e,0xef9e,0xf7bf,0xffff,0xf7df,0xffff,0xf7df,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xadb8,0x4209,0x39e9,0x4a49,0x4229,0x41e8,0xdf3c,0x52aa,0xd6da,0x8d14,0x6b6e,0x6bd1,0x0842,0xceda,0x4209,0xbe17,0x9d34,0xc69a,0x630c,0x9d35,0x8430,0x634e,0x2166,0x29a7,0xcefb,0x2946,0xd6fc,0x2947,0xc6ba,0x526a,0x9d35,0x18c4,0x83af,0x49ea,0x41e8,0x39e8,0x41a7,0x2985,0xe77c,0xe79d,0xefbe,0xe79d,0xef7d,0xe79e,0xdf5c,0xe77d,0xe77d,0xdf5d,0xdf3c,0xdf3b,0xe79d,0xe79c,0xe75c,0xdf3c,0xd73c,0xd6fb,0xdf3b,0xdf3c,0xdf1b,0xd71b,0xcefb,0xcedb,0xd6fb,0xd71c,0xd73c,0xd71b,0xcefb,0xc6da,0xcefa,0xceda,0xc6da,0xc699,0xc6b9,0xc6b9,0xc699,0xbe58,0xb638,0xc659,0xc699,0xcefa,0xc71a,0xcf1a,0xced9,0xceb9,0xbe79,0xbe78,0xbe78,0xbe38,0xc679,0xbe79,0xbe59,0xc638,0xc678,0xce58,0xc658,0xc698,0xc69a,0xb637,0xc678,0xc679,0xc658,0xc618,0xb618,0xbe38,0xbe18,0xbe17,0xbe38,0xb638,0xb617,0xbe37,0xbe58,0xb617,0xb617,0xb618,0xb617,0xb5f6,0xbe18,0xb5f7,0xadf6,0xadd6,0xa5b6,0xadd6,0xadd7,0xa5b6,0xa5b6,0xa596,0xad97,0xad76,0xadb7,0xb5f7,0x9d96,0xadb5,0xadb6,0xa5d6,0xa595,0xa576,0xa556,0xa575,0xa574,0xa555,0xa575,0xad95,0xad75,0xa575,0xa555,0xa535,0x9514,0x9514,0x9514,0x94f2,0x94f3,0x9514,0x9d34,0x9513,0x9514,0x9d34,0x94f3,0x94d3,0x8cb2,0x8cd3,0x8cd3,0x9513,0x9d14,0x9cd4,0x526b,0x10a3,0x10e4,0x18c3,0x20e4,0x1904,0x1924,0x2944,0x4207,0x5268,0x5268,0x4a68,0x4a67,0x5288,0x8451, +0x9d13,0x9d13,0xb5b5,0x7cf3,0x4269,0x5288,0x5287,0x5288,0x4248,0x39c6,0x39c7,0x31e8,0x39c7,0x31c6,0x3207,0x39e8,0x6aac,0xc618,0xd6fb,0xd73b,0xcefb,0xc6fa,0xc6fa,0xdf3c,0xdf7d,0xd77d,0xdf5c,0xcf3b,0xcf5c,0xcefb,0xd71b,0xd75c,0xd75c,0xcf1b,0xcf1b,0xd73c,0xd73b,0xd71b,0xd71b,0xceda,0xc6ba,0xcefb,0xd6fa,0xcefa,0xcefb,0xcefb,0xc6fb,0xc6fa,0xc6ba,0xc69a,0xc6b9,0xc6da,0xcedb,0xc6da,0xc6da,0xcefb,0xbeba,0xb699,0xbe99,0xc699,0xb678,0xbe58,0xb637,0xbe37,0xbe59,0xbe58,0xbe37,0xadf6,0xb617,0xb5f6,0xadf7,0xa5d6,0xb617,0xa5b5,0xa595,0xa595,0x9d95,0x9d74,0x9d75,0x9d34,0x9534,0x9d75,0x9d75,0x9513,0x9d13,0x9533,0x84f3,0x84d2,0x8cd2,0x8cf3,0x84b2,0x8490,0x84b2,0x7c70,0x7c30,0x7c30,0x7c71,0x7451,0x6c50,0x6c2f,0x7430,0x7450,0x6c0f,0x63cf,0x63ce,0x6bee,0x63ce,0x5b6d,0x5b6c,0x5b6c,0x5b6c,0x638d,0x5b4c,0x5b6c,0x5b4c,0x52eb,0x530b,0x530b,0x4aaa,0x52ca,0x530b,0x5b4c,0x52ca,0x42aa,0x4aaa,0x428a,0x4249,0x4289,0x4248,0x4229,0x4269,0x3a69,0x4248,0x4248,0x3a28,0x4248,0x4a69,0x3a08,0x39e8,0x3a07,0x39c6,0x41e8,0x3a29,0x3a29,0x422a,0x4249,0x3a08,0xdf3d,0x2125,0xbdf7,0xb619,0x3a08,0xe73c,0xce79,0xbe9a,0x41e7,0xc618,0x5acb,0xcedb,0x4208,0x8cd4,0x7c2f,0xdefb,0xe73c,0x73d1,0xadd8,0x2146,0xb5d5,0x4229,0xc679,0x20e4,0xbe17,0xd6db,0xceda,0x3a09,0x39e8,0x39c7,0x39e8,0x39e7,0x1904,0x10c2,0x10a2,0x10e3,0x18c3,0x08a3,0x10c3,0x10e3,0x10e3,0x08c2,0x10e3,0x10a2,0x08a2,0x08a1,0x10a2,0x1081,0x0881,0x08c2,0x08c2,0x0882,0x0881,0x10c2,0x10a3,0x10c2,0x1903,0x08c2,0x1082,0x10a3,0x10e3,0x18c2,0x08a2,0x1082,0x1062,0x1082,0x0862,0x0861,0x1882,0x0061,0x0882,0x0861,0x1041,0x0061,0x0841,0x0861,0x0861,0x0061,0x0882,0x00a2,0x0081,0x10a2,0x10a2,0x0861,0x0861,0x08a2,0x0882,0x08a1,0x08a2,0x0882,0x0882,0x0861,0x0861,0x0861,0x10a1,0x1061,0x1041,0x0862,0x0061,0x0881,0x0881,0x0081,0x0882,0x10a2,0x08a2,0x10c2,0x18e3,0x0881,0x10a2,0x1081,0x10a2,0x0882,0x1082,0x1082,0x0862,0x0882,0x0861,0x0861,0x0861,0x0041,0x0861,0x0061,0x08c3,0x10e3,0x0820,0x0820,0x0820,0x0060,0x0041,0x0020,0x0800,0x0000,0x0041,0x0061,0x0020,0x0820,0x0020,0x0020,0x0000,0x0000,0x0021,0x0021,0x0020,0x0020,0x0040,0x0040,0x0841,0x0041,0x0041,0x0040,0x0020,0x0020,0x0000,0x0020,0x0020,0x0021,0x0040,0x3228,0x8c92,0x526c,0x0863,0x08c3,0x20e4,0x1903,0x1924,0x2122,0x4207,0x5269,0x5288,0x5288,0x5267,0x4a67,0x8c70, +0xa513,0x9d13,0xb5d5,0x74d2,0x4288,0x5289,0x5288,0x5268,0x4248,0x39c6,0x39c7,0x3a08,0x31a7,0x31e7,0x2986,0x6b0c,0xce7a,0x8d76,0x29e7,0x2986,0x2166,0x2145,0x1124,0x1924,0x2124,0x2125,0x2145,0x1965,0x2165,0x2165,0x2166,0x2125,0x20e4,0x2145,0x2144,0x2965,0x2185,0x1945,0x1944,0x2166,0x2965,0x2945,0x3185,0x2986,0x2985,0x2164,0x2165,0x2165,0x2186,0x2987,0x31a6,0x3186,0x2986,0x2186,0x2186,0x1965,0x2986,0x2987,0x29a7,0x29a6,0x2986,0x31a7,0x31c7,0x31c7,0x3a08,0x29e7,0x31c7,0x31a7,0x29e7,0x31c7,0x31e8,0x31c8,0x31c7,0x39e7,0x39c7,0x39e8,0x3a48,0x3a07,0x39e7,0x39e7,0x31e8,0x3a08,0x31c7,0x39e7,0x3a08,0x41e8,0x4228,0x422a,0x31c7,0x31e8,0x31e8,0x4208,0x41e7,0x3a28,0x4249,0x4249,0x4228,0x3a29,0x3248,0x3248,0x3229,0x3a29,0x4249,0x4269,0x4269,0x4269,0x4249,0x4229,0x4248,0x4249,0x4a69,0x4a49,0x4229,0x4a89,0x4249,0x4a69,0x4a6a,0x4a4a,0x426a,0x426a,0x4a49,0x426a,0x4229,0x424a,0x422a,0x424a,0x4a4a,0x4229,0x4228,0x4a8a,0x3a29,0x4229,0x4229,0x4229,0x4a69,0x4229,0x3a09,0x426a,0x3a08,0x3a29,0x4228,0x4a49,0x3a69,0x424a,0x4249,0x4249,0x4229,0x4269,0x4209,0x39c8,0x4229,0x3a08,0x3a29,0x3208,0x39e8,0x4228,0x4249,0x39e7,0x4208,0x4208,0x4249,0x3a07,0x29a7,0x31e8,0x31c8,0x39c8,0x39c7,0x39c7,0x3a08,0x3208,0x39e9,0x2987,0x3186,0x2986,0x39e7,0x29a7,0x39c8,0x41c8,0x4207,0x39e7,0x39e7,0x39a7,0x41a7,0x41c8,0x31e7,0x31e7,0x31e8,0x31c7,0x29a6,0x31c7,0x3165,0x3166,0x29a7,0x3187,0x3187,0x31a7,0x39c6,0x31a6,0x3186,0x21a6,0x29a6,0x3186,0x3166,0x2966,0x31a6,0x3186,0x3166,0x3186,0x2966,0x2966,0x3166,0x2185,0x2186,0x2145,0x2966,0x2946,0x1945,0x2145,0x2945,0x2965,0x2145,0x1945,0x2125,0x2945,0x2165,0x2145,0x2126,0x1125,0x1945,0x2145,0x2125,0x2105,0x2904,0x2125,0x2104,0x2104,0x2125,0x2124,0x2905,0x18e4,0x1904,0x1904,0x1904,0x18e4,0x10e4,0x2105,0x10e5,0x18c4,0x10e4,0x18e3,0x18e3,0x1904,0x10e4,0x18e4,0x18c4,0x18e4,0x10e4,0x18c3,0x10c4,0x10e4,0x10c3,0x10c3,0x10e2,0x0903,0x08e4,0x10c4,0x18e3,0x20c3,0x18c3,0x18e3,0x08a4,0x18e3,0x18e3,0x18c3,0x08e3,0x08e4,0x18c3,0x10a4,0x08c3,0x10e3,0x10c3,0x10c3,0x08a3,0x10c3,0x08a3,0x00a2,0x08c2,0x18a3,0x10c3,0x08c3,0x18a3,0x08c2,0x18c2,0x10c3,0x08c2,0x10a4,0x18c2,0x18c3,0x18c3,0x10e3,0x10a3,0x08e4,0x10c4,0x20e4,0x0081,0x52ea,0x7c12,0x0842,0x08c4,0x20e4,0x1103,0x1103,0x2964,0x3a06,0x5288,0x5288,0x4a88,0x4a88,0x4267,0x8c50, +0x9d34,0xa554,0xadd5,0x74b2,0x4a68,0x4a68,0x5287,0x5288,0x4268,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x2966,0xa4f3,0x95f7,0x1166,0x2966,0x3187,0x31c7,0x3187,0x2186,0x31a7,0x29a6,0x31a7,0x3187,0x31a7,0x31c7,0x31c7,0x39a7,0x39c7,0x39c8,0x39c7,0x31a7,0x39c6,0x31e7,0x31e8,0x31c7,0x31c7,0x31c8,0x39c7,0x31c7,0x31e7,0x31c7,0x39c8,0x31c7,0x41e8,0x3a08,0x39c8,0x39e8,0x3a08,0x41e8,0x3208,0x39e7,0x4208,0x39e8,0x4228,0x3a29,0x3a08,0x4208,0x4a29,0x4229,0x4229,0x4229,0x4249,0x4269,0x4289,0x3a49,0x3a08,0x4269,0x4229,0x3a08,0x4248,0x4229,0x4229,0x3a28,0x4269,0x4249,0x4269,0x4269,0x426a,0x528b,0x4a69,0x426a,0x4229,0x4269,0x3a89,0x4249,0x3a29,0x3a29,0x4229,0x4a6a,0x4a6a,0x4229,0x3a49,0x4269,0x4a49,0x4a6a,0x4a8a,0x426a,0x426a,0x4a69,0x4249,0x4269,0x426a,0x4a6a,0x426a,0x4a6a,0x4a6a,0x4a89,0x4a8a,0x4a8a,0x4aaa,0x4a6a,0x528a,0x526a,0x4a49,0x4a69,0x526a,0x4a69,0x4269,0x4a4a,0x4a6a,0x4a6a,0x4249,0x4229,0x426a,0x4a4a,0x4a6a,0x426a,0x4249,0x4249,0x4249,0x4a6a,0x4a8b,0x4a6a,0x4229,0x4229,0x4249,0x3a49,0x4a4a,0x4249,0x4269,0x3a29,0x4249,0x424a,0x4a48,0x4a49,0x4a49,0x4228,0x3a49,0x428a,0x3229,0x4209,0x4249,0x4208,0x39e8,0x3a29,0x3a49,0x4249,0x424a,0x3a49,0x4228,0x4229,0x3a29,0x3a28,0x4228,0x39e8,0x3a08,0x39e8,0x3a08,0x49e8,0x39e7,0x3a28,0x31e7,0x39c8,0x41c7,0x39e7,0x39e7,0x31a6,0x39a7,0x31c7,0x31a7,0x39c8,0x31c7,0x31a6,0x31a6,0x29a7,0x29a7,0x31c6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2986,0x2986,0x3185,0x3185,0x3186,0x3146,0x3165,0x2986,0x2966,0x2165,0x2165,0x2165,0x2965,0x1985,0x2165,0x2165,0x2165,0x2145,0x2165,0x3166,0x2945,0x2945,0x3125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2125,0x3125,0x2925,0x2125,0x2145,0x1925,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2925,0x2925,0x2125,0x1925,0x1905,0x2105,0x1924,0x2104,0x10e4,0x18e5,0x20e4,0x1904,0x1904,0x1904,0x1104,0x10e4,0x1104,0x0903,0x10e3,0x18e4,0x18c4,0x08e4,0x18e3,0x20e3,0x18e4,0x18e3,0x18c3,0x10c3,0x18c2,0x20c3,0x18c3,0x18c3,0x18e3,0x18e2,0x10c3,0x18c4,0x10c3,0x10e3,0x18c3,0x18c3,0x08c3,0x18a3,0x18a3,0x20c2,0x08a3,0x10c2,0x00c2,0x0882,0x10a3,0x1083,0x08a3,0x00a3,0x1883,0x08a3,0x10a2,0x08c3,0x08a3,0x08c3,0x18c2,0x18a3,0x1082,0x08c3,0x00c3,0x08c3,0x10e3,0x10c4,0x10a2,0x21a4,0x94b3,0x1084,0x10c4,0x20e4,0x1904,0x18e3,0x2144,0x3a07,0x5287,0x5288,0x5269,0x4a88,0x4267,0x9471, +0xa513,0xa553,0xb5f5,0x74b2,0x4a68,0x4a88,0x4a87,0x5288,0x4227,0x31a6,0x31a6,0x3208,0x31c7,0x31c6,0x3166,0xb5d6,0x7d75,0x10e4,0x31a7,0x2986,0x2966,0x2966,0x3166,0x3166,0x31a6,0x31a6,0x3187,0x3167,0x3187,0x3186,0x31a6,0x31c6,0x29c7,0x29c7,0x31e7,0x31a7,0x29a6,0x29c7,0x31c8,0x31c7,0x31e8,0x31a7,0x31e7,0x31e7,0x3a08,0x3a08,0x39c6,0x41e7,0x31e7,0x3a07,0x3a07,0x3a08,0x39c8,0x3a09,0x39e8,0x3a07,0x3a08,0x31e8,0x39e8,0x3a08,0x39e8,0x4229,0x31e8,0x4229,0x4a09,0x4a4a,0x4229,0x4208,0x4229,0x4249,0x4249,0x3a49,0x4249,0x3a69,0x3a49,0x3a49,0x4a6a,0x3a69,0x4269,0x4269,0x4269,0x4269,0x4a69,0x4a69,0x5249,0x4a69,0x3a48,0x3a48,0x4248,0x4a49,0x4a69,0x4229,0x4249,0x426a,0x4a4a,0x4249,0x4269,0x4a49,0x4a6a,0x4a49,0x524a,0x4a69,0x52aa,0x4249,0x4a6a,0x4a6a,0x4a6a,0x4269,0x4a49,0x4a8a,0x424a,0x426a,0x4a69,0x4a89,0x426a,0x4a69,0x4a4a,0x526a,0x4a49,0x4a6a,0x4249,0x4269,0x426a,0x4249,0x4a48,0x4a49,0x4249,0x4249,0x4a49,0x4a2a,0x424a,0x3a29,0x4249,0x4249,0x3207,0x4a6a,0x4249,0x4229,0x426a,0x3a49,0x3a6a,0x4229,0x4248,0x4249,0x4228,0x4229,0x4208,0x3a29,0x4229,0x4228,0x4269,0x3a69,0x4a69,0x4229,0x3a28,0x3a08,0x3a08,0x3a28,0x3a28,0x3a28,0x3a29,0x3a29,0x4229,0x3a28,0x4229,0x3229,0x3208,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x39a7,0x39c7,0x31c7,0x39c7,0x31e7,0x39e7,0x39e7,0x39a7,0x39c7,0x31a7,0x31c7,0x3a08,0x31c7,0x31c7,0x3186,0x31c8,0x29a7,0x29a6,0x29a7,0x3186,0x3986,0x39a6,0x3987,0x3186,0x31a7,0x3186,0x3167,0x2986,0x2986,0x3187,0x3166,0x3185,0x2986,0x2166,0x2966,0x3165,0x2965,0x2165,0x1985,0x2185,0x2966,0x3145,0x2946,0x2166,0x2145,0x2125,0x2125,0x2945,0x2945,0x2104,0x1165,0x1946,0x2125,0x2945,0x2925,0x3126,0x2925,0x2145,0x2945,0x1905,0x1925,0x2105,0x1905,0x1925,0x1905,0x2125,0x1904,0x2105,0x2105,0x18e5,0x1904,0x1904,0x1904,0x18e4,0x1904,0x1904,0x1104,0x1904,0x18e5,0x18e4,0x20e3,0x18c3,0x1103,0x18e4,0x18e4,0x10e4,0x08c4,0x10e3,0x20c4,0x10c3,0x18e3,0x18e3,0x10c3,0x10e2,0x18c3,0x18e3,0x10e3,0x08e3,0x10c2,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c2,0x10a3,0x18a3,0x18a3,0x10c3,0x0883,0x08c2,0x08c3,0x0883,0x08a3,0x10a3,0x08a2,0x10a2,0x18a2,0x08c2,0x08c2,0x08a2,0x08a3,0x10a3,0x10c3,0x18a3,0x10a3,0x10e3,0x10c2,0x18c3,0x08c3,0x08e3,0x0882,0x2145,0x94b2,0x10a4,0x08e4,0x20e4,0x2104,0x2125,0x2104,0x4226,0x4a88,0x4a68,0x4a89,0x5288,0x4226,0x94b1, +0xa553,0xa553,0xb616,0x6c91,0x4a68,0x4a68,0x4a88,0x4a87,0x4248,0x39e6,0x39c6,0x31e7,0x31a7,0x29a7,0x3146,0xb5d6,0x7d56,0x2125,0x39a7,0x3186,0x3186,0x3187,0x3166,0x3186,0x3186,0x3987,0x3186,0x2986,0x2986,0x3187,0x3187,0x31a6,0x31a6,0x31c6,0x31c7,0x29c7,0x29c7,0x31a7,0x31a7,0x31c7,0x3a07,0x31a6,0x31a7,0x31e7,0x39a8,0x31e7,0x39e7,0x29c7,0x39c7,0x39e7,0x3a07,0x3207,0x39e8,0x31e7,0x39e8,0x31e8,0x3207,0x3a08,0x3a08,0x3a08,0x31e7,0x3208,0x39e8,0x3208,0x3a08,0x3a29,0x3a09,0x4208,0x4207,0x3a08,0x4229,0x3a29,0x4229,0x3a28,0x4249,0x3a4a,0x3a49,0x3249,0x4249,0x4a6a,0x4a69,0x4a69,0x3a69,0x4228,0x4a48,0x4a48,0x4208,0x3a49,0x4248,0x4249,0x4208,0x4228,0x4a69,0x4a49,0x4229,0x4a69,0x3a69,0x3a29,0x4249,0x4229,0x4a49,0x4a49,0x4a69,0x4a69,0x4a89,0x4269,0x4269,0x4a69,0x4a49,0x426a,0x424a,0x4269,0x4a68,0x4249,0x4249,0x4a6a,0x4249,0x4269,0x4249,0x4a6a,0x4a49,0x4a4a,0x3a49,0x4a49,0x4a49,0x4a49,0x4229,0x4269,0x4249,0x4249,0x3a29,0x426a,0x4249,0x4269,0x426a,0x4a29,0x4a29,0x4249,0x4249,0x4249,0x3a29,0x4a29,0x4229,0x3a29,0x4228,0x4249,0x4249,0x3249,0x4229,0x4228,0x3a08,0x3a48,0x4229,0x4209,0x4229,0x4208,0x4228,0x4229,0x4228,0x3a28,0x3a28,0x4228,0x4208,0x3a08,0x4208,0x3208,0x3a08,0x4229,0x39e8,0x41e8,0x39e7,0x39c7,0x39e7,0x3a08,0x3a08,0x3a07,0x39e7,0x3a07,0x3a07,0x31e7,0x31c8,0x31a7,0x39e7,0x29a7,0x31a7,0x31c7,0x31c7,0x31a7,0x29a7,0x39c7,0x39a7,0x31c7,0x31a7,0x3987,0x3186,0x2986,0x31a6,0x3187,0x2986,0x29a6,0x3186,0x2966,0x3186,0x3186,0x3166,0x2965,0x2986,0x2186,0x2965,0x2965,0x2165,0x2165,0x2986,0x2965,0x3145,0x2166,0x1966,0x2145,0x1945,0x2945,0x3145,0x2945,0x2925,0x1945,0x2165,0x2145,0x2125,0x2124,0x2925,0x2905,0x28e5,0x1925,0x1925,0x2104,0x2905,0x1925,0x1105,0x2105,0x2125,0x1904,0x2104,0x1125,0x1905,0x1904,0x1904,0x1905,0x18e3,0x2104,0x2105,0x1904,0x2103,0x1903,0x20e4,0x20e4,0x18c4,0x18e3,0x18c3,0x18a4,0x08c3,0x18e4,0x18e3,0x28c3,0x10c4,0x20e4,0x20c4,0x18c3,0x18e2,0x10c3,0x18e4,0x10c3,0x10e3,0x10e3,0x18a3,0x18c4,0x08a3,0x18c3,0x10e1,0x18c2,0x18c3,0x08c2,0x10c3,0x18c2,0x10a3,0x08c2,0x10a3,0x10a3,0x10c3,0x10c3,0x10c2,0x18e2,0x18c3,0x10a3,0x08c2,0x10c3,0x00a2,0x08a2,0x08a2,0x10c3,0x10c3,0x18c2,0x08e2,0x18c3,0x00c3,0x08c3,0x1082,0x1944,0x8cb2,0x1084,0x10e4,0x10e4,0x10e4,0x1904,0x1903,0x4206,0x4a68,0x5289,0x5268,0x5288,0x4206,0x94d2, +0xa553,0xa574,0xb5f6,0x7c91,0x52a8,0x4a68,0x5288,0x5288,0x4a48,0x39e7,0x31c6,0x31e7,0x29c7,0x31c7,0x4187,0xb5d7,0x7d36,0x2145,0x31a6,0x3186,0x2986,0x2945,0x2966,0x2166,0x3186,0x39a7,0x3187,0x3986,0x39a6,0x29a6,0x29a7,0x3186,0x31c7,0x31e7,0x29a6,0x31c7,0x29a7,0x31a7,0x31a7,0x39c7,0x31c6,0x39c7,0x3187,0x31c8,0x39c8,0x39c7,0x39c7,0x31e7,0x31c8,0x31e8,0x3208,0x31e7,0x31c7,0x3a08,0x39e8,0x39e8,0x39c8,0x3a08,0x3208,0x39e8,0x4208,0x3a08,0x3208,0x3229,0x3a08,0x3a28,0x4208,0x4228,0x4209,0x4a29,0x4229,0x4229,0x4a29,0x4a69,0x4249,0x3a69,0x3a69,0x426a,0x4229,0x4249,0x4229,0x4249,0x3a69,0x4249,0x4a69,0x4249,0x4249,0x5229,0x4249,0x424a,0x4249,0x4249,0x4249,0x4a69,0x4229,0x4a49,0x424a,0x4a4a,0x4a6a,0x526a,0x4a29,0x4a29,0x4249,0x4a69,0x4a69,0x4a6a,0x4269,0x4269,0x4249,0x4269,0x4a49,0x4269,0x4269,0x4249,0x4229,0x4a69,0x4a4a,0x4229,0x4229,0x4a49,0x5269,0x426a,0x3a49,0x3a29,0x4229,0x4248,0x4a69,0x4249,0x4a6a,0x4249,0x3a69,0x4269,0x4a49,0x4228,0x4229,0x4249,0x4249,0x4a4a,0x4228,0x4249,0x3a49,0x4a49,0x4229,0x3a28,0x4229,0x3a29,0x3a29,0x4249,0x4a29,0x3a29,0x4228,0x4229,0x4228,0x4229,0x4229,0x3a09,0x4229,0x3a49,0x3a28,0x3a28,0x4a28,0x4229,0x4207,0x4228,0x3a08,0x31e7,0x39e8,0x4208,0x39e8,0x31e8,0x31e8,0x39c8,0x39e7,0x39e7,0x31e7,0x3207,0x31c8,0x31a6,0x31e7,0x31e6,0x39c7,0x31c7,0x39c7,0x39e7,0x39c7,0x31c7,0x29a7,0x29c7,0x31c7,0x39c7,0x3186,0x31a7,0x39a6,0x3187,0x39a7,0x3186,0x31a8,0x29a7,0x2986,0x2986,0x2986,0x2986,0x2987,0x2166,0x2166,0x2986,0x2987,0x2966,0x2946,0x2146,0x2966,0x2146,0x3166,0x2965,0x2945,0x2166,0x1966,0x2946,0x2145,0x2165,0x3145,0x2965,0x2945,0x2164,0x2925,0x2945,0x1945,0x1945,0x2125,0x1925,0x1925,0x18e4,0x1925,0x2125,0x2124,0x1925,0x1905,0x2105,0x2905,0x2124,0x2124,0x1104,0x1103,0x1904,0x1104,0x1905,0x1904,0x1903,0x1924,0x1924,0x2104,0x2904,0x20e4,0x18e4,0x18e5,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x1103,0x20c5,0x10e3,0x1903,0x18c4,0x18c4,0x18e3,0x18e2,0x18e3,0x18e3,0x10c3,0x10e2,0x18c3,0x10c3,0x18e4,0x1903,0x10c3,0x10e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x08c2,0x18c2,0x10c3,0x18c3,0x18a3,0x10a2,0x18a2,0x08c3,0x08a2,0x08c3,0x00c3,0x18c3,0x10a3,0x10c2,0x08c3,0x18c3,0x10c3,0x08a3,0x1082,0x1103,0x8cb2,0x20c5,0x18e4,0x18e3,0x1905,0x2104,0x1903,0x3a06,0x5248,0x5289,0x5288,0x5269,0x3a06,0x94d2, +0xa553,0xa554,0xb616,0x7491,0x4a68,0x5288,0x5288,0x4a88,0x4a28,0x31a6,0x39c6,0x39e7,0x29c7,0x31c7,0x49a7,0xb5f7,0x7d55,0x2145,0x31a7,0x3186,0x31a6,0x3165,0x29a6,0x3186,0x31a6,0x39a7,0x3186,0x39a7,0x29a6,0x31a7,0x31a7,0x29c7,0x31a7,0x31c7,0x29a6,0x39a6,0x31e7,0x31c7,0x29a7,0x39a7,0x31a7,0x29a6,0x31c7,0x39a6,0x31c6,0x31e7,0x31c8,0x39c7,0x39c8,0x39e8,0x3a08,0x3207,0x3a07,0x3228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a09,0x3a09,0x39e8,0x3a08,0x3a08,0x4229,0x3a29,0x3a29,0x4229,0x3a29,0x3a49,0x4228,0x4229,0x424a,0x4229,0x4229,0x3a29,0x3a27,0x4249,0x4249,0x4229,0x4249,0x4249,0x4a29,0x4229,0x4269,0x4a6a,0x426a,0x424a,0x4229,0x4a49,0x4228,0x4a49,0x4a89,0x4a69,0x4a6a,0x4249,0x4a6a,0x426a,0x4a49,0x4a69,0x4a69,0x4a69,0x4269,0x424a,0x4a6a,0x426a,0x4a49,0x4249,0x428a,0x4a6a,0x4229,0x4249,0x4a8a,0x4249,0x424a,0x4269,0x4a8a,0x4a6a,0x3a4a,0x3a09,0x4249,0x4229,0x3a6a,0x3a4a,0x3a29,0x3a29,0x4269,0x4269,0x4268,0x4269,0x3a09,0x4269,0x4269,0x4a69,0x4a4a,0x4a29,0x4249,0x4249,0x4a6a,0x3a29,0x426a,0x4269,0x4a4a,0x4229,0x4249,0x4249,0x4229,0x4229,0x4a69,0x4248,0x4229,0x4a29,0x4209,0x422a,0x3a49,0x3a28,0x4249,0x4228,0x4248,0x3a28,0x4229,0x4209,0x4209,0x4229,0x4208,0x3a08,0x4209,0x4208,0x3a08,0x39e9,0x31c8,0x31e8,0x39e8,0x41c8,0x3a08,0x3a08,0x4208,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x39c7,0x39c8,0x39c8,0x31e8,0x31c8,0x31c7,0x29a7,0x29a7,0x29a7,0x31c7,0x3987,0x31a7,0x29a7,0x31a6,0x31a7,0x3186,0x31a7,0x31a7,0x29a6,0x31a7,0x31a7,0x2987,0x31a6,0x3186,0x3186,0x2987,0x2966,0x2966,0x2966,0x3166,0x3166,0x2966,0x2165,0x3165,0x2966,0x2945,0x3165,0x2165,0x2945,0x2945,0x2945,0x2945,0x2145,0x1925,0x1945,0x1125,0x1945,0x2125,0x2125,0x2925,0x2125,0x1945,0x2145,0x2125,0x1905,0x1925,0x1905,0x2926,0x2905,0x1924,0x1125,0x1105,0x1905,0x20e5,0x28e4,0x1924,0x1904,0x1105,0x2105,0x20e4,0x1904,0x1904,0x1105,0x20e4,0x18e4,0x1904,0x10e4,0x18e4,0x18e4,0x18e4,0x10e4,0x10e3,0x18e4,0x18c4,0x10c4,0x18c3,0x18c2,0x10e3,0x10e3,0x18e4,0x10c3,0x10c4,0x00c4,0x10c3,0x10c3,0x18c3,0x10c3,0x18c2,0x18c2,0x10c3,0x10e3,0x18c3,0x10c3,0x10a3,0x10a3,0x08a3,0x10a3,0x18a4,0x10a3,0x10a3,0x18c2,0x10a3,0x10c3,0x18c3,0x10c4,0x08c3,0x08c3,0x08c3,0x08c3,0x18e3,0x18c2,0x18c2,0x08c3,0x1082,0x1104,0x8cd3,0x28e6,0x18e4,0x10e3,0x1904,0x2105,0x18e4,0x41e7,0x5249,0x5268,0x5268,0x5289,0x3a26,0x9cf3, +0xa553,0xa534,0xb616,0x7471,0x4a68,0x5288,0x5288,0x5288,0x4a48,0x31a6,0x31c7,0x39e7,0x31c7,0x31c7,0x51c7,0xbe17,0x6d14,0x2946,0x3186,0x3146,0x3186,0x3165,0x3186,0x3185,0x3166,0x2987,0x31a7,0x39a7,0x3a07,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e8,0x31c7,0x31e8,0x31c8,0x31c7,0x31e8,0x29c8,0x31c8,0x31a7,0x31a7,0x31c7,0x39c7,0x29c7,0x31c7,0x39c8,0x31e7,0x3208,0x3208,0x3a08,0x3a28,0x3a08,0x41e8,0x39e8,0x3a08,0x4208,0x3a29,0x3a08,0x3a28,0x4228,0x4208,0x3a08,0x4229,0x4208,0x3a08,0x3a29,0x39e8,0x3a28,0x4a4a,0x4a4a,0x4228,0x3a29,0x3a29,0x4a6a,0x4249,0x4249,0x4229,0x3a29,0x31e8,0x39e7,0x41e9,0x3a08,0x39c8,0x39c8,0x3a29,0x3a09,0x39e9,0x4209,0x41e8,0x4209,0x3a08,0x3208,0x3a29,0x41e9,0x41e8,0x4229,0x4229,0x4a69,0x4a6a,0x4a6a,0x424a,0x4269,0x4a6a,0x428a,0x4249,0x3a08,0x39c8,0x39a8,0x39c8,0x39c8,0x39e8,0x39e8,0x31c7,0x31c8,0x31a8,0x3a09,0x31c8,0x39c8,0x3a08,0x39c7,0x31a8,0x31c8,0x39e8,0x31c8,0x39c8,0x4208,0x4208,0x4a49,0x4a4a,0x4248,0x4249,0x4269,0x4a69,0x3a08,0x4209,0x4209,0x31c8,0x39c8,0x4208,0x31c7,0x39e8,0x31c7,0x39c9,0x31a8,0x31a8,0x39c8,0x3187,0x29a7,0x3187,0x3187,0x3187,0x3187,0x3187,0x39c8,0x4229,0x4208,0x4229,0x3a28,0x3a28,0x41e8,0x39e8,0x41e8,0x3167,0x2166,0x2986,0x2947,0x3147,0x2967,0x2146,0x3146,0x2146,0x2146,0x2946,0x3166,0x2945,0x2925,0x2125,0x2966,0x2966,0x2945,0x1905,0x2926,0x2966,0x31a8,0x29e7,0x31c8,0x31a7,0x31c7,0x31a7,0x31a7,0x2966,0x2104,0x20e5,0x20c4,0x2905,0x2924,0x2103,0x2125,0x18e4,0x10e4,0x1904,0x18e4,0x18e4,0x20c4,0x18c4,0x18c4,0x18c4,0x18e4,0x10c3,0x18e3,0x18c4,0x3166,0x3146,0x3165,0x2965,0x2965,0x2965,0x2145,0x2145,0x10c3,0x10c3,0x10e5,0x08a3,0x10c3,0x08a3,0x10a3,0x10c3,0x18a3,0x18c3,0x1082,0x18c3,0x1083,0x18a3,0x1082,0x1062,0x10c4,0x1083,0x18a3,0x18a3,0x18c5,0x1925,0x1925,0x2103,0x1904,0x1904,0x1105,0x1905,0x20e4,0x0883,0x1083,0x0883,0x1083,0x1082,0x0882,0x08a3,0x0883,0x1083,0x1083,0x10a2,0x1083,0x0883,0x1083,0x0883,0x1083,0x1082,0x1082,0x1061,0x1083,0x10c3,0x18e4,0x08c3,0x10c3,0x10c3,0x08c3,0x18e4,0x18c3,0x10c4,0x0883,0x0083,0x1082,0x0862,0x0842,0x0862,0x0082,0x0883,0x0063,0x0863,0x0861,0x0862,0x0861,0x0882,0x1042,0x0061,0x0841,0x0861,0x0861,0x0882,0x08a2,0x10c2,0x10a3,0x08a3,0x1083,0x1123,0x84f3,0x20e5,0x1104,0x1904,0x20e4,0x20e3,0x18e3,0x3a06,0x5268,0x5a68,0x5248,0x5288,0x4206,0x9cf2, +0x9d54,0xa554,0xb637,0x6c51,0x4268,0x5288,0x5268,0x52a8,0x4247,0x3185,0x31c6,0x31e7,0x39c7,0x31a7,0x51c8,0xbe17,0x6493,0x2146,0x2987,0x2966,0x3186,0x3186,0x2925,0x2105,0x20e5,0x18e5,0x18e5,0x18c4,0x18e5,0x18e5,0x2125,0x18e5,0x1906,0x2126,0x20e6,0x2106,0x2126,0x20e7,0x18e6,0x18c6,0x20e5,0x2125,0x2966,0x39e8,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39a8,0x3186,0x3967,0x3188,0x3167,0x2967,0x2967,0x2967,0x3187,0x39a8,0x3987,0x3167,0x3167,0x3967,0x3186,0x3187,0x3187,0x3187,0x31a7,0x39a8,0x3188,0x3988,0x31a7,0x3a29,0x4229,0x4248,0x4228,0x4269,0x4209,0x39e8,0x4a4a,0x62ec,0x734f,0x736e,0x7b2e,0x838e,0x7b6e,0x736e,0x736e,0x7bb0,0x83d0,0x7bb0,0x7390,0x736f,0x736f,0x7bb0,0x7bb0,0x83f1,0x736e,0x62ed,0x420b,0x4249,0x4a89,0x4a6a,0x528b,0x4a8a,0x4269,0x41e8,0x5aed,0x8c32,0x9cb3,0xacf5,0x9cd4,0x94d5,0x94b4,0x94b3,0x9cb3,0x9cd3,0x9cf4,0x94b4,0x9d15,0x9d15,0x9cf4,0x9cf4,0x9cb3,0xad15,0xa555,0x9cf4,0x8c32,0x4a6a,0x528a,0x4269,0x424a,0x4269,0x4a4a,0x4209,0x49e9,0x83d0,0x94b3,0x9cf4,0x9cd4,0x9cb4,0x9cb4,0xa4f5,0xa4f5,0x9cb3,0xb556,0xb576,0xa535,0xb576,0xb577,0xb536,0xad56,0xbdb8,0xbdb7,0xbdd7,0xbdf9,0x8412,0x31a8,0x4228,0x3a08,0x4249,0x4209,0x4209,0x39c7,0x4aab,0xa535,0xc5f8,0xb638,0xc639,0xd639,0xc5f8,0xce19,0xc5f8,0xc5f8,0xbdf8,0xb5b7,0xb596,0xbd97,0xc5d8,0xbdb7,0xb577,0xb5b8,0xbdd8,0xbdd7,0xa536,0x5aad,0x2126,0x39a7,0x3187,0x39a7,0x31a7,0x39e8,0x2966,0x8c52,0xb5d7,0xb5d7,0xbdf8,0xad76,0xad97,0xad56,0xa576,0xad55,0xb576,0xad96,0xb5b7,0xb596,0xb596,0xb5b7,0xb5b7,0xb596,0xa534,0xa555,0x9cd4,0x8411,0x41c9,0x10a4,0x3166,0x2966,0x2946,0x2145,0x2125,0x1904,0x7bcf,0x9cd3,0x94f4,0xa535,0xa535,0x8c93,0x9cd4,0x9493,0x9472,0x9c92,0x9cd3,0x8c93,0x94d4,0x9493,0x8c72,0x9493,0x8472,0x8c52,0x8411,0x73d0,0x52ac,0x0863,0x1904,0x2124,0x1924,0x1904,0x1924,0x18c4,0x2083,0x5a8b,0x634d,0x632c,0x632c,0x6b6d,0x734e,0x62cc,0x630d,0x632e,0x5aaa,0x52cb,0x5acc,0x62ec,0x5aac,0x5aed,0x532d,0x630d,0x6aed,0x62ec,0x526a,0x3126,0x0884,0x1884,0x18e4,0x18c4,0x10c3,0x18a3,0x1062,0x2945,0x4a48,0x526b,0x526b,0x4a8b,0x528b,0x4a6b,0x428b,0x4acc,0x5b0d,0x530d,0x62ed,0x632e,0x6b6e,0x738f,0x73f0,0x5b6e,0x636e,0x634e,0x6b4e,0x62ed,0x10a3,0x1882,0x10e3,0x08c3,0x10a3,0x0903,0x8cb2,0x28e5,0x1904,0x2904,0x2125,0x2965,0x1925,0x3207,0x5268,0x5268,0x5a89,0x52a9,0x41e6,0x9513, +0xa554,0xa553,0xbe38,0x6430,0x4268,0x5288,0x4a68,0x5287,0x3a47,0x39a7,0x39c7,0x3207,0x31a7,0x31a6,0x51c7,0xbe38,0x6492,0x2145,0x3186,0x29a7,0x3186,0x3987,0xa4f4,0xbdf8,0xb5f8,0xadd7,0xb5d8,0xadd7,0xadb7,0xadb7,0xb5b7,0xb5f7,0xa597,0xadf8,0xbe18,0xb5d7,0xb5f7,0xadb7,0xadb6,0xc65a,0xbe18,0xbe37,0xbe39,0x638f,0x2945,0x39e8,0x31e8,0x39e8,0x31e7,0x5a6a,0xce3a,0xb5d7,0xbe18,0xb5d7,0xadd7,0xadb7,0xad97,0xadb6,0xad75,0xa534,0xb556,0xad55,0xa555,0x9d55,0xa555,0x9d14,0x9514,0x94f4,0x9d15,0x8cd3,0xbe18,0xa5b7,0x3a29,0x4249,0x4229,0x4269,0x3a29,0x524a,0xd69a,0xa556,0x8c92,0x8c71,0x8cb3,0x94d3,0x9d14,0x9d13,0x94f3,0x94d3,0x94b3,0x9493,0x94b3,0x94b3,0x94b3,0x8cb3,0x8cb3,0x8cb3,0x94f4,0x9514,0x9d14,0xcedc,0x7c53,0x29c8,0x4a69,0x4a6a,0x4a6a,0x41e8,0xc5d7,0xadb7,0x94d3,0x8c93,0x8c72,0x8cb2,0x8cd3,0x8cd3,0x8c93,0x8c93,0x94f4,0x8492,0x8451,0x8c92,0x8c72,0x8c72,0x8472,0x8472,0x7c52,0x7c31,0x7c32,0x8cb3,0xdf5d,0x4aec,0x4a29,0x4a4a,0x4269,0x4249,0x6b2d,0xdf3d,0x7410,0x7c10,0x8452,0x8c93,0x8c92,0x8c92,0x8c92,0x8c92,0x94b3,0x8c72,0x8c71,0x8c71,0x8c71,0x8c31,0x8c31,0x7c10,0x8431,0x9492,0x9472,0x8431,0x9d14,0xce3a,0x31a7,0x4229,0x4a09,0x4229,0x31a7,0xa4b3,0xc639,0x8431,0x8c30,0x8c30,0x8c31,0x8c52,0x8c72,0x7c11,0x8c52,0x8432,0x8432,0x8c72,0x8cb2,0x9493,0x94b3,0x8c93,0x8452,0x8c72,0x8c73,0x8452,0x7c10,0x9d35,0x8433,0x2946,0x39c8,0x39a7,0x31a7,0x3167,0xa514,0x6bcf,0x638e,0x73cf,0x73b0,0x73f0,0x6b8f,0x6b4f,0x738f,0x6b4e,0x73af,0x73f0,0x73b0,0x73cf,0x6bae,0x6baf,0x6b6e,0x732d,0x634d,0x636d,0x52ec,0x5aeb,0xad96,0x52cd,0x2105,0x2166,0x2945,0x2966,0x20e4,0xa5b6,0x5b4c,0x6b6d,0x736e,0x734e,0x6b2e,0x632d,0x7baf,0x6b4d,0x632d,0x6b4d,0x630d,0x5acc,0x5aec,0x62ec,0x5acb,0x5acc,0x528a,0x52cb,0x4aab,0x428a,0x52cb,0xa536,0x2146,0x1905,0x1905,0x1905,0x1904,0x39e7,0x9452,0x52ac,0x4a6b,0x52ab,0x4a8b,0x4a8a,0x4a8a,0x528b,0x528b,0x52ab,0x5acb,0x528b,0x4a8b,0x52ab,0x52ab,0x5a8a,0x426a,0x422a,0x4229,0x39e8,0x4a8a,0x5acc,0x738f,0x0883,0x18e4,0x18c4,0x18e3,0x0861,0x6b4e,0x5b4d,0x4209,0x422a,0x4a4a,0x3a2a,0x3a09,0x4208,0x424a,0x4229,0x528b,0x4a09,0x4209,0x426a,0x4a8a,0x4249,0x4a49,0x424a,0x4229,0x41e9,0x39c8,0x2967,0x6b90,0x3147,0x10a3,0x18c3,0x0882,0x1124,0x8cd2,0x3106,0x1105,0x2925,0x1904,0x1904,0x1904,0x3a06,0x4a88,0x5288,0x5289,0x5a89,0x4207,0x9514, +0xa554,0xa534,0xbe57,0x642f,0x4268,0x4aa8,0x5288,0x52a8,0x3a28,0x31c7,0x31e7,0x31e7,0x31c6,0x31c7,0x51c8,0xc678,0x6471,0x1925,0x31a7,0x3987,0x3986,0xb596,0x7430,0x636e,0x636e,0x73cf,0x73d0,0x7bf0,0x8411,0x7c11,0x8410,0x8451,0x8cb3,0x94d4,0x9473,0x9493,0x9493,0x8cb3,0x94f4,0x8c72,0x8c32,0x8411,0x73b0,0xc71c,0x530d,0x39e7,0x31e8,0x39e7,0x3925,0xce18,0x8472,0x9cf4,0x9d14,0x9cd4,0x9cf4,0x9cf4,0xad97,0xad96,0xad76,0xb596,0xb5b7,0xb5d7,0xbdf9,0xbe39,0xc619,0xce5a,0xce7a,0xce9a,0xce7a,0xc67a,0x94f3,0xc659,0x6c32,0x39c8,0x426a,0x3a49,0x3a08,0xad56,0xa596,0xbdd8,0xe6fd,0xe75d,0xe75d,0xef9e,0xe77d,0xe75d,0xe75d,0xe77d,0xe79e,0xefdf,0xefdf,0xe77e,0xe77e,0xe77e,0xe77e,0xe6fc,0xef7e,0xefbe,0xe75d,0x8cb3,0xdf9e,0x3a4b,0x4a49,0x4a8a,0x4229,0x6acb,0xc638,0xad96,0xf79e,0xf7df,0xefdf,0xefdf,0xf7bf,0xefbf,0xefbf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xf7df,0xf7be,0xefbf,0xf7ff,0xf7ff,0xffff,0xffff,0xd6db,0x8c92,0x8d35,0x4208,0x5249,0x4a49,0x3a49,0xd6ba,0x9d35,0xef5d,0xffff,0xf7ff,0xf7de,0xefbe,0xf7bf,0xef9e,0xef9e,0xf7be,0xf7be,0xf7df,0xffff,0xf7df,0xefbe,0xefdf,0xef9e,0xf7df,0xefbf,0xe75d,0xefbf,0xb5b8,0xdf1b,0x5b0e,0x3a09,0x4a08,0x4249,0x3987,0xd6db,0x7bd0,0xef7d,0xe77d,0xe77d,0xe79e,0xefbe,0xefbe,0xe77e,0xe77c,0xe77e,0xf7de,0xefde,0xe7bd,0xe79d,0xdf3c,0xdf3c,0xd71b,0xdf1c,0xd73c,0xdf3c,0xe77e,0x94d4,0xcedb,0x420a,0x39a7,0x39c7,0x2967,0x41a8,0xbdd8,0x9d33,0xe73c,0xcedb,0xd6da,0xd6da,0xd6fb,0xd6db,0xd6bb,0xd6bb,0xd69a,0xce9a,0xceda,0xce99,0xc699,0xc679,0xce9a,0xd69a,0xce99,0xceba,0xd6db,0xc67a,0x524a,0xb5d8,0x0863,0x2166,0x3146,0x2925,0x6b8e,0x94f3,0xa555,0xbe7a,0xc6ba,0xce9a,0xc67a,0xce9b,0xce9a,0xc679,0xbe38,0xcedb,0xcefb,0xcebb,0xbe79,0xbe7a,0xb638,0xbdf8,0xbdf8,0xbe39,0xb618,0xb5f8,0xa4f5,0x52ab,0x634e,0x1084,0x20e5,0x2105,0x10a3,0x8cd2,0x4a8b,0xa514,0xadb7,0xad97,0xadb7,0xadb7,0xb5b7,0xb597,0xad96,0xadb6,0xbdd8,0xb5d8,0xb5d8,0xa597,0xa576,0xad76,0xa576,0xa596,0xad75,0xa555,0xa535,0x6b6f,0x7c10,0x2946,0x18c5,0x18c5,0x18c4,0x1123,0x83f1,0x52eb,0x94f5,0x9515,0x9515,0x9535,0x9d35,0x9d35,0x9515,0x8d14,0x8cd3,0x9d35,0x9d55,0x94f4,0x84f3,0x84d3,0x8cb4,0x8cb3,0x9493,0x8cb3,0x8c93,0x94f4,0x2986,0x62ec,0x1083,0x18c3,0x10c3,0x10e3,0x84d3,0x28e5,0x10e4,0x1904,0x1904,0x10e3,0x2145,0x3a06,0x4288,0x5288,0x5289,0x5289,0x4206,0x9d14, +0xa553,0xa554,0xbe57,0x5bef,0x4a88,0x4ac8,0x5288,0x4aa8,0x4227,0x41a6,0x31e7,0x31c7,0x31a7,0x29a7,0x51c9,0xc679,0x5c31,0x2926,0x39c7,0x2987,0x5a8a,0x9d76,0xb5b6,0xc639,0xbe59,0xbe78,0xbe79,0xbe79,0xbe79,0xbe79,0xcedb,0xd75c,0xd71b,0xd75b,0xc6b9,0xc67a,0xc67a,0xc699,0xc699,0xc69a,0xc69a,0xceba,0xcedb,0x9d54,0x6c32,0x31e7,0x39c7,0x39c7,0x59e9,0xbdf7,0xad76,0xcedb,0xd6db,0xd6fb,0xd6fb,0xd71c,0xcefb,0xd71c,0xd71c,0xd71c,0xe79d,0xe77d,0xdf1c,0xcefb,0xd6fc,0xdefc,0xd71b,0xd71b,0xd71b,0xdefb,0xd71c,0x8431,0x8515,0x3187,0x4249,0x4249,0x41c7,0xc679,0x8c32,0xf77d,0xdf1c,0xdf3c,0xdf1c,0xd71c,0xd71c,0xdf3c,0xd71b,0xe7be,0xae38,0x7c30,0xc657,0xef9d,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xe77d,0xb67a,0xc6fb,0x4acc,0x4a8a,0x4a6a,0x4229,0x9430,0xa555,0xef5d,0xe73c,0xdf1c,0xdf3c,0xdf1c,0xdf3d,0xe73d,0xdf5c,0xe75d,0xcf1c,0x5b6e,0x94f3,0xef5d,0xdefc,0xdf3d,0xd71c,0xdf1c,0xdf1c,0xdf3d,0xdf3c,0xdf7e,0x7c31,0x9d97,0x3a08,0x4a89,0x528a,0x3208,0xe73c,0x94f4,0xe77d,0xd73c,0xd71b,0xd71b,0xd6fb,0xd71c,0xd71b,0xd71b,0xd6fc,0xdf5d,0xb618,0x5acb,0xef9d,0xd6fb,0xd71c,0xd71b,0xd6fb,0xd71c,0xdefc,0xdefb,0xcebb,0xb5d7,0x5b4f,0x3a49,0x4229,0x4229,0x3186,0xb658,0x8cd2,0xceba,0xceba,0xceda,0xcedb,0xcedb,0xcedb,0xce9a,0xcedb,0xadf8,0x31c7,0x2145,0x39c6,0xce99,0xce99,0xce99,0xc699,0xceba,0xc699,0xc67a,0xce9a,0xc65a,0xceba,0x422a,0x39c8,0x39c7,0x2966,0x41e7,0x9d14,0xbdf6,0xc659,0xc658,0xbe59,0xbe38,0xbe38,0xbe59,0xbe18,0xbe38,0xc679,0xa597,0x3a48,0xc698,0xb618,0xadd7,0xbdf8,0xbdf7,0xb618,0xb618,0xb5f7,0xc659,0x73af,0xb5d7,0x0863,0x2965,0x2966,0x2925,0x7c2f,0x6b8f,0xd6ba,0xadb6,0xadb6,0xb5d7,0xadd7,0xb5d7,0xadb6,0xb5b7,0xadf8,0x31a6,0x39c7,0x39e7,0x5b2b,0xadb6,0xa595,0xa576,0xad96,0xa576,0xa575,0x9d55,0xad97,0x3a4a,0x7c32,0x1883,0x2125,0x2105,0x0862,0x8cd2,0x4229,0xa534,0x9d14,0x9514,0x9d14,0x9514,0x94f3,0x9514,0x8cd3,0xa576,0x4229,0x10c3,0x6b8d,0x9cf3,0x9cd3,0x94f4,0x94d4,0x94b3,0x8cd3,0x84b2,0x84d2,0x94f5,0x636d,0x5a8c,0x18e4,0x10e4,0x10c3,0x2185,0x5b4d,0x94d2,0x7c71,0x7c71,0x8472,0x7c71,0x7c72,0x8472,0x8471,0x7c52,0x7bf0,0x2925,0x31c7,0x6bee,0x7410,0x8411,0x7c31,0x7c10,0x7c30,0x7410,0x6bf0,0x7c71,0x3167,0x6aed,0x0884,0x10c3,0x08c2,0x18c3,0x8d13,0x3127,0x18e5,0x1903,0x1924,0x1904,0x1924,0x31e6,0x4a68,0x5289,0x5289,0x5a69,0x39e5,0xa534, +0xa574,0xa554,0xbe57,0x53cf,0x5289,0x52a8,0x5288,0x5288,0x3a47,0x39c6,0x31c7,0x39c8,0x31a7,0x29a7,0x51c9,0xc699,0x5c52,0x2946,0x3987,0x3186,0x6b0b,0x9534,0xc5f7,0xc618,0xc679,0xc679,0xc679,0xc679,0xbe39,0xc6bb,0x7c92,0x31e8,0x29a7,0x39e8,0x9472,0xce9a,0xc679,0xc69a,0xc699,0xc6ba,0xceba,0xc699,0xcefc,0x9514,0x7452,0x29a7,0x31c7,0x31c7,0x5a09,0xb5d7,0xce58,0xcedb,0xd6db,0xcedb,0xd6db,0xceba,0xcedb,0xd6fb,0xd6db,0xcf1c,0x4b0d,0x5a8b,0xe77c,0xd71c,0xd71c,0xdf3c,0xdf1c,0xd6fc,0xcf1b,0xd71b,0xc71c,0x7c31,0x8515,0x3187,0x424a,0x426a,0x39e8,0xcedb,0x8c11,0xe73c,0xd71b,0xdf3c,0xdf3d,0xdf3c,0xd71c,0xdf1b,0xdf7d,0x9db7,0x52ac,0xad35,0x530d,0xa513,0xdf3c,0xdf1c,0xdf3c,0xe75d,0xdf5d,0xdf5d,0xe77d,0xc6bb,0xcefb,0x4acd,0x4a8b,0x4a6a,0x4249,0xa4d3,0xad76,0xefbe,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf5d,0xd71c,0xe79e,0x3a29,0xad15,0x632e,0xb574,0xdf5c,0xd71c,0xdf1c,0xdf3d,0xdf1c,0xdf1c,0xdf3c,0xe7be,0x7bf1,0x9d97,0x31e8,0x4a29,0x4a8a,0x4a28,0xdf1b,0x9cf4,0xe77d,0xd71b,0xd71c,0xdf5c,0xdf3c,0xdf1c,0xdf3c,0xd6fb,0xd71b,0xd71d,0x4a4a,0x5a89,0xf7de,0xd6db,0xd71c,0xd6fb,0xd71c,0xd6fb,0xd6fb,0xd6fb,0xcedb,0xadb6,0x638f,0x3a29,0x4a29,0x426a,0x3185,0xcefb,0x9554,0xceda,0xd6db,0xcedb,0xcedb,0xd6db,0xd6db,0xceba,0xcefb,0x94d5,0x8bf1,0xce9a,0xce79,0xd6da,0xce9a,0xceba,0xce9a,0xceba,0xceba,0xceba,0xce9a,0xbe18,0xceba,0x4a4b,0x39c8,0x39e7,0x39c6,0x4a27,0xa535,0xbe17,0xce99,0xc679,0xbe79,0xbe38,0xbe58,0xc659,0xbe59,0xb618,0xcedb,0x5acc,0xb596,0xc679,0xb618,0xb5f8,0xbe39,0xb5f7,0xb618,0xbe18,0xb618,0xc658,0x73d0,0xb5d8,0x1064,0x2945,0x2166,0x2125,0x7c2e,0x6b6e,0xc679,0xadd7,0xb5d7,0xb5f7,0xb5d7,0xb5b7,0xadd7,0xb5d7,0xadb7,0x9493,0x9472,0x62ec,0x4a8a,0xb5f8,0xa575,0xa576,0xad95,0xa596,0x9d55,0x9d54,0xa596,0x3229,0x8473,0x1863,0x2105,0x1925,0x0862,0x8491,0x3a09,0xa534,0x9cf4,0x9515,0x9d34,0x9d14,0x94f3,0x9d14,0x9cf4,0x5acd,0x39e8,0x9cb3,0x18e3,0x9d74,0x94f3,0x94f4,0x94d3,0x9cf4,0x8cd3,0x84b3,0x84d3,0x9d36,0x5b0c,0x5a8b,0x10e3,0x08e3,0x10e3,0x1904,0x5b4d,0x8cd2,0x8471,0x8452,0x8472,0x8c72,0x8492,0x8cb3,0x8c72,0x8432,0x10e4,0x5aed,0x62ab,0x18c3,0x7471,0x7c52,0x8471,0x7c30,0x7c50,0x7c51,0x7430,0x7c71,0x3967,0x630d,0x0863,0x18a3,0x10a3,0x10e2,0x94f3,0x2906,0x18c4,0x1903,0x1104,0x1905,0x1903,0x31e6,0x52a8,0x4a88,0x5289,0x5a89,0x41e6,0xa514, +0xa574,0xa554,0xbe57,0x5bce,0x4a88,0x52a8,0x4a88,0x5288,0x3a28,0x39a6,0x39c6,0x39e7,0x31c7,0x31a7,0x51c9,0xc699,0x6432,0x2146,0x39a7,0x39c7,0x6b2c,0x9d55,0xc618,0xbe58,0xc679,0xc679,0xbe79,0xc659,0xc699,0x7cf5,0x39e8,0xd679,0xdf3d,0xc6dc,0x31a9,0xacf3,0xceba,0xc67a,0xc6b9,0xc6ba,0xc6ba,0xceba,0xc71c,0x9534,0x6c31,0x3166,0x31e7,0x31c8,0x5208,0xb5d7,0xd679,0xd6fb,0xd6db,0xd6fb,0xd6db,0xdedb,0xd6fb,0xd6fb,0xcefb,0xd6fc,0xcf3d,0x62ac,0xef9d,0xdefc,0xd6fb,0xd6fc,0xdf1c,0xdf1c,0xd71b,0xd71c,0xc75c,0x7c72,0x8516,0x39e8,0x4a49,0x4a6a,0x39a7,0xceba,0x8c52,0xe77d,0xd71b,0xdf3c,0xdf3d,0xdf3c,0xdf3c,0xd71c,0xdf5d,0x6c51,0xc618,0xe7be,0xc6dc,0x62ec,0xef9e,0xdf3c,0xdf5d,0xe75d,0xdf3c,0xe75d,0xdf7d,0xc69b,0xdf3d,0x42ac,0x4a8b,0x428a,0x4229,0xad14,0xad97,0xefbe,0xdf3c,0xdf3c,0xdf3c,0xdf5d,0xdf3c,0xdf3c,0xdf5d,0xd73c,0xef7e,0xefff,0x9cf4,0xa4d3,0xe77c,0xdf5c,0xdf3d,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xe79e,0x7bd1,0x9d97,0x31e8,0x4a6a,0x4a8a,0x4208,0xdf1b,0x9d14,0xe77d,0xd71b,0xd71c,0xdf3c,0xdf1c,0xe75c,0xe73c,0xd71c,0xef9e,0x5b6f,0x8c73,0x5a8a,0xe79d,0xd6db,0xd6fc,0xd6fc,0xd71c,0xd6fb,0xd6fb,0xd6fc,0xc67a,0xb5d7,0x634f,0x3a29,0x3a08,0x3a29,0x3986,0xbe38,0x94f3,0xd6fb,0xd6fb,0xcedb,0xcebb,0xd6db,0xd6db,0xceda,0xcedb,0x6bd0,0x6b4d,0x7bef,0xc637,0xd71b,0xc699,0xceba,0xd6ba,0xceba,0xceba,0xc69a,0xceba,0xb5f8,0xd6fb,0x424b,0x39c7,0x39e8,0x39c6,0x5247,0x9d14,0xc678,0xce79,0xc679,0xbe79,0xbe59,0xbe38,0xbe58,0xbe59,0xbe7a,0x7bf0,0x1882,0x738f,0xbdf7,0xb658,0xb5f8,0xbe18,0xb5f7,0xbe38,0xbe38,0xb5d7,0xc679,0x7411,0xb618,0x0843,0x3166,0x2966,0x1944,0x740f,0x73af,0xb638,0xad96,0xb5d7,0xb5f7,0xb5d7,0xadb7,0xb5d7,0xadd7,0xad96,0xad96,0xb618,0x31a7,0x9471,0xa596,0xad96,0xad96,0xa596,0xa596,0x9d55,0x9d35,0xadb7,0x3a09,0x8473,0x1863,0x2905,0x2125,0x0882,0x8491,0x422a,0x9d14,0x9d15,0x94f4,0x9d34,0x9d34,0x9d34,0x9cf4,0xa536,0x526c,0x4aaa,0xbe37,0x2945,0x9d75,0x94f4,0x8cf3,0x8cd3,0x94d4,0x8cd3,0x8cb2,0x84b2,0x8cf4,0x530c,0x528b,0x10e4,0x18e4,0x18e3,0x2124,0x5b4d,0x8cf2,0x8472,0x8492,0x7c92,0x8472,0x8492,0x8493,0x8472,0x734f,0x426a,0x94d4,0x94f4,0x39a9,0x5b2d,0x7c31,0x8431,0x8410,0x7c30,0x7c51,0x7c30,0x8472,0x3188,0x634d,0x0822,0x20c3,0x18a3,0x10c2,0x94d2,0x3167,0x10c4,0x1904,0x18e4,0x2124,0x18e3,0x39e6,0x4a68,0x5289,0x4a89,0x5289,0x41e6,0x9d34, +0xa574,0xad74,0xbe77,0x5bae,0x4aa8,0x52a8,0x5288,0x52a9,0x3a28,0x39c6,0x39e6,0x39e7,0x39c8,0x2986,0x5a09,0xc6b9,0x5bd0,0x2166,0x31c8,0x31a7,0x734d,0x9534,0xc618,0xc659,0xc679,0xbe59,0xbe59,0xbe59,0xbefb,0x426b,0xce38,0xc67a,0xc659,0xbe99,0x9df8,0x524b,0xdefb,0xc67a,0xc69a,0xce9a,0xcebb,0xc69a,0xc6fc,0x9555,0x6431,0x3186,0x31e7,0x31c8,0x5a49,0xb5d7,0xce58,0xcedb,0xc6da,0xceda,0xd6db,0xdedb,0xd6fb,0xd71c,0xd71b,0xd6db,0xc6fc,0x526c,0xef5c,0xd6fb,0xd6fb,0xd73c,0xdf1c,0xd73c,0xd71c,0xd6fc,0xcf5d,0x8472,0x7cf4,0x31e8,0x4248,0x4a49,0x3967,0xd71c,0x9493,0xdf5c,0xd71c,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xdf3c,0xe73c,0xe79d,0xdf5d,0xefbf,0x6bf1,0xa4f3,0xe77d,0xdf5d,0xdf5d,0xe75d,0xe77d,0xe75d,0xe77d,0xc67a,0xdf3d,0x4aab,0x428a,0x4a6a,0x51e9,0xbd75,0xad76,0xef9d,0xdf3c,0xdf3c,0xe75d,0xdf3d,0xdf5d,0xdf3d,0xdf5d,0xdf3c,0xe79d,0x7c72,0x3967,0xd699,0xdf3c,0xe73d,0xdf5c,0xdf3d,0xdf3c,0xdf3d,0xd71c,0xdf7e,0x7bf1,0x9576,0x31c8,0x4a8b,0x528a,0x3a08,0xdf3c,0x94b3,0xe79d,0xd71c,0xdf3c,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xe77d,0xae18,0x7b8f,0xefbe,0x39e8,0xffde,0xdefc,0xdf1c,0xd71c,0xd71b,0xdf1c,0xd6db,0xd6fb,0xce9a,0xadd6,0x6390,0x3a09,0x4229,0x3a29,0x3986,0xc679,0x9cf3,0xdedb,0xd6da,0xd6fb,0xd6fb,0xd6fb,0xcedb,0xcedb,0xc6ba,0x5b4e,0x736f,0xb597,0x422a,0x8451,0xceba,0xc699,0xceba,0xceba,0xc69a,0xc699,0xceba,0xb618,0xd6db,0x4a4b,0x39c7,0x41e8,0x39c7,0x4a48,0x9cd4,0xbe57,0xc659,0xbe59,0xc659,0xc699,0xc659,0xbe38,0xc659,0xbe7a,0x39e8,0xb596,0xad57,0x39a7,0xced9,0xbe18,0xb618,0xbe17,0xbe18,0xb5f7,0xb5f8,0xc658,0x7bf0,0xbe59,0x10a4,0x2986,0x3146,0x2966,0x6bce,0x7bf0,0xb618,0xa5d7,0xadd7,0xb5f8,0xbdf7,0xb5d8,0xadb7,0xadb7,0xadd7,0xb5b7,0xa536,0x31c7,0xbe38,0xadb7,0xadd6,0xa596,0xa596,0xad96,0xad96,0xa555,0xadd7,0x39e9,0x9493,0x1042,0x1905,0x1905,0x0862,0x94d2,0x4a4a,0x9d34,0x9514,0x9d14,0x9554,0x9d35,0x9d34,0x94f4,0xa555,0x8432,0x0821,0x20c4,0x2104,0xa574,0x94f4,0x94d3,0x94f3,0x94d3,0x8cd3,0x8cd3,0x84b2,0x94d3,0x5b2c,0x526c,0x10e4,0x10e3,0x10c4,0x2164,0x736e,0x8471,0x8472,0x8471,0x8492,0x8492,0x8471,0x7c72,0x8472,0x8412,0x31e8,0xa554,0x9d15,0x2926,0x73ae,0x8451,0x7c31,0x7c31,0x7c30,0x7c30,0x7430,0x7c72,0x31a8,0x6b4e,0x0802,0x10c2,0x10a3,0x10c2,0x94f2,0x3147,0x18e4,0x18e4,0x20e4,0x2945,0x2123,0x39e6,0x5a69,0x5289,0x5a69,0x5a89,0x4227,0xa554, +0xa574,0xad74,0xbe98,0x5bae,0x4aa8,0x52a8,0x52a8,0x52a8,0x4208,0x2966,0x39c7,0x31c7,0x39a7,0x29a7,0x626b,0xc6da,0x536f,0x2987,0x31a7,0x3187,0x734d,0x94f3,0xbe18,0xbe59,0xbe59,0xbe59,0xbe59,0xbe59,0xae79,0x3188,0xce79,0xbe59,0xc67a,0xbe59,0xbedb,0x39a8,0xd6da,0xc679,0xc699,0xce9a,0xceba,0xc679,0xcefc,0x9d55,0x6411,0x31a7,0x39e8,0x31a7,0x62ab,0xadb6,0xce58,0xcefb,0xc6da,0xcefb,0xcedb,0xd6db,0xd6fb,0xdf1c,0xd71b,0xd6fb,0xc71c,0x526b,0xe75c,0xd71c,0xd71c,0xd73c,0xd71c,0xd71c,0xd73c,0xd71c,0xd75d,0x8472,0x7cf3,0x31c7,0x4248,0x4249,0x39a7,0xd71b,0x9493,0xdf5c,0xd73c,0xdf3c,0xdf5c,0xd73d,0xdf3c,0xdf3c,0xdf3c,0xd73c,0xe79e,0x8cd3,0x7bcf,0xef7e,0xdf1c,0xdf3c,0xe75d,0xe75d,0xdf3c,0xe75d,0xe77d,0xbe9a,0xdf3d,0x4aac,0x4a8b,0x4aab,0x5229,0xbd95,0xa596,0xefbe,0xe73c,0xe75d,0xdf5d,0xe73d,0xe75d,0xdf5c,0xdf5d,0xdf5c,0xe79d,0xe79e,0x9d76,0x9491,0xe79d,0xdf3c,0xdf3c,0xdf5d,0xdf3d,0xdf3c,0xd6fb,0xe7df,0x83f1,0x9535,0x39e9,0x426a,0x4aaa,0x31c7,0xdf3c,0x94f4,0xe77d,0xdf1c,0xdf3c,0xd71c,0xdf3c,0xdf3c,0xdf1c,0xdf3d,0x31e8,0xce99,0xcedb,0x4229,0xe71c,0xd6fc,0xdf1c,0xdf1c,0xdf1b,0xd6fc,0xd6fb,0xd6db,0xcebb,0xb5b6,0x63b0,0x3208,0x4249,0x4209,0x3185,0xc639,0x9d34,0xd6db,0xcedb,0xd6db,0xd6fb,0xd6db,0xcebb,0xd6db,0xceda,0xef7d,0xe77e,0xd71b,0xc69c,0x4229,0xd71b,0xc69a,0xceba,0xce9a,0xc6ba,0xceba,0xceba,0xb639,0xcedb,0x4a8b,0x39c8,0x31c7,0x3186,0x4228,0x9d35,0xc638,0xce99,0xce99,0xc679,0xc679,0xc679,0xc659,0xceba,0x8cd4,0x9471,0xc679,0xd6db,0x528d,0xa554,0xc679,0xc618,0xbe19,0xbe18,0xbe18,0xbe18,0xbe59,0x7bd0,0xce9a,0x10a5,0x2186,0x2965,0x2965,0x6bae,0x7c30,0xc658,0xadd7,0xb5f7,0xb5f8,0xb5f7,0xb5b7,0xb5b6,0xadb7,0xadb6,0xc659,0x5aed,0x7c31,0xadd7,0xadd7,0xad96,0xa596,0xa596,0xad96,0xa596,0xa575,0xa597,0x31c8,0x9cb3,0x0842,0x1925,0x2104,0x1082,0x8cb1,0x4209,0x9d34,0x9d34,0x9d14,0x9d14,0x9514,0xa515,0x9cf4,0x9513,0x2125,0x8430,0xb5d8,0x3988,0x63ad,0x9d13,0x94d3,0x94f3,0x8cd3,0x94d3,0x8cb3,0x8cd3,0x94f4,0x5b2c,0x52ac,0x18c3,0x18c3,0x10e3,0x1923,0x73af,0x73ee,0x7c71,0x8c91,0x8c91,0x84b2,0x8473,0x7c72,0x7c31,0x8cd4,0x2126,0x2945,0x2125,0x2945,0x8c92,0x8431,0x7c31,0x7c10,0x7c31,0x7c51,0x7c31,0x8472,0x39c8,0x636e,0x0821,0x10c2,0x08c2,0x1103,0x94d2,0x3147,0x10a4,0x18e4,0x20c3,0x1904,0x18e2,0x39c6,0x5288,0x5288,0x5a89,0x52a9,0x4206,0xa513, +0xad74,0xad74,0xb658,0x53af,0x4a89,0x52a8,0x52a8,0x5289,0x3a27,0x31c5,0x39c7,0x39e8,0x39e8,0x31c7,0x626b,0xc6da,0x430e,0x29a6,0x31a7,0x31c7,0x736d,0x8cb2,0xb617,0xbe59,0xbe59,0xbe59,0xbe59,0xbe79,0xbedb,0x3a08,0xc617,0xce79,0xc67a,0xcefa,0x9df8,0x4a6b,0xdefb,0xbe79,0xceba,0xceba,0xceba,0xce9a,0xc6db,0x9d74,0x5bd1,0x31c7,0x39c7,0x39a7,0x62ab,0xa596,0xd699,0xd6fb,0xcedb,0xcedb,0xcedb,0xcefb,0xd6db,0xdf1c,0xd71b,0xd6fb,0xcf3c,0x5acc,0xe75c,0xd6fb,0xd71b,0xd73c,0xd73c,0xdf1c,0xd71b,0xd71c,0xcf1c,0x8472,0x7cd4,0x3208,0x4a49,0x4a4a,0x39a8,0xd6fb,0x9493,0xe77c,0xd71c,0xd73c,0xd73c,0xdf3c,0xdf3d,0xdf3c,0xdf3c,0xe7bf,0x84f4,0x9451,0xffff,0xef9d,0xe75d,0xe73d,0xe75d,0xdf7d,0xdf5d,0xe75d,0xe77d,0xbe9a,0xe77e,0x42ac,0x52aa,0x424a,0x4a09,0xbd55,0xad96,0xf79e,0xdf3c,0xe75c,0xe77d,0xd71b,0xe75d,0xe75d,0xdf5d,0xb616,0xdeda,0xefff,0xcf5e,0x9410,0xe7bd,0xdf3c,0xdf5d,0xdf3c,0xdf3c,0xdf5c,0xd71b,0xe7be,0x7bf0,0x9d56,0x39c9,0x426a,0x4a89,0x39a7,0xe73c,0xad35,0xdf3c,0xdf3c,0xdf3c,0xd73c,0xd71c,0xdf1c,0xdf3c,0xb67a,0x31c8,0x2947,0x2988,0x3167,0x9450,0xdf5c,0xd71c,0xdefb,0xdefb,0xd71c,0xd6fb,0xd71b,0xc69a,0xc617,0x6bb0,0x3208,0x4249,0x4a4a,0x3166,0xbe18,0xad75,0xdedb,0xd6fc,0xd6db,0xd71b,0xd6fb,0xd6fb,0xd6bb,0xdf1c,0x4269,0xdf3c,0xe77d,0xa576,0x52ab,0xceda,0xcedb,0xcedb,0xceba,0xce9a,0xcedb,0xd6bb,0xadf7,0xcf1b,0x4a6b,0x31a6,0x39e7,0x3186,0x4228,0x9d13,0xc678,0xbe78,0xc659,0xce59,0xc659,0xbe39,0xbe39,0xbe79,0xadf8,0x6b0d,0xefbd,0xef7d,0x41e9,0xc657,0xbe58,0xbe38,0xc619,0xb618,0xb5f7,0xbdf7,0xc699,0x7bd0,0xc618,0x18a5,0x3166,0x3186,0x2145,0x6b8d,0x73f0,0xc678,0xadb6,0xadd7,0xb5f6,0xadd6,0xadd7,0xadd6,0xb5d7,0xad96,0xa556,0x10a2,0xb5f7,0xa5b6,0xa5b6,0xadb7,0xa596,0xa576,0xad97,0xad96,0xa596,0xadb7,0x39e9,0x8452,0x0063,0x1124,0x18e5,0x1062,0x9d12,0x3a09,0xa555,0x9d34,0x9d14,0x9cf4,0x9d14,0xa4f4,0x94f4,0x9d14,0x18e5,0x9d13,0xb618,0x526c,0x4b0b,0x9513,0x94d3,0x9cb3,0x94d3,0x8cd3,0x8cd3,0x94d3,0x9514,0x52ec,0x5acc,0x18c4,0x18e3,0x10e3,0x10c2,0x73ae,0x742f,0x8492,0x8c91,0x8cb2,0x8492,0x8492,0x8492,0x8c51,0x7c72,0x8cd4,0x7c53,0x10a3,0x7c30,0x7451,0x8470,0x7c51,0x7c32,0x7c31,0x8431,0x8431,0x7c92,0x39c9,0x6b6e,0x0821,0x10a3,0x08c2,0x08a2,0x94d2,0x3948,0x18a4,0x18e4,0x1904,0x1904,0x18e3,0x39e6,0x4a67,0x5288,0x5288,0x52a9,0x4206,0xa513, +0xad74,0xad74,0xc699,0x538e,0x4aa9,0x52a8,0x52a8,0x5288,0x3a28,0x3186,0x39c7,0x39c7,0x31e7,0x31a6,0x6a8a,0xc6da,0x432e,0x2186,0x31a7,0x2987,0x7bae,0x9492,0xbe18,0xbe38,0xbe59,0xc679,0xc679,0xbe59,0xc6ba,0x84d3,0x5a8a,0xbe37,0xcefb,0xb618,0x3a4a,0xc5b7,0xc6ba,0xc69a,0xce9a,0xc6ba,0xc69a,0xc69a,0xbeba,0xa596,0x53d0,0x31a7,0x39c8,0x2987,0x6acc,0x9d55,0xd699,0xcedb,0xceda,0xd6db,0xceda,0xceda,0xd6fb,0xdf1c,0xd71c,0xd6db,0xcf3d,0x4a6c,0xe77d,0xd6fb,0xdf1c,0xdf3c,0xd71c,0xdf1c,0xd71c,0xd71c,0xd71c,0x8cd3,0x7cd3,0x31c7,0x4a49,0x4a69,0x41e8,0xd6fa,0x9cf4,0xe75d,0xd71c,0xdf3c,0xdf3c,0xdf5d,0xdf3c,0xdf3c,0xe79e,0x7493,0x1905,0x73af,0x6b8d,0x94d2,0xe75d,0xdf5d,0xe75d,0xe75d,0xdf5d,0xdf5d,0xe77d,0xb69a,0xe79e,0x428c,0x52ab,0x52ab,0x4a29,0xb575,0xa596,0xf7be,0xdf3c,0xe73c,0xf7be,0xe75d,0xdf3d,0xe75d,0xe75d,0xd71c,0x52ab,0x8450,0x528b,0xb576,0xdf5d,0xdf5c,0xe75d,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xefdf,0x8431,0x9536,0x3a09,0x4a8b,0x528a,0x41e7,0xe73c,0xad35,0xd75d,0xd73c,0xd71c,0xdf3c,0xdf1c,0xdf3c,0xd71c,0xe75c,0xe77d,0xef9e,0xef9e,0x6b4e,0xf7be,0xd6fb,0xd71b,0xdf1c,0xd6fc,0xdf1c,0xd71c,0xd6fb,0xc6bb,0xbdf7,0x6b6f,0x3a29,0x4a29,0x4229,0x39a6,0xbe38,0xad75,0xd6fb,0xd6fb,0xd6fb,0xd71b,0xd6fb,0xd6db,0xcedb,0xdf3c,0x94b5,0x49c8,0x5aaa,0x41e8,0xce7a,0xd6fb,0xd6da,0xceda,0xceba,0xceb9,0xc69a,0xceba,0xb618,0xd71c,0x4a6b,0x31c7,0x31e8,0x29a6,0x52a9,0x8cd3,0xce78,0xbe58,0xc659,0xc679,0xbe79,0xbe38,0xc638,0xb638,0xd6db,0x5aed,0x2967,0x31a7,0x6b4d,0xce9a,0xbe58,0xbe38,0xbe18,0xbe18,0xb5f7,0xb5f7,0xc699,0x83f0,0xc618,0x18c5,0x3165,0x2966,0x2145,0x638e,0x8451,0xb638,0xad96,0xb5d8,0xb5d8,0xb5f7,0xadb7,0xadd7,0xadb7,0xb5f7,0x5acd,0x630d,0xb5f7,0xad96,0xadb6,0xad96,0xa575,0xad96,0xad96,0xa596,0xadb6,0xad97,0x39e9,0x8c52,0x0063,0x1105,0x1905,0x1062,0x94d2,0x3a08,0x9d75,0x9514,0xa515,0x9d14,0x9d35,0x9d14,0x94f4,0x94f4,0x73b1,0x18c4,0x41c8,0x2124,0x9513,0x94f3,0x94d3,0x94d3,0x8cd3,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x5b2d,0x5aab,0x10c3,0x18e3,0x18c3,0x0882,0x73ae,0x7c4f,0x8492,0x8492,0x8491,0x8472,0x8471,0x8492,0x8c51,0x8472,0x8492,0x2145,0x6b4d,0x8cb3,0x8452,0x8430,0x7c31,0x7c32,0x7c30,0x7410,0x7c11,0x8472,0x41e9,0x7b8e,0x0822,0x10a3,0x08c3,0x10a2,0x94d2,0x39a8,0x18c4,0x18c3,0x1104,0x1924,0x18c3,0x41c5,0x5288,0x5288,0x5a88,0x52a9,0x41e6,0xa553, +0xad94,0xa573,0xc6b9,0x538e,0x4a89,0x5288,0x4a89,0x5a89,0x4228,0x3186,0x31c7,0x31e7,0x31c7,0x31a7,0x6a8b,0xcefc,0x3b0e,0x2966,0x39c7,0x2966,0x83ce,0x9493,0xc659,0xbe38,0xc659,0xc679,0xc699,0xc679,0xbe58,0xcebb,0x7472,0x1925,0x20e5,0x3125,0xb535,0xce7a,0xc67a,0xce9a,0xc6ba,0xbe9a,0xc679,0xc69a,0xae9a,0xa595,0x53af,0x3228,0x31c7,0x39c8,0x7aec,0xa575,0xce59,0xcedb,0xc6da,0xceda,0xd6db,0xcedb,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xc6fb,0x7bf1,0xe75c,0xd71b,0xdf3c,0xdf3c,0xd6fb,0xd71c,0xd71c,0xdf1c,0xd73d,0x9513,0x6c93,0x3a08,0x4a69,0x528a,0x39c7,0xd6fb,0xa514,0xefbe,0xd71b,0xdf1d,0xdf3d,0xdf3c,0xdf3c,0xdf3c,0xdf5d,0xc69b,0xbdf8,0xbe18,0xc618,0xce9a,0xdf3c,0xe73c,0xe73c,0xef7d,0xe77d,0xe77d,0xef9e,0xb67a,0xdf9d,0x4a8b,0x52aa,0x4a6a,0x4209,0xb555,0xadb7,0xf7be,0xdf5c,0xe75d,0xefbe,0xe75c,0xe77d,0xdf7c,0xe77d,0xefbe,0xdf3c,0xad96,0xdedb,0xe77e,0xe75c,0xe75d,0xdf5d,0xe75d,0xdf5d,0xdf3c,0xe75d,0xe7be,0x8431,0xad77,0x39e8,0x526b,0x526a,0x4a08,0xe75c,0xa514,0xe77d,0xd71b,0xdf3c,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xe71c,0xdf5c,0xe75d,0xdf5d,0xd6fc,0xd6fc,0xd71b,0xd71c,0xd71c,0xdf5c,0xd6fb,0xe75d,0xcedc,0xbe18,0x6b8f,0x3a28,0x4a49,0x420a,0x41c7,0xc679,0xa534,0xcefb,0xcefb,0xd6fb,0xd6fb,0xceda,0xd6fb,0xd6fb,0xcedb,0xdf3c,0xdf5d,0xc69a,0xe77d,0xd6db,0xceba,0xceda,0xd6da,0xceba,0xceba,0xceba,0xd6db,0xadd7,0xcedb,0x4a2a,0x31c7,0x4208,0x3186,0x5289,0xa535,0xad95,0xceba,0xc69a,0xc6ba,0xc699,0xc679,0xc679,0xc679,0xce7a,0xd6db,0xce9b,0xce9b,0xceda,0xbe38,0xbe38,0xc638,0xbe38,0xbe18,0xbe18,0xbe37,0xc69a,0x8431,0xbe58,0x1084,0x2966,0x3186,0x2145,0x636c,0x8cb1,0xbe59,0xadd7,0xb5f7,0xbe18,0xb5d7,0xb5b6,0xb5d7,0xb5d7,0xad96,0xb5b7,0xc638,0xadd6,0xadb6,0xa5b7,0xad96,0xad96,0xadb6,0xad96,0xa575,0x9d55,0xad97,0x3a09,0x9473,0x0863,0x2105,0x1904,0x1863,0x7450,0x4a8a,0xa555,0x9d14,0xa514,0x9d15,0x9514,0x94f4,0x9514,0x8cf3,0x9535,0x9d15,0x8c32,0xad96,0x94f3,0x94f3,0x94f3,0x94d3,0x94f3,0x94d3,0x94d3,0x84b2,0x9cf3,0x73ef,0x626c,0x10c4,0x18e3,0x18c3,0x0861,0x6bce,0x6bcd,0x8c91,0x8c92,0x8472,0x8471,0x8471,0x7c71,0x8451,0x8c51,0x8472,0x52eb,0x8451,0x8c52,0x8472,0x7c50,0x7450,0x7c51,0x7410,0x7430,0x7430,0x7c51,0x39e9,0x6b4d,0x0821,0x18c2,0x10a3,0x10e2,0x8cd2,0x39c9,0x18e3,0x18e2,0x18e4,0x2104,0x18c3,0x39c6,0x5288,0x5289,0x5288,0x5a88,0x41e6,0xa553, +0xad75,0xad53,0xbeb8,0x534d,0x4a68,0x52a9,0x4a68,0x5a68,0x4227,0x31a6,0x39e7,0x31e8,0x29c7,0x2986,0x6acc,0xc6da,0x3b0c,0x2985,0x39a6,0x3186,0x838e,0x94d4,0xc657,0xc679,0xc679,0xc699,0xc6ba,0xceda,0xc6b9,0xc699,0xcefa,0xd6db,0xd71b,0xe75c,0xd6fb,0xceba,0xd6fa,0xcefb,0xd73b,0xd6fb,0xd6fb,0xd77d,0xb659,0xae38,0x4b2c,0x39e8,0x39e7,0x39c7,0x7b2b,0xbe18,0xc638,0xdf3c,0xdf5c,0xd73b,0xd71b,0xd73c,0xdf7d,0xdf5c,0xd75c,0xe79d,0xefbe,0xf7ff,0xefdf,0xe7dd,0xefde,0xefde,0xe79d,0xe7be,0xeffe,0xf7de,0xbe9a,0xbe59,0x6c32,0x3a28,0x4a6a,0x428a,0x39c7,0xdefb,0x94d3,0xf7dd,0xf7ff,0xf7ff,0xf7de,0xf7de,0xf7ff,0xefde,0xefde,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xefde,0xefff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xefdf,0xa535,0xe77e,0x3a4a,0x4a8a,0x52aa,0x424a,0x8bae,0xce79,0xbdd6,0xf7be,0xffff,0xf7ff,0xf7df,0xefbe,0xf7de,0xefde,0xe79d,0xefde,0xf7de,0xefbe,0xef9e,0xefbe,0xf7be,0xef7d,0xef9e,0xefbe,0xe79d,0xef9e,0xa596,0xc659,0x7c32,0x4a4a,0x5269,0x4aaa,0x4a08,0xe73b,0xadb6,0xe79e,0xefbe,0xefbe,0xef9d,0xe79c,0xf7fe,0xefbe,0xe79d,0xe79d,0xefbe,0xef9d,0xe79d,0xe79d,0xefbe,0xe77d,0xdf5c,0xe77d,0xe73c,0xe73c,0xe73c,0x94d3,0xef9e,0x52cc,0x4249,0x4a6a,0x4a4a,0x2945,0xdf1b,0x94b2,0xb5f7,0xcedb,0xc6ba,0xc69a,0xc69a,0xc69a,0xc679,0xc679,0xceba,0xceb9,0xceb9,0xcedb,0xc6ba,0xceba,0xc69a,0xc679,0xceba,0xbe99,0xc6b9,0xc659,0x8410,0xce7b,0x31c8,0x39c7,0x41e9,0x41e8,0x3986,0xc659,0x4a8a,0x9cd3,0xa554,0x9d13,0xa555,0x9d35,0x9d34,0xa575,0xad75,0xa554,0xa595,0xadb5,0xadb6,0xb5d7,0xadb6,0xadd6,0xbdf7,0xb5f7,0xadd6,0xb5f6,0x9cf4,0x630d,0x9d35,0x1883,0x3186,0x3166,0x3165,0x3a06,0xbe38,0x634d,0x94f3,0xad96,0xadb6,0xadb6,0xadd6,0xa574,0xad75,0xadb5,0xadd6,0xa5b6,0xad96,0xad75,0xadd5,0xadb5,0xadb5,0xad96,0xad96,0xad95,0xadb6,0x8c93,0x73d0,0x736f,0x1884,0x1905,0x1104,0x20e4,0x532b,0x7b8e,0x8451,0x9534,0xa5b5,0xad75,0x9d75,0x9d95,0xa595,0x9d95,0xa595,0xadb6,0xa595,0xa575,0x9d54,0x9d33,0xa534,0x9d54,0xa595,0x9d74,0x9d33,0x9512,0x6b2c,0x8431,0x3987,0x18e3,0x18c3,0x18c3,0x0020,0x8450,0x3207,0x842f,0x94b1,0x8cb2,0x94b2,0x94d2,0x8cb1,0x8c91,0x94b1,0x94d2,0x9513,0x8c71,0x7c10,0x73cf,0x8410,0x842f,0x73ef,0x6bcf,0x73ef,0x6bae,0x52eb,0x3289,0x6b2e,0x0021,0x10c2,0x10c3,0x10a2,0x8c91,0x420a,0x18c3,0x18e2,0x1903,0x2104,0x18c2,0x31e5,0x5288,0x4a88,0x5269,0x52a8,0x41e6,0xa553, +0xad94,0xb574,0xbeb8,0x532c,0x4aa8,0x5288,0x5288,0x5aa8,0x4207,0x39a6,0x31e7,0x31e7,0x31e7,0x2986,0x62ec,0xc6da,0x3acb,0x2985,0x39a7,0x31a8,0x5228,0xad76,0x7c11,0x8c71,0x8c92,0x94b2,0x94b2,0x8cb2,0x84b2,0x8c92,0x8cb2,0x94d3,0x9d13,0x94d3,0x84b2,0x84b2,0x8cb2,0x94f3,0x94d3,0x94b2,0x8c92,0x8c72,0x94f3,0xa619,0x2186,0x31c7,0x31c7,0x39e8,0x3165,0xce79,0x9513,0x94d2,0x94f3,0x94f3,0x94f4,0x94f4,0x8cb3,0x8cd3,0x94d3,0x8cd3,0x8c92,0x8c72,0x8c92,0x94d3,0x94f3,0x94d3,0x94f3,0x9514,0x94f4,0x8cd2,0x9db5,0xcefb,0x3a69,0x4229,0x4a49,0x4249,0x4228,0x83ce,0xd6fa,0x9cf3,0x9cb3,0x9493,0x9cd3,0x94f3,0x9d14,0xa555,0x9d35,0x9514,0x94f3,0x9514,0x9d55,0x9d35,0x9d15,0x94f4,0x94f4,0x94d3,0x94d3,0x94d3,0xa554,0xc67a,0x6bf1,0x4229,0x528b,0x528b,0x4a6a,0x4207,0xd699,0xc658,0x9d14,0x94d4,0x9cf4,0x94d4,0x9d14,0x9514,0x9d35,0x9d14,0x9d34,0x94f4,0x9535,0x94f4,0x94f3,0x9d34,0x9d14,0x9d34,0xa555,0x9d34,0xa535,0xc679,0xadd7,0x4249,0x526a,0x4a69,0x428a,0x4a6a,0x736c,0xdefb,0xb5b6,0x9d14,0x9cd3,0x9cb3,0x94b2,0xa534,0x9d34,0x9cd3,0x9cd3,0x94d3,0x94f3,0x9cf3,0x9514,0x9cf4,0x9cf3,0xa534,0xad76,0xad55,0xa534,0xa575,0xd6bb,0x8451,0x3a08,0x424a,0x3a49,0x4249,0x3a08,0x6b4c,0xdefb,0xb5d7,0xad76,0xad96,0xad96,0xa575,0xad96,0xad76,0xa576,0xa556,0x9d14,0x9d15,0x9d15,0x9514,0x9d14,0x9514,0x94f3,0x94f4,0x94d3,0x8cb3,0x9d34,0xce9a,0x52ed,0x29a7,0x39e8,0x39c7,0x39c8,0x2966,0x4a69,0xc679,0x94b2,0x94b2,0x8c71,0x9492,0x9492,0x8472,0x8430,0x8c71,0x8451,0x8c71,0x9cd2,0x94d2,0x94b2,0x8492,0x7c30,0x73f0,0x8411,0x7bd0,0x7bcf,0x9472,0xad96,0x39e8,0x3125,0x2965,0x2145,0x3165,0x08a2,0x6bcd,0xad95,0x7c31,0x7c11,0x7411,0x7c11,0x8410,0x7c30,0x73ef,0x73f0,0x6baf,0x6bef,0x73d0,0x736e,0x7baf,0x6b6d,0x738e,0x7baf,0x632d,0x632d,0x634d,0x7bb0,0x9cf4,0x1926,0x2125,0x1904,0x1924,0x2104,0x10c2,0x8c10,0x7c30,0x5b2d,0x630c,0x5acb,0x5acb,0x52ab,0x52cc,0x5aec,0x62ec,0x630c,0x5b2c,0x5aec,0x5aec,0x5acb,0x5aeb,0x52cb,0x52ab,0x5aab,0x528a,0x4a8a,0x738f,0x7baf,0x0042,0x08e3,0x18c3,0x20e3,0x10c1,0x3184,0x8490,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x424a,0x4a6a,0x4a8b,0x42aa,0x4a8b,0x4a8b,0x4a6a,0x4a8a,0x4acb,0x3a8a,0x4aab,0x52cb,0x428a,0x4a89,0x426a,0x5aec,0x6b6e,0x20a4,0x10a2,0x18c2,0x18a3,0x0882,0x8492,0x4a09,0x18c3,0x1903,0x1924,0x1904,0x20e4,0x31e5,0x5267,0x52a8,0x5288,0x52a9,0x41e6,0xa574, +0xad94,0xad94,0xbeb8,0x532b,0x5288,0x5288,0x5288,0x52a9,0x4228,0x39a6,0x39e7,0x31e7,0x31a6,0x31c7,0x730c,0xbeda,0x326a,0x39a6,0x39c7,0x39a7,0x2945,0x5268,0xbdf6,0xce99,0xd6b9,0xceb9,0xceda,0xd6fb,0xd71c,0xdf3b,0xdf3b,0xe75c,0xe77e,0xdf5c,0xdf5d,0xdf5c,0xd75c,0xdf5d,0xdf7d,0xdf5d,0xdf5d,0xd71c,0x9db6,0x2165,0x31a7,0x39c6,0x39e6,0x3208,0x29e7,0x41c6,0xad95,0xd6da,0xd71b,0xd71b,0xd6da,0xe71b,0xdf1b,0xd6da,0xceda,0xd6bb,0xcedb,0xbe99,0xd69a,0xceba,0xce99,0xc679,0xc679,0xbe38,0xbe58,0xbe59,0x8492,0x3a28,0x4269,0x4a69,0x4249,0x4249,0x4269,0x31c7,0x4a69,0x8471,0x94f3,0xa534,0xa574,0x9d54,0xa575,0x9513,0x9d34,0x9d54,0x9d74,0x9d95,0x9d75,0x9d75,0x9d75,0xa595,0xa575,0x9d75,0xa575,0xa574,0x7cb1,0x4a69,0x524a,0x4a6a,0x4a8a,0x526a,0x4a69,0x52aa,0x4227,0x5aeb,0x7410,0x7c10,0x7c30,0x8c92,0x7c70,0x742f,0x7c30,0x7c10,0x73ce,0x6bad,0x638d,0x636d,0x6b6e,0x6b6d,0x634d,0x636d,0x6b4c,0x6b8d,0x634c,0x426a,0x3208,0x4249,0x4a6a,0x4a69,0x4a8a,0x4a8a,0x4269,0x4228,0x6b2c,0x7bee,0x73ee,0x8430,0x73ce,0x6bae,0x638d,0x6b4d,0x738e,0x5b2c,0x5b2b,0x632c,0x5b0b,0x530b,0x52ca,0x52c9,0x52ea,0x634c,0x5b4c,0x4268,0x31e7,0x31a7,0x4269,0x3a69,0x4249,0x4228,0x424a,0x41e8,0x2945,0x31c6,0x4249,0x39e8,0x39e7,0x3a07,0x4a48,0x4228,0x3a07,0x3a08,0x3a08,0x3a28,0x3208,0x31e7,0x31c7,0x31c6,0x3a07,0x3208,0x29c7,0x39e6,0x4208,0x2986,0x3187,0x41c8,0x4208,0x39e7,0x31c7,0x31c8,0x31a7,0x10c3,0x18c3,0x18e3,0x10e2,0x10e3,0x1903,0x2124,0x2124,0x1945,0x1944,0x1904,0x2104,0x2164,0x2965,0x3186,0x3986,0x2944,0x31c5,0x31c6,0x39a6,0x31a6,0x2104,0x2945,0x2965,0x2965,0x2165,0x2945,0x2966,0x1903,0x18c2,0x2965,0x2144,0x2145,0x2104,0x3124,0x3185,0x31c5,0x31a5,0x2985,0x2985,0x2145,0x2146,0x29a6,0x2186,0x31a6,0x31a7,0x2186,0x2186,0x2165,0x2105,0x18c3,0x10e4,0x1905,0x18e4,0x1904,0x1904,0x1904,0x18a2,0x1923,0x2165,0x2165,0x2965,0x31a5,0x31e7,0x31a6,0x31a6,0x31a6,0x29c6,0x2986,0x2986,0x31a6,0x3185,0x31a6,0x29a7,0x21a6,0x29a6,0x4a69,0x3186,0x18c3,0x1061,0x08c3,0x10e3,0x10c2,0x08c2,0x10c2,0x08a2,0x0040,0x18e3,0x1903,0x2104,0x2104,0x1903,0x18e3,0x1924,0x1924,0x1905,0x18e4,0x18c3,0x10c2,0x10a3,0x0861,0x1082,0x0861,0x0841,0x0861,0x0041,0x0821,0x1041,0x1883,0x10a2,0x18a2,0x1062,0x0081,0x84d2,0x4a09,0x20a2,0x20e3,0x1903,0x1904,0x1924,0x31a6,0x4a87,0x5288,0x52a8,0x5289,0x39e6,0xa594, +0xad94,0xad74,0xbeb9,0x4b2c,0x5288,0x5a88,0x5288,0x4a69,0x39e7,0x31c6,0x39e7,0x31c7,0x29a7,0x29a7,0x7b4d,0xb6da,0x2a4b,0x3186,0x31c6,0x31c6,0x3186,0x2965,0x2925,0x2965,0x2965,0x3185,0x3165,0x2944,0x2125,0x2945,0x2945,0x2945,0x2124,0x2144,0x2924,0x2104,0x2104,0x2165,0x2124,0x2125,0x2925,0x2944,0x2965,0x31c6,0x31c7,0x39c7,0x39c6,0x31a7,0x39c7,0x39a7,0x2965,0x2165,0x2186,0x2125,0x2965,0x2986,0x2985,0x3186,0x2986,0x21a6,0x2185,0x31c6,0x31c6,0x29a6,0x31c7,0x31c7,0x2986,0x3187,0x2985,0x31c7,0x39e8,0x4a28,0x4a69,0x4249,0x4249,0x4a69,0x4249,0x4a69,0x4a49,0x39e8,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x4208,0x4a08,0x3a07,0x39c7,0x41e8,0x39e8,0x4229,0x3a08,0x41e8,0x4208,0x4208,0x3a08,0x3a08,0x3a08,0x4a6a,0x4a6a,0x4269,0x4a69,0x4a6a,0x4a6a,0x4a4a,0x4269,0x4a8a,0x4a29,0x4209,0x4a29,0x4a49,0x4a69,0x3a28,0x4a49,0x4a8a,0x4248,0x4a49,0x4a4a,0x4a69,0x4269,0x3a29,0x4a29,0x4229,0x4249,0x426a,0x4229,0x4a4a,0x4a8b,0x526a,0x528a,0x4a6a,0x4aaa,0x526a,0x4a6a,0x4a8a,0x4a09,0x4229,0x3a49,0x3a29,0x3a28,0x3a28,0x4208,0x39e8,0x4249,0x424a,0x4a49,0x4a49,0x4a48,0x4a49,0x4a29,0x4229,0x4229,0x4248,0x4a29,0x4a49,0x4a69,0x4a29,0x4269,0x4a69,0x4249,0x4a49,0x4a49,0x4a69,0x3a49,0x4228,0x3a08,0x3a08,0x4209,0x4208,0x4a08,0x3a08,0x39c7,0x39e8,0x31e8,0x39e8,0x4228,0x4208,0x39e8,0x39e7,0x31c6,0x31e7,0x3207,0x39e8,0x39c8,0x39e8,0x39e7,0x39e8,0x31e8,0x39e8,0x39c7,0x39a7,0x3a07,0x39e7,0x31c8,0x31c6,0x31e7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x39a6,0x39a6,0x3185,0x2986,0x2966,0x2985,0x2966,0x2946,0x2145,0x2145,0x2124,0x2965,0x3186,0x3186,0x3185,0x3165,0x2985,0x2945,0x3145,0x2985,0x2165,0x3166,0x2905,0x2125,0x1925,0x2105,0x2104,0x2124,0x2104,0x2124,0x2904,0x2105,0x1904,0x18e4,0x1904,0x20e4,0x18e4,0x18e4,0x20e4,0x2104,0x1904,0x2144,0x1905,0x1904,0x1904,0x1904,0x18e4,0x1903,0x1903,0x18e3,0x10e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c2,0x18c2,0x18a3,0x10a3,0x10a4,0x18a3,0x08a3,0x10a3,0x20c2,0x18c3,0x18c2,0x18c2,0x0883,0x10a3,0x18c3,0x10e3,0x10c3,0x10c3,0x10c3,0x08c3,0x18c3,0x18e3,0x18c2,0x18a2,0x10a2,0x20a2,0x10c2,0x10c2,0x18c3,0x18a2,0x18a3,0x10a3,0x18c3,0x18a2,0x18a1,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x08a2,0x10c2,0x18c2,0x18c3,0x18c3,0x10a2,0x18a3,0x08a2,0x0881,0x8cd2,0x41c9,0x18a2,0x18c3,0x18e2,0x18e4,0x2164,0x31a5,0x4a88,0x5288,0x4a89,0x52a8,0x4a06,0xa594, +0xa594,0xad74,0xbeb9,0x4b0b,0x5268,0x5288,0x4a68,0x4a68,0x4227,0x31c6,0x29a6,0x31c7,0x31c7,0x29a7,0x72cc,0xbe99,0x32ab,0x3186,0x31a6,0x2986,0x29a6,0x3987,0x2986,0x29a7,0x31a7,0x39c7,0x39c7,0x31c7,0x39c7,0x39c7,0x39c7,0x31a7,0x39c7,0x39c7,0x39c7,0x31c6,0x31c7,0x29c7,0x39c6,0x31e7,0x31e7,0x39a7,0x31c7,0x29c7,0x31a7,0x29a6,0x31e7,0x39c8,0x31c7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e8,0x31e8,0x4228,0x39e8,0x41e8,0x4a08,0x4228,0x3a28,0x4228,0x4228,0x4249,0x4a49,0x41e7,0x4a49,0x4228,0x4a48,0x4249,0x41e8,0x4229,0x4a49,0x4a49,0x4a49,0x4a8b,0x428a,0x4a69,0x5289,0x4a69,0x4249,0x528a,0x4a8a,0x528a,0x528a,0x4a4a,0x528b,0x528a,0x528a,0x52cb,0x4aaa,0x4aaa,0x4a6a,0x4aaa,0x4a8a,0x4aaa,0x4a89,0x4a89,0x526a,0x526a,0x528a,0x4a8a,0x528b,0x4a8a,0x52ab,0x4aab,0x52ab,0x52cc,0x52cc,0x52ab,0x5acb,0x5aeb,0x4a8a,0x4a8a,0x52ab,0x5acb,0x52ab,0x52cb,0x52cb,0x52ab,0x528b,0x528b,0x528a,0x52ca,0x52ca,0x52cb,0x4aab,0x4aab,0x4aaa,0x4a8a,0x4a4a,0x4a8a,0x528b,0x4a6a,0x52ab,0x528b,0x52ab,0x52ab,0x528b,0x4a6b,0x4a8a,0x4aaa,0x4a8a,0x4a49,0x4a6a,0x52aa,0x4aab,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a49,0x4a69,0x4a69,0x5269,0x4a68,0x4249,0x4249,0x4249,0x4a69,0x4a49,0x4249,0x4a4a,0x4a69,0x4228,0x3a28,0x426a,0x4208,0x4269,0x4248,0x3a48,0x3a08,0x3a09,0x31e8,0x39e8,0x4208,0x4228,0x3a08,0x4209,0x3a29,0x4228,0x3a08,0x39c8,0x4a08,0x4a08,0x4208,0x3a08,0x3a08,0x39e8,0x39c7,0x39a7,0x39e8,0x31e7,0x29c8,0x31c7,0x39a8,0x39a7,0x31c7,0x39e7,0x31c6,0x31a7,0x31c7,0x39c7,0x31a6,0x31a7,0x31a7,0x3986,0x2966,0x2946,0x3167,0x3186,0x29a6,0x2986,0x3186,0x3166,0x29a6,0x2986,0x2986,0x2966,0x3166,0x3186,0x2986,0x2966,0x2945,0x2145,0x2166,0x2166,0x2165,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2124,0x2144,0x2125,0x2125,0x2124,0x2104,0x2925,0x2905,0x2124,0x2105,0x2905,0x2905,0x2104,0x2105,0x20e4,0x2124,0x18e4,0x2104,0x1904,0x18e4,0x20e4,0x20e4,0x1904,0x10e4,0x18e4,0x18e3,0x08e4,0x1904,0x20e4,0x18c4,0x18c3,0x1904,0x18e3,0x18c3,0x18c4,0x18e4,0x10e3,0x18e3,0x18c4,0x18c3,0x18c3,0x18c3,0x10c3,0x10a3,0x08c3,0x10c3,0x18c3,0x20c3,0x18c2,0x18c2,0x10c3,0x10a3,0x18a3,0x10a2,0x18c3,0x18a4,0x18c3,0x18a2,0x18e3,0x10a2,0x10a3,0x08c2,0x08a2,0x08a2,0x08a2,0x00c2,0x18a2,0x18a3,0x10c3,0x0021,0x3247,0x8cb3,0x2106,0x18c3,0x18e3,0x1904,0x1904,0x1904,0x3185,0x5267,0x5268,0x5289,0x5288,0x4226,0xa595, +0xad95,0xad74,0xbeda,0x4aeb,0x4a68,0x5a89,0x4a89,0x4288,0x4207,0x31a6,0x39e7,0x39e7,0x31c6,0x31c6,0x49e7,0xc679,0x7493,0x1966,0x2987,0x2986,0x31a7,0x2946,0x29a7,0x2986,0x31a7,0x39a7,0x31a7,0x31a6,0x31a6,0x2985,0x31a6,0x3166,0x3165,0x31a7,0x3187,0x2965,0x2986,0x2987,0x31c7,0x39c7,0x39e7,0x31a7,0x39a7,0x41c7,0x39c7,0x31c7,0x3a07,0x39e8,0x3a08,0x3a08,0x3208,0x31c7,0x31a7,0x39a7,0x39e8,0x31c7,0x39e8,0x39e8,0x3a09,0x3a09,0x3a28,0x3a08,0x39e8,0x4249,0x4229,0x3a08,0x4208,0x4208,0x3a48,0x3a08,0x4a6a,0x424a,0x4208,0x4208,0x4a09,0x4a6a,0x4269,0x4229,0x5229,0x5269,0x526a,0x4a4a,0x4a29,0x4a6a,0x528a,0x4229,0x424a,0x4a6a,0x4a8a,0x428a,0x4229,0x4209,0x4a49,0x4209,0x41e8,0x49e8,0x4a48,0x3a08,0x39e8,0x39e8,0x39e9,0x4229,0x4a49,0x4229,0x4229,0x4229,0x4209,0x39e9,0x39e8,0x39a8,0x4209,0x41c8,0x39a8,0x39a7,0x39e9,0x39e9,0x31c8,0x31c8,0x31c7,0x31c8,0x31a8,0x39e8,0x39e9,0x39e9,0x39c8,0x31a6,0x39e8,0x31a8,0x31a7,0x31c7,0x39e8,0x41e9,0x39a8,0x31a7,0x31a7,0x39a7,0x2987,0x39c8,0x39a7,0x3187,0x3188,0x31a8,0x31e8,0x39c8,0x39a8,0x39a8,0x39c7,0x31a8,0x3987,0x3167,0x3147,0x3146,0x2966,0x2966,0x3167,0x2966,0x2186,0x31c7,0x31a6,0x3a09,0x3167,0x3966,0x3966,0x3146,0x39a7,0x39a8,0x3167,0x3166,0x3167,0x31c7,0x2986,0x3186,0x39a7,0x31a7,0x2966,0x3166,0x3187,0x3986,0x3166,0x2966,0x3166,0x2925,0x2945,0x3166,0x2926,0x2966,0x2966,0x2946,0x2167,0x2146,0x20e5,0x2905,0x2945,0x2945,0x20e5,0x2105,0x2946,0x2125,0x1905,0x2126,0x2125,0x20e4,0x18e5,0x10c5,0x10c5,0x18e6,0x10c4,0x18a3,0x18c4,0x18c4,0x10a4,0x1083,0x1063,0x1083,0x18c4,0x1083,0x0862,0x1083,0x18a4,0x18a4,0x10a3,0x1082,0x10a3,0x0862,0x1062,0x1883,0x1063,0x0861,0x10a2,0x1042,0x0041,0x0863,0x1083,0x0862,0x0862,0x0862,0x0842,0x0821,0x1021,0x0021,0x0021,0x0042,0x0022,0x0000,0x0000,0x0801,0x0000,0x0801,0x0821,0x0801,0x0001,0x0021,0x0001,0x0021,0x0001,0x0821,0x0021,0x0021,0x0822,0x0822,0x0801,0x0021,0x0021,0x0021,0x0022,0x0022,0x0042,0x0021,0x0841,0x0020,0x0001,0x0001,0x0001,0x0001,0x0000,0x0001,0x0001,0x0001,0x0002,0x0021,0x0021,0x0000,0x0001,0x0001,0x0001,0x0021,0x0041,0x0041,0x0021,0x0821,0x0842,0x0842,0x0842,0x0021,0x0021,0x0821,0x0821,0x0862,0x0862,0x1042,0x0841,0x0841,0x0862,0x10c3,0x3a6a,0x8431,0x5acb,0x1042,0x18e3,0x20e3,0x2104,0x1904,0x18e4,0x39a5,0x5247,0x5a69,0x4a89,0x5288,0x4a07,0xa594, +0xad94,0xad74,0xc6fa,0x42eb,0x4a88,0x5289,0x4a89,0x4a68,0x39e7,0x31a6,0x39e6,0x39e7,0x31c7,0x31e6,0x3986,0xa492,0xcedb,0x9515,0x5b2e,0x632d,0x5b0d,0x62ed,0x5b0d,0x5b0d,0x630d,0x6b2e,0x6aed,0x6b0d,0x6b2d,0x630d,0x5aed,0x630e,0x634e,0x5b0d,0x5aed,0x5acc,0x5acc,0x5aad,0x5acd,0x5acd,0x52ac,0x5aed,0x5b0d,0x62ec,0x630d,0x5aed,0x5acc,0x5acc,0x62cc,0x5acc,0x62ed,0x62ed,0x62ec,0x630d,0x62ed,0x632d,0x6b2e,0x6b0e,0x632d,0x634e,0x6b0d,0x630d,0x630d,0x62ec,0x6b0d,0x630e,0x630d,0x6b2d,0x632d,0x5b4d,0x632d,0x7b6f,0x736f,0x6b8f,0x738f,0x7baf,0x73af,0x7b8f,0x7b6f,0x7bd0,0x83f1,0x7bd0,0x7bd0,0x7c11,0x7c11,0x8432,0x8c52,0x8431,0x9473,0x9c93,0x9473,0x8c73,0x9494,0x94d4,0x9cb4,0xa4f5,0x9cf4,0x9cd4,0x9d34,0xa4f5,0xa515,0xa515,0x9cf4,0xa515,0xad56,0x9d56,0xa536,0xa535,0xad76,0xbdd8,0xb5d8,0xb5b7,0xb5b7,0xb5b7,0xbdd9,0xb5d8,0xadd8,0xb5f8,0xbe39,0xbdf9,0xb5f9,0xbe19,0xce5a,0xc639,0xc65a,0xc639,0xbe39,0xbe39,0xbe18,0xce5a,0xce5a,0xce59,0xc659,0xce59,0xce7a,0xc659,0xce5a,0xc639,0xc639,0xc639,0xce5a,0xce5a,0xce59,0xc639,0xc619,0xce59,0xce7a,0xc639,0xc618,0xc619,0xce39,0xc619,0xbe18,0xc5f9,0xc639,0xbe39,0xbe19,0xc618,0xc618,0xb5d8,0xc619,0xbdb7,0xbdb8,0xbdf8,0xbdd8,0xb598,0xb5d8,0xb5f8,0xad97,0xad97,0xad77,0xad76,0xad56,0xad76,0xad56,0xad56,0xad77,0xa556,0xad36,0xa515,0xa515,0xad56,0xad96,0xad76,0xad77,0xad77,0xa535,0xa515,0xa536,0xad77,0xad76,0xa555,0xad15,0xb576,0xad76,0xad76,0xb5b7,0xadd7,0xadb7,0xad76,0xad76,0xadb7,0xadb6,0xad56,0xad97,0xb5d9,0xbdd8,0xb5f8,0xb576,0xc5d8,0xbdb7,0xbdb7,0xadb7,0xad97,0xb5b7,0xb597,0xbdf8,0xbdd8,0xad77,0xadb7,0xad97,0xb577,0xa556,0xad55,0xb5d8,0xb5d7,0xad96,0xad76,0xb5b7,0xb5b7,0xb597,0xb5d7,0xb5b7,0xadb7,0xad97,0xadd7,0xbdf8,0xb5d7,0xbdf8,0xbdf8,0xb5d8,0xb5f8,0xb619,0xb5f8,0xb5d7,0xb5d8,0xb5d8,0xb5d8,0xbdf8,0xbdf9,0xadf7,0xbe17,0xb5d7,0xb5d7,0xb5b7,0xb5d7,0xadd7,0xadb7,0xadd7,0xadd7,0xadb7,0xadb6,0xad96,0xb5d7,0xb5d7,0xadb7,0xb5f7,0xbdd7,0xb596,0xad96,0xad76,0xa596,0xad96,0xad76,0xad96,0xa596,0x9d55,0x9d54,0xadb5,0xad75,0xa555,0xa554,0xa554,0xad54,0x9d14,0x9d55,0x9575,0x9db5,0x9d75,0xa554,0x9d14,0x9cf3,0x94f4,0x94f4,0xa514,0x9d34,0x9513,0x9514,0x94d3,0x94d3,0x9d34,0x8cf3,0x8cd3,0x9514,0x8c92,0x52cc,0x18a4,0x10a2,0x10c3,0x18c3,0x20e3,0x2104,0x18e3,0x31c4,0x4a47,0x5269,0x5269,0x5a89,0x4a07,0xad74, +0xad94,0xad74,0xc6fa,0x4aca,0x4a88,0x5289,0x5288,0x5267,0x39e6,0x39c5,0x31e7,0x31c7,0x31c7,0x39c7,0x29a7,0x2987,0x8c50,0xc699,0xd73c,0xd73c,0xd75c,0xd73b,0xdf3c,0xdf3c,0xe75c,0xe77c,0xdf9d,0xdf5c,0xdf5c,0xe77c,0xdf9d,0xe79d,0xe77e,0xe77d,0xe77d,0xe79d,0xefbe,0xe79d,0xefbd,0xefde,0xefde,0xef9e,0xe7de,0xe7dd,0xeffe,0xefff,0xeffe,0xf7fe,0xf7ff,0xefff,0xf7ff,0xffff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xefff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7fe,0xf7ff,0xf7df,0xefdf,0xefdf,0xf7df,0xf7de,0xf7de,0xefde,0xf7de,0xf7de,0xf7de,0xf7df,0xefde,0xefde,0xefdf,0xefdf,0xefbe,0xefbe,0xf7de,0xf7de,0xefbe,0xefde,0xf7be,0xefbd,0xef9d,0xf79e,0xf7bd,0xf7be,0xefbd,0xef9d,0xef9d,0xe79d,0xef9d,0xef9d,0xe77d,0xe77c,0xef7d,0xdf5c,0xdf1b,0xdf3c,0xdf3c,0xdf1b,0xe73c,0xdf1b,0xdefb,0xdf1b,0xdedb,0xd6fa,0xd6fa,0xd6da,0xd6db,0xbe58,0xce9a,0xd69a,0xc679,0xce99,0xce79,0xceda,0xd6da,0xd6b9,0xceba,0xd6b9,0xce99,0xce99,0xceb9,0xce79,0xd6da,0xd6fa,0xce99,0xc699,0xceba,0xceb9,0xc699,0xc678,0xceba,0xce99,0xce9a,0xce99,0xce99,0xce99,0xc678,0xceba,0xce9a,0xc699,0xc699,0xd6db,0xd6ba,0xd6ba,0xceba,0xc699,0xceda,0xceda,0xd6da,0xce99,0xc679,0xce9a,0xc699,0xc699,0xceb9,0xd6d9,0xdefa,0xd6fa,0xdf1b,0xdf1c,0xd6fb,0xd6fb,0xceba,0xc679,0xc699,0xce99,0xd6ba,0xce79,0xc658,0xbe38,0xb637,0xadb6,0xb617,0xc678,0xce99,0xc699,0xc679,0xc658,0xbe38,0xae37,0xb657,0xb616,0xb616,0xadb6,0xb5d7,0xa5b5,0xadb6,0xadb5,0xad95,0xadb5,0xa595,0xa554,0xa595,0xa574,0xa554,0x9d54,0x9513,0x9d12,0xa533,0xa533,0x9cf3,0x8cb1,0x94f2,0x8cd2,0x9513,0x94f3,0x94d3,0x8472,0x94f2,0xa553,0x94d1,0x8cb2,0x9513,0x94b1,0x7c0f,0x8451,0x94b1,0x842e,0x7c50,0x7c30,0x7c0f,0x73ee,0x73ee,0x638c,0x636c,0x6b8d,0x634b,0x634c,0x530b,0x530b,0x5b0b,0x532b,0x530b,0x52aa,0x4a89,0x4249,0x4269,0x4a88,0x4a68,0x4a89,0x4247,0x4248,0x4227,0x4207,0x39e7,0x29c6,0x29a7,0x3269,0x3a28,0x29c6,0x2965,0x21a6,0x31c6,0x3185,0x2985,0x2164,0x2985,0x2986,0x2145,0x2124,0x2124,0x18e3,0x1924,0x1904,0x1903,0x1903,0x18e3,0x10c3,0x18c3,0x18c3,0x18c3,0x20e4,0x18e3,0x10a2,0x2104,0x2104,0x1903,0x2124,0x18e3,0x10c3,0x18e3,0x10e3,0x10c2,0x10e2,0x1103,0x10e3,0x10c4,0x10a3,0x18e3,0x10c3,0x0862,0x0061,0x08c2,0x10c2,0x18a2,0x18e3,0x2103,0x28e3,0x18c3,0x31a5,0x4247,0x4a69,0x5269,0x5269,0x4227,0xa553, +0xad94,0xad74,0xbed9,0x4aca,0x4aa8,0x52a9,0x4a88,0x5288,0x41e7,0x3165,0x39e7,0x3207,0x31e6,0x39c7,0x31a7,0x2966,0x2965,0x3185,0x31e7,0x31e7,0x3208,0x3a49,0x3209,0x3208,0x3a08,0x39e8,0x39e8,0x39e8,0x31e7,0x3a07,0x4208,0x3a08,0x4228,0x4229,0x4228,0x3a48,0x3a27,0x3a27,0x4227,0x4228,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4a28,0x4248,0x3a48,0x3a28,0x4248,0x4248,0x39e7,0x39e7,0x3a08,0x39e7,0x3a07,0x4207,0x41c6,0x39e6,0x3a07,0x39e8,0x41e8,0x39e7,0x3a07,0x4228,0x3a28,0x3a08,0x39e7,0x3a07,0x3a07,0x39e7,0x4208,0x4208,0x3a27,0x4228,0x31c7,0x31a7,0x31c8,0x39e7,0x39e8,0x3a08,0x3a08,0x3a08,0x3a09,0x39e7,0x4a48,0x4228,0x4228,0x4229,0x31e8,0x3207,0x4208,0x4a28,0x4229,0x3a08,0x39c8,0x39c7,0x31e7,0x3208,0x4208,0x4249,0x39e7,0x39c7,0x41e8,0x41c7,0x39e8,0x39e7,0x3a29,0x4208,0x3a08,0x39e8,0x4208,0x4249,0x4228,0x3a28,0x4228,0x4228,0x4228,0x4a28,0x41e8,0x39e8,0x3a09,0x4229,0x4a29,0x41e9,0x39c7,0x4228,0x4a29,0x4a08,0x4208,0x4269,0x4a49,0x3a08,0x4228,0x4249,0x4249,0x4a49,0x4a29,0x4229,0x4208,0x4208,0x4249,0x4229,0x4228,0x39e7,0x4208,0x4208,0x4207,0x3a28,0x4a29,0x4a09,0x39a7,0x31c7,0x39e7,0x3a28,0x39e8,0x31c7,0x3a09,0x41e8,0x39a7,0x41c8,0x39e8,0x4228,0x39e8,0x39c7,0x39c7,0x31a6,0x3986,0x3186,0x31a6,0x31a7,0x3186,0x3166,0x31a7,0x2987,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x31c7,0x2986,0x3186,0x29a6,0x31a7,0x31c6,0x2985,0x29a6,0x31c6,0x2986,0x2986,0x2985,0x2145,0x2986,0x3186,0x3184,0x2965,0x2966,0x2966,0x2145,0x3125,0x2924,0x2945,0x3145,0x2104,0x2124,0x1944,0x2124,0x2104,0x20c4,0x28e4,0x2924,0x2103,0x2904,0x2104,0x1904,0x2124,0x2124,0x28e4,0x18e4,0x10c3,0x18e3,0x20e3,0x1103,0x18c3,0x2104,0x18e4,0x10c3,0x2104,0x18e4,0x18c3,0x2904,0x18c3,0x20e4,0x10e4,0x10e4,0x1903,0x10e3,0x10c3,0x18e3,0x10a2,0x10c2,0x10c2,0x10e3,0x10c3,0x08a2,0x10e3,0x18c3,0x18c2,0x18c3,0x10e3,0x10c3,0x18c3,0x10e3,0x10c3,0x10a3,0x18a3,0x08c3,0x10c3,0x18c3,0x10c3,0x18a3,0x20a2,0x18c2,0x10a3,0x08a3,0x00a3,0x08a3,0x08c3,0x08a3,0x08c3,0x10a2,0x10a3,0x10a2,0x1882,0x10a3,0x1083,0x08a2,0x08a2,0x08a3,0x08a3,0x10a3,0x10a2,0x10a1,0x1081,0x0882,0x10a2,0x1882,0x1882,0x1862,0x18a2,0x08a2,0x10a2,0x18a2,0x10a2,0x00a2,0x08a2,0x0881,0x0882,0x10a2,0x08a2,0x00a2,0x0862,0x0862,0x1062,0x2082,0x1082,0x00a2,0x08a2,0x10e3,0x1904,0x2104,0x1924,0x2984,0x4a67,0x4a68,0x4a88,0x4a69,0x4a47,0xa554, +0xad94,0xad74,0xbefa,0x42eb,0x4a88,0x52a8,0x5288,0x4a68,0x39c7,0x3185,0x3a07,0x31e7,0x29c6,0x31c7,0x29e7,0x29a7,0x3987,0x39a7,0x39a7,0x31a7,0x3166,0x3966,0x29a7,0x2985,0x2985,0x2986,0x2986,0x29c6,0x29c6,0x31c6,0x31c7,0x29a6,0x31a7,0x39a7,0x39c6,0x39c7,0x39c7,0x31a6,0x31a6,0x39c7,0x31e7,0x3207,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x39e8,0x3228,0x31e7,0x3a07,0x4208,0x39e8,0x41e8,0x3a08,0x3a07,0x39e7,0x4a09,0x4208,0x4209,0x39e9,0x4228,0x3a28,0x3a08,0x4229,0x3a29,0x3a28,0x4228,0x3a08,0x4249,0x3a49,0x4229,0x4249,0x4268,0x4a49,0x4a4a,0x426b,0x4269,0x4269,0x4a89,0x4a69,0x526a,0x528a,0x4a8a,0x528a,0x52ab,0x52cb,0x4aaa,0x528a,0x528a,0x52cb,0x528a,0x52ab,0x52ab,0x52ab,0x52aa,0x52cb,0x4aab,0x4aab,0x52cb,0x4a8a,0x52ab,0x5aaa,0x4a8b,0x4aaa,0x4aab,0x52aa,0x52ab,0x5acb,0x52cb,0x4acb,0x52cc,0x4aab,0x4aab,0x4acb,0x4aab,0x52aa,0x52ca,0x52cb,0x528b,0x528a,0x52ab,0x52ab,0x52aa,0x528b,0x52ab,0x5acc,0x52ab,0x526a,0x528a,0x4a8a,0x4aaa,0x428a,0x4a8b,0x4a6a,0x4a6a,0x528b,0x528a,0x4a8a,0x4a6b,0x4a8b,0x52ab,0x4acb,0x4aab,0x4a8a,0x4a8a,0x4249,0x4a8a,0x4a6a,0x426a,0x4a8a,0x4a49,0x4a8a,0x4a4a,0x4249,0x4a4a,0x4249,0x4a29,0x4208,0x4a49,0x4229,0x4229,0x4229,0x4249,0x4228,0x4a28,0x4248,0x3a29,0x4209,0x4a28,0x4a29,0x4229,0x4229,0x4229,0x4229,0x4229,0x3a29,0x3a08,0x3a29,0x3208,0x3a08,0x3a08,0x3a08,0x31e7,0x31c8,0x31e7,0x3a08,0x3a08,0x3a07,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3186,0x39c7,0x39c7,0x39c7,0x39e8,0x39e7,0x39e7,0x39e7,0x31c7,0x39a7,0x31a6,0x31c7,0x29a6,0x31a7,0x2987,0x3186,0x3186,0x31a6,0x3165,0x2965,0x3166,0x3166,0x2166,0x2965,0x3166,0x2166,0x2145,0x2965,0x2965,0x2945,0x3146,0x2965,0x2945,0x2945,0x2945,0x2945,0x2125,0x2144,0x2144,0x2944,0x2145,0x2146,0x2145,0x1105,0x2124,0x2124,0x1904,0x0945,0x1924,0x2105,0x2105,0x1905,0x1905,0x1924,0x1904,0x1104,0x1124,0x1904,0x1904,0x20e3,0x2104,0x1904,0x10c4,0x18e4,0x10e3,0x18e4,0x18e4,0x10e3,0x1904,0x08c3,0x10c3,0x18c3,0x10e3,0x18e4,0x18c4,0x18a4,0x20c4,0x18c3,0x08c3,0x10c3,0x18c2,0x08a3,0x10a3,0x18c2,0x10a3,0x10c4,0x08a3,0x10c3,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10a3,0x00c3,0x1082,0x18a3,0x08c2,0x18a2,0x18c2,0x10a2,0x08a2,0x18a2,0x10a1,0x08a2,0x18a2,0x18c2,0x10c2,0x0863,0x10a2,0x1081,0x1882,0x10a2,0x0881,0x10c3,0x18c3,0x18e3,0x18e3,0x08c2,0x3185,0x5247,0x4a67,0x4a68,0x5269,0x4a46,0x9d74, +0xad95,0xb595,0xbeda,0x3aeb,0x5268,0x52a8,0x5288,0x5288,0x39e7,0x29e7,0x31c7,0x39c8,0x39e8,0x31a7,0x31a7,0x39c6,0x29a6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29a6,0x31a7,0x39a6,0x31a6,0x31c6,0x31c7,0x31c7,0x31a6,0x39c7,0x39c6,0x31c7,0x31c7,0x31c7,0x31e8,0x39c8,0x39e7,0x39e8,0x39e8,0x3207,0x3207,0x39c7,0x39c7,0x31c7,0x3207,0x39c7,0x39e8,0x39c8,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x3a28,0x3a07,0x3a08,0x39e8,0x29c7,0x3a08,0x3a09,0x39e8,0x4228,0x4a08,0x3a08,0x3a08,0x4208,0x4208,0x4229,0x4229,0x4229,0x4a49,0x4249,0x4248,0x4a48,0x4228,0x4a29,0x4269,0x4a69,0x4a49,0x4a69,0x4249,0x426a,0x4269,0x4a6a,0x4a6a,0x4a69,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a8a,0x4a8a,0x428a,0x428a,0x426a,0x4a8a,0x526a,0x3a48,0x528a,0x528a,0x52ab,0x528a,0x528a,0x528a,0x528a,0x4a8b,0x4aab,0x52ab,0x4a8a,0x528a,0x52aa,0x52aa,0x528a,0x428a,0x428a,0x4a8b,0x528a,0x52aa,0x4a8a,0x4a6a,0x426a,0x4aaa,0x52ab,0x4a8a,0x5269,0x5aaa,0x528a,0x4a6a,0x4a6a,0x4a8a,0x5269,0x52aa,0x52ab,0x4a8b,0x4a8b,0x4a6a,0x4a8a,0x526a,0x528b,0x4a4a,0x524a,0x4a8a,0x4249,0x3a6a,0x4a4a,0x4a49,0x3a49,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4289,0x3a69,0x4249,0x4228,0x4249,0x4249,0x4a49,0x4228,0x4229,0x4229,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4208,0x4a09,0x4229,0x3a08,0x3a28,0x3a08,0x4a09,0x4228,0x31e7,0x3208,0x3a08,0x31e7,0x39c8,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x31c6,0x31a7,0x3186,0x39c7,0x31e7,0x39e7,0x31c7,0x39e7,0x31a7,0x39a7,0x31a7,0x31a6,0x39c6,0x31c6,0x3186,0x3186,0x2945,0x3186,0x3166,0x2986,0x2986,0x3146,0x2985,0x3185,0x2965,0x1965,0x2966,0x3165,0x2966,0x2945,0x3166,0x3165,0x3145,0x2145,0x3125,0x3145,0x2125,0x1945,0x1925,0x1945,0x2125,0x1945,0x2144,0x2145,0x2124,0x1904,0x1925,0x1925,0x1924,0x1124,0x1905,0x1904,0x2105,0x2104,0x1104,0x18e4,0x1904,0x1923,0x1904,0x20e4,0x1903,0x2103,0x18e3,0x18e4,0x18e4,0x10e4,0x18e3,0x1903,0x1103,0x10e3,0x10e3,0x10e3,0x0903,0x18e2,0x20e3,0x18e3,0x18c3,0x10e2,0x10c3,0x10c3,0x18c3,0x10e3,0x08c2,0x10c3,0x18a3,0x08e3,0x08c3,0x10c1,0x18a2,0x18c2,0x08a3,0x10a3,0x08c2,0x18a3,0x08c2,0x1083,0x0862,0x0862,0x1862,0x1882,0x1083,0x1083,0x1883,0x1082,0x0863,0x1062,0x10a2,0x10a2,0x10a2,0x08c2,0x08a2,0x08a2,0x08a2,0x0882,0x08a2,0x20c2,0x20e3,0x1903,0x1123,0x3184,0x5247,0x5268,0x5268,0x5248,0x4a27,0xa574, +0xadb5,0xb595,0xbeb9,0x4aca,0x4a88,0x5288,0x4aa8,0x5288,0x31c6,0x31a6,0x39e8,0x39c8,0x31c7,0x31c7,0x2986,0x39a6,0x39c7,0x29c7,0x29a6,0x29a6,0x3186,0x31a7,0x29a7,0x29a7,0x31a7,0x31a7,0x31c7,0x31c6,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31e8,0x31e7,0x31e7,0x39c8,0x31c7,0x31c7,0x41e8,0x31c7,0x31e8,0x39c7,0x39e7,0x3a07,0x3a08,0x31e8,0x3208,0x3a08,0x4208,0x4208,0x41e8,0x4209,0x3a08,0x4208,0x4a08,0x4208,0x4208,0x3a09,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4248,0x3a27,0x4228,0x4229,0x4229,0x3a28,0x4228,0x4a29,0x49e8,0x4208,0x4a49,0x4a49,0x4a48,0x4a49,0x4a69,0x4a69,0x5269,0x528a,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x5269,0x526a,0x4a49,0x526a,0x52aa,0x4a69,0x4a69,0x4a6a,0x4a8a,0x4a69,0x5249,0x5249,0x4a6a,0x526a,0x528a,0x528a,0x528a,0x5aab,0x4a69,0x5269,0x528a,0x52ca,0x4a6a,0x52ab,0x52ca,0x52aa,0x52aa,0x52cb,0x528b,0x528b,0x4aab,0x52aa,0x528b,0x4a6a,0x52ca,0x52cb,0x528a,0x4a8a,0x52ca,0x52aa,0x52aa,0x52a9,0x52aa,0x4a8b,0x528b,0x5aab,0x5aaa,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x4a8a,0x52ab,0x528a,0x4a6a,0x52aa,0x528b,0x5a8b,0x528a,0x4a6a,0x4aab,0x4a8a,0x4a89,0x4a69,0x526b,0x4a6a,0x526a,0x4a69,0x4a89,0x528a,0x528b,0x4a6a,0x4a8a,0x4269,0x4269,0x3a49,0x4a69,0x4a8a,0x4a6a,0x4a28,0x4a29,0x4229,0x4269,0x424a,0x4229,0x4249,0x4a49,0x4208,0x4229,0x4a29,0x4a29,0x3a49,0x4208,0x4a29,0x4249,0x4229,0x4228,0x4249,0x3a29,0x4a09,0x4228,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x39c7,0x39a6,0x39c7,0x39e8,0x39c8,0x31c7,0x39c8,0x39c7,0x39e7,0x31e7,0x39e7,0x31c7,0x39c7,0x39a6,0x2986,0x3986,0x4186,0x3986,0x5186,0x3166,0x3966,0x4187,0x4166,0x5966,0x5186,0x4186,0x3966,0x3166,0x2145,0x3965,0x3945,0x4165,0x5166,0x5166,0x4145,0x3145,0x1945,0x1965,0x2145,0x2926,0x2125,0x2145,0x1926,0x2125,0x2145,0x2125,0x1925,0x2145,0x1924,0x18e4,0x1104,0x1104,0x28e4,0x2104,0x1905,0x1905,0x2104,0x2924,0x1904,0x1904,0x28e4,0x1903,0x18e4,0x1904,0x18e4,0x1905,0x1104,0x1904,0x10e4,0x18e4,0x20e4,0x20c4,0x1904,0x1104,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e4,0x1103,0x10c4,0x18e4,0x10c2,0x10c2,0x10e3,0x08a3,0x18c3,0x28a3,0x30e2,0x30e2,0x20c2,0x10c3,0x20c2,0x28c3,0x28a2,0x1882,0x28a2,0x28a3,0x20a2,0x1882,0x20a2,0x2882,0x28a2,0x18a2,0x28a2,0x30a2,0x20a2,0x1863,0x1882,0x18a3,0x1083,0x08a3,0x08c2,0x10c1,0x10a3,0x10c2,0x18e4,0x2104,0x10e3,0x39a4,0x4247,0x4268,0x5268,0x5268,0x4227,0xa573, +0xb5b5,0xbdd5,0xb699,0x4ac9,0x4a88,0x5a68,0x5aa8,0x52a8,0x29c6,0x31a6,0x3a07,0x3a08,0x31e7,0x31c7,0x31c7,0x31c6,0x39c6,0x31c6,0x29c7,0x29c6,0x31a7,0x2967,0x39a6,0x29a7,0x29a7,0x29a6,0x3186,0x31a7,0x29c7,0x29c6,0x29c6,0x31a6,0x31c7,0x29c7,0x31c6,0x31e7,0x39e7,0x29a7,0x31c7,0x2966,0x29c8,0x31c7,0x39c7,0x39e8,0x39e7,0x39e8,0x31e7,0x39c8,0x39e8,0x31e7,0x31e8,0x31c8,0x31c7,0x3a08,0x39e8,0x3a08,0x41e8,0x3a08,0x3a08,0x3a08,0x3a09,0x3a08,0x4208,0x3a07,0x41e8,0x39a7,0x4229,0x31e8,0x3208,0x4228,0x3a27,0x3a29,0x5228,0x7269,0x7249,0x5a6a,0x6249,0x5229,0x5249,0x626a,0x5249,0x728a,0x5a8a,0x5a89,0x72cb,0x526a,0x726a,0x728a,0x728a,0x5a69,0x726a,0x828a,0x7a8a,0x628a,0x6a8a,0x5269,0x626a,0x82aa,0x828a,0x6a89,0x5a6a,0x8aab,0x6a6a,0x6249,0x72aa,0x526a,0x528b,0x4a4a,0x422a,0x422a,0x4a29,0x4a29,0x5aaa,0x528a,0x4a6a,0x4a0a,0x4209,0x4209,0x4a0a,0x4209,0x422a,0x4a6b,0x4a2a,0x4209,0x4a4a,0x4a6b,0x4209,0x4a29,0x4a2a,0x4a2a,0x422a,0x420a,0x39c8,0x4209,0x4209,0x3a0a,0x39e9,0x31c9,0x31e9,0x3a09,0x4209,0x422a,0x4209,0x4209,0x4209,0x4229,0x3a09,0x39e8,0x39e9,0x39e9,0x39e9,0x39e9,0x39c8,0x31c8,0x39c8,0x39c7,0x4208,0x31c8,0x3167,0x3187,0x3987,0x39a7,0x29c7,0x39e8,0x39c8,0x3987,0x39a8,0x3187,0x3187,0x3187,0x3187,0x3187,0x2966,0x3187,0x3167,0x3167,0x3167,0x2946,0x2987,0x3188,0x3187,0x2966,0x3166,0x3187,0x3166,0x2946,0x2145,0x2966,0x3147,0x2966,0x2946,0x2947,0x2147,0x2946,0x3147,0x2967,0x2967,0x31a7,0x31c8,0x3187,0x2946,0x3186,0x2966,0x2946,0x2126,0x2967,0x2947,0x3146,0x49a6,0x5966,0x3986,0x71a7,0x49a6,0x4965,0x4166,0x5967,0x5966,0x4965,0x61a6,0x4125,0x4986,0x2945,0x5165,0x4186,0x3145,0x5166,0x4966,0x3145,0x3146,0x1905,0x18c5,0x20e4,0x20c4,0x18c4,0x10c4,0x10a4,0x10a4,0x10a4,0x10c4,0x10c4,0x10a3,0x1083,0x1883,0x18a3,0x18c4,0x18a4,0x18a3,0x1083,0x1083,0x1083,0x18a3,0x18c4,0x1083,0x2083,0x18a3,0x18a4,0x1082,0x1083,0x1883,0x1083,0x10a3,0x10a3,0x1083,0x1882,0x1862,0x1083,0x0862,0x1082,0x1883,0x0862,0x1063,0x1062,0x0862,0x0862,0x1063,0x0863,0x1063,0x18c3,0x10c3,0x10c3,0x18c2,0x30e2,0x48e3,0x38c3,0x38e3,0x20a2,0x40c2,0x30a3,0x20c3,0x2082,0x40a3,0x30a2,0x28a3,0x1082,0x30c2,0x38a2,0x28a2,0x1883,0x30a2,0x40a2,0x3063,0x18a3,0x08a3,0x1062,0x0841,0x1083,0x10a2,0x10a3,0x10a3,0x08e3,0x0903,0x1104,0x10e3,0x3185,0x4247,0x4a68,0x5268,0x5289,0x4a48,0xa573, +0xad95,0xb595,0xb699,0x4a8a,0x5288,0x5267,0x5288,0x5288,0x39c6,0x31a7,0x31e7,0x31e8,0x39c7,0x31c7,0x29c7,0x31c7,0x3167,0x3167,0x41e9,0x39e8,0x39c8,0x4209,0x4a09,0x4209,0x424a,0x4a4a,0x4a4a,0x526a,0x526b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x528b,0x526b,0x524a,0x4a4b,0x422a,0x4a4b,0x528b,0x424b,0x424a,0x4a4a,0x4a6b,0x4a6a,0x526a,0x526a,0x528c,0x528c,0x52ac,0x52ac,0x5aed,0x630d,0x5b0d,0x5aed,0x6b2e,0x7390,0x6b6e,0x6b6e,0x734f,0x6b4f,0x7390,0x738f,0x8411,0x8411,0x8c52,0x8c93,0x8c94,0x8c93,0x94f5,0x52ed,0x4a69,0x6228,0x7a09,0x6249,0x5229,0x7249,0x5a28,0x5248,0x826a,0x5249,0x8a8a,0x8a8a,0x6a28,0x728a,0x6a89,0x828a,0x524a,0x6249,0x526a,0x528a,0x828a,0x5a49,0x526a,0x828b,0x5a4a,0x8a8a,0x5aab,0x5a6a,0x826a,0x5a29,0x92ab,0x828b,0x828a,0x7aab,0x52ab,0x39e8,0xad35,0xdefc,0xd6bb,0xd6bb,0xd6db,0xd6db,0xd6db,0xd6bb,0xdedb,0xdf1c,0xdf1c,0xdefc,0xdf1c,0xe73d,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xe71c,0xe73c,0xe73c,0xef5d,0xe75d,0xe73d,0xe75d,0xef3d,0xef5d,0xef7d,0xef7e,0xef7d,0xef5d,0xe75d,0xef7d,0xef7e,0xef7e,0xef7e,0xe75d,0xef9e,0xef9e,0xe77d,0xef5d,0xef9e,0xf79e,0xf77e,0xef7d,0xef9e,0xef9e,0xef9e,0xf79e,0xef7e,0xe79e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xe77d,0xef7e,0xef9e,0xef9e,0xe79d,0xef9e,0xef9e,0xf79e,0xf7be,0xef9e,0xef9e,0xf79e,0xef9e,0xe75d,0xef9e,0xef9e,0xef7e,0xef7e,0xe77d,0xdf7d,0xe77d,0xe77e,0xe79e,0xe77e,0xe77d,0xef9d,0xef9e,0xef9e,0xef7d,0xef9d,0xefbe,0xe79d,0xf7de,0xf7be,0xefbd,0xefbd,0xef9d,0xef7d,0xef5d,0xef7e,0x39e9,0x49a6,0x61c6,0x4986,0x61c6,0x5985,0x6166,0x4946,0x5185,0x71a6,0x6186,0x4986,0x4945,0x5185,0x3145,0x5145,0x4165,0x3966,0x5945,0x4945,0x2925,0x2945,0x4a48,0xdf1b,0xc699,0xc6da,0xceba,0xce9a,0xc699,0xc679,0xc638,0xbe59,0xbe7a,0xcefb,0xc69a,0xc638,0xbe38,0xbe58,0xbe17,0xbe38,0xb5f7,0xbe17,0xbe18,0xbe18,0xb617,0xadb6,0xb5d7,0xb617,0xadd7,0xb5b6,0xb5b6,0xadb7,0xb618,0xbdf8,0xb5d7,0xadb6,0xbdf6,0xb5f6,0xadb6,0xa5d6,0xa575,0xb5b6,0xa595,0xad75,0xad95,0xad96,0xad75,0xadb6,0xb5b7,0x9452,0x10a2,0x20c3,0x18c2,0x10c3,0x28a3,0x50c3,0x40c2,0x38e3,0x18c3,0x48c4,0x40a3,0x28c2,0x18a2,0x40a3,0x38c3,0x28a3,0x18a2,0x38c2,0x38a2,0x30c2,0x18a2,0x10a2,0x38a2,0x1882,0x0863,0x1082,0x8471,0x8492,0x8432,0x10a4,0x0861,0x08a4,0x10c3,0x1904,0x2105,0x10e3,0x29a5,0x4247,0x5268,0x4a68,0x4a69,0x4a27,0x9d73, +0xadb5,0xb595,0xbeba,0x4289,0x5288,0x52a8,0x52a8,0x4a88,0x41e7,0x3186,0x3207,0x3208,0x31e7,0x31e7,0x29a7,0x3187,0x9432,0xdefc,0xdf7d,0xe75d,0xef7d,0xefbd,0xefbf,0xdf9d,0xe79e,0xdf7d,0xe7be,0xf7de,0xefde,0xe7be,0xefde,0xe7bd,0xe7be,0xf7ff,0xf7ff,0xf7ff,0xefdf,0xefde,0xeffe,0xf7ff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7df,0xf7fe,0xefde,0xefbe,0xefde,0xf7ff,0x8d14,0x4a28,0x6208,0x8a29,0x7a48,0x5a49,0x7a49,0x5a69,0x5269,0x8a6a,0x5a69,0x8a89,0x8a8a,0x82aa,0x7a8a,0x7269,0x72aa,0x524a,0x4a6a,0x5249,0x526a,0x826a,0x5a49,0x528a,0x8a6a,0x6249,0x8aaa,0x5289,0x5a8a,0x8a8a,0x6a6a,0x82ab,0x828a,0x8a6a,0x72cb,0x52cb,0x4208,0xbdd6,0xce99,0xce99,0xc699,0xc679,0xc699,0xc658,0xc658,0xbe38,0xbe18,0xb617,0xbe38,0xbe38,0xbe17,0xbe17,0xbe38,0xb5f6,0xbdf6,0xbe17,0xb5d6,0xbdf6,0xb5f7,0xadd6,0xadb5,0xb5b5,0xb5f6,0xadb6,0xb5b6,0xa574,0xad95,0xb595,0xad75,0xa534,0xa554,0xa575,0x9d54,0x9d33,0x9d33,0xad54,0x9d14,0x9d34,0x8cd2,0x94b2,0x94d2,0x94f3,0x94f2,0x94d2,0x94b2,0x9491,0x94b1,0x8470,0x94b2,0x9492,0x94d3,0x8cb2,0x8cb2,0x94d3,0x8c51,0x8cb2,0x8c91,0x8cb1,0x8c91,0x8c72,0x8c71,0x8450,0x8c50,0x8c50,0x8430,0x8410,0x8c91,0x8c92,0x8c30,0x8450,0x8471,0x8430,0x842f,0x842f,0x7c2f,0x8c50,0x844f,0x840f,0x7bef,0x73ef,0x7bcf,0x7bee,0x73ce,0x73ce,0x6bae,0x6b8d,0x6b4c,0x632c,0x634c,0x6b8d,0x6bad,0x5b4c,0x634d,0x632c,0x5b4c,0x5b2c,0x6b8e,0x3187,0x4967,0x61a6,0x4986,0x5987,0x5146,0x6986,0x5986,0x5186,0x59a6,0x4166,0x2986,0x4985,0x4965,0x3924,0x5945,0x4166,0x2945,0x5986,0x4966,0x2124,0x2165,0x2124,0x62ca,0x4a89,0x4aca,0x5aea,0x52aa,0x5b0b,0x52eb,0x4aaa,0x4aaa,0x4a8a,0x52aa,0x528a,0x528a,0x4a8a,0x4269,0x4a89,0x4a8a,0x52aa,0x52aa,0x528a,0x4a69,0x4268,0x4a89,0x4268,0x4a68,0x52a9,0x4a89,0x4a69,0x4228,0x4228,0x4207,0x4208,0x4228,0x4248,0x4248,0x3a48,0x31c7,0x3a08,0x3a07,0x39e7,0x31c7,0x39e7,0x3207,0x29c6,0x31e7,0x39e7,0x2986,0x18c3,0x18c2,0x18c3,0x18c3,0x30a3,0x4903,0x28a1,0x40e3,0x18a3,0x48a3,0x30c2,0x20c2,0x10a2,0x20a2,0x20c2,0x40c3,0x2882,0x38a2,0x28a2,0x20c2,0x10a1,0x10c2,0x4082,0x1862,0x1063,0x0882,0x39e7,0x3a28,0x6bcf,0x7c31,0x18a3,0x18a3,0x18c3,0x18c4,0x20e4,0x18c3,0x31a5,0x4a47,0x5247,0x4a88,0x4a68,0x4a68,0x9552, +0xb5d5,0xbdb5,0xb6d9,0x4289,0x5288,0x5288,0x5288,0x4a88,0x3a26,0x31a6,0x39e8,0x31e8,0x31e8,0x39c8,0x3187,0xacf4,0xcefb,0x74d2,0x3207,0x3a07,0x3a07,0x39e6,0x39c6,0x31a6,0x31a6,0x3186,0x31a6,0x39c6,0x31a6,0x31c7,0x39c6,0x31a5,0x3a07,0x31c7,0x31c6,0x31a6,0x39c6,0x39c6,0x31c6,0x39c6,0x31a6,0x29a6,0x39e6,0x39e6,0x31c6,0x31a6,0x3186,0x31a5,0x39c7,0x39a6,0x41e8,0x2987,0x31a6,0x39a6,0x31c6,0x29a5,0x31a6,0x31a7,0x31a7,0x2987,0x29a7,0x29a6,0x29a6,0x31c7,0x3186,0x2945,0x3186,0x31c7,0x29a6,0x31a6,0x39e8,0x4a48,0x6a08,0x7228,0x5248,0x4a68,0x7a49,0x626a,0x5a49,0x726a,0x5a6a,0x7a8a,0x6269,0x928a,0x82aa,0x6a6a,0x828a,0x6a6a,0x6a8a,0x5a8a,0x526a,0x7a8a,0x5a8a,0x5a8a,0x82aa,0x5a6a,0x828a,0x6aaa,0x72aa,0x82aa,0x628a,0x7aab,0x626a,0x9acc,0x7aec,0x52ca,0x52ab,0x4269,0x3a28,0x39e8,0x4228,0x41e8,0x41e8,0x4a09,0x4229,0x3a29,0x4248,0x4208,0x4a08,0x4228,0x4a29,0x4a29,0x3a08,0x4a29,0x4a69,0x4208,0x4209,0x4a28,0x4a69,0x4a89,0x4a69,0x526a,0x4208,0x4249,0x4249,0x4a49,0x4a29,0x4a49,0x4a49,0x4a49,0x4a49,0x526a,0x4229,0x4a49,0x4249,0x4a49,0x4229,0x4a2a,0x4a4a,0x4a8a,0x4a6a,0x4229,0x4a6a,0x4a4a,0x4a49,0x5289,0x4a49,0x4208,0x4a4a,0x4a29,0x4209,0x4228,0x4249,0x4209,0x420a,0x31e8,0x4228,0x4249,0x3a08,0x39c8,0x4228,0x4209,0x4229,0x4208,0x3a09,0x4209,0x3a29,0x3a29,0x41e8,0x49e8,0x41e7,0x31e8,0x3a09,0x4208,0x31c7,0x31a7,0x3a28,0x4228,0x31a7,0x31c7,0x31c8,0x39e8,0x39e8,0x3a08,0x31e8,0x31c7,0x39a7,0x3186,0x39a6,0x39c7,0x39c7,0x39a7,0x39c7,0x3187,0x31e7,0x3187,0x2966,0x29c6,0x3986,0x49a7,0x4187,0x51a7,0x3125,0x59c6,0x49a6,0x4166,0x4966,0x2966,0x2186,0x3165,0x5165,0x6966,0x5987,0x2946,0x2967,0x4986,0x3166,0x2165,0x3145,0x2145,0x2966,0x2166,0x2145,0x3146,0x2125,0x2104,0x1944,0x1124,0x1125,0x1925,0x1924,0x1905,0x2125,0x1945,0x1124,0x1904,0x20e3,0x2925,0x1905,0x1944,0x1924,0x1943,0x2104,0x1905,0x18e4,0x10e3,0x10c3,0x1904,0x0903,0x18e4,0x1904,0x10e3,0x18e3,0x18c2,0x18c2,0x10e3,0x1904,0x18a4,0x10e3,0x18e2,0x18c3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x10e3,0x18c3,0x10c2,0x10c2,0x20c3,0x30a3,0x38c3,0x20a3,0x38a3,0x18c3,0x38c2,0x30c3,0x28c3,0x1881,0x30e3,0x38c2,0x38a2,0x18a1,0x38a3,0x40a1,0x30a1,0x1861,0x18a2,0x30a2,0x1861,0x1082,0x0862,0x0882,0x08a2,0x1081,0x7430,0x5aac,0x18a2,0x18c3,0x18e3,0x2103,0x18c2,0x39c5,0x4a47,0x5248,0x5268,0x5269,0x4a47,0x9553, +0xb5b5,0xbdb4,0xbeb9,0x4289,0x5288,0x5268,0x5268,0x4a68,0x3a06,0x39a6,0x3a07,0x31e7,0x31c7,0x39c7,0x6249,0xdf1b,0x53d0,0x1965,0x2986,0x3986,0x3186,0x2986,0x31a7,0x31a7,0x31a7,0x31a7,0x29a6,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x39a6,0x39c7,0x31c6,0x39c6,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39a7,0x31a7,0x31e7,0x39c7,0x31c7,0x39e8,0x31e8,0x39e8,0x4208,0x4208,0x39e8,0x4207,0x4228,0x3207,0x3a08,0x4208,0x4229,0x3a09,0x3208,0x3a28,0x3a48,0x4a29,0x4248,0x4228,0x4a29,0x4a29,0x4249,0x3a49,0x4a49,0x4a6a,0x4a49,0x5a08,0x6249,0x4a69,0x3a48,0x5a49,0x7a6a,0x7a69,0x5a29,0x5229,0x62aa,0x5269,0x6a69,0x6a8a,0x526a,0x6a6a,0x7a6a,0x6a8a,0x52aa,0x4a8a,0x62aa,0x528a,0x528a,0x5a6a,0x4a6a,0x5aaa,0x72aa,0x7a8a,0x5aaa,0x52cb,0x62cb,0x526a,0x5aaa,0x62ab,0x52cb,0x5aab,0x52ab,0x52ab,0x52ab,0x52cb,0x5aab,0x5aec,0x52ab,0x5aab,0x5aac,0x52ab,0x52cb,0x5acb,0x528a,0x52ab,0x52cb,0x4acb,0x4aab,0x526a,0x5aab,0x528b,0x52ab,0x52aa,0x52aa,0x5aab,0x4aab,0x4aab,0x52cb,0x52cb,0x4acb,0x4a8a,0x4a8a,0x4aab,0x4a8a,0x528a,0x528b,0x528b,0x428b,0x428a,0x4aaa,0x428a,0x526b,0x528a,0x4a8b,0x526a,0x528a,0x528a,0x526a,0x4a49,0x4249,0x4a89,0x4a8a,0x4a6a,0x426a,0x424a,0x426a,0x426a,0x4249,0x4a6a,0x426a,0x4a49,0x4a69,0x4a6a,0x426a,0x4249,0x3a08,0x3a49,0x4269,0x3a49,0x4229,0x4229,0x4249,0x4229,0x4229,0x3a29,0x3a29,0x3a08,0x39e8,0x41c8,0x41e8,0x39e8,0x39e8,0x39e8,0x3a07,0x4209,0x4208,0x41e8,0x31a6,0x3187,0x3a08,0x39a7,0x39c7,0x31a7,0x39c7,0x39c7,0x39a8,0x39a7,0x31c8,0x31a7,0x29a7,0x31a7,0x31c7,0x39a7,0x3186,0x3986,0x3166,0x3986,0x3145,0x3166,0x3986,0x3986,0x2965,0x2986,0x2985,0x3166,0x3965,0x3186,0x2966,0x2986,0x2965,0x2165,0x2166,0x2146,0x2146,0x2145,0x2145,0x2145,0x1945,0x1945,0x1165,0x1944,0x2124,0x2145,0x2125,0x1925,0x1125,0x1924,0x2124,0x1924,0x2105,0x1904,0x2124,0x1904,0x1904,0x20e5,0x2103,0x2104,0x2104,0x10e4,0x10e4,0x18e3,0x18e3,0x0903,0x18e4,0x18e4,0x10e4,0x18c4,0x10e3,0x10e3,0x10e3,0x10e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e2,0x18e3,0x18c3,0x20c3,0x08e3,0x08c3,0x18c3,0x10a3,0x18c1,0x18c2,0x20c2,0x20c3,0x10c3,0x10c3,0x10a2,0x18a2,0x20c3,0x18c2,0x08c2,0x10a2,0x20a2,0x1882,0x0862,0x18a3,0x18c2,0x1883,0x1883,0x1083,0x0882,0x1062,0x1061,0x0881,0x0082,0x08a2,0x0841,0x5b2b,0x73af,0x1062,0x18c3,0x1903,0x1104,0x18e4,0x21a5,0x4a47,0x4a68,0x4a88,0x5288,0x4247,0x9513, +0xb5b5,0xbdb5,0xbeb9,0x4269,0x5288,0x5a68,0x5288,0x4a67,0x39c6,0x39a6,0x3a08,0x3228,0x39e8,0x31a7,0x83ae,0xcf1c,0x2229,0x39e7,0x39a7,0x39c7,0x29a7,0x31a7,0x29a7,0x31a7,0x39c7,0x39a7,0x31c7,0x31c7,0x31c7,0x39e6,0x31e7,0x39e7,0x29a7,0x31e7,0x31e7,0x39a7,0x39a7,0x39c8,0x41e8,0x4207,0x39e7,0x39e8,0x39e8,0x39e7,0x41e8,0x3a08,0x3a08,0x39c8,0x39e7,0x3a07,0x4227,0x3a07,0x4228,0x3a28,0x3a29,0x4229,0x4208,0x3a28,0x4248,0x4248,0x4248,0x3a28,0x3a28,0x3a28,0x4228,0x424a,0x3a4a,0x3a48,0x4248,0x4a29,0x4228,0x4a4a,0x4a69,0x4a69,0x4a6a,0x4a69,0x4a49,0x4a69,0x4a69,0x4a6a,0x4a6a,0x528b,0x4a8a,0x528a,0x526a,0x526a,0x528a,0x528b,0x4aaa,0x4a8a,0x528b,0x4a8a,0x5acb,0x52cb,0x4a6b,0x4a6a,0x5289,0x4aab,0x4a8a,0x52aa,0x5aaa,0x52a9,0x4aaa,0x52aa,0x52aa,0x52ab,0x52ab,0x528b,0x52ab,0x5aab,0x5aab,0x52ab,0x528a,0x5aaa,0x5acb,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x5aab,0x52ab,0x4aab,0x52ab,0x528a,0x52ab,0x52cb,0x52cb,0x52ab,0x528a,0x4a8a,0x4a8b,0x4a6a,0x528a,0x4a8a,0x52ab,0x528a,0x4a8a,0x4a6a,0x52aa,0x528b,0x528b,0x4a8a,0x42aa,0x4aaa,0x4aab,0x4a8a,0x52aa,0x4a8a,0x524a,0x4a69,0x4a4a,0x4a4a,0x426a,0x4269,0x4a4a,0x4a6a,0x524a,0x4a6a,0x4229,0x4249,0x4a4a,0x4a4a,0x4a69,0x4208,0x4208,0x4229,0x526a,0x4249,0x4229,0x4a4a,0x4249,0x4a49,0x3a69,0x4249,0x3a28,0x39e8,0x39c7,0x4208,0x31e8,0x3208,0x3208,0x4208,0x49e8,0x41e8,0x39e8,0x41e8,0x39c8,0x39c7,0x4207,0x49e7,0x41c7,0x41e7,0x39c7,0x31e7,0x31c7,0x39c7,0x39c7,0x31c6,0x39c7,0x31a7,0x39c7,0x4208,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x31a7,0x39a7,0x3186,0x3987,0x3186,0x3165,0x2986,0x2986,0x3166,0x3186,0x2945,0x3166,0x3145,0x3165,0x2965,0x1965,0x1966,0x1985,0x2145,0x2945,0x2985,0x2944,0x2125,0x2145,0x1945,0x2144,0x1925,0x2165,0x2124,0x1124,0x2124,0x2125,0x2125,0x1125,0x1905,0x1124,0x2125,0x1924,0x1904,0x1903,0x1904,0x18e4,0x28e5,0x1924,0x2904,0x1904,0x1904,0x20e3,0x20e3,0x10e4,0x20e4,0x18e4,0x1904,0x10c4,0x18e4,0x10e3,0x1103,0x18e2,0x1903,0x1903,0x20e2,0x18e3,0x18e2,0x18e3,0x10c3,0x10c4,0x08e3,0x10c3,0x18a3,0x08a4,0x10c2,0x10c3,0x18a3,0x10c3,0x08a2,0x00a2,0x10a3,0x08c2,0x00c3,0x10a3,0x08a2,0x08a2,0x08a2,0x00a3,0x08a2,0x0883,0x1082,0x10a2,0x1083,0x1082,0x10a2,0x08a2,0x08a1,0x0882,0x0862,0x08c2,0x1082,0x4aca,0x7c11,0x0822,0x18a3,0x10c3,0x1904,0x18e3,0x2184,0x4a47,0x4a68,0x5288,0x5288,0x4a88,0x8cf2, +0xb5b5,0xbdb6,0xb698,0x3a49,0x52a8,0x5288,0x5288,0x5288,0x39e6,0x29c5,0x3a07,0x3208,0x39e8,0x2967,0x83ce,0xbeda,0x21e8,0x31c7,0x31a6,0x39a7,0x31c7,0x31c7,0x29c7,0x29c6,0x39c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39e7,0x39c7,0x41a7,0x39c8,0x39e8,0x39e8,0x31c7,0x39c8,0x39e8,0x3a28,0x3a08,0x3a08,0x3208,0x3a08,0x4228,0x3a07,0x39e8,0x29e7,0x3208,0x3a07,0x4228,0x4228,0x39e8,0x39e8,0x4228,0x3a28,0x3a08,0x3a09,0x4248,0x4249,0x4229,0x4249,0x4249,0x4229,0x4a29,0x4a69,0x4269,0x4a49,0x4a69,0x4a6a,0x4a69,0x4a89,0x4a6a,0x424a,0x4a6a,0x4a6a,0x426a,0x4a8a,0x4a8a,0x526a,0x528b,0x4a8b,0x428a,0x4a8a,0x4a8a,0x52aa,0x528a,0x4a8a,0x528b,0x528a,0x528b,0x528b,0x526a,0x4a6a,0x4249,0x52ab,0x52ab,0x528b,0x52ab,0x4a8b,0x4aab,0x428a,0x4a8b,0x528b,0x52cb,0x52aa,0x4acb,0x4aaa,0x528a,0x528b,0x52cb,0x5aec,0x5aab,0x52ab,0x52ab,0x4acb,0x52ab,0x52ca,0x52eb,0x52ca,0x52aa,0x52ab,0x528c,0x4aaa,0x52ab,0x5aab,0x528b,0x528b,0x526a,0x52ab,0x52ca,0x52ab,0x528b,0x52aa,0x52aa,0x528a,0x4a8a,0x528a,0x528b,0x526a,0x528b,0x52ab,0x528b,0x52ab,0x528a,0x4a6a,0x52ab,0x528b,0x424a,0x3a09,0x424a,0x422a,0x4a4a,0x4229,0x4a4a,0x5269,0x4a69,0x4a6a,0x4a49,0x4a4a,0x4a49,0x4a4a,0x4a49,0x4a29,0x4a49,0x4a49,0x3a49,0x4249,0x3a49,0x4249,0x4249,0x4209,0x3a28,0x3a29,0x3a28,0x4229,0x3a29,0x3a09,0x3a09,0x3a08,0x39e8,0x3a08,0x3a08,0x3a07,0x39e8,0x3a08,0x39c8,0x39e8,0x39a6,0x4207,0x31c7,0x39e7,0x39c8,0x39c7,0x41a7,0x31a7,0x31c7,0x39c6,0x31a7,0x3186,0x39a7,0x3987,0x39a7,0x31a6,0x39a6,0x3187,0x3987,0x3187,0x3186,0x3186,0x3186,0x3186,0x2966,0x2966,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2186,0x1965,0x2166,0x2166,0x2945,0x3185,0x2985,0x2965,0x2165,0x1965,0x2145,0x2165,0x2144,0x2145,0x1944,0x1925,0x2145,0x1924,0x2104,0x1104,0x1904,0x1904,0x1104,0x1923,0x1904,0x2103,0x2124,0x2124,0x1904,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x1903,0x18e4,0x18e4,0x1903,0x18e4,0x18e4,0x18e3,0x1102,0x20e3,0x18e3,0x1103,0x18c2,0x20c3,0x10e2,0x10c3,0x10c3,0x18a3,0x10c3,0x10c3,0x18c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18e3,0x10c3,0x10c3,0x08a2,0x1082,0x18c3,0x1882,0x08a2,0x1082,0x10a2,0x08a2,0x0882,0x08a2,0x1882,0x10a1,0x1082,0x0882,0x0882,0x00a1,0x0882,0x1082,0x2081,0x1082,0x0861,0x4268,0x8c31,0x1042,0x18e4,0x10e4,0x18e4,0x18e3,0x3185,0x4227,0x5269,0x4a88,0x52a8,0x4a48,0x9512, +0xb5b5,0xbdd5,0xae98,0x3a49,0x52a8,0x52a8,0x5288,0x5288,0x41e6,0x39a6,0x3a08,0x3a08,0x39e7,0x2966,0x9bef,0xbefa,0x29e8,0x29e6,0x31a6,0x31a6,0x31e7,0x29c6,0x31c7,0x39c7,0x31c7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x31e7,0x31e7,0x31e7,0x39c7,0x31c7,0x31c6,0x39c7,0x39e8,0x39e8,0x41e8,0x39a7,0x4208,0x41e8,0x3207,0x31e8,0x31c7,0x31e7,0x3208,0x4208,0x41e7,0x3a08,0x3208,0x4228,0x3a27,0x3a08,0x3a08,0x39e8,0x3a29,0x4248,0x4228,0x3a08,0x4229,0x4248,0x4248,0x4249,0x4249,0x4a69,0x4269,0x4a49,0x4a69,0x424a,0x4249,0x4a29,0x4269,0x4269,0x4249,0x4289,0x4269,0x4a89,0x428a,0x4a6a,0x4a8a,0x528b,0x4a6a,0x4a8a,0x528a,0x528b,0x526a,0x4a49,0x4a8a,0x4a8a,0x526a,0x52ab,0x52ab,0x528a,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x52ab,0x52ab,0x528a,0x4aab,0x52ab,0x4a8b,0x4a8a,0x52aa,0x52ab,0x52cb,0x52aa,0x52aa,0x4aab,0x52ab,0x52cb,0x5acb,0x5acb,0x52ab,0x52cb,0x5acb,0x52cb,0x5acb,0x528a,0x5acb,0x4aaa,0x52ab,0x5aab,0x5aab,0x52ab,0x52ab,0x528b,0x4a8a,0x52ab,0x52ab,0x4269,0x52cb,0x5aab,0x528b,0x52ab,0x5acb,0x4aab,0x428b,0x528a,0x526a,0x528a,0x5aaa,0x5a8b,0x528a,0x528a,0x52ab,0x528b,0x52aa,0x52aa,0x4acb,0x4a8a,0x4a6b,0x422a,0x4a8a,0x4a69,0x4a6a,0x5249,0x4a69,0x4229,0x4a6a,0x4269,0x4249,0x4249,0x4249,0x4228,0x4a49,0x4a49,0x4a8a,0x4a49,0x4229,0x4228,0x3a29,0x4229,0x4249,0x4249,0x3a29,0x4228,0x41e8,0x4229,0x3a28,0x4208,0x39e7,0x4228,0x3a08,0x39c8,0x3a08,0x3a07,0x3a07,0x41e8,0x39c7,0x39e7,0x31e8,0x31e7,0x39c7,0x31c7,0x39a7,0x31a7,0x39e8,0x39e7,0x39c7,0x31a7,0x39a7,0x39c7,0x39c7,0x31a7,0x39a7,0x3187,0x31a7,0x31a7,0x3186,0x3186,0x29a6,0x3186,0x3187,0x3166,0x3185,0x2986,0x2185,0x2986,0x3165,0x3186,0x2145,0x2966,0x2165,0x2145,0x3145,0x2165,0x2165,0x2125,0x2946,0x2946,0x2145,0x2145,0x2125,0x2145,0x1925,0x2125,0x2124,0x2924,0x2904,0x2124,0x1925,0x2104,0x2104,0x2105,0x20e3,0x1904,0x1904,0x1904,0x2104,0x18e4,0x1903,0x2104,0x1904,0x10e4,0x10e4,0x10e4,0x1904,0x20e3,0x2104,0x10e4,0x18e4,0x18c3,0x20c4,0x18c4,0x18e3,0x18e3,0x18c3,0x18c2,0x10e3,0x10c3,0x10c3,0x10c3,0x10a3,0x10c2,0x18c3,0x18c3,0x10e3,0x18c3,0x18c3,0x1883,0x10a3,0x10c3,0x10c3,0x10c3,0x10a2,0x1082,0x10a2,0x10a2,0x0881,0x1082,0x08a2,0x08a2,0x10a2,0x18a2,0x0862,0x08a1,0x10a2,0x08a1,0x00a2,0x10c2,0x08a2,0x0862,0x4289,0x8c32,0x0842,0x10e3,0x08e3,0x10e4,0x18e3,0x3985,0x4a27,0x5268,0x5288,0x5288,0x5228,0x9512, +0xadb5,0xbdf6,0xb6b9,0x4269,0x4a89,0x4aa8,0x4aa8,0x4268,0x3206,0x31c6,0x3a08,0x4208,0x3a07,0x3166,0x940f,0xbefb,0x21a7,0x31e6,0x29c6,0x31c7,0x39c7,0x31a6,0x39c7,0x39e7,0x3207,0x41e8,0x41e7,0x39c7,0x39e7,0x4207,0x39e7,0x3a08,0x31e7,0x3a08,0x4208,0x4208,0x41e8,0x4228,0x41e7,0x4207,0x39c8,0x31c7,0x3a07,0x41e7,0x39e7,0x31c7,0x31e7,0x39e8,0x3a08,0x4208,0x39e8,0x3a09,0x4228,0x4228,0x4209,0x4229,0x4229,0x4229,0x4228,0x4229,0x3a08,0x4228,0x4a48,0x4249,0x4249,0x4a69,0x5a49,0x526a,0x4a4a,0x4a48,0x4249,0x4249,0x4a29,0x4249,0x4249,0x3a29,0x4a69,0x4249,0x4a6a,0x4a6b,0x4a4a,0x52aa,0x4a49,0x5249,0x4a6a,0x528a,0x5a8b,0x526b,0x526a,0x4a49,0x5269,0x528a,0x52aa,0x528a,0x528a,0x528a,0x5aaa,0x526a,0x528a,0x52ab,0x52cb,0x528a,0x4a8a,0x52aa,0x4a49,0x526a,0x4a8a,0x52aa,0x5acb,0x528a,0x5aaa,0x528a,0x52eb,0x5aeb,0x62ab,0x5a6a,0x5aab,0x5aab,0x5aab,0x5acb,0x52aa,0x528a,0x5aaa,0x52aa,0x52ab,0x52cb,0x5aaa,0x5acb,0x52ab,0x4aab,0x4aaa,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x5acb,0x5aab,0x62ab,0x5acb,0x62cb,0x5aab,0x5acb,0x62cb,0x5a8a,0x62cb,0x62cb,0x5a8a,0x5a6a,0x52aa,0x5a8a,0x5aab,0x62eb,0x5aeb,0x5a8a,0x5a4a,0x5a6a,0x526a,0x4269,0x4a6a,0x4249,0x4a6a,0x4269,0x528a,0x4269,0x4a6a,0x528a,0x5269,0x5269,0x5249,0x5249,0x5a69,0x6229,0x5a09,0x5249,0x5228,0x5249,0x5a49,0x5249,0x5249,0x4a28,0x4a08,0x4a08,0x41e8,0x4a09,0x4a09,0x4a08,0x4209,0x39e7,0x3a09,0x3a08,0x3a07,0x39c7,0x39e7,0x3a08,0x41c8,0x39a6,0x41a6,0x39c7,0x31a7,0x39c7,0x41c7,0x39c6,0x41c6,0x51a7,0x41a7,0x39c7,0x41a6,0x41c7,0x3987,0x3986,0x41a6,0x3166,0x3186,0x31a6,0x31a6,0x3186,0x2945,0x3166,0x3986,0x2986,0x2185,0x2986,0x3145,0x3966,0x2986,0x2945,0x3185,0x3185,0x3966,0x2944,0x3966,0x3946,0x3966,0x3125,0x3165,0x3146,0x3145,0x3165,0x3165,0x3925,0x3945,0x3145,0x3124,0x2924,0x2124,0x1924,0x1924,0x2125,0x1904,0x1104,0x1904,0x2124,0x2924,0x2905,0x2925,0x20c3,0x2904,0x2104,0x2904,0x20e4,0x2124,0x2904,0x30e3,0x2904,0x2904,0x28e3,0x2904,0x30e3,0x28e3,0x2103,0x20e3,0x20c3,0x10c3,0x10c3,0x08c3,0x18c3,0x10c2,0x10c3,0x18c3,0x1082,0x1042,0x0841,0x1041,0x0841,0x0841,0x0842,0x0842,0x0842,0x1042,0x1041,0x1062,0x0862,0x0861,0x0861,0x0841,0x0842,0x0842,0x0841,0x0841,0x1041,0x0862,0x0062,0x08a2,0x18c2,0x10a1,0x0862,0x4288,0x8431,0x0843,0x18e3,0x18e3,0x2104,0x28e3,0x39a5,0x4246,0x5267,0x5288,0x5288,0x5228,0x94f1, +0xb5b5,0xbdb6,0xb698,0x3a68,0x52a8,0x52a8,0x5287,0x4a88,0x39e7,0x39a6,0x4268,0x39e7,0x41c7,0x41a7,0x9c2f,0xbedb,0x11a7,0x31c6,0x31c6,0x31a7,0x31c7,0x51c7,0x61e7,0x61e7,0x59c7,0x61e8,0x61e8,0x61e8,0x6a28,0x6a08,0x61c7,0x69c8,0x69e8,0x6a08,0x69c8,0x61a7,0x61a7,0x59c7,0x61c6,0x69e7,0x69e7,0x61e8,0x49e7,0x3a07,0x3a08,0x3a08,0x31e8,0x3a07,0x31e7,0x5208,0x6a28,0x7229,0x6a08,0x6a29,0x7229,0x7228,0x7208,0x6a08,0x7228,0x7a29,0x7228,0x6a29,0x7249,0x7229,0x7229,0x724a,0x7a6b,0x7a29,0x7a4a,0x7a6a,0x6269,0x524a,0x4a6a,0x424a,0x424a,0x4a69,0x4248,0x5269,0x728a,0x7a6a,0x7a6a,0x828a,0x82aa,0x828a,0x82cb,0x826a,0x824a,0x7a8a,0x82aa,0x828a,0x826a,0x828a,0x7a8a,0x7a6a,0x7a29,0x826a,0x7a8b,0x826a,0x82aa,0x62ab,0x52aa,0x52aa,0x528a,0x528a,0x52aa,0x5aca,0x7acb,0x82ab,0x7a49,0x7a4a,0x7a4a,0x7a69,0x7a8a,0x7a6a,0x828a,0x7a8a,0x7aaa,0x7269,0x724a,0x6a4a,0x726a,0x726a,0x724a,0x7a4a,0x828a,0x7aaa,0x7aab,0x72cc,0x5aaa,0x52cb,0x5acc,0x52ab,0x526a,0x4a6a,0x5249,0x7aca,0x7a49,0x7249,0x7a4a,0x7a4a,0x7a4a,0x7a6b,0x6a29,0x7229,0x824a,0x7229,0x7a4a,0x7a2a,0x720a,0x824a,0x7a29,0x7229,0x7a2a,0x71e9,0x69e9,0x69e8,0x7a4a,0x5a69,0x4269,0x4a6a,0x4a4a,0x4a69,0x4a8a,0x5a69,0x828a,0x7208,0x71e8,0x7208,0x71c7,0x71a7,0x69a7,0x69c8,0x71a8,0x61c8,0x69c8,0x69c8,0x69a7,0x6187,0x6987,0x6167,0x5967,0x5967,0x5987,0x61a7,0x69a8,0x6a08,0x49e8,0x4208,0x3a08,0x3a08,0x39e8,0x39e8,0x5208,0x6208,0x5987,0x5166,0x6167,0x5967,0x5166,0x5146,0x5986,0x5965,0x5966,0x5945,0x6146,0x5946,0x5126,0x5946,0x5145,0x4924,0x4925,0x4905,0x4924,0x5165,0x5987,0x3966,0x2986,0x2966,0x3186,0x3986,0x2986,0x4186,0x5124,0x38e4,0x40a3,0x40a3,0x48c3,0x4083,0x40c4,0x48e4,0x48c4,0x48c4,0x48c4,0x48e4,0x40a3,0x48c4,0x40a3,0x48a3,0x48a3,0x40a3,0x38a3,0x38a3,0x4904,0x4145,0x2125,0x2145,0x1904,0x2124,0x2124,0x20e4,0x4105,0x50e4,0x40a3,0x3883,0x40a3,0x3883,0x3863,0x3883,0x3083,0x4083,0x4083,0x3862,0x3082,0x2882,0x2882,0x3062,0x3042,0x3042,0x3842,0x3042,0x3862,0x4883,0x40e4,0x18c3,0x08e2,0x10c2,0x10c2,0x10c2,0x1061,0x62eb,0x83cf,0x734c,0x6b4c,0x7b8d,0x734d,0x736d,0x7b8d,0x6b2d,0x734d,0x6b4c,0x6b2b,0x736c,0x630c,0x630b,0x62eb,0x5a6a,0x626a,0x628a,0x62a9,0x62eb,0x83f0,0x4209,0x0862,0x10c2,0x10a3,0x1061,0x4268,0x8c72,0x0863,0x10e2,0x18e3,0x20e3,0x18c3,0x2984,0x4246,0x5268,0x4a68,0x5289,0x5248,0x94d0, +0xb5b6,0xc5d6,0xb699,0x3a68,0x4a88,0x52a9,0x52a8,0x4a68,0x31c6,0x31c6,0x3a07,0x31e7,0x39c7,0x3966,0x9c71,0xb6db,0x21a8,0x31c6,0x39c7,0x31e7,0x61e8,0x61e8,0x6a29,0x72ab,0x72cc,0x628b,0x626b,0x6aac,0x6acb,0x6acb,0x730c,0x730d,0x7b0d,0x832e,0x834e,0x834e,0x836f,0x8bcf,0x8b8e,0x836f,0x836e,0x7acc,0x6a09,0x49e7,0x39e7,0x39c7,0x39e8,0x41e7,0x51c7,0x71e8,0x7aab,0x732e,0x7b2e,0x834e,0x8b6f,0x8b6f,0x8b8f,0x93d0,0x93d0,0x8bb0,0x8bb0,0x8bd0,0x93d0,0x9411,0x93f1,0x9411,0x9411,0x8c11,0x83b0,0x8b6f,0x7a6a,0x6a69,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x5289,0x828a,0x82cc,0x836e,0x8bd0,0x9411,0x9411,0x93d0,0x93f0,0x9431,0x9c72,0x9c52,0x9c52,0x9c72,0xa473,0xa473,0x9c72,0x9472,0x9c93,0x9c73,0xa473,0xa472,0x93b0,0x8acb,0x62cb,0x5aaa,0x52ab,0x52cb,0x52ab,0x7acb,0x8acb,0x9c31,0xa4d4,0x9cd4,0xa4f4,0xad35,0xad36,0xb536,0xb4f5,0xa4f4,0xb535,0xbd76,0xacf4,0x9c93,0xa493,0x9c93,0x9c72,0x9c72,0x9c93,0x9c93,0x9411,0x82cc,0x7a8a,0x5acb,0x5aaa,0x528b,0x52ab,0x52cb,0x7a8b,0x8b0c,0xbd76,0xb596,0xbd96,0xbd76,0xbdd7,0xbdb7,0xc5d7,0xbdb7,0xbd97,0xb597,0xb576,0xbdb7,0xbd97,0xbd97,0xbd97,0xbdb7,0xbdb7,0xbd97,0xbd97,0xbd76,0x936f,0x828a,0x526a,0x4a4a,0x4208,0x4269,0x5a69,0x7229,0x82ab,0xb535,0xad76,0xbdd7,0xb597,0xbdb7,0xb577,0xbd98,0xbd97,0xb5b7,0xc5f8,0xbdf7,0xbdd8,0xc5f9,0xc5f8,0xce39,0xc639,0xbdb7,0xbdd8,0xbdd7,0xad15,0x7aad,0x6a09,0x4a08,0x4208,0x4208,0x3a28,0x49e7,0x69e8,0x6a6a,0xa4d4,0xa514,0xad36,0xa4b4,0xa4d4,0x9cd4,0x9cd3,0xa514,0xa515,0x9cb3,0x9cb3,0xa4f4,0xa4d4,0x9cb3,0x9473,0x9c72,0xa4b3,0x9c93,0x8c31,0x83b0,0x4947,0x5186,0x3986,0x3186,0x31a6,0x3185,0x4165,0x5945,0x7b0b,0x94b2,0x9cf4,0x9cf4,0x9493,0x9cd4,0x9cb3,0x8c53,0x9473,0x8c52,0x8c52,0x8c52,0x8c31,0x8c31,0x9431,0x9493,0x9473,0x8c31,0x8c31,0x7baf,0x6aac,0x48e5,0x4146,0x2924,0x1925,0x1144,0x2124,0x2924,0x5105,0x628a,0x7bd0,0x8432,0x8432,0x8411,0x7b8f,0x83cf,0x8431,0x7bd0,0x7bcf,0x7bef,0x7c10,0x7bf0,0x7c10,0x8410,0x8c10,0x8c10,0x7bf0,0x83f0,0x7bd0,0x62cc,0x48e4,0x40e4,0x18c3,0x10c4,0x10c3,0x0881,0x4228,0x7b4e,0x3021,0x3861,0x4021,0x4020,0x3841,0x3820,0x3820,0x3821,0x3821,0x3821,0x3820,0x4020,0x4021,0x4041,0x4041,0x4061,0x3861,0x3861,0x4841,0x4020,0x2020,0x7c30,0x2106,0x10a2,0x08a2,0x0862,0x4aea,0x9492,0x0842,0x10e2,0x18e2,0x18e3,0x10a2,0x31a5,0x4a47,0x5268,0x5269,0x5a89,0x5248,0x8cb0, +0xb5b5,0xc5d6,0xa679,0x3a47,0x4a88,0x4aa8,0x5288,0x4a68,0x3a07,0x31e7,0x3a28,0x31c7,0x39c7,0x3166,0x9c30,0xb6ba,0x19a7,0x39a6,0x31a7,0x41c7,0x61a7,0x9bf0,0xe71c,0xd6fb,0xdf1c,0xd71c,0xd6db,0xd6fc,0xdf5c,0xd71b,0xd6bb,0xdefc,0xd71b,0xd6fb,0xd71c,0xdf3c,0xdf3c,0xcedb,0xceba,0xcedb,0xcefb,0xd77d,0x7b6f,0x51c7,0x4a08,0x3a08,0x3208,0x41e8,0x8248,0x934d,0xef7d,0xe77e,0xd71c,0xdf3c,0xe73c,0xe75d,0xdf5c,0xdf5c,0xe77d,0xdf5c,0xe75c,0xe77c,0xdf5c,0xe75d,0xe77d,0xdf5c,0xdf5c,0xdf5c,0xef9d,0xefbe,0xbdf8,0x7a29,0x4a69,0x4249,0x4a49,0x4a6a,0x7a8a,0x7a29,0xffde,0xefbe,0xe79e,0xe79d,0xe79d,0xe79e,0xe79e,0xef7d,0xef7e,0xef9e,0xef9d,0xe77d,0xef9e,0xef9d,0xe79d,0xef9e,0xefbe,0xe77d,0xe79d,0xefbd,0xefff,0x8b70,0x72cb,0x52ab,0x5acb,0x52ab,0x52ab,0x92ab,0xbcb2,0xf7ff,0xef9e,0xefbe,0xef9e,0xe77d,0xef7d,0xefbd,0xefbe,0xef9e,0xef9d,0xef9d,0xef9d,0xe77d,0xef9d,0xf7de,0xef9d,0xefbe,0xefbe,0xef9d,0xefbe,0xdf1d,0x726a,0x6a8a,0x5aaa,0x528b,0x528c,0x5a6b,0x7a29,0xd638,0xef9e,0xe75c,0xe75d,0xe75c,0xe77d,0xe75d,0xe73c,0xdf3c,0xdf3c,0xe75c,0xe75d,0xef7d,0xe75c,0xdf3c,0xdf5c,0xe73c,0xe73c,0xdf5c,0xdf1b,0xdf3c,0xd6bb,0x828b,0x5a6b,0x4a69,0x4269,0x4a49,0x5a8a,0x7229,0xe6fb,0xdf3c,0xd71b,0xdf3c,0xd6fb,0xd6db,0xdedb,0xd6fb,0xd6fc,0xd6fb,0xd71b,0xd71c,0xdf1c,0xd6db,0xd71b,0xd6fb,0xd6fb,0xceda,0xd6fb,0xd71b,0xdf5d,0xce7b,0x69c8,0x4a07,0x3a09,0x4208,0x3a07,0x49e8,0x5986,0xe6da,0xceda,0xceba,0xd6ba,0xdedb,0xce7a,0xce9a,0xc6ba,0xceb9,0xce99,0xce99,0xc679,0xce9a,0xc658,0xc678,0xc699,0xce79,0xce59,0xbe78,0xbe58,0xd71b,0xa494,0x6167,0x3987,0x2966,0x2985,0x3186,0x59a6,0x5965,0xceba,0xbdf6,0xb5f7,0xbdf7,0xb5b6,0xadd6,0xadd7,0xadd7,0xb5f8,0xb5d7,0xadf7,0xbdf7,0xb5b6,0xad96,0xad96,0xadb6,0xadb6,0xadd7,0xb5f7,0xadb6,0xbe59,0x624c,0x5105,0x20e4,0x2125,0x1924,0x2124,0x3924,0x4124,0xb5f7,0x9d55,0xa576,0xa575,0xa555,0x9d34,0xad75,0xa575,0x9d35,0x9d35,0x9d15,0x9cf4,0x9cf3,0x9d14,0xa574,0x9d13,0x9d14,0x94f3,0x9cd4,0x94d3,0x9cf4,0x5168,0x50c4,0x20e3,0x10c4,0x10c3,0x0821,0x73ae,0x38a4,0x60c3,0x70e3,0x70e3,0x70c3,0x70c3,0x70c3,0x70e3,0x70c3,0x70a3,0x68c3,0x70c2,0x70c2,0x78c3,0x70c3,0x70a3,0x70a3,0x70c3,0x70c3,0x68a2,0x68a3,0x58a2,0x5289,0x52cc,0x0882,0x10a3,0x0861,0x4b0b,0x8c92,0x0043,0x10e3,0x18c3,0x18e4,0x10a3,0x39a5,0x4a27,0x5288,0x5288,0x5288,0x5a68,0x8490, +0xb5d5,0xbdf6,0xa617,0x4a48,0x5a88,0x52a8,0x5288,0x5268,0x3a06,0x31e6,0x3a28,0x39e7,0x39e7,0x3986,0xa451,0xb6ba,0x1966,0x39a6,0x39e7,0x49c7,0x5946,0xbd35,0xc699,0xc699,0xce9a,0xce9a,0xc67a,0xc67a,0xc699,0xc679,0xce9a,0xa5d7,0xad74,0xce9a,0xceb9,0xceba,0xceba,0xceba,0xc6ba,0xceba,0xc6da,0xcf5c,0x73d0,0x5a08,0x4207,0x39e8,0x3208,0x4208,0x7a08,0xa3ef,0xe73c,0xd6fb,0xd6fb,0xd71b,0xd6fb,0xdf1b,0xd71b,0xd6fb,0xdefc,0xd6fb,0xdf1c,0xd71b,0xd71c,0xdf1c,0xdf1b,0xd71b,0xdf3c,0xe73c,0xdf1b,0xe73c,0xbebb,0x7a6a,0x5249,0x4a6a,0x426a,0x4a8a,0x728a,0x82cb,0xffde,0xdf3c,0xe75d,0xe75d,0xe75c,0xdf5c,0xdf5c,0xe77d,0xe77c,0xe75c,0xdf3c,0xe73c,0xe75c,0xdf3c,0xe77d,0xdf5c,0xdf5c,0xe75c,0xe75c,0xe77c,0xe7ff,0x8c32,0x7aaa,0x5aab,0x52eb,0x4aab,0x528a,0x9a8b,0xc554,0xef9e,0xe75d,0xe75c,0xe75d,0xe75d,0xe77c,0xe75c,0xe75c,0xef9d,0xadd6,0xb5d6,0xe77d,0xe75d,0xe75d,0xe75d,0xe75c,0xe75d,0xe77d,0xe79d,0xe77d,0xe79e,0x726a,0x6269,0x62cc,0x528b,0x4aab,0x62ac,0x71c8,0xde99,0xe75d,0xdf5c,0xdf5c,0xe77c,0xe77c,0xe75d,0xe75d,0xef9d,0xe77d,0xefbe,0xf7de,0xefbe,0xefbd,0xe75c,0xe75d,0xe73c,0xe73c,0xe73c,0xdf5c,0xdf1b,0xdf1c,0x7a0b,0x5a8a,0x4249,0x4a6a,0x4a69,0x5a8a,0x6a08,0xdefa,0xe73c,0xdf1b,0xdf3b,0xdf1b,0xdefb,0xdf1b,0xdf1b,0xdf1c,0xdf3c,0xd71b,0xd73c,0xdf1c,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6db,0xd71b,0xd6fb,0xce9b,0x69c8,0x5208,0x41e8,0x3a08,0x39e8,0x5208,0x61c7,0xe73b,0xce99,0xceb9,0xce99,0xd6ba,0xceba,0xc679,0xc699,0xce99,0xc679,0xce99,0xce99,0xceba,0xc679,0xc659,0xce79,0xce59,0xc639,0xc658,0xbe59,0xc679,0xad56,0x6146,0x3986,0x3186,0x2986,0x2966,0x5986,0x5985,0xce78,0xbdf7,0xb618,0xc658,0xbe38,0xbdf7,0xb5f7,0xb5f7,0xb5d7,0xb5f7,0xbe18,0xb5f7,0xb5f7,0xb5f7,0xb5d7,0xb5b7,0xb5b6,0xadd7,0xb5f7,0xb596,0xbe38,0x72ee,0x50e4,0x2104,0x2145,0x2124,0x2925,0x4945,0x4124,0xb5d6,0x9514,0xa575,0xb5f6,0xa555,0x9d54,0xa555,0xa555,0xa555,0xa555,0xadb6,0xa575,0x94f3,0x9d34,0xa514,0x94d3,0x9d34,0x9d54,0x9d13,0x94f3,0x9d14,0x49a9,0x48c3,0x28e4,0x18c3,0x20c4,0x0841,0x6b8e,0x3883,0x70c3,0x70e4,0x78c3,0x78c3,0x70c3,0x70c4,0x70e4,0x78e4,0x78c3,0x68c3,0x60a3,0x68a3,0x70a2,0x70c2,0x70a2,0x70a3,0x70c3,0x70a3,0x70a2,0x70a3,0x68e3,0x49e7,0x634e,0x10a2,0x10a3,0x0881,0x3a88,0x8492,0x0043,0x10e3,0x18e3,0x10e3,0x18e3,0x3985,0x4a27,0x5268,0x5288,0x5288,0x5269,0x7c50, +0xb5d5,0xbe16,0x9e17,0x4268,0x5268,0x52a8,0x5288,0x5288,0x39e6,0x3a27,0x39e7,0x31e7,0x3a07,0x39a7,0x9c50,0xb6ba,0x2166,0x39c7,0x39e7,0x41a6,0x6166,0xc596,0xc6ba,0xc6b9,0xc679,0xce9a,0xc69a,0xc69a,0xc69a,0xc699,0xce9a,0x8d57,0x9c32,0xceda,0xce9a,0xc6ba,0xc69a,0xc6ba,0xceba,0xceba,0xc6da,0xd75c,0x7bd0,0x5a07,0x4208,0x39e8,0x3a08,0x4a08,0x7a08,0xac71,0xe73c,0xd6fb,0xd6fb,0xd71c,0xd6fb,0xdf1b,0xd71b,0xd71b,0xd6fb,0xd71b,0xd71b,0xdf1b,0xdf3c,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xbe9b,0x7a6a,0x5289,0x4a8a,0x4a8a,0x4aab,0x7a8b,0x82eb,0xfffe,0xe75c,0xdf5d,0xef9e,0xe77d,0xdf7c,0xe77c,0xefbe,0x8492,0xc618,0xf7de,0xefbe,0x73ef,0xe75c,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xefff,0x8c10,0x72ab,0x5acb,0x4aaa,0x52cb,0x5acb,0x92ab,0xc575,0xef9d,0xe77d,0xe79d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe79e,0x5b4e,0x6b2d,0xefbe,0xef7d,0xe77d,0xe75d,0xe77d,0xe77d,0xef5d,0xe77c,0xe77d,0xefbf,0x726a,0x5a8a,0x52cb,0x5acc,0x4aab,0x628a,0x7229,0xde79,0xe77d,0xe75c,0xe75c,0xe75c,0xe75c,0xe75d,0xd71c,0xa576,0xb576,0xad95,0xad96,0xad96,0xa575,0xd6da,0xef7d,0xe75d,0xdf3c,0xe73c,0xdf3c,0xe71c,0xdefc,0x7a2b,0x5a6a,0x4a49,0x4a6a,0x4a6a,0x5a6a,0x69e8,0xe73b,0xdf3c,0xdefc,0xdf3c,0xdf1c,0xd71b,0xd6ba,0xdedb,0xd6db,0xdf3c,0xdefc,0xcebb,0xceba,0xe73c,0xc658,0xc679,0xd6ba,0xd6ba,0xd6db,0xd6da,0xdefb,0xcebb,0x69e9,0x5208,0x41e8,0x39c8,0x41e7,0x5208,0x59c6,0xdf3b,0xce79,0xceba,0xce9a,0xce9a,0xceb9,0xd6fb,0xbe17,0xce78,0xb637,0xceda,0xc618,0xa513,0xb5d5,0xc679,0xbe38,0xbe38,0xc679,0xce79,0xc658,0xce7a,0xb557,0x5946,0x39a6,0x3186,0x2986,0x3986,0x51a7,0x59a6,0xce78,0xbdf8,0xa596,0x7bf0,0x740f,0xbe18,0x9d34,0xbe17,0xb5d7,0xa555,0x8c71,0x94f2,0xadb6,0xadb6,0xa595,0xb5f7,0xadb7,0x7c31,0x94d2,0xadb6,0xb5d7,0x7aee,0x48c4,0x2924,0x2925,0x2124,0x2925,0x4145,0x4104,0xadf5,0xa556,0x73af,0x73ef,0x8c92,0x7bb0,0x9cf3,0x9d15,0x8cf2,0x7c10,0x4aab,0x530b,0x8cf3,0x6b4e,0x636d,0x94f2,0x5b2d,0x4aeb,0x7c2f,0x9514,0x9d14,0x51c9,0x48c3,0x18c4,0x18e4,0x18e4,0x1841,0x6b6d,0x3083,0x68e4,0x78e4,0x78e3,0x78c3,0x78c3,0x70c3,0x70c4,0x78e4,0x70c3,0x60c3,0x3862,0x58c3,0x68c2,0x70e2,0x78a3,0x70a3,0x70a3,0x70c3,0x70a3,0x78a3,0x68a3,0x49c6,0x634e,0x1082,0x10a3,0x1061,0x3248,0x94d3,0x0844,0x10c3,0x20e3,0x10e3,0x08e3,0x29a5,0x4a27,0x5268,0x5288,0x5289,0x5268,0x844f, +0xb5d5,0xc637,0xa658,0x3a48,0x52a8,0x5288,0x5289,0x5288,0x41c6,0x39c7,0x4248,0x31c7,0x39e7,0x3987,0x9c51,0xaeba,0x29a6,0x39e8,0x3a07,0x49e7,0x5166,0xbd75,0xceba,0xc6ba,0xce9a,0xc69a,0xc69a,0xce9a,0xd6db,0xe75c,0xe7be,0x8d97,0x9c93,0xefbd,0xd71c,0xc6ba,0xceba,0xceba,0xceba,0xceda,0xceba,0xd73c,0x73af,0x5a08,0x4208,0x3a29,0x3a28,0x4a08,0x7a08,0xac71,0xe75c,0xd6fb,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xdf5c,0xf7df,0xf7be,0xefbd,0xf7de,0xef9e,0xefbd,0xe77d,0xd6fc,0xdf3c,0xd73c,0xdf1c,0xdf1b,0xdf5c,0xc69a,0x7229,0x528a,0x4a8a,0x526a,0x528a,0x828a,0x82ab,0xfffe,0xe75c,0xe75d,0xe75c,0xef7d,0xe77c,0xef7d,0xe75d,0xef9e,0x73d0,0xc5f7,0x738f,0xd679,0xefbe,0xef7d,0xe79d,0xe77d,0xe75d,0xef7d,0xe77d,0xefff,0x83cf,0x72ec,0x52ab,0x52cb,0x52eb,0x62eb,0x92ab,0xc595,0xef9d,0xe77d,0xe79d,0xef7d,0xe77d,0xe77d,0xe75d,0xffdf,0xffff,0xf7df,0xffdf,0xffff,0xffff,0xef7d,0xe77d,0xe77d,0xe75d,0xe77d,0xe75d,0xe77d,0xe7be,0x6a8b,0x62aa,0x52aa,0x52ab,0x52ab,0x6aeb,0x7a69,0xe6ba,0xe77d,0xe75c,0xe75d,0xe75d,0xe75d,0xe79d,0xdf5c,0xce9a,0xd69a,0xce9a,0xce9a,0xce9a,0xceba,0xe75c,0xe75c,0xe75c,0xe73c,0xe73c,0xdf3c,0xdf1c,0xcedb,0x7a6a,0x62aa,0x4a6a,0x4a6a,0x528b,0x5a6a,0x69c8,0xdeda,0xdf1b,0xdf1c,0xdf3c,0xdf3c,0xdf7d,0x9d15,0xce99,0x9d34,0xefbe,0x9cb3,0xdefc,0xe75c,0x9cf4,0xd6ba,0xb5f7,0xceba,0xd6fb,0xcedb,0xd6db,0xd6fb,0xd6bc,0x71e9,0x5a29,0x4209,0x39c8,0x4207,0x5a09,0x61a6,0xef5b,0xceba,0xce9a,0xceba,0xd6da,0xd6ba,0xdf3c,0x5acc,0xad75,0x8cb2,0xcebb,0x73cf,0xdefb,0x8cb2,0xb617,0xce7a,0xc659,0xc699,0xc679,0xc659,0xceba,0xad57,0x6146,0x4186,0x3187,0x2986,0x3186,0x49a7,0x49a5,0xc698,0xc659,0x740f,0xc618,0xad76,0xbe38,0x6b8d,0xbe98,0xbe37,0x7baf,0xc638,0xb617,0xb5f7,0x734e,0x6b2c,0xc658,0xa555,0x8c51,0x9cf4,0x8cd2,0xadf7,0x72ed,0x48c4,0x3125,0x2124,0x2104,0x3125,0x4126,0x38e3,0xb5d5,0xadb6,0x4a09,0xb5d7,0xa596,0x62ed,0x52ab,0xad75,0x8491,0xadb7,0x4a2a,0x9514,0x94f5,0x634e,0xadd6,0xa575,0x526a,0xad76,0x39e8,0x9554,0x8cf4,0x59e9,0x48c3,0x18c4,0x10c3,0x18c4,0x1042,0x73ae,0x3884,0x68c4,0x7904,0x70e4,0x70e3,0x70e3,0x70c3,0x78e3,0x78a3,0x68c3,0x50c3,0x30a2,0x40a2,0x68a2,0x70c2,0x70a2,0x70c3,0x70a3,0x70e3,0x70a3,0x70a2,0x68e2,0x49a6,0x634e,0x0882,0x1082,0x1881,0x3227,0x8cd2,0x1042,0x20a3,0x28e3,0x20c3,0x10c3,0x21a5,0x4247,0x4a68,0x5289,0x52a9,0x5a89,0x7c2e, +0xadb5,0xc637,0x9e17,0x3a47,0x4ac8,0x52a8,0x52a8,0x4a68,0x31e7,0x31a7,0x4228,0x3a07,0x3a08,0x3987,0xa471,0xb6ba,0x19a6,0x39e8,0x41e7,0x51e8,0x59a7,0xc596,0xce9a,0xc699,0xc69a,0xce9a,0xce9a,0xc69a,0x9db6,0x634d,0x6b8f,0x428b,0x5aab,0x738e,0x7bce,0xc659,0xceda,0xceba,0xceba,0xceba,0xcedb,0xd75c,0x7bf0,0x51e8,0x41e8,0x4208,0x3a08,0x5249,0x81e8,0xac71,0xdf5c,0xd71b,0xd71c,0xdf1c,0xd71b,0xd71c,0xae18,0x52cc,0x52cc,0x52cb,0x52cc,0x52ac,0x5acb,0x7bef,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf5c,0xe75c,0xc67a,0x7229,0x528a,0x4289,0x4a69,0x526a,0x8aab,0x8aec,0xfffe,0xe73c,0xe75c,0xe75c,0xe77d,0xe77d,0xe77d,0xe75c,0xe79d,0xefdf,0x420a,0xacb3,0xf7ff,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xef7d,0xf7ff,0x8bf1,0x628b,0x5aab,0x52cb,0x52eb,0x62cb,0x9aaa,0xcdd6,0xef9e,0xe77d,0xef9d,0xef7d,0xef7d,0xef7d,0xd73c,0x94b3,0x94b3,0x9493,0x94b3,0x8c72,0x8c71,0xef7d,0xef7d,0xe79c,0xe77d,0xe77d,0xe77d,0xef7d,0xe79e,0x728b,0x62cb,0x52eb,0x4aab,0x4aab,0x6aca,0x7a49,0xde99,0xe75d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xefbe,0xef9e,0xefbe,0xefbe,0xef9e,0xef7d,0xe75c,0xe73c,0xe73c,0xe73c,0xe73c,0xe75c,0xe75d,0xcedb,0x7a4a,0x628a,0x4a8a,0x4a8b,0x528b,0x5a6a,0x69c7,0xe71b,0xdf3b,0xdf1c,0xdf1c,0xdf1c,0xdf3c,0xe79e,0x73ef,0xc638,0xf7ff,0x8c93,0xb596,0xd6fa,0xce7a,0x9473,0xa554,0xe77c,0xd6fb,0xd6db,0xd6db,0xd6fb,0xce9b,0x69e9,0x5228,0x39e8,0x41e8,0x39e8,0x49e8,0x69a6,0xdf1b,0xce99,0xce99,0xceb9,0xc6ba,0xceba,0xdefc,0x9cb3,0x7bf0,0x8c51,0xc69a,0x6b8e,0xdf3b,0xb5d8,0xadb5,0xc679,0xc679,0xc679,0xc659,0xbe79,0xc679,0xad77,0x6147,0x3985,0x31a6,0x2986,0x2986,0x5186,0x49c6,0xc698,0xbe58,0x6baf,0xc658,0xbe18,0xc658,0x634e,0xc6d9,0xbe18,0x73cf,0x842e,0x94f3,0xb5b7,0x736d,0x738e,0xa574,0x9d15,0x4acc,0x4a4a,0xa574,0xb617,0x72cd,0x4904,0x3144,0x2144,0x2125,0x2905,0x4925,0x4924,0xadd5,0xadb6,0x39a8,0x62eb,0x8cd3,0x52ec,0x73af,0x7c0f,0x8470,0xadd7,0x426a,0x94f3,0xa555,0x424b,0x63af,0x9535,0x4209,0x5acb,0x4a8a,0x9d35,0x94f4,0x59e9,0x48c4,0x18c3,0x10c3,0x18c3,0x1041,0x738e,0x38c4,0x68c2,0x78e3,0x78e3,0x70e3,0x70e4,0x70c3,0x70e3,0x70e3,0x60c3,0x40c2,0x60e3,0x38c2,0x58c3,0x70c2,0x78c3,0x68a3,0x70a3,0x70c3,0x70c3,0x70a3,0x70e2,0x49c5,0x738e,0x1082,0x1083,0x1862,0x3a27,0x94b2,0x1042,0x20a3,0x18e2,0x2103,0x18a2,0x31a5,0x4a47,0x5288,0x5288,0x5288,0x5268,0x740e, +0xadb5,0xc658,0xa5f7,0x4248,0x52c9,0x52a8,0x52a8,0x4a88,0x31e7,0x31e7,0x4228,0x3a08,0x39e7,0x3966,0xac92,0xae78,0x1966,0x39e7,0x41e8,0x5208,0x61a7,0xcdd6,0xce9a,0xc69a,0xc67a,0xc69a,0xc69a,0xc69a,0xd73c,0xceba,0xd73c,0x9514,0xad55,0xe73c,0xdf3d,0xd6fb,0xceda,0xceba,0xd69b,0xceba,0xc6bb,0xd77d,0x7bd0,0x5a08,0x3a28,0x41e8,0x39e8,0x5208,0x79e8,0xb492,0xdf3c,0xd71c,0xd71c,0xdf1c,0xd71b,0xd71c,0xdf1c,0xef9e,0xefbe,0xefbe,0xefbe,0xf7be,0xf7be,0xefbe,0xdf5c,0xe73c,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xbe39,0x7a6a,0x528a,0x4a8a,0x528a,0x526a,0x8a8b,0x932d,0xffff,0xe75c,0xe75c,0xe75c,0xdf7d,0xdf5d,0xe75d,0xe77d,0xefff,0x5b6d,0xc5f8,0x736e,0xdedb,0xef9e,0xe77d,0xe77d,0xe77d,0xef7d,0xef7d,0xef9d,0xf7ff,0x8bf1,0x6acb,0x5acb,0x52ab,0x4acb,0x62cb,0x9aaa,0xd5d6,0xefbe,0xe77d,0xef7d,0xe77d,0xef7d,0xef7d,0xefbe,0xefbe,0xe79e,0xf7be,0xef9e,0xef9e,0xef7e,0xefbe,0xef9e,0xe77d,0xe77d,0xef7d,0xef7d,0xef7d,0xdf7e,0x726c,0x62ec,0x52eb,0x5b0c,0x52cc,0x730c,0x7a8a,0xdeda,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe77d,0xdf5c,0xb638,0xce99,0xc679,0xce99,0xd69a,0xce79,0xe75c,0xe75c,0xe75d,0xe77d,0xdf5c,0xe77d,0xe75d,0xd6db,0x7a0a,0x6aab,0x528a,0x4a8a,0x52ab,0x5a6a,0x69a7,0xef3b,0xdf1b,0xdf3c,0xdf1c,0xd71b,0xdf1c,0xdf7d,0x94d3,0xe75c,0xe77d,0x9d36,0xefbe,0xe75c,0xb617,0xe77d,0xa534,0xd71b,0xd6fb,0xdedb,0xd71b,0xdefb,0xce9b,0x71e8,0x5248,0x4a09,0x39e8,0x3a08,0x51e7,0x69c7,0xdf3b,0xceba,0xce9a,0xceb9,0xceda,0xceba,0xd6fb,0x8c71,0xd6ba,0x3a08,0xdf1c,0x63af,0xbe57,0x9cf3,0xb616,0xc658,0xc659,0xc658,0xc659,0xc679,0xce9a,0xbdd8,0x6166,0x41a6,0x31a6,0x3166,0x3187,0x5966,0x51a6,0xce98,0xbe38,0x8cb3,0x9451,0x8430,0xbe37,0x52ec,0xc5d6,0xadb6,0x63d0,0xa596,0xb617,0x8410,0x94b3,0x8c30,0x636c,0x8c92,0x8c91,0xa536,0x94d1,0xbe59,0x6a8c,0x50e5,0x3125,0x2125,0x2125,0x2925,0x4945,0x4924,0xb5b5,0xa595,0x422a,0x94b3,0x9d55,0x5b0c,0xa555,0x2987,0x7c70,0xa5d7,0x426a,0x8cb2,0x9d55,0x41c8,0x7c10,0x9cf4,0x528a,0xad95,0x4208,0x9d14,0x94f4,0x622a,0x48c3,0x18e4,0x18c3,0x20e3,0x1061,0x634d,0x4125,0x68c3,0x70e4,0x78e4,0x78e3,0x70c3,0x78c3,0x70c3,0x99a6,0x48c3,0x48c3,0x68e3,0x50a3,0x40a2,0x68c2,0x70c3,0x70a3,0x70a3,0x70a3,0x70c3,0x70a2,0x70c2,0x4185,0x83f0,0x1062,0x10a3,0x1082,0x3a27,0x94d3,0x0843,0x18c2,0x18e3,0x2104,0x20e2,0x2984,0x4a27,0x5268,0x5288,0x52a8,0x5288,0x73ee, +0xbdb5,0xce58,0x9df7,0x4248,0x4aa9,0x52a8,0x4aa9,0x4a67,0x31e6,0x39e7,0x3a28,0x4209,0x4208,0x39a6,0xacd3,0xa679,0x1146,0x3207,0x39e7,0x51e8,0x6187,0xcdd7,0xce9a,0xc69a,0xc679,0xc69a,0xc699,0xceba,0xceba,0xc6ba,0xbeba,0x7cf3,0xbd54,0xd6fa,0xc699,0xc69a,0xd6fb,0xd6da,0xd6db,0xd6da,0xcedb,0xcf3c,0x7bcf,0x51e7,0x3a07,0x3a28,0x4229,0x5a09,0x79c8,0xb4b3,0xdf1b,0xcefb,0xd71c,0xdf3c,0xdf1b,0xdf1b,0xe75c,0xe77c,0xd6fb,0xd71b,0xdefb,0xdf1c,0xdf1c,0xdf3b,0xdf3c,0xe73c,0xe73c,0xdf3c,0xdf3c,0xdf5d,0xbe39,0x7a4a,0x5aab,0x528a,0x52ab,0x528b,0x8aab,0x930c,0xffff,0xe75d,0xe75d,0xe75c,0xe75d,0xe75d,0xe75d,0xe7bd,0x7471,0xce39,0xf7de,0xefdf,0x73af,0xd6b9,0xe77d,0xe77d,0xe75d,0xef7d,0xef7d,0xef7d,0xf7ff,0x83b0,0x6aaa,0x5acb,0x5aab,0x52cb,0x6acb,0x8a49,0xcdd6,0xe79d,0xef7d,0xef7d,0xef9d,0xef7d,0xe77d,0xef7d,0xef7d,0xe77d,0xc6ba,0xd6da,0xef9d,0xef7d,0xef7d,0xef9d,0xef9d,0xef7d,0xef9d,0xef7d,0xef7d,0xe77e,0x728c,0x62ec,0x5aeb,0x5aeb,0x52cb,0x6aab,0x7249,0xe6fa,0xe77d,0xe77d,0xe77d,0xef7d,0xef7d,0xe77d,0xdf3c,0xa576,0xad76,0xb596,0xad76,0xb596,0xad75,0xe73c,0xe75d,0xdf3c,0xe77d,0xe73c,0xef7d,0xe75c,0xd6fc,0x7a0a,0x628b,0x4a6a,0x528a,0x52ab,0x5a8b,0x71e7,0xe71a,0xdf3c,0xdf1b,0xe71c,0xdf3c,0xdf1c,0xdf1b,0xc679,0xd6fb,0xdf1c,0xb638,0xb5f7,0xd6da,0xc699,0xb5d7,0xb618,0xd6fa,0xdefb,0xd6db,0xd6fb,0xd6fb,0xce9b,0x71e9,0x5a28,0x4a08,0x3a08,0x4208,0x5a08,0x61c7,0xe75c,0xceba,0xceba,0xceb9,0xceba,0xceb9,0xc699,0xbe38,0xd6da,0xb638,0xd6da,0xc659,0xa575,0xb5d7,0xc679,0xce99,0xce7a,0xc679,0xc679,0xbe79,0xc679,0xe69b,0x6166,0x3987,0x3186,0x29a6,0x3187,0x5166,0x5165,0xce98,0xbe18,0xb618,0xa575,0xb5b6,0xc638,0xa597,0xa535,0xb5b6,0xa596,0x94b3,0xa534,0xa595,0xb618,0xbe19,0x9d54,0xb617,0xa576,0xadd7,0x9d54,0xc639,0x6a8d,0x50e5,0x2125,0x1925,0x2125,0x3105,0x4946,0x48e3,0xa5b5,0x9d35,0xa515,0x94b3,0x94f3,0x9d13,0xa574,0x9d55,0x9d74,0xa514,0x8cd4,0x9514,0x9d14,0x94f4,0x8cd3,0x9513,0x9513,0x9534,0x9cd3,0x94f4,0x9514,0x5a09,0x48e4,0x18e3,0x18c4,0x20e3,0x0861,0x5b2c,0x4146,0x68c3,0x7903,0x78e3,0x78c3,0x70e3,0x78c3,0x78c3,0x68a3,0x38a2,0x4082,0x50c3,0x48a2,0x30a2,0x58c3,0x68e3,0x78e3,0x70c3,0x68c3,0x70a3,0x68a2,0x68a3,0x4186,0x73cf,0x1081,0x08a3,0x10c2,0x31e6,0x94d2,0x0843,0x08c2,0x10c3,0x18e3,0x18c2,0x2985,0x4a28,0x5268,0x5a87,0x5289,0x5a88,0x6bcd, +0xb5d6,0xc658,0x8df6,0x4247,0x52a9,0x5289,0x4aa8,0x4a68,0x29a5,0x31e6,0x4228,0x39e8,0x31e8,0x39c7,0xb4f3,0xae9a,0x1126,0x39e8,0x39e7,0x5a09,0x6167,0xcdf7,0xc67a,0xce9a,0xc699,0xce79,0xceba,0xc6ba,0xc69a,0xceba,0xceda,0x8d14,0xacf3,0xd6da,0xc6ba,0xc6ba,0xceda,0xd6da,0xceda,0xcedb,0xcedb,0xcf3c,0x73b0,0x5206,0x3a28,0x3a08,0x39e8,0x4a28,0x69a7,0xbcd3,0xdf3b,0xcefb,0xd6fb,0xdefb,0xdefc,0xd71c,0xdf1c,0xdf1b,0xdf1b,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe73c,0xe75d,0xe77d,0xd75c,0xbe39,0x7a8b,0x528a,0x4a49,0x4aab,0x52aa,0x828b,0x934d,0xffff,0xe75d,0xdf5c,0xe77d,0xe77d,0xe75d,0xef5d,0xe77d,0xdf3d,0xe77d,0xe75d,0xe77c,0xe79e,0xef7c,0xe77d,0xe77d,0xef9d,0xef7d,0xef7d,0xef9d,0xf7ff,0x8baf,0x7b0c,0x52ab,0x52ab,0x5aeb,0x6aab,0x92ab,0xcdd6,0xefde,0xef9d,0xef7d,0xef7d,0xef7d,0xe77d,0xef9e,0xef7d,0xefbe,0x530d,0x6aec,0xef9d,0xe77d,0xe75d,0xef7d,0xe77d,0xef7d,0xef7d,0xef9d,0xef7d,0xe75d,0x7a8b,0x6aeb,0x5acc,0x5aec,0x5aeb,0x6aab,0x7a49,0xef1b,0xe77d,0xef9e,0xef5d,0xe77d,0xe77d,0xe79d,0xe77d,0xefbe,0xef9d,0xef9d,0xe79d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe73d,0xe75c,0xdf3c,0xd6fc,0x822a,0x62ab,0x4a8b,0x4a8b,0x528a,0x62aa,0x71e7,0xe73b,0xdf3c,0xdf1b,0xe71b,0xe73c,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf3c,0xdefb,0xe71c,0xdf3c,0xd71c,0xd6fb,0xdefb,0xd71b,0xd71c,0xdefb,0xdedb,0xd71b,0xd6bc,0x71e9,0x5228,0x4228,0x3209,0x4208,0x51e8,0x61c6,0xdf1a,0xce9a,0xceba,0xceba,0xd6ba,0xceda,0xc699,0xc679,0xce99,0xc659,0xce99,0xce79,0xc679,0xbe79,0xbe79,0xce99,0xce79,0xce99,0xc679,0xc659,0xc678,0xc5f8,0x6947,0x4187,0x2986,0x3186,0x2987,0x4966,0x4964,0xd6b8,0xbe18,0xb5f7,0xb617,0xb5f7,0xbe17,0xbdf7,0xb5d7,0xbe17,0xb5f7,0xb5f8,0xb5f7,0xb5f6,0xadd7,0xadf7,0xadd7,0xb5f7,0xad95,0xadb6,0xa5b6,0xb618,0x72ed,0x48e5,0x2104,0x2165,0x2925,0x2104,0x4925,0x48e3,0xadb5,0x9514,0x9d35,0xa555,0xa554,0xa575,0xa555,0xa555,0xa555,0xa534,0x9d14,0x9514,0x9d34,0xa514,0x9d13,0x9d54,0x9d13,0x94d3,0x94f2,0x9513,0x9514,0x5a2a,0x48c3,0x20e2,0x10e3,0x10e3,0x0861,0x632b,0x4968,0x68c4,0x78e4,0x70c3,0x78e3,0x78c3,0x7882,0x78c3,0x58c3,0x48a2,0x48c3,0x38c3,0x40c3,0x48a3,0x60a3,0x70c3,0x70c3,0x68e3,0x70c3,0x70c2,0x70c3,0x68c3,0x4185,0x73cf,0x0882,0x10c2,0x1882,0x31e6,0x94f3,0x0843,0x10c3,0x10c3,0x18e4,0x18c3,0x3185,0x4a27,0x5288,0x5288,0x5288,0x5a68,0x6bcd, +0xadb5,0xc657,0x9dd6,0x4247,0x5a88,0x5289,0x4a88,0x4a68,0x39c6,0x3a07,0x3a28,0x3a08,0x3a08,0x3986,0xbd74,0xa679,0x1145,0x39e8,0x39c7,0x59e8,0x59a7,0xd5f7,0xce79,0xc679,0xc679,0xc67a,0xceba,0xc67a,0xc679,0xce7a,0xc679,0xbe7a,0xd6ba,0xc699,0xc699,0xc69a,0xc679,0xce9a,0xce9a,0xd6da,0xceba,0xd77d,0x8390,0x5208,0x41e7,0x41e8,0x39e8,0x4a08,0x79e7,0xb491,0xe77c,0xd6db,0xd6db,0xd6fb,0xd6fb,0xd71b,0xd71b,0xdf1b,0xd71b,0xd6fb,0xd6fb,0xdf1b,0xd6fb,0xdf1c,0xd71c,0xdf1c,0xdf1c,0xdf1c,0xdf3c,0xe77e,0xc619,0x726a,0x528a,0x4a8a,0x4aaa,0x528a,0x82ab,0x8aec,0xfffe,0xdf3c,0xe75c,0xe75c,0xe77d,0xdf5d,0xe75d,0xe75c,0xe75c,0xdf5c,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75c,0xe77d,0xe77d,0xe75d,0xef5d,0xf7ff,0x838f,0x7aec,0x5aeb,0x52eb,0x52cb,0x6aec,0x8a8b,0xcdd6,0xf7de,0xe77d,0xef7d,0xef9d,0xef9d,0xef9d,0xef7d,0xef7d,0xef9d,0xef7e,0xf79d,0xef7c,0xe77d,0xef5c,0xef9d,0xef7d,0xe77c,0xe75c,0xef5c,0xef7d,0xdf1c,0x7a2a,0x6aeb,0x5aec,0x5aec,0x5b0b,0x730b,0x7a29,0xe6da,0xef7d,0xef7d,0xe77d,0xe77d,0xe77d,0xdf5c,0xe77d,0xe75c,0xe75d,0xe77c,0xdf3c,0xdf3c,0xdf5d,0xdf5d,0xdf5c,0xe75d,0xe75c,0xdf3c,0xdf3c,0xe73c,0xdefc,0x820a,0x628b,0x4a6b,0x528a,0x5a8a,0x628b,0x71a6,0xe71a,0xdf5c,0xdf1b,0xe71c,0xd71c,0xd71b,0xdf1b,0xdefb,0xd71b,0xcefa,0xd6da,0xd6fb,0xd6db,0xd71b,0xd6fb,0xd6fb,0xd73b,0xd71b,0xd71b,0xd6da,0xdf3c,0xce7a,0x71e8,0x5249,0x4229,0x3a08,0x39e7,0x51e8,0x69c6,0xef5b,0xcebb,0xceba,0xceda,0xceba,0xceba,0xceda,0xceba,0xd6ba,0xce99,0xc699,0xce99,0xce9a,0xce9a,0xc699,0xceba,0xceb9,0xc679,0xc679,0xc679,0xcedb,0xbd98,0x6187,0x39a6,0x3186,0x39a6,0x3186,0x4986,0x51a5,0xd6f9,0xc659,0xb617,0xbe38,0xc658,0xbe17,0xb617,0xbe18,0xbe18,0xb617,0xb617,0xae17,0xb617,0xb617,0xb5f7,0xb5f7,0xb5f6,0xb5d7,0xb5d7,0xadb7,0xc65a,0x6acc,0x4905,0x2145,0x2125,0x2924,0x2124,0x4146,0x48e4,0xbe37,0xb5d7,0xadd6,0xad96,0xa575,0xa596,0xa555,0xa575,0xad96,0xa534,0x9d34,0xa575,0xa575,0xa534,0xa534,0xa534,0x9d14,0x9514,0x9514,0x9d14,0xbdb7,0x6a2a,0x48c4,0x30c3,0x18e3,0x18c4,0x18c2,0x52ca,0x520a,0x5083,0x7104,0x78e3,0x70e3,0x70e3,0x78e4,0x78a4,0x70e3,0x68e3,0x68e3,0x68c3,0x70e3,0x68e3,0x70c4,0x70c4,0x68a3,0x68c3,0x70c3,0x70a3,0x70c3,0x58e2,0x4a27,0x6b8e,0x08a2,0x10a2,0x18a2,0x31e6,0x9514,0x0843,0x18c3,0x18a2,0x10e4,0x18c3,0x3185,0x4a27,0x5288,0x52a9,0x5289,0x5a89,0x6bcc, +0xadb5,0xce78,0x95d6,0x3a47,0x52a8,0x5288,0x4a88,0x4a67,0x31c6,0x31e7,0x3a28,0x3a08,0x3a08,0x3186,0xbd74,0x9e59,0x1966,0x39e8,0x3a07,0x49c7,0x61c8,0x9bae,0xd699,0xce9a,0xceba,0xceba,0xd6ba,0xceba,0xceda,0xceda,0xd6ba,0xdeda,0xd6ba,0xce99,0xce99,0xceba,0xc679,0xd6b9,0xd6da,0xd6ba,0xd6ba,0xb5b5,0x7228,0x5208,0x49e8,0x39e8,0x4209,0x4208,0x7a28,0x8aeb,0xe6da,0xdefb,0xdefb,0xdf1b,0xdf1b,0xe71c,0xd73b,0xdf3b,0xe73c,0xdf3c,0xdf3b,0xdf1b,0xdf1b,0xdf3b,0xe73c,0xe73c,0xdf3c,0xe75c,0xdf3b,0xd6db,0x93af,0x726a,0x52aa,0x4aca,0x4aaa,0x528a,0x728a,0x8aaa,0xd677,0xdf1b,0xe71b,0xe71c,0xe71b,0xdefb,0xdefb,0xdf1b,0xdf1b,0xdf1c,0xe73c,0xe73c,0xdf1c,0xe75d,0xef7d,0xe75c,0xe77d,0xef7d,0xe77c,0xe75c,0xb596,0x82ab,0x730c,0x62cb,0x52cb,0x52cb,0x6acb,0x92ec,0xa3ce,0xd678,0xdeba,0xdeda,0xdefa,0xdf1b,0xe6fb,0xdefb,0xe71c,0xe71b,0xe75c,0xdf1c,0xe71b,0xdefb,0xe73b,0xdf1b,0xdf1b,0xdf3c,0xef7c,0xef7d,0xe73c,0xad14,0x826a,0x6aca,0x5aeb,0x5aeb,0x5aeb,0x6aeb,0x8acb,0x9c0f,0xde99,0xe71b,0xe6fb,0xdefb,0xe71b,0xe6fb,0xe73c,0xe6fb,0xdf1b,0xe6fb,0xdedb,0xdefb,0xe71c,0xdedb,0xd6da,0xdeda,0xdedb,0xdedb,0xdeba,0xdeba,0x9baf,0x7aaa,0x628b,0x526b,0x4a8a,0x528a,0x526a,0x8a29,0x93ce,0xde99,0xdeb9,0xdeda,0xd679,0xd6ba,0xd6da,0xd6ba,0xce7a,0xce79,0xd698,0xce58,0xce18,0xce38,0xc618,0xc5f7,0xd638,0xce18,0xc617,0xcdf7,0xbd75,0x8aed,0x7228,0x5208,0x4209,0x3a09,0x3a28,0x41a7,0x79c7,0x830b,0xc658,0xc638,0xc637,0xbe17,0xce18,0xce38,0xbdd6,0xbdf6,0xb5f6,0xad95,0xbdd6,0xbdd6,0xbdd6,0xb575,0xad54,0xad94,0xad94,0xb575,0xb554,0xad34,0x6a09,0x61a6,0x3987,0x3986,0x39a7,0x3186,0x3965,0x5986,0x6aa9,0xacf3,0xa512,0x9cb1,0x9c71,0xa4f2,0xa512,0xad33,0xa514,0xad34,0xa513,0xa4f2,0xa4d2,0x9c91,0x9471,0x9450,0x9c71,0xa471,0x9450,0x9450,0x9410,0x40c4,0x5945,0x2965,0x2164,0x2145,0x2925,0x2905,0x5104,0x59e6,0x730b,0x7b6c,0x7b6d,0x83cd,0x7bad,0x738d,0x7b6d,0x736d,0x7b8d,0x738e,0x734e,0x734d,0x734c,0x734c,0x736d,0x7b6d,0x6b4c,0x6aea,0x732b,0x6269,0x40a3,0x40e5,0x10c4,0x18e4,0x18e4,0x10c3,0x2985,0xa555,0x3946,0x4083,0x4082,0x4083,0x3862,0x4062,0x3883,0x3882,0x3862,0x3882,0x40a2,0x3862,0x3862,0x3882,0x38a3,0x3884,0x3883,0x38a3,0x3083,0x38a3,0x3966,0x7bf0,0x3187,0x0882,0x18a3,0x1083,0x29c6,0xa555,0x0863,0x18a3,0x10c3,0x1103,0x10c3,0x2984,0x4a07,0x5288,0x5289,0x52a9,0x5a8a,0x6b8c, +0xadb5,0xce78,0x9dd6,0x4a48,0x52a9,0x52a9,0x5288,0x4a68,0x3185,0x39e7,0x3a28,0x3a08,0x3a07,0x39c7,0xb574,0xa679,0x1966,0x39e8,0x3a08,0x3a08,0x59e8,0x59c6,0x5145,0x5165,0x5145,0x4966,0x4945,0x4145,0x4945,0x4944,0x4945,0x4945,0x5165,0x5985,0x5966,0x5166,0x5986,0x5964,0x5965,0x5945,0x6144,0x69c6,0x5a07,0x4207,0x39e8,0x4208,0x4208,0x4229,0x6249,0x7228,0x6165,0x6165,0x6165,0x6166,0x6186,0x61a6,0x6186,0x6166,0x6186,0x61c7,0x61c7,0x61c7,0x6a08,0x6a07,0x69c7,0x69e7,0x59e7,0x6208,0x6a08,0x7228,0x7a8a,0x5a8a,0x52aa,0x52aa,0x52ab,0x4a8b,0x5a8b,0x82ab,0x8249,0x69c8,0x69e8,0x69c7,0x69e7,0x6a08,0x6a28,0x7248,0x7a89,0x7228,0x7208,0x7a28,0x7a49,0x7229,0x7249,0x6a09,0x7208,0x7208,0x7228,0x7229,0x82cb,0x7b2c,0x5aeb,0x5acb,0x52ca,0x52cb,0x5acb,0x6aeb,0x92eb,0x8acb,0x7229,0x7228,0x6a08,0x6a29,0x7249,0x7248,0x7a29,0x7a69,0x7a69,0x7249,0x7249,0x7a49,0x7209,0x7249,0x7aab,0x7aaa,0x7248,0x6a28,0x7a8a,0x82eb,0x62eb,0x5b0b,0x5aec,0x5aec,0x530b,0x530c,0x72ec,0x930d,0x8aaa,0x826a,0x8249,0x826a,0x7a8a,0x828a,0x828a,0x7a69,0x7249,0x7249,0x7248,0x7aaa,0x826a,0x7249,0x7a6a,0x7a69,0x7a49,0x8249,0x8a49,0x8249,0x82cb,0x5a8a,0x52ab,0x5a8a,0x528a,0x4a8a,0x528b,0x6a6b,0x828b,0x8229,0x69a7,0x69a7,0x7208,0x6a08,0x69c7,0x61a7,0x69c7,0x61c7,0x71e8,0x71c7,0x71c7,0x69e8,0x69a7,0x6966,0x6986,0x71c6,0x69c6,0x71e8,0x7a09,0x7a29,0x5a09,0x4a28,0x4229,0x4208,0x39e8,0x4207,0x5228,0x7a29,0x69a6,0x6146,0x5925,0x6145,0x6186,0x5145,0x5966,0x6145,0x5965,0x6165,0x6986,0x6146,0x5966,0x5985,0x5145,0x5165,0x5966,0x5986,0x5945,0x6966,0x69c8,0x4986,0x3187,0x3986,0x31a7,0x2966,0x3185,0x4987,0x61a7,0x5945,0x5945,0x5904,0x58e5,0x6124,0x5103,0x5104,0x50e4,0x5124,0x5944,0x5925,0x5925,0x50e4,0x5124,0x6164,0x50e4,0x50e4,0x4904,0x4904,0x5925,0x4945,0x3144,0x2145,0x2945,0x1924,0x2104,0x28e4,0x4104,0x5925,0x5905,0x5104,0x5104,0x50e4,0x5104,0x58e5,0x58e4,0x5904,0x50e4,0x48e4,0x4904,0x5104,0x5904,0x5905,0x50e5,0x5103,0x4904,0x5104,0x5124,0x4904,0x40e5,0x20e3,0x10e3,0x10e2,0x20c3,0x10c3,0x08a2,0x1924,0x9d76,0xbe59,0xb5b6,0xadb5,0xa5b5,0xadd7,0xad96,0xad76,0xb5d7,0xbe18,0xadb6,0xadb6,0xb5d7,0xa5b6,0xadd6,0xbdd6,0x9d33,0xa555,0x9d34,0x9d53,0x94d3,0x3986,0x1062,0x10a3,0x1082,0x1083,0x3a07,0x9d54,0x1083,0x18a3,0x10c3,0x18e3,0x10c2,0x3185,0x4207,0x4aa9,0x5288,0x5289,0x5289,0x634b, +0xb5b5,0xce98,0x95d6,0x4247,0x52a9,0x5289,0x5288,0x4a68,0x39a6,0x39c7,0x3208,0x3a28,0x3a08,0x39c8,0xb533,0x9df8,0x1925,0x3a08,0x39e8,0x39c7,0x41a7,0x41c7,0x49e8,0x49e8,0x49e8,0x49c7,0x49e8,0x4a07,0x5208,0x5208,0x51e7,0x5207,0x5207,0x49e7,0x5208,0x5208,0x4a28,0x4a28,0x51e8,0x5228,0x5a48,0x5208,0x4208,0x4207,0x39e8,0x3a08,0x3a08,0x4209,0x4228,0x4a48,0x5228,0x6249,0x6a49,0x6249,0x5a49,0x6269,0x6269,0x6a8a,0x6269,0x6269,0x628a,0x628a,0x6249,0x626a,0x6a89,0x6aaa,0x6269,0x5a49,0x5a89,0x5aaa,0x526a,0x4a6a,0x4aab,0x426a,0x528b,0x52ab,0x526b,0x526b,0x6aab,0x6acb,0x6acb,0x6acb,0x72cb,0x6acb,0x6aec,0x72ec,0x72cb,0x6b0c,0x6b0b,0x6aec,0x72ec,0x62cc,0x62ab,0x72ec,0x6aeb,0x630b,0x6acb,0x6aeb,0x62ec,0x52eb,0x5b0c,0x52eb,0x52cb,0x52ab,0x52ab,0x52eb,0x5acb,0x5aeb,0x6aeb,0x730c,0x6aec,0x7b2c,0x732c,0x6b0c,0x72ec,0x730c,0x730b,0x730b,0x730c,0x72eb,0x72ec,0x6aec,0x62ec,0x6aec,0x730c,0x6aeb,0x730c,0x5b0b,0x5b0c,0x52ec,0x5aec,0x5acb,0x5aca,0x5aeb,0x5acb,0x62ec,0x6acb,0x72ec,0x7b0c,0x72ec,0x72ec,0x6aec,0x6aab,0x7aec,0x730c,0x730d,0x6b0c,0x6b0c,0x6b0c,0x62ab,0x6aab,0x62ab,0x628b,0x62ab,0x6acb,0x6a8a,0x5aab,0x4aab,0x526a,0x5a8a,0x528b,0x52ab,0x4a8b,0x528b,0x5a8a,0x62aa,0x62aa,0x5a8a,0x5aab,0x628b,0x5a8a,0x5a8a,0x5a8a,0x5289,0x5a8a,0x628a,0x5a49,0x5289,0x5269,0x5269,0x5a6a,0x5a69,0x5a4a,0x526a,0x5249,0x4a28,0x4a09,0x4209,0x41e9,0x4a29,0x41e8,0x4228,0x3a08,0x41e8,0x5208,0x5228,0x49c7,0x59e8,0x5208,0x49e8,0x49e8,0x41e7,0x4a07,0x41e7,0x41a6,0x49e7,0x49c7,0x49e7,0x41e7,0x41c7,0x41a7,0x41c7,0x39c7,0x49c7,0x3985,0x3186,0x2966,0x3186,0x31a5,0x2985,0x3986,0x31a6,0x4186,0x4186,0x3987,0x3986,0x3986,0x3166,0x3166,0x3966,0x3986,0x3986,0x3145,0x3165,0x3165,0x3145,0x3946,0x3965,0x3965,0x3145,0x3145,0x3145,0x2925,0x2124,0x2165,0x1944,0x2905,0x2104,0x2125,0x2125,0x2925,0x2104,0x2904,0x2104,0x2925,0x2104,0x2925,0x2924,0x2124,0x2104,0x30e4,0x30e4,0x2904,0x2904,0x2903,0x20e3,0x20e4,0x20e4,0x2103,0x28e4,0x18e4,0x10e3,0x08e3,0x18e3,0x18c2,0x10c3,0x10e3,0x10e3,0x18e3,0x18a3,0x1061,0x10a2,0x0862,0x0881,0x08a2,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x0881,0x0881,0x0861,0x0821,0x0841,0x0861,0x1062,0x0861,0x0861,0x0041,0x1082,0x08c2,0x00a1,0x10a2,0x18a3,0x2985,0x9d33,0x18a4,0x10a3,0x18c2,0x1104,0x10c3,0x2965,0x4a27,0x4aa8,0x4a89,0x5a89,0x5a88,0x5b4b, +0xb5d5,0xce78,0x8db5,0x4267,0x52a8,0x5289,0x5288,0x4a67,0x31a5,0x4207,0x3a28,0x31e7,0x3a08,0x31a7,0xb574,0x95d8,0x1946,0x39e7,0x39e7,0x31e6,0x39e7,0x39e8,0x3a08,0x31e8,0x39e8,0x3a07,0x39e7,0x39e7,0x3a08,0x3a07,0x3a08,0x31e7,0x3a07,0x31e7,0x3208,0x41e8,0x4207,0x3a28,0x39e8,0x3a08,0x3a28,0x3a07,0x4208,0x41e8,0x4208,0x41e7,0x3a28,0x3a08,0x4228,0x4248,0x4a28,0x4a08,0x4a49,0x4269,0x4249,0x4a69,0x4a69,0x4a49,0x4249,0x4249,0x526a,0x4a49,0x4a6a,0x4a4a,0x4a6a,0x4a89,0x5269,0x526a,0x4a8a,0x426a,0x4a8a,0x4a8a,0x526a,0x528a,0x528a,0x528a,0x528b,0x4a6a,0x528b,0x52ab,0x52ab,0x5aaa,0x5acb,0x528a,0x52cb,0x5aeb,0x52ca,0x52cb,0x52ed,0x4a8b,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x52cb,0x5acb,0x5aeb,0x5aeb,0x52eb,0x5aab,0x5acb,0x5acb,0x5aeb,0x5acb,0x52aa,0x5aeb,0x62cc,0x630b,0x52ab,0x5acb,0x5aeb,0x5b0c,0x5aeb,0x52eb,0x52cc,0x5aeb,0x5aeb,0x52eb,0x5aec,0x5aec,0x5acb,0x5b0b,0x62eb,0x5aeb,0x52eb,0x5aec,0x52ab,0x52cb,0x5acb,0x52ab,0x52ab,0x5acc,0x5aec,0x630c,0x62ec,0x5aec,0x5aec,0x5acc,0x5aec,0x5aac,0x5acc,0x52cc,0x52cc,0x630c,0x5b2c,0x5aec,0x5aec,0x52ec,0x52cb,0x52cb,0x5aeb,0x52ec,0x52cb,0x528b,0x526b,0x528a,0x528a,0x52cb,0x4aac,0x4a8a,0x5289,0x5289,0x52aa,0x5a8a,0x5aab,0x524a,0x4249,0x526a,0x4a6a,0x4a6a,0x524a,0x5a6a,0x528a,0x4249,0x4a49,0x4a6a,0x4229,0x4229,0x4a6a,0x426a,0x4a29,0x4a29,0x3a29,0x4229,0x5229,0x4a29,0x4a28,0x3a08,0x39e8,0x3a29,0x3a09,0x3a08,0x39e8,0x39e7,0x4207,0x31e7,0x39e7,0x41e7,0x3207,0x31e7,0x39c7,0x39e7,0x31e7,0x31a7,0x39c6,0x39e6,0x31e7,0x31c7,0x29a7,0x3186,0x31a6,0x39a6,0x29a6,0x31a6,0x3986,0x2986,0x3166,0x2985,0x3987,0x2966,0x3166,0x2966,0x2965,0x2985,0x2185,0x2186,0x2985,0x2945,0x2945,0x2946,0x2966,0x1945,0x2145,0x2946,0x2166,0x2166,0x2125,0x2145,0x2145,0x1924,0x2144,0x1944,0x2946,0x2104,0x1925,0x1904,0x2924,0x2124,0x2124,0x2103,0x2904,0x1904,0x1125,0x2125,0x2104,0x2104,0x2104,0x1904,0x1904,0x1904,0x2103,0x18e4,0x18e5,0x1103,0x20e3,0x18c4,0x18e4,0x18c4,0x10c4,0x1904,0x20e3,0x18e4,0x18c3,0x18e2,0x18e3,0x10e3,0x18e2,0x18e2,0x20e2,0x10a2,0x20a3,0x18e3,0x18e3,0x18a3,0x20a2,0x10c2,0x10c3,0x18a3,0x08e2,0x10c3,0x10a3,0x10a2,0x08e3,0x18c2,0x08c2,0x10c2,0x08c2,0x08a2,0x10a2,0x0882,0x10a2,0x1883,0x2144,0x9533,0x18a4,0x0882,0x10c2,0x10c3,0x10c3,0x2965,0x4227,0x52a9,0x52a9,0x5aa9,0x5a88,0x5b0b, +0xb5b5,0xd679,0x9595,0x4a67,0x5aa8,0x5288,0x5288,0x4a67,0x41c6,0x39c7,0x3a28,0x31e7,0x3a08,0x39a7,0xb575,0x95b7,0x2146,0x31e7,0x31e7,0x31c7,0x39e7,0x39e7,0x41c7,0x39c7,0x39e7,0x31e7,0x39e7,0x39e8,0x41e7,0x41e7,0x39e8,0x3a08,0x3a08,0x3a07,0x3a08,0x39e7,0x39e7,0x4207,0x4208,0x3a08,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x3a08,0x4228,0x4228,0x4a29,0x4229,0x3a29,0x3228,0x4249,0x4a48,0x5269,0x4a49,0x426a,0x426a,0x4a4a,0x4249,0x4a6a,0x4a69,0x4a69,0x4269,0x426a,0x4a6a,0x4a6a,0x42aa,0x428a,0x4a8a,0x528a,0x4a49,0x5289,0x4aa9,0x4aaa,0x4a8a,0x52ab,0x52aa,0x52ab,0x5acb,0x52cb,0x528a,0x5aab,0x52cb,0x4aab,0x4aab,0x52eb,0x4aab,0x52cb,0x52eb,0x52cb,0x5b0c,0x5aeb,0x4acb,0x52cb,0x5aeb,0x5aeb,0x5aec,0x5acc,0x5aeb,0x5b0b,0x5aeb,0x52ab,0x52ab,0x5aeb,0x5acb,0x5acb,0x5acb,0x52aa,0x52cb,0x52eb,0x530a,0x62eb,0x5aeb,0x52eb,0x52eb,0x530b,0x5acc,0x52ab,0x52eb,0x5acb,0x5aec,0x62cc,0x52cb,0x5aeb,0x52eb,0x52cb,0x5acb,0x52cb,0x5acb,0x5acc,0x52ab,0x4acb,0x4acb,0x4aab,0x5aec,0x630d,0x5aec,0x52ec,0x4acb,0x5aeb,0x52cb,0x52ec,0x52cc,0x5aab,0x52cb,0x5aeb,0x52cb,0x52cb,0x52ac,0x52ac,0x52cb,0x5acc,0x52ec,0x4acb,0x52ab,0x4aab,0x52aa,0x5a8a,0x528a,0x52ab,0x526a,0x526a,0x528a,0x5aaa,0x5a8a,0x528b,0x4a6b,0x42aa,0x526a,0x526a,0x4a6a,0x526a,0x4a6a,0x4a89,0x426a,0x4a6a,0x4a49,0x4a29,0x4a6a,0x4229,0x4a49,0x4a29,0x4208,0x39c8,0x4228,0x4208,0x4a08,0x41e8,0x39c8,0x4208,0x3a49,0x3a08,0x3a08,0x39e7,0x39e8,0x39e8,0x31e8,0x39e7,0x39e7,0x39e7,0x39e8,0x31c7,0x39c7,0x39e7,0x4207,0x39e7,0x31e7,0x39e7,0x39c7,0x31c7,0x29c7,0x31a7,0x3187,0x31a6,0x31c5,0x39c6,0x3186,0x3166,0x3186,0x3186,0x2966,0x3166,0x2985,0x2166,0x3185,0x2166,0x2166,0x2165,0x2965,0x2966,0x2146,0x2966,0x2165,0x2945,0x2966,0x2966,0x2965,0x2945,0x2165,0x1124,0x1944,0x2145,0x2145,0x1904,0x2105,0x2124,0x2124,0x2144,0x2145,0x1904,0x18e4,0x2104,0x2104,0x1905,0x1904,0x2103,0x1904,0x1904,0x1905,0x1904,0x18e4,0x2104,0x18e3,0x18e2,0x18e4,0x28e5,0x20e4,0x18e3,0x1904,0x20c4,0x10c3,0x18e2,0x20e3,0x20c2,0x18c2,0x10c4,0x10c3,0x18e2,0x10e2,0x18e3,0x10a2,0x10c3,0x08e3,0x10e2,0x10c2,0x08e3,0x08c3,0x10a3,0x18c3,0x10c2,0x10a1,0x08a2,0x08c2,0x08c2,0x08a2,0x10a2,0x1082,0x1083,0x08a2,0x2082,0x10a2,0x10c2,0x08a2,0x1944,0x9533,0x18c4,0x08a3,0x10c2,0x18e3,0x18c2,0x2944,0x4207,0x4288,0x5288,0x52a9,0x5aa9,0x5b0a, +0xbdd6,0xd6da,0x9575,0x4a47,0x5aa9,0x5a88,0x5288,0x4a67,0x31a5,0x39e7,0x4208,0x3a28,0x3a08,0x39a7,0xbd95,0x8d96,0x1925,0x3a08,0x3a08,0x39e7,0x39e7,0x41e8,0x41c7,0x39e7,0x3a07,0x3a08,0x39e7,0x41e7,0x41e8,0x3a07,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4229,0x4209,0x3a28,0x3a69,0x3a28,0x4a49,0x4a49,0x4229,0x4269,0x3a69,0x4249,0x4a49,0x4a69,0x4269,0x4269,0x426a,0x426a,0x4a69,0x4a89,0x4a89,0x4a8a,0x4a6a,0x426a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x5a8a,0x4a6a,0x4a69,0x4a6a,0x4a8a,0x4a8a,0x4aaa,0x52ab,0x4aaa,0x52aa,0x52ab,0x52cb,0x52ca,0x52aa,0x52aa,0x52cb,0x52cb,0x52ab,0x52cb,0x4acb,0x52cb,0x52cb,0x5acb,0x52cb,0x52cb,0x5acb,0x632c,0x630c,0x5aeb,0x52eb,0x5b0c,0x530b,0x52ab,0x52eb,0x5aec,0x5aec,0x5aeb,0x5b0c,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aec,0x52eb,0x52cb,0x5aec,0x630c,0x5aec,0x52cc,0x5acb,0x52cb,0x62eb,0x5acb,0x52cb,0x5aeb,0x52cb,0x5acb,0x5acc,0x5acb,0x62cb,0x5acb,0x5acb,0x4a8a,0x52cb,0x52cb,0x5acb,0x62ec,0x52cb,0x5b0c,0x5acc,0x5acb,0x5acb,0x52eb,0x52cb,0x5aec,0x5acc,0x52eb,0x52cb,0x52cb,0x5acc,0x5acb,0x52cb,0x62ec,0x5acb,0x52ab,0x528a,0x52ab,0x52aa,0x5a8a,0x5acb,0x52ab,0x528b,0x526b,0x52ab,0x528a,0x5acb,0x528b,0x528a,0x4aaa,0x4a69,0x4a49,0x4a69,0x524a,0x4a8a,0x428a,0x4a6a,0x4a4a,0x4a4a,0x5269,0x526a,0x4a6a,0x4a4a,0x3a48,0x3a28,0x4a09,0x4a48,0x4a49,0x4228,0x4208,0x3a28,0x4228,0x4248,0x4208,0x3a08,0x4207,0x39e8,0x39e8,0x4208,0x4a08,0x41e8,0x39e7,0x3a08,0x39e8,0x41e7,0x39c7,0x39c8,0x39c7,0x2a06,0x39e7,0x39a7,0x31a6,0x31e7,0x31c6,0x39a6,0x39a6,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x3166,0x3186,0x2946,0x2186,0x2166,0x2985,0x2985,0x3166,0x2986,0x2165,0x2966,0x3166,0x2965,0x2145,0x2965,0x2965,0x2965,0x2165,0x2145,0x2945,0x2145,0x1965,0x2124,0x2124,0x2126,0x2126,0x2145,0x1925,0x1925,0x2145,0x2105,0x2105,0x2104,0x2905,0x2105,0x2904,0x1925,0x1905,0x1905,0x2125,0x1924,0x1905,0x2104,0x2924,0x1904,0x1904,0x2105,0x2104,0x2104,0x20e4,0x20c3,0x1903,0x1903,0x18e4,0x18e4,0x20e3,0x18a4,0x18c4,0x10e3,0x18c3,0x18c3,0x10c3,0x10c3,0x08e3,0x10e2,0x18c3,0x10e4,0x08c3,0x10c3,0x10c4,0x10c2,0x08e2,0x08c3,0x10e2,0x18c2,0x10a3,0x08c3,0x08c3,0x08a2,0x08c2,0x18c4,0x10a3,0x18c3,0x0882,0x29e7,0x9514,0x1063,0x08c3,0x08c3,0x10c3,0x1883,0x2965,0x4246,0x52c8,0x52a9,0x52a8,0x5aa8,0x5b0a, +0xbdd6,0xd6fa,0x9575,0x4247,0x52a8,0x52a8,0x4a88,0x4247,0x31c6,0x3a07,0x3a28,0x31e7,0x39e8,0x39a7,0xacf3,0xb69a,0x21a8,0x31c7,0x3a07,0x31a7,0x39c7,0x41e7,0x39e7,0x31e7,0x39e8,0x39e7,0x39e8,0x39e8,0x31e7,0x39e7,0x39e8,0x41e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x4228,0x39e8,0x31e8,0x3208,0x31e8,0x39e8,0x49e8,0x4208,0x3a09,0x4208,0x4228,0x3a69,0x4249,0x4229,0x4209,0x4a29,0x4249,0x424a,0x4a6a,0x4a49,0x5269,0x4a69,0x4249,0x4249,0x4a6a,0x4a49,0x4a69,0x4a69,0x4a49,0x524a,0x4a6a,0x4a8b,0x526a,0x4a6a,0x4a49,0x4a69,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52ca,0x52aa,0x52aa,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x4aaa,0x52ab,0x5aeb,0x52eb,0x5acb,0x5aeb,0x5aec,0x5aec,0x528b,0x52ab,0x5b0c,0x5aeb,0x52cb,0x5aec,0x5acc,0x5acc,0x52ab,0x5acb,0x5aeb,0x5aec,0x5aec,0x52cc,0x5acc,0x5aec,0x5b2c,0x52ec,0x5b0c,0x630c,0x5b0b,0x5b0c,0x52ec,0x5aeb,0x62ec,0x52cb,0x52cc,0x5b0c,0x5aec,0x5aab,0x62eb,0x5acb,0x62ec,0x528a,0x5acb,0x5aec,0x5a8b,0x5aab,0x5a89,0x4a4a,0x4a8a,0x52ab,0x62ec,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x5acb,0x5acc,0x528b,0x4a8b,0x52ab,0x4acb,0x52ac,0x52ab,0x4aab,0x52cb,0x52ab,0x52aa,0x4a8a,0x52ab,0x5aab,0x5a8b,0x4a8b,0x4a8b,0x4a8b,0x4a4a,0x4a6b,0x4a4a,0x4a69,0x526b,0x528b,0x4a4a,0x4a49,0x4a4a,0x4229,0x422a,0x4a6b,0x4a8b,0x4a6a,0x426a,0x4229,0x4229,0x41e8,0x4a4a,0x426a,0x4a29,0x41e8,0x41e9,0x31a7,0x39e8,0x39c8,0x41e8,0x4249,0x4229,0x4229,0x3a08,0x39e7,0x39c7,0x31c7,0x31a7,0x39c7,0x31a6,0x31e7,0x31e8,0x39c8,0x41a8,0x39a7,0x39a7,0x31a6,0x29a7,0x3186,0x39a6,0x29c6,0x31a6,0x29a7,0x31a7,0x2986,0x39c7,0x2986,0x2987,0x3166,0x2905,0x2946,0x2986,0x31c7,0x3186,0x2966,0x3145,0x2946,0x2946,0x2945,0x3166,0x3145,0x3166,0x2925,0x2966,0x2125,0x2945,0x2126,0x2925,0x2145,0x2925,0x2145,0x2945,0x2145,0x2104,0x20e4,0x2925,0x2925,0x1925,0x18e4,0x10c4,0x08e4,0x18e4,0x1905,0x2105,0x20e4,0x2105,0x2945,0x1904,0x08c4,0x10e4,0x18c4,0x1104,0x18c4,0x1883,0x10c4,0x18c4,0x18c3,0x1883,0x10c3,0x10c4,0x18a4,0x20a4,0x1083,0x08a3,0x10e3,0x1083,0x10a2,0x18a2,0x18c2,0x10e3,0x10e4,0x1083,0x1062,0x1083,0x18a3,0x18a3,0x18a2,0x10c2,0x0882,0x0841,0x0862,0x1042,0x1061,0x08a2,0x1083,0x1082,0x0861,0x0062,0x0862,0x10a2,0x08a2,0x0081,0x0861,0x0882,0x0842,0x0842,0x1062,0x0840,0x10c3,0x8451,0x7bd0,0x0842,0x10c3,0x08c2,0x08e3,0x10c3,0x3143,0x4a27,0x52a9,0x5288,0x5aa8,0x5288,0x52c9, +0xbdd6,0xd71a,0x8d55,0x4248,0x5aa9,0x52a8,0x5288,0x4268,0x39c6,0x39c6,0x3227,0x3208,0x3208,0x39c7,0x6aaa,0xe73c,0x9556,0x3a4a,0x29a7,0x2187,0x2967,0x2966,0x3166,0x3146,0x2145,0x2946,0x3167,0x2166,0x2987,0x3167,0x2967,0x3167,0x2966,0x3187,0x3146,0x3166,0x2967,0x2966,0x2946,0x2986,0x2986,0x31a7,0x31a7,0x3188,0x31a7,0x31a8,0x29a8,0x2987,0x31a8,0x31e8,0x39c8,0x31e8,0x31e8,0x39e8,0x422a,0x31c9,0x39e8,0x41e9,0x3a0a,0x3a09,0x422a,0x3a2a,0x3a29,0x426a,0x426a,0x4a6b,0x4a4a,0x420a,0x4a4a,0x4a8a,0x4a4a,0x4a4a,0x528b,0x4a8b,0x4a8b,0x4aab,0x4a8b,0x4aac,0x52cb,0x5aec,0x5aed,0x5acc,0x630d,0x630d,0x632d,0x634d,0x5b0d,0x5aec,0x632d,0x6b6e,0x6b8f,0x6b8f,0x6b4e,0x6b4e,0x6b8f,0x73af,0x73b0,0x6b8f,0x7bb0,0x7bb0,0x7bb0,0x7b8f,0x736e,0x738f,0x73b0,0x7c11,0x7c11,0x7c11,0x7bf1,0x73d0,0x73f0,0x7c10,0x7c31,0x8451,0x8451,0x8c92,0x8c92,0x8c92,0x8452,0x9473,0xb556,0x94b3,0x9cf4,0x94f3,0x9d14,0x9cf4,0x94b4,0x9494,0x9d15,0x9cd4,0x9cf4,0x9cf4,0x94f4,0xa535,0x9d35,0x9cf5,0x94b4,0x9d15,0x9d35,0x9d15,0x9d15,0xa535,0xad56,0xad55,0xa576,0xad56,0xa576,0xa555,0xad56,0xa535,0xad56,0xad97,0x9d76,0x9d36,0xa576,0xa576,0xa556,0xa556,0x9d55,0x9d35,0xa576,0xa556,0xad56,0xa556,0xad56,0xad56,0xb596,0xb5b6,0xad55,0xa576,0xad77,0xad76,0xad75,0xa556,0xa556,0xa535,0xad97,0xad97,0xa555,0xa555,0xa556,0xa556,0xad77,0xa536,0xa515,0xad36,0xad76,0x9cf5,0x94b4,0x9cf4,0xa535,0xa535,0xad55,0x9cf4,0x9d15,0xa535,0xa535,0x94d4,0x8473,0x8cb3,0x94d3,0x9cf5,0x8cd4,0x8473,0x94d4,0x94b3,0x8c72,0x8c92,0x8492,0x8cb3,0x8cb3,0x94b4,0x94d4,0x8cb3,0x8cb3,0x94d3,0x8c93,0x8cb3,0x8cb3,0x8c71,0x8410,0x7c31,0x8431,0x8451,0x8c73,0x8c52,0x8431,0x8c72,0x8c72,0x7c32,0x73f1,0x7c31,0x8431,0x7bf1,0x8451,0x8431,0x8c71,0x8452,0x8c92,0x8472,0x8c92,0x8c72,0x8452,0x8431,0x7c31,0x7431,0x7411,0x7bf0,0x73f0,0x7c10,0x8410,0x7baf,0x83f0,0x7bcf,0x7bcf,0x73cf,0x73d0,0x7bf0,0x73cf,0x73f0,0x7bef,0x73d0,0x73af,0x73af,0x73d0,0x6b8f,0x634e,0x736f,0x6b6f,0x638e,0x6bcf,0x6baf,0x6bb0,0x6bb0,0x6b8f,0x636e,0x5b0d,0x5b4d,0x6bae,0x6b4e,0x5b0d,0x632d,0x738f,0x73af,0x634e,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73b0,0x6b8f,0x738f,0x736f,0x73d0,0x6b8f,0x636e,0x5b4d,0x6b6e,0x6b4e,0x6b6e,0x6bae,0x73ef,0x73ef,0x7410,0x8cb2,0x8450,0x18a3,0x18c3,0x10a2,0x08c2,0x1103,0x08c2,0x2964,0x4227,0x5288,0x5289,0x52a8,0x5aa9,0x52c9, +0xbdd5,0xd6fa,0x8534,0x4a48,0x52a8,0x5288,0x5288,0x4267,0x39a6,0x39e7,0x3a28,0x31e8,0x31e8,0x31e7,0x31a6,0x83cf,0xdefb,0xe75d,0xdf5c,0xdf3c,0xdf1c,0xdf3c,0xd6fb,0xd6fc,0xd6da,0xd6fb,0xdf3c,0xd6fb,0xdefb,0xdf3c,0xe77d,0xe79e,0xdf5d,0xdf5c,0xe75d,0xef9e,0xdf5d,0xdf5d,0xdf7d,0xefbd,0xef9e,0xdf9e,0xe79e,0xdf9d,0xdf7d,0xe77c,0xefbe,0xefdf,0xefdf,0xe7be,0xe77d,0xf7df,0xf7df,0xf7df,0xf7ff,0xefff,0xf7ff,0xffff,0xf7ff,0xffff,0xf7ff,0xefff,0xf7ff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7de,0xffff,0xfffe,0xf7de,0xffde,0xf7de,0xf7de,0xffde,0xffde,0xf7de,0xf7de,0xf7be,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xef9e,0xef9e,0xf79e,0xef9d,0xf7be,0xefbe,0xefbe,0xef9e,0xf7be,0xefbe,0xef9d,0xef9d,0xf7be,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef5d,0xef7d,0xef5d,0xef5d,0xe75c,0xdf5c,0xe73c,0xe75c,0xe73c,0xe73c,0xdf3c,0xe73b,0xe73c,0xdf3c,0xe75c,0xe75c,0xe75c,0xdf3b,0xe75c,0xdf1b,0xdf1b,0xe75c,0xdf1b,0xd6fb,0xdf1b,0xe73c,0xe73c,0xdf1b,0xdf1b,0xdf1b,0xd71a,0xdf3c,0xdf1b,0xdf1b,0xd6fa,0xd6fa,0xdf1c,0xe71c,0xdf1b,0xdf1b,0xd71b,0xd6fa,0xd6ba,0xd6da,0xd6da,0xd6d9,0xd6da,0xce99,0xce99,0xceb9,0xcefa,0xc6b9,0xd6fa,0xceb9,0xce9a,0xc699,0xce99,0xceb9,0xc659,0xbe58,0xbe58,0xbe38,0xbe38,0xb678,0xbe37,0xb638,0xbe59,0xb637,0xb617,0xadb6,0xbdf6,0xadb6,0xadd6,0xadb5,0xadb5,0xb5f6,0xadf7,0xadd5,0xb5b5,0xbdd6,0xadb5,0xad95,0xad95,0xad96,0xad95,0xadb5,0xadb5,0xad94,0xad95,0xa574,0xa554,0xa575,0xa595,0xa595,0xa554,0xa554,0x9533,0xa553,0x9d33,0xa513,0x9d13,0x9d54,0xa554,0x9cd4,0x9d13,0x9cf4,0x8cb2,0x8cd3,0x94d2,0x94d2,0x9cd3,0x94d3,0x94f2,0x94d2,0x94d2,0x8492,0x94d2,0x8c92,0x8c92,0x8cb2,0x8cb2,0x8c91,0x8c72,0x7c91,0x7450,0x7410,0x7c2f,0x7c0f,0x7bef,0x740f,0x73cf,0x738e,0x6b4d,0x52aa,0x1083,0x0881,0x18c2,0x18a2,0x10c2,0x10e3,0x1904,0x2944,0x4227,0x4a88,0x5289,0x52a9,0x52a8,0x52a9, +0xbdd5,0xdf1a,0x7d34,0x4a48,0x5aa8,0x5287,0x5287,0x4248,0x31a5,0x31e6,0x3a08,0x3208,0x39e8,0x39e8,0x3a07,0x3986,0x3185,0x5acb,0x738d,0x83ef,0x8c51,0x8431,0x8c51,0x8c50,0x842f,0x9410,0x8c31,0x8410,0x7c2f,0x7c0f,0x7c0f,0x7bcf,0x7bcf,0x8430,0x7bef,0x73cf,0x8430,0x7c30,0x7c2f,0x83f0,0x8410,0x740f,0x7bcf,0x8411,0x8430,0x7c2f,0x8430,0x7c10,0x7c10,0x842f,0x7bef,0x7bee,0x840f,0x7c0f,0x7c0f,0x7c0f,0x83ef,0x840f,0x840f,0x7bcf,0x8c71,0x73ae,0x632c,0x632d,0x6b2c,0x634d,0x634c,0x6b4c,0x6b2c,0x6b4c,0x6b6d,0x6b6d,0x6b2d,0x630c,0x6b4d,0x6b6d,0x6b6d,0x632c,0x630c,0x6b2c,0x5aec,0x5b0b,0x632b,0x6b4c,0x6b4c,0x632c,0x632c,0x6b4d,0x6b4c,0x630b,0x6aeb,0x62eb,0x5acb,0x5aaa,0x5a8a,0x5acb,0x5a8a,0x5aaa,0x62eb,0x5aca,0x5aaa,0x62aa,0x5a8a,0x5acb,0x5a6a,0x5a69,0x62aa,0x5acb,0x4aca,0x52eb,0x52aa,0x5aca,0x5acb,0x52ab,0x52a9,0x52c9,0x4a49,0x4a69,0x526a,0x5a8a,0x5aaa,0x5aca,0x5aab,0x528a,0x4a29,0x5248,0x4a48,0x52cb,0x4a89,0x4a68,0x4a68,0x4228,0x4248,0x4248,0x4208,0x5249,0x526a,0x526a,0x526a,0x4a29,0x4a08,0x4a49,0x4a09,0x4a49,0x4208,0x4a49,0x4a49,0x4248,0x4a69,0x4a29,0x4a2a,0x4a2a,0x41e9,0x39e8,0x49e8,0x41e8,0x41e7,0x4228,0x4208,0x39a7,0x49e9,0x41e8,0x41e8,0x4a29,0x4209,0x41e8,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41c7,0x49e7,0x41e8,0x49e8,0x31a7,0x39e8,0x41c7,0x39c6,0x31a6,0x31a7,0x41a8,0x3987,0x3185,0x2985,0x2965,0x2986,0x3166,0x3185,0x3165,0x2965,0x2985,0x2965,0x3186,0x2986,0x2925,0x2964,0x2945,0x20e4,0x20e4,0x2125,0x1944,0x2124,0x2964,0x2124,0x1944,0x2945,0x2125,0x2104,0x2104,0x2904,0x2104,0x20e4,0x20e4,0x2904,0x2103,0x18e3,0x1903,0x18e3,0x2103,0x18c2,0x18a2,0x18a2,0x1081,0x1082,0x10a3,0x1882,0x0862,0x18a2,0x20c3,0x18c2,0x1082,0x0881,0x10c2,0x10a2,0x1062,0x1861,0x20a3,0x0862,0x1062,0x1082,0x1082,0x10a3,0x0082,0x0882,0x0861,0x0882,0x08a2,0x08c2,0x0882,0x1082,0x1081,0x0882,0x0861,0x1061,0x1062,0x0861,0x0861,0x0061,0x0041,0x0861,0x0861,0x0841,0x0841,0x0841,0x0862,0x1083,0x0841,0x0041,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x1042,0x0842,0x0842,0x0841,0x1082,0x0821,0x0021,0x0041,0x0841,0x0821,0x0841,0x0061,0x0041,0x0041,0x0861,0x0861,0x0841,0x0861,0x0861,0x0061,0x0862,0x0862,0x0861,0x0061,0x0061,0x0861,0x0861,0x1061,0x1082,0x08a3,0x0882,0x10a2,0x0883,0x10a2,0x18e2,0x10c2,0x2945,0x4206,0x4a88,0x52a9,0x5288,0x5a89,0x4aa8, +0xb5d6,0xdf3b,0x7d34,0x4a48,0x5aa9,0x5288,0x5287,0x4a47,0x3185,0x3207,0x3208,0x3a28,0x41e8,0x39e7,0x31e7,0x39e8,0x39e8,0x31a6,0x3185,0x2986,0x2986,0x2966,0x3186,0x2985,0x2986,0x3186,0x2966,0x21a6,0x2186,0x2986,0x3186,0x39a7,0x31a7,0x31a6,0x39c6,0x31a6,0x3186,0x3186,0x3166,0x29a6,0x29a7,0x3187,0x2986,0x3186,0x31a6,0x3186,0x31a7,0x3187,0x39a8,0x39c7,0x31a6,0x39c7,0x39e7,0x3a08,0x3a08,0x4228,0x4208,0x4207,0x39e8,0x39e8,0x4a08,0x4a29,0x4209,0x4a29,0x4a28,0x4a49,0x4209,0x4208,0x4a49,0x4249,0x4249,0x4a4a,0x4a6a,0x4a8a,0x4269,0x4249,0x526a,0x4aaa,0x5a8b,0x526a,0x4a6a,0x4a8a,0x528a,0x4a8a,0x4a8a,0x52aa,0x5aab,0x4aaa,0x4a6a,0x52ab,0x6aec,0x528b,0x52ab,0x52aa,0x52aa,0x52ab,0x52ab,0x52cb,0x52cb,0x5aeb,0x530c,0x52ab,0x5acb,0x5aec,0x5aec,0x52ec,0x52cb,0x52eb,0x632c,0x5b0c,0x5b0c,0x630c,0x5aec,0x5aeb,0x5b0b,0x5aea,0x5acb,0x5b0c,0x530c,0x52cb,0x5aeb,0x5aec,0x5aec,0x52cb,0x5aec,0x5aeb,0x5b0c,0x530c,0x52cb,0x5aec,0x5aeb,0x52cc,0x4acc,0x52cb,0x5acb,0x630c,0x5b0c,0x52cb,0x5acb,0x5aeb,0x5aeb,0x5aec,0x52cc,0x52cc,0x52ec,0x52cc,0x52ab,0x52cb,0x62eb,0x5acb,0x52cb,0x5aec,0x5aec,0x5acc,0x5acc,0x5aac,0x5acc,0x52ab,0x52ec,0x5acb,0x52ab,0x5acb,0x4a8b,0x5acb,0x5aab,0x5aab,0x4a6a,0x52cb,0x526b,0x528b,0x4aab,0x4a49,0x52aa,0x4a49,0x4a69,0x428a,0x426a,0x4a29,0x4a69,0x4269,0x4a6a,0x426a,0x4a8b,0x4229,0x4249,0x3a48,0x4249,0x4249,0x4a6a,0x3a28,0x4228,0x4228,0x4249,0x3a08,0x4209,0x4209,0x39e8,0x3208,0x3a28,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x31c7,0x39e7,0x31e8,0x31c7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c8,0x39c7,0x39a7,0x41a7,0x31a5,0x31c7,0x31a7,0x31a6,0x31c6,0x31a6,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x2945,0x2965,0x3166,0x3185,0x2986,0x2965,0x3166,0x2966,0x3186,0x2965,0x2965,0x2165,0x3145,0x2165,0x3165,0x2986,0x1965,0x2145,0x2945,0x2165,0x2145,0x2144,0x2945,0x2145,0x2924,0x2165,0x2124,0x2924,0x1924,0x1924,0x2145,0x2125,0x2125,0x2104,0x1925,0x2125,0x2905,0x2124,0x1904,0x2105,0x1905,0x2104,0x1903,0x2104,0x10e4,0x1103,0x1923,0x18e4,0x1904,0x20e4,0x1903,0x2103,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x10e3,0x1103,0x2103,0x18e3,0x1103,0x10e3,0x18e3,0x10c2,0x18c3,0x18a2,0x10c3,0x10e3,0x08c2,0x18c3,0x18c2,0x10a3,0x08a3,0x08a2,0x18c2,0x18c2,0x10a2,0x08a2,0x08a3,0x10c2,0x10c2,0x10a2,0x18e3,0x10c3,0x1923,0x4206,0x5289,0x5a89,0x52a9,0x5aa9,0x4a88, +0xbdf6,0xd75a,0x7d13,0x4a27,0x52a9,0x5a88,0x5288,0x4247,0x39a5,0x4227,0x3a29,0x3a08,0x41e8,0x3a07,0x3207,0x3a07,0x39e7,0x41e8,0x3a07,0x39e8,0x31e7,0x3208,0x39e7,0x39e7,0x3a08,0x3a08,0x39e8,0x4208,0x3a08,0x3228,0x3a08,0x41e9,0x41e8,0x3a08,0x4208,0x3a29,0x3a08,0x39e8,0x39e8,0x3a07,0x3208,0x4229,0x4228,0x3a07,0x3a08,0x4228,0x4248,0x4208,0x4208,0x4229,0x4249,0x3a29,0x3a49,0x4269,0x4249,0x4a89,0x4a6a,0x4a6a,0x4a49,0x4249,0x4269,0x4a49,0x4a6a,0x4aaa,0x4a69,0x4a8a,0x4a6a,0x4a8a,0x528a,0x528a,0x4a8b,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4aab,0x528b,0x528b,0x52ab,0x52ab,0x528b,0x4a8a,0x52ab,0x5aec,0x52ab,0x52cb,0x528a,0x5aec,0x5b0b,0x52cb,0x5acb,0x5aec,0x52ab,0x5acc,0x52cc,0x52ab,0x5aec,0x5aec,0x530c,0x5b0c,0x52cb,0x52cc,0x52cc,0x52ec,0x5b0c,0x5b0c,0x632c,0x5b0c,0x5b0c,0x5aec,0x5aec,0x5aeb,0x5b0c,0x530b,0x5b0b,0x5b2c,0x532c,0x5acc,0x62ec,0x52ec,0x5aec,0x630c,0x5aeb,0x5aeb,0x5b2c,0x52cb,0x52cb,0x52cc,0x5acc,0x52ec,0x4acb,0x4aab,0x52cb,0x5aeb,0x52ec,0x5aeb,0x62eb,0x5b0c,0x530b,0x5aeb,0x52aa,0x52cb,0x5aeb,0x52ec,0x5acb,0x52eb,0x5aeb,0x52ab,0x52ac,0x5aec,0x52ec,0x528a,0x52ab,0x5acc,0x52ab,0x4aab,0x4aaa,0x52ab,0x52cb,0x4aab,0x4aaa,0x4a69,0x52aa,0x528b,0x52ab,0x4aab,0x4aaa,0x526a,0x528a,0x52aa,0x4a6a,0x4a6a,0x426a,0x3a69,0x4a8a,0x4a29,0x4a6a,0x4a4a,0x3a49,0x4a69,0x4a4a,0x4a49,0x4229,0x3a29,0x4228,0x4249,0x4249,0x4a29,0x4229,0x4a08,0x4a48,0x4229,0x4208,0x3208,0x39e8,0x39e7,0x3a07,0x3a08,0x31e7,0x39c8,0x3a08,0x3a07,0x39c7,0x31c7,0x39c8,0x31c7,0x3208,0x31c7,0x39c7,0x31a7,0x39c8,0x3187,0x39a7,0x31a7,0x39a6,0x29c6,0x31c7,0x2186,0x3186,0x3186,0x3146,0x2986,0x3186,0x3166,0x3186,0x2986,0x2165,0x2965,0x2945,0x2985,0x2965,0x3165,0x2945,0x2144,0x2965,0x2964,0x3165,0x2145,0x2145,0x2145,0x2165,0x2165,0x2145,0x2145,0x2145,0x1944,0x2145,0x1924,0x2125,0x2144,0x2104,0x1925,0x1905,0x2105,0x2105,0x1904,0x1924,0x1104,0x1105,0x2105,0x1104,0x2125,0x20e4,0x1904,0x1903,0x2103,0x1904,0x18e4,0x18e4,0x18c5,0x18c4,0x10e4,0x18e4,0x18e3,0x18e4,0x10e3,0x10e3,0x18e3,0x08e4,0x08c2,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x18e4,0x18e3,0x18c2,0x18a2,0x10c2,0x10a3,0x08a3,0x10a2,0x18a2,0x10c3,0x08c2,0x10a2,0x1883,0x1082,0x10c2,0x18a3,0x08a2,0x10a2,0x0882,0x10a3,0x10a2,0x10c2,0x18c2,0x18e4,0x10c3,0x2144,0x41e6,0x4a88,0x5269,0x52a9,0x52a9,0x4287, +0xbdd6,0xd73a,0x74d3,0x4a47,0x52a8,0x5a88,0x4a68,0x4248,0x31c6,0x41e7,0x3a48,0x3a08,0x39e8,0x31e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x3a07,0x3a07,0x4207,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x3208,0x3228,0x3208,0x3208,0x3a08,0x3208,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x3a09,0x3a28,0x3a28,0x4228,0x4228,0x3a28,0x4a28,0x3a28,0x4229,0x4249,0x4269,0x4249,0x3a48,0x4269,0x4a69,0x4269,0x4269,0x426a,0x4a6a,0x4a89,0x4a6a,0x4269,0x4a8a,0x4289,0x4a8a,0x5269,0x4aaa,0x4a8a,0x428a,0x4a6a,0x528b,0x52cb,0x4a8a,0x4a8a,0x5acb,0x528a,0x52cb,0x52cb,0x52eb,0x4aaa,0x52cb,0x52cc,0x5acb,0x52ac,0x52cc,0x52ab,0x52ea,0x52eb,0x530c,0x52ca,0x5aca,0x62eb,0x5aaa,0x62ec,0x5b0b,0x5aec,0x532d,0x530d,0x530c,0x52eb,0x52cb,0x52cb,0x52ec,0x5aec,0x630c,0x630b,0x5aeb,0x52cb,0x52eb,0x52cb,0x630c,0x5b0c,0x632d,0x5b2d,0x5b0c,0x5aec,0x632c,0x52ec,0x5acb,0x62ec,0x5aec,0x5b0c,0x630c,0x5aeb,0x52ec,0x52ec,0x52ec,0x52ec,0x52eb,0x5aec,0x5aec,0x630c,0x5b0c,0x52ec,0x5acb,0x5acc,0x52ec,0x5aeb,0x5aab,0x5acb,0x5aeb,0x5aec,0x5aeb,0x5acb,0x5acc,0x5aed,0x52ac,0x5b0c,0x52ec,0x52cb,0x52cc,0x52ab,0x52ab,0x52ab,0x528b,0x4aaa,0x52ab,0x4a8b,0x4a8b,0x5a6b,0x4a6a,0x528b,0x528b,0x52ab,0x52ab,0x526a,0x528a,0x4a8a,0x4a8a,0x5249,0x4a69,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a6a,0x4249,0x4249,0x4229,0x4249,0x4a49,0x4a49,0x4229,0x4249,0x4249,0x4229,0x4209,0x4a09,0x4228,0x3a28,0x3a08,0x39e8,0x4208,0x39e7,0x39e7,0x39c7,0x41e8,0x39c8,0x31c8,0x31e7,0x39c7,0x31c7,0x29c7,0x31c7,0x39c7,0x39a7,0x31c7,0x3986,0x39c7,0x39c7,0x31c7,0x31a7,0x29a6,0x31a7,0x2986,0x2985,0x31a6,0x31a6,0x3166,0x3166,0x2986,0x2966,0x3146,0x3186,0x2965,0x2966,0x2944,0x2945,0x2965,0x3145,0x2965,0x2965,0x2165,0x2166,0x2965,0x2965,0x2144,0x2945,0x2145,0x2105,0x2945,0x1945,0x2145,0x1925,0x1924,0x1124,0x2125,0x1945,0x2105,0x1925,0x2125,0x1904,0x2105,0x1904,0x1104,0x1904,0x1904,0x1903,0x1104,0x1904,0x1904,0x18e4,0x1103,0x20e4,0x1104,0x10e3,0x18e4,0x18e4,0x18e4,0x10e4,0x18e3,0x18c4,0x10e4,0x18c4,0x10c4,0x10e2,0x18c4,0x08e2,0x18e3,0x08c3,0x18c4,0x10a3,0x18a3,0x08a3,0x08a3,0x10a3,0x18a3,0x08a3,0x0882,0x10a2,0x1082,0x08a3,0x08a3,0x08c2,0x18c3,0x18c3,0x10a3,0x18a2,0x08c2,0x0883,0x1082,0x18a2,0x0882,0x10c3,0x10a2,0x10c2,0x10c2,0x10e2,0x18e2,0x1943,0x3a06,0x52a8,0x5289,0x5289,0x52a8,0x4287, +0xbdd5,0xdf5b,0x74d2,0x4a47,0x5288,0x5288,0x4a88,0x4228,0x2986,0x39e7,0x3a28,0x3208,0x31e8,0x3a08,0x3a28,0x41e8,0x39e8,0x39e7,0x3a08,0x3208,0x39e8,0x39e8,0x41e7,0x41e7,0x3a07,0x39e7,0x4208,0x41e8,0x39e7,0x31e7,0x3a07,0x3207,0x3207,0x39e8,0x39e8,0x3a08,0x3208,0x3208,0x3a08,0x4208,0x3208,0x3a29,0x3a28,0x3a08,0x3a28,0x3208,0x4229,0x3a28,0x4249,0x4228,0x3a28,0x3228,0x4269,0x3a69,0x4248,0x4249,0x3a69,0x4249,0x4249,0x4a69,0x4a69,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4289,0x4a89,0x528b,0x4a8b,0x4a6a,0x4a69,0x4a8a,0x52aa,0x52aa,0x528b,0x42aa,0x4aab,0x526a,0x5aaa,0x4aaa,0x4aab,0x528b,0x52ab,0x52ab,0x5acb,0x52ab,0x5aec,0x52cc,0x5aeb,0x52cb,0x5aec,0x52aa,0x52cb,0x52cb,0x5acb,0x52cb,0x52eb,0x62ec,0x5aec,0x52ec,0x5acb,0x632c,0x5b0c,0x5aec,0x52ec,0x52eb,0x52cb,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x4aaa,0x5aec,0x5b2d,0x5b2c,0x5b2c,0x630c,0x632d,0x5b2c,0x5b0c,0x5b0c,0x632c,0x530c,0x5aec,0x5b0c,0x52cb,0x52eb,0x530b,0x5aeb,0x52cb,0x5aec,0x52ec,0x5aed,0x52cb,0x52ec,0x5aed,0x52cb,0x4acc,0x530c,0x52eb,0x52cb,0x62cb,0x5acb,0x5acb,0x52cb,0x5aab,0x5acb,0x52ec,0x52ab,0x5acb,0x52eb,0x5aeb,0x5acc,0x52eb,0x5aab,0x52ab,0x52ab,0x52ac,0x528b,0x528b,0x52ab,0x4aab,0x4a6b,0x526a,0x526a,0x5a8a,0x528b,0x4a6a,0x528a,0x4a49,0x4a6a,0x4a6a,0x4a49,0x428a,0x528a,0x4269,0x4249,0x4a6a,0x3a4a,0x4229,0x4a2a,0x424a,0x4249,0x4229,0x4229,0x4249,0x4249,0x4249,0x4a48,0x4a28,0x4248,0x4229,0x39e7,0x4208,0x4208,0x3a07,0x3a07,0x4208,0x39e7,0x31c7,0x3a07,0x39e8,0x39e8,0x39c7,0x39c7,0x31e7,0x39c7,0x39a6,0x39c6,0x39c7,0x31c6,0x31a7,0x2987,0x2986,0x31a6,0x29a6,0x21a5,0x29a6,0x3186,0x3186,0x3185,0x3185,0x2985,0x2966,0x2965,0x2965,0x2986,0x2966,0x2985,0x2965,0x2945,0x2165,0x2165,0x1185,0x2165,0x2165,0x2165,0x2165,0x2945,0x2944,0x2145,0x2145,0x2925,0x2144,0x2104,0x2125,0x2104,0x2124,0x2125,0x1905,0x1905,0x1925,0x2125,0x2124,0x1105,0x1104,0x1904,0x1904,0x2104,0x1905,0x18e4,0x1904,0x1904,0x10e4,0x18e4,0x20e4,0x2104,0x18e3,0x18e3,0x20c4,0x18e3,0x18c4,0x18e4,0x10c4,0x10e4,0x1103,0x18e3,0x10c3,0x18e3,0x10c4,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x08c3,0x08c3,0x08c2,0x08c2,0x10c2,0x18c3,0x10c2,0x18a3,0x18a2,0x08a3,0x08a3,0x08a3,0x10c3,0x0881,0x1082,0x0882,0x10a3,0x10a2,0x18c2,0x10c2,0x18e3,0x20c3,0x1923,0x31e6,0x4a88,0x5289,0x5a89,0x6288,0x4a47, +0xbdd6,0xd75b,0x6cb2,0x4267,0x52a8,0x5288,0x4a68,0x4248,0x2925,0x4207,0x3a49,0x3207,0x3208,0x3a07,0x39e8,0x39e7,0x39e7,0x39e8,0x3208,0x3208,0x3a08,0x31e8,0x39e8,0x39c8,0x3a07,0x3a08,0x31c7,0x39a8,0x39e8,0x31e8,0x41e8,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31c7,0x4208,0x4a09,0x4a07,0x3208,0x3a28,0x3a28,0x3a28,0x4207,0x3a08,0x4208,0x3a29,0x3a08,0x3a07,0x3a28,0x3a08,0x4229,0x4229,0x4268,0x4289,0x426a,0x426a,0x4249,0x4248,0x4a69,0x4a6a,0x426a,0x428a,0x4a6a,0x4a49,0x4a69,0x4289,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x52aa,0x52ab,0x4aaa,0x4a8a,0x4aab,0x52ab,0x5acb,0x52ab,0x52eb,0x52ab,0x4a8a,0x52cb,0x52ab,0x52ab,0x5aeb,0x5aec,0x5aec,0x52cb,0x52cb,0x52cb,0x52ec,0x530c,0x52eb,0x52cb,0x52eb,0x5aeb,0x5aeb,0x5b0d,0x5b0c,0x5acb,0x630c,0x62ec,0x6b0c,0x630c,0x530b,0x5b0b,0x5b0c,0x52ab,0x52ec,0x52ec,0x52ab,0x5aed,0x530c,0x5aec,0x52ec,0x5aeb,0x632d,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x5aeb,0x62eb,0x5aeb,0x530b,0x532b,0x52eb,0x5acb,0x5aeb,0x5aec,0x52ec,0x52ec,0x52ec,0x530c,0x52cb,0x5aec,0x5aec,0x5b2d,0x5b0c,0x52eb,0x52eb,0x5b0c,0x630c,0x5acb,0x62ac,0x5aeb,0x52ab,0x5acb,0x5acb,0x5acb,0x5b0b,0x52eb,0x52ab,0x5a8b,0x52cc,0x528b,0x4a8b,0x528b,0x528b,0x5a8b,0x528b,0x528a,0x528b,0x526b,0x528b,0x4a8b,0x4a8a,0x528b,0x4acb,0x52aa,0x52a9,0x526b,0x4a69,0x4a69,0x4a69,0x424a,0x426a,0x3a69,0x4a69,0x4229,0x424a,0x3a49,0x4249,0x4208,0x4a49,0x4228,0x4a49,0x4a49,0x4229,0x4249,0x4249,0x4208,0x3a08,0x4208,0x4208,0x4207,0x39c7,0x39e8,0x3a08,0x39c7,0x39c8,0x39e8,0x39e8,0x3a07,0x31e7,0x31c7,0x31c6,0x3187,0x3187,0x31c6,0x31a7,0x3987,0x3186,0x31a6,0x31a6,0x21a6,0x2186,0x2186,0x2166,0x3166,0x3186,0x3186,0x2965,0x2986,0x2986,0x2185,0x2965,0x2945,0x2186,0x2165,0x2185,0x2165,0x3166,0x3166,0x3146,0x2945,0x3145,0x3165,0x2945,0x2945,0x2965,0x2145,0x2145,0x1925,0x2105,0x2105,0x1925,0x2124,0x2125,0x1925,0x1925,0x2105,0x1924,0x2124,0x2105,0x2105,0x1904,0x2125,0x2105,0x20e4,0x1925,0x2104,0x18e4,0x1904,0x18e4,0x18e3,0x20e4,0x20e4,0x18c4,0x10e3,0x18c3,0x18c3,0x18e4,0x10e4,0x1103,0x18e3,0x18a3,0x18c3,0x18c3,0x10c3,0x10e3,0x10a2,0x18c2,0x18c3,0x10c3,0x10a3,0x18c2,0x18a3,0x10a3,0x10c3,0x08e2,0x10a2,0x10a3,0x10c2,0x18a2,0x18a1,0x20a2,0x10a3,0x00a3,0x08a3,0x10a3,0x10a3,0x10a3,0x10c2,0x10a1,0x10c2,0x18a3,0x10a2,0x10e3,0x1903,0x1924,0x29c6,0x5289,0x4a88,0x52a8,0x5ac8,0x4247, +0xc616,0xdf5b,0x7492,0x4a67,0x4aa8,0x52a8,0x4a88,0x3a27,0x3986,0x4227,0x3208,0x31e7,0x3207,0x3a07,0x3208,0x39e7,0x39c7,0x3a08,0x3a07,0x3a08,0x39e8,0x31e8,0x39e7,0x39e7,0x31e6,0x39e7,0x39c7,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4208,0x3a28,0x3a07,0x3228,0x3a28,0x3228,0x39e8,0x41e7,0x4228,0x3a28,0x3a29,0x3248,0x3a28,0x4229,0x4209,0x4248,0x422a,0x3a48,0x4249,0x424a,0x4269,0x4269,0x4a48,0x4a6a,0x4a4a,0x4a6a,0x4249,0x4a6a,0x526a,0x4a8a,0x42aa,0x528a,0x526a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x528b,0x4a8a,0x52aa,0x4acb,0x52aa,0x52aa,0x52ab,0x52aa,0x52cb,0x52cb,0x4aab,0x4aaa,0x52aa,0x52ab,0x4aaa,0x5acb,0x5aec,0x52cb,0x52cb,0x52ab,0x52ec,0x5aec,0x5aeb,0x5aca,0x5aeb,0x5b2c,0x532d,0x5aeb,0x5acb,0x5b0c,0x5b0c,0x630d,0x5b0c,0x52aa,0x630c,0x5aec,0x5aec,0x52cb,0x630c,0x5b0c,0x62eb,0x5aeb,0x5aeb,0x5aec,0x5aec,0x5b0c,0x530c,0x5aed,0x5aec,0x530c,0x52cb,0x5aec,0x5b0c,0x630c,0x5b0c,0x62ec,0x5acc,0x5acb,0x52cc,0x5aec,0x5aec,0x630c,0x5b2c,0x632c,0x5b2c,0x5b2d,0x5b2c,0x5aec,0x5aeb,0x52cb,0x5acc,0x62ec,0x52cb,0x5aeb,0x62ec,0x52ab,0x52cc,0x52cc,0x52ab,0x5aec,0x4acb,0x5acb,0x5aac,0x52cc,0x52ab,0x5acb,0x52ab,0x52ab,0x526b,0x526a,0x526a,0x528a,0x4a8a,0x528b,0x528b,0x4a8b,0x4a6a,0x4a8a,0x4a8a,0x528a,0x528b,0x526a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x4a49,0x4a6a,0x5249,0x4a49,0x4249,0x4a4a,0x4a49,0x4229,0x4a48,0x4228,0x4a69,0x3a07,0x4248,0x4208,0x3a08,0x3a08,0x4228,0x41e7,0x39e7,0x39e8,0x41e8,0x39e8,0x41e8,0x41c8,0x41e8,0x39e7,0x39c8,0x39e8,0x31c7,0x31a7,0x39a7,0x31a7,0x3187,0x39a7,0x3186,0x31c6,0x31e6,0x3966,0x3167,0x2966,0x2986,0x2966,0x3187,0x2186,0x2985,0x3166,0x2985,0x2165,0x2166,0x3966,0x2966,0x2185,0x2985,0x2965,0x2945,0x2965,0x2165,0x2945,0x3145,0x2145,0x2925,0x2945,0x3126,0x2925,0x2125,0x1946,0x1925,0x2145,0x1925,0x2124,0x2925,0x2145,0x1144,0x1925,0x1905,0x1925,0x1925,0x2104,0x1104,0x18e5,0x1904,0x2105,0x1904,0x20e4,0x1904,0x1104,0x18e4,0x18e4,0x2104,0x18e3,0x18e4,0x18c3,0x20e3,0x20e3,0x1903,0x1903,0x10e3,0x10e3,0x18a4,0x10e3,0x10e3,0x18e3,0x18c3,0x10c3,0x10c2,0x18c3,0x18a3,0x10e3,0x10c3,0x18a3,0x08a2,0x10c3,0x08e3,0x08a3,0x10a3,0x10a2,0x10c3,0x10c2,0x18a3,0x18a3,0x08c2,0x08a2,0x1062,0x1063,0x10a2,0x10a2,0x10a2,0x08a2,0x18a2,0x20c2,0x18e3,0x18c3,0x2125,0x31e5,0x4a88,0x4a89,0x5289,0x52a8,0x4227, +0xbdf6,0xdf7c,0x7c92,0x4a68,0x4aa8,0x4a88,0x4a68,0x4227,0x39a6,0x4208,0x3a28,0x3208,0x31e7,0x3208,0x3208,0x39e7,0x41e7,0x31e7,0x31e7,0x39e8,0x3a07,0x3207,0x39e7,0x39e7,0x39e8,0x39e8,0x31c7,0x39e8,0x41e8,0x39e7,0x31c6,0x3a08,0x4208,0x4207,0x3a07,0x3a08,0x3a08,0x3a08,0x3208,0x4207,0x4208,0x4208,0x3a28,0x3a08,0x3a08,0x3a28,0x3a07,0x3a48,0x3a49,0x4249,0x4249,0x4229,0x4248,0x424a,0x3a49,0x3a49,0x4a69,0x4a69,0x4269,0x426a,0x426a,0x4a6a,0x424a,0x4269,0x4a69,0x4249,0x4269,0x4269,0x4a6a,0x528a,0x526a,0x5289,0x528a,0x52ab,0x4a8a,0x428a,0x4aaa,0x52ca,0x52ab,0x52aa,0x52ca,0x4acb,0x5aeb,0x5acb,0x62cc,0x52cb,0x52ca,0x52cb,0x52ec,0x5acc,0x5b0c,0x5acb,0x52eb,0x4aab,0x52ec,0x5b0c,0x5aeb,0x530b,0x5aeb,0x5b2c,0x532c,0x5aec,0x5b0c,0x630d,0x630c,0x5b0c,0x5aec,0x52ab,0x5acb,0x5aec,0x5aec,0x5b0c,0x630c,0x5aeb,0x6aec,0x630c,0x5aeb,0x5aec,0x530c,0x5aeb,0x5aec,0x5aec,0x52cb,0x5b0c,0x5aeb,0x630c,0x5aec,0x5b0c,0x52eb,0x52cc,0x5acc,0x5acb,0x52ec,0x630c,0x5b0c,0x5b0c,0x5aec,0x630c,0x52cb,0x5acc,0x5acc,0x52ab,0x5aeb,0x5acb,0x52ab,0x5aec,0x5aec,0x5acb,0x5aec,0x52cc,0x5b0c,0x5aec,0x52eb,0x52cb,0x4acb,0x52cc,0x5aec,0x5acb,0x52cc,0x5aab,0x528a,0x526a,0x5aab,0x5a8b,0x4a6a,0x526a,0x52aa,0x52ab,0x528b,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x428a,0x4269,0x4249,0x4a49,0x4a49,0x5268,0x4a29,0x4a29,0x5229,0x4a49,0x4a49,0x4248,0x4249,0x4a49,0x4208,0x4228,0x4208,0x4208,0x3208,0x3a28,0x3a08,0x41e8,0x31e8,0x39e8,0x31e7,0x39e7,0x39a7,0x41e8,0x3187,0x39c7,0x39c7,0x31a6,0x31c7,0x31a7,0x31a7,0x29a7,0x3187,0x3186,0x29a6,0x2987,0x3185,0x3186,0x3186,0x3186,0x3185,0x3166,0x2986,0x3186,0x3166,0x2986,0x3166,0x1966,0x39a6,0x2986,0x2965,0x2165,0x2945,0x3145,0x2165,0x2165,0x2165,0x2945,0x2144,0x2164,0x2165,0x2146,0x2125,0x2145,0x2125,0x2145,0x2164,0x2145,0x2925,0x2905,0x2145,0x1925,0x1924,0x2104,0x1925,0x2104,0x1904,0x1904,0x18e4,0x20e4,0x1904,0x2104,0x20e4,0x18e3,0x18e4,0x2105,0x18e4,0x10e4,0x18e4,0x18e4,0x18c4,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x08e2,0x18c3,0x10c4,0x08c3,0x20c3,0x18c3,0x10e3,0x10e3,0x10c3,0x10e3,0x18e3,0x18c4,0x18c3,0x18c2,0x18a3,0x10c3,0x08a2,0x10e3,0x10e3,0x10c3,0x10e2,0x10c1,0x10c2,0x08e2,0x18a2,0x1083,0x1082,0x10a2,0x08a3,0x0882,0x10c2,0x10a3,0x20a3,0x20e4,0x18c4,0x2104,0x39e6,0x4a88,0x4a69,0x5269,0x5a89,0x4207, +0xc5f7,0xe79d,0x7491,0x4a67,0x5a88,0x5288,0x4a68,0x4207,0x39c6,0x4a28,0x3a28,0x3208,0x39e8,0x3a08,0x3a08,0x3a07,0x39e7,0x31e8,0x39e8,0x3208,0x3a07,0x4208,0x41e7,0x31e7,0x39e8,0x41e8,0x4208,0x39e8,0x4208,0x4207,0x39e7,0x4208,0x4208,0x4208,0x3208,0x4209,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4a28,0x4228,0x3a28,0x3208,0x4228,0x4228,0x4228,0x4269,0x4229,0x4a49,0x3a49,0x4249,0x4249,0x4248,0x4a49,0x4a6a,0x426a,0x4269,0x4a49,0x4a6a,0x4269,0x4a89,0x4a8a,0x4269,0x4a69,0x4a8a,0x528a,0x528b,0x52ab,0x52ab,0x4a8a,0x4a49,0x528a,0x5aaa,0x5aca,0x52eb,0x52cb,0x52cb,0x52ab,0x5acb,0x5aeb,0x62cb,0x52eb,0x5b0b,0x530b,0x52eb,0x5acb,0x5acb,0x5acb,0x52eb,0x52ec,0x5aec,0x52ec,0x5aec,0x52cc,0x52cb,0x5aec,0x52eb,0x52cb,0x5b0b,0x5b2d,0x5b0c,0x5b0b,0x52ec,0x5aec,0x5aec,0x5aac,0x5acb,0x5aec,0x5aec,0x5b0c,0x5b2d,0x5b2d,0x634c,0x632c,0x5acb,0x630c,0x52ec,0x5aec,0x52ec,0x62ec,0x5b0b,0x5b0b,0x5aec,0x5acc,0x530b,0x5b0c,0x5acb,0x52ca,0x530c,0x530b,0x5aec,0x5acb,0x52eb,0x530c,0x52ec,0x5aec,0x62ed,0x5aeb,0x5aec,0x5aeb,0x5acb,0x5aec,0x52eb,0x5aec,0x5aeb,0x52cc,0x5aec,0x5aeb,0x52cb,0x52cb,0x52ab,0x62eb,0x632c,0x5aeb,0x5acb,0x52cb,0x5aab,0x52ab,0x528b,0x4a6a,0x4a8a,0x528a,0x526a,0x52ab,0x4a6b,0x4a69,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x528b,0x428a,0x4a6a,0x5269,0x4a6a,0x4a4a,0x4249,0x4a4a,0x4249,0x4a49,0x4a49,0x4a49,0x4a49,0x4228,0x4249,0x4208,0x4a49,0x4a08,0x4a6a,0x4229,0x3a08,0x3a28,0x31e8,0x39e8,0x3a08,0x41e8,0x41c7,0x39e8,0x31c7,0x31e7,0x39c8,0x39e8,0x31e7,0x31e7,0x31a7,0x39c7,0x31a7,0x31a6,0x31a7,0x39a6,0x3987,0x3186,0x31a6,0x2986,0x3987,0x2986,0x3166,0x3986,0x31a6,0x31a7,0x2986,0x2986,0x3165,0x3985,0x3146,0x2966,0x2985,0x2165,0x2166,0x1925,0x2145,0x2145,0x2145,0x3165,0x2945,0x2944,0x2164,0x2165,0x1965,0x1965,0x2165,0x2125,0x2145,0x1924,0x2145,0x1925,0x1945,0x1924,0x1925,0x2124,0x2905,0x20e4,0x2104,0x2125,0x1125,0x1904,0x10e4,0x20e5,0x1905,0x18e4,0x2104,0x18e4,0x20e3,0x1903,0x18e4,0x10e4,0x18e3,0x18e5,0x18c4,0x10c3,0x18e3,0x20e4,0x18c4,0x18e3,0x10e3,0x08e3,0x10c4,0x08e4,0x10c3,0x10c4,0x10e2,0x18c3,0x10c2,0x18c4,0x20e3,0x18c3,0x10e3,0x20c2,0x18a2,0x10c3,0x08c2,0x10c2,0x08a3,0x10a3,0x10a2,0x18a2,0x10a2,0x10c3,0x10c3,0x08c3,0x0883,0x10c3,0x08a3,0x08a3,0x08c2,0x08c2,0x18c2,0x20e4,0x18e4,0x1903,0x31e6,0x4267,0x5288,0x4a89,0x4a89,0x3a06, +0xc616,0xe79d,0x6c70,0x4a88,0x52a8,0x5288,0x4a68,0x3a27,0x39a6,0x3a07,0x4228,0x3a08,0x41e7,0x3a08,0x39e8,0x3a28,0x39e7,0x31c8,0x31c8,0x39e8,0x31e7,0x3208,0x39e7,0x39c7,0x41e7,0x41e8,0x39e8,0x3a08,0x3a07,0x3a07,0x39e7,0x3a08,0x4208,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4228,0x4a28,0x4228,0x4a29,0x3a29,0x4249,0x3a48,0x4228,0x4209,0x4229,0x4248,0x4a49,0x4248,0x4249,0x4269,0x4a49,0x4249,0x426a,0x3a29,0x4a6a,0x4269,0x4a49,0x4a69,0x4a8a,0x4a4a,0x428a,0x528b,0x526b,0x528a,0x5269,0x5aab,0x528b,0x52aa,0x4aaa,0x4aab,0x428b,0x52ab,0x5acb,0x52ac,0x52ab,0x52aa,0x52ab,0x52ab,0x5aeb,0x52aa,0x52cb,0x5acb,0x5b0b,0x5aeb,0x52eb,0x52eb,0x5aec,0x52cb,0x5acb,0x5aec,0x52eb,0x62ec,0x5b0c,0x52ec,0x5b2c,0x4aeb,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b0c,0x5aeb,0x5b2c,0x5b0d,0x5aec,0x52ac,0x5acc,0x530b,0x5aeb,0x52eb,0x5b0b,0x634d,0x5b2c,0x5b2d,0x5b2c,0x530c,0x632c,0x632c,0x530b,0x530c,0x5b0c,0x530c,0x5b0c,0x5aec,0x52cb,0x52eb,0x530c,0x52eb,0x52cb,0x5aec,0x5aec,0x52cc,0x52eb,0x5b0c,0x5aeb,0x5b0d,0x52ec,0x5b0c,0x5b2c,0x5b0c,0x5aeb,0x630c,0x5aec,0x5b0c,0x52cc,0x5aeb,0x52cb,0x52cb,0x5aeb,0x52ca,0x4aab,0x4a8a,0x52cb,0x5aeb,0x5acb,0x52ac,0x5aac,0x5a8b,0x528a,0x4a6a,0x426a,0x4a8a,0x4a8a,0x526b,0x526a,0x4a8b,0x4a6a,0x4a6a,0x4a8a,0x4289,0x52ab,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4249,0x3a49,0x4249,0x4249,0x4229,0x4229,0x4248,0x41e8,0x4228,0x3a08,0x3a29,0x31e8,0x3a09,0x3a08,0x3a28,0x3a28,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39a7,0x31c7,0x39c8,0x41e7,0x31c7,0x31a7,0x39c7,0x31a7,0x3187,0x3187,0x39a6,0x31a6,0x3186,0x2986,0x2985,0x31a7,0x3186,0x3187,0x2986,0x39a6,0x3186,0x39a6,0x3186,0x3185,0x39a6,0x3165,0x3965,0x2145,0x1965,0x1965,0x2145,0x2945,0x2145,0x2185,0x3165,0x2944,0x2965,0x2965,0x2946,0x2185,0x2145,0x2145,0x2125,0x2125,0x2125,0x2145,0x2125,0x1925,0x1925,0x20e5,0x2904,0x2905,0x1904,0x1925,0x1924,0x1105,0x1905,0x1905,0x1125,0x1905,0x1903,0x1904,0x1924,0x2124,0x1903,0x1103,0x1904,0x10e3,0x1103,0x18c4,0x10e4,0x1904,0x18c4,0x18e4,0x08e4,0x10e4,0x08c2,0x18e4,0x18c3,0x18e3,0x10c4,0x08c3,0x18c3,0x10c3,0x18e3,0x08e3,0x08c3,0x18c3,0x20c2,0x10c3,0x08a3,0x10c2,0x08c3,0x18c2,0x18c3,0x18c2,0x18a3,0x10a2,0x08a2,0x10a2,0x08a2,0x10c2,0x08a2,0x10c3,0x10a2,0x10a2,0x10a2,0x08a2,0x18e4,0x18e3,0x18e3,0x31e5,0x4288,0x4a88,0x5289,0x5289,0x3a06, +0xc616,0xe7bd,0x6c50,0x4a88,0x52a9,0x5288,0x4a88,0x3a47,0x2985,0x3227,0x3228,0x3a08,0x39e8,0x3a07,0x39e8,0x3a08,0x39e7,0x39e7,0x3208,0x39e8,0x3207,0x3208,0x39c8,0x39c8,0x39e7,0x4209,0x39e8,0x3a08,0x3a08,0x4207,0x3a07,0x39e8,0x39e8,0x3a08,0x41e8,0x4208,0x3a08,0x3a08,0x4228,0x4249,0x4227,0x3a07,0x3a08,0x4249,0x3a48,0x4229,0x4228,0x4228,0x4a28,0x4a49,0x4249,0x4249,0x4a49,0x4a49,0x4a49,0x4a8a,0x4a69,0x5269,0x4a6a,0x4a49,0x4a6a,0x528a,0x4a6a,0x428a,0x528a,0x528a,0x5aaa,0x4a89,0x4a69,0x528a,0x52ab,0x52cb,0x52aa,0x52ab,0x528b,0x52ab,0x52ec,0x528b,0x52cb,0x52cb,0x5acb,0x5aec,0x52cb,0x4acc,0x52cb,0x4a8a,0x52ab,0x52ab,0x52cb,0x52cb,0x5aec,0x5aec,0x5b0c,0x62eb,0x5aeb,0x5b2c,0x5aeb,0x52eb,0x530c,0x5b2c,0x5aed,0x5aed,0x5acb,0x5aec,0x5aab,0x632c,0x630c,0x5aec,0x5aec,0x62ec,0x5aec,0x630c,0x5b2c,0x5b0c,0x630d,0x5b0d,0x5b2c,0x630c,0x5b2d,0x5b0c,0x5b0c,0x530c,0x5b0c,0x630d,0x5b2d,0x5b0c,0x5b2c,0x5b2d,0x636c,0x5b2c,0x52cb,0x52ec,0x5aec,0x52ab,0x5b0c,0x52cc,0x5b0c,0x5b2c,0x632c,0x52eb,0x5aeb,0x630d,0x5b0c,0x52cb,0x52ec,0x5acb,0x5aec,0x52cc,0x52cc,0x52ec,0x52cc,0x5aec,0x630c,0x5b0c,0x5aec,0x5acc,0x5aab,0x52cb,0x52cb,0x52ab,0x5acb,0x52ab,0x4a8b,0x4a8b,0x4aaa,0x4aab,0x528b,0x5269,0x528a,0x4a6a,0x4a6a,0x4a8a,0x4249,0x528a,0x526a,0x524a,0x4a6a,0x4a6a,0x426a,0x4a49,0x4a49,0x4249,0x3a69,0x3a69,0x4a49,0x4249,0x4209,0x422a,0x4a28,0x4a69,0x4a69,0x3a28,0x3a29,0x4229,0x4229,0x4207,0x4208,0x4208,0x3a08,0x3a07,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39c7,0x31c7,0x31a6,0x39c7,0x31c7,0x31c7,0x39c7,0x39a7,0x39c8,0x31a6,0x31a7,0x31a6,0x2985,0x31c6,0x31a6,0x31a7,0x3186,0x3186,0x3186,0x3186,0x3186,0x3165,0x3166,0x3145,0x3166,0x2166,0x2966,0x2965,0x2165,0x2165,0x2965,0x2946,0x1965,0x2945,0x2945,0x2964,0x1945,0x2144,0x2145,0x2945,0x2145,0x2945,0x2924,0x1945,0x1965,0x1924,0x20e4,0x2125,0x1945,0x1944,0x2125,0x1924,0x1924,0x2145,0x1905,0x1105,0x1904,0x2104,0x18e4,0x18e4,0x1104,0x1104,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x1104,0x18e4,0x18e4,0x18c3,0x08e3,0x10e4,0x10e4,0x18e3,0x10c3,0x18e3,0x18c4,0x18e4,0x18e4,0x10c3,0x10c3,0x08c3,0x10a2,0x18c3,0x18e2,0x10c2,0x18c3,0x18c3,0x10e3,0x18e2,0x10e3,0x10c2,0x10c3,0x10c3,0x10a3,0x10c3,0x00c3,0x08a2,0x10a3,0x08a2,0x08a2,0x10c2,0x10c3,0x10c3,0x1904,0x18e3,0x1902,0x39e6,0x4268,0x5289,0x5a89,0x5aa9,0x3a27, +0xc617,0xe7bd,0x6c50,0x4a88,0x5289,0x5288,0x5268,0x4227,0x39a6,0x3a47,0x3a48,0x3a07,0x39e7,0x3207,0x3208,0x3a08,0x39e7,0x39e7,0x3a08,0x3a07,0x3a08,0x39e7,0x41e7,0x39e7,0x31e8,0x3a09,0x3a08,0x3208,0x4209,0x4208,0x3a08,0x3a08,0x4228,0x3a29,0x3a07,0x4208,0x39e8,0x3228,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4208,0x4a29,0x4229,0x4229,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x4269,0x4269,0x528a,0x528a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a69,0x4a8a,0x528a,0x5a8a,0x528b,0x528b,0x528a,0x4a89,0x52aa,0x5aca,0x528a,0x4aaa,0x5acb,0x52aa,0x5aeb,0x5aec,0x52cb,0x5acb,0x5acb,0x5aeb,0x5aec,0x52eb,0x52cb,0x5acc,0x5aec,0x5acc,0x6aed,0x5b0c,0x62ec,0x630c,0x5acb,0x5aec,0x5aec,0x530b,0x52eb,0x5aeb,0x632c,0x630c,0x5aec,0x52ec,0x5aec,0x5aec,0x630c,0x5b0d,0x5aec,0x5b2c,0x5b2d,0x630c,0x5aec,0x630d,0x5b2c,0x5b2c,0x6b4d,0x5aec,0x5aec,0x630c,0x5b2c,0x5b2c,0x630c,0x5b0c,0x52cb,0x630d,0x5aec,0x630c,0x5b0c,0x5aec,0x5b0c,0x632d,0x630c,0x5b2c,0x5b0d,0x632d,0x632c,0x62ed,0x632d,0x5b6d,0x634d,0x5b0c,0x62ec,0x630d,0x630d,0x5aec,0x62ec,0x62ec,0x630d,0x630d,0x52cc,0x52ec,0x5aec,0x5acc,0x52ec,0x5b0c,0x52cb,0x52ac,0x4aab,0x4a8a,0x52cb,0x52ab,0x52cb,0x52ab,0x52ab,0x52ab,0x52ab,0x4a8b,0x4a4b,0x4a8a,0x526a,0x4a6a,0x526b,0x528a,0x4a8a,0x526a,0x524a,0x4a6a,0x4a6a,0x4a49,0x526a,0x4a6a,0x526a,0x4a69,0x4a6a,0x4269,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4a49,0x4a69,0x4249,0x4229,0x4a49,0x4249,0x4228,0x4228,0x41e8,0x4208,0x4208,0x3a28,0x39e8,0x39e8,0x39c7,0x41e8,0x39e8,0x39c7,0x31c7,0x39c7,0x39e7,0x31c7,0x39e7,0x29c7,0x29a7,0x29a7,0x31a7,0x31a6,0x2985,0x31c6,0x31c7,0x31a6,0x39a6,0x3186,0x2946,0x29a6,0x31a6,0x3186,0x3185,0x3186,0x2986,0x2966,0x2966,0x2965,0x2986,0x2185,0x2165,0x3166,0x3145,0x2945,0x3146,0x2945,0x2165,0x2965,0x2965,0x2145,0x2925,0x2145,0x1145,0x2144,0x2145,0x1945,0x1924,0x2104,0x2904,0x2104,0x1904,0x2104,0x2905,0x2124,0x1924,0x2905,0x2105,0x2104,0x2905,0x20e5,0x2104,0x10e4,0x1104,0x20e4,0x18e4,0x18e3,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x10e3,0x10e3,0x18c4,0x18e4,0x18c4,0x18e4,0x10e3,0x10c4,0x18c4,0x18c3,0x08c3,0x10e3,0x18c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x08e2,0x08c2,0x18c2,0x10a3,0x0883,0x08c2,0x08c3,0x08c2,0x00c2,0x08a2,0x08c2,0x10c2,0x20c2,0x10e4,0x1103,0x08e3,0x39c6,0x4a67,0x5288,0x5aa9,0x5aa9,0x41e6, +0xc616,0xe7bd,0x6410,0x4a88,0x52a9,0x5288,0x4a68,0x3a07,0x31a6,0x3a28,0x3a28,0x3a08,0x39e7,0x3208,0x3a07,0x39e8,0x31e7,0x31e7,0x3207,0x3a07,0x31a7,0x39e8,0x3a07,0x3a07,0x3a08,0x3a08,0x39e8,0x31e8,0x31e8,0x3207,0x39e8,0x4208,0x4228,0x3a08,0x4208,0x4229,0x3a08,0x3a08,0x4208,0x4208,0x3a08,0x3a28,0x3a28,0x4208,0x4249,0x4209,0x4249,0x4269,0x4a49,0x4249,0x4249,0x3a49,0x4249,0x4a49,0x4269,0x4269,0x4a69,0x4aaa,0x4a8a,0x426a,0x4a8a,0x4a6a,0x428a,0x4a69,0x4a4a,0x526a,0x4a8b,0x42ab,0x4aab,0x52ab,0x4aaa,0x528a,0x52ab,0x528a,0x52aa,0x5acb,0x52aa,0x52cb,0x5aeb,0x52cb,0x5acb,0x5b0c,0x52ec,0x52cb,0x52cc,0x5acb,0x52cb,0x52ec,0x5aec,0x52cb,0x52eb,0x52eb,0x5b0c,0x630d,0x5aec,0x62ec,0x62ec,0x62cc,0x62eb,0x5b0c,0x52eb,0x5b2c,0x5b0c,0x632c,0x632c,0x5b2c,0x530c,0x632d,0x62ec,0x630d,0x5b0c,0x630c,0x632c,0x634d,0x5b0c,0x5b2c,0x5b0c,0x632d,0x5b2d,0x5b2d,0x630c,0x634d,0x530c,0x5b0b,0x5b0c,0x5b0c,0x5aec,0x530d,0x632e,0x632d,0x6b2c,0x632c,0x632c,0x634d,0x62ec,0x5b0c,0x5b2c,0x5b2c,0x5b2d,0x632c,0x630d,0x52ec,0x52ab,0x5acb,0x62cc,0x5aec,0x62ec,0x5acc,0x52cb,0x52cb,0x5aec,0x52eb,0x5aeb,0x5aeb,0x530c,0x52cc,0x52ec,0x5acb,0x52ab,0x52ab,0x5aab,0x52ab,0x52ab,0x52aa,0x52ab,0x4aab,0x526a,0x4a8a,0x428a,0x528a,0x528b,0x4a4a,0x4249,0x528a,0x528b,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x528a,0x528a,0x528a,0x526a,0x528a,0x4a6a,0x4a69,0x4269,0x4a69,0x4a69,0x4229,0x4229,0x4269,0x4228,0x4a28,0x4228,0x3a08,0x3a09,0x41e8,0x41e8,0x39e8,0x3208,0x3a08,0x39e8,0x31e8,0x39e8,0x41e8,0x41e8,0x39e7,0x31c7,0x31e7,0x39c7,0x39c7,0x31c6,0x31a7,0x31c7,0x31a7,0x39c6,0x31c6,0x31c6,0x39c7,0x39a6,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2986,0x2186,0x2186,0x2185,0x2966,0x2945,0x2145,0x2965,0x3146,0x2165,0x3165,0x2966,0x2145,0x2145,0x2965,0x3165,0x2945,0x2144,0x2944,0x1925,0x2926,0x1945,0x2145,0x1924,0x2124,0x2105,0x1125,0x1944,0x1944,0x1944,0x1925,0x2104,0x1124,0x1924,0x2125,0x1944,0x1905,0x20e5,0x2104,0x1903,0x1923,0x1904,0x10e3,0x18e4,0x10e4,0x18e3,0x10e4,0x10e4,0x18e4,0x18e4,0x18e3,0x0903,0x1103,0x20c4,0x20c4,0x10e4,0x10e4,0x10e4,0x10e4,0x10e3,0x18e3,0x18e2,0x18e3,0x18c3,0x18c3,0x18c3,0x20c2,0x10c2,0x08e2,0x10a4,0x10c3,0x08c3,0x10c3,0x20a3,0x10a3,0x10a3,0x10a3,0x00c2,0x10c3,0x08a3,0x10a3,0x10c2,0x10a2,0x18c2,0x10e4,0x1104,0x08e3,0x39c6,0x5287,0x5288,0x52a9,0x5aa9,0x39c5, +0xc5f6,0xe7bd,0x5c10,0x5289,0x5aa9,0x5288,0x5288,0x3a47,0x31c7,0x4228,0x3a29,0x3a08,0x3a08,0x3a08,0x3a28,0x3a07,0x2a07,0x31e7,0x3a07,0x4207,0x4208,0x39e8,0x3a08,0x3a08,0x3a07,0x3a08,0x39c7,0x39e8,0x3a08,0x3a08,0x3228,0x3a08,0x4229,0x4209,0x4228,0x3a48,0x3a08,0x39e8,0x4228,0x4228,0x4229,0x4229,0x4249,0x3a08,0x3a28,0x39e8,0x4269,0x4249,0x4229,0x4a49,0x4249,0x4269,0x5249,0x4a6a,0x4a8a,0x4a4a,0x4a6a,0x528a,0x4aaa,0x4a6a,0x4aaa,0x528a,0x4aaa,0x4a8a,0x4a8a,0x528b,0x528b,0x528a,0x4aaa,0x52aa,0x52aa,0x52ab,0x5acb,0x5a8b,0x5aab,0x5aab,0x52ab,0x52cb,0x5acb,0x5acc,0x5acb,0x52eb,0x52cb,0x5aec,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x5acb,0x5aec,0x5b0c,0x5b0c,0x5acc,0x5aec,0x5b0c,0x5aeb,0x62ec,0x5aec,0x5aed,0x5b0d,0x5b0c,0x5b0c,0x5b4d,0x5b2c,0x630c,0x5b2c,0x5b0c,0x5b0c,0x630d,0x632d,0x632c,0x632c,0x5b4c,0x5b2c,0x52ab,0x634d,0x634d,0x5b2d,0x632d,0x632c,0x6b6d,0x634d,0x634c,0x632d,0x5b2d,0x5b0c,0x634d,0x634d,0x630c,0x6b2c,0x632c,0x5b0c,0x5b2d,0x630d,0x632c,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x630d,0x5aec,0x5b2c,0x5aec,0x5aec,0x630c,0x5b0c,0x5b0d,0x5aec,0x52ec,0x5b0c,0x530c,0x42aa,0x52cb,0x52ec,0x52ab,0x5aec,0x630d,0x5aeb,0x5acb,0x5aac,0x52ab,0x5aac,0x52ab,0x5acb,0x52ab,0x528a,0x4a6a,0x528b,0x528a,0x4a6a,0x528b,0x4a8a,0x528a,0x4a6a,0x426a,0x428a,0x4a8b,0x4a8a,0x528b,0x528a,0x4a8b,0x4a8b,0x4a6a,0x4a29,0x4a4a,0x4a8a,0x4a6a,0x4a69,0x4a49,0x4249,0x4229,0x4208,0x4228,0x4248,0x39e9,0x31c8,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x39e7,0x31e7,0x41e7,0x4207,0x39e8,0x31c8,0x31c7,0x31e7,0x31c7,0x31c6,0x31a7,0x39c8,0x31a6,0x39a7,0x31a7,0x31c7,0x39a7,0x39a6,0x31a6,0x3186,0x31a7,0x3186,0x31a7,0x2166,0x2165,0x2986,0x2186,0x3186,0x2966,0x3146,0x3146,0x3165,0x3966,0x2946,0x2145,0x2986,0x2165,0x2965,0x3145,0x2965,0x2166,0x2165,0x2145,0x1925,0x2125,0x2145,0x1945,0x1904,0x1924,0x1924,0x1925,0x2144,0x2105,0x1144,0x2124,0x2125,0x2105,0x1904,0x1104,0x1925,0x2145,0x2123,0x1104,0x2105,0x1924,0x1903,0x18c4,0x18e4,0x1905,0x1904,0x0903,0x1103,0x1104,0x1104,0x18e3,0x1903,0x1902,0x1903,0x18a4,0x18e4,0x18e5,0x1103,0x18e3,0x1103,0x18c2,0x18e3,0x20c2,0x18e3,0x20e2,0x20e3,0x18c2,0x08c3,0x08c3,0x08c3,0x10c3,0x10a3,0x08a3,0x10c2,0x08c2,0x08c3,0x10c3,0x10c3,0x18a3,0x10a2,0x10a3,0x08a3,0x10a3,0x10c2,0x18e3,0x18e3,0x08e3,0x31c6,0x5267,0x4aa9,0x52a9,0x5aa9,0x41e6, +0xc616,0xe7dd,0x5c0f,0x5288,0x5a89,0x52a8,0x5288,0x4247,0x31e6,0x3a48,0x3a28,0x3a08,0x3a28,0x3a08,0x3228,0x39e7,0x3208,0x3a07,0x3a08,0x3a08,0x41e7,0x4208,0x3a09,0x31e8,0x3a07,0x3a08,0x4a28,0x3a07,0x4208,0x4207,0x3a28,0x3a08,0x4228,0x4208,0x4229,0x4a29,0x4228,0x3a28,0x3228,0x3a29,0x4249,0x4249,0x3a49,0x3a49,0x4228,0x4249,0x4269,0x4a49,0x4248,0x4269,0x4a69,0x4a49,0x4269,0x4229,0x4a6a,0x4a6a,0x4a6a,0x528a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x42aa,0x4aaa,0x528a,0x526b,0x528b,0x4aaa,0x42aa,0x52aa,0x4acb,0x4aec,0x5aec,0x52ab,0x5aab,0x52cb,0x52eb,0x5aeb,0x630c,0x5aec,0x5b0c,0x532c,0x530b,0x52ec,0x5aeb,0x5aeb,0x52eb,0x5b0b,0x630d,0x630c,0x5aec,0x632c,0x5b2c,0x530c,0x52eb,0x5b0b,0x5b2c,0x5b2d,0x5b0d,0x5b0d,0x52eb,0x5b0c,0x632d,0x634d,0x632d,0x630c,0x5b2c,0x632d,0x5b0c,0x632d,0x5b0c,0x632d,0x636d,0x636d,0x5b2c,0x632d,0x632c,0x5b2c,0x5b0d,0x6b2d,0x6b2d,0x6b6d,0x5b2c,0x632c,0x6b2d,0x5b0c,0x5b2d,0x5b0c,0x630c,0x630d,0x632d,0x632c,0x5b0d,0x5b0c,0x62ec,0x5aec,0x5b0d,0x5b0d,0x5b2c,0x632d,0x5b0c,0x530c,0x62eb,0x5b0c,0x5b2c,0x52eb,0x530b,0x52ec,0x5aec,0x5b0c,0x532c,0x632c,0x52cc,0x52ab,0x5acc,0x528a,0x526a,0x52ab,0x52eb,0x528b,0x4a4a,0x526a,0x528a,0x4a8b,0x526a,0x528a,0x4a4a,0x4a6a,0x4aaa,0x4a29,0x4a4a,0x428a,0x4aaa,0x528a,0x4a8a,0x4a8a,0x4a69,0x4aab,0x528b,0x4a49,0x4a6a,0x4aaa,0x4aab,0x4a8a,0x4249,0x426a,0x526a,0x426a,0x4a6a,0x5249,0x4a69,0x4228,0x4a49,0x4a49,0x3a29,0x4229,0x4208,0x3a08,0x4228,0x4228,0x3a08,0x4208,0x3a28,0x3a28,0x39e8,0x39e8,0x4228,0x39e7,0x31c7,0x39e8,0x39c7,0x31e7,0x31e7,0x31e7,0x31a7,0x31c7,0x41e8,0x41e7,0x39c7,0x39e8,0x39e7,0x39c7,0x41a7,0x39a7,0x39a7,0x31a7,0x31a7,0x21a6,0x3186,0x31a6,0x39a6,0x3186,0x39a7,0x3986,0x3986,0x3187,0x2986,0x2186,0x2166,0x2966,0x3986,0x2986,0x2166,0x21a6,0x2186,0x2165,0x2985,0x2965,0x2945,0x2945,0x2165,0x2165,0x2945,0x2945,0x2145,0x2125,0x2125,0x2144,0x1925,0x2125,0x2124,0x2944,0x2125,0x2125,0x2905,0x2105,0x20e4,0x2105,0x2905,0x1904,0x2125,0x1105,0x1903,0x1104,0x10e3,0x18e4,0x18e5,0x18e3,0x18e4,0x18e4,0x18e3,0x18e4,0x1904,0x18c4,0x18c3,0x18e4,0x08e4,0x00c3,0x08c2,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x08c2,0x10c3,0x10a3,0x10a3,0x18c3,0x10c3,0x10c3,0x10a3,0x1082,0x10a2,0x08a3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10e2,0x1903,0x20e3,0x10c3,0x39e6,0x5288,0x5289,0x5289,0x52a9,0x3a06, +0xc617,0xe7de,0x5c0f,0x4a88,0x4aa9,0x4a89,0x4a88,0x4248,0x39e7,0x3a28,0x4229,0x3a28,0x4208,0x4228,0x3a08,0x4207,0x3a08,0x3a08,0x39e8,0x31e8,0x4208,0x4208,0x3a08,0x3a09,0x39e7,0x39e8,0x4249,0x3a29,0x3a08,0x41e8,0x3a28,0x3208,0x3a08,0x39e8,0x4228,0x31e7,0x3a28,0x4249,0x4228,0x4229,0x3a29,0x4229,0x4a48,0x4a48,0x4249,0x4229,0x4229,0x4249,0x3a49,0x4269,0x4229,0x4a49,0x426a,0x422a,0x424a,0x4a4a,0x4a49,0x528a,0x4a4a,0x4a89,0x4a69,0x4a8a,0x4a6a,0x52aa,0x4249,0x4a4a,0x528b,0x528b,0x4a6a,0x52aa,0x52cb,0x52ca,0x5acb,0x4aab,0x52ab,0x52cc,0x4aab,0x4aab,0x52cc,0x4aaa,0x52aa,0x52ec,0x52cc,0x52cc,0x5acb,0x5b0c,0x52ec,0x5aeb,0x52cb,0x5acb,0x5acc,0x52eb,0x5b2c,0x5aeb,0x5aec,0x52cb,0x5aec,0x530c,0x5aac,0x630c,0x632c,0x634c,0x62ec,0x62cc,0x62cc,0x5b0c,0x5b0c,0x5aec,0x52aa,0x5acb,0x6b2d,0x62ec,0x630c,0x5aec,0x5aec,0x5b0d,0x634d,0x636d,0x632c,0x6b4d,0x634d,0x5b4d,0x5b2d,0x62ec,0x5aec,0x5b0c,0x632d,0x5aec,0x632d,0x5b0d,0x5b0c,0x632c,0x5b0c,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x5b2b,0x5aeb,0x62ec,0x5acc,0x62ec,0x6b0d,0x634d,0x5b2d,0x5b0c,0x5b0b,0x630b,0x630c,0x5b0c,0x62cb,0xe77d,0x73d1,0x52cc,0x9cf3,0xad77,0x52ec,0x4a69,0xb595,0xdf1b,0xce9a,0x6b0e,0xad55,0x8c72,0x39e8,0xbe39,0x426b,0x4a29,0x94b2,0x9d56,0x3208,0x52cb,0x4a8a,0x4a8b,0x528b,0x4a6a,0x4a4a,0x4a4a,0x426a,0x41e8,0x4209,0x424a,0x4229,0x4229,0x41e8,0x41e9,0x4a2a,0x4a29,0x4209,0x4a29,0x4a29,0x4229,0x41a8,0x39e8,0x3a08,0x31c7,0x1986,0x1966,0x29a6,0x29a6,0x31a7,0x31a6,0x3186,0x3166,0x2946,0x3186,0x3186,0x2965,0x2985,0x2165,0x2146,0x2945,0x2946,0x2966,0x2966,0x2966,0x2104,0x2946,0x2125,0x2105,0x2105,0x20e5,0x20e4,0x18e3,0x1925,0x1906,0x18e4,0x20e4,0x20e4,0x28e4,0x18c4,0x20e4,0x20c3,0x20e4,0x1905,0x10c4,0x10c3,0x10c4,0x18e4,0x18a4,0x20c4,0x18c4,0x18c4,0x18a3,0x10a3,0x10c4,0x18c3,0x18c4,0x18a3,0x1083,0x08a3,0x10c4,0x18e4,0x10c4,0x10c4,0x10e5,0x10c3,0x10a3,0x10a3,0x10c3,0x0883,0x0883,0x10a4,0x1063,0x0863,0x08a3,0x1084,0x1082,0x1082,0x08a3,0x08c3,0x0882,0x0882,0x1083,0x1083,0x1083,0x0882,0x10a3,0x0882,0x0882,0x0882,0x1082,0x0882,0x1083,0x10a3,0x10a3,0x10a3,0x0883,0x1082,0x10a2,0x0882,0x0862,0x0883,0x1083,0x1083,0x1083,0x10a3,0x0883,0x0863,0x1863,0x1083,0x18c3,0x18c4,0x10a3,0x08a3,0x10a3,0x18a3,0x10a3,0x18c3,0x18c2,0x0903,0x1103,0x1904,0x29c6,0x4288,0x4a88,0x5289,0x5aaa,0x3a06, +0xc617,0xe7dd,0x5bef,0x52a9,0x52a9,0x52a9,0x5288,0x4247,0x4228,0x3208,0x3a29,0x3a28,0x4208,0x3a28,0x3a07,0x39e7,0x3166,0x526a,0x52ab,0x52ac,0x52ab,0x3a4a,0x3a29,0x4209,0x4a6a,0x4a4a,0x4229,0x424a,0x4a4a,0x424a,0x424a,0x4a4a,0x3a49,0x426a,0x4a6b,0x526b,0x428b,0x42ab,0x4acb,0x4a8a,0x52ab,0x4aab,0x428b,0x4a8b,0x52cc,0x52ac,0x52ac,0x52cc,0x52cc,0x632d,0x630d,0x530d,0x5aed,0x5aed,0x5b0c,0x5b0e,0x5b2d,0x636f,0x636f,0x738f,0x73af,0x6b6e,0x636f,0x636f,0x738f,0x6b8f,0x6b8e,0x6b8f,0x638f,0x638f,0x6b6e,0x636e,0x6b8f,0x73af,0x73b0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x8411,0x8472,0x7c52,0x8451,0x8452,0x8472,0x8452,0x8c52,0x8c72,0x8cb3,0x94b3,0x8c73,0x8c93,0x8c72,0x94d4,0x94f4,0x8452,0x8c72,0x9d14,0xa535,0xa514,0x9d35,0x9515,0xa536,0xa536,0x9d35,0x9d55,0xa597,0xa556,0xa555,0xa555,0xa535,0xa555,0xad76,0xad56,0xa555,0xad76,0xa556,0x9d15,0xad56,0xad56,0xad56,0xad96,0xad96,0xa555,0xa536,0xa576,0xa576,0xa576,0xa576,0x9d35,0x9d35,0xa535,0x9d35,0x9d14,0x9cf4,0x94f4,0x94d4,0x9493,0x9493,0x9cd4,0x9cf4,0xa536,0xad55,0xa515,0xadb7,0x94f5,0x52cc,0x630c,0x630c,0x630c,0x4a8a,0x9472,0xd6d9,0xb5d7,0x424a,0xa4d2,0xc63a,0x52cc,0x4a09,0xc636,0x52ab,0xa513,0xa536,0xb5b6,0x9d36,0x31a7,0xdefb,0x422b,0x5229,0xdedb,0xe75d,0x4acc,0x5a8b,0x528a,0x528b,0x52ab,0x73af,0xc679,0xb618,0xbdf7,0xc618,0xc67a,0xc67a,0xc639,0xc639,0xc659,0xce7a,0xc67a,0xbe59,0xc639,0xc639,0xc639,0xbe39,0xbe18,0xbe19,0xbdf8,0xbdd7,0xb5f8,0xbe38,0xc659,0xbe39,0xbe39,0xb618,0xc659,0xc659,0xc659,0xc65a,0xbe19,0xc65a,0xbe39,0xbe59,0xbe59,0xbe59,0xc67a,0xc659,0xc679,0xc659,0xbe38,0xbe38,0xbe59,0xce9a,0xc659,0xbe78,0xbe59,0xb658,0xbe79,0xbe79,0xbe79,0xbe59,0xb659,0xbe79,0xc659,0xc679,0xc679,0xc679,0xc679,0xbe39,0xc659,0xc679,0xc659,0xbe59,0xb659,0xbe59,0xb638,0xc659,0xc679,0xbe19,0xbe59,0xbe58,0xb618,0xb618,0xbe78,0xc659,0xbe18,0xbe18,0xbe58,0xb619,0xb617,0xb5f8,0xb5f8,0xbe18,0xc638,0xbe18,0xbe18,0xb617,0xbe38,0xce5a,0xb5f8,0xb5d7,0xbe18,0xb638,0xbe38,0xb618,0xb5d8,0xb618,0xb638,0xbdf8,0xb5d7,0xb5f8,0xb5d7,0xb5f7,0xad97,0xa5b7,0xa5f7,0xadf7,0xbdf8,0xb5d7,0xadb7,0xa556,0xa596,0xadb6,0xad76,0xad76,0xa596,0xad96,0xa596,0xa596,0xa595,0x9d55,0x9d34,0xa534,0x9d34,0x9d14,0xa555,0x9514,0x94d3,0x8c32,0x18a4,0x18a4,0x18c3,0x10e3,0x18e3,0x2104,0x10e3,0x39c6,0x4a88,0x4aa9,0x52a9,0x5a8a,0x4207, +0xc617,0xdfdd,0x5baf,0x52c9,0x52a9,0x4aa9,0x5288,0x4247,0x5aca,0x3a29,0x3a29,0x3a08,0x3a28,0x4208,0x39a6,0x7baf,0xdefc,0xef9e,0xef9d,0xe7be,0xe7df,0xefdf,0xf7df,0xf7ff,0xffff,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7fe,0xffff,0xffff,0xf7ff,0x530e,0x5b0c,0x5b0c,0x5aec,0x4a69,0xe75c,0x73ae,0xdf3c,0x4a8b,0x9cb2,0xbe39,0x4aac,0x4a28,0xc637,0xd6fb,0xe71c,0x73cf,0xbd96,0xdf3d,0xced9,0xef9e,0x422a,0x9cb2,0xbdf9,0xad75,0x8cb4,0x4a29,0x52ab,0x4aab,0x52ec,0x9491,0xef7d,0xe73c,0xe73c,0xe73c,0xdf1c,0xe73c,0xe73c,0xe71c,0xdf1b,0xdefb,0xd6fa,0xd6fa,0xdf1b,0xd6fa,0xdeda,0xd6ba,0xd6ba,0xd69a,0xceb9,0xce99,0xce99,0xce78,0xd699,0xd69a,0xce78,0xd6b9,0xce58,0xc658,0xc638,0xc617,0xbdf7,0xbdf7,0xbdf7,0xb5f6,0xbdf6,0xbdd6,0xb5b5,0xb5b5,0xb5b5,0xb595,0xb5b6,0xbd96,0xb554,0xb554,0xad54,0xad54,0xa554,0xad75,0xad74,0xa534,0x9d13,0x9cd2,0x9cf2,0x9cf3,0x94b2,0x8c91,0x9471,0x94b2,0x8c71,0x9491,0x9471,0x9470,0x9471,0x8430,0x8450,0x8430,0x8430,0x840f,0x840f,0x7bef,0x73cf,0x7c0e,0x7bcf,0x7bce,0x7bcf,0x7bae,0x6b8d,0x738d,0x738e,0x6b8e,0x632c,0x6b2c,0x6b6d,0x6b4d,0x630b,0x630c,0x630b,0x632b,0x5aea,0x5aeb,0x5acb,0x62cb,0x526a,0x52aa,0x52ca,0x528a,0x5289,0x4a89,0x3a48,0x52eb,0x3a07,0x4aa9,0x4a49,0x4228,0x5269,0x4a49,0x4208,0x4207,0x39c6,0x4227,0x39c7,0x41e8,0x31c7,0x31a6,0x39c7,0x39a7,0x41c7,0x39a6,0x31a6,0x3165,0x31a6,0x2965,0x2965,0x3185,0x39a7,0x41c7,0x41c7,0x31a6,0x4268,0x94b2,0x94b3,0x1083,0x18a3,0x18e3,0x20e3,0x18e4,0x10e3,0x41c6,0x4a68,0x4aa9,0x52a9,0x52a9,0x4a27, +0xc637,0xdffe,0x5baf,0x52a8,0x52a9,0x52a9,0x52a9,0x3a07,0x4247,0x4228,0x4a29,0x3a09,0x4229,0x4209,0x7b8e,0xe79e,0x8534,0x3a69,0x31e7,0x3207,0x3a48,0x4208,0x4208,0x4207,0x4208,0x4a49,0x4208,0x4207,0x4228,0x4a69,0x4228,0x39e7,0x41c7,0x5228,0x4a28,0x4207,0x49e8,0x49c7,0x49e8,0x4208,0x3a08,0x39e7,0x4208,0x4a69,0x4228,0x41e8,0x41e8,0x39e8,0x4208,0x4208,0x4a09,0x4a49,0x4a28,0x4a29,0x4a49,0x4a49,0x526a,0x5269,0x5268,0x4a69,0x4249,0x4249,0x4269,0x4a48,0x5269,0x526a,0x5269,0x528a,0x4a8a,0x4a89,0x4269,0x4a49,0x52aa,0x5acb,0x52ca,0x52aa,0x528a,0x4a8a,0x528a,0x5aca,0x5aeb,0x5acb,0x528a,0x526a,0x5acb,0x5aab,0x5aab,0x630c,0x5acb,0x5acb,0x62ec,0x5acb,0x5aaa,0x62ca,0x62ca,0x5aaa,0x62cb,0x5aab,0x52aa,0x5a8a,0x5a89,0x62aa,0x6aeb,0x6b2b,0x630b,0x62eb,0x5acb,0x5acb,0x62eb,0x6b0c,0x6b0c,0x6b2c,0x6b2c,0x6b0c,0x6b0c,0x630b,0x630b,0x5acb,0x5aeb,0x5aab,0x5acb,0x5acb,0x5aab,0x52aa,0x5aaa,0x62eb,0x5acb,0x5aab,0x62cb,0x5aaa,0x62eb,0x5acb,0x5acb,0x6b2d,0x632d,0x630c,0x62cb,0x5acb,0x5acb,0x5aaa,0x528a,0x62a9,0x5ac9,0x5aca,0x5aaa,0x5aec,0x5b4e,0x530c,0x5b2d,0x5aec,0x9c91,0xf7de,0xd6fb,0xef9d,0x8cd5,0x9471,0xb5f8,0x424b,0x4a2a,0xce37,0x632e,0x41e9,0x52aa,0xb5b6,0x8493,0x2925,0xe71c,0x4209,0xe71c,0xdf1b,0xd699,0xdf1d,0x39ea,0x528b,0x52ab,0x428a,0x526a,0x41a7,0x41a7,0x41a7,0x39a6,0x39e7,0x39a7,0x3986,0x41a7,0x39a7,0x3186,0x41a7,0x39a8,0x2946,0x2946,0x3166,0x3166,0x2966,0x2146,0x2166,0x2986,0x2966,0x2125,0x2145,0x2125,0x3145,0x2925,0x2925,0x2946,0x2145,0x2125,0x2124,0x2124,0x2925,0x2966,0x2145,0x2926,0x2925,0x1904,0x2125,0x18e4,0x20e4,0x2125,0x2124,0x2124,0x2145,0x2144,0x1945,0x2145,0x1904,0x1124,0x1924,0x1904,0x18e4,0x2125,0x18e4,0x18e4,0x2125,0x18e4,0x2125,0x1904,0x2125,0x2145,0x2124,0x2924,0x2944,0x2104,0x18e3,0x1904,0x2104,0x20e4,0x18e3,0x2924,0x2125,0x2124,0x1924,0x2924,0x2124,0x2924,0x2124,0x2125,0x1905,0x2105,0x2104,0x20e4,0x2904,0x2105,0x2904,0x1904,0x20c4,0x18e5,0x1904,0x2104,0x2925,0x20e5,0x2105,0x2125,0x2124,0x2125,0x1924,0x1924,0x1904,0x18e4,0x10c4,0x1904,0x28e5,0x2105,0x2104,0x18e4,0x08e3,0x10c3,0x10e3,0x0904,0x08e4,0x20e4,0x20e3,0x10c3,0x18c3,0x10c3,0x18c3,0x18e3,0x10e3,0x0904,0x10e3,0x20e3,0x10e3,0x10c3,0x08c3,0x08e3,0x08e2,0x08a1,0x9d33,0x62ac,0x0842,0x18e3,0x10e4,0x18e4,0x10e3,0x39c6,0x4288,0x4a89,0x5aa9,0x52a9,0x4227, +0xc637,0xe7ff,0x5bae,0x5288,0x5ac9,0x5aa9,0x52a8,0x4227,0x4228,0x4a49,0x4249,0x3a29,0x4229,0x4a08,0xde99,0x8d56,0x1987,0x31c7,0x31e8,0x3208,0x31e8,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x3a08,0x39e8,0x39e8,0x3a08,0x31e8,0x3a08,0x3a29,0x3a08,0x3a28,0x4208,0x4209,0x4209,0x4209,0x4229,0x422a,0x4229,0x4249,0x4229,0x3a29,0x4249,0x4a69,0x4a49,0x4269,0x4a6a,0x4a29,0x4a4a,0x526a,0x4a4a,0x4a6a,0x4a6a,0x5a6a,0x5269,0x526a,0x4a8a,0x4a6b,0x4acb,0x52aa,0x528a,0x528a,0x528a,0x528b,0x5aab,0x528b,0x528b,0x52ab,0x52cb,0x5aeb,0x52ab,0x52aa,0x5acb,0x5acb,0x5aec,0x5aeb,0x630b,0x630c,0x52ec,0x52eb,0x5acb,0x52cb,0x52ec,0x52ec,0x52eb,0x52ec,0x52cc,0x52cb,0x530c,0x5b2c,0x634d,0x634d,0x634d,0x632d,0x6b6e,0x5b4d,0x634d,0x6bae,0x5aec,0x630d,0x5b2c,0x632d,0x6b4d,0x634e,0x52ec,0x5b0d,0x5aec,0x5b0c,0x632c,0x632d,0x634d,0x634d,0x634c,0x632d,0x6b4e,0x632d,0x6b4d,0x634d,0x634d,0x5b0c,0x632d,0x632d,0x634d,0x6b2d,0x632d,0x6b4d,0x630d,0x5aec,0x6b2c,0x6b4d,0x6b6d,0x6b6e,0x632d,0x5b0c,0x6b4e,0x632c,0x5aec,0x630d,0x6b4c,0x634d,0x634d,0x6b4d,0x6b2e,0x632d,0x5aec,0x52ec,0x5aec,0xbdb6,0x9492,0x5aab,0x738d,0xb619,0x8c30,0xe75c,0xdf1b,0x8431,0xa4f4,0x5b4e,0x52cb,0x52cc,0xa555,0x8c93,0x4229,0xbe18,0x3a09,0xad75,0x4208,0x41e8,0xb555,0x5aac,0x5aab,0x528b,0x4a8b,0x528b,0x5a6a,0x528b,0x52ab,0x52ab,0x52cb,0x52ab,0x5aac,0x526b,0x4a6a,0x4a8a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4269,0x4249,0x4a29,0x4229,0x3a28,0x4229,0x4228,0x3208,0x3a49,0x4a29,0x4248,0x3a28,0x4229,0x4208,0x3a08,0x3a28,0x3a49,0x4a2a,0x39c8,0x39e8,0x39e7,0x39e8,0x39e8,0x39e8,0x39e7,0x39c7,0x41c8,0x31c7,0x31c6,0x31c6,0x39c6,0x29a7,0x3186,0x39a7,0x31a7,0x39a7,0x31a7,0x3186,0x3986,0x3186,0x3186,0x3166,0x2965,0x2986,0x2186,0x2986,0x2186,0x2165,0x1944,0x2965,0x3165,0x2966,0x2986,0x2126,0x2966,0x2165,0x2945,0x2965,0x2185,0x2165,0x2145,0x1925,0x2125,0x1945,0x2144,0x2145,0x2105,0x1905,0x2124,0x2905,0x2105,0x2124,0x1904,0x2104,0x1924,0x2124,0x1904,0x18e4,0x2104,0x1924,0x2104,0x1904,0x1104,0x1903,0x1903,0x1903,0x18e4,0x20e3,0x18e3,0x10e3,0x1903,0x18e4,0x10e3,0x18e2,0x18e4,0x10c4,0x10e3,0x08e3,0x10c3,0x18c3,0x10c3,0x08e3,0x08c3,0x18c2,0x18c2,0x10a3,0x18c3,0x18c2,0x10e3,0x10c2,0x10c3,0x18a3,0x18a3,0x10e3,0x0020,0x63ac,0x8c52,0x0863,0x1903,0x18e4,0x18e4,0x18e3,0x39e5,0x5288,0x4aa9,0x52a9,0x52aa,0x4226, +0xc637,0xe7fe,0x5bce,0x5288,0x52c9,0x52a9,0x52a8,0x3a27,0x5268,0x4a49,0x4228,0x4228,0x4228,0x6229,0xdf5c,0x53d0,0x31c7,0x4207,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x4208,0x4249,0x4229,0x3a08,0x4208,0x4229,0x3a28,0x4228,0x4248,0x3a29,0x3a28,0x3a48,0x4229,0x3a29,0x4269,0x4249,0x4269,0x4269,0x428a,0x4a6a,0x4a8a,0x428a,0x4269,0x4a89,0x4a6a,0x4a8a,0x528a,0x4a8a,0x52aa,0x526a,0x528a,0x528a,0x528a,0x4a6a,0x428a,0x52aa,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x52ab,0x52cc,0x52eb,0x52cb,0x52cb,0x52cb,0x5acb,0x5acb,0x52ec,0x52cc,0x52cb,0x5b0c,0x5b0c,0x52ec,0x62eb,0x62ec,0x5b0c,0x530b,0x5b2c,0x5b2c,0x532c,0x52eb,0x5b2c,0x630c,0x5aec,0x5b0c,0x5b4d,0x5b2c,0x6b6d,0x5b4c,0x5b4c,0x5b0c,0x630d,0x634d,0x5b2d,0x6b6d,0x6b6c,0x6b8d,0x6b6d,0x5b4d,0x5b4d,0x6b4d,0x6b6d,0x634d,0x638e,0x5b0d,0x6b2d,0x6b6d,0x6b4e,0x6b4d,0x6b6d,0x634c,0x6b8e,0x6b4d,0x6b4e,0x6b6e,0x634d,0x6b4e,0x634d,0x6b6e,0x634d,0x632d,0x6b4d,0x634d,0x6b6d,0x634e,0x632e,0x634d,0x5b2d,0x638e,0x5b4d,0x5b4d,0x6b4e,0x6b4d,0x734d,0x6b4d,0x632d,0x632d,0x630c,0x5aec,0x5b4d,0x4acb,0x5aeb,0x630b,0x52cb,0x5acb,0x5acb,0x4a29,0x4229,0x4a8a,0x528b,0x5aec,0x532c,0x52aa,0x4a6a,0x528b,0x52ec,0x4a4a,0x428b,0x528b,0x52ec,0x52cb,0x4a6a,0x52ab,0x526a,0x526b,0x528b,0x528b,0x4a6b,0x4a4b,0x4a8a,0x526a,0x4a6a,0x528b,0x4a6a,0x4a4a,0x4a6a,0x4269,0x4a69,0x4a6a,0x4a8a,0x4a69,0x4a49,0x3a49,0x4249,0x3a28,0x4229,0x3a28,0x4208,0x4228,0x31e8,0x4229,0x4228,0x3a08,0x39e9,0x3a09,0x4209,0x41e8,0x39e8,0x39e8,0x41e8,0x31c7,0x21a7,0x39c7,0x31c7,0x31c7,0x31c7,0x39c7,0x39a7,0x31c7,0x31c7,0x3187,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2987,0x3166,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x2186,0x2966,0x2965,0x3166,0x2966,0x2146,0x2945,0x3145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x1945,0x1945,0x1945,0x2125,0x2124,0x1125,0x1105,0x2925,0x2105,0x1905,0x2125,0x2125,0x2125,0x2104,0x10e4,0x1905,0x2105,0x20e4,0x1904,0x2104,0x20e4,0x2104,0x2104,0x1904,0x1104,0x1924,0x1924,0x18e3,0x10e4,0x18e4,0x20e4,0x18c4,0x2103,0x18e4,0x18c4,0x20e4,0x10e3,0x10c3,0x10c3,0x08c3,0x10c3,0x18a3,0x18c2,0x08e3,0x00c3,0x10c3,0x18c3,0x18a3,0x18a3,0x10c3,0x18e3,0x08c3,0x18c4,0x18e3,0x10e3,0x10c3,0x0042,0x532b,0x9473,0x0883,0x10e3,0x1104,0x1904,0x18e3,0x39c5,0x5287,0x4aa9,0x52a9,0x5aaa,0x4a26, +0xc637,0xdfde,0x638e,0x5287,0x5ac8,0x5aa8,0x5ac8,0x3a07,0x52c9,0x3a69,0x4229,0x3a08,0x3a29,0x624a,0xdf7c,0x53af,0x31c7,0x4227,0x3a08,0x3209,0x3a08,0x39e8,0x4228,0x4228,0x4229,0x3a28,0x3a28,0x4228,0x3a28,0x3a28,0x3a29,0x3a09,0x4229,0x4208,0x4228,0x4228,0x4208,0x3a28,0x4249,0x4249,0x4229,0x4a49,0x4249,0x4269,0x4a89,0x4a69,0x4a4a,0x4289,0x4a8a,0x426a,0x4a8a,0x4a6a,0x4289,0x528a,0x528b,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52ab,0x4a8a,0x52ab,0x52ab,0x528b,0x528b,0x4a8b,0x4aab,0x52ab,0x4aaa,0x52ab,0x52ec,0x5acb,0x5acb,0x52cb,0x52ec,0x52eb,0x52ec,0x52cc,0x5b0c,0x5b0c,0x5aec,0x52ec,0x530c,0x5b0c,0x632c,0x5aec,0x5b0c,0x630c,0x5b0c,0x5aec,0x630c,0x634d,0x632d,0x632d,0x5b4d,0x5aeb,0x632c,0x5b2c,0x5b0d,0x6b6e,0x6b8e,0x6b4d,0x632c,0x6b4d,0x6b8d,0x73ae,0x6b8e,0x6b4d,0x636d,0x632c,0x6b4e,0x6b4e,0x634d,0x5b2d,0x630d,0x634c,0x638d,0x6b8d,0x634d,0x6b6e,0x6b4e,0x634d,0x634d,0x636e,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x634d,0x5b6d,0x6b4d,0x632d,0x6b6e,0x634d,0x636e,0x5b6d,0x6b6e,0x6baf,0x638e,0x5b2d,0x634d,0x736e,0x6b4e,0x632d,0x632d,0x5b2d,0x5b0d,0x5b0c,0x5b6d,0x5b4d,0x5b0c,0x632d,0x630d,0x630c,0x630c,0x52ec,0x5aec,0x52cc,0x52eb,0x5b0c,0x5b0b,0x5aec,0x630d,0x52eb,0x52ec,0x52ec,0x5aec,0x5aec,0x4a8a,0x5acb,0x528b,0x528b,0x52ab,0x52ab,0x52ab,0x4a8b,0x4aaa,0x528b,0x52aa,0x528a,0x52ab,0x4a6a,0x4a6a,0x426a,0x4a6a,0x4a4a,0x4a4a,0x3a49,0x3a29,0x4a69,0x4a49,0x4249,0x4269,0x3a29,0x4209,0x4228,0x4208,0x4229,0x3a29,0x4249,0x4209,0x4208,0x3a08,0x4208,0x39e8,0x3a08,0x39e7,0x3a08,0x31c8,0x39c7,0x31c6,0x31e7,0x39c7,0x39c7,0x39c7,0x39c7,0x31a7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x39a7,0x39a7,0x31a6,0x29a6,0x2186,0x2186,0x2986,0x2987,0x2187,0x21a6,0x29a6,0x3166,0x2166,0x2965,0x2985,0x3166,0x2165,0x2166,0x3145,0x2945,0x2146,0x2966,0x2125,0x2145,0x2945,0x1946,0x1925,0x1925,0x1925,0x1945,0x2145,0x2144,0x1945,0x1125,0x2125,0x2105,0x1925,0x1925,0x2125,0x1924,0x2105,0x2104,0x18e5,0x18e5,0x20c4,0x2103,0x2104,0x1924,0x1904,0x2104,0x1903,0x1904,0x18c4,0x1904,0x1903,0x18e4,0x2104,0x1104,0x10e4,0x18e3,0x10e4,0x08c3,0x1904,0x18c3,0x20a3,0x10e4,0x08e3,0x18e3,0x18c3,0x18e3,0x10e3,0x08c3,0x08c3,0x08c3,0x18a4,0x18e3,0x08e3,0x18e3,0x10a4,0x18a3,0x10e3,0x08c3,0x10e3,0x0841,0x532b,0x9494,0x1084,0x10e3,0x1923,0x2124,0x08c1,0x31e5,0x52a8,0x5289,0x52a9,0x5aa9,0x4a47, +0xce57,0xe7ff,0x5b6d,0x52a9,0x52e9,0x5ac8,0x5ac8,0x4227,0x52ca,0x3a29,0x4249,0x31e8,0x4209,0x6a8a,0xdf7c,0x538f,0x39e8,0x4207,0x4208,0x3228,0x3a08,0x4208,0x4248,0x3a29,0x4229,0x3a28,0x4229,0x4208,0x3a28,0x3228,0x3208,0x4209,0x4208,0x4228,0x3a28,0x3a08,0x3a28,0x3a08,0x4249,0x4249,0x4a49,0x4a48,0x4268,0x3a48,0x3a49,0x4269,0x3a29,0x4289,0x426a,0x4a8a,0x528a,0x528a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x528a,0x4a8a,0x52ab,0x52ab,0x52ab,0x52aa,0x52ab,0x52ab,0x528b,0x52aa,0x52aa,0x52ab,0x52ab,0x52cc,0x52ab,0x52ab,0x52ab,0x52cc,0x530b,0x5b0c,0x62ec,0x62eb,0x530c,0x530c,0x530c,0x52ec,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x632c,0x52eb,0x5b0c,0x5b0c,0x5b4d,0x5b2d,0x5b0d,0x5b2c,0x632c,0x5b6d,0x5b2d,0x5b0c,0x636d,0x634d,0x5b4d,0x5b4d,0x5b4d,0x5bad,0x5b8d,0x634e,0x636d,0x636d,0x6b4d,0x736e,0x6b6e,0x636d,0x632d,0x634d,0x738d,0x6b6d,0x5b4c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x5b4c,0x634d,0x6b6d,0x6b6d,0x636d,0x6b6d,0x6b4d,0x6b6d,0x73ae,0x634d,0x632d,0x634d,0x6b6d,0x634d,0x6b6d,0x6b6d,0x634d,0x6b4d,0x634d,0x6b4d,0x6b6e,0x630d,0x6b2d,0x632d,0x5b0d,0x530c,0x634d,0x5b0d,0x630c,0x5b2c,0x5b2d,0x5b0d,0x5b2d,0x5b2c,0x5b2d,0x5acd,0x5aec,0x530c,0x5aeb,0x5acb,0x52ec,0x52cc,0x5aec,0x5aec,0x5acb,0x52cc,0x52ab,0x52eb,0x52cb,0x52ab,0x4a8b,0x52aa,0x52ab,0x528b,0x528b,0x528a,0x4a8a,0x526a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x4a6a,0x4209,0x4249,0x4249,0x4229,0x4249,0x3a29,0x3a29,0x4228,0x4228,0x4208,0x4229,0x4228,0x4208,0x41e8,0x4208,0x4208,0x41e8,0x4208,0x39e7,0x39e8,0x39e7,0x39e7,0x39e6,0x31e7,0x31e7,0x39c7,0x39c6,0x29a6,0x31c6,0x31c7,0x31a7,0x31a7,0x3186,0x3186,0x31a7,0x31a7,0x29c6,0x2986,0x3986,0x2986,0x3167,0x2987,0x2986,0x2986,0x31a6,0x3186,0x2986,0x3186,0x2985,0x2966,0x2946,0x2185,0x2946,0x1966,0x2166,0x2966,0x2945,0x1945,0x2145,0x2945,0x2945,0x2125,0x1966,0x2165,0x2945,0x2925,0x2125,0x2145,0x2125,0x1924,0x1125,0x2125,0x2905,0x2124,0x2124,0x1924,0x2104,0x2905,0x2105,0x2105,0x1904,0x2904,0x1905,0x1905,0x1105,0x18e4,0x18e3,0x1904,0x18e4,0x18c4,0x18e3,0x1104,0x1904,0x10e3,0x18c4,0x18e4,0x10e3,0x1904,0x18e4,0x08e4,0x10e4,0x20c4,0x18c4,0x18e3,0x08e4,0x08e3,0x08c3,0x18e3,0x18a4,0x18e3,0x18e3,0x10c3,0x18c3,0x10c3,0x1103,0x10c3,0x20c3,0x1041,0x5b4b,0x94b4,0x0843,0x10e3,0x1903,0x2124,0x10e3,0x39c5,0x5287,0x5aa9,0x5aa9,0x5aa9,0x4a27, +0xce37,0xefff,0x5b8d,0x5ac9,0x5aca,0x5aaa,0x52c9,0x4a68,0x4a68,0x4248,0x4249,0x3a08,0x4249,0x6a8a,0xdf7c,0x538e,0x3a28,0x4208,0x39e8,0x3a08,0x4208,0x3a09,0x3a28,0x3a28,0x3a28,0x4249,0x4a29,0x4229,0x4249,0x4229,0x3a28,0x41e8,0x41e8,0x3a29,0x3a28,0x3a29,0x3a29,0x4a09,0x4229,0x4249,0x4a29,0x4a49,0x426a,0x4a69,0x4249,0x4a69,0x426a,0x3a89,0x428a,0x4a8a,0x528a,0x524a,0x5a8a,0x5aab,0x528a,0x52cb,0x528a,0x528a,0x4a8b,0x4aaa,0x52cb,0x5aab,0x4aab,0x52cb,0x52ab,0x52ab,0x5aab,0x52cb,0x52cb,0x52cb,0x52cb,0x528b,0x52cb,0x52cb,0x52ea,0x5acb,0x52eb,0x5acc,0x5aec,0x5b4c,0x5b0b,0x634d,0x52ec,0x5b0c,0x5b0d,0x52ed,0x5b2d,0x6b6d,0x5b2d,0x630d,0x632d,0x632d,0x6b4e,0x634d,0x632d,0x632d,0x632c,0x5b2c,0x634d,0x5b2c,0x5aec,0x634d,0x632d,0x5b2d,0x634e,0x636e,0x5b6d,0x634d,0x6b6e,0x632d,0x6b2e,0x6b8e,0x634d,0x636d,0x6b6d,0x6b8e,0x6b4d,0x6b6e,0x638d,0x638e,0x634d,0x6b6d,0x738e,0x636d,0x634d,0x638e,0x638e,0x634d,0x634d,0x634d,0x636d,0x5b6e,0x636e,0x5b4d,0x634e,0x6b6e,0x632d,0x636e,0x634d,0x5b4d,0x634d,0x5b4d,0x6b2d,0x632d,0x6b4d,0x634d,0x6b2d,0x634d,0x634e,0x632d,0x5b2d,0x5b0d,0x630c,0x630d,0x634d,0x630c,0x5acc,0x5b0c,0x5aec,0x5acc,0x5b0c,0x5aed,0x5b0c,0x5acc,0x5aec,0x5b0d,0x5aec,0x5aec,0x52ec,0x52cc,0x52ab,0x5aec,0x5acb,0x52ab,0x5a8b,0x52ac,0x528b,0x528a,0x52ab,0x4a6a,0x528a,0x528a,0x4a6a,0x4a8a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4a29,0x4a49,0x4a6a,0x424a,0x4249,0x4229,0x4a49,0x4249,0x424a,0x4209,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x4209,0x41e8,0x4208,0x4208,0x3208,0x39e9,0x4207,0x39e7,0x39e7,0x31c7,0x31c6,0x39c7,0x39a7,0x39a7,0x3987,0x39a7,0x29a6,0x31a6,0x29a6,0x29c6,0x31c6,0x39a6,0x31a6,0x3186,0x3187,0x31a7,0x3186,0x31a7,0x3186,0x2966,0x2966,0x2986,0x2986,0x2986,0x2965,0x2166,0x2146,0x2965,0x2186,0x2166,0x2166,0x2146,0x2145,0x2945,0x3145,0x2965,0x2165,0x1945,0x2145,0x3125,0x3125,0x2145,0x1144,0x2145,0x2925,0x2125,0x1924,0x1924,0x1925,0x2145,0x2904,0x2905,0x2105,0x2125,0x20e5,0x1924,0x2124,0x2104,0x1104,0x20c4,0x18e4,0x18e4,0x10c4,0x18e4,0x1903,0x18e4,0x18e5,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x20e4,0x18e4,0x18e3,0x18e3,0x1103,0x18e3,0x10c3,0x18e3,0x1103,0x10c3,0x10c3,0x10e3,0x18a4,0x10c3,0x10c2,0x10e3,0x10c3,0x10c3,0x18e3,0x1041,0x5b2a,0x94b3,0x1063,0x18c3,0x1904,0x1105,0x10c4,0x39c5,0x4a68,0x5aa9,0x5aa9,0x5aa9,0x4a47, +0xce58,0xefdf,0x5b6d,0x5aea,0x5aca,0x5ac9,0x5aa9,0x4227,0x4267,0x3a69,0x4229,0x4227,0x4228,0x6a8a,0xdf7c,0x536e,0x39e8,0x4208,0x39e8,0x4208,0x4229,0x3a08,0x39c8,0x39e7,0x3a08,0x39a7,0x31a7,0x39e8,0x31a7,0x2986,0x3187,0x3987,0x31a7,0x2966,0x2966,0x3187,0x2987,0x2966,0x2987,0x31a7,0x3187,0x39e8,0x4229,0x4a49,0x4269,0x4a69,0x4249,0x4289,0x4aca,0x4a8a,0x4229,0x420a,0x41e8,0x4a29,0x4229,0x4249,0x4a6a,0x4229,0x4229,0x4229,0x4a29,0x4a49,0x4249,0x4249,0x4a09,0x4a09,0x4a2a,0x426a,0x4269,0x4a6a,0x5aab,0x5acb,0x52ab,0x5acb,0x52ab,0x5acb,0x5b0b,0x5aec,0x4a6a,0x528b,0x52cb,0x4aab,0x424a,0x4a8b,0x4acb,0x42aa,0x4aab,0x528b,0x52cb,0x4a8b,0x424a,0x428a,0x5acc,0x5aec,0x52ab,0x4a69,0x528a,0x5aab,0x630c,0x636d,0x634d,0x5b2c,0x732e,0x634d,0x5b6d,0x5b4d,0x5acb,0x5b0c,0x52ec,0x630c,0x734d,0x5aec,0x4aab,0x5aec,0x5acb,0x5b2d,0x52cc,0x62ec,0x5b0d,0x52ec,0x5b0d,0x632c,0x6b2d,0x636d,0x5b0c,0x632d,0x5aec,0x62ec,0x630c,0x634d,0x6b8e,0x6b8e,0x634e,0x5b2d,0x6b6e,0x6b6e,0x5b0d,0x52ec,0x52ed,0x4aac,0x52cb,0x52cc,0x528b,0x5aec,0x5acb,0x4a8b,0x52ab,0x5aec,0x52ab,0x4aaa,0x4a6b,0x528b,0x5a8b,0x528b,0x4a6b,0x5a6b,0x52ec,0x52cc,0x52cc,0x5aeb,0x5b2d,0x632d,0x530d,0x530d,0x630d,0x4a8b,0x4a8a,0x4a8b,0x4229,0x4229,0x424a,0x524a,0x41e8,0x41e8,0x39c8,0x39c8,0x4249,0x4209,0x4208,0x31e9,0x31c8,0x39c8,0x39e8,0x29c7,0x31e8,0x41c9,0x4209,0x424a,0x4269,0x4a4a,0x4249,0x4248,0x4a4a,0x4a49,0x41e8,0x3166,0x3987,0x3187,0x2966,0x3187,0x2966,0x3186,0x31a6,0x2966,0x2925,0x2946,0x2105,0x1924,0x1925,0x1105,0x1905,0x18e4,0x18e4,0x1905,0x1925,0x31c6,0x39e7,0x31a7,0x39c7,0x4187,0x31c7,0x31c6,0x3186,0x1904,0x1904,0x1904,0x10c4,0x18c4,0x10a3,0x10c3,0x10a4,0x18c4,0x10c4,0x10c4,0x08a3,0x0882,0x0862,0x1083,0x1883,0x1082,0x1083,0x10a4,0x1083,0x18c3,0x2925,0x2145,0x2966,0x2145,0x2965,0x2145,0x1165,0x10c3,0x08a3,0x10a3,0x10c3,0x10a3,0x10a3,0x0882,0x1062,0x1063,0x0883,0x0883,0x10a3,0x1083,0x1062,0x1082,0x0883,0x0883,0x18a3,0x0862,0x1083,0x1063,0x0882,0x18e4,0x20e4,0x20e4,0x20e5,0x18e4,0x20e4,0x1903,0x18e4,0x0882,0x10a3,0x1905,0x1905,0x2146,0x2966,0x2166,0x2986,0x2946,0x2986,0x31c7,0x29e8,0x29c8,0x29a7,0x29a8,0x29c7,0x31a7,0x29a7,0x31c7,0x31c7,0x2166,0x1904,0x0841,0x18c3,0x10e3,0x0861,0x4aca,0x9cf5,0x1064,0x20e4,0x18e5,0x1905,0x08c3,0x31c5,0x4a88,0x5ac9,0x5ac9,0x62aa,0x4a47, +0xce58,0xefff,0x5b4d,0x5ac9,0x5ac9,0x5ac9,0x52a9,0x3a27,0x4a47,0x3a69,0x3a49,0x3a28,0x4229,0x6a8a,0xd75c,0x4b6e,0x3a28,0x4208,0x4209,0x4a29,0x4208,0x632d,0x8410,0x7c31,0x73f0,0x7411,0x7c31,0x7c31,0x8452,0x8cb2,0x8c92,0x8493,0x8cb3,0x9cf4,0x9534,0x94f4,0x9d14,0x9d35,0xa514,0xa514,0x9d35,0x7411,0x3a29,0x3a08,0x4249,0x4a49,0x4a49,0x4a6a,0x4a49,0x634d,0x9cf4,0x9d35,0xad56,0xa4f5,0x9d14,0xa555,0x9d35,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9d14,0x9d76,0x9d34,0x9514,0x9514,0x94f4,0x9514,0x9cf4,0x6bae,0x4aaa,0x52ec,0x5aec,0x630c,0x5aeb,0x5aaa,0x5acb,0x94d3,0xa555,0xa576,0xadb7,0x9d55,0xa575,0xad96,0xad75,0xad76,0xb5d7,0xadb6,0xa596,0xadb6,0xb5d7,0xb5d7,0xb5d7,0xbdf8,0xb5d7,0xbdd6,0xb597,0x9d15,0x5b4d,0x6b6d,0x632d,0x630d,0x5b0d,0x5b4d,0x630c,0x7bf0,0xb597,0xb5f8,0xbe18,0xb618,0xc658,0xbe38,0xb618,0xbe39,0xbdd8,0xadb6,0xad97,0xa596,0xb5b7,0xa577,0x9d14,0x9d14,0x9d14,0x94f3,0x9d14,0x9d14,0x8c73,0x638d,0x6b8e,0x638d,0x6b6e,0x6b8e,0x6bae,0x5aeb,0x8c31,0xb5d8,0xb5f8,0xb5f8,0xb5d7,0xbe59,0xb5f7,0xb5f7,0xb618,0xb5d7,0xb618,0xbe18,0xbdf7,0xb5d7,0xb5d7,0xb618,0xadf7,0xbdd7,0xb5d7,0xb5d7,0xb597,0x94b4,0x630e,0x52cc,0x632d,0x5b0d,0x5aec,0x5b0d,0x528a,0x840f,0xb596,0xbe17,0xbe18,0xc639,0xc659,0xc65a,0xb5d8,0xbe18,0xce79,0xd6bb,0xbe58,0xc638,0xbe18,0xbe39,0xbe39,0xb618,0xbe38,0xc659,0xb638,0xadf7,0x9d55,0x5b2d,0x4249,0x4a8a,0x4a6a,0x4a4a,0x4a69,0x4a28,0x62ec,0xa535,0xb5d7,0xadd7,0xadd7,0xb5d7,0xb5f7,0xb5d7,0xadb6,0xadb6,0xb5d7,0xadd7,0xb5f8,0xbe39,0xb638,0xb5f7,0xb5d7,0xb5d7,0xb5d7,0xadb7,0xadb6,0x9d14,0x424b,0x3167,0x39c7,0x31c7,0x29c7,0x29a7,0x3185,0x634c,0xbdf8,0xbe59,0xceba,0xce99,0xd6ba,0xc659,0xbe59,0xbe38,0xbe18,0xb5d7,0xadb7,0xadb6,0xb5f8,0xb5f8,0xad97,0xad96,0xa595,0x9d56,0xa535,0x9d14,0x9cd3,0x422a,0x20e4,0x2966,0x2986,0x2965,0x2945,0x1104,0x7c10,0xa535,0x9d35,0x9d54,0x9d34,0x9d75,0xa5b7,0x9d56,0xa556,0xad96,0xa555,0x9d55,0xa555,0x9514,0xa575,0xa595,0xa555,0x9d54,0x9d35,0x9d14,0x9514,0x94f4,0x4168,0x20c3,0x18e4,0x2905,0x2104,0x20e5,0x1904,0x08c3,0x5b4e,0x84d3,0x8492,0x8c51,0x8430,0x8c71,0x8c91,0x8451,0x7c51,0x7c50,0x7bcf,0x7c10,0x7c50,0x7c31,0x7c31,0x73f0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x73d0,0x8451,0x6b4e,0x1063,0x1103,0x0861,0x4ac9,0xad16,0x1064,0x20c4,0x2903,0x20e4,0x08e4,0x31a5,0x5288,0x5aaa,0x52a9,0x5aa9,0x5267, +0xc638,0xe7ff,0x534c,0x5ac9,0x5ac9,0x5ac9,0x5aa9,0x4228,0x4208,0x3a49,0x3229,0x4229,0x3a09,0x62ab,0xcf1b,0x434d,0x3a28,0x4208,0x3a08,0x49e7,0xc659,0xa575,0x734d,0x6b6e,0x6b6d,0x6b8e,0x736e,0x734e,0x6b8e,0x6b8e,0x6b8e,0x73af,0x7bf0,0x7c10,0x7bcf,0x73af,0x73d0,0x7bd0,0x73af,0x738f,0x7bf1,0xb596,0x9dd7,0x3249,0x4269,0x4249,0x4a6a,0x41e8,0xad34,0xcedb,0x73af,0x7c31,0x7c10,0x7c10,0x8451,0x8451,0x8c72,0x8471,0x7c11,0x8451,0x8451,0x8492,0x8451,0x7c31,0x8451,0x8471,0x7c31,0x7c31,0x8471,0x9cf4,0xf7de,0x6411,0x52cb,0x5b0c,0x62ec,0x5acb,0x6aec,0xf77d,0xad76,0x8c72,0x8c71,0x8c72,0x8c51,0x8c72,0x8c92,0x94b2,0x8c72,0x9492,0x8c92,0x9cd3,0xa514,0x9cf4,0x9cd3,0x9cd3,0x94b2,0x94b3,0x9cb3,0x9cf3,0xc638,0xe79e,0x5b4d,0x5b4d,0x632d,0x630c,0x5b2d,0x9471,0xf79f,0x9cf4,0x8c92,0x8c51,0x8451,0x8c71,0x9cf3,0x9cf4,0x9d14,0x94d4,0x94d3,0x94f4,0x8c72,0x8c72,0x8492,0x8c92,0x8cb2,0x8c92,0x94b3,0x94b2,0x9cd3,0xdefb,0xd73c,0x634d,0x6b6e,0x6b6e,0x636e,0x634e,0xa4f4,0xf7be,0xa534,0x9cd3,0x9d13,0xad55,0xa554,0xa534,0xa534,0xa514,0xa4f4,0xa514,0x9cf3,0xa513,0xa4f4,0x9cf3,0x94f3,0x94b2,0x94b2,0x9cb3,0x94b2,0x8cb2,0xc658,0xe77e,0x5b0d,0x6b4d,0x630d,0x52ec,0x5acc,0x9471,0xf7df,0xad75,0x94b3,0x9493,0x8c51,0x8c51,0x8c51,0x8c31,0x8c51,0x9492,0x9472,0x8c92,0x94b2,0x94b3,0x9492,0x9492,0x9493,0x8c72,0x8431,0x8451,0x8c11,0x94b2,0xe7be,0x52ee,0x526a,0x526a,0x428b,0x4249,0x738d,0xef3c,0x7bf0,0x6b8e,0x73cf,0x7bef,0x73af,0x6b6e,0x73af,0x738f,0x6b8e,0x73af,0x636d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x6b4e,0x6b2d,0x6b2d,0x6b2d,0x6b4c,0x5b0c,0xc67a,0x528c,0x31e7,0x31c8,0x29a7,0x3167,0x5aeb,0xbe18,0x6b4d,0x740f,0x6bef,0x73ef,0x73cf,0x7bcf,0x83cf,0x83cf,0x83f0,0x8430,0x8c31,0x83f0,0x83f1,0x8411,0x7c10,0x7bf0,0x7c10,0x73af,0x7bd0,0x736e,0x4208,0xc658,0x3988,0x2126,0x2145,0x2926,0x1082,0x8cb1,0x6b8e,0x5aec,0x634e,0x7bf0,0x8431,0x6bae,0x6b8f,0x73d0,0x6bcf,0x73d0,0x6baf,0x73af,0x6b8f,0x7bf0,0x8451,0x6bef,0x8432,0x7c31,0x8492,0x7c52,0x73ef,0x4207,0x9494,0x18a4,0x18e4,0x2104,0x2104,0x1904,0x10e3,0x5b2c,0x73ae,0x5b6d,0x8cf3,0x8cb3,0x8cd4,0x84d3,0x84d2,0x9cf4,0x94d3,0x8cf3,0x94f3,0x94f3,0x94f4,0x94f3,0x9d35,0x9514,0x94f4,0x8cf4,0x8cf3,0x9d14,0x8cb3,0x534e,0x530d,0x524b,0x18a3,0x1062,0x4b09,0xad16,0x1883,0x18e3,0x20e3,0x28e5,0x18e4,0x31c5,0x5288,0x5aca,0x5aaa,0x5aca,0x5288, +0xce58,0xe7ff,0x534d,0x5ac9,0x62e9,0x62e9,0x5aa9,0x4a48,0x4207,0x4249,0x4229,0x4229,0x422a,0x6acc,0xc71b,0x3b0c,0x4208,0x3a08,0x31e8,0x83ef,0xa555,0xad75,0xd6db,0xd71b,0xd6fb,0xd6fb,0xdf3c,0xdf5d,0xdf3c,0xdefc,0xe77e,0xefbe,0xe77d,0xd75d,0xe75d,0xe75d,0xe77e,0xe79e,0xdf5d,0xe75d,0xdf5c,0xa5b6,0xbe79,0x42cc,0x3a29,0x4249,0x4a69,0x5a6a,0xe77d,0xa575,0xef9e,0xe79e,0xef9e,0xefbe,0xe79e,0xe79e,0xefbe,0xefbe,0xe79e,0xefbe,0xefbe,0xefde,0xf7df,0xefbe,0xef9e,0xf7df,0xefdf,0xefbe,0xef9e,0xdf5d,0xb5d6,0xd73d,0x428b,0x5b0b,0x5aeb,0x52aa,0xb514,0xadb6,0xdedb,0xf7df,0xefbe,0xf7de,0xf7df,0xf7be,0xf7bf,0xf7df,0xf7df,0xf7ff,0xf7df,0xffff,0xf7ff,0xf7de,0xefbe,0xefbe,0xefbe,0xf7de,0xf7de,0xf7bf,0xd6ba,0xce38,0x8cf5,0x52ec,0x632d,0x6b8d,0x6b2d,0xf77e,0xb5b7,0xef9e,0xf7ff,0xf7df,0xf7df,0xf7df,0xf7ff,0xf7de,0xffff,0xffff,0xffff,0xf7ff,0xf7df,0xf7df,0xf7df,0xef9e,0xef9e,0xf7be,0xf7be,0xf7be,0xef9e,0xc618,0xd6db,0x8cf3,0x6b6e,0x6b6e,0x6b4d,0x630d,0xf77e,0xbdd7,0xffdf,0xffff,0xffff,0xf7ff,0xf7df,0xf7df,0xf7df,0xf7de,0xffff,0xffff,0xffff,0xffff,0xf7df,0xf7df,0xf7ff,0xf7ff,0xf7df,0xf7de,0xf7ff,0xf7ff,0xce9a,0xdf1c,0x94d4,0x5aec,0x634d,0x532d,0x526a,0xe71c,0xa534,0xef5d,0xf7de,0xf7de,0xf7de,0xf7de,0xefbe,0xf7df,0xf7df,0xf7df,0xf7be,0xefbe,0xef9e,0xf7ff,0xefdd,0xefbe,0xefbe,0xefdf,0xefbe,0xefbe,0xefbe,0xe73c,0xb5d6,0xa537,0x4a4a,0x526a,0x42aa,0x39c8,0xc617,0x8c71,0xe75d,0xef9d,0xef9d,0xef9e,0xefbe,0xef9d,0xe77d,0xe77d,0xefbe,0xefbe,0xe75c,0xe77d,0xf7de,0xe75d,0xd73c,0xdf3c,0xdf5c,0xdf5c,0xd73b,0xd75b,0xd6fc,0x8451,0xad57,0x29c7,0x31c7,0x31c7,0x2945,0x94f2,0x5b0b,0xdf5c,0xd6fb,0xcedb,0xcefb,0xd6fb,0xceda,0xced9,0xd6da,0xceda,0xceda,0xd6fb,0xc699,0xceb9,0xc699,0xc679,0xce9a,0xbe79,0xbe59,0xce79,0xce99,0xd6db,0x8410,0x9cf4,0x20e6,0x2965,0x2166,0x1924,0xbe37,0x7bd0,0xbe38,0xb618,0xb618,0xbe18,0xb618,0xbdf8,0xbdf8,0xbe17,0xc659,0xadf6,0xad75,0xbe37,0xbe58,0xb5d6,0xb5d6,0xadb7,0xadb6,0xadb6,0xa5b6,0xa576,0xad36,0x638e,0x39c9,0x18c4,0x18e4,0x18e4,0x2124,0x1082,0x7c70,0x4aab,0xa576,0x9d14,0x9d14,0x9d34,0x9534,0x9d13,0x9514,0x9d14,0x94b3,0x94b2,0x94d2,0x9d34,0x94b3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb2,0x94b3,0x8c92,0x8c93,0x31c7,0x6b6e,0x18a3,0x1082,0x42c9,0xa535,0x1084,0x18c3,0x18e4,0x18e4,0x18e4,0x39a5,0x5288,0x5aca,0x5aaa,0x5aca,0x4a89, +0xd658,0xe7df,0x534d,0x5ac9,0x62ca,0x62e9,0x52c9,0x4a48,0x39e7,0x4269,0x4269,0x4229,0x3a29,0x72ec,0xd75c,0x42ec,0x4208,0x4228,0x39c8,0xb554,0x8cb2,0xe71c,0xceda,0xd6da,0xd6fb,0xcedb,0xceda,0xcebb,0xcedb,0xe75d,0xbe78,0xb5d7,0xd679,0xdefb,0xd6da,0xd6db,0xd6fb,0xcefb,0xd6db,0xd6da,0xdedb,0xb639,0xa575,0x532e,0x3a2a,0x424a,0x4269,0x62ab,0xc659,0xc618,0xe73c,0xe73c,0xe73c,0xdf5c,0xdf5c,0xd75d,0xc679,0xe75c,0xdf3c,0xdf1b,0xe73c,0xe75d,0xe79d,0xce78,0xef7d,0xe77d,0xe77d,0xe77d,0xef7d,0xefff,0xb5d7,0xe7be,0x42ab,0x5aec,0x528a,0x4a29,0xe679,0xa534,0xffff,0xef9e,0xe79d,0xef9d,0xef9e,0xef9d,0xef9d,0xefbe,0xefbe,0xcedb,0xdeba,0xd679,0xef7d,0xef9e,0xef9e,0xef9d,0xefbe,0xf7de,0xf7be,0xefbe,0xf7ff,0xad75,0x9db7,0x52ab,0x6b6d,0x638e,0x62ec,0xf7de,0xce79,0xf7df,0xf7be,0xf7be,0xf7be,0xefbe,0xefbe,0xefde,0xf7df,0xceba,0xdeda,0xdedb,0xf79d,0xf7bf,0xf7be,0xf7de,0xefbe,0xf79e,0xf7be,0xefbe,0xf7be,0xef9e,0xad95,0xadd8,0x632d,0x6b6e,0x738f,0x732d,0xefbe,0xb5f7,0xffff,0xf79e,0xf79e,0xf79e,0xef9e,0xef9e,0xef9e,0xf79e,0xceba,0xce99,0xd6b9,0xdeda,0xf7de,0xef7d,0xef9d,0xef9d,0xef7d,0xef7d,0xef9d,0xef9d,0xe77e,0xbdd6,0xa556,0x5aec,0x6b4d,0x5b0d,0x526a,0xe71b,0x9d34,0xef9d,0xef7d,0xef7d,0xef9d,0xe77d,0xef7d,0xe77d,0xe75d,0xc658,0xf7bd,0xdf3c,0xe75c,0xad95,0xdf5c,0xe75d,0xdf5d,0xdf5d,0xe75c,0xe75d,0xe73c,0xe79e,0x8491,0xbe19,0x4a6b,0x4a8a,0x4a89,0x3186,0xce58,0x73ae,0xe77c,0xe73d,0xdf1c,0xdf1b,0xdf1b,0xdefb,0xdefb,0xe75d,0x8431,0xb5b5,0xd6db,0xdefc,0x62ca,0xd6fa,0xceda,0xd6ba,0xceba,0xd6ba,0xce9a,0xd699,0xdf3c,0x7bf0,0xce9b,0x2947,0x39c7,0x31c7,0x2924,0xa533,0x5b0b,0xceb9,0xce78,0xc678,0xc678,0xce99,0xc679,0xc658,0xc638,0xc658,0xce9a,0x5aeb,0xc6ba,0xbe37,0xbe38,0xbe37,0xbe38,0xbe38,0xbe38,0xbe38,0xb617,0xceba,0x73d1,0xadb7,0x18e4,0x2966,0x2185,0x1924,0xbe58,0x8451,0xb5f7,0xadd7,0xadd7,0xbdd7,0xb5d7,0xb5f7,0xb5f7,0xad56,0x39a6,0x1062,0x0883,0x18e3,0x9d13,0xb5d6,0xa596,0xa595,0x9d75,0xa575,0xadb7,0xa575,0xb576,0x5b2c,0x422a,0x18c4,0x1924,0x20e4,0x1905,0x18a3,0x8cd2,0x424a,0x9d34,0xa514,0x9d14,0x9d55,0x9d34,0x9cf3,0x9514,0x9d15,0x2925,0x10a2,0x10a3,0x18c3,0x9d13,0x8cf4,0x8cf3,0x8cd3,0x8cb2,0x8cd2,0x94b2,0x84b2,0x8493,0x2987,0x6b4e,0x10a3,0x0862,0x4aea,0x9d35,0x0884,0x10e3,0x1903,0x1904,0x1125,0x31c6,0x5288,0x5aea,0x5aaa,0x62ca,0x5289, +0xd678,0xdfff,0x4b2c,0x5aea,0x5aea,0x62c9,0x52c9,0x3a47,0x4248,0x4289,0x4249,0x4228,0x3a08,0x7b0d,0xcf7c,0x3aab,0x4228,0x4228,0x3987,0xad33,0x94b2,0xdefb,0xcedb,0xd6db,0xd6fb,0xd6fc,0xd6fb,0xcefb,0xc6ba,0x3249,0x73af,0x8cd3,0x6baf,0x8bf0,0xef3c,0xdf1c,0xd6fc,0xd6fc,0xdefc,0xdf1c,0xdefc,0xb659,0xb595,0x534e,0x3a29,0x428a,0x426a,0x6aab,0xb5f7,0xce38,0xdf5c,0xdf5d,0xdf5d,0xe73c,0xdf3c,0xdf7d,0x62cc,0xf77d,0xe77d,0x7c92,0xa491,0xefbe,0xb69a,0x630c,0xf7be,0xe77d,0xe77d,0xef7d,0xef7d,0xefde,0xadd7,0xefde,0x42ac,0x5b0c,0x62ec,0x4a49,0xe6da,0xad14,0xffff,0xef7e,0xef7e,0xef7d,0xef9d,0xef9e,0xf7be,0xef9e,0xefdf,0x52cc,0xb576,0xb5b6,0xe73c,0xf7be,0xef9e,0xefbe,0xefbe,0xf7be,0xefbe,0xefbe,0xf7ff,0xad55,0xa5f8,0x5aec,0x6b4c,0x6b8e,0x6b0c,0xffdf,0xce7a,0xf7de,0xefde,0xefbe,0xf7bf,0xefde,0xefbe,0xefbe,0xf7ff,0x5acd,0xbdd6,0xadb7,0x738d,0xe71b,0xf7de,0xf7df,0xf7be,0xf7be,0xf7de,0xf7bf,0xf7bf,0xf7bf,0xa555,0x9d56,0x5b4d,0x6b4e,0x6baf,0x6b2d,0xf7be,0xbe18,0xefbe,0xef9e,0xf7be,0xf7be,0xf7be,0xf7be,0xf79e,0xf7de,0xc69a,0x8c93,0x83d0,0xbe18,0xf7de,0xef9d,0xef9e,0xef9e,0xef9e,0xef9d,0xe77d,0xe77d,0xe79e,0xad75,0xa556,0x5a6b,0x632d,0x5b2d,0x526a,0xe73c,0xa514,0xefbe,0xef7d,0xef7d,0xe77d,0xe77d,0xef9d,0xe77d,0xe79e,0x4a49,0xef7d,0xefbe,0x8c72,0xa513,0xe75c,0xe75d,0xe73c,0xe75d,0xe75d,0xe75c,0xe75d,0xe79d,0x8c92,0xb5f8,0x4209,0x4a6a,0x4a6a,0x41c7,0xce58,0x73ae,0xe77c,0xdf1b,0xdf1b,0xdf1c,0xdf1b,0xdf1c,0xdefb,0xdf1c,0x6b4f,0xa534,0xd6fb,0xd71c,0x2104,0xe73b,0xceba,0xceba,0xd6da,0xd6da,0xceba,0xceba,0xdf3c,0x8430,0xd6bb,0x2987,0x39c8,0x39c7,0x28c4,0xa553,0x5aeb,0xd6da,0xc699,0xc679,0xc659,0xc679,0xc679,0xc679,0xc658,0xbe59,0xd6fc,0x3166,0xdf5b,0xbe58,0xbe58,0xbe38,0xbe18,0xbe18,0xc638,0xbe18,0xb5f7,0xbe99,0x738f,0xc619,0x2905,0x2946,0x2985,0x18c3,0xc657,0x8c92,0xbe17,0xb5d6,0xb5d6,0xadd6,0xb5d7,0xadd6,0xbe38,0x3187,0x73cf,0xbdf8,0xbe19,0xad97,0x18c3,0x8cb0,0xa575,0xa575,0xa576,0xad95,0xa555,0xad95,0xb596,0x5b2d,0x528c,0x10c3,0x1125,0x2124,0x1904,0x1082,0x8cd2,0x4249,0x9d34,0xa515,0xa555,0x9d55,0x9514,0xa514,0x9cf3,0x94f4,0x2106,0x7c2f,0x9515,0x420a,0x5b2b,0x9d13,0x94f4,0x94f3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8cb3,0x2986,0x6b8f,0x1083,0x1082,0x52a9,0xad56,0x1884,0x20e3,0x18e4,0x2104,0x18c4,0x31c6,0x5288,0x5aca,0x5aca,0x5aca,0x5a89, +0xd678,0xe7ff,0x532c,0x5aea,0x5aca,0x5ae9,0x5ae9,0x4228,0x4a8a,0x4228,0x4229,0x4249,0x4209,0x732d,0xd77c,0x42cc,0x4229,0x4229,0x3987,0xb575,0x9492,0xdf3c,0xcefb,0xd6db,0xcedb,0xd71b,0xd71a,0xdf9d,0x532d,0x9cd4,0xef9e,0xe79d,0xd75e,0x7411,0xb515,0xdf5c,0xd71b,0xd71b,0xd71b,0xdf1c,0xdf3c,0xbe59,0xad75,0x4b6e,0x3a28,0x4229,0x4a4a,0x6acb,0xadd7,0xc618,0xdf5c,0xe75d,0xdf5d,0xdf5c,0xdf5c,0xe77e,0x6bf0,0xce18,0xe7df,0x534e,0x7b4c,0xffff,0x8d35,0xacf3,0xf7be,0xe77d,0xef7d,0xef7d,0xe79d,0xefde,0xadd7,0xe7df,0x428b,0x5aec,0x62ec,0x5269,0xe6db,0xb596,0xffff,0xef9e,0xef9d,0xef9d,0xef9e,0xef9e,0xefbd,0xef9e,0xefdf,0x528b,0xffff,0xffff,0xf7be,0xef9e,0xf79e,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefff,0x9d34,0xa5f8,0x52eb,0x630c,0x6b4d,0x736d,0xf7ff,0xc639,0xf7ff,0xefbe,0xefbe,0xf7df,0xefbe,0xefbe,0xefbe,0xf7ff,0x6b2e,0xffde,0xffff,0xd71c,0xad75,0xf7fe,0xf7bf,0xf7de,0xf7be,0xf7de,0xefbe,0xefbe,0xefbe,0xad55,0x9514,0x6b6e,0x6b6d,0x6b8e,0x6b4d,0xf7be,0xbe17,0xf7de,0xf79e,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xf7df,0xbdf9,0xa4b3,0xffff,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef7d,0xef9e,0xef9e,0xad76,0xa576,0x4aac,0x632d,0x634d,0x528a,0xef5c,0x9513,0xf7be,0xef7d,0xe77d,0xe77d,0xef9d,0xe79d,0xe77d,0xf7df,0x9d57,0x8c91,0xffff,0x738e,0xf7de,0xe73c,0xe75c,0xe75d,0xe75c,0xe77d,0xe75c,0xe75c,0xe79e,0x8c92,0xb619,0x4209,0x4a6b,0x526a,0x41e7,0xce58,0x7bef,0xe77c,0xdf3c,0xdf3b,0xdefb,0xdf1b,0xdf1c,0xd71b,0xdf5d,0x7370,0xad34,0xd6db,0xdf3d,0x2146,0xd6fa,0xceba,0xceda,0xd6ba,0xd6db,0xceba,0xd6ba,0xd71b,0x8c51,0xd6bb,0x2167,0x39e8,0x39c7,0x2904,0xa553,0x5acb,0xd71b,0xce79,0xc679,0xc699,0xc679,0xc699,0xc699,0xce79,0xc659,0xd6db,0x3186,0xdf5b,0xbe38,0xc659,0xc658,0xbe38,0xbe38,0xbe18,0xbe18,0xb5f7,0xc679,0x738f,0xc619,0x2905,0x2986,0x2945,0x2104,0xbe17,0x8cb2,0xb616,0xb5d6,0xb5d7,0xadd6,0xb5d6,0xadb7,0xb5d8,0x31c7,0xb617,0xa595,0xadd6,0xb5f7,0x83f1,0x3a07,0xb5d6,0xadb6,0xa596,0xa575,0xad55,0xa576,0xb5b7,0x5b2d,0x526b,0x18c4,0x2104,0x2124,0x1924,0x08a2,0x8cb1,0x4249,0x9d54,0x9d14,0xa515,0x9d34,0x9534,0x9514,0x9514,0x9d35,0x3167,0x7bee,0x94d3,0x39c9,0x5b4c,0x94f2,0x94f3,0x94d2,0x94d3,0x94b3,0x8c92,0x8472,0x8cd3,0x2966,0x736f,0x0883,0x1082,0x4288,0xad15,0x2084,0x20e4,0x1904,0x1904,0x2904,0x39a5,0x5288,0x5ac9,0x62ca,0x5aca,0x5289, +0xd678,0xdfff,0x532c,0x5ac9,0x5aea,0x5aea,0x52e9,0x4227,0x4a69,0x4a49,0x4249,0x3a29,0x3a29,0x7b2d,0xcf3b,0x3acc,0x3a08,0x3a28,0x41c8,0xbdd6,0x9492,0xe77d,0xd6fb,0xdefb,0xd6fb,0xdefb,0xd71b,0xbf5d,0x6b2d,0xe77d,0xd6db,0xd6bb,0xd6db,0xae9a,0x5acc,0xef7d,0xdf1c,0xdf1c,0xdf3c,0xdf1c,0xdf1b,0xb618,0xa595,0x4b2d,0x4208,0x4a69,0x4249,0x72ed,0xad97,0xd679,0xe75c,0xdf5c,0xdf5c,0xdf3c,0xe75c,0xdf7d,0xa5f8,0x9cb2,0xdf9e,0x536e,0x6b2d,0xf7de,0x6c31,0xf77d,0xef7d,0xe77d,0xe77d,0xe79e,0xef9e,0xefde,0xc5f8,0xdfbe,0x42ab,0x530c,0x62eb,0x4a8a,0xe6fb,0xa534,0xffff,0xef9e,0xefbe,0xef9e,0xef9e,0xef9d,0xf79e,0xef9e,0xefdf,0x5acc,0xce38,0xc617,0xe73c,0xf7be,0xefbe,0xefbd,0xefbe,0xf7be,0xefbe,0xef9e,0xefff,0xa576,0xa5d8,0x5b0c,0x6b4e,0x6b6d,0x7b6d,0xf7ff,0xc638,0xf7ff,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0x6b6f,0xffbe,0xffff,0xbe39,0xbdb6,0xf7de,0xefbe,0xf7de,0xf7bf,0xf7de,0xf7be,0xf7be,0xef9e,0xad55,0x9d56,0x634e,0x6b8d,0x738e,0x6b0c,0xf7be,0xc617,0xf7df,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xef9e,0xf7be,0xad97,0xad14,0xf7be,0xef9d,0xef9e,0xef9e,0xef7d,0xef9d,0xef9d,0xef9e,0xef9e,0xef9e,0xb5b6,0xa556,0x52cc,0x5b0d,0x5b2d,0x5269,0xef5c,0x94f3,0xf79e,0xef7d,0xef9e,0xef7d,0xef9d,0xef9d,0xef7d,0xef7d,0xf7ff,0x6370,0x9471,0xb576,0xf7ff,0xe75d,0xe75d,0xe75d,0xe73c,0xe75d,0xdf5c,0xe75d,0xdf9d,0x9492,0xc639,0x4209,0x4a8a,0x4a8a,0x39a7,0xc658,0x840f,0xe77c,0xdf1c,0xdf3c,0xd6da,0xdf3b,0xdf1c,0xd71b,0xe75d,0x738f,0xad74,0xcefb,0xe75d,0x2906,0xdf1b,0xcedb,0xd6fb,0xd6da,0xce9a,0xce9a,0xd6ba,0xd6fb,0x8431,0xce9b,0x2946,0x39e8,0x31c7,0x2924,0xad94,0x5aca,0xd6fb,0xc659,0xc659,0xc699,0xc679,0xc69a,0xc679,0xce99,0xc658,0xd6fc,0x2966,0xdf5b,0xbe58,0xc659,0xbe59,0xbe58,0xbe58,0xbe38,0xbe18,0xb617,0xc679,0x73af,0xc618,0x2905,0x2186,0x2966,0x18e2,0xbe17,0x8cd3,0xb617,0xb5f7,0xb5f7,0xb5f7,0xb5d7,0xb5d7,0xa4f5,0x632d,0xbe17,0xad96,0xb596,0xb596,0xad76,0x2985,0xadd6,0x9d75,0xa596,0xa575,0xa575,0xa595,0xa596,0x632c,0x524b,0x20c4,0x2124,0x1904,0x1924,0x08a2,0x8470,0x4228,0x9d54,0x9d34,0x9d14,0x9d33,0x9d34,0x94f3,0x9cf4,0x9d35,0x39a8,0x1082,0x1083,0x31c7,0x84b3,0x8cd2,0x94b3,0x9492,0x8472,0x7bf0,0x7c10,0x7410,0x8cd3,0x2145,0x6b6f,0x10a3,0x1082,0x4288,0x9cd3,0x18c4,0x18e2,0x1903,0x1924,0x18c3,0x3985,0x52a8,0x5aca,0x5aea,0x5aea,0x5aa9, +0xd699,0xdfff,0x530b,0x5b0a,0x62ea,0x62ca,0x52e9,0x3a28,0x4a69,0x4249,0x4229,0x4229,0x3a4a,0x730c,0xcf3c,0x4acc,0x3a29,0x4229,0x41c7,0xb5b5,0x9492,0xe75d,0xd6db,0xd6db,0xd6fb,0xd71b,0xcefb,0xb73c,0x738f,0xd699,0xb5b7,0xdeda,0xe75c,0xbf3d,0x526a,0xef9e,0xd71c,0xd71c,0xd71b,0xdf1c,0xdf1b,0xb638,0xadb6,0x534e,0x4229,0x424a,0x4a6a,0x7b2c,0xad76,0xd69a,0xe75c,0xe75d,0xe75c,0xe75c,0xe75c,0xe77d,0xcf5d,0x7c31,0xadd7,0xb5d6,0x9d76,0xdf3c,0x73cf,0xf7ff,0xe77d,0xe77d,0xef7d,0xe77d,0xe79d,0xefff,0xbdd7,0xdfdf,0x42ac,0x5b0c,0x62ec,0x526a,0xef3c,0xb575,0xf7ff,0xef9e,0xef9e,0xefbe,0xf7be,0xef9e,0xef9e,0xef9e,0xefdf,0x5aed,0xad55,0xb5b6,0xe75c,0xf7be,0xf7be,0xefbd,0xefbe,0xf7be,0xefbe,0xefbe,0xf7ff,0xa575,0x9597,0x530c,0x636e,0x6b8e,0x730d,0xf7ff,0xc638,0xf7de,0xf7be,0xf7df,0xefbe,0xefbe,0xf7be,0xefbe,0xf7ff,0x5b2e,0x8c71,0x8c31,0x94b2,0xf79e,0xf7be,0xefde,0xf7df,0xf7df,0xf7df,0xf7de,0xf7be,0xef9e,0xad75,0x9515,0x634d,0x6b8e,0x636d,0x6b0c,0xf7de,0xbdf7,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf79e,0xef9e,0xf7de,0xad97,0xad35,0xf7df,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xe79e,0xb5b7,0xa556,0x5acc,0x5b0d,0x5b2d,0x5a49,0xe73c,0x9cf3,0xef9e,0xef7d,0xef7e,0xe77d,0xef9d,0xe77d,0xef7d,0xe77d,0xefbe,0xadd8,0x5249,0xef7d,0xe79d,0xe75c,0xe75c,0xe75d,0xe75c,0xe75c,0xdf5c,0xdf5c,0xdf5c,0x9472,0xbe39,0x3a09,0x4a6a,0x4a8a,0x39a6,0xc638,0x740f,0xe77c,0xdf3c,0xe71c,0xdf1b,0xdf1b,0xdf1c,0xd6fb,0xe75c,0x738f,0xad54,0xd71b,0xef5d,0x2905,0xe75c,0xceba,0xd6da,0xd6da,0xd6bb,0xcedb,0xceba,0xdefb,0x7c10,0xcebb,0x3147,0x31c7,0x29e7,0x2924,0x9d54,0x4a6a,0xdefb,0xc659,0xc699,0xc679,0xc679,0xce79,0xce79,0xc678,0xbe58,0xcedb,0x3166,0xdefa,0xc679,0xc659,0xbe59,0xc659,0xbe58,0xb618,0xbe18,0xb637,0xce9a,0x73af,0xbdf8,0x2125,0x2186,0x2165,0x10e2,0xbe58,0x8492,0xc658,0xb5d7,0xb5f7,0xb5d7,0xadf7,0xadd7,0xad97,0x2986,0xd6da,0xa5b6,0xa575,0xb5d7,0x7bb1,0x3a28,0xadd6,0xa596,0xad95,0xa575,0xa554,0xa575,0xb5f8,0x5b2c,0x5a6c,0x18c4,0x2105,0x1904,0x2124,0x10a3,0x7c50,0x526a,0x9d54,0x9d34,0x9513,0x9d34,0x9cf4,0x9d14,0x9514,0x9d14,0x2967,0x7bef,0x94d2,0xa555,0x8cd3,0x94f3,0x94d3,0x94d3,0x8cd3,0x84d3,0x84b3,0x8492,0x94f4,0x2987,0x73d0,0x1083,0x20a3,0x4a88,0xad35,0x18a4,0x1903,0x1904,0x1904,0x18c3,0x31a5,0x4a88,0x5aca,0x5aca,0x5aca,0x5aa9, +0xce78,0xdfff,0x4b0b,0x5ac9,0x5aea,0x5aea,0x52e9,0x3a27,0x3a48,0x426a,0x4249,0x3a29,0x3a09,0x730c,0xd77d,0x42ab,0x4248,0x4208,0x39a7,0xbdd6,0x9c93,0xe75c,0xcedb,0xd6db,0xd6fb,0xdefb,0xcefb,0xcf7d,0x326a,0x4a08,0x6b4e,0x52ab,0xad95,0x84f3,0x83cf,0xe75d,0xdefc,0xdf1b,0xdf1c,0xdf1c,0xdf1c,0xb659,0xbe17,0x534e,0x3a29,0x426a,0x4a6a,0x734c,0x9d75,0xd69a,0xe77d,0xe75d,0xdf5c,0xe75d,0xe77d,0xe75d,0xe7ff,0x6c52,0x5acb,0xe6fa,0xbefb,0x5b2d,0x9c92,0xef9d,0xe77d,0xe77d,0xef9e,0xe77d,0xe77d,0xe7ff,0xb5b6,0xdfbe,0x4aac,0x5b0d,0x630c,0x526a,0xef5c,0xb575,0xffff,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf79d,0xefdf,0x528b,0xffff,0xefbe,0xefbe,0xf7be,0xf7de,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7ff,0xa595,0x95b7,0x4aeb,0x636e,0x638e,0x6aec,0xf7ff,0xc638,0xf7ff,0xf7bf,0xf7be,0xf7df,0xf7be,0xf7be,0xefbe,0xf7ff,0x630e,0xe77e,0x8410,0xffdf,0xf7ff,0xf7be,0xf7df,0xf7be,0xf7be,0xf7df,0xf7de,0xffdf,0xef9e,0xb5f6,0x8cd4,0x6b6d,0x6b8e,0x6b8e,0x734d,0xf7be,0xbdf7,0xf7de,0xf7be,0xf7be,0xf7de,0xf7be,0xf7be,0xf7be,0xefbe,0xf7df,0xad97,0xad34,0xf7be,0xf7be,0xef9e,0xef9e,0xf7be,0xef9e,0xef9e,0xef9e,0xef9e,0xe77d,0xb596,0xa576,0x52cc,0x634d,0x5b2d,0x5269,0xef5c,0x9d14,0xef9e,0xef7d,0xef9e,0xef7d,0xef9d,0xe79d,0xef9e,0xef9d,0xe77c,0xcebb,0x6b4e,0xf7de,0xe77d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75c,0xdf5c,0xe75c,0xe79d,0x8c72,0xc65a,0x3a0a,0x528b,0x526b,0x39a7,0xce79,0x740f,0xe75c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf3c,0xdefb,0xdf1b,0x8cb3,0x8430,0xe73c,0xe71c,0x2965,0xdf3c,0xceba,0xd6fa,0xd6da,0xd6db,0xceba,0xceba,0xdf1b,0x8430,0xcebb,0x3167,0x41c8,0x39c7,0x2104,0x9d33,0x528a,0xd6fb,0xc659,0xc679,0xc679,0xc679,0xce79,0xce59,0xc678,0xbe58,0xcebb,0x3166,0xd6fa,0xc658,0xc659,0xbe18,0xbe39,0xbe38,0xbe38,0xbe58,0xbe17,0xd6fb,0x73cf,0xce19,0x2145,0x31a7,0x3185,0x1903,0xc678,0x8492,0xb657,0xb617,0xb5f7,0xb5d7,0xadf7,0xa5b6,0xadb7,0x3167,0x6b6d,0xbe38,0xb597,0x9cb4,0x10a3,0x9d13,0xadb6,0xad96,0xa596,0xa575,0xa575,0xa575,0xb5d7,0x5b2d,0x5aac,0x10a3,0x2104,0x2105,0x2104,0x20c3,0x7c70,0x52ab,0xa575,0x9514,0x9d14,0x9d34,0x9514,0x9d34,0x94f4,0x9534,0x31a7,0x6bce,0x8cd2,0x8cd3,0x94d3,0x8cd3,0x94f4,0x8cd3,0x94d3,0x8cb3,0x8cb3,0x94f3,0x84b2,0x31c8,0x7bf1,0x1063,0x1883,0x4aa9,0xa535,0x10a4,0x20e3,0x10c4,0x2104,0x20e4,0x31a5,0x4a68,0x52c9,0x5aea,0x5aca,0x5aa9, +0xd699,0xd7df,0x430b,0x5b0a,0x5309,0x52e9,0x52ca,0x3a28,0x4a89,0x428a,0x3a49,0x4249,0x39a8,0x836e,0xd79c,0x3a8b,0x4a28,0x4a29,0x39a7,0xbdd6,0x9c93,0xef7c,0xcedb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0x9597,0x52ab,0xbe17,0xbeba,0x31e8,0x3186,0xc596,0xd73c,0xdf3c,0xdf3c,0xdf3c,0xd71c,0xdf1c,0xb639,0xb5f7,0x430d,0x4249,0x4a69,0x4a4a,0x7b4d,0x9d76,0xd679,0xdf5c,0xe77d,0xe75c,0xe75c,0xe75d,0xdf5d,0xdf7d,0x9dd8,0x4a09,0xffde,0xe7be,0x3a29,0xd658,0xef7d,0xe77d,0xef9e,0xe77d,0xe77d,0xe77d,0xefff,0xbdf8,0xdfbe,0x4a6b,0x62ec,0x630c,0x5a8b,0xef5c,0xb555,0xffff,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf7be,0xefbe,0xefdf,0x4a8b,0xde9a,0xd69a,0xef5d,0xf79e,0xf7be,0xf7be,0xefbe,0xefbe,0xefbe,0xf7be,0xefdf,0xa555,0x9dd7,0x530c,0x6b6e,0x6b6d,0x730d,0xf7ff,0xc639,0xf7df,0xef9e,0xf79e,0xf7df,0xf7df,0xf7df,0xf7df,0xffff,0x5aed,0xf7df,0xc67a,0x7b8f,0xffff,0xf7de,0xf7bf,0xf7de,0xf7bf,0xf7be,0xf7be,0xf7be,0xef9e,0xbdf7,0x8cf4,0x634e,0x6b6e,0x6b6e,0x734d,0xf79d,0xbe17,0xffff,0xef9e,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xb5b8,0xad14,0xf7be,0xef9d,0xf7be,0xef9e,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef7e,0xbdf8,0xa556,0x5aac,0x630d,0x5b0b,0x5269,0xe71b,0xa534,0xef9e,0xef7d,0xef9e,0xef9d,0xef7d,0xef9e,0xef7d,0xef7d,0xe75c,0xcebb,0x6b4e,0xefde,0xe77d,0xe75d,0xef7d,0xe75c,0xef9d,0xe77d,0xe75c,0xe75d,0xef9e,0x8c92,0xc659,0x3a09,0x428a,0x526b,0x39a7,0xce79,0x7bef,0xe75d,0xdf1c,0xd71b,0xd71b,0xdf3c,0xe77d,0xdf1c,0xdf1c,0xd73d,0x3a29,0x6b2d,0x5229,0x8430,0xd6fb,0xd6da,0xd6da,0xd6da,0xd6da,0xceda,0xd6da,0xd6fb,0x8431,0xcedb,0x31a7,0x41e8,0x39c7,0x18e4,0xa554,0x528a,0xd6fb,0xc65a,0xc679,0xc699,0xc658,0xc679,0xce79,0xc679,0xc659,0xceba,0x29a6,0xd71a,0xbe78,0xc658,0xbe38,0xbe58,0xc638,0xbe38,0xbe38,0xbe18,0xceda,0x636e,0xce19,0x2145,0x3146,0x2966,0x1924,0xbe58,0x8492,0xb638,0xb5f7,0xb5f8,0xadd6,0xadd7,0xb5d7,0xad96,0xbdf8,0x630d,0x1883,0x1083,0x2966,0x94f3,0xb5f7,0xa596,0xa575,0xa575,0xa5b6,0xa596,0xad95,0xb596,0x5aec,0x5ace,0x10a3,0x2124,0x2904,0x20e4,0x18c3,0x7430,0x52eb,0xa595,0x9d14,0xa514,0xa534,0x8cf4,0x9d34,0x9513,0x9d55,0x4a4a,0x63ad,0x94f3,0x94f4,0x94d4,0x8cd3,0x94d3,0x8cf4,0x8cf3,0x94d3,0x94d2,0x94d3,0x84b3,0x31c8,0x7bd0,0x1063,0x10a2,0x4a89,0xad76,0x18c5,0x18e4,0x1104,0x2104,0x20a4,0x31a5,0x4a88,0x5aca,0x62ea,0x62ea,0x5a89, +0xd699,0xd7be,0x430b,0x5aea,0x5aea,0x52ca,0x52ea,0x3a27,0x41e8,0x3a49,0x3a29,0x4249,0x31e8,0x8bae,0xcf7c,0x328b,0x4a28,0x4a29,0x41a8,0xb5d6,0x94b3,0xe75c,0xd6db,0xd6db,0xd6db,0xd6fb,0xd6db,0xceda,0xdf5d,0xa5f8,0x5b6e,0x5aec,0x8472,0xa5b7,0x8451,0xdf3c,0xd71c,0xdf3c,0xd71b,0xd71c,0xdf1c,0xb639,0xbdd7,0x4acd,0x4229,0x426a,0x4a6a,0x7b4d,0xadd6,0xce59,0xe75d,0xdf5d,0xdf5c,0xe75c,0xe75d,0xe75d,0xe73c,0xcf3d,0xb5d7,0xe77d,0xe77d,0x9514,0xe71c,0xe77d,0xef7d,0xef9e,0xe79d,0xef9e,0xef7d,0xefff,0xbe18,0xd77d,0x52ac,0x52ec,0x5aec,0x5a8a,0xef3c,0xad35,0xffff,0xef9e,0xf7be,0xef9e,0xef9e,0xefbe,0xef9d,0xefbe,0xe79e,0x9535,0x9d15,0x9cd3,0xe71b,0xf7be,0xefbe,0xefbe,0xef9e,0xef9e,0xefbe,0xf7be,0xf7ff,0xad95,0xa5b8,0x5b0d,0x6b6f,0x6b8e,0x736d,0xf7ff,0xce7a,0xffff,0xf7be,0xf7be,0xf7bf,0xf7bf,0xf7df,0xefbe,0xf7de,0xa575,0xf7bd,0xefdf,0xa555,0xdf1c,0xf7de,0xefbe,0xefbe,0xf7bf,0xf7be,0xefbe,0xf7be,0xef9e,0xbe18,0x94f4,0x632d,0x738e,0x6b6e,0x734c,0xf7be,0xbdf7,0xf7ff,0xef9e,0xf7be,0xefbe,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xc679,0xc658,0xf7be,0xefbd,0xef9d,0xef9e,0xf79e,0xf79e,0xef7d,0xef9d,0xef9d,0xe79e,0xb5d7,0xa576,0x5a8c,0x5aed,0x5b0c,0x526a,0xe71c,0xa554,0xef7d,0xef9d,0xef7e,0xef9e,0xef9e,0xef9e,0xe77d,0xe77d,0xe75c,0xdf3c,0xadb6,0xe77d,0xe77d,0xe77c,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xef9e,0x94f3,0xbe5a,0x4a4a,0x4a6a,0x526a,0x3986,0xce38,0x73ef,0xefbd,0xdf1b,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xdf1b,0xdefb,0xe71c,0xdefc,0xa596,0xb5f7,0xdf5c,0xd6ba,0xd6db,0xceba,0xceba,0xd6db,0xd6bb,0xceba,0xd6fc,0x8c30,0xce9b,0x2947,0x41e8,0x39e8,0x2104,0xa534,0x4a49,0xdefb,0xc679,0xc699,0xce99,0xc699,0xc679,0xc639,0xc639,0xc659,0xbe58,0x9555,0xced9,0xbe59,0xbe38,0xbe38,0xbe18,0xc618,0xbe18,0xbe38,0xbe17,0xdefb,0x6b8f,0xad56,0x2125,0x2966,0x3165,0x20e3,0xc637,0x7bef,0xc678,0xb5f7,0xadb6,0xadd7,0xadd6,0xb5d6,0xb5d6,0xadb6,0xbe99,0xb5f8,0xadf8,0xb618,0xb5f6,0xb5b6,0xad76,0xa595,0xadb6,0xadb6,0xa575,0xa575,0xa555,0x5b2d,0x62ce,0x18c4,0x2124,0x20e5,0x20e4,0x18c4,0x6bee,0x6b8e,0xad95,0xa555,0xa535,0xa555,0x9d55,0xa555,0xa555,0x9d34,0xa576,0x9d75,0x9d35,0xa535,0x9d14,0x9534,0x9d34,0x9514,0x9d35,0x9d55,0x9d34,0x9cf4,0x8472,0x39e8,0x6b8f,0x1062,0x1082,0x3a47,0xad96,0x18a5,0x18e4,0x0903,0x1904,0x10e4,0x3185,0x4a88,0x5ae9,0x62c9,0x62ca,0x5aa9, +0xd678,0xd79e,0x4aec,0x62ea,0x5aca,0x52ca,0x52c9,0x4227,0x4228,0x4269,0x3a29,0x4208,0x4209,0x93af,0xcf9d,0x3a4a,0x41e7,0x4a09,0x3987,0xa514,0x8cf3,0xd6da,0xe77c,0xdf5c,0xd73c,0xdf3b,0xe75c,0xe75c,0xef5d,0xef9d,0xf7fe,0xf7df,0xf7be,0xefde,0xefde,0xef9d,0xf79e,0xefbe,0xf7de,0xefbe,0xe77e,0x94b3,0xd75d,0x4a6a,0x4a69,0x424a,0x426a,0x72ec,0xc6ba,0xb5d6,0xef9e,0xefbe,0xefbe,0xf7df,0xf7df,0xefff,0xf7df,0xffff,0xffff,0xf7de,0xefde,0xf7fe,0xf7ff,0xf7de,0xf7fe,0xf7de,0xf7df,0xf7de,0xf7fe,0xe7de,0xa535,0xbedb,0x4a8b,0x5b0c,0x5aec,0x526a,0xce37,0xad96,0xf7be,0xffff,0xffdf,0xf7de,0xf7de,0xf7df,0xf7de,0xf7de,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7de,0xf7be,0xf7ff,0xd6db,0xce9a,0x8cf4,0x5b2c,0x6b8e,0x6b8e,0x6b2d,0xffde,0xceba,0xfffe,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xf7df,0xf7de,0xf7df,0xffff,0xffff,0xffff,0xdefb,0xe73c,0x7c31,0x6b6e,0x738e,0x6b6d,0x6b0b,0xffbe,0xc658,0xfffe,0xffdf,0xf7df,0xf7ff,0xffdf,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7df,0xf7ff,0xffff,0xffff,0xffff,0xf7be,0xf7bf,0xf7ff,0xdf3c,0xdf3c,0x8cd4,0x632c,0x634e,0x5b2d,0x5aab,0xe6fa,0xadf6,0xf7be,0xf7de,0xefbe,0xf7de,0xf7de,0xefde,0xef9d,0xf7df,0xf7de,0xf7de,0xffff,0xf7de,0xf7de,0xf7de,0xefbe,0xef9d,0xf7be,0xf7be,0xefbe,0xef7d,0xdefc,0xbdf8,0xad97,0x526a,0x4a6a,0x526a,0x41c7,0xb596,0x94b3,0xdefb,0xefbd,0xef9d,0xef9d,0xe77c,0xe75c,0xef7c,0xe79d,0xe75c,0xe75c,0xdf1b,0xdf1b,0xdf1b,0xe75c,0xe77c,0xdf5c,0xe73c,0xe73c,0xe75d,0xe73c,0xc679,0xa594,0xad76,0x3167,0x41c8,0x31c7,0x2966,0x8c2f,0x8451,0xa555,0xce99,0xd6ba,0xdeda,0xce99,0xd6ba,0xceba,0xceba,0xd69a,0xceb9,0xce79,0xceba,0xc679,0xbe59,0xbe59,0xc659,0xc658,0xc617,0xbdf7,0xbe18,0x9cd2,0x8cb2,0x734f,0x2125,0x3186,0x3965,0x18a2,0xa533,0x5aac,0xad35,0xc658,0xb617,0xb5f7,0xadb6,0xadb6,0xad74,0xa574,0xad95,0xad75,0xa534,0x9d14,0xa534,0x9cf3,0x9cf3,0x9d33,0x9d34,0x9d13,0x9d13,0x94d2,0x6b8d,0x94b2,0x4188,0x18e4,0x2105,0x2104,0x1904,0x1904,0x2164,0x9d55,0x424a,0x6b6e,0x738e,0x6b8d,0x636d,0x636d,0x6b6d,0x6b4d,0x634d,0x6b4e,0x630d,0x5aeb,0x52aa,0x52aa,0x528a,0x4a49,0x4a49,0x4a28,0x4a48,0x4208,0x3228,0x8471,0x4a09,0x18a3,0x10a2,0x3227,0xa555,0x18a5,0x1103,0x08e4,0x2104,0x2104,0x2985,0x4a68,0x5aea,0x5ac9,0x62c9,0x5aa9, +0xd679,0xcfbe,0x4acb,0x5aea,0x5aea,0x5aca,0x5ac9,0x4207,0x4a69,0x426a,0x4229,0x4a49,0x4a29,0x8b8f,0xcf9d,0x322a,0x39e7,0x4a28,0x39e8,0x4a4a,0xc658,0x94f4,0x8452,0x8451,0x8492,0x8c72,0x9472,0x8c92,0x8471,0x9d35,0x9514,0x94f3,0x9d35,0x9d35,0x9d35,0xa575,0x9d55,0xa575,0xa575,0xa576,0xadf7,0xe77d,0x8492,0x4207,0x5249,0x4a8b,0x4a8a,0x4228,0xce38,0xdedb,0xa555,0x9d14,0xa554,0xa554,0xa514,0xa555,0xad75,0xad75,0xad75,0xad76,0xad75,0xb596,0xb5b6,0xb5b6,0xad96,0xad75,0xad76,0xad76,0xa575,0xbe17,0xefdf,0x538e,0x52cc,0x5b0b,0x5acb,0x52cc,0x7b8e,0xef9d,0xc679,0xb5b7,0xa576,0xad96,0xad96,0xad96,0xa596,0xad96,0xadb6,0xad96,0xad75,0xad96,0xad76,0xadb6,0xb5b7,0xb5d7,0xbdf7,0xb5d7,0xb5f7,0xbdf8,0xce7a,0xef9e,0x5b2d,0x6b8e,0x6b8e,0x738f,0x736e,0xbd74,0xf7de,0xc659,0xb5b6,0xbdb7,0xbdb7,0xbdb7,0xb596,0xb5b6,0xc5f7,0xbdd7,0xbdf8,0xb5d7,0xb5b7,0xad96,0xad76,0xa535,0xa535,0xa535,0xa555,0xa555,0xa555,0xd6ba,0xe77d,0x632d,0x6b4e,0x6b8f,0x636e,0x5b2c,0xad34,0xffff,0xce79,0xbdf7,0xbe18,0xbe38,0xb5d7,0xb5d7,0xbdd7,0xb5d7,0xbdf7,0xbdf7,0xb5d7,0xadb6,0xad96,0xb5d7,0xadb6,0xb5d6,0xb5d6,0xb5b6,0xad96,0xadb5,0xdefb,0xef9e,0x532d,0x634d,0x636d,0x634d,0x5aeb,0x83cf,0xffdf,0xc659,0xb5d6,0xbdb6,0xad75,0xad75,0xad75,0xad96,0xb5b6,0xb5b6,0xb5d6,0xb5b6,0xad96,0xb596,0xb5b5,0xad75,0xad75,0xad75,0xb596,0xb596,0xb5b6,0xce59,0xe6fc,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x5aaa,0xef3c,0xbe18,0xa555,0xa534,0xa534,0x9d34,0x9d14,0x9d14,0xa534,0xa514,0x9cd3,0x9d14,0xa555,0x9cf4,0x94f4,0x9514,0x9d33,0xa535,0xa535,0xa555,0xa575,0xc659,0xc5f7,0x41e9,0x39e7,0x39e7,0x31e8,0x39e7,0x3145,0xbdf6,0xc679,0xad96,0xa576,0xa576,0xb617,0xad96,0xadb6,0xad95,0xadb5,0xbe58,0xad96,0xa575,0xadd7,0xa596,0x9d54,0xadb6,0xa595,0xa595,0x9d54,0xa575,0xbe18,0x9cb3,0x20e4,0x3166,0x3186,0x2166,0x2145,0x2123,0xa575,0x9d55,0x9d14,0x9cd4,0x94b2,0x9cf3,0x9cf3,0x9d13,0x9d14,0x9d14,0xa4f4,0xa4f4,0xa514,0x9d14,0xa534,0xad75,0xb596,0xa555,0x9d14,0x94f4,0x9d14,0x9d35,0x5aec,0x1884,0x2105,0x1904,0x1904,0x18e5,0x1104,0x1081,0x41e7,0x94b2,0x9d13,0x94d3,0x8c91,0x8cb2,0x8471,0x8c71,0x9493,0x8c72,0x8451,0x8451,0x7c50,0x7c50,0x7450,0x7c30,0x8431,0x7c30,0x8430,0x7c30,0x7c0f,0x7baf,0x41e9,0x10a3,0x10e3,0x10c2,0x3207,0x9cf4,0x18c5,0x2104,0x18e3,0x18e3,0x20a4,0x2965,0x5267,0x5aa9,0x5aca,0x5aca,0x52ca, +0xd679,0xcf9e,0x42cb,0x5b0a,0x5ae9,0x5ae9,0x52c9,0x4227,0x4228,0x426a,0x4249,0x4249,0x4a29,0x8bd0,0xd7bd,0x2a2a,0x3a08,0x3a28,0x4229,0x3a29,0x626a,0xa4d3,0xa535,0xad55,0xad75,0xad55,0xa555,0x9d54,0xad96,0xb596,0xa554,0xa534,0xad74,0xad55,0xad55,0xa534,0xa534,0xad54,0xad34,0xa534,0x9d54,0x4aab,0x41e9,0x5269,0x5269,0x4a69,0x4269,0x3a8a,0x5229,0x9451,0xbdb6,0xc617,0xc637,0xc658,0xce99,0xbdf7,0xc618,0xc638,0xc638,0xc618,0xbe18,0xc5f8,0xbdf7,0xce38,0xc618,0xce59,0xce79,0xce79,0xc679,0xc658,0x5b4c,0x52cb,0x5b0c,0x52cb,0x52cb,0x5aec,0x5b0c,0x634c,0xc5d6,0xd6ba,0xd69a,0xd6b9,0xd69a,0xd679,0xce79,0xd6ba,0xd679,0xd69a,0xdeda,0xd6da,0xdedb,0xdeda,0xd6bb,0xd6da,0xd6db,0xdeda,0xdeda,0xd699,0xc5f7,0x5b2d,0x632d,0x6b8e,0x6b6e,0x636e,0x73ae,0x632c,0x8c50,0xd659,0xde9a,0xdeba,0xdeba,0xdeba,0xdeba,0xdeba,0xd6ba,0xd6ba,0xdedb,0xd6bb,0xd69a,0xd6da,0xd6da,0xd6db,0xdefb,0xd6db,0xdf1b,0xdf1b,0xdefb,0xc618,0x534d,0x5b4e,0x636e,0x6bae,0x638d,0x636e,0x62cb,0x9471,0xce59,0xde9a,0xdeba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd69a,0xd6ba,0xce59,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xdeba,0xd69a,0xb5d7,0x52cc,0x5acb,0x634d,0x5b2c,0x632d,0x632d,0x4a8a,0x6b2c,0xc617,0xc618,0xc638,0xce59,0xce79,0xc638,0xc5f7,0xc5f7,0xc5f7,0xce18,0xc618,0xc618,0xbdf7,0xc5f7,0xc5f8,0xbdd7,0xbdf7,0xb5b6,0xbdb7,0xb5b6,0x9cd4,0x4a29,0x4a6a,0x528a,0x4a6a,0x4a8a,0x428a,0x526a,0x4a08,0x9cd2,0xb595,0xad75,0xb575,0xad75,0xa534,0xa534,0xa533,0x9cf3,0x9cd3,0x9cf3,0xa514,0xa4f3,0xa513,0x94b2,0x9492,0x9491,0x9491,0x9491,0x9492,0x83ae,0x3986,0x31c7,0x41e8,0x39c7,0x29a7,0x31e7,0x39a6,0x3124,0x5a8a,0x62ec,0x6b6d,0x630c,0x630c,0x62cb,0x6aeb,0x630b,0x6b0b,0x5acb,0x62ec,0x62eb,0x6aeb,0x5aaa,0x5aca,0x5289,0x4a69,0x4a69,0x4a69,0x5289,0x49e8,0x20e5,0x2946,0x2185,0x1945,0x1946,0x1946,0x1946,0x0862,0x2985,0x4207,0x39e6,0x41c7,0x3986,0x39a6,0x31c6,0x3186,0x2945,0x2945,0x2945,0x2965,0x3144,0x2944,0x2124,0x2924,0x2104,0x2945,0x2145,0x2124,0x0861,0x10a2,0x1924,0x1104,0x18e4,0x1105,0x18e5,0x1904,0x2124,0x20c3,0x0801,0x0800,0x0820,0x0021,0x0820,0x0820,0x0820,0x0822,0x0821,0x0041,0x0021,0x0800,0x0000,0x0021,0x0021,0x0820,0x0820,0x0020,0x0021,0x0000,0x0820,0x0062,0x00e3,0x10e3,0x0082,0x3a27,0x9d34,0x18c5,0x10e3,0x10e3,0x1904,0x2105,0x2164,0x4a47,0x5aa9,0x5aaa,0x5ac9,0x52a9, +0xd699,0xc75d,0x4aca,0x5b0a,0x5ae9,0x5ae9,0x52c9,0x4248,0x3a07,0x4269,0x4a48,0x4209,0x39c8,0x9430,0xd7bd,0x324a,0x39e8,0x3a07,0x4208,0x3a08,0x3a08,0x4228,0x4228,0x3a28,0x4207,0x4207,0x41e8,0x39c7,0x39e7,0x39e8,0x4229,0x3a29,0x3a29,0x3a29,0x4208,0x4228,0x4248,0x4249,0x4249,0x4249,0x428a,0x4a49,0x4a49,0x4a6a,0x426a,0x4268,0x4249,0x426a,0x4a8a,0x526a,0x4a49,0x4a49,0x4a49,0x5289,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4aaa,0x4289,0x426a,0x4a6a,0x4a8a,0x52cb,0x5aec,0x530b,0x52ec,0x5b0c,0x632c,0x5b0c,0x5aeb,0x5aec,0x52eb,0x52cb,0x5aab,0x5aec,0x52cb,0x4aab,0x52cb,0x630c,0x630c,0x62ec,0x6b2d,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632d,0x6b2d,0x5acb,0x52ab,0x52ab,0x636d,0x6b6e,0x634e,0x6b6e,0x6b6e,0x736e,0x6b4d,0x6baf,0x6bce,0x6b6d,0x6b4c,0x6b4d,0x6b6e,0x634d,0x636d,0x6b8e,0x636e,0x638e,0x6bae,0x636d,0x634d,0x634d,0x6b6d,0x6b6d,0x6b6d,0x738d,0x734d,0x738e,0x5b0d,0x738f,0x6b8e,0x6baf,0x636e,0x73ae,0x6b8e,0x6b4e,0x634e,0x736d,0x736d,0x6b2d,0x62ec,0x734e,0x5aed,0x630d,0x5aec,0x634c,0x6b0c,0x636d,0x534c,0x5aec,0x630c,0x736e,0x5b2d,0x630c,0x6b4e,0x632d,0x5acb,0x52cb,0x530c,0x5b2d,0x5aeb,0x6b2c,0x630c,0x52ec,0x52cb,0x5acb,0x630c,0x52cb,0x4a8b,0x5aca,0x4a6a,0x528a,0x528a,0x52ab,0x52ab,0x4acb,0x4aab,0x528b,0x528b,0x528b,0x426a,0x4a4a,0x4a6a,0x52ab,0x4a8a,0x426a,0x4a6a,0x4a4a,0x4a6a,0x4a4a,0x4a6a,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4229,0x4229,0x4228,0x3a28,0x3a08,0x4229,0x3a08,0x31e8,0x39e8,0x41e8,0x39c7,0x41e7,0x39c7,0x31e7,0x4208,0x39a7,0x39e7,0x39e7,0x29c7,0x3208,0x3a08,0x39e8,0x3a07,0x39e8,0x31a7,0x29c8,0x31c6,0x39e7,0x31c7,0x31a6,0x31c6,0x29c7,0x29a6,0x31a7,0x31a6,0x3186,0x3185,0x39a7,0x29a6,0x3166,0x39a7,0x3185,0x3186,0x3166,0x29a6,0x2167,0x2966,0x2966,0x2145,0x3166,0x2966,0x2146,0x2166,0x2165,0x2166,0x1146,0x2145,0x2145,0x1965,0x2166,0x2125,0x2145,0x2125,0x2145,0x2966,0x2145,0x2125,0x1924,0x1925,0x1925,0x1904,0x2125,0x2124,0x1924,0x2124,0x2125,0x1905,0x1105,0x18e5,0x1904,0x1904,0x20e4,0x2104,0x2103,0x1904,0x10e4,0x18e4,0x20e4,0x20e4,0x18e4,0x08e3,0x10e4,0x18e3,0x1903,0x18e3,0x18e3,0x10e2,0x1103,0x10e4,0x18c3,0x18e4,0x10e3,0x18e4,0x18e4,0x08e3,0x1103,0x10e3,0x10e3,0x10e3,0x10e3,0x08c3,0x10e3,0x08a3,0x4248,0x9d55,0x10c5,0x10e4,0x10e4,0x1904,0x18c2,0x2964,0x3a47,0x52a9,0x5ac9,0x5ac9,0x5a89, +0xde99,0xc75d,0x4aea,0x5b0a,0x52ea,0x5ae9,0x52c9,0x3a27,0x4248,0x4269,0x4a29,0x4249,0x39c8,0x9430,0xcf5c,0x322a,0x39e8,0x4228,0x4208,0x4208,0x3a28,0x4228,0x3a28,0x4229,0x4228,0x4a28,0x4228,0x3a08,0x3228,0x3a29,0x3a28,0x4229,0x4229,0x424a,0x4229,0x4229,0x4249,0x4a49,0x4269,0x3a49,0x3a49,0x4a4b,0x4a49,0x4249,0x4249,0x4249,0x3a49,0x4249,0x528a,0x4a8a,0x4a8a,0x4a8a,0x52ab,0x52aa,0x52aa,0x5a8b,0x52cb,0x5acb,0x52ab,0x52cc,0x5aac,0x5acc,0x52ab,0x4acb,0x52cc,0x52ec,0x52cb,0x5aec,0x5aec,0x52ec,0x5acb,0x52ab,0x5aec,0x52eb,0x5b2c,0x5b0c,0x5b0c,0x632c,0x5b0c,0x632d,0x632d,0x5b4d,0x5b2d,0x5b0d,0x5b2c,0x632d,0x5b4d,0x632d,0x634e,0x634d,0x634d,0x636e,0x636d,0x634d,0x5b6e,0x638e,0x73ae,0x6b8f,0x638e,0x636e,0x6b6d,0x632d,0x6b8e,0x6b4d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x6baf,0x73cf,0x6b8e,0x6bae,0x73ae,0x73ae,0x6b6e,0x73ae,0x73af,0x6bae,0x6b6d,0x6b6e,0x6bae,0x6bce,0x63ae,0x634d,0x736e,0x738e,0x634d,0x73af,0x738e,0x6b8e,0x6b8e,0x638d,0x638d,0x634d,0x6b6e,0x636d,0x6bae,0x738e,0x6b4d,0x6b4d,0x632e,0x5b8e,0x5b6d,0x634d,0x6b4d,0x634e,0x634d,0x634d,0x6b4d,0x6b6d,0x634d,0x6b4d,0x6b4c,0x632c,0x5b0c,0x5aec,0x5aed,0x5b0d,0x5b0d,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cc,0x5aec,0x5aec,0x5aec,0x5b0b,0x52eb,0x5aeb,0x5aec,0x4acc,0x5acb,0x528b,0x52ab,0x52ab,0x5aab,0x5aec,0x52cb,0x5aab,0x52ab,0x52cb,0x4acb,0x52aa,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x528a,0x4a6a,0x4a4a,0x4269,0x4a49,0x4a69,0x4249,0x4229,0x3a09,0x4a49,0x4228,0x3a29,0x3a29,0x3a08,0x4207,0x4a08,0x4a2a,0x4228,0x41e8,0x4228,0x4208,0x39e8,0x39e8,0x3a08,0x31e8,0x39e8,0x39e7,0x29a7,0x31c7,0x39c8,0x31c7,0x39c7,0x39e7,0x3a07,0x3207,0x31c7,0x31a7,0x39a7,0x3187,0x2986,0x3186,0x31a7,0x29a7,0x29a6,0x3186,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2966,0x2986,0x2166,0x2966,0x2986,0x2165,0x2945,0x2145,0x2965,0x1966,0x2966,0x2965,0x2146,0x2145,0x2145,0x3146,0x2945,0x2125,0x2925,0x2145,0x2125,0x1925,0x1925,0x1145,0x2144,0x2124,0x3105,0x2104,0x2124,0x2125,0x1905,0x1905,0x1905,0x1904,0x1924,0x1903,0x1903,0x1904,0x2104,0x1904,0x20e5,0x18e4,0x2103,0x18e4,0x10e4,0x1104,0x1903,0x18e3,0x18c4,0x1103,0x18e3,0x10e4,0x10c4,0x18e3,0x20e3,0x1903,0x10e3,0x10c3,0x18c4,0x18a4,0x18c3,0x10c3,0x10e3,0x18c2,0x18c2,0x10e3,0x1082,0x31e6,0x9d55,0x20e5,0x10e4,0x10e3,0x2104,0x18c4,0x2964,0x4a47,0x5aaa,0x5aa9,0x5ac9,0x5a89, +0xd699,0xc75d,0x4aca,0x5aea,0x52e9,0x5ae9,0x52c9,0x4228,0x4208,0x4249,0x4249,0x4249,0x41c8,0x9c51,0xc73c,0x3a4a,0x4a28,0x4229,0x3a29,0x3a28,0x3a48,0x4229,0x4208,0x4248,0x3a28,0x3a28,0x4228,0x4208,0x3208,0x4229,0x3a08,0x4228,0x4228,0x3a29,0x3a49,0x4209,0x4248,0x4a49,0x4a48,0x3a48,0x4248,0x4249,0x4269,0x4249,0x4a69,0x4a69,0x3a49,0x426a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x52cb,0x528a,0x52ab,0x528a,0x52aa,0x52ab,0x4aac,0x4aab,0x5aab,0x62eb,0x52cb,0x5acc,0x5aec,0x5aec,0x5acc,0x5acb,0x5acb,0x5aec,0x52cb,0x5aec,0x5b0c,0x5b0c,0x632c,0x5aec,0x630c,0x52ec,0x52ec,0x5aec,0x5b2d,0x5b2d,0x5b0d,0x5b2c,0x634d,0x5b6d,0x6b4e,0x632d,0x632c,0x5b4d,0x632d,0x636d,0x636d,0x630d,0x6b0d,0x6b4e,0x5b4d,0x5b2e,0x736e,0x638d,0x636d,0x6b6e,0x6b8e,0x6b8e,0x636e,0x638e,0x6b8d,0x6bae,0x638e,0x6baf,0x6b6e,0x636d,0x6baf,0x738f,0x738e,0x73af,0x6b8e,0x8410,0x6b6e,0x73af,0x73cf,0x6b4e,0x5b4d,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x634d,0x636d,0x636e,0x5b0d,0x6b8e,0x638e,0x6b4d,0x630c,0x636d,0x6b6d,0x5b4d,0x638e,0x636e,0x634e,0x5b2d,0x632d,0x5b0d,0x532d,0x636e,0x634e,0x6b6e,0x632d,0x5b0d,0x634d,0x5b0d,0x632c,0x5b0c,0x62ec,0x630d,0x5b2d,0x5aec,0x5b2c,0x52eb,0x5b2d,0x632c,0x62ec,0x52ed,0x52ec,0x52cc,0x5aec,0x52cc,0x5aec,0x5acb,0x5acb,0x5acc,0x52cb,0x5aeb,0x52ec,0x52cb,0x52ab,0x5aec,0x52cb,0x4aaa,0x5aab,0x528a,0x528a,0x4a8b,0x4aab,0x4a8a,0x4a69,0x4a6a,0x4a6a,0x528a,0x4a8a,0x4229,0x524a,0x4249,0x4248,0x4229,0x4229,0x4249,0x3a08,0x3a09,0x4248,0x3a28,0x3a28,0x3a08,0x3a08,0x4229,0x3a09,0x4208,0x3a48,0x3a08,0x31e8,0x39e8,0x39c8,0x31c8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e7,0x29e7,0x29a7,0x39a7,0x31c7,0x21e7,0x31c7,0x3187,0x39c7,0x2986,0x31a6,0x3186,0x3186,0x29a7,0x2986,0x3186,0x3186,0x3186,0x3166,0x3186,0x2985,0x2965,0x2166,0x1966,0x1985,0x2166,0x2166,0x2966,0x2966,0x2185,0x1965,0x2166,0x2966,0x2145,0x1945,0x2125,0x1926,0x1925,0x2125,0x2125,0x1925,0x1925,0x1905,0x1125,0x0904,0x2125,0x2124,0x2104,0x1925,0x1925,0x1925,0x2105,0x1904,0x1904,0x1104,0x1105,0x1924,0x20e3,0x1904,0x18e5,0x1104,0x18e4,0x18e4,0x18e4,0x10e4,0x10e4,0x10e4,0x10e4,0x1904,0x10e3,0x18e3,0x10c4,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x10a3,0x18c2,0x10c3,0x18c4,0x18e4,0x08c3,0x18c3,0x18e3,0x08e3,0x10e4,0x08a1,0x3206,0xa556,0x2107,0x18e3,0x18c3,0x1904,0x18e4,0x2964,0x4246,0x5aa9,0x5aa8,0x5aaa,0x5a89, +0xdeba,0xc73d,0x4aea,0x5aea,0x5ac9,0x5ac9,0x52ca,0x4228,0x4a28,0x424a,0x4269,0x3a29,0x41c7,0x9c51,0xc75c,0x3a6a,0x3a28,0x3a29,0x3a29,0x3a28,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4228,0x4a08,0x3a08,0x3a28,0x3228,0x3a28,0x3a28,0x3a08,0x4229,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4229,0x3a28,0x4249,0x4249,0x4249,0x4249,0x426a,0x4269,0x4269,0x4269,0x428a,0x4a6a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52cb,0x4aab,0x4aab,0x52cb,0x5acc,0x52eb,0x52cb,0x52ab,0x5acb,0x5aec,0x52cb,0x52ac,0x52cb,0x5aeb,0x52eb,0x5b0d,0x530c,0x5aec,0x62cc,0x62ec,0x62ec,0x5b0c,0x5b0d,0x5aec,0x5b2c,0x634d,0x5b2c,0x634d,0x5b4c,0x632d,0x632d,0x634d,0x5b6e,0x632d,0x634d,0x638e,0x6b6e,0x6b4d,0x636e,0x5b4d,0x634d,0x6b6e,0x73ae,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x638e,0x6b8e,0x638e,0x6b6e,0x636e,0x636e,0x6baf,0x638d,0x73af,0x73af,0x738f,0x638e,0x638e,0x738e,0x738f,0x6b6e,0x736e,0x6b2d,0x6b8e,0x6bae,0x738e,0x634e,0x634e,0x634e,0x632d,0x634e,0x636e,0x6b6e,0x638e,0x6b6e,0x6b2c,0x6b4d,0x632d,0x634d,0x6b8e,0x634e,0x632d,0x632d,0x5b2d,0x5b2d,0x632d,0x634e,0x5b0c,0x6b6d,0x6b4d,0x5b2d,0x5b2d,0x5b4d,0x5b0c,0x5b0c,0x632d,0x630d,0x5b0d,0x5b0c,0x5b0c,0x5acc,0x52eb,0x52eb,0x630c,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x530c,0x5aec,0x5aec,0x5aec,0x52ab,0x52cb,0x52ac,0x52cc,0x52cb,0x52cb,0x4aab,0x528a,0x52cb,0x5aab,0x526a,0x528b,0x528b,0x4aab,0x428a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x428a,0x424a,0x4a49,0x4269,0x4a49,0x4a29,0x4209,0x4228,0x39e7,0x4209,0x4228,0x4229,0x3a08,0x4209,0x3a09,0x39e8,0x3208,0x3a08,0x3a08,0x39e8,0x31c7,0x39c8,0x31c8,0x39e7,0x39c7,0x31e7,0x31a6,0x39c7,0x31c7,0x29c7,0x31c7,0x3987,0x39a7,0x31a7,0x31c6,0x31a6,0x39a6,0x31a7,0x3186,0x2987,0x3166,0x3986,0x3186,0x3187,0x3186,0x2966,0x2966,0x2986,0x2165,0x2985,0x2966,0x2166,0x2987,0x1966,0x2966,0x2945,0x2145,0x2945,0x2966,0x2145,0x2145,0x2945,0x1945,0x2125,0x1925,0x1945,0x2925,0x2125,0x2145,0x2105,0x2926,0x2125,0x2124,0x2925,0x1905,0x2104,0x1904,0x1905,0x20e5,0x2105,0x1904,0x1904,0x1103,0x1904,0x1924,0x1904,0x1904,0x1103,0x1104,0x1904,0x10e4,0x18e4,0x1103,0x18e4,0x18e4,0x1904,0x18e4,0x10e3,0x10e4,0x08e3,0x10c3,0x18c4,0x10e3,0x10e3,0x10e3,0x10e4,0x18c3,0x10e3,0x10e4,0x10e3,0x10c3,0x18c3,0x08c3,0x10c2,0x10c2,0x0881,0x29c6,0xad96,0x2926,0x1903,0x18e4,0x18e4,0x1904,0x2944,0x4247,0x5aa9,0x52a9,0x52a9,0x5aa9, +0xdeda,0xbf3c,0x4aaa,0x5aea,0x5aea,0x5ae9,0x52ca,0x4227,0x4248,0x422a,0x424a,0x4229,0x41a7,0xac71,0xcf5d,0x322a,0x31e7,0x3a08,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x3a08,0x3a29,0x4228,0x4208,0x3a29,0x3a08,0x3a08,0x3228,0x3229,0x3a08,0x4229,0x4249,0x4249,0x3a4a,0x3a49,0x4228,0x4249,0x4249,0x4249,0x4a49,0x4248,0x4269,0x4269,0x4a69,0x4249,0x426a,0x428a,0x426a,0x4269,0x4269,0x428a,0x42ca,0x4aab,0x52ab,0x4aab,0x4aab,0x52ab,0x52cb,0x52cb,0x4aeb,0x52cb,0x5acb,0x5aeb,0x52cb,0x52cc,0x52cc,0x52ec,0x5aec,0x52cb,0x5aec,0x5b0c,0x52ec,0x5aec,0x5aed,0x5aec,0x5b0c,0x634c,0x5b4c,0x5b0c,0x630d,0x632c,0x632d,0x5b4d,0x5b2d,0x634d,0x5b2d,0x632d,0x5b6e,0x5b4d,0x6b6d,0x6b8d,0x6b0c,0x6b6e,0x6b6f,0x6b8e,0x636e,0x636e,0x636d,0x6b6e,0x6b8e,0x73af,0x6b6d,0x632e,0x6b6e,0x6b8f,0x6bae,0x636e,0x634d,0x6b8e,0x6b8e,0x636e,0x638e,0x6b4e,0x6b8e,0x638e,0x73af,0x6bae,0x73ae,0x7baf,0x6bae,0x6b8d,0x6bae,0x6baf,0x636d,0x6b6e,0x6b8e,0x6b2e,0x6b2e,0x636e,0x6b6e,0x634d,0x736e,0x6b6d,0x6b6e,0x6b4e,0x6b4d,0x6b6d,0x636d,0x634e,0x632d,0x632d,0x52ec,0x630d,0x632d,0x632c,0x632d,0x5b0c,0x5b0d,0x52ec,0x634d,0x5b0d,0x5b0c,0x5b2d,0x52cc,0x530c,0x632d,0x62ec,0x5aec,0x5b2c,0x5b2d,0x5b0c,0x5b0d,0x62ec,0x630d,0x5aec,0x52ec,0x52eb,0x5acc,0x5aec,0x5acb,0x5aec,0x52ab,0x52cb,0x52ac,0x5aab,0x528a,0x528a,0x52ab,0x52ab,0x528a,0x524a,0x4a6a,0x4a8a,0x528a,0x4a8b,0x4a8a,0x4a6a,0x4a69,0x4a8a,0x4a49,0x4249,0x4a49,0x5249,0x4a09,0x4249,0x4249,0x4209,0x4209,0x4229,0x4229,0x4208,0x4208,0x3a09,0x41e8,0x41e8,0x39c7,0x4228,0x3a08,0x31e8,0x31c7,0x39e8,0x31e7,0x39c7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x31c6,0x2987,0x31a7,0x31a7,0x3987,0x31c6,0x3187,0x31a6,0x31a6,0x3186,0x3186,0x39a6,0x3186,0x3167,0x3186,0x2966,0x2966,0x2986,0x3185,0x3186,0x3166,0x3146,0x2946,0x2966,0x3186,0x3166,0x2945,0x2966,0x2145,0x2945,0x2945,0x2965,0x2165,0x3146,0x2145,0x2145,0x2125,0x2145,0x1925,0x1105,0x2925,0x1924,0x2905,0x2124,0x2124,0x1905,0x1904,0x2104,0x2904,0x2905,0x18e4,0x2104,0x1903,0x1104,0x1904,0x20e4,0x1904,0x1103,0x18e4,0x18e4,0x18c4,0x2104,0x1103,0x10e4,0x10e4,0x1903,0x1902,0x18e3,0x10e3,0x18e3,0x10c3,0x10e3,0x18e3,0x10e3,0x18e3,0x10e4,0x18c4,0x18c3,0x10c3,0x10c3,0x10e3,0x18c2,0x18e3,0x10c2,0x10c2,0x10a2,0x3206,0xad96,0x2127,0x1903,0x1903,0x1904,0x1103,0x2964,0x4247,0x52a9,0x52a9,0x52a9,0x5ac9, +0xdeda,0xbf3d,0x4a89,0x5aea,0x52e9,0x5ac9,0x52c9,0x4227,0x4248,0x426a,0x4269,0x3a29,0x39c8,0xacb2,0xcf5d,0x3209,0x4207,0x3a07,0x3a28,0x4208,0x4227,0x4208,0x3a08,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x3a08,0x3a08,0x3208,0x3a29,0x3a09,0x4209,0x3a48,0x4249,0x3249,0x3228,0x4229,0x424a,0x4249,0x4249,0x4249,0x4249,0x3a49,0x3a6a,0x4269,0x4a49,0x4a49,0x4289,0x426a,0x426a,0x4a69,0x4a8a,0x4a8b,0x4a8b,0x4a8b,0x52aa,0x52cb,0x4aab,0x52aa,0x52cb,0x52cb,0x52cb,0x5acb,0x5aeb,0x52cb,0x4acc,0x52cb,0x52ec,0x5aec,0x5aec,0x5b0c,0x5aec,0x5b0c,0x5aec,0x52cc,0x5aec,0x632c,0x632d,0x5b0c,0x632d,0x632c,0x632d,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x634e,0x6b4d,0x5b4d,0x636d,0x638d,0x636d,0x632c,0x6b8e,0x5b6e,0x636e,0x6b6e,0x6b8e,0x6bae,0x634d,0x638d,0x636d,0x6b6d,0x636d,0x636d,0x73af,0x6bae,0x73af,0x6b6d,0x73af,0x73af,0x634e,0x6bae,0x73af,0x738e,0x6bae,0x6b8e,0x6b8e,0x73ce,0x73cf,0x638e,0x638e,0x6b8e,0x73af,0x738f,0x636d,0x636d,0x6b6d,0x736e,0x6b2d,0x6b4e,0x632d,0x738e,0x6b6e,0x634d,0x630d,0x632d,0x6b6e,0x634d,0x6b6e,0x6b4d,0x632d,0x634d,0x5b0d,0x632d,0x62ec,0x632d,0x630d,0x5b2d,0x5b2c,0x634d,0x5b0c,0x5b0c,0x634d,0x5b2c,0x5b0c,0x5aec,0x5aed,0x4aec,0x632d,0x62ed,0x5aec,0x532c,0x530d,0x62ed,0x530c,0x52ec,0x52ca,0x52eb,0x5aec,0x5aab,0x52eb,0x52cb,0x52cb,0x52ab,0x5acb,0x528b,0x526b,0x4a8b,0x52ab,0x4a8b,0x52cb,0x4a6a,0x52ab,0x4a8a,0x428a,0x428a,0x4a69,0x4269,0x4269,0x4a69,0x4a49,0x4a49,0x4249,0x4269,0x4249,0x3a29,0x3a29,0x4249,0x4249,0x3a29,0x3a08,0x3a08,0x4208,0x3a08,0x41e8,0x31e8,0x31e8,0x31c7,0x3a09,0x3207,0x3a08,0x39e8,0x39e7,0x39e7,0x39c8,0x39c8,0x39c7,0x39c7,0x39e7,0x3987,0x31a7,0x31a7,0x31a7,0x31c7,0x3186,0x31a7,0x31a6,0x31c7,0x3187,0x2987,0x2987,0x3186,0x2166,0x2946,0x3166,0x2986,0x2966,0x2966,0x2165,0x2946,0x2166,0x2145,0x2946,0x2946,0x2165,0x2145,0x2145,0x2145,0x2145,0x2925,0x2146,0x1945,0x1945,0x2125,0x1925,0x1925,0x1125,0x1925,0x2125,0x2105,0x2905,0x2125,0x2925,0x1905,0x2104,0x1924,0x18e4,0x2105,0x10e4,0x18e3,0x20e4,0x1105,0x18e5,0x10e4,0x0924,0x1103,0x18e3,0x18e3,0x18c4,0x18e4,0x1904,0x1104,0x10e4,0x18c3,0x10e3,0x18e4,0x20c3,0x20c3,0x18e3,0x1103,0x08e3,0x10e3,0x18e4,0x10c3,0x18c4,0x18c3,0x18e3,0x10c2,0x18e3,0x10c4,0x10c3,0x10e3,0x10a3,0x1082,0x29a5,0xa575,0x3147,0x18c3,0x10e3,0x18e4,0x18e3,0x2944,0x4206,0x52a9,0x5aa9,0x5a8a,0x5aa9, +0xdeda,0xc73c,0x52a9,0x62eb,0x5ac9,0x5aaa,0x5ac9,0x39e7,0x4228,0x422a,0x4269,0x4249,0x41a7,0xb4d3,0xc75c,0x29e8,0x4228,0x3a28,0x3a08,0x3a07,0x4207,0x4229,0x3a08,0x4228,0x3a28,0x4208,0x3a08,0x3a08,0x3a28,0x3a28,0x3a08,0x3a28,0x3a28,0x3a08,0x3a08,0x3a28,0x4228,0x4249,0x4208,0x4229,0x4249,0x3a69,0x4269,0x4249,0x4229,0x4249,0x4a49,0x4a49,0x4a49,0x4a6a,0x4a6a,0x4a8a,0x528a,0x528a,0x4a8a,0x4a8a,0x528a,0x52aa,0x52aa,0x52ca,0x4aab,0x4a8b,0x52ab,0x52cb,0x52ab,0x5acb,0x52ab,0x5acc,0x52eb,0x5acb,0x5acb,0x52eb,0x5b0c,0x5aec,0x5b0b,0x530c,0x52ec,0x530c,0x5b0c,0x632c,0x5aec,0x6b6d,0x6b2c,0x638e,0x636d,0x5b0d,0x5b2d,0x5b2d,0x6b2e,0x6b2d,0x5b2d,0x634d,0x636d,0x634d,0x6b8d,0x636e,0x5b4d,0x5b4e,0x6b8d,0x6bae,0x738e,0x73cf,0x6b6d,0x6b6e,0x6bae,0x6b6e,0x6bae,0x6b8e,0x636d,0x6b8e,0x6b8d,0x73ae,0x6b6e,0x634d,0x6b8e,0x738f,0x6b4d,0x6b8d,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x63ae,0x636e,0x6b8f,0x6bae,0x636e,0x6b6d,0x6b8e,0x6b6e,0x6b6e,0x6b6d,0x634d,0x634d,0x6b8e,0x6b6d,0x6b6e,0x6b6e,0x634d,0x634c,0x6b4d,0x634d,0x6b4d,0x634d,0x634d,0x634d,0x5aec,0x5b2d,0x632d,0x5b0c,0x5b2d,0x5b4d,0x632d,0x632d,0x630c,0x5b2d,0x5b2c,0x632c,0x632d,0x52cc,0x5b2d,0x52ec,0x52cc,0x5acc,0x52cc,0x5aac,0x5aec,0x62ec,0x5acc,0x52cb,0x5aec,0x52eb,0x52ab,0x52cb,0x52cb,0x52ab,0x52ab,0x52ab,0x526a,0x52ab,0x4a8b,0x4aab,0x52aa,0x52aa,0x4a6a,0x4a8a,0x426a,0x4249,0x4249,0x4a49,0x4a69,0x4269,0x4a29,0x3a09,0x4229,0x3a29,0x4229,0x4208,0x4228,0x4248,0x4248,0x3249,0x3a28,0x3a28,0x3a08,0x4208,0x39c7,0x39e8,0x41e8,0x39e7,0x39e7,0x4208,0x39c8,0x31c8,0x31c7,0x31c6,0x31a7,0x39a7,0x39c7,0x31a7,0x39a7,0x39e7,0x3987,0x31a6,0x31a7,0x31a6,0x3186,0x39a7,0x3186,0x31a7,0x3186,0x2186,0x2986,0x3165,0x2986,0x3166,0x2985,0x2166,0x2966,0x2165,0x2145,0x2946,0x2166,0x1966,0x1966,0x2965,0x2165,0x2125,0x1965,0x1945,0x2166,0x2146,0x2945,0x1925,0x2125,0x2125,0x1925,0x2125,0x1925,0x2125,0x2104,0x2105,0x2125,0x2104,0x2124,0x1924,0x2104,0x1905,0x1104,0x1905,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e4,0x1904,0x1103,0x10e4,0x18e4,0x1104,0x1904,0x20c3,0x18e3,0x18e3,0x18e4,0x18c3,0x18c4,0x18c4,0x18c4,0x18c3,0x18e3,0x0103,0x10e4,0x10c3,0x18c2,0x18c3,0x10c4,0x18c3,0x08e3,0x08c3,0x08e4,0x18c4,0x18a3,0x10a3,0x10a3,0x2185,0x9d34,0x3147,0x20e4,0x10e4,0x2124,0x1903,0x2964,0x4206,0x4aa9,0x52a9,0x5a8a,0x5aa9, +0xdeda,0xbf1b,0x52a8,0x62ea,0x5aca,0x5aca,0x5aa9,0x3208,0x3a08,0x4a4a,0x4289,0x4249,0x4167,0xbd13,0xbf3c,0x3209,0x4228,0x3a09,0x3a08,0x3a07,0x4227,0x4209,0x3a08,0x39e8,0x39e8,0x39e8,0x4208,0x4208,0x3a08,0x3a09,0x3a28,0x3a27,0x3a28,0x3a28,0x3a28,0x3a48,0x4229,0x4249,0x4228,0x4a49,0x4a48,0x3a29,0x4249,0x4249,0x4269,0x4269,0x4a6a,0x424a,0x4a69,0x4a8a,0x526a,0x4a6a,0x4a8a,0x4aaa,0x4aaa,0x4a6a,0x4a8a,0x528b,0x4aaa,0x4aaa,0x4aca,0x528a,0x5aab,0x5acb,0x528b,0x52cc,0x52cc,0x5acb,0x52cb,0x52ab,0x52ab,0x52eb,0x52cc,0x52cc,0x5aec,0x52eb,0x52eb,0x52ec,0x52ec,0x5b0c,0x5b0c,0x634d,0x632d,0x5b4d,0x5b0c,0x5aec,0x5b0d,0x630d,0x6b2c,0x6b4d,0x5b4d,0x632d,0x5b2d,0x6b4d,0x634e,0x5b4d,0x634d,0x6b6f,0x6b8d,0x638d,0x638e,0x636e,0x6b6d,0x6b6e,0x6b6e,0x6b6e,0x638e,0x73ae,0x6b6e,0x6b6e,0x636e,0x6b8e,0x6b6d,0x634d,0x634e,0x734e,0x6b6e,0x73ae,0x6b8e,0x6b8e,0x6baf,0x6baf,0x6b6e,0x6bae,0x6bae,0x636d,0x52ec,0x6b8e,0x73ae,0x6b8e,0x6b8f,0x6b6e,0x6b8e,0x636e,0x6b4e,0x638e,0x634e,0x636e,0x6b8e,0x6b6e,0x636d,0x634d,0x6b4e,0x638e,0x636e,0x634d,0x634d,0x5b0d,0x5b2d,0x632d,0x5b2d,0x5b2c,0x632d,0x6b0d,0x6b4d,0x5b0d,0x530c,0x5b0c,0x5b2c,0x532d,0x5aec,0x5b0c,0x52eb,0x52eb,0x632d,0x5b0c,0x5aec,0x5aec,0x5aab,0x5aec,0x4aaa,0x5acc,0x5aec,0x52ab,0x5acc,0x5aac,0x5acc,0x52cb,0x528a,0x528a,0x52ca,0x4a6a,0x526a,0x528a,0x52ab,0x4a8a,0x4a8a,0x4a6a,0x4269,0x4249,0x4a49,0x4a69,0x4249,0x4229,0x4229,0x4229,0x3229,0x4229,0x4249,0x4229,0x4229,0x4208,0x4227,0x3a07,0x3a28,0x3a08,0x3a08,0x3208,0x3208,0x3a09,0x39e8,0x39e8,0x3208,0x39e8,0x39e8,0x31c7,0x39c7,0x31a7,0x31a7,0x31a6,0x29e7,0x31c7,0x39c7,0x39a7,0x29e6,0x31c7,0x3186,0x3186,0x31a6,0x2986,0x3186,0x3166,0x29a6,0x2987,0x2966,0x31a6,0x2986,0x2966,0x2966,0x2966,0x2166,0x2966,0x2965,0x2165,0x1145,0x1945,0x2145,0x2165,0x2186,0x1986,0x2165,0x2164,0x2965,0x2966,0x2125,0x2125,0x2145,0x1925,0x2945,0x2145,0x2125,0x2125,0x2144,0x1925,0x1924,0x1945,0x1144,0x2925,0x2125,0x2125,0x2125,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x1905,0x18e4,0x18e4,0x18e4,0x10e4,0x1104,0x10e4,0x18e4,0x18e4,0x1103,0x10e4,0x10e4,0x18c3,0x18e4,0x18e3,0x10e3,0x0903,0x08a4,0x08c2,0x18c3,0x18c3,0x18c4,0x10a3,0x08e3,0x08c3,0x10c3,0x10c3,0x18c3,0x10c3,0x08a3,0x2185,0x9d54,0x2927,0x28e4,0x18e4,0x18e4,0x2104,0x2945,0x4227,0x4aa9,0x52c9,0x52a9,0x5ac9, +0xdeb9,0xb6db,0x4aa9,0x5ac9,0x5aea,0x5aea,0x52c9,0x3a48,0x31c7,0x4269,0x4269,0x4249,0x3967,0xbd34,0xbf1c,0x3208,0x3a29,0x3a08,0x3a08,0x29e8,0x3a08,0x3a28,0x3228,0x3a08,0x39e8,0x39e8,0x4208,0x3a28,0x3a08,0x3a08,0x3a08,0x4208,0x4228,0x3a08,0x4228,0x3a28,0x4248,0x4229,0x4229,0x4229,0x4249,0x3a09,0x4229,0x4269,0x426a,0x3a49,0x426a,0x422a,0x4a69,0x4289,0x4269,0x4a89,0x428a,0x426a,0x4a6a,0x4a6a,0x4a8a,0x528b,0x4aaa,0x4aaa,0x52cb,0x52ab,0x52ab,0x52ca,0x52cb,0x52cb,0x52cb,0x5acc,0x530c,0x52cc,0x52cb,0x52cb,0x5acc,0x5aec,0x630c,0x5aec,0x5b2c,0x5b0c,0x52eb,0x52ec,0x5b2c,0x630c,0x5b4d,0x5b2c,0x630c,0x5b2d,0x5b0c,0x5b0d,0x632d,0x6b2d,0x5b4d,0x636e,0x5b2d,0x6b6e,0x5b2d,0x6b6e,0x634d,0x5b8d,0x6b6d,0x634d,0x5b4d,0x6b6e,0x738e,0x6b4e,0x634d,0x5b6e,0x634e,0x6b8e,0x638e,0x6b6e,0x6b6e,0x6b6e,0x73af,0x6b8f,0x638e,0x636d,0x6b6d,0x6bae,0x6b6e,0x73ae,0x6b8e,0x6b6d,0x6b6e,0x6bcf,0x6bae,0x6bae,0x638e,0x6b6e,0x6b6e,0x6bae,0x73ae,0x738e,0x6b8e,0x636d,0x738e,0x6b6e,0x6b4e,0x6b6e,0x6b8d,0x6b8e,0x736e,0x6b6e,0x6b4e,0x6b6e,0x6b6f,0x5b2c,0x6b6d,0x630c,0x5b0d,0x5b4d,0x52ec,0x5b2c,0x5b2c,0x5aed,0x630c,0x5aed,0x5b2d,0x632d,0x52ec,0x532c,0x5aec,0x52ec,0x5aec,0x52eb,0x62eb,0x5aec,0x5acc,0x5aec,0x5aab,0x630c,0x4aab,0x5acc,0x52ec,0x52ab,0x5acb,0x52ab,0x4aab,0x52ab,0x52ab,0x52aa,0x52ab,0x528b,0x4a6a,0x526a,0x4a6a,0x428a,0x4a4a,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4269,0x424a,0x4229,0x4a29,0x4249,0x4249,0x422a,0x3a09,0x4228,0x4a47,0x3a28,0x39e8,0x4208,0x3a07,0x3a08,0x4209,0x39e8,0x39e8,0x39e8,0x41e8,0x41e7,0x31e7,0x31e8,0x39c7,0x39c7,0x41c7,0x39c7,0x31c7,0x31a7,0x31c7,0x31c7,0x3987,0x31a7,0x29c7,0x39c7,0x29a7,0x2986,0x3187,0x31a6,0x31a6,0x3186,0x2986,0x2986,0x2966,0x3166,0x3166,0x3166,0x2966,0x2966,0x2966,0x2966,0x2966,0x3186,0x2146,0x2946,0x2946,0x2145,0x2945,0x2145,0x2146,0x2145,0x2965,0x2125,0x2926,0x2945,0x2125,0x1945,0x2145,0x2125,0x1925,0x1904,0x2125,0x1904,0x1904,0x1924,0x1924,0x1104,0x1905,0x2104,0x2124,0x1904,0x20e5,0x18e4,0x1904,0x1904,0x2104,0x18e3,0x1904,0x10e4,0x20e5,0x18e4,0x18e4,0x1903,0x18e4,0x18e3,0x10e3,0x18e3,0x1104,0x10e3,0x10e4,0x18c3,0x10c3,0x18c3,0x18c3,0x10e3,0x10e3,0x10c3,0x10c3,0x10c4,0x10c3,0x18e3,0x18e3,0x10c2,0x18c3,0x10c3,0x00c2,0x1924,0x9d74,0x3168,0x18e3,0x2104,0x18e4,0x1924,0x1944,0x3a26,0x52a9,0x52c9,0x5aa9,0x62a9, +0xdeda,0xb6fb,0x4289,0x5aea,0x5aca,0x5ac9,0x5289,0x3a07,0x3a48,0x4269,0x3a48,0x4229,0x3147,0xb534,0xaedb,0x3208,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x3208,0x3a28,0x3a28,0x3a08,0x3a08,0x3a08,0x3a08,0x3a28,0x3a08,0x4208,0x3a08,0x4208,0x3a28,0x4229,0x4229,0x4228,0x4228,0x4249,0x3a4a,0x3a49,0x3a2a,0x4249,0x4a4a,0x4a49,0x4a69,0x4a8a,0x4269,0x4289,0x4269,0x4269,0x528a,0x528a,0x528a,0x528a,0x526b,0x52aa,0x528b,0x52ab,0x52aa,0x52aa,0x52ab,0x52ab,0x4acb,0x52eb,0x52ab,0x52cb,0x5aac,0x5aec,0x52cb,0x5aeb,0x52eb,0x5aec,0x5aec,0x5aec,0x5b0d,0x5b0d,0x5aec,0x5aed,0x630d,0x530c,0x5b2c,0x634d,0x634d,0x634c,0x5b2d,0x5b0c,0x5b2c,0x6b6d,0x6b2e,0x634d,0x5b2d,0x6b6e,0x632d,0x5b0c,0x6b8e,0x6b4e,0x636d,0x6b6d,0x6b4d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b6c,0x6b8e,0x6baf,0x6b8e,0x738e,0x73ae,0x638e,0x636d,0x6b8d,0x6bae,0x63af,0x73af,0x6b8f,0x6b8e,0x7b8e,0x73ae,0x636e,0x634d,0x738f,0x73cf,0x736e,0x6b6e,0x6b8e,0x6baf,0x73ce,0x6bae,0x6b8e,0x738e,0x6b6e,0x738e,0x6b8e,0x6b8e,0x734e,0x6b4d,0x6b6e,0x6b6d,0x632d,0x634d,0x634e,0x6b4e,0x634d,0x5b4d,0x636e,0x630c,0x632d,0x5b4d,0x5b4d,0x5b0d,0x632d,0x5b0d,0x632d,0x632c,0x5b0c,0x5b2d,0x5aec,0x52cb,0x5b0c,0x52ed,0x52ec,0x52eb,0x5b0c,0x530c,0x52eb,0x5aeb,0x52ab,0x52cb,0x52cc,0x5acc,0x52cc,0x52cb,0x52cb,0x52eb,0x4acb,0x52ab,0x4aab,0x528b,0x5a8b,0x528b,0x4aab,0x4a8b,0x4a8b,0x4269,0x4a6a,0x4249,0x4a4a,0x4269,0x4a49,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4a49,0x4228,0x41e8,0x3a08,0x3a08,0x4229,0x41e8,0x41e8,0x3a28,0x3a08,0x39e8,0x39e9,0x3208,0x39e8,0x39e8,0x41e8,0x39e8,0x31e7,0x39c7,0x31c7,0x39e7,0x39c7,0x31c7,0x29c7,0x31a7,0x29a7,0x31c8,0x31a7,0x31a7,0x31a7,0x2987,0x2986,0x39a7,0x3186,0x29c6,0x31a6,0x3186,0x3186,0x2166,0x2966,0x2946,0x2966,0x2986,0x2986,0x2966,0x2165,0x2186,0x2166,0x2966,0x2946,0x2945,0x2945,0x2945,0x2126,0x2146,0x2145,0x2946,0x2125,0x2945,0x2145,0x2125,0x2125,0x2925,0x2145,0x1925,0x1905,0x2125,0x2905,0x1925,0x1124,0x2104,0x1124,0x2104,0x1904,0x1905,0x1104,0x2104,0x18e5,0x2104,0x2104,0x18e4,0x1104,0x18c4,0x10e4,0x1904,0x10e4,0x1904,0x18e3,0x18e3,0x18e4,0x18e4,0x10e4,0x10e4,0x10e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18a3,0x10c3,0x10c3,0x10e3,0x10c2,0x10c3,0x18c3,0x18e3,0x18c3,0x10e2,0x18c3,0x10c2,0x10c3,0x1924,0xa574,0x3188,0x18e3,0x20e3,0x1904,0x1904,0x1924,0x4227,0x5288,0x52a9,0x5aa9,0x52c9, +0xdefa,0xaebb,0x4289,0x5aea,0x5aca,0x5aea,0x5aa9,0x4207,0x3207,0x4249,0x4229,0x4229,0x3968,0xb514,0xaedb,0x29e8,0x4228,0x3a08,0x4209,0x4228,0x3a08,0x3a08,0x3a28,0x3227,0x3228,0x3208,0x3a08,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4a08,0x4249,0x4249,0x4229,0x4249,0x3a28,0x3a29,0x3a49,0x4a49,0x426a,0x4269,0x4a49,0x524a,0x4a49,0x4269,0x4a69,0x426a,0x426a,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x528a,0x528a,0x4aca,0x528b,0x52ab,0x52cb,0x52cb,0x52ab,0x528a,0x52cb,0x52eb,0x52eb,0x5aec,0x5acc,0x52ab,0x52ab,0x5aed,0x52ec,0x5aec,0x52cb,0x4aab,0x52ec,0x52ec,0x5b0c,0x5b0c,0x630d,0x5b2d,0x5b4d,0x5b2d,0x5b4d,0x5b0d,0x6b4e,0x5b2d,0x532c,0x5b4c,0x630c,0x632d,0x634e,0x6b8e,0x636d,0x634d,0x6b4e,0x736e,0x636e,0x6bae,0x6b6e,0x6b6d,0x636d,0x636d,0x6baf,0x6b2c,0x738e,0x736e,0x6b8e,0x6bae,0x6b6d,0x6b8d,0x6b8e,0x738e,0x73ae,0x6baf,0x73af,0x736e,0x6b8e,0x6baf,0x636e,0x6bae,0x6b8d,0x73ae,0x73f0,0x638f,0x73ce,0x73cf,0x6b8f,0x73cf,0x73ae,0x738e,0x6b4e,0x632e,0x638d,0x6baf,0x6b8e,0x5b4d,0x6b6e,0x6b6d,0x738e,0x6b8f,0x6b2d,0x5b2c,0x634d,0x6b4d,0x5b2d,0x632e,0x5b0d,0x630d,0x634d,0x632d,0x5aed,0x5b0d,0x5b0d,0x5b0d,0x5b2c,0x5b0c,0x532c,0x5b0c,0x630c,0x5b2c,0x5b0c,0x5aec,0x4acb,0x52ec,0x5b0c,0x5b0c,0x5b0c,0x530d,0x52ac,0x52cc,0x52cb,0x52eb,0x52cb,0x52cb,0x4aab,0x52cb,0x5acb,0x52aa,0x4a8b,0x52aa,0x5aab,0x528b,0x428a,0x4a8b,0x528b,0x528b,0x4a8b,0x4a4a,0x526a,0x4229,0x4229,0x424a,0x4249,0x4249,0x3a08,0x3a09,0x4229,0x41e9,0x4228,0x4209,0x3a49,0x39e8,0x41e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e8,0x39e8,0x3208,0x4208,0x41e8,0x3a07,0x39e8,0x39e8,0x39c7,0x31e8,0x31e7,0x31a7,0x31c7,0x29a7,0x29a7,0x31a6,0x31a6,0x3187,0x2987,0x29a7,0x29a6,0x2986,0x2185,0x2986,0x2985,0x2986,0x2966,0x3167,0x2966,0x2966,0x3186,0x2986,0x2186,0x2965,0x3165,0x2166,0x2965,0x2945,0x2945,0x2945,0x2165,0x2146,0x2165,0x2945,0x2125,0x1946,0x1166,0x2125,0x2925,0x2945,0x2925,0x1925,0x1925,0x2125,0x2105,0x2925,0x2104,0x2125,0x2125,0x1905,0x1904,0x1904,0x1905,0x1904,0x1904,0x2124,0x1904,0x1105,0x18e4,0x18e4,0x18e4,0x1103,0x1903,0x1905,0x18e4,0x1924,0x20e3,0x18e3,0x18e4,0x18c3,0x10e3,0x10e3,0x10a3,0x0903,0x08e4,0x18e3,0x18c3,0x10c4,0x08c3,0x10e3,0x10c3,0x18a3,0x10c4,0x10a3,0x18c3,0x18c3,0x18c3,0x10c2,0x18c3,0x1904,0x9d54,0x3189,0x10a3,0x20e3,0x20e4,0x18e4,0x2145,0x4207,0x4aa8,0x52a9,0x5aaa,0x5aca, +0xdeda,0xa69a,0x4a89,0x5b0a,0x5ae9,0x52c8,0x52a9,0x4208,0x3a07,0x4269,0x4229,0x4249,0x3947,0xbd75,0xaedb,0x21c8,0x3a28,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x3a28,0x4208,0x4248,0x4249,0x3a49,0x4228,0x4249,0x4a69,0x4229,0x4269,0x4289,0x426a,0x4228,0x4249,0x4a49,0x4a49,0x426a,0x4289,0x4269,0x4a6a,0x4a8a,0x4a8b,0x52ab,0x52ab,0x4a8a,0x4aab,0x4aaa,0x52cb,0x52cb,0x52cb,0x4aaa,0x52ab,0x4aab,0x5acc,0x52eb,0x5aec,0x5b0c,0x5b0c,0x52ec,0x52ec,0x52cd,0x5aec,0x630c,0x5b0c,0x5b0d,0x532d,0x634d,0x6b2d,0x634d,0x5b2c,0x6b6d,0x6b6e,0x634e,0x532d,0x5b2d,0x6b4e,0x632e,0x530d,0x5b2d,0x5b2d,0x6b4d,0x636d,0x5b4d,0x5b2d,0x6b6e,0x6b8e,0x6b6e,0x6b6d,0x73cf,0x6baf,0x73af,0x73ae,0x6b8e,0x6b8f,0x73af,0x73af,0x73af,0x634d,0x6b8e,0x636d,0x73ae,0x73af,0x73cf,0x6bae,0x73cf,0x63ae,0x738e,0x638e,0x63ae,0x638e,0x6bae,0x63cf,0x73cf,0x73af,0x6bae,0x7baf,0x73af,0x6b6f,0x6b6e,0x632d,0x6b6f,0x736f,0x6b8e,0x6baf,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b2e,0x5b2d,0x636d,0x634d,0x634d,0x6b2d,0x632d,0x5b2d,0x5b4e,0x5b2c,0x5aec,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x5acc,0x5b0c,0x532c,0x52ec,0x630c,0x5aec,0x5b0c,0x5aec,0x52eb,0x5aec,0x632d,0x52cb,0x52cb,0x52cb,0x5acb,0x5acb,0x5aeb,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52cb,0x4aab,0x4aab,0x4aab,0x428a,0x4aab,0x528b,0x528b,0x4a8a,0x4a4a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x4a49,0x4229,0x4249,0x4249,0x4a28,0x39e9,0x4209,0x3a28,0x3a29,0x3a09,0x3a08,0x39e8,0x39e8,0x4209,0x3a08,0x39e8,0x39e8,0x3208,0x41e8,0x41e9,0x41e8,0x39e7,0x39c7,0x31c7,0x31e8,0x31c8,0x31c8,0x39c7,0x31e7,0x2986,0x31a7,0x31e7,0x31a7,0x3987,0x31a7,0x29c6,0x31a6,0x3186,0x2986,0x3166,0x3186,0x3166,0x2986,0x2966,0x2946,0x3146,0x3166,0x2965,0x3165,0x2965,0x2185,0x2965,0x2966,0x2945,0x3145,0x2945,0x2945,0x2165,0x2965,0x2166,0x2125,0x1945,0x2945,0x2945,0x2145,0x2146,0x2125,0x2125,0x2105,0x2105,0x2125,0x2105,0x2125,0x2125,0x1905,0x2125,0x1924,0x2125,0x2105,0x28e5,0x2104,0x1925,0x1125,0x1944,0x2104,0x2105,0x2123,0x1104,0x2105,0x20e4,0x20e4,0x10e4,0x0904,0x1104,0x10c4,0x08e4,0x1105,0x18e4,0x1104,0x1103,0x18e4,0x18e3,0x10c2,0x10c3,0x08c3,0x18c3,0x08e3,0x10e3,0x20c4,0x18e3,0x20e3,0x18e3,0x10c3,0x10c3,0x18e3,0xa553,0x39c9,0x18c3,0x20e3,0x1904,0x1924,0x2925,0x4a07,0x52a9,0x5aa9,0x5aaa,0x5aaa, +0xdefa,0xa659,0x4a88,0x52ea,0x5ac9,0x5ae9,0x52a9,0x3a07,0x3a28,0x3a6a,0x3a49,0x4249,0x4187,0xbd75,0xaefc,0x19c8,0x3208,0x3208,0x4208,0x3a08,0x3a28,0x3a09,0x3a08,0x41e8,0x4208,0x3a08,0x4208,0x3a08,0x3a28,0x3a29,0x3228,0x3a08,0x4229,0x3a48,0x4249,0x4a4a,0x4229,0x4a49,0x3a4a,0x39e9,0x39c8,0x3a29,0x424a,0x4249,0x4249,0x4269,0x3a4a,0x4249,0x4a4a,0x4a49,0x52aa,0x526a,0x528a,0x4a4a,0x4a8a,0x4249,0x52ab,0x5aab,0x5aab,0x52ab,0x52ab,0x52cb,0x52cb,0x52cb,0x52aa,0x52ab,0x4aab,0x4aab,0x52ac,0x4acb,0x4aab,0x52cb,0x52cb,0x52cb,0x532c,0x52ec,0x5aec,0x5acb,0x5b2c,0x5b0d,0x52ab,0x632c,0x634d,0x5b0d,0x530d,0x632e,0x634e,0x5b4e,0x634e,0x636d,0x634d,0x6b4e,0x5b4e,0x5b6e,0x5b4d,0x636e,0x634d,0x6b4e,0x6b6e,0x6b8f,0x636d,0x73ae,0x73ae,0x6b6e,0x6b8e,0x6b6d,0x7bcf,0x73cf,0x7c10,0x6b8e,0x6bae,0x7bcf,0x73cf,0x73cf,0x73cf,0x6bae,0x6baf,0x638e,0x73cf,0x73cf,0x636e,0x73ae,0x73ae,0x6b6d,0x6b8e,0x638d,0x634d,0x6b6e,0x638e,0x634d,0x634d,0x736e,0x636e,0x6baf,0x73af,0x6bae,0x6b8e,0x6b4d,0x632d,0x6b8f,0x636e,0x5b4d,0x634e,0x6b2e,0x634d,0x6b4d,0x632d,0x634d,0x632d,0x5b2d,0x632d,0x632c,0x634d,0x636d,0x634d,0x5b2d,0x630d,0x632c,0x5b2d,0x5aec,0x630d,0x5acc,0x52cb,0x52ec,0x52eb,0x5aeb,0x4aab,0x4acb,0x4a8b,0x52ab,0x5acb,0x52cb,0x52cb,0x52ec,0x52cb,0x4acb,0x4acb,0x52cb,0x5acb,0x52cc,0x4a8b,0x4a8a,0x426a,0x426a,0x4a8a,0x428a,0x4a4a,0x4a49,0x4a8a,0x4229,0x4229,0x4229,0x4209,0x3a28,0x4228,0x4228,0x3a28,0x3a08,0x39e7,0x39e7,0x4a28,0x4a29,0x3a08,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x41c8,0x41c7,0x39a7,0x3187,0x31a7,0x31c7,0x2986,0x31a7,0x29a7,0x2987,0x39c7,0x2987,0x2987,0x29a6,0x2986,0x3186,0x31a7,0x29a7,0x2966,0x2146,0x2166,0x3166,0x3187,0x3187,0x2985,0x3186,0x2986,0x2185,0x2986,0x2146,0x1925,0x2125,0x1904,0x1904,0x1904,0x2145,0x2125,0x1104,0x1924,0x10e5,0x18e4,0x20e4,0x1904,0x2124,0x18e4,0x18e4,0x18e3,0x20c4,0x28e4,0x18e4,0x1904,0x2145,0x2125,0x1905,0x1925,0x2124,0x2125,0x2145,0x2105,0x10e4,0x10c3,0x0882,0x10a3,0x0883,0x1083,0x10a3,0x10c4,0x18a2,0x10c2,0x18a3,0x08c3,0x08c3,0x08a3,0x10c3,0x08a3,0x10a3,0x08a2,0x08a3,0x0883,0x08a3,0x08c4,0x1904,0x20e4,0x18c4,0x10e3,0x18c3,0x10e3,0x10c3,0x10a3,0x10c3,0x10c3,0x10e3,0x10e2,0x10c3,0x18e3,0x10c3,0x18e3,0x18c3,0x10c3,0x18e3,0xa595,0x41e9,0x18c3,0x18c3,0x18c4,0x18e4,0x2904,0x4a26,0x52a9,0x5289,0x52a9,0x5aca, +0xe6fb,0x9e39,0x4aa9,0x5aea,0x5ac9,0x5ac9,0x4ac9,0x3a07,0x39c7,0x426a,0x4249,0x4229,0x3988,0xc575,0xaefc,0x21c8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a28,0x3a28,0x3a08,0x3a29,0x4228,0x41e8,0x39e8,0x3208,0x3208,0x3a28,0x3a29,0x4209,0x4209,0x3a28,0x39e7,0x6baf,0x7451,0x7c51,0x73f0,0x8411,0x8452,0x7c71,0x8472,0x7c51,0x7c51,0x7c72,0x7452,0x7431,0x7c31,0x7431,0x73d0,0x8411,0x7c11,0x7431,0x6c31,0x536e,0x424a,0x4aab,0x52ab,0x4a8b,0x52cb,0x5aeb,0x4a69,0x4aca,0x7410,0x8492,0x7471,0x7431,0x7411,0x6bb0,0x638f,0x6baf,0x6bcf,0x73f0,0x7410,0x73ef,0x73d0,0x6bef,0x6bd0,0x7410,0x7c11,0x7c31,0x7410,0x638f,0x532d,0x6b0c,0x6b4d,0x636d,0x638d,0x6b6d,0x6b6e,0x5aec,0x6b8e,0x8c92,0x8493,0x7c71,0x8472,0x8492,0x8492,0x7c52,0x8472,0x8471,0x8492,0x7c51,0x7471,0x7c72,0x8431,0x7c31,0x7c11,0x7430,0x6c10,0x7411,0x73f1,0x634e,0x73cf,0x73ae,0x736e,0x6b8e,0x6b8e,0x6b6e,0x630b,0x8430,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x84b3,0x7c52,0x8452,0x7c52,0x8472,0x8c92,0x7c51,0x7431,0x7c51,0x7c31,0x7c71,0x7c72,0x7431,0x7c30,0x8452,0x73f0,0x5b0d,0x6b8e,0x634e,0x6b6e,0x636d,0x5b2d,0x636e,0x5acb,0x632d,0x6bae,0x7c31,0x6bcf,0x73af,0x6b8f,0x6bcf,0x7c10,0x7c10,0x6bcf,0x6baf,0x6b8f,0x6baf,0x73f0,0x6b8f,0x8431,0x73f0,0x7bd0,0x73f0,0x7c10,0x634f,0x428b,0x4acb,0x5acb,0x52cb,0x52cb,0x52eb,0x52cb,0x4a69,0x52cc,0x73f0,0x7c70,0x7c10,0x7410,0x7431,0x6bf0,0x6c10,0x7411,0x6c10,0x73f0,0x6bef,0x7410,0x7410,0x6c10,0x73f0,0x6bae,0x6b6e,0x6b6e,0x6b8f,0x632d,0x526b,0x41c8,0x4208,0x4229,0x39e8,0x3a08,0x39e8,0x2986,0x4a49,0x73cf,0x8472,0x8472,0x7c51,0x8c73,0x8492,0x8472,0x7c31,0x7c31,0x8c51,0x8431,0x7451,0x7431,0x73d0,0x73f0,0x6bd0,0x73f0,0x7c10,0x6bd0,0x636e,0x3a2a,0x1105,0x3186,0x2186,0x2186,0x2186,0x2187,0x10c4,0x4acb,0x7451,0x8cf3,0x94f3,0x94f4,0x8cb3,0x8cd3,0x8cb3,0x9514,0xadb7,0xa576,0xa555,0xa575,0x9d34,0x8cd3,0x9d55,0xa575,0x9d34,0x9514,0x94f3,0x8cd4,0x63af,0x08c4,0x1925,0x1925,0x1925,0x2125,0x1925,0x10e4,0x4aaa,0x8cd3,0x9d76,0x9d34,0xa575,0xa5b6,0xad96,0xadd6,0xa576,0xa556,0x9d55,0x9d54,0xa575,0xadb5,0x9db5,0x9d75,0x9555,0x9596,0xa5b6,0x9d55,0x9d35,0x8452,0x18e5,0x18a4,0x20e4,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18e4,0x18e3,0x18e3,0x20c2,0x18a3,0x18e2,0x18e3,0x10c2,0x10c3,0x10c3,0x1903,0xa595,0x4a0a,0x18c3,0x18c3,0x1903,0x18e4,0x2124,0x4a07,0x5288,0x52a9,0x5ac8,0x5aca, +0xe71b,0x9e39,0x4289,0x5aea,0x5aea,0x5ac9,0x4aa8,0x4208,0x4208,0x4a4a,0x426a,0x4229,0x39a8,0xc5b6,0xaedb,0x21c8,0x4208,0x4208,0x3a08,0x3a08,0x3a07,0x3a08,0x3a28,0x41e8,0x3a28,0x3a08,0x3a09,0x3a09,0x4209,0x4209,0x3a29,0x4229,0x4249,0x4a29,0xde9b,0xbe38,0xad96,0xad97,0xad96,0xad96,0xa596,0xadd7,0xb5d7,0xadb7,0xb5d7,0xc638,0xbe38,0xb5d7,0xb5d7,0xbdf7,0xbdf7,0xbe18,0xbe18,0xb5f7,0xbdf7,0xd71c,0x7cd3,0x3aaa,0x4aaa,0x52cb,0x4aab,0x4a89,0xa534,0xef7d,0xc659,0xbe59,0xc679,0xc679,0xc679,0xc679,0xc67a,0xc699,0xc659,0xc659,0xc679,0xce99,0xce9a,0xce79,0xc679,0xc679,0xce79,0xce7a,0xc679,0xd6fb,0xc6fb,0x6bae,0x632c,0x5b4d,0x6b8e,0x6b6d,0x62ec,0xbd97,0xe75d,0xce7a,0xce9a,0xce9a,0xce9a,0xce9a,0xce9a,0xce9a,0xd6ba,0xd6bb,0xce9a,0xc67a,0xce9a,0xd6ba,0xd6ba,0xceba,0xd6ba,0xceda,0xd6fb,0xcedb,0xdf3c,0xc6da,0x7431,0x6b6d,0x6b8e,0x6b8f,0x6bae,0x6b8e,0xce59,0xe73c,0xce9a,0xce79,0xce79,0xce79,0xce7a,0xce7a,0xd69a,0xceba,0xd6ba,0xd6ba,0xce99,0xce9a,0xce99,0xce79,0xce79,0xce9a,0xceba,0xd6ba,0xc679,0xd6db,0xe73d,0x63d0,0x5b2d,0x6b4d,0x6b6e,0x636e,0x5b0c,0xbdd7,0xe75d,0xce9a,0xce9a,0xceba,0xd6ba,0xceba,0xd6ba,0xd6ba,0xce9a,0xceba,0xc67a,0xc69a,0xce9a,0xd69a,0xc659,0xce79,0xce9a,0xc679,0xce79,0xce9a,0xd6fb,0xdf5d,0x6b90,0x52ac,0x52cc,0x526b,0x52aa,0x4a6a,0x94f3,0xef7e,0xbe18,0xbe18,0xb5f7,0xbdf7,0xb5d7,0xbe18,0xbdf8,0xb5f7,0xbdf7,0xbe18,0xb5f7,0xb5f6,0xbdf7,0xb5d7,0xb5d7,0xb5f6,0xadd6,0xb5b6,0xb5b5,0xb5b7,0xd6dc,0x6bb0,0x3a08,0x3a09,0x3a08,0x3a28,0x39c7,0x8410,0xb5f8,0x7431,0x7c10,0x8451,0x8472,0x8c72,0x9492,0x9471,0x8451,0x9cb2,0x9cd3,0x9cd3,0x94b2,0x94d2,0x94b3,0x94b2,0x94b3,0x8452,0x8451,0x8c72,0x8451,0xadb6,0x94f4,0x2926,0x3187,0x29a6,0x2986,0x2985,0x632c,0xc638,0x7410,0x73f0,0x7bcf,0x7c10,0x7bef,0x8410,0x8410,0x6bae,0x6baf,0x6b8e,0x6b6e,0x6b8e,0x6b8e,0x636e,0x6b6e,0x736e,0x7bae,0x7bae,0x73af,0x636e,0x8410,0x9cd4,0x10c5,0x1945,0x1925,0x2125,0x10e4,0x42aa,0x9c73,0x5b2c,0x52cb,0x5b4d,0x6b6e,0x5aeb,0x5aeb,0x5acb,0x5b0b,0x5b2d,0x5b2d,0x532c,0x530c,0x5b4d,0x4acb,0x5b2d,0x5b2d,0x4acc,0x5aec,0x5aec,0x52cc,0x4a69,0x9514,0x18c5,0x1103,0x18e3,0x10e3,0x10c3,0x18e4,0x18e3,0x10c3,0x10c3,0x18c3,0x10c2,0x18c3,0x08c3,0x18e2,0x10c3,0x20c3,0x18a3,0x18c2,0x1102,0xa574,0x4a0a,0x18c3,0x18e4,0x1904,0x18e4,0x1924,0x4a06,0x5288,0x52a9,0x5aa9,0x62c9, +0xe71a,0x9e39,0x3a68,0x5aea,0x5ae9,0x5aca,0x52a9,0x3a08,0x3a08,0x4a2a,0x4269,0x3a28,0x41c8,0xc5d6,0x9e9a,0x2186,0x4209,0x4209,0x3208,0x3a28,0x4229,0x3a08,0x3a28,0x4209,0x3a29,0x4208,0x4208,0x3a09,0x4229,0x39e8,0x4249,0x424a,0x4209,0xb535,0x8cb3,0xceba,0xe7be,0xe79e,0xefbe,0xe7bf,0xe7df,0xefff,0xefde,0xdf9d,0xe7be,0xefdf,0xe79e,0xe79e,0xe7be,0xe7be,0xefbe,0xefdf,0xefde,0xf7df,0xe79e,0xa575,0xd77d,0x5b6e,0x52cb,0x52ab,0x52aa,0x6aaa,0xe77d,0x8cf2,0xdf3c,0xe79d,0xefbe,0xef9e,0xe77e,0xe77d,0xef7e,0xe79e,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xef7d,0xef7d,0xef7e,0xef9e,0xe77d,0xbe19,0xc638,0xbe7a,0x52ec,0x5b4d,0x634d,0x5b4e,0x93f0,0xef9e,0xb596,0xe77e,0xefbe,0xefbe,0xe79e,0xe79e,0xe7be,0xe79e,0xefbe,0xef9e,0xe77d,0xdf7d,0xe79e,0xef9e,0xe75d,0xe75d,0xdf5d,0xe75d,0xe77d,0xdf7d,0xc6ba,0xc659,0xc69b,0x5aed,0x6bae,0x6b8e,0x6bae,0xad55,0xef5d,0xc639,0xef7d,0xe75d,0xef7d,0xe77d,0xef7e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf77e,0xef7e,0xef7e,0xef7d,0xef5d,0xef7d,0xf7be,0xf7be,0xe75d,0xce9a,0xc5d8,0xd71c,0x532d,0x636d,0x634c,0x6b6d,0x8c72,0xef9e,0xbe58,0xe73d,0xdf3c,0xdf3c,0xe75d,0xe75d,0xdf5d,0xe73d,0xe77d,0xe75d,0xdf5d,0xdf5d,0xdf5c,0xdf5d,0xdf5d,0xdf3d,0xd71c,0xd6fb,0xd71b,0xd71c,0xbe79,0xad75,0xd6fd,0x3a4a,0x5aec,0x52ec,0x52cb,0x5b0b,0xe75d,0x9d14,0xd71c,0xdf5d,0xdf5d,0xd75c,0xd75c,0xdf5c,0xd6db,0xdf3c,0xe73d,0xdf3c,0xe77d,0xdf7c,0xe75d,0xdf5d,0xe75d,0xe73c,0xe79d,0xdf5d,0xdf1c,0xcebb,0x8411,0xef9e,0x422a,0x4a49,0x4208,0x4229,0x31a6,0xdf3b,0x73ef,0xe77d,0xe79e,0xe79d,0xe79d,0xe7bd,0xdf7d,0xdf5d,0xe77d,0xdf5d,0xdf5d,0xd75c,0xd71c,0xd73c,0xd73c,0xd75c,0xcf5c,0xd73c,0xd73c,0xd73c,0xc6bb,0x8c93,0xc679,0x424b,0x3986,0x2967,0x2966,0x18e4,0xb5f6,0x5aaa,0xcedb,0xc6ba,0xc6ba,0xceba,0xce9a,0xc679,0xceba,0xce9a,0xc6ba,0xcebb,0xc6ba,0xcedb,0xd71b,0xcefa,0xc6ba,0xce9a,0xc67a,0xc69a,0xc69a,0xbe9a,0xb596,0x94f4,0x52ad,0x2104,0x2925,0x2145,0x08a2,0x94f2,0x526a,0xb638,0xb5f7,0xadd7,0xb5d7,0xadd7,0xadb7,0xa5b6,0xadd7,0xb5f7,0xb617,0xa596,0x9d55,0xa575,0xa575,0xa555,0xad95,0xa555,0xa555,0x9d75,0xa5b6,0xa556,0x638d,0x7390,0x18c3,0x1903,0x10e3,0x08c3,0x10c4,0x10c3,0x10e4,0x08c3,0x10c3,0x10e3,0x08e3,0x10e3,0x10c3,0x18c3,0x20c3,0x18c3,0x18c3,0x1102,0x9d73,0x4a2a,0x20c3,0x20e4,0x18e4,0x20e4,0x28e4,0x4207,0x5288,0x5aa9,0x5aa9,0x5aca, +0xe73b,0x9e59,0x4289,0x5aea,0x5ae9,0x52ca,0x52c9,0x4227,0x39e7,0x424a,0x4269,0x3a49,0x31a7,0xcdd7,0x9e79,0x29c8,0x39e8,0x39e8,0x3a08,0x3a09,0x3a08,0x4208,0x3a08,0x4208,0x4229,0x4228,0x4228,0x4228,0x4228,0x4228,0x4249,0x4249,0x39a7,0xce78,0x9472,0xe75d,0xd6fc,0xd71c,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe77d,0xbe17,0xe75c,0xe75d,0xdf5d,0xe75c,0xdf3c,0xdf5c,0xdf5c,0xdf5d,0xe77c,0xd71c,0xd71b,0x6bd0,0x52aa,0x52ca,0x4aaa,0x9c52,0xc659,0xef7d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xef9e,0xef9d,0xf7ff,0xf7be,0xe77c,0xffff,0xf79e,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0xa554,0xd75d,0x52cd,0x634e,0x6b6e,0x634e,0xb575,0xbe39,0xffff,0xefde,0xf7bf,0xf7be,0xf7df,0xf7bf,0xf7df,0xf7ff,0xf7de,0xf7de,0xffff,0xffff,0xffff,0xf7de,0xf7df,0xf7df,0xf7de,0xf7df,0xf7de,0xf7de,0xffff,0xa555,0xd71c,0x52ed,0x6b8d,0x73af,0x6b8e,0xce38,0xc639,0xf7df,0xf7de,0xf7be,0xf7de,0xf7df,0xf7be,0xf7be,0xf7be,0xf7ff,0xf7be,0xef7d,0xef5d,0xf7be,0xf7be,0xf7be,0xf7be,0xf7de,0xf7de,0xf7be,0xf7df,0xf7df,0xb597,0xdf5d,0x4acc,0x636e,0x634d,0x630c,0xad54,0xb5f7,0xef9d,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xefbe,0xffff,0xf79d,0xdf1a,0xef7c,0xffff,0xf7be,0xef9d,0xef9e,0xef9d,0xefbe,0xe77d,0xe77d,0xf7df,0xa556,0xe77d,0x424b,0x5aec,0x4acc,0x4a8b,0x7bae,0xbe38,0xce79,0xe77d,0xe77d,0xe75d,0xe73c,0xe73d,0xdf3c,0xe77d,0xc69a,0xd6d9,0xe75d,0xe75c,0xbe17,0xceb9,0xdf1c,0xdf5c,0xdf3c,0xdf1c,0xdf1c,0xd6fc,0xd71c,0xc619,0xce7a,0x5aed,0x4a69,0x4229,0x4229,0x3186,0xbe38,0x94b3,0xdefb,0xd6db,0xceda,0xd6db,0xceba,0xceda,0xceba,0xceba,0xce9a,0xc699,0xceda,0xb617,0xc6b9,0xceda,0xceba,0xc699,0xc679,0xc659,0xc679,0xc699,0xc639,0x7c31,0x7390,0x2966,0x3186,0x3166,0x18e3,0xadb6,0x630d,0xc679,0xbe18,0xbe59,0xbe38,0xbe38,0xbe18,0xbe38,0xc659,0x6b8e,0xbe17,0xbe18,0x9cd3,0x638d,0xadf6,0xb5f7,0xb5d7,0xb5f7,0xb5d7,0xadb6,0xadd7,0xc639,0x6bd0,0x7bd1,0x20e4,0x2125,0x2145,0x0860,0xa533,0x424a,0xadb6,0xa575,0xa575,0xad95,0x9d55,0xa575,0x9d55,0xa575,0x8c72,0x3a08,0xa575,0xa554,0x9d74,0x9d54,0x9d34,0x9d54,0x9d34,0x9d14,0x9d14,0x9cf4,0xa575,0x4a8b,0x7c11,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10e3,0x18c4,0x18c3,0x18c3,0x10c3,0x18a4,0x10a3,0x10c3,0x10c2,0x10e3,0x9d74,0x4a2b,0x18a3,0x20e3,0x1904,0x1924,0x28e3,0x4207,0x52a8,0x52a9,0x5aa9,0x52ca, +0xe71b,0x9659,0x4289,0x5ae9,0x5aea,0x5ae9,0x52c9,0x4208,0x39e7,0x4249,0x4a49,0x4229,0x3988,0xcdf7,0x9e99,0x29e8,0x3a09,0x3a08,0x39e7,0x3a28,0x39e8,0x3a08,0x3a08,0x41e8,0x4207,0x4249,0x4209,0x4a29,0x4249,0x3a48,0x4229,0x4249,0x39a8,0xc678,0x9c72,0xe75c,0xdf3c,0xdf1c,0xdf3c,0xdf5c,0xdf5c,0xdf3c,0xdf3d,0xe77d,0x95b7,0x3187,0xe6da,0xe75c,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xcf1c,0xcefa,0x63d0,0x52ab,0x52cc,0x4aca,0x9c72,0xc639,0xf79d,0xef9e,0xef9e,0xef9e,0xefbe,0xefbe,0xefbd,0xef9d,0xefbe,0xa596,0x5aec,0x632c,0xb575,0xf7de,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0x9d55,0xd75d,0x52cc,0x636e,0x634e,0x6b6e,0xc5d6,0xadf8,0xffdf,0xefbe,0xf7bf,0xf7be,0xf7df,0xf7df,0xf7df,0xefbe,0x4a8b,0x736f,0x73af,0x7bf0,0xd679,0xffde,0xefbe,0xf7bf,0xf7de,0xf7be,0xf7de,0xf7be,0xffff,0x9d14,0xd6db,0x5b0e,0x73af,0x6bcf,0x6b6e,0xd679,0xbe18,0xf7de,0xf7be,0xf7de,0xf7de,0xf7be,0xf7be,0xf7be,0xf7be,0xf7ff,0x630d,0x8c31,0x7c0f,0xd6ba,0xf7df,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xf7de,0xad76,0xdf5d,0x52cc,0x6b8e,0x6b4e,0x62eb,0xb595,0xad96,0xf79e,0xef9d,0xef9e,0xef9e,0xefbe,0xef9d,0xf7be,0xf7be,0xad75,0x6b4d,0x73d0,0x7baf,0x8c50,0xe71b,0xef9e,0xef7e,0xef9e,0xef9d,0xe77d,0xe77d,0xef7e,0xad96,0xdf5d,0x4a6b,0x52eb,0x52ab,0x4a6b,0x736d,0xb5f7,0xd6da,0xe75c,0xe77c,0xe77d,0xe75c,0xe75c,0xdf5c,0xe79d,0x8c72,0xb5b4,0xe77d,0xefbe,0x39c8,0xc617,0xdf1c,0xdf3c,0xe73c,0xdf3c,0xdf3c,0xd71c,0xd6fb,0xc659,0xad96,0x52ed,0x4229,0x3a29,0x3a29,0x41e6,0xc618,0x94b3,0xd6db,0xd6ba,0xd6db,0xd6da,0xd6da,0xd6db,0xd6da,0xce9a,0xce99,0xceda,0xd6db,0x4249,0xe77c,0xce99,0xc699,0xce79,0xc679,0xc699,0xc678,0xc679,0xc659,0x73cf,0x8412,0x2966,0x29a6,0x29a6,0x1903,0xadb5,0x634d,0xbe38,0xbe38,0xbe38,0xb638,0xbe59,0xc618,0xbe18,0xc67a,0x10a3,0xceb9,0xce19,0x2905,0x94f2,0xbe38,0xb5f7,0xb5f7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb618,0x6b8e,0x8c52,0x18a4,0x2145,0x3145,0x0841,0x9d13,0x3a8b,0xadb6,0xa596,0xa5b5,0xa595,0x9d55,0xa595,0xa575,0xa575,0x9c93,0x1924,0xa5b5,0xa535,0xa555,0x9d54,0x9d54,0x9d14,0xa534,0x9d14,0x9d34,0x9d14,0xa576,0x424b,0x8c52,0x10c3,0x20e4,0x18c3,0x20c3,0x10c4,0x18e3,0x18c3,0x20e2,0x18c3,0x10c3,0x18e3,0x10c3,0x08c3,0x08c3,0x18a3,0x10a3,0x08c2,0x10e2,0xa594,0x524b,0x1083,0x18e3,0x1103,0x1904,0x2104,0x4207,0x5aa8,0x52a9,0x52c9,0x5aca, +0xe71b,0x9638,0x4288,0x52ea,0x52e9,0x52e9,0x52a9,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4188,0xce17,0x9e9a,0x31c8,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x3228,0x3a28,0x4229,0x3a28,0x4228,0x4229,0x3a08,0x4269,0x4228,0x4229,0x4229,0x39c7,0xc658,0x9452,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf3c,0xdf3c,0xdf3c,0xdfff,0x63cf,0x9555,0xb555,0xef9d,0xe75d,0xe75d,0xe75d,0xe75c,0xe77d,0xdf5d,0xe75d,0xcf1c,0xd71a,0x5baf,0x4a8b,0x52ac,0x4a8a,0x9410,0xc639,0xf7bd,0xefbe,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef9d,0xefdf,0x7bf0,0xffbe,0xefff,0xbe38,0xf7ff,0xefbe,0xef9e,0xef9e,0xef9e,0xf7be,0xef9e,0xf7df,0xa576,0xd71c,0x52ab,0x6b4e,0x6b4d,0x6b4d,0xc5d7,0xb659,0xffdf,0xf7be,0xefde,0xf7de,0xefde,0xf7df,0xf7df,0xefbf,0x630d,0xffff,0xffff,0xefdf,0x8473,0xe6fb,0xf7ff,0xf7de,0xf7df,0xefbe,0xf7de,0xf7be,0xffff,0xa576,0xceda,0x530d,0x6b6e,0x6bcf,0x736e,0xde79,0xbe38,0xf7de,0xf7df,0xf7be,0xf7de,0xefbe,0xf7be,0xf7be,0xf7de,0xffff,0x6bd0,0xffff,0xffff,0xf7df,0xefbe,0xefbe,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xf7df,0xa555,0xdf3c,0x5b0d,0x638f,0x632d,0x632c,0xbd95,0xb5f7,0xef7d,0xef9d,0xef9e,0xef9d,0xef9d,0xef9d,0xf7df,0xce7a,0x8cb2,0xffff,0xf7de,0xefff,0xbe7a,0xc699,0xef9e,0xef9e,0xef9d,0xef7d,0xef9d,0xef7e,0xe77e,0xadb6,0xdf5d,0x528c,0x52cc,0x52ac,0x4aab,0x734d,0xb5f7,0xd6ba,0xe75c,0xe77c,0xe75c,0xe73c,0xe75c,0xdf5c,0xe77e,0x8493,0xc637,0xf7be,0xe7bd,0x3a2a,0xc617,0xdefb,0xd73c,0xd73c,0xdf3c,0xdf1b,0xdf3c,0xd6fb,0xbe38,0xad95,0x52cd,0x3a48,0x3a49,0x3a49,0x39c6,0xbdf7,0x9cf3,0xceda,0xd6da,0xd6fb,0xd6db,0xceda,0xceba,0xce9a,0xceba,0xc6ba,0xceba,0xd6fc,0x4a69,0xdf5c,0xce99,0xceba,0xce9a,0xc679,0xceba,0xc679,0xc699,0xbe58,0x7c10,0x7bf1,0x2945,0x29a7,0x29a7,0x18c3,0xad94,0x5b2c,0xb657,0xbe38,0xb618,0xbe59,0xbe38,0xc638,0xb617,0xc69a,0x18e4,0xdf3c,0x39a7,0x7c2f,0xbe78,0xbdd6,0xbe18,0xb5f7,0xadd7,0xb5d7,0xb5d6,0xb5b6,0xb5d7,0x6bcf,0x8452,0x18e4,0x2125,0x1946,0x0062,0x8cb2,0x428a,0xadb6,0xa575,0xa595,0xa595,0x9d75,0xa576,0xa595,0xa576,0xa494,0x1903,0xa595,0xa555,0xa555,0x9d34,0xa554,0xa535,0xa535,0x9d14,0x9d14,0x9d14,0xad76,0x4a6b,0x8c52,0x10a3,0x20e4,0x18e4,0x10e3,0x10e4,0x18c3,0x18e4,0x10c3,0x18e3,0x08e4,0x18c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x10e2,0x10e3,0x9513,0x526c,0x1082,0x2103,0x2103,0x1904,0x2103,0x4226,0x5a89,0x5ac9,0x52c9,0x5ae9, +0xe71b,0x8df7,0x4aa9,0x5aea,0x52ea,0x52ca,0x52c9,0x4a07,0x4208,0x4249,0x4249,0x4a29,0x4187,0xd678,0x9659,0x29e8,0x3a08,0x39e8,0x4228,0x3a29,0x3a28,0x3a08,0x4209,0x4229,0x3a28,0x4228,0x4229,0x4229,0x4229,0x4a29,0x4249,0x4249,0x3187,0xc679,0x8c72,0xe73c,0xdf1c,0xdf5c,0xdf3c,0xdf3c,0xe73c,0xdf1b,0xd73b,0xa618,0x83cf,0xdfdf,0x734f,0xef9d,0xdf7d,0xe75d,0xe75d,0xe77d,0xe75d,0xe77d,0xef9d,0xd71c,0xcefb,0x63d0,0x4acb,0x5acc,0x52ab,0x9c51,0xc639,0xf7be,0xefbe,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xef9e,0xefdf,0x8493,0xacf4,0xe6fb,0xffff,0xef7d,0xef9d,0xef9e,0xef9e,0xef9e,0xf7be,0xf7be,0xf7df,0xa535,0xcf1c,0x4aac,0x634e,0x6b4d,0x634d,0xc5d7,0xbe59,0xffff,0xefbe,0xefdf,0xefbe,0xefbe,0xefbe,0xf7de,0xefbe,0x6acc,0xffff,0xf79e,0xefde,0xcefc,0x9cb2,0xffff,0xf7be,0xefde,0xf7be,0xf7df,0xf7be,0xf7ff,0x9cf4,0xcedb,0x5b2e,0x6baf,0x73cf,0x736e,0xde9a,0xb5f7,0xf7be,0xf7df,0xf7be,0xf7de,0xf7de,0xf7be,0xf7de,0xf7df,0xffff,0x7bf1,0xef7d,0xef7d,0xf79e,0xf7be,0xf7be,0xf7df,0xf7df,0xf7be,0xf7de,0xf7be,0xf7ff,0xad75,0xdf3c,0x5b0d,0x636e,0x632d,0x632c,0xb595,0xb5d6,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf7ff,0x6b6e,0xf79e,0xef7e,0xffdf,0xffff,0xffff,0xffff,0xef9d,0xef9d,0xe77d,0xef9d,0xef9e,0xe77d,0xef9e,0xb5d7,0xdf5d,0x4a8b,0x630d,0x52cc,0x4acc,0x736d,0xadd7,0xd6fb,0xe73c,0xe75c,0xe75c,0xdf3c,0xe75c,0xe75c,0xe77e,0x94d4,0x9471,0xc5f7,0xbdd7,0x4208,0xc658,0xd6fb,0xdf3b,0xdf3c,0xdf3c,0xd71b,0xdf1b,0xd6fb,0xbe39,0xad95,0x52cd,0x4249,0x4249,0x3a49,0x39c6,0xbe17,0x9cd2,0xceda,0xd6da,0xd6fb,0xd6db,0xceba,0xd6db,0xceba,0xce9a,0xce9a,0xced9,0xd6dc,0x4a49,0xe75c,0xc699,0xce99,0xc699,0xc699,0xce99,0xc678,0xbe59,0xbe39,0x73d0,0x7c12,0x2105,0x31a7,0x3186,0x10a2,0xb5d5,0x52ec,0xbe58,0xbe58,0xbe59,0xc658,0xbe38,0xc658,0xb618,0xd69b,0x18e6,0x7b8f,0x4a6a,0xb638,0xb5d7,0xb5f7,0xb5f7,0xadd6,0xb5d6,0xb5d7,0xadd6,0xadb6,0xbdd8,0x6baf,0x8c53,0x1924,0x2945,0x1926,0x10a2,0x84b2,0x3a49,0xa5b6,0xad96,0xad96,0xad96,0xa576,0xa555,0xa575,0x9d55,0x9cb4,0x18e3,0x9d54,0x9d34,0x9d35,0xa554,0xa554,0xa575,0x9d34,0x9d14,0x9d14,0x9514,0xadb6,0x4a8b,0x9473,0x18a3,0x18e4,0x18e3,0x10e3,0x10e4,0x10e3,0x10e3,0x10c4,0x18a3,0x10c3,0x10e3,0x18c3,0x08a3,0x08e3,0x08e3,0x18e3,0x18c3,0x10c2,0x9d53,0x4a4c,0x1062,0x1103,0x1903,0x2103,0x1903,0x3a26,0x52a8,0x52c9,0x52c9,0x5aca, +0xdf1b,0x95d7,0x52a9,0x5aea,0x5aca,0x52ca,0x4ae9,0x3a07,0x39e8,0x3a6a,0x3a49,0x4229,0x4988,0xde58,0x9e59,0x29e7,0x3a28,0x4229,0x4208,0x3a28,0x3a08,0x4208,0x3a49,0x3a28,0x3a29,0x4228,0x4228,0x3a28,0x3228,0x4229,0x4a6a,0x4a4a,0x41a8,0xc699,0x9452,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdfbe,0x5b2d,0xa4b3,0xbe3a,0x524b,0xe6db,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe79d,0xcf1c,0xdf3c,0x63f1,0x52cb,0x52aa,0x52ab,0x9c92,0xbe39,0xf7be,0xef9e,0xe79d,0xef9e,0xef9e,0xef9e,0xef9e,0xe79e,0xef9d,0xe7be,0x9d55,0x630d,0xb535,0xffff,0xefbe,0xef9e,0xefbe,0xef9e,0xf7be,0xefbe,0xf7df,0x9d34,0xcf1c,0x42ab,0x634d,0x5b4d,0x630c,0xcdf7,0xbe59,0xffdf,0xf7be,0xf7df,0xefbe,0xefbe,0xf7df,0xf7df,0xefdf,0x6aec,0xffff,0xefbe,0xf79e,0xdf5d,0x83ef,0xffff,0xf7df,0xf7de,0xf7be,0xf7df,0xf7be,0xf7ff,0x9cf4,0xd73c,0x530d,0x73cf,0x6b6e,0x6b4d,0xde9a,0xb5d7,0xf7be,0xf7be,0xf7be,0xf7de,0xf7de,0xf7be,0xf7de,0xf7de,0xffff,0x6b8f,0x7c30,0x6b6e,0xd6b9,0xf7de,0xf7de,0xf7df,0xf7de,0xf7be,0xf7be,0xef9e,0xf7df,0xa535,0xe75c,0x632d,0x6b4e,0x636e,0x62ec,0xb575,0x9d34,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xefdf,0x52cc,0xf7be,0xe79e,0x9d34,0x9cd3,0x9cb3,0x9cd2,0xef5d,0xe77d,0xef9e,0xef9d,0xefbe,0xef9e,0xef9e,0xb5b7,0xdf3c,0x3a6b,0x52eb,0x52eb,0x4aab,0x734d,0xb5f7,0xd6da,0xe73c,0xe77c,0xdf3c,0xdf5c,0xe73c,0xe73c,0xefbe,0x94f5,0x52ab,0x738e,0x73af,0x2966,0xce78,0xd6fb,0xdf1c,0xdf1b,0xdf1c,0xdf1c,0xdf1b,0xd71b,0xb619,0xb5d6,0x52cc,0x3a28,0x4209,0x4228,0x39a6,0xbe17,0x8cb2,0xd6db,0xd6da,0xd6db,0xd6ba,0xc6da,0xd6fa,0xd6ba,0xceba,0xceba,0xceba,0xd6fc,0x528a,0xe79d,0xc679,0xce9a,0xc679,0xc699,0xce9a,0xc679,0xbe79,0xc659,0x7c10,0x8412,0x2145,0x31a7,0x29a6,0x1061,0xc637,0x52eb,0xbe58,0xbe58,0xbe38,0xbe37,0xc639,0xb618,0xbe17,0xd69b,0x18e5,0x5b0d,0x4a49,0xc618,0xb5d7,0xb5f6,0xb5d7,0xb5f6,0xbdf7,0xb5d7,0xb5d7,0xadb6,0xbdf8,0x634d,0x8c73,0x1905,0x2945,0x2145,0x1062,0x8cb1,0x3a4a,0xadd6,0xad76,0xadb6,0xa596,0xad96,0xad95,0x9d75,0xad96,0x94f5,0x10e3,0x9d54,0x9d55,0x9d35,0x9d35,0xa514,0x9d34,0xa534,0x9d34,0x9533,0x9514,0xad96,0x4a8b,0x8c72,0x10c3,0x18e4,0x18e4,0x10e3,0x10c4,0x10c3,0x10e3,0x10c3,0x18c3,0x08c3,0x10c3,0x10e3,0x08a3,0x10c3,0x10a2,0x18e3,0x18e4,0x10c2,0x9d74,0x4a6c,0x10a3,0x08e3,0x1104,0x2104,0x1944,0x3a26,0x4a88,0x52c9,0x5aa9,0x62ca, +0xdf1b,0x8db7,0x4a69,0x5aea,0x5aca,0x52c9,0x52ca,0x3a08,0x4208,0x4249,0x4269,0x4249,0x49a7,0xe6ba,0x9638,0x31c7,0x3a28,0x3a29,0x3a08,0x3a08,0x3a28,0x31e8,0x3a08,0x4208,0x4228,0x4208,0x4208,0x4249,0x3a49,0x3a49,0x4269,0x4229,0x3988,0xce9a,0x9452,0xe75c,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xe77d,0xcf7d,0x528b,0xc679,0xb618,0x7cb4,0x9431,0xef9d,0xdf5c,0xe77d,0xe75d,0xe75d,0xe75d,0xe77d,0xcefb,0xd6fb,0x538f,0x52cb,0x52cb,0x52ab,0x9cb3,0xb5f8,0xf79d,0xef9e,0xe79e,0xef9e,0xef9e,0xef9e,0xef9d,0xef9e,0xe77d,0xf7de,0xffff,0xefff,0x7bf0,0xffff,0xef9e,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0xa555,0xcf1c,0x428b,0x634d,0x5b4d,0x62ed,0xc5d7,0xbe59,0xffff,0xf79e,0xf7df,0xf7de,0xf7de,0xf7be,0xf7de,0xefdf,0x6b0c,0xffff,0xf79e,0xf7df,0xcedb,0xa534,0xffff,0xf7be,0xf7be,0xefdf,0xf7bf,0xf7be,0xffff,0x9d15,0xdf3d,0x4aec,0x73af,0x73af,0x632c,0xdeba,0xb596,0xefbe,0xf7be,0xefde,0xf7be,0xf7de,0xf7de,0xf7df,0xf7de,0xffff,0x7bf1,0xfffe,0xf7ff,0xf7de,0xf7de,0xf7de,0xf7de,0xf7be,0xefbe,0xf7be,0xf7be,0xefbe,0xa535,0xe73d,0x530d,0x6b4e,0x6b4e,0x5b0c,0xb575,0xa535,0xf7be,0xefde,0xefbe,0xefbe,0xefbd,0xef9e,0xf7df,0x73f1,0xe6db,0xf7de,0xcf1c,0xd71c,0xcebb,0x5aeb,0xefbe,0xef7d,0xef9e,0xe77d,0xef9d,0xef9e,0xef9d,0xb5d7,0xdf3c,0x428c,0x5aec,0x528b,0x4a8b,0x7b8d,0xb5f7,0xd6db,0xe75c,0xef9d,0xe75d,0xe77d,0xe75c,0xe73c,0xefbe,0x94b4,0xb594,0xf7df,0xf7df,0x52ab,0xbe17,0xd71b,0xd71c,0xd6fb,0xd71c,0xd71c,0xdf1b,0xd6fb,0xb618,0xb5d6,0x52ed,0x4249,0x4229,0x4a29,0x41c6,0xbdf7,0x8c92,0xdefb,0xdefa,0xdefb,0xd6ba,0xceda,0xceba,0xceba,0xcedb,0xceba,0xceba,0xd6dc,0x4a28,0xe79c,0xc699,0xc69a,0xc69a,0xc699,0xc679,0xce9a,0xc679,0xbe59,0x7c51,0x7bf1,0x31a6,0x3987,0x31a7,0x1042,0xb5d5,0x52eb,0xbe78,0xbe38,0xbe58,0xb638,0xb618,0xbdf8,0xbe17,0xcebb,0x10c4,0xc6fa,0x3a4a,0x738d,0xce99,0xb5d7,0xb5d7,0xb5f7,0xb5f7,0xb5d7,0xb5f7,0xad96,0xb5f7,0x630d,0x8c52,0x18e5,0x2145,0x2124,0x0861,0x9491,0x3a4a,0xb5d6,0xb5d6,0xad95,0xad96,0xa596,0xa576,0xa576,0xa575,0x9d15,0x10c2,0xa595,0xadb6,0x9d55,0x9d35,0x9d14,0x9d14,0x9d14,0x9514,0x9d34,0x8d14,0xadf8,0x4aab,0x8cb4,0x10c4,0x1904,0x18e4,0x10c4,0x18a4,0x10c3,0x10c3,0x00c3,0x10c3,0x10e3,0x18c3,0x10a3,0x10c2,0x18c4,0x10a3,0x10c3,0x18e3,0x10e2,0x9d54,0x528c,0x1043,0x1103,0x1904,0x1123,0x2145,0x31e7,0x4a88,0x52c9,0x52a9,0x5aaa, +0xe73b,0x85b6,0x4a69,0x5aea,0x52ea,0x5aca,0x4aa9,0x3a07,0x4207,0x4a69,0x4249,0x4208,0x4186,0xdeba,0x8dd7,0x31c7,0x4208,0x4229,0x3a09,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x4248,0x4228,0x4229,0x4229,0x4a2a,0x4249,0x3a2a,0x31a7,0xce99,0x9473,0xdf3c,0xd71c,0xdf3c,0xdf1c,0xdf3c,0xe77d,0xe79e,0x6c52,0xbd96,0xf7be,0xe77d,0xcf9d,0x630d,0xef7d,0xdf3c,0xe77d,0xe75d,0xe75d,0xe75d,0xef9d,0xcefc,0xcf1c,0x5baf,0x5acb,0x52cb,0x526a,0xa4b3,0xb5f8,0xf7be,0xef9e,0xef9e,0xe7be,0xe79d,0xef7e,0xef9d,0xef9e,0xefdf,0x7bf0,0xf73c,0xdf3d,0x634d,0xffff,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7be,0xefdf,0xa575,0xcf1c,0x42ac,0x632d,0x632c,0x62ed,0xce18,0xbe59,0xffff,0xefbe,0xf7be,0xf7de,0xf7be,0xf7de,0xf7de,0xefdf,0x630d,0xf7be,0xf79e,0xe6fc,0x7bef,0xf79d,0xf7be,0xf7be,0xf7be,0xf7de,0xf7be,0xefbe,0xf7ff,0xa536,0xdf3c,0x52ec,0x73ae,0x738e,0x632c,0xdeda,0xb5b6,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7de,0xf7de,0xf7de,0xffff,0x738f,0xffff,0xf7be,0xef9d,0xefbe,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7bf,0xf7de,0xad76,0xdf3d,0x5b0d,0x6b4e,0x634e,0x5b2d,0xbd96,0xa535,0xf7be,0xefbe,0xefde,0xefbe,0xef9e,0xef9e,0xf7be,0xdf3d,0x7bcf,0xe73c,0xffde,0xf7be,0x94d4,0xa555,0xffff,0xe77e,0xef9e,0xef9e,0xef7d,0xef7d,0xe77d,0xadd7,0xdf5c,0x52ac,0x5aac,0x52ab,0x52cb,0x7b8d,0xb5f7,0xd6da,0xe75c,0xe77d,0xe75d,0xdf5c,0xe73c,0xe75c,0xe79e,0x94d4,0xad54,0xe79d,0xef9e,0x4a8b,0xb616,0xd6fb,0xd71b,0xd6fb,0xd71b,0xd71b,0xdf1b,0xdf1b,0xc659,0xb5b6,0x52ed,0x3a48,0x3a29,0x4229,0x39a6,0xbe59,0x94b2,0xdefb,0xd6da,0xd6db,0xceba,0xceba,0xceba,0xce99,0xdf1c,0x7c31,0xc658,0xbdd8,0x632c,0xd73b,0xc69a,0xce99,0xc699,0xc679,0xc679,0xc69a,0xc699,0xbe18,0x7c50,0x7bf1,0x3166,0x3186,0x3187,0x0862,0xb5f7,0x52ec,0xc658,0xbe38,0xbe59,0xc639,0xbe18,0xbe18,0xbe18,0xc659,0x10a3,0xbe57,0xbe5a,0x2146,0x8c70,0xadf7,0xbdf7,0xb5d8,0xb5d7,0xadd7,0xadf7,0xadb7,0xb5f7,0x5b0d,0x9493,0x18a4,0x2125,0x2144,0x1081,0x8cb1,0x3a2a,0xadd6,0xadb6,0xad76,0xad56,0xa575,0xa575,0xa576,0x9d54,0xa515,0x0842,0x5aaa,0x5a8a,0x94d2,0xa534,0x9d14,0x9d35,0x9d15,0x9d15,0x9514,0x9534,0xadb6,0x4aec,0x9495,0x1084,0x1904,0x20e4,0x10c4,0x18c4,0x18e3,0x10e3,0x10e3,0x10c4,0x08e3,0x08e2,0x08c2,0x08c3,0x18c3,0x10c3,0x18c3,0x18c3,0x10c2,0xa554,0x52ac,0x1063,0x18e3,0x18e4,0x18e4,0x1103,0x39e6,0x5288,0x52c9,0x52a9,0x5aca, +0xe73b,0x7d75,0x4aa9,0x5aea,0x5aea,0x52aa,0x4a89,0x3a07,0x31e6,0x3a29,0x4208,0x3a29,0x49a7,0xd699,0x85b7,0x31a7,0x4248,0x3a28,0x3a08,0x4208,0x41e8,0x4228,0x3a08,0x4208,0x3a08,0x4249,0x4249,0x4229,0x4208,0x4a29,0x4249,0x426a,0x3987,0xc6b9,0xa4b4,0xe71c,0xdf7d,0xe75c,0xdf3c,0xdf3c,0xe73d,0xcf1c,0x9596,0xe73c,0xdf1c,0xdf3c,0xe79e,0x9d55,0xdefc,0xe75c,0xe75d,0xdf5c,0xdf5c,0xe75d,0xef9d,0xbedb,0xdf3c,0x5bd0,0x528b,0x62cb,0x4a8a,0xad14,0xb5f8,0xf7de,0xe77d,0xe77d,0xef9d,0xef9d,0xef9d,0xefbe,0xef9e,0xf7df,0xb639,0x5b4d,0x5acb,0xdebb,0xffde,0xf7be,0xefbe,0xefbe,0xefbe,0xef9e,0xef9e,0xf7ff,0xa575,0xd73d,0x4aac,0x634d,0x6b2d,0x634d,0xcdf7,0xc67a,0xffff,0xf7be,0xefbe,0xf7de,0xf7de,0xf7be,0xf7be,0xefbe,0x5bd0,0x636e,0x6b4e,0x8c72,0xef7d,0xf7be,0xf7be,0xf7be,0xefbe,0xf7de,0xefbe,0xefbe,0xf7ff,0xad75,0xcf1c,0x52cc,0x6b8e,0x738e,0x6b2d,0xd679,0xb5b6,0xf7de,0xf7de,0xf7df,0xf7be,0xf7be,0xefbe,0xefbe,0xefde,0xefff,0x8cb2,0xffdf,0xefbe,0xefbd,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7be,0xf7be,0xf7be,0xa555,0xd71c,0x5aec,0x6b6e,0x6b6e,0x630d,0xb575,0xad55,0xf7be,0xef9d,0xf7be,0xf7be,0xf7be,0xef9e,0xef7e,0xefff,0xc6db,0x5b4d,0x5aab,0x630d,0xb5f7,0xf7df,0xef7d,0xe79e,0xe77d,0xef7d,0xe77d,0xef7d,0xe77d,0xb5d7,0xdf5d,0x4a8b,0x5acc,0x4acc,0x52eb,0x7b8d,0xbe58,0xce99,0xe75c,0xe75d,0xe75d,0xe77c,0xe73c,0xe75c,0xef9d,0x9d76,0xadd6,0xe77d,0xdf7d,0x7c51,0xceb9,0xdefb,0xd6fb,0xd71b,0xd71b,0xd6fb,0xd71b,0xdefb,0xc619,0xc638,0x52ed,0x3a28,0x3a08,0x4208,0x39a6,0xbe58,0x94b2,0xd6fa,0xd6fb,0xd6db,0xd6bb,0xce9a,0xceba,0xce9a,0xd6fc,0xa556,0x2166,0x31e7,0xc679,0xce9a,0xceba,0xceba,0xc679,0xce9a,0xc679,0xc679,0xc679,0xc639,0x7c30,0x7bd1,0x3166,0x3166,0x2987,0x08a2,0xadd5,0x52ed,0xbe58,0xbe38,0xbe38,0xbe37,0xbe37,0xbe38,0xbe38,0xb618,0x5b0c,0xb5f7,0xb5f7,0x9d76,0x6bef,0xadd7,0xb5d6,0xb5d7,0xad96,0xadb6,0xadd7,0xadb6,0xb5d7,0x5b0c,0x9473,0x18e5,0x2925,0x2945,0x1081,0x8cd2,0x31c8,0xa5b5,0xa595,0xa596,0xa576,0xa595,0xa575,0xa575,0xa574,0xa596,0x9536,0x9d55,0x94f4,0x9d75,0x9d54,0x9d33,0xa535,0x9514,0x9d35,0x9514,0x9514,0xa575,0x4acb,0x8c73,0x1084,0x18e4,0x20e4,0x18e4,0x18e4,0x08c3,0x18e3,0x20c3,0x18e4,0x08c4,0x08a3,0x10c3,0x18c3,0x10c3,0x00c2,0x10a3,0x10a3,0x10a2,0xa574,0x52ac,0x10a3,0x10c4,0x1904,0x1904,0x1124,0x3a06,0x5288,0x52a9,0x5aa9,0x62e9, +0xdf1b,0x7d55,0x4a89,0x5b0a,0x5aea,0x52e9,0x52a9,0x39e7,0x3a07,0x4249,0x4249,0x3a49,0x49a8,0xdeba,0x8db7,0x31a7,0x4228,0x3a48,0x3a08,0x3a29,0x3a08,0x3a08,0x3a08,0x3a08,0x3a28,0x3a08,0x3a28,0x3a29,0x4208,0x4229,0x4249,0x4a4a,0x41a8,0xce79,0x9d15,0xef5c,0xf7be,0xf7de,0xef9d,0xef9d,0xef9d,0xefbd,0xffff,0xefbe,0xef9e,0xf7be,0xefbe,0xefdf,0xf7fe,0xf7de,0xf7de,0xefde,0xefde,0xf7df,0xffff,0xa5f7,0xe7be,0x534d,0x4aaa,0x52ab,0x52ab,0xa492,0xc659,0xef3b,0xf7de,0xffff,0xffff,0xf7de,0xf7de,0xf7fe,0xffdf,0xf7df,0xffff,0xf7ff,0xffff,0xffff,0xf7df,0xf7df,0xffdf,0xf7ff,0xf7be,0xf7df,0xf7df,0xefff,0xa554,0xcf1c,0x52cc,0x532d,0x632d,0x634d,0xad75,0xcedb,0xffbe,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xf7df,0xf7fe,0xf7ff,0xffff,0xf7ff,0xffff,0xffff,0xf7df,0xf7ff,0xf7df,0xf7de,0xf7de,0xf7ff,0xf7de,0xf7ff,0xa514,0xdf5d,0x52ac,0x638e,0x6b6e,0x634e,0xce38,0xc679,0xffbf,0xffff,0xffff,0xffff,0xf7df,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xf7ff,0xf7df,0xf7de,0xf7df,0xf7ff,0xf7df,0xf7ff,0xffff,0xffdf,0xf7df,0xffff,0xa534,0xe79e,0x5b0d,0x6b8e,0x634d,0x5acc,0xb554,0xb5d7,0xf7be,0xf7be,0xf7be,0xf7de,0xffdf,0xefdf,0xef9d,0xf7be,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xefbe,0xf7be,0xf7df,0xef9d,0xf79d,0xef9d,0xf7de,0xf7df,0xad96,0xefbe,0x528b,0x5aec,0x52cc,0x52ab,0x6b2c,0xceba,0xc639,0xf7be,0xef7d,0xef9d,0xef9d,0xef9d,0xef9d,0xef9d,0xef9d,0xe79c,0xe75c,0xe75c,0xe77c,0xef9d,0xe75c,0xe75d,0xe75c,0xe75c,0xe77c,0xe73c,0xe75d,0xbdf8,0xd6fb,0x4aac,0x4249,0x3a09,0x4228,0x3186,0xce99,0x83f0,0xef7d,0xef5d,0xe75c,0xdf3c,0xdf3c,0xe75c,0xe73c,0xdf3c,0xe77c,0xe77e,0xe79d,0xe73c,0xd6db,0xdefb,0xdefb,0xdf1b,0xe73b,0xd6da,0xceba,0xdefb,0xbdb7,0xa574,0x6b2e,0x3186,0x2966,0x21a6,0x08c3,0xbdf6,0x526b,0xd6ba,0xceb9,0xce9a,0xce99,0xceb9,0xceb9,0xceba,0xc679,0xd6db,0xce79,0xbe79,0xceb9,0xcedb,0xce79,0xce99,0xc679,0xc658,0xc659,0xc678,0xc638,0xad55,0x84b2,0x7b90,0x1905,0x2124,0x2145,0x10c3,0x844f,0x6b2d,0x94d2,0xb5b6,0xbdf7,0xbdd6,0xb5d6,0xb5b5,0xb5b5,0xadd5,0xad75,0xad75,0xad96,0x9d55,0xa555,0xa554,0xa574,0xad55,0xa514,0x9d14,0x94d3,0x94d3,0x8c72,0x636e,0x630c,0x18e4,0x2104,0x1905,0x10c4,0x10e4,0x08c4,0x10e3,0x20c3,0x08c3,0x10e3,0x18c3,0x10a4,0x10c2,0x10c3,0x10c3,0x10c3,0x08e3,0x08a2,0xa554,0x5aad,0x1083,0x10c3,0x2104,0x1103,0x10e3,0x4226,0x5288,0x52a9,0x5aa9,0x5ae9, +0xdf1b,0x7d34,0x4aa9,0x52ea,0x5aca,0x52c9,0x5288,0x4207,0x3a28,0x3a69,0x4249,0x4a49,0x49a8,0xd67a,0x7db6,0x29a7,0x39e8,0x31e7,0x3a08,0x39e8,0x4208,0x4228,0x3228,0x3a08,0x4208,0x3a07,0x3a28,0x3a29,0x4229,0x4229,0x4249,0x4229,0x4208,0x9431,0xbe18,0x9cd3,0x9cd3,0x9d14,0x9cf4,0x9cd4,0xa535,0x9d55,0xa535,0xa555,0xad76,0xad55,0xa596,0xadb5,0xad95,0xa554,0xa534,0xad55,0xad75,0xa534,0x94d3,0xadd7,0x9dd7,0x4249,0x52cb,0x52ab,0x52aa,0x626b,0xe73c,0xad95,0xbdb7,0xbdf7,0xb5d7,0xbe38,0xbe38,0xc638,0xc679,0xce9a,0xce9a,0xce7a,0xc658,0xc659,0xc679,0xce79,0xd69a,0xce79,0xce9a,0xce9a,0xc659,0xbe38,0xe75d,0x9514,0x52eb,0x5b0d,0x5b0c,0x636e,0x734d,0xe77d,0xb5f6,0xbe18,0xce79,0xce9a,0xd6ba,0xd6ba,0xd6ba,0xd6db,0xdedb,0xdeda,0xdefb,0xd6da,0xdefb,0xdefb,0xd6ba,0xdefb,0xdedb,0xdefb,0xe71b,0xe71c,0xc638,0xce79,0xb639,0x5acc,0x6b4d,0x738e,0x6b8e,0x9491,0xf7be,0xb5b6,0xd699,0xd6db,0xd6ba,0xce9a,0xce9a,0xd69a,0xd6ba,0xdeda,0xd6db,0xceba,0xdf1b,0xdeba,0xd69a,0xdedb,0xd6ba,0xd67a,0xce9a,0xce7a,0xce9a,0xc679,0xdf3c,0xbe39,0x5b2c,0x636d,0x6b6d,0x5b4d,0x8c10,0xef9e,0xbdf7,0xd6ba,0xdefb,0xd6ba,0xdebb,0xdefb,0xd6ba,0xd6db,0xd6db,0xd6ba,0xd6ba,0xd69a,0xd679,0xd69a,0xd69a,0xd69a,0xce79,0xce38,0xd679,0xce58,0xc637,0xc69a,0xce9b,0x52ab,0x52eb,0x4a8b,0x52ab,0x4a6a,0xe73c,0xbd97,0xc5d7,0xc618,0xc618,0xb5d6,0xb5d7,0xb5d7,0xc5f7,0xc5f7,0xbdd7,0xbdd7,0xbdf7,0xce79,0xbe18,0xb5b7,0xb596,0xad96,0xad76,0xad96,0xadb6,0xb5b6,0x9471,0xe71d,0x4229,0x4208,0x3a08,0x4209,0x29a6,0xad13,0xa575,0x736e,0x83ef,0x8c71,0x8c31,0x7bf0,0x83f0,0x7bef,0x7c10,0x73cf,0x7bef,0x8c30,0x9492,0x8cb2,0x7c31,0x8410,0x8c30,0x8c51,0x840f,0x73ae,0x7bce,0x6b8e,0xd6bb,0x3166,0x3167,0x2187,0x21a7,0x2146,0x5aa9,0xc658,0x5aed,0x6b0d,0x734e,0x7bef,0x73ae,0x632d,0x6b2d,0x6b6d,0x738e,0x734d,0x6aec,0x62ec,0x62ec,0x630c,0x62ca,0x62ab,0x62cb,0x6aed,0x5acc,0x5aab,0x738e,0xad96,0x2926,0x2145,0x1144,0x1944,0x2105,0x29a5,0xc657,0x5b0c,0x5a8b,0x526a,0x526a,0x4a49,0x4a4a,0x4a4a,0x4229,0x4a6a,0x528b,0x5a8b,0x526a,0x5249,0x4a69,0x4a6a,0x4a49,0x526a,0x528a,0x52ab,0x4aaa,0x6bce,0x9492,0x0883,0x1904,0x1903,0x1903,0x08e4,0x18c4,0x10c4,0x10e2,0x10c3,0x10c3,0x10c3,0x18e4,0x10c3,0x10c3,0x10c3,0x10c3,0x10a3,0x10e3,0x10c2,0x9553,0x5aed,0x0083,0x08e3,0x18e4,0x18e5,0x10c3,0x4a26,0x5a88,0x52a9,0x52a9,0x5aca, +0xe75c,0x7d14,0x4aa9,0x530a,0x52ca,0x5ac9,0x4a89,0x3a07,0x4229,0x3a49,0x3a69,0x3a48,0x49a7,0xdeda,0x7d75,0x29a7,0x39e8,0x3208,0x3a28,0x3a08,0x4209,0x3a08,0x3228,0x4228,0x3a28,0x3a28,0x3a08,0x3a29,0x3a49,0x4249,0x4249,0x3229,0x3a28,0x39e8,0x7b4e,0xbdd6,0xce58,0xd679,0xd69a,0xce79,0xdefb,0xe6fc,0xe71b,0xe71b,0xdf1b,0xd71b,0xd6fb,0xdf1b,0xdf1b,0xdf1b,0xe71c,0xe6fb,0xe71c,0xe73c,0xd6fb,0x9d34,0x3a09,0x4aaa,0x4a8a,0x426a,0x528b,0x4aab,0x6b0b,0xe6ba,0xef7e,0xef7e,0xe77d,0xe77e,0xef9e,0xe77d,0xef9d,0xefbe,0xf7be,0xf7be,0xffdf,0xf7de,0xf7df,0xf7be,0xf7be,0xf7de,0xf7be,0xf7be,0xf7be,0xef9e,0x9d34,0x52cb,0x5b4c,0x630d,0x5b2c,0x5b6d,0x630c,0x7b8e,0xe71c,0xefbe,0xf7de,0xf7df,0xf7ff,0xf7df,0xf7df,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xefdf,0xf7df,0xbdd7,0x638e,0x6b6e,0x738e,0x738e,0x638e,0x632c,0xa4b3,0xff9e,0xffdf,0xf7df,0xf7de,0xf7df,0xf7df,0xffdf,0xffff,0xf7ff,0xffff,0xf7ff,0xffff,0xffdf,0xf7df,0xf7df,0xf7de,0xf7be,0xf7be,0xf7de,0xf7be,0xefbe,0xbdd7,0x5acc,0x634d,0x632d,0x636e,0x5b6e,0x5aec,0x9cb2,0xf7de,0xf7de,0xf7de,0xf7be,0xf7be,0xf7be,0xf7be,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xefdf,0xf7de,0xefde,0xf7de,0xefde,0xefbd,0xefde,0xf7be,0xf7be,0xc5f8,0x524b,0x4a6a,0x52ab,0x52cb,0x52ab,0x4aab,0x62ab,0xd679,0xf7be,0xef9d,0xefbd,0xef9d,0xefbe,0xf7be,0xef9d,0xef9e,0xe7be,0xefde,0xefbe,0xef7d,0xef7e,0xef7d,0xe79d,0xef9d,0xf79e,0xef9e,0xef9e,0xef7d,0xc638,0x4a2a,0x3a08,0x39e8,0x3a08,0x4208,0x3a08,0x39a5,0x736d,0xad96,0xbdf7,0xbdd6,0xce18,0xc5f7,0xbe37,0xc5d7,0xbdd6,0xc639,0xc618,0xd699,0xd6db,0xceba,0xce9a,0xdeda,0xce99,0xc658,0xbe78,0xc67a,0xbe17,0xa4f3,0x3987,0x2966,0x3146,0x3186,0x2186,0x2986,0x2104,0x4a07,0x9cd3,0x94d2,0x94d2,0x9cf3,0xa4f3,0xa534,0x9cb2,0x9492,0x9492,0x9c92,0x9c92,0x94b2,0x94b2,0x8c72,0x9451,0x94b2,0x8451,0x7c30,0x7c30,0x8bcf,0x5a8a,0x2904,0x2104,0x2945,0x1924,0x1904,0x2124,0x2105,0x28c3,0x5249,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x4a49,0x4a29,0x4a29,0x4229,0x4a29,0x4a08,0x41e7,0x4a08,0x4a28,0x49e7,0x49e8,0x4208,0x4a28,0x4227,0x39c7,0x2124,0x1082,0x1904,0x1904,0x20e3,0x20c3,0x18e4,0x10c3,0x08e4,0x18c4,0x08c3,0x18a3,0x10a3,0x08c3,0x08e3,0x08c3,0x10c3,0x08c3,0x08e4,0x10c3,0x10a2,0x8d33,0x630e,0x1083,0x1904,0x2103,0x1905,0x10c3,0x3a05,0x4a88,0x52a8,0x52c9,0x5aca, +0xe77c,0x7d13,0x4aa9,0x52ea,0x52e9,0x4ac9,0x42a9,0x3207,0x3a08,0x4249,0x3a6a,0x3a49,0x49a7,0xdefa,0x7db6,0x2167,0x4228,0x3a28,0x3a08,0x4209,0x4208,0x3a28,0x31e8,0x3a28,0x4208,0x3a29,0x4229,0x4228,0x4228,0x4229,0x4249,0x3a49,0x4209,0x3a29,0x39e9,0x31a7,0x3986,0x31c8,0x31a7,0x31a6,0x31a7,0x3187,0x31a7,0x39a8,0x39a7,0x49a8,0x39a8,0x39c8,0x39a7,0x41c7,0x39c8,0x39c8,0x41c8,0x4209,0x41e8,0x4209,0x52ca,0x528b,0x4a8a,0x4aab,0x4a8b,0x52cb,0x528a,0x4a08,0x4a29,0x4a2a,0x4a29,0x4a49,0x428a,0x426a,0x528a,0x52ab,0x528a,0x528b,0x5aab,0x52ab,0x528a,0x528a,0x5acb,0x62cb,0x4a69,0x5a8a,0x62cb,0x5acb,0x4a8a,0x5b2c,0x5b0d,0x532d,0x5b2d,0x5b2d,0x634d,0x532b,0x5aca,0x62ec,0x5aab,0x62cc,0x62ec,0x6b0c,0x630b,0x630c,0x6b2c,0x630c,0x632d,0x6b6e,0x6b8e,0x6b6d,0x6b2d,0x6b4d,0x6b6e,0x6b6d,0x7bae,0x7bcf,0x632d,0x638d,0x73cf,0x638e,0x73ae,0x738e,0x6b6e,0x6b6e,0x632d,0x6b2c,0x6b4c,0x6b6e,0x6b6e,0x736e,0x738e,0x6b8d,0x6b6d,0x6b4e,0x6b2d,0x6b0c,0x6b0d,0x734d,0x7b8d,0x734d,0x734d,0x6b4d,0x6b4d,0x6b4e,0x6b0d,0x6b0d,0x5b0c,0x5b2d,0x532d,0x634d,0x634d,0x532d,0x634e,0x4a8b,0x5aac,0x6b2d,0x738e,0x634d,0x6b0c,0x732d,0x6b2d,0x62ec,0x5aec,0x630c,0x632c,0x732d,0x6aec,0x6b4d,0x6b2c,0x6b0c,0x630c,0x6aec,0x62eb,0x5aec,0x52ab,0x426a,0x52ec,0x52cc,0x52ab,0x52cb,0x4a8a,0x4a8b,0x52ab,0x4a29,0x4a49,0x4a29,0x4a29,0x4a29,0x4229,0x4a29,0x5249,0x4a29,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4207,0x41e8,0x39c7,0x31a7,0x2986,0x29a7,0x3a28,0x3a09,0x4229,0x4209,0x41e9,0x4208,0x4208,0x31c7,0x2925,0x2125,0x2125,0x2124,0x2124,0x2105,0x28e5,0x2924,0x2904,0x2904,0x20e4,0x18e4,0x28e4,0x18c3,0x20e3,0x2904,0x28e4,0x2104,0x20e5,0x20c4,0x18c3,0x2966,0x21a6,0x21a7,0x2966,0x2986,0x3185,0x2966,0x2145,0x20e3,0x18e4,0x20c3,0x1083,0x20a3,0x18a3,0x18a3,0x18c3,0x10a3,0x18a3,0x18a3,0x10a3,0x10a3,0x08c3,0x10a2,0x10a2,0x10c4,0x10a3,0x10a2,0x10c3,0x2944,0x1924,0x2145,0x2144,0x1945,0x1925,0x2125,0x1925,0x1905,0x08e3,0x10c4,0x10c4,0x18a3,0x18c3,0x10e3,0x18e3,0x18e4,0x10c3,0x10c4,0x08c4,0x10c4,0x10c3,0x1083,0x1084,0x10a3,0x10c3,0x10a3,0x10a3,0x10a4,0x10c4,0x1104,0x18e4,0x20e4,0x20e4,0x18e3,0x18c4,0x08c4,0x10e4,0x18c3,0x08c2,0x10c3,0x10c4,0x08c4,0x10c3,0x10e3,0x10e3,0x08c3,0x10a3,0x10e3,0x0881,0x9533,0x6b2e,0x1062,0x18e3,0x18e4,0x2103,0x10e2,0x3a06,0x5268,0x52a9,0x52a9,0x52aa, +0xe79c,0x74d3,0x52a9,0x5aca,0x5aca,0x5aa8,0x5aaa,0x39e7,0x39e7,0x3a49,0x3a49,0x3a49,0x49a7,0xe73c,0x7d56,0x2987,0x3a28,0x3a08,0x3a28,0x3a29,0x3a08,0x4208,0x3208,0x31e8,0x4208,0x3a08,0x3a09,0x3a28,0x4228,0x4a49,0x4a48,0x3a28,0x4a29,0x4a29,0x4229,0x4a49,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4a4a,0x4a6a,0x4a6a,0x426a,0x428a,0x4a6a,0x428a,0x426a,0x4a6a,0x4a6a,0x426a,0x4a8a,0x4a8a,0x528a,0x52aa,0x52cb,0x52aa,0x4a8b,0x4aab,0x52ab,0x4a8a,0x52ab,0x52ab,0x52cb,0x5aeb,0x5acc,0x52cc,0x530b,0x52ec,0x52ab,0x530b,0x530c,0x5b2c,0x5b0d,0x630d,0x5b2c,0x632c,0x5b2c,0x5b4d,0x636d,0x5b0d,0x630d,0x630d,0x5b0c,0x5b0c,0x5b2c,0x5b2d,0x5aec,0x5b0d,0x532d,0x5b2d,0x5b4c,0x638d,0x634e,0x6b6e,0x6b8e,0x5b6e,0x5b4d,0x6b6e,0x5bae,0x6bae,0x6b8e,0x736e,0x73cf,0x63ae,0x73ae,0x638e,0x738e,0x6baf,0x63ae,0x73ae,0x6b8e,0x636e,0x73ce,0x73ae,0x636d,0x6b6d,0x6b8e,0x6b8e,0x6b6e,0x6b6e,0x636d,0x6b4d,0x6b6e,0x6b6e,0x738e,0x6b6d,0x5aec,0x634e,0x73cf,0x6bcf,0x636e,0x6b8e,0x6b6f,0x636e,0x638f,0x634d,0x634d,0x5b2c,0x5b6d,0x5b2e,0x6b2e,0x636e,0x5b2c,0x532d,0x5b4e,0x5b2d,0x5b4e,0x5b0d,0x5b0d,0x5b2c,0x532d,0x5aec,0x532d,0x530c,0x632d,0x5b0d,0x632d,0x5b4d,0x5b0d,0x5b2d,0x630c,0x5b0c,0x52eb,0x630c,0x5acc,0x5acc,0x5b0c,0x52eb,0x5aed,0x52cc,0x52cb,0x52cb,0x5aec,0x4aab,0x52cb,0x4a8a,0x4aab,0x52ab,0x5acc,0x52ab,0x5aab,0x52ab,0x52ab,0x528b,0x528b,0x4a4a,0x526a,0x4a6a,0x4aaa,0x426a,0x426a,0x4a8a,0x4249,0x3a09,0x4a6a,0x4249,0x3a29,0x4a4a,0x3a4a,0x3a4a,0x4228,0x4208,0x3a49,0x3a09,0x3208,0x3a08,0x3a08,0x31e8,0x4208,0x31e7,0x31c7,0x31e8,0x39e7,0x3a08,0x39e7,0x31e7,0x31c7,0x31e7,0x31a7,0x39c7,0x39c8,0x29a7,0x39a7,0x31c7,0x39c7,0x31a6,0x39c7,0x31a7,0x3187,0x31a6,0x29a6,0x3187,0x3166,0x3186,0x2986,0x2966,0x2946,0x3165,0x3166,0x3165,0x2166,0x2166,0x2946,0x2966,0x2986,0x2966,0x2966,0x2965,0x2145,0x2946,0x2145,0x3166,0x2145,0x2145,0x2165,0x2145,0x1945,0x2945,0x1925,0x2105,0x1925,0x1945,0x2125,0x2125,0x2125,0x1905,0x1905,0x2905,0x2105,0x1925,0x1924,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e4,0x1104,0x1104,0x2105,0x18e4,0x1904,0x10e4,0x1105,0x1905,0x2104,0x10e4,0x10c4,0x10a4,0x18c4,0x1903,0x18e3,0x10c3,0x00e3,0x18e3,0x10c3,0x10c3,0x10e2,0x00c3,0x18c3,0x18c3,0x10c3,0x08c2,0x10e3,0x10c3,0x0881,0x8cd2,0x7390,0x1062,0x18c4,0x1104,0x2124,0x10e3,0x39e6,0x4a68,0x52a9,0x5ac9,0x52ca, +0xdf5c,0x74d3,0x4a89,0x52ca,0x5aca,0x5ac9,0x5a89,0x41e7,0x41e8,0x3a6a,0x3a49,0x426a,0x41c8,0xe73b,0x74f4,0x21a7,0x3a48,0x39e7,0x4208,0x3a28,0x3208,0x4208,0x3208,0x3208,0x4229,0x3a07,0x3a08,0x3a28,0x4229,0x4208,0x3a28,0x3a08,0x3a29,0x4229,0x3a28,0x3a49,0x4a49,0x428a,0x3a49,0x4a89,0x4a6a,0x424a,0x4a49,0x4a6a,0x426a,0x4a6a,0x4249,0x4a6a,0x4269,0x428b,0x4a6a,0x428a,0x4a89,0x5a8a,0x4a8a,0x428a,0x52aa,0x4aaa,0x4acb,0x4a8a,0x52aa,0x4acc,0x4aeb,0x4aeb,0x52ca,0x5aeb,0x5b0c,0x5b0c,0x5b0c,0x52cb,0x530b,0x52ec,0x5b0c,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x632c,0x5b0c,0x632d,0x632d,0x5b0c,0x5b0c,0x5b2c,0x530c,0x5b2d,0x5b2d,0x532d,0x634d,0x5b4d,0x5b4e,0x5b4d,0x632e,0x634e,0x638e,0x6b8e,0x636d,0x5b6d,0x638e,0x5b2d,0x6b6e,0x63ad,0x636e,0x6b6e,0x6b8d,0x638d,0x738d,0x636e,0x738e,0x6b6e,0x636e,0x6b6e,0x6b6d,0x5b4d,0x636e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x638e,0x6b6e,0x634c,0x636e,0x5b4d,0x6b4d,0x634d,0x6bae,0x6b6e,0x632d,0x5b4d,0x634d,0x6b6e,0x6b6e,0x6b8f,0x636e,0x5b2d,0x530c,0x636e,0x634e,0x632e,0x632d,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x636e,0x5b2d,0x5b2d,0x5b4d,0x532d,0x5b0c,0x5b4d,0x5b2c,0x5b2d,0x5b0c,0x5aec,0x530c,0x5b0c,0x5aec,0x52eb,0x5aeb,0x630d,0x5acc,0x52cb,0x5aec,0x530c,0x52cb,0x5aac,0x52ab,0x528a,0x52ab,0x4aab,0x4aab,0x52ab,0x528b,0x4aaa,0x4a6b,0x4a8a,0x52ca,0x52ab,0x52ab,0x4aaa,0x4a6b,0x52ab,0x426a,0x3a8a,0x4289,0x52aa,0x4a4a,0x4a6a,0x4a69,0x4249,0x4229,0x3a09,0x3a28,0x4249,0x4229,0x3a29,0x3a08,0x4229,0x4248,0x3a28,0x49e9,0x3a08,0x4228,0x4208,0x3a07,0x3a08,0x39e8,0x31e8,0x3208,0x39e9,0x29e7,0x31e7,0x31e7,0x39c7,0x31e8,0x31c7,0x31c7,0x29e7,0x31c8,0x31c6,0x39e8,0x31a7,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x3987,0x3187,0x2186,0x2986,0x2966,0x2986,0x3166,0x2166,0x2986,0x2986,0x2165,0x2166,0x3166,0x2165,0x2166,0x2966,0x2145,0x2145,0x2166,0x2146,0x2165,0x2945,0x2165,0x2145,0x2145,0x2145,0x2144,0x2125,0x1965,0x1925,0x1925,0x1944,0x2125,0x1125,0x1925,0x1925,0x2105,0x2905,0x1925,0x1904,0x1924,0x1904,0x1924,0x18e4,0x1924,0x1903,0x18e4,0x20e4,0x1904,0x1904,0x2105,0x1903,0x20e5,0x1104,0x10e5,0x20e3,0x1903,0x18e4,0x18e4,0x18c4,0x18c4,0x10e3,0x10e3,0x18e3,0x00e3,0x10e3,0x08c2,0x18e3,0x18c3,0x10e3,0x18a3,0x10c3,0x18c3,0x18c3,0x10c4,0x1104,0x10a2,0x8d12,0x6b6f,0x1083,0x10e4,0x10e3,0x20e4,0x10e3,0x39e5,0x5a89,0x52a9,0x52a9,0x5ac9, +0xdf5c,0x7492,0x4a89,0x5aea,0x5aca,0x5aca,0x4a89,0x3a08,0x3a09,0x3a6a,0x4249,0x4249,0x4208,0xdf3b,0x6cd4,0x21a7,0x3a28,0x3a28,0x4228,0x4208,0x3a08,0x39e7,0x4208,0x3a08,0x4228,0x3a08,0x3a08,0x3a28,0x3a07,0x3a28,0x3a08,0x3a28,0x3a48,0x4208,0x3a08,0x4229,0x424a,0x426a,0x426a,0x4269,0x4a69,0x426a,0x3a6a,0x4a6a,0x4269,0x426a,0x4a8a,0x4269,0x4a6a,0x4a8b,0x4269,0x4a8a,0x528a,0x5a8b,0x52ab,0x4a8b,0x4a8b,0x528a,0x5acb,0x528b,0x528b,0x52cb,0x4aeb,0x4acb,0x4acb,0x5acc,0x5aab,0x5acb,0x630b,0x5aec,0x5b0c,0x530c,0x532d,0x5b0c,0x630c,0x5b0c,0x5b2d,0x530c,0x532c,0x5aec,0x5b0c,0x632c,0x5b2c,0x5b0c,0x62ed,0x5b0c,0x5b2c,0x5b2d,0x5b2d,0x532d,0x5b4d,0x5b2d,0x5b2d,0x734e,0x6bae,0x738e,0x6b6d,0x632d,0x5b0d,0x636d,0x634e,0x5b2d,0x634d,0x5b4c,0x6b4d,0x6b8e,0x7b8e,0x63ae,0x6b6e,0x738e,0x6b8e,0x634e,0x634e,0x634d,0x5b2c,0x634e,0x736f,0x6b6e,0x636d,0x638d,0x632d,0x6b4d,0x6b4d,0x634d,0x636d,0x5b4e,0x632d,0x636d,0x636d,0x634d,0x638e,0x5b6d,0x5b2d,0x6b4e,0x6b6e,0x634e,0x634e,0x5b4d,0x5b2d,0x6b4d,0x634d,0x5b2c,0x630d,0x630c,0x530c,0x632d,0x632d,0x5b4d,0x5b2d,0x5b2d,0x530c,0x632d,0x5b0d,0x5b0d,0x632d,0x5b2c,0x52ec,0x5b0c,0x52cb,0x5aec,0x5acc,0x52eb,0x5aeb,0x52cc,0x5acc,0x52eb,0x5aeb,0x530c,0x5aec,0x5acc,0x52cb,0x52ac,0x52ab,0x52eb,0x52ab,0x52ab,0x52ab,0x4aaa,0x4a8a,0x528b,0x4a6a,0x52cc,0x528a,0x4aaa,0x428a,0x4a6a,0x426a,0x3a6a,0x4269,0x5289,0x4a29,0x4a2a,0x4a49,0x4269,0x4249,0x3a08,0x4229,0x39e8,0x31e7,0x4249,0x4229,0x4229,0x4229,0x3a08,0x4208,0x4208,0x41e8,0x41e8,0x4208,0x3a08,0x31e8,0x39c8,0x31e8,0x39e8,0x39e8,0x29c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31a7,0x39c7,0x39c8,0x31c7,0x31c7,0x31e6,0x31a7,0x31e7,0x29a6,0x31a7,0x3186,0x3186,0x3187,0x2986,0x2986,0x2966,0x29a6,0x2966,0x2166,0x2986,0x3166,0x3166,0x2965,0x2966,0x2966,0x2145,0x2966,0x2945,0x2945,0x2165,0x1986,0x1945,0x2146,0x2145,0x2945,0x2925,0x2145,0x1945,0x2145,0x2145,0x2145,0x1925,0x1926,0x2125,0x2125,0x2125,0x1925,0x1904,0x2105,0x1905,0x1925,0x1905,0x1904,0x2104,0x18e4,0x1904,0x1104,0x1904,0x2104,0x18e4,0x1903,0x1904,0x20e4,0x20e4,0x2103,0x18e4,0x18e4,0x1104,0x18c3,0x1103,0x1904,0x20c4,0x20c3,0x08e3,0x18e3,0x08e3,0x10c3,0x08e3,0x08e3,0x18c3,0x18e3,0x10c3,0x08a3,0x08c3,0x10a3,0x08c4,0x10e4,0x10a2,0x8d33,0x73b1,0x0862,0x1104,0x0904,0x20e4,0x10e4,0x31c5,0x5a68,0x52a9,0x52a9,0x5aca, +0xe77c,0x6c71,0x4ac9,0x5aca,0x5aea,0x5ac9,0x4aaa,0x3208,0x3a08,0x3a29,0x3a49,0x4229,0x49e9,0xef7c,0x6cf5,0x21a6,0x3a28,0x4208,0x4228,0x3208,0x39e8,0x3a08,0x3a28,0x3a08,0x3a08,0x4209,0x3a28,0x3a28,0x4228,0x4229,0x3a28,0x3a29,0x3229,0x3a28,0x4208,0x4228,0x4229,0x4269,0x4249,0x4a69,0x3a69,0x3a49,0x4269,0x4269,0x4249,0x4a6b,0x4269,0x4a49,0x4a6a,0x4a8b,0x4a8a,0x428a,0x4a8a,0x52aa,0x4aab,0x428b,0x528a,0x5a8b,0x528b,0x4aab,0x52ab,0x52aa,0x52ab,0x52cb,0x4acb,0x5acb,0x5acb,0x5a8a,0x52ca,0x52ec,0x52cb,0x530c,0x530c,0x4aec,0x530c,0x632d,0x5b2d,0x5b2d,0x5b2d,0x532c,0x5b2c,0x5b2c,0x5b2c,0x52cc,0x52ec,0x5b0d,0x5b2c,0x5aec,0x5aec,0x630c,0x5b0d,0x5b2d,0x632d,0x5b4d,0x638e,0x6b8e,0x634d,0x634d,0x5b0c,0x5b4d,0x634d,0x5b4e,0x6b4e,0x6b0c,0x6b6d,0x636e,0x634e,0x6b6e,0x636d,0x738e,0x638e,0x5b4d,0x634d,0x6b4c,0x634d,0x634e,0x6b6e,0x636d,0x5b8d,0x6b8e,0x632e,0x632d,0x634c,0x636e,0x636d,0x5b4d,0x632d,0x5b4d,0x5b4d,0x5b2c,0x6b8e,0x636e,0x5b4d,0x632d,0x52ec,0x534d,0x636d,0x634e,0x632d,0x632d,0x5b2d,0x5b2d,0x632d,0x5b0d,0x5b0d,0x5b0d,0x630c,0x5b2d,0x5b0c,0x5aed,0x5acc,0x5aed,0x5aec,0x5aec,0x630d,0x5aec,0x530c,0x5b2c,0x52ec,0x52cb,0x52cb,0x52ec,0x5b0c,0x5b0c,0x5b0c,0x530b,0x52eb,0x52ab,0x52cb,0x5aeb,0x5acb,0x52cb,0x5aac,0x52ab,0x52ab,0x5acb,0x52ab,0x52cb,0x4a8a,0x426a,0x4a8b,0x528c,0x528b,0x4a8a,0x4a8a,0x4a6a,0x428a,0x426a,0x426a,0x4a6a,0x426a,0x426b,0x4a2a,0x4229,0x3a29,0x3208,0x31e8,0x39e8,0x3a08,0x4249,0x3a29,0x4229,0x4229,0x4209,0x4208,0x39e7,0x39e8,0x39e8,0x3a09,0x3208,0x31c8,0x39e9,0x39c7,0x39c7,0x3a08,0x39c7,0x39e8,0x31e7,0x31c7,0x3187,0x3167,0x31a7,0x29e8,0x31c6,0x31a7,0x31c7,0x29a7,0x3186,0x29a7,0x2166,0x2986,0x29a6,0x2186,0x29a6,0x21c6,0x1986,0x2986,0x2186,0x2166,0x2166,0x1165,0x2186,0x2165,0x2966,0x2966,0x2966,0x2165,0x2966,0x2965,0x2145,0x2145,0x1946,0x2125,0x2945,0x2125,0x1125,0x2105,0x1925,0x2145,0x1925,0x1125,0x1966,0x2125,0x2145,0x1124,0x1105,0x1905,0x1105,0x2125,0x1924,0x1105,0x18e5,0x2104,0x20e4,0x1904,0x1104,0x10e4,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x08e4,0x2104,0x18e5,0x18e4,0x18e4,0x18e3,0x10e4,0x10e4,0x10c4,0x00e3,0x1103,0x10e4,0x08c4,0x00c3,0x08e4,0x10c4,0x10c3,0x18c2,0x20c2,0x10e3,0x08c3,0x10e3,0x10e4,0x18e3,0x10a2,0x9513,0x6bb0,0x0842,0x10e4,0x1104,0x1905,0x20e4,0x3a07,0x4a89,0x52c8,0x5ac9,0x5ac9, +0xe77c,0x6c71,0x4aa9,0x5aca,0x5ac9,0x5aa9,0x5269,0x3a07,0x31c6,0x424a,0x3229,0x39e8,0x49e9,0xf79d,0x6493,0x21c7,0x31e7,0x4228,0x39e8,0x39e8,0x3a08,0x31e8,0x3207,0x3a08,0x41e9,0x3a28,0x3a48,0x4208,0x3a28,0x3a28,0x3a28,0x3a08,0x3a27,0x3a28,0x3a48,0x4248,0x3a29,0x4229,0x4a49,0x4a29,0x4229,0x424a,0x4269,0x426a,0x4a6a,0x426a,0x4a6a,0x426a,0x426a,0x528a,0x4a8a,0x426a,0x4a8b,0x4a8a,0x4a8a,0x426a,0x528a,0x52ab,0x42ab,0x4a8b,0x52ab,0x528b,0x52ab,0x52ab,0x52cb,0x5acb,0x5acb,0x5acb,0x52cc,0x52cc,0x52ab,0x4acb,0x5b0d,0x530c,0x5b0b,0x5b0d,0x5aec,0x5aec,0x5b2d,0x5b2c,0x5aec,0x5b0c,0x5b4d,0x5b0c,0x634d,0x632d,0x630d,0x5b0c,0x5b2d,0x5b0c,0x5b4e,0x636e,0x5b2d,0x5b2d,0x5b2d,0x6b8e,0x5b6e,0x6b4d,0x636e,0x634e,0x638e,0x5b4d,0x634d,0x634e,0x634e,0x532d,0x5b6d,0x5b4d,0x5b2d,0x6b4d,0x634d,0x5b4d,0x6b4e,0x634d,0x634d,0x5b4d,0x636d,0x636d,0x636d,0x636e,0x632d,0x6b2d,0x6b8d,0x6b8e,0x632e,0x636e,0x636e,0x634e,0x636d,0x634d,0x734e,0x632d,0x634d,0x636e,0x6b2d,0x634d,0x5b4d,0x632d,0x634c,0x632d,0x5b2d,0x5b4d,0x632d,0x630d,0x5b0d,0x630d,0x630c,0x5b2c,0x5b2d,0x5b0d,0x5aec,0x5aed,0x52ec,0x52cb,0x630c,0x5b0d,0x52ec,0x52cc,0x5aec,0x52ab,0x5b0c,0x5b0d,0x5b0c,0x632d,0x530c,0x5aec,0x5aec,0x52ec,0x52cb,0x5acb,0x5aec,0x52ab,0x5acb,0x52cb,0x4aab,0x528b,0x52cc,0x52cc,0x4a8b,0x4a8b,0x4a8a,0x4a6b,0x528b,0x52ab,0x4aaa,0x4a8b,0x426a,0x3a49,0x426a,0x4a6a,0x4249,0x4249,0x424a,0x3a29,0x4249,0x4229,0x3228,0x3a08,0x3a09,0x4229,0x39e8,0x3a29,0x3229,0x4208,0x3a08,0x3a28,0x3a28,0x3a28,0x3a09,0x3a08,0x39e8,0x3a07,0x3a07,0x39e8,0x3a08,0x31e7,0x39c7,0x3a07,0x31c7,0x31c7,0x39a7,0x39a7,0x31c8,0x31c7,0x3187,0x2187,0x29a7,0x31a6,0x29a6,0x3187,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x2186,0x2166,0x2166,0x3186,0x2986,0x3166,0x2946,0x2167,0x2966,0x2966,0x2146,0x2146,0x2166,0x2165,0x2145,0x2145,0x1965,0x2165,0x1945,0x2146,0x1945,0x1105,0x1925,0x1925,0x2125,0x2125,0x2125,0x2905,0x2124,0x2125,0x2105,0x2125,0x1125,0x2105,0x2105,0x1924,0x2104,0x1904,0x1124,0x1104,0x1124,0x1104,0x1903,0x1904,0x1904,0x20e4,0x10e4,0x1904,0x1903,0x18e4,0x10e4,0x10e3,0x18e3,0x10e4,0x18e4,0x1904,0x10e4,0x08e3,0x18e3,0x10c4,0x18e4,0x10e3,0x10c4,0x18c3,0x18c3,0x10c4,0x08e3,0x10c3,0x08e4,0x10c3,0x08c3,0x18e3,0x0862,0x8d12,0x73f1,0x0022,0x10c3,0x1903,0x20e5,0x18c4,0x39e6,0x4a68,0x52a9,0x52ca,0x52ca, +0xdf7c,0x6c51,0x4aa9,0x52ca,0x5aca,0x5aea,0x52a9,0x39e7,0x39c7,0x424a,0x3a28,0x3a29,0x51e9,0xef7c,0x5c72,0x29c7,0x3a28,0x3a08,0x39e8,0x41e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x4228,0x3228,0x3a27,0x3a28,0x3a28,0x3a29,0x3a08,0x3a28,0x3a29,0x3a49,0x3a48,0x3a49,0x3a28,0x4229,0x4a49,0x424a,0x4229,0x4a69,0x4249,0x4269,0x4269,0x424a,0x4a6a,0x4a8a,0x526b,0x4a8a,0x426a,0x4a6a,0x4a8a,0x4a8b,0x4a8a,0x52ab,0x52ab,0x4aaa,0x52ab,0x4a8a,0x42aa,0x4aaa,0x4aab,0x5acb,0x5aab,0x52ec,0x5b0c,0x5aec,0x5aeb,0x5acb,0x5aeb,0x6b0c,0x5acb,0x5b2c,0x52ec,0x62ec,0x52ec,0x52ed,0x52ec,0x5aec,0x5b0c,0x530c,0x5b0d,0x5b2d,0x5b4d,0x5b2d,0x5b4d,0x5b4d,0x5b2d,0x532d,0x5b4d,0x632d,0x634d,0x5b2d,0x6b6e,0x636e,0x634d,0x636e,0x5b6d,0x5b8e,0x5b0c,0x5b6d,0x6b6e,0x5b4d,0x634d,0x6b6e,0x5b2d,0x634e,0x634d,0x632d,0x634d,0x634d,0x5b0c,0x5b4c,0x5b4d,0x634d,0x638e,0x538d,0x5b6d,0x636d,0x6b4d,0x6b6d,0x6b8d,0x530d,0x632d,0x636e,0x5b6e,0x5b6d,0x5b6e,0x6b2e,0x634e,0x634e,0x634e,0x632d,0x5b6d,0x5b4e,0x5b2d,0x5b4c,0x5b4d,0x5b4e,0x5b2d,0x5b2c,0x5b2d,0x5b0d,0x5b0c,0x5b0c,0x5b2d,0x530c,0x5b4d,0x5b2c,0x530d,0x5aec,0x52eb,0x5aec,0x5b0d,0x52ec,0x5b2d,0x530c,0x5aec,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x52eb,0x5aec,0x52ab,0x52cb,0x5acb,0x52ab,0x52cc,0x52ab,0x52cb,0x52ec,0x4aab,0x4a6a,0x3a4a,0x4acc,0x4a8b,0x4a8a,0x528b,0x4a6b,0x4a6a,0x528a,0x4a6b,0x528b,0x4a8a,0x4a6a,0x3a6a,0x4249,0x3a69,0x424a,0x4249,0x4a4a,0x4269,0x3a29,0x3209,0x3a09,0x4229,0x4209,0x3a29,0x4229,0x3a48,0x3228,0x3a08,0x4229,0x3a08,0x3209,0x41e9,0x39e8,0x31c8,0x39e8,0x3a07,0x31e8,0x41e8,0x39e8,0x39c7,0x39e7,0x39c8,0x39c8,0x31c7,0x39c7,0x31c7,0x31c8,0x29a7,0x2986,0x3987,0x29a6,0x21a6,0x2986,0x3186,0x29a6,0x3186,0x3186,0x2986,0x2986,0x2166,0x3186,0x3166,0x2965,0x2986,0x2966,0x2967,0x3166,0x2945,0x2166,0x1965,0x1165,0x2166,0x2945,0x2945,0x2165,0x2945,0x1945,0x2145,0x2925,0x2125,0x1925,0x2145,0x1924,0x2124,0x2104,0x1925,0x2105,0x2105,0x2125,0x2125,0x1904,0x2105,0x2905,0x1904,0x1904,0x20c4,0x2105,0x1925,0x1124,0x18e4,0x1105,0x1104,0x18e4,0x20e4,0x18e4,0x20e5,0x2104,0x18c5,0x1905,0x18c4,0x10e4,0x10e4,0x10e3,0x1903,0x1103,0x10e3,0x1903,0x18e4,0x10e3,0x10e3,0x18e3,0x18a4,0x18a3,0x10c3,0x08e4,0x10e2,0x10e3,0x08c3,0x08a3,0x18e3,0x0881,0x8d53,0x73b1,0x0842,0x18a3,0x1103,0x1905,0x18c3,0x31e7,0x4aa8,0x52a8,0x5aa9,0x5aca, +0xdf7c,0x6c31,0x42a9,0x5ae9,0x5ac9,0x52ca,0x4aa9,0x31c7,0x3a07,0x4a49,0x4229,0x4249,0x5a4a,0xef7c,0x6452,0x29a6,0x39e8,0x3207,0x39e8,0x4208,0x3a08,0x4228,0x4208,0x39e8,0x3a28,0x3a08,0x3a08,0x3a08,0x3a29,0x3a28,0x3a29,0x3a08,0x3a08,0x4209,0x3a09,0x3228,0x3a28,0x4249,0x4a49,0x4269,0x4249,0x3a49,0x4a69,0x4229,0x4249,0x3a69,0x4a4a,0x4a69,0x4269,0x424a,0x4a8a,0x428a,0x52ab,0x528a,0x4a6a,0x4a8a,0x526a,0x526a,0x528a,0x528a,0x528a,0x4a8a,0x52ab,0x52ab,0x4aaa,0x4aab,0x4acc,0x52ec,0x52ec,0x52ab,0x52ab,0x5acc,0x5aec,0x52cb,0x52cb,0x5acc,0x5aec,0x52cb,0x52ec,0x5acb,0x5aec,0x52cc,0x5b2d,0x634d,0x5b2c,0x5b0c,0x5b2c,0x5b2c,0x632c,0x632d,0x5b2d,0x634d,0x634d,0x5b6e,0x5b4d,0x5b4d,0x632d,0x634d,0x638e,0x5b4e,0x638d,0x6b8e,0x636e,0x636d,0x634e,0x634d,0x634d,0x5b2d,0x636e,0x6b8e,0x5b2d,0x6b6d,0x634d,0x634d,0x5b4c,0x5b2d,0x5b6e,0x5b4d,0x5b4d,0x5b4d,0x634d,0x636d,0x634d,0x634d,0x5b2d,0x6b4d,0x636e,0x5b4d,0x5b4d,0x636e,0x5b4d,0x636e,0x636e,0x632d,0x6b4d,0x5b4d,0x5b4d,0x5b2e,0x5b6d,0x5b4d,0x634d,0x5b4d,0x5b2c,0x5b4d,0x5b2d,0x5b2d,0x5b0c,0x630d,0x632d,0x5b0d,0x5b0d,0x530d,0x52eb,0x52eb,0x5b0c,0x530c,0x4acb,0x5b2c,0x52ec,0x52eb,0x5b0c,0x5b0c,0x52eb,0x5b0c,0x52cb,0x5aec,0x52ab,0x5aab,0x52cb,0x52ab,0x52cb,0x52cb,0x4aab,0x4aab,0x52ab,0x52ab,0x4aab,0x4aab,0x4aab,0x4a8b,0x4a8b,0x4a8a,0x428a,0x4a6a,0x4a6a,0x428b,0x426a,0x426a,0x4a6a,0x4249,0x4269,0x424a,0x4229,0x4249,0x4249,0x3a49,0x3a29,0x3a48,0x4229,0x4209,0x3209,0x31e8,0x31e8,0x3208,0x39e8,0x3a08,0x3229,0x3a09,0x4208,0x39e8,0x31e8,0x39c7,0x39e8,0x39c8,0x39e8,0x31e8,0x39e7,0x31e7,0x39e7,0x39a7,0x31a8,0x39c6,0x31c7,0x31c7,0x31a7,0x31a7,0x3187,0x39a7,0x31c7,0x29a7,0x3187,0x2186,0x29a7,0x3186,0x21a7,0x2986,0x3186,0x3186,0x2966,0x2966,0x2986,0x2966,0x2966,0x2945,0x2965,0x2165,0x2145,0x1985,0x1965,0x2146,0x2945,0x2165,0x2145,0x2165,0x2145,0x3125,0x2125,0x1945,0x1945,0x2145,0x2145,0x2145,0x1145,0x1925,0x1925,0x1925,0x1925,0x1924,0x2124,0x1905,0x1904,0x2105,0x2105,0x1904,0x1905,0x1904,0x2105,0x1104,0x1904,0x1903,0x1904,0x18c4,0x10e4,0x18e5,0x18e4,0x1904,0x10e3,0x1103,0x20e3,0x2104,0x10e3,0x10e4,0x1103,0x08e3,0x18e4,0x10e4,0x18c3,0x08e3,0x18c4,0x10c3,0x00c2,0x08e4,0x10c3,0x10c3,0x18e3,0x18c3,0x18e3,0x10a2,0x9553,0x73b1,0x0822,0x18e4,0x08e4,0x1104,0x10e3,0x39e6,0x52a9,0x52a9,0x5ac9,0x5aca, +0xdf5c,0x6410,0x4ac9,0x62e9,0x5ac9,0x52e9,0x4ac9,0x31c7,0x3a28,0x4249,0x4249,0x4a49,0x628a,0xe79d,0x5c11,0x29a6,0x39c8,0x3a07,0x39e7,0x39e8,0x3208,0x3a08,0x39e8,0x39e9,0x29e8,0x3a28,0x39e8,0x3a08,0x3229,0x3a29,0x4229,0x4249,0x4229,0x39e8,0x3a08,0x3a29,0x3a28,0x4208,0x4a28,0x3a28,0x4249,0x426a,0x4a69,0x4a49,0x4249,0x3a69,0x4a4a,0x4249,0x4a6a,0x426a,0x4a69,0x424a,0x4a4a,0x4a8b,0x4a8a,0x4a6b,0x528b,0x52ab,0x4a8b,0x4a8a,0x52ab,0x52ab,0x4aab,0x4aab,0x4a8b,0x52ab,0x4aab,0x52eb,0x52ec,0x4acc,0x4aec,0x4acb,0x52ab,0x5acb,0x52cb,0x5acb,0x5aec,0x52ab,0x5aec,0x52ec,0x5b2d,0x52ac,0x5b0c,0x5b0c,0x5b4c,0x5b2c,0x5b2c,0x5b4d,0x5b0c,0x632c,0x5b2d,0x5b2d,0x5b2c,0x636d,0x5b4d,0x5b6d,0x5b4e,0x5b4c,0x638d,0x636e,0x636e,0x634c,0x6b6d,0x636e,0x632e,0x6b2d,0x634e,0x632e,0x5b2d,0x636d,0x634d,0x632d,0x6b4e,0x630d,0x5b2d,0x634e,0x534d,0x636e,0x5b6d,0x636d,0x634e,0x532d,0x634d,0x632d,0x5b4d,0x5b4d,0x6b6e,0x632e,0x5b2d,0x532c,0x5b4d,0x638e,0x636d,0x5b6d,0x634d,0x636e,0x632d,0x5b2e,0x632d,0x634d,0x5b4d,0x634d,0x634d,0x5b2d,0x632d,0x634d,0x5b4c,0x5b0c,0x5b0c,0x530d,0x5acc,0x5aec,0x5aeb,0x52eb,0x530c,0x4b0c,0x530b,0x5b0c,0x52cc,0x530c,0x52ec,0x5aec,0x5b0c,0x530b,0x4aca,0x52ec,0x52eb,0x4aaa,0x52cb,0x52cb,0x52ab,0x52ac,0x528b,0x52ab,0x4aab,0x4aab,0x52ab,0x4aab,0x4aab,0x4a6a,0x4a8b,0x52ab,0x428b,0x528a,0x4a8b,0x426a,0x426b,0x4a8a,0x4289,0x426a,0x3a4a,0x3a29,0x4249,0x4a6a,0x424a,0x4a89,0x426a,0x4a49,0x3a29,0x4249,0x3a4a,0x3a28,0x3a08,0x3a08,0x3a28,0x3208,0x3209,0x4208,0x3a28,0x3208,0x29e8,0x39e7,0x31e8,0x39e8,0x31e9,0x31c7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c6,0x31e6,0x31a6,0x31a6,0x31a7,0x2987,0x3187,0x39a7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x29a7,0x3187,0x2987,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2966,0x2966,0x2165,0x2166,0x2145,0x2965,0x2165,0x1945,0x2145,0x2145,0x2125,0x2145,0x2145,0x2145,0x1125,0x2145,0x2124,0x2144,0x1945,0x1925,0x1925,0x1925,0x1925,0x2125,0x1925,0x1925,0x1905,0x1924,0x1925,0x10e5,0x1905,0x1904,0x10e4,0x18e4,0x18e4,0x1905,0x10e5,0x1104,0x18e4,0x18e4,0x10c4,0x1904,0x18e4,0x10e4,0x10e3,0x1904,0x1903,0x20e4,0x10e4,0x10c4,0x18e4,0x18e4,0x18c3,0x18c3,0x18e4,0x10e3,0x00e3,0x10c3,0x10c3,0x08c3,0x18c3,0x18c3,0x18c3,0x10e4,0x18c4,0x0882,0x8d34,0x73d1,0x1042,0x10c3,0x10e4,0x1924,0x08e4,0x31e5,0x52a8,0x52a9,0x52aa,0x52c9, +0xe77d,0x63ef,0x52c9,0x62ca,0x5ac9,0x52e9,0x4aa9,0x31a7,0x41e8,0x4249,0x3a49,0x3a29,0x624a,0xef9d,0x5411,0x29a6,0x3a08,0x39e8,0x3a08,0x4208,0x31e8,0x31e8,0x4229,0x41e8,0x39e8,0x3a28,0x3a28,0x39e8,0x3208,0x3a29,0x4a28,0x4208,0x4229,0x3a08,0x3208,0x4229,0x3a29,0x3a08,0x4248,0x4249,0x4a49,0x4249,0x4269,0x4a49,0x4a49,0x3a49,0x4249,0x4269,0x4228,0x4269,0x4a89,0x4249,0x4a6a,0x428b,0x424a,0x424a,0x4a8b,0x4a8b,0x42ab,0x4aab,0x4aab,0x428b,0x428b,0x4aab,0x5aaa,0x5acb,0x4aeb,0x52eb,0x52cb,0x52cc,0x4acb,0x5aec,0x5aec,0x5aec,0x52cb,0x52cb,0x52cc,0x5acb,0x632c,0x530c,0x5aec,0x62ec,0x5b0c,0x5b2d,0x5b2c,0x532c,0x5b2d,0x634d,0x634d,0x5b2d,0x52ec,0x530c,0x5b4d,0x636d,0x534d,0x5b4d,0x5b2d,0x5b2c,0x5b4d,0x634e,0x634e,0x634d,0x636e,0x5b2d,0x638d,0x6b6e,0x636e,0x532e,0x5b4d,0x5b4e,0x5b4d,0x6b6e,0x634e,0x630c,0x5b4d,0x6b6e,0x534d,0x5b2d,0x636e,0x6b4d,0x6b6e,0x634d,0x6b6d,0x6b4e,0x5b6d,0x5b2c,0x634c,0x634d,0x5b2d,0x5b2d,0x638e,0x638e,0x5b6d,0x5b4d,0x5b0d,0x5b4d,0x6b4e,0x6b6e,0x634c,0x6b6d,0x5b4e,0x632d,0x5b4d,0x5b2c,0x634d,0x5b2c,0x5b2c,0x5b4c,0x532c,0x532d,0x5aec,0x5acc,0x5b0c,0x5b2d,0x5aeb,0x632d,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5b0c,0x52cc,0x5b2c,0x5b0c,0x530c,0x4acb,0x4aaa,0x52aa,0x52aa,0x52ab,0x52ac,0x52ac,0x52ab,0x52ab,0x52ab,0x4aab,0x52eb,0x52cb,0x4aab,0x4a8b,0x52aa,0x4a8b,0x4a8b,0x426b,0x4229,0x424a,0x4a49,0x4a4a,0x426a,0x4a8a,0x426a,0x3a6a,0x3a29,0x4a6a,0x4229,0x4249,0x4249,0x3a09,0x424a,0x3208,0x3a28,0x3a08,0x4229,0x4249,0x3208,0x3a29,0x3a09,0x4209,0x3a29,0x39e8,0x39e8,0x39e8,0x41c8,0x39e8,0x39c7,0x39c8,0x39c7,0x31c8,0x31c8,0x39c8,0x39c7,0x31c7,0x31e7,0x31a7,0x3186,0x31c7,0x31c7,0x2986,0x29a7,0x21a6,0x29a6,0x29c6,0x31c6,0x31a6,0x2986,0x3166,0x31a6,0x2965,0x2966,0x2966,0x3187,0x2986,0x2966,0x1965,0x2145,0x2146,0x1945,0x2165,0x2145,0x2145,0x1965,0x2165,0x2145,0x1925,0x2126,0x1946,0x2146,0x1905,0x1925,0x1945,0x1925,0x1925,0x1925,0x2125,0x2125,0x1924,0x2905,0x1105,0x1925,0x1104,0x1105,0x10e5,0x2104,0x1104,0x2104,0x1104,0x08e3,0x1104,0x1904,0x20e4,0x10e3,0x1904,0x1103,0x1904,0x1925,0x10e4,0x18c3,0x10e4,0x18e4,0x1904,0x18e4,0x10e4,0x18e4,0x10c4,0x18c4,0x18e3,0x18e3,0x10c3,0x18e3,0x10c3,0x08e3,0x10e3,0x10e4,0x18e4,0x10c4,0x18c3,0x0062,0x8d12,0x7c11,0x0822,0x10e4,0x1104,0x1924,0x08e4,0x31e6,0x4a68,0x52c9,0x52c9,0x52c9, +0xdf7d,0x63ef,0x52c9,0x5ac9,0x52ca,0x5aea,0x5289,0x31c7,0x31a7,0x4229,0x3a48,0x3229,0x626b,0xe79d,0x53d1,0x31a6,0x3a08,0x4208,0x3a08,0x4208,0x3a08,0x4208,0x3a08,0x3a08,0x3a08,0x31e8,0x3a08,0x41e9,0x4249,0x4229,0x4208,0x41e9,0x3a09,0x3a08,0x3209,0x4208,0x3a28,0x4229,0x4249,0x424a,0x4229,0x3228,0x3a29,0x4a49,0x4a49,0x424a,0x4269,0x3a69,0x3a4a,0x424a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x426a,0x426a,0x4a8b,0x4aab,0x4aab,0x4a8a,0x4aab,0x4a8b,0x4a8b,0x4a8b,0x52ab,0x5aec,0x52cb,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ec,0x52cc,0x52ab,0x52cb,0x52ec,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52ec,0x632c,0x636d,0x632c,0x5b0d,0x5aed,0x5b2c,0x632d,0x634d,0x5b2d,0x632d,0x5b4d,0x5b4d,0x5b2d,0x5b4d,0x634d,0x632d,0x5b4d,0x634e,0x634e,0x5b4d,0x5b4d,0x6b6e,0x634e,0x636e,0x638d,0x636e,0x5b0d,0x634d,0x6b4d,0x5b6e,0x5b4d,0x5b2c,0x5b2d,0x634d,0x5b4d,0x5b4d,0x4b2c,0x632d,0x634d,0x634d,0x634d,0x634e,0x636d,0x6b6d,0x636d,0x632d,0x634e,0x6b6e,0x6b6e,0x6b6e,0x5b6d,0x5b0c,0x632d,0x634d,0x636d,0x5b4d,0x634d,0x632c,0x636d,0x5b4d,0x5b6d,0x634d,0x634d,0x632d,0x630d,0x5b0d,0x5b2c,0x5b0d,0x5b0d,0x5b0c,0x5aec,0x530c,0x630c,0x6b2d,0x630c,0x5b0c,0x5b0b,0x5aec,0x52ec,0x52ec,0x52cc,0x52ca,0x5aab,0x52cb,0x52ec,0x52ab,0x4aab,0x52ab,0x52ab,0x52ab,0x4acb,0x4acb,0x4aaa,0x4aca,0x4aab,0x528b,0x4a8a,0x4aab,0x528b,0x528b,0x4a8b,0x4a8b,0x426a,0x4a4a,0x4a6b,0x4a4a,0x4a69,0x4249,0x4a69,0x4269,0x4269,0x3269,0x426a,0x4229,0x4249,0x3a29,0x4249,0x3a29,0x3a48,0x4229,0x41e8,0x3a28,0x39e8,0x3a08,0x3209,0x3a09,0x4208,0x4208,0x31e8,0x31e8,0x29e7,0x39c7,0x39c8,0x39e8,0x39c7,0x39c7,0x39e7,0x39e7,0x39c8,0x31a7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x31c7,0x3187,0x3187,0x31c7,0x2986,0x39a6,0x3186,0x31a7,0x2987,0x2966,0x2986,0x2966,0x2966,0x2186,0x2186,0x2166,0x3165,0x2186,0x2966,0x2166,0x1945,0x2186,0x2986,0x2945,0x1965,0x1945,0x2126,0x1946,0x1946,0x1925,0x2125,0x2125,0x2945,0x1945,0x2165,0x1945,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2105,0x1905,0x1104,0x1104,0x1924,0x1905,0x1904,0x1904,0x1124,0x1104,0x18e4,0x20e4,0x1904,0x18e4,0x18e4,0x0903,0x1104,0x18e4,0x10e4,0x18e4,0x1924,0x18c4,0x18c4,0x1104,0x10e4,0x18e4,0x10e3,0x10e4,0x10c3,0x10c4,0x10c3,0x10c3,0x08e3,0x08e4,0x10e3,0x08c3,0x10e3,0x10c3,0x0082,0x8cf2,0x7c11,0x0843,0x10c4,0x18e3,0x2105,0x10c4,0x31c6,0x52a9,0x52ca,0x52ca,0x5aca, +0xdf9d,0x5bef,0x4ac9,0x52e9,0x5ac9,0x52c9,0x4aa9,0x39c7,0x31e8,0x3a49,0x3a29,0x4229,0x628b,0xe77d,0x5390,0x29c7,0x3a08,0x39e8,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3208,0x3227,0x3a08,0x4208,0x4a28,0x4a29,0x29c8,0x3a29,0x31e8,0x3a29,0x4209,0x3229,0x3a29,0x3a29,0x4209,0x3a28,0x3a49,0x3a29,0x4229,0x3a29,0x4a4a,0x4249,0x4249,0x4269,0x326a,0x424a,0x426a,0x4a8a,0x4a6a,0x4a6b,0x4a4a,0x4a6a,0x4a6b,0x4a8b,0x4aab,0x4a8b,0x52ab,0x52ab,0x52ab,0x528b,0x52cc,0x52ac,0x52cc,0x52cc,0x4acb,0x4aab,0x52ec,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb,0x52cb,0x5acc,0x52cc,0x5aec,0x5aec,0x62ec,0x532d,0x5aec,0x5b0c,0x530c,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x5b2d,0x634d,0x5b0d,0x5b2d,0x636d,0x5b2d,0x6b4e,0x634d,0x634d,0x5b6d,0x5b8d,0x536e,0x532c,0x5b6d,0x5b2d,0x5b0d,0x5b6e,0x6b8d,0x634d,0x632d,0x634d,0x6b6d,0x5b6c,0x632d,0x5b2d,0x5b2d,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x632d,0x6b6e,0x6b6d,0x5b4d,0x634d,0x634d,0x634e,0x5b2d,0x5b4d,0x638e,0x638e,0x636d,0x632d,0x636d,0x5b4d,0x5b4d,0x634e,0x634d,0x636d,0x634d,0x636e,0x5b0c,0x5b2d,0x632c,0x634e,0x6b4d,0x5b2d,0x5b0c,0x5aec,0x5b2c,0x5b0d,0x5b0d,0x5aec,0x52ec,0x530c,0x52eb,0x6b2d,0x5b2d,0x532c,0x52eb,0x5aec,0x52ec,0x532d,0x4acb,0x530b,0x5acb,0x52ab,0x4acb,0x528b,0x52ab,0x52ab,0x52cb,0x52eb,0x52eb,0x52eb,0x52ab,0x52ab,0x528b,0x5a8b,0x4aab,0x4aab,0x528a,0x4a8a,0x528b,0x4aaa,0x4a6a,0x426a,0x426b,0x426a,0x52aa,0x4249,0x4a49,0x4a49,0x4228,0x3a69,0x4269,0x4a49,0x4a49,0x3a29,0x4a49,0x3a49,0x4229,0x4209,0x4a49,0x3a49,0x3a08,0x3a28,0x3229,0x3228,0x4208,0x4208,0x3208,0x39c8,0x31c7,0x31e8,0x3a08,0x39e8,0x39c8,0x31e7,0x31c7,0x39c8,0x39c8,0x29a7,0x21a7,0x29c6,0x31c7,0x31a7,0x2987,0x29a6,0x29a6,0x29a7,0x3187,0x2987,0x29a7,0x29a7,0x29a7,0x29a6,0x2986,0x3186,0x2986,0x2986,0x3185,0x2986,0x2166,0x3186,0x2966,0x3166,0x2186,0x2166,0x1945,0x2145,0x2926,0x2146,0x2145,0x2945,0x1945,0x2125,0x2946,0x2925,0x2125,0x2165,0x2145,0x2125,0x2125,0x2125,0x2145,0x2925,0x2905,0x2105,0x3125,0x2905,0x2124,0x1104,0x1904,0x1904,0x20e5,0x1904,0x1904,0x1904,0x1904,0x18e4,0x2104,0x1904,0x1904,0x18e4,0x18c4,0x2103,0x18e4,0x2105,0x18e4,0x1903,0x18c3,0x10c4,0x10e4,0x1104,0x08e4,0x0104,0x10e4,0x0904,0x10e4,0x10e3,0x08c4,0x10e4,0x18e3,0x08e3,0x08e3,0x08c3,0x10e3,0x0082,0x8512,0x7c12,0x0843,0x08e3,0x0903,0x1905,0x10e3,0x31e6,0x42a9,0x5ac9,0x52ca,0x5aea, +0xdf9d,0x5b8e,0x52ca,0x5aca,0x5ac9,0x52a9,0x4289,0x31a6,0x3a28,0x3a49,0x4228,0x4249,0x62ab,0xef9e,0x5390,0x31a7,0x3a08,0x31e8,0x31e8,0x31e8,0x39e8,0x31e8,0x3208,0x3208,0x3a08,0x3a07,0x3a08,0x4a29,0x41e9,0x4229,0x3a28,0x3a08,0x3a29,0x3a08,0x3a28,0x4209,0x4249,0x4a49,0x4228,0x4249,0x3a48,0x4249,0x4249,0x4a69,0x4249,0x4269,0x4289,0x3a6a,0x426a,0x4aaa,0x52ab,0x4a6b,0x428b,0x4aab,0x52ab,0x52ac,0x4a8a,0x52aa,0x4aab,0x52ab,0x5acb,0x52cb,0x52eb,0x5b0c,0x5acc,0x4a8a,0x52ab,0x52ec,0x4aeb,0x52cb,0x5aec,0x52cb,0x5acc,0x5acb,0x5aeb,0x52cc,0x52cb,0x52ec,0x5aed,0x52ec,0x5b0d,0x5b2d,0x5b0c,0x630d,0x5b4e,0x5b0c,0x5b2c,0x530c,0x5b2c,0x634d,0x5b2d,0x5b4d,0x634d,0x6b6e,0x5b4d,0x634d,0x638e,0x632d,0x634c,0x5b6d,0x5b4d,0x634d,0x636d,0x5b4e,0x5b0d,0x5b2d,0x636d,0x5b2d,0x632d,0x5b4d,0x636e,0x5b6c,0x5b2d,0x632d,0x5b2d,0x636e,0x5b2d,0x5b0c,0x634d,0x6b6e,0x636d,0x6b6e,0x6b6e,0x6b6d,0x6b4d,0x634d,0x636d,0x636e,0x5b4e,0x634d,0x634d,0x632d,0x5b2c,0x636d,0x73ae,0x6b6e,0x5b0c,0x5b0d,0x6b8f,0x6b6e,0x636d,0x5b4d,0x5b0e,0x634d,0x5aec,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x4aec,0x5b2c,0x632d,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x530c,0x52ec,0x5aec,0x5aab,0x52cb,0x52cb,0x52cb,0x52cb,0x4acb,0x52ec,0x4aab,0x52cb,0x52ac,0x52ab,0x52ab,0x4aab,0x4acb,0x52ab,0x52ab,0x52ab,0x4a8a,0x4aaa,0x4a8a,0x4a69,0x4aab,0x428a,0x4a89,0x4249,0x426a,0x424a,0x4a69,0x3a89,0x4289,0x4a6a,0x4229,0x424a,0x426a,0x4249,0x4229,0x3a69,0x4a29,0x3a29,0x3a08,0x31e8,0x4229,0x3a49,0x4208,0x4228,0x3a28,0x41e8,0x31e8,0x31c9,0x31e8,0x39e8,0x31e7,0x39c8,0x31a7,0x39c8,0x31a7,0x31c7,0x21c7,0x39c7,0x39c8,0x39a7,0x29a7,0x29c7,0x31c6,0x29c7,0x31a7,0x31c8,0x31c8,0x3186,0x29a7,0x29a6,0x31a5,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3166,0x2987,0x2986,0x2165,0x1986,0x1966,0x2165,0x2146,0x1925,0x2946,0x2966,0x3166,0x2986,0x2966,0x2966,0x2145,0x2165,0x2965,0x2945,0x2165,0x2165,0x2966,0x2166,0x2945,0x2945,0x2145,0x2125,0x2125,0x1945,0x1946,0x2125,0x2124,0x1906,0x1924,0x1924,0x0904,0x1104,0x1904,0x1904,0x2124,0x1925,0x18e5,0x18e4,0x1904,0x2905,0x1904,0x20e3,0x2103,0x1904,0x1904,0x2104,0x18e3,0x1904,0x1903,0x1904,0x1104,0x20e3,0x2103,0x10e4,0x10c3,0x10c3,0x1103,0x18e3,0x18e3,0x18c4,0x0882,0x9533,0x7c33,0x0842,0x08e3,0x0904,0x1124,0x10c3,0x39e6,0x4aa8,0x5ac9,0x5aca,0x5aea, +0xdf9c,0x5b8e,0x52ca,0x52ea,0x52ca,0x5ac9,0x4249,0x31a6,0x3a07,0x3a29,0x3a29,0x3a29,0x72ab,0xefbe,0x4b8f,0x39a7,0x39e8,0x31e8,0x3a08,0x31e8,0x31e8,0x31e7,0x3a08,0x3a08,0x4208,0x3a08,0x3a28,0x4229,0x4229,0x4209,0x3a08,0x3a09,0x3a29,0x3a29,0x4228,0x4229,0x3a08,0x3a28,0x4229,0x4228,0x4248,0x4249,0x424a,0x4269,0x4249,0x3a49,0x424a,0x4269,0x3a49,0x3209,0x3a4a,0x426a,0x4aab,0x426a,0x428a,0x4a8b,0x4a8b,0x4aac,0x4acc,0x4acc,0x3aab,0x42ac,0x4acb,0x52cb,0x4a8a,0x52ab,0x5aec,0x4acb,0x4a8b,0x52ab,0x52ab,0x5aea,0x5aec,0x5aec,0x52cb,0x52ec,0x52ec,0x528a,0x52ab,0x52cc,0x52ec,0x52ec,0x52cb,0x530c,0x52eb,0x52ec,0x530c,0x5b2d,0x52eb,0x5b0c,0x5b2d,0x4b0c,0x532d,0x530c,0x5aec,0x5aec,0x530c,0x5aec,0x5b0c,0x5b4d,0x634d,0x5b4d,0x634d,0x636e,0x632d,0x6b6e,0x530c,0x4aeb,0x52eb,0x52cb,0x52cb,0x52ec,0x5b0c,0x5b2c,0x5b2c,0x5b0d,0x630d,0x5b2c,0x5b2d,0x5b2d,0x530d,0x4b0d,0x534d,0x5b2c,0x630c,0x5aec,0x5b2d,0x530c,0x5b2c,0x638d,0x638d,0x6b6e,0x530c,0x634d,0x636e,0x632d,0x5b2d,0x636e,0x632d,0x632d,0x5b2d,0x5b2d,0x52ec,0x5b0c,0x5b0d,0x530c,0x52ec,0x5b2d,0x52ec,0x52cb,0x530c,0x52cc,0x52cc,0x4acc,0x4a8b,0x426b,0x4a8b,0x5aec,0x5b2d,0x5b2c,0x52ec,0x4aec,0x52eb,0x52cc,0x5aeb,0x52ab,0x4a8b,0x4aab,0x426a,0x3a6a,0x428a,0x4aaa,0x3a4a,0x3a69,0x3a6a,0x4a4a,0x426a,0x424a,0x3a4a,0x3a29,0x3a08,0x3a08,0x3209,0x3229,0x39e8,0x39e8,0x4229,0x4269,0x4289,0x4a49,0x426a,0x3a28,0x4249,0x3a07,0x3208,0x3a08,0x29a8,0x3209,0x31e8,0x2a08,0x31c8,0x31e8,0x31e8,0x31c8,0x31e8,0x31e8,0x31c7,0x31c7,0x29a6,0x31c7,0x29c7,0x31a7,0x31c7,0x2986,0x2966,0x3187,0x31c7,0x39c7,0x31c7,0x31e7,0x31a7,0x29a6,0x29a7,0x2966,0x2966,0x2166,0x2145,0x1945,0x2165,0x2146,0x2165,0x2166,0x2125,0x2145,0x2146,0x1946,0x1965,0x1925,0x2145,0x1925,0x1905,0x1904,0x2104,0x1904,0x1104,0x2166,0x1966,0x2186,0x2145,0x2145,0x1965,0x3125,0x20e4,0x18e4,0x1904,0x1905,0x2105,0x1905,0x1105,0x1104,0x1925,0x1145,0x1925,0x2105,0x2105,0x2125,0x2146,0x1925,0x1925,0x1926,0x1925,0x1925,0x1904,0x10c3,0x10e4,0x1105,0x18e5,0x1905,0x1104,0x1904,0x1905,0x10c3,0x10c3,0x2986,0x39e8,0x31a8,0x31c7,0x39e8,0x29a7,0x3186,0x29c7,0x29a7,0x31a7,0x39c8,0x3a29,0x3228,0x3248,0x3228,0x3229,0x3229,0x3228,0x3a08,0x3a28,0x2966,0x0862,0x10c3,0x18c4,0x1082,0x84f1,0x8c94,0x0023,0x08e2,0x1103,0x1144,0x0883,0x31e6,0x52a8,0x52e9,0x5aea,0x5aca, +0xdf7c,0x5bae,0x52c9,0x52e9,0x52ca,0x52c9,0x4268,0x3186,0x29c6,0x3249,0x3a48,0x4229,0x72cb,0xefbd,0x5390,0x29c7,0x31e8,0x39e8,0x39e8,0x31e8,0x31e8,0x39c7,0x39e8,0x4208,0x4209,0x4228,0x3a28,0x39e8,0x4229,0x3a09,0x3a08,0x3a48,0x3a28,0x4229,0x4249,0x4208,0x4228,0x3a28,0x4229,0x3a48,0x3a28,0x4229,0x424a,0x4249,0x4269,0x4269,0x426a,0x4229,0x6b4d,0xdf1c,0xdf5c,0xdf7c,0xd77c,0xdf5c,0xe77d,0xe79e,0xe79e,0xe79e,0xdf7d,0xe79d,0xdf9e,0xdf7d,0xdf9d,0xdf9d,0xdf9d,0xe7be,0xefbe,0xe79d,0xdf7d,0xcf3c,0x7cb2,0x52cb,0x52ec,0x52eb,0x52eb,0x52ec,0x428a,0xb5f7,0xe79d,0xd79d,0xe79e,0xe79e,0xef9e,0xdf7d,0xd75d,0xef9e,0xdf7d,0xdf7d,0xdf5d,0xd75c,0xdf9e,0xdf9d,0xd75d,0xd77d,0xd75c,0xdf7d,0xdf7d,0xd73c,0xa5d8,0x5b2e,0x6b2d,0x634d,0x5b4d,0x634c,0x5b4e,0x530c,0x9d96,0xdf7d,0xdf5d,0xdf7d,0xdf7d,0xe77d,0xdf5d,0xdf5d,0xdf7d,0xe77d,0xe77d,0xdf5d,0xd75c,0xe77d,0xdf7d,0xd73c,0xd73c,0xd73c,0xd71c,0xd73c,0xcf3c,0x9db7,0x638e,0x638e,0x638d,0x636e,0x632d,0x6b4e,0x52cc,0xad96,0xe77d,0xe79e,0xefde,0xf7ff,0xefdf,0xefbe,0xef9e,0xefbe,0xe77d,0xe77d,0xe77d,0xdf7d,0xd75c,0xdf7d,0xdf5d,0xd71c,0xcefb,0xd73c,0xd75d,0xd73c,0xbe7b,0x5b6e,0x52ec,0x5b2c,0x5b0c,0x4aeb,0x4acb,0x428a,0x73ee,0xdf3c,0xdf5c,0xe75d,0xdf1c,0xdf3d,0xe75d,0xdf3d,0xdf5d,0xe75d,0xd71c,0xd71c,0xd73d,0xcf1c,0xd73c,0xdf3c,0xd73c,0xd73c,0xd73c,0xd75d,0xcf1c,0xcedb,0x73f1,0x31e9,0x4a6a,0x4a6a,0x424a,0x3a4a,0x3207,0x6c50,0xcefb,0xe77e,0xdf5d,0xdf7d,0xdf7d,0xdf5c,0xe77d,0xdf5c,0xdf7c,0xd75d,0xd71b,0xd75c,0xd77d,0xd75d,0xd73d,0xd73c,0xc73c,0xd71c,0xd73b,0xd71b,0xb638,0x4aed,0x29a7,0x31e7,0x31e7,0x31e7,0x31c8,0x2965,0x39e8,0x9514,0xadd7,0xae17,0xadd6,0xadf8,0xae38,0xadf7,0xadf6,0xae17,0xa617,0xa638,0xb659,0xbe79,0xbe79,0xc699,0xcedb,0xb679,0xb639,0xbe59,0xbe59,0xb659,0x63af,0x1104,0x2146,0x2165,0x2166,0x2966,0x1944,0x31e7,0x9d55,0xb659,0xbe9a,0xb679,0xb659,0xbe59,0xb658,0xbe79,0xadf8,0xa5d7,0xa5f8,0xa618,0xa616,0xae17,0xadf8,0xb5f8,0xa596,0xa596,0xa5b6,0xa5b6,0xad95,0x8c72,0x1884,0x1104,0x2125,0x2105,0x1905,0x1105,0x10c4,0x1924,0x9d55,0x94d3,0x8c70,0x8450,0x7c31,0x7bf0,0x7bf0,0x7c10,0x7c51,0x73ef,0x634d,0x6b6e,0x738e,0x634d,0x634d,0x738c,0x6b4d,0x5b2d,0x634d,0x5b0c,0x4aab,0x94d3,0x634e,0x0842,0x18c4,0x1082,0x84d1,0x8c93,0x0803,0x10e3,0x0903,0x1144,0x08c3,0x31e6,0x52a9,0x5ae9,0x5aea,0x5aeb, +0xd77c,0x538e,0x5aa9,0x5ac9,0x52aa,0x52c9,0x4a88,0x31a7,0x39c8,0x3a49,0x3a49,0x4209,0x72eb,0xe77d,0x4b6f,0x31a7,0x3a08,0x39e8,0x39e8,0x39e8,0x31e7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4208,0x3a08,0x3a09,0x3228,0x3a28,0x3a28,0x3a29,0x4228,0x4229,0x3a29,0x3a29,0x4a49,0x4269,0x4269,0x4249,0x4249,0x4249,0x4249,0x426a,0x426a,0x62ab,0xe73c,0x8cb2,0xadd7,0xadf7,0xae18,0xae18,0xae18,0xadf7,0xb618,0xbe59,0xb659,0xae18,0xadf8,0xbe59,0xb638,0xbe79,0xbe38,0xbe38,0xbe38,0xbe38,0xc699,0xa596,0xcefb,0x6410,0x52aa,0x52eb,0x5aec,0x3a69,0xce79,0xb5b6,0xa515,0xad96,0xb5d7,0xb5f7,0xb5f8,0xadf7,0xadd7,0xadf7,0xb618,0xadf7,0xadf7,0xb5f8,0xbe18,0xbe38,0xb638,0xb618,0xb638,0xb618,0xadd7,0xadb6,0xc699,0xcefc,0x52ec,0x73ae,0x6b8e,0x632c,0x5aec,0xe6fb,0xce7a,0xadb6,0xb5d7,0xbe18,0xb5d7,0xb5d7,0xb5b7,0xb5d7,0xb5b7,0xb5b6,0xb5b6,0xbdd7,0xbdf8,0xbe18,0xbdf7,0xbdf7,0xbdd8,0xbdf8,0xb5d7,0xbdf7,0xadb6,0xceda,0xcefc,0x5b0d,0x634d,0x632d,0x6b4e,0x5aec,0xbdd7,0xd6db,0xad76,0xad96,0xb5f7,0xb5f7,0xad96,0xb5d7,0xb5d7,0xb5f8,0xb5f8,0xb5f7,0xb5f7,0xadf8,0xadd7,0xb5d7,0xbdd7,0xb5d7,0xa596,0xadb6,0xa5b7,0xa535,0x94f3,0xefbe,0x63b0,0x52ec,0x5b0c,0x52eb,0x5acb,0x8430,0xe75c,0x9d54,0x9d55,0xadb6,0xadb6,0xad96,0xad96,0xad96,0xad95,0xad75,0xa596,0xad96,0xa576,0xad76,0xb5b6,0xa555,0xa555,0xad35,0xad55,0xa575,0xad76,0x94d3,0xdf5c,0x7c52,0x3a09,0x4a6a,0x3a29,0x3a08,0x8c91,0xd6fb,0x94d3,0xa535,0x9cf4,0xa514,0x9513,0x94f3,0x94f4,0xb5b6,0x9d34,0x94f4,0x94b3,0x9514,0x9514,0x94d4,0x9d14,0x9d35,0x8cf4,0x9514,0x8cf3,0x94f3,0x9492,0xd6fb,0x530d,0x31a7,0x39e8,0x3a08,0x31c8,0x4248,0xcedb,0x7c30,0x7c30,0x7c30,0x7c30,0x8430,0x8431,0x7c51,0x7c11,0x8431,0x8472,0x7c71,0x8c92,0x8c51,0x8c10,0x8410,0x8431,0x8471,0x8471,0x8c92,0x8492,0x73ef,0xa534,0x8493,0x18e4,0x2166,0x2946,0x2125,0x3185,0xbe58,0x6b6c,0x73ef,0x8492,0x8c92,0x7c31,0x8431,0x8431,0x7c31,0x7c51,0x7c51,0x7c71,0x84b2,0x8c72,0x8472,0x8c92,0x8452,0x8c92,0x8cd3,0x84b3,0x84b2,0x6bae,0x6b6e,0x8c53,0x10a4,0x2104,0x2105,0x2125,0x1905,0x0062,0x8c71,0x5acc,0x7c52,0x8d14,0x84f3,0x84f3,0x8cd3,0x94f4,0x8cb3,0x8492,0x84d2,0x8d14,0x8d14,0x84b3,0x84b3,0x84d3,0x7cb2,0x8cb3,0x84b2,0x7cb2,0x84f3,0x8cf4,0x6bef,0x73cf,0x3126,0x10a4,0x0862,0x8490,0x94b4,0x0823,0x18e3,0x1904,0x2125,0x10e3,0x31c5,0x5aa9,0x5ae9,0x5aea,0x62ea, +0xdf7d,0x536e,0x52a9,0x5aca,0x5aca,0x52c9,0x4a88,0x31a7,0x3a08,0x3a49,0x4229,0x4229,0x7aec,0xe77d,0x434e,0x31c7,0x3a07,0x39e8,0x31c8,0x31c7,0x31e7,0x3a07,0x3a08,0x3a28,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x41e9,0x3a28,0x3a08,0x4228,0x3a29,0x4228,0x4229,0x3a28,0x3a49,0x4269,0x4249,0x4269,0x4249,0x4249,0x424a,0x4249,0x3a69,0x3a29,0x9c51,0x9534,0xdf1c,0xe77d,0xe77d,0xe79e,0xe77d,0xe77d,0xe7be,0xe79e,0xef9d,0xf7ff,0xffff,0xffff,0xf7de,0xe79e,0xef7e,0xe79d,0xefbe,0xefbe,0xefbe,0xe79d,0xe7df,0xb5f7,0xa5d8,0x528a,0x52ec,0x52cc,0x5acb,0xf7df,0xb5f7,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xffff,0xf7ff,0xffff,0xb639,0xd71c,0x63b0,0x632c,0x634c,0x634d,0x7b8d,0xf7be,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xefff,0xf7ff,0xf7ff,0xb638,0xe77d,0x6baf,0x5b0d,0x632d,0x638e,0x5aec,0xefbe,0xa575,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7de,0xefbf,0xf7ff,0xf7ff,0xffff,0xf7ff,0xffff,0xf7df,0xf7df,0xffff,0xf7ff,0xf7ff,0xdf5d,0xadb6,0x9d76,0x4aac,0x52ec,0x52cc,0x528b,0xce79,0xa575,0xf7df,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7df,0xefdf,0xefdf,0xf7ff,0xf7ff,0xffff,0xe7de,0xe7be,0xe7de,0xe7de,0xe7de,0xefdf,0xefbe,0xe79e,0xe7be,0xe7be,0x8472,0xc69b,0x39a8,0x4a4a,0x4a6a,0x41e7,0xd699,0x6bef,0xefde,0xdf7d,0xdf7d,0xe79d,0xe79d,0xe79e,0xdf7d,0xdf5d,0xe7be,0xe79e,0xe73d,0xe75d,0xdf7d,0xd77d,0xe77c,0xdf5c,0xdf5d,0xe75d,0xe75c,0xdf3c,0xefbf,0x8472,0xbe39,0x31a7,0x39c7,0x39a7,0x2946,0x8491,0x7c10,0xbe58,0xcf3c,0xd71b,0xd73b,0xd73b,0xd73c,0xd73c,0xe77d,0xdf5c,0xcefb,0xd6fb,0xcedb,0xd71b,0xdf5c,0xd6fb,0xceda,0xceba,0xc69a,0xceba,0xc6ba,0xcefc,0x736e,0xdefd,0x1905,0x29a6,0x1986,0x10c4,0x73ad,0x6b8e,0xadd6,0xbe9a,0xb679,0xbe59,0xbe59,0xb638,0xadf7,0xb618,0xb618,0xb617,0xadf7,0xb618,0xb5d6,0xb5f7,0xb617,0xadd7,0xb5d6,0xadd7,0xadd6,0xb5d6,0xb618,0x736e,0xc65a,0x20c5,0x2105,0x20e4,0x1904,0x10e4,0x0882,0xa595,0x63ae,0x9d75,0x9514,0x9535,0x9d14,0x9d14,0x9cf4,0x9cf4,0x9d14,0x9d15,0x94b3,0x9cb2,0xad54,0x9d14,0x9534,0x94f3,0x94d3,0x94f4,0x94f3,0x94f3,0x94f3,0xb5b7,0x52ed,0x6acc,0x10c3,0x0882,0x740e,0x8cd4,0x1023,0x1904,0x1904,0x2145,0x18c3,0x29e5,0x52a8,0x5ae9,0x5b0a,0x62ea, +0xd77d,0x5b6e,0x5aca,0x52ca,0x5aca,0x4ac9,0x4248,0x39c7,0x3a29,0x422a,0x4229,0x39e9,0x7b2e,0xe79d,0x4b2d,0x31c7,0x31e7,0x39e7,0x39e8,0x41c8,0x41e8,0x39e8,0x39c8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4229,0x3a29,0x4228,0x3a29,0x4a48,0x4228,0x3a28,0x3a29,0x3228,0x3a49,0x4248,0x4a49,0x4a49,0x4229,0x4249,0x3a69,0x39e8,0xa4d3,0x8452,0xe77c,0xdf3c,0xe75c,0xdf5c,0xdf3c,0xe75c,0xe75d,0xdf7d,0xb638,0x52cc,0x6b0d,0x6b0c,0xacf3,0xefbe,0xe77d,0xe77d,0xe77d,0xef7d,0xe77d,0xe77d,0xe7ff,0xad96,0xb67a,0x3a4a,0x5b0d,0x5aec,0x72ec,0xefbe,0xdedb,0xefbe,0xe77d,0xe79e,0xef9e,0xef9e,0xef9d,0xef9d,0xd71c,0xc5d7,0xf7de,0xefbe,0xefde,0xa554,0xf7de,0xefde,0xf7bf,0xefbe,0xf7be,0xef9e,0xefbd,0xcedb,0xbe38,0x63d1,0x5b2c,0x636d,0x636d,0x83ae,0xdf5d,0xd6fa,0xefbe,0xefbe,0xf7be,0xf7be,0xf79e,0xf7be,0xf7bf,0xf7ff,0xd6bb,0x6b6e,0x5b0c,0x83ef,0xef5c,0xffbe,0xefbe,0xefbe,0xf7be,0xefbe,0xefbe,0xefbe,0xcebb,0xce79,0x73f0,0x632e,0x5aec,0x5b4d,0x630b,0xef7d,0xad96,0xefbe,0xf79e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xd6fb,0xef7c,0xefbd,0xef7d,0xf7df,0xd6da,0xe75c,0xefbe,0xef7d,0xef7d,0xef9e,0xef9d,0xef9d,0xefdf,0x8c92,0xadd8,0x4aab,0x530c,0x4b0c,0x4a6a,0xdeba,0x94f4,0xf7de,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xd6db,0xc5b6,0xce58,0xef7d,0xdf3d,0xdf5c,0xdf5d,0xe75c,0xdf5c,0xdf5d,0xdf5d,0xdf3d,0xe77d,0x8452,0xce9a,0x2987,0x4249,0x4a6a,0x4187,0xce79,0x73ef,0xe77d,0xdf1c,0xdf1c,0xd71c,0xd71c,0xdf1c,0xd6fb,0xd75d,0x840f,0xe75c,0xd6db,0xdf3c,0xb5b6,0xc638,0xd6fb,0xd6db,0xceda,0xcedb,0xd6db,0xc6ba,0xdf3d,0x7430,0xc67a,0x31a7,0x31c7,0x49c7,0x3125,0x94b1,0x424a,0xceda,0xc699,0xb5f8,0xc679,0xc679,0xc679,0xceba,0x6b2d,0x6b0b,0xd71a,0xbe59,0xbe79,0xd6bb,0x4208,0x73ef,0xc679,0xbe59,0xbe38,0xbe38,0xbe38,0xc699,0x7bf1,0xc69a,0x1905,0x2986,0x2986,0x2105,0x6b8c,0x426a,0xbe58,0xb638,0xb5f7,0xadf7,0xb5d7,0xb5f7,0xb5d6,0xbe18,0xb5d7,0xb5d7,0xadd6,0xa5f6,0xadd6,0xb5b7,0xadb6,0xa5b6,0xa5b6,0xa5b6,0xadb6,0xa596,0xadf7,0x7bb0,0xbe79,0x20e6,0x2104,0x2103,0x2124,0x2124,0x0862,0x9d95,0x5bad,0xa595,0x9d54,0x9d55,0x9554,0x9d54,0x9d34,0x9d14,0x9d55,0x6b0e,0x10c3,0x10c4,0x39a6,0x9d55,0x9514,0x9514,0x8d14,0x94f3,0x94f4,0x8d13,0x8cf3,0xa556,0x52cd,0x6b4f,0x1083,0x0081,0x7c70,0x94d5,0x0802,0x10e4,0x1904,0x1904,0x18e4,0x29c5,0x5aa9,0x5aea,0x5b0a,0x630b, +0xdf7d,0x536d,0x4aaa,0x52ca,0x5ac9,0x52c9,0x4a68,0x31a6,0x3208,0x3a49,0x422a,0x422a,0x72ed,0xdf5d,0x3acb,0x39e7,0x3a08,0x39e8,0x3a08,0x31c8,0x31e9,0x3a08,0x3a08,0x3a07,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x3a28,0x3a08,0x4229,0x4229,0x4a28,0x4229,0x3249,0x3a69,0x4249,0x3a48,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a69,0x39c8,0xb514,0x8452,0xef5d,0xd71c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xe77d,0xdf5d,0xd73d,0xdf9e,0x4a8b,0xd639,0xefbd,0xe77d,0xe77d,0xe77d,0xef9d,0xe77d,0xe77d,0xefff,0xad76,0xb69b,0x424b,0x52ec,0x52ec,0x730d,0xef7d,0xd6ba,0xf7be,0xef7e,0xef7e,0xef9e,0xf79e,0xef9e,0xef7d,0xe7df,0x7c31,0xe6fb,0xffff,0x9555,0xad55,0xf7df,0xefbe,0xf7be,0xf7be,0xf7be,0xefbe,0xefbf,0xd6fc,0xbe38,0x6bd0,0x638d,0x634e,0x636d,0x83cf,0xe75c,0xdefb,0xefbe,0xef9e,0xf7de,0xf7be,0xf7be,0xefbe,0xf7ff,0xbe39,0x6b8e,0xd6db,0xdf7d,0xbe79,0x73cf,0xdefb,0xef9e,0xef9e,0xefbe,0xefbe,0xefbe,0xf7be,0xd6fc,0xce79,0x7410,0x5b4d,0x5b2d,0x5b0c,0x6b0b,0xef9d,0xad96,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xceba,0x8430,0xf7ff,0xe77d,0xffff,0x5b4e,0xef9d,0xefbe,0xe77d,0xef9e,0xe79d,0xef9d,0xef9e,0xf7df,0x8430,0xadd8,0x426a,0x5b0c,0x5b0c,0x4249,0xd6da,0x8cb3,0xefbe,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xef9e,0x9d15,0x5aeb,0x8472,0x632d,0xf7bd,0xe73d,0xe75d,0xe75d,0xe75d,0xe77d,0xdf5c,0xe73c,0xe77d,0x8c93,0xce9a,0x3187,0x528a,0x4a8a,0x3186,0xce79,0x842f,0xe75c,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xd71b,0xd6fb,0xdf7e,0x2106,0x8c0f,0xe73d,0xe79e,0x8411,0xad54,0xdf1b,0xd6db,0xd6db,0xd6db,0xd6fb,0xd6bb,0xe75c,0x7c11,0xce5a,0x31a7,0x39e8,0x39c8,0x2945,0x8cb0,0x424a,0xd6fb,0xce9a,0xc679,0xc679,0xce9a,0xc679,0xcedb,0x39eb,0x1062,0xce98,0xc699,0xd6db,0x9494,0x0863,0x532b,0xc699,0xc659,0xbe59,0xbe59,0xbe58,0xbe79,0x7bf1,0xd6fc,0x20e6,0x31a7,0x2166,0x2105,0x5b4b,0x428b,0xc678,0xbe59,0xb5f7,0xadd7,0xb5f7,0xb5f8,0xb5f7,0xb5f7,0xb5d7,0xadd7,0xb5f7,0xa5d6,0xa5d7,0xadd7,0xadb6,0xadd7,0xadb6,0xad96,0xad96,0xad96,0xb618,0x7bd0,0xb618,0x1906,0x2925,0x2104,0x2104,0x1904,0x0061,0x9d74,0x5b6d,0xa595,0x9d54,0x9d34,0x9d34,0x9d14,0x9d34,0x9d14,0x9d96,0x2a09,0x9db6,0xb639,0x3146,0x9573,0x9534,0x9514,0x9d55,0x9514,0x9514,0x9514,0x94f4,0xad56,0x530d,0x6bb0,0x18a3,0x08a2,0x744f,0x9d35,0x0822,0x18e4,0x1104,0x1905,0x18e4,0x39c6,0x52a9,0x62ea,0x5aeb,0x5b0b, +0xdf7c,0x536d,0x52aa,0x52c9,0x5aca,0x5ac9,0x4a68,0x31c6,0x3a49,0x4229,0x4229,0x3a09,0x834e,0xdf9d,0x3aac,0x39e7,0x4229,0x3a09,0x39e8,0x31c7,0x31e8,0x3a08,0x3228,0x3208,0x39e8,0x3a08,0x3a28,0x3a08,0x3a28,0x3a28,0x3a28,0x4229,0x3a49,0x4228,0x4208,0x4229,0x3a29,0x4249,0x4228,0x4229,0x4249,0x4a49,0x4a6a,0x4249,0x4a49,0x4a6a,0x39e8,0x9cb2,0x8451,0xe73c,0xdf1b,0xdf5c,0xe73c,0xe73c,0xdf3c,0xe75c,0xe77d,0xe75d,0xe77d,0xadd7,0x6b4d,0xf7be,0xe77d,0xef7d,0xe79d,0xe77d,0xe77d,0xe77d,0xe77d,0xe7ff,0xad76,0xa67a,0x426b,0x426a,0x4acb,0x732d,0xe77d,0xd6ba,0xef9e,0xe77d,0xef7d,0xef7e,0xef9d,0xef7d,0xe77d,0xf7be,0xd75d,0x8410,0xce79,0x634d,0xffff,0xef9e,0xf7bf,0xe79e,0xf7be,0xefbe,0xef9e,0xf79e,0xd6fb,0xce79,0x6bb1,0x5b0c,0x5b0d,0x5b0d,0x8baf,0xe75d,0xd6da,0xf7be,0xefbe,0xf79e,0xefbe,0xef9e,0xefbe,0xf7ff,0x6baf,0xffff,0xefbe,0xefbe,0xf7de,0xf7ff,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7be,0xd6db,0xc659,0x6c10,0x5b2c,0x636d,0x634d,0x6aec,0xefbe,0xad96,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefdf,0x6b0c,0xef7d,0xef9e,0xcebb,0x8c51,0xf7df,0xef9e,0xe79d,0xef7e,0xef7d,0xef9e,0xe77d,0xf7df,0x8450,0xadd8,0x4a6a,0x5aeb,0x5b0c,0x4228,0xd6fa,0x8cb3,0xefbe,0xe75d,0xe77d,0xe77d,0xef7d,0xef7d,0xe77d,0xef9e,0x94f5,0xa513,0xf7ff,0x6baf,0xce78,0xe75d,0xe75d,0xe75d,0xe75c,0xdf5c,0xd73c,0xdf3c,0xe77d,0x8c72,0xd6bb,0x41a8,0x4a6a,0x4a8a,0x3187,0xce79,0x7bef,0xdf5c,0xd71c,0xdf1b,0xd71c,0xd71c,0xdf1c,0xdf3c,0xe77e,0x52ac,0x5aec,0xc638,0xf7de,0x8c73,0xad74,0xd71b,0xd6db,0xd6db,0xd6da,0xd6fa,0xceba,0xe73d,0x73f0,0xce9a,0x2966,0x39e8,0x39e8,0x2965,0x8c90,0x528b,0xd6fb,0xc67a,0xce9a,0xc699,0xc6ba,0xce9a,0xd6db,0x31ca,0x5b0e,0x630b,0xced9,0xd6bb,0x2987,0x5b2d,0x530b,0xc699,0xbe59,0xbe58,0xc639,0xbe38,0xb638,0x7bf1,0xdefc,0x18c6,0x2186,0x2186,0x2105,0x5b0b,0x3a6a,0xbe99,0xb617,0xb617,0xb617,0xb618,0xb617,0xadf7,0xadf7,0xadd7,0xb5f7,0xadd7,0xa595,0xadf6,0xb5d7,0xa5d6,0xadd7,0xb5d7,0xb5b6,0xb5d6,0xadb6,0xb5f7,0x7bf1,0xc67a,0x1906,0x2125,0x1925,0x1924,0x1904,0x0061,0xa5f6,0x5b4d,0xa5b6,0x9554,0x9d55,0x9d54,0x9d14,0x9554,0x9534,0x9534,0x9d96,0x8cf3,0xad36,0x3166,0x9553,0x94f4,0x94f4,0x94f4,0x9514,0x94f4,0x94f3,0x94f3,0xb597,0x52ec,0x7bd0,0x1082,0x08a2,0x746f,0x9d15,0x0022,0x18e4,0x10e4,0x2126,0x18e4,0x39e6,0x4ac8,0x5b0a,0x62ea,0x630a, +0xdf7c,0x4b4d,0x5aca,0x52ca,0x52ca,0x52c9,0x4a68,0x31e7,0x3a28,0x3a29,0x3a29,0x3208,0x834e,0xdfbd,0x3aed,0x31e7,0x4229,0x3a28,0x3a08,0x39e9,0x39e8,0x39e8,0x3208,0x3a08,0x3a08,0x3a08,0x4228,0x3a08,0x3a28,0x4208,0x4208,0x4229,0x4209,0x4228,0x4208,0x4228,0x4229,0x3a48,0x4249,0x3a29,0x4229,0x426a,0x3a49,0x3a49,0x428a,0x426a,0x3a08,0x9c92,0x7c51,0xe73c,0xdf3c,0xe75d,0xe75d,0xe75d,0xdf5d,0xdf5c,0xdf5d,0xdf5d,0xe7df,0x52ac,0xef5d,0xdf3d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe7df,0xad76,0xae79,0x426a,0x52cc,0x52ec,0x7b2d,0xe79e,0xd6ba,0xef9e,0xe77d,0xef9d,0xef9d,0xef7d,0xef7d,0xef9e,0xef9d,0xefff,0xb639,0x628b,0xf79e,0xf7de,0xefbe,0xf7be,0xef9e,0xefbe,0xefbe,0xefbe,0xf7be,0xd6fb,0xc638,0x6b8f,0x632d,0x634e,0x52cc,0x83af,0xd6db,0xd6da,0xef9e,0xefbe,0xefbe,0xefbe,0xef9e,0xefbe,0xefdf,0x83f0,0xffff,0xef9d,0xefbe,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xf79e,0xf7be,0xefbe,0xf7be,0xcebb,0xce7a,0x6bd0,0x5aec,0x636e,0x5b6d,0x62ec,0xef9e,0xb5b6,0xf7be,0xef9e,0xef9e,0xf79e,0xefbe,0xf79e,0xef7e,0xf7ff,0xa5b7,0xb575,0xf7ff,0x6baf,0xce79,0xefbe,0xef7e,0xef9e,0xef9e,0xef9e,0xef9e,0xef7d,0xefde,0x7c10,0xa5d7,0x4a4a,0x5acc,0x5aeb,0x4a49,0xd6da,0x8c72,0xef9d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe79d,0x9515,0x6b2d,0x9cb3,0x4aaa,0xfffe,0xe73c,0xe75c,0xe75c,0xdf5c,0xdf5c,0xdf5c,0xe73c,0xef7d,0x8493,0xce9a,0x3168,0x426a,0x4a69,0x3965,0xce58,0x73ce,0xdf5c,0xdf3c,0xdf3c,0xd71c,0xdf1c,0xdf3c,0xd71c,0xe75e,0x734e,0xdf5d,0x2925,0xef7c,0x8473,0xad75,0xdf3c,0xdefb,0xd6fb,0xd6db,0xceba,0xceda,0xd75d,0x73ef,0xd69a,0x2987,0x31c8,0x39e7,0x2145,0x8c90,0x52cb,0xceda,0xc69a,0xbe99,0xce9a,0xce9a,0xce99,0xd6fb,0x31a8,0xbe18,0x1904,0xd71a,0xad98,0x3a69,0x94d4,0x52ca,0xc699,0xbe59,0xbe79,0xbe59,0xc638,0xb638,0x8431,0xd6db,0x18e6,0x21a7,0x3166,0x2925,0x4aea,0x3a49,0xbe78,0xbe38,0xbe38,0xb5f7,0xb5f7,0xb5f7,0xb5f8,0xadf6,0xadd7,0xbe18,0x4a4a,0x1903,0xae16,0xadb7,0xadf7,0xadb6,0xadd7,0xadd6,0xadb6,0xad96,0xa5d6,0x8411,0xc69b,0x2927,0x1925,0x2104,0x2104,0x1904,0x0041,0xa595,0x5b4c,0xadb6,0x9d54,0x9d55,0x9d54,0x9d34,0x9d34,0x9d54,0x9554,0x9d34,0xa576,0x3167,0x5b4c,0x9514,0x94f4,0x9cf3,0x8d14,0x8d14,0x8cf4,0x8cf3,0x9513,0xad76,0x4acc,0x8c32,0x1082,0x10a1,0x742e,0xa515,0x0801,0x2104,0x1905,0x1925,0x18c3,0x31a6,0x52c9,0x5b0a,0x630a,0x630a, +0xdf7d,0x4b2d,0x5aca,0x52c9,0x52ca,0x52c9,0x4269,0x2986,0x4228,0x3a29,0x3a29,0x3a29,0x8b6e,0xe7be,0x3acc,0x31e8,0x3a29,0x3208,0x4208,0x3a09,0x31e8,0x39e8,0x3208,0x4209,0x39e8,0x39e8,0x31e8,0x3228,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3a08,0x3a09,0x4229,0x4209,0x4a49,0x4229,0x3a29,0x4209,0x4a49,0x428a,0x4249,0x528a,0x526b,0x39e8,0x9c92,0x8472,0xe75d,0xdf5c,0xe75d,0xe75d,0xe75d,0xe73d,0xdf3d,0xdf3c,0xef9e,0x8cd4,0xa515,0xefde,0xdf3d,0xe73d,0xe77d,0xe77d,0xe77d,0xe75d,0xef7d,0xe77d,0xefff,0xad75,0xa659,0x426a,0x4a8b,0x530c,0x7b4e,0xe79e,0xd6ba,0xef9e,0xe77d,0xef9d,0xef9e,0xef9e,0xef9d,0xefbd,0xef9e,0xefdf,0x84f5,0x5acc,0xef3c,0xefbe,0xf7be,0xefbe,0xef9e,0xef9e,0xefbe,0xefbe,0xf7be,0xcebb,0xc658,0x636f,0x5b4d,0x632d,0x5b0d,0x7baf,0xdefb,0xd6ba,0xef9e,0xef9e,0xf7be,0xefbe,0xef9e,0xef9e,0xe7bf,0x8c51,0xffff,0xef9e,0xef9d,0xe79e,0xefbe,0xf7be,0xef9e,0xefbe,0xefbe,0xefde,0xefbe,0xefbe,0xce9b,0xce9a,0x6bd0,0x62ec,0x632d,0x5b4d,0x5aab,0xef9e,0xad96,0xefbe,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xf7be,0xdfbf,0x8c52,0xf7df,0x632c,0xffff,0xef9e,0xe79d,0xef9e,0xe79e,0xef9e,0xef7d,0xe75c,0xefbe,0x7c10,0xa5b8,0x422a,0x5acc,0x52eb,0x4a49,0xd6da,0x8c92,0xef9d,0xe75d,0xef7e,0xdf5d,0xe75d,0xef7d,0xe77d,0xe79e,0x9d36,0x630d,0x9d55,0x636d,0xbdb6,0xe77d,0xe73c,0xe75d,0xe75d,0xe75c,0xdf5c,0xdf3c,0xe77d,0x7c52,0xcedb,0x2988,0x4a6a,0x4a69,0x3985,0xc638,0x73ae,0xdf3c,0xdf1c,0xdf1c,0xd71c,0xdf3c,0xd71b,0xd71c,0xdf7e,0x6b2d,0xf7ff,0x94d4,0x7bae,0x8c93,0xad94,0xdf3c,0xd6fb,0xcedb,0xd6fc,0xd71c,0xceda,0xd73c,0x7bf0,0xce7a,0x2167,0x39e8,0x39c7,0x2925,0x8c90,0x52ec,0xceda,0xc69a,0xc6da,0xceba,0xc69a,0xc699,0xd71b,0x3188,0xc658,0x6bd0,0xa534,0x6b90,0x9555,0x9494,0x52aa,0xce99,0xc659,0xbe79,0xbe79,0xbe38,0xbe58,0x8c32,0xce9a,0x2126,0x2986,0x3166,0x2124,0x532a,0x3a09,0xc678,0xc659,0xbdf8,0xbe18,0xbe19,0xb5f8,0xb5f7,0xb5d7,0xb5f7,0xadd7,0x9534,0x84d2,0xb638,0xb5b8,0xb5d7,0xb5f7,0xb5d7,0xadd7,0xadb6,0xadb7,0xad96,0x8c32,0xbe39,0x2106,0x2145,0x1904,0x1905,0x1924,0x0061,0x9534,0x536d,0xadb6,0x9d54,0x9d55,0x9d34,0x9554,0x9d34,0x9d54,0x9514,0x9d35,0x9d35,0x2166,0xa5b6,0x9514,0x9514,0x9514,0x9514,0x8d34,0x9534,0x9514,0x8d13,0x9d55,0x4acc,0x83d1,0x1083,0x1082,0x7c0e,0xa536,0x1023,0x1904,0x1924,0x1924,0x10c4,0x31a5,0x52a9,0x5aea,0x630b,0x630b, +0xd77c,0x532c,0x52a9,0x52c9,0x52ca,0x52a9,0x4269,0x21e6,0x3a48,0x3229,0x3a49,0x3a29,0x8baf,0xd79d,0x2a8b,0x31e8,0x3a08,0x39e8,0x39e8,0x3208,0x3208,0x39e8,0x39e7,0x3a08,0x41e8,0x39e8,0x31e8,0x3208,0x4207,0x4a28,0x4229,0x4209,0x4228,0x3a28,0x3a09,0x3a28,0x4229,0x4229,0x3a29,0x4249,0x4229,0x4229,0x4229,0x4229,0x4249,0x526a,0x39e8,0xa492,0x8c72,0xe75d,0xdf3c,0xdf5c,0xdf3c,0xe75d,0xe75d,0xdf5d,0xe77d,0xcefb,0x4209,0xffde,0xf7de,0xe79d,0xdf5d,0xdf7d,0xe75d,0xe77d,0xe75d,0xe75d,0xe77d,0xefff,0xad76,0xa659,0x4249,0x52ab,0x52cb,0x7b4e,0xe75d,0xd6ba,0xf7be,0xe77d,0xe79d,0xef9d,0xef9d,0xef9d,0xefbd,0xefdf,0xc69a,0x73af,0xdf7d,0x736d,0xffdf,0xf7be,0xefbe,0xef9d,0xef9d,0xef9e,0xef9d,0xef9d,0xcedb,0xc659,0x532e,0x532d,0x530c,0x5b4c,0x83cf,0xdf1c,0xd6ba,0xef9e,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xefff,0x7c52,0xe6db,0xffff,0xf7ff,0xffff,0xef5d,0xe73c,0xefbe,0xef9e,0xf79e,0xf7be,0xefbe,0xf7be,0xcebb,0xc69a,0x6bd0,0x630d,0x5b0d,0x632d,0x62ca,0xef9e,0xad55,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xe79e,0xef9e,0xef9d,0xefdf,0x7c31,0x734e,0xbdd7,0xf7fe,0xe77d,0xe77d,0xef9e,0xe79d,0xef9d,0xe77d,0xef7d,0xefbe,0x7bf0,0xa5d8,0x3a6a,0x52cb,0x52ec,0x4a29,0xdeda,0x8472,0xef9d,0xe75c,0xe77d,0xe75c,0xe77d,0xef7d,0xe75d,0xe79d,0x9d36,0x9cf3,0xf7df,0xbe79,0x52ea,0xef7d,0xe75c,0xe75c,0xe77d,0xe75c,0xe77d,0xdf5c,0xef7d,0x8492,0xc69a,0x2987,0x526a,0x4a6a,0x2965,0xc659,0x7bcf,0xe77c,0xdf1c,0xdf1c,0xdf1c,0xd71b,0xd71b,0xd71c,0xe79e,0x6b4d,0xefbd,0xf7df,0x5b4e,0x41e9,0xad53,0xe75c,0xd6db,0xdf1c,0xdefb,0xdedb,0xcedb,0xd73c,0x7c11,0xce5a,0x3188,0x39e8,0x39c7,0x2104,0x8c90,0x5b0c,0xceda,0xc6ba,0xc699,0xc699,0xc699,0xc6ba,0xcefc,0x3188,0xbe36,0xce9c,0x3988,0x4228,0xcf1a,0x8c73,0x4a8a,0xc699,0xc659,0xbe59,0xbe79,0xb658,0xbe58,0x8411,0xce9a,0x2146,0x29a7,0x2966,0x2124,0x52ea,0x3a08,0xbe57,0xb5f8,0xb618,0xb617,0xb5f8,0xb5f8,0xb5d7,0xb5f7,0xadd6,0xb5f7,0xbdd7,0xbe18,0xb5d7,0xadb7,0xadd6,0xadf7,0xb5f7,0xadb6,0xadf7,0xa5b6,0xadb6,0x7bf0,0xadf7,0x2926,0x2926,0x2925,0x1904,0x1904,0x0041,0x9534,0x536e,0xadd6,0x9d55,0x9514,0x9534,0x9d55,0x9d34,0x9d34,0x8d14,0x9514,0x9555,0x8513,0x9d55,0x9534,0x9534,0x9514,0x9514,0x94f3,0x9514,0x9514,0x8cf4,0x9d75,0x52cd,0x7b90,0x0883,0x0882,0x6bad,0x9d56,0x0823,0x18c4,0x1904,0x2164,0x18e4,0x31c5,0x4a88,0x5b0a,0x62ea,0x630a, +0xcf7d,0x4b0b,0x5aca,0x5ac9,0x5ac9,0x52c9,0x4269,0x31e7,0x3a08,0x4229,0x4249,0x31e8,0x93d0,0xd77d,0x2a8b,0x29e7,0x3a08,0x41e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31e7,0x41e8,0x4208,0x3a28,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x4228,0x3a28,0x3a49,0x3a29,0x3a28,0x422a,0x3a29,0x3a49,0x4229,0x4249,0x3a49,0x4249,0x4269,0x4a6a,0x39e9,0xa492,0x8c72,0xe77d,0xdf3c,0xe75d,0xe75d,0xdf5c,0xe75d,0xe73c,0xe7be,0x7cd3,0x4a2a,0x7b6e,0x732d,0x9cd3,0xefbe,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xefff,0xad97,0xb67a,0x424a,0x52cb,0x52ab,0x8baf,0xdf3c,0xd69a,0xefbe,0xe79d,0xe77d,0xef9d,0xef7d,0xe79d,0xe79d,0xe7be,0x634d,0xef7d,0xf7ff,0xa5d7,0xad55,0xefbd,0xef9e,0xefbe,0xef9e,0xef9e,0xef9e,0xefbe,0xd6fc,0xc659,0x536e,0x5b2d,0x5aed,0x5b0c,0x83af,0xdefb,0xd6ba,0xe79e,0xefbe,0xefbd,0xef9e,0xef9e,0xefbe,0xefbe,0xd75d,0x6b8f,0x9cb2,0xa514,0x7c31,0x8431,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xef9e,0xef9e,0xd6dc,0xce7a,0x63af,0x5b2d,0x5b2d,0x5b0c,0x62eb,0xefbe,0xa555,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef7e,0xe79d,0xbe7a,0x3a08,0xf7be,0xe75d,0xe77d,0xe77d,0xef7e,0xef7e,0xe79d,0xe77d,0xef7d,0xf7de,0x7c10,0xa5d7,0x4aab,0x5acb,0x52ec,0x424a,0xdefb,0x8492,0xe79d,0xe77d,0xdf7d,0xe77d,0xe77d,0xef7d,0xe75d,0xe79e,0x94f5,0x7bae,0xce59,0x6bae,0x8c90,0xe75d,0xe75c,0xe75c,0xe73c,0xdf3c,0xe73c,0xdf3c,0xdf7c,0x8472,0xc69a,0x2967,0x5249,0x3a49,0x2987,0xc638,0x7bef,0xe75c,0xd71b,0xd71b,0xdf1c,0xdf1b,0xd71c,0xdf1c,0xdf5e,0x6b6e,0xe79d,0xd71b,0xcebc,0x2126,0x9d53,0xd73b,0xd6fb,0xdefb,0xd6fb,0xcedb,0xceba,0xd71c,0x7c30,0xce3a,0x3188,0x39e9,0x39c7,0x3125,0x8c4f,0x52cc,0xceda,0xce99,0xc699,0xc69a,0xc6ba,0xc69a,0xd6fc,0x2967,0xadf6,0xd6dc,0x4a4a,0x636d,0xcedb,0x8473,0x4a8a,0xbe58,0xbe58,0xbe58,0xbe79,0xbe38,0xbe38,0x7c11,0xc6ba,0x2926,0x29a6,0x2986,0x2905,0x52a9,0x4249,0xbe58,0xb618,0xb618,0xb618,0xb618,0xb5f8,0xb5d7,0xb5f7,0xadf7,0xadf7,0xb5d7,0xb5f7,0xadd7,0xb5d7,0xadd7,0xadd6,0xadb6,0xa5b6,0xadd7,0xadb6,0xa5b6,0x7c11,0xadd7,0x3127,0x2125,0x1904,0x1905,0x1905,0x0021,0x9554,0x5b4d,0xadb6,0x9d55,0xa535,0x9d75,0x9d55,0x9d34,0x9d34,0x9d14,0x9d35,0x9d35,0x4269,0x9d34,0x9cf4,0x9514,0x9514,0x9514,0x94f3,0x9514,0x8d14,0x8cf3,0xad76,0x52cc,0x8411,0x18a3,0x08a3,0x5b4c,0xa597,0x1023,0x18e4,0x2104,0x2965,0x1104,0x21c5,0x4a88,0x52ea,0x5aea,0x630a, +0xd77d,0x4b0c,0x5aca,0x62c9,0x52c9,0x52c9,0x4a69,0x31c7,0x3a08,0x3a28,0x3a49,0x29e8,0x9410,0xdf7d,0x2a6b,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39c7,0x39e7,0x3207,0x31e8,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x4229,0x3a28,0x3a28,0x3208,0x3a29,0x4228,0x3a49,0x3a09,0x3a29,0x3a08,0x4249,0x3a49,0x3a49,0x3a49,0x4a69,0x39e9,0x9c71,0x94f3,0xe73c,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xdf5c,0xdf5d,0xd73c,0xcf1b,0xcf3c,0xcf3c,0xdf3c,0xefbe,0xe75c,0xe75d,0xe77d,0xe75d,0xe77d,0xe79d,0xefff,0xad97,0xb639,0x422a,0x52cb,0x4acc,0x834d,0xdf5c,0xce99,0xe79d,0xe77c,0xe77d,0xe79d,0xe77d,0xe77d,0xe79e,0xcefb,0xb5f6,0xf7de,0xe79e,0xefdf,0xa595,0xe79d,0xefbe,0xefbe,0xef9e,0xefbe,0xe79e,0xf79e,0xc6db,0xc67a,0x5b4f,0x5b0d,0x5b0c,0x52ec,0x7b4e,0xdf1c,0xd6ba,0xef9e,0xefbe,0xefbe,0xefbe,0xef9e,0xefbe,0xefbe,0xf7de,0xefff,0xb69a,0xa5b6,0xceda,0xffff,0xefbe,0xefbe,0xef9e,0xef9e,0xefbe,0xf7bf,0xefbe,0xc69a,0xcebb,0x638f,0x530c,0x5b4d,0x5b0c,0x5aca,0xf7be,0xad75,0xefde,0xef9e,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xef9d,0xe79d,0xdfbe,0x9d35,0xefbe,0xe79d,0xe79d,0xef9d,0xef7d,0xe77d,0xef7d,0xef9e,0xef7d,0xf7be,0x8451,0xadb7,0x426a,0x52cb,0x52cb,0x52ab,0xd6da,0x94d3,0xf7be,0xe77d,0xe75d,0xe75c,0xe75c,0xe75d,0xe75c,0xe77d,0xa5b7,0x5b4e,0x5b4d,0x8cd3,0xf7ff,0xdf3c,0xdf5c,0xdf3c,0xdf3c,0xdf3c,0xdf1c,0xd73c,0xdf5c,0x8472,0xc67a,0x2968,0x4a6a,0x3a09,0x2986,0xc679,0x6b8e,0xdf5c,0xd71c,0xd71b,0xd6fb,0xdefc,0xd6db,0xd6fb,0xd6fc,0x9554,0xdf5c,0xd6fa,0xd6fb,0xb618,0xbe78,0xcefa,0xcefb,0xd6fb,0xd6db,0xcedb,0xcedb,0xdf1c,0x7bf1,0xc5f9,0x3187,0x39e8,0x31c8,0x2925,0x7c4f,0x634d,0xceba,0xc679,0xce79,0xce99,0xce99,0xc67a,0xc69a,0x9535,0xbe58,0xbe79,0xa5d7,0xadf7,0xce9a,0xa5d7,0x9555,0xbe58,0xc659,0xc638,0xc658,0xbe58,0xc679,0x7bf0,0xc69a,0x2905,0x2986,0x3186,0x3145,0x4248,0x4a8b,0xbe18,0xb618,0xb5f8,0xb617,0xbdf7,0xb617,0xb5f7,0xbdf7,0xb5f8,0xb5f7,0xadd7,0xadd7,0xadf7,0xb5f7,0xb5f7,0xadd7,0xa5b6,0xa5b7,0xadb6,0xa5b6,0xb637,0x7bf0,0xadf7,0x2106,0x2125,0x1904,0x1124,0x1124,0x0041,0x8cf3,0x52aa,0xb5d6,0xad76,0xa555,0xa555,0xa555,0xa575,0x9d54,0x9d55,0xa555,0x9d34,0xa575,0x9d34,0x9514,0x9d14,0x9d35,0x9d74,0x9d14,0x9d34,0x9d15,0xa514,0xa555,0x52ec,0x83d1,0x10a3,0x10a3,0x536c,0xad97,0x1043,0x1904,0x1124,0x2945,0x20e3,0x29e6,0x4aa8,0x5b09,0x5aea,0x5b0a, +0xcf5c,0x42eb,0x52c9,0x5ae9,0x52ca,0x52c9,0x4a69,0x31a7,0x4229,0x3a49,0x3a29,0x3a08,0x9410,0xd77d,0x2229,0x31e8,0x31e9,0x39e8,0x39e7,0x3208,0x3209,0x31c8,0x31c8,0x39c8,0x3a08,0x39e8,0x3a08,0x3208,0x3228,0x31e8,0x4208,0x4a29,0x4249,0x3a28,0x3a29,0x4209,0x4209,0x4a28,0x3a28,0x3a29,0x3a48,0x4249,0x4249,0x4249,0x3a28,0x4229,0x4229,0x836e,0xbe79,0xa555,0xd69a,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd6fa,0xdefb,0xe71c,0xe71c,0xdefb,0xe6fb,0xe71b,0xdf1b,0xdf1c,0xdf1c,0xdf1b,0xe71b,0xe73c,0xdf1c,0x94f4,0xcebb,0x5baf,0x4a8a,0x4aab,0x4aab,0x62cc,0xef7d,0xbe18,0xef9d,0xf7de,0xf7bd,0xf7de,0xf7fe,0xffff,0xffff,0xf7df,0xffff,0xffff,0xf7df,0xffff,0xffff,0xf7ff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffdf,0xa556,0xef7e,0x4aec,0x632d,0x5aec,0x630d,0x7aec,0xf7de,0xc638,0xf7df,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa5d6,0xefbe,0x636e,0x5b2c,0x632d,0x632d,0x5aab,0xef5c,0xb638,0xef7d,0xffff,0xffff,0xffff,0xf7de,0xf7fe,0xf7fe,0xf7de,0xf7df,0xffff,0xffff,0xffdf,0xf7fe,0xfffe,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd679,0xbe38,0x9d14,0x4aab,0x5b0d,0x52eb,0x52ab,0xc5f7,0xb5b7,0xdf1b,0xffbe,0xf7be,0xf7de,0xf7de,0xf7df,0xf7be,0xffde,0xffff,0xf7ff,0xf7ff,0xf7df,0xf79e,0xef9e,0xf79e,0xef7d,0xef9d,0xef9d,0xef9d,0xef9d,0xe73c,0x9d14,0xc65a,0x31c8,0x4a6a,0x426a,0x39a7,0xc5f7,0x7c50,0xdefb,0xe73c,0xe75c,0xe75d,0xe75c,0xef9d,0xef9d,0xe75d,0xdf5c,0xdf3c,0xdefb,0xdf1b,0xe73b,0xdf3b,0xdf1b,0xe73c,0xdf1b,0xdf1b,0xd6fb,0xd6fb,0xce79,0x94f4,0xb557,0x31a7,0x31c7,0x31e7,0x2987,0x6b8d,0xa515,0xad34,0xdefb,0xdf3c,0xdf1b,0xdf3b,0xdefb,0xdedb,0xdefb,0xdefb,0xdf1b,0xdefb,0xd6db,0xd6db,0xce9a,0xce7a,0xce9a,0xceba,0xce99,0xce59,0xce59,0xc5f7,0x73af,0xce7b,0x18c5,0x3186,0x2945,0x2165,0x2986,0xad55,0x736e,0xbdf7,0xc658,0xbe37,0xbdd7,0xb5f7,0xbdf7,0xbdb6,0xb5f7,0xb5d7,0xad96,0xb5b7,0xb5b7,0xad95,0x9cf3,0xa535,0x94f4,0x9d14,0xa514,0x9cf3,0x8410,0x6b6e,0xad36,0x18c4,0x1924,0x1104,0x1904,0x1925,0x1082,0x5b2b,0x6b6e,0x424a,0x73af,0x736d,0x6b4d,0x6b4d,0x638d,0x634d,0x634d,0x634d,0x630c,0x528a,0x5aaa,0x5aec,0x4a69,0x528a,0x52aa,0x4a8a,0x4a8a,0x528a,0x4269,0x42aa,0x8451,0x3968,0x08a4,0x10c3,0x532a,0xa597,0x1043,0x1904,0x1124,0x2125,0x20c3,0x3185,0x4a87,0x52e9,0x5aea,0x5b0a, +0xcf5c,0x430c,0x52c9,0x5ac9,0x52ca,0x52ca,0x4a49,0x3186,0x4a49,0x4249,0x3a29,0x3a49,0x9c10,0xd77c,0x224a,0x31c7,0x3a09,0x3208,0x31e7,0x3208,0x39e8,0x31e7,0x31c8,0x31e8,0x39e8,0x3a07,0x3208,0x31e8,0x3a08,0x3a08,0x3a28,0x4229,0x4228,0x3a08,0x3a29,0x3a08,0x4209,0x41e7,0x3a48,0x3a08,0x4229,0x4228,0x4a49,0x4208,0x4208,0x4a4a,0x426a,0x526a,0xa4b3,0xc679,0xb5d6,0xad96,0xad96,0xadb6,0xb5d8,0xadd7,0xadd7,0xadb7,0xad97,0xadb7,0xb5f7,0xbe17,0xbdf7,0xbe18,0xbe18,0xb618,0xbe18,0xbe58,0xbe58,0xdf1c,0xb5d7,0x3a29,0x4aab,0x52cb,0x52cb,0x4a6a,0xb4d3,0xe75d,0xbe38,0xc638,0xbdf7,0xbdf7,0xbdf7,0xc618,0xb617,0xbdf7,0xbdf7,0xc638,0xbdf8,0xbe18,0xb5b7,0xbdf8,0xbe18,0xbdf7,0xbe18,0xbdf8,0xbe18,0xbe18,0xef5d,0xad97,0x4acb,0x630c,0x62ec,0x630c,0x5aab,0xb535,0xe73c,0xb5f7,0xb5b7,0xb5d7,0xb5d7,0xadb6,0xadb6,0xa596,0xad96,0xb5b6,0xb596,0xb5b6,0xb5b6,0xadb6,0xad96,0xad96,0xb5b6,0xbdd7,0xbdb7,0xbdf7,0xadb6,0xdf3c,0xc618,0x5b0c,0x5b0c,0x630d,0x5b2d,0x52ab,0x7bae,0xf7be,0xb5f7,0xad55,0xb575,0xb596,0xb596,0xb5b7,0xb5b6,0xb595,0xb596,0xbdb7,0xbd96,0xad96,0xad75,0xa535,0xa556,0xa555,0x9d55,0x9d14,0x94d4,0x9cf4,0xbdf7,0xd6bb,0x5aab,0x5acb,0x5acb,0x5aeb,0x4acb,0x52cb,0xdedb,0xbe17,0xad96,0xad96,0xad96,0xa5b6,0xa596,0xa575,0xa555,0x9d35,0xa554,0xa554,0xa555,0xa555,0x9d14,0xa555,0xad55,0xa534,0x9d34,0x94f4,0xa534,0xa595,0xe75d,0x632e,0x4229,0x4a49,0x4249,0x4a4a,0x5269,0xdf7c,0xb5d7,0xad35,0xa514,0xa514,0xa534,0xad35,0xa514,0x9cd4,0x9d14,0x9cd4,0xa4f4,0x9cf3,0x9cf3,0x9d14,0x9514,0x94f4,0x94f4,0x9cf4,0x9cf4,0x94b2,0xad75,0xd69b,0x3147,0x41e7,0x39c7,0x31e7,0x31c8,0x31a6,0xce79,0xa535,0x8c92,0x84d3,0x84b3,0x7c30,0x7c51,0x8431,0x8431,0x7c30,0x8c71,0x8471,0x8c71,0x8450,0x8450,0x8470,0x8451,0x7c10,0x7c10,0x7c10,0x7430,0x8491,0xbdf8,0x524b,0x2146,0x2166,0x2145,0x2985,0x2104,0x8451,0xbdb7,0x7bd0,0x8431,0x7bef,0x7bf0,0x8410,0x83f0,0x8c72,0x73d0,0x73f0,0x7c11,0x7bf0,0x73af,0x7bf0,0x9491,0x7c51,0x8451,0x8c51,0x8410,0x740f,0x8492,0x9d14,0x3987,0x18c4,0x1905,0x1924,0x1904,0x1105,0x1904,0x18a2,0x736e,0x94f3,0x7c30,0x8430,0x8410,0x7bcf,0x73cf,0x73ae,0x7baf,0x8410,0x7c10,0x8471,0x8430,0x73cf,0x7c31,0x8471,0x8451,0x8430,0x83f0,0x8c31,0x8c71,0x8c93,0x522a,0x1063,0x1904,0x10c2,0x4b2a,0xadb7,0x1043,0x10e5,0x1925,0x1945,0x1905,0x2186,0x4288,0x52ea,0x5aea,0x530a, +0xcf5c,0x4b0b,0x4aa8,0x52c9,0x52c9,0x52a9,0x4a48,0x3186,0x4249,0x4249,0x3228,0x3209,0x9c31,0xcf3c,0x2a6a,0x31e7,0x4a29,0x41e8,0x3a08,0x3208,0x39e8,0x39e8,0x39e8,0x41e8,0x39e7,0x31e7,0x3208,0x31e8,0x3208,0x3a08,0x3a08,0x4228,0x4249,0x3a28,0x4229,0x4209,0x3a29,0x4249,0x3a49,0x4229,0x4229,0x3a49,0x4249,0x4229,0x4a49,0x4249,0x4229,0x424a,0x39c8,0x522a,0x526a,0x5a8a,0x62ab,0x5aab,0x62ab,0x62ec,0x6b0d,0x62ec,0x62cc,0x6aec,0x732d,0x732d,0x730d,0x734e,0x736e,0x6b2d,0x7b4d,0x736d,0x630c,0x4a6a,0x4a29,0x526a,0x528b,0x52aa,0x428b,0x4a8b,0x4a4a,0x732c,0xacf4,0xad14,0xacf4,0xad14,0xad35,0xb535,0xa514,0xad35,0xad55,0xa514,0xb535,0xa4f4,0xad35,0xad14,0xb534,0xbd55,0xad35,0xa4f4,0xb535,0xb515,0x6b4e,0x4aab,0x5b2c,0x530c,0x530c,0x52ec,0x530c,0x5a8a,0x83cf,0xc5b6,0xce37,0xc5f7,0xce38,0xc5f7,0xc617,0xce38,0xce18,0xc5f8,0xc5f8,0xc638,0xce59,0xd67a,0xdeba,0xd699,0xce58,0xce59,0xd6ba,0xd69a,0xc5f8,0x8c72,0x424a,0x6b0d,0x630c,0x52ec,0x5b2d,0x5b0c,0x52ab,0x5aab,0xacb3,0xbd55,0xbd76,0xbd76,0xbd96,0xbdb6,0xb534,0xb555,0xbd76,0xad35,0xad14,0xb575,0xa514,0xad14,0xa4f3,0xa4f3,0x9cf3,0xa514,0xad34,0xa4f4,0x8411,0x39e9,0x52ab,0x52cb,0x52aa,0x5aab,0x5aab,0x52cb,0x5269,0xad14,0xb576,0xb555,0xb596,0xb576,0xb576,0xad35,0xad55,0xbd96,0xb595,0xb596,0xb5b6,0xb596,0xad75,0xad55,0xad14,0xa534,0xad54,0xb595,0xad54,0x8c52,0x4a4a,0x3208,0x4249,0x4229,0x4249,0x4a29,0x4a29,0x41c7,0x83d0,0x9492,0x9cf3,0x9cf3,0x9cd3,0x94f3,0x9cf4,0x94b3,0x9472,0x9491,0x9471,0x8411,0x8c52,0x8c72,0x8c52,0x8c72,0x8c51,0x9451,0x9451,0x9471,0x7b0c,0x3987,0x2986,0x31e7,0x31c7,0x29c8,0x31a7,0x39c6,0x2944,0x736d,0x9c92,0x9c71,0x9451,0x9451,0x9450,0x8c30,0x9471,0x840f,0x8c10,0x8bf0,0x8bf0,0x83af,0x83ae,0x8bae,0x7b4d,0x734e,0x736e,0x736d,0x736d,0x62cb,0x3926,0x2925,0x2966,0x2166,0x2166,0x2966,0x3166,0x10c2,0x3166,0x5a8a,0x6b0c,0x6acb,0x5aaa,0x5aaa,0x5a6a,0x6249,0x5209,0x49c8,0x41c8,0x39c7,0x39a7,0x3986,0x3146,0x3925,0x2904,0x28e4,0x28e3,0x28e3,0x20c3,0x10a2,0x18e4,0x1904,0x20e4,0x1904,0x2105,0x18e4,0x2104,0x1924,0x1882,0x1841,0x1021,0x1021,0x1021,0x1020,0x1000,0x0821,0x0801,0x1001,0x0820,0x1021,0x0821,0x1021,0x1001,0x1021,0x1061,0x1042,0x1021,0x0801,0x0821,0x1062,0x18a3,0x18e4,0x18e4,0x10a2,0x4ae9,0xb5b7,0x1064,0x10e4,0x1904,0x2165,0x1905,0x29c5,0x4288,0x52ca,0x52ea,0x52ea, +0xcf7c,0x4aeb,0x52c9,0x5ac9,0x52a9,0x52ca,0x4a48,0x31a5,0x3a28,0x3a49,0x3a28,0x424a,0x9411,0xcf5c,0x2a4a,0x31e7,0x3a08,0x39e8,0x39e8,0x3208,0x39e7,0x39c8,0x31e8,0x39e8,0x31e8,0x31e8,0x31c7,0x3208,0x3208,0x3a08,0x3a09,0x3a08,0x4248,0x3208,0x3a08,0x3a29,0x3a29,0x4229,0x3a49,0x3a48,0x3a28,0x3a49,0x3a69,0x3a08,0x4228,0x4209,0x4249,0x4249,0x4249,0x424a,0x4249,0x424a,0x4249,0x3a6a,0x4229,0x422a,0x424a,0x424a,0x4a49,0x4229,0x4249,0x426a,0x3a4a,0x426a,0x4a69,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x428a,0x4aaa,0x4a8a,0x52ab,0x52ab,0x4aab,0x52ab,0x52cb,0x528b,0x524b,0x528b,0x52ab,0x426a,0x4a6a,0x528a,0x52ab,0x4a8b,0x4a6a,0x526b,0x528b,0x4a8b,0x528b,0x52ac,0x4a8a,0x4a6a,0x52ab,0x52aa,0x5acb,0x4a8a,0x52ec,0x632c,0x5b0c,0x5b0d,0x530b,0x5b0c,0x52eb,0x5aec,0x630d,0x5aab,0x52eb,0x4a8a,0x5b0c,0x5aeb,0x5acb,0x5aeb,0x630b,0x52cc,0x52ac,0x5acb,0x62ec,0x62cd,0x62cc,0x630c,0x5acb,0x52ed,0x42ac,0x4acc,0x52cb,0x5b0b,0x530c,0x4aeb,0x52eb,0x5b0c,0x5b0d,0x52ec,0x52eb,0x5aec,0x52cb,0x4aab,0x528b,0x4a8b,0x4a8b,0x52cb,0x528a,0x52cb,0x4aca,0x52ab,0x52cb,0x4a8a,0x4a8b,0x4a8b,0x4aab,0x52ca,0x4a8b,0x428a,0x528b,0x4a4a,0x4a6b,0x52ab,0x52ab,0x4aaa,0x4a6a,0x52cb,0x4a6a,0x52ab,0x528a,0x4249,0x4a2a,0x4a29,0x3a49,0x3a4a,0x4209,0x4229,0x4209,0x4229,0x424a,0x4208,0x41e8,0x41e8,0x4209,0x41e9,0x41e8,0x3a07,0x41e8,0x39e8,0x3208,0x31e8,0x424a,0x426a,0x4228,0x3a29,0x4249,0x4228,0x4249,0x3a28,0x3a09,0x31a7,0x31a6,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x39c8,0x31a7,0x31c7,0x29a7,0x3187,0x2967,0x3186,0x3166,0x3986,0x3186,0x29a7,0x2986,0x39e7,0x39e8,0x31c7,0x31e8,0x29c7,0x29a7,0x31a7,0x31a7,0x31c6,0x2985,0x2965,0x2965,0x3145,0x2945,0x2965,0x2145,0x2145,0x2944,0x2124,0x2105,0x2105,0x3125,0x2104,0x2124,0x2945,0x3125,0x2925,0x2126,0x2125,0x2944,0x3146,0x3166,0x2186,0x2186,0x2166,0x2166,0x2165,0x2945,0x2105,0x2105,0x1904,0x1904,0x10e3,0x2105,0x2104,0x2124,0x2105,0x1924,0x1944,0x2124,0x2104,0x1924,0x2124,0x1924,0x1924,0x1904,0x1905,0x2905,0x1904,0x1924,0x2125,0x18e4,0x18e5,0x20e3,0x18e4,0x18e4,0x2104,0x18e5,0x1904,0x2104,0x1904,0x10e4,0x1104,0x18e4,0x18e4,0x1103,0x18e4,0x18e5,0x18c4,0x10e4,0x10e4,0x18c3,0x18c3,0x18c3,0x18e4,0x10e3,0x18e3,0x20e3,0x10e2,0x18e3,0x10c4,0x18c4,0x10e3,0x18a2,0x3a88,0xad96,0x1064,0x18e4,0x1104,0x2125,0x18e4,0x2185,0x4a68,0x52ca,0x5aea,0x5aea, +0xcf5c,0x42ca,0x52c9,0x5ac9,0x52c9,0x52c9,0x3a48,0x29a6,0x3a48,0x3a69,0x3229,0x3a09,0x9c31,0xcf5d,0x3229,0x31e7,0x3a08,0x39e8,0x39e8,0x3208,0x3207,0x3a08,0x39c8,0x31c7,0x3208,0x3a08,0x39e8,0x39e8,0x3208,0x3a08,0x3a08,0x31e7,0x4228,0x3229,0x3a49,0x3a28,0x3209,0x39e7,0x3a28,0x3a49,0x4249,0x3a29,0x3a28,0x3a49,0x3a49,0x4229,0x4249,0x4a49,0x4269,0x3a49,0x4a69,0x424a,0x4a6a,0x4a6a,0x4a4a,0x526b,0x4a6a,0x4269,0x426a,0x426a,0x4a8a,0x4aab,0x4aab,0x4aab,0x4aab,0x4aaa,0x528b,0x528a,0x4aab,0x4aaa,0x528a,0x528a,0x3a6a,0x4aab,0x4aab,0x4a8b,0x52ab,0x5aac,0x52ac,0x5acc,0x52ab,0x52ec,0x52cc,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x52ac,0x52cc,0x4acc,0x52cc,0x52cc,0x4acb,0x4aeb,0x52ec,0x52eb,0x52cc,0x52eb,0x5aeb,0x5aec,0x5aec,0x52ec,0x5aec,0x52eb,0x52ec,0x5b2c,0x532c,0x5aec,0x632d,0x5b0d,0x5b2c,0x630d,0x5b0c,0x530c,0x5b2d,0x5b2c,0x5b0c,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b0c,0x5b0d,0x630c,0x5aec,0x5b2c,0x530c,0x530c,0x530c,0x530c,0x52eb,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x530c,0x5b0c,0x5aec,0x62eb,0x5aeb,0x5b0c,0x5aec,0x52ec,0x52ec,0x52cc,0x52ec,0x52ec,0x52cb,0x52cc,0x52ac,0x52cb,0x5acc,0x52cc,0x52ab,0x528b,0x4aab,0x4aab,0x528b,0x426a,0x4a8b,0x4aab,0x5acb,0x4aaa,0x4a8a,0x4aaa,0x4aaa,0x528b,0x528a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x428a,0x4a8a,0x4a8a,0x4a6a,0x3a4a,0x3a49,0x4269,0x4249,0x3a49,0x3a69,0x4208,0x4229,0x3a49,0x3a29,0x3a29,0x4229,0x39e9,0x3a29,0x3a28,0x39e8,0x4a29,0x3a09,0x3228,0x3208,0x3a08,0x39e8,0x3a28,0x3a08,0x4207,0x3a08,0x3a08,0x3a08,0x31e7,0x3a08,0x31e7,0x31c7,0x3208,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x31a7,0x39a7,0x31c6,0x39c6,0x31a7,0x3186,0x31a7,0x31a7,0x2987,0x3186,0x2987,0x3187,0x3187,0x29a7,0x2986,0x3186,0x3187,0x3186,0x2986,0x2966,0x2946,0x3166,0x2966,0x2965,0x2965,0x2166,0x2966,0x2945,0x2944,0x2165,0x2965,0x1945,0x2945,0x21a6,0x2145,0x2126,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2125,0x2125,0x2145,0x2124,0x1944,0x1924,0x2105,0x20e4,0x2104,0x1924,0x1904,0x20e5,0x2104,0x1924,0x18e4,0x10e4,0x10e4,0x1104,0x18e5,0x18e4,0x18c4,0x18c5,0x10e4,0x0904,0x1104,0x10e3,0x1903,0x18e3,0x18c4,0x1904,0x18c4,0x10e4,0x10e2,0x18c3,0x18a3,0x10e3,0x08e3,0x08c3,0x20e4,0x08c3,0x10c3,0x10e3,0x10a4,0x10c3,0x18a2,0x3a88,0xad96,0x1085,0x10e3,0x1904,0x2145,0x18e5,0x2985,0x4267,0x52c9,0x5aca,0x5aea, +0xcf7c,0x42cb,0x52c9,0x52c9,0x52ca,0x5ae9,0x4229,0x2985,0x3a29,0x4248,0x3a49,0x4209,0xa472,0xcf5c,0x2a09,0x31c7,0x4208,0x31e8,0x39e8,0x31c7,0x31e7,0x39e7,0x31e8,0x39e7,0x3a08,0x3a08,0x31e7,0x29e7,0x31e7,0x3a08,0x3208,0x2a08,0x3a08,0x3a29,0x39e9,0x3a49,0x3a49,0x3a28,0x3a28,0x3a29,0x4a29,0x4229,0x4229,0x4228,0x4a29,0x4a29,0x4269,0x4269,0x3a49,0x3a09,0x4a49,0x4269,0x4a6a,0x4a2a,0x4a4a,0x526b,0x4a49,0x4a49,0x4249,0x3a6a,0x4a6a,0x4a8b,0x4a8a,0x4a4b,0x428b,0x428a,0x4aab,0x4a8a,0x528a,0x4aaa,0x4a6a,0x4a8a,0x4a8b,0x4a8a,0x4aab,0x4acb,0x528a,0x528a,0x52ab,0x5acb,0x528b,0x52cb,0x52ab,0x52ab,0x4aab,0x52cb,0x52cb,0x52cb,0x4acb,0x4aab,0x4acc,0x4acb,0x52eb,0x530c,0x52cb,0x52cc,0x52eb,0x52cb,0x4aeb,0x4acb,0x52ec,0x5aec,0x5aec,0x5aec,0x52ec,0x5b0c,0x52ec,0x4aec,0x52cc,0x5b2d,0x530d,0x530c,0x5b2c,0x632d,0x5b2d,0x52ec,0x5b0d,0x5b2c,0x5b0c,0x5aed,0x52ec,0x5aec,0x5b0c,0x52ab,0x5acc,0x52ec,0x530c,0x530c,0x52ec,0x530c,0x5b2c,0x630c,0x52ec,0x52ec,0x630c,0x5b0c,0x5b0c,0x630d,0x5b0c,0x5b0c,0x52ec,0x5b2c,0x5aec,0x5b0d,0x52ec,0x52ac,0x52cc,0x5aac,0x4aab,0x4acb,0x52cb,0x52ac,0x52ab,0x52cb,0x4a8b,0x4aab,0x52ab,0x4a8a,0x4aab,0x52ab,0x4a8b,0x4aaa,0x52aa,0x52cb,0x528b,0x4aab,0x4a8a,0x52cb,0x52ab,0x526a,0x4a8a,0x42a9,0x4a8a,0x4aaa,0x4aaa,0x4a8a,0x426a,0x428a,0x426a,0x4a8a,0x428a,0x4229,0x3a4a,0x4249,0x4229,0x4249,0x4249,0x4249,0x4249,0x424a,0x4249,0x4249,0x4249,0x3a29,0x4229,0x4229,0x4229,0x3a08,0x4a28,0x3a08,0x3a28,0x3a08,0x39e8,0x4229,0x4208,0x31c8,0x3a07,0x3a08,0x39e8,0x39a7,0x31e7,0x31c7,0x39e7,0x39e7,0x31e8,0x31e8,0x29c7,0x29a6,0x31c7,0x31c8,0x39a8,0x39c7,0x31a7,0x31c7,0x29c6,0x29a7,0x3186,0x3186,0x31a7,0x2986,0x3186,0x2987,0x31c7,0x31a6,0x3187,0x3186,0x2986,0x3185,0x29a5,0x2186,0x2966,0x3186,0x2986,0x2966,0x2946,0x2946,0x2165,0x2165,0x2165,0x2945,0x2145,0x2145,0x2125,0x1925,0x1945,0x2146,0x2145,0x2125,0x1925,0x1925,0x1925,0x2125,0x2125,0x1925,0x1925,0x2925,0x2104,0x2104,0x2125,0x1905,0x2104,0x1903,0x1904,0x18e4,0x2105,0x20e4,0x1103,0x1104,0x1905,0x1924,0x1903,0x1904,0x10e4,0x18e5,0x10e4,0x18e4,0x18e4,0x20e4,0x20c3,0x20c3,0x10c4,0x18c3,0x18e3,0x18e3,0x10e3,0x08c3,0x18e4,0x10e3,0x10e3,0x10c2,0x10e3,0x10e3,0x18c4,0x18c3,0x10c4,0x10a4,0x18c3,0x1083,0x3a88,0xb5f7,0x1084,0x18e3,0x1904,0x2165,0x1925,0x2164,0x4a67,0x52c9,0x5ac9,0x5aea, +0xcf5c,0x4aca,0x52c9,0x52ca,0x52ca,0x52a9,0x3a48,0x2986,0x422a,0x4249,0x3a49,0x3a09,0xa492,0xc73c,0x2a09,0x3a08,0x4229,0x39e8,0x31e8,0x39c8,0x3a08,0x31e7,0x3207,0x39e7,0x3208,0x3a08,0x31c7,0x31e8,0x39e8,0x31e8,0x3207,0x3208,0x3a08,0x3a08,0x31e8,0x3a48,0x3a28,0x3a29,0x3a49,0x3a28,0x4229,0x3229,0x3a28,0x4248,0x4a29,0x4a49,0x4249,0x3a29,0x4a49,0x4a6a,0x4a49,0x4a69,0x424a,0x4a6a,0x426a,0x3a69,0x426a,0x424a,0x3a49,0x4289,0x426a,0x4a6a,0x4a6a,0x4a8b,0x4a8b,0x4a8b,0x428a,0x4a8a,0x4a69,0x528a,0x528a,0x4a8b,0x4a8a,0x4a8a,0x4aaa,0x52ab,0x52ab,0x528a,0x5aab,0x52cb,0x52cb,0x52cb,0x52cb,0x52aa,0x52ab,0x52ac,0x52cb,0x52cb,0x52cb,0x4aac,0x52ac,0x4acb,0x52eb,0x52cb,0x52cb,0x5aec,0x5acc,0x52cc,0x4aeb,0x4aeb,0x530b,0x5aeb,0x5aec,0x52ec,0x52ec,0x52ec,0x52ab,0x52cb,0x5aeb,0x530b,0x52ec,0x5b0c,0x632c,0x5aec,0x630c,0x5aed,0x52cc,0x530c,0x5b2d,0x52ec,0x5aec,0x5aec,0x52ec,0x5acd,0x52ec,0x530d,0x5b0d,0x630c,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x5aec,0x5b0d,0x5b0c,0x5aec,0x5b0c,0x52ec,0x52ec,0x5b0c,0x5b0d,0x5b0d,0x5aec,0x52ec,0x4aec,0x530c,0x52ab,0x4acb,0x4aab,0x52cc,0x52cb,0x52ab,0x4a8a,0x52cb,0x52ab,0x528b,0x528b,0x528b,0x4a6b,0x4a6b,0x52ab,0x4a8a,0x52ab,0x52ab,0x4a8b,0x52aa,0x52aa,0x4a8b,0x428b,0x4a6a,0x528a,0x4aaa,0x4a8a,0x528b,0x52ab,0x4a6a,0x428a,0x4a6a,0x4a6a,0x426a,0x426a,0x4a49,0x424a,0x4a69,0x3a49,0x3a49,0x4249,0x4249,0x4269,0x424a,0x3a48,0x4249,0x3a08,0x4229,0x4209,0x3a08,0x3a09,0x3a29,0x4228,0x3a28,0x3208,0x3208,0x3a08,0x3a08,0x3a08,0x39e9,0x39e7,0x4208,0x39e8,0x39e8,0x31e8,0x39e8,0x39c8,0x39c7,0x39e7,0x29a7,0x31a7,0x31e7,0x31c7,0x31c7,0x3166,0x31c7,0x2986,0x39a6,0x29a6,0x2986,0x31a6,0x39a7,0x31a7,0x3187,0x31c7,0x2987,0x3187,0x31a7,0x2166,0x3186,0x3166,0x2986,0x2986,0x2986,0x2966,0x2985,0x2186,0x2165,0x2146,0x2146,0x1945,0x2165,0x2145,0x2145,0x2146,0x2145,0x2145,0x2926,0x2945,0x2125,0x2145,0x2125,0x2945,0x2146,0x2145,0x2945,0x2125,0x1925,0x1925,0x2125,0x1925,0x2105,0x2104,0x1925,0x2104,0x1905,0x1904,0x1104,0x1903,0x10c3,0x18e4,0x1104,0x10e4,0x1104,0x18e4,0x20e3,0x1104,0x18e4,0x0904,0x18e4,0x18e4,0x1903,0x18e3,0x18e4,0x18c3,0x18e3,0x10c2,0x08e3,0x08e3,0x10a3,0x18c4,0x18c4,0x20c4,0x18c4,0x08c3,0x10c3,0x18c3,0x18e3,0x10c4,0x10c3,0x10e3,0x08a3,0x3a48,0xadf7,0x1083,0x18e4,0x1104,0x2145,0x2125,0x2164,0x4a88,0x5ae9,0x52ca,0x52ca, +0xc73c,0x42eb,0x52c9,0x5ac9,0x52c9,0x52c9,0x3a28,0x2986,0x424a,0x3a49,0x3249,0x31c8,0xbd35,0xbf1c,0x29e9,0x39e7,0x4208,0x39e8,0x39e8,0x39e8,0x3a07,0x3207,0x3207,0x39e7,0x3208,0x3a08,0x31c7,0x3a07,0x3a07,0x3a08,0x3207,0x3a28,0x4229,0x39e8,0x3a08,0x3228,0x3a29,0x4a4a,0x3a49,0x3228,0x4229,0x4229,0x4228,0x4249,0x4a29,0x4229,0x4249,0x4269,0x41e8,0x3a29,0x4269,0x4a6a,0x424a,0x4a8a,0x4249,0x3228,0x4228,0x4249,0x4269,0x4269,0x4269,0x424a,0x426a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x526a,0x52aa,0x4a8a,0x4a8a,0x4aab,0x4aaa,0x528a,0x528a,0x52aa,0x4a8a,0x52ab,0x52ab,0x52ab,0x52ab,0x528b,0x4a8b,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x52eb,0x52ab,0x5acc,0x52cb,0x52cc,0x4acb,0x52ec,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x52eb,0x5aeb,0x52cc,0x4acc,0x4aeb,0x4b0b,0x52ec,0x52cc,0x5aec,0x530c,0x5b0b,0x5b0c,0x632d,0x532c,0x530c,0x5b0c,0x5aec,0x52cc,0x5aec,0x5b0c,0x5b0c,0x52ec,0x52ec,0x5aec,0x52ec,0x52ec,0x5aec,0x5aec,0x62ec,0x5b0c,0x636d,0x5b4c,0x532c,0x5b0c,0x630c,0x6b2d,0x530c,0x4b0c,0x5b0c,0x630c,0x5acc,0x52ab,0x4a6a,0x4aab,0x52ed,0x52ed,0x52cb,0x5acc,0x5acc,0x52eb,0x4acb,0x4aab,0x52ab,0x52ab,0x52ab,0x4a6a,0x52ab,0x528a,0x52cb,0x4aaa,0x4a6a,0x4aaa,0x4a8a,0x4a8b,0x4a6b,0x4a6a,0x4a8a,0x42aa,0x4a8a,0x528b,0x4a8b,0x4a8b,0x4a89,0x4a8a,0x4a69,0x4a49,0x4a69,0x4249,0x422a,0x3a69,0x3a69,0x3a49,0x4269,0x4249,0x4249,0x4248,0x3a29,0x3a28,0x4228,0x4208,0x3a29,0x3a29,0x3a28,0x3a08,0x3a28,0x3a29,0x3a08,0x3a28,0x3a08,0x3a28,0x3208,0x39e8,0x41c8,0x31a8,0x39e8,0x39e7,0x41e8,0x41e8,0x39a7,0x3a07,0x39c7,0x39a7,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x31a7,0x2987,0x3186,0x29a6,0x31a7,0x29a6,0x31a6,0x2986,0x3146,0x29a7,0x31a7,0x31a6,0x31a6,0x3186,0x3186,0x2186,0x2966,0x2186,0x2986,0x2966,0x3186,0x2145,0x1985,0x2166,0x2946,0x2946,0x2166,0x2945,0x1965,0x2145,0x2146,0x2145,0x2945,0x2165,0x2945,0x2925,0x2145,0x2105,0x2125,0x2945,0x2125,0x2125,0x2125,0x2125,0x2925,0x2924,0x2105,0x1925,0x2104,0x1903,0x1904,0x1104,0x1924,0x1904,0x18e4,0x10e5,0x18e4,0x10e3,0x10e4,0x18e4,0x18e4,0x18c4,0x10e3,0x1103,0x10e5,0x18c4,0x10e3,0x10e3,0x10c5,0x10c3,0x18e3,0x08e3,0x10e4,0x08c3,0x10a3,0x10a4,0x18c3,0x20c3,0x18c3,0x08c3,0x10c3,0x10c3,0x10e3,0x08e4,0x08e3,0x18e3,0x10a3,0x3206,0xadb7,0x1064,0x18e3,0x2124,0x1945,0x1124,0x2164,0x4247,0x52c9,0x5aca,0x5aca, +0xcf3b,0x42cb,0x52ea,0x4ac9,0x5ac9,0x5aa9,0x3a28,0x29c7,0x3a48,0x3a49,0x3229,0x31c8,0xa4b2,0xbf1b,0x29c9,0x39e7,0x39e7,0x29e7,0x3208,0x31e7,0x31e8,0x31e7,0x3207,0x3a08,0x31e8,0x3a08,0x39e8,0x3208,0x3208,0x39e8,0x31e7,0x31e8,0x4208,0x4228,0x4229,0x3a28,0x3a29,0x4208,0x4249,0x3229,0x4229,0x3a28,0x3a08,0x4229,0x4228,0x3a29,0x4269,0x4249,0x3a29,0x3a49,0x4269,0x4a69,0x4249,0x4249,0x4269,0x426a,0x4a48,0x4228,0x4269,0x3a49,0x3a49,0x426a,0x426a,0x4249,0x3a69,0x528a,0x4a6a,0x4269,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4a6a,0x4a89,0x4a8a,0x4aaa,0x528a,0x4aaa,0x4aab,0x528b,0x52ab,0x52cb,0x52cb,0x52cb,0x4aab,0x4aab,0x52ac,0x52ab,0x4acb,0x4acb,0x4aca,0x52ab,0x52cb,0x52cb,0x52cb,0x5aab,0x52cb,0x4acc,0x4acb,0x5b0b,0x5aec,0x52ec,0x52eb,0x5aec,0x52cb,0x5aec,0x530c,0x4aec,0x52eb,0x52eb,0x5aec,0x52ec,0x52cb,0x5b0c,0x52ec,0x52ec,0x530c,0x52eb,0x52cc,0x52cc,0x530c,0x5b0c,0x52ec,0x52cb,0x5aed,0x52cb,0x52cb,0x5b0c,0x52ec,0x52ec,0x5aec,0x5aec,0x5b0d,0x5acb,0x630c,0x5b0c,0x52ec,0x632d,0x52ec,0x52ec,0x5b0c,0x52ec,0x5acb,0x5aec,0x52cc,0x5aec,0x5aec,0x52cc,0x52cc,0x4aab,0x52ab,0x5aeb,0x52aa,0x52ab,0x52ab,0x4acb,0x4a8a,0x52ab,0x52ab,0x528a,0x528b,0x528b,0x526a,0x426a,0x4aaa,0x4a8a,0x42aa,0x4a6a,0x424a,0x424a,0x4269,0x4a8b,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x424a,0x4a69,0x426a,0x424a,0x3a4a,0x4249,0x4249,0x426a,0x4249,0x4249,0x3a48,0x4248,0x4229,0x3a28,0x4228,0x4209,0x3a29,0x3a29,0x4229,0x3a08,0x4249,0x3a08,0x3a08,0x31e8,0x39e8,0x39e8,0x3208,0x31e8,0x39e8,0x31e8,0x31e8,0x4208,0x3228,0x3a08,0x39e8,0x31e7,0x3208,0x39c7,0x29c6,0x31c7,0x39a7,0x31a6,0x29c7,0x29a7,0x31a7,0x3987,0x3186,0x2987,0x2986,0x2986,0x21a6,0x29a6,0x29a6,0x3186,0x2966,0x3187,0x2186,0x2186,0x1986,0x2186,0x1986,0x2186,0x2166,0x3166,0x1985,0x2186,0x2966,0x2965,0x2966,0x2945,0x3145,0x1965,0x2145,0x2945,0x2145,0x2145,0x1945,0x2145,0x2125,0x2125,0x1925,0x2125,0x1925,0x2926,0x1925,0x2125,0x2124,0x2105,0x2124,0x1904,0x1905,0x2105,0x2104,0x18e3,0x1104,0x1904,0x2104,0x18e4,0x1104,0x1904,0x1103,0x1104,0x18e4,0x10e4,0x18e3,0x1903,0x0904,0x1904,0x10e4,0x10c4,0x10e4,0x10e4,0x10c3,0x18e3,0x08e3,0x1904,0x18c3,0x10c3,0x10e3,0x18c3,0x18e3,0x18c4,0x18c3,0x10e3,0x08e3,0x10e3,0x08e2,0x10e3,0x18e3,0x10a2,0x2a68,0xa5d7,0x18a5,0x10e4,0x1904,0x2145,0x1904,0x2144,0x4247,0x52ca,0x62ca,0x5aca, +0xc71a,0x4aea,0x52c9,0x52c9,0x5aaa,0x52c9,0x4207,0x29a6,0x3a49,0x4a49,0x4249,0x31c8,0xa4b3,0xbf1b,0x2209,0x31e7,0x39e8,0x2a08,0x31e8,0x39e8,0x31e8,0x31c7,0x39e8,0x39e8,0x39e8,0x3207,0x31e7,0x3208,0x3208,0x39e8,0x3a08,0x3a09,0x39e7,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4229,0x4229,0x3a29,0x4209,0x4229,0x4228,0x3a69,0x4249,0x4249,0x4269,0x3a29,0x3a29,0x4a28,0x3a69,0x4269,0x3a69,0x426a,0x4a69,0x4a8a,0x426a,0x4269,0x4269,0x426a,0x426a,0x426a,0x426a,0x4a8a,0x4249,0x4a8a,0x426a,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4a89,0x428a,0x4aaa,0x4aaa,0x4a8a,0x4a8b,0x4aab,0x528b,0x52cb,0x52aa,0x52ab,0x4aab,0x4acb,0x4aab,0x52cc,0x4aab,0x4acc,0x4aaa,0x52cb,0x52cb,0x52cb,0x52cc,0x52cb,0x52cb,0x52cb,0x52cb,0x52cc,0x52cc,0x530d,0x4aec,0x5b0c,0x52eb,0x5aec,0x52ec,0x52ec,0x5aec,0x52ca,0x52ec,0x5aec,0x5b0d,0x5b0c,0x5b0c,0x5aec,0x52eb,0x630c,0x52ec,0x52cc,0x532c,0x530b,0x5b0c,0x4acc,0x52ed,0x5b0c,0x5b0c,0x52eb,0x5acb,0x5aec,0x52ec,0x530c,0x5b0c,0x5b0c,0x632d,0x5aec,0x4aaa,0x5aeb,0x52cb,0x52ec,0x5aec,0x52cc,0x52ec,0x530c,0x52ec,0x52cb,0x52cb,0x4aab,0x42ab,0x4aab,0x4aab,0x52ab,0x4aab,0x528b,0x52ab,0x52cb,0x52ab,0x52aa,0x4a8a,0x4a8b,0x4a8a,0x4a8a,0x526a,0x526b,0x4a8a,0x428a,0x428a,0x528b,0x4a8b,0x428a,0x4269,0x4a6a,0x426a,0x424a,0x4a4a,0x4a6a,0x4a6a,0x4269,0x4249,0x4a49,0x4249,0x4249,0x4a49,0x4249,0x3a49,0x3a4a,0x4249,0x3a28,0x3a28,0x4a49,0x3a08,0x4228,0x4229,0x4249,0x3a49,0x3a29,0x39e8,0x39e9,0x3a09,0x39e8,0x39e8,0x3208,0x39e7,0x3a08,0x39e8,0x41e8,0x39e8,0x39e8,0x31e8,0x3a08,0x4207,0x3a08,0x39e7,0x31c7,0x39e8,0x31c6,0x29c7,0x31c7,0x39a7,0x31a6,0x31a7,0x29a7,0x39a7,0x31a7,0x31a6,0x31a7,0x3186,0x3187,0x2987,0x29a6,0x31a7,0x2986,0x2985,0x2167,0x2946,0x2166,0x2146,0x2166,0x2166,0x2186,0x2146,0x2967,0x1965,0x2944,0x2966,0x2185,0x2165,0x2925,0x2926,0x2126,0x2125,0x2145,0x2145,0x2946,0x2145,0x2145,0x2945,0x2125,0x1125,0x1925,0x1925,0x1924,0x1904,0x2125,0x1944,0x1125,0x1925,0x1924,0x1904,0x2124,0x18e5,0x1105,0x18e4,0x18e4,0x18e4,0x18c4,0x20e4,0x20e3,0x1904,0x1904,0x20e3,0x18e4,0x1903,0x2104,0x18e3,0x10e3,0x08e4,0x10e4,0x18e4,0x10e4,0x10c4,0x10e3,0x10e2,0x18e3,0x10c4,0x08c3,0x08c3,0x18c2,0x10c3,0x08e3,0x1103,0x10e3,0x1103,0x18e3,0x10e3,0x10e2,0x10c2,0x18a1,0x3a89,0xa5b7,0x28e6,0x18c3,0x1903,0x2145,0x10e4,0x2124,0x4a67,0x52e9,0x62ca,0x62ca, +0xc6fa,0x42aa,0x5ac9,0x52c9,0x5ac9,0x52e9,0x3207,0x31e7,0x4248,0x4268,0x4249,0x39e9,0xacd3,0xc71b,0x21e9,0x31e8,0x3a08,0x31e8,0x39e8,0x31e7,0x31e7,0x41e7,0x39e8,0x31e8,0x31e8,0x39e8,0x31e8,0x39e8,0x39e8,0x39e8,0x3a09,0x3a29,0x3208,0x3a07,0x3a08,0x3a29,0x3a08,0x4209,0x4208,0x4208,0x4229,0x3a29,0x3a48,0x3a28,0x4248,0x3a68,0x4249,0x4249,0x4a48,0x4249,0x4229,0x4209,0x4249,0x4269,0x426a,0x4a89,0x4a69,0x4a69,0x4269,0x3a69,0x426a,0x428a,0x426a,0x424a,0x4269,0x428a,0x4a6a,0x4a6b,0x4a8a,0x4a69,0x4a69,0x4a89,0x428a,0x4a6a,0x52aa,0x4a6a,0x428a,0x4a8b,0x4a8a,0x4aac,0x52ab,0x4aab,0x4aaa,0x4aab,0x4aab,0x4a8b,0x4a6a,0x528b,0x4aab,0x52ab,0x52ac,0x52ab,0x52eb,0x52cb,0x5acb,0x4acb,0x52cb,0x52cb,0x52ab,0x52cb,0x5aec,0x5aec,0x5acc,0x5acb,0x5aeb,0x5b0c,0x530c,0x52eb,0x52cb,0x52eb,0x52ec,0x630d,0x62ed,0x62ec,0x5b0c,0x5aec,0x5b0c,0x5b2d,0x530c,0x4aec,0x4aec,0x4aeb,0x530c,0x52ec,0x5aec,0x5acc,0x52ec,0x4acb,0x52cb,0x52ec,0x530d,0x532c,0x52cb,0x5aec,0x5b0c,0x5b0c,0x5aec,0x52eb,0x52cb,0x5aec,0x5acc,0x5acc,0x5aec,0x530b,0x4aeb,0x52cc,0x52eb,0x52cb,0x52ab,0x4acc,0x52ac,0x528b,0x4aac,0x52ab,0x52cb,0x52ab,0x52ab,0x52cb,0x4a8a,0x52ab,0x4a8b,0x428a,0x52ab,0x52ab,0x428b,0x4a6a,0x52ab,0x42aa,0x4aab,0x4aab,0x4a8a,0x4a8a,0x428a,0x426a,0x426a,0x426a,0x4a6a,0x424a,0x424a,0x426a,0x4a49,0x4a49,0x4229,0x424a,0x424a,0x422a,0x4a49,0x4a49,0x4249,0x4229,0x4249,0x4229,0x4229,0x4249,0x4229,0x3a29,0x4229,0x4209,0x4229,0x3a08,0x39e8,0x3208,0x3a08,0x3a08,0x31e7,0x41e8,0x3a08,0x39e7,0x3a08,0x31c7,0x39c7,0x39e8,0x31a6,0x31c8,0x31a7,0x31c7,0x31c7,0x31c6,0x31c6,0x31a7,0x31a7,0x31c6,0x29a7,0x31a7,0x31a6,0x31c6,0x31c6,0x31a7,0x31a7,0x3187,0x31a6,0x2986,0x3186,0x2986,0x3186,0x2986,0x2145,0x2165,0x3185,0x3145,0x3186,0x3165,0x2185,0x2985,0x3166,0x2166,0x2146,0x2145,0x2945,0x2125,0x2146,0x2165,0x2145,0x2125,0x2945,0x2145,0x1925,0x2145,0x2145,0x1925,0x1925,0x2104,0x1924,0x1945,0x2125,0x1905,0x1924,0x1924,0x2124,0x1924,0x1904,0x1904,0x2105,0x20e4,0x18c3,0x18e3,0x18e3,0x1923,0x2124,0x18e4,0x18e4,0x10c5,0x18e3,0x10e4,0x10e3,0x08c4,0x10e4,0x10e3,0x1103,0x18e4,0x18a4,0x10c3,0x10c3,0x10e3,0x08e4,0x10c4,0x10c3,0x10a2,0x10e3,0x10c2,0x08c3,0x00c4,0x08e2,0x00e2,0x08c3,0x10c3,0x10c3,0x1063,0x3226,0xadd6,0x28a5,0x10e3,0x1903,0x2124,0x1924,0x2165,0x4227,0x5ac9,0x5aca,0x62ca, +0xbeda,0x42a9,0x5ae9,0x52c9,0x52c9,0x4aa9,0x4248,0x31a7,0x4229,0x3a69,0x3a49,0x41c8,0xb4f2,0xbefb,0x21c8,0x3a08,0x3a08,0x39e8,0x39c8,0x39e8,0x31e8,0x3a08,0x31e8,0x39e8,0x39e8,0x39e8,0x39e8,0x31e8,0x31e8,0x39e8,0x31e8,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x3a29,0x3a09,0x3a28,0x3a48,0x3a48,0x3a29,0x3a29,0x3a28,0x3a28,0x4249,0x3a08,0x3208,0x4249,0x4229,0x4248,0x3a49,0x3a4a,0x4249,0x4a49,0x4a4a,0x426a,0x3a49,0x4249,0x4a69,0x4269,0x4269,0x4249,0x4a6a,0x426a,0x426a,0x4a6a,0x426a,0x428a,0x426a,0x4a6a,0x4a4a,0x4a8b,0x4a8a,0x4aaa,0x4a8a,0x526b,0x528b,0x52ab,0x4a8a,0x42ab,0x52ca,0x52cb,0x4aab,0x528b,0x4a8a,0x528a,0x4aaa,0x52cb,0x4a8a,0x52cb,0x4aeb,0x52ab,0x4aab,0x4acb,0x52cb,0x42cb,0x52eb,0x4aab,0x52cc,0x52cb,0x52cc,0x5aeb,0x5aec,0x5aec,0x4acb,0x52cb,0x52cb,0x52ec,0x5aec,0x5aec,0x5b0c,0x5aeb,0x5b0c,0x5aec,0x52ec,0x530c,0x4b0b,0x530c,0x52ec,0x52cc,0x52cb,0x52cb,0x52eb,0x52cb,0x52cc,0x5aac,0x62ec,0x52cc,0x5acc,0x52ec,0x5b0d,0x530c,0x52ec,0x5acc,0x634e,0x4acb,0x4acb,0x5acc,0x5acc,0x52ab,0x52ab,0x52ec,0x52cb,0x52ab,0x4aab,0x4aac,0x52ab,0x52cc,0x52cc,0x4aab,0x4a8b,0x5aac,0x4aaa,0x52ab,0x4aab,0x4acb,0x4aab,0x4a8a,0x4aab,0x42ab,0x4aab,0x52ab,0x4a6b,0x4a8b,0x4aab,0x426a,0x4a8a,0x428a,0x4a8b,0x428a,0x426a,0x3a6a,0x426a,0x4269,0x4a69,0x4a8a,0x424a,0x426a,0x4269,0x4249,0x426a,0x4249,0x4a4a,0x4249,0x4249,0x4249,0x4248,0x4229,0x4229,0x4229,0x424a,0x3a49,0x4249,0x3a09,0x3a09,0x4208,0x4228,0x3a28,0x3208,0x31e8,0x31e8,0x31c8,0x3207,0x3a08,0x3a08,0x3a08,0x3208,0x31a8,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39c7,0x39e7,0x31c7,0x39e7,0x29a6,0x31a6,0x29a7,0x2987,0x31a6,0x29a6,0x29a6,0x2986,0x3186,0x3166,0x3166,0x29c7,0x31a7,0x3166,0x3165,0x3166,0x2966,0x2965,0x2946,0x2945,0x2185,0x2945,0x2166,0x2165,0x3166,0x2965,0x2946,0x2945,0x2966,0x2146,0x1965,0x2165,0x2145,0x1945,0x1945,0x2945,0x1925,0x1945,0x1925,0x2126,0x1925,0x2125,0x1925,0x1125,0x1924,0x1905,0x1905,0x1905,0x1904,0x1925,0x10e4,0x20e4,0x1104,0x2104,0x1904,0x1903,0x18e3,0x1903,0x1904,0x1904,0x1103,0x18e5,0x18e3,0x10e3,0x18e4,0x18e4,0x18e4,0x20e3,0x1103,0x18e3,0x08e3,0x18e3,0x18e3,0x18e2,0x08e3,0x10a3,0x18c3,0x08c3,0x08c3,0x10a3,0x10a3,0x10a3,0x10c3,0x08c3,0x10e3,0x10e3,0x10e3,0x08c2,0x29c5,0xb618,0x28a5,0x18e3,0x1903,0x2124,0x2144,0x2184,0x4248,0x5ac9,0x5ac9,0x5ac9, +0xb6da,0x42ca,0x5ac9,0x52ca,0x52ca,0x4ac9,0x3a28,0x29a6,0x4268,0x3a49,0x3a49,0x41e8,0xacf3,0xbefb,0x19c8,0x3a28,0x3a07,0x31e7,0x39c7,0x4208,0x3a07,0x41e8,0x39e7,0x31e8,0x31e8,0x31e8,0x3208,0x31e7,0x3a08,0x3a08,0x4208,0x39e8,0x31e8,0x4229,0x4209,0x3a08,0x4208,0x3a08,0x3a08,0x3228,0x3228,0x3a28,0x4209,0x3a09,0x4209,0x3a09,0x3a49,0x3a09,0x3a09,0x4229,0x4228,0x4229,0x3a69,0x4248,0x4269,0x4249,0x4229,0x4209,0x4229,0x4a49,0x4a6a,0x426a,0x3a8a,0x3a6a,0x4229,0x424a,0x4a8b,0x4a8a,0x4a6a,0x4a8b,0x4a6a,0x428b,0x4a6a,0x4a8a,0x428a,0x428b,0x4a8a,0x4a8a,0x4a8b,0x526a,0x528b,0x4a8b,0x52ab,0x4a8a,0x4a8b,0x52ab,0x52ab,0x528b,0x4aab,0x4aaa,0x52aa,0x4acb,0x4acb,0x4aab,0x52ac,0x4aab,0x4aab,0x52cb,0x52eb,0x4aab,0x52ac,0x52cb,0x4aeb,0x52cb,0x52cb,0x5acc,0x52cc,0x530d,0x52ec,0x4acc,0x5b0c,0x5aec,0x5b0c,0x5aed,0x52ec,0x5acb,0x5aec,0x5aec,0x5aec,0x52cc,0x5aec,0x52cb,0x52cb,0x52ab,0x52eb,0x52ab,0x5aac,0x52ec,0x52ec,0x52ab,0x5aec,0x5aeb,0x5b0c,0x5b0c,0x52eb,0x530c,0x5b0c,0x52cb,0x528b,0x52ab,0x52ab,0x4aab,0x52ab,0x62cb,0x52cb,0x4aab,0x52cb,0x4acc,0x528b,0x4aaa,0x52ab,0x4acb,0x4a6b,0x4aab,0x52ab,0x52cb,0x4a8a,0x52ab,0x4aab,0x4aab,0x4aab,0x52aa,0x528a,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4249,0x424a,0x3a69,0x4a6a,0x4a6a,0x424a,0x428a,0x426a,0x4269,0x3a8a,0x4a6a,0x4269,0x4a29,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4a49,0x3229,0x3a49,0x3a49,0x4249,0x4209,0x4208,0x4228,0x4208,0x3a08,0x3a08,0x31e8,0x3a08,0x31e8,0x39e9,0x3a28,0x39e8,0x39e7,0x3a07,0x3208,0x29e8,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x31a7,0x31c6,0x31c7,0x39c7,0x31c6,0x31c6,0x31a7,0x29a7,0x31a7,0x2987,0x31a7,0x2987,0x3186,0x39a6,0x3987,0x2986,0x31a7,0x2986,0x2985,0x2986,0x2986,0x2966,0x2145,0x2166,0x1946,0x2124,0x2946,0x2965,0x2945,0x2165,0x2145,0x2166,0x2166,0x2946,0x1965,0x1945,0x2125,0x2925,0x2125,0x2925,0x2124,0x1945,0x1145,0x2125,0x1925,0x2126,0x1905,0x1124,0x2125,0x20e5,0x2104,0x1904,0x1105,0x2124,0x1104,0x10e4,0x08e4,0x1904,0x18c5,0x1103,0x0904,0x1104,0x18e4,0x0904,0x2104,0x20e4,0x18e4,0x18c4,0x10c3,0x18e3,0x18e4,0x10e3,0x10e4,0x18e3,0x1103,0x18e3,0x10e3,0x10c3,0x08e3,0x08c3,0x18c3,0x10c3,0x08c2,0x10c3,0x08c3,0x18c3,0x10c3,0x10c3,0x08e3,0x08c3,0x10e3,0x00c2,0x29e6,0xadf8,0x28c5,0x18e4,0x1904,0x2125,0x1924,0x1944,0x4247,0x52ca,0x5aca,0x5b0a, +0xb6fa,0x4aaa,0x5ac9,0x52c9,0x52ca,0x4aa9,0x4228,0x29a7,0x3a29,0x3a48,0x3a28,0x41c8,0xb514,0xbedb,0x21a7,0x3a07,0x41c7,0x3207,0x3208,0x31e7,0x3a08,0x41e8,0x39e8,0x3a08,0x31e7,0x31e8,0x31e8,0x39e8,0x41e8,0x3a08,0x39e8,0x3a08,0x39e8,0x39c7,0x31e8,0x3208,0x3228,0x3a28,0x3a08,0x3a09,0x3a29,0x3a49,0x4228,0x3a08,0x4208,0x39e8,0x3a28,0x3a08,0x3a29,0x3a29,0x3a08,0x3a29,0x3a49,0x3a29,0x4249,0x4269,0x426a,0x4249,0x4249,0x4229,0x4a69,0x4a6a,0x4a4a,0x4a6b,0x426a,0x4a69,0x528a,0x4aaa,0x4a6b,0x426a,0x4a6a,0x428a,0x428a,0x428a,0x4a6b,0x4a6b,0x4a8a,0x4a6b,0x4aaa,0x4a8a,0x4aab,0x4a8a,0x4a8b,0x528b,0x4a8b,0x4a8a,0x528b,0x528b,0x4aac,0x4aab,0x4aac,0x4acc,0x52cc,0x52ab,0x52ab,0x4a8b,0x4aab,0x528b,0x4aab,0x52ab,0x4aab,0x4aab,0x52ab,0x52ac,0x52cb,0x52cb,0x5b0c,0x52ec,0x52eb,0x4acb,0x530c,0x52cc,0x5aac,0x52cb,0x52ec,0x530c,0x5aed,0x5aec,0x5b0c,0x530b,0x52cc,0x4acc,0x530d,0x52cb,0x52ec,0x52cc,0x5aeb,0x5aec,0x52ec,0x530c,0x52cc,0x52ab,0x52eb,0x5aeb,0x4aab,0x52ed,0x5b0c,0x52cb,0x4aab,0x4aca,0x52ab,0x52eb,0x52eb,0x52ca,0x52ab,0x52cb,0x5acb,0x52ac,0x4a8b,0x528a,0x52cb,0x4aeb,0x52ab,0x4a8b,0x4aab,0x4aab,0x528b,0x4aaa,0x4aaa,0x4aaa,0x528b,0x4a8a,0x526a,0x4aab,0x4a8a,0x4a6a,0x4a8b,0x4a4a,0x4a8a,0x528a,0x52cb,0x4a6a,0x4a49,0x4269,0x4a49,0x4a6a,0x4a69,0x4aab,0x426a,0x426a,0x426a,0x4a4a,0x4269,0x4249,0x4249,0x4269,0x4249,0x4a49,0x4a29,0x4269,0x4249,0x3a29,0x4229,0x3a49,0x3a09,0x39e8,0x4229,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x31e8,0x3a28,0x3208,0x31e8,0x31c7,0x3207,0x3208,0x3207,0x31e8,0x41e7,0x39c8,0x39c7,0x31c7,0x31c7,0x31c7,0x31a7,0x29c7,0x29a7,0x29a7,0x3186,0x31a7,0x3187,0x31a6,0x29a6,0x31a7,0x31a7,0x31a6,0x2986,0x3987,0x3186,0x2966,0x2186,0x3186,0x29a6,0x21a6,0x2966,0x2166,0x2186,0x2147,0x1105,0x1905,0x2945,0x2945,0x2966,0x1945,0x1966,0x1945,0x1925,0x1945,0x1945,0x2925,0x2146,0x2125,0x2145,0x2144,0x2145,0x1925,0x2905,0x2145,0x2125,0x1904,0x1924,0x2124,0x2105,0x1124,0x1105,0x1905,0x2905,0x1904,0x10e4,0x10e4,0x1904,0x1104,0x0903,0x10e4,0x1903,0x2104,0x20e4,0x20e5,0x18e4,0x18e4,0x18e4,0x10e4,0x18e4,0x10c4,0x10e4,0x10e3,0x10e3,0x10a3,0x18c3,0x18c3,0x08c3,0x08c4,0x10c2,0x08e2,0x10e3,0x08e2,0x10c2,0x18c4,0x18c3,0x08c3,0x18e3,0x10c2,0x08c3,0x10c3,0x08c3,0x3227,0xa5d7,0x28e6,0x18c3,0x1924,0x2125,0x1924,0x1944,0x3a67,0x52e9,0x5aca,0x5aeb, +0xb6fa,0x42aa,0x5aa9,0x52ca,0x5aca,0x52e9,0x3a08,0x29a6,0x3a28,0x4208,0x3a08,0x39a8,0xb554,0xaebb,0x2187,0x3207,0x4208,0x31e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39e7,0x39e8,0x3208,0x31e8,0x39e8,0x39e8,0x3208,0x2a08,0x31e8,0x3208,0x3208,0x3228,0x3a28,0x3a28,0x3a08,0x3a08,0x3a29,0x3208,0x4228,0x5249,0x4249,0x4229,0x3a28,0x4229,0x4208,0x3a29,0x3a08,0x4228,0x4229,0x4229,0x3a49,0x4249,0x4249,0x4229,0x426a,0x4269,0x4229,0x4229,0x426a,0x3a4a,0x4a8b,0x3a6a,0x4a4a,0x4a8a,0x426a,0x424a,0x426a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a69,0x4a6a,0x4a6a,0x4aaa,0x4aab,0x4a8a,0x4aaa,0x528a,0x4a8b,0x4a8a,0x4aab,0x4a8b,0x4aab,0x4acb,0x4aab,0x52ab,0x528b,0x52ab,0x52aa,0x528b,0x42ab,0x52ab,0x52ab,0x4a8b,0x52ab,0x52ac,0x52ab,0x62cb,0x5aab,0x52cb,0x5aec,0x52ec,0x52ab,0x52cb,0x4aeb,0x52cb,0x52eb,0x5acb,0x5acc,0x5aec,0x4aec,0x52ed,0x52cc,0x5aec,0x5b0c,0x5aeb,0x5aec,0x52ec,0x52eb,0x5aec,0x5acc,0x5aeb,0x5aeb,0x52ec,0x5aec,0x52cc,0x4acc,0x5aeb,0x5aeb,0x5aec,0x52cc,0x5acb,0x52cb,0x52cb,0x52cb,0x5acb,0x62ec,0x52cb,0x52ab,0x52ab,0x4aaa,0x4a8a,0x4aab,0x52cb,0x52ab,0x5acc,0x4acb,0x52cb,0x528b,0x4a8a,0x4269,0x4aab,0x528b,0x4a8b,0x4aca,0x52aa,0x4a8a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a8a,0x428a,0x528a,0x52ab,0x4a8b,0x4a4a,0x424a,0x426a,0x3a49,0x4a69,0x4a89,0x4a69,0x4a6a,0x4a49,0x4a4a,0x426a,0x3229,0x3a49,0x4249,0x4a69,0x4269,0x4a49,0x3a49,0x3a49,0x4a69,0x4a49,0x3228,0x3a29,0x3a29,0x31e7,0x3a09,0x3208,0x3209,0x31e9,0x39e8,0x3a08,0x3a08,0x3a08,0x31e7,0x3208,0x3208,0x31e7,0x39e8,0x39c7,0x39e7,0x31e7,0x39e7,0x39c7,0x39c8,0x31c7,0x39c7,0x31a7,0x3186,0x2186,0x31a7,0x29c6,0x2986,0x31a7,0x29a6,0x3186,0x29a6,0x29a6,0x31a6,0x2186,0x2187,0x2986,0x2986,0x29a6,0x31a6,0x2186,0x2966,0x2945,0x1966,0x2946,0x2145,0x2145,0x2945,0x2946,0x2966,0x1946,0x1945,0x1945,0x2145,0x2946,0x2146,0x2145,0x1945,0x1945,0x2145,0x2124,0x1925,0x2125,0x2925,0x2125,0x2125,0x1944,0x1124,0x1925,0x2105,0x2104,0x1904,0x1925,0x2105,0x1904,0x1104,0x1104,0x18e3,0x18e3,0x10e4,0x10e5,0x18e4,0x18e4,0x18e4,0x08e4,0x0104,0x08e3,0x18e3,0x18c4,0x1104,0x0904,0x10e4,0x18c3,0x10c3,0x08c4,0x1904,0x18e3,0x18e3,0x10c3,0x10a3,0x10c3,0x10e3,0x10c3,0x10c3,0x18c4,0x18e3,0x10c3,0x10e2,0x10e2,0x10c2,0x18e2,0x10c2,0x3227,0xa5b7,0x2906,0x18e3,0x1124,0x2125,0x2145,0x1984,0x3a47,0x4ae8,0x5ae9,0x5aea, +0xb6da,0x4a8a,0x5aea,0x52aa,0x5aca,0x5aca,0x31e6,0x31a6,0x3a48,0x3a09,0x3a09,0x4187,0xbd75,0xae9a,0x2187,0x3a28,0x39e7,0x41e8,0x3a08,0x39e8,0x3a08,0x3a08,0x3a07,0x39e8,0x3a08,0x3228,0x3208,0x39e8,0x39e7,0x39e8,0x3a08,0x3a08,0x31e8,0x3208,0x3208,0x39e8,0x4208,0x41e8,0x3a07,0x3208,0x3228,0x3a29,0x3a29,0x3a28,0x4229,0x4208,0x4228,0x4208,0x4229,0x3a08,0x4228,0x4249,0x4229,0x4249,0x4249,0x4249,0x4a49,0x4a6a,0x4249,0x4249,0x3a49,0x424a,0x4249,0x4249,0x4269,0x4269,0x4269,0x426a,0x424a,0x4269,0x426a,0x426a,0x4a8b,0x426a,0x4a49,0x5269,0x4a6a,0x426a,0x52ab,0x4aaa,0x52ab,0x428a,0x4aab,0x42aa,0x426a,0x4aaa,0x52aa,0x4aab,0x52cb,0x5acb,0x52ab,0x52ab,0x5aab,0x52ab,0x52cb,0x52ab,0x4aab,0x52ab,0x52cb,0x52cb,0x5acc,0x528b,0x4a8a,0x4aab,0x4acb,0x52ab,0x52ac,0x4aca,0x52cb,0x52eb,0x5acb,0x5acb,0x52cb,0x52ec,0x62ec,0x52cc,0x52eb,0x52cb,0x52cb,0x5aeb,0x5aec,0x5aeb,0x62ec,0x5b0c,0x5aec,0x52ec,0x52ec,0x52ec,0x5b0b,0x5b0c,0x530c,0x4acb,0x5b0c,0x5aec,0x5aec,0x52ec,0x52cb,0x4acb,0x52cc,0x52cc,0x52ab,0x52ab,0x4aeb,0x4acb,0x52ab,0x4acb,0x4acb,0x52ec,0x52cc,0x52ab,0x52ab,0x52ab,0x4acb,0x52ab,0x4aaa,0x428a,0x4acb,0x528b,0x42ab,0x4aaa,0x528a,0x4a8a,0x52ca,0x4aaa,0x428a,0x528a,0x528a,0x526a,0x4289,0x4a8b,0x4a6b,0x4a6a,0x4a69,0x3a49,0x426a,0x3a69,0x4269,0x4a69,0x4a8a,0x426a,0x4a49,0x426a,0x426a,0x3a29,0x3a49,0x4229,0x4a4a,0x4249,0x3a29,0x3a49,0x4229,0x4268,0x3a28,0x3a49,0x4229,0x3a28,0x3a08,0x41e9,0x3a08,0x3a29,0x3a09,0x3a08,0x3a28,0x39e8,0x39c8,0x31e8,0x31e8,0x31a7,0x31e7,0x31c8,0x39e7,0x31c7,0x31c7,0x29c6,0x31c7,0x39a8,0x39a7,0x31c7,0x31e7,0x39c7,0x31a6,0x39a7,0x31a6,0x2987,0x3987,0x3186,0x31a6,0x29a6,0x29a6,0x31a7,0x2186,0x2186,0x2986,0x29a6,0x2986,0x3166,0x2186,0x2146,0x2167,0x2966,0x2945,0x2945,0x2945,0x2965,0x2946,0x2145,0x2145,0x2166,0x2146,0x2166,0x1945,0x3165,0x2165,0x2145,0x2165,0x2945,0x1945,0x1145,0x2125,0x2925,0x2125,0x2125,0x2104,0x2124,0x2125,0x1105,0x20e5,0x2124,0x2125,0x1905,0x1104,0x1904,0x1904,0x1904,0x10e3,0x1905,0x10e4,0x18e4,0x18e4,0x18e4,0x2105,0x10c4,0x1904,0x2103,0x2104,0x10c4,0x10e4,0x18e4,0x18e4,0x18e3,0x10e3,0x10e4,0x10e3,0x18e2,0x10c2,0x08e3,0x10c3,0x10e3,0x00c4,0x08c4,0x08c3,0x08c2,0x08e3,0x08e3,0x08e3,0x08c3,0x18e3,0x18a3,0x29a6,0xadd7,0x3127,0x10e3,0x18e4,0x2125,0x1925,0x2143,0x4247,0x52c8,0x52ca,0x5aca, +0xb6ba,0x4aaa,0x5ae9,0x52ca,0x5aca,0x52ca,0x3a27,0x3186,0x4229,0x3a29,0x3a29,0x4187,0xbd54,0xaeba,0x2187,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x3208,0x3a08,0x39e8,0x41e9,0x4209,0x31e8,0x31c8,0x39c7,0x3a08,0x3a08,0x3a08,0x39e8,0x31e8,0x3a08,0x3a28,0x3a08,0x3a28,0x3a28,0x3a48,0x4249,0x3a08,0x3a29,0x3a29,0x4209,0x3a09,0x4208,0x3a09,0x3a28,0x3a28,0x3a29,0x3a48,0x3a28,0x3a29,0x3a49,0x3a69,0x4249,0x3a49,0x3a49,0x3a29,0x3269,0x424a,0x3a69,0x3a69,0x4249,0x4a49,0x4269,0x4a89,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x526b,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4a6b,0x4a6a,0x528a,0x4aab,0x4a8b,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x528a,0x52ab,0x52cb,0x52cb,0x52ab,0x52ab,0x52cb,0x52ab,0x52ec,0x52cc,0x4aab,0x4aec,0x4acc,0x4aeb,0x4aca,0x52ab,0x52cc,0x52ab,0x52cb,0x52ac,0x52cc,0x4aca,0x4acb,0x52cb,0x52cb,0x5acc,0x52cb,0x52cb,0x5aec,0x52cb,0x52eb,0x4aab,0x4acb,0x52cb,0x52ab,0x630c,0x62ec,0x5aec,0x52ec,0x52ec,0x4b0c,0x52ec,0x5b0b,0x52ec,0x5b0c,0x52ab,0x5b0c,0x5b0c,0x52cc,0x52cb,0x52cc,0x52cb,0x52eb,0x52ec,0x5acc,0x52cc,0x52cc,0x52cc,0x52cb,0x5acc,0x52cb,0x52ec,0x52ac,0x52ac,0x528b,0x528b,0x4a8b,0x4a8a,0x528a,0x4a8a,0x52cb,0x4aab,0x4a8b,0x4a8a,0x4a8a,0x4a6b,0x4acb,0x4aaa,0x528a,0x528a,0x528a,0x528a,0x4a8a,0x528b,0x4a6b,0x426a,0x428a,0x4269,0x4a6a,0x4269,0x4269,0x4229,0x426a,0x4269,0x4269,0x426a,0x4269,0x4269,0x4289,0x4249,0x4229,0x4229,0x3a29,0x3a49,0x3a29,0x3a48,0x424a,0x4249,0x3a29,0x3a08,0x3a08,0x4209,0x4228,0x3a28,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x39c7,0x31e8,0x31e8,0x39c8,0x39e8,0x39e7,0x31c7,0x39c7,0x31c8,0x31c7,0x31a7,0x31c7,0x39c8,0x31c8,0x39c7,0x31a6,0x39a6,0x31a6,0x29a6,0x3186,0x3967,0x3186,0x29a6,0x2986,0x2986,0x29a7,0x3186,0x29a6,0x2986,0x2986,0x2986,0x2165,0x2166,0x2186,0x2165,0x2965,0x2165,0x3125,0x2125,0x2145,0x1925,0x2145,0x2146,0x2166,0x2145,0x2145,0x2945,0x2145,0x2945,0x2926,0x1945,0x2125,0x2945,0x2925,0x1925,0x2124,0x1925,0x2125,0x2124,0x2125,0x1125,0x1904,0x2125,0x2104,0x20e5,0x1904,0x1924,0x2104,0x2104,0x1904,0x1104,0x10e4,0x18e4,0x10e4,0x1104,0x2105,0x10e4,0x20c4,0x2104,0x1903,0x18c4,0x18e4,0x18e3,0x18e4,0x10e4,0x1104,0x08e4,0x18c4,0x08c3,0x10c3,0x00e3,0x08e3,0x08e3,0x08c3,0x10c3,0x08c3,0x10e3,0x10c2,0x08c2,0x00c3,0x08c4,0x10c3,0x18a3,0x2186,0xa5f7,0x3967,0x18e4,0x1904,0x2145,0x1945,0x1924,0x4227,0x52e9,0x5aca,0x5aea, +0xb699,0x42a9,0x5b09,0x52ea,0x52c9,0x52c9,0x3a27,0x31a6,0x39e9,0x3228,0x3a48,0x39a7,0xb554,0xaeba,0x2187,0x39e8,0x3a08,0x41e8,0x3a08,0x3228,0x3a29,0x3a08,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4228,0x4a08,0x4229,0x3a08,0x39e8,0x3208,0x3a29,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x41e8,0x4a49,0x3a29,0x4a29,0x4229,0x4209,0x3a29,0x3208,0x3208,0x3a49,0x3a29,0x4228,0x4229,0x3a49,0x3a49,0x3209,0x3a29,0x3a29,0x3249,0x3a49,0x3a49,0x426a,0x3a69,0x3a69,0x4289,0x4a29,0x4a69,0x4a4a,0x4a6a,0x52ab,0x4a8a,0x424a,0x4a6a,0x426a,0x4a6a,0x4a8a,0x4a8a,0x426a,0x4a4a,0x4a8b,0x4a6b,0x4a8a,0x428a,0x4a8a,0x4a8a,0x4a8a,0x42aa,0x4a8b,0x528b,0x52ab,0x5a8b,0x528a,0x4a8b,0x4aab,0x4aab,0x4aab,0x4aab,0x52ac,0x52ac,0x4aab,0x52ac,0x52ab,0x52ab,0x52cb,0x52ab,0x5aeb,0x52ec,0x52eb,0x4acb,0x52cb,0x52ec,0x5b0c,0x52cc,0x52cb,0x52eb,0x52cb,0x52cb,0x52ec,0x52ec,0x52eb,0x52ab,0x5aec,0x52eb,0x5aec,0x52ec,0x5acc,0x5aec,0x530d,0x5aed,0x5b0c,0x52ec,0x52cb,0x630c,0x52cc,0x52cb,0x5acb,0x52cb,0x52cc,0x52cb,0x5aca,0x5aeb,0x5aec,0x5aec,0x52cb,0x5acb,0x4aab,0x5acb,0x52ec,0x52eb,0x52ab,0x4a8b,0x52cb,0x52ab,0x52ab,0x52ab,0x528a,0x526a,0x528a,0x4aaa,0x4a8a,0x52ab,0x52cb,0x4aab,0x428a,0x428a,0x4a8a,0x4249,0x4a8a,0x4a6b,0x4a6a,0x428a,0x428a,0x3a6a,0x428a,0x4a8b,0x4a6a,0x528a,0x4a8a,0x428a,0x428a,0x4269,0x426a,0x424a,0x4a69,0x4a49,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4249,0x4249,0x3a29,0x3a48,0x424a,0x4229,0x3a29,0x3a29,0x3a08,0x3a28,0x3a28,0x3a28,0x39e8,0x3a08,0x3208,0x31e7,0x3208,0x3a08,0x39e7,0x39e7,0x41e7,0x39e8,0x39c7,0x39e7,0x31e7,0x31e7,0x29a7,0x29a8,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x3187,0x31a7,0x31a7,0x2986,0x3987,0x3187,0x31a6,0x31a5,0x3186,0x3186,0x2986,0x2986,0x2966,0x2985,0x1986,0x2966,0x2966,0x3166,0x3146,0x2165,0x2946,0x2166,0x2945,0x2144,0x2965,0x2946,0x2146,0x2165,0x2146,0x2125,0x1925,0x2145,0x2145,0x2125,0x1125,0x2125,0x2125,0x1945,0x1924,0x2144,0x1925,0x20e5,0x1925,0x2124,0x1904,0x2104,0x2105,0x1904,0x1925,0x1905,0x1904,0x1905,0x18e5,0x1104,0x18e4,0x10e4,0x1904,0x20e5,0x2103,0x1104,0x1903,0x10e4,0x10e3,0x10e3,0x10e4,0x10e4,0x10e4,0x18c2,0x10c3,0x10e4,0x10e3,0x0903,0x10c3,0x18e2,0x08c3,0x08c3,0x18c3,0x10e4,0x18e3,0x08c3,0x10c4,0x08c3,0x1882,0x2165,0xae17,0x41a8,0x20e4,0x1904,0x2125,0x2146,0x1924,0x4a27,0x52e9,0x5aea,0x630a, +0xb699,0x4289,0x5aea,0x52ea,0x5ae9,0x4ac9,0x3a28,0x2965,0x4249,0x424a,0x3229,0x3167,0xbd75,0xaeba,0x1987,0x29a7,0x31e7,0x31c8,0x31c7,0x29a7,0x31e7,0x3a08,0x3208,0x29a7,0x31c7,0x29c7,0x29a6,0x2986,0x31a6,0x31a7,0x2987,0x29c7,0x31e7,0x31a7,0x3208,0x3a09,0x3a09,0x3a08,0x3a28,0x39e8,0x3a08,0x3a28,0x39e8,0x3a08,0x4229,0x4208,0x31e8,0x31e8,0x3228,0x3208,0x39e8,0x3a09,0x3208,0x31e8,0x3a29,0x3a29,0x3a08,0x3a69,0x426a,0x4249,0x4209,0x4229,0x4a4a,0x424a,0x3a49,0x4a6a,0x422a,0x4a4a,0x4269,0x4289,0x4a8a,0x428a,0x528b,0x528a,0x4a8a,0x428b,0x428a,0x4a6a,0x4a8b,0x428b,0x428a,0x4aaa,0x52aa,0x4a8a,0x4aab,0x4a8a,0x428a,0x4a6a,0x4aab,0x52cb,0x52aa,0x4aaa,0x52cb,0x52ab,0x42cb,0x4aeb,0x52ab,0x5acc,0x52ab,0x528b,0x52cc,0x52cc,0x52ab,0x52cb,0x52eb,0x52eb,0x528b,0x528b,0x5acc,0x5aec,0x52ab,0x52cb,0x4acb,0x52eb,0x52cb,0x52cc,0x52ab,0x52eb,0x52eb,0x5aec,0x5aec,0x5acb,0x52ed,0x5acc,0x62ec,0x62ec,0x630d,0x5acb,0x52eb,0x5aab,0x5aab,0x62cc,0x5aab,0x5aab,0x52ab,0x52ec,0x52ab,0x5b0c,0x5acc,0x5a8a,0x62cb,0x62cb,0x62cb,0x62cc,0x52ab,0x5acb,0x52cb,0x62ec,0x62ab,0x52ab,0x5acc,0x62ec,0x5acb,0x6acc,0x62cb,0x5a8b,0x52ab,0x5acb,0x5acb,0x5acb,0x5aab,0x5aab,0x5a8b,0x5aab,0x5a8a,0x62ab,0x5aab,0x528a,0x5aab,0x528b,0x52aa,0x528a,0x5aab,0x528b,0x5229,0x4a29,0x52aa,0x528b,0x4aaa,0x4a6a,0x526b,0x4a6a,0x4a8a,0x4a69,0x4a49,0x4a69,0x5269,0x4229,0x4a49,0x3a08,0x4a29,0x4a69,0x4a69,0x4a28,0x49e8,0x39e8,0x3a28,0x4229,0x4a29,0x4209,0x4208,0x3a08,0x41e8,0x4207,0x3a08,0x39e7,0x39e7,0x31a7,0x39c7,0x39e7,0x31a7,0x29a5,0x2965,0x3186,0x3186,0x2987,0x2186,0x39c6,0x3186,0x2966,0x31c6,0x2985,0x3166,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2166,0x2966,0x2986,0x3186,0x2966,0x2945,0x2966,0x2966,0x2145,0x2965,0x1945,0x2165,0x2146,0x2946,0x3125,0x2985,0x1945,0x3146,0x2946,0x2965,0x2166,0x1145,0x1905,0x2905,0x1925,0x2146,0x2125,0x2145,0x1944,0x1924,0x1923,0x2125,0x2104,0x2125,0x1945,0x1124,0x2124,0x18e4,0x18c4,0x18e4,0x1904,0x1905,0x1905,0x1924,0x1104,0x1925,0x1924,0x10e4,0x10a3,0x1084,0x1104,0x08e3,0x08a3,0x10c3,0x08c3,0x10c3,0x10c2,0x10c2,0x10c3,0x08c3,0x1103,0x10e4,0x10e3,0x10e3,0x18e3,0x10a3,0x10a3,0x18e3,0x08a3,0x10c3,0x10a3,0x10e3,0x18c3,0x18c3,0x10a4,0x10a3,0x0882,0x1082,0x08e3,0x10c3,0x2164,0xa5b6,0x3167,0x1103,0x0925,0x1944,0x1945,0x1124,0x4247,0x4ac9,0x5b0a,0x5aea, +0xa678,0x42a9,0x5ae9,0x5aea,0x5ac9,0x52c9,0x4208,0x2966,0x3a29,0x4209,0x3209,0x3167,0xbd95,0xb6ba,0x2166,0x5b6d,0x4aed,0x530d,0x538e,0x532c,0x5b4c,0x638e,0x63af,0x5b4e,0x536e,0x53ae,0x5b6e,0x638e,0x5b6d,0x5b8e,0x63af,0x63af,0x5b6e,0x638f,0x636e,0x5bd0,0x4b4e,0x430d,0x4b4e,0x538f,0x534e,0x5baf,0x4aed,0x534d,0x638e,0x5baf,0x5b8e,0x4b4d,0x4b4e,0x63cf,0x5baf,0x63af,0x5b6e,0x4acc,0x530c,0x63cf,0x5b8d,0x636d,0x52ec,0x532d,0x532c,0x638e,0x5b6d,0x638e,0x4b4c,0x5b8e,0x4b0d,0x4acc,0x4acc,0x532c,0x4aec,0x4b0c,0x4acc,0x530d,0x4aec,0x42cb,0x4acb,0x4acb,0x4aac,0x4acb,0x52cb,0x530c,0x5aec,0x52ec,0x5b2d,0x4aec,0x4aec,0x52cc,0x530c,0x5b0c,0x530d,0x42ec,0x4b0d,0x52ec,0x5b0d,0x530c,0x530c,0x5b0d,0x530d,0x532d,0x5b0c,0x5b4d,0x530c,0x636e,0x4b2d,0x536e,0x5b6e,0x530d,0x6b8d,0x638e,0x632c,0x73af,0x5b2d,0x5bcf,0x4b4d,0x638e,0x63cf,0x63af,0x4aeb,0x62ec,0x7b0c,0x7aca,0x7a8b,0x728a,0x7aab,0x7aab,0x7aab,0x7aaa,0x72ca,0x72ab,0x72ab,0x7aab,0x72ab,0x7aab,0x7aab,0x72ab,0x72ab,0x728a,0x728b,0x7aab,0x7a6a,0x7a6a,0x7a8a,0x7aab,0x7aaa,0x7aaa,0x7a8a,0x726a,0x7acb,0x7aec,0x7a69,0x724a,0x7a6a,0x7229,0x7249,0x7a6a,0x7269,0x6a49,0x6a49,0x6a29,0x7a49,0x7249,0x7249,0x7229,0x7229,0x7229,0x7249,0x7269,0x7249,0x726a,0x6a49,0x6a29,0x6249,0x6a49,0x7269,0x726a,0x7a6a,0x7229,0x6a49,0x6229,0x6a08,0x6a29,0x6a49,0x6a49,0x6a49,0x6a28,0x6a28,0x6208,0x6208,0x6208,0x6a08,0x61e8,0x61e8,0x61c8,0x61c8,0x59c8,0x59a8,0x69c8,0x61e8,0x61c7,0x69e8,0x5208,0x3a07,0x39c7,0x532d,0x5b4e,0x4acb,0x4b0b,0x5b6e,0x320a,0x63af,0x42ab,0x6bae,0x4b0c,0x536d,0x326a,0x636e,0x424a,0x530c,0x428a,0x4a6b,0x4aab,0x422a,0x426a,0x4249,0x3a29,0x4a8a,0x530d,0x3a8b,0x2a29,0x3209,0x4a8b,0x4a8b,0x5aec,0x3a4a,0x322a,0x426b,0x4a8a,0x428b,0x4209,0x422a,0x426a,0x3a49,0x3a08,0x428a,0x42cc,0x3a4a,0x3187,0x31e8,0x31c9,0x4acc,0x530c,0x41c8,0x2966,0x39c8,0x4a6b,0x52cc,0x422a,0x31c7,0x2187,0x2a2a,0x3228,0x4208,0x4a29,0x4a6a,0x3a6a,0x2186,0x39e8,0x3a89,0x4b0c,0x3229,0x1926,0x1988,0x3a4a,0x3a8b,0x3229,0x426b,0x52eb,0x3a6a,0x29c9,0x3a49,0x4a6b,0x52ac,0x424a,0x2a08,0x2166,0x3a8a,0x5b6d,0x4a2a,0x2987,0x31a8,0x3208,0x4209,0x39c7,0x31e9,0x31e9,0x3a4a,0x29c7,0x21a7,0x3229,0x3a6a,0x39c8,0x2166,0x2166,0x31c7,0x3a49,0x3249,0x2966,0x2144,0x9d96,0x31a8,0x18e3,0x1925,0x2945,0x2145,0x1944,0x4247,0x52e9,0x5aea,0x5aea, +0xa658,0x42c9,0x52e9,0x5ac9,0x52ea,0x530a,0x4207,0x3166,0x422a,0x4a28,0x3a29,0x39a8,0xbd95,0xb6da,0x2946,0xadf7,0x9535,0xa555,0x9554,0x7451,0x94d3,0xadf7,0xad96,0x9514,0x9514,0x9d96,0x9d76,0xa596,0x9d75,0x8d55,0x9d55,0x9555,0xa535,0x9d36,0x9576,0xadb7,0x9d77,0x94d5,0x9cf5,0xb618,0xbe9a,0xb5d7,0x9d15,0xa596,0xadd7,0xbdf8,0xc679,0x9d55,0x9d35,0xb5f7,0xcefb,0xbe79,0x9d75,0x94f4,0xad96,0xce9a,0xcf1c,0xa535,0x9d35,0xa5f7,0xae17,0xbeba,0xb618,0x9d75,0xa638,0xb639,0xb639,0xbe78,0xbe9a,0xb658,0xc679,0xceda,0xadb8,0xcf1b,0xae59,0xadb7,0xc6ba,0xbe79,0xbe99,0xae59,0xb659,0xc69a,0xbe18,0xb618,0xcf1c,0xbe9a,0xadd7,0xae18,0xb659,0xcedb,0xcefb,0xa5f7,0x9d14,0xb639,0xcefb,0xc67a,0xae38,0x9514,0xb639,0xd6db,0xcedb,0xbe79,0xae58,0xdf9d,0xae38,0xb69a,0xdf1c,0xb65a,0xe79e,0xd6fc,0xef7e,0xdf9e,0xadb6,0xf7ff,0xb639,0xefde,0xefff,0xc6db,0x428a,0x7acb,0x82ca,0xa513,0xb5b6,0xb618,0xc659,0xbe18,0xbe38,0xbe37,0xbe38,0xc67a,0xbe59,0xb618,0xbe38,0xbe59,0xadf7,0xadf7,0xb618,0xb618,0xadd7,0xadf7,0xadd7,0xa596,0xadb7,0xadb7,0xadd7,0xadd7,0xb5d7,0xadf7,0xae17,0xb617,0xb617,0xbe38,0xbe58,0xbe38,0xbe38,0xbe58,0xbe58,0xbe79,0xb658,0xb679,0xbe59,0xbe18,0xb5d7,0xb5d7,0xbe39,0xbe59,0xb659,0xb639,0xae18,0xb658,0xbe59,0xb618,0xb5f7,0xb618,0xb638,0xc679,0xc67a,0xbe79,0xae59,0xae38,0xbe79,0xbe58,0xbe39,0xbe59,0xc67a,0xbe59,0xbe79,0xbe59,0xb658,0xbe59,0xbe59,0xbe79,0xb659,0xb658,0xbe79,0xbe79,0xbe7a,0xbe79,0xb638,0xb618,0x9bf1,0x79e9,0x4208,0x3a07,0xf7ff,0xe7be,0xc67a,0xceba,0xdf9e,0x6b8f,0xe7de,0x9514,0xe73b,0xb5d7,0xcf1b,0x7c51,0xdf3c,0x73d0,0xb618,0xad96,0x94f3,0xadb5,0xa597,0xadf8,0x8cd3,0x8411,0xb595,0xcedc,0xadf8,0x7c11,0x6b6e,0xa4f3,0xb618,0xb638,0x8451,0x8411,0x9cf4,0x9db6,0x8cd3,0x8cb4,0x9d55,0x9514,0x8cd3,0x638f,0x8cd3,0xb639,0xa5d8,0x636f,0x534d,0x7c32,0xad96,0xd6db,0x8c52,0x5aec,0x7bf0,0xad97,0xb618,0x8453,0x736e,0x7cb2,0x7c72,0x73f1,0x7c32,0x8493,0x8d15,0x7451,0x4acb,0x530c,0xa536,0xb618,0x7c71,0x5acc,0x52cd,0x9514,0xb618,0x73af,0x8432,0x7c32,0x8c53,0x632d,0x636e,0x9514,0x9d34,0x7c50,0x3acb,0x4aab,0x8431,0xb5b5,0x8410,0x52ab,0x632d,0x7bf0,0x6bd0,0x6bae,0x6bb0,0x7c31,0x73ef,0x52cc,0x52cc,0x7c10,0x9d35,0x7c11,0x4a49,0x4acc,0x73f0,0x8cb2,0x8451,0x528c,0x2146,0xa5d6,0x41a8,0x18e4,0x1925,0x2925,0x2145,0x2164,0x4a27,0x5aea,0x62ea,0x5aeb, +0xa637,0x4ae9,0x5aea,0x5ac9,0x52e9,0x52e9,0x3a28,0x3166,0x4229,0x3a28,0x3a28,0x3987,0xbd95,0xb6ba,0x2946,0xa596,0x94f4,0x9515,0x9d14,0x7c92,0x9514,0xae18,0xa5b6,0x9534,0x8cf4,0x94f4,0x9514,0xadb7,0x9514,0x9575,0x9d76,0x9d55,0x9cf4,0x9d55,0x9d96,0xa555,0x9d55,0x9cf4,0x9cd4,0xae17,0xae17,0xa596,0x9cd4,0x94b3,0xa5d7,0xc65a,0xbe79,0x8cb3,0x94b3,0xadd7,0xbe99,0xb618,0x9cf4,0x94d3,0xa595,0xceba,0xbe79,0xa555,0x94d3,0x9db6,0xadd7,0xbe79,0xa5b6,0x9d75,0xa5d7,0xb618,0xb638,0xadf7,0xae18,0xb618,0xbe18,0xbdd7,0xb596,0xceba,0xadf7,0xadb6,0xb618,0xbe58,0xae18,0xbe58,0xae18,0xadb7,0xb5d7,0xbe18,0xcefc,0xc679,0xa576,0xad77,0xbe19,0xd73c,0xdf1c,0xa576,0x9cd3,0xb5f8,0xd73c,0xd6fb,0xb5b7,0x9d34,0xb5f8,0xd6fb,0xcefb,0xb638,0xadd7,0xdf3d,0xad55,0xb67a,0xdefc,0xb639,0xdf5c,0xce9a,0xef7d,0xdf7d,0xad76,0xef9e,0xb5d8,0xf7de,0xe79d,0xc6fc,0x4a6a,0x82cb,0xacb1,0xefde,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xef9d,0xef9e,0xe79e,0xe79e,0xe79e,0xe79d,0xe77e,0xe79e,0xef9d,0xef7d,0xef9e,0xe79d,0xef9e,0xef9e,0xe79e,0xef9d,0xef7d,0xe79d,0xe77d,0xe77d,0xe77d,0xe79e,0xe7be,0xe77d,0xe79d,0xe77d,0xe77d,0xe77d,0xe77d,0xe79d,0xe77d,0xdf5d,0xe77d,0xe77d,0xe77d,0xdf5c,0xe77d,0xe77d,0xdf5d,0xe77d,0xe77d,0xdf5d,0xdf7d,0xe77d,0xe77d,0xd77c,0xdf5d,0xdf5c,0xe75d,0xe75d,0xdf5c,0xdf5c,0xe75d,0xe77d,0xdf5c,0xdf5c,0xd73c,0xd71c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdf1c,0xe73e,0x61a9,0x59e8,0x39c6,0xef9e,0xcedb,0xb5d8,0xbe58,0xd71c,0x6b6e,0xdf7d,0x94f3,0xd71a,0xa576,0xce99,0x8451,0xceda,0x638e,0xb5f7,0x9d54,0x8cf4,0x9d55,0xad95,0xadb7,0x8472,0x6baf,0x9cf4,0xc6da,0xa596,0x738f,0x530d,0x94d3,0xb617,0xadf7,0x7c51,0x73ef,0x94b2,0x9d34,0x8451,0x94b4,0x9d34,0x9d14,0x8cb3,0x5b8e,0x8472,0xadd7,0xb5d7,0x636f,0x5b2d,0x7c31,0xb5d7,0xc679,0x7bd0,0x5aab,0x73af,0xa555,0x9d75,0x8451,0x7bd0,0x73ef,0x7c51,0x8411,0x7410,0x8cf3,0xa596,0x7410,0x4acb,0x5b2e,0x9514,0xadb6,0x7c51,0x4a4b,0x52ed,0x94f3,0xa575,0x73cf,0x8411,0x8c71,0x73cf,0x5b4e,0x5b6f,0x8472,0xa553,0x7c31,0x4acb,0x4a4a,0x8472,0x9d54,0x7bef,0x5acc,0x630d,0x6bcf,0x6baf,0x6b8e,0x73d0,0x7c11,0x6bae,0x3aab,0x428b,0x73f0,0x9513,0x6baf,0x426a,0x3a2a,0x6baf,0x8492,0x8472,0x4a6a,0x3187,0xa5d7,0x4188,0x18e4,0x1905,0x2145,0x1965,0x1944,0x4a27,0x52e9,0x62ea,0x5b0a, +0xa638,0x4aa9,0x5aea,0x5b0a,0x5aea,0x52ca,0x2a28,0x2966,0x424a,0x3a29,0x3a28,0x3967,0xc5b6,0xae7a,0x3167,0xa595,0x9d55,0x9d35,0x9514,0x8cb3,0x9d34,0xadd6,0xadd7,0x9514,0x84d3,0x8cf3,0x9535,0xadd7,0x9514,0x9d95,0x9d55,0x9d35,0x9d15,0x9d55,0x9d75,0x9d55,0x9d55,0x94f4,0x9cf5,0xa5f7,0xa617,0xadb7,0x94d4,0x94b4,0xa596,0xbe9a,0xb637,0x94b3,0x94f3,0xa5d7,0xbe9a,0xb659,0x94d4,0x9cd3,0xb5d6,0xd6fb,0xc659,0xa596,0x9cd3,0xa5b6,0xb618,0xce99,0xadb7,0xa596,0xa5d6,0xbe58,0xc679,0xb5f8,0xadf8,0xae18,0xbdf8,0xbdd8,0xb5d8,0xb658,0xb638,0xadd7,0xb5f8,0xbe38,0xb638,0xbe79,0xae18,0xb5d7,0xb5b7,0xc659,0xd71c,0xc69a,0xad96,0xa576,0xc659,0xd75c,0xd6fb,0xad96,0x9cb3,0xb618,0xdf3c,0xceda,0xb5d7,0xa555,0xb5f8,0xcedb,0xcedb,0xb618,0xadf7,0xdf5d,0xad76,0xbe79,0xe71c,0xae18,0xdf5c,0xc679,0xdf3b,0xe79e,0xad76,0xefbe,0xb5b7,0xf7be,0xe77d,0xcf1c,0x424a,0x8aab,0xb534,0xe79d,0xe77d,0xe77d,0xe79d,0xe77d,0xdf5c,0xe77d,0xe77d,0xe77e,0xe77d,0xe77d,0xe75c,0xe77d,0xe77d,0xe75d,0xe75d,0xdf7d,0xe77d,0xdf7c,0xdf7d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xdf5c,0xe75d,0xe75c,0xe75d,0xe77c,0xe77d,0xe73d,0xe75d,0xef7d,0xdf3c,0xdf5c,0xe77d,0xe73c,0xdf3c,0xdf5c,0xdf3c,0xdf5c,0xdf5d,0xdf3c,0xdf5c,0xdf5c,0xdf3c,0xdf5c,0xe75d,0xdf5d,0xdf3d,0xdf1c,0xdf3c,0xdf5c,0xdf3c,0xe73c,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xd71c,0xdf3c,0xd73c,0xd71c,0xd71b,0xd71b,0xd6fb,0xd6fc,0xd6fb,0xd6fb,0xd71b,0xd71b,0xd71b,0xcefb,0xd6fb,0xd6fb,0xd6fb,0xcefc,0xdf5d,0x59ea,0x61c8,0x31c6,0xdf5c,0xcedb,0xbe19,0xbe58,0xd6fb,0x6b4d,0xe77d,0xa596,0xd6da,0xa576,0xc699,0x8cb2,0xceda,0x6b8f,0xb618,0x9d55,0x8cd3,0x9d55,0xb596,0xad97,0x7432,0x63af,0x9d35,0xcefa,0xadb6,0x7bd0,0x6b4e,0x9d35,0xa5b6,0xadb6,0x8451,0x7c10,0x94f4,0x9d34,0x7c72,0x94d4,0x9d34,0xa554,0x8452,0x6b8f,0x8c93,0xb5f8,0xa5b5,0x6bb0,0x5b6d,0x7410,0xadb6,0xb617,0x6bef,0x52aa,0x7bcf,0x9d34,0x9555,0x8491,0x7bf0,0x8431,0x7c31,0x73af,0x7411,0x9534,0xa576,0x7411,0x42ac,0x5b2e,0x8cf4,0xadb6,0x7c50,0x528c,0x5b0d,0x8c92,0xa575,0x7c10,0x7c31,0x8472,0x73d0,0x530d,0x636e,0x8492,0xa554,0x7c31,0x428b,0x4aab,0x8492,0x9d73,0x7c10,0x52ec,0x5b0c,0x73d0,0x6baf,0x636e,0x73b0,0x8471,0x6baf,0x428b,0x3a8b,0x73f0,0x8d13,0x73d0,0x426a,0x3a49,0x6b8e,0x8cb2,0x7c51,0x4a4a,0x3186,0x9d75,0x41a9,0x1904,0x1925,0x2145,0x2186,0x2125,0x4227,0x52ea,0x62ea,0x5aea, +0x9e37,0x42aa,0x52ea,0x5aea,0x5aca,0x4aa9,0x3228,0x2966,0x4249,0x3a49,0x3a29,0x4187,0xbdb6,0xa67a,0x3947,0xa5b6,0x9d55,0x9d36,0x8d14,0x8cb3,0x9cf4,0xad96,0xadb6,0x9d35,0x8cd4,0x94d4,0x9d35,0xa5d7,0x8cf4,0x9534,0x9d76,0x94f4,0xa535,0x9d55,0x9d95,0x9d76,0x9d75,0x94f5,0x9d15,0x9d96,0xadf7,0x9596,0x94b4,0x9cf5,0xa577,0xbe9a,0xbe38,0x94b3,0x8cd3,0xa5b6,0xceba,0xbe7a,0x8cf4,0x9cf3,0xb5b6,0xcefa,0xc679,0xadb6,0x94d3,0xadd7,0xb618,0xbe79,0xa5b6,0x9d75,0xa5d6,0xbe59,0xbe79,0xb5f8,0xa5b6,0xb618,0xb617,0xb5f7,0xb5d8,0xbe58,0xb618,0xadb7,0xbe59,0xb5f7,0xb617,0xb659,0xb5f8,0xb5d8,0xb5d8,0xbe59,0xcefb,0xcebb,0xa576,0xa535,0xbe38,0xd73b,0xcf1b,0xad96,0x94f4,0xb618,0xdf3c,0xd6bb,0xad97,0xa535,0xb5f8,0xcedb,0xcedb,0xbe38,0xa5f7,0xdf5d,0xad76,0xbe9a,0xdefc,0xae18,0xe77d,0xc69a,0xd6fb,0xdf7e,0xad35,0xefde,0xadb7,0xefbe,0xe77e,0xd73d,0x4229,0x828b,0xbd34,0xefbe,0xdf5d,0xe75d,0xe77d,0xe79d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xdf5d,0xe77d,0xdf7d,0xdf5d,0xef7e,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe75d,0xdf5c,0xdf5c,0xe75c,0xe77e,0xce9a,0xadb6,0xce99,0xe75c,0xbdb5,0xbdd7,0xdf1a,0xe77c,0xc679,0xdf3b,0xdf3c,0xe75c,0xc638,0xad55,0xdf3c,0xbe39,0xb596,0xbdd6,0xdf3c,0xdf1c,0xdf5c,0xdf3c,0xdf3c,0xdf5c,0xdf3c,0xe73c,0xdf3c,0xd73c,0xd71c,0xd71c,0xdf3c,0xdf3c,0xd71c,0xd71c,0xd71c,0xd6fb,0xd6fb,0xd6fb,0xdf1c,0xd6fb,0xdf3c,0xcefb,0xcefb,0xd6db,0xd6fb,0xcedb,0xcefb,0xdf9e,0x59ea,0x6209,0x31c6,0xe77c,0xcedb,0xb5d8,0xbe58,0xcefb,0x6b4d,0xe7be,0xad76,0xceba,0xadb7,0xc678,0x8c93,0xceba,0x6b2e,0xbe38,0x9d35,0x8cd4,0xa555,0xb5d7,0xa555,0x7411,0x638f,0x9d55,0xcefb,0xc638,0x73cf,0x738e,0xa555,0xadb7,0xa575,0x94b4,0x8451,0x94f4,0x9534,0x8472,0x94d3,0x9d55,0x9513,0x7411,0x5b2d,0x8c93,0xbe38,0xa5b6,0x6bb0,0x5b0c,0x73f0,0xadf7,0xadd7,0x73ef,0x52aa,0x7b8f,0xa534,0x9534,0x8491,0x7bf0,0x8472,0x73f1,0x738e,0x7410,0x9cd2,0x9d36,0x7411,0x4aac,0x6b4e,0x9534,0xb5f8,0x7c11,0x52ec,0x630c,0x7c72,0x9533,0x73ef,0x7c11,0x8c92,0x73f0,0x530c,0x632e,0x9515,0x9534,0x7431,0x426a,0x4aab,0x7c52,0x9d34,0x7c10,0x52ec,0x636e,0x73af,0x6b8e,0x630d,0x73af,0x7c72,0x6baf,0x428c,0x426b,0x6bf0,0x8cf3,0x6bb0,0x3a29,0x3a08,0x6b6e,0x8cb2,0x8471,0x4a4b,0x2986,0x9d55,0x3988,0x18e3,0x1925,0x2125,0x2965,0x2105,0x4247,0x52ca,0x5b0a,0x62ea, +0x9e17,0x42aa,0x5aea,0x5ae9,0x5aca,0x52c9,0x3228,0x3187,0x4229,0x4228,0x3a08,0x3966,0xc5f7,0x9e7a,0x4168,0xadb6,0x9d55,0xa596,0x8cd3,0x8492,0x8cb3,0xa5d7,0xa5d6,0x9d55,0x8492,0x9514,0x9d35,0xa5b7,0x9535,0x9515,0x9d75,0x9514,0xa596,0x9d76,0x9575,0x9d96,0xa576,0x9515,0xa556,0x9db7,0xa5f6,0x9d96,0x94d4,0x9d14,0xad96,0xbe7a,0xb639,0x8c72,0x8c92,0xadb6,0xc699,0xbe58,0x9cf4,0x9cd3,0xadb6,0xc6da,0xbe79,0xad95,0x9d14,0xa576,0xbe58,0xbe99,0xa596,0xa555,0xadd6,0xbe59,0xc679,0xb5f8,0xadb6,0xbe59,0xae18,0xbe18,0xadb7,0xbe59,0xadd7,0xb617,0xc69a,0xadd7,0xb618,0xb699,0xb618,0xadb7,0xb5d7,0xc659,0xd71c,0xc69a,0xa576,0x9cf5,0xc659,0xd73c,0xdf3c,0xb5b7,0x9cf5,0xbe18,0xd71c,0xcefb,0xad96,0xa555,0xb618,0xc69a,0xcedb,0xb638,0xadf8,0xdf7d,0xad76,0xbe7a,0xd6db,0xb639,0xe77d,0xc69a,0xceba,0xdf9e,0xa535,0xefdf,0xadb7,0xef9d,0xe79d,0xcf1c,0x3a08,0x7a8b,0xb534,0xefbe,0xdf5d,0xe77d,0xe77d,0xdf5d,0xe77d,0xe77d,0xe75d,0xe79d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe75d,0xdf5c,0xe73d,0xdf3c,0xefbf,0x8cb2,0xd73c,0xceba,0xdf5d,0x9452,0xbdf8,0xad75,0xf7ff,0x8cb3,0xa534,0xef9d,0xbe18,0xbdf7,0xc699,0xceba,0x8c32,0xce39,0xd71b,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xdf3c,0xdf1c,0xdf3c,0xd71c,0xdf1c,0xdf3c,0xdf3c,0xd73c,0xd73c,0xd71c,0xd71b,0xd73c,0xd6fb,0xd6fb,0xdf3c,0xd6fb,0xd71c,0xd71c,0xd6fb,0xdefb,0xd6fb,0xd6fb,0xd6bb,0xe77e,0x620b,0x6208,0x31a6,0xe77d,0xcefb,0xbdf8,0xc658,0xcf1c,0x634d,0xdf7c,0xa535,0xceda,0xb5d7,0xbe38,0x8cb3,0xc699,0x6b0e,0xc679,0x9d14,0x94d4,0xa535,0xbe59,0x9d55,0x6bf0,0x63af,0x9534,0xd73c,0xbe38,0x73f0,0x6b4e,0x94f4,0xb5f7,0xa595,0x8cb3,0x8472,0x8cd3,0x94f3,0x8452,0x94d3,0xad75,0xa555,0x73f0,0x5b0d,0x7c72,0xc679,0xad96,0x638f,0x52ec,0x7431,0xadf7,0xb618,0x8431,0x5b0c,0x6b6e,0x9d75,0x9d54,0x7c71,0x7c30,0x84b3,0x7411,0x636d,0x8451,0x94d3,0x9d35,0x7c51,0x4a8b,0x636e,0x9534,0xbe58,0x8432,0x52cc,0x5acc,0x94d3,0x8cf3,0x7410,0x7c10,0x94d3,0x6bf0,0x52ec,0x5aec,0x9514,0x9534,0x7431,0x4249,0x52cc,0x7c51,0x9d54,0x73ef,0x5aec,0x6b8e,0x6bcf,0x6b6d,0x632d,0x73af,0x8472,0x638e,0x4acc,0x426b,0x7430,0x8d13,0x63f0,0x3a09,0x31e8,0x5b4e,0x8cb3,0x8471,0x426b,0x2985,0x9d55,0x39c9,0x18c3,0x1945,0x2146,0x2166,0x2125,0x4247,0x5aea,0x5aea,0x62eb, +0x9617,0x4aa9,0x5aea,0x5aca,0x52ca,0x5aaa,0x3228,0x31a7,0x3a09,0x3a29,0x3a09,0x3967,0xc5f7,0x9618,0x4188,0xa596,0xa5b7,0x9d75,0xa595,0x7c72,0x84b2,0xadf7,0xb658,0x94f4,0x7c51,0x8cf3,0x9d35,0xadb7,0x9d55,0x94b3,0x9555,0x9d35,0xadb7,0x9d76,0x9575,0x9d76,0xa556,0x9cf4,0x9d35,0x9dd7,0xadd7,0x9d76,0x94d4,0x94d4,0xa5b6,0xbe99,0xae18,0x94b3,0x9493,0xadb7,0xbe99,0xbe79,0xa535,0x94b3,0xad95,0xc6ba,0xc679,0xad76,0x94d3,0xa575,0xbe79,0xbe7a,0xa576,0x9d34,0xadf7,0xbe59,0xbe59,0xb5f8,0xa596,0xadd7,0xb618,0xbe18,0xb5d7,0xbe79,0xa5d7,0xadb6,0xbe79,0xadd7,0xb619,0xbeba,0xb638,0xad96,0xb5b7,0xbe18,0xcefb,0xbe79,0xad76,0xa515,0xc638,0xd75c,0xdf1c,0xad97,0x9d35,0xb5f8,0xd71c,0xd71c,0xb5b7,0x9d34,0xbe59,0xce9a,0xd6db,0xbe38,0xadf7,0xdf7d,0xad55,0xc69a,0xd6db,0xb659,0xe75d,0xc6ba,0xd6da,0xe7be,0xa4f4,0xefde,0xb5d7,0xef9d,0xe75c,0xcf1c,0x3a08,0x828b,0xb534,0xe79e,0xdf5d,0xe75d,0xe77d,0xe75d,0xe77d,0xe75d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xdf5c,0xe73c,0xdf3c,0xe75c,0xdf3c,0xdf5c,0xe77e,0xbe59,0x9d34,0xc658,0xdf7d,0x73cf,0x9d13,0xceda,0xc6da,0x9d55,0x8472,0xe75c,0xb5d8,0xe77d,0xdf3c,0xe77d,0x8cb3,0x9cf3,0xa554,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xd73c,0xdf3c,0xdf3c,0xd71b,0xd71b,0xdf1c,0xdf3c,0xe77d,0xd73c,0xd71c,0xdf3c,0xd71c,0xd71c,0xdf1c,0xd71c,0xd71c,0xdf3c,0xd6fb,0xcefb,0xd73c,0xd6fc,0xcedb,0xcefb,0xcefb,0xd6db,0xd75d,0x620b,0x5a08,0x31a7,0xe77d,0xcefb,0xbe39,0xc658,0xcf1c,0x636e,0xdf5c,0x9d35,0xceda,0xadb7,0xc699,0x9d15,0xc679,0x6b4e,0xce9a,0x94d4,0x8c93,0xa515,0xc679,0xa596,0x73f0,0x636e,0x94f4,0xd73b,0xb5f7,0x73ef,0x6b6e,0x94f4,0xa595,0xa555,0x8492,0x7c72,0x94f3,0x94d3,0x7c31,0x8c92,0xad96,0xa576,0x7410,0x532d,0x8c93,0xc659,0xa596,0x638f,0x52ec,0x7c31,0xadf7,0xbe39,0x8410,0x630c,0x6b6f,0x9d55,0x9513,0x8c92,0x8472,0x8492,0x7431,0x538e,0x7c30,0x94f4,0x9d35,0x8431,0x4a8b,0x63af,0x94d3,0xbe17,0x7c31,0x52ac,0x5b0d,0x8c93,0x9d34,0x73d0,0x8492,0x8cb3,0x73d0,0x3aab,0x4b0d,0x94d3,0x9d34,0x7c51,0x4229,0x52ab,0x7c71,0x9d74,0x6bcf,0x632d,0x6b4e,0x73ef,0x630d,0x5b0c,0x73f0,0x7c30,0x6baf,0x3a8c,0x3a6a,0x7430,0x9534,0x7410,0x3a09,0x31e8,0x638e,0x8cd3,0x7c50,0x424a,0x3187,0x9534,0x524b,0x10c3,0x1925,0x1946,0x2987,0x18e4,0x4227,0x5aea,0x62eb,0x630b, +0x9e17,0x42a8,0x5aea,0x5ac9,0x5ac9,0x4aa9,0x3a28,0x2985,0x3228,0x3a49,0x3a29,0x3167,0xc617,0x9e59,0x39a9,0xa575,0xadd6,0x9d75,0x8cb3,0x7c51,0x84d3,0xadd7,0xae18,0x84d3,0x8451,0x8c92,0x9d55,0xae18,0x9d55,0x94d3,0x9514,0xa575,0xadb7,0x9d76,0x9d55,0x9556,0xa576,0xa555,0x9535,0xa5d7,0xa617,0xa596,0x9d15,0x94f4,0xa596,0xb637,0xa5f8,0x8cb3,0x94b4,0xadb7,0xc6da,0xc69a,0x9d55,0x94b2,0xa575,0xc6ba,0xc69a,0xad76,0x94d3,0xadb6,0xbe58,0xc6ba,0xadb6,0x9d14,0xadd7,0xbe59,0xbe59,0xb5d8,0xadb7,0xadd7,0xb5f8,0xbe38,0xbe18,0xbe9a,0xa5d7,0xadb6,0xc6ba,0xadd8,0xb639,0xbe59,0xb638,0xad96,0xad96,0xbe18,0xceba,0xbe99,0xa556,0xa535,0xbe18,0xd75c,0xdf3c,0xad97,0x94d3,0xb618,0xd71b,0xd71b,0xadb6,0xa535,0xbe39,0xc69a,0xcebb,0xb618,0xadf7,0xe77d,0xb596,0xc6bb,0xd6ba,0xbe9a,0xef7d,0xc69a,0xdefb,0xdf7e,0xa514,0xefdf,0xb5f8,0xef9d,0xe77c,0xd73d,0x39c8,0x7a6a,0xad14,0xe77e,0xe77d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xdf5d,0xe77d,0xe77d,0xdf5d,0xe75c,0xdf5c,0xe75d,0xe75d,0xe75d,0xe75d,0xe75c,0xdf5c,0xd73d,0xad75,0xe79e,0x9513,0xe77e,0x9555,0xe79d,0xe73d,0x8cf3,0xb659,0xb659,0xc638,0xbeba,0xb5d7,0xb5f7,0xcefa,0x8cd4,0xc659,0xceba,0xd73c,0xdf1c,0xdf1c,0xe73c,0xdf3c,0xdf3c,0xdf3c,0xd71c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xd71c,0xdf1c,0xdf1c,0xdf3c,0xd6fc,0xdf1c,0xdf1c,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6fb,0xcf1b,0xd6fb,0xdf5e,0x59c9,0x6209,0x29a6,0xe77c,0xcefb,0xb619,0xc658,0xcefb,0x6b6f,0xe79d,0x9556,0xd71b,0xa596,0xceba,0x94d4,0xc699,0x6b6e,0xc679,0x9cf4,0x8492,0xa555,0xce99,0x9d75,0x73d0,0x632e,0x9d55,0xceda,0xb596,0x73cf,0x5b2d,0x9d14,0xa595,0x9d14,0x8cb3,0x8493,0x9514,0x8cb3,0x73f0,0x8c93,0xb5f7,0xa576,0x7c32,0x52ed,0x8cb3,0xbe59,0xadb6,0x6baf,0x4aac,0x7c11,0xadd7,0xae18,0x7c10,0x630d,0x73af,0x9533,0x8d13,0x7c51,0x8c92,0x8472,0x7c51,0x5b4e,0x7c31,0x9d36,0xa576,0x7c31,0x52ac,0x638e,0x94d3,0xb5d7,0x7c10,0x52ac,0x5aec,0x84d3,0x8cf3,0x73d0,0x7c31,0x8cb3,0x73f0,0x3a8c,0x4acd,0x9535,0xa535,0x7c10,0x3a09,0x4aab,0x7c51,0x9513,0x73cf,0x630d,0x634d,0x73cf,0x632d,0x634e,0x7c11,0x8492,0x6baf,0x3a6b,0x426a,0x73cf,0x9554,0x740f,0x39e8,0x39e8,0x5b6d,0x9514,0x7431,0x528a,0x31a8,0x8d13,0x4a4b,0x08c3,0x1104,0x2166,0x3946,0x2925,0x4227,0x5b0a,0x5aea,0x5b0a, +0x9df7,0x4ac9,0x52c9,0x52ca,0x52c9,0x52c9,0x3a08,0x2166,0x3a49,0x4229,0x31e8,0x2967,0xc617,0x9e39,0x41c9,0x9d55,0xb617,0xa5b6,0x8cd3,0x8451,0x8cb2,0xadd7,0xadf7,0x94f4,0x8c31,0x8472,0xa596,0xb638,0x9d75,0x8cd4,0x8cb3,0xa596,0xa5b6,0x9d76,0x9514,0x9535,0x9d76,0x9d35,0x9514,0xa5d7,0x9dd6,0xa5b7,0xa536,0xa515,0xa5b7,0xae38,0xadf7,0x8cd3,0x94b4,0xadd7,0xc6da,0xc679,0x9d14,0x8c92,0xa5b6,0xc6da,0xbe7a,0xadb7,0x94f4,0xa596,0xbe79,0xcefb,0xadd7,0xa576,0xa596,0xc679,0xbe79,0xb5f8,0xadd7,0xadd7,0xb5f8,0xbe18,0xb618,0xae18,0xa618,0xad96,0xc679,0xadb7,0xa5f8,0xb69a,0xb5f8,0xad96,0xad96,0xbe38,0xcefb,0xc69a,0xa576,0xa535,0xbe39,0xd75c,0xd73c,0xadb7,0x94b3,0xbe59,0xd71c,0xcefb,0xadb7,0xa555,0xb618,0xcedb,0xc69a,0xb618,0xadd7,0xe77d,0xb576,0xc6bb,0xd69a,0xb659,0xef7d,0xbe9a,0xdf1c,0xd77e,0x9d14,0xefdf,0xadd7,0xef7d,0xdf7d,0xcf5d,0x31a8,0x826b,0xb514,0xe75d,0xe73d,0xe75d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xdf5d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xdf5d,0xe75c,0xe77d,0xe77d,0xdf3c,0xe75c,0xe75d,0xdf3c,0xe77d,0xe77d,0xe77d,0xdf3c,0xdf7d,0xbe79,0xb5f7,0xc699,0xe79d,0xd6fb,0xdf3c,0xdf5c,0xc699,0xdf9d,0xdf7d,0xc6da,0xdf5d,0xbe38,0xb618,0xd73c,0xc69a,0xb5f7,0xbe37,0xd75c,0xdf3c,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xd73c,0xdf3c,0xdf1c,0xd71c,0xd71b,0xdf1c,0xd71c,0xd71c,0xdf1c,0xdf3d,0xd71c,0xd6fb,0xdf1c,0xd71c,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xd71c,0xcedb,0xcedb,0xd6fb,0xd6fb,0xdf5d,0x5a09,0x61c8,0x31e7,0xe77b,0xd6fb,0xb639,0xb617,0xd6fc,0x630d,0xdf7d,0xa577,0xdf1b,0xa576,0xce79,0x94b3,0xceda,0x632e,0xbe79,0x8c72,0x7c72,0x9d76,0xc679,0xadb7,0x6b8f,0x634e,0xa575,0xceda,0xadb7,0x73f0,0x632d,0x9cf4,0xa5b6,0x9514,0x8c92,0x94d4,0x94f3,0x7451,0x73cf,0x8cd3,0xb618,0xa576,0x6c30,0x4acc,0x8492,0xbe79,0xad96,0x6bd0,0x4aac,0x73d0,0xb5f7,0xb659,0x7c31,0x5aed,0x6baf,0x9512,0x9513,0x6c10,0x8492,0x8c93,0x7c11,0x636e,0x73f0,0x9d55,0xadb7,0x7411,0x4aac,0x5b6e,0x9514,0xadb7,0x7c31,0x5acd,0x52ac,0x8cd2,0x84d3,0x6c10,0x8431,0x9cd4,0x6bb0,0x4acc,0x4a8c,0x9555,0xa555,0x7c11,0x3a29,0x4acb,0x7c51,0x9533,0x7bf0,0x630c,0x634d,0x6baf,0x5b4d,0x5b0c,0x7411,0x94d3,0x6b8f,0x3a6b,0x426a,0x7c31,0x9554,0x6bef,0x3a09,0x3208,0x5b4e,0x8cd3,0x7c51,0x52ab,0x39c9,0x9514,0x5aad,0x00c3,0x1905,0x2165,0x2967,0x2125,0x39e6,0x5309,0x5b0a,0x5aea, +0x8dd6,0x4aa9,0x5aea,0x5aea,0x52c9,0x4ac9,0x4208,0x3186,0x3a49,0x3a28,0x39e8,0x3167,0xce37,0x9e19,0x41c8,0x9d55,0x9d76,0x9d96,0x8cd3,0x9493,0x9492,0xadd7,0xadf7,0x94f4,0x8411,0x8492,0xa596,0xb638,0x9d55,0x8cb3,0x94d4,0x9d76,0xadd7,0xa596,0x8cf3,0x9575,0xa596,0x9514,0x9d35,0xa5d7,0xa596,0x9d96,0xa515,0xad15,0xa5f7,0xae18,0xb618,0x94b3,0x9493,0xadf7,0xbeba,0xbe9a,0x9d14,0x8c71,0xadb7,0xc6fa,0xbe79,0xb577,0x9cb3,0xa576,0xc6ba,0xc6ba,0xadf7,0x9d14,0xa575,0xc69a,0xbe79,0xb5f7,0xa5b6,0xb5f7,0xc679,0xbdf8,0xb618,0xae18,0xa5b6,0xadb6,0xbe18,0xb5f7,0xadf7,0xb6ba,0xb638,0xa576,0xad76,0xbe39,0xd73c,0xc69a,0xa556,0x9cf4,0xc659,0xd73b,0xd71c,0xa576,0x94b3,0xb5f7,0xd6fc,0xcefb,0xb5f8,0xa555,0xadd7,0xc699,0xc67a,0xb618,0xae18,0xdf5d,0xad56,0xcedb,0xd6bb,0xae59,0xe75c,0xcebb,0xe73c,0xe79e,0xa515,0xefdf,0xadd7,0xf77d,0xdf7d,0xcf3d,0x3a0a,0x826a,0xacf4,0xe77d,0xe75d,0xe77d,0xdf5c,0xdf5d,0xdf3c,0xe77d,0xe77d,0xdf5d,0xdf5d,0xe75d,0xe75d,0xdf5d,0xdf7d,0xe75d,0xe75d,0xe75d,0xe75d,0xdf5d,0xe75c,0xe77d,0xe75d,0xe75d,0xdf5c,0xe75d,0xdf5c,0xdf3c,0xdf5c,0xe75d,0xe75d,0xd73c,0xdf7c,0xdf5c,0xd75c,0xdf3d,0xdf5d,0xdf5d,0xdf5c,0xdf3c,0xd6fc,0xdf3c,0xdf3c,0xdf5c,0xd73c,0xdf5c,0xdf3c,0xdf5c,0xd73c,0xdf3c,0xd71c,0xdf3d,0xd71c,0xdf1c,0xdf1c,0xdf3c,0xd71c,0xdf3d,0xdf3c,0xdf3c,0xdf1b,0xdf1c,0xdf1b,0xd71c,0xdf1c,0xdefc,0xdf1c,0xd6fc,0xcefb,0xd6fb,0xdf1c,0xd71c,0xd71c,0xd6fc,0xd6fc,0xd6fb,0xd6fb,0xd6db,0xcefb,0xcefa,0xdf7e,0x61ea,0x6208,0x39a6,0xe77c,0xd6db,0xc69a,0xb617,0xd71c,0x5acc,0xdf7c,0xad97,0xd6da,0xad96,0xbe17,0x94d4,0xc679,0x5b0e,0xc659,0x8431,0x8471,0xa575,0xceba,0xadb7,0x6bb0,0x636e,0x9d55,0xc6ba,0xadb7,0x73cf,0x634e,0x9d14,0xadb6,0x8cf4,0x8493,0x94f3,0x94f3,0x7c72,0x6baf,0x9cf5,0xb619,0x9d55,0x7410,0x52ed,0x7cb2,0xbe79,0xa595,0x63cf,0x52cd,0x6bf0,0xb5f7,0xadd6,0x7c31,0x5b2d,0x73f0,0x9533,0x9513,0x7c10,0x8452,0x8c92,0x8471,0x5aed,0x6bf0,0xa555,0xadd7,0x73f0,0x426b,0x5b6e,0x9d54,0xb5d7,0x8493,0x52cc,0x632d,0x94b2,0x84b2,0x6c10,0x8c72,0x9cd4,0x73af,0x42cd,0x4aac,0x9534,0xa596,0x7411,0x3a4a,0x52eb,0x7c51,0x8d33,0x6baf,0x632e,0x6b6e,0x5b8e,0x5b4c,0x530c,0x73f0,0x8cd3,0x638f,0x3209,0x3a4a,0x7c30,0x8cf3,0x7431,0x3a29,0x3229,0x634e,0x8cd3,0x8cb2,0x4a6b,0x3a09,0x8cf3,0x528c,0x08a4,0x1124,0x2985,0x3186,0x2944,0x4a27,0x5ae9,0x62ea,0x5aea, +0x8dd6,0x4aaa,0x5aca,0x5aca,0x52ca,0x4aa9,0x3207,0x29a6,0x3a48,0x3a28,0x3a09,0x39a8,0xce37,0x95d8,0x5209,0x9d55,0xa597,0xa576,0x8cb3,0x8cb3,0x8cb2,0xb638,0xadf7,0x8cd3,0x8451,0x8451,0xadd7,0xadf7,0xa535,0x8c51,0x8c93,0x9d55,0xadf7,0xa595,0x94f4,0x9535,0xa576,0x9d76,0x9535,0x9d96,0x9db6,0x9d55,0x94f4,0x94b4,0x9d96,0xa5f7,0xa5f7,0x9453,0x9473,0xadd7,0xb69a,0xb638,0x9d14,0x8c31,0xad76,0xbeba,0xc6bb,0xa555,0x9472,0xa576,0xc69a,0xc699,0xb638,0x94d3,0xa595,0xbe79,0xbe59,0xadf7,0xa596,0xadd7,0xbe79,0xb5d7,0xbe17,0xbeda,0x9515,0xbe38,0xbe39,0xb5f8,0xadf7,0xb699,0xae18,0x9d55,0xa575,0xb618,0xcf3c,0xc69a,0x9d35,0x9cf5,0xbe39,0xd73c,0xd73c,0xa596,0x94b3,0xb5f8,0xcefc,0xcefb,0xb5f8,0x9d55,0xb5f7,0xd71a,0xc679,0xc659,0xb618,0xdf7d,0xa556,0xc6db,0xce9a,0xbe79,0xe77d,0xc69a,0xceda,0xe79e,0xad76,0xefbe,0xb5f8,0xef7d,0xdf5d,0xcf1c,0x3a4a,0x7a2a,0xb4f4,0xef7e,0xdf3c,0xdf5d,0xdf5c,0xdf5c,0xdf5d,0xe75d,0xdf3c,0xdf5d,0xdf5d,0xdf5c,0xdf5d,0xe77d,0xdf5c,0xdf5d,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf3c,0xdf5d,0xdf5c,0xdf5d,0xdf3c,0xdf5c,0xdf5d,0xdf5c,0xe75d,0xdf1c,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xdf1b,0xdf1c,0xdf3c,0xdf3c,0xd71b,0xdf3c,0xdf1c,0xdf1c,0xd6fb,0xdf1c,0xdf3c,0xdf1c,0xdf3c,0xdf1c,0xd71c,0xd71c,0xdf3c,0xd71c,0xd71c,0xdf3c,0xdf5d,0xd75c,0xdf3c,0xdf3c,0xd73c,0xdf3c,0xdf3c,0xd71b,0xdf1c,0xdf1b,0xd71c,0xd6fc,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd71c,0xd6fb,0xd6db,0xd71c,0xcedb,0xcedb,0xd6db,0xd6fb,0xcefa,0xe77e,0x6168,0x6248,0x3185,0xe77c,0xcedb,0xc67a,0xbe58,0xd73c,0x630c,0xdf5c,0xad97,0xd6ba,0xadb8,0xadb6,0x9cf4,0xbe59,0x5b4e,0xc679,0x9492,0x8452,0xad96,0xd6db,0xa596,0x6baf,0x5b2e,0x9d35,0xcefa,0xadd7,0x73d0,0x636e,0xa534,0xad95,0x7cb2,0x8cf4,0x9514,0x9d14,0x8473,0x6bb0,0x9d14,0xbe59,0x9535,0x63d0,0x5b0e,0x8452,0xceda,0x9d95,0x638e,0x5b4d,0x7410,0xb5d6,0xadb6,0x8450,0x632d,0x7bcf,0x9d33,0x8cd2,0x7c10,0x9473,0x94b3,0x8451,0x4acd,0x6baf,0xa596,0xadd7,0x73f1,0x426b,0x5b6e,0x9513,0xa5b6,0x7430,0x5aec,0x6b4d,0x8471,0x84b1,0x6bf0,0x8452,0x8c72,0x6bd0,0x3acd,0x4aac,0x94f4,0xa595,0x6bcf,0x422a,0x528b,0x7c30,0x7cb2,0x636e,0x6b8f,0x6b4e,0x6baf,0x530c,0x52cb,0x6bef,0x8492,0x63ae,0x322a,0x3a4a,0x7410,0x8d14,0x63af,0x3a4a,0x31c9,0x5b2c,0x9d75,0x7c51,0x526a,0x4a49,0x84b2,0x5a8c,0x18a4,0x1124,0x2965,0x2966,0x2104,0x3a07,0x5aa9,0x62ea,0x5aca, +0x8d95,0x4aa9,0x52ca,0x5aca,0x52c9,0x52c9,0x3207,0x3186,0x3a29,0x3a09,0x39e8,0x39a8,0xce37,0x8db7,0x5a49,0x9d54,0xa595,0x9514,0x94d4,0x8cb3,0x9493,0xb596,0xad96,0xa575,0x8472,0x94f3,0xad75,0xbdd8,0xad35,0x9472,0x94b4,0xa555,0xce9a,0xadd6,0xa535,0x94f4,0xbdf8,0xbe19,0xb5b7,0xadb7,0x94f5,0xb618,0x94f4,0x9cd4,0xadf7,0xb678,0xa5d7,0x9452,0x9472,0xc618,0xceba,0xc659,0xa575,0x9cd4,0xb597,0xd6db,0xd71c,0xa576,0xa4f4,0xad76,0xce79,0xdefb,0xb5f8,0x94d3,0xad97,0xbe39,0xceba,0xb618,0xa596,0xadb7,0xc639,0xbe39,0xbdf8,0xc69a,0x9d36,0xc679,0xbe39,0xbe58,0xb5f7,0xbe7a,0xbe39,0x9d35,0xb5b6,0xbe39,0xd71c,0xc6bb,0xa535,0x9cf4,0xbe38,0xc6ba,0xdf3c,0xad76,0xa4f4,0xbe38,0xd71c,0xd6fb,0xbe17,0x94f4,0xbdf8,0xc699,0xc659,0xbe79,0xb618,0xe77d,0xad15,0xbedb,0xce9a,0xb659,0xef5d,0xc67a,0xd6da,0xdfbf,0x9d14,0xefdf,0xb5d7,0xf77d,0xe77d,0xcf1d,0x3a29,0x828b,0x92ec,0xf73d,0xef5d,0xef5c,0xef7d,0xf79e,0xef5d,0xef9d,0xef7d,0xef7d,0xf7be,0xef9d,0xef7d,0xf79e,0xf79d,0xf77d,0xf77d,0xef7c,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef5c,0xef5d,0xef5d,0xef3c,0xef3c,0xffbe,0xef7d,0xef7d,0xef5d,0xef7d,0xf75c,0xef7d,0xef5d,0xf77d,0xf77d,0xef5d,0xe71c,0xe6fb,0xef3c,0xef3c,0xef1c,0xef1c,0xf73c,0xeefb,0xef1b,0xef3c,0xe71b,0xeefb,0xeefb,0xe6fb,0xe6fb,0xe6db,0xdedb,0xe6db,0xde9a,0xde79,0xde9a,0xe6da,0xdedb,0xdeda,0xe6da,0xe6db,0xde9a,0xdeba,0xde9a,0xe6db,0xe6bb,0xe6bb,0xde7a,0xde7a,0xde9a,0xde7a,0xde79,0xde9a,0xde9a,0xde79,0xb4d4,0x6987,0x5228,0x2986,0xef7c,0xceba,0xceba,0xbe38,0xdf3c,0x632c,0xe75d,0xad97,0xd6ba,0xb5f8,0xa5b6,0x9cf4,0xc638,0x632e,0xc679,0x8492,0x8472,0xb5b7,0xd69b,0xad96,0x6b8f,0x5b2e,0xa596,0xceba,0xb5f8,0x7bf0,0x6b8f,0xad55,0xad55,0x8472,0x94f5,0x9d56,0x94f4,0x8472,0x6bb1,0x9d14,0xc638,0xad76,0x7412,0x5acd,0x8c92,0xdedb,0xadd7,0x73d0,0x636e,0x7c52,0xb5f7,0xb5f7,0x7c10,0x634e,0x7c31,0x9514,0x9514,0x8472,0x94d3,0x9d34,0x7c11,0x4b0d,0x6bb0,0xad96,0xb5d7,0x7c11,0x52ad,0x6b70,0x9d54,0xb5d7,0x94b2,0x632e,0x7b6f,0x8c51,0x8cb1,0x7c50,0x9472,0x9d14,0x7c52,0x42ac,0x52cc,0xa516,0xa575,0x73cf,0x528b,0x5a6b,0x9491,0x9cf3,0x7bcf,0x636e,0x83d0,0x83f1,0x5aed,0x632c,0x8432,0x9cd4,0x73d0,0x4a49,0x426b,0x8451,0xa555,0x73af,0x4a8b,0x41e9,0x6b6d,0x94f4,0x7bef,0x5acb,0x5acb,0x84b3,0x5aad,0x18a3,0x18e3,0x2125,0x29a7,0x2124,0x4227,0x52a9,0x5aea,0x5aea, +0x8d95,0x4289,0x52a8,0x52c9,0x52aa,0x4aaa,0x3207,0x29a6,0x3a49,0x3a09,0x41e9,0x3167,0xc658,0x7d96,0x31a7,0x41e9,0x39e9,0x31c8,0x39e9,0x4209,0x39c8,0x39e9,0x4229,0x3208,0x31c8,0x41e8,0x41e9,0x4209,0x4229,0x4a09,0x41c8,0x41e9,0x524a,0x5229,0x5229,0x4209,0x5209,0x5a2a,0x624a,0x4208,0x4a28,0x5a8a,0x522a,0x4a6b,0x5acb,0x5acd,0x5aac,0x4a29,0x522a,0x628b,0x5a6b,0x62cc,0x5a6b,0x5a6b,0x628d,0x6b0c,0x734e,0x730c,0x6aab,0x730d,0x6b0d,0x7b8f,0x5aed,0x8bf0,0x83cf,0x7b8f,0x8c51,0x736e,0x630d,0x7b8e,0x940f,0x9430,0x8bf0,0x83d0,0x736f,0x9c93,0x9c72,0xad13,0x9452,0xa4f4,0x9452,0x8c11,0x8c11,0x9452,0xa4f4,0x9493,0x9413,0x9411,0x9cb4,0xa4f5,0xbd56,0x9473,0x83f1,0x9492,0xad55,0xbdb7,0x9cf4,0x8452,0x9cd4,0xb576,0xb576,0xacf4,0x9472,0xce19,0x9cb3,0xbdd8,0xd638,0xad96,0xd65a,0xbe39,0xc638,0xce9b,0x9c72,0xeefc,0xa4b3,0xe67a,0xe6bb,0xbe39,0x3a6a,0x6a8b,0x928c,0x8a6b,0x826b,0x82ac,0x7acb,0x728b,0x82ab,0x82ab,0x7aab,0x7a8b,0x7a6b,0x7a4b,0x724a,0x726b,0x7a8b,0x724a,0x7a8b,0x7acc,0x7aab,0x7a8b,0x7a6b,0x7a6b,0x7a6a,0x726a,0x7249,0x7229,0x7a4a,0x7a4a,0x726a,0x7a6a,0x7a4a,0x7a6a,0x7a4a,0x7229,0x6a29,0x6a29,0x7209,0x7209,0x7209,0x6a09,0x6a09,0x7209,0x69e9,0x69e8,0x71e8,0x71e9,0x7209,0x7a08,0x71e8,0x69c8,0x71e8,0x71e8,0x71c8,0x71c8,0x71e8,0x71a8,0x69c8,0x71e9,0x71e9,0x71c8,0x71c8,0x79c8,0x71c8,0x69a7,0x71a8,0x7187,0x6987,0x71c8,0x71e9,0x71c7,0x7188,0x7188,0x71c8,0x71c7,0x71c8,0x69a7,0x6146,0x71a7,0x71a7,0x7167,0x71a8,0x69c8,0x41e7,0x31c7,0xcdf7,0xc5d7,0xc597,0xa4d3,0xc5b7,0x5a2a,0xbd56,0x9c32,0xa4b3,0x9452,0x734d,0x734e,0x83af,0x522b,0x9451,0x628b,0x628b,0x6b0d,0x83d0,0x83b0,0x522b,0x4a0b,0x6b0d,0x736f,0x6b0d,0x524a,0x520a,0x5a4b,0x4a09,0x5a6b,0x4a4a,0x6b4d,0x5a8a,0x5208,0x4a08,0x528a,0x522a,0x4a29,0x49e8,0x3146,0x49a8,0x524a,0x5209,0x3146,0x3166,0x31a7,0x4229,0x4a49,0x39a8,0x3946,0x3967,0x4a09,0x4a49,0x49c8,0x5249,0x49c8,0x4a28,0x2926,0x41a8,0x626b,0x522a,0x39c7,0x3146,0x3987,0x4a08,0x622a,0x41c8,0x3167,0x3987,0x39a7,0x41c7,0x4146,0x3926,0x3925,0x3925,0x2083,0x2905,0x41a6,0x3146,0x2924,0x20e4,0x20c4,0x3165,0x28e5,0x2904,0x20e5,0x3105,0x28c4,0x2084,0x18a2,0x2905,0x3106,0x20a4,0x2084,0x1083,0x18e4,0x18e4,0x18e3,0x10c4,0x1083,0x18c3,0x18a3,0x18a2,0x18a3,0x0841,0x7d13,0x6b0e,0x10c3,0x10e4,0x1924,0x3186,0x2165,0x3206,0x52a9,0x5aea,0x5ae9, +0x8555,0x42ca,0x52c9,0x52c9,0x52ca,0x4aa9,0x3208,0x2967,0x4269,0x4208,0x3a08,0x39a7,0xce58,0x8576,0x1145,0x3209,0x31e8,0x31e8,0x31c7,0x31c8,0x31c8,0x31e7,0x29c7,0x31e9,0x31e8,0x3a08,0x39c8,0x39a8,0x31c7,0x3a08,0x41e8,0x31a7,0x31c7,0x31c7,0x31e7,0x31e8,0x31c8,0x31a7,0x3187,0x31c7,0x31a7,0x3187,0x31c7,0x29e7,0x29c8,0x29a8,0x31a8,0x39e8,0x3a08,0x3a08,0x3a08,0x3a09,0x320a,0x3a09,0x31e8,0x39e8,0x3a08,0x3a08,0x4209,0x39e8,0x4209,0x4208,0x4229,0x31c8,0x31e9,0x422a,0x4229,0x4229,0x41e9,0x41e8,0x3a0a,0x3a09,0x4249,0x4229,0x3a29,0x31e9,0x39e8,0x4208,0x3a09,0x39e8,0x3a09,0x4209,0x39c8,0x41e9,0x420a,0x3a09,0x4229,0x39e9,0x39e9,0x4209,0x41e9,0x3a08,0x4228,0x4a29,0x4a49,0x4209,0x3a08,0x39c9,0x4a09,0x5249,0x4a49,0x4228,0x4208,0x41e8,0x4209,0x39c8,0x41c8,0x31e8,0x41e8,0x41e9,0x4a29,0x39e9,0x4a29,0x4a09,0x4a09,0x4a0a,0x49ea,0x4229,0x4a8a,0x4a6b,0x5a8b,0x6aab,0x728b,0x7a8b,0x7a8a,0x72ab,0x72ab,0x7aab,0x728b,0x72ab,0x72ab,0x728b,0x7a8b,0x72cb,0x72ab,0x7aab,0x72cb,0x72ab,0x7aab,0x72ab,0x72ab,0x726b,0x72ab,0x728a,0x726b,0x728b,0x72ab,0x72ab,0x6a6b,0x628a,0x6a8a,0x6aab,0x7aab,0x728b,0x6a8b,0x728b,0x726b,0x726a,0x6a69,0x6a6a,0x6a6a,0x726a,0x726a,0x726b,0x726a,0x6a4a,0x724a,0x7a69,0x6a69,0x726a,0x724a,0x6a4a,0x6a49,0x7249,0x7249,0x6a49,0x6269,0x6a29,0x722a,0x7209,0x6a49,0x7249,0x6229,0x6249,0x6249,0x6249,0x5a29,0x6249,0x5a29,0x5a28,0x5a08,0x5a09,0x5a08,0x5a08,0x5a08,0x5a08,0x6208,0x6208,0x5a08,0x5a28,0x51e8,0x41e8,0x29c7,0x31c8,0x2925,0x2125,0x2124,0x2905,0x2905,0x2146,0x2925,0x2945,0x2925,0x2945,0x3165,0x2165,0x2146,0x2185,0x2145,0x2925,0x2966,0x2966,0x2105,0x1905,0x2126,0x2106,0x20e5,0x2945,0x2965,0x2965,0x2946,0x2126,0x2945,0x2925,0x1925,0x1124,0x1924,0x2925,0x2924,0x2124,0x1945,0x2145,0x2105,0x2105,0x2145,0x1925,0x2105,0x2145,0x2104,0x1904,0x1124,0x2925,0x2104,0x2104,0x2105,0x2905,0x1904,0x1904,0x18c3,0x2105,0x10e4,0x1904,0x18e4,0x10e3,0x10a3,0x08c3,0x10e4,0x18e4,0x08c3,0x10a4,0x18c3,0x10e4,0x00e3,0x08e4,0x08a4,0x10c4,0x10c4,0x1104,0x10c4,0x10e5,0x08c4,0x08c3,0x10e4,0x1104,0x18e4,0x10c3,0x10a4,0x18c4,0x18c2,0x18c3,0x18c4,0x18a4,0x18c4,0x08c4,0x00e3,0x00c2,0x08a3,0x10a3,0x18e3,0x08a3,0x08a3,0x10c3,0x08e3,0x10c4,0x08c3,0x10c3,0x08e3,0x0903,0x0020,0x8513,0x630d,0x10a3,0x18e4,0x1925,0x3166,0x2145,0x3207,0x4ac9,0x52e9,0x62e9, +0x7d54,0x4ac9,0x5ac9,0x5aca,0x52aa,0x4a89,0x3208,0x3166,0x4a4a,0x3229,0x3208,0x41a7,0xce58,0x7555,0x1966,0x31e8,0x31e8,0x39e8,0x39e8,0x29c7,0x39e8,0x3a08,0x3228,0x3207,0x29e7,0x39c7,0x31e7,0x3208,0x31c8,0x39e8,0x39e7,0x39c7,0x31e7,0x29e8,0x3208,0x3207,0x31e7,0x39e8,0x39e8,0x39e8,0x39e8,0x39e7,0x3a08,0x3207,0x2a08,0x29e9,0x31e8,0x3a08,0x3208,0x3a29,0x3a08,0x4228,0x3208,0x4229,0x3a28,0x3a09,0x3a28,0x3a48,0x3a89,0x3269,0x3a29,0x3a29,0x4209,0x4229,0x4228,0x4269,0x3a49,0x3a49,0x4249,0x4249,0x4249,0x424a,0x4a69,0x4249,0x424a,0x4a69,0x4aab,0x4a6b,0x428a,0x4a8a,0x428a,0x42ab,0x4a8a,0x4a6a,0x4249,0x426a,0x426a,0x3a69,0x4a6b,0x4a8a,0x42aa,0x428a,0x4a6a,0x4a4a,0x52cb,0x4a8a,0x426b,0x426b,0x426a,0x42ab,0x4acb,0x52aa,0x4a8a,0x42ab,0x4aab,0x4aaa,0x4aab,0x4aca,0x52aa,0x4a4b,0x4a8a,0x4a8b,0x528a,0x52aa,0x4aab,0x4aab,0x428a,0x428b,0x4a8b,0x42ab,0x426a,0x4a6a,0x4a8b,0x528b,0x4289,0x4a6a,0x4a8b,0x426a,0x42ab,0x4aaa,0x52aa,0x4a6a,0x4a8a,0x52cb,0x428a,0x4a8a,0x4a8b,0x4a8b,0x4a8b,0x428a,0x4a6b,0x4a8b,0x4a8a,0x4aab,0x528b,0x4a8b,0x4a6a,0x426a,0x3a6a,0x4a8b,0x4a4a,0x422a,0x4a89,0x424a,0x4a6a,0x424a,0x4a4a,0x4249,0x4a4a,0x4249,0x3a4a,0x424a,0x4249,0x4269,0x4a49,0x4a29,0x4249,0x3a49,0x3228,0x3a09,0x3a09,0x3a29,0x4229,0x4209,0x3a27,0x4248,0x4228,0x3a28,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x3a28,0x4249,0x3a08,0x3a28,0x3a09,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x39e7,0x31e8,0x39c8,0x3a07,0x3a07,0x39e8,0x31e7,0x39a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x39c8,0x29c7,0x29a7,0x29c7,0x29a7,0x31a7,0x31c7,0x29a6,0x31c7,0x29a7,0x29a7,0x2987,0x3187,0x2987,0x2986,0x29a6,0x2186,0x2166,0x2987,0x2967,0x2186,0x2966,0x2986,0x2966,0x2966,0x3165,0x2166,0x1946,0x2166,0x2165,0x2165,0x1965,0x2166,0x1966,0x1965,0x2166,0x2165,0x2145,0x2166,0x2165,0x2945,0x2145,0x1905,0x2125,0x2125,0x2126,0x1925,0x1945,0x2905,0x2104,0x2124,0x1924,0x1925,0x1905,0x10e4,0x1125,0x1904,0x1944,0x0924,0x1124,0x2105,0x1925,0x1924,0x1904,0x08e4,0x18e5,0x1904,0x10c4,0x1104,0x1105,0x1105,0x18e4,0x10e5,0x10c5,0x10c3,0x10c4,0x18e4,0x18e3,0x10e3,0x10c3,0x18c3,0x20c3,0x18c3,0x08c3,0x18e3,0x08e3,0x10c3,0x08a3,0x08c2,0x08e2,0x00e2,0x10e2,0x10a3,0x00c3,0x08e2,0x10c2,0x18a3,0x10e3,0x08c3,0x10c3,0x18e3,0x0000,0x8513,0x630e,0x0862,0x18e3,0x1924,0x2966,0x1904,0x3a06,0x4aa8,0x52c9,0x5aea, +0x7d34,0x4a89,0x52c9,0x52c9,0x52ca,0x4aa9,0x31e7,0x2945,0x4229,0x3a08,0x3208,0x41a7,0xc658,0x7575,0x2186,0x3228,0x31c7,0x31e7,0x31c8,0x31e8,0x31c7,0x31c7,0x31c8,0x31c7,0x31c7,0x31a8,0x31a8,0x29c8,0x31c8,0x31c7,0x3207,0x31c7,0x39e8,0x3a08,0x3208,0x31e7,0x29c7,0x31c7,0x31e7,0x39c7,0x2986,0x29a7,0x31c7,0x31e8,0x3208,0x31e8,0x3207,0x3208,0x3a08,0x39e8,0x3a08,0x3a08,0x3208,0x3a08,0x3a08,0x3a08,0x4228,0x4248,0x4249,0x424a,0x4248,0x4229,0x4229,0x4249,0x3a49,0x3a69,0x4249,0x426a,0x424a,0x3a4a,0x426a,0x426a,0x4a6a,0x4249,0x426a,0x4a69,0x426a,0x4a8a,0x4a8a,0x4a6a,0x4289,0x426a,0x428a,0x3a4a,0x4289,0x424a,0x4a69,0x4269,0x426a,0x3a49,0x3a6a,0x4a8b,0x4a4a,0x426a,0x428a,0x4269,0x426a,0x4aaa,0x4a8a,0x4a8a,0x42aa,0x428b,0x428a,0x428a,0x426a,0x426a,0x4a8b,0x4a6a,0x528b,0x4a8b,0x4a8a,0x4a8a,0x426a,0x4a6b,0x4a6a,0x4aab,0x42aa,0x428a,0x4a8b,0x4a8b,0x4a8b,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6b,0x4a8b,0x428a,0x4a8a,0x4a6a,0x42aa,0x4a8b,0x4a8b,0x4a8b,0x4a8a,0x4a6a,0x4a69,0x4a6a,0x4a8a,0x3a6a,0x4249,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x3a4a,0x4249,0x4a6a,0x4a4a,0x422a,0x4269,0x4249,0x4a6a,0x3a4a,0x424a,0x4a49,0x424a,0x3a4a,0x422a,0x422a,0x422a,0x4269,0x4229,0x4229,0x3a69,0x3a69,0x3a49,0x4269,0x4249,0x4229,0x3a28,0x3249,0x3a28,0x4229,0x4229,0x3249,0x3a08,0x4208,0x3a29,0x3a09,0x3a09,0x3229,0x3a28,0x3a28,0x3a29,0x3a09,0x3208,0x3a08,0x3a08,0x3a08,0x3207,0x3208,0x39e7,0x31e8,0x31c7,0x2a07,0x31c7,0x39c8,0x31c7,0x39c8,0x31a7,0x39c8,0x21c7,0x31c7,0x31a7,0x31c8,0x31c7,0x39a7,0x29a7,0x31a7,0x31a6,0x31c7,0x31e7,0x29c7,0x2986,0x29a6,0x2986,0x31a6,0x29a6,0x1987,0x2986,0x2986,0x2966,0x2186,0x2966,0x1986,0x2966,0x2967,0x2146,0x2966,0x31a6,0x2966,0x2166,0x2946,0x2946,0x2166,0x2165,0x2166,0x2166,0x2145,0x2165,0x2145,0x2145,0x2945,0x2145,0x1925,0x1945,0x2125,0x2145,0x2125,0x2145,0x2144,0x1945,0x2105,0x1904,0x2104,0x1925,0x2124,0x2104,0x1905,0x1105,0x1904,0x1905,0x1905,0x18e5,0x18e4,0x0904,0x1904,0x18e4,0x10e4,0x18e5,0x08e4,0x18e4,0x1103,0x1103,0x1103,0x18e4,0x10c4,0x10c4,0x18e4,0x10a4,0x10c4,0x18e3,0x18c3,0x10e3,0x18e3,0x18e3,0x08c3,0x10c2,0x18c3,0x08e3,0x10c2,0x18c4,0x08c3,0x08c3,0x10e3,0x08c3,0x18a3,0x18e3,0x10e3,0x10c2,0x10c3,0x08a3,0x08c4,0x08c3,0x10a3,0x0000,0x7d33,0x6b50,0x1063,0x10e3,0x1144,0x2986,0x2103,0x4226,0x52c8,0x52ea,0x5aca, +0x7d14,0x52c9,0x52c9,0x52a9,0x52aa,0x4a89,0x3208,0x1966,0x3a28,0x3208,0x3228,0x39a7,0xce99,0x8596,0x1945,0x39e8,0x39c7,0x31e7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c8,0x31c8,0x31c7,0x31e8,0x31e8,0x31e7,0x31c8,0x39c8,0x29e7,0x31c8,0x31c8,0x31c8,0x39c7,0x29e7,0x29e7,0x31e8,0x31c8,0x39c7,0x39e7,0x2a08,0x3228,0x3208,0x3a09,0x3229,0x3208,0x39e8,0x3a09,0x39e8,0x3a07,0x39e8,0x3a09,0x4208,0x3a08,0x4209,0x39e8,0x3a48,0x3a28,0x3a08,0x4228,0x4228,0x3a29,0x4209,0x3a49,0x424a,0x3a49,0x4249,0x424a,0x3a49,0x426a,0x4a49,0x4a4a,0x4a6a,0x3a8a,0x426a,0x426a,0x426a,0x426a,0x428a,0x4a6a,0x428a,0x3a6a,0x3a4a,0x426a,0x3a6a,0x426a,0x4a6a,0x426a,0x3a6a,0x426a,0x4a6a,0x4a4a,0x4a6a,0x426a,0x4a8a,0x4a6a,0x428a,0x428a,0x42aa,0x428b,0x4a8b,0x426b,0x426b,0x426a,0x426a,0x4a8a,0x4a8a,0x424a,0x4a6a,0x4a8a,0x4aab,0x428b,0x428b,0x428a,0x4a8b,0x428b,0x426a,0x4aab,0x4a8b,0x428a,0x4a8a,0x4aab,0x4a8b,0x4a8b,0x528a,0x4a6a,0x426a,0x428a,0x4a8a,0x424a,0x3a8a,0x428b,0x426a,0x4a8b,0x4a6b,0x4a4a,0x4a6a,0x4269,0x426a,0x428a,0x426a,0x426a,0x426a,0x3a4a,0x4269,0x4269,0x424a,0x424a,0x4a4a,0x4a6a,0x424a,0x426a,0x424a,0x4269,0x4249,0x3a4a,0x3a49,0x4a49,0x3a4a,0x3a29,0x3a29,0x424a,0x4229,0x3a29,0x422a,0x4249,0x3229,0x3a29,0x3a29,0x3a29,0x4229,0x4208,0x3a28,0x4228,0x4249,0x3a09,0x3a29,0x3a09,0x4229,0x3a29,0x3a09,0x3a29,0x3a28,0x3a28,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x3208,0x31e8,0x3208,0x39e8,0x31e8,0x39e8,0x31a7,0x31e8,0x31c8,0x39e7,0x31e7,0x39e7,0x39a7,0x31c8,0x29c8,0x31a7,0x39a7,0x3187,0x29e6,0x29a7,0x29c7,0x31c7,0x39a7,0x31a7,0x31c7,0x31a7,0x3186,0x29a6,0x21a7,0x2986,0x2186,0x2186,0x31a7,0x2986,0x2186,0x2946,0x2965,0x2986,0x2986,0x2166,0x21a6,0x1966,0x2166,0x2186,0x1966,0x2166,0x2966,0x2966,0x2966,0x2146,0x2145,0x2165,0x2965,0x1925,0x2165,0x2145,0x2145,0x2145,0x1966,0x1924,0x1945,0x2125,0x2145,0x2125,0x2125,0x1904,0x2125,0x1904,0x1924,0x2125,0x1904,0x2105,0x2104,0x2105,0x18c4,0x2104,0x0904,0x1905,0x2105,0x1904,0x10e4,0x1104,0x18e4,0x1104,0x20e4,0x10e3,0x18e3,0x1104,0x1104,0x10e3,0x10c3,0x18c4,0x10e4,0x18a4,0x10c3,0x10c3,0x10e3,0x18e3,0x18c3,0x08c4,0x10a3,0x18c3,0x08c3,0x08c4,0x18c3,0x10c2,0x08c3,0x08a3,0x08c3,0x08c3,0x18a3,0x10c3,0x10a2,0x08c3,0x08c3,0x10c3,0x08a3,0x10e3,0x0000,0x7d13,0x6b90,0x1063,0x10e4,0x1125,0x2986,0x2124,0x39e6,0x5aa8,0x5aca,0x5aca, +0x7513,0x4aa9,0x52c9,0x52a9,0x52a9,0x4aa9,0x31e8,0x1967,0x3a08,0x3228,0x3208,0x39e8,0xce79,0x7d56,0x2126,0x39c7,0x31c6,0x31e7,0x29a7,0x29c7,0x31c7,0x39c7,0x29c7,0x29c7,0x31c8,0x29e8,0x31c7,0x31e8,0x39c8,0x31c8,0x31c7,0x31a7,0x29c6,0x31c7,0x39e7,0x29e7,0x31e7,0x31c7,0x31e8,0x39c8,0x39e7,0x31e8,0x2a08,0x39e8,0x31e8,0x3a49,0x2a28,0x3208,0x3a08,0x3208,0x3a08,0x41e8,0x4209,0x3a08,0x3208,0x3a29,0x3a29,0x4229,0x3a29,0x3a49,0x4269,0x4249,0x3a28,0x4209,0x3a29,0x3a49,0x4229,0x3a29,0x3a49,0x4249,0x3a4a,0x4229,0x426a,0x4a8a,0x4228,0x3a29,0x3a49,0x3a6a,0x4a6a,0x426a,0x426a,0x4a6a,0x4a4a,0x424a,0x4269,0x3a49,0x3a4a,0x4a6a,0x426a,0x3a6a,0x4a6a,0x4a49,0x4249,0x4a4a,0x426b,0x428a,0x4a6a,0x4a8a,0x4a8b,0x428a,0x426b,0x4a8b,0x4a6a,0x428a,0x428a,0x3a49,0x4a8a,0x426a,0x426a,0x4a6a,0x4a6b,0x428b,0x3a8a,0x426a,0x4a8b,0x4a6b,0x4a6b,0x4a6a,0x4a8b,0x4a6b,0x4a6a,0x4a6a,0x428a,0x428a,0x4a8a,0x4a6a,0x4a6a,0x426a,0x426a,0x4a8a,0x4a8a,0x426b,0x426a,0x4a6a,0x428a,0x4269,0x4269,0x4a6a,0x4a6a,0x4a6a,0x426a,0x426b,0x426b,0x426a,0x424a,0x428a,0x4a89,0x4a4a,0x426a,0x426a,0x426a,0x3a69,0x4269,0x426a,0x3a69,0x4269,0x426a,0x4269,0x3a49,0x424a,0x4249,0x422a,0x426a,0x424a,0x4249,0x3a29,0x4229,0x3a29,0x4249,0x3a29,0x3a49,0x4249,0x4249,0x3a49,0x4248,0x3a49,0x3a29,0x3a29,0x3208,0x3a28,0x3a28,0x3a08,0x3a08,0x3a28,0x4229,0x3a28,0x3a28,0x3a08,0x3208,0x3a08,0x3228,0x31e8,0x2a08,0x31e8,0x31c8,0x39c8,0x39c8,0x31e7,0x31e8,0x39e7,0x39c6,0x29c7,0x31e8,0x29e8,0x3207,0x3207,0x39a7,0x3987,0x31a7,0x31a7,0x31a7,0x31a7,0x3187,0x29a6,0x31a7,0x31a7,0x3187,0x31a6,0x3986,0x3187,0x21a6,0x2986,0x3186,0x2986,0x2986,0x2186,0x2186,0x19a6,0x2186,0x2987,0x2986,0x2166,0x1945,0x2986,0x2186,0x2946,0x2146,0x2146,0x2104,0x2145,0x2166,0x2185,0x2165,0x3145,0x2145,0x2165,0x1966,0x2125,0x2125,0x2125,0x2125,0x1925,0x1945,0x1925,0x1924,0x1924,0x1124,0x1924,0x1104,0x10e4,0x1105,0x2104,0x2104,0x1904,0x1905,0x1905,0x2105,0x2105,0x10e3,0x18c3,0x2103,0x2104,0x10e4,0x1104,0x10e4,0x10e4,0x10e4,0x1904,0x1103,0x10e3,0x18e4,0x20e4,0x08a4,0x10c4,0x08e3,0x08e3,0x10e4,0x18e3,0x10e3,0x18c3,0x18a3,0x10a3,0x10e3,0x08e4,0x08a3,0x08c2,0x08e2,0x08c3,0x10c3,0x08a3,0x10c3,0x08c3,0x10a3,0x10c3,0x08c2,0x10c3,0x10c3,0x08c3,0x0020,0x8cf2,0x736f,0x08a3,0x1903,0x2144,0x2966,0x3145,0x31e6,0x4ac9,0x5aea,0x5aaa, +0x7513,0x42a8,0x52c9,0x52a9,0x52c9,0x4aa9,0x3a08,0x31c7,0x3a29,0x3a29,0x3228,0x4a09,0xbe58,0x64d3,0x2986,0x31e8,0x31c7,0x39e7,0x31c7,0x31e7,0x31e7,0x31a7,0x31a8,0x31c8,0x39c7,0x29e7,0x31c7,0x31c7,0x39c8,0x29c7,0x31c7,0x39c8,0x29c7,0x31c7,0x39e7,0x31e8,0x31c8,0x29c7,0x31c8,0x39c7,0x39c7,0x39e8,0x3a08,0x39e8,0x3208,0x3a28,0x3209,0x3a08,0x39e8,0x3207,0x3208,0x3208,0x3a28,0x3a48,0x3a09,0x3a28,0x4228,0x4229,0x4249,0x3a29,0x3a08,0x4229,0x4249,0x3a49,0x3a49,0x3a29,0x422a,0x4229,0x3a49,0x4269,0x426a,0x4a6a,0x426a,0x4249,0x4229,0x4289,0x428a,0x3a6a,0x426a,0x426a,0x424a,0x4a69,0x4a4a,0x4a49,0x4249,0x4a4a,0x3a29,0x424a,0x424a,0x424a,0x424a,0x424a,0x4229,0x4a4a,0x422a,0x3a8a,0x426a,0x426a,0x4a8b,0x4269,0x4a6a,0x426a,0x4a6a,0x4a69,0x4269,0x428a,0x428a,0x426a,0x428a,0x4269,0x426a,0x428a,0x428a,0x4269,0x4a6a,0x4a6a,0x4a6a,0x4a6b,0x428b,0x426a,0x428a,0x426a,0x4a8a,0x4a6a,0x426a,0x426a,0x426a,0x428a,0x424a,0x526b,0x4a6a,0x4a6a,0x424a,0x424a,0x4269,0x4249,0x4a4a,0x4a6b,0x4a8b,0x4a69,0x4269,0x428a,0x426a,0x426a,0x3a2a,0x4a6a,0x4269,0x4a4a,0x426a,0x426a,0x4269,0x3a4a,0x426a,0x4a6a,0x4269,0x4269,0x4269,0x4269,0x3a4a,0x4269,0x424a,0x4229,0x4249,0x4249,0x3a4a,0x3228,0x3a29,0x3a49,0x426a,0x4a2a,0x3a49,0x4229,0x4249,0x3229,0x3a48,0x4229,0x3a29,0x3a08,0x3a28,0x3a08,0x4228,0x4a09,0x4209,0x3a09,0x3a08,0x3a09,0x3229,0x3a08,0x3a08,0x39e8,0x3a09,0x3208,0x3a08,0x31c7,0x39e7,0x39e7,0x29c7,0x31e7,0x31e7,0x31c7,0x39c8,0x31c8,0x31e8,0x29a7,0x41c8,0x31c7,0x29c7,0x31a8,0x29a7,0x31c7,0x31a7,0x3187,0x3187,0x31a7,0x31c7,0x31a7,0x2966,0x3186,0x31a7,0x31c7,0x2987,0x3167,0x29a6,0x21a6,0x2186,0x2166,0x2167,0x2166,0x2166,0x2966,0x2166,0x2965,0x2965,0x2985,0x2166,0x2966,0x2166,0x2146,0x1965,0x1965,0x1965,0x1965,0x2165,0x2965,0x2165,0x2145,0x1945,0x2905,0x2125,0x2125,0x2925,0x1925,0x1945,0x1925,0x1925,0x1925,0x1104,0x1925,0x1924,0x1104,0x1905,0x1924,0x1905,0x1904,0x2105,0x1904,0x20e4,0x18c4,0x1103,0x10e3,0x1104,0x10e3,0x10e4,0x18e4,0x1904,0x1104,0x0904,0x10e4,0x10e3,0x00e3,0x10e3,0x18e3,0x18c3,0x10e4,0x00e4,0x10e4,0x10e3,0x18e4,0x10c3,0x08c3,0x10c3,0x10e4,0x18c3,0x08a3,0x08c3,0x08c2,0x00c2,0x08c2,0x10c3,0x10c3,0x08c3,0x10a3,0x10c3,0x08a3,0x08c2,0x08c2,0x08c3,0x10e4,0x0021,0x7cd1,0x734f,0x10a4,0x1904,0x1924,0x2966,0x2925,0x31e7,0x4aa9,0x5aea,0x5aca, +0x74f3,0x4aa9,0x52c9,0x52c9,0x4ac9,0x4aa8,0x3a08,0x39c7,0x4209,0x39e8,0x3a09,0x49e9,0xc6b9,0x6cb4,0x31a7,0x3208,0x31c7,0x3a07,0x3a08,0x31e7,0x21a7,0x31a7,0x31c7,0x31c7,0x31c7,0x29c7,0x31a7,0x31a7,0x31c7,0x31c7,0x39a8,0x39e8,0x31c7,0x31e7,0x29c7,0x31c8,0x31e8,0x31c7,0x39c8,0x41e8,0x31c7,0x31c7,0x31e7,0x31e8,0x31e8,0x3228,0x3228,0x31e8,0x39e8,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a09,0x3a09,0x39e8,0x39e8,0x4208,0x4209,0x4228,0x424a,0x3229,0x4229,0x3a49,0x3a48,0x3a49,0x4249,0x4249,0x4249,0x426a,0x4249,0x424a,0x3a49,0x3a29,0x4269,0x428a,0x426a,0x424a,0x4a4a,0x4a4a,0x4229,0x4249,0x4a8a,0x3a49,0x4249,0x3a69,0x4249,0x3a4a,0x4249,0x426a,0x3a6a,0x4249,0x4269,0x4269,0x3a6a,0x3a69,0x3a8a,0x3a4a,0x3a69,0x4a8a,0x3a69,0x4249,0x428a,0x4289,0x3a49,0x426b,0x428a,0x428a,0x424a,0x424a,0x426a,0x424b,0x4229,0x426a,0x426a,0x3a69,0x3a6a,0x426a,0x3a8a,0x428a,0x428b,0x428b,0x4a6a,0x4aaa,0x426a,0x4a8a,0x4a8a,0x528a,0x526b,0x4a8a,0x426a,0x4a6a,0x4a6a,0x426a,0x426a,0x426a,0x424a,0x4a8a,0x4289,0x4a69,0x3a6a,0x3a8a,0x426a,0x424a,0x426a,0x4269,0x4289,0x426a,0x4a69,0x4269,0x3a6a,0x424a,0x4249,0x4249,0x4a49,0x422a,0x4249,0x3a69,0x4269,0x4249,0x4229,0x4249,0x4249,0x4248,0x4249,0x3a4a,0x3a4a,0x4269,0x4248,0x4a49,0x4229,0x3a49,0x3a28,0x4228,0x4249,0x3a29,0x3209,0x3208,0x3a08,0x4208,0x4209,0x4209,0x3a08,0x39e8,0x39e9,0x3208,0x39e8,0x3208,0x3208,0x39e8,0x39e8,0x3a08,0x31c7,0x39c7,0x31c7,0x39e7,0x31e7,0x31e8,0x31e7,0x31c8,0x31c8,0x39c7,0x31a7,0x39a7,0x3187,0x31c7,0x2987,0x19a7,0x29c7,0x31a7,0x31a7,0x29a7,0x29a7,0x3187,0x2987,0x2987,0x3186,0x29a6,0x29a6,0x2986,0x3187,0x2986,0x31a6,0x29a6,0x2986,0x2946,0x2166,0x2166,0x2186,0x2166,0x2966,0x2986,0x2185,0x2146,0x2946,0x2146,0x2946,0x2165,0x2145,0x2145,0x2165,0x2145,0x2146,0x1925,0x1925,0x2105,0x2125,0x2125,0x2925,0x2905,0x1925,0x1925,0x1925,0x2145,0x1925,0x1905,0x2104,0x2125,0x1904,0x1904,0x1924,0x1904,0x18e4,0x1904,0x2104,0x1924,0x18e4,0x18e4,0x10a4,0x10e5,0x18e4,0x1105,0x18e4,0x18c4,0x1904,0x1904,0x10e4,0x10c4,0x10c3,0x10c3,0x10c3,0x18e4,0x10e3,0x0903,0x10c3,0x18c4,0x10e3,0x20c3,0x08a4,0x0082,0x18c4,0x10c3,0x08a3,0x10c3,0x10c2,0x10c3,0x00c2,0x08c3,0x08c3,0x10c3,0x08a2,0x10c3,0x10c3,0x10c2,0x10e2,0x08e3,0x1104,0x0021,0x7cd1,0x7b8f,0x1083,0x1124,0x1104,0x2165,0x2125,0x3207,0x4aa9,0x5aca,0x5aca, +0x74f3,0x42a9,0x4ac9,0x4ac9,0x4aa9,0x4289,0x3207,0x31e7,0x39e9,0x4208,0x4209,0x49c8,0xc6b9,0x6c93,0x2186,0x3a08,0x3208,0x31e7,0x31c8,0x39e7,0x31e7,0x31e7,0x29c7,0x29c7,0x31c7,0x29c7,0x29c7,0x31c8,0x31c7,0x31c7,0x29e8,0x31e7,0x39c7,0x31c7,0x31e8,0x29c7,0x31c7,0x31e7,0x31e8,0x31c7,0x29e8,0x31e8,0x3208,0x31e7,0x39e9,0x4208,0x3a08,0x3208,0x3a07,0x3a27,0x3a08,0x3208,0x3a08,0x39e7,0x4229,0x3a49,0x4229,0x4229,0x4229,0x4208,0x3a49,0x4229,0x4209,0x3a08,0x3a08,0x4249,0x3a49,0x4269,0x4249,0x3a4a,0x4249,0x3a49,0x3a49,0x3a29,0x3249,0x4269,0x3a69,0x426a,0x424a,0x3a4a,0x426a,0x426a,0x4a6a,0x4a8a,0x3249,0x4249,0x424a,0x422a,0x422a,0x3a4a,0x426a,0x426a,0x4269,0x426a,0x4a6a,0x426a,0x4a8a,0x4a6a,0x426a,0x426a,0x428a,0x4a6a,0x424a,0x426a,0x4269,0x426a,0x426a,0x3a8a,0x3a69,0x426a,0x4269,0x4249,0x3a6a,0x426a,0x424a,0x426a,0x428a,0x428a,0x426a,0x3a6a,0x426b,0x3a6a,0x428b,0x4a6a,0x4aab,0x3a6a,0x4a8b,0x428b,0x3a8a,0x4a6b,0x4a6a,0x428a,0x4a8a,0x3a69,0x3a6a,0x3a6a,0x426a,0x426a,0x424a,0x424a,0x426a,0x4269,0x4269,0x424a,0x424a,0x426a,0x4269,0x424a,0x426a,0x4a6a,0x4a4a,0x424a,0x424a,0x424a,0x4269,0x4249,0x3a29,0x4249,0x3a69,0x3a49,0x4229,0x4209,0x4a29,0x4a49,0x4229,0x4249,0x424a,0x3229,0x3a29,0x3a08,0x4208,0x3a09,0x3a09,0x3a09,0x3208,0x3a08,0x4208,0x2a08,0x3a08,0x3a08,0x3a29,0x39e9,0x39c8,0x31c8,0x39e9,0x31e8,0x39e8,0x39e8,0x39e8,0x3a07,0x31e8,0x31c8,0x31c8,0x31c7,0x31c8,0x31c7,0x39c7,0x31e7,0x31c7,0x31c8,0x29a7,0x29a7,0x39c8,0x31a7,0x39c7,0x31a7,0x21a7,0x31a6,0x3187,0x31a7,0x3186,0x29a7,0x3187,0x29a6,0x2986,0x3187,0x2986,0x31a6,0x29a7,0x29a7,0x2986,0x3187,0x3187,0x3166,0x3186,0x29a6,0x3186,0x2987,0x2966,0x2986,0x2166,0x2166,0x2966,0x2966,0x2146,0x2166,0x2166,0x2165,0x2146,0x2145,0x2166,0x2166,0x1965,0x1144,0x1145,0x1945,0x2925,0x2125,0x1945,0x2945,0x2125,0x1925,0x1945,0x1125,0x2145,0x1904,0x2105,0x1905,0x2144,0x2104,0x2104,0x2104,0x1904,0x1905,0x1904,0x1904,0x18e4,0x10e4,0x1905,0x18e3,0x1903,0x10e4,0x1124,0x1103,0x10e4,0x1904,0x0903,0x1104,0x10e3,0x20e3,0x18e4,0x18c4,0x10e3,0x08e4,0x08e2,0x10c3,0x08e3,0x18e3,0x18c3,0x08c3,0x08e3,0x08c3,0x10e4,0x10a3,0x08c3,0x08e2,0x08c2,0x10c3,0x18c2,0x08e2,0x10e3,0x18c3,0x10c3,0x10c3,0x08e3,0x18c3,0x18e4,0x1103,0x0041,0x7491,0x7bb0,0x0863,0x1924,0x1945,0x2185,0x2125,0x3206,0x4ac9,0x52ea,0x5aea, +0x74d2,0x4aa9,0x4ac9,0x4ac9,0x4ac9,0x4aa8,0x3206,0x31e7,0x3209,0x3a29,0x3a09,0x4a09,0xc678,0x74d4,0x2187,0x3a29,0x3a29,0x3a08,0x31e8,0x31c8,0x31e7,0x31e7,0x31e7,0x39a7,0x39c7,0x29c7,0x21c7,0x29a7,0x29c7,0x31c7,0x29e8,0x31c7,0x39c7,0x31c7,0x31c7,0x31e7,0x39e8,0x3a08,0x31e7,0x31c7,0x3227,0x31e7,0x31e8,0x3207,0x3a28,0x3a07,0x31e7,0x31e8,0x39e8,0x3208,0x39e8,0x3a08,0x3a29,0x3a29,0x3a29,0x3a29,0x3208,0x3a29,0x3a09,0x3a29,0x3a29,0x3a29,0x3a28,0x3228,0x3a49,0x3a29,0x3a4a,0x424a,0x426a,0x3a49,0x3249,0x4229,0x4229,0x4229,0x4229,0x426a,0x3a4a,0x4249,0x4a6a,0x426b,0x424a,0x4249,0x4248,0x4228,0x4269,0x4249,0x422a,0x3a2a,0x4249,0x4269,0x4249,0x422a,0x426a,0x4269,0x424a,0x426a,0x426a,0x4249,0x426a,0x3a4a,0x3a6a,0x426a,0x4269,0x4a6a,0x4249,0x4249,0x426a,0x3a6a,0x426a,0x4249,0x4249,0x4269,0x4a6a,0x426a,0x3a49,0x4269,0x426a,0x426a,0x426a,0x3a69,0x4a8a,0x3a6a,0x4249,0x4269,0x426a,0x428a,0x3a8a,0x428b,0x426a,0x426a,0x4a6a,0x428a,0x4a6a,0x4269,0x428a,0x426a,0x4a4a,0x3a69,0x4269,0x4269,0x4269,0x3a49,0x426a,0x4269,0x4289,0x4269,0x4a49,0x4249,0x4249,0x424a,0x4a49,0x4249,0x4269,0x4249,0x422a,0x4249,0x3a49,0x4249,0x4229,0x3a49,0x4229,0x3a29,0x424a,0x3a29,0x4209,0x4229,0x3a29,0x3a09,0x4229,0x3a29,0x3a29,0x3a29,0x3208,0x3a29,0x3a08,0x4208,0x3a08,0x3208,0x3a08,0x3a28,0x3a09,0x39c8,0x3a09,0x31e9,0x31e8,0x31c7,0x39e7,0x39e8,0x39c8,0x41e8,0x39e8,0x31e8,0x31c7,0x39e8,0x31c7,0x29e7,0x39c8,0x31c7,0x31e7,0x39c7,0x31c7,0x29a7,0x31c7,0x29c6,0x29a7,0x31a6,0x31c7,0x31a7,0x21a6,0x29a6,0x31a6,0x29c6,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x3186,0x2987,0x3186,0x3186,0x29a6,0x29a6,0x2986,0x2986,0x19a6,0x2166,0x2986,0x2986,0x2165,0x2185,0x1985,0x2146,0x2146,0x2145,0x2165,0x1925,0x1965,0x1965,0x1945,0x2165,0x1925,0x1925,0x1925,0x2145,0x2145,0x1145,0x2145,0x2925,0x1925,0x1945,0x1924,0x1925,0x1925,0x18e4,0x1924,0x2145,0x2124,0x1924,0x2104,0x1904,0x2104,0x1104,0x20e4,0x20e4,0x1904,0x1904,0x18e5,0x18e4,0x1104,0x1904,0x1104,0x10e4,0x18e4,0x10e4,0x08e4,0x18e4,0x1904,0x10c4,0x10e4,0x08e3,0x08e4,0x0903,0x18e3,0x10c3,0x08e4,0x18c3,0x18c4,0x18c4,0x10e3,0x08e3,0x10c3,0x10a3,0x10c3,0x00c3,0x08c2,0x08c1,0x10c2,0x10c2,0x08c2,0x08e3,0x18e4,0x18e4,0x18e4,0x10c4,0x1104,0x0061,0x8513,0x7370,0x1084,0x1944,0x1925,0x2166,0x1165,0x3a07,0x4aa9,0x4ae9,0x52ea, +0x74d3,0x5269,0x52c9,0x4aa9,0x52a9,0x4a89,0x3207,0x31c7,0x3228,0x3a28,0x3a09,0x41c9,0xad96,0x8db7,0x21c8,0x3208,0x3a08,0x3a08,0x31e8,0x31e7,0x31e7,0x29e7,0x31c8,0x29c8,0x31c7,0x31c6,0x31e6,0x31a6,0x29c6,0x29e7,0x3207,0x29c7,0x31e8,0x39c7,0x39e7,0x39e8,0x31a7,0x3a08,0x3208,0x31e8,0x3207,0x29e7,0x3208,0x3208,0x3a08,0x3a09,0x3a08,0x41e8,0x41e9,0x31e8,0x3207,0x3a28,0x3a49,0x3a28,0x3a29,0x3228,0x4229,0x3a08,0x3a29,0x3a09,0x4248,0x3a08,0x3a28,0x3a49,0x3a49,0x3249,0x3a49,0x4269,0x3a49,0x3a6a,0x3a4a,0x424a,0x4269,0x4249,0x424a,0x428a,0x428a,0x426a,0x428b,0x4a8b,0x426a,0x428a,0x4a6a,0x4a6a,0x426a,0x428a,0x4269,0x3a49,0x428a,0x4a8a,0x428a,0x426a,0x4229,0x4a4a,0x4a8a,0x4a8a,0x4a4a,0x4a4a,0x4a6b,0x426b,0x424a,0x4a6a,0x4a69,0x4a6a,0x4a8a,0x426a,0x426a,0x428b,0x4a8b,0x4a4a,0x4a4a,0x4a4b,0x4a69,0x4a49,0x4249,0x426a,0x4a6a,0x426a,0x428a,0x426a,0x426a,0x426a,0x4a6a,0x4269,0x424a,0x426a,0x4a6a,0x4249,0x4249,0x4a69,0x4a49,0x424a,0x422a,0x3229,0x3a69,0x4a69,0x4269,0x4249,0x424a,0x3a49,0x4a8a,0x4a69,0x3a8a,0x3a6a,0x3a49,0x4269,0x4249,0x426a,0x3a69,0x3a4a,0x422a,0x4a4a,0x428a,0x4249,0x3a4a,0x426a,0x4269,0x3a28,0x4249,0x3a49,0x4229,0x424a,0x424a,0x3a49,0x4249,0x424a,0x3a29,0x3a08,0x4229,0x3a29,0x3a49,0x3a49,0x3a28,0x31c8,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x4229,0x3a09,0x39e8,0x4229,0x39e9,0x39e9,0x39e8,0x39c7,0x41e8,0x39c7,0x39c7,0x39e8,0x31e8,0x31e7,0x39e7,0x31a6,0x29e7,0x31c7,0x31a7,0x39c7,0x41e7,0x39e8,0x31a7,0x31c7,0x31c7,0x39a6,0x39c7,0x31c8,0x31e7,0x21a6,0x2187,0x29a6,0x2986,0x29a7,0x3187,0x3186,0x3186,0x29a6,0x29a7,0x31c7,0x31c7,0x2986,0x2987,0x2986,0x29a6,0x31c6,0x29a6,0x2186,0x29a7,0x2166,0x2986,0x3187,0x3186,0x2966,0x2166,0x1945,0x2165,0x2166,0x1945,0x2946,0x2185,0x2165,0x1945,0x2145,0x2146,0x1946,0x1945,0x1945,0x2145,0x2145,0x2145,0x1945,0x1945,0x1964,0x1924,0x1926,0x1945,0x2125,0x1904,0x2144,0x1904,0x2105,0x2124,0x2105,0x1904,0x1104,0x18e4,0x18e4,0x1924,0x1104,0x1905,0x1103,0x0904,0x1903,0x1904,0x18e4,0x2103,0x18e5,0x1104,0x1103,0x08e3,0x10e4,0x10e3,0x10c4,0x1104,0x18c5,0x10c3,0x10c3,0x10e4,0x18c4,0x18e3,0x10c3,0x18e2,0x10e3,0x10c3,0x10c3,0x18c3,0x10c3,0x08e3,0x18e3,0x20e3,0x10c3,0x18c4,0x1904,0x2104,0x2104,0x1104,0x2104,0x1103,0x2186,0x8d54,0x6ace,0x18c4,0x1145,0x2166,0x2966,0x2986,0x3a07,0x4aa9,0x52ea,0x52e9, +0x74b2,0x4a89,0x52c9,0x4ac9,0x52a9,0x4a68,0x3207,0x31a6,0x3a08,0x4209,0x3a29,0x31e9,0x8c10,0xbe58,0x6c92,0x3aec,0x428b,0x426a,0x426a,0x3a6a,0x3a8a,0x428b,0x3a8a,0x328a,0x3249,0x3a6a,0x3269,0x3249,0x328a,0x328b,0x3a8a,0x3a6a,0x328b,0x326a,0x324a,0x324a,0x324a,0x3229,0x3209,0x3229,0x2a09,0x2a09,0x2a09,0x2a29,0x2a0a,0x29e9,0x2a29,0x2a08,0x2a09,0x2a29,0x29e7,0x29c7,0x21c7,0x21a8,0x29e8,0x2a08,0x21e8,0x21c7,0x29c8,0x29c8,0x31e8,0x29a7,0x29a7,0x31c8,0x29c8,0x29c8,0x29c7,0x31e8,0x3209,0x21a8,0x2988,0x29a8,0x29a7,0x31a8,0x29a8,0x29c8,0x21e8,0x21c8,0x21a8,0x21a8,0x29e8,0x21c7,0x29e8,0x29e8,0x21c8,0x29c8,0x31c8,0x29e8,0x29e8,0x31e8,0x29e9,0x3209,0x31e8,0x3209,0x3208,0x31e8,0x31e8,0x3a08,0x29c7,0x29c8,0x29e8,0x21c7,0x29c7,0x29c7,0x29a7,0x21c7,0x29c7,0x29c8,0x29c7,0x29c8,0x31c8,0x29a8,0x29c7,0x29e8,0x29e8,0x29c8,0x3228,0x3208,0x31e8,0x31e8,0x29c8,0x29e7,0x31e7,0x31e8,0x31e8,0x31e8,0x29e8,0x31e8,0x3209,0x31e8,0x29c7,0x29c8,0x31c8,0x31c8,0x29c8,0x29c8,0x31e8,0x39e8,0x29e8,0x31e8,0x3208,0x39e8,0x31e8,0x3a08,0x39e9,0x31c8,0x31a8,0x39e9,0x31c8,0x29a7,0x31c7,0x31e8,0x29e8,0x29e8,0x31e8,0x31e8,0x2a08,0x29a7,0x21a7,0x31c8,0x3187,0x29a8,0x31a8,0x2987,0x3187,0x2987,0x39a7,0x31a7,0x29c7,0x29a7,0x29a6,0x29a7,0x2987,0x19a7,0x2186,0x2187,0x2967,0x2966,0x2987,0x2987,0x2967,0x2987,0x21a7,0x1987,0x2187,0x31a8,0x29c8,0x21a7,0x2987,0x2166,0x1966,0x2166,0x2145,0x2166,0x2986,0x2185,0x1965,0x2166,0x2946,0x2145,0x2146,0x2946,0x2165,0x1965,0x2125,0x2145,0x1965,0x1965,0x2145,0x2145,0x2145,0x2145,0x2146,0x1925,0x1925,0x1925,0x1925,0x1124,0x1104,0x1925,0x1946,0x1905,0x1125,0x1145,0x1145,0x1104,0x1145,0x1925,0x1924,0x1904,0x1105,0x1105,0x1104,0x1104,0x0904,0x1905,0x18e4,0x1925,0x18e4,0x10e4,0x1104,0x10e4,0x1105,0x1105,0x1125,0x1125,0x1104,0x18e3,0x0903,0x1105,0x10e4,0x08e4,0x0903,0x08c3,0x08c4,0x08e4,0x1104,0x1104,0x1103,0x1124,0x1104,0x10e4,0x10e4,0x10e3,0x1104,0x08c3,0x08e4,0x08e4,0x0904,0x10e4,0x08e4,0x08e4,0x10e4,0x10c4,0x1105,0x1104,0x10e5,0x10c4,0x08c4,0x00a3,0x08c3,0x08e3,0x08c3,0x10c3,0x10e4,0x08e4,0x1105,0x10c3,0x10c3,0x08c4,0x08c4,0x0904,0x08e4,0x10c3,0x08c3,0x0882,0x1083,0x1083,0x0883,0x08c3,0x08e4,0x1145,0x1925,0x1125,0x0904,0x1144,0x1923,0x3228,0x7471,0x8c52,0x2906,0x2125,0x2165,0x2966,0x3166,0x2945,0x39e7,0x52a9,0x52ea,0x52ea, +0x74b2,0x4aa9,0x52a9,0x52a9,0x52c9,0x4a89,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e8,0x524a,0x9cd3,0xc679,0xbeda,0xc6da,0xc6fb,0xc6da,0xc6da,0xc6fb,0xc6db,0xc6db,0xbedb,0xc6fb,0xc6fb,0xcf3c,0xd75c,0xcf3c,0xcf5c,0xc71b,0xc71c,0xcf7c,0xcf7d,0xcf5c,0xc75c,0xcf5d,0xc71c,0xc75d,0xbf5d,0xc73b,0xc75c,0xc73c,0xc73c,0xcf5d,0xc75c,0xcf7d,0xc75c,0xc71c,0xc6fc,0xbebb,0xb6ba,0xbeda,0xbefb,0xbefb,0xbf1b,0xbefa,0xbedb,0xbf1b,0xbf1b,0xc71c,0xcf5c,0xbf1b,0xbf1b,0xb6fb,0xb71c,0xbf1b,0xbefb,0xbefb,0xbf1b,0xcf3c,0xc75c,0xb6fb,0xbedb,0xb6db,0xb6db,0xb6db,0xbedb,0xbefb,0xb6fb,0xc71c,0xb6da,0xbefb,0xbefb,0xbedb,0xb6fb,0xb6fb,0xb6fb,0xbefb,0xbf3c,0xcf7e,0xcf7d,0xbf3c,0xbf1c,0xbf1b,0xbf3c,0xb6ba,0xbefb,0xb6db,0xb6db,0xbeda,0xb6db,0xb69a,0xaeba,0xb6fb,0xb6ba,0xb6ba,0xae99,0xae79,0xae59,0xa659,0xae7a,0xae59,0xa638,0xa659,0xa679,0xae38,0xae59,0xa679,0xa679,0xa679,0xa659,0xa638,0xae59,0xa659,0x9e38,0x9df7,0xa618,0xa659,0xa659,0x9e38,0x9df8,0x95d7,0xa659,0x95f6,0x95d6,0x9df7,0x95d7,0x95f7,0x95f8,0x9db6,0x9db6,0x95b6,0x9595,0x95b6,0x9576,0x8d55,0x9596,0x8d95,0x8d76,0x9596,0x95b6,0x95d6,0x95b6,0x8d95,0x9595,0x9df7,0xa618,0xa638,0x9e39,0x9618,0x9e59,0x9e18,0xa5f8,0x9dd6,0x95b7,0x95f7,0x9dd7,0x9dd7,0x95f6,0x95d6,0x9dd7,0x9df8,0xae59,0xa659,0xae79,0xa639,0xa638,0x9e18,0xa659,0xae9a,0xae9a,0xb6ba,0xb6db,0xbedb,0xae7a,0xb6ba,0xbeba,0xb69a,0xae9a,0xb6ba,0xb69a,0xbedb,0xae79,0xae58,0xae38,0xae59,0xae79,0xae9a,0xb69a,0xae79,0xae78,0xae99,0xae99,0xaeba,0xb6db,0xb6bb,0xb6fb,0xb6fa,0xb6da,0xb6da,0xb6db,0xae9a,0xbebb,0xbedb,0xb6ba,0xbe9a,0xb6da,0xb6fa,0xbefb,0xb6da,0xc6fc,0xb6db,0xaeba,0xb6db,0xb6ba,0xb6ba,0xb6db,0xbefb,0xbefb,0xaeba,0xae59,0xb699,0xb69a,0xb679,0xb699,0xb69a,0xb69a,0xae79,0xa67a,0xae7a,0xb679,0xb679,0xa658,0xa659,0xae7a,0xae7a,0xa679,0xb659,0xae39,0xa618,0xae39,0xae39,0xa617,0xae58,0xae59,0xb659,0xb618,0xae18,0xae18,0xae38,0xae18,0xa618,0x9dd7,0xa5f7,0xa5b7,0xa5f8,0x9df8,0xa5d7,0xa5d6,0x95d7,0x95d7,0xa5f7,0xa617,0x9df8,0x9dd7,0x9df8,0x9df8,0x9dd7,0x9db7,0x9dd7,0x95b7,0x8d76,0x95b6,0x9576,0x9db6,0x9db7,0x8db6,0x8db6,0x9dd7,0x9576,0x9555,0x9d35,0x9555,0x9556,0x8d76,0x8d76,0x9535,0x8d33,0x8d34,0x9555,0x8d14,0x8d34,0x9534,0x8d14,0x8d15,0x8d14,0x8cf3,0x9492,0x41e8,0x1925,0x2105,0x2965,0x3165,0x2186,0x3145,0x3a07,0x5289,0x5aea,0x5aea, +0x6c91,0x4ac9,0x52a9,0x4ac9,0x52ca,0x4a89,0x39e6,0x31a6,0x3228,0x3a29,0x3a08,0x3a08,0x3a09,0x49e9,0x6aec,0x736e,0x83af,0x83f0,0x8c10,0x8c31,0x8411,0x83cf,0x83ef,0x8c10,0x8c11,0x83f0,0x8c11,0x9431,0x9411,0x9472,0x9c72,0x9c72,0x9c52,0x9431,0x9431,0x9451,0x9451,0x9452,0x9432,0x9432,0x8bf1,0x9472,0x9cb2,0xa4b3,0x9c73,0x9cb3,0xad14,0xb4f4,0xad14,0xb575,0xad55,0xbd96,0xb575,0xad13,0xad14,0xad14,0xb534,0xc5b6,0xb555,0xad14,0xb555,0xbd76,0xb555,0xbd54,0xb555,0xbd76,0xbd75,0xbd96,0xc5b6,0xcdd7,0xbdd7,0xc5d8,0xc618,0xc618,0xce39,0xc618,0xce18,0xc5f8,0xc5d8,0xd659,0xce38,0xd639,0xcdf8,0xd639,0xd639,0xce18,0xce18,0xce38,0xd639,0xd679,0xce59,0xce38,0xce39,0xce19,0xce19,0xce18,0xd679,0xce7a,0xd69a,0xd67a,0xdeba,0xdedb,0xdf1b,0xdedb,0xd6ba,0xd679,0xdefb,0xdefb,0xdeda,0xdeba,0xdeba,0xd6ba,0xd6ba,0xdeba,0xdeba,0xd6ba,0xde9a,0xdeba,0xde9a,0xdeba,0xe6fb,0xe6fa,0xe6db,0xdeda,0xdeba,0xdeda,0xd6db,0xdedb,0xe6fb,0xde9a,0xdeba,0xdefb,0xdefb,0xdefc,0xdedb,0xe6fb,0xef3c,0xef7d,0xe71c,0xe71c,0xe71c,0xe71c,0xe6fb,0xe73b,0xe71c,0xef7d,0xef7d,0xe71c,0xe73c,0xe77d,0xe73d,0xe71c,0xe6fc,0xe71c,0xe71b,0xdf1b,0xe73c,0xe71c,0xdf3c,0xdefb,0xdefb,0xe71c,0xef3d,0xe73d,0xe71c,0xe73c,0xef3c,0xe73c,0xe73c,0xdefb,0xdefb,0xdf1b,0xe71c,0xe6db,0xe6db,0xde9a,0xd69a,0xdeba,0xdeba,0xe6db,0xd67a,0xce39,0xce38,0xd638,0xd638,0xd659,0xd659,0xce18,0xc5d7,0xcdf7,0xc5d7,0xc5d7,0xc5d7,0xbd96,0xcdf8,0xc617,0xc5d7,0xbdb7,0xbdb6,0xc5d7,0xbdd7,0xbd55,0xc597,0xc5b7,0xc5d7,0xbd96,0xb576,0xb596,0xbdb6,0xc5f7,0xc5d8,0xbd96,0xb555,0xbd96,0xbd75,0xad34,0xad34,0xad34,0xb534,0xb534,0xad14,0xb514,0xa4d4,0xa4f3,0xa4f3,0x9cb3,0xa4b3,0xa4d3,0x9c92,0x9c52,0xa493,0xa4b3,0x9c72,0x9471,0x9471,0x8c31,0x8bf0,0x83af,0x7b8e,0x8bf0,0x8baf,0x7b4e,0x7b2e,0x734e,0x7b6e,0x83ae,0x838e,0x7b8d,0x7b6e,0x734e,0x736e,0x7b8f,0x834e,0x7b2c,0x7b0c,0x72eb,0x730c,0x72ec,0x6acb,0x72ec,0x730c,0x62cc,0x62ac,0x62cc,0x6acb,0x6a6a,0x6a8b,0x62cb,0x628a,0x6249,0x624a,0x626b,0x5a8b,0x5a4a,0x5228,0x524a,0x4a2a,0x522a,0x4a28,0x4a09,0x49e9,0x49e8,0x41e8,0x49c8,0x49c8,0x5228,0x49e8,0x49e7,0x4187,0x4187,0x41a7,0x49a8,0x4186,0x41a7,0x39a8,0x3966,0x3146,0x3946,0x3166,0x3186,0x39a7,0x39a7,0x41a8,0x41c8,0x39c7,0x5209,0x49e8,0x3987,0x2925,0x2145,0x2165,0x2966,0x2986,0x3186,0x31a6,0x2144,0x3206,0x52a9,0x5b0a,0x5aea, +0x6c50,0x52aa,0x52a9,0x52c9,0x52c9,0x4a88,0x31a6,0x39e7,0x3a29,0x3a28,0x3a29,0x3a28,0x3228,0x3228,0x39e8,0x29a7,0x2166,0x3187,0x31a7,0x3187,0x31a8,0x3a08,0x31c7,0x29a7,0x31a7,0x2966,0x2946,0x2145,0x2145,0x2146,0x2166,0x2145,0x2946,0x2946,0x2187,0x2967,0x2167,0x2126,0x2966,0x2966,0x2967,0x3167,0x2966,0x2967,0x2947,0x2966,0x3187,0x3166,0x2966,0x2146,0x2146,0x2126,0x2946,0x2987,0x2167,0x2967,0x2946,0x3146,0x3967,0x2966,0x2967,0x2967,0x3166,0x3146,0x3166,0x31a7,0x31a8,0x2987,0x2987,0x2967,0x31a7,0x3168,0x3187,0x3187,0x3167,0x2967,0x3988,0x31a7,0x31a7,0x39e9,0x3187,0x39a8,0x41c8,0x3987,0x3187,0x3988,0x3988,0x39a7,0x3987,0x39a8,0x31a7,0x31c8,0x39a8,0x31a8,0x39c8,0x41a8,0x39a8,0x39a7,0x3987,0x3987,0x41a8,0x4188,0x4188,0x4188,0x4188,0x41a8,0x3988,0x4187,0x41a8,0x41c8,0x31a8,0x39a8,0x39a8,0x41a8,0x39a8,0x39c8,0x41e8,0x39c8,0x39a9,0x31c8,0x39e9,0x39c8,0x39e8,0x39c8,0x39a8,0x39c8,0x39c9,0x41c9,0x39c8,0x39a8,0x39e8,0x39e8,0x41e8,0x39c8,0x39a8,0x41c8,0x49e9,0x49e9,0x41c9,0x49c8,0x41a8,0x49c8,0x49e8,0x4a09,0x49c9,0x51e9,0x49c8,0x41c8,0x41a8,0x49e9,0x3988,0x41c8,0x41e8,0x41c8,0x41e8,0x41c8,0x49c8,0x41c8,0x41c8,0x41c8,0x41a8,0x39a8,0x3988,0x41a8,0x41c8,0x49c8,0x4187,0x3987,0x3988,0x3987,0x3987,0x3187,0x3167,0x3967,0x3987,0x3987,0x3166,0x3967,0x3946,0x3986,0x2946,0x3946,0x3146,0x3146,0x3166,0x2926,0x2946,0x2966,0x3146,0x3125,0x2926,0x2925,0x2925,0x2925,0x3125,0x2905,0x2905,0x2925,0x3125,0x2905,0x2925,0x2925,0x2105,0x20e4,0x2105,0x2124,0x2905,0x3104,0x2104,0x28e5,0x28e5,0x28e4,0x20c4,0x18e5,0x20e4,0x20e5,0x2904,0x2104,0x28e4,0x20c3,0x20a4,0x20c4,0x20c4,0x20c4,0x20c3,0x20e4,0x20c4,0x18e3,0x18c4,0x18e4,0x18c4,0x20c4,0x20a4,0x10c4,0x10a3,0x20c4,0x20e4,0x1125,0x1905,0x18c3,0x20c4,0x20a4,0x20c4,0x20e4,0x18a3,0x10a3,0x18c4,0x10c3,0x10c4,0x18c4,0x08a4,0x08a3,0x10c4,0x08a3,0x10c3,0x18c4,0x10c3,0x08a3,0x10a4,0x0883,0x10a4,0x1084,0x0883,0x10c3,0x18a4,0x18a3,0x18a3,0x10a3,0x0883,0x0863,0x0863,0x0883,0x10c4,0x10a4,0x10c4,0x10c3,0x08a3,0x0884,0x0883,0x18a4,0x1082,0x10a3,0x00a3,0x0882,0x0882,0x0882,0x1083,0x1082,0x1083,0x1082,0x1082,0x1882,0x1083,0x1083,0x1063,0x1083,0x0883,0x00a3,0x08a2,0x10a2,0x10c3,0x20e4,0x10c4,0x10e4,0x10e4,0x18c4,0x10c3,0x20e5,0x1904,0x1945,0x1965,0x2165,0x3186,0x31c6,0x31c6,0x2125,0x3a06,0x4ac9,0x5b0a,0x5aea, +0x6c50,0x52a9,0x5aa9,0x52a8,0x52c9,0x4a68,0x31c6,0x3a28,0x3a29,0x4249,0x3a29,0x3a28,0x3228,0x3a08,0x39c8,0x29c7,0x31c8,0x29c7,0x31e8,0x3208,0x3a09,0x39e9,0x3a09,0x3208,0x3208,0x31e8,0x29c7,0x29e7,0x3208,0x31c7,0x31e7,0x3a07,0x3a07,0x31e7,0x3207,0x3208,0x3208,0x4228,0x3a28,0x39e8,0x3208,0x31e8,0x3a08,0x3208,0x3228,0x3a48,0x3a28,0x39e8,0x3a28,0x3a09,0x3a08,0x3a09,0x3a29,0x3209,0x3a09,0x3a07,0x3a08,0x3a09,0x3a09,0x3a29,0x3a49,0x3a28,0x4209,0x4a09,0x3a28,0x3a29,0x4209,0x4229,0x4228,0x3a49,0x4249,0x4a4a,0x4a49,0x3a29,0x3a4a,0x4229,0x3a2a,0x3a29,0x3a09,0x4249,0x4229,0x4a29,0x4249,0x3a49,0x3a49,0x3a28,0x3a09,0x3a29,0x3249,0x3a49,0x3a4a,0x3a29,0x4a2a,0x4249,0x3a28,0x3a49,0x3269,0x4269,0x3a69,0x3a49,0x3a49,0x4249,0x4249,0x3a49,0x4249,0x3a29,0x4229,0x4249,0x424a,0x3a4a,0x3a2a,0x3a4a,0x4269,0x4269,0x3a69,0x4249,0x4269,0x4249,0x3a4a,0x426a,0x4a4a,0x4a4a,0x3a6a,0x3a6a,0x424a,0x422a,0x422a,0x424a,0x426a,0x4a49,0x4a6a,0x4a6b,0x426b,0x426a,0x426a,0x424a,0x4a4a,0x426a,0x426a,0x428a,0x428a,0x426a,0x424a,0x4a8a,0x3a4a,0x426a,0x3a49,0x3a49,0x3a49,0x3a69,0x3a69,0x4a8a,0x4a49,0x4a6a,0x4249,0x4249,0x4229,0x4a49,0x4269,0x3a49,0x4249,0x4229,0x4229,0x3a29,0x3a08,0x424a,0x3229,0x4249,0x422a,0x3a49,0x3a29,0x3229,0x3a09,0x3a28,0x4229,0x3a08,0x3a28,0x3a29,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x39e8,0x39e8,0x3208,0x39e8,0x31e8,0x31c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31a6,0x39e7,0x39e7,0x31c7,0x29c7,0x31c8,0x31c8,0x39e8,0x39c7,0x31e7,0x31a6,0x39a6,0x2986,0x31a7,0x39c7,0x39a7,0x3187,0x3187,0x31a7,0x2187,0x29a6,0x29a6,0x29a6,0x2986,0x3187,0x2987,0x31a6,0x3187,0x3187,0x2166,0x2967,0x2987,0x2986,0x2986,0x2946,0x3166,0x3166,0x1965,0x2965,0x3166,0x2925,0x2185,0x2146,0x2946,0x1966,0x1966,0x2166,0x1965,0x2146,0x2165,0x1945,0x2165,0x2965,0x2145,0x1945,0x2145,0x2145,0x1945,0x1945,0x2125,0x2945,0x2145,0x1925,0x2105,0x2126,0x1925,0x1925,0x1944,0x2125,0x1925,0x1905,0x1925,0x2124,0x2105,0x1905,0x1924,0x10e5,0x1104,0x1104,0x1104,0x10e5,0x1904,0x1104,0x1104,0x1904,0x2104,0x20e4,0x1904,0x1104,0x1103,0x1904,0x20c4,0x18c4,0x10e4,0x08e3,0x1904,0x10c4,0x10e4,0x20e4,0x08e3,0x1123,0x1104,0x0925,0x0924,0x1945,0x2165,0x2145,0x2145,0x2144,0x1945,0x2145,0x1945,0x1945,0x2966,0x2946,0x2966,0x29c7,0x31c7,0x2966,0x2124,0x4267,0x4aea,0x5b0b,0x5b0a, +0x6c51,0x52c9,0x5ac9,0x52c8,0x4ac8,0x3a68,0x3227,0x3a49,0x3a4a,0x3a69,0x3a49,0x3a29,0x3208,0x3207,0x31e7,0x2a08,0x31e7,0x2a07,0x31e8,0x3208,0x3208,0x31e8,0x3208,0x3208,0x3208,0x31c8,0x29c7,0x31c7,0x31c7,0x29a7,0x29c7,0x39c7,0x31e7,0x31c7,0x39c7,0x31c7,0x3208,0x3a08,0x29e8,0x29e7,0x3208,0x31e8,0x39e8,0x39c8,0x39e7,0x31c7,0x29e7,0x31e8,0x39e8,0x39e8,0x31e8,0x31c8,0x31c8,0x31a7,0x39e7,0x31e8,0x31e7,0x3a08,0x3a08,0x3a28,0x3a29,0x3a08,0x3208,0x39e8,0x3209,0x39e8,0x3a09,0x3228,0x4229,0x3a29,0x3a28,0x3a09,0x3a28,0x4228,0x4229,0x4249,0x3249,0x3a29,0x3a29,0x3229,0x3a49,0x4a49,0x3a28,0x3a29,0x3a49,0x3a69,0x3a69,0x4249,0x4249,0x426a,0x426a,0x3a49,0x4269,0x424a,0x3a4a,0x426a,0x4269,0x424a,0x4249,0x428a,0x3a69,0x426a,0x4249,0x4249,0x424a,0x426a,0x3a6a,0x4249,0x4269,0x3a49,0x424a,0x3a6a,0x4249,0x4269,0x3a6a,0x424a,0x426a,0x4229,0x4249,0x4269,0x4269,0x4a49,0x4249,0x3a49,0x4269,0x424a,0x424a,0x4269,0x4a49,0x4a49,0x4a49,0x4229,0x424a,0x428a,0x424a,0x424a,0x424b,0x3a4a,0x3a49,0x426a,0x4269,0x4249,0x424a,0x3a6a,0x3a6a,0x426a,0x3a69,0x3a6a,0x4269,0x4269,0x426a,0x426a,0x426a,0x3a89,0x3a69,0x4269,0x3a29,0x4249,0x426a,0x3a69,0x4289,0x3a49,0x3a29,0x422a,0x3249,0x3229,0x3a4a,0x422a,0x3a29,0x3229,0x3a29,0x3a28,0x4228,0x3a08,0x4209,0x3a08,0x3a28,0x3a08,0x31c8,0x4229,0x3a08,0x3a08,0x3208,0x29e8,0x3208,0x3a08,0x3a08,0x39e8,0x3209,0x31e7,0x39e8,0x39a7,0x4208,0x3a08,0x31e8,0x39e7,0x39e7,0x31c7,0x31e7,0x2986,0x31e7,0x31c7,0x31c7,0x31c7,0x31c7,0x39c7,0x2987,0x39a7,0x3187,0x29a6,0x29c6,0x29a6,0x31a7,0x31a7,0x21a6,0x21a6,0x31a7,0x31a7,0x29a6,0x3186,0x3186,0x31a7,0x2986,0x2986,0x3186,0x3166,0x2985,0x29a6,0x21a6,0x2166,0x2166,0x2166,0x2966,0x1966,0x2166,0x2985,0x2965,0x2186,0x1946,0x2146,0x2966,0x2966,0x2946,0x1146,0x1946,0x2145,0x1925,0x2966,0x2145,0x2165,0x2145,0x2965,0x2945,0x1945,0x2166,0x2125,0x2145,0x2145,0x1945,0x2145,0x1925,0x1125,0x1945,0x1925,0x1924,0x1145,0x1925,0x1924,0x1904,0x2125,0x1905,0x1925,0x1905,0x1924,0x1924,0x1105,0x1125,0x2104,0x1905,0x1124,0x2124,0x2125,0x1905,0x1105,0x1104,0x1104,0x1925,0x2104,0x20c4,0x1924,0x1904,0x1905,0x1925,0x1924,0x1924,0x1125,0x1945,0x1945,0x1145,0x1945,0x2145,0x2145,0x2185,0x2965,0x2146,0x1965,0x2945,0x2945,0x2145,0x2965,0x2986,0x2986,0x2987,0x31a7,0x2965,0x31e6,0x4aa8,0x5aea,0x630b,0x632a, +0x6cb1,0x4ac9,0x52c9,0x4ac9,0x4ac9,0x3a68,0x4227,0x4aaa,0x3a8a,0x4289,0x4269,0x3a49,0x3228,0x3a07,0x31e8,0x31e8,0x2987,0x31e8,0x29e7,0x31a7,0x31c7,0x29e7,0x31e8,0x31e8,0x39c8,0x31c8,0x29c7,0x31c7,0x31c8,0x29c8,0x31c8,0x31c8,0x31c8,0x31c7,0x31c7,0x39e8,0x3208,0x31e7,0x31c8,0x31c7,0x39e8,0x3a08,0x31e7,0x39e8,0x3a08,0x3a08,0x3228,0x3a08,0x3a08,0x3a08,0x39c8,0x3a08,0x31c8,0x31c7,0x3208,0x3208,0x3208,0x4228,0x3a08,0x3a08,0x3209,0x31e8,0x3a28,0x3a28,0x3229,0x3a29,0x4229,0x3249,0x4249,0x3a49,0x4229,0x4a49,0x4a49,0x4249,0x424a,0x3a4a,0x4249,0x4a49,0x3a49,0x3269,0x4249,0x4249,0x3a69,0x3a4a,0x4229,0x4a69,0x3a49,0x3a6a,0x3a6a,0x426a,0x428a,0x4249,0x424a,0x424a,0x426a,0x4a8b,0x4a6b,0x426a,0x4249,0x428b,0x3a6a,0x426a,0x4a6a,0x4a6a,0x4269,0x3a89,0x42aa,0x428a,0x428a,0x3a49,0x4a8a,0x428a,0x426a,0x426a,0x426a,0x4a6a,0x3a48,0x4249,0x4a6a,0x4a6a,0x426a,0x4a4a,0x4269,0x3a49,0x4249,0x3a29,0x4269,0x4249,0x4249,0x3a49,0x3a4a,0x3a49,0x3a49,0x424a,0x3a69,0x4249,0x4a4a,0x424a,0x4249,0x4269,0x424a,0x426a,0x4249,0x4269,0x426a,0x428a,0x426a,0x4249,0x4269,0x426a,0x4269,0x426b,0x428a,0x426a,0x3a6a,0x424a,0x4249,0x4269,0x426a,0x426a,0x426a,0x424a,0x424a,0x426a,0x424a,0x424a,0x424a,0x4229,0x4229,0x3a29,0x4229,0x3a48,0x3a28,0x3a08,0x3a08,0x3229,0x4229,0x3209,0x4249,0x4229,0x3a09,0x3a28,0x3a29,0x31e8,0x3a08,0x3a28,0x3a28,0x3a08,0x3a08,0x31e8,0x31e8,0x3a08,0x3a08,0x31e7,0x31e8,0x41e8,0x4208,0x31e8,0x39c8,0x29a7,0x31e7,0x39c7,0x31c7,0x31e7,0x39e8,0x39e9,0x29c8,0x31a7,0x39a7,0x3187,0x29c7,0x29e7,0x29c7,0x31a7,0x21a7,0x29c7,0x29e7,0x31a7,0x31c8,0x31c7,0x29a6,0x3187,0x2987,0x21a7,0x2986,0x2986,0x3186,0x29a7,0x2987,0x2987,0x2987,0x2166,0x2966,0x2966,0x2966,0x1985,0x29a5,0x29a6,0x2966,0x2146,0x2966,0x2987,0x2966,0x1946,0x1945,0x2165,0x2145,0x2166,0x1965,0x2165,0x2946,0x2966,0x2165,0x1965,0x2186,0x2166,0x1986,0x2186,0x2165,0x2966,0x2166,0x2146,0x2986,0x2186,0x3166,0x3165,0x2145,0x2146,0x2166,0x2165,0x2966,0x2966,0x2166,0x1945,0x2166,0x1945,0x1965,0x1946,0x1945,0x1945,0x2144,0x2145,0x1945,0x1965,0x2945,0x2945,0x2946,0x2126,0x2125,0x2946,0x1965,0x2985,0x2985,0x2165,0x2165,0x2165,0x1945,0x2146,0x1965,0x1145,0x2146,0x1965,0x21a6,0x2186,0x1966,0x2965,0x2965,0x2166,0x2166,0x31a6,0x29a6,0x31a6,0x3186,0x3186,0x39e6,0x4267,0x4ae9,0x5b2b,0x630b,0x630b, +0x7d33,0x4aa8,0x52ea,0x52c9,0x52c9,0x4ac9,0x5289,0x5289,0x426a,0x426a,0x4269,0x3a69,0x3a48,0x3a08,0x3a28,0x3208,0x3208,0x3207,0x3207,0x3208,0x3208,0x31e7,0x31e8,0x39e8,0x3a08,0x3a08,0x3a08,0x41e8,0x31e7,0x3a08,0x31c8,0x31e8,0x3a28,0x3228,0x3208,0x3a08,0x3a08,0x3a08,0x3208,0x3229,0x3a28,0x3a29,0x3209,0x3208,0x3a09,0x3249,0x3228,0x3a29,0x3a29,0x4229,0x3a08,0x3a29,0x3a49,0x3a4a,0x4229,0x3228,0x3249,0x3a49,0x3a49,0x3a29,0x424a,0x4249,0x3a49,0x3228,0x3a29,0x3229,0x424a,0x426a,0x4a69,0x3a6a,0x3a6a,0x4a69,0x4a6a,0x4a6a,0x426a,0x3a8a,0x3a8a,0x4249,0x4269,0x426a,0x428a,0x426a,0x428a,0x426a,0x426a,0x4a8a,0x3a6a,0x428b,0x3a6a,0x3a6a,0x428b,0x428a,0x42aa,0x428a,0x4a8b,0x4a8b,0x4a8a,0x52cb,0x4a8a,0x4aab,0x4a8b,0x4aab,0x428b,0x428b,0x4269,0x3a6a,0x4a6a,0x428b,0x4a8a,0x4a8b,0x4acb,0x4a6b,0x426a,0x426a,0x528a,0x4a6a,0x4a6b,0x426a,0x4a8a,0x426b,0x426a,0x42aa,0x4a6a,0x426a,0x426a,0x4a8a,0x4269,0x426a,0x4269,0x428a,0x4a6a,0x426a,0x426a,0x4a6a,0x426a,0x428b,0x426a,0x3a6a,0x426b,0x426a,0x426a,0x426a,0x424a,0x4a4a,0x4a6a,0x426a,0x426a,0x426a,0x4a69,0x426a,0x4a6a,0x4a6b,0x428b,0x428a,0x428a,0x426b,0x426a,0x426a,0x426b,0x428a,0x4a8a,0x4a8b,0x4a8b,0x426a,0x426a,0x526a,0x424a,0x4a4a,0x426a,0x3a6a,0x4269,0x3a89,0x426a,0x426a,0x424a,0x424a,0x424a,0x3a29,0x4249,0x424a,0x3a4a,0x3a28,0x3a69,0x3a09,0x3a09,0x3a09,0x3a29,0x3209,0x3a29,0x4209,0x4249,0x3a49,0x3a4a,0x3a08,0x3a08,0x3a29,0x3a08,0x3a28,0x3a28,0x3a29,0x3a09,0x3208,0x3208,0x3a09,0x3a08,0x3208,0x3227,0x3208,0x4209,0x2a08,0x3208,0x3a07,0x3a08,0x31e8,0x31c7,0x39e8,0x29c7,0x29e8,0x31c7,0x31e7,0x3208,0x39e8,0x31a8,0x31c8,0x31c8,0x21c6,0x31c7,0x29c7,0x29a7,0x39c8,0x39c7,0x31c7,0x29a7,0x31a7,0x29a6,0x21a6,0x2986,0x29a7,0x31c7,0x29e7,0x31c7,0x31c7,0x31c7,0x29c7,0x29a7,0x2987,0x29a7,0x31a7,0x2986,0x2986,0x29a6,0x21a6,0x21a7,0x2986,0x29a7,0x31a7,0x29a6,0x31a6,0x29c7,0x29a7,0x29c7,0x31a7,0x31a7,0x3186,0x29a7,0x29a6,0x29c7,0x2986,0x31a6,0x3187,0x2986,0x31a6,0x2985,0x2166,0x2986,0x1985,0x2186,0x2186,0x21a6,0x2166,0x2966,0x3186,0x2946,0x2967,0x3186,0x2985,0x21a5,0x2185,0x2166,0x2186,0x2985,0x2985,0x2186,0x2966,0x2146,0x2146,0x2166,0x2965,0x2146,0x2145,0x2146,0x2986,0x2186,0x2186,0x2165,0x3185,0x2986,0x2986,0x2186,0x3a08,0x2166,0x29a5,0x3185,0x39c7,0x3a47,0x52a9,0x5aea,0x5b0a,0x632a,0x5b2b, +0x8df7,0x4aeb,0x52ea,0x5aea,0x5b0a,0x5aea,0x52ea,0x5289,0x4268,0x42aa,0x4289,0x4289,0x428a,0x4249,0x4a69,0x3a69,0x3a08,0x3a48,0x3228,0x3a49,0x4249,0x4249,0x3a49,0x3a49,0x3a49,0x3a49,0x4249,0x4249,0x3a49,0x3a8a,0x3269,0x3a69,0x3208,0x31e8,0x3a28,0x3a29,0x3229,0x3a6a,0x3229,0x3229,0x3a4a,0x3a29,0x4229,0x4249,0x3a4a,0x3a6a,0x3a49,0x3a29,0x3a29,0x4249,0x4249,0x4269,0x426a,0x426a,0x4a6a,0x4a6a,0x428a,0x428a,0x4249,0x428a,0x4a8b,0x4a8a,0x428a,0x3a8b,0x3a8a,0x3a6a,0x4a6a,0x528b,0x4a8a,0x42ab,0x42cb,0x4aab,0x4a8a,0x4a8a,0x42ab,0x42cb,0x428b,0x4a8b,0x4a8a,0x4aab,0x4aab,0x4aab,0x52cb,0x52eb,0x4acb,0x52ab,0x4acb,0x4acb,0x4acb,0x52cb,0x52cc,0x52ab,0x4acb,0x4aab,0x4acc,0x52cc,0x52cb,0x4acc,0x52cb,0x52ab,0x52eb,0x52ec,0x4acc,0x4aab,0x52cb,0x4aab,0x52ab,0x4aab,0x52ab,0x4acb,0x4acb,0x4a8b,0x52ab,0x4aaa,0x52aa,0x4aab,0x4aab,0x4a8a,0x52ab,0x4a8b,0x42aa,0x4aaa,0x428a,0x4a8a,0x428a,0x4a8a,0x426a,0x4a8a,0x4aab,0x4a8a,0x4a89,0x4aab,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x428a,0x428a,0x4a8a,0x4aaa,0x42aa,0x428a,0x4a6a,0x4aaa,0x4a8a,0x52ab,0x42aa,0x4aab,0x4aab,0x4a6a,0x4a8b,0x52ab,0x428b,0x4a8a,0x428a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x528b,0x528b,0x4a8b,0x428a,0x42aa,0x4a8a,0x428a,0x52ab,0x42aa,0x52ab,0x4a8a,0x428a,0x4aaa,0x4acb,0x4a8b,0x4a6b,0x4a8a,0x4269,0x4a6a,0x4a8a,0x4a8a,0x428a,0x426a,0x426a,0x426a,0x422a,0x428a,0x428a,0x4269,0x3a49,0x4248,0x4a69,0x4249,0x4249,0x428a,0x3a49,0x4a6a,0x4229,0x424a,0x4269,0x4269,0x3a48,0x4229,0x4249,0x3a28,0x3a49,0x4249,0x4228,0x4228,0x3a27,0x4229,0x3a08,0x4208,0x3a28,0x3a28,0x3228,0x39e8,0x3208,0x3a27,0x3a07,0x4208,0x4208,0x39e9,0x39e8,0x39c7,0x29e7,0x31e7,0x3207,0x39e8,0x39c7,0x39e8,0x31e7,0x31c7,0x29a7,0x31c7,0x31e6,0x39c7,0x31c7,0x31a7,0x3188,0x31c7,0x31c7,0x31a6,0x39a7,0x3186,0x2966,0x29c7,0x3186,0x3166,0x3187,0x31a6,0x31a6,0x31a6,0x31c6,0x29c6,0x3186,0x3186,0x3186,0x21a5,0x2986,0x3185,0x31a6,0x3166,0x31a6,0x31a6,0x29a6,0x31a6,0x3165,0x29a5,0x2965,0x3186,0x2985,0x2965,0x2186,0x2186,0x1944,0x2945,0x2125,0x3165,0x2165,0x2165,0x2965,0x2986,0x2965,0x2985,0x2965,0x2165,0x2145,0x3165,0x2965,0x2185,0x3164,0x2965,0x2945,0x2165,0x2145,0x2986,0x2945,0x2165,0x2946,0x2985,0x2185,0x2985,0x29a6,0x2985,0x31a6,0x31a5,0x31a5,0x2985,0x29a6,0x2185,0x29a5,0x31e6,0x3a27,0x4288,0x52ea,0x5aea,0x5b0a,0x5b2b,0x5b2a, +0xae99,0x4baf,0x530a,0x530a,0x630b,0x630b,0x5b2b,0x52ea,0x4ac9,0x4aaa,0x526a,0x5b0c,0x5b4c,0x634c,0x73ae,0x52ca,0x4228,0x4289,0x3a48,0x4269,0x630b,0x634c,0x530b,0x4a89,0x52aa,0x4a49,0x4a69,0x52ca,0x5b4c,0x638d,0x4a8a,0x4aa9,0x634c,0x6bce,0x638d,0x63ad,0x6bad,0x6b8d,0x6bed,0x6bcd,0x4aaa,0x4248,0x4268,0x4249,0x4269,0x4269,0x4269,0x4269,0x4a49,0x4248,0x3a68,0x4268,0x4a6a,0x4269,0x4a69,0x4a69,0x4229,0x426a,0x4a49,0x4a89,0x4269,0x52ab,0x4a6a,0x4a89,0x4a6a,0x4aaa,0x4268,0x4248,0x426a,0x4a6a,0x4a8a,0x4aab,0x4aaa,0x4a69,0x4a8a,0x4aaa,0x5289,0x528a,0x4a6a,0x528b,0x52aa,0x52ca,0x52ab,0x52ab,0x52aa,0x528b,0x4acb,0x52aa,0x4aaa,0x528a,0x5acb,0x52ab,0x4aaa,0x5acb,0x5acb,0x52cb,0x52aa,0x4249,0x4a4a,0x526a,0x52aa,0x528a,0x52aa,0x4269,0x4a8a,0x52ab,0x528a,0x4a89,0x4a8a,0x4a69,0x4a8a,0x428a,0x4a8a,0x4aa9,0x4aa9,0x4aaa,0x4249,0x4a68,0x52a9,0x4a69,0x4269,0x428a,0x4a69,0x528a,0x4a89,0x4aca,0x528a,0x4a69,0x4a6a,0x4aa9,0x4a48,0x3a28,0x4269,0x42aa,0x4269,0x4a49,0x4aa9,0x42aa,0x4a8a,0x4a8a,0x4aa9,0x4a69,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a89,0x4a28,0x4a6a,0x4248,0x5289,0x4a89,0x3a69,0x3249,0x4249,0x4289,0x4269,0x4a49,0x4269,0x4249,0x4249,0x424a,0x4229,0x5268,0x4a68,0x4228,0x4249,0x4a28,0x4228,0x4228,0x4229,0x4248,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x3a48,0x3a28,0x3a08,0x4228,0x4249,0x4228,0x4207,0x39e7,0x39e7,0x41e7,0x39e8,0x4227,0x31e7,0x3a48,0x3a27,0x4228,0x4248,0x4207,0x4228,0x3a07,0x31c6,0x3a08,0x39e7,0x3228,0x3248,0x39e7,0x41e7,0x39a6,0x39e7,0x41e7,0x39e7,0x31a7,0x39c6,0x39a6,0x39c7,0x39e7,0x31c7,0x39e6,0x31c6,0x3a08,0x31c6,0x39e6,0x3a07,0x31c6,0x39e7,0x31a6,0x3a07,0x31c6,0x31c6,0x3a07,0x31e7,0x31c6,0x39c6,0x31c6,0x31a6,0x31e7,0x39e6,0x4207,0x3a07,0x29a6,0x31c7,0x39e7,0x41e7,0x39e7,0x31c6,0x3a06,0x39c7,0x31c7,0x39c6,0x3a06,0x39e6,0x3a07,0x3a06,0x31e6,0x3a07,0x3206,0x3207,0x4207,0x3a06,0x4227,0x4227,0x3a07,0x4227,0x3a26,0x39e7,0x3a07,0x31e6,0x4206,0x4227,0x39e7,0x39e6,0x4227,0x4206,0x39e7,0x4228,0x4207,0x4206,0x4207,0x39e6,0x4207,0x41e7,0x4206,0x3a27,0x3a06,0x3a27,0x3a26,0x3a07,0x3206,0x3a07,0x3a07,0x4207,0x4206,0x31e6,0x39e7,0x39e6,0x4205,0x3a06,0x39e6,0x39e6,0x3206,0x3206,0x3207,0x41e7,0x39e6,0x3206,0x3a07,0x3a06,0x3a07,0x3226,0x4226,0x3a06,0x4227,0x3a07,0x3a27,0x4248,0x4248,0x5289,0x5aaa,0x5aca,0x5aca,0x5b0a,0x5b0b,0x5b2b, +0xc698,0x95f8,0x4b2c,0x5b4b,0x5b0b,0x632b,0x5b0b,0x5b0b,0x530a,0x5aea,0x52aa,0x4a89,0x52a9,0x52aa,0x5289,0x5289,0x5289,0x4aa9,0x4aa9,0x4ac9,0x52a9,0x52a9,0x52a9,0x5a89,0x4a89,0x52a9,0x5289,0x5289,0x52a9,0x4a89,0x5269,0x5289,0x5289,0x5269,0x4a68,0x4a8a,0x4a8a,0x52a9,0x5aa9,0x5289,0x4aa9,0x52c9,0x52a8,0x52a9,0x52a9,0x52aa,0x52a9,0x52c9,0x52c9,0x4aca,0x52ca,0x5aca,0x52ca,0x4ac9,0x52ea,0x52aa,0x52c9,0x52ca,0x52ca,0x4ac9,0x52ca,0x52ea,0x52e9,0x5ae9,0x5aca,0x52ca,0x4aca,0x52ea,0x52ca,0x4aca,0x52ca,0x5aca,0x52ea,0x52e9,0x52ea,0x52ca,0x52c9,0x5aca,0x52cb,0x52ea,0x5aea,0x5aea,0x5aea,0x5aea,0x52eb,0x530a,0x52ea,0x52ea,0x5aea,0x5aea,0x5aeb,0x52ea,0x5aea,0x5b0b,0x5b0a,0x632b,0x5b0b,0x5b0b,0x5b0c,0x52eb,0x530b,0x530a,0x5b0a,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632b,0x630b,0x632b,0x5b2b,0x630b,0x632b,0x5b0a,0x5b2b,0x5b0b,0x630b,0x5b2b,0x5b2b,0x632b,0x632b,0x632b,0x632b,0x5b4b,0x5b2b,0x5b4b,0x5b2b,0x632b,0x632b,0x5b2b,0x5b2c,0x5b2b,0x5b2b,0x634b,0x634a,0x5b2b,0x5b0b,0x5b2b,0x632b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x5b0b,0x630b,0x5b0a,0x5b0b,0x5b2b,0x632b,0x5b4a,0x5b2a,0x5b0b,0x632a,0x5b0a,0x530a,0x530b,0x52eb,0x530b,0x52ea,0x5aea,0x5b0a,0x5b0b,0x52ea,0x5aea,0x5aca,0x52ea,0x52eb,0x52cb,0x5aeb,0x5aeb,0x52cb,0x5aca,0x52cb,0x52eb,0x52ea,0x52ea,0x5aea,0x52ca,0x52ca,0x5aea,0x5aca,0x52ca,0x5aaa,0x52ca,0x52c9,0x52ca,0x52ca,0x52c9,0x52a8,0x52a9,0x5aa9,0x52e9,0x52c9,0x52c9,0x52aa,0x52aa,0x5aaa,0x5aea,0x5aaa,0x4ac9,0x52a9,0x52a8,0x52c9,0x52a9,0x52a9,0x52c9,0x52a9,0x5ac9,0x4aa9,0x52aa,0x5aaa,0x52c9,0x52a9,0x4aa9,0x52a9,0x4ac9,0x52a8,0x52a9,0x5aa9,0x52a9,0x52a9,0x52a9,0x52a9,0x4ac9,0x42a8,0x4aa9,0x52a9,0x52a9,0x4aa9,0x52a9,0x4aa9,0x4aa9,0x4a89,0x4a89,0x5289,0x5289,0x5289,0x4a88,0x4a89,0x4a88,0x5289,0x5288,0x4a89,0x4a88,0x4a88,0x4a68,0x4a68,0x4288,0x4288,0x4a68,0x5287,0x5288,0x4a68,0x4a88,0x4aa8,0x4a88,0x4a89,0x4a88,0x4a88,0x4a67,0x5288,0x4aa8,0x4288,0x4a88,0x4a88,0x4a68,0x4a68,0x4268,0x4a68,0x4268,0x4a68,0x4288,0x4a68,0x4a68,0x5247,0x4a67,0x4a68,0x4267,0x4a67,0x4a47,0x4247,0x4228,0x4a68,0x4a48,0x4a48,0x4227,0x4a48,0x4a47,0x4248,0x3a48,0x4247,0x4227,0x4227,0x4227,0x4227,0x3a47,0x3a47,0x3a47,0x4227,0x3a27,0x3a46,0x4a27,0x4247,0x4247,0x4247,0x4248,0x4a48,0x5248,0x5288,0x52a9,0x52aa,0x5aca,0x52eb,0x5aea,0x534a, +0xce57,0xdfbe,0x7d56,0x52eb,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2a,0x62e9,0x62ca,0x62e9,0x5b09,0x5aea,0x5aea,0x5aea,0x5aea,0x52ea,0x5aea,0x52ea,0x5b0a,0x5aea,0x5aca,0x5aca,0x52ea,0x5aca,0x5aea,0x5ac9,0x52ea,0x5ae9,0x5aea,0x5aea,0x530a,0x52ea,0x5b0a,0x52ea,0x5ae9,0x5aea,0x5aea,0x5b09,0x5aea,0x5aeb,0x5aeb,0x5aea,0x5b0a,0x630a,0x5b0a,0x5b0a,0x5b0a,0x5b0a,0x630a,0x632a,0x630b,0x630b,0x5b2b,0x5b2a,0x5b0a,0x632b,0x5b2b,0x5b2b,0x632a,0x5b2b,0x5b2b,0x632b,0x632b,0x632b,0x632a,0x634b,0x632b,0x632a,0x632b,0x5b2a,0x632b,0x632b,0x632b,0x632b,0x632b,0x632b,0x632c,0x634b,0x6b2a,0x632a,0x632b,0x632b,0x634b,0x6b2b,0x5b6c,0x636b,0x6b6b,0x634b,0x636b,0x6b4c,0x634b,0x634b,0x6b6b,0x6b6b,0x634c,0x6b4c,0x636c,0x636b,0x6b6c,0x6b6b,0x6b6b,0x636c,0x636b,0x636c,0x5b6c,0x636b,0x6b6c,0x736c,0x736b,0x736c,0x634c,0x6b6c,0x636c,0x636c,0x736c,0x738c,0x6b6c,0x6b6b,0x6b6b,0x636c,0x6b6c,0x6b6c,0x6b6c,0x636c,0x6b6c,0x6b6c,0x6b8c,0x6b8c,0x6b8c,0x738c,0x6b6c,0x636c,0x6b8c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b8c,0x638c,0x636c,0x6b6c,0x636b,0x5b6b,0x636c,0x636c,0x734c,0x6b6b,0x636c,0x634c,0x636b,0x6b6c,0x6b4b,0x634c,0x634c,0x634c,0x634b,0x6b4a,0x632b,0x632b,0x632b,0x632b,0x5b4b,0x5b4b,0x632b,0x632b,0x632b,0x5b6b,0x632b,0x632b,0x632b,0x630b,0x630c,0x632b,0x5b0b,0x632b,0x5b2b,0x5b2a,0x5b0a,0x632a,0x630b,0x630b,0x630a,0x5b0a,0x5b0a,0x630a,0x630b,0x630a,0x630a,0x5b0a,0x630b,0x62eb,0x630b,0x630b,0x5b0a,0x5aea,0x5aeb,0x5aea,0x5aea,0x5aea,0x5aea,0x5ae9,0x5aeb,0x5aea,0x5aca,0x5aca,0x52ea,0x5aea,0x5aea,0x5aca,0x5aca,0x5aca,0x5aca,0x62c9,0x5ac9,0x5ae9,0x5aca,0x5aea,0x5aca,0x52a9,0x5ac9,0x5aaa,0x5aca,0x5aa9,0x5aa9,0x5ac9,0x52c9,0x52c9,0x52ca,0x5ac9,0x5ac9,0x52a9,0x52a9,0x5aa9,0x52a9,0x52a9,0x5a89,0x5a89,0x5289,0x52a9,0x52a9,0x5a88,0x5aa8,0x5288,0x5289,0x52a9,0x4a89,0x5288,0x4aa8,0x4a88,0x5289,0x4a88,0x52a8,0x5288,0x5a88,0x5289,0x5289,0x5289,0x4a89,0x4a89,0x5289,0x5288,0x5288,0x5289,0x5288,0x4a88,0x4a88,0x5288,0x4a88,0x5288,0x4a88,0x4a88,0x4288,0x4a68,0x4a68,0x4a87,0x4a88,0x5268,0x5248,0x4a68,0x4a48,0x4268,0x4a68,0x4a67,0x4a47,0x4a68,0x4a67,0x4a68,0x4247,0x5247,0x4a47,0x4a47,0x4a27,0x4a27,0x4a67,0x4a47,0x4a47,0x4a47,0x4a27,0x4247,0x4247,0x3a27,0x3a27,0x4a27,0x4a27,0x4a27,0x4247,0x4247,0x4247,0x4247,0x4a48,0x5289,0x52a8,0x52c9,0x52a9,0x52ea,0x4b0a,0x8d13, +0xbe16,0xded9,0xd77e,0x8514,0x52ea,0x5b4b,0x5b6a,0x5b2a,0x5b0b,0x630b,0x530a,0x5ae9,0x52ea,0x5b0a,0x5b09,0x5ae9,0x5b0a,0x52ea,0x52ea,0x5aea,0x5ae9,0x62ea,0x5aeb,0x62ea,0x5aea,0x62ea,0x62ea,0x62ea,0x5aea,0x5aea,0x52ea,0x52ea,0x5aea,0x5aea,0x5ac9,0x5b0a,0x5aea,0x5aea,0x5b0a,0x62ea,0x5b0a,0x5b0a,0x5aea,0x5b0a,0x5b0a,0x5b0a,0x630a,0x632a,0x5b0b,0x630b,0x632b,0x630a,0x632a,0x630b,0x630b,0x634b,0x5b4a,0x632a,0x632b,0x632b,0x5b2b,0x5b4b,0x632b,0x634b,0x5b2b,0x634b,0x634b,0x634b,0x634b,0x5b4b,0x634b,0x632b,0x6b4b,0x6b4b,0x634c,0x634b,0x634b,0x634b,0x5b4b,0x634b,0x6b4b,0x6b4b,0x6b2b,0x634b,0x634b,0x6b4b,0x734b,0x6b4b,0x6b6b,0x6b6b,0x6b4c,0x6b6c,0x6b6c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b6c,0x734c,0x6b6c,0x6b4c,0x6b4c,0x6b6c,0x638c,0x638c,0x6b8c,0x6b6c,0x6b6c,0x6b6c,0x736c,0x736c,0x6b8c,0x738c,0x6b6c,0x734c,0x736c,0x6b8c,0x736c,0x6b6c,0x736c,0x738d,0x6b6c,0x6b6c,0x738c,0x73ac,0x73ac,0x738c,0x738c,0x6b6c,0x73ac,0x6bac,0x6bac,0x6bac,0x738c,0x6b6c,0x736d,0x6b6c,0x6b6c,0x738c,0x736d,0x736c,0x6b8c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x636c,0x636b,0x6b4b,0x6b6c,0x6b6c,0x634b,0x636b,0x634c,0x6b4c,0x634c,0x5b6c,0x634c,0x6b4c,0x634b,0x6b2c,0x6b4c,0x732b,0x6b4b,0x6b4b,0x6b4b,0x634b,0x634b,0x634b,0x632c,0x5b4b,0x634b,0x634b,0x6b2b,0x632b,0x632b,0x632b,0x632b,0x632b,0x632b,0x630b,0x632b,0x632b,0x5b2b,0x5b0b,0x632b,0x630a,0x5b0a,0x630a,0x630a,0x5b0b,0x5b0b,0x630b,0x6b0a,0x630b,0x5b0b,0x5aea,0x5b0a,0x5b0a,0x5b2b,0x5b0a,0x5b0a,0x630a,0x62ea,0x630a,0x5b0a,0x5aea,0x62ea,0x5aea,0x62ea,0x5aea,0x5aca,0x62ca,0x5aca,0x52e9,0x5ae9,0x5ae9,0x5ae9,0x5aea,0x5ae9,0x5aca,0x52ca,0x5aca,0x5aca,0x62ca,0x5aea,0x62a9,0x5aaa,0x5aaa,0x52aa,0x52a9,0x52ea,0x5ae9,0x5ac9,0x52ca,0x52ca,0x5aaa,0x5aaa,0x52a9,0x5aa9,0x52a9,0x5aa9,0x5aa9,0x5aa9,0x52a9,0x5289,0x5aa9,0x52a9,0x52c9,0x52a8,0x52a8,0x52a9,0x5269,0x5a89,0x52a8,0x52a9,0x5a89,0x5a69,0x5289,0x5288,0x5a88,0x5289,0x5aa9,0x5a88,0x52a8,0x52a9,0x52a8,0x52a8,0x4aa8,0x4a89,0x5289,0x5269,0x5289,0x5288,0x5288,0x5268,0x4a68,0x4a88,0x4a88,0x5288,0x4a88,0x4a68,0x5268,0x4268,0x4a69,0x4247,0x4a68,0x4a68,0x4267,0x4a68,0x4a67,0x5268,0x4247,0x4a47,0x4a48,0x4a27,0x4248,0x4227,0x4a47,0x4a47,0x4a47,0x4a27,0x4a47,0x4247,0x4a27,0x4a48,0x4a27,0x4a27,0x4227,0x4228,0x4a27,0x4a47,0x4a47,0x4a48,0x5288,0x52a8,0x4268,0x636c,0x84b1,0x94b3, +0xadb5,0xc617,0xceb9,0xcf3c,0x9df7,0x63ee,0x530a,0x52e9,0x52c9,0x4aa9,0x52c9,0x52ca,0x5aca,0x5aca,0x52c9,0x5aea,0x5b0a,0x5aea,0x62ea,0x62ea,0x5aea,0x5aea,0x5ae9,0x630a,0x5b0a,0x5aea,0x5aea,0x5b0a,0x5b0a,0x5aea,0x5aca,0x5aea,0x52ca,0x5aea,0x62ea,0x5aea,0x5aea,0x5b0a,0x5b0b,0x630b,0x630a,0x6b0b,0x630a,0x5b0a,0x5b2a,0x630a,0x630a,0x630a,0x632b,0x632b,0x632b,0x5b0b,0x5b2b,0x5b4a,0x5b2a,0x5b2a,0x632b,0x632b,0x632a,0x632b,0x634b,0x5b4b,0x634b,0x636b,0x636b,0x6b4c,0x634b,0x632c,0x634c,0x5b6c,0x634c,0x632c,0x634b,0x634b,0x634c,0x6b4b,0x6b4b,0x6b4c,0x636c,0x6b6c,0x6b4b,0x738c,0x6b4b,0x6b6c,0x6b6c,0x634c,0x6b4c,0x6b4c,0x6b4c,0x6b6c,0x6b8c,0x6b6c,0x636b,0x6b6c,0x736c,0x736c,0x6b6c,0x6b6c,0x738c,0x738c,0x6b8c,0x6b6c,0x6b6c,0x6b8c,0x6b6c,0x6b6d,0x738c,0x6b8c,0x6b8c,0x6b8c,0x6b8d,0x738c,0x738c,0x6b8c,0x6b8c,0x738c,0x736c,0x738d,0x73ad,0x738c,0x6b8c,0x6b8c,0x6b8c,0x736c,0x736d,0x738c,0x738c,0x6b6c,0x6b8c,0x738c,0x738d,0x738d,0x738c,0x6b8c,0x6b8c,0x738c,0x738c,0x738c,0x6b6c,0x6b6c,0x6b8c,0x6b8c,0x738c,0x6b6c,0x6b8d,0x6b8c,0x6b8c,0x734c,0x6b6c,0x6b6c,0x736c,0x6b8c,0x6b8c,0x6b6c,0x6b6c,0x6b4c,0x6b4c,0x6b4c,0x6b4b,0x734c,0x6b4c,0x6b4c,0x6b4b,0x634b,0x6b4b,0x6b6b,0x6b4b,0x634b,0x5b2b,0x632b,0x632b,0x6b4c,0x632b,0x632b,0x634b,0x632b,0x632b,0x632b,0x6b2b,0x6b2b,0x632a,0x5b2b,0x632b,0x5b0a,0x632a,0x630a,0x630a,0x5b0b,0x5aea,0x630a,0x630b,0x630a,0x5aea,0x62ea,0x62ea,0x630a,0x5b0a,0x5aea,0x5aea,0x5aea,0x62eb,0x62ca,0x5aaa,0x5aea,0x52c9,0x5ae9,0x5ac9,0x62e9,0x62ca,0x5aa9,0x5ac9,0x5aca,0x5aca,0x52a9,0x5aca,0x5ac9,0x5ae9,0x52a9,0x52a9,0x52a9,0x5a89,0x52a9,0x4a69,0x5289,0x5aa9,0x5289,0x5a89,0x5269,0x5269,0x5289,0x4a67,0x52a8,0x5288,0x5288,0x4a68,0x4a68,0x4a68,0x4a68,0x4a88,0x4a68,0x4a88,0x5247,0x5248,0x4a48,0x4a68,0x4a68,0x4a48,0x4a28,0x4a48,0x4247,0x4247,0x4a47,0x4a48,0x5248,0x4a47,0x4a48,0x4a48,0x4248,0x4248,0x4228,0x4227,0x4227,0x4248,0x4227,0x4227,0x4247,0x4247,0x4227,0x4227,0x4227,0x4a27,0x4247,0x4247,0x3a27,0x4227,0x4227,0x3a27,0x4a27,0x4207,0x4207,0x4227,0x4207,0x4207,0x4207,0x4227,0x3a26,0x4207,0x41e7,0x4207,0x3a07,0x3a07,0x4207,0x4227,0x3a26,0x3207,0x3a27,0x3a27,0x39e7,0x4207,0x41e7,0x4228,0x3a07,0x3a06,0x4a27,0x4227,0x4227,0x4227,0x4207,0x3a07,0x3a08,0x39e7,0x4227,0x4227,0x4228,0x4a48,0x52ea,0x5b8d,0x7c50,0x7c0f,0x73ae, +0xa574,0xb5b5,0xbdf6,0xce57,0xc6fa,0xae79,0x8533,0x640f,0x5b6c,0x534c,0x530b,0x532a,0x4aea,0x4aea,0x4aea,0x4aea,0x52ca,0x4aca,0x52ea,0x530b,0x530b,0x52ea,0x52ea,0x530a,0x52ca,0x4aea,0x4aea,0x4b0a,0x52ea,0x52ea,0x52ea,0x52ea,0x52eb,0x4aea,0x4ae9,0x4aca,0x530b,0x52eb,0x52eb,0x52ea,0x52ea,0x52ea,0x5aea,0x530a,0x530a,0x5b0a,0x5b0b,0x5b0b,0x530a,0x530a,0x530b,0x530b,0x530b,0x5b2b,0x532c,0x4b0b,0x532b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x530b,0x530b,0x52eb,0x530b,0x532b,0x5b0b,0x5b2b,0x530b,0x530a,0x5aeb,0x5b0b,0x532b,0x530c,0x5b2b,0x5b0b,0x5b0b,0x530b,0x4b2b,0x532b,0x5b2b,0x5b2b,0x532c,0x534d,0x5b4c,0x5b2c,0x532c,0x534c,0x5b2c,0x5b2b,0x5b4c,0x5b2b,0x5b2c,0x532c,0x5b2b,0x5b4b,0x534b,0x5b4b,0x5b4b,0x534b,0x5b6c,0x534c,0x532b,0x5b4c,0x5b4c,0x5b2c,0x5b4c,0x5b4c,0x5b6c,0x5b6c,0x5b6c,0x5b6c,0x636c,0x634c,0x5b4c,0x5b6c,0x636d,0x634c,0x5b6c,0x5b6d,0x636d,0x5b8d,0x5b6c,0x5b6c,0x636d,0x638d,0x63ad,0x638d,0x638d,0x638d,0x636d,0x636d,0x5b6d,0x5b6d,0x638e,0x638e,0x638d,0x6b6d,0x638d,0x6b8d,0x638d,0x636d,0x636d,0x5b8c,0x638d,0x5b8d,0x5b6d,0x5b4d,0x638d,0x5b8d,0x5b8d,0x636d,0x636d,0x5b8d,0x5b8d,0x5b8d,0x638d,0x636c,0x636c,0x636c,0x5b8c,0x636c,0x634c,0x5b4c,0x5b6c,0x5b4c,0x5b6c,0x5b8c,0x5b6c,0x636c,0x5b2c,0x5b6c,0x5b6d,0x5b4c,0x636c,0x636d,0x5b4c,0x534d,0x5b4c,0x5b4b,0x5b6c,0x5b4b,0x5b4b,0x5b4c,0x536c,0x536c,0x5b6c,0x638d,0x636d,0x5b2c,0x5b4c,0x5b6c,0x636c,0x636b,0x634c,0x634c,0x5b4c,0x5b6c,0x5b4c,0x5b4c,0x5b4c,0x5b6c,0x636c,0x63ad,0x5b4c,0x636c,0x638d,0x5b6d,0x5b8d,0x5b8d,0x5b6d,0x536c,0x5b8d,0x5b6d,0x536c,0x5b8d,0x638d,0x5bad,0x63ae,0x5bad,0x5b8d,0x5b8d,0x6bae,0x5bad,0x638d,0x6bce,0x6bce,0x5b8d,0x638d,0x6b8d,0x638d,0x63ad,0x5bad,0x6bee,0x6bce,0x63ce,0x6bce,0x63cd,0x6bce,0x6bee,0x6c0e,0x73ef,0x6bee,0x6c0e,0x6bee,0x73ee,0x740f,0x6c0e,0x6c2e,0x6c0f,0x73ef,0x740f,0x742f,0x740f,0x740f,0x7410,0x742f,0x7470,0x6c2f,0x7c4f,0x7450,0x7450,0x7470,0x7c90,0x7c50,0x7c70,0x8470,0x7c70,0x7c70,0x7c50,0x7c70,0x7c71,0x7c91,0x7c90,0x7450,0x6c70,0x7c2f,0x7c4f,0x7c90,0x7c70,0x7c70,0x7450,0x7c70,0x7c71,0x7470,0x742f,0x7c50,0x7c30,0x7430,0x6c50,0x7450,0x7c2f,0x7c2f,0x7450,0x73ef,0x740f,0x744f,0x744f,0x740f,0x6bef,0x6c0f,0x6bee,0x63ce,0x6bee,0x6bee,0x6bee,0x73ce,0x6bae,0x6bcf,0x6bee,0x73ef,0x73ef,0x7bef,0x7c0f,0x7bef,0x6bce,0x6b8d,0x6b4c,0x636d}; diff --git a/MCUME_esp32/espo2em/main/main.c b/MCUME_esp32/espo2em/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espo2em/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espo2em/main/table.c b/MCUME_esp32/espo2em/main/table.c new file mode 100644 index 0000000..d7569db --- /dev/null +++ b/MCUME_esp32/espo2em/main/table.c @@ -0,0 +1,341 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * 8048 Mnemonics + */ + + +#include "cpu.h" +#include "table.h" + + +struct lookup_tag lookup[] = { + + /* 00 */ {"NOP",1,0}, + /* 01 */ {"ILL",1,0}, + /* 02 */ {"OUTL BUS,A",1,0}, + /* 03 */ {"ADD A,",2,1}, + + /* 04 */ {"JMP",2,2}, + /* 05 */ {"EN I",1,0}, + /* 06 */ {"ILL",1,0}, + /* 07 */ {"DEC A",1,0}, + + /* 08 */ {"INS A,BUS",1,0}, + /* 09 */ {"IN A,P1",1,0}, + /* 0A */ {"IN A,P2",1,0}, + /* 0B */ {"ILL",1,0}, + + /* 0C */ {"MOVD A,P4",1,0}, + /* 0D */ {"MOVD A,P5",1,0}, + /* 0E */ {"MOVD A,P6",1,0}, + /* 0F */ {"MOVD A,P7",1,0}, + + /* 10 */ {"INC @R0",1,0}, + /* 11 */ {"INC @R1",1,0}, + /* 12 */ {"JB0",2,3}, + /* 13 */ {"ADDC A,",2,1}, + + /* 14 */ {"CALL",2,2}, + /* 15 */ {"DIS I",1,0}, + /* 16 */ {"JTF",2,3}, + /* 17 */ {"INC A",1,0}, + + /* 18 */ {"INC R0",1,0}, + /* 19 */ {"INC R1",1,0}, + /* 1A */ {"INC R2",1,0}, + /* 1B */ {"INC R3",1,0}, + + /* 1C */ {"INC R4",1,0}, + /* 1D */ {"INC R5",1,0}, + /* 1E */ {"INC R6",1,0}, + /* 1F */ {"INC R7",1,0}, + + /* 20 */ {"XCH A,@R0",1,0}, + /* 21 */ {"XCH A,@R1",1,0}, + /* 22 */ {"ILL",1,0}, + /* 23 */ {"MOV A,",2,1}, + + /* 24 */ {"JMP",2,2}, + /* 25 */ {"EN TCNTI",1,0}, + /* 26 */ {"JNT0",2,3}, + /* 27 */ {"CLR A",1,0}, + + /* 28 */ {"XCH A,R0",1,0}, + /* 29 */ {"XCH A,R1",1,0}, + /* 2A */ {"XCH A,R2",1,0}, + /* 2B */ {"XCH A,R3",1,0}, + + /* 2C */ {"XCH A,R4",1,0}, + /* 2D */ {"XCH A,R5",1,0}, + /* 2E */ {"XCH A,R6",1,0}, + /* 2F */ {"XCH A,R7",1,0}, + + /* 30 */ {"XCHD A,@R0",1,0}, + /* 31 */ {"XCHD A,@R1",1,0}, + /* 32 */ {"JB1",2,3}, + /* 33 */ {"ILL",1,0}, + + /* 34 */ {"CALL",2,2}, + /* 35 */ {"DIS TCNTI",1,0}, + /* 36 */ {"JT0",2,3}, + /* 37 */ {"CPL A",1,0}, + + /* 38 */ {"ILL",1,0}, + /* 39 */ {"OUTL P1,A",1,0}, + /* 3A */ {"OUTL P2,A",1,0}, + /* 3B */ {"ILL",1,0}, + + /* 3C */ {"MOVD P4,A",1,0}, + /* 3D */ {"MOVD P5,A",1,0}, + /* 3E */ {"MOVD P6,A",1,0}, + /* 3F */ {"MOVD P7,A",1,0}, + + /* 40 */ {"ORL A,@R0",1,0}, + /* 41 */ {"ORL A,@R1",1,0}, + /* 42 */ {"MOV A,T",1,0}, + /* 43 */ {"ORL A,",2,1}, + + /* 44 */ {"JMP",2,2}, + /* 45 */ {"STRT CNT",1,0}, + /* 46 */ {"JNT1",2,3}, + /* 47 */ {"SWAP",1,0}, + + /* 48 */ {"ORL A,R0",1,0}, + /* 49 */ {"ORL A,R1",1,0}, + /* 4A */ {"ORL A,R2",1,0}, + /* 4B */ {"ORL A,R3",1,0}, + + /* 4C */ {"ORL A,R4",1,0}, + /* 4D */ {"ORL A,R5",1,0}, + /* 4E */ {"ORL A,R6",1,0}, + /* 4F */ {"ORL A,R7",1,0}, + + /* 50 */ {"ANL A,@R0",1,0}, + /* 51 */ {"ANL A,@R1",1,0}, + /* 52 */ {"JB2",2,3}, + /* 53 */ {"ANL A,",2,1}, + + /* 54 */ {"CALL",2,2}, + /* 55 */ {"STRT T",1,0}, + /* 56 */ {"JT1",2,3}, + /* 57 */ {"ILL",1,0}, + + /* 58 */ {"ANL A,R0",1,0}, + /* 59 */ {"ANL A,R1",1,0}, + /* 5A */ {"ANL A,R2",1,0}, + /* 5B */ {"ANL A,R3",1,0}, + + /* 5C */ {"ANL A,R4",1,0}, + /* 5D */ {"ANL A,R5",1,0}, + /* 5E */ {"ANL A,R6",1,0}, + /* 5F */ {"ANL A,R7",1,0}, + + /* 60 */ {"ADD A,@R0",1,0}, + /* 61 */ {"ADD A,@R1",1,0}, + /* 62 */ {"MOV T,A",1,0}, + /* 63 */ {"ILL",1,0}, + + /* 64 */ {"JMP",2,2}, + /* 65 */ {"STOP TCNT",1,0}, + /* 66 */ {"ILL",1,0}, + /* 67 */ {"RRC A",1,0}, + + /* 68 */ {"ADD A,R0",1,0}, + /* 69 */ {"ADD A,R1",1,0}, + /* 6A */ {"ADD A,R2",1,0}, + /* 6B */ {"ADD A,R3",1,0}, + + /* 6C */ {"ADD A,R4",1,0}, + /* 6D */ {"ADD A,R5",1,0}, + /* 6E */ {"ADD A,R6",1,0}, + /* 6F */ {"ADD A,R7",1,0}, + + /* 70 */ {"ADDC A,@R0",1,0}, + /* 71 */ {"ADDC A,@R1",1,0}, + /* 72 */ {"JB3",2,3}, + /* 73 */ {"ILL",1,0}, + + /* 74 */ {"CALL",2,2}, + /* 75 */ {"ENT0 CLK",1,0}, + /* 76 */ {"JF1",2,3}, + /* 77 */ {"RR A",1,0}, + + /* 78 */ {"ADDC A,R0",1,0}, + /* 79 */ {"ADDC A,R1",1,0}, + /* 7A */ {"ADDC A,R2",1,0}, + /* 7B */ {"ADDC A,R3",1,0}, + + /* 7C */ {"ADDC A,R4",1,0}, + /* 7D */ {"ADDC A,R5",1,0}, + /* 7E */ {"ADDC A,R6",1,0}, + /* 7F */ {"ADDC A,R7",1,0}, + + /* 80 */ {"MOVX A,@R0",1,0}, + /* 81 */ {"MOVX A,@R1",1,0}, + /* 82 */ {"ILL",1,0}, + /* 83 */ {"RET",1,0}, + + /* 84 */ {"JMP",2,2}, + /* 85 */ {"CLR F0",1,0}, + /* 86 */ {"JNI",2,3}, + /* 87 */ {"ILL",1,0}, + + /* 88 */ {"ORL BUS,",2,1}, + /* 89 */ {"ORL P1,",2,1}, + /* 8A */ {"ORL P2,",2,1}, + /* 8B */ {"ILL",1,0}, + + /* 8C */ {"ORLD P4,A",1,0}, + /* 8D */ {"ORLD P5,A",1,0}, + /* 8E */ {"ORLD P6,A",1,0}, + /* 8F */ {"ORLD P7,A",1,0}, + + /* 90 */ {"MOVX @R0,A",1,0}, + /* 91 */ {"MOVX @R1,A",1,0}, + /* 92 */ {"JB4",2,3}, + /* 93 */ {"RETR",1,0}, + + /* 94 */ {"CALL",2,2}, + /* 95 */ {"CPL F0",1,0}, + /* 96 */ {"JNZ",2,3}, + /* 97 */ {"CLR C",1,0}, + + /* 98 */ {"ANL BUS,",2,1}, + /* 99 */ {"ANL P1,",2,1}, + /* 9A */ {"ANL P2,",2,1}, + /* 9B */ {"ILL",1,0}, + + /* 9C */ {"ANLD P4,A",1,0}, + /* 9D */ {"ANLD P5,A",1,0}, + /* 9E */ {"ANLD P6,A",1,0}, + /* 9F */ {"ANLD P7,A",1,0}, + + /* A0 */ {"MOV @R0,A",1,0}, + /* A1 */ {"MOV @R1,A",1,0}, + /* A2 */ {"ILL",1,0}, + /* A3 */ {"MOVP A,@A",1,0}, + + /* A4 */ {"JMP",2,2}, + /* A5 */ {"CLR F1",1,0}, + /* A6 */ {"ILL",1,0}, + /* A7 */ {"CPL C",1,0}, + + /* A8 */ {"MOV R0,A",1,0}, + /* A9 */ {"MOV R1,A",1,0}, + /* AA */ {"MOV R2,A",1,0}, + /* AB */ {"MOV R3,A",1,0}, + /* AC */ {"MOV R4,A",1,0}, + /* AD */ {"MOV R5,A",1,0}, + /* AE */ {"MOV R6,A",1,0}, + /* AF */ {"MOV R7,A",1,0}, + + /* B0 */ {"MOV @R0,",2,1}, + /* B1 */ {"MOV @R1,",2,1}, + /* B2 */ {"JB5",2,3}, + /* B3 */ {"JMPP @A",1,0}, + + /* B4 */ {"CALL",2,2}, + /* B5 */ {"CPL F1",1,0}, + /* B6 */ {"JF0",2,3}, + /* B7 */ {"ILL",1,0}, + + /* B8 */ {"MOV R0,",2,1}, + /* B9 */ {"MOV R1,",2,1}, + /* BA */ {"MOV R2,",2,1}, + /* BB */ {"MOV R3,",2,1}, + + /* BC */ {"MOV R4,",2,1}, + /* BD */ {"MOV R5,",2,1}, + /* BE */ {"MOV R6,",2,1}, + /* BF */ {"MOV R7,",2,1}, + + /* C0 */ {"ILL",1,0}, + /* C1 */ {"ILL",1,0}, + /* C2 */ {"ILL",1,0}, + /* C3 */ {"ILL",1,0}, + + /* C4 */ {"JMP",2,2}, + /* C5 */ {"SEL RB0",1,0}, + /* C6 */ {"JZ",2,3}, + /* C7 */ {"MOV A,PSW",1,0}, + + /* C8 */ {"DEC R0",1,0}, + /* C9 */ {"DEC R1",1,0}, + /* CA */ {"DEC R2",1,0}, + /* CB */ {"DEC R3",1,0}, + + /* CC */ {"DEC R4",1,0}, + /* CD */ {"DEC R5",1,0}, + /* CE */ {"DEC R6",1,0}, + /* CF */ {"DEC R7",1,0}, + + /* D0 */ {"XRL A,@R0",1,0}, + /* D1 */ {"XRL A,@R1",1,0}, + /* D2 */ {"JB6",2,3}, + /* D3 */ {"XRL A,",2,1}, + + /* D4 */ {"CALL",2,2}, + /* D5 */ {"SEL RB1",1,0}, + /* D6 */ {"ILL",1,0}, + /* D7 */ {"MOV PSW,A",1,0}, + + /* D8 */ {"XRL A,R0",1,0}, + /* D9 */ {"XRL A,R1",1,0}, + /* DA */ {"XRL A,R2",1,0}, + /* DB */ {"XRL A,R3",1,0}, + /* DC */ {"XRL A,R4",1,0}, + /* DD */ {"XRL A,R5",1,0}, + /* DE */ {"XRL A,R6",1,0}, + /* DF */ {"XRL A,R7",1,0}, + + /* E0 */ {"ILL",1,0}, + /* E1 */ {"ILL",1,0}, + /* E2 */ {"ILL",1,0}, + /* E3 */ {"MOVP3 A,@A",1,0}, + + /* E4 */ {"JMP",2,2}, + /* E5 */ {"SEL MB0",1,0}, + /* E6 */ {"JNC",2,3}, + /* E7 */ {"RL A",1,0}, + + /* E8 */ {"DJNZ R0,",2,3}, + /* E9 */ {"DJNZ R1,",2,3}, + /* EA */ {"DJNZ R2,",2,3}, + /* EB */ {"DJNZ R3,",2,3}, + /* EC */ {"DJNZ R4,",2,3}, + /* ED */ {"DJNZ R5,",2,3}, + /* EE */ {"DJNZ R6,",2,3}, + /* EF */ {"DJNZ R7,",2,3}, + + /* F0 */ {"MOV A,@R0",1,0}, + /* F1 */ {"MOV A,@R1",1,0}, + /* F2 */ {"JB7",2,3}, + /* F3 */ {"ILL",1,0}, + + /* F4 */ {"CALL",2,2}, + /* F5 */ {"SEL MB1",1,0}, + /* F6 */ {"JC",2,3}, + /* F7 */ {"RLC A",1,0}, + + /* F8 */ {"MOV A,R0",1,0}, + /* F9 */ {"MOV A,R1",1,0}, + /* FA */ {"MOV A,R2",1,0}, + /* FB */ {"MOV A,R3",1,0}, + /* FC */ {"MOV A,R4",1,0}, + /* FD */ {"MOV A,R5",1,0}, + /* FE */ {"MOV A,R6",1,0}, + /* FF */ {"MOV A,R7",1,0} + +}; + + diff --git a/MCUME_esp32/espo2em/main/table.h b/MCUME_esp32/espo2em/main/table.h new file mode 100644 index 0000000..2c80c59 --- /dev/null +++ b/MCUME_esp32/espo2em/main/table.h @@ -0,0 +1,10 @@ +#ifndef __TABLE_H +#define __TABLE_H + +extern struct lookup_tag { + signed char *mnemonic; //JMH + unsigned char bytes; + unsigned char type; +} lookup[]; + +#endif diff --git a/MCUME_esp32/espo2em/main/types.h b/MCUME_esp32/espo2em/main/types.h new file mode 100644 index 0000000..885e605 --- /dev/null +++ b/MCUME_esp32/espo2em/main/types.h @@ -0,0 +1,9 @@ +#ifndef TYPES_H +#define TYPES_H + +typedef unsigned char Byte; +typedef unsigned short ADDRESS; +#define INLINE + +#endif /* TYPES_H */ + diff --git a/MCUME_esp32/espo2em/main/vdc.c b/MCUME_esp32/espo2em/main/vdc.c new file mode 100644 index 0000000..043e61e --- /dev/null +++ b/MCUME_esp32/espo2em/main/vdc.c @@ -0,0 +1,468 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * O2 Video Display Controller emulation + */ + + +#include +#include +#include +#include "types.h" +#include "vmachine.h" +#include "config.h" +#include "cset.h" +#include "cpu.h" +#include "vpp.h" +#include "vdc.h" + +#include "emuapi.h" + + +typedef struct +{ + unsigned char r; + unsigned char g; + unsigned char b; +} PALETTE_ENTRY; + + +#define COL_SP0 0x01 +#define COL_SP1 0x02 +#define COL_SP2 0x04 +#define COL_SP3 0x08 +#define COL_VGRID 0x10 +#define COL_HGRID 0x20 +#define COL_VPP 0x40 +#define COL_CHAR 0x80 + +#define X_START 8 +#define Y_START 24 + +static const long colortable[16]={ + 0x000000, + 0x0e3dd4, + 0x00981b, + 0x00bbd9, + 0xc70008, + 0xcc16b3, + 0x9d8710, + 0xe1dee1, + 0x5f6e6b, + 0x6aa1ff, + 0x3df07a, + 0x31ffff, + 0xff4255, + 0xff98ff, + 0xd9ad5d, + 0xffffff +}; + + + + +/* The pointer to the graphics buffer And palette */ + +static PALETTE_ENTRY colors[256]; +static Byte * vscreen=0; //[BMPW*BMPH]; + +/* Collision buffer */ +static Byte * colbuf=0; //[BMPW*BMPH]; + +Byte coltab[256]; + +long clip_low; +long clip_high; + + +static void create_cmap(void); +static void draw_char(Byte ypos,Byte xpos,Byte chr,Byte col); +static void draw_grid(void); +INLINE extern void mputvid(unsigned int ad, unsigned int len, Byte d, Byte c); + + +unsigned char * getGBuf(void) +{ + return(vscreen); +} + +void draw_region(void){ + int i; + + //emu_printi(last_line); + + if (regionoff == 0xffff) + i = master_clk/(LINECNT-1)-5; + else + i = master_clk/22+regionoff; + //i = snapline(i, VDCwrite[0xA0], 0); + + if (i<0) i=0; + +#ifdef HALFHEIGHT + i = i>>1; +#else +#endif + + clip_low = last_line * (long)BMPW; + clip_high = i * (long)BMPW; + if (clip_high > BMPW*BMPH) clip_high = BMPW*BMPH; + if (clip_low < 0) clip_low=0; + if (clip_low < clip_high) draw_display(); + last_line=i; +} + + +#define fastmputvid1(ad,d,c) if ((ad > (unsigned long)clip_low) && (ad < (unsigned long)clip_high)) { vscreen[ad]=d; colbuf[ad] |= c; coltab[c] |= colbuf[ad];} +#define fastmputvid2(ad,d,c) if ((ad > (unsigned long)clip_low) && (ad < (unsigned long)clip_high)) { vscreen[ad]=d; colbuf[ad] |= c; coltab[c] |= colbuf[ad];vscreen[ad+1]=d; colbuf[ad+1] |= c; coltab[c] |= colbuf[ad+1];} +//#define fastmputvid1(ad,d,c) mputvid(ad,1,d,c); +//#define fastmputvid2(ad,d,c) mputvid(ad,2,d,c); + + +INLINE void mputvid(unsigned int ad, unsigned int len, Byte d, Byte c){ + if ((ad > (unsigned long)clip_low) && (ad < (unsigned long)clip_high)) { + unsigned int i; +// JMH + Byte d1; + d1 = d; + if ( ((len & 3)==0) && (sizeof(unsigned long) == 4) && ((ad & 3) == 0) ) + { + unsigned long dddd = (((unsigned long)d1) & 0xff) | ((((unsigned long)d1) & 0xff) << 8) | ((((unsigned long)d1) & 0xff) << 16) | ((((unsigned long)d1) & 0xff) << 24); + unsigned long cccc = (((unsigned long)c) & 0xff) | ((((unsigned long)c) & 0xff) << 8) | ((((unsigned long)c) & 0xff) << 16) | ((((unsigned long)c) & 0xff) << 24); + for (i=0; i>2; i++) { + *((unsigned long*)(vscreen+ad)) = dddd; + cccc |= *((unsigned long*)(colbuf+ad)); + *((unsigned long*)(colbuf+ad)) = cccc; + coltab[c] |= ((cccc | (cccc >> 8) | (cccc >> 16) | (cccc >> 24)) & 0xff); + ad += 4; + } + } else + { + for (i=0; i> 16; //18; + colors[i+32].g = colors[i].g = (colortable[i] & 0x00ff00) >> 8; //10; + colors[i+32].b = colors[i].b = (colortable[i] & 0x0000ff) >> 0; //2; + } + + for (i = 16; i < 32; i++) { + /* Half-bright colors for the 50% scanlines */ + colors[i+32].r = colors[i].r = colors[i-16].r/2; + colors[i+32].g = colors[i].g = colors[i-16].g/2; + colors[i+32].b = colors[i].b = colors[i-16].b/2; + } + + for (i = 64; i < 256; i++) colors[i].r = colors[i].g = colors[i].b = 0; + + for (i=0;i<256;i++) + { + emu_SetPaletteEntry(colors[i].r, colors[i].g, colors[i].b, i); + } + +} + +static void draw_char(Byte ypos,Byte xpos,Byte chr,Byte col){ + int j,c; + Byte cl,d1; + int y,b,n; + unsigned int pnt; + +#ifdef HALFHEIGHT + y = ypos>>1; +#else + y=(ypos & 0xFE); +#endif + pnt = y * BMPW + (xpos-8)+BORDERW; + + ypos = ypos >> 1; + n = 8 - (ypos % 8) - (chr % 8); + if (n < 3) n = n + 7; + +#ifdef HALFHEIGHT + if ((pnt+BMPW*n >= (unsigned long)clip_low) && (pnt <= (unsigned long)clip_high)) { +#else + if ((pnt+BMPW*2*n >= (unsigned long)clip_low) && (pnt <= (unsigned long)clip_high)) { +#endif + + c=(int)chr + ypos; + if (col & 0x01) c+=256; + if (c > 511) c=c-512; + + cl = ((col & 0x0E) >> 1); + cl = ((cl&2) | ((cl&1)<<2) | ((cl&4)>>2)) + 8; + +#ifdef HALFHEIGHT + if ((y>0) && (y<112) && (xpos<157)) { +#else + if ((y>0) && (y<232) && (xpos<157)) { +#endif + for (j=0; j> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); + color = ColorVector[j*24+25]; + fastmputvid2(pn1+BMPW, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#ifdef HALFHEIGHT +#else + color = ColorVector[j*24+26]; + fastmputvid2(pn1+BMPW*2, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#endif + } + } + } + + // horizontal + mask=0x01; + for(j=0; j<9; j++) { +#ifdef HALFHEIGHT + pnt = (((j*12)+12) * BMPW); +#else + pnt = (((j*24)+24) * BMPW); +#endif + for (i=0; i<9; i++) { + pn1 = pnt + (i * 16) + BORDERW; +#ifdef HALFHEIGHT + if ((pn1+BMPW*2 >= (unsigned long)clip_low) && (pn1 <= (unsigned long)clip_high)) { +#else + if ((pn1+BMPW*3 >= (unsigned long)clip_low) && (pn1 <= (unsigned long)clip_high)) { +#endif + d=VDCwrite[0xC0 + i]; + if (j == 8) { + d=VDCwrite[0xD0+i]; + mask=1; + } + if (d & mask) { + color = ColorVector[j*24+24]; + mputvid(pn1, 18, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); + color = ColorVector[j*24+25]; + mputvid(pn1+BMPW, 18, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#ifdef HALFHEIGHT +#else + color = ColorVector[j*24+26]; + mputvid(pn1+BMPW*2, 18, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#endif + } + } + } + mask = mask << 1; + } + + // vertical + mask=0x01; + w=2; + if (VDCwrite[0xA0] & 0x80) w=16; + for(j=0; j<10; j++) { + pnt=(j*16); + mask=0x01; + d=VDCwrite[0xE0+j]; + for (x=0; x<8; x++) { +#ifdef HALFHEIGHT + pn1 = pnt + (((x*12)+12) * BMPW) + BORDERW; +#else + pn1 = pnt + (((x*24)+24) * BMPW) + BORDERW; +#endif + if (d & mask) { +#ifdef HALFHEIGHT + for(i=0; i<12; i++) { +#else + for(i=0; i<24; i++) { +#endif + if ((pn1 >= (unsigned long)clip_low) && (pn1 <= (unsigned long)clip_high)) { + color = ColorVector[x*24+24+i]; + mputvid(pn1, w, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_VGRID); + } + pn1+=BMPW; + } + } + mask = mask << 1; + } + } + +} + + +void finish_display(void){ + vpp_finish_bmp(vscreen, 9, 5, BMPW-9, BMPH-5, BMPW, BMPH); +} + + +void clear_collision(void){ + load_colplus(colbuf); + coltab[0x01]=coltab[0x02]=0; + coltab[0x04]=coltab[0x08]=0; + coltab[0x10]=coltab[0x20]=0; + coltab[0x40]=coltab[0x80]=0; +} + + +void draw_display(void){ + int i,j,x,sm,t; + Byte y,xt,yt,b,d1,cl,c; + unsigned int pnt,pnt2; + +#ifdef HALFHEIGHT + for (i=clip_low/BMPW; i> 3) | (ColorVector[i<<1] & 0x80 ? 0 : 8), BMPW); + } +#else + for (i=clip_low/BMPW; i> 3) | (ColorVector[i] & 0x80 ? 0 : 8), BMPW); + } +#endif + + if (VDCwrite[0xA0] & 0x08) draw_grid(); + + if (useforen && (!(VDCwrite[0xA0] & 0x20))) return; + + for(i=0x10; i<0x40; i+=4) draw_char(VDCwrite[i],VDCwrite[i+1],VDCwrite[i+2],VDCwrite[i+3]); + + pnt=0x40; + for(i=0; i<4; i++) { + x=y=248; + for (j=0; j<4; j++){ + xt = VDCwrite[pnt+j*4+1]; + yt = VDCwrite[pnt+j*4]; + if ((xt<240) && (yt<240)){ + x=xt; + y=yt; + break; + } + } + for(j=0; j<4; j++) { + draw_char(y,x,VDCwrite[pnt+2],VDCwrite[pnt+3]); + x+=16; + pnt+=4; + } + } + + c=8; + for (i=12; i>=0; i -=4) { + pnt2 = 0x80 + (i * 2); +#ifdef HALFHEIGHT + y = VDCwrite[i]>>1; +#else + y = VDCwrite[i]; +#endif + x = VDCwrite[i+1]-8; + t = VDCwrite[i+2]; + cl = ((t & 0x38) >> 3); + cl = ((cl&2) | ((cl&1)<<2) | ((cl&4)>>2)) + 8; +//#ifdef HALFHEIGHT +// if ((x<164) && (y>0) && (y<112)) { +//#else + if ((x<164) && (y>0) && (y<232)) { +//#endif + pnt = y * BMPW + x + BORDERW + sproff; + if ((pnt+BMPW*16 >= (unsigned long)clip_low) && (pnt <= (unsigned long)clip_high)) { + for (j=0; j<8; j++) { + sm = (((j%2==0) && (((t>>1) & 1) != (t & 1))) || ((j%2==1) && (t & 1))) ? 1 : 0; + d1 = VDCwrite[pnt2++]; + for (b=0; b<8; b++) { + if (d1 & 0x01) { +#ifdef HALFHEIGHT + if ((x+b+sm<160) && (y+j<129)) { +#else + if ((x+b+sm<160) && (y+j<249)) { +#endif + fastmputvid1(sm+pnt,cl,c); +#ifdef HALFHEIGHT +#else + fastmputvid1(sm+pnt+BMPW,cl,c); +#endif + } + } + pnt += 1; + d1 = d1 >> 1; + } +#ifdef HALFHEIGHT + pnt += BMPW-8; +#else + pnt += BMPW*2-8; +#endif + } + } + } + c = c >> 1; + } +} + + + + +void close_display(void) +{ +} + +void init_display(void) +{ + if (vscreen==0) vscreen = (Byte *)emu_Malloc(BMPW*BMPH); + if (colbuf == 0) colbuf = (Byte *)emu_Malloc(BMPW*BMPH); + + create_cmap(); + memset(colbuf,0,BMPW*BMPH); +} + diff --git a/MCUME_esp32/espo2em/main/vdc.h b/MCUME_esp32/espo2em/main/vdc.h new file mode 100644 index 0000000..9aae77a --- /dev/null +++ b/MCUME_esp32/espo2em/main/vdc.h @@ -0,0 +1,30 @@ +#ifndef __VDC_H +#define __VDC_H + +#define HALFHEIGHT 1 + +#define BORDERW 8 +#define BMPW (160+BORDERW) // 320 +#ifdef HALFHEIGHT +#define BMPH 120 +#else +#define BMPH 240 +#endif + + +extern Byte coltab[]; +extern long clip_low; +extern long clip_high; + +extern unsigned char * getGBuf(void); + +void init_display(void); +void draw_display(void); +void draw_region(void); +void finish_display(); +void close_display(void); +void clear_collision(void); + +#endif + + diff --git a/MCUME_esp32/espo2em/main/vmachine.c b/MCUME_esp32/espo2em/main/vmachine.c new file mode 100644 index 0000000..cc1242c --- /dev/null +++ b/MCUME_esp32/espo2em/main/vmachine.c @@ -0,0 +1,608 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * Main O2 machine emulation + */ + +#include +#include +#include +#include "audio.h" +#include "types.h" +#include "cpu.h" +#include "config.h" +#include "vdc.h" +//#include "vpp.h" +#include "vmachine.h" + +#include "emuapi.h" + +static Byte x_latch,y_latch; +static Byte line_count; +static int fps=FPS_NTSC; + +//static Byte snapedlines[MAXLINES+2*MAXSNAP][256][2]; //500+2*50 *256*2 600*512 + +int evblclk=EVBLCLK_NTSC; + +struct resource app_data; +int frame=0; +Byte dbstick1,dbstick2; + +int int_clk; /* counter for length of /INT pulses */ +int master_clk; /* Master clock */ +int h_clk; /* horizontal clock */ +unsigned long clk_counter; +int last_line; +int key2vcnt=0; +int mstate; +int ccolflag=0; + +int pendirq=0; +int enahirq=1; +int useforen=0; +long regionoff=0xffff; +int mxsnap=2; +int sproff=0; +int tweakedaudio=0; + +Byte rom1[5120]; +Byte rom2[5120]; +Byte rom3[5120]; +Byte rom4[5120]; + +Byte intRAM[64]; +Byte extRAM[256]; +Byte extROM[1024]; +Byte VDCwrite[256]; +Byte ColorVector[MAXLINES]; +Byte AudioVector[MAXLINES]; +Byte *rom, *orom; + +int key2[128]; + +#define KEY_0 0 +#define KEY_1 1 +#define KEY_2 2 +#define KEY_3 3 +#define KEY_4 4 +#define KEY_5 5 +#define KEY_6 6 +#define KEY_7 7 +#define KEY_8 8 +#define KEY_9 9 +#define KEY_A 10 +#define KEY_B 11 +#define KEY_C 12 +#define KEY_D 13 +#define KEY_E 14 +#define KEY_F 15 +#define KEY_G 16 +#define KEY_H 17 +#define KEY_I 18 +#define KEY_J 19 +#define KEY_K 20 +#define KEY_L 21 +#define KEY_M 22 +#define KEY_N 23 +#define KEY_O 24 +#define KEY_P 25 +#define KEY_Q 26 +#define KEY_R 27 +#define KEY_S 28 +#define KEY_T 29 +#define KEY_U 30 +#define KEY_V 31 +#define KEY_W 32 +#define KEY_X 33 +#define KEY_Y 34 +#define KEY_Z 35 +#define KEY_PLUS 35 +#define KEY_MINUS 36 +#define KEY_SLASH 38 +#define KEY_ASTERISK 39 + +#define KEY_SPACE 40 +#define KEY_EQUALS 41 +#define KEY_DEL 42 +#define KEY_ENTER 43 +#define KEY_STOP 44 +#define KEY_SLASH_PAD 45 +#define KEY_PLUS_PAD 46 + +static unsigned int key_map[6][8]= { + {KEY_0,KEY_1,KEY_2,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7}, + {KEY_8,KEY_9,0,0,KEY_SPACE,KEY_SLASH,KEY_L,KEY_P}, + {KEY_PLUS_PAD,KEY_W,KEY_E,KEY_R,KEY_T,KEY_U,KEY_I,KEY_O}, + {KEY_Q,KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K}, + {KEY_A,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_M,KEY_STOP}, + {KEY_MINUS,KEY_ASTERISK,KEY_SLASH_PAD,KEY_EQUALS,KEY_Y,KEY_N,KEY_DEL,KEY_ENTER} +}; + + +static void do_kluges(void); +static void setvideomode(int t); + +void run(void){ + cpu_exec(); +} + + +void handle_vbl(void){ + update_audio(); +// update_voice(); +// } + if (!ccolflag) { + clear_collision(); + ccolflag=1; + } + draw_region(); + ext_IRQ(); + mstate = 1; +} + + +void handle_evbl(void){ + static long last=0; + static int rest_cnt=0; + int i; + + i = (15*app_data.speed/100); + rest_cnt = (rest_cnt+1)%(i<5?5:i); + last_line=0; + master_clk -= evblclk; + frame++; + ccolflag=0; + if (!app_data.debug) { + finish_display(); + } + + for (i=0; i 10) { + key2vcnt=0; + for (i=0; i<128; i++) key2[i] = 0; + dbstick1 = dbstick2 = 0; + } + mstate=0; +} + + +void init_system(void){ + int i,j,k; + + last_line=0; + dbstick1=0x00; + dbstick2=0x00; + mstate=0; + master_clk=0; + h_clk=0; + line_count=0; + itimer=0; + clk_counter=0; + for(i=0; i<256; i++) { + VDCwrite[i]=0; + extRAM[i]=0; + } + for(i=0; i<64; i++) { + intRAM[i]=0; + } + for (i=0; i 16) || (master_clk > VBLCLK)) + return 1; + else + return 0; +} + + +void write_p1(Byte d){ + if ((d & 0x80) != (p1 & 0x80)) { + int i,l; + //l = snapline((int)((float)master_clk/22.0+0.5), VDCwrite[0xA3], 1); + for (i=l; i VBLCLK) d = d | 0x08; + if (h_clk < (LINECNT-7)) d = d | 0x01; + if (sound_IRQ) d = d | 0x04; + sound_IRQ=0; + return d; + case 0xA2: + si = VDCwrite[0xA2]; + m=0x01; + d=0; + for(i=0; i<8; i++) { + if (si & m) { + if (coltab[1] & m) d = d | (coltab[1] & (m ^ 0xFF)); + if (coltab[2] & m) d = d | (coltab[2] & (m ^ 0xFF)); + if (coltab[4] & m) d = d | (coltab[4] & (m ^ 0xFF)); + if (coltab[8] & m) d = d | (coltab[8] & (m ^ 0xFF)); + if (coltab[0x10] & m) d = d | (coltab[0x10] & (m ^ 0xFF)); + if (coltab[0x20] & m) d = d | (coltab[0x20] & (m ^ 0xFF)); + if (coltab[0x80] & m) d = d | (coltab[0x80] & (m ^ 0xFF)); + } + m = m << 1; + } + return d; + case 0xA5: + if (!(VDCwrite[0xA0] & 0x02)) { + return x_latch; + } + else { + x_latch = h_clk * 12; + return x_latch; + } + case 0xA4: + if (!(VDCwrite[0xA0] & 0x02)) { + return y_latch; + } + else { + y_latch = master_clk/22; + if (y_latch > 241) y_latch=0xFF; + return y_latch; + } + default: + return VDCwrite[adr]; + } + } else if (!(p1 & 0x10)) { + /* Handle ext RAM Read */ + return extRAM[adr & 0xFF]; + //} else if (!(p1 & 0x20)) { + // /* Read a Videopac+ register */ + // return vpp_read(adr); + } else if (app_data.exrom && (p1 & 0x02)) { + /* Handle read from exrom */ + return extROM[(p2 << 8) | (adr & 0xFF)]; + } + + return 0; +} + + +Byte in_bus(void){ + Byte si=0,d=0,mode=0,jn=0; + int key; + + + if ((p1 & 0x08) && (p1 & 0x10)) { + /* Handle joystick read */ + if (!(p1 & 0x04)) { + si = (p2 & 7); + } + d=0xFF; + /* Get current input */ + key = emu_ReadKeys(); + + app_data.stick[0]=0; + app_data.stick[1]=1; + /* + if ( emu_GetPad() & 0x80 ) + { + app_data.stick[0]=1; + app_data.stick[1]=0; + } + else + { + app_data.stick[0]=0; + app_data.stick[1]=1; + } + + + if (si == 1) { + mode = app_data.stick[0]; + jn = 0; + } else { + mode = app_data.stick[1]; + jn = 1; + } + */ + mode=1; + if (key & 0x8000) jn=1; + else jn=0; + + switch(mode) { + case 1: + if (key & MASK_JOY2_RIGHT) d &= 0xF7; + if (key & MASK_JOY2_LEFT) d &= 0xFD; + if (key & MASK_JOY2_UP) d &= 0xFE; + if (key & MASK_JOY2_DOWN) d &= 0xFB; + if (key & MASK_JOY2_BTN) d &= 0xEF; + break; + + case 2: + /* Get current input */ +// key = emu_GetPad(); +// if (key & JKEY_PLEFT) d &= 0xF7; +// if (key & JKEY_PRIGHT) d &= 0xFD; +// if (key & JKEY_PUP) d &= 0xFE; +// if (key & JKEY_PDOWN) d &= 0xFB; +// if (key & JKEY_PSPACE) d &= 0xEF; + break; + } + if (si == 1) { + if (dbstick1) d = dbstick1; + } else { + if (dbstick2) d = dbstick2; + } + } + return d; +} + + +void ext_write(Byte dat, ADDRESS adr){ + int i; + + if (!(p1 & 0x08)) { + /* Handle VDC Write */ + if (adr == 0xA0){ + if ((VDCwrite[0xA0] & 0x02) && !(dat & 0x02)) { + y_latch = master_clk/22; + x_latch = h_clk * 12; + if (y_latch > 241) y_latch=0xFF; + } + if ((master_clk <= VBLCLK) && (VDCwrite[0xA0] != dat)) { + if (!ccolflag) { + clear_collision(); + ccolflag=1; + } + draw_region(); + } + } else if (adr == 0xA2) { + clear_collision(); + ccolflag=1; + } else if (adr == 0xA3){ + int l; + //l = snapline((int)((float)master_clk/22.0+0.5), dat, 1); + for (i=l; i= 0xE8) && (adr <= 0xEF)) +// set_voice_bank(adr-0xE7); +// else if (((adr >= 0x80) && (adr <= 0xDF)) || ((adr >= 0xF0) && (adr <= 0xFF))) +// trigger_voice(adr); + } + } + //} else if (!(p1 & 0x20)) { + // /* Write to a Videopac+ register */ + // vpp_write(dat,adr); + } +} + + +static void do_kluges(void){ + if (app_data.crc == 0xA7344D1F) pendirq=1; /* Atlantis */ + if (app_data.crc == 0xFB83171E) pendirq=1; /* Blockout*/ + if (app_data.crc == 0x881CEAE4) pendirq=1; /* Wall Street */ + + if (app_data.crc == 0x9E42E766) useforen=1; /* Turtles */ + if (app_data.crc == 0x1C750349) useforen=1; /* Turtles (European version) */ + if (app_data.crc == 0x202F2749) useforen=1; /* Q*bert */ + + if (app_data.crc == 0xFB83171E) enahirq=0; /* Blockout*/ + + if (app_data.crc == 0xFB83171E) regionoff=1; /* Blockout*/ + if (app_data.crc == 0x202F2749) regionoff=1; /* Q*bert */ + if (app_data.crc == 0x5216771A) regionoff=1; /* Popeye */ + if (app_data.crc == 0x0C2E4811) regionoff=12; /* Out of this World! / Helicopter Rescue! */ + if (app_data.crc == 0x67069924) regionoff=11; /* Smithereens! */ + if (app_data.crc == 0x44D1A8A5) regionoff=11; /* Smithereens! (European version) */ + if (app_data.crc == 0xB936BD78) regionoff=12; /* Type & Tell */ + if (app_data.crc == 0xDC30AD3D) regionoff=10; /* Dynasty! */ + if (app_data.crc == 0x7810BAD5) regionoff=10; /* Dynasty! (European) */ + if (app_data.crc == 0xA7344D1F) regionoff=0; /* Atlantis */ + if (app_data.crc == 0xD0BC4EE6) regionoff=12; /* Frogger */ + if (app_data.crc == 0x825976A9) regionoff=0; /* Mousing Cat 8kb */ + if (app_data.crc == 0xF390BFEC) regionoff=0; /* Mousing Cat 4kb */ + if (app_data.crc == 0x3BFEF56B) regionoff=1; /* Four in 1 Row! */ + if (app_data.crc == 0x9BFC3E01) regionoff=10; /* Demon Attack */ + if (app_data.crc == 0x6CEBAB74) regionoff=12; /* P.T. Barnum's Acrobats! (European version) */ + if (app_data.crc == 0xE7B26A56) regionoff=12; /* P.T. Barnum's Acrobats! (European version - Extra keys) */ + + if (app_data.crc == 0xFB83171E) mxsnap=3; /* Blockout*/ + if (app_data.crc == 0xA57E1724) mxsnap=12; /* Catch the Ball / Noughts and Crosses */ + if (app_data.crc == 0xFD179F6D) mxsnap=3; /* Clay Pigeon! */ + if (app_data.crc == 0x9BFC3E01) mxsnap=0; /* Demon Attack */ + if (app_data.crc == 0x9C9DDDF9) mxsnap=3; /* Verkehr */ + if (app_data.crc == 0x95936B07) mxsnap=3; /* Super Cobra */ + if (app_data.crc == 0x881CEAE4) mxsnap=3; /* Wall Street */ + if (app_data.crc == 0x9E42E766) mxsnap=0; /* Turtles */ + if (app_data.crc == 0x1C750349) mxsnap=0; /* Turtles (European version) */ + if (app_data.crc == 0xD0BC4EE6) mxsnap=3; /* Frogger */ + if (app_data.crc == 0x3BFEF56B) mxsnap=6; /* Four in 1 Row! */ + + if (app_data.crc == 0xA7344D1F) setvideomode(1); /* Atlantis */ + if (app_data.crc == 0x39E31BF0) setvideomode(1); /* Jake */ + if (app_data.crc == 0x3351FEDA) setvideomode(1); /* Power Lords */ + if (app_data.crc == 0x40AE062D) setvideomode(1); /* Power Lords (alternate) */ + if (app_data.crc == 0xD158EEBA) setvideomode(1); /* Labirinth */ + if (app_data.crc == 0x26B0FF5B) setvideomode(1); /* Nightmare */ + if (app_data.crc == 0xDF36683F) setvideomode(1); /* Shark Hunter */ + if (app_data.crc == 0xAF307559) setvideomode(1); /* Super Bee 8Kb */ + if (app_data.crc == 0x9585D511) setvideomode(1); /* Super Bee 4Kb */ + if (app_data.crc == 0x58FA6766) setvideomode(1); /* War of the Nerves */ + if (app_data.crc == 0x58FA6766) setvideomode(1); /* War of the Nerves */ + if (app_data.crc == 0x39989464) setvideomode(1); /* Hockey! / Soccer! */ + if (app_data.crc == 0xB47F3E0B) setvideomode(1); /* Kill the Attacking Aliens Demo */ + if (app_data.crc == 0x3BFEF56B) setvideomode(1); /* Four in 1 Row! */ + if (app_data.crc == 0x68560DC7) setvideomode(1); /* Jopac Moto Crash */ + if (app_data.crc == 0x202F2749) setvideomode(0); /* Q*bert */ + if (app_data.crc == 0xFB83171E) setvideomode(0); /* Blockout*/ + if (app_data.crc == 0x9BFC3E01) setvideomode(0); /* Demon Attack */ + if (app_data.crc == 0x239DF97D) setvideomode(0); /* Pachinko! */ + if ((app_data.crc == 0xF390BFEC) || (app_data.crc == 0x825976A9)){ /* Mousing Cat */ + setvideomode(1); + evblclk=7642; + } + if (app_data.crc == 0xD0BC4EE6) { /* Frogger */ + setvideomode(1); + evblclk=7642; + } + if ((app_data.crc == 0x2DCB77F0) || (app_data.crc == 0xF6882734)) { /* Depth Charge / Marksman */ + setvideomode(1); + evblclk=9000; + } + if (app_data.crc == 0x881CEAE4) { /* Wall Street */ + setvideomode(1); + evblclk=6100; + } + + if (app_data.crc == 0xD0BC4EE6) tweakedaudio=1; /* Frogger */ + if (app_data.crc == 0x5216771A) tweakedaudio=1; /* Popeye */ + if (app_data.crc == 0xAFB23F89) tweakedaudio=1; /* Musician */ + + if (app_data.crc == 0xD3B09FEC) sproff=1; /* Volleyball! */ +} + +/* +int snapline(int pos, Byte reg, int t){ + int i; + for (i=0; i (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * Videopac+ G7400 emulation + */ + + +#include +#include +#include +#include "types.h" +#include "vmachine.h" +#include "vdc.h" +#include "vpp_cset.h" +#include "vpp.h" + +#include "emuapi.h" + +typedef struct +{ + int w; + int h; + unsigned char * line; + // unsigned char line[320][250]; +} BITMAP; + +static void clear(BITMAP * bmp) +{ + int i,j; + bmp->line = (unsigned char *)emu_Malloc(BMPW*(BMPH+10)); + + + for(i=0;ih;i++) + for(j=0;jw;j++) + //bmp->line[i][j] = 0; + *bmp->line++ = 0; +} + + +static void vpp_draw_char(int x, int y, Byte ch, Byte c0, Byte c1, Byte ext, Byte dw, Byte dh, Byte ul); +static void vpp_update_screen(void); + + +static Byte LumReg = 0xff, TraReg = 0xff; +static BITMAP svppbmp; +static BITMAP * vppbmp = &svppbmp; +//static Byte *colplus = NULL; +//static Byte colplus[BMPW*BMPH]; +static int vppon = 1; +static int vpp_cx = 0; +static int vpp_cy = 0; +static Byte vpp_data = 0; +static int inc_curs=1; +static int slice=0; +static int vpp_y0=0; +static Byte vpp_r=0; +static Byte dchars[2][960]; +static Byte vpp_mem[40][32][4]; +static int frame_cnt=0; +static int blink_st=0; +static int slicemode=0; +static int need_update=0; + + + + +Byte read_PB(Byte p){ + p &= 0x3; + switch (p) { + case 0: + return LumReg >> 4; + break; + case 1: + return LumReg & 0xf; + break; + case 2: + return TraReg >> 4; + break; + case 3: + return TraReg & 0xf; + break; + } + return 0; +} + + +void write_PB(Byte p, Byte val){ + p &= 0x3; + val &= 0xf; + + switch (p) { + case 0: + LumReg = (val<<4) | (LumReg & 0xf); + break; + case 1: + LumReg = (LumReg & 0xf0) | val; + break; + case 2: + TraReg = (val<<4) | (TraReg & 0xf); + break; + case 3: + TraReg = (TraReg & 0xf0) | val; + break; + } + need_update = 1; +} + + +Byte vpp_read(ADDRESS adr){ + Byte t; + switch (adr){ + case 4: + return vpp_mem[vpp_cx][vpp_cy][1]; + case 5: + if (slicemode) { + Byte ext, chr; + chr = vpp_mem[vpp_cx][vpp_cy][0]; + ext = (vpp_mem[vpp_cx][vpp_cy][1] & 0x80) ? 1 : 0; + if (chr < 0xA0) + t = 0; + else { + t = dchars[ext][(chr-0xA0)*10+slice]; + t = ((t&0x80)>>7) | ((t&0x40)>>5) | ((t&0x20)>>3) | ((t&0x10)>>1) | ((t&0x08)<<1) | ((t&0x04)<<3) | ((t&0x02)<<5) | ((t&0x01)<<7); + } + slice = (slice+1) % 10; + } else { + t = vpp_mem[vpp_cx][vpp_cy][0]; + if (inc_curs) { + vpp_cx++; + if (vpp_cx >= 40) { + vpp_cx = 0; + vpp_cy++; + if (vpp_cy >= 24) vpp_cy = 0; + } + } + } + return t; + case 6: + return 0; + default: + return 0; + } +} + + +void vpp_write(Byte dat, ADDRESS adr){ + switch (adr) { + case 0: + if (!slicemode) vpp_mem[vpp_cx][vpp_cy][1] = dat; + break; + case 1: + if (slicemode) { + Byte ext, chr; + chr = vpp_mem[vpp_cx][vpp_cy][0]; + ext = (vpp_mem[vpp_cx][vpp_cy][1] & 0x80) ? 1 : 0; + if (chr >= 0xA0) dchars[ext][(chr-0xA0)*10+slice] = ((dat&0x80)>>7) | ((dat&0x40)>>5) | ((dat&0x20)>>3) | ((dat&0x10)>>1) | ((dat&0x08)<<1) | ((dat&0x04)<<3) | ((dat&0x02)<<5) | ((dat&0x01)<<7); + slice = (slice+1) % 10; + } else { + vpp_mem[vpp_cx][vpp_cy][0] = dat; + if ((dat>0x7f) && (dat<0xa0) && (!(vpp_mem[vpp_cx][vpp_cy][1] & 0x80))) { + vpp_mem[vpp_cx][vpp_cy][2] = dat; + vpp_mem[vpp_cx][vpp_cy][3] = vpp_mem[vpp_cx][vpp_cy][1]; + } else { + vpp_mem[vpp_cx][vpp_cy][2] = vpp_mem[vpp_cx][vpp_cy][3] = 0; + } + if (inc_curs) { + vpp_cx++; + if (vpp_cx >= 40) { + vpp_cx = 0; + vpp_cy++; + if (vpp_cy >= 24) vpp_cy = 0; + } + } + } + break; + case 2: + vpp_data = dat; + break; + case 3: + switch (dat & 0xe0) { + case 0x00: /* plus_cmd_brow */ + vpp_cy = vpp_data & 0x1f; + vpp_cx = 0; + break; + case 0x20: /* plus_cmd_loady */ + vpp_cy = vpp_data & 0x1f; + break; + case 0x40: /* plus_cmd_loadx */ + vpp_cx = vpp_data % 40; + break; + case 0x60: /* plus_cmd_incc */ + vpp_cx++; + if (vpp_cx >= 40) { + vpp_cx = 0; + vpp_cy++; + if (vpp_cy >= 24) vpp_cy = 0; + } + break; + case 0x80: /* plus_cmd_loadm */ + slicemode = 0; + slice = (vpp_data & 0x1f) % 10; + switch (vpp_data & 0xe0) { + case 0x00: /* plus_loadm_wr */ + inc_curs = 1; + break; + case 0x20: /* plus_loadm_rd */ + inc_curs = 1; + break; + case 0x40: /* plus_loadm_wrni */ + inc_curs = 0; + break; + case 0x60: /* plus_loadm_rdni */ + inc_curs = 0; + break; + case 0x80: /* plus_loadm_wrsl */ + slicemode = 1; + break; + case 0xA0: /* plus_loadm_rdsl */ + slicemode = 1; + break; + default: + break; + } + break; + case 0xA0: /* plus_cmd_loadr */ + vpp_r = vpp_data; + break; + case 0xC0: /* plus_cmd_loady0 */ + vpp_y0 = (vpp_data & 0x1f) % 24; + break; + default: + break; + } + break; + default: + break; + } + + need_update = 1; +} + + +void vpp_finish_bmp(Byte *vmem, int offx, int offy, int w, int h, int totw, int toth){ + int i, x, y, t, c, nc, clrx, clry; + int tcol[16], m[8] = {0x01, 0x10, 0x04, 0x40, 0x02, 0x20, 0x08, 0x80}; + Byte *pnt, *pnt2, *pnt3; + + if (vppon) { + //memset(colplus,0,BMPW*BMPH); + vppon=0; + } + + if (TraReg == 0xff) return; + + vppon=1; + + frame_cnt--; + if (frame_cnt<=0) { + frame_cnt = 100; + blink_st = 1-blink_st; + need_update = 1; + } + + if (need_update) vpp_update_screen(); + + for (i=0; i<8; i++) tcol[i] = tcol[i+8] = !(TraReg & m[i]); + + if (w > totw-offx) w = totw-offx; + if (h > toth-offy) h = toth-offy; + + if (w > vppbmp->w) w = vppbmp->w; + if (h > vppbmp->h) h = vppbmp->h; + + clrx = clry = 0; + for (i=0; (!clrx) && (iline[y]; + pnt2 = (Byte *)&vppbmp->line[y*320]; + + x=0; + while (x < w) { + pnt3 = pnt; + c = *pnt++; + t = x++; + + if ((((x+offx) & 3) == 0) && (sizeof(unsigned long)==4)) { + unsigned long cccc, dddd, *p = (unsigned long*) pnt; + int t2=x, w2=w-4; + cccc = (((unsigned long)c) & 0xff) | ((((unsigned long)c) & 0xff) << 8) | ((((unsigned long)c) & 0xff) << 16) | ((((unsigned long)c) & 0xff) << 24); + dddd = *p++; + while ((x39) || (y>24) || (ext>1)) return; + + d = (dh==2) ? 5 : 0; + + for (yy=0; yy<10; yy++) { + if (ul && (d==9)) + k = 255; + else if (ch >= 0xA0) + k = dchars[ext][(ch-0xA0)*10 + d]; + else if (ch >= 0x80) + k = 255; + else + k = vpp_cset[ext][ch * 10 + d]; + + m = (dw==2) ? 0x08 : 0x80; + + for (xx=0; xx<8; xx++) { + //vppbmp->line[y*10+yy][x*8+xx] = (k & m) ? c1 : c0; + vppbmp->line[(y*10+yy)*320+ x*8+xx] = (k & m) ? c1 : c0; + if ((xx%2) || (dw==0)) m >>= 1; + } + if ((yy%2) || (dh==0)) d++; + } +} + + +static void vpp_update_screen(void){ + int i,x,y,l,chr,attr,ext,c0,c1,dw,dh,hpar,vpar,lvd,lhd,ser_chr,ser_atr,ul,conc,box; + int tlum[8], m[8] = {0x01, 0x10, 0x04, 0x40, 0x02, 0x20, 0x08, 0x80}; + + clear(vppbmp); + + for (i=0; i<8; i++) tlum[i] = (LumReg & m[i]) ? 0 : 8; + + vpar = lvd = 0; + for (y=0; y<25; y++) { + + vpar = (lvd==0) ? 0 : 1-vpar; + + l = (y==0) ? 31 : (y-1+vpp_y0)%24; + c0 = ul = conc = box = 0; + + hpar = lhd = 0; + for (x=0; x<40; x++) { + hpar = (lhd==0) ? 0 : 1-hpar; + + chr = vpp_mem[x][l][0]; + attr = vpp_mem[x][l][1]; + c1 = attr & 0x7; + c1 = ((c1&2) | ((c1&1)<<2) | ((c1&4)>>2)); + ext = (attr & 0x80) ? 1 : 0; + + ser_chr = vpp_mem[x][l][2]; + ser_atr = vpp_mem[x][l][3]; + if (ser_chr) { + c0 = (ser_atr>>4) & 0x7; + c0 = ((c0&2) | ((c0&1)<<2) | ((c0&4)>>2)); + ul = ser_chr & 4; + conc = ser_chr & 1; + box = ser_chr & 2; + } + + if (ext) { + c0 = (attr>>4) & 0x7; + c0 = ((c0&2) | ((c0&1)<<2) | ((c0&4)>>2)); + dw = dh = 0; + } else { + dw = (attr & 0x20) ? (hpar ? 2 : 1) : 0; + dh = (attr & 0x10) ? (vpar ? 2 : 1) : 0; + if (dw) lhd=1; + if (dh) lvd=1; + } + + if ((vpp_r & 0x80) && (!(attr & 8)) && (!blink_st)) c1=c0; + + if (((y == 0) && (vpp_r & 8)) || ((y != 0) && (vpp_r & 1))) { + if ((!conc) || (!(vpp_r & 4))) { + if (box || (!(vpp_r & 2))) { + if ((!ext) && (attr & 0x40)) + vpp_draw_char(x, y, chr, c1|tlum[c1], c0|tlum[c0], ext, dw, dh, ul); + else + vpp_draw_char(x, y, chr, c0|tlum[c0], c1|tlum[c1], ext, dw, dh, ul); + } else { + vpp_draw_char(x, y, 255, (app_data.openb) ? 16 : 0, 0, 0, 0, 0, 0); + } + } + } + } + + } + + if (vpp_r & 0x20) { + for (y = vppbmp->h-1; y >= 10; y--) +// for (x = 0; x < vppbmp->w; x++) vppbmp->line[y][x] = vppbmp->line[(y-10)/2+10][x]; + for (x = 0; x < vppbmp->w; x++) vppbmp->line[y*320+x] = vppbmp->line[((y-10)/2+10)*320 + x]; + } + + need_update=0; +} + + +void load_colplus(Byte *col){ + if (vppon) { + //memcpy(col,colplus,BMPW*BMPH); + } + else + memset(col,0,BMPW*BMPH); +} + +void init_vpp(void){ + int i,j,k; + + vppbmp->w = 320; + vppbmp->h = 250; + +// if ((!vppbmp) || (!colplus)) { +// fprintf(stderr,"Could not allocate memory for Videopac+ screen buffer.\n"); +// exit(EXIT_FAILURE); +// } + + clear(vppbmp); + //memset(colplus,0,BMPW*BMPH); + + LumReg = TraReg = 0xff; + vpp_cx = 0; + vpp_cy = 0; + vpp_y0 = 0; + vpp_r = 0; + inc_curs = 1; + vpp_data = 0; + frame_cnt=0; + blink_st=0; + slice = 0; + slicemode=0; + need_update = 1; + vppon = 1; + + for (i=0; i<2; i++) + for (j=0; j<960; j++) dchars[i][j] = 0; + + for (i=0; i<40; i++) + for (j=0; j<32; j++) + for (k=0; k<4; k++) vpp_mem[i][j][k] = 0; +} + diff --git a/MCUME_esp32/espo2em/main/vpp.h b/MCUME_esp32/espo2em/main/vpp.h new file mode 100644 index 0000000..e3f8df6 --- /dev/null +++ b/MCUME_esp32/espo2em/main/vpp.h @@ -0,0 +1,12 @@ +#ifndef __VPP_H +#define __VPP_H + +Byte read_PB(Byte p); +void write_PB(Byte p, Byte val); +Byte vpp_read(ADDRESS adr); +void vpp_write(Byte dat, ADDRESS adr); +void vpp_finish_bmp(Byte *vmem, int offx, int offy, int w, int h, int totw, int toth); +void init_vpp(void); +void load_colplus(Byte *col); + +#endif diff --git a/MCUME_esp32/espo2em/main/vpp_cset.c b/MCUME_esp32/espo2em/main/vpp_cset.c new file mode 100644 index 0000000..0ae7de8 --- /dev/null +++ b/MCUME_esp32/espo2em/main/vpp_cset.c @@ -0,0 +1,284 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * Videopac+ character table + */ + + +#include "types.h" +#include "vpp_cset.h" + + +const Byte vpp_cset[2][1280] = { + { + /* Alphanumeric */ + 0x00,0x38,0x44,0x40,0x20,0x10,0x00,0x10,0x00,0x00, + 0x00,0x10,0x28,0x00,0x38,0x44,0x7c,0x44,0x00,0x00, + 0x00,0x08,0x10,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x08,0x14,0x10,0x38,0x10,0x24,0x3c,0x00,0x00, + 0x00,0x10,0x38,0x50,0x38,0x14,0x54,0x38,0x10,0x00, + 0x00,0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x10,0x20, + 0x00,0x28,0x28,0x7c,0x28,0x7c,0x28,0x28,0x00,0x00, + 0x00,0x20,0x18,0x00,0x38,0x44,0x7c,0x44,0x00,0x00, + 0x00,0x20,0x18,0x00,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x10,0x08,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x3c,0x50,0x50,0x58,0x50,0x50,0x3c,0x00,0x00, + 0x00,0x08,0x14,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x00,0x10,0x20,0x7f,0x20,0x10,0x00,0x00,0x00, + 0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,0x10, + 0x00,0x00,0x08,0x04,0xfe,0x04,0x08,0x00,0x00,0x00, + 0x10,0x10,0x10,0x10,0x10,0x10,0x54,0x38,0x10,0x00, + 0x00,0x18,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x7c,0x00,0x00, + 0x00,0x08,0x10,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x28,0x00,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x28,0x00,0x30,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x00,0x00,0x38,0x40,0x40,0x40,0x38,0x10,0x20, + 0x00,0x10,0x28,0x00,0x44,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x20,0x10,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x00,0x10,0x00,0x7c,0x00,0x10,0x00,0x00,0x00, + 0x00,0x20,0x10,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x52,0x5e,0x50,0x3e,0x00,0x00, + 0x00,0x10,0x28,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x40,0xc0,0x40,0x44,0x4c,0x14,0x3e,0x04,0x00, + 0x00,0x40,0xc0,0x40,0x4c,0x52,0x04,0x08,0x1e,0x00, + 0x00,0xe0,0x20,0x40,0x24,0xcc,0x14,0x3e,0x04,0x00, + 0x00,0x10,0x28,0x00,0x38,0x44,0x44,0x38,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x00,0x00, + 0x00,0x28,0x28,0x28,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x28,0x00,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x10,0x28,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x60,0x64,0x08,0x10,0x20,0x4c,0x0c,0x00,0x00, + 0x00,0x20,0x50,0x50,0x20,0x54,0x48,0x34,0x00,0x00, + 0x00,0x10,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00,0x00, + 0x00,0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00,0x00, + 0x00,0x10,0x54,0x38,0x10,0x38,0x54,0x10,0x00,0x00, + 0x00,0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x40,0x00, + 0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x01,0x02,0x02,0x04,0x08,0x10,0x20,0x20,0x40,0x80, + 0x00,0x10,0x28,0x44,0x44,0x44,0x28,0x10,0x00,0x00, + 0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x00,0x38,0x44,0x04,0x18,0x20,0x40,0x7c,0x00,0x00, + 0x00,0x7c,0x04,0x08,0x18,0x04,0x44,0x38,0x00,0x00, + 0x00,0x08,0x18,0x28,0x48,0x7c,0x08,0x08,0x00,0x00, + 0x00,0x7c,0x40,0x78,0x04,0x04,0x44,0x38,0x00,0x00, + 0x00,0x18,0x20,0x40,0x78,0x44,0x44,0x38,0x00,0x00, + 0x00,0x7c,0x04,0x08,0x10,0x20,0x20,0x20,0x00,0x00, + 0x00,0x38,0x44,0x44,0x38,0x44,0x44,0x38,0x00,0x00, + 0x00,0x38,0x44,0x44,0x3c,0x04,0x04,0x38,0x00,0x00, + 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x20,0x40,0x00, + 0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x00, + 0x00,0x00,0x00,0x7c,0x00,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00,0x00, + 0x00,0x38,0x44,0x04,0x08,0x10,0x00,0x10,0x00,0x00, + 0x00,0x38,0x44,0x5c,0x54,0x5c,0x40,0x38,0x00,0x00, + 0x00,0x38,0x44,0x44,0x44,0x7c,0x44,0x44,0x00,0x00, + 0x00,0x78,0x44,0x44,0x78,0x44,0x44,0x78,0x00,0x00, + 0x00,0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x00,0x00, + 0x00,0x78,0x44,0x44,0x44,0x44,0x44,0x78,0x00,0x00, + 0x00,0x7c,0x40,0x40,0x70,0x40,0x40,0x7c,0x00,0x00, + 0x00,0x7c,0x40,0x40,0x70,0x40,0x40,0x40,0x00,0x00, + 0x00,0x38,0x44,0x40,0x40,0x4c,0x44,0x3c,0x00,0x00, + 0x00,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x00,0x00, + 0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x1c,0x08,0x08,0x08,0x08,0x48,0x30,0x00,0x00, + 0x00,0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x00,0x00, + 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7c,0x00,0x00, + 0x00,0x44,0x6c,0x54,0x44,0x44,0x44,0x44,0x00,0x00, + 0x00,0x44,0x44,0x64,0x54,0x4c,0x44,0x44,0x00,0x00, + 0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x78,0x44,0x44,0x78,0x40,0x40,0x40,0x00,0x00, + 0x00,0x38,0x44,0x44,0x44,0x54,0x48,0x34,0x00,0x00, + 0x00,0x78,0x44,0x44,0x78,0x50,0x48,0x44,0x00,0x00, + 0x00,0x38,0x44,0x40,0x38,0x04,0x44,0x38,0x00,0x00, + 0x00,0x7c,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x00,0x44,0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x44,0x44,0x44,0x28,0x28,0x10,0x10,0x00,0x00, + 0x00,0x44,0x44,0x44,0x54,0x54,0x54,0x28,0x00,0x00, + 0x00,0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x00,0x00, + 0x00,0x44,0x44,0x28,0x10,0x10,0x10,0x10,0x00,0x00, + 0x00,0x7c,0x04,0x08,0x10,0x20,0x40,0x7c,0x00,0x00, + 0x00,0x1c,0x10,0x10,0x10,0x10,0x10,0x1c,0x00,0x00, + 0x80,0x40,0x40,0x20,0x10,0x08,0x04,0x04,0x02,0x01, + 0x00,0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00,0x00, + 0x00,0x10,0x28,0x00,0x30,0x10,0x10,0x38,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, + 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x40,0x40,0x78,0x44,0x44,0x44,0x78,0x00,0x00, + 0x00,0x00,0x00,0x38,0x40,0x40,0x40,0x38,0x00,0x00, + 0x00,0x04,0x04,0x3c,0x44,0x44,0x44,0x3c,0x00,0x00, + 0x00,0x00,0x00,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x18,0x24,0x20,0x70,0x20,0x20,0x20,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x44,0x44,0x3c,0x04,0x24,0x18, + 0x00,0x40,0x40,0x58,0x64,0x44,0x44,0x44,0x00,0x00, + 0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x08,0x00,0x18,0x08,0x08,0x08,0x08,0x48,0x30, + 0x00,0x20,0x20,0x24,0x28,0x30,0x28,0x24,0x00,0x00, + 0x00,0x30,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x00,0x00,0x68,0x54,0x54,0x54,0x54,0x00,0x00, + 0x00,0x00,0x00,0x58,0x64,0x44,0x44,0x44,0x00,0x00, + 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x00,0x00,0x78,0x44,0x44,0x44,0x78,0x40,0x40, + 0x00,0x00,0x00,0x3c,0x44,0x44,0x44,0x3c,0x04,0x04, + 0x00,0x00,0x00,0x58,0x64,0x40,0x40,0x40,0x00,0x00, + 0x00,0x00,0x00,0x38,0x40,0x38,0x04,0x78,0x00,0x00, + 0x00,0x20,0x20,0x38,0x20,0x20,0x20,0x18,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x28,0x28,0x10,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x54,0x54,0x28,0x00,0x00, + 0x00,0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x4c,0x34,0x04,0x44,0x38, + 0x00,0x00,0x00,0x7c,0x08,0x10,0x20,0x7c,0x00,0x00, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, + { + /* Separated semi-graphic */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + /* Mosaic semi-graphic */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff} +}; + diff --git a/MCUME_esp32/espo2em/main/vpp_cset.h b/MCUME_esp32/espo2em/main/vpp_cset.h new file mode 100644 index 0000000..4505177 --- /dev/null +++ b/MCUME_esp32/espo2em/main/vpp_cset.h @@ -0,0 +1,6 @@ +#ifndef __VPP_CSET_H +#define __VPP_CSET_H + +extern const Byte vpp_cset[2][1280]; + +#endif diff --git a/MCUME_esp32/espo2em/sdkconfig b/MCUME_esp32/espo2em/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/espo2em/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espo2em/sdkconfig.old b/MCUME_esp32/espo2em/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/espo2em/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espsnd/.DS_Store b/MCUME_esp32/espsnd/.DS_Store new file mode 100644 index 0000000..29bd030 Binary files /dev/null and b/MCUME_esp32/espsnd/.DS_Store differ diff --git a/MCUME_esp32/espsnd/Makefile b/MCUME_esp32/espsnd/Makefile new file mode 100644 index 0000000..9583d6c --- /dev/null +++ b/MCUME_esp32/espsnd/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espsnd + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espsnd/components/.DS_Store b/MCUME_esp32/espsnd/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/espsnd/components/.DS_Store differ diff --git a/MCUME_esp32/espsnd/components/Audio/.DS_Store b/MCUME_esp32/espsnd/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espsnd/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espsnd/components/Audio/component.mk b/MCUME_esp32/espsnd/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espsnd/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espsnd/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espsnd/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espsnd/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espsnd/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espsnd/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espsnd/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espsnd/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espsnd/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espsnd/components/Wire/.DS_Store b/MCUME_esp32/espsnd/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espsnd/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espsnd/components/Wire/Wire.cpp b/MCUME_esp32/espsnd/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espsnd/components/Wire/Wire.h b/MCUME_esp32/espsnd/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espsnd/components/Wire/component.mk b/MCUME_esp32/espsnd/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espsnd/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espsnd/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espsnd/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espsnd/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espsnd/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espsnd/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espsnd/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espsnd/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espsnd/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espsnd/flashapp.sh b/MCUME_esp32/espsnd/flashapp.sh new file mode 100755 index 0000000..753873b --- /dev/null +++ b/MCUME_esp32/espsnd/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x080000 ../espsnd/build/espsnd.bin diff --git a/MCUME_esp32/espsnd/main/.DS_Store b/MCUME_esp32/espsnd/main/.DS_Store new file mode 100644 index 0000000..eae714f Binary files /dev/null and b/MCUME_esp32/espsnd/main/.DS_Store differ diff --git a/MCUME_esp32/espsnd/main/AudioPlaySystem.cpp b/MCUME_esp32/espsnd/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..1b0fcc8 --- /dev/null +++ b/MCUME_esp32/espsnd/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espsnd/main/AudioPlaySystem.h b/MCUME_esp32/espsnd/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espsnd/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espsnd/main/LibFC14/Config.h b/MCUME_esp32/espsnd/main/LibFC14/Config.h new file mode 100644 index 0000000..18f2ba8 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/Config.h @@ -0,0 +1,96 @@ +/* src/Config.h. Generated from Config.h.in by configure. */ +/* src/Config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Define if ``nothrow allocator'' is available. */ +#define FC_HAVE_NOTHROW 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_IOSTREAM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define this to make little/big endian machines access little/big endian + values in memory structures or arrays directly, disregarding alignment */ +//#define OPTIMIZE_ENDIAN_ACCESS 1 + +/* Name of package */ +#define PACKAGE "libfc14audiodecoder" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libfc14audiodecoder" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libfc14audiodecoder 1.0.3" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libfc14audiodecoder" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.0.3" + +/* The size of `char', as computed by sizeof. */ +#define SIZEOF_CHAR 1 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long int', as computed by sizeof. */ +#define SIZEOF_LONG_INT 8 + +/* The size of `short int', as computed by sizeof. */ +#define SIZEOF_SHORT_INT 2 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "1.0.3" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +//#define WORDS_BIGENDIAN 1 +/* # undef WORDS_BIGENDIAN */ diff --git a/MCUME_esp32/espsnd/main/LibFC14/Dump.cpp b/MCUME_esp32/espsnd/main/LibFC14/Dump.cpp new file mode 100644 index 0000000..e33e668 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/Dump.cpp @@ -0,0 +1,53 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#include "Dump.h" + +#include +#include +using namespace std; + +void dumpLines(smartPtr& fcBuf, udword startOffset, sdword length, int blockLen) { + int num = 0; + while (length > 0) { + cout << "(0x" << hex << setw(2) << setfill('0') << num << "): "; + num++; + + int b = 0; + for (int i=0; i& fcBuf, udword startOffset, sdword length, int blockLen) { + int num = 0; + while (length > 0) { + cout << "(0x" << hex << setw(2) << setfill('0') << num << "):" << endl; + num++; + + int b = 0; + for (int i=0; i& fcBuf, udword startOffset, sdword length, int blockLen); +void dumpLines(smartPtr& fcBuf, udword startOffset, sdword length, int blockLen); + +#endif // DUMP_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/FC.cpp b/MCUME_esp32/espsnd/main/LibFC14/FC.cpp new file mode 100644 index 0000000..183d913 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/FC.cpp @@ -0,0 +1,1165 @@ +// Future Composer audio decoder -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "FC.h" + +#include +#ifdef FC_HAVE_NOTHROW +#include +#endif + +//#define DEBUG 1 +//#define DEBUG2 1 +//#define DEBUG3 1 +#if defined(DEBUG) || defined(DEBUG2) || defined(DEBUG3) +#include +#include +using namespace std; +#include "Dump.h" +#endif + +FC::FC() { + input = 0; + inputLen = 0; + _admin.initialized = false; + + // Set up some dummy voices to decouple the decoder from the mixer. + for (int v=0; voff(); + } + // (AMIGA) Power-LED on = low-pass filter on. + // May be simulated by external audio post-processing. +} + + +void FC::setMixer(PaulaMixer* mixer) { + // Create needed number of voices and replace the dummies. + mixer->init(channels); + for (int v=0; vgetVoice(v); + _CHdata[v].ch->off(); + killChannel(_CHdata[v]); + } +} + + +bool FC::isOurData(void *data, unsigned long int length) { + if ( length<5 ) { + return false; + } + ubyte *d = static_cast(data); + // Check for "SMOD" ID (Future Composer 1.0 to 1.3). + isSMOD = (d[0]==0x53 && d[1]==0x4D && d[2]==0x4F && d[3]==0x44 && + d[4]==0x00); + // Check for "FC14" ID (Future Composer 1.4). + isFC14 = (d[0]==0x46 && d[1]==0x43 && d[2]==0x31 && d[3]==0x34 && + d[4]==0x00); + // (NOTE) A very few hacked "SMOD" modules exist which contain an ID + // string "FC13". Although this could be supported easily, it should + // NOT. Format detection must be able to rely on the ID field. As no + // version of Future Composer has ever created a "FC13" ID, such hacked + // modules are likely to be incompatible in other parts due to incorrect + // conversion, e.g. effect parameters. It is like creating non-standard + // module files whose only purpose is to confuse accurate music players. + return (isSMOD || isFC14); +} + + +bool FC::init(void *data, udword length, int startStep, int endStep) { + if ( !isOurData(data,length) ) { + formatName = UNKNOWN_FORMAT_NAME; + return false; + } + if (isSMOD) + formatName = SMOD_FORMAT_NAME; + else if (isFC14) + formatName = FC14_FORMAT_NAME; + + udword copyLen = length+sizeof(silenceData); + if (copyLen > inputLen) { + delete[] input; + inputLen = 0; +#ifdef FC_HAVE_NOTHROW + if ( (input = new(std::nothrow) ubyte[copyLen]) == 0 ) { +#else + if ( (input = new ubyte[copyLen]) == 0 ) { +#endif + return false; + } + } + memcpy(input,data,copyLen); + inputLen = copyLen; + + // Set up smart pointers for signed and unsigned input buffer access. + // Ought to be read-only (const), but this implementation appends + // a few values to the end of the buffer (see further below). + fcBufS.setBuffer((sbyte*)input,inputLen); + fcBuf.setBuffer((ubyte*)input,inputLen); + + // (NOTE) This next bit is just for convenience. + // + // It is the only place where the module buffer is written to. + // + // Copy ``silent'' modulation sequence to end of FC module buffer so it + // is in the address space of the FC module and thus allows using the + // same smart pointers as throughout the rest of the code. + _admin.offsets.silence = inputLen-sizeof(silenceData); + for (ubyte i=0; i get speed at first step). + _admin.RScount = 4; + // (NOTE) Some FC implementations instead count from 0 to 4. + + // At +4 is length of track table. + udword trackTabLen = readEndian(fcBuf[4],fcBuf[5],fcBuf[6],fcBuf[7]); +#if defined(DEBUG) + cout << "trackTabLen = " << hex << setw(8) << setfill('0') << trackTabLen << endl; +#endif + + off(); + for (ubyte c=0; cpaula.period = _CHdata[c].period; + _CHdata[c].ch->paula.volume = _CHdata[c].volume; + + if (_CHdata[c].repeatDelay != 0) { + if (--_CHdata[c].repeatDelay == 1) { + _CHdata[c].repeatDelay = 0; + _CHdata[c].ch->paula.start = _CHdata[c].pSampleStart + + _CHdata[c].repeatOffset; + _CHdata[c].ch->paula.length = _CHdata[c].repeatLength; + _CHdata[c].ch->takeNextBuf(); + } + } + } + + // Finally decide which audio channels to start. + // This could be moved into previous loop. + for (ubyte c=0; con(); + } + } +} + +// -------------------------------------------------------------------------- + +void FC::killChannel(CHdata& CHXdata) { + // The interface to a cheap Paula simulator/mixer. + CHXdata.ch->off(); + CHXdata.ch->paula.start = fcBuf.tellBegin()+_admin.offsets.silence+1; + // (NOTE) Some implementations set this to 0x0100. + CHXdata.ch->paula.length = 1; + CHXdata.ch->takeNextBuf(); +} + +void FC::nextNote(CHdata& CHXdata) +{ + // Get offset to (or address of) current pattern position. + udword pattOffs = CHXdata.pattStart+CHXdata.pattPos; + + // Check for pattern end or whether pattern BREAK + // command is set. + if (CHXdata.pattPos==PATTERN_LENGTH + || (isFC14 && fcBuf[pattOffs]==PATTERN_BREAK)) + { + // End pattern. + +#if defined(DEBUG3) + if (fcBuf[pattOffs] == PATTERN_BREAK) + cout << "--- PATTERN BREAK ---" << endl; +#endif + + // (NOTE) In order for pattern break to work correctly, the + // pattern break value 0x49 must be at the same position in + // each of the four patterns which are currently activated + // for the four voices. + // + // Alternatively, one could advance all voices to the next + // track step here in a 4-voice loop to make sure voices + // stay in sync. + + CHXdata.pattPos = 0; + + // Advance one step in track table. + CHXdata.trackPos += TRACKTAB_ENTRY_LENGTH; // 0x000d + udword trackOffs = CHXdata.trackStart+CHXdata.trackPos; + + // (BUG-FIX) Some FC players here apply a normal + // compare-if-equal which is not accurate enough and + // can cause the player to step beyond the song end. + // + // (BUG-FIX) Some FC14 modules have a pattern table length + // which is not a multiple of 13. Hence we check whether + // the currently activated table line would fit. + + if ((trackOffs+12) >= CHXdata.trackEnd) // pattern table end? + { + CHXdata.trackPos = 0; // restart by default + trackOffs = CHXdata.trackStart; + + songEnd = true; + + // (NOTE) Some songs better stop here or reset all + // channels to cut off any pending sounds. + } + + // Step Voice 1 Voice 2 Voice 3 Voice 4 Speed + // SP PT TR ST PT TR ST PT TR ST PT TR ST RS + // + // SP = STEP + // PT = PATTERN + // TR = TRANSPOSE + // ST = SOUND TRANSPOSE + // RS = REPLAY SPEED + + // Decide whether to read new song speed. + if (++_admin.RScount == 5) + { + _admin.RScount = 1; + ubyte newSpeed = fcBuf[trackOffs+12]; // RS (replay speed) + if (newSpeed != 0) // 0 would be underflow + { + _admin.count = _admin.speed = newSpeed; + } + } + + uword pattern = fcBuf[trackOffs++]; // PT + CHXdata.transpose = fcBufS[trackOffs++]; + CHXdata.soundTranspose = fcBufS[trackOffs++]; + + CHXdata.pattStart = _admin.offsets.patterns+(pattern<<6); + // Get new pattern pointer (pattPos is 0 already, see above). + pattOffs = CHXdata.pattStart; + } + +#if defined(DEBUG2) + if (CHXdata.dmaMask==1 + && CHXdata.pattPos==0) + { + cout << endl; + cout << "Step = " << hex << setw(4) << setfill('0') << CHXdata.trackPos/ TRACKTAB_ENTRY_LENGTH; + cout << " | " << hex << setw(5) << setfill('0') << (int)CHXdata.trackStart << ", " << (int)(CHXdata.trackStart+CHXdata.trackPos) << ", " << (int)CHXdata.trackEnd << endl; + udword tmp = CHXdata.trackStart+CHXdata.trackPos; + for (int t = 0; t < 13; ++t) + cout << hex << setw(2) << setfill('0') << (int)fcBuf[tmp++] << ' '; + cout << endl; + cout << endl; + } + + cout << hex << setw(2) << setfill('0') << (int)fcBuf[pattOffs] << ' ' + << setw(2) << (int)fcBuf[pattOffs+1]; + if (CHXdata.dmaMask != 8) + cout << " | "; +#endif + + // Process pattern entry. + + ubyte note = fcBuf[pattOffs++]; + ubyte info1 = fcBuf[pattOffs]; // info byte #1 + + if (note != 0) + { + CHXdata.portaOffs = 0; // reset portamento offset + CHXdata.portaInfo = 0; // stop port., erase old parameter + + // (BUG-FIX) Disallow signed underflow here. + CHXdata.noteValue = note&0x7f; + + // (NOTE) Since first note is 0x01, first period at array + // offset 0 cannot be accessed directly (i.e. without adding + // transpose values from track table or modulation sequence). + + // Disable channel right now. + CHXdata.ch->off(); + // Later enable channel. + _admin.dmaFlags |= CHXdata.dmaMask; + + // Pattern offset stills points to info byte #1. + // Get instrument/volModSeq number from info byte #1 + // and add sound transpose value from track table. + uword sound = (fcBuf[pattOffs]&0x3f)+CHXdata.soundTranspose; + // + // (FC14 BUG-FIX) Better mask here to take care of overflow. + // + sound &= 0x3f; + + // (NOTE) Some FC players here put pattern info byte #1 + // into an unused byte variable at structure offset 9. + + udword seqOffs; // the modulation sequence for this sound + + if (sound > (_admin.usedVolModSeqs-1)) + { + seqOffs = _admin.offsets.silence; + } + else + { + seqOffs = _admin.offsets.volModSeqs+(sound<<6); + } + CHXdata.envelopeSpeed = CHXdata.envelopeCount = fcBuf[seqOffs++]; + // Get sound modulation sequence number. + sound = fcBuf[seqOffs++]; + CHXdata.vibSpeed = fcBuf[seqOffs++]; + CHXdata.vibFlag = 0x40; // vibrato UP at start + CHXdata.vibAmpl = CHXdata.vibCurOffs = fcBuf[seqOffs++]; + CHXdata.vibDelay = fcBuf[seqOffs++]; + CHXdata.volSeq = seqOffs; + CHXdata.volSeqPos = 0; + CHXdata.volSustainTime = 0; + + if (sound > (_admin.usedSndModSeqs-1)) + { + // (NOTE) Silent sound modulation sequence is different + // from silent instrument definition sequence. + seqOffs = _admin.offsets.silence+1; + } + else + { + seqOffs = _admin.offsets.sndModSeqs+(sound<<6); + } + CHXdata.sndSeq = seqOffs; + CHXdata.sndSeqPos = 0; + CHXdata.sndModSustainTime = 0; + } + + // Portamento: bit 7 set = ON, bit 6 set = OFF, bits 5-0 = speed + // New note resets and clears portamento working values. + + if ((info1&0x40) != 0) // portamento OFF? + { + CHXdata.portaInfo = 0; // stop port., erase old parameter + } + + if ((info1&0x80) != 0) // portamento ON? + { + // + // (FC14 BUG-FIX) Kill portamento ON/OFF bits. + // + // Get portamento speed from info byte #2. + // Info byte #2 is info byte #1 in next line of pattern, + // Therefore the +2 offset. + CHXdata.portaInfo = fcBuf[pattOffs+2]&0x3f; + } + + // Advance to next pattern entry. + CHXdata.pattPos += 2; +} + +// -------------------------------------------------------------------------- +// The order of func/proc calls might be confusing, but is necessary +// to simulate JMP instructions in the original player code without +// making use of ``goto''. + +inline void FC::setWave(CHdata& CHXdata, ubyte num) +{ + CHXdata.pSampleStart = _sounds[num].start; + CHXdata.ch->paula.start = _sounds[num].start; + CHXdata.ch->paula.length = _sounds[num].len; + CHXdata.ch->takeNextBuf(); + CHXdata.repeatOffset = _sounds[num].repOffs; + CHXdata.repeatLength = _sounds[num].repLen; + CHXdata.repeatDelay = 3; +} + +inline void FC::readSeqTranspose(CHdata& CHXdata) +{ + CHXdata.seqTranspose = fcBufS[CHXdata.sndSeq+CHXdata.sndSeqPos]; + ++CHXdata.sndSeqPos; +} + +void FC::processModulation(CHdata& CHXdata) +{ + if (CHXdata.sndModSustainTime != 0) + { + --CHXdata.sndModSustainTime; + processPerVol(CHXdata); + return; + } + readModCommand(CHXdata); +} + +void FC::readModCommand(CHdata& CHXdata) +{ + udword seqOffs = CHXdata.sndSeq+CHXdata.sndSeqPos; + + // (NOTE) After each command (except LOOP, END, SUSTAIN, + // and NEWVIB) follows a transpose value. + + if (fcBuf[seqOffs] == SNDMOD_LOOP) + { + CHXdata.sndSeqPos = fcBuf[seqOffs+1]&0x3f; + // Calc new sequence address. + seqOffs = CHXdata.sndSeq+CHXdata.sndSeqPos; + } + + if (fcBuf[seqOffs] == SNDMOD_END) + { + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_SETWAVE) + { + // Disable channel right now. + CHXdata.ch->off(); + // Enable channel later. + _admin.dmaFlags |= CHXdata.dmaMask; + // Restart envelope. + CHXdata.volSeqPos = 0; + CHXdata.envelopeCount = 1; + + setWave(CHXdata,fcBuf[seqOffs+1]); + CHXdata.sndSeqPos += 2; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_CHANGEWAVE) + { + setWave(CHXdata,fcBuf[seqOffs+1]); + CHXdata.sndSeqPos += 2; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_SETPACKWAVE) + { + // Disable channel right now. + CHXdata.ch->off(); + // Enable channel later. + _admin.dmaFlags |= CHXdata.dmaMask; + + uword i = fcBuf[seqOffs+1]; // sample/pack nr. + if (i < 10) // sample or waveform? + { + udword sndOffs = _sounds[i].start - fcBuf.tellBegin(); + // "SSMP"? sample-pack? + if (fcBuf[sndOffs]==0x53 && fcBuf[sndOffs+1]==0x53 && + fcBuf[sndOffs+2]==0x4D && fcBuf[sndOffs+3]==0x50) + { + sndOffs += 4; + // Skip header and 10*2 info blocks of size 16. + udword smpStart = sndOffs+320; + i = fcBuf[seqOffs+2]; // sample nr. + i <<= 4; // *16 (block size) + sndOffs += i; + smpStart += readEndian(fcBuf[sndOffs],fcBuf[sndOffs+1], + fcBuf[sndOffs+2],fcBuf[sndOffs+3]); + CHXdata.pSampleStart = smpStart+fcBuf.tellBegin(); + CHXdata.ch->paula.start = CHXdata.pSampleStart; + CHXdata.ch->paula.length = readEndian(fcBuf[sndOffs+4], + fcBuf[sndOffs+5]); + CHXdata.ch->takeNextBuf(); + + // (FC14 BUG-FIX): Players set period here by accident. + // m68k code move.l 4(a2),4(a3), but 6(a3) is period. + + CHXdata.repeatOffset = readEndian(fcBuf[sndOffs+6], + fcBuf[sndOffs+7]); + CHXdata.repeatLength = readEndian(fcBuf[sndOffs+8], + fcBuf[sndOffs+9]); + if (CHXdata.repeatLength == 1) + { + // Erase first word behind sample to avoid beeping + // one-shot mode upon true emulation of Paula. + fcBuf[smpStart+CHXdata.repeatOffset] = 0; + fcBuf[smpStart+CHXdata.repeatOffset+1] = 0; + } + // Restart envelope. + CHXdata.volSeqPos = 0; + CHXdata.envelopeCount = 1; + // + CHXdata.repeatDelay = 3; + } + } + CHXdata.sndSeqPos += 3; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_NEWSEQ) + { + uword seq = fcBuf[seqOffs+1]; + CHXdata.sndSeq = _admin.offsets.sndModSeqs+(seq<<6); + CHXdata.sndSeqPos = 0; + // Recursive call (ought to be protected via a counter). + readModCommand(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_SUSTAIN) + { + CHXdata.sndModSustainTime = fcBuf[seqOffs+1]; + CHXdata.sndSeqPos += 2; + + // Decrease sustain counter and decide whether to continue + // to envelope modulation. + // Recursive call (ought to be protected via a counter). + processModulation(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_NEWVIB) + { + CHXdata.vibSpeed = fcBuf[seqOffs+1]; + CHXdata.vibAmpl = fcBuf[seqOffs+2]; + CHXdata.sndSeqPos += 3; + + processPerVol(CHXdata); + return; + } + + else if (fcBuf[seqOffs] == SNDMOD_PITCHBEND) + { + CHXdata.pitchBendSpeed = fcBufS[seqOffs+1]; + CHXdata.pitchBendTime = fcBuf[seqOffs+2]; + CHXdata.sndSeqPos += 3; + + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + return; + } + + else // Not a command, but a transpose value. + { + readSeqTranspose(CHXdata); + + processPerVol(CHXdata); + } +} + +// -------------------------------------------------------------------------- +// (NOTE) This part of the code is not protected against a deadlock +// caused by damaged music module data. + +void FC::volSlide(CHdata& CHXdata) +{ + // Following flag divides the volume sliding speed by two. + CHXdata.volSlideDelayFlag ^= 0xff; // = NOT + if (CHXdata.volSlideDelayFlag != 0) + { + --CHXdata.volSlideTime; + CHXdata.volume += CHXdata.volSlideSpeed; + if (CHXdata.volume < 0) + { + CHXdata.volume = CHXdata.volSlideTime = 0; + } + + // (NOTE) Most FC players do not check whether Paula's + // maximum volume level is exceeded. + + if (CHXdata.volume > 64) + { + CHXdata.volume = 64; + CHXdata.volSlideTime = 0; + } + } +} + +void FC::processPerVol(CHdata& CHXdata) +{ + bool repeatVolSeq; // JUMP/GOTO - WHILE conversion + do + { + repeatVolSeq = false; + + // Sustain current volume level? NE => yes, EQ => no. + if (CHXdata.volSustainTime != 0) + { + --CHXdata.volSustainTime; + } + + // Slide volume? NE => yes, EQ => no. + else if (CHXdata.volSlideTime != 0) + { + volSlide(CHXdata); + } + + // Time to set next volume level? NE => no, EQ => yes. + else if (--CHXdata.envelopeCount == 0) + { + CHXdata.envelopeCount = CHXdata.envelopeSpeed; + + bool readNextVal; // JUMP/GOTO - WHILE conversion + do + { + readNextVal = false; + + udword seqOffs = CHXdata.volSeq+CHXdata.volSeqPos; + ubyte command = fcBuf[seqOffs]; + + switch (command) + { + case ENVELOPE_SUSTAIN: + { + CHXdata.volSustainTime = fcBuf[seqOffs+1]; + CHXdata.volSeqPos += 2; + // This shall loop to beginning of proc. + repeatVolSeq = true; + break; + } + case ENVELOPE_SLIDE: + { + CHXdata.volSlideSpeed = fcBuf[seqOffs+1]; + CHXdata.volSlideTime = fcBuf[seqOffs+2]; + CHXdata.volSeqPos += 3; + volSlide(CHXdata); + break; + } + case ENVELOPE_LOOP: + { + // Range check should be done here. + CHXdata.volSeqPos = (fcBuf[seqOffs+1]-5)&0x3f; + // (FC14 BUG) Some FC players here do not read a + // parameter at the new sequence position. They + // leave the pos value in d0, which then passes + // as parameter through all the command comparisons + // (this switch statement) in FC_effa() up to + // FC_effno(). + readNextVal = true; + break; + } + case ENVELOPE_END: + { + break; + } + default: + { + // Read volume value and advance. + CHXdata.volume = fcBuf[seqOffs]; + if (++CHXdata.volSeqPos > 0x3f) { + CHXdata.volSeqPos = 0x3f; + } + // Full range check for volume 0-64. + if (CHXdata.volume > 64) { + CHXdata.volume = 64; + } + else if (CHXdata.volume < 0) { + CHXdata.volume = 0; + } + break; + } + } + } + while (readNextVal); + } + } + while (repeatVolSeq); + + // Now determine note and period value to play. + + sdword tmp0, tmp1; + + tmp0 = CHXdata.seqTranspose; + if (tmp0 >= 0) + { + tmp0 += CHXdata.noteValue; + tmp0 += CHXdata.transpose; + // (NOTE) Permit underflow at this point. Some modules + // need it because--for some unknown reason--they work + // with huge values such as transpose = 0x8c. + } + // else: lock note (i.e. transpose value from sequence is note to play) + +#if defined(DEBUG2) + if ((tmp0&0x7f)>0x53) + { + cout << "X "; +#if defined(DEBUG3) + cout << "=== NOTE > 0x53 ===" << endl; +#endif + } +#endif + + tmp0 &= 0x7f; + tmp1 = tmp0<<1; // *2 (later used to find octave) + tmp0 = periods[tmp0]; + + // Vibrato. + // + // Vibrato offset changes between [0,1,...,2*vibAmpl] + // Offset minus vibAmpl is value to apply. + + if (CHXdata.vibDelay == 0) + { + uword noteTableOffset = tmp1; // tmp1 is note*2; + + sword vibDelta = CHXdata.vibAmpl; + vibDelta <<= 1; // pos/neg amplitude delta + + // vibFlag bit 5: 0 => vibrato down, 1 => vibrato up + // + // (NOTE) In the original player code the vibrato half speed delay + // flag (D6) in bit 0 is toggled but never checked, because the + // vibrato flag byte will never get negative. + + tmp1 = CHXdata.vibCurOffs; + + if ((CHXdata.vibFlag&(1<<5))==0) + { + tmp1 -= CHXdata.vibSpeed; + // Lowest value reached? + if (tmp1 < 0) + { + tmp1 = 0; + CHXdata.vibFlag |= (1<<5); // switch to vibrato up + } + } + else + { + tmp1 += CHXdata.vibSpeed; + // Amplitude reached? + if (tmp1 > vibDelta) + { + tmp1 = vibDelta; + CHXdata.vibFlag &= ~(1<<5); // switch to vibrato down + } + } + + CHXdata.vibCurOffs = tmp1; + + // noteTableOffset is note*2; + + tmp1 -= CHXdata.vibAmpl; + + // Octave 5 at period table byte-offset 96 contains the highest + // period only. 96+160 = 256. This next bit ensures that vibrato + // does not exceed the five octaves in the period table. + // Octave 6 (but lowest!) is FC14 only. + noteTableOffset += 160; // + $a0 + while (noteTableOffset < 256) + { + tmp1 <<= 1; // double vibrato value for each octave + noteTableOffset += 2*12; // advance octave index + }; + tmp0 += tmp1; // apply vibrato to period + + // (NOTE) Questionable code here in the original player sources. + // Although bit 0 of D6 is toggled, the code (see above) that + // checks it is unreachable. + } + else + { + --CHXdata.vibDelay; + + // (NOTE) Questionable code here in existing FC players. Although + // bit 0 of D6 is toggled, the code that checks it is unreachable. + // That bad code has not been converted. + } + + // Portamento. + + // (NOTE) As of FC 1.4 portamento plays at half speed compared to + // old versions. + + // Following flag divides the portamento speed by two + // for FC14 modules. + CHXdata.portDelayFlag ^= 0xff; // = NOT + if (isSMOD || CHXdata.portDelayFlag!=0) + { + sbyte param = CHXdata.portaInfo; + if (param != 0) + { + if (param > 0x1f) // > 0x20 = portamento down + { + param &= 0x1f; + param = (-param); + } + CHXdata.portaOffs -= param; + } + } + + // Pitchbend. + + // Following flag divides the pitch bending speed by two. + CHXdata.pitchBendDelayFlag ^= 0xff; // not + if (CHXdata.pitchBendDelayFlag != 0) + { + if (CHXdata.pitchBendTime != 0) + { + --CHXdata.pitchBendTime; + sbyte speed = CHXdata.pitchBendSpeed; + if (speed != 0) + { + CHXdata.portaOffs -= speed; + } + } + } + + tmp0 += CHXdata.portaOffs; + if (tmp0 <= 0x0070) + { + tmp0 = 0x0071; + } + // (NOTE) This should be 0x1ac0, but the extra low octave has + // been added in FC 1.4 and is a non-working hack due to this + // range-check (see header file). + if (tmp0 > 0x0d60) + { + tmp0 = 0x0d60; + } + CHXdata.period = tmp0; +} diff --git a/MCUME_esp32/espsnd/main/LibFC14/FC.h b/MCUME_esp32/espsnd/main/LibFC14/FC.h new file mode 100644 index 0000000..8b8af7c --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/FC.h @@ -0,0 +1,188 @@ +// Future Composer audio decoder -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#ifndef FC_H +#define FC_H + +#include + +#include "MyTypes.h" +#include "MyEndian.h" +#include "SmartPtr.h" +#include "Paula.h" + +class FC : public PaulaPlayer { + public: + FC(); + ~FC(); + + void setMixer(PaulaMixer*); + bool isOurData(void*,unsigned long int); + bool init(void*,udword,int=0,int=0); + void run(); + void restart(int=0,int=0); + void off(); + bool songEnd; // whether song end has been reached + + bool isSMOD; // whether file is in Future Composer 1.0 - 1.3 format + bool isFC14; // whether file is in Future Composer 1.4 format + + std::string formatName; + static const std::string SMOD_FORMAT_NAME; + static const std::string FC14_FORMAT_NAME; + static const std::string UNKNOWN_FORMAT_NAME; + + static const uword SMOD_SONGTAB_OFFSET = 0x0064; // 100 + + static const uword FC14_SMPHEADERS_OFFSET = 0x0028; // 40 + static const uword FC14_WAVEHEADERS_OFFSET = 0x0064; // 100 + static const uword FC14_SONGTAB_OFFSET = 0x00b4; // 180 + + static const uword TRACKTAB_ENTRY_LENGTH = 0x000d; // 3*4+1 + static const uword PATTERN_LENGTH = 0x0040; // 32*2 + static const ubyte PATTERN_BREAK = 0x49; + + static const ubyte SEQ_END = 0xE1; + + static const ubyte SNDMOD_LOOP = 0xE0; + static const ubyte SNDMOD_END = SEQ_END; + static const ubyte SNDMOD_SETWAVE = 0xE2; + static const ubyte SNDMOD_CHANGEWAVE = 0xE4; + static const ubyte SNDMOD_NEWVIB = 0xE3; + static const ubyte SNDMOD_SUSTAIN = 0xE8; + static const ubyte SNDMOD_NEWSEQ = 0xE7; + static const ubyte SNDMOD_SETPACKWAVE = 0xE9; + static const ubyte SNDMOD_PITCHBEND = 0xEA; + + static const ubyte ENVELOPE_LOOP = 0xE0; + static const ubyte ENVELOPE_END = SEQ_END; + static const ubyte ENVELOPE_SUSTAIN = 0xE8; + static const ubyte ENVELOPE_SLIDE = 0xEA; + + static const int channels = 4; + + private: + PaulaVoice _dummyVoices[channels]; + + ubyte *input; + udword inputLen; + + smartPtr fcBuf; // for safe unsigned access + smartPtr fcBufS; // for safe signed access + + // This array will be moved behind the input file. So don't forget + // to allocate additional sizeof(..) bytes. + static const ubyte silenceData[8]; + + // Index is AND 0x7f. Table is longer. + static const uword periods[(5+6)*12+4]; + + static const uword SMOD_waveInfo[47*4]; + static const ubyte SMOD_waveforms[]; + + struct Admin { + uword dmaFlags; // which audio channels to turn on (AMIGA related) + ubyte count; // speed count + ubyte speed; // speed + ubyte RScount; + bool initialized; // true => restartable + bool isEnabled; // player on => true, else false + + struct _moduleOffsets { + udword trackTable; + udword patterns; + udword sndModSeqs; + udword volModSeqs; + udword silence; + } offsets; + + int usedPatterns; + int usedSndModSeqs; + int usedVolModSeqs; + } _admin; + + struct Sound { + const ubyte* start; + uword len, repOffs, repLen; + // rest was place-holder (6 bytes) + }; + // 10 samples/sample-packs + // 80 waveforms + Sound _sounds[10+80]; + + struct CHdata + { + PaulaVoice *ch; // paula and mixer interface + + uword dmaMask; + + udword trackStart; // track/step pattern table + udword trackEnd; + uword trackPos; + + udword pattStart; + uword pattPos; + + sbyte transpose; // TR + sbyte soundTranspose; // ST + sbyte seqTranspose; // from sndModSeq + + ubyte noteValue; + + sbyte pitchBendSpeed; + ubyte pitchBendTime, pitchBendDelayFlag; + + ubyte portaInfo, portDelayFlag; + sword portaOffs; + + udword volSeq; + uword volSeqPos; + + ubyte volSlideSpeed, volSlideTime, volSustainTime, + volSlideDelayFlag; + + ubyte envelopeSpeed, envelopeCount; + + udword sndSeq; + uword sndSeqPos; + + ubyte sndModSustainTime; + + ubyte vibFlag, vibDelay, vibSpeed, + vibAmpl, vibCurOffs; + + sbyte volume; + uword period; + + const ubyte* pSampleStart; + uword repeatOffset; + uword repeatLength; + uword repeatDelay; + }; + + struct CHdata _CHdata[channels]; + + void killChannel(CHdata&); + void nextNote(CHdata&); + void processModulation(CHdata&); + void readModCommand(CHdata&); + void processPerVol(CHdata&); + inline void setWave(CHdata&, ubyte num); + inline void readSeqTranspose(CHdata&); + void volSlide(CHdata&); +}; + +#endif // FC_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/FC_Data.cpp b/MCUME_esp32/espsnd/main/LibFC14/FC_Data.cpp new file mode 100644 index 0000000..384f991 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/FC_Data.cpp @@ -0,0 +1,215 @@ +// Future Composer audio decoder -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "FC.h" + +const std::string FC::SMOD_FORMAT_NAME = "Future Composer 1.0 - 1.3 (AMIGA)"; +const std::string FC::FC14_FORMAT_NAME = "Future Composer 1.4 (AMIGA)"; +const std::string FC::UNKNOWN_FORMAT_NAME = "unknown format"; + +const ubyte FC::silenceData[8] = { + // Used as ``silent'' volume and modulation sequence. + // seqSpeed, sndSeq, vibSpeed, vibAmp, vibDelay, initial Volume, ... + // + // Silent volume sequence starts here. + 0x01, + // Silent modulation sequence starts here. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, SEQ_END +}; + +const uword FC::periods[(5+6)*12+4] = { + 0x06b0, 0x0650, 0x05f4, 0x05a0, 0x054c, 0x0500, 0x04b8, 0x0474, + 0x0434, 0x03f8, 0x03c0, 0x038a, + // +0x0c (*2 = byte-offset) + 0x0358, 0x0328, 0x02fa, 0x02d0, 0x02a6, 0x0280, 0x025c, 0x023a, + 0x021a, 0x01fc, 0x01e0, 0x01c5, + // +0x18 (*2 = byte-offset) + 0x01ac, 0x0194, 0x017d, 0x0168, 0x0153, 0x0140, 0x012e, 0x011d, + 0x010d, 0x00fe, 0x00f0, 0x00e2, + // +0x24 (*2 = byte-offset) + 0x00d6, 0x00ca, 0x00be, 0x00b4, 0x00aa, 0x00a0, 0x0097, 0x008f, + 0x0087, 0x007f, 0x0078, 0x0071, + // +0x30 (*2 = byte-offset) + 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, + 0x0071, 0x0071, 0x0071, 0x0071, + // +0x3c (*2 = byte-offset) + 0x0d60, 0x0ca0, 0x0be8, 0x0b40, 0x0a98, 0x0a00, 0x0970, 0x08e8, + 0x0868, 0x07f0, 0x0780, 0x0714, + // +0x48 (*2 = byte-offset) + // + // (NOTE) 0x49 = PATTERN BREAK, so the extra low octave would be + // useless for direct access. Transpose values would be required. + // However, the FC 1.4 player still has hardcoded 0x0d60 as the lowest + // sample period and does a range-check prior to writing a period to + // the AMIGA custom chip. In short: This octave is useless! Plus: + // Since some music modules access the periods at offset 0x54 via + // transpose, the useless octave cause breakage. + // 0x1ac0, 0x1940, 0x17d0, 0x1680, 0x1530, 0x1400, 0x12e0, 0x11d0, + // 0x10d0, 0x0fe0, 0x0f00, 0x0e28, + // + // End of Future Composer 1.0 - 1.3 period table. + 0x06b0, 0x0650, 0x05f4, 0x05a0, 0x054c, 0x0500, 0x04b8, 0x0474, + 0x0434, 0x03f8, 0x03c0, 0x038a, + // +0x54 (*2 = byte-offset) + 0x0358, 0x0328, 0x02fa, 0x02d0, 0x02a6, 0x0280, 0x025c, 0x023a, + 0x021a, 0x01fc, 0x01e0, 0x01c5, + // +0x60 (*2 = byte-offset) + 0x01ac, 0x0194, 0x017d, 0x0168, 0x0153, 0x0140, 0x012e, 0x011d, + 0x010d, 0x00fe, 0x00f0, 0x00e2, + // +0x6c (*2 = byte-offset) + 0x00d6, 0x00ca, 0x00be, 0x00b4, 0x00aa, 0x00a0, 0x0097, 0x008f, + // +0x78 (*2 = byte-offset) + 0x0087, 0x007f, 0x0078, 0x0071 + // +0x80 (*2 = byte-offset), everything from here on is unreachable + // due to 0x7f AND. +}; + +const uword FC::SMOD_waveInfo[47*4] = { + 0x0000, 0x0010, 0x0000, 0x0010, + 0x0020, 0x0010, 0x0000, 0x0010, + 0x0040, 0x0010, 0x0000, 0x0010, + 0x0060, 0x0010, 0x0000, 0x0010, + 0x0080, 0x0010, 0x0000, 0x0010, + 0x00a0, 0x0010, 0x0000, 0x0010, + 0x00c0, 0x0010, 0x0000, 0x0010, + 0x00e0, 0x0010, 0x0000, 0x0010, + 0x0100, 0x0010, 0x0000, 0x0010, + 0x0120, 0x0010, 0x0000, 0x0010, + 0x0140, 0x0010, 0x0000, 0x0010, + 0x0160, 0x0010, 0x0000, 0x0010, + 0x0180, 0x0010, 0x0000, 0x0010, + 0x01a0, 0x0010, 0x0000, 0x0010, + 0x01c0, 0x0010, 0x0000, 0x0010, + 0x01e0, 0x0010, 0x0000, 0x0010, + 0x0200, 0x0010, 0x0000, 0x0010, + 0x0220, 0x0010, 0x0000, 0x0010, + 0x0240, 0x0010, 0x0000, 0x0010, + 0x0260, 0x0010, 0x0000, 0x0010, + 0x0280, 0x0010, 0x0000, 0x0010, + 0x02a0, 0x0010, 0x0000, 0x0010, + 0x02c0, 0x0010, 0x0000, 0x0010, + 0x02e0, 0x0010, 0x0000, 0x0010, + 0x0300, 0x0010, 0x0000, 0x0010, + 0x0320, 0x0010, 0x0000, 0x0010, + 0x0340, 0x0010, 0x0000, 0x0010, + 0x0360, 0x0010, 0x0000, 0x0010, + 0x0380, 0x0010, 0x0000, 0x0010, + 0x03a0, 0x0010, 0x0000, 0x0010, + 0x03c0, 0x0010, 0x0000, 0x0010, + 0x03e0, 0x0010, 0x0000, 0x0010, + 0x0400, 0x0008, 0x0000, 0x0008, + 0x0410, 0x0008, 0x0000, 0x0008, + 0x0420, 0x0008, 0x0000, 0x0008, + 0x0430, 0x0008, 0x0000, 0x0008, + 0x0440, 0x0008, 0x0000, 0x0008, + 0x0450, 0x0008, 0x0000, 0x0008, + 0x0460, 0x0008, 0x0000, 0x0008, + 0x0470, 0x0008, 0x0000, 0x0008, + 0x0480, 0x0010, 0x0000, 0x0010, + 0x04a0, 0x0008, 0x0000, 0x0008, + 0x04b0, 0x0010, 0x0000, 0x0010, + 0x04d0, 0x0010, 0x0000, 0x0010, + 0x04f0, 0x0008, 0x0000, 0x0008, + 0x0500, 0x0008, 0x0000, 0x0008, + 0x0510, 0x0018, 0x0000, 0x0018 +}; + +const ubyte FC::SMOD_waveforms[] = { + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0x3f,0x37,0x2f,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0x37,0x2f,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0x2f,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0x27,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0x1f,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x17,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x0f,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x07,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0xff,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x07,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x0f,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x17,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0x1f,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xa0,0x27,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xa0,0xa8,0x2f,0x37, + 0xc0,0xc0,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0x00,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8, + 0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0x37, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7f, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, + 0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f, + 0x80,0x80,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8, + 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7f, + 0x80,0x80,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70, + 0x45,0x45,0x79,0x7d,0x7a,0x77,0x70,0x66,0x61,0x58,0x53,0x4d,0x2c,0x20,0x18,0x12, + 0x04,0xdb,0xd3,0xcd,0xc6,0xbc,0xb5,0xae,0xa8,0xa3,0x9d,0x99,0x93,0x8e,0x8b,0x8a, + 0x45,0x45,0x79,0x7d,0x7a,0x77,0x70,0x66,0x5b,0x4b,0x43,0x37,0x2c,0x20,0x18,0x12, + 0x04,0xf8,0xe8,0xdb,0xcf,0xc6,0xbe,0xb0,0xa8,0xa4,0x9e,0x9a,0x95,0x94,0x8d,0x83, + 0x00,0x00,0x40,0x60,0x7f,0x60,0x40,0x20,0x00,0xe0,0xc0,0xa0,0x80,0xa0,0xc0,0xe0, + 0x00,0x00,0x40,0x60,0x7f,0x60,0x40,0x20,0x00,0xe0,0xc0,0xa0,0x80,0xa0,0xc0,0xe0, + 0x80,0x80,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8, + 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7f, + 0x80,0x80,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70 +}; diff --git a/MCUME_esp32/espsnd/main/LibFC14/LamePaula.h b/MCUME_esp32/espsnd/main/LibFC14/LamePaula.h new file mode 100644 index 0000000..1fd83ff --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/LamePaula.h @@ -0,0 +1,98 @@ +// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef LAMEPAULA_H +#define LAMEPAULA_H + +#include "Paula.h" + +class LamePaulaMixer; + +class LamePaulaVoice : public PaulaVoice +{ + public: + LamePaulaVoice(); + ~LamePaulaVoice(); + + void on(); + void off(); + void takeNextBuf(); // take parameters from paula.* (or just to repeat.*) + + friend class LamePaulaMixer; + + private: + bool isOn; + bool looping; // whether to loop sample buffer continously (PAULA emu) + + const ubyte* start; + const ubyte* end; + udword length; + + const ubyte* repeatStart; + const ubyte* repeatEnd; + udword repeatLength; + + uword curPeriod; + udword stepSpeed; + udword stepSpeedPnt; + udword stepSpeedAddPnt; +}; + +class LamePaulaMixer : public PaulaMixer +{ + public: + LamePaulaMixer(); + ~LamePaulaMixer(); + void init(udword freq, ubyte bits, ubyte channels, uword zero); + void init(ubyte voices); + PaulaVoice* getVoice(ubyte); + + void fillBuffer(void* buffer, udword bufferLen, PaulaPlayer *player); + + private: + void setReplayingSpeed(); + void setBpm(uword bpm); + void end(); + + void* (LamePaulaMixer::*_fillFunc)(void*, udword); + + void* fill8bitMono(void*, udword); + void* fill8bitStereo(void*, udword); + void* fill16bitMono(void*, udword); + void* fill16bitStereo(void*, udword); + + static const int _maxVoices = 32; + LamePaulaVoice* _voice[_maxVoices]; + int _voices; + + udword _pcmFreq; + ubyte _bitsPerSample; + ubyte _channels; + uword _zero; + + static const udword AMIGA_CLOCK_PAL = 3546895; + static const udword AMIGA_CLOCK_NTSC = 3579546; + const udword AMIGA_CLOCK; + + sbyte mix8[256]; + sword mix16[256]; + + ubyte zero8bit; // ``zero''-sample + uword zero16bit; // either signed or unsigned + + ubyte bufferScale; + + udword samplesAdd; + udword samplesPnt; + uword samples, samplesOrg; + + udword toFill; + + ubyte emptySample; +}; + +#endif // LAMEPAULA_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/LamePaulaMixer.cpp b/MCUME_esp32/espsnd/main/LibFC14/LamePaulaMixer.cpp new file mode 100644 index 0000000..56e700b --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/LamePaulaMixer.cpp @@ -0,0 +1,377 @@ +// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +// History: This once was a simple mixer (it still is ;) that was +// used in a private MOD/TFMX player and was configured at run-time +// to mix up to 32 individual audio channels. In this particular +// version, 16-bit and mono are moved back in. Most of that old code +// has not been touched though because it has done its job well even +// if it looks quite ugly. So, please bear with me, if you find things +// in here that are not used by the FC player. + +#include "LamePaula.h" + +LamePaulaMixer::LamePaulaMixer() + : AMIGA_CLOCK(AMIGA_CLOCK_PAL) +{ + // Start with no voice ptrs. + _voices = 0; + for (ubyte v=0; v<_maxVoices; v++) { + _voice[v] = 0; + } +} + + +LamePaulaMixer::~LamePaulaMixer() { + end(); +} + + +void LamePaulaMixer::end() { + for (ubyte v=0; v<_voices; v++) { + delete _voice[v]; + _voice[v] = 0; + } + _voices = 0; +} + + +PaulaVoice* LamePaulaMixer::getVoice(ubyte n) { + if (n < _maxVoices) { + return _voice[n]; + } + else { + return 0; + } +} + + +void LamePaulaMixer::init(ubyte voices) { + if ((voices <= _maxVoices) && (voices != _voices)) { + end(); + _voices = voices; + for (ubyte v=0; v<_voices; v++) { + _voice[v] = new LamePaulaVoice; + } + } + for (ubyte v=0; v<_voices; v++) { + LamePaulaVoice* pv = _voice[v]; + pv->start = &emptySample; + pv->end = &emptySample+1; + pv->repeatStart = &emptySample; + pv->repeatEnd = &emptySample+1; + pv->length = 1; + pv->curPeriod = 0; + pv->stepSpeed = 0; + pv->stepSpeedPnt = 0; + pv->stepSpeedAddPnt = 0; + pv->off(); + } +} + + +void LamePaulaMixer::init(udword freq, ubyte bits, ubyte channels, uword zero) +{ + _pcmFreq = freq; + _bitsPerSample = bits; + _channels = channels; + _zero = zero; + + setReplayingSpeed(); + + bufferScale = 0; + toFill = 0; + + if (bits == 8) { + zero8bit = zero; + if (channels == 1) { + _fillFunc = &LamePaulaMixer::fill8bitMono; + } + else { // if (channels == 2) + _fillFunc = &LamePaulaMixer::fill8bitStereo; + ++bufferScale; + } + } + else { // if (bits == 16) + zero16bit = zero; + ++bufferScale; + if (channels == 1) { + _fillFunc = &LamePaulaMixer::fill16bitMono; + } + else { // if (channels == 2) + _fillFunc = &LamePaulaMixer::fill16bitStereo; + ++bufferScale; + } + } + + uword ui; + long si; + ubyte voicesPerChannel = _voices/_channels; + + // Input samples: 80,81,82,...,FE,FF,00,01,02,...,7E,7F + // Array: 00/x, 01/x, 02/x,...,7E/x,7F/x,80/x,81/x,82/x,...,FE/x/,FF/x + ui = 0; + si = 0; + while (si++ < 128) { + mix8[ui++] = (sbyte)(si/voicesPerChannel); + } + si = -128; + while (si++ < 0) { + mix8[ui++] = (sbyte)(si/voicesPerChannel); + } + // Input samples: 80,81,82,...,FE,FF,00,01,02,...,7E,7F + // Array: 0/x, 100/x, 200/x, ..., FF00/x + ui = 0; + si = 0; + while (si < 128*256) { + mix16[ui++] = (sword)(si/voicesPerChannel); + si += 256; + } + si = -128*256; + while (si < 0) { + mix16[ui++] = (sword)(si/voicesPerChannel); + si += 256; + } +} + + +void LamePaulaMixer::setReplayingSpeed() { + samples = ( samplesOrg = _pcmFreq / 50 ); + samplesPnt = (( _pcmFreq % 50 ) * 65536 ) / 50; + samplesAdd = 0; +} + + +void LamePaulaMixer::setBpm(uword bpm) { + uword callsPerSecond = (bpm * 2) / 5; + samples = ( samplesOrg = _pcmFreq / callsPerSecond ); + samplesPnt = (( _pcmFreq % callsPerSecond ) * 65536 ) / callsPerSecond; + samplesAdd = 0; +} + + +void LamePaulaMixer::fillBuffer(void* buffer, udword bufferLen, PaulaPlayer *player) { + // Both, 16-bit and stereo samples take more memory. + // Hence fewer samples fit into the buffer. + bufferLen >>= bufferScale; + + while ( bufferLen > 0 ) { + if ( toFill > bufferLen ) { + buffer = (this->*_fillFunc)(buffer, bufferLen); + toFill -= bufferLen; + bufferLen = 0; + } + else if ( toFill > 0 ) { + buffer = (this->*_fillFunc)(buffer, toFill); + bufferLen -= toFill; + toFill = 0; + } + if ( toFill == 0 ) { + player->run(); + + udword temp = ( samplesAdd += samplesPnt ); + samplesAdd = temp & 0xFFFF; + toFill = samples + ( temp > 65535 ); + + for (ubyte v=0; v<_voices; v++) { + LamePaulaVoice *pv = _voice[v]; + if ( pv->paula.period != pv->curPeriod ) { + pv->curPeriod = pv->paula.period; + if (pv->curPeriod != 0) { + pv->stepSpeed = (AMIGA_CLOCK/_pcmFreq) / pv->curPeriod; + pv->stepSpeedPnt = (((AMIGA_CLOCK/_pcmFreq) % pv->curPeriod ) * 65536 ) / pv->curPeriod; + } + else { + pv->stepSpeed = pv->stepSpeedPnt = 0; + } + } + } // for voices + } + } // while bufferLen +} + + +void* LamePaulaMixer::fill8bitMono(void* buffer, udword numberOfSamples) +{ + ubyte* buffer8bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v++) { + buffer8bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer8bit = zero8bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + } + } + buffer8bit++; + } + } + return(buffer8bit); +} + + +void* LamePaulaMixer::fill8bitStereo( void* buffer, udword numberOfSamples ) +{ + ubyte* buffer8bit = (static_cast(buffer))+1; + for (ubyte v=1; v<_voices; v+=2) + { + buffer8bit = (static_cast(buffer))+1; + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 1) { + *buffer8bit = zero8bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + } + } + buffer8bit += 2; + } + } + buffer8bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v+=2) { + buffer8bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer8bit = zero8bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer8bit += ( pv->paula.volume * mix8[*pv->start] ) >> 6; + } + } + } + buffer8bit += 2; + } + } + return(buffer8bit); +} + + +void* LamePaulaMixer::fill16bitMono( void* buffer, udword numberOfSamples ) +{ + sword* buffer16bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v++) { + buffer16bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer16bit = zero16bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + } + } + buffer16bit++; + } + } + return(buffer16bit); +} + + +void* LamePaulaMixer::fill16bitStereo( void *buffer, udword numberOfSamples ) +{ + sword* buffer16bit = (static_cast(buffer))+1; + for (ubyte v=1; v<_voices; v+=2 ) { + buffer16bit = (static_cast(buffer))+1; + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 1) { + *buffer16bit = zero16bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) + { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + } + } + buffer16bit += 2; + } + } + buffer16bit = static_cast(buffer); + for (ubyte v=0; v<_voices; v+=2 ) { + buffer16bit = static_cast(buffer); + LamePaulaVoice *pv = _voice[v]; + for (udword n = numberOfSamples; n>0; n--) { + if (v == 0) { + *buffer16bit = zero16bit; + } + pv->stepSpeedAddPnt += pv->stepSpeedPnt; + pv->start += ( pv->stepSpeed + ( pv->stepSpeedAddPnt > 65535 ) ); + pv->stepSpeedAddPnt &= 65535; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + else { + if ( pv->looping ) { + pv->start = pv->repeatStart; + pv->end = pv->repeatEnd; + if ( pv->start < pv->end ) { + *buffer16bit += ( pv->paula.volume * mix16[*pv->start] ) >> 6; + } + } + } + buffer16bit += 2; + } + } + return(buffer16bit); +} diff --git a/MCUME_esp32/espsnd/main/LibFC14/LamePaulaVoice.cpp b/MCUME_esp32/espsnd/main/LibFC14/LamePaulaVoice.cpp new file mode 100644 index 0000000..0baca4d --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/LamePaulaVoice.cpp @@ -0,0 +1,52 @@ +// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#include "LamePaula.h" + +LamePaulaVoice::LamePaulaVoice() { + looping = true; + off(); +} + + +LamePaulaVoice::~LamePaulaVoice() { + off(); +} + + +void LamePaulaVoice::off() { + isOn = false; + paula.period = 0; + paula.volume = 0; +} + + +void LamePaulaVoice::on() { + takeNextBuf(); + isOn = true; +} + + +void LamePaulaVoice::takeNextBuf() { + if (!isOn) { + // If channel is off, take sample START parameters. + start = paula.start; + length = paula.length; + length <<= 1; + if (length == 0) { // Paula would play $FFFF words (!) + length = 1; + } + end = start+length; + } + repeatStart = paula.start; + repeatLength = paula.length; + repeatLength <<= 1; + if (repeatLength == 0) { // Paula would play $FFFF words (!) + repeatLength = 1; + } + repeatEnd = repeatStart+repeatLength; +} diff --git a/MCUME_esp32/espsnd/main/LibFC14/MyEndian.h b/MCUME_esp32/espsnd/main/LibFC14/MyEndian.h new file mode 100644 index 0000000..b43c679 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/MyEndian.h @@ -0,0 +1,170 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef MYENDIAN_H +#define MYENDIAN_H + +#include "Config.h" +#include "MyTypes.h" + +// This should never be true. +#if defined(LO) || defined(HI) || defined(LOLO) || defined(LOHI) || defined(HILO) || defined(HIHI) + #error Redefinition of these values can cause trouble. +#endif + +// For optional direct memory access. +// First value in memory/array = index 0. +// Second value in memory/array = index 1. + +// For a pair of bytes/words/longwords. +#undef LO +#undef HI + +// For two pairs of bytes/words/longwords. +#undef LOLO +#undef LOHI +#undef HILO +#undef HIHI + +#if defined(WORDS_BIGENDIAN) +// byte-order: HI..3210..LO + #define LO 1 + #define HI 0 + #define LOLO 3 + #define LOHI 2 + #define HILO 1 + #define HIHI 0 +#else +// byte-order: LO..0123..HI + #define LO 0 + #define HI 1 + #define LOLO 0 + #define LOHI 1 + #define HILO 2 + #define HIHI 3 +#endif + +union cpuLword +{ + uword w[2]; // single 16-bit low and high word + udword l; // complete 32-bit longword +}; + +union cpuWord +{ + ubyte b[2]; // single 8-bit low and high byte + uword w; // complete 16-bit word +}; + +union cpuLBword +{ + ubyte b[4]; // single 8-bit bytes + udword l; // complete 32-bit longword +}; + +// Convert high-byte and low-byte to 16-bit word. +// Used to read 16-bit words in little-endian order. +inline uword readEndian(ubyte hi, ubyte lo) +{ + return(( (uword)hi << 8 ) + (uword)lo ); +} + +// Convert high bytes and low bytes of MSW and LSW to 32-bit word. +// Used to read 32-bit words in little-endian order. +inline udword readEndian(ubyte hihi, ubyte hilo, ubyte hi, ubyte lo) +{ + return(( (udword)hihi << 24 ) + ( (udword)hilo << 16 ) + + ( (udword)hi << 8 ) + (udword)lo ); +} + +// Read a little-endian 16-bit word from two bytes in memory. +inline uword readLEword(const ubyte ptr[2]) +{ +#if defined(WORDS_LITTLEENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + return *((uword*)ptr); +#else + return readEndian(ptr[1],ptr[0]); +#endif +} + +// Write a big-endian 16-bit word to two bytes in memory. +inline void writeLEword(ubyte ptr[2], uword someWord) +{ +#if defined(WORDS_LITTLEENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + *((uword*)ptr) = someWord; +#else + ptr[0] = (someWord & 0xFF); + ptr[1] = (someWord >> 8); +#endif +} + + + +// Read a big-endian 16-bit word from two bytes in memory. +inline uword readBEword(const ubyte ptr[2]) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + return *((uword*)ptr); +#else + return ( (((uword)ptr[0])<<8) + ((uword)ptr[1]) ); +#endif +} + +// Read a big-endian 32-bit word from four bytes in memory. +inline udword readBEdword(const ubyte ptr[4]) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + return *((udword*)ptr); +#else + return ( (((udword)ptr[0])<<24) + (((udword)ptr[1])<<16) + + (((udword)ptr[2])<<8) + ((udword)ptr[3]) ); +#endif +} + +// Write a big-endian 16-bit word to two bytes in memory. +inline void writeBEword(ubyte ptr[2], uword someWord) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + *((uword*)ptr) = someWord; +#else + ptr[0] = someWord >> 8; + ptr[1] = someWord & 0xFF; +#endif +} + +// Write a big-endian 32-bit word to four bytes in memory. +inline void writeBEdword(ubyte ptr[4], udword someDword) +{ +#if defined(WORDS_BIGENDIAN) && defined(OPTIMIZE_ENDIAN_ACCESS) + *((udword*)ptr) = someDword; +#else + ptr[0] = someDword >> 24; + ptr[1] = (someDword>>16) & 0xFF; + ptr[2] = (someDword>>8) & 0xFF; + ptr[3] = someDword & 0xFF; +#endif +} + + + +// Convert 16-bit little-endian word to big-endian order or vice versa. +inline uword convertEndianess( uword intelword ) +{ + uword hi = intelword >> 8; + uword lo = intelword & 255; + return(( lo << 8 ) + hi ); +} + +// Convert 32-bit little-endian word to big-endian order or vice versa. +inline udword convertEndianess( udword inteldword ) +{ + udword hihi = inteldword >> 24; + udword hilo = ( inteldword >> 16 ) & 0xFF; + udword hi = ( inteldword >> 8 ) & 0xFF; + udword lo = inteldword & 0xFF; + return(( lo << 24 ) + ( hi << 16 ) + ( hilo << 8 ) + hihi ); +} + +#endif // MYENDIAN_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/MyTypes.h b/MCUME_esp32/espsnd/main/LibFC14/MyTypes.h new file mode 100644 index 0000000..997722a --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/MyTypes.h @@ -0,0 +1,38 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef MYTYPES_H +#define MYTYPES_H + +#include "Config.h" + +// Wanted: 8-bit signed/unsigned. +#if SIZEOF_CHAR > 1 +#error Platform unsupported. +#endif // SIZEOF_CHAR +typedef signed char sbyte; +typedef unsigned char ubyte; + +// Wanted: 16-bit signed/unsigned. +#if SIZEOF_SHORT_INT >= 2 +typedef signed short int sword; +typedef unsigned short int uword; +#else +typedef signed int sword; +typedef unsigned int uword; +#endif // SIZEOF_SHORT_INT + +// Wanted: 32-bit signed/unsigned. +#if SIZEOF_INT >= 4 +typedef signed int sdword; +typedef unsigned int udword; +#elif SIZEOF_LONG_INT >= 4 +typedef signed long int sdword; +typedef unsigned long int udword; +#else +#error Platform not supported. +#endif // SIZEOF_INT + +#endif // MYTYPES_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/Paula.cpp b/MCUME_esp32/espsnd/main/LibFC14/Paula.cpp new file mode 100644 index 0000000..659259a --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/Paula.cpp @@ -0,0 +1,20 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#include "Paula.h" + +void PaulaVoice::off() { + // intentionally left blank +} + + +void PaulaVoice::on() { + // intentionally left blank +} + + +void PaulaVoice::takeNextBuf() { + // intentionally left blank +} diff --git a/MCUME_esp32/espsnd/main/LibFC14/Paula.h b/MCUME_esp32/espsnd/main/LibFC14/Paula.h new file mode 100644 index 0000000..5b09b21 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/Paula.h @@ -0,0 +1,37 @@ +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef PAULA_H +#define PAULA_H + +#include "MyTypes.h" + +class PaulaVoice { + public: + // Paula + struct _paula { + const ubyte* start; // start address + uword length; // length in 16-bit words + uword period; + uword volume; // 0-64 + } paula; + + virtual void on(); + virtual void off(); + virtual void takeNextBuf(); // take parameters from paula.* (or just to repeat.*) +}; + +class PaulaMixer { + public: + virtual void init(ubyte voices) = 0; + virtual PaulaVoice* getVoice(ubyte) = 0; +}; + +class PaulaPlayer { + public: + virtual void run() = 0; +}; + +#endif // PAULA_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/SmartPtr.h b/MCUME_esp32/espsnd/main/LibFC14/SmartPtr.h new file mode 100644 index 0000000..61cf791 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/SmartPtr.h @@ -0,0 +1,180 @@ +// Simple smart pointer class -- Copyright (C) Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. + +#ifndef SMARTPTR_H +#define SMARTPTR_H + +typedef unsigned long int ulong; + +template class smartPtrBase { + public: + smartPtrBase(T* buffer, ulong bufferLen, bool bufOwner = false) : dummy(0) { + doFree = bufOwner; + if ( bufferLen >= 1 ) { + pBufCurrent = ( bufBegin = buffer ); + bufEnd = bufBegin + bufferLen; + bufLen = bufferLen; + status = true; + } + else { + pBufCurrent = ( bufBegin = ( bufEnd = 0 )); + bufLen = 0; + status = false; + } + } + + virtual ~smartPtrBase() { + if ( doFree && (bufBegin != 0) ) { +#if defined(_MSC_VER) + delete[] (void*)bufBegin; +#else + delete[] bufBegin; +#endif + } + } + + virtual T* tellBegin() { return bufBegin; } + virtual ulong tellLength() { return bufLen; } + virtual ulong tellPos() { return (ulong)(pBufCurrent-bufBegin); } + + virtual bool checkIndex(ulong index) { + return ((pBufCurrent+index)= 1 ) { + pBufCurrent = bufBegin; + return (status = true); + } + else { + return (status = false); + } + } + + virtual bool good() { + return (pBufCurrent= bufBegin) { + pBufCurrent -= offset; + } + else { + status = false; + } + } + + T operator*() { + if ( good() ) { + return *pBufCurrent; + } + else { + status = false; + return dummy; + } + } + + T& operator[](ulong index) { + if (checkIndex(index)) { + return pBufCurrent[index]; + } + else { + status = false; + return dummy; + } + } + + virtual operator bool() { return status; } + + protected: + T* bufBegin; + T* bufEnd; + T* pBufCurrent; + ulong bufLen; + bool status; + bool doFree; + T dummy; +}; + + +template class smartPtr : public smartPtrBase { + public: + smartPtr(T* buffer, ulong bufferLen, bool bufOwner = false) + : smartPtrBase(buffer, bufferLen, bufOwner) + { + } + + smartPtr() + : smartPtrBase(0,0) + { + } + + void setBuffer(T* buffer, ulong bufferLen) { + if ( bufferLen >= 1 ) { + this->pBufCurrent = ( this->bufBegin = buffer ); + this->bufEnd = this->bufBegin + bufferLen; + this->bufLen = bufferLen; + this->status = true; + } + else { + this->pBufCurrent = this->bufBegin = this->bufEnd = 0; + this->bufLen = 0; + this->status = false; + } + } +}; + +#endif // SMARTPTR_H diff --git a/MCUME_esp32/espsnd/main/LibFC14/component.mk b/MCUME_esp32/espsnd/main/LibFC14/component.mk new file mode 100644 index 0000000..757a913 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/component.mk @@ -0,0 +1,12 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . +CPPFLAGS += -Wno-error=delete-non-virtual-dtor \ No newline at end of file diff --git a/MCUME_esp32/espsnd/main/LibFC14/fc14audiodecoder.cpp b/MCUME_esp32/espsnd/main/LibFC14/fc14audiodecoder.cpp new file mode 100644 index 0000000..dcc7e3d --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/fc14audiodecoder.cpp @@ -0,0 +1,99 @@ +// C language wrapper library for Future Composer audio decoder +// Copyright (C) 2008 Michael Schwendt +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#include "fc14audiodecoder.h" + +#include "FC.h" +#include "LamePaula.h" + +#define FC14_DECLARE_DECODER \ + fc14dec *p = (fc14dec*)ptr + +struct fc14dec { + FC decoder; + LamePaulaMixer mixer; +}; + +void* fc14dec_new() { + fc14dec *p = new fc14dec; + p->decoder.setMixer(&p->mixer); + return (void*)p; +} + +void fc14dec_delete(void* ptr) { + FC14_DECLARE_DECODER; + delete p; +} + +int fc14dec_detect(void* ptr, void* data, unsigned long int length) { + FC14_DECLARE_DECODER; + return p->decoder.isOurData(data,length); +} + +int fc14dec_init(void* ptr, void* data, unsigned long int length) { + FC14_DECLARE_DECODER; + return p->decoder.init(data,length); +} + +void fc14dec_restart(void* ptr) { + FC14_DECLARE_DECODER; + p->decoder.restart(); +} + +void fc14dec_seek(void* ptr, long int ms) { + FC14_DECLARE_DECODER; + p->decoder.restart(); + while (ms>=0) { + p->decoder.run(); + ms -= 20; + if ( fc14dec_song_end(p) ) { + break; + } + }; +} + +void fc14dec_mixer_init(void* ptr, int freq, int bits, int channels, int zero) { + FC14_DECLARE_DECODER; + p->mixer.init(freq,bits,channels,zero); +} + +void fc14dec_buffer_fill(void* ptr, void* buffer, unsigned long int length) { + FC14_DECLARE_DECODER; + p->mixer.fillBuffer(buffer,length,&p->decoder); +} + +int fc14dec_song_end(void* ptr) { + FC14_DECLARE_DECODER; + return p->decoder.songEnd; +} + +unsigned long int fc14dec_duration(void* ptr) { + FC14_DECLARE_DECODER; + // Determine duration with a dry-run till song-end. + unsigned long int ms = 0; + do { + p->decoder.run(); + ms += 20; + } while ( !fc14dec_song_end(p) ); + p->decoder.restart(); + return ms; +} + +const char* fc14dec_format_name(void* ptr) { + FC14_DECLARE_DECODER; + return p->decoder.formatName.c_str(); +} diff --git a/MCUME_esp32/espsnd/main/LibFC14/fc14audiodecoder.h b/MCUME_esp32/espsnd/main/LibFC14/fc14audiodecoder.h new file mode 100644 index 0000000..33b91a6 --- /dev/null +++ b/MCUME_esp32/espsnd/main/LibFC14/fc14audiodecoder.h @@ -0,0 +1,73 @@ +/* C language wrapper library for Future Composer audio decoder + * Copyright (C) 2008 Michael Schwendt + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef FC14AUDIODECODER_H +#define FC14AUDIODECODER_H + +#ifdef __cplusplus +extern "C" { +#endif + + /* Return ptr to new decoder object. */ + void* fc14dec_new(); + + /* Delete decoder object. */ + void fc14dec_delete(void* decoder); + + /* Apply input format header check to a memory buffer. + Returns: 0 = recognized data, 1 = unknown data */ + int fc14dec_detect(void* decoder, void* buffer, unsigned long int length); + + /* Initialize decoder with input data from a memory buffer. + Input buffer may be freed as buffer contents are copied. + Returns: 0 = success, 1 = failure */ + int fc14dec_init(void* decoder, void* buffer, unsigned long int length); + + /* Restart an already initialized decoder. */ + void fc14dec_restart(void* decoder); + + /* Initialize decoder's audio sample mixer. + frequency : output sample frequency + precision : bits per sample + channels : 1=mono, 2=stereo + zero : value of silent output sample + (e.g. 0x80 for unsigned 8-bit, 0x0000 for signed 16-bit) */ + void fc14dec_mixer_init(void* decoder, int frequency, int precision, + int channels, int zero); + + /* Return 0 if song end has been reached, else 1. */ + int fc14dec_song_end(void* decoder); + + /* Return song duration in milli-seconds [ms]. + Decoder must be initialized and will be restarted afterwards. */ + unsigned long int fc14dec_duration(void* decoder); + + /* Set an initialized decoder's play position in milli-seconds [ms]. */ + void fc14dec_seek(void* decoder, long int ms); + + /* Return C-string describing the detected input data format. + Use only with an initialized decoder. */ + const char* fc14dec_format_name(void* decoder); + + /* Fill output sample buffer with audio. */ + void fc14dec_buffer_fill(void* decoder, void* buffer, unsigned long int length); + +#ifdef __cplusplus +} +#endif + +#endif /* FC14AUDIODECODER_H */ diff --git a/MCUME_esp32/espsnd/main/StSnd/LZH.H b/MCUME_esp32/espsnd/main/StSnd/LZH.H new file mode 100755 index 0000000..64fcee3 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/LZH.H @@ -0,0 +1,144 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + LZH depacking routine + Original LZH code by Haruhiko Okumura (1991) and Kerwin F. Medina (1996) + + I changed to C++ object to remove global vars, so it should be thread safe now. + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + + +#ifndef LZH_H +#define LZH_H + + +#define BUFSIZE (1024 * 4) + +typedef uint8_t uchar; /* 8 bits or more */ +typedef unsigned int uint; /* 16 bits or more */ +typedef uint16_t ushort; /* 16 bits or more */ + +#ifndef CHAR_BIT + #define CHAR_BIT 8 +#endif + +#ifndef UCHAR_MAX + #define UCHAR_MAX 255 +#endif + +typedef ushort BITBUFTYPE; + +#define BITBUFSIZ (CHAR_BIT * sizeof (BITBUFTYPE)) +#define DICBIT 13 /* 12(-lh4-) or 13(-lh5-) */ +#define DICSIZ (1U << DICBIT) +#define MAXMATCH 256 /* formerly F (not more than UCHAR_MAX + 1) */ +#define THRESHOLD 3 /* choose optimal value */ +#define NC (UCHAR_MAX + MAXMATCH + 2 - THRESHOLD) /* alphabet = {0, 1, 2, ..., NC - 1} */ +#define CBIT 9 /* $\lfloor \log_2 NC \rfloor + 1$ */ +#define CODE_BIT 16 /* codeword length */ + +#define MAX_HASH_VAL (3 * DICSIZ + (DICSIZ / 512 + 1) * UCHAR_MAX) + +#define NP (DICBIT + 1) +#define NT (CODE_BIT + 3) +#define PBIT 4 /* smallest integer such that (1U << PBIT) > NP */ +#define TBIT 5 /* smallest integer such that (1U << TBIT) > NT */ +#if NT > NP + #define NPT NT +#else + #define NPT NP +#endif + + +class CLzhDepacker +{ +public: + + bool LzUnpack(void *pSrc,int srcSize,void *pDst,int dstSize); + +private: + + //---------------------------------------------- + // New stuff to handle memory IO + //---------------------------------------------- + uchar * m_pSrc; + int m_srcSize; + uchar * m_pDst; + int m_dstSize; + + int DataIn(void *pBuffer,int nBytes); + int DataOut(void *pOut,int nBytes); + + + + //---------------------------------------------- + // Original Lzhxlib static func + //---------------------------------------------- + void fillbuf (int n); + ushort getbits (int n); + void init_getbits (void); + int make_table (int nchar, uchar *bitlen,int tablebits, ushort *table); + void read_pt_len (int nn, int nbit, int i_special); + void read_c_len (void); + ushort decode_c(void); + ushort decode_p(void); + void huf_decode_start (void); + void decode_start (void); + void decode (uint count, uchar buffer[]); + + + //---------------------------------------------- + // Original Lzhxlib static vars + //---------------------------------------------- + int fillbufsize; + uchar buf[BUFSIZE]; + uchar outbuf[DICSIZ]; + ushort left [2 * NC - 1]; + ushort right[2 * NC - 1]; + BITBUFTYPE bitbuf; + uint subbitbuf; + int bitcount; + int decode_j; /* remaining bytes to copy */ + uchar c_len[NC]; + uchar pt_len[NPT]; + uint blocksize; + ushort c_table[4096]; + ushort pt_table[256]; + int with_error; + + uint fillbuf_i; // NOTE: these ones are not initialized at constructor time but inside the fillbuf and decode func. + uint decode_i; +}; + + +#endif /* ifndef LZH_H */ diff --git a/MCUME_esp32/espsnd/main/StSnd/LzhLib.cpp b/MCUME_esp32/espsnd/main/StSnd/LzhLib.cpp new file mode 100755 index 0000000..b13a7b7 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/LzhLib.cpp @@ -0,0 +1,441 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + LZH depacking routine + Original LZH code by Haruhiko Okumura (1991) and Kerwin F. Medina (1996) + + I changed to C++ object to remove global vars, so it should be thread safe now. + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + +#include +#include "YmTypes.h" +#include "LZH.H" + +/* + * Additions + */ + + + +int CLzhDepacker::DataIn(void *pBuffer,int nBytes) +{ + const int np = (nBytes <= m_srcSize) ? nBytes : m_srcSize; + if (np > 0) + { + memcpy(pBuffer,m_pSrc,np); + m_pSrc += np; + m_srcSize -= np; + } + return np; +} + +int CLzhDepacker::DataOut(void *pBuffer,int nBytes) +{ + const int np = (nBytes <= m_dstSize) ? nBytes : m_dstSize; + if (np > 0) + { + memcpy(m_pDst,pBuffer,np); + m_pDst += np; + m_dstSize -= np; + } + return np; +} + + + +/* + * io.c + */ + + +/** Shift bitbuf n bits left, read n bits */ +void CLzhDepacker::fillbuf (int n) +{ + bitbuf = (bitbuf << n) & 0xffff; + while (n > bitcount) + { + bitbuf |= subbitbuf << (n -= bitcount); + if (fillbufsize == 0) + { + fillbuf_i = 0; + fillbufsize = DataIn(buf, BUFSIZE - 32); + } + if (fillbufsize > 0) + fillbufsize--, subbitbuf = buf[fillbuf_i++]; + else + subbitbuf = 0; + bitcount = CHAR_BIT; + } + bitbuf |= subbitbuf >> (bitcount -= n); +} + +ushort CLzhDepacker::getbits (int n) +{ + ushort x; + x = bitbuf >> (BITBUFSIZ - n); + fillbuf (n); + return x; +} + +void CLzhDepacker::init_getbits (void) +{ + bitbuf = 0; + subbitbuf = 0; + bitcount = 0; + fillbuf (BITBUFSIZ); +} + +/* + * maketbl.c + */ + +int CLzhDepacker::make_table (int nchar, uchar *bitlen, + int tablebits, ushort *table) +{ + ushort count[17], weight[17], start[18], *p; + uint jutbits, avail, mask; + int i,ch,len,nextcode; + + for (i = 1; i <= 16; i++) + count[i] = 0; + for (i = 0; i < nchar; i++) + count[bitlen[i]]++; + + start[1] = 0; + for (i = 1; i <= 16; i++) + start[i + 1] = start[i] + (count[i] << (16 - i)); + if (start[17] != (ushort) (1U << 16)) + return (1); /* error: bad table */ + + jutbits = 16 - tablebits; + for (i = 1; i <= tablebits; i++) + { + start[i] >>= jutbits; + weight[i] = 1U << (tablebits - i); + } + while (i <= 16) + { + weight[i] = 1U << (16 - i); + i++; + } + + i = start[tablebits + 1] >> jutbits; + if (i != (ushort) (1U << 16)) + { + int k = 1U << tablebits; + while (i != k) + table[i++] = 0; + } + + avail = nchar; + mask = 1U << (15 - tablebits); + for (ch = 0; ch < nchar; ch++) + { + if ((len = bitlen[ch]) == 0) + continue; + nextcode = start[len] + weight[len]; + if (len <= tablebits) + { + for (i = start[len]; i < nextcode; i++) + table[i] = ch; + } + else + { + uint k = start[len]; + p = &table[k >> jutbits]; + i = len - tablebits; + while (i != 0) + { + if (*p == 0) + { + right[avail] = left[avail] = 0; + *p = avail++; + } + if (k & mask) + p = &right[*p]; + else + p = &left[*p]; + k <<= 1; + i--; + } + *p = ch; + } + start[len] = nextcode; + } + return (0); +} + +/* + * huf.c + */ + + +void CLzhDepacker::read_pt_len (int nn, int nbit, int i_special) +{ + int i, n; + short c; + ushort mask; + + n = getbits (nbit); + if (n == 0) + { + c = getbits (nbit); + for (i = 0; i < nn; i++) + pt_len[i] = 0; + for (i = 0; i < 256; i++) + pt_table[i] = c; + } + else + { + i = 0; + while (i < n) + { + c = bitbuf >> (BITBUFSIZ - 3); + if (c == 7) + { + mask = 1U << (BITBUFSIZ - 1 - 3); + while (mask & bitbuf) + { + mask >>= 1; + c++; + } + } + fillbuf ((c < 7) ? 3 : c - 3); + pt_len[i++] = uchar(c); + if (i == i_special) + { + c = getbits (2); + while (--c >= 0) + pt_len[i++] = 0; + } + } + while (i < nn) + pt_len[i++] = 0; + make_table (nn, pt_len, 8, pt_table); + } +} + +void CLzhDepacker::read_c_len (void) +{ + short i, c, n; + ushort mask; + + n = getbits (CBIT); + if (n == 0) + { + c = getbits (CBIT); + for (i = 0; i < NC; i++) + c_len[i] = 0; + for (i = 0; i < 4096; i++) + c_table[i] = c; + } + else + { + i = 0; + while (i < n) + { + c = pt_table[bitbuf >> (BITBUFSIZ - 8)]; + if (c >= NT) + { + mask = 1U << (BITBUFSIZ - 1 - 8); + do + { + if (bitbuf & mask) + c = right[c]; + else + c = left[c]; + mask >>= 1; + } while (c >= NT); + } + fillbuf (pt_len[c]); + if (c <= 2) + { + if (c == 0) + c = 1; + else if (c == 1) + c = getbits (4) + 3; + else + c = getbits (CBIT) + 20; + while (--c >= 0) + c_len[i++] = 0; + } + else + c_len[i++] = c - 2; + } + while (i < NC) + c_len[i++] = 0; + make_table (NC, c_len, 12, c_table); + } +} + +ushort CLzhDepacker::decode_c (void) +{ + ushort j, mask; + + if (blocksize == 0) + { + blocksize = getbits (16); + read_pt_len (NT, TBIT, 3); + read_c_len (); + read_pt_len (NP, PBIT, -1); + } + blocksize--; + j = c_table[bitbuf >> (BITBUFSIZ - 12)]; + if (j >= NC) + { + mask = 1U << (BITBUFSIZ - 1 - 12); + do + { + if (bitbuf & mask) + j = right[j]; + else + j = left[j]; + mask >>= 1; + } + while (j >= NC); + } + fillbuf (c_len[j]); + return j; +} + +ushort CLzhDepacker::decode_p (void) +{ + ushort j, mask; + + j = pt_table[bitbuf >> (BITBUFSIZ - 8)]; + if (j >= NP) + { + mask = 1U << (BITBUFSIZ - 1 - 8); + do + { + if (bitbuf & mask) + j = right[j]; + else + j = left[j]; + mask >>= 1; + } while (j >= NP); + } + fillbuf (pt_len[j]); + if (j != 0) + j = (1U << (j - 1)) + getbits (j - 1); + return j; +} + +void CLzhDepacker::huf_decode_start (void) +{ + init_getbits (); + blocksize = 0; +} + +/* + * decode.c + */ + + +void CLzhDepacker::decode_start (void) +{ + fillbufsize = 0; + huf_decode_start (); + decode_j = 0; +} + +/* + * The calling function must keep the number of bytes to be processed. This + * function decodes either 'count' bytes or 'DICSIZ' bytes, whichever is + * smaller, into the array 'buffer[]' of size 'DICSIZ' or more. Call + * decode_start() once for each new file before calling this function. + */ +void CLzhDepacker::decode (uint count, uchar buffer[]) +{ + uint r, c; + + r = 0; + while (--decode_j >= 0) + { + buffer[r] = buffer[decode_i]; + decode_i = (decode_i + 1) & (DICSIZ - 1); + if (++r == count) + return; + } + for (;;) + { + c = decode_c (); + if (c <= UCHAR_MAX) + { + buffer[r] = c; + if (++r == count) + return; + } + else + { + decode_j = c - (UCHAR_MAX + 1 - THRESHOLD); + decode_i = (r - decode_p () - 1) & (DICSIZ - 1); + while (--decode_j >= 0) + { + buffer[r] = buffer[decode_i]; + decode_i = (decode_i + 1) & (DICSIZ - 1); + if (++r == count) + return; + } + } + } +} + +bool CLzhDepacker::LzUnpack(void *pSrc,int srcSize,void *pDst,int dstSize) +{ + + with_error = 0; + + m_pSrc = (uchar*)pSrc; + m_srcSize = srcSize; + m_pDst = (uchar*)pDst; + m_dstSize = dstSize; + + decode_start (); + + unsigned int origsize = dstSize; + while (origsize != 0) + { + int n = (uint) ((origsize > DICSIZ) ? DICSIZ : origsize); + decode (n, outbuf); + if (with_error) + break; + + DataOut(outbuf,n); + origsize -= n; + if (with_error) + break; + } + + return (0 == with_error); +} diff --git a/MCUME_esp32/espsnd/main/StSnd/StSoundLibrary.h b/MCUME_esp32/espsnd/main/StSnd/StSoundLibrary.h new file mode 100755 index 0000000..5079323 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/StSoundLibrary.h @@ -0,0 +1,96 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + Main header to use the StSound "C" like API in your production. + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + + +#ifndef __STSOUNDLIBRARY__ +#define __STSOUNDLIBRARY__ + +#include "YmTypes.h" + +typedef void YMMUSIC; + +typedef struct +{ + ymchar * pSongName; + ymchar * pSongAuthor; + ymchar * pSongComment; + ymchar * pSongType; + ymchar * pSongPlayer; + yms32 musicTimeInSec; // keep for compatibility + yms32 musicTimeInMs; +} ymMusicInfo_t; + +#ifdef __cplusplus +extern "C" +{ +#endif + +// Create object +extern YMMUSIC * ymMusicCreate(); + +// Release object +extern void ymMusicDestroy(YMMUSIC *pMusic); + +// Global settings +extern void ymMusicSetLowpassFiler(YMMUSIC *pMus,ymbool bActive); + +// Functions +extern ymbool ymMusicLoad(YMMUSIC *pMusic,const char *fName); // Method 1 : Load file using stdio library (fopen/fread, etc..) +extern ymbool ymMusicLoadMemory(YMMUSIC *pMusic,void *pBlock,ymu32 size); // Method 2 : Load file from a memory block + +extern ymbool ymMusicCompute(YMMUSIC *pMusic,ymsample *pBuffer,ymint nbSample); // Render nbSample samples of current YM tune into pBuffer PCM 16bits mono sample buffer. + +extern void ymMusicSetLoopMode(YMMUSIC *pMusic,ymbool bLoop); +extern const char * ymMusicGetLastError(YMMUSIC *pMusic); +extern int ymMusicGetRegister(YMMUSIC *pMusic,ymint reg); +extern void ymMusicGetInfo(YMMUSIC *pMusic,ymMusicInfo_t *pInfo); +extern void ymMusicPlay(YMMUSIC *pMusic); +extern void ymMusicPause(YMMUSIC *pMusic); +extern void ymMusicStop(YMMUSIC *pMusic); +extern ymbool ymMusicIsOver(YMMUSIC *_pMus); + +extern void ymMusicRestart(YMMUSIC *pMusic); + +extern ymbool ymMusicIsSeekable(YMMUSIC *pMusic); +extern ymu32 ymMusicGetPos(YMMUSIC *pMusic); +extern void ymMusicSeek(YMMUSIC *pMusic,ymu32 timeInMs); + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/MCUME_esp32/espsnd/main/StSnd/Ym2149Ex.cpp b/MCUME_esp32/espsnd/main/StSnd/Ym2149Ex.cpp new file mode 100755 index 0000000..d501876 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/Ym2149Ex.cpp @@ -0,0 +1,579 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + Extended YM-2149 Emulator, with ATARI music demos effects. + (SID-Like, Digidrum, Sync Buzzer, Sinus SID and Pattern SID) + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + +#include "YmTypes.h" +#include +#include +#include +#include +#include "Ym2149Ex.h" + +//------------------------------------------------------------------- +// env shapes. +//------------------------------------------------------------------- +static const ymint Env00xx[8]={ 1,0,0,0,0,0,0,0 }; +static const ymint Env01xx[8]={ 0,1,0,0,0,0,0,0 }; +static const ymint Env1000[8]={ 1,0,1,0,1,0,1,0 }; +static const ymint Env1001[8]={ 1,0,0,0,0,0,0,0 }; +static const ymint Env1010[8]={ 1,0,0,1,1,0,0,1 }; +static const ymint Env1011[8]={ 1,0,1,1,1,1,1,1 }; +static const ymint Env1100[8]={ 0,1,0,1,0,1,0,1 }; +static const ymint Env1101[8]={ 0,1,1,1,1,1,1,1 }; +static const ymint Env1110[8]={ 0,1,1,0,0,1,1,0 }; +static const ymint Env1111[8]={ 0,1,0,0,0,0,0,0 }; +static const ymint * EnvWave[16] = { Env00xx,Env00xx,Env00xx,Env00xx, + Env01xx,Env01xx,Env01xx,Env01xx, + Env1000,Env1001,Env1010,Env1011, + Env1100,Env1101,Env1110,Env1111}; + +static ymint ymVolumeTable[16] = +{ 62,161,265,377,580,774,1155,1575,2260,3088,4570,6233,9330,13187,21220,32767}; + + +//---------------------------------------------------------------------- +// Very cool and fast DC Adjuster ! This is the *new* stuff of that +// package coz I get that idea working on SainT in 2004 ! +// ( almost everything here is from 1995 !) +//---------------------------------------------------------------------- +CDcAdjuster::CDcAdjuster() +{ + Reset(); +} + +void CDcAdjuster::Reset(void) +{ + for (ymint i=0;i>2)&1); + rndRack = (rndRack>>1) | (rBit<<16); + return (rBit ? 0 : 0xffff); +} + +ymu32 CYm2149Ex::envStepCompute(ymu8 rHigh,ymu8 rLow) +{ + + + ymint per = rHigh; + per = (per<<8)+rLow; + if (per<3) + return 0; + +#ifdef YM_INTEGER_ONLY + yms64 step = internalClock; + step <<= (16+16-9); + step /= (per * replayFrequency); +#else + ymfloat step = internalClock; + step /= ((ymfloat)per*512.0*(ymfloat)replayFrequency); + step *= 65536.0*65536.0; +#endif + + return (ymu32)step; +} + + +void CYm2149Ex::reset(void) +{ + + memset( registers, 0, sizeof(registers) ); + + for (int i=0;i<14;i++) + writeRegister(i,0); + + writeRegister(7,0xff); + + currentNoise = 0xffff; + rndRack = 1; + sidStop(0); + sidStop(1); + sidStop(2); + + envShape = 0; + envPhase = 0; + envPos = 0; + + m_dcAdjust.Reset(); + + memset(specialEffect,0,sizeof(specialEffect)); + + syncBuzzerStop(); + + m_lowPassFilter[0] = 0; + m_lowPassFilter[1] = 0; + +} + + +void CYm2149Ex::sidVolumeCompute(ymint voice,ymint *pVol) +{ + + struct YmSpecialEffect *pVoice = specialEffect+voice; + + if (pVoice->bSid) + { + if (pVoice->sidPos & (1<<31)) + writeRegister(8+voice,pVoice->sidVol); + else + writeRegister(8+voice,0); + } + else if (pVoice->bDrum) + { +// writeRegister(8+voice,pVoice->drumData[pVoice->drumPos>>DRUM_PREC]>>4); + + *pVol = (pVoice->drumData[pVoice->drumPos>>DRUM_PREC] * 255) / 6; + + switch (voice) + { + case 0: + pVolA = &volA; + mixerTA = 0xffff; + mixerNA = 0xffff; + break; + case 1: + pVolB = &volB; + mixerTB = 0xffff; + mixerNB = 0xffff; + break; + case 2: + pVolC = &volC; + mixerTC = 0xffff; + mixerNC = 0xffff; + break; + } + + pVoice->drumPos += pVoice->drumStep; + if ((pVoice->drumPos>>DRUM_PREC) >= pVoice->drumSize) + { + pVoice->bDrum = YMFALSE; + } + + } +} + +int CYm2149Ex::LowPassFilter(int in) +{ + const int out = (m_lowPassFilter[0]>>2) + (m_lowPassFilter[1]>>1) + (in>>2); + m_lowPassFilter[0] = m_lowPassFilter[1]; + m_lowPassFilter[1] = in; + return out; +} + +ymsample CYm2149Ex::nextSample(void) +{ +ymint vol; +ymint bt,bn; + + if (noisePos&0xffff0000) + { + currentNoise ^= rndCompute(); + noisePos &= 0xffff; + } + bn = currentNoise; + + volE = ymVolumeTable[envData[envShape][envPhase][envPos>>(32-5)]]; + + sidVolumeCompute(0,&volA); + sidVolumeCompute(1,&volB); + sidVolumeCompute(2,&volC); + + //--------------------------------------------------- + // Tone+noise+env+DAC for three voices ! + //--------------------------------------------------- + bt = ((((yms32)posA)>>31) | mixerTA) & (bn | mixerNA); + vol = (*pVolA)&bt; + bt = ((((yms32)posB)>>31) | mixerTB) & (bn | mixerNB); + vol += (*pVolB)&bt; + bt = ((((yms32)posC)>>31) | mixerTC) & (bn | mixerNC); + vol += (*pVolC)&bt; + + //--------------------------------------------------- + // Inc + //--------------------------------------------------- + posA += stepA; + posB += stepB; + posC += stepC; + noisePos += noiseStep; + envPos += envStep; + if (0 == envPhase) + { + if (envPos=0) && (reg<=13)) return registers[reg]; + else return -1; +} + +void CYm2149Ex::writeRegister(ymint reg,ymint data) +{ + + switch (reg) + { + case 0: + registers[0] = data&255; + stepA = toneStepCompute(registers[1],registers[0]); + if (!stepA) posA = (1<<31); // Assume output always 1 if 0 period (for Digi-sample !) + break; + + case 2: + registers[2] = data&255; + stepB = toneStepCompute(registers[3],registers[2]); + if (!stepB) posB = (1<<31); // Assume output always 1 if 0 period (for Digi-sample !) + break; + + case 4: + registers[4] = data&255; + stepC = toneStepCompute(registers[5],registers[4]); + if (!stepC) posC = (1<<31); // Assume output always 1 if 0 period (for Digi-sample !) + break; + + case 1: + registers[1] = data&15; + stepA = toneStepCompute(registers[1],registers[0]); + if (!stepA) posA = (1<<31); // Assume output always 1 if 0 period (for Digi-sample !) + break; + + case 3: + registers[3] = data&15; + stepB = toneStepCompute(registers[3],registers[2]); + if (!stepB) posB = (1<<31); // Assume output always 1 if 0 period (for Digi-sample !) + break; + + case 5: + registers[5] = data&15; + stepC = toneStepCompute(registers[5],registers[4]); + if (!stepC) posC = (1<<31); // Assume output always 1 if 0 period (for Digi-sample !) + break; + + case 6: + registers[6] = data&0x1f; + noiseStep = noiseStepCompute(registers[6]); + if (!noiseStep) + { + noisePos = 0; + currentNoise = 0xffff; + } + break; + + case 7: + registers[7] = data&255; + mixerTA = (data&(1<<0)) ? 0xffff : 0; + mixerTB = (data&(1<<1)) ? 0xffff : 0; + mixerTC = (data&(1<<2)) ? 0xffff : 0; + mixerNA = (data&(1<<3)) ? 0xffff : 0; + mixerNB = (data&(1<<4)) ? 0xffff : 0; + mixerNC = (data&(1<<5)) ? 0xffff : 0; + break; + + case 8: + registers[8] = data&31; + volA = ymVolumeTable[data&15]; + if (data&0x10) + pVolA = &volE; + else + pVolA = &volA; + break; + + case 9: + registers[9] = data&31; + volB = ymVolumeTable[data&15]; + if (data&0x10) + pVolB = &volE; + else + pVolB = &volB; + break; + + case 10: + registers[10] = data&31; + volC = ymVolumeTable[data&15]; + if (data&0x10) + pVolC = &volE; + else + pVolC = &volC; + break; + + case 11: + registers[11] = data&255; + envStep = envStepCompute(registers[12],registers[11]); + break; + + case 12: + registers[12] = data&255; + envStep = envStepCompute(registers[12],registers[11]); + break; + + case 13: + registers[13] = data&0xf; + envPos = 0; + envPhase = 0; + envShape = data&0xf; + break; + + } +} + +void CYm2149Ex::update(ymsample *pSampleBuffer,ymint nbSample) +{ + + ymsample *pBuffer = pSampleBuffer; + if (nbSample>0) + { + do + { + *pBuffer++ = nextSample(); + } + while (--nbSample); + } + +} + +void CYm2149Ex::drumStart(ymint voice,ymu8 *pDrumBuffer,ymu32 drumSize,ymint drumFreq) +{ + if ((pDrumBuffer) && (drumSize)) + { + specialEffect[voice].drumData = pDrumBuffer; + specialEffect[voice].drumPos = 0; + specialEffect[voice].drumSize = drumSize; + specialEffect[voice].drumStep = (drumFreq< +#include +#include +#include "YmMusic.h" + +#define _LINEAR_OVRS // Activate linear oversampling (best quality) Only used for DigiMix and UniversalTracker YM file type + + +// ATARI-ST MFP chip predivisor +static const ymint mfpPrediv[8] = {0,4,10,16,50,64,100,200}; + + + +CYmMusic::CYmMusic(ymint _replayRate) +{ + + pBigMalloc = NULL; + pSongName = NULL; + pSongAuthor = NULL; + pSongComment = NULL; + pSongType = NULL; + pSongPlayer = NULL; + + pBigSampleBuffer = NULL; + pMixBlock = NULL; + + replayRate = _replayRate; + innerSamplePos = 0; + currentPos = 0; + nbDrum = 0; + pDrumTab = NULL; + setLoopMode(YMFALSE); + + m_pTimeInfo = NULL; +} + +void CYmMusic::setTimeControl(ymbool bTime) +{ + if (bTime) + attrib |= A_TIMECONTROL; + else + attrib &= (~A_TIMECONTROL); +} + +CYmMusic::~CYmMusic() +{ + stop(); + unLoad(); +} + +void CYmMusic::setLoopMode(ymbool bLoopMode) +{ + bLoop = bLoopMode; +} + +void CYmMusic::setPlayerRate(ymint rate) +{ + playerRate = rate; +} + +ymu32 CYmMusic::getPos() +{ + if ((songType>=YM_MIX1) && (songType0) && (playerRate>0)) + { + return ((ymu32)currentFrame*1000)/(ymu32)playerRate; + } + else + return 0; + +} + +ymu32 CYmMusic::getMusicTime(void) +{ + + if ((songType>=YM_MIX1) && (songType0) && (playerRate>0)) + { + return ((ymu32)nbFrame*1000)/(ymu32)playerRate; + } + else + return 0; + +} + + +void CYmMusic::setMixTime(ymu32 time) +{ + if (time > m_musicLenInMs) + return; + + assert(m_pTimeInfo); + for (int i=0;i= m_pTimeInfo[i].time) && (time < tEnd)) + { + mixPos = m_pTimeInfo[i].nBlock; + pCurrentMixSample = pBigSampleBuffer + pMixBlock[mixPos].sampleStart; + currentSampleLength = (pMixBlock[mixPos].sampleLength)<<12; + currentPente = (((ymu32)pMixBlock[mixPos].replayFreq)<<12) / replayRate; + + ymu32 len = tEnd - m_pTimeInfo[i].time; + ymu32 t0 = ((time - m_pTimeInfo[i].time) * pMixBlock[mixPos].sampleLength) / len; + + currentPos = t0 << 12; + nbRepeat = m_pTimeInfo[i].nRepeat; + break; + } + } + + m_iMusicPosInMs = time; + m_iMusicPosAccurateSample = 0; +} + +ymu32 CYmMusic::setMusicTime(ymu32 time) +{ + if (!isSeekable()) return 0; + ymu32 newTime = 0; + + if ((songType>=YM_V2) && (songType=getMusicTime()) newTime = 0; + currentFrame = (newTime*(ymu32)playerRate)/1000; + } + else if ((songType>=YM_TRACKER1) && (songType=getMusicTime()) newTime = 0; + currentFrame = (newTime*(ymu32)playerRate)/1000; + } + else if ((songType>=YM_MIX1) && (songTypepSongName = pSongName; + pInfo->pSongAuthor = pSongAuthor; + pInfo->pSongComment = pSongComment; + pInfo->pSongType = pSongType; + pInfo->pSongPlayer = pSongPlayer; + + pInfo->musicTimeInMs = getMusicTime(); + pInfo->musicTimeInSec = pInfo->musicTimeInMs / 1000; + } +} + + +void CYmMusic::setAttrib(ymint _attrib) +{ + attrib = _attrib; +} + +ymint CYmMusic::getAttrib(void) +{ + return attrib; +} + +ymbool CYmMusic::isSeekable(void) +{ + return getAttrib()&A_TIMECONTROL; +} + +void CYmMusic::setLastError(char *pError) +{ + pLastError = pError; +} + +char *CYmMusic::getLastError(void) +{ + return pLastError; +} + +void bufferClear(ymsample *pBuffer,ymint nbSample) +{ + memset((void*)pBuffer,0,nbSample*sizeof(ymsample)); +} + +ymbool CYmMusic::update(ymsample *sampleBuffer,ymint nbSample) +{ +ymint sampleToCompute; +ymint vblNbSample; + + + if ((!bMusicOk) || + (bPause) || + (bMusicOver)) + { + bufferClear(sampleBuffer,nbSample); + if (bMusicOver) + return YMFALSE; + else + return YMTRUE; + } + + if ((songType >= YM_MIX1) && (songType < YM_MIXMAX)) + { + stDigitMix(sampleBuffer,nbSample); + + + } + else if ((songType >= YM_TRACKER1) && (songTypenbs) sampleToCompute = nbs; + innerSamplePos += sampleToCompute; + if (innerSamplePos>=vblNbSample) + { + player(); // Lecture de la partition (playerRate Hz) + innerSamplePos -= vblNbSample; + } + if (sampleToCompute>0) + { + ymChip.update(pOut,sampleToCompute); // YM Emulation. + pOut += sampleToCompute; + } + nbs -= sampleToCompute; + } + while (nbs>0); + } + + + return YMTRUE; +} + + + +void CYmMusic::readYm6Effect(unsigned char *pReg,ymint code,ymint prediv,ymint count) +{ +ymint voice; +ymint ndrum; + + code = pReg[code]&0xf0; + prediv = (pReg[prediv]>>5)&7; + count = pReg[count]; + + if (code&0x30) + { + ymu32 tmpFreq; + // Ici il y a un effet sur la voie: + + voice = ((code&0x30)>>4)-1; + switch (code&0xc0) + { + case 0x00: // SID + case 0x80: // Sinus-SID + + prediv = mfpPrediv[prediv]; + prediv *= count; + tmpFreq = 0; + if (prediv) + { + tmpFreq = 2457600L / prediv; + if ((code&0xc0)==0x00) + ymChip.sidStart(voice,tmpFreq,pReg[voice+8]&15); + else + ymChip.sidSinStart(voice,tmpFreq,pReg[voice+8]&15); + } + break; + + case 0x40: // DigiDrum + ndrum = pReg[voice+8]&31; + if ((ndrum>=0) && (ndrum0) + { + tmpFreq = 2457600L / prediv; + ymChip.drumStart(voice,pDrumTab[ndrum].pData,pDrumTab[ndrum].size,tmpFreq); + } + } + break; + + case 0xc0: // Sync-Buzzer. + + prediv = mfpPrediv[prediv]; + prediv *= count; + tmpFreq = 0; + if (prediv) + { + tmpFreq = 2457600L / prediv; + ymChip.syncBuzzerStart(tmpFreq,pReg[voice+8]&15); + } + break; + + + } + + } +} + +void CYmMusic::setVolume(ymint volume) +{ +// ymChip.setGlobalVolume(volume); +} + +void CYmMusic::player(void) + { + ymu8 *ptr; + ymu32 prediv; + ymint voice; + ymint ndrum; + + + if (currentFrame<0) currentFrame = 0; + + if (currentFrame>=nbFrame) + { + if (bLoop) + { + currentFrame = loopFrame; + } + else + { + bMusicOver = YMTRUE; + ymChip.reset(); + return; + } + } + + ptr = pDataStream+currentFrame*streamInc; + + for (ymint i=0;i<=10;i++) + ymChip.writeRegister(i,ptr[i]); + + ymChip.sidStop(0); + ymChip.sidStop(1); + ymChip.sidStop(2); + ymChip.syncBuzzerStop(); + + //--------------------------------------------- + // Check digi-drum + //--------------------------------------------- + if (songType == YM_V2) // MADMAX specific ! + { + if (ptr[13]!=0xff) + { + ymChip.writeRegister(11,ptr[11]); + ymChip.writeRegister(12,0); + ymChip.writeRegister(13,10); // MADMAX specific !! + } + if (ptr[10]&0x80) // bit 7 volume canal C pour annoncer une digi-drum madmax. + { + ymint sampleNum; + ymu32 sampleFrq; + ymChip.writeRegister(7,ymChip.readRegister(7)|0x24) ; // Coupe TONE + NOISE canal C. + sampleNum = ptr[10]&0x7f; // Numero du sample + + if (ptr[12]) + { + sampleFrq = (MFP_CLOCK / ptr[12]); + ymChip.drumStart( 2, // Voice C + sampleAdress[sampleNum], + sampleLen[sampleNum], + sampleFrq); + } + } + } + else if (songType >= YM_V3) + { + ymChip.writeRegister(11,ptr[11]); + ymChip.writeRegister(12,ptr[12]); + if (ptr[13]!=0xff) + { + ymChip.writeRegister(13,ptr[13]); + } + + if (songType >= YM_V5) + { + ymint code; + + if (songType == YM_V6) + { + readYm6Effect(ptr,1,6,14); + readYm6Effect(ptr,3,8,15); + } + else + { // YM5 effect decoding + + //------------------------------------------------------ + // Sid Voice !! + //------------------------------------------------------ + code = (ptr[1]>>4)&3; + if (code!=0) + { + ymu32 tmpFreq; + voice = code-1; + prediv = mfpPrediv[(ptr[6]>>5)&7]; + prediv *= ptr[14]; + tmpFreq = 0; + if (prediv) + { + tmpFreq = 2457600L / prediv; + ymChip.sidStart(voice,tmpFreq,ptr[voice+8]&15); + } + } + + //------------------------------------------------------ + // YM5 Digi Drum. + //------------------------------------------------------ + code = (ptr[3]>>4)&3; + if (code!=0) + { // Ici un digidrum demarre sur la voie voice. + voice = code-1; + ndrum = ptr[8+voice]&31; + if ((ndrum>=0) && (ndrum>5)&7]; + prediv *= ptr[15]; + if (prediv) + { + sampleFrq = MFP_CLOCK / prediv; + ymChip.drumStart(voice,pDrumTab[ndrum].pData,pDrumTab[ndrum].size,sampleFrq); + } + } + } + } + } + } + currentFrame++; + } + +/* + + x x x x x x x x r0 + 0 0 0 0 x x x x r1 // Special FX 1a + x x x x x x x x r2 + 0 0 0 0 x x x x r3 // Special FX 2a + x x x x x x x x r4 + 0 0 0 0 x x x x r5 + 0 0 0 x x x x x r6 // Special FX 1b + 0 0 x x x x x x r7 + 0 0 0 x x x x x r8 // Special FX 2b + 0 0 0 x x x x x r9 + 0 0 0 x x x x x r10 + x x x x x x x x r11 + x x x x x x x x r12 + 0 0 0 0 x x x x r13 + 0 0 0 0 0 0 0 0 r14 // Special FX 1c + 0 0 0 0 0 0 0 0 r15 // Special FX 2c + + + Special Fx ?a + 0 0 0 0 : No special FX running + 0 0 0 1 : Sid Voice A + 0 0 1 0 : Sid Voice B + 0 0 1 1 : Sid Voice C + 0 1 0 0 : Extended Fx voice A + 0 1 0 1 : Digidrum voice A + 0 1 1 0 : Digidrum voice B + 0 1 1 1 : Digidrum voice C + 1 0 0 0 : Extended Fx voice B + 1 0 0 1 : Sinus SID voice A + 1 0 1 0 : Sinus SID voice B + 1 0 1 1 : Sinus SID voice C + 1 1 0 0 : Extended Fx voice C + 1 1 0 1 : Sync Buzzer voice A + 1 1 1 0 : Sync Buzzer voice B + 1 1 1 1 : Sync Buzzer voice C + + + +*/ + +void CYmMusic::computeTimeInfo(void) +{ + + assert(NULL == m_pTimeInfo); + + //------------------------------------------- + // Compute nb of mixblock + //------------------------------------------- + m_nbTimeKey = 0; + ymint i; + for (i=0;i= 32) + pMixBlock[i].nbRepeat = 32; + + m_nbTimeKey += pMixBlock[i].nbRepeat; + } + + //------------------------------------------- + // Parse all mixblock keys + //------------------------------------------- + m_pTimeInfo = (TimeKey*)malloc(sizeof(TimeKey) * m_nbTimeKey); + TimeKey *pKey = m_pTimeInfo; + ymu32 time = 0; + + for (i=0;itime = time; + pKey->nRepeat = pMixBlock[i].nbRepeat - j; + pKey->nBlock = i; + pKey++; + + time += (pMixBlock[i].sampleLength * 1000) / pMixBlock[i].replayFreq; + } + } + m_musicLenInMs = time; + +} + +void CYmMusic::readNextBlockInfo(void) +{ + nbRepeat--; + if (nbRepeat<=0) + { + mixPos++; + if (mixPos >= nbMixBlock) + { + mixPos = 0; + if (!bLoop) bMusicOver = YMTRUE; + + m_iMusicPosAccurateSample = 0; + m_iMusicPosInMs = 0; + } + nbRepeat = pMixBlock[mixPos].nbRepeat; + } + pCurrentMixSample = pBigSampleBuffer + pMixBlock[mixPos].sampleStart; + currentSampleLength = (pMixBlock[mixPos].sampleLength)<<12; + currentPente = (((ymu32)pMixBlock[mixPos].replayFreq)<<12) / replayRate; + currentPos &= ((1<<12)-1); +} + +void CYmMusic::stDigitMix(ymsample *pWrite16,ymint nbs) +{ + + + if (bMusicOver) return; + + if (mixPos == -1) + { + nbRepeat = -1; + readNextBlockInfo(); + } + + m_iMusicPosAccurateSample += nbs * 1000; + m_iMusicPosInMs += ((m_iMusicPosAccurateSample) / (replayRate)); + m_iMusicPosAccurateSample %= (replayRate); + + if (nbs) do + { + + ymint sa = (ymint)(ymsample)(pCurrentMixSample[currentPos>>12]<<8); +#ifdef _LINEAR_OVRS + ymint sb = sa; + if ((currentPos>>12)<((currentSampleLength>>12)-1)) + sb = (ymint)(ymsample)(pCurrentMixSample[(currentPos>>12)+1]<<8); + ymint frac = currentPos&((1<<12)-1); + sa += (((sb-sa)*frac)>>12); +#endif + *pWrite16++ = sa; + + currentPos += currentPente; + if (currentPos>=currentSampleLength) + { + readNextBlockInfo(); + if (bMusicOver) return; + } + } + while (--nbs); +} + +void CYmMusic::ymTrackerDesInterleave(void) +{ +unsigned char *a0,*a1,*a2; +unsigned char *pNewBuffer; +ymint step; +ymu32 n1,n2; + + + if (attrib&A_STREAMINTERLEAVED) + { + a0 = pDataStream; + ymint size = sizeof(ymTrackerLine_t)*nbVoice*nbFrame; + pNewBuffer = (unsigned char*)malloc(size); + step = sizeof(ymTrackerLine_t)*nbVoice; + n1 = step; + a2 = pNewBuffer; + do + { + n2 = nbFrame; + a1 = a2; + do + { + *a1 = *a0++; + a1 += step; + } + while (--n2); + a2++; + } + while (--n1); + memcpy(pDataStream,pNewBuffer,size); + free(pNewBuffer); + attrib &= (~A_STREAMINTERLEAVED); + } +} + + +void CYmMusic::ymTrackerInit(ymint volMaxPercent) +{ +ymint i,s; +ymint vol; +ymint scale; +ymsample *pTab; + + + + for (i=0;ifreqHigh<<8) | pLine->freqLow; + if (pVoice[i].sampleFreq) + { + pVoice[i].sampleVolume = pLine->volume&63; + pVoice[i].bLoop = (pLine->volume&0x40); + n = pLine->noteOn; + if (n != 0xff) // Note ON. + { + pVoice[i].bRunning = 1; + pVoice[i].pSample = pDrumTab[n].pData; + pVoice[i].sampleSize = pDrumTab[n].size; + pVoice[i].repLen = pDrumTab[n].repLen; + pVoice[i].samplePos = 0; + } + } + else + { + pVoice[i].bRunning = 0; + } + pLine++; + } + + currentFrame++; + if (currentFrame >= nbFrame) + { + if (!bLoop) + { + bMusicOver = YMTRUE; + } + currentFrame = 0; + } +} + + +void CYmMusic::ymTrackerVoiceAdd(ymTrackerVoice_t *pVoice,ymsample *pBuffer,ymint nbs) +{ +ymsample *pVolumeTab; +ymu8 *pSample; +ymu32 samplePos; +ymu32 sampleEnd; +ymu32 sampleInc; +ymu32 repLen; +double step; + + + if (!(pVoice->bRunning)) return; + + pVolumeTab = &ymTrackerVolumeTable[256*(pVoice->sampleVolume&63)]; + pSample = pVoice->pSample; + samplePos = pVoice->samplePos; + + step = (double)(pVoice->sampleFreq<sampleSize<repLen<0) do + { + ymint va = pVolumeTab[pSample[samplePos>>YMTPREC]]; +#ifdef _LINEAR_OVRS + ymint vb = va; + if (samplePos < (sampleEnd-(1<>YMTPREC)+1]]; + + ymint frac = samplePos & ((1<>YMTPREC); +#endif + (*pBuffer++) += va; + + samplePos += sampleInc; + if (samplePos>=sampleEnd) + { + if (pVoice->bLoop) + { + samplePos -= repLen; + } + else + { + pVoice->bRunning = 0; + return; + } + } + } + while (--nbs); + pVoice->samplePos = samplePos; +} + +void CYmMusic::ymTrackerUpdate(ymsample *pBuffer,ymint nbSample) +{ +ymint i; +ymint _nbs; + + // Clear les buffers. + memset(pBuffer,0,sizeof(ymsample)*nbSample); + if (bMusicOver) return; + + do + { + if (ymTrackerNbSampleBefore == 0) + { + // Lit la partition ymTracker + ymTrackerPlayer(ymTrackerVoice); + if (bMusicOver) return; + ymTrackerNbSampleBefore = replayRate / playerRate; + } + _nbs = ymTrackerNbSampleBefore; // nb avant playerUpdate. + if (_nbs>nbSample) _nbs = nbSample; + ymTrackerNbSampleBefore -= _nbs; + if (_nbs>0) + { + // Genere les samples. + for (i=0;i0); +} diff --git a/MCUME_esp32/espsnd/main/StSnd/YmMusic.h b/MCUME_esp32/espsnd/main/StSnd/YmMusic.h new file mode 100755 index 0000000..e17c227 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/YmMusic.h @@ -0,0 +1,290 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + YM Music Driver + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + + +#ifndef __YMMUSIC__ +#define __YMMUSIC__ + +#include "YmTypes.h" +#include "StSoundLibrary.h" +#include "Ym2149Ex.h" +#include "YmLoad.h" +#include "digidrum.h" + +#define MAX_DIGIDRUM 128 + +#define YMTPREC 16 +#define MAX_VOICE 8 + +typedef enum +{ + YM_V2, + YM_V3, + YM_V4, + YM_V5, + YM_V6, + YM_VMAX, + + YM_TRACKER1=32, + YM_TRACKER2, + YM_TRACKERMAX, + + YM_MIX1=64, + YM_MIX2, + YM_MIXMAX, +} ymFile_t; + +typedef struct +{ + ymu32 sampleStart; + ymu32 sampleLength; + ymu16 nbRepeat; + ymu16 replayFreq; +} mixBlock_t; + +typedef struct +{ + ymu32 size; + ymu8 * pData; + ymu32 repLen; +} digiDrum_t; + +typedef struct +{ + ymint nbVoice; + ymu32 nbVbl; + ymu8 * pDataBufer; + ymu32 currentVbl; + ymu32 flags; + ymbool bLoop; +} ymTrackerPartoche_t; + + +typedef struct +{ + ymu8 * pSample; + ymu32 sampleSize; + ymu32 samplePos; + ymu32 repLen; + yms32 sampleVolume; + ymu32 sampleFreq; + ymbool bLoop; + ymbool bRunning; +} ymTrackerVoice_t; + +typedef struct +{ + ymu8 noteOn; + ymu8 volume; + ymu8 freqHigh; + ymu8 freqLow; +} ymTrackerLine_t; + + +enum +{ + A_STREAMINTERLEAVED = 1, + A_DRUMSIGNED = 2, + A_DRUM4BITS = 4, + A_TIMECONTROL = 8, + A_LOOPMODE = 16, +}; + + +class CYmMusic +{ + +public: + CYmMusic(ymint _replayRate=44100); + ~CYmMusic(); + + ymbool load(const char *pName); + ymbool loadMemory(void *pBlock,ymu32 size); + + void unLoad(void); + ymbool isSeekable(void); + ymbool update(ymsample *pBuffer,ymint nbSample); + ymu32 getPos(void); + ymu32 getMusicTime(void); + ymu32 setMusicTime(ymu32 time); + void restart(void); + void play(void); + void pause(void); + void stop(void); + void setVolume(ymint volume); + int getAttrib(void); + void getMusicInfo(ymMusicInfo_t *pInfo); + void setLoopMode(ymbool bLoop); + char *getLastError(void); + int readYmRegister(ymint reg) { return ymChip.readRegister(reg); } + void setLowpassFilter(ymbool bActive) { ymChip.setFilter(bActive); } + + ymbool getMusicOver(void) const { return (bMusicOver); } + ymint GetNbFrame() const { return nbFrame; } + ymint GetStreamInc() const { return streamInc; } + const ymu8* GetDataStream() const { return pDataStream; } + + +//------------------------------------------------------------- +// WAVE Generator +//------------------------------------------------------------- + int waveCreate(char *fName); + + ymbool bMusicOver; + +private: + + ymbool checkCompilerTypes(); + + void setPlayerRate(int rate); + void setAttrib(int _attrib); + void setLastError(char *pError); + ymu8 *depackFile(ymu32 size); + ymbool deInterleave(void); + void readYm6Effect(ymu8 *pReg,int code,int prediv,int count); + void player(void); + void setTimeControl(ymbool bFlag); + + + CYm2149Ex ymChip; + char *pLastError; + ymFile_t songType; + int nbFrame; + int loopFrame; + int currentFrame; + int nbDrum; + digiDrum_t *pDrumTab; + int musicTime; + ymu8 *pBigMalloc; + ymu8 *pDataStream; + ymbool bLoop; + ymint fileSize; + ymbool ymDecode(void); + ymint playerRate; + ymint attrib; + volatile ymbool bMusicOk; + volatile ymbool bPause; + ymint streamInc; + ymint innerSamplePos; + ymint replayRate; + + ymchar *pSongName; + ymchar *pSongAuthor; + ymchar *pSongComment; + ymchar *pSongType; + ymchar *pSongPlayer; + +//------------------------------------------------------------- +// ATARI Digi Mix Music. +//------------------------------------------------------------- + void readNextBlockInfo(void); + void stDigitMix(ymsample *pWrite16,int nbs); + void computeTimeInfo(void); + void setMixTime(ymu32 time); + + ymint nbRepeat; + ymint nbMixBlock; + mixBlock_t *pMixBlock; + ymint mixPos; + ymu8 *pBigSampleBuffer; + ymu8 *pCurrentMixSample; + ymu32 currentSampleLength; + ymu32 currentPente; + ymu32 currentPos; + + + struct TimeKey + { + ymu32 time; + ymu16 nRepeat; + ymu16 nBlock; + }; + + ymint m_nbTimeKey; + TimeKey * m_pTimeInfo; + ymu32 m_musicLenInMs; + ymu32 m_iMusicPosAccurateSample; + ymu32 m_iMusicPosInMs; + +//------------------------------------------------------------- +// YM-Universal-Tracker +//------------------------------------------------------------- + void ymTrackerInit(int volMaxPercent); + void ymTrackerUpdate(ymsample *pBuffer,int nbSample); + void ymTrackerDesInterleave(void); + void ymTrackerPlayer(ymTrackerVoice_t *pVoice); + void ymTrackerVoiceAdd(ymTrackerVoice_t *pVoice,ymsample *pBuffer,int nbs); + + int nbVoice; + ymTrackerVoice_t ymTrackerVoice[MAX_VOICE]; + int ymTrackerNbSampleBefore; + ymsample ymTrackerVolumeTable[256*64]; + int ymTrackerFreqShift; + + +}; + +/* + int version; + SD pos; + UD inc; + UD timeSec; + UD timeMin; + UD loopSec; + UD loopMin; + UD nbVbl; + UD vblRestart; + UD ymFreq; + UD playerFreq; + UB *pRegister; + UB *pFileBuffer; + UD fileSize; + UD attrib; + char *pSongName; + char *pSongComment; + char *pSongAuthor; + mixBlock_t *pMixBlock; + long nbMixBlock; + UD nbDrum; + digiDrum_t *pDrumTab; + int nbVoice; + ymu32 currentVbl; + int bTimeControl; + int timeTotal; + int ymtFreqShift; +*/ + +#endif diff --git a/MCUME_esp32/espsnd/main/StSnd/YmTypes.h b/MCUME_esp32/espsnd/main/StSnd/YmTypes.h new file mode 100755 index 0000000..6c3e1c2 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/YmTypes.h @@ -0,0 +1,96 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + Define YM types for multi-platform compilation. + Change that file depending of your platform. Please respect the right size + for each type. + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + +#ifndef __YMTYPES__ +#define __YMTYPES__ + +#ifdef _MSC_VER + +typedef __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; + +#else +#include +#endif + + +//#define YM_INTEGER_ONLY + +//----------------------------------------------------------- +// Platform specific stuff +//----------------------------------------------------------- + +#ifdef YM_INTEGER_ONLY +typedef int64_t yms64; +#else +typedef float ymfloat; +#endif + +typedef int8_t yms8; // 8 bits signed integer +typedef int16_t yms16; // 16 bits signed integer +typedef int32_t yms32; // 32 bits signed integer + +typedef uint8_t ymu8; // 8 bits unsigned integer +typedef uint16_t ymu16; // 16 bits unsigned integer +typedef uint32_t ymu32; // 32 bits unsigned integer + +typedef yms32 ymint; // Native "int" for speed purpose. StSound suppose int is signed and at least 32bits. If not, change it to match to yms32 +typedef char ymchar; // 8 bits char character (used for null terminated strings) + + +#ifndef NULL +#define NULL (0L) +#endif + +//----------------------------------------------------------- +// Multi-platform +//----------------------------------------------------------- +typedef int ymbool; // boolean ( theorically nothing is assumed for its size in StSound,so keep using int) +typedef yms16 ymsample; // StSound emulator render mono 16bits signed PCM samples + +#define YMFALSE (0) +#define YMTRUE (!YMFALSE) + +#endif + diff --git a/MCUME_esp32/espsnd/main/StSnd/YmUserInterface.cpp b/MCUME_esp32/espsnd/main/StSnd/YmUserInterface.cpp new file mode 100755 index 0000000..197c213 --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/YmUserInterface.cpp @@ -0,0 +1,154 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + ST-Sound library "C-like" interface wrapper + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + + +#include "YmMusic.h" +#include "StSoundLibrary.h" + + +// Static assert to check various type len + +YMMUSIC * ymMusicCreate() +{ + return (YMMUSIC*)(new CYmMusic); +} + + +ymbool ymMusicLoad(YMMUSIC *pMus, const char *fName) +{ + CYmMusic *pMusic = (CYmMusic*)pMus; + return pMusic->load(fName); +} + +ymbool ymMusicLoadMemory(YMMUSIC *pMus, void *pBlock, ymu32 size) +{ + CYmMusic *pMusic = (CYmMusic*)pMus; + return pMusic->loadMemory(pBlock,size); +} + +void ymMusicDestroy(YMMUSIC *pMus) +{ + CYmMusic *pMusic = (CYmMusic*)pMus; + delete pMusic; +} + +ymbool ymMusicCompute(YMMUSIC *_pMus, ymsample *pBuffer, int nbSample) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + return pMusic->update(pBuffer,nbSample); +} + +void ymMusicSetLoopMode(YMMUSIC *_pMus, ymbool bLoop) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->setLoopMode(bLoop); +} + +const char * ymMusicGetLastError(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + return pMusic->getLastError(); +} + +int ymMusicGetRegister(YMMUSIC *_pMus, ymint reg) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + return pMusic->readYmRegister(reg); +} + +void ymMusicGetInfo(YMMUSIC *_pMus, ymMusicInfo_t *pInfo) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->getMusicInfo(pInfo); +} + +void ymMusicPlay(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->play(); +} + +void ymMusicPause(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->pause(); +} + +void ymMusicStop(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->stop(); +} + +ymbool ymMusicIsOver(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + return (pMusic->getMusicOver()); +} + +ymbool ymMusicIsSeekable(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + return pMusic->isSeekable() ? YMTRUE : YMFALSE; +} + +ymu32 ymMusicGetPos(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + return pMusic->getPos(); +} + +void ymMusicSeek(YMMUSIC *_pMus, ymu32 timeInMs) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + if (pMusic->isSeekable()) + { + pMusic->setMusicTime(timeInMs); + } +} + +void ymMusicRestart(YMMUSIC *_pMus) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->restart(); +} + +void ymMusicSetLowpassFiler(YMMUSIC *_pMus, ymbool bActive) +{ + CYmMusic *pMusic = (CYmMusic*)_pMus; + pMusic->setLowpassFilter(bActive); +} + diff --git a/MCUME_esp32/espsnd/main/StSnd/Ymload.cpp b/MCUME_esp32/espsnd/main/StSnd/Ymload.cpp new file mode 100755 index 0000000..46246da --- /dev/null +++ b/MCUME_esp32/espsnd/main/StSnd/Ymload.cpp @@ -0,0 +1,742 @@ +/*----------------------------------------------------------------------------- + + ST-Sound ( YM files player library ) + + Manage YM file depacking and parsing + +-----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +* ST-Sound, ATARI-ST Music Emulator +* Copyright (c) 1995-1999 Arnaud Carre ( http://leonard.oxg.free.fr ) +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +* +-----------------------------------------------------------------------------*/ + +#include +#include +#include +#include "YmMusic.h" +#include "LZH.H" +extern "C" { + #include "../emuapi.h" +} + +static ymu16 ymVolumeTable[16] = +{ 62,161,265,377,580,774,1155,1575,2260,3088,4570,6233,9330,13187,21220,32767}; + + +static void signeSample(ymu8 *ptr,yms32 size) +{ + + if (size>0) + { + do + { + *ptr++ ^= 0x80; + } + while (--size); + } +} + +char *mstrdup(char *in) +{ + const int size = strlen(in)+1; + char *out = (char*)malloc(size); + if (out) + strcpy(out,in); + return out; +} + +ymu32 readMotorolaDword(ymu8 **ptr) +{ +ymu32 n; +ymu8 *p = *ptr; + + n = (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3]; + p+=4; + *ptr = p; + return n; +} + +ymu16 readMotorolaWord(ymu8 **ptr) +{ +ymu16 n; +ymu8 *p = *ptr; + + n = (p[0]<<8)|p[1]; + p+=2; + *ptr = p; + return n; +} + +ymchar *readNtString(ymchar **ptr) +{ +ymchar *p; + + p = mstrdup(*ptr); + (*ptr) += strlen(*ptr)+1; + return p; +} + +yms32 ReadLittleEndian32(ymu8 *pLittle) +{ + yms32 v = ( (pLittle[0]<<0) | + (pLittle[1]<<8) | + (pLittle[2]<<16) | + (pLittle[3]<<24)); + + return v; +} + +yms32 ReadBigEndian32(ymu8 *pBig) +{ + yms32 v = ( (pBig[0]<<24) | + (pBig[1]<<16) | + (pBig[2]<<8) | + (pBig[3]<<0)); + + return v; +} + +unsigned char *CYmMusic::depackFile(ymu32 checkOriginalSize) + { + lzhHeader_t *pHeader; + ymu8 *pNew; + ymu8 *pSrc; + + pHeader = (lzhHeader_t*)pBigMalloc; + + if ((pHeader->size==0) || // NOTE: Endianness works because value is 0 + (strncmp(pHeader->id,"-lh5-",5))) + { // Le fichier n'est pas compresse, on retourne l'original. + return pBigMalloc; + } + + fileSize = (ymu32)-1; + + if (pHeader->level != 0) // NOTE: Endianness works because value is 0 + { // Compression LH5, header !=0 : Error. + free(pBigMalloc); + pBigMalloc = NULL; + setLastError("LHARC Header must be 0 !"); + return NULL; + } + + fileSize = ReadLittleEndian32((ymu8*)&pHeader->original); + pNew = (ymu8*)malloc(fileSize); + if (!pNew) + { + setLastError("MALLOC Failed !"); + free(pBigMalloc); + pBigMalloc = NULL; + return NULL; + } + + pSrc = pBigMalloc+sizeof(lzhHeader_t)+pHeader->name_lenght; // NOTE: Endianness works because name_lenght is a byte + + pSrc += 2; // skip CRC16 + + ymu32 packedSize = ReadLittleEndian32((ymu8*)&pHeader->packed); + + checkOriginalSize -= ymu32(pSrc - pBigMalloc); + + if (packedSize > checkOriginalSize) + packedSize = checkOriginalSize; + + // Check for corrupted archive + if (packedSize <= checkOriginalSize) + { + // alloc space for depacker and depack data + CLzhDepacker *pDepacker = new CLzhDepacker; + const bool bRet = pDepacker->LzUnpack(pSrc,packedSize,pNew,fileSize); + delete pDepacker; + + if (!bRet) + { // depacking error + setLastError("LH5 Depacking Error !"); + free(pNew); + pNew = NULL; + } + } + else + { + setLastError("LH5 Depacking Error !"); + free(pNew); + pNew = NULL; + } + + // Free up source buffer, whatever depacking fail or success + free(pBigMalloc); + + return pNew; + } + + + + + +static ymint fileSizeGet(FILE *h) + { + ymint size; + ymint old; + + old = ftell(h); + fseek(h,0,SEEK_END); + size = ftell(h); + fseek(h,old,SEEK_SET); + return size; + } + + +ymbool CYmMusic::deInterleave(void) + { + yms32 nextPlane[32]; + ymu8 *pW,*tmpBuff; + yms32 j,k; + + + if (attrib&A_STREAMINTERLEAVED) + { + + tmpBuff = (ymu8*)malloc(nbFrame*streamInc); + if (!tmpBuff) + { + setLastError("Malloc error in deInterleave()\n"); + return YMFALSE; + } + + // Precalcul les offsets. + for (j=0;j0) + { + pDrumTab=(digiDrum_t*)malloc(nbDrum*sizeof(digiDrum_t)); + for (i=0;i>7; + pw++; + } + } + ptr += pDrumTab[i].size; + } + else + { + pDrumTab[i].pData = NULL; + } + } + attrib &= (~A_DRUM4BITS); + } + pSongName = readNtString((char**)&ptr); + pSongAuthor = readNtString((char**)&ptr); + pSongComment = readNtString((char**)&ptr); + songType = YM_V5; + if (id==e_YM6a)//'YM6!') + { + songType = YM_V6; + pSongType = mstrdup("YM 6"); + } + else + { + pSongType = mstrdup("YM 5"); + } + pDataStream = ptr; + streamInc = 16; + pSongPlayer = mstrdup("YM-Chip driver"); + break; + + case e_MIX1://'MIX1': // ATARI Remix digit format. + + if (strncmp((const char*)(pBigMalloc+4),"LeOnArD!",8)) + { + setLastError("Not a valid YM format !"); + return YMFALSE; + } + ptr = pBigMalloc+12; + songType = YM_MIX1; + tmp = readMotorolaDword(&ptr); + setAttrib(0); + if (tmp&1) setAttrib(A_DRUMSIGNED); + sampleSize = readMotorolaDword(&ptr); + nbMixBlock = readMotorolaDword(&ptr); + pMixBlock = (mixBlock_t*)malloc(nbMixBlock*sizeof(mixBlock_t)); + for (i=0;i0) + { + pDrumTab=(digiDrum_t*)malloc(nbDrum*sizeof(digiDrum_t)); + for (i=0;i<(ymint)nbDrum;i++) + { + pDrumTab[i].size = readMotorolaWord(&ptr); + pDrumTab[i].repLen = pDrumTab[i].size; + if (e_YMT2 == id)//('YMT2' == id) + { + pDrumTab[i].repLen = readMotorolaWord(&ptr); // repLen + readMotorolaWord(&ptr); // flag + } + if (pDrumTab[i].repLen>pDrumTab[i].size) + { + pDrumTab[i].repLen = pDrumTab[i].size; + } + + if (pDrumTab[i].size) + { + pDrumTab[i].pData = (ymu8*)malloc(pDrumTab[i].size); + memcpy(pDrumTab[i].pData,ptr,pDrumTab[i].size); + ptr += pDrumTab[i].size; + } + else + { + pDrumTab[i].pData = NULL; + } + } + } + + ymTrackerFreqShift = 0; + if (e_YMT2 == id)//('YMT2' == id) + { + ymTrackerFreqShift = (attrib>>28)&15; + attrib &= 0x0fffffff; + pSongType = mstrdup("YM-T2"); + } + else + { + pSongType = mstrdup("YM-T1"); + } + + + pDataStream = ptr; + ymChip.setClock(ATARI_CLOCK); + + ymTrackerInit(100); // 80% de volume maxi. + streamInc = 16; + setTimeControl(YMTRUE); + pSongPlayer = mstrdup("Universal Tracker"); + break; + + default: + setLastError("Unknow YM format !"); + return YMFALSE; + break; + } + + if (!deInterleave()) + { + return YMFALSE; + } + + return YMTRUE; + } + + +ymbool CYmMusic::checkCompilerTypes() +{ + setLastError("Basic types size are not correct (check ymTypes.h)"); + + if (1 != sizeof(ymu8)) return YMFALSE; + if (1 != sizeof(yms8)) return YMFALSE; + if (1 != sizeof(ymchar)) return YMFALSE; + + if (2 != sizeof(ymu16)) return YMFALSE; + if (2 != sizeof(yms16)) return YMFALSE; + if (4 != sizeof(ymu32)) return YMFALSE; + if (4 != sizeof(yms32)) return YMFALSE; + + if (2 != sizeof(ymsample)) return YMFALSE; + +#ifdef YM_INTEGER_ONLY + if (8 != sizeof(yms64)) return YMFALSE; +#endif + + if (sizeof(ymint) < 4) return YMFALSE; // ymint should be at least 32bits + + setLastError(""); + return YMTRUE; +} + + +ymbool CYmMusic::load(const char *fileName) +{ +FILE *in; + + + stop(); + unLoad(); + + if (!checkCompilerTypes()) + return YMFALSE; + + in = fopen(fileName,"rb"); + if (!in) + { + setLastError("File not Found"); + return YMFALSE; + } + + //--------------------------------------------------- + // Allocation d'un buffer pour lire le fichier. + //--------------------------------------------------- + fileSize = fileSizeGet(in); + pBigMalloc = (unsigned char*)malloc(fileSize); + if (!pBigMalloc) + { + setLastError("MALLOC Error"); + fclose(in); + return YMFALSE; + } + + //--------------------------------------------------- + // Chargement du fichier complet. + //--------------------------------------------------- + if (fread(pBigMalloc,1,fileSize,in)!=(size_t)fileSize) + { + free(pBigMalloc); + setLastError("File is corrupted."); + fclose(in); + return YMFALSE; + } + fclose(in); + + //--------------------------------------------------- + // Transforme les donnes en donnes valides. + //--------------------------------------------------- + pBigMalloc = depackFile(fileSize); + if (!pBigMalloc) + { + return YMFALSE; + } + + //--------------------------------------------------- + // Lecture des donnes YM: + //--------------------------------------------------- + if (!ymDecode()) + { + free(pBigMalloc); + pBigMalloc = NULL; + return YMFALSE; + } + + ymChip.reset(); + bMusicOk = YMTRUE; + bPause = YMFALSE; + return YMTRUE; + } + +ymbool CYmMusic::loadMemory(void *pBlock,ymu32 size) +{ + + + stop(); + unLoad(); + + if (!checkCompilerTypes()) + return YMFALSE; + + //--------------------------------------------------- + // Allocation d'un buffer pour lire le fichier. + //--------------------------------------------------- + fileSize = size; + pBigMalloc = (unsigned char*)emu_Malloc(fileSize); + if (!pBigMalloc) + { + setLastError("MALLOC Error"); + return YMFALSE; + } + + //--------------------------------------------------- + // Chargement du fichier complet. + //--------------------------------------------------- + memcpy(pBigMalloc,pBlock,size); + + //--------------------------------------------------- + // Transforme les donnes en donnes valides. + //--------------------------------------------------- + pBigMalloc = depackFile(size); + if (!pBigMalloc) + { + return YMFALSE; + } + + //--------------------------------------------------- + // Lecture des donnes YM: + //--------------------------------------------------- + if (!ymDecode()) + { + emu_Free(pBigMalloc); + pBigMalloc = NULL; + return YMFALSE; + } + + ymChip.reset(); + bMusicOk = YMTRUE; + bPause = YMFALSE; + return YMTRUE; + } + +void myFree(void **pPtr) +{ + if (*pPtr) free(*pPtr); + *pPtr = NULL; +} + +void CYmMusic::unLoad(void) +{ + + bMusicOk = YMFALSE; + bPause = YMTRUE; + bMusicOver = YMFALSE; + myFree((void**)&pSongName); + myFree((void**)&pSongAuthor); + myFree((void**)&pSongComment); + myFree((void**)&pSongType); + myFree((void**)&pSongPlayer); + myFree((void**)&pBigMalloc); + if (nbDrum>0) + { + for (ymint i=0;i +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " SND Emulator " +#define ROMSDIR "snd" + +#define emu_Init(ROM) {snd_Start(ROM); snd_Init(); } +#define emu_Step(x) { snd_Step(); } +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 16 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,27,27,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,14,28,28,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,20,28,28,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,30,28,28,28,28,28,28,28,28,28, + TAREA_END}; +/* + {25, 6,27,29,224}, // vcxz + {10, 9, 7,22, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +*/ + +const unsigned short keys[] = { + 30,31,32,33,34,35,36,37,38,39, + 0, 20,26, 8,21,23,28,25,12,18,19, + 0, 4, 9, 7,22, 4,11,13,14,15,40, + 25, 6,27,29,224,5,17,16,225,44 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + diff --git a/MCUME_esp32/espsnd/main/font8x8.h b/MCUME_esp32/espsnd/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espsnd/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espsnd/main/go.cpp b/MCUME_esp32/espsnd/main/go.cpp new file mode 100644 index 0000000..0cf8513 --- /dev/null +++ b/MCUME_esp32/espsnd/main/go.cpp @@ -0,0 +1,104 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +#include "sndplay.h" + + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + + + + diff --git a/MCUME_esp32/espsnd/main/go.h b/MCUME_esp32/espsnd/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espsnd/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espsnd/main/ili9341_t3dma.cpp b/MCUME_esp32/espsnd/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espsnd/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espsnd/main/ili9341_t3dma.h b/MCUME_esp32/espsnd/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espsnd/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espsnd/main/iopins.h b/MCUME_esp32/espsnd/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espsnd/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espsnd/main/keyboard_osd.h b/MCUME_esp32/espsnd/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espsnd/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espsnd/main/main.c b/MCUME_esp32/espsnd/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espsnd/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espsnd/main/reSID/.DS_Store b/MCUME_esp32/espsnd/main/reSID/.DS_Store new file mode 100644 index 0000000..3599821 Binary files /dev/null and b/MCUME_esp32/espsnd/main/reSID/.DS_Store differ diff --git a/MCUME_esp32/espsnd/main/reSID/component.mk b/MCUME_esp32/espsnd/main/reSID/component.mk new file mode 100644 index 0000000..757a913 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/component.mk @@ -0,0 +1,12 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . +CPPFLAGS += -Wno-error=delete-non-virtual-dtor \ No newline at end of file diff --git a/MCUME_esp32/espsnd/main/reSID/reSID.cpp b/MCUME_esp32/espsnd/main/reSID/reSID.cpp new file mode 100644 index 0000000..e8362e2 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID.cpp @@ -0,0 +1,64 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ +#include "reSID.h" +#include + +#define AUDIO_BLOCK_SAMPLES 443 +#define SAMPLERATE 22050 +#define CLOCKFREQ 985248 + +void AudioPlaySID::begin(void) +{ + sidptr = &sid; + this->reset(); + setSampleParameters(CLOCKFREQ, SAMPLERATE); + playing = true; +} + +void AudioPlaySID::setSampleParameters(float clockfreq, float samplerate) { + sid.set_sampling_parameters(clockfreq, SAMPLE_FAST, samplerate); + csdelta = round((float)clockfreq / ((float)samplerate / AUDIO_BLOCK_SAMPLES)); +} + +void AudioPlaySID::reset(void) +{ + sid.reset(); +} + +void AudioPlaySID::stop(void) +{ + playing = false; +} + +void AudioPlaySID::update(void * stream, int len) { + // only update if we're playing + if (!playing) return; + + cycle_count delta_t = csdelta; + + sidptr->clock(delta_t, (short int*)stream, len); +} diff --git a/MCUME_esp32/espsnd/main/reSID/reSID.h b/MCUME_esp32/espsnd/main/reSID/reSID.h new file mode 100644 index 0000000..db7021e --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID.h @@ -0,0 +1,54 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ +#include "reSID/sid.h" +#include + +#ifndef play_sid_h_ +#define play_sid_h_ + + +class AudioPlaySID +{ +public: + AudioPlaySID(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + inline void setreg(int ofs, int val) { sid.write(ofs, val); } + inline uint8_t getreg(int ofs) { return sid.read(ofs); } + void reset(void); + void stop(void); + void update(void * stream, int len); + inline bool isPlaying(void) { return playing; } +private: + cycle_count csdelta; + volatile bool playing; + SID sid; + SID* sidptr; +}; + + +#endif diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/.DS_Store b/MCUME_esp32/espsnd/main/reSID/reSID/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espsnd/main/reSID/reSID/.DS_Store differ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/AUTHORS b/MCUME_esp32/espsnd/main/reSID/reSID/AUTHORS new file mode 100755 index 0000000..d22e33d --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/AUTHORS @@ -0,0 +1,3 @@ +Authors of reSID. + +Dag Lem: Designed and programmed complete emulation engine. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/COPYING b/MCUME_esp32/espsnd/main/reSID/reSID/COPYING new file mode 100755 index 0000000..d60c31a --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/ChangeLog b/MCUME_esp32/espsnd/main/reSID/reSID/ChangeLog new file mode 100755 index 0000000..1c7aa47 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/ChangeLog @@ -0,0 +1,313 @@ +2004-06-11 Dag Lem + + * Version 0.16 released. + + * envelope.h (EnvelopeGenerator::clock): Corrected off-by-one + error in check for ADSR delay bug in delta_t cycle interface. + + * filter.cc (Filter::set_chip_model): Initialize filter cutoff + mappings before call to set_chip_model. + + * sid.cc (SID::set_sampling_parameters): Build shifted FIR tables + with samples according to the sampling frequency. + (SID::clock_resample_interpolate): New function; factorized linear + interpolation out from filter convolutions, and made convolutions + vectorizable. + (SID::clock_resample_fast): New function; single convolution, same + accuracy as with interpolation by using more filter tables. + (SID::State, SID::read_state, SID::write_state): Read and write + rate_counter_period and exponential_counter_period. Read sustain + value. + +2003-10-20 Dag Lem + + * Version 0.15 released. + + * envelope.h (EnvelopeGenerator): Added public State enum. + (EnvelopeGenerator::clock): Rate counter is 15 bits, count + rate_period - 1 after wrapping from 0x8000 to 0 in ADSR delay bug. + + * sid.cc, sid.h (SID::State): Added envelope_state. + (SID::State::write_state): Restore register 0x18. + (SID::set_sampling_parameters): Scale resampling filter to avoid + clipping. + (SID::clock_resample): Saturated arithmetics to avoid clipping. + +2002-12-31 Dag Lem + + * Version 0.14 released. + + * envelope.h (EnvelopeGenerator::clock): Corrected one cycle error + in ADSR delay bug. Only load the exponential counter period at the + envelope counter values 255, 93, 54, 26, 14, 6, 0. + + * filter.cc (Filter::set_chip_model): Call set_w0() and set_Q() to + update filter settings. + (Filter::set_w0): Limit cutoff frequency for both 1 cycle and + delta_t cycle filter. + + * filter.h (Filter::clock): Mix in external audio input. + + * sid.cc, sid.h (SID::input): New function; accepts external audio + input sample. + + * spline.h (PointPlotter::operator ()): Clamp negative values to + zero. + + * voice.cc, voice.h: Changed misleading name wave_DC to wave_zero. + + * wave.h (WaveformGenerator::clock): Corrected bug in check for + accumulator bit 19 in noise register shift. + +2002-01-19 Dag Lem + + * Version 0.13 released. + + * configure.in: Replaced AC_TRY_COMPILER with AC_TRY_COMPILE, + removed AC_PROG_RANLIB. + + * envelope.h (EnvelopeGenerator::clock): Reset rate_step on state + change. + + * extfilt.cc (ExternalFilter::set_chip_model): New calculation of + maximum mixer DC level. + + * filter.cc (Filter::set_chip_model): Moved calculation of + voice_DC to voice.cc, corrected calculation of mixer_DC. + + * filter.h (Filter::output): Mixer output is not inverted. + + * sid.cc (SID::set_chip_model): Call voice.set_chip_model instead + of voice.wave.set_chip_model. + + * voice.cc (Voice::Voice): Call set_chip_model. + (Voice::set_chip_model): New function; model both waveform D/A + converter and envelope multiplying D/A converter DC offsets. + + * voice.h (Voice::output): Add both waveform D/A converter and + envelope multiplying D/A converter DC offsets. + + * wave.h (WaveformGenerator::output____): Reverted to output + minimum wave level when no waveform is selected. The maximum and + minimum wave output levels are interchanged in C= Hacking Issue #20. + +2001-10-20 Dag Lem + + * Version 0.12 released. + + * envelope.cc, envelope.h, filter.cc, filter.h, wave.cc, wave.h: + Removed bool usage. This avoids unnecessary conversion to 1/0. + + * filter.cc (Filter::set_chip_model): New function; selects voice + and mixer DC offsets and mapping from the FC registers to filter + cutoff frequency. The voice and mixer DC offsets for the MOS6581 are + calculated from measurements made by Hrsfalvi, Levente in + C= Hacking Issue #20. + (Filter::Filter): Call set_chip_model. + (Filter::f0_6581, Filter::f0_8580): Separate FC mapping tables. + (Filter::f0_points_6581, Filter::f0_points_8580): Separate FC mapping + points. + + * extfilt.cc, extfilt.h (ExternalFilter::set_chip_model): New + function supporting separate DC correction for MOS6581 and MOS8580. + + * sid.cc, sid.h (SID::adjust_sampling_frequency): New function for + on-the-fly adjustment of sampling frequency. + (SID::clock_fast): Corrected sample calculation. + (SID::set_chip_model): Set filter chip model. + (SID::output): Added audio clipping. + (SID::clock, SID::clock_fast, SID::clock_interpolate, + SID::clock_resample): Added sample interleaving. + + * spline.h (interpolate): Generalized to accept repeated points to + introduce points of non-differentiability and discontinuity. + + * wave.h (WaveformGenerator::output____): No selected waveform + yields maximum wave output level. This was found by Hrsfalvi, + Levente in C= Hacking Issue #20. + (WaveformGenerator::clock): Optimized for speed (no division). + +2001-03-10 Dag Lem + + * Version 0.11 released. + + * configure.in: Disable building of shared library by default. + Control inlining with RESID_INLINING (0 or 1) and RESID_INLINE + (blank or "inline"). + + * envelope.h, extfilt.h, filter.h, voice.h, wave.h: inline keyword + in both function declarations and function definitions. + + * samp2src.pl: Beautified Perl code. + + * sid.h, sid.cc: Replaced voice variables with array. Removed + filter variables from SID::State. + (SID::clock): New audio sample generating interface. Three + clocking methods are available; clocking at output sample + frequency, clocking at cycle frequency with linear sample + interpolation, and clocking at cycle frequency with audio + resampling. + (SID::clock_fast, SID::clock_interpolate, SID::clock_resample): + New functions called by SID::clock. + (SID::set_sampling_parameters): New function to set up SID for + sample generation. The FIR table used in SID::clock_resample is + calculated here. + (SID::I0): 0th order modified Bessel function to calculate Kaiser + window. + + * siddefs.h: Control inlining with RESID_INLINING (0 or 1) and + RESID_INLINE (blank or "inline"). Added enum sampling_method. + + * voice.h, voice.cc (Voice::set_sync_source): Moved setting of + sync source from constructor. + + * wave.h, wave.cc (WaveformGenerator::set_sync_source): Moved + setting of sync source from constructor. + +2000-11-22 Dag Lem + + * Version 0.10 released. + + * configure.in, Makefile.am: Use libtool to build library. The + hack to "disable" install is removed. + + * extfilt.h, filter.h: Moved filter stability code from sid.cc. + + * sid.cc (SID::clock): Moved filter stability code to + extfilt.h/filter.h. Don't clock the rest of the chip more + frequently than necessary. + + * wave.cc: Typecast for pedantic (and probably incorrect) + compilers. + +2000-05-18 Dag Lem + + * Version 0.9 released. + + * filter.h (Filter::output): The sum of the filter outputs is no + longer weighted. + +1999-06-24 Dag Lem + + * Version 0.8 released. + + * filter.h, filter.cc, wave.h, wave.cc: Typecasts for pedantic + compilers. + + * filter.h (Filter::clock): Voice 3 is only silenced by voice3off + if it is not routed through the filter. + + * sid.cc (SID::State): Added constructor for proper initalization. + + * spline.h: Inlined template functions to avoid problems at link + time with certain compilers. + +1999-02-25 Dag Lem + + * Version 0.7 released. + + * configure.in: Check whether compiler supports bool. + + * extfilt.h, extfilt.cc: Implementation of C64 filter, external to + the SID chip. + + * filter.h (Filter::clock): Optimized filter routing using a switch. + (Filter::output): Optimized filter mixing using a switch, avoiding + integer division. Corrected sign of filtered output, which is + inverted compared to unfiltered output. + + * filter.cc (Filter::set_w0): Removed use of M_PI and math.h + functions. Use spline table to map fc to w0. + (Filter::fc_default): Return array of FC spline interpolation points. + (Filter::fc_plotter): Return FC spline plotter object. + + * sid.h (SID::enable_external_filter): Enable/disable external + filter. + (SID::fc_default): Return array of FC spline interpolation points. + (SID::fc_plotter): Return FC spline plotter object. + (SID::State, SID::read_state, SID::write_state): Read and write + complete SID state. + + * sid.cc (SID::clock): Age bus value. Clock external filter. + (SID::enable_external_filter): Enable/disable external filter. + + * spline.h: Spline implementation. Used to specify mapping from + the FC register to filter cutoff frequency. + +1998-11-14 Dag Lem + + * Version 0.6 released. + + * configure.in: Allow compilation in a separate directory. + + * wave.h (WaveformGenerator::synchronize): Handle special case when a + sync source is synced itself on the same cycle as its MSB is set + high. + + * sid.cc (SID::clock): Only clock on MSB on/off for hard sync. + +1998-09-06 Dag Lem + + * Version 0.5 released. + + * version.cc (resid_version_string): Version string with C linkage. + + * wave.cc (WaveformGenerator::set_chip_model): Emulation of MOS8580 + combined waveforms. + +1998-08-28 Dag Lem + + * Version 0.4 released. + + * envelope.h (EnvelopeGenerator::clock): Count up to rate_period twice + during ADSR delay bug, and add one extra rate counter step. + + * filter.cc (Filter::bsd_copysign): Renamed copysign function for + compilation on platforms where copysign is implemented as a macro. + +1998-08-23 Dag Lem + + * Version 0.3 released. + + * envelope.h (EnvelopeGenerator::clock): Handle ADSR boundary bug. + + * envelope.cc (EnvelopeGenerator::rate_counter_period, + EnvelopeGenerator::exponential_counter_period): Corrected counter + periods. + + * filter.h (Filter::clock): Optimized for speed (division by shifting). + + * sid.h (SID::clock): New one-cycle optimized overload of the clock() + function. + + * wave.h (WaveformGenerator::output_P_T): Combined waveform + pulse+triangle indexing corrected. + (WaveformGenerator::output_P__): Check for test bit to handle + pulse+test bit samples. + (WaveformGenerator::output): Optimized for speed (inlining). + +1998-07-28 Dag Lem + + * Version 0.2 released. + + * envelope.h (EnvelopeGenerator::clock): Start decay cycle immediately + at envelope counter 0xff. New sustain value is zero if the sustain + level is raised above the current envelope counter value. + (EnvelopeGenerator::step_envelope): Handle ADSR delay bug. + + * envelope.cc (EnvelopeGenerator::rate_counter_period, + EnvelopeGenerator::exponential_counter_period): Corrected counter + periods. + (EnvelopeGenerator::writeCONTROL_REG): Do not modify rate counter. + + * filter.cc (Filter::set_Q): Constrain Q to keep filter stable. + + * sid.h (SID::read, SID::write, SID::bypass_filter): Simplified API + routing register access through the SID class. + + * sid.cc (SID::output): Corrected variable-bit audio output return. + (SID::read, SID::write): Allow read of write only registers. + +1998-06-09 Dag Lem + + * Version 0.1 released. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/INSTALL b/MCUME_esp32/espsnd/main/reSID/reSID/INSTALL new file mode 100755 index 0000000..54caf7c --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/INSTALL @@ -0,0 +1,229 @@ +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/NEWS b/MCUME_esp32/espsnd/main/reSID/reSID/NEWS new file mode 100755 index 0000000..e0ff298 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/NEWS @@ -0,0 +1,271 @@ +Changes in reSID version 0.16 +----------------------------- + +An off-by-one error in the emulation of the ADSR delay bug has been +fixed in the fast version of the envelope clocking. + +An initialization bug in the Filter class which caused floating point +exceptions on some platforms has been fixed. + +Missing fields have been added to SID::State for correct snapshots. + +By building shifted FIR tables with samples according to the sampling +frequency, the resampling code dramatically reduces the computational +effort in the filter convolutions, without any loss of accuracy. The +filter convolutions are now also vectorizable on current hardware. The +implementation builds on ideas by Laurent Ganier. + +The resampling code has been split into two functions, one using +interpolation and a small set of shifted filter tables, and one using +direct lookup and a large set of shifted filter tables. The accuracy +is the same, the difference is that the direct lookup runs has the +potential of running at almost twice the speed (depending on cache +size and memory bandwidth) using approximately 16MB more memory. It is +now possible to run high quality resampling in real time on quite +modest hardware, provided that a vectorizing compiler is used. + + +Changes in reSID version 0.15 +----------------------------- + +An error in the emulation of the ADSR delay bug has been fixed. When +emulation of the ADSR delay bug was introduced in reSID 0.2, the delay +was one cycle too long. One cycle was subtracted from the delay in +reSID 0.4, however unfortunately one rate counter period was added as +well, thus increasing the error. At the time there was no method to +fully synchronize the CPU with envelope 3, so the measurements relied +on averaging. Because of pipelining in the envelope logic the effects +of a write are delayed, and this caused the test code to miss the +target by exactly one rate counter period on a real SID. The current +test code does achieve full synchronization with envelope 3, so this +time the delay should be 100% correct. There are still side effects +caused by pipelining which are not implemented in reSID, however these +effects are not controllable without full synchronization with the +envelope, something which is hard to achieve with envelope 3, and +impossible with envelope 1 and 2. + +The envelope state (ADSR) has been added to the SID state, and the +volume setting is now restored from the SID state. + +Filter scaling and clipping has been added to avoid sample overflows +in the resampling filter. + + +Changes in reSID version 0.14 +----------------------------- + +The SID external audio input is now emulated. This can be used e.g. to +simulate the hack of connecting a resistor from EXT IN to GND to boost +the sample volume on the MOS8580. Calling sid.input(-32768) makes the +MOS8580 sound more or less like the MOS6581 with respect to samples. +The interface could also be used to mix in an external audio signal, +but note that to do this correctly you should really resample the +audio signal to 1MHz first. + +The filter settings are now updated immediately when the chip model is +changed. Earlier the filter cutoff frequency would not change until +the FC registers were updated. + +A one cycle error in the fast version of the envelope clocking has +been fixed. This bug was introduced in reSID 0.13 and could affect the +ADSR delay emulation. + +The exponential counter period is now only loaded at the envelope +counter values 255, 93, 54, 26, 14, 6, 0. The period can be different +for the same envelope counter value, depending on whether the envelope +has been rising (attack -> release) or sinking (decay/release). + +A bug in the fast version of the noise register shift routine has been +corrected. This bug caused too low noise frequency in some cases. + +The filter cutoff frequency is limited to 16kHz to keep the filter stable. + + +Changes in reSID version 0.13 +----------------------------- + +The internal DC levels of the MOS6581 have been double checked and +corrected. The reason for the asymmetric scaling of the voice output +has been found; there is a DC offset from the waveform D/A converter +in addition to the DC offset from the envelope multiplying D/A +converter. No selected waveform (N=P=S=T=0) yields minimum wave output +level again. + +A bug in the fast version of the envelope clocking has been corrected. +This bug could incorrectly invoke the ADSR delay emulation. + + +Changes in reSID version 0.12 +----------------------------- + +A bug causing incorrect sample spacing in the new SAMPLE_FAST sample +calculation has been corrected. + +Audio clipping has been added to guard against sample overflows. + +To support multi-channel sampling, sample interleaving has been added +to the clock() interface. + +To support synchronization with an external timer, an interface for +sample rate adjustment has been added. + +The internal DC levels have been corrected. No selected waveform +(N=P=S=T=0) yields maximum wave output level. Furthermore, each voice +in the MOS6581 independently contributes to the DC level in the mixer, +and the mixer itself has a small DC offset as well. The MOS8580 has no +DC offsets. + +The spline interpolation routine has been generalized to accept +repeated points to introduce points of non-differentiability and +discontinuity. + +A separate mapping from the FC registers to filter cutoff frequency +has been included for the MOS8580, and the mapping for the MOS6581 has +been refined. + + +Changes in reSID version 0.11 +----------------------------- + +A new clock() interface has been added. This function generates audio +samples into a buffer, greatly simplifying the task of writing driver +code for reSID. It also facilitates more advanced audio sample +generation, as described below. + +Three clocking methods are available: clocking at output sample +frequency, clocking at cycle frequency with linear sample +interpolation, and clocking at cycle frequency with audio resampling. + +Clocking at output sample frequency is fast, and yields acceptable +sound quality, except for the SID combined waveforms, which have a +very high frequency content. + +Clocking at cycle frequency with linear sample interpolation is +approximately five to ten times slower at 44.1kHz sampling frequency, +but the sound quality is improved because of the linear sample +interpolation, and because some sampling noise is removed by the SID +external filter, which attenuates signals above 16kHz. + +Finally, clocking at cycle frequency with audio resampling has a work +rate which is independent of the sampling frequency; it is rather +inversely proportional to the percentage of the bandwidth allocated +to the filter transition band. This implies that e.g. with the +transition band starting at ~ 20kHz, it is faster to generate 48kHz +than 44.1kHz samples. + +Audio resampling is the theoretically correct method for sample +generation, and delivers SID sound quality previously unheard of. This +should make connoisseurs nod in appreciation, and for some time to +come it could possibly also make people tear their hair over having to +buy state of the art hardware to handle the obscene workload in real +time. By trading off passband bandwidth for speed, real time +processing is possible on current hardware. A 60% passband bandwidth +is within the reach of reasonably fast machines, while maximum sound +quality at 90% passband bandwidth, requiring four times the processing +power, is not. Yet. + + +Changes in reSID version 0.10 +----------------------------- + +Libtool is now used to build the library. + +To keep the filters stable it is necessary to clock them at above +sample rate. The chip clocking code has been modified to only +"overclock" the filters, not the whole chip. This yields a +considerable speedup without noticeably lowering sound quality. Note +that this is aimed at slow hardware, if possible the 1 cycle clock +interface should be used to eliminate sampling noise. + + +Changes in reSID version 0.9 +---------------------------- + +The sum of the filter outputs is no longer weighted. + + +Changes in reSID version 0.8 +---------------------------- + +voice3off has no effect if voice 3 is routed through the filter. + + +Changes in reSID version 0.7 +---------------------------- + +The audio output filter in the C64, external to the SID chip, has been +modeled. + +The mapping function between the FC register and filter cutoff frequency can +now be specified with spline interpolation points. This facilitates +interactive modification of the mapping function by graphical presentation of +the interpolation curve. The implementation of this novel spline design is +fast and general purpose, and should be well suited for use in other projects +as well. + +Filtered output has been inverted compared to unfiltered output. + +Aging of the bus value obtained when reading write only registers has been +partly implemented. + +To facilitate offline storage the complete state of SID can be read and +written. + + +Changes in reSID version 0.6 +---------------------------- + +A special case in synchronization has been implemented. + +The Autoconf script is cleaned up to allow compilation in a separate directory. + + +Changes in reSID version 0.5 +---------------------------- + +Emulation of MOS8580 combined waveforms. + +Version string resid_version_string provided for e.g. Autoconf tests. +The string has C linkage. + + +Changes in reSID version 0.4 +---------------------------- + +The implementation of the ADSR delay bug has been refined and should now be +cycle exact. + +The patch for VICE has been removed since VICE 0.15 will include reSID support. + + +Changes in reSID version 0.3 +---------------------------- + +The reSID library has changed name from libmos6581.a to libresid.a + +The pulse+sawtooth combined waveform has been corrected. + +Pulse+test bit samples are implemented. + +The envelope rate periods have finally been exactly determined. + +A new SID bug, the ADSR boundary bug, has been discovered and implemented. +This bug makes it possible to step from envelope level 0x00 to 0xff or from +0xff to 0x00 in one step. + +One-cycle optimized overloads of the clock() functions have been implemented +to facilitate sampling at 1MHz. + +The code has been further optimized for speed. + + +Changes in reSID version 0.2 +---------------------------- + +The implementation of the Envelope Generator has been rewritten to handle +the infamous ADSR delay bug. All known envelope related bugs have been +corrected. + +The maximum filter resonance is lowered to keep the filter stable. + +The reSID API has been simplified. Reading write only registers is allowed. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/README b/MCUME_esp32/espsnd/main/reSID/reSID/README new file mode 100755 index 0000000..79da519 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/README @@ -0,0 +1,26 @@ +This is reSID, a reverse engineered software emulation of the MOS6581 SID +(Sound Interface Device). This chip was used in the Commodore 64 computer. + +reSID is free software. See the file COPYING for copying permission. + +reSID is a C++ library containing a complete emulation of the SID chip. +This library can be linked into programs emulating the MOS6510 MPU to +play music made for the Commodore 64 computer. reSID has been successfully +linked into VICE, a full-fledged Commodore 64 emulator, and SIDPLAY, a +popular SID tune player. The VICE home page is: +http://www.viceteam.org/ +A patch for SIDPLAY can be found on the SIDPLAY home page: +http://www.geocities.com/SiliconValley/Lakes/5147/ + +Various SID emulators exist, however reSID should still be of great +interest to Commodore 64 nostalgics. The emulator engine is cycle-based, +emulating the internal operations of the SID chip. SID's audio filter is +modeled as an actual two-integrator-loop biquadratic filter circuit. +The engine has been developed based on available information on SID, sampling +of the OSC3 and ENV3 registers, filter theory, and meticulous testing. +In short, a scientific approach has been taken to model the SID chip as +accurately as possible. + +To our knowledge reSID is by far the most accurate SID emulator ever created. +This comes at a price; what is considered a fairly fast CPU at the time of +this writing is needed to run the emulator. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/THANKS b/MCUME_esp32/espsnd/main/reSID/reSID/THANKS new file mode 100755 index 0000000..824c682 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/THANKS @@ -0,0 +1,87 @@ +reSID was written by Dag Lem. + +The project was started after reading an interview with Bob Yannes, the +head engineer of the SID chip. This interview was made by Andreas Varga, +with additional questions from Linus Walleij. The interview can be found on +the SID Homepage: +http://stud1.tuwien.ac.at/~e9426444/sidpage.html +The reverse engineering of the SID chip would not have been possible without +this interview. + +Also found on the SID Homepage is an examination of the SID noise waveform +written by Asger Alstrup. This article was of great help in reverse +engineering the complete algorithm for the noise waveform. + +Lars Haugseth has been invaluable in the testing of reSID. +In a matter of hours after hearing about my project, he had completed a 6510 +disassembler in Perl. The importance of this was not evident to me until the +next day when he had disassembled the music routine for "Outrun Remix" by +Geir Tjelta, made some changes to it, reassembled, and produced a file +containing 48K of SID register values. +The first tests of reSID were run on this file. +With an exceptional memory of Commodore 64 tunes Lars Haugseth has pointed +out several errors in reSID that are now corrected. + +Morten Rollan and Kre Gunnar Nesheim have provided interesting and insightful +information regarding digital filters. Kre Gunnar Nesheim has also kindly +provided a 1901 monitor and a C64C from his private computer museum. His C64C +was used to measure the MOS8580 filter cutoff characteristics. + +VICE has been an inspiration for this project, and testing of reSID has +been greatly simplified by VICEs -sounddev dump option. Teemu Rantanen +has written support for reSID in VICE, making it possible to choose at runtime +between his excellent SID emulation and, given enough CPU power, the reSID +emulator engine. Tibor Biczo, Andreas Boose, and Andr Fachat have provided +combined waveform samples for 6581 R1, R3, R4, and 8580 R5 SID chips. +The VICE home page is found at: +http://www.viceteam.org/ + +The author of SIDPLAY, Michael Schwendt, has implemented a patch to link +libsidplay with reSID. Using his excellent tune player he has pointed out +several bugs in reSID. He has also provided invaluable information related to +the bugs as basis for further investigation. Most notably, the infamous ADSR +delay bug, of which I was previously unaware, has finally been understood and +is now correctly implemented in reSID. The SIDPLAY home page is found at: +http://www.geocities.com/SiliconValley/Lakes/5147/ + +A bug report from Daniel Lacasse led to the discovery of a previously unknown +SID bug, the ADSR boundary bug. + +Anders degrd has explained aspects of analog electronics and audio +equipment. + +Bob Yannes has patiently answered questions and has provided lots of +technical information on the SID filter. Thank you Bob! + +Julius O. Smith III has provided much of the theoretical basis for the +audio resampling with his "Digital Audio Resampling Home Page": +http://www-ccrma.stanford.edu/~jos/resample/ + +Hrsfalvi, Levente has made a thorough investigation of the DC levels +in the MOS6581 chip. His results are available in C= Hacking Issue #20, +and form the basis of DC corrections in reSID. Levente found that each +voice independently contributes to the DC level in the mixer. Note +that some of the conclusions in the article are incorrect, as the +maximum and minimum voice output levels are interchanged. + +The author of SIDPLAY2, Simon White, has given a lot of feedback on +reSID. Most importantly he found and fixed a bug in the fast clock +version of the ADSR emulation. + +Laurent Ovaert found and fixed a bug in the fast version of the noise +register shift routine. + +Andreas Dehmel has reported all sorts of initialization and overflow +errors. + +Laurent Ganier demonstrated two crucial techniques for vectorizable +filter convolution in a patch. Firstly, he made the filter elements +correspond to the sampling frequency, allowing the linear +interpolation to be factorized out from the convolution. Secondly, he +duplicated elements in the sample ring buffer, achieving contiguous +storage of the samples. The current resampling implementation builds +on these ideas, improving on them by using shifted filter tables for +generalization and accuracy. + +Finally I would like to thank my business partner Stian W. Arnesen for +putting up with all this nonsense. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/TODO b/MCUME_esp32/espsnd/main/reSID/reSID/TODO new file mode 100755 index 0000000..4527dfa --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/TODO @@ -0,0 +1,8 @@ +* Determine the characteristics of the SID filter integrators. Spice + may perhaps be used to simulate the filter circuit. + +* Write documentation. Possibly a paper describing how SID was reverse + engineered. + +* Implement a SID tune player. A PSID player, VSID, is partly + implemented in VICE. diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/envelope.cc b/MCUME_esp32/espsnd/main/reSID/reSID/envelope.cc new file mode 100755 index 0000000..915c4c4 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/envelope.cc @@ -0,0 +1,231 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __ENVELOPE_CC__ +#include "envelope.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +EnvelopeGenerator::EnvelopeGenerator() +{ + reset(); +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void EnvelopeGenerator::reset() +{ + envelope_counter = 0; + + attack = 0; + decay = 0; + sustain = 0; + release = 0; + + gate = 0; + + rate_counter = 0; + exponential_counter = 0; + exponential_counter_period = 1; + + state = RELEASE; + rate_period = rate_counter_period[release]; + hold_zero = true; +} + + +// Rate counter periods are calculated from the Envelope Rates table in +// the Programmer's Reference Guide. The rate counter period is the number of +// cycles between each increment of the envelope counter. +// The rates have been verified by sampling ENV3. +// +// The rate counter is a 16 bit register which is incremented each cycle. +// When the counter reaches a specific comparison value, the envelope counter +// is incremented (attack) or decremented (decay/release) and the +// counter is zeroed. +// +// NB! Sampling ENV3 shows that the calculated values are not exact. +// It may seem like most calculated values have been rounded (.5 is rounded +// down) and 1 has beed added to the result. A possible explanation for this +// is that the SID designers have used the calculated values directly +// as rate counter comparison values, not considering a one cycle delay to +// zero the counter. This would yield an actual period of comparison value + 1. +// +// The time of the first envelope count can not be exactly controlled, except +// possibly by resetting the chip. Because of this we cannot do cycle exact +// sampling and must devise another method to calculate the rate counter +// periods. +// +// The exact rate counter periods can be determined e.g. by counting the number +// of cycles from envelope level 1 to envelope level 129, and dividing the +// number of cycles by 128. CIA1 timer A and B in linked mode can perform +// the cycle count. This is the method used to find the rates below. +// +// To avoid the ADSR delay bug, sampling of ENV3 should be done using +// sustain = release = 0. This ensures that the attack state will not lower +// the current rate counter period. +// +// The ENV3 sampling code below yields a maximum timing error of 14 cycles. +// lda #$01 +// l1: cmp $d41c +// bne l1 +// ... +// lda #$ff +// l2: cmp $d41c +// bne l2 +// +// This yields a maximum error for the calculated rate period of 14/128 cycles. +// The described method is thus sufficient for exact calculation of the rate +// periods. +// +const reg16 EnvelopeGenerator::rate_counter_period[] = { + 9, // 2ms*1.0MHz/256 = 7.81 + 32, // 8ms*1.0MHz/256 = 31.25 + 63, // 16ms*1.0MHz/256 = 62.50 + 95, // 24ms*1.0MHz/256 = 93.75 + 149, // 38ms*1.0MHz/256 = 148.44 + 220, // 56ms*1.0MHz/256 = 218.75 + 267, // 68ms*1.0MHz/256 = 265.63 + 313, // 80ms*1.0MHz/256 = 312.50 + 392, // 100ms*1.0MHz/256 = 390.63 + 977, // 250ms*1.0MHz/256 = 976.56 + 1954, // 500ms*1.0MHz/256 = 1953.13 + 3126, // 800ms*1.0MHz/256 = 3125.00 + 3907, // 1 s*1.0MHz/256 = 3906.25 + 11720, // 3 s*1.0MHz/256 = 11718.75 + 19532, // 5 s*1.0MHz/256 = 19531.25 + 31251 // 8 s*1.0MHz/256 = 31250.00 +}; + + +// For decay and release, the clock to the envelope counter is sequentially +// divided by 1, 2, 4, 8, 16, 30, 1 to create a piece-wise linear approximation +// of an exponential. The exponential counter period is loaded at the envelope +// counter values 255, 93, 54, 26, 14, 6, 0. The period can be different for the +// same envelope counter value, depending on whether the envelope has been +// rising (attack -> release) or sinking (decay/release). +// +// Since it is not possible to reset the rate counter (the test bit has no +// influence on the envelope generator whatsoever) a method must be devised to +// do cycle exact sampling of ENV3 to do the investigation. This is possible +// with knowledge of the rate period for A=0, found above. +// +// The CPU can be synchronized with ENV3 by first synchronizing with the rate +// counter by setting A=0 and wait in a carefully timed loop for the envelope +// counter _not_ to change for 9 cycles. We can then wait for a specific value +// of ENV3 with another timed loop to fully synchronize with ENV3. +// +// At the first period when an exponential counter period larger than one +// is used (decay or relase), one extra cycle is spent before the envelope is +// decremented. The envelope output is then delayed one cycle until the state +// is changed to attack. Now one cycle less will be spent before the envelope +// is incremented, and the situation is normalized. +// The delay is probably caused by the comparison with the exponential counter, +// and does not seem to affect the rate counter. This has been verified by +// timing 256 consecutive complete envelopes with A = D = R = 1, S = 0, using +// CIA1 timer A and B in linked mode. If the rate counter is not affected the +// period of each complete envelope is +// (255 + 162*1 + 39*2 + 28*4 + 12*8 + 8*16 + 6*30)*32 = 756*32 = 32352 +// which corresponds exactly to the timed value divided by the number of +// complete envelopes. +// NB! This one cycle delay is not modeled. + + +// From the sustain levels it follows that both the low and high 4 bits of the +// envelope counter are compared to the 4-bit sustain value. +// This has been verified by sampling ENV3. +// +const reg8 EnvelopeGenerator::sustain_level[] = { + 0x00, + 0x11, + 0x22, + 0x33, + 0x44, + 0x55, + 0x66, + 0x77, + 0x88, + 0x99, + 0xaa, + 0xbb, + 0xcc, + 0xdd, + 0xee, + 0xff, +}; + + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void EnvelopeGenerator::writeCONTROL_REG(reg8 control) +{ + reg8 gate_next = control & 0x01; + + // The rate counter is never reset, thus there will be a delay before the + // envelope counter starts counting up (attack) or down (release). + + // Gate bit on: Start attack, decay, sustain. + if (!gate && gate_next) { + state = ATTACK; + rate_period = rate_counter_period[attack]; + + // Switching to attack state unlocks the zero freeze. + hold_zero = false; + } + // Gate bit off: Start release. + else if (gate && !gate_next) { + state = RELEASE; + rate_period = rate_counter_period[release]; + } + + gate = gate_next; +} + +void EnvelopeGenerator::writeATTACK_DECAY(reg8 attack_decay) +{ + attack = (attack_decay >> 4) & 0x0f; + decay = attack_decay & 0x0f; + if (state == ATTACK) { + rate_period = rate_counter_period[attack]; + } + else if (state == DECAY_SUSTAIN) { + rate_period = rate_counter_period[decay]; + } +} + +void EnvelopeGenerator::writeSUSTAIN_RELEASE(reg8 sustain_release) +{ + sustain = (sustain_release >> 4) & 0x0f; + release = sustain_release & 0x0f; + if (state == RELEASE) { + rate_period = rate_counter_period[release]; + } +} + +reg8 EnvelopeGenerator::readENV() +{ + return output(); +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/envelope.h b/MCUME_esp32/espsnd/main/reSID/reSID/envelope.h new file mode 100755 index 0000000..7fd86ee --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/envelope.h @@ -0,0 +1,309 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __ENVELOPE_H__ +#define __ENVELOPE_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// A 15 bit counter is used to implement the envelope rates, in effect +// dividing the clock to the envelope counter by the currently selected rate +// period. +// In addition, another counter is used to implement the exponential envelope +// decay, in effect further dividing the clock to the envelope counter. +// The period of this counter is set to 1, 2, 4, 8, 16, 30 at the envelope +// counter values 255, 93, 54, 26, 14, 6, respectively. +// ---------------------------------------------------------------------------- +class EnvelopeGenerator +{ +public: + EnvelopeGenerator(); + + enum State { ATTACK, DECAY_SUSTAIN, RELEASE }; + + RESID_INLINE void clock(); + RESID_INLINE void clock(cycle_count delta_t); + void reset(); + + void writeCONTROL_REG(reg8); + void writeATTACK_DECAY(reg8); + void writeSUSTAIN_RELEASE(reg8); + reg8 readENV(); + + // 8-bit envelope output. + RESID_INLINE reg8 output(); + +protected: + reg16 rate_counter; + reg16 rate_period; + reg8 exponential_counter; + reg8 exponential_counter_period; + reg8 envelope_counter; + bool hold_zero; + + reg4 attack; + reg4 decay; + reg4 sustain; + reg4 release; + + reg8 gate; + + State state; + + // Lookup table to convert from attack, decay, or release value to rate + // counter period. + static const reg16 rate_counter_period[]; + + // The 16 selectable sustain levels. + static const reg8 sustain_level[]; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__ENVELOPE_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void EnvelopeGenerator::clock() +{ + // Check for ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can finally be stepped. + // This has been verified by sampling ENV3. + // + if (++rate_counter & 0x8000) { + ++rate_counter &= 0x7fff; + } + + if (rate_counter != rate_period) { + return; + } + + rate_counter = 0; + + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + // + if (state == ATTACK || ++exponential_counter == exponential_counter_period) + { + exponential_counter = 0; + + // Check whether the envelope counter is frozen at zero. + if (hold_zero) { + return; + } + + switch (state) { + case ATTACK: + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + // + ++envelope_counter &= 0xff; + if (envelope_counter == 0xff) { + state = DECAY_SUSTAIN; + rate_period = rate_counter_period[decay]; + } + break; + case DECAY_SUSTAIN: + if (envelope_counter != sustain_level[sustain]) { + --envelope_counter; + } + break; + case RELEASE: + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + // NB! The operation below requires two's complement integer. + // + --envelope_counter &= 0xff; + break; + } + + // Check for change of exponential counter period. + switch (envelope_counter) { + case 0xff: + exponential_counter_period = 1; + break; + case 0x5d: + exponential_counter_period = 2; + break; + case 0x36: + exponential_counter_period = 4; + break; + case 0x1a: + exponential_counter_period = 8; + break; + case 0x0e: + exponential_counter_period = 16; + break; + case 0x06: + exponential_counter_period = 30; + break; + case 0x00: + exponential_counter_period = 1; + + // When the envelope counter is changed to zero, it is frozen at zero. + // This has been verified by sampling ENV3. + hold_zero = true; + break; + } + } +} + + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void EnvelopeGenerator::clock(cycle_count delta_t) +{ + // Check for ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can finally be stepped. + // This has been verified by sampling ENV3. + // + + // NB! This requires two's complement integer. + int rate_step = rate_period - rate_counter; + if (rate_step <= 0) { + rate_step += 0x7fff; + } + + while (delta_t) { + if (delta_t < rate_step) { + rate_counter += delta_t; + if (rate_counter & 0x8000) { + ++rate_counter &= 0x7fff; + } + return; + } + + rate_counter = 0; + delta_t -= rate_step; + + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + // + if (state == ATTACK || ++exponential_counter == exponential_counter_period) + { + exponential_counter = 0; + + // Check whether the envelope counter is frozen at zero. + if (hold_zero) { + rate_step = rate_period; + continue; + } + + switch (state) { + case ATTACK: + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + // + ++envelope_counter &= 0xff; + if (envelope_counter == 0xff) { + state = DECAY_SUSTAIN; + rate_period = rate_counter_period[decay]; + } + break; + case DECAY_SUSTAIN: + if (envelope_counter != sustain_level[sustain]) { + --envelope_counter; + } + break; + case RELEASE: + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + // NB! The operation below requires two's complement integer. + // + --envelope_counter &= 0xff; + break; + } + + // Check for change of exponential counter period. + switch (envelope_counter) { + case 0xff: + exponential_counter_period = 1; + break; + case 0x5d: + exponential_counter_period = 2; + break; + case 0x36: + exponential_counter_period = 4; + break; + case 0x1a: + exponential_counter_period = 8; + break; + case 0x0e: + exponential_counter_period = 16; + break; + case 0x06: + exponential_counter_period = 30; + break; + case 0x00: + exponential_counter_period = 1; + + // When the envelope counter is changed to zero, it is frozen at zero. + // This has been verified by sampling ENV3. + hold_zero = true; + break; + } + } + + rate_step = rate_period; + } +} + + +// ---------------------------------------------------------------------------- +// Read the envelope generator output. +// ---------------------------------------------------------------------------- +RESID_INLINE +reg8 EnvelopeGenerator::output() +{ + return envelope_counter; +} + +#endif // RESID_INLINING || defined(__ENVELOPE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __ENVELOPE_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/extfilt.cc b/MCUME_esp32/espsnd/main/reSID/reSID/extfilt.cc new file mode 100755 index 0000000..e9747f0 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/extfilt.cc @@ -0,0 +1,98 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __EXTFILT_CC__ +#include "extfilt.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +ExternalFilter::ExternalFilter() +{ + reset(); + enable_filter(true); + set_sampling_parameter(15915.6); + //set_chip_model(MOS6581); + {//instead: + mixer_DC = ((((0x800 - 0x380) + 0x800)*0xff*3 - 0xfff*0xff/18) >> 7)*0x0f; + } +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void ExternalFilter::enable_filter(bool enable) +{ + enabled = enable; +} + + +// ---------------------------------------------------------------------------- +// Setup of the external filter sampling parameters. +// ---------------------------------------------------------------------------- +void ExternalFilter::set_sampling_parameter(float pass_freq) +{ + static const float pi = 3.1415926535897932385; + + // Low-pass: R = 10kOhm, C = 1000pF; w0l = 1/RC = 1/(1e4*1e-9) = 100000 + // High-pass: R = 1kOhm, C = 10uF; w0h = 1/RC = 1/(1e3*1e-5) = 100 + // Multiply with 1.048576 to facilitate division by 1 000 000 by right- + // shifting 20 times (2 ^ 20 = 1048576). + + w0hp = 105; + w0lp = (sound_sample) (pass_freq * (2.0 * pi * 1.048576)); + if (w0lp > 104858) + w0lp = 104858; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void ExternalFilter::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + // Maximum mixer DC output level; to be removed if the external + // filter is turned off: ((wave DC + voice DC)*voices + mixer DC)*volume + // See voice.cc and filter.cc for an explanation of the values. + mixer_DC = ((((0x800 - 0x380) + 0x800)*0xff*3 - 0xfff*0xff/18) >> 7)*0x0f; + } + else { + // No DC offsets in the MOS8580. + mixer_DC = 0; + } +} +*/ + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void ExternalFilter::reset() +{ + // State of filter. + Vlp = 0; + Vhp = 0; + Vo = 0; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/extfilt.h b/MCUME_esp32/espsnd/main/reSID/reSID/extfilt.h new file mode 100755 index 0000000..7b67e52 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/extfilt.h @@ -0,0 +1,169 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __EXTFILT_H__ +#define __EXTFILT_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// The audio output stage in a Commodore 64 consists of two STC networks, +// a low-pass filter with 3-dB frequency 16kHz followed by a high-pass +// filter with 3-dB frequency 16Hz (the latter provided an audio equipment +// input impedance of 1kOhm). +// The STC networks are connected with a BJT supposedly meant to act as +// a unity gain buffer, which is not really how it works. A more elaborate +// model would include the BJT, however DC circuit analysis yields BJT +// base-emitter and emitter-base impedances sufficiently low to produce +// additional low-pass and high-pass 3dB-frequencies in the order of hundreds +// of kHz. This calls for a sampling frequency of several MHz, which is far +// too high for practical use. +// ---------------------------------------------------------------------------- +class ExternalFilter +{ +public: + ExternalFilter(); + + void enable_filter(bool enable); + void set_sampling_parameter(float pass_freq); + //void set_chip_model(chip_model model); + + RESID_INLINE void clock(sound_sample Vi); + RESID_INLINE void clock(cycle_count delta_t, sound_sample Vi); + void reset(); + + // Audio output (20 bits). + RESID_INLINE sound_sample output(); + +protected: + // Filter enabled. + bool enabled; + + // Maximum mixer DC offset. + sound_sample mixer_DC; + + // State of filters. + sound_sample Vlp; // lowpass + sound_sample Vhp; // highpass + sound_sample Vo; + + // Cutoff frequencies. + sound_sample w0lp; + sound_sample w0hp; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__EXTFILT_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void ExternalFilter::clock(sound_sample Vi) +{ + // This is handy for testing. + if (!enabled) { + // Remove maximum DC level since there is no filter to do it. + Vlp = Vhp = 0; + Vo = Vi - mixer_DC; + return; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vo = Vlp - Vhp; + // Vlp = Vlp + w0lp*(Vi - Vlp)*delta_t; + // Vhp = Vhp + w0hp*(Vlp - Vhp)*delta_t; + + sound_sample dVlp = (w0lp >> 8)*(Vi - Vlp) >> 12; + sound_sample dVhp = w0hp*(Vlp - Vhp) >> 20; + Vo = Vlp - Vhp; + Vlp += dVlp; + Vhp += dVhp; +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void ExternalFilter::clock(cycle_count delta_t, + sound_sample Vi) +{ + // This is handy for testing. + if (!enabled) { + // Remove maximum DC level since there is no filter to do it. + Vlp = Vhp = 0; + Vo = Vi - mixer_DC; + return; + } + + // Maximum delta cycles for the external filter to work satisfactorily + // is approximately 8. + cycle_count delta_t_flt = 8; + + while (delta_t) { + if (delta_t < delta_t_flt) { + delta_t_flt = delta_t; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vo = Vlp - Vhp; + // Vlp = Vlp + w0lp*(Vi - Vlp)*delta_t; + // Vhp = Vhp + w0hp*(Vlp - Vhp)*delta_t; + + sound_sample dVlp = (w0lp*delta_t_flt >> 8)*(Vi - Vlp) >> 12; + sound_sample dVhp = w0hp*delta_t_flt*(Vlp - Vhp) >> 20; + Vo = Vlp - Vhp; + Vlp += dVlp; + Vhp += dVhp; + + delta_t -= delta_t_flt; + } +} + + +// ---------------------------------------------------------------------------- +// Audio output (19.5 bits). +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample ExternalFilter::output() +{ + return Vo; +} + +#endif // RESID_INLINING || defined(__EXTFILT_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __EXTFILT_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/filter.cc b/MCUME_esp32/espsnd/main/reSID/reSID/filter.cc new file mode 100755 index 0000000..8240b11 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/filter.cc @@ -0,0 +1,325 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __FILTER_CC__ +#include "filter.h" + +RESID_NAMESPACE_START + +// Maximum cutoff frequency is specified as +// FCmax = 2.6e-5/C = 2.6e-5/2200e-12 = 11818. +// +// Measurements indicate a cutoff frequency range of approximately +// 220Hz - 18kHz on a MOS6581 fitted with 470pF capacitors. The function +// mapping FC to cutoff frequency has the shape of the tanh function, with +// a discontinuity at FCHI = 0x80. +// In contrast, the MOS8580 almost perfectly corresponds with the +// specification of a linear mapping from 30Hz to 12kHz. +// +// The mappings have been measured by feeding the SID with an external +// signal since the chip itself is incapable of generating waveforms of +// higher fundamental frequency than 4kHz. It is best to use the bandpass +// output at full resonance to pick out the cutoff frequency at any given +// FC setting. +// +// The mapping function is specified with spline interpolation points and +// the function values are retrieved via table lookup. +// +// NB! Cutoff frequency characteristics may vary, we have modeled two +// particular Commodore 64s. +/* +const fc_point Filter::f0_points_6581[] = +{ + // FC f FCHI FCLO + // ---------------------------- + { 0, 220 }, // 0x00 - repeated end point + { 0, 220 }, // 0x00 + { 128, 230 }, // 0x10 + { 256, 250 }, // 0x20 + { 384, 300 }, // 0x30 + { 512, 420 }, // 0x40 + { 640, 780 }, // 0x50 + { 768, 1600 }, // 0x60 + { 832, 2300 }, // 0x68 + { 896, 3200 }, // 0x70 + { 960, 4300 }, // 0x78 + { 992, 5000 }, // 0x7c + { 1008, 5400 }, // 0x7e + { 1016, 5700 }, // 0x7f + { 1023, 6000 }, // 0x7f 0x07 + { 1023, 6000 }, // 0x7f 0x07 - discontinuity + { 1024, 4600 }, // 0x80 - + { 1024, 4600 }, // 0x80 + { 1032, 4800 }, // 0x81 + { 1056, 5300 }, // 0x84 + { 1088, 6000 }, // 0x88 + { 1120, 6600 }, // 0x8c + { 1152, 7200 }, // 0x90 + { 1280, 9500 }, // 0xa0 + { 1408, 12000 }, // 0xb0 + { 1536, 14500 }, // 0xc0 + { 1664, 16000 }, // 0xd0 + { 1792, 17100 }, // 0xe0 + { 1920, 17700 }, // 0xf0 + { 2047, 18000 }, // 0xff 0x07 + { 2047, 18000 } // 0xff 0x07 - repeated end point +}; +*/ +/* +const fc_point Filter::f0_points_8580[] = +{ + // FC f FCHI FCLO + // ---------------------------- + { 0, 0 }, // 0x00 - repeated end point + { 0, 0 }, // 0x00 + { 128, 800 }, // 0x10 + { 256, 1600 }, // 0x20 + { 384, 2500 }, // 0x30 + { 512, 3300 }, // 0x40 + { 640, 4100 }, // 0x50 + { 768, 4800 }, // 0x60 + { 896, 5600 }, // 0x70 + { 1024, 6500 }, // 0x80 + { 1152, 7500 }, // 0x90 + { 1280, 8400 }, // 0xa0 + { 1408, 9200 }, // 0xb0 + { 1536, 9800 }, // 0xc0 + { 1664, 10500 }, // 0xd0 + { 1792, 11000 }, // 0xe0 + { 1920, 11700 }, // 0xf0 + { 2047, 12500 }, // 0xff 0x07 + { 2047, 12500 } // 0xff 0x07 - repeated end point +}; +*/ + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +Filter::Filter() +{ + fc = 0; + + res = 0; + + filt = 0; + + voice3off = 0; + + hp_bp_lp = 0; + + vol = 0; + + // State of filter. + Vhp = 0; + Vbp = 0; + Vlp = 0; + Vnf = 0; + + enable_filter(true); +/* + // Create mappings from FC to cutoff frequency. + interpolate(f0_points_6581, f0_points_6581 + + sizeof(f0_points_6581)/sizeof(*f0_points_6581) - 1, + PointPlotter(f0_6581), 1.0); + + interpolate(f0_points_8580, f0_points_8580 + + sizeof(f0_points_8580)/sizeof(*f0_points_8580) - 1, + PointPlotter(f0_8580), 1.0); +*/ +// set_chip_model(MOS6581); +{//instead: + mixer_DC = -0xfff*0xff/18 >> 7; + + //f0 = f0_6581; + // f0_points = f0_points_6581; + // f0_count = sizeof(f0_points_6581)/sizeof(*f0_points_6581); + set_w0(); + set_Q(); +} + +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void Filter::enable_filter(bool enable) +{ + enabled = enable; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void Filter::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + // The mixer has a small input DC offset. This is found as follows: + // + // The "zero" output level of the mixer measured on the SID audio + // output pin is 5.50V at zero volume, and 5.44 at full + // volume. This yields a DC offset of (5.44V - 5.50V) = -0.06V. + // + // The DC offset is thus -0.06V/1.05V ~ -1/18 of the dynamic range + // of one voice. See voice.cc for measurement of the dynamic + // range. + + mixer_DC = -0xfff*0xff/18 >> 7; + + f0 = f0_6581; + f0_points = f0_points_6581; + f0_count = sizeof(f0_points_6581)/sizeof(*f0_points_6581); + } + else { + // No DC offsets in the MOS8580. + mixer_DC = 0; + + f0 = f0_8580; + f0_points = f0_points_8580; + f0_count = sizeof(f0_points_8580)/sizeof(*f0_points_8580); + } + + set_w0(); + set_Q(); +} +*/ + + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void Filter::reset() +{ + fc = 0; + + res = 0; + + filt = 0; + + voice3off = 0; + + hp_bp_lp = 0; + + vol = 0; + + // State of filter. + Vhp = 0; + Vbp = 0; + Vlp = 0; + Vnf = 0; + + set_w0(); + set_Q(); +} + + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void Filter::writeFC_LO(reg8 fc_lo) +{ + fc = (fc & 0x7f8) | (fc_lo & 0x007); + set_w0(); +} + +void Filter::writeFC_HI(reg8 fc_hi) +{ + fc = (((unsigned int)fc_hi << 3) & 0x7f8) | (fc & 0x007); + set_w0(); +} + +void Filter::writeRES_FILT(reg8 res_filt) +{ + res = (res_filt >> 4) & 0x0f; + set_Q(); + + filt = res_filt & 0x0f; +} + +void Filter::writeMODE_VOL(reg8 mode_vol) +{ + voice3off = mode_vol & 0x80; + + hp_bp_lp = (mode_vol >> 4) & 0x07; + + vol = mode_vol & 0x0f; +} + +// Set filter cutoff frequency. +void Filter::set_w0() +{ + const float pi = 3.1415926535897932385; + + // Multiply with 1.048576 to facilitate division by 1 000 000 by right- + // shifting 20 times (2 ^ 20 = 1048576). + w0 = static_cast(2.0*pi*f0[fc]*1.048576); + + // Limit f0 to 16kHz to keep 1 cycle filter stable. + const sound_sample w0_max_1 = static_cast(2.0*pi*16000.0*1.048576); + w0_ceil_1 = w0 <= w0_max_1 ? w0 : w0_max_1; + + // Limit f0 to 4kHz to keep delta_t cycle filter stable. + const sound_sample w0_max_dt = static_cast(2.0*pi*4000.0*1.048576); + w0_ceil_dt = w0 <= w0_max_dt ? w0 : w0_max_dt; +} + +// Set filter resonance. +void Filter::set_Q() +{ + // Q is controlled linearly by res. Q has approximate range [0.707, 1.7]. + // As resonance is increased, the filter must be clocked more often to keep + // stable. + + // The coefficient 1024 is dispensed of later by right-shifting 10 times + // (2 ^ 10 = 1024). + _1024_div_Q = static_cast(1024.0/(0.707 + 1.0*res/15.0)); +} + +// ---------------------------------------------------------------------------- +// Spline functions. +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +// Return the array of spline interpolation points used to map the FC register +// to filter cutoff frequency. +// ---------------------------------------------------------------------------- +/* +void Filter::fc_default(const fc_point*& points, int& count) +{ + points = f0_points; + count = f0_count; +} +*/ +// ---------------------------------------------------------------------------- +// Given an array of interpolation points p with n points, the following +// statement will specify a new FC mapping: +// interpolate(p, p + n - 1, filter.fc_plotter(), 1.0); +// Note that the x range of the interpolation points *must* be [0, 2047], +// and that additional end points *must* be present since the end points +// are not interpolated. +// ---------------------------------------------------------------------------- +/* +PointPlotter Filter::fc_plotter() +{ + return PointPlotter(f0); +} +*/ +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/filter.h b/MCUME_esp32/espsnd/main/reSID/reSID/filter.h new file mode 100755 index 0000000..24cc5ce --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/filter.h @@ -0,0 +1,539 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __FILTER_H__ +#define __FILTER_H__ + +#include "siddefs.h" +//#include "spline.h" +#include "filter6581.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// The SID filter is modeled with a two-integrator-loop biquadratic filter, +// which has been confirmed by Bob Yannes to be the actual circuit used in +// the SID chip. +// +// Measurements show that excellent emulation of the SID filter is achieved, +// except when high resonance is combined with high sustain levels. +// In this case the SID op-amps are performing less than ideally and are +// causing some peculiar behavior of the SID filter. This however seems to +// have more effect on the overall amplitude than on the color of the sound. +// +// The theory for the filter circuit can be found in "Microelectric Circuits" +// by Adel S. Sedra and Kenneth C. Smith. +// The circuit is modeled based on the explanation found there except that +// an additional inverter is used in the feedback from the bandpass output, +// allowing the summer op-amp to operate in single-ended mode. This yields +// inverted filter outputs with levels independent of Q, which corresponds with +// the results obtained from a real SID. +// +// We have been able to model the summer and the two integrators of the circuit +// to form components of an IIR filter. +// Vhp is the output of the summer, Vbp is the output of the first integrator, +// and Vlp is the output of the second integrator in the filter circuit. +// +// According to Bob Yannes, the active stages of the SID filter are not really +// op-amps. Rather, simple NMOS inverters are used. By biasing an inverter +// into its region of quasi-linear operation using a feedback resistor from +// input to output, a MOS inverter can be made to act like an op-amp for +// small signals centered around the switching threshold. +// +// Qualified guesses at SID filter schematics are depicted below. +// +// SID filter +// ---------- +// +// ----------------------------------------------- +// | | +// | ---Rq-- | +// | | | | +// | --------------|--R-----[A>--|--R-----[A>--| +// | | | | +// vi -----R1-- | | | +// +// vhp vbp vlp +// +// +// vi - input voltage +// vhp - highpass output +// vbp - bandpass output +// vlp - lowpass output +// [A> - op-amp +// R1 - summer resistor +// Rq - resistor array controlling resonance (4 resistors) +// R - NMOS FET voltage controlled resistor controlling cutoff frequency +// Rs - shunt resitor +// C - capacitor +// +// +// +// SID integrator +// -------------- +// +// V+ +// +// | +// | +// -----| +// | | +// | ||-- +// -|| +// ---C--- ||-> +// | | | +// |---Rs-----------|---- vo +// | | +// | ||-- +// vi ---- -----|------------|| +// | ^ | ||-> +// |___| | | +// ----- | | +// | | | +// |---R2-- | +// | +// R1 V- +// | +// | +// +// Vw +// +// ---------------------------------------------------------------------------- +class Filter +{ +public: + Filter(); + + void enable_filter(bool enable); + // void set_chip_model(chip_model model); + + RESID_INLINE + void clock(sound_sample voice1, sound_sample voice2, sound_sample voice3, + sound_sample ext_in); + RESID_INLINE + void clock(cycle_count delta_t, + sound_sample voice1, sound_sample voice2, sound_sample voice3, + sound_sample ext_in); + void reset(); + + // Write registers. + void writeFC_LO(reg8); + void writeFC_HI(reg8); + void writeRES_FILT(reg8); + void writeMODE_VOL(reg8); + + // SID audio output (16 bits). + sound_sample output(); + + // Spline functions. + // void fc_default(const fc_point*& points, int& count); + // PointPlotter fc_plotter(); + +protected: + void set_w0(); + void set_Q(); + + // Filter enabled. + bool enabled; + + // Filter cutoff frequency. + reg12 fc; + + // Filter resonance. + reg8 res; + + // Selects which inputs to route through filter. + reg8 filt; + + // Switch voice 3 off. + reg8 voice3off; + + // Highpass, bandpass, and lowpass filter modes. + reg8 hp_bp_lp; + + // Output master volume. + reg4 vol; + + // Mixer DC offset. + sound_sample mixer_DC; + + // State of filter. + sound_sample Vhp; // highpass + sound_sample Vbp; // bandpass + sound_sample Vlp; // lowpass + sound_sample Vnf; // not filtered + + // Cutoff frequency, resonance. + sound_sample w0, w0_ceil_1, w0_ceil_dt; + sound_sample _1024_div_Q; + + // Cutoff frequency tables. + // FC is an 11 bit register. + //sound_sample f0_6581[2048]; + //sound_sample f0_8580[2048]; + //sound_sample* f0; + //const sound_sample* f0 = filter6581; + const short* f0 = filter6581; + //const static fc_point f0_points_6581[]; + + //const static fc_point f0_points_8580[]; + //const fc_point* f0_points; + //int f0_count; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__FILTER_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void Filter::clock(sound_sample voice1, + sound_sample voice2, + sound_sample voice3, + sound_sample ext_in) +{ + // Scale each voice down from 20 to 13 bits. + voice1 >>= 7; + voice2 >>= 7; + + // NB! Voice 3 is not silenced by voice3off if it is routed through + // the filter. + if (voice3off && !(filt & 0x04)) { + voice3 = 0; + } + else { + voice3 >>= 7; + } + + ext_in >>= 7; + + // This is handy for testing. + if (!enabled) { + Vnf = voice1 + voice2 + voice3 + ext_in; + Vhp = Vbp = Vlp = 0; + return; + } + + // Route voices into or around filter. + // The code below is expanded to a switch for faster execution. + // (filt1 ? Vi : Vnf) += voice1; + // (filt2 ? Vi : Vnf) += voice2; + // (filt3 ? Vi : Vnf) += voice3; + + sound_sample Vi; + + switch (filt) { + default: + case 0x0: + Vi = 0; + Vnf = voice1 + voice2 + voice3 + ext_in; + break; + case 0x1: + Vi = voice1; + Vnf = voice2 + voice3 + ext_in; + break; + case 0x2: + Vi = voice2; + Vnf = voice1 + voice3 + ext_in; + break; + case 0x3: + Vi = voice1 + voice2; + Vnf = voice3 + ext_in; + break; + case 0x4: + Vi = voice3; + Vnf = voice1 + voice2 + ext_in; + break; + case 0x5: + Vi = voice1 + voice3; + Vnf = voice2 + ext_in; + break; + case 0x6: + Vi = voice2 + voice3; + Vnf = voice1 + ext_in; + break; + case 0x7: + Vi = voice1 + voice2 + voice3; + Vnf = ext_in; + break; + case 0x8: + Vi = ext_in; + Vnf = voice1 + voice2 + voice3; + break; + case 0x9: + Vi = voice1 + ext_in; + Vnf = voice2 + voice3; + break; + case 0xa: + Vi = voice2 + ext_in; + Vnf = voice1 + voice3; + break; + case 0xb: + Vi = voice1 + voice2 + ext_in; + Vnf = voice3; + break; + case 0xc: + Vi = voice3 + ext_in; + Vnf = voice1 + voice2; + break; + case 0xd: + Vi = voice1 + voice3 + ext_in; + Vnf = voice2; + break; + case 0xe: + Vi = voice2 + voice3 + ext_in; + Vnf = voice1; + break; + case 0xf: + Vi = voice1 + voice2 + voice3 + ext_in; + Vnf = 0; + break; + } + + // delta_t = 1 is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vhp = Vbp/Q - Vlp - Vi; + // dVbp = -w0*Vhp*dt; + // dVlp = -w0*Vbp*dt; + + sound_sample dVbp = (w0_ceil_1*Vhp >> 20); + sound_sample dVlp = (w0_ceil_1*Vbp >> 20); + Vbp -= dVbp; + Vlp -= dVlp; + Vhp = (Vbp*_1024_div_Q >> 10) - Vlp - Vi; +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void Filter::clock(cycle_count delta_t, + sound_sample voice1, + sound_sample voice2, + sound_sample voice3, + sound_sample ext_in) +{ + // Scale each voice down from 20 to 13 bits. + voice1 >>= 7; + voice2 >>= 7; + + // NB! Voice 3 is not silenced by voice3off if it is routed through + // the filter. + if (voice3off && !(filt & 0x04)) { + voice3 = 0; + } + else { + voice3 >>= 7; + } + + ext_in >>= 7; + + // Enable filter on/off. + // This is not really part of SID, but is useful for testing. + // On slow CPUs it may be necessary to bypass the filter to lower the CPU + // load. + if (!enabled) { + Vnf = voice1 + voice2 + voice3 + ext_in; + Vhp = Vbp = Vlp = 0; + return; + } + + // Route voices into or around filter. + // The code below is expanded to a switch for faster execution. + // (filt1 ? Vi : Vnf) += voice1; + // (filt2 ? Vi : Vnf) += voice2; + // (filt3 ? Vi : Vnf) += voice3; + + sound_sample Vi; + + switch (filt) { + default: + case 0x0: + Vi = 0; + Vnf = voice1 + voice2 + voice3 + ext_in; + break; + case 0x1: + Vi = voice1; + Vnf = voice2 + voice3 + ext_in; + break; + case 0x2: + Vi = voice2; + Vnf = voice1 + voice3 + ext_in; + break; + case 0x3: + Vi = voice1 + voice2; + Vnf = voice3 + ext_in; + break; + case 0x4: + Vi = voice3; + Vnf = voice1 + voice2 + ext_in; + break; + case 0x5: + Vi = voice1 + voice3; + Vnf = voice2 + ext_in; + break; + case 0x6: + Vi = voice2 + voice3; + Vnf = voice1 + ext_in; + break; + case 0x7: + Vi = voice1 + voice2 + voice3; + Vnf = ext_in; + break; + case 0x8: + Vi = ext_in; + Vnf = voice1 + voice2 + voice3; + break; + case 0x9: + Vi = voice1 + ext_in; + Vnf = voice2 + voice3; + break; + case 0xa: + Vi = voice2 + ext_in; + Vnf = voice1 + voice3; + break; + case 0xb: + Vi = voice1 + voice2 + ext_in; + Vnf = voice3; + break; + case 0xc: + Vi = voice3 + ext_in; + Vnf = voice1 + voice2; + break; + case 0xd: + Vi = voice1 + voice3 + ext_in; + Vnf = voice2; + break; + case 0xe: + Vi = voice2 + voice3 + ext_in; + Vnf = voice1; + break; + case 0xf: + Vi = voice1 + voice2 + voice3 + ext_in; + Vnf = 0; + break; + } + + // Maximum delta cycles for the filter to work satisfactorily under current + // cutoff frequency and resonance constraints is approximately 8. + cycle_count delta_t_flt = 8; + + while (delta_t) { + if (delta_t < delta_t_flt) { + delta_t_flt = delta_t; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. This is done in two operations to avoid integer + // multiplication overflow. + + // Calculate filter outputs. + // Vhp = Vbp/Q - Vlp - Vi; + // dVbp = -w0*Vhp*dt; + // dVlp = -w0*Vbp*dt; + sound_sample w0_delta_t = w0_ceil_dt * delta_t_flt >> 6; + + sound_sample dVbp = (w0_delta_t*Vhp >> 14); + sound_sample dVlp = (w0_delta_t*Vbp >> 14); + Vbp -= dVbp; + Vlp -= dVlp; + Vhp = (Vbp*_1024_div_Q >> 10) - Vlp - Vi; + + delta_t -= delta_t_flt; + } +} + + +// ---------------------------------------------------------------------------- +// SID audio output (20 bits). +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample Filter::output() +{ + // This is handy for testing. + if (!enabled) { + return (Vnf + mixer_DC)*static_cast(vol); + } + + // Mix highpass, bandpass, and lowpass outputs. The sum is not + // weighted, this can be confirmed by sampling sound output for + // e.g. bandpass, lowpass, and bandpass+lowpass from a SID chip. + + // The code below is expanded to a switch for faster execution. + // if (hp) Vf += Vhp; + // if (bp) Vf += Vbp; + // if (lp) Vf += Vlp; + + sound_sample Vf; + + switch (hp_bp_lp) { + default: + case 0x0: + Vf = 0; + break; + case 0x1: + Vf = Vlp; + break; + case 0x2: + Vf = Vbp; + break; + case 0x3: + Vf = Vlp + Vbp; + break; + case 0x4: + Vf = Vhp; + break; + case 0x5: + Vf = Vlp + Vhp; + break; + case 0x6: + Vf = Vbp + Vhp; + break; + case 0x7: + Vf = Vlp + Vbp + Vhp; + break; + } + + // Sum non-filtered and filtered output. + // Multiply the sum with volume. + return (Vnf + Vf + mixer_DC)*static_cast(vol); +} + +#endif // RESID_INLINING || defined(__FILTER_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __FILTER_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/filter6581.h b/MCUME_esp32/espsnd/main/reSID/reSID/filter6581.h new file mode 100755 index 0000000..2f7f796 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/filter6581.h @@ -0,0 +1,131 @@ + +const short filter6581[] = { +0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, +0x00DC, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, +0x00DD, 0x00DD, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, +0x00DE, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, +0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E1, 0x00E1, 0x00E1, +0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, +0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E4, 0x00E4, +0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, +0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, +0x00E7, 0x00E7, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00E9, +0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00EB, +0x00EB, 0x00EB, 0x00EB, 0x00EB, 0x00EB, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00ED, 0x00ED, 0x00ED, +0x00ED, 0x00ED, 0x00ED, 0x00ED, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, +0x00EF, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F2, 0x00F2, 0x00F2, +0x00F2, 0x00F2, 0x00F3, 0x00F3, 0x00F3, 0x00F3, 0x00F3, 0x00F4, 0x00F4, 0x00F4, 0x00F4, 0x00F4, 0x00F5, 0x00F5, 0x00F5, 0x00F5, +0x00F5, 0x00F6, 0x00F6, 0x00F6, 0x00F6, 0x00F7, 0x00F7, 0x00F7, 0x00F7, 0x00F8, 0x00F8, 0x00F8, 0x00F8, 0x00F9, 0x00F9, 0x00F9, +0x00FA, 0x00FA, 0x00FA, 0x00FA, 0x00FB, 0x00FB, 0x00FB, 0x00FB, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FD, 0x00FD, 0x00FD, 0x00FE, +0x00FE, 0x00FE, 0x00FE, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0101, 0x0101, 0x0102, 0x0102, +0x0102, 0x0103, 0x0103, 0x0103, 0x0103, 0x0104, 0x0104, 0x0104, 0x0105, 0x0105, 0x0105, 0x0105, 0x0106, 0x0106, 0x0106, 0x0107, +0x0107, 0x0107, 0x0108, 0x0108, 0x0108, 0x0109, 0x0109, 0x0109, 0x010A, 0x010A, 0x010A, 0x010B, 0x010B, 0x010B, 0x010C, 0x010C, +0x010C, 0x010D, 0x010D, 0x010D, 0x010E, 0x010E, 0x010E, 0x010F, 0x010F, 0x0110, 0x0110, 0x0110, 0x0111, 0x0111, 0x0111, 0x0112, +0x0112, 0x0113, 0x0113, 0x0114, 0x0114, 0x0114, 0x0115, 0x0115, 0x0116, 0x0116, 0x0117, 0x0117, 0x0117, 0x0118, 0x0118, 0x0119, +0x0119, 0x011A, 0x011A, 0x011B, 0x011B, 0x011C, 0x011C, 0x011D, 0x011D, 0x011E, 0x011E, 0x011F, 0x011F, 0x0120, 0x0121, 0x0121, +0x0122, 0x0122, 0x0123, 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0126, 0x0127, 0x0128, 0x0128, 0x0129, 0x012A, 0x012A, 0x012B, +0x012C, 0x012C, 0x012D, 0x012D, 0x012E, 0x012F, 0x012F, 0x0130, 0x0131, 0x0131, 0x0132, 0x0132, 0x0133, 0x0134, 0x0134, 0x0135, +0x0136, 0x0136, 0x0137, 0x0137, 0x0138, 0x0138, 0x0139, 0x013A, 0x013A, 0x013B, 0x013B, 0x013C, 0x013D, 0x013D, 0x013E, 0x013E, +0x013F, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0143, 0x0143, 0x0144, 0x0144, 0x0145, 0x0146, 0x0146, 0x0147, 0x0148, 0x0148, +0x0149, 0x0149, 0x014A, 0x014B, 0x014B, 0x014C, 0x014D, 0x014E, 0x014E, 0x014F, 0x0150, 0x0150, 0x0151, 0x0152, 0x0153, 0x0153, +0x0154, 0x0155, 0x0156, 0x0156, 0x0157, 0x0158, 0x0159, 0x015A, 0x015B, 0x015B, 0x015C, 0x015D, 0x015E, 0x015F, 0x0160, 0x0161, +0x0162, 0x0163, 0x0164, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169, 0x016A, 0x016B, 0x016C, 0x016D, 0x016E, 0x016F, 0x0171, 0x0172, +0x0173, 0x0174, 0x0175, 0x0177, 0x0178, 0x0179, 0x017A, 0x017C, 0x017D, 0x017F, 0x0180, 0x0181, 0x0183, 0x0184, 0x0186, 0x0187, +0x0189, 0x018A, 0x018C, 0x018D, 0x018F, 0x0190, 0x0192, 0x0194, 0x0195, 0x0197, 0x0199, 0x019A, 0x019C, 0x019E, 0x01A0, 0x01A2, +0x01A4, 0x01A5, 0x01A7, 0x01A9, 0x01AB, 0x01AD, 0x01AF, 0x01B1, 0x01B3, 0x01B4, 0x01B6, 0x01B8, 0x01BA, 0x01BC, 0x01BE, 0x01C0, +0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC, 0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x01DE, 0x01E0, +0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC, 0x01EF, 0x01F1, 0x01F3, 0x01F5, 0x01F7, 0x01F9, 0x01FC, 0x01FE, 0x0200, 0x0202, +0x0205, 0x0207, 0x0209, 0x020C, 0x020E, 0x0210, 0x0213, 0x0215, 0x0218, 0x021A, 0x021D, 0x021F, 0x0222, 0x0224, 0x0227, 0x0229, +0x022C, 0x022E, 0x0231, 0x0234, 0x0236, 0x0239, 0x023C, 0x023E, 0x0241, 0x0244, 0x0247, 0x024A, 0x024D, 0x024F, 0x0252, 0x0255, +0x0258, 0x025B, 0x025E, 0x0261, 0x0264, 0x0267, 0x026B, 0x026E, 0x0271, 0x0274, 0x0277, 0x027B, 0x027E, 0x0281, 0x0285, 0x0288, +0x028C, 0x028F, 0x0292, 0x0296, 0x029A, 0x029D, 0x02A1, 0x02A4, 0x02A8, 0x02AC, 0x02B0, 0x02B3, 0x02B7, 0x02BB, 0x02BF, 0x02C3, +0x02C7, 0x02CB, 0x02CF, 0x02D3, 0x02D7, 0x02DB, 0x02DF, 0x02E4, 0x02E8, 0x02EC, 0x02F1, 0x02F5, 0x02F9, 0x02FE, 0x0302, 0x0307, +0x030C, 0x0310, 0x0315, 0x0319, 0x031E, 0x0323, 0x0328, 0x032D, 0x0331, 0x0336, 0x033B, 0x0340, 0x0345, 0x034A, 0x034F, 0x0354, +0x0359, 0x035E, 0x0364, 0x0369, 0x036E, 0x0373, 0x0379, 0x037E, 0x0383, 0x0389, 0x038E, 0x0393, 0x0399, 0x039E, 0x03A4, 0x03AA, +0x03AF, 0x03B5, 0x03BA, 0x03C0, 0x03C6, 0x03CB, 0x03D1, 0x03D7, 0x03DD, 0x03E3, 0x03E9, 0x03EE, 0x03F4, 0x03FA, 0x0400, 0x0406, +0x040C, 0x0412, 0x0418, 0x041F, 0x0425, 0x042B, 0x0431, 0x0437, 0x043E, 0x0444, 0x044A, 0x0451, 0x0457, 0x045D, 0x0464, 0x046A, +0x0471, 0x0477, 0x047E, 0x0484, 0x048B, 0x0491, 0x0498, 0x049F, 0x04A5, 0x04AC, 0x04B3, 0x04B9, 0x04C0, 0x04C7, 0x04CE, 0x04D5, +0x04DB, 0x04E2, 0x04E9, 0x04F0, 0x04F7, 0x04FE, 0x0505, 0x050C, 0x0513, 0x051A, 0x0521, 0x0529, 0x0530, 0x0537, 0x053E, 0x0545, +0x054D, 0x0554, 0x055B, 0x0562, 0x056A, 0x0571, 0x0578, 0x0580, 0x0587, 0x058F, 0x0596, 0x059E, 0x05A5, 0x05AD, 0x05B4, 0x05BC, +0x05C3, 0x05CB, 0x05D3, 0x05DA, 0x05E2, 0x05EA, 0x05F1, 0x05F9, 0x0601, 0x0609, 0x0610, 0x0618, 0x0620, 0x0628, 0x0630, 0x0638, +0x0640, 0x0647, 0x0650, 0x0658, 0x0660, 0x0669, 0x0671, 0x067A, 0x0683, 0x068C, 0x0695, 0x069F, 0x06A8, 0x06B1, 0x06BB, 0x06C5, +0x06CF, 0x06D9, 0x06E3, 0x06ED, 0x06F7, 0x0701, 0x070C, 0x0716, 0x0721, 0x072C, 0x0736, 0x0741, 0x074C, 0x0757, 0x0762, 0x076E, +0x0779, 0x0784, 0x0790, 0x079B, 0x07A7, 0x07B2, 0x07BE, 0x07CA, 0x07D5, 0x07E1, 0x07ED, 0x07F9, 0x0805, 0x0811, 0x081D, 0x0829, +0x0835, 0x0842, 0x084E, 0x085A, 0x0866, 0x0873, 0x087F, 0x088B, 0x0898, 0x08A4, 0x08B1, 0x08BD, 0x08CA, 0x08D6, 0x08E3, 0x08EF, +0x08FC, 0x0908, 0x0915, 0x0921, 0x092E, 0x093B, 0x0947, 0x0954, 0x0961, 0x096E, 0x097B, 0x0988, 0x0995, 0x09A2, 0x09AF, 0x09BC, +0x09CA, 0x09D7, 0x09E4, 0x09F2, 0x09FF, 0x0A0D, 0x0A1A, 0x0A28, 0x0A36, 0x0A43, 0x0A51, 0x0A5F, 0x0A6D, 0x0A7B, 0x0A88, 0x0A96, +0x0AA5, 0x0AB3, 0x0AC1, 0x0ACF, 0x0ADD, 0x0AEB, 0x0AFA, 0x0B08, 0x0B17, 0x0B25, 0x0B34, 0x0B42, 0x0B51, 0x0B5F, 0x0B6E, 0x0B7D, +0x0B8C, 0x0B9B, 0x0BAA, 0x0BB9, 0x0BC8, 0x0BD7, 0x0BE6, 0x0BF5, 0x0C04, 0x0C13, 0x0C23, 0x0C32, 0x0C41, 0x0C51, 0x0C60, 0x0C70, +0x0C80, 0x0C8F, 0x0C9F, 0x0CAF, 0x0CBE, 0x0CCE, 0x0CDE, 0x0CEE, 0x0CFE, 0x0D0E, 0x0D1E, 0x0D2E, 0x0D3F, 0x0D4F, 0x0D5F, 0x0D6F, +0x0D80, 0x0D90, 0x0DA1, 0x0DB1, 0x0DC2, 0x0DD2, 0x0DE3, 0x0DF4, 0x0E05, 0x0E15, 0x0E26, 0x0E37, 0x0E48, 0x0E59, 0x0E6A, 0x0E7B, +0x0E8D, 0x0E9E, 0x0EAF, 0x0EC0, 0x0ED2, 0x0EE3, 0x0EF5, 0x0F06, 0x0F18, 0x0F29, 0x0F3B, 0x0F4D, 0x0F5E, 0x0F70, 0x0F82, 0x0F94, +0x0FA6, 0x0FB8, 0x0FCA, 0x0FDC, 0x0FEE, 0x1000, 0x1012, 0x1025, 0x1037, 0x1049, 0x105C, 0x106E, 0x1081, 0x1093, 0x10A6, 0x10B9, +0x10CC, 0x10DE, 0x10F2, 0x1105, 0x1119, 0x112D, 0x1141, 0x1156, 0x116B, 0x1180, 0x1195, 0x11AB, 0x11C0, 0x11D6, 0x11EC, 0x1203, +0x1219, 0x122F, 0x1246, 0x125D, 0x1273, 0x128A, 0x12A1, 0x12B8, 0x12CF, 0x12E6, 0x12FD, 0x1314, 0x132B, 0x1343, 0x135A, 0x1371, +0x1388, 0x139E, 0x13B5, 0x13CC, 0x13E4, 0x13FB, 0x1413, 0x142B, 0x1443, 0x145C, 0x1475, 0x148E, 0x14A9, 0x14C3, 0x14DF, 0x14FB, +0x1518, 0x1536, 0x1558, 0x157C, 0x15A3, 0x15CA, 0x15F3, 0x161B, 0x1644, 0x166C, 0x1696, 0x16C0, 0x16EB, 0x1717, 0x1743, 0x1770, +0x11F8, 0x1212, 0x122C, 0x1247, 0x1260, 0x1279, 0x1292, 0x12A9, 0x12C0, 0x12D5, 0x12EB, 0x1300, 0x1315, 0x132A, 0x133F, 0x1354, +0x1369, 0x137D, 0x1392, 0x13A6, 0x13BB, 0x13CF, 0x13E4, 0x13F8, 0x140D, 0x1421, 0x1436, 0x144A, 0x145F, 0x1474, 0x1489, 0x149E, +0x14B4, 0x14C9, 0x14DF, 0x14F4, 0x150A, 0x1520, 0x1536, 0x154D, 0x1563, 0x1579, 0x158F, 0x15A6, 0x15BC, 0x15D3, 0x15E9, 0x1600, +0x1616, 0x162C, 0x1643, 0x1659, 0x166F, 0x1685, 0x169B, 0x16B1, 0x16C7, 0x16DD, 0x16F2, 0x1707, 0x171D, 0x1732, 0x1746, 0x175B, +0x1770, 0x1784, 0x1798, 0x17AC, 0x17BF, 0x17D3, 0x17E6, 0x17F9, 0x180D, 0x1820, 0x1832, 0x1845, 0x1858, 0x186A, 0x187D, 0x188F, +0x18A2, 0x18B4, 0x18C6, 0x18D9, 0x18EB, 0x18FD, 0x190F, 0x1922, 0x1934, 0x1946, 0x1958, 0x196B, 0x197D, 0x1990, 0x19A2, 0x19B5, +0x19C8, 0x19DA, 0x19ED, 0x1A00, 0x1A13, 0x1A26, 0x1A39, 0x1A4B, 0x1A5E, 0x1A71, 0x1A84, 0x1A97, 0x1AAA, 0x1ABD, 0x1AD0, 0x1AE3, +0x1AF6, 0x1B09, 0x1B1C, 0x1B2F, 0x1B41, 0x1B54, 0x1B67, 0x1B7A, 0x1B8C, 0x1B9F, 0x1BB1, 0x1BC4, 0x1BD6, 0x1BE9, 0x1BFB, 0x1C0D, +0x1C20, 0x1C32, 0x1C44, 0x1C56, 0x1C68, 0x1C7A, 0x1C8C, 0x1C9E, 0x1CB0, 0x1CC2, 0x1CD4, 0x1CE6, 0x1CF8, 0x1D0A, 0x1D1C, 0x1D2E, +0x1D40, 0x1D51, 0x1D63, 0x1D75, 0x1D87, 0x1D99, 0x1DAB, 0x1DBD, 0x1DCE, 0x1DE0, 0x1DF2, 0x1E04, 0x1E16, 0x1E27, 0x1E39, 0x1E4B, +0x1E5D, 0x1E6E, 0x1E80, 0x1E92, 0x1EA4, 0x1EB5, 0x1EC7, 0x1ED9, 0x1EEA, 0x1EFC, 0x1F0E, 0x1F20, 0x1F31, 0x1F43, 0x1F55, 0x1F66, +0x1F78, 0x1F8A, 0x1F9C, 0x1FAD, 0x1FBF, 0x1FD1, 0x1FE2, 0x1FF4, 0x2006, 0x2017, 0x2029, 0x203B, 0x204D, 0x205E, 0x2070, 0x2082, +0x2094, 0x20A5, 0x20B7, 0x20C9, 0x20DA, 0x20EC, 0x20FE, 0x2110, 0x2122, 0x2133, 0x2145, 0x2157, 0x2169, 0x217B, 0x218C, 0x219E, +0x21B0, 0x21C2, 0x21D4, 0x21E6, 0x21F8, 0x220A, 0x221B, 0x222D, 0x223F, 0x2251, 0x2263, 0x2275, 0x2287, 0x2299, 0x22AB, 0x22BD, +0x22CF, 0x22E1, 0x22F4, 0x2306, 0x2318, 0x232A, 0x233C, 0x234E, 0x2360, 0x2373, 0x2385, 0x2397, 0x23A9, 0x23BC, 0x23CE, 0x23E0, +0x23F3, 0x2405, 0x2417, 0x242A, 0x243C, 0x244F, 0x2461, 0x2474, 0x2486, 0x2499, 0x24AB, 0x24BE, 0x24D1, 0x24E3, 0x24F6, 0x2509, +0x251C, 0x252E, 0x2541, 0x2554, 0x2567, 0x257A, 0x258C, 0x259F, 0x25B2, 0x25C5, 0x25D8, 0x25EB, 0x25FE, 0x2611, 0x2624, 0x2637, +0x264A, 0x265E, 0x2671, 0x2684, 0x2697, 0x26AA, 0x26BD, 0x26D1, 0x26E4, 0x26F7, 0x270A, 0x271E, 0x2731, 0x2744, 0x2758, 0x276B, +0x277E, 0x2792, 0x27A5, 0x27B9, 0x27CC, 0x27E0, 0x27F3, 0x2806, 0x281A, 0x282D, 0x2841, 0x2855, 0x2868, 0x287C, 0x288F, 0x28A3, +0x28B6, 0x28CA, 0x28DE, 0x28F1, 0x2905, 0x2918, 0x292C, 0x2940, 0x2953, 0x2967, 0x297B, 0x298E, 0x29A2, 0x29B6, 0x29CA, 0x29DD, +0x29F1, 0x2A05, 0x2A18, 0x2A2C, 0x2A40, 0x2A54, 0x2A67, 0x2A7B, 0x2A8F, 0x2AA3, 0x2AB7, 0x2ACA, 0x2ADE, 0x2AF2, 0x2B06, 0x2B19, +0x2B2D, 0x2B41, 0x2B55, 0x2B69, 0x2B7C, 0x2B90, 0x2BA4, 0x2BB8, 0x2BCC, 0x2BDF, 0x2BF3, 0x2C07, 0x2C1B, 0x2C2E, 0x2C42, 0x2C56, +0x2C6A, 0x2C7E, 0x2C91, 0x2CA5, 0x2CB9, 0x2CCD, 0x2CE0, 0x2CF4, 0x2D08, 0x2D1C, 0x2D2F, 0x2D43, 0x2D57, 0x2D6B, 0x2D7E, 0x2D92, +0x2DA6, 0x2DB9, 0x2DCD, 0x2DE1, 0x2DF4, 0x2E08, 0x2E1C, 0x2E2F, 0x2E43, 0x2E56, 0x2E6A, 0x2E7E, 0x2E91, 0x2EA5, 0x2EB8, 0x2ECC, +0x2EE0, 0x2EF3, 0x2F07, 0x2F1A, 0x2F2E, 0x2F42, 0x2F56, 0x2F6A, 0x2F7E, 0x2F92, 0x2FA6, 0x2FBA, 0x2FCE, 0x2FE2, 0x2FF6, 0x300B, +0x301F, 0x3033, 0x3048, 0x305C, 0x3070, 0x3085, 0x3099, 0x30AE, 0x30C3, 0x30D7, 0x30EC, 0x3100, 0x3115, 0x312A, 0x313E, 0x3153, +0x3168, 0x317D, 0x3191, 0x31A6, 0x31BB, 0x31D0, 0x31E5, 0x31F9, 0x320E, 0x3223, 0x3238, 0x324D, 0x3262, 0x3276, 0x328B, 0x32A0, +0x32B5, 0x32CA, 0x32DF, 0x32F3, 0x3308, 0x331D, 0x3332, 0x3346, 0x335B, 0x3370, 0x3384, 0x3399, 0x33AE, 0x33C2, 0x33D7, 0x33EB, +0x3400, 0x3414, 0x3429, 0x343D, 0x3452, 0x3466, 0x347A, 0x348F, 0x34A3, 0x34B7, 0x34CB, 0x34DF, 0x34F3, 0x3507, 0x351B, 0x352F, +0x3543, 0x3557, 0x356B, 0x357F, 0x3592, 0x35A6, 0x35B9, 0x35CD, 0x35E0, 0x35F3, 0x3607, 0x361A, 0x362D, 0x3640, 0x3653, 0x3666, +0x3679, 0x368C, 0x369E, 0x36B1, 0x36C3, 0x36D6, 0x36E8, 0x36FA, 0x370D, 0x371F, 0x3731, 0x3743, 0x3754, 0x3766, 0x3778, 0x3789, +0x379B, 0x37AC, 0x37BD, 0x37CF, 0x37E0, 0x37F1, 0x3801, 0x3812, 0x3823, 0x3833, 0x3844, 0x3854, 0x3864, 0x3874, 0x3884, 0x3894, +0x38A4, 0x38B3, 0x38C3, 0x38D2, 0x38E1, 0x38F0, 0x3900, 0x390F, 0x391D, 0x392C, 0x393B, 0x394A, 0x3958, 0x3967, 0x3975, 0x3983, +0x3992, 0x39A0, 0x39AE, 0x39BC, 0x39CA, 0x39D7, 0x39E5, 0x39F3, 0x3A00, 0x3A0E, 0x3A1B, 0x3A29, 0x3A36, 0x3A43, 0x3A50, 0x3A5D, +0x3A6A, 0x3A77, 0x3A84, 0x3A91, 0x3A9D, 0x3AAA, 0x3AB7, 0x3AC3, 0x3AD0, 0x3ADC, 0x3AE8, 0x3AF4, 0x3B01, 0x3B0D, 0x3B19, 0x3B25, +0x3B31, 0x3B3D, 0x3B49, 0x3B54, 0x3B60, 0x3B6C, 0x3B77, 0x3B83, 0x3B8E, 0x3B9A, 0x3BA5, 0x3BB1, 0x3BBC, 0x3BC7, 0x3BD3, 0x3BDE, +0x3BE9, 0x3BF4, 0x3BFF, 0x3C0A, 0x3C15, 0x3C20, 0x3C2B, 0x3C36, 0x3C41, 0x3C4C, 0x3C56, 0x3C61, 0x3C6C, 0x3C76, 0x3C81, 0x3C8C, +0x3C96, 0x3CA1, 0x3CAB, 0x3CB6, 0x3CC0, 0x3CCB, 0x3CD5, 0x3CDF, 0x3CEA, 0x3CF4, 0x3CFF, 0x3D09, 0x3D13, 0x3D1D, 0x3D28, 0x3D32, +0x3D3C, 0x3D46, 0x3D50, 0x3D5B, 0x3D65, 0x3D6F, 0x3D79, 0x3D83, 0x3D8D, 0x3D97, 0x3DA1, 0x3DAC, 0x3DB6, 0x3DC0, 0x3DCA, 0x3DD4, +0x3DDE, 0x3DE8, 0x3DF2, 0x3DFC, 0x3E06, 0x3E10, 0x3E1A, 0x3E24, 0x3E2F, 0x3E39, 0x3E43, 0x3E4D, 0x3E57, 0x3E61, 0x3E6B, 0x3E75, +0x3E80, 0x3E8A, 0x3E94, 0x3E9E, 0x3EA8, 0x3EB2, 0x3EBC, 0x3EC6, 0x3ED0, 0x3EDA, 0x3EE4, 0x3EEE, 0x3EF8, 0x3F02, 0x3F0C, 0x3F16, +0x3F20, 0x3F29, 0x3F33, 0x3F3D, 0x3F47, 0x3F51, 0x3F5A, 0x3F64, 0x3F6E, 0x3F77, 0x3F81, 0x3F8B, 0x3F94, 0x3F9E, 0x3FA7, 0x3FB1, +0x3FBA, 0x3FC4, 0x3FCD, 0x3FD7, 0x3FE0, 0x3FEA, 0x3FF3, 0x3FFC, 0x4006, 0x400F, 0x4018, 0x4021, 0x402B, 0x4034, 0x403D, 0x4046, +0x404F, 0x4058, 0x4061, 0x406A, 0x4074, 0x407D, 0x4085, 0x408E, 0x4097, 0x40A0, 0x40A9, 0x40B2, 0x40BB, 0x40C4, 0x40CC, 0x40D5, +0x40DE, 0x40E6, 0x40EF, 0x40F8, 0x4100, 0x4109, 0x4111, 0x411A, 0x4122, 0x412B, 0x4133, 0x413C, 0x4144, 0x414C, 0x4155, 0x415D, +0x4165, 0x416D, 0x4176, 0x417E, 0x4186, 0x418E, 0x4196, 0x419E, 0x41A6, 0x41AE, 0x41B6, 0x41BE, 0x41C6, 0x41CE, 0x41D5, 0x41DD, +0x41E5, 0x41ED, 0x41F4, 0x41FC, 0x4204, 0x420B, 0x4213, 0x421A, 0x4222, 0x4229, 0x4231, 0x4238, 0x4240, 0x4247, 0x424E, 0x4255, +0x425D, 0x4264, 0x426B, 0x4272, 0x4279, 0x4280, 0x4287, 0x428E, 0x4295, 0x429C, 0x42A3, 0x42AA, 0x42B1, 0x42B7, 0x42BE, 0x42C5, +0x42CC, 0x42D2, 0x42D9, 0x42DF, 0x42E6, 0x42EC, 0x42F3, 0x42F9, 0x42FF, 0x4306, 0x430C, 0x4312, 0x4318, 0x431E, 0x4324, 0x432A, +0x4330, 0x4336, 0x433C, 0x4342, 0x4348, 0x434E, 0x4354, 0x4359, 0x435F, 0x4365, 0x436A, 0x4370, 0x4376, 0x437B, 0x4381, 0x4386, +0x438C, 0x4391, 0x4396, 0x439C, 0x43A1, 0x43A6, 0x43AC, 0x43B1, 0x43B6, 0x43BB, 0x43C0, 0x43C5, 0x43CA, 0x43CF, 0x43D4, 0x43D9, +0x43DE, 0x43E3, 0x43E8, 0x43ED, 0x43F2, 0x43F6, 0x43FB, 0x4400, 0x4405, 0x4409, 0x440E, 0x4413, 0x4417, 0x441C, 0x4420, 0x4425, +0x4429, 0x442E, 0x4432, 0x4437, 0x443B, 0x443F, 0x4444, 0x4448, 0x444C, 0x4451, 0x4455, 0x4459, 0x445D, 0x4462, 0x4466, 0x446A, +0x446E, 0x4472, 0x4476, 0x447B, 0x447F, 0x4483, 0x4487, 0x448B, 0x448F, 0x4493, 0x4497, 0x449B, 0x449F, 0x44A2, 0x44A6, 0x44AA, +0x44AE, 0x44B2, 0x44B6, 0x44BA, 0x44BD, 0x44C1, 0x44C5, 0x44C9, 0x44CC, 0x44D0, 0x44D4, 0x44D8, 0x44DB, 0x44DF, 0x44E3, 0x44E6, +0x44EA, 0x44EE, 0x44F1, 0x44F5, 0x44F9, 0x44FC, 0x4500, 0x4503, 0x4507, 0x450B, 0x450E, 0x4512, 0x4515, 0x4519, 0x451C, 0x4520, +0x4524, 0x4527, 0x452B, 0x452E, 0x4531, 0x4535, 0x4538, 0x453C, 0x453F, 0x4542, 0x4545, 0x4549, 0x454C, 0x454F, 0x4552, 0x4555, +0x4559, 0x455C, 0x455F, 0x4562, 0x4565, 0x4568, 0x456B, 0x456E, 0x4571, 0x4574, 0x4577, 0x4579, 0x457C, 0x457F, 0x4582, 0x4585, +0x4588, 0x458A, 0x458D, 0x4590, 0x4592, 0x4595, 0x4598, 0x459A, 0x459D, 0x45A0, 0x45A2, 0x45A5, 0x45A7, 0x45AA, 0x45AC, 0x45AF, +0x45B1, 0x45B4, 0x45B6, 0x45B8, 0x45BB, 0x45BD, 0x45C0, 0x45C2, 0x45C4, 0x45C7, 0x45C9, 0x45CB, 0x45CD, 0x45D0, 0x45D2, 0x45D4, +0x45D6, 0x45D9, 0x45DB, 0x45DD, 0x45DF, 0x45E1, 0x45E3, 0x45E6, 0x45E8, 0x45EA, 0x45EC, 0x45EE, 0x45F0, 0x45F2, 0x45F4, 0x45F6, +0x45F8, 0x45FA, 0x45FC, 0x45FE, 0x4600, 0x4602, 0x4604, 0x4606, 0x4608, 0x460A, 0x460C, 0x460E, 0x4610, 0x4612, 0x4614, 0x4615, +0x4617, 0x4619, 0x461B, 0x461D, 0x461F, 0x4621, 0x4622, 0x4624, 0x4626, 0x4628, 0x462A, 0x462C, 0x462D, 0x462F, 0x4631, 0x4633, +0x4635, 0x4637, 0x4638, 0x463A, 0x463C, 0x463E, 0x463F, 0x4641, 0x4643, 0x4645, 0x4647, 0x4648, 0x464A, 0x464C, 0x464E, 0x464F, +}; diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/pot.cc b/MCUME_esp32/espsnd/main/reSID/reSID/pot.cc new file mode 100755 index 0000000..25ad24e --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/pot.cc @@ -0,0 +1,30 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "pot.h" + +RESID_NAMESPACE_START + +reg8 Potentiometer::readPOT() +{ + // NB! Not modeled. + return 0xff; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/pot.h b/MCUME_esp32/espsnd/main/reSID/reSID/pot.h new file mode 100755 index 0000000..5bed353 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/pot.h @@ -0,0 +1,35 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __POT_H__ +#define __POT_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +class Potentiometer +{ +public: + reg8 readPOT(); +}; + +RESID_NAMESPACE_STOP + +#endif diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/sid.cc b/MCUME_esp32/espsnd/main/reSID/reSID/sid.cc new file mode 100755 index 0000000..de73cce --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/sid.cc @@ -0,0 +1,771 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "sid.h" +#include + +RESID_NAMESPACE_START + +// Resampling constants. +// The error in interpolated lookup is bounded by 1.234/L^2, +// while the error in non-interpolated lookup is bounded by +// 0.7854/L + 0.4113/L^2, see +// http://www-ccrma.stanford.edu/~jos/resample/Choice_Table_Size.html +// For a resolution of 16 bits this yields L >= 285 and L >= 51473, +// respectively. +const int SID::FIR_N = 125; +const int SID::FIR_RES_INTERPOLATE = 285; +const int SID::FIR_RES_FAST = 51473; +const int SID::FIR_SHIFT = 15; +const int SID::RINGSIZE = 16384; + +// Fixpoint constants (16.16 bits). +const int SID::FIXP_SHIFT = 16; +const int SID::FIXP_MASK = 0xffff; + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +SID::SID() +{ + + voice[0].set_sync_source(&voice[2]); + voice[1].set_sync_source(&voice[0]); + voice[2].set_sync_source(&voice[1]); + + set_sampling_parameters(985248, SAMPLE_FAST, 22050); + + bus_value = 0; + bus_value_ttl = 0; + + ext_in = 0; + +} +/* +void SID::printFilter(void){ + Serial.print(filter.f0_count); + for (int i=0; i< 2048; i++) { + if (i % 16==0) Serial.println(); + Serial.printf("0x%04X, ",filter.f0_6581[i]); + } +} +*/ +// ---------------------------------------------------------------------------- +// Destructor. +// ---------------------------------------------------------------------------- +SID::~SID() +{ +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void SID::set_chip_model(chip_model model) +{ + voice[0].set_chip_model(model); + voice[1].set_chip_model(model); + voice[2].set_chip_model(model); + + filter.set_chip_model(model); + extfilt.set_chip_model(model); +} +*/ + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void SID::reset() +{ + + voice[0].reset(); + voice[1].reset(); + voice[2].reset(); + + filter.reset(); + extfilt.reset(); + + bus_value = 0; + bus_value_ttl = 0; +} + + +// ---------------------------------------------------------------------------- +// Write 16-bit sample to audio input. +// NB! The caller is responsible for keeping the value within 16 bits. +// Note that to mix in an external audio signal, the signal should be +// resampled to 1MHz first to avoid sampling noise. +// ---------------------------------------------------------------------------- +void SID::input(int sample) +{ + // Voice outputs are 20 bits. Scale up to match three voices in order + // to facilitate simulation of the MOS8580 "digi boost" hardware hack. + ext_in = (sample << 4)*3; +} + +// ---------------------------------------------------------------------------- +// Read sample from audio output. +// ---------------------------------------------------------------------------- +int SID::output() +{ + const int range = 1 << 16; + const int half = range >> 1; + int sample = extfilt.output()/((4095*255 >> 7)*3*15*2/range); + + //asm ("ssat %0, #16, %1" : "=r" (sample) : "r" (sample)); + + if (sample >= half) { + return half - 1; + } + if (sample < -half) { + return -half; + } + + return sample; +} + + +// ---------------------------------------------------------------------------- +// Read registers. +// +// Reading a write only register returns the last byte written to any SID +// register. The individual bits in this value start to fade down towards +// zero after a few cycles. All bits reach zero within approximately +// $2000 - $4000 cycles. +// It has been claimed that this fading happens in an orderly fashion, however +// sampling of write only registers reveals that this is not the case. +// NB! This is not correctly modeled. +// The actual use of write only registers has largely been made in the belief +// that all SID registers are readable. To support this belief the read +// would have to be done immediately after a write to the same register +// (remember that an intermediate write to another register would yield that +// value instead). With this in mind we return the last value written to +// any SID register for $2000 cycles without modeling the bit fading. +// ---------------------------------------------------------------------------- +reg8 SID::read(reg8 offset) +{ + switch (offset) { + case 0x19: + return potx.readPOT(); + case 0x1a: + return poty.readPOT(); + case 0x1b: + return voice[2].wave.readOSC(); + case 0x1c: + return voice[2].envelope.readENV(); + default: + return bus_value; + } +} + + +// ---------------------------------------------------------------------------- +// Write registers. +// ---------------------------------------------------------------------------- +void SID::write(reg8 offset, reg8 value) +{ + bus_value = value; + bus_value_ttl = 0x2000; + + switch (offset) { + case 0x00: + voice[0].wave.writeFREQ_LO(value); + break; + case 0x01: + voice[0].wave.writeFREQ_HI(value); + break; + case 0x02: + voice[0].wave.writePW_LO(value); + break; + case 0x03: + voice[0].wave.writePW_HI(value); + break; + case 0x04: + voice[0].writeCONTROL_REG(value); + break; + case 0x05: + voice[0].envelope.writeATTACK_DECAY(value); + break; + case 0x06: + voice[0].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x07: + voice[1].wave.writeFREQ_LO(value); + break; + case 0x08: + voice[1].wave.writeFREQ_HI(value); + break; + case 0x09: + voice[1].wave.writePW_LO(value); + break; + case 0x0a: + voice[1].wave.writePW_HI(value); + break; + case 0x0b: + voice[1].writeCONTROL_REG(value); + break; + case 0x0c: + voice[1].envelope.writeATTACK_DECAY(value); + break; + case 0x0d: + voice[1].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x0e: + voice[2].wave.writeFREQ_LO(value); + break; + case 0x0f: + voice[2].wave.writeFREQ_HI(value); + break; + case 0x10: + voice[2].wave.writePW_LO(value); + break; + case 0x11: + voice[2].wave.writePW_HI(value); + break; + case 0x12: + voice[2].writeCONTROL_REG(value); + break; + case 0x13: + voice[2].envelope.writeATTACK_DECAY(value); + break; + case 0x14: + voice[2].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x15: + filter.writeFC_LO(value); + break; + case 0x16: + filter.writeFC_HI(value); + break; + case 0x17: + filter.writeRES_FILT(value); + break; + case 0x18: + filter.writeMODE_VOL(value); + break; + default: + break; + } +} + + +// ---------------------------------------------------------------------------- +// SID voice muting. +// ---------------------------------------------------------------------------- +void SID::mute(reg8 channel, bool enable) +{ + // Only have 3 voices! + if (channel >= 3) + return; + + voice[channel].mute (enable); +} + + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +SID::State::State() +{ + int i; + + for (i = 0; i < 0x20; i++) { + sid_register[i] = 0; + } + + bus_value = 0; + bus_value_ttl = 0; + + for (i = 0; i < 3; i++) { + accumulator[i] = 0; + shift_register[i] = 0x7ffff8; + rate_counter[i] = 0; + rate_counter_period[i] = 9; + exponential_counter[i] = 0; + exponential_counter_period[i] = 1; + envelope_counter[i] = 0; + envelope_state[i] = EnvelopeGenerator::RELEASE; + hold_zero[i] = true; + } +} + + +// ---------------------------------------------------------------------------- +// Read state. +// ---------------------------------------------------------------------------- +SID::State SID::read_state() +{ + State state; + int i, j; + + for (i = 0, j = 0; i < 3; i++, j += 7) { + WaveformGenerator& wave = voice[i].wave; + EnvelopeGenerator& envelope = voice[i].envelope; + state.sid_register[j + 0] = wave.freq & 0xff; + state.sid_register[j + 1] = wave.freq >> 8; + state.sid_register[j + 2] = wave.pw & 0xff; + state.sid_register[j + 3] = wave.pw >> 8; + state.sid_register[j + 4] = + (wave.waveform << 4) + | (wave.test ? 0x08 : 0) + | (wave.ring_mod ? 0x04 : 0) + | (wave.sync ? 0x02 : 0) + | (envelope.gate ? 0x01 : 0); + state.sid_register[j + 5] = (envelope.attack << 4) | envelope.decay; + state.sid_register[j + 6] = (envelope.sustain << 4) | envelope.release; + } + + state.sid_register[j++] = filter.fc & 0x007; + state.sid_register[j++] = filter.fc >> 3; + state.sid_register[j++] = (filter.res << 4) | filter.filt; + state.sid_register[j++] = + (filter.voice3off ? 0x80 : 0) + | (filter.hp_bp_lp << 4) + | filter.vol; + + // These registers are superfluous, but included for completeness. + for (; j < 0x1d; j++) { + state.sid_register[j] = read(j); + } + for (; j < 0x20; j++) { + state.sid_register[j] = 0; + } + + state.bus_value = bus_value; + state.bus_value_ttl = bus_value_ttl; + + for (i = 0; i < 3; i++) { + state.accumulator[i] = voice[i].wave.accumulator; + state.shift_register[i] = voice[i].wave.shift_register; + state.rate_counter[i] = voice[i].envelope.rate_counter; + state.rate_counter_period[i] = voice[i].envelope.rate_period; + state.exponential_counter[i] = voice[i].envelope.exponential_counter; + state.exponential_counter_period[i] = voice[i].envelope.exponential_counter_period; + state.envelope_counter[i] = voice[i].envelope.envelope_counter; + state.envelope_state[i] = voice[i].envelope.state; + state.hold_zero[i] = voice[i].envelope.hold_zero; + } + + return state; +} + + +// ---------------------------------------------------------------------------- +// Write state. +// ---------------------------------------------------------------------------- +void SID::write_state(const State& state) +{ + int i; + + for (i = 0; i <= 0x18; i++) { + write(i, state.sid_register[i]); + } + + bus_value = state.bus_value; + bus_value_ttl = state.bus_value_ttl; + + for (i = 0; i < 3; i++) { + voice[i].wave.accumulator = state.accumulator[i]; + voice[i].wave.shift_register = state.shift_register[i]; + voice[i].envelope.rate_counter = state.rate_counter[i]; + voice[i].envelope.rate_period = state.rate_counter_period[i]; + voice[i].envelope.exponential_counter = state.exponential_counter[i]; + voice[i].envelope.exponential_counter_period = state.exponential_counter_period[i]; + voice[i].envelope.envelope_counter = state.envelope_counter[i]; + voice[i].envelope.state = state.envelope_state[i]; + voice[i].envelope.hold_zero = state.hold_zero[i]; + } +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void SID::enable_filter(bool enable) +{ + filter.enable_filter(enable); +} + + +// ---------------------------------------------------------------------------- +// Enable external filter. +// ---------------------------------------------------------------------------- +void SID::enable_external_filter(bool enable) +{ + extfilt.enable_filter(enable); +} + + +// ---------------------------------------------------------------------------- +// I0() computes the 0th order modified Bessel function of the first kind. +// This function is originally from resample-1.5/filterkit.c by J. O. Smith. +// ---------------------------------------------------------------------------- +/* +float SID::I0(float x) +{ + // Max error acceptable in I0. + const float I0e = 1e-6; + + float sum, u, halfx, temp; + int n; + + sum = u = n = 1; + halfx = x/2.0; + + do { + temp = halfx/n++; + u *= temp*temp; + sum += u; + } while (u >= I0e*sum); + + return sum; +} +*/ + +// ---------------------------------------------------------------------------- +// Setting of SID sampling parameters. +// +// Use a clock freqency of 985248Hz for PAL C64, 1022730Hz for NTSC C64. +// The default end of passband frequency is pass_freq = 0.9*sample_freq/2 +// for sample frequencies up to ~ 44.1kHz, and 20kHz for higher sample +// frequencies. +// +// For resampling, the ratio between the clock frequency and the sample +// frequency is limited as follows: +// 125*clock_freq/sample_freq < 16384 +// E.g. provided a clock frequency of ~ 1MHz, the sample frequency can not +// be set lower than ~ 8kHz. A lower sample frequency would make the +// resampling code overfill its 16k sample ring buffer. +// +// The end of passband frequency is also limited: +// pass_freq <= 0.9*sample_freq/2 + +// E.g. for a 44.1kHz sampling rate the end of passband frequency is limited +// to slightly below 20kHz. This constraint ensures that the FIR table is +// not overfilled. +// ---------------------------------------------------------------------------- +bool SID::set_sampling_parameters(float clock_freq, sampling_method method, + float sample_freq, float pass_freq, + float filter_scale) +{ + + // The default passband limit is 0.9*sample_freq/2 for sample + // frequencies below ~ 44.1kHz, and 20kHz for higher sample frequencies. + if (pass_freq < 0) { + pass_freq = 20000; + if (2.0*pass_freq/sample_freq >= 0.9) { + pass_freq = 0.9*sample_freq/2.0; + } + } + // Check whether the FIR table would overfill. + else if (pass_freq > 0.9*sample_freq/2.0) { + return false; + } + + // The filter scaling is only included to avoid clipping, so keep + // it sane. + if (filter_scale < 0.9 || filter_scale > 1.0) { + return false; + } + + // Set the external filter to the pass freq + extfilt.set_sampling_parameter (pass_freq); + clock_frequency = clock_freq; + sampling = method; + + cycles_per_sample = + cycle_count(clock_freq/sample_freq*(1 << FIXP_SHIFT) + 0.5); + + sample_offset = 0; + sample_prev = 0; + + return true; +} + + +// ---------------------------------------------------------------------------- +// Adjustment of SID sampling frequency. +// +// In some applications, e.g. a C64 emulator, it can be desirable to +// synchronize sound with a timer source. This is supported by adjustment of +// the SID sampling frequency. +// +// NB! Adjustment of the sampling frequency may lead to noticeable shifts in +// frequency, and should only be used for interactive applications. Note also +// that any adjustment of the sampling frequency will change the +// characteristics of the resampling filter, since the filter is not rebuilt. +// ---------------------------------------------------------------------------- +void SID::adjust_sampling_frequency(float sample_freq) +{ + cycles_per_sample = + cycle_count(clock_frequency/sample_freq*(1 << FIXP_SHIFT) + 0.5); +} + + +// ---------------------------------------------------------------------------- +// Return array of default spline interpolation points to map FC to +// filter cutoff frequency. +// ---------------------------------------------------------------------------- +/* +void SID::fc_default(const fc_point*& points, int& count) +{ + filter.fc_default(points, count); +} +*/ + +// ---------------------------------------------------------------------------- +// Return FC spline plotter object. +// ---------------------------------------------------------------------------- +/* +PointPlotter SID::fc_plotter() +{ + return filter.fc_plotter(); +} +*/ + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +void SID::clock() +{ + + // Age bus value. + if (--bus_value_ttl <= 0) { + bus_value = 0; + bus_value_ttl = 0; + } + + // Clock amplitude modulators. + voice[0].envelope.clock(); + voice[1].envelope.clock(); + voice[2].envelope.clock(); + + // Clock oscillators. + voice[0].wave.clock(); + voice[1].wave.clock(); + voice[2].wave.clock(); + + // Synchronize oscillators. + voice[0].wave.synchronize(); + voice[1].wave.synchronize(); + voice[2].wave.synchronize(); + + // Clock filter. + filter.clock(voice[0].output(), voice[1].output(), voice[2].output(), ext_in); + + // Clock external filter. + extfilt.clock(filter.output()); +} + + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +void SID::clock(cycle_count delta_t) +{ + int i; + + if (delta_t <= 0) { + return; + } + + // Age bus value. + bus_value_ttl -= delta_t; + if (bus_value_ttl <= 0) { + bus_value = 0; + bus_value_ttl = 0; + } + + // Clock amplitude modulators. + + voice[0].envelope.clock(delta_t); + voice[1].envelope.clock(delta_t); + voice[2].envelope.clock(delta_t); + + // Clock and synchronize oscillators. + // Loop until we reach the current cycle. + cycle_count delta_t_osc = delta_t; + while (delta_t_osc) { + cycle_count delta_t_min = delta_t_osc; + + // Find minimum number of cycles to an oscillator accumulator MSB toggle. + // We have to clock on each MSB on / MSB off for hard sync to operate + // correctly. + for (i = 0; i < 3; i++) { + WaveformGenerator& wave = voice[i].wave; + + // It is only necessary to clock on the MSB of an oscillator that is + // a sync source and has freq != 0. + if (!(wave.sync_dest->sync && wave.freq)) { + continue; + } + + reg16 freq = wave.freq; + reg24 accumulator = wave.accumulator; + + // Clock on MSB off if MSB is on, clock on MSB on if MSB is off. + reg24 delta_accumulator = + (accumulator & 0x800000 ? 0x1000000 : 0x800000) - accumulator; + + cycle_count delta_t_next = delta_accumulator/freq; + if (delta_accumulator%freq) { + ++delta_t_next; + } + + if (delta_t_next < delta_t_min) { + delta_t_min = delta_t_next; + } + } + + // Clock oscillators. + voice[0].wave.clock(delta_t_min); + voice[1].wave.clock(delta_t_min); + voice[2].wave.clock(delta_t_min); + + + // Synchronize oscillators. + voice[0].wave.synchronize(); + voice[1].wave.synchronize(); + voice[2].wave.synchronize(); + + delta_t_osc -= delta_t_min; + } + + // Clock filter. + filter.clock(delta_t, + voice[0].output(), voice[1].output(), voice[2].output(), ext_in); + + // Clock external filter. + extfilt.clock(delta_t, filter.output()); +} + + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling. +// Fixpoint arithmetics is used. +// +// The example below shows how to clock the SID a specified amount of cycles +// while producing audio output: +// +// while (delta_t) { +// bufindex += sid.clock(delta_t, buf + bufindex, buflength - bufindex); +// write(dsp, buf, bufindex*2); +// bufindex = 0; +// } +// +// ---------------------------------------------------------------------------- +int SID::clock(cycle_count& delta_t, short* buf, int n) +{ + switch (sampling) { + default: + case SAMPLE_FAST: + return clock_fast(delta_t, buf, n); + case SAMPLE_INTERPOLATE: + return clock_interpolate(delta_t, buf, n); + } +} + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling - delta clocking picking nearest sample. +// ---------------------------------------------------------------------------- +RESID_INLINE +int SID::clock_fast(cycle_count& delta_t, short* buf, int n) +{ + int s = 0; + + for (;;) { + cycle_count next_sample_offset = sample_offset + cycles_per_sample + (1 << (FIXP_SHIFT - 1)); + cycle_count delta_t_sample = next_sample_offset >> FIXP_SHIFT; + if (delta_t_sample > delta_t) { + break; + } + if (s >= n) { + return s; + } + clock(delta_t_sample); + delta_t -= delta_t_sample; + sample_offset = (next_sample_offset & FIXP_MASK) - (1 << (FIXP_SHIFT - 1)); + buf[s++] = output(); + } + + clock(delta_t); + sample_offset -= delta_t << FIXP_SHIFT; + delta_t = 0; + return s; +} + + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling - cycle based with linear sample +// interpolation. +// +// Here the chip is clocked every cycle. This yields higher quality +// sound since the samples are linearly interpolated, and since the +// external filter attenuates frequencies above 16kHz, thus reducing +// sampling noise. +// ---------------------------------------------------------------------------- +RESID_INLINE +int SID::clock_interpolate(cycle_count& delta_t, short* buf, int n) +{ + + int s = 0; + int i; + + for (;;) { + cycle_count next_sample_offset = sample_offset + cycles_per_sample; + cycle_count delta_t_sample = next_sample_offset >> FIXP_SHIFT; + if (delta_t_sample > delta_t) { + break; + } + if (s >= n) { + return s; + } + for (i = 0; i < delta_t_sample - 1; i++) { + clock(); + } + if (i < delta_t_sample) { + sample_prev = output(); + clock(); + } + + delta_t -= delta_t_sample; + sample_offset = next_sample_offset & FIXP_MASK; + + short sample_now = output(); + buf[s++] = + sample_prev + (sample_offset*(sample_now - sample_prev) >> FIXP_SHIFT); + sample_prev = sample_now; + } + + for (i = 0; i < delta_t - 1; i++) { + clock(); + } + if (i < delta_t) { + sample_prev = output(); + clock(); + } + + sample_offset -= delta_t << FIXP_SHIFT; + delta_t = 0; + return s; +} + + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/sid.h b/MCUME_esp32/espsnd/main/reSID/reSID/sid.h new file mode 100755 index 0000000..3087e6f --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/sid.h @@ -0,0 +1,133 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free float; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free float Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free float +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SID_H__ +#define __SID_H__ + +#include "siddefs.h" +#include "voice.h" +#include "filter.h" +#include "extfilt.h" +#include "pot.h" + +RESID_NAMESPACE_START + +class SID +{ +public: + SID(); + ~SID(); + //void printFilter(void); + //void set_chip_model(chip_model model); + void enable_filter(bool enable); + void enable_external_filter(bool enable); + bool set_sampling_parameters(float clock_freq, sampling_method method, + float sample_freq, float pass_freq = -1, + float filter_scale = 0.97); + void adjust_sampling_frequency(float sample_freq); + + //void fc_default(const fc_point*& points, int& count); + //PointPlotter fc_plotter(); + + void clock(); + void clock(cycle_count delta_t); + int clock(cycle_count& delta_t, short* buf, int n); + void reset(); + + // Read/write registers. + reg8 read(reg8 offset); + void write(reg8 offset, reg8 value); + void mute(reg8 channel, bool enable); + + // Read/write state. + class State + { + public: + State(); + + char sid_register[0x20]; + + reg8 bus_value; + cycle_count bus_value_ttl; + + reg24 accumulator[3]; + reg24 shift_register[3]; + reg16 rate_counter[3]; + reg16 rate_counter_period[3]; + reg16 exponential_counter[3]; + reg16 exponential_counter_period[3]; + reg8 envelope_counter[3]; + EnvelopeGenerator::State envelope_state[3]; + bool hold_zero[3]; + }; + + State read_state(); + void write_state(const State& state); + + // 16-bit input (EXT IN). + void input(int sample); + + // 16-bit output (AUDIO OUT). + int output(); + + +protected: + + RESID_INLINE int clock_fast(cycle_count& delta_t, short* buf, int n); + RESID_INLINE int clock_interpolate(cycle_count& delta_t, short* buf, int n); + + Voice voice[3]; + Filter filter; + ExternalFilter extfilt; + Potentiometer potx; + Potentiometer poty; + + reg8 bus_value; + cycle_count bus_value_ttl; + + float clock_frequency; + + // External audio input. + int ext_in; + + // Resampling constants. + static const int FIR_N; + static const int FIR_RES_INTERPOLATE; + static const int FIR_RES_FAST; + static const int FIR_SHIFT; + static const int RINGSIZE; + + // Fixpoint constants. + static const int FIXP_SHIFT; + static const int FIXP_MASK; + + // Sampling variables. + sampling_method sampling; + cycle_count cycles_per_sample; + cycle_count sample_offset; + int sample_index; + short sample_prev; + int fir_N; + int fir_RES; + +}; + +RESID_NAMESPACE_STOP + +#endif // not __SID_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/siddefs.h b/MCUME_esp32/espsnd/main/reSID/reSID/siddefs.h new file mode 100755 index 0000000..05604ea --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/siddefs.h @@ -0,0 +1,86 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 1999 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SIDDEFS_H__ +#define __SIDDEFS_H__ + +// Define bool, true, and false for C++ compilers that lack these keywords. +#define RESID_HAVE_BOOL 1 + +// Inlining on/off. +#define RESID_INLINING 1 +#define RESID_INLINE inline + +// Support namespace + +#ifdef RESID_NAMESPACE +# define RESID_NAMESPACE_START \ + namespace RESID_NAMESPACE \ + { +# define RESID_NAMESPACE_STOP \ + } +#else +# define RESID_NAMESPACE_START +# define RESID_NAMESPACE_STOP +#endif + + +RESID_NAMESPACE_START + +#if !RESID_HAVE_BOOL +typedef int bool; +const bool true = 1; +const bool false = 0; +#endif + +// We could have used the smallest possible data type for each SID register, +// however this would give a slower engine because of data type conversions. +// An int is assumed to be at least 32 bits (necessary in the types reg24, +// cycle_count, and sound_sample). GNU does not support 16-bit machines +// (GNU Coding Standards: Portability between CPUs), so this should be +// a valid assumption. +#include +#include + +typedef uint16_t reg4; +typedef uint16_t reg8; +typedef uint16_t reg12; +typedef uint16_t reg16; +typedef unsigned int reg24; + +typedef int cycle_count; +typedef int sound_sample; +typedef sound_sample fc_point[2]; + +//enum chip_model { MOS6581, MOS8580 }; + +enum sampling_method { SAMPLE_FAST, SAMPLE_INTERPOLATE}; + +extern "C" +{ +#ifndef __VERSION_CC__ +extern const char* resid_version_string; +#else +const char* resid_version_string = VERSION; +#endif +} + +RESID_NAMESPACE_STOP + +#endif // not __SIDDEFS_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/spline.h b/MCUME_esp32/espsnd/main/reSID/reSID/spline.h new file mode 100755 index 0000000..c03260c --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/spline.h @@ -0,0 +1,275 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SPLINE_H__ +#define __SPLINE_H__ + +RESID_NAMESPACE_START + +// Our objective is to construct a smooth interpolating single-valued function +// y = f(x). +// +// Catmull-Rom splines are widely used for interpolation, however these are +// parametric curves [x(t) y(t) ...] and can not be used to directly calculate +// y = f(x). +// For a discussion of Catmull-Rom splines see Catmull, E., and R. Rom, +// "A Class of Local Interpolating Splines", Computer Aided Geometric Design. +// +// Natural cubic splines are single-valued functions, and have been used in +// several applications e.g. to specify gamma curves for image display. +// These splines do not afford local control, and a set of linear equations +// including all interpolation points must be solved before any point on the +// curve can be calculated. The lack of local control makes the splines +// more difficult to handle than e.g. Catmull-Rom splines, and real-time +// interpolation of a stream of data points is not possible. +// For a discussion of natural cubic splines, see e.g. Kreyszig, E., "Advanced +// Engineering Mathematics". +// +// Our approach is to approximate the properties of Catmull-Rom splines for +// piecewice cubic polynomials f(x) = ax^3 + bx^2 + cx + d as follows: +// Each curve segment is specified by four interpolation points, +// p0, p1, p2, p3. +// The curve between p1 and p2 must interpolate both p1 and p2, and in addition +// f'(p1.x) = k1 = (p2.y - p0.y)/(p2.x - p0.x) and +// f'(p2.x) = k2 = (p3.y - p1.y)/(p3.x - p1.x). +// +// The constraints are expressed by the following system of linear equations +// +// [ 1 xi xi^2 xi^3 ] [ d ] [ yi ] +// [ 1 2*xi 3*xi^2 ] * [ c ] = [ ki ] +// [ 1 xj xj^2 xj^3 ] [ b ] [ yj ] +// [ 1 2*xj 3*xj^2 ] [ a ] [ kj ] +// +// Solving using Gaussian elimination and back substitution, setting +// dy = yj - yi, dx = xj - xi, we get +// +// a = ((ki + kj) - 2*dy/dx)/(dx*dx); +// b = ((kj - ki)/dx - 3*(xi + xj)*a)/2; +// c = ki - (3*xi*a + 2*b)*xi; +// d = yi - ((xi*a + b)*xi + c)*xi; +// +// Having calculated the coefficients of the cubic polynomial we have the +// choice of evaluation by brute force +// +// for (x = x1; x <= x2; x += res) { +// y = ((a*x + b)*x + c)*x + d; +// plot(x, y); +// } +// +// or by forward differencing +// +// y = ((a*x1 + b)*x1 + c)*x1 + d; +// dy = (3*a*(x1 + res) + 2*b)*x1*res + ((a*res + b)*res + c)*res; +// d2y = (6*a*(x1 + res) + 2*b)*res*res; +// d3y = 6*a*res*res*res; +// +// for (x = x1; x <= x2; x += res) { +// plot(x, y); +// y += dy; dy += d2y; d2y += d3y; +// } +// +// See Foley, Van Dam, Feiner, Hughes, "Computer Graphics, Principles and +// Practice" for a discussion of forward differencing. +// +// If we have a set of interpolation points p0, ..., pn, we may specify +// curve segments between p0 and p1, and between pn-1 and pn by using the +// following constraints: +// f''(p0.x) = 0 and +// f''(pn.x) = 0. +// +// Substituting the results for a and b in +// +// 2*b + 6*a*xi = 0 +// +// we get +// +// ki = (3*dy/dx - kj)/2; +// +// or by substituting the results for a and b in +// +// 2*b + 6*a*xj = 0 +// +// we get +// +// kj = (3*dy/dx - ki)/2; +// +// Finally, if we have only two interpolation points, the cubic polynomial +// will degenerate to a straight line if we set +// +// ki = kj = dy/dx; +// + + +#if SPLINE_BRUTE_FORCE +#define interpolate_segment interpolate_brute_force +#else +#define interpolate_segment interpolate_forward_difference +#endif + + +// ---------------------------------------------------------------------------- +// Calculation of coefficients. +// ---------------------------------------------------------------------------- +inline +void cubic_coefficients(double x1, double y1, double x2, double y2, + double k1, double k2, + double& a, double& b, double& c, double& d) +{ + double dx = x2 - x1, dy = y2 - y1; + + a = ((k1 + k2) - 2*dy/dx)/(dx*dx); + b = ((k2 - k1)/dx - 3*(x1 + x2)*a)/2; + c = k1 - (3*x1*a + 2*b)*x1; + d = y1 - ((x1*a + b)*x1 + c)*x1; +} + +// ---------------------------------------------------------------------------- +// Evaluation of cubic polynomial by brute force. +// ---------------------------------------------------------------------------- +template +inline +void interpolate_brute_force(double x1, double y1, double x2, double y2, + double k1, double k2, + PointPlotter plot, double res) +{ + double a, b, c, d; + cubic_coefficients(x1, y1, x2, y2, k1, k2, a, b, c, d); + + // Calculate each point. + for (double x = x1; x <= x2; x += res) { + double y = ((a*x + b)*x + c)*x + d; + plot(x, y); + } +} + +// ---------------------------------------------------------------------------- +// Evaluation of cubic polynomial by forward differencing. +// ---------------------------------------------------------------------------- +template +inline +void interpolate_forward_difference(double x1, double y1, double x2, double y2, + double k1, double k2, + PointPlotter plot, double res) +{ + double a, b, c, d; + cubic_coefficients(x1, y1, x2, y2, k1, k2, a, b, c, d); + + double y = ((a*x1 + b)*x1 + c)*x1 + d; + double dy = (3*a*(x1 + res) + 2*b)*x1*res + ((a*res + b)*res + c)*res; + double d2y = (6*a*(x1 + res) + 2*b)*res*res; + double d3y = 6*a*res*res*res; + + // Calculate each point. + for (double x = x1; x <= x2; x += res) { + plot(x, y); + y += dy; dy += d2y; d2y += d3y; + } +} + +template +inline +double x(PointIter p) +{ + return (*p)[0]; +} + +template +inline +double y(PointIter p) +{ + return (*p)[1]; +} + +// ---------------------------------------------------------------------------- +// Evaluation of complete interpolating function. +// Note that since each curve segment is controlled by four points, the +// end points will not be interpolated. If extra control points are not +// desirable, the end points can simply be repeated to ensure interpolation. +// Note also that points of non-differentiability and discontinuity can be +// introduced by repeating points. +// ---------------------------------------------------------------------------- +template +inline +void interpolate(PointIter p0, PointIter pn, PointPlotter plot, double res) +{ + double k1, k2; + + // Set up points for first curve segment. + PointIter p1 = p0; ++p1; + PointIter p2 = p1; ++p2; + PointIter p3 = p2; ++p3; + + // Draw each curve segment. + for (; p2 != pn; ++p0, ++p1, ++p2, ++p3) { + // p1 and p2 equal; single point. + if (x(p1) == x(p2)) { + continue; + } + // Both end points repeated; straight line. + if (x(p0) == x(p1) && x(p2) == x(p3)) { + k1 = k2 = (y(p2) - y(p1))/(x(p2) - x(p1)); + } + // p0 and p1 equal; use f''(x1) = 0. + else if (x(p0) == x(p1)) { + k2 = (y(p3) - y(p1))/(x(p3) - x(p1)); + k1 = (3*(y(p2) - y(p1))/(x(p2) - x(p1)) - k2)/2; + } + // p2 and p3 equal; use f''(x2) = 0. + else if (x(p2) == x(p3)) { + k1 = (y(p2) - y(p0))/(x(p2) - x(p0)); + k2 = (3*(y(p2) - y(p1))/(x(p2) - x(p1)) - k1)/2; + } + // Normal curve. + else { + k1 = (y(p2) - y(p0))/(x(p2) - x(p0)); + k2 = (y(p3) - y(p1))/(x(p3) - x(p1)); + } + + interpolate_segment(x(p1), y(p1), x(p2), y(p2), k1, k2, plot, res); + } +} + +// ---------------------------------------------------------------------------- +// Class for plotting integers into an array. +// ---------------------------------------------------------------------------- +template +class PointPlotter +{ + protected: + FN* f; + + public: + PointPlotter(FN* arr) : f(arr) + { + } + + void operator ()(double x, double y) + { + // Clamp negative values to zero. + if (y < 0) { + y = 0; + } + + f[FN(x)] = FN(y); + } +}; + +RESID_NAMESPACE_STOP + +#endif // not __SPLINE_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/version.cc b/MCUME_esp32/espsnd/main/reSID/reSID/version.cc new file mode 100755 index 0000000..3b61afd --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/version.cc @@ -0,0 +1,21 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __VERSION_CC__ +#include "siddefs.h" diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/voice.cc b/MCUME_esp32/espsnd/main/reSID/reSID/voice.cc new file mode 100755 index 0000000..e24bcdb --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/voice.cc @@ -0,0 +1,152 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __VOICE_CC__ +#include "voice.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +Voice::Voice() + : muted(false) +{ + //set_chip_model(MOS6581); + {//instead: + wave_zero = 0x380; + voice_DC = 0x800*0xff; + } +} + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void Voice::set_chip_model(chip_model model) +{ + wave.set_chip_model(model); + + if (model == MOS6581) { + // The waveform D/A converter introduces a DC offset in the signal + // to the envelope multiplying D/A converter. The "zero" level of + // the waveform D/A converter can be found as follows: + // + // Measure the "zero" voltage of voice 3 on the SID audio output + // pin, routing only voice 3 to the mixer ($d417 = $0b, $d418 = + // $0f, all other registers zeroed). + // + // Then set the sustain level for voice 3 to maximum and search for + // the waveform output value yielding the same voltage as found + // above. This is done by trying out different waveform output + // values until the correct value is found, e.g. with the following + // program: + // + // lda #$08 + // sta $d412 + // lda #$0b + // sta $d417 + // lda #$0f + // sta $d418 + // lda #$f0 + // sta $d414 + // lda #$21 + // sta $d412 + // lda #$01 + // sta $d40e + // + // ldx #$00 + // lda #$38 ; Tweak this to find the "zero" level + //l cmp $d41b + // bne l + // stx $d40e ; Stop frequency counter - freeze waveform output + // brk + // + // The waveform output range is 0x000 to 0xfff, so the "zero" + // level should ideally have been 0x800. In the measured chip, the + // waveform output "zero" level was found to be 0x380 (i.e. $d41b + // = 0x38) at 5.94V. + + wave_zero = 0x380; + + // The envelope multiplying D/A converter introduces another DC + // offset. This is isolated by the following measurements: + // + // * The "zero" output level of the mixer at full volume is 5.44V. + // * Routing one voice to the mixer at full volume yields + // 6.75V at maximum voice output (wave = 0xfff, sustain = 0xf) + // 5.94V at "zero" voice output (wave = any, sustain = 0x0) + // 5.70V at minimum voice output (wave = 0x000, sustain = 0xf) + // * The DC offset of one voice is (5.94V - 5.44V) = 0.50V + // * The dynamic range of one voice is |6.75V - 5.70V| = 1.05V + // * The DC offset is thus 0.50V/1.05V ~ 1/2 of the dynamic range. + // + // Note that by removing the DC offset, we get the following ranges for + // one voice: + // y > 0: (6.75V - 5.44V) - 0.50V = 0.81V + // y < 0: (5.70V - 5.44V) - 0.50V = -0.24V + // The scaling of the voice amplitude is not symmetric about y = 0; + // this follows from the DC level in the waveform output. + + voice_DC = 0x800*0xff; + } + else { + // No DC offsets in the MOS8580. + wave_zero = 0x800; + voice_DC = 0; + } +} +*/ +// ---------------------------------------------------------------------------- +// Set sync source. +// ---------------------------------------------------------------------------- +void Voice::set_sync_source(Voice* source) +{ + wave.set_sync_source(&source->wave); +} + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void Voice::writeCONTROL_REG(reg8 control) +{ + wave.writeCONTROL_REG(control); + envelope.writeCONTROL_REG(control); +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void Voice::reset() +{ + wave.reset(); + envelope.reset(); +} + + +// ---------------------------------------------------------------------------- +// Voice mute. +// ---------------------------------------------------------------------------- +void Voice::mute(bool enable) +{ + // enable = true (means voice is muted) + muted = enable; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/voice.h b/MCUME_esp32/espsnd/main/reSID/reSID/voice.h new file mode 100755 index 0000000..119d26d --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/voice.h @@ -0,0 +1,87 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __VOICE_H__ +#define __VOICE_H__ + +#include "siddefs.h" +#include "wave.h" +#include "envelope.h" + +RESID_NAMESPACE_START + +class Voice +{ +public: + Voice(); + +// void set_chip_model(chip_model model); + void set_sync_source(Voice*); + void reset(); + void mute(bool enable); + + void writeCONTROL_REG(reg8); + + // Amplitude modulated waveform output. + // Range [-2048*255, 2047*255]. + RESID_INLINE sound_sample output(); + +protected: + WaveformGenerator wave; + EnvelopeGenerator envelope; + bool muted; + + // Waveform D/A zero level. + sound_sample wave_zero; + + // Multiplying D/A DC offset. + sound_sample voice_DC; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following function is defined inline because it is called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__VOICE_CC__) + +// ---------------------------------------------------------------------------- +// Amplitude modulated waveform output. +// Ideal range [-2048*255, 2047*255]. +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample Voice::output() +{ + if (!muted) + { // Multiply oscillator output with envelope output. + return (wave.output() - wave_zero)*envelope.output() + voice_DC; + } else { + return 0; + } +} + +#endif // RESID_INLINING || defined(__VOICE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __VOICE_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave.cc new file mode 100755 index 0000000..9da1a58 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave.cc @@ -0,0 +1,154 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __WAVE_CC__ +#include "wave.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +WaveformGenerator::WaveformGenerator() +{ + sync_source = this; + + // set_chip_model(MOS6581); + {//instead: + wave__ST = &wave6581__ST[0]; + wave_P_T = &wave6581_P_T[0]; + wave_PS_ = &wave6581_PS_[0]; + wave_PST = &wave6581_PST[0]; + } + reset(); +} + + +// ---------------------------------------------------------------------------- +// Set sync source. +// ---------------------------------------------------------------------------- +void WaveformGenerator::set_sync_source(WaveformGenerator* source) +{ + sync_source = source; + source->sync_dest = this; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void WaveformGenerator::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + wave__ST = &wave6581__ST[0]; + wave_P_T = &wave6581_P_T[0]; + wave_PS_ = &wave6581_PS_[0]; + wave_PST = &wave6581_PST[0]; + } + else { + wave__ST = &wave8580__ST[0]; + wave_P_T = &wave8580_P_T[0]; + wave_PS_ = &wave8580_PS_[0]; + wave_PST = &wave8580_PST[0]; + } +} +*/ + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void WaveformGenerator::writeFREQ_LO(reg8 freq_lo) +{ + freq = (freq & 0xff00) | (freq_lo & 0x00ff); +} + +void WaveformGenerator::writeFREQ_HI(reg8 freq_hi) +{ + freq = (((unsigned int) freq_hi << 8) & 0xff00) | (freq & 0x00ff); +} + +void WaveformGenerator::writePW_LO(reg8 pw_lo) +{ + pw = (pw & 0xf00) | (pw_lo & 0x0ff); +} + +void WaveformGenerator::writePW_HI(reg8 pw_hi) +{ + pw = (((unsigned int)pw_hi << 8) & 0xf00) | (pw & 0x0ff); +} + +void WaveformGenerator::writeCONTROL_REG(reg8 control) +{ + waveform = (control >> 4) & 0x0f; + ring_mod = control & 0x04; + sync = control & 0x02; + + reg8 test_next = control & 0x08; + + // Test bit set. + // The accumulator and the shift register are both cleared. + // NB! The shift register is not really cleared immediately. It seems like + // the individual bits in the shift register start to fade down towards + // zero when test is set. All bits reach zero within approximately + // $2000 - $4000 cycles. + // This is not modeled. There should fortunately be little audible output + // from this peculiar behavior. + if (test_next) { + accumulator = 0; + shift_register = 0; + } + // Test bit cleared. + // The accumulator starts counting, and the shift register is reset to + // the value 0x7ffff8. + // NB! The shift register will not actually be set to this exact value if the + // shift register bits have not had time to fade to zero. + // This is not modeled. + else if (test) { + shift_register = 0x7ffff8; + } + + test = test_next; + + // The gate bit is handled by the EnvelopeGenerator. +} + +reg8 WaveformGenerator::readOSC() +{ + return output() >> 4; +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void WaveformGenerator::reset() +{ + accumulator = 0; + shift_register = 0x7ffff8; + freq = 0; + pw = 0; + + test = 0; + ring_mod = 0; + sync = 0; + + msb_rising = false; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave.h b/MCUME_esp32/espsnd/main/reSID/reSID/wave.h new file mode 100755 index 0000000..376960d --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave.h @@ -0,0 +1,514 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __WAVE_H__ +#define __WAVE_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// A 24 bit accumulator is the basis for waveform generation. FREQ is added to +// the lower 16 bits of the accumulator each cycle. +// The accumulator is set to zero when TEST is set, and starts counting +// when TEST is cleared. +// The noise waveform is taken from intermediate bits of a 23 bit shift +// register. This register is clocked by bit 19 of the accumulator. +// ---------------------------------------------------------------------------- +class WaveformGenerator +{ +public: + WaveformGenerator(); + + void set_sync_source(WaveformGenerator*); + //void set_chip_model(chip_model model); + + RESID_INLINE void clock(); + RESID_INLINE void clock(cycle_count delta_t); + RESID_INLINE void synchronize(); + void reset(); + + void writeFREQ_LO(reg8); + void writeFREQ_HI(reg8); + void writePW_LO(reg8); + void writePW_HI(reg8); + void writeCONTROL_REG(reg8); + reg8 readOSC(); + + // 12-bit waveform output. + RESID_INLINE reg12 output(); + +protected: + const WaveformGenerator* sync_source; + WaveformGenerator* sync_dest; + + // Tell whether the accumulator MSB was set high on this cycle. + bool msb_rising; + + reg24 accumulator; + reg24 shift_register; + + // Fout = (Fn*Fclk/16777216)Hz + reg16 freq; + // PWout = (PWn/40.95)% + reg12 pw; + + // The control register right-shifted 4 bits; used for output function + // table lookup. + reg8 waveform; + + // The remaining control register bits. + reg8 test; + reg8 ring_mod; + reg8 sync; + // The gate bit is handled by the EnvelopeGenerator. + + // 16 possible combinations of waveforms. + RESID_INLINE reg12 output____(); + RESID_INLINE reg12 output___T(); + RESID_INLINE reg12 output__S_(); + RESID_INLINE reg12 output__ST(); + RESID_INLINE reg12 output_P__(); + RESID_INLINE reg12 output_P_T(); + RESID_INLINE reg12 output_PS_(); + RESID_INLINE reg12 output_PST(); + RESID_INLINE reg12 outputN___(); + RESID_INLINE reg12 outputN__T(); + RESID_INLINE reg12 outputN_S_(); + RESID_INLINE reg12 outputN_ST(); + RESID_INLINE reg12 outputNP__(); + RESID_INLINE reg12 outputNP_T(); + RESID_INLINE reg12 outputNPS_(); + RESID_INLINE reg12 outputNPST(); + + // Sample data for combinations of waveforms. + /* + static reg8 wave6581__ST[]; + static reg8 wave6581_P_T[]; + static reg8 wave6581_PS_[]; + static reg8 wave6581_PST[]; + + static reg8 wave8580__ST[]; + static reg8 wave8580_P_T[]; + static reg8 wave8580_PS_[]; + static reg8 wave8580_PST[]; + + reg8* wave__ST; + reg8* wave_P_T; + reg8* wave_PS_; + reg8* wave_PST; +*/ + + const reg8* wave__ST; + const reg8* wave_P_T; + const reg8* wave_PS_; + const reg8* wave_PST; + +friend class Voice; +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__WAVE_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::clock() +{ + // No operation if test bit is set. + if (test) { + return; + } + + reg24 accumulator_prev = accumulator; + + // Calculate new accumulator value; + accumulator += freq; + accumulator &= 0xffffff; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = !(accumulator_prev & 0x800000) && (accumulator & 0x800000); + + // Shift noise register once for each time accumulator bit 19 is set high. + if (!(accumulator_prev & 0x080000) && (accumulator & 0x080000)) { + reg24 bit0 = ((shift_register >> 22) ^ (shift_register >> 17)) & 0x1; + shift_register <<= 1; + shift_register &= 0x7fffff; + shift_register |= bit0; + } +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::clock(cycle_count delta_t) +{ + // No operation if test bit is set. + if (test) { + return; + } + + reg24 accumulator_prev = accumulator; + + // Calculate new accumulator value; + reg24 delta_accumulator = delta_t*freq; + accumulator += delta_accumulator; + accumulator &= 0xffffff; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = !(accumulator_prev & 0x800000) && (accumulator & 0x800000); + + // Shift noise register once for each time accumulator bit 19 is set high. + // Bit 19 is set high each time 2^20 (0x100000) is added to the accumulator. + reg24 shift_period = 0x100000; + + while (delta_accumulator) { + if (delta_accumulator < shift_period) { + shift_period = delta_accumulator; + // Determine whether bit 19 is set on the last period. + // NB! Requires two's complement integer. + if (shift_period <= 0x080000) { + // Check for flip from 0 to 1. + if (((accumulator - shift_period) & 0x080000) || !(accumulator & 0x080000)) + { + break; + } + } + else { + // Check for flip from 0 (to 1 or via 1 to 0) or from 1 via 0 to 1. + if (((accumulator - shift_period) & 0x080000) && !(accumulator & 0x080000)) + { + break; + } + } + } + + // Shift the noise/random register. + // NB! The shift is actually delayed 2 cycles, this is not modeled. + reg24 bit0 = ((shift_register >> 22) ^ (shift_register >> 17)) & 0x1; + shift_register <<= 1; + shift_register &= 0x7fffff; + shift_register |= bit0; + + delta_accumulator -= shift_period; + } +} + + +// ---------------------------------------------------------------------------- +// Synchronize oscillators. +// This must be done after all the oscillators have been clock()'ed since the +// oscillators operate in parallel. +// Note that the oscillators must be clocked exactly on the cycle when the +// MSB is set high for hard sync to operate correctly. See SID::clock(). +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::synchronize() +{ + // A special case occurs when a sync source is synced itself on the same + // cycle as when its MSB is set high. In this case the destination will + // not be synced. This has been verified by sampling OSC3. + if (msb_rising && sync_dest->sync && !(sync && sync_source->msb_rising)) { + sync_dest->accumulator = 0; + } +} + + +// ---------------------------------------------------------------------------- +// Output functions. +// NB! The output from SID 8580 is delayed one cycle compared to SID 6581, +// this is not modeled. +// ---------------------------------------------------------------------------- + +// No waveform: +// Zero output. +// +RESID_INLINE +reg12 WaveformGenerator::output____() +{ + return 0x000; +} + +// Triangle: +// The upper 12 bits of the accumulator are used. +// The MSB is used to create the falling edge of the triangle by inverting +// the lower 11 bits. The MSB is thrown away and the lower 11 bits are +// left-shifted (half the resolution, full amplitude). +// Ring modulation substitutes the MSB with MSB EOR sync_source MSB. +// +RESID_INLINE +reg12 WaveformGenerator::output___T() +{ + reg24 msb = (ring_mod ? accumulator ^ sync_source->accumulator : accumulator) + & 0x800000; + return ((msb ? ~accumulator : accumulator) >> 11) & 0xffe; +} + +// Sawtooth: +// The output is identical to the upper 12 bits of the accumulator. +// +RESID_INLINE +reg12 WaveformGenerator::output__S_() +{ + return accumulator >> 12; +} + +// Pulse: +// The upper 12 bits of the accumulator are used. +// These bits are compared to the pulse width register by a 12 bit digital +// comparator; output is either all one or all zero bits. +// NB! The output is actually delayed one cycle after the compare. +// This is not modeled. +// +// The test bit, when set to one, holds the pulse waveform output at 0xfff +// regardless of the pulse width setting. +// +RESID_INLINE +reg12 WaveformGenerator::output_P__() +{ + return (test || (accumulator >> 12) >= pw) ? 0xfff : 0x000; +} + +// Noise: +// The noise output is taken from intermediate bits of a 23-bit shift register +// which is clocked by bit 19 of the accumulator. +// NB! The output is actually delayed 2 cycles after bit 19 is set high. +// This is not modeled. +// +// Operation: Calculate EOR result, shift register, set bit 0 = result. +// +// ----------------------->--------------------- +// | | +// ----EOR---- | +// | | | +// 2 2 2 1 1 1 1 1 1 1 1 1 1 | +// Register bits: 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <--- +// | | | | | | | | +// OSC3 bits : 7 6 5 4 3 2 1 0 +// +// Since waveform output is 12 bits the output is left-shifted 4 times. +// +RESID_INLINE +reg12 WaveformGenerator::outputN___() +{ + return + ((shift_register & 0x400000) >> 11) | + ((shift_register & 0x100000) >> 10) | + ((shift_register & 0x010000) >> 7) | + ((shift_register & 0x002000) >> 5) | + ((shift_register & 0x000800) >> 4) | + ((shift_register & 0x000080) >> 1) | + ((shift_register & 0x000010) << 1) | + ((shift_register & 0x000004) << 2); +} + +// Combined waveforms: +// By combining waveforms, the bits of each waveform are effectively short +// circuited. A zero bit in one waveform will result in a zero output bit +// (thus the infamous claim that the waveforms are AND'ed). +// However, a zero bit in one waveform will also affect the neighboring bits +// in the output. The reason for this has not been determined. +// +// Example: +// +// 1 1 +// Bit # 1 0 9 8 7 6 5 4 3 2 1 0 +// ----------------------- +// Sawtooth 0 0 0 1 1 1 1 1 1 0 0 0 +// +// Triangle 0 0 1 1 1 1 1 1 0 0 0 0 +// +// AND 0 0 0 1 1 1 1 1 0 0 0 0 +// +// Output 0 0 0 0 1 1 1 0 0 0 0 0 +// +// +// This behavior would be quite difficult to model exactly, since the SID +// in this case does not act as a digital state machine. Tests show that minor +// (1 bit) differences can actually occur in the output from otherwise +// identical samples from OSC3 when waveforms are combined. To further +// complicate the situation the output changes slightly with time (more +// neighboring bits are successively set) when the 12-bit waveform +// registers are kept unchanged. +// +// It is probably possible to come up with a valid model for the +// behavior, however this would be far too slow for practical use since it +// would have to be based on the mutual influence of individual bits. +// +// The output is instead approximated by using the upper bits of the +// accumulator as an index to look up the combined output in a table +// containing actual combined waveform samples from OSC3. +// These samples are 8 bit, so 4 bits of waveform resolution is lost. +// All OSC3 samples are taken with FREQ=0x1000, adding a 1 to the upper 12 +// bits of the accumulator each cycle for a sample period of 4096 cycles. +// +// Sawtooth+Triangle: +// The sawtooth output is used to look up an OSC3 sample. +// +// Pulse+Triangle: +// The triangle output is right-shifted and used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// The reason for using the triangle output as the index is to handle ring +// modulation. Only the first half of the sample is used, which should be OK +// since the triangle waveform has half the resolution of the accumulator. +// +// Pulse+Sawtooth: +// The sawtooth output is used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// +// Pulse+Sawtooth+Triangle: +// The sawtooth output is used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// +RESID_INLINE +reg12 WaveformGenerator::output__ST() +{ + return wave__ST[output__S_()] << 4; +} + +RESID_INLINE +reg12 WaveformGenerator::output_P_T() +{ + return (wave_P_T[output___T() >> 1] << 4) & output_P__(); +} + +RESID_INLINE +reg12 WaveformGenerator::output_PS_() +{ + return (wave_PS_[output__S_()] << 4) & output_P__(); +} + +RESID_INLINE +reg12 WaveformGenerator::output_PST() +{ + return (wave_PST[output__S_()] << 4) & output_P__(); +} + +// Combined waveforms including noise: +// All waveform combinations including noise output zero after a few cycles. +// NB! The effects of such combinations are not fully explored. It is claimed +// that the shift register may be filled with zeroes and locked up, which +// seems to be true. +// We have not attempted to model this behavior, suffice to say that +// there is very little audible output from waveform combinations including +// noise. We hope that nobody is actually using it. +// +RESID_INLINE +reg12 WaveformGenerator::outputN__T() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputN_S_() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputN_ST() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNP__() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNP_T() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNPS_() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNPST() +{ + return 0; +} + +// ---------------------------------------------------------------------------- +// Select one of 16 possible combinations of waveforms. +// ---------------------------------------------------------------------------- +RESID_INLINE +reg12 WaveformGenerator::output() +{ + // It may seem cleaner to use an array of member functions to return + // waveform output; however a switch with inline functions is faster. + + switch (waveform) { + default: + case 0x0: + return output____(); + case 0x1: + return output___T(); + case 0x2: + return output__S_(); + case 0x3: + return output__ST(); + case 0x4: + return output_P__(); + case 0x5: + return output_P_T(); + case 0x6: + return output_PS_(); + case 0x7: + return output_PST(); + case 0x8: + return outputN___(); + case 0x9: + return outputN__T(); + case 0xa: + return outputN_S_(); + case 0xb: + return outputN_ST(); + case 0xc: + return outputNP__(); + case 0xd: + return outputNP_T(); + case 0xe: + return outputNPS_(); + case 0xf: + return outputNPST(); + } +} + +#endif // RESID_INLINING || defined(__WAVE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __WAVE_H__ diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_PST.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_PST.cc new file mode 100755 index 0000000..2198373 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_PST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_PST[] = +const reg8 wave6581_PST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +/* 0x7f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +/* 0x7f8: */ 0x00, 0x00, 0x00, 0x78, 0x78, 0x7e, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x78, 0x78, 0x7e, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_PS_.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_PS_.cc new file mode 100755 index 0000000..08febfe --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_PS_.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_PS_[] = +const reg8 wave6581_PS_[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, +/* 0x3f8: */ 0x00, 0x30, 0x38, 0x3f, 0x3e, 0x3f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5f, +/* 0x5f8: */ 0x00, 0x40, 0x40, 0x5f, 0x5c, 0x5f, 0x5f, 0x5f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6b, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x6d, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x6e, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x6f, +/* 0x6f8: */ 0x00, 0x60, 0x60, 0x6f, 0x60, 0x6f, 0x6f, 0x6f, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x738: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x60, 0x73, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x758: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x75, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x768: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x76, +/* 0x770: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x77, +/* 0x778: */ 0x00, 0x70, 0x70, 0x77, 0x70, 0x77, 0x77, 0x77, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x798: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x79, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x70, 0x7a, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7b, +/* 0x7b8: */ 0x40, 0x70, 0x70, 0x7b, 0x78, 0x7b, 0x7b, 0x7b, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7c, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7d, +/* 0x7d8: */ 0x40, 0x70, 0x78, 0x7d, 0x78, 0x7d, 0x7d, 0x7d, +/* 0x7e0: */ 0x00, 0x40, 0x40, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0x7e8: */ 0x60, 0x78, 0x78, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0x7f0: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x7f8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, +/* 0xbf8: */ 0x00, 0x30, 0x38, 0x3f, 0x3e, 0x3f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5f, +/* 0xdf8: */ 0x00, 0x40, 0x40, 0x5f, 0x5c, 0x5f, 0x5f, 0x5f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6b, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6d, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x6e, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x6f, +/* 0xef8: */ 0x00, 0x60, 0x60, 0x6f, 0x60, 0x6f, 0x6f, 0x6f, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x60, 0x73, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x75, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x76, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x77, +/* 0xf78: */ 0x00, 0x70, 0x70, 0x77, 0x70, 0x77, 0x77, 0x77, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x79, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x70, 0x7a, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7b, +/* 0xfb8: */ 0x40, 0x70, 0x70, 0x7b, 0x78, 0x7b, 0x7b, 0x7b, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7c, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7d, +/* 0xfd8: */ 0x40, 0x70, 0x78, 0x7d, 0x78, 0x7d, 0x7d, 0x7d, +/* 0xfe0: */ 0x00, 0x40, 0x40, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0xfe8: */ 0x60, 0x78, 0x78, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0xff0: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7c, 0x7f, 0x7f, 0x7f, +/* 0xff8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_P_T.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_P_T.cc new file mode 100755 index 0000000..03c770f --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581_P_T.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_P_T[] = +const reg8 wave6581_P_T[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x3f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x5f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x378: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x6f, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x70, 0x77, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7b, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, +/* 0x3e8: */ 0x00, 0x40, 0x40, 0x70, 0x60, 0x70, 0x78, 0x7d, +/* 0x3f0: */ 0x00, 0x40, 0x60, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0x3f8: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x578: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0xa0, 0xa0, 0xaf, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5b8: */ 0x00, 0x80, 0x80, 0xa0, 0x80, 0xa0, 0xb0, 0xb7, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5d8: */ 0x00, 0x80, 0x80, 0xa0, 0x80, 0xb0, 0xb0, 0xbb, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0x5e8: */ 0x80, 0x80, 0x80, 0xb0, 0x80, 0xb0, 0xb8, 0xbd, +/* 0x5f0: */ 0x80, 0x80, 0x80, 0xb8, 0xa0, 0xb8, 0xb8, 0xbe, +/* 0x5f8: */ 0xa0, 0xb8, 0xbc, 0xbf, 0xbe, 0xbf, 0xbf, 0xbf, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x670: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x678: */ 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x698: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0xc0, 0xc0, +/* 0x6b8: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd7, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x6d0: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0x6d8: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xdb, +/* 0x6e0: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xd0, +/* 0x6e8: */ 0x80, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd8, 0xdd, +/* 0x6f0: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd8, 0xd8, 0xde, +/* 0x6f8: */ 0xc0, 0xd8, 0xdc, 0xdf, 0xdc, 0xdf, 0xdf, 0xdf, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x718: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x728: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x730: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x738: */ 0x80, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe7, +/* 0x740: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x748: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x750: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x758: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xeb, +/* 0x760: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0x768: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xed, +/* 0x770: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, 0xe8, 0xee, +/* 0x778: */ 0xe0, 0xe8, 0xec, 0xef, 0xec, 0xef, 0xef, 0xef, +/* 0x780: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0x788: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, +/* 0x790: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, +/* 0x798: */ 0xc0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf3, +/* 0x7a0: */ 0x80, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xf0, +/* 0x7a8: */ 0xc0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf5, +/* 0x7b0: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf6, +/* 0x7b8: */ 0xf0, 0xf0, 0xf4, 0xf7, 0xf4, 0xf7, 0xf7, 0xf7, +/* 0x7c0: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0x7c8: */ 0xe0, 0xe0, 0xe0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf9, +/* 0x7d0: */ 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xfa, +/* 0x7d8: */ 0xf0, 0xf8, 0xf8, 0xfb, 0xf8, 0xfb, 0xfb, 0xfb, +/* 0x7e0: */ 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xfc, 0xfc, +/* 0x7e8: */ 0xf8, 0xfc, 0xfc, 0xfd, 0xfc, 0xfd, 0xfd, 0xfd, +/* 0x7f0: */ 0xf8, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0x7f8: */ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x800: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, +/* 0x808: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0xf8, +/* 0x810: */ 0xfd, 0xfd, 0xfd, 0xfc, 0xfd, 0xfc, 0xfc, 0xf8, +/* 0x818: */ 0xfc, 0xfc, 0xfc, 0xf0, 0xf8, 0xf0, 0xf0, 0xe0, +/* 0x820: */ 0xfb, 0xfb, 0xfb, 0xf8, 0xfb, 0xf8, 0xf8, 0xf0, +/* 0x828: */ 0xfa, 0xf8, 0xf8, 0xf0, 0xf8, 0xf0, 0xf0, 0xe0, +/* 0x830: */ 0xf9, 0xf8, 0xf8, 0xf0, 0xf8, 0xf0, 0xe0, 0xe0, +/* 0x838: */ 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, +/* 0x840: */ 0xf7, 0xf7, 0xf7, 0xf4, 0xf7, 0xf4, 0xf0, 0xf0, +/* 0x848: */ 0xf6, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, +/* 0x850: */ 0xf5, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, +/* 0x858: */ 0xf0, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xc0, 0x80, +/* 0x860: */ 0xf3, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, +/* 0x868: */ 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x870: */ 0xf0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x878: */ 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x880: */ 0xef, 0xef, 0xef, 0xec, 0xef, 0xec, 0xe8, 0xe0, +/* 0x888: */ 0xee, 0xe8, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, +/* 0x890: */ 0xed, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, +/* 0x898: */ 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x8a0: */ 0xeb, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, +/* 0x8a8: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8b0: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8b8: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0xe7, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xc0, 0x80, +/* 0x8c8: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8d0: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8d8: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0xdf, 0xdf, 0xdf, 0xdc, 0xdf, 0xdc, 0xd8, 0xc0, +/* 0x908: */ 0xde, 0xd8, 0xd8, 0xc0, 0xd8, 0xc0, 0xc0, 0xc0, +/* 0x910: */ 0xdd, 0xd8, 0xd0, 0xc0, 0xd0, 0xc0, 0xc0, 0x80, +/* 0x918: */ 0xd0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x920: */ 0xdb, 0xd0, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x928: */ 0xc0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x930: */ 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x938: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0xd7, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x948: */ 0xc0, 0xc0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x950: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x958: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x968: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, +/* 0x988: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x990: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0xbf, 0xbf, 0xbf, 0xbe, 0xbf, 0xbc, 0xbc, 0xa0, +/* 0xa08: */ 0xbe, 0xbc, 0xb8, 0xa0, 0xb8, 0xa0, 0x80, 0x80, +/* 0xa10: */ 0xbd, 0xb8, 0xb0, 0x80, 0xb0, 0x80, 0x80, 0x80, +/* 0xa18: */ 0xb0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xa20: */ 0xbb, 0xb0, 0xb0, 0x80, 0xa0, 0x80, 0x80, 0x00, +/* 0xa28: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa30: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0xb7, 0xb0, 0xa0, 0x80, 0xa0, 0x80, 0x80, 0x00, +/* 0xa48: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0xaf, 0xa0, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x00, +/* 0xa88: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x9f, 0x90, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc00: */ 0x7f, 0x7f, 0x7f, 0x7e, 0x7f, 0x7c, 0x7c, 0x70, +/* 0xc08: */ 0x7e, 0x7c, 0x78, 0x60, 0x78, 0x60, 0x60, 0x00, +/* 0xc10: */ 0x7d, 0x78, 0x78, 0x60, 0x70, 0x40, 0x40, 0x00, +/* 0xc18: */ 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x7b, 0x78, 0x70, 0x40, 0x70, 0x40, 0x00, 0x00, +/* 0xc28: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x77, 0x70, 0x70, 0x00, 0x60, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x6f, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x5f, 0x58, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x3f, 0x3c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave6581__ST.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581__ST.cc new file mode 100755 index 0000000..ac5f52d --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave6581__ST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581__ST[] = +const reg8 wave6581__ST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0x3f8: */ 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7e8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7f0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, +/* 0x7f8: */ 0x3e, 0x3e, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0xbf8: */ 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0xfe8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0xff0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, +/* 0xff8: */ 0x3e, 0x3e, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_PST.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_PST.cc new file mode 100755 index 0000000..f43f34d --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_PST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_PST[] = +const reg8 wave8580_PST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, +/* 0x7f0: */ 0x60, 0x20, 0x70, 0x70, 0x70, 0x70, 0x70, 0x78, +/* 0x7f8: */ 0x78, 0x78, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xdf8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8c, 0x9f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe80: */ 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0xe88: */ 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0xef0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xef8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0xf00: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf08: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf10: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf18: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf20: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf28: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf30: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf38: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf40: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf48: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf50: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf58: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf68: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xf70: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, +/* 0xf80: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf88: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf90: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf98: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfa0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfa8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfb0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, +/* 0xfb8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfc0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfc8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfd0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfd8: */ 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe8: */ 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xff0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, +/* 0xff8: */ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_PS_.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_PS_.cc new file mode 100755 index 0000000..4b66a4b --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_PS_.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_PS_[] = +const reg8 wave8580_PS_[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x1f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0x3f8: */ 0x00, 0x0c, 0x1c, 0x3f, 0x1e, 0x3f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x5f, 0x0c, 0x5f, 0x5f, 0x5f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, +/* 0x6f8: */ 0x00, 0x40, 0x40, 0x6f, 0x40, 0x6f, 0x6f, 0x6f, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x61, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x768: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x70, +/* 0x770: */ 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x70, +/* 0x778: */ 0x40, 0x60, 0x60, 0x77, 0x60, 0x77, 0x77, 0x77, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, +/* 0x798: */ 0x00, 0x40, 0x40, 0x60, 0x40, 0x60, 0x60, 0x79, +/* 0x7a0: */ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, +/* 0x7a8: */ 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x78, +/* 0x7b0: */ 0x40, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, +/* 0x7b8: */ 0x60, 0x70, 0x70, 0x78, 0x70, 0x79, 0x7b, 0x7b, +/* 0x7c0: */ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, +/* 0x7c8: */ 0x60, 0x60, 0x60, 0x70, 0x60, 0x70, 0x70, 0x7c, +/* 0x7d0: */ 0x60, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7c, +/* 0x7d8: */ 0x70, 0x78, 0x78, 0x7c, 0x78, 0x7c, 0x7c, 0x7d, +/* 0x7e0: */ 0x70, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7c, +/* 0x7e8: */ 0x78, 0x7c, 0x7c, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0x7f0: */ 0x7c, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x7f8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8d, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x8e, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x8f, +/* 0x9f8: */ 0x80, 0x80, 0x80, 0x9f, 0x80, 0x9f, 0x9f, 0x9f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x87, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x83, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0xad8: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xae0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xae8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, +/* 0xaf0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x87, +/* 0xaf8: */ 0x80, 0x80, 0x80, 0x87, 0x80, 0x8f, 0xaf, 0xaf, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, +/* 0xb28: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, +/* 0xb40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xb60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xb70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xb78: */ 0x80, 0x80, 0x80, 0xa0, 0x80, 0xa3, 0xb7, 0xb7, +/* 0xb80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb1, +/* 0xba0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xba8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0xbb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0xbb8: */ 0x80, 0xa0, 0xa0, 0xb0, 0xa0, 0xb8, 0xb9, 0xbb, +/* 0xbc0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xbc8: */ 0x80, 0x80, 0x80, 0xa0, 0x80, 0xa0, 0xa0, 0xb8, +/* 0xbd0: */ 0x80, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb8, +/* 0xbd8: */ 0xa0, 0xb0, 0xb0, 0xb8, 0xb0, 0xbc, 0xbc, 0xbd, +/* 0xbe0: */ 0xa0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb8, 0xb8, 0xbc, +/* 0xbe8: */ 0xb0, 0xb8, 0xb8, 0xbc, 0xb8, 0xbc, 0xbe, 0xbe, +/* 0xbf0: */ 0xb8, 0xbc, 0xbc, 0xbe, 0xbc, 0xbe, 0xbe, 0xbf, +/* 0xbf8: */ 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +/* 0xc10: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc18: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc28: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xc40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc7, +/* 0xc80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xca0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xca8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc3, +/* 0xcc0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcc8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xcd0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xcd8: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc1, +/* 0xce0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xce8: */ 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xcf0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc7, +/* 0xcf8: */ 0xc0, 0xc0, 0xc0, 0xc7, 0xc0, 0xcf, 0xcf, 0xcf, +/* 0xd00: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd08: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd10: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd18: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd28: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0xd38: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc3, +/* 0xd40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd48: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0xd50: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd58: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, +/* 0xd60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd68: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd70: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd78: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc7, 0xd7, +/* 0xd80: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd88: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd90: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd98: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xda0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xda8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0xdb0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0xdb8: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd8, 0xdb, +/* 0xdc0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xdc8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, +/* 0xdd0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, +/* 0xdd8: */ 0xc0, 0xc0, 0xc0, 0xd8, 0xd0, 0xd8, 0xd8, 0xdd, +/* 0xde0: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd0, 0xdc, +/* 0xde8: */ 0xd0, 0xd8, 0xd8, 0xdc, 0xd8, 0xdc, 0xdc, 0xde, +/* 0xdf0: */ 0xd8, 0xdc, 0xdc, 0xde, 0xdc, 0xde, 0xde, 0xdf, +/* 0xdf8: */ 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, +/* 0xe00: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe08: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe10: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe18: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe20: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe28: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe30: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe38: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe3, +/* 0xe40: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe48: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe50: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe58: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe1, +/* 0xe60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe68: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xe70: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xe78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe3, 0xe7, +/* 0xe80: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe88: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xe90: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xe98: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xea0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xea8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xeb0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xeb8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xeb, +/* 0xec0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xec8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xed0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xed8: */ 0xe0, 0xe0, 0xe0, 0xe8, 0xe0, 0xe8, 0xe8, 0xed, +/* 0xee0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xec, +/* 0xee8: */ 0xe0, 0xe0, 0xe0, 0xec, 0xe8, 0xec, 0xec, 0xee, +/* 0xef0: */ 0xe8, 0xe8, 0xe8, 0xec, 0xec, 0xee, 0xee, 0xef, +/* 0xef8: */ 0xec, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, +/* 0xf00: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf08: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf10: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf18: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0xf20: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0xf28: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf0, +/* 0xf30: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf38: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf3, +/* 0xf40: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf48: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf50: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf58: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf5, +/* 0xf60: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf68: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, 0xf4, 0xf6, +/* 0xf70: */ 0xf0, 0xf0, 0xf0, 0xf4, 0xf0, 0xf4, 0xf6, 0xf7, +/* 0xf78: */ 0xf4, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, +/* 0xf80: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, +/* 0xf88: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0xf90: */ 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0xf98: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, +/* 0xfa0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfa8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfa, +/* 0xfb0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfb, +/* 0xfb8: */ 0xf8, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, +/* 0xfc0: */ 0xf8, 0xf8, 0xf8, 0xfc, 0xf8, 0xfc, 0xfc, 0xfc, +/* 0xfc8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xfd0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, +/* 0xfd8: */ 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, +/* 0xfe0: */ 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xfe8: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xff0: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0xff8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_P_T.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_P_T.cc new file mode 100755 index 0000000..344e539 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580_P_T.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_P_T[] = +const reg8 wave8580_P_T[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x3f, 0x3f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x5e, 0x5f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x378: */ 0x00, 0x00, 0x00, 0x40, 0x40, 0x60, 0x60, 0x6f, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x60, +/* 0x3b8: */ 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x70, 0x77, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, +/* 0x3c8: */ 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, +/* 0x3d0: */ 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x70, +/* 0x3d8: */ 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x78, 0x7b, +/* 0x3e0: */ 0x60, 0x60, 0x60, 0x70, 0x60, 0x70, 0x70, 0x70, +/* 0x3e8: */ 0x70, 0x70, 0x70, 0x78, 0x78, 0x78, 0x78, 0x7c, +/* 0x3f0: */ 0x78, 0x78, 0x78, 0x7c, 0x78, 0x7c, 0x7c, 0x7e, +/* 0x3f8: */ 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4d8: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4e8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4f0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4f8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8e, 0x9f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, +/* 0x530: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x538: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x540: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, +/* 0x548: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x550: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x558: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x560: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x568: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x570: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x578: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xaf, +/* 0x580: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x588: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x590: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x598: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5a0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5a8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5b0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5b8: */ 0x80, 0x80, 0x80, 0xa0, 0xa0, 0xa0, 0xa0, 0xb7, +/* 0x5c0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5c8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0x5d0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, 0xa0, +/* 0x5d8: */ 0xa0, 0xa0, 0xa0, 0xb0, 0xa0, 0xb0, 0xb0, 0xbb, +/* 0x5e0: */ 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb0, 0xb0, +/* 0x5e8: */ 0xa0, 0xb0, 0xb0, 0xb8, 0xb0, 0xb8, 0xb8, 0xbc, +/* 0x5f0: */ 0xb0, 0xb8, 0xb8, 0xb8, 0xb8, 0xbc, 0xbc, 0xbe, +/* 0x5f8: */ 0xbc, 0xbc, 0xbe, 0xbf, 0xbe, 0xbf, 0xbf, 0xbf, +/* 0x600: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x608: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x610: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x618: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x620: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x628: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x630: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x638: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x640: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x648: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x650: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0x658: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x660: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0x668: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x670: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x678: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0x680: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x688: */ 0xc0, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x690: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x698: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6a0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6a8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6b0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6b8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd7, +/* 0x6c0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6c8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6d0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6d8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xd9, +/* 0x6e0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0x6e8: */ 0xc0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd8, 0xd8, 0xdc, +/* 0x6f0: */ 0xd0, 0xd0, 0xd8, 0xd8, 0xd8, 0xdc, 0xdc, 0xde, +/* 0x6f8: */ 0xdc, 0xdc, 0xde, 0xdf, 0xde, 0xdf, 0xdf, 0xdf, +/* 0x700: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x708: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x710: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x718: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0x720: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0x728: */ 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x730: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x738: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe7, +/* 0x740: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x748: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x750: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x758: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, +/* 0x760: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x768: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, 0xec, +/* 0x770: */ 0xe0, 0xe0, 0xe0, 0xe8, 0xe8, 0xe8, 0xec, 0xee, +/* 0x778: */ 0xec, 0xec, 0xec, 0xee, 0xee, 0xef, 0xef, 0xef, +/* 0x780: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x788: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, +/* 0x790: */ 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x798: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x7a0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x7a8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, +/* 0x7b0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, +/* 0x7b8: */ 0xf0, 0xf4, 0xf4, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, +/* 0x7c0: */ 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0x7c8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x7d0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x7d8: */ 0xf8, 0xf8, 0xf8, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, +/* 0x7e0: */ 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0x7e8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, +/* 0x7f0: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0x7f8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x800: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x808: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, +/* 0x810: */ 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0x818: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, +/* 0x820: */ 0xfb, 0xfb, 0xfb, 0xfa, 0xfa, 0xf8, 0xf8, 0xf8, +/* 0x828: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x830: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x838: */ 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x840: */ 0xf7, 0xf7, 0xf7, 0xf6, 0xf6, 0xf4, 0xf4, 0xf0, +/* 0x848: */ 0xf4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x850: */ 0xf4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x858: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x860: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x868: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, +/* 0x870: */ 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x878: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x880: */ 0xef, 0xef, 0xef, 0xee, 0xee, 0xec, 0xec, 0xe8, +/* 0x888: */ 0xee, 0xec, 0xe8, 0xe8, 0xe8, 0xe0, 0xe0, 0xe0, +/* 0x890: */ 0xec, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x898: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8a0: */ 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8a8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8b0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8b8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8c0: */ 0xe7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8c8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8d0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, +/* 0x8d8: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8e0: */ 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8e8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8f0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8f8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x900: */ 0xdf, 0xdf, 0xdf, 0xde, 0xdf, 0xde, 0xdc, 0xdc, +/* 0x908: */ 0xde, 0xdc, 0xdc, 0xd8, 0xd8, 0xd8, 0xd0, 0xd0, +/* 0x910: */ 0xdc, 0xd8, 0xd8, 0xd0, 0xd0, 0xd0, 0xd0, 0xc0, +/* 0x918: */ 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x920: */ 0xd9, 0xd0, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x928: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x930: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x938: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x940: */ 0xd7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x948: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x950: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x958: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x960: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x968: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x970: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x978: */ 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x980: */ 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x988: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x990: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x998: */ 0xc0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x80, +/* 0x9a0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x9a8: */ 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9b0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9b8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9c0: */ 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9c8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9d0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9d8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9e0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9e8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9f0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9f8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa00: */ 0xbf, 0xbf, 0xbf, 0xbe, 0xbf, 0xbe, 0xbc, 0xbc, +/* 0xa08: */ 0xbe, 0xbc, 0xbc, 0xb8, 0xb8, 0xb8, 0xb8, 0xb0, +/* 0xa10: */ 0xbc, 0xb8, 0xb8, 0xb0, 0xb8, 0xb0, 0xb0, 0xb0, +/* 0xa18: */ 0xb0, 0xb0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, +/* 0xa20: */ 0xbb, 0xb0, 0xb0, 0xa0, 0xb0, 0xa0, 0xa0, 0xa0, +/* 0xa28: */ 0xa0, 0xa0, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa30: */ 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa40: */ 0xb7, 0xb0, 0xa0, 0xa0, 0xa0, 0x80, 0x80, 0x80, +/* 0xa48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa80: */ 0xaf, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xaa0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xaa8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xab0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xab8: */ 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xac8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, +/* 0xad0: */ 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x9f, 0x9e, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb08: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb10: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb18: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc00: */ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7c, +/* 0xc08: */ 0x7e, 0x7c, 0x7c, 0x78, 0x7c, 0x78, 0x78, 0x78, +/* 0xc10: */ 0x7c, 0x78, 0x78, 0x78, 0x78, 0x70, 0x70, 0x70, +/* 0xc18: */ 0x78, 0x70, 0x70, 0x60, 0x70, 0x60, 0x60, 0x60, +/* 0xc20: */ 0x7b, 0x78, 0x70, 0x70, 0x70, 0x60, 0x60, 0x60, +/* 0xc28: */ 0x70, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, +/* 0xc30: */ 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, +/* 0xc38: */ 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x77, 0x70, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, +/* 0xc48: */ 0x60, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x6f, 0x64, 0x60, 0x40, 0x40, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x5f, 0x5e, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x3f, 0x3f, 0x3e, 0x00, 0x1c, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/reSID/wave8580__ST.cc b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580__ST.cc new file mode 100755 index 0000000..e2ca522 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/reSID/wave8580__ST.cc @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580__ST[] = +const reg8 wave8580__ST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0x3f8: */ 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7e8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7f0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3e, +/* 0x7f8: */ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0xbf8: */ 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x1f, 0x1f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x83, 0x83, +/* 0xe80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xef0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xef8: */ 0x80, 0x80, 0x80, 0x80, 0x87, 0x87, 0x87, 0x8f, +/* 0xf00: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xf08: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf10: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf18: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf20: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xf28: */ 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, +/* 0xf30: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf38: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf40: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf48: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf50: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf58: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf60: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf68: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf70: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, 0xe3, +/* 0xf80: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf88: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf90: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf98: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfa0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfa8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfb0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfb8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, +/* 0xfc0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfc8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfd0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfd8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xfe8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xff0: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xff8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_esp32/espsnd/main/reSID/sid.cpp b/MCUME_esp32/espsnd/main/reSID/sid.cpp new file mode 100755 index 0000000..a446ee4 --- /dev/null +++ b/MCUME_esp32/espsnd/main/reSID/sid.cpp @@ -0,0 +1,49 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ + +#include "reSID/envelope.cc" +#include "reSID/extfilt.cc" +#include "reSID/filter.cc" +#include "reSID/pot.cc" +#include "reSID/version.cc" +#include "reSID/voice.cc" + + +#include "reSID/wave6581__ST.cc" +#include "reSID/wave6581_P_T.cc" +#include "reSID/wave6581_PS_.cc" +#include "reSID/wave6581_PST.cc" + +/* +#include "reSID/wave8580__ST.cc" +#include "reSID/wave8580_P_T.cc" +#include "reSID/wave8580_PS_.cc" +#include "reSID/wave8580_PST.cc" +*/ +#include "reSID/wave.cc" + +#include "reSID/sid.cc" \ No newline at end of file diff --git a/MCUME_esp32/espsnd/main/sndplay.cpp b/MCUME_esp32/espsnd/main/sndplay.cpp new file mode 100644 index 0000000..192f445 --- /dev/null +++ b/MCUME_esp32/espsnd/main/sndplay.cpp @@ -0,0 +1,170 @@ +extern "C" { +#include "emuapi.h" +} + + +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include + +#include "reSID/reSID.h" +#include "LibFC14/fc14audiodecoder.h" +#include "StSnd/StSoundLibrary.h" + + +enum MusType { + Undefined, + C64Dmp, + StYm, + AmFc +}; + +static MusType mustype = Undefined; +static bool playing = false; +static int mussize=0; +static void * musbuffer=nullptr; + +char buffer[26]; +char oldbuffer[26]; + +static AudioPlaySID playSID; +static void *fcDecoder = nullptr; +static YMMUSIC *ymDecoder; + + +void snd_Init(void) +{ + switch (mustype) { + case C64Dmp: + playing = true; + break; + case AmFc: + if (musbuffer) { + bool haveModule = false; + fcDecoder = fc14dec_new(); + haveModule = fc14dec_init(fcDecoder,(void*)musbuffer,mussize); + if ( !haveModule ) { + fc14dec_delete(fcDecoder); + printf("FC module not supported\n"); + } + else { + printf("FC music loaded\n"); + fc14dec_mixer_init(fcDecoder,22050,16,1,0 /*32767*/); + playing = true; + } + } + break; + case StYm: + if (musbuffer) { + ymDecoder = ymMusicCreate(); + printf("YM music loader\n"); + if (ymMusicLoadMemory(ymDecoder,(void*)musbuffer,mussize)) + { + printf("YM music loaded\n"); + ymMusicInfo_t info; + ymMusicGetInfo(ymDecoder,&info); + printf("Name.....: %s\n",info.pSongName); + printf("Author...: %s\n",info.pSongAuthor); + printf("Comment..: %s\n",info.pSongComment); + printf("Duration.: %d:%02d\n",info.musicTimeInSec/60,info.musicTimeInSec%60); + printf("Driver...: %s\n", info.pSongPlayer); + ymMusicSetLoopMode(ymDecoder,YMTRUE); + ymMusicPlay(ymDecoder); + playing = true; + } + } + break; + default: + break; + } +} + +int oldSec = -1; +void snd_Step(void) +{ + vTaskDelay(20 / portTICK_PERIOD_MS); + switch (mustype) { + case C64Dmp: + if (emu_FileRead(buffer, 25) == 25 ) { + for(int i=0;i<25;i++) { + if(buffer[i] != oldbuffer[i]) { + playSID.setreg(i, buffer[i]); + oldbuffer[i] = buffer[i]; + } + } + } else { + if (playSID.isPlaying()) { + emu_FileClose(); + playSID.stop(); + } + } + break; + case AmFc: + break; + case StYm: + //int sec = ymMusicGetPos(ymDecoder) / 1000; + //if (sec != oldSec) + // { + // printf("Time: %d:%02d\r",sec/60,sec%60); + // oldSec = sec; + // } + break; + default: + break; + } +} + +void snd_Start(char * filename) +{ + mussize = emu_FileSize(filename); + char *dot = strrchr(filename, '.'); + if (dot && !strcmp(dot, ".dmp")) { + mustype = C64Dmp; + if (emu_FileOpen(filename) == 0) { + printf("SID music failure, cannot open\n"); + } + } + else if (dot && !strcmp(dot, ".fc")) { + mustype = AmFc; + musbuffer = emu_Malloc(mussize); + if (musbuffer) + { + if (emu_FileOpen(filename)) { + if (emu_FileRead((char*)musbuffer, mussize) != mussize ) { + musbuffer = nullptr; + } + emu_FileClose(); + } else { + musbuffer = nullptr; + } + } + if (musbuffer == nullptr) { + printf("FC music failure, cannot open/allocate\n"); + } + } + else if (dot && !strcmp(dot, ".ym")) { + mustype = StYm; + } +} + +void SND_Process( void * stream, int len ) +{ + if (playing) { + switch (mustype) { + case C64Dmp: + playSID.update(stream, len); + break; + case AmFc: + fc14dec_buffer_fill(fcDecoder,stream,len*2); + break; + case StYm: + ymMusicCompute((void*)ymDecoder,(ymsample*)stream,len); + break; + default: + break; + } + } +} + + diff --git a/MCUME_esp32/espsnd/main/sndplay.h b/MCUME_esp32/espsnd/main/sndplay.h new file mode 100644 index 0000000..c88bdef --- /dev/null +++ b/MCUME_esp32/espsnd/main/sndplay.h @@ -0,0 +1,4 @@ +extern void snd_Init(void); +extern void snd_Step(void); +extern void snd_Start(char * filename); + diff --git a/MCUME_esp32/espsnd/sdkconfig b/MCUME_esp32/espsnd/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/espsnd/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espsnd/sdkconfig.old b/MCUME_esp32/espsnd/sdkconfig.old new file mode 100644 index 0000000..a16387d --- /dev/null +++ b/MCUME_esp32/espsnd/sdkconfig.old @@ -0,0 +1,679 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_OPTIMIZATION_LEVEL_RELEASE= +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_240= +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espsnd/ym2h/.DS_Store b/MCUME_esp32/espsnd/ym2h/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/.DS_Store differ diff --git a/MCUME_esp32/espsnd/ym2h/commando.h b/MCUME_esp32/espsnd/ym2h/commando.h new file mode 100644 index 0000000..2377401 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/commando.h @@ -0,0 +1,3079 @@ +const unsigned char musym[49241] = { +0x59,0x4D,0x35,0x21,0x4C,0x65,0x4F,0x6E,0x41,0x72,0x44,0x21,0x00,0x00,0x0C,0x00, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1E,0x84,0x80,0x00,0x32,0x00,0x00,0x00,0x00, +0x00,0x00,0x43,0x6F,0x6D,0x6D,0x61,0x6E,0x64,0x6F,0x20,0x48,0x69,0x67,0x68,0x73, +0x63,0x6F,0x72,0x65,0x00,0x43,0x68,0x72,0x69,0x73,0x70,0x79,0x20,0x4E,0x6F,0x6F, +0x64,0x6C,0x65,0x00,0x43,0x6F,0x6E,0x76,0x3B,0x20,0x4F,0x65,0x64,0x69,0x70,0x75, +0x73,0x27,0x39,0x38,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7, +0xF7,0xF7,0xF7,0xF7,0xF7,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, +0xE0,0xE0,0xE0,0xE0,0xE0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0xB0,0xB0,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0xDD,0xDD,0xFC,0x1B,0x3A,0x59,0x78,0x97,0xB6,0xD5,0xF4, +0x13,0x32,0x51,0x70,0x8F,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4,0xF4, +0xF4,0xF4,0xF4,0xF4,0xF4,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, +0x09,0x09,0x09,0x09,0x09,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x03,0x03,0x03,0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C,0x38,0x38,0x1C,0x1C, +0x38,0x38,0x1C,0x1C,0x38,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD,0x7A,0x7A,0xBD,0xBD, +0x7A,0x7A,0xBD,0xBD,0x7A,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E,0x1C,0x1C,0x8E,0x8E, +0x1C,0x1C,0x8E,0x8E,0x1C,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x02,0x01,0x01, +0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00, +0x01,0x01,0x00,0x00,0x01,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xCF,0xD4, +0xD9,0xDE,0xD9,0xD4,0xCF,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D, +0x28,0x2D,0x32,0x37,0x32,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x4D,0x52, +0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52, +0x4D,0x52,0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C, +0x57,0x52,0x4D,0x52,0x57,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xCF,0xD4, +0xD9,0xDE,0xD9,0xD4,0xCF,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D, +0x28,0x2D,0x32,0x37,0x32,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x4D,0x52, +0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52, +0x4D,0x52,0x57,0x5C,0x57,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A, +0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84, +0x7F,0x7A,0x75,0x7A,0x7F,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A, +0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84, +0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A, +0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84, +0x7F,0x7A,0x75,0x7A,0x7F,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x4D,0x52, +0x57,0x5C,0x57,0x52,0x4D,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D, +0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37, +0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07, +0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xCF,0xD4, +0xD9,0xDE,0xD9,0xD4,0xCF,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xCF,0xD4, +0xD9,0xDE,0xD9,0xD4,0xCF,0xD4,0xD9,0xDE,0xD9,0xD4,0xCF,0xD4,0xD9,0xDE,0xD9,0xD4, +0xCF,0xD4,0xD9,0xDE,0xD9,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xCF,0xD4, +0xD9,0xDE,0xD9,0xD4,0xCF,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD,0xF8,0xFD,0x02,0x07,0x02,0xFD, +0xF8,0xFD,0x02,0x07,0x02,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xDC,0xE1, +0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1, +0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB,0xE6,0xE1,0xDC,0xE1,0xE6,0xEB, +0xE6,0xE1,0xDC,0xE1,0xE6,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D,0x28,0x2D,0x32,0x37,0x32,0x2D, +0x28,0x2D,0x32,0x37,0x32,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x4D,0x52, +0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52,0x4D,0x52,0x57,0x5C,0x57,0x52, +0x4D,0x52,0x57,0x5C,0x57,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A, +0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84,0x7F,0x7A,0x75,0x7A,0x7F,0x84, +0x7F,0x7A,0x75,0x7A,0x7F,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xF8,0xFD, +0x02,0x07,0x02,0xFD,0xF8,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C, +0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26,0x21,0x1C,0x17,0x1C,0x21,0x26, +0x21,0x1C,0x17,0x1C,0x21,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x17,0x1C, +0x21,0x26,0x21,0x1C,0x17,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x28,0x2D, +0x32,0x37,0x32,0x2D,0x28,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x75,0x7A, +0x7F,0x84,0x7F,0x7A,0x75,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA4,0xA9, +0xAE,0xB3,0xAE,0xA9,0xA4,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,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,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, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,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,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, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01, +0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00, +0x01,0x01,0x01,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,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,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, +0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00, +0x00,0x00,0x01,0x01,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0E,0x0E,0x0D,0x0D,0x0D, +0x0D,0x0C,0x0C,0x0C,0x0C,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A, +0x0A,0x09,0x09,0x08,0x08,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x08, +0x07,0x07,0x06,0x06,0x05,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x08, +0x07,0x07,0x06,0x06,0x05,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x08, +0x07,0x07,0x06,0x06,0x05,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x08, +0x07,0x07,0x06,0x06,0x05,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, +0x0D,0x0D,0x0D,0x0D,0x0D,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x45,0x6E,0x64,0x21,}; diff --git a/MCUME_esp32/espsnd/ym2h/commando.ym b/MCUME_esp32/espsnd/ym2h/commando.ym new file mode 100644 index 0000000..7e1d427 Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/commando.ym differ diff --git a/MCUME_esp32/espsnd/ym2h/delta.h b/MCUME_esp32/espsnd/ym2h/delta.h new file mode 100644 index 0000000..89f4029 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/delta.h @@ -0,0 +1,4619 @@ +const unsigned char musym[73872] = { +0x59,0x4D,0x35,0x21,0x4C,0x65,0x4F,0x6E,0x41,0x72,0x44,0x21,0x00,0x00,0x12,0x02, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1E,0x84,0x80,0x00,0x32,0x00,0x00,0x00,0x00, +0x00,0x00,0x44,0x65,0x6C,0x74,0x61,0x20,0x28,0x68,0x69,0x67,0x68,0x73,0x63,0x6F, +0x72,0x65,0x29,0x00,0x4A,0x6F,0x63,0x68,0x65,0x6E,0x20,0x48,0x69,0x70,0x70,0x65, +0x6C,0x20,0x28,0x52,0x6F,0x62,0x20,0x48,0x75,0x62,0x62,0x61,0x72,0x64,0x29,0x00, +0x43,0x6F,0x6E,0x76,0x65,0x72,0x74,0x65,0x64,0x20,0x62,0x79,0x20,0x46,0x72,0x65, +0x64,0x65,0x72,0x69,0x63,0x20,0x47,0x69,0x64,0x6F,0x75,0x69,0x6E,0x00,0x00,0x00, +0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0, +0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0, +0xD0,0xD0,0xE0,0xF0,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0, +0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xB3,0xB3,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB, +0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0x70,0x70,0x70,0x78,0x70,0x68, +0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0xF7,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07, +0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7, +0xE7,0xE7,0xF7,0x07,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xF7,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7, +0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0x47,0x47,0x3F,0x47,0x4F,0x47,0x3F,0x3F, +0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0xFB,0xFB,0xFB,0x03,0xFB,0xF3, +0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE, +0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6, +0x9E,0x9E,0xA6,0xAE,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6, +0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x85,0x85,0x81,0x85,0x89,0x85,0x81,0x81, +0x85,0x89,0x85,0x81,0x81,0x85,0x89,0x85,0x81,0x81,0x53,0x53,0x53,0x57,0x53,0x4F, +0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6, +0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E, +0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4, +0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC, +0xE4,0xE4,0xEC,0xF4,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC, +0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0x53,0x53,0x4F,0x53,0x57,0x53,0x4F,0x4F, +0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0xF6,0xF6,0xF6,0xFA,0xF6,0xF2, +0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xF4,0xF4, +0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC, +0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0, +0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0, +0xD0,0xD0,0xE0,0xF0,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0, +0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xB3,0xB3,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB, +0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0x70,0x70,0x70,0x78,0x70,0x68, +0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0xF7,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07, +0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7, +0xE7,0xE7,0xF7,0x07,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xF7,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0xE7,0xF7, +0x07,0xF7,0xE7,0xE7,0xF7,0x07,0xF7,0xE7,0x47,0x47,0x3F,0x47,0x4F,0x47,0x3F,0x3F, +0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0xFB,0xFB,0xFB,0x03,0xFB,0xF3, +0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE, +0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6, +0x9E,0x9E,0xA6,0xAE,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6, +0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x85,0x85,0x81,0x85,0x89,0x85,0x81,0x81, +0x85,0x89,0x85,0x81,0x81,0x85,0x89,0x85,0x81,0x81,0x53,0x53,0x53,0x57,0x53,0x4F, +0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6, +0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E, +0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4, +0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC, +0xE4,0xE4,0xEC,0xF4,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC, +0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0x53,0x53,0x4F,0x53,0x57,0x53,0x4F,0x4F, +0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0xF6,0xF6,0xF6,0xFA,0xF6,0xF2, +0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xF4,0xF4, +0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE, +0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6, +0x9E,0x9E,0xA6,0xAE,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6, +0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x85,0x85,0x81,0x85,0x89,0x85,0x81,0x81, +0x85,0x89,0x85,0x81,0x81,0x85,0x89,0x85,0x81,0x81,0x53,0x53,0x53,0x57,0x53,0x4F, +0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6, +0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E, +0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4, +0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC, +0xE4,0xE4,0xEC,0xF4,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC, +0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0x53,0x53,0x4F,0x53,0x57,0x53,0x4F,0x4F, +0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0xF6,0xF6,0xF6,0xFA,0xF6,0xF2, +0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xF4,0xF4, +0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE, +0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6, +0x9E,0x9E,0xA6,0xAE,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6, +0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x85,0x85,0x81,0x85,0x89,0x85,0x81,0x81, +0x85,0x89,0x85,0x81,0x81,0x85,0x89,0x85,0x81,0x81,0x53,0x53,0x53,0x57,0x53,0x4F, +0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0x53,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xA6,0xA6, +0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E,0x9E,0xA6,0xAE,0xA6,0x9E, +0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4, +0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC, +0xE4,0xE4,0xEC,0xF4,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC, +0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0x53,0x53,0x4F,0x53,0x57,0x53,0x4F,0x4F, +0x53,0x57,0x53,0x4F,0x4F,0x53,0x57,0x53,0x4F,0x4F,0xF6,0xF6,0xF6,0xFA,0xF6,0xF2, +0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0xFA,0xF6,0xF2,0xF2,0xF6,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xF4,0xF4, +0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC,0xEC,0xF4,0xFC,0xF4,0xEC, +0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB, +0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3, +0xAB,0xAB,0xB3,0xBB,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3, +0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xFB,0xFB,0xF3,0xFB,0x03,0xFB,0xF3,0xF3, +0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xB3,0xB3,0xB3,0xBB,0xB3,0xAB, +0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47, +0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F, +0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB, +0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3, +0xAB,0xAB,0xB3,0xBB,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3, +0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xFB,0xFB,0xF3,0xFB,0x03,0xFB,0xF3,0xF3, +0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xB3,0xB3,0xB3,0xBB,0xB3,0xAB, +0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47, +0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB, +0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3, +0xAB,0xAB,0xB3,0xBB,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3, +0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xFB,0xFB,0xF3,0xFB,0x03,0xFB,0xF3,0xF3, +0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xB3,0xB3,0xB3,0xBB,0xB3,0xAB, +0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47, +0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F, +0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB, +0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3, +0xAB,0xAB,0xB3,0xBB,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xB3,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3, +0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xFB,0xFB,0xF3,0xFB,0x03,0xFB,0xF3,0xF3, +0xFB,0x03,0xFB,0xF3,0xF3,0xFB,0x03,0xFB,0xF3,0xF3,0xB3,0xB3,0xB3,0xBB,0xB3,0xAB, +0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47, +0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0, +0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0, +0xD0,0xD0,0xE0,0xF0,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0, +0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xB3,0xB3,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB, +0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0x70,0x70,0x70,0x78,0x70,0x68, +0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0, +0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0, +0xD0,0xD0,0xE0,0xF0,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0, +0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xB3,0xB3,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB, +0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0x70,0x70,0x70,0x78,0x70,0x68, +0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0, +0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0, +0xD0,0xD0,0xE0,0xF0,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0, +0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xB3,0xB3,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB, +0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0x70,0x70,0x70,0x78,0x70,0x68, +0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0, +0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0, +0xD0,0xD0,0xE0,0xF0,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0xE0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xD0,0xE0, +0xF0,0xE0,0xD0,0xD0,0xE0,0xF0,0xE0,0xD0,0xB3,0xB3,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB, +0xB3,0xBB,0xB3,0xAB,0xAB,0xB3,0xBB,0xB3,0xAB,0xAB,0x70,0x70,0x70,0x78,0x70,0x68, +0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x78,0x70,0x68,0x68,0x70,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0xEC,0xEC, +0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4,0xE4,0xEC,0xF4,0xEC,0xE4, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F, +0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47, +0x3F,0x3F,0x47,0x4F,0x25,0x6D,0xB5,0xFD,0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D, +0x85,0xCD,0x15,0x5D,0xA5,0xED,0x47,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47, +0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x97,0x97,0x8F,0x97,0x9F,0x97,0x8F,0x8F, +0x97,0x9F,0x97,0x8F,0x8F,0x97,0x9F,0x97,0x8F,0x8F,0x47,0x47,0x47,0x4F,0x47,0x3F, +0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x4F,0x47,0x3F,0x3F,0x47,0x25,0x6D,0xB5,0xFD, +0x45,0x8D,0xD5,0x1D,0x65,0xAD,0xF5,0x3D,0x85,0xCD,0x15,0x5D,0xA5,0xED,0x0B,0x0B, +0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03,0x03,0x0B,0x13,0x0B,0x03, +0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x09,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09, +0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09,0x09, +0x0A,0x09,0x09,0x09,0x09,0x0A,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x09,0x09,0x09,0x09,0x09,0x0A,0x09,0x09, +0x09,0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x05, +0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02, +0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x09,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09, +0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x09,0x09, +0x0A,0x09,0x09,0x09,0x09,0x0A,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x09,0x09,0x09,0x09,0x09,0x0A,0x09,0x09, +0x09,0x09,0x0A,0x09,0x09,0x09,0x09,0x0A,0x09,0x09,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x04,0x04,0x04,0x05, +0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02, +0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02, +0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02, +0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0x03,0x03,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x04, +0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x04, +0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x04, +0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x04, +0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, +0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08, +0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, +0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05, +0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x02,0x02, +0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06, +0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, +0x07,0x07,0x00,0x00,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18, +0x18,0x1A,0x1C,0x1E,0x20,0x1E,0xFD,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF, +0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0x1C,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C, +0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0xBD,0xBF,0xBE,0xBD,0xBC,0xBB, +0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD, +0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF, +0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD, +0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB, +0xBC,0xBD,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C, +0x1A,0x18,0x18,0x1A,0x1C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E, +0x20,0x1E,0x1C,0x1A,0x18,0x18,0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9, +0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0x1C,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C, +0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x8E,0x8C,0x8C,0x8D,0x8E,0x8F, +0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D, +0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C, +0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E, +0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90, +0x8F,0x8E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A, +0x1C,0x1E,0x20,0x1E,0x1C,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A, +0x18,0x18,0x1A,0x1C,0x1E,0x20,0xFD,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01, +0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x1C,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A, +0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC, +0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE, +0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE, +0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC, +0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB, +0xBB,0xBC,0x1C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E, +0x1C,0x1A,0x18,0x18,0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD, +0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9, +0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD, +0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF, +0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xA8,0xA6,0xA6,0xA7, +0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6, +0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8, +0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF, +0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB, +0xFD,0xFF,0x01,0xFF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18, +0x18,0x1A,0x1C,0x1E,0x20,0x1E,0xFD,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF, +0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0x1C,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C, +0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0xBD,0xBF,0xBE,0xBD,0xBC,0xBB, +0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD, +0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF, +0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD, +0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB, +0xBC,0xBD,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C, +0x1A,0x18,0x18,0x1A,0x1C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E, +0x20,0x1E,0x1C,0x1A,0x18,0x18,0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9, +0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0x1C,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C, +0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x8E,0x8C,0x8C,0x8D,0x8E,0x8F, +0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D, +0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C, +0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E, +0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90,0x8F,0x8E,0x8D,0x8C,0x8C,0x8D,0x8E,0x8F,0x90, +0x8F,0x8E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A, +0x1C,0x1E,0x20,0x1E,0x1C,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A, +0x18,0x18,0x1A,0x1C,0x1E,0x20,0xFD,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01, +0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x1C,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A, +0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC, +0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE, +0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE, +0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC, +0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB, +0xBB,0xBC,0x1C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E, +0x1C,0x1A,0x18,0x18,0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD, +0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9, +0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD, +0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF, +0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xA8,0xA6,0xA6,0xA7, +0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6, +0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8, +0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF, +0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB, +0xFD,0xFF,0x01,0xFF,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2, +0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0, +0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0x0C,0x0E,0x0C,0x0A, +0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E, +0xB2,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0, +0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1, +0xB0,0xB0,0xB1,0xB2,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98, +0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96, +0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94, +0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95, +0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97, +0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97, +0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95, +0xA8,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7, +0xA6,0xA6,0xB2,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4, +0xB3,0xB2,0xB1,0xB0,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC, +0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB, +0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD, +0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF, +0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xD4,0xD2,0xD2,0xD3, +0xD4,0xD5,0xD6,0xD5,0xD4,0xD3,0xD2,0xD2,0xD3,0xD4,0xD5,0xD6,0xD5,0xD4,0xD3,0xD2, +0xD2,0xD3,0xD4,0xD5,0xD6,0xD5,0xD4,0xD3,0xD2,0xD2,0xD3,0xD4,0xD5,0xD6,0xD5,0xD4, +0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0, +0xE1,0xE2,0xE3,0xE2,0xFD,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB, +0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF, +0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF, +0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB, +0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9, +0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD, +0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01, +0x0C,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A, +0x0C,0x0E,0xFD,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB, +0xF9,0xF9,0xFB,0xFD,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10, +0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C, +0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A, +0x08,0x08,0x0A,0x0C,0x0E,0x10,0x0E,0x0C,0x0A,0x08,0x08,0x0A,0xB2,0xB2,0xB3,0xB4, +0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2, +0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0, +0xE1,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1, +0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3, +0xE2,0xE1,0xE0,0xDF,0x96,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95, +0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94, +0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96, +0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98, +0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96, +0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94, +0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95, +0xA8,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA, +0xA9,0xA8,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1, +0xB2,0xB3,0xB4,0xB3,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC, +0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE, +0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1, +0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF, +0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2, +0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2, +0x2C,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28, +0x2A,0x2C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C, +0x1A,0x18,0x18,0x1A,0xFD,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF, +0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xFB, +0xFD,0xFF,0x01,0xFF,0xFD,0xFB,0xF9,0xF9,0xBD,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC, +0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE, +0xBD,0xBC,0xBB,0xBB,0xBC,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xBB,0xA8,0xA6,0xA7,0xA8, +0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6, +0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7, +0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9, +0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9, +0xAA,0xA9,0xA8,0xA7,0x9F,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D, +0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E, +0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x86,0x85,0x84,0x84,0x85,0x86,0x87,0x88, +0x87,0x86,0x85,0x84,0x84,0x85,0x86,0x87,0x88,0x87,0x96,0x96,0x95,0x94,0x94,0x95, +0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x96,0x97,0x98,0x9F,0xA0,0x9F,0x9E, +0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0, +0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0, +0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E, +0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D, +0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F, +0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1, +0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F, +0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D, +0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xC8,0xCA,0xC9,0xC8, +0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA, +0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8, +0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6, +0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7, +0xC6,0xC6,0xC7,0xC8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4, +0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2, +0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0x96,0x96,0x97,0x98,0x97,0x96,0x95,0x94, +0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2, +0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0, +0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1, +0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3, +0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3, +0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0, +0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2, +0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4, +0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB2,0xB0,0xB0,0xB1, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0, +0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2, +0xEE,0xED,0xEC,0xEC,0xED,0xEE,0xEF,0xF0,0xEF,0xEE,0xED,0xEC,0xEC,0xED,0xEE,0xEF, +0xF0,0xEF,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF, +0xE0,0xE1,0xE2,0xE3,0xC8,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8, +0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA, +0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0x86,0x88,0x87,0x86,0x85,0x84,0x84,0x85, +0x86,0x87,0x88,0x87,0x86,0x85,0x84,0x84,0x85,0x86,0x96,0x97,0x98,0x97,0x96,0x95, +0x94,0x94,0x95,0x96,0x97,0x98,0x97,0x96,0x95,0x94,0x94,0x95,0x9F,0x9F,0xA0,0xA1, +0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F, +0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D, +0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E, +0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0, +0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0, +0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E, +0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D, +0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F, +0x9E,0x9D,0x9D,0x9E,0x9F,0xA0,0xA1,0xA0,0x9F,0x9E,0x9D,0x9D,0xC8,0xC7,0xC8,0xC9, +0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7, +0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6, +0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8, +0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xC6,0xC6,0xC7,0xC8,0xC9,0xCA, +0xC9,0xC8,0xC7,0xC6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0, +0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2, +0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4, +0xB3,0xB2,0xB1,0xB0,0xB0,0xB1,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0, +0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF, +0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1, +0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3, +0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xDF,0xDF,0xE0,0xE1, +0xE2,0xE3,0xE2,0xE1,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28, +0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C, +0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30, +0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C, +0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x65,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x51,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F, +0x51,0x53,0x2C,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A, +0x28,0x28,0x2A,0x2C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20, +0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C, +0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A, +0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x2C,0x2C,0x2E,0x30, +0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C, +0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28, +0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A, +0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E, +0x2C,0x2A,0x28,0x28,0x51,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51, +0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D, +0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F, +0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53, +0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x7B,0x77,0x79,0x7B, +0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77, +0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79, +0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D, +0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D, +0x7F,0x7D,0x7B,0x79,0x65,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61, +0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63, +0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67, +0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67, +0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63, +0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65, +0x67,0x69,0x67,0x65,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65, +0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x51,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F, +0x51,0x53,0x2C,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A, +0x28,0x28,0x2A,0x2C,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20, +0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C, +0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A, +0x18,0x18,0x1A,0x1C,0x1E,0x20,0x1E,0x1C,0x1A,0x18,0x18,0x1A,0x2C,0x2C,0x2E,0x30, +0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C, +0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28, +0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A, +0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E, +0x2C,0x2A,0x28,0x28,0x51,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51, +0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D, +0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F, +0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53, +0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x7B,0x77,0x79,0x7B, +0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77, +0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79, +0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D, +0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D,0x7F,0x7D,0x7B,0x79,0x77,0x77,0x79,0x7B,0x7D, +0x7F,0x7D,0x7B,0x79,0x65,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61, +0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63, +0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67, +0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67, +0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63, +0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65, +0x67,0x69,0x67,0x65,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65, +0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x65,0x63,0x61, +0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65, +0x63,0x61,0x61,0x63,0x65,0x67,0x69,0x67,0x65,0x63,0x61,0x61,0x63,0x65,0x67,0x69, +0x51,0x53,0x51,0x4F,0x4D,0x4D,0x4F,0x51,0x53,0x55,0x53,0x51,0x4F,0x4D,0x4D,0x4F, +0x51,0x53,0x2C,0x30,0x2E,0x2C,0x2A,0x28,0x28,0x2A,0x2C,0x2E,0x30,0x2E,0x2C,0x2A, +0x28,0x28,0x2A,0x2C,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,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,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,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,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,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,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,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,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,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,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,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,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,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,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,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,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,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,0x00,0x00, +0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x1C,0x1E,0x20,0x1E,0xD4,0xD4, +0xD3,0xD2,0xD2,0xD3,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xD4,0xD2,0xD2,0xD3,0xD4,0xD5,0x1C,0x20,0x1E,0x1C, +0x1A,0x18,0xD4,0xD2,0xD3,0xD4,0xD5,0xD6,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xD4,0xD4,0xD5,0xD6,0xD5,0xD4, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xD4,0xD5,0xD6,0xD5,0xD4,0xD3,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xD4,0xD5, +0xD4,0xD3,0xD2,0xD2,0x1C,0x1A,0x1C,0x1E,0x20,0x1E,0xD4,0xD4,0xD3,0xD2,0xD2,0xD3, +0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xBD,0xBE,0xBF,0xBE, +0xBD,0xBC,0xD4,0xD2,0xD2,0xD3,0xD4,0xD5,0xFD,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB, +0xBC,0xBD,0xBE,0xBF,0xA8,0xA9,0xA8,0xA7,0xA6,0xA6,0x96,0x95,0x96,0x97,0x98,0x97, +0xA8,0xA8,0xA7,0xA6,0xA6,0xA7,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xFD,0xFB,0xF9,0xF9, +0xFB,0xFD,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xA8,0xA6,0xA6,0xA7,0xA8,0xA9,0x96,0x98, +0x97,0x96,0x95,0x94,0xA8,0xA6,0xA7,0xA8,0xA9,0xAA,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB, +0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xA8,0xA8,0xA9,0xAA, +0xA9,0xA8,0x96,0x95,0x94,0x94,0x95,0x96,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xBD,0xBB, +0xBB,0xBC,0xBD,0xBE,0xFD,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF, +0xA8,0xA9,0xA8,0xA7,0xA6,0xA6,0x96,0x95,0x96,0x97,0x98,0x97,0xA8,0xA8,0xA7,0xA6, +0xA6,0xA7,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x1C,0x1E,0x20,0x1E,0xD4,0xD4, +0xD3,0xD2,0xD2,0xD3,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xD4,0xD2,0xD2,0xD3,0xD4,0xD5,0x1C,0x20,0x1E,0x1C, +0x1A,0x18,0xD4,0xD2,0xD3,0xD4,0xD5,0xD6,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xD4,0xD4,0xD5,0xD6,0xD5,0xD4, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xD4,0xD5,0xD6,0xD5,0xD4,0xD3,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xD4,0xD5, +0xD4,0xD3,0xD2,0xD2,0x1C,0x1A,0x1C,0x1E,0x20,0x1E,0xD4,0xD4,0xD3,0xD2,0xD2,0xD3, +0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xBD,0xBE,0xBF,0xBE, +0xBD,0xBC,0xD4,0xD2,0xD2,0xD3,0xD4,0xD5,0xFD,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB, +0xBC,0xBD,0xBE,0xBF,0xA8,0xA9,0xA8,0xA7,0xA6,0xA6,0x96,0x95,0x96,0x97,0x98,0x97, +0xA8,0xA8,0xA7,0xA6,0xA6,0xA7,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xFD,0xFB,0xF9,0xF9, +0xFB,0xFD,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xA8,0xA6,0xA6,0xA7,0xA8,0xA9,0x96,0x98, +0x97,0x96,0x95,0x94,0xA8,0xA6,0xA7,0xA8,0xA9,0xAA,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB, +0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xA8,0xA8,0xA9,0xAA, +0xA9,0xA8,0x96,0x95,0x94,0x94,0x95,0x96,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xBD,0xBB, +0xBB,0xBC,0xBD,0xBE,0xFD,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF, +0xA8,0xA9,0xA8,0xA7,0xA6,0xA6,0x96,0x95,0x96,0x97,0x98,0x97,0xA8,0xA8,0xA7,0xA6, +0xA6,0xA7,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6, +0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E, +0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7, +0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2, +0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1, +0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1, +0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2, +0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1, +0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C, +0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1, +0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0, +0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3, +0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x1C,0x20,0x1E,0x1C,0x1A,0x18,0xD4,0xD2, +0xD3,0xD4,0xD5,0xD6,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xD4,0xD4,0xD5,0xD6,0xD5,0xD4,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xD4,0xD5,0xD6,0xD5,0xD4,0xD3,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0xA8,0xAA, +0xA9,0xA8,0xA7,0xA6,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xD4,0xD5,0xD4,0xD3,0xD2,0xD2, +0x1C,0x1A,0x1C,0x1E,0x20,0x1E,0xD4,0xD4,0xD3,0xD2,0xD2,0xD3,0xBD,0xBD,0xBE,0xBF, +0xBE,0xBD,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xD4,0xD2, +0xD2,0xD3,0xD4,0xD5,0x1C,0x20,0x1E,0x1C,0x1A,0x18,0xD4,0xD2,0xD3,0xD4,0xD5,0xD6, +0xBD,0xBE,0xBD,0xBC,0xBB,0xBB,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xBD,0xBD,0xBC,0xBB, +0xBB,0xBC,0xD4,0xD4,0xD5,0xD6,0xD5,0xD4,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xBD,0xBE, +0xBF,0xBE,0xBD,0xBC,0xA8,0xA6,0xA6,0xA7,0xA8,0xA9,0x96,0x98,0x97,0x96,0x95,0x94, +0xA8,0xA6,0xA7,0xA8,0xA9,0xAA,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB,0xFD,0xFB,0xFD,0xFF, +0x01,0xFF,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xA8,0xA8,0xA9,0xAA,0xA9,0xA8,0x96,0x95, +0x94,0x94,0x95,0x96,0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE, +0xFD,0x01,0xFF,0xFD,0xFB,0xF9,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xA8,0xA9,0xA8,0xA7, +0xA6,0xA6,0x96,0x95,0x96,0x97,0x98,0x97,0xA8,0xA8,0xA7,0xA6,0xA6,0xA7,0xBD,0xBD, +0xBE,0xBF,0xBE,0xBD,0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC, +0xA8,0xA6,0xA6,0xA7,0xA8,0xA9,0x96,0x98,0x97,0x96,0x95,0x94,0xA8,0xA6,0xA7,0xA8, +0xA9,0xAA,0xBD,0xBE,0xBD,0xBC,0xBB,0xBB,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1, +0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C, +0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1, +0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0, +0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3, +0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF, +0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA, +0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4, +0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF, +0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3, +0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0, +0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xD4,0xD5, +0xD6,0xD5,0xD4,0xD3,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xD4,0xD5,0xD4,0xD3,0xD2,0xD2,0x1C,0x1A,0x1C,0x1E, +0x20,0x1E,0xD4,0xD4,0xD3,0xD2,0xD2,0xD3,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD,0xA8,0xA7, +0xA6,0xA6,0xA7,0xA8,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xD4,0xD2,0xD2,0xD3,0xD4,0xD5, +0x1C,0x20,0x1E,0x1C,0x1A,0x18,0xD4,0xD2,0xD3,0xD4,0xD5,0xD6,0xBD,0xBE,0xBD,0xBC, +0xBB,0xBB,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC,0xD4,0xD4, +0xD5,0xD6,0xD5,0xD4,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xD4,0xD5,0xD6,0xD5,0xD4,0xD3, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xD4,0xD5,0xD4,0xD3,0xD2,0xD2,0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xBD,0xBD, +0xBC,0xBB,0xBB,0xBC,0xA8,0xA8,0xA9,0xAA,0xA9,0xA8,0x96,0x95,0x94,0x94,0x95,0x96, +0xA8,0xA9,0xAA,0xA9,0xA8,0xA7,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0xFD,0x01,0xFF,0xFD, +0xFB,0xF9,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xA8,0xA9,0xA8,0xA7,0xA6,0xA6,0x96,0x95, +0x96,0x97,0x98,0x97,0xA8,0xA8,0xA7,0xA6,0xA6,0xA7,0xBD,0xBD,0xBE,0xBF,0xBE,0xBD, +0xFD,0xFB,0xF9,0xF9,0xFB,0xFD,0xBD,0xBE,0xBF,0xBE,0xBD,0xBC,0xA8,0xA6,0xA6,0xA7, +0xA8,0xA9,0x96,0x98,0x97,0x96,0x95,0x94,0xA8,0xA6,0xA7,0xA8,0xA9,0xAA,0xBD,0xBE, +0xBD,0xBC,0xBB,0xBB,0xFD,0xFB,0xFD,0xFF,0x01,0xFF,0xBD,0xBD,0xBC,0xBB,0xBB,0xBC, +0xA8,0xA8,0xA9,0xAA,0xA9,0xA8,0x96,0x95,0x94,0x94,0x95,0x96,0xA8,0xA9,0xAA,0xA9, +0xA8,0xA7,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xEE,0xEC, +0xED,0xEE,0xEF,0xF0,0xC8,0xC9,0xC8,0xC7,0xC6,0xC6,0x9F,0x9E,0x9F,0xA0,0xA1,0xA0, +0xC8,0xC8,0xC7,0xC6,0xC6,0xC7,0xEE,0xEE,0xEF,0xF0,0xEF,0xEE,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0xEE,0xEF,0xF0,0xEF,0xEE,0xED,0xC8,0xC6,0xC6,0xC7,0xC8,0xC9,0x9F,0xA1, +0xA0,0x9F,0x9E,0x9D,0xC8,0xC6,0xC7,0xC8,0xC9,0xCA,0xEE,0xEF,0xEE,0xED,0xEC,0xEC, +0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xEE,0xEE,0xED,0xEC,0xEC,0xED,0xC8,0xC8,0xC9,0xCA, +0xC9,0xC8,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xEE,0xEC, +0xEC,0xED,0xEE,0xEF,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xEE,0xEC,0xED,0xEE,0xEF,0xF0, +0xC8,0xC9,0xC8,0xC7,0xC6,0xC6,0x9F,0x9E,0x9F,0xA0,0xA1,0xA0,0xC8,0xC8,0xC7,0xC6, +0xC6,0xC7,0xEE,0xEE,0xEF,0xF0,0xEF,0xEE,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xEE,0xEF, +0xF0,0xEF,0xEE,0xED,0xC8,0xC6,0xC6,0xC7,0xC8,0xC9,0x9F,0xA1,0xA0,0x9F,0x9E,0x9D, +0xC8,0xC6,0xC7,0xC8,0xC9,0xCA,0xEE,0xEF,0xEE,0xED,0xEC,0xEC,0x0C,0x0A,0x0C,0x0E, +0x10,0x0E,0xEE,0xEE,0xED,0xEC,0xEC,0xED,0xC8,0xC8,0xC9,0xCA,0xC9,0xC8,0x9F,0x9E, +0x9D,0x9D,0x9E,0x9F,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xEE,0xEC,0xEC,0xED,0xEE,0xEF, +0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xEE,0xEC,0xED,0xEE,0xEF,0xF0,0xC8,0xC9,0xC8,0xC7, +0xC6,0xC6,0x9F,0x9E,0x9F,0xA0,0xA1,0xA0,0xC8,0xC8,0xC7,0xC6,0xC6,0xC7,0xEE,0xEE, +0xEF,0xF0,0xEF,0xEE,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xEE,0xEF,0xF0,0xEF,0xEE,0xED, +0xC8,0xC6,0xC6,0xC7,0xC8,0xC9,0x9F,0xA1,0xA0,0x9F,0x9E,0x9D,0xC8,0xC6,0xC7,0xC8, +0xC9,0xCA,0xEE,0xEF,0xEE,0xED,0xEC,0xEC,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1, +0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C, +0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1, +0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0, +0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3, +0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF, +0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA, +0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4, +0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF, +0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3, +0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0, +0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xEE,0xEF, +0xF0,0xEF,0xEE,0xED,0xC8,0xC6,0xC6,0xC7,0xC8,0xC9,0x9F,0xA1,0xA0,0x9F,0x9E,0x9D, +0xC8,0xC6,0xC7,0xC8,0xC9,0xCA,0xEE,0xEF,0xEE,0xED,0xEC,0xEC,0x0C,0x0A,0x0C,0x0E, +0x10,0x0E,0xEE,0xEE,0xED,0xEC,0xEC,0xED,0xC8,0xC8,0xC9,0xCA,0xC9,0xC8,0x9F,0x9E, +0x9D,0x9D,0x9E,0x9F,0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xEE,0xEC,0xEC,0xED,0xEE,0xEF, +0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xEE,0xEC,0xED,0xEE,0xEF,0xF0,0xC8,0xC9,0xC8,0xC7, +0xC6,0xC6,0x9F,0x9E,0x9F,0xA0,0xA1,0xA0,0xC8,0xC8,0xC7,0xC6,0xC6,0xC7,0xEE,0xEE, +0xEF,0xF0,0xEF,0xEE,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xEE,0xEF,0xF0,0xEF,0xEE,0xED, +0xC8,0xC6,0xC6,0xC7,0xC8,0xC9,0x9F,0xA1,0xA0,0x9F,0x9E,0x9D,0xC8,0xC6,0xC7,0xC8, +0xC9,0xCA,0xEE,0xEF,0xEE,0xED,0xEC,0xEC,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xEE,0xEE, +0xED,0xEC,0xEC,0xED,0xC8,0xC8,0xC9,0xCA,0xC9,0xC8,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F, +0xC8,0xC9,0xCA,0xC9,0xC8,0xC7,0xEE,0xEC,0xEC,0xED,0xEE,0xEF,0x0C,0x10,0x0E,0x0C, +0x0A,0x08,0xEE,0xEC,0xED,0xEE,0xEF,0xF0,0xC8,0xC9,0xC8,0xC7,0xC6,0xC6,0x9F,0x9E, +0x9F,0xA0,0xA1,0xA0,0xC8,0xC8,0xC7,0xC6,0xC6,0xC7,0xEE,0xEE,0xEF,0xF0,0xEF,0xEE, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xEE,0xEF,0xF0,0xEF,0xEE,0xED,0xC8,0xC6,0xC6,0xC7, +0xC8,0xC9,0x9F,0xA1,0xA0,0x9F,0x9E,0x9D,0xC8,0xC6,0xC7,0xC8,0xC9,0xCA,0xEE,0xEF, +0xEE,0xED,0xEC,0xEC,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xEE,0xEE,0xED,0xEC,0xEC,0xED, +0xC8,0xC8,0xC9,0xCA,0xC9,0xC8,0x9F,0x9E,0x9D,0x9D,0x9E,0x9F,0xC8,0xC9,0xCA,0xC9, +0xC8,0xC7,0xEE,0xEC,0xEC,0xED,0xEE,0xEF,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF, +0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA, +0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4, +0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF, +0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3, +0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0, +0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6, +0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E, +0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7, +0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2, +0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1, +0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1, +0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2, +0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1, +0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C, +0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1, +0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0, +0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3, +0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF, +0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA, +0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4, +0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF, +0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3, +0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0, +0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2, +0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C, +0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18, +0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90, +0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xBD,0xBB,0xBB,0xBC, +0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD,0xBE,0xBF,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x1C,0x1A,0x18,0x18,0x1A,0x1C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0, +0xBD,0xBB,0xBB,0xBC,0xBD,0xBE,0x8E,0x90,0x8F,0x8E,0x8D,0x8C,0xBD,0xBB,0xBC,0xBD, +0xBE,0xBF,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1, +0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8, +0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C, +0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7, +0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1, +0x0C,0x0A,0x08,0x08,0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1, +0xB2,0xB3,0xA8,0xAA,0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2, +0xE1,0xE0,0xDF,0xDF,0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0, +0xB2,0xB2,0xB3,0xB4,0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3, +0xB2,0xB1,0xE1,0xDF,0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF, +0xE0,0xE1,0xE2,0xE3,0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9, +0xB2,0xB2,0xB1,0xB0,0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x0C,0x0A,0x08,0x08, +0x0A,0x0C,0xE1,0xE2,0xE3,0xE2,0xE1,0xE0,0xB2,0xB0,0xB0,0xB1,0xB2,0xB3,0xA8,0xAA, +0xA9,0xA8,0xA7,0xA6,0xB2,0xB0,0xB1,0xB2,0xB3,0xB4,0xE1,0xE2,0xE1,0xE0,0xDF,0xDF, +0x0C,0x0A,0x0C,0x0E,0x10,0x0E,0xE1,0xE1,0xE0,0xDF,0xDF,0xE0,0xB2,0xB2,0xB3,0xB4, +0xB3,0xB2,0xA8,0xA7,0xA6,0xA6,0xA7,0xA8,0xB2,0xB3,0xB4,0xB3,0xB2,0xB1,0xE1,0xDF, +0xDF,0xE0,0xE1,0xE2,0x0C,0x10,0x0E,0x0C,0x0A,0x08,0xE1,0xDF,0xE0,0xE1,0xE2,0xE3, +0xB2,0xB3,0xB2,0xB1,0xB0,0xB0,0xA8,0xA7,0xA8,0xA9,0xAA,0xA9,0xB2,0xB2,0xB1,0xB0, +0xB0,0xB1,0xE1,0xE1,0xE2,0xE3,0xE2,0xE1,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,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,0x01,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,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,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,0x01,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,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,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,0x01,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x00,0x00,0x01,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,0x01, +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, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01, +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,0x01,0x01, +0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x01,0x01,0x01,0x01,0x01,0x01,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,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2F,0x2F,0x2F,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xFF,0xFF,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF0,0xF0,0xF0,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0F,0x0F,0x0E, +0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x00,0x00,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, +0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, +0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, +0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,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,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,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,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,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,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,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,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,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,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, +0x07,0x06,0x05,0x04,0x03,0x02,0x01,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,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, +0x07,0x06,0x05,0x04,0x03,0x02,0x01,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,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0E, +0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0F,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x0E,0x0E,0x00,0x00,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A, +0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C, +0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D,0x0D,0x0C,0x0C,0x0A,0x0E,0x0D, +0x0D,0x0C,0x0C,0x0A,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x00,0x00,0x00,0x00,0x00,0x00, +}; diff --git a/MCUME_esp32/espsnd/ym2h/delta.ym b/MCUME_esp32/espsnd/ym2h/delta.ym new file mode 100644 index 0000000..a4d321b Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/delta.ym differ diff --git a/MCUME_esp32/espsnd/ym2h/enchant1.h b/MCUME_esp32/espsnd/ym2h/enchant1.h new file mode 100644 index 0000000..f171a31 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/enchant1.h @@ -0,0 +1,213 @@ +const unsigned char musym[3390] = { +0x21,0xD1,0x2D,0x6C,0x68,0x35,0x2D,0x1A,0x0D,0x00,0x00,0x80,0xD8,0x02,0x00,0xED, +0x5C,0xFB,0x26,0x20,0x00,0x0B,0x45,0x4E,0x43,0x48,0x41,0x4E,0x7E,0x31,0x2E,0x59, +0x4D,0xA2,0x86,0x09,0x51,0x73,0x81,0xE0,0x3B,0x56,0xD2,0xFF,0x7A,0xFB,0xDE,0xF5, +0xF7,0xBD,0xEF,0x7B,0xDE,0xB6,0x06,0x89,0x4D,0x2C,0xC5,0xC4,0xC0,0x67,0x38,0x0B, +0x08,0x40,0x65,0x6C,0xA5,0x6E,0xC3,0x83,0x1B,0x00,0x02,0x4C,0x08,0x92,0x14,0xB7, +0xD2,0xEC,0x23,0x6E,0x98,0xDB,0x52,0xA3,0xA0,0x02,0x93,0x3A,0x32,0xCC,0xD9,0xA6, +0x84,0xD0,0x96,0xD3,0x6C,0x62,0xC2,0x58,0x13,0x5D,0xE0,0x58,0xCC,0x61,0x84,0x07, +0x6B,0x76,0x0E,0x03,0x6D,0x56,0x56,0xDA,0x86,0x47,0x12,0x37,0x5B,0x76,0xD8,0x01, +0xB0,0xC3,0x0F,0xFF,0xEF,0xBD,0xF7,0xBD,0xEF,0x6D,0x7E,0xF6,0xC6,0x9B,0xEF,0x4C, +0xAD,0xB0,0x1E,0x0B,0xC0,0xC8,0x63,0x89,0xE0,0x78,0x13,0x90,0xE4,0x66,0xE2,0xDC, +0x44,0xF4,0x38,0x16,0xF2,0x55,0xE0,0x5D,0xC0,0xA1,0xE5,0x18,0x97,0x8D,0x79,0x0E, +0x07,0x80,0xE4,0x78,0x9E,0xED,0xCE,0xC8,0xF3,0x32,0x31,0x89,0xC8,0xF1,0xB6,0x3C, +0x47,0x06,0x93,0x7E,0xE4,0x34,0x92,0x38,0xE6,0x97,0xA1,0xC6,0xF2,0x58,0x3C,0x63, +0xBE,0x6A,0x7F,0xE0,0xE4,0xB1,0x38,0x35,0xCB,0xB8,0xDE,0xB9,0x72,0xE5,0xD1,0xC8, +0xFB,0x82,0xF9,0x7D,0x62,0xEE,0x41,0x75,0xB9,0xCA,0xCF,0xCE,0x63,0xE6,0xE7,0xF2, +0x6E,0xE7,0x65,0x31,0x93,0x73,0xF3,0xBD,0x44,0xB4,0xA7,0x2F,0x3F,0x93,0xC9,0x50, +0x2E,0xC5,0xD0,0x4E,0x63,0xDD,0xCF,0xCA,0x72,0xD9,0x0C,0x8E,0x45,0xDF,0x4E,0xBB, +0x11,0x41,0x3F,0x95,0x77,0x92,0x4D,0x93,0xA5,0xA2,0x94,0xC6,0x3B,0xA0,0x9F,0x9B, +0xC9,0x4E,0xAE,0xB1,0x41,0x5F,0x5D,0x5D,0x5F,0x30,0x82,0x5E,0x5A,0x5A,0x5E,0x62, +0x66,0x6A,0x65,0x32,0x22,0xD3,0xA9,0x3C,0x5F,0xDF,0x2F,0xDD,0xA0,0x9C,0x9B,0x9B, +0x9C,0x77,0x3D,0x90,0x9E,0x4C,0x88,0xB4,0xEA,0x4F,0xBE,0x5F,0x8F,0xFC,0x5F,0x8B, +0xF3,0x7F,0xE3,0xFF,0x53,0x07,0xDA,0xA0,0xB4,0xB3,0xB3,0xB4,0x8B,0x4F,0xED,0x2F, +0xDC,0x20,0x6C,0xD1,0xA3,0x68,0xB4,0xFF,0xCD,0x7E,0xA6,0xC3,0xD5,0xBB,0xEF,0x69, +0xD6,0xDF,0xFC,0x9A,0x0C,0x0C,0x94,0x96,0x06,0x2D,0x3A,0xDB,0xFF,0xBF,0xD7,0xFA, +0xB4,0xF6,0xBA,0xFD,0x86,0xBD,0x32,0x2F,0x29,0xE3,0x2F,0xD5,0xD4,0xBB,0x87,0x52, +0x2E,0x93,0x22,0xF2,0x9E,0x32,0xFC,0x7F,0xE3,0xFF,0x55,0xB3,0xD3,0xA0,0xA6,0xA5, +0xA5,0xA6,0x56,0x9F,0x44,0x82,0xAB,0x43,0xA1,0xAA,0x56,0x9E,0xAD,0x06,0x9B,0x4B, +0xA5,0xD3,0x2B,0x4F,0xAB,0x41,0xAA,0xD4,0xEA,0x75,0x4B,0x5B,0xD6,0x47,0xDE,0xAF, +0xD5,0x6F,0xEB,0x53,0xA9,0x77,0x56,0x9D,0x45,0x3A,0xB4,0xEA,0x2B,0xD6,0xB7,0xAC, +0x8F,0xBD,0x5F,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF, +0x8F,0xFC,0x7F,0xE7,0x5F,0xF3,0xAF,0xF8,0xFF,0xC7,0xFE,0x79,0x3F,0xCF,0x3F,0xF9, +0xE7,0xFF,0x35,0xFE,0x2F,0xCD,0xFF,0x9B,0xFF,0x35,0xFE,0x2F,0xC5,0xF8,0xBF,0x56, +0xBE,0x62,0x66,0x6A,0x65,0x32,0x22,0xD3,0x8B,0xF1,0x7F,0x03,0x3F,0xC7,0x00,0x00, +0x00,0x00,0x5C,0x0B,0x9F,0x17,0xB4,0xF7,0xCB,0xF0,0x0F,0x77,0x5F,0xEB,0xAE,0x0B, +0xCA,0x7B,0xE5,0xF8,0x0F,0xFC,0x2F,0x5B,0xFD,0xEB,0xE7,0xBA,0x5F,0xC6,0xFD,0x67, +0xF7,0x3F,0x79,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF, +0xC7,0xFE,0x3F,0xF3,0xAF,0xF9,0xD7,0xFC,0x7F,0xE7,0x93,0xFC,0xF3,0xFF,0x81,0xAF, +0xFF,0xEB,0xAF,0xF1,0x7E,0x00,0x6B,0xFC,0x5F,0x8B,0xF1,0x7E,0x01,0xFA,0x4E,0x1A, +0xD7,0x6C,0x5A,0x59,0xD9,0xDA,0x5A,0xEB,0xF6,0x1A,0xF8,0x52,0x22,0xD3,0xA9,0x22, +0xF5,0x7E,0xD9,0xC3,0xA9,0x17,0x4E,0x1B,0x34,0x68,0xFA,0x43,0x84,0x10,0x26,0xC0, +0x91,0x16,0x9F,0xDD,0x5F,0xE0,0x64,0xF0,0x52,0x98,0x29,0x3C,0x0C,0x94,0x93,0xE9, +0x12,0x68,0x20,0x4D,0x81,0x23,0x7B,0x4F,0x1B,0x4F,0xE2,0xFC,0xDF,0xF8,0xBF,0x37, +0xFF,0x19,0x7E,0xF3,0xC7,0xD9,0xD9,0xE8,0xD0,0x50,0xEE,0x47,0x9A,0x8C,0xB3,0xCB, +0x39,0x57,0x98,0xA8,0x95,0xF7,0x17,0xF8,0x73,0xDF,0x5F,0xD6,0xB3,0xA6,0x3C,0x6A, +0x0B,0xB5,0xFA,0xD8,0xBE,0x22,0x7E,0xE6,0xFE,0x9B,0x3C,0x94,0xAA,0x09,0xB7,0xA2, +0xB1,0xA9,0x7F,0x89,0x5F,0x71,0x7F,0x87,0x3E,0x0E,0x7F,0x56,0xCE,0x9C,0xEF,0xBB, +0x5F,0xAC,0xAF,0x88,0xA7,0xDB,0xE3,0xF5,0x6D,0xE9,0xC0,0xFC,0x7A,0x0E,0x22,0x42, +0x43,0x88,0x56,0x35,0x2C,0xF6,0x7C,0x7C,0x02,0xDE,0x9E,0x0E,0x3F,0x85,0x7F,0x87, +0x3D,0xF5,0xFE,0x1A,0x7F,0x94,0xE6,0xB9,0x44,0xC8,0xFE,0x0B,0xFE,0x06,0xBF,0xD5, +0x29,0xD0,0x53,0x52,0xD2,0xD3,0x53,0xF6,0x59,0xDE,0xCA,0x14,0x8D,0x12,0x0A,0xAD, +0x0E,0x86,0xAB,0x44,0xF3,0xB8,0x79,0x0A,0x45,0x5A,0x0D,0x36,0x97,0x4B,0xA6,0xAB, +0xAC,0xD3,0xD6,0x42,0x91,0xAB,0x41,0xAA,0xD4,0xEA,0x75,0x5A,0xBA,0xDF,0xA9,0x5B, +0x0A,0x42,0x96,0xF5,0x91,0xF7,0xAB,0xF5,0x6E,0xFE,0x9A,0x9D,0x6F,0xD7,0xF5,0x90, +0xEA,0x48,0x8A,0xBF,0x56,0xDF,0xDD,0x69,0x3B,0xBF,0xA5,0xDD,0xE9,0x3B,0xAD,0x1E, +0x8D,0xF4,0x81,0xFF,0xDE,0xB7,0xF5,0x64,0x5E,0xE9,0xFE,0xBE,0xBE,0xC7,0xC2,0xB1, +0xDA,0x41,0x5F,0xE1,0x78,0x9A,0xDD,0x65,0x8D,0x75,0x6D,0x6D,0x75,0x8E,0xB3,0xD5, +0x91,0xCC,0xE3,0x79,0x9E,0x6B,0x19,0xCB,0xF2,0xDC,0xBE,0x2F,0x15,0x89,0xC4,0x62, +0x79,0x59,0xAE,0x52,0x5E,0x62,0x5E,0x67,0x13,0xF0,0xA6,0xA6,0x25,0xB9,0x2E,0x4A, +0x5A,0x62,0x6B,0x79,0x22,0x72,0x71,0xDC,0xF3,0xB4,0x41,0x99,0xCC,0xD2,0x66,0xA9, +0x11,0x02,0x93,0xE0,0x41,0x39,0x3D,0xF1,0xBE,0x3E,0x41,0xDC,0xDF,0x47,0xD1,0xCD, +0xBB,0xC8,0x6F,0x24,0x4B,0xCB,0xCC,0x4C,0xCC,0x22,0x0F,0x4D,0x6E,0xA6,0x47,0x81, +0x06,0x67,0x35,0xD8,0x67,0x33,0x74,0x94,0x79,0x8C,0xC5,0x1D,0x26,0x6F,0x39,0x9B, +0xBA,0x53,0xA9,0x83,0xE0,0x41,0xEA,0x37,0xF5,0x64,0x5A,0x23,0x53,0x16,0xBB,0x48, +0x2D,0x35,0xFB,0x1D,0x96,0xC2,0xD6,0xCE,0xCA,0xCA,0xCE,0xD7,0x61,0xEA,0xC8,0xDF, +0xBF,0xFF,0x4A,0x45,0x8A,0x0A,0xFA,0xEA,0xEA,0xF9,0x84,0x12,0xF2,0xD2,0xC8,0xC3, +0xB3,0x53,0x29,0x91,0x16,0x9D,0x49,0xF1,0x97,0xF2,0x48,0x30,0x12,0x32,0x38,0x07, +0x68,0x27,0x26,0xE6,0xD1,0xB2,0x3C,0x84,0xF2,0x64,0x45,0xA7,0x52,0x7C,0x65,0xF8, +0xFF,0xC7,0xFF,0x1B,0xF5,0xFE,0xA3,0xB4,0xA8,0xA8,0xED,0x3B,0x3E,0xCF,0xB3,0xD0, +0x67,0xF3,0xD9,0xDC,0xF6,0x7B,0x3B,0x4F,0x4D,0x4F,0x4D,0xD9,0x67,0xB3,0xF9,0xDA, +0x7A,0x5E,0xC7,0xB1,0xA5,0xA7,0xCE,0xEF,0x24,0x55,0x23,0x91,0xC6,0x89,0x10,0x69, +0x91,0xC7,0xC2,0xAD,0x10,0x29,0x3E,0x04,0x15,0x4F,0x3B,0x9F,0x9F,0xDC,0x68,0xB4, +0x3D,0xBF,0x6F,0xA1,0xD1,0x77,0x1B,0xC9,0x14,0xC8,0xE5,0xA1,0x4E,0x88,0x3D,0x35, +0xBA,0x99,0x1E,0x04,0x1A,0x6A,0xCD,0x47,0x7F,0xA7,0xAB,0xD2,0xF7,0xDD,0xF6,0x96, +0xAF,0x4F,0xDF,0xE9,0xEE,0x94,0xEA,0x60,0xF8,0x10,0x7A,0x8D,0xFD,0x59,0x19,0x5C, +0xAD,0x0F,0x53,0x43,0xB4,0x83,0x2B,0xD4,0xFC,0x8E,0xAA,0x8A,0x87,0x29,0xD4,0x75, +0x19,0x4A,0x1A,0x2F,0x56,0x46,0xFD,0xFF,0xFA,0x52,0x15,0xE0,0x22,0x75,0xFF,0xBF, +0xEB,0xFE,0xAF,0x75,0x01,0xFF,0xDF,0xBF,0xF3,0xC9,0xFE,0x79,0xFF,0xCF,0x3F,0xF9, +0xAF,0xF3,0x3F,0x9B,0xFF,0x37,0xFE,0x6B,0xFC,0xCF,0xE6,0x7F,0x33,0xFA,0xA2,0xDC, +0xCD,0xE2,0xD3,0xA9,0x20,0x5F,0xFF,0xF5,0xFB,0xAB,0x81,0x77,0xFE,0x23,0x83,0x82, +0x2E,0x0E,0x08,0x6B,0xFC,0x0D,0x7F,0xB1,0x60,0xC5,0x93,0x04,0x0C,0xF7,0x23,0x15, +0xEB,0xD8,0xB2,0x62,0xC5,0x94,0x4A,0xFB,0x8B,0xFC,0x39,0xEF,0xAF,0xEB,0x59,0xD3, +0x1B,0x94,0x17,0x6B,0xF5,0xB1,0x7C,0x44,0xFD,0xCD,0xFD,0x36,0x75,0xEC,0x50,0x34, +0x7A,0x43,0x8D,0x4C,0x7E,0xB5,0x7A,0xB7,0xF5,0x67,0xC1,0xCF,0xEA,0xD9,0xD3,0x9D, +0xFD,0x15,0xFA,0xCA,0xF5,0x94,0xFB,0x7C,0x7E,0xAD,0xBD,0x38,0x1D,0xBE,0xE4,0x51, +0x2E,0xC9,0x5A,0x78,0x38,0xFE,0x15,0xFE,0x1C,0xF7,0xD7,0xF8,0x89,0xFF,0x61,0x7F, +0xC0,0xD7,0xFA,0xA1,0xFA,0x1E,0x00,0x72,0xFF,0x00,0xBF,0xE6,0xFE,0x37,0xF0,0x5E, +0xF8,0xBD,0xA7,0xBE,0x5F,0x80,0xFF,0xCE,0x1F,0xE0,0x00,0x7E,0x07,0x80,0x01,0xE4, +0xFF,0x3C,0xFF,0xE7,0x9F,0xFC,0xD7,0xF9,0x9F,0xCD,0xFF,0x9B,0xFF,0x35,0xFE,0x67, +0xF3,0x3F,0x99,0xFC,0xF7,0x7F,0x87,0xEF,0x38,0x6B,0x50,0x00,0xF5,0x8C,0x8E,0x3F, +0xA4,0xE8,0x39,0xBE,0x5A,0x67,0xDF,0xCA,0xE1,0x65,0x24,0xA4,0x5A,0x2E,0xB6,0xD8, +0xFD,0xAD,0x65,0x77,0x83,0x59,0xDE,0x7D,0x1A,0xAE,0xD7,0x3B,0x9C,0xA4,0xCC,0x75, +0xB4,0x59,0x2E,0x9B,0xA5,0xF8,0x9C,0xEE,0x2E,0x6A,0x5B,0x90,0xC3,0x71,0x38,0x1E, +0x11,0xB2,0xFF,0x2B,0xC6,0xD7,0x78,0x95,0xFA,0xAD,0x47,0x7B,0xA3,0x79,0x53,0x9F, +0xEC,0x73,0x5F,0x37,0xE5,0x75,0x59,0x3E,0x9E,0x77,0xE2,0xFC,0x3C,0x66,0x26,0x5F, +0x91,0xC3,0xE1,0x24,0xF0,0x0E,0x18,0xF9,0x7E,0x45,0xA6,0xB6,0xC6,0xB7,0xC0,0xFA, +0x7A,0x4E,0xE7,0xB6,0xD0,0x52,0xE6,0xE8,0xFA,0xFC,0xB7,0x1D,0x87,0xC3,0x61,0x78, +0xBC,0x27,0x13,0x29,0x82,0x93,0x6D,0x6D,0xE4,0xB1,0xE1,0x25,0x38,0xE4,0x47,0xE2, +0xFD,0x9D,0x92,0xE7,0x49,0x8F,0x57,0xA9,0xF0,0xF4,0x6F,0xC7,0x95,0x35,0x2F,0x34, +0x7D,0xED,0xBA,0x6B,0xFB,0xC8,0xE7,0x9F,0x9C,0xC6,0x23,0x11,0xCC,0x73,0xDD,0x12, +0xB9,0xBF,0x8F,0xE3,0xB8,0xDF,0x7D,0x86,0xF7,0xB8,0x5E,0x2F,0x8A,0xC2,0x70,0xB1, +0xCB,0xA4,0x30,0x58,0x7F,0x81,0x86,0xE1,0xD9,0xF9,0x3E,0x43,0x1E,0x13,0x07,0x2B, +0xC4,0x39,0xF2,0xF5,0xD6,0x56,0xCC,0xFD,0xE7,0x15,0xC2,0xAF,0xD8,0xF8,0x7F,0x5E, +0xD3,0xCB,0x6F,0xC3,0xB4,0xFB,0x7E,0x2E,0xAF,0x55,0xF6,0x36,0x3E,0x63,0xAF,0xB9, +0x67,0xF5,0xAB,0x2A,0xFE,0xAE,0xB7,0xC7,0x61,0xB2,0xF0,0xFD,0xBC,0xFF,0x2A,0xFC, +0x94,0x91,0x91,0x94,0x95,0x99,0xEA,0x7A,0xCF,0x99,0xF3,0xB6,0x76,0xE6,0xBA,0xBE, +0xBF,0x5D,0xB3,0x6F,0xD8,0x3F,0x32,0xF4,0x34,0x39,0x7E,0xC2,0xA3,0xE8,0x54,0x7F, +0x89,0x18,0xA7,0xE7,0x27,0xC6,0x71,0x9C,0x9E,0x2B,0x1D,0x3D,0x8E,0xDA,0xC8,0x4E, +0x79,0x4D,0x6D,0x0B,0xF2,0x7B,0x1D,0x8E,0x9E,0x45,0xEB,0x2F,0xF9,0xA4,0x73,0x7D, +0x07,0x49,0x8F,0xC8,0xF4,0x13,0x38,0x59,0x16,0x92,0x32,0x52,0x98,0x59,0x1B,0x6D, +0x65,0x67,0x79,0x59,0xE0,0xD7,0x6B,0x2B,0x2A,0xB3,0x9D,0x6D,0x17,0x5B,0x98,0xA4, +0xCE,0x75,0xDD,0x37,0x3B,0x2D,0xC8,0x4B,0x4D,0x62,0xF9,0xD9,0x6E,0x25,0xB6,0xCA, +0xCB,0x65,0xE5,0x30,0x6F,0xE3,0x57,0xF7,0xB5,0x39,0xF4,0xBD,0xBA,0x9C,0xD7,0x55, +0x39,0xD1,0x4E,0xF4,0xF9,0x3F,0x93,0x3B,0x8C,0xE4,0x64,0xF0,0x12,0x78,0x4C,0x3F, +0x23,0x26,0xC6,0xCE,0xB7,0xC0,0xAD,0xB1,0xD6,0xDA,0x56,0xE9,0x34,0x14,0x7D,0x7D, +0x1E,0x6E,0x97,0x41,0x46,0x6F,0xFC,0xDF,0xF9,0xBF,0xFF,0x6F,0x7F,0xF1,0xA4,0x3C, +0xF1,0xF6,0x76,0x69,0xD8,0x6D,0x0E,0xE4,0x79,0xA8,0xCB,0x3C,0xB3,0x95,0x79,0x8A, +0x89,0x5F,0x71,0x7F,0x87,0x3D,0xF5,0xFD,0x6B,0x3A,0x63,0xC6,0xA0,0xBB,0x5F,0xAD, +0x8B,0xE2,0x27,0xEE,0x6F,0xE9,0xB3,0xC9,0x27,0x63,0xD3,0x6F,0x45,0x63,0x52,0xFF, +0x12,0xBE,0xE2,0xFF,0x0E,0x7C,0x1C,0xFE,0xAD,0x9D,0x39,0xDF,0x76,0xBF,0x59,0x5F, +0x11,0x4F,0xB7,0xC7,0xEA,0xDB,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF, +0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF, +0xC7,0xFF,0xC0,0x7F,0xE7,0x9F,0xFC,0xF3,0xFF,0x9E,0x7F,0xF3,0xCF,0xFE,0x6F,0xFC, +0xDF,0xF9,0xBF,0xF3,0x7F,0xF9,0x64,0x14,0x59,0x4C,0xA5,0x17,0x6A,0x82,0xA3,0x41, +0xA0,0xA8,0xED,0x6A,0x7B,0x6A,0x94,0xC8,0x8B,0x4E,0xA4,0xFE,0x85,0x07,0x3F,0xCE, +0x73,0x9C,0xFD,0x22,0x0C,0xCD,0x1D,0x1E,0x66,0x93,0x35,0x9B,0xCD,0x26,0x44,0x5A, +0x75,0x27,0xC9,0x20,0xC0,0x48,0xC8,0xE0,0x1D,0xA0,0x9C,0x9B,0x9B,0x9C,0x77,0x3D, +0x90,0x9E,0x4C,0x88,0xB4,0xEA,0x4F,0xB1,0x41,0x5F,0x5D,0x5D,0x5F,0x30,0x82,0x5E, +0x5A,0x5A,0x5E,0x62,0x66,0x6A,0x65,0x32,0x22,0xD3,0xA9,0x3E,0x32,0xFD,0x49,0xFB, +0xE9,0x10,0xBA,0x3F,0xD0,0x4F,0x4F,0x50,0x2B,0x1A,0x9C,0xC9,0xEC,0xE0,0xF4,0x6B, +0xB7,0xA7,0x83,0xCE,0xFE,0x15,0xFE,0x1C,0xF8,0x3D,0x1F,0xF6,0x89,0xFE,0xAF,0x2F, +0xD5,0xA6,0x40,0xBF,0x17,0xF4,0x14,0x2E,0x80,0x03,0xD7,0x19,0xED,0x48,0xFB,0x91, +0x95,0xC8,0xC7,0x74,0x30,0x60,0xA4,0x6F,0x64,0xB0,0x05,0x18,0x45,0xD3,0x28,0x62, +0xA5,0xA5,0x4B,0x9B,0x05,0x64,0x7F,0x6C,0xBF,0x04,0x65,0xEE,0x1F,0x83,0x6A,0x09, +0x8D,0x9F,0xF1,0x3C,0xFC,0x56,0x6F,0xFC,0xDF,0xF9,0xBF,0xFF,0xF7,0xBF,0xFF,0xD0, +0x31,0x60,0xC5,0x92,0x75,0xBB,0x12,0xBD,0x7A,0xF6,0x28,0xFC,0x55,0x65,0x77,0x7F, +0x87,0x3D,0xF5,0xFD,0x6B,0x3A,0x63,0x72,0x82,0xED,0x7E,0xB6,0x2F,0x88,0x9F,0xB9, +0xBF,0xA6,0x7A,0xF4,0xEC,0x25,0xA3,0xD2,0x1C,0x6A,0x63,0xF5,0xAB,0xD5,0xBF,0xAB, +0x3E,0x0E,0x7F,0x56,0xCE,0x9C,0xEF,0xE8,0xAF,0xD6,0x57,0xAC,0xA7,0xDB,0xE3,0xF5, +0x6D,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF, +0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0xE0,0x3F,0xF3, +0xCF,0xFE,0x79,0xFF,0xCF,0x3F,0xF9,0xE7,0xFF,0x37,0xFE,0x6F,0xFC,0xDF,0xF9,0xBF, +0xF5,0xEF,0x88,0xEB,0x82,0x2D,0x3D,0xE2,0x9F,0xDB,0x5F,0x84,0x62,0xEF,0xA3,0xFB, +0x2D,0xBF,0x46,0xF5,0x39,0xDF,0xC2,0xBF,0xC3,0x9F,0xE7,0xF5,0x3F,0x17,0xFC,0x05, +0xFB,0x36,0x6B,0x80,0x00,0x00,0x03,0x82,0x37,0xF3,0xC9,0x06,0xAD,0xDC,0xAC,0x5D, +0xDF,0xDB,0xFE,0x32,0x12,0xFE,0x35,0xFF,0xFA,0x67,0xF5,0x94,0xFE,0x6E,0x3F,0xFC, +0x38,0x5D,0x37,0xF9,0x0E,0x17,0x6A,0x5E,0xB3,0xF8,0xCB,0xF3,0x5F,0xE6,0x7F,0x37, +0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1, +0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC, +0x7F,0xE7,0x9F,0xFC,0xD7,0xF9,0x9F,0xCD,0xFF,0x9B,0xFF,0x35,0xFE,0x67,0xF3,0x3F, +0x99,0xFC,0xFC,0xFF,0x17,0xFB,0xD5,0xFB,0x97,0x36,0xC0,0x00,0x00,0x01,0xC1,0x2C, +0xBC,0xEA,0xFB,0x24,0x97,0x77,0xFB,0x2D,0xCD,0xFD,0x6B,0x3E,0xED,0x7F,0x65,0xE8, +0x60,0x7B,0xAB,0xFE,0xFF,0x3F,0xD9,0x79,0xCA,0x7D,0xC6,0x3F,0x5A,0xDF,0x12,0xCF, +0x65,0x65,0xB8,0xC0,0xF7,0x79,0xFF,0xD2,0xD3,0xFC,0x65,0xFF,0xF9,0xD7,0xFD,0x85, +0xCE,0x9F,0xD1,0x5F,0x60,0x93,0x75,0x5F,0x75,0x3E,0xC3,0xCD,0x40,0x58,0x7E,0x25, +0xFD,0x87,0xA1,0x81,0xEE,0xAF,0xFB,0xFC,0xFF,0x61,0xE7,0x29,0xF7,0x18,0xFD,0x6B, +0x78,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7, +0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xEF,0xDF,0xF9,0xE4, +0xFF,0x3C,0xFF,0xE7,0x9F,0xFC,0xD7,0xF9,0x9F,0xCD,0xFF,0x9B,0xFF,0x35,0xFE,0x67, +0xF3,0x3F,0x99,0xFE,0xEF,0x9B,0xFA,0x85,0xD7,0x3B,0xFB,0x0F,0xC9,0xD0,0xFC,0x5F, +0xDF,0xAF,0xED,0xAD,0x9C,0xB9,0x74,0xE9,0xCB,0x97,0x0E,0x14,0x8D,0xBB,0x76,0xCD, +0x93,0xF6,0xF6,0x9C,0x5F,0x8B,0xF1,0x7E,0x2F,0xC5,0xF8,0xBF,0x17,0xF7,0xCB,0xF2, +0x32,0x32,0x32,0x33,0xF3,0xFC,0x5F,0x8B,0xF1,0x7E,0x46,0x46,0x46,0x46,0x46,0x46, +0x46,0x46,0x46,0x46,0x46,0x46,0x74,0xFF,0x17,0xE2,0xFC,0x5F,0x91,0x91,0x91,0x91, +0x91,0x91,0x91,0xDF,0xC6,0x99,0x29,0xE1,0x2B,0xBE,0x8D,0x32,0x5E,0xF1,0x13,0xFD, +0x51,0xBD,0xE3,0x1A,0xD5,0xAE,0xFA,0x34,0xC9,0x6A,0xD5,0xA3,0x4D,0xF4,0x71,0xF1, +0xEC,0xD9,0xC7,0xC7,0xB2,0x65,0xBE,0x8D,0x77,0xAE,0x2A,0xE3,0xDA,0x34,0x66,0xCD, +0x3F,0x6F,0x29,0xD5,0xD4,0x7B,0xD7,0x36,0xD1,0xA5,0xE5,0x3A,0xBB,0x8F,0x7B,0x8A, +0xDA,0xB5,0xBC,0xA7,0x3A,0xBF,0xB9,0x73,0x1D,0x71,0xA9,0x15,0x6D,0x2F,0x74,0x67, +0x1F,0x1F,0x16,0x9D,0x93,0x26,0x2C,0x58,0x30,0x5E,0xBC,0x5F,0x8B,0xF1,0x7E,0x2F, +0xC5,0xF8,0xBF,0x17,0xF7,0xAB,0xF7,0x32,0x12,0x12,0x3F,0x74,0x45,0x7B,0xA7,0x2E, +0x1B,0xB6,0xDD,0x57,0xDD,0x4F,0xB7,0xBF,0xAD,0x67,0x4C,0x6D,0x91,0xC1,0xDE,0xED, +0x7E,0xB6,0x2F,0x7E,0x8F,0x43,0x5F,0xB8,0x4F,0xFD,0xEB,0xFF,0xEC,0xCF,0xE9,0xCE, +0xFB,0xB5,0xFE,0xE9,0xA3,0xAC,0xA7,0xDC,0x63,0xF8,0x56,0xF6,0xD0,0x78,0xFB,0xC3, +0x8D,0xF5,0x9D,0xAB,0x46,0x69,0xD5,0x1B,0x08,0x34,0xEF,0xF1,0xFE,0xD2,0xFF,0xB6, +0x9E,0xF5,0x4E,0xB7,0x28,0x9F,0x61,0x7F,0xC0,0xD7,0xFC,0x34,0x3F,0xE7,0xFC,0x7F, +0xDF,0x7E,0xB3,0xDF,0x2F,0xCF,0xE7,0xF1,0xFF,0xDF,0x3F,0xF4,0x4C,0xFD,0xA3,0xAF, +0xD6,0xAF,0x75,0xEC,0xAF,0xE2,0xB3,0xF7,0x5F,0xC9,0xBF,0x8B,0xF7,0x5E,0xCE,0x77, +0x50,0x8D,0xE5,0x81,0x17,0xE2,0xFC,0x5F,0xC6,0x5F,0x9F,0xAF,0xE7,0xFF,0xF9,0xFF, +0xFE,0x7F,0xFF,0xAD,0xC0,0x3D,0x4F,0xC2,0x75,0x3A,0x4E,0xFE,0x5A,0x7B,0xC5,0x3F, +0xB4,0xBF,0x56,0x9D,0xEF,0x5F,0xD8,0xE8,0xEF,0xFA,0xBF,0x1F,0xFD,0xF3,0xFF,0x3C, +0x9F,0xE7,0x9F,0xFC,0xF3,0xFF,0x9A,0xFF,0x33,0xF9,0xBF,0xF3,0x7F,0xE6,0xBF,0xCC, +0xFE,0x67,0xF3,0x3F,0xAB,0xDB,0xFE,0x17,0xAC,0xB6,0x17,0x51,0xBD,0xED,0x3E,0xD7, +0x9F,0xEA,0xE5,0xC9,0xE9,0x32,0xA5,0x86,0x17,0x59,0xDD,0xED,0x3C,0x6E,0x8F,0xFE, +0xEF,0xBB,0xFE,0x02,0xFD,0x70,0x00,0x7F,0xC2,0x41,0xD7,0xDF,0x2E,0xAB,0xF7,0xE4, +0x87,0xA1,0x3C,0xCF,0xFE,0xE6,0x7F,0xF3,0x6B,0xE4,0x3F,0xD3,0x07,0x37,0xFE,0x6B, +0xFC,0xCF,0xE6,0xFF,0xEE,0x83,0xBC,0x09,0xE5,0x81,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F, +0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1,0xFF,0x8F, +0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xCF,0x37,0xF9,0x9F,0xCF,0x3F,0xF9,0xE7,0xFF, +0x35,0xFE,0x67,0xF3,0x7F,0xE6,0xFF,0xDC,0x38,0x72,0xE5,0xC3,0x86,0xED,0xD4,0x8D, +0xB3,0x66,0xAD,0x53,0xF6,0xF2,0x9D,0x35,0x29,0xA5,0x52,0x36,0xAD,0x5A,0x34,0x4F, +0xDB,0xCA,0x74,0xD4,0xBD,0xC2,0x6A,0x56,0xB3,0x66,0x9F,0xB7,0x94,0xEF,0x58,0x6A, +0x70,0x9A,0x95,0xB1,0xF1,0xE9,0xFB,0x79,0x4E,0xF6,0x6B,0x26,0x4A,0x46,0xC5,0x8B, +0x06,0x09,0xFB,0x79,0x4E,0xBB,0xD7,0x1F,0xF3,0x87,0x47,0x43,0x74,0xEA,0x46,0x1C, +0x6F,0xB9,0x93,0xB5,0x68,0xCD,0x38,0xF5,0x84,0x1A,0x77,0xFC,0xEF,0xF6,0x97,0xFD, +0xB4,0xF7,0xBC,0xE5,0xEE,0x12,0xEF,0x75,0x26,0xD9,0xB3,0x84,0x7E,0x3F,0x35,0x45, +0xFD,0x5D,0x93,0xBF,0x8D,0xD4,0x05,0xF2,0x19,0xBA,0xF8,0x34,0xEF,0x6E,0xEA,0xDF, +0xF6,0xD3,0xED,0xEF,0xEB,0x6E,0x1D,0xBA,0x30,0x83,0x44,0x21,0xD5,0xD9,0x3B,0xF8, +0xDC,0xC0,0x5F,0x30,0x60,0xBE,0x3A,0x0D,0x3B,0xDB,0xBA,0xB7,0xFD,0xB4,0xFB,0x7B, +0xFA,0xDB,0x87,0x6C,0x8C,0xA0,0xCD,0x08,0x75,0x76,0x4E,0xFE,0x37,0x10,0x17,0xCB, +0xD7,0xC7,0x2E,0x83,0x4E,0xF6,0xEE,0xAD,0xFF,0x6D,0x3E,0xDF,0x1F,0x2D,0xB8,0x76, +0xA8,0xCA,0x11,0xE8,0x43,0xAB,0xB2,0x77,0xF1,0xB7,0x80,0xBE,0x8E,0x8E,0x83,0x67, +0x52,0xEE,0xAD,0xFF,0x6D,0x3E,0xDD,0x9E,0xAD,0xB8,0x75,0xC0,0x00,0x00,0x00,0x16, +0xE6,0x0B,0x82,0x60,0xC3,0x82,0x1A,0xFF,0x03,0x5F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7, +0xFE,0x3F,0xF1,0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x3F,0xF1, +0xFF,0x8F,0xFC,0x7F,0xE3,0xFF,0x1F,0xF8,0xFF,0xC7,0xFE,0x06,0xBF,0xC0,0xD7,0xF8, +0x1A,0xFF,0x00,0x00,0x0F,0x58,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xB8,0x6D, +0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x61,0x70,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,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xE5,0x67,0xE7,0x70,0x60,0x00,}; diff --git a/MCUME_esp32/espsnd/ym2h/enchant1.ym b/MCUME_esp32/espsnd/ym2h/enchant1.ym new file mode 100755 index 0000000..70862f8 Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/enchant1.ym differ diff --git a/MCUME_esp32/espsnd/ym2h/jess1.h b/MCUME_esp32/espsnd/ym2h/jess1.h new file mode 100644 index 0000000..40966f4 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/jess1.h @@ -0,0 +1,491 @@ +const unsigned char musym[7835] = { +0x20,0x67,0x2D,0x6C,0x68,0x35,0x2D,0x78,0x1E,0x00,0x00,0x6E,0xD0,0x05,0x00,0x4A, +0x8A,0x93,0x26,0x20,0x00,0x0A,0x43,0x41,0x4D,0x45,0x52,0x54,0x4F,0x2E,0x59,0x4D, +0xF9,0x9C,0x13,0xCC,0x82,0xC1,0xF8,0x7B,0xEF,0x58,0xD3,0x7E,0xFF,0x7B,0xBB,0xBB, +0x9E,0xE9,0xE9,0xE9,0xE9,0x1A,0x5D,0x37,0x6E,0x1A,0xB1,0xFE,0xB6,0xB5,0x49,0x79, +0x92,0x64,0x4C,0xA2,0xC7,0x89,0xBB,0x4F,0xEB,0xAD,0xB1,0xB7,0xB4,0xAE,0x74,0xB3, +0x4B,0xB5,0x8B,0x3A,0x2C,0xAE,0x63,0x6A,0xC9,0x2F,0x47,0x9E,0xD2,0xAB,0xCF,0x59, +0x62,0x91,0xED,0xCF,0x47,0xAC,0x15,0x87,0x12,0xAA,0xC6,0x2D,0x6A,0x91,0x48,0xD5, +0xA3,0x6A,0xB6,0x58,0xF5,0x95,0x55,0xB0,0x84,0x8F,0x1C,0xF5,0xED,0x07,0x23,0xA3, +0x25,0xE9,0x19,0x46,0xD9,0xD2,0x49,0xDF,0xFF,0x7E,0xFE,0x7A,0x77,0x7B,0xF3,0xCB, +0x27,0xEC,0x8B,0x3F,0x79,0xAD,0xF2,0xB5,0xF4,0x6D,0x7D,0x1C,0x3E,0x71,0xB7,0x6C, +0x1A,0x4A,0x52,0x14,0x37,0x5F,0x83,0x4C,0xE0,0x6B,0xB0,0xEC,0x6D,0xC6,0x31,0x43, +0x5C,0x97,0x18,0x12,0x8D,0x76,0xAB,0x29,0x6D,0x7E,0x0C,0x53,0x7C,0x18,0xC5,0xF8, +0x6A,0x52,0x94,0x30,0x5F,0x8A,0x6D,0xF0,0x34,0x2E,0x70,0x6B,0x3E,0x1D,0x83,0x1A, +0xFC,0x77,0x18,0xA1,0xB1,0x4C,0x1A,0x98,0x30,0x6F,0x97,0x7C,0x34,0x41,0xFF,0x73, +0xEE,0x91,0xC9,0x16,0x96,0x79,0xDD,0xB7,0x67,0xD8,0x6E,0x53,0x3E,0x6E,0xF7,0x70, +0xDD,0xFF,0x03,0x61,0x74,0xEB,0xCF,0x3A,0x62,0x8C,0x67,0xFE,0xBF,0x3B,0xE9,0x1D, +0x7D,0xEB,0xA7,0x5A,0xE3,0x25,0x4B,0xDD,0xF7,0x59,0x9D,0xDE,0xF9,0xBB,0x5A,0xAF, +0x3B,0xB6,0xEF,0x6A,0xBB,0xEE,0x37,0xAB,0xC5,0xAB,0x70,0xBB,0xDE,0xEF,0x0E,0xBC, +0xC4,0xCD,0xDE,0xF7,0x6A,0xF3,0x93,0x3B,0x85,0xDF,0x78,0xBE,0x5E,0xA6,0x6F,0x76, +0xAF,0x2D,0x33,0xBB,0xDD,0xF7,0x7B,0xC5,0xAB,0x63,0xF3,0x13,0x3B,0xC6,0xF1,0xB2, +0x3A,0x97,0xDD,0xAF,0x77,0xE6,0x54,0xE6,0x59,0x4B,0xBF,0xDA,0xBC,0xDC,0xCD,0xE2, +0xF5,0xE8,0x6F,0xBB,0xC3,0xAD,0x6A,0xA7,0xA0,0x96,0xA7,0xA1,0x97,0xA8,0xA0,0xB7, +0xD2,0xCF,0xCB,0x54,0x70,0x77,0x0A,0x79,0xFD,0xAA,0x9A,0x82,0xE1,0x93,0xA1,0x96, +0xA6,0xC1,0xDB,0xFA,0xA6,0xFF,0x3A,0x9E,0x90,0xCD,0x4D,0x53,0xE5,0x72,0xB9,0x55, +0x63,0x0A,0x16,0xE9,0xE9,0x6F,0xC4,0xA7,0x96,0xF9,0x6F,0x96,0xF9,0x6F,0xD0,0xCB, +0xCC,0x65,0x27,0x75,0xFE,0x4E,0xE6,0x94,0x99,0xCE,0x55,0xF2,0x49,0x63,0x7D,0x1B, +0x77,0x53,0x0C,0xFD,0x8E,0x72,0x5A,0x42,0x94,0xF8,0x4C,0x56,0x1A,0x9B,0xEB,0xE5, +0x9A,0xD9,0x6E,0x36,0x4B,0xED,0xF6,0x66,0x66,0xFB,0xBF,0x75,0xF0,0x14,0xFE,0xDE, +0x9F,0x12,0x93,0x5F,0x07,0xE4,0xE2,0xBD,0x8E,0x0E,0xAA,0xAB,0x29,0x94,0xAA,0x77, +0xDC,0xC1,0xF7,0xDF,0x91,0xBE,0xF9,0x6C,0x56,0x2B,0xD4,0x7A,0x8C,0x57,0x33,0xDC, +0xC1,0x49,0x9E,0xFB,0xAE,0x82,0xE3,0x71,0xD9,0xF6,0x7B,0x8F,0xE1,0xF7,0x30,0x53, +0xB1,0x53,0x52,0xD3,0x53,0xD4,0x64,0xEA,0x20,0xC8,0xC4,0xB1,0x62,0x38,0x9C,0x46, +0x27,0x8D,0xE3,0xB8,0xDC,0x4D,0x03,0x14,0xFE,0x0E,0x7E,0x82,0x87,0x83,0xA1,0xAE, +0x91,0x79,0x62,0xBC,0x6E,0x17,0x8B,0xCE,0xE7,0xE8,0x37,0x3B,0xCC,0xB3,0x15,0xBF, +0x6A,0xB7,0xCB,0x5C,0x25,0xEE,0x10,0x64,0x7D,0xFF,0x97,0x98,0xFC,0x4B,0xAF,0x9E, +0xDC,0x26,0x77,0x3D,0xDA,0xFD,0x39,0x3B,0xE9,0x70,0x5C,0x0D,0x06,0x13,0x85,0xF5, +0x18,0x9E,0x43,0x91,0xC5,0xCE,0x31,0x4D,0xDF,0xE6,0xE7,0x30,0x1B,0xDE,0x03,0xB6, +0x91,0x75,0x62,0xBA,0x6D,0xF7,0x4B,0xAD,0xDB,0xF1,0xAE,0xD0,0x64,0x49,0xB1,0x5A, +0x7C,0x7D,0xA6,0x4E,0x53,0x5E,0x94,0x93,0x73,0x31,0xAC,0x88,0x79,0xBD,0xF6,0x2E, +0xF5,0x3C,0x7F,0x25,0xC9,0xF2,0xBC,0xC5,0x27,0x3D,0x91,0xA5,0xE8,0x72,0x7F,0x99, +0xD2,0x54,0xF4,0xF9,0xD8,0xF9,0x17,0x7E,0x45,0x8B,0x61,0xD8,0x36,0x1F,0x23,0xE4, +0xFC,0xA7,0x93,0xED,0xA4,0x6B,0x47,0xF9,0x56,0x2B,0x5E,0xC9,0x6B,0x95,0xB6,0x5B, +0xAD,0x90,0x64,0x3C,0x62,0x77,0x24,0xED,0xE3,0xDB,0x43,0xD7,0x95,0x2C,0x59,0x6E, +0x97,0x2D,0x53,0x98,0xCC,0xE6,0x20,0xC8,0xA4,0x62,0xC6,0xE3,0x31,0xB4,0x98,0xEE, +0x6F,0x1D,0x5D,0x22,0x8D,0x8B,0x0D,0xC2,0xE1,0xA8,0xF0,0xFC,0x3E,0x1E,0x8F,0x87, +0xE2,0x71,0x1C,0x77,0x23,0xCA,0x7A,0xEE,0x63,0xD7,0xF3,0x5E,0xC7,0xD9,0x7B,0x3C, +0x95,0x3F,0x45,0xD1,0xF4,0x99,0x5F,0x6B,0x97,0xE9,0xF3,0x91,0xB0,0xEC,0x77,0x24, +0x51,0x31,0x61,0x38,0x2C,0x25,0x16,0x17,0x84,0xC2,0xE9,0x64,0x2E,0x0F,0x5A,0xDA, +0xB7,0x59,0x0B,0x9E,0xFD,0xB7,0xB7,0xAA,0x8C,0x92,0xB3,0xDA,0x7E,0xF3,0x5E,0xD8, +0x7C,0x97,0x94,0xD9,0x76,0x7D,0xAE,0x5F,0xFF,0xFE,0x5F,0xCD,0x7E,0x16,0xDD,0xF8, +0xBB,0x85,0xEA,0x1F,0xC9,0xF7,0x24,0x6B,0x71,0xFC,0xD3,0xE5,0x7E,0x99,0x7C,0xB7, +0x14,0x97,0x0D,0x8C,0x3A,0x7C,0x4B,0x37,0xC5,0xB7,0xEA,0x5A,0x38,0x29,0x1A,0xFA, +0x85,0x46,0xD7,0xC0,0x44,0x96,0xAD,0xDC,0x97,0x0E,0x9E,0x94,0x3C,0x83,0xE5,0x8F, +0x59,0x78,0x07,0xCA,0x71,0x5B,0xA3,0x18,0xB4,0xFA,0x26,0xBE,0x62,0x4F,0x3E,0x53, +0xA9,0x94,0x52,0x5B,0x8D,0xD0,0x07,0x47,0xA8,0xDD,0x25,0xB8,0xDE,0x81,0xAD,0x5F, +0x2F,0x2D,0x6A,0xBD,0x2C,0xD6,0xAB,0x0F,0x1A,0xD3,0x69,0x32,0xEE,0x29,0xF2,0xE4, +0x13,0x07,0xAD,0xBE,0x8F,0x74,0x12,0xF7,0x1B,0xBE,0xE3,0x33,0xB9,0x5E,0xB7,0x29, +0x9D,0xD1,0x8A,0xF5,0xB9,0x5E,0xB7,0x4D,0xD7,0x76,0xDD,0x77,0x48,0x32,0xF4,0x92, +0x3D,0x0E,0xED,0x7B,0xDD,0xAF,0x7B,0xAF,0xA1,0xDE,0x2F,0xD7,0xF9,0xAF,0x46,0xD6, +0x1A,0xBE,0x5F,0xA6,0xB7,0x9D,0xEB,0x79,0x83,0x21,0x6C,0x75,0xA1,0xC5,0xB7,0xDA, +0x15,0x1F,0x6B,0xBB,0xBE,0xEF,0x70,0x64,0x60,0xD8,0xB8,0x0C,0x17,0x00,0xCD,0x9A, +0xA7,0xF0,0x6B,0x43,0x73,0x07,0xAC,0x89,0xCD,0xEA,0x6F,0x7A,0x9B,0xDE,0x67,0x3D, +0x26,0xFB,0x3D,0xBF,0x4E,0xB9,0xA5,0x7B,0x9A,0x4B,0xB4,0x2A,0x6F,0x93,0xB3,0xD8, +0x1C,0x16,0x06,0xBA,0x46,0xFF,0x82,0xF4,0xD8,0x2F,0x4D,0x81,0xDF,0xF0,0x7F,0x95, +0x43,0xC1,0x50,0x43,0xD8,0x2D,0xAF,0x88,0x9C,0xFE,0x3F,0x21,0x91,0xE8,0x32,0x39, +0x05,0xF5,0x8B,0xB8,0x35,0xB9,0x64,0x4F,0x5D,0xF6,0xE9,0xED,0xFA,0xEF,0xD5,0x62, +0x65,0xAA,0xB8,0xD7,0xF0,0xA5,0x3D,0x58,0xC2,0x85,0xBA,0x7E,0x73,0x13,0x6F,0xE9, +0xF1,0x10,0x58,0xD3,0xD0,0x4A,0xD3,0xD0,0xDB,0x92,0x1B,0x63,0x5B,0xC0,0x2B,0x18, +0x50,0xB7,0x4F,0xA8,0xA0,0xB5,0xD2,0xCF,0xC1,0x63,0x39,0x27,0x41,0x39,0x29,0xC1, +0xA4,0x34,0x2D,0x78,0x35,0x2B,0x18,0x50,0xB7,0x4F,0xC0,0x49,0xCF,0xDF,0xED,0x30, +0x58,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x9C,0x9C,0xFA,0xBE,0x4F,0xF0, +0x67,0x07,0xF0,0x7F,0x06,0x73,0xA5,0xFC,0xA7,0x9D,0x2F,0xE7,0x4B,0xF9,0xD2,0xFE, +0x74,0xBF,0x9D,0x2F,0xE7,0x4B,0xF9,0xD2,0x3E,0x74,0xBF,0x9D,0x2F,0xE7,0x4B,0xF9, +0xD2,0xFE,0x71,0xBF,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x9C,0x9C,0xE7, +0x33,0xF8,0x3F,0x83,0x3F,0x82,0x3F,0xDF,0x2F,0x9B,0x45,0xB6,0xDB,0x6D,0xE3,0xF8, +0xF7,0xD0,0xA4,0xB7,0xF4,0x36,0x92,0x37,0x87,0x4F,0xF4,0x5E,0x8A,0xB5,0x8C,0xDC, +0xDB,0xE8,0x52,0x9F,0x81,0xC0,0xBE,0x97,0x92,0xC9,0x3E,0x85,0x25,0xA5,0x3D,0x5B, +0xB7,0x8B,0x56,0xB6,0xB4,0xFF,0x3F,0xE7,0xF4,0x14,0xF9,0xD9,0xD7,0xCC,0x79,0xDE, +0x75,0xF4,0x29,0x2D,0x1E,0xAB,0x78,0xB4,0xF4,0x96,0x94,0xF4,0xC9,0x7C,0xB7,0x2D, +0x5B,0x95,0xD2,0x9E,0xAD,0xDC,0xC7,0xEA,0x36,0xAD,0x6C,0x1F,0xC1,0xFC,0x1F,0xC1, +0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC, +0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xFC,0x11,0xFF,0x35,0xB2,0xDC,0x6C, +0x97,0xDB,0xEC,0xCC,0xCD,0xF7,0x7E,0x20,0xF8,0xD0,0x53,0xD0,0x4B,0x53,0xD0,0xCB, +0xA4,0x33,0x53,0x54,0xF9,0x5C,0xAE,0x55,0x58,0xC2,0x85,0xBA,0x7D,0x45,0x05,0xBE, +0x96,0x7E,0x5A,0x25,0x3C,0xB7,0xE8,0x65,0xDD,0x7D,0x65,0x19,0xFE,0x89,0x99,0x36, +0x42,0x42,0x40,0xA7,0x94,0xF2,0x9E,0x53,0xFE,0x2D,0x3E,0x36,0x36,0x3A,0x3E,0x3E, +0x41,0x29,0x31,0xB1,0xCF,0x93,0xF9,0x63,0x7D,0x1B,0x76,0x38,0x8F,0x8E,0x72,0x5D, +0x64,0x2C,0xA7,0xF6,0x0C,0x6B,0x21,0x75,0x22,0xF9,0x32,0x81,0x23,0xD9,0x22,0x9F, +0xDB,0xD3,0xE2,0x52,0x6B,0xD4,0x6C,0x64,0x6C,0x7B,0x4A,0x43,0xB9,0x82,0xB2,0xDF, +0xFD,0x95,0x1D,0x1B,0x1F,0x21,0xAE,0x7E,0xDA,0xF9,0x7E,0x2E,0xF1,0xBF,0xBC,0xAC, +0x71,0xE4,0x77,0xEA,0x2D,0x68,0xFF,0xD9,0x6E,0x0F,0xFB,0xBE,0x90,0x5E,0x2F,0xA9, +0x71,0x8F,0xC4,0x2E,0xF7,0xE7,0x80,0x0B,0xFF,0xC9,0xBE,0x2A,0xDF,0x0D,0xEA,0xDF, +0xE6,0xD8,0xC2,0xFE,0x87,0x4F,0x10,0x3F,0x83,0xF8,0x81,0xFC,0x1F,0xCE,0x4E,0x7D, +0x5F,0x27,0xF8,0x33,0x83,0xF8,0x3F,0x83,0x39,0xD2,0xFE,0x53,0xCE,0x97,0xF3,0xA5, +0xFC,0xE9,0x7F,0x3A,0x5F,0xCE,0x97,0xF3,0xA5,0xFC,0xE5,0xFF,0x11,0xD2,0xFE,0x23, +0xA5,0xFC,0xE3,0x7F,0x10,0x3F,0x83,0xF8,0x81,0xFC,0x1F,0xCE,0x4E,0x73,0x99,0xFC, +0x1F,0xC1,0x9F,0xC1,0x1F,0xD9,0xC5,0x90,0xCE,0x56,0xBE,0xA2,0x14,0xB7,0xDF,0x25, +0x63,0x0A,0x9F,0xD5,0x37,0xEC,0xE9,0xFA,0x2C,0x5B,0x02,0xB7,0x0A,0x9F,0x16,0xDF, +0xEE,0xF1,0xFA,0x8D,0xB0,0x69,0x20,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0, +0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE, +0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F, +0xE0,0xFE,0x0F,0xE0,0xFF,0xF2,0x87,0xF6,0x50,0x24,0x45,0xFC,0xCA,0x32,0x02,0x74, +0xEA,0x32,0x42,0x42,0x42,0x33,0xB3,0x45,0x3F,0xE0,0x53,0xEA,0x6F,0xAF,0x92,0x68, +0xCF,0x61,0x2D,0x51,0x6F,0xF5,0xF6,0xFF,0x1F,0xC7,0xED,0x16,0xDB,0x6D,0xB5,0xFD, +0x0F,0x9D,0x7C,0xB5,0x2D,0xCB,0x7C,0xB7,0xCB,0x7C,0xB7,0xFB,0x4B,0x7D,0xA5,0xB5, +0xC0,0x86,0x6B,0xB3,0x63,0x35,0xA1,0x63,0x2F,0x02,0x5E,0xD3,0xDA,0xD9,0xB0,0xED, +0xFD,0xA7,0x49,0x75,0xFF,0x7E,0x3F,0x98,0xCA,0x4E,0xEB,0xFC,0x9D,0xCF,0x45,0x66, +0xCC,0x33,0xF6,0x39,0xB6,0x30,0x29,0xFD,0x45,0xBF,0xA0,0xA7,0xED,0x3A,0x8B,0x7D, +0xBB,0xAF,0x41,0x4F,0xFA,0x98,0xFE,0xA7,0xD9,0x3E,0x4F,0xEB,0x7A,0x0A,0x1D,0x8E, +0x3F,0xD8,0xDA,0x86,0x61,0xFC,0xBA,0xDA,0x7C,0x16,0x3A,0x4C,0x7F,0x31,0xA2,0xA7, +0xB5,0x2E,0x05,0x0F,0x62,0x6A,0x1B,0x93,0xF9,0x75,0xB4,0xF8,0x2C,0x60,0x53,0xEE, +0x50,0x6A,0xAD,0xD3,0xDA,0x6F,0x02,0x9F,0xB3,0x35,0x0C,0xCB,0xF9,0x75,0xB4,0xF8, +0x2C,0x74,0x98,0xFE,0x64,0x1F,0xC1,0xFC,0x1F,0xFB,0x11,0xFE,0x2E,0x3F,0xED,0x04, +0xFF,0xE0,0x37,0xCC,0x7E,0x63,0xFE,0xEF,0x7D,0xF3,0x47,0xF3,0x5F,0xFF,0xF3,0x1F, +0xEA,0x58,0xB2,0xDD,0x2E,0x5A,0xA7,0x31,0x99,0xCC,0x41,0x91,0x90,0x62,0xC7,0xF3, +0xF8,0xFC,0x86,0x47,0xA0,0xC8,0xE4,0x29,0x18,0xB1,0xB8,0xCC,0x6D,0x26,0x3B,0x9B, +0xC7,0x75,0xD2,0x29,0x39,0xBE,0x7D,0x95,0x75,0xB4,0xE5,0x98,0xAD,0xFB,0x55,0xBE, +0x5A,0xE1,0x2F,0x70,0xAE,0x91,0x0E,0x86,0xE4,0x89,0x56,0x2B,0x5E,0xC9,0x6B,0x95, +0xB6,0x5B,0xAD,0x95,0xD2,0x22,0x63,0xF6,0xE4,0x62,0x98,0xB9,0x0F,0x55,0xC8,0x62, +0xB9,0x2C,0x5F,0x25,0x5D,0x22,0x8D,0x8B,0x0D,0xC2,0xE1,0xA8,0xF0,0xFC,0x3E,0x1F, +0xB6,0x91,0xF6,0x47,0xF7,0x8C,0x4E,0xE4,0x9D,0xBC,0x7B,0x68,0x7A,0xF1,0xCC,0xC6, +0xDC,0x8A,0x9C,0xCF,0xB7,0xCD,0xE6,0xF3,0x6B,0x5B,0xA0,0x62,0x9F,0xC1,0xCF,0xD0, +0x50,0xF0,0x74,0x3A,0x89,0x18,0x96,0x2C,0x47,0x13,0x88,0xC4,0xF1,0xBC,0x77,0x1B, +0x06,0x45,0x3B,0x15,0x35,0x2D,0x35,0x3D,0x46,0x4E,0xA2,0xBA,0x44,0x5C,0x06,0x82, +0x7D,0xE5,0x8A,0xF1,0xB8,0x42,0x16,0xE5,0xEE,0x3E,0x5B,0x6D,0xF3,0x9E,0x77,0xF1, +0xEE,0xFB,0x8E,0xE5,0x7A,0xDD,0x27,0x18,0xA6,0xEF,0xF3,0x73,0x98,0x0D,0xEF,0x01, +0xA6,0x91,0x04,0x7F,0x95,0xAD,0x1E,0x54,0x73,0x73,0xE1,0xFA,0xFC,0xDB,0x4A,0x1B, +0x7F,0x0F,0xFC,0x41,0xFD,0x06,0x1C,0xEB,0x16,0x6F,0x35,0x9B,0xCE,0xD5,0xC6,0x55, +0xE8,0xA4,0x46,0x47,0x48,0x59,0x75,0xDF,0xBB,0xF2,0x1B,0x06,0xC3,0xE4,0xFC,0xA6, +0xC9,0x13,0xE8,0x2D,0xCD,0x8A,0x63,0xCD,0x25,0x3E,0x1F,0xCD,0xB8,0x7A,0x51,0xAC, +0x84,0xB6,0x54,0xCD,0x4F,0xA1,0x6E,0x48,0xD3,0x94,0x73,0x4F,0x95,0xFA,0xA5,0xAC, +0x8C,0x90,0xEA,0x58,0xAC,0xBC,0xEB,0x44,0x04,0xB3,0x59,0x49,0x21,0xD4,0xB1,0x59, +0x69,0x72,0xA7,0xCF,0xA4,0x87,0x52,0xC5,0x65,0xBC,0x68,0x80,0xA0,0x68,0x62,0x48, +0x75,0x2C,0x56,0x59,0xC9,0xFE,0x63,0xF3,0x1F,0x98,0xFC,0xC7,0xE6,0x3F,0x3A,0x5F, +0xCE,0x97,0xF3,0x81,0xFC,0x1F,0xC1,0xFC,0x1F,0xCE,0x7F,0xF3,0x1F,0x98,0xFC,0xD1, +0xFC,0xD7,0xFC,0x1F,0xCE,0x97,0xF3,0xA5,0xFC,0xE9,0x7F,0x3A,0x5F,0xCE,0x97,0xF3, +0xA5,0xFC,0xE9,0x7F,0x3A,0x5F,0xCE,0x4F,0xF3,0x1F,0x98,0xFC,0xC7,0xF0,0xF7,0x7F, +0x4F,0x09,0x94,0xA4,0xC3,0xDC,0x96,0xA9,0x8B,0xDC,0x74,0xE9,0x4F,0x73,0x7F,0x7D, +0x3C,0x85,0xB6,0x6C,0x3C,0x27,0xD7,0x71,0x65,0xB6,0x53,0xC7,0x16,0xF1,0x79,0xDC, +0xFD,0x06,0xE7,0xA8,0x91,0x5F,0xE1,0xFF,0xCF,0xF3,0x18,0xAC,0x47,0x0D,0x41,0xE9, +0x66,0xAF,0x57,0x6D,0xB7,0x6C,0xD9,0xB6,0x3F,0x21,0xE3,0xA3,0xBD,0xB4,0x3F,0x06, +0xF4,0xF0,0xF3,0x4A,0x4E,0x9F,0xCF,0x6D,0xC3,0x96,0xC0,0x7F,0x70,0x13,0x5B,0x4E, +0x28,0xFF,0x26,0xC5,0x69,0xF1,0xF6,0x99,0x39,0x4D,0x7A,0x53,0x4B,0x22,0xC4,0x7F, +0x5F,0x5C,0x7B,0x09,0x0B,0xE8,0xB3,0x17,0xC9,0x6D,0x7C,0x9B,0x5C,0xF8,0x36,0xBE, +0x55,0xF0,0xFC,0x9F,0xD6,0x44,0x52,0xBD,0xBF,0x99,0xED,0xDE,0x2E,0x62,0x74,0xF3, +0x87,0x98,0xB9,0xED,0xDB,0x7E,0xDD,0x73,0x5B,0xDD,0x7E,0x1F,0xB7,0xF1,0x8D,0xBB, +0x35,0xCF,0x42,0x37,0x3D,0x11,0xE1,0x7B,0xCD,0xB6,0x48,0xB9,0xEA,0xFE,0xB4,0x95, +0xA1,0xC5,0x1F,0xDC,0xF8,0xC6,0xBE,0xBB,0xF3,0xCC,0x53,0xBB,0xE4,0xEC,0xF6,0x07, +0x05,0x81,0x83,0x21,0x07,0xF4,0x1C,0xD3,0x37,0xA0,0xAA,0x82,0x7A,0x09,0x29,0xF4, +0x8F,0x95,0x62,0xF5,0x78,0xB5,0xD8,0x2D,0x75,0xE7,0x5D,0x1B,0x52,0xB6,0xBE,0xA4, +0xA9,0x55,0x42,0x2D,0x18,0xEB,0xCC,0x52,0x92,0x69,0x7B,0xA0,0xB6,0xB7,0xEA,0xD5, +0x5B,0x6E,0x80,0xFA,0x58,0x2D,0xFB,0x79,0xA0,0x93,0xC5,0xB1,0x71,0x5C,0x42,0x70, +0xCC,0xD1,0x31,0x61,0x38,0x24,0x7A,0x94,0xF5,0xB1,0xD7,0x5E,0x76,0xFD,0x5E,0x50, +0x5B,0x50,0x95,0x6F,0x75,0xCD,0xE8,0xF5,0x07,0x3E,0x59,0x8B,0xD6,0x72,0x89,0x82, +0x52,0xC1,0x46,0xE9,0x83,0xF0,0x6C,0x5C,0x06,0x09,0x09,0x16,0xBD,0x4A,0xAF,0x97, +0xE9,0xAD,0xE7,0x7A,0xDE,0x6B,0xA4,0x6F,0xFE,0x9F,0x88,0xE4,0x79,0x7E,0x73,0xDA, +0x65,0xE3,0x3C,0x76,0xC1,0xE5,0x62,0x70,0xA5,0xA7,0xD5,0x3C,0x03,0x14,0xE3,0xEE, +0x03,0x0D,0xF7,0x7B,0xAE,0x91,0x82,0xE0,0x68,0x78,0x4A,0x3E,0x23,0x8E,0xC5,0xFA, +0xEA,0x4E,0x73,0x1F,0x0B,0xDC,0xBD,0xB9,0x08,0x2D,0xE1,0x28,0xB0,0xBC,0x26,0x16, +0xBA,0x46,0x27,0x17,0xEB,0xF1,0xF5,0x19,0x6C,0xF5,0x9E,0xD5,0x6E,0xDB,0x3C,0xCC, +0x5D,0x2B,0xE1,0xF1,0xBF,0xFB,0x0C,0x7D,0x45,0x4E,0x72,0xC9,0x29,0x6B,0xDA,0xF6, +0xDB,0xAE,0xE5,0xA8,0xD1,0xFE,0x06,0xB6,0x2B,0xF6,0x3D,0xC6,0xE9,0x40,0x5E,0x3F, +0xD4,0x36,0x50,0x73,0x49,0x6A,0xF5,0x1B,0xA3,0x15,0xFB,0x66,0x8C,0x55,0xEA,0xF2, +0x13,0xA7,0xCC,0x9E,0x2B,0x8B,0xE3,0x3D,0x4F,0x18,0xFE,0x42,0xD0,0xD4,0x7F,0x99, +0x62,0xDC,0x6E,0xE8,0xC5,0x7E,0x7C,0xA4,0xB4,0xC7,0x29,0x2D,0xCF,0x99,0xED,0x90, +0xBB,0x16,0xC1,0x27,0xAE,0xC9,0x55,0xAE,0xB2,0x70,0x98,0xB6,0x57,0xB7,0xA4,0xEA, +0xD0,0xE1,0xF9,0x3F,0xF3,0x2C,0x5C,0xBF,0xAD,0xE5,0xF9,0x9C,0x66,0x37,0x19,0xCC, +0xCD,0xB1,0x5F,0xFD,0x1A,0x1C,0xAB,0x2E,0x1F,0x87,0x3A,0xE6,0x35,0xFB,0xD2,0xDC, +0xB8,0x56,0x3A,0xFD,0x23,0x87,0xF3,0x3D,0x76,0x47,0x5A,0x7A,0xD8,0xEB,0xF2,0x1D, +0x68,0x7A,0x71,0xFD,0x75,0x5D,0x42,0x15,0x25,0xAB,0x78,0x7C,0xCF,0xEA,0x5F,0x43, +0xE4,0x4B,0x59,0x0E,0x73,0x8D,0xA7,0xD1,0xDE,0x01,0x9E,0x3C,0xB3,0xF0,0x64,0x39, +0xA5,0x7B,0x96,0x3B,0x9A,0x3F,0xB9,0x89,0xF2,0x6C,0x55,0x0C,0xF8,0xB7,0xD1,0x74, +0x7D,0x16,0x4D,0x73,0xDA,0xB7,0x59,0x0E,0x6E,0xFF,0x5E,0x1B,0xAE,0xC9,0xAB,0x2D, +0x5E,0xA4,0xB4,0x6E,0xE7,0xDB,0x98,0x94,0xF4,0xF8,0xF6,0xA7,0xEA,0x4B,0x46,0xEB, +0xA4,0x5D,0x7D,0x3D,0x07,0xF5,0xC0,0x69,0x2D,0x3E,0x61,0xA3,0x14,0xDD,0x85,0x18, +0xDD,0x58,0xAE,0x9B,0x7A,0x7D,0xF5,0x4F,0x3A,0xB8,0x4C,0x57,0x75,0xB4,0xBD,0xF5, +0x4C,0x69,0xEA,0x69,0xEA,0x6A,0x33,0x2D,0xC3,0x53,0x35,0x53,0x35,0x98,0xDE,0xB3, +0x13,0x59,0x6B,0xE6,0x59,0xFC,0x68,0xC5,0x5E,0xA4,0xBA,0x8A,0x9A,0x6E,0x96,0x9A, +0xA5,0xCA,0x7C,0xE4,0xB4,0xE4,0xB6,0x02,0x5D,0xB8,0x65,0xA8,0xE5,0xA8,0xEE,0x1C, +0x3D,0xC2,0x8E,0xDF,0xC2,0xDB,0xDF,0xC6,0x8C,0x55,0xEA,0x4B,0xC0,0x4B,0x4D,0xED, +0x53,0x72,0xCE,0x53,0xEE,0xB2,0xB7,0x59,0x5B,0xB5,0xB9,0xB8,0x65,0x68,0xA5,0x68, +0xAD,0x9C,0x25,0xB2,0x8A,0xD7,0xC1,0x5A,0xDF,0xC6,0x8C,0x55,0xEA,0x4B,0xBB,0x4A, +0xDD,0x36,0x4B,0xA4,0xAB,0x94,0xF9,0x37,0x92,0x6F,0x25,0x2D,0x0D,0xC2,0xF2,0x79, +0xE4,0xF3,0xDC,0x13,0xD9,0xE7,0x7B,0xE3,0xB7,0xF1,0xA3,0x15,0x7A,0x92,0xE5,0x1E, +0x5A,0x64,0xAD,0x2F,0x1C,0xA7,0x83,0xFF,0xC9,0x1F,0xCE,0x1F,0xF3,0x87,0xFC,0xE1, +0xFF,0x38,0x7F,0xCE,0x1F,0xF3,0x87,0xFC,0xE1,0xFF,0x38,0x7F,0xCE,0x1F,0xF3,0x87, +0xFC,0xE1,0xFF,0x38,0x7F,0xCE,0x1F,0xF3,0x87,0xFF,0xC6,0xE1,0xFF,0xA9,0xBE,0xBE, +0x4E,0x9A,0x56,0x12,0xD5,0x16,0xFF,0x5F,0x6F,0xF1,0xFC,0x7E,0xD1,0x6D,0xB6,0xDB, +0x5F,0xD0,0xF9,0xD7,0xCB,0x52,0xDC,0xB7,0xFB,0x4B,0x7D,0xD4,0x8B,0xE5,0xFA,0xF2, +0xCB,0x7F,0x4D,0x6F,0xC6,0xC6,0xC6,0xC7,0xC7,0xC7,0xB7,0x43,0xD4,0x37,0x2D,0xF2, +0xDF,0x2D,0xF2,0xDF,0xD3,0x5B,0xE2,0xD5,0xA8,0xD8,0xD8,0xE8,0xF8,0xF9,0x0E,0xA9, +0xBC,0x74,0x7C,0x73,0x6C,0x62,0x53,0xF4,0xF6,0xFB,0x77,0x5E,0xAA,0xDF,0xF8,0xF8, +0xFD,0xEB,0xE5,0x58,0xF7,0xF3,0xB0,0x78,0x3F,0x83,0xF8,0x3F,0x83,0xFF,0xF6,0x8F, +0xFE,0x11,0xBE,0x63,0xF3,0x1F,0x9E,0x1F,0xE6,0xBF,0xE0,0xFF,0x5A,0x3F,0xD8,0xFA, +0x2F,0xC6,0x7C,0xA5,0xE2,0xFA,0xEF,0xF8,0x63,0xFC,0x67,0xFF,0x28,0xDF,0xD1,0x56, +0x3F,0x3C,0xF5,0xA2,0xAD,0x6E,0x48,0xD1,0xC8,0xF8,0x7F,0x36,0xFF,0xAC,0x1F,0xFE, +0x1D,0x21,0x75,0x2C,0x5C,0x97,0xDC,0x5B,0xE6,0xD3,0x62,0x10,0x84,0x23,0xA5,0xFC, +0xE0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x3A,0x5F,0xCE,0x7F,0xF3,0x1F,0x9D,0x2F, +0xE6,0x8F,0xE0,0xFE,0x74,0xBF,0x9C,0x5C,0x67,0x4B,0xF9,0xD2,0xFE,0x74,0xBF,0x9D, +0x2F,0xE7,0x4B,0xF9,0xD2,0xFE,0x21,0x08,0x5F,0x2F,0xC8,0x7E,0x17,0x83,0x48,0xBE, +0x86,0xF5,0xC7,0x9A,0x2F,0xE9,0xF9,0x9F,0xF8,0x5B,0xD7,0x7D,0xAF,0x9A,0x1F,0xCF, +0xE8,0x47,0x0A,0x87,0x13,0x55,0x18,0x9E,0x62,0xB5,0xE0,0x0F,0xC3,0xD8,0x16,0x39, +0xA4,0xE7,0xD3,0x58,0x56,0x3C,0x3F,0x6A,0xBD,0x4E,0xCE,0xFD,0xC7,0xAC,0x5C,0x5A, +0xDD,0x8E,0xF5,0x7F,0x13,0x46,0x4E,0xD2,0x47,0x75,0xA5,0xB5,0x8E,0xA2,0x87,0x8F, +0xDF,0x65,0xF4,0x12,0x23,0x1F,0xB7,0xB6,0x5B,0xAF,0xD5,0xE2,0x41,0x73,0x65,0x3B, +0x01,0xFE,0x16,0xEC,0x27,0xA7,0xCF,0xBE,0xFA,0x47,0xAC,0xC7,0xFD,0xD3,0x78,0x77, +0xBB,0x9B,0xE9,0xB7,0xE7,0x0F,0x0B,0xCE,0x67,0xB8,0xE3,0xEB,0x67,0xD3,0x7E,0xAB, +0xF7,0x59,0xB8,0xB5,0x6B,0xD8,0x74,0xF8,0xD8,0xCE,0xAF,0xF3,0x97,0xBA,0xBD,0x89, +0x4F,0xF1,0x2D,0xF0,0x7F,0xF9,0x23,0xF9,0xC3,0xFE,0x70,0xFF,0x9C,0x3F,0xE7,0x0F, +0xF9,0xC3,0xFE,0x70,0xFF,0x9C,0x3F,0xE7,0x0F,0xF9,0xC3,0xFE,0x7B,0x6D,0x9C,0x3F, +0xE7,0x0F,0xF8,0x8E,0x1F,0xFF,0x1B,0x87,0xFD,0xD4,0x8B,0xE4,0xFF,0x76,0x0B,0x09, +0x6A,0x8B,0x7F,0xAE,0xB7,0xD8,0x7D,0x47,0xC7,0xC7,0xB7,0x43,0xD4,0x37,0x2D,0xFD, +0x35,0xBF,0x7D,0x10,0xBC,0x65,0x31,0x94,0x9D,0xD7,0xF9,0x3B,0x9E,0x56,0x7A,0xD5, +0xCA,0x6D,0xDE,0xD7,0x03,0xFF,0xEF,0x59,0xB7,0xE5,0xF0,0x5E,0x4B,0x96,0xBA,0x74, +0xDC,0x06,0xC5,0xAC,0x6F,0x35,0x35,0x4F,0x95,0xCA,0xE5,0x56,0x1F,0x0D,0xBC,0xE7, +0x2A,0xF9,0x0D,0xFA,0xC6,0xEE,0xA6,0x19,0xFB,0x1C,0xE4,0xB4,0x85,0x29,0xF0,0x98, +0xAC,0x39,0xAD,0x96,0xE3,0x64,0xBE,0xDF,0x66,0x66,0x6F,0xBB,0xF1,0x07,0xC6,0x82, +0x9E,0xA6,0x9E,0xA6,0xA3,0x33,0x51,0x53,0x4D,0xD2,0xD3,0x3F,0x8D,0x58,0xA4,0xB6, +0xD8,0xB7,0x4F,0x56,0xF2,0xD4,0x72,0xD4,0x77,0x0E,0x1E,0xE1,0x47,0x6F,0xE1,0x6D, +0xF4,0x65,0xBF,0xDB,0xDB,0xF5,0x33,0x55,0x33,0x59,0x8D,0xEB,0x31,0x35,0x96,0xBE, +0x65,0x9F,0xC7,0x0A,0xDF,0x59,0x69,0x1B,0x6F,0x55,0x8D,0x1C,0xC5,0x1C,0xC6,0x1F, +0x6E,0xC3,0xCC,0x61,0xAE,0x58,0x67,0xF1,0xB7,0x43,0x59,0x72,0xB4,0x52,0xB4,0x56, +0xCE,0x12,0xD9,0x45,0x6B,0xE0,0xAD,0x6F,0xE3,0x56,0x29,0x2D,0x58,0xD1,0x5C,0xA8, +0xAE,0x58,0x59,0x8C,0x2D,0xCB,0x09,0xF8,0x38,0x47,0xF1,0xB7,0x43,0x59,0x74,0x14, +0x94,0x14,0x94,0x3C,0xDD,0x0D,0x24,0xFE,0x32,0x7D,0xFC,0x6A,0xC5,0x25,0xAB,0x1A, +0x49,0x9A,0x49,0x9C,0x75,0xEB,0x1D,0x33,0x8D,0xBB,0xE3,0x5F,0xC6,0xDD,0x0D,0x65, +0x83,0xF8,0x3F,0x83,0xFC,0x5C,0xDF,0x14,0x4F,0xB1,0x37,0xCC,0x7E,0x63,0xFF,0x7F, +0x8F,0xCD,0x1F,0xCD,0x7F,0xC1,0xFD,0xFF,0xAC,0xEB,0x4A,0xA7,0x9D,0x7C,0x9F,0xF1, +0xCC,0x27,0xAD,0x1A,0xB7,0x5F,0x5C,0xDF,0x75,0x4F,0x54,0xB4,0xFC,0x96,0x4B,0x68, +0xB6,0xDB,0x6D,0xAD,0xD3,0xDF,0xB7,0xD0,0xFB,0x16,0xAD,0x6F,0x45,0x6F,0xE8,0x68, +0x7C,0xEF,0x3B,0xD5,0xDB,0xEF,0xDB,0xC5,0xA7,0xE8,0x71,0xFF,0x0D,0xC3,0x75,0x74, +0xF7,0xED,0xDC,0xC7,0xEB,0xED,0xE6,0xB5,0xBE,0xCC,0x4F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xFF,0xF8,0x1F,0xCE,0x8F,0xFD,0x5A,0xA9,0x62,0xCB,0x74,0xB9,0x6A,0x9C, +0xC6,0x67,0x31,0xD7,0x48,0xE8,0xFF,0x2E,0x9B,0x23,0xCE,0x63,0x28,0xD8,0xB0,0xDC, +0x2E,0x1A,0x8F,0x0F,0xC3,0xE1,0xF4,0xB2,0x38,0xB6,0x2E,0x2B,0x88,0xE2,0xB8,0xBE, +0x33,0xD4,0xF1,0x9F,0x0A,0x46,0xB7,0x1F,0xCD,0x31,0x5F,0xAF,0x97,0xE9,0xAD,0xE7, +0x7A,0xDE,0x7A,0xE9,0x13,0x93,0xDC,0x0F,0xA7,0xE1,0xB0,0xF1,0x70,0x7C,0x5C,0xDF, +0x16,0x47,0x89,0x8F,0xE8,0xDA,0x47,0x4B,0xF9,0xD2,0xFE,0x5B,0xE7,0x03,0xF9,0xC3, +0xFE,0x0F,0xE0,0xFE,0x74,0xBF,0x9C,0xFF,0xE6,0x3F,0x3A,0x5F,0xCD,0x1F,0xC1,0xFC, +0xE9,0x7F,0x38,0xDF,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xCE,0x8F,0xF3, +0xA5,0xFC,0xE9,0x7F,0x3A,0x5F,0xF5,0x7D,0x2F,0xEA,0xA9,0xD8,0xA9,0xA9,0x69,0xA9, +0xEA,0x32,0x75,0x15,0xD2,0x27,0x18,0xA6,0xEF,0xE9,0x49,0x96,0x62,0xB7,0xED,0x56, +0xF9,0x6B,0x84,0xBD,0xC2,0xBA,0x45,0x53,0x17,0xB8,0xE9,0xD2,0x9F,0x89,0x62,0xC4, +0x71,0x38,0x8C,0x4F,0x1B,0xC7,0x71,0xBF,0x06,0x42,0xDB,0x34,0x0C,0x53,0xF8,0x39, +0xFA,0x0A,0x1E,0x0E,0x87,0xE0,0xC8,0x5B,0x66,0xF2,0xC5,0x78,0xDC,0x2F,0x17,0x9D, +0xCF,0xD0,0x6E,0x7A,0x89,0x0E,0x00,0xF0,0x87,0xFE,0x7F,0x98,0xC5,0x62,0x38,0x6A, +0x0F,0x4B,0x35,0x7A,0xBB,0x6D,0xBB,0x66,0xCD,0xB1,0xF9,0x0F,0x1D,0x1D,0xED,0xA1, +0xFD,0xFB,0xCE,0xB1,0x66,0xF3,0x49,0x49,0x86,0x57,0xC5,0x91,0x60,0x3F,0xB8,0x09, +0xAD,0xA7,0x14,0x7F,0x93,0x62,0xB4,0xF8,0xFB,0x4C,0x9C,0xA6,0xBD,0x29,0xA5,0x91, +0x62,0x3F,0xE4,0x18,0xB1,0xFC,0xFE,0x3F,0x21,0x91,0xE8,0x32,0x3F,0x06,0x42,0x02, +0x68,0x6C,0xCA,0xB1,0x5A,0xF6,0x4B,0x5C,0xAD,0xB2,0xDD,0x6C,0xED,0xA4,0x39,0xF0, +0x6D,0x6D,0x37,0x8C,0x4E,0xE4,0x9D,0xBC,0x7B,0x68,0x7B,0xA5,0x91,0x14,0xAF,0x6C, +0x4F,0x6E,0xF1,0x73,0x13,0xDC,0xD8,0xA6,0x3C,0xD4,0xC5,0xCF,0x6E,0xDB,0xF6,0xEB, +0x9A,0xDE,0xEB,0xF0,0xFD,0xBF,0x8C,0x6D,0xD9,0xA8,0x57,0xE6,0xF3,0xB5,0x71,0x95, +0x70,0x64,0x2D,0x25,0x68,0x6A,0x69,0xD2,0x31,0x63,0x71,0x98,0xDA,0x4C,0x77,0x37, +0x8E,0x7F,0x21,0xB2,0x45,0xBA,0x1A,0x48,0x5A,0x4A,0xD0,0xE2,0x8F,0xEE,0x7C,0x63, +0xC5,0x31,0x72,0x1E,0xAB,0x90,0xC5,0x72,0x58,0xBE,0x4B,0x15,0x3C,0xC5,0x3B,0xBE, +0x4E,0xCF,0x60,0x70,0x58,0x18,0x32,0x10,0x7F,0x4B,0x95,0x33,0x7A,0x0A,0xA8,0x27, +0xA0,0x92,0x9F,0x48,0xF9,0x56,0x2F,0x57,0x8B,0x5D,0x82,0xD7,0x5E,0x75,0xD1,0xB5, +0x2B,0x69,0x63,0xA3,0x14,0xAA,0xA1,0x16,0x8C,0x75,0xE6,0x29,0x49,0x34,0xBD,0xD0, +0x5B,0x5B,0xF5,0x6A,0xAD,0xB7,0x40,0x7D,0x2C,0x14,0x96,0x96,0x3A,0x60,0x34,0x12, +0x53,0x77,0x34,0xDD,0x26,0x89,0x8B,0x09,0xC1,0x23,0xD4,0xA7,0xAD,0x8E,0xBA,0xF3, +0xAB,0x74,0xB4,0xD0,0x5B,0x50,0x95,0x6F,0x75,0xCD,0xE8,0xF5,0x07,0x3E,0x59,0x8B, +0xD6,0x72,0x89,0x82,0x52,0xC1,0x46,0xED,0xEF,0xB3,0x0F,0xC1,0x2F,0x7F,0xF4,0xFC, +0x47,0x23,0xCB,0xF3,0x9E,0xD3,0x2F,0x19,0xE3,0xB6,0x0F,0x2B,0x13,0xC7,0xED,0x24, +0x60,0x18,0xA7,0x26,0xE7,0x30,0x1B,0xDE,0xFB,0xBD,0xD7,0x48,0xC1,0x70,0x34,0x3C, +0x25,0x1F,0x11,0xC7,0x62,0xFD,0x75,0x27,0x39,0x8F,0x73,0xE8,0x5B,0x92,0x10,0x5B, +0xC2,0x51,0x61,0x78,0x4C,0x2D,0x74,0x8C,0x4E,0x2F,0xD7,0xE3,0xEA,0x32,0xD9,0xEB, +0x3D,0xAA,0xDD,0xB6,0x79,0x98,0xBA,0x57,0xAF,0xCC,0x37,0x24,0x7B,0x0C,0x7D,0x45, +0x4E,0x72,0xC9,0x29,0x6B,0xDA,0xF6,0xDB,0xAE,0xE5,0xA8,0xD1,0xFE,0x06,0xB6,0x2B, +0xF6,0x3D,0xC6,0xE9,0x40,0x53,0x4F,0x06,0xC5,0xC0,0x60,0x90,0x73,0x49,0x6A,0xF5, +0x1B,0xA3,0x15,0xFB,0x66,0x8C,0x55,0xEA,0xFC,0x21,0x6F,0xC8,0xF5,0x68,0x6A,0x3F, +0xCC,0xB1,0x6E,0x37,0x74,0x62,0xBF,0x3E,0x52,0x5A,0x63,0x94,0x96,0xE7,0xCC,0xF6, +0xC8,0x5D,0x8B,0x60,0x93,0xD7,0x64,0xAA,0xD7,0x48,0x58,0x4C,0x5B,0x2B,0xE1,0x6E, +0x03,0x0F,0xC9,0xFF,0x99,0x62,0xE5,0xFD,0x6F,0x2F,0xCC,0xE3,0x31,0xB8,0xCE,0x66, +0x6D,0x8A,0xFF,0xE8,0xD0,0xE5,0x59,0x70,0xFC,0x39,0xD7,0x31,0xAF,0xDE,0x96,0xE5, +0xC2,0xB1,0xD7,0xE9,0x1C,0x3F,0x99,0xEB,0x86,0xD6,0x9E,0xB6,0x3A,0xFC,0x87,0x5A, +0x1E,0x9C,0x7F,0x5D,0x57,0x50,0x85,0x6F,0xEE,0xEB,0x9A,0x27,0xB8,0x5A,0xB9,0xB6, +0x5B,0x9F,0x69,0xDC,0xF4,0xCB,0x4F,0xA3,0xBC,0x03,0x37,0xA5,0x9F,0x83,0x21,0xCD, +0x2B,0xDC,0xB1,0xDC,0xD1,0xFD,0xCC,0x4F,0x93,0x62,0xA8,0x67,0xC5,0xBE,0x8B,0xA3, +0xE8,0xB2,0x6B,0x9E,0xD5,0xBA,0xC8,0x73,0x77,0xFA,0xF0,0xDD,0xB7,0xAB,0xB5,0x9A, +0xE8,0xC2,0x8D,0xDC,0xFB,0x73,0x12,0x9E,0x9F,0x1E,0xD4,0xFD,0x49,0x68,0xDD,0x74, +0x8B,0xAF,0xA7,0xA0,0xFE,0xB8,0x0D,0x25,0xA7,0xCC,0x34,0x62,0x9B,0xB0,0xA3,0x1B, +0xAB,0x15,0xD3,0x6F,0x4F,0xBE,0xA9,0xE7,0x57,0x09,0x8A,0xEE,0xB6,0x97,0xBE,0xA5, +0x8A,0x99,0xAB,0xD8,0x92,0xB0,0xB7,0xD8,0xE6,0x8C,0x55,0xEC,0x2E,0xCA,0x34,0x63, +0x39,0x2D,0x39,0x2D,0x80,0x97,0x6E,0x17,0x3B,0x28,0xD5,0xEA,0x4B,0xC0,0x4B,0x4D, +0xED,0x53,0x72,0xCE,0x53,0xEE,0xB2,0xB7,0x59,0x5B,0xB5,0xB9,0xB8,0x5C,0xEC,0xA3, +0x57,0xA9,0x2E,0xED,0x2B,0x74,0xD9,0x2E,0x92,0xAE,0x53,0xE4,0xDE,0x49,0xBC,0x94, +0xB4,0x37,0x0B,0xC9,0xE7,0x93,0xCF,0x70,0x4F,0x67,0x9D,0xEF,0x8E,0xDF,0xC6,0x8C, +0x55,0xEA,0x4B,0x94,0x79,0x69,0x92,0xB4,0xBC,0x46,0x38,0x1A,0xCF,0x27,0xAC,0xFC, +0x60,0xFF,0xDE,0x0F,0xE0,0xE7,0xF1,0x47,0x36,0xE9,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F, +0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFF,0xAB,0x1F, +0xE6,0x32,0x93,0xBA,0xFF,0x27,0x73,0x9A,0x9A,0xA7,0xCA,0xE5,0x72,0xAB,0x08,0xDF, +0xBC,0x6F,0x38,0xFB,0xB1,0x5B,0x95,0x1B,0xF5,0x8D,0xDD,0x4C,0x33,0xF6,0x39,0xC9, +0x69,0x0A,0x53,0xE1,0x31,0x58,0x64,0x44,0x2F,0x19,0x46,0xC6,0xC7,0x47,0xC7,0xC8, +0x48,0x6B,0x92,0x32,0x32,0x52,0x56,0x47,0x6E,0xEC,0xB6,0x57,0x96,0x6B,0x33,0xD7, +0xB6,0x7B,0x46,0xB1,0xBB,0xA7,0x51,0x92,0x12,0x10,0x61,0xF0,0xDB,0xC6,0xC7,0x3E, +0x43,0x7F,0x72,0xDD,0x8E,0x23,0xE3,0x9C,0x97,0x59,0x0B,0x29,0xFD,0x83,0x1A,0xC8, +0x58,0xE8,0xD0,0x0B,0xE4,0x28,0xC7,0x47,0xED,0x67,0xE6,0xD1,0x6F,0x96,0xF9,0x6F, +0x96,0xFF,0xBE,0xB7,0xEC,0x70,0x79,0x8F,0xCC,0x7E,0x6E,0x3E,0x5B,0xE5,0xBF,0xF4, +0x6D,0xFC,0xFF,0xAE,0xFB,0x49,0xAF,0x41,0x14,0x95,0x9F,0xF5,0xDF,0xAD,0x6E,0xBE, +0xB9,0xBD,0x75,0x3E,0x02,0x5A,0x7C,0x6C,0x6C,0x6C,0x7C,0x7C,0x7B,0x74,0xF4,0x6F, +0xD5,0x7B,0x16,0xC0,0xAD,0xE8,0x2D,0xFD,0x1D,0x0F,0xDE,0xDB,0xF0,0xE9,0xF6,0x18, +0xFD,0x7D,0xBB,0x7A,0x9C,0x73,0xEF,0x44,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F, +0xFF,0x71,0xFC,0xE4,0x7F,0xD5,0xA7,0x42,0x17,0x8C,0x8E,0x97,0xF3,0xA5,0xFC,0xFC, +0x70,0x0F,0x96,0xF9,0x6F,0x96,0xF9,0xD2,0xFE,0x63,0xF3,0x1F,0x9B,0x8F,0x96,0xF9, +0x6F,0x9D,0x2F,0xE7,0x1B,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF9,0xC8, +0xFE,0x74,0xBF,0x88,0x5F,0x35,0x46,0x76,0x2A,0x35,0xA5,0x18,0x2F,0x96,0xBE,0x11, +0xBF,0xF5,0xD4,0x6F,0x6A,0xAC,0x47,0xFE,0xF7,0xED,0x9F,0x89,0xF3,0x43,0xF9,0x70, +0x1C,0x67,0x51,0x22,0x15,0x0E,0x21,0x3B,0x0E,0x93,0xA7,0x00,0x7E,0x1F,0xC5,0x18, +0xE6,0x93,0x9F,0x4D,0x61,0x58,0xF0,0xBE,0xB5,0xB9,0x5B,0x8B,0xF6,0x87,0xB8,0xFA, +0x77,0x16,0xB7,0x63,0xF7,0xDF,0xE2,0x68,0xC9,0xDA,0x48,0xEE,0xB4,0xB6,0xB1,0xD4, +0x50,0xF1,0xFB,0xEC,0xBE,0x82,0x44,0x63,0xF6,0xF6,0xCB,0x5F,0xA4,0x7A,0xAD,0x9D, +0xF4,0x84,0xBF,0xE9,0x0F,0xFE,0xE4,0x91,0x8C,0x3D,0x3D,0xFD,0xFF,0xD2,0x3D,0x66, +0x3F,0xEE,0x9B,0xC3,0xBD,0xDC,0xDF,0x4D,0xBF,0x38,0x78,0x5E,0x73,0x2E,0x78,0x9A, +0xC5,0x63,0xD4,0xFD,0x37,0xF7,0x9D,0x6A,0x6B,0xD6,0xB2,0xDF,0x5B,0x2B,0x8A,0x36, +0x33,0xAB,0xFD,0x5D,0xD7,0x37,0x01,0xEC,0x4A,0x7F,0xD3,0xB7,0xE2,0x76,0x54,0x83, +0xFF,0xEE,0x0F,0xE0,0xE7,0xAB,0xB7,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFF,0xE4,0xDB,0xF1,0xB1,0xD1, +0xF1,0xF2,0x0C,0xD1,0x5E,0x42,0x42,0x0C,0x23,0x7E,0xF1,0xBC,0x6B,0x5D,0x8A,0xA3, +0x7F,0x72,0xDD,0x8E,0x23,0xE3,0x9C,0x97,0x59,0x0B,0x29,0xFD,0x83,0x1A,0xC8,0x4E, +0x7D,0x3F,0x9A,0xA4,0x64,0x64,0x63,0xFB,0x44,0x53,0xFE,0x05,0x3F,0x5D,0xB4,0x59, +0xDE,0xD9,0x9E,0x59,0x5D,0xD9,0x24,0xA4,0x75,0xC9,0x06,0x7D,0x14,0xCF,0xEE,0xB7, +0xAC,0x6E,0x99,0xA5,0x61,0xF0,0xDB,0xBA,0x6B,0xA7,0xAC,0x6F,0xD6,0x37,0xB4,0x59, +0xFA,0xD9,0x69,0x0A,0x53,0xE1,0x31,0x6D,0xE8,0x33,0xEA,0xC7,0xF6,0xD2,0x3D,0x6D, +0x8C,0x4A,0x7A,0x2A,0xFB,0x7D,0xBB,0xAF,0x55,0x6F,0xF7,0xF8,0xFC,0x1F,0xC1,0xFC, +0x1F,0xC1,0xFF,0xFE,0xC7,0xFF,0x08,0xDF,0x31,0xF9,0x8F,0xFF,0xC3,0xED,0xF9,0xA3, +0xF8,0x3F,0x83,0xFF,0xD2,0xD0,0x7D,0xCF,0x57,0x90,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF7,0x07,0xF3,0x93,0x9C,0xE6,0x7F,0x07,0xF0,0x67,0x07,0xF0,0x7F,0x3D, +0xBF,0xCF,0x6F,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF3,0x9C,0xFC,0xC7,0xE6,0x3F,0x34, +0x7F,0x35,0xFF,0x07,0xF3,0x8D,0xFC,0xE4,0xFF,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF3,0xA5,0xFC,0xE4,0xFF,0x06,0x70,0x7F,0x07,0xF3,0x5F,0xF3,0x77,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x91,0x91,0x91,0x8F, +0x8F,0x8F,0x58,0x46,0xFD,0xE3,0x77,0x51,0xAF,0x90,0xDF,0xAC,0x6E,0x9F,0x2C,0x5C, +0x96,0xE7,0xCF,0x36,0xD8,0xAC,0x35,0x5E,0xE1,0xF2,0xAA,0x45,0x61,0x2D,0x51,0x6F, +0xF5,0xD6,0xFF,0x49,0xD2,0x56,0xCB,0xE9,0xB2,0xF9,0x7C,0xD6,0x6B,0x34,0xDB,0x75, +0xAD,0xE9,0x69,0xE5,0xBF,0xA6,0xB7,0xF9,0xAD,0x25,0x3F,0x9A,0xD2,0x5B,0xFA,0x5A, +0x7F,0xF2,0x5B,0xF4,0xB4,0xB4,0xB9,0xEC,0xF6,0x7B,0xD9,0xF3,0xDC,0xF6,0x77,0x3B, +0x9D,0x49,0x6A,0xDE,0x97,0x25,0x92,0xCE,0x67,0x33,0x8D,0xB7,0xAE,0xA7,0xC0,0x87, +0xF8,0xED,0xFE,0x87,0xA1,0xE8,0x7A,0xAB,0x7E,0x9A,0x9A,0x9B,0x4D,0x4F,0xA5,0xA5, +0xA7,0xA7,0xA7,0xFB,0x16,0xFB,0x3E,0x07,0xAD,0x3F,0x3F,0x43,0xA5,0x67,0xC9,0xD6, +0x5B,0xF5,0x4F,0x98,0xBF,0xA7,0xB5,0x2D,0xFD,0x3E,0xB3,0xE1,0x3B,0x29,0xF5,0x5A, +0x08,0x7A,0x64,0xF8,0xD3,0xD3,0x74,0xD9,0xBC,0xDE,0x6D,0x90,0xE6,0x73,0x39,0x97, +0xF2,0xC6,0xFA,0x36,0xEC,0x92,0xAD,0xFA,0x99,0x75,0x90,0xB2,0x9F,0xD8,0x31,0xCF, +0xC3,0xF9,0xAE,0x6C,0x2E,0xC6,0xF9,0x4C,0xA3,0x6C,0x62,0x53,0xD1,0x57,0xDB,0xE9, +0x2F,0xA4,0x5D,0x55,0xFF,0x5A,0xDF,0xF8,0xF8,0xFF,0xA9,0x7B,0xD4,0x50,0xE1,0xDB, +0xFD,0x27,0x6B,0x8F,0xEB,0xED,0xF8,0x83,0xFF,0xF6,0x63,0xF0,0x7F,0x07,0xF0,0x7F, +0xFE,0x21,0xFF,0xC2,0x37,0xCC,0x7E,0x63,0xFF,0xEE,0xFB,0x7E,0x68,0xFE,0x0F,0xFF, +0xB0,0x3F,0xE4,0x9A,0xCC,0x79,0xC4,0x50,0x25,0xE4,0x9A,0xF5,0xD3,0x56,0xE8,0xC7, +0x4B,0x4F,0x80,0x96,0x9E,0xD7,0xBD,0x36,0x71,0xBA,0x7A,0x37,0x5B,0x7D,0xBB,0xAD, +0xBB,0x7F,0x45,0x43,0xEC,0xED,0xF8,0x74,0xFB,0x0C,0x7F,0x5B,0x2E,0xB2,0xDF,0x80, +0xC4,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0xE4,0xE7,0xD5,0xF2,0x7F,0x83, +0x38,0x3F,0x83,0xF8,0x33,0x9D,0x2F,0xE7,0x4B,0xF9,0xC0,0xFE,0x70,0xFF,0x83,0xF8, +0x3F,0x9D,0x2F,0xE7,0x3F,0xF9,0x8F,0xCE,0x97,0xF3,0x47,0xF0,0x7F,0x3A,0x5F,0xCE, +0x37,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF3,0x93,0x9C,0xE6,0x7F,0x07, +0xF0,0x67,0xD5,0x8F,0xF9,0x76,0xB5,0xCF,0xCB,0xE5,0xF3,0x4C,0x50,0x61,0x63,0x5C, +0xC6,0x63,0x35,0x9A,0xD0,0x31,0x85,0x4F,0xEA,0xDB,0xFB,0xCA,0x7A,0xDB,0xED,0xDD, +0x70,0xA9,0xF1,0x6D,0xFE,0xEF,0x1F,0xD6,0x4B,0xAC,0xA7,0xAB,0x10,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0xF0,0x07,0xFA,0x56,0xA8, +0x74,0xB4,0xB4,0xB9,0xEC,0xF6,0x7A,0x97,0x25,0x92,0xCE,0x67,0x33,0x8F,0xE5,0xE9, +0xDB,0xAC,0x25,0xBF,0xD7,0x5B,0xFC,0xD7,0x49,0x54,0xC4,0x92,0xFD,0x9F,0x3D,0xCF, +0x74,0x3D,0x0F,0x42,0xDB,0x76,0x58,0xF4,0xD4,0xD4,0xDA,0x6A,0x7D,0x2D,0x2D,0x3D, +0x3D,0x3F,0xD8,0xB7,0xD9,0xF2,0xF9,0x69,0xF9,0xFA,0x1B,0xE1,0x6D,0x96,0xFD,0x53, +0xE6,0x2F,0xE9,0xED,0x4B,0x7F,0x4F,0x7C,0xC2,0xA9,0xFD,0x3E,0xAB,0x41,0x0B,0xAF, +0xAC,0xAC,0xEF,0x6C,0xCF,0x2C,0xB6,0x57,0x6E,0xEC,0x8C,0x4F,0x5F,0xC9,0x92,0x62, +0xB3,0x3F,0x93,0x22,0xC4,0xF2,0xB2,0x4C,0x8C,0x8F,0xCE,0xA7,0xA4,0x2F,0x1E,0x59, +0x6B,0x32,0x8C,0x38,0x5B,0xA7,0xA5,0xEF,0x12,0x9E,0x5B,0xE5,0xBE,0x5B,0xE5,0xBE, +0xC8,0x5A,0x89,0x29,0x2C,0x92,0xED,0xDB,0xB7,0xF5,0x51,0xBE,0x89,0xBD,0x9D,0xEF, +0x5B,0x2D,0xFC,0x36,0x78,0x12,0xDC,0x63,0x02,0x1B,0x43,0x4A,0xCC,0xF7,0xDE,0xA2, +0x9F,0xDB,0xD3,0xE2,0x52,0x6B,0xD1,0x6F,0xF6,0x16,0xF8,0x84,0x21,0x6A,0xD3,0x34, +0x81,0x78,0xF0,0x84,0x87,0xFE,0xA1,0x67,0xFE,0x7D,0x39,0x2E,0x1A,0x72,0x9E,0x5B, +0xFD,0xA5,0x3D,0x68,0x71,0x3D,0x7F,0x5B,0x85,0xBA,0x7C,0x2B,0x04,0xB7,0xCB,0x7C, +0xB7,0xCB,0x7C,0xB7,0xCB,0x7C,0xB7,0xCE,0x4F,0xFF,0xEA,0xE4,0xFF,0x06,0x70,0x7F, +0x07,0xF0,0x67,0x3A,0x5F,0xCA,0x79,0xD2,0x3E,0x74,0xBF,0x88,0x42,0x11,0xCF,0x32, +0x42,0x74,0xBF,0x9D,0x23,0xE7,0x4B,0xF9,0x6F,0x96,0xF9,0x6F,0x96,0xF9,0x6F,0x96, +0xF9,0x6F,0x9C,0x9C,0xE7,0x33,0xF8,0x3F,0x83,0x3F,0x82,0x3F,0xBD,0xB3,0x3E,0xE6, +0xB5,0x58,0x57,0xA0,0x75,0x58,0xC2,0xA7,0xE8,0x9B,0xF6,0x74,0xFD,0x16,0x2D,0x81, +0x5B,0x85,0x4F,0x8B,0x6F,0xF7,0x78,0xFD,0x46,0xD8,0x34,0x90,0x7F,0x07,0xF0,0x7F, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0xF9,0x83,0xFD,0x99,0xE8,0xBB, +0xF4,0xD1,0x45,0x65,0x48,0x5E,0x3C,0xB2,0xBA,0x74,0xE9,0x58,0xC2,0x85,0xBA,0x7B, +0xB7,0x76,0x46,0x28,0x94,0xF2,0xDF,0xB2,0xBF,0xD1,0x84,0x5D,0xF2,0x4D,0x3C,0x46, +0xE3,0x71,0xB8,0xDF,0xBE,0x6E,0xD2,0x8C,0x21,0xEF,0xA1,0x4F,0x2A,0x3D,0x13,0x77, +0xBA,0x06,0xEB,0xE5,0xA7,0x0E,0x9F,0xA7,0xB7,0xDB,0xBA,0xF5,0x56,0xFF,0xC8,0xC7, +0xFA,0x2F,0x57,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xFF,0xF5,0x1F,0xFC,0x23,0x7C,0xC7, +0xE6,0x3F,0x3C,0x3F,0xCD,0x7F,0xC1,0xFE,0x07,0x33,0xFD,0x99,0xE7,0x54,0x95,0xBB, +0x94,0x37,0x14,0x5A,0xDC,0x5B,0x7E,0x2D,0x6F,0xC3,0xB7,0xF5,0xA3,0xFF,0x77,0x8F, +0xEC,0x31,0x3D,0x80,0x3E,0x97,0x5A,0xC3,0x61,0xF1,0xA6,0x18,0x56,0xDD,0xEF,0x14, +0xA3,0xFF,0x21,0xFE,0x28,0xAB,0x16,0x93,0x10,0xDF,0xB1,0xF8,0x7F,0xA8,0xFB,0x7E, +0xF5,0xF5,0xC2,0x43,0xDF,0x42,0x72,0x40,0x90,0x90,0x90,0x90,0x90,0x9E,0xDF,0xE7, +0x03,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF9,0xCE,0x7E,0x63,0xF3,0x1F,0x9A,0x3F,0x9A, +0xFF,0x83,0xF9,0xD2,0xFE,0x74,0xBF,0x9D,0x2F,0xE7,0x4B,0xF9,0xD2,0xFE,0x74,0xBF, +0x9D,0x20,0x27,0x4B,0xF9,0x09,0x09,0x09,0x0C,0x4D,0x97,0xE2,0xED,0x1F,0x17,0xC3, +0xFE,0xC7,0xC5,0x7F,0xBF,0xB7,0xF4,0xFE,0x1F,0xF5,0xFE,0x25,0xFF,0x48,0x1F,0xB1, +0xF4,0x3B,0xEF,0x69,0xE0,0xFF,0xEF,0xA9,0xF0,0xD8,0xE9,0xFD,0x2F,0xF5,0xB6,0xFE, +0xA8,0xC7,0x6F,0x4E,0xB2,0x1E,0xF2,0x1D,0x66,0x9B,0xFF,0x66,0x9F,0x0B,0x84,0xFD, +0xC2,0xBE,0x15,0x27,0x55,0x6F,0xC3,0xD0,0xAF,0x55,0xF2,0x1E,0x16,0x2D,0xD5,0x63, +0xFA,0xF2,0x8E,0xBF,0x84,0x9F,0x55,0x63,0xD7,0xD3,0xE2,0x4B,0xAF,0x1F,0xF5,0x27, +0xBF,0xDA,0x6F,0x17,0x94,0x8F,0x52,0xDC,0x87,0xFA,0x61,0x6B,0xAC,0x8A,0xCA,0xE4, +0x2E,0xDD,0xD9,0x18,0x9E,0xB5,0x26,0x15,0x0E,0x25,0x3C,0xB7,0xCB,0x7F,0xFA,0x2D, +0xF3,0x87,0xFC,0xE1,0xFF,0x38,0x1F,0xC1,0xFC,0xE1,0xFF,0x38,0x7F,0xCF,0x20,0x13, +0x87,0xFC,0xA7,0x9C,0x3F,0xE7,0x0F,0xF9,0xC3,0xFE,0x70,0xFF,0x9C,0x3F,0xE4,0x36, +0x81,0x78,0x09,0xED,0x98,0x6F,0xDF,0xB7,0x74,0x21,0x78,0xCA,0xCE,0xD7,0x28,0x33, +0xBB,0x24,0x94,0x94,0x8E,0xB9,0x21,0x1F,0x1D,0x1B,0x19,0xF5,0x1B,0xBC,0x79,0x65, +0x64,0xB5,0x87,0xC3,0x6E,0xC9,0x2E,0xDD,0xBB,0x1B,0xF5,0x8D,0xEC,0xEF,0x7A,0xD9, +0x6F,0xE1,0xB3,0xC0,0x96,0xE3,0x18,0x10,0xD9,0x9E,0x8B,0xBF,0x4E,0x74,0xCB,0xAF, +0x4D,0xAC,0x4E,0xA2,0x76,0xE8,0x65,0xBE,0x5B,0xE5,0xBE,0x5B,0xE5,0xBF,0xF5,0x6D, +0xFB,0x1C,0x1E,0x63,0xF3,0x1F,0xFD,0x1C,0x7E,0x5B,0xE5,0xBF,0xFF,0x96,0xFB,0x43, +0x13,0x7C,0x72,0xE9,0xEB,0x3A,0xDB,0x18,0x94,0xF7,0xED,0xE0,0x53,0xD7,0x90,0x0D, +0x69,0xE8,0xDF,0x45,0xEC,0x5B,0x02,0xB7,0x0F,0x07,0xC4,0xB7,0xE1,0xD3,0xEC,0x31, +0xFA,0xFB,0x76,0xC1,0xC7,0x3D,0xA8,0x9E,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xFF, +0xEC,0x3F,0x9D,0x1F,0xFA,0xB4,0x9D,0xF0,0xB1,0x15,0x8D,0x3E,0x2A,0x31,0xF9,0x8F, +0xFA,0xD4,0xEE,0x02,0xB2,0x40,0x52,0x4D,0x27,0xFF,0x3F,0xCE,0x90,0x03,0xA5,0xFC, +0xB7,0xCB,0x7C,0xB7,0xCB,0x7C,0xB7,0xCE,0x97,0xF3,0x1F,0x98,0xFC,0xE9,0x7F,0x2D, +0xF2,0xDF,0x3A,0x5F,0xCE,0x4F,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x3A,0x5F, +0xC4,0x74,0xBF,0x9D,0x17,0xE6,0x3F,0xF0,0x3A,0x5F,0xD5,0x3C,0x67,0xA2,0x5F,0x5E, +0x92,0x86,0xB0,0xEA,0xA9,0xF1,0x57,0x87,0x6F,0xB9,0x63,0xC5,0xB7,0xFE,0xB8,0xFF, +0x0C,0x13,0xEE,0x01,0xF0,0x7F,0xFA,0x03,0xFC,0x36,0x30,0xB1,0x3C,0x2C,0x7F,0xAA, +0xB7,0xDB,0xD6,0xAE,0x1B,0x16,0xDB,0xC3,0x97,0x17,0x62,0xFE,0xCA,0xC7,0xEA,0xFE, +0xE8,0xFD,0x38,0x53,0x3D,0xEB,0x21,0x6C,0x7F,0xD6,0x69,0xBF,0xF6,0x69,0xEE,0x6D, +0xAF,0x0B,0x6E,0xF8,0x54,0x9D,0x55,0xBF,0x0F,0x49,0x7D,0x3C,0x30,0xB7,0xEB,0x86, +0xC6,0x26,0xAB,0xB1,0x77,0x4F,0x87,0x98,0xFB,0xDB,0x1E,0xBE,0x9F,0x12,0x5D,0x78, +0xFF,0x0F,0x2E,0xC5,0xF2,0x97,0xFA,0xED,0xE1,0x98,0xFA,0xA6,0xEE,0x7D,0x1D,0x21, +0xF8,0xB0,0xAA,0x7D,0xC7,0x1E,0xED,0xDB,0x90,0xA7,0xB9,0xBD,0x99,0xA9,0x30,0xA8, +0x71,0x29,0xFE,0x2D,0xBE,0xBD,0x94,0x72,0x52,0x52,0x2C,0x40,0x3F,0xDE,0x0F,0xEB, +0xDC,0x3A,0xDC,0x2E,0x77,0x23,0xC5,0xEE,0x77,0x2D,0xF2,0xDF,0x2D,0xF2,0xDF,0x2D, +0xF2,0xDF,0x2D,0xF2,0xDF,0x2D,0xF2,0xDF,0x2D,0xF2,0xDF,0x2D,0xF2,0xDF,0xF9,0xF6, +0xFB,0x51,0x33,0x88,0x2D,0xD3,0xA7,0x4B,0x08,0xDF,0xBC,0x6E,0xC9,0x2C,0xE0,0x95, +0x1B,0xF5,0x8D,0xEC,0xEF,0x7A,0xD9,0x6F,0xE1,0xB3,0xC0,0x96,0xE3,0x18,0x10,0xEB, +0xED,0x2D,0xAD,0xA5,0x0A,0x5A,0xA7,0x28,0x7B,0x4B,0x49,0x18,0xCB,0xB4,0x8B,0x7F, +0xAF,0xB7,0xDD,0x3A,0x9A,0x62,0x46,0x33,0x50,0x29,0xED,0xB7,0x45,0x0A,0x9E,0x5B, +0xE5,0xBE,0x5B,0xE5,0xBF,0xF9,0xF6,0xFA,0x3C,0x48,0x5F,0x50,0x66,0x9D,0x43,0x62, +0xAD,0xD2,0x5A,0x62,0xC4,0x96,0xD5,0xC9,0xA6,0xB3,0x61,0xDB,0xEB,0x69,0xAD,0xD7, +0xAD,0xC7,0xF0,0x36,0x23,0x83,0x55,0x44,0xDB,0x14,0xA7,0xB7,0x6F,0xAD,0x3D,0x6E, +0xBA,0xFB,0x7D,0xD4,0x04,0xDD,0xBF,0xE2,0x63,0xFB,0xEE,0x85,0xEA,0x28,0x96,0xFB, +0x6D,0xE1,0x63,0xF4,0x5B,0x1B,0xE4,0xEA,0x61,0xF2,0x7F,0x2D,0x13,0x6C,0x5B,0x49, +0x43,0x6E,0x9E,0xAD,0xF6,0x27,0xC9,0xD5,0xC9,0xF2,0x7F,0x2D,0x13,0x6C,0x5B,0x6E, +0x92,0xE1,0x37,0xD9,0x9F,0x27,0x53,0x2F,0x93,0xF9,0x68,0x9B,0x62,0xDA,0x4A,0x18, +0x3F,0x83,0xF8,0x3F,0xC2,0x1F,0xE2,0xE3,0xF8,0xA2,0x7D,0x89,0xBE,0x63,0xF3,0x1F, +0xFB,0xFC,0x7E,0x68,0xFE,0x6B,0xFE,0x0F,0xFA,0x3F,0x5A,0xFD,0x03,0x78,0x74,0xFD, +0x1F,0xB1,0xFD,0x60,0x6E,0xC0,0xB2,0x8D,0x8A,0x62,0x00,0x70,0xAD,0xFD,0xD0,0xFF, +0x06,0x9F,0xB1,0xE8,0x4B,0x0B,0x93,0xF0,0xB2,0x89,0x8A,0xE5,0x00,0x38,0x56,0xF1, +0x69,0xEA,0xDF,0x66,0x7E,0x31,0x3E,0x12,0xB6,0x68,0x03,0x72,0xB7,0x75,0xD8,0xAD, +0x9B,0x48,0x55,0x03,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xFF,0xDC,0x1F,0xCE,0x4F,0xF3, +0x1F,0x98,0xFC,0xC7,0xE6,0x3F,0x31,0xF9,0xD2,0xFE,0x74,0xBF,0x9C,0x0F,0xE0,0xFE, +0x0F,0xE0,0xFE,0x73,0xFF,0x98,0xFC,0xC7,0xE6,0x8F,0xE6,0xBF,0xE0,0xFE,0x71,0xBF, +0x9C,0x9F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x74,0xBF,0x9C,0x9F,0xE6,0x3F, +0x31,0xF9,0x8F,0xD7,0x5D,0x14,0xF6,0xBF,0xCF,0xCB,0xAD,0xD7,0x9F,0x3E,0xDF,0x41, +0xB0,0x0B,0x74,0xF4,0xD8,0x07,0x3E,0xC6,0xB7,0x5F,0xF4,0xDD,0x17,0x3F,0xAF,0x3C, +0x0E,0x33,0x87,0x5E,0xEF,0x5F,0xFD,0x1D,0x3D,0xBF,0x5B,0x05,0xD7,0x9E,0x07,0x19, +0xC3,0xAE,0xAF,0x5F,0xFE,0xCA,0x9E,0xAD,0xD3,0x25,0xCF,0x31,0x75,0x19,0x5D,0x5B, +0xC3,0x4B,0x5B,0xF7,0x62,0x78,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F, +0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83, +0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8, +0x3F,0x83,0xF8,0x3F,0xFE,0xF8,0xFF,0xAF,0xB4,0x90,0x67,0x85,0x2D,0x53,0x94,0x3D, +0xA5,0xA4,0x8C,0x65,0xDA,0x45,0xBF,0xD7,0xDB,0xE9,0xF3,0x0D,0x18,0xCD,0x40,0xA7, +0xB6,0xDD,0x14,0x2A,0x79,0x6F,0xFE,0x85,0xBE,0x21,0x08,0x42,0x10,0x85,0xFF,0xAA, +0x44,0x00,0x01,0xFC,0x1F,0xC0,0x00,0x1F,0xC4,0x21,0x1A,0x3F,0x80,0x00,0x3F,0x88, +0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x7B,0x7F,0x83,0xF8,0x00,0x03,0xF8,0x3F, +0x80,0x00,0x84,0x23,0x47,0xF0,0x7F,0x00,0x01,0x08,0x42,0x10,0x84,0x21,0x08,0x42, +0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10, +0x84,0x21,0x08,0x42,0x10,0x85,0xA1,0x56,0xAA,0xB7,0xC9,0xE9,0x0F,0xC7,0x86,0x48, +0x6E,0x37,0x1B,0x8D,0xFE,0x63,0x72,0x1E,0xFA,0x17,0x08,0x5A,0xBD,0x23,0x18,0x94, +0xFD,0x3D,0xBF,0x57,0xA1,0xA1,0xD5,0xFF,0x8E,0x3F,0x6D,0xED,0x5F,0x6B,0x6F,0xD5, +0xF6,0xB8,0xFE,0xBE,0xDF,0x88,0x3F,0xEB,0x31,0xF8,0x3F,0x83,0xF8,0x3F,0xF7,0x63, +0xFF,0x84,0x6F,0x98,0xFC,0xC7,0xFF,0x57,0xED,0xF9,0xA3,0xF8,0x3F,0xFE,0xD0,0xFE, +0xDF,0xAC,0xBD,0x5E,0x91,0x8C,0x4A,0x7B,0xDD,0x27,0x9B,0xAB,0x8D,0xEA,0xFD,0xD6, +0x1B,0x87,0x83,0xE2,0x5B,0xF0,0xE9,0xF6,0x18,0xFE,0xAC,0x1F,0xC1,0xFC,0x1F,0xC1, +0xFC,0x1F,0xC1,0xFF,0xB1,0xE2,0x1D,0x21,0x21,0x21,0x21,0x21,0x3A,0x5F,0xCE,0x97, +0xF3,0xA5,0xFC,0xE0,0x7F,0x07,0xF0,0x7F,0x07,0xF3,0x9C,0xFC,0xC7,0xE6,0x3F,0x34, +0x7F,0x35,0xFF,0x07,0xF3,0x8D,0xFC,0xE4,0xFF,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF3,0xA5,0xFC,0x84,0x84,0x87,0xEE,0x43,0x0B,0xDA,0xDD,0xEF,0xCF,0xF5,0x7F,0xFA, +0x7E,0xC7,0xEE,0x64,0xBA,0xB0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0xF9,0x83,0xFB,0xD2,0x1F,0x02,0x19,0x21,0xBF,0x80,0xDD,0xD0, +0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84, +0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21, +0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08, +0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42, +0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10, +0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84, +0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21, +0x08,0x42,0x10,0xBC,0x65,0x71,0xBD,0xDE,0x36,0x10,0x00,}; diff --git a/MCUME_esp32/espsnd/ym2h/jess1.ym b/MCUME_esp32/espsnd/ym2h/jess1.ym new file mode 100755 index 0000000..b347397 Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/jess1.ym differ diff --git a/MCUME_esp32/espsnd/ym2h/jess2.h b/MCUME_esp32/espsnd/ym2h/jess2.h new file mode 100644 index 0000000..635c915 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/jess2.h @@ -0,0 +1,372 @@ +const unsigned char musym[5929] = { +0x1D,0xA2,0x2D,0x6C,0x68,0x35,0x2D,0x09,0x17,0x00,0x00,0x99,0xD1,0x04,0x00,0x38, +0x23,0x7C,0x25,0x20,0x00,0x07,0x42,0x55,0x5A,0x5A,0x2E,0x59,0x4D,0x93,0xDC,0x0F, +0x27,0x7A,0xA1,0xF8,0x7D,0xED,0xD1,0xA6,0xFF,0xDF,0x7E,0xE9,0x3B,0xBF,0x77,0x7D, +0xF7,0xDF,0x7D,0x12,0xDF,0x06,0x9A,0x8B,0x1E,0x91,0x19,0x5A,0x23,0x08,0xCA,0x35, +0xF0,0x2C,0x39,0x8C,0x63,0x5D,0x58,0xC9,0xCC,0x8B,0x74,0xBC,0xCA,0xE2,0x33,0xBB, +0x96,0x2A,0xC5,0x64,0x96,0x68,0xC7,0x4B,0x5B,0x09,0xBA,0x4D,0x4C,0xCA,0x9D,0x5C, +0xB7,0x1A,0x8E,0x95,0xBB,0x5A,0xE8,0xA3,0xAC,0x20,0xEB,0x8A,0xE3,0x61,0x30,0xE6, +0xC2,0x58,0x25,0xC9,0x32,0x35,0x56,0xDD,0x90,0xCA,0xAC,0x74,0xB0,0xA0,0x95,0x51, +0x2F,0xFF,0xFB,0xFB,0xFF,0xFB,0xF7,0xEE,0xFB,0xFB,0xA3,0x3F,0x7D,0x1A,0xF7,0xE4, +0x34,0xE0,0xA5,0xEF,0x0B,0xC6,0xC3,0xDE,0x1E,0x42,0xEF,0x16,0xB7,0xC3,0xA5,0xC6, +0x20,0x62,0xCF,0x06,0xF0,0x25,0xBC,0x6F,0x03,0x72,0x0D,0x43,0x61,0x0D,0x77,0x60, +0x5E,0x71,0x84,0xC5,0x2F,0x83,0x78,0x1F,0x16,0x30,0x6F,0x0E,0x2F,0x93,0x78,0x30, +0x9B,0xC1,0xBC,0x58,0xDE,0x0D,0xE1,0xDE,0x7B,0xEC,0xDE,0x4B,0xE4,0x9E,0x0E,0xD0, +0xAF,0xFB,0x9F,0x76,0x8E,0x38,0xAC,0xB7,0xD8,0x71,0x1B,0xF6,0x17,0x1F,0x61,0x91, +0xCC,0xE3,0x33,0x5C,0x26,0x15,0xE7,0xB1,0xFC,0xD3,0xCF,0x3D,0x4E,0xF6,0x01,0xEC, +0x26,0x8B,0x9A,0x7B,0x14,0xF2,0x50,0x6A,0xA9,0x7A,0x82,0xA6,0xE5,0xA2,0x8E,0x26, +0xA8,0xE1,0xC1,0x3D,0x14,0x30,0x42,0xCA,0x70,0xC4,0xF2,0x50,0x8F,0x04,0xC5,0x1C, +0x50,0x3F,0x55,0x35,0x96,0xB9,0xB1,0x60,0xA7,0x24,0x67,0x42,0x03,0x55,0x41,0xAA, +0x36,0x7D,0xE9,0x13,0xF6,0x8E,0x5A,0xF2,0x6B,0xD6,0xAA,0x1B,0x57,0xCC,0x52,0x45, +0x67,0x46,0xE1,0x8F,0x65,0x63,0x48,0x3C,0x3D,0xFC,0x21,0x30,0xCD,0x0C,0x5B,0xB2, +0xB5,0x41,0x55,0xB2,0xB5,0xA4,0x52,0x28,0xFC,0x1B,0x63,0xFE,0x05,0xAF,0xC1,0xB6, +0x46,0xC0,0xD6,0x18,0x1F,0x7E,0xAA,0xAA,0x6D,0x52,0x27,0xE0,0x87,0xE6,0x28,0xA7, +0x28,0xD8,0xAD,0x6F,0xEB,0x02,0x64,0x16,0x18,0x27,0x8C,0x34,0x32,0x7B,0x61,0xEB, +0x77,0xC1,0x60,0xBC,0x09,0xF3,0x0A,0x38,0x76,0x57,0x67,0x5E,0xB6,0x32,0xFE,0xFF, +0x1D,0xC6,0xB3,0x66,0xE3,0xD9,0xF7,0x79,0xA9,0x91,0xDF,0x5C,0x8C,0xEC,0x66,0xC8, +0x34,0x6E,0x51,0x39,0x42,0xCC,0x79,0x39,0x5A,0xE6,0xF9,0x2C,0x1B,0x10,0x22,0x27, +0x9E,0xA8,0xF7,0xEF,0x37,0x86,0xF7,0xDE,0xA8,0x79,0xF6,0x91,0x8D,0x8B,0xBE,0x83, +0xF3,0xEF,0xA7,0x10,0xC8,0xE6,0x6C,0xD7,0xE3,0xC1,0x31,0xCC,0x49,0x3C,0x7A,0xA9, +0xE8,0x20,0xA9,0x8A,0x2A,0x89,0xB3,0x69,0xE6,0xE0,0x69,0xE6,0xC2,0xFA,0x00,0x2C, +0x01,0x13,0x83,0x18,0xD3,0x35,0x3F,0x15,0x4D,0x3B,0xCC,0x39,0xF0,0x18,0x04,0xBB, +0x43,0x0B,0x22,0x70,0xCF,0xCF,0xAC,0x8D,0x23,0x16,0x9B,0x53,0x6A,0x2A,0x2A,0x1E, +0x9A,0xFC,0x53,0xB8,0x55,0x8D,0x44,0x78,0x58,0xEA,0x63,0x39,0x15,0x9B,0x55,0x04, +0x69,0x80,0x64,0xCD,0xF1,0x3E,0x90,0xEA,0x84,0xE4,0xBD,0x93,0x87,0xD0,0x1E,0x9C, +0x2B,0xCE,0x02,0x1F,0xAA,0x7D,0xE8,0x1B,0x1A,0xC0,0xBF,0x53,0x04,0x30,0x47,0x04, +0x58,0x28,0xED,0x0D,0xD7,0xA0,0x7A,0x6C,0x30,0xD3,0xBE,0x99,0x5A,0x07,0xE2,0x81, +0x5A,0x37,0xE6,0x77,0x07,0xC9,0x1E,0x4B,0xF5,0x3B,0xC9,0x24,0x8D,0x25,0x2C,0x70, +0xDB,0x03,0x3E,0x90,0x9C,0x8A,0x62,0x64,0xA8,0x62,0x7E,0x08,0x12,0xD7,0x4F,0x0B, +0x5B,0x27,0xCB,0xE9,0x04,0x89,0x2E,0x09,0xCC,0xC4,0xD8,0xD9,0x84,0x99,0x1A,0x7D, +0x98,0xAA,0x28,0x19,0x60,0x8D,0xFA,0x7A,0x78,0x58,0xD5,0xF6,0x62,0x04,0xCF,0x6C, +0x6A,0xC7,0x15,0x2C,0xA2,0x8A,0x06,0x63,0xB4,0xCD,0x31,0x36,0x16,0x99,0x59,0x2E, +0xE9,0x02,0x43,0x2D,0x81,0xDC,0x51,0xA6,0x80,0xED,0xB7,0xB7,0x80,0x8C,0x13,0x32, +0xAA,0x57,0x85,0x82,0xD2,0x71,0x52,0xFB,0x34,0x22,0x85,0xB8,0x2A,0xA9,0xB6,0x06, +0x61,0xD6,0xE8,0x67,0x36,0x16,0x9D,0xED,0xCB,0x10,0x60,0x59,0x66,0x8D,0x98,0x35, +0x78,0x04,0x81,0x98,0x21,0x96,0xD6,0xF1,0xDE,0xDC,0x4C,0x99,0x65,0xBF,0x2C,0xCA, +0x6C,0xC7,0x6C,0x29,0x99,0xC4,0x04,0xD6,0xE2,0xE6,0xF1,0x00,0xFB,0x65,0x0D,0xC7, +0xA9,0x91,0x99,0x02,0x7E,0xA2,0x26,0x06,0xD1,0x2C,0x29,0x8D,0xD3,0x0F,0x36,0x2A, +0xDB,0x95,0x3B,0x18,0xC4,0xFA,0xC9,0xA1,0x6E,0x6E,0x8D,0x7E,0x5A,0xC1,0x8C,0xDF, +0x8A,0x7C,0x7D,0x8E,0x93,0x32,0xA6,0x02,0x9D,0x84,0xD8,0xC6,0x1A,0x86,0x4A,0xD2, +0x2C,0xD8,0x4C,0xFE,0x3B,0xE0,0x6D,0x8D,0x98,0x3A,0x06,0xD2,0x7E,0x76,0x6B,0x66, +0x16,0x6C,0x35,0xB6,0xE4,0x0A,0x9A,0xE9,0x93,0x96,0x82,0xCC,0x88,0xC3,0x13,0x49, +0x66,0x66,0x48,0x1B,0xCD,0xA4,0x10,0x2E,0x31,0x5C,0x81,0x14,0xF9,0x03,0x72,0x0B, +0x22,0x4B,0x7E,0x6D,0x17,0x72,0xA1,0x3B,0x33,0x32,0xCF,0x3F,0x96,0xF9,0x32,0x4B, +0x07,0x58,0x1B,0xA4,0x8B,0x5E,0x20,0x02,0xBA,0x20,0xC6,0xDF,0xCD,0xE6,0xAD,0x93, +0x75,0xE6,0xBD,0x99,0x7D,0x70,0xF4,0x73,0xEF,0x93,0xB9,0xAB,0x57,0xAF,0xB4,0x24, +0x81,0xD8,0x75,0x97,0xF8,0x54,0x05,0x81,0xB9,0x0A,0x08,0xA8,0x4E,0x5B,0xA4,0x64, +0xF0,0x35,0x0A,0x45,0x1E,0xA1,0xB4,0x7A,0xB1,0xD8,0x21,0xA1,0x8D,0x96,0xDB,0x43, +0x1F,0x2B,0x15,0xCE,0xD0,0x36,0x8C,0x8E,0xE7,0x71,0x7B,0x04,0xEB,0x14,0xEB,0xD4, +0x36,0x81,0xDC,0x31,0x41,0xB1,0xD5,0xC6,0x19,0xDC,0x43,0x4F,0x7D,0x14,0xEB,0x7C, +0xE8,0xCD,0x0D,0x29,0xE1,0x8A,0x78,0xC4,0xBF,0x50,0xCE,0x34,0x9B,0xF0,0xAC,0x67, +0xDE,0x27,0xE2,0xC5,0xBC,0xCF,0xAF,0x39,0x84,0xFC,0x1B,0x0C,0xF9,0xCB,0x7E,0xE0, +0x9D,0x0C,0x8A,0x86,0x2B,0x9F,0x11,0x9D,0x24,0xA0,0x77,0xCF,0x85,0xCF,0xB0,0xC3, +0x3F,0x53,0x77,0x04,0x13,0xF5,0x4A,0x9D,0x8F,0xA7,0xE2,0x58,0xA8,0x61,0xE9,0xF1, +0x0A,0x18,0x96,0x28,0xB6,0x20,0x77,0x7F,0x3E,0x9D,0x80,0xE1,0x74,0xC2,0xD3,0x3D, +0xDA,0x63,0x89,0xE1,0x75,0x0B,0xB4,0xFC,0xDF,0x43,0x07,0x45,0x43,0x0A,0x5A,0x4B, +0x67,0x9E,0x94,0x25,0x14,0x31,0x7D,0xA0,0x1D,0x14,0x2E,0x9B,0x45,0x68,0x15,0x5A, +0x45,0x6D,0x6C,0x54,0x2F,0xD0,0xC3,0x0B,0xB6,0x5B,0x93,0x84,0xD7,0x65,0xAD,0x96, +0x56,0xA0,0x32,0x45,0x6A,0x6C,0x6C,0x78,0x36,0x93,0x12,0x2C,0x99,0x9A,0xEE,0xE4, +0xF9,0x0C,0xB6,0x6B,0x96,0xCC,0xD8,0x66,0xF3,0x75,0x7C,0x1F,0xB2,0xCF,0xE7,0xF3, +0x9C,0xAE,0x66,0xC1,0xEF,0x5D,0x61,0x96,0xCC,0xD5,0xE4,0xEC,0x38,0xEC,0xB6,0x6F, +0x39,0x98,0xB0,0xCC,0xD5,0xFA,0xDB,0x0C,0xD6,0x5B,0x35,0x5F,0x56,0xF6,0x37,0x95, +0xCC,0xE7,0x6C,0x33,0x59,0xCB,0x0A,0xFA,0xBE,0x3B,0x98,0xAB,0xC8,0xD8,0x57,0xE6, +0x39,0x6F,0x65,0x9B,0x5D,0xD8,0x38,0x1B,0x3A,0xCD,0x7A,0x7F,0x2D,0x36,0xFC,0xE1, +0x29,0x31,0x91,0xBC,0xAC,0x70,0xD6,0xCD,0xEF,0x23,0xF5,0xBA,0x7A,0xC8,0x53,0xF9, +0x69,0xB7,0xE7,0x7A,0xA4,0xC6,0x46,0xF2,0xB1,0xAE,0x6F,0xCE,0xF9,0x45,0xBD,0xE4, +0x7F,0x1F,0x67,0xBE,0x6B,0xD3,0xF9,0x69,0xB7,0xE7,0x0F,0x49,0x8C,0x8D,0xE5,0x63, +0x61,0x6C,0xDE,0xF2,0x3F,0x61,0x67,0x59,0x0D,0x9C,0xEC,0x96,0xB6,0x3F,0x57,0x49, +0x8C,0x8D,0xF6,0x6C,0x5D,0x0D,0x74,0x07,0xEA,0xC7,0xCE,0x3F,0xCE,0x3F,0xCE,0x3F, +0xCE,0x3F,0xCE,0x3F,0xCE,0x3F,0xEB,0xA4,0xC9,0x73,0x8A,0x3A,0x4C,0x64,0x6F,0x2B, +0x1E,0x06,0xD9,0xBD,0xE4,0x7F,0x3D,0xD9,0x59,0xD6,0x27,0xF2,0xD3,0x5C,0x13,0x49, +0x8C,0x8D,0xF6,0x6C,0x5D,0x0D,0x74,0x07,0xEA,0xC7,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0xED,0x7F,0x3B,0x5F,0xCE,0xD7,0xF3,0x8F, +0xF3,0x8F,0xF3,0x8F,0xF3,0x77,0xF3,0xA3,0xFC,0x1F,0xC1,0xFF,0xCE,0xEA,0x7F,0x5D, +0xB5,0xDD,0x4E,0x4B,0xAE,0x12,0x8C,0xC6,0xDD,0xEE,0x1B,0xFA,0x63,0xF3,0xB7,0x01, +0x75,0x3A,0xC8,0x75,0xA9,0xFC,0xE6,0xEE,0x63,0xB4,0x7B,0x8D,0x5A,0x72,0x31,0xBC, +0x8F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0xD9,0x2B,0x77,0x53,0xC1,0xE9, +0xEC,0x53,0xF9,0xCD,0xDC,0xC6,0xE1,0xEC,0x8C,0x6F,0x23,0xF3,0xBA,0x50,0x5D,0x4E, +0xC7,0x75,0xD7,0xA7,0xF3,0x9B,0xB9,0x8E,0xD1,0xEE,0x35,0x69,0xC8,0xC6,0xF2,0x3E, +0x0F,0xE0,0xFF,0xFF,0xE3,0xF8,0x84,0x25,0xEF,0x41,0xE9,0xE4,0x4B,0xD0,0xDF,0x4A, +0x9D,0xDD,0xBE,0xCA,0x8D,0xBF,0x1B,0x4A,0x9D,0xDD,0xBE,0xF3,0x1F,0xE9,0xA8,0xDB, +0xEB,0x69,0x53,0xBB,0xB7,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0xDF,0x0F,0xE7,0x99,0xFC, +0xF3,0xFF,0x83,0xF9,0xEF,0x7F,0x3D,0xEF,0xE7,0xBD,0xFC,0xE3,0xFC,0xE3,0xFC,0xE3, +0xFC,0xDD,0xFC,0xE8,0xFF,0x07,0xF0,0x7F,0xF3,0xBA,0x9F,0xCF,0x63,0xF9,0xED,0xFF, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xFF,0x34,0x7F,0x3D,0xEF,0xFF,0xDB,0xEF,0x7F, +0x07,0xF0,0x7F,0x07,0xF6,0xB1,0x7A,0x64,0xC6,0x7F,0x39,0x52,0x62,0xE6,0xF2,0xB1, +0xB7,0xB4,0xF8,0xD1,0xF6,0x2D,0x8D,0x8F,0xC1,0x62,0xE6,0xF2,0xB1,0xB7,0xB4,0xF8, +0xD1,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xFF,0x30,0x7F,0x95,0x5B, +0xCC,0x6E,0x1E,0xDF,0x47,0xFF,0x74,0xF1,0xB8,0x7B,0x2C,0x07,0xCA,0x8F,0x83,0xF8, +0x3F,0x83,0xF8,0x3F,0x83,0xFF,0xDE,0x1F,0xE9,0xA6,0x4C,0xA6,0xD8,0x93,0xCE,0x63, +0x70,0xF6,0x5B,0x1F,0x93,0x1F,0x07,0xF0,0x7F,0x07,0xFF,0xFA,0x1F,0xC4,0x2F,0xBA, +0xB0,0x12,0x27,0x31,0x96,0x99,0x6F,0x2D,0xE5,0xBC,0xB7,0x96,0xFF,0xB9,0x6F,0x3C, +0xCF,0xE7,0x9F,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC, +0x1F,0xC1,0xFC,0x1F,0xEF,0x87,0xF3,0xD8,0xFE,0x7B,0x7F,0xC1,0xFC,0x1F,0xC1,0xFC, +0x1F,0xC1,0xFC,0xF7,0xBF,0x9E,0xF7,0xF0,0x7F,0x07,0xF0,0x7F,0x72,0xE5,0xB3,0xD6, +0x8B,0xD9,0xD9,0x31,0x2B,0x1F,0x73,0xA6,0x62,0xE8,0xF5,0x2C,0x4B,0x4F,0xA8,0xD5, +0x31,0x6B,0x35,0xAC,0x4B,0x4F,0xB4,0xD7,0xB1,0x6F,0xF5,0x8C,0x58,0x18,0x58,0x95, +0x8B,0xA9,0xBA,0xD2,0xB4,0xD6,0x26,0xEA,0x6B,0x1F,0x74,0xDD,0x6D,0xEB,0x4D,0xD8, +0x57,0xD8,0xD8,0x31,0x64,0xAB,0x98,0xB8,0x8E,0x2D,0x8B,0x86,0xAD,0x62,0xF1,0x58, +0xCA,0xB2,0x18,0xFC,0x85,0x6E,0x4B,0x8A,0xC9,0x49,0xF6,0xB6,0x95,0xBA,0xAC,0x07, +0x2F,0xC9,0x31,0x3B,0x0D,0xAB,0x15,0xA7,0x49,0xBA,0xD3,0x95,0x03,0xFF,0x96,0x3F, +0xA6,0x48,0xD7,0x6B,0xB5,0xDA,0x0E,0x9D,0x89,0x69,0xAA,0x75,0x37,0x31,0x73,0x75, +0xBA,0xB9,0x68,0x24,0xF9,0xE9,0xE4,0x89,0xEE,0x23,0xF7,0x08,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xDC,0x9B,0xD6,0xD1,0xDC,0xF7,0x1D, +0xCE,0xBF,0x61,0xF2,0x76,0x1B,0x5A,0x1D,0xC7,0x69,0xD9,0xFC,0x6E,0xBF,0x5B,0xD5, +0xEB,0x35,0x7A,0xBD,0x66,0xAF,0x55,0xAA,0xEA,0xBA,0x9E,0xAB,0x55,0x6F,0x41,0xBD, +0x85,0xCF,0xCB,0x82,0x6D,0xDB,0xD4,0xBF,0x0C,0x7B,0xA4,0x7B,0x7C,0x7F,0xDD,0x77, +0xD8,0x18,0x3D,0x37,0xDF,0x6E,0xBB,0xCE,0x23,0x7F,0xE0,0xB1,0x95,0x95,0x98,0xBE, +0x03,0x17,0x59,0x8C,0xC6,0xFF,0x35,0x00,0x7F,0xF2,0x87,0xF5,0x46,0x8F,0xE6,0xBF, +0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0, +0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE, +0x0F,0xE0,0xFF,0x7A,0x3F,0xF6,0x56,0x75,0x8C,0xFE,0x62,0xEC,0x2D,0xE9,0xB5,0x62, +0xE7,0x37,0xF0,0xD8,0xE0,0xF4,0xF6,0x29,0xFC,0xD5,0x5F,0x6F,0x4D,0x7D,0x58,0x6B, +0x4E,0xE5,0x8D,0xE6,0x3F,0xD0,0x77,0x9A,0x74,0xFE,0x56,0xF7,0x34,0xEE,0x58,0x83, +0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xFD,0xF0,0xFE,0xA8,0xEA,0x7F,0x3A, +0xFF,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1, +0xFC,0x1F,0xC1,0xFE,0xF4,0x7F,0x7B,0xE9,0xA9,0x92,0x27,0x31,0x78,0x5F,0x59,0x03, +0xFF,0xEF,0x2A,0xB9,0xF4,0x29,0xE9,0xE9,0xE9,0xB0,0x0C,0x4B,0x4F,0x79,0xA7,0x62, +0x75,0x37,0x31,0x73,0x75,0xBA,0xEF,0x12,0x7C,0xD3,0x49,0xF3,0xBC,0x49,0x13,0xDC, +0x47,0xEE,0x3E,0x41,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xEF, +0xC7,0xF9,0x57,0xD9,0xEC,0x41,0xBA,0x6F,0xE3,0x76,0x32,0xCC,0xF2,0x10,0x3F,0xF9, +0x43,0xFE,0x16,0x7E,0x33,0x34,0x7F,0x35,0xFF,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xFF,0xEB,0x1F,0xEF,0x3D, +0x69,0xB4,0xCD,0xFE,0xBA,0xA7,0x74,0xC4,0xC7,0xE6,0x3F,0x31,0xF9,0x8F,0xCC,0x7F, +0xFC,0x18,0xFF,0x7D,0xB6,0x9B,0xEF,0xB4,0x69,0xEF,0xB7,0x76,0x3C,0x55,0xB6,0x27, +0xC5,0x51,0xA7,0xBE,0xDB,0x61,0xB5,0xA7,0x6F,0x63,0xFF,0x3C,0x7F,0x8A,0xA3,0x8F, +0xE5,0x62,0x0F,0xF7,0xA3,0xFE,0x15,0xAC,0x4E,0xA7,0xF3,0xAF,0xFC,0x1F,0xC1,0xFC, +0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xEF, +0x47,0xFE,0x5B,0x3C,0xC4,0xBF,0x3E,0xCE,0xC9,0x89,0x69,0xFB,0x9D,0x33,0x17,0x47, +0xA9,0x62,0x5A,0x7D,0x46,0xA9,0x8B,0x59,0xAD,0x62,0x5A,0x7D,0xA6,0xBD,0x8B,0x7F, +0xAC,0x62,0xC0,0xC2,0xC4,0xAC,0x5D,0x4D,0xD6,0x95,0xA6,0xB1,0x37,0x53,0x58,0xFB, +0xA6,0xEB,0x6F,0x5A,0x6E,0xC2,0xBE,0xC6,0xC1,0x8B,0x25,0x5C,0xC5,0xC4,0x71,0x6C, +0x5C,0x35,0x6F,0x82,0xB2,0x18,0xFC,0x85,0x6E,0x4B,0x8A,0xC9,0x7D,0x0F,0xB5,0x8F, +0xAC,0xAD,0x66,0xF9,0x7E,0x49,0x89,0xD8,0x6D,0x58,0xAD,0x3A,0x4D,0xDD,0x4F,0x31, +0xCB,0xB1,0x2B,0x10,0x7F,0x07,0xF0,0x7F,0x07,0xFB,0xE1,0xFD,0x72,0x8C,0xAB,0x2F, +0x96,0xCB,0xD8,0x71,0xF9,0x8E,0x3E,0xEF,0xED,0xD1,0x95,0xA6,0xE4,0xA2,0x4B,0x92, +0xE1,0x5B,0x29,0x06,0x79,0x56,0x77,0x39,0x9D,0xCF,0x67,0xFF,0x13,0x3F,0x47,0xED, +0x73,0x7C,0xAB,0xA0,0xF7,0x5D,0x06,0x9B,0xA1,0xFC,0xCE,0x86,0xEF,0xEF,0xDB,0xF3, +0xEC,0x4B,0x85,0x56,0x9B,0x93,0xB1,0x6C,0xB8,0xCE,0x5C,0xDE,0xAB,0x31,0xC7,0xE6, +0x39,0x2E,0x53,0x95,0xE5,0x28,0xFD,0x83,0xF8,0x3F,0xFA,0x03,0xFB,0xB5,0x15,0x5A, +0x7A,0x9A,0x3A,0x99,0xAD,0x3D,0x55,0x1D,0x57,0x56,0x9C,0xAB,0xE4,0x6C,0x3B,0xAE, +0xF5,0xEA,0x7A,0x89,0xB5,0x35,0x51,0xFA,0x7C,0x1E,0xED,0x84,0xDD,0xEA,0xF0,0xB8, +0x7D,0xEF,0x13,0xBF,0x7A,0xCD,0xFE,0x95,0xBF,0xB9,0xEE,0x3B,0x9D,0x7E,0xC3,0xE4, +0xEC,0x2E,0xFE,0xFB,0x3E,0xD3,0xB3,0xF8,0xDD,0x7F,0x5B,0xD6,0x75,0x7A,0xBD,0x56, +0xC5,0x75,0x5D,0x4F,0x55,0xAA,0xD5,0xEB,0x35,0x74,0x7E,0xDD,0xB1,0x7B,0x95,0xBB, +0x78,0x6D,0x9E,0xFD,0x1C,0x7F,0xFB,0x9D,0xF6,0x06,0x0F,0x4D,0xF7,0xF5,0x7E,0xA7, +0x11,0xBF,0x70,0x35,0x8E,0x58,0xBE,0x03,0x17,0x59,0x8C,0xC6,0xE3,0x2E,0xFE,0xF8, +0xDB,0x16,0x25,0xDC,0xAD,0xD4,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1, +0xFE,0xF8,0x7F,0x3B,0xBF,0xCF,0x03,0xF8,0x3F,0x9D,0xAF,0xE7,0x77,0xF8,0x3F,0x83, +0xF9,0xE0,0x7F,0x3A,0x3F,0xC1,0xFE,0xF8,0x7F,0xEC,0x98,0xBB,0x0F,0x8B,0xD8,0x76, +0x5F,0x1F,0xF6,0xBE,0x3E,0xD6,0x87,0xEB,0xFE,0xB7,0xE8,0xE9,0xF4,0xDC,0xF7,0xE3, +0xE8,0x73,0x96,0x35,0xD8,0xFB,0x5C,0x71,0xF4,0xA8,0x31,0x6E,0xAD,0x4D,0x21,0x1F, +0xA9,0x7E,0x18,0xF7,0x48,0xE9,0x50,0x6D,0xA3,0xD4,0x60,0xFD,0x46,0xEB,0x84,0xAB, +0xC2,0x5C,0x50,0x5C,0x66,0xBA,0x63,0x5D,0x63,0xFE,0x0F,0x1D,0xC2,0xFA,0xDC,0x7F, +0x13,0x5B,0x91,0xF5,0xD8,0xEE,0x0F,0x17,0x59,0x8E,0xE1,0xF8,0x9F,0xC1,0xF6,0x19, +0x3C,0x8F,0xE0,0x26,0x32,0xE1,0x78,0x8A,0xDC,0x9E,0x53,0x8C,0xE2,0xB8,0x9C,0x87, +0x0F,0xC3,0x63,0x31,0xDC,0x3E,0x47,0x27,0xC6,0x65,0xFF,0x0B,0x8C,0xC9,0xF0,0xF8, +0xEC,0x5F,0xA2,0x3F,0xB7,0x83,0xEB,0x15,0x21,0x5B,0xD6,0x1D,0xD6,0x7C,0x4E,0xB3, +0x5B,0xD6,0xF5,0xDD,0x6D,0xD5,0x07,0x6F,0x5F,0xAD,0x91,0x3B,0x64,0x07,0x47,0xDC, +0xDE,0xD7,0xAB,0x92,0x4A,0x16,0x5C,0xDF,0x3B,0xF9,0x5D,0x0F,0xBE,0x67,0xC7,0xE7, +0x74,0xBF,0x91,0xEE,0xBD,0xE6,0x9F,0x51,0xFA,0x1D,0x07,0xE6,0xF4,0x9A,0x9F,0x83, +0xFA,0x9E,0xFB,0xA5,0xE9,0xBF,0x4B,0xF5,0x7E,0x17,0xBF,0xF8,0x1F,0xA7,0xD4,0xFC, +0x3F,0x89,0xF0,0x7A,0x8F,0x85,0xD5,0xFE,0xC7,0x5F,0xD4,0xFC,0x3E,0xB3,0xE2,0xFE, +0xCF,0xED,0xA0,0xFB,0x67,0x67,0xCE,0x71,0xD5,0xF6,0x3C,0xEF,0x3D,0xCE,0xA6,0x60, +0x4E,0x0B,0x53,0x98,0x54,0xA0,0x8C,0x53,0x34,0xA3,0xA4,0x14,0x91,0xD5,0x8D,0x8D, +0x7E,0x97,0x9C,0xB3,0x46,0x29,0xC2,0x8A,0x73,0x42,0xD0,0x12,0xBD,0x00,0xD4,0x74, +0x83,0xB2,0x3A,0xE4,0x39,0x1E,0x41,0x2D,0x88,0xC5,0x38,0x75,0x4E,0x7F,0x52,0x82, +0x31,0x48,0x3A,0x68,0x5C,0x9A,0x3C,0x7E,0x7E,0xA3,0x52,0x9A,0x34,0x26,0x3C,0xD0, +0xE8,0xAC,0x93,0xA2,0xD5,0x28,0x23,0x14,0xC8,0xA8,0xE9,0x21,0xA8,0xEB,0x53,0xA9, +0xD4,0x26,0x91,0x88,0xC6,0xCA,0xCB,0x44,0x9D,0x1B,0x29,0x41,0x18,0xA6,0x69,0x47, +0x49,0x0D,0x47,0x5D,0x37,0xC0,0xE9,0x92,0xD8,0x8C,0x74,0x9E,0xDB,0x48,0x9B,0xC6, +0xA5,0x04,0x62,0xBC,0x4F,0xAE,0x12,0x49,0xBA,0x05,0x0B,0x16,0x4A,0x08,0xC5,0x03, +0x14,0x75,0x43,0x09,0x26,0x5A,0x46,0x2B,0x16,0x4A,0x08,0xC5,0x05,0x54,0x75,0x43, +0x3A,0xA5,0xB1,0x18,0xAC,0x59,0x28,0x23,0x15,0x28,0xD7,0x09,0x24,0xDD,0x3A,0x31, +0x7D,0x7E,0x52,0xB9,0x06,0x74,0xA0,0x8C,0x53,0xA2,0xF9,0x1D,0x50,0xC2,0x49,0x96, +0x91,0x8D,0x75,0x76,0x51,0x08,0xB4,0xA0,0x8C,0x53,0xA3,0x89,0x1D,0x50,0xCE,0xA9, +0x6C,0x46,0x39,0x5E,0x37,0x2A,0x85,0x32,0x50,0x46,0x29,0x07,0x34,0x7F,0x34,0x7F, +0x34,0x7F,0xD3,0xB1,0x74,0x5E,0xF7,0xA2,0xD3,0xF4,0x9D,0x2F,0x49,0xB5,0xA1,0xD0, +0x59,0xE8,0xB3,0xBC,0x9F,0x1D,0x94,0xC8,0x70,0x58,0xAC,0x3E,0x0E,0xE3,0x89,0xFB, +0xAA,0x0A,0x3F,0xAF,0x47,0xFB,0x69,0x57,0xA6,0xA5,0xA9,0xA7,0x75,0xD5,0x07,0x74, +0x6D,0xBB,0xA5,0x7D,0xBD,0x7C,0x1A,0x84,0xD3,0x29,0xBA,0x45,0xDA,0x0E,0x6E,0x6F, +0x6B,0xD2,0xC9,0x25,0x0C,0xB7,0x21,0xCA,0xE7,0x74,0x1A,0x1B,0x1E,0x53,0x39,0xCC, +0xE8,0x74,0x7C,0x9E,0x6F,0x3F,0xED,0x74,0x9C,0xDE,0x6B,0x98,0xE6,0xB4,0x7A,0x5F, +0x71,0xC8,0xE5,0xF2,0xBC,0x5E,0x43,0x1D,0xCB,0xB3,0xEB,0x1F,0x9E,0x67,0xD6,0x4F, +0xDA,0x33,0xEA,0xB9,0x7B,0x73,0x5D,0xE1,0x63,0x75,0x35,0xF9,0x5E,0xC8,0x35,0xF9, +0x75,0xBD,0xCC,0x5D,0x63,0xA5,0x6F,0xDB,0xC7,0xD7,0xC3,0x26,0xB4,0xD6,0x1A,0xAC, +0x57,0xE6,0x59,0x2A,0xF8,0x73,0xEC,0xB4,0xAC,0x52,0xDB,0xDD,0x0D,0xF1,0xE3,0xE0, +0xFF,0x7C,0x3F,0x8A,0xF9,0x33,0x4D,0xFE,0x87,0x4C,0xCF,0x12,0xBF,0xE4,0xF3,0xEB, +0x4D,0x8D,0x7A,0x6D,0x4B,0x3B,0xAB,0xF5,0x7A,0xA7,0x53,0x66,0xD1,0x1D,0x6E,0xB5, +0x9A,0x7B,0x6C,0x35,0xF2,0xB1,0x5B,0xDB,0x35,0x49,0xC6,0x56,0x3A,0x9B,0x38,0xBB, +0xD2,0x59,0x33,0x80,0x7C,0xFE,0x79,0x69,0xAC,0x4F,0x6A,0xDE,0xF3,0x1F,0xBA,0x9B, +0xBE,0x76,0xCD,0xC1,0xFC,0x1F,0xEF,0xC7,0xF5,0x49,0x95,0xB5,0xDA,0xED,0x76,0x83, +0xA7,0x62,0x5A,0x6A,0x9D,0x4D,0xCC,0x5C,0xDD,0x6E,0xAE,0x5A,0x09,0x3E,0x7A,0x79, +0x22,0x7B,0x88,0xFD,0xC2,0x07,0xFB,0xD1,0xFC,0xF3,0x3F,0x9E,0x7F,0xF0,0x7F,0x77, +0x62,0x0B,0xBB,0x46,0x5D,0xEB,0x7D,0x5A,0x6B,0xEB,0x5F,0xD6,0x37,0xC2,0x20,0xEF, +0x5B,0x5A,0xC1,0xDC,0x15,0xBA,0x9F,0x51,0x47,0xD7,0x43,0xD1,0xD1,0xF5,0xE5,0xAC, +0x7D,0xD3,0x75,0xB7,0xAD,0x37,0x61,0x55,0xF6,0x96,0xAF,0x66,0x2F,0x11,0xC5,0xB1, +0x2F,0x67,0x7C,0xAA,0x7F,0x86,0x47,0xF8,0x7E,0xD6,0x3E,0xB2,0xB5,0x9B,0xAF,0xB7, +0x85,0xD8,0x6D,0x58,0xAD,0x3A,0x4D,0xDD,0x4F,0x31,0xCB,0xB1,0x65,0xE4,0xF6,0xC6, +0x83,0xFD,0xE8,0xFE,0x7B,0xDF,0xFC,0x0F,0xBF,0x6E,0xCE,0xAC,0xEE,0x7D,0x70,0xAA, +0xD3,0x72,0x76,0x2D,0x97,0x19,0xCB,0x9B,0xD5,0x66,0x13,0xCF,0xE2,0x9E,0x81,0x5A, +0x3F,0x60,0xFE,0x0F,0xFE,0x80,0xFE,0xED,0x45,0x5D,0xE3,0x25,0x97,0x53,0xFD,0x55, +0x1D,0x57,0x69,0x74,0x07,0xFC,0x8D,0x87,0x75,0xDE,0xBD,0x4F,0x51,0x36,0xA6,0xAA, +0x3F,0x4F,0x83,0xDD,0xB0,0x9B,0xBD,0x5E,0x17,0x0F,0xBD,0xE2,0x77,0xEF,0x59,0xBF, +0x9D,0x1F,0xE7,0x53,0xF8,0x3F,0x9E,0xDF,0xF3,0xDB,0xFE,0x7B,0x7F,0xD0,0x7D,0xB3, +0xB3,0xE7,0x13,0xDA,0x25,0xCE,0xF3,0xDC,0xEA,0x18,0x89,0xC1,0x6A,0x73,0x2A,0x94, +0x11,0x8A,0x66,0x94,0x74,0x82,0x92,0x3A,0x4F,0x69,0x6E,0x97,0x9C,0xB3,0x46,0x29, +0xC2,0x8A,0x73,0x42,0xD0,0x12,0xBD,0x0F,0x14,0x74,0x83,0xB2,0x3A,0x4F,0x6A,0x8A, +0x5B,0x11,0x8A,0x70,0xEA,0x9D,0xCF,0xA9,0x41,0x18,0xA4,0x1D,0x34,0x30,0x4D,0x1E, +0x13,0xDA,0x66,0x9A,0x34,0x26,0x54,0xD0,0xE8,0xAC,0x93,0x73,0x54,0xA0,0x8C,0x53, +0x22,0xA3,0xA4,0x86,0xA3,0xA4,0xF6,0xAB,0xA6,0x91,0x88,0xC6,0xCA,0xCB,0x44,0x9B, +0xAC,0xB7,0xDA,0xD9,0xA8,0x40,0x05,0x1D,0x24,0x35,0x1D,0x27,0xB5,0xC9,0x2D,0x88, +0xC7,0x49,0xED,0xB4,0x89,0xBC,0x6A,0x50,0x6F,0xB6,0x71,0x9C,0x4F,0xAE,0x12,0x49, +0xBA,0x05,0x0B,0x16,0x4A,0x08,0xC5,0x03,0x14,0x75,0x43,0x09,0x26,0x5A,0x46,0x2B, +0x16,0x4A,0x08,0xC5,0x05,0x54,0x75,0x43,0x3A,0xA5,0xB1,0x18,0xAC,0x59,0x28,0x23, +0x15,0x28,0xD7,0x09,0x24,0xDD,0x3A,0x31,0x7D,0x7E,0x52,0xB9,0x06,0x74,0xA0,0x8C, +0x53,0xA2,0xF9,0x1D,0x50,0xC2,0x49,0x96,0x91,0x8D,0x75,0x76,0x51,0x08,0xB4,0xA0, +0x8C,0x53,0xA3,0x89,0x1D,0x50,0xCE,0xA9,0x6C,0x46,0x39,0x5E,0x37,0x2A,0x85,0x32, +0x50,0x46,0x29,0x07,0x34,0x7F,0x34,0x7F,0x34,0x7F,0xD3,0xB1,0x74,0x5E,0xF7,0xA2, +0xD3,0xF4,0x9D,0x2F,0x49,0xB5,0xA1,0xD0,0x59,0xE8,0xB3,0xBC,0x9F,0x1D,0x94,0xC8, +0x70,0x58,0xAC,0x3E,0x0E,0xE3,0x89,0xFB,0xAA,0x0A,0x3F,0xAF,0x47,0xFB,0x69,0x57, +0xA6,0xA5,0xA9,0xA7,0x75,0xD5,0x07,0x74,0x6D,0xBB,0xA5,0x7D,0xBD,0x7C,0x1A,0x84, +0xD3,0x29,0xBA,0x45,0xDA,0x0E,0x6E,0x6F,0x6B,0xD2,0xC9,0x25,0x0C,0xB7,0x21,0xCA, +0xE7,0x74,0x1A,0x1B,0x1E,0x53,0x39,0xCC,0xE8,0x74,0x7C,0x9E,0x6F,0x3F,0xED,0x74, +0x9C,0xDE,0x6B,0x98,0xE6,0xB4,0x7A,0x5F,0x71,0xC8,0xE5,0xF2,0xBC,0x5E,0x43,0x1D, +0xCB,0xB3,0xEB,0x1F,0x9E,0x67,0xD6,0x4F,0xDA,0x33,0xEA,0xB9,0x7B,0x73,0x5D,0xE1, +0x63,0x75,0x37,0x7B,0xF6,0x57,0xE5,0xD6,0xF7,0x31,0x75,0x8E,0x95,0xBF,0x6F,0x1F, +0x5F,0x0C,0x9A,0xD3,0x58,0x6A,0xB1,0x5F,0x99,0x64,0xAB,0xE1,0xCF,0xB2,0xD2,0xB1, +0x4B,0x6F,0x74,0x37,0xC7,0x8F,0x83,0xFD,0xF0,0xFE,0xF7,0xD0,0x53,0x24,0x4E,0x62, +0xF0,0xBE,0xB2,0x07,0xF0,0x7F,0x10,0x3F,0x88,0x42,0x17,0xFC,0x6B,0x53,0xB1,0xD6, +0xC7,0xFB,0xF0,0xBD,0xD3,0x7F,0x1B,0x1F,0xCC,0xF2,0x10,0x3F,0x83,0xF8,0x3F,0x83, +0xF8,0x3F,0x83,0xF8,0x3F,0xFF,0xD8,0xFE,0x77,0x7F,0x9E,0x07,0xF1,0x08,0x42,0x11, +0xE0,0x7F,0x3A,0x3F,0xC1,0xFC,0x5F,0x53,0x89,0x90,0x05,0xFF,0x5E,0x6F,0xF6,0xDC, +0xB4,0xFC,0xD3,0xD3,0xF7,0xEC,0x1E,0x46,0x97,0x76,0xFA,0x54,0xFC,0xFB,0x07,0x97, +0xBC,0x98,0x8D,0x1F,0xFE,0xF6,0x8F,0xE1,0x8E,0x21,0x08,0x42,0xDA,0xF7,0x64,0xFA, +0x3A,0xAB,0xD2,0xC7,0xF7,0x3D,0x23,0xBE,0x2B,0x70,0x7F,0x07,0xFB,0xF1,0xFE,0x87, +0x23,0xB4,0xF4,0xF4,0xF4,0xD8,0x06,0x25,0xA6,0xA9,0xD4,0xDC,0xC5,0xCD,0xD6,0xEA, +0xE5,0x4D,0x27,0xCE,0x02,0x48,0x9E,0xE2,0x3F,0x70,0x81,0xFE,0xF4,0x7F,0x3C,0xCF, +0xE7,0x9F,0xFC,0x1F,0xF6,0xDE,0x0C,0x1F,0xF9,0xDD,0xE7,0xFF,0x3C,0x48,0x20,0xFE, +0x21,0x08,0x5F,0xEF,0xE7,0xEB,0x3A,0x3F,0xCE,0xA7,0xF0,0x7F,0x11,0xED,0xFF,0x3D, +0x86,0xFF,0x33,0xC7,0x17,0xF3,0x78,0x18,0xB9,0xB0,0x79,0x1A,0x5D,0xDB,0xE9,0x53, +0xF3,0xEC,0x07,0xBD,0xFC,0xD1,0xFC,0xD1,0xFC,0xE3,0xFC,0x31,0xC4,0x21,0x08,0x5F, +0xFC,0xA6,0xCD,0x9B,0x81,0xC0,0xE0,0x5E,0xA6,0x62,0x5A,0x6A,0x9D,0x4D,0xCC,0x5C, +0xDD,0x6E,0xAE,0x4F,0x49,0xF3,0x4D,0x24,0x4F,0x71,0x1F,0xB8,0x40,0xFE,0x0F,0xE0, +0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x21,0x08,0xD1,0xFC,0xD7,0xFC, +0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1, +0xFC,0x1F,0xCF,0x63,0xF8,0x84,0x21,0x08,0xF7,0xBF,0x9B,0xBF,0x83,0xF8,0x3F,0x83, +0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8, +0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F, +0x83,0xF8,0x3F,0xDF,0x8F,0xFD,0xDB,0x57,0xCA,0x6A,0xEE,0xE4,0x54,0x98,0xB9,0xBC, +0xAC,0x6D,0xED,0x24,0x7C,0x8F,0xFA,0x11,0xFE,0xF5,0xAB,0xB7,0xED,0xFB,0x7E,0xF3, +0xBC,0xEF,0x3B,0x6E,0xDB,0xB6,0xEE,0x1A,0x91,0x8F,0x78,0xD4,0xB4,0xD5,0x2B,0x15, +0xB4,0xBA,0xC7,0xDA,0xF6,0xBD,0xAA,0x34,0xEF,0x64,0x4A,0xC5,0xCD,0xF7,0x31,0xF5, +0x4E,0x8F,0xCA,0xDC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC, +0x1F,0xDD,0x4C,0xEB,0x9F,0x23,0xE7,0x6B,0xF9,0xA3,0xF9,0xAF,0xF8,0x3F,0x83,0xF8, +0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0xF9,0x63,0xFA, +0xC1,0xEE,0x23,0xEA,0xC5,0x70,0x7A,0xB7,0x5B,0xAB,0xA1,0xB2,0xE3,0xFD,0xCC,0x7E, +0x5F,0x0F,0x08,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F, +0x83,0xFF,0xDA,0x1F,0xFE,0x50,0x85,0xE9,0x2E,0xEC,0x42,0xF4,0x97,0x7C,0xD5,0xD8, +0xF6,0x3D,0x8A,0x7C,0xF5,0xDD,0x77,0x5D,0xD8,0xB5,0x77,0xD3,0xD3,0xA9,0xB9,0x8B, +0x9B,0xAD,0xD5,0xD6,0x35,0x62,0xE6,0xFB,0x98,0xFD,0xC2,0x07,0xFB,0xD1,0xFC,0xF3, +0x0F,0x9E,0x7F,0xF0,0x7F,0x01,0xF0,0x7F,0x07,0xF0,0x1F,0x07,0xF0,0x7F,0x01,0xF0, +0x7F,0x07,0xF0,0x1F,0xF3,0xC7,0xF3,0xCF,0xFE,0x7A,0x5F,0xC1,0xFC,0x1F,0xC1,0xFC, +0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFE,0xFC,0x7F,0xDD,0x18,0xA6,0x47,0x1C, +0x51,0x43,0x0A,0xD3,0xB7,0x62,0xE6,0xF2,0xB1,0xB7,0xB4,0x91,0xF2,0x3F,0xE8,0x47, +0xF1,0x36,0xD0,0xDC,0x44,0x8C,0x71,0x32,0x31,0x75,0xA7,0x11,0x46,0x0F,0x89,0x23, +0xFB,0x38,0xFE,0x22,0x8C,0x7E,0x56,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F, +0xE0,0xFE,0x0F,0xF7,0xE3,0xF9,0xD7,0x3E,0x47,0xC8,0xF9,0xA0,0xF9,0xAF,0xF8,0x3F, +0x80,0xF8,0x3F,0x83,0xF8,0x0F,0x83,0xF8,0x3F,0x80,0xF8,0x3F,0x83,0xF8,0x0F,0xF9, +0xE3,0xFE,0xE9,0x47,0xE6,0x91,0xBE,0xEE,0xDC,0x1C,0x4D,0x1B,0x7D,0x2E,0x0F,0xF7, +0x31,0xFC,0x4D,0x18,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83,0xF8,0x3F,0x83, +0xF8,0x3F,0x83,0xFF,0xDA,0x1F,0xDE,0x10,0xBD,0x25,0x27,0x2A,0x6E,0x53,0x36,0x94, +0xCB,0x79,0x6F,0xFF,0xDB,0x7E,0x26,0xDA,0xDF,0x89,0xA3,0x4E,0x8E,0xD1,0x3B,0xA6, +0xD2,0xC6,0x47,0xE8,0x47,0xF1,0x34,0x6C,0x74,0x69,0x83,0xFF,0x9C,0x3F,0x9E,0x67, +0xF3,0xCF,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F, +0xE0,0xFE,0x0F,0xF7,0xC3,0xF9,0xE7,0xFF,0x3D,0x2F,0xE0,0xFE,0x0F,0xE0,0xFE,0x0F, +0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFF,0x7E,0x3F,0xCB,0xEF,0x91,0x86,0x18,0x11, +0x3E,0xD4,0xB4,0xFD,0x1F,0x95,0xC8,0x2E,0xF9,0x7D,0xFA,0xA4,0x4E,0xF9,0xAA,0xAA, +0xA9,0x44,0xEF,0x99,0xB3,0x95,0x42,0xA9,0xB5,0x3B,0x35,0xB6,0xC4,0xEF,0xBF,0x69, +0x86,0xD9,0x86,0x36,0x2D,0xC1,0xFF,0xF9,0xC7,0xF9,0x8D,0xC5,0x71,0x3E,0xFA,0x71, +0xF3,0x1C,0x50,0xA6,0x2D,0x5A,0x74,0xCD,0xE4,0x2D,0x69,0xCC,0x6D,0x39,0x92,0x31, +0x73,0x75,0xBA,0xD3,0x34,0xAF,0x98,0xDF,0x95,0x62,0xBF,0x2A,0xC7,0x73,0x1F,0xA6, +0x93,0xE6,0x93,0x10,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xFB, +0xF1,0xFE,0x54,0x9D,0xB2,0xDF,0xCA,0xA3,0xBB,0xB7,0xC7,0xE2,0x37,0xF1,0x65,0x7B, +0x7C,0x7F,0x74,0xA1,0x91,0x5A,0xD4,0xFE,0x25,0x15,0xDD,0xBE,0x2F,0x11,0xBF,0xD9, +0xC7,0xF7,0x2A,0x62,0xE3,0xF3,0x47,0xF3,0x5F,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0xFE,0xC1,0xFE,0x38, +0xD9,0xEA,0xFD,0x9D,0xEB,0xD7,0xB9,0xA7,0x72,0xC4,0x8F,0x91,0xF2,0x3E,0x47,0xC8, +0xF9,0x1F,0x23,0xE4,0x7F,0xFD,0x23,0xF3,0x21,0x62,0x3A,0x9F,0xCE,0xBF,0xF0,0x7F, +0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0, +0x7F,0xBD,0x1F,0xD9,0xE9,0x83,0x86,0x18,0x20,0x6C,0x95,0xB4,0xFD,0x1F,0x98,0x27, +0x27,0xD5,0x41,0x0F,0xD2,0x5F,0xD1,0x8F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xEF,0x87, +0xFF,0xE4,0xC7,0xF6,0xF1,0xFB,0x76,0x37,0x58,0x3C,0xC7,0xE6,0x3F,0x31,0xFF,0x93, +0x8F,0xEE,0x9B,0xF9,0x98,0xFE,0xEB,0x01,0xD2,0x25,0xF6,0xC5,0x7E,0xDF,0x1F,0xFD, +0x1D,0x91,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xC1,0xFF,0xFB,0x87,0xF3, +0xBB,0xFC,0xF0,0x3F,0x83,0xF9,0xDA,0xFE,0x63,0xF3,0x1F,0x98,0xFC,0xF0,0x3F,0x9D, +0x1F,0xE0,0xFF,0xF6,0x07,0xF8,0xE2,0xFA,0x8B,0x6F,0x1F,0x8E,0x36,0x63,0xB9,0xDF, +0x3F,0x4F,0x01,0xC7,0x47,0xE7,0xFD,0x81,0xFF,0xF1,0x1F,0xED,0xE0,0xEC,0xE6,0x86, +0xAA,0xAA,0xD6,0x9D,0xB0,0x3F,0x1F,0xCE,0x0D,0xE3,0xBB,0xF9,0x0D,0xF2,0x3E,0x68, +0xFE,0x68,0xFE,0x68,0xFF,0x7E,0x3F,0xCB,0xE1,0xFF,0x29,0x94,0xFE,0xED,0x37,0x85, +0xE6,0xA5,0xF0,0x62,0x1F,0x27,0xC9,0xF2,0x7C,0xDE,0xFC,0xCC,0x5F,0x16,0x2B,0x76, +0x08,0x8E,0x28,0x59,0xB0,0xEB,0x69,0xD3,0x37,0x49,0xD5,0xA7,0x31,0xB4,0xE6,0x48, +0xC5,0xCD,0xD6,0xEB,0x4C,0xDF,0x1B,0x24,0xC6,0xFC,0xAB,0x15,0xF9,0x56,0x3B,0x98, +0xFD,0x34,0x9F,0x34,0x98,0x83,0xFD,0xE8,0xFE,0x79,0x9F,0xCF,0x3F,0xF8,0x3F,0xCB, +0xD8,0x2F,0xE8,0xFC,0xED,0xB8,0x3F,0xB9,0x0D,0xFF,0x8F,0x1F,0x83,0xFD,0xF0,0xFE, +0x7B,0xDF,0xCC,0x7E,0x63,0xF3,0x1F,0xDC,0x63,0xFB,0xA6,0xFE,0x66,0x3F,0x3A,0x3F, +0xCE,0xA7,0xFF,0xB6,0x3F,0x9E,0xDF,0xF3,0xDB,0xFE,0x7B,0x1F,0xC3,0x7C,0x8F,0x9A, +0x3F,0x9A,0x3F,0x9A,0x3F,0x83,0xFF,0xD8,0xF7,0xFB,0x94,0xCA,0x7F,0xE1,0x4F,0x81, +0x62,0x79,0x52,0xD3,0xC2,0x31,0x78,0x4C,0x55,0x4A,0xC7,0x0C,0xC5,0xB3,0x6F,0x79, +0x1F,0xAD,0x62,0xB5,0xA7,0xBD,0x31,0x78,0x4C,0x55,0x4A,0xC6,0xB9,0x89,0xED,0xF1, +0x8B,0xEB,0xC7,0xF1,0xEC,0x56,0xB4,0xF0,0xEC,0x5E,0x13,0x15,0x52,0xB1,0xB0,0x62, +0xD9,0xB7,0xBC,0x8F,0xAB,0x77,0x53,0xF5,0x6C,0x5E,0x13,0x15,0x54,0x98,0xBA,0x1B, +0xE3,0xC7,0xCE,0x3F,0xCE,0x3F,0xCE,0x3F,0xCE,0x3F,0xCE,0x3F,0xCE,0x3F,0xD4,0x97, +0xA4,0x51,0xD2,0x2D,0x65,0x62,0xBC,0x64,0xCA,0xDE,0xF2,0x3F,0x9E,0x62,0xB5,0xA6, +0xEE,0x5C,0x65,0x63,0x2F,0x32,0xAE,0x62,0xE8,0x6F,0x8F,0x1F,0x07,0xF0,0x7F,0x07, +0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF0,0x7F,0x07,0xF3,0xB5,0xFC,0xED,0x7F,0x3B,0x5F, +0xCE,0x3F,0xCE,0x3F,0xCE,0x3F,0xCD,0xDF,0xCE,0x8F,0xF0,0x7F,0x07,0xFF,0x3F,0xA9, +0xFD,0x76,0xD7,0x97,0x70,0xD7,0x37,0x97,0x71,0x99,0x5E,0xAE,0xE4,0xBE,0x4C,0x7D, +0xDB,0x80,0xCB,0xB8,0x6B,0x9B,0xCB,0xB8,0xCC,0xAF,0x71,0xAC,0x5F,0x5E,0x3E,0x0F, +0xE0,0xFE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFF,0x64,0xC5,0x39,0xBB,0xA9,0xBA,0xDE,0xAD, +0xE5,0x80,0xDB,0xBD,0xF1,0xE3,0xEE,0xE9,0x41,0x97,0xA5,0x35,0xCD,0xE5,0xE9,0xB9, +0x95,0xEF,0xF5,0x47,0xC1,0xFC,0x1F,0xC1,0xFC,0x42,0x14,0xEE,0xF4,0x1C,0x5D,0x66, +0x2F,0x81,0xE0,0x30,0x9B,0xBE,0x17,0x77,0xC2,0x6E,0xD3,0xBB,0xCA,0x79,0x8E,0x67, +0x98,0xCF,0x7E,0x1A,0xD3,0x57,0xAE,0xEF,0x41,0xB9,0xB7,0xCE,0xD1,0xCF,0x84,0xE1, +0x78,0x4C,0x6F,0x07,0x86,0xDE,0x37,0x9D,0xE3,0x0D,0x85,0x9D,0xA2,0xAE,0x8F,0xF1, +0xB4,0x76,0x5F,0x8A,0xB4,0xD5,0xED,0xAE,0x94,0x7E,0x1D,0xBE,0xF3,0x1F,0xE9,0x98, +0x9E,0xAD,0xE2,0x72,0x7C,0x4D,0x6E,0x47,0x7A,0xF5,0x5B,0xDF,0xAA,0xDE,0xBD,0x4A, +0xF4,0x67,0xE9,0xBD,0xDF,0xBC,0xF7,0x7A,0x6F,0xCB,0x5A,0x6A,0xF6,0x73,0x7F,0x12, +0xDE,0x0F,0xE0,0xFE,0x0F,0xE0,0xFF,0x7C,0x3F,0x9E,0x67,0xF3,0xCF,0xFE,0x0F,0xE7, +0xBD,0xFC,0xF7,0xBF,0x9E,0xF7,0xF3,0x8F,0xF3,0x8F,0xF3,0x8F,0xF3,0x77,0xF3,0xA3, +0xFC,0x1F,0xC1,0xFF,0xCF,0xEA,0x7F,0x3D,0x8F,0xE7,0xB7,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xEF,0x47,0xF3,0xDE,0xFF,0x7D,0xEF,0x7F,0x07,0xF0,0x7F,0x07,0xF1, +0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08, +0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42, +0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0xBE, +0x55,0x3F,0x2E,0xD1,0x54,0xC9,0xF3,0x49,0x8F,0xCB,0xDA,0x31,0xB7,0xB4,0x91,0xF2, +0x3E,0x47,0xC8,0xF9,0x1F,0x23,0xE4,0x7C,0x8F,0x91,0xF2,0x3E,0x47,0xC8,0xF9,0x1F, +0x23,0xE4,0x7C,0x8F,0x91,0xF2,0x3E,0x47,0xC8,0xF9,0x1F,0x23,0xE4,0x7C,0x8F,0x91, +0xF2,0x3E,0x47,0xC8,0xF9,0x1F,0xFF,0x28,0xFD,0x4F,0x87,0x1F,0xB9,0x7A,0x47,0xC8, +0xF9,0x1F,0x23,0xE4,0x7C,0x8F,0x91,0xF2,0x3E,0x47,0xC8,0xF9,0x1F,0xFB,0x71,0xF1, +0x08,0x4B,0xC8,0x8B,0xF2,0x7C,0xD4,0xED,0x29,0x96,0xF2,0xDE,0x5B,0xCB,0x79,0x6F, +0xFB,0x96,0xF3,0xCC,0x3E,0x47,0xC8,0xF9,0x1F,0x23,0xE4,0x7C,0x8F,0x91,0xF2,0x3E, +0x47,0xC8,0xF9,0x1F,0x23,0xF7,0xD1,0xF3,0xCF,0x3E,0x47,0xC8,0xF9,0x1F,0x23,0xE4, +0x7C,0x8F,0x91,0xF2,0x3E,0x47,0xC8,0xFD,0xFC,0x7D,0xE1,0x08,0x42,0x10,0x84,0x21, +0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08, +0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42, +0x10,0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0x85,0xE6,0xAA,0xEF,0x9C, +0xDE,0xBA,0xDA,0xD3,0x75,0x63,0xDC,0x47,0xEE,0x3E,0x41,0xFC,0x1F,0xC1,0xFC,0x1F, +0xC1,0xFC,0x1F,0xC1,0xFC,0x1F,0xEF,0xC7,0xF1,0x08,0x46,0x83,0xE6,0xBF,0xE0,0xFE, +0x03,0xE0,0xFE,0x0F,0xE0,0x3E,0x0F,0xE0,0xFE,0x03,0xE0,0xFE,0x0F,0xE0,0x3E,0x0F, +0xE0,0xFE,0x03,0xE0,0xFE,0x0F,0xE0,0x3E,0x0F,0xE0,0xFE,0x03,0xE0,0xFE,0x0F,0xE0, +0x3E,0x7B,0x1F,0xC4,0x21,0x08,0x47,0xBD,0xFC,0xDD,0xFC,0x07,0xC1,0xFC,0x1F,0xC0, +0x7C,0x1F,0xC1,0xFC,0x07,0xC1,0xFC,0x1F,0xC0,0x7C,0x1F,0xC1,0xFC,0x07,0xC1,0xFC, +0x1F,0xC0,0x7C,0x1F,0xC1,0xFC,0x07,0xC1,0xFC,0x1F,0xC0,0x7C,0x1F,0xC1,0xFC,0x07, +0xC1,0xFC,0x1F,0xF1,0xD9,0x9A,0xFC,0x28,0x00,}; diff --git a/MCUME_esp32/espsnd/ym2h/jess2.ym b/MCUME_esp32/espsnd/ym2h/jess2.ym new file mode 100755 index 0000000..3b1168b Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/jess2.ym differ diff --git a/MCUME_esp32/espsnd/ym2h/loader.fc4 b/MCUME_esp32/espsnd/ym2h/loader.fc4 new file mode 100755 index 0000000..9922121 Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/loader.fc4 differ diff --git a/MCUME_esp32/espsnd/ym2h/loader.h b/MCUME_esp32/espsnd/ym2h/loader.h new file mode 100644 index 0000000..d162b5e --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/loader.h @@ -0,0 +1,586 @@ +const unsigned char musym[9356] = { +0x46,0x43,0x31,0x34,0x00,0x00,0x02,0xF2,0x00,0x00,0x03,0xA6,0x00,0x00,0x0A,0x40, +0x00,0x00,0x0D,0xE6,0x00,0x00,0x03,0x80,0x00,0x00,0x11,0x66,0x00,0x00,0x02,0xC0, +0x00,0x00,0x14,0x26,0x00,0x00,0x1F,0x4C,0x05,0x92,0x00,0x00,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x08,0x10,0x10, +0x08,0x08,0x10,0x08,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,0x01,0x00,0x00,0x02,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x00, +0x03,0x01,0xFE,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC, +0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x02,0x00, +0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x00,0x05,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0xFC,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x00,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02, +0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFE,0x00,0x02,0x00,0x00,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00, +0x00,0x00,0x00,0x03,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x0B,0x00,0x00,0x00,0x08,0x00,0x00, +0x0A,0x00,0x00,0x05,0x0C,0x00,0x0C,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00, +0x05,0x0C,0x00,0x0D,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00, +0x0E,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x0B,0x00,0x00, +0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00,0x0C,0x00,0x00,0x00,0x07,0x00, +0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x0D,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00, +0x00,0x06,0x0C,0x00,0x0E,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C, +0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00,0x10,0x00, +0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x11,0x00,0x00,0x00,0x08, +0x00,0x00,0x0A,0x00,0x00,0x05,0x0C,0x00,0x12,0x00,0x00,0x00,0x07,0x00,0x00,0x09, +0x00,0x00,0x05,0x0C,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x05, +0x0C,0x00,0x10,0x00,0x00,0x00,0x07,0x00,0x00,0x09,0x00,0x00,0x05,0x0C,0x00,0x11, +0x00,0x00,0x00,0x08,0x00,0x00,0x0A,0x00,0x00,0x06,0x0C,0x00,0x12,0x00,0x00,0x00, +0x01,0x00,0x00,0x15,0x00,0x00,0x05,0x0C,0x00,0x02,0x00,0x00,0x00,0x01,0xFE,0x00, +0x00,0x00,0x00,0x05,0x0C,0x00,0x02,0x00,0x00,0x00,0x01,0xFC,0x00,0x15,0x07,0x00, +0x05,0x0C,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x15,0x05,0x00,0x06,0x0C,0x00, +0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x15,0x03,0x00,0x00,0x00,0x00,0x02,0x00,0x00, +0x00,0x01,0xFE,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0xFC, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x15,0xFE, +0x00,0x04,0x00,0x00,0x02,0x00,0x00,0x00,0x16,0x00,0x00,0x15,0x00,0x00,0x13,0x00, +0x00,0x09,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x0A,0x00, +0x00,0x00,0x16,0x00,0x00,0x15,0x07,0x00,0x13,0x00,0x00,0x09,0x00,0x00,0x00,0x17, +0x00,0x00,0x15,0x05,0x00,0x13,0x00,0x00,0x0A,0x00,0x00,0x00,0x16,0x00,0x00,0x09, +0x00,0x00,0x13,0x00,0x00,0x11,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x14, +0x00,0x00,0x12,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x18, +0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00,0x19,0x00,0x00,0x00, +0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x00, +0x0A,0x00,0x00,0x13,0x00,0x00,0x21,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00, +0x13,0x00,0x00,0x22,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00, +0x23,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x24,0x00,0x00, +0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00, +0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x18,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00, +0x00,0x13,0x00,0x00,0x19,0x00,0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00, +0x00,0x20,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00,0x21,0x00, +0x00,0x00,0x16,0x00,0x00,0x09,0x00,0x00,0x13,0x00,0x00,0x22,0x00,0x00,0x00,0x17, +0x00,0x00,0x0A,0x00,0x00,0x13,0x00,0x00,0x23,0x00,0x00,0x00,0x16,0x00,0x00,0x09, +0x00,0x00,0x13,0x00,0x00,0x24,0x00,0x00,0x00,0x17,0x00,0x00,0x0A,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,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,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x01,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,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,0x22,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x20,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x20,0x06,0x00,0x00,0x01,0x01,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,0x44,0x01,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,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,0x11,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x16,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x16,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x46,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x1E,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x1E,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x1E,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x1E,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x25,0x06,0x00,0x00,0x22,0x06, +0x00,0x00,0x25,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x22,0x06,0x00,0x00,0x20,0x06, +0x00,0x00,0x22,0x06,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x24,0x01,0x00,0x00,0x25,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x25,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0x06,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,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,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x01, +0x00,0x00,0x2E,0x01,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,0x00,0x00,0x1E,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01, +0x00,0x00,0x25,0x01,0x00,0x00,0x1E,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01, +0x00,0x00,0x25,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01,0x00,0x00,0x25,0x01, +0x00,0x00,0x27,0x01,0x00,0x00,0x22,0x01,0x00,0x00,0x25,0x01,0x00,0x00,0x27,0x01, +0x00,0x00,0x29,0x01,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x22,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x22,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x22,0x07,0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x07, +0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x03,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x11,0x04, +0x00,0x00,0x11,0x04,0x00,0x00,0x22,0x0A,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,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,0x46,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x05,0x00,0x00,0x46,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x46,0x05,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x05,0x00,0x00,0x42,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x42,0x05,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x05,0x00,0x00,0x01,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x05,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x05, +0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0x00,0x00,0x44,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x44,0x05,0x00,0x00,0x16,0x01,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,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,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,0x16,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x1D,0x06, +0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x1D,0x06, +0x1D,0x06,0x1D,0x06,0x1B,0x06,0x1D,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,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,0x05,0x02,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x11,0x02,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x02, +0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x05,0x02,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x02,0x00,0x00,0x1D,0x00,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1D,0x06,0x00,0x00,0x1B,0x06,0x1D,0x06,0x1D,0x06,0x1D,0x06,0x1D,0x06, +0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00, +0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00, +0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1B,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1B,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x1B,0x06,0x00,0x00,0x1D,0x06,0x00,0x00,0x20,0x06,0x00,0x00,0x1D,0x06, +0x00,0x00,0x20,0x06,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x1B,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x01,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,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,0x1D,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x1E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x01,0x00,0x00,0x20,0x01,0x00,0x00,0x22,0x01, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x01, +0x00,0x00,0x29,0x01,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,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x01, +0x00,0x00,0x2C,0x01,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,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,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,0x00,0x00,0x2E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x2D,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x01, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x29,0x00,0x03,0x07,0x0C,0xE0,0x02,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,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x28, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x26, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x24, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x22, +0x00,0x00,0x00,0x00,0xE7,0x02,0xE4,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x20, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1E, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1C, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1A, +0x00,0x00,0x00,0x00,0xE7,0x03,0xE4,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1B, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1D, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x1F, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x21, +0x00,0x00,0x00,0x00,0xE7,0x04,0xE4,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x23, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x25, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x27, +0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x29, +0x00,0x00,0x00,0x00,0xE7,0x01,0xE2,0x21,0x00,0xE1,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,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,0xE2,0x00,0xA0,0xE4,0x22,0x90,0xE1,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,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,0xE2,0x00,0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0, +0x9F,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x20,0x00,0xE4,0x1B,0x00,0xE4,0x1B,0x00,0xE0, +0x03,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0x00,0xB5,0xE2,0x29,0x00,0xE1,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,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,0xE2,0x21,0x00,0x03,0x07,0xE0,0x02,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,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,0xE2,0x21,0x00,0x04,0x07,0xE0,0x02,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,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,0xE2,0x21,0x00,0x05,0x09,0xE0,0x02,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,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,0xE2,0x1F,0x00,0xE1,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,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,0x01,0x00,0x00,0x00,0x00,0x20,0x28,0x30,0x34,0x38, +0x3C,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x0A,0x3F,0x3A,0x30,0xE1,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,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x01,0x01,0x04,0x3F,0x38,0x30,0x28,0x20, +0x18,0x08,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,0x00,0x30,0x3F,0x3F,0x00,0x00, +0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x00,0x00,0x00,0x3F,0xE1,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,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,0x01,0x08,0x01,0x02,0x00,0x3F,0x30,0xE1,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,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x09,0x01,0x01,0x00,0x20,0x30,0x28,0x20,0x18, +0x10,0x00,0xE1,0x08,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0A,0x01,0x01,0x00,0x30,0x2C,0x28,0x24,0x20, +0x1C,0x18,0x14,0x10,0x0C,0x08,0x04,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0B,0x01,0x01,0x00,0x30,0x2C,0x28,0x24,0x20, +0x1C,0x18,0x14,0x10,0x0C,0x08,0x04,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0C,0x01,0x01,0x00,0x30,0x2C,0x28,0x24,0x20, +0x1C,0x18,0x14,0x10,0x0C,0x08,0x04,0x00,0xE1,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0D,0x01,0x02,0x0A,0x00,0x04,0x08,0x0C,0x10, +0x14,0x18,0x1C,0x20,0x24,0x28,0x2C,0x30,0x2F,0x2D,0x2C,0x2B,0x2A,0x29,0x28,0x27, +0x26,0x25,0x24,0x23,0x22,0x21,0x20,0xE1,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,0xF8,0xFB,0xF7,0xF5,0xF6,0xF6,0xF6,0xF3, +0xEF,0xF1,0xF4,0xEF,0xED,0xEC,0xF0,0xEF,0xEB,0xE8,0xE9,0xE6,0xDD,0xD9,0xE1,0xF1, +0xFB,0xFB,0xE4,0xCC,0xB8,0xB7,0xCF,0xF3,0x00,0xD0,0x80,0x80,0x80,0x9F,0x2F,0x6B, +0x58,0x08,0x98,0x80,0x83,0xBF,0xEB,0xF7,0x17,0x37,0x39,0x00,0x90,0x80,0x80,0xDF, +0x7F,0x75,0x74,0x40,0x80,0x80,0x8F,0x7F,0x78,0x74,0x60,0xD0,0x80,0x83,0xD7,0x37, +0x5F,0x55,0x38,0x00,0xA0,0x80,0x80,0x80,0xCF,0xF5,0xC0,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x83,0xB7,0xB6,0xA3,0xAF,0xDF,0x17,0x4F,0x64,0x66,0x71, +0x70,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6E,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D, +0x6D,0x6D,0x6D,0x6D,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6B,0x6B,0x6B,0x6B,0x58, +0x67,0x6D,0x6B,0x6A,0x6A,0x30,0xD0,0x99,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x9F,0xFF,0x37,0x28,0x04,0x13,0x6F,0x7A, +0x72,0x6D,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6A,0x6A,0x6A,0x69,0x69,0x69,0x6A,0x69, +0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x68,0x68,0x68,0x28,0x00,0xF0, +0xE0,0xB0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x97,0xDB, +0x0D,0x27,0x33,0x54,0x48,0x10,0x0F,0x7F,0x79,0x72,0x6E,0x6C,0x6B,0x6B,0x6B,0x6B, +0x6B,0x6B,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x6A,0x69,0x69,0x69,0x69, +0x69,0x69,0x69,0x69,0x69,0x69,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0xBF,0x17,0x08,0xC0,0x80,0x80,0x80,0x9F,0x3F,0x7F,0x7F,0x7B, +0x74,0x70,0x59,0x71,0x6E,0x6D,0x6C,0x6C,0x6B,0x6B,0x6B,0x4B,0x70,0x6D,0x6C,0x6B, +0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6B,0x6A,0x6A,0x58,0x4B,0x6F,0x6D,0x6B, +0x30,0xF6,0xB0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0xEF,0x18,0xD0,0x9C,0x98,0x9F,0xCF,0x5F,0x7F,0x7F,0x60,0x00,0x80,0x8F, +0x2F,0x7F,0x7E,0x76,0x71,0x40,0xEF,0x7F,0x77,0x71,0x6F,0x6D,0x6D,0x60,0x6E,0x6D, +0x6C,0x6C,0x6C,0x6B,0x6B,0x69,0x6C,0x6C,0x6B,0x6B,0x6B,0x28,0xCB,0x1F,0x7C,0x74, +0x00,0x80,0x80,0x87,0xD3,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA7,0xA0,0x80, +0x80,0x9F,0x84,0x80,0x80,0x8F,0xA0,0x80,0x8F,0x5F,0x7F,0x40,0x80,0x80,0x87,0x5F, +0x7F,0x7F,0x78,0x73,0x48,0xC0,0x80,0xBF,0x7F,0x7E,0x76,0x70,0x28,0x4B,0x44,0x47, +0x77,0x71,0x6F,0x6D,0x40,0xC4,0xF7,0x7F,0x75,0x70,0x6E,0x10,0xCF,0x6F,0x76,0x71, +0x68,0x3D,0x6F,0x70,0x6D,0x40,0xA0,0x87,0xDF,0x37,0x54,0x24,0xC0,0x80,0x80,0x80, +0x9F,0xCF,0xA8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xD3,0xA4, +0x80,0x80,0x80,0xDF,0x6B,0x68,0x28,0x80,0x80,0x80,0xBF,0x7F,0x7F,0x60,0xE0,0x80, +0x80,0xFF,0x7F,0x7C,0x75,0x71,0x6F,0x30,0x90,0x9F,0x5F,0x7D,0x75,0x71,0x28,0x0B, +0x5B,0x76,0x71,0x6F,0x6E,0x6D,0x4C,0x37,0x75,0x71,0x6E,0x6D,0x28,0xDD,0x3F,0x78, +0x72,0x6F,0x6D,0x20,0xB0,0xDF,0x6F,0x78,0x72,0x48,0x00,0xC0,0x90,0x80,0x83,0xD7, +0x0C,0xE0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x8F,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0xD7,0x24,0xC0,0x80,0x80,0x80,0xF7,0x7F,0x50,0xF0,0x80,0x80,0x97,0x3F, +0x7F,0x64,0xE0,0x80,0x80,0x8F,0x7F,0x7F,0x7A,0x20,0x80,0x87,0xFF,0x37,0x7F,0x78, +0x73,0x40,0x90,0x80,0xF7,0x7F,0x7A,0x74,0x48,0xD0,0x80,0xF7,0x7F,0x78,0x72,0x40, +0x80,0x80,0x3F,0x7F,0x78,0x72,0x20,0xA4,0xF7,0x7F,0x76,0x58,0x20,0x33,0x5B,0x76, +0x70,0x5C,0x71,0x6F,0x40,0xC0,0x87,0xEF,0x5B,0x6A,0x50,0x00,0xA0,0x80,0x80,0x9F, +0x1F,0x7A,0x50,0xA0,0x80,0x80,0x80,0xD7,0xF0,0x80,0x80,0x80,0x80,0xB7,0x88,0x80, +0x80,0x80,0x80,0x80,0xBF,0x1F,0xF0,0x80,0x80,0x80,0x80,0xFF,0x6A,0x30,0xC0,0x80, +0x80,0x80,0x80,0x7F,0x7F,0x7C,0xE0,0x80,0x80,0x80,0x3F,0x7F,0x7A,0x00,0x80,0x80, +0x80,0xF7,0x7F,0x7C,0x60,0x80,0x80,0x8F,0x3F,0x7E,0x7A,0x70,0x50,0xE0,0x80,0x83, +0x5F,0x7F,0x76,0x20,0xC0,0xBF,0xFF,0x7F,0x68,0x63,0x64,0x44,0x00,0x1F,0x77,0x74, +0x40,0xA0,0x8F,0x7F,0x7C,0x74,0x20,0x80,0x9F,0x5F,0x7C,0x74,0x48,0x27,0x6D,0x74, +0x40,0x88,0x80,0xFF,0x7F,0x76,0x68,0xA0,0x80,0xFF,0x7F,0x60,0x08,0xE0,0xC6,0xBB, +0xEF,0x4B,0x79,0x50,0xC0,0x80,0x80,0xAF,0xFF,0x1A,0x00,0xCA,0xAF,0xBB,0xC8,0xAA, +0x8C,0x80,0x80,0xBF,0xFF,0xC0,0x80,0x80,0x80,0x97,0xEF,0xE0,0x80,0x80,0x80,0x80, +0x83,0xFF,0x30,0xA0,0x80,0x80,0x80,0xBF,0xA8,0x80,0x80,0x80,0xBF,0x12,0xC0,0x80, +0x85,0x9F,0xB8,0xBD,0xA0,0x80,0x80,0x8F,0xDF,0x37,0x40,0xC0,0x80,0x80,0x8F,0x2F, +0x6D,0x58,0x00,0xC6,0xE9,0xA0,0x80,0x8F,0x2F,0x7F,0x68,0x20,0xC0,0x8F,0xFF,0x08, +0xEF,0x5F,0x74,0x4A,0x08,0xCD,0xFF,0x5B,0x7C,0x68,0xE0,0x80,0x80,0xFF,0x7F,0x79, +0x40,0x80,0x80,0xFF,0x7F,0x74,0x10,0xEF,0x37,0x7F,0x74,0x20,0x80,0x80,0x81,0x7F, +0x7F,0x78,0x00,0x80,0x83,0x7F,0x7E,0x50,0xC4,0xEF,0x6F,0x78,0x48,0x80,0x80,0x87, +0x5F,0x7F,0x70,0x00,0x88,0x87,0xFF,0x7F,0x78,0x30,0x80,0x80,0x80,0x3F,0x7F,0x78, +0x50,0x80,0x80,0x80,0xFF,0x7F,0x7A,0x40,0x80,0x80,0x80,0x9F,0x27,0x6B,0x68,0x20, +0x80,0x80,0x80,0xE7,0x00,0xEB,0x1F,0x30,0xC0,0x80,0x80,0x80,0xDF,0x47,0x30,0xC0, +0x80,0x80,0x80,0xF7,0x7F,0x78,0xF0,0x80,0x80,0x80,0xFF,0x4F,0x28,0xF6,0xA8,0x80, +0x80,0x80,0xF7,0x6C,0x30,0xA0,0x9F,0x2F,0x20,0x80,0x80,0x80,0xFF,0x7F,0x78,0xC0, +0x80,0x80,0x80,0x9F,0x7F,0x7F,0x70,0x20,0xA8,0x80,0x80,0x9F,0xF7,0x7F,0x70,0xC0, +0x80,0xF7,0x30,0xF4,0x81,0xDF,0x7F,0x7A,0x40,0x80,0x80,0xFF,0x7F,0x79,0x40,0x80, +0x80,0x80,0xBF,0x7F,0x7E,0x77,0x00,0x80,0x80,0xBF,0x7F,0x7D,0x70,0x80,0x80,0xCF, +0x77,0x70,0x30,0xE0,0xCB,0x1F,0x75,0x50,0x00,0x8D,0xF7,0x4C,0x10,0xAD,0x2F,0x7F, +0x60,0xC0,0x80,0xBF,0xE2,0xBA,0xDF,0x7F,0x7C,0x60,0x80,0x80,0x80,0xDF,0x7F,0x7E, +0x77,0x40,0xA0,0x80,0x80,0xBF,0x7F,0x7F,0x78,0x00,0x80,0x80,0xAF,0xE4,0xD7,0x37, +0x7F,0x28,0x80,0x80,0x8F,0x3F,0x49,0x28,0xB0,0x80,0x87,0xFF,0x7F,0x60,0xA0,0x80, +0x9F,0xDF,0xC0,0x80,0xAF,0xFF,0x2B,0x00,0xB0,0x9A,0x80,0x80,0xD7,0x27,0x11,0xD0, +0x90,0x87,0xCF,0xC0,0x80,0x80,0xBF,0x1F,0x2C,0x00,0x88,0x80,0x80,0x80,0x80,0xF7, +0x7F,0x60,0xC8,0x80,0x80,0x80,0xF7,0x00,0x80,0x81,0x7F,0x7C,0xF0,0x80,0x80,0xFF, +0x7F,0x7C,0x00,0x80,0x80,0x8F,0xEF,0x2F,0x20,0xC0,0x97,0xD7,0x10,0x90,0x80,0xF7, +0x7F,0x78,0x48,0x25,0xF0,0x80,0x80,0x80,0xFF,0x7F,0x7C,0x20,0x80,0x80,0x8F,0x7F, +0x7F,0x79,0x00,0xB7,0xD8,0x84,0x8F,0xCF,0x4F,0x60,0x20,0x1F,0x00,0xA8,0xBB,0x3F, +0x7F,0x58,0xF0,0xC2,0xD9,0xD7,0x1F,0x7F,0x7B,0x50,0x80,0x80,0x9F,0x7F,0x7D,0x76, +0x80,0x80,0x80,0xFF,0x7F,0x7D,0x60,0xA0,0x80,0x80,0xBF,0x4F,0x58,0x43,0x20,0x80, +0x80,0xDF,0x7F,0x7C,0x00,0x80,0x80,0x6F,0x7F,0x60,0x80,0x80,0xBF,0xC0,0x93,0xEF, +0x7F,0x68,0xC0,0x80,0xDF,0x7F,0x7E,0x00,0x80,0x81,0x7F,0x7E,0x00,0x80,0x80,0xD7, +0xF5,0x07,0x2C,0x08,0xD7,0x37,0x7F,0x60,0xC0,0x80,0x80,0x9F,0x7F,0x7F,0x40,0x80, +0x80,0x80,0xBF,0x4F,0x7F,0x7C,0x50,0xA0,0x80,0x87,0xE7,0x07,0x1F,0x5F,0x68,0x20, +0x80,0x80,0x80,0xFF,0x7F,0x7D,0x00,0x80,0x80,0xFF,0x7F,0x70,0x80,0x80,0x80,0x8F, +0x87,0xAF,0x3F,0x7F,0x70,0xE0,0x80,0x80,0xBF,0x4F,0x7F,0x7C,0x48,0x80,0x80,0x80, +0xBF,0x7F,0x7F,0x50,0x90,0x80,0x80,0xBF,0x5F,0x78,0x40,0xA0,0x80,0xBF,0x07,0xE0, +0x80,0xAF,0x3F,0x6C,0x30,0xE8,0xFF,0x00,0xB0,0x97,0xFF,0x7F,0x60,0xA0,0x80,0xF7, +0x7F,0x40,0xC0,0xD7,0x5F,0x48,0xA0,0x9F,0x2F,0x7F,0x7C,0x00,0x92,0x9F,0xCF,0xEF, +0x57,0x7F,0x78,0xC0,0x80,0x81,0x7F,0x7F,0x7B,0x20,0x80,0xFF,0x7F,0x78,0xE0,0x80, +0xDF,0x1F,0x64,0x66,0x28,0xC0,0x80,0xDF,0x7F,0x70,0x10,0x80,0x80,0xFF,0x68,0x30, +0xC8,0xA3,0xF7,0x7F,0x7C,0x00,0x80,0x80,0xF7,0x76,0x50,0x6F,0x70,0x00,0x80,0x80, +0x80,0x5F,0x7F,0x60,0xF0,0x80,0xB7,0x5F,0x78,0xC0,0x80,0x83,0x7F,0x7F,0x00,0x80, +0x80,0xFF,0x7F,0x20,0x80,0x80,0x37,0x7F,0x40,0x90,0x80,0xBF,0x29,0xE0,0x80,0x81, +0xEF,0x5F,0x4A,0x10,0x80,0x80,0xFF,0x54,0x10,0xBB,0xBF,0xA0,0x80,0x80,0x9F,0xFF, +0x58,0x00,0x80,0x80,0xFF,0x7F,0x60,0x00,0xA8,0x80,0x80,0xBF,0x2F,0x6C,0x20,0x80, +0x87,0xDF,0xB0,0x80,0x80,0x7F,0x7F,0x70,0xC0,0x80,0x80,0x80,0x80,0xFF,0x7F,0x7E, +0x00,0x80,0x80,0xFF,0x7F,0x40,0x80,0x83,0x7F,0x7F,0x40,0xA0,0x80,0x80,0xBF,0x5F, +0x7F,0x7D,0x60,0xA0,0x80,0x80,0xFF,0x7F,0x7E,0x00,0x80,0x80,0x1F,0x58,0x00,0xC0, +0xBF,0xFF,0x7F,0x70,0x20,0x0E,0xC0,0x9B,0xF7,0x7F,0x70,0xE0,0x80,0x87,0x3F,0x7F, +0x7C,0x00,0x80,0x80,0xD7,0x3F,0x70,0x40,0x00,0xEF,0x1F,0x02,0x1F,0x18,0xE8,0xE7, +0xE7,0x07,0x3D,0x38,0x00,0x90,0x87,0xFF,0x6E,0x40,0xA0,0x80,0xFF,0x7B,0x6A,0x5C, +0x40,0x10,0x80,0x80,0x3F,0x7F,0x70,0xD0,0x80,0xBF,0x2F,0x20,0xC0,0x3F,0x7F,0x7B, +0xE0,0x80,0x80,0x3F,0x7F,0x7D,0xE0,0x80,0x80,0xB7,0x37,0x7F,0x60,0xE0,0x9F,0x3F, +0x52,0x00,0x80,0x83,0xFF,0x6F,0x7F,0x40,0x90,0x80,0x80,0x83,0xF7,0x5F,0x68,0x40, +0xF0,0xA0,0x9F,0xF7,0x0C,0xE0,0xA0,0x80,0xDF,0x7F,0x7F,0x20,0x80,0x80,0x80,0x5F, +0x7F,0x7E,0x20,0x80,0x80,0x80,0xAF,0x4F,0x7F,0x44,0xC0,0x80,0x80,0x80,0xCF,0x57, +0x58,0xF0,0x88,0x97,0x2F,0x30,0xC0,0xC8,0xBD,0xF7,0x1B,0x11,0x00,0xA0,0x80,0x9F, +0x3F,0x68,0x20,0xD1,0xE0,0xD0,0xC0,0xCF,0xF3,0xFD,0x10,0xE8,0xC0,0x80,0xB7,0x1F, +0x5E,0x20,0xB0,0xCF,0x18,0xB0,0x80,0xA7,0xEF,0x4F,0x72,0x50,0x00,0x80,0x80,0x80, +0xBF,0x7F,0x7F,0x78,0xF0,0x80,0x80,0x9F,0xFF,0x18,0x37,0x65,0x40,0xE0,0xB5,0x89, +0x8F,0x88,0xBF,0x6F,0x7F,0x7E,0x00,0x80,0x80,0x87,0x7F,0x7F,0x7E,0x40,0x80,0x80, +0x80,0x5F,0x7F,0x7F,0x40,0xC4,0x98,0x80,0x8B,0xF7,0x7B,0x7E,0x40,0xA0,0x97,0xCF, +0x2D,0x18,0xEB,0xF7,0x0A,0xF4,0xC0,0xCF,0x2B,0x50,0x20,0xED,0x17,0x08,0xC0,0xCF, +0x37,0x48,0x18,0xE8,0xC5,0xDF,0x0A,0x01,0xE0,0xEF,0x3F,0x6C,0x20,0x84,0x80,0xDF, +0x5F,0x74,0x40,0xC0,0x80,0x97,0x3F,0x7F,0x74,0x00,0x80,0x80,0xBF,0x7F,0x7F,0x30, +0x80,0x8F,0xF7,0x3F,0x00,0xA0,0x81,0xAF,0x5F,0x7F,0x50,0xE0,0x80,0x80,0x87,0xFF, +0x7F,0x50,0x80,0x80,0x9F,0xFF,0x32,0x10,0xFF,0x35,0x10,0x00,0xE0,0xB0,0x9F,0xBF, +0xFF,0x48,0x00,0xA0,0x80,0xBF,0x4F,0x78,0x60,0x00,0x80,0x87,0xDF,0x4F,0x60,0x00, +0x80,0x80,0xAF,0xE7,0x0B,0x08,0xE0,0xBA,0xCF,0x2F,0x6B,0x50,0xC0,0x80,0x87,0xFF, +0x44,0x00,0x98,0xBB,0xF7,0xF8,0xA8,0x9B,0xEF,0x3F,0x5B,0x66,0x30,0x80,0x80,0x80, +0xF7,0x7F,0x7C,0x40,0xD0,0x88,0x80,0x8F,0x1F,0x7F,0x78,0x30,0x80,0x80,0xCF,0x1F, +0x0D,0x1F,0x46,0x32,0xE0,0x95,0xB7,0xFF,0x47,0x5F,0x40,0xF0,0xA0,0x80,0xAF,0x1F, +0x71,0x40,0xF4,0xD0,0xDB,0xDB,0xDF,0xFF,0x3F,0x48,0x00,0x98,0xAF,0x3F,0x79,0x48, +0xD0,0x80,0x80,0xD7,0x5F,0x7C,0x60,0x00,0x96,0xBF,0x17,0x18,0xF6,0xDA,0xEB,0x3F, +0x62,0x20,0xB0,0x8B,0xDF,0x1F,0x10,0xF0,0xE7,0x1F,0x44,0x20,0xD0,0xB7,0xDF,0x00, +0xEC,0xFF,0x3F,0x30,0x00,0xE2,0xC0,0x91,0xBF,0x2F,0x7F,0x60,0xC0,0x80,0x80,0xF7, +0x73,0x70,0x40,0xF0,0xC0,0x90,0x9D,0xDF,0x37,0x60,0x28,0xC8,0x82,0x8F,0xCA,0xD9, +0xF7,0x2F,0x46,0x10,0x90,0x80,0xEF,0x7F,0x78,0x00,0x80,0x80,0xF7,0x7F,0x70,0x00, +0x80,0x80,0x8F,0x3F,0x7F,0x7F,0x00,0x80,0x80,0xBF,0x5F,0x7F,0x60,0xF0,0x80,0x80, +0xAF,0x2F,0x74,0x60,0x10,0xC8,0xAC,0xB3,0xB7,0xCF,0x3F,0x7F,0x70,0xE0,0x80,0x80, +0x9F,0x7F,0x7F,0x7F,0x00,0x80,0x80,0x80,0xFF,0x7F,0x7E,0x40,0xA0,0x80,0x87,0xFF, +0x72,0x40,0xE0,0xBB,0xD7,0x0F,0x2B,0x04,0xA0,0x80,0xBF,0x27,0x5B,0x40,0xF0,0xB0, +0xAF,0xF3,0x01,0xF6,0xD4,0xC7,0xFF,0x38,0x10,0xC8,0x88,0x9F,0xF7,0x6F,0x78,0x40, +0xA0,0x80,0x97,0xFF,0x76,0x60,0x00,0x98,0xAB,0xFF,0x4F,0x28,0xC4,0xAF,0xF7,0x4F, +0x64,0x20,0xA0,0x80,0xCF,0x3F,0x71,0x40,0xC0,0x87,0xBF,0x1F,0x67,0x5C,0x28,0xD0, +0xA3,0xB7,0xEB,0x1F,0x19,0x0B,0x13,0x24,0x08,0xC8,0x98,0xAF,0xFF,0x5F,0x62,0x24, +0xD0,0xCB,0xDF,0xF5,0x1F,0x2C,0x00,0xB0,0x9D,0xD7,0x0F,0x47,0x44,0x00,0xA0,0x8F, +0xBF,0x0F,0x4B,0x4C,0x20,0xE0,0xDA,0xE7,0xDF,0xEF,0x00,0x17,0x12,0xD8,0xA8,0xB3, +0xEF,0x37,0x54,0x20,0xC0,0x8F,0xBF,0x37,0x73,0x68,0x20,0xA4,0x8B,0xAB,0xCF,0x1F, +0x5F,0x60,0x28,0xC0,0x98,0xBF,0xFF,0x35,0x24,0x14,0x0C,0xEB,0xD6,0xD3,0x0F,0x4B, +0x4A,0x00,0x90,0x80,0xBF,0x5F,0x7F,0x60,0xE0,0x80,0x80,0xB7,0x1F,0x67,0x5A,0x20, +0xC0,0x8F,0xB7,0xF7,0x24,0x20,0x04,0xF6,0xF6,0xE0,0xC4,0xBD,0xEB,0x14,0x14,0xF6, +0xE1,0xE2,0xF7,0x1B,0x24,0x00,0xD0,0xB6,0xBF,0xF6,0x27,0x3D,0x20,0xD8,0xA4,0xCF, +0x17,0x43,0x40,0x08,0xD0,0xBF,0xD3,0xF6,0x27,0x29,0x00,0xB4,0xAD,0xDF,0x1F,0x3E, +0x24,0x00,0xEB,0xE3,0xD4,0xCF,0xEF,0x1F,0x3A,0x28,0xF0,0xB4,0xBF,0xF6,0x33,0x41, +0x20,0xE0,0xB0,0xAB,0xEF,0x3F,0x5C,0x20,0xB0,0x83,0xBF,0x1F,0x57,0x30,0xD8,0xB0, +0xBF,0xDB,0xF6,0x1B,0x39,0x28,0xE0,0xA8,0xB7,0xDF,0xF7,0x17,0x2E,0x32,0x04,0xB4, +0x98,0xBF,0x1F,0x73,0x60,0x00,0x80,0x80,0xAF,0x3F,0x7F,0x70,0x20,0xA0,0x80,0x8F, +0xF7,0x7B,0x7E,0x40,0xC0,0x80,0x8B,0xD7,0x3F,0x67,0x50,0x10,0xD8,0xC5,0xCF,0xE3, +0xFF,0x1B,0x21,0x18,0x04,0xD8,0xB6,0xBF,0xFF,0x4B,0x52,0x20,0xD0,0xAA,0xBF,0xFF, +0x5F,0x64,0x20,0xB0,0x80,0xAF,0xFF,0x3F,0x28,0x00,0xE8,0xEA,0xE3,0xDF,0xEB,0x0F, +0x19,0x08,0xF6,0xEE,0xF7,0x05,0xF6,0xD4,0xC1,0xC7,0xDF,0x0F,0x29,0x27,0x1D,0x04, +0xF0,0xD0,0xC7,0xEB,0x0E,0x1A,0x10,0xF9,0xF0,0xF0,0xF7,0x07,0x00,0x00,0x00,0xFF, +0x17,0x27,0x20,0x00,0xEF,0xF9,0x00,0xF1,0xED,0xF3,0x0F,0x2B,0x20,0xF8,0xE0,0xE1, +0xF3,0x1B,0x37,0x28,0xF4,0xB0,0xAF,0xDF,0x2F,0x4F,0x30,0xF6,0xDB,0xF3,0x0F,0x17, +0x0C,0xF8,0xF5,0xF6,0xF8,0xF8,0xEE,0xF6,0x07,0x23,0x33,0x20,0xF8,0xD9,0xE5,0xFF, +0x2B,0x2E,0x10,0xE8,0xDF,0xDB,0xF6,0x1B,0x29,0x0C,0xED,0xFB,0x1B,0x1F,0x0C,0xF8, +0xF0,0xFF,0x0B,0x0F,0x0A,0xF8,0xDE,0xDF,0xFF,0x23,0x27,0x0A,0xF4,0xE0,0xF3,0x1B, +0x37,0x28,0x08,0xE9,0xE5,0xFB,0x1F,0x20,0x04,0xEA,0xEE,0x03,0x07,0x00,0xF6,0xF0, +0xEF,0x0F,0x2F,0x30,0x10,0xDC,0xCF,0xEF,0x1F,0x2C,0x14,0xF6,0xE6,0xEF,0x0B,0x1F, +0x20,0x09,0xF3,0xE9,0xF6,0x12,0x1B,0x11,0x00,0x00,0xFD,0x05,0x07,0x04,0x00,0xF7, +0xFD,0x03,0x04,0x00,0xF9,0xF0,0xEC,0xF5,0x07,0x1F,0x20,0x04,0xE0,0xD5,0xEB,0x0B, +0x0E,0xFA,0xE4,0xEB,0x0B,0x1F,0x16,0x00,0xE8,0xE3,0xEF,0x07,0x1B,0x14,0x00,0xE9, +0xED,0x03,0x13,0x0F,0x05,0x00,0xFA,0xF3,0xF3,0xF9,0x00,0x03,0x01,0x00,0x00,0x01, +0xFF,0xFB,0xF9,0xFF,0x03,0x05,0x01,0xF9,0xEF,0xEB,0xF5,0x02,0x0E,0x0F,0x00,0xE8, +0xE1,0xEF,0xFF,0x05,0xF8,0xE4,0xDF,0xEB,0xFB,0x01,0xF7,0xE7,0xDC,0xDD,0xE5,0xEF, +0xF9,0x00,0xF3,0xEB,0xE9,0xEC,0xE4,0xDA,0xD5,0xDF,0xF5,0x03,0xFA,0xE6,0xE0,0xE6, +0xEB,0xE7,0xE5,0xF0,0xF7,0xF7,0xEF,0xED,0xF6,0xFF,0xFB,0xF4,0xED,0xEF,0xF3,0xF4, +0xF4,0xF6,0xF6,0xF8,0xF6,0xF0,0xEF,0xF5,0x00,0x00,0x01,0xFF,0xF8,0xF0,0xE9,0xEB, +0xF6,0x01,0x09,0x06,0xF9,0xF0,0xED,0xF5,0xF6,0xFB,0x00,0x04,0x05,0x02,0x00,0x00, +0xF9,0xF5,0xFB,0x05,0x09,0x02,0xF8,0xF8,0x06,0x0C,0x05,0xFA,0xF9,0xFF,0xFD,0xF7, +0xF9,0x02,0x05,0x01,0xF9,0xF9,0xFD,0xFF,0x00,0x00,0x03,0x01,0xFB,0xF8,0xF9,0xFB, +0xF7,0xF9,0x00,0x03,0x07,0x01,0xF8,0xF6,0xF6,0xFD,0x01,0x02,0x00,0xFB,0xF8,0xFB, +0x00,0xFD,0xF6,0xF6,0x00,0x07,0x07,0x02,0x00,0xF8,0xF6,0xFB,0x01,0x06,0x05,0xFF, +0xFB,0x00,0xFE,0xFB,0xFB,0xF9,0xFC,0xFF,0xFD,0x00,0x00,0x00,0xFF,0xFD,0x01,0x05, +0x03,0xFD,0xF8,0xF8,0xF7,0xF9,0xF9,0x00,0xFB,0xF7,0x00,0x00,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0x3F,0x37,0x2F,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0x37,0x2F,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0x2F,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0x27, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0x1F,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x17,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x0F,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x07,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0xFF,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x07,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x0F,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x17,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0x1F,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xA0,0x27,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xA0,0xA8,0x2F,0x37,0xC0,0xC0,0xD0,0xD8, +0xE0,0xE8,0xF0,0xF8,0x00,0xF8,0xF0,0xE8,0xE0,0xD8,0xD0,0xC8,0xC0,0xB8,0xB0,0xA8, +0xA0,0x98,0x90,0x88,0x80,0x88,0x90,0x98,0xA0,0xA8,0xB0,0x37,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x7F,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, +0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x90,0x98, +0xA0,0xA8,0xB0,0xB8,0xC0,0xC8,0xD0,0xD8,0xE0,0xE8,0xF0,0xF8,0x00,0x08,0x10,0x18, +0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7F,0x80,0x80,0xA0,0xB0, +0xC0,0xD0,0xE0,0xF0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x45,0x45,0x79,0x7D, +0x7A,0x77,0x70,0x66,0x61,0x58,0x53,0x4D,0x2C,0x20,0x18,0x12,0x04,0xDB,0xD3,0xCD, +0xC6,0xBC,0xB5,0xAE,0xA8,0xA3,0x9D,0x99,0x93,0x8E,0x8B,0x8A,0x45,0x45,0x79,0x7D, +0x7A,0x77,0x70,0x66,0x5B,0x4B,0x43,0x37,0x2C,0x20,0x18,0x12,0x04,0xF8,0xE8,0xDB, +0xCF,0xC6,0xBE,0xB0,0xA8,0xA4,0x9E,0x9A,0x95,0x94,0x8D,0x83,0x00,0x00,0x40,0x60, +0x7F,0x60,0x40,0x20,0x00,0xE0,0xC0,0xA0,0x80,0xA0,0xC0,0xE0,0x00,0x00,0x40,0x60, +0x7F,0x60,0x40,0x20,0x00,0xE0,0xC0,0xA0,0x80,0xA0,0xC0,0xE0,0x80,0x80,0x90,0x98, +0xA0,0xA8,0xB0,0xB8,0xC0,0xC8,0xD0,0xD8,0xE0,0xE8,0xF0,0xF8,0x00,0x08,0x10,0x18, +0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x7F,0x80,0x80,0xA0,0xB0, +0xC0,0xD0,0xE0,0xF0,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,}; diff --git a/MCUME_esp32/espsnd/ym2h/test.h b/MCUME_esp32/espsnd/ym2h/test.h new file mode 100644 index 0000000..2bf34b3 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/test.h @@ -0,0 +1,524 @@ +const unsigned char musym[8362] = { +0x59,0x4D,0x36,0x21,0x4C,0x65,0x4F,0x6E,0x41,0x72,0x44,0x21,0x00,0x00,0x02,0x03, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1E,0x84,0x80,0x00,0x32,0x00,0x00,0x00,0x03, +0x00,0x00,0x4E,0x6F,0x73,0x74,0x61,0x6C,0x67,0x69,0x63,0x2D,0x4F,0x2D,0x44,0x65, +0x6D,0x6F,0x20,0x4C,0x6F,0x61,0x64,0x65,0x72,0x20,0x53,0x6F,0x6E,0x67,0x00,0x54, +0x41,0x4F,0x20,0x6F,0x66,0x20,0x41,0x43,0x46,0x20,0x28,0x55,0x73,0x69,0x6E,0x67, +0x20,0x53,0x79,0x6E,0x63,0x2D,0x42,0x75,0x7A,0x7A,0x65,0x72,0x20,0x21,0x21,0x29, +0x00,0x43,0x6F,0x6E,0x76,0x65,0x72,0x74,0x65,0x64,0x20,0x62,0x79,0x20,0x4C,0x65, +0x6F,0x6E,0x61,0x72,0x64,0x00,0xFF,0xFF,0x97,0x97,0x97,0x97,0x97,0x00,0x00,0x97, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB3,0xB3,0xB3,0xB3,0xB3,0x00,0x00,0xB3, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30, +0xF4,0xF4,0xF4,0xF4,0xF4,0x00,0x00,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xBB,0xBB,0xBB,0xBB,0xBB,0x00,0x00,0xBB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x23,0x23,0x23,0x23,0x23,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x23,0x23,0x23,0x23,0x23,0x00,0x00,0x23,0xCB,0xCB,0xCB,0xCB,0xCB,0x00,0x00,0xCB, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x97,0x97,0x97,0x00,0x00,0x97, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x85,0x85,0x85,0x00,0x00,0x85, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x23,0x23,0x23,0x23,0x00,0x00,0x23, +0xF6,0xF6,0xF6,0xF6,0xF6,0x00,0x00,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xCB,0xCB,0xCB,0xCB,0xCB,0x00,0x00,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x59,0x59,0x59,0x59,0x59,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x59,0x59,0x59,0x59,0x59,0x00,0x00,0x59,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x18, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x85,0x85,0x85,0x00,0x00,0x85, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x23,0x23,0x23,0x23,0x00,0x00,0x23, +0xF6,0xF6,0xF6,0xF6,0xF6,0x00,0x00,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xCB,0xCB,0xCB,0xCB,0xCB,0x00,0x00,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x59,0x59,0x59,0x59,0x59,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x59,0x59,0x59,0x59,0x59,0x00,0x00,0x59,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x18, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x97,0x97,0x97,0x00,0x00,0x97, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB3,0xB3,0xB3,0xB3,0xB3,0x00,0x00,0xB3, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x30, +0xF4,0xF4,0xF4,0xF4,0xF4,0x00,0x00,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xBB,0xBB,0xBB,0xBB,0xBB,0x00,0x00,0xBB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x23,0x23,0x23,0x23,0x23,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x23,0x23,0x23,0x23,0x23,0x00,0x00,0x23,0xCB,0xCB,0xCB,0xCB,0xCB,0x00,0x00,0xCB, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x97,0x97,0x97,0x00,0x00,0x97, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x97,0x0F,0x0F,0x35,0x35,0x35,0x35,0x35, +0x30,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x32,0x32,0x32,0x32,0x32, +0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x35,0x35,0x35,0x35, +0x30,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33, +0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33, +0x30,0x30,0x33,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x32, +0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33, +0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33, +0x30,0x30,0x33,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x32, +0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x35,0x35,0x35,0x35, +0x30,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x34,0x34,0x34,0x34, +0x30,0x30,0x34,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30, +0x30,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x33,0x32,0x32,0x32,0x32,0x32, +0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x35,0x35,0x35,0x35, +0x30,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0xFF,0xFF,0xFF,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xB3,0x47,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59, +0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x59,0x59,0x59,0x59,0x59,0x59,0xBB,0xBB,0x0F, +0x0F,0xDF,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD4,0xD5,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03,0x03,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0x03, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02,0x03,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0x02, +0x03,0xD3,0xFF,0xFF,0x97,0x97,0x97,0x97,0x2F,0x2F,0x2F,0x2F,0x97,0x97,0x97,0x97, +0x26,0x2A,0x2E,0x32,0x9E,0xA0,0x9C,0x98,0x2C,0x28,0x26,0x2A,0x96,0x9A,0x9E,0xA0, +0x34,0x30,0x2C,0x28,0x8E,0x92,0x96,0x9A,0x36,0x38,0x34,0x30,0x94,0x90,0x8E,0x92, +0x2E,0x32,0x36,0x38,0x9C,0x98,0x94,0x90,0x26,0x2A,0x2E,0x32,0x9E,0xA0,0x9C,0x98, +0x2C,0x28,0x26,0x2A,0x96,0x9A,0x9E,0xA0,0x34,0x30,0x2C,0x28,0x8E,0x92,0x96,0x9A, +0x36,0x38,0x34,0x30,0x94,0x90,0x8E,0x92,0x2E,0x32,0x36,0x38,0x9C,0x98,0x94,0x90, +0x26,0x2A,0x2E,0x32,0x9E,0xA0,0x9C,0x98,0x2C,0x28,0x26,0x2A,0x96,0x9A,0x9E,0xA0, +0x34,0x30,0x2C,0x28,0x8E,0x92,0x96,0x9A,0x36,0x38,0x34,0x30,0x94,0x90,0x8E,0x92, +0x2E,0x32,0x36,0x38,0x30,0x30,0x30,0x30,0x61,0x61,0x61,0x61,0x30,0x30,0x30,0x30, +0x58,0x5C,0x60,0x64,0x37,0x39,0x35,0x31,0x5E,0x5A,0x58,0x5C,0x2F,0x33,0x37,0x39, +0x66,0x62,0x5E,0x5A,0x27,0x2B,0x2F,0x33,0x68,0x6A,0x66,0x62,0x2D,0x29,0x27,0x2B, +0x60,0x64,0x68,0x6A,0x35,0x31,0x2D,0x29,0x58,0x5C,0x60,0x64,0x37,0x39,0x35,0x31, +0x5E,0x5A,0x58,0x5C,0x2F,0x33,0x37,0x39,0x66,0x62,0x5E,0x5A,0x27,0x2B,0x2F,0x33, +0x68,0x6A,0x66,0x62,0x2D,0x29,0x27,0x2B,0x60,0x64,0x68,0x6A,0x35,0x31,0x2D,0x29, +0x58,0x5C,0x60,0x64,0x37,0x39,0x35,0x31,0x5E,0x5A,0x58,0x5C,0x2F,0x33,0x37,0x39, +0x66,0x62,0x5E,0x5A,0x27,0x2B,0x2F,0x33,0x68,0x6A,0x66,0x62,0x2D,0x29,0x27,0x2B, +0x60,0x64,0x68,0x6A,0x30,0x30,0x30,0x30,0x61,0x61,0x61,0x61,0x30,0x30,0x30,0x30, +0x58,0x5C,0x60,0x64,0x37,0x39,0x35,0x31,0x5E,0x5A,0x58,0x5C,0x2F,0x33,0x37,0x39, +0x66,0x62,0x5E,0x5A,0x27,0x2B,0x2F,0x33,0x68,0x6A,0x66,0x62,0x2D,0x29,0x27,0x2B, +0x60,0x64,0x68,0x6A,0x35,0x31,0x2D,0x29,0x58,0x5C,0x60,0x64,0x37,0x39,0x35,0x31, +0x5E,0x5A,0x58,0x5C,0x2F,0x33,0x37,0x39,0x66,0x62,0x5E,0x5A,0x27,0x2B,0x2F,0x33, +0x68,0x6A,0x66,0x62,0x2D,0x29,0x27,0x2B,0x60,0x64,0x68,0x6A,0x35,0x31,0x2D,0x29, +0x58,0x5C,0x60,0x64,0x37,0x39,0x35,0x31,0x5E,0x5A,0x58,0x5C,0x2F,0x33,0x37,0x39, +0x66,0x62,0x5E,0x5A,0x27,0x2B,0x2F,0x33,0x68,0x6A,0x66,0x62,0x2D,0x29,0x27,0x2B, +0x60,0x64,0x68,0x6A,0x97,0x97,0x97,0x97,0x2F,0x2F,0x2F,0x2F,0x97,0x97,0x97,0x97, +0x26,0x2A,0x2E,0x32,0x9E,0xA0,0x9C,0x98,0x2C,0x28,0x26,0x2A,0x96,0x9A,0x9E,0xA0, +0x34,0x30,0x2C,0x28,0x8E,0x92,0x96,0x9A,0x36,0x38,0x34,0x30,0x94,0x90,0x8E,0x92, +0x2E,0x32,0x36,0x38,0x9C,0x98,0x94,0x90,0x26,0x2A,0x2E,0x32,0x9E,0xA0,0x9C,0x98, +0x2C,0x28,0x26,0x2A,0x96,0x9A,0x9E,0xA0,0x34,0x30,0x2C,0x28,0x8E,0x92,0x96,0x9A, +0x36,0x38,0x34,0x30,0x94,0x90,0x8E,0x92,0x2E,0x32,0x36,0x38,0x9C,0x98,0x94,0x90, +0x26,0x2A,0x2E,0x32,0x9E,0xA0,0x9C,0x98,0x2C,0x28,0x26,0x2A,0x96,0x9A,0x9E,0xA0, +0x34,0x30,0x2C,0x28,0x8E,0x92,0x96,0x9A,0x36,0x38,0x34,0x30,0x94,0x90,0x8E,0x92, +0x2E,0x32,0x36,0x38,0x97,0x0F,0x0F,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04,0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x04, +0x04,0x04,0x04,0x08,0x08,0x08,0x08,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05, +0x05,0x05,0x05,0x0B,0x0B,0x0B,0x0B,0x05,0x00,0x00,0xAC,0xAC,0xAC,0xAC,0xEC,0xEC, +0xEC,0xEC,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8, +0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xAC,0xAC,0xAC,0xAC,0xED,0xED, +0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED,0xF6,0xF6,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8, +0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xAC,0xAC,0xAC,0xAC,0xEC,0xEC, +0xEC,0xEC,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8, +0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xEB,0xEA,0xE9,0xAC,0xAC,0xAC,0xAC,0xED,0xED, +0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED,0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED, +0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED,0xF6,0xF6,0x8C,0x8C,0x8C,0x8C,0xCC,0xCC, +0xCC,0xCC,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8, +0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD, +0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD,0xD6,0xD6,0x88,0x8B,0x8A,0x89,0xC8,0xC8, +0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x8C,0x8C,0x8C,0x8C,0xCC,0xCC, +0xCC,0xCC,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8, +0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xCB,0xCA,0xC9,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD, +0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD,0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD, +0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD,0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCC,0xCC, +0xCC,0xCC,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8, +0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD, +0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD,0xD6,0xD6,0x88,0x8B,0x8A,0x89,0xC8,0xC8, +0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x8C,0x8C,0x8C,0x8C,0xCC,0xCC, +0xCC,0xCC,0x88,0x8B,0x8A,0x89,0xC8,0xC8,0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xC8, +0xC8,0xC8,0x88,0x8B,0x8A,0x89,0xC8,0xCB,0xCA,0xC9,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD, +0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD,0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD, +0xD6,0xD6,0x8C,0x8C,0x8C,0x8C,0xCD,0xCD,0xD6,0xD6,0xAC,0xAC,0xAC,0xAC,0xEC,0xEC, +0xEC,0xEC,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8, +0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xAC,0xAC,0xAC,0xAC,0xED,0xED, +0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED,0xF6,0xF6,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8, +0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xAC,0xAC,0xAC,0xAC,0xEC,0xEC, +0xEC,0xEC,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8,0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xE8, +0xE8,0xE8,0xA8,0xAB,0xAA,0xA9,0xE8,0xEB,0xEA,0xE9,0xAC,0xAC,0xAC,0xAC,0xED,0xED, +0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED,0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED, +0xF6,0xF6,0xAC,0xAC,0xAC,0xAC,0xED,0xED,0xF6,0xF6,0xAC,0xF8,0xF8,0xEB,0xF9,0xF9, +0xF9,0xF9,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB, +0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB,0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xEA,0xEA,0xEA,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xF9, +0xF9,0xF9,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB, +0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB,0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xEA,0xEA,0xEA,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xF9, +0xF9,0xF9,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB, +0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB,0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xEA,0xEA,0xEA,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xF9, +0xF9,0xF9,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB, +0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA,0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB,0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xF8,0xF8, +0xF8,0xF8,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xF8,0xF8,0xF8,0xEA,0xEA,0xEA, +0xEA,0xEA,0xF8,0xF8,0xF8,0xEB,0xEB,0xEB,0xEB,0xEB,0xEA,0xEA,0xEA,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0xF9,0xEB, +0xF9,0xEB,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEA,0xF8,0xEB,0x00,0x00, +0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00, +0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00, +0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00, +0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00, +0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00, +0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0x10,0x00, +0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x10,0x00, +0xFE,0x00,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x0A, +0x08,0x06,0x04,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0C,0x0E,0x09,0x0C,0x09, +0x0A,0x08,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x0A, +0x08,0x06,0x04,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0C,0x0E,0x09,0x0C,0x09, +0x0A,0x08,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x0A, +0x08,0x06,0x04,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0C,0x0E,0x09,0x0C,0x09, +0x0A,0x08,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0C,0x0F,0x0E,0x0D,0x00,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02, +0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x02,0x00,0x00,0x00,0x0A,0x08,0x06,0x04,0x0A, +0x08,0x06,0x04,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0A,0x0C,0x07,0x0A,0x07, +0x08,0x06,0x00,0x0C,0x0E,0x09,0x0C,0x09,0x0A,0x08,0x00,0x0C,0x0E,0x09,0x0C,0x09, +0x0A,0x08,0x00,0x0C,0x00,0x00,0x0A,0x0D,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0x0D,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0x0D,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0x0D,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0xDD,0xDD,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x47,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0x3B,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF, +0x35,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0xFF,0x32,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0xFF,0x30,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF,0x24,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0xFF,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0x21,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x1A,0x13,0x13,0x13,0x13,0x13,0x13,0xFF,0xFF,0x14,0x14,0x14,0x14,0x14,0x14,0xFF, +0x45,0x15,0x15,0x15,0x15,0x15,0x15,0xFF,0xFF,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x31,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0x28,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF, +0x24,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0xFF,0x22,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0xFF,0x21,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF,0x17,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0xFF,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0x14,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x0F,0x13,0x13,0x13,0x13,0x13,0x13,0xFF,0xFF,0x14,0x14,0x14,0x14,0x14,0x14,0xFF, +0x2F,0x15,0x15,0x15,0x15,0x15,0x15,0xFF,0xFF,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x31,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0x28,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF, +0x24,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0xFF,0x22,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0xFF,0x21,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF,0x17,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0xFF,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0x14,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x0F,0x13,0x13,0x13,0x13,0x13,0x13,0xFF,0xFF,0x14,0x14,0x14,0x14,0x14,0x14,0xFF, +0x2F,0x15,0x15,0x15,0x15,0x15,0x15,0xFF,0xFF,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x47,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0x3B,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF, +0x35,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0xFF,0x32,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0xFF,0x30,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0xFF,0x24,0x10,0x10,0x10,0x10,0x10,0x10,0xFF, +0xFF,0x11,0x11,0x11,0x11,0x11,0x11,0xFF,0x21,0x12,0x12,0x12,0x12,0x12,0x12,0xFF, +0x1A,0x13,0x13,0x13,0x13,0x13,0x13,0xFF,0xFF,0x14,0x14,0x14,0x14,0x14,0x14,0xFF, +0x45,0x15,0x15,0x15,0x15,0x15,0x15,0xFF,0xFF,0x12,0x01,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x0E, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x00,0x00,0xDB,0xDB,0xDB,0xDB,0x8C,0x8C,0x8C,0x8C,0xDB,0xDB,0xDB,0xDB,0x8C,0x8C, +0x8C,0x8C,0xDC,0xDC,0xDC,0xDB,0x8C,0x8C,0x8C,0x8C,0xDB,0xDB,0xDC,0xDC,0x8C,0x8C, +0x8C,0x8C,0xDA,0xDA,0xDB,0xDB,0x8C,0x8C,0x8C,0x8C,0xDA,0xDA,0xDA,0xDA,0x8C,0x8C, +0x8C,0x8C,0xDC,0xDB,0xDA,0xDA,0x8C,0x8C,0x8C,0x8C,0xDC,0xDC,0xDC,0xDB,0x8C,0x8C, +0x8C,0x8C,0xDB,0xDB,0xDC,0xDC,0x8C,0x8C,0x8C,0x8C,0xDA,0xDA,0xDB,0xDB,0x8C,0x8C, +0x8C,0x8C,0xDA,0xDA,0xDA,0xDA,0x8C,0x8C,0x8C,0x8C,0xDC,0xDB,0xDA,0xDA,0x8C,0x8C, +0x8C,0x8C,0xDC,0xDC,0xDC,0xDB,0x8C,0x8C,0x8C,0x8C,0xDB,0xDB,0xDC,0xDC,0x8C,0x8C, +0x8C,0x8C,0xDA,0xDA,0xDB,0xDB,0x8C,0x8C,0x8C,0x8C,0xDA,0xDA,0xDA,0xDA,0x8C,0x8C, +0x8C,0x8C,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD1,0xD2, +0xD2,0xD2,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1,0xD1,0xD2,0xD2,0xD3,0xD3,0xD4,0xD3,0xD2, +0xD2,0xD1,0xD0,0xD1,0xD2,0xD3,0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD0,0xD1,0xD2,0xD2, +0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD1,0xD2,0xD2,0xD2,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1, +0xD1,0xD2,0xD2,0xD3,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1,0xD0,0xD1,0xD2,0xD3,0xD3,0xD3, +0xD3,0xD2,0xD1,0xD1,0xD0,0xD1,0xD2,0xD2,0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD1,0xD2, +0xD2,0xD2,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1,0xD1,0xD2,0xD2,0xD3,0xD3,0xD4,0xD3,0xD2, +0xD2,0xD1,0xD0,0xD1,0xD2,0xD3,0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD0,0xD1,0xD2,0xD2, +0xD3,0xD3,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD1,0xD2, +0xD2,0xD2,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1,0xD1,0xD2,0xD2,0xD3,0xD3,0xD4,0xD3,0xD2, +0xD2,0xD1,0xD0,0xD1,0xD2,0xD3,0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD0,0xD1,0xD2,0xD2, +0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD1,0xD2,0xD2,0xD2,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1, +0xD1,0xD2,0xD2,0xD3,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1,0xD0,0xD1,0xD2,0xD3,0xD3,0xD3, +0xD3,0xD2,0xD1,0xD1,0xD0,0xD1,0xD2,0xD2,0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD1,0xD2, +0xD2,0xD2,0xD3,0xD4,0xD3,0xD2,0xD2,0xD1,0xD1,0xD2,0xD2,0xD3,0xD3,0xD4,0xD3,0xD2, +0xD2,0xD1,0xD0,0xD1,0xD2,0xD3,0xD3,0xD3,0xD3,0xD2,0xD1,0xD1,0xD0,0xD1,0xD2,0xD2, +0xD3,0xD3,0xDB,0xDB,0xDB,0xDB,0x8C,0x8C,0x8C,0x8C,0xDB,0xDB,0xDB,0xDB,0x8C,0x8C, +0x8C,0x8C,0xDC,0xDC,0xDC,0xDB,0x8C,0x8C,0x8C,0x8C,0xDB,0xDB,0xDC,0xDC,0x8C,0x8C, +0x8C,0x8C,0xDA,0xDA,0xDB,0xDB,0x8C,0x8C,0x8C,0x8C,0xDA,0xDA,0xDA,0xDA,0x8C,0x8C, +0x8C,0x8C,0xDC,0xDB,0xDA,0xDA,0x8C,0x8C,0x8C,0x8C,0xDC,0xDC,0xDC,0xDB,0x8C,0x8C, +0x8C,0x8C,0xDB,0xDB,0xDC,0xDC,0x8C,0x8C,0x8C,0x8C,0xDA,0xDA,0xDB,0xDB,0x8C,0x8C, +0x8C,0x8C,0xDA,0xDA,0xDA,0xDA,0x8C,0x8C,0x8C,0x8C,0xDC,0xDB,0xDA,0xDA,0x8C,0x8C, +0x8C,0x8C,0xDC,0xDC,0xDC,0xDB,0x8C,0x8C,0x8C,0x8C,0xDB,0xDB,0xDC,0xDC,0x8C,0x8C, +0x8C,0x8C,0xDA,0xDA,0xDB,0xDB,0x8C,0x8C,0x8C,0x8C,0xDA,0xDA,0xDA,0xDA,0x8C,0x8C, +0x8C,0x8C,0xDB,0x00,0x00,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x00,0x00,0x8C,0x8C,0x8C, +0x8C,0x8C,0x8C,0x00,0x00,0xEC,0xEC,0xEC,0xEC,0xEC,0xEC,0x00,0x00,0xEC,0xEC,0xEC, +0xEC,0xEC,0xEC,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xC6,0xC6,0xC6, +0xC6,0xC6,0xC6,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0x00,0x00,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x00,0x00,0xF6,0xF6,0xF6, +0xF6,0xF6,0xF6,0x00,0x00,0xF6,0xF6,0xF6,0xF6,0xF6,0xF6,0x00,0x00,0xF6,0xF6,0xF6, +0xF6,0xF6,0xF6,0x00,0x00,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0x00,0x00,0xDB,0xDB,0xDB, +0xDB,0xDB,0xDB,0x00,0x00,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x00,0x00,0x8C,0x8C,0x8C, +0x8C,0x8C,0x8C,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2, +0xD2,0xD2,0xD2,0x00,0x00,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0x00,0x00,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0x00,0x00,0xF6,0xF6,0xF6,0xF6,0xF6,0xF6,0x00,0x00,0xE8,0xE8,0xE8, +0xE8,0xE8,0xE8,0x00,0x00,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0x00,0x00,0xDB,0xDB,0xDB, +0xDB,0xDB,0xDB,0x00,0x00,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0x00,0x00,0xEB,0xEB,0xEB, +0xEB,0xEB,0xEB,0x00,0x00,0xEB,0xEB,0xEB,0xEB,0xEB,0xEB,0x00,0x00,0xEB,0xEB,0xEB, +0xEB,0xEB,0xEB,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2, +0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2, +0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2, +0xD2,0xD2,0xD2,0x00,0x00,0xB0,0xB0,0xB0,0xB0,0xB0,0xB0,0x00,0x00,0xB0,0xB0,0xB0, +0xB0,0xB0,0xB0,0x00,0x00,0xF6,0xF6,0xF6,0xF6,0xF6,0xF6,0x00,0x00,0xE8,0xE8,0xE8, +0xE8,0xE8,0xE8,0x00,0x00,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0x00,0x00,0xDB,0xDB,0xDB, +0xDB,0xDB,0xDB,0x00,0x00,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0x00,0x00,0xEB,0xEB,0xEB, +0xEB,0xEB,0xEB,0x00,0x00,0xEB,0xEB,0xEB,0xEB,0xEB,0xEB,0x00,0x00,0xEB,0xEB,0xEB, +0xEB,0xEB,0xEB,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2, +0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xD2,0xD2,0xD2, +0xD2,0xD2,0xD2,0x00,0x00,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x00,0x00,0x8C,0x8C,0x8C, +0x8C,0x8C,0x8C,0x00,0x00,0xEC,0xEC,0xEC,0xEC,0xEC,0xEC,0x00,0x00,0xEC,0xEC,0xEC, +0xEC,0xEC,0xEC,0x00,0x00,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0x00,0x00,0xC6,0xC6,0xC6, +0xC6,0xC6,0xC6,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0xBB,0xBB,0xBB, +0xBB,0xBB,0xBB,0x00,0x00,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0x00,0x00,0xF6,0xF6,0xF6, +0xF6,0xF6,0xF6,0x00,0x00,0xF6,0xF6,0xF6,0xF6,0xF6,0xF6,0x00,0x00,0xF6,0xF6,0xF6, +0xF6,0xF6,0xF6,0x00,0x00,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0x00,0x00,0xDB,0xDB,0xDB, +0xDB,0xDB,0xDB,0x00,0x00,0x8C,0x8C,0x8C,0x8C,0x8C,0x8C,0x00,0x00,0x8C,0x8C,0x8C, +0x8C,0x8C,0x8C,0x00,0x00,0x8C,0x45,0x6E,0x64,0x21,}; diff --git a/MCUME_esp32/espsnd/ym2h/test.ym b/MCUME_esp32/espsnd/ym2h/test.ym new file mode 100644 index 0000000..c9af66b Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/test.ym differ diff --git a/MCUME_esp32/espsnd/ym2h/ym2h b/MCUME_esp32/espsnd/ym2h/ym2h new file mode 100755 index 0000000..340c6eb Binary files /dev/null and b/MCUME_esp32/espsnd/ym2h/ym2h differ diff --git a/MCUME_esp32/espsnd/ym2h/ym2h.c b/MCUME_esp32/espsnd/ym2h/ym2h.c new file mode 100755 index 0000000..6b35b22 --- /dev/null +++ b/MCUME_esp32/espsnd/ym2h/ym2h.c @@ -0,0 +1,81 @@ + + +#include +#include + + +int processFile(char * infile, char * outfile, char * arrname) +{ + FILE *fp_rd = stdin; + FILE *fp_wr = stdout; + + int cnt=0; + + if ((fp_rd = fopen (infile, "rb")) == NULL) + { + fprintf (stderr, "Error: can not open file %s\n", infile); + return -1; + } + if ((fp_wr = fopen (outfile, "wb")) == NULL) + { + fprintf (stderr, "Error: can not create file %s\n", outfile); + return -1; + } + + + fseek(fp_rd, 0L, SEEK_END); + int size = ftell(fp_rd); + fseek(fp_rd, 0L, SEEK_SET); + + printf ("Reading %d bytes\n", size); + fprintf(fp_wr, "const unsigned char %s[%d] = {\n", arrname, size); + + cnt = 0; + for (int i = 0; i < size; i++) { + unsigned char b; + if (fread(&b, 1, 1, fp_rd) != 1) { + fprintf (stderr, "Error: can not read more bytes\n"); + fclose (fp_wr); + fclose (fp_rd); + return -1; + } + cnt++; + if (cnt == 16) { + fprintf(fp_wr, "0x%02X,\n",b); + } + else { + fprintf(fp_wr, "0x%02X,",b); + } + cnt &= 15; + } + fprintf(fp_wr, "};\n"); + + fclose (fp_wr); + fclose (fp_rd); + return 1; +} + + +int main(int argc, char *argv[]) { + + if (processFile("enchant1.ym","enchant1.h","musym") < 0) + return (-1); + if (processFile("jess1.ym","jess1.h","musym") < 0) + return (-1); + if (processFile("jess2.ym","jess2.h","musym") < 0) + return (-1); + if (processFile("test.ym","test.h","musym") < 0) + return (-1); + if (processFile("delta.ym","delta.h","musym") < 0) + return (-1); + if (processFile("commando.ym","commando.h","musym") < 0) + return (-1); + if (processFile("loader.fc4","loader.h","musym") < 0) + return (-1); + + + + return 0; +} + + diff --git a/MCUME_esp32/espspeccy/.DS_Store b/MCUME_esp32/espspeccy/.DS_Store new file mode 100644 index 0000000..0787fb7 Binary files /dev/null and b/MCUME_esp32/espspeccy/.DS_Store differ diff --git a/MCUME_esp32/espspeccy/Makefile b/MCUME_esp32/espspeccy/Makefile new file mode 100644 index 0000000..268fa30 --- /dev/null +++ b/MCUME_esp32/espspeccy/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := espspeccy + +include $(IDF_PATH)/make/project.mk + diff --git a/MCUME_esp32/espspeccy/components/.DS_Store b/MCUME_esp32/espspeccy/components/.DS_Store new file mode 100644 index 0000000..0689572 Binary files /dev/null and b/MCUME_esp32/espspeccy/components/.DS_Store differ diff --git a/MCUME_esp32/espspeccy/components/Audio/.DS_Store b/MCUME_esp32/espspeccy/components/Audio/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espspeccy/components/Audio/.DS_Store differ diff --git a/MCUME_esp32/espspeccy/components/Audio/component.mk b/MCUME_esp32/espspeccy/components/Audio/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Audio/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espspeccy/components/Audio/esp32-hal-dac.c b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-dac.c new file mode 100644 index 0000000..4d211fe --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-dac.c @@ -0,0 +1,56 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-dac.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "soc/rtc_io_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/sens_reg.h" +#include "esp32-hal-gpio.h" + + +void IRAM_ATTR __dacWrite(uint8_t pin, uint8_t value) +{ + if(pin < 25 || pin > 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espspeccy/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espspeccy/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espspeccy/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espspeccy/components/Wire/.DS_Store b/MCUME_esp32/espspeccy/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espspeccy/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espspeccy/components/Wire/Wire.cpp b/MCUME_esp32/espspeccy/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espspeccy/components/Wire/Wire.h b/MCUME_esp32/espspeccy/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espspeccy/components/Wire/component.mk b/MCUME_esp32/espspeccy/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espspeccy/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espspeccy/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espspeccy/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espspeccy/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espspeccy/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espspeccy/flashapp.sh b/MCUME_esp32/espspeccy/flashapp.sh new file mode 100755 index 0000000..c4277b9 --- /dev/null +++ b/MCUME_esp32/espspeccy/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x0F0000 ../espspeccy/build/espspeccy.bin diff --git a/MCUME_esp32/espspeccy/main/.DS_Store b/MCUME_esp32/espspeccy/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espspeccy/main/.DS_Store differ diff --git a/MCUME_esp32/espspeccy/main/AY8910.c b/MCUME_esp32/espspeccy/main/AY8910.c new file mode 100644 index 0000000..9c3984b --- /dev/null +++ b/MCUME_esp32/espspeccy/main/AY8910.c @@ -0,0 +1,315 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.c **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.h for declarations. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "AY8910.h" +#include "emuapi.h" +#include + +static const unsigned char Envelopes[16][32] = +{ + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } +}; + +static const int Volumes[16] = +{ 0,1,2,4,6,8,11,16,23,32,45,64,90,128,180,255 }; +//{ 0,16,33,50,67,84,101,118,135,152,169,186,203,220,237,254 }; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First) +{ + static byte RegInit[16] = + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00 + }; + int J; + + /* Reset state */ + memcpy(D->R,RegInit,sizeof(D->R)); + D->EPhase = 0; + D->Clock = ClockHz>>4; + D->First = First; + D->Sync = AY8910_ASYNC; + D->Changed = 0x00; + D->EPeriod = 0; + D->ECount = 0; + D->Latch = 0x00; + + /* Set sound types */ + //SetSound(0+First,SND_MELODIC); + //SetSound(1+First,SND_MELODIC); + //SetSound(2+First,SND_MELODIC); + //SetSound(3+First,SND_NOISE); + //SetSound(4+First,SND_NOISE); + //SetSound(5+First,SND_NOISE); + + /* Silence all channels */ + for(J=0;JFreq[J]=D->Volume[J]=0; +#if HAS_SND + emu_sndPlaySound(J+First, 0, 0); +#endif + //Sound(J+First,0,0); + } +} + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V) +{ + D->Latch=V&0x0F; +} + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V) +{ + Write8910(D,D->Latch,V); +} + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D) +{ + return(D->R[D->Latch]); +} + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V) +{ + register int J,I; + + switch(R) + { + case 1: + case 3: + case 5: + V&=0x0F; + /* Fall through */ + case 0: + case 2: + case 4: + /* Write value */ + D->R[R]=V; + /* Exit if the channel is silenced */ + if(D->R[7]&(1<<(R>>1))) return; + /* Go to the first register in the pair */ + R&=0xFE; + /* Compute frequency */ + J=((int)(D->R[R+1]&0x0F)<<8)+D->R[R]; + /* Compute channel number */ + R>>=1; + /* Assign frequency */ + D->Freq[R]=D->Clock/(J? J:0x1000); + /* Compute changed channels mask */ + D->Changed|=1<R[6]=V&=0x1F; + /* Exit if noise channels are silenced */ + if(!(~D->R[7]&0x38)) return; + /* Compute and assign noise frequency */ + /* Shouldn't do <<2, but need to keep frequency down */ + J=D->Clock/((V&0x1F? (V&0x1F):0x20)<<2); + if(!(D->R[7]&0x08)) D->Freq[3]=J; + if(!(D->R[7]&0x10)) D->Freq[4]=J; + if(!(D->R[7]&0x20)) D->Freq[5]=J; + /* Compute changed channels mask */ + D->Changed|=0x38&~D->R[7]; + break; + + case 7: + /* Find changed channels */ + R=(V^D->R[7])&0x3F; + D->Changed|=R; + /* Write value */ + D->R[7]=V; + /* Update frequencies */ + for(J=0;R&&(J>=1,V>>=1) + if(R&1) + { + if(V&1) D->Freq[J]=0; + else if(J<3) + { + I=((int)(D->R[J*2+1]&0x0F)<<8)+D->R[J*2]; + D->Freq[J]=D->Clock/(I? I:0x1000); + } + else + { + /* Shouldn't do <<2, but need to keep frequency down */ + I=D->R[6]&0x1F; + D->Freq[J]=D->Clock/((I? I:0x20)<<2); + } + } + break; + + case 8: + case 9: + case 10: + /* Write value */ + D->R[R]=V&=0x1F; + /* Compute channel number */ + R-=8; + /* Compute and assign new volume */ + J=Volumes[V&0x10? Envelopes[D->R[13]&0x0F][D->EPhase]:(V&0x0F)]; + D->Volume[R]=J; + D->Volume[R+3]=(J+1)>>1; + /* Compute changed channels mask */ + D->Changed|=(0x09<R[7]; + break; + + case 11: + case 12: + /* Write value */ + D->R[R]=V; + /* Compute envelope period (why not <<4?) */ + J=((int)D->R[12]<<8)+D->R[11]; + D->EPeriod=1000*(J? J:0x10000)/D->Clock; + /* No channels changed */ + return; + + case 13: + /* Write value */ + D->R[R]=V&=0x0F; + /* Reset envelope */ + D->ECount = 0; + D->EPhase = 0; + for(J=0;JR[J+8]&0x10) + { + I = Volumes[Envelopes[V][0]]; + D->Volume[J] = I; + D->Volume[J+3] = (I+1)>>1; + D->Changed |= (0x09<R[7]; + } + break; + + case 14: + case 15: + /* Write value */ + D->R[R]=V; + /* No channels changed */ + return; + + default: + /* Wrong register, do nothing */ + return; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS) +{ + register int J,I; + + /* Exit if no envelope running */ + if(!D->EPeriod) return; + + /* Count milliseconds */ + D->ECount += mS; + if(D->ECountEPeriod) return; + + /* Count steps */ + J = D->ECount/D->EPeriod; + D->ECount -= J*D->EPeriod; + + /* Count phases */ + D->EPhase += J; + if(D->EPhase>31) + D->EPhase = (D->R[13]&0x09)==0x08? (D->EPhase&0x1F):31; + + /* Set envelope volumes for relevant channels */ + for(I=0;I<3;++I) + if(D->R[I+8]&0x10) + { + J = Volumes[Envelopes[D->R[13]&0x0F][D->EPhase]]; + D->Volume[I] = J; + D->Volume[I+3] = (J+1)>>1; + D->Changed |= (0x09<R[7]; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync) +{ + register int J,I; + + /* Hit MIDI drums for noise channels, if requested */ + if(Sync&AY8910_DRUMS) + { + Sync&=~AY8910_DRUMS; + J = (D->Freq[3]? D->Volume[3]:0) + + (D->Freq[4]? D->Volume[4]:0) + + (D->Freq[5]? D->Volume[5]:0); + if(J) { + //Drum(DRM_MIDI|28,(J+2)/3); + } + } + + if(Sync!=AY8910_FLUSH) D->Sync=Sync; + + for(J=0,I=D->Changed;I&&(J>=1) + if(I&1) { +#if HAS_SND + emu_sndPlaySound(J+D->First, D->Volume[J], D->Freq[J]); +#endif + //Sound(J+D->First,D->Freq[J],D->Volume[J]); + } + + D->Changed=0x00; +} diff --git a/MCUME_esp32/espspeccy/main/AY8910.h b/MCUME_esp32/espspeccy/main/AY8910.h new file mode 100755 index 0000000..b833cc6 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/AY8910.h @@ -0,0 +1,97 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.h **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.c for the actual code. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef AY8910_H +#define AY8910_H +#ifdef __cplusplus +extern "C" { +#endif + +#define AY8910_CHANNELS 6 /* 3 melodic + 3 noise chanls */ + +#define AY8910_ASYNC 0 /* Asynchronous emulation */ +#define AY8910_SYNC 1 /* Synchronous emulation */ +#define AY8910_FLUSH 2 /* Flush buffers only */ +#define AY8910_DRUMS 0x80 /* Hit drums for noise chnls */ + +#ifndef BYTE_TYPE_DEFINED +#define BYTE_TYPE_DEFINED +typedef unsigned char byte; +#endif + +/** AY8910 ***************************************************/ +/** This data structure stores AY8910 state. **/ +/*************************************************************/ +typedef struct +{ + byte R[16]; /* PSG registers contents */ + int Freq[AY8910_CHANNELS]; /* Frequencies (0 for off) */ + int Volume[AY8910_CHANNELS]; /* Volumes (0..255) */ + int Clock; /* Base clock used by PSG */ + int First; /* First used Sound() channel */ + byte Changed; /* Bitmap of changed channels */ + byte Sync; /* AY8910_SYNC/AY8910_ASYNC */ + byte Latch; /* Latch for the register num */ + int EPeriod; /* Envelope step in msecs */ + int ECount; /* Envelope step counter */ + int EPhase; /* Envelope phase */ +} AY8910; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First); + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V); + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V); + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V); + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D); + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync); + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS); + +#ifdef __cplusplus +} +#endif +#endif /* AY8910_H */ diff --git a/MCUME_esp32/espspeccy/main/AudioPlaySystem.cpp b/MCUME_esp32/espspeccy/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..1b0fcc8 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espspeccy/main/AudioPlaySystem.h b/MCUME_esp32/espspeccy/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espspeccy/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espspeccy/main/Codes.h b/MCUME_esp32/espspeccy/main/Codes.h new file mode 100755 index 0000000..2dcee81 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/Codes.h @@ -0,0 +1,385 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Codes.h **/ +/** **/ +/** This file contains implementation for the main table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=6;M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { R->ICount-=6;M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=6;M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { R->ICount-=6;M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->HL.B.h);break; +case ADD_L: M_ADD(R->HL.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->HL.W);M_ADD(I);break; +case ADD_BYTE: I=OpZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->HL.B.h);break; +case SUB_L: M_SUB(R->HL.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->HL.W);M_SUB(I);break; +case SUB_BYTE: I=OpZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->HL.B.h);break; +case AND_L: M_AND(R->HL.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->HL.W);M_AND(I);break; +case AND_BYTE: I=OpZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->HL.B.h);break; +case OR_L: M_OR(R->HL.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->HL.W);M_OR(I);break; +case OR_BYTE: I=OpZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->HL.B.h);break; +case ADC_L: M_ADC(R->HL.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->HL.W);M_ADC(I);break; +case ADC_BYTE: I=OpZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->HL.B.h);break; +case SBC_L: M_SBC(R->HL.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->HL.W);M_SBC(I);break; +case SBC_BYTE: I=OpZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->HL.B.h);break; +case XOR_L: M_XOR(R->HL.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->HL.W);M_XOR(I);break; +case XOR_BYTE: I=OpZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->HL.B.h);break; +case CP_L: M_CP(R->HL.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->HL.W);M_CP(I);break; +case CP_BYTE: I=OpZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(HL);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->HL.W;JumpZ80(R->PC.W);break; +case LD_SP_HL: R->SP.W=R->HL.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(HL,BC);break; +case ADD_HL_DE: M_ADDW(HL,DE);break; +case ADD_HL_HL: M_ADDW(HL,HL);break; +case ADD_HL_SP: M_ADDW(HL,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->HL.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->HL.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->HL.B.h);break; +case DEC_L: M_DEC(R->HL.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->HL.W);M_DEC(I);WrZ80(R->HL.W,I);break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->HL.B.h);break; +case INC_L: M_INC(R->HL.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->HL.W);M_INC(I);WrZ80(R->HL.W,I);break; + +case RLCA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(HL);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(HL);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { R->ICount-=5;M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: I=OpZ80(R->PC.W++);OutZ80(I|(R->AF.W&0xFF00),R->AF.B.h);break; +case INA: I=OpZ80(R->PC.W++);R->AF.B.h=InZ80(I|(R->AF.W&0xFF00));break; + +case HALT: + R->PC.W--; + R->IFF|=IFF_HALT; + R->IBackup=0; + R->ICount=0; + break; + +case DI: + if(R->IFF&IFF_EI) R->ICount+=R->IBackup-1; + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + break; + +case EI: + if(!(R->IFF&(IFF_1|IFF_EI))) + { + R->IFF|=IFF_2|IFF_EI; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->HL.B.h=R->BC.B.h;break; +case LD_L_B: R->HL.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: WrZ80(R->HL.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->HL.B.h=R->BC.B.l;break; +case LD_L_C: R->HL.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: WrZ80(R->HL.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->HL.B.h=R->DE.B.h;break; +case LD_L_D: R->HL.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: WrZ80(R->HL.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->HL.B.h=R->DE.B.l;break; +case LD_L_E: R->HL.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: WrZ80(R->HL.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->HL.B.h;break; +case LD_C_H: R->BC.B.l=R->HL.B.h;break; +case LD_D_H: R->DE.B.h=R->HL.B.h;break; +case LD_E_H: R->DE.B.l=R->HL.B.h;break; +case LD_H_H: R->HL.B.h=R->HL.B.h;break; +case LD_L_H: R->HL.B.l=R->HL.B.h;break; +case LD_A_H: R->AF.B.h=R->HL.B.h;break; +case LD_xHL_H: WrZ80(R->HL.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->HL.B.l;break; +case LD_C_L: R->BC.B.l=R->HL.B.l;break; +case LD_D_L: R->DE.B.h=R->HL.B.l;break; +case LD_E_L: R->DE.B.l=R->HL.B.l;break; +case LD_H_L: R->HL.B.h=R->HL.B.l;break; +case LD_L_L: R->HL.B.l=R->HL.B.l;break; +case LD_A_L: R->AF.B.h=R->HL.B.l;break; +case LD_xHL_L: WrZ80(R->HL.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->HL.B.h=R->AF.B.h;break; +case LD_L_A: R->HL.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: WrZ80(R->HL.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->HL.W);break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->HL.W);break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->HL.W);break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->HL.W);break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->HL.W);break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->HL.W);break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->HL.W);break; + +case LD_B_BYTE: R->BC.B.h=OpZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=OpZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=OpZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=OpZ80(R->PC.W++);break; +case LD_H_BYTE: R->HL.B.h=OpZ80(R->PC.W++);break; +case LD_L_BYTE: R->HL.B.l=OpZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=OpZ80(R->PC.W++);break; +case LD_xHL_BYTE: WrZ80(R->HL.W,OpZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; + +case LD_HL_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->HL.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->HL.B.h); + R->HL.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; + +default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-1),R->PC.W-1 + ); + break; diff --git a/MCUME_esp32/espspeccy/main/CodesCB.h b/MCUME_esp32/espspeccy/main/CodesCB.h new file mode 100755 index 0000000..15fcb4f --- /dev/null +++ b/MCUME_esp32/espspeccy/main/CodesCB.h @@ -0,0 +1,204 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesCB.h **/ +/** **/ +/** This file contains implementation for the CB table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_B: M_RLC(R->BC.B.h);break; case RLC_C: M_RLC(R->BC.B.l);break; +case RLC_D: M_RLC(R->DE.B.h);break; case RLC_E: M_RLC(R->DE.B.l);break; +case RLC_H: M_RLC(R->HL.B.h);break; case RLC_L: M_RLC(R->HL.B.l);break; +case RLC_xHL: I=RdZ80(R->HL.W);M_RLC(I);WrZ80(R->HL.W,I);break; +case RLC_A: M_RLC(R->AF.B.h);break; + +case RRC_B: M_RRC(R->BC.B.h);break; case RRC_C: M_RRC(R->BC.B.l);break; +case RRC_D: M_RRC(R->DE.B.h);break; case RRC_E: M_RRC(R->DE.B.l);break; +case RRC_H: M_RRC(R->HL.B.h);break; case RRC_L: M_RRC(R->HL.B.l);break; +case RRC_xHL: I=RdZ80(R->HL.W);M_RRC(I);WrZ80(R->HL.W,I);break; +case RRC_A: M_RRC(R->AF.B.h);break; + +case RL_B: M_RL(R->BC.B.h);break; case RL_C: M_RL(R->BC.B.l);break; +case RL_D: M_RL(R->DE.B.h);break; case RL_E: M_RL(R->DE.B.l);break; +case RL_H: M_RL(R->HL.B.h);break; case RL_L: M_RL(R->HL.B.l);break; +case RL_xHL: I=RdZ80(R->HL.W);M_RL(I);WrZ80(R->HL.W,I);break; +case RL_A: M_RL(R->AF.B.h);break; + +case RR_B: M_RR(R->BC.B.h);break; case RR_C: M_RR(R->BC.B.l);break; +case RR_D: M_RR(R->DE.B.h);break; case RR_E: M_RR(R->DE.B.l);break; +case RR_H: M_RR(R->HL.B.h);break; case RR_L: M_RR(R->HL.B.l);break; +case RR_xHL: I=RdZ80(R->HL.W);M_RR(I);WrZ80(R->HL.W,I);break; +case RR_A: M_RR(R->AF.B.h);break; + +case SLA_B: M_SLA(R->BC.B.h);break; case SLA_C: M_SLA(R->BC.B.l);break; +case SLA_D: M_SLA(R->DE.B.h);break; case SLA_E: M_SLA(R->DE.B.l);break; +case SLA_H: M_SLA(R->HL.B.h);break; case SLA_L: M_SLA(R->HL.B.l);break; +case SLA_xHL: I=RdZ80(R->HL.W);M_SLA(I);WrZ80(R->HL.W,I);break; +case SLA_A: M_SLA(R->AF.B.h);break; + +case SRA_B: M_SRA(R->BC.B.h);break; case SRA_C: M_SRA(R->BC.B.l);break; +case SRA_D: M_SRA(R->DE.B.h);break; case SRA_E: M_SRA(R->DE.B.l);break; +case SRA_H: M_SRA(R->HL.B.h);break; case SRA_L: M_SRA(R->HL.B.l);break; +case SRA_xHL: I=RdZ80(R->HL.W);M_SRA(I);WrZ80(R->HL.W,I);break; +case SRA_A: M_SRA(R->AF.B.h);break; + +case SLL_B: M_SLL(R->BC.B.h);break; case SLL_C: M_SLL(R->BC.B.l);break; +case SLL_D: M_SLL(R->DE.B.h);break; case SLL_E: M_SLL(R->DE.B.l);break; +case SLL_H: M_SLL(R->HL.B.h);break; case SLL_L: M_SLL(R->HL.B.l);break; +case SLL_xHL: I=RdZ80(R->HL.W);M_SLL(I);WrZ80(R->HL.W,I);break; +case SLL_A: M_SLL(R->AF.B.h);break; + +case SRL_B: M_SRL(R->BC.B.h);break; case SRL_C: M_SRL(R->BC.B.l);break; +case SRL_D: M_SRL(R->DE.B.h);break; case SRL_E: M_SRL(R->DE.B.l);break; +case SRL_H: M_SRL(R->HL.B.h);break; case SRL_L: M_SRL(R->HL.B.l);break; +case SRL_xHL: I=RdZ80(R->HL.W);M_SRL(I);WrZ80(R->HL.W,I);break; +case SRL_A: M_SRL(R->AF.B.h);break; + +case BIT0_B: M_BIT(0,R->BC.B.h);break; case BIT0_C: M_BIT(0,R->BC.B.l);break; +case BIT0_D: M_BIT(0,R->DE.B.h);break; case BIT0_E: M_BIT(0,R->DE.B.l);break; +case BIT0_H: M_BIT(0,R->HL.B.h);break; case BIT0_L: M_BIT(0,R->HL.B.l);break; +case BIT0_xHL: I=RdZ80(R->HL.W);M_BIT(0,I);break; +case BIT0_A: M_BIT(0,R->AF.B.h);break; + +case BIT1_B: M_BIT(1,R->BC.B.h);break; case BIT1_C: M_BIT(1,R->BC.B.l);break; +case BIT1_D: M_BIT(1,R->DE.B.h);break; case BIT1_E: M_BIT(1,R->DE.B.l);break; +case BIT1_H: M_BIT(1,R->HL.B.h);break; case BIT1_L: M_BIT(1,R->HL.B.l);break; +case BIT1_xHL: I=RdZ80(R->HL.W);M_BIT(1,I);break; +case BIT1_A: M_BIT(1,R->AF.B.h);break; + +case BIT2_B: M_BIT(2,R->BC.B.h);break; case BIT2_C: M_BIT(2,R->BC.B.l);break; +case BIT2_D: M_BIT(2,R->DE.B.h);break; case BIT2_E: M_BIT(2,R->DE.B.l);break; +case BIT2_H: M_BIT(2,R->HL.B.h);break; case BIT2_L: M_BIT(2,R->HL.B.l);break; +case BIT2_xHL: I=RdZ80(R->HL.W);M_BIT(2,I);break; +case BIT2_A: M_BIT(2,R->AF.B.h);break; + +case BIT3_B: M_BIT(3,R->BC.B.h);break; case BIT3_C: M_BIT(3,R->BC.B.l);break; +case BIT3_D: M_BIT(3,R->DE.B.h);break; case BIT3_E: M_BIT(3,R->DE.B.l);break; +case BIT3_H: M_BIT(3,R->HL.B.h);break; case BIT3_L: M_BIT(3,R->HL.B.l);break; +case BIT3_xHL: I=RdZ80(R->HL.W);M_BIT(3,I);break; +case BIT3_A: M_BIT(3,R->AF.B.h);break; + +case BIT4_B: M_BIT(4,R->BC.B.h);break; case BIT4_C: M_BIT(4,R->BC.B.l);break; +case BIT4_D: M_BIT(4,R->DE.B.h);break; case BIT4_E: M_BIT(4,R->DE.B.l);break; +case BIT4_H: M_BIT(4,R->HL.B.h);break; case BIT4_L: M_BIT(4,R->HL.B.l);break; +case BIT4_xHL: I=RdZ80(R->HL.W);M_BIT(4,I);break; +case BIT4_A: M_BIT(4,R->AF.B.h);break; + +case BIT5_B: M_BIT(5,R->BC.B.h);break; case BIT5_C: M_BIT(5,R->BC.B.l);break; +case BIT5_D: M_BIT(5,R->DE.B.h);break; case BIT5_E: M_BIT(5,R->DE.B.l);break; +case BIT5_H: M_BIT(5,R->HL.B.h);break; case BIT5_L: M_BIT(5,R->HL.B.l);break; +case BIT5_xHL: I=RdZ80(R->HL.W);M_BIT(5,I);break; +case BIT5_A: M_BIT(5,R->AF.B.h);break; + +case BIT6_B: M_BIT(6,R->BC.B.h);break; case BIT6_C: M_BIT(6,R->BC.B.l);break; +case BIT6_D: M_BIT(6,R->DE.B.h);break; case BIT6_E: M_BIT(6,R->DE.B.l);break; +case BIT6_H: M_BIT(6,R->HL.B.h);break; case BIT6_L: M_BIT(6,R->HL.B.l);break; +case BIT6_xHL: I=RdZ80(R->HL.W);M_BIT(6,I);break; +case BIT6_A: M_BIT(6,R->AF.B.h);break; + +case BIT7_B: M_BIT(7,R->BC.B.h);break; case BIT7_C: M_BIT(7,R->BC.B.l);break; +case BIT7_D: M_BIT(7,R->DE.B.h);break; case BIT7_E: M_BIT(7,R->DE.B.l);break; +case BIT7_H: M_BIT(7,R->HL.B.h);break; case BIT7_L: M_BIT(7,R->HL.B.l);break; +case BIT7_xHL: I=RdZ80(R->HL.W);M_BIT(7,I);break; +case BIT7_A: M_BIT(7,R->AF.B.h);break; + +case RES0_B: M_RES(0,R->BC.B.h);break; case RES0_C: M_RES(0,R->BC.B.l);break; +case RES0_D: M_RES(0,R->DE.B.h);break; case RES0_E: M_RES(0,R->DE.B.l);break; +case RES0_H: M_RES(0,R->HL.B.h);break; case RES0_L: M_RES(0,R->HL.B.l);break; +case RES0_xHL: I=RdZ80(R->HL.W);M_RES(0,I);WrZ80(R->HL.W,I);break; +case RES0_A: M_RES(0,R->AF.B.h);break; + +case RES1_B: M_RES(1,R->BC.B.h);break; case RES1_C: M_RES(1,R->BC.B.l);break; +case RES1_D: M_RES(1,R->DE.B.h);break; case RES1_E: M_RES(1,R->DE.B.l);break; +case RES1_H: M_RES(1,R->HL.B.h);break; case RES1_L: M_RES(1,R->HL.B.l);break; +case RES1_xHL: I=RdZ80(R->HL.W);M_RES(1,I);WrZ80(R->HL.W,I);break; +case RES1_A: M_RES(1,R->AF.B.h);break; + +case RES2_B: M_RES(2,R->BC.B.h);break; case RES2_C: M_RES(2,R->BC.B.l);break; +case RES2_D: M_RES(2,R->DE.B.h);break; case RES2_E: M_RES(2,R->DE.B.l);break; +case RES2_H: M_RES(2,R->HL.B.h);break; case RES2_L: M_RES(2,R->HL.B.l);break; +case RES2_xHL: I=RdZ80(R->HL.W);M_RES(2,I);WrZ80(R->HL.W,I);break; +case RES2_A: M_RES(2,R->AF.B.h);break; + +case RES3_B: M_RES(3,R->BC.B.h);break; case RES3_C: M_RES(3,R->BC.B.l);break; +case RES3_D: M_RES(3,R->DE.B.h);break; case RES3_E: M_RES(3,R->DE.B.l);break; +case RES3_H: M_RES(3,R->HL.B.h);break; case RES3_L: M_RES(3,R->HL.B.l);break; +case RES3_xHL: I=RdZ80(R->HL.W);M_RES(3,I);WrZ80(R->HL.W,I);break; +case RES3_A: M_RES(3,R->AF.B.h);break; + +case RES4_B: M_RES(4,R->BC.B.h);break; case RES4_C: M_RES(4,R->BC.B.l);break; +case RES4_D: M_RES(4,R->DE.B.h);break; case RES4_E: M_RES(4,R->DE.B.l);break; +case RES4_H: M_RES(4,R->HL.B.h);break; case RES4_L: M_RES(4,R->HL.B.l);break; +case RES4_xHL: I=RdZ80(R->HL.W);M_RES(4,I);WrZ80(R->HL.W,I);break; +case RES4_A: M_RES(4,R->AF.B.h);break; + +case RES5_B: M_RES(5,R->BC.B.h);break; case RES5_C: M_RES(5,R->BC.B.l);break; +case RES5_D: M_RES(5,R->DE.B.h);break; case RES5_E: M_RES(5,R->DE.B.l);break; +case RES5_H: M_RES(5,R->HL.B.h);break; case RES5_L: M_RES(5,R->HL.B.l);break; +case RES5_xHL: I=RdZ80(R->HL.W);M_RES(5,I);WrZ80(R->HL.W,I);break; +case RES5_A: M_RES(5,R->AF.B.h);break; + +case RES6_B: M_RES(6,R->BC.B.h);break; case RES6_C: M_RES(6,R->BC.B.l);break; +case RES6_D: M_RES(6,R->DE.B.h);break; case RES6_E: M_RES(6,R->DE.B.l);break; +case RES6_H: M_RES(6,R->HL.B.h);break; case RES6_L: M_RES(6,R->HL.B.l);break; +case RES6_xHL: I=RdZ80(R->HL.W);M_RES(6,I);WrZ80(R->HL.W,I);break; +case RES6_A: M_RES(6,R->AF.B.h);break; + +case RES7_B: M_RES(7,R->BC.B.h);break; case RES7_C: M_RES(7,R->BC.B.l);break; +case RES7_D: M_RES(7,R->DE.B.h);break; case RES7_E: M_RES(7,R->DE.B.l);break; +case RES7_H: M_RES(7,R->HL.B.h);break; case RES7_L: M_RES(7,R->HL.B.l);break; +case RES7_xHL: I=RdZ80(R->HL.W);M_RES(7,I);WrZ80(R->HL.W,I);break; +case RES7_A: M_RES(7,R->AF.B.h);break; + +case SET0_B: M_SET(0,R->BC.B.h);break; case SET0_C: M_SET(0,R->BC.B.l);break; +case SET0_D: M_SET(0,R->DE.B.h);break; case SET0_E: M_SET(0,R->DE.B.l);break; +case SET0_H: M_SET(0,R->HL.B.h);break; case SET0_L: M_SET(0,R->HL.B.l);break; +case SET0_xHL: I=RdZ80(R->HL.W);M_SET(0,I);WrZ80(R->HL.W,I);break; +case SET0_A: M_SET(0,R->AF.B.h);break; + +case SET1_B: M_SET(1,R->BC.B.h);break; case SET1_C: M_SET(1,R->BC.B.l);break; +case SET1_D: M_SET(1,R->DE.B.h);break; case SET1_E: M_SET(1,R->DE.B.l);break; +case SET1_H: M_SET(1,R->HL.B.h);break; case SET1_L: M_SET(1,R->HL.B.l);break; +case SET1_xHL: I=RdZ80(R->HL.W);M_SET(1,I);WrZ80(R->HL.W,I);break; +case SET1_A: M_SET(1,R->AF.B.h);break; + +case SET2_B: M_SET(2,R->BC.B.h);break; case SET2_C: M_SET(2,R->BC.B.l);break; +case SET2_D: M_SET(2,R->DE.B.h);break; case SET2_E: M_SET(2,R->DE.B.l);break; +case SET2_H: M_SET(2,R->HL.B.h);break; case SET2_L: M_SET(2,R->HL.B.l);break; +case SET2_xHL: I=RdZ80(R->HL.W);M_SET(2,I);WrZ80(R->HL.W,I);break; +case SET2_A: M_SET(2,R->AF.B.h);break; + +case SET3_B: M_SET(3,R->BC.B.h);break; case SET3_C: M_SET(3,R->BC.B.l);break; +case SET3_D: M_SET(3,R->DE.B.h);break; case SET3_E: M_SET(3,R->DE.B.l);break; +case SET3_H: M_SET(3,R->HL.B.h);break; case SET3_L: M_SET(3,R->HL.B.l);break; +case SET3_xHL: I=RdZ80(R->HL.W);M_SET(3,I);WrZ80(R->HL.W,I);break; +case SET3_A: M_SET(3,R->AF.B.h);break; + +case SET4_B: M_SET(4,R->BC.B.h);break; case SET4_C: M_SET(4,R->BC.B.l);break; +case SET4_D: M_SET(4,R->DE.B.h);break; case SET4_E: M_SET(4,R->DE.B.l);break; +case SET4_H: M_SET(4,R->HL.B.h);break; case SET4_L: M_SET(4,R->HL.B.l);break; +case SET4_xHL: I=RdZ80(R->HL.W);M_SET(4,I);WrZ80(R->HL.W,I);break; +case SET4_A: M_SET(4,R->AF.B.h);break; + +case SET5_B: M_SET(5,R->BC.B.h);break; case SET5_C: M_SET(5,R->BC.B.l);break; +case SET5_D: M_SET(5,R->DE.B.h);break; case SET5_E: M_SET(5,R->DE.B.l);break; +case SET5_H: M_SET(5,R->HL.B.h);break; case SET5_L: M_SET(5,R->HL.B.l);break; +case SET5_xHL: I=RdZ80(R->HL.W);M_SET(5,I);WrZ80(R->HL.W,I);break; +case SET5_A: M_SET(5,R->AF.B.h);break; + +case SET6_B: M_SET(6,R->BC.B.h);break; case SET6_C: M_SET(6,R->BC.B.l);break; +case SET6_D: M_SET(6,R->DE.B.h);break; case SET6_E: M_SET(6,R->DE.B.l);break; +case SET6_H: M_SET(6,R->HL.B.h);break; case SET6_L: M_SET(6,R->HL.B.l);break; +case SET6_xHL: I=RdZ80(R->HL.W);M_SET(6,I);WrZ80(R->HL.W,I);break; +case SET6_A: M_SET(6,R->AF.B.h);break; + +case SET7_B: M_SET(7,R->BC.B.h);break; case SET7_C: M_SET(7,R->BC.B.l);break; +case SET7_D: M_SET(7,R->DE.B.h);break; case SET7_E: M_SET(7,R->DE.B.l);break; +case SET7_H: M_SET(7,R->HL.B.h);break; case SET7_L: M_SET(7,R->HL.B.l);break; +case SET7_xHL: I=RdZ80(R->HL.W);M_SET(7,I);WrZ80(R->HL.W,I);break; +case SET7_A: M_SET(7,R->AF.B.h);break; diff --git a/MCUME_esp32/espspeccy/main/CodesED.h b/MCUME_esp32/espspeccy/main/CodesED.h new file mode 100755 index 0000000..e6deae5 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/CodesED.h @@ -0,0 +1,304 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesED.h **/ +/** **/ +/** This file contains implementation for the ED table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +/** This is a special patch for emulating BIOS calls: ********/ +case DB_FE: PatchZ80(R);break; +/*************************************************************/ + +case ADC_HL_BC: M_ADCW(BC);break; +case ADC_HL_DE: M_ADCW(DE);break; +case ADC_HL_HL: M_ADCW(HL);break; +case ADC_HL_SP: M_ADCW(SP);break; + +case SBC_HL_BC: M_SBCW(BC);break; +case SBC_HL_DE: M_SBCW(DE);break; +case SBC_HL_HL: M_SBCW(HL);break; +case SBC_HL_SP: M_SBCW(SP);break; + +case LD_xWORDe_HL: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; +case LD_xWORDe_DE: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->DE.B.l); + WrZ80(J.W,R->DE.B.h); + break; +case LD_xWORDe_BC: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->BC.B.l); + WrZ80(J.W,R->BC.B.h); + break; +case LD_xWORDe_SP: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->SP.B.l); + WrZ80(J.W,R->SP.B.h); + break; + +case LD_HL_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; +case LD_DE_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->DE.B.l=RdZ80(J.W++); + R->DE.B.h=RdZ80(J.W); + break; +case LD_BC_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->BC.B.l=RdZ80(J.W++); + R->BC.B.h=RdZ80(J.W); + break; +case LD_SP_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->SP.B.l=RdZ80(J.W++); + R->SP.B.h=RdZ80(J.W); + break; + +case RRD: + I=RdZ80(R->HL.W); + J.B.l=(I>>4)|(R->AF.B.h<<4); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I&0x0F)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; +case RLD: + I=RdZ80(R->HL.W); + J.B.l=(I<<4)|(R->AF.B.h&0x0F); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I>>4)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; + +case LD_A_I: + R->AF.B.h=R->I; + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&IFF_2? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_A_R: + R->R++; + R->AF.B.h=(byte)(R->R-R->ICount); + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&IFF_2? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_I_A: R->I=R->AF.B.h;break; +case LD_R_A: break; + +case IM_0: R->IFF&=~(IFF_IM1|IFF_IM2);break; +case IM_1: R->IFF=(R->IFF&~IFF_IM2)|IFF_IM1;break; +case IM_2: R->IFF=(R->IFF&~IFF_IM1)|IFF_IM2;break; + +case RETI: +case RETN: if(R->IFF&IFF_2) R->IFF|=IFF_1; else R->IFF&=~IFF_1; + M_RET;break; + +case NEG: I=R->AF.B.h;R->AF.B.h=0;M_SUB(I);break; + +case IN_B_xC: M_IN(R->BC.B.h);break; +case IN_C_xC: M_IN(R->BC.B.l);break; +case IN_D_xC: M_IN(R->DE.B.h);break; +case IN_E_xC: M_IN(R->DE.B.l);break; +case IN_H_xC: M_IN(R->HL.B.h);break; +case IN_L_xC: M_IN(R->HL.B.l);break; +case IN_A_xC: M_IN(R->AF.B.h);break; +case IN_F_xC: M_IN(J.B.l);break; + +case OUT_xC_B: OutZ80(R->BC.W,R->BC.B.h);break; +case OUT_xC_C: OutZ80(R->BC.W,R->BC.B.l);break; +case OUT_xC_D: OutZ80(R->BC.W,R->DE.B.h);break; +case OUT_xC_E: OutZ80(R->BC.W,R->DE.B.l);break; +case OUT_xC_H: OutZ80(R->BC.W,R->HL.B.h);break; +case OUT_xC_L: OutZ80(R->BC.W,R->HL.B.l);break; +case OUT_xC_A: OutZ80(R->BC.W,R->AF.B.h);break; + +case INI: + WrZ80(R->HL.W++,InZ80(R->BC.W)); + --R->BC.B.h; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INIR: + do + { + WrZ80(R->HL.W++,InZ80(R->BC.W)); + --R->BC.B.h;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case IND: + WrZ80(R->HL.W--,InZ80(R->BC.W)); + --R->BC.B.h; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INDR: + do + { + WrZ80(R->HL.W--,InZ80(R->BC.W)); + --R->BC.B.h;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case OUTI: + --R->BC.B.h; + I=RdZ80(R->HL.W++); + OutZ80(R->BC.W,I); + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG)|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + break; + +case OTIR: + do + { + --R->BC.B.h; + I=RdZ80(R->HL.W++); + OutZ80(R->BC.W,I); + R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) + { + R->AF.B.l=N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->PC.W-=2; + } + else + { + R->AF.B.l=Z_FLAG|N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->ICount+=5; + } + break; + +case OUTD: + --R->BC.B.h; + I=RdZ80(R->HL.W--); + OutZ80(R->BC.W,I); + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG)|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + break; + +case OTDR: + do + { + --R->BC.B.h; + I=RdZ80(R->HL.W--); + OutZ80(R->BC.W,I); + R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) + { + R->AF.B.l=N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->PC.W-=2; + } + else + { + R->AF.B.l=Z_FLAG|N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->ICount+=5; + } + break; + +case LDI: + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + --R->BC.W; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDIR: + do + { + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case LDD: + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + --R->BC.W; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDDR: + do + { + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case CPI: + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + --R->BC.W; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPIR: + do + { + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&J.B.l&&(R->ICount>0)); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; + +case CPD: + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + --R->BC.W; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPDR: + do + { + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&J.B.l); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; diff --git a/MCUME_esp32/espspeccy/main/CodesXCB.h b/MCUME_esp32/espspeccy/main/CodesXCB.h new file mode 100755 index 0000000..d0873ce --- /dev/null +++ b/MCUME_esp32/espspeccy/main/CodesXCB.h @@ -0,0 +1,64 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXCB.h **/ +/** **/ +/** This file contains implementation for FD/DD-CB tables **/ +/** of Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_xHL: I=RdZ80(J.W);M_RLC(I);WrZ80(J.W,I);break; +case RRC_xHL: I=RdZ80(J.W);M_RRC(I);WrZ80(J.W,I);break; +case RL_xHL: I=RdZ80(J.W);M_RL(I);WrZ80(J.W,I);break; +case RR_xHL: I=RdZ80(J.W);M_RR(I);WrZ80(J.W,I);break; +case SLA_xHL: I=RdZ80(J.W);M_SLA(I);WrZ80(J.W,I);break; +case SRA_xHL: I=RdZ80(J.W);M_SRA(I);WrZ80(J.W,I);break; +case SLL_xHL: I=RdZ80(J.W);M_SLL(I);WrZ80(J.W,I);break; +case SRL_xHL: I=RdZ80(J.W);M_SRL(I);WrZ80(J.W,I);break; + +case BIT0_B: case BIT0_C: case BIT0_D: case BIT0_E: +case BIT0_H: case BIT0_L: case BIT0_A: +case BIT0_xHL: I=RdZ80(J.W);M_BIT(0,I);break; +case BIT1_B: case BIT1_C: case BIT1_D: case BIT1_E: +case BIT1_H: case BIT1_L: case BIT1_A: +case BIT1_xHL: I=RdZ80(J.W);M_BIT(1,I);break; +case BIT2_B: case BIT2_C: case BIT2_D: case BIT2_E: +case BIT2_H: case BIT2_L: case BIT2_A: +case BIT2_xHL: I=RdZ80(J.W);M_BIT(2,I);break; +case BIT3_B: case BIT3_C: case BIT3_D: case BIT3_E: +case BIT3_H: case BIT3_L: case BIT3_A: +case BIT3_xHL: I=RdZ80(J.W);M_BIT(3,I);break; +case BIT4_B: case BIT4_C: case BIT4_D: case BIT4_E: +case BIT4_H: case BIT4_L: case BIT4_A: +case BIT4_xHL: I=RdZ80(J.W);M_BIT(4,I);break; +case BIT5_B: case BIT5_C: case BIT5_D: case BIT5_E: +case BIT5_H: case BIT5_L: case BIT5_A: +case BIT5_xHL: I=RdZ80(J.W);M_BIT(5,I);break; +case BIT6_B: case BIT6_C: case BIT6_D: case BIT6_E: +case BIT6_H: case BIT6_L: case BIT6_A: +case BIT6_xHL: I=RdZ80(J.W);M_BIT(6,I);break; +case BIT7_B: case BIT7_C: case BIT7_D: case BIT7_E: +case BIT7_H: case BIT7_L: case BIT7_A: +case BIT7_xHL: I=RdZ80(J.W);M_BIT(7,I);break; + +case RES0_xHL: I=RdZ80(J.W);M_RES(0,I);WrZ80(J.W,I);break; +case RES1_xHL: I=RdZ80(J.W);M_RES(1,I);WrZ80(J.W,I);break; +case RES2_xHL: I=RdZ80(J.W);M_RES(2,I);WrZ80(J.W,I);break; +case RES3_xHL: I=RdZ80(J.W);M_RES(3,I);WrZ80(J.W,I);break; +case RES4_xHL: I=RdZ80(J.W);M_RES(4,I);WrZ80(J.W,I);break; +case RES5_xHL: I=RdZ80(J.W);M_RES(5,I);WrZ80(J.W,I);break; +case RES6_xHL: I=RdZ80(J.W);M_RES(6,I);WrZ80(J.W,I);break; +case RES7_xHL: I=RdZ80(J.W);M_RES(7,I);WrZ80(J.W,I);break; + +case SET0_xHL: I=RdZ80(J.W);M_SET(0,I);WrZ80(J.W,I);break; +case SET1_xHL: I=RdZ80(J.W);M_SET(1,I);WrZ80(J.W,I);break; +case SET2_xHL: I=RdZ80(J.W);M_SET(2,I);WrZ80(J.W,I);break; +case SET3_xHL: I=RdZ80(J.W);M_SET(3,I);WrZ80(J.W,I);break; +case SET4_xHL: I=RdZ80(J.W);M_SET(4,I);WrZ80(J.W,I);break; +case SET5_xHL: I=RdZ80(J.W);M_SET(5,I);WrZ80(J.W,I);break; +case SET6_xHL: I=RdZ80(J.W);M_SET(6,I);WrZ80(J.W,I);break; +case SET7_xHL: I=RdZ80(J.W);M_SET(7,I);WrZ80(J.W,I);break; diff --git a/MCUME_esp32/espspeccy/main/CodesXX.h b/MCUME_esp32/espspeccy/main/CodesXX.h new file mode 100755 index 0000000..970b30e --- /dev/null +++ b/MCUME_esp32/espspeccy/main/CodesXX.h @@ -0,0 +1,396 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXX.h **/ +/** **/ +/** This file contains implementation for FD/DD tables of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=6;M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { R->ICount-=6;M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=6;M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { R->ICount-=6;M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->XX.B.h);break; +case ADD_L: M_ADD(R->XX.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_ADD(I);break; +case ADD_BYTE: I=OpZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->XX.B.h);break; +case SUB_L: M_SUB(R->XX.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_SUB(I);break; +case SUB_BYTE: I=OpZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->XX.B.h);break; +case AND_L: M_AND(R->XX.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_AND(I);break; +case AND_BYTE: I=OpZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->XX.B.h);break; +case OR_L: M_OR(R->XX.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_OR(I);break; +case OR_BYTE: I=OpZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->XX.B.h);break; +case ADC_L: M_ADC(R->XX.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_ADC(I);break; +case ADC_BYTE: I=OpZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->XX.B.h);break; +case SBC_L: M_SBC(R->XX.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_SBC(I);break; +case SBC_BYTE: I=OpZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->XX.B.h);break; +case XOR_L: M_XOR(R->XX.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_XOR(I);break; +case XOR_BYTE: I=OpZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->XX.B.h);break; +case CP_L: M_CP(R->XX.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_CP(I);break; +case CP_BYTE: I=OpZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(XX);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->XX.W;JumpZ80(R->PC.W);break; +case LD_SP_HL: R->SP.W=R->XX.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(XX,BC);break; +case ADD_HL_DE: M_ADDW(XX,DE);break; +case ADD_HL_HL: M_ADDW(XX,XX);break; +case ADD_HL_SP: M_ADDW(XX,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->XX.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->XX.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->XX.B.h);break; +case DEC_L: M_DEC(R->XX.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_DEC(I); + WrZ80(R->XX.W+(offset)OpZ80(R->PC.W++),I); + break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->XX.B.h);break; +case INC_L: M_INC(R->XX.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_INC(I); + WrZ80(R->XX.W+(offset)OpZ80(R->PC.W++),I); + break; + +case RLCA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(XX);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(XX);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { R->ICount-=5;M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: I=OpZ80(R->PC.W++);OutZ80(I|(R->AF.W&0xFF00),R->AF.B.h);break; +case INA: I=OpZ80(R->PC.W++);R->AF.B.h=InZ80(I|(R->AF.W&0xFF00));break; + +case HALT: + R->PC.W--; + R->IFF|=IFF_HALT; + R->IBackup=0; + R->ICount=0; + break; + +case DI: + if(R->IFF&IFF_EI) R->ICount+=R->IBackup-1; + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + break; + +case EI: + if(!(R->IFF&(IFF_1|IFF_EI))) + { + R->IFF|=IFF_2|IFF_EI; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->XX.B.h=R->BC.B.h;break; +case LD_L_B: R->XX.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->XX.B.h=R->BC.B.l;break; +case LD_L_C: R->XX.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->XX.B.h=R->DE.B.h;break; +case LD_L_D: R->XX.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->XX.B.h=R->DE.B.l;break; +case LD_L_E: R->XX.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->XX.B.h;break; +case LD_C_H: R->BC.B.l=R->XX.B.h;break; +case LD_D_H: R->DE.B.h=R->XX.B.h;break; +case LD_E_H: R->DE.B.l=R->XX.B.h;break; +case LD_H_H: R->XX.B.h=R->XX.B.h;break; +case LD_L_H: R->XX.B.l=R->XX.B.h;break; +case LD_A_H: R->AF.B.h=R->XX.B.h;break; +case LD_xHL_H: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->XX.B.l;break; +case LD_C_L: R->BC.B.l=R->XX.B.l;break; +case LD_D_L: R->DE.B.h=R->XX.B.l;break; +case LD_E_L: R->DE.B.l=R->XX.B.l;break; +case LD_H_L: R->XX.B.h=R->XX.B.l;break; +case LD_L_L: R->XX.B.l=R->XX.B.l;break; +case LD_A_L: R->AF.B.h=R->XX.B.l;break; +case LD_xHL_L: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->XX.B.h=R->AF.B.h;break; +case LD_L_A: R->XX.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; + +case LD_B_BYTE: R->BC.B.h=OpZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=OpZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=OpZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=OpZ80(R->PC.W++);break; +case LD_H_BYTE: R->XX.B.h=OpZ80(R->PC.W++);break; +case LD_L_BYTE: R->XX.B.l=OpZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=OpZ80(R->PC.W++);break; +case LD_xHL_BYTE: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,OpZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->XX.B.l); + WrZ80(J.W,R->XX.B.h); + break; + +case LD_HL_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->XX.B.l=RdZ80(J.W++); + R->XX.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->XX.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->XX.B.h); + R->XX.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; diff --git a/MCUME_esp32/espspeccy/main/Tables.h b/MCUME_esp32/espspeccy/main/Tables.h new file mode 100755 index 0000000..ba1ebee --- /dev/null +++ b/MCUME_esp32/espspeccy/main/Tables.h @@ -0,0 +1,447 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Tables.h **/ +/** **/ +/** This file contains tables of used by Z80 emulation to **/ +/** compute SIGN,ZERO, PARITY flags, and decimal correction **/ +/** There are also timing tables for Z80 opcodes. This file **/ +/** is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +static const byte Cycles[256] = +{ + 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, + 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4, + 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, + 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 5,10,10,10,10,11, 7,11, 5,10,10, 0,10,17, 7,11, + 5,10,10,11,10,11, 7,11, 5, 4,10,11,10, 0, 7,11, + 5,10,10,19,10,11, 7,11, 5, 4,10, 4,10, 0, 7,11, + 5,10,10, 4,10,11, 7,11, 5, 6,10, 4,10, 0, 7,11 +}; + +static const byte CyclesCB[256] = +{ + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8 +}; + +static const byte CyclesED[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12,12,15,20, 8,14, 8, 9,12,12,15,20, 0,14, 0, 9, + 12,12,15,20, 0, 0, 8, 9,12,12,15,20, 0, 0, 8, 9, + 12,12,15,20, 0, 0, 0,18,12,12,15,20, 0, 0, 0,18, + 12, 0,15,20, 0, 0, 0, 0,12,12,15,20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,16,16,16, 0, 0, 0, 0,16,16,16,16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const byte CyclesXX[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0,14,20,10, 9, 9, 9, 0, 0,15,20,10, 9, 9, 9, 0, + 0, 0, 0, 0,23,23,19, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 9, 9, 9, 9, 9, 9,19, 9, 9, 9, 9, 9, 9, 9,19, 9, + 19,19,19,19,19,19,19,19, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,14, 0,23, 0,15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0 +}; + +static const byte CyclesXXCB[256] = +{ + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0 +}; + +static const byte ZSTable[256] = +{ + Z_FLAG,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG +}; + +static const byte PZSTable[256] = +{ + Z_FLAG|P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG +}; + +static const word DAATable[2048] = +{ + 0x0044,0x0100,0x0200,0x0304,0x0400,0x0504,0x0604,0x0700, + 0x0808,0x090C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1000,0x1104,0x1204,0x1300,0x1404,0x1500,0x1600,0x1704, + 0x180C,0x1908,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2020,0x2124,0x2224,0x2320,0x2424,0x2520,0x2620,0x2724, + 0x282C,0x2928,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3024,0x3120,0x3220,0x3324,0x3420,0x3524,0x3624,0x3720, + 0x3828,0x392C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4000,0x4104,0x4204,0x4300,0x4404,0x4500,0x4600,0x4704, + 0x480C,0x4908,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5004,0x5100,0x5200,0x5304,0x5400,0x5504,0x5604,0x5700, + 0x5808,0x590C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6024,0x6120,0x6220,0x6324,0x6420,0x6524,0x6624,0x6720, + 0x6828,0x692C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7020,0x7124,0x7224,0x7320,0x7424,0x7520,0x7620,0x7724, + 0x782C,0x7928,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8080,0x8184,0x8284,0x8380,0x8484,0x8580,0x8680,0x8784, + 0x888C,0x8988,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9084,0x9180,0x9280,0x9384,0x9480,0x9584,0x9684,0x9780, + 0x9888,0x998C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6025,0x6121,0x6221,0x6325,0x6421,0x6525,0x6625,0x6721, + 0x6829,0x692D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7021,0x7125,0x7225,0x7321,0x7425,0x7521,0x7621,0x7725, + 0x782D,0x7929,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8081,0x8185,0x8285,0x8381,0x8485,0x8581,0x8681,0x8785, + 0x888D,0x8989,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9085,0x9181,0x9281,0x9385,0x9481,0x9585,0x9685,0x9781, + 0x9889,0x998D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA0A5,0xA1A1,0xA2A1,0xA3A5,0xA4A1,0xA5A5,0xA6A5,0xA7A1, + 0xA8A9,0xA9AD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB0A1,0xB1A5,0xB2A5,0xB3A1,0xB4A5,0xB5A1,0xB6A1,0xB7A5, + 0xB8AD,0xB9A9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC085,0xC181,0xC281,0xC385,0xC481,0xC585,0xC685,0xC781, + 0xC889,0xC98D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD081,0xD185,0xD285,0xD381,0xD485,0xD581,0xD681,0xD785, + 0xD88D,0xD989,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE0A1,0xE1A5,0xE2A5,0xE3A1,0xE4A5,0xE5A1,0xE6A1,0xE7A5, + 0xE8AD,0xE9A9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF0A5,0xF1A1,0xF2A1,0xF3A5,0xF4A1,0xF5A5,0xF6A5,0xF7A1, + 0xF8A9,0xF9AD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0604,0x0700,0x0808,0x090C,0x0A0C,0x0B08,0x0C0C,0x0D08, + 0x0E08,0x0F0C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1600,0x1704,0x180C,0x1908,0x1A08,0x1B0C,0x1C08,0x1D0C, + 0x1E0C,0x1F08,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2620,0x2724,0x282C,0x2928,0x2A28,0x2B2C,0x2C28,0x2D2C, + 0x2E2C,0x2F28,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3624,0x3720,0x3828,0x392C,0x3A2C,0x3B28,0x3C2C,0x3D28, + 0x3E28,0x3F2C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4600,0x4704,0x480C,0x4908,0x4A08,0x4B0C,0x4C08,0x4D0C, + 0x4E0C,0x4F08,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5604,0x5700,0x5808,0x590C,0x5A0C,0x5B08,0x5C0C,0x5D08, + 0x5E08,0x5F0C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6624,0x6720,0x6828,0x692C,0x6A2C,0x6B28,0x6C2C,0x6D28, + 0x6E28,0x6F2C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7620,0x7724,0x782C,0x7928,0x7A28,0x7B2C,0x7C28,0x7D2C, + 0x7E2C,0x7F28,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8680,0x8784,0x888C,0x8988,0x8A88,0x8B8C,0x8C88,0x8D8C, + 0x8E8C,0x8F88,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9684,0x9780,0x9888,0x998C,0x9A8C,0x9B88,0x9C8C,0x9D88, + 0x9E88,0x9F8C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6625,0x6721,0x6829,0x692D,0x6A2D,0x6B29,0x6C2D,0x6D29, + 0x6E29,0x6F2D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7621,0x7725,0x782D,0x7929,0x7A29,0x7B2D,0x7C29,0x7D2D, + 0x7E2D,0x7F29,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8681,0x8785,0x888D,0x8989,0x8A89,0x8B8D,0x8C89,0x8D8D, + 0x8E8D,0x8F89,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9685,0x9781,0x9889,0x998D,0x9A8D,0x9B89,0x9C8D,0x9D89, + 0x9E89,0x9F8D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA6A5,0xA7A1,0xA8A9,0xA9AD,0xAAAD,0xABA9,0xACAD,0xADA9, + 0xAEA9,0xAFAD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB6A1,0xB7A5,0xB8AD,0xB9A9,0xBAA9,0xBBAD,0xBCA9,0xBDAD, + 0xBEAD,0xBFA9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC685,0xC781,0xC889,0xC98D,0xCA8D,0xCB89,0xCC8D,0xCD89, + 0xCE89,0xCF8D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD681,0xD785,0xD88D,0xD989,0xDA89,0xDB8D,0xDC89,0xDD8D, + 0xDE8D,0xDF89,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE6A1,0xE7A5,0xE8AD,0xE9A9,0xEAA9,0xEBAD,0xECA9,0xEDAD, + 0xEEAD,0xEFA9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF6A5,0xF7A1,0xF8A9,0xF9AD,0xFAAD,0xFBA9,0xFCAD,0xFDA9, + 0xFEA9,0xFFAD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702, + 0x080A,0x090E,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706, + 0x180E,0x190A,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726, + 0x282E,0x292A,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722, + 0x382A,0x392E,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706, + 0x480E,0x490A,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702, + 0x580A,0x590E,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722, + 0x682A,0x692E,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726, + 0x782E,0x792A,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786, + 0x888E,0x898A,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x9086,0x9182,0x9282,0x9386,0x9482,0x9586,0x9686,0x9782, + 0x988A,0x998E,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xA0A7,0xA1A3,0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3, + 0xA8AB,0xA9AF,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xB0A3,0xB1A7,0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7, + 0xB8AF,0xB9AB,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xC087,0xC183,0xC283,0xC387,0xC483,0xC587,0xC687,0xC783, + 0xC88B,0xC98F,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xD083,0xD187,0xD287,0xD383,0xD487,0xD583,0xD683,0xD787, + 0xD88F,0xD98B,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xE0A3,0xE1A7,0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7, + 0xE8AF,0xE9AB,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xF0A7,0xF1A3,0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3, + 0xF8AB,0xF9AF,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703, + 0x080B,0x090F,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707, + 0x180F,0x190B,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727, + 0x282F,0x292B,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723, + 0x382B,0x392F,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xFABE,0xFBBA,0xFCBE,0xFDBA,0xFEBA,0xFFBE,0x0046,0x0102, + 0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x0A1E,0x0B1A,0x0C1E,0x0D1A,0x0E1A,0x0F1E,0x1002,0x1106, + 0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x1A1A,0x1B1E,0x1C1A,0x1D1E,0x1E1E,0x1F1A,0x2022,0x2126, + 0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x2A3A,0x2B3E,0x2C3A,0x2D3E,0x2E3E,0x2F3A,0x3026,0x3122, + 0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x3A3E,0x3B3A,0x3C3E,0x3D3A,0x3E3A,0x3F3E,0x4002,0x4106, + 0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x4A1A,0x4B1E,0x4C1A,0x4D1E,0x4E1E,0x4F1A,0x5006,0x5102, + 0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x5A1E,0x5B1A,0x5C1E,0x5D1A,0x5E1A,0x5F1E,0x6026,0x6122, + 0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x6A3E,0x6B3A,0x6C3E,0x6D3A,0x6E3A,0x6F3E,0x7022,0x7126, + 0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x7A3A,0x7B3E,0x7C3A,0x7D3E,0x7E3E,0x7F3A,0x8082,0x8186, + 0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x8A9A,0x8B9E,0x8C9A,0x8D9E,0x8E9E,0x8F9A,0x9086,0x9182, + 0x9282,0x9386,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0x9A9F,0x9B9B,0x9C9F,0x9D9B,0x9E9B,0x9F9F,0xA0A7,0xA1A3, + 0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xAABF,0xABBB,0xACBF,0xADBB,0xAEBB,0xAFBF,0xB0A3,0xB1A7, + 0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xBABB,0xBBBF,0xBCBB,0xBDBF,0xBEBF,0xBFBB,0xC087,0xC183, + 0xC283,0xC387,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xCA9F,0xCB9B,0xCC9F,0xCD9B,0xCE9B,0xCF9F,0xD083,0xD187, + 0xD287,0xD383,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xDA9B,0xDB9F,0xDC9B,0xDD9F,0xDE9F,0xDF9B,0xE0A3,0xE1A7, + 0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xEABB,0xEBBF,0xECBB,0xEDBF,0xEEBF,0xEFBB,0xF0A7,0xF1A3, + 0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0xFABF,0xFBBB,0xFCBF,0xFDBB,0xFEBB,0xFFBF,0x0047,0x0103, + 0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x0A1F,0x0B1B,0x0C1F,0x0D1B,0x0E1B,0x0F1F,0x1003,0x1107, + 0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x1A1B,0x1B1F,0x1C1B,0x1D1F,0x1E1F,0x1F1B,0x2023,0x2127, + 0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x2A3B,0x2B3F,0x2C3B,0x2D3F,0x2E3F,0x2F3B,0x3027,0x3123, + 0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F +}; diff --git a/MCUME_esp32/espspeccy/main/Z80.c b/MCUME_esp32/espspeccy/main/Z80.c new file mode 100644 index 0000000..5dc017c --- /dev/null +++ b/MCUME_esp32/espspeccy/main/Z80.c @@ -0,0 +1,685 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.c **/ +/** **/ +/** This file contains implementation for Z80 CPU. Don't **/ +/** forget to provide RdZ80(), WrZ80(), InZ80(), OutZ80(), **/ +/** LoopZ80(), and PatchZ80() functions to accomodate the **/ +/** emulated machine's architecture. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "Z80.h" +#include "Tables.h" +#include + +/** INLINE ***************************************************/ +/** C99 standard has "inline", but older compilers used **/ +/** __inline for the same purpose. **/ +/*************************************************************/ +#ifdef __C99__ +#define INLINE static inline +#else +#define INLINE static __inline +#endif + +/** System-Dependent Stuff ***********************************/ +/** This is system-dependent code put here to speed things **/ +/** up. It has to stay inlined to be fast. **/ +/*************************************************************/ +#ifdef COLEM +#define RdZ80 RDZ80 +extern byte *ROMPage[]; +INLINE byte RdZ80(word A) { return(ROMPage[A>>13][A&0x1FFF]); } +#endif + +#ifdef SPECCY +#define RdZ80 RDZ80 +#define WrZ80 WRZ80 +extern byte *Page[],*ROM; +INLINE byte RdZ80(word A) { return(Page[A>>13][A&0x1FFF]); } +INLINE void WrZ80(word A,byte V) { if(Page[A>>13]>13][A&0x1FFF]=V; } +#endif + +#ifdef MG +#define RdZ80 RDZ80 +extern byte *Page[]; +INLINE byte RdZ80(word A) { return(Page[A>>13][A&0x1FFF]); } +#endif + +#ifdef FMSX +#define FAST_RDOP +extern byte *RAM[]; +INLINE byte OpZ80(word A) { return(RAM[A>>13][A&0x1FFF]); } +#endif + +/** FAST_RDOP ************************************************/ +/** With this #define not present, RdZ80() should perform **/ +/** the functions of OpZ80(). **/ +/*************************************************************/ +#ifndef FAST_RDOP +#define OpZ80(A) RdZ80(A) +#endif + +#define S(Fl) R->AF.B.l|=Fl +#define R(Fl) R->AF.B.l&=~(Fl) +#define FLAGS(Rg,Fl) R->AF.B.l=Fl|ZSTable[Rg] + +#define M_RLC(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|R->AF.B.l;R->AF.B.l|=PZSTable[Rg] +#define M_RRC(Rg) \ + R->AF.B.l=Rg&0x01;Rg=(Rg>>1)|(R->AF.B.l<<7);R->AF.B.l|=PZSTable[Rg] +#define M_RL(Rg) \ + if(Rg&0x80) \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]; \ + } +#define M_RR(Rg) \ + if(Rg&0x01) \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]; \ + } + +#define M_SLA(Rg) \ + R->AF.B.l=Rg>>7;Rg<<=1;R->AF.B.l|=PZSTable[Rg] +#define M_SRA(Rg) \ + R->AF.B.l=Rg&C_FLAG;Rg=(Rg>>1)|(Rg&0x80);R->AF.B.l|=PZSTable[Rg] + +#define M_SLL(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|0x01;R->AF.B.l|=PZSTable[Rg] +#define M_SRL(Rg) \ + R->AF.B.l=Rg&0x01;Rg>>=1;R->AF.B.l|=PZSTable[Rg] + +#define M_BIT(Bit,Rg) \ + R->AF.B.l=(R->AF.B.l&C_FLAG)|H_FLAG|PZSTable[Rg&(1<Rg.B.l=OpZ80(R->SP.W++);R->Rg.B.h=OpZ80(R->SP.W++) +#define M_PUSH(Rg) \ + WrZ80(--R->SP.W,R->Rg.B.h);WrZ80(--R->SP.W,R->Rg.B.l) + +#define M_CALL \ + J.B.l=OpZ80(R->PC.W++);J.B.h=OpZ80(R->PC.W++); \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l); \ + R->PC.W=J.W; \ + JumpZ80(J.W) + +#define M_JP J.B.l=OpZ80(R->PC.W++);J.B.h=OpZ80(R->PC.W);R->PC.W=J.W;JumpZ80(J.W) +#define M_JR R->PC.W+=(offset)OpZ80(R->PC.W)+1;JumpZ80(R->PC.W) +#define M_RET R->PC.B.l=OpZ80(R->SP.W++);R->PC.B.h=OpZ80(R->SP.W++);JumpZ80(R->PC.W) + +#define M_RST(Ad) \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l);R->PC.W=Ad;JumpZ80(Ad) + +#define M_LDWORD(Rg) \ + R->Rg.B.l=OpZ80(R->PC.W++);R->Rg.B.h=OpZ80(R->PC.W++) + +#define M_ADD(Rg) \ + J.W=R->AF.B.h+Rg; \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SUB(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_ADC(Rg) \ + J.W=R->AF.B.h+Rg+(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SBC(Rg) \ + J.W=R->AF.B.h-Rg-(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_CP(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG) + +#define M_AND(Rg) R->AF.B.h&=Rg;R->AF.B.l=H_FLAG|PZSTable[R->AF.B.h] +#define M_OR(Rg) R->AF.B.h|=Rg;R->AF.B.l=PZSTable[R->AF.B.h] +#define M_XOR(Rg) R->AF.B.h^=Rg;R->AF.B.l=PZSTable[R->AF.B.h] + +#define M_IN(Rg) \ + Rg=InZ80(R->BC.W); \ + R->AF.B.l=PZSTable[Rg]|(R->AF.B.l&C_FLAG) + +#define M_INC(Rg) \ + Rg++; \ + R->AF.B.l= \ + (R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x80? V_FLAG:0)|(Rg&0x0F? 0:H_FLAG) + +#define M_DEC(Rg) \ + Rg--; \ + R->AF.B.l= \ + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x7F? V_FLAG:0)|((Rg&0x0F)==0x0F? H_FLAG:0) + +#define M_ADDW(Rg1,Rg2) \ + J.W=(R->Rg1.W+R->Rg2.W)&0xFFFF; \ + R->AF.B.l= \ + (R->AF.B.l&~(H_FLAG|N_FLAG|C_FLAG))| \ + ((R->Rg1.W^R->Rg2.W^J.W)&0x1000? H_FLAG:0)| \ + (((long)R->Rg1.W+(long)R->Rg2.W)&0x10000? C_FLAG:0); \ + R->Rg1.W=J.W + +#define M_ADCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W+R->Rg.W+I)&0xFFFF; \ + R->AF.B.l= \ + (((long)R->HL.W+(long)R->Rg.W+(long)I)&0x10000? C_FLAG:0)| \ + (~(R->HL.W^R->Rg.W)&(R->Rg.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +#define M_SBCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W-R->Rg.W-I)&0xFFFF; \ + R->AF.B.l= \ + N_FLAG| \ + (((long)R->HL.W-(long)R->Rg.W-(long)I)&0x10000? C_FLAG:0)| \ + ((R->HL.W^R->Rg.W)&(R->HL.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +enum Codes +{ + NOP,LD_BC_WORD,LD_xBC_A,INC_BC,INC_B,DEC_B,LD_B_BYTE,RLCA, + EX_AF_AF,ADD_HL_BC,LD_A_xBC,DEC_BC,INC_C,DEC_C,LD_C_BYTE,RRCA, + DJNZ,LD_DE_WORD,LD_xDE_A,INC_DE,INC_D,DEC_D,LD_D_BYTE,RLA, + JR,ADD_HL_DE,LD_A_xDE,DEC_DE,INC_E,DEC_E,LD_E_BYTE,RRA, + JR_NZ,LD_HL_WORD,LD_xWORD_HL,INC_HL,INC_H,DEC_H,LD_H_BYTE,DAA, + JR_Z,ADD_HL_HL,LD_HL_xWORD,DEC_HL,INC_L,DEC_L,LD_L_BYTE,CPL, + JR_NC,LD_SP_WORD,LD_xWORD_A,INC_SP,INC_xHL,DEC_xHL,LD_xHL_BYTE,SCF, + JR_C,ADD_HL_SP,LD_A_xWORD,DEC_SP,INC_A,DEC_A,LD_A_BYTE,CCF, + LD_B_B,LD_B_C,LD_B_D,LD_B_E,LD_B_H,LD_B_L,LD_B_xHL,LD_B_A, + LD_C_B,LD_C_C,LD_C_D,LD_C_E,LD_C_H,LD_C_L,LD_C_xHL,LD_C_A, + LD_D_B,LD_D_C,LD_D_D,LD_D_E,LD_D_H,LD_D_L,LD_D_xHL,LD_D_A, + LD_E_B,LD_E_C,LD_E_D,LD_E_E,LD_E_H,LD_E_L,LD_E_xHL,LD_E_A, + LD_H_B,LD_H_C,LD_H_D,LD_H_E,LD_H_H,LD_H_L,LD_H_xHL,LD_H_A, + LD_L_B,LD_L_C,LD_L_D,LD_L_E,LD_L_H,LD_L_L,LD_L_xHL,LD_L_A, + LD_xHL_B,LD_xHL_C,LD_xHL_D,LD_xHL_E,LD_xHL_H,LD_xHL_L,HALT,LD_xHL_A, + LD_A_B,LD_A_C,LD_A_D,LD_A_E,LD_A_H,LD_A_L,LD_A_xHL,LD_A_A, + ADD_B,ADD_C,ADD_D,ADD_E,ADD_H,ADD_L,ADD_xHL,ADD_A, + ADC_B,ADC_C,ADC_D,ADC_E,ADC_H,ADC_L,ADC_xHL,ADC_A, + SUB_B,SUB_C,SUB_D,SUB_E,SUB_H,SUB_L,SUB_xHL,SUB_A, + SBC_B,SBC_C,SBC_D,SBC_E,SBC_H,SBC_L,SBC_xHL,SBC_A, + AND_B,AND_C,AND_D,AND_E,AND_H,AND_L,AND_xHL,AND_A, + XOR_B,XOR_C,XOR_D,XOR_E,XOR_H,XOR_L,XOR_xHL,XOR_A, + OR_B,OR_C,OR_D,OR_E,OR_H,OR_L,OR_xHL,OR_A, + CP_B,CP_C,CP_D,CP_E,CP_H,CP_L,CP_xHL,CP_A, + RET_NZ,POP_BC,JP_NZ,JP,CALL_NZ,PUSH_BC,ADD_BYTE,RST00, + RET_Z,RET,JP_Z,PFX_CB,CALL_Z,CALL,ADC_BYTE,RST08, + RET_NC,POP_DE,JP_NC,OUTA,CALL_NC,PUSH_DE,SUB_BYTE,RST10, + RET_C,EXX,JP_C,INA,CALL_C,PFX_DD,SBC_BYTE,RST18, + RET_PO,POP_HL,JP_PO,EX_HL_xSP,CALL_PO,PUSH_HL,AND_BYTE,RST20, + RET_PE,LD_PC_HL,JP_PE,EX_DE_HL,CALL_PE,PFX_ED,XOR_BYTE,RST28, + RET_P,POP_AF,JP_P,DI,CALL_P,PUSH_AF,OR_BYTE,RST30, + RET_M,LD_SP_HL,JP_M,EI,CALL_M,PFX_FD,CP_BYTE,RST38 +}; + +enum CodesCB +{ + RLC_B,RLC_C,RLC_D,RLC_E,RLC_H,RLC_L,RLC_xHL,RLC_A, + RRC_B,RRC_C,RRC_D,RRC_E,RRC_H,RRC_L,RRC_xHL,RRC_A, + RL_B,RL_C,RL_D,RL_E,RL_H,RL_L,RL_xHL,RL_A, + RR_B,RR_C,RR_D,RR_E,RR_H,RR_L,RR_xHL,RR_A, + SLA_B,SLA_C,SLA_D,SLA_E,SLA_H,SLA_L,SLA_xHL,SLA_A, + SRA_B,SRA_C,SRA_D,SRA_E,SRA_H,SRA_L,SRA_xHL,SRA_A, + SLL_B,SLL_C,SLL_D,SLL_E,SLL_H,SLL_L,SLL_xHL,SLL_A, + SRL_B,SRL_C,SRL_D,SRL_E,SRL_H,SRL_L,SRL_xHL,SRL_A, + BIT0_B,BIT0_C,BIT0_D,BIT0_E,BIT0_H,BIT0_L,BIT0_xHL,BIT0_A, + BIT1_B,BIT1_C,BIT1_D,BIT1_E,BIT1_H,BIT1_L,BIT1_xHL,BIT1_A, + BIT2_B,BIT2_C,BIT2_D,BIT2_E,BIT2_H,BIT2_L,BIT2_xHL,BIT2_A, + BIT3_B,BIT3_C,BIT3_D,BIT3_E,BIT3_H,BIT3_L,BIT3_xHL,BIT3_A, + BIT4_B,BIT4_C,BIT4_D,BIT4_E,BIT4_H,BIT4_L,BIT4_xHL,BIT4_A, + BIT5_B,BIT5_C,BIT5_D,BIT5_E,BIT5_H,BIT5_L,BIT5_xHL,BIT5_A, + BIT6_B,BIT6_C,BIT6_D,BIT6_E,BIT6_H,BIT6_L,BIT6_xHL,BIT6_A, + BIT7_B,BIT7_C,BIT7_D,BIT7_E,BIT7_H,BIT7_L,BIT7_xHL,BIT7_A, + RES0_B,RES0_C,RES0_D,RES0_E,RES0_H,RES0_L,RES0_xHL,RES0_A, + RES1_B,RES1_C,RES1_D,RES1_E,RES1_H,RES1_L,RES1_xHL,RES1_A, + RES2_B,RES2_C,RES2_D,RES2_E,RES2_H,RES2_L,RES2_xHL,RES2_A, + RES3_B,RES3_C,RES3_D,RES3_E,RES3_H,RES3_L,RES3_xHL,RES3_A, + RES4_B,RES4_C,RES4_D,RES4_E,RES4_H,RES4_L,RES4_xHL,RES4_A, + RES5_B,RES5_C,RES5_D,RES5_E,RES5_H,RES5_L,RES5_xHL,RES5_A, + RES6_B,RES6_C,RES6_D,RES6_E,RES6_H,RES6_L,RES6_xHL,RES6_A, + RES7_B,RES7_C,RES7_D,RES7_E,RES7_H,RES7_L,RES7_xHL,RES7_A, + SET0_B,SET0_C,SET0_D,SET0_E,SET0_H,SET0_L,SET0_xHL,SET0_A, + SET1_B,SET1_C,SET1_D,SET1_E,SET1_H,SET1_L,SET1_xHL,SET1_A, + SET2_B,SET2_C,SET2_D,SET2_E,SET2_H,SET2_L,SET2_xHL,SET2_A, + SET3_B,SET3_C,SET3_D,SET3_E,SET3_H,SET3_L,SET3_xHL,SET3_A, + SET4_B,SET4_C,SET4_D,SET4_E,SET4_H,SET4_L,SET4_xHL,SET4_A, + SET5_B,SET5_C,SET5_D,SET5_E,SET5_H,SET5_L,SET5_xHL,SET5_A, + SET6_B,SET6_C,SET6_D,SET6_E,SET6_H,SET6_L,SET6_xHL,SET6_A, + SET7_B,SET7_C,SET7_D,SET7_E,SET7_H,SET7_L,SET7_xHL,SET7_A +}; + +enum CodesED +{ + DB_00,DB_01,DB_02,DB_03,DB_04,DB_05,DB_06,DB_07, + DB_08,DB_09,DB_0A,DB_0B,DB_0C,DB_0D,DB_0E,DB_0F, + DB_10,DB_11,DB_12,DB_13,DB_14,DB_15,DB_16,DB_17, + DB_18,DB_19,DB_1A,DB_1B,DB_1C,DB_1D,DB_1E,DB_1F, + DB_20,DB_21,DB_22,DB_23,DB_24,DB_25,DB_26,DB_27, + DB_28,DB_29,DB_2A,DB_2B,DB_2C,DB_2D,DB_2E,DB_2F, + DB_30,DB_31,DB_32,DB_33,DB_34,DB_35,DB_36,DB_37, + DB_38,DB_39,DB_3A,DB_3B,DB_3C,DB_3D,DB_3E,DB_3F, + IN_B_xC,OUT_xC_B,SBC_HL_BC,LD_xWORDe_BC,NEG,RETN,IM_0,LD_I_A, + IN_C_xC,OUT_xC_C,ADC_HL_BC,LD_BC_xWORDe,DB_4C,RETI,DB_,LD_R_A, + IN_D_xC,OUT_xC_D,SBC_HL_DE,LD_xWORDe_DE,DB_54,DB_55,IM_1,LD_A_I, + IN_E_xC,OUT_xC_E,ADC_HL_DE,LD_DE_xWORDe,DB_5C,DB_5D,IM_2,LD_A_R, + IN_H_xC,OUT_xC_H,SBC_HL_HL,LD_xWORDe_HL,DB_64,DB_65,DB_66,RRD, + IN_L_xC,OUT_xC_L,ADC_HL_HL,LD_HL_xWORDe,DB_6C,DB_6D,DB_6E,RLD, + IN_F_xC,DB_71,SBC_HL_SP,LD_xWORDe_SP,DB_74,DB_75,DB_76,DB_77, + IN_A_xC,OUT_xC_A,ADC_HL_SP,LD_SP_xWORDe,DB_7C,DB_7D,DB_7E,DB_7F, + DB_80,DB_81,DB_82,DB_83,DB_84,DB_85,DB_86,DB_87, + DB_88,DB_89,DB_8A,DB_8B,DB_8C,DB_8D,DB_8E,DB_8F, + DB_90,DB_91,DB_92,DB_93,DB_94,DB_95,DB_96,DB_97, + DB_98,DB_99,DB_9A,DB_9B,DB_9C,DB_9D,DB_9E,DB_9F, + LDI,CPI,INI,OUTI,DB_A4,DB_A5,DB_A6,DB_A7, + LDD,CPD,IND,OUTD,DB_AC,DB_AD,DB_AE,DB_AF, + LDIR,CPIR,INIR,OTIR,DB_B4,DB_B5,DB_B6,DB_B7, + LDDR,CPDR,INDR,OTDR,DB_BC,DB_BD,DB_BE,DB_BF, + DB_C0,DB_C1,DB_C2,DB_C3,DB_C4,DB_C5,DB_C6,DB_C7, + DB_C8,DB_C9,DB_CA,DB_CB,DB_CC,DB_CD,DB_CE,DB_CF, + DB_D0,DB_D1,DB_D2,DB_D3,DB_D4,DB_D5,DB_D6,DB_D7, + DB_D8,DB_D9,DB_DA,DB_DB,DB_DC,DB_DD,DB_DE,DB_DF, + DB_E0,DB_E1,DB_E2,DB_E3,DB_E4,DB_E5,DB_E6,DB_E7, + DB_E8,DB_E9,DB_EA,DB_EB,DB_EC,DB_ED,DB_EE,DB_EF, + DB_F0,DB_F1,DB_F2,DB_F3,DB_F4,DB_F5,DB_F6,DB_F7, + DB_F8,DB_F9,DB_FA,DB_FB,DB_FC,DB_FD,DB_FE,DB_FF +}; + +static void CodesCB(register Z80 *R) +{ + register byte I; + + I=OpZ80(R->PC.W++); + R->ICount-=CyclesCB[I]; + switch(I) + { +#include "CodesCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: CB %02X at PC=%04X\n", + (long)(R->User),OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IX + J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD CB %02X %02X at PC=%04X\n", + (long)(R->User),OpZ80(R->PC.W-2),OpZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesFDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IY + J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: FD CB %02X %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-2),OpZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesED(register Z80 *R) +{ + register byte I; + register pair J; + + I=OpZ80(R->PC.W++); + R->ICount-=CyclesED[I]; + switch(I) + { +#include "CodesED.h" + case PFX_ED: + R->PC.W--;break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: ED %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IX + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesDDCB(R);break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +static void CodesFD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IY + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesFDCB(R);break; + default: + printf + ( + "Unrecognized instruction: FD %02X at PC=%04X\n", + OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the register struct **/ +/** before starting execution with Z80(). It sets the **/ +/** registers to their supposed initial values. **/ +/*************************************************************/ +void ResetZ80(Z80 *R, register int Cycles) +{ + R->IPeriod = Cycles; + R->PC.W = 0x0000; + R->SP.W = 0xF000; + R->AF.W = 0x0000; + R->BC.W = 0x0000; + R->DE.W = 0x0000; + R->HL.W = 0x0000; + R->AF1.W = 0x0000; + R->BC1.W = 0x0000; + R->DE1.W = 0x0000; + R->HL1.W = 0x0000; + R->IX.W = 0x0000; + R->IY.W = 0x0000; + R->I = 0x00; + R->R = 0x00; + R->IFF = 0x00; + R->ICount = R->IPeriod; + R->IRequest = INT_NONE; + R->IBackup = 0; + + JumpZ80(R->PC.W); +} + +/** ExecZ80() ************************************************/ +/** This function will execute given number of Z80 cycles. **/ +/** It will then return the number of cycles left, possibly **/ +/** negative, and current register values in R. **/ +/*************************************************************/ +#ifdef EXECZ80 +int ExecZ80(register Z80 *R,register int RunCycles) +{ + register byte I; + register pair J; + + for(R->ICount=RunCycles;;) + { + while(R->ICount>0) + { +#ifdef DEBUG + /* Turn tracing on when reached trap address */ + if(R->PC.W==R->Trap) R->Trace=1; + /* Call single-step debugger, exit if requested */ + if(R->Trace) + if(!DebugZ80(R)) return(R->ICount); +#endif + + /* Read opcode and count cycles */ + I=OpZ80(R->PC.W++); + /* Count cycles */ + R->ICount-=Cycles[I]; + + /* Interpret opcode */ + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + } + + /* Unless we have come here after EI, exit */ + if(!(R->IFF&IFF_EI)) return(R->ICount); + else + { + /* Done with AfterEI state */ + R->IFF=(R->IFF&~IFF_EI)|IFF_1; + /* Restore the ICount */ + R->ICount+=R->IBackup-1; + /* Interrupt CPU if needed */ + if((R->IRequest!=INT_NONE)&&(R->IRequest!=INT_QUIT)) IntZ80(R,R->IRequest); + } + } +} +#endif /* EXECZ80 */ + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(Z80 *R,word Vector) +{ + /* If HALTed, take CPU off HALT instruction */ + if(R->IFF&IFF_HALT) { R->PC.W++;R->IFF&=~IFF_HALT; } + + if((R->IFF&IFF_1)||(Vector==INT_NMI)) + { + /* Save PC on stack */ + M_PUSH(PC); + + /* Automatically reset IRequest if needed */ + if(R->IAutoReset&&(Vector==R->IRequest)) R->IRequest=INT_NONE; + + /* If it is NMI... */ + if(Vector==INT_NMI) + { + /* Clear IFF1 */ + R->IFF&=~(IFF_1|IFF_EI); + /* Jump to hardwired NMI vector */ + R->PC.W=0x0066; + JumpZ80(0x0066); + /* Done */ + return; + } + + /* Further interrupts off */ + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + + /* If in IM2 mode... */ + if(R->IFF&IFF_IM2) + { + /* Make up the vector address */ + Vector=(Vector&0xFF)|((word)(R->I)<<8); + /* Read the vector */ + R->PC.B.l=RdZ80(Vector++); + R->PC.B.h=RdZ80(Vector); + JumpZ80(R->PC.W); + /* Done */ + return; + } + + /* If in IM1 mode, just jump to hardwired IRQ vector */ + if(R->IFF&IFF_IM1) { R->PC.W=0x0038;JumpZ80(0x0038);return; } + + /* If in IM0 mode... */ + + /* Jump to a vector */ + switch(Vector) + { + case INT_RST00: R->PC.W=0x0000;JumpZ80(0x0000);break; + case INT_RST08: R->PC.W=0x0008;JumpZ80(0x0008);break; + case INT_RST10: R->PC.W=0x0010;JumpZ80(0x0010);break; + case INT_RST18: R->PC.W=0x0018;JumpZ80(0x0018);break; + case INT_RST20: R->PC.W=0x0020;JumpZ80(0x0020);break; + case INT_RST28: R->PC.W=0x0028;JumpZ80(0x0028);break; + case INT_RST30: R->PC.W=0x0030;JumpZ80(0x0030);break; + case INT_RST38: R->PC.W=0x0038;JumpZ80(0x0038);break; + } + } +} + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +#ifndef EXECZ80 +word RunZ80(Z80 *R) +{ + register byte I; + register pair J; + + for(;;) + { +#ifdef DEBUG + /* Turn tracing on when reached trap address */ + if(R->PC.W==R->Trap) R->Trace=1; + /* Call single-step debugger, exit if requested */ + if(R->Trace) + if(!DebugZ80(R)) return(R->PC.W); +#endif + + I=OpZ80(R->PC.W++); + R->ICount-=Cycles[I]; + + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + + /* If cycle counter expired... */ + if(R->ICount<=0) + { + /* If we have come after EI, get address from IRequest */ + /* Otherwise, get it from the loop handler */ + if(R->IFF&IFF_EI) + { + R->IFF=(R->IFF&~IFF_EI)|IFF_1; /* Done with AfterEI state */ + R->ICount+=R->IBackup-1; /* Restore the ICount */ + + /* Call periodic handler or set pending IRQ */ + if(R->ICount>0) J.W=R->IRequest; + else + { + J.W=LoopZ80(R); /* Call periodic handler */ + R->ICount+=R->IPeriod; /* Reset the cycle counter */ + if(J.W==INT_NONE) J.W=R->IRequest; /* Pending IRQ */ + } + } + else + { + J.W=LoopZ80(R); /* Call periodic handler */ + R->ICount+=R->IPeriod; /* Reset the cycle counter */ + if(J.W==INT_NONE) J.W=R->IRequest; /* Pending IRQ */ + } + + if(J.W==INT_QUIT) return(R->PC.W); /* Exit if INT_QUIT */ + if(J.W!=INT_NONE) IntZ80(R,J.W); /* Int-pt if needed */ + } + } + + /* Execution stopped */ + return(R->PC.W); +} +#endif /* !EXECZ80 */ diff --git a/MCUME_esp32/espspeccy/main/Z80.h b/MCUME_esp32/espspeccy/main/Z80.h new file mode 100644 index 0000000..87a6b40 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/Z80.h @@ -0,0 +1,193 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.h **/ +/** **/ +/** This file contains declarations relevant to emulation **/ +/** of Z80 CPU. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef Z80_H +#define Z80_H + + #include + + +#define EXECZ80 // run a few cycles + +#ifdef __cplusplus +extern "C" { +#endif + + /* Compilation options: */ +/* #define DEBUG */ /* Compile debugging version */ +#define LSB_FIRST /* Compile for low-endian CPU */ +// #define MSB_FIRST /* Compile for hi-endian CPU */ + + /* LoopZ80() may return: */ +#define INT_RST00 0x00C7 /* RST 00h */ +#define INT_RST08 0x00CF /* RST 08h */ +#define INT_RST10 0x00D7 /* RST 10h */ +#define INT_RST18 0x00DF /* RST 18h */ +#define INT_RST20 0x00E7 /* RST 20h */ +#define INT_RST28 0x00EF /* RST 28h */ +#define INT_RST30 0x00F7 /* RST 30h */ +#define INT_RST38 0x00FF /* RST 38h */ +#define INT_IRQ INT_RST38 /* Default IRQ opcode is FFh */ +#define INT_NMI 0xFFFD /* Non-maskable interrupt */ +#define INT_NONE 0xFFFF /* No interrupt required */ +#define INT_QUIT 0xFFFE /* Exit the emulation */ + + /* Bits in Z80 F register: */ +#define S_FLAG 0x80 /* 1: Result negative */ +#define Z_FLAG 0x40 /* 1: Result is zero */ +#define H_FLAG 0x10 /* 1: Halfcarry/Halfborrow */ +#define P_FLAG 0x04 /* 1: Result is even */ +#define V_FLAG 0x04 /* 1: Overflow occured */ +#define N_FLAG 0x02 /* 1: Subtraction occured */ +#define C_FLAG 0x01 /* 1: Carry/Borrow occured */ + + /* Bits in IFF flip-flops: */ +#define IFF_1 0x01 /* IFF1 flip-flop */ +#define IFF_IM1 0x02 /* 1: IM1 mode */ +#define IFF_IM2 0x04 /* 1: IM2 mode */ +#define IFF_2 0x08 /* IFF2 flip-flop */ +#define IFF_EI 0x20 /* 1: EI pending */ +#define IFF_HALT 0x80 /* 1: CPU HALTed */ + +/** Simple Datatypes *****************************************/ +/** NOTICE: sizeof(byte)=1 and sizeof(word)=2 **/ +/*************************************************************/ +#ifndef BYTE_TYPE_DEFINED +#define BYTE_TYPE_DEFINED +typedef uint8_t byte; +#endif +#ifndef WORD_TYPE_DEFINED +#define WORD_TYPE_DEFINED +typedef uint16_t word; +#endif +typedef int8_t offset; + +/** Structured Datatypes *************************************/ +/** NOTICE: #define LSB_FIRST for machines where least **/ +/** signifcant byte goes first. **/ +/*************************************************************/ +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h; } B; +#else + struct { byte h,l; } B; +#endif + word W; +} pair; + +typedef struct +{ + pair AF,BC,DE,HL,IX,IY,PC,SP; /* Main registers */ + pair AF1,BC1,DE1,HL1; /* Shadow registers */ + byte IFF,I; /* Interrupt registers */ + byte R; /* Refresh register */ + + int IPeriod,ICount; /* Set IPeriod to number of CPU cycles */ + /* between calls to LoopZ80() */ + int IBackup; /* Private, don't touch */ + word IRequest; /* Set to address of pending IRQ */ + byte IAutoReset; /* Set to 1 to autom. reset IRequest */ + byte TrapBadOps; /* Set to 1 to warn of illegal opcodes */ + word Trap; /* Set Trap to address to trace from */ + byte Trace; /* Set Trace=1 to start tracing */ + void *User; /* Arbitrary user data (ID,RAM*,etc.) */ +} Z80; + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the registers before **/ +/** starting execution with RunZ80(). It sets registers to **/ +/** their initial values. **/ +/*************************************************************/ +void ResetZ80(register Z80 *R, register int Cycles); + +/** ExecZ80() ************************************************/ +/** This function will execute given number of Z80 cycles. **/ +/** It will then return the number of cycles left, possibly **/ +/** negative, and current register values in R. **/ +/*************************************************************/ +#ifdef EXECZ80 +int ExecZ80(register Z80 *R,register int RunCycles); +#endif + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(register Z80 *R,register word Vector); + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +#ifndef EXECZ80 +word RunZ80(register Z80 *R); +#endif + +/** RdZ80()/WrZ80() ******************************************/ +/** These functions are called when access to RAM occurs. **/ +/** They allow to control memory access. **/ +/************************************ TO BE WRITTEN BY USER **/ +void WrZ80(register word Addr,register byte Value); +byte RdZ80(register word Addr); + +/** InZ80()/OutZ80() *****************************************/ +/** Z80 emulation calls these functions to read/write from **/ +/** I/O ports. There can be 65536 I/O ports, but only first **/ +/** 256 are usually used. **/ +/************************************ TO BE WRITTEN BY USER **/ +void OutZ80(register word Port,register byte Value); +byte InZ80(register word Port); + +/** PatchZ80() ***********************************************/ +/** Z80 emulation calls this function when it encounters a **/ +/** special patch command (ED FE) provided for user needs. **/ +/** For example, it can be called to emulate BIOS calls, **/ +/** such as disk and tape access. Replace it with an empty **/ +/** macro for no patching. **/ +/************************************ TO BE WRITTEN BY USER **/ +void PatchZ80(register Z80 *R); + +/** DebugZ80() ***********************************************/ +/** This function should exist if DEBUG is #defined. When **/ +/** Trace!=0, it is called after each command executed by **/ +/** the CPU, and given the Z80 registers. Emulation exits **/ +/** if DebugZ80() returns 0. **/ +/*************************************************************/ +#ifdef DEBUG +byte DebugZ80(register Z80 *R); +#endif + +/** LoopZ80() ************************************************/ +/** Z80 emulation calls this function periodically to check **/ +/** if the system hardware requires any interrupts. This **/ +/** function must return an address of the interrupt vector **/ +/** (0x0038, 0x0066, etc.) or INT_NONE for no interrupt. **/ +/** Return INT_QUIT to exit the emulation loop. **/ +/************************************ TO BE WRITTEN BY USER **/ +word LoopZ80(register Z80 *R); + +/** JumpZ80() ************************************************/ +/** Z80 emulation calls this function when it executes a **/ +/** JP, JR, CALL, RST, or RET. You can use JumpZ80() to **/ +/** trap these opcodes and switch memory layout. **/ +/************************************ TO BE WRITTEN BY USER **/ +#ifndef JUMPZ80 +#define JumpZ80(PC) +#else +void JumpZ80(word PC); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* Z80_H */ diff --git a/MCUME_esp32/espspeccy/main/bmpjoy.h b/MCUME_esp32/espspeccy/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espspeccy/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espspeccy/main/bmpvbar.h b/MCUME_esp32/espspeccy/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espspeccy/main/component.mk b/MCUME_esp32/espspeccy/main/component.mk new file mode 100644 index 0000000..6d6cf84 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espspeccy/main/emuapi.cpp b/MCUME_esp32/espspeccy/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/espspeccy/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " SPECTRUM Emulator " +#define ROMSDIR "spec" + +#define emu_Init(ROM) {spec_Init(); spec_Start(ROM);} +#define emu_Step(x) {spec_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 16 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,27,27,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,14,28,28,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,20,28,28,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,30,28,28,28,28,28,28,28,28,28, + TAREA_END}; +/* + {25, 6,27,29,224}, // vcxz + {10, 9, 7,22, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +*/ + +const unsigned short keys[] = { + 30,31,32,33,34,35,36,37,38,39, + 0, 20,26, 8,21,23,28,25,12,18,19, + 0, 4, 9, 7,22, 4,11,13,14,15,40, + 25, 6,27,29,224,5,17,16,225,44 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + + diff --git a/MCUME_esp32/espspeccy/main/font8x8.h b/MCUME_esp32/espspeccy/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espspeccy/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espspeccy/main/go.cpp b/MCUME_esp32/espspeccy/main/go.cpp new file mode 100644 index 0000000..fb2ca1b --- /dev/null +++ b/MCUME_esp32/espspeccy/main/go.cpp @@ -0,0 +1,102 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +extern "C" { +#include "spec.h" +} + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/espspeccy/main/go.h b/MCUME_esp32/espspeccy/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espspeccy/main/ili9341_t3dma.cpp b/MCUME_esp32/espspeccy/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espspeccy/main/ili9341_t3dma.h b/MCUME_esp32/espspeccy/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espspeccy/main/iopins.h b/MCUME_esp32/espspeccy/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espspeccy/main/keyboard_osd.h b/MCUME_esp32/espspeccy/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espspeccy/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espspeccy/main/logo.h b/MCUME_esp32/espspeccy/main/logo.h new file mode 100644 index 0000000..76ab42a --- /dev/null +++ b/MCUME_esp32/espspeccy/main/logo.h @@ -0,0 +1,173 @@ +const uint16_t logo[] = { +0x0140,0x00ac,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa125, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc987, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xf9e8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xd187,0xf9e8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xf9e8,0xf1c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xd187,0xf9e8,0xf1c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9c8,0xf9c8,0xf9a8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9c8,0xf9c8,0xfa48, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd48, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8,0xf9c8,0xf9c8,0xfec8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc48,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0840,0x0860,0x0840,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0860,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0020,0x0000,0x0020,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x31a6,0x39e7,0x4208,0x2965,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x2965,0x31a6,0x4208,0x3186,0x31a6,0x2965,0x39c7,0x2965,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0000,0x0000,0x0000,0x0000,0x0801,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0001,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa534,0xffff,0xe71c,0xdefb,0xffdf,0xef7d,0xf7be,0xf7be,0xf7be,0xef7d,0xffdf,0xef7d,0xdefb,0xf7be,0xef7d,0xf7be,0xef7d,0xef7d,0x2965,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0007,0x0002,0x0000,0x0001,0x0000,0x0002,0x0001,0x0001,0x0003,0x0006,0x0006,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x58a3,0x2021,0x0800,0x58a3,0x4882,0x2841,0x4882,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1002,0x0020,0x0000,0x0000,0x1002,0x0000,0x0000,0x3006,0x1803,0x0801,0x3006,0x3006,0x1002,0x0000,0x0801,0x2004,0x2805,0x2805,0x0000,0x1002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x00e0,0x0040,0x09e0,0x00a0,0x0040,0x01c0,0x0180,0x00c0,0x01a0,0x0180,0x00a0,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x108a,0x0845,0x0000,0x0824,0x0824,0x0000,0x0824,0x0000,0x0002,0x0000,0x0824,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x18e1,0x18c0,0x2941,0x5ac3,0x5282,0x2121,0x0860,0x0000,0x2101,0x1080,0x0020,0x0000,0x52a2,0x2121,0x0020,0x10a0,0x18e1,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x18e3,0x0841,0x2124,0x2104,0x18c3,0x2945,0x4228,0x39c7,0x4a49,0x4a69,0x39c7,0x4208,0x5aeb,0x31a6,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x0000,0xb596,0xffdf,0x94b2,0xc638,0xbdf7,0xc618,0xffff,0xffff,0xdedb,0xbdf7,0xf79e,0xbdd7,0xb5b6,0xc638,0xce79,0xdedb,0xd6ba,0xffff,0x2965,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0020,0x000c,0x000c,0x000a,0x000c,0x0006,0x0020,0x000b,0x0004,0x000a,0x000d,0x000c,0x000b,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa125,0x8904,0xa125,0xa945,0x8104,0xa125,0xb946,0x68c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0020,0x600c,0x500a,0x680d,0x3006,0x580b,0x3807,0x4008,0x600c,0x4809,0x600c,0x600d,0x480a,0x680d,0x4809,0x500a,0x500a,0x780f,0x600c,0x1803,0x580b,0x4008,0x0000,0x0801,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a40,0x0b40,0x0a40,0x0b20,0x0b20,0x0ac0,0x0b40,0x0b40,0x0aa0,0x0b20,0x0b40,0x0a80,0x0b60,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x18ce,0x2935,0x20f1,0x2935,0x0000,0x20f2,0x18ac,0x2913,0x188b,0x2914,0x20d0,0x20f1,0x108a,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x0000,0xa545,0x10a0,0x8424,0xbde6,0xa545,0x8c44,0xa525,0x52a2,0x0000,0x9ce5,0x52a2,0x0000,0x73a3,0xad85,0x94a4,0xa525,0x3181,0x94a5,0x5282,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x94b2,0x2104,0xbdd7,0x7bef,0x10a2,0x9cd3,0xc618,0x8430,0x9cf3,0xce79,0x7bef,0xbdd7,0x9cf3,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xb575,0xf7be,0x9492,0xc638,0xb596,0xbdf7,0xffff,0xef5d,0xad55,0xdedb,0x94b2,0xc618,0xffff,0xef5d,0x7bef,0xd69a,0xffff,0xf79e,0x3186,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0020,0x000c,0x000c,0x000a,0x000c,0x0005,0x0020,0x000c,0x0003,0x000a,0x000e,0x000b,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xb146,0x80e4,0xa945,0x9925,0x0000,0x9925,0x0000,0x9925,0x50a2,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0020,0x580b,0x680d,0x600d,0x680d,0x4008,0x580b,0x680d,0x4008,0x500b,0x680d,0x580c,0x0040,0x580b,0x680d,0x700e,0x0000,0x580b,0x1002,0x580b,0x4008,0x600c,0x2805,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0a60,0x0ac0,0x0b40,0x0b60,0x0a80,0x0b60,0x0b00,0x0000,0x0b20,0x0b20,0x0000,0x0ae0,0x0b80,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0023,0x0000,0x2915,0x0846,0x0000,0x20cf,0x2935,0x20f2,0x2914,0x18ce,0x2913,0x2935,0x2935,0x3137,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x0000,0x73a3,0xb585,0x94a4,0xad65,0xa505,0x0000,0x9d05,0x4a62,0x0000,0xa505,0x4a62,0x0000,0xad65,0x0000,0x8c44,0xc626,0x2961,0x9ce5,0x52a2,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x52aa,0x9cf3,0x31a6,0xb5b6,0xbdd7,0xb5b6,0x94b2,0x8430,0x39c7,0x31a6,0x9492,0x0000,0xce59,0x39c7,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xad75,0xf79e,0x8c71,0xce59,0xa534,0xad55,0xef7d,0xdedb,0x8430,0xad55,0x8c71,0xbdd7,0xe73c,0xc638,0xa514,0xc638,0xef5d,0xf79e,0x2965,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0020,0x000c,0x000b,0x000b,0x000d,0x0009,0x0002,0x000c,0x0008,0x000b,0x000e,0x000b,0x0005,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xb146,0x70c3,0x9925,0x9925,0x2841,0xa145,0x78e4,0x9105,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0020,0x600c,0x2805,0x500a,0x700f,0x600c,0x700e,0x680d,0x4809,0x680d,0x700e,0x580b,0x1803,0x600c,0x3006,0x700f,0x1803,0x600c,0x2004,0x600c,0x680d,0x700f,0x2805,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0a80,0x0b80,0x0b80,0x0b60,0x0a20,0x0b20,0x0b00,0x00c0,0x0b40,0x0b00,0x00e0,0x0b40,0x01a0,0x13c0,0x0180,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0x0000,0x2913,0x18ce,0x18ce,0x0000,0x3157,0x1068,0x2914,0x2936,0x3157,0x3137,0x1089,0x3158,0x1089,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e0,0x0000,0xbe06,0x4222,0x9d05,0x9d05,0x2961,0xad65,0x7c04,0x18e1,0xad65,0x7c04,0x2121,0xa505,0x7383,0x9cc5,0xad65,0xad85,0xb5c6,0x4222,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4228,0xb5b6,0xad75,0xb596,0xa514,0x738e,0xa514,0xad55,0x630c,0x4a69,0xa534,0x3186,0xc638,0x630c,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x0000,0xb5b6,0xffff,0xc618,0xce79,0xffdf,0xc638,0xbdf7,0xdefb,0xf7be,0xffff,0xef5d,0xe73c,0xc618,0xf79e,0xf79e,0xffff,0xef5d,0xffff,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0008,0x080c,0x0807,0x0808,0x080d,0x000b,0x0024,0x080c,0x0008,0x0828,0x080c,0x000b,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68e4,0x0000,0x60a3,0x80e4,0xa125,0x8925,0x78e4,0xa125,0x2861,0x0040,0x1041,0x0000,0x0020,0x0000,0x0000,0x0020,0x0841,0x0000,0x0020,0x0841,0x0000,0x0020,0x0000,0x0020,0x0000,0x0801,0x0040,0x4008,0x1843,0x3807,0x4809,0x0040,0x3007,0x2806,0x580b,0x580b,0x4809,0x600c,0x500b,0x4009,0x0801,0x3807,0x1823,0x4008,0x1823,0x4008,0x0000,0x3807,0x2044,0x0040,0x0000,0x0841,0x0841,0x0000,0x0000,0x00e0,0x1301,0x12e1,0x0a40,0x0000,0x09e1,0x0a80,0x0b20,0x0ac1,0x0a40,0x1321,0x0ac0,0x0a40,0x0881,0x09e1,0x0921,0x0801,0x0000,0x0020,0x0861,0x0841,0x0000,0x0841,0x0841,0x0000,0x0000,0x0001,0x0000,0x0845,0x2914,0x20d0,0x0000,0x18cd,0x0844,0x18ad,0x0000,0x108a,0x20d0,0x0000,0x18ab,0x1067,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x0000,0x6b43,0x18e0,0x7383,0xa545,0x9485,0x7bc4,0xad65,0x94a4,0x7bc4,0xad65,0x9cc5,0x31c1,0xa525,0x7383,0x2141,0x8404,0x6343,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x632c,0x7bcf,0x52aa,0x630c,0x0000,0x738e,0xa514,0x6b6d,0x2124,0x6b6d,0x0020,0x9cf3,0xa534,0x6b6d,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0861,0x0020,0x0000,0x0020,0x0000,0x0020,0x0861,0x0020,0x0020,0x0000,0x0020,0x0841,0x0841,0x0000,0x0841,0x0020,0x0000,0x0841,0x0841,0x0000,0x0000,0x1082,0x0000,0x73ae,0xb5b6,0xb5b6,0xb5b6,0xad75,0xbdd7,0xbdd7,0xb5b6,0xad75,0xad55,0xb596,0xb596,0xbdd7,0xb596,0xb596,0xad75,0xb5b6,0xa534,0x2124,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf1c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0020,0x0000,0x0000,0x0081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0841,0x0000,0x0861,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0801,0x0841,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0860,0x0862,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0000,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9c8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2125,0x5acb,0x4a6a,0x2945,0x4a6a,0x0000,0x31a6,0x4208,0x39e8,0x4a49,0x4a69,0x1083,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x2145,0x528a,0x0000,0x0000,0x2904,0x0000,0x4a49,0x5aaa,0x0000,0x2124,0x630c,0x31a6,0x0000,0x2104,0x0020,0x0000,0x2945,0x52aa,0x0000,0x2945,0x528a,0x0000,0x2104,0x0000,0x3186,0x0000,0x0000,0x39c7,0x4a49,0x4a49,0x2945,0x5aeb,0x2104,0x0000,0x10a2,0x18c3,0x2945,0x5aab,0x528a,0x1042,0x20e4,0x1082,0x18a3,0x39c7,0x4228,0x2965,0x4a69,0x0000,0x2124,0x5acb,0x528a,0x0000,0x528a,0x2945,0x0000,0x0821,0x10a2,0x4248,0x39e7,0x0000,0x0000,0x2945,0x18e3,0x10a1,0x2124,0x0000,0x2124,0x10a2,0x10c2,0x39c7,0x4228,0x2965,0x4a69,0x0000,0x2124,0x5acb,0x528a,0x0000,0x528a,0x2945,0x0000,0x0861,0x0000,0x0000,0x0000,0x10a4,0x0002,0x0000,0x2125,0x2104,0x0000,0x0000,0x0000,0x0842,0x0000,0x0002,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a1,0x18c2,0x2965,0x52ca,0x3185,0x18e2,0x18e1,0x10a0,0x10a0,0x18c0,0x10a0,0x0840,0x18c0,0x1080,0x0840,0x10a0,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x31a6,0x31a6,0x0000,0x0861,0x18c3,0x1082,0x0020,0x1082,0x0000,0x18c3,0x18c3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x0000,0x0000,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x52aa,0x3186,0x1082,0x5aeb,0x2945,0x0000,0x2124,0x0000,0x2104,0x5aeb,0x2104,0x0000,0x2104,0x18e3,0x31a6,0x4a49,0x0000,0x528a,0x2965,0x0000,0x528a,0x52aa,0x0861,0x0000,0x0020,0x0000,0x0841,0x528a,0x31a6,0x0000,0x4a69,0x630c,0x4208,0x2124,0x18c3,0x18c3,0x4a69,0x630c,0x4208,0x4a69,0x528a,0x4208,0x4a49,0x630c,0x31a6,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0x9cf3,0xad75,0x8430,0xa534,0xbdf7,0x5aeb,0x7bcf,0xc638,0x5aeb,0xd69a,0xa534,0x1082,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x9cf3,0xad55,0x632c,0x632c,0x9cd3,0x52aa,0xbdd7,0x94b2,0x8c51,0x94b2,0x9cf3,0x630c,0x4228,0x9cf3,0x0000,0x2965,0x9cf3,0xad55,0x7bcf,0x94b2,0xa534,0x9492,0x8430,0x73ae,0x7bcf,0x0000,0x0000,0x630c,0xd69a,0x9cd3,0xa514,0xa534,0x8c71,0xad55,0x39c7,0x8430,0xbdd7,0xa534,0x9cd3,0x0000,0x9cf3,0x39c7,0x8c51,0xa514,0xbdd7,0x9cf3,0xbdf7,0x5acb,0x9cd3,0xad75,0x8c71,0x7bcf,0xad55,0x9cf3,0x2124,0x0000,0x0000,0xc638,0x94b2,0xb5b6,0x4a69,0xb596,0x8430,0x39c7,0xa514,0x0000,0xa514,0x39c7,0x8c51,0xa514,0xbdd7,0x9cf3,0xbdf7,0x5acb,0x9cd3,0xad75,0x8c71,0x7bcf,0xad55,0x9cf3,0x2124,0x0000,0x0020,0x0000,0x1082,0x0000,0x0000,0x7bcf,0xbdd7,0xad75,0x2945,0x4a69,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0000,0x94b2,0xce59,0x94b2,0x0000,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x6b6d,0x9cf3,0x9cf3,0x6b6d,0x10a2,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x4208,0x632c,0xce79,0x9cd3,0x4a69,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x73ae,0xa534,0x7bcf,0xa534,0xa534,0x9cd3,0x4208,0x9cf3,0x5aeb,0x9cd3,0xad55,0x8c71,0xad55,0x0000,0x8410,0xa514,0xbdf7,0x6b6d,0xad75,0x9492,0x8410,0x9cf3,0x9492,0x2104,0x0000,0x0861,0x0000,0x4208,0xc638,0x9492,0x52aa,0xbdf7,0x94b2,0x9492,0x94b2,0x0000,0x4a49,0xbdf7,0x9cd3,0x738e,0xa514,0xce79,0x7bef,0xbdd7,0x9cf3,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa534,0xa514,0x0000,0x9cf3,0x0000,0x9cd3,0x738e,0x9492,0x0000,0x9cd3,0x39e7,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x5acb,0x9cf3,0x0000,0x5acb,0xad55,0x6b6d,0xb5b6,0xb5b6,0x9cd3,0x8c51,0x9492,0x8c51,0x0000,0x528a,0x9cf3,0x0000,0x5acb,0x9cd3,0x0000,0xc638,0x9492,0x0000,0x528a,0xd69a,0x7bcf,0x0000,0x10a2,0x18e3,0x0000,0x9cd3,0x10a2,0x9cd3,0xb5b6,0x8430,0xad75,0x2945,0x8c51,0xc618,0x94b2,0x0000,0x0000,0xa514,0x4208,0x94b2,0x738e,0x7bef,0x9492,0x18e3,0x9492,0xbdf7,0x9cd3,0x0000,0xad55,0x0000,0x94b2,0x5acb,0x0000,0x0000,0x8c71,0x632c,0xb5b6,0xad75,0xb596,0x8c71,0x4a49,0xa514,0x0000,0xa514,0x4228,0x94b2,0x738e,0x7bef,0x9492,0x18e3,0x9492,0xbdf7,0x9cd3,0x0000,0xad55,0x0000,0x94b2,0x5acb,0x0000,0x0861,0x1082,0x0000,0x632c,0xbdf7,0x8c51,0x0000,0xb596,0xbdd7,0xce79,0xad55,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xad75,0xbdd7,0x39e7,0xbdd7,0xad75,0x2945,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa514,0xef5d,0x5acb,0x5acb,0xef5d,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4208,0xd6ba,0xb5b6,0xc618,0x6b6d,0x2124,0xb5b6,0x9cf3,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa514,0x7bef,0x9492,0xad75,0xb596,0x8430,0xad55,0x73ae,0x9cf3,0xbdd7,0xa534,0x8c71,0xb575,0xad75,0xbdf7,0x6b4d,0x7bef,0x9cd3,0x39c7,0x0000,0x7bcf,0x9cf3,0x5acb,0x0000,0x0861,0x0841,0x0000,0x5acb,0x8c71,0x18e3,0xbdf7,0xbdd7,0x3186,0x31a6,0xa514,0x0000,0x4228,0xc638,0x39e7,0x0000,0x4228,0x9492,0x0000,0xce59,0x39c7,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xad55,0x9cf3,0x2965,0xad55,0x8410,0x8c51,0x73ae,0xbdd7,0x0000,0xad55,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xa534,0x4a69,0x8430,0xc638,0xad55,0xc638,0xad55,0x4208,0x0000,0x52aa,0x9cd3,0x9492,0x39c7,0xb5b6,0x31a6,0x632c,0xa514,0x632c,0xb5b6,0x9cd3,0x528a,0x8c51,0xb596,0x8430,0x4a49,0x0000,0x18c3,0x0000,0xad75,0x4208,0x9cd3,0xbdd7,0x73ae,0x94b2,0x738e,0x9492,0xc618,0x94b2,0x528a,0x0000,0x4228,0xbdd7,0x8c51,0x630c,0xad75,0x9cf3,0x8c51,0x8410,0xb596,0x9cd3,0x3186,0x9cf3,0x6b6d,0xa514,0x4a69,0x0000,0x0000,0xb596,0x8c71,0x8c71,0x8430,0xad75,0x7bef,0xbdd7,0x5acb,0xa514,0x5acb,0xbdd7,0x8c51,0x630c,0xad75,0x9cf3,0x8c51,0x8410,0xb596,0x9cd3,0x3186,0x9cf3,0x6b6d,0xa514,0x4a69,0x0000,0x0841,0x0841,0x0000,0x2965,0x7bcf,0x9cd3,0x9492,0xbdf7,0x8c51,0x9cf3,0x73ae,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2104,0xb5b6,0xb596,0x5aeb,0xb596,0xb5b6,0x2104,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x738e,0xad75,0xad75,0x738e,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x9cd3,0x8c71,0xa534,0xb596,0x8c51,0x94b2,0x52aa,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0x9cd3,0x8410,0xb5b6,0xbdd7,0xb596,0x738e,0xa534,0xb5b6,0xbdf7,0xbdf7,0x8410,0x0000,0xa534,0x6b6d,0xa534,0x8c71,0xa534,0x9492,0x7bcf,0x6b6d,0x4208,0x6b6d,0xb5b6,0x4228,0x0000,0x1082,0x0000,0x52aa,0xb596,0x738e,0x9cd3,0xbdf7,0x5acb,0x6b4d,0xb596,0x31a6,0x6b4d,0xc618,0x632c,0x2945,0x5acb,0xa514,0x3186,0xc638,0x630c,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x738e,0xa534,0x9492,0x7bcf,0xad55,0x0000,0x6b4d,0xad55,0x0000,0x6b4d,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x73ae,0xa514,0x5acb,0x5acb,0x0000,0x8410,0x5aeb,0x0000,0x2945,0x9cd3,0x94b2,0x2965,0x18e3,0x9cf3,0xad55,0x632c,0x6b4d,0xa534,0x1082,0x738e,0xa514,0x5acb,0x5acb,0x31a6,0x6b6d,0x0000,0x18c3,0x0000,0x6b6d,0x2124,0x6b4d,0x0000,0x6b4d,0x4228,0xa514,0x6b4d,0x6b4d,0xa534,0x9cd3,0x2104,0x0000,0x738e,0x2945,0x6b6d,0xa514,0x73ae,0xad55,0x0000,0x6b6d,0xa534,0x94b2,0x39c7,0xa514,0x73ae,0x0000,0x0000,0x18c3,0xa534,0x8410,0x5aeb,0x1082,0x632c,0x3186,0x738e,0x1082,0xb596,0x1082,0x738e,0x2945,0x6b6d,0xa514,0x73ae,0xad55,0x0000,0x6b4d,0xa534,0x94b2,0x31a6,0xa514,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0020,0x0000,0x0000,0x0861,0x8c71,0x73ae,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x4a69,0x9cd3,0x4a69,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x9cf3,0x9cf3,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0xa514,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0x9cd3,0x94b2,0x73ae,0x0000,0x632c,0x7bef,0x0000,0x52aa,0x8410,0x18e3,0x0000,0x738e,0x0861,0x52aa,0x8410,0xa514,0x3186,0xa514,0x73ae,0x6b4d,0xad55,0x6b6d,0x0000,0x0861,0x0841,0x0000,0x2104,0xa534,0x7bcf,0x0000,0x9cf3,0xa514,0x73ae,0x94b2,0xa534,0x73ae,0x9492,0xa534,0x6b4d,0x2124,0x6b6d,0x0000,0x9cf3,0xa534,0x6b6d,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0861,0x10a2,0x18e3,0x18e3,0x18e3,0x10a2,0x0841,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0861,0x18c3,0x0020,0x0000,0x0000,0x2104,0x18e3,0x18c3,0x0841,0x0861,0x0841,0x10a2,0x18e3,0x18e3,0x18e3,0x10a2,0x0841,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x18e3,0x0000,0x0000,0x0000,0x18e3,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x18e3,0x18e3,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0841,0x0000,0x0000,0x0841,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x10a2,0x18e3,0x18c3,0x18e3,0x10a2,0x0841,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x18e3,0x18e3,0x10a2,0x0000,0x0000,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x18e3,0x18e3,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0x4a49,0x4228,0x4228,0x4a49,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x2965,0x0861,0x18e3,0x18e3,0x2965,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x18e3,0x4208,0x4228,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x2945,0x2124,0x18e3,0x2124,0x39e7,0x4208,0x4a69,0x4228,0x0000,0x0861,0x1082,0x0000,0x0000,0x0000,0x0020,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4a69,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x31a6,0x18e3,0x2945,0x2124,0x31a6,0x4a49,0x39e7,0x52aa,0x2945,0x1082,0x0841,0x18c3,0x1082,0x0000,0x0000,0x0861,0x4228,0x4228,0x4208,0x4208,0x4a49,0x4228,0x4208,0x4208,0x4228,0x4208,0x4228,0x39e7,0x18e3,0x2104,0x18e3,0x2124,0x39e7,0x4208,0x4a69,0x4a49,0x0000,0x18e3,0x1082,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x2965,0x0861,0x18e3,0x18e3,0x2965,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x18e3,0x2104,0x10a2,0x18c3,0x39e7,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4228,0x4a69,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x2965,0x18c3,0x2104,0x18c3,0x2965,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4228,0x4228,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x18c3,0x10a2,0x10a2,0x18c3,0x39e7,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4208,0x4208,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x4228,0x52aa,0x2104,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad75,0xb5b6,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x18c3,0x2104,0x2965,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xad75,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2124,0x2104,0x2104,0x39e7,0x4228,0x4208,0x4208,0x4228,0x3186,0x8430,0xb5b6,0xad55,0xb5b6,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2965,0x2965,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xb5b6,0xb596,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x18e3,0x2124,0x2945,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad75,0xb596,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x2104,0x2104,0x2124,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xad75,0xb596,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x1082,0x2124,0x18e3,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xb5b6,0xad55,0xb596,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2104,0x39e7,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xb5b6,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x2104,0x2104,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2945,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7de4,0x04a0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2104,0x9492,0x8c71,0x2965,0x4228,0x4208,0x4208,0x4a49,0x10a2,0xb5b6,0xffff,0xb5b6,0x632c,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x630c,0xb596,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4228,0x31a6,0x6b6d,0xb596,0x4a69,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x9cd3,0xb5b6,0xad55,0x528a,0x39e7,0x4208,0x4208,0x4a49,0x2104,0xb596,0x7bcf,0x39e7,0x7bcf,0xb596,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x2104,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xad55,0xa534,0xa534,0x4a69,0x39e7,0x4208,0x4208,0x4a49,0x10a2,0xb5b6,0xffff,0xbdf7,0x7bcf,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb5b6,0x9cd3,0x31a6,0x4228,0x4208,0x4228,0x31a6,0x6b6d,0xb596,0x528a,0xffff,0xffff,0x528a,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c71,0xbdf7,0xa534,0xad75,0x4a69,0x39e7,0x4208,0x4208,0x4a49,0x2104,0xb596,0x7bcf,0x4a49,0x8c71,0xb596,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb5b6,0xad55,0x528a,0x39e7,0x4208,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb596,0xa514,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2ce1,0x04c0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x7bef,0xffff,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x4a49,0x18e3,0xad75,0xffff,0xce79,0xb5b6,0xad75,0x2124,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2965,0x8c51,0x9cf3,0x738e,0xf79e,0x52aa,0x39e7,0x4228,0x4228,0x39c7,0x630c,0xce59,0xad55,0xf7be,0xf79e,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xb596,0x4228,0xce59,0xc618,0x0000,0x4a49,0x4208,0x4a49,0x2104,0xad55,0xbdf7,0xa514,0xbdf7,0xad55,0x2124,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x7bef,0xffff,0xbdd7,0x1082,0x4a49,0x4208,0x4228,0x39e7,0x528a,0xf79e,0xf7be,0xad55,0xce59,0x630c,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffff,0x9cd3,0x632c,0x39e7,0x4208,0x4208,0x4208,0x4a49,0x18e3,0xad75,0xffff,0xa514,0x39e7,0xad55,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce59,0x4228,0xad55,0x4a49,0x4208,0x4208,0x4228,0x39c7,0x630c,0xce59,0xa534,0xa534,0xce59,0x630c,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x2965,0x94b2,0x9cf3,0x73ae,0xf7be,0x52aa,0x39e7,0x4228,0x4208,0x4a49,0x2104,0xad55,0xc618,0x6b4d,0x4a69,0xad55,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf7be,0x528a,0xce59,0xc618,0x0000,0x4a49,0x4208,0x4228,0x39e7,0x52aa,0xef7d,0xffdf,0xffdf,0xef7d,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x1082,0xbdf7,0xce59,0x5aeb,0xf79e,0x52aa,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf79e,0x738e,0xef7d,0xbdb6,0x10a2,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf1c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xc638,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x4a49,0x10a2,0xbdd7,0xffff,0xffff,0xffff,0xbdd7,0x10a2,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x0000,0x528a,0xf79e,0x52aa,0x39e7,0x4228,0x4228,0x39e7,0x528a,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x31a6,0x94b2,0xd6ba,0x9cd3,0x2124,0x4228,0x4208,0x4a49,0x1082,0xbdd7,0xffff,0xffff,0xffff,0xbdd7,0x10a2,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0xce79,0xf79e,0xb596,0x1082,0x4a49,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0x528a,0xb596,0x6b6d,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad55,0xb596,0xc638,0x4228,0x4208,0x4208,0x4208,0x4a49,0x10a2,0xb5b6,0xffff,0xbdf7,0x7bcf,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x1082,0xbdd7,0xdefb,0x9cf3,0x7bcf,0x31a6,0x4228,0x4208,0x4228,0x39e7,0x528a,0xffff,0xffff,0x528a,0xb596,0x6b6d,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x0000,0xbdd7,0xbdf7,0x10a2,0x4a49,0x4208,0x4208,0x4a49,0x1082,0xbdd7,0xffff,0xc618,0x7bcf,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39e7,0x4228,0xd6ba,0xad55,0xd69a,0x9cd3,0x2124,0x4228,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x1082,0xbdf7,0xce59,0x5acb,0xf79e,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5aeb,0xe73c,0x8410,0xef7d,0xbdd7,0x1082,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9c8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xbdd7,0xbdf7,0x0000,0x4a49,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad75,0xb5b6,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x39c7,0xd69a,0x8c71,0x2965,0x4228,0x4208,0x4208,0x39e7,0x4a69,0xad75,0xad96,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x4228,0xc638,0xb5b6,0x1082,0x4a49,0x4208,0x4228,0x3186,0x8430,0xb5b6,0xad75,0xb5b6,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2124,0xa514,0xdefb,0xbdf7,0xc638,0x18e3,0x4228,0x4208,0x4208,0x4208,0x4a69,0xad75,0xb5b6,0xad75,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x0000,0x0000,0xc638,0xc638,0x0000,0x4a49,0x4208,0x4228,0x2986,0x8430,0xbdd7,0xad55,0xb596,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xc618,0xc638,0x5aeb,0xf79e,0x52aa,0x39e7,0x4228,0x4208,0x39e7,0x4a69,0xad75,0xb596,0xad75,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x5aeb,0xef5d,0x5aeb,0x39c7,0x4228,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad55,0xb596,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xe73c,0x5aeb,0xc618,0xb5b6,0x1082,0x4a49,0x4208,0x4208,0x41e8,0x4a69,0xad75,0xb5b6,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x9cf3,0xad75,0xef7d,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf7be,0xad55,0xbdd7,0xc618,0x0000,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xd69a,0xd69a,0x39c7,0x4228,0x4208,0x4208,0x4208,0x4228,0x3986,0x10a2,0x18e3,0x10a2,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xe71c,0xb5b6,0x4a69,0x4a49,0x4208,0x4208,0x4208,0x4208,0x3a08,0x30e3,0x48a3,0x00c3,0x20e3,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xb596,0x528a,0xce79,0xc618,0x0000,0x4a49,0x4208,0x4208,0x4228,0x3186,0x20a2,0x10e3,0x10a2,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2965,0x9492,0xa534,0xe71c,0xe71c,0x3186,0x4228,0x4208,0x4208,0x4208,0x3208,0x10e3,0x00c3,0x2124,0x2104,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xb596,0x73ae,0xd6ba,0x9492,0x2945,0x4228,0x4208,0x4208,0x5a28,0x2986,0x2882,0x1904,0x2104,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce59,0x5aeb,0xf79e,0x52aa,0x39e7,0x4228,0x3a08,0x4a08,0x4208,0x20e3,0x18c3,0x2124,0x2104,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x0000,0xc638,0xce59,0x0000,0x4a49,0x4208,0x4208,0x3a08,0x4208,0x4a28,0x3186,0x1082,0x2104,0x2104,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf7be,0x5aeb,0xce59,0xc618,0x0000,0x4a49,0x4208,0x4208,0x3a08,0x5208,0x18e3,0x18c3,0x18c3,0x18e3,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x8430,0x8c71,0x630c,0xf79e,0x52aa,0x39e7,0x4228,0x4208,0x4208,0x4a08,0x4a08,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x4a69,0xffff,0x94b2,0xc638,0xbdf7,0x0841,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x7bef,0xb5b6,0xb5b6,0x7bef,0x31a6,0x4228,0x4208,0x3208,0x6208,0xa208,0x3249,0x4a49,0x4a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x3186,0x8410,0xbdf7,0xa514,0xad55,0x4a49,0x4208,0x4208,0x4208,0x3a08,0x4a08,0xaa29,0xba29,0x8229,0x3a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x9cd3,0xb596,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x3208,0xa208,0xc229,0x6a49,0x3a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x0000,0x8c51,0x8c51,0x2945,0x4228,0x4208,0x4208,0x3208,0x9208,0xd229,0x7249,0x3a49,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x94b2,0xbdd7,0x8c71,0x18e3,0x4228,0x4208,0x3a08,0x5a08,0xd1e8,0x9a08,0x8a49,0x3249,0x4a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0xa9e8,0x7a08,0x2a49,0x4a49,0x4249,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3208,0xa9e8,0x6208,0x3a28,0x4a49,0x4a49,0x4a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb596,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x2a08,0x8a08,0x8208,0x3249,0x4a49,0x4a49,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x630c,0xb5b6,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4a08,0xa1e8,0x4a08,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8430,0xad55,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4a08,0x4208,0x4208,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x31a6,0x18c3,0x18c3,0x31a6,0x4228,0x4208,0x4208,0x3208,0x6a08,0xa9e8,0x2208,0x4a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x0861,0x2945,0x2124,0x4208,0x4208,0x4208,0x4208,0x3208,0x6a08,0xb1e8,0xd1e8,0xb9e8,0x1a08,0x4a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2124,0x18e3,0x2104,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0xc9e8,0xe9e8,0x9208,0x2a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x3186,0x3186,0x4228,0x4208,0x4208,0x4208,0x4208,0xb1e8,0xd9e8,0x6208,0x3a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2124,0x18c3,0x2965,0x4228,0x4208,0x4208,0x4208,0x3a08,0x6208,0xa1e8,0x3208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x2104,0x2104,0x2965,0x4228,0x4208,0x3a08,0x5208,0xb1e8,0x9208,0x6a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x3a08,0x5208,0x7a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2104,0x39e7,0x4208,0x4208,0x4a08,0x2208,0xa9e8,0x6208,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39c7,0x18c3,0x2104,0x2965,0x4228,0x4208,0x4208,0x4208,0x4a08,0x1208,0xa9e8,0x6a08,0x3208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x2124,0x2104,0x39e7,0x4208,0x4208,0x4208,0x3208,0x2208,0x2208,0x2208,0x2208,0x3208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x3a08,0x5a08,0x8a08,0x3208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4a49,0x4208,0x4208,0x4208,0x4208,0x3a08,0x6208,0xb1e8,0xb9e8,0x8208,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0xc1e8,0xe1e8,0x8208,0x2a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4228,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0xb1e8,0xe1e8,0x7208,0x3a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x3208,0xa208,0xa9e8,0x8a08,0x2a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x3208,0x6a08,0xa9e8,0xa9e8,0x8208,0x3208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x3208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4a08,0x2208,0xa208,0x7a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x3208,0xa9e8,0x6208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x3208,0x7a08,0xa9e8,0xa208,0xa208,0xa9e8,0x7a08,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x49e7,0x69e7,0x31e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x31e7,0x81c7,0x99c7,0x31e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x31e7,0x69e7,0x81c7,0x49e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x71e7,0x81c7,0x29e7,0x41e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x51e7,0x69e7,0x89c7,0x91c7,0x21e7,0x41e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x29e7,0x81c7,0x91c7,0x69e7,0x31e7,0x41e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x59e7,0x71e7,0x31e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x51e7,0x79c7,0x31e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x51e7,0x69e7,0x61e7,0x61e7,0x69e7,0x51e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x14c0,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4aaa,0x42aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x52aa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x4aaa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x4aaa,0x42aa,0x52aa,0x52aa,0x5aaa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x42aa,0x4aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x5269,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x4aaa,0x42aa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x4aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x5aaa,0x5aaa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x630c,0x5b0c,0x4b0c,0x530c,0x530c,0x4b0c,0x4b0c,0x630c,0x630c,0x4b0c,0x4b0c,0x530c,0x530c,0x630c,0x530c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x530c,0x530c,0x630c,0x530c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x5aeb,0x630c,0x530c,0x4b0c,0x530c,0x5b0c,0x5b0c,0x530c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x532c,0x5b0c,0x4b0c,0x4b0c,0x5b0c,0x4b0c,0x4b0c,0x530c,0x530c,0x630c,0x5b0c,0x630c,0x630c,0x5b0c,0x530c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a2,0x4aeb,0x530c,0x530c,0x5b0c,0x630c,0x5b0c,0x4b0c,0x530c,0x630c,0x4b0c,0x530c,0x5b0c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x530c,0x5b0c,0x18a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x530c,0x5b0c,0x4b0c,0x5b0c,0x5b0c,0x630c,0x530c,0x4b0c,0x4b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x530c,0x530c,0x4b0c,0x530c,0x630c,0x530c,0x5b0c,0x630c,0x4b0c,0x530c,0x530c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x5b0c,0x530c,0x4b0c,0x5b0c,0x4b0c,0x530c,0x530c,0x630c,0x530c,0x530c,0x430c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a2,0x4aeb,0x530c,0x630c,0x530c,0x5b0c,0x5b0c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x5b0c,0x530c,0x4b0c,0x5b0c,0x4b0c,0x4b0c,0x5b0c,0x530c,0x5b0c,0x5b0c,0x630c,0x530c,0x630c,0x4b0c,0x4b0c,0x530c,0x6b2c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa083,0x0000,0x6000,0x9883,0x8801,0x7000,0x9863,0x9022,0x0000,0x0000,0x9042,0x9862,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2861,0x90c4,0x9842,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68a3,0x2800,0x0000,0x6800,0x9862,0x7000,0x2000,0x4800,0x7800,0x9862,0x9022,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x7042,0x9842,0x2800,0x9042,0x8802,0x3000,0x9022,0x9862,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x5000,0x6800,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2820,0x9883,0x6800,0x5800,0x2800,0x0000,0x1000,0x9863,0x6800,0x0000,0x9042,0x8802,0x7000,0x9863,0x9022,0x0000,0x0000,0x0800,0x6800,0x5000,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x3882,0x6842,0x2800,0x6000,0x6000,0x9862,0x3800,0x5800,0x1000,0x6800,0x8802,0x9863,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0x9883,0x8801,0x6800,0xa083,0x6800,0x0000,0x7000,0x2800,0x0000,0x9042,0x8801,0x7000,0x9863,0x9022,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2061,0x98c4,0x9002,0x0000,0x6800,0x9863,0x2000,0x9862,0x7800,0x6000,0x0000,0x6800,0x8802,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2820,0x9863,0x7000,0x0000,0x7800,0x1800,0x5800,0xa083,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2861,0x90c4,0x9862,0x5800,0x6000,0x9863,0x2800,0x9042,0x8802,0x4000,0x6000,0x2800,0x6000,0x1800,0x7000,0x0000,0x9042,0xa083,0x6000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x8104,0x8104,0xb166,0x9945,0x2882,0xa966,0x9125,0x48c3,0x0061,0x48c3,0xc186,0x50c3,0x58e3,0xc9a7,0x9125,0x9945,0x0040,0x1882,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0x50c3,0x58c3,0xc9a7,0x9125,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x58c3,0x0020,0x68e4,0xa946,0xa145,0xb166,0x9125,0xc186,0x9125,0x48c3,0x1882,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa145,0x60e4,0xb166,0xa966,0x8104,0xb166,0xb166,0x58e3,0x60e3,0xc9a7,0x9125,0x9945,0x0040,0x1061,0xb986,0xd9c7,0x7104,0x0040,0x1882,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x7904,0x58c3,0xa966,0x58c3,0x0000,0x9945,0x70e4,0x9125,0xb166,0x9145,0x30a2,0xa146,0x9945,0x48c3,0x2082,0x0040,0x7104,0xd9c7,0xb986,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc987,0xb166,0xb986,0x9125,0x60e4,0xb986,0x9125,0x1882,0xc187,0xb166,0x60e4,0x38a2,0x0061,0x1062,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9945,0x2882,0xa966,0x8925,0x9945,0x9125,0x7904,0x7904,0xa145,0x9945,0x30a2,0xa146,0x9945,0x48c3,0x1882,0x0861,0x1061,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xb966,0x8104,0xb166,0x9125,0x7104,0x9125,0xa146,0x8125,0xc987,0x9125,0x9945,0x60e4,0xb966,0x1082,0x1062,0x1061,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x7904,0x60e3,0x8104,0x7904,0x8925,0x30a2,0xb166,0x7104,0x0061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0x50c3,0x60e3,0xa145,0x60e4,0xb166,0xa966,0x7904,0xb166,0xc186,0xb966,0xb166,0x7904,0x8104,0x70e4,0x68e4,0xb966,0x1062,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x0800,0x9104,0xb966,0x9925,0x0000,0xa125,0xa945,0x0000,0x0000,0x4082,0xc986,0x4882,0x3862,0x9925,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc986,0x4882,0x3862,0x9925,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x3862,0x0000,0x4882,0x8104,0x80e4,0x9105,0xb966,0xb146,0x9125,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9105,0x0000,0xb966,0xb966,0x8904,0x58a3,0xc166,0x2841,0x3041,0x9925,0xa945,0xa125,0x0000,0x2041,0xc986,0xe1a7,0x8104,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x3061,0x0000,0xa125,0x3862,0x0000,0xa945,0x0000,0x9105,0x60a3,0x78e4,0x8904,0xa945,0x9925,0x0000,0x0800,0x0000,0x8104,0xe1a7,0xc986,0x1000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x70c3,0xb146,0x8904,0x0000,0xb146,0x8904,0x8104,0x9104,0xb966,0x3862,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x9925,0x0000,0x9925,0xd9a7,0x68c3,0xa125,0xa145,0xc166,0x50a2,0x80e4,0x8904,0xa945,0x9925,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc166,0x80e4,0x68c3,0x9105,0x0000,0x9925,0x78e4,0x70c3,0x9105,0xa945,0x9925,0x2041,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x3061,0x0000,0xb145,0xa125,0xc166,0x2041,0x9105,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc986,0x4882,0x4882,0x9925,0x0000,0xb966,0xc166,0xb966,0x50a2,0xa125,0x70e4,0xa945,0xb966,0xa945,0xa125,0x2041,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xb966,0x50a2,0x9125,0xa945,0x8104,0x9925,0x3061,0x0000,0x0000,0x5082,0x9105,0x0000,0x58a3,0x8904,0x3862,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9105,0x0000,0x58a3,0x8904,0x3862,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xb146,0x8904,0x8904,0xb966,0x9925,0x3061,0x8904,0xb146,0xa125,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x9925,0xa125,0x9104,0x8904,0x0000,0x4082,0xb966,0x9105,0x8904,0x8104,0x4082,0xa125,0x0000,0x0000,0x9925,0xb966,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa945,0x8904,0xa125,0xb146,0x8904,0x78e4,0xa945,0x9105,0x70c3,0x9925,0x9104,0xa125,0xa125,0x9105,0x2041,0x0000,0x50a2,0xb966,0x9925,0x0000,0x1000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9104,0x1821,0xa125,0x8904,0xa945,0x60a3,0x68c3,0xa945,0x4062,0xb966,0x9925,0x68c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x8104,0x9925,0x58a3,0x78e4,0xa125,0x68c3,0x9925,0x8104,0x9105,0x9104,0xa125,0xa125,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9105,0x0000,0x2041,0x9925,0xa945,0x68c3,0xb966,0x9925,0x80e4,0x4082,0x9925,0x3061,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa945,0x8904,0xa125,0x68c3,0xa125,0x3061,0x9105,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9104,0x0000,0x3061,0x9925,0xa125,0x9104,0x80e4,0x58a3,0x9105,0x8904,0x1000,0xb146,0x9105,0x68c3,0x9105,0x3061,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14e0,0x14e1, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x4882,0x0000,0x2041,0x50a3,0x4882,0x2041,0x1820,0x0000,0x0000,0x0800,0x2041,0x0800,0x0800,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x0800,0x0800,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x50a2,0x4882,0x3061,0x4082,0x2041,0x0800,0x0800,0x2841,0x50a2,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x5082,0x0000,0x2041,0x1020,0x0000,0x4082,0x58a3,0x3861,0x1820,0x0000,0x1820,0x0000,0x0000,0x0800,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x2841,0x1000,0x50a2,0x5082,0x0000,0x5082,0x2021,0x2841,0x60a3,0x1821,0x0800,0x58a3,0x5082,0x0800,0x0000,0x0000,0x1820,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x2021,0x1820,0x0000,0x2041,0x5082,0x0000,0x0000,0x0800,0x0000,0x4082,0x58a3,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x50a3,0x4882,0x2841,0x0000,0x2041,0x2841,0x0000,0x0000,0x3862,0x60a3,0x1821,0x0800,0x58a3,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x1820,0x0000,0x2041,0x5082,0x0000,0x4082,0x3061,0x1820,0x0000,0x1820,0x0800,0x2021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x2841,0x0800,0x0000,0x0800,0x1000,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x1000,0x0000,0x2841,0x5082,0x0000,0x2041,0x0000,0x3061,0x1820,0x1000,0x2041,0x0000,0x0000,0x1821,0x0800,0x2021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0,0x14e0,0x14e0,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e0,0x14e0,0x14c4, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7de4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2ce1,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0040,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0040,0x0020,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x00a0,0x09e0,0x0120,0x0140,0x0120,0x0000,0x0000,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x00e0,0x0000,0x01a0,0x00c0,0x0000,0x01a0,0x01a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0120,0x0160,0x0180,0x0000,0x0080,0x0000,0x0060,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0100,0x0160,0x00a0,0x0000,0x0060,0x0120,0x0160,0x0160,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x01a0,0x0000,0x0000,0x0000,0x0080,0x0160,0x00e0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0180,0x0120,0x0160,0x0160,0x00c0,0x01c0,0x00a0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x00c0,0x0180,0x0000,0x00a0,0x0080,0x0080,0x0160,0x01a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x00e0,0x0000,0x01a0,0x00a0,0x0060,0x0180,0x0000,0x00a0,0x01a0,0x0180,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x01a0,0x0000,0x0160,0x01c0,0x0100,0x0140,0x01c0,0x0120,0x0080,0x0000,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0120,0x0160,0x0180,0x0000,0x0080,0x0000,0x00a0,0x01c0,0x00a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x00e0,0x0b00,0x0ae0,0x0a00,0x13c0,0x0ae0,0x0b60,0x01a0,0x0ae0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0a40,0x0b40,0x0ae0,0x0a80,0x0b00,0x0ac0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x09e0,0x1400,0x0b20,0x00e0,0x0b00,0x01c0,0x0b20,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a80,0x0ba0,0x0b20,0x0a80,0x0aa0,0x0aa0,0x13e0,0x0b40,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ac0,0x0ae0,0x0b80,0x0180,0x0b40,0x0ba0,0x0b00,0x00e0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a60,0x0b20,0x0aa0,0x0a00,0x1400,0x0ae0,0x0b20,0x0b20,0x0b00,0x00e0,0x0000,0x00e0,0x13c0,0x0b20,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b00,0x0b20,0x0ac0,0x0a80,0x0000,0x0b60,0x0b60,0x0ae0,0x0a60,0x0000,0x0000,0x0aa0,0x1400,0x01c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0a40,0x0b40,0x0ac0,0x0b20,0x0ba0,0x01a0,0x0ae0,0x0b40,0x0ae0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ac0,0x0ae0,0x0b80,0x0ae0,0x0aa0,0x0b80,0x0ae0,0x0ac0,0x0a80,0x0a40,0x0a60,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x09e0,0x1400,0x0b20,0x00e0,0x0b00,0x01c0,0x0b00,0x0b40,0x0b00,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00e0,0x0b00,0x0aa0,0x0000,0x0aa0,0x0a00,0x0b80,0x0b80,0x0ae0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0100,0x0000,0x0b60,0x0000,0x0ac0,0x0b00,0x0ae0,0x01c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b00,0x0060,0x0ae0,0x0a60,0x0b00,0x0b60,0x0b60,0x0ba0,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x0aa0,0x0aa0,0x0b80,0x0ba0,0x0000,0x0ac0,0x0140,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0ae0,0x0ac0,0x0b80,0x0b60,0x0b80,0x0a60,0x0100,0x0b40,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a40,0x0b00,0x09e0,0x0000,0x0b00,0x0060,0x0b00,0x0b60,0x0ae0,0x00e0,0x0000,0x01c0,0x1420,0x0b00,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01c0,0x0b00,0x0000,0x01a0,0x13c0,0x0b40,0x0b80,0x0b80,0x0b00,0x0a40,0x0000,0x0000,0x0b40,0x1420,0x0160,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0100,0x0000,0x0b60,0x0000,0x0aa0,0x13a0,0x0000,0x0ac0,0x13a0,0x0ae0,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x13c0,0x0ac0,0x0ae0,0x13a0,0x0100,0x0080,0x13e0,0x00e0,0x0040,0x1400,0x0a40,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b00,0x0060,0x0ae0,0x0a60,0x0b00,0x0b80,0x0b00,0x0b00,0x0100,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b00,0x0ac0,0x0b20,0x0ac0,0x0ac0,0x0a80,0x0b80,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0a40,0x09c0,0x0b40,0x0a00,0x0b20,0x09c0,0x0a00,0x0b80,0x0140,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b40,0x0120,0x0b40,0x0b60,0x13a0,0x13a0,0x0180,0x13e0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a00,0x0b40,0x0b00,0x09c0,0x13e0,0x00e0,0x0b20,0x09c0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x13a0,0x0b20,0x0a20,0x0ae0,0x0a40,0x13e0,0x0b00,0x0a60,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0a20,0x0b80,0x00c0,0x0b40,0x0140,0x0ae0,0x0b80,0x0a80,0x0000,0x0000,0x09c0,0x1460,0x0b60,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x0b40,0x0160,0x0aa0,0x0b40,0x09e0,0x13c0,0x0b60,0x0b40,0x0120,0x0000,0x0000,0x0b40,0x1460,0x09c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0a40,0x09c0,0x0b40,0x0a20,0x0ae0,0x13a0,0x0a60,0x0a80,0x0b60,0x0ae0,0x0180,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b80,0x00c0,0x0140,0x13c0,0x09a0,0x09e0,0x13c0,0x09a0,0x0a00,0x0b80,0x0a80,0x0160,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b40,0x0120,0x0b40,0x0b60,0x13a0,0x13c0,0x0ac0,0x0b20,0x0140,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf9c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b00,0x0ae0,0x0100,0x0b20,0x0a80,0x01c0,0x0020,0x0200,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x00c0,0x0b20,0x0260,0x0080,0x0b20,0x0200,0x01e0,0x0b40,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0220,0x00a0,0x0200,0x0000,0x0180,0x0a80,0x0000,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b00,0x0220,0x0060,0x01e0,0x00c0,0x0200,0x0100,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x01c0,0x0040,0x0a80,0x01c0,0x0000,0x0220,0x0b00,0x0260,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x0b20,0x0220,0x0000,0x0220,0x00a0,0x0200,0x0000,0x0200,0x0100,0x0000,0x00c0,0x0a80,0x0120,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0240,0x0b20,0x01a0,0x01c0,0x0000,0x0a80,0x0180,0x00a0,0x0220,0x0000,0x0020,0x01c0,0x0240,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x00c0,0x0b20,0x0260,0x0080,0x0b20,0x0200,0x0200,0x0b40,0x0000,0x0200,0x0b20,0x0ae0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x0200,0x0000,0x00e0,0x0b00,0x0b20,0x0240,0x0ac0,0x0b20,0x0a80,0x0180,0x0100,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0220,0x00a0,0x0200,0x0000,0x0180,0x0a80,0x0b20,0x0220,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1800,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x1042,0x1803,0x1803,0x1843,0x0861,0x0801,0x0881,0x0861,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x0801,0x18c3,0x0801,0x1803,0x1843,0x0801,0x0801,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0821,0x1002,0x1903,0x1883,0x1803,0x0861,0x0801,0x0801,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x1002,0x18e3,0x1883,0x18a3,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x0841,0x0801,0x1863,0x18e3,0x1803,0x0801,0x0801,0x0881,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x18c3,0x1002,0x10a2,0x1803,0x0841,0x0801,0x0821,0x1061,0x1001,0x1001,0x1001,0x1081,0x1861,0x1861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0801,0x0801,0x1883,0x0801,0x18c3,0x1803,0x0801,0x0821,0x0801,0x0881,0x0861,0x0801,0x1801,0x1081,0x1061,0x1861,0x1061,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x0801,0x1082,0x1803,0x1883,0x1002,0x0801,0x0861,0x0801,0x0801,0x0801,0x1041,0x1061,0x1061,0x1861,0x1861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x0881,0x1062,0x1803,0x1803,0x1803,0x0801,0x0801,0x0801,0x0801,0x0801,0x0801,0x0881,0x1061,0x1061,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0801,0x0841,0x1863,0x18e3,0x18a3,0x1002,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x2082,0x0000,0xa925,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4228,0x39e7,0x1903,0x1903,0x2965,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x18c3,0x4228,0x2985,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x3208,0x2a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4228,0x2985,0x10a2,0x2124,0x2124,0x39e7,0x4208,0x3a08,0x2a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4248,0x2965,0x10c2,0x1903,0x2965,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x3a07,0x2124,0x10a2,0x2124,0x3a07,0x4208,0x4208,0x4208,0x3a08,0x2a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2945,0x3186,0x3186,0x2965,0x4228,0x3a08,0x4208,0x2a08,0x3a08,0x3208,0x3a08,0x3a08,0x2a08,0x1a08,0x3a08,0x41e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x3a07,0x18e3,0x4208,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x1a08,0x3208,0x3208,0x1a08,0x3208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x10e2,0x10c2,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x2a08,0x3a08,0x3208,0x1208,0x2208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x39e7,0x1903,0x1903,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x4228,0x39e7,0x18e3,0x2104,0x1903,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x628a,0xea09,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x3208,0x6208,0x7a08,0x1228,0x2a08,0x3208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x2965,0x8c51,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3208,0x7a08,0x8a08,0x5a08,0x3208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x3186,0x8430,0xb5b6,0xad75,0xa534,0x4a49,0x3a08,0x5208,0x8208,0x3208,0x3208,0x2208,0x2a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x8430,0xb5b6,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x3208,0x6208,0x7a08,0x3208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0xa534,0xb5b6,0xa534,0x4a49,0x4208,0x4208,0x3a08,0x5208,0x8208,0x2a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x8c71,0x8430,0x8430,0x8c71,0x2965,0x4a28,0x2a08,0x8a08,0x5208,0x7a08,0x5a08,0x6a08,0x9208,0xa9e8,0x5228,0x29c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39e7,0x4a69,0xad75,0x39e7,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3a08,0x5208,0xa9e8,0x7a08,0x7a08,0xb1e8,0x8208,0x31e7,0x5aaa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x31a6,0x7bef,0xb5b6,0xb5b6,0x7bef,0x31a6,0x4228,0x4208,0x4208,0x2a08,0x8a08,0x5208,0x7208,0xb1e8,0xa208,0x4a28,0x31c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x5208,0x5208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0xad75,0xad75,0x528a,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4228,0x31c7,0x7b8e,0xfa6a,0xf9a7,0xf9e8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41fe,0x419f,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce79,0x632c,0xf79e,0x52aa,0x39e7,0x3a28,0x5a08,0x99e8,0x6208,0x99e8,0xa9e8,0x7a08,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xf7be,0x73ae,0xce79,0xc638,0x0000,0x4a49,0x4208,0x3a08,0x8a08,0x8a08,0x5a08,0x99e8,0x5a08,0x3a08,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc638,0xce79,0x31a6,0x6b6d,0x4228,0x4208,0x3a08,0x8a08,0x8208,0x7208,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xc638,0xce59,0x4a49,0xffdf,0x52aa,0x39c7,0x4228,0x4208,0x3a08,0x5a08,0x99e8,0x5a08,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x39e7,0x7bcf,0xffdf,0x7bcf,0x39e7,0x4208,0x4208,0x4208,0x3a08,0x8a08,0x8a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x0000,0xd69a,0xb596,0xb596,0xd69a,0x0000,0x3a49,0x8208,0x8a08,0x8a08,0xb9e8,0xb1e8,0x99e8,0xc1e8,0x8208,0x9a08,0x49c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xffdf,0x31a6,0xc638,0xce59,0x0000,0x4a49,0x4208,0x4208,0x2208,0xa1e8,0x8208,0x99e8,0xc1e8,0x8a08,0xa9e8,0x59e7,0x4aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xd69a,0xd69a,0x39c7,0x4228,0x4208,0x4208,0x3208,0x8208,0x8a08,0x99e8,0x5208,0xb9e8,0x8208,0x3a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce79,0x632c,0xf79e,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4a08,0x1208,0xb1e8,0xb1e8,0x1208,0x4a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffdf,0x4a69,0xce59,0xc638,0x0000,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x5208,0x4a08,0x4228,0x31c7,0x7b6d,0xf26a,0xf9a7,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bd3,0x413f,0x41df,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc618,0xb5b6,0x2104,0xef7d,0x5acb,0x39c7,0x3228,0x8a08,0x9208,0x2208,0x8208,0x8a08,0x6a08,0x3a08,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xe73c,0xad75,0xd6ba,0xbdd7,0x0861,0x4a49,0x4208,0x4a08,0xa9e8,0x5208,0x0208,0x9208,0x8a08,0x2a08,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x1082,0xbdd7,0xdefb,0x94b2,0x4228,0x39e7,0x4208,0x3208,0x5208,0xa9e8,0x6a08,0x8a08,0x8208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xbdd7,0xdefb,0xb596,0xce59,0x4228,0x4208,0x4208,0x4208,0x2a08,0x8a08,0x9208,0x1208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x528a,0xef5d,0x528a,0x39c7,0x4228,0x4208,0x4208,0x3208,0x4a08,0xa9e8,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x9492,0xd69a,0xd69a,0x9492,0x3145,0x2228,0xb1e8,0xb1e8,0xc1e8,0xb1e8,0x9208,0xc1e8,0xb1e8,0x3208,0xaa08,0x61c7,0x636d,0x3165,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x39c7,0xbdf7,0xbdf7,0x0020,0x4a49,0x4208,0x4a08,0x2208,0xb1e8,0x3a08,0x9208,0xb9e8,0xd1e8,0x8a08,0x21e7,0x5aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xbdf7,0xbdf7,0x0000,0x4a49,0x4208,0x4a08,0x1a08,0xb1e8,0xa9e8,0xc9e8,0x4a08,0x99e8,0x6208,0x3228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc618,0xbdd7,0x2124,0xef7d,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x3a08,0x6208,0x5a08,0x3a08,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef7d,0xa534,0xce79,0x94b2,0x2945,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x5a08,0xb1e8,0x9208,0x3228,0x39c7,0x7b6d,0xf26a,0xf9a7,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e1,0x14e0,0x14e0,0x3ada,0x415f,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xc618,0xc638,0x3186,0xef7d,0x5acb,0x39c7,0x4228,0x2a08,0x8a08,0x8a08,0x9208,0xa9e8,0x7a08,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xef7d,0xffdf,0xffff,0xad75,0x18e3,0x4a49,0x4208,0x3a08,0x5208,0x9a08,0x8a08,0x8a08,0x2a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0861,0xbdf7,0xc638,0x4228,0x4208,0x4208,0x4208,0x4a08,0xa1e8,0x4a08,0x7208,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x10a2,0xbdf7,0xc638,0xdefb,0x8c71,0x1082,0x4a49,0x4208,0x4208,0x4208,0x2a08,0x8a08,0x8208,0x3208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x5acb,0xef5d,0x5acb,0x39c7,0x4228,0x4208,0x3a08,0x4a08,0xa1e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xce59,0xce59,0x0000,0x4a49,0x2208,0xa1e8,0x7a08,0x99e8,0xb9e8,0x4a08,0x9a08,0xb9e8,0xb9e8,0x7a08,0x29c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x2104,0xbdd7,0xc618,0x0000,0x4a49,0x4208,0x4208,0x3208,0x8208,0xb1e8,0x9a08,0xa1e8,0x6a08,0x9208,0x49e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xbdf7,0xbdf7,0x0000,0x4a49,0x4208,0x4208,0x2208,0xa1e8,0x7a08,0xa9e8,0x5208,0x99e8,0x6a08,0x3a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc618,0xbdd7,0x2124,0xef7d,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x2208,0x9a08,0xa9e8,0x1a08,0x4a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0x7bef,0x5acb,0x3186,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x5208,0x4a08,0x4228,0x31c7,0x7b6d,0xf26a,0xf9a7,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x14c0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x10a2,0xb5b6,0xf7be,0xdefb,0xef5d,0x52aa,0x4208,0x4228,0x4208,0x3a08,0x5228,0x2a49,0x2228,0x3a48,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x1082,0xc618,0xf79e,0xf7be,0x632c,0x39c7,0x4a49,0x4249,0x4208,0x3a28,0x4a28,0x5a08,0x3a28,0x4208,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4a49,0x0000,0xc638,0xce79,0x4228,0x6b6d,0x4228,0x4208,0x5249,0x4a28,0x3a28,0x4249,0x2a49,0x2a28,0x4228,0x4228,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xce59,0xbdd7,0x73ae,0xef5d,0x39e7,0x4208,0x4228,0x4a49,0x4228,0x4228,0x3a08,0x5228,0x4228,0x4208,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x5acb,0xf7be,0x5aeb,0x4208,0x4228,0x4208,0x4228,0x4a08,0x4a28,0x3a28,0x4228,0x4228,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x4a69,0x0861,0xc638,0xce59,0x10a2,0x4a69,0x4a49,0x4a28,0x3a28,0x4208,0x5228,0x4a28,0x4a49,0x5228,0x6a28,0x3a28,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf79e,0x632c,0xce79,0xbdf7,0x0841,0x4a49,0x4208,0x4208,0x4208,0x3208,0x6a28,0x5249,0x4a28,0x4249,0x5229,0x41e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xd6ba,0xd69a,0x39c7,0x4228,0x4228,0x4a49,0x4228,0x4a28,0x3a28,0x4208,0x4a28,0x4a28,0x4a49,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0861,0xbdf7,0xce79,0x632c,0xf7be,0x5acb,0x39e7,0x4228,0x4a49,0x4228,0x4228,0x3a08,0x7228,0x6229,0x4249,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xf7be,0x528a,0x39c7,0x4a69,0x4208,0x4a49,0x4a49,0x4208,0x4a49,0x4228,0x4228,0x4208,0x4228,0x4228,0x4a49,0x31e7,0x7b6d,0xf26a,0xf9a7,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x41bf,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xa514,0xc618,0xc638,0x2124,0x39c7,0x31a6,0x4228,0x4208,0x2986,0x2904,0x41e7,0x2924,0x18c3,0x31a6,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x8c51,0x8c71,0x9492,0x4208,0x4208,0x2104,0x2124,0x4208,0x41e7,0x2965,0x3a08,0x31a6,0x4208,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x3186,0x8430,0xb5b6,0xad55,0xa534,0x4a49,0x39e7,0x2124,0x2145,0x39c7,0x2924,0x2904,0x3186,0x3186,0x39c7,0x3186,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c71,0x8c71,0x2965,0xad75,0x528a,0x4208,0x3186,0x18e3,0x31a6,0x31a6,0x41e7,0x31c7,0x2945,0x39e7,0x31a6,0x39e7,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x39e7,0x4a69,0xad55,0x4208,0x18c3,0x3186,0x4228,0x2965,0x3a08,0x3186,0x39e7,0x39c7,0x2965,0x2104,0x39e7,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x2104,0x18c3,0x8430,0x7bef,0x0000,0x39c7,0x18c3,0x2145,0x3186,0x3a08,0x31c6,0x2965,0x1904,0x31a6,0x2186,0x41e7,0x2965,0x6b4d,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb596,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4228,0x2186,0x1904,0x3186,0x2104,0x2145,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x31a6,0x7bef,0xad55,0xad75,0x73ae,0x3186,0x31a6,0x2124,0x2945,0x31c7,0x31a6,0x3a08,0x3186,0x2145,0x18c3,0x39c7,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x7bcf,0x0861,0x4208,0x3186,0x2124,0x39c7,0x39c7,0x41e7,0x2186,0x1945,0x2104,0x31a6,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad55,0x4a69,0x18e3,0x2945,0x39e7,0x2124,0x2124,0x39e7,0x2104,0x2965,0x3186,0x4208,0x3186,0x2945,0x20e3,0x2145,0x7b8e,0xf26a,0xf9a7,0xf9a8,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x18e3,0x2965,0xb5b6,0xa514,0x632c,0x7bef,0x39c7,0x39c7,0x8430,0xad75,0x52aa,0xa534,0xb5b6,0x7bef,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2945,0x39c7,0xa534,0x8430,0x39c7,0xad55,0xa534,0x4a49,0x5acb,0x8c51,0x4a49,0x7bef,0x528a,0x8410,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x18c3,0x2124,0x2124,0x39e7,0x4a69,0xad55,0xa514,0x5aeb,0xa514,0xad55,0x8c71,0x7bef,0x5acb,0x8430,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x2965,0x4228,0x18c3,0x4208,0x3186,0x8410,0xb596,0x7bcf,0x7bcf,0x528a,0x738e,0x94b2,0x4a69,0x7bcf,0x5aeb,0x3186,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4228,0x0000,0x8410,0xb596,0x8410,0x18e3,0x8c71,0x528a,0x7bef,0x5acb,0x6b6d,0x94b2,0xad75,0x528a,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x8430,0xb596,0x7bcf,0x738e,0xad55,0x9cf3,0x8410,0xb5b6,0xa514,0x8430,0x4a69,0x738e,0x9492,0xb596,0x7bcf,0x8410,0x52aa,0x738e,0x7bef,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2104,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xad55,0x8430,0xad75,0xa534,0x4228,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0xa514,0x7bef,0x73ae,0x4a49,0x8c51,0xa514,0xa514,0x6b4d,0x7bcf,0x4a69,0x8430,0xa514,0xb5b6,0x7bef,0x2945,0x738e,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x18e3,0x3186,0x9cf3,0xa534,0x4a49,0x8410,0xad55,0x632c,0x738e,0x52aa,0x8c51,0x9cf3,0xad75,0x8410,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x18c3,0x4a69,0xad55,0xa514,0x5aeb,0xa534,0xa514,0x5acb,0xad75,0x9492,0x7bef,0x4a49,0x8430,0x9cf3,0xbdb6,0x73cf,0x732c,0xfa6a,0xf9e7,0xf008,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39e7,0x6b6d,0xbdf7,0x8c71,0xbdf7,0xa534,0x2104,0x6b6d,0xad75,0x7bef,0xa514,0x7bcf,0xc618,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x6b6d,0xbdd7,0x8410,0xa534,0xbdd7,0x8c71,0xad75,0x8c71,0x8c51,0xa534,0x9cf3,0x528a,0xb596,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4a49,0x31a6,0x6b4d,0xc618,0x8430,0xbdd7,0xbdf7,0x738e,0x73ae,0xd69a,0xc618,0xb5b6,0x1082,0x5acb,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x4228,0x4208,0x4a49,0x4a49,0x18e3,0xb5b6,0x9cd3,0xa534,0xc618,0x5aeb,0x9cf3,0xce79,0xb596,0xad75,0x6b6d,0x2945,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2945,0xb5b6,0x94b2,0xad55,0x9cf3,0x8c51,0x8c51,0xbdf7,0xbdd7,0xa514,0xc638,0x8c51,0xa514,0x4a69,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0xb5b6,0x9cd3,0xa514,0xc638,0xa514,0x632c,0x4228,0xc618,0x73ae,0xad75,0x632c,0x9cf3,0xce79,0x9492,0xa534,0xce59,0xb5b6,0xad55,0x8c71,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x7bef,0xb596,0xad55,0xa534,0x630c,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0xbdf7,0x94b2,0xd69a,0x94b2,0xbdf7,0xbdd7,0x9492,0xbdf7,0x9cf3,0x630c,0xad75,0x73ae,0xc618,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39e7,0x6b6d,0xc638,0x8c71,0xbdd7,0xa514,0x7bcf,0xbdf7,0xb596,0x9492,0x8410,0xc638,0x73ae,0x5acb,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39e7,0x6b4d,0xc618,0x8c71,0xbdf7,0xb5b6,0x9492,0x9cf3,0xad75,0x9492,0xd69a,0x9cf3,0xa534,0x7bcf,0xc618,0x31c7,0x7b6e,0xf26a,0xf9a7,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39c7,0x630c,0xce79,0x94b2,0x7bcf,0xa514,0x0000,0x6b6d,0xa514,0x39c7,0xad75,0x4a69,0xad55,0x18c3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x31a6,0x6b6d,0x9cd3,0x4a49,0xc618,0xce59,0xc638,0x6b6d,0xce59,0xad55,0xce59,0xa534,0x9492,0xad55,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x5aeb,0xd6ba,0xc618,0x632c,0xce79,0x528a,0x528a,0xb596,0x8c71,0xa534,0x2104,0x5acb,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4a49,0x2124,0xa534,0xdefb,0x8410,0xad55,0x4a69,0x9cd3,0xbdf7,0x94b2,0xd69a,0x630c,0x3186,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2124,0xa534,0xe71c,0x7bef,0xad75,0xb5b6,0xc618,0xb5b6,0x9cd3,0xce59,0xbdd7,0x31a6,0xad75,0x6b4d,0x4a49,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0xad55,0xdefb,0x8410,0xa534,0xad55,0x18c3,0x0861,0xad55,0x528a,0xad55,0x4a69,0x94b2,0xc618,0xdedb,0x8430,0x94b2,0x9cf3,0xce79,0x8410,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x632c,0x9492,0xa514,0xb5b6,0x31a6,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x2104,0x9cd3,0x8410,0xa514,0xb596,0xc618,0xc618,0x9cd3,0x7bef,0xa514,0x4228,0xad55,0x528a,0xad55,0x18e3,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39c7,0x630c,0xce79,0x94b2,0x7bef,0xa514,0x2965,0xc618,0xce59,0x8430,0x4a49,0xce79,0x5acb,0x18e3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x630c,0xce79,0x94b2,0x6b6d,0xd69a,0xce59,0x2965,0x9cd3,0x8410,0xa514,0xb5b6,0xad55,0x4a69,0xad55,0x0000,0x7b8e,0xf26a,0xf987,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x5aeb,0xc638,0xad55,0x8430,0x9cf3,0xb596,0x7bcf,0x5acb,0xa534,0x2104,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x3186,0x5acb,0xce59,0x9cd3,0x73ae,0x9cd3,0x6b6d,0x9cd3,0xa514,0x7bcf,0xad55,0x9cf3,0xbdf7,0x7bef,0x2965,0x39c7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x2965,0x6b4d,0x9cd3,0x6b6d,0x94b2,0xbdd7,0x9cf3,0x9cd3,0x94b2,0x4a49,0xad55,0x1082,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0xa514,0x6b6d,0x8c71,0x8c51,0xb596,0x9cd3,0xad75,0x4a49,0xa534,0x632c,0x2124,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0xa514,0x738e,0x8c51,0xad55,0x7bef,0x9cf3,0xbdd7,0x4a49,0x9cd3,0xbdf7,0xbdd7,0x7bef,0x2945,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0xa514,0x738e,0x8430,0xad75,0xb596,0xa514,0x2965,0xa534,0x5aeb,0x7bcf,0xb596,0x9cd3,0xa534,0x6b6d,0x8c51,0xad75,0x4a69,0xa514,0x8c51,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0x8c71,0xc638,0x9cf3,0x52aa,0x3186,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39c7,0xce59,0xa534,0x9492,0x528a,0xc618,0x9492,0x0000,0x4a49,0xa534,0xb596,0x7bcf,0x5acb,0xa534,0x2104,0x39c7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x4a49,0xa534,0xad55,0x9cf3,0x9492,0x7bef,0x9cd3,0xbdd7,0xa534,0x8410,0x2124,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x6b4d,0x9cd3,0x73ae,0x8410,0xc618,0xa534,0x9492,0x5aeb,0xa534,0x528a,0xad55,0x1041,0x838e,0xf28a,0xf8e7,0xfc48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x62eb,0x5acb,0x52aa,0x6b6d,0x7bef,0x630c,0x5aeb,0x7bcf,0x4a49,0x5acb,0x5acb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x5aaa,0x52aa,0x52aa,0x528a,0x738e,0x630c,0x5269,0x62eb,0x5269,0x632c,0x52aa,0x4a69,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aeb,0x528a,0x630c,0x6b6d,0x7bef,0x6b4d,0x5acb,0x5acb,0x5aeb,0x4a69,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x62eb,0x528a,0x630c,0x528a,0x7bae,0x62eb,0x5aaa,0x5acb,0x5acb,0x5acb,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x5aaa,0x5a8a,0x62eb,0x528a,0x62eb,0x630c,0x4a49,0x5aaa,0x62eb,0x5aaa,0x5aaa,0x630c,0x73ae,0x4a69,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3145,0x62eb,0x528a,0x5aeb,0x632c,0x7bcf,0x73ae,0x52aa,0x5acb,0x5acb,0x4a49,0x7bcf,0x5aeb,0x52aa,0x528a,0x5aeb,0x630c,0x52aa,0x528a,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x6b6d,0x5aeb,0x5acb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x5aaa,0x528a,0x5acb,0x738e,0x6b2c,0x5acb,0x52aa,0x5aeb,0x5aeb,0x5acb,0x4a69,0x5aeb,0x7bcf,0x4a49,0x5acb,0x5acb,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x62eb,0x5acb,0x5269,0x62eb,0x73ae,0x4a69,0x5aeb,0x4a69,0x630c,0x6b6d,0x7bef,0x632c,0x4a69,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x5aaa,0x5aaa,0x52aa,0x5aeb,0x5acb,0x52aa,0x5aeb,0x4a69,0x632c,0x6b6d,0x632c,0x5acb,0x52aa,0x5acb,0x52aa,0x42cb,0x1a49,0x73ce,0xf2aa,0xf807,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3a08,0x5b2c,0x630c,0x530c,0x4b0c,0x52eb,0x530c,0x630c,0x52cb,0x5aaa,0x5aeb,0x630c,0x5acb,0x632c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a2,0x52eb,0x5b0c,0x630c,0x4b0c,0x4acb,0x5aeb,0x530c,0x4aeb,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3a08,0x5b2c,0x630c,0x4b0c,0x4b0c,0x530c,0x530c,0x630c,0x530b,0x630c,0x5aeb,0x5aeb,0x52aa,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x5aeb,0x5b0c,0x530c,0x4b0c,0x530c,0x530c,0x4b0c,0x52eb,0x5b0c,0x4aeb,0x530c,0x3aaa,0x4aeb,0x530c,0x630c,0x530c,0x5b0c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x530c,0x4b0c,0x4b0c,0x52eb,0x4b0c,0x4aeb,0x5aeb,0x5b0c,0x4b0b,0x5aeb,0x4b0c,0x4b0b,0x52eb,0x5acb,0x632c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x00a2,0x42cb,0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x630c,0x630c,0x630c,0x632c,0x5acb,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x5b2c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x5acb,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x42eb,0x530c,0x530c,0x5acb,0x52eb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x5acb,0x632c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x532c,0x5b0c,0x5b0c,0x630c,0x52eb,0x530c,0x4b0c,0x52eb,0x5acb,0x630c,0x630c,0x630c,0x5aeb,0x5aeb,0x52aa,0x5aeb,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a2,0x5aeb,0x530c,0x4b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x630c,0x5b0c,0x730c,0xc34d,0xcb6e,0xcb6d,0xf208,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41be,0x41bf,0x2935, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0x7000,0x0000,0x6800,0x9863,0x7000,0x6000,0x0000,0x6800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x7000,0x2800,0x0000,0x9863,0x7000,0x0800,0x9022,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0x7000,0x0000,0x9042,0xa083,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0x2000,0x5000,0x7800,0x9863,0x8801,0x6800,0xa083,0x5800,0x6000,0x9863,0x6800,0x9883,0x8802,0x6800,0x0000,0x5800,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3882,0x6842,0x2000,0x7000,0x8802,0x9863,0x6800,0x8822,0x9042,0x0000,0x6800,0x9062,0x3800,0x9022,0x9883,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0x9883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1841,0x98e4,0x6800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x9883,0x7800,0x6000,0x0000,0x6800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x7042,0x9842,0x3800,0x5800,0x0800,0x6800,0x8802,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x1800,0x8802,0x9022,0x2000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9862,0xf987,0xf967,0xf987,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7de4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41bf,0x20cf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x8925,0x7104,0x8925,0xa966,0x68e4,0x50c3,0xc9a7,0x8925,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0x8104,0x7904,0xa146,0x7104,0x58c3,0xa145,0x9145,0x50c3,0x0061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x8905,0x7904,0x70e4,0x68e4,0xb166,0x48c3,0xd1a7,0x9125,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x3082,0x8925,0xc187,0x9125,0x3082,0xa966,0x8925,0x9945,0x8125,0xa145,0x9945,0x9945,0x2882,0xa946,0x58e3,0xa146,0x50c3,0x0061,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc987,0xb166,0xc186,0xb166,0x58e3,0x68e4,0xb966,0x7104,0xb166,0x9945,0x7904,0x9125,0xb966,0x60e4,0x38a2,0x0061,0x1062,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa145,0x7904,0x0061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7904,0xa966,0x0000,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0xb166,0x8104,0xc987,0x9125,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa145,0x60e4,0xb966,0x9125,0x48c3,0xa145,0x60e3,0xb966,0x1082,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x9125,0x9945,0x9125,0x9125,0x2882,0x0061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x0061,0xd1a7,0xf9e8,0xf1e8,0xf228,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2ce1,0x04c0,0x14e0,0x14e1,0x14e0,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399d,0x0002, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0xa125,0xa125,0x3862,0x9925,0x9105,0x9105,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xa945,0xb146,0xb966,0x1020,0x0000,0x2841,0x80e4,0x9925,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0xa125,0xa125,0x2041,0x9125,0x2841,0x9925,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0x8904,0x8104,0xa945,0x9925,0x0000,0x9925,0xd987,0x78e4,0x3061,0x80e4,0x9105,0xa945,0x0000,0x0000,0xc986,0x80e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x70e4,0xa945,0xb966,0x3061,0x1000,0xd187,0xb146,0x58a3,0x9925,0x80e4,0xb146,0xb966,0x4062,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x8904,0x68c3,0x9105,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9105,0x0000,0xc166,0x8104,0x2021,0x9925,0x2841,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x50a2,0xb146,0x9925,0x0000,0x9925,0x58a3,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x68c3,0xa125,0x80e4,0x9925,0x9925,0x8104,0x4082,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x68c3,0x9925,0x8904,0xa125,0x9105,0x70c3,0x9105,0x9925,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x68c3,0x9105,0x3861,0x9105,0x3862,0x9105,0x3862,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb146,0x58a3,0x9104,0xa945,0x8104,0x9925,0x58a3,0x78e4,0x8904,0xb966,0x9105,0x3862,0x0000,0x0000,0x9105,0x4082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9104,0x0800,0xb146,0xa945,0x9105,0x9104,0x80e4,0x60a3,0x78e4,0x9104,0xa125,0xb146,0xa945,0x9925,0x68c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa945,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc166,0x9925,0x80e4,0x4082,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x9925,0xa125,0x78e4,0x9105,0xa945,0x68c3,0x4082,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x9105,0x9925,0x9105,0x9105,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x2041,0x50a2,0x5082,0x0000,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x1000,0x0000,0x5082,0x2041,0x2841,0x60a3,0x2041,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x1821,0x0800,0x1821,0x0800,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x2041,0x50a2,0x4882,0x2841,0x0000,0x2021,0x3862,0x4082,0x2041,0x1820,0x0000,0x0000,0x2041,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x2021,0x1020,0x1820,0x4082,0x58a3,0x3861,0x1820,0x0000,0x2041,0x2021,0x58a3,0x1821,0x4082,0x58a3,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x4882,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x4882,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x4082,0x3061,0x1820,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0x50a2,0x0000,0x2841,0x5082,0x0000,0x1000,0x1821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3041,0x9105,0x9125,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x419e,0x1067,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x1020,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1820,0x1820,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x3136,0x0000,0x0023, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0040,0x0000,0x0040,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x41be,0x0824,0x0000,0x0001, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x01a0,0x0000,0x0160,0x01c0,0x0100,0x0000,0x00a0,0x0000,0x0160,0x00c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x09c0,0x00a0,0x0040,0x01c0,0x0180,0x0000,0x0180,0x0180,0x0120,0x0160,0x0180,0x0000,0x0180,0x00a0,0x0040,0x09e0,0x00a0,0x0040,0x01c0,0x0180,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x00c0,0x0000,0x0000,0x0080,0x0000,0x0180,0x0160,0x0100,0x0000,0x00a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x01a0,0x0000,0x01a0,0x0100,0x0000,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0000,0x0160,0x01a0,0x0000,0x00a0,0x09e0,0x0100,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x01a0,0x0000,0x0180,0x00a0,0x0040,0x09c0,0x00a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x0040,0x0080,0x0000,0x0080,0x0000,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0040,0x0000,0x00a0,0x01a0,0x0180,0x00a0,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x0060,0x0000,0x00a0,0x09e0,0x0100,0x0140,0x01a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0000,0x0001, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ac0,0x0ae0,0x0b80,0x0b00,0x0a00,0x0a00,0x0ae0,0x0180,0x13c0,0x0ae0,0x00e0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0b40,0x0ac0,0x0b40,0x0b40,0x0aa0,0x0a80,0x0b00,0x0aa0,0x0a00,0x1400,0x0b00,0x0a40,0x0b40,0x0ac0,0x0b20,0x0b20,0x0ac0,0x0b40,0x0b40,0x0ae0,0x00a0,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0b00,0x0080,0x0a20,0x0b00,0x00e0,0x0b20,0x1400,0x01c0,0x0a00,0x0b00,0x00c0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a60,0x0b20,0x0aa0,0x0a60,0x0b20,0x0a40,0x0b60,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0ae0,0x01a0,0x0ba0,0x0ae0,0x0aa0,0x0ae0,0x0b00,0x0a00,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a60,0x0b20,0x0aa0,0x0a60,0x0b40,0x0ac0,0x0b20,0x0b20,0x0b00,0x00e0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0ae0,0x0100,0x0ae0,0x09c0,0x0ae0,0x01c0,0x0ae0,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x01a0,0x0000,0x0b00,0x0b60,0x0a80,0x0b60,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0ae0,0x0100,0x0b40,0x0ae0,0x0ae0,0x0a80,0x0b80,0x0ae0,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2913,0x0000,0x0023,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0ae0,0x0aa0,0x13c0,0x0100,0x00c0,0x0b60,0x0a00,0x0ba0,0x0a60,0x0100,0x0b40,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0b80,0x0a80,0x0b60,0x0b00,0x0000,0x0a40,0x0b00,0x09e0,0x0000,0x0b00,0x0060,0x0b20,0x0000,0x0aa0,0x13c0,0x0b60,0x0a80,0x0b60,0x0b00,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0aa0,0x0080,0x13a0,0x0b00,0x0a60,0x0ae0,0x0080,0x0ae0,0x0040,0x0b60,0x0a40,0x0b20,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a40,0x0b00,0x0140,0x0b00,0x0a60,0x0ae0,0x0b20,0x0b60,0x0ba0,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x0b40,0x0a20,0x0b80,0x0b60,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a40,0x0b00,0x0140,0x0b20,0x00e0,0x0aa0,0x13c0,0x0b40,0x0ae0,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b00,0x0100,0x0b80,0x0b00,0x0a20,0x0ba0,0x0ac0,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0180,0x0000,0x0b20,0x0b20,0x0000,0x0ae0,0x0b80,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0ae0,0x00a0,0x0b60,0x0ac0,0x0a80,0x0180,0x13c0,0x0b00,0x0a40,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x419e,0x1068,0x0000,0x0001,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x13a0,0x0b20,0x09e0,0x13c0,0x09c0,0x09e0,0x13e0,0x0b40,0x13c0,0x0b00,0x0a60,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b00,0x1380,0x0a20,0x0b20,0x0b00,0x0160,0x00e0,0x0a20,0x0b80,0x00c0,0x0b40,0x0140,0x0ae0,0x0a20,0x0ae0,0x0b80,0x0b80,0x0a20,0x0b20,0x0b00,0x0180,0x0040,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0b60,0x0a20,0x0ae0,0x13c0,0x0b60,0x0b40,0x0140,0x0b40,0x00e0,0x13e0,0x0b60,0x0b60,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0a40,0x0b40,0x0b60,0x0a60,0x0b80,0x13a0,0x0180,0x13e0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x13e0,0x0b40,0x13c0,0x0b60,0x0ac0,0x0ac0,0x0120,0x0b00,0x0b00,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0a40,0x0b40,0x0b40,0x0b20,0x0b20,0x0b40,0x0b80,0x0a80,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0ac0,0x0b80,0x0a20,0x13c0,0x0b40,0x13c0,0x0b20,0x0160,0x0120,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a60,0x0080,0x0b40,0x0b00,0x00e0,0x0b40,0x09a0,0x13c0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b20,0x0a00,0x0b00,0x0120,0x0ae0,0x0b60,0x0b60,0x0b40,0x0100,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf008,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x01c0,0x0060,0x0240,0x0ac0,0x0b20,0x0a60,0x0180,0x0000,0x0240,0x0b00,0x0260,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0220,0x0000,0x01e0,0x0a80,0x0b20,0x0ac0,0x0220,0x0b20,0x0220,0x0000,0x0220,0x00e0,0x0080,0x0b20,0x0200,0x01e0,0x0020,0x01e0,0x0280,0x1321,0x0ae0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b20,0x0240,0x0060,0x01e0,0x0000,0x0200,0x00c0,0x0200,0x00c0,0x01c0,0x0000,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x0b40,0x0200,0x0080,0x0b00,0x0ae0,0x0240,0x0040,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x01c0,0x0000,0x0240,0x0ae0,0x0ae0,0x0140,0x0ae0,0x0ae0,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x0b40,0x0200,0x00c0,0x0ac0,0x0200,0x0240,0x0000,0x0220,0x0100,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0120,0x0200,0x00c0,0x01c0,0x0000,0x0240,0x0ae0,0x0b40,0x0200,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0240,0x0b20,0x0ac0,0x0240,0x0040,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0240,0x0b20,0x0100,0x0ae0,0x0ac0,0x0180,0x01c0,0x00a0,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf828,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x0821,0x1002,0x1803,0x1003,0x0801,0x1001,0x1881,0x1801,0x1001,0x1801,0x1881,0x1061,0x1861,0x1061,0x1061,0x1861,0x1061,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0841,0x1002,0x1803,0x1803,0x1803,0x0801,0x0801,0x0801,0x1081,0x1001,0x1021,0x1041,0x1801,0x1001,0x1001,0x1841,0x1801,0x1002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x18e3,0x1883,0x18e3,0x0801,0x0841,0x1001,0x1821,0x1001,0x1881,0x1801,0x1081,0x1861,0x1861,0x1061,0x1861,0x1861,0x0800,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x1002,0x18c3,0x1803,0x1803,0x0801,0x0861,0x0801,0x0801,0x1861,0x1861,0x1061,0x1061,0x1861,0x1061,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x08a1,0x0801,0x1003,0x1803,0x1883,0x0801,0x1801,0x1801,0x1061,0x1061,0x0861,0x1061,0x1861,0x1861,0x1061,0x1061,0x1061,0x1000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x18c3,0x0801,0x1803,0x1803,0x0841,0x0801,0x0821,0x0861,0x1061,0x1861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0801,0x0801,0x0821,0x0801,0x18e3,0x1803,0x0801,0x0801,0x0801,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x1843,0x0801,0x1003,0x1803,0x0841,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0801,0x0801,0x0801,0x1803,0x0801,0x0801,0x0801,0x0821,0x0801,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x1861,0x0020,0x70e4,0xf1c8,0xf1c8,0xf1e8,0xf1a8,0xf268,0xf768,0xf7c8,0xf7c8,0xf7c8,0xf7c8,0xf7c8,0x7da4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x39e7,0x10e2,0x2985,0x4228,0x3a08,0x2208,0x2a08,0x3208,0x1a08,0x2208,0x3a08,0x2208,0x3208,0x3208,0x1a08,0x29e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x1903,0x1903,0x2124,0x4208,0x4208,0x4208,0x2a08,0x3a08,0x3208,0x3a08,0x2228,0x3208,0x3208,0x1a08,0x2208,0x3a07,0x52aa,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x3a07,0x18e3,0x18c3,0x2945,0x4228,0x4207,0x3208,0x1a08,0x3208,0x2208,0x1a08,0x3208,0x2208,0x2208,0x3208,0x2208,0x21e7,0x4249,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4248,0x2965,0x10a2,0x2124,0x2124,0x3a07,0x4208,0x4208,0x3a08,0x2208,0x1a08,0x3208,0x3208,0x1a08,0x3a08,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x4228,0x2965,0x10c2,0x2124,0x4228,0x2208,0x1a08,0x2a08,0x3208,0x4208,0x2a08,0x2208,0x2208,0x2a08,0x3208,0x39e7,0x3a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x18e3,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x3a08,0x2a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4208,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x3a07,0x18e3,0x4228,0x2985,0x2144,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4228,0x39e7,0x1903,0x3a07,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4208,0x4208,0x4208,0x3a08,0x5208,0x5a08,0x5208,0x5208,0x5208,0x5228,0x52a8,0x52a8,0x52a8,0x52a8,0x52a8,0x52a8,0x29a7,0x53ca,0x2503,0x0cc0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x41bf,0x1068,0x0000,0x0001,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xb5b6,0x8c51,0x2986,0x5228,0xa208,0x9a08,0x8208,0xb1e8,0xa208,0x5208,0xa9e8,0x7a08,0x7a08,0xb208,0x79e7,0x4aaa,0x6b2c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xad55,0xb5b6,0x9cd3,0x39c7,0x4a28,0x3208,0x8208,0x5208,0x7208,0x6208,0xa9e8,0x7a08,0x7208,0xb1e8,0xa208,0x41c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39e7,0x4a69,0xad75,0xb5b6,0x8c71,0x2104,0x3a49,0x7a08,0xa9e8,0x8208,0x9a08,0xb1e8,0x8208,0x9a08,0xa9e8,0x8208,0xa208,0x99c7,0x62aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x8430,0xb5b6,0xad75,0xa534,0x4a49,0x4208,0x4208,0x4a08,0xa208,0xb1e8,0x7208,0x7a08,0xa9e8,0x5208,0x3a08,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4a49,0x2104,0x8c71,0xbdd7,0x94b2,0x41c7,0xa208,0xb1e8,0x8a08,0x6a08,0x4208,0x8208,0x9a08,0xa9e8,0x8a08,0x7a08,0x41e7,0x8aaa,0x5b2c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x4208,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x3208,0x5a08,0x8a08,0x2a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x2965,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3208,0x3208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x31a6,0x8430,0x94b2,0x2945,0x4228,0x4208,0x4208,0x3a08,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a69,0xad55,0x4a69,0x39e7,0x4228,0x4208,0x4208,0x4208,0x3208,0x2208,0x2a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x4208,0x39a7,0x738e,0x3506,0x04c0,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0001,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x18c3,0xbdf7,0xd6ba,0xe71c,0x4b0c,0x99a7,0xa208,0x6a08,0x3a08,0xb9e8,0x7208,0xa1e8,0x8208,0x99e8,0xc1e8,0x9208,0xb1c7,0x6a8a,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0841,0xc638,0xce59,0x4228,0xb596,0x4a49,0x4208,0x1a08,0xb1e8,0xb1e8,0xa1e8,0xb9e8,0x7208,0xa9e8,0x6208,0xb9e8,0x8208,0x31c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf7be,0x7bcf,0xdedb,0x8c92,0x5145,0xba08,0x8208,0x4a08,0x8208,0xb9e8,0x6208,0xc1e8,0x6a08,0x7a08,0xb9e8,0x91c7,0xaa8a,0x4b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xc638,0xce79,0x31a6,0x6b6d,0x4228,0x4208,0x4208,0x3a08,0x8208,0xb9e8,0x6208,0xa9e8,0x7a08,0xa1e8,0x2208,0x4a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2945,0x9492,0xdedb,0x6b6d,0xad55,0x4249,0x81e8,0xb1e8,0x6a08,0xb1e8,0x7208,0xc1e8,0xb9e8,0x7208,0x7208,0xd1e8,0x99c7,0xaa8a,0x530c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffdf,0x0000,0xbdf7,0xce59,0x0000,0x4a49,0x4208,0x4208,0xb1e8,0xd9e8,0x7208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x0000,0xce59,0xce59,0x0000,0x4a49,0x4208,0x4208,0x6208,0x6a08,0x5a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xf7be,0x528a,0xe71c,0x9cd3,0x2124,0x4228,0x4208,0x4208,0x4208,0xb1e8,0x8208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x5acb,0xf7be,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x3208,0x7a08,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x4a49,0x4228,0x4228,0x4208,0x4228,0x4a28,0x4a49,0x4228,0x4a48,0x4a49,0x4228,0x4a49,0x4a49,0x4228,0x39c7,0x6bad,0x3505,0x04c0,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41be,0x41bf,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xef7d,0x10a2,0xbdd7,0xbdf7,0x1820,0x9229,0xa1e8,0x3208,0xa1e8,0x4a08,0xa9e8,0x4208,0x9208,0xc1e8,0xb1e8,0x79e7,0x4aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x2965,0x9492,0xdedb,0x8c51,0x0000,0x39e7,0x4a28,0x2a08,0x99e8,0x9a08,0xc1e8,0xb9e8,0x2a08,0xa1e8,0x5a08,0x99e8,0x6208,0x29c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x2104,0xbdd7,0xce38,0x0000,0x7249,0xa1e8,0x7a08,0x5a08,0xa1e8,0x4208,0xc9e8,0x5208,0x4a08,0xc9e8,0x91c7,0x62aa,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xbdd7,0xdefb,0x9492,0x4208,0x39e7,0x4208,0x4208,0x3208,0x6208,0x99e8,0x5a08,0xa1e8,0x3a08,0xb1e8,0x2208,0x4a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc638,0xbdd7,0x10a2,0x4a28,0x3208,0x6208,0x99e8,0x4a08,0xc9e8,0xb1e8,0xb9e8,0xb9e8,0x5208,0x5208,0xa9e8,0xb1c7,0xba8a,0x4b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef7d,0xa534,0xdefb,0xbdd7,0x1082,0x4a49,0x4208,0x3a08,0x7208,0xa1e8,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x0861,0xbdf7,0xbdf7,0x0020,0x4a49,0x4208,0x4a08,0xa1e8,0xa9e8,0x7a08,0x3208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0xe73c,0x8c71,0x10a2,0x4a49,0x4208,0x4208,0x3a08,0x7208,0xd9e8,0xb1e8,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5acb,0xef5d,0x5acb,0x39e7,0x4228,0x4208,0x4208,0x3a08,0x6a08,0x8a08,0x8208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x2124,0x2104,0x3186,0x3186,0x4208,0x3186,0x2945,0x18e3,0x3186,0x2124,0x2104,0x3186,0x2124,0x2124,0x4208,0x39c7,0x6bad,0x3505,0x04c2,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf79e,0xa534,0xdefb,0xb5d7,0x6062,0xa229,0xa9e8,0x3a08,0xa1e8,0x5a08,0x7a08,0xb1e8,0x9a08,0xa9e8,0x5208,0x19e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x1082,0x4a69,0xbdd7,0xce79,0x4228,0x4208,0x2208,0xa1e8,0x5208,0x99e8,0x9a08,0xa9e8,0xa9e8,0x3208,0xa1e8,0x6a08,0x29c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x2104,0xbdd7,0xc638,0x1800,0x9a29,0xa9e8,0x8208,0x5a08,0xa1e8,0x4a08,0xc1e8,0x99e8,0x9a08,0x9a08,0x01e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x10a2,0xbdf7,0xce59,0x528a,0x4a69,0x4208,0x4208,0x4208,0x3208,0x6a08,0xa1e8,0x3208,0xa9e8,0xb1e8,0x8208,0x3208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc638,0xb5b6,0x632c,0xf79e,0x4a8a,0x61c7,0x9a08,0x5a08,0x9a08,0x3a08,0xb1e8,0xb9e8,0xa1e8,0x9a08,0x9208,0x59e7,0xb28a,0x4b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef7d,0x632c,0xc638,0xbdf7,0x0841,0x4a49,0x4208,0x3208,0x6a08,0xa9e8,0x1a08,0x4a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x52aa,0x0000,0xbdf7,0xc618,0x0000,0x4a49,0x4208,0x4208,0x2a08,0x2208,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0xe73c,0x8c71,0x10a2,0x4a49,0x4208,0x4208,0x4208,0x2208,0x7208,0x4208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5acb,0xef5d,0x4a69,0x2965,0x4208,0x4208,0x4208,0x3208,0x7a08,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xa534,0xad55,0x8c71,0x7bef,0x4a49,0x8430,0xa514,0xb5b6,0x8430,0x9cf3,0xad75,0x8430,0xa514,0xa534,0x52aa,0x3186,0x6bad,0x3505,0x04c1,0x1500,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xffdf,0x632c,0xd679,0xc638,0x3000,0x7a49,0x4a08,0x3a28,0x5228,0x4a49,0x3a28,0x6a28,0x4a08,0x4228,0x4a08,0x41e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c51,0x94b2,0x5aeb,0xf7be,0x5acb,0x4208,0x4228,0x4a08,0x4a28,0x4a08,0x3a28,0x6a08,0x5228,0x3a48,0x5249,0x4a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf7be,0x7bcf,0xdedb,0x9492,0x2945,0x6a28,0x6a29,0x3228,0x4208,0x5249,0x4228,0x6228,0x7208,0x5a28,0x4a08,0x41e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xce59,0xc638,0x0000,0x4a49,0x4208,0x4208,0x4a49,0x4a49,0x4228,0x4a28,0x3a49,0x5208,0x6a29,0x3a49,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2945,0x9492,0xdedb,0x738e,0xffdf,0x5b0c,0x41e7,0x4a28,0x4a49,0x4a28,0x4a28,0x4a49,0x6228,0x7208,0x5a29,0x4a28,0x39e7,0x5aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffdf,0x2945,0xc618,0xce59,0x0000,0x4a49,0x4a49,0x4228,0x5a28,0x7a08,0x3a28,0x4a28,0x4a49,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xef5d,0x632c,0xce79,0xbdf7,0x0861,0x4a49,0x4208,0x4a49,0x4a28,0x4a08,0x4a28,0x4208,0x4228,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xf7be,0x528a,0xe71c,0x9cd3,0x2124,0x4a49,0x4a49,0x4208,0x4a49,0x3a28,0x4228,0x4a49,0x4228,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x5acb,0xf7be,0x7bcf,0x632c,0x4228,0x4228,0x4208,0x4208,0x3a49,0x2a49,0x2a28,0x4228,0x4a49,0x4228,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39c7,0x632c,0xce59,0x738e,0x73ae,0xd6ba,0x9cf3,0xa534,0x7bcf,0xbdf7,0x6b4d,0xce59,0x6b6d,0x7bcf,0xbdf7,0x8c71,0xad55,0x1062,0x73ae,0x3506,0x04c0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4a69,0xad55,0x2965,0x8c51,0x8c71,0x1944,0x19a6,0x3a08,0x3186,0x2124,0x2104,0x3166,0x21a6,0x3a08,0x3186,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x630c,0xb596,0xb596,0x8c51,0x2104,0x2124,0x39c7,0x39e7,0x2965,0x4208,0x31a6,0x3208,0x2986,0x2924,0x1904,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4a69,0xad75,0xb5b6,0x8c71,0x18e3,0x4249,0x3208,0x0103,0x3186,0x4228,0x18e3,0x3165,0x2986,0x29e7,0x2986,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x2124,0x2104,0x31a6,0x31a6,0x2104,0x39e7,0x0124,0x2924,0x39e7,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4a49,0x18e3,0x8c71,0xb5b6,0xad55,0x3186,0x2965,0x3a08,0x2104,0x31a6,0x31a6,0x10c3,0x1924,0x29e7,0x1104,0x3186,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xa514,0x2945,0x8c51,0x7bef,0x10a2,0x4208,0x2124,0x2945,0x2986,0x3208,0x39a7,0x2965,0x2104,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c71,0xb596,0xad55,0x4a49,0x39c7,0x4228,0x39e7,0x2104,0x3186,0x4228,0x2965,0x39e7,0x31a6,0x18e3,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x39c7,0x7bef,0x94b2,0x2965,0x39c7,0x2104,0x39e7,0x2124,0x2945,0x31a6,0x18e3,0x2124,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a69,0xad75,0xad75,0xa534,0x4228,0x3186,0x4228,0x3a08,0x2924,0x2904,0x3986,0x2945,0x18c3,0x31a6,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39c7,0x630c,0xce79,0x528a,0x52aa,0xad55,0xb5b6,0xad55,0x528a,0xa534,0x4228,0xce79,0x528a,0x4228,0xd6ba,0xc638,0x4a49,0x39a7,0x6bad,0x3506,0x04e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x18e3,0x4228,0x3186,0x2124,0x5acb,0x8430,0x4228,0x8c51,0x9cf3,0xad75,0x8c71,0x738e,0x528a,0x8410,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39c7,0x18c3,0x2124,0x2104,0x8410,0xb596,0x73ae,0x528a,0x8c51,0x4a28,0x7bef,0x4a69,0x8430,0x9cf3,0xad75,0x8410,0x2945,0x738e,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x18e3,0x18e3,0x2965,0x4a49,0x39e7,0x4a49,0xb575,0x8c51,0x3186,0xad75,0x9492,0x7bcf,0x5acb,0x8430,0x3186,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x2965,0x4228,0x4208,0x39e7,0x4a69,0xa534,0xad75,0x7bcf,0x7bef,0xad75,0x5acb,0xa534,0xa534,0x52aa,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x2965,0x1082,0x31a6,0xad55,0x8430,0x4a49,0xad75,0x7bef,0x73ae,0xb5b6,0xa534,0x5aaa,0xad75,0x8430,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0x9cf3,0x8430,0x39c7,0xa534,0x8430,0x4a49,0xa534,0x9cf3,0x8430,0x5269,0x738e,0x9492,0xad75,0x8410,0x39e7,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2124,0x0000,0x7bef,0x5acb,0x31a6,0x528a,0xad75,0x8430,0x18c3,0x9492,0x528a,0x7bef,0xb596,0x528a,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2104,0x39c7,0x73ae,0x4a49,0x2965,0x8410,0xad75,0x5acb,0xa514,0x9cf3,0x8430,0xb5b6,0xa534,0x4a49,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x18e3,0x2104,0x18e3,0x52aa,0x8410,0x3186,0x528a,0xa534,0xad75,0x8430,0x9cf3,0xb5b6,0x7bef,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x630c,0xc638,0xa514,0x9cf3,0x94b2,0x630c,0xa534,0x5acb,0xa534,0x4a69,0xc638,0xa514,0x9cf3,0x94b2,0x7bcf,0x8430,0x2104,0x73ad,0x34e7,0x0500,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x419e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x4208,0x4228,0x39e7,0x630c,0xd6ba,0x94b2,0xbdf7,0xc618,0x738e,0x8410,0xa534,0x528a,0xb596,0x2104,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x39e7,0x632c,0xbdf7,0x8410,0x5aeb,0x9cd3,0x8430,0xa534,0xa514,0x4228,0xce59,0xbdf7,0x7bcf,0x5aeb,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x31a6,0x6b6d,0xb5b6,0x8c51,0x8410,0xb596,0x9492,0xce59,0xc618,0xb5b6,0x18e3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x4228,0x4208,0x4228,0x31a6,0x632c,0xce59,0x6b4d,0x73ae,0xad75,0x7bcf,0xbdf7,0xb5b6,0x8c71,0xa534,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x3186,0xa534,0x9cd3,0x8c71,0xad75,0x7bef,0xad75,0x632c,0xbdf7,0x7bcf,0xa514,0x7bef,0xad75,0x630c,0x4a69,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x2945,0xa534,0x9cd3,0x8c71,0xb596,0x8410,0xa514,0xbdd7,0xa514,0x5acb,0xad75,0x632c,0x9cf3,0xce59,0x9cd3,0xad75,0x5aeb,0x3186,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x2945,0xb596,0x73ae,0x10a2,0xad55,0x8410,0xa534,0x9cf3,0x8c51,0x8c71,0xbdd7,0x8c71,0xa514,0x4a69,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a69,0x2104,0xb596,0x73ae,0x2104,0x7bef,0xb5b6,0x9cd3,0xa534,0x6b4d,0x39e7,0xbdf7,0x8430,0x39c7,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x39c7,0x6b6d,0xb596,0x10a2,0x6b6d,0xce59,0x73ae,0x528a,0x8430,0xbdf7,0x4228,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x630c,0x738e,0x5acb,0x4a49,0x4208,0x4a49,0x4228,0x4a49,0x39e7,0x630c,0x738e,0x5acb,0x4a49,0x39e7,0x52aa,0x31a6,0x6bad,0x3505,0x04c0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4228,0x31a6,0x6b4d,0xad55,0xb596,0xc618,0xc618,0x52aa,0x52aa,0xb5b6,0x8c71,0xad55,0x2945,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4228,0x39c7,0x738e,0xa514,0x9cf3,0xc638,0xb596,0xbdf7,0x94b2,0x94b2,0x9cf3,0xc638,0x5aeb,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x31a6,0x6b6d,0x9cd3,0x5acb,0xa534,0x8c51,0x8410,0xad55,0x8c71,0xa534,0x2945,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4228,0x39c7,0x630c,0xd69a,0x632c,0x632c,0xa534,0x2965,0xc618,0xce59,0xce59,0x4a49,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2124,0xad75,0x8c51,0xb596,0xc618,0x2965,0xa534,0x5acb,0xa514,0x528a,0xad75,0x39c7,0xa514,0x6b6d,0x4a49,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x2945,0xad55,0x8c51,0xb596,0xc618,0x2965,0xa514,0x73ae,0x8c71,0x9cd3,0xbdd7,0x4228,0x94b2,0xc638,0xa534,0xad55,0x5acb,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2124,0xad55,0x5aeb,0x0000,0xb5b6,0x4208,0x9492,0xce79,0xad75,0xc618,0xbdf7,0x3186,0xad75,0x6b4d,0x4a49,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x2124,0xad55,0x5acb,0x0000,0x630c,0x9cf3,0x2945,0x94b2,0xad55,0x3186,0xa534,0x632c,0x31a6,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4228,0x31a6,0x6b6d,0xa534,0x0000,0x5aeb,0xce79,0x5aeb,0x0000,0x6b4d,0xa534,0x18c3,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x31a6,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39c7,0x31a6,0x39e7,0x4208,0x4228,0x4208,0x39c7,0x6b8d,0x3505,0x04c3,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x3136,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x2965,0x6b4d,0x9cd3,0x528a,0xbdd7,0xb5b6,0xa534,0x8430,0xa514,0xbdd7,0x7bef,0x2965,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39c7,0x4228,0x9cd3,0xa514,0x9cf3,0xa514,0x8410,0x9cd3,0x73ae,0xb5b6,0x5acb,0xc618,0xa514,0x8410,0x2104,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3186,0x5acb,0xce59,0xa514,0x4a49,0xce59,0xa534,0x9492,0x4a69,0xa534,0x18e3,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x528a,0xa534,0xad55,0x9cf3,0x9492,0x73ae,0x8410,0x2965,0x39c7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x4208,0x2945,0x8430,0xa534,0xbdf7,0x94b2,0xad75,0xad55,0x3186,0xa534,0x5aeb,0x7bcf,0xb596,0xa534,0x4228,0x4a69,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x2965,0x8410,0xa534,0xbdf7,0x94b2,0xad75,0xa514,0x8410,0xa514,0xa514,0x8c51,0xb596,0x9cd3,0xad75,0xad75,0xa514,0x528a,0x2965,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x4208,0x18c3,0xa534,0xbdf7,0x94b2,0x8430,0xb596,0x9cd3,0xad55,0x7bef,0x9cf3,0xbdd7,0xbdd7,0x7bef,0x2945,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x4208,0x18c3,0xa534,0xbdf7,0x94b2,0x9492,0xce59,0x73ae,0xa514,0xad55,0x39c7,0xa514,0x632c,0x3186,0x4208,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3186,0x5aeb,0xc638,0xa534,0x9492,0xbdd7,0xa534,0x7bcf,0x5aeb,0xa534,0x18e3,0x4208,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x41e7,0x41e7,0x41e7,0x41e7,0x41e7,0x4207,0x4227,0x4227,0x4227,0x4227,0x4228,0x4227,0x3a07,0x3a07,0x4228,0x31a6,0x6b8d,0x3520,0x1c2e,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aeb,0x52aa,0x5acb,0x6b6d,0x7bef,0x630c,0x528a,0x5aeb,0x4a69,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x7bcf,0x73ae,0x4a69,0x52aa,0x4a49,0x5aeb,0x528a,0x52aa,0x528a,0x738e,0x7bef,0x6b4d,0x4a49,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x738e,0x630c,0x4a69,0x738e,0x632c,0x5acb,0x5acb,0x5aeb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aeb,0x5acb,0x4a69,0x5aeb,0x73ae,0x4a69,0x5aeb,0x528a,0x632c,0x528a,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x4a49,0x73ae,0x738e,0x4a49,0x7bcf,0x5aeb,0x4a69,0x5aeb,0x5acb,0x4a49,0x7bcf,0x5aeb,0x4a49,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x4a49,0x7bae,0x738e,0x4a49,0x7bcf,0x5aeb,0x630c,0x8410,0x62eb,0x4208,0x7bcf,0x5aeb,0x5aaa,0x8410,0x62eb,0x4a69,0x528a,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x52aa,0x528a,0x5aeb,0x7bcf,0x73ae,0x4a69,0x73ae,0x5aeb,0x52aa,0x5269,0x52aa,0x630c,0x73ae,0x4a69,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x5aaa,0x52aa,0x5a8a,0x62eb,0x7bcf,0x7bae,0x6b4d,0x6b6d,0x6b4d,0x8410,0x62eb,0x5269,0x62eb,0x5aaa,0x52aa,0x5aaa,0x4a69,0x7bcf,0x2965,0x0000,0x1041,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x5aaa,0x736d,0x7bef,0x6b2c,0x736d,0x7bef,0x632c,0x528a,0x5aeb,0x528a,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x328a,0x328a,0x328a,0x328a,0x32aa,0x322a,0x316a,0x31aa,0x318a,0x318a,0x318a,0x41ea,0x524a,0x524a,0x524a,0x49e9,0x7baf,0x3520,0x2b56,0x411f,0x41df,0x41bf,0x41bf,0x41be,0x0824,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4208,0x6b2c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x52aa,0x5aeb,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x5acb,0x5acb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5acb,0x52aa,0x5aeb,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5acb,0x5aeb,0x630c,0x5acb,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a2,0x5aeb,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x5acb,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x630c,0x630c,0x630c,0x632c,0x5acb,0x5acb,0x632c,0x5acb,0x5aeb,0x632c,0x630c,0x630c,0x632c,0x5acb,0x5aeb,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a2,0x4aeb,0x5b2c,0x4acb,0x42cb,0x5b0c,0x3aaa,0x52eb,0x5aeb,0x3aaa,0x52eb,0x5b2c,0x52cb,0x630c,0x530c,0x3aaa,0x4aeb,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x5b0c,0x5b0c,0x530c,0x5b0c,0x4aca,0x5acb,0x632c,0x5acb,0x630c,0x5b0c,0x530c,0x5b0c,0x5aeb,0x5acb,0x632c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a2,0x4aeb,0x530c,0x5b0c,0x4b0c,0x52eb,0x4aaa,0x3acb,0x52eb,0x52cb,0x42cb,0x42aa,0x52eb,0x4b0c,0x4aeb,0x530c,0x5b0c,0x5b0c,0x5b0c,0x630c,0x18a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3a08,0x5b2c,0x630c,0x4b0c,0x4b0c,0x530c,0x530c,0x42cb,0x4aaa,0x4aeb,0x42cb,0x52aa,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0x6b0c,0xc36d,0xcb6d,0xcb6d,0xcb8d,0xcaed,0xcced,0xcead,0xce6d,0xce6d,0xce6d,0xd68e,0xa5ad,0x548c,0x64ac,0x64ac,0x64ac,0x64cb,0x24c6,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0020,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68a3,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3062,0x6821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3062,0x6842,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2820,0x9883,0x6800,0x6000,0x9883,0x6800,0xa0a3,0x6000,0x0000,0x9883,0x6800,0x5800,0x3000,0x0000,0x6800,0x9883,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3882,0x6001,0x1800,0x5800,0x2000,0x7000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x2800,0x7800,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2821,0x9042,0x9022,0x2800,0x9862,0x6800,0x6000,0xa0a3,0x5800,0x6000,0xa083,0x8842,0x7000,0x9863,0x8802,0x7000,0x1800,0x5800,0x2800,0x0000,0x0000,0x70e4,0x58a3,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0x7000,0x0000,0x9042,0xa083,0x6800,0x8802,0xa0a3,0x6800,0x8842,0x9062,0x2000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3000,0xf967,0xf987,0xf987,0xf987,0xf947,0xfec7,0xffe7,0xffe7,0xffe7,0xffe7,0xffe7,0xaea3,0x0480,0x0ce0,0x04e0,0x04e0,0x04e0,0x1ca8,0x41fe,0x419f,0x41bf,0x41bf,0x41bf,0x2913,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x9925,0x8925,0x60e3,0x0061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x50c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0xa145,0x50c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x9945,0x58c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x9925,0x58c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x7104,0x60e3,0x7904,0xa146,0xa145,0x8925,0x9945,0xb166,0x7104,0x58c3,0xa966,0x58c3,0x0000,0xa966,0x9945,0x48c3,0x1882,0x0861,0x1061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9925,0x2082,0xb166,0x7904,0x7904,0x9945,0x9945,0x0041,0x2082,0x0861,0x0061,0xa966,0xd9c7,0x58c3,0x0061,0x1082,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x9945,0x38a2,0x9945,0x7904,0x58c3,0xb166,0x8925,0x9945,0xb986,0x9145,0x3082,0xa966,0x9945,0x2882,0xa966,0xa966,0xa145,0x58c3,0x0040,0x58a3,0xd9a7,0xa945,0x0000,0x0000,0x0800,0x0000,0x2841,0x8905,0x7904,0x70e4,0x68e4,0xb966,0x0061,0x7104,0xb166,0x50c3,0xb966,0x7904,0x9945,0x0020,0x1882,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa145,0xf9e8,0xf1e8,0xf1e8,0xf1c8,0xf248,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x4522,0x04c1,0x1ce2,0x1ce2,0x1cc4,0x1500,0x2bd3,0x413f,0x41df,0x41bf,0x41bf,0x419e,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x1820,0x70e4,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xa125,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0xa125,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x80e4,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x2841,0x0000,0x5082,0x80e4,0x8904,0xd9a7,0x68c3,0x9925,0x3061,0x0000,0xa125,0x3862,0x0000,0xa125,0x9925,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x9925,0x80e4,0x9105,0xb966,0xa125,0xc166,0x8104,0x0000,0x0000,0x1000,0x0000,0x9925,0xd187,0x58a3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x8104,0x8904,0xa945,0x2841,0x0000,0x9925,0xd987,0x68c3,0x9925,0xa125,0x0000,0xa125,0xa125,0x0000,0x9104,0x8904,0xc986,0x4082,0x0000,0x4882,0xd187,0xa125,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0xa125,0xa125,0x2041,0x9925,0x0000,0x5082,0x9105,0x0800,0xc987,0xb966,0x1820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x14e0,0x3ada,0x415f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x9925,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x78e4,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x78e4,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x9925,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa945,0x8904,0x8904,0xb966,0x9104,0x58a3,0x80e4,0x78e4,0xa945,0x8904,0xa125,0xb146,0x8104,0xa125,0xa145,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x70c3,0xa945,0x4882,0xa125,0x60a3,0xa945,0xb146,0xa125,0x68c3,0x0000,0x1020,0xa125,0xc166,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0x9925,0x9105,0x78e4,0xa945,0x8904,0x9925,0x58a3,0x78e4,0xa125,0xa945,0x8104,0xa125,0xa945,0x8104,0xa125,0x2841,0x9925,0x5082,0x0000,0x58a3,0xc986,0x8104,0x0000,0x0800,0x0800,0x0000,0x4882,0xa125,0x68c3,0x9105,0x3061,0x9925,0x0000,0x50a2,0x9105,0x3862,0x9104,0x60a3,0x70c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x1820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x2041,0x2841,0x4082,0x2841,0x0000,0x2841,0x0000,0x5082,0x2841,0x1000,0x50a2,0x4882,0x2841,0x50a2,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x1000,0x0000,0x1820,0x4062,0x58a3,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3061,0x60a3,0x2041,0x0000,0x50a2,0x2841,0x1000,0x0000,0x2041,0x3061,0x50a2,0x4882,0x2841,0x50a2,0x4882,0x2041,0x0800,0x1000,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x1821,0x0800,0x2021,0x0000,0x1000,0x1821,0x0800,0x2041,0x0000,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x1020,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x41bf,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x14c0,0x14e0,0x14e0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41be,0x41bf,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0020,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0040,0x0000,0x0080,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0140,0x01c0,0x0120,0x0040,0x0000,0x0080,0x0160,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0040,0x0000,0x00a0,0x01c0,0x00a0,0x0000,0x09e0,0x0080,0x00a0,0x0160,0x00a0,0x0000,0x0060,0x0120,0x0160,0x0160,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x00a0,0x0000,0x0040,0x00a0,0x0000,0x0060,0x0160,0x00a0,0x0080,0x09e0,0x0120,0x0160,0x0160,0x0120,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x01c0,0x00a0,0x00c0,0x0160,0x00a0,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0160,0x0120,0x0000,0x0000,0x00c0,0x0080,0x0000,0x00e0,0x0140,0x01c0,0x0100,0x0060,0x0080,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x01c0,0x0080,0x00a0,0x0160,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x01a0,0x0000,0x0b40,0x0a60,0x0aa0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ae0,0x0ac0,0x0ac0,0x0120,0x0b60,0x0b60,0x0b00,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x01a0,0x0000,0x0b20,0x0b40,0x0aa0,0x0b40,0x0b20,0x0ac0,0x0ac0,0x0ba0,0x0b20,0x0a80,0x0aa0,0x0aa0,0x13e0,0x0b40,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b00,0x0000,0x01a0,0x0b00,0x0000,0x0000,0x13e0,0x0aa0,0x0ae0,0x0b00,0x0a00,0x0b20,0x1400,0x09e0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0b40,0x0ac0,0x0ac0,0x0ba0,0x0b20,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x13c0,0x0ae0,0x0b80,0x0180,0x0b80,0x0a80,0x0a20,0x0ac0,0x0b80,0x0ae0,0x0ae0,0x0aa0,0x0040,0x0b20,0x0000,0x0000,0x0aa0,0x1400,0x01c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0b40,0x0ac0,0x0aa0,0x13e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2935,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0180,0x0000,0x0b00,0x0b60,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0140,0x0000,0x0a60,0x0b40,0x0180,0x13a0,0x0ae0,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0180,0x0000,0x0b20,0x0b40,0x0aa0,0x0b40,0x0b60,0x0ac0,0x01c0,0x0a80,0x0aa0,0x0b80,0x0ba0,0x0000,0x0ac0,0x0140,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0b00,0x0000,0x01a0,0x0b00,0x0000,0x0000,0x0ac0,0x01a0,0x0ae0,0x0a80,0x0000,0x0120,0x0ae0,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0b20,0x0ae0,0x09c0,0x0a80,0x0aa0,0x0b80,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0ac0,0x0a00,0x0b80,0x0b60,0x0b40,0x13e0,0x0a40,0x00a0,0x13e0,0x0100,0x0000,0x0b20,0x0b40,0x0a40,0x0000,0x0000,0x0b40,0x1420,0x0160,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0b40,0x0ae0,0x01a0,0x0ac0,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a60,0x00a0,0x0b40,0x09a0,0x13c0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x13c0,0x09c0,0x0180,0x0ae0,0x0a60,0x0b00,0x0b60,0x0120,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a60,0x0080,0x0b40,0x0a80,0x0000,0x0b00,0x0b80,0x0a60,0x09c0,0x0b40,0x0b00,0x09c0,0x13e0,0x00e0,0x0b20,0x09c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b80,0x00e0,0x0a00,0x0b60,0x0160,0x00a0,0x0b80,0x09e0,0x0140,0x0b00,0x0ac0,0x0140,0x0b40,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0ae0,0x0b00,0x0a80,0x0b40,0x0b00,0x09c0,0x13c0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b60,0x0ac0,0x0ac0,0x0a60,0x13e0,0x0b20,0x0a80,0x0a20,0x13a0,0x09e0,0x0080,0x09c0,0x13a0,0x0000,0x0080,0x0000,0x0b40,0x1460,0x09c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a80,0x0000,0x09e0,0x0b80,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf1e8,0xf188,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0240,0x0040,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0b00,0x0b00,0x0a80,0x01e0,0x0000,0x0aa0,0x01c0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0220,0x00a0,0x0000,0x0220,0x0000,0x01e0,0x0a80,0x0b00,0x0220,0x0060,0x01e0,0x00c0,0x0200,0x0100,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b00,0x0b20,0x0240,0x0ae0,0x0b40,0x0220,0x0b00,0x0240,0x0ac0,0x0ae0,0x00a0,0x00e0,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x01e0,0x0200,0x0b20,0x0220,0x0060,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0b20,0x0a80,0x01c0,0x0000,0x0a60,0x01a0,0x0100,0x0240,0x0ac0,0x0b20,0x0200,0x0080,0x0200,0x0000,0x0020,0x0000,0x01c0,0x0240,0x0000,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x00c0,0x0000,0x0220,0x0b20,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0xd187,0xf9e8,0xf9c8,0xfa08,0xf808,0xfd88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x04c0,0x14e0,0x14e0,0x14e0,0x14e0,0x14e0,0x3afa,0x415f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x18c3,0x0841,0x18c3,0x18e3,0x1082,0x0861,0x18e3,0x18e3,0x18e3,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x1002,0x1082,0x1002,0x0821,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x1002,0x0801,0x1082,0x0802,0x0801,0x0881,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x0801,0x1062,0x10a2,0x0801,0x0861,0x0801,0x0801,0x0801,0x0801,0x1861,0x1001,0x0841,0x0801,0x0801,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x1002,0x0801,0x0802,0x0802,0x0801,0x0801,0x0801,0x0801,0x0821,0x0821,0x1001,0x0881,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x1002,0x1002,0x0801,0x0861,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x0801,0x1082,0x0801,0x0802,0x1042,0x0801,0x0801,0x0801,0x0801,0x0841,0x0801,0x0881,0x0861,0x0861,0x0801,0x0801,0x0040,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0821,0x0881,0x1002,0x0801,0x1062,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x38c3,0xe967,0xe966,0xf1e8,0xe9c7,0xe806,0xf567,0xf7e8,0xf7a8,0xf7c8,0xf7a8,0xffe9,0x9e24,0x0460,0x24c2,0x1cc1,0x1cc2,0x14c0,0x1c87,0x41de,0x41be,0x397f,0x399f,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x4208,0x39c7,0x18e3,0x18e3,0x2104,0x4228,0x2945,0x0841,0x39e7,0x4208,0x18c3,0x2104,0x18e3,0x39e7,0x2965,0x2104,0x18c3,0x31a6,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x3a07,0x31a6,0x3186,0x39c7,0x39c7,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x39e7,0x4208,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x3208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x3a07,0x4228,0x31a6,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x1a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x39e7,0x4208,0x3a07,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x3208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x31c6,0x31a6,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a07,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x630c,0x6b4d,0x2965,0x6b2c,0x7b6d,0x4186,0x730c,0x7b8e,0x62ea,0x4a87,0x5ae9,0x5287,0x5ae9,0x4a67,0x5b0a,0x3a27,0x4248,0x4248,0x4248,0x4248,0x4248,0x422a,0x39e8,0x5ad3,0x49ff,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x9cd3,0x0000,0x9492,0xbdf7,0x4228,0x4228,0xad75,0xa534,0xad55,0x4a69,0x8430,0xad55,0xad75,0x632c,0x39c7,0x4228,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x6b4d,0x6b6d,0x5acb,0x52aa,0x4208,0x4228,0x4208,0x4208,0x5a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x52aa,0x39e7,0x4a69,0x528a,0x4208,0x4208,0x4208,0x3a08,0x6a08,0x5208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x630c,0x630c,0x31a6,0x4228,0x4208,0x4208,0x3a08,0x5a08,0xa9e8,0x8208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x528a,0x4208,0x4a69,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x7a08,0x5208,0x3a08,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x630c,0x6b6d,0x4208,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x3208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x31a6,0x528a,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x528a,0x4208,0x4a69,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x3228,0x2208,0x3208,0x3a08,0x4208,0x2a08,0x3208,0x3a08,0x2a08,0x2a08,0x2208,0x4208,0x3208,0x2208,0x3a08,0x3228,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x630c,0xc638,0x9cf3,0x9cf3,0xbdf7,0x9cf3,0x9d14,0xbdf7,0xa555,0x7bcf,0x73af,0xa514,0x738e,0x94b3,0x8410,0x8c31,0x3166,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c5,0x738e,0x525f,0x397e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0841,0xbdd7,0xce79,0x632c,0xa514,0x94b2,0xce79,0x9cd3,0xd69a,0x52aa,0xffdf,0x8430,0xdedb,0xbdf7,0xe71c,0x9cd3,0xad55,0x7bef,0x3186,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xa534,0xad55,0xf79e,0x8c51,0x2965,0x4228,0x3a08,0x5208,0xd9e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xe73c,0x4208,0xbdd7,0xbdd7,0x1082,0x4a49,0x3208,0x7a08,0xa9e8,0xa1e8,0x4a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x94b2,0xce59,0xce59,0x8c71,0x2965,0x4228,0x4208,0x3208,0x7a08,0x6a08,0xb1e8,0x6208,0x3a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef5d,0x3186,0xbdd7,0xbdf7,0x0841,0x4a49,0x4208,0x4208,0x3208,0x6a08,0xa9e8,0x2a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18e3,0xb5b6,0xdedb,0xa534,0xd69a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x9208,0xb1e8,0x6208,0x3a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xf79e,0x738e,0xb596,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x2208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0x4208,0xbdd7,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x4208,0x2a08,0x2a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1061,0x3208,0x7a08,0xa9e8,0x8a08,0x7208,0x4208,0x8a08,0x7a08,0x5a08,0x8a08,0x99e8,0xa1e8,0x4a08,0x8208,0xa9e8,0x6208,0x7a08,0x31e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x31a6,0x632c,0xc638,0x9cd3,0xa534,0xc618,0xa534,0x9cd3,0xc638,0x52aa,0x5269,0xb5b6,0x8410,0xbdd7,0xce79,0x8c71,0x2103,0x4248,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c6,0x6b6f,0x523f,0x397d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xce59,0xbdd7,0x0000,0x2104,0xc638,0xdefb,0x9cd3,0xf7be,0x6b6d,0xef7d,0xad75,0xa534,0x528a,0x9cd3,0x9cd3,0xc638,0x9492,0x2945,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x0000,0x8410,0xdefb,0x2965,0x4228,0x4208,0x4208,0x4208,0x6208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x18e3,0xbdf7,0xce59,0xdefb,0x632c,0x39c7,0x4a28,0x2a08,0x9208,0xc1e8,0x3208,0x4a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xf79e,0x5acb,0x39e7,0x5aeb,0x39e7,0x4208,0x4208,0x4208,0x2208,0x7208,0x8208,0x3208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xef7d,0x4228,0xc618,0xbdf7,0x0841,0x4a49,0x4208,0x3a08,0x4a08,0xa9e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x1082,0xc618,0xc638,0x528a,0xef7d,0x52aa,0x39e7,0x4228,0x4208,0x3a08,0x4a08,0xb9e8,0xd9e8,0x8208,0x3208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xffff,0xce59,0xbdd7,0xc618,0x0000,0x4a49,0x4208,0x4208,0xa1e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xffff,0xbdf7,0xf7be,0xbdd7,0x10a2,0x4a49,0x4208,0x4208,0x2a08,0x9208,0x9208,0x2a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0061,0x5a08,0xb9e8,0x7a08,0x7208,0xa9e8,0x6a08,0xc1e8,0xc1e8,0xb9e8,0xc1e8,0xb1e8,0x9208,0xb1e8,0xa1e8,0x7a08,0xb9e8,0xa208,0x29e7,0x5aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39e7,0x6b6d,0xc638,0x9492,0xb5b6,0xbdf7,0xb596,0x73ae,0xce59,0x73ae,0x7bcf,0xce79,0xb5b6,0xce79,0xb596,0x9cd3,0x6b4d,0x4208,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c6,0x6b6e,0x525f,0x28f6,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0x94b2,0xd6ba,0xb596,0xbdf7,0xbdd7,0xc638,0x6b6d,0xef5d,0x6b6d,0xe73c,0x4a49,0x2104,0x4208,0xc618,0xa514,0xd6ba,0xa514,0x2945,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0xe71c,0x94b2,0x2124,0x4228,0x4208,0x3a08,0x5208,0xd9e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x5acb,0xffff,0xbdd7,0x10a2,0x4a49,0x4208,0x2208,0x9a08,0xb1e8,0x5a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xef5d,0x5acb,0x39c7,0x31a6,0x4228,0x4208,0x4208,0x4208,0x3208,0x8208,0x5208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x10a2,0xc618,0xc638,0xdefb,0x632c,0x39c7,0x4228,0x4208,0x2a08,0x8a08,0x8a08,0x2208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xbdd7,0xe71c,0xb596,0xd69a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x5a08,0x7208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5aeb,0xe73c,0xb5b6,0xf79e,0xb5b6,0x10a2,0x4a49,0x3a08,0x5208,0xb1e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x52aa,0xf79e,0xf79e,0xffff,0xb596,0x18c3,0x4a49,0x4208,0x4208,0x2a08,0x9208,0x9208,0x2a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1061,0x3208,0x7208,0xa1e8,0x7a08,0x8a08,0xc9e8,0x6208,0xa9e8,0x8208,0xb1e8,0xb9e8,0x9a08,0xa9e8,0x9a08,0x2a08,0xc1e8,0x9208,0x01e7,0x4aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x0841,0x18e3,0xa514,0x9cd3,0x528a,0x52aa,0x31a6,0x8c71,0x9cd3,0x9cd3,0x9492,0x6b6d,0x10a2,0x7bcf,0x630c,0x4a69,0x6b4d,0x0000,0x10a2,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c6,0x6b6f,0x525f,0x106f,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x0000,0x4228,0x6b4d,0x2104,0x4a49,0x39c7,0x10a2,0x39e7,0x18e3,0x39e7,0x31a6,0x2945,0x18e3,0x3186,0x6b4d,0x4228,0x0000,0x39c7,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x18e3,0x94b2,0xd6ba,0x0000,0x39e7,0x4a49,0x4208,0x4228,0x4a49,0x5a08,0x4a49,0x4228,0x4228,0x4228,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x18c3,0xbdf7,0xce59,0xdefb,0x632c,0x39c7,0x4a28,0x3a49,0x8a29,0xaa08,0xa208,0x4a28,0x4208,0x4a49,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xf79e,0x5acb,0x4208,0x630c,0x39e7,0x4228,0x4a49,0x4228,0x4228,0x5208,0x4a28,0x4228,0x4a49,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0861,0xbdd7,0xd69a,0xdefb,0x5acb,0x39e7,0x4228,0x4a49,0x4228,0x5228,0x3a08,0x4208,0x4228,0x4a49,0x4228,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xc638,0xb5b6,0x0000,0xffdf,0x630c,0x39e7,0x4a49,0x4228,0x4a49,0x4228,0x3a08,0x3a49,0x4249,0x4228,0x4249,0x4a49,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5acb,0xef7d,0x632c,0xffff,0xbdb6,0x18e3,0x4a69,0x4249,0x4a28,0x4228,0x3a08,0x4228,0x4228,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xef5d,0xb5b6,0xdedb,0xbdf7,0x10a2,0x4a49,0x4228,0x4208,0x4a28,0x2a28,0x3249,0x4a28,0x4228,0x4a49,0x4a49,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0061,0x4a08,0x9a08,0xa9e8,0x8208,0x5a08,0x9a08,0x5208,0xa1e8,0x4a08,0xb9e8,0xb9e8,0xa1e8,0x9208,0xa1e8,0xb1e8,0x9208,0xc1e8,0xa9c7,0x8a8a,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0xb5b6,0xce59,0x73ae,0x6b6d,0xbdf7,0xc618,0x8c51,0x0000,0x73ae,0xad75,0x2965,0x1082,0x8c51,0xc638,0x7bef,0x7bcf,0xbdf7,0xc638,0xbdd7,0x4a69,0x39e7,0x4208,0x4208,0x4228,0x39c6,0x6b6f,0x523e,0x0004,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x8c51,0xad55,0xad55,0x632c,0xa534,0x2965,0x8430,0x94b2,0x9cd3,0xb5b6,0x9cf3,0x8c51,0xb596,0xa534,0x9cf3,0x7bcf,0xb575,0xb5b6,0x7bef,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0xdedb,0xd69a,0xa534,0x7bcf,0x0000,0x4208,0x3186,0x2104,0x31e7,0x2124,0x2945,0x39c7,0x31a6,0x4208,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xe71c,0x2104,0xb5b6,0xb596,0x10a2,0x4228,0x2924,0x0104,0x11c7,0x21e7,0x2965,0x4228,0x2104,0x2124,0x39e7,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x94b2,0xce59,0xc618,0x7bef,0x2124,0x31a6,0x2104,0x39c7,0x3186,0x3a08,0x3186,0x2945,0x18c3,0x31a6,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xf7be,0xb596,0x2104,0x4a49,0x3186,0x2104,0x39a6,0x29a6,0x4228,0x4208,0x3186,0x2104,0x31a6,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x0000,0xad55,0xdedb,0xad55,0xc638,0x39c7,0x2124,0x2945,0x39e7,0x2104,0x3186,0x4208,0x2904,0x2104,0x3186,0x2124,0x2945,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xef5d,0x3186,0xb596,0xbdf7,0x0000,0x3186,0x2104,0x2965,0x31a6,0x4208,0x2965,0x2945,0x18c3,0x31a6,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xdefb,0x632c,0xbdf7,0xbdd7,0x0000,0x4228,0x31a6,0x41e7,0x31a6,0x39c7,0x2924,0x2945,0x3186,0x2104,0x2945,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x6a08,0x6208,0x0208,0x3208,0x3a08,0x4208,0x4208,0x3208,0x2a08,0x5208,0x5a08,0x0208,0x4208,0x5208,0x0208,0x5a08,0x69e7,0x62aa,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4a49,0x1082,0xbdd7,0xe73c,0xbdd7,0xe71c,0xce59,0xef7d,0xbdf7,0xf7be,0x4228,0xd6ba,0xffff,0x8410,0x7bef,0xffdf,0xd69a,0xdefb,0xce59,0xef5d,0xa534,0xbdf7,0x4a69,0x39e7,0x4208,0x4208,0x4228,0x39c5,0x7370,0x4a1a,0x0000,0x0020,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xf79e,0x9cd3,0xad55,0x8c71,0xf7be,0x632c,0xd69a,0xc638,0x630c,0xffff,0x630c,0xc618,0xdefb,0x73ae,0x738e,0x39e7,0xd69a,0xd69a,0x39c7,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x5acb,0x630c,0x6b4d,0x9492,0xad75,0x528a,0x8410,0xad75,0x5acb,0xa534,0x9cf3,0x6b4d,0x73ae,0x4228,0x8410,0x2945,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x9492,0xad55,0x73ae,0x8430,0x2965,0x528a,0xa534,0xb575,0x7bcf,0x528a,0x8c71,0x39c7,0xad55,0xa514,0x52aa,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x5acb,0x9cd3,0xad55,0x52aa,0x8410,0xad55,0x630c,0x8410,0x4228,0x8430,0x9cf3,0xb5b6,0x7bef,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x52aa,0x4a49,0x4208,0x31a6,0x8430,0xad75,0x6b6d,0x7bef,0x39c7,0x39e7,0x8410,0xb596,0x7bef,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x39e7,0xad55,0xa534,0x6b4d,0xa514,0xad55,0x52aa,0xa534,0xa514,0x5acb,0xad75,0x8c51,0x39c7,0xa534,0xad75,0x8430,0xa514,0xa534,0x4a69,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x52aa,0x8c51,0x528a,0x8c51,0x9cf3,0xad55,0x9492,0x73ae,0x4208,0x8c71,0x9cf3,0xb5b6,0x7bef,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x8c71,0xad55,0x8430,0x3186,0x8c71,0x52aa,0x7bcf,0x528a,0x7bcf,0x632c,0xa514,0x9cf3,0x8c51,0xad75,0xa534,0x4228,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x3208,0x4a08,0xa1e8,0x99e8,0x8208,0x4208,0x6a08,0x9208,0xa1e8,0x8208,0xa1e8,0x99e8,0x8208,0xa9e8,0xa1e8,0x4208,0x29e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4a49,0x0861,0xbdd7,0xef7d,0x738e,0x1082,0xc618,0xbdd7,0x2945,0xef7d,0xad55,0xc638,0x73ae,0xce79,0xc618,0xc638,0x0000,0x39e7,0xbdd7,0xe71c,0xa514,0x2965,0x39e7,0x4228,0x4208,0x4208,0x4228,0x39c5,0x7391,0x39d3,0x0000,0x0843,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x9cf3,0x9cd3,0xc618,0x9cf3,0xef5d,0xad55,0xe71c,0xb5b6,0x0000,0xf79e,0x0000,0xb5b6,0xe71c,0x9492,0x4a49,0x0000,0xbdf7,0xbdf7,0x0000,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39e7,0x2965,0x5acb,0xad75,0x6b4d,0x9492,0xad55,0x7bcf,0xbdf7,0xbdd7,0x9492,0xbdf7,0xa534,0x73ae,0xb596,0x0861,0x738e,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x31a6,0x632c,0xad75,0x632c,0x94b2,0xad55,0x18e3,0x6b6d,0xce59,0x73ae,0x632c,0x9cd3,0x8430,0xa514,0xbdd7,0x8c71,0xa534,0x18e3,0x5acb,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x5aeb,0xad75,0x6b4d,0x9492,0xad55,0x7bcf,0xbdd7,0xce79,0x9cf3,0xa534,0x7bcf,0xc618,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x39e7,0x4208,0x39c7,0x632c,0xb596,0x632c,0x9cd3,0xad75,0x2104,0x632c,0xbdd7,0x8410,0x528a,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x5acb,0xc638,0x8c71,0xad75,0x9cf3,0x7bcf,0xbdf7,0xb5b6,0x8c51,0xbdf7,0xad75,0x8430,0xa514,0xc618,0x738e,0x7bcf,0xbdf7,0x8c71,0xa514,0x5aeb,0x31a6,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x3186,0x630c,0xd6ba,0x94b2,0xbdf7,0xbdf7,0x73ae,0x6b4d,0x9cf3,0x94b2,0x8c51,0x7bef,0xc618,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x18e3,0xb596,0x9cf3,0xad55,0x9cd3,0x8c51,0x8c71,0xbdd7,0x630c,0x9cf3,0xbdf7,0xa514,0x52aa,0xb596,0xa534,0x6b4d,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x2a08,0xa1e8,0xa1e8,0x5208,0xa9e8,0x7a08,0xa9e8,0x9a08,0xa9e8,0xa9e8,0xa1e8,0x6208,0x4208,0xb9e8,0x8208,0x3a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39c7,0xb596,0xffff,0xbdf7,0xb596,0xffff,0xf7be,0xc618,0xbdf7,0xe73c,0xbdd7,0xe73c,0xce79,0xb5b6,0x0861,0x0000,0xb5b6,0xef7d,0xb596,0x528a,0x39e7,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x3167,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0xc618,0xa514,0xce79,0xad55,0xe71c,0x18c3,0xb596,0xbdf7,0x9cd3,0xf7be,0x9cd3,0xbdf7,0xb5b6,0x0000,0x4a69,0x1082,0xbdf7,0xbdf7,0x1082,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x31a6,0x738e,0xad55,0x0000,0x7bef,0xa514,0x2965,0xc638,0xc618,0xa514,0x4228,0x9492,0xd69a,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x3186,0x738e,0xad55,0x0000,0x73ae,0xa534,0x0000,0x5aeb,0xce79,0x528a,0x528a,0xce79,0xad75,0xc638,0xce59,0xce59,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x738e,0xad55,0x0000,0x7bef,0xa514,0x2945,0xce59,0x9cd3,0xbdd7,0xad55,0x4a69,0xad55,0x18c3,0x4a49,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4228,0x4228,0x3186,0x738e,0xad55,0x0000,0x73ae,0xa534,0x0000,0x3186,0x738e,0xa534,0x8430,0x3186,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x52aa,0xc638,0x94b2,0xb596,0x9cd3,0x3186,0xc618,0xce59,0xc618,0x738e,0x9cd3,0x4a49,0xc618,0xc618,0x5acb,0x4228,0xd6ba,0xc638,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x31a6,0x6b4d,0xad55,0xb596,0xc618,0xc618,0x630c,0x0000,0x8c71,0xbdd7,0x39c7,0x630c,0xa534,0x18c3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2104,0xad75,0xbdf7,0x6b4d,0xb596,0xb5b6,0xc618,0xc638,0x39c7,0xa514,0x73ae,0x8c71,0x9cd3,0xb5b6,0xa534,0x1082,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a08,0x9208,0x9208,0xb1e8,0xb1e8,0xc1e8,0x7a08,0x8a08,0xa208,0xb1e8,0x3a08,0x1208,0xa208,0x6208,0x3208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4228,0x2965,0x9492,0x8430,0x6b6d,0xef7d,0xce79,0xc618,0x4228,0x18e3,0xb5b6,0xef7d,0xc618,0xe73c,0xc618,0xe73c,0x5aeb,0xa514,0xce59,0xbdf7,0x0000,0x5aeb,0x4228,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x31a6,0x4228,0x738e,0x5acb,0x2945,0x528a,0x4208,0x4a49,0x4a49,0x630c,0x52aa,0x630c,0x4a49,0x4a49,0x4208,0x39e7,0x39c7,0x4a49,0x4a49,0x39c7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39c7,0x4a49,0xa534,0xad75,0x8430,0xa514,0xad75,0x9cf3,0x94b2,0x0000,0x3186,0x5aeb,0x9cf3,0x10a2,0x39e7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x4a49,0xa534,0xad55,0x9492,0xc618,0xa534,0x9492,0xbdf7,0xa514,0x94b2,0xa534,0x73ae,0xbdf7,0x8c71,0x7bcf,0x8410,0x2124,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39c7,0x4a49,0xa534,0xad75,0x8430,0xa514,0xad75,0x9cf3,0x9492,0x5aeb,0xa534,0x528a,0xa534,0x18e3,0x4228,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4a49,0xa534,0xad55,0x9492,0xc618,0xad55,0x8410,0x9492,0xad55,0x8c51,0x2945,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x528a,0xc618,0x9cf3,0x8c71,0x9cf3,0xad75,0x9cf3,0x9492,0x738e,0x94b2,0xc618,0x9cf3,0x6b4d,0xc618,0x9cf3,0x9cd3,0x9492,0x7bcf,0x7bef,0x630c,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x2965,0x6b4d,0x9cd3,0x528a,0xbdd7,0xb5b6,0xa514,0x9cd3,0x9cd3,0x5aeb,0xa514,0x52aa,0xa534,0x2104,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x18e3,0xa514,0x5acb,0x0000,0xa534,0x7bef,0xa514,0x9cd3,0xad75,0xa514,0x8410,0xa514,0x9cd3,0xad75,0xad75,0xa514,0x39e7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x41e7,0x29e7,0x79c7,0xa1c7,0x99c7,0xa9c7,0x39e7,0x89c7,0xa1c7,0xb9c7,0x99c7,0x51e7,0x31e7,0x21e7,0xa1c7,0x61e7,0x31e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0x9492,0xffdf,0xf79e,0xc5f7,0xbdd7,0xbdd7,0x1000,0x20a2,0xbdf7,0xb595,0x0000,0xef5c,0x5aeb,0xd6ba,0xffff,0xce79,0xad75,0xffdf,0xef7d,0xe73c,0x4a8a,0x39c8,0x39e8,0x39e8,0x4208,0x31a7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x52aa,0x4a49,0x4a69,0x52aa,0x528a,0x52aa,0x528a,0x528a,0x4a49,0x4a69,0x4a49,0x528a,0x528a,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x52aa,0x52aa,0x5aaa,0x5269,0x62eb,0x7bcf,0x4a28,0x630c,0x7bae,0x4a69,0x5aeb,0x5acb,0x52aa,0x5acb,0x5aeb,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x5249,0x528a,0x62eb,0x7bcf,0x4a49,0x6b6d,0x7bef,0x6b2c,0x6b6d,0x7bef,0x6b4d,0x528a,0x4a49,0x5aeb,0x5aeb,0x528a,0x632c,0x4a69,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x52aa,0x52aa,0x5269,0x5aeb,0x7bcf,0x4a28,0x630c,0x7bae,0x5269,0x62eb,0x52aa,0x5acb,0x5aaa,0x5aeb,0x528a,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x62eb,0x7bcf,0x4a49,0x736d,0x7bef,0x6b4d,0x7bae,0x7bcf,0x4a49,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0x738e,0x7bcf,0x4208,0x630c,0x7bae,0x4a69,0x62eb,0x528a,0x630c,0x738e,0x630c,0x4a49,0x738e,0x83ef,0x6b4d,0x5acb,0x528a,0x5aeb,0x73ae,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x62eb,0x5aaa,0x5acb,0x736d,0x83ef,0x6b4d,0x5aaa,0x528a,0x5aeb,0x52aa,0x5aeb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x528a,0x5aeb,0x5aeb,0x5aaa,0x5acb,0x4a49,0x5aaa,0x5269,0x7bcf,0x5aeb,0x630c,0x8410,0x5acb,0x5aaa,0x83ef,0x7bcf,0x528a,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x52aa,0x62aa,0x828a,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x62aa,0x6aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4228,0x62eb,0x636d,0x2a69,0x3aaa,0x42eb,0x328a,0x326a,0x420b,0x420b,0x39ca,0x4a4c,0x2949,0x2129,0x6b0d,0x49e9,0x524a,0x6aed,0x6aed,0x62ed,0x5288,0x5286,0x5286,0x5286,0x52a6,0x4a65,0x7bce,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x5b0c,0x530c,0x4b0c,0x530c,0x52eb,0x3aaa,0x532c,0x52eb,0x3aaa,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1a08,0x5b2c,0x52eb,0x5acb,0x530c,0x52cb,0x52aa,0x52eb,0x5aeb,0x52aa,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x530c,0x630c,0x530c,0x5aeb,0x4aaa,0x4b0c,0x52eb,0x4acb,0x4b0c,0x4aeb,0x530c,0x4aeb,0x530c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x530c,0x5b0c,0x630c,0x630c,0x5b0c,0x52eb,0x5acb,0x5b0c,0x42cb,0x4aaa,0x52eb,0x5acb,0x4acb,0x632c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x00a2,0x3aaa,0x52cb,0x5b2c,0x42eb,0x4acb,0x5b0c,0x4aeb,0x630c,0x4aeb,0x4acb,0x52eb,0x632c,0x52cb,0x4aaa,0x42cb,0x4b0b,0x630c,0x5aeb,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x532c,0x5b0c,0x5b0c,0x630c,0x52eb,0x4b0c,0x4aeb,0x4acb,0x42aa,0x4acb,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x4aeb,0x530c,0x5b0c,0x5b0c,0x530c,0x5b0c,0x5b0c,0x530b,0x4b0c,0x42aa,0x52eb,0x42eb,0x4aaa,0x5b0c,0x4b0b,0x42aa,0x4acb,0x4b0c,0x4b0c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4228,0x632c,0x5b0c,0x530c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4aeb,0x930c,0xd36e,0xc34d,0xcb4d,0xcb4d,0xcbed,0xce4d,0xce6d,0xce6d,0xce6d,0xce6e,0xce6e,0x6cab,0x64ac,0x64ac,0x5c8b,0x5c8b,0x5caa,0x6c14,0x6b3a,0x6b59,0x6b59,0x6b59,0x6b59,0x630d,0x10a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0xa083,0x5800,0x6000,0x9883,0x8801,0x7000,0x9883,0x8801,0x6800,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1841,0x98e4,0x7800,0x6000,0x0000,0x7800,0x4800,0x2800,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0xa083,0x6000,0x0000,0x7800,0x1800,0x5800,0xa083,0x5800,0x6000,0x9883,0x8802,0x6800,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2861,0x90c4,0x9842,0x7000,0x5800,0x0000,0x0000,0x3000,0x7000,0x0000,0x6800,0x9883,0x7801,0x4800,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0xa0a3,0x5800,0x6000,0xa0a3,0x5800,0x6000,0x9883,0x2000,0x9062,0x6000,0x6000,0x0000,0x4800,0x7001,0xa083,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x7042,0x9842,0x3800,0x5800,0x1000,0x6800,0x8802,0x9883,0x6800,0x8862,0x9062,0x2000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0x9863,0x7000,0x2000,0x5000,0x7000,0x1000,0x5000,0x7800,0x9863,0x8842,0x6800,0xa083,0x6000,0x0000,0x9042,0x8842,0x7000,0x9863,0x9022,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd125,0xf987,0xf987,0xf9c7,0xf807,0xfd27,0xffe7,0xffe7,0xffe7,0xffe7,0xffe7,0xdf65,0x04e0,0x04e0,0x04e0,0x04e0,0x04e0,0x04c2,0x31fe,0x391f,0x395f,0x395f,0x395f,0x28fb,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9925,0x9125,0xb966,0x9945,0x3082,0xa966,0x9945,0x2882,0xa966,0x8925,0xa966,0x48a3,0x0061,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0xb166,0x8104,0xc987,0x8925,0xb166,0xa966,0x8925,0x48c3,0x0061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9125,0xa145,0x8925,0x7904,0x7904,0xb166,0x9125,0x9945,0xb986,0x9945,0x2882,0xa966,0x8125,0xa146,0x48c3,0x0061,0x1062,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0x50c3,0x68e4,0xa146,0x0020,0x38a2,0x8925,0x7104,0x8925,0xa966,0x68e4,0x60e3,0xa966,0x68e4,0xa966,0x0020,0x1882,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9925,0x9125,0xb966,0x8104,0x9945,0x8125,0xa146,0x8925,0x8925,0x7904,0xb166,0x68e4,0xa966,0x50c3,0xb166,0x7104,0x0061,0x1061,0x1061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa145,0x60e3,0xb986,0x9125,0x1882,0xc187,0xb166,0x58e3,0x68e4,0xb166,0x7904,0x9945,0x0020,0x1882,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x68c3,0xa946,0xa145,0xb166,0x9125,0xc187,0x1882,0x9125,0xc187,0x9125,0x3082,0xa966,0x8925,0x9945,0xa966,0x9945,0x30a2,0xa146,0x9945,0x48c3,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0061,0x40a3,0xf1e8,0xf1e8,0xf1e8,0xf1e8,0xf1c8,0xfec8,0xffe8,0xffe8,0xffe8,0xf7e8,0xffe9,0xae86,0x0460,0x2ce2,0x1ce2,0x1cc2,0x1ce0,0x1ca8,0x41fe,0x41bf,0x41df,0x41be,0x41df,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xa125,0x8904,0xa945,0x9925,0x0000,0xa125,0xa125,0x0000,0x9925,0xb146,0x68c3,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x8904,0x68c3,0x9105,0xa945,0xb146,0xc166,0x78e4,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xb146,0x5082,0xa945,0xa945,0xb146,0xb146,0xb146,0x50a2,0x9925,0xa125,0x0000,0x9925,0xd987,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc986,0x4882,0x4082,0x9925,0x0000,0x4082,0xc166,0xa125,0xa125,0x3862,0x9925,0x8904,0xb966,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xa125,0x8904,0xa125,0xd187,0x78e4,0x3061,0x8104,0x9104,0x78e4,0xa945,0xb146,0xa945,0xc166,0x1820,0x9105,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9105,0x0000,0xb146,0x8904,0x8104,0x9104,0xb966,0x3061,0x1000,0xc987,0xb966,0x1820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0x8104,0x80e4,0x9105,0xc166,0x9104,0x8104,0x8904,0xa945,0x9925,0x0000,0x9925,0xd987,0x78e4,0x0000,0x8904,0x8904,0xa945,0x9925,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x8904,0xa125,0xa945,0x8104,0xa125,0xa945,0x8104,0x9925,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc166,0x9925,0x80e4,0x3061,0xb966,0x78e4,0x70c3,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x9925,0x3862,0x0000,0x9925,0x68c3,0x9105,0xa945,0x3041,0x0000,0x9925,0xa945,0x8104,0x9925,0x50a2,0x8904,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9105,0x0000,0x4882,0xc166,0x9925,0x8904,0x9925,0x68c3,0xa125,0x80e4,0x9925,0x9925,0x80e4,0x1000,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x8904,0x9925,0x58a3,0x78e4,0x8904,0xc166,0x70c3,0x9925,0xb146,0xa945,0x0000,0x8904,0x3862,0x9105,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x9925,0xa945,0x60a3,0x68c3,0xa945,0x4062,0xb966,0x9105,0x9104,0x80e4,0x60c3,0x70c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x80e4,0xb966,0x9925,0x2841,0x9925,0x4882,0xa945,0x60a3,0x9104,0xa945,0x8104,0x9925,0x58a3,0x80e4,0x70c3,0x9925,0x9104,0xa125,0xa125,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x58a3,0x2041,0x0800,0x58a3,0x4882,0x2841,0x50a2,0x4882,0x2041,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x4082,0x3061,0x1820,0x0000,0x2041,0x2021,0x0000,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x1821,0x0800,0x1821,0x0000,0x0000,0x2041,0x1821,0x0000,0x2041,0x50a3,0x4882,0x2841,0x0000,0x2041,0x1821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x0800,0x0000,0x4062,0x50a3,0x3862,0x0000,0x0000,0x2041,0x50a2,0x5082,0x0000,0x2041,0x1820,0x2021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x58a3,0x2041,0x0800,0x0000,0x2021,0x3862,0x4082,0x0000,0x5082,0x4082,0x1820,0x1820,0x2041,0x0800,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0x5082,0x0000,0x0000,0x0800,0x0000,0x4082,0x58a3,0x3861,0x1820,0x0000,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3061,0x4082,0x2041,0x0800,0x1020,0x0000,0x0800,0x0000,0x2041,0x50a2,0x4882,0x2841,0x0000,0x1821,0x4062,0x58a3,0x1821,0x0800,0x58a3,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x1000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x419e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x04c0,0x14e0,0x14e0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399e,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f,0x41bf,0x41bf,0x41bf,0x2935,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x419e,0x0867,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x3501,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41bf,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0,0x14e0,0x14e0,0x14e1,0x14e0,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41be,0x41bf,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf1c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9c8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x419e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x3136,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41be,0x0824,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1020,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f,0x41bf,0x41bf,0x41bf,0x2913,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf1c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x419e,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x3501,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a5,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2935,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; diff --git a/MCUME_esp32/espspeccy/main/main.c b/MCUME_esp32/espspeccy/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espspeccy/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espspeccy/main/spec.c b/MCUME_esp32/espspeccy/main/spec.c new file mode 100644 index 0000000..30fa315 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/spec.c @@ -0,0 +1,404 @@ +#include "Z80.h" +#include "spectrum.rom.h" +#include "emuapi.h" +#include "zx_filetyp_z80.h" + +#include "AY8910.h" + + +#define WIDTH 320 +#define HEIGHT 192 + +#define CYCLES_PER_FRAME 69888 //3500000/50 + +typedef struct { + int port_ff; // 0xff = emulate the port, 0x00 alwais 0xFF + int ts_lebo; // left border t states + int ts_grap; // graphic zone t states + int ts_ribo; // right border t states + int ts_hore; // horizontal retrace t states + int ts_line; // to speed the calc, the sum of 4 abobe + int line_poin; // lines in retraze post interrup + int line_upbo; // lines of upper border + int line_grap; // lines of graphic zone = 192 + int line_bobo; // lines of bottom border + int line_retr; // lines of the retrace + /* + int TSTATES_PER_LINE; + int TOP_BORDER_LINES; + int SCANLINES; + int BOTTOM_BORDER_LINES; + int tstate_border_left; + int tstate_graphic_zone; + int tstate_border_right; + int hw_model; + int int_type; + int videopage; + int BANKM; + int BANK678; + */ +} HWOptions ; + +static HWOptions hwopt = { 0xFF, 24, 128, 24, 48, 224, 16, 48, 192, 48, 8 }; +//224, 64, 192, 56, 24, 128, 72}; + +struct { unsigned char R,G,B; } Palette[16] = { + { 0, 0, 0}, + { 0, 0, 205}, + { 205, 0, 0}, + { 205, 0, 205}, + { 0, 205, 0}, + { 0, 205, 205}, + { 205, 205, 0}, + { 212, 212, 212}, + { 0, 0, 0}, + { 0, 0, 255}, + { 255, 0, 0}, + { 255, 0, 255}, + { 0, 255, 0}, + { 0, 255, 255}, + { 255, 255, 0}, + { 255, 255, 255} +}; + +const byte map_qw[8][5] = { + {25, 6,27,29,224}, // vcxz + {10, 9, 7,22, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +}; + +static byte Z80_RAM[0xC000]; // 48k RAM +static Z80 myCPU; +static byte * volatile VRAM=Z80_RAM; // What will be displayed. Generally ZX VRAM, can be changed for alt screens. + +//extern const byte rom_zx48_rom[]; // 16k ROM +static byte key_ram[8]={ + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; // Keyboard buffer +byte out_ram; // Output (fe port) +static byte kempston_ram; // Kempston-Joystick Buffer + +static int v_border=0; +static int h_border=32; +static int bordercolor=0; +static byte * XBuf=0; + +static int lastaudio=CYCLES_PER_FRAME; +static byte buzzer_val; + + +void displayscanline(int y, int f_flash) +{ + int x, row, col, dir_p, dir_a, pixeles, tinta, papel, atributos; + + row = y + v_border; // 4 & 32 = graphical screen offset + col = 0; // 32+256+32=320 4+192+4=200 (res=320x200) + + for (x = 0; x < h_border; x++) { + XBuf[col++] = bordercolor; + } + + dir_p = ((y & 0xC0) << 5) + ((y & 0x07) << 8) + ((y & 0x38) << 2); + dir_a = 0x1800 + (32 * (y >> 3)); + + for (x = 0; x < 32; x++) + { + pixeles= VRAM[dir_p++]; + atributos=VRAM[dir_a++]; + + if (((atributos & 0x80) == 0) || (f_flash == 0)) + { + tinta = (atributos & 0x07) + ((atributos & 0x40) >> 3); + papel = (atributos & 0x78) >> 3; + } + else + { + papel = (atributos & 0x07) + ((atributos & 0x40) >> 3); + tinta = (atributos & 0x78) >> 3; + } + XBuf[col++] = ((pixeles & 0x80) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x40) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x20) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x10) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x08) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x04) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x02) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x01) ? tinta : papel); + } + + for (x = 0; x < h_border; x++) { + XBuf[col++] = bordercolor; + } + + emu_DrawLine(XBuf, WIDTH, HEIGHT, y); +} + +static int f_flash = 1; +static int f_flash2 = 0; +static void displayScreen(void) { + int y; + + //f_flash2 = (f_flash2++) % 32; + if (f_flash2 < 16) + f_flash = 1; + else + f_flash = 0; + + for (y = 0; y < HEIGHT; y++) + displayscanline (y, f_flash); + + emu_DrawVsync(); +} + + + +static void InitKeyboard(void){ + memset(key_ram, 0xff, sizeof(key_ram)); +} + +static void UpdateKeyboard (void) +{ + int nb_keys=0; + int k = emu_GetPad(); + int hk = emu_ReadI2CKeyboard(); + int j=emu_ReadKeys(); + + if (j & MASK_KEY_USER1) // run + k = 21; + if (j & MASK_KEY_USER3) // return + k = 40; + + if ( (k == 0) && (hk == 0) ) { + memset(key_ram, 0xff, sizeof(key_ram)); + } + else { + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) || (hk == map_qw[j][i]) ) { + key_ram[j] &= ~ (1<<(4-i)); + nb_keys++; + } + } + } + } +} + + +#define MAX_Z80SIZE 40000//32768 + + +int endsWith(const char * s, const char * suffix) +{ + int retval = 0; + int len = strlen(s); + int slen = strlen(suffix); + if (len > slen ) { + if (!strcmp(&s[len-slen], suffix)) { + retval = 1; + } + } + return (retval); +} + + +void spec_Start(char * filename) { + memset(Z80_RAM, 0, 0xC000); + if ( (endsWith(filename, "SNA")) || (endsWith(filename, "sna")) ) { + ZX_ReadFromFlash_SNA(&myCPU, filename); + } + else if ( (endsWith(filename, "Z80")) || (endsWith(filename, "z80")) ) { + unsigned char * game = emu_Malloc(MAX_Z80SIZE); + int size = emu_LoadFile(filename, game, MAX_Z80SIZE); + printf("game size %d\n",size); + ZX_ReadFromFlash_Z80(&myCPU, game,size); + emu_Free(game); + } +#if HAS_SND + emu_sndInit(); +#endif +} + +static AY8910 ay; + +void spec_Init(void) { + int J; + /* Set up the palette */ + for(J=0;J<16;J++) + emu_SetPaletteEntry(Palette[J].R,Palette[J].G,Palette[J].B, J); + + InitKeyboard(); + + Reset8910(&ay,3500000,0); + + + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH); + VRAM = Z80_RAM; + memset(Z80_RAM, 0, sizeof(Z80_RAM)); + + ResetZ80(&myCPU, CYCLES_PER_FRAME); +#if ALT_Z80CORE + myCPU.RAM = Z80_RAM; + Z80FlagTables(); +#endif +} + + + +void spec_Step(void) { +// 32+256+32 +//#define NBLINES (48+192+56+16) + + // Now run the emulator for all the real screen (192 lines) + /* + int scanl; + for (scanl = 0; scanl < NBLINES; scanl++) { + int ref=0; + emu_resetus(); + ExecZ80(&myCPU,hwopt.ts_line); + while (emu_us() < (20000/NBLINES)) { + } + } + */ + + ExecZ80(&myCPU,CYCLES_PER_FRAME); // 3.5MHz ticks for 6 lines @ 30 kHz = 700 cycles +#if ALT_Z80CORE +#else + IntZ80(&myCPU,INT_IRQ); // must be called every 20ms +#endif + displayScreen(); + + int k=emu_ReadKeys(); + + kempston_ram = 0x00; + if (k & MASK_JOY2_BTN) + kempston_ram |= 0x10; //Fire + if (k & MASK_JOY2_UP) + kempston_ram |= 0x8; //Up + if (k & MASK_JOY2_DOWN) + kempston_ram |= 0x4; //Down + if (k & MASK_JOY2_RIGHT) + kempston_ram |= 0x2; //Right + if (k & MASK_JOY2_LEFT) + kempston_ram |= 0x1; //Left + + + UpdateKeyboard(); + + Loop8910(&ay,20); +} + + + +#define BASERAM 0x4000 + + +void WrZ80(register word Addr,register byte Value) +{ + if (Addr >= BASERAM) + Z80_RAM[Addr-BASERAM]=Value; +} + +byte RdZ80(register word Addr) +{ + if (Addr>8) { + case 0xFE : return key_ram[0]; break; + case 0xFD : return key_ram[1]; break; + case 0xFB : return key_ram[2]; break; + case 0xF7 : return key_ram[3]; break; + case 0xEF : return key_ram[4]; break; + case 0xDF : return key_ram[5]; break; + case 0xBF : return key_ram[6]; break; + case 0x7F : return key_ram[7]; break; + } + } + + if ((port & 0xFF) == 0xFF) { + if (hwopt.port_ff == 0xFF) { + return 0xFF; + } + else { + //code = 1; + //if (code == 0xFF) code = 0x00; + return 1; + } + } + return 0xFF; +} + + +void PatchZ80(register Z80 *R) +{ + // nothing to do +} + +/* +word LoopZ80(register Z80 *R) +{ + // no interrupt triggered + return INT_NONE; +} +*/ diff --git a/MCUME_esp32/espspeccy/main/spec.h b/MCUME_esp32/espspeccy/main/spec.h new file mode 100644 index 0000000..d88e163 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/spec.h @@ -0,0 +1,4 @@ +extern void spec_Init(void); +extern void spec_Step(void); +extern void spec_Start(char * filename); + diff --git a/MCUME_esp32/espspeccy/main/spectrum.rom.h b/MCUME_esp32/espspeccy/main/spectrum.rom.h new file mode 100755 index 0000000..1a9f0aa --- /dev/null +++ b/MCUME_esp32/espspeccy/main/spectrum.rom.h @@ -0,0 +1,1373 @@ +#ifndef SPECTRUM_ROM_H +#define SPECTRUM_ROM_H + +static const unsigned char rom_zx48_rom[] = { + 0xf3, 0xaf, 0x11, 0xff, 0xff, 0xc3, 0xcb, 0x11, 0x2a, 0x5d, 0x5c, 0x22, + 0x5f, 0x5c, 0x18, 0x43, 0xc3, 0xf2, 0x15, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2a, 0x5d, 0x5c, 0x7e, 0xcd, 0x7d, 0x00, 0xd0, 0xcd, 0x74, 0x00, 0x18, + 0xf7, 0xff, 0xff, 0xff, 0xc3, 0x5b, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc5, 0x2a, 0x61, 0x5c, 0xe5, 0xc3, 0x9e, 0x16, 0xf5, 0xe5, 0x2a, 0x78, + 0x5c, 0x23, 0x22, 0x78, 0x5c, 0x7c, 0xb5, 0x20, 0x03, 0xfd, 0x34, 0x40, + 0xc5, 0xd5, 0xcd, 0xbf, 0x02, 0xd1, 0xc1, 0xe1, 0xf1, 0xfb, 0xc9, 0xe1, + 0x6e, 0xfd, 0x75, 0x00, 0xed, 0x7b, 0x3d, 0x5c, 0xc3, 0xc5, 0x16, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xe5, 0x2a, 0xb0, 0x5c, 0x7c, + 0xb5, 0x20, 0x01, 0xe9, 0xe1, 0xf1, 0xed, 0x45, 0x2a, 0x5d, 0x5c, 0x23, + 0x22, 0x5d, 0x5c, 0x7e, 0xc9, 0xfe, 0x21, 0xd0, 0xfe, 0x0d, 0xc8, 0xfe, + 0x10, 0xd8, 0xfe, 0x18, 0x3f, 0xd8, 0x23, 0xfe, 0x16, 0x38, 0x01, 0x23, + 0x37, 0x22, 0x5d, 0x5c, 0xc9, 0xbf, 0x52, 0x4e, 0xc4, 0x49, 0x4e, 0x4b, + 0x45, 0x59, 0xa4, 0x50, 0xc9, 0x46, 0xce, 0x50, 0x4f, 0x49, 0x4e, 0xd4, + 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0xa4, 0x41, 0x54, 0x54, 0xd2, 0x41, + 0xd4, 0x54, 0x41, 0xc2, 0x56, 0x41, 0x4c, 0xa4, 0x43, 0x4f, 0x44, 0xc5, + 0x56, 0x41, 0xcc, 0x4c, 0x45, 0xce, 0x53, 0x49, 0xce, 0x43, 0x4f, 0xd3, + 0x54, 0x41, 0xce, 0x41, 0x53, 0xce, 0x41, 0x43, 0xd3, 0x41, 0x54, 0xce, + 0x4c, 0xce, 0x45, 0x58, 0xd0, 0x49, 0x4e, 0xd4, 0x53, 0x51, 0xd2, 0x53, + 0x47, 0xce, 0x41, 0x42, 0xd3, 0x50, 0x45, 0x45, 0xcb, 0x49, 0xce, 0x55, + 0x53, 0xd2, 0x53, 0x54, 0x52, 0xa4, 0x43, 0x48, 0x52, 0xa4, 0x4e, 0x4f, + 0xd4, 0x42, 0x49, 0xce, 0x4f, 0xd2, 0x41, 0x4e, 0xc4, 0x3c, 0xbd, 0x3e, + 0xbd, 0x3c, 0xbe, 0x4c, 0x49, 0x4e, 0xc5, 0x54, 0x48, 0x45, 0xce, 0x54, + 0xcf, 0x53, 0x54, 0x45, 0xd0, 0x44, 0x45, 0x46, 0x20, 0x46, 0xce, 0x43, + 0x41, 0xd4, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0xd4, 0x4d, 0x4f, 0x56, 0xc5, + 0x45, 0x52, 0x41, 0x53, 0xc5, 0x4f, 0x50, 0x45, 0x4e, 0x20, 0xa3, 0x43, + 0x4c, 0x4f, 0x53, 0x45, 0x20, 0xa3, 0x4d, 0x45, 0x52, 0x47, 0xc5, 0x56, + 0x45, 0x52, 0x49, 0x46, 0xd9, 0x42, 0x45, 0x45, 0xd0, 0x43, 0x49, 0x52, + 0x43, 0x4c, 0xc5, 0x49, 0x4e, 0xcb, 0x50, 0x41, 0x50, 0x45, 0xd2, 0x46, + 0x4c, 0x41, 0x53, 0xc8, 0x42, 0x52, 0x49, 0x47, 0x48, 0xd4, 0x49, 0x4e, + 0x56, 0x45, 0x52, 0x53, 0xc5, 0x4f, 0x56, 0x45, 0xd2, 0x4f, 0x55, 0xd4, + 0x4c, 0x50, 0x52, 0x49, 0x4e, 0xd4, 0x4c, 0x4c, 0x49, 0x53, 0xd4, 0x53, + 0x54, 0x4f, 0xd0, 0x52, 0x45, 0x41, 0xc4, 0x44, 0x41, 0x54, 0xc1, 0x52, + 0x45, 0x53, 0x54, 0x4f, 0x52, 0xc5, 0x4e, 0x45, 0xd7, 0x42, 0x4f, 0x52, + 0x44, 0x45, 0xd2, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0xc5, 0x44, + 0x49, 0xcd, 0x52, 0x45, 0xcd, 0x46, 0x4f, 0xd2, 0x47, 0x4f, 0x20, 0x54, + 0xcf, 0x47, 0x4f, 0x20, 0x53, 0x55, 0xc2, 0x49, 0x4e, 0x50, 0x55, 0xd4, + 0x4c, 0x4f, 0x41, 0xc4, 0x4c, 0x49, 0x53, 0xd4, 0x4c, 0x45, 0xd4, 0x50, + 0x41, 0x55, 0x53, 0xc5, 0x4e, 0x45, 0x58, 0xd4, 0x50, 0x4f, 0x4b, 0xc5, + 0x50, 0x52, 0x49, 0x4e, 0xd4, 0x50, 0x4c, 0x4f, 0xd4, 0x52, 0x55, 0xce, + 0x53, 0x41, 0x56, 0xc5, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x49, 0x5a, + 0xc5, 0x49, 0xc6, 0x43, 0x4c, 0xd3, 0x44, 0x52, 0x41, 0xd7, 0x43, 0x4c, + 0x45, 0x41, 0xd2, 0x52, 0x45, 0x54, 0x55, 0x52, 0xce, 0x43, 0x4f, 0x50, + 0xd9, 0x42, 0x48, 0x59, 0x36, 0x35, 0x54, 0x47, 0x56, 0x4e, 0x4a, 0x55, + 0x37, 0x34, 0x52, 0x46, 0x43, 0x4d, 0x4b, 0x49, 0x38, 0x33, 0x45, 0x44, + 0x58, 0x0e, 0x4c, 0x4f, 0x39, 0x32, 0x57, 0x53, 0x5a, 0x20, 0x0d, 0x50, + 0x30, 0x31, 0x51, 0x41, 0xe3, 0xc4, 0xe0, 0xe4, 0xb4, 0xbc, 0xbd, 0xbb, + 0xaf, 0xb0, 0xb1, 0xc0, 0xa7, 0xa6, 0xbe, 0xad, 0xb2, 0xba, 0xe5, 0xa5, + 0xc2, 0xe1, 0xb3, 0xb9, 0xc1, 0xb8, 0x7e, 0xdc, 0xda, 0x5c, 0xb7, 0x7b, + 0x7d, 0xd8, 0xbf, 0xae, 0xaa, 0xab, 0xdd, 0xde, 0xdf, 0x7f, 0xb5, 0xd6, + 0x7c, 0xd5, 0x5d, 0xdb, 0xb6, 0xd9, 0x5b, 0xd7, 0x0c, 0x07, 0x06, 0x04, + 0x05, 0x08, 0x0a, 0x0b, 0x09, 0x0f, 0xe2, 0x2a, 0x3f, 0xcd, 0xc8, 0xcc, + 0xcb, 0x5e, 0xac, 0x2d, 0x2b, 0x3d, 0x2e, 0x2c, 0x3b, 0x22, 0xc7, 0x3c, + 0xc3, 0x3e, 0xc5, 0x2f, 0xc9, 0x60, 0xc6, 0x3a, 0xd0, 0xce, 0xa8, 0xca, + 0xd3, 0xd4, 0xd1, 0xd2, 0xa9, 0xcf, 0x2e, 0x2f, 0x11, 0xff, 0xff, 0x01, + 0xfe, 0xfe, 0xed, 0x78, 0x2f, 0xe6, 0x1f, 0x28, 0x0e, 0x67, 0x7d, 0x14, + 0xc0, 0xd6, 0x08, 0xcb, 0x3c, 0x30, 0xfa, 0x53, 0x5f, 0x20, 0xf4, 0x2d, + 0xcb, 0x00, 0x38, 0xe6, 0x7a, 0x3c, 0xc8, 0xfe, 0x28, 0xc8, 0xfe, 0x19, + 0xc8, 0x7b, 0x5a, 0x57, 0xfe, 0x18, 0xc9, 0xcd, 0x8e, 0x02, 0xc0, 0x21, + 0x00, 0x5c, 0xcb, 0x7e, 0x20, 0x07, 0x23, 0x35, 0x2b, 0x20, 0x02, 0x36, + 0xff, 0x7d, 0x21, 0x04, 0x5c, 0xbd, 0x20, 0xee, 0xcd, 0x1e, 0x03, 0xd0, + 0x21, 0x00, 0x5c, 0xbe, 0x28, 0x2e, 0xeb, 0x21, 0x04, 0x5c, 0xbe, 0x28, + 0x27, 0xcb, 0x7e, 0x20, 0x04, 0xeb, 0xcb, 0x7e, 0xc8, 0x5f, 0x77, 0x23, + 0x36, 0x05, 0x23, 0x3a, 0x09, 0x5c, 0x77, 0x23, 0xfd, 0x4e, 0x07, 0xfd, + 0x56, 0x01, 0xe5, 0xcd, 0x33, 0x03, 0xe1, 0x77, 0x32, 0x08, 0x5c, 0xfd, + 0xcb, 0x01, 0xee, 0xc9, 0x23, 0x36, 0x05, 0x23, 0x35, 0xc0, 0x3a, 0x0a, + 0x5c, 0x77, 0x23, 0x7e, 0x18, 0xea, 0x42, 0x16, 0x00, 0x7b, 0xfe, 0x27, + 0xd0, 0xfe, 0x18, 0x20, 0x03, 0xcb, 0x78, 0xc0, 0x21, 0x05, 0x02, 0x19, + 0x7e, 0x37, 0xc9, 0x7b, 0xfe, 0x3a, 0x38, 0x2f, 0x0d, 0xfa, 0x4f, 0x03, + 0x28, 0x03, 0xc6, 0x4f, 0xc9, 0x21, 0xeb, 0x01, 0x04, 0x28, 0x03, 0x21, + 0x05, 0x02, 0x16, 0x00, 0x19, 0x7e, 0xc9, 0x21, 0x29, 0x02, 0xcb, 0x40, + 0x28, 0xf4, 0xcb, 0x5a, 0x28, 0x0a, 0xfd, 0xcb, 0x30, 0x5e, 0xc0, 0x04, + 0xc0, 0xc6, 0x20, 0xc9, 0xc6, 0xa5, 0xc9, 0xfe, 0x30, 0xd8, 0x0d, 0xfa, + 0x9d, 0x03, 0x20, 0x19, 0x21, 0x54, 0x02, 0xcb, 0x68, 0x28, 0xd3, 0xfe, + 0x38, 0x30, 0x07, 0xd6, 0x20, 0x04, 0xc8, 0xc6, 0x08, 0xc9, 0xd6, 0x36, + 0x04, 0xc8, 0xc6, 0xfe, 0xc9, 0x21, 0x30, 0x02, 0xfe, 0x39, 0x28, 0xba, + 0xfe, 0x30, 0x28, 0xb6, 0xe6, 0x07, 0xc6, 0x80, 0x04, 0xc8, 0xee, 0x0f, + 0xc9, 0x04, 0xc8, 0xcb, 0x68, 0x21, 0x30, 0x02, 0x20, 0xa4, 0xd6, 0x10, + 0xfe, 0x22, 0x28, 0x06, 0xfe, 0x20, 0xc0, 0x3e, 0x5f, 0xc9, 0x3e, 0x40, + 0xc9, 0xf3, 0x7d, 0xcb, 0x3d, 0xcb, 0x3d, 0x2f, 0xe6, 0x03, 0x4f, 0x06, + 0x00, 0xdd, 0x21, 0xd1, 0x03, 0xdd, 0x09, 0x3a, 0x48, 0x5c, 0xe6, 0x38, + 0x0f, 0x0f, 0x0f, 0xf6, 0x08, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x0d, 0x20, + 0xfd, 0x0e, 0x3f, 0x05, 0xc2, 0xd6, 0x03, 0xee, 0x10, 0xd3, 0xfe, 0x44, + 0x4f, 0xcb, 0x67, 0x20, 0x09, 0x7a, 0xb3, 0x28, 0x09, 0x79, 0x4d, 0x1b, + 0xdd, 0xe9, 0x4d, 0x0c, 0xdd, 0xe9, 0xfb, 0xc9, 0xef, 0x31, 0x27, 0xc0, + 0x03, 0x34, 0xec, 0x6c, 0x98, 0x1f, 0xf5, 0x04, 0xa1, 0x0f, 0x38, 0x21, + 0x92, 0x5c, 0x7e, 0xa7, 0x20, 0x5e, 0x23, 0x4e, 0x23, 0x46, 0x78, 0x17, + 0x9f, 0xb9, 0x20, 0x54, 0x23, 0xbe, 0x20, 0x50, 0x78, 0xc6, 0x3c, 0xf2, + 0x25, 0x04, 0xe2, 0x6c, 0x04, 0x06, 0xfa, 0x04, 0xd6, 0x0c, 0x30, 0xfb, + 0xc6, 0x0c, 0xc5, 0x21, 0x6e, 0x04, 0xcd, 0x06, 0x34, 0xcd, 0xb4, 0x33, + 0xef, 0x04, 0x38, 0xf1, 0x86, 0x77, 0xef, 0xc0, 0x02, 0x31, 0x38, 0xcd, + 0x94, 0x1e, 0xfe, 0x0b, 0x30, 0x22, 0xef, 0xe0, 0x04, 0xe0, 0x34, 0x80, + 0x43, 0x55, 0x9f, 0x80, 0x01, 0x05, 0x34, 0x35, 0x71, 0x03, 0x38, 0xcd, + 0x99, 0x1e, 0xc5, 0xcd, 0x99, 0x1e, 0xe1, 0x50, 0x59, 0x7a, 0xb3, 0xc8, + 0x1b, 0xc3, 0xb5, 0x03, 0xcf, 0x0a, 0x89, 0x02, 0xd0, 0x12, 0x86, 0x89, + 0x0a, 0x97, 0x60, 0x75, 0x89, 0x12, 0xd5, 0x17, 0x1f, 0x89, 0x1b, 0x90, + 0x41, 0x02, 0x89, 0x24, 0xd0, 0x53, 0xca, 0x89, 0x2e, 0x9d, 0x36, 0xb1, + 0x89, 0x38, 0xff, 0x49, 0x3e, 0x89, 0x43, 0xff, 0x6a, 0x73, 0x89, 0x4f, + 0xa7, 0x00, 0x54, 0x89, 0x5c, 0x00, 0x00, 0x00, 0x89, 0x69, 0x14, 0xf6, + 0x24, 0x89, 0x76, 0xf1, 0x10, 0x05, 0xcd, 0xfb, 0x24, 0x3a, 0x3b, 0x5c, + 0x87, 0xfa, 0x8a, 0x1c, 0xe1, 0xd0, 0xe5, 0xcd, 0xf1, 0x2b, 0x62, 0x6b, + 0x0d, 0xf8, 0x09, 0xcb, 0xfe, 0xc9, 0x21, 0x3f, 0x05, 0xe5, 0x21, 0x80, + 0x1f, 0xcb, 0x7f, 0x28, 0x03, 0x21, 0x98, 0x0c, 0x08, 0x13, 0xdd, 0x2b, + 0xf3, 0x3e, 0x02, 0x47, 0x10, 0xfe, 0xd3, 0xfe, 0xee, 0x0f, 0x06, 0xa4, + 0x2d, 0x20, 0xf5, 0x05, 0x25, 0xf2, 0xd8, 0x04, 0x06, 0x2f, 0x10, 0xfe, + 0xd3, 0xfe, 0x3e, 0x0d, 0x06, 0x37, 0x10, 0xfe, 0xd3, 0xfe, 0x01, 0x0e, + 0x3b, 0x08, 0x6f, 0xc3, 0x07, 0x05, 0x7a, 0xb3, 0x28, 0x0c, 0xdd, 0x6e, + 0x00, 0x7c, 0xad, 0x67, 0x3e, 0x01, 0x37, 0xc3, 0x25, 0x05, 0x6c, 0x18, + 0xf4, 0x79, 0xcb, 0x78, 0x10, 0xfe, 0x30, 0x04, 0x06, 0x42, 0x10, 0xfe, + 0xd3, 0xfe, 0x06, 0x3e, 0x20, 0xef, 0x05, 0xaf, 0x3c, 0xcb, 0x15, 0xc2, + 0x14, 0x05, 0x1b, 0xdd, 0x23, 0x06, 0x31, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, + 0xd0, 0x7a, 0x3c, 0xc2, 0xfe, 0x04, 0x06, 0x3b, 0x10, 0xfe, 0xc9, 0xf5, + 0x3a, 0x48, 0x5c, 0xe6, 0x38, 0x0f, 0x0f, 0x0f, 0xd3, 0xfe, 0x3e, 0x7f, + 0xdb, 0xfe, 0x1f, 0xfb, 0x38, 0x02, 0xcf, 0x0c, 0xf1, 0xc9, 0x14, 0x08, + 0x15, 0xf3, 0x3e, 0x0f, 0xd3, 0xfe, 0x21, 0x3f, 0x05, 0xe5, 0xdb, 0xfe, + 0x1f, 0xe6, 0x20, 0xf6, 0x02, 0x4f, 0xbf, 0xc0, 0xcd, 0xe7, 0x05, 0x30, + 0xfa, 0x21, 0x15, 0x04, 0x10, 0xfe, 0x2b, 0x7c, 0xb5, 0x20, 0xf9, 0xcd, + 0xe3, 0x05, 0x30, 0xeb, 0x06, 0x9c, 0xcd, 0xe3, 0x05, 0x30, 0xe4, 0x3e, + 0xc6, 0xb8, 0x30, 0xe0, 0x24, 0x20, 0xf1, 0x06, 0xc9, 0xcd, 0xe7, 0x05, + 0x30, 0xd5, 0x78, 0xfe, 0xd4, 0x30, 0xf4, 0xcd, 0xe7, 0x05, 0xd0, 0x79, + 0xee, 0x03, 0x4f, 0x26, 0x00, 0x06, 0xb0, 0x18, 0x1f, 0x08, 0x20, 0x07, + 0x30, 0x0f, 0xdd, 0x75, 0x00, 0x18, 0x0f, 0xcb, 0x11, 0xad, 0xc0, 0x79, + 0x1f, 0x4f, 0x13, 0x18, 0x07, 0xdd, 0x7e, 0x00, 0xad, 0xc0, 0xdd, 0x23, + 0x1b, 0x08, 0x06, 0xb2, 0x2e, 0x01, 0xcd, 0xe3, 0x05, 0xd0, 0x3e, 0xcb, + 0xb8, 0xcb, 0x15, 0x06, 0xb0, 0xd2, 0xca, 0x05, 0x7c, 0xad, 0x67, 0x7a, + 0xb3, 0x20, 0xca, 0x7c, 0xfe, 0x01, 0xc9, 0xcd, 0xe7, 0x05, 0xd0, 0x3e, + 0x16, 0x3d, 0x20, 0xfd, 0xa7, 0x04, 0xc8, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, + 0xd0, 0xa9, 0xe6, 0x20, 0x28, 0xf3, 0x79, 0x2f, 0x4f, 0xe6, 0x07, 0xf6, + 0x08, 0xd3, 0xfe, 0x37, 0xc9, 0xf1, 0x3a, 0x74, 0x5c, 0xd6, 0xe0, 0x32, + 0x74, 0x5c, 0xcd, 0x8c, 0x1c, 0xcd, 0x30, 0x25, 0x28, 0x3c, 0x01, 0x11, + 0x00, 0x3a, 0x74, 0x5c, 0xa7, 0x28, 0x02, 0x0e, 0x22, 0xf7, 0xd5, 0xdd, + 0xe1, 0x06, 0x0b, 0x3e, 0x20, 0x12, 0x13, 0x10, 0xfc, 0xdd, 0x36, 0x01, + 0xff, 0xcd, 0xf1, 0x2b, 0x21, 0xf6, 0xff, 0x0b, 0x09, 0x03, 0x30, 0x0f, + 0x3a, 0x74, 0x5c, 0xa7, 0x20, 0x02, 0xcf, 0x0e, 0x78, 0xb1, 0x28, 0x0a, + 0x01, 0x0a, 0x00, 0xdd, 0xe5, 0xe1, 0x23, 0xeb, 0xed, 0xb0, 0xdf, 0xfe, + 0xe4, 0x20, 0x49, 0x3a, 0x74, 0x5c, 0xfe, 0x03, 0xca, 0x8a, 0x1c, 0xe7, + 0xcd, 0xb2, 0x28, 0xcb, 0xf9, 0x30, 0x0b, 0x21, 0x00, 0x00, 0x3a, 0x74, + 0x5c, 0x3d, 0x28, 0x15, 0xcf, 0x01, 0xc2, 0x8a, 0x1c, 0xcd, 0x30, 0x25, + 0x28, 0x18, 0x23, 0x7e, 0xdd, 0x77, 0x0b, 0x23, 0x7e, 0xdd, 0x77, 0x0c, + 0x23, 0xdd, 0x71, 0x0e, 0x3e, 0x01, 0xcb, 0x71, 0x28, 0x01, 0x3c, 0xdd, + 0x77, 0x00, 0xeb, 0xe7, 0xfe, 0x29, 0x20, 0xda, 0xe7, 0xcd, 0xee, 0x1b, + 0xeb, 0xc3, 0x5a, 0x07, 0xfe, 0xaa, 0x20, 0x1f, 0x3a, 0x74, 0x5c, 0xfe, + 0x03, 0xca, 0x8a, 0x1c, 0xe7, 0xcd, 0xee, 0x1b, 0xdd, 0x36, 0x0b, 0x00, + 0xdd, 0x36, 0x0c, 0x1b, 0x21, 0x00, 0x40, 0xdd, 0x75, 0x0d, 0xdd, 0x74, + 0x0e, 0x18, 0x4d, 0xfe, 0xaf, 0x20, 0x4f, 0x3a, 0x74, 0x5c, 0xfe, 0x03, + 0xca, 0x8a, 0x1c, 0xe7, 0xcd, 0x48, 0x20, 0x20, 0x0c, 0x3a, 0x74, 0x5c, + 0xa7, 0xca, 0x8a, 0x1c, 0xcd, 0xe6, 0x1c, 0x18, 0x0f, 0xcd, 0x82, 0x1c, + 0xdf, 0xfe, 0x2c, 0x28, 0x0c, 0x3a, 0x74, 0x5c, 0xa7, 0xca, 0x8a, 0x1c, + 0xcd, 0xe6, 0x1c, 0x18, 0x04, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xee, 0x1b, + 0xcd, 0x99, 0x1e, 0xdd, 0x71, 0x0b, 0xdd, 0x70, 0x0c, 0xcd, 0x99, 0x1e, + 0xdd, 0x71, 0x0d, 0xdd, 0x70, 0x0e, 0x60, 0x69, 0xdd, 0x36, 0x00, 0x03, + 0x18, 0x44, 0xfe, 0xca, 0x28, 0x09, 0xcd, 0xee, 0x1b, 0xdd, 0x36, 0x0e, + 0x80, 0x18, 0x17, 0x3a, 0x74, 0x5c, 0xa7, 0xc2, 0x8a, 0x1c, 0xe7, 0xcd, + 0x82, 0x1c, 0xcd, 0xee, 0x1b, 0xcd, 0x99, 0x1e, 0xdd, 0x71, 0x0d, 0xdd, + 0x70, 0x0e, 0xdd, 0x36, 0x00, 0x00, 0x2a, 0x59, 0x5c, 0xed, 0x5b, 0x53, + 0x5c, 0x37, 0xed, 0x52, 0xdd, 0x75, 0x0b, 0xdd, 0x74, 0x0c, 0x2a, 0x4b, + 0x5c, 0xed, 0x52, 0xdd, 0x75, 0x0f, 0xdd, 0x74, 0x10, 0xeb, 0x3a, 0x74, + 0x5c, 0xa7, 0xca, 0x70, 0x09, 0xe5, 0x01, 0x11, 0x00, 0xdd, 0x09, 0xdd, + 0xe5, 0x11, 0x11, 0x00, 0xaf, 0x37, 0xcd, 0x56, 0x05, 0xdd, 0xe1, 0x30, + 0xf2, 0x3e, 0xfe, 0xcd, 0x01, 0x16, 0xfd, 0x36, 0x52, 0x03, 0x0e, 0x80, + 0xdd, 0x7e, 0x00, 0xdd, 0xbe, 0xef, 0x20, 0x02, 0x0e, 0xf6, 0xfe, 0x04, + 0x30, 0xd9, 0x11, 0xc0, 0x09, 0xc5, 0xcd, 0x0a, 0x0c, 0xc1, 0xdd, 0xe5, + 0xd1, 0x21, 0xf0, 0xff, 0x19, 0x06, 0x0a, 0x7e, 0x3c, 0x20, 0x03, 0x79, + 0x80, 0x4f, 0x13, 0x1a, 0xbe, 0x23, 0x20, 0x01, 0x0c, 0xd7, 0x10, 0xf6, + 0xcb, 0x79, 0x20, 0xb3, 0x3e, 0x0d, 0xd7, 0xe1, 0xdd, 0x7e, 0x00, 0xfe, + 0x03, 0x28, 0x0c, 0x3a, 0x74, 0x5c, 0x3d, 0xca, 0x08, 0x08, 0xfe, 0x02, + 0xca, 0xb6, 0x08, 0xe5, 0xdd, 0x6e, 0xfa, 0xdd, 0x66, 0xfb, 0xdd, 0x5e, + 0x0b, 0xdd, 0x56, 0x0c, 0x7c, 0xb5, 0x28, 0x0d, 0xed, 0x52, 0x38, 0x26, + 0x28, 0x07, 0xdd, 0x7e, 0x00, 0xfe, 0x03, 0x20, 0x1d, 0xe1, 0x7c, 0xb5, + 0x20, 0x06, 0xdd, 0x6e, 0x0d, 0xdd, 0x66, 0x0e, 0xe5, 0xdd, 0xe1, 0x3a, + 0x74, 0x5c, 0xfe, 0x02, 0x37, 0x20, 0x01, 0xa7, 0x3e, 0xff, 0xcd, 0x56, + 0x05, 0xd8, 0xcf, 0x1a, 0xdd, 0x5e, 0x0b, 0xdd, 0x56, 0x0c, 0xe5, 0x7c, + 0xb5, 0x20, 0x06, 0x13, 0x13, 0x13, 0xeb, 0x18, 0x0c, 0xdd, 0x6e, 0xfa, + 0xdd, 0x66, 0xfb, 0xeb, 0x37, 0xed, 0x52, 0x38, 0x09, 0x11, 0x05, 0x00, + 0x19, 0x44, 0x4d, 0xcd, 0x05, 0x1f, 0xe1, 0xdd, 0x7e, 0x00, 0xa7, 0x28, + 0x3e, 0x7c, 0xb5, 0x28, 0x13, 0x2b, 0x46, 0x2b, 0x4e, 0x2b, 0x03, 0x03, + 0x03, 0xdd, 0x22, 0x5f, 0x5c, 0xcd, 0xe8, 0x19, 0xdd, 0x2a, 0x5f, 0x5c, + 0x2a, 0x59, 0x5c, 0x2b, 0xdd, 0x4e, 0x0b, 0xdd, 0x46, 0x0c, 0xc5, 0x03, + 0x03, 0x03, 0xdd, 0x7e, 0xfd, 0xf5, 0xcd, 0x55, 0x16, 0x23, 0xf1, 0x77, + 0xd1, 0x23, 0x73, 0x23, 0x72, 0x23, 0xe5, 0xdd, 0xe1, 0x37, 0x3e, 0xff, + 0xc3, 0x02, 0x08, 0xeb, 0x2a, 0x59, 0x5c, 0x2b, 0xdd, 0x22, 0x5f, 0x5c, + 0xdd, 0x4e, 0x0b, 0xdd, 0x46, 0x0c, 0xc5, 0xcd, 0xe5, 0x19, 0xc1, 0xe5, + 0xc5, 0xcd, 0x55, 0x16, 0xdd, 0x2a, 0x5f, 0x5c, 0x23, 0xdd, 0x4e, 0x0f, + 0xdd, 0x46, 0x10, 0x09, 0x22, 0x4b, 0x5c, 0xdd, 0x66, 0x0e, 0x7c, 0xe6, + 0xc0, 0x20, 0x0a, 0xdd, 0x6e, 0x0d, 0x22, 0x42, 0x5c, 0xfd, 0x36, 0x0a, + 0x00, 0xd1, 0xdd, 0xe1, 0x37, 0x3e, 0xff, 0xc3, 0x02, 0x08, 0xdd, 0x4e, + 0x0b, 0xdd, 0x46, 0x0c, 0xc5, 0x03, 0xf7, 0x36, 0x80, 0xeb, 0xd1, 0xe5, + 0xe5, 0xdd, 0xe1, 0x37, 0x3e, 0xff, 0xcd, 0x02, 0x08, 0xe1, 0xed, 0x5b, + 0x53, 0x5c, 0x7e, 0xe6, 0xc0, 0x20, 0x19, 0x1a, 0x13, 0xbe, 0x23, 0x20, + 0x02, 0x1a, 0xbe, 0x1b, 0x2b, 0x30, 0x08, 0xe5, 0xeb, 0xcd, 0xb8, 0x19, + 0xe1, 0x18, 0xec, 0xcd, 0x2c, 0x09, 0x18, 0xe2, 0x7e, 0x4f, 0xfe, 0x80, + 0xc8, 0xe5, 0x2a, 0x4b, 0x5c, 0x7e, 0xfe, 0x80, 0x28, 0x25, 0xb9, 0x28, + 0x08, 0xc5, 0xcd, 0xb8, 0x19, 0xc1, 0xeb, 0x18, 0xf0, 0xe6, 0xe0, 0xfe, + 0xa0, 0x20, 0x12, 0xd1, 0xd5, 0xe5, 0x23, 0x13, 0x1a, 0xbe, 0x20, 0x06, + 0x17, 0x30, 0xf7, 0xe1, 0x18, 0x03, 0xe1, 0x18, 0xe0, 0x3e, 0xff, 0xd1, + 0xeb, 0x3c, 0x37, 0xcd, 0x2c, 0x09, 0x18, 0xc4, 0x20, 0x10, 0x08, 0x22, + 0x5f, 0x5c, 0xeb, 0xcd, 0xb8, 0x19, 0xcd, 0xe8, 0x19, 0xeb, 0x2a, 0x5f, + 0x5c, 0x08, 0x08, 0xd5, 0xcd, 0xb8, 0x19, 0x22, 0x5f, 0x5c, 0x2a, 0x53, + 0x5c, 0xe3, 0xc5, 0x08, 0x38, 0x07, 0x2b, 0xcd, 0x55, 0x16, 0x23, 0x18, + 0x03, 0xcd, 0x55, 0x16, 0x23, 0xc1, 0xd1, 0xed, 0x53, 0x53, 0x5c, 0xed, + 0x5b, 0x5f, 0x5c, 0xc5, 0xd5, 0xeb, 0xed, 0xb0, 0xe1, 0xc1, 0xd5, 0xcd, + 0xe8, 0x19, 0xd1, 0xc9, 0xe5, 0x3e, 0xfd, 0xcd, 0x01, 0x16, 0xaf, 0x11, + 0xa1, 0x09, 0xcd, 0x0a, 0x0c, 0xfd, 0xcb, 0x02, 0xee, 0xcd, 0xd4, 0x15, + 0xdd, 0xe5, 0x11, 0x11, 0x00, 0xaf, 0xcd, 0xc2, 0x04, 0xdd, 0xe1, 0x06, + 0x32, 0x76, 0x10, 0xfd, 0xdd, 0x5e, 0x0b, 0xdd, 0x56, 0x0c, 0x3e, 0xff, + 0xdd, 0xe1, 0xc3, 0xc2, 0x04, 0x80, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, + 0x74, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, + 0xae, 0x0d, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x3a, 0xa0, 0x0d, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3a, 0xa0, 0x0d, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0xa0, 0x0d, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x3a, 0xa0, 0xcd, 0x03, 0x0b, 0xfe, 0x20, 0xd2, 0xd9, 0x0a, + 0xfe, 0x06, 0x38, 0x69, 0xfe, 0x18, 0x30, 0x65, 0x21, 0x0b, 0x0a, 0x5f, + 0x16, 0x00, 0x19, 0x5e, 0x19, 0xe5, 0xc3, 0x03, 0x0b, 0x4e, 0x57, 0x10, + 0x29, 0x54, 0x53, 0x52, 0x37, 0x50, 0x4f, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b, + 0x5a, 0x54, 0x53, 0x0c, 0x3e, 0x22, 0xb9, 0x20, 0x11, 0xfd, 0xcb, 0x01, + 0x4e, 0x20, 0x09, 0x04, 0x0e, 0x02, 0x3e, 0x18, 0xb8, 0x20, 0x03, 0x05, + 0x0e, 0x21, 0xc3, 0xd9, 0x0d, 0x3a, 0x91, 0x5c, 0xf5, 0xfd, 0x36, 0x57, + 0x01, 0x3e, 0x20, 0xcd, 0x65, 0x0b, 0xf1, 0x32, 0x91, 0x5c, 0xc9, 0xfd, + 0xcb, 0x01, 0x4e, 0xc2, 0xcd, 0x0e, 0x0e, 0x21, 0xcd, 0x55, 0x0c, 0x05, + 0xc3, 0xd9, 0x0d, 0xcd, 0x03, 0x0b, 0x79, 0x3d, 0x3d, 0xe6, 0x10, 0x18, + 0x5a, 0x3e, 0x3f, 0x18, 0x6c, 0x11, 0x87, 0x0a, 0x32, 0x0f, 0x5c, 0x18, + 0x0b, 0x11, 0x6d, 0x0a, 0x18, 0x03, 0x11, 0x87, 0x0a, 0x32, 0x0e, 0x5c, + 0x2a, 0x51, 0x5c, 0x73, 0x23, 0x72, 0xc9, 0x11, 0xf4, 0x09, 0xcd, 0x80, + 0x0a, 0x2a, 0x0e, 0x5c, 0x57, 0x7d, 0xfe, 0x16, 0xda, 0x11, 0x22, 0x20, + 0x29, 0x44, 0x4a, 0x3e, 0x1f, 0x91, 0x38, 0x0c, 0xc6, 0x02, 0x4f, 0xfd, + 0xcb, 0x01, 0x4e, 0x20, 0x16, 0x3e, 0x16, 0x90, 0xda, 0x9f, 0x1e, 0x3c, + 0x47, 0x04, 0xfd, 0xcb, 0x02, 0x46, 0xc2, 0x55, 0x0c, 0xfd, 0xbe, 0x31, + 0xda, 0x86, 0x0c, 0xc3, 0xd9, 0x0d, 0x7c, 0xcd, 0x03, 0x0b, 0x81, 0x3d, + 0xe6, 0x1f, 0xc8, 0x57, 0xfd, 0xcb, 0x01, 0xc6, 0x3e, 0x20, 0xcd, 0x3b, + 0x0c, 0x15, 0x20, 0xf8, 0xc9, 0xcd, 0x24, 0x0b, 0xfd, 0xcb, 0x01, 0x4e, + 0x20, 0x1a, 0xfd, 0xcb, 0x02, 0x46, 0x20, 0x08, 0xed, 0x43, 0x88, 0x5c, + 0x22, 0x84, 0x5c, 0xc9, 0xed, 0x43, 0x8a, 0x5c, 0xed, 0x43, 0x82, 0x5c, + 0x22, 0x86, 0x5c, 0xc9, 0xfd, 0x71, 0x45, 0x22, 0x80, 0x5c, 0xc9, 0xfd, + 0xcb, 0x01, 0x4e, 0x20, 0x14, 0xed, 0x4b, 0x88, 0x5c, 0x2a, 0x84, 0x5c, + 0xfd, 0xcb, 0x02, 0x46, 0xc8, 0xed, 0x4b, 0x8a, 0x5c, 0x2a, 0x86, 0x5c, + 0xc9, 0xfd, 0x4e, 0x45, 0x2a, 0x80, 0x5c, 0xc9, 0xfe, 0x80, 0x38, 0x3d, + 0xfe, 0x90, 0x30, 0x26, 0x47, 0xcd, 0x38, 0x0b, 0xcd, 0x03, 0x0b, 0x11, + 0x92, 0x5c, 0x18, 0x47, 0x21, 0x92, 0x5c, 0xcd, 0x3e, 0x0b, 0xcb, 0x18, + 0x9f, 0xe6, 0x0f, 0x4f, 0xcb, 0x18, 0x9f, 0xe6, 0xf0, 0xb1, 0x0e, 0x04, + 0x77, 0x23, 0x0d, 0x20, 0xfb, 0xc9, 0xd6, 0xa5, 0x30, 0x09, 0xc6, 0x15, + 0xc5, 0xed, 0x4b, 0x7b, 0x5c, 0x18, 0x0b, 0xcd, 0x10, 0x0c, 0xc3, 0x03, + 0x0b, 0xc5, 0xed, 0x4b, 0x36, 0x5c, 0xeb, 0x21, 0x3b, 0x5c, 0xcb, 0x86, + 0xfe, 0x20, 0x20, 0x02, 0xcb, 0xc6, 0x26, 0x00, 0x6f, 0x29, 0x29, 0x29, + 0x09, 0xc1, 0xeb, 0x79, 0x3d, 0x3e, 0x21, 0x20, 0x0e, 0x05, 0x4f, 0xfd, + 0xcb, 0x01, 0x4e, 0x28, 0x06, 0xd5, 0xcd, 0xcd, 0x0e, 0xd1, 0x79, 0xb9, + 0xd5, 0xcc, 0x55, 0x0c, 0xd1, 0xc5, 0xe5, 0x3a, 0x91, 0x5c, 0x06, 0xff, + 0x1f, 0x38, 0x01, 0x04, 0x1f, 0x1f, 0x9f, 0x4f, 0x3e, 0x08, 0xa7, 0xfd, + 0xcb, 0x01, 0x4e, 0x28, 0x05, 0xfd, 0xcb, 0x30, 0xce, 0x37, 0xeb, 0x08, + 0x1a, 0xa0, 0xae, 0xa9, 0x12, 0x08, 0x38, 0x13, 0x14, 0x23, 0x3d, 0x20, + 0xf2, 0xeb, 0x25, 0xfd, 0xcb, 0x01, 0x4e, 0xcc, 0xdb, 0x0b, 0xe1, 0xc1, + 0x0d, 0x23, 0xc9, 0x08, 0x3e, 0x20, 0x83, 0x5f, 0x08, 0x18, 0xe6, 0x7c, + 0x0f, 0x0f, 0x0f, 0xe6, 0x03, 0xf6, 0x58, 0x67, 0xed, 0x5b, 0x8f, 0x5c, + 0x7e, 0xab, 0xa2, 0xab, 0xfd, 0xcb, 0x57, 0x76, 0x28, 0x08, 0xe6, 0xc7, + 0xcb, 0x57, 0x20, 0x02, 0xee, 0x38, 0xfd, 0xcb, 0x57, 0x66, 0x28, 0x08, + 0xe6, 0xf8, 0xcb, 0x6f, 0x20, 0x02, 0xee, 0x07, 0x77, 0xc9, 0xe5, 0x26, + 0x00, 0xe3, 0x18, 0x04, 0x11, 0x95, 0x00, 0xf5, 0xcd, 0x41, 0x0c, 0x38, + 0x09, 0x3e, 0x20, 0xfd, 0xcb, 0x01, 0x46, 0xcc, 0x3b, 0x0c, 0x1a, 0xe6, + 0x7f, 0xcd, 0x3b, 0x0c, 0x1a, 0x13, 0x87, 0x30, 0xf5, 0xd1, 0xfe, 0x48, + 0x28, 0x03, 0xfe, 0x82, 0xd8, 0x7a, 0xfe, 0x03, 0xd8, 0x3e, 0x20, 0xd5, + 0xd9, 0xd7, 0xd9, 0xd1, 0xc9, 0xf5, 0xeb, 0x3c, 0xcb, 0x7e, 0x23, 0x28, + 0xfb, 0x3d, 0x20, 0xf8, 0xeb, 0xf1, 0xfe, 0x20, 0xd8, 0x1a, 0xd6, 0x41, + 0xc9, 0xfd, 0xcb, 0x01, 0x4e, 0xc0, 0x11, 0xd9, 0x0d, 0xd5, 0x78, 0xfd, + 0xcb, 0x02, 0x46, 0xc2, 0x02, 0x0d, 0xfd, 0xbe, 0x31, 0x38, 0x1b, 0xc0, + 0xfd, 0xcb, 0x02, 0x66, 0x28, 0x16, 0xfd, 0x5e, 0x2d, 0x1d, 0x28, 0x5a, + 0x3e, 0x00, 0xcd, 0x01, 0x16, 0xed, 0x7b, 0x3f, 0x5c, 0xfd, 0xcb, 0x02, + 0xa6, 0xc9, 0xcf, 0x04, 0xfd, 0x35, 0x52, 0x20, 0x45, 0x3e, 0x18, 0x90, + 0x32, 0x8c, 0x5c, 0x2a, 0x8f, 0x5c, 0xe5, 0x3a, 0x91, 0x5c, 0xf5, 0x3e, + 0xfd, 0xcd, 0x01, 0x16, 0xaf, 0x11, 0xf8, 0x0c, 0xcd, 0x0a, 0x0c, 0xfd, + 0xcb, 0x02, 0xee, 0x21, 0x3b, 0x5c, 0xcb, 0xde, 0xcb, 0xae, 0xd9, 0xcd, + 0xd4, 0x15, 0xd9, 0xfe, 0x20, 0x28, 0x45, 0xfe, 0xe2, 0x28, 0x41, 0xf6, + 0x20, 0xfe, 0x6e, 0x28, 0x3b, 0x3e, 0xfe, 0xcd, 0x01, 0x16, 0xf1, 0x32, + 0x91, 0x5c, 0xe1, 0x22, 0x8f, 0x5c, 0xcd, 0xfe, 0x0d, 0xfd, 0x46, 0x31, + 0x04, 0x0e, 0x21, 0xc5, 0xcd, 0x9b, 0x0e, 0x7c, 0x0f, 0x0f, 0x0f, 0xe6, + 0x03, 0xf6, 0x58, 0x67, 0x11, 0xe0, 0x5a, 0x1a, 0x4e, 0x06, 0x20, 0xeb, + 0x12, 0x71, 0x13, 0x23, 0x10, 0xfa, 0xc1, 0xc9, 0x80, 0x73, 0x63, 0x72, + 0x6f, 0x6c, 0x6c, 0xbf, 0xcf, 0x0c, 0xfe, 0x02, 0x38, 0x80, 0xfd, 0x86, + 0x31, 0xd6, 0x19, 0xd0, 0xed, 0x44, 0xc5, 0x47, 0x2a, 0x8f, 0x5c, 0xe5, + 0x2a, 0x91, 0x5c, 0xe5, 0xcd, 0x4d, 0x0d, 0x78, 0xf5, 0x21, 0x6b, 0x5c, + 0x46, 0x78, 0x3c, 0x77, 0x21, 0x89, 0x5c, 0xbe, 0x38, 0x03, 0x34, 0x06, + 0x18, 0xcd, 0x00, 0x0e, 0xf1, 0x3d, 0x20, 0xe8, 0xe1, 0xfd, 0x75, 0x57, + 0xe1, 0x22, 0x8f, 0x5c, 0xed, 0x4b, 0x88, 0x5c, 0xfd, 0xcb, 0x02, 0x86, + 0xcd, 0xd9, 0x0d, 0xfd, 0xcb, 0x02, 0xc6, 0xc1, 0xc9, 0xaf, 0x2a, 0x8d, + 0x5c, 0xfd, 0xcb, 0x02, 0x46, 0x28, 0x04, 0x67, 0xfd, 0x6e, 0x0e, 0x22, + 0x8f, 0x5c, 0x21, 0x91, 0x5c, 0x20, 0x02, 0x7e, 0x0f, 0xae, 0xe6, 0x55, + 0xae, 0x77, 0xc9, 0xcd, 0xaf, 0x0d, 0x21, 0x3c, 0x5c, 0xcb, 0xae, 0xcb, + 0xc6, 0xcd, 0x4d, 0x0d, 0xfd, 0x46, 0x31, 0xcd, 0x44, 0x0e, 0x21, 0xc0, + 0x5a, 0x3a, 0x8d, 0x5c, 0x05, 0x18, 0x07, 0x0e, 0x20, 0x2b, 0x77, 0x0d, + 0x20, 0xfb, 0x10, 0xf7, 0xfd, 0x36, 0x31, 0x02, 0x3e, 0xfd, 0xcd, 0x01, + 0x16, 0x2a, 0x51, 0x5c, 0x11, 0xf4, 0x09, 0xa7, 0x73, 0x23, 0x72, 0x23, + 0x11, 0xa8, 0x10, 0x3f, 0x38, 0xf6, 0x01, 0x21, 0x17, 0x18, 0x2a, 0x21, + 0x00, 0x00, 0x22, 0x7d, 0x5c, 0xfd, 0xcb, 0x30, 0x86, 0xcd, 0x94, 0x0d, + 0x3e, 0xfe, 0xcd, 0x01, 0x16, 0xcd, 0x4d, 0x0d, 0x06, 0x18, 0xcd, 0x44, + 0x0e, 0x2a, 0x51, 0x5c, 0x11, 0xf4, 0x09, 0x73, 0x23, 0x72, 0xfd, 0x36, + 0x52, 0x01, 0x01, 0x21, 0x18, 0x21, 0x00, 0x5b, 0xfd, 0xcb, 0x01, 0x4e, + 0x20, 0x12, 0x78, 0xfd, 0xcb, 0x02, 0x46, 0x28, 0x05, 0xfd, 0x86, 0x31, + 0xd6, 0x18, 0xc5, 0x47, 0xcd, 0x9b, 0x0e, 0xc1, 0x3e, 0x21, 0x91, 0x5f, + 0x16, 0x00, 0x19, 0xc3, 0xdc, 0x0a, 0x06, 0x17, 0xcd, 0x9b, 0x0e, 0x0e, + 0x08, 0xc5, 0xe5, 0x78, 0xe6, 0x07, 0x78, 0x20, 0x0c, 0xeb, 0x21, 0xe0, + 0xf8, 0x19, 0xeb, 0x01, 0x20, 0x00, 0x3d, 0xed, 0xb0, 0xeb, 0x21, 0xe0, + 0xff, 0x19, 0xeb, 0x47, 0xe6, 0x07, 0x0f, 0x0f, 0x0f, 0x4f, 0x78, 0x06, + 0x00, 0xed, 0xb0, 0x06, 0x07, 0x09, 0xe6, 0xf8, 0x20, 0xdb, 0xe1, 0x24, + 0xc1, 0x0d, 0x20, 0xcd, 0xcd, 0x88, 0x0e, 0x21, 0xe0, 0xff, 0x19, 0xeb, + 0xed, 0xb0, 0x06, 0x01, 0xc5, 0xcd, 0x9b, 0x0e, 0x0e, 0x08, 0xc5, 0xe5, + 0x78, 0xe6, 0x07, 0x0f, 0x0f, 0x0f, 0x4f, 0x78, 0x06, 0x00, 0x0d, 0x54, + 0x5d, 0x36, 0x00, 0x13, 0xed, 0xb0, 0x11, 0x01, 0x07, 0x19, 0x3d, 0xe6, + 0xf8, 0x47, 0x20, 0xe5, 0xe1, 0x24, 0xc1, 0x0d, 0x20, 0xdc, 0xcd, 0x88, + 0x0e, 0x62, 0x6b, 0x13, 0x3a, 0x8d, 0x5c, 0xfd, 0xcb, 0x02, 0x46, 0x28, + 0x03, 0x3a, 0x48, 0x5c, 0x77, 0x0b, 0xed, 0xb0, 0xc1, 0x0e, 0x21, 0xc9, + 0x7c, 0x0f, 0x0f, 0x0f, 0x3d, 0xf6, 0x50, 0x67, 0xeb, 0x61, 0x68, 0x29, + 0x29, 0x29, 0x29, 0x29, 0x44, 0x4d, 0xc9, 0x3e, 0x18, 0x90, 0x57, 0x0f, + 0x0f, 0x0f, 0xe6, 0xe0, 0x6f, 0x7a, 0xe6, 0x18, 0xf6, 0x40, 0x67, 0xc9, + 0xf3, 0x06, 0xb0, 0x21, 0x00, 0x40, 0xe5, 0xc5, 0xcd, 0xf4, 0x0e, 0xc1, + 0xe1, 0x24, 0x7c, 0xe6, 0x07, 0x20, 0x0a, 0x7d, 0xc6, 0x20, 0x6f, 0x3f, + 0x9f, 0xe6, 0xf8, 0x84, 0x67, 0x10, 0xe7, 0x18, 0x0d, 0xf3, 0x21, 0x00, + 0x5b, 0x06, 0x08, 0xc5, 0xcd, 0xf4, 0x0e, 0xc1, 0x10, 0xf9, 0x3e, 0x04, + 0xd3, 0xfb, 0xfb, 0x21, 0x00, 0x5b, 0xfd, 0x75, 0x46, 0xaf, 0x47, 0x77, + 0x23, 0x10, 0xfc, 0xfd, 0xcb, 0x30, 0x8e, 0x0e, 0x21, 0xc3, 0xd9, 0x0d, + 0x78, 0xfe, 0x03, 0x9f, 0xe6, 0x02, 0xd3, 0xfb, 0x57, 0xcd, 0x54, 0x1f, + 0x38, 0x0a, 0x3e, 0x04, 0xd3, 0xfb, 0xfb, 0xcd, 0xdf, 0x0e, 0xcf, 0x0c, + 0xdb, 0xfb, 0x87, 0xf8, 0x30, 0xeb, 0x0e, 0x20, 0x5e, 0x23, 0x06, 0x08, + 0xcb, 0x12, 0xcb, 0x13, 0xcb, 0x1a, 0xdb, 0xfb, 0x1f, 0x30, 0xfb, 0x7a, + 0xd3, 0xfb, 0x10, 0xf0, 0x0d, 0x20, 0xe9, 0xc9, 0x2a, 0x3d, 0x5c, 0xe5, + 0x21, 0x7f, 0x10, 0xe5, 0xed, 0x73, 0x3d, 0x5c, 0xcd, 0xd4, 0x15, 0xf5, + 0x16, 0x00, 0xfd, 0x5e, 0xff, 0x21, 0xc8, 0x00, 0xcd, 0xb5, 0x03, 0xf1, + 0x21, 0x38, 0x0f, 0xe5, 0xfe, 0x18, 0x30, 0x31, 0xfe, 0x07, 0x38, 0x2d, + 0xfe, 0x10, 0x38, 0x3a, 0x01, 0x02, 0x00, 0x57, 0xfe, 0x16, 0x38, 0x0c, + 0x03, 0xfd, 0xcb, 0x37, 0x7e, 0xca, 0x1e, 0x10, 0xcd, 0xd4, 0x15, 0x5f, + 0xcd, 0xd4, 0x15, 0xd5, 0x2a, 0x5b, 0x5c, 0xfd, 0xcb, 0x07, 0x86, 0xcd, + 0x55, 0x16, 0xc1, 0x23, 0x70, 0x23, 0x71, 0x18, 0x0a, 0xfd, 0xcb, 0x07, + 0x86, 0x2a, 0x5b, 0x5c, 0xcd, 0x52, 0x16, 0x12, 0x13, 0xed, 0x53, 0x5b, + 0x5c, 0xc9, 0x5f, 0x16, 0x00, 0x21, 0x99, 0x0f, 0x19, 0x5e, 0x19, 0xe5, + 0x2a, 0x5b, 0x5c, 0xc9, 0x09, 0x66, 0x6a, 0x50, 0xb5, 0x70, 0x7e, 0xcf, + 0xd4, 0x2a, 0x49, 0x5c, 0xfd, 0xcb, 0x37, 0x6e, 0xc2, 0x97, 0x10, 0xcd, + 0x6e, 0x19, 0xcd, 0x95, 0x16, 0x7a, 0xb3, 0xca, 0x97, 0x10, 0xe5, 0x23, + 0x4e, 0x23, 0x46, 0x21, 0x0a, 0x00, 0x09, 0x44, 0x4d, 0xcd, 0x05, 0x1f, + 0xcd, 0x97, 0x10, 0x2a, 0x51, 0x5c, 0xe3, 0xe5, 0x3e, 0xff, 0xcd, 0x01, + 0x16, 0xe1, 0x2b, 0xfd, 0x35, 0x0f, 0xcd, 0x55, 0x18, 0xfd, 0x34, 0x0f, + 0x2a, 0x59, 0x5c, 0x23, 0x23, 0x23, 0x23, 0x22, 0x5b, 0x5c, 0xe1, 0xcd, + 0x15, 0x16, 0xc9, 0xfd, 0xcb, 0x37, 0x6e, 0x20, 0x08, 0x21, 0x49, 0x5c, + 0xcd, 0x0f, 0x19, 0x18, 0x6d, 0xfd, 0x36, 0x00, 0x10, 0x18, 0x1d, 0xcd, + 0x31, 0x10, 0x18, 0x05, 0x7e, 0xfe, 0x0d, 0xc8, 0x23, 0x22, 0x5b, 0x5c, + 0xc9, 0xcd, 0x31, 0x10, 0x01, 0x01, 0x00, 0xc3, 0xe8, 0x19, 0xcd, 0xd4, + 0x15, 0xcd, 0xd4, 0x15, 0xe1, 0xe1, 0xe1, 0x22, 0x3d, 0x5c, 0xfd, 0xcb, + 0x00, 0x7e, 0xc0, 0xf9, 0xc9, 0x37, 0xcd, 0x95, 0x11, 0xed, 0x52, 0x19, + 0x23, 0xc1, 0xd8, 0xc5, 0x44, 0x4d, 0x62, 0x6b, 0x23, 0x1a, 0xe6, 0xf0, + 0xfe, 0x10, 0x20, 0x09, 0x23, 0x1a, 0xd6, 0x17, 0xce, 0x00, 0x20, 0x01, + 0x23, 0xa7, 0xed, 0x42, 0x09, 0xeb, 0x38, 0xe6, 0xc9, 0xfd, 0xcb, 0x37, + 0x6e, 0xc0, 0x2a, 0x49, 0x5c, 0xcd, 0x6e, 0x19, 0xeb, 0xcd, 0x95, 0x16, + 0x21, 0x4a, 0x5c, 0xcd, 0x1c, 0x19, 0xcd, 0x95, 0x17, 0x3e, 0x00, 0xc3, + 0x01, 0x16, 0xfd, 0xcb, 0x37, 0x7e, 0x28, 0xa8, 0xc3, 0x81, 0x0f, 0xfd, + 0xcb, 0x30, 0x66, 0x28, 0xa1, 0xfd, 0x36, 0x00, 0xff, 0x16, 0x00, 0xfd, + 0x5e, 0xfe, 0x21, 0x90, 0x1a, 0xcd, 0xb5, 0x03, 0xc3, 0x30, 0x0f, 0xe5, + 0xcd, 0x90, 0x11, 0x2b, 0xcd, 0xe5, 0x19, 0x22, 0x5b, 0x5c, 0xfd, 0x36, + 0x07, 0x00, 0xe1, 0xc9, 0xfd, 0xcb, 0x02, 0x5e, 0xc4, 0x1d, 0x11, 0xa7, + 0xfd, 0xcb, 0x01, 0x6e, 0xc8, 0x3a, 0x08, 0x5c, 0xfd, 0xcb, 0x01, 0xae, + 0xf5, 0xfd, 0xcb, 0x02, 0x6e, 0xc4, 0x6e, 0x0d, 0xf1, 0xfe, 0x20, 0x30, + 0x52, 0xfe, 0x10, 0x30, 0x2d, 0xfe, 0x06, 0x30, 0x0a, 0x47, 0xe6, 0x01, + 0x4f, 0x78, 0x1f, 0xc6, 0x12, 0x18, 0x2a, 0x20, 0x09, 0x21, 0x6a, 0x5c, + 0x3e, 0x08, 0xae, 0x77, 0x18, 0x0e, 0xfe, 0x0e, 0xd8, 0xd6, 0x0d, 0x21, + 0x41, 0x5c, 0xbe, 0x77, 0x20, 0x02, 0x36, 0x00, 0xfd, 0xcb, 0x02, 0xde, + 0xbf, 0xc9, 0x47, 0xe6, 0x07, 0x4f, 0x3e, 0x10, 0xcb, 0x58, 0x20, 0x01, + 0x3c, 0xfd, 0x71, 0xd3, 0x11, 0x0d, 0x11, 0x18, 0x06, 0x3a, 0x0d, 0x5c, + 0x11, 0xa8, 0x10, 0x2a, 0x4f, 0x5c, 0x23, 0x23, 0x73, 0x23, 0x72, 0x37, + 0xc9, 0xcd, 0x4d, 0x0d, 0xfd, 0xcb, 0x02, 0x9e, 0xfd, 0xcb, 0x02, 0xae, + 0x2a, 0x8a, 0x5c, 0xe5, 0x2a, 0x3d, 0x5c, 0xe5, 0x21, 0x67, 0x11, 0xe5, + 0xed, 0x73, 0x3d, 0x5c, 0x2a, 0x82, 0x5c, 0xe5, 0x37, 0xcd, 0x95, 0x11, + 0xeb, 0xcd, 0x7d, 0x18, 0xeb, 0xcd, 0xe1, 0x18, 0x2a, 0x8a, 0x5c, 0xe3, + 0xeb, 0xcd, 0x4d, 0x0d, 0x3a, 0x8b, 0x5c, 0x92, 0x38, 0x26, 0x20, 0x06, + 0x7b, 0xfd, 0x96, 0x50, 0x30, 0x1e, 0x3e, 0x20, 0xd5, 0xcd, 0xf4, 0x09, + 0xd1, 0x18, 0xe9, 0x16, 0x00, 0xfd, 0x5e, 0xfe, 0x21, 0x90, 0x1a, 0xcd, + 0xb5, 0x03, 0xfd, 0x36, 0x00, 0xff, 0xed, 0x5b, 0x8a, 0x5c, 0x18, 0x02, + 0xd1, 0xe1, 0xe1, 0x22, 0x3d, 0x5c, 0xc1, 0xd5, 0xcd, 0xd9, 0x0d, 0xe1, + 0x22, 0x82, 0x5c, 0xfd, 0x36, 0x26, 0x00, 0xc9, 0x2a, 0x61, 0x5c, 0x2b, + 0xa7, 0xed, 0x5b, 0x59, 0x5c, 0xfd, 0xcb, 0x37, 0x6e, 0xc8, 0xed, 0x5b, + 0x61, 0x5c, 0xd8, 0x2a, 0x63, 0x5c, 0xc9, 0x7e, 0xfe, 0x0e, 0x01, 0x06, + 0x00, 0xcc, 0xe8, 0x19, 0x7e, 0x23, 0xfe, 0x0d, 0x20, 0xf1, 0xc9, 0xf3, + 0x3e, 0xff, 0xed, 0x5b, 0xb2, 0x5c, 0xd9, 0xed, 0x4b, 0xb4, 0x5c, 0xed, + 0x5b, 0x38, 0x5c, 0x2a, 0x7b, 0x5c, 0xd9, 0x47, 0x3e, 0x07, 0xd3, 0xfe, + 0x3e, 0x3f, 0xed, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6b, + 0x36, 0x02, 0x2b, 0xbc, 0x20, 0xfa, 0xa7, 0xed, 0x52, 0x19, 0x23, 0x30, + 0x06, 0x35, 0x28, 0x03, 0x35, 0x28, 0xf3, 0x2b, 0xd9, 0xed, 0x43, 0xb4, + 0x5c, 0xed, 0x53, 0x38, 0x5c, 0x22, 0x7b, 0x5c, 0xd9, 0x04, 0x28, 0x19, + 0x22, 0xb4, 0x5c, 0x11, 0xaf, 0x3e, 0x01, 0xa8, 0x00, 0xeb, 0xed, 0xb8, + 0xeb, 0x23, 0x22, 0x7b, 0x5c, 0x2b, 0x01, 0x40, 0x00, 0xed, 0x43, 0x38, + 0x5c, 0x22, 0xb2, 0x5c, 0x21, 0x00, 0x3c, 0x22, 0x36, 0x5c, 0x2a, 0xb2, + 0x5c, 0x36, 0x3e, 0x2b, 0xf9, 0x2b, 0x2b, 0x22, 0x3d, 0x5c, 0xed, 0x56, + 0xfd, 0x21, 0x3a, 0x5c, 0xfb, 0x21, 0xb6, 0x5c, 0x22, 0x4f, 0x5c, 0x11, + 0xaf, 0x15, 0x01, 0x15, 0x00, 0xeb, 0xed, 0xb0, 0xeb, 0x2b, 0x22, 0x57, + 0x5c, 0x23, 0x22, 0x53, 0x5c, 0x22, 0x4b, 0x5c, 0x36, 0x80, 0x23, 0x22, + 0x59, 0x5c, 0x36, 0x0d, 0x23, 0x36, 0x80, 0x23, 0x22, 0x61, 0x5c, 0x22, + 0x63, 0x5c, 0x22, 0x65, 0x5c, 0x3e, 0x38, 0x32, 0x8d, 0x5c, 0x32, 0x8f, + 0x5c, 0x32, 0x48, 0x5c, 0x21, 0x23, 0x05, 0x22, 0x09, 0x5c, 0xfd, 0x35, + 0xc6, 0xfd, 0x35, 0xca, 0x21, 0xc6, 0x15, 0x11, 0x10, 0x5c, 0x01, 0x0e, + 0x00, 0xed, 0xb0, 0xfd, 0xcb, 0x01, 0xce, 0xcd, 0xdf, 0x0e, 0xfd, 0x36, + 0x31, 0x02, 0xcd, 0x6b, 0x0d, 0xaf, 0x11, 0x38, 0x15, 0xcd, 0x0a, 0x0c, + 0xfd, 0xcb, 0x02, 0xee, 0x18, 0x07, 0xfd, 0x36, 0x31, 0x02, 0xcd, 0x95, + 0x17, 0xcd, 0xb0, 0x16, 0x3e, 0x00, 0xcd, 0x01, 0x16, 0xcd, 0x2c, 0x0f, + 0xcd, 0x17, 0x1b, 0xfd, 0xcb, 0x00, 0x7e, 0x20, 0x12, 0xfd, 0xcb, 0x30, + 0x66, 0x28, 0x40, 0x2a, 0x59, 0x5c, 0xcd, 0xa7, 0x11, 0xfd, 0x36, 0x00, + 0xff, 0x18, 0xdd, 0x2a, 0x59, 0x5c, 0x22, 0x5d, 0x5c, 0xcd, 0xfb, 0x19, + 0x78, 0xb1, 0xc2, 0x5d, 0x15, 0xdf, 0xfe, 0x0d, 0x28, 0xc0, 0xfd, 0xcb, + 0x30, 0x46, 0xc4, 0xaf, 0x0d, 0xcd, 0x6e, 0x0d, 0x3e, 0x19, 0xfd, 0x96, + 0x4f, 0x32, 0x8c, 0x5c, 0xfd, 0xcb, 0x01, 0xfe, 0xfd, 0x36, 0x00, 0xff, + 0xfd, 0x36, 0x0a, 0x01, 0xcd, 0x8a, 0x1b, 0x76, 0xfd, 0xcb, 0x01, 0xae, + 0xfd, 0xcb, 0x30, 0x4e, 0xc4, 0xcd, 0x0e, 0x3a, 0x3a, 0x5c, 0x3c, 0xf5, + 0x21, 0x00, 0x00, 0xfd, 0x74, 0x37, 0xfd, 0x74, 0x26, 0x22, 0x0b, 0x5c, + 0x21, 0x01, 0x00, 0x22, 0x16, 0x5c, 0xcd, 0xb0, 0x16, 0xfd, 0xcb, 0x37, + 0xae, 0xcd, 0x6e, 0x0d, 0xfd, 0xcb, 0x02, 0xee, 0xf1, 0x47, 0xfe, 0x0a, + 0x38, 0x02, 0xc6, 0x07, 0xcd, 0xef, 0x15, 0x3e, 0x20, 0xd7, 0x78, 0x11, + 0x91, 0x13, 0xcd, 0x0a, 0x0c, 0xaf, 0x11, 0x36, 0x15, 0xcd, 0x0a, 0x0c, + 0xed, 0x4b, 0x45, 0x5c, 0xcd, 0x1b, 0x1a, 0x3e, 0x3a, 0xd7, 0xfd, 0x4e, + 0x0d, 0x06, 0x00, 0xcd, 0x1b, 0x1a, 0xcd, 0x97, 0x10, 0x3a, 0x3a, 0x5c, + 0x3c, 0x28, 0x1b, 0xfe, 0x09, 0x28, 0x04, 0xfe, 0x15, 0x20, 0x03, 0xfd, + 0x34, 0x0d, 0x01, 0x03, 0x00, 0x11, 0x70, 0x5c, 0x21, 0x44, 0x5c, 0xcb, + 0x7e, 0x28, 0x01, 0x09, 0xed, 0xb8, 0xfd, 0x36, 0x0a, 0xff, 0xfd, 0xcb, + 0x01, 0x9e, 0xc3, 0xac, 0x12, 0x80, 0x4f, 0xcb, 0x4e, 0x45, 0x58, 0x54, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x46, 0x4f, 0xd2, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x66, 0x6f, 0x75, 0x6e, 0xe4, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x20, 0x77, 0x72, 0x6f, 0x6e, 0xe7, 0x4f, 0x75, 0x74, + 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0xf9, 0x4f, 0x75, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0xee, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6f, 0x20, 0x62, 0x69, + 0xe7, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x20, 0x47, 0x4f, 0x53, 0x55, 0xc2, 0x45, 0x6e, 0x64, + 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, 0xe5, 0x53, 0x54, 0x4f, 0x50, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0xf4, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0xf4, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6f, 0x75, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x61, 0x6e, 0x67, 0xe5, 0x4e, 0x6f, + 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x42, 0x41, + 0x53, 0x49, 0xc3, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x20, 0x2d, 0x20, 0x43, + 0x4f, 0x4e, 0x54, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xf3, 0x4f, + 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x41, 0x54, 0xc1, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, + 0x61, 0x6d, 0xe5, 0x4e, 0x6f, 0x20, 0x72, 0x6f, 0x6f, 0x6d, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0xe5, 0x53, 0x54, 0x4f, 0x50, 0x20, + 0x69, 0x6e, 0x20, 0x49, 0x4e, 0x50, 0x55, 0xd4, 0x46, 0x4f, 0x52, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x4e, 0x45, 0x58, 0xd4, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x49, 0x2f, 0x4f, 0x20, + 0x64, 0x65, 0x76, 0x69, 0x63, 0xe5, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0xf2, 0x42, 0x52, 0x45, 0x41, + 0x4b, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0xed, 0x52, 0x41, 0x4d, 0x54, 0x4f, 0x50, 0x20, 0x6e, 0x6f, 0x20, + 0x67, 0x6f, 0x6f, 0xe4, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x20, 0x6c, 0x6f, 0x73, 0xf4, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0xed, 0x46, 0x4e, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x45, 0xc6, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0xf2, 0x54, 0x61, 0x70, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x20, 0x65, 0x72, 0x72, 0x6f, 0xf2, 0x2c, 0xa0, 0x7f, 0x20, 0x31, + 0x39, 0x38, 0x32, 0x20, 0x53, 0x69, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x72, + 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x4c, 0x74, + 0xe4, 0x3e, 0x10, 0x01, 0x00, 0x00, 0xc3, 0x13, 0x13, 0xed, 0x43, 0x49, + 0x5c, 0x2a, 0x5d, 0x5c, 0xeb, 0x21, 0x55, 0x15, 0xe5, 0x2a, 0x61, 0x5c, + 0x37, 0xed, 0x52, 0xe5, 0x60, 0x69, 0xcd, 0x6e, 0x19, 0x20, 0x06, 0xcd, + 0xb8, 0x19, 0xcd, 0xe8, 0x19, 0xc1, 0x79, 0x3d, 0xb0, 0x28, 0x28, 0xc5, + 0x03, 0x03, 0x03, 0x03, 0x2b, 0xed, 0x5b, 0x53, 0x5c, 0xd5, 0xcd, 0x55, + 0x16, 0xe1, 0x22, 0x53, 0x5c, 0xc1, 0xc5, 0x13, 0x2a, 0x61, 0x5c, 0x2b, + 0x2b, 0xed, 0xb8, 0x2a, 0x49, 0x5c, 0xeb, 0xc1, 0x70, 0x2b, 0x71, 0x2b, + 0x73, 0x2b, 0x72, 0xf1, 0xc3, 0xa2, 0x12, 0xf4, 0x09, 0xa8, 0x10, 0x4b, + 0xf4, 0x09, 0xc4, 0x15, 0x53, 0x81, 0x0f, 0xc4, 0x15, 0x52, 0xf4, 0x09, + 0xc4, 0x15, 0x50, 0x80, 0xcf, 0x12, 0x01, 0x00, 0x06, 0x00, 0x0b, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x10, 0x00, 0xfd, 0xcb, 0x02, 0x6e, + 0x20, 0x04, 0xfd, 0xcb, 0x02, 0xde, 0xcd, 0xe6, 0x15, 0xd8, 0x28, 0xfa, + 0xcf, 0x07, 0xd9, 0xe5, 0x2a, 0x51, 0x5c, 0x23, 0x23, 0x18, 0x08, 0x1e, + 0x30, 0x83, 0xd9, 0xe5, 0x2a, 0x51, 0x5c, 0x5e, 0x23, 0x56, 0xeb, 0xcd, + 0x2c, 0x16, 0xe1, 0xd9, 0xc9, 0x87, 0xc6, 0x16, 0x6f, 0x26, 0x5c, 0x5e, + 0x23, 0x56, 0x7a, 0xb3, 0x20, 0x02, 0xcf, 0x17, 0x1b, 0x2a, 0x4f, 0x5c, + 0x19, 0x22, 0x51, 0x5c, 0xfd, 0xcb, 0x30, 0xa6, 0x23, 0x23, 0x23, 0x23, + 0x4e, 0x21, 0x2d, 0x16, 0xcd, 0xdc, 0x16, 0xd0, 0x16, 0x00, 0x5e, 0x19, + 0xe9, 0x4b, 0x06, 0x53, 0x12, 0x50, 0x1b, 0x00, 0xfd, 0xcb, 0x02, 0xc6, + 0xfd, 0xcb, 0x01, 0xae, 0xfd, 0xcb, 0x30, 0xe6, 0x18, 0x04, 0xfd, 0xcb, + 0x02, 0x86, 0xfd, 0xcb, 0x01, 0x8e, 0xc3, 0x4d, 0x0d, 0xfd, 0xcb, 0x01, + 0xce, 0xc9, 0x01, 0x01, 0x00, 0xe5, 0xcd, 0x05, 0x1f, 0xe1, 0xcd, 0x64, + 0x16, 0x2a, 0x65, 0x5c, 0xeb, 0xed, 0xb8, 0xc9, 0xf5, 0xe5, 0x21, 0x4b, + 0x5c, 0x3e, 0x0e, 0x5e, 0x23, 0x56, 0xe3, 0xa7, 0xed, 0x52, 0x19, 0xe3, + 0x30, 0x09, 0xd5, 0xeb, 0x09, 0xeb, 0x72, 0x2b, 0x73, 0x23, 0xd1, 0x23, + 0x3d, 0x20, 0xe8, 0xeb, 0xd1, 0xf1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x03, + 0x19, 0xeb, 0xc9, 0x00, 0x00, 0xeb, 0x11, 0x8f, 0x16, 0x7e, 0xe6, 0xc0, + 0x20, 0xf7, 0x56, 0x23, 0x5e, 0xc9, 0x2a, 0x63, 0x5c, 0x2b, 0xcd, 0x55, + 0x16, 0x23, 0x23, 0xc1, 0xed, 0x43, 0x61, 0x5c, 0xc1, 0xeb, 0x23, 0xc9, + 0x2a, 0x59, 0x5c, 0x36, 0x0d, 0x22, 0x5b, 0x5c, 0x23, 0x36, 0x80, 0x23, + 0x22, 0x61, 0x5c, 0x2a, 0x61, 0x5c, 0x22, 0x63, 0x5c, 0x2a, 0x63, 0x5c, + 0x22, 0x65, 0x5c, 0xe5, 0x21, 0x92, 0x5c, 0x22, 0x68, 0x5c, 0xe1, 0xc9, + 0xed, 0x5b, 0x59, 0x5c, 0xc3, 0xe5, 0x19, 0x23, 0x7e, 0xa7, 0xc8, 0xb9, + 0x23, 0x20, 0xf8, 0x37, 0xc9, 0xcd, 0x1e, 0x17, 0xcd, 0x01, 0x17, 0x01, + 0x00, 0x00, 0x11, 0xe2, 0xa3, 0xeb, 0x19, 0x38, 0x07, 0x01, 0xd4, 0x15, + 0x09, 0x4e, 0x23, 0x46, 0xeb, 0x71, 0x23, 0x70, 0xc9, 0xe5, 0x2a, 0x4f, + 0x5c, 0x09, 0x23, 0x23, 0x23, 0x4e, 0xeb, 0x21, 0x16, 0x17, 0xcd, 0xdc, + 0x16, 0x4e, 0x06, 0x00, 0x09, 0xe9, 0x4b, 0x05, 0x53, 0x03, 0x50, 0x01, + 0xe1, 0xc9, 0xcd, 0x94, 0x1e, 0xfe, 0x10, 0x38, 0x02, 0xcf, 0x17, 0xc6, + 0x03, 0x07, 0x21, 0x10, 0x5c, 0x4f, 0x06, 0x00, 0x09, 0x4e, 0x23, 0x46, + 0x2b, 0xc9, 0xef, 0x01, 0x38, 0xcd, 0x1e, 0x17, 0x78, 0xb1, 0x28, 0x16, + 0xeb, 0x2a, 0x4f, 0x5c, 0x09, 0x23, 0x23, 0x23, 0x7e, 0xeb, 0xfe, 0x4b, + 0x28, 0x08, 0xfe, 0x53, 0x28, 0x04, 0xfe, 0x50, 0x20, 0xcf, 0xcd, 0x5d, + 0x17, 0x73, 0x23, 0x72, 0xc9, 0xe5, 0xcd, 0xf1, 0x2b, 0x78, 0xb1, 0x20, + 0x02, 0xcf, 0x0e, 0xc5, 0x1a, 0xe6, 0xdf, 0x4f, 0x21, 0x7a, 0x17, 0xcd, + 0xdc, 0x16, 0x30, 0xf1, 0x4e, 0x06, 0x00, 0x09, 0xc1, 0xe9, 0x4b, 0x06, + 0x53, 0x08, 0x50, 0x0a, 0x00, 0x1e, 0x01, 0x18, 0x06, 0x1e, 0x06, 0x18, + 0x02, 0x1e, 0x10, 0x0b, 0x78, 0xb1, 0x20, 0xd5, 0x57, 0xe1, 0xc9, 0x18, + 0x90, 0xed, 0x73, 0x3f, 0x5c, 0xfd, 0x36, 0x02, 0x10, 0xcd, 0xaf, 0x0d, + 0xfd, 0xcb, 0x02, 0xc6, 0xfd, 0x46, 0x31, 0xcd, 0x44, 0x0e, 0xfd, 0xcb, + 0x02, 0x86, 0xfd, 0xcb, 0x30, 0xc6, 0x2a, 0x49, 0x5c, 0xed, 0x5b, 0x6c, + 0x5c, 0xa7, 0xed, 0x52, 0x19, 0x38, 0x22, 0xd5, 0xcd, 0x6e, 0x19, 0x11, + 0xc0, 0x02, 0xeb, 0xed, 0x52, 0xe3, 0xcd, 0x6e, 0x19, 0xc1, 0xc5, 0xcd, + 0xb8, 0x19, 0xc1, 0x09, 0x38, 0x0e, 0xeb, 0x56, 0x23, 0x5e, 0x2b, 0xed, + 0x53, 0x6c, 0x5c, 0x18, 0xed, 0x22, 0x6c, 0x5c, 0x2a, 0x6c, 0x5c, 0xcd, + 0x6e, 0x19, 0x28, 0x01, 0xeb, 0xcd, 0x33, 0x18, 0xfd, 0xcb, 0x02, 0xa6, + 0xc9, 0x3e, 0x03, 0x18, 0x02, 0x3e, 0x02, 0xfd, 0x36, 0x02, 0x00, 0xcd, + 0x30, 0x25, 0xc4, 0x01, 0x16, 0xdf, 0xcd, 0x70, 0x20, 0x38, 0x14, 0xdf, + 0xfe, 0x3b, 0x28, 0x04, 0xfe, 0x2c, 0x20, 0x06, 0xe7, 0xcd, 0x82, 0x1c, + 0x18, 0x08, 0xcd, 0xe6, 0x1c, 0x18, 0x03, 0xcd, 0xde, 0x1c, 0xcd, 0xee, + 0x1b, 0xcd, 0x99, 0x1e, 0x78, 0xe6, 0x3f, 0x67, 0x69, 0x22, 0x49, 0x5c, + 0xcd, 0x6e, 0x19, 0x1e, 0x01, 0xcd, 0x55, 0x18, 0xd7, 0xfd, 0xcb, 0x02, + 0x66, 0x28, 0xf6, 0x3a, 0x6b, 0x5c, 0xfd, 0x96, 0x4f, 0x20, 0xee, 0xab, + 0xc8, 0xe5, 0xd5, 0x21, 0x6c, 0x5c, 0xcd, 0x0f, 0x19, 0xd1, 0xe1, 0x18, + 0xe0, 0xed, 0x4b, 0x49, 0x5c, 0xcd, 0x80, 0x19, 0x16, 0x3e, 0x28, 0x05, + 0x11, 0x00, 0x00, 0xcb, 0x13, 0xfd, 0x73, 0x2d, 0x7e, 0xfe, 0x40, 0xc1, + 0xd0, 0xc5, 0xcd, 0x28, 0x1a, 0x23, 0x23, 0x23, 0xfd, 0xcb, 0x01, 0x86, + 0x7a, 0xa7, 0x28, 0x05, 0xd7, 0xfd, 0xcb, 0x01, 0xc6, 0xd5, 0xeb, 0xfd, + 0xcb, 0x30, 0x96, 0x21, 0x3b, 0x5c, 0xcb, 0x96, 0xfd, 0xcb, 0x37, 0x6e, + 0x28, 0x02, 0xcb, 0xd6, 0x2a, 0x5f, 0x5c, 0xa7, 0xed, 0x52, 0x20, 0x05, + 0x3e, 0x3f, 0xcd, 0xc1, 0x18, 0xcd, 0xe1, 0x18, 0xeb, 0x7e, 0xcd, 0xb6, + 0x18, 0x23, 0xfe, 0x0d, 0x28, 0x06, 0xeb, 0xcd, 0x37, 0x19, 0x18, 0xe0, + 0xd1, 0xc9, 0xfe, 0x0e, 0xc0, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x7e, + 0xc9, 0xd9, 0x2a, 0x8f, 0x5c, 0xe5, 0xcb, 0xbc, 0xcb, 0xfd, 0x22, 0x8f, + 0x5c, 0x21, 0x91, 0x5c, 0x56, 0xd5, 0x36, 0x00, 0xcd, 0xf4, 0x09, 0xe1, + 0xfd, 0x74, 0x57, 0xe1, 0x22, 0x8f, 0x5c, 0xd9, 0xc9, 0x2a, 0x5b, 0x5c, + 0xa7, 0xed, 0x52, 0xc0, 0x3a, 0x41, 0x5c, 0xcb, 0x07, 0x28, 0x04, 0xc6, + 0x43, 0x18, 0x16, 0x21, 0x3b, 0x5c, 0xcb, 0x9e, 0x3e, 0x4b, 0xcb, 0x56, + 0x28, 0x0b, 0xcb, 0xde, 0x3c, 0xfd, 0xcb, 0x30, 0x5e, 0x28, 0x02, 0x3e, + 0x43, 0xd5, 0xcd, 0xc1, 0x18, 0xd1, 0xc9, 0x5e, 0x23, 0x56, 0xe5, 0xeb, + 0x23, 0xcd, 0x6e, 0x19, 0xcd, 0x95, 0x16, 0xe1, 0xfd, 0xcb, 0x37, 0x6e, + 0xc0, 0x72, 0x2b, 0x73, 0xc9, 0x7b, 0xa7, 0xf8, 0x18, 0x0d, 0xaf, 0x09, + 0x3c, 0x38, 0xfc, 0xed, 0x42, 0x3d, 0x28, 0xf1, 0xc3, 0xef, 0x15, 0xcd, + 0x1b, 0x2d, 0x30, 0x30, 0xfe, 0x21, 0x38, 0x2c, 0xfd, 0xcb, 0x01, 0x96, + 0xfe, 0xcb, 0x28, 0x24, 0xfe, 0x3a, 0x20, 0x0e, 0xfd, 0xcb, 0x37, 0x6e, + 0x20, 0x16, 0xfd, 0xcb, 0x30, 0x56, 0x28, 0x14, 0x18, 0x0e, 0xfe, 0x22, + 0x20, 0x0a, 0xf5, 0x3a, 0x6a, 0x5c, 0xee, 0x04, 0x32, 0x6a, 0x5c, 0xf1, + 0xfd, 0xcb, 0x01, 0xd6, 0xd7, 0xc9, 0xe5, 0x2a, 0x53, 0x5c, 0x54, 0x5d, + 0xc1, 0xcd, 0x80, 0x19, 0xd0, 0xc5, 0xcd, 0xb8, 0x19, 0xeb, 0x18, 0xf4, + 0x7e, 0xb8, 0xc0, 0x23, 0x7e, 0x2b, 0xb9, 0xc9, 0x23, 0x23, 0x23, 0x22, + 0x5d, 0x5c, 0x0e, 0x00, 0x15, 0xc8, 0xe7, 0xbb, 0x20, 0x04, 0xa7, 0xc9, + 0x23, 0x7e, 0xcd, 0xb6, 0x18, 0x22, 0x5d, 0x5c, 0xfe, 0x22, 0x20, 0x01, + 0x0d, 0xfe, 0x3a, 0x28, 0x04, 0xfe, 0xcb, 0x20, 0x04, 0xcb, 0x41, 0x28, + 0xdf, 0xfe, 0x0d, 0x20, 0xe3, 0x15, 0x37, 0xc9, 0xe5, 0x7e, 0xfe, 0x40, + 0x38, 0x17, 0xcb, 0x6f, 0x28, 0x14, 0x87, 0xfa, 0xc7, 0x19, 0x3f, 0x01, + 0x05, 0x00, 0x30, 0x02, 0x0e, 0x12, 0x17, 0x23, 0x7e, 0x30, 0xfb, 0x18, + 0x06, 0x23, 0x23, 0x4e, 0x23, 0x46, 0x23, 0x09, 0xd1, 0xa7, 0xed, 0x52, + 0x44, 0x4d, 0x19, 0xeb, 0xc9, 0xcd, 0xdd, 0x19, 0xc5, 0x78, 0x2f, 0x47, + 0x79, 0x2f, 0x4f, 0x03, 0xcd, 0x64, 0x16, 0xeb, 0xe1, 0x19, 0xd5, 0xed, + 0xb0, 0xe1, 0xc9, 0x2a, 0x59, 0x5c, 0x2b, 0x22, 0x5d, 0x5c, 0xe7, 0x21, + 0x92, 0x5c, 0x22, 0x65, 0x5c, 0xcd, 0x3b, 0x2d, 0xcd, 0xa2, 0x2d, 0x38, + 0x04, 0x21, 0xf0, 0xd8, 0x09, 0xda, 0x8a, 0x1c, 0xc3, 0xc5, 0x16, 0xd5, + 0xe5, 0xaf, 0xcb, 0x78, 0x20, 0x20, 0x60, 0x69, 0x1e, 0xff, 0x18, 0x08, + 0xd5, 0x56, 0x23, 0x5e, 0xe5, 0xeb, 0x1e, 0x20, 0x01, 0x18, 0xfc, 0xcd, + 0x2a, 0x19, 0x01, 0x9c, 0xff, 0xcd, 0x2a, 0x19, 0x0e, 0xf6, 0xcd, 0x2a, + 0x19, 0x7d, 0xcd, 0xef, 0x15, 0xe1, 0xd1, 0xc9, 0xb1, 0xcb, 0xbc, 0xbf, + 0xc4, 0xaf, 0xb4, 0x93, 0x91, 0x92, 0x95, 0x98, 0x98, 0x98, 0x98, 0x98, + 0x98, 0x98, 0x7f, 0x81, 0x2e, 0x6c, 0x6e, 0x70, 0x48, 0x94, 0x56, 0x3f, + 0x41, 0x2b, 0x17, 0x1f, 0x37, 0x77, 0x44, 0x0f, 0x59, 0x2b, 0x43, 0x2d, + 0x51, 0x3a, 0x6d, 0x42, 0x0d, 0x49, 0x5c, 0x44, 0x15, 0x5d, 0x01, 0x3d, + 0x02, 0x06, 0x00, 0x67, 0x1e, 0x06, 0xcb, 0x05, 0xf0, 0x1c, 0x06, 0x00, + 0xed, 0x1e, 0x00, 0xee, 0x1c, 0x00, 0x23, 0x1f, 0x04, 0x3d, 0x06, 0xcc, + 0x06, 0x05, 0x03, 0x1d, 0x04, 0x00, 0xab, 0x1d, 0x05, 0xcd, 0x1f, 0x05, + 0x89, 0x20, 0x05, 0x02, 0x2c, 0x05, 0xb2, 0x1b, 0x00, 0xb7, 0x11, 0x03, + 0xa1, 0x1e, 0x05, 0xf9, 0x17, 0x08, 0x00, 0x80, 0x1e, 0x03, 0x4f, 0x1e, + 0x00, 0x5f, 0x1e, 0x03, 0xac, 0x1e, 0x00, 0x6b, 0x0d, 0x09, 0x00, 0xdc, + 0x22, 0x06, 0x00, 0x3a, 0x1f, 0x05, 0xed, 0x1d, 0x05, 0x27, 0x1e, 0x03, + 0x42, 0x1e, 0x09, 0x05, 0x82, 0x23, 0x00, 0xac, 0x0e, 0x05, 0xc9, 0x1f, + 0x05, 0xf5, 0x17, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x00, 0xf8, 0x03, 0x09, + 0x05, 0x20, 0x23, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x00, 0x7a, + 0x1e, 0x06, 0x00, 0x94, 0x22, 0x05, 0x60, 0x1f, 0x06, 0x2c, 0x0a, 0x00, + 0x36, 0x17, 0x06, 0x00, 0xe5, 0x16, 0x0a, 0x00, 0x93, 0x17, 0x0a, 0x2c, + 0x0a, 0x00, 0x93, 0x17, 0x0a, 0x00, 0x93, 0x17, 0x00, 0x93, 0x17, 0xfd, + 0xcb, 0x01, 0xbe, 0xcd, 0xfb, 0x19, 0xaf, 0x32, 0x47, 0x5c, 0x3d, 0x32, + 0x3a, 0x5c, 0x18, 0x01, 0xe7, 0xcd, 0xbf, 0x16, 0xfd, 0x34, 0x0d, 0xfa, + 0x8a, 0x1c, 0xdf, 0x06, 0x00, 0xfe, 0x0d, 0x28, 0x7a, 0xfe, 0x3a, 0x28, + 0xeb, 0x21, 0x76, 0x1b, 0xe5, 0x4f, 0xe7, 0x79, 0xd6, 0xce, 0xda, 0x8a, + 0x1c, 0x4f, 0x21, 0x48, 0x1a, 0x09, 0x4e, 0x09, 0x18, 0x03, 0x2a, 0x74, + 0x5c, 0x7e, 0x23, 0x22, 0x74, 0x5c, 0x01, 0x52, 0x1b, 0xc5, 0x4f, 0xfe, + 0x20, 0x30, 0x0c, 0x21, 0x01, 0x1c, 0x06, 0x00, 0x09, 0x4e, 0x09, 0xe5, + 0xdf, 0x05, 0xc9, 0xdf, 0xb9, 0xc2, 0x8a, 0x1c, 0xe7, 0xc9, 0xcd, 0x54, + 0x1f, 0x38, 0x02, 0xcf, 0x14, 0xfd, 0xcb, 0x0a, 0x7e, 0x20, 0x71, 0x2a, + 0x42, 0x5c, 0xcb, 0x7c, 0x28, 0x14, 0x21, 0xfe, 0xff, 0x22, 0x45, 0x5c, + 0x2a, 0x61, 0x5c, 0x2b, 0xed, 0x5b, 0x59, 0x5c, 0x1b, 0x3a, 0x44, 0x5c, + 0x18, 0x33, 0xcd, 0x6e, 0x19, 0x3a, 0x44, 0x5c, 0x28, 0x19, 0xa7, 0x20, + 0x43, 0x47, 0x7e, 0xe6, 0xc0, 0x78, 0x28, 0x0f, 0xcf, 0xff, 0xc1, 0xcd, + 0x30, 0x25, 0xc8, 0x2a, 0x55, 0x5c, 0x3e, 0xc0, 0xa6, 0xc0, 0xaf, 0xfe, + 0x01, 0xce, 0x00, 0x56, 0x23, 0x5e, 0xed, 0x53, 0x45, 0x5c, 0x23, 0x5e, + 0x23, 0x56, 0xeb, 0x19, 0x23, 0x22, 0x55, 0x5c, 0xeb, 0x22, 0x5d, 0x5c, + 0x57, 0x1e, 0x00, 0xfd, 0x36, 0x0a, 0xff, 0x15, 0xfd, 0x72, 0x0d, 0xca, + 0x28, 0x1b, 0x14, 0xcd, 0x8b, 0x19, 0x28, 0x08, 0xcf, 0x16, 0xcd, 0x30, + 0x25, 0xc0, 0xc1, 0xc1, 0xdf, 0xfe, 0x0d, 0x28, 0xba, 0xfe, 0x3a, 0xca, + 0x28, 0x1b, 0xc3, 0x8a, 0x1c, 0x0f, 0x1d, 0x4b, 0x09, 0x67, 0x0b, 0x7b, + 0x8e, 0x71, 0xb4, 0x81, 0xcf, 0xcd, 0xde, 0x1c, 0xbf, 0xc1, 0xcc, 0xee, + 0x1b, 0xeb, 0x2a, 0x74, 0x5c, 0x4e, 0x23, 0x46, 0xeb, 0xc5, 0xc9, 0xcd, + 0xb2, 0x28, 0xfd, 0x36, 0x37, 0x00, 0x30, 0x08, 0xfd, 0xcb, 0x37, 0xce, + 0x20, 0x18, 0xcf, 0x01, 0xcc, 0x96, 0x29, 0xfd, 0xcb, 0x01, 0x76, 0x20, + 0x0d, 0xaf, 0xcd, 0x30, 0x25, 0xc4, 0xf1, 0x2b, 0x21, 0x71, 0x5c, 0xb6, + 0x77, 0xeb, 0xed, 0x43, 0x72, 0x5c, 0x22, 0x4d, 0x5c, 0xc9, 0xc1, 0xcd, + 0x56, 0x1c, 0xcd, 0xee, 0x1b, 0xc9, 0x3a, 0x3b, 0x5c, 0xf5, 0xcd, 0xfb, + 0x24, 0xf1, 0xfd, 0x56, 0x01, 0xaa, 0xe6, 0x40, 0x20, 0x24, 0xcb, 0x7a, + 0xc2, 0xff, 0x2a, 0xc9, 0xcd, 0xb2, 0x28, 0xf5, 0x79, 0xf6, 0x9f, 0x3c, + 0x20, 0x14, 0xf1, 0x18, 0xa9, 0xe7, 0xcd, 0x82, 0x1c, 0xfe, 0x2c, 0x20, + 0x09, 0xe7, 0xcd, 0xfb, 0x24, 0xfd, 0xcb, 0x01, 0x76, 0xc0, 0xcf, 0x0b, + 0xcd, 0xfb, 0x24, 0xfd, 0xcb, 0x01, 0x76, 0xc8, 0x18, 0xf4, 0xfd, 0xcb, + 0x01, 0x7e, 0xfd, 0xcb, 0x02, 0x86, 0xc4, 0x4d, 0x0d, 0xf1, 0x3a, 0x74, + 0x5c, 0xd6, 0x13, 0xcd, 0xfc, 0x21, 0xcd, 0xee, 0x1b, 0x2a, 0x8f, 0x5c, + 0x22, 0x8d, 0x5c, 0x21, 0x91, 0x5c, 0x7e, 0x07, 0xae, 0xe6, 0xaa, 0xae, + 0x77, 0xc9, 0xcd, 0x30, 0x25, 0x28, 0x13, 0xfd, 0xcb, 0x02, 0x86, 0xcd, + 0x4d, 0x0d, 0x21, 0x90, 0x5c, 0x7e, 0xf6, 0xf8, 0x77, 0xfd, 0xcb, 0x57, + 0xb6, 0xdf, 0xcd, 0xe2, 0x21, 0x18, 0x9f, 0xc3, 0x05, 0x06, 0xfe, 0x0d, + 0x28, 0x04, 0xfe, 0x3a, 0x20, 0x9c, 0xcd, 0x30, 0x25, 0xc8, 0xef, 0xa0, + 0x38, 0xc9, 0xcf, 0x08, 0xc1, 0xcd, 0x30, 0x25, 0x28, 0x0a, 0xef, 0x02, + 0x38, 0xeb, 0xcd, 0xe9, 0x34, 0xda, 0xb3, 0x1b, 0xc3, 0x29, 0x1b, 0xfe, + 0xcd, 0x20, 0x09, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xee, 0x1b, 0x18, 0x06, + 0xcd, 0xee, 0x1b, 0xef, 0xa1, 0x38, 0xef, 0xc0, 0x02, 0x01, 0xe0, 0x01, + 0x38, 0xcd, 0xff, 0x2a, 0x22, 0x68, 0x5c, 0x2b, 0x7e, 0xcb, 0xfe, 0x01, + 0x06, 0x00, 0x09, 0x07, 0x38, 0x06, 0x0e, 0x0d, 0xcd, 0x55, 0x16, 0x23, + 0xe5, 0xef, 0x02, 0x02, 0x38, 0xe1, 0xeb, 0x0e, 0x0a, 0xed, 0xb0, 0x2a, + 0x45, 0x5c, 0xeb, 0x73, 0x23, 0x72, 0xfd, 0x56, 0x0d, 0x14, 0x23, 0x72, + 0xcd, 0xda, 0x1d, 0xd0, 0xfd, 0x46, 0x38, 0x2a, 0x45, 0x5c, 0x22, 0x42, + 0x5c, 0x3a, 0x47, 0x5c, 0xed, 0x44, 0x57, 0x2a, 0x5d, 0x5c, 0x1e, 0xf3, + 0xc5, 0xed, 0x4b, 0x55, 0x5c, 0xcd, 0x86, 0x1d, 0xed, 0x43, 0x55, 0x5c, + 0xc1, 0x38, 0x11, 0xe7, 0xf6, 0x20, 0xb8, 0x28, 0x03, 0xe7, 0x18, 0xe8, + 0xe7, 0x3e, 0x01, 0x92, 0x32, 0x44, 0x5c, 0xc9, 0xcf, 0x11, 0x7e, 0xfe, + 0x3a, 0x28, 0x18, 0x23, 0x7e, 0xe6, 0xc0, 0x37, 0xc0, 0x46, 0x23, 0x4e, + 0xed, 0x43, 0x42, 0x5c, 0x23, 0x4e, 0x23, 0x46, 0xe5, 0x09, 0x44, 0x4d, + 0xe1, 0x16, 0x00, 0xc5, 0xcd, 0x8b, 0x19, 0xc1, 0xd0, 0x18, 0xe0, 0xfd, + 0xcb, 0x37, 0x4e, 0xc2, 0x2e, 0x1c, 0x2a, 0x4d, 0x5c, 0xcb, 0x7e, 0x28, + 0x1f, 0x23, 0x22, 0x68, 0x5c, 0xef, 0xe0, 0xe2, 0x0f, 0xc0, 0x02, 0x38, + 0xcd, 0xda, 0x1d, 0xd8, 0x2a, 0x68, 0x5c, 0x11, 0x0f, 0x00, 0x19, 0x5e, + 0x23, 0x56, 0x23, 0x66, 0xeb, 0xc3, 0x73, 0x1e, 0xcf, 0x00, 0xef, 0xe1, + 0xe0, 0xe2, 0x36, 0x00, 0x02, 0x01, 0x03, 0x37, 0x00, 0x04, 0x38, 0xa7, + 0xc9, 0x38, 0x37, 0xc9, 0xe7, 0xcd, 0x1f, 0x1c, 0xcd, 0x30, 0x25, 0x28, + 0x29, 0xdf, 0x22, 0x5f, 0x5c, 0x2a, 0x57, 0x5c, 0x7e, 0xfe, 0x2c, 0x28, + 0x09, 0x1e, 0xe4, 0xcd, 0x86, 0x1d, 0x30, 0x02, 0xcf, 0x0d, 0xcd, 0x77, + 0x00, 0xcd, 0x56, 0x1c, 0xdf, 0x22, 0x57, 0x5c, 0x2a, 0x5f, 0x5c, 0xfd, + 0x36, 0x26, 0x00, 0xcd, 0x78, 0x00, 0xdf, 0xfe, 0x2c, 0x28, 0xc9, 0xcd, + 0xee, 0x1b, 0xc9, 0xcd, 0x30, 0x25, 0x20, 0x0b, 0xcd, 0xfb, 0x24, 0xfe, + 0x2c, 0xc4, 0xee, 0x1b, 0xe7, 0x18, 0xf5, 0x3e, 0xe4, 0x47, 0xed, 0xb9, + 0x11, 0x00, 0x02, 0xc3, 0x8b, 0x19, 0xcd, 0x99, 0x1e, 0x60, 0x69, 0xcd, + 0x6e, 0x19, 0x2b, 0x22, 0x57, 0x5c, 0xc9, 0xcd, 0x99, 0x1e, 0x78, 0xb1, + 0x20, 0x04, 0xed, 0x4b, 0x78, 0x5c, 0xed, 0x43, 0x76, 0x5c, 0xc9, 0x2a, + 0x6e, 0x5c, 0xfd, 0x56, 0x36, 0x18, 0x0c, 0xcd, 0x99, 0x1e, 0x60, 0x69, + 0x16, 0x00, 0x7c, 0xfe, 0xf0, 0x30, 0x2c, 0x22, 0x42, 0x5c, 0xfd, 0x72, + 0x0a, 0xc9, 0xcd, 0x85, 0x1e, 0xed, 0x79, 0xc9, 0xcd, 0x85, 0x1e, 0x02, + 0xc9, 0xcd, 0xd5, 0x2d, 0x38, 0x15, 0x28, 0x02, 0xed, 0x44, 0xf5, 0xcd, + 0x99, 0x1e, 0xf1, 0xc9, 0xcd, 0xd5, 0x2d, 0x18, 0x03, 0xcd, 0xa2, 0x2d, + 0x38, 0x01, 0xc8, 0xcf, 0x0a, 0xcd, 0x67, 0x1e, 0x01, 0x00, 0x00, 0xcd, + 0x45, 0x1e, 0x18, 0x03, 0xcd, 0x99, 0x1e, 0x78, 0xb1, 0x20, 0x04, 0xed, + 0x4b, 0xb2, 0x5c, 0xc5, 0xed, 0x5b, 0x4b, 0x5c, 0x2a, 0x59, 0x5c, 0x2b, + 0xcd, 0xe5, 0x19, 0xcd, 0x6b, 0x0d, 0x2a, 0x65, 0x5c, 0x11, 0x32, 0x00, + 0x19, 0xd1, 0xed, 0x52, 0x30, 0x08, 0x2a, 0xb4, 0x5c, 0xa7, 0xed, 0x52, + 0x30, 0x02, 0xcf, 0x15, 0xeb, 0x22, 0xb2, 0x5c, 0xd1, 0xc1, 0x36, 0x3e, + 0x2b, 0xf9, 0xc5, 0xed, 0x73, 0x3d, 0x5c, 0xeb, 0xe9, 0xd1, 0xfd, 0x66, + 0x0d, 0x24, 0xe3, 0x33, 0xed, 0x4b, 0x45, 0x5c, 0xc5, 0xe5, 0xed, 0x73, + 0x3d, 0x5c, 0xd5, 0xcd, 0x67, 0x1e, 0x01, 0x14, 0x00, 0x2a, 0x65, 0x5c, + 0x09, 0x38, 0x0a, 0xeb, 0x21, 0x50, 0x00, 0x19, 0x38, 0x03, 0xed, 0x72, + 0xd8, 0x2e, 0x03, 0xc3, 0x55, 0x00, 0x01, 0x00, 0x00, 0xcd, 0x05, 0x1f, + 0x44, 0x4d, 0xc9, 0xc1, 0xe1, 0xd1, 0x7a, 0xfe, 0x3e, 0x28, 0x0b, 0x3b, + 0xe3, 0xeb, 0xed, 0x73, 0x3d, 0x5c, 0xc5, 0xc3, 0x73, 0x1e, 0xd5, 0xe5, + 0xcf, 0x06, 0xcd, 0x99, 0x1e, 0x76, 0x0b, 0x78, 0xb1, 0x28, 0x0c, 0x78, + 0xa1, 0x3c, 0x20, 0x01, 0x03, 0xfd, 0xcb, 0x01, 0x6e, 0x28, 0xee, 0xfd, + 0xcb, 0x01, 0xae, 0xc9, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0xd8, 0x3e, 0xfe, + 0xdb, 0xfe, 0x1f, 0xc9, 0xcd, 0x30, 0x25, 0x28, 0x05, 0x3e, 0xce, 0xc3, + 0x39, 0x1e, 0xfd, 0xcb, 0x01, 0xf6, 0xcd, 0x8d, 0x2c, 0x30, 0x16, 0xe7, + 0xfe, 0x24, 0x20, 0x05, 0xfd, 0xcb, 0x01, 0xb6, 0xe7, 0xfe, 0x28, 0x20, + 0x3c, 0xe7, 0xfe, 0x29, 0x28, 0x20, 0xcd, 0x8d, 0x2c, 0xd2, 0x8a, 0x1c, + 0xeb, 0xe7, 0xfe, 0x24, 0x20, 0x02, 0xeb, 0xe7, 0xeb, 0x01, 0x06, 0x00, + 0xcd, 0x55, 0x16, 0x23, 0x23, 0x36, 0x0e, 0xfe, 0x2c, 0x20, 0x03, 0xe7, + 0x18, 0xe0, 0xfe, 0x29, 0x20, 0x13, 0xe7, 0xfe, 0x3d, 0x20, 0x0e, 0xe7, + 0x3a, 0x3b, 0x5c, 0xf5, 0xcd, 0xfb, 0x24, 0xf1, 0xfd, 0xae, 0x01, 0xe6, + 0x40, 0xc2, 0x8a, 0x1c, 0xcd, 0xee, 0x1b, 0xcd, 0x30, 0x25, 0xe1, 0xc8, + 0xe9, 0x3e, 0x03, 0x18, 0x02, 0x3e, 0x02, 0xcd, 0x30, 0x25, 0xc4, 0x01, + 0x16, 0xcd, 0x4d, 0x0d, 0xcd, 0xdf, 0x1f, 0xcd, 0xee, 0x1b, 0xc9, 0xdf, + 0xcd, 0x45, 0x20, 0x28, 0x0d, 0xcd, 0x4e, 0x20, 0x28, 0xfb, 0xcd, 0xfc, + 0x1f, 0xcd, 0x4e, 0x20, 0x28, 0xf3, 0xfe, 0x29, 0xc8, 0xcd, 0xc3, 0x1f, + 0x3e, 0x0d, 0xd7, 0xc9, 0xdf, 0xfe, 0xac, 0x20, 0x0d, 0xcd, 0x79, 0x1c, + 0xcd, 0xc3, 0x1f, 0xcd, 0x07, 0x23, 0x3e, 0x16, 0x18, 0x10, 0xfe, 0xad, + 0x20, 0x12, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xc3, 0x1f, 0xcd, 0x99, 0x1e, + 0x3e, 0x17, 0xd7, 0x79, 0xd7, 0x78, 0xd7, 0xc9, 0xcd, 0xf2, 0x21, 0xd0, + 0xcd, 0x70, 0x20, 0xd0, 0xcd, 0xfb, 0x24, 0xcd, 0xc3, 0x1f, 0xfd, 0xcb, + 0x01, 0x76, 0xcc, 0xf1, 0x2b, 0xc2, 0xe3, 0x2d, 0x78, 0xb1, 0x0b, 0xc8, + 0x1a, 0x13, 0xd7, 0x18, 0xf7, 0xfe, 0x29, 0xc8, 0xfe, 0x0d, 0xc8, 0xfe, + 0x3a, 0xc9, 0xdf, 0xfe, 0x3b, 0x28, 0x14, 0xfe, 0x2c, 0x20, 0x0a, 0xcd, + 0x30, 0x25, 0x28, 0x0b, 0x3e, 0x06, 0xd7, 0x18, 0x06, 0xfe, 0x27, 0xc0, + 0xcd, 0xf5, 0x1f, 0xe7, 0xcd, 0x45, 0x20, 0x20, 0x01, 0xc1, 0xbf, 0xc9, + 0xfe, 0x23, 0x37, 0xc0, 0xe7, 0xcd, 0x82, 0x1c, 0xa7, 0xcd, 0xc3, 0x1f, + 0xcd, 0x94, 0x1e, 0xfe, 0x10, 0xd2, 0x0e, 0x16, 0xcd, 0x01, 0x16, 0xa7, + 0xc9, 0xcd, 0x30, 0x25, 0x28, 0x08, 0x3e, 0x01, 0xcd, 0x01, 0x16, 0xcd, + 0x6e, 0x0d, 0xfd, 0x36, 0x02, 0x01, 0xcd, 0xc1, 0x20, 0xcd, 0xee, 0x1b, + 0xed, 0x4b, 0x88, 0x5c, 0x3a, 0x6b, 0x5c, 0xb8, 0x38, 0x03, 0x0e, 0x21, + 0x47, 0xed, 0x43, 0x88, 0x5c, 0x3e, 0x19, 0x90, 0x32, 0x8c, 0x5c, 0xfd, + 0xcb, 0x02, 0x86, 0xcd, 0xd9, 0x0d, 0xc3, 0x6e, 0x0d, 0xcd, 0x4e, 0x20, + 0x28, 0xfb, 0xfe, 0x28, 0x20, 0x0e, 0xe7, 0xcd, 0xdf, 0x1f, 0xdf, 0xfe, + 0x29, 0xc2, 0x8a, 0x1c, 0xe7, 0xc3, 0xb2, 0x21, 0xfe, 0xca, 0x20, 0x11, + 0xe7, 0xcd, 0x1f, 0x1c, 0xfd, 0xcb, 0x37, 0xfe, 0xfd, 0xcb, 0x01, 0x76, + 0xc2, 0x8a, 0x1c, 0x18, 0x0d, 0xcd, 0x8d, 0x2c, 0xd2, 0xaf, 0x21, 0xcd, + 0x1f, 0x1c, 0xfd, 0xcb, 0x37, 0xbe, 0xcd, 0x30, 0x25, 0xca, 0xb2, 0x21, + 0xcd, 0xbf, 0x16, 0x21, 0x71, 0x5c, 0xcb, 0xb6, 0xcb, 0xee, 0x01, 0x01, + 0x00, 0xcb, 0x7e, 0x20, 0x0b, 0x3a, 0x3b, 0x5c, 0xe6, 0x40, 0x20, 0x02, + 0x0e, 0x03, 0xb6, 0x77, 0xf7, 0x36, 0x0d, 0x79, 0x0f, 0x0f, 0x30, 0x05, + 0x3e, 0x22, 0x12, 0x2b, 0x77, 0x22, 0x5b, 0x5c, 0xfd, 0xcb, 0x37, 0x7e, + 0x20, 0x2c, 0x2a, 0x5d, 0x5c, 0xe5, 0x2a, 0x3d, 0x5c, 0xe5, 0x21, 0x3a, + 0x21, 0xe5, 0xfd, 0xcb, 0x30, 0x66, 0x28, 0x04, 0xed, 0x73, 0x3d, 0x5c, + 0x2a, 0x61, 0x5c, 0xcd, 0xa7, 0x11, 0xfd, 0x36, 0x00, 0xff, 0xcd, 0x2c, + 0x0f, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0xb9, 0x21, 0x18, 0x03, 0xcd, 0x2c, + 0x0f, 0xfd, 0x36, 0x22, 0x00, 0xcd, 0xd6, 0x21, 0x20, 0x0a, 0xcd, 0x1d, + 0x11, 0xed, 0x4b, 0x82, 0x5c, 0xcd, 0xd9, 0x0d, 0x21, 0x71, 0x5c, 0xcb, + 0xae, 0xcb, 0x7e, 0xcb, 0xbe, 0x20, 0x1c, 0xe1, 0xe1, 0x22, 0x3d, 0x5c, + 0xe1, 0x22, 0x5f, 0x5c, 0xfd, 0xcb, 0x01, 0xfe, 0xcd, 0xb9, 0x21, 0x2a, + 0x5f, 0x5c, 0xfd, 0x36, 0x26, 0x00, 0x22, 0x5d, 0x5c, 0x18, 0x17, 0x2a, + 0x63, 0x5c, 0xed, 0x5b, 0x61, 0x5c, 0x37, 0xed, 0x52, 0x44, 0x4d, 0xcd, + 0xb2, 0x2a, 0xcd, 0xff, 0x2a, 0x18, 0x03, 0xcd, 0xfc, 0x1f, 0xcd, 0x4e, + 0x20, 0xca, 0xc1, 0x20, 0xc9, 0x2a, 0x61, 0x5c, 0x22, 0x5d, 0x5c, 0xdf, + 0xfe, 0xe2, 0x28, 0x0c, 0x3a, 0x71, 0x5c, 0xcd, 0x59, 0x1c, 0xdf, 0xfe, + 0x0d, 0xc8, 0xcf, 0x0b, 0xcd, 0x30, 0x25, 0xc8, 0xcf, 0x10, 0x2a, 0x51, + 0x5c, 0x23, 0x23, 0x23, 0x23, 0x7e, 0xfe, 0x4b, 0xc9, 0xe7, 0xcd, 0xf2, + 0x21, 0xd8, 0xdf, 0xfe, 0x2c, 0x28, 0xf6, 0xfe, 0x3b, 0x28, 0xf2, 0xc3, + 0x8a, 0x1c, 0xfe, 0xd9, 0xd8, 0xfe, 0xdf, 0x3f, 0xd8, 0xf5, 0xe7, 0xf1, + 0xd6, 0xc9, 0xf5, 0xcd, 0x82, 0x1c, 0xf1, 0xa7, 0xcd, 0xc3, 0x1f, 0xf5, + 0xcd, 0x94, 0x1e, 0x57, 0xf1, 0xd7, 0x7a, 0xd7, 0xc9, 0xd6, 0x11, 0xce, + 0x00, 0x28, 0x1d, 0xd6, 0x02, 0xce, 0x00, 0x28, 0x56, 0xfe, 0x01, 0x7a, + 0x06, 0x01, 0x20, 0x04, 0x07, 0x07, 0x06, 0x04, 0x4f, 0x7a, 0xfe, 0x02, + 0x30, 0x16, 0x79, 0x21, 0x91, 0x5c, 0x18, 0x38, 0x7a, 0x06, 0x07, 0x38, + 0x05, 0x07, 0x07, 0x07, 0x06, 0x38, 0x4f, 0x7a, 0xfe, 0x0a, 0x38, 0x02, + 0xcf, 0x13, 0x21, 0x8f, 0x5c, 0xfe, 0x08, 0x38, 0x0b, 0x7e, 0x28, 0x07, + 0xb0, 0x2f, 0xe6, 0x24, 0x28, 0x01, 0x78, 0x4f, 0x79, 0xcd, 0x6c, 0x22, + 0x3e, 0x07, 0xba, 0x9f, 0xcd, 0x6c, 0x22, 0x07, 0x07, 0xe6, 0x50, 0x47, + 0x3e, 0x08, 0xba, 0x9f, 0xae, 0xa0, 0xae, 0x77, 0x23, 0x78, 0xc9, 0x9f, + 0x7a, 0x0f, 0x06, 0x80, 0x20, 0x03, 0x0f, 0x06, 0x40, 0x4f, 0x7a, 0xfe, + 0x08, 0x28, 0x04, 0xfe, 0x02, 0x30, 0xbd, 0x79, 0x21, 0x8f, 0x5c, 0xcd, + 0x6c, 0x22, 0x79, 0x0f, 0x0f, 0x0f, 0x18, 0xd8, 0xcd, 0x94, 0x1e, 0xfe, + 0x08, 0x30, 0xa9, 0xd3, 0xfe, 0x07, 0x07, 0x07, 0xcb, 0x6f, 0x20, 0x02, + 0xee, 0x07, 0x32, 0x48, 0x5c, 0xc9, 0x3e, 0xaf, 0x90, 0xda, 0xf9, 0x24, + 0x47, 0xa7, 0x1f, 0x37, 0x1f, 0xa7, 0x1f, 0xa8, 0xe6, 0xf8, 0xa8, 0x67, + 0x79, 0x07, 0x07, 0x07, 0xa8, 0xe6, 0xc7, 0xa8, 0x07, 0x07, 0x6f, 0x79, + 0xe6, 0x07, 0xc9, 0xcd, 0x07, 0x23, 0xcd, 0xaa, 0x22, 0x47, 0x04, 0x7e, + 0x07, 0x10, 0xfd, 0xe6, 0x01, 0xc3, 0x28, 0x2d, 0xcd, 0x07, 0x23, 0xcd, + 0xe5, 0x22, 0xc3, 0x4d, 0x0d, 0xed, 0x43, 0x7d, 0x5c, 0xcd, 0xaa, 0x22, + 0x47, 0x04, 0x3e, 0xfe, 0x0f, 0x10, 0xfd, 0x47, 0x7e, 0xfd, 0x4e, 0x57, + 0xcb, 0x41, 0x20, 0x01, 0xa0, 0xcb, 0x51, 0x20, 0x02, 0xa8, 0x2f, 0x77, + 0xc3, 0xdb, 0x0b, 0xcd, 0x14, 0x23, 0x47, 0xc5, 0xcd, 0x14, 0x23, 0x59, + 0xc1, 0x51, 0x4f, 0xc9, 0xcd, 0xd5, 0x2d, 0xda, 0xf9, 0x24, 0x0e, 0x01, + 0xc8, 0x0e, 0xff, 0xc9, 0xdf, 0xfe, 0x2c, 0xc2, 0x8a, 0x1c, 0xe7, 0xcd, + 0x82, 0x1c, 0xcd, 0xee, 0x1b, 0xef, 0x2a, 0x3d, 0x38, 0x7e, 0xfe, 0x81, + 0x30, 0x05, 0xef, 0x02, 0x38, 0x18, 0xa1, 0xef, 0xa3, 0x38, 0x36, 0x83, + 0xef, 0xc5, 0x02, 0x38, 0xcd, 0x7d, 0x24, 0xc5, 0xef, 0x31, 0xe1, 0x04, + 0x38, 0x7e, 0xfe, 0x80, 0x30, 0x08, 0xef, 0x02, 0x02, 0x38, 0xc1, 0xc3, + 0xdc, 0x22, 0xef, 0xc2, 0x01, 0xc0, 0x02, 0x03, 0x01, 0xe0, 0x0f, 0xc0, + 0x01, 0x31, 0xe0, 0x01, 0x31, 0xe0, 0xa0, 0xc1, 0x02, 0x38, 0xfd, 0x34, + 0x62, 0xcd, 0x94, 0x1e, 0x6f, 0xe5, 0xcd, 0x94, 0x1e, 0xe1, 0x67, 0x22, + 0x7d, 0x5c, 0xc1, 0xc3, 0x20, 0x24, 0xdf, 0xfe, 0x2c, 0x28, 0x06, 0xcd, + 0xee, 0x1b, 0xc3, 0x77, 0x24, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xee, 0x1b, + 0xef, 0xc5, 0xa2, 0x04, 0x1f, 0x31, 0x30, 0x30, 0x00, 0x06, 0x02, 0x38, + 0xc3, 0x77, 0x24, 0xc0, 0x02, 0xc1, 0x02, 0x31, 0x2a, 0xe1, 0x01, 0xe1, + 0x2a, 0x0f, 0xe0, 0x05, 0x2a, 0xe0, 0x01, 0x3d, 0x38, 0x7e, 0xfe, 0x81, + 0x30, 0x07, 0xef, 0x02, 0x02, 0x38, 0xc3, 0x77, 0x24, 0xcd, 0x7d, 0x24, + 0xc5, 0xef, 0x02, 0xe1, 0x01, 0x05, 0xc1, 0x02, 0x01, 0x31, 0xe1, 0x04, + 0xc2, 0x02, 0x01, 0x31, 0xe1, 0x04, 0xe2, 0xe5, 0xe0, 0x03, 0xa2, 0x04, + 0x31, 0x1f, 0xc5, 0x02, 0x20, 0xc0, 0x02, 0xc2, 0x02, 0xc1, 0xe5, 0x04, + 0xe0, 0xe2, 0x04, 0x0f, 0xe1, 0x01, 0xc1, 0x02, 0xe0, 0x04, 0xe2, 0xe5, + 0x04, 0x03, 0xc2, 0x2a, 0xe1, 0x2a, 0x0f, 0x02, 0x38, 0x1a, 0xfe, 0x81, + 0xc1, 0xda, 0x77, 0x24, 0xc5, 0xef, 0x01, 0x38, 0x3a, 0x7d, 0x5c, 0xcd, + 0x28, 0x2d, 0xef, 0xc0, 0x0f, 0x01, 0x38, 0x3a, 0x7e, 0x5c, 0xcd, 0x28, + 0x2d, 0xef, 0xc5, 0x0f, 0xe0, 0xe5, 0x38, 0xc1, 0x05, 0x28, 0x3c, 0x18, + 0x14, 0xef, 0xe1, 0x31, 0xe3, 0x04, 0xe2, 0xe4, 0x04, 0x03, 0xc1, 0x02, + 0xe4, 0x04, 0xe2, 0xe3, 0x04, 0x0f, 0xc2, 0x02, 0x38, 0xc5, 0xef, 0xc0, + 0x02, 0xe1, 0x0f, 0x31, 0x38, 0x3a, 0x7d, 0x5c, 0xcd, 0x28, 0x2d, 0xef, + 0x03, 0xe0, 0xe2, 0x0f, 0xc0, 0x01, 0xe0, 0x38, 0x3a, 0x7e, 0x5c, 0xcd, + 0x28, 0x2d, 0xef, 0x03, 0x38, 0xcd, 0xb7, 0x24, 0xc1, 0x10, 0xc6, 0xef, + 0x02, 0x02, 0x01, 0x38, 0x3a, 0x7d, 0x5c, 0xcd, 0x28, 0x2d, 0xef, 0x03, + 0x01, 0x38, 0x3a, 0x7e, 0x5c, 0xcd, 0x28, 0x2d, 0xef, 0x03, 0x38, 0xcd, + 0xb7, 0x24, 0xc3, 0x4d, 0x0d, 0xef, 0x31, 0x28, 0x34, 0x32, 0x00, 0x01, + 0x05, 0xe5, 0x01, 0x05, 0x2a, 0x38, 0xcd, 0xd5, 0x2d, 0x38, 0x06, 0xe6, + 0xfc, 0xc6, 0x04, 0x30, 0x02, 0x3e, 0xfc, 0xf5, 0xcd, 0x28, 0x2d, 0xef, + 0xe5, 0x01, 0x05, 0x31, 0x1f, 0xc4, 0x02, 0x31, 0xa2, 0x04, 0x1f, 0xc1, + 0x01, 0xc0, 0x02, 0x31, 0x04, 0x31, 0x0f, 0xa1, 0x03, 0x1b, 0xc3, 0x02, + 0x38, 0xc1, 0xc9, 0xcd, 0x07, 0x23, 0x79, 0xb8, 0x30, 0x06, 0x69, 0xd5, + 0xaf, 0x5f, 0x18, 0x07, 0xb1, 0xc8, 0x68, 0x41, 0xd5, 0x16, 0x00, 0x60, + 0x78, 0x1f, 0x85, 0x38, 0x03, 0xbc, 0x38, 0x07, 0x94, 0x4f, 0xd9, 0xc1, + 0xc5, 0x18, 0x04, 0x4f, 0xd5, 0xd9, 0xc1, 0x2a, 0x7d, 0x5c, 0x78, 0x84, + 0x47, 0x79, 0x3c, 0x85, 0x38, 0x0d, 0x28, 0x0d, 0x3d, 0x4f, 0xcd, 0xe5, + 0x22, 0xd9, 0x79, 0x10, 0xd9, 0xd1, 0xc9, 0x28, 0xf3, 0xcf, 0x0a, 0xdf, + 0x06, 0x00, 0xc5, 0x4f, 0x21, 0x96, 0x25, 0xcd, 0xdc, 0x16, 0x79, 0xd2, + 0x84, 0x26, 0x06, 0x00, 0x4e, 0x09, 0xe9, 0xcd, 0x74, 0x00, 0x03, 0xfe, + 0x0d, 0xca, 0x8a, 0x1c, 0xfe, 0x22, 0x20, 0xf3, 0xcd, 0x74, 0x00, 0xfe, + 0x22, 0xc9, 0xe7, 0xfe, 0x28, 0x20, 0x06, 0xcd, 0x79, 0x1c, 0xdf, 0xfe, + 0x29, 0xc2, 0x8a, 0x1c, 0xfd, 0xcb, 0x01, 0x7e, 0xc9, 0xcd, 0x07, 0x23, + 0x2a, 0x36, 0x5c, 0x11, 0x00, 0x01, 0x19, 0x79, 0x0f, 0x0f, 0x0f, 0xe6, + 0xe0, 0xa8, 0x5f, 0x79, 0xe6, 0x18, 0xee, 0x40, 0x57, 0x06, 0x60, 0xc5, + 0xd5, 0xe5, 0x1a, 0xae, 0x28, 0x04, 0x3c, 0x20, 0x1a, 0x3d, 0x4f, 0x06, + 0x07, 0x14, 0x23, 0x1a, 0xae, 0xa9, 0x20, 0x0f, 0x10, 0xf7, 0xc1, 0xc1, + 0xc1, 0x3e, 0x80, 0x90, 0x01, 0x01, 0x00, 0xf7, 0x12, 0x18, 0x0a, 0xe1, + 0x11, 0x08, 0x00, 0x19, 0xd1, 0xc1, 0x10, 0xd3, 0x48, 0xc3, 0xb2, 0x2a, + 0xcd, 0x07, 0x23, 0x79, 0x0f, 0x0f, 0x0f, 0x4f, 0xe6, 0xe0, 0xa8, 0x6f, + 0x79, 0xe6, 0x03, 0xee, 0x58, 0x67, 0x7e, 0xc3, 0x28, 0x2d, 0x22, 0x1c, + 0x28, 0x4f, 0x2e, 0xf2, 0x2b, 0x12, 0xa8, 0x56, 0xa5, 0x57, 0xa7, 0x84, + 0xa6, 0x8f, 0xc4, 0xe6, 0xaa, 0xbf, 0xab, 0xc7, 0xa9, 0xce, 0x00, 0xe7, + 0xc3, 0xff, 0x24, 0xdf, 0x23, 0xe5, 0x01, 0x00, 0x00, 0xcd, 0x0f, 0x25, + 0x20, 0x1b, 0xcd, 0x0f, 0x25, 0x28, 0xfb, 0xcd, 0x30, 0x25, 0x28, 0x11, + 0xf7, 0xe1, 0xd5, 0x7e, 0x23, 0x12, 0x13, 0xfe, 0x22, 0x20, 0xf8, 0x7e, + 0x23, 0xfe, 0x22, 0x28, 0xf2, 0x0b, 0xd1, 0x21, 0x3b, 0x5c, 0xcb, 0xb6, + 0xcb, 0x7e, 0xc4, 0xb2, 0x2a, 0xc3, 0x12, 0x27, 0xe7, 0xcd, 0xfb, 0x24, + 0xfe, 0x29, 0xc2, 0x8a, 0x1c, 0xe7, 0xc3, 0x12, 0x27, 0xc3, 0xbd, 0x27, + 0xcd, 0x30, 0x25, 0x28, 0x28, 0xed, 0x4b, 0x76, 0x5c, 0xcd, 0x2b, 0x2d, + 0xef, 0xa1, 0x0f, 0x34, 0x37, 0x16, 0x04, 0x34, 0x80, 0x41, 0x00, 0x00, + 0x80, 0x32, 0x02, 0xa1, 0x03, 0x31, 0x38, 0xcd, 0xa2, 0x2d, 0xed, 0x43, + 0x76, 0x5c, 0x7e, 0xa7, 0x28, 0x03, 0xd6, 0x10, 0x77, 0x18, 0x09, 0xcd, + 0x30, 0x25, 0x28, 0x04, 0xef, 0xa3, 0x38, 0x34, 0xe7, 0xc3, 0xc3, 0x26, + 0x01, 0x5a, 0x10, 0xe7, 0xfe, 0x23, 0xca, 0x0d, 0x27, 0x21, 0x3b, 0x5c, + 0xcb, 0xb6, 0xcb, 0x7e, 0x28, 0x1f, 0xcd, 0x8e, 0x02, 0x0e, 0x00, 0x20, + 0x13, 0xcd, 0x1e, 0x03, 0x30, 0x0e, 0x15, 0x5f, 0xcd, 0x33, 0x03, 0xf5, + 0x01, 0x01, 0x00, 0xf7, 0xf1, 0x12, 0x0e, 0x01, 0x06, 0x00, 0xcd, 0xb2, + 0x2a, 0xc3, 0x12, 0x27, 0xcd, 0x22, 0x25, 0xc4, 0x35, 0x25, 0xe7, 0xc3, + 0xdb, 0x25, 0xcd, 0x22, 0x25, 0xc4, 0x80, 0x25, 0xe7, 0x18, 0x48, 0xcd, + 0x22, 0x25, 0xc4, 0xcb, 0x22, 0xe7, 0x18, 0x3f, 0xcd, 0x88, 0x2c, 0x30, + 0x56, 0xfe, 0x41, 0x30, 0x3c, 0xcd, 0x30, 0x25, 0x20, 0x23, 0xcd, 0x9b, + 0x2c, 0xdf, 0x01, 0x06, 0x00, 0xcd, 0x55, 0x16, 0x23, 0x36, 0x0e, 0x23, + 0xeb, 0x2a, 0x65, 0x5c, 0x0e, 0x05, 0xa7, 0xed, 0x42, 0x22, 0x65, 0x5c, + 0xed, 0xb0, 0xeb, 0x2b, 0xcd, 0x77, 0x00, 0x18, 0x0e, 0xdf, 0x23, 0x7e, + 0xfe, 0x0e, 0x20, 0xfa, 0x23, 0xcd, 0xb4, 0x33, 0x22, 0x5d, 0x5c, 0xfd, + 0xcb, 0x01, 0xf6, 0x18, 0x14, 0xcd, 0xb2, 0x28, 0xda, 0x2e, 0x1c, 0xcc, + 0x96, 0x29, 0x3a, 0x3b, 0x5c, 0xfe, 0xc0, 0x38, 0x04, 0x23, 0xcd, 0xb4, + 0x33, 0x18, 0x33, 0x01, 0xdb, 0x09, 0xfe, 0x2d, 0x28, 0x27, 0x01, 0x18, + 0x10, 0xfe, 0xae, 0x28, 0x20, 0xd6, 0xaf, 0xda, 0x8a, 0x1c, 0x01, 0xf0, + 0x04, 0xfe, 0x14, 0x28, 0x14, 0xd2, 0x8a, 0x1c, 0x06, 0x10, 0xc6, 0xdc, + 0x4f, 0xfe, 0xdf, 0x30, 0x02, 0xcb, 0xb1, 0xfe, 0xee, 0x38, 0x02, 0xcb, + 0xb9, 0xc5, 0xe7, 0xc3, 0xff, 0x24, 0xdf, 0xfe, 0x28, 0x20, 0x0c, 0xfd, + 0xcb, 0x01, 0x76, 0x20, 0x17, 0xcd, 0x52, 0x2a, 0xe7, 0x18, 0xf0, 0x06, + 0x00, 0x4f, 0x21, 0x95, 0x27, 0xcd, 0xdc, 0x16, 0x30, 0x06, 0x4e, 0x21, + 0xed, 0x26, 0x09, 0x46, 0xd1, 0x7a, 0xb8, 0x38, 0x3a, 0xa7, 0xca, 0x18, + 0x00, 0xc5, 0x21, 0x3b, 0x5c, 0x7b, 0xfe, 0xed, 0x20, 0x06, 0xcb, 0x76, + 0x20, 0x02, 0x1e, 0x99, 0xd5, 0xcd, 0x30, 0x25, 0x28, 0x09, 0x7b, 0xe6, + 0x3f, 0x47, 0xef, 0x3b, 0x38, 0x18, 0x09, 0x7b, 0xfd, 0xae, 0x01, 0xe6, + 0x40, 0xc2, 0x8a, 0x1c, 0xd1, 0x21, 0x3b, 0x5c, 0xcb, 0xf6, 0xcb, 0x7b, + 0x20, 0x02, 0xcb, 0xb6, 0xc1, 0x18, 0xc1, 0xd5, 0x79, 0xfd, 0xcb, 0x01, + 0x76, 0x20, 0x15, 0xe6, 0x3f, 0xc6, 0x08, 0x4f, 0xfe, 0x10, 0x20, 0x04, + 0xcb, 0xf1, 0x18, 0x08, 0x38, 0xd7, 0xfe, 0x17, 0x28, 0x02, 0xcb, 0xf9, + 0xc5, 0xe7, 0xc3, 0xff, 0x24, 0x2b, 0xcf, 0x2d, 0xc3, 0x2a, 0xc4, 0x2f, + 0xc5, 0x5e, 0xc6, 0x3d, 0xce, 0x3e, 0xcc, 0x3c, 0xcd, 0xc7, 0xc9, 0xc8, + 0xca, 0xc9, 0xcb, 0xc5, 0xc7, 0xc6, 0xc8, 0x00, 0x06, 0x08, 0x08, 0x0a, + 0x02, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0xcd, 0x30, 0x25, + 0x20, 0x35, 0xe7, 0xcd, 0x8d, 0x2c, 0xd2, 0x8a, 0x1c, 0xe7, 0xfe, 0x24, + 0xf5, 0x20, 0x01, 0xe7, 0xfe, 0x28, 0x20, 0x12, 0xe7, 0xfe, 0x29, 0x28, + 0x10, 0xcd, 0xfb, 0x24, 0xdf, 0xfe, 0x2c, 0x20, 0x03, 0xe7, 0x18, 0xf5, + 0xfe, 0x29, 0xc2, 0x8a, 0x1c, 0xe7, 0x21, 0x3b, 0x5c, 0xcb, 0xb6, 0xf1, + 0x28, 0x02, 0xcb, 0xf6, 0xc3, 0x12, 0x27, 0xe7, 0xe6, 0xdf, 0x47, 0xe7, + 0xd6, 0x24, 0x4f, 0x20, 0x01, 0xe7, 0xe7, 0xe5, 0x2a, 0x53, 0x5c, 0x2b, + 0x11, 0xce, 0x00, 0xc5, 0xcd, 0x86, 0x1d, 0xc1, 0x30, 0x02, 0xcf, 0x18, + 0xe5, 0xcd, 0xab, 0x28, 0xe6, 0xdf, 0xb8, 0x20, 0x08, 0xcd, 0xab, 0x28, + 0xd6, 0x24, 0xb9, 0x28, 0x0c, 0xe1, 0x2b, 0x11, 0x00, 0x02, 0xc5, 0xcd, + 0x8b, 0x19, 0xc1, 0x18, 0xd7, 0xa7, 0xcc, 0xab, 0x28, 0xd1, 0xd1, 0xed, + 0x53, 0x5d, 0x5c, 0xcd, 0xab, 0x28, 0xe5, 0xfe, 0x29, 0x28, 0x42, 0x23, + 0x7e, 0xfe, 0x0e, 0x16, 0x40, 0x28, 0x07, 0x2b, 0xcd, 0xab, 0x28, 0x23, + 0x16, 0x00, 0x23, 0xe5, 0xd5, 0xcd, 0xfb, 0x24, 0xf1, 0xfd, 0xae, 0x01, + 0xe6, 0x40, 0x20, 0x2b, 0xe1, 0xeb, 0x2a, 0x65, 0x5c, 0x01, 0x05, 0x00, + 0xed, 0x42, 0x22, 0x65, 0x5c, 0xed, 0xb0, 0xeb, 0x2b, 0xcd, 0xab, 0x28, + 0xfe, 0x29, 0x28, 0x0d, 0xe5, 0xdf, 0xfe, 0x2c, 0x20, 0x0d, 0xe7, 0xe1, + 0xcd, 0xab, 0x28, 0x18, 0xbe, 0xe5, 0xdf, 0xfe, 0x29, 0x28, 0x02, 0xcf, + 0x19, 0xd1, 0xeb, 0x22, 0x5d, 0x5c, 0x2a, 0x0b, 0x5c, 0xe3, 0x22, 0x0b, + 0x5c, 0xd5, 0xe7, 0xe7, 0xcd, 0xfb, 0x24, 0xe1, 0x22, 0x5d, 0x5c, 0xe1, + 0x22, 0x0b, 0x5c, 0xe7, 0xc3, 0x12, 0x27, 0x23, 0x7e, 0xfe, 0x21, 0x38, + 0xfa, 0xc9, 0xfd, 0xcb, 0x01, 0xf6, 0xdf, 0xcd, 0x8d, 0x2c, 0xd2, 0x8a, + 0x1c, 0xe5, 0xe6, 0x1f, 0x4f, 0xe7, 0xe5, 0xfe, 0x28, 0x28, 0x28, 0xcb, + 0xf1, 0xfe, 0x24, 0x28, 0x11, 0xcb, 0xe9, 0xcd, 0x88, 0x2c, 0x30, 0x0f, + 0xcd, 0x88, 0x2c, 0x30, 0x16, 0xcb, 0xb1, 0xe7, 0x18, 0xf6, 0xe7, 0xfd, + 0xcb, 0x01, 0xb6, 0x3a, 0x0c, 0x5c, 0xa7, 0x28, 0x06, 0xcd, 0x30, 0x25, + 0xc2, 0x51, 0x29, 0x41, 0xcd, 0x30, 0x25, 0x20, 0x08, 0x79, 0xe6, 0xe0, + 0xcb, 0xff, 0x4f, 0x18, 0x37, 0x2a, 0x4b, 0x5c, 0x7e, 0xe6, 0x7f, 0x28, + 0x2d, 0xb9, 0x20, 0x22, 0x17, 0x87, 0xf2, 0x3f, 0x29, 0x38, 0x30, 0xd1, + 0xd5, 0xe5, 0x23, 0x1a, 0x13, 0xfe, 0x20, 0x28, 0xfa, 0xf6, 0x20, 0xbe, + 0x28, 0xf4, 0xf6, 0x80, 0xbe, 0x20, 0x06, 0x1a, 0xcd, 0x88, 0x2c, 0x30, + 0x15, 0xe1, 0xc5, 0xcd, 0xb8, 0x19, 0xeb, 0xc1, 0x18, 0xce, 0xcb, 0xf8, + 0xd1, 0xdf, 0xfe, 0x28, 0x28, 0x09, 0xcb, 0xe8, 0x18, 0x0d, 0xd1, 0xd1, + 0xd1, 0xe5, 0xdf, 0xcd, 0x88, 0x2c, 0x30, 0x03, 0xe7, 0x18, 0xf8, 0xe1, + 0xcb, 0x10, 0xcb, 0x70, 0xc9, 0x2a, 0x0b, 0x5c, 0x7e, 0xfe, 0x29, 0xca, + 0xef, 0x28, 0x7e, 0xf6, 0x60, 0x47, 0x23, 0x7e, 0xfe, 0x0e, 0x28, 0x07, + 0x2b, 0xcd, 0xab, 0x28, 0x23, 0xcb, 0xa8, 0x78, 0xb9, 0x28, 0x12, 0x23, + 0x23, 0x23, 0x23, 0x23, 0xcd, 0xab, 0x28, 0xfe, 0x29, 0xca, 0xef, 0x28, + 0xcd, 0xab, 0x28, 0x18, 0xd9, 0xcb, 0x69, 0x20, 0x0c, 0x23, 0xed, 0x5b, + 0x65, 0x5c, 0xcd, 0xc0, 0x33, 0xeb, 0x22, 0x65, 0x5c, 0xd1, 0xd1, 0xaf, + 0x3c, 0xc9, 0xaf, 0x47, 0xcb, 0x79, 0x20, 0x4b, 0xcb, 0x7e, 0x20, 0x0e, + 0x3c, 0x23, 0x4e, 0x23, 0x46, 0x23, 0xeb, 0xcd, 0xb2, 0x2a, 0xdf, 0xc3, + 0x49, 0x2a, 0x23, 0x23, 0x23, 0x46, 0xcb, 0x71, 0x28, 0x0a, 0x05, 0x28, + 0xe8, 0xeb, 0xdf, 0xfe, 0x28, 0x20, 0x61, 0xeb, 0xeb, 0x18, 0x24, 0xe5, + 0xdf, 0xe1, 0xfe, 0x2c, 0x28, 0x20, 0xcb, 0x79, 0x28, 0x52, 0xcb, 0x71, + 0x20, 0x06, 0xfe, 0x29, 0x20, 0x3c, 0xe7, 0xc9, 0xfe, 0x29, 0x28, 0x6c, + 0xfe, 0xcc, 0x20, 0x32, 0xdf, 0x2b, 0x22, 0x5d, 0x5c, 0x18, 0x5e, 0x21, + 0x00, 0x00, 0xe5, 0xe7, 0xe1, 0x79, 0xfe, 0xc0, 0x20, 0x09, 0xdf, 0xfe, + 0x29, 0x28, 0x51, 0xfe, 0xcc, 0x28, 0xe5, 0xc5, 0xe5, 0xcd, 0xee, 0x2a, + 0xe3, 0xeb, 0xcd, 0xcc, 0x2a, 0x38, 0x19, 0x0b, 0xcd, 0xf4, 0x2a, 0x09, + 0xd1, 0xc1, 0x10, 0xb3, 0xcb, 0x79, 0x20, 0x66, 0xe5, 0xcb, 0x71, 0x20, + 0x13, 0x42, 0x4b, 0xdf, 0xfe, 0x29, 0x28, 0x02, 0xcf, 0x02, 0xe7, 0xe1, + 0x11, 0x05, 0x00, 0xcd, 0xf4, 0x2a, 0x09, 0xc9, 0xcd, 0xee, 0x2a, 0xe3, + 0xcd, 0xf4, 0x2a, 0xc1, 0x09, 0x23, 0x42, 0x4b, 0xeb, 0xcd, 0xb1, 0x2a, + 0xdf, 0xfe, 0x29, 0x28, 0x07, 0xfe, 0x2c, 0x20, 0xdb, 0xcd, 0x52, 0x2a, + 0xe7, 0xfe, 0x28, 0x28, 0xf8, 0xfd, 0xcb, 0x01, 0xb6, 0xc9, 0xcd, 0x30, + 0x25, 0xc4, 0xf1, 0x2b, 0xe7, 0xfe, 0x29, 0x28, 0x50, 0xd5, 0xaf, 0xf5, + 0xc5, 0x11, 0x01, 0x00, 0xdf, 0xe1, 0xfe, 0xcc, 0x28, 0x17, 0xf1, 0xcd, + 0xcd, 0x2a, 0xf5, 0x50, 0x59, 0xe5, 0xdf, 0xe1, 0xfe, 0xcc, 0x28, 0x09, + 0xfe, 0x29, 0xc2, 0x8a, 0x1c, 0x62, 0x6b, 0x18, 0x13, 0xe5, 0xe7, 0xe1, + 0xfe, 0x29, 0x28, 0x0c, 0xf1, 0xcd, 0xcd, 0x2a, 0xf5, 0xdf, 0x60, 0x69, + 0xfe, 0x29, 0x20, 0xe6, 0xf1, 0xe3, 0x19, 0x2b, 0xe3, 0xa7, 0xed, 0x52, + 0x01, 0x00, 0x00, 0x38, 0x07, 0x23, 0xa7, 0xfa, 0x20, 0x2a, 0x44, 0x4d, + 0xd1, 0xfd, 0xcb, 0x01, 0xb6, 0xcd, 0x30, 0x25, 0xc8, 0xaf, 0xfd, 0xcb, + 0x01, 0xb6, 0xc5, 0xcd, 0xa9, 0x33, 0xc1, 0x2a, 0x65, 0x5c, 0x77, 0x23, + 0x73, 0x23, 0x72, 0x23, 0x71, 0x23, 0x70, 0x23, 0x22, 0x65, 0x5c, 0xc9, + 0xaf, 0xd5, 0xe5, 0xf5, 0xcd, 0x82, 0x1c, 0xf1, 0xcd, 0x30, 0x25, 0x28, + 0x12, 0xf5, 0xcd, 0x99, 0x1e, 0xd1, 0x78, 0xb1, 0x37, 0x28, 0x05, 0xe1, + 0xe5, 0xa7, 0xed, 0x42, 0x7a, 0xde, 0x00, 0xe1, 0xd1, 0xc9, 0xeb, 0x23, + 0x5e, 0x23, 0x56, 0xc9, 0xcd, 0x30, 0x25, 0xc8, 0xcd, 0xa9, 0x30, 0xda, + 0x15, 0x1f, 0xc9, 0x2a, 0x4d, 0x5c, 0xfd, 0xcb, 0x37, 0x4e, 0x28, 0x5e, + 0x01, 0x05, 0x00, 0x03, 0x23, 0x7e, 0xfe, 0x20, 0x28, 0xfa, 0x30, 0x0b, + 0xfe, 0x10, 0x38, 0x11, 0xfe, 0x16, 0x30, 0x0d, 0x23, 0x18, 0xed, 0xcd, + 0x88, 0x2c, 0x38, 0xe7, 0xfe, 0x24, 0xca, 0xc0, 0x2b, 0x79, 0x2a, 0x59, + 0x5c, 0x2b, 0xcd, 0x55, 0x16, 0x23, 0x23, 0xeb, 0xd5, 0x2a, 0x4d, 0x5c, + 0x1b, 0xd6, 0x06, 0x47, 0x28, 0x11, 0x23, 0x7e, 0xfe, 0x21, 0x38, 0xfa, + 0xf6, 0x20, 0x13, 0x12, 0x10, 0xf4, 0xf6, 0x80, 0x12, 0x3e, 0xc0, 0x2a, + 0x4d, 0x5c, 0xae, 0xf6, 0x20, 0xe1, 0xcd, 0xea, 0x2b, 0xe5, 0xef, 0x02, + 0x38, 0xe1, 0x01, 0x05, 0x00, 0xa7, 0xed, 0x42, 0x18, 0x40, 0xfd, 0xcb, + 0x01, 0x76, 0x28, 0x06, 0x11, 0x06, 0x00, 0x19, 0x18, 0xe7, 0x2a, 0x4d, + 0x5c, 0xed, 0x4b, 0x72, 0x5c, 0xfd, 0xcb, 0x37, 0x46, 0x20, 0x30, 0x78, + 0xb1, 0xc8, 0xe5, 0xf7, 0xd5, 0xc5, 0x54, 0x5d, 0x23, 0x36, 0x20, 0xed, + 0xb8, 0xe5, 0xcd, 0xf1, 0x2b, 0xe1, 0xe3, 0xa7, 0xed, 0x42, 0x09, 0x30, + 0x02, 0x44, 0x4d, 0xe3, 0xeb, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, + 0xd1, 0xe1, 0xeb, 0x78, 0xb1, 0xc8, 0xd5, 0xed, 0xb0, 0xe1, 0xc9, 0x2b, + 0x2b, 0x2b, 0x7e, 0xe5, 0xc5, 0xcd, 0xc6, 0x2b, 0xc1, 0xe1, 0x03, 0x03, + 0x03, 0xc3, 0xe8, 0x19, 0x3e, 0xdf, 0x2a, 0x4d, 0x5c, 0xa6, 0xf5, 0xcd, + 0xf1, 0x2b, 0xeb, 0x09, 0xc5, 0x2b, 0x22, 0x4d, 0x5c, 0x03, 0x03, 0x03, + 0x2a, 0x59, 0x5c, 0x2b, 0xcd, 0x55, 0x16, 0x2a, 0x4d, 0x5c, 0xc1, 0xc5, + 0x03, 0xed, 0xb8, 0xeb, 0x23, 0xc1, 0x70, 0x2b, 0x71, 0xf1, 0x2b, 0x77, + 0x2a, 0x59, 0x5c, 0x2b, 0xc9, 0x2a, 0x65, 0x5c, 0x2b, 0x46, 0x2b, 0x4e, + 0x2b, 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x22, 0x65, 0x5c, 0xc9, 0xcd, 0xb2, + 0x28, 0xc2, 0x8a, 0x1c, 0xcd, 0x30, 0x25, 0x20, 0x08, 0xcb, 0xb1, 0xcd, + 0x96, 0x29, 0xcd, 0xee, 0x1b, 0x38, 0x08, 0xc5, 0xcd, 0xb8, 0x19, 0xcd, + 0xe8, 0x19, 0xc1, 0xcb, 0xf9, 0x06, 0x00, 0xc5, 0x21, 0x01, 0x00, 0xcb, + 0x71, 0x20, 0x02, 0x2e, 0x05, 0xeb, 0xe7, 0x26, 0xff, 0xcd, 0xcc, 0x2a, + 0xda, 0x20, 0x2a, 0xe1, 0xc5, 0x24, 0xe5, 0x60, 0x69, 0xcd, 0xf4, 0x2a, + 0xeb, 0xdf, 0xfe, 0x2c, 0x28, 0xe8, 0xfe, 0x29, 0x20, 0xbb, 0xe7, 0xc1, + 0x79, 0x68, 0x26, 0x00, 0x23, 0x23, 0x29, 0x19, 0xda, 0x15, 0x1f, 0xd5, + 0xc5, 0xe5, 0x44, 0x4d, 0x2a, 0x59, 0x5c, 0x2b, 0xcd, 0x55, 0x16, 0x23, + 0x77, 0xc1, 0x0b, 0x0b, 0x0b, 0x23, 0x71, 0x23, 0x70, 0xc1, 0x78, 0x23, + 0x77, 0x62, 0x6b, 0x1b, 0x36, 0x00, 0xcb, 0x71, 0x28, 0x02, 0x36, 0x20, + 0xc1, 0xed, 0xb8, 0xc1, 0x70, 0x2b, 0x71, 0x2b, 0x3d, 0x20, 0xf8, 0xc9, + 0xcd, 0x1b, 0x2d, 0x3f, 0xd8, 0xfe, 0x41, 0x3f, 0xd0, 0xfe, 0x5b, 0xd8, + 0xfe, 0x61, 0x3f, 0xd0, 0xfe, 0x7b, 0xc9, 0xfe, 0xc4, 0x20, 0x19, 0x11, + 0x00, 0x00, 0xe7, 0xd6, 0x31, 0xce, 0x00, 0x20, 0x0a, 0xeb, 0x3f, 0xed, + 0x6a, 0xda, 0xad, 0x31, 0xeb, 0x18, 0xef, 0x42, 0x4b, 0xc3, 0x2b, 0x2d, + 0xfe, 0x2e, 0x28, 0x0f, 0xcd, 0x3b, 0x2d, 0xfe, 0x2e, 0x20, 0x28, 0xe7, + 0xcd, 0x1b, 0x2d, 0x38, 0x22, 0x18, 0x0a, 0xe7, 0xcd, 0x1b, 0x2d, 0xda, + 0x8a, 0x1c, 0xef, 0xa0, 0x38, 0xef, 0xa1, 0xc0, 0x02, 0x38, 0xdf, 0xcd, + 0x22, 0x2d, 0x38, 0x0b, 0xef, 0xe0, 0xa4, 0x05, 0xc0, 0x04, 0x0f, 0x38, + 0xe7, 0x18, 0xef, 0xfe, 0x45, 0x28, 0x03, 0xfe, 0x65, 0xc0, 0x06, 0xff, + 0xe7, 0xfe, 0x2b, 0x28, 0x05, 0xfe, 0x2d, 0x20, 0x02, 0x04, 0xe7, 0xcd, + 0x1b, 0x2d, 0x38, 0xcb, 0xc5, 0xcd, 0x3b, 0x2d, 0xcd, 0xd5, 0x2d, 0xc1, + 0xda, 0xad, 0x31, 0xa7, 0xfa, 0xad, 0x31, 0x04, 0x28, 0x02, 0xed, 0x44, + 0xc3, 0x4f, 0x2d, 0xfe, 0x30, 0xd8, 0xfe, 0x3a, 0x3f, 0xc9, 0xcd, 0x1b, + 0x2d, 0xd8, 0xd6, 0x30, 0x4f, 0x06, 0x00, 0xfd, 0x21, 0x3a, 0x5c, 0xaf, + 0x5f, 0x51, 0x48, 0x47, 0xcd, 0xb6, 0x2a, 0xef, 0x38, 0xa7, 0xc9, 0xf5, + 0xef, 0xa0, 0x38, 0xf1, 0xcd, 0x22, 0x2d, 0xd8, 0xef, 0x01, 0xa4, 0x04, + 0x0f, 0x38, 0xcd, 0x74, 0x00, 0x18, 0xf1, 0x07, 0x0f, 0x30, 0x02, 0x2f, + 0x3c, 0xf5, 0x21, 0x92, 0x5c, 0xcd, 0x0b, 0x35, 0xef, 0xa4, 0x38, 0xf1, + 0xcb, 0x3f, 0x30, 0x0d, 0xf5, 0xef, 0xc1, 0xe0, 0x00, 0x04, 0x04, 0x33, + 0x02, 0x05, 0xe1, 0x38, 0xf1, 0x28, 0x08, 0xf5, 0xef, 0x31, 0x04, 0x38, + 0xf1, 0x18, 0xe5, 0xef, 0x02, 0x38, 0xc9, 0x23, 0x4e, 0x23, 0x7e, 0xa9, + 0x91, 0x5f, 0x23, 0x7e, 0x89, 0xa9, 0x57, 0xc9, 0x0e, 0x00, 0xe5, 0x36, + 0x00, 0x23, 0x71, 0x23, 0x7b, 0xa9, 0x91, 0x77, 0x23, 0x7a, 0x89, 0xa9, + 0x77, 0x23, 0x36, 0x00, 0xe1, 0xc9, 0xef, 0x38, 0x7e, 0xa7, 0x28, 0x05, + 0xef, 0xa2, 0x0f, 0x27, 0x38, 0xef, 0x02, 0x38, 0xe5, 0xd5, 0xeb, 0x46, + 0xcd, 0x7f, 0x2d, 0xaf, 0x90, 0xcb, 0x79, 0x42, 0x4b, 0x7b, 0xd1, 0xe1, + 0xc9, 0x57, 0x17, 0x9f, 0x5f, 0x4f, 0xaf, 0x47, 0xcd, 0xb6, 0x2a, 0xef, + 0x34, 0xef, 0x1a, 0x20, 0x9a, 0x85, 0x04, 0x27, 0x38, 0xcd, 0xa2, 0x2d, + 0xd8, 0xf5, 0x05, 0x04, 0x28, 0x03, 0xf1, 0x37, 0xc9, 0xf1, 0xc9, 0xef, + 0x31, 0x36, 0x00, 0x0b, 0x31, 0x37, 0x00, 0x0d, 0x02, 0x38, 0x3e, 0x30, + 0xd7, 0xc9, 0x2a, 0x38, 0x3e, 0x2d, 0xd7, 0xef, 0xa0, 0xc3, 0xc4, 0xc5, + 0x02, 0x38, 0xd9, 0xe5, 0xd9, 0xef, 0x31, 0x27, 0xc2, 0x03, 0xe2, 0x01, + 0xc2, 0x02, 0x38, 0x7e, 0xa7, 0x20, 0x47, 0xcd, 0x7f, 0x2d, 0x06, 0x10, + 0x7a, 0xa7, 0x20, 0x06, 0xb3, 0x28, 0x09, 0x53, 0x06, 0x08, 0xd5, 0xd9, + 0xd1, 0xd9, 0x18, 0x57, 0xef, 0xe2, 0x38, 0x7e, 0xd6, 0x7e, 0xcd, 0xc1, + 0x2d, 0x57, 0x3a, 0xac, 0x5c, 0x92, 0x32, 0xac, 0x5c, 0x7a, 0xcd, 0x4f, + 0x2d, 0xef, 0x31, 0x27, 0xc1, 0x03, 0xe1, 0x38, 0xcd, 0xd5, 0x2d, 0xe5, + 0x32, 0xa1, 0x5c, 0x3d, 0x17, 0x9f, 0x3c, 0x21, 0xab, 0x5c, 0x77, 0x23, + 0x86, 0x77, 0xe1, 0xc3, 0xcf, 0x2e, 0xd6, 0x80, 0xfe, 0x1c, 0x38, 0x13, + 0xcd, 0xc1, 0x2d, 0xd6, 0x07, 0x47, 0x21, 0xac, 0x5c, 0x86, 0x77, 0x78, + 0xed, 0x44, 0xcd, 0x4f, 0x2d, 0x18, 0x92, 0xeb, 0xcd, 0xba, 0x2f, 0xd9, + 0xcb, 0xfa, 0x7d, 0xd9, 0xd6, 0x80, 0x47, 0xcb, 0x23, 0xcb, 0x12, 0xd9, + 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0x21, 0xaa, 0x5c, 0x0e, 0x05, 0x7e, 0x8f, + 0x27, 0x77, 0x2b, 0x0d, 0x20, 0xf8, 0x10, 0xe7, 0xaf, 0x21, 0xa6, 0x5c, + 0x11, 0xa1, 0x5c, 0x06, 0x09, 0xed, 0x6f, 0x0e, 0xff, 0xed, 0x6f, 0x20, + 0x04, 0x0d, 0x0c, 0x20, 0x0a, 0x12, 0x13, 0xfd, 0x34, 0x71, 0xfd, 0x34, + 0x72, 0x0e, 0x00, 0xcb, 0x40, 0x28, 0x01, 0x23, 0x10, 0xe7, 0x3a, 0xab, + 0x5c, 0xd6, 0x09, 0x38, 0x0a, 0xfd, 0x35, 0x71, 0x3e, 0x04, 0xfd, 0xbe, + 0x6f, 0x18, 0x41, 0xef, 0x02, 0xe2, 0x38, 0xeb, 0xcd, 0xba, 0x2f, 0xd9, + 0x3e, 0x80, 0x95, 0x2e, 0x00, 0xcb, 0xfa, 0xd9, 0xcd, 0xdd, 0x2f, 0xfd, + 0x7e, 0x71, 0xfe, 0x08, 0x38, 0x06, 0xd9, 0xcb, 0x12, 0xd9, 0x18, 0x20, + 0x01, 0x00, 0x02, 0x7b, 0xcd, 0x8b, 0x2f, 0x5f, 0x7a, 0xcd, 0x8b, 0x2f, + 0x57, 0xc5, 0xd9, 0xc1, 0x10, 0xf1, 0x21, 0xa1, 0x5c, 0x79, 0xfd, 0x4e, + 0x71, 0x09, 0x77, 0xfd, 0x34, 0x71, 0x18, 0xd3, 0xf5, 0x21, 0xa1, 0x5c, + 0xfd, 0x4e, 0x71, 0x06, 0x00, 0x09, 0x41, 0xf1, 0x2b, 0x7e, 0xce, 0x00, + 0x77, 0xa7, 0x28, 0x05, 0xfe, 0x0a, 0x3f, 0x30, 0x08, 0x10, 0xf1, 0x36, + 0x01, 0x04, 0xfd, 0x34, 0x72, 0xfd, 0x70, 0x71, 0xef, 0x02, 0x38, 0xd9, + 0xe1, 0xd9, 0xed, 0x4b, 0xab, 0x5c, 0x21, 0xa1, 0x5c, 0x78, 0xfe, 0x09, + 0x38, 0x04, 0xfe, 0xfc, 0x38, 0x26, 0xa7, 0xcc, 0xef, 0x15, 0xaf, 0x90, + 0xfa, 0x52, 0x2f, 0x47, 0x18, 0x0c, 0x79, 0xa7, 0x28, 0x03, 0x7e, 0x23, + 0x0d, 0xcd, 0xef, 0x15, 0x10, 0xf4, 0x79, 0xa7, 0xc8, 0x04, 0x3e, 0x2e, + 0xd7, 0x3e, 0x30, 0x10, 0xfb, 0x41, 0x18, 0xe6, 0x50, 0x15, 0x06, 0x01, + 0xcd, 0x4a, 0x2f, 0x3e, 0x45, 0xd7, 0x4a, 0x79, 0xa7, 0xf2, 0x83, 0x2f, + 0xed, 0x44, 0x4f, 0x3e, 0x2d, 0x18, 0x02, 0x3e, 0x2b, 0xd7, 0x06, 0x00, + 0xc3, 0x1b, 0x1a, 0xd5, 0x6f, 0x26, 0x00, 0x5d, 0x54, 0x29, 0x29, 0x19, + 0x29, 0x59, 0x19, 0x4c, 0x7d, 0xd1, 0xc9, 0x7e, 0x36, 0x00, 0xa7, 0xc8, + 0x23, 0xcb, 0x7e, 0xcb, 0xfe, 0x2b, 0xc8, 0xc5, 0x01, 0x05, 0x00, 0x09, + 0x41, 0x4f, 0x37, 0x2b, 0x7e, 0x2f, 0xce, 0x00, 0x77, 0x10, 0xf8, 0x79, + 0xc1, 0xc9, 0xe5, 0xf5, 0x4e, 0x23, 0x46, 0x77, 0x23, 0x79, 0x4e, 0xc5, + 0x23, 0x4e, 0x23, 0x46, 0xeb, 0x57, 0x5e, 0xd5, 0x23, 0x56, 0x23, 0x5e, + 0xd5, 0xd9, 0xd1, 0xe1, 0xc1, 0xd9, 0x23, 0x56, 0x23, 0x5e, 0xf1, 0xe1, + 0xc9, 0xa7, 0xc8, 0xfe, 0x21, 0x30, 0x16, 0xc5, 0x47, 0xd9, 0xcb, 0x2d, + 0xcb, 0x1a, 0xcb, 0x1b, 0xd9, 0xcb, 0x1a, 0xcb, 0x1b, 0x10, 0xf2, 0xc1, + 0xd0, 0xcd, 0x04, 0x30, 0xc0, 0xd9, 0xaf, 0x2e, 0x00, 0x57, 0x5d, 0xd9, + 0x11, 0x00, 0x00, 0xc9, 0x1c, 0xc0, 0x14, 0xc0, 0xd9, 0x1c, 0x20, 0x01, + 0x14, 0xd9, 0xc9, 0xeb, 0xcd, 0x6e, 0x34, 0xeb, 0x1a, 0xb6, 0x20, 0x26, + 0xd5, 0x23, 0xe5, 0x23, 0x5e, 0x23, 0x56, 0x23, 0x23, 0x23, 0x7e, 0x23, + 0x4e, 0x23, 0x46, 0xe1, 0xeb, 0x09, 0xeb, 0x8e, 0x0f, 0xce, 0x00, 0x20, + 0x0b, 0x9f, 0x77, 0x23, 0x73, 0x23, 0x72, 0x2b, 0x2b, 0x2b, 0xd1, 0xc9, + 0x2b, 0xd1, 0xcd, 0x93, 0x32, 0xd9, 0xe5, 0xd9, 0xd5, 0xe5, 0xcd, 0x9b, + 0x2f, 0x47, 0xeb, 0xcd, 0x9b, 0x2f, 0x4f, 0xb8, 0x30, 0x03, 0x78, 0x41, + 0xeb, 0xf5, 0x90, 0xcd, 0xba, 0x2f, 0xcd, 0xdd, 0x2f, 0xf1, 0xe1, 0x77, + 0xe5, 0x68, 0x61, 0x19, 0xd9, 0xeb, 0xed, 0x4a, 0xeb, 0x7c, 0x8d, 0x6f, + 0x1f, 0xad, 0xd9, 0xeb, 0xe1, 0x1f, 0x30, 0x08, 0x3e, 0x01, 0xcd, 0xdd, + 0x2f, 0x34, 0x28, 0x23, 0xd9, 0x7d, 0xe6, 0x80, 0xd9, 0x23, 0x77, 0x2b, + 0x28, 0x1f, 0x7b, 0xed, 0x44, 0x3f, 0x5f, 0x7a, 0x2f, 0xce, 0x00, 0x57, + 0xd9, 0x7b, 0x2f, 0xce, 0x00, 0x5f, 0x7a, 0x2f, 0xce, 0x00, 0x30, 0x07, + 0x1f, 0xd9, 0x34, 0xca, 0xad, 0x31, 0xd9, 0x57, 0xd9, 0xaf, 0xc3, 0x55, + 0x31, 0xc5, 0x06, 0x10, 0x7c, 0x4d, 0x21, 0x00, 0x00, 0x29, 0x38, 0x0a, + 0xcb, 0x11, 0x17, 0x30, 0x03, 0x19, 0x38, 0x02, 0x10, 0xf3, 0xc1, 0xc9, + 0xcd, 0xe9, 0x34, 0xd8, 0x23, 0xae, 0xcb, 0xfe, 0x2b, 0xc9, 0x1a, 0xb6, + 0x20, 0x22, 0xd5, 0xe5, 0xd5, 0xcd, 0x7f, 0x2d, 0xeb, 0xe3, 0x41, 0xcd, + 0x7f, 0x2d, 0x78, 0xa9, 0x4f, 0xe1, 0xcd, 0xa9, 0x30, 0xeb, 0xe1, 0x38, + 0x0a, 0x7a, 0xb3, 0x20, 0x01, 0x4f, 0xcd, 0x8e, 0x2d, 0xd1, 0xc9, 0xd1, + 0xcd, 0x93, 0x32, 0xaf, 0xcd, 0xc0, 0x30, 0xd8, 0xd9, 0xe5, 0xd9, 0xd5, + 0xeb, 0xcd, 0xc0, 0x30, 0xeb, 0x38, 0x5a, 0xe5, 0xcd, 0xba, 0x2f, 0x78, + 0xa7, 0xed, 0x62, 0xd9, 0xe5, 0xed, 0x62, 0xd9, 0x06, 0x21, 0x18, 0x11, + 0x30, 0x05, 0x19, 0xd9, 0xed, 0x5a, 0xd9, 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, + 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x18, 0xcb, 0x19, 0xd9, 0xcb, + 0x19, 0x1f, 0x10, 0xe4, 0xeb, 0xd9, 0xeb, 0xd9, 0xc1, 0xe1, 0x78, 0x81, + 0x20, 0x01, 0xa7, 0x3d, 0x3f, 0x17, 0x3f, 0x1f, 0xf2, 0x46, 0x31, 0x30, + 0x68, 0xa7, 0x3c, 0x20, 0x08, 0x38, 0x06, 0xd9, 0xcb, 0x7a, 0xd9, 0x20, + 0x5c, 0x77, 0xd9, 0x78, 0xd9, 0x30, 0x15, 0x7e, 0xa7, 0x3e, 0x80, 0x28, + 0x01, 0xaf, 0xd9, 0xa2, 0xcd, 0xfb, 0x2f, 0x07, 0x77, 0x38, 0x2e, 0x23, + 0x77, 0x2b, 0x18, 0x29, 0x06, 0x20, 0xd9, 0xcb, 0x7a, 0xd9, 0x20, 0x12, + 0x07, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0x35, + 0x28, 0xd7, 0x10, 0xea, 0x18, 0xd7, 0x17, 0x30, 0x0c, 0xcd, 0x04, 0x30, + 0x20, 0x07, 0xd9, 0x16, 0x80, 0xd9, 0x34, 0x28, 0x18, 0xe5, 0x23, 0xd9, + 0xd5, 0xd9, 0xc1, 0x78, 0x17, 0xcb, 0x16, 0x1f, 0x77, 0x23, 0x71, 0x23, + 0x72, 0x23, 0x73, 0xe1, 0xd1, 0xd9, 0xe1, 0xd9, 0xc9, 0xcf, 0x05, 0xcd, + 0x93, 0x32, 0xeb, 0xaf, 0xcd, 0xc0, 0x30, 0x38, 0xf4, 0xeb, 0xcd, 0xc0, + 0x30, 0xd8, 0xd9, 0xe5, 0xd9, 0xd5, 0xe5, 0xcd, 0xba, 0x2f, 0xd9, 0xe5, + 0x60, 0x69, 0xd9, 0x61, 0x68, 0xaf, 0x06, 0xdf, 0x18, 0x10, 0x17, 0xcb, + 0x11, 0xd9, 0xcb, 0x11, 0xcb, 0x10, 0xd9, 0x29, 0xd9, 0xed, 0x6a, 0xd9, + 0x38, 0x10, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xd9, 0x30, 0x0f, 0x19, 0xd9, + 0xed, 0x5a, 0xd9, 0xa7, 0x18, 0x08, 0xa7, 0xed, 0x52, 0xd9, 0xed, 0x52, + 0xd9, 0x37, 0x04, 0xfa, 0xd2, 0x31, 0xf5, 0x28, 0xe1, 0x5f, 0x51, 0xd9, + 0x59, 0x50, 0xf1, 0xcb, 0x18, 0xf1, 0xcb, 0x18, 0xd9, 0xc1, 0xe1, 0x78, + 0x91, 0xc3, 0x3d, 0x31, 0x7e, 0xa7, 0xc8, 0xfe, 0x81, 0x30, 0x06, 0x36, + 0x00, 0x3e, 0x20, 0x18, 0x51, 0xfe, 0x91, 0x20, 0x1a, 0x23, 0x23, 0x23, + 0x3e, 0x80, 0xa6, 0x2b, 0xb6, 0x2b, 0x20, 0x03, 0x3e, 0x80, 0xae, 0x2b, + 0x20, 0x36, 0x77, 0x23, 0x36, 0xff, 0x2b, 0x3e, 0x18, 0x18, 0x33, 0x30, + 0x2c, 0xd5, 0x2f, 0xc6, 0x91, 0x23, 0x56, 0x23, 0x5e, 0x2b, 0x2b, 0x0e, + 0x00, 0xcb, 0x7a, 0x28, 0x01, 0x0d, 0xcb, 0xfa, 0x06, 0x08, 0x90, 0x80, + 0x38, 0x04, 0x5a, 0x16, 0x00, 0x90, 0x28, 0x07, 0x47, 0xcb, 0x3a, 0xcb, + 0x1b, 0x10, 0xfa, 0xcd, 0x8e, 0x2d, 0xd1, 0xc9, 0x7e, 0xd6, 0xa0, 0xf0, + 0xed, 0x44, 0xd5, 0xeb, 0x2b, 0x47, 0xcb, 0x38, 0xcb, 0x38, 0xcb, 0x38, + 0x28, 0x05, 0x36, 0x00, 0x2b, 0x10, 0xfb, 0xe6, 0x07, 0x28, 0x09, 0x47, + 0x3e, 0xff, 0xcb, 0x27, 0x10, 0xfc, 0xa6, 0x77, 0xeb, 0xd1, 0xc9, 0xcd, + 0x96, 0x32, 0xeb, 0x7e, 0xa7, 0xc0, 0xd5, 0xcd, 0x7f, 0x2d, 0xaf, 0x23, + 0x77, 0x2b, 0x77, 0x06, 0x91, 0x7a, 0xa7, 0x20, 0x08, 0xb3, 0x42, 0x28, + 0x10, 0x53, 0x58, 0x06, 0x89, 0xeb, 0x05, 0x29, 0x30, 0xfc, 0xcb, 0x09, + 0xcb, 0x1c, 0xcb, 0x1d, 0xeb, 0x2b, 0x73, 0x2b, 0x72, 0x2b, 0x70, 0xd1, + 0xc9, 0x00, 0xb0, 0x00, 0x40, 0xb0, 0x00, 0x01, 0x30, 0x00, 0xf1, 0x49, + 0x0f, 0xda, 0xa2, 0x40, 0xb0, 0x00, 0x0a, 0x8f, 0x36, 0x3c, 0x34, 0xa1, + 0x33, 0x0f, 0x30, 0xca, 0x30, 0xaf, 0x31, 0x51, 0x38, 0x1b, 0x35, 0x24, + 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, + 0x35, 0x14, 0x30, 0x2d, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, + 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x9c, 0x35, 0xde, 0x35, 0xbc, 0x34, 0x45, + 0x36, 0x6e, 0x34, 0x69, 0x36, 0xde, 0x35, 0x74, 0x36, 0xb5, 0x37, 0xaa, + 0x37, 0xda, 0x37, 0x33, 0x38, 0x43, 0x38, 0xe2, 0x37, 0x13, 0x37, 0xc4, + 0x36, 0xaf, 0x36, 0x4a, 0x38, 0x92, 0x34, 0x6a, 0x34, 0xac, 0x34, 0xa5, + 0x34, 0xb3, 0x34, 0x1f, 0x36, 0xc9, 0x35, 0x01, 0x35, 0xc0, 0x33, 0xa0, + 0x36, 0x86, 0x36, 0xc6, 0x33, 0x7a, 0x36, 0x06, 0x35, 0xf9, 0x34, 0x9b, + 0x36, 0x83, 0x37, 0x14, 0x32, 0xa2, 0x33, 0x4f, 0x2d, 0x97, 0x32, 0x49, + 0x34, 0x1b, 0x34, 0x2d, 0x34, 0x0f, 0x34, 0xcd, 0xbf, 0x35, 0x78, 0x32, + 0x67, 0x5c, 0xd9, 0xe3, 0xd9, 0xed, 0x53, 0x65, 0x5c, 0xd9, 0x7e, 0x23, + 0xe5, 0xa7, 0xf2, 0x80, 0x33, 0x57, 0xe6, 0x60, 0x0f, 0x0f, 0x0f, 0x0f, + 0xc6, 0x7c, 0x6f, 0x7a, 0xe6, 0x1f, 0x18, 0x0e, 0xfe, 0x18, 0x30, 0x08, + 0xd9, 0x01, 0xfb, 0xff, 0x54, 0x5d, 0x09, 0xd9, 0x07, 0x6f, 0x11, 0xd7, + 0x32, 0x26, 0x00, 0x19, 0x5e, 0x23, 0x56, 0x21, 0x65, 0x33, 0xe3, 0xd5, + 0xd9, 0xed, 0x4b, 0x66, 0x5c, 0xc9, 0xf1, 0x3a, 0x67, 0x5c, 0xd9, 0x18, + 0xc3, 0xd5, 0xe5, 0x01, 0x05, 0x00, 0xcd, 0x05, 0x1f, 0xe1, 0xd1, 0xc9, + 0xed, 0x5b, 0x65, 0x5c, 0xcd, 0xc0, 0x33, 0xed, 0x53, 0x65, 0x5c, 0xc9, + 0xcd, 0xa9, 0x33, 0xed, 0xb0, 0xc9, 0x62, 0x6b, 0xcd, 0xa9, 0x33, 0xd9, + 0xe5, 0xd9, 0xe3, 0xc5, 0x7e, 0xe6, 0xc0, 0x07, 0x07, 0x4f, 0x0c, 0x7e, + 0xe6, 0x3f, 0x20, 0x02, 0x23, 0x7e, 0xc6, 0x50, 0x12, 0x3e, 0x05, 0x91, + 0x23, 0x13, 0x06, 0x00, 0xed, 0xb0, 0xc1, 0xe3, 0xd9, 0xe1, 0xd9, 0x47, + 0xaf, 0x05, 0xc8, 0x12, 0x13, 0x18, 0xfa, 0xa7, 0xc8, 0xf5, 0xd5, 0x11, + 0x00, 0x00, 0xcd, 0xc8, 0x33, 0xd1, 0xf1, 0x3d, 0x18, 0xf2, 0x4f, 0x07, + 0x07, 0x81, 0x4f, 0x06, 0x00, 0x09, 0xc9, 0xd5, 0x2a, 0x68, 0x5c, 0xcd, + 0x06, 0x34, 0xcd, 0xc0, 0x33, 0xe1, 0xc9, 0x62, 0x6b, 0xd9, 0xe5, 0x21, + 0xc5, 0x32, 0xd9, 0xcd, 0xf7, 0x33, 0xcd, 0xc8, 0x33, 0xd9, 0xe1, 0xd9, + 0xc9, 0xe5, 0xeb, 0x2a, 0x68, 0x5c, 0xcd, 0x06, 0x34, 0xeb, 0xcd, 0xc0, + 0x33, 0xeb, 0xe1, 0xc9, 0x06, 0x05, 0x1a, 0x4e, 0xeb, 0x12, 0x71, 0x23, + 0x13, 0x10, 0xf7, 0xeb, 0xc9, 0x47, 0xcd, 0x5e, 0x33, 0x31, 0x0f, 0xc0, + 0x02, 0xa0, 0xc2, 0x31, 0xe0, 0x04, 0xe2, 0xc1, 0x03, 0x38, 0xcd, 0xc6, + 0x33, 0xcd, 0x62, 0x33, 0x0f, 0x01, 0xc2, 0x02, 0x35, 0xee, 0xe1, 0x03, + 0x38, 0xc9, 0x06, 0xff, 0x18, 0x06, 0xcd, 0xe9, 0x34, 0xd8, 0x06, 0x00, + 0x7e, 0xa7, 0x28, 0x0b, 0x23, 0x78, 0xe6, 0x80, 0xb6, 0x17, 0x3f, 0x1f, + 0x77, 0x2b, 0xc9, 0xd5, 0xe5, 0xcd, 0x7f, 0x2d, 0xe1, 0x78, 0xb1, 0x2f, + 0x4f, 0xcd, 0x8e, 0x2d, 0xd1, 0xc9, 0xcd, 0xe9, 0x34, 0xd8, 0xd5, 0x11, + 0x01, 0x00, 0x23, 0xcb, 0x16, 0x2b, 0x9f, 0x4f, 0xcd, 0x8e, 0x2d, 0xd1, + 0xc9, 0xcd, 0x99, 0x1e, 0xed, 0x78, 0x18, 0x04, 0xcd, 0x99, 0x1e, 0x0a, + 0xc3, 0x28, 0x2d, 0xcd, 0x99, 0x1e, 0x21, 0x2b, 0x2d, 0xe5, 0xc5, 0xc9, + 0xcd, 0xf1, 0x2b, 0x0b, 0x78, 0xb1, 0x20, 0x23, 0x1a, 0xcd, 0x8d, 0x2c, + 0x38, 0x09, 0xd6, 0x90, 0x38, 0x19, 0xfe, 0x15, 0x30, 0x15, 0x3c, 0x3d, + 0x87, 0x87, 0x87, 0xfe, 0xa8, 0x30, 0x0c, 0xed, 0x4b, 0x7b, 0x5c, 0x81, + 0x4f, 0x30, 0x01, 0x04, 0xc3, 0x2b, 0x2d, 0xcf, 0x09, 0xe5, 0xc5, 0x47, + 0x7e, 0x23, 0xb6, 0x23, 0xb6, 0x23, 0xb6, 0x78, 0xc1, 0xe1, 0xc0, 0x37, + 0xc9, 0xcd, 0xe9, 0x34, 0xd8, 0x3e, 0xff, 0x18, 0x06, 0xcd, 0xe9, 0x34, + 0x18, 0x05, 0xaf, 0x23, 0xae, 0x2b, 0x07, 0xe5, 0x3e, 0x00, 0x77, 0x23, + 0x77, 0x23, 0x17, 0x77, 0x1f, 0x23, 0x77, 0x23, 0x77, 0xe1, 0xc9, 0xeb, + 0xcd, 0xe9, 0x34, 0xeb, 0xd8, 0x37, 0x18, 0xe7, 0xeb, 0xcd, 0xe9, 0x34, + 0xeb, 0xd0, 0xa7, 0x18, 0xde, 0xeb, 0xcd, 0xe9, 0x34, 0xeb, 0xd0, 0xd5, + 0x1b, 0xaf, 0x12, 0x1b, 0x12, 0xd1, 0xc9, 0x78, 0xd6, 0x08, 0xcb, 0x57, + 0x20, 0x01, 0x3d, 0x0f, 0x30, 0x08, 0xf5, 0xe5, 0xcd, 0x3c, 0x34, 0xd1, + 0xeb, 0xf1, 0xcb, 0x57, 0x20, 0x07, 0x0f, 0xf5, 0xcd, 0x0f, 0x30, 0x18, + 0x33, 0x0f, 0xf5, 0xcd, 0xf1, 0x2b, 0xd5, 0xc5, 0xcd, 0xf1, 0x2b, 0xe1, + 0x7c, 0xb5, 0xe3, 0x78, 0x20, 0x0b, 0xb1, 0xc1, 0x28, 0x04, 0xf1, 0x3f, + 0x18, 0x16, 0xf1, 0x18, 0x13, 0xb1, 0x28, 0x0d, 0x1a, 0x96, 0x38, 0x09, + 0x20, 0xed, 0x0b, 0x13, 0x23, 0xe3, 0x2b, 0x18, 0xdf, 0xc1, 0xf1, 0xa7, + 0xf5, 0xef, 0xa0, 0x38, 0xf1, 0xf5, 0xdc, 0x01, 0x35, 0xf1, 0xf5, 0xd4, + 0xf9, 0x34, 0xf1, 0x0f, 0xd4, 0x01, 0x35, 0xc9, 0xcd, 0xf1, 0x2b, 0xd5, + 0xc5, 0xcd, 0xf1, 0x2b, 0xe1, 0xe5, 0xd5, 0xc5, 0x09, 0x44, 0x4d, 0xf7, + 0xcd, 0xb2, 0x2a, 0xc1, 0xe1, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, + 0xe1, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0x2a, 0x65, 0x5c, 0x11, 0xfb, + 0xff, 0xe5, 0x19, 0xd1, 0xc9, 0xcd, 0xd5, 0x2d, 0x38, 0x0e, 0x20, 0x0c, + 0xf5, 0x01, 0x01, 0x00, 0xf7, 0xf1, 0x12, 0xcd, 0xb2, 0x2a, 0xeb, 0xc9, + 0xcf, 0x0a, 0x2a, 0x5d, 0x5c, 0xe5, 0x78, 0xc6, 0xe3, 0x9f, 0xf5, 0xcd, + 0xf1, 0x2b, 0xd5, 0x03, 0xf7, 0xe1, 0xed, 0x53, 0x5d, 0x5c, 0xd5, 0xed, + 0xb0, 0xeb, 0x2b, 0x36, 0x0d, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0xfb, 0x24, + 0xdf, 0xfe, 0x0d, 0x20, 0x07, 0xe1, 0xf1, 0xfd, 0xae, 0x01, 0xe6, 0x40, + 0xc2, 0x8a, 0x1c, 0x22, 0x5d, 0x5c, 0xfd, 0xcb, 0x01, 0xfe, 0xcd, 0xfb, + 0x24, 0xe1, 0x22, 0x5d, 0x5c, 0x18, 0xa0, 0x01, 0x01, 0x00, 0xf7, 0x22, + 0x5b, 0x5c, 0xe5, 0x2a, 0x51, 0x5c, 0xe5, 0x3e, 0xff, 0xcd, 0x01, 0x16, + 0xcd, 0xe3, 0x2d, 0xe1, 0xcd, 0x15, 0x16, 0xd1, 0x2a, 0x5b, 0x5c, 0xa7, + 0xed, 0x52, 0x44, 0x4d, 0xcd, 0xb2, 0x2a, 0xeb, 0xc9, 0xcd, 0x94, 0x1e, + 0xfe, 0x10, 0xd2, 0x9f, 0x1e, 0x2a, 0x51, 0x5c, 0xe5, 0xcd, 0x01, 0x16, + 0xcd, 0xe6, 0x15, 0x01, 0x00, 0x00, 0x30, 0x03, 0x0c, 0xf7, 0x12, 0xcd, + 0xb2, 0x2a, 0xe1, 0xcd, 0x15, 0x16, 0xc3, 0xbf, 0x35, 0xcd, 0xf1, 0x2b, + 0x78, 0xb1, 0x28, 0x01, 0x1a, 0xc3, 0x28, 0x2d, 0xcd, 0xf1, 0x2b, 0xc3, + 0x2b, 0x2d, 0xd9, 0xe5, 0x21, 0x67, 0x5c, 0x35, 0xe1, 0x20, 0x04, 0x23, + 0xd9, 0xc9, 0xd9, 0x5e, 0x7b, 0x17, 0x9f, 0x57, 0x19, 0xd9, 0xc9, 0x13, + 0x13, 0x1a, 0x1b, 0x1b, 0xa7, 0x20, 0xef, 0xd9, 0x23, 0xd9, 0xc9, 0xf1, + 0xd9, 0xe3, 0xd9, 0xc9, 0xef, 0xc0, 0x02, 0x31, 0xe0, 0x05, 0x27, 0xe0, + 0x01, 0xc0, 0x04, 0x03, 0xe0, 0x38, 0xc9, 0xef, 0x31, 0x36, 0x00, 0x04, + 0x3a, 0x38, 0xc9, 0x31, 0x3a, 0xc0, 0x03, 0xe0, 0x01, 0x30, 0x00, 0x03, + 0xa1, 0x03, 0x38, 0xc9, 0xef, 0x3d, 0x34, 0xf1, 0x38, 0xaa, 0x3b, 0x29, + 0x04, 0x31, 0x27, 0xc3, 0x03, 0x31, 0x0f, 0xa1, 0x03, 0x88, 0x13, 0x36, + 0x58, 0x65, 0x66, 0x9d, 0x78, 0x65, 0x40, 0xa2, 0x60, 0x32, 0xc9, 0xe7, + 0x21, 0xf7, 0xaf, 0x24, 0xeb, 0x2f, 0xb0, 0xb0, 0x14, 0xee, 0x7e, 0xbb, + 0x94, 0x58, 0xf1, 0x3a, 0x7e, 0xf8, 0xcf, 0xe3, 0x38, 0xcd, 0xd5, 0x2d, + 0x20, 0x07, 0x38, 0x03, 0x86, 0x30, 0x09, 0xcf, 0x05, 0x38, 0x07, 0x96, + 0x30, 0x04, 0xed, 0x44, 0x77, 0xc9, 0xef, 0x02, 0xa0, 0x38, 0xc9, 0xef, + 0x3d, 0x31, 0x37, 0x00, 0x04, 0x38, 0xcf, 0x09, 0xa0, 0x02, 0x38, 0x7e, + 0x36, 0x80, 0xcd, 0x28, 0x2d, 0xef, 0x34, 0x38, 0x00, 0x03, 0x01, 0x31, + 0x34, 0xf0, 0x4c, 0xcc, 0xcc, 0xcd, 0x03, 0x37, 0x00, 0x08, 0x01, 0xa1, + 0x03, 0x01, 0x38, 0x34, 0xef, 0x01, 0x34, 0xf0, 0x31, 0x72, 0x17, 0xf8, + 0x04, 0x01, 0xa2, 0x03, 0xa2, 0x03, 0x31, 0x34, 0x32, 0x20, 0x04, 0xa2, + 0x03, 0x8c, 0x11, 0xac, 0x14, 0x09, 0x56, 0xda, 0xa5, 0x59, 0x30, 0xc5, + 0x5c, 0x90, 0xaa, 0x9e, 0x70, 0x6f, 0x61, 0xa1, 0xcb, 0xda, 0x96, 0xa4, + 0x31, 0x9f, 0xb4, 0xe7, 0xa0, 0xfe, 0x5c, 0xfc, 0xea, 0x1b, 0x43, 0xca, + 0x36, 0xed, 0xa7, 0x9c, 0x7e, 0x5e, 0xf0, 0x6e, 0x23, 0x80, 0x93, 0x04, + 0x0f, 0x38, 0xc9, 0xef, 0x3d, 0x34, 0xee, 0x22, 0xf9, 0x83, 0x6e, 0x04, + 0x31, 0xa2, 0x0f, 0x27, 0x03, 0x31, 0x0f, 0x31, 0x0f, 0x31, 0x2a, 0xa1, + 0x03, 0x31, 0x37, 0xc0, 0x00, 0x04, 0x02, 0x38, 0xc9, 0xa1, 0x03, 0x01, + 0x36, 0x00, 0x02, 0x1b, 0x38, 0xc9, 0xef, 0x39, 0x2a, 0xa1, 0x03, 0xe0, + 0x00, 0x06, 0x1b, 0x33, 0x03, 0xef, 0x39, 0x31, 0x31, 0x04, 0x31, 0x0f, + 0xa1, 0x03, 0x86, 0x14, 0xe6, 0x5c, 0x1f, 0x0b, 0xa3, 0x8f, 0x38, 0xee, + 0xe9, 0x15, 0x63, 0xbb, 0x23, 0xee, 0x92, 0x0d, 0xcd, 0xed, 0xf1, 0x23, + 0x5d, 0x1b, 0xea, 0x04, 0x38, 0xc9, 0xef, 0x31, 0x1f, 0x01, 0x20, 0x05, + 0x38, 0xc9, 0xcd, 0x97, 0x32, 0x7e, 0xfe, 0x81, 0x38, 0x0e, 0xef, 0xa1, + 0x1b, 0x01, 0x05, 0x31, 0x36, 0xa3, 0x01, 0x00, 0x06, 0x1b, 0x33, 0x03, + 0xef, 0xa0, 0x01, 0x31, 0x31, 0x04, 0x31, 0x0f, 0xa1, 0x03, 0x8c, 0x10, + 0xb2, 0x13, 0x0e, 0x55, 0xe4, 0x8d, 0x58, 0x39, 0xbc, 0x5b, 0x98, 0xfd, + 0x9e, 0x00, 0x36, 0x75, 0xa0, 0xdb, 0xe8, 0xb4, 0x63, 0x42, 0xc4, 0xe6, + 0xb5, 0x09, 0x36, 0xbe, 0xe9, 0x36, 0x73, 0x1b, 0x5d, 0xec, 0xd8, 0xde, + 0x63, 0xbe, 0xf0, 0x61, 0xa1, 0xb3, 0x0c, 0x04, 0x0f, 0x38, 0xc9, 0xef, + 0x31, 0x31, 0x04, 0xa1, 0x03, 0x1b, 0x28, 0xa1, 0x0f, 0x05, 0x24, 0x31, + 0x0f, 0x38, 0xc9, 0xef, 0x22, 0xa3, 0x03, 0x1b, 0x38, 0xc9, 0xef, 0x31, + 0x30, 0x00, 0x1e, 0xa2, 0x38, 0xef, 0x01, 0x31, 0x30, 0x00, 0x07, 0x25, + 0x04, 0x38, 0xc3, 0xc4, 0x36, 0x02, 0x31, 0x30, 0x00, 0x09, 0xa0, 0x01, + 0x37, 0x00, 0x06, 0xa1, 0x01, 0x05, 0x02, 0xa1, 0x38, 0xc9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x24, 0x24, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7e, 0x24, 0x24, 0x7e, 0x24, 0x00, + 0x00, 0x08, 0x3e, 0x28, 0x3e, 0x0a, 0x3e, 0x08, 0x00, 0x62, 0x64, 0x08, + 0x10, 0x26, 0x46, 0x00, 0x00, 0x10, 0x28, 0x10, 0x2a, 0x44, 0x3a, 0x00, + 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00, + 0x00, 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x3c, 0x46, 0x4a, 0x52, 0x62, 0x3c, 0x00, 0x00, 0x18, 0x28, 0x08, + 0x08, 0x08, 0x3e, 0x00, 0x00, 0x3c, 0x42, 0x02, 0x3c, 0x40, 0x7e, 0x00, + 0x00, 0x3c, 0x42, 0x0c, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x08, 0x18, 0x28, + 0x48, 0x7e, 0x08, 0x00, 0x00, 0x7e, 0x40, 0x7c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0x3c, 0x40, 0x7c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7e, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x00, 0x00, 0x3c, 0x42, 0x3c, 0x42, 0x42, 0x3c, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x3e, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x20, + 0x00, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, + 0x00, 0x3c, 0x42, 0x04, 0x08, 0x00, 0x08, 0x00, 0x00, 0x3c, 0x4a, 0x56, + 0x5e, 0x40, 0x3c, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x00, + 0x00, 0x7c, 0x42, 0x7c, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x3c, 0x42, 0x40, + 0x40, 0x42, 0x3c, 0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x44, 0x78, 0x00, + 0x00, 0x7e, 0x40, 0x7c, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x7e, 0x40, 0x7c, + 0x40, 0x40, 0x40, 0x00, 0x00, 0x3c, 0x42, 0x40, 0x4e, 0x42, 0x3c, 0x00, + 0x00, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x00, 0x00, 0x3e, 0x08, 0x08, + 0x08, 0x08, 0x3e, 0x00, 0x00, 0x02, 0x02, 0x02, 0x42, 0x42, 0x3c, 0x00, + 0x00, 0x44, 0x48, 0x70, 0x48, 0x44, 0x42, 0x00, 0x00, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x7e, 0x00, 0x00, 0x42, 0x66, 0x5a, 0x42, 0x42, 0x42, 0x00, + 0x00, 0x42, 0x62, 0x52, 0x4a, 0x46, 0x42, 0x00, 0x00, 0x3c, 0x42, 0x42, + 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, 0x7c, 0x40, 0x40, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x52, 0x4a, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, + 0x7c, 0x44, 0x42, 0x00, 0x00, 0x3c, 0x40, 0x3c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x42, 0x42, 0x42, + 0x42, 0x42, 0x3c, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, + 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x24, 0x00, 0x00, 0x42, 0x24, 0x18, + 0x18, 0x24, 0x42, 0x00, 0x00, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00, + 0x00, 0x7e, 0x04, 0x08, 0x10, 0x20, 0x7e, 0x00, 0x00, 0x0e, 0x08, 0x08, + 0x08, 0x08, 0x0e, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, + 0x00, 0x70, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00, 0x10, 0x38, 0x54, + 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x7e, 0x00, 0x00, 0x00, 0x38, 0x04, + 0x3c, 0x44, 0x3c, 0x00, 0x00, 0x20, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x00, + 0x00, 0x00, 0x1c, 0x20, 0x20, 0x20, 0x1c, 0x00, 0x00, 0x04, 0x04, 0x3c, + 0x44, 0x44, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c, 0x00, + 0x00, 0x0c, 0x10, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x3c, 0x44, + 0x44, 0x3c, 0x04, 0x38, 0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x00, + 0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x38, 0x00, 0x00, 0x04, 0x00, 0x04, + 0x04, 0x04, 0x24, 0x18, 0x00, 0x20, 0x28, 0x30, 0x30, 0x28, 0x24, 0x00, + 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x68, 0x54, + 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00, + 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x78, 0x44, + 0x44, 0x78, 0x40, 0x40, 0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x06, + 0x00, 0x00, 0x1c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x38, 0x40, + 0x38, 0x04, 0x78, 0x00, 0x00, 0x10, 0x38, 0x10, 0x10, 0x10, 0x0c, 0x00, + 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x44, 0x44, + 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x44, 0x54, 0x54, 0x54, 0x28, 0x00, + 0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, + 0x44, 0x3c, 0x04, 0x38, 0x00, 0x00, 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, + 0x00, 0x0e, 0x08, 0x30, 0x08, 0x08, 0x0e, 0x00, 0x00, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x00, 0x00, 0x70, 0x10, 0x0c, 0x10, 0x10, 0x70, 0x00, + 0x00, 0x14, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x99, 0xa1, + 0xa1, 0x99, 0x42, 0x3c +}; + +#endif diff --git a/MCUME_esp32/espspeccy/main/zx_filetyp_z80.c b/MCUME_esp32/espspeccy/main/zx_filetyp_z80.c new file mode 100644 index 0000000..31918a2 --- /dev/null +++ b/MCUME_esp32/espspeccy/main/zx_filetyp_z80.c @@ -0,0 +1,347 @@ +//-------------------------------------------------------------- +// File derived from: +// Datum : 27.01.2014 +// Version : 1.0 +// Autor : UB +// EMail : mc-4u(@)t-online.de +// Web : www.mikrocontroller-4u.de +//-------------------------------------------------------------- +#include "zx_filetyp_z80.h" +#include "emuapi.h" + +//------------------------------------------------------------- +extern uint8_t out_ram; + +//-------------------------------------------------------------- +// interne Funktionen +//-------------------------------------------------------------- +const uint8_t* p_decompFlashBlock(const uint8_t *block_adr); + + +void ZX_ReadFromFlash_SNA(Z80 *regs, const char * filename) +{ + uint8_t snafile[27]; + if (emu_FileOpen(filename)) { + if (emu_FileRead(&snafile[0], sizeof(snafile)) == sizeof(snafile)) { + // Load Z80 registers from SNA + regs->I = snafile[ 0]; + regs->HL1.B.l = snafile[ 1]; + regs->HL1.B.h = snafile[ 2]; + regs->DE1.B.l = snafile[ 3]; + regs->DE1.B.h = snafile[ 4]; + regs->BC1.B.l = snafile[ 5]; + regs->BC1.B.h = snafile[ 6]; + regs->AF1.B.l = snafile[ 7]; + regs->AF1.B.h = snafile[ 8]; + regs->HL.B.l = snafile[ 9]; + regs->HL.B.h = snafile[10]; + regs->DE.B.l = snafile[11]; + regs->DE.B.h = snafile[12]; + regs->BC.B.l = snafile[13]; + regs->BC.B.h = snafile[14]; + regs->IY.B.l = snafile[15]; + regs->IY.B.h = snafile[16]; + regs->IX.B.l = snafile[17]; + regs->IX.B.h = snafile[18]; + //#define IFF_1 0x01 /* IFF1 flip-flop */ +//#define IFF_IM1 0x02 /* 1: IM1 mode */ +//#define IFF_IM2 0x04 /* 1: IM2 mode */ +//#define IFF_2 0x08 /* IFF2 flip-flop */ +//#define IFF_EI 0x20 /* 1: EI pending */ +//#define IFF_HALT 0x80 /* 1: CPU HALTed */ + regs->R = snafile[20]; //R.W + regs->AF.B.l = snafile[21]; + regs->AF.B.h = snafile[22]; + regs->SP.B.l =snafile[23]; + regs->SP.B.h =snafile[24]; + regs->IFF = 0; + regs->IFF |= (((snafile[19]&0x04) >>2)?IFF_1:0); //regs->IFF1 = regs->IFF2 = ... + regs->IFF |= (((snafile[19]&0x04) >>2)?IFF_2:0); + regs->IFF |= (snafile[25]<< 1); // regs->IM = snafile[25]; + //regs->BorderColor = snafile[26]; + + + + // load RAM from SNA + int direc; + uint8_t b; + for (direc=0;direc!=0xbfff;direc++) + { + emu_FileRead(&b, 1); + WrZ80(direc+0x4000, b); + } + emu_FileClose(); + // SP to PC for SNA run + regs->PC.B.l = RdZ80(regs->SP.W); + regs->SP.W++; + regs->PC.B.h = RdZ80(regs->SP.W); + regs->SP.W++; + } + } +} + +//-------------------------------------------------------------- +// Unpack data from a file ( type = * .Z80 ) from flash +// And copy them to the memory of the ZX - Spectrum +// +// Data = pointer to the start of data +// Length = number of bytes +//-------------------------------------------------------------- +void ZX_ReadFromFlash_Z80(Z80 *R, const uint8_t *data, uint16_t length) +{ + const uint8_t *ptr; + const uint8_t *akt_block,*next_block; + uint8_t value1,value2; + uint8_t flag_version=0; + uint8_t flag_compressed=0; + uint16_t header_len; + uint16_t cur_addr; + + if(length==0) return; + if(length>0xC020) return; + + //---------------------------------- + // parsing header + // Byte : [0...29] + //---------------------------------- + + // Set pointer to data beginning + ptr=data; + + R->AF.B.h=*(ptr++); // A [0] + R->AF.B.l=*(ptr++); // F [1] + R->BC.B.l=*(ptr++); // C [2] + R->BC.B.h=*(ptr++); // B [3] + R->HL.B.l=*(ptr++); // L [4] + R->HL.B.h=*(ptr++); // H [5] + + // PC [6+7] + value1=*(ptr++); + value2=*(ptr++); + R->PC.W=(value2<<8)|value1; + if(R->PC.W==0x0000) { + flag_version=1; + } + else { + flag_version=0; + } + + // SP [8+9] + value1=*(ptr++); + value2=*(ptr++); + R->SP.W=(value2<<8)|value1; + + R->I=*(ptr++); // I [10] + R->R=*(ptr++); // R [11] + + // Comressed-Flag & Border [12] + value1=*(ptr++); + value2=((value1&0x0E)>>1); + OutZ80(0xFE, value2); // BorderColor + if((value1&0x20)!=0) { + flag_compressed=1; + } else { + flag_compressed=0; + } + + R->DE.B.l=*(ptr++); // E [13] + R->DE.B.h=*(ptr++); // D [14] + R->BC1.B.l=*(ptr++); // C1 [15] + R->BC1.B.h=*(ptr++); // B1 [16] + R->DE1.B.l=*(ptr++); // E1 [17] + R->DE1.B.h=*(ptr++); // D1 [18] + R->HL1.B.l=*(ptr++); // L1 [19] + R->HL1.B.h=*(ptr++); // H1 [20] + R->AF1.B.h=*(ptr++); // A1 [21] + R->AF1.B.l=*(ptr++); // F1 [22] + R->IY.B.l=*(ptr++); // Y [23] + R->IY.B.h=*(ptr++); // I [24] + R->IX.B.l=*(ptr++); // X [25] + R->IX.B.h=*(ptr++); // I [26] + + // Interrupt-Flag [27] + value1=*(ptr++); + if(value1!=0) { + // EI + R->IFF|=IFF_2|IFF_EI; + } + else { + // DI + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + } + value1=*(ptr++); // nc [28] + // Interrupt-Mode [29] + value1=*(ptr++); + if((value1&0x01)!=0) { + R->IFF|=IFF_IM1; + } + else { + R->IFF&=~IFF_IM1; + } + if((value1&0x02)!=0) { + R->IFF|=IFF_IM2; + } + else { + R->IFF&=~IFF_IM2; + } + + // restliche Register + R->ICount = R->IPeriod; + R->IRequest = INT_NONE; + R->IBackup = 0; + + //---------------------------------- + // save the data in RAM + // Byte : [30...n] + //---------------------------------- + + cur_addr=0x4000; // RAM start + + + if(flag_version==0) { + //----------------------- + // old Version + //----------------------- + if(flag_compressed==1) { + //----------------------- + // compressed + //----------------------- + while(ptr<(data+length)) { + value1=*(ptr++); + if(value1!=0xED) { + WrZ80(cur_addr++, value1); + } + else { + value2=*(ptr++); + if(value2!=0xED) { + WrZ80(cur_addr++, value1); + WrZ80(cur_addr++, value2); + } + else { + value1=*(ptr++); + value2=*(ptr++); + while(value1--) { + WrZ80(cur_addr++, value2); + } + } + } + } + } + else { + //----------------------- + // raw (uncompressed) + //----------------------- + while(ptr<(data+length)) { + value1=*(ptr++); + WrZ80(cur_addr++, value1); + } + } + } + else { + //----------------------- + // new Version + //----------------------- + // Header Laenge [30+31] + value1=*(ptr++); + value2=*(ptr++); + header_len=(value2<<8)|value1; + akt_block=(uint8_t*)(ptr+header_len); + // PC [32+33] + value1=*(ptr++); + value2=*(ptr++); + R->PC.W=(value2<<8)|value1; + + //------------------------ + // 1st block parsing + //------------------------ + next_block=p_decompFlashBlock(akt_block); + //------------------------ + // all other parsing + //------------------------ + while(next_block 26){ + return;//not dac pin + } + pinMode(pin, ANALOG); + uint8_t channel = pin - 25; + + + //Disable Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, SENS_SW_TONE_EN); + + if (channel) { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN2_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_DAC, value, RTC_IO_PDAC2_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC2_REG, RTC_IO_PDAC2_XPD_DAC | RTC_IO_PDAC2_DAC_XPD_FORCE); + } else { + //Disable Channel Tone + CLEAR_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, SENS_DAC_CW_EN1_M); + //Set the Dac value + SET_PERI_REG_BITS(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_DAC, value, RTC_IO_PDAC1_DAC_S); //dac_output + //Channel output enable + SET_PERI_REG_MASK(RTC_IO_PAD_DAC1_REG, RTC_IO_PDAC1_XPD_DAC | RTC_IO_PDAC1_DAC_XPD_FORCE); + } +} + +extern void dacWrite(uint8_t pin, uint8_t value) __attribute__ ((weak, alias("__dacWrite"))); diff --git a/MCUME_esp32/espvcs/components/Audio/esp32-hal-dac.h b/MCUME_esp32/espvcs/components/Audio/esp32-hal-dac.h new file mode 100644 index 0000000..c311be1 --- /dev/null +++ b/MCUME_esp32/espvcs/components/Audio/esp32-hal-dac.h @@ -0,0 +1,36 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_DAC_H_ +#define MAIN_ESP32_HAL_DAC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "driver/gpio.h" + +void dacWrite(uint8_t pin, uint8_t value); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_DAC_H_ */ diff --git a/MCUME_esp32/espvcs/components/Audio/esp32-hal-timer.c b/MCUME_esp32/espvcs/components/Audio/esp32-hal-timer.c new file mode 100644 index 0000000..17743a4 --- /dev/null +++ b/MCUME_esp32/espvcs/components/Audio/esp32-hal-timer.c @@ -0,0 +1,293 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/xtensa_api.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "soc/timer_group_struct.h" +#include "soc/dport_reg.h" +#include "esp_attr.h" +#include "esp_intr.h" + +#define HWTIMER_LOCK() portENTER_CRITICAL(timer->lock) +#define HWTIMER_UNLOCK() portEXIT_CRITICAL(timer->lock) + +typedef struct { + union { + struct { + uint32_t reserved0: 10; + uint32_t alarm_en: 1; /*When set alarm is enabled*/ + uint32_t level_int_en: 1; /*When set level type interrupt will be generated during alarm*/ + uint32_t edge_int_en: 1; /*When set edge type interrupt will be generated during alarm*/ + uint32_t divider: 16; /*Timer clock (T0/1_clk) pre-scale value.*/ + uint32_t autoreload: 1; /*When set timer 0/1 auto-reload at alarming is enabled*/ + uint32_t increase: 1; /*When set timer 0/1 time-base counter increment. When cleared timer 0 time-base counter decrement.*/ + uint32_t enable: 1; /*When set timer 0/1 time-base counter is enabled*/ + }; + uint32_t val; + } config; + uint32_t cnt_low; /*Register to store timer 0/1 time-base counter current value lower 32 bits.*/ + uint32_t cnt_high; /*Register to store timer 0 time-base counter current value higher 32 bits.*/ + uint32_t update; /*Write any value will trigger a timer 0 time-base counter value update (timer 0 current value will be stored in registers above)*/ + uint32_t alarm_low; /*Timer 0 time-base counter value lower 32 bits that will trigger the alarm*/ + uint32_t alarm_high; /*Timer 0 time-base counter value higher 32 bits that will trigger the alarm*/ + uint32_t load_low; /*Lower 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t load_high; /*higher 32 bits of the value that will load into timer 0 time-base counter*/ + uint32_t reload; /*Write any value will trigger timer 0 time-base counter reload*/ +} hw_timer_reg_t; + +typedef struct hw_timer_s { + hw_timer_reg_t * dev; + uint8_t num; + uint8_t group; + uint8_t timer; + portMUX_TYPE lock; +} hw_timer_t; + +static hw_timer_t hw_timer[4] = { + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE),0,0,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x0024),1,0,1,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1000),2,1,0,portMUX_INITIALIZER_UNLOCKED}, + {(hw_timer_reg_t *)(DR_REG_TIMERGROUP0_BASE + 0x1024),3,1,1,portMUX_INITIALIZER_UNLOCKED} +}; + +typedef void (*voidFuncPtr)(void); +static voidFuncPtr __timerInterruptHandlers[4] = {0,0,0,0}; + +void IRAM_ATTR __timerISR(void * arg){ + uint32_t s0 = TIMERG0.int_st_timers.val; + uint32_t s1 = TIMERG1.int_st_timers.val; + TIMERG0.int_clr_timers.val = s0; + TIMERG1.int_clr_timers.val = s1; + uint8_t status = (s1 & 3) << 2 | (s0 & 3); + uint8_t i = 4; + //restart the timers that should autoreload + while(i--){ + hw_timer_reg_t * dev = hw_timer[i].dev; + if((status & (1 << i)) && dev->config.autoreload){ + dev->config.alarm_en = 1; + } + } + i = 4; + //call callbacks + while(i--){ + if(__timerInterruptHandlers[i] && status & (1 << i)){ + __timerInterruptHandlers[i](); + } + } +} + +uint64_t timerRead(hw_timer_t *timer){ + timer->dev->update = 1; + uint64_t h = timer->dev->cnt_high; + uint64_t l = timer->dev->cnt_low; + return (h << 32) | l; +} + +uint64_t timerAlarmRead(hw_timer_t *timer){ + uint64_t h = timer->dev->alarm_high; + uint64_t l = timer->dev->alarm_low; + return (h << 32) | l; +} + +void timerWrite(hw_timer_t *timer, uint64_t val){ + timer->dev->load_high = (uint32_t) (val >> 32); + timer->dev->load_low = (uint32_t) (val); + timer->dev->reload = 1; +} + +void timerAlarmWrite(hw_timer_t *timer, uint64_t alarm_value, bool autoreload){ + timer->dev->alarm_high = (uint32_t) (alarm_value >> 32); + timer->dev->alarm_low = (uint32_t) alarm_value; + timer->dev->config.autoreload = autoreload; +} + +void timerSetConfig(hw_timer_t *timer, uint32_t config){ + timer->dev->config.val = config; +} + +uint32_t timerGetConfig(hw_timer_t *timer){ + return timer->dev->config.val; +} + +void timerSetCountUp(hw_timer_t *timer, bool countUp){ + timer->dev->config.increase = countUp; +} + +bool timerGetCountUp(hw_timer_t *timer){ + return timer->dev->config.increase; +} + +void timerSetAutoReload(hw_timer_t *timer, bool autoreload){ + timer->dev->config.autoreload = autoreload; +} + +bool timerGetAutoReload(hw_timer_t *timer){ + return timer->dev->config.autoreload; +} + +void timerSetDivider(hw_timer_t *timer, uint16_t divider){//2 to 65536 + if(!divider){ + divider = 0xFFFF; + } else if(divider == 1){ + divider = 2; + } + int timer_en = timer->dev->config.enable; + timer->dev->config.enable = 0; + timer->dev->config.divider = divider; + timer->dev->config.enable = timer_en; +} + +uint16_t timerGetDivider(hw_timer_t *timer){ + return timer->dev->config.divider; +} + +void timerStart(hw_timer_t *timer){ + timer->dev->config.enable = 1; +} + +void timerStop(hw_timer_t *timer){ + timer->dev->config.enable = 0; +} + +void timerRestart(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timer->dev->config.enable = 1; +} + +bool timerStarted(hw_timer_t *timer){ + return timer->dev->config.enable; +} + +void timerAlarmEnable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 1; +} + +void timerAlarmDisable(hw_timer_t *timer){ + timer->dev->config.alarm_en = 0; +} + +bool timerAlarmEnabled(hw_timer_t *timer){ + return timer->dev->config.alarm_en; +} + +hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){ + if(num > 3){ + return NULL; + } + hw_timer_t * timer = &hw_timer[num]; + if(timer->group) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP1_RST); + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG, DPORT_TIMERGROUP_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_TIMERGROUP_RST); + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + timer->dev->config.enable = 0; + timerSetDivider(timer, divider); + timerSetCountUp(timer, countUp); + timerSetAutoReload(timer, false); + timerAttachInterrupt(timer, NULL, false); + timerWrite(timer, 0); + timer->dev->config.enable = 1; + return timer; +} + +void timerEnd(hw_timer_t *timer){ + timer->dev->config.enable = 0; + timerAttachInterrupt(timer, NULL, false); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + static bool initialized = false; + static intr_handle_t intr_handle = NULL; + if(intr_handle){ + esp_intr_disable(intr_handle); + } + if(fn == NULL){ + timer->dev->config.level_int_en = 0; + timer->dev->config.edge_int_en = 0; + timer->dev->config.alarm_en = 0; + if(timer->num & 2){ + TIMERG1.int_ena.val &= ~BIT(timer->timer); + } else { + TIMERG0.int_ena.val &= ~BIT(timer->timer); + } + __timerInterruptHandlers[timer->num] = NULL; + } else { + __timerInterruptHandlers[timer->num] = fn; + timer->dev->config.level_int_en = edge?0:1;//When set, an alarm will generate a level type interrupt. + timer->dev->config.edge_int_en = edge?1:0;//When set, an alarm will generate an edge type interrupt. + int intr_source = 0; + if(!edge){ + if(timer->group){ + intr_source = ETS_TG1_T0_LEVEL_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_LEVEL_INTR_SOURCE + timer->timer; + } + } else { + if(timer->group){ + intr_source = ETS_TG1_T0_EDGE_INTR_SOURCE + timer->timer; + } else { + intr_source = ETS_TG0_T0_EDGE_INTR_SOURCE + timer->timer; + } + } + if(!initialized){ + initialized = true; + esp_intr_alloc(intr_source, (int)(ESP_INTR_FLAG_IRAM|ESP_INTR_FLAG_LOWMED|ESP_INTR_FLAG_EDGE), __timerISR, NULL, &intr_handle); + } else { + intr_matrix_set(esp_intr_get_cpu(intr_handle), intr_source, esp_intr_get_intno(intr_handle)); + } + if(timer->group){ + TIMERG1.int_ena.val |= BIT(timer->timer); + } else { + TIMERG0.int_ena.val |= BIT(timer->timer); + } + } + if(intr_handle){ + esp_intr_enable(intr_handle); + } +} + +void timerDetachInterrupt(hw_timer_t *timer){ + timerAttachInterrupt(timer, NULL, false); +} + +uint64_t timerReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} + +uint64_t timerAlarmReadMicros(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return timer_val * div / 80; +} + +double timerAlarmReadSeconds(hw_timer_t *timer){ + uint64_t timer_val = timerAlarmRead(timer); + uint16_t div = timerGetDivider(timer); + return (double)timer_val * div / 80000000; +} diff --git a/MCUME_esp32/espvcs/components/Audio/esp32-hal-timer.h b/MCUME_esp32/espvcs/components/Audio/esp32-hal-timer.h new file mode 100644 index 0000000..fa4e8c7 --- /dev/null +++ b/MCUME_esp32/espvcs/components/Audio/esp32-hal-timer.h @@ -0,0 +1,72 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_TIMER_H_ +#define MAIN_ESP32_HAL_TIMER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +#include "freertos/FreeRTOS.h" + +struct hw_timer_s; +typedef struct hw_timer_s hw_timer_t; + +hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp); +void timerEnd(hw_timer_t *timer); + +void timerSetConfig(hw_timer_t *timer, uint32_t config); +uint32_t timerGetConfig(hw_timer_t *timer); + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); +void timerDetachInterrupt(hw_timer_t *timer); + +void timerStart(hw_timer_t *timer); +void timerStop(hw_timer_t *timer); +void timerRestart(hw_timer_t *timer); +void timerWrite(hw_timer_t *timer, uint64_t val); +void timerSetDivider(hw_timer_t *timer, uint16_t divider); +void timerSetCountUp(hw_timer_t *timer, bool countUp); +void timerSetAutoReload(hw_timer_t *timer, bool autoreload); + +bool timerStarted(hw_timer_t *timer); +uint64_t timerRead(hw_timer_t *timer); +uint64_t timerReadMicros(hw_timer_t *timer); +double timerReadSeconds(hw_timer_t *timer); +uint16_t timerGetDivider(hw_timer_t *timer); +bool timerGetCountUp(hw_timer_t *timer); +bool timerGetAutoReload(hw_timer_t *timer); + +void timerAlarmEnable(hw_timer_t *timer); +void timerAlarmDisable(hw_timer_t *timer); +void timerAlarmWrite(hw_timer_t *timer, uint64_t interruptAt, bool autoreload); + +bool timerAlarmEnabled(hw_timer_t *timer); +uint64_t timerAlarmRead(hw_timer_t *timer); +uint64_t timerAlarmReadMicros(hw_timer_t *timer); +double timerAlarmReadSeconds(hw_timer_t *timer); + + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_TIMER_H_ */ diff --git a/MCUME_esp32/espvcs/components/Wire/.DS_Store b/MCUME_esp32/espvcs/components/Wire/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espvcs/components/Wire/.DS_Store differ diff --git a/MCUME_esp32/espvcs/components/Wire/Wire.cpp b/MCUME_esp32/espvcs/components/Wire/Wire.cpp new file mode 100644 index 0000000..851ba05 --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/Wire.cpp @@ -0,0 +1,368 @@ +/* + TwoWire.cpp - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified Nov 2017 by Chuck Todd (ctodd@cableone.net) - ESP32 ISR Support + */ + +extern "C" { +#include +#include +#include +} + +#include "esp32-hal-i2c.h" +#include "Wire.h" +//#include "Arduino.h" + + + + + +TwoWire::TwoWire(uint8_t bus_num) + :num(bus_num & 1) + ,sda(-1) + ,scl(-1) + ,i2c(NULL) + ,rxIndex(0) + ,rxLength(0) + ,rxQueued(0) + ,txIndex(0) + ,txLength(0) + ,txAddress(0) + ,txQueued(0) + ,transmitting(0) + ,last_error(I2C_ERROR_OK) + ,_timeOutMillis(50) +{} + +TwoWire::~TwoWire() +{ + flush(); + if(i2c) { + i2cRelease(i2c); + i2c=NULL; + } +} + +bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) +{ + if(sdaPin < 0) { // default param passed + if(num == 0) { + if(sda==-1) { + sdaPin = SDA; //use Default Pin + } else { + sdaPin = sda; // reuse prior pin + } + } else { + if(sda==-1) { + //log_e("no Default SDA Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sdaPin = sda; // reuse prior pin + } + } + } + + if(sclPin < 0) { // default param passed + if(num == 0) { + if(scl == -1) { + sclPin = SCL; // use Default pin + } else { + sclPin = scl; // reuse prior pin + } + } else { + if(scl == -1) { + //log_e("no Default SCL Pin for Second Peripheral"); + return false; //no Default pin for Second Peripheral + } else { + sclPin = scl; // reuse prior pin + } + } + } + + sda = sdaPin; + scl = sclPin; + i2c = i2cInit(num, sdaPin, sclPin, frequency); + if(!i2c) { + printf("I2C init failed"); + return false; + } + + flush(); + return true; + +} + +void TwoWire::setTimeOut(uint16_t timeOutMillis) +{ + _timeOutMillis = timeOutMillis; +} + +uint16_t TwoWire::getTimeOut() +{ + return _timeOutMillis; +} + +void TwoWire::setClock(uint32_t frequency) +{ + i2cSetFrequency(i2c, frequency); +} + +size_t TwoWire::getClock() +{ + return i2cGetFrequency(i2c); +} + +/* stickBreaker Nov 2017 ISR, and bigblock 64k-1 + */ +i2c_err_t TwoWire::writeTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop) +{ + last_error = i2cWrite(i2c, address, buff, size, sendStop, _timeOutMillis); + return last_error; +} + +i2c_err_t TwoWire::readTransmission(uint16_t address, uint8_t *buff, uint16_t size, bool sendStop, uint32_t *readCount) +{ + last_error = i2cRead(i2c, address, buff, size, sendStop, _timeOutMillis, readCount); + return last_error; +} + +void TwoWire::beginTransmission(uint16_t address) +{ + transmitting = 1; + txAddress = address; + txIndex = txQueued; // allow multiple beginTransmission(),write(),endTransmission(false) until endTransmission(true) + txLength = txQueued; + last_error = I2C_ERROR_OK; +} + +/*stickbreaker isr + */ +uint8_t TwoWire::endTransmission(bool sendStop) // Assumes Wire.beginTransaction(), Wire.write() +{ + if(transmitting == 1) { + last_error = writeTransmission(txAddress, &txBuffer[txQueued], txLength - txQueued, sendStop); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error == I2C_ERROR_CONTINUE){ + // txlength is howmany bytes in txbuffer have been use + txQueued = txLength; + } + } else { + last_error = I2C_ERROR_NO_BEGIN; + flush(); + } + txIndex = 0; + txLength = 0; + transmitting = 0; + return last_error; +} + +/* @stickBreaker 11/2017 fix for ReSTART timeout, ISR + */ +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop) +{ + //use internal Wire rxBuffer, multiple requestFrom()'s may be pending, try to share rxBuffer + uint32_t cnt = rxQueued; // currently queued reads, next available position in rxBuffer + if(cnt < (I2C_BUFFER_LENGTH-1) && (size + cnt) <= I2C_BUFFER_LENGTH) { // any room left in rxBuffer + rxQueued += size; + } else { // no room to receive more! + //log_e("rxBuff overflow %d", cnt + size); + cnt = 0; + last_error = I2C_ERROR_MEMORY; + flush(); + return cnt; + } + + last_error = readTransmission(address, &rxBuffer[cnt], size, sendStop, &cnt); + rxIndex = 0; + rxLength = rxQueued; + rxQueued = 0; + txQueued = 0; // the SendStop=true will restart all Queueing + if(last_error != I2C_ERROR_OK){ + cnt = 0; + } + return cnt; +} + +size_t TwoWire::write(uint8_t data) +{ + if(transmitting) { + if(txLength >= I2C_BUFFER_LENGTH) { + last_error = I2C_ERROR_MEMORY; + return 0; + } + txBuffer[txIndex] = data; + ++txIndex; + txLength = txIndex; + return 1; + } + last_error = I2C_ERROR_NO_BEGIN; // no begin, not transmitting + return 0; +} + +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + for(size_t i = 0; i < quantity; ++i) { + if(!write(data[i])) { + return i; + } + } + return quantity; + +} + +int TwoWire::available(void) +{ + int result = rxLength - rxIndex; + return result; +} + +int TwoWire::read(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + ++rxIndex; + } + return value; +} + +int TwoWire::peek(void) +{ + int value = -1; + if(rxIndex < rxLength) { + value = rxBuffer[rxIndex]; + } + return value; +} + +void TwoWire::flush(void) +{ + rxIndex = 0; + rxLength = 0; + txIndex = 0; + txLength = 0; + rxQueued = 0; + txQueued = 0; + i2cFlush(i2c); // cleanup +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop) +{ + return requestFrom(address, static_cast(quantity), static_cast(sendStop)); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity) +{ + return requestFrom(address, static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom(static_cast(address), static_cast(quantity), true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return static_cast(requestFrom(static_cast(address), static_cast(quantity), static_cast(sendStop))); +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission(static_cast(address)); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + beginTransmission(static_cast(address)); +} + +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +/* stickbreaker Nov2017 better error reporting + */ +uint8_t TwoWire::lastError() +{ + return (uint8_t)last_error; +} + +const char ERRORTEXT[] = + "OK\0" + "DEVICE\0" + "ACK\0" + "TIMEOUT\0" + "BUS\0" + "BUSY\0" + "MEMORY\0" + "CONTINUE\0" + "NO_BEGIN\0" + "\0"; + + +char * TwoWire::getErrorText(uint8_t err) +{ + uint8_t t = 0; + bool found = false; + char * message = (char*)&ERRORTEXT; + + while(!found && message[0]) { + found = t == err; + if(!found) { + message = message + strlen(message) + 1; + t++; + } + } + if(!found) { + return NULL; + } else { + return message; + } +} + +/*stickbreaker Dump i2c Interrupt buffer, i2c isr Debugging + */ + +uint32_t TwoWire::setDebugFlags( uint32_t setBits, uint32_t resetBits){ + return i2cDebug(i2c,setBits,resetBits); +} + +bool TwoWire::busy(void){ + return ((i2cGetStatus(i2c) & 16 )==16); +} + +TwoWire Wire = TwoWire(0); +TwoWire Wire1 = TwoWire(1); diff --git a/MCUME_esp32/espvcs/components/Wire/Wire.h b/MCUME_esp32/espvcs/components/Wire/Wire.h new file mode 100644 index 0000000..0420b2e --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/Wire.h @@ -0,0 +1,132 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified December 2014 by Ivan Grokhotkov (ivan@esp8266.com) - esp8266 support + Modified April 2015 by Hrsto Gochkov (ficeto@ficeto.com) - alternative esp8266 support + Modified November 2017 by Chuck Todd to use ISR and increase stability. +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include "esp32-hal-i2c.h" +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" + + + +#define SDA (gpio_num_t)4 +#define SCL (gpio_num_t)5 + + +#define STICKBREAKER V1.0.1 +#define I2C_BUFFER_LENGTH 128 +typedef void(*user_onRequest)(void); +typedef void(*user_onReceive)(uint8_t*, int); + +class TwoWire +{ +protected: + uint8_t num; + int8_t sda; + int8_t scl; + i2c_t * i2c; + + uint8_t rxBuffer[I2C_BUFFER_LENGTH]; + uint16_t rxIndex; + uint16_t rxLength; + uint16_t rxQueued; //@stickBreaker + + uint8_t txBuffer[I2C_BUFFER_LENGTH]; + uint16_t txIndex; + uint16_t txLength; + uint16_t txAddress; + uint16_t txQueued; //@stickbreaker + + uint8_t transmitting; + /* slave Mode, not yet Stickbreaker + static user_onRequest uReq[2]; + static user_onReceive uRcv[2]; + void onRequestService(void); + void onReceiveService(uint8_t*, int); + */ + i2c_err_t last_error; // @stickBreaker from esp32-hal-i2c.h + uint16_t _timeOutMillis; + +public: + TwoWire(uint8_t bus_num); + ~TwoWire(); + bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); + + void setClock(uint32_t frequency); // change bus clock without initing hardware + size_t getClock(); // current bus clock rate in hz + + void setTimeOut(uint16_t timeOutMillis); + uint16_t getTimeOut(); + + uint8_t lastError(); + char * getErrorText(uint8_t err); + + //@stickBreaker for big blocks and ISR model + i2c_err_t writeTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true); + i2c_err_t readTransmission(uint16_t address, uint8_t* buff, uint16_t size, bool sendStop=true, uint32_t *readCount=NULL); + + void beginTransmission(uint16_t address); + void beginTransmission(uint8_t address); + void beginTransmission(int address); + + uint8_t endTransmission(bool sendStop); + uint8_t endTransmission(void); + + uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint16_t address, uint8_t size); + uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop); + uint8_t requestFrom(uint8_t address, uint8_t size); + uint8_t requestFrom(int address, int size, int sendStop); + uint8_t requestFrom(int address, int size); + + size_t write(uint8_t); + size_t write(const uint8_t *, size_t); + int available(void); + int read(void); + int peek(void); + void flush(void); + + + + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + uint32_t setDebugFlags( uint32_t setBits, uint32_t resetBits); + bool busy(); +}; + +extern TwoWire Wire; +extern TwoWire Wire1; + + +/* +V1.0.1 02AUG2018 First Fix after release, Correct ReSTART handling, change Debug control, change begin() + to a function, this allow reporting if bus cannot be initialized, Wire.begin() can be used to recover + a hung bus busy condition. +V0.2.2 13APR2018 preserve custom SCL,SDA,Frequency when no parameters passed to begin() +V0.2.1 15MAR2018 Hardware reset, Glitch prevention, adding destructor for second i2c testing +*/ +#endif diff --git a/MCUME_esp32/espvcs/components/Wire/component.mk b/MCUME_esp32/espvcs/components/Wire/component.mk new file mode 100644 index 0000000..61ff442 --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +COMPONENT_ADD_INCLUDEDIRS := . +COMPONENT_SRCDIRS := . \ No newline at end of file diff --git a/MCUME_esp32/espvcs/components/Wire/esp32-hal-gpio.c b/MCUME_esp32/espvcs/components/Wire/esp32-hal-gpio.c new file mode 100644 index 0000000..999113f --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/esp32-hal-gpio.c @@ -0,0 +1,309 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include "stdint.h" +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "rom/ets_sys.h" +#include "esp_attr.h" +#include "esp_intr.h" +#include "rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" +#include "esp_system.h" + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; + bool functional; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin + +#define NOP() asm volatile ("nop") + +unsigned long IRAM_ATTR micros() +{ + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() +{ + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) +{ + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) +{ + uint32_t m = micros(); + if(us){ + uint32_t e = (m + us); + if(m > e){ //overflow + while(micros() > e){ + NOP(); + } + } + while(micros() < e){ + NOP(); + } + } +} +//#define I2C_DEV(i) (volatile i2c_dev_t *)((i)?DR_REG_I2C1_EXT_BASE:DR_REG_I2C_EXT_BASE) +//#define I2C_DEV(i) ((i2c_dev_t *)(REG_I2C_BASE(i))) +#define I2C_SCL_IDX(p) ((p==0)?I2CEXT0_SCL_OUT_IDX:((p==1)?I2CEXT1_SCL_OUT_IDX:0)) +#define I2C_SDA_IDX(p) ((p==0)?I2CEXT0_SDA_OUT_IDX:((p==1)?I2CEXT1_SDA_OUT_IDX:0)) + +#define DR_REG_I2C_EXT_BASE_FIXED 0x60013000 +#define DR_REG_I2C1_EXT_BASE_FIXED 0x60027000 + +/* Stickbreaker ISR mode debug support + +ENABLE_I2C_DEBUG_BUFFER + Enable debug interrupt history buffer, fifoTx history buffer. + Setting this define will result in 2570 bytes of RAM being used whenever CORE_DEBUG_LEVEL + is higher than WARNING. Unless you are debugging a problem in the I2C subsystem, + I would recommend you leave it commented out. + */ + +//#define ENABLE_I2C_DEBUG_BUFFER + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) +#define INTBUFFMAX 64 +#define FIFOMAX 512 +static uint32_t intBuff[INTBUFFMAX][3][2]; +static uint32_t intPos[2]= {0,0}; +static uint16_t fifoBuffer[FIFOMAX]; +static uint16_t fifoPos = 0; +#endif + +// start from tools/sdk/include/soc/soc/i2c_struct.h + +typedef union { + struct { + uint32_t byte_num: 8; /*Byte_num represent the number of data need to be send or data need to be received.*/ + uint32_t ack_en: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_exp: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t ack_val: 1; /*ack_check_en ack_exp and ack value are used to control the ack bit.*/ + uint32_t op_code: 3; /*op_code is the command 0:RSTART 1:WRITE 2:READ 3:STOP . 4:END.*/ + uint32_t reserved14: 17; + uint32_t done: 1; /*When command0 is done in I2C Master mode this bit changes to high level.*/ + }; + uint32_t val; +} I2C_COMMAND_t; + +typedef union { + struct { + uint32_t rx_fifo_full_thrhd: 5; + uint32_t tx_fifo_empty_thrhd:5; //Config tx_fifo empty threhd value when using apb fifo access * / + uint32_t nonfifo_en: 1; //Set this bit to enble apb nonfifo access. * / + uint32_t fifo_addr_cfg_en: 1; //When this bit is set to 1 then the byte after address represent the offset address of I2C Slave's ram. * / + uint32_t rx_fifo_rst: 1; //Set this bit to reset rx fifo when using apb fifo access. * / + // chuck while this bit is 1, the RX fifo is held in REST, Toggle it * / + uint32_t tx_fifo_rst: 1; //Set this bit to reset tx fifo when using apb fifo access. * / + // chuck while this bit is 1, the TX fifo is held in REST, Toggle it * / + uint32_t nonfifo_rx_thres: 6; //when I2C receives more than nonfifo_rx_thres data it will produce rx_send_full_int_raw interrupt and update the current offset address of the receiving data.* / + uint32_t nonfifo_tx_thres: 6; //when I2C sends more than nonfifo_tx_thres data it will produce tx_send_empty_int_raw interrupt and update the current offset address of the sending data. * / + uint32_t reserved26: 6; + }; + uint32_t val; +} I2C_FIFO_CONF_t; + +typedef union { + struct { + uint32_t rx_fifo_start_addr: 5; /*This is the offset address of the last receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t rx_fifo_end_addr: 5; /*This is the offset address of the first receiving data as described in nonfifo_rx_thres_register.*/ + uint32_t tx_fifo_start_addr: 5; /*This is the offset address of the first sending data as described in nonfifo_tx_thres register.*/ + uint32_t tx_fifo_end_addr: 5; /*This is the offset address of the last sending data as described in nonfifo_tx_thres register.*/ + uint32_t reserved20: 12; + }; + uint32_t val; + } I2C_FIFO_ST_t; + +// end from tools/sdk/include/soc/soc/i2c_struct.h + +// sync between dispatch(i2cProcQueue) and worker(i2c_isr_handler_default) +typedef enum { + //I2C_NONE=0, + I2C_STARTUP=1, + I2C_RUNNING, + I2C_DONE +} I2C_STAGE_t; + +typedef enum { + I2C_NONE=0, + I2C_MASTER, + I2C_SLAVE, + I2C_MASTERSLAVE +} I2C_MODE_t; + +// internal Error condition +typedef enum { + // I2C_NONE=0, + I2C_OK=1, + I2C_ERROR, + I2C_ADDR_NAK, + I2C_DATA_NAK, + I2C_ARBITRATION, + I2C_TIMEOUT +} I2C_ERROR_t; + +// i2c_event bits for EVENTGROUP bits +// needed to minimize change events, FreeRTOS Daemon overload, so ISR will only set values +// on Exit. Dispatcher will set bits for each dq before/after ISR completion +#define EVENT_ERROR_NAK (BIT(0)) +#define EVENT_ERROR (BIT(1)) +#define EVENT_ERROR_BUS_BUSY (BIT(2)) +#define EVENT_RUNNING (BIT(3)) +#define EVENT_DONE (BIT(4)) +#define EVENT_IN_END (BIT(5)) +#define EVENT_ERROR_PREV (BIT(6)) +#define EVENT_ERROR_TIMEOUT (BIT(7)) +#define EVENT_ERROR_ARBITRATION (BIT(8)) +#define EVENT_ERROR_DATA_NAK (BIT(9)) +#define EVENT_MASK 0x3F + +// control record for each dq entry +typedef union { + struct { + uint32_t addr: 16; // I2C address, if 10bit must have 0x7800 mask applied, else 8bit + uint32_t mode: 1; // transaction direction 0 write, 1 read + uint32_t stop: 1; // sendStop 0 no, 1 yes + uint32_t startCmdSent: 1; // START cmd has been added to command[] + uint32_t addrCmdSent: 1; // addr WRITE cmd has been added to command[] + uint32_t dataCmdSent: 1; // all necessary DATA(READ/WRITE) cmds added to command[] + uint32_t stopCmdSent: 1; // completed all necessary commands + uint32_t addrReq: 2; // number of addr bytes need to send address + uint32_t addrSent: 2; // number of addr bytes added to FIFO + uint32_t reserved_31: 6; + }; + uint32_t val; +} I2C_DATA_CTRL_t; + +// individual dq element +typedef struct { + uint8_t *data; // data pointer for read/write buffer + uint16_t length; // size of data buffer + uint16_t position; // current position for next char in buffer (lock, portMAX_DELAY) != pdPASS) +#define I2C_MUTEX_UNLOCK() xSemaphoreGive(i2c->lock) + +static i2c_t _i2c_bus_array[2] = { + {(volatile i2c_dev_t *)(DR_REG_I2C_EXT_BASE_FIXED), NULL, 0, -1, -1, I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0}, + {(volatile i2c_dev_t *)(DR_REG_I2C1_EXT_BASE_FIXED), NULL, 1, -1, -1,I2C_NONE,I2C_NONE,I2C_ERROR_OK,NULL,NULL,NULL,0,0,0,0,0,0} +}; +#endif + +/* + * index - command index (0 to 15) + * op_code - is the command + * byte_num - This register is to store the amounts of data that is read and written. byte_num in RSTART, STOP, END is null. + * ack_val - Each data byte is terminated by an ACK bit used to set the bit level. + * ack_exp - This bit is to set an expected ACK value for the transmitter. + * ack_check - This bit is to decide whether the transmitter checks ACK bit. 1 means yes and 0 means no. + * */ + + +/* Stickbreaker ISR mode debug support + */ +static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR)&&(defined ENABLE_I2C_DEBUG_BUFFER) + static const char * const cmdName[] ={"RSTART","WRITE","READ","STOP","END"}; + uint8_t i=0; + while(i<16) { + I2C_COMMAND_t c; + c.val=i2c->dev->command[i].val; + i++; + } +#endif +} + +/* Stickbreaker ISR mode debug support + */ +static void i2cDumpDqData(i2c_t * i2c) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a=0; + char buff[140]; + I2C_DATA_QUEUE_t *tdq; + int digits=0,lenDigits=0; + a = i2c->queueCount; + while(a>0) { + digits++; + a /= 10; + } + while(aqueueCount) { // find maximum number of len decimal digits for formatting + if (i2c->dq[a].length > lenDigits ) lenDigits = i2c->dq[a].length; + a++; + } + a=0; + while(lenDigits>0){ + a++; + lenDigits /= 10; + } + lenDigits = a; + a = 0; + while(aqueueCount) { + tdq=&i2c->dq[a]; + char buf1[10],buf2[10]; + sprintf(buf1,"%0*d",lenDigits,tdq->length); + sprintf(buf2,"%0*d",lenDigits,tdq->position); + (tdq->ctrl.addr>0x100)?"10":"7", + (tdq->ctrl.addr>0x100)?(((tdq->ctrl.addr&0x600)>>1)|(tdq->ctrl.addr&0xff)):(tdq->ctrl.addr>>1), + (tdq->ctrl.mode)?'R':'W', + (tdq->ctrl.stop)?"STOP":"", + tdq->data, + buf1,buf2, + tdq->ctrl.startCmdSent,tdq->ctrl.addrCmdSent,tdq->ctrl.dataCmdSent,(tdq->ctrl.stop)?tdq->ctrl.stopCmdSent:0,tdq->ctrl.addrSent + ); + uint16_t offset = 0; + while(offsetlength) { + memset(buff,' ',140); + buff[139]='\0'; + uint16_t i = 0,j; + j=sprintf(buff,"0x%04x: ",offset); + while((i<32)&&(offset < tdq->length)) { + char ch = tdq->data[offset]; + sprintf((char*)&buff[(i*3)+41],"%02x ",ch); + if((ch<32)||(ch>126)) { + ch='.'; + } + j+=sprintf((char*)&buff[j],"%c",ch); + buff[j]=' '; + i++; + offset++; + } + } + a++; + } +#endif +} + +static void i2cDumpI2c(i2c_t * i2c) +{ +#if !CONFIG_DISABLE_HAL_LOCKS +#endif + + if(i2c->dq) { + i2cDumpDqData(i2c); + } +} + +static void i2cDumpInts(uint8_t num) +{ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + uint32_t b; + for(uint32_t a=1; a<=INTBUFFMAX; a++) { + b=(a+intPos[num])%INTBUFFMAX; + if(intBuff[b][0][num]!=0) { + //log_i("[%02d]\t0x%04x\t0x%04x\t0x%04x\t0x%04x\t0x%08x",b,((intBuff[b][0][num]>>16)&0xFFFF),(intBuff[b][0][num]&0xFFFF),((intBuff[b][1][num]>>16)&0xFFFF),(intBuff[b][1][num]&0xFFFF),intBuff[b][2][num]); + } + } +#else +#endif +} + +static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + typedef union { + struct { + uint32_t ack_rec: 1; /*This register stores the value of ACK bit.*/ + uint32_t slave_rw: 1; /*when in slave mode 1:master read slave 0: master write slave.*/ + uint32_t time_out: 1; /*when I2C takes more than time_out_reg clocks to receive a data then this register changes to high level.*/ + uint32_t arb_lost: 1; /*when I2C lost control of SDA line this register changes to high level.*/ + uint32_t bus_busy: 1; /*1:I2C bus is busy transferring data. 0:I2C bus is in idle state.*/ + uint32_t slave_addressed: 1; /*when configured as i2c slave and the address send by master is equal to slave's address then this bit will be high level.*/ + uint32_t byte_trans: 1; /*This register changes to high level when one byte is transferred.*/ + uint32_t reserved7: 1; + uint32_t rx_fifo_cnt: 6; /*This register represent the amount of data need to send.*/ + uint32_t reserved14: 4; + uint32_t tx_fifo_cnt: 6; /*This register stores the amount of received data in ram.*/ + uint32_t scl_main_state_last: 3; /*This register stores the value of state machine for i2c module. 3'h0: SCL_MAIN_IDLE 3'h1: SCL_ADDRESS_SHIFT 3'h2: SCL_ACK_ADDRESS 3'h3: SCL_RX_DATA 3'h4 SCL_TX_DATA 3'h5:SCL_SEND_ACK 3'h6:SCL_WAIT_ACK*/ + uint32_t reserved27: 1; + uint32_t scl_state_last: 3; /*This register stores the value of state machine to produce SCL. 3'h0: SCL_IDLE 3'h1:SCL_START 3'h2:SCL_LOW_EDGE 3'h3: SCL_LOW 3'h4:SCL_HIGH_EDGE 3'h5:SCL_HIGH 3'h6:SCL_STOP*/ + uint32_t reserved31: 1; + }; + uint32_t val; + } status_reg; + + status_reg sr; + sr.val= i2c->dev->status_reg.val; + +#endif +} + +static void i2cDumpFifo(i2c_t * i2c){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) +char buf[64]; +uint16_t k = 0; +uint16_t i = fifoPos+1; + i %=FIFOMAX; +while((fifoBuffer[i]==0)&&(i!=fifoPos)){ + i++; + i %=FIFOMAX; +} +if(i != fifoPos){// actual data + do{ + if(fifoBuffer[i] & 0x8000){ // address byte + if(fifoBuffer[i] & 0x100) { // read + if(fifoBuffer[i] & 0x1) { // valid read dev id + k+= sprintf(&buf[k],"READ 0x%02X",(fifoBuffer[i]&0xff)>>1); + } else { // invalid read dev id + k+= sprintf(&buf[k],"Bad READ 0x%02X",(fifoBuffer[i]&0xff)); + } + } else { // write + if(fifoBuffer[i] & 0x1) { // bad write dev id + k+= sprintf(&buf[k],"bad WRITE 0x%02X",(fifoBuffer[i]&0xff)); + } else { // good Write + k+= sprintf(&buf[k],"WRITE 0x%02X",(fifoBuffer[i]&0xff)>>1); + } + } + } else k += sprintf(&buf[k],"% 4X ",fifoBuffer[i]); + + i++; + i %= FIFOMAX; + bool outBuffer=false; + if( fifoBuffer[i] & 0x8000){ + outBuffer=true; + k=0; + } + outBuffer = false; + if(k>50) { + k=sprintf(buf,"-> "); + } + }while( i!= fifoPos); +} +#endif +} + +static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){ +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER) + if( trigger ){ + //log_i("%s",locus); + if(trigger & 1) i2cDumpI2c(i2c); + if(trigger & 2) i2cDumpInts(i2c->num); + if(trigger & 4) i2cDumpCmdQueue(i2c); + if(trigger & 8) i2cDumpStatus(i2c); + if(trigger & 16) i2cDumpFifo(i2c); + } +#endif +} + // end of debug support routines + +static void IRAM_ATTR i2cSetCmd(i2c_t * i2c, uint8_t index, uint8_t op_code, uint8_t byte_num, bool ack_val, bool ack_exp, bool ack_check) +{ + I2C_COMMAND_t cmd; + cmd.val=0; + cmd.ack_en = ack_check; + cmd.ack_exp = ack_exp; + cmd.ack_val = ack_val; + cmd.byte_num = byte_num; + cmd.op_code = op_code; + i2c->dev->command[index].val = cmd.val; +} + + +static void IRAM_ATTR fillCmdQueue(i2c_t * i2c, bool INTS) +{ + /* this function is called on initial i2cProcQueue() or when a I2C_END_DETECT_INT occurs + */ + uint16_t cmdIdx = 0; + uint16_t qp = i2c->queuePos; // all queues before queuePos have been completely processed, + // so look start by checking the 'current queue' so see if it needs commands added to + // hardware peripheral command list. walk through each queue entry until all queues have been + // checked + bool done; + bool needMoreCmds = false; + bool ena_rx=false; // if we add a read op, better enable Rx_Fifo IRQ + bool ena_tx=false; // if we add a Write op, better enable TX_Fifo IRQ + + while(!needMoreCmds&&(qp < i2c->queueCount)) { // check if more possible cmds + if(i2c->dq[qp].ctrl.stopCmdSent) {// marks that all required cmds[] have been added to peripheral + qp++; + } else { + needMoreCmds=true; + } + } + + done=(!needMoreCmds)||(cmdIdx>14); + + while(!done) { // fill the command[] until either 0..14 filled or out of cmds and last cmd is STOP + //CMD START + I2C_DATA_QUEUE_t *tdq=&i2c->dq[qp]; // simpler coding + + if((!tdq->ctrl.startCmdSent) && (cmdIdx < 14)) { // has this dq element's START command been added? + // (cmdIdx<14) because a START op cannot directly precede an END op, else a time out cascade occurs + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_RSTART, 0, false, false, false); + tdq->ctrl.startCmdSent=1; + } + + //CMD WRITE ADDRESS + if((!done)&&(tdq->ctrl.startCmdSent)) { // have to leave room for continue(END), and START must have been sent! + if(!tdq->ctrl.addrCmdSent) { + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, tdq->ctrl.addrReq, false, false, true); //load address in cmdlist, validate (low) ack + tdq->ctrl.addrCmdSent=1; + done =(cmdIdx>14); + ena_tx=true; // tx Data necessary + } + } + + /* Can I have another Sir? + ALL CMD queues must be terminated with either END or STOP. + + If END is used, when refilling the cmd[] next time, no entries from END to [15] can be used. + AND the cmd[] must be filled starting at [0] with commands. Either fill all 15 [0]..[14] and leave the + END in [15] or include a STOP in one of the positions [0]..[14]. Any entries after a STOP are IGNORED by the StateMachine. + The END operation does not complete until ctr->trans_start=1 has been issued. + + So, only refill from [0]..[14], leave [15] for a continuation(END) if necessary. + As a corollary, once END exists in [15], you do not need to overwrite it for the + next continuation. It is never modified. But, I update it every time because it might + actually be the first time! + + 23NOV17 START cannot proceed END. if START is in[14], END cannot be in [15]. + So, if END is moved to [14], [14] and [15] can no longer be used for anything other than END. + If a START is found in [14] then a prior READ or WRITE must be expanded so that there is no START element in [14]. + */ + + if((!done)&&(tdq->ctrl.addrCmdSent)) { //room in command[] for at least One data (read/Write) cmd + uint8_t blkSize=0; // max is 255 + while(( tdq->cmdBytesNeeded > tdq->ctrl.mode )&&(!done )) { // more bytes needed and room in cmd queue, leave room for END + blkSize = (tdq->cmdBytesNeeded > 255)?255:(tdq->cmdBytesNeeded - tdq->ctrl.mode); // Last read cmd needs different ACK setting, so leave 1 byte remainder on reads + tdq->cmdBytesNeeded -= blkSize; + if(tdq->ctrl.mode==1) { //read mode + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, blkSize,false,false,false); // read cmd, this can't be the last read. + ena_rx=true; // need to enable rxFifo IRQ + } else { // write + i2cSetCmd(i2c, cmdIdx++, I2C_CMD_WRITE, blkSize, false, false, true); // check for Nak + ena_tx=true; // need to enable txFifo IRQ + } + done = cmdIdx>14; //have to leave room for END + } + + if(!done) { // buffer is not filled completely + if((tdq->ctrl.mode==1)&&(tdq->cmdBytesNeeded==1)) { //special last read byte NAK + i2cSetCmd(i2c, (cmdIdx)++, I2C_CMD_READ, 1,true,false,false); + // send NAK to mark end of read + tdq->cmdBytesNeeded=0; + done = cmdIdx > 14; + ena_rx=true; + } + } + + tdq->ctrl.dataCmdSent=(tdq->cmdBytesNeeded==0); // enough command[] to send all data + + if((!done)&&(tdq->ctrl.dataCmdSent)) { // possibly add stop + if(!tdq->ctrl.stopCmdSent){ + if(tdq->ctrl.stop) { //send a stop + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_STOP,0,false,false,false); + done = cmdIdx > 14; + } + tdq->ctrl.stopCmdSent = 1; + } + } + } + + if((cmdIdx==14)&&(!tdq->ctrl.startCmdSent)) { + // START would have preceded END, causes SM TIMEOUT + // need to stretch out a prior WRITE or READ to two Command[] elements + done = false; // reuse it + uint16_t i = 13; // start working back until a READ/WRITE has >1 numBytes + cmdIdx =15; + while(!done) { + i2c->dev->command[i+1].val = i2c->dev->command[i].val; // push it down + if (((i2c->dev->command[i].op_code == 1)||(i2c->dev->command[i].op_code==2))) { + /* add a dummy read/write cmd[] with num_bytes set to zero,just a place holder in the cmd[]list + */ + i2c->dev->command[i].byte_num = 0; + done = true; + + } else { + if(i > 0) { + i--; + } else { // unable to stretch, fatal + i2cDumpCmdQueue(i2c); + done = true; + } + } + } + + } + + + if(cmdIdx==15) { //need continuation, even if STOP is in 14, it will not matter + // cmd buffer is almost full, Add END as a continuation feature + i2cSetCmd(i2c, (cmdIdx)++,I2C_CMD_END, 0,false,false,false); + i2c->dev->int_ena.end_detect=1; + i2c->dev->int_clr.end_detect=1; + done = true; + } + + if(!done) { + if(tdq->ctrl.stopCmdSent) { // this queue element has been completely added to command[] buffer + qp++; + if(qp < i2c->queueCount) { + tdq = &i2c->dq[qp]; + } else { + done = true; + } + } + } + + }// while(!done) + if(INTS) { // don't want to prematurely enable fifo ints until ISR is ready to handle them. + if(ena_rx) { + i2c->dev->int_ena.rx_fifo_full = 1; + } + if(ena_tx) { + i2c->dev->int_ena.tx_fifo_empty = 1; + } + } +} + +static void IRAM_ATTR fillTxFifo(i2c_t * i2c) +{ + /* + 12/01/2017 The Fifo's are independent, 32 bytes of tx and 32 bytes of Rx. + overlap is not an issue, just keep them full/empty the status_reg.xx_fifo_cnt + tells the truth. And the INT's fire correctly + */ + uint16_t a=i2c->queuePos; // currently executing dq, + bool full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + uint8_t cnt; + bool rxQueueEncountered = false; + while((a < i2c->queueCount) && !full) { + I2C_DATA_QUEUE_t *tdq = &i2c->dq[a]; + cnt=0; + // add to address to fifo ctrl.addr already has R/W bit positioned correctly + if(tdq->ctrl.addrSent < tdq->ctrl.addrReq) { // need to send address bytes + if(tdq->ctrl.addrReq==2) { //10bit + if(tdq->ctrl.addrSent==0) { //10bit highbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = ((tdq->ctrl.addr>>8)&0xFF); + cnt++; + tdq->ctrl.addrSent=1; //10bit highbyte sent + } + } + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + + if(tdq->ctrl.addrSent==1) { //10bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=2; //10bit lowbyte sent + } + } + } else { // 7bit} + if(tdq->ctrl.addrSent==0) { // 7bit Lowbyte needs sent + if(!full) { // room in fifo + i2c->dev->fifo_data.val = tdq->ctrl.addr&0xFF; + cnt++; + tdq->ctrl.addrSent=1; // 7bit lowbyte sent +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + uint16_t a = 0x8000 | tdq->ctrl.addr | (tdq->ctrl.mode<<8); + fifoBuffer[fifoPos++] = a; + fifoPos %= FIFOMAX; +#endif + } + } + } + } + // add write data to fifo + if(tdq->ctrl.mode==0) { // write + if(tdq->ctrl.addrSent == tdq->ctrl.addrReq) { //address has been sent, is Write Mode! + uint32_t moveCnt = 32 - i2c->dev->status_reg.tx_fifo_cnt; // how much room in txFifo? + while(( moveCnt>0)&&(tdq->position < tdq->length)) { +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + fifoBuffer[fifoPos++] = tdq->data[tdq->position]; + fifoPos %= FIFOMAX; +#endif + i2c->dev->fifo_data.val = tdq->data[tdq->position++]; + cnt++; + moveCnt--; + + } + } + } else { // read Queue Encountered, can't update QueuePos past this point, emptyRxfifo will do it + if( ! rxQueueEncountered ) { + rxQueueEncountered = true; + if(a > i2c->queuePos){ + i2c->queuePos = a; + } + } + } +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + + // update debug buffer tx counts + cnt += intBuff[intPos[i2c->num]][1][i2c->num]>>16; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF)|(cnt<<16); + +#endif + full=!(i2c->dev->status_reg.tx_fifo_cnt<31); + if(!full) { + a++; // check next buffer for address tx, or write data + } + } + + if(a >= i2c->queueCount ) { // disable TX IRQ, all tx Data has been queued + i2c->dev->int_ena.tx_fifo_empty= 0; + } + + i2c->dev->int_clr.tx_fifo_empty=1; +} + + +static void IRAM_ATTR emptyRxFifo(i2c_t * i2c) +{ + uint32_t d, cnt=0, moveCnt; + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt;//no need to check the reg until this many are read + + while((moveCnt > 0)&&(i2c->queuePos < i2c->queueCount)){ // data to move + + I2C_DATA_QUEUE_t *tdq =&i2c->dq[i2c->queuePos]; //short cut + + while((tdq->position >= tdq->length)&&( i2c->queuePos < i2c->queueCount)){ // find were to store + i2c->queuePos++; + tdq = &i2c->dq[i2c->queuePos]; + } + + if(i2c->queuePos >= i2c->queueCount){ // bad stuff, rx data but no place to put it! + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + if(tdq->ctrl.mode == 1){ // read command + if(moveCnt > (tdq->length - tdq->position)) { //make sure they go in this dq + // part of these reads go into the next dq + moveCnt = (tdq->length - tdq->position); + } + } else {// error + // discard + while(moveCnt>0){ + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + } + break; + } + + while(moveCnt > 0) { // store data + d = i2c->dev->fifo_data.val; + moveCnt--; + cnt++; + tdq->data[tdq->position++] = (d&0xFF); + } + + moveCnt = i2c->dev->status_reg.rx_fifo_cnt; //any more out there? + } + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&& (defined ENABLE_I2C_DEBUG_BUFFER) + // update Debug rxCount + cnt += (intBuff[intPos[i2c->num]][1][i2c->num])&0xffFF; + intBuff[intPos[i2c->num]][1][i2c->num] = (intBuff[intPos[i2c->num]][1][i2c->num]&0xFFFF0000)|cnt; +#endif +} + +static void IRAM_ATTR i2cIsrExit(i2c_t * i2c,const uint32_t eventCode,bool Fatal) +{ + + switch(eventCode) { + case EVENT_DONE: + i2c->error = I2C_OK; + break; + case EVENT_ERROR_NAK : + i2c->error =I2C_ADDR_NAK; + break; + case EVENT_ERROR_DATA_NAK : + i2c->error =I2C_DATA_NAK; + break; + case EVENT_ERROR_TIMEOUT : + i2c->error = I2C_TIMEOUT; + break; + case EVENT_ERROR_ARBITRATION: + i2c->error = I2C_ARBITRATION; + break; + default : + i2c->error = I2C_ERROR; + } + uint32_t exitCode = EVENT_DONE | eventCode |(Fatal?EVENT_ERROR:0); + if((i2c->queuePos < i2c->queueCount) && (i2c->dq[i2c->queuePos].ctrl.mode == 1)) { + emptyRxFifo(i2c); // grab last few characters + } + i2c->dev->int_ena.val = 0; // shut down interrupts + i2c->dev->int_clr.val = 0x1FFF; + i2c->stage = I2C_DONE; + i2c->exitCode = exitCode; //true eventcode + + portBASE_TYPE HPTaskAwoken = pdFALSE,xResult; + // try to notify Dispatch we are done, + // else the 50ms time out will recover the APP, just a little slower + HPTaskAwoken = pdFALSE; + xResult = xEventGroupSetBitsFromISR(i2c->i2c_event, exitCode, &HPTaskAwoken); + if(xResult == pdPASS) { + if(HPTaskAwoken==pdTRUE) { + portYIELD_FROM_ISR(); + } + } + +} + +static void IRAM_ATTR i2c_update_error_byte_cnt(i2c_t * i2c) +{ +/* i2c_update_error_byte_cnt 07/18/2018 + Only called after an error has occurred, so, most of the time this function is never used. + This function obliterates the need to interrupt monitor each byte transferred, at high bitrates + the byte interrupts were overwhelming the OS. Spurious Interrupts were being generated. + it updates errorByteCnt, errorQueue. + */ + uint16_t a=0; // start at top of DQ, count how many bytes added to tx fifo, and received from rx_fifo. + int16_t bc = 0; + I2C_DATA_QUEUE_t *tdq; + i2c->errorByteCnt = 0; + while( a < i2c->queueCount){ // add up all bytes loaded into fifo's + tdq = &i2c->dq[a]; + i2c->errorByteCnt += tdq->ctrl.addrSent; + i2c->errorByteCnt += tdq->position; + a++; + } + // now errorByteCnt contains total bytes moved into and out of FIFO's + // but, there may still be bytes waiting in Fifo's + i2c->errorByteCnt -= i2c->dev->status_reg.tx_fifo_cnt; // waiting to go out; + i2c->errorByteCnt += i2c->dev->status_reg.rx_fifo_cnt; // already received +// now walk thru DQ again, find which byte is 'current' + bc = i2c->errorByteCnt; + i2c->errorQueue = 0; + while( i2c->errorQueue < i2c->queueCount ){ + tdq = &i2c->dq[i2c->errorQueue]; + if(bc>0){ // not found yet + if( tdq->ctrl.addrSent >= bc){ // in address + bc = -1; // in address + break; + } else { + bc -= tdq->ctrl.addrSent; + if( tdq->length > bc) { // data nak + break; + } else { // count down + bc -= tdq->length; + } + } + } else break; + + i2c->errorQueue++; + } + + i2c->errorByteCnt = bc; + } + +static void IRAM_ATTR i2c_isr_handler_default(void* arg) +{ + i2c_t* p_i2c = (i2c_t*) arg; // recover data + uint32_t activeInt = p_i2c->dev->int_status.val&0x7FF; + + if(p_i2c->stage==I2C_DONE) { //get Out, can't service, not configured + p_i2c->dev->int_ena.val = 0; + p_i2c->dev->int_clr.val = 0x1FFF; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_VERBOSE + uint32_t raw = p_i2c->dev->int_raw.val; + //log_w("eject raw=%p, int=%p",raw,activeInt); +#endif + return; + } + while (activeInt != 0) { // Ordering of 'if(activeInt)' statements is important, don't change + + #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + if(activeInt==(intBuff[intPos[p_i2c->num]][0][p_i2c->num]&0x1fff)) { + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (((intBuff[intPos[p_i2c->num]][0][p_i2c->num]>>16)+1)<<16)|activeInt; + } else { + intPos[p_i2c->num]++; + intPos[p_i2c->num] %= INTBUFFMAX; + intBuff[intPos[p_i2c->num]][0][p_i2c->num] = (1<<16) | activeInt; + intBuff[intPos[p_i2c->num]][1][p_i2c->num] = 0; + } + + intBuff[intPos[p_i2c->num]][2][p_i2c->num] = xTaskGetTickCountFromISR(); // when IRQ fired + +#endif + + if (activeInt & I2C_TRANS_START_INT_ST_M) { + if(p_i2c->stage==I2C_STARTUP) { + p_i2c->stage=I2C_RUNNING; + } + + activeInt &=~I2C_TRANS_START_INT_ST_M; + p_i2c->dev->int_ena.trans_start = 1; // already enabled? why Again? + p_i2c->dev->int_clr.trans_start = 1; // so that will trigger after next 'END' + } + + if (activeInt & I2C_TXFIFO_EMPTY_INT_ST) {//should this be before Trans_start? + fillTxFifo(p_i2c); //fillTxFifo will enable/disable/clear interrupt + activeInt&=~I2C_TXFIFO_EMPTY_INT_ST; + } + + if(activeInt & I2C_RXFIFO_FULL_INT_ST) { + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + activeInt &=~I2C_RXFIFO_FULL_INT_ST; + } + + if (activeInt & I2C_ACK_ERR_INT_ST_M) {//fatal error, abort i2c service + if (p_i2c->mode == I2C_MASTER) { + i2c_update_error_byte_cnt(p_i2c); // calc which byte caused ack Error, check if address or data + if(p_i2c->errorByteCnt < 0 ) { // address + i2cIsrExit(p_i2c,EVENT_ERROR_NAK,true); + } else { + i2cIsrExit(p_i2c,EVENT_ERROR_DATA_NAK,true); //data + } + } + return; + } + + if (activeInt & I2C_TIME_OUT_INT_ST_M) { + // let Gross timeout occur, Slave may release SCL before the configured timeout expires + // the Statemachine only has a 13.1ms max timout, some Devices >500ms + p_i2c->dev->int_clr.time_out =1; + activeInt &=~I2C_TIME_OUT_INT_ST; + // since a timeout occurred, capture the rxFifo data + emptyRxFifo(p_i2c); + p_i2c->dev->int_clr.rx_fifo_full=1; + p_i2c->dev->int_ena.rx_fifo_full=1; //why? + + } + + if (activeInt & I2C_TRANS_COMPLETE_INT_ST_M) { + p_i2c->dev->int_clr.trans_complete = 1; + i2cIsrExit(p_i2c,EVENT_DONE,false); + return; // no more work to do + /* + // how does slave mode act? + if (p_i2c->mode == I2C_SLAVE) { // STOP detected + // empty fifo + // dispatch callback + */ + } + + if (activeInt & I2C_ARBITRATION_LOST_INT_ST_M) { //fatal + i2cIsrExit(p_i2c,EVENT_ERROR_ARBITRATION,true); + return; // no more work to do + } + + if (activeInt & I2C_SLAVE_TRAN_COMP_INT_ST_M) { + p_i2c->dev->int_clr.slave_tran_comp = 1; + // need to complete this ! + } + + if (activeInt & I2C_END_DETECT_INT_ST_M) { + p_i2c->dev->int_ena.end_detect = 0; + p_i2c->dev->int_clr.end_detect = 1; + p_i2c->dev->ctr.trans_start=0; + fillCmdQueue(p_i2c,true); // enable interrupts + p_i2c->dev->ctr.trans_start=1; // go for it + activeInt&=~I2C_END_DETECT_INT_ST_M; + } + + if(activeInt) { // clear unhandled if possible? What about Disabling interrupt? + p_i2c->dev->int_clr.val = activeInt; + // disable unhandled IRQ, + p_i2c->dev->int_ena.val = p_i2c->dev->int_ena.val & (~activeInt); + } + +// activeInt = p_i2c->dev->int_status.val; // start all over if another interrupt happened +// 01AUG2018 if another interrupt happened, the OS will schedule another interrupt +// this is the source of spurious interrupts + } +} + +/* Stickbreaker added for ISR 11/2017 +functional with Silicon date=0x16042000 + */ +static i2c_err_t i2cAddQueue(i2c_t * i2c,uint8_t mode, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop, bool dataOnly, EventGroupHandle_t event) +{ + // need to grab a MUTEX for exclusive Queue, + // what about if ISR is running? + + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + + I2C_DATA_QUEUE_t dqx; + dqx.data = dataPtr; + dqx.length = dataLen; + dqx.position = 0; + dqx.cmdBytesNeeded = dataLen; + dqx.ctrl.val = 0; + if( dataOnly) { + /* special case to add a queue data only element. + START and devAddr will not be sent, this dq element can have a STOP. + allows multiple buffers to be used for one transaction. + sequence: normal transaction(sendStop==false), [dataonly(sendStop==false)],dataOnly(sendStop==true) + *** Currently only works with WRITE, final byte NAK an READ will cause a fail between dq buffer elements. (in progress 30JUL2018) + */ + dqx.ctrl.startCmdSent = 1; // mark as already sent + dqx.ctrl.addrCmdSent = 1; + } else { + dqx.ctrl.addrReq = ((i2cDeviceAddr&0xFC00)==0x7800)?2:1; // 10bit or 7bit address + } + dqx.ctrl.addr = i2cDeviceAddr; + dqx.ctrl.mode = mode; + dqx.ctrl.stop= sendStop; + dqx.queueEvent = event; + + if(event) { // an eventGroup exist, so, initialize it + xEventGroupClearBits(event, EVENT_MASK); // all of them + } + + if(i2c->dq!=NULL) { // expand + //log_i("expand"); + I2C_DATA_QUEUE_t* tq =(I2C_DATA_QUEUE_t*)realloc(i2c->dq,sizeof(I2C_DATA_QUEUE_t)*(i2c->queueCount +1)); + if(tq!=NULL) { // ok + i2c->dq = tq; + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { // bad stuff, unable to allocate more memory! + return I2C_ERROR_MEMORY; + } + } else { // first Time + //log_i("new"); + i2c->queueCount=0; + i2c->dq =(I2C_DATA_QUEUE_t*)malloc(sizeof(I2C_DATA_QUEUE_t)); + if(i2c->dq!=NULL) { + memmove(&i2c->dq[i2c->queueCount++],&dqx,sizeof(I2C_DATA_QUEUE_t)); + } else { + return I2C_ERROR_MEMORY; + } + } + return I2C_ERROR_OK; +} + +i2c_err_t i2cAddQueueWrite(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + return i2cAddQueue(i2c,0,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cAddQueueRead(i2c_t * i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen,bool sendStop,EventGroupHandle_t event) +{ + //10bit read is kind of weird, first you do a 0byte Write with 10bit + // address, then a ReSTART then a 7bit Read using the the upper 7bit + + // readBit. + + // this might cause an internal register pointer problem with 10bit + // devices, But, Don't have any to test against. + // this is the Industry Standard specification. + + if((i2cDeviceAddr &0xFC00)==0x7800) { // ten bit read + i2c_err_t err = i2cAddQueue(i2c,0,i2cDeviceAddr,NULL,0,false,false,event); + if(err==I2C_ERROR_OK) { + return i2cAddQueue(i2c,1,(i2cDeviceAddr>>8),dataPtr,dataLen,sendStop,false,event); + } else { + return err; + } + } + return i2cAddQueue(i2c,1,i2cDeviceAddr,dataPtr,dataLen,sendStop,false,event); +} + +i2c_err_t i2cProcQueue(i2c_t * i2c, uint32_t *readCount, uint16_t timeOutMillis) +{ + /* do the hard stuff here + install ISR if necessary + setup EventGroup + handle bus busy? + */ + //log_e("procQueue i2c=%p",&i2c); + if(readCount){ //total reads accomplished in all queue elements + *readCount = 0; + } + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + if(i2c->debugFlags & 0xff000000) i2cTriggerDumps(i2c,(i2c->debugFlags>>24),"before ProcQueue"); + if (i2c->dev->status_reg.bus_busy) { // return error, let TwoWire() handle resetting the hardware. + /* if multi master then this if should be changed to this 03/12/2018 + if(multiMaster){// try to let the bus clear by its self + uint32_t timeOutTick = millis(); + while((i2c->dev->status_reg.bus_busy)&&(millis()-timeOutTickdev->status_reg.bus_busy){ // still busy, so die + */ + return I2C_ERROR_BUSY; + } + + I2C_MUTEX_LOCK(); + /* what about co-existence with SLAVE mode? + Should I check if a slaveMode xfer is in progress and hang + until it completes? + if i2c->stage == I2C_RUNNING or I2C_SLAVE_ACTIVE + */ + i2c->stage = I2C_DONE; // until ready + +#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER) + for(uint16_t i=0; inum] = 0; + intBuff[i][1][i2c->num] = 0; + intBuff[i][2][i2c->num] = 0; + } + intPos[i2c->num] = 0; + fifoPos = 0; + memset(fifoBuffer,0,FIFOMAX); +#endif + // EventGroup is used to signal transmission completion from ISR + // not always reliable. Sometimes, the FreeRTOS scheduler is maxed out and refuses request + // if that happens, this call hangs until the timeout period expires, then it continues. + if(!i2c->i2c_event) { + i2c->i2c_event = xEventGroupCreate(); + } + if(i2c->i2c_event) { + xEventGroupClearBits(i2c->i2c_event, 0xFF); + } else { // failed to create EventGroup + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + + i2c_err_t reason = I2C_ERROR_OK; + i2c->mode = I2C_MASTER; + i2c->dev->ctr.trans_start=0; // Pause Machine + i2c->dev->timeout.tout = 0xFFFFF; // max 13ms + i2c->dev->int_clr.val = 0x1FFF; // kill them All! + + i2c->dev->ctr.ms_mode = 1; // master! + i2c->queuePos=0; + i2c->errorByteCnt=0; + i2c->errorQueue = 0; + uint32_t totalBytes=0; // total number of bytes to be Moved! + // convert address field to required I2C format + while(i2c->queuePos < i2c->queueCount) { // need to push these address modes upstream, to AddQueue + I2C_DATA_QUEUE_t *tdq = &i2c->dq[i2c->queuePos++]; + uint16_t taddr=0; + if(tdq->ctrl.addrReq ==2) { // 10bit address + taddr =((tdq->ctrl.addr >> 7) & 0xFE) + |tdq->ctrl.mode; + taddr = (taddr <<8) || (tdq->ctrl.addr&0xFF); + } else { // 7bit address + taddr = ((tdq->ctrl.addr<<1)&0xFE) + |tdq->ctrl.mode; + } + tdq->ctrl.addr = taddr; // all fixed with R/W bit + totalBytes += tdq->length + tdq->ctrl.addrReq; // total number of byte to be moved! + } + i2c->queuePos=0; + + fillCmdQueue(i2c,false); // don't enable Tx/RX irq's + // start adding command[], END irq will keep it full + //Data Fifo will be filled after trans_start is issued + i2c->exitCode=0; + + I2C_FIFO_CONF_t f; + f.val = i2c->dev->fifo_conf.val; + f.rx_fifo_rst = 1; // fifo in reset + f.tx_fifo_rst = 1; // fifo in reset + f.nonfifo_en = 0; // use fifo mode + f.nonfifo_tx_thres = 31; + // need to adjust threshold based on I2C clock rate, at 100k, 30 usually works, + // sometimes the emptyRx() actually moves 31 bytes + // it hasn't overflowed yet, I cannot tell if the new byte is added while + // emptyRX() is executing or before? + // let i2cSetFrequency() set thrhds + // f.rx_fifo_full_thrhd = 30; // 30 bytes before INT is issued + // f.tx_fifo_empty_thrhd = 0; + f.fifo_addr_cfg_en = 0; // no directed access + i2c->dev->fifo_conf.val = f.val; // post them all + + f.rx_fifo_rst = 0; // release fifo + f.tx_fifo_rst = 0; + i2c->dev->fifo_conf.val = f.val; // post them all + + i2c->stage = I2C_STARTUP; // everything configured, now start the I2C StateMachine, and + // As soon as interrupts are enabled, the ISR will start handling them. + // it should receive a TXFIFO_EMPTY immediately, even before it + // receives the TRANS_START + + + uint32_t interruptsEnabled = + I2C_ACK_ERR_INT_ENA | // (BIT(10)) Causes Fatal Error Exit + I2C_TRANS_START_INT_ENA | // (BIT(9)) Triggered by trans_start=1, initial,END + I2C_TIME_OUT_INT_ENA | //(BIT(8)) Trigger by SLAVE SCL stretching, NOT an ERROR + I2C_TRANS_COMPLETE_INT_ENA | // (BIT(7)) triggered by STOP, successful exit + I2C_ARBITRATION_LOST_INT_ENA | // (BIT(5)) cause fatal error exit + I2C_SLAVE_TRAN_COMP_INT_ENA | // (BIT(4)) unhandled + I2C_END_DETECT_INT_ENA | // (BIT(3)) refills cmd[] list + I2C_RXFIFO_OVF_INT_ENA | //(BIT(2)) unhandled + I2C_TXFIFO_EMPTY_INT_ENA | // (BIT(1)) triggers fillTxFifo() + I2C_RXFIFO_FULL_INT_ENA; // (BIT(0)) trigger emptyRxFifo() + + i2c->dev->int_ena.val = interruptsEnabled; + + if(!i2c->intr_handle) { // create ISR for either peripheral + // log_i("create ISR %d",i2c->num); + uint32_t ret = 0; + uint32_t flags = ESP_INTR_FLAG_IRAM | //< ISR can be called if cache is disabled + ESP_INTR_FLAG_LOWMED | //< Low and medium prio interrupts. These can be handled in C. + ESP_INTR_FLAG_SHARED; //< Reduce resource requirements, Share interrupts + + if(i2c->num) { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT1_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } else { + ret = esp_intr_alloc_intrstatus(ETS_I2C_EXT0_INTR_SOURCE, flags, (uint32_t)&i2c->dev->int_status.val, interruptsEnabled, &i2c_isr_handler_default,i2c, &i2c->intr_handle); + } + + if(ret!=ESP_OK) { + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_MEMORY; + } + } + //hang until it completes. + + // how many ticks should it take to transfer totalBytes through the I2C hardware, + // add user supplied timeOutMillis to Calculated Value + + portTickType ticksTimeOut = ((totalBytes*10*1000)/(i2cGetFrequency(i2c))+timeOutMillis)/portTICK_PERIOD_MS; + + i2c->dev->ctr.trans_start=1; // go for it + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tBefore=xTaskGetTickCount(); +#endif + + // wait for ISR to complete the transfer, or until timeOut in case of bus fault, hardware problem + + uint32_t eBits = xEventGroupWaitBits(i2c->i2c_event,EVENT_DONE,pdFALSE,pdTRUE,ticksTimeOut); + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_ERROR + portTickType tAfter=xTaskGetTickCount(); +#endif + + + // if xEventGroupSetBitsFromISR() failed, the ISR could have succeeded but never been + // able to mark the success + + if(i2c->exitCode!=eBits) { // try to recover from O/S failure + // log_e("EventGroup Failed:%p!=%p",eBits,i2c->exitCode); + eBits=i2c->exitCode; + } + if((eBits&EVENT_ERROR)||(!(eBits & EVENT_DONE))){ // need accurate errorByteCnt for debug + i2c_update_error_byte_cnt(i2c); + } + + if(!(eBits==EVENT_DONE)&&(eBits&~(EVENT_ERROR_NAK|EVENT_ERROR_DATA_NAK|EVENT_ERROR|EVENT_DONE))) { // not only Done, therefore error, exclude ADDR NAK, DATA_NAK +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + + if(eBits&EVENT_DONE) { // no gross timeout + switch(i2c->error) { + case I2C_OK : + reason = I2C_ERROR_OK; + break; + case I2C_ERROR : + reason = I2C_ERROR_DEV; + break; + case I2C_ADDR_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_DATA_NAK: + reason = I2C_ERROR_ACK; + break; + case I2C_ARBITRATION: + reason = I2C_ERROR_BUS; + break; + case I2C_TIMEOUT: + reason = I2C_ERROR_TIMEOUT; + break; + default : + reason = I2C_ERROR_DEV; + } + } else { // GROSS timeout, shutdown ISR , report Timeout + i2c->stage = I2C_DONE; + i2c->dev->int_ena.val =0; + i2c->dev->int_clr.val = 0x1FFF; + i2c_update_error_byte_cnt(i2c); + if((i2c->errorByteCnt == 0)&&(i2c->errorQueue==0)) { // Bus Busy no bytes Moved + reason = I2C_ERROR_BUSY; + eBits = eBits | EVENT_ERROR_BUS_BUSY|EVENT_ERROR|EVENT_DONE; +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Busy Timeout start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } else { // just a timeout, some data made it out or in. + reason = I2C_ERROR_TIMEOUT; + eBits = eBits | EVENT_ERROR_TIMEOUT|EVENT_ERROR|EVENT_DONE; + +#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG + //log_d(" Gross Timeout Dead start=0x%x, end=0x%x, =%d, max=%d error=%d",tBefore,tAfter,(tAfter-tBefore),ticksTimeOut,i2c->error); + i2cDumpI2c(i2c); + i2cDumpInts(i2c->num); +#endif + } + } + + /* offloading all EventGroups to dispatch, EventGroups in ISR is not always successful + 11/20/2017 + if error, need to trigger all succeeding dataQueue events with the EVENT_ERROR_PREV + 07/22/2018 + Need to use the queueEvent value to identify transaction blocks, if an error occurs, + all subsequent queue items with the same queueEvent value will receive the EVENT_ERROR_PREV. + But, ProcQue should re-queue queue items that have a different queueEvent value(different transaction) + This change will support multi-thread i2c usage. Use the queueEvent as the transaction event + identifier. + */ + uint32_t b = 0; + + while(b < i2c->queueCount) { + if(i2c->dq[b].ctrl.mode==1 && readCount) { + *readCount += i2c->dq[b].position; // number of data bytes received + } + if(b < i2c->queuePos) { // before any error + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,EVENT_DONE); + } + } else if(b == i2c->queuePos) { // last processed queue + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits); + } + } else { // never processed queues + if(i2c->dq[b].queueEvent) { // this data queue element has an EventGroup + xEventGroupSetBits(i2c->dq[b].queueEvent,eBits|EVENT_ERROR_PREV); + } + } + b++; + } + if(i2c->debugFlags & 0x00ff0000) i2cTriggerDumps(i2c,(i2c->debugFlags>>16),"after ProcQueue"); + + I2C_MUTEX_UNLOCK(); + return reason; +} + +static void i2cReleaseISR(i2c_t * i2c) +{ + if(i2c->intr_handle) { + esp_intr_free(i2c->intr_handle); + i2c->intr_handle=NULL; + } +} + +static bool i2cCheckLineState(int8_t sda, int8_t scl){ + if(sda < 0 || scl < 0){ + return false;//return false since there is nothing to do + } + // if the bus is not 'clear' try the cycling SCL until SDA goes High or 9 cycles + digitalWrite(sda, HIGH); + digitalWrite(scl, HIGH); + pinMode(sda, PULLUP|OPEN_DRAIN|INPUT); + pinMode(scl, PULLUP|OPEN_DRAIN|OUTPUT); + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + //log_w("invalid state sda(%d)=%d, scl(%d)=%d", sda, digitalRead(sda), scl, digitalRead(scl)); + digitalWrite(scl, HIGH); + for(uint8_t a=0; a<9; a++) { + delayMicroseconds(5); + digitalWrite(scl, LOW); + delayMicroseconds(5); + digitalWrite(scl, HIGH); + if(digitalRead(sda)){ // bus recovered + //log_d("Recovered after %d Cycles",a+1); + break; + } + } + } + + if(!digitalRead(sda) || !digitalRead(scl)) { // bus in busy state + return false; // bus is busy + } + return true; +} + +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(scl, HIGH); + pinMode(scl, OPEN_DRAIN | PULLUP | INPUT | OUTPUT); + pinMatrixOutAttach(scl, I2C_SCL_IDX(i2c->num), false, false); + pinMatrixInAttach(scl, I2C_SCL_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(scl, false, false); + pinMatrixInDetach(I2C_SCL_IDX(i2c->num), false, false); + pinMode(scl, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + digitalWrite(sda, HIGH); + pinMode(sda, OPEN_DRAIN | PULLUP | INPUT | OUTPUT ); + pinMatrixOutAttach(sda, I2C_SDA_IDX(i2c->num), false, false); + pinMatrixInAttach(sda, I2C_SDA_IDX(i2c->num), false); + return I2C_ERROR_OK; +} + +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + pinMatrixOutDetach(sda, false, false); + pinMatrixInDetach(I2C_SDA_IDX(i2c->num), false, false); + pinMode(sda, INPUT | PULLUP); + return I2C_ERROR_OK; +} + +/* + * PUBLIC API + * */ +// 24Nov17 only supports Master Mode +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency) //before this is called, pins should be detached, else glitch +{ + //log_v("num=%d sda=%d scl=%d freq=%d",i2c_num, sda, scl, frequency); + if(i2c_num > 1) { + return NULL; + } + + i2c_t * i2c = &_i2c_bus_array[i2c_num]; + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + i2c->sda = sda; + i2c->scl = scl; + +#if !CONFIG_DISABLE_HAL_LOCKS + if(i2c->lock == NULL) { + i2c->lock = xSemaphoreCreateMutex(); + if(i2c->lock == NULL) { + return NULL; + } + } +#endif + I2C_MUTEX_LOCK(); + + i2cReleaseISR(i2c); // ISR exists, release it before disabling hardware + + if(frequency == 0) {// don't change existing frequency + frequency = i2cGetFrequency(i2c); + if(frequency == 0) { + frequency = 100000L; // default to 100khz + } + } + + if(i2c_num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST);// release reset + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); + } + i2c->dev->ctr.val = 0; + i2c->dev->ctr.ms_mode = 1; + i2c->dev->ctr.sda_force_out = 1 ; + i2c->dev->ctr.scl_force_out = 1 ; + i2c->dev->ctr.clk_en = 1; + + //the max clock number of receiving a data + i2c->dev->timeout.tout = 400000;//clocks max=1048575 + //disable apb nonfifo access + i2c->dev->fifo_conf.nonfifo_en = 0; + + i2c->dev->slave_addr.val = 0; + I2C_MUTEX_UNLOCK(); + + i2cSetFrequency(i2c, frequency); // reconfigure + + if(!i2cCheckLineState(i2c->sda, i2c->scl)){ + return NULL; + } + + if(i2c->sda >= 0){ + i2cAttachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cAttachSCL(i2c, i2c->scl); + } + return i2c; +} + +void i2cRelease(i2c_t *i2c) // release all resources, power down peripheral +{ + I2C_MUTEX_LOCK(); + + if(i2c->sda >= 0){ + i2cDetachSDA(i2c, i2c->sda); + } + if(i2c->scl >= 0){ + i2cDetachSCL(i2c, i2c->scl); + } + + i2cReleaseISR(i2c); + + if(i2c->i2c_event) { + vEventGroupDelete(i2c->i2c_event); + i2c->i2c_event = NULL; + } + + i2cFlush(i2c); + + // reset the I2C hardware and shut off the clock, power it down. + if(i2c->num == 0) { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT0_RST); //reset hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT0_CLK_EN); // shutdown hardware + } else { + DPORT_SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG,DPORT_I2C_EXT1_RST); //reset Hardware + DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_CLK_EN_REG,DPORT_I2C_EXT1_CLK_EN); // shutdown Hardware + } + + I2C_MUTEX_UNLOCK(); +} + +i2c_err_t i2cFlush(i2c_t * i2c) +{ + if(i2c==NULL) { + return I2C_ERROR_DEV; + } + i2cTriggerDumps(i2c,i2c->debugFlags & 0xff, "FLUSH"); + + // need to grab a MUTEX for exclusive Queue, + // what out if ISR is running? + i2c_err_t rc=I2C_ERROR_OK; + if(i2c->dq!=NULL) { + // log_i("free"); + // what about EventHandle? + free(i2c->dq); + i2c->dq = NULL; + } + i2c->queueCount=0; + i2c->queuePos=0; + // release Mutex + return rc; +} + +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis){ + i2c_err_t last_error = i2cAddQueueWrite(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, NULL, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount){ + i2c_err_t last_error=i2cAddQueueRead(i2c, address, buff, size, sendStop, NULL); + + if(last_error == I2C_ERROR_OK) { //queued + if(sendStop) { //now actually process the queued commands, including READs + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + if(last_error == I2C_ERROR_BUSY) { // try to clear the bus + if(i2cInit(i2c->num, i2c->sda, i2c->scl, 0)) { + last_error = i2cProcQueue(i2c, readCount, timeOutMillis); + } + } + i2cFlush(i2c); + } else { // stop not received, so wait for I2C stop, + last_error = I2C_ERROR_CONTINUE; + } + } + return last_error; +} + +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed) +{ + if(i2c == NULL) { + return I2C_ERROR_DEV; + } + I2C_FIFO_CONF_t f; + + uint32_t period = (APB_CLK_FREQ/clk_speed) / 2; + uint32_t halfPeriod = period/2; + uint32_t quarterPeriod = period/4; + + I2C_MUTEX_LOCK(); + + // Adjust Fifo thresholds based on frequency + f.val = i2c->dev->fifo_conf.val; + uint32_t a = (clk_speed / 50000L )+1; + if (a > 24) a=24; + f.rx_fifo_full_thrhd = 32 - a; + f.tx_fifo_empty_thrhd = a; + i2c->dev->fifo_conf.val = f.val; // set thresholds + //log_v("Fifo threshold=%d",a); + + //the clock num during SCL is low level + i2c->dev->scl_low_period.period = period; + //the clock num during SCL is high level + i2c->dev->scl_high_period.period = period; + + //the clock num between the negedge of SDA and negedge of SCL for start mark + i2c->dev->scl_start_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the negedge of SDA for restart mark + i2c->dev->scl_rstart_setup.time = halfPeriod; + + //the clock num after the STOP bit's posedge + i2c->dev->scl_stop_hold.time = halfPeriod; + //the clock num between the posedge of SCL and the posedge of SDA + i2c->dev->scl_stop_setup.time = halfPeriod; + + //the clock num I2C used to hold the data after the negedge of SCL. + i2c->dev->sda_hold.time = quarterPeriod; + //the clock num I2C used to sample data on SDA after the posedge of SCL + i2c->dev->sda_sample.time = quarterPeriod; + I2C_MUTEX_UNLOCK(); + return I2C_ERROR_OK; +} + +uint32_t i2cGetFrequency(i2c_t * i2c) +{ + if(i2c == NULL) { + return 0; + } + uint32_t result = 0; + uint32_t old_count = (i2c->dev->scl_low_period.period+i2c->dev->scl_high_period.period); + if(old_count>0) { + result = APB_CLK_FREQ / old_count; + } else { + result = 0; + } + return result; +} + + +uint32_t i2cDebug(i2c_t * i2c, uint32_t setBits, uint32_t resetBits){ + if(i2c != NULL) { + i2c->debugFlags = ((i2c->debugFlags | setBits) & ~resetBits); + return i2c->debugFlags; + } + return 0; + + } + +uint32_t i2cGetStatus(i2c_t * i2c){ + if(i2c != NULL){ + return i2c->dev->status_reg.val; + } + else return 0; +} +/* todo + 22JUL18 + need to add multi-thread capability, use dq.queueEvent as the group marker. When multiple threads + transactions are present in the same queue, and an error occurs, abort all succeeding unserviced transactions + with the same dq.queueEvent value. Succeeding unserviced transactions with different dq.queueEvent values + can be re-queued and processed independently. + 30JUL18 complete data only queue elements, this will allow transfers to use multiple data blocks, + */ + diff --git a/MCUME_esp32/espvcs/components/Wire/esp32-hal-i2c.h b/MCUME_esp32/espvcs/components/Wire/esp32-hal-i2c.h new file mode 100644 index 0000000..1a696ac --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/esp32-hal-i2c.h @@ -0,0 +1,82 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// modified Nov 2017 by Chuck Todd to support Interrupt Driven I/O + +#ifndef _ESP32_HAL_I2C_H_ +#define _ESP32_HAL_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "freertos/FreeRTOS.h" +#include "freertos/event_groups.h" + +// External Wire.h equivalent error Codes +typedef enum { + I2C_ERROR_OK=0, + I2C_ERROR_DEV, + I2C_ERROR_ACK, + I2C_ERROR_TIMEOUT, + I2C_ERROR_BUS, + I2C_ERROR_BUSY, + I2C_ERROR_MEMORY, + I2C_ERROR_CONTINUE, + I2C_ERROR_NO_BEGIN +} i2c_err_t; + +struct i2c_struct_t; +typedef struct i2c_struct_t i2c_t; + +i2c_t * i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t clk_speed); +void i2cRelease(i2c_t *i2c); // free ISR, Free DQ, Power off peripheral clock. Must call i2cInit() to recover +i2c_err_t i2cWrite(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis); +i2c_err_t i2cRead(i2c_t * i2c, uint16_t address, uint8_t* buff, uint16_t size, bool sendStop, uint16_t timeOutMillis, uint32_t *readCount); +i2c_err_t i2cFlush(i2c_t *i2c); +i2c_err_t i2cSetFrequency(i2c_t * i2c, uint32_t clk_speed); +uint32_t i2cGetFrequency(i2c_t * i2c); +uint32_t i2cGetStatus(i2c_t * i2c); // Status register of peripheral + +//Functions below should be used only if well understood +//Might be deprecated and removed in future +i2c_err_t i2cAttachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cDetachSCL(i2c_t * i2c, int8_t scl); +i2c_err_t i2cAttachSDA(i2c_t * i2c, int8_t sda); +i2c_err_t i2cDetachSDA(i2c_t * i2c, int8_t sda); + +//Stickbreakers ISR Support +i2c_err_t i2cProcQueue(i2c_t *i2c, uint32_t *readCount, uint16_t timeOutMillis); +i2c_err_t i2cAddQueueWrite(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); +i2c_err_t i2cAddQueueRead(i2c_t *i2c, uint16_t i2cDeviceAddr, uint8_t *dataPtr, uint16_t dataLen, bool SendStop, EventGroupHandle_t event); + +//stickbreaker debug support +uint32_t i2cDebug(i2c_t *, uint32_t setBits, uint32_t resetBits); +// Debug actions have 3 currently defined locus +// 0xXX------ : at entry of ProcQueue +// 0x--XX---- : at exit of ProcQueue +// 0x------XX : at entry of Flush +// +// bit 0 causes DumpI2c to execute +// bit 1 causes DumpInts to execute +// bit 2 causes DumpCmdqueue to execute +// bit 3 causes DumpStatus to execute +// bit 4 causes DumpFifo to execute + +#ifdef __cplusplus +} +#endif + +#endif /* _ESP32_HAL_I2C_H_ */ diff --git a/MCUME_esp32/espvcs/components/Wire/esp32-hal-matrix.c b/MCUME_esp32/espvcs/components/Wire/esp32-hal-matrix.c new file mode 100644 index 0000000..93e8849 --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/esp32-hal-matrix.c @@ -0,0 +1,52 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +#include +#include +#include "esp32-hal-matrix.h" +#include "esp_attr.h" +#include "rom/gpio.h" + + + +#define MATRIX_DETACH_OUT_SIG 0x100 +#define MATRIX_DETACH_IN_LOW_PIN 0x30 +#define MATRIX_DETACH_IN_LOW_HIGH 0x38 + +void IRAM_ATTR pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, function, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable) +{ + gpio_matrix_out(pin, MATRIX_DETACH_OUT_SIG, invertOut, invertEnable); +} + +void IRAM_ATTR pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted) +{ + gpio_matrix_in(pin, signal, inverted); +} + +void IRAM_ATTR pinMatrixInDetach(uint8_t signal, bool high, bool inverted) +{ + gpio_matrix_in(high?MATRIX_DETACH_IN_LOW_HIGH:MATRIX_DETACH_IN_LOW_PIN, signal, inverted); +} +/* +void IRAM_ATTR intrMatrixAttach(uint32_t source, uint32_t inum){ + intr_matrix_set(PRO_CPU_NUM, source, inum); +} +*/ + diff --git a/MCUME_esp32/espvcs/components/Wire/esp32-hal-matrix.h b/MCUME_esp32/espvcs/components/Wire/esp32-hal-matrix.h new file mode 100644 index 0000000..7feefea --- /dev/null +++ b/MCUME_esp32/espvcs/components/Wire/esp32-hal-matrix.h @@ -0,0 +1,35 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_MATRIX_H_ +#define _ESP32_HAL_MATRIX_H_ + + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "esp32-hal.h" +//#include "soc/gpio_sig_map.h" + +void pinMatrixOutAttach(uint8_t pin, uint8_t function, bool invertOut, bool invertEnable); +void pinMatrixOutDetach(uint8_t pin, bool invertOut, bool invertEnable); +void pinMatrixInAttach(uint8_t pin, uint8_t signal, bool inverted); +void pinMatrixInDetach(uint8_t signal, bool high, bool inverted); + +#ifdef __cplusplus +} +#endif + +#endif /* COMPONENTS_ARDUHAL_INCLUDE_ESP32_HAL_MATRIX_H_ */ diff --git a/MCUME_esp32/espvcs/flashapp.sh b/MCUME_esp32/espvcs/flashapp.sh new file mode 100755 index 0000000..8ba6f8b --- /dev/null +++ b/MCUME_esp32/espvcs/flashapp.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. ${IDF_PATH}/add_path.sh +esptool.py --chip esp32 --port "/dev/cu.SLAB_USBtoUART" --baud $((230400*4)) write_flash -fs 4MB 0x240000 ../espvcs/build/espvcs.bin diff --git a/MCUME_esp32/espvcs/main/.DS_Store b/MCUME_esp32/espvcs/main/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_esp32/espvcs/main/.DS_Store differ diff --git a/MCUME_esp32/espvcs/main/At2600.c b/MCUME_esp32/espvcs/main/At2600.c new file mode 100644 index 0000000..b70b117 --- /dev/null +++ b/MCUME_esp32/espvcs/main/At2600.c @@ -0,0 +1,22 @@ + +#include "Atari2600EmulatorGlobals.h" + +// indicates if the emulator thread is running or not +int bThreadRunning = 0; + +//------------------------ +// options +//------------------------ +byte nOptions_SkipFrames = 1; +//int nOptions_SoundBufSize = 768; +int nOptions_SoundOn = 1; +//int nOptions_SoundSampleRate = 2; +//int nOptions_SoundVolume=50; +//int nOptions_SoundCreateRate = 341; +int nOptions_Interlace = 0; +int nOptions_Landscape = 0; +int nOptions_Color = 1; +int nOptions_P1Diff=1; +int nOptions_P2Diff=1; +extern int pausing = 0; + diff --git a/MCUME_esp32/espvcs/main/Atari2600EmulatorGlobals.h b/MCUME_esp32/espvcs/main/Atari2600EmulatorGlobals.h new file mode 100644 index 0000000..26c2b94 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Atari2600EmulatorGlobals.h @@ -0,0 +1,20 @@ +#ifndef Atari2600EmulatorGLOBALS_H +#define Atari2600EmulatorGLOBALS_H + +#include "types.h" + +extern int bThreadRunning; + +extern int nOptions_SoundSampleRate; +extern int nOptions_SoundCreateRate; +extern int nOptions_SoundVolume; +extern byte nOptions_SkipFrames; +extern int nOptions_SoundBufSize; +extern int nOptions_SoundOn; +extern int nOptions_Interlace; +extern int nOptions_Landscape; +extern int nOptions_Color; +extern int nOptions_P1Diff; +extern int nOptions_P2Diff; + +#endif diff --git a/MCUME_esp32/espvcs/main/AudioPlaySystem.cpp b/MCUME_esp32/espvcs/main/AudioPlaySystem.cpp new file mode 100644 index 0000000..1b0fcc8 --- /dev/null +++ b/MCUME_esp32/espvcs/main/AudioPlaySystem.cpp @@ -0,0 +1,290 @@ +extern "C" { +#include "emuapi.h" +} + +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#include "esp_system.h" + +//#define USE_I2S 1 + +#ifdef USE_I2S +#include "esp_event.h" +#include "driver/i2s.h" +#include "freertos/queue.h" +#include "string.h" +#define I2S_NUM ((i2s_port_t)0) +//static QueueHandle_t queue; +#else +#include "esp32-hal-timer.h" +#include "esp32-hal-dac.h" +static int32_t LastPlayPos=0; +volatile int32_t NextPlayPos=0; +volatile uint8_t DacPin; +uint16_t LastDacValue; +hw_timer_t * timer = NULL; +#endif + +volatile uint16_t *Buffer; +volatile uint16_t BufferSize; + + +static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +volatile bool playing = false; + + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + + +static void snd_Reset(void) +{ + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +} + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + + +static void snd_Mixer16(uint16_t * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + //len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f]) ); + s+= ( v1*(square[(chan[1].spos>>8)&0x3f]) ); + s+= ( v2*(square[(chan[2].spos>>8)&0x3f]) ); + s+= ( v3*(noise[(chan[3].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v4*(noise[(chan[4].spos>>8)&(NOISEBSIZE-1)]) ); + s+= ( v5*(noise[(chan[5].spos>>8)&(NOISEBSIZE-1)]) ); + *stream++ = int16_t((s>>11)); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +#ifdef USE_I2S +#else +void IRAM_ATTR onTimer() +{ + // Sound playing code, plays whatever's in the buffer continuously. Big change from previous versions + if(LastDacValue!=Buffer[NextPlayPos]) // Send value to DAC only of changed since last value else no need + { + // value to DAC has changed, send to actual hardware, else we just leave setting as is as it's not changed + LastDacValue=Buffer[NextPlayPos]; + dacWrite(DacPin,uint8_t((LastDacValue>>8)+127)); // write out the data + } + Buffer[NextPlayPos]=0; // Reset this buffer byte back to silence + NextPlayPos++; // Move play pos to next byte in buffer + if(NextPlayPos==BufferSize) // If gone past end of buffer, + NextPlayPos=0; // set back to beginning +} + +#endif + +void AudioPlaySystem::begin(void) +{ +#ifdef USE_I2S + Buffer = (uint16_t *)malloc(DEFAULT_SAMPLESIZE*4); //16bits, L+R + uint16_t * dst=(uint16_t *)Buffer; + for (int i=0; i>1; + } +} + +void AudioPlaySystem::step(void) +{ +#ifdef USE_I2S + int left=DEFAULT_SAMPLERATE/50; + + while(left) { + int n=DEFAULT_SAMPLESIZE; + if (n>left) n=left; + snd_Mixer16((uint16_t*)Buffer, n); + //16 bit mono -> 16 bit r+l + for (int i=n-1; i>=0; i--) { + Buffer[i*2+1]=Buffer[i]+32767; + Buffer[i*2]=Buffer[i]+32767; + } + i2s_write_bytes(I2S_NUM, (const void*)Buffer, n*4, portMAX_DELAY); + left-=n; + } +#else + + int32_t CurPos=NextPlayPos; + int32_t samples; + if (CurPos > LastPlayPos) { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], CurPos-LastPlayPos); + samples = CurPos-LastPlayPos; + } + else { + snd_Mixer16((uint16_t *)&Buffer[LastPlayPos], BufferSize-LastPlayPos); + snd_Mixer16((uint16_t *)&Buffer[0], CurPos); + samples = BufferSize-LastPlayPos; + samples += CurPos; + } + LastPlayPos = CurPos; + //printf("sam %d\n",bytes); +#endif +} +#endif + + diff --git a/MCUME_esp32/espvcs/main/AudioPlaySystem.h b/MCUME_esp32/espvcs/main/AudioPlaySystem.h new file mode 100644 index 0000000..c1e918f --- /dev/null +++ b/MCUME_esp32/espvcs/main/AudioPlaySystem.h @@ -0,0 +1,23 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#define DEFAULT_SAMPLESIZE 512 // 22050/50=443 samples per 20ms +#define DEFAULT_SAMPLERATE 22050 + +class AudioPlaySystem +{ +public: +AudioPlaySystem(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); +}; + + +#endif diff --git a/MCUME_esp32/espvcs/main/Collision.c b/MCUME_esp32/espvcs/main/Collision.c new file mode 100644 index 0000000..a4b1f3b --- /dev/null +++ b/MCUME_esp32/espvcs/main/Collision.c @@ -0,0 +1,116 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: collision.c,v 1.10 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* The 2600 collision detection code */ + +#include + +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "col_mask.h" +#include "collision.h" + +#include "emuapi.h" + +/* + There are 6 different objects on the screen. Each takes one bit of the + collision vector. + Bit 0: Player 0 + Bit 1: Player 1 + Bit 2: Missile 0 + Bit 3: Missile 1 + Bit 4: Ball + Bit 5: Playfield + */ + +/* The collision vector */ +BYTE *colvect=0; + +/* The collision lookup table */ +unsigned short col_table[256]; + +/* The collision state */ +unsigned short col_state; + +/* Resets the collision registers of the tia */ +__inline void +reset_collisions (void) +{ + col_state=0; +} + +/* Does collision testing on the pixel b */ +/* b: byte to test for collisions */ +/* Used to build up the collision table */ +int +set_collisions (BYTE b) +{ + int res=0; + + if ((b & ML0_MASK) && (b & PL1_MASK)) + res |= M0P1_MASK; + if ((b & ML0_MASK) && (b & PL0_MASK)) + res |= M0P0_MASK; + if ((b & ML1_MASK) && (b & PL0_MASK)) + res |= M1P0_MASK; + if ((b & ML1_MASK) && (b & PL1_MASK)) + res |= M1P1_MASK; + + if ((b & PL0_MASK) && (b & PF_MASK)) + res |= P0PF_MASK; + if ((b & PL0_MASK) && (b & BL_MASK)) + res |= P0BL_MASK; + if ((b & PL1_MASK) && (b & PF_MASK)) + res |= P1PF_MASK ; + if ((b & PL1_MASK) && (b & BL_MASK)) + res |= P1BL_MASK; + + if ((b & ML0_MASK) && (b & PF_MASK)) + res |= M0PF_MASK; + if ((b & ML0_MASK) && (b & BL_MASK)) + res |= M0BL_MASK; + if ((b & ML1_MASK) && (b & PF_MASK)) + res |= M1PF_MASK; + if ((b & ML1_MASK) && (b & BL_MASK)) + res |= M1BL_MASK; + + if ((b & BL_MASK) && (b & PF_MASK)) + res |=BLPF_MASK; + if ((b & PL0_MASK) && (b & PL1_MASK)) + res |=P0P1_MASK ; + if ((b & ML0_MASK) && (b & ML1_MASK)) + res |=M0M1_MASK ; + + return res; +} + + +void +init_collisions(void) +{ + int i; + + /* Set up the collision lookup table */ + for (i = 0; i < 256; i++) + col_table[i] = set_collisions(i); + + /* Get the colvect 8 byte aligned */ + if (colvect == 0) colvect=(BYTE *)emu_Malloc(28*8);//calloc(28, 8); + + reset_collisions(); +} diff --git a/MCUME_esp32/espvcs/main/Config.h b/MCUME_esp32/espvcs/main/Config.h new file mode 100644 index 0000000..1cc916e --- /dev/null +++ b/MCUME_esp32/espvcs/main/Config.h @@ -0,0 +1,14 @@ +/* + * "Hacked" and faster CPU emulation + * For CPU debugging, NORMAL (preferred) or HACK2 should be used. + */ + +//#define HACKED /* yes */ + +/* + * If you do NOT want to emulate undocumented commands, uncomment + * the line below, and also select "NORMAL" CPU emulation. + */ + +/*#define NO_UNDOC_CMDS*/ /* no */ + diff --git a/MCUME_esp32/espvcs/main/Cpu.c b/MCUME_esp32/espvcs/main/Cpu.c new file mode 100644 index 0000000..c7292cb --- /dev/null +++ b/MCUME_esp32/espvcs/main/Cpu.c @@ -0,0 +1,4980 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: cpu.c,v 1.11.1.11 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +/* + * 6507 CPU emulation + * + * Originally from X64 + * Modified by Alex Hornby for use in x2600 + * See COPYING for license terms + */ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +#include +#include +#include "types.h" +#include "cpu.h" +#include "macro.h" +#include "vmachine.h" +#include "memory.h" +#include "display.h" +#include "exmacro.h" +#include "exmacro.h" +#include "Atari2600EmulatorGlobals.h" + +extern int pausing; + +/* CPU internals */ +ADDRESS program_counter; +BYTE x_register, y_register, stack_pointer; +BYTE accumulator, status_register; +int zero_flag; +int sign_flag; +int overflow_flag; +int break_flag; +int decimal_flag; +int interrupt_flag; +int carry_flag; + +/* CPU Clock counts */ +/* Aggregate */ +CLOCK clk; +/* Current instruction */ +CLOCK clkcount = 0; + +/* Electron beam adjustment values for nine and twelve colour clock ins. */ +#define BEAMNINE 5 +#define BEAMTWELVE 9 +int beamadj; + +/* Used in undocumented 6507 instructions */ +/* These are unusual and have no discernable use, but here it is. */ +/* val: register to be acted upon */ +/* address: address to take high byte from */ +/* index: index to add to calculated address */ +#ifndef NO_UNDOC_CMDS +void +u_stoshr (unsigned int val, ADDRESS address, BYTE index) +{ + val &= (((address >> 8) + 1) & 0xff); + if (((address & 0xff) + index) > 0xff) + address = val; + STORE ((address + index), val); +} +#endif /* UNDOC */ + +/* Initialise the CPU */ +/* addr: reset vector address */ +/* Called from init_hardware() */ +void +init_cpu (ADDRESS addr) +{ + SET_SR (0x20); + AC=0; + XR=0; + YR=0; + SP = 0xff; + pc6507 = LOAD_ADDR (addr); + clk = 0; + clkcount = 0; +} + +/* The main emulation loop, performs the CPU emulation */ +void +mainloop (void) +{ + register BYTE b; +// init_hardware (); + +// int i=6000; + int i=15200/2; + +while (i--) +{ + + do_screen (clkcount); + b = LOADEXEC (pc6507); + beamadj = 0; + + switch (b) + { + case 0: + { + pc6507++; + /* Force break. */ + + SET_BREAK (1); /* Set break status. */ + PUSH (UPPER (pc6507)); + PUSH (LOWER (pc6507)); /* Push return address into the stack. */ + PUSH (GET_SR ()); /* Push status register into the stack. */ + SET_INTERRUPT (1); /* Disable interrupts. */ + pc6507 = LOAD_ADDR ((ADDRESS) 65534); /* Jump using BRK vector (0xfffe). */ + clkcount = 7; + } + break; + + case 1: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 6; + } + + break; + + case 2: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 3: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 4: + { + pc6507 += 2; + + clkcount = 3; + } + + break; + + case 5: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 3; + } + + break; + + case 6: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 7: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 8: + { + register unsigned src = GET_SR (); + pc6507++; + + PUSH (src); + /* First push item onto stack and then decrement SP. */ + clkcount = 3; + } + + break; + + case 9: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 10: + { + register unsigned src = AC; + pc6507++; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 11: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 12: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 13: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 14: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 15: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 16: +/* BPL, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if sign flag is clear. */ + if (!IF_SIGN ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 17: +/* ORA, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + + /* If low byte of address + index reg is > 0xff then extra cycle */ + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 18: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 19: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 20: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 21: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 22: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 23: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 24: + { + pc6507++; + + + SET_CARRY ((0)); + clkcount = 2; + } + + break; + + case 25: +/* ORA, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 26: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 27: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 28: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 29: +/* ORA, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 30: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 31: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 32: + { + register p2 = load_abs_addr (); + register unsigned src = p2; + pc6507 += 3; + /* Jump to subroutine. */ + pc6507--; + PUSH ((pc6507 >> 8) & 0xff); /* Push return address onto the stack. */ + PUSH (pc6507 & 0xff); + + pc6507 = (src); + clkcount = 6; + } + + break; + + case 33: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 6; + } + + break; + + case 34: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 35: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 36: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_OVERFLOW (0x40 & src); /* Copy bit 6 to OVERFLOW flag. */ + SET_ZERO (src & AC); + clkcount = 3; + } + + break; + + case 37: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 3; + } + + break; + + case 38: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 39: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 40: + { + register unsigned src; + pc6507++; + + /* First increment stack pointer and then pull item from stack. */ + src = PULL (); + + SET_SR ((src)); + clkcount = 4; + } + + break; + + case 41: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 42: + { + register unsigned src = AC; + pc6507++; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 43: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 44: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_OVERFLOW (0x40 & src); /* Copy bit 6 to OVERFLOW flag. */ + SET_ZERO (src & AC); + clkcount = 4; + } + + break; + + case 45: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 46: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 47: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 48: +/* BMI, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if sign flag is set. */ + if (IF_SIGN ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 49: +/* AND, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 50: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 51: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 52: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 53: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 54: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 55: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 56: + { + pc6507++; + + + SET_CARRY ((1)); + clkcount = 2; + } + + break; + + case 57: +/* AND, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 58: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 59: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 60: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 61: +/* AND, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 62: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 63: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 64: + { + register unsigned src; + pc6507++; + /* Return from interrupt. */ + /* Load program status and program counter from stack. */ + src = PULL (); + SET_SR (src); + src = PULL (); + src |= (PULL () << 8); /* Load return address from stack. */ + + pc6507 = (src); + clkcount = 6; + } + + break; + + case 65: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 6; + } + + break; + + case 66: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 67: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 68: + { + pc6507 += 2; + + clkcount = 3; + } + + break; + + case 69: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 3; + } + + break; + + case 70: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 71: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 72: +/* PHA, IMPLIED */ + { + register unsigned src = AC; + pc6507++; + + beamadj = BEAMNINE; + PUSH (src); + /* First push item onto stack and then decrement SP. */ + clkcount = 3; + } + + break; + + case 73: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 2; + } + + break; + + case 74: + { + register unsigned src = AC; + pc6507++; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 75: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 76: + { + register p2 = load_abs_addr (); + register unsigned src = p2; + pc6507 += 3; + + + pc6507 = (src); + clkcount = 3; + } + + break; + + case 77: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 4; + } + + break; + + case 78: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 79: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 80: +/* BVC, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if overflow flag is clear. */ + if (!IF_OVERFLOW ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 81: +/* EOR, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + } + + break; + + case 82: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 83: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 84: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 85: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 4; + } + + break; + + case 86: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 87: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 88: + { + pc6507++; + + + SET_INTERRUPT ((0)); + clkcount = 2; + } + + break; + + case 89: +/* EOR, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + } + + break; + + case 90: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 91: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 92: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 93: +/* EOR, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + } + + break; + + case 94: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 95: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 96: + { + register unsigned src; + pc6507++; + /* Return from subroutine. */ + src = PULL (); + src += ((PULL ()) << 8) + 1; /* Load return address from stack and add 1. */ + + pc6507 = (src); + clkcount = 6; + } + + break; + + case 97: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 6; + } + + break; + + case 98: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 99: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (LOAD_ZERO_ADDR (p1 + XR), ((BYTE) temp)); + clkcount = 8; + } + + break; + + case 100: + { + pc6507 += 2; + + clkcount = 3; + } + + break; + + case 101: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 3; + } + + break; + + case 102: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 103: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE_ZERO (p1, ((BYTE) temp)); + clkcount = 5; + } + + break; + + case 104: +/* PLA, IMPLIED */ + { + register unsigned src; + pc6507++; + + clkcount = 4; + /* First increment stack pointer and then pull item from stack. */ + src = PULL (); + SET_SIGN (src); /* Change sign and zero flag accordingly. */ + SET_ZERO (src); + + AC = (src); + } + + break; + + case 105: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 2; + } + + break; + + case 106: + { + register unsigned src = AC; + pc6507++; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 107: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 108: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD_ADDR (p2); + pc6507 += 3; + + + pc6507 = (src); + clkcount = 5; + } + + break; + + case 109: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 3; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 4; + } + + break; + + case 110: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 111: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp; + pc6507 += 3; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (p2, ((BYTE) temp)); + clkcount = 6; + } + + break; + + case 112: +/* BVS, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if overflow flag is set. */ + if (IF_OVERFLOW ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 113: + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + } + + break; + + case 114: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 115: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (LOAD_ZERO_ADDR (p1) + YR, ((BYTE) temp)); + clkcount = 8; + } + + break; + + case 116: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 117: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 4; + } + + break; + + case 118: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 119: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE_ZERO (p1 + XR, ((BYTE) temp)); + clkcount = 6; + } + + break; + + case 120: + { + pc6507++; + + + SET_INTERRUPT ((1)); + clkcount = 2; + } + + break; + + case 121: +/* ADC, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 3; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + } + + break; + + case 122: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 123: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (p2 + YR, ((BYTE) temp)); + clkcount = 7; + } + + break; + + case 124: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 125: +/* ADC, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + } + + break; + + case 126: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 127: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (p2 + XR, ((BYTE) temp)); + clkcount = 7; + } + + break; + + case 128: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 129: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + pc6507 += 2; + + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 6; + } + + break; + + case 130: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 131: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 6; + } + + break; + + case 132: +/* STY, ZERO_PAGE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = YR; + + clkcount = 3; + pc6507 += 2; + + beamadj = BEAMNINE; + STORE_ZERO (p1, (src)); + } + + break; + + case 133: +/* STA, ZERO_PAGE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + + clkcount = 3; + pc6507 += 2; + + beamadj = BEAMNINE; + STORE_ZERO (p1, (src)); + } + + break; + + case 134: +/* STX, ZERO_PAGE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = XR; + + clkcount = 3; + pc6507 += 2; + + beamadj = BEAMNINE; + STORE_ZERO (p1, (src)); + } + + break; + + case 135: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + STORE_ZERO (p1, (src)); + clkcount = 3; + } + + break; + + case 136: + { + register unsigned src = YR; + pc6507++; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 137: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 138: + { + register unsigned src = XR; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 139: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = ((AC | 0xee) & XR & p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 140: +/* STY, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = YR; + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 141: +/* STA, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = AC; + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 142: +/* STA, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = XR; + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 143: +/* STX, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = (AC & XR); + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 144: +/* BCC, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register hb; + register unsigned src = p1; + pc6507 += 2; + /* Branch if carry flag is clear. */ + if (!IF_CARRY ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 145: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + pc6507 += 2; + + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 6; + } + + break; + + case 146: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 147: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + u_stoshr (src, LOAD_ZERO_ADDR (p1), YR); + clkcount = 6; + } + + break; + + case 148: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = YR; + clkcount = 4; + pc6507 += 2; + + beamadj = BEAMTWELVE; + STORE_ZERO (p1 + XR, (src)); + } + + break; + + case 149: +/* STA, ZERO_PAGE_X */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + clkcount = 4; + pc6507 += 2; + + beamadj = BEAMTWELVE; + STORE_ZERO (p1 + XR, (src)); + } + + break; + + case 150: +/* STX, ZERO_PAGE_Y */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = XR; + clkcount = 4; + pc6507 += 2; + + beamadj = BEAMTWELVE; + STORE_ZERO (p1 + YR, (src)); + } + + break; + + case 151: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + STORE_ZERO (p1 + YR, (src)); + clkcount = 4; + } + + break; + + case 152: + { + register unsigned src = YR; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 153: + { + register p2 = load_abs_addr (); + register unsigned src = AC; + pc6507 += 3; + + + STORE (p2 + YR, (src)); + clkcount = 5; + } + + break; + + case 154: + { + register unsigned src = XR; + pc6507++; + + + SP = (src); + clkcount = 2; + } + + break; + + case 155: + { + register unsigned src = (AC & XR); + pc6507 += 3; + + + SP = src; /* SHS */ ; + clkcount = 5; + } + + break; + + case 156: + { + register p2 = load_abs_addr (); + register unsigned src = YR; + pc6507 += 3; + + + u_stoshr (src, p2, XR); + clkcount = 5; + } + + break; + + case 157: + { + register p2 = load_abs_addr (); + register unsigned src = AC; + pc6507 += 3; + + + STORE (p2 + XR, (src)); + clkcount = 5; + } + + break; + + case 158: + { + register p2 = load_abs_addr (); + register unsigned src = XR; + pc6507 += 3; + + + u_stoshr (src, p2, YR); + clkcount = 5; + } + + break; + + case 159: + { + register p2 = load_abs_addr (); + register unsigned src = (AC & XR); + pc6507 += 3; + + + u_stoshr (src, p2, YR); + clkcount = 5; + } + + break; + + case 160: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 161: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 6; + } + + break; + + case 162: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 163: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 6; + } + + break; + + case 164: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 3; + } + + break; + + case 165: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 3; + } + + break; + + case 166: +/* LDX, ZERO_PAGE */ + { + register p1 = LOADEXEC (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + + clkcount = 3; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + } + + break; + + case 167: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 3; + } + + break; + + case 168: + { + register unsigned src = AC; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 169: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 170: + { + register unsigned src = AC; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 171: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 2; + } + + break; + + case 172: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 4; + } + + break; + + case 173: /* LDA absolute */ + { + register p2 = load_abs_addr (); + register unsigned src; + clkcount = 4; + src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 174: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 4; + } + + break; + + case 175: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 4; + } + + break; + + case 176: +/* BCS, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if carry flag is set. */ + if (IF_CARRY ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 177: +/* LDA, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 178: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 179: +/* LAX, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + } + + break; + + case 180: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 4; + } + + break; + + case 181: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 182: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + YR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 4; + } + + break; + + case 183: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + YR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 4; + } + + break; + + case 184: + { + pc6507++; + + + SET_OVERFLOW ((0)); + clkcount = 2; + } + + break; + + case 185: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 186: + { + register unsigned src = SP; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 187: + { + register p2 = load_abs_addr (); + register unsigned src = (SP & LOAD (p2 + YR)); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = SP = (src); + } + + break; + + case 188: +/* LDY, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + } + + break; + + case 189: +/* LDA, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 190: +/* LDX, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + } + + break; + + case 191: +/* LAX, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + } + + break; + + case 192: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = YR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 2; + } + + break; + + case 193: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 6; + } + + break; + + case 194: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 195: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 196: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = YR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 3; + } + + break; + + case 197: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 3; + } + + break; + + case 198: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 199: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 200: + { + register unsigned src = YR; + pc6507++; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 201: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 2; + } + + break; + + case 202: + { + register unsigned src = XR; + pc6507++; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 203: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = (AC & XR) - src; /* Carry is ignored (CMP) */ + /* Overflow flag may be affected */ + SET_CARRY (src < 0x100); + + src &= 0xff; /* No decimal mode */ + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 204: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = YR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 205: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 206: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 207: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 208: +/* BNE, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if zero flag is clear. */ + if (!IF_ZERO ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 209: +/* CMP, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + } + + break; + + case 210: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + ////mon (pc6507); + } + + break; + + case 211: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 212: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 213: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 214: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 215: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 216: + { + pc6507++; + + + SET_DECIMAL ((0)); + clkcount = 2; + } + + break; + + case 217: +/* CMP, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + } + + break; + + case 218: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 219: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 220: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 221: +/* CMP, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + } + + break; + + case 222: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 223: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 224: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = XR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 2; + } + + break; + + case 225: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 6; + } + + break; + + case 226: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 227: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 228: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = XR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 3; + } + + break; + + case 229: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 3; + } + + break; + + case 230: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 231: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 232: + { + register unsigned src = XR; + pc6507++; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 233: +/* SBC, IMMEDIATE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + if (!IF_DECIMAL ()) + { + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + SET_CARRY (temp < 0x100); + AC = (temp & 0xff); + + } + else + { + int bcd1, bcd2; + BYTE old_A; + int C = IF_CARRY ()? 1 : 0; + + old_A = AC; + + bcd1 = fromBCD (AC); + bcd2 = fromBCD (src); + + bcd1 = bcd1 - bcd2 - !C; + + if (bcd1 < 0) + bcd1 = 100 - (-bcd1); + AC = toBCD (bcd1); + + SET_CARRY ((old_A < (src + !C)) ? 0 : 1); + SET_OVERFLOW ((old_A ^ AC) & 0x80); + } + clkcount = 2; + } + + break; + + case 234: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 235: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 2; + } + + break; + + case 236: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = XR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 237: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 3; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 4; + } + + break; + + case 238: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 239: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp; + pc6507 += 3; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 240: +/* BEQ, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if zero flag is set. */ + if (IF_ZERO ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 241: + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + } + + break; + + case 242: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 243: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 244: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 245: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 4; + } + + break; + + case 246: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 247: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 248: +/* SED, IMPLIED */ + { + pc6507++; + + SET_DECIMAL ((1)); + clkcount = 2; + } + + break; + + case 249: +/* SBC, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 3; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + } + + break; + + case 250: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 251: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 252: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 253: +/* SBC, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + } + + break; + + case 254: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 255: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + + + } /* switch */ + + clk += clkcount; + + } /* while(!pausing) */ + + +bThreadRunning = 0; +pausing = 0; + +} /* mainloop */ diff --git a/MCUME_esp32/espvcs/main/Display.c b/MCUME_esp32/espvcs/main/Display.c new file mode 100644 index 0000000..fa5a026 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Display.c @@ -0,0 +1,108 @@ +/***************************************************************************** + + This file is part of Virtual VCS, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + Modified 1996 by Daniel Boris + Modified 2001 by Stuart Russell + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: display.c,v 1.23 1996/03/21 15:52:38 alex Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* + Display handling code. +*/ + +#include +#include +#include "types.h" +#include "btypes.h" +#include "vmachine.h" +#include "address.h" +#include "colours.h" +#include "resource.h" +#include "display.h" +#include "emuapi.h" + + +int vwidth,vheight,theight; +uint8 * VBuf=0; //[(160)*192+8]; +char coltable[256]; + +/* The refresh skipping counter */ +int tv_counter=0; + +/* Set up the colormap - original is 24bit! +//------------------------------------------------------------------------------------ +// we use a 16 bit color palette (rrrrrggggggbbbbb). This should change based +// on the PDA device (E-125). +//------------------------------------------------------------------------------------*/ +static void create_cmap(void) +{ + int i; + unsigned char red,green,blue; + + /* Initialise parts of the colors array */ + for(i=0; i< 256; i++) + { + red = (unsigned char)((colortable[i] & 0xff0000) >> 16); + green = (unsigned char)((colortable[i] & 0x00ff00) >> 8); + blue = (unsigned char)(colortable[i] & 0x0000ff); + emu_SetPaletteEntry(red,green,blue,i); + } +} + + +/* Create the main application shell */ +static void create_window() +{ + int i; + + theight = tv_height; + vheight = tv_height; + vwidth = tv_width; + create_cmap(); + for(i=0; i<256; i++) coltable[i]=1; + coltable[0]=coltable[1]=coltable[2]=coltable[4]=0; + coltable[8]=coltable[16]=coltable[32]=coltable[64]=0; + coltable[128]=0; +} + + +/* The main initialiser for the X stuff */ +int tv_on() +{ + /* Get the basic colors */ + unsigned long m; + + if (VBuf == 0) VBuf = (uint8 *)emu_Malloc((160)*192+8); + + create_window(); + + // if pointer size is 4 bytes, make sure the + // buffer is aligned on an 8 byte boundary. + if(sizeof(uint8*)==4) + { + m=(unsigned long)VBuf; + m+=8; + m&=0xFFFFFFF8; + VBuf=(uint8*)m; + } + memset(VBuf,128,160*192); + return(1); +} + + + + + + + diff --git a/MCUME_esp32/espvcs/main/Exmacro.c b/MCUME_esp32/espvcs/main/Exmacro.c new file mode 100644 index 0000000..23566bf --- /dev/null +++ b/MCUME_esp32/espvcs/main/Exmacro.c @@ -0,0 +1,69 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: exmacro.c,v 1.6 1996/08/26 15:04:20 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* Things that used to be macros, but are now __inline functions. + Done for ease of debugging */ + +#include "types.h" +#include "extern.h" +#include "macro.h" +#include "memory.h" +#include "exmacro.h" + +/* Loads an absolute address uising the quicker load mechanism */ +__inline ADDRESS +load_abs_addr (void) +{ + return (LOADEXEC (pc6507 + 1) | (LOADEXEC (pc6507 + 2) << 8)); +} + +/* Used in variable cycle time indexed addressing */ +/* a: address to be incremented */ +/* b: increment value */ +/* returns: TRUE if an address increment will cross a page boundary */ +__inline int +pagetest (ADDRESS a, BYTE b) +{ + return (LOWER (a) + b > 0xff); +} + +/* Used in variable cycle time branches */ +/* a: high byte of new address */ +/* returns: TRUE if a branch is to the same page */ +__inline int +brtest (BYTE a) +{ + return (UPPER (pc6507) == (a)); +} + +/* Convert from binary to BCD (Binary Coded Decimal) */ +/* a: binary value */ +/* returns: BCD value */ +__inline int +toBCD (int a) +{ + return (((a % 100) / 10) << 4) | (a % 10); +} + +/* Convert from BCD to binary */ +/* a: BCD value */ +/* returns: binary value */ +__inline int +fromBCD (int a) +{ + return ((a >> 4) & 0xf) * 10 + (a & 0xf); +} diff --git a/MCUME_esp32/espvcs/main/Keyboard.c b/MCUME_esp32/espvcs/main/Keyboard.c new file mode 100644 index 0000000..590c337 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Keyboard.c @@ -0,0 +1,115 @@ +/***************************************************************************** + + This file is part of Virtual VCS, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Daniel Boris. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + +******************************************************************************/ +/* + This module has been completely re-written since X2600 + This has been hacked for the E-125 by Stuart Russell +*/ + +#include +#include +#include +#include "keyboard.h" +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "extern.h" +#include "memory.h" +#include "display.h" +#include "resource.h" + +#include "emuapi.h" + +// this returns a byte from the key state buffer. +// example: KEY(0) will be expanded to: keys[SCANCODE_0] +//#define KEY(__a) keys[SCANCODE_##__a] + +extern char *KeyboardGetstate(void); +extern int pausing; +extern int nOptions_Color; +extern int nOptions_P1Diff; +extern int nOptions_P2Diff; + + +void keyjoy(void) { + int key; + BYTE v1,v2; + + v1=v2=0x0f; + // read the keyboard state. The return value (in keys) is a pointer to a + // 256 byte buffer which holds the state of all the keyboard keys. If a + // byte's upper bit is set to 1, the key is pressed. + + + key = emu_ReadKeys(); + if (key & MASK_JOY2_UP) v1 &= 0x0E; + if (key & MASK_JOY2_DOWN) v1 &= 0x0D; + if (key & MASK_JOY2_RIGHT) v1 &= 0x0B; + if (key & MASK_JOY2_LEFT) v1 &= 0x07; + + riotRead[0x280]=(v1 << 4) | v2; +} + + +void keycons(void) { +//--------------------------------------------------------- +// This function reads the state of the joysticks (buttons) +//--------------------------------------------------------- + int key = emu_ReadKeys();; + int sw = emu_GetPad() & 0xff; + + // read the keyboard state. The return value (in keys) is a pointer to a + // 256 byte buffer which holds the state of all the keyboard keys. If a + // byte's upper bit is set to 1, the key is pressed. + + riotRead[SWCHB] |= 0x03; + + if ( (key & MASK_KEY_USER3) | (sw == 2) ) // + nOptions_Color = !nOptions_Color; + + if (!nOptions_Color) + riotRead[SWCHB] &= 0xF7; /* BW */ + else + riotRead[SWCHB] |= 0x08; /* Color */ + + + if ( (key & MASK_KEY_USER1) | (sw == 4) ) + riotRead[SWCHB] &= 0xFE; /* Reset */ + if ( (key & MASK_KEY_USER2) | (sw == 3) ) + riotRead[SWCHB] &= 0xFD; /* Select */ + + if (nOptions_P1Diff) riotRead[SWCHB] &= 0xBF; /* P0 amateur */ + else riotRead[SWCHB] |= 0x40; /* P0 pro */ + + if (nOptions_P2Diff) riotRead[SWCHB] &= 0x7f; /* P1 amateur */ + else riotRead[SWCHB] |= 0x80; /* P1 pro */ +} + +void keytrig(void) { + int key; + + // read the keyboard state. The return value (in keys) is a pointer to a + // 256 byte buffer which holds the state of all the keyboard keys. If a + // byte's upper bit is set to 1, the key is pressed. + + key = emu_ReadKeys(); + + if (!(tiaWrite[VBLANK] & 0x40)) { + tiaRead[INPT5]=0x80; + if (key & 0x10) + tiaRead[INPT4]=0x00; + else + tiaRead[INPT4]=0x80; + } +} + diff --git a/MCUME_esp32/espvcs/main/Memory.c b/MCUME_esp32/espvcs/main/Memory.c new file mode 100644 index 0000000..ede0379 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Memory.c @@ -0,0 +1,785 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: memory.c,v 2.23 1997/04/06 02:19:12 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* + * Holds the memory access routines to both memory and memory mapped + * i/o, hence memory.c + * + * Uses GNU C extensions. + */ + +#include +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "display.h" +#include "raster.h" +#include "tiasound.h" +#include "collision.h" +#include "col_mask.h" +#include "options.h" +#include "keyboard.h" +#include "sound.h" +#include "resource.h" + + +extern CLOCK clkcount; +extern CLOCK clk; +extern int beamadj; +//extern keyboard_keypad(); +extern keytrig(); +extern keyjoy(); +extern keycons(); +extern int nOptions_Landscape; +extern int nOptions_SoundOn; + + +/* Undecoded Read, for executable code etc. */ +/* a: address to read */ +/* returns: byte at address a */ +BYTE +undecRead (ADDRESS a) +{ + if (a & 0x1000) + return theRom[a & 0xfff]; + else + return theRam[a & 0x7f]; +} + + +__inline void +bank_switch_write (ADDRESS a, BYTE b) +{ + a&=0xfff; + switch (base_opts.bank) + { + + case 1: + /* Atari 8k F8 */ + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + } + break; + + case 2: + /* Atari 16k F6 */ + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + break; + + case 3: + /* Parker Brothers 8k E0 */ + { + ADDRESS a1; + if (a > 0xfdf && a < 0xfe8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0],&theCart[a1],0x400); + } + else if (a > 0xfe7 && a < 0xff0) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x400],&theCart[a1],0x400); + } + else if (a > 0xfef && a < 0xff8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x800],&theCart[a1],0x400); + } + } + break; + + case 4: + /* CBS Ram Plus FA */ + if (a < 0x100) + cartRam[a & 0xff]=b; + else + { + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + case 0xffa: + theRom = &theCart[8192]; + break; + } + } + break; + + case 5: + /* Atari 16k + super chip ram F6SC */ + if (a < 0x80) + cartRam[a & 0x7f] = b; + else + { + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + } + break; + } +} + +__inline BYTE +bank_switch_read (ADDRESS a) +{ + BYTE res; + + a&=0xfff; + switch (base_opts.bank) + { + case 1: + /* Atari 8k F8 */ + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + } + res=theRom[a]; + break; + + case 2: + /* Atari 16k F6 */ + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + res=theRom[a]; + break; + + case 3: + /* Parker Brothers 8k E0 */ + /* Parker Brothers 8k E0 */ + { + ADDRESS a1; + if (a > 0xfdf && a < 0xfe8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0],&theCart[a1],0x400); + } + else if (a > 0xfe7 && a < 0xff0) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x400],&theCart[a1],0x400); + } + else if (a > 0xfef && a < 0xff8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x800],&theCart[a1],0x400); + } + } + res=theRom[a]; + break; + + case 4: + /* CBS Ram Plus FA */ + if (a > 0xff && a < 0x200) + res=cartRam[a & 0xff]; + else + { + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + case 0xffa: + theRom = &theCart[8192]; + break; + } + res=theRom[a]; + } + break; + + case 5: + /* Atari 16k + super chip ram F6SC */ + if (a > 0x7f && a < 0x100) + res=cartRam[a & 0x7f]; + else + { + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + res=theRom[a]; + } + break; + default: + res=theRom[a]; + break; + } + return res; +} + + +/* Decoded write to memory */ +/* a: address written to */ +/* b: byte value written */ +void +decWrite (ADDRESS a, BYTE b) +{ + int i; + + /* A Write to the ROM area */ + if (a & 0x1000) + { + bank_switch_write (a,b); + } + /* A Write to the RAM area in Page 0 and 1 */ + else if ((a & 0x280) == 0x80) + { + theRam[a & 0x7f] = b; + } + /* TIA */ + else if (!(a & 0x80)) + { + switch (a & 0x7f) + { + case VSYNC: + if (b & 0x02) + { + /* Start vertical sync */ + vbeam_state = VSYNCSTATE; + } + break; + case VBLANK: + do_vblank (b); + /* Ground paddle pots */ + if (b & 0x80) + { + /* Grounded ports */ + tiaRead[INPT0] = 0x00; + tiaRead[INPT1] = 0x00; + } + else + { + /* Processor now measures time for a logic 1 to appear + at each paddle port */ + tiaRead[INPT0] = 0x80; + tiaRead[INPT1] = 0x80; + paddle[0].val = clk; + paddle[1].val = clk; + } + /* Logic for dumped input ports */ + if (b & 0x40) + { + if (tiaWrite[VBLANK] & 0x40) + { + tiaRead[INPT4] = 0x80; + tiaRead[INPT5] = 0x80; + } +// else +// { +// //read_trigger (); +// } + } + tiaWrite[VBLANK] = b; + break; + case WSYNC: + /* Skip to HSYNC pulse */ + do_hsync (); + break; + case RSYNC: + /* used in chip testing */ + //dbg_message(DBG_LOTS,"ARGHH an undocumented RSYNC!\n"); + break; + case NUSIZ0: + /* + printf("P0 nusize: ebeamx=%d, ebeamy=%d, nusize=%02x\n", + ebeamx, ebeamy, (int)b); + */ + pl[0].nusize = b & 0x07; + ml[0].width = (b & 0x30) >> 4; + break; + case NUSIZ1: + /* + printf("P1 nusize: ebeamx=%d, ebeamy=%d, nusize=%02x\n", + ebeamx, ebeamy, (int)b); + */ + pl[1].nusize = b & 0x07; + ml[1].width = (b & 0x30) >> 4; + break; + case COLUP0: + do_unified_change (0, b); + break; + case COLUP1: + do_unified_change (1, b); + break; + case COLUPF: + do_unified_change (2, b); + break; + case COLUBK: + /*printf("BKcolour = %d, line=%d\n", (int)(b>>1), ebeamy); */ + do_unified_change (3, b); + break; + case CTRLPF: + tiaWrite[CTRLPF] = b & 0x37; /* Bitmask 00110111 */ + do_pfraster_change (0, 3, b & 0x01); /* Reflection */ + + /* Normal/Alternate priority */ + do_unified_change(4, (b & 0x04)); + + /* Scores/Not scores */ + do_unified_change(5, (b & 0x02)); + + break; + case REFP0: + pl[0].reflect = (b & 0x08) >> 3; + break; + case REFP1: + pl[1].reflect = (b & 0x08) >> 3; + break; + case PF0: + do_pfraster_change (0, 0, b & 0xf0); + break; + case PF1: + do_pfraster_change (0, 1, b); + break; + case PF2: + do_pfraster_change (0, 2, b); + break; + case RESP0: + /* Ghost in pacman! + if(beamadj == 0) { + printf("RESP0: ebeamx=%d, ebeamy=%d\n", + ebeamx, ebeamy); + show(); + } */ + pl[0].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (pl[0].x < 0) + pl[0].x = 0; + break; + case RESP1: + /*if(beamadj == 0) { + printf("RESP1: ebeamx=%d, ebeamy=%d\n", + ebeamx, ebeamy); + show(); + } */ + pl[1].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (pl[1].x < 0) + pl[1].x = 0; + break; + case RESM0: + ml[0].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (ml[0].x < 0) + ml[0].x = 0; + break; + case RESM1: + ml[1].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (ml[1].x < 0) + ml[1].x = 0; + break; + case RESBL: + ml[2].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (ml[2].x < 0) + ml[2].x = 0; + break; + case AUDC0: + if (nOptions_SoundOn) Update_tia_sound(AUDC0,b & 0x0f); + break; + case AUDC1: + if (nOptions_SoundOn) Update_tia_sound(AUDC1,b & 0x0f); + break; + case AUDF0: + if (nOptions_SoundOn) Update_tia_sound(AUDF0,b & 0x1f); + break; + case AUDF1: + if (nOptions_SoundOn) Update_tia_sound(AUDF1,b & 0x1f); + break; + case AUDV0: + if (nOptions_SoundOn) Update_tia_sound(AUDV0 , b & 0x0f); + break; + case AUDV1: + if (nOptions_SoundOn) Update_tia_sound(AUDV1 , b & 0x0f); + break; + case GRP0: + do_plraster_change (0, 0, b); + do_plraster_change (1, 1, b); + break; + case GRP1: + do_plraster_change (1, 0, b); + do_plraster_change (0, 1, b); + ml[2].vdel = ml[2].enabled; + break; + case ENAM0: + ml[0].enabled = b & 0x02; + if (tiaWrite[RESMP0]) + ml[0].enabled = 0; + break; + case ENAM1: + ml[1].enabled = b & 0x02; + if (tiaWrite[RESMP1]) + ml[1].enabled = 0; + break; + case ENABL: + ml[2].enabled = b & 0x02; + break; + case HMP0: + pl[0].hmm = (b >> 4); + break; + case HMP1: + pl[1].hmm = (b >> 4); + break; + case HMM0: + ml[0].hmm = (b >> 4); + break; + case HMM1: + ml[1].hmm = (b >> 4); + break; + case HMBL: + ml[2].hmm = (b >> 4); + break; + case VDELP0: + pl[0].vdel_flag = b & 0x01; + break; + case VDELP1: + pl[1].vdel_flag = b & 0x01; + break; + case VDELBL: + ml[2].vdel_flag = b & 0x01; + break; + case RESMP0: + tiaWrite[RESMP0] = b & 0x02; + if (b & 0x02) + { + ml[0].x = pl[0].x + 4; + ml[0].enabled = 0; + } + break; + case RESMP1: + tiaWrite[RESMP1] = b & 0x02; + if (b & 0x02) + { + ml[1].x = pl[1].x + 4; + ml[1].enabled = 0; + } + break; + case HMOVE: + /* Player 0 */ + if (pl[0].hmm & 0x08) + pl[0].x += ((pl[0].hmm ^ 0x0f) + 1); + else + pl[0].x -= pl[0].hmm; + if (pl[0].x > 160) + pl[0].x = -68; + else if (pl[0].x < -68) + pl[0].x = 160; + + /* Player 2 */ + if (pl[1].hmm & 0x08) + pl[1].x += ((pl[1].hmm ^ 0x0f) + 1); + else + pl[1].x -= pl[1].hmm; + if (pl[1].x > 160) + pl[1].x = -68; + else if (pl[1].x < -68) + pl[1].x = 160; + + /* Missiles */ + for (i = 0; i < 3; i++) + { + if (ml[i].hmm & 0x08) + ml[i].x += ((ml[i].hmm ^ 0x0f) + 1); + else + ml[i].x -= ml[i].hmm; + if (ml[i].x > 160) + ml[i].x = -68; + else if (ml[i].x < -68) + ml[i].x = 160; + } + break; + case HMCLR: + pl[0].hmm = 0; + pl[1].hmm = 0; + for (i = 0; i < 3; i++) + ml[i].hmm = 0; + break; + case CXCLR: + col_state=0; + break; + } + } + else + { + switch (a & 0x2ff) + { + /* RIOT I/O ports */ + case SWCHA: + riotWrite[SWCHA] = b; + break; + case SWACNT: + riotWrite[SWACNT] = b; + break; + case SWCHB: + case SWBCNT: + /* Do nothing */ + break; + + /* Timer ports */ + case TIM1T: + set_timer (0, b, clkcount); + break; + case TIM8T: + set_timer (3, b, clkcount); + break; + case TIM64T: + set_timer (6, b, clkcount); + break; + case T1024T: + set_timer (10, b, clkcount); + break; + default: + //printf ("Unknown write %x\n", a); + //show (); + break; + } + } +} + + +/* Decoded read from memory */ +/* a: address to read */ +/* returns: byte value from address a */ +BYTE +decRead (ADDRESS a) +{ + BYTE res = 65; + + if (a & 0x1000) + { + a = a & 0xfff; + if (base_opts.bank != 0) + res= bank_switch_read (a); + else + res = theRom[a]; + } + else if ((a & 0x280) == 0x80) + { + res = theRam[a & 0x7f]; + } + else if (!(a & 0x80)) + { + switch (a & 0x0f) + { + /* TIA */ + case CXM0P: + res = (col_state & CXM0P_MASK) << 6; + break; + case CXM1P: + res = (col_state & CXM1P_MASK) << 4; + break; + case CXP0FB: + res = (col_state & CXP0FB_MASK) << 2; + break; + case CXP1FB: + res = (col_state & CXP1FB_MASK); + break; + case CXM0FB: + res = (col_state & CXM0FB_MASK) >> 2; + break; + case CXM1FB: + res = (col_state & CXM1FB_MASK) >> 4; + break; + case CXBLPF: + res = (col_state & CXBLPF_MASK) >> 5; + break; + case CXPPMM: + res = (col_state & CXPPMM_MASK) >> 7; + break; + case INPT0: + if (base_opts.lcon== PADDLE) + { + tiaRead[INPT0] = do_paddle (0); + } + else if (base_opts.lcon== KEYPAD) + tiaRead[INPT0] = do_keypad (0, 0); + res = tiaRead[INPT0]; + break; + case INPT1: + if (base_opts.lcon== PADDLE) + { + tiaRead[INPT1] = do_paddle (1); + } + if (base_opts.lcon== KEYPAD) + tiaRead[INPT1]=do_keypad (0, 1); + res = tiaRead[INPT1]; + break; + case INPT2: + if (base_opts.rcon == KEYPAD) + tiaRead[INPT1]=do_keypad (1, 0); + res = tiaRead[INPT2]; + break; + case INPT3: + if (base_opts.rcon == KEYPAD) + tiaRead[INPT3]=do_keypad ( 1, 1); + res = tiaRead[INPT3]; + break; + case INPT4: + switch (base_opts.lcon) + { + case KEYPAD: + tiaRead[INPT4]=do_keypad ( 0, 2); + break; + case STICK: + case PADDLE: + keytrig(); + res=tiaRead[INPT4]; + break; + } + res =tiaRead[INPT4]; + break; + case INPT5: + switch (base_opts.rcon) + { + case KEYPAD: + tiaRead[INPT5]=do_keypad (1, 2); + break; + case STICK: + case PADDLE: + keytrig(); + res=tiaRead[INPT5]; + break; + } + res = tiaRead[INPT5]; + break; + case 0x0e: + case 0x0f: + res = 0x0f; + /* RAM, mapped to page 0 and 1 */ + } + } + else + { + switch (a & 0x2ff) + { + /* Timer output */ + case INTIM: + case 0x285: + case 0x286: + case TIM1T: + case TIM8T: + case TIM64T: + case T1024T: + res = do_timer (clkcount); + /*printf("Timer is %d res is %d\n", res, timer_res); */ + break; + case SWCHA: + switch (base_opts.lcon) + { + case PADDLE: + if (base_opts.lcon == PADDLE) + { + keytrig(); + res=tiaRead[INPT4]; + } + else if (base_opts.rcon == PADDLE) + { + keytrig(); + res=tiaRead[INPT4]; + } + break; + case STICK: + keyjoy(); + res=riotRead[SWCHA]; + break; + } + res = riotRead[SWCHA]; + break; + /* Switch B is hardwired to input */ + case SWCHB: + case SWCHB + 0x100: + keycons (); + res = riotRead[SWCHB]; + break; + default: + //printf ("Unknown read 0x%x\n", a & 0x2ff); + //show (); + res = 65; + break; + } + } + return res; +} + diff --git a/MCUME_esp32/espvcs/main/Memory.h b/MCUME_esp32/espvcs/main/Memory.h new file mode 100644 index 0000000..303c932 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Memory.h @@ -0,0 +1,32 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: memory.h,v 1.5 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + +/* + Prototypes for the memory interface. + */ + +#ifndef VCSMEMORY_H +#define VCSMEMORY_H + +__inline BYTE +undecRead (ADDRESS a); + +void +decWrite ( ADDRESS a, BYTE b); + +BYTE +decRead (ADDRESS a); + +#endif diff --git a/MCUME_esp32/espvcs/main/Options.c b/MCUME_esp32/espvcs/main/Options.c new file mode 100644 index 0000000..4ee7a28 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Options.c @@ -0,0 +1,50 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: options.c,v 1.7 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* Command Line Option Parser */ +#include "config.h" +#include +#include + +/* *INDENT-OFF* */ +/* Options common to all ports of x2600 */ +struct BaseOptions { +// int rr;// unused + int tvtype; + int lcon; + int rcon; + int bank; + int magstep; + char filename[80]; + int sound; + int swap; + int realjoy; + int limit; + int mousey; + int mitshm; + int dbg_level; +} base_opts={0,1,1,1,1,"",1,1,1,1,1,0,0}; + +char *argv[64]; +int argc; + +// was written as "(int argc, char **argv)" +void parse_options(void) +{ +// base_opts.lcon = 1; +} + diff --git a/MCUME_esp32/espvcs/main/Raster.c b/MCUME_esp32/espvcs/main/Raster.c new file mode 100644 index 0000000..5012b33 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Raster.c @@ -0,0 +1,833 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: raster.c,v 1.30 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* Raster graphics procedures */ + +#include +#include "btypes.h" +//#include "systypes.h" +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "display.h" +#include "collision.h" +#include "options.h" + +/* Color lookup tables. Used to speed up rendering */ +/* The current colour lookup table */ +unsigned int *colour_lookup; + +/* Colour table */ +#define P0M0_COLOUR 0 +#define P1M1_COLOUR 1 +#define PFBL_COLOUR 2 +#define BK_COLOUR 3 + +unsigned int colour_table[4]; +extern BYTE *VBuf; + +extern int tv_field; +extern int nOptions_Interlace; +extern byte nOptions_SkipFrames; + +/* normal/alternate, not scores/scores*/ +int norm_val, scores_val; +int *colour_ptrs[2][3]; + +/* Normal priority */ +static int colour_normal[64]; +static int colour_normscoresl[64]; +static int colour_normscoresr[64]; + +/* Alternate priority */ +static int colour_alternate[64]; +static int colour_altscoresl[64]; +static int colour_altscoresr[64]; + +/* Playfield screen position */ +uint32 *pf_pos; +unsigned int line_ptr;//changed + +/* Draw playfield register PF0 */ +/* pf: playfield structure */ +/* dir: 1=normal, 0=mirrored */ +__inline void +draw_pf0 (PlayField *pf, int dir) +{ + int pfm; /* playfield mask */ + /* 1=forward */ + if (dir) + { + for (pfm = 0x10; pfm < 0x100; pfm <<= 1) + { + if (pf->pf0 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos++; + } + } + else + { + for (pfm = 0x80; pfm > 0x08; pfm >>= 1) + { + if (pf->pf0 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos++; + } + } +} + +/* Draw playfield register PF1 */ +/* pf: playfield structure */ +/* dir: 1=normal, 0=mirrored */ +__inline void +draw_pf1 (PlayField *pf, int dir) +{ + int pfm; /* playfield mask */ + /* 1=forward */ + if (dir) + { + /* do PF1 */ + for (pfm = 0x80; pfm > 0; pfm >>= 1) + { + if (pf->pf1 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } + else + { + /* do PF1 */ + for (pfm = 0x01; pfm < 0x100; pfm <<= 1) + { + if (pf->pf1 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } +} + +/* Draw playfield register PF2 */ +/* pf: playfield structure */ +/* dir: 1=normal, 0=mirrored */ +__inline void +draw_pf2 ( PlayField *pf, int dir) +{ + int pfm; /* playfield mask */ + /* 1=forward */ + if (dir) + { + /* do PF2 */ + for (pfm = 0x01; pfm < 0x100; pfm <<= 1) + { + if (pf->pf2 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } + else + { + for (pfm = 0x80; pfm > 0; pfm >>= 1) + { + if (pf->pf2 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } +} + +/* Update from the playfield display list */ +/* num: playfield to use. Now depreciated as only pf[0] is used */ +/* nextx: the start position of the next playfield element */ +/* pfc: the number of the next playfield change structure */ +/* pf_max: the highest playfield change structure */ +__inline void +pf_update (int num, int nextx, int *pfc, int pf_max) +{ + for (; (*pfc < pf_max) && (nextx + 3 > pf_change[num][*pfc].x); (*pfc)++) + { + use_pfraster_change (&pf[num], &pf_change[num][*pfc]); + } +} + +/* Draw the playfield */ +void +draw_playfield (void) +{ + const int num = 0; /* Stick to one playfield */ + int pfc = 0; + int pf_max = pf_change_count[num]; + + pf_pos = (uint32 *)colvect; + /* First half of playfield */ + + pf_update (num, 0, &pfc, pf_max); + draw_pf0 (&pf[0], 1); + pf_update (num, 16, &pfc, pf_max); + draw_pf1 (&pf[0], 1); + pf_update (num, 48, &pfc, pf_max); + draw_pf2 (&pf[0], 1); + + pf_update (num, 80, &pfc, pf_max); + /* Second half of playfield */ + if (pf[0].ref) + { + draw_pf2 (&pf[0], 0); + pf_update (num, 112, &pfc, pf_max); + draw_pf1 (&pf[0], 0); + pf_update (num, 144, &pfc, pf_max); + draw_pf0 (&pf[0], 0); + } + else + { + draw_pf0 (&pf[0], 1); + pf_update (num, 96, &pfc, pf_max); + draw_pf1 (&pf[0], 1); + pf_update (num, 128, &pfc, pf_max); + draw_pf2 (&pf[0], 1); + } + /* Use last changes */ + for (; pfc < pf_max; pfc++) + use_pfraster_change (&pf[num], &pf_change[num][pfc]); + + pf_change_count[num] = 0; +} + +/* Draws a normal (8 clocks) sized player */ +/* p: the player to draw */ +/* x: the position to draw it */ +__inline void +pl_normal ( Player *p, int x) +{ + /* Set pointer to start of player graphic */ + BYTE *ptr = colvect + x; + BYTE mask; + BYTE gr; + + if (p->vdel_flag) + gr = p->vdel; + else + gr = p->grp; + + if (p->reflect) + { + /* Reflected: start with D0 of GRP on left */ + for (mask = 0x01; mask > 0; mask <<= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + } + else + ptr++; + } + } + else + { + /* Unreflected: start with D7 of GRP on left */ + for (mask = 0x80; mask > 0; mask >>= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + } + else + ptr++; + } + } +} + +/* Draws a double width ( 16 clocks ) player */ +/* p: the player to draw */ +/* x: the position to draw it */ +__inline void +pl_double ( Player *p, int x) +{ + /* Set pointer to start of player graphic */ + BYTE *ptr = colvect + (x); + BYTE mask; + BYTE gr; + + if (p->vdel_flag) + gr = p->vdel; + else + gr = p->grp; + + if (p->reflect) + { + for (mask = 0x01; mask > 0; mask <<= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 2; + } + } + else + { + for (mask = 0x80; mask > 0; mask >>= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 2; + } + } +} + +/* Draws a quad sized ( 32 clocks) player */ +/* p: the player to draw */ +/* x: the position to draw it */ +__inline void +pl_quad ( Player *p, int x) +{ + /* Set pointer to start of player graphic */ + BYTE *ptr = colvect + x; + BYTE mask; + BYTE gr; + + if (p->vdel_flag) + gr = p->vdel; + else + gr = p->grp; + + if (p->reflect) + { + for (mask = 0x01; mask > 0; mask <<= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 4; + } + } + else + { + for (mask = 0x80; mask > 0; mask >>= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 4; + } + } +} + +/* Consume the player display list */ +__inline void +pl_update (int num, int nextx, int *plc, int pl_max) +{ + for (; (*plc < pl_max) && (nextx > pl_change[num][*plc].x); (*plc)++) + { + use_plraster_change (&pl[num], &pl_change[num][*plc]); + } +} + +/* Draw a player graphic */ +/* line: the vertical position of the raster */ +/* num: the number of player to draw, current 0 or 1 for P0 and P1 */ +static __inline void +pl_draw (int num) +{ + int plc = 0; + int pl_max = pl_change_count[num]; + int nextx; + + pl_update (num, pl[num].x, &plc, pl_max); + if (pl[num].x >= 0 && pl[num].x < tv_width) + { + + /*if(pl_max > plc) + use_plraster_change( &pl[num], &pl_change[num][plc++]); */ + switch (pl[num].nusize) + { + case 0: + /* One copy */ + pl_normal (&pl[num], pl[num].x); + break; + case 1: + /* Two copies close */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 8; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 2: + /* Two copies medium */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 24; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 3: + /* Three copies close */ + /* Pacman score line */ + pl_normal (&pl[num], pl[num].x); + + nextx = pl[num].x + 16; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + + nextx = pl[num].x + 32; + pl_update (num, nextx, &plc, pl_max); + + pl_normal (&pl[num], nextx); + break; + case 4: + /* Two copies wide */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 56; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 5: + /* Double sized player */ + pl_double (&pl[num], pl[num].x); + break; + case 6: + /* Three copies medium */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 24; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + nextx = pl[num].x + 8 + 56; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 7: + /* Quad sized player */ + pl_quad (&pl[num], pl[num].x); + break; + } + } + /* Use last changes */ + for (; plc < pl_max; plc++) + use_plraster_change (&pl[num], &pl_change[num][plc]); + pl_change_count[num] = 0; +} + + +/* Draw the ball graphic */ +/* line: the vertical position of the raster */ +static __inline void +draw_ball (void) +{ + int i; + BYTE *blptr; + BYTE e; + + if (ml[2].vdel_flag) + e = ml[2].vdel; + else + e = ml[2].enabled; + + if (e && ml[2].x >= 0) + { + blptr = colvect + (ml[2].x); + switch (tiaWrite[CTRLPF] >> 4) + { + case 3: + /* Eight clocks */ + for (i = 0; i < 8; i++) + *(blptr++) |= BL_MASK; + break; + case 2: + /* Four clocks */ + for (i = 0; i < 4; i++) + *(blptr++) |= BL_MASK; + break; + case 1: + /* Two clocks */ + for (i = 0; i < 2; i++) + *(blptr++) |= BL_MASK; + break; + case 0: + /* One clock */ + *(blptr++) |= BL_MASK; + break; + } + } +} + + +/* Draw a missile graphic */ +static __inline void +do_missile (int num, BYTE * misptr) +{ + int i; + + switch (ml[num].width) + { + case 0: + /* one clock */ + *(misptr++) |= ml[num].mask; + break; + case 1: + /* two clocks */ + for (i = 0; i < 2; i++) + *(misptr++) |= ml[num].mask; + break; + case 2: + /* four clocks */ + for (i = 0; i < 4; i++) + *(misptr++) |= ml[num].mask; + break; + case 3: + /* Eight clocks */ + for (i = 0; i < 8; i++) + *(misptr++) |= ml[num].mask; + break; + } /* switch */ +} + +/* Draw a missile taking into account the player's position. */ +/* line: the vertical position of the raster */ +/* num: 0 for M0, 1 for M1 */ +static __inline void +draw_missile (int num) +{ + BYTE *misptr; + + if (ml[num].enabled && ml[num].x >= 0) + { + switch (pl[num].nusize) + { + case 0: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + break; + case 1: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 16; + do_missile (num, misptr); + break; + case 2: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 32; + do_missile (num, misptr); + break; + case 3: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 16; + do_missile (num, misptr); + misptr = misptr + 16; + do_missile (num, misptr); + break; + case 4: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 64; + do_missile (num, misptr); + break; + case 5: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + break; + case 6: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 32; + do_missile (num, misptr); + misptr = misptr + 32; + do_missile (num, misptr); + break; + case 7: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + break; + + } + + } /* If */ +} + + +/* Construct one tv raster line colvect */ +/* line: the vertical position of the raster */ +__inline void +tv_rasterise (int line) +{ + +// if (tv_field && nOptions_Interlace) line +=222; + line_ptr = line * vwidth; + + /* Draw the playfield first */ + draw_playfield (); + + /* Do the ball */ + draw_ball (); + + /* Do the player 1 graphics */ + draw_missile (1); + pl_draw (1); + + /* Do the player 0 graphics */ + draw_missile (0); + pl_draw (0); +} + +/* Reset the collision vector */ +__inline void +reset_vector (void) +{ + int i; + uint32 *cpos=(uint32 *)colvect; + for (i = 0; i < 40; i++) + cpos[i] = 0; +} + + +/* draw the collision vector */ +/* Quick version with no magnification */ +__inline void +draw_vector_q (void) +{ + int i; + int uct = 0; + int colind, colval; + unsigned int pad; + unsigned int tv_ptr; + tv_ptr=line_ptr; + + /* Check for scores */ + if(scores_val ==2) + { + scores_val=1; + colour_lookup=colour_ptrs[norm_val][scores_val]; + } + + /* Use starting changes */ + while (uct < unified_count && unified[uct].x < 0) + use_unified_change (&unified[uct++]); + + for (i = 0; i < 80; i++) + { + if (uct < unified_count && unified[uct].x == i) + use_unified_change (&unified[uct++]); + + if((colval=colvect[i])){ + + /* Collision detection */ + col_state|=col_table[colval]; + + colind=colour_lookup[colval]; + pad=colour_table[colind]; + } else + pad=colour_table[BK_COLOUR]; + + VBuf[tv_ptr++] = pad; + } + + /* Check for scores */ + if(scores_val ==1) + { + scores_val=2; + colour_lookup=colour_ptrs[norm_val][scores_val]; + } + for (i = 80; i < 160; i++) + { + if (uct < unified_count && unified[uct].x == i) + use_unified_change (&unified[uct++]); + + if((colval=colvect[i])){ + + /* Collision detection */ + col_state|=col_table[colval]; + + colind=colour_lookup[colval]; + pad=colour_table[colind]; + } else + pad=colour_table[BK_COLOUR]; + + VBuf[tv_ptr++] = pad; + } + + while (uct < unified_count) + use_unified_change (&unified[uct++]); + unified_count = 0; +} + +/* Used for when running in frame skipping mode */ +static __inline void +update_registers (void) +{ + int i, num; + + /* Playfield */ + for (i = 0; i < pf_change_count[0]; i++) + use_pfraster_change (&pf[0], &pf_change[0][i]); + pf_change_count[0] = 0; + + /* Player graphics */ + for (num = 0; num < 2; num++) + { + for (i = 0; i < pl_change_count[num]; i++) + use_plraster_change (&pl[num], &pl_change[num][i]); + pl_change_count[num] = 0; + } + + /* Unified */ + for (i = 0; i < unified_count; i++) + use_unified_change (&unified[i]); + unified_count = 0; +} + +/* Main raster function, will have switches for different magsteps */ +/* line: the vertical position of the raster */ +void +tv_raster (int line) +{ +// if ( ((tv_counter % nOptions_SkipFrames) != 0) || (line > theight) ) + if (line > theight) + { + update_registers (); + } + else + { + reset_vector(); + tv_rasterise (line); + draw_vector_q (); + } +} + +void +init_raster (void) +{ + int i,val; + + init_collisions(); + + /* Normal Priority */ + for (i=0; i<64; i++) + { + if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else if (i & (BL_MASK | PF_MASK)) + val = PFBL_COLOUR; + else + val = BK_COLOUR; + colour_normal[i]=val; + } + + /* Alternate Priority */ + for (i=0; i<64; i++) + { + if (i & (BL_MASK | PF_MASK)) + val = PFBL_COLOUR; + else if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_alternate[i]=val; + } + + /* Normal Scores Left */ + for (i=0; i<64; i++) + { + if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else if (i & (BL_MASK | PF_MASK)) + /* Use P1 colour */ + val = P0M0_COLOUR; + else + val = BK_COLOUR; + colour_normscoresl[i]=val; + } + + /* Normal Scores Right */ + for (i=0; i<64; i++) + { + if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else if (i & (BL_MASK | PF_MASK)) + /* Use P1 colour */ + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_normscoresr[i]=val; + } + + /* Alternate Scores Left*/ + for (i=0; i<64; i++) + { + if (i & (BL_MASK | PF_MASK)) + val = P0M0_COLOUR; + else if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_altscoresl[i]=val; + } + + /* Alternate Scores Right*/ + for (i=0; i<64; i++) + { + if (i & (BL_MASK | PF_MASK)) + val = P1M1_COLOUR; + else if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_altscoresr[i]=val; + } + + colour_ptrs[0][0]=colour_normal; + colour_ptrs[1][0]=colour_alternate; + colour_ptrs[0][1]=colour_normscoresl; + colour_ptrs[1][1]=colour_altscoresl; + colour_ptrs[0][2]=colour_normscoresr; + colour_ptrs[1][2]=colour_altscoresr; + norm_val=0; scores_val=0; + + colour_lookup=colour_normal; +} diff --git a/MCUME_esp32/espvcs/main/Table.c b/MCUME_esp32/espvcs/main/Table.c new file mode 100644 index 0000000..e81f09f --- /dev/null +++ b/MCUME_esp32/espvcs/main/Table.c @@ -0,0 +1,645 @@ + + + + + +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: table.c,v 1.4 1996/08/26 15:04:20 ahornby Exp $ +******************************************************************************/ + +/* + * $Id: table.c,v 1.4 1996/08/26 15:04:20 ahornby Exp $ + * + * This was part of the x64 Commodore 64 emulator. + * See README for copyright notice + * + * This file contains lookup-table which is used to translate + * MOS6502 machine instructions. Machine code is used as index + * to array called lookup. Pointer to function is then fetched + * from array and function is called. + * Timing of the undocumented opcodes is based on information + * in an article in C=Lehti by Kai Lindfors and Topi Maurola. + * + * + * Written by + * Vesa-Matti Puro (vmp@lut.fi) + * Jarkko Sonninen (sonninen@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + */ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +#include "cpu.h" +#include "mnemonic.h" + + +/* + * The "mnemonic.h" file contains #defines for BRK, ORA, NOOP... which + * are character strings, i.e. #define BRK "BRK" + * #define ORA "ORA" . . . Used mainly to reduce typing... + * + * There are #defines for addressing modes i.e. IMPLIED, INDIRECT_X, + * ZERO_PAGE in "cpu.h"... These can be used to make a diassembler. + */ + + +int clength[] = +{1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 0}; + +struct lookup_tag lookup[] = +{ + +/**** Positive ****/ + + /* 00 */ + {BRK, IMPLIED, M_NONE, M_PC, 7, 0}, /* Pseudo Absolute */ + /* 01 */ + {ORA, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* 02 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 03 */ + {SLO, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 04 */ + {NOOP, ZERO_PAGE, M_NONE, M_NONE, 3, 0}, + /* 05 */ + {ORA, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 06 */ + {ASL, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 07 */ + {SLO, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 08 */ + {PHP, IMPLIED, M_SR, M_NONE, 3, 0}, + /* 09 */ + {ORA, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 0a */ + {ASL, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 0b */ + {ANC, IMMEDIATE, M_ACIM, M_ACNC, 2, 0}, + + /* 0c */ + {NOOP, ABSOLUTE, M_NONE, M_NONE, 4, 0}, + /* 0d */ + {ORA, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 0e */ + {ASL, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 0f */ + {SLO, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 10 */ + {BPL, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 11 */ + {ORA, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 12 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 13 */ + {SLO, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 14 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 15 */ + {ORA, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 16 */ + {ASL, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 17 */ + {SLO, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 18 */ + {CLC, IMPLIED, M_NONE, M_FC, 2, 0}, + /* 19 */ + {ORA, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 1a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 1b */ + {SLO, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 1c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 1d */ + {ORA, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 1e */ + {ASL, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 1f */ + {SLO, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* 20 */ + {JSR, ABSOLUTE, M_ADDR, M_PC, 6, 0}, + /* 21 */ + {AND, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect ,X) */ + /* 22 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 23 */ + {RLA, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 24 */ + {BIT, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* 25 */ + {AND, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 26 */ + {ROL, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 27 */ + {RLA, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 28 */ + {PLP, IMPLIED, M_NONE, M_SR, 4, 0}, + /* 29 */ + {AND, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 2a */ + {ROL, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 2b */ + {ANC, IMMEDIATE, M_ACIM, M_ACNC, 2, 0}, + + /* 2c */ + {BIT, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* 2d */ + {AND, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 2e */ + {ROL, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 2f */ + {RLA, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 30 */ + {BMI, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 31 */ + {AND, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 32 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 33 */ + {RLA, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 34 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 35 */ + {AND, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 36 */ + {ROL, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 37 */ + {RLA, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 38 */ + {SEC, IMPLIED, M_NONE, M_FC, 2, 0}, + /* 39 */ + {AND, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 3a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 3b */ + {RLA, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 3c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 3d */ + {AND, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 3e */ + {ROL, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 3f */ + {RLA, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* 40 */ + {RTI, IMPLIED, M_NONE, M_PC, 6, 0}, + /* 41 */ + {EOR, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* 42 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 43 */ + {SRE, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 44 */ + {NOOP, ZERO_PAGE, M_NONE, M_NONE, 3, 0}, + /* 45 */ + {EOR, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 46 */ + {LSR, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 47 */ + {SRE, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 48 */ + {PHA, IMPLIED, M_AC, M_NONE, 3, 0}, + /* 49 */ + {EOR, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 4a */ + {LSR, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 4b */ + {ASR, IMMEDIATE, M_ACIM, M_AC, 2, 0}, /* (AC & IMM) >>1 */ + + /* 4c */ + {JMP, ABSOLUTE, M_ADDR, M_PC, 3, 0}, /* Absolute */ + /* 4d */ + {EOR, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 4e */ + {LSR, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 4f */ + {SRE, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 50 */ + {BVC, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 51 */ + {EOR, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 52 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 53 */ + {SRE, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 54 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 55 */ + {EOR, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 56 */ + {LSR, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 57 */ + {SRE, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 58 */ + {CLI, IMPLIED, M_NONE, M_FI, 2, 0}, + /* 59 */ + {EOR, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 5a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 5b */ + {SRE, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 5c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 5d */ + {EOR, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 5e */ + {LSR, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 5f */ + {SRE, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* 60 */ + {RTS, IMPLIED, M_NONE, M_PC, 6, 0}, + /* 61 */ + {ADC, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* 62 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 63 */ + {RRA, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 64 */ + {NOOP, ZERO_PAGE, M_NONE, M_NONE, 3, 0}, + /* 65 */ + {ADC, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 66 */ + {ROR, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 67 */ + {RRA, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 68 */ + {PLA, IMPLIED, M_NONE, M_AC, 4, 0}, + /* 69 */ + {ADC, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 6a */ + {ROR, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 6b */ + {ARR, IMMEDIATE, M_ACIM, M_AC, 2, 0}, /* ARR isn't typo */ + + /* 6c */ + {JMP, ABS_INDIRECT, M_AIND, M_PC, 5, 0}, /* Indirect */ + /* 6d */ + {ADC, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 6e */ + {ROR, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 6f */ + {RRA, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 70 */ + {BVS, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 71 */ + {ADC, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 72 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT relative? */ + /* 73 */ + {RRA, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 74 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 75 */ + {ADC, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 76 */ + {ROR, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 77 */ + {RRA, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 78 */ + {SEI, IMPLIED, M_NONE, M_FI, 2, 0}, + /* 79 */ + {ADC, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 7a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 7b */ + {RRA, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 7c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 7d */ + {ADC, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 7e */ + {ROR, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 7f */ + {RRA, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + +/**** Negative ****/ + + /* 80 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* 81 */ + {STA, INDIRECT_X, M_AC, M_INDX, 6, 0}, /* (Indirect,X) */ + /* 82 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* 83 */ + {SAX, INDIRECT_X, M_ANXR, M_INDX, 6, 0}, + + /* 84 */ + {STY, ZERO_PAGE, M_YR, M_ZERO, 3, 0}, /* Zeropage */ + /* 85 */ + {STA, ZERO_PAGE, M_AC, M_ZERO, 3, 0}, /* Zeropage */ + /* 86 */ + {STX, ZERO_PAGE, M_XR, M_ZERO, 3, 0}, /* Zeropage */ + /* 87 */ + {SAX, ZERO_PAGE, M_ANXR, M_ZERO, 3, 0}, + + /* 88 */ + {DEY, IMPLIED, M_YR, M_YR, 2, 0}, + /* 89 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* 8a */ + {TXA, IMPLIED, M_XR, M_AC, 2, 0}, +/**** very abnormal: usually AC = AC | #$EE & XR & #$oper ****/ + /* 8b */ + {ANE, IMMEDIATE, M_AXIM, M_AC, 2, 0}, + + /* 8c */ + {STY, ABSOLUTE, M_YR, M_ABS, 4, 0}, /* Absolute */ + /* 8d */ + {STA, ABSOLUTE, M_AC, M_ABS, 4, 0}, /* Absolute */ + /* 8e */ + {STX, ABSOLUTE, M_XR, M_ABS, 4, 0}, /* Absolute */ + /* 8f */ + {SAX, ABSOLUTE, M_ANXR, M_ABS, 4, 0}, + + /* 90 */ + {BCC, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 91 */ + {STA, INDIRECT_Y, M_AC, M_INDY, 6, 0}, /* (Indirect),Y */ + /* 92 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT relative? */ + /* 93 */ + {SHA, INDIRECT_Y, M_ANXR, M_STH0, 6, 0}, + + /* 94 */ + {STY, ZERO_PAGE_X, M_YR, M_ZERX, 4, 0}, /* Zeropage,X */ + /* 95 */ + {STA, ZERO_PAGE_X, M_AC, M_ZERX, 4, 0}, /* Zeropage,X */ + /* 96 */ + {STX, ZERO_PAGE_Y, M_XR, M_ZERY, 4, 0}, /* Zeropage,Y */ + /* 97 */ + {SAX, ZERO_PAGE_Y, M_ANXR, M_ZERY, 4, 0}, + + /* 98 */ + {TYA, IMPLIED, M_YR, M_AC, 2, 0}, + /* 99 */ + {STA, ABSOLUTE_Y, M_AC, M_ABSY, 5, 0}, /* Absolute,Y */ + /* 9a */ + {TXS, IMPLIED, M_XR, M_SP, 2, 0}, +/*** This is very mysterious command ... */ + /* 9b */ + {SHS, ABSOLUTE_Y, M_ANXR, M_STH3, 5, 0}, + + /* 9c */ + {SHY, ABSOLUTE_X, M_YR, M_STH2, 5, 0}, + /* 9d */ + {STA, ABSOLUTE_X, M_AC, M_ABSX, 5, 0}, /* Absolute,X */ + /* 9e */ + {SHX, ABSOLUTE_Y, M_XR, M_STH1, 5, 0}, + /* 9f */ + {SHA, ABSOLUTE_Y, M_ANXR, M_STH1, 5, 0}, + + /* a0 */ + {LDY, IMMEDIATE, M_IMM, M_YR, 2, 0}, /* Immediate */ + /* a1 */ + {LDA, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (indirect,X) */ + /* a2 */ + {LDX, IMMEDIATE, M_IMM, M_XR, 2, 0}, /* Immediate */ + /* a3 */ + {LAX, INDIRECT_X, M_INDX, M_ACXR, 6, 0}, /* (indirect,X) */ + + /* a4 */ + {LDY, ZERO_PAGE, M_ZERO, M_YR, 3, 0}, /* Zeropage */ + /* a5 */ + {LDA, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* a6 */ + {LDX, ZERO_PAGE, M_ZERO, M_XR, 3, 0}, /* Zeropage */ + /* a7 */ + {LAX, ZERO_PAGE, M_ZERO, M_ACXR, 3, 0}, + + /* a8 */ + {TAY, IMPLIED, M_AC, M_YR, 2, 0}, + /* a9 */ + {LDA, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* aa */ + {TAX, IMPLIED, M_AC, M_XR, 2, 0}, + /* ab */ + {LXA, IMMEDIATE, M_ACIM, M_ACXR, 2, 0}, /* LXA isn't a typo */ + + /* ac */ + {LDY, ABSOLUTE, M_ABS, M_YR, 4, 0}, /* Absolute */ + /* ad */ + {LDA, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* ae */ + {LDX, ABSOLUTE, M_ABS, M_XR, 4, 0}, /* Absolute */ + /* af */ + {LAX, ABSOLUTE, M_ABS, M_ACXR, 4, 0}, + + /* b0 */ + {BCS, RELATIVE, M_REL, M_NONE, 2, 0}, + /* b1 */ + {LDA, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (indirect),Y */ + /* b2 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* b3 */ + {LAX, INDIRECT_Y, M_INDY, M_ACXR, 5, 1}, + + /* b4 */ + {LDY, ZERO_PAGE_X, M_ZERX, M_YR, 4, 0}, /* Zeropage,X */ + /* b5 */ + {LDA, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* b6 */ + {LDX, ZERO_PAGE_Y, M_ZERY, M_XR, 4, 0}, /* Zeropage,Y */ + /* b7 */ + {LAX, ZERO_PAGE_Y, M_ZERY, M_ACXR, 4, 0}, + + /* b8 */ + {CLV, IMPLIED, M_NONE, M_FV, 2, 0}, + /* b9 */ + {LDA, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* ba */ + {TSX, IMPLIED, M_SP, M_XR, 2, 0}, + /* bb */ + {LAS, ABSOLUTE_Y, M_SABY, M_ACXS, 4, 1}, + + /* bc */ + {LDY, ABSOLUTE_X, M_ABSX, M_YR, 4, 1}, /* Absolute,X */ + /* bd */ + {LDA, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* be */ + {LDX, ABSOLUTE_Y, M_ABSY, M_XR, 4, 1}, /* Absolute,Y */ + /* bf */ + {LAX, ABSOLUTE_Y, M_ABSY, M_ACXR, 4, 1}, + + /* c0 */ + {CPY, IMMEDIATE, M_IMM, M_NONE, 2, 0}, /* Immediate */ + /* c1 */ + {CMP, INDIRECT_X, M_INDX, M_NONE, 6, 0}, /* (Indirect,X) */ + /* c2 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, /* occasional TILT */ + /* c3 */ + {DCP, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* c4 */ + {CPY, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* c5 */ + {CMP, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* c6 */ + {DEC, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* c7 */ + {DCP, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* c8 */ + {INY, IMPLIED, M_YR, M_YR, 2, 0}, + /* c9 */ + {CMP, IMMEDIATE, M_IMM, M_NONE, 2, 0}, /* Immediate */ + /* ca */ + {DEX, IMPLIED, M_XR, M_XR, 2, 0}, + /* cb */ + {SBX, IMMEDIATE, M_IMM, M_XR, 2, 0}, + + /* cc */ + {CPY, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* cd */ + {CMP, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* ce */ + {DEC, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* cf */ + {DCP, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* d0 */ + {BNE, RELATIVE, M_REL, M_NONE, 2, 0}, + /* d1 */ + {CMP, INDIRECT_Y, M_INDY, M_NONE, 5, 1}, /* (Indirect),Y */ + /* d2 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* d3 */ + {DCP, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* d4 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* d5 */ + {CMP, ZERO_PAGE_X, M_ZERX, M_NONE, 4, 0}, /* Zeropage,X */ + /* d6 */ + {DEC, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* d7 */ + {DCP, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* d8 */ + {CLD, IMPLIED, M_NONE, M_FD, 2, 0}, + /* d9 */ + {CMP, ABSOLUTE_Y, M_ABSY, M_NONE, 4, 1}, /* Absolute,Y */ + /* da */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* db */ + {DCP, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* dc */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* dd */ + {CMP, ABSOLUTE_X, M_ABSX, M_NONE, 4, 1}, /* Absolute,X */ + /* de */ + {DEC, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* df */ + {DCP, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* e0 */ + {CPX, IMMEDIATE, M_IMM, M_NONE, 2, 0}, /* Immediate */ + /* e1 */ + {SBC, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* e2 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* e3 */ + {ISB, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* e4 */ + {CPX, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* e5 */ + {SBC, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* e6 */ + {INC, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* e7 */ + {ISB, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* e8 */ + {INX, IMPLIED, M_XR, M_XR, 2, 0}, + /* e9 */ + {SBC, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* ea */ + {NOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* eb */ + {USBC, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* same as e9 */ + + /* ec */ + {CPX, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* ed */ + {SBC, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* ee */ + {INC, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* ef */ + {ISB, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* f0 */ + {BEQ, RELATIVE, M_REL, M_NONE, 2, 0}, + /* f1 */ + {SBC, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* f2 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* f3 */ + {ISB, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* f4 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* f5 */ + {SBC, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* f6 */ + {INC, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* f7 */ + {ISB, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* f8 */ + {SED, IMPLIED, M_NONE, M_FD, 2, 0}, + /* f9 */ + {SBC, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* fa */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* fb */ + {ISB, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* fc */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* fd */ + {SBC, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* fe */ + {INC, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* ff */ + {ISB, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0} +}; diff --git a/MCUME_esp32/espvcs/main/Tiasound.c b/MCUME_esp32/espvcs/main/Tiasound.c new file mode 100644 index 0000000..1d87b6c --- /dev/null +++ b/MCUME_esp32/espvcs/main/Tiasound.c @@ -0,0 +1,616 @@ +/*****************************************************************************/ +/* */ +/* Module: TIA Chip Sound Simulator */ +/* Purpose: To emulate the sound generation hardware of the Atari TIA chip. */ +/* Author: Ron Fries */ +/* */ +/* Revision History: */ +/* 10-Sep-96 - V1.0 - Initial Release */ +/* 14-Jan-97 - V1.1 - Cleaned up sound output by eliminating counter */ +/* reset. */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* TiaSound is Copyright(c) 1996 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ +#include "Atari2600EmulatorGlobals.h" + +#include "emuapi.h" + + +/* define some data types to keep it platform independent */ +#define int8 char +#define int16 short +#define int32 int + +#define uint8 unsigned int8 +#define uint16 unsigned int16 +#define uint32 unsigned int32 + + +/* CONSTANT DEFINITIONS */ + +/* definitions for AUDCx (15, 16) */ +#define SET_TO_1 0x00 /* 0000 */ +#define POLY4 0x01 /* 0001 */ +#define DIV31_POLY4 0x02 /* 0010 */ +#define POLY5_POLY4 0x03 /* 0011 */ +#define PURE1 0x04 /* 0100 */ +#define PURE2 0x05 /* 0101 */ +#define DIV31_PURE 0x06 /* 0110 */ +#define POLY5_2 0x07 /* 0111 */ +#define POLY9 0x08 /* 1000 */ +#define POLY5 0x09 /* 1001 */ +#define DIV31_POLY5 0x0a /* 1010 */ +#define POLY5_POLY5 0x0b /* 1011 */ +#define DIV3_PURE 0x0c /* 1100 */ +#define DIV3_PURE2 0x0d /* 1101 */ +#define DIV93_PURE 0x0e /* 1110 */ +#define DIV3_POLY5 0x0f /* 1111 */ + +#define DIV3_MASK 0x0c + +#define AUDC0 0x15 +#define AUDC1 0x16 +#define AUDF0 0x17 +#define AUDF1 0x18 +#define AUDV0 0x19 +#define AUDV1 0x1a + +/* the size (in entries) of the 4 polynomial tables */ +#define POLY4_SIZE 0x000f +#define POLY5_SIZE 0x001f +#define POLY9_SIZE 0x01ff + +/* channel definitions */ +#define CHAN1 0 +#define CHAN2 1 + +//#define FALSE 0 +//#define TRUE 1 + + +/* LOCAL GLOBAL VARIABLE DEFINITIONS */ + +/* structures to hold the 6 tia sound control bytes */ +uint8 AUDC[2]; /* AUDCx (15, 16) */ +uint8 AUDF[2]; /* AUDFx (17, 18) */ +uint8 AUDV[2]; /* AUDVx (19, 1A) */ + +static uint8 Outvol[2]; /* last output volume for each channel */ + + +/* Initialze the bit patterns for the polynomials. */ + +/* The 4bit and 5bit patterns are the identical ones used in the tia chip. */ +/* Though the patterns could be packed with 8 bits per byte, using only a */ +/* single bit per byte keeps the math simple, which is important for */ +/* efficient processing. */ + +static uint8 Bit4[POLY4_SIZE] = + { 1,1,0,1,1,1,0,0,0,0,1,0,1,0,0 }; + +static uint8 Bit5[POLY5_SIZE] = + { 0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1 }; + +/* I've treated the 'Div by 31' counter as another polynomial because of */ +/* the way it operates. It does not have a 50% duty cycle, but instead */ +/* has a 13:18 ratio (of course, 13+18 = 31). This could also be */ +/* implemented by using counters. */ + +static uint8 Div31[POLY5_SIZE] = + { 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 }; + +/* Rather than have a table with 511 entries, I use a random number */ +/* generator. */ + +static uint8 Bit9[POLY9_SIZE]; + +static uint8 P4[2]; /* Position pointer for the 4-bit POLY array */ +static uint8 P5[2]; /* Position pointer for the 5-bit POLY array */ +static uint16 P9[2]; /* Position pointer for the 9-bit POLY array */ + +static uint8 Div_n_cnt[2]; /* Divide by n counter. one for each channel */ +static uint8 Div_n_max[2]; /* Divide by n maximum, one for each channel */ + + +/* In my routines, I treat the sample output as another divide by N counter. */ +/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */ +/* which has 8 binary digits to the right of the decimal point. */ + +static uint16 Samp_n_max; /* Sample max, multiplied by 256 */ +static uint16 Samp_n_cnt; /* Sample cnt. */ + +extern unsigned char *sounddata; +/*****************************************************************************/ +/* Module: Tia_sound_init() */ +/* Purpose: to handle the power-up initialization functions */ +/* these functions should only be executed on a cold-restart */ +/* */ +/* Author: Ron Fries */ +/* Date: September 10, 1996 */ +/* */ +/* Inputs: sample_freq - the value for the '30 Khz' Tia audio clock */ +/* playback_freq - the playback frequency in samples per second */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +void Tia_sound_init (uint16 sample_freq, uint16 playback_freq) +{ + uint8 chan; + int16 n; + + /* fill the 9bit polynomial with random bits */ + for (n=0; n 1) + { + /* decrement and loop */ + Div_n_cnt[chan]--; + } + /* otherwise if we've reached the bottom */ + else if (Div_n_cnt[chan] == 1) + { + /* reset the counter */ + Div_n_cnt[chan] = Div_n_max[chan]; + + /* the P5 counter has multiple uses, so we inc it here */ + P5[chan]++; + if (P5[chan] == POLY5_SIZE) + P5[chan] = 0; + + /* check clock modifier for clock tick */ + + /* if we're using pure tones OR + we're using DIV31 and the DIV31 bit is set OR + we're using POLY5 and the POLY5 bit is set */ + if (((AUDC[chan] & 0x02) == 0) || + (((AUDC[chan] & 0x01) == 0) && Div31[P5[chan]]) || + (((AUDC[chan] & 0x01) == 1) && Bit5[P5[chan]])) + { + if (AUDC[chan] & 0x04) /* pure modified clock selected */ + { + if (Outvol[chan]) /* if the output was set */ + Outvol[chan] = 0; /* turn it off */ + else + Outvol[chan] = AUDV[chan]; /* else turn it on */ + } + else if (AUDC[chan] & 0x08) /* check for p5/p9 */ + { + if (AUDC[chan] == POLY9) /* check for poly9 */ + { + /* inc the poly9 counter */ + P9[chan]++; + if (P9[chan] == POLY9_SIZE) + P9[chan] = 0; + + if (Bit9[P9[chan]]) /* if poly9 bit is set */ + Outvol[chan] = AUDV[chan]; + else + Outvol[chan] = 0; + } + else /* must be poly5 */ + { + if (Bit5[P5[chan]]) + Outvol[chan] = AUDV[chan]; + else + Outvol[chan] = 0; + } + } + else /* poly4 is the only remaining option */ + { + /* inc the poly4 counter */ + P4[chan]++; + if (P4[chan] == POLY4_SIZE) + P4[chan] = 0; + + if (Bit4[P4[chan]]) + Outvol[chan] = AUDV[chan]; + else + Outvol[chan] = 0; + } + } + } + } + + /* decrement the sample counter - value is 256 since the lower + byte contains the fractional part */ + Samp_n_cnt -= 256; + + /* if the count down has reached zero */ + if (Samp_n_cnt < 256) + { + /* adjust the sample counter */ + Samp_n_cnt += Samp_n_max; + + /* calculate the latest output value and place in buffer */ + *(buffer++) = Outvol[0] + Outvol[1]; + /* and indicate one less byte to process */ + n--; + } + } +} + + +/*****************************************************************************/ +/* Module: Tia_process() */ +/* Purpose: To fill the output buffer with the sound output based on the */ +/* tia chip parameters. This routine has been optimized. */ +/* */ +/* Author: Ron Fries */ +/* Date: September 10, 1996 */ +/* */ +/* Inputs: *buffer - pointer to the buffer where the audio output will */ +/* be placed */ +/* n - size of the playback buffer */ +/* */ +/* Outputs: the buffer will be filled with n bytes of audio - no return val */ +/* */ +/*****************************************************************************/ + +void Tia_process_2 ( unsigned short *buffer, uint16 n) +{ + uint8 audc0,audv0,audc1,audv1; + uint8 div_n_cnt0,div_n_cnt1; + uint8 p5_0, p5_1,outvol_0,outvol_1; + + audc0 = AUDC[0]; + audv0 = AUDV[0]; + audc1 = AUDC[1]; + audv1 = AUDV[1]; + + /* make temporary local copy */ + p5_0 = P5[0]; + p5_1 = P5[1]; + outvol_0 = Outvol[0]; + outvol_1 = Outvol[1]; + div_n_cnt0 = Div_n_cnt[0]; + div_n_cnt1 = Div_n_cnt[1]; + + /* loop until the buffer is filled */ + while (n) + { + /* Process channel 0 */ + if (div_n_cnt0 > 1) + { + div_n_cnt0--; + } + else if (div_n_cnt0 == 1) + { + div_n_cnt0 = Div_n_max[0]; + + /* the P5 counter has multiple uses, so we inc it here */ + p5_0++; + if (p5_0 == POLY5_SIZE) + p5_0 = 0; + + /* check clock modifier for clock tick */ + if (((audc0 & 0x02) == 0) || + (((audc0 & 0x01) == 0) && Div31[p5_0]) || + (((audc0 & 0x01) == 1) && Bit5[p5_0])) + { + if (audc0 & 0x04) /* pure modified clock selected */ + { + if (outvol_0) /* if the output was set */ + outvol_0 = 0; /* turn it off */ + else + outvol_0 = audv0; /* else turn it on */ + } + else if (audc0 & 0x08) /* check for p5/p9 */ + { + if (audc0 == POLY9) /* check for poly9 */ + { + /* inc the poly9 counter */ + P9[0]++; + if (P9[0] == POLY9_SIZE) + P9[0] = 0; + + if (Bit9[P9[0]]) + outvol_0 = audv0; + else + outvol_0 = 0; + } + else /* must be poly5 */ + { + if (Bit5[p5_0]) + outvol_0 = audv0; + else + outvol_0 = 0; + } + } + else /* poly4 is the only remaining option */ + { + /* inc the poly4 counter */ + P4[0]++; + if (P4[0] == POLY4_SIZE) + P4[0] = 0; + + if (Bit4[P4[0]]) + outvol_0 = audv0; + else + outvol_0 = 0; + } + } + } + + + /* Process channel 1 */ + if (div_n_cnt1 > 1) + { + div_n_cnt1--; + } + else if (div_n_cnt1 == 1) + { + div_n_cnt1 = Div_n_max[1]; + + /* the P5 counter has multiple uses, so we inc it here */ + p5_1++; + if (p5_1 == POLY5_SIZE) + p5_1 = 0; + + /* check clock modifier for clock tick */ + if (((audc1 & 0x02) == 0) || + (((audc1 & 0x01) == 0) && Div31[p5_1]) || + (((audc1 & 0x01) == 1) && Bit5[p5_1])) + { + if (audc1 & 0x04) /* pure modified clock selected */ + { + if (outvol_1) /* if the output was set */ + outvol_1 = 0; /* turn it off */ + else + outvol_1 = audv1; /* else turn it on */ + } + else if (audc1 & 0x08) /* check for p5/p9 */ + { + if (audc1 == POLY9) /* check for poly9 */ + { + /* inc the poly9 counter */ + P9[1]++; + if (P9[1] == POLY9_SIZE) + P9[1] = 0; + + if (Bit9[P9[1]]) + outvol_1 = audv1; + else + outvol_1 = 0; + } + else /* must be poly5 */ + { + if (Bit5[p5_1]) + outvol_1 = audv1; + else + outvol_1 = 0; + } + } + else /* poly4 is the only remaining option */ + { + /* inc the poly4 counter */ + P4[1]++; + if (P4[1] == POLY4_SIZE) + P4[1] = 0; + + if (Bit4[P4[1]]) + outvol_1 = audv1; + else + outvol_1 = 0; + } + } + } + + /* decrement the sample counter - value is 256 since the lower + byte contains the fractional part */ + Samp_n_cnt -= 256; + + /* if the count down has reached zero */ + if (Samp_n_cnt < 256) + { + /* adjust the sample counter */ + Samp_n_cnt += Samp_n_max; + + /* calculate the latest output value and place in buffer */ + *(buffer++) = (outvol_0 + outvol_1)*256; + + /* and indicate one less byte to process */ + n--; + } + } + + /* save for next round */ + P5[0] = p5_0; + P5[1] = p5_1; + Outvol[0] = outvol_0; + Outvol[1] = outvol_1; + Div_n_cnt[0] = div_n_cnt0; + Div_n_cnt[1] = div_n_cnt1; + +} + + + diff --git a/MCUME_esp32/espvcs/main/Vcsemu.c b/MCUME_esp32/espvcs/main/Vcsemu.c new file mode 100644 index 0000000..a70bbca --- /dev/null +++ b/MCUME_esp32/espvcs/main/Vcsemu.c @@ -0,0 +1,72 @@ +#include "options.h" +#include "vcsemu.h" +#include "types.h" +#include "vmachine.h" + +#include "emuapi.h" + +/**************************************************************************** +* Local macros / typedefs +****************************************************************************/ + +/**************************************************************************** +* Global data +****************************************************************************/ + +/**************************************************************************** +* Imported procedures +****************************************************************************/ +extern void mainloop(void); + +/**************************************************************************** +* Local procedures +****************************************************************************/ + +/**************************************************************************** +* Exported procedures +****************************************************************************/ +void vcs_Init(void) +{ + init_machine(); + init_hardware(); + tv_on(); +} + + +void vcs_Start(char * filename) +{ + int size = emu_LoadFile(filename, (char *)theCart, 16384); + + + if (size > 16384) + size = 16384; + + rom_size = size; + if (size == 2048) + { + memcpy (&theCart[2048], &theCart[0], 2048); + rom_size = 4096; + } + else if (size < 2048) + { + theCart[0x0ffc] = 0x00; + theCart[0x0ffd] = 0xf0; + rom_size = 4096; + } + + init_hardware(); + init_banking(); +} + + +void vcs_Step(void) +{ + //emu_printf("s"); + mainloop(); +} + + + + + + diff --git a/MCUME_esp32/espvcs/main/Vcsemu.h b/MCUME_esp32/espvcs/main/Vcsemu.h new file mode 100644 index 0000000..5811f77 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Vcsemu.h @@ -0,0 +1,9 @@ +extern void vcs_Init(void); +extern void vcs_Start(char * filename); +extern void vcs_Stop(void); +extern void vcs_Step(void); + + + + + diff --git a/MCUME_esp32/espvcs/main/Vmachine.c b/MCUME_esp32/espvcs/main/Vmachine.c new file mode 100644 index 0000000..09aa293 --- /dev/null +++ b/MCUME_esp32/espvcs/main/Vmachine.c @@ -0,0 +1,731 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: vmachine.c,v 2.22 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* + The virtual machine. Contains the RIOT timer code, and hardware + initialisation. + */ + +#include +#include "types.h" +#include "address.h" +#include "options.h" +#include "display.h" +#include "raster.h" +#include "cpu.h" +#include "collision.h" +#include "sound.h" +#include "vmachine.h" +#include "tiasound.h" + +#include "emuapi.h" + +#define snd 1 + +extern void BlitScreen(void); +extern int nOptions_SoundBufSize; +extern int nOptions_SoundOn; +int Touchpadx=0; +int Touchpady=0; +//extern int Touchpadx; +//extern int Touchpady; +extern int nOptions_Landscape; +extern int nOptions_SkipFrames; + + + +/* The Rom define might need altering for paged carts */ +/* Enough for 16k carts */ +int rom_size; + +/* Used as a simple file buffer to store the data */ +// JMH +//BYTE theCart[16384]; +//BYTE theCart[4096]; +BYTE * theCart=0; + +/* Scratch area for those banking types that require memcpy() */ +//BYTE cartScratch[4096]; +BYTE * cartScratch=0; +/* Area for those carts containing RAM */ +//BYTE cartRam[1024]; +BYTE * cartRam=0; + +/* Pointer to start of ROM data */ +BYTE *theRom; + +BYTE theRam[128]; +BYTE tiaRead[0x0e]; +BYTE tiaWrite[0x2d]; +BYTE keypad[2][4]; + +/* These don't strictly need so much space */ +BYTE riotRead[0x298]; +BYTE riotWrite[0x298]; + +/* + Hardware addresses not programmer accessible + */ + +/* Set if whole emulator is reset */ +int reset_flag = 0; + +/* The timer resolution, can be 1,8,64,1024 */ +int timer_res = 32; +int timer_count = 0; +int timer_clks = 0; +extern CLOCK clk; +extern int beamadj; + +/* Electron beam position */ +int ebeamx, ebeamy, sbeamx; + +/* The state of the electron beam */ +#define VSYNCSTATE 1 +#define VBLANKSTATE 2 +#define HSYNCSTATE 4 +#define DRAWSTATE 8 +#define OVERSTATE 16 +int vbeam_state; /* 1 2 8 or 16 */ +int hbeam_state; /* 4 8 or 16 */ + +/* The tv size, varies with PAL/NTSC */ +int tv_width, tv_height, tv_vsync, tv_vblank, tv_overscan, tv_frame, tv_hertz, + tv_hsync; + + +PlayField pf[2]; + +Paddle paddle[4]; + +Player pl[2]; + +Missile ml[3]; + + + +#define MAXLIST 80 +/* The various display lists */ +struct RasterChange pl_change[2][MAXLIST], pf_change[1][MAXLIST], unified[MAXLIST]; + +/* The display list counters */ +int pl_change_count[2], pf_change_count[1], unified_count; + + +/*************************************************************************** + Let the functions begin! +****************************************************************************/ +void +init_machine (void) +{ + if (theCart == 0) theCart = (BYTE *)emu_Malloc(16384); + if (cartScratch == 0) cartScratch = (BYTE *)emu_Malloc(4096); + if (cartRam == 0) cartRam = (BYTE *)emu_Malloc(1024); +} + +/* Device independent screen initialisations */ +void +init_screen (void) +{ + + /* Set the electron beam to the top left */ + ebeamx = -tv_hsync; + ebeamy = 0; + sbeamx = 0; + vbeam_state = VSYNCSTATE; + hbeam_state = OVERSTATE; + + tv_vsync = 3; + tv_hsync = 68; + switch (base_opts.tvtype) + { + case NTSC: + tv_width = 160; + tv_height = 192; + tv_vblank = 40; + tv_overscan = 30; + tv_frame = 262; + tv_hertz = 60; + break; + case PAL: + case SECAM: + tv_width = 160; + tv_height = 228; + tv_vblank = 48; + tv_overscan = 36; + tv_frame = 312; + tv_hertz = 50; + break; + } + +} + +/* Displays the tv screen */ +void tv_display (void) +{ + /* Only display if the frame is a valid one. */ + //if ( (tv_counter % nOptions_SkipFrames) == 0) + //{ + emu_DrawScreen(VBuf, tv_width, tv_height, tv_width); + emu_DrawVsync(); + //} + //tv_counter++; +} + +/* Initialise the RIOT (also known as PIA) */ +void +init_riot (void) +{ + int i; + + /* Reset the arrays */ + for(i=0; i< 0x298;i++) + { + riotRead[i]=0; + riotWrite[i]=0; + } + + /* Wipe the RAM */ + for (i = 0; i < 0x80; i++) + theRam[i] = 0; + + /* Set the timer to zero */ + riotRead[INTIM] = 0; + + /* Set the joysticks and switches to input */ + riotWrite[SWACNT] = 0; + riotWrite[SWBCNT] = 0; + + /* Centre the joysticks */ + riotRead[SWCHA] = 0xff; + riotRead[SWCHB] = 0x0b; + + /* Set the counter resolution */ + timer_res = 32; + timer_count = 0; + timer_clks = 0; +} + +/* Initialise the television interface adaptor (TIA) */ +void +init_tia (void) +{ + int i; + for(i=0; i< 0x2d;i++) + { + tiaWrite[i]=0; + } + for(i=0; i< 0x0e;i++) + { + tiaRead[i]=0; + } + + tiaWrite[CTRLPF] = 0x00; + for (i = 0; i < 2; i++) + { + pl[i].hmm = 0x0; + pl[i].x = 0x0; + pl[i].nusize = 0; + pl[i].grp = 0; + pl[i].vdel = 0; + pl[i].vdel_flag = 0; + pl_change_count[i] = 0; + } + + pl[0].mask = PL0_MASK; + pl[1].mask = PL1_MASK; + ml[0].mask = ML0_MASK; + ml[1].mask = ML1_MASK; + reset_collisions (); + + pf_change_count[0] = 0; + unified_count = 0; + for (i = 0; i < 3; i++) + { + ml[i].x = 0; + ml[i].hmm = 0; + ml[i].enabled = 0; + ml[i].locked = 0; + ml[i].width = 0; + ml[i].vdel = 0; + ml[i].vdel_flag = 0; + } + + tiaWrite[VBLANK] = 0; + tiaRead[INPT4] = 0x80; + tiaRead[INPT5] = 0x80; + + /* Set up the colour table */ + colour_table[P0M0_COLOUR]= 0; + colour_table[P1M1_COLOUR]= 0; + colour_table[PFBL_COLOUR] = 0; + colour_table[BK_COLOUR] = 0; +} + +void +init_memory(void) +{ + int i; + for(i=0;i<1024; i++) + cartRam[i]=0; + for(i=0; i<128;i++) + theRam[i]=0; +} + +void +init_banking (void) +{ + /* Set to the first bank */ + //dbg_message(DBG_NORMAL, "rom_size is set at %d bytes\n", rom_size); + if (rom_size == 2048) + theRom = &theCart[rom_size - 2048]; + else + theRom = &theCart[rom_size - 4096]; + //JMH + //switch(base_opts.bank) + // { + // case 3: + // /* Parker Brothers 8k E0 */ + // memcpy(&cartScratch[0xc00],&theCart[0x1c00],1024); + // memcpy(&cartScratch[0],&theCart[0],3072); + // theRom=cartScratch; + // break; + // default: + // break; + // } +} + +extern void init_cpu( ADDRESS addr); + +/* Main hardware startup */ +void +init_hardware (void) +{ +// dbg_message(DBG_NORMAL,"Setting Up hardware\n"); + init_screen (); + init_riot (); + init_tia (); + init_raster (); + init_memory(); + init_banking(); + init_cpu (0xfffc); +} + +/* Do a raster change */ +__inline void +do_raster_change (int i, int type, int val, struct RasterChange *rc) +{ + rc->x = ebeamx + beamadj; + rc->type = type; + rc->val = val; +} + +/* Do a raster change on the unified list */ +/* type: type of change */ +/* val: value of change */ +__inline void +do_unified_change (int type, int val) +{ + if (unified_count < MAXLIST) + { + unified[unified_count].x = ebeamx + beamadj; + unified[unified_count].type = type; + unified[unified_count].val = val; + unified_count++; + } +} + +/* Do a player raster change */ +/* i: player to change. 0 or 1 */ +/* type: type of change */ +/* val: value of change */ +__inline void +do_plraster_change (int i, int type, int val) +{ + int plc = pl_change_count[i]; + /*printf("Raster change i=%d, x=%d, type=%d, val=%d\n", i, x, type, val); */ + if (plc < MAXLIST) + { + do_raster_change (i, type, val, &pl_change[i][plc]); + if (type == 1) + pl_change[i][plc].x -= 3; + pl_change_count[i]++; + } +} + +/* Do a playfield raster change */ +/* i: playfield to change. Depreciated, as 0 is now only one used */ +/* type: type of change */ +/* val: value of change */ +__inline void +do_pfraster_change (int i, int type, int val) +{ + int pfc = pf_change_count[i]; + /* + if(ebeamy>=100) { + printf("Raster change i=%d, x=%d, type=%d, val=%d\n", + i, ebeamx+beamadj, type, val); + //show(); + } + */ + if (pfc < MAXLIST) + { + do_raster_change (i, type, val, &pf_change[i][pfc]); + pf_change_count[i]++; + } +} + + +/* Use a unified change */ +/* rc: unified change structure to use */ +__inline void +use_unified_change (struct RasterChange *rc) +{ + switch (rc->type) + { + case 0: + /* P0MO colour */ + colour_table[P0M0_COLOUR] = rc->val; + break; + case 1: + /* POM0 colour */ + colour_table[P1M1_COLOUR] = rc->val; + break; + case 2: + /* PFBL colour */ + colour_table[PFBL_COLOUR] = rc->val; + break; + case 3: + /* BK colour */ + colour_table[BK_COLOUR] = rc->val; + break; + case 4: + /* Priority change Normal */ + if(rc->val) + norm_val=1; + else + norm_val=0; + colour_lookup=colour_ptrs[norm_val][scores_val]; + break; + case 5: + /* Priority change Scores */ + if(rc->val) + { + if(rc->x < 80) + scores_val=1; + else + scores_val=2; + } + else + scores_val=0; + colour_lookup=colour_ptrs[norm_val][scores_val]; + break; + } +} + +/* Use a playfield change */ +/* pl: playfield to change */ +/* rc: change to make */ +__inline void +use_pfraster_change (PlayField *pl, struct RasterChange *rc) +{ + switch (rc->type) + { + case 0: + /* PF0 */ + pl->pf0 = rc->val; + break; + case 1: + /* PF1 */ + pl->pf1 = rc->val; + break; + case 2: + /* PF2 */ + pl->pf2 = rc->val; + break; + case 3: + /* Reflection */ + pl->ref = rc->val; + break; + } +} + +/* Use a player change */ +/* pl: player to change */ +/* rc: change to make */ +__inline void +use_plraster_change ( Player *pl, struct RasterChange *rc) +{ + switch (rc->type) + { + case 0: + /* GRP */ + pl->grp = rc->val; + break; + /* Vertical delay */ + case 1: + pl->vdel = pl->grp; + break; + } +} + + +int +do_paddle (int padnum) +{ + int res = 0x00; + int x=0; + if ((tiaWrite[VBLANK] & 0x80) == 0) + { + if (!nOptions_Landscape){ + x=240-Touchpadx; + x=x*66; + if (paddle[padnum].val > x) + res=0x80; + + }else{ + x=320-Touchpady; + x=x*50; + if (paddle[padnum].val > x) + res=0x80; + } + + if (x > clk) + res = 0x00; + } + return res; +} + +/* Calculate the keypad rows */ +/* i.e. when reading from INPTx we don't know the row */ +BYTE +do_keypad (int pad, int col) +{ + BYTE res= 0x80; + +// read_keypad(pad); + + /* Bottom row */ + if(pad==0) { + if( (riotWrite[SWCHA] & 0x80) && keypad[pad][col]==3) + res=0x00; + /* Third row */ + if( (riotWrite[SWCHA] & 0x40) && keypad[pad][col]==2) + res=0x00; + if( (riotWrite[SWCHA] & 0x20) && keypad[pad][col]==1) + res=0x00; + if( (riotWrite[SWCHA] & 0x10) && keypad[pad][col]==0) + res=0x00; + } + else { + /* Bottom row */ + if( (riotWrite[SWCHA] & 0x80) && keypad[pad][col]==3) + res=0x00; + /* Third row */ + if( (riotWrite[SWCHA] & 0x40) && keypad[pad][col]==2) + res=0x00; + if( (riotWrite[SWCHA] & 0x20) && keypad[pad][col]==1) + res=0x00; + if( (riotWrite[SWCHA] & 0x10) && keypad[pad][col]==0) + res=0x00; + } + return res; +} + + +/* + Called when the timer is set . + Note that res is the bit shift, not absolute value. + Assumes that any timer interval set will last longer than the instruction + setting it. + */ +/* res: timer interval resolution as a bit shift value */ +/* count: the number of intervals to set */ +/* clkadj: the number of CPU cycles into the current instruction */ +void +set_timer (int res, int count, int clkadj) +{ + timer_count = count << res; + timer_clks = clk + clkadj; + timer_res = res; +} + +/* New timer code, now only called on a read of INTIM */ +/* clkadj: the number of CPU cycles into the current instruction */ +/* returns: the current timer value */ +BYTE +do_timer (int clkadj) +{ + BYTE result; + int delta; + int value; + + delta = clk - timer_clks; + value = delta >> timer_res; + if (delta <= timer_count) + { /* Timer is still going down in res intervals */ + result = value; + } + else + { + if (value == 0) + /* Timer is in holding period */ + result = 0; + else + { + /* Timer is descending from 0xff in clock intervals */ + set_timer (0, 0xff, clkadj); + result = 0; + } + } + + /* printf("Timer result=%d\n", result); */ + return result; +} + +#ifdef snd +//extern unsigned char *sounddata; +//#define SoundBufSize 256 +//unsigned char sounddata[SoundBufSize]; +#endif + +/* Do the screen related part of a write to VBLANK */ +/* b: the byte written */ +void +do_vblank (BYTE b) +{ + + if (b & 0x02) + { + /* Start vertical blank */ + vbeam_state = VBLANKSTATE; +#ifdef snd +// Tia_process(sounddata, SoundBufSize); +// CESound_play_sample(sounddata, nOptions_SoundBufSize); +#endif + /* Also means we can update screen */ + tv_display (); + } + else + { + /* End vblank, and start first hsync drawing */ + int i; + + vbeam_state = DRAWSTATE; + hbeam_state = HSYNCSTATE; + /* Set up the screen */ + for (i = 0; i < unified_count; i++) + use_unified_change (&unified[i]); + /* Hope for a WSYNC, but just in case */ + ebeamx = -tv_hsync; + ebeamy = 0; + } +} + + +//int count = 1; + +/* do a horizontal sync */ +void +do_hsync (void) +{ + /* Only perform heavy stuff if electron beam is in correct position */ + if (vbeam_state == DRAWSTATE && (ebeamx > -tv_hsync)) + { +// if (!(count--)) +// { +// count = 2; + tv_raster (ebeamy); + +// } + /* Fix the clock value */ + clk += (ebeamx - tv_width) / 3; + ebeamy++; + } + hbeam_state = HSYNCSTATE; + ebeamx = -tv_hsync; + sbeamx = 0; +} + +/* Main screen logic */ +/* clks: CPU clock length of last instruction */ +__inline void +do_screen (int clks) +{ + switch (vbeam_state) + { + case VSYNCSTATE: + case VBLANKSTATE: + switch (hbeam_state) + { + case HSYNCSTATE: + ebeamx += clks * 3; + if (ebeamx >= 0) + { + hbeam_state = DRAWSTATE; + } + break; + case DRAWSTATE: + ebeamx += clks * 3; + if (ebeamx >= tv_width) + { + ebeamx -= (tv_hsync + tv_width); + /* Insert hsync stuff here */ + sbeamx = ebeamx; + hbeam_state = HSYNCSTATE; + } + break; + case OVERSTATE: + break; + } + break; + case DRAWSTATE: + switch (hbeam_state) + { + case HSYNCSTATE: + ebeamx += clks * 3; + if (ebeamx >= 0) + { + hbeam_state = DRAWSTATE; + } + break; + case DRAWSTATE: + ebeamx += clks * 3; + if (ebeamx >= tv_width) + { + /* Insert hsync stuff here */ + sbeamx = ebeamx; + ebeamx -= (tv_hsync + tv_width); + tv_raster (ebeamy); + ebeamy++; + hbeam_state = HSYNCSTATE; + } + if (ebeamy >= tv_height + tv_overscan) + { + vbeam_state = OVERSTATE; + ebeamy = 0; + } + break; + case OVERSTATE: + break; + } + break; + case OVERSTATE: + break; + } +} + diff --git a/MCUME_esp32/espvcs/main/address.h b/MCUME_esp32/espvcs/main/address.h new file mode 100644 index 0000000..1d694e4 --- /dev/null +++ b/MCUME_esp32/espvcs/main/address.h @@ -0,0 +1,110 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: address.h,v 1.4 1996/04/01 14:51:50 alex Exp $ +******************************************************************************/ + +#ifndef ADDRESS_H +#define ADDRESS_H + +/* Contains the addresses of the 2600 hardware */ +/* $Id: address.h,v 1.4 1996/04/01 14:51:50 alex Exp $ */ + +/* TIA Write Addresses (6 bit) */ + +#define VSYNC 0x00 +#define VBLANK 0x01 +#define WSYNC 0x02 +#define RSYNC 0x03 +#define NUSIZ0 0x04 +#define NUSIZ1 0x05 +#define COLUP0 0x06 +#define COLUP1 0x07 +#define COLUPF 0x08 +#define COLUBK 0x09 +#define CTRLPF 0x0A +#define REFP0 0x0B +#define REFP1 0x0C +#define PF0 0x0D +#define PF1 0x0E +#define PF2 0x0F +#define RESP0 0x10 +#define RESP1 0x11 +#define RESM0 0x12 +#define RESM1 0x13 +#define RESBL 0x14 +#define AUDC0 0x15 +#define AUDC1 0x16 +#define AUDF0 0x17 +#define AUDF1 0x18 +#define AUDV0 0x19 +#define AUDV1 0x1A +#define GRP0 0x1B +#define GRP1 0x1C +#define ENAM0 0x1D +#define ENAM1 0x1E +#define ENABL 0x1F +#define HMP0 0x20 +#define HMP1 0x21 +#define HMM0 0x22 +#define HMM1 0x23 +#define HMBL 0x24 +#define VDELP0 0x25 +#define VDELP1 0x26 +#define VDELBL 0x27 +#define RESMP0 0x28 +#define RESMP1 0x29 +#define HMOVE 0x2A +#define HMCLR 0x2B +#define CXCLR 0x2C + +/* TIA Read Addresses */ +#define CXM0P 0x0 +#define CXM1P 0x1 +#define CXP0FB 0x2 +#define CXP1FB 0x3 +#define CXM0FB 0x4 +#define CXM1FB 0x5 +#define CXBLPF 0x6 +#define CXPPMM 0x7 +#define INPT0 0x8 +#define INPT1 0x9 +#define INPT2 0xA +#define INPT3 0xB +#define INPT4 0xC +#define INPT5 0xD + +/* RIOT Addresses */ + +#define RAM 0x80 /* till 0xff */ +#define SWCHA 0x280 +#define SWACNT 0x281 +#define SWCHB 0x282 +#define SWBCNT 0x283 +#define INTIM 0x284 + +#define TIM1T 0x294 +#define TIM8T 0x295 +#define TIM64T 0x296 +#define T1024T 0x297 + +#define ROM 0xE000 /* To FFFF,0x1000-1FFF */ + +#endif + + + + + + + + diff --git a/MCUME_esp32/espvcs/main/bmpjoy.h b/MCUME_esp32/espvcs/main/bmpjoy.h new file mode 100644 index 0000000..def4d7c --- /dev/null +++ b/MCUME_esp32/espvcs/main/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_esp32/espvcs/main/bmpvbar.h b/MCUME_esp32/espvcs/main/bmpvbar.h new file mode 100644 index 0000000..22dd775 --- /dev/null +++ b/MCUME_esp32/espvcs/main/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_esp32/espvcs/main/btypes.h b/MCUME_esp32/espvcs/main/btypes.h new file mode 100644 index 0000000..6431958 --- /dev/null +++ b/MCUME_esp32/espvcs/main/btypes.h @@ -0,0 +1,47 @@ +#ifndef BASICTYPES_H +#define BASICTYPES_H + +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned long uint32; + +typedef signed char int8; +typedef signed short int16; +typedef signed long int32; + + +typedef unsigned char byte; +typedef unsigned short word; +typedef signed char offset; +typedef union +{ +#ifdef LSB_FIRST + struct { unsigned long l,h; } DW; +#else + struct { unsigned long h,l; } DW; +#endif +// unsigned long long LL; +} ullong; + +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h,a,b; } B; +#else + struct { byte b,a,h,l; } B; +#endif + unsigned long DW; +} dpair; + +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h; } B; +#else + struct { byte h,l; } B; +#endif + word W; +} pair; +//END Added from NES + +#endif diff --git a/MCUME_esp32/espvcs/main/c26def.h b/MCUME_esp32/espvcs/main/c26def.h new file mode 100644 index 0000000..5f479e9 --- /dev/null +++ b/MCUME_esp32/espvcs/main/c26def.h @@ -0,0 +1,101 @@ +#ifndef C26DEF_H +#define C26DEF_H + +/* + Common 2600 (.c26) format v1.0 specification + ------------------------------------- + Alex Hornby, ahornby@zetnet.co.uk + + + Introduction + ============ + + Common 2600 file format definitions. For discussion and suggestions for + improvement, e-mail ahornby@zetnet.co.uk. I would like to see a fully + comprehensive 2600 file format develop so please copy this structure + and use it in your emulators. + + The format has been developed due to the multitude of different banking + schemes for 2600 cartridges, along with the need to select an appropriate + control device for each game. Using the .c26 format you will be able to + load games without giving loads of command line switches. + + Philosophy + ========== + To avoid the format splitting into several competing ones, please do + not alter the format without discussing it first. I'm not trying to be + bossy, just to keep the common format truly common. + + Tags + ==== + The format is tagged so as to be extensible and allow both forward and + backward compatibility. It also means that information that is not + needed or known does not have to be stored. e.g. If the cartridge image + is not a saved game then I do not need the game state tags. + + The format is a system of tags each being a tag type and the length of + data in that section. If a tag is not recognised then it should + be ignored. Each tag is a zero terminated string followed by a 32bit + signed integer describing the length. If the tag is small the the length + integer can constitute the data item. + + Case is NOT important in tag names + + Cross Platform Notes + ==================== + Note that integers are stored in the Intel/DEC Alpha style. + All strings are zero terminated . +*/ + +/* + Defined TAGS + ============ + + + Audit tags: All files should include these tags at the start of the file. + + VERSION: Gives file format version as an integer. Currently 1 + WRITER: Name of program that wrote file. + + + Cartridge Information tags: useful for collectors. + + CARTNAME: Name of cartridge. + CARTMAN: Manufacturer of cartridge. + CARTAUTHOR: Name of programmer/programming team who wrote cartridge. + CARTSERIAL: Serial number of the cartridge. + + + Cartridge operation tags: necessary for the running of the game. + + TVTYPE: integer, 0=NTSC 1=PAL. + CONTROLLERS: Left controller BYTE then Right controller BYTE. + BANKING: Bank switching scheme. + DATA: Cartridge ROM data. + + + Game state tags: used for saved games. + + CPUREGS: CPU registers. + GAMEREGS: TIA and PIA registers. + PIARAM: The 128 bytes of RAM from the PIA. + + CARTRAM: Cartridge RAM, if supported by the BANKING type + + */ +enum TAGTYPE { VERSION=-1, WRITER=1, + CARTNAME=2, CARTMAN=3, CARTAUTHOR=4, CARTSERIAL=5, + TVTYPE=-2, CONTROLLERS=-3, BANKING=-4, DATA=6, + CPUREGS=7, GAMEREGS=8, PIARAM=9, CARTRAM=10 }; + +char *tag_desc[]={ "VERSION", "WRITER", + "CARTNAME", "CARTMAN", "CARTAUTHOR", "CARTSERIAL", + "TVTYPE", "CONTROLLERS", "BANKING", "DATA", + "CPUREGS", "GAMEREGS", "PIARAM", "CARTRAM"}; + + +/* Tag structure */ + +struct c26_tag { + int type; + int len; +}; + + +#endif diff --git a/MCUME_esp32/espvcs/main/col_mask.h b/MCUME_esp32/espvcs/main/col_mask.h new file mode 100644 index 0000000..d8d0558 --- /dev/null +++ b/MCUME_esp32/espvcs/main/col_mask.h @@ -0,0 +1,45 @@ +#ifndef COL_MASK_H +#define COL_MASK_H + +#define PL0_MASK 0x01 +#define PL1_MASK 0x02 +#define ML0_MASK 0x04 +#define ML1_MASK 0x08 +#define BL_MASK 0x10 +#define PF_MASK 0x20 +#define PF_MASK32 0x20202020 + +#define M0P0_MASK 0x01 +#define M0P1_MASK 0x02 + +#define M1P1_MASK 0x04 +#define M1P0_MASK 0x08 + +#define P0BL_MASK 0x10 +#define P0PF_MASK 0x20 + +#define P1BL_MASK 0x40 +#define P1PF_MASK 0x80 + +#define M0BL_MASK 0x100 +#define M0PF_MASK 0x200 + +#define M1BL_MASK 0x400 +#define M1PF_MASK 0x800 + +#define BLPF_MASK 0x1000 + +#define M0M1_MASK 0x2000 +#define P0P1_MASK 0x4000 + +#define CXM0P_MASK (M0P1_MASK | M0P0_MASK) +#define CXM1P_MASK (M1P0_MASK | M1P1_MASK) +#define CXP0FB_MASK (P0PF_MASK | P0BL_MASK) +#define CXP1FB_MASK (P1PF_MASK | P1BL_MASK) +#define CXM0FB_MASK (M0PF_MASK | M0BL_MASK) +#define CXM1FB_MASK (M1PF_MASK | M1BL_MASK) +#define CXBLPF_MASK BLPF_MASK +#define CXPPMM_MASK (P0P1_MASK | M0M1_MASK) + +#endif + diff --git a/MCUME_esp32/espvcs/main/collision.h b/MCUME_esp32/espvcs/main/collision.h new file mode 100644 index 0000000..b2d5466 --- /dev/null +++ b/MCUME_esp32/espvcs/main/collision.h @@ -0,0 +1,49 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: collision.h,v 1.5 1996/08/29 16:03:24 ahornby Exp $ +******************************************************************************/ + +/* + Defines for the hardware collision detection. + */ + +//#ifndef COLLISION_H +#define COLLISION_H + +#include "col_mask.h" + +/* The collsion vector */ +extern BYTE* colvect; + +/* The collision lookup table */ +extern unsigned short col_table[256]; + +/* The collision state */ +extern unsigned short col_state; + +extern void +init_collisions(void); + +extern __inline void +reset_collisions(void); + +extern int +set_collisions(BYTE b); + +//#endif + + + + + + diff --git a/MCUME_esp32/espvcs/main/colours.h b/MCUME_esp32/espvcs/main/colours.h new file mode 100644 index 0000000..c935b76 --- /dev/null +++ b/MCUME_esp32/espvcs/main/colours.h @@ -0,0 +1,102 @@ +static long colortable[256] = +{ + /* Grey */ + 0x0, 0x1c1c1c, 0x393939, 0x595959, + 0x797979, 0x929292, 0xababab, 0xbcbcbc, + 0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec, + 0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff, + + /* Gold */ + 0x391701, 0x5e2304, 0x833008, 0xa54716, + 0xc85f24, 0xe37820, 0xff911d, 0xffab1d, + 0xffc51d, 0xffce34, 0xffd84c, 0xffe651, + 0xfff456, 0xfff977, 0xffff98, 0xffff98, + + /* Orange */ + 0x451904, 0x721e11, 0x9f241e, 0xb33a20, + 0xc85122, 0xe36920, 0xff811e, 0xff8c25, + 0xff982c, 0xffae38, 0xffc545, 0xffc559, + 0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1, + + /* Red Orange */ + 0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119, + 0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161, + 0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e, + 0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce, + + /* Pink */ + 0x50568, 0x3b136d, 0x712272, 0x8b2a8c, + 0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd, + 0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd, + 0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff, + + /* Purple */ + 0x280479, 0x400984, 0x590f90, 0x70249d, + 0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed, + 0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff, + 0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff, + + /* Blue Purple */ + 0x35088a, 0x420aad, 0x500cd0, 0x6428d0, + 0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec, + 0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff, + 0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff, + + /* Blue */ + 0x51e81, 0x626a5, 0x82fca, 0x263dd4, + 0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff, + 0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff, + 0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff, + + /* Blue */ + 0xc048b, 0x2218a0, 0x382db5, 0x483ec7, + 0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff, + 0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff, + 0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff, + + /* Light Blue */ + 0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac, + 0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec, + 0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff, + 0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff, + + /* Turquoise */ + 0x2f4302, 0x395202, 0x446103, 0x417a12, + 0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55, + 0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d, + 0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6, + + /* Green blue */ + 0xa4108, 0xd540a, 0x10680d, 0x137d0f, + 0x169212, 0x19a514, 0x1cb917, 0x1ec919, + 0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d, + 0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a, + + /* Green */ + 0x4410b, 0x5530e, 0x66611, 0x77714, + 0x88817, 0x99b1a, 0xbaf1d, 0x48c41f, + 0x86d922, 0x8fe924, 0x99f927, 0xa8fc41, + 0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81, + + /* Yellow Green */ + 0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e, + 0x4f7420, 0x598324, 0x649228, 0x82a12e, + 0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945, + 0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53, + + /* Orange Green */ + 0x263001, 0x243803, 0x234005, 0x51541b, + 0x806931, 0x978135, 0xaf993a, 0xc2a73e, + 0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836, + 0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d, + + /* Light Orange */ + 0x401a02, 0x581f05, 0x702408, 0x8d3a13, + 0xab511f, 0xb56427, 0xbf7730, 0xd0853a, + 0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c, + 0xffc160, 0xffc671, 0xffcb83, 0xffcb83, +}; + + + + diff --git a/MCUME_esp32/espvcs/main/component.mk b/MCUME_esp32/espvcs/main/component.mk new file mode 100644 index 0000000..b917b90 --- /dev/null +++ b/MCUME_esp32/espvcs/main/component.mk @@ -0,0 +1,11 @@ +# +# Main component makefile. +# +# This Makefile can be left empty. By default, it will take the sources in the +# src/ directory, compile them and link them into lib(subdirectory_name).a +# in the build directory. This behaviour is entirely configurable, +# please read the ESP-IDF documents if you need to do this. +# + +CPPFLAGS += -Wno-error=implicit-int -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=implicit-function-declaration -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-error=char-subscripts -Wno-error=attributes +#-Werror=maybe-uninitialized \ No newline at end of file diff --git a/MCUME_esp32/espvcs/main/cpu.h b/MCUME_esp32/espvcs/main/cpu.h new file mode 100644 index 0000000..95a4b70 --- /dev/null +++ b/MCUME_esp32/espvcs/main/cpu.h @@ -0,0 +1,182 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: cpu.h,v 1.6 1997/11/22 14:29:54 ahornby Exp $ +******************************************************************************/ +/* + * + * This file was part of x64. + * + * This file contains useful stuff when you are creating + * virtual machine like MCS6510 based microcomputer. + * + * Included are: + * o registers + * o flags in PSW + * o addressing modes + * + * Written by + * Vesa-Matti Puro (vmp@lut.fi) + * Jarkko Sonninen (sonninen@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + * + */ + +#ifndef X2600_CPU_H +#define X2600_CPU_H + +#include "types.h" + +/* 6507 Registers. */ +#define AC accumulator +#define XR x_register +#define YR y_register +#define SP stack_pointer +#define pc6507 program_counter +#define PCH ((pc6507>>8)&0xff) +#define PCL (pc6507&0xff) + +#define ZF zero_flag +#define SF sign_flag +#define OF overflow_flag +#define BF break_flag +#define DF decimal_flag +#define IF interrupt_flag +#define CF carry_flag + + +/* Masks which indicate location of status flags in PSW. */ +#define S_SIGN 0x80 +#define S_OVERFLOW 0x40 +#define S_NOTUSED 0x20 +#define S_BREAK 0x10 +#define S_DECIMAL 0x08 +#define S_INTERRUPT 0x04 +#define S_ZERO 0x02 +#define S_CARRY 0x01 + + +/* ADDRESSING MODES */ + +#define IMPLIED 0 +#define ACCUMULATOR 1 +#define IMMEDIATE 2 + +#define ZERO_PAGE 3 +#define ZERO_PAGE_X 4 +#define ZERO_PAGE_Y 5 + +#define ABSOLUTE 6 +#define ABSOLUTE_X 7 +#define ABSOLUTE_Y 8 + +#define ABS_INDIRECT 9 +#define INDIRECT_X 10 +#define INDIRECT_Y 11 + +#define RELATIVE 12 + +#define ASS_CODE 13 + + +/* + * Declaration for lookup-table which is used to translate MOS6502 + * machine instructions. Machine code is used as index to array called + * lookup. Pointer to function is then fetched from array and function + * is called. + */ + +extern struct lookup_tag { + char *mnemonic; /* Selfdocumenting? */ + short addr_mode; + unsigned char source; + unsigned char destination; + unsigned char cycles; + unsigned char pbc_fix; /* Cycle for Page Boundary Crossing */ +} lookup[]; + + +/* Addressing mode (addr_mode) is used when instruction is diassembled + * or assembled by diassembler or assembler. This is used i.e. + * in function char *sprint_opcode() in the file misc.c. + * + * MOS6502 addressing modes are #defined in the file "vmachine.h". + * + * Mnemonic is character string telling the name of the instruction. + */ + +#define M_NONE 0 +#define M_AC 1 +#define M_XR 2 +#define M_YR 3 +#define M_SP 4 +#define M_SR 5 +#define M_PC 6 +#define M_IMM 7 +#define M_ZERO 8 +#define M_ZERX 9 +#define M_ZERY 10 +#define M_ABS 11 +#define M_ABSX 12 +#define M_ABSY 13 +#define M_AIND 14 +#define M_INDX 15 +#define M_INDY 16 +#define M_REL 17 +#define M_FC 18 +#define M_FD 19 +#define M_FI 20 +#define M_FV 21 +#define M_ADDR 22 +#define M_ 23 + +#ifndef NO_UNDOC_CMDS +#define M_ACIM 24 /* Source: AC & IMMED (bus collision) */ +#define M_ANXR 25 /* Source: AC & XR (bus collision) */ +#define M_AXIM 26 /* Source: (AC | #EE) & XR & IMMED (bus collision) */ +#define M_ACNC 27 /* Dest: M_AC and Carry = Negative */ +#define M_ACXR 28 /* Dest: M_AC, M_XR */ + +#define M_SABY 29 /* Source: (ABS_Y & SP) (bus collision) */ +#define M_ACXS 30 /* Dest: M_AC, M_XR, M_SP */ +#define M_STH0 31 /* Dest: Store (src & Addr_Hi+1) to (Addr +0x100) */ +#define M_STH1 32 +#define M_STH2 33 +#define M_STH3 34 + +#else +#define M_ACIM M_NONE +#define M_ANXR M_NONE +#define M_AXIM M_NONE +#define M_ACNC M_NONE +#define M_ACXR M_NONE + +#define M_SABY M_NONE +#define M_ACXS M_NONE +#define M_STH0 M_NONE +#define M_STH1 M_NONE +#define M_STH2 M_NONE +#define M_STH3 M_NONE +#endif + + + +#endif /* X2600_CPU_H */ + + + + + + + + diff --git a/MCUME_esp32/espvcs/main/display.h b/MCUME_esp32/espvcs/main/display.h new file mode 100644 index 0000000..c4c15c6 --- /dev/null +++ b/MCUME_esp32/espvcs/main/display.h @@ -0,0 +1,34 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: display.h,v 1.13 1997/11/22 14:29:54 ahornby Exp $ +******************************************************************************/ + +/* + Defines for the X11 display code. + */ + +#ifndef DISPLAY_H +#define DISPLAY_H + +int tv_on(void); +void tv_display(void); + +extern int vwidth,vheight,theight; +extern int tv_counter; +extern unsigned char * VBuf; + +#endif + + + + diff --git a/MCUME_esp32/espvcs/main/emuapi.cpp b/MCUME_esp32/espvcs/main/emuapi.cpp new file mode 100644 index 0000000..119c71a --- /dev/null +++ b/MCUME_esp32/espvcs/main/emuapi.cpp @@ -0,0 +1,1084 @@ +#define KEYMAP_PRESENT 1 + +#include +#include +#include +#include + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "ili9341_t3dma.h" +//#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" + +#include "esp_event.h" +#include "esp_vfs_fat.h" +#include "driver/sdspi_host.h" +#include +#include +#include + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#include "Wire.h" +#else +#include +#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ +#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ +#define ACK_VAL 0x0 /*!< I2C ack value */ +#define NACK_VAL 0x1 /*!< I2C nack value */ +#endif + +#define I2C_FREQ_HZ 400000 /*!< I2C master clock frequency */ +static bool i2cKeyboardPresent = false; +#endif + + +extern ILI9341_t3DMA tft; + +static char romspath[64]; +static int calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static sdmmc_card_t* card; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/sdcard/cal.cfg" + +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_FGCOLOR RGBVAL16(0xff,0xff,0xff) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 + + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + +static int readNbFiles(void) { + int totalFiles = 0; + + DIR* dir = opendir(romspath); + while (true) { + struct dirent* de = readdir(dir); + if (!de) { + // no more files + break; + } + if (de->d_type == DT_REG) { + totalFiles++; + } + else if (de->d_type == DT_DIR) { + if ( (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) { + totalFiles++; + } + } + } + closedir(dir); + printf("Directory read: %d files",totalFiles); + return totalFiles; +} + +static char captureTouchZone(const unsigned short * areas, const unsigned short * actions, int *rx, int *ry, int *rw, int * rh) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + bool hDir=true; + + if (tft.isTouching()) + { + if (prev_zt == 0) { + prev_zt =1; + tft.readCal(&xt,&yt,&zt); + if (zt<1000) { + prev_zt=0; + return ACTION_NONE; + } + int i=0; + int k=0; + int y2=0, y1=0; + int x2=0, x1=0; + int x=KEYBOARD_X,y=KEYBOARD_Y; + int w=TAREA_W_DEF,h=TAREA_H_DEF; + uint8_t s; + while ( (s=areas[i++]) != TAREA_END ) { + if (s == TAREA_XY) { + x = areas[i++]; + y = areas[i++]; + x2 = x; + y2 = y; + } + else if (s == TAREA_WH) { + w = areas[i++]; + h = areas[i++]; + } + else if (s == TAREA_NEW_ROW) { + hDir = true; + y1 = y2; + y2 = y1 + h; + x2 = x; + } + else if (s == TAREA_NEW_COL) { + hDir = false; + x1 = x2; + x2 = x1 + w; + y2 = y; + } + else { + if (hDir) { + x1 = x2; + x2 = x1+s; + } else { + y1 = y2; + y2 = y1+s; + } + if ( (yt >= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + +static void readCallibration(void) +{ + FILE * file = fopen(CALIBRATION_FILE, "rb"); + if (file) { + fscanf(file,"%d %d %d %d\n",&calMinX,&calMinY,&calMaxX,&calMaxY); + fclose(file); + printf("Current callibration params: %d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + } + else { + printf("Callibration read error\n"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + FILE * file = fopen(CALIBRATION_FILE, "wb"); + if (file) { + fprintf(file,"%d %d %d %d\n",calMinX,calMinY,calMaxX,calMaxY); + fclose(file); + } + else { + printf("Callibration write error\n"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(ILI9341_TFTREALWIDTH-8,ILI9341_TFTREALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,ILI9341_TFTREALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + if ( (xt > (ILI9341_TFTREALWIDTH/4)) && (xt < (ILI9341_TFTREALWIDTH*3)/4) + && (yt > (ILI9341_TFTREALHEIGHT/4)) && (yt < (ILI9341_TFTREALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + vTaskDelay(100 / portTICK_PERIOD_MS); + } + } + else { + prev_zt = 0; + } + return 1; +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + struct stat st; + bool newPathIsDir = false; + if(stat(newpath,&st) == 0) + if((st.st_mode & S_IFDIR) != 0) + newPathIsDir = true; + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + if ( ( (bClick & MASK_JOY2_BTN) || (bClick & MASK_KEY_USER1) ) && (newPathIsDir) ) { + menuRedraw=true; + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if ( (bClick & MASK_JOY2_BTN) ) { + menuRedraw=true; + action = ACTION_RUNTFT; + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + + if (menuRedraw && nbFiles) { + + int fileIndex = 0; + DIR* dir = opendir(romspath); + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + int i=0; + while (id_type == DT_REG) || ((de->d_type == DT_DIR) && (strcmp(de->d_name,".")) && (strcmp(de->d_name,"..")) ) ) { + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,de->d_name); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, de->d_name, MENU_FILE_FGCOLOR, MENU_FILE_BGCOLOR, true); + } + } + i++; + } + fileIndex++; + } + } + closedir(dir); + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + + menuRedraw=false; + } + + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + +#ifdef HAS_I2CKBD +#ifdef USE_WIRE +#else +static esp_err_t i2c_master_read_slave_reg(i2c_port_t i2c_num, uint8_t i2c_addr, uint8_t* data_rd, size_t size) +{ + if (size == 0) { + return ESP_OK; + } + i2c_cmd_handle_t cmd = i2c_cmd_link_create(); + i2c_master_start(cmd); + i2c_master_write_byte(cmd, ( i2c_addr << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN); + if (size > 1) { + i2c_master_read(cmd, data_rd, size - 1, (i2c_ack_type_t)ACK_VAL); + } + i2c_master_read_byte(cmd, data_rd + size - 1, (i2c_ack_type_t)NACK_VAL); + i2c_master_stop(cmd); + esp_err_t ret = i2c_master_cmd_begin(i2c_num, cmd, 1000 / portTICK_RATE_MS); + i2c_cmd_link_delete(cmd); + return ret; +} +#endif +#endif + + +void emu_init(void) +{ + + esp_err_t ret = 0; + + printf("mounting sd...\n"); + + sdmmc_host_t host = SDSPI_HOST_DEFAULT(); + host.max_freq_khz = 10000; + //host.slot = HSPI_HOST; + + sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); + slot_config.gpio_miso = SPIN_NUM_MISO; + slot_config.gpio_mosi = SPIN_NUM_MOSI; + slot_config.gpio_sck = SPIN_NUM_CLK; + slot_config.gpio_cs = SPIN_NUM_CS; + slot_config.dma_channel = 2; + + + esp_vfs_fat_sdmmc_mount_config_t mount_config = { + .format_if_mount_failed = false, + .max_files = 5, + .allocation_unit_size = 16 * 1024 + }; + + + while((ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card)) != ESP_OK) { + printf("retrying\n"); + vTaskDelay(500 / portTICK_PERIOD_MS); + } + + strcpy(romspath,"/sdcard/"); + strcat(romspath,ROMSDIR); + printf("dir is : %s\n",romspath); + + nbFiles = readNbFiles(); + printf("SD initialized, files found: %d\n",nbFiles); + + + tft.touchBegin(); + //uint16_t xt=0; + //uint16_t yt=0; + //uint16_t zt=0; + //tft.readRo(&xt,&yt,&zt); + + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } else { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + uint8_t msg[7]={0,0,0,0,0,0,0}; + +#ifdef USE_WIRE + Wire.begin(I2C_SDA_IO, I2C_SCL_IO); + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + int i2c_master_port = I2C_NUM_1; + i2c_config_t conf; + conf.mode = I2C_MODE_MASTER; + conf.sda_io_num = I2C_SDA_IO; + conf.sda_pullup_en = GPIO_PULLUP_ENABLE; + conf.scl_io_num = I2C_SCL_IO; + conf.scl_pullup_en = GPIO_PULLUP_ENABLE; + conf.master.clk_speed = I2C_FREQ_HZ; + i2c_param_config((i2c_port_t)i2c_master_port, &conf); + if (i2c_driver_install((i2c_port_t)i2c_master_port, conf.mode,0, 0, 0) != ESP_OK) + printf("I2C Failed initialized\n"); + + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); +#endif + + + + + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + printf("i2C keyboard found\n"); + } +#endif +} + + +void emu_printf(char * text) +{ + printf("%s\n",text); +} + + +void emu_printi(int val) +{ + printf("%d\n",val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + printf("failled to allocate %d\n",size); + } + else { + printf("could allocate %d\n",size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + +static FILE * lastfileOpened; + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + //printf("FileOpen...%s\n",filepath); + + lastfileOpened = fopen(filepath, "rb"); + if (lastfileOpened) { + retval = 1; + } + else { + //printf("FileOpen failed\n"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + int retval = fread(buf, 1, size, lastfileOpened); + if (retval != size) { + printf("FileRead failed\n"); + } + return (retval); +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = fread(&c, 1, 1, lastfileOpened); + if (retval != 1) { + printf("emu_FileGetc failed\n"); + } + return c; +} + + +void emu_FileClose(void) +{ + fclose(lastfileOpened); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("FileSize...%s\n",filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, 0L, SEEK_END); + filesize = ftell(file); + //fseek(file, 0L, SEEK_SET); + printf("filesize is...%d\n",filesize); + fclose(file); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + fseek(lastfileOpened, seek, SEEK_SET); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFile...%s\n",filepath); + + filesize = emu_FileSize(filename); + FILE * file = fopen(filepath, "rb"); + if (file) { + if (size >= filesize) + { + if (fread(buf, 1, filesize, file) != filesize) { + printf("File read failed\n"); + } + } + fclose(file); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + printf("LoadFileSeek...%d bytes at %d from %s\n",size,seek,filepath); + + FILE * file = fopen(filepath, "rb"); + if (file) { + fseek(file, seek, SEEK_SET); + if (fread(buf, size, 1, file) != size) { + printf("File read failed\n"); + } + fclose(file); + } + + return(filesize); +} + +static int keypadval=0; +static bool joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val; //adc1_get_raw((adc1_channel_t)PIN_JOY2_A1X); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A1X, ADC_WIDTH_BIT_12,&val); + //printf("refX:%d X:%d\n",xRef,val); + val = val-xRef; + //val = ((val*140)/100); + if ( (val > -xRef/4) && (val < xRef/4) ) val = 0; +#if INVX + val = xRef-val; +#else + val = val+xRef; +#endif + + return (val*(max-min))/(xRef*2); +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val; //= adc1_get_raw((adc1_channel_t)PIN_JOY2_A2Y); + adc2_get_raw((adc2_channel_t)PIN_JOY2_A2Y, ADC_WIDTH_BIT_12,&val); + //printf("refY:%d Y:%d\n",yRef,val); + val = val-yRef; + //val = ((val*120)/100); + if ( (val > -yRef/4) && (val < yRef/4) ) val = 0; +#if INVY + val = yRef-val; +#else + val = val+yRef; +#endif + return (val*(max-min))/(yRef*2); +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + + joysval |= ((gpio_get_level((gpio_num_t)PIN_JOY2_BTN) == 1) ? 0 : MASK_JOY2_BTN); + + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + + uint16_t j2 = 0; + + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + + if (gpio_get_level((gpio_num_t)PIN_KEY_USER1) == 0 ) retval |= MASK_KEY_USER1; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER2) == 0 ) retval |= MASK_KEY_USER2; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER3) == 0 ) retval |= MASK_KEY_USER3; + if (gpio_get_level((gpio_num_t)PIN_KEY_USER4) == 0 ) retval |= MASK_KEY_USER4; + + //printf("%d\n",retval); + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + uint8_t msg[7]; +#ifdef USE_WIRE + Wire.requestFrom(8, 7, I2C_FREQ_HZ); // request 5 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + uint8_t b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } +#else + if (i2c_master_read_slave_reg( I2C_NUM_1, 8, &msg[0], 7 ) != ESP_OK) + printf("I2C Failed \n"); + int hitindex=-1; + int i = 0; + while (i<7) { + if (msg[i] != 0xff) hitindex=i; + i++; + } +#endif + //printf("I2C 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", + // msg[0],msg[1],msg[2],msg[3],msg[4],msg[5],msg[6]); + if ((hitindex >=0 ) && (hitindex <=6 )) { + unsigned short match = ((~msg[hitindex])&0x00FF) | (hitindex<<8); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + keypadval = c; + keyPressCount = 10; + vTaskDelay(50 / portTICK_PERIOD_MS); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + //logo = ; + //keysw = ; + } + else { + //logo = ; + //keysw = ; + } + return 0; +} + + + +static unsigned short palette16[PALETTE_SIZE]; +static int fskip=0; + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#define TITLE " Atari2600 Emulator " +#define ROMSDIR "2600" + +extern void vcs_Init(void); +extern void vcs_Start(char * filename); +extern void vcs_Step(void); +#define emu_Init(ROM) {vcs_Init();vcs_Start(ROM);} +#define emu_Step() {vcs_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 256 +#define SINGLELINE_RENDERING 1 +#define TFT_VBUFFER_YCROP 0 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 4 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 8 +#define KEYBOARD_Y 50 +#define KEYBOARD_KEY_H 38 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,40,40,140,40,40, + TAREA_END}; + +const unsigned short keys[] = { + 1,2,ACTION_NONE,3,4 + }; + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern int emu_setKeymap(int index); + +extern void emu_sndInit(); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); + +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +#endif + + + + diff --git a/MCUME_esp32/espvcs/main/exmacro.h b/MCUME_esp32/espvcs/main/exmacro.h new file mode 100644 index 0000000..d67b51a --- /dev/null +++ b/MCUME_esp32/espvcs/main/exmacro.h @@ -0,0 +1,30 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: exmacro.h,v 1.5 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + +/* + Defines __inline functions that would otherwise be macros. + */ + +//#ifndef EXMACRO_H +//#define EXMACRO_H + +extern __inline ADDRESS load_abs_addr(void); +extern __inline int pagetest( ADDRESS a, BYTE b); +extern __inline int brtest( BYTE a); +extern __inline int toBCD( int a); +extern __inline int fromBCD( int a); + +//#endif + diff --git a/MCUME_esp32/espvcs/main/extern.h b/MCUME_esp32/espvcs/main/extern.h new file mode 100644 index 0000000..0aa5143 --- /dev/null +++ b/MCUME_esp32/espvcs/main/extern.h @@ -0,0 +1,62 @@ +/* + $Id: extern.h,v 1.2 1995/12/12 16:21:39 alex Exp alex $ + */ + +#ifndef VCSEXTERN_H +#define VCSEXTERN_H + + +#include "types.h" /* for BYTE, ADDRESS, etc. types and structures */ +/* #include "proto.h" */ + +extern char *progname; +extern int clength[]; + +extern BYTE accumulator; +extern BYTE x_register; +extern BYTE y_register; +extern BYTE stack_pointer; +extern BYTE status_register; +extern ADDRESS program_counter; +extern CLOCK clk; + +extern int zero_flag; +extern int sign_flag; +extern int overflow_flag; +extern int break_flag; +extern int decimal_flag; +extern int interrupt_flag; +extern int carry_flag; + +/* Debugging */ +extern int hexflg; +extern int verflg; +extern int traceflg; +extern int debugflg; +extern int runflg; + +extern int autodump; +extern int reuflg; + + +/* Memory */ + +extern int module; + +/* Keyboard & joystick */ + +#ifdef JOYSTICK +extern void joystick(void) ; +extern void joyini(void) ; +extern void joyclose(void); + +extern int joyfd ; +#endif + +#endif + + + + + + diff --git a/MCUME_esp32/espvcs/main/font8x8.h b/MCUME_esp32/espvcs/main/font8x8.h new file mode 100644 index 0000000..bab272e --- /dev/null +++ b/MCUME_esp32/espvcs/main/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_esp32/espvcs/main/go.cpp b/MCUME_esp32/espvcs/main/go.cpp new file mode 100644 index 0000000..b676f22 --- /dev/null +++ b/MCUME_esp32/espvcs/main/go.cpp @@ -0,0 +1,101 @@ +#include "go.h" + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "esp_event.h" + +#include "keyboard_osd.h" +#include "ili9341_t3dma.h" +#ifdef HAS_SND +#include "AudioPlaySystem.h" +#endif + +#include "Vcsemu.h" + + +ILI9341_t3DMA tft = ILI9341_t3DMA(PIN_NUM_CS, PIN_NUM_DC, -1, PIN_NUM_MOSI, PIN_NUM_CLK, PIN_NUM_MISO, TPIN_NUM_CS, TPIN_NUM_IRQ); +#ifdef HAS_SND +AudioPlaySystem audio; +#endif + + +static void spi_task(void *args) +{ + while(true) { + tft.refresh(); + } +} + +static void input_task(void *args) +{ + while(true) { + if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) + || (emu_ReadKeys() & MASK_KEY_USER4 ) ) + { + printf("rebooting\n"); + esp_restart(); + } + + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_KEY_USER2) { + printf("%d\n",emu_SwapJoysticks(1)); + emu_SwapJoysticks(0); + } + else { + emu_Input(bClick); + } +#ifdef HAS_SND + audio.step(); +#endif + vTaskDelay(20 / portTICK_PERIOD_MS); + } +} + +static void main_step() { + if (menuActive()) { + uint16_t bClick = emu_DebounceLocalKeys(); + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { +#ifdef HAS_SND + audio.begin(); + audio.start(); +#endif + toggleMenu(false); + tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + xTaskCreatePinnedToCore(input_task, "inputthread", 4096, NULL, 2, NULL, 0); + emu_Init(filename); + } + //vTaskDelay(20 / portTICK_PERIOD_MS); + } + else { + emu_Step(); + } +} + + +void setup(void) +{ + printf("Starting emulator\n"); + + tft.begin(); + tft.flipscreen(true); + tft.start(); + tft.refresh(); + + emu_init(); + + xTaskCreatePinnedToCore(spi_task, "spithread", 4096, NULL, 1, NULL, 0); + //vTaskPrioritySet(NULL, tskIDLE_PRIORITY+1); +} + +void loop(void) +{ + unsigned long t = esp_timer_get_time(); + main_step(); + //printf("%d\n",(int)((esp_timer_get_time()-t)/1000)); +} + diff --git a/MCUME_esp32/espvcs/main/go.h b/MCUME_esp32/espvcs/main/go.h new file mode 100644 index 0000000..12c65e0 --- /dev/null +++ b/MCUME_esp32/espvcs/main/go.h @@ -0,0 +1,8 @@ +#ifdef __cplusplus +extern "C" { +#endif +void setup(void); +void loop(void); +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/MCUME_esp32/espvcs/main/ili9341_t3dma.cpp b/MCUME_esp32/espvcs/main/ili9341_t3dma.cpp new file mode 100644 index 0000000..b101da1 --- /dev/null +++ b/MCUME_esp32/espvcs/main/ili9341_t3dma.cpp @@ -0,0 +1,666 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "driver/spi_master.h" +#include "soc/gpio_struct.h" +#include "driver/gpio.h" + +#include + +#include "ili9341_t3dma.h" +#include "font8x8.h" + + + +static spi_device_handle_t lcdspi; +static spi_transaction_t trans[MAX_SPI_TRANS]; + +static uint16_t *blocks[NR_OF_BLOCK]; +static uint8_t _rst, _cs, _dc; +static uint8_t _miso, _mosi, _clk; +static uint8_t _touch_irq, _touch_cs; + +//DRAM_ATTR static uint16_t block0[320*LINES_PER_BLOCK]; +//DRAM_ATTR static uint16_t block1[320*LINES_PER_BLOCK]; + +static const lcd_init_cmd_t ili_init_cmds[]={ + {0xEF, {0x03, 0x80, 0x02}, 3}, + {0xCF, {0x00, 0XC1, 0X30}, 3}, + {0xED, {0x64, 0x03, 0X12, 0X81}, 4}, + {0xE8, {0x85, 0x00, 0x78}, 3}, + {0xCB, {0x39, 0x2C, 0x00, 0x34, 0x02}, 5}, + {0xF7, {0x20}, 1}, + {0xEA, {0x00, 0x00}, 2}, + {ILI9341_PWCTR1, {0x23}, 1}, // Power control + {ILI9341_PWCTR2, {0x10}, 1}, // Power control + {ILI9341_VMCTR1, {0x3e, 0x28}, 2}, // VCM control + {ILI9341_VMCTR2, {0x86}, 1}, // VCM control2 + {ILI9341_MADCTL, {0x48}, 1}, // Memory Access Control + {ILI9341_PIXFMT, {0x55}, 1}, + {ILI9341_FRMCTR1, {0x00, 0x18}, 2}, + {ILI9341_DFUNCTR, {0x08, 0x82, 0x27}, 3}, // Display Function Control + {0xF2, {0x00}, 1}, // Gamma Function Disable + {ILI9341_GAMMASET, {0x01}, 1}, // Gamma curve selected + {ILI9341_GMCTRP1, {0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00}, 15}, // Set Gamma + {ILI9341_GMCTRN1, {0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F}, 15}, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + {0xb1, {0x00, 0x10}, 2}, // FrameRate Control 119Hz + {ILI9341_MADCTL, {MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR}, 1}, + + /* Sleep out */ + {ILI9341_SLPOUT, {0}, 0x80}, + /* Display on */ + {ILI9341_DISPON, {0}, 0x80}, + + + // Area width, hight + {ILI9341_CASET, {0, 0, (ILI9341_TFTREALWIDTH)>>8, (ILI9341_TFTREALWIDTH)&0xff}, 4}, + {ILI9341_PASET, {0, 0, (ILI9341_TFTREALHEIGHT)>>8, (ILI9341_TFTREALHEIGHT)&0xff}, 4}, + + {0, {0}, 0xff}, +}; + +static void lcd_cmd(spi_device_handle_t spi, const uint8_t cmd) +{ + esp_err_t ret; + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + t.user=(void*)0; //D/C needs to be set to 0 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + + +static void lcd_data(spi_device_handle_t spi, const uint8_t *data, int len) +{ + esp_err_t ret; + spi_transaction_t t; + if (len==0) return; //no need to send anything + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=len*8; //Len is in bytes, transaction length is in bits. + t.tx_buffer=data; //Data + t.user=(void*)1; //D/C needs to be set to 1 + t.flags=0; + ret=spi_device_polling_transmit(spi, &t); //Transmit! + assert(ret==ESP_OK); //Should have had no issues. +} + +//This function is called (in irq context!) just before a transmission starts. It will +//set the D/C line to the value indicated in the user field. +static void lcd_spi_pre_transfer_callback(spi_transaction_t *t) +{ + int dc=(int)t->user; + gpio_set_level((gpio_num_t)_dc, dc); +} + + +//Initialize the display +static void lcd_init(spi_device_handle_t spi) +{ + //Initialize non-SPI GPIOs + gpio_set_direction((gpio_num_t)_dc, GPIO_MODE_OUTPUT); + + printf("LCD ILI9341 initialization.\n"); + //Send all the commands + + + //memcpy(ili_init_cmds, ili_init_cmdos, sizeof(ili_init_cmdos)); + int cmd=0; + while (ili_init_cmds[cmd].databytes!=0xff) { + lcd_cmd(spi, ili_init_cmds[cmd].cmd); + lcd_data(spi, ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes&0x1F); + if (ili_init_cmds[cmd].databytes&0x80) { + vTaskDelay(100 / portTICK_RATE_MS); + } + cmd++; + } + + + + //Allocate memory block buffers and DMA transactions + printf("Allocate video mem and DMA transactions\n"); + + int i=0; + trans[i].tx_data[0]=ILI9341_RAMWR; + trans[i].length=8; + trans[i].user=(void*)0; + trans[i++].flags=SPI_TRANS_USE_TXDATA; + + //blocks[0]= &block0[0]; + //blocks[1]= &block1[0]; + + int remaininglines=ILI9341_TFTREALHEIGHT; + for (int j=0; j 1)*/ blocks[j]= (uint16_t*)heap_caps_malloc(ILI9341_TFTREALWIDTH*lines_per_block*sizeof(uint16_t), MALLOC_CAP_DMA); + assert(blocks[j]!=NULL); + + trans[i].tx_buffer=blocks[j]; + trans[i].length=ILI9341_TFTREALWIDTH*2*8*lines_per_block; + trans[i].user=(void*)1; + trans[i++].flags=0; //undo SPI_TRANS_USE_TXDATA flag + + uint16_t color; + switch (j) { + case 0: + color=0xf000; + break; + case 1: + color=0x0f00; + break; + case 2: + color=0x00f0; + break; + case 3: + default: + color=0x000f; + break; + } + uint16_t * fb = blocks[j]; + for (int y=0;y>6]; + return(&block[(j&0x3F)*ILI9341_TFTREALWIDTH]); +} + + +void ILI9341_t3DMA::fillScreen(uint16_t color) { + int i,j; + color=SPI_SWAP_DATA_TX(color,16); + for (j=0; j>6]; + uint16_t * dst=&block[(j&0x3F)*ILI9341_TFTREALWIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH+(ILI9341_TFTREALWIDTH-width)/2]; + src=buffer; + for (i=0; i height) + y += (ILI9341_TFTHEIGHT - height)/2; + uint8_t * src=buf; + uint16_t * block=blocks[y>>6]; + uint16_t * dst=&block[(y&0x3F)*ILI9341_TFTREALWIDTH]; + if (ILI9341_TFTWIDTH > width) + dst += (ILI9341_TFTWIDTH - width)/2; + for (int i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + for (i=0; i(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*ILI9341_TFTREALWIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + + + +// TOUCH +#define _BV(bit) (1 << (bit)) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + + +static spi_device_handle_t touchspi; + +//void ILI9341_t3DMA::touchBegin(uint8_t mosi, uint8_t miso, uint8_t clk, uint8_t cs) { +void ILI9341_t3DMA::touchBegin() { + esp_err_t ret; + + gpio_set_direction((gpio_num_t)_touch_irq, GPIO_MODE_INPUT); + gpio_set_pull_mode((gpio_num_t)_touch_irq, GPIO_PULLUP_ONLY); + + spi_device_interface_config_t devcfg; + memset(&devcfg, 0, sizeof(devcfg)); + devcfg.clock_speed_hz=2500000; + devcfg.mode=0; + devcfg.spics_io_num=_touch_cs; + devcfg.queue_size=2; + devcfg.flags = SPI_DEVICE_HALFDUPLEX ; + + /* + spi_bus_config_t buscfg; + memset(&buscfg, 0, sizeof(buscfg)); + buscfg.miso_io_num=miso; + buscfg.mosi_io_num=mosi; + buscfg.sclk_io_num=clk; + buscfg.quadwp_io_num=-1; + buscfg.quadhd_io_num=-1; + buscfg.max_transfer_sz=48; + + ret=spi_bus_initialize(HSPI_HOST, &buscfg, 2); + ESP_ERROR_CHECK(ret); + */ + + ret=spi_bus_add_device(HSPI_HOST, &devcfg, &touchspi); + ESP_ERROR_CHECK(ret); +} + + +uint16_t touch_get_data(spi_device_handle_t spi, const uint8_t cmd) +{ + spi_transaction_t t; + memset(&t, 0, sizeof(t)); //Zero out the transaction + t.length=8; //Command is 8 bits + t.tx_buffer=&cmd; //The data is the cmd itself + esp_err_t ret=spi_device_polling_transmit(spi, &t); //Transmit! + if (ret==ESP_OK) { + memset(&t, 0, sizeof(t)); + t.rxlength=8*2; + t.flags = SPI_TRANS_USE_RXDATA; + ret = spi_device_polling_transmit(spi, &t); + if (ret==ESP_OK) { + printf("touch data failed\n"); + return 0; + } + } + else { + printf("touch cmd failed\n"); + } + return *(uint16_t*)t.rx_data; +} + + + +bool ILI9341_t3DMA::isTouching() +{ + return ((gpio_get_level((gpio_num_t)_touch_irq) == 0 ? true : false)); +} + +void ILI9341_t3DMA::readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + + for(; i < 15; i++) { + y += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3))); + x += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3))); + z1 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3))); + z2 += touch_get_data(touchspi, (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3))); + } + printf("%d %d %d %d \n",x/15,y/15,z1/15,z2/15); +/* + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + */ +} + +void ILI9341_t3DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + +} + +void ILI9341_t3DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ){ + +} + +void ILI9341_t3DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax){ + +} + + diff --git a/MCUME_esp32/espvcs/main/ili9341_t3dma.h b/MCUME_esp32/espvcs/main/ili9341_t3dma.h new file mode 100644 index 0000000..4f15327 --- /dev/null +++ b/MCUME_esp32/espvcs/main/ili9341_t3dma.h @@ -0,0 +1,153 @@ +/* + ILI9341 SPI driver inspired from the Teensy version of Frank Bösing, 2017 +*/ + +#ifndef _ILI9341_T3DMAH_ +#define _ILI9341_T3DMAH_ + + +#define FLIP_SCREEN 1 + + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) + + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 +#define ILI9341_TFTREALWIDTH 320 +#define ILI9341_TFTREALHEIGHT 240 + + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +#ifdef __cplusplus + + +#define MAX_SPI_TRANS 7 +#define NR_OF_BLOCK 4 +#define LINES_PER_BLOCK 64 //(ILI9341_TFTREALHEIGHT/4) + +typedef struct { + uint8_t cmd; + uint8_t data[16]; + uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds. +} lcd_init_cmd_t; + + +class ILI9341_t3DMA +{ + public: + ILI9341_t3DMA(uint8_t _CS = 17, uint8_t _DC = 18, uint8_t _RST = 255, uint8_t _MOSI=23, uint8_t _CLK=18, uint8_t _MISO=19, uint8_t touch_cs=32, uint8_t touch_irq=33); + + //void setFrameBuffer(uint16_t * fb); + //static uint16_t * getFrameBuffer(void); + + void begin(void); + void flipscreen(bool flip); + bool isflipped(void); + void start(void); + void refresh(void); + void refreshPrepare(void); + void refreshFinish(void); + //void stop(); + //void wait(void); + uint16_t * getLineBuffer(int j); + + void fillScreen(uint16_t color); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + + void fillScreenNoDma(uint16_t color) { fillScreen(color); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x,y,bitmap); }; + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x,y,bitmap,croparx,cropary,croparw,croparh); }; + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawRect(x,y,w,h,color); }; + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }; + + /* + void writeScreenNoDma(const uint16_t *pcolors); + void drawPixel(int16_t x, int16_t y, uint16_t color); + uint16_t getPixel(int16_t x, int16_t y); + */ + + + void touchBegin(); + void readRo(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + bool isTouching(); + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + protected: + bool flipped=false; + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_esp32/espvcs/main/iopins.h b/MCUME_esp32/espvcs/main/iopins.h new file mode 100644 index 0000000..a90e129 --- /dev/null +++ b/MCUME_esp32/espvcs/main/iopins.h @@ -0,0 +1,59 @@ +#ifndef IOPINS_H +#define IOPINS_H + +// ILI9341 +//#define PIN_NUM_CS (gpio_num_t)15 +//#define PIN_NUM_CLK (gpio_num_t)14 +//#define PIN_NUM_MISO (gpio_num_t)12 +//#define PIN_NUM_MOSI (gpio_num_t)13 +//#define PIN_NUM_DC (gpio_num_t)16 + +#define TPIN_NUM_CS (gpio_num_t)32 +#define TPIN_NUM_IRQ (gpio_num_t)33 + + +#define PIN_NUM_CS (gpio_num_t)17 +#define PIN_NUM_CLK (gpio_num_t)18 +#define PIN_NUM_MISO (gpio_num_t)19 +#define PIN_NUM_MOSI (gpio_num_t)23 +#define PIN_NUM_DC (gpio_num_t)21 + +// SD card SPI +#define SPIN_NUM_CS (gpio_num_t)15 +#define SPIN_NUM_CLK (gpio_num_t)14 +#define SPIN_NUM_MISO (gpio_num_t)12 +#define SPIN_NUM_MOSI (gpio_num_t)13 + + +// I2C keyboard +#define I2C_SCL_IO (gpio_num_t)5 +#define I2C_SDA_IO (gpio_num_t)4 + + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X ADC2_CHANNEL_7 // 27 //ADC1_CHANNEL_0 +#define PIN_JOY2_A2Y ADC2_CHANNEL_2 // 2 //ADC1_CHANNEL_3 +#define PIN_JOY2_BTN 32 + +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 39 +#define PIN_KEY_USER4 36 +/* +#define PIN_KEY_ESCAPE 23 +*/ + +// Second joystick +/* +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +*/ + +#endif + + + + diff --git a/MCUME_esp32/espvcs/main/keyboard.h b/MCUME_esp32/espvcs/main/keyboard.h new file mode 100644 index 0000000..0da9978 --- /dev/null +++ b/MCUME_esp32/espvcs/main/keyboard.h @@ -0,0 +1,7 @@ +#ifndef KEYBOARD_H +#define KEYBOARD_H + +void init_keyboard(void); +void keyboard(void); + +#endif diff --git a/MCUME_esp32/espvcs/main/keyboard_osd.h b/MCUME_esp32/espvcs/main/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_esp32/espvcs/main/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_esp32/espvcs/main/logo.h b/MCUME_esp32/espvcs/main/logo.h new file mode 100644 index 0000000..c76beb2 --- /dev/null +++ b/MCUME_esp32/espvcs/main/logo.h @@ -0,0 +1,194 @@ +const uint16_t logo[] = { +0x0140,0x00c1,0x39e7,0x39c6,0x3a07,0x3a07,0x39e7,0x4227,0x39e6,0x39c6,0x39e7,0x39c7,0x39e6,0x31c6,0x39c6,0x39c6,0x39c6,0x39c6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x31c6,0x31c6,0x31e6,0x31c6,0x3a07,0x31c6,0x39e6,0x31e6,0x39e7,0x39e7,0x31c6,0x39e6,0x39e6,0x3a07,0x39e7,0x31c6,0x3a07,0x4228,0x3a07,0x4228,0x4228,0x4248,0x3a07,0x4227,0x4227,0x3a27,0x3a27,0x39e7,0x3a07,0x3a08,0x39e7,0x31e6,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a5,0x39c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x29a5,0x31c6,0x31a6,0x2985,0x3185,0x31a6,0x31c6,0x31a6,0x31a5,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31e6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x31c6,0x31c6,0x31a5,0x31a5,0x31a6,0x31a5,0x31c6,0x2985,0x2985,0x3185,0x3185,0x2985,0x2965,0x2985,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x3185,0x2985,0x31a6,0x3185,0x31a5,0x31a6,0x31a5,0x31a5,0x31a6,0x3185,0x3185,0x3185,0x3185,0x31a6,0x31a6,0x2985,0x31a6,0x31a5,0x31a5,0x31a5,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x3185,0x31a6,0x31a5,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2985,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x3186,0x3186,0x39c6,0x4208,0x4208,0x39c7,0x39e7,0x39e7,0x31a6,0x3185,0x31a6,0x3185,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x31a6,0x3185,0x31a6,0x31a6,0x31a6,0x31a5,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3185,0x3186,0x39c6,0x39c7,0x39c6,0x31a6,0x39c6,0x31c6,0x3186,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x39c7,0x39c7,0x39e7,0x31a6,0x39c6,0x39c6,0x39c6,0x39c6,0x39c7,0x39c7,0x39a6,0x31a6,0x31c6,0x39c6,0x39c6,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x4207,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x39c6,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39c6,0x39c7,0x39e7,0x39e7,0x39e7,0x4208,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39c7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x4208,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4207,0x39c7,0x4207,0x39e7,0x39c7,0x4207,0x39e7,0x3a07,0x4208,0x4208,0x4248,0x4228,0x3a07,0x4207,0x4228,0x41e7,0x4208,0x3a07,0x3a07, +0x3185,0x31c6,0x39e7,0x31c6,0x31a6,0x3185,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a5,0x31a6,0x2965,0x31a6,0x31a6,0x31c6,0x31c6,0x39e6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x39e6,0x39e7,0x31a5,0x3185,0x31c6,0x39c6,0x31a6,0x31c6,0x31a5,0x31a5,0x31a6,0x2985,0x31c6,0x31a5,0x31a6,0x31c6,0x39c6,0x39c6,0x39c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x39e7,0x31c6,0x29a5,0x2985,0x2985,0x31a6,0x39e6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a5,0x39c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a5,0x31c6,0x39e6,0x39e7,0x31a6,0x39c6,0x39c6,0x3a07,0x39e6,0x31c6,0x39c6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x31c6,0x31a6,0x31c6,0x39e6,0x39e7,0x31c6,0x3a07,0x39e6,0x3a07,0x39e7,0x3a07,0x31e6,0x31c6,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x31a6,0x39e6,0x31c6,0x39e7,0x39e6,0x3a07,0x3a07,0x3a07,0x39e7,0x4207,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x39c6,0x39e6,0x39c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x39c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x39e7,0x39e7,0x31c6,0x39e7,0x31a6,0x31c6,0x31c6,0x39c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x39c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4207,0x3a07,0x39e7,0x39c7,0x39e7,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x4207,0x39e7,0x39c6,0x4207,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4207,0x3a07,0x4207,0x3a07,0x4207,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39c6,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x3a07,0x4228,0x3a07,0x31c6,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4208,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39c6,0x39e7,0x31c6,0x31a6,0x39e7,0x39e7,0x39c6,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39a6,0x39c6,0x31a6,0x39c6,0x31a6,0x39c7,0x39e7,0x39c7,0x4207,0x39e7,0x39e7,0x39c7,0x31a6,0x39c6,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x3a07,0x39c6,0x31c6,0x39e7,0x3a07,0x39e7,0x39c7,0x4207,0x4208,0x39e7,0x31c6,0x39e7,0x39e7,0x31a6,0x39c6,0x39c7,0x39c6,0x31a6,0x3185,0x39c7,0x39c6,0x31a6,0x39c7,0x31a6,0x39c7,0x31a6,0x3186,0x3a07,0x39e7,0x39e7,0x31c6,0x39c6,0x31c6,0x39c7,0x31c6,0x31c6,0x31c6,0x31a6,0x39c7,0x39c6,0x39e7,0x39c6,0x31a6,0x31a6,0x39e7, +0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x31c6,0x3185,0x39c6,0x31c6,0x39c6,0x39e7,0x31a6,0x39c6,0x39c6,0x31a6,0x31c6,0x39e7,0x39e6,0x39c6,0x31a6,0x31c6,0x31a6,0x31c6,0x39e6,0x39e6,0x39e6,0x39e7,0x39e7,0x39c6,0x39e7,0x39e7,0x39e6,0x31c6,0x31c6,0x39c6,0x39e6,0x39c6,0x31a5,0x31a5,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x39c6,0x31a6,0x31a6,0x31c6,0x31a5,0x31a5,0x31a5,0x31c6,0x31a6,0x31a6,0x3185,0x31c6,0x31c6,0x39e6,0x39e7,0x31c6,0x31a6,0x3a07,0x31c6,0x3a07,0x31c6,0x3a07,0x39e7,0x39e6,0x39c6,0x39e6,0x39e6,0x31c6,0x31c6,0x39e6,0x31c6,0x39e7,0x39c6,0x31c6,0x31c6,0x39e7,0x39e6,0x39c6,0x39c6,0x31c6,0x39e7,0x39e7,0x31c6,0x3a07,0x3a07,0x31c6,0x31c6,0x2985,0x31e6,0x39e7,0x31c6,0x31a6,0x39c7,0x39c6,0x39e7,0x31a6,0x39e6,0x31a6,0x39e6,0x3a07,0x39c6,0x3a07,0x3a07,0x3a07,0x31c6,0x31c6,0x39e6,0x39e7,0x39e7,0x31a6,0x31a6,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x31c6,0x31a6,0x39c7,0x31a6,0x39e7,0x31c6,0x39e7,0x31c6,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x39e7,0x3a07,0x39e7,0x31e7,0x31c6,0x39e7,0x31c6,0x31c6,0x3a07,0x39e7,0x31a6,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x3a07,0x4228,0x4208,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x4207,0x4227,0x39e7,0x3a07,0x39e7,0x4207,0x4208,0x39e7,0x4228,0x3a07,0x4207,0x3a07,0x4227,0x4207,0x4228,0x4228,0x4207,0x4228,0x3a07,0x4208,0x4207,0x4228,0x4228,0x4228,0x4228,0x4227,0x4228,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x4207,0x4208,0x4208,0x3a07,0x4208,0x4228,0x4228,0x3a08,0x4208,0x39e7,0x39e7,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4207,0x4228,0x4208,0x4248,0x4228,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4208,0x4228,0x4228,0x39e7,0x4248,0x4a89,0x4207,0x4207,0x4208,0x3a07,0x4208,0x39e7,0x39e7,0x3a07,0x4228,0x4207,0x4207,0x39e7,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4208,0x3a07,0x3a07,0x4228,0x4228,0x4208,0x39e7,0x3a07,0x39e7,0x4208,0x4207,0x3a07,0x4208,0x39e7,0x3a07,0x39e7,0x4228,0x4248,0x4207,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x3a08,0x3a07,0x4207,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x31c6,0x3a07,0x4207,0x31c6,0x39e7,0x39e7,0x39c6,0x3a07,0x3a07,0x39e7,0x39c7,0x39c7,0x3a07,0x3a07,0x3a07,0x4228,0x39c7,0x39e7,0x39c6,0x39c7, +0x39e6,0x39e7,0x39c6,0x39e6,0x39e7,0x3a07,0x39e7,0x39e7,0x39c6,0x39e7,0x39e7,0x3a07,0x4227,0x39e7,0x39e6,0x31c6,0x3a07,0x39e6,0x39e7,0x39e6,0x39e7,0x31c6,0x3a07,0x39c6,0x31a6,0x31a6,0x31c6,0x39e6,0x3a07,0x39e7,0x31c6,0x39c6,0x31c6,0x31a5,0x39c6,0x31c6,0x31c6,0x31a6,0x3a07,0x3a07,0x31a6,0x31a5,0x39e6,0x39e6,0x39e6,0x31a6,0x2965,0x31c6,0x39e6,0x31a6,0x31c6,0x39e7,0x31a6,0x39c6,0x39c6,0x39e7,0x31c6,0x39e6,0x3a07,0x3a07,0x31c6,0x39e7,0x39e6,0x31c6,0x31c6,0x3a07,0x3a07,0x31a6,0x39c6,0x39e6,0x39c6,0x31c6,0x31e6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x3a07,0x4207,0x31c6,0x3a07,0x31a6,0x39e7,0x39e6,0x39c6,0x39e7,0x3a07,0x31e7,0x39e7,0x2986,0x31c6,0x31a6,0x39e7,0x39e6,0x3a07,0x39e7,0x31c6,0x39e6,0x31c6,0x39e6,0x39e6,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x31c6,0x4228,0x4248,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x31e7,0x31c6,0x39c6,0x39e7,0x31e7,0x31e7,0x3a07,0x39e7,0x39e7,0x39e7,0x31e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x4207,0x3a07,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x31c6,0x31c6,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x4248,0x3a07,0x39c6,0x39e7,0x39c7,0x31c6,0x3a07,0x4228,0x3a28,0x4228,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x4228,0x3a07,0x4207,0x4227,0x4207,0x4207,0x4248,0x4248,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4207,0x3a07,0x4207,0x4207,0x3a07,0x4248,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4207,0x4228,0x4248,0x4208,0x39e7,0x4228,0x4228,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x4248,0x4208,0x3a07,0x4248,0x4228,0x4a48,0x4248,0x3a07,0x4228,0x3a07,0x4207,0x3a07,0x39e7,0x4248,0x4228,0x39e7,0x4228,0x4248,0x4208,0x4207,0x4208,0x4228,0x4228,0x4248,0x4228,0x4248,0x4228,0x4a48,0x4228,0x4208,0x4208,0x4228,0x4228,0x4207,0x4208,0x4228,0x4228,0x4228,0x4207,0x4208,0x4228,0x39c7,0x4207,0x4228,0x4207,0x4228,0x4228,0x4228,0x4207,0x4228,0x4228,0x39e7,0x39e7,0x4a48,0x3a07,0x3a07,0x4208,0x4228,0x4207,0x4228,0x4228,0x39e7,0x4228,0x4207,0x3a07,0x4207,0x4228,0x4208,0x3a07,0x4208,0x4228,0x4248,0x4208,0x4208,0x4a69,0x4228,0x4207,0x4228,0x4208,0x39e7,0x39e7,0x4228,0x4207,0x39e7,0x39e7,0x39e7,0x4207,0x3a07,0x39e7,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x4207,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x3a07,0x4248,0x4207,0x31a6,0x4208,0x4208,0x39e7,0x39a6,0x39c6,0x3a07,0x3a08,0x4228,0x3a08,0x39c7,0x4208,0x3186,0x39c7, +0x31a5,0x31a6,0x39e6,0x3a07,0x31c6,0x39c6,0x4227,0x4228,0x4207,0x31c6,0x39c6,0x39e6,0x39c6,0x39e6,0x39e6,0x31c6,0x39e6,0x39e7,0x39e7,0x39e7,0x39e6,0x31c6,0x4227,0x31a6,0x31a6,0x39e7,0x31c6,0x3a07,0x3a07,0x4227,0x3a07,0x31c6,0x3a07,0x39e6,0x31c6,0x31a5,0x3185,0x39c6,0x39e6,0x39e7,0x4207,0x39e6,0x31c6,0x31a6,0x3185,0x31a6,0x31a6,0x39c6,0x31a6,0x31c6,0x3a07,0x39e7,0x31c6,0x31c6,0x39e6,0x39e6,0x31c6,0x31a6,0x31a5,0x2985,0x39e6,0x31c6,0x39e7,0x31c6,0x39c6,0x39e7,0x31a6,0x39e6,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x39c6,0x31c6,0x31a6,0x31c6,0x3a07,0x39e6,0x3a07,0x3a07,0x3a07,0x39e6,0x3a07,0x31c6,0x39e6,0x39e7,0x4248,0x3a27,0x3a27,0x3a07,0x4227,0x31a6,0x39e7,0x39e7,0x39e7,0x39c7,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x4227,0x39e7,0x31a5,0x39e7,0x4227,0x4228,0x39e7,0x3a07,0x3a07,0x39e7,0x4227,0x31c6,0x31c6,0x39e7,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x39e7,0x39e6,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x31c6,0x3a07,0x39e7,0x39e6,0x4207,0x39e7,0x3a07,0x3a07,0x3a07,0x4208,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x39e7,0x3a07,0x39e7,0x4208,0x4228,0x3a07,0x4207,0x3a07,0x4207,0x4207,0x4248,0x4248,0x4208,0x4228,0x4207,0x4228,0x4228,0x4248,0x3a07,0x4207,0x4228,0x4228,0x4228,0x4207,0x4a69,0x4208,0x39e7,0x4228,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x3a07,0x4248,0x4228,0x4207,0x4248,0x3a07,0x4228,0x4228,0x4248,0x4a48,0x4228,0x4228,0x4248,0x4228,0x4208,0x4228,0x3a07,0x4228,0x4248,0x4a69,0x4a48,0x4228,0x4228,0x4248,0x4a48,0x4228,0x4228,0x4248,0x4248,0x4207,0x4248,0x4a48,0x4228,0x4a69,0x4248,0x4228,0x4a49,0x4a69,0x4228,0x4a49,0x4228,0x3a07,0x4228,0x4228,0x4207,0x4228,0x4228,0x4228,0x4208,0x4a69,0x4228,0x4a48,0x4228,0x39e7,0x4228,0x4228,0x4248,0x4a69,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a48,0x4208,0x4a48,0x4248,0x4248,0x4248,0x4a48,0x4228,0x4228,0x4207,0x3a07,0x4228,0x4228,0x4248,0x4a69,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x4228,0x4228,0x4228,0x4a49,0x4228,0x3a07,0x4a69,0x4a69,0x4208,0x3a07,0x31c6,0x39e7,0x4228,0x4228,0x39c7,0x39c6,0x4228,0x4a48,0x39e7,0x3a07,0x4207,0x4228,0x3a08,0x39e7,0x39c6,0x39c7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39c7,0x3a08,0x4a49,0x31c6,0x39e7,0x39e7,0x39e7, +0x39e7,0x31a6,0x39c6,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x4207,0x3a07,0x3a07,0x39e7,0x4207,0x4207,0x4248,0x39e6,0x39e7,0x4228,0x3a07,0x39e7,0x4207,0x39e6,0x39e6,0x3a07,0x39e7,0x39e6,0x39e6,0x31c6,0x39e6,0x3a07,0x39e6,0x39c6,0x39e7,0x3a07,0x31c6,0x39e7,0x31a6,0x31a6,0x3185,0x31a6,0x31c6,0x4227,0x3a07,0x31e6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x3a07,0x31c6,0x39e7,0x31a5,0x31c6,0x31c6,0x3a07,0x3a07,0x39e7,0x39e7,0x31e6,0x4207,0x39c6,0x39c6,0x39e7,0x39c6,0x31c6,0x31c6,0x39e6,0x31a6,0x31a6,0x3a07,0x31a6,0x31a6,0x31c6,0x3185,0x39c6,0x39e7,0x3a07,0x4248,0x3a07,0x4227,0x31e6,0x31c6,0x4248,0x31e6,0x3a07,0x4248,0x3a07,0x3a07,0x3a27,0x4227,0x4227,0x4207,0x4207,0x31c6,0x39e7,0x39e7,0x3a07,0x39c7,0x31e6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4207,0x3a07,0x3a07,0x3a07,0x39e7,0x4207,0x39e7,0x39e7,0x3a07,0x4227,0x39c6,0x39e7,0x39e7,0x39e7,0x3a07,0x31e7,0x31a6,0x3a27,0x3a07,0x39e7,0x39e7,0x39c7,0x3a07,0x3a07,0x3a07,0x4228,0x3a28,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x39e6,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x4208,0x3a07,0x3a07,0x31e7,0x3a07,0x4207,0x4228,0x39e7,0x4207,0x4248,0x4228,0x39e7,0x3a07,0x4228,0x4207,0x4207,0x4207,0x39e7,0x4228,0x4228,0x39e7,0x4207,0x4228,0x4227,0x3a27,0x4228,0x4228,0x3a07,0x4207,0x4228,0x4228,0x3a07,0x4228,0x39e7,0x3a07,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x4228,0x4227,0x4208,0x3a07,0x4208,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x4248,0x4208,0x4228,0x4228,0x4248,0x4a49,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4208,0x4228,0x4228,0x4228,0x4a48,0x4248,0x39e7,0x4228,0x4248,0x4248,0x4228,0x4228,0x4208,0x4a48,0x4228,0x4248,0x4228,0x4a69,0x4aaa,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x39e7,0x4248,0x4a48,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x4208,0x4228,0x4a69,0x4a69,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4228,0x4248,0x4228,0x4208,0x4a69,0x4248,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4208,0x3a07,0x4a48,0x4228,0x3a07,0x4228,0x4228,0x4248,0x3a07,0x4208,0x4a69,0x4208,0x39c7,0x4208,0x4228,0x4248,0x4a49,0x4248,0x4208,0x3a08,0x4228,0x4228,0x4207,0x3a07,0x31a6,0x39c6,0x4228,0x3a07,0x4207,0x4a48,0x39c7,0x39e7,0x39e7,0x39e7,0x4248,0x3a07,0x3a07,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4228,0x39e7,0x39e7,0x39c7,0x39e7, +0x31a6,0x39e7,0x31a6,0x3186,0x39e7,0x39e6,0x31c6,0x4207,0x4207,0x39e7,0x4227,0x31a5,0x39e7,0x3a07,0x4207,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x4227,0x4227,0x39e6,0x39e7,0x4207,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x39c6,0x4227,0x39e7,0x4207,0x4227,0x3a07,0x31c6,0x39e7,0x4207,0x4207,0x3a07,0x39c6,0x3a07,0x3a07,0x31c6,0x31c6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x31a6,0x39e7,0x31a6,0x39c6,0x39e6,0x31c6,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4227,0x4227,0x39e6,0x3a27,0x3a07,0x31c6,0x39e7,0x3a07,0x3a07,0x39c6,0x31c6,0x4228,0x3a07,0x31c6,0x3a07,0x31c6,0x3a27,0x3a07,0x39e7,0x39c6,0x3a07,0x31e6,0x4248,0x3a07,0x39e7,0x3a07,0x39e7,0x39c6,0x4228,0x39e7,0x39e7,0x31c6,0x4207,0x4227,0x39c6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a27,0x3a27,0x4227,0x3a07,0x3a07,0x4248,0x4227,0x3a07,0x4228,0x3a07,0x31e7,0x31c6,0x39e7,0x39e7,0x39e6,0x3a07,0x3a07,0x39e7,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x4248,0x39e7,0x31e7,0x31c6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x4a68,0x4228,0x4207,0x3a07,0x3a07,0x31c6,0x39e7,0x31c7,0x3a28,0x4228,0x31e7,0x4228,0x3a07,0x4248,0x3a07,0x4207,0x4228,0x4248,0x3a27,0x4228,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x39e7,0x4207,0x4a68,0x4228,0x4207,0x4a68,0x4269,0x4228,0x3a07,0x4248,0x4228,0x3a07,0x4207,0x4228,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x4228,0x4248,0x4228,0x3a08,0x4228,0x4228,0x3a07,0x4208,0x4228,0x4a49,0x4228,0x4228,0x3a08,0x4248,0x4248,0x4248,0x4228,0x4248,0x5289,0x4228,0x4a48,0x4207,0x4248,0x4207,0x4208,0x4248,0x4a48,0x4a69,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x4208,0x4208,0x4a69,0x4228,0x4208,0x4248,0x39c6,0x4207,0x4a49,0x3a07,0x4228,0x4a49,0x4228,0x4a49,0x4228,0x4207,0x4228,0x4228,0x4228,0x4248,0x4248,0x3a07,0x4248,0x4207,0x4a49,0x4a69,0x4207,0x4208,0x4a49,0x4248,0x4248,0x4a69,0x4228,0x4228,0x4208,0x4248,0x4248,0x4a69,0x4228,0x3a07,0x4228,0x4a89,0x4228,0x4228,0x4228,0x3a07,0x4a48,0x4228,0x4228,0x4248,0x4228,0x4228,0x4248,0x4228,0x4228,0x4a49,0x4a69,0x4228,0x31a7,0x4228,0x4208,0x4208,0x4249,0x4208,0x4228,0x4248,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e7,0x4248,0x39e7,0x4a69,0x4208,0x3a07,0x4a49,0x4a49,0x4a49,0x4228,0x31c7,0x4a69,0x3a08,0x39e7,0x4208,0x4228,0x31c7,0x4208,0x4208,0x31a6,0x39e7, +0x31a6,0x4248,0x4207,0x31c6,0x4208,0x3a07,0x39c6,0x39e7,0x4227,0x3a07,0x3a07,0x39e7,0x31c6,0x4228,0x3a07,0x4248,0x4227,0x3a07,0x31c6,0x4207,0x4227,0x39e6,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x31a6,0x39c6,0x3a07,0x39c6,0x31c6,0x3a07,0x31a6,0x3a07,0x3a07,0x4227,0x39e6,0x39e7,0x31c6,0x39e6,0x31a6,0x39e7,0x31c6,0x31c6,0x39c6,0x39c6,0x39e7,0x3a07,0x39e6,0x39e7,0x39e7,0x31c6,0x39c6,0x39e6,0x31c6,0x31c6,0x31c6,0x39e7,0x4207,0x39c6,0x31a6,0x31c6,0x39e7,0x3a07,0x31c6,0x39e7,0x4228,0x3a07,0x4207,0x39e6,0x39e7,0x39e6,0x29a5,0x39e7,0x3a07,0x39e6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x31a6,0x39e7,0x31a5,0x31c6,0x4227,0x4228,0x3a07,0x31a6,0x4207,0x39e7,0x4207,0x39e6,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x31e6,0x39e7,0x3a27,0x3a07,0x39e7,0x39c6,0x39e7,0x39e7,0x3a28,0x39e7,0x3a07,0x31c6,0x3a07,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x31c6,0x31c6,0x3a07,0x31c6,0x39e7,0x31a6,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x4248,0x4a48,0x3a07,0x3a07,0x4208,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x3a07,0x4227,0x3a27,0x4a68,0x39e7,0x3a08,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4207,0x4208,0x4a48,0x4227,0x4227,0x4228,0x4269,0x3a07,0x3a07,0x4228,0x4228,0x3a07,0x4208,0x39e7,0x4228,0x4228,0x3a07,0x4207,0x39e7,0x3a08,0x3a07,0x39e7,0x4208,0x4228,0x4228,0x4248,0x39e7,0x3a07,0x4228,0x4207,0x4248,0x4248,0x4228,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4208,0x4248,0x4a48,0x4248,0x4a49,0x4228,0x4a69,0x4228,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a49,0x4a69,0x4248,0x4248,0x4a48,0x4228,0x3a07,0x4a69,0x4a69,0x3a07,0x4a48,0x4208,0x4208,0x4228,0x4228,0x4a48,0x4248,0x4a69,0x4a69,0x4248,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x4208,0x4207,0x4a48,0x4207,0x4208,0x5289,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a89,0x4207,0x4228,0x4a69,0x5289,0x4248,0x4248,0x4228,0x4a69,0x4228,0x4228,0x4248,0x4248,0x3a07,0x4208,0x4248,0x4228,0x4228,0x4a48,0x4a49,0x3a07,0x4208,0x4248,0x4248,0x4228,0x4208,0x4a49,0x4a69,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a48,0x4208,0x31c6,0x39e7,0x3a07,0x4248,0x4248,0x39c7,0x39e7,0x3a07,0x4208,0x4228,0x31c6,0x3a07,0x4208,0x4207,0x4208,0x39e7,0x31a6,0x4208,0x4a49,0x39e7,0x31c7, +0x39e7,0x4207,0x3a07,0x39e7,0x31a6,0x39c6,0x39e7,0x39e6,0x4a48,0x39e6,0x3a07,0x39e7,0x31c6,0x39c6,0x39c6,0x4207,0x4207,0x4227,0x4207,0x39c6,0x39e7,0x4248,0x4227,0x31c6,0x4227,0x39e7,0x3a07,0x31c6,0x31a6,0x31c6,0x39e7,0x39c6,0x4227,0x39e7,0x3a07,0x3a07,0x39e6,0x31c6,0x4207,0x39e6,0x39e7,0x31c6,0x39e6,0x31a6,0x39c6,0x31a6,0x39e7,0x31a5,0x39c6,0x4247,0x4227,0x39e7,0x31c6,0x31e6,0x4248,0x2985,0x4207,0x39e7,0x39e7,0x4227,0x2985,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x4227,0x39c6,0x39e6,0x31a6,0x31a6,0x31a6,0x4228,0x3a27,0x3a07,0x39e7,0x39e7,0x4207,0x3a07,0x31e6,0x39e7,0x3a07,0x3a07,0x39e6,0x31c6,0x4228,0x4248,0x3a07,0x31e6,0x3a07,0x3a07,0x3a07,0x4228,0x4248,0x4227,0x4228,0x3a07,0x4207,0x3a08,0x3a07,0x3a07,0x39e7,0x3a28,0x3a07,0x39e7,0x3a07,0x39e6,0x4207,0x31c6,0x31c6,0x4227,0x3a07,0x31e6,0x31e6,0x3a07,0x31a6,0x3a07,0x4228,0x39e7,0x2985,0x39e7,0x39e7,0x3a07,0x4227,0x3a07,0x4228,0x39e6,0x3a07,0x4227,0x39e7,0x39e7,0x31c6,0x31e7,0x4228,0x4227,0x4228,0x31c6,0x3a07,0x4248,0x4228,0x4207,0x4227,0x39c6,0x39e7,0x39e7,0x3a07,0x4208,0x39e7,0x39e7,0x39e7,0x3185,0x39c6,0x4228,0x31a6,0x31c6,0x3a07,0x3a27,0x4227,0x4248,0x39c6,0x4228,0x4248,0x39e7,0x4248,0x4248,0x39e7,0x3a07,0x4227,0x4248,0x4228,0x4228,0x39e7,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4207,0x4248,0x4248,0x4208,0x4248,0x4228,0x3a07,0x39e7,0x4227,0x4a68,0x4227,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x4a68,0x4228,0x39e7,0x4248,0x4248,0x3a07,0x4228,0x4227,0x4228,0x4208,0x4228,0x4248,0x4a48,0x4228,0x4228,0x4228,0x4208,0x4228,0x4248,0x4248,0x4248,0x4a49,0x4a69,0x4a69,0x4248,0x4a89,0x4a69,0x4248,0x4249,0x4aaa,0x4269,0x4228,0x4228,0x4a69,0x4a48,0x3a07,0x4a49,0x4a69,0x4a69,0x4228,0x4a49,0x3a07,0x4a69,0x4a89,0x4a69,0x4a48,0x52aa,0x52aa,0x4a89,0x4248,0x3a28,0x4228,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4208,0x4228,0x4228,0x52ca,0x4a89,0x4228,0x4a69,0x4a69,0x52aa,0x4248,0x4248,0x4228,0x4248,0x5289,0x4248,0x4a48,0x4248,0x4228,0x4249,0x4248,0x52a9,0x4a48,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x4228,0x4248,0x39e7,0x4a69,0x4228,0x4207,0x39e7,0x4228,0x4248,0x3a07,0x4208,0x4a49,0x3a07,0x4207,0x4207,0x4228,0x4228,0x4227,0x4a48,0x4248,0x52a9,0x4207,0x31c6,0x4a48,0x31a6,0x4228,0x4a48,0x31a6,0x3a07,0x5289,0x4a68,0x4207,0x4a48,0x31a6,0x39e7,0x3a08,0x4208,0x3a08, +0x3a07,0x3a07,0x4207,0x39e6,0x2985,0x39c6,0x4a48,0x3a07,0x39e6,0x3a07,0x39c6,0x39e7,0x3a07,0x39e6,0x39e7,0x39e7,0x3a07,0x39e6,0x31c6,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x31a6,0x39e7,0x31a6,0x31c6,0x4207,0x31a6,0x2965,0x4207,0x4227,0x31c6,0x39e7,0x3a07,0x39c6,0x39e7,0x3a07,0x4248,0x4207,0x4227,0x31e6,0x31c6,0x31a6,0x39e6,0x31a6,0x31c6,0x3a07,0x4207,0x39e7,0x31a6,0x31a6,0x52a9,0x31a4,0x4248,0x3a06,0x39e6,0x4a68,0x3185,0x31c6,0x39e6,0x39e6,0x39e6,0x3a07,0x3a07,0x39e6,0x31e6,0x3a07,0x39c6,0x39e6,0x4207,0x39e6,0x39e7,0x4227,0x31c6,0x31c6,0x39e6,0x4228,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x3a07,0x3a07,0x3a27,0x3a27,0x39e7,0x31e6,0x3a27,0x3a07,0x4248,0x4227,0x3a07,0x4228,0x3a07,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x3a27,0x3a07,0x31e6,0x3a07,0x4a48,0x39e7,0x4268,0x52c9,0x4a47,0x52a8,0x4207,0x3a27,0x39e7,0x31a6,0x4248,0x4228,0x4228,0x4a89,0x4a68,0x4247,0x4248,0x52a8,0x4a67,0x4a89,0x4a89,0x4227,0x632b,0x39e6,0x39c6,0x39e7,0x31c7,0x39e7,0x31e7,0x3a07,0x3a07,0x4228,0x4207,0x3a07,0x39e7,0x39c6,0x3a07,0x4a48,0x4228,0x4248,0x4228,0x3a07,0x4248,0x39e7,0x3185,0x4207,0x4227,0x4a89,0x39e6,0x4228,0x39c6,0x31c6,0x4227,0x5266,0x3a06,0x4a88,0x3a07,0x4a68,0x4207,0x4248,0x4268,0x4248,0x4228,0x4248,0x4227,0x4207,0x4228,0x4248,0x4227,0x3a27,0x4228,0x4228,0x39e7,0x39e7,0x4207,0x4228,0x4248,0x31c6,0x4248,0x4a89,0x4227,0x4228,0x39c6,0x4248,0x4248,0x3a07,0x4a68,0x4247,0x4227,0x4a69,0x4a48,0x4248,0x4228,0x4a69,0x4a68,0x4227,0x4a49,0x4248,0x52ca,0x4a48,0x5ac9,0x4248,0x4228,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4a48,0x4248,0x4248,0x4248,0x4a49,0x528a,0x4248,0x4207,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x4208,0x528a,0x4a89,0x4a49,0x4248,0x4228,0x4a69,0x4a48,0x4248,0x4a49,0x4a69,0x4228,0x4a89,0x4a69,0x3a07,0x4a89,0x4a89,0x4248,0x4a69,0x4a48,0x4a89,0x4a89,0x4228,0x4228,0x4208,0x4207,0x6b8d,0x6b8c,0x634b,0x5aea,0x52ca,0x5aea,0x52ca,0x5aca,0x6b4c,0x52a9,0x4a69,0x4228,0x4a69,0x4248,0x4a68,0x4a69,0x4228,0x4a48,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4248,0x4228,0x4228,0x4248,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4a89,0x3a28,0x4248,0x4228,0x3a07,0x39e7,0x4228,0x4a48,0x31a5,0x52a9,0x52a9,0x4a68,0x4247,0x4226,0x5ac8,0x39c6,0x3185,0x4a68,0x4227,0x39e6,0x4207,0x4227,0x39e6,0x39e6,0x4248,0x3a07,0x4a48,0x2985,0x4208,0x4228,0x39c7,0x39e7, +0x39e7,0x39c6,0x39e6,0x31c6,0x39e7,0x3a07,0x3a07,0x31a6,0x39e6,0x3a07,0x3a07,0x39c6,0x4227,0x4248,0x3a07,0x3a07,0x39c6,0x39c6,0x4a68,0x3a07,0x31c6,0x31c6,0x39c6,0x4207,0x39c6,0x39e6,0x39e7,0x39c6,0x3a07,0x39e6,0x31a6,0x39e7,0x39c6,0x39e6,0x3a07,0x31a6,0x39e7,0x3a07,0x31c6,0x31a6,0x3a07,0x39e6,0x39e7,0x4248,0x3a07,0x3186,0x31a6,0x4208,0x39e7,0x31c6,0x39c6,0x31c6,0x39c6,0x2985,0x4a68,0x31a5,0x4228,0x3a07,0x4228,0x4a68,0x2985,0x3a07,0x3a07,0x31c6,0x31a6,0x39e6,0x39e6,0x31a5,0x4227,0x39e7,0x4207,0x4a68,0x3a07,0x31c6,0x4248,0x39e7,0x3185,0x39c6,0x39e7,0x3a07,0x4228,0x31c6,0x39e6,0x3a07,0x4227,0x3a27,0x3a07,0x39e7,0x31e6,0x4248,0x3a07,0x4228,0x31c6,0x4228,0x3a07,0x31c6,0x3a27,0x4207,0x3a07,0x31c6,0x3a28,0x31c6,0x3a28,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x31c7,0x31c6,0x4248,0x4248,0x4248,0x4227,0x4248,0x39e7,0x39e7,0x4227,0x39e6,0x3a07,0x3a07,0x3a07,0x4248,0x31c6,0x4247,0x4207,0x39e6,0x4a69,0x31a6,0x4a88,0x4207,0x39e7,0x3a07,0x3a07,0x31e6,0x3a07,0x3a07,0x31c6,0x4207,0x3a07,0x3a07,0x39c7,0x3a07,0x4228,0x4228,0x4228,0x4207,0x3a08,0x4248,0x4207,0x4227,0x39c6,0x4248,0x39e6,0x4207,0x39e7,0x5ae9,0x4a66,0x5286,0x4a67,0x5ae9,0x39e7,0x52a8,0x4a87,0x4247,0x4248,0x4248,0x4248,0x4a68,0x4248,0x4268,0x4228,0x4228,0x3a07,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4248,0x4248,0x4227,0x39e7,0x4a48,0x4228,0x4228,0x4228,0x4248,0x4a48,0x4248,0x4248,0x5289,0x4a88,0x39e7,0x4248,0x5289,0x4207,0x4a48,0x4228,0x4248,0x528a,0x4227,0x4a69,0x4a68,0x5288,0x4228,0x4207,0x4228,0x4a69,0x4228,0x4a48,0x4a49,0x4a69,0x4a49,0x4a69,0x4a69,0x4248,0x4248,0x4a49,0x4228,0x4a48,0x4a89,0x4a49,0x4a48,0x4a69,0x4228,0x4a69,0x4248,0x4248,0x4a69,0x4228,0x5289,0x5289,0x4248,0x4228,0x4228,0x4a48,0x4a69,0x5289,0x4a49,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4249,0x4a49,0x4248,0x632b,0x738d,0x6b8c,0x52a9,0x5b0b,0x6b6d,0x5aeb,0x4a69,0x5aeb,0x52ca,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x4228,0x4249,0x4248,0x4a89,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4228,0x4228,0x4a48,0x4228,0x4228,0x4207,0x4248,0x39e7,0x4208,0x4248,0x4228,0x39e7,0x3a07,0x4208,0x3a07,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x5288,0x4a68,0x5288,0x5aa8,0x4a68,0x4a68,0x4a48,0x4a89,0x4207,0x4228,0x4a89,0x4207,0x39e7,0x52aa,0x4a69,0x4a69,0x4228,0x4248,0x4228,0x39e7,0x3a08, +0x39e7,0x31a6,0x39e7,0x3a07,0x39e6,0x4227,0x39e7,0x4a48,0x4227,0x3a07,0x39e6,0x4207,0x39e7,0x3a07,0x4227,0x3a07,0x4208,0x3a07,0x4227,0x4227,0x31a6,0x4248,0x4207,0x31c6,0x39e7,0x4228,0x4227,0x4228,0x4207,0x39e6,0x3185,0x3a07,0x3a07,0x39e7,0x39e7,0x4227,0x39e6,0x31c6,0x39c6,0x39c6,0x39e7,0x4207,0x3a07,0x39e6,0x31a6,0x39c6,0x4a48,0x39e6,0x39e6,0x4a47,0x39e6,0x4248,0x4228,0x39c6,0x3186,0x31a5,0x31c6,0x39c6,0x39c7,0x31e7,0x31a6,0x39e7,0x39e7,0x3a07,0x39c6,0x39c6,0x3185,0x31a5,0x31c6,0x31c6,0x3a07,0x39e7,0x39c6,0x3a07,0x3a07,0x3a07,0x39c6,0x3a07,0x39e6,0x3a07,0x3a07,0x39e7,0x39e7,0x31c6,0x39e7,0x4248,0x39e7,0x39e6,0x39e7,0x3a07,0x3a07,0x4228,0x31c6,0x4248,0x39e7,0x4228,0x39e7,0x31e7,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a07,0x39e7,0x29a6,0x31c6,0x39e7,0x39e6,0x3a07,0x39e7,0x31c6,0x39e7,0x3a07,0x4228,0x31c6,0x4228,0x3a07,0x31c6,0x31c6,0x4228,0x4207,0x39e7,0x3a08,0x39e6,0x31c6,0x39e7,0x39e6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4228,0x39e7,0x4207,0x4207,0x4248,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x39e7,0x31a7,0x31c6,0x39c6,0x4228,0x4a68,0x4a48,0x4207,0x4a48,0x4248,0x4247,0x4248,0x4a68,0x4227,0x4228,0x4248,0x3a07,0x4228,0x4227,0x4207,0x4228,0x4228,0x3a07,0x4248,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4208,0x4a49,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x4228,0x4207,0x4228,0x4207,0x4248,0x4208,0x4207,0x4227,0x4227,0x3a08,0x4248,0x4208,0x4228,0x4248,0x4208,0x4a69,0x4248,0x3a07,0x4228,0x4208,0x4228,0x4208,0x4228,0x4a89,0x4248,0x4248,0x4248,0x4a89,0x4248,0x4a69,0x4a69,0x4a48,0x4a69,0x4a89,0x4a8a,0x528a,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4248,0x4228,0x4248,0x4228,0x4a69,0x528a,0x528a,0x4228,0x4a89,0x4a69,0x4208,0x4a69,0x4a69,0x4208,0x4a69,0x4a89,0x4a69,0x52aa,0x3a07,0x4207,0x4228,0x630b,0x4a49,0x52aa,0x5aeb,0x4a69,0x4a69,0x52a9,0x4228,0x4a69,0x4a69,0x4a89,0x52aa,0x3a08,0x4a89,0x4a89,0x4228,0x4a69,0x4a89,0x4a69,0x4228,0x4228,0x4a69,0x4a48,0x4248,0x4a48,0x3a07,0x4228,0x3a07,0x4a49,0x4228,0x4208,0x4208,0x4228,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4248,0x4a89,0x4228,0x39e7,0x3a07,0x39e7,0x4228,0x4a48,0x4a68,0x3a06,0x4228,0x4208,0x4228,0x39c7,0x3a07,0x4208,0x4a49,0x4a49,0x4a69,0x4228,0x528a,0x528a,0x4228,0x3a08,0x4249, +0x39e7,0x3a07,0x4207,0x4227,0x39e6,0x39e6,0x3a07,0x4207,0x3a07,0x39e6,0x31a6,0x3a07,0x4207,0x39c6,0x4248,0x39e7,0x39e7,0x39e7,0x3a07,0x39e6,0x3a27,0x4a68,0x3a07,0x4228,0x3a07,0x4248,0x4227,0x3a07,0x4227,0x3a07,0x31a6,0x39e6,0x39e7,0x39e6,0x39e7,0x4207,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x4207,0x31a6,0x5289,0x52a9,0x4a67,0x52a8,0x52a8,0x52a8,0x39e6,0x3a06,0x4a68,0x4a47,0x4207,0x3a06,0x4206,0x4247,0x39e7,0x4248,0x4a48,0x4227,0x4248,0x4a48,0x39e7,0x4227,0x31a5,0x4a48,0x3a26,0x4247,0x31c6,0x3a07,0x4228,0x3a27,0x3a07,0x39e7,0x39e7,0x31a6,0x4207,0x3a07,0x4a89,0x4248,0x4228,0x4227,0x4227,0x4228,0x39e7,0x39c7,0x3a28,0x4228,0x3a07,0x4248,0x3a07,0x3a07,0x3a08,0x3a07,0x31c6,0x3a07,0x4228,0x39e7,0x4228,0x3a07,0x31e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a28,0x3a28,0x39e7,0x31a6,0x31e7,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x31e6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x4228,0x31e6,0x31a5,0x4227,0x4227,0x39e7,0x39e7,0x39e6,0x3a27,0x4248,0x39e7,0x31c7,0x4228,0x3a07,0x3a27,0x3a07,0x4228,0x3a07,0x4228,0x3a07,0x4207,0x4228,0x4228,0x3a27,0x39e7,0x4227,0x4a68,0x4207,0x4248,0x31e7,0x3a28,0x4228,0x3a07,0x4228,0x4268,0x4228,0x4248,0x4207,0x4248,0x4a68,0x4248,0x4248,0x4a48,0x4a48,0x4248,0x4268,0x4248,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4248,0x39e7,0x4207,0x4207,0x4208,0x31a6,0x39e7,0x4228,0x3a07,0x4207,0x4228,0x4228,0x3a07,0x4228,0x4208,0x4207,0x4228,0x4207,0x3a07,0x4248,0x4228,0x4248,0x4228,0x4228,0x39e7,0x4a69,0x4248,0x4248,0x3a28,0x4a69,0x4228,0x4269,0x3a07,0x4a69,0x4a69,0x4248,0x4228,0x4a89,0x4228,0x4a69,0x4a89,0x4a49,0x4a49,0x4a49,0x4248,0x4248,0x4a69,0x4a89,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x4a89,0x4269,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x3a07,0x4248,0x4228,0x52aa,0x52aa,0x630b,0x6b4c,0x52a9,0x632b,0x6b8c,0x5289,0x634c,0x7bee,0x6b8d,0x632b,0x73cd,0x632b,0x73ad,0x6b6c,0x5289,0x52aa,0x52a9,0x52a9,0x4a69,0x5289,0x4a68,0x52aa,0x4a69,0x4a89,0x630b,0x5289,0x4a68,0x4a69,0x4a69,0x4a89,0x4a48,0x4a68,0x4228,0x4207,0x4248,0x4228,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4a69,0x4a69,0x4248,0x4228,0x4228,0x3a07,0x4208,0x4228,0x4248,0x3a07,0x4207,0x4208,0x3a07,0x4228,0x4a69,0x5289,0x4a47,0x4206,0x5aea,0x52a9,0x4a68,0x3a07,0x5289,0x39e7,0x4228,0x4228,0x5289,0x4a69,0x4a69,0x4a49,0x4207,0x39c7, +0x3a07,0x4227,0x3a07,0x4207,0x39e7,0x39e7,0x4207,0x4227,0x4207,0x4227,0x3a07,0x39c6,0x3a07,0x3a07,0x4207,0x4207,0x3a07,0x3a07,0x4227,0x4227,0x4207,0x4a48,0x4a68,0x4268,0x4227,0x4248,0x4227,0x39e7,0x39e6,0x39e7,0x4a48,0x4207,0x39e7,0x39e7,0x4a68,0x3a07,0x31a6,0x4207,0x4a68,0x3a07,0x39e7,0x39c6,0x4227,0x31a6,0x4228,0x4227,0x4a48,0x4207,0x4247,0x52c9,0x4a67,0x4a68,0x39e7,0x4a88,0x4a48,0x4227,0x39e6,0x4a88,0x4227,0x39e7,0x4a68,0x4a68,0x39e6,0x4a48,0x31a6,0x4a48,0x39e6,0x4227,0x4a48,0x4a68,0x2965,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x31c6,0x3a07,0x3a27,0x4228,0x31e6,0x31c6,0x3a07,0x4228,0x4228,0x4227,0x3a07,0x39e7,0x3a07,0x4248,0x4248,0x3a08,0x31e7,0x31e7,0x3a07,0x39e7,0x31e6,0x31a6,0x39e7,0x39e7,0x4228,0x3a07,0x31c7,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x39c6,0x39e7,0x31c6,0x31c6,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x31c6,0x3a07,0x4248,0x39e7,0x39e7,0x4228,0x4227,0x39e6,0x4227,0x4207,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x3a27,0x3a07,0x3a28,0x4228,0x3a07,0x4248,0x4248,0x3a07,0x4228,0x4248,0x4228,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x3a07,0x39e7,0x3a28,0x4228,0x4228,0x3a07,0x39e7,0x3a28,0x3a27,0x4a68,0x4248,0x4228,0x4a69,0x4a89,0x4a69,0x4248,0x4a68,0x4a89,0x4a68,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a68,0x3a07,0x4a69,0x4248,0x4207,0x4a48,0x4a69,0x39e7,0x4a48,0x3a07,0x39e7,0x4228,0x4248,0x4227,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a89,0x4a69,0x4a48,0x4228,0x4a48,0x4228,0x39c6,0x4a89,0x4a48,0x4228,0x4248,0x4228,0x4228,0x4269,0x4248,0x4a69,0x4a69,0x4a69,0x4a49,0x528a,0x4248,0x4a69,0x528a,0x4248,0x5289,0x4a49,0x4228,0x4a89,0x528a,0x4a49,0x4a89,0x4a89,0x4208,0x4a89,0x52aa,0x4248,0x4a48,0x4a69,0x4208,0x4248,0x4248,0x4a68,0x4248,0x4228,0x4228,0x4a48,0x4228,0x4a69,0x632b,0x6b4c,0x630b,0x6b8c,0x73ad,0x6b6c,0x632b,0x6b6c,0x8c91,0x634c,0x5b0a,0x5b0a,0x7bee,0x6b8d,0x5aca,0x6b6c,0x5aea,0x5289,0x52a9,0x52a9,0x52a9,0x52ca,0x52a9,0x5aca,0x5aea,0x4a68,0x4228,0x4a69,0x4a89,0x4a69,0x4a69,0x4207,0x4a69,0x4228,0x4248,0x4a49,0x4208,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4248,0x4228,0x4228,0x4a69,0x4248,0x4a49,0x4a69,0x3a07,0x39e7,0x4228,0x4a69,0x4228,0x4207,0x4228,0x4a68,0x4a48,0x4227,0x632a,0x5ac8,0x5288,0x39c6,0x4207,0x4248,0x39e7,0x3a07,0x4a49,0x4a69,0x4207,0x4207,0x4228,0x31c7, +0x4227,0x4a89,0x4248,0x39e6,0x39c6,0x4207,0x4a48,0x4248,0x39c6,0x4227,0x4228,0x4228,0x4207,0x4a68,0x39e7,0x39e6,0x4a68,0x4227,0x4227,0x4248,0x3a07,0x39e7,0x4a68,0x4268,0x4a68,0x4227,0x4207,0x39e6,0x4228,0x3a07,0x39c6,0x39c6,0x3a07,0x31c6,0x4248,0x4227,0x31c6,0x39e7,0x31a6,0x39e6,0x39e7,0x31a6,0x39e7,0x39e7,0x39c7,0x39c6,0x4227,0x39e7,0x31c6,0x4227,0x39e6,0x4a68,0x3a07,0x4a48,0x4227,0x4228,0x4227,0x39e6,0x3a07,0x39e7,0x3a07,0x4248,0x31a6,0x4227,0x31a6,0x39e7,0x31c6,0x4207,0x4227,0x4a68,0x3a07,0x39e7,0x31c6,0x31c6,0x39e7,0x3a07,0x39e7,0x4227,0x3a07,0x3a07,0x4248,0x4227,0x3a07,0x4207,0x3a07,0x3a07,0x4228,0x4227,0x3a07,0x3a07,0x3a27,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x4228,0x3a28,0x3a07,0x39e7,0x4228,0x3a07,0x4248,0x3a07,0x39e7,0x31c6,0x39e7,0x3a07,0x39c6,0x31c6,0x3a07,0x31e7,0x39e7,0x3a28,0x31c6,0x39e7,0x31c6,0x3a07,0x4228,0x4248,0x3a07,0x3a07,0x3a08,0x4248,0x3a07,0x39e7,0x4228,0x3a07,0x3a07,0x31e6,0x4248,0x4227,0x3a07,0x4227,0x4248,0x39e7,0x4228,0x4227,0x3a07,0x39e7,0x39e7,0x3a07,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x31e6,0x39e7,0x4228,0x39e7,0x4208,0x3a07,0x4248,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x4248,0x4a48,0x4248,0x4248,0x4a48,0x52aa,0x4248,0x4a48,0x4228,0x4248,0x4248,0x4248,0x4248,0x4a48,0x4228,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4228,0x4228,0x3a07,0x4a69,0x3a07,0x4228,0x39e7,0x3a07,0x4227,0x4228,0x4228,0x4228,0x4207,0x4228,0x4228,0x4228,0x4a69,0x4a49,0x4a69,0x4228,0x4248,0x4a49,0x39e7,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4208,0x4a49,0x4a69,0x52aa,0x4248,0x4a69,0x4a69,0x4a89,0x5aeb,0x4269,0x528a,0x52aa,0x3a07,0x52aa,0x4a69,0x5289,0x4a89,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x5acb,0x6b4c,0x4a48,0x52a9,0x6b6c,0x5aea,0x4a69,0x4a69,0x52aa,0x52ca,0x52ca,0x4a69,0x4a68,0x4a89,0x4a68,0x5aca,0x632b,0x4a69,0x5aea,0x5aeb,0x52a9,0x630b,0x52aa,0x632c,0x5aea,0x632b,0x634c,0x4a69,0x5289,0x5289,0x4248,0x4a48,0x4a89,0x4a69,0x4a49,0x4a48,0x4228,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x4a89,0x4228,0x4a89,0x528a,0x4228,0x4208,0x3a08,0x4228,0x4228,0x4a69,0x4a69,0x39e7,0x4a69,0x4228,0x4a48,0x52a9,0x52ca,0x4a48,0x4a68,0x5289,0x4228,0x4228,0x4228,0x4a48,0x4a69,0x4228,0x39c6,0x3a07,0x4228,0x4228,0x39e7, +0x4227,0x4a48,0x4a68,0x4a48,0x4227,0x4a48,0x4247,0x4247,0x4228,0x4a48,0x4228,0x4248,0x4248,0x4248,0x4a68,0x4227,0x4227,0x39c6,0x3a07,0x4207,0x4207,0x4227,0x3a07,0x4227,0x4a69,0x4207,0x4228,0x39e6,0x39e6,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x4248,0x4207,0x31c6,0x39c6,0x2964,0x3a07,0x4228,0x31a6,0x39e7,0x3a07,0x39e7,0x39e7,0x4207,0x4228,0x39e7,0x3a07,0x39e7,0x39c6,0x4207,0x3a07,0x3a27,0x39e6,0x4207,0x4227,0x4248,0x3a07,0x31e6,0x31c6,0x3a07,0x31c6,0x3a07,0x39e6,0x31c6,0x39e7,0x31c6,0x31c6,0x3a07,0x39e7,0x4228,0x4207,0x3a07,0x3a07,0x31a6,0x4207,0x4227,0x3a07,0x3a27,0x39e7,0x39c6,0x39e6,0x31c6,0x4227,0x4248,0x3a07,0x3a27,0x4228,0x4a68,0x3a28,0x31c6,0x39c7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a27,0x3a07,0x3a07,0x4a69,0x4228,0x39e7,0x39e7,0x3a07,0x31c6,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x31c6,0x31c6,0x4228,0x4248,0x4228,0x3a28,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x4207,0x4227,0x4227,0x4207,0x4228,0x3a07,0x4a48,0x4207,0x31a6,0x4228,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x4228,0x4228,0x4228,0x39e7,0x3a28,0x3a07,0x4228,0x4268,0x3a07,0x3a28,0x3a07,0x3a07,0x4a69,0x4a49,0x4228,0x3a07,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4207,0x4248,0x4a69,0x4a48,0x4a68,0x4a68,0x4248,0x4228,0x4228,0x4248,0x4228,0x4228,0x4a48,0x4a49,0x4228,0x4a68,0x4248,0x4228,0x4a69,0x4248,0x4248,0x4228,0x4228,0x3a08,0x4248,0x4a49,0x4208,0x4207,0x4228,0x4a48,0x4228,0x4248,0x4a69,0x4228,0x3a07,0x4228,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4a8a,0x4249,0x4a69,0x4248,0x4269,0x4a69,0x4a68,0x4a69,0x4a89,0x4248,0x4a69,0x4a69,0x4a89,0x4a69,0x4a48,0x4a89,0x4249,0x4a89,0x4a89,0x5289,0x4228,0x4248,0x4269,0x4248,0x4a89,0x528a,0x4a48,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a48,0x4a69,0x4a69,0x52ca,0x52ca,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x52aa,0x52ca,0x4249,0x4228,0x52aa,0x4228,0x4a69,0x5289,0x528a,0x4a69,0x4228,0x52aa,0x5289,0x4248,0x4228,0x4a48,0x4a69,0x4a69,0x4228,0x4a69,0x4a48,0x4228,0x4a69,0x4a69,0x52a9,0x4a69,0x4a69,0x4a69,0x4a48,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x4a89,0x4207,0x4a69,0x4a69,0x39e7,0x4a69,0x3a07,0x4228,0x4228,0x39e7,0x4228,0x39e7,0x4a48,0x4248,0x4208,0x4a48,0x4228,0x39e7,0x4227,0x52a9,0x4248,0x4a49,0x5289,0x4228,0x4228,0x4a48,0x52aa,0x4a69,0x4207,0x39e7,0x39e7,0x4a89,0x4228,0x39e7, +0x39e7,0x31c6,0x4227,0x4227,0x4a48,0x4a48,0x4227,0x4227,0x3a07,0x4248,0x39e7,0x3a07,0x4228,0x3a07,0x4228,0x4227,0x52a9,0x5289,0x3a07,0x39e7,0x3a07,0x4227,0x4248,0x4248,0x4228,0x39e7,0x4228,0x39e7,0x3a07,0x39e7,0x4207,0x4227,0x4227,0x39c6,0x4207,0x4227,0x4248,0x4228,0x4227,0x3a07,0x3a07,0x3a07,0x4207,0x39e6,0x39e7,0x4227,0x3a07,0x3a07,0x3a07,0x39e7,0x4227,0x4248,0x3a07,0x39e7,0x31a6,0x4227,0x4227,0x4207,0x31c6,0x4227,0x4a68,0x39e6,0x4227,0x3a07,0x39e7,0x39e6,0x3a07,0x39e7,0x39c6,0x4207,0x39e6,0x3a07,0x4228,0x4248,0x4227,0x3a07,0x31c6,0x39e7,0x4227,0x4227,0x4228,0x4207,0x4207,0x4227,0x3a07,0x4248,0x4268,0x4228,0x4228,0x39e7,0x4228,0x4268,0x3a07,0x39e7,0x3a28,0x4228,0x3a28,0x3a07,0x4248,0x3a07,0x3a07,0x3a07,0x4228,0x31c6,0x39e7,0x39e7,0x4228,0x3185,0x3a27,0x4248,0x3a07,0x39e7,0x3a07,0x4228,0x4227,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4a68,0x3a07,0x4228,0x3a07,0x4228,0x4227,0x4227,0x4228,0x4248,0x4228,0x4228,0x4208,0x4228,0x3a27,0x3a07,0x4228,0x4248,0x39e7,0x39e7,0x4228,0x4a69,0x4208,0x4208,0x4208,0x3a07,0x4248,0x4a48,0x4228,0x4228,0x4248,0x4248,0x4248,0x4a48,0x4a68,0x52a9,0x4227,0x4227,0x4a48,0x4a68,0x4248,0x4228,0x4248,0x4248,0x4a89,0x4a48,0x4248,0x4a89,0x4248,0x4a69,0x4a48,0x4a69,0x4a69,0x4248,0x4a49,0x4248,0x4a68,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a89,0x4248,0x4248,0x4a48,0x4a69,0x4a69,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4a49,0x4a89,0x4a69,0x52aa,0x4a69,0x4a49,0x4a69,0x5aeb,0x52a9,0x4a89,0x4228,0x4207,0x4228,0x4a69,0x52aa,0x4a8a,0x4a89,0x4a49,0x52aa,0x4248,0x4248,0x4248,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x39e7,0x4248,0x4a69,0x5289,0x4a89,0x4a49,0x4248,0x4a69,0x4a89,0x4a89,0x4228,0x4a48,0x4a48,0x4a48,0x52aa,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4a89,0x5289,0x4a49,0x4228,0x4208,0x4a69,0x4a69,0x4a69,0x4a89,0x4228,0x4a69,0x4a89,0x4228,0x4248,0x4208,0x4a48,0x52aa,0x4228,0x4228,0x4a89,0x4a89,0x528a,0x4a69,0x4a49,0x4a89,0x4228,0x4228,0x4a69,0x4269,0x5aeb,0x4a89,0x4228,0x4a69,0x4228,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4a69,0x52aa,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4228,0x4207,0x4228,0x4a89,0x4228,0x4208,0x4228,0x39e7,0x4a49,0x5289,0x4a48,0x4227,0x39e7,0x3a07,0x3a07, +0x4207,0x39c7,0x4248,0x4248,0x4227,0x4207,0x3a07,0x4207,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4207,0x4a68,0x4227,0x4a88,0x4a48,0x39e7,0x3a07,0x4207,0x3a07,0x4208,0x4a48,0x4227,0x4207,0x4248,0x39e7,0x4207,0x39e7,0x39e6,0x4a48,0x4227,0x39e7,0x4227,0x4a68,0x4227,0x3a07,0x3a07,0x4227,0x3a07,0x4227,0x3a07,0x3a07,0x4227,0x4248,0x4227,0x4227,0x4227,0x4227,0x39e7,0x4227,0x4248,0x4248,0x4a68,0x4227,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4227,0x39e7,0x31c6,0x39e7,0x3a07,0x4228,0x4a69,0x3a07,0x4248,0x4207,0x39e7,0x3a07,0x31a6,0x39e6,0x4207,0x4228,0x3a07,0x4248,0x4a68,0x4228,0x4227,0x39e6,0x3a07,0x3a07,0x4227,0x4248,0x4228,0x39e7,0x4228,0x3a07,0x3a07,0x3a27,0x4228,0x4228,0x3a07,0x4248,0x4228,0x4248,0x3a07,0x3a07,0x3a07,0x39e7,0x39c6,0x39e7,0x31a6,0x39e7,0x31c6,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a07,0x4248,0x4228,0x3a08,0x4228,0x4228,0x4227,0x4248,0x3a27,0x3a07,0x3a27,0x4269,0x4248,0x4228,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4227,0x4248,0x4228,0x4228,0x4248,0x3a07,0x4207,0x4248,0x4a69,0x3a07,0x4228,0x4a69,0x4248,0x4228,0x4a69,0x4228,0x4207,0x4228,0x4228,0x4a68,0x3a07,0x4228,0x4248,0x4228,0x4248,0x4208,0x4248,0x4a69,0x4a89,0x4a68,0x4a69,0x4a48,0x52a8,0x4a68,0x4228,0x4248,0x4248,0x4a89,0x4a68,0x4227,0x4a88,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4a69,0x4a89,0x4a49,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4a48,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4248,0x4a49,0x4a89,0x4228,0x4228,0x4a89,0x4248,0x4249,0x4a89,0x4a69,0x4a49,0x4228,0x4248,0x4a89,0x4a89,0x4228,0x4aaa,0x4248,0x4a89,0x52eb,0x4248,0x4a69,0x4a89,0x52aa,0x4a48,0x4a48,0x4248,0x4a69,0x4228,0x4a69,0x52ca,0x4a49,0x4a49,0x4a89,0x52aa,0x4a69,0x4228,0x4a48,0x4248,0x4a89,0x4a69,0x4a69,0x4248,0x4a48,0x4a69,0x4a69,0x4a69,0x52aa,0x52aa,0x52ca,0x4a69,0x4248,0x4a48,0x4228,0x4228,0x4a69,0x4a69,0x528a,0x4a69,0x4228,0x4a49,0x4a69,0x5289,0x4a69,0x4a89,0x52aa,0x5289,0x528a,0x4a69,0x4a89,0x4a89,0x4248,0x4248,0x4a89,0x4a69,0x4a89,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4228,0x4248,0x4a49,0x4a49,0x4228,0x4228,0x4208,0x4a48,0x4208,0x4248,0x39e7,0x4208,0x4228,0x4a48,0x4a49,0x5289,0x4228,0x4228,0x39e7,0x4248,0x4a48, +0x4a48,0x4207,0x4227,0x4248,0x4a68,0x4a68,0x4a68,0x4a48,0x4248,0x4248,0x4228,0x4207,0x4228,0x4a88,0x4228,0x39c7,0x4a68,0x4a68,0x4207,0x31a6,0x4227,0x4a69,0x4227,0x39c6,0x4228,0x4228,0x39e7,0x4207,0x4207,0x4a68,0x4248,0x4228,0x4227,0x3a07,0x4207,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4227,0x4227,0x3a07,0x4227,0x3a07,0x4227,0x4227,0x4a48,0x4a69,0x4248,0x4248,0x4228,0x4a68,0x4a68,0x4248,0x3a07,0x4228,0x4268,0x4a68,0x3a07,0x3a07,0x4228,0x31c6,0x3a07,0x3a07,0x4207,0x39e7,0x39e6,0x3a07,0x39e6,0x4227,0x3a07,0x3a07,0x39c6,0x39c6,0x39e7,0x4248,0x3a07,0x3a27,0x4248,0x4227,0x4207,0x4248,0x3a07,0x4228,0x4a69,0x39e7,0x4228,0x4227,0x4248,0x4248,0x4248,0x4228,0x3a27,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x4208,0x4228,0x4248,0x4227,0x39e7,0x3a07,0x3a07,0x4228,0x4208,0x3a07,0x4248,0x39e7,0x31e6,0x4248,0x4248,0x4248,0x4228,0x4248,0x3a07,0x39e7,0x39e7,0x3a27,0x4227,0x4207,0x3a27,0x3a07,0x4268,0x4228,0x4228,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4a68,0x4228,0x39e6,0x4207,0x4248,0x4248,0x4227,0x4248,0x4207,0x4248,0x4248,0x4248,0x4a89,0x4228,0x4a69,0x4269,0x4248,0x4227,0x4a68,0x4a68,0x4248,0x4248,0x4228,0x4a48,0x4a48,0x4228,0x4a69,0x4228,0x4a68,0x4a68,0x4a68,0x4a69,0x5289,0x4a68,0x4248,0x4207,0x4228,0x5289,0x4a89,0x4a48,0x52a9,0x4a68,0x4a89,0x4a48,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4228,0x4a69,0x4a48,0x4a69,0x4a89,0x4a69,0x4a48,0x4a89,0x5289,0x5289,0x4a89,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x5289,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x528a,0x4a89,0x52aa,0x4a69,0x4a69,0x528a,0x4248,0x4a69,0x4a89,0x4228,0x4249,0x4228,0x4a89,0x4a69,0x4228,0x4a69,0x4a89,0x528a,0x4a89,0x4a69,0x4269,0x4a69,0x5b0b,0x52ca,0x4a89,0x4a89,0x528a,0x4a89,0x52aa,0x4a48,0x52aa,0x5289,0x4248,0x4a69,0x4a69,0x4a48,0x4228,0x4248,0x4248,0x4228,0x4a48,0x4248,0x4a89,0x52aa,0x5289,0x4a89,0x52aa,0x52aa,0x52aa,0x4a49,0x4a89,0x4a89,0x4268,0x4a89,0x4248,0x4a69,0x528a,0x4228,0x4a69,0x4248,0x4228,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x5289,0x52ca,0x4a89,0x4a68,0x4a48,0x4a48,0x4a69,0x4a69,0x5289,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x52aa,0x4a89,0x4a89,0x4a48,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4227,0x4a89,0x52aa,0x4a69,0x4a69,0x5289,0x4228,0x4228,0x4228,0x4207,0x4208,0x4a48,0x4228,0x4208,0x4248,0x3a08,0x3a08,0x52aa,0x4a69,0x4a48,0x4a48,0x4a49,0x4207,0x3a07,0x4a49, +0x3a07,0x3a07,0x4a69,0x4a48,0x4227,0x4a48,0x4248,0x4a48,0x4a89,0x5289,0x4a48,0x4228,0x4a68,0x5289,0x39e6,0x4248,0x4a89,0x5289,0x4248,0x4248,0x4228,0x4a48,0x4a48,0x4248,0x4207,0x4227,0x4248,0x3a07,0x4248,0x4227,0x4207,0x4207,0x4248,0x4227,0x4a69,0x39e7,0x39e7,0x3a07,0x4248,0x4228,0x4227,0x4228,0x4228,0x4248,0x4a69,0x4207,0x4248,0x4248,0x4208,0x4248,0x4268,0x3a07,0x4a89,0x4248,0x4a68,0x4207,0x4a48,0x4248,0x4207,0x3a07,0x4247,0x3a07,0x4207,0x4248,0x4248,0x3a07,0x4227,0x39e7,0x31e6,0x4248,0x3a07,0x39e7,0x4207,0x3a07,0x4207,0x4228,0x4228,0x31c6,0x4228,0x4227,0x4a48,0x4228,0x4227,0x3a07,0x3a07,0x4228,0x3a07,0x4248,0x4228,0x3a27,0x4a68,0x4228,0x3a07,0x31c6,0x3a27,0x4228,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x4228,0x4228,0x3a07,0x39e6,0x3a07,0x31e6,0x39e7,0x4228,0x4228,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4248,0x4248,0x39e7,0x4228,0x4228,0x4248,0x4248,0x4248,0x4a69,0x4268,0x4268,0x4248,0x4227,0x3a07,0x4207,0x4207,0x4227,0x4268,0x4268,0x4248,0x4248,0x4268,0x4227,0x4268,0x4a89,0x4a48,0x4207,0x4248,0x4228,0x4a68,0x4a68,0x4248,0x4248,0x4248,0x4248,0x4a68,0x4227,0x4248,0x4a49,0x4228,0x4248,0x4a89,0x4a48,0x4a69,0x4a68,0x4248,0x4a68,0x4228,0x4a69,0x52aa,0x4a68,0x4a68,0x52a8,0x4a89,0x4a69,0x4a48,0x4a69,0x4a68,0x4a89,0x52a9,0x4248,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x5289,0x4a89,0x4a69,0x4228,0x4a48,0x4248,0x4a8a,0x4a69,0x4a49,0x4a89,0x4a89,0x4a69,0x4248,0x4a69,0x52aa,0x4aaa,0x4a89,0x4a69,0x528a,0x52aa,0x4a89,0x4a89,0x52aa,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x52aa,0x52aa,0x4a69,0x4a69,0x4a89,0x52cb,0x4228,0x4a89,0x4a69,0x5289,0x4a89,0x52a9,0x52aa,0x5289,0x5289,0x4a69,0x52aa,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4228,0x5aca,0x52aa,0x4a69,0x4a89,0x52aa,0x52ca,0x52ca,0x52aa,0x528a,0x4a69,0x4a89,0x4a48,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4a89,0x4228,0x4a69,0x4a48,0x4228,0x4a89,0x4a69,0x4a69,0x4248,0x4a48,0x4a89,0x4a89,0x4a69,0x4a49,0x52aa,0x4a69,0x4a69,0x5289,0x4248,0x4a48,0x4228,0x4a69,0x4a69,0x4a49,0x4a69,0x4248,0x4a89,0x4a69,0x4a89,0x52aa,0x4248,0x4a69,0x3a07,0x4228,0x4a69,0x4228,0x4248,0x4a48,0x3a07,0x4248,0x4207,0x4228,0x4a48,0x4248,0x4228,0x4249,0x4248,0x39e7,0x4208,0x4228,0x4a48,0x4207,0x3a07,0x39e7, +0x4248,0x4a68,0x4a68,0x4248,0x3a07,0x4a68,0x4a68,0x4228,0x4248,0x4a68,0x4a48,0x4248,0x4228,0x4a68,0x4207,0x4248,0x4a69,0x4207,0x4a89,0x4248,0x4a69,0x4248,0x3a07,0x4228,0x4a48,0x3a07,0x31c6,0x3a07,0x4227,0x39e6,0x39c6,0x4207,0x4207,0x3a07,0x4207,0x4207,0x39e7,0x3a07,0x4228,0x39e7,0x4207,0x4207,0x4207,0x4248,0x4a68,0x4a68,0x4248,0x4a48,0x3a07,0x4248,0x4248,0x4227,0x4248,0x4248,0x4228,0x3a07,0x4207,0x4248,0x4227,0x4248,0x4a88,0x3a27,0x3a07,0x39e7,0x4a68,0x4207,0x39e7,0x4227,0x4228,0x39e7,0x39e7,0x4248,0x39e7,0x31a6,0x39e7,0x4207,0x39e7,0x39e7,0x3a07,0x4227,0x4248,0x4228,0x4228,0x4228,0x4228,0x4227,0x4248,0x3a07,0x4248,0x4248,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x4228,0x4228,0x31e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4a48,0x3a07,0x39e7,0x3a27,0x3a07,0x3a27,0x4227,0x4248,0x4228,0x4228,0x4207,0x3a07,0x3a07,0x4228,0x4248,0x4228,0x4227,0x4207,0x4248,0x4228,0x4228,0x4a68,0x3a07,0x4248,0x4248,0x4268,0x4268,0x4227,0x4248,0x4a69,0x4a68,0x4248,0x4248,0x4227,0x4268,0x4268,0x4248,0x4a68,0x4a69,0x4248,0x4a69,0x4248,0x4a68,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4a89,0x4a68,0x4248,0x4a48,0x4a69,0x4a48,0x4a69,0x4a68,0x4a69,0x4a68,0x5aea,0x4a68,0x4248,0x4248,0x4a89,0x4a69,0x4a69,0x52a9,0x52a9,0x4a69,0x52a9,0x4a89,0x5289,0x4a68,0x4a69,0x4a68,0x4a48,0x4228,0x4a69,0x4a68,0x4a89,0x4a48,0x4a48,0x5289,0x4248,0x4a89,0x4a69,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4248,0x52aa,0x4a69,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x52ca,0x52aa,0x4a69,0x4a69,0x52aa,0x52aa,0x4a89,0x4a89,0x4a69,0x4a89,0x5289,0x52aa,0x4a48,0x4a89,0x4a89,0x4a89,0x4a8a,0x52ca,0x5aca,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x52aa,0x4a69,0x528a,0x52aa,0x4a89,0x4a89,0x5289,0x52aa,0x4a89,0x528a,0x4a89,0x52aa,0x52ca,0x4a89,0x4a69,0x52aa,0x52aa,0x52ca,0x4a49,0x52aa,0x4a69,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4a69,0x4228,0x4a89,0x4a49,0x5289,0x4a69,0x4248,0x4a69,0x5289,0x4a89,0x4a69,0x4a69,0x4a68,0x5289,0x4a48,0x4a89,0x4a89,0x4a69,0x5289,0x4a89,0x4a89,0x4248,0x4a89,0x4a69,0x4228,0x4a69,0x4a49,0x4a89,0x4269,0x4248,0x4228,0x52aa,0x4a69,0x4a48,0x4a89,0x3a08,0x4a48,0x4a69,0x4228,0x4a69,0x4228,0x4a48,0x4a89,0x39c7,0x4228,0x4228,0x31c7,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x4228,0x4207,0x3a07,0x39e7, +0x4a69,0x4248,0x3a07,0x4207,0x4208,0x4a48,0x4a48,0x4248,0x4248,0x4a48,0x4a48,0x4247,0x4227,0x4227,0x4228,0x4207,0x4a68,0x4227,0x4a68,0x4248,0x4a68,0x4a68,0x4228,0x4248,0x3a07,0x4227,0x4a89,0x4248,0x39e6,0x4228,0x39e6,0x4207,0x4228,0x4248,0x4248,0x4207,0x4207,0x39e7,0x3a07,0x4207,0x39e7,0x4a68,0x4248,0x4248,0x4227,0x4a89,0x4248,0x4a89,0x4a68,0x4a48,0x3a07,0x4248,0x4a89,0x3a07,0x4a48,0x4a48,0x4207,0x4207,0x4248,0x4a68,0x4268,0x4227,0x4228,0x4a89,0x4227,0x3a07,0x4228,0x4227,0x39e7,0x39e7,0x3a07,0x39e6,0x31a5,0x39e7,0x4207,0x39c7,0x39e7,0x4228,0x4227,0x4227,0x39e7,0x31c6,0x4228,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4228,0x39e7,0x3a07,0x4228,0x3a27,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x4228,0x31c6,0x3a07,0x4227,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x4227,0x3a07,0x4228,0x4248,0x4228,0x4207,0x3a07,0x3a07,0x4248,0x4a69,0x4228,0x4248,0x4248,0x4228,0x4228,0x4a69,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4a89,0x3a07,0x4a68,0x4a68,0x4228,0x4268,0x4a69,0x4268,0x4a89,0x4a68,0x4248,0x4a48,0x4a69,0x4a89,0x4248,0x4248,0x4a69,0x4a69,0x3a27,0x4a68,0x4248,0x4248,0x4a69,0x4a68,0x4a89,0x4228,0x4228,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4a68,0x52c9,0x52a9,0x5289,0x4a68,0x4a89,0x4a68,0x4a68,0x5ac9,0x5289,0x4a69,0x4a89,0x4a69,0x4a69,0x4a89,0x4a68,0x4a69,0x4a69,0x4a48,0x4a69,0x4a89,0x4a89,0x4a48,0x4228,0x4228,0x4249,0x4a89,0x4248,0x4a48,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x52aa,0x4a89,0x4248,0x52aa,0x5289,0x528a,0x4a69,0x4a89,0x4a89,0x4a89,0x4a48,0x5289,0x5aeb,0x4a89,0x4a89,0x5289,0x4a69,0x4a89,0x4a89,0x4a69,0x52ea,0x4248,0x5b0b,0x5b0b,0x4a69,0x528a,0x4a69,0x52ca,0x52aa,0x4a49,0x52aa,0x52aa,0x5289,0x52aa,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x52aa,0x4a89,0x5289,0x52ca,0x4a89,0x5289,0x4a89,0x4a89,0x5aeb,0x52aa,0x5b2c,0x52ca,0x4a89,0x52aa,0x5289,0x52aa,0x5aeb,0x4a89,0x528a,0x528a,0x52aa,0x4a48,0x4a69,0x4a69,0x4a49,0x4a69,0x4248,0x4249,0x5289,0x4a69,0x4a69,0x4a89,0x4a89,0x52aa,0x528a,0x4a69,0x5289,0x4a69,0x4a69,0x52aa,0x5289,0x5aca,0x52ca,0x52aa,0x4248,0x4a48,0x4a69,0x4a69,0x4a69,0x4a68,0x4228,0x4a69,0x5289,0x4a69,0x4a69,0x4a69,0x4228,0x52aa,0x4a48,0x4a69,0x4a69,0x4a69,0x4a69,0x4249,0x4228,0x31c6,0x4a69,0x3a07,0x39e7,0x4a69,0x4228,0x4a69,0x4208,0x39e7,0x4a48,0x528a,0x4228, +0x4228,0x4207,0x4248,0x4248,0x4a68,0x4207,0x4248,0x4207,0x4a68,0x4a48,0x4248,0x4228,0x4a68,0x4248,0x4227,0x4228,0x4228,0x4268,0x4a48,0x4a48,0x4228,0x5289,0x4228,0x4228,0x4a68,0x4248,0x4a89,0x4227,0x3a07,0x4248,0x4248,0x3a07,0x4a68,0x4248,0x4228,0x4227,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4a89,0x52a9,0x4228,0x4248,0x4248,0x4227,0x4a89,0x3a27,0x4248,0x4247,0x4248,0x3a07,0x4227,0x4227,0x4248,0x4a68,0x4228,0x4248,0x4a89,0x4268,0x4a68,0x4a69,0x3a07,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x39e7,0x4248,0x4248,0x39e7,0x31a6,0x39e7,0x4a48,0x4248,0x4a69,0x39e7,0x4228,0x3a28,0x4249,0x4228,0x4248,0x4248,0x4248,0x3a07,0x4a68,0x4228,0x39e7,0x4228,0x4228,0x39e7,0x39e7,0x4228,0x4248,0x39e7,0x3a07,0x4248,0x3a07,0x3a07,0x39e7,0x3a07,0x31e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x4248,0x3a27,0x4268,0x4228,0x4a68,0x4228,0x39e7,0x39e7,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4a48,0x4248,0x4248,0x4268,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4227,0x4228,0x4268,0x4268,0x4248,0x4a68,0x4248,0x4a89,0x4a89,0x4248,0x4248,0x4a68,0x4227,0x4248,0x4248,0x4228,0x4a69,0x4248,0x4a48,0x4228,0x4248,0x4268,0x4a69,0x4a69,0x4a89,0x4248,0x4a89,0x4a89,0x4aa9,0x52a9,0x4227,0x52c9,0x52a8,0x4a48,0x4a68,0x52a9,0x5288,0x4a68,0x4a89,0x4a89,0x4a69,0x4a69,0x5289,0x4a89,0x4248,0x4a69,0x4a89,0x4248,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a68,0x52aa,0x4248,0x4a48,0x4a69,0x4a89,0x4a8a,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4228,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5b2c,0x52aa,0x5289,0x4a89,0x4a48,0x4a49,0x4a49,0x4aaa,0x52aa,0x4a8a,0x5aeb,0x5aeb,0x52aa,0x4a69,0x52eb,0x632c,0x4a69,0x52aa,0x4a89,0x4a49,0x528a,0x4a69,0x4a69,0x4a69,0x4a89,0x52ca,0x4a69,0x4248,0x5289,0x4a89,0x4a89,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x52a9,0x4a69,0x4a89,0x4a69,0x4a89,0x52aa,0x52aa,0x4a89,0x4a89,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x5aca,0x52aa,0x4a69,0x4a68,0x5289,0x4a89,0x4228,0x5289,0x52aa,0x528a,0x4a69,0x4a89,0x52ca,0x4a89,0x5289,0x52aa,0x52a9,0x52ca,0x4a69,0x4a68,0x4a89,0x52aa,0x52a9,0x4a89,0x4a48,0x528a,0x4a48,0x52aa,0x52aa,0x4a68,0x4a69,0x52aa,0x4a89,0x4a69,0x4a69,0x4248,0x4a89,0x4a48,0x4a89,0x52aa,0x4a69,0x4a28,0x4228,0x4a69,0x4a49,0x4248,0x4268,0x3a07,0x3a07,0x528a,0x4a69,0x4a48,0x4a48,0x4a89,0x4a69,0x39c6,0x4228,0x528a,0x4228, +0x4248,0x4248,0x4248,0x4a69,0x4a68,0x4a89,0x4a68,0x4248,0x4207,0x4a48,0x4228,0x4228,0x4248,0x3a07,0x4228,0x4207,0x4228,0x4248,0x39e6,0x4248,0x4248,0x4248,0x4228,0x4a48,0x4a68,0x4a68,0x4a48,0x4a48,0x4a68,0x4a68,0x4228,0x4248,0x4248,0x4227,0x4228,0x4a69,0x4207,0x4227,0x4228,0x4248,0x4248,0x4248,0x4248,0x4207,0x4228,0x4a48,0x4a68,0x4227,0x4a68,0x4248,0x4227,0x4a68,0x4a68,0x4a68,0x39e6,0x4268,0x4248,0x4248,0x4a48,0x52a9,0x4a68,0x3a07,0x3a07,0x4228,0x4248,0x4a89,0x3a07,0x4248,0x4228,0x4227,0x4228,0x4248,0x3a07,0x4227,0x4a68,0x3a27,0x31c6,0x3a07,0x4248,0x4228,0x4248,0x4a68,0x4269,0x4228,0x4228,0x4a69,0x4a69,0x4227,0x4248,0x3a07,0x4207,0x4248,0x4228,0x4248,0x3a28,0x4228,0x4228,0x3a07,0x39e7,0x4228,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4248,0x4248,0x4268,0x4248,0x3a07,0x4248,0x4a68,0x3a07,0x3a07,0x4a68,0x4a69,0x3a07,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4227,0x4227,0x4228,0x4248,0x4a89,0x4227,0x4268,0x4268,0x4a69,0x4248,0x3a07,0x3a27,0x4268,0x4248,0x4a69,0x4a68,0x4a68,0x4248,0x4268,0x4a69,0x4248,0x4a48,0x4228,0x4a68,0x4a89,0x4a68,0x4228,0x4a68,0x4a89,0x4248,0x4a69,0x4a69,0x4a48,0x4a48,0x4a69,0x52ca,0x4aa9,0x4a89,0x52a9,0x5289,0x4228,0x4a89,0x52c9,0x52a9,0x52a9,0x4a89,0x52a9,0x4a69,0x5289,0x4a69,0x4a69,0x4a89,0x4a69,0x5289,0x5289,0x52a9,0x4a69,0x4a89,0x52a9,0x4a48,0x52aa,0x4a89,0x4a89,0x52a9,0x4a48,0x4a69,0x4aaa,0x4a89,0x52aa,0x52a9,0x5289,0x4a89,0x4248,0x4a69,0x4a69,0x4a49,0x4a69,0x52a9,0x4a89,0x52aa,0x4a69,0x528a,0x4a89,0x4aa9,0x4a89,0x528a,0x4a89,0x4a89,0x528a,0x52ca,0x528a,0x52aa,0x52aa,0x52ca,0x5b0b,0x5b0b,0x4a89,0x5289,0x52aa,0x4a89,0x528a,0x52aa,0x4a69,0x4a49,0x52aa,0x5aeb,0x4a48,0x5289,0x52a9,0x52a9,0x4a89,0x4a89,0x4a89,0x52aa,0x4a69,0x528a,0x5289,0x52aa,0x52aa,0x528a,0x4a69,0x52ca,0x52ca,0x52ca,0x5289,0x4a89,0x52aa,0x4a48,0x52ca,0x52aa,0x52ca,0x4a89,0x52aa,0x4a69,0x5aea,0x5aca,0x4a89,0x5289,0x52aa,0x52aa,0x4a89,0x4a89,0x52aa,0x4a69,0x4a68,0x5289,0x52a9,0x52aa,0x52aa,0x4a89,0x52aa,0x4a89,0x4a68,0x52aa,0x4a89,0x4a48,0x4a48,0x52aa,0x4a89,0x4a89,0x4a48,0x52aa,0x5aca,0x528a,0x4a69,0x4a69,0x4a48,0x4a69,0x5289,0x5289,0x4228,0x4208,0x5289,0x5289,0x4a69,0x4248,0x4228,0x4228,0x4208,0x39e7,0x4a89,0x528a,0x4208,0x4228,0x4228,0x4a49,0x4208,0x4248,0x4228,0x4228, +0x3a07,0x4227,0x3a07,0x4227,0x4a69,0x4a89,0x4a68,0x4a68,0x4a69,0x39e7,0x4a48,0x4248,0x4a69,0x4a48,0x4a68,0x4248,0x4a89,0x4a68,0x4227,0x4a68,0x4228,0x3a07,0x4a48,0x4227,0x4227,0x39e7,0x4227,0x4248,0x4a68,0x4a48,0x39e7,0x3a07,0x4a48,0x3a07,0x4228,0x4a69,0x4248,0x3a07,0x31c6,0x4a69,0x4a68,0x4248,0x4248,0x4248,0x4207,0x4248,0x4a68,0x4248,0x4a89,0x4248,0x4a68,0x3a07,0x4a48,0x4227,0x4268,0x4a68,0x52a9,0x4248,0x4248,0x4228,0x4a48,0x4a48,0x3a07,0x4228,0x4227,0x4227,0x4a69,0x3a07,0x4248,0x3a07,0x3a07,0x4207,0x3a27,0x4a69,0x4268,0x4227,0x4a68,0x4268,0x4228,0x4248,0x4248,0x4a69,0x4248,0x3a07,0x4248,0x4248,0x4228,0x4a48,0x3a07,0x3a07,0x4248,0x4207,0x4207,0x4248,0x4228,0x3a28,0x3a07,0x3a07,0x39e7,0x3a07,0x4248,0x4248,0x3a07,0x4248,0x3a07,0x3a07,0x4268,0x4207,0x39e7,0x3a27,0x4248,0x39e7,0x3a07,0x4228,0x4248,0x4248,0x3a28,0x3a27,0x4268,0x4227,0x4248,0x4228,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4207,0x4248,0x4248,0x4a89,0x4a89,0x3a27,0x4248,0x4268,0x4248,0x4207,0x4248,0x4a89,0x4a89,0x4227,0x4a68,0x4a68,0x4a69,0x4a69,0x4a68,0x4a68,0x4248,0x4a68,0x4a68,0x4228,0x3a07,0x4a68,0x4a69,0x4248,0x4268,0x4248,0x4268,0x4a48,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x5289,0x4a89,0x4a89,0x52a9,0x4a89,0x52aa,0x4a89,0x4a69,0x5289,0x52a9,0x5aca,0x52ca,0x52aa,0x4a89,0x4a89,0x5289,0x4a69,0x4a89,0x4a69,0x52aa,0x4a89,0x4a69,0x4a89,0x52ea,0x52ca,0x52a9,0x52a9,0x4a69,0x4a89,0x52aa,0x5289,0x4a89,0x4aaa,0x4a89,0x4a89,0x52aa,0x52cb,0x52ca,0x52aa,0x4a89,0x52aa,0x52aa,0x4a69,0x52ca,0x52ca,0x4a89,0x5aca,0x52aa,0x5289,0x4a89,0x5289,0x5aeb,0x52aa,0x5aeb,0x5aca,0x52aa,0x632c,0x4a89,0x5aca,0x52aa,0x4a69,0x52aa,0x528a,0x52aa,0x52aa,0x5aca,0x52ca,0x4a69,0x52aa,0x5aca,0x52aa,0x4a68,0x4a89,0x4a69,0x4a89,0x52aa,0x5289,0x4a69,0x4aa9,0x52ca,0x4a89,0x5aeb,0x52ca,0x4a89,0x52ca,0x52aa,0x4a69,0x5b0b,0x52aa,0x5aeb,0x5aea,0x4aaa,0x4a69,0x4a89,0x4a69,0x52a9,0x52ca,0x52aa,0x52a9,0x52a9,0x52aa,0x528a,0x4a69,0x4a69,0x4248,0x52a9,0x52a9,0x4a69,0x4a89,0x4a48,0x4a69,0x4a89,0x4a69,0x52aa,0x5289,0x5289,0x4a69,0x4a49,0x4a48,0x4a69,0x4248,0x52aa,0x5aeb,0x4a69,0x4a69,0x4a69,0x4a69,0x4a48,0x4a69,0x4a69,0x4228,0x4a69,0x4a49,0x4a69,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a49,0x4248,0x4a69,0x4a48,0x4a49,0x4208,0x4208,0x4a49,0x4a48,0x4248,0x4249, +0x4a68,0x4227,0x4248,0x4248,0x4a69,0x4a89,0x4a68,0x4a68,0x52a9,0x5289,0x4248,0x4a68,0x4a48,0x4a68,0x4a68,0x4248,0x4a89,0x4a89,0x4228,0x4a48,0x4227,0x4228,0x4228,0x4247,0x4a89,0x4207,0x39e7,0x3a07,0x4a48,0x4248,0x4248,0x4227,0x4248,0x4a48,0x4a48,0x39e6,0x4a68,0x4a89,0x4207,0x39e6,0x4227,0x3a27,0x4247,0x4227,0x4248,0x4228,0x4a89,0x4a68,0x4248,0x4a89,0x4a68,0x4248,0x4268,0x4227,0x4248,0x4a88,0x4228,0x4248,0x4248,0x4247,0x4a88,0x4a68,0x4228,0x4248,0x4268,0x4248,0x4228,0x4268,0x4268,0x4227,0x4228,0x31a6,0x3a27,0x4a69,0x4a68,0x4268,0x4a68,0x4248,0x4269,0x4248,0x4268,0x4248,0x4248,0x4248,0x3a07,0x3a27,0x3a07,0x4228,0x4a68,0x4248,0x4248,0x3a07,0x4228,0x4a48,0x4207,0x4248,0x4228,0x4228,0x3a07,0x4248,0x4268,0x4227,0x3a07,0x4a69,0x4227,0x39e7,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x3a27,0x4227,0x4248,0x4248,0x4268,0x4248,0x3a27,0x4248,0x4a89,0x4a89,0x4228,0x4248,0x4268,0x4a89,0x4228,0x4228,0x4268,0x4a88,0x4a68,0x4a68,0x4248,0x4a89,0x4268,0x4a89,0x4a69,0x4a69,0x4248,0x4a68,0x4a68,0x4a69,0x4248,0x4a89,0x5289,0x4248,0x4a69,0x4248,0x4248,0x4a68,0x4a68,0x4a89,0x4248,0x4268,0x4a89,0x4248,0x5289,0x4a69,0x4248,0x4228,0x4a69,0x4a89,0x4a69,0x4a68,0x52a9,0x4a89,0x4a89,0x4a68,0x4a89,0x4a89,0x52a9,0x52ca,0x52a9,0x52aa,0x52a9,0x52c9,0x52a9,0x5289,0x4a89,0x4a89,0x5aea,0x52a9,0x52ca,0x52ca,0x52ca,0x5289,0x4a68,0x52a9,0x4a89,0x52a9,0x52ea,0x4a89,0x4a89,0x52a9,0x4a89,0x52ca,0x52aa,0x52ca,0x52ca,0x5aea,0x52aa,0x4a89,0x4a89,0x52aa,0x52aa,0x52ca,0x5b0b,0x52ca,0x52aa,0x52aa,0x4a89,0x4a69,0x4a89,0x52aa,0x52ca,0x4a69,0x52ca,0x52ca,0x52ca,0x5aca,0x52ca,0x52ca,0x52a9,0x52a9,0x5289,0x528a,0x4a89,0x4a89,0x4a89,0x5acb,0x528a,0x52aa,0x52aa,0x4a89,0x52aa,0x632c,0x4a89,0x4a89,0x5289,0x52ca,0x5289,0x52ca,0x528a,0x52aa,0x4a69,0x52ca,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x5aeb,0x52ca,0x52ca,0x5289,0x52aa,0x632c,0x5aca,0x4a89,0x5aeb,0x5aeb,0x52aa,0x52ca,0x52aa,0x4a49,0x52ca,0x52aa,0x4a69,0x5289,0x52aa,0x52aa,0x4a69,0x4a69,0x4a89,0x52ca,0x5aca,0x4a89,0x52aa,0x4a69,0x4a69,0x4228,0x4a69,0x4a89,0x4a69,0x5289,0x4a69,0x4a48,0x4a69,0x4228,0x4a69,0x5289,0x5289,0x4a69,0x528a,0x52aa,0x52aa,0x4a48,0x4a49,0x4a69,0x4a69,0x4a89,0x4248,0x4a69,0x4228,0x4a69,0x4a89,0x4228,0x4a49,0x4a69,0x4a49,0x4a48,0x4207,0x4228,0x4a89,0x4a48,0x4a69,0x52aa,0x4a49,0x4a69,0x4a49, +0x4a69,0x4227,0x4228,0x4a69,0x4228,0x4a48,0x4a69,0x52a9,0x4a69,0x4a48,0x4a89,0x52a9,0x52ca,0x4248,0x5289,0x4a89,0x4a68,0x4a89,0x52a9,0x4a68,0x4228,0x52a9,0x4248,0x4228,0x4a89,0x4248,0x4a48,0x4a68,0x4228,0x4227,0x4a68,0x4a68,0x4248,0x4a69,0x4a68,0x4a68,0x4a68,0x4a89,0x4a48,0x4227,0x4248,0x4248,0x4248,0x4228,0x4227,0x4227,0x4a89,0x4a68,0x3a07,0x4a68,0x4248,0x52a9,0x4aa9,0x4248,0x4aa9,0x4248,0x4268,0x4a89,0x4a68,0x52c9,0x4a89,0x4a68,0x4a89,0x4247,0x39e6,0x4a89,0x4268,0x3a07,0x4a89,0x4a69,0x4a89,0x3a27,0x4228,0x3a07,0x4268,0x4268,0x4a89,0x4a89,0x4248,0x4228,0x4a89,0x4248,0x3a27,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4a69,0x4228,0x4248,0x4248,0x4a48,0x4248,0x4228,0x3a27,0x4a69,0x4a69,0x4269,0x4228,0x4228,0x4a69,0x4248,0x4248,0x3a07,0x3a27,0x4248,0x4228,0x4248,0x4248,0x4268,0x4248,0x4248,0x52ca,0x4248,0x4228,0x4268,0x4248,0x4228,0x4a68,0x4a69,0x4248,0x4228,0x4248,0x4aa9,0x4a68,0x4248,0x4248,0x52c9,0x4aa9,0x52a9,0x4a68,0x4268,0x4a68,0x4aa9,0x52a9,0x4a48,0x4a89,0x4a89,0x4a88,0x4a89,0x4a68,0x4248,0x4a68,0x4248,0x4a68,0x4a89,0x4248,0x4a89,0x4a69,0x4227,0x4a48,0x4a69,0x4a68,0x4a69,0x4a69,0x4a89,0x4a68,0x52aa,0x52aa,0x4a69,0x4a89,0x4a89,0x52aa,0x4a69,0x4a69,0x4a68,0x4a89,0x4a89,0x52a9,0x52a9,0x52ca,0x52ca,0x4a89,0x52a9,0x52c9,0x52a9,0x4a89,0x52ca,0x52c9,0x5aca,0x5b0b,0x52aa,0x52a9,0x52a9,0x4a89,0x52a9,0x52ca,0x52ca,0x52ca,0x4a89,0x4a69,0x4aa9,0x4a89,0x52aa,0x5289,0x5289,0x528a,0x4a89,0x4aaa,0x52aa,0x4a89,0x4a89,0x52a9,0x5289,0x4aaa,0x4aaa,0x4a89,0x4aaa,0x4a68,0x52ca,0x52eb,0x4a69,0x4a49,0x4a89,0x4a89,0x4a89,0x52aa,0x52ca,0x5acb,0x52aa,0x4a89,0x4a69,0x5289,0x52aa,0x52ca,0x4a69,0x52ca,0x5aeb,0x5aea,0x5b0b,0x52aa,0x52aa,0x4a89,0x4a69,0x52aa,0x52aa,0x4a69,0x5289,0x5289,0x52aa,0x4a89,0x52ca,0x5aca,0x4a69,0x4228,0x4a89,0x4a89,0x528a,0x52aa,0x4a89,0x4a69,0x4a89,0x5289,0x52ca,0x52aa,0x5aca,0x5aeb,0x52aa,0x52ca,0x5aca,0x5aea,0x5289,0x4a89,0x52ca,0x52ca,0x528a,0x528a,0x4a89,0x4a69,0x52ca,0x4a69,0x4a89,0x5289,0x4a69,0x4a69,0x4a69,0x52a9,0x4a69,0x4a49,0x4248,0x4a69,0x52aa,0x4a69,0x528a,0x4a49,0x4a48,0x4a69,0x4248,0x4a69,0x52aa,0x4a48,0x4a69,0x5289,0x4a48,0x4a89,0x4a48,0x4a69,0x4a69,0x4a69,0x4a48,0x4a48,0x4a48,0x4a69,0x4a69,0x4a69,0x4a89,0x528a,0x4a89,0x3a28,0x4228,0x4a69,0x4a8a,0x4a69,0x4a48,0x4a69,0x4228,0x4248,0x528a,0x4a69, +0x4248,0x4228,0x4a48,0x4a48,0x4a69,0x4a48,0x5289,0x4227,0x4248,0x4a28,0x4a48,0x4a48,0x5289,0x4207,0x4228,0x4a48,0x4248,0x4227,0x4a48,0x4207,0x4a68,0x52a9,0x4227,0x4207,0x4228,0x4a48,0x4248,0x4228,0x4a69,0x5289,0x4a69,0x5289,0x4228,0x4228,0x4207,0x4228,0x4a68,0x4a88,0x4248,0x4a68,0x52ca,0x4227,0x4228,0x4207,0x4227,0x4a89,0x4248,0x4227,0x4a89,0x52aa,0x52a9,0x4a89,0x4268,0x4a89,0x52ca,0x52a9,0x4a89,0x3a07,0x4a68,0x52ca,0x4a89,0x4248,0x5289,0x52c9,0x4227,0x4a48,0x4a69,0x4a89,0x52aa,0x4a68,0x4248,0x4a69,0x4a89,0x4a68,0x52a9,0x4a88,0x4248,0x4a69,0x4268,0x3a28,0x3a27,0x4268,0x4a69,0x4248,0x4a68,0x4a89,0x4a68,0x4a69,0x4248,0x4248,0x4a69,0x4268,0x4a89,0x4248,0x4a69,0x4248,0x4227,0x4a69,0x4a69,0x4268,0x4248,0x4a69,0x4248,0x4227,0x4228,0x4228,0x4268,0x4228,0x4248,0x4268,0x4268,0x4a69,0x4228,0x4a89,0x4a69,0x4248,0x4248,0x52aa,0x4268,0x4268,0x4a89,0x4a69,0x52a9,0x4a68,0x4a68,0x52aa,0x4268,0x4a68,0x4268,0x4227,0x4a89,0x52ca,0x4a89,0x4a68,0x52c9,0x5289,0x4a68,0x52a9,0x4a68,0x4aa9,0x4a88,0x4a89,0x4a89,0x52a9,0x52aa,0x4a89,0x4a89,0x4248,0x4a69,0x5289,0x4a89,0x4a89,0x4a89,0x4a89,0x4a68,0x3a07,0x4a68,0x52aa,0x5289,0x4a89,0x4248,0x4248,0x4a89,0x4a89,0x4a69,0x4a68,0x4a89,0x4a89,0x5289,0x4a89,0x4a89,0x52ca,0x52a9,0x5289,0x52a9,0x52a9,0x52ca,0x5aea,0x52ca,0x52a9,0x52a9,0x52ca,0x52ca,0x52ca,0x5289,0x52aa,0x4a89,0x52ca,0x52aa,0x4a89,0x52aa,0x5289,0x52a9,0x4a68,0x4a69,0x52aa,0x52aa,0x4a69,0x528a,0x52aa,0x52ca,0x4a89,0x4248,0x4a89,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x52aa,0x5b0b,0x4aa9,0x5289,0x5acb,0x528a,0x52aa,0x4a89,0x52aa,0x5b0b,0x52ca,0x52aa,0x52aa,0x52aa,0x52ca,0x5aeb,0x5aeb,0x4a69,0x52aa,0x632b,0x630b,0x52ca,0x52ca,0x52ca,0x5aca,0x52aa,0x5289,0x5aca,0x4a89,0x52aa,0x52aa,0x4a69,0x52aa,0x52ca,0x52aa,0x52aa,0x4a48,0x5289,0x52ca,0x52ca,0x5aca,0x52aa,0x52aa,0x52ca,0x52aa,0x52ca,0x5aeb,0x5aca,0x5acb,0x52ca,0x52aa,0x5aca,0x5289,0x4a69,0x52aa,0x52ca,0x4a89,0x52aa,0x52aa,0x630b,0x52aa,0x4a89,0x4a68,0x4a69,0x5289,0x52aa,0x5aca,0x4228,0x52a9,0x4248,0x4a69,0x4a49,0x4a49,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a48,0x4a69,0x4a89,0x4a69,0x4a89,0x4a48,0x52aa,0x52aa,0x52aa,0x4a69,0x4a69,0x4228,0x4a89,0x4228,0x4228,0x4a89,0x4248,0x4a69,0x52aa,0x52aa,0x4a69,0x4a69,0x4208,0x4208,0x4228,0x4a69,0x52aa,0x4a69,0x4228,0x4228,0x4228,0x4207, +0x634c,0x5b2b,0x5b2b,0x5b2b,0x636c,0x5b0b,0x634c,0x6bad,0x5b0b,0x5b0b,0x52ca,0x52a9,0x634c,0x636c,0x5b2b,0x52ea,0x5aeb,0x636c,0x5b2b,0x52ea,0x5b0b,0x4aa9,0x5aea,0x52ca,0x4a89,0x4a68,0x4a89,0x4a69,0x4a89,0x52a9,0x4a89,0x52a9,0x52ca,0x4a89,0x4a89,0x4a89,0x52ca,0x4a69,0x4a89,0x4268,0x4a89,0x4a69,0x4248,0x4a69,0x4a89,0x4268,0x4a68,0x4a69,0x4a69,0x4a89,0x4228,0x4a69,0x4a69,0x4248,0x4248,0x52a9,0x4a68,0x4a89,0x4a89,0x4248,0x4a68,0x4a89,0x4a89,0x4a89,0x4a89,0x4268,0x4a89,0x4a69,0x4a68,0x4228,0x4249,0x4248,0x4228,0x4268,0x4248,0x4a69,0x3a07,0x4a69,0x4269,0x4248,0x4248,0x4268,0x4268,0x4a89,0x4a68,0x4248,0x4269,0x4a69,0x4a69,0x4268,0x4248,0x4a69,0x4a89,0x4a69,0x4269,0x4248,0x4248,0x39e7,0x4248,0x4248,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4248,0x4227,0x4248,0x4228,0x4a68,0x4a69,0x4228,0x31c6,0x4248,0x4248,0x4aa9,0x4a89,0x4a89,0x4a89,0x4a89,0x4227,0x4248,0x4248,0x4248,0x4a68,0x4269,0x4a69,0x4268,0x4248,0x4248,0x4a69,0x4a69,0x4a89,0x52aa,0x4a88,0x4a88,0x5aca,0x4a68,0x4248,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x528a,0x4a69,0x4a89,0x4a89,0x4248,0x4248,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a68,0x4248,0x4a69,0x4a89,0x4268,0x4a69,0x4a69,0x4a89,0x4a48,0x52aa,0x52aa,0x52a9,0x4a68,0x4a68,0x4a48,0x4a69,0x4a89,0x52ca,0x52ea,0x52a9,0x52aa,0x4a89,0x4a89,0x52a9,0x52a9,0x4a89,0x52aa,0x52a9,0x52aa,0x4a89,0x5289,0x5289,0x4248,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x52aa,0x52aa,0x4a89,0x4248,0x4a69,0x4a69,0x4228,0x4228,0x4a69,0x4a89,0x4a89,0x4a89,0x5289,0x52aa,0x4a69,0x52aa,0x4a89,0x4a89,0x52aa,0x52aa,0x4a89,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x4248,0x4248,0x4248,0x4a89,0x4228,0x52aa,0x52a9,0x4248,0x52aa,0x4248,0x4a89,0x4a69,0x5289,0x4a89,0x4a69,0x4a69,0x52ca,0x5289,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a48,0x4a69,0x4248,0x4a89,0x4a89,0x4a48,0x52aa,0x52aa,0x52aa,0x528a,0x5acb,0x52aa,0x52ca,0x4a89,0x4a69,0x4248,0x52ca,0x52aa,0x4a69,0x4a49,0x52aa,0x4a69,0x4228,0x6348,0x6328,0x4228,0x4227,0x4a69,0x4a89,0x4a49,0x39e7,0x4a89,0x4a69,0x4248,0x52aa,0x4a48,0x4a69,0x4a49,0x4a48,0x4a69,0x52aa,0x4a69,0x4a89,0x4a69,0x4a49,0x4a49,0x4a69,0x4a48,0x4228,0x52aa,0x52aa,0x4228,0x4a69,0x4a69,0x4a49,0x4248,0x4248,0x4a69,0x52cb,0x5aeb,0x52aa,0x4a89,0x528a,0x52aa,0x5b0c,0x528a,0x52aa,0x5aeb,0x52cb,0x5aeb,0x5acb,0x5aeb,0x634d,0x5aeb,0x5aca, +0x6bad,0x638c,0x73ce,0x73ee,0x73ce,0x6bad,0x73ce,0x7c0f,0x740e,0x73ee,0x6bad,0x6b8d,0x73cd,0x740f,0x7c70,0x73ee,0x636c,0x6bad,0x73cd,0x636c,0x73ee,0x6bac,0x73ed,0x636c,0x636c,0x5b2b,0x6b8c,0x5b2b,0x636c,0x6bcd,0x638d,0x5b2b,0x634c,0x636c,0x636c,0x636c,0x636c,0x5b2b,0x636c,0x634c,0x5b0b,0x636c,0x5b0b,0x6b6c,0x634c,0x5b0a,0x52ea,0x5b0b,0x6b8c,0x636c,0x5b2b,0x5b0b,0x5aeb,0x5b2b,0x5aea,0x5b0b,0x52a9,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x632c,0x52ca,0x5b0b,0x5b2c,0x5b2b,0x530b,0x5b2b,0x52ca,0x4aca,0x52ca,0x4aa9,0x5b2b,0x52ea,0x4268,0x5b0b,0x52ea,0x52ca,0x52ca,0x4aaa,0x4a89,0x530b,0x52ca,0x4248,0x4a69,0x4248,0x4a8a,0x636a,0x5b2a,0x4a69,0x4ac9,0x4a89,0x52ca,0x52ca,0x4a89,0x52aa,0x52aa,0x4a89,0x3a28,0x4269,0x4a68,0x4268,0x4268,0x4aaa,0x4a89,0x4a89,0x4248,0x4a89,0x3a28,0x4228,0x3a07,0x4a89,0x4268,0x4a69,0x4268,0x3a27,0x4269,0x52aa,0x4a89,0x4a89,0x4248,0x4268,0x4248,0x4a89,0x4a89,0x4aa9,0x52ca,0x4268,0x4a68,0x4a89,0x4228,0x4aa9,0x52aa,0x52ca,0x52aa,0x4a89,0x4a89,0x4aa9,0x52aa,0x4aa9,0x4a89,0x5b0b,0x5b0b,0x5aeb,0x5aea,0x5289,0x4a89,0x52ca,0x4a89,0x52aa,0x52aa,0x4a89,0x52ca,0x4a89,0x5aeb,0x5b0b,0x52aa,0x52ea,0x5b0b,0x5b0b,0x634c,0x5aeb,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b2b,0x632b,0x52ea,0x5b0b,0x634c,0x632c,0x5aeb,0x6b6c,0x52ea,0x5b2b,0x632b,0x630b,0x5aea,0x5b2b,0x6bad,0x632b,0x5aeb,0x6b8d,0x6b8d,0x632c,0x5aeb,0x634c,0x634c,0x6bad,0x6b8d,0x636d,0x6b6d,0x5b0b,0x6b6c,0x6b8d,0x6b8d,0x6b6c,0x73ad,0x6b6d,0x634c,0x634c,0x6b6d,0x634c,0x6b8d,0x73ce,0x73ee,0x636c,0x73ef,0x73ee,0x73ce,0x7c0f,0x73ce,0x73ce,0x73ee,0x6bad,0x8c91,0x8450,0x6b8d,0x73ce,0x8c71,0x8450,0x73ce,0x73ee,0x7c0f,0x7bee,0x7c0f,0x7c2f,0x7bee,0x8c91,0x94d2,0x8c71,0x842f,0x7bef,0x7c0f,0x73ce,0x7bee,0x73ce,0x8c70,0x7bee,0x5b2b,0x8450,0x7c2f,0x73ae,0x7c0f,0x6b8d,0x7c0f,0x7bef,0x8470,0x7c2f,0x7bee,0x7bee,0x73ee,0x7c0f,0x9cf2,0x8c71,0x7bee,0x94b1,0x94b1,0x94b1,0x8430,0x7c0f,0x8c71,0x7bee,0x8c70,0x8470,0x9d34,0x7bef,0x7c0f,0x94b1,0x73ae,0x8c71,0x8c71,0x8c91,0x8cb1,0x9cf2,0x94b2,0x73ce,0x8430,0x7bef,0x73ae,0x7bef,0x94b1,0x9cf3,0x8c71,0x8430,0x8c50,0x94d2,0x7c0f,0x8c91,0x94d2,0x73ce,0x842f,0x8450,0x94b1,0x7c0f,0x8430,0x842f,0x8c71,0x8c71,0x9d13,0x8c71,0x9cf2,0x94b2,0x8c71,0x8c71,0x94d2,0x94b2,0x94b2,0x9d13,0x94d2,0x94b2,0x8430,0x9cf3,0x8c71,0x8430,0x9cf3,0x9491,0x9cf3,0x9491, +0x5b0b,0x630b,0x634c,0x6b6c,0x634c,0x5b0b,0x6b8d,0x638d,0x636c,0x636c,0x634c,0x634c,0x636c,0x634b,0x6b8c,0x73ee,0x634c,0x5b0b,0x634c,0x5b2b,0x636c,0x634b,0x5b0b,0x636c,0x636c,0x634b,0x636c,0x634c,0x634c,0x636c,0x634c,0x63ad,0x636c,0x634c,0x636c,0x634c,0x638c,0x636c,0x636c,0x636c,0x636c,0x6b8d,0x6b8d,0x6bad,0x6bad,0x634b,0x634c,0x638c,0x6bad,0x636c,0x638d,0x636c,0x636c,0x634c,0x6b8c,0x6b8c,0x5b0b,0x634c,0x634c,0x634c,0x636c,0x636c,0x636c,0x5b2b,0x636c,0x6b8d,0x634c,0x634c,0x634c,0x636c,0x636c,0x636c,0x6bad,0x636c,0x5b0b,0x52ea,0x5b4b,0x5b2b,0x634c,0x5b0b,0x634c,0x634c,0x634c,0x5b0b,0x52ea,0x5b2b,0x5b2c,0x6bcc,0x73cd,0x5b2b,0x634c,0x634c,0x632c,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b2c,0x634c,0x5b2b,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2c,0x634c,0x5b0b,0x5b2c,0x5b2c,0x4aa9,0x5aeb,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x52ca,0x52aa,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b0b,0x52ca,0x52aa,0x52eb,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x52eb,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x632b,0x5b0b,0x5aea,0x5aeb,0x52ea,0x5aeb,0x5aca,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x632c,0x5aea,0x5aea,0x632b,0x52aa,0x632c,0x632c,0x5b0b,0x634c,0x632b,0x632b,0x632b,0x632c,0x634c,0x5aeb,0x632c,0x73ad,0x5b0b,0x632b,0x632c,0x634c,0x634c,0x6b6c,0x634c,0x5b2b,0x52ca,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b8d,0x73ad,0x6bad,0x6b8d,0x6b8d,0x634c,0x632c,0x738d,0x6b8d,0x634c,0x6b8d,0x6b8d,0x73ae,0x73ae,0x6b8d,0x6b8d,0x73ce,0x6b8d,0x6b8d,0x73ce,0x6bad,0x73ce,0x73ce,0x73ce,0x738d,0x73ce,0x73ad,0x73ad,0x73ce,0x73ce,0x73ce,0x73ae,0x73ae,0x8430,0x8c71,0x7c0f,0x73ce,0x842f,0x8430,0x8430,0x73ce,0x8430,0x94b2,0x842f,0x842f,0x8430,0x7bee,0x73ce,0x7c0f,0x73ce,0x73ee,0x8430,0x7c0f,0x7bee,0x7c0f,0x73ce,0x73ce,0x8c50,0x8430,0x7bef,0x8430,0x73ce,0x7c0f,0x8470,0x73ee,0x7c0f,0x8410,0x8c71,0x73ce,0x7bef,0x8c50,0x840f,0x840f,0x842f,0x73ce,0x7bef,0x8c71,0x8450,0x73ad,0x8471,0x7c2f,0x8430,0x73ee,0x7bef,0x8471,0x7bef,0x7c0f,0x94b2,0x94b1,0x73ce,0x7bce,0x7c0e,0x7bcd,0x73ad,0x73cd,0x842f,0x7c0f,0x8430,0x8c50,0x8450,0x8430,0x840f,0x842f,0x7c0f,0x73ce,0x7bee,0x7bce,0x7bef,0x7c0f,0x8450,0x7c0f,0x73ae,0x738d,0x7bee,0x7bef,0x6b8d,0x840f,0x7bef,0x73ae,0x7bef,0x8430,0x7c0f,0x738d,0x7bef,0x634c,0x73ae,0x73ce,0x73ae,0x738d,0x738d,0x6b6d,0x6b4c,0x6b8d, +0x5b2b,0x6b4c,0x73ad,0x6b8d,0x634c,0x5b0b,0x6bad,0x73ce,0x634c,0x634c,0x6bad,0x5b0b,0x636c,0x6b6c,0x6b6c,0x6b8d,0x6b8d,0x6b6c,0x636c,0x632c,0x636c,0x634c,0x632b,0x634c,0x6b8c,0x636c,0x6b8c,0x6b8d,0x634c,0x636c,0x638d,0x6b8d,0x634c,0x6b8d,0x6b8d,0x6b8d,0x636c,0x5b0b,0x5b0b,0x6b8d,0x73ce,0x6b8d,0x6bad,0x636c,0x6b6d,0x6b8d,0x634c,0x634c,0x6b8d,0x636c,0x5b4c,0x636c,0x5b2b,0x634c,0x6bad,0x6b8c,0x638c,0x634c,0x636c,0x5b2b,0x634c,0x638d,0x636c,0x636c,0x636c,0x6b8d,0x636c,0x5b0b,0x632c,0x632c,0x6b8d,0x636c,0x52eb,0x634c,0x5b0b,0x634c,0x5b2c,0x5b2b,0x636d,0x636c,0x6bad,0x5b4c,0x636c,0x6b8d,0x5b2b,0x52eb,0x5b0b,0x4aca,0x5b2b,0x634c,0x634c,0x5b0b,0x5aea,0x52ca,0x5b2c,0x636c,0x634c,0x5b2c,0x634c,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x5b0b,0x636c,0x632c,0x52ca,0x52ca,0x5b2c,0x52eb,0x5b2b,0x634c,0x5b2b,0x5b0b,0x5b2c,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x52aa,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52aa,0x52ca,0x4269,0x52ca,0x5b2c,0x634c,0x52ca,0x52ca,0x52ca,0x5b2b,0x636c,0x5b2b,0x5b0b,0x5aeb,0x5b0a,0x632b,0x6b6c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b2b,0x5b0b,0x632c,0x5b0b,0x4a89,0x52ca,0x5b0b,0x5b0b,0x5b2b,0x5aeb,0x52ca,0x632b,0x634c,0x5aeb,0x5b0b,0x632b,0x52ca,0x636c,0x5b2b,0x6b6d,0x6b8d,0x632c,0x5aeb,0x632c,0x634c,0x5b2b,0x632c,0x634c,0x636c,0x632c,0x5b0b,0x634c,0x636c,0x634c,0x634c,0x6b8d,0x634c,0x634c,0x634c,0x6b6c,0x6b6d,0x73ad,0x6b6c,0x6b8d,0x632c,0x632b,0x632c,0x6b6d,0x632c,0x73ef,0x6b8d,0x6b6d,0x632c,0x6b8d,0x6b6d,0x5aeb,0x6b8d,0x632c,0x5aeb,0x634c,0x634c,0x632b,0x632b,0x6b4c,0x6b6d,0x6b6d,0x6b8d,0x634c,0x634c,0x6b8d,0x636c,0x634c,0x636d,0x6bae,0x73ce,0x6b8d,0x6bae,0x5b0b,0x6b6d,0x73ae,0x632c,0x5b0b,0x632c,0x6b4c,0x6b6d,0x73ae,0x6b8d,0x6b6d,0x636c,0x6b6d,0x73ef,0x73ae,0x73ae,0x73ae,0x7bef,0x7c0f,0x6b8d,0x73ae,0x73ae,0x632c,0x632c,0x634c,0x6b6d,0x7bef,0x73ae,0x636d,0x73ae,0x7bee,0x6b8d,0x73ae,0x73ae,0x632c,0x6b4c,0x73ad,0x73ae,0x73ae,0x6b6d,0x73ad,0x6b4c,0x6b8d,0x73ce,0x634c,0x632c,0x73ad,0x6b6d,0x6b6c,0x632c,0x6b8d,0x738c,0x73ac,0x73ad,0x738d,0x73ad,0x73ad,0x6b8d,0x73ae,0x738d,0x6b8d,0x634c,0x6b4c,0x738d,0x73ae,0x5b0b,0x634c,0x6b6d,0x6b6d,0x632c,0x634c,0x6b4c,0x632c,0x630c,0x632c,0x52ca,0x632c,0x6b6d,0x5b0b,0x5aeb,0x6b8d,0x738e,0x5b0b,0x630c,0x632c,0x6b6d,0x6b4d,0x634c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b, +0x632c,0x634c,0x6b6c,0x5b2b,0x5b2c,0x634c,0x634c,0x5b0b,0x5aeb,0x5b2c,0x634c,0x632c,0x636c,0x636d,0x5b2b,0x6b6d,0x634c,0x5b0b,0x634c,0x5b2b,0x52ca,0x5b2b,0x638d,0x634c,0x5b0b,0x638d,0x636d,0x636c,0x636c,0x636c,0x52ea,0x5b0b,0x632c,0x638d,0x6b8d,0x634c,0x5b4c,0x634c,0x52eb,0x5b4c,0x5b2b,0x5b0b,0x636c,0x5b2c,0x52eb,0x5b2b,0x5b2b,0x5b2b,0x634c,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x634c,0x52ea,0x634c,0x530b,0x52ea,0x634c,0x634c,0x5b0b,0x5b2b,0x5b0b,0x530b,0x5b0b,0x52eb,0x5b2b,0x5aeb,0x52ea,0x530b,0x4aca,0x530b,0x636c,0x5b2b,0x5b2b,0x5b0b,0x52eb,0x5b0b,0x530b,0x52eb,0x5b0b,0x530b,0x5b2c,0x530b,0x52ea,0x4a8a,0x4a8a,0x52eb,0x634c,0x52ea,0x52ca,0x5b2c,0x52eb,0x52ca,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5aeb,0x5b2c,0x5b0b,0x4aaa,0x52ea,0x52ea,0x5b2b,0x634c,0x4a89,0x5aeb,0x52aa,0x4a89,0x52ea,0x52eb,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x634c,0x632c,0x5b0b,0x52ea,0x52ca,0x4a89,0x5aea,0x5b2b,0x5b0b,0x5aeb,0x5b2b,0x52eb,0x4a69,0x52eb,0x4aaa,0x4a89,0x52ca,0x5b0b,0x5b0b,0x52aa,0x52eb,0x5b0b,0x52ca,0x634c,0x5aea,0x52ca,0x632b,0x5aea,0x5aeb,0x52ea,0x52ca,0x52ca,0x5b2b,0x5b0b,0x52ca,0x52ca,0x5aeb,0x52aa,0x5aeb,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x52ca,0x52ca,0x52aa,0x52ca,0x5b0b,0x52a9,0x5b0b,0x5b0b,0x5aeb,0x4a89,0x5aeb,0x632c,0x52ca,0x52cb,0x5b0c,0x632c,0x5aeb,0x52eb,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5acb,0x636c,0x6bad,0x632c,0x5aeb,0x632c,0x634c,0x634c,0x634c,0x52eb,0x5b2c,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636c,0x632c,0x6b6d,0x632c,0x5aeb,0x5aeb,0x634c,0x634c,0x630b,0x52aa,0x634c,0x632c,0x52ca,0x5b0b,0x6b8d,0x634c,0x6b8d,0x6b8d,0x73ce,0x6b6d,0x634c,0x6b6d,0x73ae,0x634c,0x632c,0x6b6d,0x6b6d,0x5aeb,0x6b8d,0x6b6d,0x5b0c,0x73ce,0x73ce,0x636d,0x634c,0x7c0f,0x73cf,0x630c,0x6b6d,0x6b6d,0x73ce,0x6b6d,0x73ae,0x634c,0x73ce,0x6b8d,0x7bef,0x73ce,0x6b8d,0x73ae,0x6b8d,0x632c,0x73ce,0x6b6c,0x636c,0x6bae,0x6b8d,0x634d,0x6b6d,0x6b6c,0x7bce,0x7bef,0x73ce,0x632c,0x6b4c,0x840f,0x7bce,0x6b6d,0x6b6d,0x6b6d,0x634c,0x6b6d,0x6b6d,0x738d,0x7bce,0x634b,0x6b6c,0x73ae,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x632c,0x632c,0x6b6d,0x634c,0x630b,0x634c,0x73ae,0x6b8d,0x634d,0x5b0c,0x632c,0x5b0b,0x6b6d,0x5aeb,0x632c,0x632c,0x632c,0x634c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630c,0x738e,0x5b0c,0x5acb,0x632b,0x632c,0x5aeb,0x5aeb,0x632c,0x52ca,0x4a89,0x6b6d, +0x52ca,0x5289,0x5aea,0x52a9,0x5aeb,0x5aca,0x5289,0x4a68,0x4a89,0x5aeb,0x52ca,0x632c,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x52ca,0x4aa9,0x4a69,0x52aa,0x52eb,0x52eb,0x52ca,0x52ca,0x4a89,0x5aeb,0x52aa,0x4a89,0x52eb,0x5b2b,0x4aa9,0x5b0c,0x5aeb,0x5b0b,0x5b2c,0x634c,0x634c,0x5b0b,0x5b0b,0x52ca,0x636d,0x73ce,0x632c,0x5b0b,0x52eb,0x5b2c,0x6bad,0x5b0b,0x52ca,0x5b0b,0x5aeb,0x52ca,0x636c,0x5b0b,0x530b,0x52ea,0x52ca,0x5aeb,0x52ca,0x5b0b,0x52ca,0x5b0b,0x52aa,0x5b0b,0x52cb,0x52aa,0x52ca,0x52eb,0x4aaa,0x52eb,0x52ca,0x5b0b,0x52eb,0x52eb,0x52ca,0x632c,0x5aeb,0x52aa,0x5b0b,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4a69,0x5aeb,0x52ca,0x52ca,0x4248,0x4a89,0x4a89,0x5b0b,0x4aaa,0x4aa9,0x52ea,0x52eb,0x52ca,0x52ca,0x52ca,0x52eb,0x4a89,0x4a89,0x52aa,0x52aa,0x4a89,0x4a69,0x4aa9,0x52ca,0x5b0b,0x52ea,0x52ca,0x4a89,0x52ea,0x4a89,0x4a89,0x4a69,0x4a69,0x5aeb,0x5b0b,0x52ca,0x52aa,0x52ca,0x5b0b,0x52ca,0x4a89,0x4a89,0x4a89,0x4248,0x5aeb,0x4aaa,0x4a69,0x4a89,0x4a69,0x52aa,0x52aa,0x4248,0x4a69,0x4a89,0x4a89,0x4aa9,0x4a69,0x52aa,0x52aa,0x52cb,0x4a89,0x4a89,0x52a9,0x4a89,0x4a69,0x5289,0x52ca,0x4a89,0x4a89,0x4a69,0x4a69,0x4269,0x52ca,0x52a9,0x4a89,0x52a9,0x52ca,0x52ca,0x52aa,0x4a89,0x4a69,0x4269,0x5aeb,0x52aa,0x52aa,0x52ca,0x4a89,0x52aa,0x52ca,0x4aa9,0x4a89,0x52aa,0x5aeb,0x5b0b,0x4a89,0x4248,0x52ca,0x4a89,0x4a69,0x52ca,0x5289,0x4a69,0x52aa,0x4a69,0x4a89,0x52ca,0x5aeb,0x52aa,0x5b2b,0x4a89,0x5aca,0x5b0b,0x52ca,0x5b0b,0x634c,0x52ca,0x52aa,0x52ca,0x6b8d,0x5b0b,0x632c,0x5b2c,0x5b0b,0x632c,0x632c,0x5aeb,0x5aeb,0x5aeb,0x630b,0x632c,0x630b,0x634c,0x5aeb,0x632c,0x630c,0x634c,0x5b0b,0x632c,0x634c,0x5aeb,0x630c,0x4a89,0x6b6d,0x634c,0x634c,0x5aeb,0x52cb,0x634d,0x632c,0x5b0b,0x630c,0x630c,0x738d,0x6b6d,0x5aec,0x634c,0x634c,0x6b6d,0x6b4c,0x5aeb,0x5b0b,0x6b6d,0x634c,0x632c,0x52ca,0x5aeb,0x6b6d,0x738e,0x630b,0x6b6d,0x634c,0x632c,0x632c,0x5aca,0x632c,0x632c,0x634c,0x73ae,0x632c,0x5b0c,0x632c,0x632c,0x52ca,0x5b0b,0x6b8d,0x632c,0x632c,0x6b4c,0x632c,0x632c,0x6b6d,0x632c,0x52ca,0x630b,0x632c,0x5aeb,0x6b4c,0x632c,0x634c,0x6b6d,0x5aeb,0x5aeb,0x632c,0x5aeb,0x634d,0x6b6d,0x630c,0x5aeb,0x632c,0x632c,0x630c,0x5b0c,0x5b0b,0x52aa,0x5acb,0x5b0b,0x52aa,0x5aeb,0x632c,0x52aa,0x5aeb,0x630c,0x5b0b,0x52aa,0x52aa,0x5acb,0x5acb,0x5aeb,0x4a69,0x5289,0x52aa,0x4a69,0x52aa,0x52aa,0x4228,0x4a48,0x4a89, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x1020,0x1080,0x2103,0x2103,0x1080,0x18e2,0x2103,0x2103,0x20e2,0x20e2,0x1060,0x18c2,0x20e2,0x20e2,0x2123,0x2103,0x18a1,0x2103,0x2944,0x2923,0x2923,0x2923,0x3185,0x2123,0x3185,0x2944,0x3a07,0x4a48,0x2943,0x39c6,0x31a6,0x31a5,0x3185,0x2944,0x2944,0x2964,0x31a5,0x39c6,0x31a5,0x2964,0x39c6,0x31a5,0x2964,0x3185,0x3185,0x31a5,0x31a5,0x39e6,0x31c6,0x39e6,0x3185,0x3185,0x2964,0x39c6,0x39e6,0x31a5,0x3185,0x39e6,0x2964,0x3185,0x31a5,0x39e6,0x31a5,0x31a5,0x31c6,0x31a5,0x31a5,0x3185,0x31a5,0x2964,0x31a5,0x39e6,0x3185,0x2144,0x2944,0x2985,0x2965,0x2964,0x3185,0x39c6,0x39c6,0x2944,0x31a5,0x2964,0x31a6,0x31c6,0x2944,0x31a5,0x39e6,0x39e7,0x39c6,0x2964,0x39e6,0x39e6,0x3185,0x39c6,0x31a5,0x39c6,0x31c6,0x2985,0x39e7,0x31a6,0x3185,0x2944,0x31a5,0x39e6,0x31c6,0x2985,0x3185,0x31a5,0x39c6,0x3a07,0x39c6,0x39e6,0x2923,0x2923,0x2964,0x2943,0x31a5,0x39e6,0x2965,0x3185,0x2944,0x2985,0x39e7,0x31c6,0x31a5,0x31c6,0x39c6,0x3185,0x39e7,0x39e7,0x3185,0x3185,0x39a6,0x39c6,0x2964,0x31a5,0x39e6,0x2923,0x2102,0x31a5,0x3165,0x3185,0x39c6,0x31a6,0x3185,0x3164,0x2923,0x31a5,0x3185,0x3185,0x39e6,0x39e6,0x3a07,0x39e6,0x39c6,0x39c6,0x4227,0x39a5,0x39a6,0x39a6,0x4207,0x4227,0x39c6,0x4207,0x39e7,0x39e6,0x4207,0x39e6,0x31a5,0x39c6,0x39e6,0x4207,0x39e6,0x39c6,0x39e7,0x39e7,0x4207,0x39a6,0x39e7,0x31a5,0x4207,0x39e6,0x31a6,0x39e7,0x39c6,0x4a48,0x4206,0x39e6,0x4207,0x39c6,0x39e6,0x4a28,0x4207,0x39c6,0x4207,0x4227,0x4207,0x4207,0x4228,0x4207,0x4207,0x39e7,0x39c6,0x4207,0x4228,0x3a07,0x4207,0x39c6,0x39e7,0x39e6,0x39e7,0x4a49,0x31a6,0x39c6,0x39e7,0x4208,0x31a6,0x4228,0x39e7,0x4227,0x4207,0x39c7,0x39e7,0x3185,0x4207,0x4228,0x39e6,0x39c6,0x31a5,0x39c6,0x39a6,0x39c6,0x39e6,0x39c6,0x31a5,0x39c6,0x4207,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39e6,0x4207,0x31a5,0x3a07,0x4207,0x4207,0x4227,0x4228,0x39c6,0x4207,0x39e6,0x39c6,0x39c6,0x4207,0x41e7,0x39c6,0x31a5,0x39c6,0x31a6,0x39c7,0x39e7,0x39c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a5,0x39c6,0x31a6,0x31a6,0x3185,0x2965,0x2965,0x31a6,0x31a5,0x3185,0x2965,0x3185,0x39c6,0x31c6,0x2965,0x2985,0x2965,0x2944,0x39a6,0x3185,0x2124,0x18e3,0x1081,0x0862,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0840,0x0000,0x0862,0x0000,0x0000, +0x1126,0x0905,0x00a5,0x0065,0x0065,0x0025,0x0004,0x0004,0x0004,0x0004,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0001,0x0002,0x0003,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0001,0x0003,0x0003,0x0000,0x0001,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0001,0x0001,0x0021, +0xeeec,0xeecc,0xeecb,0xeecc,0xeeac,0xeecc,0xe6ab,0xe6ab,0xe6ac,0xe6ac,0xe6cc,0xe6ac,0xe6ad,0xe6ac,0xe68c,0xe6ac,0xe6ac,0xe66a,0xe66b,0xe68c,0xe6ad,0xe68d,0xe66d,0xde4c,0xde4c,0xde4d,0xde6d,0xde4d,0xde2b,0xd60b,0xde4d,0xde4d,0xe64c,0xde2b,0xe60a,0xde2b,0xdde8,0xaca7,0x8be9,0x9406,0xc589,0xde2c,0xe64b,0xe64b,0xde2a,0xde09,0xde2a,0xde2a,0xde2a,0xd5e9,0xd5ea,0xde2a,0xde28,0xde29,0xde29,0xde49,0xde29,0xe649,0xe649,0xe648,0xe649,0xe649,0xe649,0xe669,0xde49,0xe669,0xe668,0xde27,0xd5e7,0xde07,0xde27,0xe628,0xe627,0xe627,0xe647,0xe667,0xe668,0xe668,0xe626,0xde05,0xde06,0xe626,0xe626,0xe606,0xe606,0xe626,0xe626,0xe626,0xe627,0xe627,0xe627,0xe626,0xe606,0xdde5,0xdde5,0xe5e4,0xdde4,0xddc4,0xddc4,0xdde4,0xddc4,0xe5e4,0xddc4,0xdd82,0xdd62,0xdd83,0xdd83,0xdd83,0xdda3,0xe5c4,0xe605,0xdde4,0xdda3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5a3,0xddc3,0xdda3,0xdd83,0xddc3,0xddc3,0xdd83,0xdda3,0xdda3,0xdd83,0xdd82,0xdd64,0xd543,0xd543,0xd544,0xd584,0xdda4,0xdda4,0xddc4,0xdda3,0xdda4,0xdda4,0xdda4,0xdda4,0xdda5,0xdda5,0xdd85,0xd585,0xd565,0xdd85,0xe5c5,0xdda5,0xdd85,0xdda5,0xddc5,0xe5e6,0xe606,0xe5e6,0xe5e7,0xe5e7,0xde06,0xd5a7,0xddc6,0xddc6,0xcd87,0xcd86,0xd586,0xddc7,0xe607,0xdde6,0xd5a6,0xcd66,0xcd87,0xcd66,0xcd86,0xddc6,0xddc6,0xdde7,0xe607,0xe607,0xe5e7,0xdde7,0xde07,0xde27,0xe627,0xdde6,0xdde7,0xddc7,0xdde7,0xdde7,0xdde7,0xe627,0xe627,0xe607,0xe647,0xde07,0xde08,0xe608,0xdde8,0xdde7,0xdde7,0xde07,0xde07,0xde07,0xde28,0xe628,0xde07,0xe608,0xdde7,0xddc7,0xddc7,0xdde7,0xddc8,0xdde7,0xdde7,0xde08,0xddc7,0xc528,0xde08,0xe648,0xe628,0xde08,0xde07,0xe628,0xe627,0xde08,0xe627,0xcd67,0xb508,0xcda8,0xdde8,0xe647,0xe627,0xe647,0xe667,0xe627,0xcd67,0xbd28,0xe647,0xe647,0xe647,0xe628,0xddc7,0xddc7,0xdde7,0xdde7,0xddc7,0xddc8,0xd5c8,0xd5a8,0xd5a8,0xd588,0xddc7,0xd5a7,0xc567,0xcd88,0xd5c8,0xdde8,0xdde8,0xd5c8,0xd5a7,0xddc8,0xdda7,0xddc7,0xddc8,0xddc7,0xddc8,0xdde8,0xd5a7,0xd587,0xcd67,0xcd47,0xc527,0xb4e7,0xc547,0xa4a9,0x8c28,0xa4c8,0x9c68,0x8c29,0xa4a8,0xb4e8,0xbd28,0xb509,0xbd08,0xbd27,0xc527,0xc527,0xc548,0xc527,0xcd27,0xc527,0xc547,0xbd27,0xbd07,0xa4a8,0xa488,0xcd68,0xcd67,0xcd68,0xc547,0xc547,0xc548,0xc568,0xc548,0xc528,0xd588,0xcd67,0xcd88,0xc549,0xcd88,0xd5a8,0xd5c7,0xd5a7,0xd5c8,0xd5a7,0xd5a7,0xcd68,0xbd48,0xa4c9, +0xb484,0xb484,0xb484,0xb484,0xb484,0xb4a4,0xb4a4,0xb483,0xb484,0xb4a4,0xbcc4,0xbca4,0xbca4,0xbca4,0xb4a4,0xb4a4,0xb4a4,0xbcc4,0xbcc5,0xbca4,0xb4a4,0xb484,0xb484,0xac64,0xb464,0xac64,0xb484,0xb484,0xac84,0xa444,0xac65,0xb484,0xbcc4,0xbcc4,0xbcc3,0xbce4,0xc4e3,0xbce5,0xc507,0xc503,0xc567,0xbd07,0xc4e3,0xc4e4,0xc4c3,0xc4c3,0xc4c3,0xc4c4,0xbca3,0xbca3,0xc4e4,0xc4e3,0xc4e3,0xc503,0xc503,0xc4e3,0xc4e3,0xc4e3,0xc4e3,0xc503,0xc4e3,0xcd03,0xcd03,0xcd03,0xc503,0xc4e4,0xc523,0xc543,0xc523,0xc523,0xc503,0xc4e3,0xc4c3,0xc4e3,0xcd03,0xcd03,0xcd03,0xcd03,0xc4e3,0xc503,0xc4e3,0xc4c3,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xcce2,0xc4c2,0xc4c2,0xc4c2,0xc4e2,0xc4c2,0xc4c1,0xc4c2,0xc4e2,0xc4e2,0xccc1,0xccc2,0xcce2,0xc4a1,0xc4c2,0xccc2,0xc4c1,0xc4a2,0xc4a2,0xc4a1,0xccc3,0xc4c2,0xc4a1,0xc4c2,0xc4c3,0xc4c2,0xc4c2,0xc4c2,0xc4a2,0xc4a1,0xc4c2,0xccc3,0xccc2,0xc4c1,0xc4c2,0xc4c3,0xc4c3,0xc4a1,0xc4a2,0xc4c1,0xbc82,0xc4a3,0xc4c2,0xc4c1,0xc4e2,0xc4e3,0xbcc2,0xc4c2,0xcce3,0xc4c2,0xc4e2,0xc4c3,0xccc4,0xc4a3,0xc483,0xc4a3,0xc4a3,0xc4a3,0xc4a3,0xc4c4,0xc4e4,0xc4c3,0xc4e4,0xc4c4,0xc4a2,0xc4a4,0xc483,0xbc63,0xb464,0xb463,0xac64,0xac64,0xb483,0xa403,0xa424,0x9bc5,0xa404,0xbca3,0xbc84,0xbca4,0xb464,0xb464,0xbce4,0xc4e5,0xc4c3,0xc4c4,0xc4c5,0xbca3,0xbca3,0xbca3,0xbca4,0xb4a5,0xbcc5,0xc4c4,0xc484,0xc484,0xc4c5,0xbc85,0xb486,0xbca5,0xbcc4,0xc4e6,0xc4e6,0xc505,0xc4c5,0xc4a5,0xc4c5,0xbca6,0xbcc6,0xbce5,0xc525,0xc546,0xc546,0xc546,0xc525,0xc525,0xcd67,0xc547,0xc526,0xc547,0xc568,0xc547,0xc546,0xc546,0xc567,0xbd06,0xa447,0xbd26,0xc546,0xbd06,0xbce6,0xc526,0xc546,0xc526,0xc526,0xc506,0xb466,0x9407,0x9c26,0xa486,0xb4c6,0xbd06,0xc526,0xc546,0xc526,0xb466,0xac67,0xc526,0xc526,0xc526,0xbd26,0xbd06,0xc526,0xc527,0xbd07,0xbd07,0xbd07,0xbd08,0xbd27,0xbd07,0xbd27,0xc547,0xbd27,0xbd28,0xbd48,0xbd48,0xbd48,0xbd29,0xbd29,0xbd29,0xbd49,0xbd48,0xbd48,0xbd49,0xbd49,0xbd49,0xbd49,0xbd49,0xbd08,0xacc9,0xacc9,0xacc8,0x9c89,0xa4c9,0x8c2a,0x7bea,0x8c09,0x8c2a,0x840a,0x8c49,0x9c88,0xaca8,0xa489,0x9c48,0x9448,0xa488,0xa468,0x9c69,0x9c69,0x9c68,0x9c48,0x9c48,0x9428,0x8c08,0x83c9,0x83a9,0x9c49,0x9c49,0x9429,0x8c08,0x8c08,0x83e8,0x83e8,0x83e8,0x83e8,0x8c28,0x8c08,0x8c08,0x7b69,0x83a8,0x8be8,0x8c07,0x8be7,0x8c07,0x8be7,0x83c7,0x7ba8,0x7b88,0x7349, +0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0004,0x0005,0x0003,0x0002,0x0004,0x0005,0x0003,0x0004,0x0005,0x0002,0x0005,0x0005,0x0004,0x0005,0x0004,0x0002,0x0004,0x0005,0x0005,0x0004,0x0002,0x0004,0x0005,0x0004,0x0004,0x0005,0x0004,0x0003,0x0002,0x0002,0x0003,0x0004,0x0005,0x0005,0x0005,0x0005,0x0003,0x0003,0x0005,0x0005,0x0005,0x0005,0x0005,0x0002,0x0004,0x0006,0x0005,0x0002,0x0003,0x0006,0x0006,0x0003,0x0005,0x0006,0x0004,0x0005,0x0004,0x0004,0x0006,0x0003,0x0003,0x0006,0x0004,0x0004,0x0006,0x0066,0x0004,0x0004,0x0006,0x0006,0x0005,0x0003,0x0005,0x0007,0x0006,0x0006,0x0005,0x0003,0x0002,0x0002,0x0003,0x0006,0x0006,0x0006,0x0005,0x0003,0x0006,0x0005,0x0005,0x0006,0x0004,0x0004,0x0006,0x0005,0x0006,0x0004,0x0005,0x0047,0x0047,0x0006,0x0004,0x0007,0x0007,0x0006,0x0005,0x0005,0x0008,0x0007,0x0004,0x0005,0x0028,0x0068,0x0005,0x0005,0x0005,0x0006,0x00a7,0x0006,0x0004,0x0004,0x0004,0x0004,0x0003,0x0004,0x0004,0x0004,0x0003,0x0004,0x0004,0x0004,0x0003,0x0004,0x0004,0x0003,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0003,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0003,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0005,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0003,0x0004,0x0003,0x0003,0x0005,0x0003,0x0003,0x0003,0x0003,0x0004,0x0004,0x1004,0x0003,0x0004,0x1844,0x1804,0x2024,0x2064,0x0004,0x3104,0x2924,0x00a7,0x0005,0x0004,0x0005,0x0004,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x00a5,0x0025,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0065, +0x3143,0x3143,0x3164,0x3163,0x2963,0x2943,0x2943,0x2943,0x2943,0x2942,0x2943,0x2942,0x3184,0x3164,0x2922,0x2923,0x2943,0x3163,0x2922,0x3143,0x2943,0x2101,0x2922,0x2922,0x2102,0x2102,0x2922,0x2102,0x2102,0x2102,0x2102,0x2922,0x2902,0x2922,0x2922,0x2901,0x2922,0x2922,0x2102,0x2102,0x2122,0x2922,0x2101,0x2922,0x2922,0x2922,0x2942,0x2101,0x20e0,0x2101,0x2922,0x2101,0x2101,0x2922,0x2101,0x2101,0x2101,0x20e1,0x20e1,0x2101,0x20e1,0x2101,0x2102,0x2122,0x2101,0x2101,0x2101,0x2922,0x2122,0x2101,0x2101,0x2902,0x2101,0x2102,0x2101,0x2101,0x2101,0x2101,0x20e1,0x20e1,0x20c0,0x20e0,0x20e0,0x20e0,0x20c0,0x20e0,0x20c0,0x20c0,0x20c0,0x20c0,0x20c0,0x20e0,0x20c0,0x18c0,0x18c0,0x20e0,0x20c0,0x20c0,0x20c0,0x20e0,0x18c0,0x2922,0x2102,0x18c0,0x20c0,0x20e0,0x2101,0x20e1,0x20e1,0x2102,0x20c0,0x2102,0x2922,0x2101,0x20e1,0x20c0,0x20c0,0x2102,0x2122,0x2922,0x2902,0x20e0,0x20c0,0x2122,0x2942,0x2922,0x20e0,0x20e0,0x20e0,0x20c0,0x20e1,0x20e0,0x18c0,0x2102,0x2122,0x2922,0x20e0,0x20e0,0x20e0,0x20e0,0x2902,0x2942,0x2922,0x20c0,0x20c0,0x2101,0x2902,0x2102,0x20e1,0x20e1,0x2902,0x2922,0x2101,0x2101,0x2122,0x2922,0x28e1,0x20c0,0x20e1,0x2901,0x20e1,0x20e0,0x20e1,0x2101,0x2902,0x2922,0x2922,0x2922,0x2901,0x2902,0x2922,0x2923,0x2923,0x2922,0x2942,0x2943,0x2943,0x2902,0x2901,0x28e1,0x2901,0x20e1,0x2101,0x2943,0x2923,0x2902,0x2902,0x2943,0x2102,0x20e1,0x2923,0x2922,0x2902,0x2943,0x3163,0x2943,0x2922,0x3163,0x2943,0x3164,0x3184,0x2942,0x2963,0x3164,0x3164,0x3164,0x2943,0x3163,0x2943,0x2943,0x2943,0x2964,0x3184,0x3163,0x3184,0x3184,0x3163,0x2943,0x3163,0x2943,0x2943,0x2922,0x2942,0x2943,0x2943,0x2942,0x2943,0x2923,0x2103,0x2923,0x2943,0x2943,0x2922,0x2963,0x2963,0x2943,0x2963,0x3984,0x39c3,0x39c3,0x39a3,0x3163,0x3163,0x39c4,0x41c4,0x2983,0x39a4,0x41e4,0x39a4,0x41e5,0x41c4,0x39a4,0x41e4,0x41c4,0x3185,0x3184,0x3184,0x3184,0x3185,0x3184,0x3184,0x31a5,0x31a4,0x31a4,0x39c5,0x39a5,0x39a5,0x31a5,0x3184,0x3184,0x3184,0x39a5,0x39c5,0x3185,0x3184,0x2964,0x3184,0x2964,0x3185,0x3184,0x3185,0x41c4,0x39e4,0x39e4,0x39a4,0x2963,0x39c4,0x41e5,0x3183,0x3184,0x41c5,0x31a4,0x39a4,0x41c4,0x3184,0x39c4,0x41e5,0x39e6,0x31a5,0x31a5,0x3164,0x2964,0x2964,0x2964,0x2964,0x2944,0x2944,0x2964,0x2964,0x2965,0x2964,0x2964,0x2964,0x2964,0x2964,0x3184,0x3185,0x3185,0x2944,0x3185, +0x52ca,0x52ca,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x4a89,0x52ca,0x4aaa,0x4a89,0x4a89,0x4a69,0x4269,0x4aaa,0x4289,0x4a89,0x4aaa,0x52ca,0x4aa9,0x4a89,0x4269,0x4268,0x4a89,0x4aa9,0x4a89,0x4a89,0x4a69,0x4269,0x4248,0x4a69,0x4a69,0x4269,0x4aaa,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4269,0x4269,0x4228,0x4248,0x4a89,0x4a69,0x4228,0x4248,0x4a89,0x4a69,0x4269,0x4a89,0x4269,0x4268,0x4aa9,0x4aa9,0x4aa9,0x4289,0x4a89,0x4289,0x4269,0x4268,0x4227,0x4a68,0x4a89,0x4248,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a68,0x4248,0x3a27,0x4228,0x4248,0x4248,0x4248,0x3a28,0x3a28,0x4268,0x4269,0x3a28,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x4269,0x3a28,0x3a28,0x3a28,0x4228,0x4269,0x3a28,0x4228,0x4269,0x4249,0x3a28,0x3a07,0x4248,0x4268,0x4268,0x4228,0x39e7,0x3a07,0x4248,0x3a07,0x3a28,0x4228,0x39e7,0x4228,0x4228,0x4248,0x4248,0x3a07,0x3a08,0x4228,0x3a28,0x3a28,0x4248,0x3a07,0x3a07,0x4268,0x4248,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x31c7,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x39e7,0x39e7,0x4228,0x3a28,0x3a27,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x3a08,0x4248,0x3a07,0x3a07,0x4228,0x3a07,0x3a08,0x4228,0x3a07,0x3a08,0x3a28,0x3a28,0x4228,0x3a07,0x4248,0x4248,0x4248,0x4a69,0x4208,0x4a49,0x4a69,0x4249,0x4228,0x4248,0x4228,0x4208,0x4228,0x4208,0x3a07,0x4228,0x3a07,0x39e7,0x4228,0x4228,0x3a28,0x4228,0x4249,0x4228,0x4228,0x4249,0x4248,0x4228,0x4248,0x4248,0x4a69,0x4248,0x4228,0x4228,0x4a69,0x4a69,0x4249,0x4228,0x4a69,0x4a8a,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x528a,0x4a8a,0x4a69,0x4a89,0x52aa,0x4a8a,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4a89,0x52a9,0x4a8a,0x4248,0x4248,0x52aa,0x528a,0x52a9,0x5aea,0x5289,0x5289,0x3a29,0x3249,0x3229,0x4a8a,0x52aa,0x4229,0x4249,0x52a9,0x4269,0x3a28,0x4a69,0x3a49,0x3a48,0x4aaa,0x4a69,0x4249,0x4a89,0x5aca,0x52ca,0x4a89,0x4a89,0x52aa,0x4a89,0x4a69,0x528a,0x52aa,0x52aa,0x5aea,0x52ca,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x4a89,0x4a89,0x4a69,0x528a,0x52aa,0x4a8a,0x4a8a,0x52a9,0x3a6a,0x4229,0x41e8,0x3209,0x52c9,0x52a9,0x39e8,0x4a89,0x4a89,0x3a29,0x4a49,0x4a89,0x4228,0x4248,0x4a48,0x4207,0x4a89,0x52c9,0x52aa,0x5289,0x5289,0x4a89,0x4a89,0x4a89,0x4a8a,0x4a89,0x528a,0x52ca,0x4a69,0x4a69,0x4a69,0x4a48,0x528a,0x4a89,0x52ca,0x4a69,0x528a,0x5aca,0x52aa, +0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b2b,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x52eb,0x52eb,0x52eb,0x530b,0x5b0b,0x52eb,0x530b,0x5b2b,0x5b2b,0x5b0b,0x530b,0x5b0b,0x530b,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x530b,0x52eb,0x52eb,0x52eb,0x530b,0x52eb,0x52ca,0x52ea,0x52ea,0x4aaa,0x52ca,0x52eb,0x52eb,0x52eb,0x52ea,0x52ea,0x52ea,0x530b,0x530b,0x530b,0x52eb,0x530b,0x530b,0x52ea,0x530b,0x530b,0x52ca,0x52ea,0x52ea,0x52eb,0x5b0b,0x52ea,0x52eb,0x52eb,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aca,0x4aca,0x52ea,0x530b,0x530b,0x530b,0x4aca,0x52ea,0x5b2b,0x52eb,0x52eb,0x5b2c,0x5b2c,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x530b,0x52eb,0x52eb,0x52eb,0x5b0b,0x5b2b,0x4289,0x4aa9,0x5b2b,0x530b,0x52eb,0x3a28,0x4a89,0x4269,0x4248,0x52ea,0x3a48,0x31e6,0x3a28,0x4248,0x52ca,0x530b,0x4288,0x3206,0x3a47,0x4288,0x52ea,0x5b0b,0x4268,0x3227,0x3a27,0x4aa9,0x5b0b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x4a89,0x3a48,0x4268,0x52eb,0x5aeb,0x52eb,0x5b0b,0x4248,0x4247,0x4268,0x5b0b,0x5b0b,0x52ca,0x4248,0x4289,0x52ea,0x52eb,0x4248,0x39e6,0x4a89,0x4aa9,0x3a48,0x4248,0x4a89,0x5b2b,0x52eb,0x4a89,0x52aa,0x5b0b,0x4268,0x52aa,0x4aa9,0x3a28,0x4269,0x3a48,0x52ca,0x4aaa,0x4248,0x3a27,0x4a89,0x5aeb,0x4a89,0x4aaa,0x4aaa,0x52eb,0x5b2c,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x4248,0x3a07,0x52ca,0x5aeb,0x4269,0x52aa,0x632c,0x52eb,0x4aaa,0x634c,0x5b0b,0x4a89,0x52eb,0x634c,0x52ea,0x4a89,0x52eb,0x4aca,0x5b4c,0x5b0b,0x52ca,0x52ca,0x52aa,0x634c,0x5aeb,0x52cb,0x634c,0x636c,0x632c,0x52ca,0x5b0b,0x632c,0x52eb,0x632c,0x634c,0x634c,0x634c,0x634c,0x6b8d,0x636d,0x636d,0x6b8d,0x634c,0x634c,0x636d,0x6b6d,0x634d,0x632c,0x634c,0x6b8d,0x6b4d,0x634d,0x6b8d,0x634c,0x5b0c,0xac8b,0xdd8a,0xc4c9,0x7bab,0x52ec,0x9c4a,0xbcc9,0x52ed,0x8beb,0xd529,0x736b,0xa44b,0xd549,0x8beb,0xcd4a,0xdd69,0x8beb,0x634d,0x6b4c,0x634d,0x6b8e,0x6b6d,0x634d,0x634d,0x6b6d,0x6b6d,0x634d,0x6b8e,0x6b8d,0x6b8d,0x6b8e,0x6b6d,0x6b4d,0x6b6d,0x634c,0x634c,0x634d,0x634d,0x634c,0x6b6d,0x632c,0x636c,0x634d,0x940b,0xe5c9,0xedc9,0xac49,0x630c,0x738c,0xc528,0x838b,0x530c,0xd529,0xc4c9,0x5b0c,0xdd89,0xbc89,0xa46a,0xedc9,0xcce9,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x634c,0x6b4d,0x632c,0x634c,0x630c,0x634c,0x634c,0x634c,0x634c,0x6b4d,0x634c,0x634d,0x634d,0x6b4d,0x632c, +0x52ea,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x530b,0x52eb,0x52eb,0x52ea,0x52ca,0x52ca,0x52eb,0x52ca,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x5aeb,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x52ca,0x5aeb,0x5acb,0x52eb,0x52ca,0x5aeb,0x52ea,0x52ca,0x52ca,0x52aa,0x52ca,0x4a8a,0x4aaa,0x4aca,0x4aca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aca,0x52ea,0x52eb,0x52ca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aa9,0x4aca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ea,0x4aa9,0x4a89,0x4aa9,0x4aa9,0x4aca,0x4aaa,0x4aa9,0x52ca,0x4aaa,0x4aa9,0x52ca,0x52ca,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aa9,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aaa,0x52ca,0x52ea,0x52ea,0x4aca,0x4aca,0x5b0b,0x638d,0xa575,0x9513,0x530b,0x5b2b,0x6b8d,0xadb5,0x8470,0x8c91,0x9d13,0x530a,0x9d33,0xad95,0xa574,0x8cb1,0x52ea,0x52c9,0x8cb1,0xad95,0xadb5,0x9d33,0x5b2b,0x4aa9,0x7c50,0xadb5,0xa594,0x73ce,0x4ac9,0x5b2b,0x52eb,0x5b2b,0x634c,0x52ea,0x8470,0xa574,0x9513,0x5b4b,0x52ca,0x5b0b,0x52ea,0x8cd2,0xad95,0x94f2,0x5b2b,0x52ea,0x73ce,0xa554,0x94d2,0x5b2b,0x5aeb,0x94d2,0xad74,0x73ee,0x73ee,0x9d33,0x94f2,0x8490,0x530a,0x638c,0x9d13,0x740f,0x5b2b,0x94f2,0x7c0f,0x8450,0xa554,0x9d33,0xa533,0x73ce,0x8c91,0x9d33,0x9d13,0x8470,0x636c,0x94d2,0x9d13,0x9d12,0x73cd,0x5b2b,0x634c,0x5b2b,0x630c,0x52eb,0x8cb1,0xa554,0x636c,0x5b0b,0x94d2,0x7c0f,0x52aa,0x8450,0x9d13,0x636c,0x73ee,0xad74,0x8c91,0x5b0b,0x8450,0x9d13,0x9cf3,0x9d34,0x7c50,0x8450,0xa534,0x9d13,0x94d2,0x73ce,0x9cf3,0x9d13,0x6bad,0x632b,0x8451,0xad75,0x8cb1,0x8470,0xa554,0x8c90,0x844f,0x8c91,0x7c0f,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5aeb,0x5aeb,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x4acb,0x940a,0xedc8,0xbca8,0xcd28,0xa448,0x3a6b,0xd549,0xfde7,0x732a,0x93ea,0xfe88,0xac48,0xdd89,0xfe27,0xa429,0xede9,0xd528,0x83ab,0x5b0c,0x630b,0x5b0c,0x634d,0x630c,0x632c,0x632c,0x634d,0x634d,0x634d,0x6b6d,0x6b6d,0x634d,0x5b0c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x630c,0x6b6b,0xedc9,0xd548,0xcd29,0xdd67,0x5aaa,0xac8a,0xfea7,0xbc88,0x428b,0xf5e8,0xede7,0x9c08,0xfea7,0xd507,0xc529,0xfe28,0xbc89,0x5aeb,0x5aeb,0x630b,0x5acb,0x5aeb,0x632c,0x5aeb,0x5aeb,0x5aeb,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b2c,0x632c,0x632c,0x5b0c, +0x52aa,0x52ca,0x52ea,0x52eb,0x52ea,0x52eb,0x530b,0x52ea,0x52eb,0x52ca,0x52ca,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x52eb,0x52cb,0x52ca,0x4aca,0x42cb,0x52ca,0x4aca,0x4aca,0x42ca,0x4aea,0x52aa,0x52eb,0x52eb,0x52eb,0x4aca,0x4aeb,0x530b,0x52ca,0x52eb,0x4aea,0x42aa,0x42ca,0x52ca,0x52ca,0x4aca,0x52ea,0x4aca,0x4aaa,0x52ca,0x4aaa,0x4aca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x52ca,0x52ca,0x4aaa,0x52ca,0x4aca,0x52ea,0x4aaa,0x52ca,0x428a,0x326a,0x3a8a,0x3a6a,0x4aaa,0x52ca,0x42aa,0x4aaa,0x52ca,0x3a8a,0x326a,0x3a8a,0x428a,0x4aaa,0x428a,0x4aca,0x3a6a,0x326a,0x52ca,0x426a,0x3a6a,0x52ea,0x52ca,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52eb,0x530b,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x4aca,0x4aca,0x52ca,0x52ca,0x5aeb,0x530b,0xdf3b,0xefde,0x740e,0x3a68,0xa574,0xffff,0x9d33,0xceb9,0xef9d,0x6bad,0xe79d,0xffff,0xf7de,0xf7fe,0xc678,0x42a8,0xceda,0xffff,0xf7de,0xe75c,0x52ea,0xa594,0xf7de,0xffff,0xf7ff,0xe77c,0x8470,0x52ea,0x634c,0x634b,0x52ea,0xb5f6,0xf7fe,0xffff,0xf7ff,0xdf1b,0x73ee,0x52ca,0xc638,0xffff,0xffff,0xffff,0xd6da,0x5b0b,0x9d33,0xffff,0xefbd,0x7c0e,0x73ee,0xefbd,0xffff,0xa574,0xbe17,0xffff,0xf7fe,0xf7ff,0xb5b5,0x8470,0xffff,0xb5b6,0x6b8d,0xf7ff,0xb616,0xc678,0xffff,0xf7de,0xffff,0xa574,0xdf3b,0xffff,0xffff,0xd6ba,0x8450,0xf7de,0xffff,0xffff,0xe75c,0x7c0f,0x52ca,0x6b4c,0x52aa,0xad95,0xf7de,0xffff,0xef7d,0x7bee,0xe77d,0xe73c,0x5b0b,0xe75d,0xe77c,0x73ce,0xe73c,0xfffe,0xffff,0xa554,0xbe38,0xffff,0xf7de,0xffff,0xbe37,0xc699,0xffff,0xffff,0xef9d,0x8c91,0xef9e,0xffff,0xa554,0x52ea,0xdefb,0xffff,0xd6b9,0x8cd1,0xd6da,0xc658,0xdf3b,0xe75c,0x9cf3,0x5aca,0x5b0b,0x5aeb,0x5b0c,0x5aeb,0x632c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x630b,0x326b,0xc509,0xd508,0x7b89,0xe588,0xc4e7,0x8bea,0xe589,0xe588,0xb488,0x8bca,0xf5e8,0xedc8,0xee08,0xf5e8,0xac49,0xee49,0xe5a8,0x8bca,0x5b0c,0x632b,0x634c,0x630b,0x5b2c,0x5b2c,0x5aeb,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x634c,0x634c,0x632c,0x630b,0x630b,0x632c,0x5b0b,0x62eb,0x52cb,0x83eb,0xf5e8,0x8369,0xcd28,0xedc8,0x93c9,0xd569,0xeda9,0xe5a8,0x730a,0xe589,0xf5e8,0xede7,0xf5e8,0xccc8,0xbcea,0xfe28,0xccc9,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x634c,0x632c,0x630c,0x5b0c,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x632c,0x5b0c,0x630b,0x632c,0x5b0c,0x632c, +0x5b0b,0x5b0b,0x52ca,0x52eb,0x52ca,0x52ea,0x52ea,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x52ea,0x52ca,0x530b,0x9b2b,0xdb4b,0xd32a,0x62aa,0x9b0a,0xe34a,0xdb4a,0x82ca,0xb32a,0xa2a9,0xa32b,0xab2a,0x9b0a,0xb309,0xbb2a,0xdb6a,0x930a,0xb30a,0xe34b,0xbb2a,0x5aca,0x52ca,0x4aca,0x4aca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4a89,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aa9,0x4aca,0x4aaa,0x428a,0xac69,0xd548,0xc4e7,0xb4a7,0x93e9,0x2a6a,0xac49,0x9c08,0x52ea,0xbd08,0xd528,0xbca8,0xb4a8,0x7b68,0xb4a8,0x93e9,0xcd28,0xcd08,0x7349,0xb4a8,0xd567,0x9c29,0x428a,0x52ca,0x4aca,0x52eb,0x52ca,0x52ca,0x52ea,0x530b,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x52ea,0x4aca,0x52ca,0x52ca,0x4289,0x9d33,0xf7ff,0xadb5,0x3226,0xd6fa,0xe79d,0x4ac9,0xd6fa,0xe77c,0x6bad,0xe79d,0xd71a,0x73ce,0xce99,0xffff,0x94d1,0xc699,0xefde,0x9d33,0x740e,0x7c0f,0xefdd,0xe77d,0x9d33,0xad95,0xf7de,0xdf1b,0x5b2b,0x5b2b,0x52ca,0x8cb1,0xf7fe,0xdf3b,0xa554,0xbe38,0xffff,0xc699,0x94f2,0xffff,0xd6da,0x9d13,0xceb9,0xffff,0xb5f7,0x94f2,0xf7de,0xfffe,0xa573,0x9d54,0xf7ff,0xffde,0xa574,0xb617,0xffff,0xa554,0xdf3b,0xef9d,0x94f2,0xffff,0xad95,0x636c,0xf7de,0xc637,0x5b2b,0xc678,0xf7de,0xa554,0x638c,0xdf5c,0xef7d,0xa554,0x8470,0x8490,0xf7ff,0xce79,0xadb6,0xffff,0xc637,0x4247,0x634c,0x4a89,0xdf5c,0xefbe,0xa554,0xd6fa,0x844f,0xadb6,0xffff,0xd6ba,0xffff,0xa533,0x9d13,0xffff,0xbe17,0xc658,0xbe17,0x6bce,0xc679,0xffff,0xc658,0x7c0f,0xceb9,0xf7de,0xb5d7,0x9d13,0x7c2f,0xef7d,0xffff,0xce99,0x7c4f,0xf7be,0xffff,0xd6da,0x7c2f,0xb5b5,0xad95,0xe77c,0xdf3b,0x8c91,0x52ca,0x5b2c,0x5b0b,0x5aeb,0x5b0b,0x5b2c,0x632c,0x52eb,0x5b0b,0x52cb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x4aaa,0x83ea,0xe5a8,0xdd47,0xfe27,0xc4c8,0xc509,0xf5e7,0xe5a8,0xdd87,0xac89,0xcd09,0xedc8,0xdd48,0xdd88,0xac89,0xee29,0xd508,0x7b8a,0x5b0c,0x6b4d,0x5b0b,0x5b0c,0x632c,0x5b0b,0x632c,0x632c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x630c,0x5b0c,0x5b0b,0x632c,0x6b6d,0x630c,0x630c,0x632c,0x630b,0x632c,0x630c,0x5aeb,0x630c,0x5b0b,0xddc9,0xede7,0xf628,0xf608,0xa3e9,0xf629,0xeda8,0xfe48,0xb469,0xdd48,0xd549,0xf647,0xccc8,0xcd28,0xc509,0xfe48,0xbca9,0x632c,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x630c,0x5aeb,0x634d,0x634c,0x5b0c,0x5b0c,0x632c,0x630c,0x632c,0x5b0c,0x630c,0x632c,0x5b0c,0x632c, +0x5b2c,0x52eb,0x52eb,0x52aa,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52ca,0x52ca,0x52aa,0x52ca,0x530b,0x52ea,0x52ca,0x3aca,0xc34b,0xeb2a,0xeb6a,0xd32a,0xeb6b,0xcb2a,0xdb6b,0xe309,0xcbac,0xe42d,0xe36a,0xeb8a,0xdb4a,0xcb2a,0xe36a,0xe329,0x8ae9,0xeb8b,0xdb2a,0xf38a,0xa30a,0x3acb,0x52ca,0x530b,0x52ca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4a89,0x4aa9,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4a89,0x4289,0x9c09,0xf626,0xb489,0xcd08,0xd547,0x42aa,0xe5a6,0x9be9,0x3a8a,0xc4e8,0xfe07,0x9c08,0xd547,0xedc6,0xd547,0xa448,0xeda6,0xe5a7,0xcd07,0xedc8,0xe5a7,0x8bc9,0x4aca,0x52ca,0x4aca,0x52ea,0x52ea,0x52ca,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x4aca,0x4aca,0x4aaa,0x52ca,0x52ea,0x52ca,0x52ca,0x4aca,0x638d,0xe79d,0xdf1b,0x7c4f,0xf7fe,0xbe58,0x21a4,0xd6fa,0xe77c,0x636c,0xe77c,0xd6da,0x3a25,0x7c0f,0xf7fe,0xb616,0xc678,0xf7fe,0xf7fe,0xdf1b,0x9d33,0xffff,0xa574,0x3206,0x3206,0xbe17,0xf7fe,0x7c2f,0x5b2b,0x4289,0xadb5,0xf7fe,0x8cb1,0x52ea,0x530b,0x7c0f,0x6bad,0xc698,0xefbd,0x638c,0x4268,0x5b2b,0xe77c,0xdf1b,0x9d33,0xf7de,0xf7de,0xd6da,0xceb9,0xf7de,0xffde,0xa574,0xb616,0xffff,0xb5f6,0xef7d,0xef7c,0x8cd2,0xffff,0xadb5,0x638c,0xf7de,0xc658,0x0961,0xad95,0xf7fe,0x7c0e,0x4aa9,0xdf3c,0xf7be,0xefbd,0xc678,0x8450,0xffff,0xbe17,0x9d13,0xffff,0xc638,0x4aa9,0x6b6d,0x4aca,0xbe17,0xffff,0xe73b,0x94f2,0x4288,0x6bae,0xe77d,0xffff,0xe73c,0x5b0b,0x7c0f,0xef9e,0xf7de,0xbe17,0x6b8d,0x4288,0x9d13,0xffff,0xa554,0x31c6,0xceb9,0xffff,0xef9d,0xdf1a,0x8470,0xef7d,0xffff,0xe77c,0xbe37,0xf7de,0xffff,0xdefa,0x6b6c,0x7bef,0x73ee,0x7c0f,0x7c0f,0x6b8d,0x632c,0x5aeb,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x52eb,0x52cb,0x5aca,0x5aeb,0x3a6b,0x93ea,0xd548,0xb489,0x5aca,0xacaa,0x9be9,0x7b8a,0xbceb,0xa44b,0x940a,0xa44a,0x9bea,0xac8a,0x8baa,0xc509,0xcd48,0x83ab,0x530c,0x6b4c,0x5aeb,0x5b2b,0x5b0b,0x5b0b,0x630c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x632c,0x5aeb,0x5aeb,0x630c,0x630b,0x5b0b,0x5b0b,0x630c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x52eb,0x5b0c,0x5aeb,0x736a,0xc549,0xcd48,0x8b8a,0x8bcb,0xb469,0x630a,0xb4aa,0xa429,0x9c29,0x93ea,0xa429,0x83aa,0xa44a,0x8baa,0xcd29,0xbcaa,0x5b0b,0x5b0b,0x630c,0x634c,0x5b0c,0x5aec,0x5aeb,0x5b0c,0x632c,0x5b0b,0x5b2c,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x5b0c,0x5b0c,0x5aeb,0x5b0c,0x5b0b,0x5b0b, +0x52ea,0x52ca,0x52eb,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52cb,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52aa,0x3aaa,0xb32b,0xf38b,0xeb4a,0xd30a,0xeb4a,0x3a89,0x62ca,0xf34b,0xab2b,0xf42d,0xfb6a,0xfb6a,0xfb6a,0xa2e9,0xdb4b,0xeb4a,0x92e9,0xdb6a,0xe34a,0xe34b,0x92ea,0x4b0b,0x52ea,0x52eb,0x52ca,0x4aaa,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x4aa9,0x4aa9,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x4aa9,0x4a89,0x52a9,0x4289,0xd547,0x7b69,0x7369,0xe5a7,0xbca8,0xd567,0x528a,0x3a8a,0x8389,0xdd66,0x21e9,0x93c9,0xfe27,0x93a9,0x9429,0xede7,0xedc7,0xbc88,0xdd68,0xede7,0x9c28,0x4aaa,0x52ea,0x52ea,0x4aca,0x52ea,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aca,0x52ca,0x4aaa,0x52ca,0x52eb,0x4288,0xbe58,0xefde,0xd71a,0xefdd,0x8c90,0x3205,0xd6da,0xe77c,0x638c,0xe79c,0xd6b9,0x0120,0x94d2,0xf7ff,0xadb5,0xc678,0xf7de,0xc658,0xa574,0x8cd1,0xf7ff,0xbe17,0x4288,0x4ac8,0xce99,0xf7de,0x73ee,0x5b0b,0x4289,0xa595,0xf7ff,0x9d33,0x4246,0x636c,0xa554,0x8cd1,0xbe37,0xf7fe,0x7c2f,0x4247,0x73cd,0xef9d,0xdf1b,0x9d13,0xf7be,0xce99,0xefbe,0xf7dd,0xce99,0xf7de,0xa594,0xb5f6,0xfffe,0xf7fe,0xf7de,0xa554,0x8450,0xffff,0xad95,0x530a,0xf7de,0xc658,0x3a46,0xad95,0xf7fe,0x8c90,0x52ea,0xe73c,0xf7be,0xd6da,0xb5d6,0x8470,0xefbe,0xf7de,0xf7de,0xe73c,0x8430,0x5aeb,0x634c,0x5b2b,0x6bad,0xb5d6,0xef7d,0xf7fe,0x94d2,0x3a07,0xbe38,0xffff,0xb5b5,0x4a89,0x632c,0x94f2,0xd6fb,0xffff,0xce79,0x4aa9,0x9d34,0xffff,0xad74,0x4a68,0xce79,0xffff,0xdefb,0xce78,0x844f,0xef9d,0xdefb,0xef9d,0xffde,0xdf1b,0xe77c,0xdf1b,0x5aea,0x6b6d,0x6b8d,0x632c,0x632c,0x634c,0x630b,0x52cb,0x5b0b,0x52cb,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x530b,0x4aaa,0x732a,0x4a8b,0x2a4a,0x4aa9,0x6b0a,0x52ab,0x5aeb,0x530b,0x4acb,0x630b,0x6b2b,0x4aeb,0x42cc,0x630b,0x52cb,0x326b,0x52cb,0x630a,0x6b2b,0x630c,0x632b,0x630c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x5b0b,0x632c,0x5b0c,0x5b0c,0x632c,0x5b0b,0x5b0b,0x5aeb,0x630b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52ca,0x5aeb,0x632b,0x52eb,0x62ea,0x5aca,0x428a,0x62eb,0x6b0a,0x734b,0x42ab,0x734a,0x630b,0x52cb,0x632a,0x7b8a,0x6b0b,0x6b4a,0x6b2a,0x5aea,0x630c,0x5b0b,0x5aeb,0x630c,0x632c,0x5aeb,0x5b0c,0x632c,0x5b0c,0x5b0c,0x632c,0x632c,0x632c,0x5aeb,0x5aeb,0x5b2c,0x632c,0x5b0c,0x5aeb,0x632c,0x5b0c,0x5aeb, +0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x32ca,0xbb2b,0xeb4b,0x82ca,0x6aca,0xeb8b,0xdb4a,0xe36b,0xeb4a,0x6a89,0xf36b,0xdb4a,0xdb4b,0xfbaa,0x72ca,0xe38b,0xe34a,0x930b,0xdb6b,0xfb8b,0xe329,0x5aca,0x5b0b,0x52ea,0x530b,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aa9,0x4aca,0x4aa9,0x4aa9,0x52aa,0xdd87,0x93e8,0x022a,0xd548,0xfe67,0xac48,0x426a,0x42aa,0x8bc9,0xe5c7,0x5ac9,0x6309,0xddc7,0x6308,0x9c0a,0xedc7,0x9c08,0x4a89,0xe5a7,0xeda7,0x8bc9,0x4acb,0x52ca,0x4aca,0x4aaa,0x52ea,0x4aca,0x52cb,0x4aca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4aca,0x52eb,0x52eb,0x52ca,0x52eb,0x4aa9,0x8491,0xefdd,0xffff,0xd6fa,0x5b2b,0x4ac9,0xd6fa,0xe79d,0x6bcd,0xe77c,0xef7d,0xc658,0xef9d,0xefde,0x73ee,0xc698,0xf7fe,0xc637,0xa574,0x638c,0xdf3c,0xf7ff,0xceb9,0xd6d9,0xffff,0xce99,0x52ea,0x634c,0x530b,0x7c0f,0xefbd,0xf7de,0xc658,0xd6fa,0xffff,0xbe57,0x8450,0xf7fe,0xe77c,0xbe17,0xe73b,0xffff,0xad95,0x94f2,0xf7fe,0x9d34,0xefbe,0xf79d,0xa573,0xf7fe,0xadb5,0xb5f6,0xffff,0xa554,0x6bad,0x4268,0x7c2f,0xf7fe,0xdf1b,0xc638,0xffff,0xbdf6,0x31e4,0xad95,0xfffe,0x8c90,0x4aea,0xdf3c,0xf7be,0xadb5,0x94d1,0x8470,0xf7be,0xe75c,0xf7fe,0xce99,0x52a9,0x6b6c,0x5b0b,0x52ea,0xdf1b,0xceba,0xbdf7,0xffff,0xb5b5,0x1943,0xa555,0xffff,0x9d13,0x29c5,0xa554,0xef7d,0xad95,0xf7be,0xe75c,0x52a9,0x9d33,0xffff,0xad95,0x4a68,0xceba,0xffff,0xbdf7,0x9d13,0x7c2f,0xf7de,0xbe17,0xdefb,0xffff,0xb5f6,0xe75c,0xe73c,0x634c,0x632c,0x5aeb,0x5b0b,0x5b2c,0x632c,0x52eb,0x5aeb,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aca,0x4a8b,0xac8a,0xe5c7,0xcce8,0x8bc9,0xe5a8,0xcd08,0x8be9,0xd569,0x62ea,0x8bca,0xe5a8,0xd548,0x734b,0xc50a,0xedc8,0xe5a8,0x9bea,0xc529,0xf5e8,0xcd28,0x6b4c,0x630c,0x5b0b,0x632c,0x5b2c,0x632c,0x630b,0x5b0b,0x5b0b,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5b0b,0x632c,0x630b,0x630b,0x630b,0x5b0b,0x5aeb,0x5aec,0x5b0b,0x5aeb,0x5aeb,0x52eb,0xa44a,0xee28,0xede7,0xabe9,0xbcc9,0xf628,0xa468,0xa449,0xee09,0xdd88,0x93c9,0xee09,0xdda7,0xa449,0xe5c8,0xf648,0xb4a9,0x52ab,0x630b,0x5b0c,0x5b0c,0x632c,0x630c,0x634c,0x632c,0x632c,0x632c,0x5b0c,0x630c,0x5b0b,0x5b0c,0x632c,0x5b2c,0x5b0b,0x632c,0x632c,0x632c,0x5b0c,0x5aec, +0x52ca,0x52ea,0x52aa,0x52ca,0x52eb,0x52ea,0x52ea,0x52eb,0x52eb,0x530b,0x52ea,0x52ca,0x52ca,0x4aca,0x4aaa,0x52ca,0x4aeb,0x932a,0xa30a,0x42ca,0x52ca,0x8b0a,0xd34b,0xc32a,0x82ca,0x42ea,0xab0a,0x92ea,0x8b0b,0xb32a,0x5b0b,0xab2a,0xd34b,0x92ea,0xa2ea,0x9aca,0xbb2a,0x72aa,0x52ca,0x52ea,0x52ea,0x4aca,0x52ca,0x4aaa,0x4aca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aa9,0x4aa9,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aa9,0x52aa,0x5aca,0xa468,0x7349,0x42aa,0x8bca,0xc508,0x7329,0x52aa,0x52a9,0x7349,0xaca8,0x52ca,0x5b0a,0xaca8,0x630a,0x7b89,0xa428,0x324a,0x4aaa,0xb489,0xd588,0x9c29,0x42aa,0x52ca,0x4aaa,0x52ca,0x52ca,0x4aca,0x4aca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ea,0x4aca,0x530b,0x52ca,0x4aca,0x52eb,0x532a,0xbe78,0xef9d,0x9d33,0x530a,0x52ea,0xc658,0xdf1b,0x6b8d,0xd6da,0xef9d,0xefbd,0xdf3b,0x9d12,0x4267,0xbe37,0xef9d,0xefbe,0xdf5b,0x5b4b,0x7c2f,0xd6fa,0xf7de,0xf7de,0xceb9,0x73ce,0x5b2b,0x5b4b,0x634c,0x52ca,0x9513,0xdf5c,0xf7fe,0xf7de,0xc699,0x6bad,0x52ea,0xa574,0xefbd,0xf7fe,0xefbd,0xbe37,0x52ea,0x94f2,0xefbd,0x8470,0xd6da,0xd6da,0x7c2f,0xefbe,0xad74,0xadd6,0xf7de,0x7c0e,0x52c9,0x638c,0x5b2b,0xc658,0xf7fe,0xfffe,0xdefb,0x73ee,0x4aa9,0xa574,0xefbd,0x8470,0x530a,0xdf1b,0xf7de,0xffff,0xd6da,0x7c0f,0xf7be,0xb5f6,0xc678,0xf7fe,0x9d33,0x5b0b,0x636c,0x5b0b,0xb5f7,0xffff,0xfffe,0xe71b,0x7c0e,0x4a88,0xa554,0xffff,0xa513,0x4a68,0x7c30,0xe77d,0xffff,0xf7bd,0xad74,0x4aa9,0x9d33,0xffde,0xad75,0x4a88,0xc679,0xf7ff,0xffff,0xf7bd,0x8c90,0xef9d,0xb5d6,0xb5f7,0xf7de,0x8450,0xdf3c,0xdf1b,0x634c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b0c,0x5b0c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x632c,0x5aeb,0x5b0c,0x52eb,0x5aeb,0x5aeb,0x52aa,0x5aea,0x426a,0xcd49,0xe5a7,0xa408,0x9409,0xf5e8,0xbca8,0x8bea,0xe5a8,0x6b2a,0x8c0b,0xede8,0xb4a8,0xac8a,0xedc8,0x9c0a,0xc4eb,0xb4a9,0x8bca,0xf5e8,0x93ea,0x632c,0x632c,0x5b0b,0x5b0c,0x5b2c,0x632c,0x630c,0x632c,0x5b0c,0x630c,0x5aeb,0x632c,0x632c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52eb,0x5aeb,0x5aeb,0x5b0b,0x42ab,0xac89,0xd508,0xcd09,0xe5a8,0xc509,0xf608,0x93a9,0xbce9,0xf608,0xb468,0x940a,0xf5e9,0xd548,0x7b6a,0xc4ea,0xe5a8,0x6b2a,0x632c,0x5b0b,0x5b0c,0x5b2c,0x5b0c,0x630c,0x5b0c,0x632c,0x5b0c,0x5b0c,0x5aeb,0x630c,0x632c,0x5b0c,0x632c,0x5b0c,0x5b0b,0x630b,0x632c,0x5b0b,0x5aeb,0x5aeb, +0x52eb,0x530b,0x5b0b,0x52ca,0x52eb,0x52eb,0x4aca,0x52ca,0x52eb,0x52eb,0x52ca,0x4aca,0x52eb,0x52ca,0x52ca,0x52ca,0x5aeb,0x5aeb,0x4aeb,0x62ea,0x5aea,0x4b0b,0x3acb,0x3aaa,0x52ea,0x5aca,0x4aea,0x52eb,0x52cb,0x42ca,0x5aeb,0x4b0b,0x3aca,0x4aaa,0x42aa,0x4aaa,0x3aa9,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x4aa9,0x4aa9,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aa9,0x424a,0x52ca,0x5b0a,0x52cb,0x324a,0x52ea,0x52ea,0x52eb,0x4aca,0x428a,0x5aeb,0x52ea,0x428a,0x52ca,0x4aca,0x52eb,0x5b0a,0x52c9,0x428a,0x3a8a,0x52eb,0x5b0b,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aca,0x4aca,0x52ca,0x52ca,0x52eb,0x52ca,0x52ea,0x52ea,0x4aca,0x52eb,0x52ca,0x52ca,0x4aca,0x4aca,0x52ea,0x5b2b,0x636c,0x63ad,0x5b4c,0x638d,0x636c,0x638c,0x6bcd,0x636b,0x6bac,0x6bcd,0x6bcd,0x5b2b,0x530a,0x636c,0x636b,0x6bcd,0x6bac,0x63ac,0x634b,0x530a,0x5b4b,0x7c4f,0x7c4f,0x530b,0x5b2b,0x636c,0x5b4b,0x636c,0x634c,0x52ea,0x636c,0x8490,0x8470,0x5b2b,0x636c,0x6b8d,0x5b0b,0x73ce,0x8cb1,0x7c2f,0x52ea,0x634c,0x6b8d,0x7c4f,0x638c,0x73ce,0x7c0e,0x636c,0x7c2f,0x6bad,0x6bce,0x8450,0x636c,0x634c,0x636c,0x5b4b,0x52ea,0x8470,0x8cb1,0x636c,0x5b2b,0x636c,0x6bad,0x844f,0x6b8c,0x634c,0x8450,0x8cb1,0x8470,0x7c2f,0x6b6c,0x8c91,0x73ee,0x6bad,0x94d2,0x8450,0x6b8d,0x6b8d,0x6bad,0x5b2b,0x94d2,0xa554,0x73cd,0x5b2b,0x636c,0x73ce,0x94b1,0x6bad,0x6b6c,0x632c,0x7c2f,0xa574,0x8c91,0x634c,0x6b8d,0x73ce,0x94d2,0x73ee,0x6b6c,0x842f,0x94f2,0x94d2,0x8c91,0x6b8d,0x94b1,0x7c0f,0x73ee,0x8c91,0x636c,0x8c91,0x8c71,0x6b8d,0x634c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x632c,0x5b0b,0x5b2c,0x5b2c,0x52eb,0x5aeb,0x5b0c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52cb,0x52eb,0x5aeb,0x83aa,0xd568,0xdd48,0x93e9,0xedc8,0xc4e9,0x8bea,0xe5a8,0x6aea,0x83cb,0xee09,0xbcc8,0xb4c9,0xe588,0x428b,0x7b8b,0x93c9,0x734b,0xddc8,0x83ab,0x4aec,0x5b0b,0x630c,0x5b0c,0x5b2c,0x5b0b,0x632c,0x634d,0x5b0b,0x632c,0x630c,0x5b0c,0x632c,0x5b0b,0x630b,0x630b,0x630c,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5b0b,0x5aeb,0x630b,0x4aab,0xac8a,0xf628,0xede8,0xa3e9,0xc529,0xee08,0x9be8,0x8bca,0xd569,0xe569,0x9c29,0xe5a9,0xdd48,0x736a,0xac8b,0xe5a8,0x52cb,0x632c,0x630c,0x5b0c,0x5aeb,0x630c,0x630c,0x5aeb,0x5b0b,0x632c,0x5b0c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0c, +0x52ca,0x52ea,0x530b,0x52eb,0x530b,0x52eb,0x52ca,0x52ea,0x52eb,0x52ea,0x4aaa,0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x5aca,0x52cb,0x52ca,0x52ca,0x52ca,0x5aea,0x5aca,0x52ea,0x5aeb,0x52ea,0x52ea,0x52ea,0x52ea,0x5b0a,0x52aa,0x52ca,0x52aa,0x52a9,0x52a9,0x4aaa,0x52ab,0x52ca,0x52ca,0x52ca,0x4aca,0x4aca,0x52ca,0x4aca,0x4a89,0x4aca,0x52eb,0x52eb,0x52ea,0x4aa9,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aca,0x4a89,0x4aaa,0x4aa9,0x4aca,0x4aa9,0x4aaa,0x52ca,0x52ca,0x52a9,0x52aa,0x4aca,0x52aa,0x52ea,0x52ea,0x4aaa,0x4aca,0x4aa9,0x52ca,0x52ea,0x4aca,0x52ca,0x52ca,0x530b,0x52ea,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ea,0x4aaa,0x52ea,0x52eb,0x52ea,0x52ea,0x52ca,0x4aca,0x4aca,0x52eb,0x52ea,0x52ea,0x52ea,0x52eb,0x636c,0x638c,0x636c,0x638d,0x636d,0x636c,0x636c,0x636d,0x634c,0x5b4c,0x634c,0x636c,0x6bad,0x636d,0x634c,0x5b2b,0x530b,0x5b0b,0x5b4c,0x638c,0x636c,0x5b2b,0x530b,0x636c,0x636c,0x634c,0x636c,0x636c,0x636c,0x636c,0x636c,0x5b2c,0x5b2b,0x636c,0x638d,0x636c,0x6b8d,0x5b4c,0x530b,0x5b2b,0x636c,0x6b6d,0x634c,0x5b2b,0x636c,0x5b4c,0x632c,0x634c,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x634c,0x634c,0x634c,0x634c,0x530a,0x52ea,0x5b4c,0x6b8d,0x636c,0x636c,0x634c,0x6b8d,0x636d,0x634c,0x5b2b,0x5b2b,0x634c,0x634c,0x5b4c,0x636d,0x6b8d,0x634c,0x636c,0x73ce,0x73ce,0x6b8d,0x6b8d,0x5b0b,0x52ca,0x636d,0x6b8d,0x6b8d,0x6b4c,0x5b2b,0x636c,0x6bad,0x6b8d,0x6b8d,0x5b2c,0x636c,0x73ce,0x6b8d,0x6b8d,0x634c,0x6b6d,0x6b8d,0x738d,0x632c,0x5b2c,0x636d,0x73ae,0x6b6d,0x6b8d,0x6b8d,0x634c,0x6b8d,0x634c,0x634c,0x636d,0x634c,0x5b2c,0x5b2c,0x634c,0x5b0c,0x632c,0x630b,0x630c,0x630c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x52cb,0x5aeb,0x5b0c,0x5b0b,0x5acb,0x5acb,0x52ec,0xc529,0xe5c8,0xe588,0xa429,0xee08,0xcd08,0x93ca,0xedc8,0xdd67,0xac69,0xee08,0xcd28,0x83ca,0xddca,0xe5c8,0xf628,0xc4c9,0x634b,0xddc9,0x8baa,0x530b,0x630b,0x632d,0x634c,0x632c,0x5b2c,0x5aeb,0x5b0c,0x5b0b,0x5b0b,0x632c,0x5b0c,0x632c,0x632c,0x630b,0x630b,0x630c,0x5b0c,0x5b0c,0x630c,0x5aec,0x5aeb,0x5aeb,0x632b,0x42ab,0xac4a,0xe588,0xe5c7,0x9c09,0xc52a,0xf648,0xa448,0xbca9,0xe5c8,0xe5e8,0xac49,0xee29,0xddc8,0x838a,0xa48b,0xdd89,0x5aec,0x632b,0x632c,0x5aeb,0x5b0c,0x630c,0x630c,0x634c,0x632c,0x5b0c,0x5b0c,0x5b0b,0x632c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c, +0x52eb,0x52cb,0x52eb,0x52eb,0x52ca,0x52cb,0x5aeb,0x52eb,0x52eb,0x52eb,0x52aa,0x4aaa,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52ea,0x52ca,0x4aaa,0x52aa,0x5aeb,0x52eb,0x530b,0x52ea,0x530b,0x530b,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4aa9,0x4aca,0x52ca,0x530b,0x530b,0x4aca,0x4aca,0x4aaa,0x4aa9,0x4aaa,0x4aca,0x52eb,0x52ca,0x52ea,0x4aca,0x4aaa,0x52ca,0x4aaa,0x4aca,0x4aaa,0x4a89,0x4a89,0x4a69,0x42a9,0x4a8a,0x4a8a,0x4aca,0x4aaa,0x4aa9,0x52eb,0x4aca,0x52ea,0x530b,0x4aca,0x52ea,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52eb,0x4aea,0x52aa,0x4aaa,0x4aca,0x52ca,0x4aaa,0x52aa,0x52aa,0x52ca,0x4aaa,0x52ca,0x4aca,0x52ca,0x52ea,0x4aca,0x52ea,0x4aca,0x52ea,0x52ea,0x52ea,0x52eb,0x530b,0x530b,0x5b2c,0x52eb,0x52eb,0x4aca,0x4269,0x4248,0x3a07,0x3a08,0x3a28,0x4248,0x4a69,0x4a89,0x4248,0x4268,0x4a89,0x4248,0x4a89,0x4248,0x3a07,0x4248,0x4289,0x4aa9,0x4a69,0x4248,0x4269,0x4269,0x4269,0x4a89,0x4a89,0x4249,0x4249,0x4249,0x4a69,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4aaa,0x4a89,0x52ca,0x52ca,0x4249,0x4269,0x530b,0x4a89,0x52ea,0x52ca,0x4a89,0x52ca,0x4aaa,0x4a69,0x4a89,0x4aaa,0x4aa9,0x52aa,0x52aa,0x4248,0x4a69,0x4a8a,0x4a89,0x4aaa,0x4269,0x4aaa,0x52eb,0x4aaa,0x4a89,0x52ca,0x52aa,0x4aca,0x52cb,0x52aa,0x52ea,0x52ca,0x52aa,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x52ca,0x52eb,0x52ca,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x52aa,0x52ca,0x52ca,0x52ca,0x52aa,0x52eb,0x52eb,0x52eb,0x52cb,0x52ca,0x52eb,0x52eb,0x52aa,0x5aeb,0x5aeb,0x52eb,0x52cb,0x52eb,0x5aeb,0x52eb,0x52ca,0x52aa,0x52aa,0x530b,0x634c,0x5b2c,0x634c,0x632c,0x632c,0x634c,0x632c,0x5b0c,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aec,0x738b,0xb4c9,0x83aa,0x632b,0xa46a,0xac4a,0x734a,0x9c2a,0xb4aa,0x8bcb,0x9c4b,0xacaa,0x736c,0x6b4b,0xacaa,0xa44a,0x5b0c,0x6b6c,0x93ea,0x6b4b,0x632c,0x632b,0x5b0b,0x632c,0x632c,0x632c,0x5b0c,0x630c,0x5b0c,0x5b0c,0x5b2c,0x5b2c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x632c,0x5b0b,0x5b0b,0x5aec,0x5aeb,0x5b0b,0x5b0c,0x7bab,0x7b8a,0x8bcb,0x8c09,0x836b,0xb4aa,0x93eb,0x6b6b,0xb4aa,0x93ea,0x6b2c,0xa44b,0xb4ca,0x7b8b,0x7b8b,0x8bcb,0x632c,0x632c,0x630c,0x5aeb,0x5aeb,0x5b0c,0x5b0b,0x632c,0x5b2c,0x5b0c,0x630c,0x630c,0x632c,0x632c,0x5b0c,0x5b0b,0x632c,0x630c,0x5b0c,0x632c,0x632c,0x5aeb,0x5b0c, +0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52cb,0x52eb,0x52eb,0x52eb,0x52eb,0x52aa,0x52ca,0x4aca,0x4aca,0x52ca,0x52ca,0x52ca,0x52ea,0x52eb,0x52eb,0x530b,0x52ca,0x52ca,0x52ca,0x52ea,0x4aaa,0x52ca,0x52ca,0x52ca,0x5b2b,0x52eb,0x52eb,0x52eb,0x530b,0x52ea,0x52aa,0x52aa,0x4aaa,0x52ca,0x4aca,0x52ca,0x4aca,0x4aca,0x52ea,0x52ca,0x52eb,0x52ea,0x4aaa,0x4aca,0x4aca,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4a89,0x4289,0x4269,0x4aa9,0x4aa9,0x4a89,0x4a89,0x4aaa,0x52eb,0x4aea,0x530a,0x4aca,0x4aaa,0x52ca,0x4a89,0x52ea,0x5b0b,0x52eb,0x4aca,0x52ca,0x5b0b,0x530b,0x4aca,0x4aca,0x52ea,0x52ca,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4aca,0x52ea,0x4aca,0x52ca,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x52eb,0x5b2b,0x5b2b,0x4aca,0x4248,0x39e7,0x2124,0x18e3,0x0881,0x10a2,0x10a2,0x0041,0x0041,0x0882,0x1082,0x18e3,0x0881,0x0861,0x1081,0x10a2,0x18c3,0x10c2,0x10a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x10a2,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10c2,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x1903,0x18c3,0x2124,0x2144,0x1903,0x1904,0x2145,0x18e3,0x2104,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2144,0x2144,0x2145,0x2945,0x2104,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2124,0x2145,0x2124,0x2124,0x2965,0x2945,0x2145,0x2145,0x2144,0x2145,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2125,0x2145,0x2145,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2965,0x2966,0x3186,0x31a7,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x2965,0x29a6,0x2124,0x2145,0x31e7,0x4269,0x4a8a,0x5b2c,0x6b6d,0x634c,0x634c,0x632c,0x5b2c,0x630c,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0c,0x5b0b,0x5aeb,0x52cb,0x52eb,0x52cb,0x5acb,0x52ea,0x52eb,0x5b0b,0x5aeb,0x428b,0x5aec,0x5aeb,0x52cc,0x4aab,0x632c,0x5b2d,0x4aec,0x52eb,0x4a8b,0x4aab,0x6b6d,0x634d,0x530d,0x4acc,0x632c,0x632c,0x52cb,0x632c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5b0c,0x630b,0x630c,0x5b0c,0x630c,0x5b0c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52cb,0x5aeb,0x42ac,0x52ec,0x52eb,0x42ac,0x52eb,0x5aeb,0x52ec,0x4acc,0x5b0b,0x630c,0x5b0c,0x632b,0x630c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5b0b,0x5b2c,0x5b0c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x630c, +0x52eb,0x52cb,0x52cb,0x52cb,0x52ca,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x52ca,0x52aa,0x52ca,0x4aca,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x4a89,0x4aa9,0x4a89,0x52ca,0x52a9,0x4a89,0x4a89,0x4228,0x52a9,0x5b0b,0x52eb,0x52eb,0x52eb,0x4a89,0x52ca,0x52ea,0x52eb,0x4aca,0x4aca,0x4aaa,0x4aca,0x52eb,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x4a89,0x4289,0x4289,0x4289,0x4a89,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x52ea,0x636c,0x5b0b,0x4248,0x31e7,0x31e7,0x2986,0x31e7,0x4a89,0x52ca,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x4aaa,0x4aca,0x52ca,0x4aaa,0x52ca,0x4aca,0x4aca,0x52ca,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ea,0x4aca,0x52ea,0x52ea,0x52eb,0x530b,0x530b,0x5b6c,0x4aaa,0x39e7,0x2965,0x10e3,0x1903,0x2985,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x31a6,0x2124,0x2944,0x2144,0x2144,0x2124,0x2124,0x2124,0x2103,0x18e3,0x2103,0x18e3,0x1904,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2945,0x2144,0x2965,0x2965,0x2944,0x2965,0x2144,0x2985,0x2965,0x2945,0x2945,0x2145,0x2144,0x2965,0x2965,0x2985,0x31a6,0x3185,0x31c6,0x29a6,0x31a6,0x31c6,0x31c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x31a6,0x4248,0x39e7,0x39e7,0x4207,0x4a48,0x39e7,0x39c6,0x31c6,0x39e7,0x3a08,0x3a08,0x3a07,0x3a07,0x4a69,0x5acb,0x4228,0x4228,0x4228,0x4228,0x4a89,0x4a69,0x4a68,0x4a69,0x4aaa,0x52aa,0x52a9,0x52aa,0x52aa,0x52aa,0x4a89,0x52aa,0x52ca,0x39e7,0x1904,0x2124,0x39e7,0x52aa,0x5b0c,0x6bae,0x634c,0x632c,0x634c,0x632c,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5b0b,0x5aca,0x52ca,0x52aa,0x630b,0x6b4c,0x630b,0x4a69,0x4207,0x39e7,0x31c6,0x5289,0x52aa,0x4248,0x5aeb,0x634c,0x632c,0x5b0b,0x5b0c,0x5b2c,0x5b0c,0x5aeb,0x5b2c,0x634c,0x5b0c,0x632c,0x5b0b,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0c,0x5aeb,0x632c,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5aca,0x5b0b,0x5aeb,0x5aca,0x4a69,0x31a6,0x31a6,0x39c6,0x3a07,0x3a07,0x4a89,0x52ca,0x5aeb,0x6b4d,0x632c,0x5b0c,0x632c,0x5b0b,0x630c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b0c,0x5aeb,0x632c,0x5b0b,0x5b0b,0x632c,0x630b,0x630c,0x5b0b,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b0c,0x5b0c, +0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52aa,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x52eb,0x5b0b,0x4aa9,0x52aa,0x4a69,0x4228,0x4aaa,0x3a08,0x4a69,0x4249,0x39e7,0x31a6,0x39e6,0x4a89,0x5b0b,0x530a,0x52ea,0x52aa,0x52ca,0x4aca,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x4aaa,0x52ca,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4a89,0x4aa9,0x4aaa,0x4aa9,0x4aa9,0x4aaa,0x4aaa,0x4aa9,0x4aca,0x52eb,0x52ea,0x5b0b,0x52ea,0x4269,0x31c7,0x31a6,0x31a6,0x2986,0x2985,0x4268,0x530a,0x5b4c,0x5b0b,0x530b,0x4aca,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aaa,0x52ca,0x52ea,0x52ca,0x52ea,0x52ea,0x530b,0x532b,0x5b4c,0x638d,0x3a08,0x2124,0x2965,0x4a69,0x4a69,0x31c6,0x31a6,0x2965,0x2124,0x2965,0x2965,0x2945,0x2965,0x1903,0x1903,0x2104,0x1903,0x18e3,0x18c3,0x18e3,0x18c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2103,0x1903,0x1904,0x1903,0x18e3,0x2104,0x2104,0x2124,0x2124,0x2945,0x3186,0x2124,0x2965,0x2965,0x2965,0x2145,0x2145,0x2944,0x2965,0x2965,0x3186,0x31c6,0x2985,0x31e7,0x29a6,0x29a6,0x31e7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x2985,0x2965,0x4248,0x39e7,0x39e7,0x4208,0x4a69,0x3a07,0x31c6,0x31a6,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4208,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4a89,0x4a69,0x4a69,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52ca,0x4a89,0x52ca,0x52ca,0x52eb,0x5b0b,0x52ca,0x52aa,0x4228,0x2144,0x4a49,0x3a08,0x52ca,0x638d,0x636c,0x634c,0x634c,0x632c,0x632c,0x632c,0x5b0c,0x5b0b,0x632c,0x5b0b,0x5aeb,0x52eb,0x5aeb,0x5aeb,0x5b0c,0x5b0b,0x5aeb,0x52cb,0x52aa,0x52cb,0x5aeb,0x5b0b,0x4a49,0x31a6,0x31a6,0x2986,0x39c7,0x2985,0x39c7,0x31a6,0x31c6,0x2985,0x4248,0x632c,0x634c,0x5b0c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x5b0c,0x5b2c,0x5b0c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x5acb,0x5aeb,0x4228,0x2965,0x2965,0x2945,0x2104,0x2104,0x2986,0x4228,0x4a8a,0x4249,0x3a08,0x52aa,0x634c,0x5b0c,0x632c,0x5b0c,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b0b,0x6b4c,0x632c,0x630c,0x5aeb,0x632c,0x5b0b,0x5aeb,0x632c,0x630c,0x5b0b,0x630c, +0x52ea,0x52ca,0x52ca,0x52ea,0x52eb,0x52ca,0x52aa,0x52ca,0x52ca,0x52aa,0x4aaa,0x4aca,0x52aa,0x52aa,0x4aca,0x52ca,0x4aaa,0x4aca,0x52ca,0x52ca,0x52ca,0x52ca,0x4a69,0x4228,0x2986,0x29a6,0x31c7,0x31c7,0x3a28,0x4269,0x3a07,0x0861,0x4228,0x632b,0x5b4b,0x5b0b,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x52ca,0x52ca,0x52ea,0x4aca,0x52c9,0x52ca,0x52ca,0x52ca,0x52aa,0x52ca,0x4aaa,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x4a89,0x4aa9,0x4aaa,0x4aca,0x530b,0x4289,0x4a89,0x4268,0x3a07,0x2965,0x2144,0x2124,0x2124,0x2144,0x2124,0x39e7,0x4aa9,0x5b2b,0x634c,0x530b,0x5b0b,0x52ea,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x52ea,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x5b2c,0x5b2c,0x5b2c,0x4249,0x2124,0x31e7,0x52ca,0x31a6,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x4228,0x5289,0x31a6,0x52ca,0x3a28,0x5b0b,0x6b8d,0x636c,0x634c,0x636c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b2b,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52ca,0x5b0b,0x632c,0x39e7,0x2104,0x2945,0x2124,0x2965,0x31c6,0x4248,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x5aeb,0x632c,0x634c,0x5b0c,0x5b2c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b2c,0x632c,0x630c,0x632c,0x632c,0x630b,0x632c,0x634c,0x5b0b,0x630c,0x632c,0x632c,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5acb,0x5aeb,0x52cb,0x52ca,0x5b0b,0x39e7,0x2965,0x2965,0x2103,0x2124,0x3185,0x39c7,0x4228,0x3a08,0x39e8,0x4229,0x3a08,0x39e7,0x4a8a,0x632c,0x634c,0x630c,0x5acb,0x630c,0x5aeb,0x5aeb,0x5acb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x6b4c,0x630b,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0c,0x630c, +0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x52aa,0x52aa,0x5acb,0x52eb,0x5aca,0x6aaa,0x4aaa,0x52ca,0x62ca,0x52aa,0x5aca,0x62ca,0x5aeb,0x52aa,0x5b0a,0x52a9,0x39e7,0x2965,0x2124,0x2145,0x2945,0x2965,0x2965,0x3a07,0x6b8d,0x530b,0x10a2,0x4248,0x5b0a,0x5b0a,0x52ca,0x52ca,0x4aa9,0x52ca,0x5aea,0x428a,0x5ac9,0x5b0b,0x5b2c,0x52ca,0x52ea,0x630a,0x428a,0x52ea,0x52a9,0x52a9,0x5aca,0x42aa,0x5ac9,0x4a89,0x428a,0x52ca,0x5aca,0x52a9,0x4aaa,0x5b0b,0x52ea,0x52ca,0x3a27,0x4a89,0x2945,0x18c2,0x2944,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x18e3,0x39e7,0x4a69,0x4268,0x530b,0x530b,0x52ea,0x4aca,0x4aaa,0x4aca,0x4aca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52eb,0x52ca,0x52eb,0x52eb,0x5b4c,0x5b4c,0x4228,0x2144,0x4a89,0x632c,0x18e3,0x0000,0x0020,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0040,0x0020,0x0841,0x0841,0x0020,0x0020,0x0020,0x0841,0x0020,0x0020,0x0821,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0021,0x0841,0x0841,0x0841,0x0020,0x0841,0x0020,0x0821,0x0020,0x0020,0x0020,0x0841,0x0840,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x10a2,0x0861,0x0000,0x0000,0x2945,0x4248,0x4a89,0x528a,0x4228,0x6b8d,0x6bad,0x634c,0x634d,0x632c,0x632c,0x634c,0x632c,0x630c,0x5aeb,0x5b0c,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x5aeb,0x632c,0x3a07,0x2944,0x2104,0x2104,0x4208,0x4248,0x4208,0x4228,0x31c7,0x31a6,0x39c7,0x4228,0x4228,0x39e7,0x4a69,0x5b2c,0x5b2b,0x5b0b,0x5aec,0x630c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x632c,0x634d,0x632c,0x5b2c,0x5b0b,0x632c,0x630b,0x5b0c,0x5aeb,0x630c,0x630c,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x52ca,0x630b,0x4a49,0x2103,0x2965,0x18e3,0x2104,0x31a6,0x39c7,0x39e7,0x4208,0x4249,0x4229,0x31a7,0x31c7,0x31a7,0x31a6,0x52cb,0x634d,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x5aeb,0x52ca,0x630c,0x632c,0x630b,0x632c,0x632c,0x5aeb,0x5b0b,0x632c,0x632c,0x632c,0x5b0b,0x632c,0x5b0c,0x5b0c,0x5b0b, +0x530b,0x530b,0x52eb,0x52ea,0x52cb,0x4aaa,0x52ca,0x52ca,0x4aeb,0x82ea,0xe36b,0xf36b,0xcb2a,0x62aa,0xdb6b,0xa2c9,0x9aeb,0xcb2a,0x52ea,0x5aea,0x4a89,0x31c6,0x2144,0x2985,0x2944,0x2144,0x2124,0x2124,0x31c6,0x2145,0x1924,0x52ca,0x39e7,0x18e3,0x4a89,0x4248,0x52eb,0x4aca,0x4aaa,0x5aeb,0x42aa,0xac88,0xe5c7,0xe5a8,0x93ea,0x7329,0xdd68,0xe5c7,0xbcc8,0x52a9,0xbcc7,0x7b69,0x3a6a,0xac68,0xe5a7,0xdd87,0x8b88,0x8bc9,0xe5c7,0xddc7,0x8be9,0x52cb,0x5aea,0x31c7,0x4a89,0x2144,0x2104,0x31a6,0x39e7,0x2965,0x31a6,0x31e6,0x4207,0x2985,0x31a6,0x29a6,0x3a28,0x3a28,0x52ca,0x530b,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x4aca,0x4aca,0x4aca,0x4aaa,0x52eb,0x52ca,0x52ca,0x52eb,0x52eb,0x5b2c,0x52eb,0x2945,0x31a6,0x634c,0x3185,0x0000,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0020,0x0000,0x0861,0x2124,0x10a2,0x0020,0x0841,0x0040,0x1082,0x0000,0x31a6,0x3a08,0x2986,0x39e7,0x5b2c,0x73ce,0x6b6d,0x634c,0x634d,0x634c,0x5b2c,0x634c,0x632c,0x632c,0x634c,0x632c,0x5b2c,0x632c,0x5acb,0x5acb,0x52cb,0x52cb,0x5b0c,0x528a,0x2944,0x2965,0x18c3,0x39e7,0x31a6,0x2124,0x2124,0x2124,0x2965,0x3185,0x2965,0x31a6,0x31c6,0x39e7,0x4a69,0x52aa,0x634c,0x5b4c,0x632c,0x5b2c,0x5b0c,0x632c,0x5b0c,0x630c,0x630b,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x632c,0x630b,0x5b0b,0x5b0b,0x630c,0x5b0b,0x52cb,0x5aeb,0x5aeb,0x52ca,0x5acb,0x5aeb,0x52aa,0x3186,0x2965,0x18c2,0x18c3,0x18e3,0x18c3,0x1904,0x2945,0x2965,0x31a6,0x39e7,0x3a08,0x31c7,0x31a7,0x31a6,0x3a08,0x5b2c,0x632c,0x630c,0x630c,0x632c,0x5b0b,0x632c,0x634b,0x5b0b,0x5b0b,0x5aeb,0x5b2c,0x5b0b,0x630b,0x5b2b,0x632c,0x630c,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5aeb, +0x52ea,0x52eb,0x52eb,0x52ca,0x4aca,0x4aaa,0x4aca,0x52ca,0x42cb,0xdb4b,0xdb2a,0x92ea,0xf36b,0xbaea,0xeb6b,0xf38a,0xcb2a,0xdb4a,0x5aeb,0x5b0a,0x3a07,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2986,0x2145,0x10c3,0x2965,0x10c2,0x31a7,0x39e7,0x4a89,0x52eb,0x4aaa,0x3aaa,0x7baa,0xe5c7,0xa428,0xc508,0xaca8,0xc507,0xd548,0x9c09,0xedc7,0xac28,0xdd67,0x8368,0x6b49,0xe587,0x9c07,0xc4e8,0xdd47,0xb488,0xd547,0xcd27,0xd568,0x42ab,0x52a9,0x29a6,0x31a6,0x2104,0x31c7,0x31c7,0x3a07,0x2986,0x2986,0x39e6,0x3a27,0x2165,0x2124,0x31a6,0x3a08,0x3a08,0x31a6,0x4aca,0x4aea,0x4aca,0x4aaa,0x4aa9,0x4a89,0x4aaa,0x52ca,0x4aca,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aca,0x530b,0x52eb,0x530b,0x5b2c,0x3a08,0x0841,0x4a89,0x4a89,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0000,0x4208,0x2986,0x39e7,0x52ca,0x6bae,0x6b8d,0x636d,0x6b8d,0x632c,0x632c,0x636d,0x634c,0x634c,0x634c,0x5b0c,0x5b2c,0x5b0c,0x52cb,0x5aeb,0x52ca,0x5b0b,0x5acb,0x39c7,0x31a6,0x18e3,0x2124,0x2124,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x31a6,0x39e7,0x3a07,0x634c,0x632c,0x634c,0x734c,0x736b,0x738b,0x7bab,0x736c,0x5b0b,0x630c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x632c,0x632c,0x630c,0x5aeb,0x632c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x4a49,0x3186,0x2104,0x18c3,0x1082,0x1082,0x18e3,0x2124,0x2965,0x2965,0x31a6,0x39c6,0x3185,0x31a6,0x31a6,0x31a6,0x2986,0x52aa,0x632c,0x5b0c,0x632c,0x5b0b,0x630b,0x630b,0x630b,0x632c,0x5acb,0x52ca,0x5b0b,0x5b0b,0x630c,0x5b0b,0x632c,0x630b,0x630b,0x630c,0x632c,0x5b0b,0x5b0b, +0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x52cb,0x52eb,0xe36b,0xb2e9,0x026a,0xdb4a,0xd30a,0xdb4a,0xeb6b,0xfb8b,0xdb29,0x5aeb,0x5aeb,0x2965,0x20e3,0x2965,0x39c6,0x31a6,0x3186,0x2945,0x2124,0x2944,0x2124,0x2124,0x2945,0x2144,0x18e3,0x2104,0x31a6,0x4a89,0x4aca,0x52c9,0x2a4a,0x9c09,0xdd67,0x1209,0x5ac9,0x7b69,0xd568,0xac48,0x000a,0xdd67,0xc4a7,0xd548,0x7308,0x8369,0xe567,0x19a9,0x7349,0xeda7,0xac67,0xeda7,0xe587,0x9c29,0x4aca,0x4a68,0x2124,0x1903,0x2945,0x39e7,0x3a08,0x3a07,0x3a07,0x2104,0x31a6,0x39c6,0x2144,0x2145,0x2124,0x31a6,0x39e7,0x2124,0x4269,0x52eb,0x4aaa,0x4a89,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aca,0x4aca,0x4aca,0x52ca,0x530b,0x530b,0x5b2c,0x5b2c,0x4269,0x2104,0x52aa,0x2144,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0041,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0040,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0020,0x0040,0x0020,0x0020,0x0040,0x0841,0x0041,0x0040,0x0040,0x0041,0x0040,0x0040,0x0040,0x0040,0x0840,0x0841,0x0841,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x0841,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x31c6,0x3a07,0x3a28,0x6b8e,0x6b8d,0x636d,0x6b8d,0x634c,0x634c,0x634c,0x636d,0x636d,0x634c,0x634c,0x5b2c,0x5b0b,0x5aeb,0x52cb,0x5b0b,0x634c,0x4a69,0x2985,0x2985,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x2104,0x2124,0x2945,0x2965,0x2945,0x2104,0x2945,0x39e7,0x3186,0x530b,0x6b4d,0x5b4c,0xd5a9,0xf628,0xee09,0xfe28,0xb4a9,0x52ec,0x632c,0x634c,0x634c,0x632c,0x630c,0x5b0b,0x5b0b,0x632c,0x5b2c,0x632c,0x5b0b,0x630c,0x632c,0x5b0b,0x5acb,0x52cb,0x52ca,0x3a07,0x3a07,0x18c3,0x10a2,0x1081,0x10a2,0x18c2,0x18e3,0x2124,0x2965,0x2965,0x2965,0x31a6,0x2124,0x2965,0x31a6,0x2986,0x4229,0x632c,0x52cc,0x940b,0xe5a8,0xe588,0xed89,0xdd48,0x7b6b,0x52eb,0x5aeb,0x5b0b,0x632c,0x630b,0x630b,0x632c,0x630b,0x632c,0x632c,0x5aeb,0x5b0b,0x630b, +0x52eb,0x52ca,0x4aca,0x52eb,0x52eb,0x52ca,0x4aaa,0x52aa,0x42ca,0xab0b,0xf36b,0xeb4a,0xf34a,0x92a9,0xeb4b,0xa30a,0xe38b,0xe34a,0x52ca,0x4a89,0x2124,0x18c3,0x3185,0x4227,0x31a6,0x2104,0x10a2,0x0861,0x0861,0x0881,0x10a2,0x18a3,0x1924,0x2104,0x18e3,0x2124,0x4228,0x4aaa,0x4aa9,0x4a89,0x5ae9,0xdd47,0xe567,0xedc7,0xb488,0xa428,0xede7,0xe567,0xeda7,0x8369,0xdd47,0xe567,0x8388,0xd547,0xe587,0xeda7,0xc4e8,0x9c07,0xe5a7,0xeda7,0x8bc8,0x4aca,0x52c9,0x1903,0x18c3,0x31c7,0x4228,0x31a6,0x2945,0x18c3,0x0020,0x0841,0x1082,0x10c2,0x2104,0x2145,0x2965,0x29a6,0x2124,0x3207,0x4aca,0x4aaa,0x4a89,0x4aaa,0x4a89,0x4a89,0x4a89,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aca,0x52eb,0x52eb,0x530b,0x5b4c,0x4228,0x1903,0x4248,0x18c2,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x39e7,0x3a07,0x39e7,0x634d,0x6b8d,0x6b8d,0x636d,0x634c,0x636d,0x634c,0x632c,0x634c,0x632c,0x634c,0x5b2c,0x5b0b,0x5aeb,0x52ca,0x5aeb,0x52ca,0x4249,0x2945,0x2124,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x1081,0x18c2,0x2104,0x2944,0x2124,0x18e3,0x2104,0x39c7,0x3186,0x52cb,0x738e,0x636d,0x8beb,0x9c0a,0x940a,0xa44b,0x83ab,0x5b0c,0x632c,0x634c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x632c,0x5b0c,0x5b0b,0x634c,0x632c,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x52ca,0x39e7,0x2985,0x18c3,0x10a2,0x0861,0x1081,0x1082,0x0841,0x0861,0x10a2,0x2104,0x2965,0x2965,0x18e3,0x2124,0x31a6,0x2986,0x39c7,0x5aeb,0x52eb,0x7bab,0xa46a,0xa44a,0xac4a,0x9c29,0x6b2b,0x630c,0x5aeb,0x5b0b,0x632c,0x630c,0x5b0b,0x630c,0x5aeb,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x5b0b, +0x52eb,0x52ca,0x52ca,0x52ea,0x4aca,0x4aaa,0x4a8a,0x52aa,0x5acb,0x52aa,0x9b0a,0xbb0a,0x82aa,0x4aaa,0x9b0a,0x62a9,0x7aca,0xa30b,0x5aea,0x4228,0x2964,0x10a2,0x31a6,0x4a48,0x10a2,0x0020,0x0020,0x0020,0x0841,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x18e3,0x2144,0x31e7,0x4a89,0x4a89,0x5289,0x4289,0x6b09,0xb488,0xa428,0x52a9,0x428a,0x9c29,0xbca8,0x7b48,0x4aaa,0x93e9,0xb468,0x7348,0x6309,0xb488,0xa408,0x4a8a,0x6b49,0x7b89,0x8be9,0x8be9,0x52cb,0x4267,0x18c3,0x1081,0x4228,0x4228,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x18e3,0x2144,0x29a6,0x2124,0x31c7,0x52ea,0x4aa9,0x4a89,0x4268,0x4a89,0x4aaa,0x4a89,0x4aaa,0x52aa,0x4aaa,0x52eb,0x52ca,0x52ea,0x52eb,0x52ea,0x5b6c,0x5b2c,0x3a07,0x18c3,0x31e7,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2145,0x4248,0x39e7,0x31c6,0x31e7,0x29a6,0x2165,0x2985,0x2986,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2985,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x31c6,0x31e7,0x31e7,0x31c7,0x31c7,0x31c6,0x31e7,0x39c7,0x39c7,0x39e7,0x31c7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a28,0x4249,0x4a49,0x4249,0x4a49,0x4a49,0x4a49,0x4248,0x4268,0x4a69,0x4a69,0x4a89,0x52aa,0x4a89,0x4228,0x4228,0x4a48,0x4a49,0x4248,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4a69,0x4a89,0x4248,0x4228,0x4228,0x3a07,0x2986,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x4248,0x4228,0x39e7,0x636d,0x6b8d,0x6b6d,0x638d,0x636d,0x632c,0x6b6d,0x634c,0x634c,0x634c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52aa,0x4228,0x18e3,0x2124,0x18c3,0x1082,0x0841,0x0841,0x0841,0x0841,0x0040,0x0861,0x18c2,0x2124,0x2124,0x10a2,0x18c3,0x31c7,0x2965,0x4a69,0x6b6d,0x6b6d,0x3a8c,0x226c,0x3aac,0x2a8c,0x52eb,0x632b,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x634d,0x634c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x52cb,0x2104,0x1082,0x18e3,0x1082,0x0841,0x0861,0x1081,0x1082,0x0861,0x0020,0x0840,0x20e3,0x2965,0x2104,0x2965,0x3186,0x2945,0x31a6,0x52ca,0x5aeb,0x52cb,0x2a6b,0x222c,0x1a6b,0x2a6b,0x5aeb,0x630c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x5aec,0x5b0c,0x630c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x630c, +0x52ea,0x52ca,0x52eb,0x52ca,0x4aaa,0x52ca,0x4aaa,0x52aa,0x52ea,0x52ca,0x3aaa,0x22aa,0x42aa,0x52aa,0x3aaa,0x4a8a,0x4aca,0x42ca,0x5b0b,0x4248,0x2124,0x2124,0x2965,0x2944,0x0020,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x1903,0x2124,0x31a6,0x4289,0x4289,0x4269,0x528a,0x4289,0x222a,0x3229,0x4a89,0x4aaa,0x3a6a,0x220a,0x4289,0x52a9,0x326a,0x220a,0x428a,0x4aaa,0x222a,0x324a,0x52ca,0x4269,0x4269,0x42aa,0x42aa,0x52ea,0x31c7,0x2104,0x18e2,0x31a6,0x2945,0x0000,0x0841,0x0020,0x0020,0x0020,0x0841,0x0861,0x0841,0x0020,0x1904,0x31c6,0x1903,0x31e7,0x4aaa,0x4aa9,0x4a89,0x4289,0x4a89,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4aaa,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x638d,0x638c,0x3a28,0x10c3,0x31c6,0x0881,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4aaa,0x73ef,0x5b4c,0x5b6c,0x530b,0x4a89,0x3a48,0x4269,0x4aa9,0x530b,0x530b,0x530b,0x5b2b,0x5b2b,0x530b,0x4aca,0x4269,0x4269,0x3a48,0x4aaa,0x5b2b,0x5b2b,0x532b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x5b4c,0x5b4c,0x5b2c,0x5b4c,0x634c,0x634c,0x5b4c,0x634c,0x5b4c,0x5b2c,0x5b4c,0x634c,0x634c,0x5b4c,0x5b4c,0x5b4c,0x5b2c,0x632c,0x634c,0x636c,0x636d,0x638d,0x638d,0x636d,0x636d,0x636d,0x636c,0x636c,0x636d,0x636d,0x636d,0x634c,0x634c,0x6bae,0x6bae,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6bad,0x6bad,0x6bae,0x73ce,0x73ef,0x73ee,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x636c,0x6b6d,0x73ae,0x73ae,0x6b8d,0x6bae,0x6b6d,0x6bad,0x6bad,0x73ef,0x7c2f,0x7c2f,0x7c2f,0x52eb,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x2104,0x3a07,0x3a08,0x4228,0x636d,0x73ad,0x6b8d,0x638d,0x6bad,0x636d,0x6b6d,0x6b8d,0x634c,0x634c,0x632c,0x5b0c,0x5b0b,0x52eb,0x5aeb,0x52cb,0x4aaa,0x4228,0x10a2,0x18e3,0x18c3,0x0821,0x0841,0x0861,0x1082,0x10a2,0x18c2,0x0000,0x0000,0x0000,0x0000,0x2104,0x2124,0x39e7,0x2145,0x4249,0x634d,0x636c,0xbcca,0xcd49,0xc529,0xcd4a,0x940a,0x530c,0x634c,0x634c,0x634c,0x632c,0x5b0c,0x634c,0x630c,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x4aaa,0x18e3,0x10a2,0x18c3,0x1082,0x0020,0x0841,0x0020,0x0840,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x10c2,0x39e7,0x2145,0x2966,0x5acb,0x5aeb,0x7b8b,0xb4a9,0xac69,0xac89,0xac69,0x6b2b,0x5aeb,0x5b0b,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x630b,0x630b,0x632c,0x630b,0x630c, +0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x528a,0x52aa,0x4aa9,0x4a89,0x52aa,0x4a8a,0x52aa,0x52aa,0x4aea,0x52ea,0x2104,0x2124,0x2104,0x0840,0x0861,0x0881,0x10a2,0x10a2,0x1903,0x2104,0x18e3,0x1903,0x2103,0x18e3,0x18c3,0x18e3,0x39e7,0x4269,0x4248,0x4a69,0x4269,0x4a89,0x52a9,0x4aa9,0x4a89,0x4a8a,0x52ca,0x52c9,0x4aa9,0x4a8a,0x4aa9,0x52a9,0x4aaa,0x4ac9,0x4aa9,0x4a89,0x4a89,0x4a69,0x4aa9,0x52ca,0x4aca,0x4aca,0x4248,0x2104,0x2145,0x10c2,0x0040,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x1082,0x10a2,0x0861,0x2965,0x31a6,0x2124,0x3a08,0x4aaa,0x4aa9,0x4a89,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x52ca,0x530b,0x530b,0x532b,0x5b2c,0x5b2b,0x3a28,0x18c3,0x31c6,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4269,0x5b4c,0x5b2b,0x530b,0x4269,0x4249,0x3a28,0x3207,0x3207,0x3a28,0x4268,0x4269,0x4a89,0x4aa9,0x52ea,0x4269,0x3a08,0x3a08,0x3a28,0x52eb,0x530b,0x52eb,0x52ea,0x52ea,0x52ea,0x52ea,0x52ca,0x52ca,0x52ea,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x52ca,0x52eb,0x52eb,0x52eb,0x530b,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x530b,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ea,0x52eb,0x52ea,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x5b0b,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52cb,0x4aaa,0x4aca,0x52ca,0x52ca,0x52ca,0x5aeb,0x5b0c,0x5b0b,0x52cb,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x632c,0x6b8d,0x63ad,0x742f,0x5b0b,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0841,0x0000,0x31c7,0x5b0c,0x31a6,0x3a08,0x6b6d,0x6b6d,0x6b8e,0x634d,0x634d,0x6b8d,0x6b6d,0x634c,0x634c,0x5b4c,0x634c,0x632c,0x5b0b,0x5b0b,0x5b2c,0x5aeb,0x52aa,0x4208,0x1082,0x18c3,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0800,0x0000,0x2123,0x6b6d,0x840f,0x5aeb,0x0000,0x18c3,0x4249,0x2945,0x4a68,0x5b2c,0x634c,0xbcca,0xcd69,0xcd69,0xcd88,0x9c2a,0x5aec,0x634c,0x634c,0x6b4d,0x632c,0x632c,0x6b6d,0x634d,0x632c,0x632c,0x630c,0x632c,0x5b0c,0x5b0c,0x634c,0x5aeb,0x5b0c,0x52aa,0x18c3,0x18c3,0x2104,0x0861,0x0000,0x0000,0x18c3,0x2124,0x2945,0x2965,0x10e3,0x31e7,0x7bce,0x9491,0x6b6d,0x0000,0x2104,0x3186,0x5aeb,0x52eb,0x8beb,0xd549,0xd569,0xd568,0xcd09,0x734b,0x5b2c,0x5b0b,0x5b0b,0x630b,0x630b,0x5b0b,0x630b,0x5b0b,0x5aeb,0x630b,0x630b,0x630b,0x630b, +0x4aca,0x4aaa,0x52ca,0x52eb,0x52ca,0x52ca,0x4aa9,0x4aaa,0x4aca,0x4aa9,0x4aaa,0x4a8a,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52eb,0x4a89,0x2144,0x2144,0x2103,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x2124,0x2104,0x2103,0x1903,0x18e3,0x18e3,0x2124,0x31a6,0x4248,0x4249,0x3a68,0x4a89,0x4a69,0x4269,0x4a89,0x4aa9,0x52aa,0x52ca,0x52ca,0x52ca,0x52aa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x4a89,0x4a89,0x4aa9,0x4aa9,0x4269,0x4aaa,0x52ca,0x4aca,0x3a07,0x2124,0x2945,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x2124,0x2986,0x18e3,0x31c7,0x4aaa,0x4aaa,0x4a69,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aea,0x4aca,0x530b,0x4aca,0x530b,0x5b2c,0x5b6d,0x5b4c,0x31e6,0x18e3,0x31c6,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4268,0x5b4c,0x530b,0x4248,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x3a08,0x3a08,0x3a08,0x4249,0x3a08,0x3a28,0x3a28,0x3a28,0x3a28,0x3a48,0x4a8a,0x4aaa,0x4aaa,0x4a89,0x4269,0x4a89,0x4a89,0x4a69,0x4248,0x4269,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x5aeb,0x52eb,0x52eb,0x52eb,0x52eb,0x5aeb,0x5aeb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52cb,0x52eb,0x52cb,0x4aaa,0x52cb,0x52cb,0x530c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb,0x52aa,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x52ca,0x52ea,0x636d,0x5aeb,0x0820,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0020,0x0841,0x0000,0x2145,0x4a89,0x31c7,0x39e7,0x6b6d,0x6bad,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x632c,0x634c,0x634c,0x636d,0x634c,0x5b0c,0x634c,0x5b2c,0x5b2c,0x52cb,0x5b0b,0x4228,0x1061,0x1903,0x10a2,0x0020,0x18e3,0x4207,0x52ca,0x52eb,0x7c50,0xd6fa,0xf7de,0xffff,0xf7be,0xb5d7,0x2145,0x31c7,0x2966,0x4a69,0x632c,0x634c,0x42cd,0x226c,0x3aad,0x224c,0x52ec,0x634c,0x632c,0x6b6d,0x634c,0x632c,0x6b6d,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x630c,0x632c,0x630c,0x5b0c,0x52cb,0x2104,0x10a2,0x18e3,0x18c2,0x2944,0x5289,0x5b0b,0x632c,0x634c,0x638d,0x94f3,0xd6fb,0xf7df,0xffff,0xf7df,0xbdf8,0x2126,0x2965,0x5b0b,0x630b,0x52cb,0x3a6b,0x4aac,0x42cc,0x42cb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x632c,0x630c,0x630c,0x630c,0x5b0b,0x632c, +0x52ca,0x52ca,0x52ea,0x52ea,0x4aca,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4aaa,0x4a89,0x4289,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x4aca,0x31c7,0x2124,0x2965,0x2104,0x0840,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x10a2,0x18c3,0x2124,0x4227,0x4a89,0x4249,0x4249,0x4a69,0x4269,0x4a89,0x4a89,0x4aca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aa9,0x4a89,0x4aa9,0x4aa9,0x4aaa,0x4aa9,0x4289,0x4aa9,0x4aaa,0x52ca,0x3a07,0x1904,0x2124,0x1081,0x0841,0x0861,0x1081,0x10a2,0x18c2,0x18c3,0x18c3,0x10c2,0x10a2,0x1061,0x1904,0x2986,0x2104,0x2985,0x4289,0x4269,0x4269,0x52ca,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x4aca,0x52eb,0x530b,0x530b,0x530b,0x5b2b,0x638d,0x636d,0x39e7,0x18e3,0x31c6,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3a48,0x532b,0x4aaa,0x3a48,0x31c7,0x31c7,0x31e7,0x31e7,0x3a08,0x31e7,0x3a08,0x31e7,0x3a28,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x3a28,0x3a28,0x3a08,0x4248,0x4248,0x3a28,0x3a28,0x4249,0x4a89,0x4249,0x4228,0x4269,0x4269,0x4269,0x4269,0x4289,0x4289,0x4aaa,0x4aaa,0x4a89,0x4a89,0x4a89,0x4aaa,0x52ca,0x52aa,0x52aa,0x52ca,0x52ea,0x52ca,0x52ca,0x4aca,0x52ca,0x52eb,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52eb,0x52cb,0x52cb,0x52eb,0x52eb,0x52eb,0x52eb,0x52ca,0x52ca,0x52cb,0x4aaa,0x4aca,0x52ca,0x52aa,0x52ca,0x52eb,0x52eb,0x5aeb,0x52eb,0x52ca,0x52ca,0x52ca,0x4aaa,0x4a8a,0x4aaa,0x52ca,0x52eb,0x5b0b,0x5aeb,0x634c,0x52eb,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0041,0x0000,0x2124,0x4a69,0x39e7,0x31c6,0x634d,0x6bce,0x6b8d,0x6b6d,0x6b8d,0x634c,0x634c,0x6b6d,0x634c,0x634c,0x632c,0x634c,0x634c,0x634c,0x5b2c,0x5aeb,0x5b0b,0x4249,0x10a2,0x2124,0x18e3,0x18c2,0x4248,0x6b8d,0x742f,0x9513,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xbe18,0x08c4,0x2986,0x4269,0x632d,0x6b6c,0x8c0b,0x9c2b,0x9c2b,0x942b,0x7bab,0x634c,0x6b4c,0x636c,0x632c,0x632c,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x634d,0x634c,0x632c,0x5b0b,0x5b0c,0x52cb,0x2945,0x1903,0x2124,0x2103,0x52a9,0x73ed,0x73ad,0x6b8d,0x740f,0x9d74,0xef9e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc619,0x10c4,0x630c,0x5aeb,0x632b,0x7b8b,0x7b8b,0x7b8b,0x7b6b,0x632b,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x630c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x5b0b, +0x52eb,0x5b0b,0x4aca,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4a89,0x4289,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52eb,0x31c6,0x2124,0x2145,0x1903,0x0840,0x1082,0x10a2,0x18c3,0x2103,0x1903,0x2124,0x2124,0x18c3,0x18c3,0x18c2,0x18e3,0x2124,0x31c6,0x4a69,0x4a69,0x4a69,0x4268,0x4268,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aa9,0x4aaa,0x4aca,0x4aa9,0x4a89,0x4aaa,0x4aca,0x4aaa,0x4aa9,0x52ea,0x3a07,0x1904,0x2165,0x0881,0x0861,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x2104,0x2965,0x1904,0x31a6,0x4a69,0x4a69,0x4a89,0x4aaa,0x4aca,0x4aca,0x52ca,0x4a89,0x4aaa,0x52ca,0x52ea,0x52eb,0x5b2b,0x530b,0x530b,0x5b2c,0x5b4c,0x31c6,0x10c2,0x31c6,0x10a2,0x0020,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3a48,0x4aea,0x3a28,0x3207,0x31e7,0x3207,0x31c7,0x31e7,0x31e7,0x29c6,0x31e7,0x31c7,0x3a28,0x3a28,0x31e7,0x39e7,0x31e7,0x31e7,0x3a28,0x4249,0x4269,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x3a48,0x3a48,0x4248,0x4249,0x4248,0x3a28,0x4269,0x4268,0x4269,0x4248,0x52ca,0x4aa9,0x4269,0x4248,0x4269,0x4aaa,0x4aaa,0x4aaa,0x52eb,0x52ea,0x4aca,0x52ca,0x4aaa,0x4aaa,0x52aa,0x52ca,0x4aaa,0x4aaa,0x52aa,0x52aa,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4aaa,0x4aaa,0x4aca,0x52cb,0x52ca,0x4aca,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x5b2c,0x52eb,0x0821,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0841,0x0000,0x31a6,0x5b2c,0x31c6,0x31c6,0x634d,0x6bae,0x6b8d,0x636d,0x636c,0x6b6d,0x634c,0x6b6d,0x636d,0x636d,0x636d,0x634c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b2c,0x4a6a,0x1061,0x2124,0x2124,0x10a2,0x73ee,0x8470,0x740e,0xbe58,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7df,0x7c10,0x0000,0x52aa,0x6b4c,0x632d,0xc56a,0xe5e8,0xdda9,0xe5e8,0xa469,0x52ec,0x634c,0x632c,0x6b6d,0x634c,0x6b6c,0x6b4c,0x634c,0x634c,0x632c,0x634c,0x632c,0x632c,0x6b6d,0x634c,0x632c,0x632c,0x5aec,0x2124,0x2124,0x2965,0x1902,0x73cd,0x94b0,0x7c0f,0x8450,0x8490,0xceb9,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0x8452,0x4a48,0x530c,0x940a,0xe5c8,0xe5a8,0xe588,0xdd48,0x736b,0x632c,0x5aeb,0x5aeb,0x630b,0x630b,0x630c,0x630b,0x632c,0x6b6d,0x632c,0x5b0c,0x5b0b,0x5b0b, +0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x530b,0x4aca,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aca,0x52ca,0x3a07,0x2124,0x2145,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2103,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x1904,0x2124,0x31a6,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4aa9,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x4a89,0x4aa9,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aca,0x31c6,0x2124,0x2945,0x10a2,0x18c3,0x0000,0x0000,0x0000,0x1882,0x2944,0x2124,0x18e3,0x10a2,0x10a2,0x18e3,0x2965,0x18e4,0x31e7,0x4aaa,0x4a89,0x4aaa,0x4289,0x52ca,0x4aca,0x4aca,0x4aaa,0x52ea,0x52ca,0x52ca,0x52ea,0x52ea,0x530b,0x5b2b,0x5b2b,0x5b2b,0x4248,0x10c2,0x31a6,0x1081,0x0820,0x0861,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x4269,0x4aeb,0x3a28,0x3a28,0x3a28,0x3a28,0x3207,0x31e7,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x3a28,0x3a08,0x31c7,0x39c7,0x3a08,0x3a08,0x3a08,0x3a08,0x4249,0x4269,0x4248,0x4248,0x3a28,0x4248,0x4228,0x4248,0x4289,0x4aa9,0x4269,0x4248,0x4269,0x4268,0x4289,0x4289,0x4289,0x4aaa,0x4a89,0x4289,0x4269,0x4a69,0x4a69,0x4a89,0x4a69,0x4a89,0x4a89,0x4a69,0x4269,0x4aaa,0x4a8a,0x4a89,0x4a89,0x4a8a,0x4a89,0x4a69,0x4a8a,0x4a8a,0x4269,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4a8a,0x4269,0x4269,0x4269,0x4269,0x4249,0x4249,0x4269,0x4269,0x4269,0x4a89,0x4a8a,0x4aaa,0x4a89,0x4a89,0x4aaa,0x4a8a,0x4aaa,0x4a89,0x4a8a,0x4aca,0x4aaa,0x5b2c,0x52cb,0x0840,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0841,0x0000,0x2986,0x52eb,0x3a07,0x3a07,0x636d,0x6b8e,0x6b8d,0x6b6d,0x6b8d,0x636c,0x632c,0x634c,0x636d,0x634d,0x632c,0x5b2b,0x632c,0x634c,0x634d,0x5b0c,0x5b4c,0x4a8a,0x0820,0x2965,0x2104,0x2144,0x73ef,0x7c2f,0x5b4c,0xadf6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xa534,0x0000,0x52aa,0x634c,0x634c,0x5b0b,0x5b0c,0x52ec,0x5aeb,0x630c,0x632c,0x6b4c,0x634c,0x632c,0x632c,0x630b,0x630b,0x632c,0x634c,0x5b0c,0x5b0b,0x632c,0x632c,0x634c,0x5b0b,0x630b,0x6b6d,0x5acb,0x2965,0x2944,0x2124,0x2964,0x7bed,0x7c0f,0x73ce,0x7bef,0x6b8c,0xce99,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffdf,0xffff,0xa535,0x3207,0x632c,0x632b,0x736a,0x736a,0x738a,0x734a,0x634c,0x630c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x630c, +0x52eb,0x52ca,0x52ca,0x52ca,0x52ea,0x52eb,0x52ca,0x4aaa,0x52ca,0x52ca,0x4aaa,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x4aca,0x31c6,0x2145,0x2985,0x10a1,0x0000,0x0000,0x0000,0x0000,0x2124,0x2103,0x1903,0x2103,0x18e3,0x10a2,0x1081,0x2124,0x2144,0x31c7,0x4aaa,0x4aca,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x52ea,0x530b,0x4aca,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aaa,0x4aa9,0x4aca,0x52ea,0x52eb,0x4aa9,0x1923,0x2104,0x2986,0x0000,0x0000,0x5b0b,0x7c2f,0x638d,0x1944,0x0000,0x0000,0x18c3,0x10a2,0x1081,0x2104,0x2965,0x2124,0x3a07,0x4aaa,0x4aca,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aa9,0x4aaa,0x4aca,0x52cb,0x52eb,0x52ca,0x52ca,0x52eb,0x530b,0x530b,0x530b,0x31c6,0x10c2,0x2986,0x10a2,0x0020,0x0881,0x0081,0x08a1,0x08c1,0x08a1,0x0061,0x08c2,0x0000,0x4289,0x4aeb,0x3a48,0x3a28,0x3a07,0x3a28,0x3a07,0x31e7,0x31e7,0x31e7,0x31e7,0x39e7,0x31e7,0x31e7,0x31e7,0x31a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2986,0x31a6,0x39e7,0x3a07,0x4269,0x4269,0x3a08,0x3a28,0x4249,0x4269,0x3a08,0x4269,0x4aa9,0x4268,0x3a28,0x4249,0x4269,0x4249,0x4248,0x4249,0x4269,0x4269,0x4269,0x4a69,0x4269,0x4a89,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x4a89,0x4a89,0x4a89,0x4a8a,0x4a89,0x4a89,0x4289,0x4aaa,0x4a8a,0x4a8a,0x52cb,0x52eb,0x52ca,0x4a8a,0x4269,0x4269,0x4248,0x3a28,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a08,0x4228,0x4a69,0x4aaa,0x4289,0x4a89,0x4a69,0x4aaa,0x4a89,0x4a8a,0x4a89,0x4a8a,0x4acb,0x52eb,0x52ca,0x08a1,0x08a1,0x0020,0x0020,0x0040,0x0040,0x0840,0x0020,0x0841,0x0000,0x2124,0x4248,0x39e7,0x3a07,0x6b8d,0x73ae,0x6b8d,0x6b6d,0x6b6d,0x636c,0x634c,0x634c,0x634c,0x632c,0x632c,0x632b,0x634c,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x52aa,0x0020,0x2124,0x18c3,0x2965,0x638d,0x73ce,0x638c,0xa595,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x52aa,0x636d,0x6b4c,0x9c2b,0xacaa,0xa46a,0xa48a,0x83cb,0x634c,0x630b,0x632c,0x6b4d,0x632c,0x632c,0x632c,0x632b,0x632c,0x632c,0x632c,0x632c,0x630b,0x5b0c,0x632c,0x632c,0x632c,0x5aeb,0x3186,0x2965,0x2124,0x2103,0x6b8c,0x73ad,0x6b8d,0x6b8d,0x52e9,0xbe37,0xffff,0xffff,0xffff,0xffff,0xffff,0xffde,0xffdf,0x8c72,0x4aa9,0x634c,0x6b2a,0x7b4a,0x7b6a,0x836a,0x7b6a,0x632b,0x5b0b,0x5aeb,0x5b0c,0x632c,0x632c,0x5aeb,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x630c,0x632c, +0x52eb,0x52ca,0x52ca,0x4aca,0x4aca,0x4aca,0x52eb,0x4aca,0x4aaa,0x52ca,0x4aaa,0x52ea,0x4aca,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x52ca,0x31c6,0x2965,0x0880,0x2125,0x8c92,0xa554,0x94d2,0x636c,0x29a6,0x4228,0x4207,0x18e3,0x18c2,0x18e3,0x10a2,0x1904,0x2124,0x31a6,0x4aaa,0x4aca,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52ea,0x52ca,0x4aaa,0x52ca,0x4aca,0x4aca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aca,0x52ca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aca,0x52ea,0x52ca,0x29a5,0x2124,0x2986,0x0000,0xadb6,0xef9d,0xefbd,0xe79d,0xd6fb,0xa554,0x4a88,0x10a2,0x1082,0x10a2,0x2145,0x2965,0x1904,0x3a08,0x52ea,0x52ca,0x4aca,0x4aca,0x52ea,0x4aaa,0x4aaa,0x52eb,0x530b,0x52ca,0x52ca,0x52eb,0x52ca,0x52eb,0x52eb,0x530b,0x5b2b,0x31a6,0x18a2,0x2985,0x0881,0x0841,0x10e2,0x08c1,0x0902,0x0922,0x08e1,0x0081,0x08a1,0x0000,0x4aca,0x530b,0x4aaa,0x4aca,0x4268,0x4aa9,0x4269,0x4248,0x3a28,0x3a07,0x31e7,0x3a08,0x31e7,0x29a6,0x29a6,0x2985,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x2124,0x18e3,0x1903,0x2165,0x31a6,0x31c7,0x4269,0x4289,0x3a28,0x3a28,0x4248,0x4269,0x4249,0x4248,0x4a89,0x4aa9,0x4aca,0x4aca,0x52cb,0x4aaa,0x4a8a,0x52ca,0x52ca,0x4aca,0x4aca,0x4aa9,0x4aaa,0x4aca,0x4aca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52ca,0x52eb,0x52cb,0x52cb,0x52ab,0x4aaa,0x52aa,0x52ca,0x4aaa,0x52eb,0x5b2c,0x5b2c,0x52eb,0x4aaa,0x4aaa,0x4a89,0x4248,0x3a08,0x31c7,0x39e7,0x31e7,0x31c7,0x31c7,0x31c6,0x31c7,0x39e7,0x3a08,0x4a69,0x52aa,0x4aca,0x4aaa,0x4aaa,0x52cb,0x52ca,0x52cb,0x5b0c,0x52eb,0x5b2c,0x634d,0x5b0b,0x08c2,0x08e2,0x0020,0x0020,0x0040,0x0041,0x0861,0x0861,0x0861,0x0000,0x1904,0x4228,0x3186,0x31a6,0x6b6d,0x738d,0x6b6d,0x634d,0x634c,0x636c,0x636c,0x634c,0x632c,0x634d,0x6b4d,0x634c,0x636c,0x6bae,0x73ce,0x738d,0x6bae,0x52ca,0x0861,0x2124,0x2124,0x10a2,0x636c,0x7c50,0x7c90,0x84b1,0xe75c,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xe75c,0x4229,0x2944,0x4a89,0x6b6d,0x636c,0xd589,0xf649,0xee49,0xf648,0xb469,0x4aeb,0x6b4c,0x632c,0x5b0b,0x632c,0x632c,0x5b0c,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634d,0x630c,0x2965,0x2144,0x2965,0x18c2,0x4aa9,0x6b8c,0x6b8c,0x73ad,0x632b,0x94d2,0xefde,0xffff,0xffdf,0xffdf,0xffdf,0xffff,0xdefc,0x31c8,0x5aeb,0x4aab,0x9c4a,0xedc7,0xeda8,0xf5e8,0xe588,0x7b6b,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x630b,0x630b,0x5b0c,0x632c,0x630b,0x632b,0x632c,0x632c,0x632c, +0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ea,0x4aca,0x4aca,0x530b,0x52eb,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x3a07,0x10c3,0x31c8,0xc659,0xffff,0xf7fe,0xf7fe,0xe77c,0xadb5,0x638c,0x6b8d,0x52ea,0x10a1,0x1082,0x18e3,0x1903,0x2104,0x2986,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ea,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52ea,0x52eb,0x52ca,0x4aaa,0x52ca,0x52eb,0x52ca,0x4aca,0x4aca,0x52ca,0x4aca,0x530b,0x4aaa,0x31a6,0x2145,0x0000,0x9d34,0xf7ff,0xf7de,0xf7de,0xf7de,0xffff,0xf7dd,0xad94,0x52ea,0x0000,0x18c2,0x2965,0x2965,0x1904,0x3a08,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52eb,0x52ca,0x52ea,0x530b,0x530b,0x4aca,0x4aaa,0x52ea,0x530b,0x530b,0x530b,0x532b,0x39e7,0x18c2,0x2985,0x1082,0x0020,0x10c2,0x08c1,0x0901,0x0922,0x08e1,0x0081,0x0000,0x10a2,0x31e7,0x2965,0x31a6,0x39e7,0x29a6,0x29a6,0x31c6,0x2985,0x2144,0x1904,0x2986,0x2985,0x2124,0x2124,0x2144,0x2124,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2144,0x2103,0x2124,0x2124,0x2965,0x2965,0x31c6,0x31e7,0x31c6,0x31c6,0x31c6,0x39e7,0x3a28,0x4228,0x4228,0x4aa9,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4a89,0x4a69,0x4248,0x4269,0x4a69,0x4269,0x4a69,0x4a89,0x4a8a,0x4a89,0x4269,0x4a89,0x4a89,0x4269,0x4289,0x428a,0x4aaa,0x4269,0x4248,0x4269,0x4249,0x4a69,0x4a89,0x52aa,0x4a8a,0x4a8a,0x4aaa,0x4a89,0x3a08,0x39e7,0x39e7,0x39c7,0x31a6,0x31a6,0x3186,0x31a6,0x39e7,0x39e7,0x3a07,0x52ca,0x52eb,0x4aaa,0x52ca,0x52ca,0x52eb,0x52eb,0x5b2c,0x5b4c,0x5b0c,0x52aa,0x5b0b,0x1903,0x00c1,0x0040,0x0020,0x0040,0x0040,0x0841,0x10a2,0x1081,0x0020,0x1904,0x4228,0x31a6,0x31a6,0x634c,0x6b8d,0x6b8e,0x6b8d,0x6b4c,0x636c,0x636d,0x634c,0x636d,0x634c,0x634c,0x634c,0x634c,0x6b6d,0x6bae,0x634c,0x73ce,0x5b0b,0x0000,0x2124,0x2965,0x2944,0x4248,0x5b2c,0x63ad,0x636c,0x8cb2,0xe75c,0xffff,0xffff,0xffff,0xf79e,0x8430,0x1904,0x31a6,0x4a89,0x6b8d,0x6b4c,0x5b0b,0x62eb,0x62cb,0x630c,0x630b,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x5b0c,0x5b2c,0x632c,0x634c,0x630c,0x5b0b,0x632c,0x634d,0x632c,0x632c,0x634d,0x5aeb,0x2104,0x2945,0x31a6,0x39e7,0x4a68,0x634b,0x6b8c,0x6b6c,0x73ae,0x6b6c,0xadb5,0xf7de,0xffff,0xffff,0xffff,0xef5d,0x6b4d,0x10e1,0x5b0b,0x630b,0x5aca,0x62ea,0x6309,0x632a,0x632a,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b0c,0x5aeb,0x5b0b,0x5b0b,0x5b2c,0x632c,0x632c,0x632c,0x630c,0x630b, +0x52ea,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ea,0x52ea,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aca,0x52eb,0x3a07,0x0000,0xbe3a,0xf7ff,0xf7df,0xffde,0xf7de,0xfffe,0xefbd,0x94f2,0x73ee,0x7c4f,0x31e6,0x0000,0x18e3,0x2104,0x2124,0x39e7,0x52eb,0x52ca,0x52eb,0x52ea,0x52ea,0x52ca,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x4aca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ea,0x52ea,0x52ca,0x52ea,0x52ca,0x4aca,0x4aa9,0x29a6,0x1081,0x3208,0xd71c,0xefdd,0xf7dd,0xf7de,0xf7dd,0xf7dd,0xf7fe,0xceb9,0x7c0f,0x2164,0x0820,0x2965,0x2965,0x2124,0x4248,0x52eb,0x52eb,0x52eb,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x4aca,0x52ea,0x530b,0x52eb,0x530b,0x5b2b,0x31c6,0x18e3,0x2965,0x10a2,0x0861,0x10c2,0x08a1,0x08e1,0x0922,0x08e1,0x0081,0x0000,0x18e3,0x31c6,0x0820,0x18e3,0x2104,0x2124,0x2124,0x2124,0x1903,0x18c3,0x0882,0x1904,0x2144,0x2124,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2965,0x18c2,0x1903,0x2144,0x2165,0x2145,0x2144,0x2144,0x2144,0x2965,0x2144,0x2164,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2144,0x1924,0x1903,0x2124,0x2965,0x2945,0x1903,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x2144,0x2965,0x2965,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2965,0x2144,0x10c2,0x4228,0x4a8a,0x39e7,0x39e7,0x31a5,0x2965,0x2145,0x2144,0x2124,0x2124,0x2144,0x2965,0x2965,0x31a6,0x4228,0x4a89,0x52ca,0x4a89,0x4a89,0x4a89,0x4aa9,0x5b0b,0x31a6,0x0000,0x4268,0x2144,0x00e1,0x0040,0x0020,0x0060,0x0060,0x0840,0x1081,0x1081,0x0020,0x2124,0x4248,0x31a6,0x31a6,0x6b8d,0x6b8d,0x636d,0x6b8d,0x73ad,0x6bad,0x634c,0x634c,0x636d,0x636d,0x636c,0x6b6d,0x634c,0x632c,0x6b6d,0x634c,0x73ae,0x5aeb,0x0000,0x2124,0x2144,0x2965,0x4248,0x5aeb,0x634c,0x6b6c,0x634c,0x8450,0xbe17,0xce79,0xb5d6,0x5acb,0x0000,0x4228,0x2945,0x4269,0x6b8d,0x6b6d,0xc56a,0xe5e9,0xddc9,0xe609,0xa46a,0x5b0c,0x630b,0x632c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x5b0b,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x5acb,0x1903,0x31a6,0x4208,0x3185,0x4248,0x5b0a,0x634c,0x5aca,0x52aa,0x5aeb,0x5aca,0x8c91,0xc617,0xce59,0xad75,0x4a69,0x0000,0x39c7,0x5aeb,0x52ec,0x83ea,0xcd28,0xc4e8,0xc4e8,0xc4e9,0x734b,0x5b0b,0x630b,0x5b0b,0x630c,0x5aeb,0x5aeb,0x5b0b,0x632b,0x632b,0x5b0c,0x630c,0x630c,0x630c, +0x52ea,0x52ea,0x52ca,0x4aaa,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x52ea,0x52ea,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aca,0x52cb,0x2943,0x4aad,0xe79e,0xf7ff,0xf7de,0xffff,0xffff,0xf7de,0xf7ff,0xbe77,0x6bcd,0x8cb1,0x52c9,0x0000,0x18c3,0x18e3,0x18e3,0x3a28,0x5b4c,0x530b,0x52ea,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x52ca,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x4aca,0x4aca,0x52ca,0x52ca,0x3a28,0x0000,0x532d,0xdf7d,0xf7bd,0xf7dd,0xffde,0xffde,0xf7bc,0xf7de,0xd6da,0x8470,0x4a89,0x0000,0x2145,0x2165,0x2104,0x4269,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x530b,0x52eb,0x52eb,0x52eb,0x52ea,0x52ea,0x4aca,0x4aaa,0x52ea,0x52ea,0x52ca,0x5b0b,0x5b4c,0x4a69,0x18e3,0x2145,0x1082,0x0840,0x10c2,0x1102,0x1142,0x0121,0x0901,0x08a1,0x0000,0x1903,0x3a07,0x0861,0x1082,0x0861,0x10c2,0x18e3,0x10a2,0x1082,0x0861,0x1082,0x0041,0x31c6,0x3a07,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x4a49,0x2965,0x29a6,0x2985,0x2945,0x31a6,0x39e7,0x39e7,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4269,0x4228,0x3a28,0x3a28,0x4228,0x3a08,0x39e7,0x3a08,0x3a07,0x3a08,0x3a28,0x4a89,0x3a28,0x4228,0x4248,0x3a08,0x3a08,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x4228,0x3a07,0x3a07,0x3a28,0x4248,0x3a48,0x4269,0x4a89,0x4aa9,0x4248,0x4269,0x4a69,0x39e7,0x1903,0x4a89,0x4a89,0x39e7,0x3a07,0x2103,0x31a6,0x52ea,0x52ca,0x39e7,0x4248,0x4248,0x4249,0x4a69,0x52aa,0x0861,0x10a2,0x18c2,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x0020,0x10a2,0x3a48,0x2184,0x0942,0x0020,0x0040,0x0060,0x0081,0x0020,0x0861,0x1082,0x0000,0x2965,0x528a,0x31a6,0x39e7,0x636d,0x6b8d,0x6b6d,0x6b8d,0x6bad,0x6b8d,0x632c,0x6b6d,0x634c,0x634c,0x6b6d,0x634c,0x634c,0x636c,0x634c,0x634c,0x6bae,0x52cb,0x10a2,0x2965,0x2945,0x1082,0x2124,0x3185,0x39c6,0x2985,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x2985,0x3a08,0x2986,0x4a69,0x6b6d,0x6b6d,0x9c4a,0xb4ea,0xb4ca,0xb4e9,0x8beb,0x530b,0x5b0b,0x630c,0x632c,0x634c,0x634c,0x632c,0x634d,0x632c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x630b,0x5aeb,0x5aeb,0x2945,0x2165,0x3a07,0x3185,0x2123,0x2103,0x18e3,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x2965,0x2985,0x5aea,0x4aab,0x8bea,0xd548,0xd529,0xd548,0xd509,0x734a,0x5aeb,0x5aeb,0x5b0c,0x5b0c,0x630c,0x5b0c,0x632c,0x630b,0x632c,0x5b0c,0x5aeb,0x5aeb,0x5b0b, +0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52ca,0x4aaa,0x4aca,0x52ca,0x52eb,0x52eb,0x52ca,0x4aca,0x52ca,0x52ca,0x4aca,0x530b,0x18c0,0x6391,0xef9e,0xefdf,0xf7de,0xf7de,0xf7de,0xf7de,0xf7ff,0xced9,0x7c2e,0x8cb1,0x634b,0x0000,0x18e3,0x2103,0x2104,0x31c7,0x5b4c,0x530b,0x5b2b,0x530b,0x52ea,0x52ca,0x52ea,0x5b2b,0x52eb,0x52ca,0x5b0b,0x530b,0x52ca,0x52ca,0x52eb,0x530b,0x52ea,0x52ea,0x52eb,0x52ca,0x52eb,0x52ea,0x52ca,0x52ea,0x4aca,0x3a27,0x0000,0x3a8a,0xdf5d,0xfffe,0xffde,0xfffe,0xf7dd,0xf7bc,0xfffe,0xd6da,0x8490,0x52aa,0x0000,0x2165,0x2145,0x2144,0x4aaa,0x5b2c,0x5b4c,0x530b,0x5b2b,0x530b,0x52eb,0x530b,0x52eb,0x52eb,0x52ca,0x4aaa,0x4aca,0x4aca,0x52ea,0x52eb,0x530b,0x5b4c,0x3a48,0x18e3,0x2985,0x0881,0x0020,0x10e2,0x0922,0x1183,0x0962,0x0901,0x08a1,0x0000,0x1903,0x3a07,0x0000,0x0020,0x0841,0x0020,0x0040,0x0841,0x0020,0x0020,0x0000,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x0841,0x0840,0x0841,0x0841,0x0020,0x2965,0x2144,0x2985,0x2985,0x2124,0x2965,0x31a5,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2985,0x31c6,0x31a6,0x2985,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x2965,0x10a2,0x4a89,0x4a69,0x4228,0x4248,0x2103,0x2124,0x31a6,0x31c6,0x2965,0x2965,0x2965,0x2985,0x31a6,0x31c6,0x10a2,0x0841,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0040,0x1082,0x3a08,0x2184,0x0982,0x0060,0x0040,0x0060,0x0081,0x0841,0x0841,0x0841,0x0000,0x1904,0x4228,0x31c6,0x31e7,0x636d,0x6bae,0x636d,0x634c,0x6b8d,0x6b6d,0x634c,0x638d,0x636c,0x634c,0x632c,0x5b0b,0x636c,0x636d,0x634c,0x6b8d,0x73ce,0x5aeb,0x1081,0x31a6,0x2965,0x18c3,0x1082,0x0841,0x0020,0x0020,0x0000,0x10a2,0x18e3,0x18e3,0x2104,0x1082,0x31a6,0x4a8a,0x31a6,0x52a9,0x738d,0x634c,0x9c4a,0xac6a,0xac6a,0xb4aa,0x8bab,0x5b2c,0x630b,0x5aeb,0x634c,0x634c,0x632c,0x5b0c,0x5b2c,0x5b0c,0x5b0b,0x632c,0x5aeb,0x632c,0x634c,0x630b,0x5aea,0x5b0b,0x5aeb,0x2965,0x3a07,0x4228,0x2965,0x18e3,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x2104,0x2104,0x2965,0x31a6,0x2104,0x2965,0x5b0b,0x5aeb,0x6b0a,0x8ba9,0x8b8a,0x8ba9,0x8389,0x630b,0x5aeb,0x5acb,0x5b0c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x630c,0x52cb,0x52ca,0x5aeb,0x5aeb, +0x52ea,0x52eb,0x52ca,0x52eb,0x52eb,0x52cb,0x52eb,0x52eb,0x4aca,0x4aca,0x4aca,0x52eb,0x52ea,0x4aca,0x4aca,0x4aca,0x52aa,0x52ca,0x52eb,0x39e5,0x4a8d,0xe77e,0xf7ff,0xffde,0xf7de,0xf7de,0xf7be,0xf7ff,0xc657,0x73ed,0x8cb0,0x52ea,0x0000,0x18e3,0x2124,0x2104,0x4269,0x636c,0x5b2b,0x530b,0x52eb,0x52eb,0x4aca,0x4aca,0x52eb,0x4aca,0x52ea,0x52eb,0x52ca,0x52ea,0x52ea,0x52ea,0x52ea,0x52ea,0x530b,0x530b,0x52eb,0x52ca,0x52ea,0x52ca,0x4aca,0x4aaa,0x31a6,0x2124,0x0000,0xbe58,0xffff,0xffde,0xf7dd,0xf7dd,0xfffe,0xfffe,0xbe37,0x8490,0x3a07,0x0000,0x2965,0x2144,0x2144,0x4aaa,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x530b,0x530b,0x52ca,0x5b0b,0x52ea,0x4aca,0x4aaa,0x52ca,0x52ea,0x530b,0x532b,0x5b4c,0x4a89,0x18e3,0x31c6,0x0882,0x0000,0x10e2,0x1183,0x09a2,0x0962,0x0922,0x08c1,0x0000,0x1904,0x4228,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1903,0x0861,0x1082,0x1061,0x1082,0x1082,0x10a2,0x0840,0x0861,0x10c3,0x2124,0x2985,0x2985,0x31c6,0x2145,0x2965,0x2965,0x2124,0x2145,0x2145,0x2144,0x2124,0x2144,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2986,0x31c6,0x31c6,0x31c7,0x31c6,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x3a07,0x3a07,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x4a89,0x4aaa,0x4aa9,0x4268,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x4248,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x2184,0x09c3,0x0060,0x0040,0x0060,0x0881,0x0841,0x0841,0x0841,0x0000,0x1904,0x3a08,0x31c6,0x31e7,0x6b8e,0x73ef,0x6b6d,0x6b6d,0x634c,0x6b4d,0x6b6d,0x6b6d,0x634c,0x634c,0x636c,0x6b6d,0x6b4c,0x636c,0x636d,0x6b6d,0x73ce,0x5aeb,0x10a2,0x31c7,0x2986,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0841,0x0020,0x0841,0x0000,0x39c7,0x5acb,0x31a6,0x528a,0x6b8d,0x632c,0xc529,0xdd88,0xdd69,0xdda8,0xa44a,0x532c,0x632c,0x632c,0x630b,0x632c,0x630c,0x630b,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0b,0x5aeb,0x6b4d,0x632c,0x5b0b,0x632c,0x5aeb,0x2124,0x3a28,0x3a08,0x2103,0x2124,0x2124,0x2124,0x2103,0x18c3,0x10a2,0x0861,0x0020,0x0841,0x0020,0x2945,0x39c7,0x2966,0x31a6,0x5aea,0x52cb,0x9c2a,0xe5a8,0xe588,0xe5c8,0xdd68,0x7349,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x630c,0x630c,0x5b0b,0x632c,0x52cb,0x52aa,0x52ca,0x5aeb,0x5aeb, +0x52eb,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aca,0x52eb,0x3a07,0x0000,0xb5f9,0xffff,0xffff,0xffff,0xffdf,0xffff,0xdf5b,0x7c0d,0x6309,0x636c,0x2964,0x0000,0x18e3,0x2104,0x2124,0x31e7,0x636d,0x5b4c,0x5b0b,0x530b,0x52eb,0x52ea,0x4aca,0x52ea,0x4aca,0x52ea,0x52aa,0x52ca,0x52eb,0x52ea,0x52ca,0x52eb,0x52ca,0x4aca,0x4aca,0x4aca,0x52ca,0x4aca,0x52ea,0x4aca,0x4aa9,0x31c6,0x1904,0x0800,0x3a89,0xcefa,0xf7ff,0xffff,0xf7fe,0xe75c,0xb5f6,0x7c4f,0x5b2b,0x0000,0x1081,0x2124,0x2124,0x2124,0x4a89,0x5b4c,0x530b,0x5b2b,0x52ca,0x5b0b,0x52eb,0x530b,0x52ea,0x52ca,0x52eb,0x4aaa,0x4a89,0x4aaa,0x52ca,0x530b,0x532b,0x5b4c,0x4228,0x18e3,0x4248,0x1082,0x0000,0x10e2,0x1183,0x09c3,0x0982,0x0942,0x08e1,0x0060,0x0882,0x4aaa,0x5b2c,0x636c,0x5b4c,0x4289,0x4248,0x4228,0x4269,0x52ca,0x4248,0x3a07,0x3a07,0x2965,0x2145,0x2965,0x2144,0x2104,0x2144,0x31c7,0x2124,0x2965,0x2986,0x31c7,0x31c7,0x31c6,0x3a07,0x4248,0x4a69,0x4289,0x4249,0x4249,0x4289,0x4248,0x4248,0x4249,0x4248,0x4269,0x4269,0x4248,0x4269,0x4249,0x4269,0x4a69,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x52eb,0x52eb,0x52eb,0x52ca,0x52cb,0x52eb,0x52eb,0x52ca,0x52eb,0x52eb,0x530b,0x5b2b,0x530b,0x5b0c,0x5b0c,0x5b2c,0x5b2b,0x5b4c,0x530b,0x4289,0x52cb,0x52cb,0x4269,0x2986,0x2985,0x2965,0x2144,0x2124,0x2145,0x2966,0x2986,0x2986,0x4248,0x4a89,0x4aaa,0x634c,0x52aa,0x4a89,0x4aaa,0x4a89,0x52eb,0x5b2c,0x636d,0x5aeb,0x1122,0x11e3,0x0040,0x0040,0x0060,0x0881,0x0861,0x0841,0x0841,0x0000,0x2124,0x4228,0x39c7,0x39e7,0x6bae,0x73ef,0x73ce,0x6bae,0x636d,0x6b6d,0x6b6d,0x632c,0x6b6d,0x6b8d,0x638d,0x6b8d,0x634c,0x634c,0x636c,0x6b6d,0x7c0f,0x632c,0x18a2,0x31c7,0x2986,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0020,0x0000,0x0841,0x0020,0x31a7,0x52aa,0x31a6,0x4aaa,0x73cd,0x630c,0xa44a,0xcd08,0xc4e9,0xc509,0x8bea,0x5b0d,0x632c,0x630b,0x632c,0x632c,0x6b8d,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5aeb,0x632c,0x630c,0x2124,0x4228,0x4249,0x2944,0x2945,0x2104,0x2104,0x2103,0x18c3,0x18c3,0x0861,0x0000,0x0020,0x0020,0x2124,0x31a6,0x2125,0x3186,0x5aeb,0x5b2c,0x7b8b,0xac68,0xb468,0xb469,0xa428,0x6b2a,0x632c,0x5aeb,0x5aeb,0x5aeb,0x630c,0x632c,0x632c,0x630b,0x52aa,0x5aeb,0x5aeb,0x5acb,0x5aeb, +0x52ea,0x52eb,0x52ea,0x52eb,0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x52ca,0x52ca,0x4248,0x18c1,0x1905,0xbe39,0xf7df,0xf7fe,0xefde,0xced9,0x7c4f,0x3a27,0x4a89,0x31a6,0x0000,0x18c3,0x18c3,0x18e3,0x2124,0x3a07,0x5b6c,0x5b2b,0x52ea,0x4aca,0x52ea,0x52ca,0x4aca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aaa,0x4aca,0x4aaa,0x31a6,0x10a2,0x2145,0x0000,0x2945,0x8cd2,0x9d54,0x94f2,0x73ee,0x636c,0x52ea,0x0040,0x0000,0x0881,0x2104,0x1904,0x2104,0x4269,0x530b,0x530a,0x52ea,0x52ea,0x5b0b,0x52eb,0x5b0b,0x52eb,0x4aca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x530b,0x532b,0x39e7,0x1903,0x52ca,0x10a2,0x0000,0x10e2,0x1183,0x11c3,0x0982,0x0962,0x0901,0x0080,0x0841,0x4268,0x530b,0x5b2b,0x5b4c,0x4289,0x4269,0x4289,0x4aaa,0x4aca,0x4aaa,0x4289,0x4248,0x3a28,0x3a07,0x31e7,0x31a6,0x29a6,0x31a6,0x31c7,0x31c6,0x31a6,0x3a08,0x4269,0x31c6,0x3a07,0x4248,0x3a48,0x3a28,0x4248,0x4269,0x3a28,0x3a48,0x3a28,0x3a28,0x3a48,0x4249,0x4269,0x4248,0x4248,0x3a28,0x4248,0x4269,0x3a48,0x4248,0x4269,0x4269,0x3a28,0x31e7,0x3a07,0x3a07,0x4228,0x4248,0x3a28,0x4248,0x4269,0x4289,0x4269,0x4289,0x4a89,0x4a89,0x4a89,0x4aaa,0x4aca,0x4aca,0x4aca,0x52cb,0x52eb,0x52ea,0x530b,0x532c,0x4aeb,0x4aaa,0x4aaa,0x52eb,0x4aaa,0x4269,0x4248,0x4248,0x3a08,0x3a07,0x3a28,0x4228,0x4249,0x4269,0x52ca,0x52eb,0x5b2c,0x740f,0x6b8d,0x52eb,0x5b0b,0x5b0c,0x5b4c,0x5b2c,0x6bae,0x632c,0x0101,0x1a04,0x0040,0x0040,0x0060,0x0881,0x0861,0x0841,0x0841,0x0000,0x2965,0x52ca,0x31c6,0x4248,0x6bae,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x6bad,0x636c,0x632c,0x6b6d,0x6b6d,0x6b8d,0x5b2c,0x630c,0x634c,0x634c,0x6b8d,0x73ef,0x5aeb,0x18c3,0x31c7,0x31a6,0x0841,0x0882,0x1081,0x1081,0x10a2,0x1082,0x0861,0x0020,0x0000,0x0841,0x0000,0x39e7,0x4aaa,0x2945,0x4a69,0x738d,0x530c,0xd5aa,0xfea8,0xfe88,0xfe88,0xa449,0x52ec,0x6b4c,0x632c,0x632c,0x632c,0x634c,0x634c,0x634c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x632b,0x5b0b,0x5aeb,0x634c,0x632c,0x2124,0x39e7,0x39e8,0x2124,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c2,0x0841,0x0020,0x0021,0x0020,0x2945,0x31a6,0x2104,0x29a5,0x630c,0x52cc,0x8c09,0xfe69,0xfe48,0xfe48,0xeda7,0x6b0b,0x52eb,0x5aeb,0x630c,0x630c,0x5b0c,0x632c,0x632c,0x5b0b,0x5aeb,0x5aca,0x5aca,0x5acb,0x5acb, +0x52eb,0x5b0b,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x52ca,0x4aca,0x3aca,0x4aca,0x52ea,0x4aca,0x3aaa,0x42ca,0x42aa,0x3aaa,0x42aa,0x52ca,0x3a07,0x2125,0x0840,0x0000,0x6b6d,0x8c91,0x73ee,0x31c5,0x0000,0x3186,0x2124,0x0840,0x10a2,0x1082,0x10a2,0x18e3,0x2124,0x3a07,0x5b2c,0x52eb,0x52eb,0x52ca,0x4aca,0x4aaa,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x4aaa,0x428a,0x4aca,0x4ac9,0x52ea,0x4aaa,0x4289,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4a89,0x2985,0x18c3,0x18e3,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x0021,0x0000,0x0841,0x0020,0x18e3,0x2104,0x1904,0x4269,0x530b,0x530b,0x532b,0x52ea,0x52ea,0x52eb,0x5b0b,0x530b,0x4aca,0x4aca,0x52ea,0x4aca,0x4aaa,0x52ca,0x52ca,0x5b2c,0x530b,0x2985,0x2144,0x5b4c,0x10a2,0x0820,0x10c2,0x1142,0x11c3,0x0982,0x0982,0x0922,0x0060,0x0000,0x5b4c,0x530b,0x4269,0x4289,0x4a89,0x4289,0x4269,0x4248,0x4289,0x4a89,0x4a89,0x4249,0x3a28,0x31c6,0x29a6,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x4269,0x4aca,0x5b4c,0x5b2b,0x52ea,0x530b,0x530b,0x5b2b,0x5b2b,0x5b4b,0x5b0b,0x530b,0x532b,0x5b2c,0x5b2b,0x5b4c,0x5b2b,0x530b,0x530b,0x530b,0x52eb,0x52eb,0x52eb,0x5b0b,0x530b,0x530b,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b4c,0x5b4c,0x5b4c,0x5b0b,0x52eb,0x52eb,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x530b,0x5b2b,0x636d,0x634d,0x634c,0x6bce,0x6bce,0x6bad,0x638d,0x52eb,0x6bae,0x740f,0x636c,0x5b2b,0x5b2b,0x4aaa,0x4aaa,0x4289,0x4aaa,0x4aca,0x4aaa,0x4acb,0x52eb,0x5b2c,0x52eb,0x4aca,0x52eb,0x4a89,0x4a89,0x4269,0x4249,0x4aaa,0x4a8a,0x634c,0x52eb,0x0122,0x19e4,0x0020,0x0040,0x0060,0x0881,0x0881,0x0040,0x0861,0x0000,0x2965,0x52aa,0x39c7,0x4228,0x6bae,0x73ce,0x6bad,0x6bae,0x738d,0x6b6d,0x634c,0x634d,0x6b6d,0x634c,0x636d,0x5b2c,0x5b2c,0x5b0b,0x6b8d,0x6bae,0x73ae,0x634c,0x2103,0x31e7,0x31c7,0x0820,0x0861,0x1081,0x0861,0x1082,0x1082,0x0861,0x0020,0x0020,0x0861,0x0841,0x31c7,0x4aab,0x4208,0x4a68,0x6b8d,0x530d,0xacaa,0xfe89,0xfe89,0xee28,0x7b4b,0x5b0c,0x632c,0x634c,0x632c,0x632c,0x636d,0x634c,0x634c,0x6b6d,0x634c,0x630c,0x5aeb,0x5b2c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x3185,0x31a7,0x39e7,0x2104,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18c2,0x0841,0x0020,0x0841,0x0000,0x2965,0x39c7,0x2125,0x2965,0x5aeb,0x632c,0x6b2b,0xede9,0xfe28,0xfe28,0xd508,0x528b,0x632b,0x632c,0x5b0c,0x632c,0x630c,0x5b0c,0x632c,0x630c,0x52ca,0x5aca,0x5aeb,0x5acb,0x5aeb, +0x52ea,0x52eb,0x52ea,0x52eb,0x52ca,0x52eb,0x5b0b,0x4aeb,0x62ea,0x82ca,0x5aca,0x4aea,0x6aca,0x8aea,0x7aeb,0x6aaa,0x82ca,0x7aea,0x52ca,0x39e6,0x10e3,0x2104,0x2924,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0020,0x1081,0x1082,0x0020,0x1082,0x10a2,0x1903,0x39e7,0x52eb,0x52eb,0x5b0b,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x4aca,0x52ca,0x4a8a,0x4aca,0x630a,0x7389,0x52c9,0x52ca,0x4aaa,0x52c9,0x5ae9,0x52a9,0x52e9,0x52ea,0x5aea,0x630a,0x4aea,0x31c5,0x18c3,0x1903,0x18c3,0x1082,0x18e3,0x18e3,0x18c3,0x0861,0x0000,0x0840,0x0861,0x0000,0x0020,0x18e3,0x1904,0x1904,0x4a89,0x530b,0x532b,0x530b,0x5b2b,0x5b2b,0x5b2b,0x530b,0x530b,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x4aca,0x52eb,0x5b4c,0x636c,0x39e6,0x18c3,0x4aaa,0x10c2,0x0841,0x10a2,0x10e2,0x1163,0x0982,0x1163,0x08e2,0x0902,0x18e3,0x6b8d,0x4248,0x31a6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a07,0x31e7,0x3186,0x2965,0x2945,0x2985,0x31a6,0x31c6,0x39e7,0x29a6,0x31c6,0x39e7,0x3a07,0x4a89,0x4aaa,0x4a89,0x4248,0x4268,0x4a89,0x4aa9,0x4269,0x4aa9,0x4aca,0x4aaa,0x4a89,0x4a89,0x4aaa,0x52ea,0x4aaa,0x4a89,0x4aaa,0x4aca,0x4aaa,0x52ca,0x52ca,0x52eb,0x52ca,0x530b,0x5b2c,0x5b0b,0x52eb,0x530b,0x52ea,0x52eb,0x52ea,0x52eb,0x52eb,0x5b0b,0x530b,0x5b2c,0x5b0b,0x5b2c,0x530b,0x530b,0x530b,0x5b4c,0x5b4c,0x5b4c,0x6b8d,0x6bae,0x638d,0x5b2b,0x73ee,0x7c2f,0x63ad,0x530b,0x5b2c,0x5b2b,0x5b2c,0x5b0b,0x52eb,0x530b,0x5b2c,0x5b4c,0x636c,0x6b8d,0x6b8d,0x6bae,0x73ce,0x6bae,0x6bce,0x73ce,0x73ef,0x8450,0x8451,0x9d33,0x6b8d,0x0100,0x19e4,0x0000,0x0060,0x00a1,0x08a1,0x0861,0x0041,0x0020,0x0000,0x18e3,0x4228,0x31c7,0x39e7,0x6b8d,0x6bae,0x73ce,0x6bae,0x6b8d,0x738d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x632c,0x5b2c,0x634c,0x636c,0x6b6d,0x73ae,0x632c,0x0861,0x3a08,0x31c7,0x0000,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0020,0x0000,0x18c2,0x18c3,0x3a28,0x4aaa,0x39e7,0x52ca,0x73ad,0x634d,0x83eb,0xf669,0xfec9,0xdd88,0x630c,0x632c,0x632c,0x634c,0x632c,0x632c,0x636d,0x6b6d,0x6b4d,0x6b6d,0x634d,0x5b0b,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0c,0x632c,0x630c,0x3185,0x31c7,0x39c7,0x18e3,0x10a2,0x18c2,0x1081,0x10a2,0x1082,0x1082,0x0841,0x0000,0x18c3,0x10a2,0x2165,0x39e8,0x2945,0x2965,0x5aeb,0x6b4c,0x4acb,0xcd49,0xfe88,0xfe28,0xb449,0x4acb,0x630b,0x5b0c,0x632c,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0c,0x5acb,0x52ca,0x5aca,0x52ca,0x5aca, +0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x5aeb,0x4aeb,0x9b4b,0xeb6b,0xeb6b,0xe34a,0x82ca,0xdb6b,0xeb6a,0xab0a,0xd34b,0xeb6a,0xb2e9,0x5aea,0x4227,0x18e3,0x1904,0x1904,0x31c6,0x2944,0x10c2,0x1082,0x10a2,0x1082,0x1081,0x0840,0x0020,0x1081,0x18c3,0x10a2,0x2124,0x4248,0x5b0b,0x530b,0x52ca,0x52eb,0x52eb,0x4aaa,0x4aca,0x52ca,0x52eb,0x52ca,0x52ca,0x428a,0xbce8,0xede7,0xd528,0x5ae9,0x5ae9,0x3249,0xcd08,0xa448,0xc528,0xb488,0xb4c8,0xac88,0x322a,0x2984,0x10c3,0x18e3,0x1903,0x2103,0x1081,0x0020,0x0841,0x1081,0x1082,0x0861,0x0000,0x0840,0x18e3,0x1904,0x2104,0x2945,0x4aaa,0x530b,0x530b,0x52eb,0x530b,0x52ea,0x4aca,0x52ea,0x530b,0x530b,0x52ea,0x530b,0x5b2b,0x532b,0x530b,0x52ea,0x5b2b,0x5b4c,0x31c6,0x10a2,0x31e6,0x1082,0x1061,0x10c2,0x08a1,0x08a1,0x00a1,0x0080,0x0020,0x10c2,0x0881,0x0881,0x10a2,0x18e3,0x18e3,0x18c3,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2103,0x18e3,0x1903,0x1904,0x1903,0x18c3,0x18c2,0x18e3,0x10a2,0x1082,0x10c2,0x10c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10c2,0x10c3,0x18e3,0x18e3,0x1903,0x18c3,0x2985,0x31a6,0x10c2,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x2124,0x2144,0x2144,0x2144,0x2124,0x2144,0x2124,0x2144,0x2144,0x2144,0x2145,0x2165,0x2144,0x2124,0x2145,0x2124,0x2144,0x2965,0x2124,0x2124,0x31a6,0x2965,0x2985,0x39e7,0x39e7,0x31a6,0x31a6,0x31c6,0x39e7,0x3a07,0x4208,0x4228,0x4248,0x4248,0x4248,0x4269,0x4a89,0x4a89,0x52aa,0x52aa,0x52aa,0x5b2b,0x39e7,0x0983,0x1163,0x0000,0x0040,0x0881,0x0881,0x0861,0x0041,0x0040,0x0000,0x1904,0x4248,0x31a6,0x31a6,0x6bae,0x73ef,0x6bae,0x6b8d,0x6b8d,0x6b6d,0x73ae,0x6b8d,0x634c,0x6b8d,0x5b0b,0x5b0b,0x634c,0x634c,0x634c,0x634c,0x6bae,0x5b0b,0x18c2,0x3a08,0x3186,0x0841,0x0020,0x0020,0x0020,0x0861,0x0861,0x0020,0x0020,0x18e3,0x2945,0x2104,0x31e7,0x4269,0x31a6,0x4aaa,0x6b8d,0x6b6c,0x632c,0xe5e9,0xfea8,0xb48a,0x5b2c,0x6b4c,0x634d,0x632c,0x632d,0x6b4d,0x634d,0x634c,0x632c,0x6b6d,0x632c,0x632c,0x630c,0x5b0c,0x5b0b,0x5b0c,0x5aeb,0x630c,0x632c,0x3186,0x31c7,0x3a08,0x18c3,0x0861,0x0861,0x0861,0x0841,0x1082,0x0841,0x0000,0x1082,0x2965,0x18e3,0x2985,0x4229,0x2986,0x3186,0x5aeb,0x6b6d,0x5b0c,0x9c2a,0xfe48,0xf608,0x836a,0x52eb,0x630c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x52cb,0x52aa,0x52aa,0x52ca, +0x52ea,0x52eb,0x52eb,0x52ea,0x52ea,0x52ea,0x42ab,0xdbac,0xcb2a,0x52aa,0xe36a,0xd30a,0xdb6b,0xeb6a,0xa2c9,0xdb6b,0xf38b,0xab0a,0x5aca,0x3a06,0x2104,0x2144,0x2124,0x31c6,0x2985,0x18e3,0x1081,0x1081,0x10a2,0x10a2,0x1081,0x18e3,0x2944,0x1903,0x10a2,0x31a6,0x4228,0x530b,0x5b4c,0x52ea,0x52eb,0x52ea,0x4aca,0x52eb,0x4aca,0x52ea,0x52ca,0x52ca,0x3a6a,0xcd28,0xee07,0xdd87,0x8388,0xede7,0xb467,0xac88,0xe587,0xf5e7,0xedc7,0xe587,0x93c9,0x3a8a,0x39e6,0x2124,0x2104,0x2144,0x2965,0x2144,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x2124,0x31a5,0x2144,0x2986,0x31c7,0x4aaa,0x52ea,0x52eb,0x530b,0x52ea,0x52ea,0x52eb,0x530b,0x52eb,0x52eb,0x52ea,0x5b2c,0x5b2b,0x52ea,0x52ea,0x5b0b,0x5b4c,0x5b2b,0x3a07,0x10a2,0x31c6,0x10a2,0x0821,0x10a2,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0841,0x0041,0x0041,0x0041,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0882,0x0882,0x0861,0x0861,0x0882,0x0881,0x0882,0x1082,0x10a2,0x0881,0x0861,0x1061,0x0861,0x0861,0x0881,0x1081,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x0020,0x0861,0x0861,0x0840,0x1082,0x0840,0x2104,0x4248,0x2986,0x4249,0x6bae,0x73ce,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x636d,0x634c,0x636c,0x636c,0x632c,0x632c,0x5b2c,0x632c,0x632c,0x636d,0x73ce,0x632c,0x2124,0x3a28,0x3a08,0x2103,0x1082,0x0041,0x0841,0x0861,0x0841,0x1082,0x2944,0x3185,0x2965,0x2965,0x4a8a,0x4249,0x31a7,0x4aaa,0x6b8d,0x73ad,0x5b2e,0xb50a,0xf648,0x838b,0x636d,0x6b4d,0x6b6d,0x636c,0x632c,0x634c,0x634d,0x634d,0x634c,0x634d,0x634c,0x632c,0x5b0c,0x5b0b,0x634c,0x630c,0x630b,0x632c,0x632c,0x3186,0x31c7,0x3a29,0x2124,0x1061,0x0841,0x0821,0x0861,0x0861,0x0861,0x2124,0x31a5,0x3186,0x18e3,0x31c7,0x4249,0x2986,0x31c6,0x630b,0x6b8d,0x632c,0x632b,0xf649,0xe5a8,0x5acb,0x632c,0x5b0b,0x5b0c,0x5b0b,0x630c,0x5b0b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5aeb, +0x530b,0x52eb,0x52ca,0x4aca,0x52eb,0x52ea,0x4aeb,0xdb8c,0xd34a,0x62cb,0xe34a,0xd30a,0xdb6b,0xe36a,0x9aca,0xdb6b,0xe36a,0xa30a,0x5aca,0x4207,0x2124,0x2124,0x2124,0x2985,0x31c6,0x2965,0x3186,0x3186,0x31a6,0x3185,0x2965,0x2985,0x3a07,0x10c2,0x31c7,0x4a69,0x4228,0x5b0b,0x52ea,0x530b,0x530b,0x4aca,0x4aca,0x4aca,0x4aa9,0x4aca,0x52ca,0x52ca,0x3a8a,0xcd48,0xe5a7,0xe5a8,0xa428,0xede7,0xbcc8,0x7349,0xfe47,0xe587,0xf5c7,0xedc7,0x52ca,0x532a,0x39e7,0x2986,0x2104,0x2965,0x29a6,0x2965,0x2965,0x2144,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x3a07,0x1924,0x31c7,0x39e7,0x4aca,0x4aca,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x4aca,0x52ca,0x52eb,0x52eb,0x530b,0x5b2b,0x532b,0x530b,0x530b,0x530b,0x5b4c,0x4a89,0x10c2,0x31e6,0x2124,0x0000,0x0861,0x10a2,0x0040,0x0020,0x0020,0x0820,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0840,0x0840,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0881,0x0840,0x1082,0x0000,0x39e7,0x5aeb,0x2986,0x4aaa,0x73ce,0x6bad,0x6b6d,0x636d,0x6b8d,0x6b8d,0x634c,0x6b6d,0x634c,0x636d,0x636d,0x634d,0x634c,0x5b2b,0x634c,0x6b6d,0x73ae,0x6b8e,0x31a6,0x3a28,0x4249,0x2945,0x18e3,0x18c3,0x18c3,0x18e3,0x2945,0x39c7,0x4207,0x39e6,0x2944,0x3a28,0x52ec,0x426a,0x31c7,0x630b,0x6b8d,0x738d,0x6b6d,0x73ac,0x83cb,0x6b4c,0x6b8d,0x6b6d,0x632c,0x636d,0x6b6d,0x6b6d,0x636d,0x6b6d,0x6b4d,0x632c,0x6b6d,0x634d,0x5b0b,0x630b,0x632c,0x632c,0x630b,0x632c,0x6b6d,0x3a07,0x29a6,0x4a8a,0x31a7,0x1082,0x18e3,0x18e3,0x18c2,0x18a3,0x2965,0x31a6,0x39e6,0x39c6,0x2945,0x4229,0x31e8,0x2946,0x3a27,0x632c,0x6b6d,0x632c,0x5b0c,0x942a,0x93eb,0x634d,0x6b4c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0c,0x632c,0x5aeb,0x52cb,0x52cb,0x5b0b,0x52cb,0x5aeb, +0x52eb,0x52ea,0x52ea,0x52ea,0x52ca,0x52ca,0x4aeb,0x8aea,0xf38b,0xf38b,0xeb4a,0x82a9,0xdb6b,0x9ac9,0x02cb,0xdb6b,0xaaca,0x02aa,0x630b,0x4a69,0x2165,0x31a6,0x18e3,0x31a6,0x31a6,0x2965,0x3a07,0x3a07,0x4248,0x3a07,0x2985,0x3a27,0x39e7,0x0861,0x31a6,0x3a07,0x4aa9,0x5b2b,0x530b,0x52ea,0x4aea,0x4aca,0x4aca,0x4aca,0x4aa9,0x4aa9,0x4aaa,0x52ca,0x3a8a,0xc528,0xee07,0xd5a7,0x7349,0x530a,0x52c9,0x52e9,0xe5c8,0xa447,0xc528,0xd567,0x3269,0x5b0b,0x4a89,0x31c6,0x31a5,0x1903,0x39e7,0x31c6,0x2985,0x31e7,0x3a07,0x31c6,0x31c6,0x31c6,0x4248,0x31c6,0x1924,0x4228,0x39e7,0x52ca,0x4aa9,0x5b0b,0x5b2b,0x52ea,0x52ea,0x4aea,0x530b,0x52eb,0x4aca,0x52eb,0x52eb,0x530b,0x5b4c,0x5b2b,0x5b4c,0x5b2c,0x5b4c,0x5b0b,0x2985,0x39e7,0x4228,0x0000,0x18e3,0x18e3,0x0861,0x0000,0x0000,0x0000,0x0020,0x0040,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x10a2,0x10a2,0x0861,0x0020,0x0020,0x0000,0x0020,0x10a2,0x18c2,0x0861,0x0861,0x10a2,0x0000,0x52aa,0x4a69,0x3a08,0x4aaa,0x73ce,0x6bae,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x634c,0x636d,0x634c,0x636d,0x634c,0x636d,0x6b6d,0x634c,0x6bae,0x73cf,0x4228,0x3a28,0x4249,0x3186,0x2104,0x2104,0x18e3,0x2945,0x4228,0x3a08,0x4207,0x4207,0x2985,0x426a,0x428a,0x4a8a,0x4a89,0x6b4d,0x6b6d,0x6b8d,0x73ad,0x6b8d,0x6b6d,0x634c,0x6b6c,0x6b6d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x634c,0x6b6d,0x6b8e,0x6b6d,0x634c,0x634d,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x6b8d,0x5b0b,0x31c6,0x4a8a,0x426a,0x1082,0x18a2,0x2104,0x1062,0x3a07,0x31c8,0x2986,0x31a6,0x2944,0x3a08,0x3a28,0x31e7,0x3a08,0x52ca,0x6b6d,0x6b6d,0x6b4c,0x6b4c,0x4acc,0x5b0c,0x634c,0x634c,0x632c,0x632c,0x634d,0x5b0c,0x5b0b,0x5b0b,0x630c,0x5b0c,0x52cb,0x52eb,0x5aeb,0x5aeb,0x5aeb, +0x52ea,0x52eb,0x52ea,0x52ca,0x52ea,0x52ca,0x5aca,0x4aca,0x6acb,0x8aea,0x62aa,0x4aca,0x7aeb,0x6aea,0x5aeb,0x730b,0x72eb,0x5acb,0x5aeb,0x52ca,0x2965,0x3a28,0x31c6,0x1082,0x3186,0x39c7,0x39e6,0x39e7,0x3a07,0x31c6,0x31c6,0x4227,0x1903,0x18c3,0x3185,0x39e7,0x52ea,0x52eb,0x52eb,0x52ca,0x52ea,0x4aca,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aca,0x4aaa,0x4aca,0x6b4a,0x83c9,0x6b0a,0x52ca,0x4ac9,0x52aa,0x5b0a,0x7349,0x5ae9,0x6b2a,0x6b49,0x52ea,0x52ea,0x52ca,0x31a5,0x4aaa,0x29a7,0x31a6,0x4248,0x31c6,0x3a07,0x31e7,0x4248,0x3a27,0x3a07,0x4248,0x2124,0x31c6,0x52ca,0x4aa9,0x530b,0x4aaa,0x530b,0x530b,0x52eb,0x52eb,0x4aea,0x52eb,0x52ea,0x52ca,0x52eb,0x52eb,0x52eb,0x52ea,0x530b,0x5b4c,0x636d,0x5b4c,0x52eb,0x31e7,0x2144,0x5b2c,0x29a6,0x0000,0x2124,0x18e3,0x1081,0x0861,0x0000,0x0840,0x1081,0x0860,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x10c2,0x10c2,0x1081,0x18e3,0x0000,0x2985,0x5aeb,0x31a6,0x4269,0x634d,0x73ce,0x6bae,0x6bae,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636d,0x634c,0x636d,0x6b6d,0x6b6d,0x634c,0x5b4c,0x6bce,0x73ce,0x632c,0x31c7,0x3a08,0x4249,0x31a6,0x2104,0x10a2,0x31a6,0x4a69,0x3a08,0x31a6,0x31a6,0x3a07,0x52aa,0x5b2c,0x5b0b,0x6b4c,0x6b8e,0x6b8e,0x6b8d,0x6b8d,0x6b6d,0x6b6c,0x634c,0x636c,0x634d,0x6b6d,0x6b6d,0x6b4d,0x6b6d,0x634c,0x634d,0x6b6d,0x634d,0x634c,0x6b8d,0x6b8d,0x634c,0x636c,0x632c,0x632c,0x6b6d,0x6b6d,0x6b8d,0x4248,0x4a69,0x5b0c,0x52cb,0x10a2,0x0841,0x0000,0x5aca,0x94d2,0x4229,0x1905,0x4208,0x4a8a,0x4249,0x4229,0x4228,0x632c,0x6b6d,0x634c,0x632c,0x632b,0x634c,0x630c,0x6b4d,0x632c,0x630c,0x632c,0x630c,0x632c,0x632c,0x630c,0x5b0c,0x630c,0x5aec,0x5b0b,0x5aeb,0x5aeb,0x5aca, +0x5b0b,0x5b0b,0x52ea,0x4aca,0x52ca,0x52ea,0x530b,0x5aeb,0x52ea,0x42eb,0x52eb,0x52ca,0x52cb,0x5b0b,0x5aeb,0x52cb,0x52eb,0x5aeb,0x5b0b,0x5b0b,0x4a89,0x4228,0x530a,0x29a5,0x0841,0x31a6,0x3a07,0x39e7,0x39e7,0x31a6,0x2965,0x18e3,0x10a2,0x2144,0x39e7,0x4aca,0x52ea,0x52ea,0x52eb,0x52ca,0x52eb,0x52ca,0x52ca,0x4aaa,0x52aa,0x4aaa,0x4aaa,0x4aca,0x52aa,0x4aca,0x3a8a,0x4aab,0x52ca,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aca,0x52aa,0x4aaa,0x52ea,0x52ea,0x52ca,0x4228,0x3a07,0x52ca,0x29a5,0x1903,0x31e7,0x4248,0x4228,0x52ea,0x52ca,0x3a07,0x2124,0x2125,0x31c6,0x52c9,0x530a,0x5b2b,0x52ea,0x4aca,0x52ca,0x52ca,0x530b,0x52ea,0x530b,0x4aca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x5b4c,0x5b4c,0x5b4c,0x4248,0x1923,0x4289,0x6bce,0x2144,0x0000,0x10a2,0x2124,0x2965,0x1081,0x10a2,0x18c2,0x18c2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0840,0x0861,0x0861,0x0841,0x0841,0x0840,0x0840,0x0840,0x0020,0x0020,0x0041,0x0020,0x0841,0x0840,0x0841,0x0841,0x0840,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0840,0x0861,0x1082,0x0861,0x0861,0x1081,0x0861,0x1081,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2144,0x2124,0x18e3,0x18c2,0x18e3,0x1903,0x18e3,0x10a2,0x0000,0x18c3,0x6b8d,0x4248,0x4a8a,0x52ca,0x6bae,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x6bae,0x6b8d,0x636d,0x6bae,0x6b6d,0x6b6d,0x73ad,0x636c,0x6b8d,0x6bae,0x6b8d,0x52ca,0x2144,0x4249,0x4a8a,0x4249,0x2124,0x2985,0x5b0b,0x4a69,0x39e7,0x3a28,0x4269,0x73cf,0x632c,0x52ca,0x73ae,0x6b6d,0x6bae,0x6b6d,0x634c,0x634d,0x632c,0x632c,0x636d,0x634c,0x634d,0x634c,0x6b8d,0x6b6d,0x634c,0x636d,0x636d,0x634c,0x634c,0x636d,0x6b6d,0x6b4c,0x6b6d,0x73ae,0x6b6d,0x6b6d,0x73ce,0x6b8e,0x5aeb,0x4248,0x6b6d,0x6bae,0x5b0c,0x3a08,0x1083,0x2123,0xbe14,0x7c0f,0x4a6a,0x52ca,0x52cb,0x52ab,0x4249,0x528a,0x6b4d,0x634d,0x632c,0x634c,0x630b,0x632c,0x630c,0x632c,0x6b6d,0x630b,0x634c,0x634d,0x634d,0x634d,0x630c,0x5b0c,0x5aeb,0x5aec,0x5aeb,0x5aca,0x5aca,0x5aca, +0x52eb,0x530b,0x52ea,0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x52eb,0x52cb,0x4aa9,0x4aaa,0x52ca,0x52cb,0x4aca,0x52ca,0x52ca,0x52ea,0x52ea,0x530b,0x530b,0x4aa9,0x52c9,0x73cd,0x3a27,0x2145,0x2103,0x2965,0x2144,0x2103,0x18e3,0x18e3,0x2124,0x31e7,0x4289,0x52eb,0x52ca,0x52eb,0x52ea,0x530b,0x52eb,0x52ca,0x52ea,0x4aaa,0x4aca,0x4aca,0x4aa9,0x4aaa,0x4aca,0x4aa9,0x4aa9,0x4aca,0x4aa9,0x4a8a,0x4aa9,0x4aca,0x52ca,0x4aaa,0x4ac9,0x4aaa,0x4aaa,0x52ea,0x530b,0x52eb,0x4a89,0x5b2b,0x5aea,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x29a6,0x2124,0x2985,0x2985,0x4269,0x4aaa,0x52eb,0x5b2b,0x530b,0x530b,0x52eb,0x52eb,0x530b,0x530b,0x52eb,0x530b,0x52eb,0x52ca,0x52ea,0x52eb,0x52ea,0x52ea,0x5b0b,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x3a07,0x2104,0x4aa9,0x6bad,0x4a68,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x1082,0x0841,0x0020,0x0821,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x6b4c,0x4248,0x52aa,0x5aeb,0x634d,0x73ae,0x6bae,0x6bae,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x6b8d,0x6bae,0x73ae,0x6bad,0x636c,0x6b8d,0x73ae,0x634d,0x52aa,0x31c6,0x4269,0x52cb,0x52aa,0x4a89,0x52ca,0x4a89,0x4249,0x52cb,0x73cf,0x73ae,0x4a69,0x634c,0x73ae,0x6b6d,0x6b8d,0x73ce,0x634c,0x634c,0x6b4c,0x634d,0x634c,0x632c,0x636d,0x634c,0x6b6d,0x6b8d,0x634c,0x6b8d,0x636d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b8e,0x634c,0x632b,0x73cf,0x73ef,0x6b8e,0x6b4d,0x5aec,0x5b0b,0x632d,0x632d,0x632c,0x52cb,0x4249,0x4a69,0x6b8d,0x738e,0x634d,0x632c,0x6b4d,0x634c,0x632b,0x632c,0x632c,0x6b4c,0x6b4c,0x632c,0x634c,0x634d,0x634c,0x634d,0x630c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5aca,0x52ca, +0x52ca,0x52eb,0x52eb,0x52eb,0x5aeb,0x52eb,0x52eb,0x52ca,0x530b,0x52ea,0x4aaa,0x4aca,0x52ca,0x52ca,0x4ac9,0x4aaa,0x52ea,0x52ea,0x52ca,0x52eb,0x52eb,0x5b2b,0x52ca,0x4248,0x4228,0x4269,0x4a69,0x39e7,0x2985,0x2965,0x2965,0x2965,0x3a28,0x4aca,0x52ea,0x530b,0x52eb,0x530b,0x530b,0x5b2b,0x52eb,0x4aca,0x52ea,0x52ca,0x4aca,0x4aca,0x52ea,0x52ea,0x52ca,0x4aa9,0x4aaa,0x52ca,0x4aca,0x4aca,0x4aaa,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ea,0x530b,0x52eb,0x5b0b,0x4aa9,0x4248,0x4269,0x2986,0x2965,0x2145,0x1904,0x18e3,0x2124,0x52ea,0x4ac9,0x52eb,0x5b0b,0x52ea,0x52eb,0x5b0b,0x5b2b,0x52eb,0x530b,0x530b,0x52ea,0x52ea,0x52ea,0x52ea,0x4aca,0x52eb,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x5b2c,0x5b2b,0x638d,0x52eb,0x3a07,0x18c2,0x3185,0x52aa,0x4a89,0x3a07,0x39e7,0x31a6,0x31c6,0x3a07,0x3a07,0x3a07,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x31c6,0x2986,0x2986,0x2965,0x2145,0x2144,0x2124,0x2145,0x2945,0x2965,0x2966,0x31a6,0x2965,0x2145,0x2124,0x2965,0x4248,0x2144,0x2145,0x2945,0x2124,0x2945,0x2145,0x2985,0x2986,0x2965,0x2985,0x2966,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x31c6,0x31c6,0x31c6,0x39e7,0x3a07,0x31c7,0x31e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39c7,0x39e7,0x4228,0x4248,0x4228,0x4a69,0x4249,0x4a69,0x4228,0x4248,0x4228,0x4208,0x4a69,0x4a8a,0x3a07,0x4249,0x4249,0x4a49,0x4a49,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x4a8a,0x4a89,0x5289,0x52aa,0x52ca,0x6b4c,0x6b4c,0x3a07,0x4a69,0x5b0b,0x5b0b,0x73ef,0x6bae,0x6b8d,0x636d,0x6bae,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x636d,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x5b0b,0x4a68,0x4a89,0x5b0c,0x634c,0x6b6d,0x6b8d,0x8450,0x8430,0x632c,0x52aa,0x5b2c,0x73cf,0x6bae,0x6bae,0x73ae,0x6b8d,0x6bae,0x6b6d,0x6b8d,0x6b8d,0x634c,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8e,0x636d,0x6b6d,0x6b6d,0x73ae,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x634c,0x636c,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x636d,0x6b8e,0x73ce,0x5aeb,0x73ae,0x840f,0x7bef,0x73ce,0x73af,0x73ce,0x6b8e,0x52ab,0x4249,0x52cb,0x6b8d,0x6b8d,0x6b6d,0x636d,0x634c,0x634d,0x632c,0x632c,0x630c,0x630c,0x6b6d,0x634c,0x634d,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x634c,0x5aec,0x5aeb,0x5aeb,0x5acb, +0x636c,0x5b0b,0x530b,0x530b,0x52eb,0x52eb,0x5b0b,0x52eb,0x52ca,0x52eb,0x52eb,0x52ca,0x52eb,0x530b,0x52ea,0x52ea,0x52ea,0x530b,0x5b2b,0x530b,0x5b0b,0x5b0b,0x636c,0x5b2b,0x4a89,0x4228,0x4228,0x39e7,0x4248,0x3a28,0x39e7,0x4a89,0x530b,0x5b2b,0x52ca,0x52eb,0x530b,0x530b,0x530b,0x5b0b,0x530b,0x530b,0x530b,0x530b,0x530b,0x52eb,0x52eb,0x52ea,0x52ea,0x4aca,0x4aca,0x4aaa,0x4aca,0x4aaa,0x52ca,0x52ca,0x4aca,0x52ca,0x52ca,0x52eb,0x4aaa,0x52eb,0x530b,0x52ea,0x52eb,0x5b2c,0x530b,0x52ca,0x4248,0x2965,0x39e7,0x2985,0x31c6,0x3a28,0x4aca,0x5b2c,0x5b4c,0x5b0b,0x5b2b,0x530b,0x530b,0x52ea,0x5b2b,0x530b,0x530b,0x530b,0x52eb,0x530b,0x52eb,0x52eb,0x5b2c,0x530b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x532b,0x530b,0x5b4c,0x638d,0x5b2b,0x3a28,0x0881,0x0020,0x1903,0x2986,0x39e7,0x31a6,0x31a6,0x31e6,0x31c6,0x31e7,0x2144,0x2985,0x29a6,0x2985,0x2985,0x3186,0x2965,0x31a6,0x2965,0x2165,0x2965,0x2945,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2945,0x2124,0x2104,0x2124,0x2124,0x31c6,0x2124,0x2144,0x2104,0x18c3,0x18e3,0x18c3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x18e3,0x2124,0x2124,0x1903,0x2124,0x2104,0x1904,0x2104,0x1903,0x1903,0x2124,0x2124,0x2144,0x2104,0x2103,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x3186,0x31a6,0x31c6,0x39e7,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4248,0x4a69,0x3a07,0x4249,0x4249,0x4a49,0x4a48,0x4248,0x4268,0x4a89,0x4a8a,0x4aaa,0x52aa,0x52ca,0x52ca,0x5aeb,0x5aea,0x5aeb,0x52ca,0x52ca,0x5aeb,0x630b,0x5aeb,0x4228,0x31c6,0x4a89,0x52aa,0x632c,0x7c2f,0x73ee,0x6bae,0x6b8d,0x6b8e,0x6bae,0x73ae,0x6b8d,0x6bae,0x6b8d,0x636d,0x6bae,0x6bad,0x6bad,0x6b8e,0x6bae,0x6bad,0x73ae,0x6b8d,0x6b6d,0x6bae,0x6b8d,0x6bad,0x6bae,0x6bae,0x6b6d,0x5b0b,0x5aeb,0x5b0b,0x6b6c,0x738d,0x634c,0x4aaa,0x52eb,0x6bae,0x73ef,0x6bae,0x6b8d,0x6bae,0x73ae,0x6b8d,0x6bae,0x6b8d,0x636d,0x634d,0x6b6d,0x738d,0x6b8d,0x6b6d,0x6b6d,0x6bae,0x634c,0x738e,0x73ae,0x6b8d,0x6b8d,0x6bad,0x6b6d,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b6c,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x634c,0x5b2c,0x73ce,0x73ad,0x73ae,0x73ae,0x5b2c,0x4249,0x4aaa,0x632c,0x73ae,0x73ae,0x636c,0x6b6c,0x6b6d,0x6b8d,0x6b6d,0x6b4d,0x634c,0x632c,0x636c,0x634c,0x634d,0x634d,0x632c,0x632c,0x632d,0x632c,0x632c,0x5b0c,0x632c,0x630c,0x52cb,0x5b0c,0x5aeb, +0x5b2b,0x52eb,0x52eb,0x5b2b,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x52eb,0x530b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b2c,0x5b4c,0x5b4c,0x5b0b,0x5b2b,0x636c,0x5b4c,0x5b4c,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x5b4b,0x5b6c,0x5b4c,0x530b,0x530b,0x52ea,0x530b,0x530b,0x5b4c,0x530b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x52eb,0x530b,0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x52ea,0x52ea,0x52eb,0x52ea,0x52ea,0x52ca,0x530b,0x52eb,0x530b,0x52ea,0x52ca,0x52eb,0x530b,0x530b,0x5b4c,0x5b4c,0x5b4c,0x5b4c,0x52eb,0x52eb,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b0b,0x5b2c,0x532b,0x5b2c,0x5b0b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x5b2b,0x532b,0x530b,0x52eb,0x530b,0x52eb,0x52eb,0x5b4c,0x530b,0x530b,0x5b4c,0x5b6c,0x5b4c,0x5b4c,0x4aaa,0x4248,0x2104,0x0841,0x1061,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0841,0x10a2,0x0000,0x0000,0x0000,0x0020,0x0000,0x1081,0x2144,0x2144,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x0000,0x0020,0x1904,0x2124,0x2944,0x2103,0x18c3,0x2124,0x2124,0x2144,0x2965,0x2124,0x1903,0x2124,0x0861,0x2965,0x2965,0x2104,0x2145,0x2104,0x2124,0x2124,0x2103,0x0861,0x0000,0x10a2,0x2104,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x08a2,0x2165,0x4228,0x4aaa,0x52eb,0x6bae,0x7bef,0x73ef,0x73ee,0x73ce,0x73ce,0x73ef,0x73ce,0x6b6d,0x6bae,0x73ce,0x73ae,0x73ce,0x73ce,0x73ad,0x73ce,0x73ce,0x6b8d,0x6bae,0x73ce,0x73ae,0x634c,0x636d,0x73ae,0x73ce,0x6b8e,0x6bae,0x6b8d,0x6b6d,0x6b6d,0x632c,0x5b0b,0x5aeb,0x632c,0x6b8e,0x73cf,0x73ce,0x73ce,0x6bad,0x6bad,0x6bae,0x6b8e,0x73ae,0x6b8d,0x6b6d,0x634d,0x634d,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x6b8e,0x6b8e,0x6b8d,0x6b8d,0x6bae,0x6b8e,0x73ae,0x6b8d,0x73ae,0x6b8d,0x73ae,0x6b8d,0x6b8e,0x6b8e,0x6b8d,0x738d,0x6b8d,0x6b8d,0x6b8d,0x738e,0x6b8e,0x6b6d,0x634d,0x632c,0x634c,0x5b0b,0x634d,0x6b8e,0x73ae,0x6b6d,0x634c,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x634d,0x6b6d,0x634d,0x632c,0x6b6d,0x632c,0x634d,0x634d,0x6b6d,0x632c,0x632c,0x634c,0x634d,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c, +0x5b2c,0x530b,0x5b0b,0x5b4c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x530b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b0b,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x530b,0x5b2c,0x5b4c,0x5b4c,0x5b2c,0x5b4c,0x636c,0x5b4c,0x5b2c,0x530b,0x52eb,0x5b2c,0x5b2b,0x5b2b,0x5b2c,0x5b4c,0x5b2b,0x530b,0x532b,0x530b,0x5b2c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x5b2c,0x52eb,0x530b,0x530b,0x530b,0x5b2b,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x530b,0x5b0b,0x52eb,0x530b,0x530b,0x5b2c,0x532b,0x636c,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x532b,0x5b2b,0x530b,0x532b,0x530b,0x52eb,0x530b,0x5b2b,0x532b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x52ea,0x52ea,0x530b,0x530b,0x52ea,0x530b,0x530b,0x530b,0x5b6d,0x636d,0x636c,0x5b6c,0x5b4c,0x5b2c,0x52eb,0x4aeb,0x5b2c,0x532c,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x5b2c,0x530b,0x5b0b,0x52eb,0x5b2c,0x530b,0x530b,0x5b2c,0x5b2c,0x5b2c,0x532b,0x5b2c,0x5b4c,0x636c,0x530b,0x5b2c,0x638d,0x52eb,0x52eb,0x5b4c,0x636c,0x634c,0x636d,0x6bae,0x6bce,0x6bae,0x6bae,0x636d,0x63ad,0x638d,0x638d,0x6bae,0x636c,0x530b,0x5b2c,0x6bad,0x6b8d,0x6bae,0x636c,0x636d,0x638d,0x638d,0x63ad,0x6bce,0x6bce,0x63ae,0x6bce,0x636d,0x638d,0x6bce,0x5b6d,0x6bae,0x6bad,0x6b8d,0x6bae,0x6b8d,0x634c,0x5b4c,0x634d,0x6bae,0x5b2c,0x636d,0x634d,0x636d,0x634d,0x5b4d,0x634d,0x634d,0x634d,0x634c,0x636d,0x636d,0x634d,0x5b4c,0x5b4c,0x634c,0x636d,0x5b4c,0x5b0c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x530b,0x5b2c,0x5b0c,0x5b2c,0x5b2c,0x634c,0x634c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x634d,0x634d,0x6bae,0x740f,0x73ef,0x73cf,0x73ce,0x6b8d,0x738d,0x73ce,0x6bae,0x6b8d,0x6b8d,0x6bae,0x73ce,0x73ae,0x73ce,0x73ce,0x73ce,0x73ce,0x6bae,0x6b8d,0x73ce,0x6b8e,0x73ae,0x6b6d,0x6b6d,0x636c,0x6bae,0x6b8d,0x73ce,0x6bae,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x73ce,0x73ce,0x6b8e,0x6b8d,0x738e,0x6bae,0x6b8d,0x6b8e,0x73ae,0x738e,0x73ce,0x6b6d,0x6b6d,0x634c,0x6b6d,0x6b8e,0x6bad,0x6b8d,0x6b6d,0x6b8e,0x73ae,0x6b8d,0x6bae,0x6b8d,0x73ae,0x6b6d,0x6b8d,0x73ae,0x6b8e,0x6bae,0x6b8d,0x73ae,0x73ae,0x6b6d,0x738e,0x6b8d,0x73ae,0x6b8e,0x738e,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b4d,0x6b8d,0x6b6d,0x634d,0x6b6d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634d,0x634d,0x6b6d,0x634d,0x632c,0x5b0c, +0x5b2b,0x5b0b,0x5b2c,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x5b2b,0x530b,0x52eb,0x530b,0x530b,0x530b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b4c,0x5b4c,0x5b2b,0x530b,0x52ea,0x5b0b,0x530b,0x5b2c,0x5b2c,0x5b4c,0x5b4c,0x530b,0x532b,0x5b4c,0x5b2c,0x530b,0x5b2b,0x5b2c,0x5b4c,0x5b2b,0x530b,0x532c,0x530b,0x530b,0x530b,0x5b4c,0x530b,0x532b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x530b,0x530b,0x530b,0x530b,0x530b,0x5b2b,0x52eb,0x530b,0x530b,0x52ea,0x530b,0x52ea,0x4aca,0x5b0b,0x530b,0x5b2b,0x5b2b,0x5b2b,0x530b,0x5b2c,0x530b,0x5b2b,0x5b4c,0x530b,0x530b,0x532b,0x52eb,0x52ea,0x530b,0x52eb,0x52eb,0x530b,0x530b,0x530b,0x530b,0x5b2b,0x530b,0x530b,0x5b2b,0x5b0b,0x530b,0x52ea,0x530b,0x530b,0x52eb,0x530b,0x530b,0x530b,0x52eb,0x532b,0x5b2b,0x5b6c,0x5b6c,0x638d,0x63ad,0x638d,0x63ce,0x6bce,0x63ad,0x63ad,0x63ad,0x63ad,0x63ad,0x6bee,0x6bce,0x6bce,0x6bee,0x6bcd,0x6bae,0x63ae,0x6bce,0x63ad,0x6bce,0x6bae,0x6bce,0x6bce,0x63ce,0x6bee,0x6bee,0x63ae,0x6bce,0x6bce,0x6bce,0x63ad,0x63ad,0x6bce,0x638d,0x6bad,0x6bad,0x63ad,0x6bce,0x63ad,0x636d,0x638d,0x638d,0x63ae,0x638d,0x638d,0x638d,0x6bad,0x6bce,0x6bae,0x638d,0x6bad,0x6bad,0x63ad,0x6bce,0x63ae,0x63ae,0x6bce,0x6bae,0x6bae,0x6bce,0x638d,0x6bae,0x6bce,0x6bef,0x740f,0x6bce,0x6bce,0x73ee,0x73ee,0x73ef,0x73ef,0x6bce,0x73ef,0x7410,0x6bce,0x73cf,0x7410,0x740f,0x73ef,0x7c10,0x7c30,0x740f,0x73ef,0x7c50,0x7c30,0x7410,0x740f,0x7c10,0x7c30,0x740f,0x73ef,0x7c30,0x7c30,0x7410,0x740f,0x73ef,0x7c0f,0x7c0f,0x7c30,0x7c30,0x7c0f,0x73cf,0x7c0f,0x7c0f,0x73ce,0x73ce,0x7bef,0x73ef,0x73ef,0x73ce,0x73ef,0x73ce,0x6b8d,0x73ae,0x73ae,0x636d,0x636d,0x6bae,0x6b8e,0x636d,0x636d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x6bae,0x6b8d,0x6bae,0x6bad,0x6bae,0x6b6d,0x636d,0x6b8d,0x634c,0x6b6d,0x6b8d,0x6bad,0x6bae,0x73ae,0x634d,0x634d,0x6bae,0x6b8e,0x6b6d,0x636d,0x6bae,0x6b4d,0x6b8e,0x636d,0x634d,0x634c,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x632c,0x6b6d,0x6b6d,0x6b6d,0x636d,0x6b8e,0x638d,0x6b8d,0x6b6d,0x6b8d,0x634c,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b6d,0x6b6d,0x73ae,0x6b8d,0x6b6d,0x634d,0x636d,0x634c,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x634c,0x634d,0x6b6d,0x6b6d,0x634d,0x632c,0x6b4d,0x6b6d,0x632c,0x6b6d,0x632c,0x632c,0x630c,0x634d,0x5b0c,0x632c,0x634c,0x634d,0x634d,0x6b8d,0x6b6d,0x634d,0x632c,0x634d,0x634d,0x632c,0x5b2c,0x5b0b,0x630c,0x5b0b,0x632c, +0x4a89,0x4aa9,0x4aca,0x4aa9,0x52aa,0x4aaa,0x52ca,0x52ca,0x52ea,0x52ea,0x4a89,0x4a89,0x4aca,0x4aaa,0x52ca,0x52ca,0x4a89,0x4aa9,0x4aa9,0x4a89,0x4aaa,0x4aca,0x4aca,0x4a89,0x52ca,0x4aaa,0x52aa,0x5b0b,0x5b0b,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4aca,0x4aca,0x4aca,0x4aa9,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4248,0x4289,0x4289,0x4289,0x4289,0x4268,0x4269,0x4269,0x4a89,0x4248,0x4269,0x4249,0x4269,0x4268,0x4269,0x4248,0x4248,0x4248,0x4269,0x4a89,0x4a89,0x4a89,0x4289,0x4289,0x4aca,0x52ca,0x4a89,0x4a89,0x4aaa,0x4aa9,0x4aa9,0x4a89,0x4a89,0x4a89,0x4a89,0x4aa9,0x4aa9,0x4aa9,0x4aaa,0x4aa9,0x4aa9,0x4aa9,0x4269,0x4269,0x4a89,0x4aaa,0x4aa9,0x4aa9,0x4aa9,0x4a89,0x4269,0x4289,0x4269,0x4268,0x4269,0x4269,0x4268,0x4a69,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4aca,0x52ea,0x4aaa,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x4aca,0x52ea,0x4aea,0x4aca,0x530b,0x52eb,0x52eb,0x52ea,0x52ca,0x4aaa,0x4aaa,0x5b0b,0x52ea,0x4aca,0x52ea,0x5b0b,0x52ea,0x52ea,0x52ea,0x52eb,0x4aca,0x52ea,0x530b,0x5b0b,0x4aca,0x52ea,0x52ea,0x52eb,0x52eb,0x52ea,0x52ea,0x52ca,0x52eb,0x52eb,0x52ca,0x52eb,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2c,0x5b2c,0x5b2c,0x52eb,0x52eb,0x5b2b,0x5b0b,0x52ea,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x636c,0x5b2b,0x5b4c,0x5b4c,0x5b2c,0x5b2c,0x634c,0x634c,0x636d,0x636c,0x636c,0x634c,0x636d,0x634d,0x636d,0x636d,0x634c,0x6bad,0x638d,0x6b8e,0x6bae,0x6bad,0x6bae,0x6bce,0x6bae,0x638d,0x6bae,0x6b8e,0x636d,0x6bad,0x73ce,0x6b8e,0x6b8e,0x73ae,0x6bae,0x6b8d,0x636d,0x6b8e,0x6b8d,0x636d,0x636d,0x6b8d,0x6b4d,0x634c,0x636d,0x636d,0x634c,0x634c,0x636d,0x634c,0x6b6d,0x738e,0x634c,0x6b6d,0x636d,0x6b6d,0x6b6d,0x636d,0x6b6d,0x6b8e,0x636d,0x634d,0x6b8d,0x6b8d,0x6b6d,0x6b6c,0x6b6d,0x6b8d,0x6b8e,0x73ae,0x6bad,0x6b6d,0x6b8d,0x6bad,0x634d,0x6b6d,0x6b6d,0x6b8e,0x636d,0x6b6d,0x634c,0x6b6d,0x634c,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x632c,0x6b6d,0x634c,0x634c,0x6b8d,0x634c,0x634d,0x634d,0x6b6c,0x634c,0x6b8d,0x6b6d,0x634c,0x634d,0x634d,0x632c,0x632c,0x6b6d,0x6b4c,0x632c,0x634c,0x634d,0x634c,0x634c,0x634c,0x634c,0x634c,0x634c,0x634c,0x634d,0x632d,0x634c,0x6b6d,0x634c,0x634c,0x6b6d,0x632c,0x634c,0x6b4c,0x6b6d,0x634c,0x634d,0x632c,0x632c,0x632c,0x632c,0x634d,0x634c,0x634c,0x5b0c,0x630c,0x634c,0x630c,0x630c,0x632c,0x632c,0x634d,0x632c, +0x2923,0x2123,0x2923,0x2963,0x2943,0x2943,0x31a5,0x3184,0x2964,0x2944,0x2923,0x2923,0x2123,0x2923,0x2123,0x2102,0x2102,0x2103,0x2102,0x2102,0x2944,0x2943,0x3164,0x2943,0x3185,0x3164,0x39c6,0x4206,0x39e6,0x3184,0x31a5,0x31a5,0x31a5,0x3164,0x2943,0x2964,0x2102,0x2102,0x2923,0x39c5,0x31a4,0x3184,0x2923,0x2102,0x2101,0x20e1,0x20e2,0x2102,0x2102,0x2102,0x2943,0x2923,0x20e1,0x20e2,0x2943,0x39c6,0x2102,0x20e2,0x20e2,0x2102,0x20e1,0x3164,0x3184,0x3184,0x2964,0x2943,0x39c5,0x39e6,0x2964,0x2923,0x3184,0x2923,0x2943,0x2944,0x2943,0x2122,0x2923,0x3164,0x3164,0x2943,0x2923,0x2923,0x2923,0x2923,0x2923,0x2923,0x2923,0x3164,0x3164,0x2923,0x2923,0x2122,0x2103,0x2103,0x2103,0x2102,0x2102,0x2102,0x2923,0x2944,0x2943,0x2923,0x2923,0x2943,0x2923,0x2923,0x2102,0x2943,0x31a5,0x2943,0x2943,0x2964,0x2964,0x2943,0x2943,0x2963,0x2963,0x2964,0x2922,0x2923,0x2943,0x31a5,0x2943,0x2943,0x2943,0x2964,0x2943,0x2943,0x2943,0x2923,0x2943,0x2923,0x2923,0x2102,0x2923,0x2943,0x2943,0x3164,0x3164,0x2963,0x2963,0x3164,0x2923,0x3164,0x3164,0x2964,0x2964,0x2963,0x3184,0x31a5,0x2964,0x2943,0x2964,0x2943,0x2943,0x2943,0x2944,0x2944,0x2123,0x2923,0x2923,0x2943,0x2923,0x2923,0x2943,0x3184,0x2964,0x2964,0x2943,0x2102,0x3164,0x2964,0x2944,0x2964,0x2943,0x2923,0x2943,0x2943,0x2944,0x2944,0x2964,0x3185,0x2124,0x2965,0x2964,0x3185,0x2964,0x3185,0x2943,0x2943,0x2943,0x3184,0x3185,0x3164,0x31a5,0x39c6,0x39c6,0x31a5,0x39e6,0x39c6,0x31a5,0x31a5,0x31a5,0x31a5,0x31a5,0x39e6,0x31e6,0x29a5,0x39c6,0x39e6,0x39c6,0x31c6,0x39e6,0x39e6,0x39a5,0x39a5,0x39e6,0x39e7,0x39c6,0x39c6,0x39c6,0x39c6,0x39e6,0x3a06,0x39c6,0x39c6,0x39e7,0x39e6,0x41e6,0x4207,0x39e7,0x39e7,0x4227,0x39e7,0x39c6,0x39e6,0x4207,0x39e7,0x4207,0x39e6,0x39e6,0x39c6,0x39e6,0x39e6,0x4227,0x39e7,0x39c6,0x4207,0x39e7,0x39e6,0x39e6,0x3a06,0x39e6,0x4207,0x39e6,0x39a6,0x39c6,0x39c6,0x39c6,0x39e6,0x39e6,0x39c6,0x39c6,0x39e6,0x39c6,0x39c6,0x39a6,0x39a6,0x39a6,0x39c5,0x4207,0x39c6,0x39c6,0x39c6,0x39e6,0x39e6,0x39c6,0x39a6,0x39e6,0x3a07,0x39a5,0x39c6,0x39e6,0x39c6,0x39a5,0x39c6,0x39c6,0x39c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4207,0x39e7,0x4207,0x3a07,0x39c6,0x31c6,0x39c6,0x4228,0x39c6,0x39c6,0x41e7,0x4207,0x3186,0x39c7,0x4207,0x31c6,0x3185,0x39e7,0x4227,0x4207,0x31a6,0x31a6,0x39e7,0x39c6,0x39e7,0x39c6, +0x0001,0x0001,0x0004,0x0003,0x0001,0x0002,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0003,0x0004,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0001,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,0x0001,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0001,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0001,0x0001,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0002,0x0001,0x0001,0x0000,0x0001,0x0001,0x0002,0x0002,0x0003,0x0003,0x0001,0x0001,0x0002,0x0002,0x0003,0x0003,0x0002,0x0002,0x0003,0x0001,0x0003,0x0002,0x0002,0x0002,0x0002,0x0003,0x0021,0x0003,0x0003,0x0002,0x0001,0x0001,0x0001,0x0001,0x0001,0x0002,0x0003,0x0001,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0004,0x0004,0x0003,0x0004,0x0004,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0043,0x0063,0x0063,0x0043,0x0083,0x0062,0x0062,0x10c3,0x0083,0x08a3,0x08a3,0x10c2,0x10e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e2,0x18e3,0x1903,0x18e2,0x18e2,0x18e2,0x18c1,0x18e2, +0xac85,0xac84,0xa4a4,0x9c84,0x9c84,0x9c64,0x9c23,0x9c24,0x9c44,0x9404,0x9404,0x9c04,0x9404,0x93e4,0x93e3,0x93c3,0x8bc3,0x8bc3,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8be4,0x8bc4,0x8bc4,0x93e4,0x93e4,0x9404,0x9424,0x9424,0x9424,0x9424,0x9424,0x9424,0x9444,0x9c64,0x9c64,0xa484,0xa484,0xa484,0x9c64,0xa4a5,0xa484,0x9c43,0x9c43,0xa463,0xac83,0xac83,0xac83,0xac83,0xaca2,0xb4c3,0xb4c3,0xb4c3,0xb4c3,0xb4a3,0xb4a3,0xb482,0xb4a3,0xb4c3,0xb4a2,0xb4a2,0xb4c2,0xb4c2,0xb4a2,0xb4a2,0xb4c2,0xb4c2,0xb4a2,0xb4a2,0xb4c2,0xb4a2,0xb482,0xb462,0xac62,0xb462,0xb462,0xb462,0xb442,0xb442,0xb442,0xb442,0xac42,0xac22,0xac22,0xac22,0xac42,0xac42,0xac42,0xac43,0xac43,0xac23,0xac23,0xac22,0xac22,0xa402,0xa402,0xa3e2,0xa402,0xa402,0xa422,0xa402,0xa403,0xa423,0xa423,0xa423,0xa423,0xa423,0xa443,0xa443,0xa443,0xa443,0xa443,0xac63,0xac63,0xac83,0xac63,0xac64,0xac43,0xac43,0xac23,0xac64,0xac84,0xa443,0xac83,0xac83,0xaca3,0xb4a3,0xb463,0xb464,0xb483,0xb4a3,0xb483,0xb4a3,0xbcc3,0xbce4,0xb4c4,0xb4c3,0xb4c3,0xb4c3,0xb4c3,0xb4c3,0xb4a3,0xb483,0xb4c3,0xb4a3,0xaca4,0x9c63,0x8c03,0x9423,0x9c64,0x9c63,0x9c43,0xa463,0xac84,0xac63,0xa464,0xb483,0xaca4,0x9c24,0x8be4,0x8c05,0x8c25,0x9445,0x9c44,0xa464,0xa484,0xaca4,0xacc5,0xb4c5,0xacc5,0xb485,0xb445,0xac25,0xa425,0xa425,0x9be6,0x9be6,0x9be5,0x93c4,0x93a5,0x8b85,0x7b45,0x9be6,0x9c06,0xa406,0xa406,0x9c06,0xa426,0x9bc6,0x9ba5,0x8b25,0x9365,0x9be5,0xa466,0xa467,0xa487,0x9c67,0x9c66,0x9426,0x8ba4,0x8bc5,0x9426,0x83a6,0x5a45,0x5245,0x7304,0x8c06,0x8be5,0x8bc4,0x7b44,0x8384,0x8be4,0x8be5,0x8be6,0x8c07,0x8be6,0x8b64,0x8344,0x8ba4,0x8ba3,0x7b65,0x5ae5,0x7325,0x7b44,0x7b64,0x83a4,0x5aa4,0x62c4,0x62a4,0x4204,0x62a4,0x8383,0x8383,0x8383,0x7b63,0x7b62,0x8361,0x8360,0x8ba2,0x8b80,0x8360,0x8342,0x72c2,0x72a2,0x8320,0x72c1,0x7b22,0x8b61,0x8b61,0x8b80,0x8b80,0x8360,0x8340,0x8320,0x8320,0x8320,0x7b00,0x8300,0x8300,0x8300,0x82e0,0x82e0,0x8300,0x8300,0x7ac0,0x7ac0,0x8300,0x8300,0x7ac0,0x7aa0,0x7260,0x7aa0,0x7260,0x6a80,0x6a60,0x6a80,0x6a60,0x72a0,0x7280,0x7280,0x7280,0x7240,0x7240,0x6200,0x51c0,0x4980,0x49e0,0x51e0,0x5200,0x51e0,0x49a0,0x4140,0x3900,0x30c0,0x3940,0x4120,0x3920,0x2880,0x2000,0x2840,0x28a0,0x28e0,0x1840,0x1000,0x0800,0x0000,0x0801,0x1001,0x0001,0x0001,0x0001,0x0001,0x0002,0x0002,0x0002,0x0003, +0xe669,0xde47,0xde68,0xde47,0xde47,0xde47,0xde26,0xde47,0xde47,0xde27,0xde27,0xde06,0xddc6,0xddc6,0xdde7,0xddc7,0xddc6,0xddc6,0xd5a6,0xd587,0xcd67,0xcd66,0xd587,0xd5a7,0xcd67,0xc547,0xcd67,0xd586,0xd586,0xd5a6,0xd5a6,0xd5c6,0xcda6,0xd5c6,0xcda6,0xcda6,0xd5c5,0xd5c4,0xdde5,0xd606,0xd606,0xd606,0xde05,0xd605,0xd605,0xd605,0xd5e4,0xd604,0xde04,0xde04,0xdde4,0xdde4,0xe625,0xde04,0xe624,0xde04,0xdde4,0xdde4,0xe623,0xe5e3,0xe5e3,0xe603,0xe623,0xee23,0xe623,0xe623,0xe603,0xdde2,0xe603,0xdde3,0xdde3,0xe602,0xee22,0xee82,0xe662,0xe622,0xee02,0xee03,0xdda2,0xdda3,0xe5c2,0xee02,0xede2,0xede2,0xee02,0xe5c2,0xe5e2,0xede2,0xee03,0xee03,0xee23,0xee44,0xf643,0xee23,0xee24,0xee43,0xee23,0xee23,0xee43,0xee23,0xee23,0xee23,0xee43,0xee23,0xee44,0xee44,0xe624,0xee24,0xf684,0xf684,0xee84,0xee85,0xee44,0xee65,0xee64,0xf664,0xf685,0xee64,0xee64,0xee65,0xee65,0xe625,0xee24,0xee45,0xd5e6,0xd5e6,0xe665,0xee65,0xee84,0xee65,0xee65,0xee25,0xee45,0xee45,0xe645,0xe645,0xe624,0xe645,0xe665,0xe645,0xde24,0xe625,0xe665,0xe664,0xe664,0xe624,0xee65,0xee85,0xee85,0xee65,0xe645,0xe625,0xde25,0xe625,0xe645,0xee65,0xee65,0xee65,0xee64,0xee65,0xee85,0xe665,0xe646,0xee66,0xee86,0xf6a7,0xf6a6,0xee86,0xee67,0xee87,0xee87,0xe687,0xe687,0xee87,0xee26,0xe5e7,0xddc7,0xddc7,0xdda7,0xd567,0xd588,0xd588,0xcd47,0xcd47,0xcd68,0xcd48,0xd588,0xd589,0xd569,0xcd49,0xc509,0xbd09,0xc509,0xcd29,0xd569,0xe608,0xee49,0xf6ea,0xf70a,0xf70b,0xf72b,0xf72b,0xeeeb,0xeeaa,0xf70b,0xf72b,0xf6ca,0xe66a,0xe64a,0xeeab,0xff2c,0xf70c,0xf6eb,0xeeab,0xf6ec,0xf70c,0xf72c,0xff4d,0xf74d,0xf70c,0xf6cb,0xe64b,0xf6cc,0xeeab,0xde6b,0xce2c,0xd64c,0xf6ed,0xeeac,0xe64a,0xd60b,0xd62c,0xe64b,0xd60c,0xde4c,0xf6ec,0xf70c,0xf70c,0xf70c,0xf70d,0xff2e,0xff0e,0xff2e,0xf70e,0xf70e,0xf6ee,0xe66d,0xd62d,0xeecd,0xeecd,0xe66c,0xeecd,0xeeee,0xff2e,0xff2f,0xff0e,0xff0e,0xff0e,0xfeee,0xff0f,0xf710,0xff30,0xff10,0xff10,0xff11,0xff31,0xff32,0xff32,0xff11,0xf711,0xff30,0xf70f,0xff30,0xff10,0xff31,0xff32,0xff32,0xff32,0xf711,0xf710,0xff10,0xf68c,0xfeed,0xff10,0xff10,0xff0f,0xff0f,0xf6ef,0xeecf,0xe6ef,0xe66d,0xe6ad,0xeeee,0xeeae,0xe68e,0xe68e,0xe6ae,0xde8e,0xdeae,0xe6ae,0xde6c,0xde6d,0xde8e,0xdeae,0xde8f,0xd66f,0xce4e,0xce4e,0xce4d,0xce2d,0xce2c,0xce4c,0xce2c,0xce2c,0xce2b,0xce2b,0xce2a,0xce29,0xce29,0xce09, +0x2926,0x0003,0x0004,0x0004,0x0004,0x0004,0x0004,0x0844,0x0004,0x18c4,0x18e4,0x0003,0x0004,0x2106,0x3a08,0x31c8,0x31c7,0x31e8,0x31c7,0x31c8,0x1148,0x1147,0x2167,0x2146,0x1127,0x0067,0x0106,0x1945,0x10e6,0x00e5,0x0065,0x0005,0x0005,0x0005,0x0005,0x0005,0x0004,0x0004,0x0005,0x0005,0x0004,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0804,0x0003,0x0003,0x0003,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0803,0x1803,0x0002,0x0002,0x0003,0x0002,0x0003,0x0002,0x0003,0x0803,0x1002,0x1802,0x0802,0x0802,0x2002,0x2002,0x0002,0x0003,0x0002,0x1802,0x1802,0x0802,0x2002,0x1002,0x0802,0x1802,0x2803,0x1002,0x1802,0x2802,0x2821,0x2821,0x2802,0x2882,0x2822,0x2002,0x2882,0x2822,0x3081,0x2862,0x2862,0x2002,0x2822,0x2882,0x1802,0x2002,0x3901,0x38e1,0x30a1,0x3082,0x2862,0x2801,0x2801,0x3061,0x3001,0x2001,0x2001,0x2802,0x2001,0x1801,0x1802,0x2061,0x0002,0x0002,0x1801,0x3063,0x3042,0x1802,0x2002,0x1802,0x2002,0x1802,0x0802,0x1002,0x0802,0x0002,0x0002,0x0802,0x0002,0x0002,0x0002,0x0002,0x0802,0x0803,0x2802,0x3002,0x3003,0x3003,0x3024,0x2804,0x1002,0x0001,0x1001,0x2001,0x2001,0x1801,0x2001,0x2801,0x2001,0x1001,0x1801,0x2801,0x3001,0x4144,0x4164,0x4124,0x38c4,0x3003,0x3084,0x2004,0x2003,0x2863,0x2843,0x2083,0x28e3,0x2903,0x3123,0x3923,0x41a3,0x41c3,0x41a3,0x41a3,0x49e3,0x5204,0x4183,0x41a3,0x3983,0x41a3,0x3143,0x2124,0x1944,0x00e4,0x39e4,0x4a24,0x3984,0x4143,0x49a3,0x49a4,0x49e5,0x4a05,0x51e5,0x5a86,0x5a85,0x5a45,0x62a5,0x6b26,0x6b06,0x62c7,0x6287,0x62a7,0x62a7,0x6b08,0x6b08,0x62e8,0x6ae8,0x7308,0x7308,0x6ae8,0x6b09,0x6b2a,0x6b4a,0x5aea,0x630a,0x6b4b,0x6b6b,0x738b,0x734a,0x62ea,0x6b6b,0x738b,0x7b8b,0x7bcb,0x83cb,0x7b8b,0x7bab,0x7bab,0x7bab,0x83ec,0x840c,0x83ec,0x83ed,0x83ed,0x7bed,0x840c,0x7c0d,0x7c0e,0x842e,0x8c6f,0x7c0e,0x840e,0x840e,0x8c4f,0x8c6f,0x948f,0x948f,0x94af,0x9caf,0x9cd0,0x9cf0,0x9cf0,0x9cf0,0x9cf1,0x9d11,0xa511,0xa532,0xa532,0xa511,0xa511,0xa532,0xa4f1,0xa531,0xad52,0xad93,0xb593,0xb5b3,0xbdb3,0xb593,0xb593,0xb592,0xad32,0xb593,0xb5d3,0xb5d3,0xbdf4,0xbdf3,0xbdd3,0xbdd3,0xbdf4,0xbdb3,0xb592,0xbdf3,0xbdd3,0xbdd3,0xbdd3,0xbdd3,0xbdd3,0xbdd3,0xb5b3,0xb592,0xb592,0xb592,0xb5b2,0xad51,0x7bab,0x7baa,0x7bca,0x73a9,0x73a9,0x73a9,0x7ba9,0x73a9,0x73a8,0x7bc9,0x7bc8,0x7bc8,0x7bc7,0x9cab,0xa4cc, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0000,0x0002,0x0002,0x0003,0x0004,0x0107,0x0086,0x0045,0x0106,0x1106,0x1106,0x08c6,0x10c6,0x1927,0x10e6,0x1907,0x00a6,0x0086,0x0846,0x1086,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0004,0x0005, +0x3a28,0x3a28,0x4248,0x4248,0x3a08,0x39e7,0x3a28,0x3a07,0x3a07,0x4248,0x4228,0x31c6,0x4228,0x4228,0x4248,0x4248,0x3a07,0x39e7,0x39e7,0x4249,0x4228,0x31a6,0x3a07,0x3a07,0x31c7,0x39e7,0x3a07,0x3a27,0x31c6,0x31c6,0x39c7,0x3a07,0x31a6,0x3a07,0x3a07,0x31e6,0x31c6,0x31c7,0x3a07,0x31c6,0x39e7,0x39c7,0x39e7,0x39c7,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x3186,0x31c6,0x31a6,0x2985,0x2985,0x39e7,0x31c6,0x31a6,0x31a5,0x2144,0x2124,0x3186,0x31a6,0x2965,0x2965,0x31a5,0x31c7,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x2985,0x3186,0x2966,0x3186,0x2965,0x3a07,0x3a07,0x2985,0x3186,0x31a6,0x2965,0x2985,0x2965,0x31e7,0x31c6,0x2144,0x31a6,0x31e6,0x31c6,0x2964,0x2985,0x2985,0x31a6,0x2965,0x2964,0x2985,0x2985,0x31a6,0x2965,0x2985,0x31a5,0x2985,0x31c6,0x31c6,0x39e6,0x31c6,0x2964,0x2965,0x31c6,0x31a6,0x2985,0x2965,0x3a07,0x2985,0x2965,0x3a27,0x31a6,0x29a6,0x31c6,0x31c6,0x2964,0x2965,0x31e7,0x31e7,0x39e7,0x2144,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x31c7,0x2965,0x31a6,0x18e3,0x2985,0x2965,0x2965,0x39e7,0x31c7,0x2985,0x3186,0x4a69,0x3a08,0x31e7,0x2986,0x31a6,0x39e7,0x2944,0x2124,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x39e7,0x31c7,0x3a07,0x4207,0x39e7,0x39e6,0x4228,0x31c6,0x31a5,0x3a07,0x39e7,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4228,0x4248,0x39e7,0x4228,0x3a07,0x4228,0x4a48,0x4228,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x4a69,0x4a8a,0x4248,0x4a89,0x3a07,0x4227,0x5289,0x4a69,0x4a69,0x52aa,0x52aa,0x4248,0x52aa,0x4a69,0x4228,0x4a69,0x52aa,0x5289,0x4a89,0x4a69,0x52aa,0x52aa,0x52aa,0x4a69,0x5aea,0x52aa,0x52aa,0x52ca,0x5aeb,0x52aa,0x52aa,0x5aeb,0x5aeb,0x4a68,0x52a9,0x4a69,0x4248,0x52ca,0x52ca,0x52a9,0x4a89,0x52ca,0x5aeb,0x52aa,0x5b0b,0x632b,0x5b0b,0x5aea,0x5aca,0x52a9,0x52aa,0x52a9,0x52a9,0x52ca,0x52aa,0x52aa,0x632c,0x632c,0x5aca,0x52ca,0x52ca,0x5289,0x6b4d,0x5b0b,0x52ca,0x5aeb,0x52ca,0x5aea,0x5aca,0x5aca,0x5aca,0x52aa,0x5aeb,0x5aca,0x52aa,0x5acb,0x5289,0x5aea,0x5289,0x52a9,0x4a48,0x52aa,0x5aca,0x4a48,0x4a48,0x4a48,0x4207,0x4207,0x4207,0x39c6,0x39c7,0x4a49,0x4228,0x3185,0x39e7,0x31c6,0x2985,0x2924,0x20e2,0x2123,0x31a6,0x2924,0x2903,0x2103,0x2944,0x1881,0x1881,0x1880,0x0000,0x0000,0x0000,0x18e2,0x0860,0x0000,0x0840,0x1081,0x0020,0x0860,0x0860,0x0820,0x0820,0x10a1,0x0840,0x0840,0x1080,0x0820,0x0000, +0x638d,0x6bae,0x73ef,0x6bce,0x638d,0x636d,0x638d,0x6bce,0x6bce,0x6bce,0x6b8d,0x5b0b,0x6b8d,0x638d,0x636c,0x63ad,0x636c,0x636d,0x636c,0x636c,0x638d,0x636d,0x638d,0x6bce,0x636d,0x73ce,0x638d,0x636c,0x636c,0x634c,0x5b2b,0x634c,0x5b4c,0x638d,0x636c,0x638d,0x5b4c,0x634c,0x636c,0x634c,0x636d,0x5b2c,0x5b2b,0x5b2b,0x52eb,0x52ea,0x5b6c,0x5b2b,0x52ea,0x5b2c,0x5b2c,0x5b2b,0x530b,0x5b2c,0x52eb,0x52eb,0x52eb,0x5b0b,0x52ca,0x52eb,0x5b2c,0x5b2c,0x5b2c,0x5b0b,0x52ea,0x530b,0x52ea,0x52ea,0x52ea,0x5b0c,0x5b2b,0x5b2c,0x52eb,0x52ca,0x52eb,0x52ea,0x52ea,0x52eb,0x52ca,0x52ea,0x52eb,0x52ca,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x52ca,0x52eb,0x52ea,0x5b2b,0x530b,0x52ea,0x52eb,0x52eb,0x530b,0x530b,0x52ca,0x52ca,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x4aaa,0x4aa9,0x5b0b,0x5b4c,0x52ea,0x52ea,0x5b2c,0x634c,0x4aca,0x530b,0x5b4c,0x5b4c,0x530b,0x52eb,0x5b2b,0x5b0b,0x52ca,0x5b2c,0x52ea,0x52ea,0x5b2b,0x5b2b,0x636d,0x5b2b,0x52ca,0x530b,0x5b2c,0x52ea,0x636d,0x5b2c,0x5b2c,0x634c,0x4aa9,0x52ea,0x5b2b,0x5aeb,0x5aeb,0x530b,0x5b0b,0x52ea,0x634c,0x634c,0x52eb,0x5b2c,0x52eb,0x52ca,0x52eb,0x6b8d,0x6bad,0x6bcd,0x638d,0x636d,0x5b0b,0x5aeb,0x52ea,0x632c,0x632c,0x634c,0x5b2b,0x52eb,0x634c,0x636c,0x636c,0x634c,0x6b8d,0x636d,0x6b8d,0x636c,0x634c,0x73ce,0x6bad,0x634c,0x636c,0x634c,0x6b6d,0x6bae,0x638d,0x636d,0x6bad,0x73ce,0x738d,0x6b6d,0x6b6d,0x6bae,0x73ee,0x73ef,0x638d,0x73ce,0x73ae,0x73ce,0x73ee,0x73ef,0x8430,0x73ce,0x7bef,0x7c30,0x73ce,0x73ce,0x73ce,0x7c0f,0x7c2f,0x73ee,0x73ce,0x7c30,0x73ee,0x6bad,0x73ce,0x7c2f,0x7c0f,0x73ce,0x73ae,0x7bef,0x7c2f,0x73ce,0x73ce,0x7bef,0x7bef,0x8430,0x842f,0x8430,0x7c0f,0x7c0f,0x8450,0x7c0f,0x7bef,0x7bef,0x7c0f,0x7c0f,0x7c0f,0x8430,0x7c0f,0x7c0f,0x7c0f,0x7c2f,0x7c2f,0x8450,0x8471,0x8430,0x94b1,0x842f,0x7c0f,0x7c0f,0x7c0f,0x8450,0x8450,0x7bef,0x8450,0x8450,0x8c91,0x8c71,0x8430,0x7bee,0x840f,0x8c70,0x8430,0x8c50,0x8c71,0x8450,0x8c91,0x8c70,0x8450,0x8450,0x8c71,0x8c91,0x8c91,0x94b1,0x8c71,0x8c50,0x8c91,0x94b2,0x9491,0x8450,0x9491,0x9cf3,0x9cd2,0x8c70,0x8c70,0x94d2,0x94d2,0x8c70,0x8c91,0x8470,0x9491,0x8c51,0x8c50,0x8c50,0x8c71,0x842f,0x7bef,0x7bce,0x73ae,0x8450,0x8450,0x7bef,0x73ce,0x8450,0x8430,0x6bae,0x7c0f,0x7bef,0x73ae,0x6b8d,0x7c0f,0x73ae,0x7bef,0x738d,0x7bef,0x7bef,0x6b8d,0x73ae,0x7c10,0x73cf,0x6b6d,0x73ce,0x73ce,0x7bef,0x6b4d,0x6b4c, +0x636c,0x634c,0x740f,0x638d,0x636d,0x6bae,0x638d,0x73ce,0x6bae,0x73ce,0x6bad,0x5b2c,0x638d,0x638d,0x636c,0x638d,0x6bad,0x6b8d,0x638d,0x6bad,0x638d,0x6bad,0x5b4c,0x6b8d,0x638d,0x636c,0x638d,0x636c,0x6bad,0x638c,0x6b8d,0x636c,0x638d,0x636c,0x634c,0x6bad,0x636c,0x634c,0x638d,0x5b4c,0x5b4c,0x638d,0x5b4c,0x5b4c,0x638d,0x636c,0x636c,0x5b0b,0x52ea,0x5b4c,0x636d,0x5b4c,0x530b,0x634c,0x5b4c,0x530b,0x5b4c,0x634c,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x636c,0x5b0b,0x5b4c,0x530a,0x530b,0x5b2b,0x5b2b,0x52eb,0x530b,0x5b2b,0x530b,0x52eb,0x5b2c,0x5b4c,0x52ca,0x52ca,0x52ea,0x52ea,0x530a,0x52ea,0x52ca,0x4aca,0x5b2b,0x5b4c,0x5b2b,0x530b,0x530b,0x5b4c,0x5b2b,0x636c,0x5b2c,0x5b4c,0x52ca,0x52ca,0x530b,0x530b,0x52ca,0x530b,0x5b0b,0x5b0b,0x52ea,0x530b,0x52ea,0x5b2c,0x5b2c,0x52eb,0x636c,0x5b2b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x52ca,0x634c,0x634c,0x5b2b,0x4aaa,0x52ea,0x52ea,0x5b0b,0x5b4c,0x5b0b,0x5b0b,0x5aeb,0x636c,0x6bad,0x5b2b,0x5b2c,0x52aa,0x5b2b,0x636c,0x5b0b,0x52ea,0x52ea,0x4aa9,0x5aeb,0x636c,0x530b,0x5b4c,0x636c,0x6bce,0x5b4c,0x5b2b,0x5b4c,0x634c,0x5b0b,0x634c,0x6bad,0x634c,0x6bad,0x636d,0x5b2c,0x636c,0x638d,0x5b4c,0x634c,0x6b6c,0x6b8d,0x6bad,0x6b8d,0x636c,0x638d,0x636c,0x73ae,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x73ad,0x6bad,0x6b8d,0x6bad,0x73ae,0x73ad,0x6b8d,0x6bad,0x73ce,0x73ef,0x73ee,0x73ce,0x6b8d,0x73ce,0x6b8d,0x6b8d,0x6bad,0x73ee,0x7c2f,0x73ce,0x7c2f,0x7c0f,0x73ce,0x7bee,0x7bef,0x7bee,0x73ce,0x6bad,0x7c0f,0x73ce,0x73ce,0x73ee,0x7bef,0x7bee,0x73ce,0x73ee,0x7bef,0x7c0f,0x8450,0x8430,0x73ce,0x7bee,0x73ae,0x73ce,0x7bef,0x7c0f,0x73ce,0x73ce,0x7c0f,0x842f,0x8430,0x8450,0x7c0f,0x8450,0x7c0f,0x7bef,0x840f,0x7bee,0x7c0f,0x7bce,0x8430,0x8450,0x7c0f,0x842f,0x7c2f,0x842f,0x7c0f,0x840f,0x7c0f,0x8470,0x842f,0x8450,0x8450,0x8450,0x8450,0x8c70,0x8c71,0x8450,0x7bef,0x840f,0x842f,0x7c0f,0x7c0f,0x7c0f,0x8c71,0x8430,0x8c50,0x8430,0x8450,0x8c50,0x8450,0x7bef,0x8450,0x8450,0x7c0f,0x7bef,0x8c50,0x7c0f,0x8c50,0x840f,0x9491,0x94b1,0x8c70,0x8c71,0x8c50,0x7c0f,0x8c71,0x8430,0x8c71,0x8450,0x840f,0x8450,0x842f,0x840f,0x8c91,0x8c71,0x8450,0x842f,0x842f,0x8450,0x840f,0x840f,0x842f,0x7c0f,0x7c0f,0x7c0f,0x8430,0x842f,0x8450,0x7c0f,0x7bee,0x7c0f,0x8430,0x7c0f,0x7c0f,0x8430,0x73ce,0x7c0f,0x7bef,0x7bef,0x7bef,0x7c0f,0x8430,0x7bef,0x73ce,0x73ae,0x7bef,0x738d,0x73ae, +0x6b8d,0x6bce,0x6bad,0x6bce,0x6bae,0x5b2c,0x73ee,0x6bce,0x6bce,0x73ee,0x6bcd,0x636c,0x638d,0x638d,0x638d,0x638d,0x6b8d,0x636c,0x6b8d,0x6b8d,0x638d,0x6bce,0x636c,0x6bad,0x634c,0x636c,0x638d,0x6bad,0x6bcd,0x6b8d,0x6bad,0x6b8d,0x6bad,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x636c,0x636d,0x6bad,0x6bce,0x6bce,0x634c,0x6bad,0x6b8d,0x636c,0x6b8d,0x636d,0x636d,0x638d,0x636d,0x636d,0x634c,0x634c,0x5b4c,0x5b4c,0x636c,0x636c,0x5b2b,0x5b2b,0x530b,0x6b8d,0x5b2c,0x5b2c,0x5b2c,0x530b,0x5b2b,0x636c,0x530b,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b2b,0x636c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x52eb,0x52eb,0x52eb,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x530b,0x530b,0x5b6c,0x5b2c,0x5b4c,0x5b2c,0x5b0b,0x52eb,0x5b2c,0x530b,0x5b0b,0x634c,0x638d,0x5b4c,0x636c,0x5b2b,0x5b4c,0x5b0b,0x638d,0x5b2c,0x636c,0x636c,0x634c,0x6bad,0x5b2b,0x5b2c,0x52ca,0x530b,0x636c,0x6b8d,0x5b2c,0x636c,0x5b0b,0x636c,0x636d,0x5b4c,0x636c,0x5b2c,0x636c,0x638d,0x532b,0x636c,0x5b4c,0x5b4c,0x636c,0x638d,0x636c,0x5b2b,0x638d,0x636c,0x638d,0x5b2b,0x5b4c,0x634c,0x6bad,0x636c,0x636d,0x6b8d,0x6b8d,0x636c,0x636c,0x636c,0x636c,0x636d,0x6b8d,0x634c,0x634c,0x636d,0x636d,0x740f,0x73ce,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x6bad,0x6bce,0x73ee,0x6b8d,0x6bad,0x6b8d,0x6b8d,0x73ce,0x73ce,0x6b8d,0x6b8d,0x6bcd,0x7bef,0x73ce,0x73ad,0x7bef,0x6bad,0x740f,0x73ce,0x6bae,0x6bad,0x73ee,0x73ce,0x73ee,0x6bad,0x740f,0x73ee,0x73ce,0x73ae,0x7bef,0x73ce,0x73ce,0x7c50,0x7c0f,0x73ae,0x73ee,0x7c30,0x6bad,0x73ee,0x73ee,0x73ee,0x7c0f,0x73ce,0x7bee,0x8450,0x7c0f,0x8450,0x8470,0x7c0f,0x7c2f,0x7c0f,0x7c0f,0x7bef,0x7c0f,0x7c0f,0x7c0f,0x73ee,0x7c2f,0x8450,0x8430,0x7c2f,0x8450,0x7c0f,0x73ee,0x7bef,0x7bef,0x7c0f,0x842f,0x842f,0x840f,0x8c91,0x8c91,0x8450,0x7c2f,0x7c0f,0x7c0f,0x7c0f,0x94b1,0x8430,0x8430,0x8430,0x842f,0x8450,0x8c70,0x8450,0x8c91,0x8430,0x8450,0x7c0f,0x7c0f,0x7c0f,0x8430,0x8c70,0x8450,0x8c70,0x7c0f,0x8450,0x8c71,0x8c50,0x8c70,0x8c70,0x7c2f,0x8430,0x840f,0x8430,0x8c71,0x8c71,0x840f,0x8c50,0x8c50,0x8430,0x8430,0x8c91,0x8450,0x8430,0x8c71,0x8430,0x840f,0x840f,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x8430,0x8430,0x7bef,0x8430,0x8c70,0x842f,0x8430,0x7c0f,0x7bee,0x73ce,0x73ce,0x7bef,0x8450,0x8450,0x842f,0x7bce,0x7c0f,0x840f,0x7bef,0x73ce,0x73ce,0x7bce,0x7bef,0x7c0f,0x7bce,0x73ae,0x73ce,0x6bad,0x7bce,0x7bef,0x840f,0x73ae,0x7bef,0x73ce, +0x6bae,0x73ee,0x638d,0x6bad,0x6bce,0x6bad,0x740f,0x6bce,0x73ee,0x6bad,0x6bad,0x73ee,0x73ee,0x638d,0x636d,0x6bce,0x6bae,0x6bad,0x73ce,0x6bad,0x6bae,0x73ee,0x6bce,0x6bad,0x6bae,0x6bce,0x6bad,0x6bad,0x6bcd,0x6bad,0x634c,0x638d,0x638d,0x6bad,0x6bad,0x636c,0x636c,0x63ad,0x63ad,0x6bce,0x6bae,0x636c,0x6bae,0x636d,0x636c,0x636c,0x636d,0x636d,0x6bad,0x5b4c,0x5b2b,0x636c,0x636d,0x5b2c,0x638d,0x636d,0x634c,0x636d,0x634c,0x5b2c,0x5aeb,0x634c,0x5b4c,0x5b0b,0x5b0b,0x5b4c,0x5b4c,0x5b0b,0x530b,0x5b4c,0x636c,0x636c,0x5b4c,0x634c,0x5b2b,0x634c,0x5b4c,0x636c,0x636c,0x5b4c,0x5b2c,0x634c,0x636c,0x636c,0x5b2c,0x636c,0x5b0b,0x5b2c,0x638d,0x636c,0x636c,0x5b2c,0x636d,0x5b6c,0x5b6c,0x636c,0x638d,0x638d,0x5b4c,0x638c,0x636c,0x636c,0x636c,0x5b2b,0x638d,0x5b4c,0x636c,0x638d,0x530b,0x634c,0x5b2b,0x638d,0x5b4c,0x638d,0x6b8d,0x636c,0x5b4b,0x6bad,0x530b,0x5b2c,0x6bce,0x6b8d,0x634c,0x638d,0x636c,0x5b2b,0x636c,0x5b4c,0x5b2b,0x6bad,0x636c,0x6bad,0x73ee,0x6bad,0x638d,0x6bad,0x6bad,0x6bad,0x6bce,0x5b4c,0x6b8d,0x636c,0x636d,0x6bad,0x6b8d,0x6bce,0x6b8d,0x636d,0x73ae,0x73ce,0x6bce,0x638d,0x6bad,0x6bce,0x6bad,0x73ce,0x6bce,0x73ce,0x73ee,0x73ce,0x6bad,0x6bce,0x6bad,0x7c0f,0x6bce,0x6bce,0x6bad,0x6b8d,0x7c0f,0x6bce,0x7c0e,0x7c2f,0x6b8d,0x6bce,0x740e,0x7c0f,0x73ee,0x73ee,0x73ef,0x63ad,0x740f,0x73ce,0x73ee,0x73ee,0x6b8d,0x73ce,0x740f,0x740f,0x7c0f,0x73ce,0x7c0f,0x7c0f,0x7c0f,0x7c50,0x6bce,0x740f,0x8450,0x73ee,0x7bef,0x7c0f,0x73ee,0x8450,0x8450,0x7c2f,0x73ce,0x7c0f,0x73ee,0x7c0f,0x7c0f,0x8450,0x7c2f,0x73ee,0x8470,0x7c0f,0x7c50,0x7c2f,0x7bef,0x7c0f,0x7c2f,0x73ee,0x73ee,0x7bef,0x8450,0x8430,0x7bef,0x73ce,0x842f,0x7c0f,0x842f,0x8430,0x8470,0x7c0f,0x842f,0x8c71,0x7c0f,0x8430,0x842f,0x8c70,0x94d2,0x7bee,0x7c0f,0x842f,0x7c2f,0x7c0f,0x8c91,0x8450,0x842f,0x8450,0x8c70,0x842f,0x8c50,0x8450,0x8450,0x8470,0x8430,0x7bef,0x7c0f,0x7bee,0x8430,0x8430,0x842f,0x7bef,0x7bef,0x842f,0x7c2f,0x7bee,0x8c70,0x8430,0x8450,0x7bef,0x8450,0x8c50,0x8c70,0x7c0f,0x7bce,0x8450,0x8450,0x8c91,0x8c70,0x8c70,0x8450,0x8430,0x8c50,0x842f,0x8c70,0x8cb1,0x8c70,0x8c71,0x8430,0x8430,0x8430,0x8c70,0x842f,0x8450,0x7bee,0x7c0f,0x8c71,0x840f,0x8c71,0x8450,0x7c0f,0x8c50,0x8450,0x8410,0x7bef,0x8c91,0x842f,0x73ce,0x8430,0x8450,0x7bef,0x7bef,0x8430,0x73ee,0x7bef,0x8430,0x8c71,0x8430,0x7bef,0x7c0f, +0x6bae,0x73ce,0x6b8d,0x73ce,0x73ce,0x6b6d,0x6bad,0x636d,0x634c,0x636d,0x636d,0x638d,0x6bad,0x6bae,0x638d,0x636d,0x636d,0x634c,0x6b8d,0x636d,0x5aeb,0x5b2c,0x636c,0x5b4b,0x636c,0x6bce,0x638d,0x634c,0x6b8d,0x638c,0x6bad,0x6bae,0x6bad,0x636d,0x5b4c,0x634c,0x5b0b,0x636c,0x6b8d,0x5b4c,0x5b2b,0x636c,0x5b4c,0x5b4c,0x5b4c,0x634c,0x5b2c,0x5b2c,0x634c,0x634c,0x6b8d,0x636d,0x634c,0x5b0b,0x5b0b,0x5b2c,0x634c,0x5b2c,0x636c,0x5b0b,0x5b0b,0x634c,0x636d,0x5b0b,0x5b2b,0x5b4c,0x638d,0x5b2c,0x636c,0x636d,0x530b,0x5b2c,0x634c,0x5b2c,0x5b0b,0x52eb,0x5b4c,0x636c,0x636c,0x5b4c,0x5b0b,0x636d,0x52ea,0x5b2c,0x636d,0x636c,0x5b2b,0x52ea,0x5b4c,0x6b8d,0x6bad,0x5b2c,0x5b2b,0x5b0b,0x5b4c,0x5b4c,0x634c,0x634c,0x5b0b,0x632c,0x5b2c,0x636c,0x5b2c,0x636c,0x5b4c,0x636c,0x634c,0x636c,0x6bad,0x636c,0x638d,0x636c,0x636d,0x636d,0x6b8d,0x6bad,0x638d,0x73ee,0x636c,0x636c,0x6bad,0x634c,0x634c,0x636c,0x6bce,0x6bad,0x634c,0x636c,0x6bad,0x6b8d,0x636c,0x6bad,0x6b8d,0x636c,0x5b4c,0x6b8d,0x636c,0x636c,0x636c,0x636c,0x638d,0x636c,0x5b4c,0x638d,0x634c,0x5b4c,0x5b4c,0x634c,0x6bad,0x636c,0x638d,0x638d,0x638d,0x638d,0x634c,0x5b4c,0x6bad,0x6bad,0x636c,0x636c,0x73ce,0x638d,0x6bad,0x73ad,0x6bce,0x6bad,0x636c,0x6bad,0x73ce,0x634c,0x636c,0x73ae,0x636d,0x73ce,0x638d,0x6bad,0x73ee,0x6bad,0x5b4c,0x6bad,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x73ce,0x6bad,0x6bae,0x6bad,0x6b6d,0x73ae,0x73ee,0x6bad,0x73ce,0x73ce,0x6b8d,0x6b8d,0x6bad,0x6b8d,0x6bae,0x73ae,0x73ce,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x73ae,0x6bad,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x73ce,0x73ce,0x6b6d,0x73ae,0x73ae,0x73ae,0x6bad,0x6b8d,0x73ce,0x6bad,0x6b6d,0x6b8d,0x6b6d,0x634c,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x634c,0x738d,0x6b8d,0x6bad,0x6b6d,0x634c,0x6b8d,0x6b8d,0x6b4c,0x6b8d,0x73ce,0x6bad,0x636c,0x73ae,0x6b8d,0x7bce,0x6b8d,0x6b8d,0x738d,0x6b8d,0x6b8d,0x73ae,0x73ad,0x6b6d,0x6b8d,0x6b6d,0x738e,0x73ae,0x6b8d,0x6b8d,0x73ce,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x73ce,0x6b6d,0x73ce,0x73ce,0x7bee,0x73ce,0x6b8d,0x73ae,0x7bce,0x73ae,0x73ce,0x738d,0x73ae,0x73ce,0x7bce,0x7bef,0x73ce,0x738d,0x73ce,0x8450,0x73ae,0x738d,0x73ae,0x73ce,0x7bee,0x7bce,0x7bce,0x840f,0x7bce,0x8450,0x8430,0x73ae,0x7bef,0x7bef,0x6b8d,0x73ae,0x7bef,0x8430,0x7bef,0x73ce,0x7bef,0x738e,0x73ae,0x73ce,0x73ae,0x73ce,0x7c10,0x7bef,0x8450,0x7bef,0x73ae,0x7c0f,0x73ee,0x73ce, +0x3a07,0x3a07,0x31c7,0x39e7,0x3a07,0x3186,0x31c7,0x3186,0x3186,0x31c7,0x39e7,0x2965,0x2985,0x3a08,0x31a6,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x2985,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x31c6,0x2986,0x2985,0x3185,0x31c6,0x31c6,0x2965,0x29a6,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2145,0x2985,0x2986,0x31c7,0x31a6,0x2985,0x2985,0x2985,0x2965,0x2144,0x2985,0x31c6,0x2944,0x3185,0x2965,0x2124,0x2945,0x2985,0x2965,0x31a6,0x2985,0x2986,0x31c6,0x2965,0x2124,0x2965,0x2124,0x2985,0x2144,0x2965,0x2985,0x2985,0x2985,0x2145,0x31a6,0x2965,0x2965,0x2144,0x2965,0x2965,0x2124,0x2144,0x2985,0x2985,0x2965,0x2965,0x2124,0x2965,0x2144,0x2945,0x2965,0x2965,0x2145,0x2124,0x31a6,0x3186,0x2144,0x2144,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2144,0x2945,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2124,0x2965,0x2144,0x2965,0x18e3,0x2144,0x2965,0x2944,0x2103,0x2965,0x2965,0x2124,0x1904,0x2965,0x2144,0x2124,0x2124,0x18e3,0x2144,0x2985,0x2144,0x2124,0x2965,0x2144,0x2144,0x2965,0x2965,0x2103,0x2144,0x2965,0x2144,0x2144,0x1903,0x2124,0x2965,0x2124,0x18e3,0x2144,0x2985,0x2123,0x2965,0x2985,0x2124,0x2945,0x2945,0x2945,0x2144,0x31a5,0x2144,0x2985,0x2124,0x2124,0x2144,0x2124,0x2945,0x2965,0x2144,0x2965,0x2944,0x2965,0x2144,0x2144,0x2965,0x2945,0x2965,0x3186,0x39e7,0x2965,0x2944,0x2124,0x2124,0x2985,0x31a5,0x2965,0x2124,0x2124,0x2965,0x2964,0x2944,0x2945,0x2985,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2965,0x2945,0x2124,0x2944,0x2965,0x2124,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2124,0x2944,0x31c6,0x3186,0x31a6,0x2945,0x2944,0x2965,0x2945,0x2965,0x2945,0x31a6,0x2985,0x2944,0x2965,0x3185,0x2985,0x2985,0x2944,0x2944,0x2965,0x3185,0x31c6,0x39c6,0x31a6,0x31a6,0x31c6,0x31a6,0x39c6,0x3185,0x39e7,0x39c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c7,0x31c6,0x39e7,0x4228,0x39c6,0x31a6,0x3a07,0x4a48,0x4228,0x4207,0x4208,0x4228,0x39c6,0x4208,0x4207,0x4207,0x4228,0x4248,0x4228,0x39e7,0x4208,0x4a69,0x4a69,0x4a49,0x4a69,0x39e7,0x4228,0x4a89,0x4a49,0x4228,0x4a69,0x4a69,0x39e7,0x4228,0x5289,0x5289,0x4a69,0x4a69,0x52aa,0x52aa,0x4207,0x5acb,0x528a,0x4a69,0x52aa,0x52aa,0x4a69,0x5289,0x4208,0x4a89,0x52ca,0x4248,0x52aa,0x5aeb,0x5aca,0x5aeb,0x528a,0x52ca,0x5aeb,0x52ca,0x52aa,0x52ca,0x5aeb,0x52ca,0x4a69,0x52ca, +0x0841,0x0841,0x1061,0x0820,0x0021,0x1082,0x0841,0x1082,0x1082,0x0861,0x0041,0x10a2,0x10a2,0x0000,0x0841,0x1061,0x1082,0x10a2,0x0882,0x0861,0x10a2,0x10a2,0x0881,0x1082,0x1082,0x0861,0x1082,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1081,0x1082,0x1061,0x0000,0x1082,0x1061,0x1061,0x10a2,0x1082,0x10a2,0x1082,0x10c2,0x10a2,0x0861,0x0820,0x10a2,0x10a2,0x0881,0x0882,0x1082,0x10a2,0x1081,0x0881,0x10a2,0x10c2,0x10c2,0x10a2,0x18c2,0x1081,0x10a2,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x1082,0x1061,0x0861,0x1081,0x10c2,0x10c2,0x1081,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x10c3,0x10a2,0x1081,0x10a2,0x18a2,0x10a2,0x10a2,0x1061,0x10a2,0x10a2,0x10a2,0x18c2,0x2104,0x1081,0x10a2,0x10c2,0x0861,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x18e3,0x18c3,0x1061,0x10a2,0x18e3,0x10c2,0x10a2,0x2104,0x18e3,0x10a2,0x1082,0x18e3,0x18a2,0x18c2,0x1082,0x1061,0x10a2,0x18c2,0x10a2,0x1081,0x18e3,0x18e3,0x18a2,0x18c3,0x1062,0x10a2,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x10a2,0x18e3,0x10c2,0x18c2,0x18e3,0x10a2,0x18c3,0x10c2,0x18c2,0x10a2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x10c3,0x1903,0x18c2,0x10c2,0x18c2,0x10c2,0x18e3,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x18c3,0x10c2,0x18e3,0x18e3,0x10a2,0x1081,0x18c2,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18e3,0x18c2,0x18c2,0x10a2,0x18e3,0x18e3,0x18c3,0x1903,0x18c3,0x2104,0x18e3,0x18e3,0x18e3,0x18c2,0x18c2,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x0861,0x10a2,0x1082,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c2,0x18c2,0x18c3,0x18a2,0x10a2,0x18c3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x10c2,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x18c3,0x1081,0x10c2,0x10a2,0x10a2,0x0861,0x0861,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x0820,0x10a2,0x0881,0x0020,0x0861,0x1082,0x0861,0x0020,0x0861,0x1081,0x0020,0x0000,0x0020,0x0020,0x0000,0x0820,0x1082,0x0000,0x0020,0x0861,0x0000,0x0840,0x0861,0x0841,0x1082,0x0000,0x0020,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0861,0x0841,0x0000, +0x39e7,0x31c7,0x31c7,0x39e7,0x39c6,0x31c6,0x39e7,0x31c6,0x4228,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x31c7,0x31c6,0x39c7,0x31c7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x31a6,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x31e7,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x31e7,0x3a07,0x31e7,0x31c7,0x39c7,0x31c6,0x31c6,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x31e7,0x31c6,0x39e7,0x3a07,0x31c6,0x39e7,0x31e7,0x31c6,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x31c6,0x39e7,0x39e7,0x31a6,0x31c7,0x39e7,0x3a07,0x3a28,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x31e6,0x39e7,0x31e7,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x3a07,0x39e7,0x3a28,0x4228,0x4228,0x3a07,0x4228,0x3a27,0x4228,0x4228,0x3a08,0x3a28,0x4208,0x4248,0x3a07,0x3a28,0x4228,0x4248,0x4228,0x3a27,0x4228,0x4248,0x39e7,0x4a69,0x4289,0x3a28,0x4228,0x4248,0x4248,0x4248,0x3a28,0x4228,0x3a07,0x3a28,0x3a28,0x4248,0x4248,0x4a69,0x3a28,0x4228,0x4248,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x3a28,0x4248,0x4a69,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x3a08,0x39e7,0x3a07,0x4248,0x3a07,0x3a07,0x4248,0x4248,0x4208,0x4248,0x3a28,0x3a07,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4208,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x4248,0x3a08,0x3a07,0x3a08,0x3a28,0x3a07,0x4269,0x3a08,0x4248,0x4248,0x39e7,0x4228,0x4249,0x4228,0x3a08,0x3a08,0x3a27,0x3a07,0x4208,0x4208,0x4228,0x4228,0x4228,0x4208,0x3a08,0x4208,0x4228,0x4208,0x4228,0x4208,0x4248,0x4208,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x4208,0x4228,0x4228,0x3a07,0x3a07,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x4208,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x4207,0x3a07,0x4207,0x4208,0x39e7,0x3a07,0x3a07,0x3a07,0x39c7,0x39e7,0x4208,0x4208,0x3a07,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x39e7,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x4208,0x39c7,0x39c7,0x39c7,0x31a6,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x3186,0x2986,0x2965,0x3186,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2945,0x3186,0x3186,0x31a6,0x2965,0x2945,0x2945,0x2945, +0x3a07,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a28,0x39e7,0x31e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x3a07,0x3a07,0x3a07,0x3a08,0x4248,0x3a07,0x3a28,0x4228,0x3a07,0x4228,0x3a07,0x4228,0x4207,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4208,0x3a08,0x4228,0x4248,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x3a07,0x3a07,0x3a28,0x3a08,0x39e7,0x3a08,0x3a08,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x3a08,0x4228,0x3a08,0x4228,0x3a07,0x4248,0x3a28,0x4228,0x4228,0x3a07,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x4228,0x4248,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4269,0x4248,0x4228,0x4248,0x4a89,0x4a89,0x4a89,0x4aa9,0x4a69,0x4268,0x4a69,0x4aa9,0x4269,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4248,0x3a28,0x4269,0x4248,0x4269,0x4a89,0x4a69,0x4268,0x4269,0x4268,0x4a69,0x4269,0x4269,0x4aaa,0x4248,0x4a69,0x4268,0x4a69,0x4269,0x4269,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4a69,0x4268,0x4248,0x4a89,0x4a8a,0x4a89,0x4a89,0x4aa9,0x4268,0x4a69,0x4a89,0x4aaa,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4248,0x4a89,0x52aa,0x4269,0x4a89,0x4a89,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x528a,0x4a69,0x4a69,0x4269,0x4a69,0x4a69,0x4a69,0x4a69,0x4a68,0x4a69,0x4a69,0x4a69,0x4269,0x4248,0x4249,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a68,0x4a69,0x4a69,0x4249,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a69,0x4a49,0x4248,0x4a69,0x4248,0x4248,0x4228,0x4248,0x4249,0x4228,0x4228,0x4249,0x4248,0x4248,0x4248,0x4228,0x5289,0x4248,0x4248,0x4a48,0x4248,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4208,0x4248,0x4228,0x4228,0x4249,0x4248,0x4249,0x4249,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x3a08,0x4228,0x4248,0x4249,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x4a69,0x4228,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4a49,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x4a69,0x4228,0x4a8a,0x4248,0x4249,0x4a8a,0x4a48,0x4228,0x4248,0x4a69,0x4249,0x4a49,0x4a49,0x4249, +0x31a6,0x31a6,0x39c7,0x31a6,0x31c6,0x31a6,0x39e7,0x39c6,0x39c7,0x31c6,0x39e7,0x39c7,0x31a6,0x39c7,0x31c6,0x39e7,0x39c7,0x31a6,0x39e7,0x31c6,0x31c6,0x31c6,0x31c6,0x39e7,0x3a07,0x39e7,0x31c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39c6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x39c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39c6,0x31a6,0x39c7,0x39c7,0x39c6,0x31c7,0x31c7,0x31c7,0x31c6,0x31a6,0x31c6,0x31c6,0x31a6,0x39e7,0x39e7,0x39c7,0x39e6,0x39e7,0x3a07,0x3a07,0x31c7,0x39c6,0x39c7,0x39e7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x3a07,0x39c6,0x39e7,0x4208,0x39c7,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x31e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4228,0x3a07,0x31e7,0x3a07,0x3a07,0x3a07,0x3a27,0x3a27,0x4268,0x4268,0x4248,0x4248,0x4228,0x3a07,0x3a28,0x3a27,0x3a27,0x4228,0x3a27,0x3a07,0x4248,0x4248,0x3a07,0x4248,0x3a07,0x3a07,0x31c6,0x3a07,0x3a07,0x3a07,0x4248,0x4228,0x4207,0x4207,0x4248,0x3a07,0x4208,0x4207,0x4228,0x4227,0x3a07,0x3a28,0x4228,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x4208,0x4228,0x3a27,0x4228,0x4208,0x4228,0x4228,0x3a27,0x4248,0x3a07,0x3a07,0x4a69,0x4228,0x4227,0x3a27,0x3a07,0x4248,0x3a07,0x4248,0x4228,0x4228,0x4248,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x3a27,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4208,0x39e7,0x4228,0x4207,0x4208,0x4228,0x4228,0x4227,0x3a07,0x4207,0x4a69,0x4228,0x39e7,0x4207,0x39e7,0x3a07,0x4228,0x3a07,0x31c6,0x31c6,0x3a07,0x3a07,0x4208,0x3a07,0x39e7,0x4207,0x3a07,0x3a07,0x3a07,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x4208,0x4208,0x4207,0x39e7,0x4208,0x3a07,0x39e7,0x4228,0x3a07,0x3a07,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4227,0x39e7,0x4227,0x39e7,0x3a07,0x39e7,0x3a07,0x4208,0x4207,0x39e7,0x4228,0x4228,0x39e7,0x39e7,0x4207,0x4208,0x4207,0x4228,0x39e7,0x3a07,0x4228,0x3a07,0x4228,0x4228,0x4208,0x4208,0x4207,0x4228,0x3a07,0x3a07,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4228,0x4248,0x4a49,0x4208,0x4207,0x4208,0x4208,0x4228,0x4228,0x39e7,0x4228,0x4248,0x4248,0x4207,0x4228,0x5aeb,0x4a69,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4a48,0x4a49,0x4248,0x4228,0x4228,0x4a69,0x4a69,0x4a49, +0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x2985,0x2985,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x2965,0x31a6,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2985,0x2965,0x3185,0x2985,0x2965,0x31c6,0x39c6,0x31a6,0x39e7,0x3186,0x31a6,0x31c6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x31c6,0x39e7,0x39e7,0x31a6,0x3185,0x2965,0x31a6,0x31c6,0x31a6,0x31a6,0x2965,0x2985,0x2985,0x3185,0x2985,0x2985,0x3186,0x2144,0x2985,0x2985,0x3186,0x2985,0x31a6,0x31a6,0x2986,0x2965,0x3186,0x2965,0x2965,0x2985,0x31c6,0x2985,0x2985,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x2985,0x3186,0x3186,0x3186,0x2985,0x31a6,0x29a6,0x31c6,0x29a6,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x31a5,0x31a6,0x31c6,0x31c6,0x29a5,0x31c6,0x31c6,0x2986,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x31c6,0x31c6,0x31a6,0x39c6,0x31c6,0x31c6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x31a6,0x31c6,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x31c6,0x39e7,0x39e7,0x31c6,0x31c6,0x2985,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x39e7,0x31c6,0x31a6,0x39e7,0x31a6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a5,0x31c6,0x31c7,0x31a6,0x31c6,0x39c7,0x39e7,0x3185,0x3185,0x4208,0x39e7,0x39e7,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x3a07,0x39e7,0x31a6,0x31c6,0x39e7,0x39c6,0x39e7,0x3a07,0x31a6,0x4207,0x39e7,0x31a6,0x39e7,0x31c7,0x31c6,0x39e7,0x31c6,0x31a6,0x39c7,0x39c7,0x31a6,0x2965,0x31c6,0x39c6,0x31a6,0x39e7,0x39e7,0x31a6,0x31c6,0x2986,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x3185,0x2985,0x31c6,0x31a6,0x31a6,0x39c6,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x3185,0x31a6,0x2985,0x3185,0x2965,0x2945,0x2965,0x2145,0x3186,0x3186,0x31a6,0x2985,0x2985,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x3186,0x2965,0x2944,0x2965,0x2965,0x2945,0x2965,0x2965,0x2985,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965,0x2985,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x39c7,0x3186,0x3186,0x3186,0x31a6,0x3186,0x2965,0x2945,0x31a7,0x2985,0x2965,0x2124,0x2965,0x3a07,0x31a6,0x2965,0x31a6,0x31c6,0x3186,0x2945,0x2945,0x3165,0x2945,0x3186,0x2986,0x3186,0x2965,0x2986,0x3186,0x2965,0x3186,0x31a6,0x31a6,0x3186, +0x52cb,0x52aa,0x52ca,0x5aca,0x4a8a,0x4a89,0x52ca,0x52ea,0x52aa,0x52aa,0x528a,0x5acb,0x52aa,0x5289,0x4a89,0x52aa,0x4a69,0x4a89,0x52ca,0x4a89,0x5289,0x4a89,0x4a69,0x4a89,0x52aa,0x4228,0x4a89,0x4a89,0x4aaa,0x52ea,0x4aa9,0x52aa,0x52a9,0x52ea,0x4aa9,0x52ea,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52ea,0x5b0b,0x5b0b,0x52ca,0x52ea,0x5aeb,0x634c,0x634c,0x52ca,0x5b0b,0x632c,0x632c,0x5aeb,0x52ea,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x4aa9,0x4aa9,0x52ca,0x52ca,0x52ca,0x5b0b,0x52ca,0x52ca,0x52eb,0x4aaa,0x52aa,0x52ca,0x52ca,0x52eb,0x52aa,0x5aea,0x5aeb,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x5b0b,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52ca,0x52aa,0x52eb,0x52eb,0x5b0b,0x52ca,0x5aeb,0x632c,0x5b0b,0x52ca,0x52eb,0x5b2c,0x5b0b,0x52ea,0x5b2b,0x52ca,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b4c,0x530b,0x5b0b,0x5b0b,0x634c,0x5b2c,0x634c,0x5b0b,0x5aeb,0x52eb,0x5b2c,0x5b0b,0x52ea,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52ea,0x5aeb,0x52eb,0x52eb,0x52eb,0x52eb,0x5b0b,0x5b2c,0x5b2b,0x632c,0x5b0b,0x634c,0x5b0b,0x5b0b,0x530b,0x52ea,0x5b2b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b2b,0x634c,0x5b0b,0x52ca,0x5aeb,0x5b2b,0x5b4c,0x530b,0x5b0b,0x632c,0x632c,0x5b0b,0x634c,0x6bad,0x52eb,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x52eb,0x5b2c,0x5b0b,0x634c,0x632c,0x6b6d,0x632c,0x5b0b,0x632c,0x6b6d,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x5aea,0x632b,0x634c,0x5b2b,0x634c,0x634c,0x632b,0x634c,0x638d,0x5b0b,0x5aeb,0x5b2c,0x5b2c,0x5b0b,0x634c,0x5b2c,0x6b6d,0x634c,0x5b0b,0x52eb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x634c,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x5aeb,0x5aeb,0x52aa,0x5b0b,0x52cb,0x5b0b,0x5aeb,0x52aa,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x52ca,0x52aa,0x5aeb,0x5acb,0x52ca,0x5aeb,0x52ca,0x5aeb,0x52ca,0x5aeb,0x528a,0x5aeb,0x5aeb,0x4a8a,0x52aa,0x52ca,0x52aa,0x528a,0x52aa,0x5289,0x4a89,0x4a89,0x52aa,0x52aa,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x5aca,0x52ca,0x52aa,0x4a89,0x52aa,0x52aa,0x4a89,0x5289,0x5aeb,0x4a69,0x4a89,0x52aa,0x52aa,0x52aa,0x528a,0x4a69,0x528a,0x5289,0x528a,0x4a69,0x528a,0x4a89,0x4a89,0x4a69,0x4a69,0x4a8a,0x4a69,0x52ca,0x4a69,0x4a49,0x4a49,0x4248,0x4208,0x4248,0x4a49,0x4a49,0x4207,0x4228,0x4a49,0x4208,0x4248,0x4a49,0x4228,0x4228,0x4208,0x4228,0x4208,0x3a07,0x4228,0x4248,0x3a08,0x31c7,0x4228,0x4228,0x4a49,0x39e7,0x4208, +0x52ca,0x52ca,0x5acb,0x632c,0x52eb,0x52aa,0x52ca,0x5aeb,0x52ca,0x52ea,0x5b0b,0x5aeb,0x52ca,0x52ca,0x4aaa,0x52aa,0x52aa,0x52aa,0x4a89,0x52aa,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x52aa,0x52aa,0x52ca,0x52ea,0x52ca,0x4a89,0x4aa9,0x52aa,0x52ca,0x52ea,0x530b,0x5b2b,0x634c,0x6b8c,0x636c,0x5b0b,0x636c,0x5b2b,0x5aeb,0x632c,0x52ea,0x5b2b,0x52ca,0x52ea,0x5b0b,0x5b0b,0x634c,0x634b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x4aaa,0x4aa9,0x52aa,0x52ca,0x52ca,0x4a89,0x52ea,0x52ea,0x52ca,0x4a89,0x52ea,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x52eb,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b4b,0x5b2c,0x5b0b,0x52eb,0x52ca,0x52ea,0x52ea,0x530b,0x52eb,0x52ca,0x52aa,0x530b,0x5b2c,0x5b0b,0x52ea,0x5b2b,0x5b4c,0x5b0b,0x5b0b,0x634c,0x634c,0x5b2b,0x5b0b,0x530b,0x530b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x634c,0x5b4c,0x5b2b,0x638d,0x634c,0x5b2b,0x636c,0x5b0b,0x636c,0x634c,0x636c,0x5b4b,0x5b2b,0x636c,0x5b4b,0x634c,0x5b2b,0x52ea,0x5b0b,0x5b2b,0x530b,0x5b0b,0x52ea,0x5b0b,0x5aea,0x52ea,0x52ea,0x5b2b,0x636d,0x5b2b,0x5b2c,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x530b,0x5b0b,0x634c,0x5b2b,0x5b4c,0x530b,0x5b2b,0x636c,0x632c,0x636c,0x5b2b,0x5b2c,0x5b0b,0x6b8d,0x73ce,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b2c,0x5b4c,0x5b4c,0x5b4c,0x636c,0x636c,0x634c,0x5b2b,0x6bad,0x6b8d,0x73ce,0x6b8d,0x5b2b,0x632c,0x5b2b,0x634c,0x634c,0x634c,0x636c,0x634c,0x636c,0x5b2b,0x634c,0x6b8d,0x632b,0x636c,0x6b8d,0x634c,0x632c,0x634c,0x632c,0x634c,0x634c,0x634c,0x636c,0x634c,0x6b6d,0x634c,0x632c,0x632c,0x5b0b,0x5b0b,0x632c,0x52cb,0x5aeb,0x5b2c,0x52eb,0x5b0b,0x632c,0x5aeb,0x632c,0x5b4c,0x634c,0x52eb,0x52ca,0x5aeb,0x52eb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x52ea,0x632c,0x5aeb,0x630b,0x5b0b,0x5aeb,0x5aeb,0x52aa,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x630b,0x52eb,0x52ca,0x5b0b,0x5b0b,0x5acb,0x5aeb,0x5aeb,0x5aca,0x52ca,0x6b6c,0x632c,0x5acb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x632c,0x52ca,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x52eb,0x52eb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x52aa,0x528a,0x52ca,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x528a,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x52cb,0x52aa,0x5aeb,0x52ca,0x52aa,0x52aa,0x52aa,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52aa,0x52aa,0x5aeb,0x52cb,0x5b0b,0x52aa,0x5aeb, +0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52ca,0x5b0b,0x52ea,0x52aa,0x5aeb,0x52ea,0x52ca,0x5aea,0x52ca,0x52aa,0x52aa,0x52aa,0x4aaa,0x4a69,0x4a69,0x52a9,0x52aa,0x4268,0x4a69,0x4a69,0x4a69,0x52aa,0x4a89,0x4aa9,0x4a89,0x4a69,0x52ca,0x4269,0x4a89,0x52aa,0x52aa,0x52ca,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5aeb,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x636c,0x5b0b,0x52ea,0x634b,0x5b2b,0x632b,0x634b,0x5b2b,0x5b0b,0x5b0b,0x5aea,0x52ca,0x52aa,0x5aea,0x52ea,0x52ca,0x52ca,0x52ea,0x52ca,0x52aa,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x5b0b,0x5b0b,0x5aea,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x52ca,0x52ea,0x5b2b,0x5b2b,0x52ea,0x52eb,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b0b,0x530b,0x5b0b,0x634c,0x5b2b,0x530b,0x52ea,0x530b,0x5b0b,0x5b0b,0x52ca,0x52eb,0x634c,0x5b2b,0x5b0b,0x632c,0x5b0b,0x636c,0x5b4c,0x634c,0x632c,0x634c,0x5b2b,0x636c,0x5b0b,0x5b0b,0x5b4c,0x5b2b,0x634c,0x5b2b,0x5b4c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x530b,0x5b2b,0x634c,0x5b2b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ea,0x530b,0x5b2b,0x5b2b,0x52ca,0x5b2b,0x5b4c,0x5b2c,0x52ea,0x5b2b,0x5b2b,0x530b,0x5b2b,0x636c,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b2b,0x634c,0x5b0b,0x6b8d,0x6b6c,0x5b0b,0x634c,0x5b4c,0x5b4c,0x5b0b,0x634c,0x634c,0x636c,0x634c,0x634c,0x5b4c,0x636c,0x634c,0x632c,0x634c,0x636c,0x634c,0x636c,0x6b6d,0x632b,0x634c,0x634c,0x634c,0x634c,0x636c,0x634c,0x636c,0x634c,0x634c,0x634c,0x634c,0x632c,0x634c,0x636d,0x634c,0x5b2c,0x634c,0x638d,0x634c,0x632c,0x634c,0x634c,0x6b4c,0x6b6c,0x6b6d,0x634c,0x634c,0x6b6c,0x634c,0x632b,0x632c,0x5b2c,0x5b0b,0x5aeb,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x632c,0x632b,0x5b0b,0x632b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x632c,0x632c,0x632c,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5aca,0x52aa,0x5aeb,0x52eb,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5aca,0x5aeb,0x632b,0x5aeb,0x5aeb,0x5aeb,0x5aca,0x5b0b,0x634c,0x5aeb,0x5aeb,0x630b,0x5aeb,0x52ca,0x5aeb,0x5aea,0x5b0b,0x5b2b,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aca,0x632c,0x5aeb,0x5aca,0x632c,0x5b0b,0x5aeb,0x52aa,0x52ca,0x52ca,0x52aa,0x5aeb,0x5b0b,0x52aa,0x52aa,0x5aca,0x5aeb,0x5aeb,0x52ca,0x632c,0x52aa,0x5aeb,0x52aa,0x528a,0x630b,0x630b,0x52aa,0x5aca,0x632c,0x52aa,0x52aa,0x5aeb, +0x5aeb,0x52aa,0x528a,0x5aca,0x52cb,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52aa,0x52ca,0x5aea,0x52ca,0x52aa,0x52aa,0x52ca,0x4aaa,0x4a69,0x4aaa,0x5aca,0x4a69,0x4248,0x4a69,0x4a69,0x4228,0x4228,0x4269,0x4a68,0x4a48,0x52aa,0x4a69,0x4248,0x4a69,0x52aa,0x5b0b,0x5aca,0x52ca,0x634c,0x632c,0x634c,0x632b,0x4a89,0x5aeb,0x52ea,0x52ca,0x5b0b,0x5aeb,0x5b0b,0x634c,0x636c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5aea,0x5aea,0x5b0b,0x5b0b,0x4aaa,0x52ca,0x52ca,0x5aea,0x52ea,0x52ca,0x52ea,0x5aea,0x52ca,0x5aeb,0x52ea,0x52ea,0x52eb,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x632c,0x6b6c,0x5b2b,0x5aea,0x52eb,0x52eb,0x5b0b,0x634b,0x634b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52eb,0x52eb,0x5b2c,0x634c,0x5b2b,0x632b,0x634c,0x5b0b,0x636c,0x5b4c,0x5b2b,0x5b0b,0x5b4c,0x636c,0x634c,0x638d,0x634c,0x634c,0x636c,0x5b2b,0x636c,0x636c,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b4c,0x5b2b,0x636c,0x5b2c,0x5aeb,0x634c,0x636c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x636c,0x634c,0x634c,0x634c,0x530b,0x5b0b,0x5b2c,0x5b2b,0x5b2b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x634c,0x634c,0x5b2b,0x634c,0x636c,0x5b0b,0x5b2c,0x5b2b,0x636c,0x636c,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5b2c,0x634c,0x636c,0x6b6d,0x5b0b,0x632c,0x5b2c,0x632c,0x5b2c,0x632c,0x634c,0x632c,0x632c,0x5b2b,0x5b2b,0x5aeb,0x632b,0x5b0b,0x5b0b,0x5b2c,0x6b8d,0x632b,0x634c,0x632c,0x632c,0x632c,0x634c,0x634c,0x634c,0x636c,0x634c,0x634c,0x6b4c,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b2c,0x632c,0x5aeb,0x634c,0x632c,0x634c,0x632c,0x5b0b,0x632c,0x634c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b2c,0x630b,0x630b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x630b,0x630b,0x634c,0x630b,0x5aeb,0x5aca,0x52aa,0x5aeb,0x5aeb,0x5b2c,0x52ca,0x5aeb,0x52aa,0x52aa,0x5acb,0x52aa,0x52ca,0x52ca,0x52ca,0x528a,0x5aeb,0x5aca,0x5b0b,0x5aeb,0x5aca,0x52aa,0x5aeb,0x5aeb,0x5aca,0x52ca,0x52ca,0x5b0b,0x52aa,0x52aa,0x5aeb,0x52ca,0x52ca,0x52ca,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5acb,0x5aca,0x52aa,0x5aeb,0x52ca,0x52ca,0x52aa,0x5aeb,0x636d,0x5aeb,0x52aa,0x5aeb,0x5aeb,0x5b0b,0x6b4d,0x52aa,0x5aca,0x5aca,0x5acb,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52aa,0x528a, +0x634c,0x634c,0x5b2c,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x5b2b,0x5b2c,0x6b8d,0x632c,0x5b0b,0x5b0b,0x5aeb,0x5aea,0x5b0b,0x634c,0x5b0b,0x4aca,0x632c,0x5aea,0x5aeb,0x5b0b,0x5b2b,0x4aa9,0x4a89,0x4aaa,0x52ca,0x52ca,0x530b,0x52ea,0x5aeb,0x5b0b,0x52aa,0x4a89,0x52ca,0x52ca,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x632b,0x5b0b,0x530b,0x52ea,0x530b,0x5b0b,0x5b0b,0x636c,0x636c,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52aa,0x5b0b,0x636c,0x5b0b,0x5b2c,0x52ea,0x52eb,0x52ea,0x530b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x634c,0x52ea,0x5b4c,0x634c,0x4aca,0x5b4b,0x530a,0x52ea,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2c,0x52ca,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x52ca,0x5b4b,0x52eb,0x5b2c,0x5b0b,0x52eb,0x5b4c,0x5b2b,0x530b,0x52ea,0x5b0b,0x530b,0x52ea,0x5b2b,0x5b2b,0x4aca,0x52ca,0x5b2b,0x5b0b,0x632c,0x632b,0x52ca,0x5b0b,0x52ca,0x52ea,0x5b2c,0x52eb,0x52ea,0x52ea,0x530b,0x638d,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x530b,0x530b,0x5b2b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x5b4c,0x5b2c,0x52eb,0x634c,0x5b0b,0x5b0b,0x636c,0x5b2b,0x5b2b,0x634c,0x5b2c,0x5b2b,0x5b2b,0x5b0b,0x530b,0x5b0b,0x632c,0x5b4c,0x530b,0x52ea,0x634c,0x632c,0x52ea,0x52ea,0x5b2c,0x632c,0x5b2b,0x5b0b,0x5b2c,0x5b2b,0x634c,0x6b6c,0x636c,0x5b0b,0x634c,0x6b6c,0x636c,0x530b,0x5b2c,0x634c,0x638c,0x632c,0x6bad,0x636c,0x6b8d,0x636c,0x634c,0x636c,0x634c,0x636c,0x5b4c,0x5b2b,0x6b8d,0x636d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x634c,0x636d,0x638d,0x6b8d,0x638d,0x6b8d,0x7bee,0x73ce,0x73ee,0x73ee,0x6b8d,0x73ae,0x634d,0x636d,0x634c,0x634c,0x632c,0x636c,0x6b8d,0x5b2b,0x5b2b,0x634c,0x6b8d,0x6b6d,0x73ae,0x6b6d,0x632c,0x634c,0x6b8d,0x73ae,0x634c,0x634c,0x636d,0x634c,0x632c,0x634c,0x6b6d,0x6b6d,0x6b6d,0x636d,0x634c,0x73ce,0x6b6d,0x634c,0x634c,0x632b,0x5b0b,0x630b,0x738d,0x6b4c,0x6b6d,0x52aa,0x632b,0x630b,0x634c,0x6b6d,0x630b,0x5aeb,0x632c,0x52eb,0x5aeb,0x5aeb,0x630b,0x5b0b,0x5aeb,0x5aeb,0x632c,0x632c,0x632b,0x632c,0x5aeb,0x632c,0x632c,0x52ca,0x5aeb,0x5aeb,0x630c,0x632c,0x632c,0x52aa,0x52aa,0x5aeb,0x52ca,0x5b0b,0x52aa,0x632c,0x6b6d,0x5b0c,0x5aeb,0x5aeb,0x52aa,0x528a,0x52cb,0x5aeb,0x52cb,0x4a89,0x52aa,0x6b4d,0x634d,0x5aeb,0x5b0c,0x52cb,0x4a6a,0x52ab, +0x6bce,0x740e,0x740e,0x740f,0x73ef,0x73ee,0x73ce,0x73ee,0x6bce,0x73ee,0x73ee,0x73ce,0x73ee,0x73ef,0x73ce,0x6b8d,0x73ce,0x73ee,0x6bce,0x6bad,0x6bad,0x6b8d,0x6b8d,0x6bae,0x6b8d,0x638d,0x636d,0x636d,0x636d,0x5b2b,0x636c,0x6bce,0x5b4c,0x5b4c,0x634c,0x636c,0x6b8d,0x73ce,0x638d,0x636c,0x638d,0x636d,0x5b2b,0x6bad,0x636c,0x530b,0x634c,0x5b2c,0x5b2c,0x5b2c,0x52ea,0x5b2b,0x5b0b,0x5b2c,0x5b4c,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x52eb,0x530b,0x52ea,0x52ea,0x52ea,0x5b0b,0x52ca,0x5b0b,0x530b,0x4aaa,0x52ea,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x4289,0x52eb,0x4a69,0x52aa,0x4aa9,0x4a89,0x52ca,0x52ca,0x52ea,0x5b2b,0x4aa9,0x52ea,0x52ca,0x5b2b,0x530b,0x4a69,0x4a89,0x52aa,0x4a89,0x4aaa,0x52ca,0x52ca,0x4269,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x52ca,0x4a69,0x52ca,0x52ca,0x4ac9,0x4ac9,0x52ca,0x52ca,0x4269,0x4a89,0x4289,0x4a69,0x4a69,0x4a89,0x52ca,0x5aeb,0x52ca,0x4aca,0x4a89,0x4269,0x4a69,0x4228,0x5b0b,0x52ea,0x4aa9,0x4aaa,0x52ca,0x52eb,0x4269,0x4269,0x4268,0x4248,0x52ca,0x52aa,0x4a89,0x52eb,0x4aaa,0x4aaa,0x4a89,0x52ca,0x52ca,0x52ca,0x5b0b,0x4aa9,0x52eb,0x4aa9,0x4a89,0x5aeb,0x4aaa,0x52ea,0x4a89,0x4a8a,0x52ca,0x5b0c,0x5aeb,0x52ca,0x634c,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x4a89,0x4a69,0x52eb,0x5b0b,0x52ca,0x634c,0x634c,0x5b0b,0x52eb,0x52ca,0x5aeb,0x4289,0x5b2c,0x5aeb,0x5b0b,0x5aeb,0x5b2b,0x52eb,0x634c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x52ca,0x5b2c,0x6b6d,0x5aeb,0x5b0b,0x5b2b,0x6b6d,0x5aeb,0x5b2b,0x636c,0x6b6d,0x6b6d,0x73ae,0x6b8d,0x636d,0x5b2c,0x634c,0x73ef,0x6b6d,0x6b6d,0x634c,0x6b8d,0x6b8d,0x6bad,0x73ce,0x6b8d,0x7c2f,0x6b8d,0x73ce,0x73ef,0x6bad,0x8450,0x73ef,0x73ce,0x73ef,0x73ce,0x7c0f,0x7bef,0x6bae,0x6b6d,0x6b6d,0x7bef,0x7c0f,0x7c0f,0x73ee,0x73ce,0x73ef,0x73ef,0x7bef,0x73ce,0x636c,0x7c0f,0x94b1,0x8c50,0x842f,0x7bef,0x8c91,0x7c0f,0x7bee,0x8450,0x7c0f,0x8450,0x8cb1,0x94d2,0x94b1,0x9cd2,0x94b2,0x8c71,0x8c51,0x8c71,0x8c71,0x9cd2,0x94b2,0x94b1,0x8c71,0x94b2,0x8c50,0x8450,0x8c71,0x8c91,0x8c71,0x8450,0x8430,0x8450,0x7c0f,0x8430,0x8c71,0x8c71,0x7c10,0x8c91,0x94b2,0x94d2,0x9cf3,0x8c91,0x9cd3,0x8430,0x840f,0x94b2,0x9d14,0x8c91,0x8450,0x8cb1,0xa534,0x8450,0x8c71,0x9cd2,0x94b2,0x9492,0x8c71,0xa534,0x94b2,0x94b2,0x8451,0x8410,0x8c91,0x9d13,0x8451,0x8430,0x94d2,0x8c51,0x8430,0x8c91,0x7bef,0x94b2,0x94d2,0x8c71,0x8450,0x8430, +0x31e7,0x31c6,0x31c6,0x31c7,0x31c6,0x31c6,0x31c6,0x31c6,0x3a07,0x3a07,0x31c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x31c6,0x31a6,0x31a6,0x39e7,0x2985,0x31c6,0x31c6,0x31a6,0x2144,0x31c6,0x31a6,0x31c7,0x31c6,0x2965,0x2986,0x31c6,0x2965,0x2986,0x2985,0x31c6,0x31a6,0x39c6,0x2985,0x2986,0x2986,0x2985,0x2985,0x2965,0x31a6,0x2965,0x2965,0x2144,0x2124,0x3186,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x2104,0x2986,0x2985,0x2124,0x2124,0x2124,0x2965,0x2144,0x2103,0x2144,0x2104,0x2104,0x18e3,0x2145,0x2144,0x2104,0x2124,0x2124,0x2124,0x1903,0x18e3,0x2104,0x2144,0x2124,0x2144,0x18c3,0x1903,0x1903,0x2104,0x18e3,0x10c2,0x2124,0x2104,0x1903,0x2144,0x2104,0x2144,0x2124,0x2104,0x2965,0x2124,0x2945,0x2965,0x2165,0x2144,0x2165,0x2104,0x2104,0x2124,0x2104,0x2945,0x2945,0x18e3,0x2945,0x2124,0x2985,0x2124,0x18e3,0x2985,0x18e3,0x1903,0x2145,0x1903,0x1903,0x2144,0x2944,0x2144,0x2104,0x2104,0x2144,0x2144,0x1903,0x18c3,0x2145,0x2944,0x2124,0x2124,0x2124,0x18e3,0x2124,0x1903,0x2103,0x2104,0x1903,0x2124,0x2965,0x2965,0x2965,0x2144,0x18c2,0x2965,0x2945,0x2104,0x2124,0x2965,0x2965,0x2124,0x18e3,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2965,0x2144,0x2965,0x2144,0x2985,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x2965,0x2145,0x2124,0x2965,0x2945,0x3185,0x2124,0x2985,0x2945,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965,0x2124,0x39c7,0x2144,0x3186,0x2965,0x2945,0x2124,0x2945,0x2144,0x2945,0x2124,0x2124,0x2144,0x2965,0x2965,0x2985,0x2124,0x2945,0x2124,0x39e7,0x2124,0x2124,0x2104,0x1904,0x2945,0x2124,0x31c6,0x2945,0x3186,0x3186,0x2985,0x2965,0x2985,0x31a6,0x2945,0x2104,0x2965,0x2124,0x31a6,0x31a6,0x31a6,0x2124,0x31c7,0x39e7,0x2965,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31c6,0x31c6,0x2985,0x31a6,0x31a6,0x3185,0x39c6,0x39c6,0x39e7,0x31a6,0x31c6,0x39e7,0x31a6,0x31e7,0x4248,0x4a48,0x4a49,0x39e7,0x4207,0x4a49,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x632b,0x52ca,0x6b6d,0x632c,0x4a69,0x4228,0x4a89,0x52cb,0x52ca,0x52aa,0x5aeb,0x528a,0x52cb,0x52ca,0x5b0c,0x52ca,0x5b0b,0x5b0b,0x630c,0x6b4d,0x5acb,0x73ae,0x528a,0x5aeb,0x632c,0x632c,0x6b6d,0x5aeb,0x634c,0x7bef,0x7bef,0x73ae,0x7bef,0x840f,0x7bcf,0x7bce,0x840f,0x7bcf,0x5aca,0x738e,0x6b6d,0x6b8d,0x73ce,0x6b4c,0x73ae,0x8430,0x73ae,0x7bce,0x73ae,0x738e,0x9491,0x8430,0x7bef,0x8c50,0x7bee, +0x0840,0x0861,0x1082,0x0861,0x1082,0x0861,0x0841,0x0821,0x0020,0x0841,0x0861,0x0841,0x0000,0x1082,0x0841,0x0861,0x0840,0x0862,0x0861,0x0821,0x0841,0x0841,0x0820,0x0841,0x10a2,0x0821,0x1062,0x0861,0x0840,0x1082,0x10a2,0x0841,0x0861,0x0861,0x1082,0x0841,0x0841,0x0820,0x0000,0x0841,0x0861,0x1082,0x1082,0x1062,0x0820,0x0861,0x1061,0x1082,0x0861,0x0841,0x0861,0x1081,0x0861,0x1061,0x0861,0x0840,0x1082,0x1061,0x0840,0x0861,0x0861,0x1061,0x0861,0x0861,0x1081,0x10a2,0x0861,0x10a2,0x18c2,0x10a2,0x1081,0x10a2,0x10a2,0x0861,0x1082,0x1082,0x10c2,0x1082,0x1082,0x0861,0x0840,0x0841,0x10a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x0861,0x0861,0x1082,0x1061,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0040,0x0861,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x0881,0x0861,0x10a2,0x0840,0x0840,0x0841,0x0841,0x1082,0x0841,0x1081,0x0861,0x0861,0x1082,0x1081,0x0840,0x0841,0x0861,0x0881,0x10a2,0x1082,0x0861,0x0861,0x1082,0x0861,0x0881,0x0881,0x0861,0x1082,0x1062,0x0841,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x1062,0x0861,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x1062,0x0841,0x0841,0x1082,0x0861,0x0841,0x0861,0x1081,0x1082,0x0862,0x0861,0x0861,0x1081,0x0861,0x0840,0x0861,0x0841,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1081,0x10a2,0x1082,0x0841,0x10a2,0x0841,0x10a2,0x10a2,0x0000,0x0841,0x10a2,0x0861,0x0881,0x1081,0x1082,0x0821,0x10a2,0x0862,0x0861,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0840,0x18c2,0x1082,0x1082,0x0841,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x0861,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18c3,0x10a2,0x1082,0x1081,0x18c3,0x10a2,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0861,0x1082,0x1082,0x0861,0x10a2,0x0841,0x0882,0x0021,0x0862,0x0862,0x0821,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x39c7,0x39e7,0x39e7,0x4208,0x4208,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x4228,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x4228,0x3a07,0x31c6,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x4228,0x39e7,0x4228,0x4248,0x4228,0x4a69,0x4249,0x4248,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4a69,0x4228,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x3a08,0x4248,0x3a07,0x4228,0x39e7,0x3a07,0x3a28,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x4208,0x4207,0x3a07,0x3a07,0x3a27,0x39e7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x39e7,0x3a07,0x4248,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x4228,0x39e7,0x3a28,0x3a07,0x31e7,0x4248,0x4268,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x4a48,0x3a07,0x4248,0x4248,0x4248,0x4248,0x39e7,0x4248,0x4228,0x4208,0x3a08,0x3a07,0x3a28,0x4248,0x3a28,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x4228,0x4249,0x4228,0x4248,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4228,0x4228,0x4269,0x4a49,0x4a48,0x4a48,0x4248,0x4228,0x4228,0x4208,0x4208,0x4228,0x3a07,0x4248,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4a68,0x4a49,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a48,0x4208,0x4228,0x4248,0x4248,0x5289,0x4a49,0x4228,0x4208,0x4228,0x4228,0x4228,0x3a07,0x4207,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a07,0x39e7,0x4208,0x4228,0x4208,0x3a07,0x4208,0x4228,0x4207,0x3a07,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4208,0x3a07,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a6,0x31a6,0x39c7,0x3186,0x3186,0x3186, +0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a28,0x3a28,0x3a28,0x4228,0x3a07,0x4228,0x4228,0x4248,0x3a07,0x3a28,0x4228,0x4228,0x4228,0x4228,0x3a27,0x4228,0x4a69,0x4228,0x3a07,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4228,0x4228,0x4a69,0x4268,0x4268,0x4a69,0x4269,0x4269,0x4a69,0x4228,0x4248,0x4248,0x4248,0x4aaa,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4269,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4269,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x3a28,0x4268,0x4248,0x4248,0x4a89,0x3a28,0x3a28,0x4248,0x4a89,0x4a69,0x4a69,0x4a89,0x4268,0x4aa9,0x52ca,0x4aa9,0x4a89,0x4a89,0x4248,0x4a69,0x4a89,0x4248,0x4248,0x4269,0x4a89,0x52ca,0x4a89,0x4228,0x4a89,0x4a89,0x4268,0x4248,0x4268,0x4a89,0x4aa9,0x52aa,0x4268,0x4a89,0x4269,0x4268,0x4a89,0x4289,0x4268,0x4aca,0x4a89,0x4269,0x4269,0x4a69,0x4a69,0x4a69,0x4248,0x4269,0x4a89,0x4269,0x4a89,0x4268,0x4aa9,0x4a89,0x4aaa,0x4a89,0x4aa9,0x4aa9,0x4a69,0x4aaa,0x4269,0x4248,0x4a89,0x4a89,0x4a89,0x4a89,0x4248,0x4aaa,0x52ca,0x4268,0x4269,0x4a89,0x52ca,0x4a69,0x4aaa,0x4a89,0x4269,0x52ca,0x4a69,0x4248,0x4aa9,0x4ac9,0x4aa9,0x4a89,0x52ca,0x52ca,0x4a89,0x4a89,0x4a89,0x4aaa,0x4a89,0x530b,0x4a89,0x4268,0x4269,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x4269,0x4a89,0x4aa9,0x4a89,0x4a69,0x4a89,0x4a89,0x4269,0x4a69,0x4269,0x4aa9,0x4a89,0x4248,0x4a89,0x4a69,0x4269,0x4a8a,0x4a89,0x4248,0x5aeb,0x4aaa,0x4269,0x4a69,0x4a69,0x4269,0x4a69,0x4a89,0x4269,0x4269,0x4a69,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4a69,0x4a89,0x4269,0x4a89,0x4a89,0x4aaa,0x4a69,0x4a89,0x4a89,0x4269,0x4a69,0x4a89,0x4249,0x4248,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x52eb,0x4a69,0x4a89,0x4248,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4a89,0x4a8a,0x4248,0x4a69,0x4248,0x4248,0x4a49,0x4a69,0x4a49,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a89,0x52aa,0x4a89,0x4a69,0x4a89,0x4228,0x4249,0x4a69,0x4228,0x4228,0x4228,0x4248,0x4a69,0x4a49,0x4228,0x4228,0x4248,0x4208,0x4228,0x4228,0x4a48,0x4a69,0x4a69,0x4a49,0x4a69,0x4a48,0x4228,0x4228,0x4a49,0x4249,0x4a49,0x4a49,0x4248,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x4a89,0x4249,0x4a49,0x4228,0x4228,0x4a69,0x4a69,0x4a49,0x4a48,0x4a69,0x4a49, +0x3a07,0x4208,0x4207,0x4228,0x4a69,0x4228,0x3a07,0x4a69,0x4208,0x39e7,0x4228,0x4208,0x4208,0x4a69,0x4248,0x52a9,0x3a07,0x4208,0x4228,0x3a07,0x39e7,0x4a69,0x4248,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4a68,0x4207,0x39e7,0x4208,0x39e7,0x4a89,0x4228,0x4228,0x4a89,0x4a69,0x4228,0x4228,0x4228,0x4248,0x4227,0x4248,0x4a89,0x3a07,0x52aa,0x4a69,0x39e7,0x4228,0x4228,0x4228,0x4248,0x4228,0x4248,0x4248,0x4a49,0x4228,0x3a07,0x4a69,0x4228,0x3a08,0x4228,0x4248,0x52aa,0x4227,0x4228,0x4a49,0x4a69,0x4248,0x3a07,0x39e7,0x39e7,0x4228,0x4a68,0x52aa,0x4a89,0x4a69,0x4a69,0x4248,0x4248,0x4228,0x3a07,0x4a89,0x4a89,0x4227,0x4248,0x3a07,0x4248,0x4a89,0x4268,0x4a68,0x4a69,0x4a89,0x4207,0x4a69,0x4aa9,0x4248,0x4268,0x4a89,0x4aaa,0x4249,0x4269,0x4a69,0x4a69,0x4248,0x4a89,0x4a69,0x4a68,0x4a89,0x4268,0x4248,0x4a69,0x3a07,0x4a69,0x4248,0x4248,0x4228,0x4a89,0x4268,0x52a9,0x4a69,0x4aa9,0x52ca,0x4a69,0x4a89,0x4268,0x4228,0x4269,0x4aaa,0x4a89,0x4a89,0x4a89,0x4a69,0x4248,0x4a89,0x4a68,0x4a69,0x4a89,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4aaa,0x52ca,0x4aa9,0x4248,0x52aa,0x4aa9,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4248,0x4a89,0x52aa,0x4a89,0x4268,0x4a89,0x4a69,0x4a69,0x4a89,0x4a89,0x4248,0x4249,0x4269,0x4228,0x4248,0x4269,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x3a28,0x4228,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4228,0x3a08,0x4a69,0x4268,0x4228,0x4228,0x4228,0x4269,0x4228,0x4228,0x4208,0x4a69,0x4aaa,0x4228,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4208,0x4228,0x4207,0x4228,0x4228,0x4248,0x4228,0x4228,0x4208,0x39e7,0x4a69,0x52aa,0x4228,0x4248,0x528a,0x3a07,0x4a48,0x52a9,0x4208,0x4a89,0x52aa,0x4248,0x4248,0x3a08,0x3a07,0x4228,0x4248,0x4207,0x4228,0x4228,0x4228,0x4208,0x4208,0x3a08,0x4208,0x39e7,0x4208,0x4248,0x4248,0x4a69,0x4a48,0x3a07,0x4a48,0x4a49,0x4a48,0x4248,0x4228,0x4228,0x4a69,0x4248,0x4a69,0x4249,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4a69,0x4a89,0x4248,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a89,0x4228,0x4a89,0x5289,0x4a69, +0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x31a6,0x39e7,0x4207,0x4228,0x3a07,0x4228,0x3a07,0x4207,0x39e6,0x3a07,0x4248,0x39e7,0x39e7,0x3a27,0x39e7,0x39e7,0x4228,0x3a07,0x4228,0x3a07,0x2985,0x31c6,0x3a07,0x4228,0x4248,0x3a07,0x4228,0x4a69,0x3a07,0x4a69,0x4a89,0x4248,0x3a27,0x3a07,0x4228,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x4228,0x4248,0x4207,0x31c6,0x3a07,0x4228,0x3a27,0x3a07,0x4228,0x4227,0x4228,0x3a07,0x4228,0x4a48,0x3a07,0x4248,0x4a68,0x39e7,0x39e7,0x4228,0x4248,0x3a27,0x3a07,0x39e6,0x39e7,0x4228,0x39e7,0x4248,0x4248,0x4248,0x3a27,0x4a69,0x4268,0x4248,0x4a68,0x31e6,0x4227,0x4a69,0x4248,0x4248,0x3a07,0x4a69,0x3a27,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x4268,0x3a07,0x39e7,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x4248,0x3a27,0x3a07,0x4228,0x3a28,0x3a27,0x3a07,0x3a07,0x3a07,0x4248,0x3a07,0x3a07,0x39e7,0x4248,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x4268,0x3a07,0x3a28,0x3a27,0x4248,0x4228,0x3a07,0x4248,0x3a07,0x3a07,0x4227,0x4248,0x4248,0x3a27,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4227,0x4248,0x3a07,0x3a07,0x3a28,0x4248,0x4248,0x4228,0x3a07,0x39e7,0x4248,0x3a27,0x3a27,0x3a07,0x3a27,0x4227,0x4247,0x4248,0x3a07,0x31c6,0x4228,0x31e6,0x3a07,0x3a07,0x39e7,0x4228,0x4227,0x3a07,0x4248,0x3a28,0x4228,0x4228,0x39e7,0x4228,0x39e7,0x4228,0x3a07,0x4208,0x3a07,0x3a28,0x3a07,0x4228,0x4227,0x39e7,0x4228,0x3a07,0x3a07,0x4227,0x4228,0x3a07,0x3a07,0x3a07,0x3a28,0x4228,0x3a28,0x39e7,0x4208,0x3a07,0x4228,0x39e7,0x3a07,0x4228,0x4248,0x4248,0x31a6,0x4207,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x3a07,0x4228,0x31c6,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x31a6,0x31c6,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x31c7,0x31c7,0x39e7,0x31c7,0x4208,0x39e7,0x39c7,0x31a6,0x39c7,0x3a07,0x39e7,0x39e7,0x39c6,0x31a6,0x39e7,0x31a6,0x39e7,0x4228,0x3a07,0x39c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c6,0x39e7,0x31a6,0x2985,0x2985,0x31a6,0x2965,0x3186,0x3186,0x39c6,0x31a6,0x2965,0x31a6,0x3185,0x2985,0x31c6,0x3186,0x3185,0x31a6,0x31a6,0x31a6,0x3185,0x2965,0x2965,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x2985,0x31a6,0x31c6,0x2985,0x3186,0x2965,0x3186,0x39c7,0x31a6,0x2986,0x31a6,0x31a6,0x39c6,0x31c6,0x2985,0x2985,0x31a6,0x31a6,0x39e7,0x39e7, +0x5aeb,0x52ca,0x52ca,0x5aeb,0x5aeb,0x52ca,0x52aa,0x5b0b,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x52ca,0x632c,0x5aeb,0x5b0b,0x634c,0x634c,0x634c,0x6b6c,0x632b,0x5b0b,0x5aeb,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x634c,0x634c,0x634c,0x632c,0x634c,0x636c,0x6b8d,0x632b,0x5b2b,0x5b0b,0x5b0b,0x632c,0x632c,0x634c,0x5b2b,0x5aeb,0x5b2b,0x5b0b,0x5b2b,0x5b2c,0x636c,0x634c,0x634c,0x5b2b,0x5b2b,0x636c,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x530b,0x5b2b,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b0b,0x636c,0x634c,0x634c,0x632c,0x636c,0x5b2b,0x634c,0x638d,0x5b2b,0x5b0b,0x634c,0x636c,0x5b0b,0x632b,0x5b2b,0x634c,0x636c,0x52ea,0x634c,0x634c,0x634b,0x5b2b,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x632b,0x632c,0x634c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x634c,0x636c,0x5b4c,0x5b0b,0x5b0b,0x73ce,0x636c,0x530b,0x636c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x634c,0x634c,0x636c,0x5b2b,0x634c,0x6b8d,0x636c,0x6b8d,0x6b8d,0x634c,0x5b2b,0x634c,0x634c,0x636c,0x638d,0x5b2b,0x5b2c,0x5b0b,0x634c,0x5b2c,0x5b2c,0x634c,0x6b6d,0x5b2b,0x636c,0x632c,0x634c,0x634c,0x5b2c,0x5b0b,0x5b2b,0x636c,0x636c,0x5aea,0x5b2b,0x634c,0x634c,0x6b8c,0x5b4c,0x634c,0x634c,0x634c,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x5b0b,0x5b2b,0x634c,0x634c,0x636c,0x634c,0x6b8d,0x6b8d,0x5b2c,0x634c,0x634c,0x634c,0x636d,0x5b0b,0x632c,0x5b0b,0x5b0b,0x634c,0x5b2c,0x5b2c,0x634c,0x634c,0x634c,0x5b0b,0x634c,0x636c,0x634c,0x636d,0x634c,0x632c,0x634c,0x634c,0x634c,0x5b0c,0x5b0b,0x5b0b,0x6b8d,0x6b8d,0x5b0b,0x632c,0x632c,0x634c,0x5b2c,0x632c,0x634c,0x632c,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0c,0x5b2c,0x5aeb,0x5b2c,0x5b0b,0x5b0b,0x5b0c,0x5aeb,0x5b2b,0x636d,0x5b0b,0x5aeb,0x632c,0x634c,0x634c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x5aeb,0x632c,0x5b0b,0x632c,0x5b2c,0x5aeb,0x5aeb,0x5aeb,0x632b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x630b,0x632c,0x52ca,0x5aeb,0x632c,0x634c,0x630b,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x52ca,0x5aca,0x5aeb,0x52ca,0x4a89,0x52aa,0x528a,0x528a,0x5aeb,0x52aa,0x52aa,0x528a,0x52aa,0x52cb,0x5aeb,0x52aa,0x52aa,0x52aa,0x5acb,0x52aa,0x4a69,0x52aa,0x52a9,0x5b0a,0x5aeb,0x4a8a,0x4a8a,0x4a69,0x52cb,0x52aa,0x4228,0x528a,0x52aa,0x4a69,0x528a,0x528a,0x4a69,0x4a8a,0x528a,0x4a69,0x528a,0x52aa,0x4a49, +0x52ca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ea,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x632b,0x632c,0x5aeb,0x5b2b,0x6b6c,0x632b,0x5aeb,0x5b2c,0x5b0b,0x5b2b,0x5aea,0x52ca,0x52ca,0x52ca,0x52ca,0x5b0b,0x5aeb,0x5b2b,0x52ea,0x52ea,0x5b0b,0x5aeb,0x52a9,0x52ea,0x52ca,0x5b0b,0x5aeb,0x52eb,0x52eb,0x5b2b,0x5b0b,0x52ca,0x52eb,0x5b0b,0x5aeb,0x5b0b,0x52ea,0x52eb,0x5b2c,0x5b0b,0x5b0a,0x5aeb,0x52ca,0x52ea,0x52ea,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x52eb,0x5aeb,0x5b0b,0x5aeb,0x52ea,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x52ea,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x530b,0x5aeb,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ca,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x5b4c,0x5b2b,0x5b4c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52ea,0x52ca,0x5b0b,0x52ca,0x5b0b,0x5b4b,0x5b2b,0x5b0b,0x530b,0x4aa9,0x52ca,0x632c,0x5b0b,0x5b0b,0x634c,0x5b0b,0x530a,0x5b4b,0x52eb,0x530b,0x52ea,0x5b0b,0x5b2c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x634c,0x636c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x5b4c,0x5b2c,0x5b2c,0x5b0b,0x632c,0x5b4c,0x634c,0x634c,0x5b0b,0x634c,0x5b2c,0x5b2b,0x5b2b,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x52eb,0x634c,0x5b2b,0x52eb,0x5b2b,0x634c,0x634c,0x5aeb,0x5b0b,0x5b0b,0x634c,0x5b4c,0x5b2b,0x5b2b,0x636c,0x5b2b,0x632b,0x634c,0x5b2b,0x5b2b,0x634c,0x5b2c,0x634c,0x5b2c,0x5aeb,0x632c,0x5b2c,0x5b2b,0x5b2b,0x5b2c,0x52eb,0x632c,0x636d,0x634c,0x5b0b,0x632c,0x5b2b,0x632c,0x5b0b,0x634c,0x632c,0x5b2c,0x632c,0x5b0b,0x634c,0x634c,0x5b2c,0x5aeb,0x5b0b,0x634c,0x634c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2c,0x52eb,0x5b0b,0x632c,0x5b2c,0x5aeb,0x5b2c,0x5b0b,0x634c,0x634c,0x5aeb,0x632c,0x634c,0x5b2b,0x52ea,0x5b0b,0x5aeb,0x632c,0x6b4c,0x632c,0x634c,0x632c,0x634c,0x632c,0x632c,0x52ca,0x5b0b,0x634c,0x632c,0x632c,0x632b,0x5b0b,0x632c,0x632c,0x634c,0x5b0b,0x5b2c,0x632c,0x632c,0x632c,0x632b,0x632c,0x632b,0x5b2b,0x632c,0x632c,0x6b6d,0x632b,0x5b0b,0x634c,0x634c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x52ea,0x632b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0c,0x634c,0x6b4c,0x630b,0x52ca,0x5b0c,0x5aeb,0x5aeb,0x52ca,0x52ca,0x5b0b,0x632c,0x52ca,0x5aeb,0x632c,0x630b,0x5b0b,0x5b0b,0x5b2b,0x632c,0x52aa,0x5aeb,0x632c,0x634c,0x632c,0x52ca,0x5b0b,0x632c,0x632c,0x630b,0x52ca,0x634d,0x6bae,0x5aeb,0x5b2c,0x6b6d,0x6b6d,0x5aeb, +0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b0b,0x5aea,0x636c,0x634c,0x5b0b,0x630b,0x632c,0x52ea,0x5b0b,0x5b0b,0x6b6c,0x636c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x632b,0x634c,0x5b0b,0x5b2b,0x52ea,0x52ca,0x5aeb,0x5b2b,0x5b0b,0x52ca,0x52ca,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x52ea,0x5b2b,0x5aeb,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x52ca,0x52ca,0x5b2b,0x5b2b,0x52ea,0x632b,0x5b2b,0x52ea,0x5b2c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b0b,0x5aea,0x5b0b,0x52eb,0x530b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x52aa,0x52ca,0x52ca,0x52ca,0x5b0b,0x530b,0x5b0b,0x5b0b,0x636c,0x5b2b,0x5b2b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x52aa,0x52ca,0x5b0b,0x5b2b,0x634c,0x634c,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x6b8c,0x4a89,0x634c,0x5b4c,0x52ca,0x52ea,0x5aea,0x5aeb,0x5b4c,0x5b4b,0x5b4b,0x52ea,0x52ea,0x5b0b,0x5b0b,0x636c,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x5b4c,0x52ea,0x5b0b,0x52ea,0x5b2b,0x634c,0x52ea,0x632c,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x530a,0x5b0b,0x5b0b,0x5b2b,0x530b,0x530b,0x530b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2c,0x5b2c,0x636c,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x632c,0x52ca,0x5b0b,0x634c,0x5b2b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x52ca,0x632c,0x5b0b,0x530b,0x5b2c,0x5b2c,0x5b2c,0x634c,0x5b0b,0x634c,0x5b2b,0x632c,0x634c,0x5b2b,0x5b2c,0x5b0b,0x5b0b,0x634c,0x632c,0x634c,0x5b2c,0x6b6d,0x5b2c,0x5aeb,0x5b0b,0x5b0b,0x634c,0x634c,0x5b0b,0x5b0b,0x632c,0x632c,0x634c,0x632c,0x5b0b,0x5b0c,0x636d,0x632c,0x632c,0x634c,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5aeb,0x632c,0x632c,0x5b2c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x634c,0x636d,0x634c,0x6b6d,0x632c,0x634c,0x5b0b,0x5aeb,0x5b0b,0x634c,0x6b6d,0x632c,0x6b4c,0x632c,0x634c,0x632b,0x6b4c,0x634c,0x6b6d,0x632c,0x6b8d,0x6b8d,0x634c,0x632c,0x6b4c,0x6b6c,0x6b4c,0x632b,0x630b,0x5b0b,0x5b0b,0x6b6c,0x634c,0x630b,0x630b,0x52ca,0x5aeb,0x5aeb,0x52ca,0x52ca,0x52ca,0x5aca,0x5aeb,0x5b0c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52ca,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x5aeb,0x52aa,0x5b0b,0x634c,0x52aa,0x5b0c,0x632c,0x52ca,0x632c,0x632c,0x52ca,0x634c,0x5b0b,0x5acb,0x630b,0x5b0b,0x632c,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x6b6d,0x634c,0x52ca,0x5aeb, +0x5aeb,0x6b6c,0x632c,0x5aeb,0x52aa,0x52ca,0x52ca,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5aeb,0x52ea,0x634c,0x634b,0x632b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x632b,0x634b,0x5aeb,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x52ca,0x52aa,0x52eb,0x52aa,0x52ca,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x5b2c,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x632c,0x632b,0x634b,0x5b0b,0x5b0b,0x5b2b,0x632b,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52ca,0x5b0b,0x5b0b,0x52ea,0x52ea,0x5b0b,0x52aa,0x52ca,0x5b0b,0x52ea,0x52ca,0x5b0b,0x52ea,0x5b4c,0x634c,0x5aea,0x5b2b,0x5b2b,0x634c,0x5b2b,0x634c,0x5b4b,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5aeb,0x634c,0x5b2b,0x5b2b,0x636c,0x636c,0x634c,0x5b4b,0x5b2b,0x632b,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x52ca,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x634c,0x5b4c,0x52ea,0x5b0b,0x634c,0x5b2b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5aeb,0x636c,0x636c,0x636c,0x636c,0x5b2c,0x5b0b,0x5b0b,0x52eb,0x5b2c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x5b2c,0x5b2c,0x5b2c,0x530b,0x52ea,0x5b2b,0x634c,0x634c,0x634c,0x5b0b,0x5b2b,0x5b0b,0x5b2c,0x634c,0x5b2b,0x634c,0x5b2c,0x52eb,0x632c,0x632c,0x634c,0x634c,0x636c,0x5b2b,0x634c,0x5b2c,0x634c,0x5b2c,0x5b2c,0x634c,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x5b2c,0x5b2c,0x5b2c,0x5b2b,0x5aeb,0x5b2c,0x52eb,0x5b2c,0x634c,0x5b2b,0x5b0b,0x6b8d,0x5b2b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x634c,0x5b0b,0x636c,0x5b0b,0x5b2b,0x638d,0x634c,0x5b0b,0x5b0b,0x634c,0x6b6d,0x634c,0x636c,0x634c,0x5b2c,0x5b0b,0x5b2c,0x634c,0x632c,0x5b2c,0x5b0b,0x5b2c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x632c,0x632c,0x5b0b,0x5aeb,0x634c,0x632c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b0b,0x52eb,0x5b0b,0x5b0c,0x5aeb,0x630c,0x634c,0x632c,0x634c,0x630c,0x5aeb,0x632c,0x5b2b,0x5b2b,0x632c,0x5b0c,0x5aeb,0x634c,0x5b2c,0x5b0b,0x632c,0x630b,0x630c,0x5b0b,0x632c,0x5aeb,0x5b0b,0x632c,0x5aeb,0x634c,0x634c,0x632c,0x630b,0x5b0b,0x634c,0x632c,0x5aeb,0x5aeb,0x630b,0x630b,0x632c,0x630b,0x630b,0x5aeb,0x5acb,0x5acb,0x52ca,0x52ca,0x5aeb,0x52aa,0x52aa,0x52ca,0x5b0b,0x52ca,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x630b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x52eb,0x5b2b,0x52cb,0x5b0b,0x5acb,0x5aeb,0x5aeb,0x632c,0x5acb,0x5aeb,0x634c,0x5aeb,0x52ca,0x632c,0x634c,0x5aeb,0x632c,0x632c,0x632c,0x632c,0x632c, +0x7c2f,0x73ee,0x740f,0x740e,0x73ce,0x73ef,0x6bce,0x6bad,0x73ee,0x73ce,0x636c,0x636d,0x6bce,0x6b8d,0x6bae,0x634c,0x6b8d,0x740e,0x6b8d,0x73ce,0x6b8d,0x638d,0x5b4b,0x73ee,0x6b8d,0x636c,0x6b8d,0x636c,0x6b8d,0x634c,0x636c,0x5b2c,0x636c,0x5b4c,0x636c,0x634c,0x636c,0x636c,0x6b8d,0x638d,0x6b8d,0x636c,0x634c,0x5b0b,0x5b0b,0x6b8d,0x634c,0x5b2b,0x636c,0x636c,0x634c,0x634c,0x5b2c,0x5b2b,0x5b2b,0x636c,0x6b8d,0x634c,0x5b4c,0x634c,0x5b2b,0x632c,0x634c,0x636c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x636c,0x5b0b,0x52ca,0x636c,0x52eb,0x5b0b,0x52ea,0x52ea,0x52ea,0x52ea,0x5b4c,0x634c,0x5b0b,0x5b2b,0x5b4c,0x5b2b,0x638d,0x5b2b,0x530b,0x52ea,0x634c,0x5b0b,0x636c,0x5b0b,0x52aa,0x52eb,0x52eb,0x5b0b,0x634c,0x52ca,0x52eb,0x636c,0x634c,0x5b0b,0x52ca,0x5b2b,0x5b0b,0x530a,0x52ca,0x5b0b,0x5aeb,0x52ca,0x6b8d,0x5b0b,0x52ca,0x5b2b,0x5b2b,0x52ea,0x52ea,0x52ea,0x52ea,0x52ca,0x530b,0x530b,0x52ca,0x52ea,0x5b2b,0x5b2b,0x52ca,0x4aa9,0x5b0b,0x5b2b,0x52ca,0x636c,0x5b2b,0x4aaa,0x5b0b,0x634c,0x52eb,0x52ca,0x5b2c,0x5b2b,0x634c,0x636c,0x530b,0x4269,0x52eb,0x5b2c,0x52eb,0x632c,0x52ca,0x5aeb,0x5b2b,0x5b2b,0x5b0b,0x52ca,0x52ca,0x52ca,0x52ca,0x5b2b,0x5b2b,0x5b0b,0x5b2c,0x52ca,0x5b2b,0x5aeb,0x5aea,0x5aeb,0x5b2b,0x5b2b,0x5b4c,0x52ca,0x5b0b,0x636d,0x5b2c,0x638d,0x634c,0x5aeb,0x636c,0x634c,0x5b2b,0x634c,0x5b2c,0x634c,0x632c,0x636d,0x52eb,0x5b2c,0x5b0b,0x5b4c,0x5b2b,0x632c,0x632c,0x6b8d,0x634c,0x636c,0x6bce,0x5b4c,0x5b0b,0x634c,0x634c,0x5b4c,0x6b8d,0x634c,0x634c,0x6b8d,0x636c,0x634c,0x634c,0x5b2c,0x5b0b,0x6b6d,0x5b2c,0x5b2c,0x636d,0x5b0b,0x634c,0x636c,0x5b0b,0x632c,0x6b6d,0x634c,0x638d,0x6b8d,0x6b8d,0x636c,0x6b8d,0x636c,0x6b8d,0x6bad,0x73ee,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x634d,0x6b6d,0x73ae,0x73ee,0x6b8d,0x6bad,0x634c,0x634c,0x740f,0x73ee,0x73ae,0x6b8d,0x6b8e,0x6b8d,0x6b6d,0x7c0f,0x8450,0x6b8d,0x6b6c,0x73ae,0x6bae,0x636d,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x634c,0x6b6d,0x73ce,0x6bad,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x632c,0x6b6d,0x6b6d,0x632c,0x6b8d,0x6b6d,0x634c,0x6b6d,0x6b6d,0x73ce,0x6b6d,0x5b0b,0x6b8d,0x6b6d,0x6b6d,0x73ae,0x6b8d,0x6b8d,0x6b6d,0x738e,0x634d,0x6bae,0x73ce,0x6b6d,0x634c,0x634c,0x632c,0x632c,0x6b8d,0x634c,0x6b8d,0x634c,0x5b0b,0x634c,0x634c,0x634c,0x634d,0x634d,0x630c,0x5b0b,0x632c,0x6b6d,0x5b2c,0x5aeb,0x5b0b,0x634d,0x632d,0x5b0c,0x5aeb,0x6b4d,0x632c,0x630b, +0x8470,0x8490,0x8491,0x7c2f,0x7c50,0x8491,0x7c2f,0x7c2f,0x8470,0x7c0f,0x6b8d,0x6b8d,0x73ee,0x73ce,0x7c0f,0x73ce,0x6b8d,0x740f,0x7c2f,0x6bad,0x634c,0x5b4c,0x5b0b,0x634c,0x5b2b,0x6b8d,0x636c,0x638d,0x6bce,0x636c,0x5b0b,0x5b0b,0x6b8d,0x634c,0x5b4c,0x73ee,0x6bae,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2c,0x52ca,0x634c,0x634c,0x5aeb,0x5b0b,0x5b0b,0x636c,0x636c,0x4268,0x52ca,0x52eb,0x5b2b,0x52ea,0x52ea,0x52ca,0x5b0b,0x52ca,0x4a69,0x4a89,0x52ca,0x4aa9,0x4aa9,0x4a69,0x4a69,0x4a89,0x52ea,0x52ea,0x4248,0x4228,0x4a89,0x4268,0x3a07,0x3a07,0x4248,0x3a28,0x3a28,0x3a28,0x3a28,0x4a69,0x4268,0x4a89,0x3a28,0x3a27,0x4248,0x39e7,0x29a5,0x3a07,0x4269,0x3a07,0x3a07,0x31a6,0x4248,0x4a89,0x4248,0x3a07,0x31c6,0x3a07,0x4a69,0x39e7,0x4207,0x31c6,0x31c7,0x3a07,0x3a07,0x3a07,0x4249,0x4a69,0x4228,0x4248,0x4a89,0x31c6,0x4248,0x4248,0x3a28,0x4248,0x39e7,0x4228,0x31e7,0x3a07,0x3a07,0x31c6,0x4268,0x4a89,0x2985,0x31a6,0x3a07,0x3a27,0x4268,0x3a07,0x4248,0x3a07,0x4228,0x3a07,0x39e7,0x4a69,0x39e7,0x3a07,0x39e7,0x3a27,0x3a07,0x4248,0x4248,0x31a6,0x3a07,0x3a07,0x3a08,0x4a69,0x3a07,0x4248,0x3a07,0x4228,0x31c6,0x3a07,0x31c6,0x3a07,0x3a28,0x4248,0x52ca,0x4aaa,0x3a28,0x4aaa,0x4228,0x3a07,0x4228,0x4a69,0x3a28,0x4269,0x4a69,0x31c6,0x4a69,0x5aeb,0x4aaa,0x4a89,0x4a89,0x52ea,0x4268,0x3a07,0x3a28,0x4248,0x4a89,0x5b2b,0x634c,0x4aaa,0x4269,0x52eb,0x52eb,0x4269,0x52ca,0x4a89,0x4a69,0x5b0b,0x5b0b,0x52ca,0x52ca,0x5aeb,0x4a69,0x52ca,0x4a89,0x52aa,0x52ca,0x52ca,0x52ca,0x52eb,0x632c,0x5b2b,0x632c,0x5aeb,0x5aeb,0x73ae,0x5aeb,0x5b2c,0x632c,0x6bad,0x73ce,0x634c,0x5aeb,0x634c,0x6b8d,0x5b2c,0x636d,0x6b8d,0x5b2c,0x636d,0x6bad,0x73ae,0x73ce,0x73ce,0x7c0f,0x6b6d,0x6bae,0x6bae,0x6bae,0x6b8d,0x6b8d,0x6b6d,0x7c0f,0x73ce,0x73ce,0x73ce,0x73ce,0x7c0f,0x8c91,0x8430,0x8430,0x7c0f,0x7bef,0x8430,0x8430,0x7c0f,0x73ae,0x840f,0x7bee,0x7c0f,0x8450,0x7c0f,0x8470,0x8cb1,0x842f,0x8430,0x8430,0x8c91,0x8c91,0x8c71,0x840f,0x8450,0x8c70,0x94d2,0x8450,0x8450,0x8c91,0x8c91,0x8430,0x8c71,0xa554,0x8c91,0x9d13,0x94f2,0x8c71,0x94d2,0x94b2,0x94b2,0x94d2,0x94d2,0x8c91,0x94d2,0x8c91,0x94d2,0x9d13,0x9d13,0x8470,0x8430,0x8c91,0x94f3,0x8cb2,0xa514,0x9491,0xad74,0x9cf2,0x8c91,0x9cd3,0x9d13,0x8c71,0x8c91,0x8c91,0x8c71,0x8450,0x8430,0x7c0f,0x8450,0x94b2,0x94b2,0x8c92,0x8c92,0x8430,0x8430,0x9cf3,0x8450,0x8c91, +0x2124,0x2144,0x2944,0x2144,0x2124,0x18c3,0x18c3,0x2103,0x2965,0x2124,0x18e3,0x2124,0x2124,0x2103,0x18e3,0x2144,0x2103,0x2124,0x2124,0x18c2,0x18e3,0x10a2,0x1082,0x0000,0x18e3,0x18c3,0x1081,0x18e3,0x2124,0x0841,0x0841,0x10a2,0x1082,0x18e3,0x18c3,0x2124,0x2144,0x10a2,0x18e3,0x2104,0x18c2,0x0861,0x0000,0x2103,0x10a2,0x0841,0x10a2,0x0861,0x18c2,0x0881,0x0000,0x0000,0x0841,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0841,0x0861,0x0841,0x0000,0x0820,0x0820,0x0000,0x0841,0x0020,0x0000,0x1082,0x0000,0x1082,0x0041,0x1061,0x0820,0x1062,0x0821,0x0000,0x0820,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0821,0x0861,0x0861,0x1062,0x0821,0x1082,0x0841,0x0000,0x0841,0x0020,0x0840,0x1082,0x0820,0x0841,0x0000,0x0000,0x1061,0x0000,0x0841,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x1061,0x0820,0x0000,0x1061,0x18c3,0x0000,0x18a2,0x18c3,0x0840,0x10a2,0x1061,0x0840,0x1082,0x18a2,0x18c3,0x1061,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x18c3,0x0861,0x1081,0x18e3,0x10a2,0x0020,0x10a2,0x10a2,0x10a2,0x18c2,0x18c2,0x0820,0x18e3,0x2124,0x10c2,0x10c2,0x10a2,0x0840,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x1061,0x1082,0x18c3,0x0820,0x18c2,0x0820,0x10a2,0x10a2,0x10a2,0x0861,0x0820,0x10a2,0x1082,0x0861,0x1081,0x18e3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0020,0x10c2,0x18c2,0x18c3,0x10a2,0x2104,0x2124,0x18e3,0x18e3,0x1082,0x0000,0x18c2,0x1082,0x0000,0x2104,0x2965,0x1061,0x10a2,0x18c3,0x18e3,0x18c3,0x18e3,0x10c2,0x2104,0x3186,0x2944,0x18e3,0x2104,0x0881,0x3185,0x18c3,0x10a2,0x2124,0x3185,0x2965,0x2965,0x2124,0x2124,0x2945,0x18e3,0x18c2,0x18c3,0x2103,0x2103,0x2124,0x2124,0x2944,0x2104,0x2124,0x18c2,0x2104,0x2104,0x2144,0x2945,0x2124,0x2945,0x2103,0x39c7,0x2945,0x2965,0x31a6,0x2945,0x2124,0x2124,0x39e7,0x3186,0x2985,0x4a48,0x2124,0x18e2,0x3185,0x3a07,0x2965,0x2985,0x4208,0x4208,0x29a6,0x4228,0x4a49,0x39c7,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a48,0x5289,0x4a69,0x4248,0x4a69,0x5aeb,0x4228,0x4228,0x52aa,0x5aeb,0x632c,0x4a89,0x528a,0x630c,0x52aa,0x52aa,0x52ca,0x5b0b,0x5aca,0x5b0b,0x6b6d,0x5aeb,0x632c,0x634c,0x630b,0x5aca,0x52aa,0x630b,0x634c,0x5aeb,0x6b8d,0x7bce,0x840f,0x738d,0x5aeb,0x73ae,0x738e,0x6b4d,0x738d,0x6b4d,0x6b8d,0x632c,0x632c,0x528a,0x634d,0x738e,0x632c,0x738e,0x6b6d,0x5b0c,0x632c,0x52ca,0x5b0b,0x7bcf, +0x18e3,0x10c3,0x10a3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x2104,0x18e3,0x1903,0x2144,0x2124,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x2124,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2104,0x18e4,0x2104,0x1903,0x18e3,0x2144,0x18e3,0x2124,0x2144,0x1903,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x2144,0x2124,0x2104,0x18c3,0x1903,0x2104,0x18e3,0x2104,0x1904,0x2124,0x2104,0x18e3,0x1903,0x2124,0x2104,0x18e3,0x2124,0x2104,0x1904,0x1904,0x1904,0x2103,0x2104,0x2103,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e3,0x2945,0x2124,0x2124,0x2124,0x1904,0x2124,0x2104,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x10c3,0x1904,0x10a2,0x0861,0x10a2,0x18c3,0x18e3,0x18e3,0x2104,0x10a2,0x1082,0x18e3,0x10c3,0x1082,0x10a2,0x18e3,0x18c3,0x18e3,0x18e3,0x10c2,0x10c2,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10c2,0x18e3,0x18c2,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x10c2,0x10c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18a2,0x18e3,0x18e3,0x10a2,0x10a2,0x18e3,0x1082,0x18e3,0x1904,0x10c3,0x18e3,0x2104,0x18c3,0x18a3,0x2104,0x18e3,0x10c3,0x18c3,0x10a2,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x1904,0x18e3,0x10a2,0x10a2,0x18c3,0x1082,0x18c3,0x18e3,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x10c2,0x1082,0x1082,0x10a2,0x18c2,0x0860,0x18c2,0x18c3,0x0021,0x18c3,0x18c3,0x1082,0x0861,0x18c3,0x1082,0x0841,0x0000,0x1061,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x4208,0x39e7,0x3a28,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x3a28,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4228,0x3a28,0x3a07,0x3a07,0x3a07,0x3a28,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4248,0x4228,0x4248,0x4228,0x4248,0x4228,0x3a08,0x4228,0x3a28,0x3a28,0x4269,0x4248,0x4228,0x4248,0x4228,0x4a69,0x3a07,0x4228,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4248,0x4249,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4248,0x4a89,0x4248,0x4248,0x4248,0x3a07,0x4228,0x3a28,0x4248,0x4228,0x4248,0x4228,0x4269,0x4a89,0x4269,0x4a89,0x4a89,0x4248,0x4248,0x4269,0x4269,0x4248,0x4228,0x4248,0x4269,0x4a89,0x4a89,0x4aaa,0x4a89,0x4a89,0x4228,0x4248,0x4a89,0x4a89,0x4269,0x4aa9,0x4269,0x4228,0x4a89,0x4a89,0x4248,0x4a69,0x4a69,0x4a69,0x4269,0x4289,0x4a89,0x4a89,0x4a89,0x4248,0x4248,0x4268,0x4228,0x4249,0x4a89,0x4228,0x4248,0x4269,0x4a69,0x4269,0x4248,0x4a69,0x4a89,0x4a8a,0x4249,0x4228,0x4228,0x3a28,0x4228,0x3a28,0x4248,0x4248,0x4249,0x4269,0x4248,0x4269,0x4228,0x4228,0x4249,0x4269,0x4a89,0x3a07,0x4228,0x4269,0x4248,0x4228,0x4269,0x4248,0x4228,0x4249,0x4248,0x4248,0x4249,0x4228,0x4248,0x4248,0x4a49,0x4249,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4248,0x4248,0x4228,0x4228,0x4a49,0x4a69,0x4249,0x4249,0x4228,0x4a89,0x4a69,0x4248,0x4248,0x4248,0x4a69,0x4249,0x4a69,0x4a49,0x4228,0x4a89,0x4a89,0x4a69,0x4a69,0x4249,0x4a69,0x4248,0x4a69,0x4a49,0x4248,0x4268,0x4a89,0x4a89,0x4a49,0x4249,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x4a48,0x4249,0x4a69,0x4a69,0x4a49,0x4a49,0x4248,0x4a49,0x4248,0x4a69,0x4248,0x4a49,0x4a49,0x4248,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x4a89,0x4248,0x4249,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4a69,0x4a49,0x4228,0x4249,0x4249,0x4248,0x4248,0x4248,0x4248,0x4a49,0x4a48,0x4228,0x4228,0x4228,0x4a48,0x4248,0x4228,0x4a49,0x4228,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4249,0x4229,0x4228,0x4208,0x4248,0x4228,0x4228,0x4208,0x39e7,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x4249,0x3a08,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4207,0x4228,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4207,0x3a07,0x39e7,0x31c6,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e7,0x39e7,0x31c7,0x39e7, +0x4228,0x3a07,0x4248,0x4228,0x4208,0x4208,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x4249,0x3a08,0x3a07,0x3a08,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a28,0x3a28,0x3a08,0x4a89,0x4248,0x3a07,0x3a08,0x4228,0x3a28,0x3a28,0x4228,0x4248,0x4228,0x4269,0x3a07,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4248,0x4248,0x4228,0x4207,0x3a08,0x4228,0x4228,0x4269,0x4248,0x3a08,0x4228,0x4248,0x3a07,0x3a07,0x4248,0x4248,0x4248,0x4248,0x4248,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4248,0x4269,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4228,0x4269,0x4269,0x4a89,0x4269,0x4269,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4269,0x4a69,0x4228,0x4a69,0x4269,0x4249,0x4269,0x4248,0x4a89,0x4a69,0x4249,0x4a69,0x4a89,0x4269,0x4269,0x4248,0x4248,0x4a89,0x4a89,0x4248,0x4a69,0x4248,0x4269,0x4aaa,0x4a89,0x4268,0x4a89,0x4269,0x4a69,0x4248,0x4a89,0x4a89,0x4248,0x4a69,0x4a89,0x4248,0x4a89,0x4a89,0x4a89,0x4269,0x4269,0x4a69,0x4a89,0x4a89,0x4a89,0x4248,0x4a89,0x4a69,0x4aaa,0x4a89,0x4a89,0x4269,0x4a8a,0x4269,0x4269,0x4248,0x4a69,0x4a89,0x4248,0x4248,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4a69,0x4248,0x4269,0x4aaa,0x4a89,0x4249,0x4a69,0x4a89,0x4269,0x4a69,0x4a69,0x4269,0x4a69,0x4a89,0x52ca,0x4a89,0x4a69,0x4269,0x4269,0x4a69,0x52aa,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4269,0x4289,0x4a89,0x52aa,0x4a8a,0x4269,0x4a69,0x52aa,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4aaa,0x4a89,0x4aa9,0x52ca,0x4a89,0x4a69,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a89,0x52aa,0x52aa,0x4a89,0x52ca,0x4a89,0x4aaa,0x52ca,0x52aa,0x4a89,0x52eb,0x52aa,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x528a,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4248,0x4a69,0x4a89,0x4a69,0x528a,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a49,0x4249,0x4a69,0x4a8a,0x4a69,0x4a8a,0x4a89,0x4a8a,0x4a69,0x4a69,0x4248,0x4228,0x4249,0x4a69,0x4a69,0x4a49,0x4a69,0x4a89,0x52aa,0x4a89,0x4269,0x4a89,0x4a69,0x4a8a,0x4a69,0x4a69,0x52aa,0x4a69,0x4a69,0x528a,0x52aa,0x528a,0x4a69,0x4a8a,0x528a,0x528a,0x5289,0x4a89,0x4a69,0x4a69, +0x39e7,0x3a28,0x4248,0x4228,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x4208,0x3a08,0x4248,0x3a07,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x4208,0x4228,0x4227,0x4228,0x4a49,0x4248,0x3a07,0x4a48,0x39e7,0x4207,0x4228,0x4228,0x4228,0x4208,0x4207,0x4228,0x4248,0x4228,0x4228,0x4228,0x3a07,0x3a28,0x3a28,0x4228,0x4228,0x4248,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x4a69,0x4228,0x39e7,0x4228,0x4208,0x3a07,0x4228,0x4207,0x4208,0x4228,0x4248,0x4a69,0x4a69,0x3a07,0x4248,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x4248,0x4228,0x4269,0x4a89,0x4269,0x4a48,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4248,0x3a07,0x3a27,0x3a28,0x4269,0x4a69,0x4a69,0x4269,0x4248,0x4228,0x4269,0x4228,0x4269,0x4a69,0x4228,0x4a89,0x4207,0x4248,0x4a69,0x4248,0x4248,0x4269,0x4289,0x4268,0x4a89,0x4248,0x4248,0x4a69,0x4a48,0x4a89,0x4a69,0x4248,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4aaa,0x4a89,0x4248,0x4a69,0x4a69,0x3a07,0x4248,0x4a89,0x4248,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x52aa,0x4a68,0x4248,0x4269,0x4248,0x3a07,0x4248,0x4248,0x4248,0x3a28,0x4248,0x52ca,0x4a89,0x4248,0x4a89,0x4a69,0x4a69,0x4a89,0x4aaa,0x4a69,0x4a89,0x4aaa,0x4a89,0x4289,0x4269,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x52a9,0x4a69,0x4a69,0x4a89,0x4269,0x52aa,0x4a8a,0x4248,0x52aa,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x528a,0x52aa,0x4268,0x52ca,0x52aa,0x4228,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4268,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x52ca,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x52ca,0x52aa,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4aaa,0x4269,0x4a69,0x4aaa,0x52aa,0x4a69,0x52aa,0x4a89,0x4a69,0x52aa,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x52ca,0x4a8a,0x4248,0x52aa,0x4a49,0x4a48,0x4a89,0x52aa,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a89,0x4a8a,0x4a89,0x52aa,0x4a89,0x52aa,0x4a89,0x4248,0x4a49,0x52aa,0x528a,0x4a69,0x5289,0x4a89,0x528a,0x4a69,0x52aa,0x4a89,0x4a49,0x4248,0x4248,0x4a89,0x4a49,0x4a89,0x4a69,0x4a49,0x4a69,0x4a89,0x4a69,0x52aa,0x52aa,0x4a89,0x4a89,0x52aa,0x528a,0x52aa,0x528a,0x528a,0x4a89,0x52ca,0x52ca,0x52aa,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x4a69,0x528a,0x4a89,0x4a69,0x52aa,0x528a,0x528a,0x4a89,0x528a,0x52aa,0x52aa,0x528a,0x4a49,0x4a89, +0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39c6,0x39c6,0x39e7,0x4207,0x39c6,0x39e7,0x39e7,0x39e7,0x4207,0x39c7,0x39c7,0x39c7,0x31c6,0x4228,0x4228,0x3a07,0x31a6,0x3185,0x3a07,0x39e6,0x39e6,0x31c6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x31c6,0x31c6,0x31c6,0x39e7,0x39e6,0x39e7,0x31a6,0x39e7,0x39c6,0x31a6,0x39c7,0x31a6,0x39e7,0x31c7,0x39e7,0x3a07,0x31c6,0x39e7,0x3a07,0x3a07,0x3a07,0x31c6,0x31c6,0x39e7,0x31c6,0x39e7,0x31a6,0x31c6,0x31c6,0x3a07,0x31c6,0x3185,0x39e7,0x39e7,0x3186,0x39e7,0x31c6,0x31a6,0x39e7,0x2965,0x31c7,0x31e7,0x31a6,0x31c7,0x39e7,0x31c6,0x39e6,0x39e7,0x31c6,0x31c6,0x31a6,0x39e7,0x39e7,0x4227,0x4268,0x31c6,0x31c6,0x31e6,0x4228,0x39c6,0x31a6,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x31a6,0x31a6,0x31c6,0x31e7,0x31e7,0x39e7,0x39e7,0x31e7,0x31a6,0x31c6,0x31a5,0x39e7,0x31c6,0x31c6,0x39e7,0x39c6,0x31c6,0x39e7,0x31a6,0x31a6,0x31c6,0x2985,0x31c6,0x31c6,0x39e7,0x31e7,0x31c6,0x31c6,0x31c6,0x2985,0x39e7,0x3a07,0x31e7,0x31c6,0x31c6,0x31c7,0x39e7,0x31a5,0x31a6,0x31a6,0x2985,0x3a07,0x3a07,0x31a6,0x31c6,0x39c7,0x31a6,0x31c6,0x31c6,0x3a07,0x31a6,0x2986,0x31c6,0x39e7,0x2986,0x31c6,0x31c6,0x2965,0x2145,0x31c6,0x31e7,0x31e7,0x31c6,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x31a6,0x31c6,0x31e7,0x31c6,0x31e7,0x39e7,0x31c6,0x31c6,0x31a6,0x31e7,0x2985,0x39e7,0x2986,0x31a6,0x39e7,0x31c6,0x31a6,0x3a07,0x31c6,0x31e7,0x31a6,0x31a6,0x31c6,0x31c6,0x3a07,0x31c6,0x39c7,0x39e7,0x31c6,0x31a6,0x3a07,0x39c6,0x31a6,0x39e7,0x3a07,0x39c6,0x39e7,0x39e7,0x39c6,0x39e7,0x3a07,0x39c7,0x39e7,0x3a07,0x3a07,0x39c7,0x3a07,0x31c6,0x31a6,0x39e7,0x3a07,0x31c6,0x31c6,0x39e7,0x31a6,0x31a6,0x39c7,0x31e7,0x39e7,0x4208,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x31c6,0x39c7,0x39c7,0x31c6,0x39c7,0x39e7,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x39c7,0x39e7,0x4228,0x39e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x31a6,0x39e7,0x4208,0x31a6,0x31c6,0x31a6,0x31a6,0x3a07,0x31a6,0x31a6,0x39a6,0x31a6,0x39c7,0x31a6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3a07,0x3a07,0x4208,0x39e7,0x31a6,0x31a6,0x39e7,0x31a6,0x39e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39e7,0x31a7,0x31a6,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x4228,0x39c7,0x39c7,0x4207,0x39c7,0x39e7,0x39e7, +0x5b0b,0x5aeb,0x5b2b,0x5b0b,0x5b0b,0x634c,0x6b6d,0x5b0b,0x632c,0x634c,0x634c,0x632b,0x636c,0x6b6c,0x5b0b,0x632b,0x632c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x630b,0x632c,0x5b2b,0x632c,0x52ea,0x632b,0x5aea,0x632b,0x5b0b,0x5b0b,0x530b,0x5b2c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x52ca,0x5aeb,0x5b0b,0x5b2c,0x52eb,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x634c,0x634c,0x5aea,0x5b0b,0x5b0b,0x632b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b0b,0x4aaa,0x52ca,0x5b0b,0x5b2b,0x52ca,0x52ca,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x52ca,0x632c,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x638c,0x73cd,0x5b0b,0x5b2c,0x52eb,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52ca,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b2c,0x52ca,0x52ea,0x52ca,0x5b0b,0x5b2b,0x530b,0x5b0b,0x52eb,0x4aaa,0x5b0b,0x52ca,0x52ca,0x5aeb,0x5aeb,0x5b0b,0x634c,0x5b0b,0x5aeb,0x5b2c,0x52ca,0x52eb,0x632c,0x5b2b,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x634c,0x5b2c,0x5b2c,0x5b0b,0x5aeb,0x52ca,0x630b,0x5aeb,0x5b0b,0x52eb,0x632c,0x634c,0x5b0b,0x5aeb,0x5aeb,0x52eb,0x634c,0x5b2c,0x5b0b,0x5b2c,0x5b0b,0x632c,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x5b2c,0x5b2c,0x5b2b,0x634c,0x634c,0x632c,0x632c,0x634c,0x5b0b,0x5b0b,0x632c,0x634c,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x632c,0x636d,0x5b2c,0x5b2b,0x5b2b,0x5b0b,0x5b2c,0x634c,0x634c,0x636d,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b2b,0x634c,0x6b6d,0x5b0b,0x5aeb,0x6b6d,0x5b0b,0x634c,0x6b6d,0x632c,0x634c,0x632c,0x5b0c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x634c,0x632c,0x5b0b,0x6b4c,0x6b8d,0x73ae,0x6b8d,0x632c,0x5b0b,0x632c,0x632c,0x634c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5aeb,0x632c,0x630c,0x5aeb,0x630b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x634c,0x5b0b,0x5b0b,0x630b,0x5b0b,0x5aeb,0x5b0b,0x630b,0x632c,0x5aea,0x5aeb,0x5aeb,0x52ca,0x5aca,0x5aeb,0x52aa,0x5aeb,0x634c,0x52ca,0x5aca,0x52ca,0x5aeb,0x52ca,0x5aea,0x52ca,0x5b0b,0x5b0b,0x5aca,0x5aeb,0x52ca,0x5aeb,0x5b0b,0x52ca,0x52cb,0x4a89,0x5289,0x52aa,0x52aa,0x5289,0x528a,0x52aa,0x4a69,0x4a89,0x5289,0x4a89,0x4228,0x4a69,0x4a89,0x52ca,0x52aa,0x4a8a,0x52aa,0x4a89,0x4a69,0x52aa,0x4248,0x4a69,0x39e7,0x4a49,0x4248,0x39e7,0x3a07,0x4228,0x4228,0x3a07,0x4208,0x39c7, +0x634c,0x5b2b,0x632c,0x5b2c,0x52eb,0x634c,0x636c,0x634b,0x5b2b,0x5b0b,0x6b8d,0x636c,0x6bad,0x5b2b,0x634c,0x634c,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x634c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x634c,0x632c,0x530b,0x5b2b,0x630c,0x5b0b,0x5aea,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x52ca,0x5b2b,0x5aeb,0x5aeb,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2c,0x5b2c,0x52eb,0x5b0b,0x632c,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x634c,0x636c,0x634c,0x5b2b,0x5b0b,0x636c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5b2b,0x5aeb,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b2b,0x634c,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x636c,0x52ea,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b4b,0x5b2b,0x634c,0x634c,0x52ea,0x5b2b,0x634c,0x5b0b,0x52ea,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x5aea,0x5b2b,0x52ea,0x634c,0x636c,0x636c,0x5b2b,0x5b0b,0x52ea,0x636c,0x5b2b,0x5b2b,0x634c,0x52ca,0x52ca,0x5b2b,0x5b2c,0x5b0b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x5b2c,0x5b2c,0x52ea,0x634c,0x5b2b,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x634c,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b2b,0x5b4c,0x5b2c,0x5b2c,0x5b0b,0x530b,0x634c,0x5b2b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5b2c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b4c,0x636d,0x632c,0x634c,0x5b0b,0x5b4c,0x530b,0x634c,0x632c,0x634c,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b4c,0x5b2c,0x634c,0x632c,0x5b0b,0x634c,0x5b2b,0x5b4c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x636d,0x5b2c,0x5b2c,0x634c,0x5b4c,0x5b0b,0x634c,0x632c,0x634c,0x6b6c,0x6b6d,0x636c,0x632c,0x634c,0x5b2b,0x634c,0x5b0b,0x634c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x636d,0x5b2c,0x5b2c,0x634c,0x634c,0x5b0b,0x634c,0x632c,0x634c,0x634c,0x634c,0x634c,0x6b6d,0x6b4c,0x630b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x632c,0x52eb,0x5b0b,0x5b0b,0x634c,0x632c,0x5aeb,0x5b0b,0x632c,0x632c,0x632b,0x5b0b,0x632c,0x632c,0x632c,0x634c,0x6b4c,0x634c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b0b,0x632c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x632c,0x634c,0x5b0c,0x5b0b,0x634c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x632c,0x632c,0x5aca,0x632c,0x630b,0x632c,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5b0b,0x634c,0x632c,0x630c,0x630b,0x5aeb,0x632c,0x630c,0x5aca,0x5aeb,0x632c,0x632c,0x5aeb,0x5aeb,0x5aeb, +0x6b6c,0x5b0b,0x5b0b,0x632c,0x634c,0x632c,0x634c,0x632b,0x6b6c,0x636c,0x632b,0x632b,0x6b6c,0x5aeb,0x632b,0x632c,0x632c,0x5b2b,0x634c,0x5aeb,0x634c,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b2b,0x632b,0x632c,0x634c,0x634c,0x5b0b,0x5b2c,0x5b0b,0x52ca,0x5b0b,0x632c,0x5b0b,0x5b2b,0x52eb,0x52eb,0x5b0b,0x52eb,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x530b,0x5b0b,0x5aeb,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x632c,0x632c,0x5b0b,0x530b,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x52ea,0x5b0b,0x5b0b,0x5aeb,0x52ea,0x52eb,0x5b0b,0x632c,0x5aeb,0x5aeb,0x52ea,0x5b2b,0x634c,0x52aa,0x530b,0x5b2c,0x5b2c,0x634c,0x5aeb,0x5b0b,0x634c,0x52ea,0x5b0b,0x5aeb,0x5b2b,0x5b4c,0x5b4c,0x632b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x632b,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x530b,0x5b2c,0x634c,0x530b,0x5b2b,0x52ea,0x636c,0x634c,0x52ea,0x5b2b,0x636c,0x5b2b,0x530b,0x634c,0x634c,0x632c,0x5b0b,0x52eb,0x5b2b,0x5b2b,0x52ca,0x636c,0x5b2b,0x5b0b,0x5b0b,0x530b,0x530b,0x52ea,0x632c,0x632c,0x5aea,0x632c,0x5b2c,0x52eb,0x52eb,0x52eb,0x634c,0x5b2c,0x5b2c,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x5b2c,0x5b2b,0x530b,0x5b0b,0x634c,0x5b4c,0x5b2b,0x5b0b,0x5b4c,0x5b2b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x5b0b,0x5b0b,0x634c,0x634c,0x5b0b,0x52ca,0x5b2c,0x634c,0x5b0b,0x52ca,0x634c,0x634c,0x5b2b,0x52eb,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x634c,0x5b2c,0x632c,0x5b2b,0x5b2b,0x634c,0x632b,0x632c,0x634c,0x636c,0x634c,0x6b6d,0x6b8d,0x634c,0x632c,0x634c,0x5b0b,0x5b2c,0x634c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x634c,0x634c,0x5b0b,0x5b2c,0x632c,0x5b0b,0x5b2c,0x5b2c,0x632c,0x634c,0x632c,0x5b0b,0x634c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x632c,0x5b2c,0x5aeb,0x5aeb,0x632c,0x5b0c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0c,0x5b0b,0x632c,0x630c,0x630b,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0c,0x5aeb,0x6b4c,0x630b,0x5aca,0x632b,0x632c,0x5aeb,0x632c,0x5aeb,0x630c,0x5b2c,0x5b0b,0x5b0b,0x52ea,0x5aeb,0x52ca,0x52ca,0x632c,0x5b0b,0x5aeb,0x634c,0x5aeb,0x5aeb,0x630b,0x5aeb,0x632c,0x5b2c,0x632c,0x632c,0x5aeb,0x52ca,0x632c,0x5b0b,0x5aeb,0x5b0b,0x6b6d,0x634c,0x634d,0x632c,0x5b0b,0x632c,0x6b8d,0x5b0b,0x632c,0x5aeb,0x52cb,0x634c,0x5aeb,0x52aa, +0x5b0b,0x52a9,0x52ca,0x5aeb,0x634c,0x5aea,0x5b0b,0x52ca,0x5b2b,0x634c,0x634c,0x5b0b,0x634c,0x5b0b,0x52ca,0x5b0b,0x630b,0x5aca,0x632c,0x5b2b,0x632b,0x5b0b,0x5aea,0x5aeb,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x5aeb,0x52ea,0x5b0b,0x5b2c,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x5b2b,0x52eb,0x52eb,0x5b0b,0x5b0b,0x5aeb,0x5b4c,0x530b,0x52ea,0x5b2b,0x632c,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x632c,0x5b0b,0x5aeb,0x5b2b,0x5b2b,0x530b,0x52eb,0x632b,0x634c,0x5aeb,0x52ca,0x5b2b,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x4aaa,0x52ca,0x52eb,0x5aeb,0x52ca,0x634c,0x636d,0x5b0b,0x5b2b,0x632c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x52ea,0x5b0b,0x52ea,0x5b2c,0x634c,0x5b0b,0x636c,0x5b2b,0x52ea,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x636c,0x636c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x632c,0x634c,0x5b4c,0x530b,0x5b0b,0x52eb,0x634c,0x634c,0x5b0b,0x5b2c,0x5b0b,0x52ea,0x5b4c,0x530b,0x5b0b,0x634c,0x632c,0x5b2c,0x634c,0x52eb,0x634c,0x5b4c,0x52eb,0x5b2c,0x5b2b,0x5b2c,0x5b0b,0x634c,0x5b0b,0x52ca,0x634c,0x5b4c,0x5b2b,0x634c,0x5b2b,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b2c,0x52ea,0x5b2c,0x52eb,0x5b4c,0x6b8d,0x636d,0x530b,0x5b0b,0x5b2c,0x634c,0x5b2c,0x5b2c,0x5b2b,0x5b4c,0x530b,0x636c,0x5b4c,0x634c,0x632c,0x6b4c,0x632b,0x636c,0x634c,0x636d,0x634c,0x5b2c,0x636d,0x634c,0x5b2c,0x634c,0x636c,0x632c,0x5b2c,0x636d,0x634c,0x632c,0x636d,0x634c,0x5b2b,0x632c,0x636c,0x634c,0x632c,0x634c,0x6b8d,0x634c,0x636c,0x636c,0x634c,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x5b0b,0x632c,0x632c,0x5b2c,0x5aeb,0x5b0b,0x634c,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x632b,0x632c,0x5b0b,0x5b0b,0x634c,0x5aeb,0x52eb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b2c,0x5b0c,0x5aeb,0x634c,0x5b0b,0x52ca,0x52ca,0x630c,0x5b0b,0x5aeb,0x52ea,0x52ca,0x5b0b,0x632c,0x52aa,0x52ca,0x52ca,0x52ea,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5aeb,0x632c,0x630b,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x632c,0x5b2c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x630b,0x632c,0x5b0b,0x5aca,0x5b0b,0x632c,0x632c,0x5b0b,0x5b2c,0x5aeb,0x52ca,0x52ca,0x632c,0x630c,0x630b,0x632c,0x5acb,0x5b0b,0x630c,0x52aa,0x5b0b,0x634c,0x634c,0x5b2c,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x632c,0x73ae,0x6b6d,0x632c,0x634c,0x634c,0x52ca,0x6bae,0x6b8d,0x6b8e,0x5b0c,0x5aeb,0x52eb,0x5b2c,0x632c, +0x636c,0x636c,0x6bad,0x634c,0x634c,0x636c,0x638d,0x6b8d,0x6bcd,0x73ce,0x634c,0x6b8d,0x634c,0x636c,0x6b8d,0x636d,0x634c,0x634c,0x634c,0x5b2b,0x634c,0x636c,0x5b2b,0x5b0b,0x638d,0x636c,0x634c,0x632c,0x5b2b,0x5b0b,0x634c,0x5b2c,0x52ca,0x530b,0x5b2b,0x634c,0x6b6d,0x636c,0x5b2b,0x5b2b,0x632c,0x632c,0x5b2b,0x52ea,0x5b0b,0x5b2b,0x530b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x634c,0x634c,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x52eb,0x530b,0x634c,0x5b2c,0x52eb,0x52ea,0x52ca,0x5b2c,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x5b4c,0x5b0b,0x634c,0x52ea,0x52eb,0x5b2c,0x636d,0x634c,0x52eb,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x4a89,0x5b0b,0x52eb,0x634c,0x52eb,0x52ca,0x5b2c,0x5b0b,0x5b4c,0x5b0b,0x52ca,0x52ea,0x5b0b,0x52ca,0x5b2b,0x5b2b,0x632c,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x52ca,0x530b,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x530b,0x52ca,0x52ca,0x52ca,0x52ca,0x5b2c,0x634c,0x5b2c,0x4aaa,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x52eb,0x636c,0x636c,0x4a89,0x5b4c,0x636d,0x4a89,0x5b4c,0x5b2c,0x52ea,0x5b0b,0x634c,0x634c,0x52ca,0x634c,0x636d,0x52ca,0x52ca,0x52eb,0x5aeb,0x5b4c,0x636c,0x5b0b,0x530b,0x5b2b,0x636c,0x5b0b,0x5b2b,0x5b2c,0x5b4c,0x52eb,0x5b2c,0x634c,0x530b,0x5b2c,0x5b2c,0x636d,0x638d,0x636c,0x636c,0x6b8d,0x634c,0x638d,0x634c,0x638d,0x5b4c,0x5b4c,0x636c,0x5b0b,0x634c,0x6b8d,0x634c,0x636d,0x636d,0x5b4c,0x638d,0x636c,0x6b8d,0x5b2c,0x634c,0x638d,0x6b8d,0x634c,0x634c,0x636c,0x6b8d,0x636c,0x5b4c,0x636d,0x5b4c,0x634c,0x6b8d,0x634c,0x5b2b,0x638d,0x636c,0x636c,0x6b6d,0x636c,0x6b8d,0x6bad,0x6b8d,0x634c,0x636d,0x634c,0x634c,0x636c,0x632c,0x636d,0x636d,0x636c,0x638d,0x634c,0x6b8d,0x636c,0x636d,0x6b8d,0x634c,0x5b4c,0x636d,0x636c,0x636d,0x636c,0x634c,0x634c,0x634c,0x6b6d,0x6b8d,0x634c,0x6b8d,0x6b6c,0x6bad,0x6b6d,0x73ae,0x6b8d,0x6bad,0x636c,0x634c,0x634c,0x634c,0x634c,0x636c,0x636d,0x6b6d,0x5b0b,0x6b6d,0x73ce,0x632c,0x632c,0x634c,0x632c,0x634c,0x634c,0x738d,0x634c,0x632c,0x634c,0x5b0b,0x634c,0x632c,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x6b6d,0x5b0b,0x52ca,0x5aeb,0x6b6d,0x52cb,0x630b,0x5aeb,0x5b0b,0x5aeb,0x632c,0x528a,0x5b0b,0x5b0b,0x5b2c,0x634c,0x636c,0x5b0b,0x5b0c,0x634c,0x632c,0x5aeb,0x52aa,0x632c,0x634c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52aa,0x5aeb,0x634d,0x632c,0x5aeb,0x52ca, +0x73ee,0x6bce,0x6bad,0x73ce,0x6bae,0x6bae,0x73ef,0x6bce,0x6bad,0x73ce,0x73ee,0x6bce,0x6bad,0x73ce,0x6bad,0x6bad,0x636d,0x73ee,0x73ae,0x6b6d,0x636c,0x636d,0x634c,0x634c,0x634c,0x636c,0x636c,0x636c,0x634c,0x6b8d,0x6bad,0x530b,0x5b2b,0x636d,0x634c,0x634c,0x52ea,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x634c,0x5aeb,0x52aa,0x5b0b,0x4a89,0x52ca,0x52ca,0x52ca,0x4aa9,0x5b0b,0x5b0b,0x52eb,0x52aa,0x52ca,0x52aa,0x52ca,0x4a89,0x4269,0x4269,0x52ea,0x52aa,0x52aa,0x4a69,0x52ca,0x52ea,0x52ca,0x4248,0x4aaa,0x4aaa,0x4248,0x4a89,0x4a89,0x4a89,0x4a69,0x52ca,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4a69,0x4a89,0x4269,0x4248,0x3a07,0x3a07,0x4248,0x4248,0x4228,0x3a07,0x4249,0x3a07,0x31c6,0x31e7,0x31a6,0x31c7,0x4248,0x4248,0x3a28,0x3a07,0x3a28,0x4a89,0x39e7,0x3a28,0x4228,0x52aa,0x4a69,0x4248,0x39e7,0x4248,0x3a07,0x4248,0x4a69,0x4a89,0x4228,0x4a69,0x4248,0x3a27,0x52ca,0x4268,0x39e7,0x39e7,0x3a07,0x4228,0x4248,0x3a07,0x4248,0x4248,0x4a89,0x4a69,0x4269,0x3a07,0x4248,0x4a89,0x4a69,0x4228,0x4a89,0x4248,0x39e7,0x3a28,0x4269,0x3a07,0x4249,0x4268,0x4268,0x52aa,0x52aa,0x4a89,0x4228,0x4268,0x4a89,0x4248,0x4248,0x4228,0x4248,0x4228,0x4269,0x52ca,0x4269,0x4248,0x4a69,0x4248,0x4a69,0x4228,0x4228,0x4aaa,0x4248,0x4269,0x4269,0x4aaa,0x4a89,0x4269,0x4268,0x52ca,0x4a89,0x4aaa,0x4a69,0x52eb,0x52eb,0x5b0b,0x4a89,0x52aa,0x52eb,0x73ce,0x52ca,0x528a,0x52eb,0x636d,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x52ea,0x5b2b,0x634c,0x5b0c,0x5b0c,0x6bad,0x5aea,0x634c,0x5b2b,0x5b0b,0x6bad,0x636c,0x634c,0x5b2c,0x634c,0x5b2b,0x6b8d,0x636c,0x5b0b,0x6b8d,0x73ce,0x634c,0x6bae,0x6b8d,0x5b0b,0x6b6d,0x634c,0x73ef,0x73ee,0x73ee,0x6b8d,0x73ce,0x636d,0x740f,0x7c0f,0x73ae,0x8430,0x8c91,0x8cd2,0x73ce,0x8471,0x8450,0x7c0f,0x7c30,0x740f,0x73ef,0x7c0f,0x7c0f,0x7c30,0x7c0f,0x8450,0x94b2,0x8470,0x7c2f,0x8c91,0x94b2,0x8c71,0x8c91,0x7c2f,0x8c71,0x8c71,0x8450,0x8c70,0x9cf2,0x8450,0x8cb1,0x94f3,0x9cf3,0x94d2,0x9d13,0x94d2,0x94b1,0x9cd2,0x8c91,0x8c91,0x8c70,0x8450,0x8c91,0x94f2,0x9cd2,0x94b2,0x94d2,0x94b2,0x8c71,0x94d2,0xa575,0x9d34,0x94b2,0x94b2,0xa534,0x9d13,0xa554,0xad74,0x8cb1,0x94d2,0x94d2,0x94d2,0x9d13,0x94b2,0x9d13,0x9d13,0x94d2,0x8c91,0x8c91,0x94d2,0x94b2,0x8471,0x8cb2,0x8c71,0x8c71,0x94b2,0x8c71,0x8430,0x8450,0x8c71,0x8451,0x7c30,0x7c2f,0x8430,0x8c91,0x7c0f,0x8430, +0x31c6,0x2985,0x2985,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x3186,0x2965,0x31a6,0x31c6,0x39e7,0x3a07,0x31a6,0x2986,0x3186,0x39e7,0x39c7,0x2965,0x2965,0x2985,0x2965,0x31c6,0x2965,0x2945,0x2985,0x2965,0x31a6,0x2965,0x2144,0x2124,0x2965,0x2986,0x2945,0x2985,0x1903,0x2124,0x2965,0x18c3,0x2965,0x2104,0x1903,0x2144,0x2124,0x2945,0x10a2,0x18e3,0x2103,0x2104,0x2124,0x2124,0x2944,0x2103,0x10a2,0x2124,0x2104,0x2103,0x18e3,0x18c3,0x18c3,0x2145,0x10c3,0x18c3,0x2103,0x18e3,0x2124,0x18e3,0x2104,0x18e3,0x2124,0x2124,0x2103,0x18e3,0x18e3,0x18c3,0x2124,0x18e3,0x2124,0x2124,0x2104,0x1082,0x1082,0x18c3,0x1081,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x10a2,0x10a2,0x1903,0x18e3,0x18c3,0x1082,0x18e3,0x18e3,0x10a2,0x10a2,0x2104,0x2124,0x2103,0x2104,0x2103,0x2104,0x18c3,0x2124,0x2944,0x1903,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x0820,0x2144,0x2124,0x18e3,0x18e3,0x2104,0x18e3,0x2965,0x18e3,0x2104,0x18e3,0x18c3,0x2124,0x2124,0x2945,0x2103,0x1903,0x2104,0x18e3,0x2124,0x2124,0x2124,0x1903,0x2965,0x2124,0x1903,0x2144,0x2104,0x2945,0x31c6,0x2965,0x31a6,0x1903,0x2124,0x2965,0x31a6,0x2945,0x2985,0x2965,0x18c2,0x2986,0x2986,0x2124,0x1903,0x18e3,0x31a6,0x2145,0x18e3,0x1903,0x1904,0x2965,0x31a6,0x2944,0x2124,0x18e3,0x4a69,0x3186,0x20e4,0x2124,0x31a6,0x39e7,0x3186,0x18e3,0x39c7,0x31a6,0x3186,0x18e3,0x31c6,0x31a6,0x31a6,0x4a69,0x39e7,0x2124,0x2965,0x39e7,0x39e7,0x39e7,0x39c7,0x3186,0x31a6,0x3a07,0x2986,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x39c6,0x2965,0x3186,0x39e7,0x2145,0x4a89,0x4228,0x4a69,0x3a07,0x4208,0x4a69,0x31c6,0x52cb,0x4a48,0x4228,0x4a69,0x5acb,0x4249,0x52aa,0x52aa,0x52aa,0x4a69,0x4248,0x4228,0x52aa,0x4a69,0x4a8a,0x52ca,0x5aeb,0x52aa,0x4a89,0x39c7,0x630b,0x5289,0x4a48,0x5289,0x52aa,0x5acb,0x630c,0x5acb,0x634c,0x634c,0x5aeb,0x5aea,0x73ae,0x6b6d,0x6b4c,0x73ae,0x7bcf,0x6b8d,0x73ae,0x738d,0x5b0b,0x632c,0x634c,0x73ce,0x73ae,0x7c0f,0x7bce,0x8410,0x8430,0x7bef,0x7c0f,0x94b2,0x8430,0x8c71,0x8430,0x9491,0x8c71,0x9cf3,0x8c71,0x840f,0x7bef,0x7c0f,0x7bef,0x94b1,0x8c71,0x8450,0x7bef,0x7bcf,0x840f,0x8450,0x8450,0x8c71,0x8430,0x8c91,0x7bef,0x7c0f,0x8430,0x738d,0x73ce,0x73ae,0x7bef,0x8c91,0x7bef,0x7bef,0x7bce,0x7bce,0x8c71,0x8c71, +0x1062,0x1082,0x18a3,0x1062,0x0840,0x0820,0x0000,0x0021,0x10c3,0x10c3,0x0861,0x10a2,0x0821,0x0820,0x18c2,0x10a2,0x1082,0x0040,0x0861,0x10a2,0x18c2,0x10a2,0x10a2,0x0861,0x10a2,0x10a2,0x1082,0x10a2,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x18c3,0x10c3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x10a2,0x10c3,0x10a2,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x10c2,0x10a2,0x1081,0x0881,0x10c2,0x10a2,0x10a2,0x18c3,0x1081,0x1081,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10a2,0x10c2,0x1082,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x1082,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10c3,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x18c3,0x0861,0x0841,0x10a2,0x0881,0x1061,0x1082,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x10a2,0x10a2,0x10c2,0x18e3,0x10a2,0x1082,0x1082,0x10c2,0x1082,0x10a2,0x0841,0x10a2,0x0861,0x1081,0x10a2,0x0861,0x0861,0x1081,0x10a2,0x1082,0x0861,0x10a2,0x10a2,0x1082,0x0861,0x0841,0x0820,0x1081,0x1081,0x0841,0x1082,0x0020,0x0000,0x0840,0x0841,0x1082,0x10a2,0x0862,0x0000,0x0041,0x0840,0x0020,0x10a2,0x0000,0x0000,0x0841,0x1082,0x1082,0x0000,0x0020,0x0861,0x1082,0x1082,0x0000,0x0000,0x0020,0x0020,0x0861,0x0000,0x0841,0x0841,0x1082,0x0020,0x0000,0x0020,0x10a2,0x0000,0x0020,0x0841,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0021,0x0000,0x0020,0x0840,0x0840,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0861,0x0020,0x0000,0x18c2,0x0000, +0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a28,0x31c6,0x39e7,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x4248,0x3a07,0x3a07,0x3a28,0x4228,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x39e7,0x3a07,0x3a07,0x4228,0x3a28,0x39e7,0x3a07,0x3a07,0x3a28,0x4228,0x39e7,0x4228,0x4248,0x3a28,0x4228,0x4228,0x3a07,0x4207,0x4248,0x4228,0x4228,0x3a27,0x3a07,0x4228,0x4228,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x4248,0x4228,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x39e7,0x4248,0x3a07,0x4228,0x3a28,0x4268,0x4228,0x3a07,0x39e7,0x3a08,0x3a07,0x39e7,0x39e7,0x3a08,0x3a28,0x3a08,0x4228,0x39c6,0x3a07,0x31e7,0x39e7,0x3a07,0x3a28,0x3a07,0x4228,0x3a07,0x4228,0x3a08,0x3a08,0x3a07,0x3a07,0x4207,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x4248,0x4228,0x3a28,0x3a28,0x4248,0x4268,0x4248,0x4248,0x4269,0x4228,0x4228,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4248,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4228,0x4249,0x3a28,0x4228,0x4a89,0x3a28,0x3a28,0x3a28,0x4228,0x4228,0x3a07,0x3a28,0x4208,0x3a08,0x4249,0x4228,0x4228,0x4228,0x4269,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4248,0x4249,0x4208,0x4248,0x4248,0x4248,0x4269,0x4228,0x4228,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4248,0x4228,0x4228,0x3a07,0x4248,0x4228,0x4269,0x4228,0x4248,0x4248,0x4248,0x4249,0x4248,0x4228,0x4248,0x4248,0x4208,0x4228,0x4228,0x4249,0x4248,0x4248,0x4228,0x3a08,0x4228,0x4248,0x4228,0x4208,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4208,0x4228,0x4228,0x3a07,0x3a08,0x3a08,0x4208,0x3a08,0x4228,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x3a08,0x4208,0x3a07,0x3a08,0x4228,0x3a08,0x4208,0x4228,0x4248,0x3a08,0x4228,0x4a69,0x4248,0x4208,0x3a08,0x4228,0x3a07,0x4208,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4208,0x39e7,0x3a07,0x39e7,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x39e7,0x3a08,0x39e7,0x3a07,0x39e7,0x3a07,0x4208,0x4208,0x4228,0x4228,0x4208,0x4208,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c6,0x39e7,0x39c7,0x39c7,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2124,0x2124,0x2945, +0x3a28,0x4228,0x39e7,0x31e7,0x4228,0x3a07,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4208,0x3a07,0x3a07,0x4208,0x4228,0x4208,0x3a28,0x3a07,0x4228,0x4228,0x3a07,0x4208,0x4208,0x3a07,0x3a08,0x4228,0x4248,0x3a07,0x4248,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a28,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x3a07,0x4248,0x3a28,0x4228,0x4248,0x3a07,0x3a28,0x3a28,0x4228,0x4228,0x4228,0x3a28,0x3a27,0x4248,0x4248,0x4248,0x3a07,0x3a28,0x4228,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4228,0x4248,0x3a07,0x4228,0x4248,0x4228,0x4248,0x4227,0x39e7,0x3a28,0x4248,0x4228,0x4248,0x4228,0x4248,0x4a69,0x4228,0x4248,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4249,0x4248,0x3a28,0x3a07,0x4228,0x4248,0x4248,0x3a07,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4228,0x3a28,0x4a89,0x4228,0x4268,0x4248,0x4228,0x4248,0x4248,0x4269,0x4a89,0x4248,0x4248,0x4228,0x4248,0x4aaa,0x4a69,0x4248,0x4a89,0x4248,0x4a89,0x4a89,0x4a89,0x4269,0x4269,0x4a89,0x4248,0x4a69,0x4269,0x4248,0x4a89,0x4a89,0x4268,0x4a89,0x4268,0x4268,0x4a89,0x4228,0x4248,0x4a69,0x4a49,0x4a69,0x4248,0x4a89,0x4248,0x4a69,0x4269,0x4a69,0x4a69,0x4269,0x4248,0x4aaa,0x4a89,0x4248,0x52aa,0x52aa,0x4a89,0x4a89,0x4248,0x4a69,0x4a89,0x4a69,0x4a89,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a69,0x4a89,0x52aa,0x4aaa,0x4a89,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4aaa,0x52aa,0x4a89,0x52ca,0x4a89,0x4a89,0x4a89,0x4a89,0x4aaa,0x4a89,0x4a69,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x4a8a,0x4a69,0x4aa9,0x4a89,0x4a69,0x4a89,0x5aeb,0x4a89,0x52aa,0x4a89,0x4aaa,0x4248,0x4a89,0x52a9,0x52aa,0x5b0b,0x52aa,0x4a69,0x4aaa,0x4a89,0x4a89,0x4a89,0x4aaa,0x52ca,0x4a89,0x4a8a,0x4aaa,0x4a69,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4aaa,0x4a69,0x4249,0x4249,0x4a89,0x4a89,0x52aa,0x52aa,0x4a8a,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4aaa,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x4248,0x4a69,0x4269,0x4248,0x4a49,0x4a48,0x4a89,0x4a69,0x4a69,0x4a48,0x4228,0x4a69,0x4a89,0x4a69,0x4a49,0x4a69,0x4a69,0x4a8a,0x4a49,0x4a49,0x4a49,0x4228,0x528a,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x4228,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4248,0x4248,0x4a69,0x4249,0x4a69,0x4a69,0x4a89,0x5aca,0x4a89,0x4a89,0x4a8a,0x4a69,0x4a89,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4248,0x4228,0x5289,0x4a69,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4a89, +0x4a49,0x4228,0x4228,0x4a69,0x4228,0x3a07,0x4248,0x4228,0x4248,0x4208,0x4248,0x4248,0x3a07,0x4248,0x4a49,0x4208,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x52aa,0x4228,0x4228,0x4a48,0x4a48,0x4248,0x4248,0x4248,0x4207,0x4a48,0x3a07,0x4248,0x4228,0x4208,0x4a89,0x4a69,0x4228,0x4228,0x4228,0x4249,0x4a69,0x4a69,0x4269,0x4248,0x4228,0x4248,0x4248,0x4248,0x4269,0x4248,0x4228,0x4269,0x4a69,0x4a69,0x4248,0x4249,0x4248,0x4a69,0x4a89,0x4269,0x4228,0x4a69,0x4269,0x4269,0x4a69,0x4228,0x4a89,0x4269,0x4268,0x4a89,0x4a89,0x4a89,0x4aaa,0x4a8a,0x4228,0x4228,0x4228,0x4a69,0x4a89,0x4208,0x4248,0x4269,0x4248,0x4a89,0x4269,0x4a89,0x4268,0x4a89,0x4269,0x4269,0x4269,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4228,0x4248,0x4a69,0x4a89,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4268,0x4a69,0x4248,0x4a89,0x4a89,0x4a89,0x4269,0x4a69,0x4269,0x4aa9,0x4aaa,0x4268,0x4aaa,0x4a89,0x52ca,0x4a69,0x4248,0x4a89,0x4a69,0x4a89,0x4a89,0x4aa9,0x4269,0x4269,0x4aa9,0x4aaa,0x52ca,0x4aa9,0x4a89,0x4aca,0x4aaa,0x4248,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4a89,0x52ca,0x4269,0x4a89,0x4a89,0x4a69,0x52aa,0x4248,0x4a89,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4a89,0x4aaa,0x52aa,0x4a89,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a69,0x4a89,0x4aaa,0x4a89,0x52ca,0x4a89,0x52aa,0x52ea,0x4269,0x4a89,0x4aa9,0x52aa,0x52aa,0x4aaa,0x4aaa,0x52eb,0x52ca,0x52ea,0x52ea,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52eb,0x5b2c,0x52ca,0x52ca,0x52ca,0x52aa,0x4a89,0x52aa,0x4a8a,0x52ca,0x52ca,0x52ca,0x4aa9,0x4a89,0x52ca,0x52ca,0x52aa,0x52eb,0x5b0b,0x52ca,0x528a,0x5aeb,0x5b0b,0x52ea,0x5aeb,0x52aa,0x4a89,0x4a8a,0x4a89,0x4a89,0x52aa,0x5b0b,0x5aeb,0x5aca,0x4aaa,0x52aa,0x52eb,0x52ca,0x4a69,0x528a,0x4a69,0x52aa,0x52ca,0x4a69,0x4a69,0x4a89,0x4a89,0x4a89,0x52aa,0x52eb,0x528a,0x52aa,0x52aa,0x52ca,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x4248,0x4a69,0x4a48,0x4a48,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a69,0x4228,0x4248,0x4249,0x4a69,0x4a69,0x4a69,0x4249,0x4a49,0x4a69,0x4a89,0x4248,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4249,0x4228,0x4a49,0x4a49,0x4a69,0x4a48,0x52aa,0x4a69,0x4a8a,0x4a89,0x4a69,0x4a89,0x4a69,0x4248,0x4a69,0x528a,0x4a69,0x4a69,0x4a69,0x4a69, +0x3185,0x31c6,0x31a6,0x39c6,0x39c6,0x31a6,0x2965,0x2986,0x31a6,0x2985,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x3185,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x39c6,0x3186,0x31c6,0x31a6,0x3186,0x3185,0x31a6,0x2965,0x3186,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x39e7,0x31a6,0x39c6,0x39c7,0x2985,0x31c6,0x31c6,0x39c6,0x31c6,0x39c6,0x39c7,0x39c6,0x31a6,0x39c6,0x31c6,0x39e7,0x31c6,0x31a6,0x31a6,0x39c6,0x31c6,0x31a6,0x39c7,0x31a6,0x3a07,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x39e7,0x31a6,0x3185,0x3186,0x39e7,0x39c7,0x3186,0x2965,0x31c6,0x31c6,0x31a6,0x2985,0x39e7,0x39c6,0x39c6,0x3186,0x2985,0x31a6,0x31c6,0x39c7,0x31c6,0x31c6,0x39e7,0x3185,0x3186,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x2985,0x31e7,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a5,0x31c6,0x31c6,0x31a6,0x31c6,0x39e7,0x39e7,0x31c6,0x31a6,0x31a6,0x31a6,0x3a07,0x31a6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x31a5,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31c6,0x31c6,0x31a6,0x3a07,0x2985,0x31c6,0x31c7,0x31a6,0x3a07,0x39e7,0x31c6,0x31c6,0x31a6,0x31c6,0x39e7,0x31a6,0x31a6,0x3186,0x31c6,0x31c7,0x31e6,0x31c6,0x31c6,0x31a6,0x39c6,0x31a6,0x2965,0x31c6,0x39e7,0x39e7,0x39e7,0x3a07,0x31c6,0x39e7,0x31a6,0x31c6,0x31c6,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x31a6,0x4208,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x39e7,0x4248,0x31e7,0x39e7,0x4228,0x39e7,0x31a6,0x39c7,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a6,0x31a6,0x31c6,0x39e7,0x39c7,0x4248,0x4a69,0x31c6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x39e6,0x3a27,0x3a07,0x39c7,0x31c6,0x31c6,0x39e7,0x39e7,0x31a6,0x39c7,0x31a6,0x39e7,0x31a6,0x31c6,0x3186,0x31a6,0x31c6,0x31c6,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x31c6,0x39e7,0x31c6,0x31c6,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39c6,0x31c6,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31c6,0x3a07,0x4228,0x39c6,0x31a6,0x31a6,0x3a07,0x3a07,0x39c7,0x31c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x39c7,0x31a6,0x39c7,0x39e7,0x4208,0x4228,0x39e7,0x39e7,0x39c6,0x39c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39e7,0x31c6,0x4228,0x4208,0x4a49,0x528a,0x3a08,0x4a49,0x4a69, +0x52ca,0x52ca,0x52ea,0x52ca,0x5b0b,0x5aea,0x52ca,0x5aea,0x5b0b,0x52ca,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x5aca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ca,0x4a69,0x4aa9,0x5aea,0x52aa,0x4a89,0x52ca,0x5aeb,0x52ea,0x52ea,0x5b0b,0x5aeb,0x52aa,0x4aaa,0x52ca,0x5aeb,0x52ea,0x52ea,0x52eb,0x5b0b,0x52eb,0x52aa,0x52ea,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x5aea,0x52ca,0x52ca,0x5289,0x5aca,0x52aa,0x52ca,0x52ea,0x52ca,0x52ca,0x4aa9,0x52ca,0x5b0b,0x52ca,0x52ca,0x52aa,0x4a89,0x4a69,0x52ca,0x4a89,0x5aeb,0x4aa9,0x4aa9,0x52ca,0x4a89,0x52ca,0x52ca,0x52aa,0x52ca,0x52ea,0x4aa9,0x52ca,0x528a,0x4a89,0x52ea,0x52ca,0x52ea,0x5b0b,0x52a9,0x52aa,0x52ca,0x52ca,0x4a89,0x4aa9,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x5aeb,0x52aa,0x52ca,0x52ea,0x52ea,0x52ca,0x52ea,0x52ea,0x52ca,0x52ca,0x5b0b,0x52ea,0x4a89,0x52ca,0x5b2b,0x52aa,0x52aa,0x52ea,0x52ca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x4a89,0x52ca,0x52ca,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x52ca,0x52ea,0x52ea,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x4aa9,0x5b0b,0x52eb,0x52ea,0x5aeb,0x52ea,0x52eb,0x52eb,0x5b0b,0x52ca,0x4a89,0x4aaa,0x52eb,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x52aa,0x4aaa,0x530b,0x52ca,0x52ca,0x52ca,0x4aa9,0x52a9,0x52ca,0x52ca,0x52ea,0x5aeb,0x52ca,0x4aa9,0x52ca,0x52eb,0x4aaa,0x52ca,0x4a89,0x52ca,0x52ca,0x4a89,0x52eb,0x5aeb,0x5aeb,0x52ea,0x52ca,0x5b0b,0x5aeb,0x5b0b,0x632c,0x52ca,0x5b2b,0x5b2c,0x52eb,0x52eb,0x52ca,0x52aa,0x52eb,0x52ea,0x5b0b,0x52ca,0x4aaa,0x52ca,0x5aca,0x5b0b,0x5b0b,0x52aa,0x5aeb,0x5b0b,0x52aa,0x52ca,0x4aaa,0x5b2c,0x632c,0x52cb,0x5b0b,0x52ca,0x5b0b,0x4aaa,0x4a89,0x5b0b,0x52ea,0x5aea,0x52eb,0x52ca,0x5aeb,0x5b2c,0x4a89,0x52ca,0x5acb,0x5aeb,0x5aeb,0x4a89,0x52aa,0x5aeb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x4a8a,0x52aa,0x52ca,0x52ca,0x52aa,0x4a69,0x4a89,0x52eb,0x52aa,0x52aa,0x4a8a,0x4a89,0x52aa,0x4aaa,0x52ca,0x52aa,0x4aaa,0x52aa,0x4248,0x52aa,0x4a69,0x5acb,0x4a69,0x4a69,0x4a69,0x5289,0x4a49,0x4a89,0x4a69,0x4a89,0x4a69,0x528a,0x5aeb,0x528a,0x4248,0x4a69,0x4a89,0x4a89,0x4a48,0x4a49,0x4a89,0x4a49,0x4a69,0x4a69,0x4a69,0x4269,0x4a89,0x4248,0x4248,0x5289,0x4248,0x4228,0x4228,0x4a69,0x4228,0x4a48,0x4248,0x39e7,0x4228,0x4a89,0x5289,0x4a48,0x4228,0x4228,0x4207,0x4207,0x4228,0x4228,0x3a08,0x4208,0x4228,0x4248,0x4228,0x31c7,0x39e7,0x4248,0x4208,0x4228, +0x5b0b,0x5b2b,0x632b,0x5b0b,0x52eb,0x52ca,0x636c,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x52eb,0x52ea,0x5b2b,0x634c,0x5b2c,0x52eb,0x5b0b,0x5aeb,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5aeb,0x636c,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x5b4c,0x634c,0x634c,0x5b2b,0x5b4c,0x634c,0x5b0b,0x5b4b,0x530b,0x5b0b,0x5b2c,0x5b2b,0x636c,0x5b2c,0x52eb,0x5b0b,0x634c,0x5b0b,0x5b2c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x52eb,0x5b2b,0x52ca,0x5b2b,0x5b2c,0x52ea,0x530a,0x52ea,0x5b4c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x6b8d,0x530b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x634c,0x5b2b,0x52eb,0x4aca,0x52eb,0x5b4c,0x5b0b,0x5b0b,0x634c,0x634c,0x52ca,0x632c,0x5b2b,0x52ea,0x5b4c,0x634c,0x636c,0x638d,0x5b2b,0x5b4c,0x636d,0x5b4c,0x634c,0x636c,0x634c,0x632c,0x5b2b,0x5b2b,0x636c,0x6b8d,0x5b2b,0x5b2b,0x5b6c,0x638d,0x5b4c,0x52ea,0x5b4c,0x5b4c,0x5b2b,0x636c,0x5b4c,0x638d,0x5b4c,0x5b4c,0x636c,0x5b4c,0x5b2c,0x636d,0x5b2b,0x5b4c,0x634c,0x634c,0x6bad,0x638d,0x638d,0x636c,0x5b4c,0x5b6c,0x5b2c,0x634c,0x5b2c,0x5b2b,0x638d,0x636c,0x638d,0x5b2b,0x5b4c,0x634c,0x634c,0x5b2b,0x636c,0x636c,0x634c,0x634c,0x5b2b,0x5b2b,0x634c,0x5b4c,0x634c,0x5b4c,0x634c,0x634c,0x634c,0x636c,0x5b4c,0x634c,0x634c,0x636c,0x634c,0x5b2b,0x5b4c,0x5b6c,0x636c,0x638d,0x634c,0x632c,0x638d,0x636d,0x634c,0x5b4c,0x636c,0x636d,0x6b8d,0x6b6d,0x6b8d,0x634c,0x636d,0x5b2c,0x636c,0x636d,0x5b4c,0x5b2b,0x6b8d,0x636d,0x634c,0x638d,0x5b4c,0x634c,0x634c,0x6b6d,0x636c,0x5b2c,0x636d,0x636c,0x634c,0x636c,0x5b2c,0x634c,0x634c,0x632c,0x634c,0x632c,0x636c,0x634c,0x5b2b,0x6b8d,0x6b8d,0x634c,0x636c,0x636d,0x634c,0x636d,0x634c,0x632c,0x632c,0x632c,0x634c,0x5b2c,0x634c,0x636d,0x634c,0x632c,0x632c,0x6b6d,0x6b8d,0x634c,0x6b6d,0x634c,0x634c,0x5b0b,0x632c,0x634c,0x634c,0x634c,0x632c,0x632c,0x632c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x5b0b,0x5b0b,0x632b,0x5b2b,0x632c,0x632c,0x632c,0x632c,0x632b,0x5aeb,0x5b2b,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x630b,0x634c,0x634c,0x634c,0x632c,0x5b0b,0x5aeb,0x634c,0x6b6d,0x5aeb,0x634c,0x6b4c,0x5b0b,0x632c,0x634c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x634c,0x632c,0x632c,0x5b0b, +0x5b0b,0x632c,0x5aeb,0x52aa,0x5b2b,0x632c,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x632c,0x634c,0x634c,0x52ea,0x52ca,0x5b2c,0x5b2b,0x5aea,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x52eb,0x5aeb,0x5b2c,0x52eb,0x52ea,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x634c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x52ca,0x634c,0x634c,0x5b2c,0x5b2b,0x634c,0x530b,0x5b0b,0x5b0b,0x52ca,0x52ea,0x5b0b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x634c,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x52ea,0x634c,0x5b2b,0x5b4b,0x634c,0x52aa,0x52eb,0x5b2b,0x5b4c,0x634c,0x634c,0x634c,0x636c,0x634c,0x5b0b,0x632c,0x5b0b,0x634c,0x634c,0x636c,0x634c,0x5b2b,0x636c,0x636c,0x5b2b,0x5b0b,0x5b2b,0x5b4c,0x5b0b,0x5b2c,0x634c,0x634c,0x6b8d,0x634c,0x634c,0x5b2b,0x5b0b,0x634c,0x5b2c,0x636c,0x530b,0x634c,0x5b2c,0x530b,0x5b2b,0x52ea,0x5b0b,0x634c,0x5b2b,0x634c,0x52eb,0x52eb,0x5b4c,0x5b4c,0x52ca,0x4aaa,0x52eb,0x5b2c,0x636c,0x5b0b,0x530b,0x530b,0x5b4c,0x634c,0x5b2c,0x5b0b,0x5b0b,0x5b4c,0x4aca,0x52eb,0x634c,0x636c,0x636c,0x5b2b,0x5b2b,0x636c,0x5b4c,0x5b2b,0x636c,0x5b2b,0x52eb,0x634c,0x5b0b,0x632c,0x634c,0x6bad,0x5b4c,0x634c,0x5b2c,0x632c,0x5b2b,0x5b4c,0x636d,0x634c,0x5b2c,0x636d,0x5b2b,0x5b2b,0x634c,0x52ea,0x5b2b,0x632c,0x632c,0x5b2c,0x636c,0x5b0b,0x5b4c,0x636c,0x634c,0x5b2b,0x5b2b,0x636d,0x5b2c,0x5b0b,0x636c,0x634c,0x5b2c,0x634c,0x634c,0x632c,0x5aeb,0x5b0b,0x52eb,0x632c,0x632c,0x632c,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x634c,0x632c,0x5b0b,0x5b0b,0x634c,0x5b2c,0x636d,0x6b6d,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x634c,0x5aeb,0x5b0b,0x5b2b,0x634c,0x5b0b,0x634c,0x632c,0x634c,0x632c,0x5b0b,0x632b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x632c,0x630b,0x5aeb,0x632c,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aca,0x52ca,0x5acb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b2c,0x5b0b,0x634c,0x6b4c,0x630b,0x5b0b,0x5aeb,0x5b2b,0x632c,0x5b0b,0x5aeb,0x5b2b,0x5aeb,0x632c,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x632c,0x5b2c,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x630b,0x5aeb,0x5aeb,0x52aa,0x5b0b,0x5b0b,0x5aeb,0x632c,0x5aeb, +0x632c,0x634c,0x5b0b,0x630c,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x52ea,0x5aeb,0x5b0b,0x634c,0x632b,0x52ca,0x5aeb,0x5b0b,0x634c,0x52ca,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b2c,0x632c,0x5b2b,0x632c,0x5b0b,0x5b2b,0x5aeb,0x5b2b,0x530b,0x5b0b,0x634c,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5aeb,0x52ca,0x5aeb,0x5b0b,0x52ea,0x52ea,0x4a8a,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x5b0b,0x5b4c,0x530b,0x4aa9,0x5b0b,0x632c,0x52ea,0x5b2b,0x5b0b,0x52eb,0x5b2c,0x632c,0x530b,0x52eb,0x5b0b,0x5aeb,0x5b2c,0x5b2b,0x632c,0x530b,0x52ea,0x5b4c,0x638c,0x634c,0x636c,0x5b4c,0x5b4c,0x5b2c,0x4aaa,0x5b2b,0x5b0b,0x530b,0x5b2b,0x5b4c,0x5b2c,0x52eb,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x636c,0x5b2b,0x636c,0x636c,0x5b2b,0x52ea,0x634c,0x636c,0x5b2b,0x52ea,0x52ea,0x5b2b,0x530b,0x530b,0x5b4c,0x634c,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x5b2c,0x5b0b,0x5b2c,0x5b2c,0x634c,0x636c,0x5b2b,0x6b8d,0x638c,0x5b4c,0x5b2b,0x52ea,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x634c,0x52eb,0x5b2c,0x5b2c,0x634c,0x634c,0x5b2b,0x5b2b,0x636c,0x530b,0x5b4c,0x530b,0x5b0b,0x5b4c,0x5b2b,0x530b,0x5b2b,0x5b4c,0x634c,0x530b,0x5b2c,0x5b2c,0x636c,0x5b4c,0x634c,0x5b2b,0x5b2b,0x638d,0x636c,0x5b2c,0x638d,0x634c,0x5b2c,0x634c,0x5b4c,0x636d,0x5b2c,0x5b2c,0x638d,0x5b0b,0x5b0b,0x636d,0x5b2c,0x634c,0x5b0b,0x5b4c,0x634c,0x634c,0x5b4c,0x5b2b,0x5b2b,0x634c,0x5b4c,0x5b4c,0x6b8d,0x636d,0x5b0b,0x634c,0x5b4c,0x636d,0x5b2b,0x5b2c,0x5b0b,0x5b2c,0x636d,0x636d,0x634c,0x5b2b,0x5b2c,0x5b0b,0x636d,0x636d,0x634c,0x5b0b,0x5b0b,0x636d,0x636c,0x5b0b,0x632c,0x5b2c,0x5b2c,0x636c,0x5b2b,0x634c,0x5b0b,0x632c,0x632c,0x632c,0x5b2c,0x5b0b,0x5b2c,0x636d,0x632c,0x634c,0x632c,0x5b0b,0x5b0b,0x5aeb,0x632c,0x632c,0x5b0b,0x5b2c,0x632c,0x632c,0x5b0b,0x5b2c,0x5b0b,0x5b0c,0x5b0b,0x632c,0x5b0c,0x5b2c,0x632c,0x5b0b,0x634c,0x632c,0x630c,0x630b,0x5b0c,0x5b2c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5aeb,0x5b0b,0x52eb,0x5b0b,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x6b6d,0x634c,0x630b,0x634c,0x632b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x632c,0x5b0b,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x5b0b,0x5b2c,0x5aeb,0x632c,0x5b0b,0x5acb,0x630b,0x5b0b,0x632c,0x632c,0x634c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5aeb, +0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x632c,0x5b2b,0x5b2b,0x6bad,0x6bad,0x6bad,0x634c,0x5b2c,0x632c,0x5b2c,0x5b2c,0x73cd,0x6bad,0x5b0b,0x5b0b,0x634c,0x636c,0x636c,0x5b2b,0x636c,0x5b2b,0x634c,0x634c,0x636c,0x634c,0x634c,0x632c,0x634c,0x632c,0x5b0b,0x634c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x634c,0x634c,0x5b2b,0x634c,0x5b2c,0x5b2c,0x632c,0x5aeb,0x632c,0x5b2c,0x636c,0x636c,0x530b,0x5b2c,0x634c,0x5b0b,0x6b8d,0x636c,0x5b0b,0x5b2b,0x634c,0x636c,0x5b0b,0x5b0b,0x636c,0x638c,0x6bad,0x634c,0x5b2b,0x634c,0x636c,0x636c,0x5b0b,0x530b,0x634c,0x632c,0x5b2b,0x5b2c,0x634c,0x5aeb,0x6b6d,0x52ca,0x5b2b,0x634c,0x634c,0x52eb,0x636c,0x5b2c,0x6b8d,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x634c,0x5b2b,0x5b0b,0x4aca,0x5b2b,0x636d,0x5b0b,0x5aeb,0x5b0b,0x530a,0x634c,0x634c,0x634c,0x5b2b,0x5b2b,0x636c,0x5b4c,0x636c,0x6bad,0x634c,0x5b2b,0x634c,0x5b0b,0x5b2b,0x5b4c,0x52ea,0x5b2c,0x5b0b,0x5b4c,0x636c,0x5b2c,0x5b2b,0x5b2b,0x636d,0x638d,0x5b4c,0x636c,0x6bad,0x636c,0x638d,0x5b6c,0x634c,0x6b8d,0x634c,0x5b2b,0x636c,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x636d,0x5b0b,0x5b4c,0x638d,0x5b4c,0x638d,0x636c,0x52ea,0x530b,0x5b0b,0x638d,0x634c,0x636c,0x5b4c,0x638d,0x636d,0x5b4c,0x5b4c,0x5b4c,0x5b0b,0x5b2b,0x530b,0x5b4c,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b2c,0x634c,0x5b4c,0x636d,0x634c,0x530b,0x636d,0x530b,0x5b2c,0x5b4c,0x5b4c,0x636c,0x636d,0x5b2c,0x5b0b,0x638d,0x5b4c,0x638c,0x638d,0x636c,0x638d,0x634c,0x634c,0x6bad,0x636d,0x6b6d,0x6b8d,0x634c,0x634c,0x636d,0x5b2c,0x634c,0x5b0c,0x636d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x634c,0x73ae,0x636d,0x634c,0x636c,0x6b8d,0x6b8d,0x636d,0x636d,0x634c,0x634c,0x634c,0x6b6c,0x634c,0x5b2c,0x632c,0x636d,0x634c,0x5b0c,0x5b0b,0x6b8d,0x634c,0x5b2b,0x634c,0x5b2c,0x5b4c,0x5b2b,0x636c,0x5b0b,0x5b0c,0x52eb,0x5b4c,0x5b0b,0x5b2c,0x634c,0x636d,0x634c,0x52eb,0x5aeb,0x5aeb,0x5b2c,0x632c,0x632c,0x5b0b,0x634c,0x634c,0x5b0b,0x5b0b,0x630c,0x630b,0x632c,0x632c,0x5b0b,0x632c,0x632c,0x5b0b,0x5b2b,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x630c,0x5aeb,0x5b0b,0x5b2c,0x6b6c,0x5aeb,0x5aeb,0x5b0c,0x5b0b,0x5b0b,0x52ca,0x52ca,0x52aa,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x634c,0x5aeb,0x5b0b,0x52ca,0x5aca,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x632c,0x5aca,0x5aca,0x5aeb,0x5aca,0x52ca,0x52ca,0x5b0b,0x52ca,0x632c,0x632c,0x5acb,0x52ca,0x5aca,0x5b0b,0x632c,0x5b0b,0x5aeb, +0x73ee,0x7bef,0x7c0f,0x6b8d,0x73ef,0x7c0f,0x740e,0x73ce,0x6b8d,0x6b8d,0x740f,0x6bae,0x73ce,0x7c2f,0x73ce,0x6bcd,0x638d,0x6bad,0x740f,0x73ee,0x6bad,0x73ce,0x6bcd,0x73ee,0x73ee,0x6bad,0x6bad,0x73ee,0x6bcd,0x636c,0x636c,0x636c,0x634c,0x636d,0x634c,0x634c,0x636c,0x634c,0x634c,0x638d,0x634c,0x5b2b,0x638d,0x6bce,0x5b0b,0x5b4c,0x636c,0x634c,0x636c,0x634c,0x636c,0x5b2b,0x636c,0x52ea,0x634c,0x6bad,0x52ca,0x5b0b,0x5b0b,0x5b2b,0x5b4b,0x5b2b,0x52ea,0x5b2c,0x5b2b,0x52ca,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x4a89,0x4269,0x5b0b,0x4a89,0x5aeb,0x4aa9,0x52ca,0x52ca,0x634c,0x5b0b,0x39e7,0x52ca,0x5b0b,0x5b0b,0x3a28,0x52ea,0x4248,0x4248,0x4269,0x3a28,0x4249,0x4228,0x4248,0x4aaa,0x4269,0x4228,0x52ca,0x4aaa,0x4228,0x4248,0x4269,0x4aa9,0x4268,0x52ca,0x4a89,0x4a89,0x52ca,0x4a69,0x4a89,0x4269,0x4a69,0x5aeb,0x4aa9,0x4268,0x4248,0x4248,0x4269,0x4248,0x4248,0x52aa,0x4269,0x4269,0x4a89,0x3a07,0x4248,0x4269,0x4248,0x4a69,0x4228,0x4228,0x4269,0x4248,0x3a07,0x4249,0x4248,0x4a89,0x4a89,0x4289,0x4a89,0x4a89,0x4269,0x4248,0x3a07,0x4a69,0x52ca,0x4289,0x4a89,0x4aa9,0x4a89,0x4248,0x3a28,0x4228,0x4a89,0x52ca,0x4aa9,0x4248,0x4228,0x4a89,0x4269,0x4228,0x4248,0x4a89,0x4a69,0x4268,0x4a89,0x4a89,0x4248,0x52ca,0x4269,0x4a69,0x4a89,0x4a89,0x4a69,0x52eb,0x52ca,0x4aaa,0x4aaa,0x52eb,0x4aaa,0x4a89,0x52ca,0x52ca,0x5b0b,0x52eb,0x52ca,0x52aa,0x634c,0x52ca,0x636c,0x52ea,0x5b2b,0x4aaa,0x5b2c,0x52eb,0x532b,0x5b4c,0x5acb,0x5b0b,0x5b0b,0x52eb,0x5aeb,0x5b2c,0x5b2c,0x5b2c,0x634c,0x6b8d,0x636d,0x52eb,0x636d,0x5b2c,0x632c,0x73ce,0x5b0b,0x634c,0x5b2b,0x636d,0x638d,0x636c,0x73ee,0x636d,0x636d,0x6b8d,0x6bad,0x6bae,0x7c0f,0x6bae,0x6b6d,0x6b8d,0x73ce,0x73ce,0x6bae,0x6b8d,0x6bae,0x6bae,0x73ce,0x7c0f,0x6b8d,0x7c0f,0x73ce,0x6bae,0x7c0f,0x73ae,0x73ce,0x7bef,0x73ef,0x73ce,0x7bef,0x73ef,0x7c30,0x8450,0x6bad,0x7c10,0x73ae,0x94b2,0x73ce,0x6bae,0x73ce,0x73ae,0x7bce,0x73ce,0x73ce,0x73ee,0x7c0f,0x73ae,0x7bef,0x73ce,0x73ee,0x7c0f,0x7c2f,0x7c0f,0x73ae,0x7bef,0x840f,0x73ce,0x73ae,0x8430,0x8c50,0x7c0f,0x7c0f,0x7c0f,0x8c71,0x73ae,0x6b8d,0x73ae,0x8430,0x8430,0x7c0f,0x8c91,0x73ee,0x73ce,0x6b6d,0x73ef,0x73ce,0x73ae,0x73ce,0x73ae,0x7bef,0x8430,0x73ae,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x73ae,0x73ce,0x73ce,0x8430,0x8430,0x7c0f,0x73ce,0x6b8d,0x73ae,0x73ae,0x636d,0x73ae,0x73ae,0x73ad,0x73ad,0x6b8d,0x632c, +0x52ca,0x52eb,0x52eb,0x5b0b,0x52eb,0x5b2b,0x52ca,0x5aea,0x52aa,0x4a89,0x5b0b,0x4269,0x52ca,0x52ca,0x52ca,0x4a89,0x4248,0x4a89,0x52eb,0x52ca,0x4aa9,0x4aaa,0x4268,0x4aaa,0x4a89,0x4248,0x4aa9,0x4a89,0x52ca,0x39e7,0x3a07,0x4248,0x4228,0x4a69,0x4269,0x3a07,0x4269,0x4248,0x4269,0x4248,0x4248,0x4228,0x4269,0x4a69,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x31a6,0x4a69,0x31a6,0x2985,0x3a08,0x3a08,0x31c6,0x31c6,0x4248,0x4228,0x3a08,0x4249,0x39e7,0x29a6,0x4228,0x2985,0x3a07,0x2985,0x2944,0x39e7,0x39e7,0x2985,0x31c6,0x31c6,0x2985,0x4228,0x31c6,0x2965,0x39e7,0x3186,0x2144,0x2965,0x31c7,0x2945,0x2945,0x31a6,0x2124,0x2965,0x2965,0x2124,0x2124,0x2145,0x2986,0x3a07,0x31e7,0x2965,0x31a6,0x2144,0x2965,0x31a6,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2965,0x2986,0x2986,0x2965,0x1904,0x2985,0x31a6,0x2945,0x2965,0x2985,0x2965,0x2144,0x2144,0x2144,0x2965,0x2104,0x2124,0x2124,0x2144,0x2945,0x2965,0x18e3,0x1903,0x1903,0x2124,0x2985,0x2124,0x2945,0x2985,0x2124,0x18e3,0x2124,0x2965,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2144,0x2944,0x1903,0x2985,0x2985,0x2144,0x2965,0x2124,0x31c7,0x2985,0x2144,0x2985,0x2986,0x39e7,0x31a6,0x2965,0x31a6,0x2985,0x31a6,0x2965,0x31a6,0x3a07,0x2965,0x31a6,0x31a6,0x1903,0x2965,0x31e7,0x2985,0x31e7,0x31c6,0x31e7,0x31e7,0x3a07,0x31e7,0x39e7,0x31c6,0x4228,0x39e7,0x31c6,0x31c6,0x4a69,0x39e7,0x31c6,0x4269,0x3a08,0x39e7,0x3a07,0x4228,0x4269,0x3a28,0x4a8a,0x4228,0x3a08,0x4a69,0x3a07,0x4a69,0x3a07,0x4a89,0x4248,0x4a89,0x3a07,0x52ca,0x4a8a,0x52eb,0x4a89,0x52ea,0x52aa,0x4aaa,0x52eb,0x4aaa,0x4269,0x52eb,0x52eb,0x5aeb,0x632c,0x5aeb,0x634c,0x52eb,0x5aeb,0x4a89,0x5aeb,0x52aa,0x52eb,0x73ae,0x52aa,0x5aeb,0x6b6d,0x73ae,0x6b8d,0x6b8d,0x6b8d,0x634c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x634c,0x636d,0x7bef,0x6b6d,0x6b8d,0x6b6d,0x632c,0x73ce,0x5b0b,0x636d,0x6b6d,0x6b8d,0x634c,0x6b4d,0x6b8d,0x6b6d,0x6b4c,0x6b6d,0x73ce,0x6bae,0x6b8e,0x6b4c,0x7bef,0x7bef,0x73cf,0x73ae,0x8430,0x8430,0x7bef,0x8c50,0x94b1,0x8c50,0x7bef,0x8450,0x8430,0x7c0f,0x7bef,0x7bef,0x8c71,0x8430,0x8410,0x8450,0x8450,0x7c0f,0x7bef,0x7bef,0x7c0f,0x8430,0x8450,0x7c10,0x8450,0x94b2,0x7c0f,0x8450,0x8c71,0x9cd3,0x8430,0x7c0f,0x7c0f,0x8c91,0x8450,0x8c71,0x94d2,0x840f,0x8430,0x7c0f,0x8471,0x8430,0x94d2,0x8c91,0x8450,0x8410,0x7c0f,0x7c0f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0820,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0820,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0821,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x0861,0x0820,0x1082,0x1061,0x1081,0x1061,0x0861,0x0861,0x10a2,0x0000,0x0000,0x0020,0x1082,0x1081,0x18e3,0x18e3,0x18e3,0x0861,0x1082,0x18c3,0x18c3,0x0000,0x0000,0x2124,0x18c3,0x2124,0x18c3,0x18e3,0x2104,0x2103,0x31a6,0x2965,0x2965,0x20e3,0x2965,0x3186,0x2945,0x3186,0x2965,0x18e3,0x2945,0x2965,0x4208,0x4208,0x2966,0x2945,0x2945,0x39c7,0x31a7,0x2965,0x2985,0x31a6,0x39c7,0x39e7,0x4a49,0x39c7,0x4208,0x4228,0x4228,0x39e7,0x39e7,0x39e7, +0x3186,0x31c6,0x31a6,0x31c6,0x31a6,0x29a5,0x31c6,0x3a07,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31c6,0x31a6,0x31a5,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x39e7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2985,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x3186,0x3185,0x2985,0x31a6,0x2985,0x31a6,0x29a6,0x2985,0x2985,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x29a6,0x29a6,0x2985,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31a6,0x31c6,0x31a6,0x2986,0x2985,0x31c6,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2985,0x2985,0x2965,0x2965,0x3186,0x2985,0x3185,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2965,0x2985,0x3a07,0x31a6,0x2965,0x31a6,0x2965,0x2986,0x31c7,0x3186,0x2965,0x2965,0x2985,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2985,0x3185,0x2965,0x2985,0x2985,0x31c6,0x29a6,0x2965,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2945,0x3186,0x3186,0x2965,0x2144,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2945,0x2145,0x2945,0x2965,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2144,0x2965,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2144,0x2103,0x2103,0x2144,0x2124,0x2103,0x18c3,0x18e3,0x10a2,0x2104,0x2104,0x18c3,0x18e3,0x18c2,0x18a2,0x18e3,0x18e3,0x10a2,0x0020,0x0040,0x10a1,0x10a2,0x10a2,0x0840,0x0020,0x0840,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x39e7,0x3a07,0x3a08,0x3a07,0x3a28,0x3a28,0x3a07,0x4208,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a28,0x3a07,0x4208,0x3a07,0x3a08,0x3a07,0x39e7,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x39e7,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x4208,0x4228,0x3a07,0x3a28,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x3a08,0x3a07,0x3a28,0x4228,0x3a07,0x4228,0x4208,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x4207,0x4228,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x3a07,0x3a08,0x3a07,0x4228,0x3a07,0x3a27,0x4228,0x3a07,0x4207,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x3a07,0x3a27,0x4248,0x4228,0x4248,0x4228,0x39e7,0x3a07,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4268,0x4228,0x4228,0x4228,0x3a27,0x4228,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4248,0x3a27,0x4269,0x4248,0x3a08,0x4248,0x4228,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4a89,0x4228,0x4248,0x4269,0x4248,0x3a28,0x4248,0x4248,0x3a08,0x4248,0x4269,0x4248,0x4268,0x4248,0x4248,0x4248,0x4269,0x4248,0x4248,0x4228,0x4a69,0x4248,0x4228,0x4248,0x4269,0x4248,0x4268,0x4268,0x4248,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a48,0x4248,0x4248,0x4268,0x4248,0x4a69,0x4269,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4228,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4268,0x4269,0x4249,0x4a69,0x4269,0x4249,0x4228,0x4a69,0x4a69,0x4268,0x4248,0x4269,0x4269,0x4249,0x4a89,0x4269,0x4248,0x4269,0x4248,0x4248,0x4a49,0x4a69,0x4269,0x4269,0x4249,0x4249,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4a48,0x4248,0x4a69,0x4248,0x4269,0x4269,0x4a48,0x4a69,0x4a89,0x4a69,0x4a69,0x4a49,0x4248,0x4248,0x4228,0x4a49,0x4248,0x4248,0x4228,0x4228,0x4228,0x4249,0x4a69,0x4248,0x4249,0x4a69,0x4228,0x4248,0x4269,0x4248,0x4228,0x4248,0x4a69,0x4248,0x4228,0x4248,0x4269,0x4228,0x4228,0x4249,0x4249,0x4248,0x4228,0x4a49,0x4a69,0x4269,0x4248,0x4228,0x4248,0x4248,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4248,0x4a49,0x4248,0x4248,0x4a69,0x4a49,0x4a49,0x4248,0x4a69,0x4a69,0x4a49,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x4207,0x4228,0x4208,0x4208,0x4228,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x39e7,0x4228,0x4228,0x39e7,0x4207,0x39e7, +0x3a08,0x3a07,0x39e7,0x39e7,0x3a07,0x4228,0x4207,0x39e7,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x39e7,0x39e7,0x3a08,0x4228,0x3a07,0x39e7,0x3a08,0x3a08,0x4228,0x39e7,0x3a07,0x3a28,0x3a28,0x4248,0x3a07,0x4228,0x3a28,0x4208,0x3a07,0x4208,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x3a08,0x4228,0x3a07,0x4228,0x4208,0x4208,0x4208,0x3a27,0x4228,0x4228,0x3a07,0x4208,0x4248,0x3a07,0x3a08,0x4228,0x3a07,0x3a07,0x3a27,0x4228,0x4208,0x4228,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x3a27,0x4228,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x3a08,0x3a28,0x4a69,0x4a89,0x4269,0x4228,0x4269,0x4248,0x3a07,0x4248,0x4a69,0x4248,0x4228,0x4a69,0x4268,0x4a69,0x4248,0x4268,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4269,0x4a69,0x4a89,0x52ca,0x4aa9,0x4248,0x4a89,0x3a07,0x3a07,0x4269,0x4a69,0x4228,0x4a69,0x4228,0x3a07,0x4228,0x4269,0x4248,0x4228,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4249,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4248,0x3a28,0x4269,0x4269,0x4248,0x4228,0x4248,0x4269,0x4248,0x4248,0x4248,0x4268,0x4269,0x4269,0x4248,0x4289,0x4aa9,0x4248,0x3a07,0x4248,0x4269,0x4268,0x4248,0x4268,0x4a69,0x4248,0x4269,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4a69,0x4a89,0x4248,0x4269,0x4248,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4248,0x4269,0x3a08,0x4228,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4a48,0x4a69,0x4248,0x4248,0x4248,0x4269,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4269,0x4aaa,0x4a89,0x4a49,0x4a69,0x4a69,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4228,0x4248,0x4248,0x4a49,0x4248,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x4228,0x4228,0x4248,0x3a08,0x4228,0x3a28,0x4208,0x3a07,0x4248,0x4228,0x4228,0x3a07,0x3a28,0x4228,0x4248,0x4208,0x4249,0x4249,0x4248,0x4a69,0x4228,0x4249,0x4a89,0x4a89,0x4228,0x3a08,0x4228,0x4249,0x4228,0x4249,0x4248,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a28,0x4208,0x4228,0x4208,0x4a69,0x4a69,0x4228,0x4228,0x4a69,0x4228,0x4a69,0x4228,0x4228,0x3a07,0x4228,0x4228, +0x39e7,0x39e7,0x31c6,0x4208,0x3a08,0x39e7,0x39e7,0x31c6,0x31a6,0x39e7,0x39c7,0x31c6,0x3a07,0x39c7,0x39c7,0x39e7,0x4208,0x39c6,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39c6,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x4207,0x4208,0x39c7,0x31c7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4207,0x3a07,0x39e7,0x39c7,0x39e7,0x31c7,0x39e7,0x4208,0x39e7,0x4208,0x39e7,0x31c6,0x31c7,0x4208,0x4208,0x3a08,0x3a07,0x39e7,0x39c7,0x4228,0x4228,0x4208,0x3a07,0x4248,0x4228,0x3a07,0x3a07,0x4207,0x39e7,0x4228,0x39e8,0x39e7,0x4228,0x3a07,0x4a69,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4248,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x4228,0x4228,0x4248,0x4248,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4208,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4228,0x4228,0x3a28,0x4248,0x4248,0x3a28,0x4249,0x4249,0x4248,0x4a69,0x4aa9,0x4248,0x4248,0x4269,0x39e7,0x39e7,0x4248,0x3a07,0x4228,0x4208,0x4248,0x4228,0x3a28,0x4248,0x4248,0x4248,0x4228,0x4269,0x4249,0x4248,0x4a89,0x4268,0x4a89,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4228,0x4248,0x4269,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x4228,0x4248,0x4248,0x4228,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4228,0x4228,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4269,0x4248,0x4269,0x4a69,0x4248,0x4248,0x4269,0x4a89,0x4a69,0x4228,0x4a89,0x4249,0x4248,0x4269,0x52aa,0x4a69,0x4248,0x4249,0x4228,0x3a08,0x4a69,0x4269,0x4a69,0x4a69,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a49,0x4248,0x4228,0x4a69,0x4248,0x4248,0x4228,0x4a49,0x4248,0x4a69,0x4a69,0x4269,0x4a89,0x4a69,0x4a69,0x4228,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x4a49,0x4248,0x4228,0x4249,0x4248,0x4228,0x4248,0x4228,0x4a89,0x4269,0x4a69,0x4a49,0x4a89,0x4a69,0x4248,0x4a89,0x4a49,0x4208,0x4a69,0x4a69,0x4a89,0x4248,0x4a69,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4208,0x3a08,0x4228,0x4248,0x4228,0x39e7,0x4248,0x4228,0x4208,0x4248,0x4249,0x4228,0x4228,0x4208,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4248,0x4a89,0x4a49,0x4a69,0x4249,0x4a49,0x4248,0x4228,0x4a69,0x4a8a,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4228,0x4248,0x4228,0x4a69,0x52aa,0x4228,0x4a69,0x4a69,0x4248,0x4228,0x4248,0x4228,0x4228, +0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c6,0x31c6,0x39c6,0x31c6,0x31a6,0x3a07,0x39e6,0x39e7,0x39e7,0x39c6,0x31c6,0x31a6,0x31c6,0x39e7,0x39e7,0x39e6,0x4227,0x3185,0x3a07,0x39e7,0x31c6,0x39e7,0x39c6,0x31a6,0x31c6,0x3185,0x3a07,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x31a6,0x31c6,0x39e7,0x31a6,0x31a6,0x31c6,0x31c6,0x3a07,0x31c6,0x31c6,0x39e6,0x31a6,0x39e7,0x3a07,0x39e7,0x39e6,0x39e7,0x39c7,0x39e7,0x39c6,0x31c6,0x31c6,0x39e7,0x3185,0x31a5,0x31c6,0x31a5,0x31c6,0x2985,0x31a6,0x31c6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x31a5,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x2985,0x3186,0x2985,0x2944,0x3186,0x29a5,0x2985,0x31a6,0x31c6,0x3186,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2964,0x31a6,0x3186,0x31a6,0x2985,0x2986,0x2986,0x2985,0x39e7,0x31c6,0x2985,0x31a6,0x29a6,0x29a6,0x2985,0x2985,0x2965,0x2985,0x31a6,0x2985,0x2985,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x31a6,0x2965,0x2965,0x2945,0x2985,0x2124,0x2965,0x2985,0x2985,0x31a6,0x2985,0x29a5,0x31a6,0x2164,0x2945,0x2985,0x2985,0x31a6,0x2985,0x31a6,0x31c6,0x3186,0x31c6,0x2985,0x2985,0x2965,0x2965,0x2965,0x31c6,0x2145,0x31a6,0x2985,0x2965,0x31a6,0x2144,0x31e7,0x2985,0x2124,0x31a6,0x2985,0x2965,0x2124,0x2144,0x2985,0x2965,0x2985,0x31a6,0x2124,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2985,0x2965,0x2965,0x3186,0x3186,0x2985,0x2124,0x2985,0x2985,0x2985,0x2945,0x2124,0x2985,0x2985,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2945,0x31c6,0x2965,0x3186,0x2985,0x31a6,0x39c6,0x2965,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x2985,0x31c6,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31a6,0x2985,0x39c7,0x39c7,0x2985,0x31c6,0x31a6,0x2965,0x31c6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x3186,0x3165,0x3185,0x2965,0x2985,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x3185,0x2965,0x31a6,0x3186,0x3186,0x39e7,0x3186,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x31c6,0x39c7,0x39c7,0x3185,0x2985,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x2966,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x3186,0x39e7,0x39c6,0x31c6,0x3186,0x39e7,0x39c6,0x31a6,0x3a07,0x39e7,0x39e7,0x39c7,0x4208,0x4228,0x31a6,0x31a6,0x39e7, +0x5aea,0x632b,0x5aeb,0x52ea,0x52ea,0x634b,0x636c,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52aa,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x632c,0x634b,0x632b,0x6b6c,0x634b,0x5b0b,0x632c,0x634c,0x5aea,0x52ea,0x5b0b,0x5b0b,0x634c,0x5b2b,0x632b,0x634c,0x5b2b,0x634b,0x5b0b,0x5b0b,0x636c,0x5b0b,0x5aea,0x5aeb,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x5b4c,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x6b8d,0x5b0b,0x5b2b,0x632b,0x5b2b,0x52ea,0x52ca,0x52ca,0x632c,0x5b2b,0x52ea,0x5aeb,0x632b,0x52ca,0x52ea,0x52ca,0x52ca,0x5b0b,0x52ca,0x5b0b,0x5b2b,0x52ca,0x636c,0x52ea,0x52eb,0x5b0b,0x52ca,0x5b0b,0x52ca,0x52ea,0x4aa9,0x4a89,0x4a89,0x52ca,0x5aeb,0x52ea,0x52ca,0x5aeb,0x5b2c,0x4aca,0x52ea,0x5b0b,0x5b0b,0x52eb,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x52eb,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x52eb,0x5b2b,0x5b2b,0x52ea,0x52ca,0x52ea,0x52ea,0x530b,0x5b2b,0x5b2b,0x5b0b,0x636d,0x634c,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x52ea,0x5b0b,0x52ea,0x5aea,0x52ca,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x52ca,0x530b,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x52ea,0x5b0b,0x52eb,0x5b0b,0x530b,0x5aeb,0x636d,0x5b2b,0x52eb,0x5b2c,0x530b,0x5b0b,0x52ca,0x5b0b,0x52eb,0x5b0b,0x52eb,0x636d,0x52eb,0x5b2b,0x5b4c,0x5b0b,0x52aa,0x6b8d,0x636d,0x5b2b,0x634c,0x5b2c,0x5b2b,0x6b6d,0x5b2c,0x52ea,0x52ca,0x5aeb,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x6b6d,0x5b0b,0x5b0b,0x5b2b,0x636c,0x634c,0x5b2b,0x5b2c,0x5b0b,0x634c,0x6b8d,0x5b2c,0x634c,0x636c,0x5b0b,0x6b4d,0x634c,0x5b2c,0x632c,0x5aeb,0x636d,0x634c,0x5b2b,0x5b2c,0x632c,0x5b0b,0x632c,0x634c,0x52eb,0x5aeb,0x636d,0x5b0b,0x5b2b,0x5b2c,0x5b0b,0x52eb,0x5b0b,0x5aeb,0x632c,0x5b0b,0x634c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b2b,0x5b0b,0x52eb,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x5b2c,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x52aa,0x52aa,0x52eb,0x52ca,0x52ea,0x52ca,0x52aa,0x4a8a,0x52aa,0x52ca,0x4a8a,0x52aa,0x4a8a,0x4aa9,0x52ca,0x4a89,0x52aa,0x52aa,0x52aa,0x5289,0x5289,0x4a89,0x52a9,0x5aeb,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x52aa,0x4a89,0x52aa,0x52aa,0x4a89,0x4a89,0x52eb,0x4a69,0x4a69,0x4a69,0x5289,0x4a69,0x52aa,0x4a89,0x4a69,0x4228,0x4248,0x4a69,0x4248,0x4a69,0x4a69,0x4a48,0x4248,0x4228,0x4228,0x4a48,0x4228, +0x5b0b,0x632c,0x5b2b,0x5b2b,0x6b8c,0x73cd,0x6b8c,0x6bad,0x634c,0x6b6c,0x636c,0x6b8c,0x636c,0x632b,0x636c,0x636c,0x5b2b,0x5b2b,0x634c,0x6b8c,0x636c,0x5b0b,0x6bad,0x6bad,0x6b8c,0x634c,0x5b2b,0x5b0b,0x530b,0x5b4b,0x636c,0x636c,0x638c,0x6b8c,0x6b8d,0x634c,0x638c,0x636c,0x636c,0x636c,0x5b2b,0x634c,0x634c,0x634c,0x638c,0x636c,0x5b0b,0x5b2c,0x636c,0x634c,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x530b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x5b4c,0x530b,0x5b0b,0x5b2c,0x5b2b,0x5b4c,0x530b,0x5b2b,0x5b4b,0x5b2b,0x5b0b,0x6bad,0x5b2b,0x52ca,0x5b2c,0x52ea,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b4c,0x634c,0x530b,0x634c,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x634c,0x5b2c,0x5b4c,0x636c,0x5b4c,0x52ea,0x5b2b,0x530b,0x5b0b,0x634c,0x52eb,0x5b4c,0x5b4c,0x530b,0x5b2b,0x6b8d,0x634c,0x52ea,0x530a,0x530b,0x5b2b,0x634c,0x634c,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x6b8d,0x5b0b,0x632c,0x5b2b,0x638d,0x636c,0x4aaa,0x634c,0x6b8d,0x52eb,0x634c,0x5b2c,0x530b,0x636c,0x634c,0x5b0b,0x5b2c,0x530b,0x530b,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x634c,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x634c,0x636c,0x5b4c,0x5b4c,0x5b2c,0x636d,0x634c,0x530b,0x63ad,0x6bad,0x5b4c,0x5b4c,0x636c,0x638d,0x636c,0x634c,0x634c,0x5b4c,0x636c,0x5b2b,0x632c,0x6bad,0x6b8d,0x634c,0x636c,0x636c,0x5b2b,0x5b2b,0x5b0b,0x5aeb,0x6b6d,0x636d,0x634c,0x634c,0x636c,0x634c,0x530b,0x5b2b,0x634c,0x5b0b,0x634c,0x636c,0x636c,0x5b0b,0x636d,0x6bad,0x5b2c,0x638d,0x636d,0x6bad,0x634c,0x73ad,0x634c,0x632c,0x634c,0x5aeb,0x634c,0x5b4c,0x636c,0x634c,0x5aeb,0x632c,0x6bae,0x6bad,0x634c,0x5b0b,0x6b6d,0x634c,0x634c,0x632c,0x636d,0x6b6d,0x634c,0x5b2c,0x634c,0x634c,0x634c,0x636c,0x634c,0x6b4d,0x632c,0x636d,0x636c,0x6b6d,0x634c,0x632c,0x6b6d,0x632c,0x5b2c,0x5b0b,0x632c,0x5b2b,0x5b0b,0x634c,0x5b2c,0x634c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x634c,0x634c,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x632c,0x5b2c,0x632c,0x632c,0x632c,0x5b0b,0x634c,0x6b6d,0x5aeb,0x632c,0x634c,0x634c,0x634c,0x634c,0x636c,0x634c,0x634c,0x634c,0x632c,0x6b6d,0x634c,0x632c,0x634c,0x632c,0x634c,0x634c,0x634d,0x632c,0x632c,0x634c,0x634c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x6b6c,0x6b4c,0x6b6c,0x634c, +0x5b2c,0x634c,0x5b2b,0x5b2b,0x636c,0x632c,0x5b2b,0x6b8d,0x636c,0x636c,0x632b,0x636c,0x638c,0x634c,0x634c,0x636c,0x5b0b,0x634c,0x6bad,0x634c,0x634c,0x634c,0x634c,0x636c,0x636c,0x6b6c,0x5b0b,0x52eb,0x5b0b,0x52ea,0x52eb,0x6b8c,0x632b,0x5b4b,0x5b0b,0x636c,0x634c,0x636c,0x5aea,0x5b2b,0x636c,0x634c,0x634c,0x5b0b,0x634c,0x5b2b,0x52ca,0x5b0b,0x632b,0x52eb,0x52cb,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x52ea,0x5b2b,0x636c,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b2b,0x634c,0x52ea,0x5b4c,0x5b4c,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x5b2c,0x52ea,0x52ca,0x5b2b,0x5b2b,0x5b0b,0x634c,0x634c,0x5b2b,0x52eb,0x5b2b,0x5b0b,0x530b,0x530b,0x52ea,0x5b2b,0x5b2b,0x5b0b,0x530b,0x52ea,0x52ea,0x5aeb,0x52ea,0x52eb,0x5b2c,0x5b2c,0x4aca,0x5b0b,0x530b,0x5b2b,0x5b2b,0x5b2b,0x52ea,0x5b4c,0x5b4c,0x5b4c,0x636d,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x530b,0x5b2b,0x52ea,0x5b4c,0x5b2b,0x634c,0x634c,0x5b2b,0x52ea,0x5b0b,0x4aaa,0x5b4c,0x5b0b,0x5b2b,0x52ea,0x5b2b,0x5b2c,0x5b2b,0x636c,0x636c,0x5b2b,0x4aaa,0x5b0b,0x52ca,0x52ca,0x530b,0x4aaa,0x52eb,0x5b4c,0x5b2b,0x634c,0x52ca,0x52ea,0x636d,0x632c,0x5b2c,0x5b2b,0x634c,0x634c,0x5b2b,0x5b2c,0x634c,0x634c,0x636c,0x636c,0x5b2b,0x5b0b,0x52eb,0x6b8d,0x5b2b,0x6bad,0x636d,0x634c,0x5b4c,0x634c,0x5b0b,0x5b4c,0x5b0b,0x634c,0x634c,0x5b0b,0x636d,0x5b2b,0x6b6c,0x636d,0x5b0b,0x5b2b,0x5aeb,0x634c,0x634c,0x5b0b,0x5aeb,0x5b2c,0x636d,0x52eb,0x5b0b,0x636d,0x634c,0x5b2b,0x5b2c,0x634c,0x634c,0x5b0c,0x5b0b,0x5b0b,0x5b2c,0x5b2b,0x6b8d,0x634c,0x636d,0x5aeb,0x634c,0x634c,0x632c,0x5b2c,0x5b0b,0x632c,0x5b2b,0x5b2c,0x5b2b,0x634c,0x634c,0x632c,0x6b8d,0x73ae,0x5b0b,0x634c,0x636d,0x6b6d,0x5b0b,0x5b2c,0x636d,0x5b0c,0x632c,0x5b2c,0x5b0b,0x632c,0x5b0b,0x634c,0x630b,0x632c,0x6b6d,0x634c,0x632c,0x5b2b,0x5b2c,0x632c,0x5b0b,0x5b2c,0x5b0b,0x5b2c,0x632c,0x632c,0x630b,0x632c,0x632c,0x6b4c,0x6b6d,0x632c,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5aeb,0x5b0b,0x634c,0x5b0b,0x630c,0x630c,0x52ea,0x632c,0x5b0b,0x632c,0x634c,0x5aca,0x5aeb,0x5b2c,0x5b2c,0x6b4c,0x630b,0x5b0b,0x634c,0x632c,0x5b0b,0x632c,0x5b2c,0x632c,0x634c,0x634c,0x632c,0x6b4c,0x632c,0x634c,0x634c,0x6b6c,0x632c,0x5aeb,0x5b0b,0x632c,0x634c,0x632b,0x632c,0x632c,0x630b,0x634c,0x634c,0x630c,0x5b0b,0x630c,0x5b0b,0x630b,0x630b,0x632b,0x6b6c,0x6b6d,0x5aeb,0x632c,0x632c, +0x52eb,0x5b0b,0x632b,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b2b,0x632c,0x5b2b,0x5b4c,0x5b4c,0x52ca,0x5b2c,0x636c,0x5b4c,0x634c,0x5b2b,0x5aeb,0x5aeb,0x5aea,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x634c,0x5b2b,0x52ea,0x636c,0x5aca,0x5b0b,0x530b,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x630b,0x5aeb,0x52aa,0x52ea,0x636c,0x5b4c,0x5b2b,0x52ea,0x530b,0x634c,0x634c,0x5b2b,0x5b2b,0x5b2b,0x52ea,0x5b2b,0x5b4c,0x5b4c,0x52ea,0x5b0b,0x5b2c,0x634c,0x5b2c,0x5b2c,0x636c,0x636c,0x5b2c,0x634c,0x636c,0x52eb,0x636d,0x638d,0x52eb,0x634c,0x52ea,0x52ca,0x5b2c,0x52ca,0x5b4c,0x5b4c,0x530b,0x5b0b,0x5b2c,0x5b4c,0x530b,0x634c,0x5b4c,0x5b2c,0x632c,0x5b2b,0x636c,0x636c,0x634c,0x5b2c,0x634c,0x5b4c,0x5b2b,0x634c,0x5b4c,0x52ea,0x5b0b,0x530b,0x634c,0x634c,0x5b2b,0x638d,0x636d,0x636d,0x5b4c,0x5b2c,0x634c,0x5b0b,0x530b,0x638d,0x5b2c,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x530b,0x636c,0x636c,0x5b0b,0x5b2c,0x5b0b,0x52eb,0x5b2b,0x5b4c,0x5b2b,0x636c,0x638d,0x52ea,0x5b2b,0x5b2b,0x5b4c,0x5b2c,0x5b4c,0x52ea,0x530b,0x5b2c,0x5b0b,0x5b0b,0x634c,0x636d,0x636d,0x5b2b,0x5b2c,0x5b2c,0x636c,0x636c,0x5b4b,0x634c,0x636c,0x5b2c,0x5b2c,0x5b4c,0x636c,0x634c,0x636c,0x5b4c,0x5b4c,0x5b4c,0x634c,0x634c,0x634c,0x6b8d,0x6bce,0x6b8d,0x634c,0x634c,0x638d,0x5b0b,0x52eb,0x5b2b,0x638d,0x636d,0x5b2c,0x6b8d,0x634c,0x636d,0x636c,0x5b0b,0x636c,0x632c,0x634d,0x6b8d,0x636d,0x5b2b,0x636d,0x6b8d,0x634c,0x632c,0x5b4c,0x6bae,0x5b2c,0x5b0b,0x5b0b,0x636d,0x5b2c,0x634c,0x7bef,0x6b8d,0x6b8d,0x636d,0x5b2c,0x6b8d,0x636d,0x6b6d,0x636d,0x5b2c,0x5b2c,0x636d,0x5b2c,0x5b2c,0x636c,0x636c,0x632b,0x6b8d,0x632c,0x634c,0x632c,0x5b2c,0x634c,0x632b,0x634c,0x634c,0x632c,0x5aeb,0x632c,0x632c,0x5aeb,0x5b0b,0x634c,0x634c,0x5b0b,0x636c,0x634c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x632c,0x5b0b,0x5b0b,0x530b,0x5b2c,0x5b2c,0x52eb,0x632b,0x5aea,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x52eb,0x5b2c,0x5b2c,0x5b0b,0x5b0b,0x632c,0x632b,0x630b,0x632c,0x5aeb,0x632c,0x5b2c,0x5b0b,0x632c,0x632c,0x6b6d,0x52eb,0x5aeb,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x632c,0x5b2c,0x632c,0x5b2c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x632c,0x630b,0x632c,0x632c,0x630c,0x634c,0x6b4c,0x632c,0x5b0b,0x5b0b,0x630b,0x5aeb,0x5aeb,0x632c,0x634c,0x5aeb,0x5b0b,0x630b,0x630b, +0x636d,0x634c,0x5b2b,0x632c,0x638d,0x6b8d,0x638c,0x636c,0x634c,0x638c,0x5b2b,0x636c,0x6b6d,0x634c,0x634c,0x634c,0x638d,0x634c,0x636c,0x638d,0x5b2b,0x6bad,0x6bad,0x634c,0x5b2b,0x634c,0x636c,0x6bad,0x636c,0x52ea,0x5b4c,0x5b2b,0x634c,0x636d,0x636d,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5b0b,0x634c,0x634c,0x52ea,0x5b2b,0x52ea,0x52ea,0x5b0b,0x632c,0x634c,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b2b,0x5b4c,0x636c,0x52ca,0x52eb,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x52ca,0x52ea,0x5b2c,0x52ca,0x52eb,0x5b0b,0x52eb,0x5b0b,0x52eb,0x5b0b,0x530b,0x52ea,0x5b2b,0x52ea,0x52ca,0x5b0b,0x5b4c,0x52ca,0x52ea,0x4a89,0x52eb,0x52eb,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x5b0b,0x3a28,0x4269,0x52eb,0x5b2b,0x52eb,0x52aa,0x52ca,0x52ea,0x5b2b,0x5b4c,0x5b0b,0x5b0b,0x52eb,0x52ca,0x634c,0x5b2c,0x52ca,0x5b2c,0x52eb,0x5b0b,0x52eb,0x4aaa,0x5b0b,0x4aca,0x52eb,0x52ca,0x530b,0x5b2c,0x5b0b,0x52eb,0x52eb,0x52ca,0x4aaa,0x5b0b,0x4aaa,0x530b,0x4aca,0x530b,0x530b,0x5b2b,0x5b0b,0x52eb,0x52eb,0x52ca,0x52ca,0x5b2c,0x5b0b,0x52eb,0x52ca,0x5b2b,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4a89,0x52ca,0x4aca,0x52ea,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x530b,0x52ca,0x52eb,0x52ca,0x5b2c,0x5b0b,0x530b,0x5b4c,0x5b4c,0x634c,0x5b0b,0x530b,0x5b2b,0x52ca,0x634c,0x52eb,0x634c,0x634c,0x634c,0x5b2c,0x5aeb,0x5b0b,0x634c,0x5b2b,0x5b2c,0x634c,0x632c,0x636d,0x52eb,0x5b2c,0x634c,0x632c,0x5b0b,0x5b0b,0x52eb,0x632c,0x634c,0x636c,0x5b2c,0x634c,0x5b0b,0x632c,0x636d,0x5b0b,0x52eb,0x634c,0x634c,0x5b0b,0x5b2c,0x636d,0x636d,0x5aeb,0x5b2c,0x5b4c,0x636d,0x634c,0x6bae,0x6b6d,0x6b8d,0x6bad,0x5b2c,0x636d,0x73ce,0x6bae,0x7bef,0x636d,0x634c,0x5b2c,0x5b2c,0x634c,0x634c,0x6b8d,0x634c,0x632c,0x634c,0x6b6d,0x6b8d,0x634c,0x634c,0x5b0b,0x5b0b,0x6bad,0x6b8d,0x634c,0x73ae,0x634c,0x5b0b,0x636d,0x632c,0x632c,0x632c,0x634c,0x634c,0x6b8d,0x6b8d,0x6b8d,0x636c,0x634c,0x636c,0x634c,0x634c,0x5b2c,0x634c,0x6b8d,0x5b4c,0x634c,0x73ad,0x636c,0x5b2b,0x636d,0x5b0b,0x632c,0x634c,0x5b0b,0x634d,0x634c,0x5b0b,0x634c,0x634c,0x632c,0x5b0b,0x5b0b,0x634c,0x632c,0x5b2c,0x5b0b,0x632c,0x5b2c,0x5b0b,0x634c,0x5b0b,0x5aeb,0x5aeb,0x52eb,0x5b0c,0x634c,0x632c,0x5b0b,0x632c,0x634c,0x634c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x632c,0x632c,0x634c,0x6b6d,0x5b0b,0x5b0b,0x632c,0x630c,0x5aeb,0x5acb,0x632c,0x5aeb,0x630c,0x634c,0x5b0b,0x5aeb,0x5aca,0x5aeb, +0x8491,0x8491,0x740f,0x7c30,0x740f,0x8491,0x740f,0x73ee,0x7c0f,0x6bad,0x6bad,0x6bce,0x6bad,0x6bce,0x636c,0x5b2b,0x6bce,0x6bad,0x636c,0x73ce,0x636c,0x638d,0x6bce,0x636c,0x5b2b,0x6b8d,0x638d,0x6b8d,0x5b2c,0x6b8d,0x636c,0x5b2c,0x5aeb,0x52eb,0x52eb,0x636c,0x634c,0x530b,0x52ca,0x632c,0x52ea,0x52ea,0x5b4c,0x530a,0x52ca,0x52eb,0x530b,0x4aca,0x52eb,0x4aaa,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4248,0x5b0b,0x4aca,0x4268,0x4aaa,0x4aca,0x52ca,0x4a89,0x4aaa,0x4a89,0x4a69,0x4a89,0x4a89,0x4aaa,0x4248,0x4228,0x4248,0x4a89,0x4a69,0x4a89,0x4268,0x52aa,0x4aa9,0x4269,0x3a07,0x4269,0x4aa9,0x3a27,0x31c6,0x4a89,0x4248,0x3a28,0x4a89,0x4a89,0x4228,0x4228,0x39e7,0x3a28,0x3a27,0x4248,0x4228,0x4269,0x4a89,0x4268,0x4248,0x4248,0x4269,0x4269,0x3a07,0x4248,0x4269,0x3a08,0x3a07,0x3a07,0x4a89,0x4248,0x4268,0x4248,0x3a07,0x3a07,0x3a08,0x4248,0x3a28,0x39e7,0x4248,0x4a69,0x3a08,0x4228,0x31a6,0x3a07,0x4248,0x3a07,0x4249,0x3a28,0x4248,0x39e7,0x31a6,0x3a07,0x31e7,0x4248,0x3a07,0x39e7,0x39e7,0x31c6,0x2986,0x31c7,0x31a6,0x39c7,0x2986,0x31c7,0x3a07,0x4248,0x4207,0x39e7,0x3a07,0x3a07,0x4269,0x3a08,0x3a07,0x3a08,0x3a28,0x4248,0x3a08,0x3a08,0x3a07,0x3a08,0x39e7,0x3a08,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4a69,0x31c6,0x3a07,0x4a69,0x3a07,0x31a6,0x4a89,0x4269,0x4269,0x4a69,0x31c7,0x31e7,0x4a69,0x4248,0x4228,0x39e7,0x4248,0x4a69,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4a89,0x4a89,0x52aa,0x4a89,0x4a69,0x5aeb,0x52ca,0x4aaa,0x4a69,0x52aa,0x5b0b,0x5b0b,0x52ca,0x52aa,0x4aaa,0x5b0b,0x52ca,0x634c,0x634c,0x5b0b,0x5b2b,0x5aeb,0x52ca,0x5b0c,0x5b2c,0x632c,0x634d,0x636d,0x5b0b,0x634c,0x636d,0x73ce,0x634c,0x7c0f,0x632c,0x6bae,0x6b6d,0x5b0b,0x6bad,0x636d,0x6b6d,0x73ce,0x73ae,0x73ce,0x7bef,0x73ce,0x8430,0x73ae,0x73ef,0x7c30,0x7c0f,0x73ce,0x6b8d,0x6bae,0x73ce,0x73ce,0x7c30,0x7c0f,0x8c91,0x7c0f,0x73ce,0x7c0f,0x7c0f,0x73ef,0x73ae,0x7c0f,0x7c0f,0x73ce,0x8c91,0x8430,0x7bef,0x8430,0x73ce,0x7c0f,0x8450,0x73ce,0x738d,0x7bee,0x73ce,0x7c0f,0x7c2f,0x8451,0x8471,0x8c91,0x8430,0x6bae,0x73ef,0x73ce,0x8430,0x7c0f,0x73ce,0x7c0f,0x7bef,0x73ae,0x8450,0x8450,0x8450,0x7c0f,0x6b6d,0x73ce,0x73ae,0x73ce,0x73ee,0x7bee,0x7c0f,0x8450,0x7bef,0x7bef,0x73ce,0x7bef,0x73ae,0x7bef,0x73ce,0x7bce,0x8430,0x7c30,0x7bef,0x8430,0x73ae,0x7bcf,0x8430,0x7bef,0x7bef,0x73ae,0x6b6d,0x73ce,0x73ae,0x6b8d,0x840f,0x7bce,0x7bee, +0x52eb,0x634c,0x4aaa,0x52ca,0x4aaa,0x52eb,0x4269,0x4aaa,0x52ca,0x4269,0x4a89,0x4269,0x4249,0x4228,0x31c7,0x39e7,0x3a08,0x4228,0x31c6,0x3a08,0x3a08,0x3a28,0x29a6,0x4249,0x31e7,0x39e7,0x39e7,0x2965,0x31a6,0x31c7,0x3a07,0x31c6,0x31c6,0x2985,0x2985,0x39e7,0x31c7,0x2144,0x2965,0x39e7,0x2124,0x31c7,0x31a6,0x2965,0x39c7,0x31a6,0x2965,0x2986,0x2965,0x18c3,0x2965,0x31c6,0x31c6,0x2965,0x2945,0x31a6,0x2965,0x2124,0x2965,0x31a6,0x39c7,0x2144,0x2986,0x2945,0x2124,0x31c6,0x2124,0x2986,0x2145,0x2945,0x2945,0x2965,0x2985,0x2124,0x2144,0x2985,0x2965,0x2124,0x2104,0x2145,0x31a6,0x2145,0x18e3,0x2124,0x2965,0x2965,0x2145,0x2104,0x2124,0x2144,0x2985,0x2965,0x2104,0x2985,0x18e3,0x31a6,0x2985,0x2965,0x2144,0x2144,0x2965,0x2965,0x2945,0x2945,0x2124,0x2144,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2945,0x2104,0x2965,0x2144,0x2124,0x2124,0x2965,0x31c6,0x2144,0x2145,0x18e3,0x2986,0x2965,0x2965,0x2144,0x2124,0x2965,0x2145,0x2145,0x2144,0x2965,0x2945,0x1903,0x2985,0x2965,0x2965,0x2144,0x2124,0x2965,0x2124,0x2124,0x2104,0x2124,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x31a6,0x2145,0x2124,0x2965,0x2965,0x2965,0x2945,0x2145,0x2986,0x2986,0x2144,0x2945,0x2945,0x2985,0x2986,0x2965,0x31c6,0x31c6,0x31c6,0x31c6,0x2965,0x2124,0x2965,0x2986,0x2965,0x3186,0x39e7,0x31c6,0x3a28,0x39e7,0x31a6,0x31a6,0x31c7,0x39c7,0x3a08,0x39e7,0x2986,0x39e7,0x3a07,0x31c7,0x2986,0x31c7,0x31e7,0x4228,0x4249,0x3a07,0x39e7,0x39e7,0x39e7,0x4a89,0x4a8a,0x4249,0x4249,0x39e7,0x3a08,0x4249,0x39e7,0x4a8a,0x4228,0x4a8a,0x52cb,0x4269,0x4269,0x4a89,0x4a89,0x52eb,0x4a8a,0x52ca,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4a69,0x5b0b,0x5b2b,0x5aeb,0x52aa,0x632c,0x5b0c,0x4a8a,0x73ae,0x634d,0x6bae,0x634c,0x632c,0x632c,0x52eb,0x4a89,0x5b0b,0x5aeb,0x634d,0x6b6d,0x5b0b,0x632c,0x5b0c,0x6b6d,0x5b0c,0x632c,0x52eb,0x5b2c,0x632c,0x7bef,0x738e,0x738d,0x73ae,0x6b8d,0x6b8d,0x738e,0x6b4d,0x6b6d,0x73ad,0x6b8d,0x6b8d,0x8410,0x8451,0x7bef,0x7bcf,0x634d,0x738e,0x7bce,0x8430,0x7bcf,0x7bef,0x73ce,0x7c30,0x73cf,0x8430,0x7c0f,0x8c91,0x840f,0x73ce,0x73ae,0x738d,0x7bef,0x73ce,0x8430,0x73ae,0x7bef,0x8450,0x7c0f,0x8470,0x8430,0x7c0f,0x8c51,0x7bef,0x7bce,0x840f,0x8430,0x7bef,0x8430,0x8450,0x8c71,0x8c50,0x840f,0x842f,0x7bef,0x8430,0x73ce,0x840f,0x8c50,0x8c71,0x8450,0x8c91, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x10a2,0x0000,0x0000,0x0861,0x0820,0x0820,0x1061,0x1082,0x0000,0x1041,0x0820,0x0000,0x1082,0x0861,0x0840,0x0820,0x0840,0x0840,0x0861,0x0861,0x0000,0x0000,0x1082,0x1081,0x0000,0x10a2,0x0020,0x0861,0x0861,0x0000,0x0020,0x0861,0x0840,0x0840,0x10a2,0x1081,0x0020,0x0820,0x0861,0x0861,0x0861,0x1081,0x18a2,0x1082,0x0861,0x0841,0x18a2,0x1061,0x1082,0x10a2,0x0840,0x1081,0x0820,0x10c2,0x10a2,0x10a2,0x0820,0x0820,0x1082,0x1081,0x0020,0x0841,0x1081,0x1082,0x0861,0x0840,0x0861,0x10a2,0x0861,0x0840,0x0841,0x1061,0x1082,0x1082,0x1081,0x0000,0x0841,0x1081,0x0841,0x10a2,0x0821,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0840,0x0861,0x0861,0x1081,0x0861,0x0861,0x0841,0x0821,0x0020,0x0021,0x0041,0x0841,0x0020,0x0820,0x1061,0x0841,0x0020,0x0000,0x0861,0x0861,0x10a2,0x0840,0x0020,0x0000,0x0841,0x0861,0x0020,0x0841,0x0861,0x0861,0x1081,0x0841,0x0841,0x0840,0x0841,0x0021,0x0841,0x0861,0x0841,0x0861,0x0861,0x1062,0x0861,0x0020,0x0840,0x0000,0x0020,0x0861,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0840,0x0020,0x0020,0x0020,0x0841,0x0841,0x0000,0x0840,0x0861,0x1081,0x0841,0x0841,0x0820,0x0000,0x0820,0x0820,0x0820,0x0841,0x1082,0x0841,0x0840,0x0861,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0861,0x18a2,0x0840,0x0000,0x1082,0x10a3,0x1082,0x10a2,0x2124,0x18e3,0x10a3,0x10a3,0x0000,0x10a3,0x0862,0x2124,0x1904,0x18e3,0x18c4,0x18e4,0x18c3,0x2124,0x3185,0x2124,0x10c2,0x2985,0x2124,0x2965,0x2945,0x2103,0x2965,0x2945,0x2965,0x39e7,0x39e7,0x39a6,0x31a6,0x4207, +0x39e7,0x3a07,0x4228,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a08,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a28,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x39e7,0x3a08,0x3a07,0x4248,0x39e7,0x39e7,0x39e7,0x4248,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x31c6,0x3a07,0x3a28,0x3a07,0x31e7,0x3a07,0x39e7,0x3a07,0x39e7,0x31c7,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a28,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x31e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x31c7,0x3a08,0x3a07,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x31e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x31e7,0x3a07,0x3a07,0x31c7,0x31c6,0x31c7,0x31c7,0x31e7,0x31e7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c6,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x31e7,0x31c6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x31c6,0x31a6,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x39c7,0x39c7,0x31c6,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x31c6,0x39e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c6,0x3a07,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x31c6,0x31a6,0x31c6,0x39e7,0x31e7,0x39e7,0x39c7,0x39e7,0x31c7,0x31c6,0x39e7,0x31c6,0x39c7,0x39c7,0x39e7,0x39e7,0x3a07,0x31c6,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7,0x31c7,0x31c6,0x39c7,0x31c6,0x31c6,0x39c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31c6,0x31c7,0x31c6,0x31a6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2965,0x3186,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x2985,0x2985,0x31a6,0x3186,0x3186,0x2965,0x3186,0x3186,0x3185,0x2965,0x3185,0x31a6,0x2144,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2944,0x2944,0x2124,0x2144,0x2944,0x2944,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x2125,0x2104,0x1903,0x18e3,0x10c3,0x1082,0x1082,0x1082,0x1082, +0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x4a89,0x39e7,0x3a07,0x3a07,0x4228,0x39e7,0x3a07,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x3a28,0x3a07,0x3a07,0x3a28,0x3a07,0x3a08,0x3a07,0x4248,0x4248,0x3a07,0x3a28,0x3a28,0x3a07,0x4228,0x3a28,0x4228,0x3a28,0x3a07,0x4228,0x3a28,0x39e7,0x4228,0x3a28,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x3a28,0x4248,0x3a28,0x3a28,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x3a28,0x3a07,0x4248,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x3a07,0x3a07,0x4248,0x3a28,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x3a28,0x4228,0x3a07,0x39e7,0x4228,0x3a28,0x4228,0x3a28,0x4228,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x3a28,0x4228,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x3a07,0x4248,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x3a28,0x4248,0x3a07,0x4269,0x4248,0x3a28,0x4248,0x4228,0x3a28,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4269,0x4a89,0x4248,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4228,0x4248,0x4269,0x4248,0x4228,0x4248,0x4269,0x4248,0x4248,0x4228,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4248,0x4228,0x4a49,0x4268,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4268,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4249,0x4248,0x4228,0x4a48,0x4228,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4208,0x4248,0x4248,0x3a28,0x3a28,0x4248,0x4248,0x4228,0x4248,0x4228,0x4248,0x4248,0x4a89,0x4a69,0x4249,0x4249,0x4249,0x4249,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x4207,0x4208,0x4248,0x4228,0x4208,0x4207,0x4208,0x4228,0x4248,0x4228,0x4228,0x4228,0x4208,0x3a07,0x4248,0x4208,0x4208,0x3a07,0x4208,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4208,0x4207,0x4228,0x3a08,0x4228,0x4228,0x3a07,0x39e7, +0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x3a07,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x3a28,0x4208,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x4269,0x4248,0x4228,0x4228,0x3a28,0x4228,0x4228,0x4248,0x4248,0x4228,0x3a07,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4248,0x4248,0x4228,0x4249,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4248,0x4269,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4a49,0x4248,0x4228,0x4268,0x4248,0x4248,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x3a28,0x4248,0x4248,0x52ca,0x5b0b,0x4248,0x4248,0x4248,0x3a28,0x4248,0x4248,0x4228,0x4248,0x4248,0x4a69,0x4269,0x4269,0x4248,0x4a89,0x4228,0x4248,0x4228,0x4228,0x4269,0x4248,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4269,0x4a89,0x4248,0x4268,0x4a89,0x4248,0x4248,0x4248,0x4269,0x4269,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4a89,0x4248,0x4248,0x4248,0x4248,0x4a89,0x4a89,0x4248,0x4248,0x4248,0x3a28,0x4249,0x4248,0x4248,0x4a69,0x4269,0x4248,0x4a89,0x4aa9,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4a89,0x4248,0x4248,0x4248,0x4a69,0x4269,0x4269,0x4248,0x4248,0x4269,0x4248,0x4a69,0x4248,0x4249,0x4249,0x4249,0x4a69,0x4a69,0x4269,0x4248,0x4248,0x4248,0x4248,0x4268,0x4248,0x4248,0x4248,0x4228,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4248,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4269,0x4228,0x4228,0x4a69,0x4249,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4269,0x4228,0x4248,0x4a48,0x4a48,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x4a49,0x4a49,0x4a69,0x4a89,0x4a49,0x4a49,0x4248,0x4a48,0x4228,0x4248,0x4a89,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a49,0x39e7,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4a69,0x4248,0x4228,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x3a08,0x3a07,0x3a08,0x4208,0x4248,0x4228,0x4249,0x4208,0x4228,0x4228,0x3a07,0x4248,0x4207,0x4228,0x4a49,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4208, +0x39c6,0x31a6,0x31a6,0x39c7,0x31c6,0x31c6,0x31c6,0x31a6,0x2986,0x31c6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x39c7,0x3186,0x2986,0x3186,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x31a6,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x39c6,0x31c6,0x31e7,0x39e7,0x31c6,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c6,0x31a6,0x39e7,0x31c6,0x31c7,0x3a08,0x3a28,0x39e7,0x39e7,0x31c6,0x31c6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a07,0x31c6,0x31c6,0x3a07,0x39e7,0x39c6,0x39e7,0x39c6,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x4228,0x39e7,0x31e7,0x31c6,0x39e7,0x31e7,0x31c6,0x31c6,0x31c7,0x39c6,0x31c6,0x39e7,0x39e7,0x39e7,0x31a6,0x31c6,0x39e7,0x4248,0x4a89,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x3a08,0x39e7,0x31e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x39e7,0x3a08,0x39e7,0x31c6,0x31e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31a6,0x39e7,0x3a07,0x39e7,0x39c6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x31a6,0x31c7,0x39e7,0x31e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x4208,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x4208,0x4208,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x4228,0x4248,0x3a08,0x4228,0x4a69,0x39e7,0x39c7,0x3a07,0x3a07,0x31c7,0x3a07,0x4228,0x4248,0x39e7,0x39e7,0x3a07,0x3a07,0x4208,0x4228,0x3a07,0x39c7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4208,0x4228,0x4207,0x3a07,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e7,0x39e7,0x3a07,0x4208,0x39e7,0x3a07,0x3a07,0x4208,0x4208,0x4207,0x4228,0x4a49,0x4228,0x4248,0x4228,0x4207,0x3a07,0x39e7,0x4228,0x4208,0x4208,0x3a07,0x39e7,0x39c7,0x39e7,0x39e7,0x3a07,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x4228,0x4248,0x4248,0x39e7,0x4207,0x4228,0x39c7,0x39c7,0x3a07,0x39e7,0x39e7,0x39e7,0x4207,0x39e7,0x4228,0x4228,0x4208,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x4208,0x39e7,0x39e7,0x4207,0x4228,0x4207,0x39e7,0x4208,0x39e7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7, +0x31c6,0x3185,0x39e6,0x39c6,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39c6,0x31a6,0x31c6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x31c6,0x39e7,0x4207,0x4228,0x4228,0x3a07,0x4227,0x4228,0x4228,0x4248,0x4227,0x4228,0x3a07,0x39e7,0x4228,0x4207,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x39e7,0x4227,0x3a07,0x3a07,0x3a07,0x31c6,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x31c6,0x4248,0x4248,0x39e7,0x4248,0x39e7,0x3a07,0x3a27,0x3a07,0x3a27,0x3a07,0x3a27,0x31c6,0x31e6,0x3a07,0x4227,0x39e7,0x31c6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a27,0x31e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x3a07,0x39e7,0x39e7,0x31a6,0x3a27,0x39e7,0x31c6,0x3a07,0x31e7,0x3a27,0x3a07,0x3a07,0x39e7,0x31a6,0x31c6,0x39e6,0x3a07,0x3a07,0x31c6,0x3a07,0x31c6,0x39e7,0x39e7,0x31a6,0x31a6,0x31c6,0x39e6,0x3a27,0x31c6,0x31a6,0x39e7,0x3a07,0x3a07,0x3a07,0x31a6,0x31e7,0x3a28,0x31e7,0x2986,0x39e7,0x4228,0x39e7,0x31e7,0x2985,0x39e7,0x39e7,0x39e6,0x31c6,0x29a5,0x31c6,0x31a6,0x2985,0x31a6,0x2985,0x2985,0x31a6,0x31c6,0x31c7,0x31c7,0x2144,0x3a07,0x4228,0x31a6,0x39e7,0x39e7,0x31c6,0x31a6,0x31a6,0x3a07,0x4248,0x3a07,0x3a28,0x31c6,0x31a6,0x3a08,0x31c6,0x39e7,0x29a5,0x3a07,0x31c6,0x31a6,0x39c6,0x31c6,0x31c6,0x31c6,0x31c6,0x3186,0x3186,0x2985,0x31c6,0x2985,0x39e7,0x39e7,0x31a6,0x31a6,0x39e7,0x39c7,0x39e7,0x31a6,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x39c6,0x31c6,0x3a07,0x31c6,0x31a6,0x31c6,0x3a07,0x31e6,0x31a6,0x39e6,0x29a5,0x31a6,0x31a6,0x31a6,0x39c7,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31e7,0x31c6,0x31a5,0x31c6,0x39e6,0x31c6,0x39c7,0x31a6,0x31c6,0x39e7,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2985,0x2985,0x2986,0x31c6,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31c6,0x31a6,0x3185,0x31a6,0x31a6,0x2965,0x31a5,0x31c6,0x2985,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31c6,0x31a6,0x2944,0x2965,0x31a6,0x2985,0x3186,0x2985,0x2985,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x3185,0x3186,0x31a6,0x31a6,0x3185,0x3185,0x3186,0x2945,0x39c7,0x39e7,0x31a6,0x31a6,0x3186,0x2985,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x3185,0x3185,0x31a6,0x2965,0x31a6, +0x636c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x634c,0x632c,0x5b2b,0x634c,0x5b2b,0x632b,0x5b0b,0x634b,0x634b,0x5b2b,0x634c,0x5b2b,0x634c,0x632b,0x5b0b,0x634c,0x634c,0x5b0b,0x634c,0x634c,0x5b0b,0x634c,0x634c,0x636c,0x5b2b,0x634c,0x5b2b,0x632b,0x5b0b,0x5b2b,0x5b4b,0x530b,0x5b2b,0x5b2b,0x636c,0x634c,0x5b0b,0x5b2c,0x632c,0x634c,0x634c,0x5b0b,0x5b0b,0x5b2c,0x52eb,0x52ea,0x5b2b,0x530b,0x52ea,0x5b0b,0x530a,0x52ea,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b0b,0x636c,0x634c,0x5b2b,0x5b2c,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b2c,0x5b2b,0x5b2b,0x634c,0x5b2b,0x5b0b,0x634c,0x6b6c,0x5b2b,0x636c,0x634c,0x634c,0x634c,0x5b2b,0x634c,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x634c,0x636c,0x5b2b,0x634c,0x5b4c,0x634c,0x5b4b,0x5b2b,0x5b2c,0x632c,0x5b2b,0x636c,0x634c,0x5b2b,0x636c,0x5b2b,0x634c,0x5b2b,0x634c,0x5b2b,0x52ca,0x5b2b,0x634c,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x5b2c,0x5b0b,0x52ea,0x530b,0x5b2b,0x634c,0x636c,0x530a,0x5b2c,0x5b0b,0x5b0b,0x530b,0x634c,0x634c,0x632c,0x636c,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x52ea,0x5b2b,0x5b2b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x634c,0x52eb,0x52ca,0x5b2c,0x5b2c,0x5b2c,0x634c,0x5b2b,0x634c,0x5b2c,0x636c,0x636c,0x638c,0x6b8d,0x634c,0x636d,0x5b0b,0x634c,0x5b2c,0x634c,0x5b2b,0x634c,0x634c,0x5b4c,0x634c,0x636d,0x5b4c,0x6b8d,0x5b2b,0x5b2b,0x632c,0x636c,0x634c,0x5b2b,0x636d,0x634c,0x636c,0x5b2b,0x634c,0x636c,0x634c,0x6bad,0x636d,0x634c,0x6b8d,0x6b8d,0x6b6c,0x636c,0x7c0f,0x73ad,0x634c,0x634c,0x6b6d,0x636c,0x636c,0x5b2b,0x636c,0x5b2b,0x636c,0x634c,0x73ad,0x6b8d,0x634c,0x5b2b,0x5b0b,0x632b,0x634c,0x5b2b,0x5b2b,0x636c,0x636c,0x632c,0x634c,0x6b6d,0x634c,0x632c,0x632c,0x634c,0x632c,0x632c,0x634c,0x5b4c,0x632c,0x634c,0x6b6d,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x632b,0x6b8d,0x634c,0x634c,0x632c,0x632c,0x5b0b,0x632c,0x632c,0x5aeb,0x5aeb,0x630b,0x5aca,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0c,0x5aeb,0x630b,0x5aeb,0x5b0b,0x632c,0x5b2b,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x632c,0x52ca,0x5aea,0x5b0b,0x5aeb,0x52aa,0x5acb,0x5aeb,0x52ca,0x5aeb,0x52ca,0x5aeb,0x5aca,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aea,0x52ca,0x5aea,0x5aea,0x52ca,0x5aca,0x630b,0x5aca,0x528a,0x5aeb,0x52ca,0x52aa,0x5aea,0x5289,0x4a69,0x52aa,0x5289,0x52a9,0x5aea,0x4a69,0x5289,0x6b6c,0x52aa,0x4a69,0x5289,0x4a48,0x4a69,0x4a48,0x52a9,0x4a69, +0x634b,0x634b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x52ea,0x5b0b,0x634c,0x634c,0x5b0b,0x5b2b,0x632c,0x632b,0x634b,0x632b,0x634c,0x636c,0x5b2b,0x634c,0x634c,0x634b,0x5b0b,0x5b2b,0x530a,0x5b2b,0x636c,0x636c,0x634c,0x632b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5aea,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x52ca,0x52ca,0x52eb,0x5b0b,0x52ca,0x52ca,0x5b0b,0x52ca,0x4aa9,0x52ea,0x52ca,0x52ca,0x52ea,0x5b0b,0x5b0b,0x52ea,0x52eb,0x52ca,0x52ea,0x52ea,0x530b,0x52eb,0x530b,0x5b2c,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b2b,0x636c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x52ca,0x4268,0x5b2b,0x634c,0x634c,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x52ea,0x5b2b,0x634c,0x530a,0x634c,0x5b2b,0x5b2c,0x636c,0x5b2c,0x530b,0x5b2b,0x634c,0x530b,0x530b,0x530b,0x5b0b,0x636c,0x5b4c,0x5b2b,0x52eb,0x52ea,0x5b2b,0x52ea,0x530b,0x530b,0x530a,0x52ea,0x4aca,0x52ea,0x530b,0x530b,0x530b,0x5b2b,0x5b0b,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x634c,0x5b2b,0x530b,0x5b4c,0x636d,0x634c,0x636c,0x634c,0x5b0b,0x6b8d,0x530b,0x52eb,0x52ca,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b2b,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x52ea,0x4aaa,0x5b2b,0x5b0b,0x636d,0x634c,0x5b2c,0x634c,0x636d,0x5b2c,0x632c,0x636d,0x634c,0x5b4c,0x636c,0x5b2c,0x5b0b,0x5b2c,0x52ea,0x634c,0x634c,0x5b2b,0x6b6d,0x636c,0x634c,0x634c,0x73ce,0x634c,0x6b6d,0x5b2c,0x5b2c,0x6b8d,0x5b2b,0x636c,0x634c,0x636c,0x6bad,0x6bad,0x632c,0x5b2c,0x636c,0x636c,0x6bad,0x6b6c,0x7bef,0x73ce,0x6b8d,0x636d,0x5b2c,0x6b8d,0x73ce,0x6bae,0x634c,0x5b0b,0x636d,0x634c,0x73ad,0x73ce,0x634c,0x634c,0x6b6d,0x634c,0x6b6d,0x636d,0x634c,0x634c,0x5b0b,0x636c,0x6b6d,0x5b2c,0x5b0b,0x636d,0x6bad,0x634c,0x632c,0x5b0b,0x6b8d,0x6b8d,0x634c,0x634c,0x5b2b,0x634c,0x5b0b,0x634c,0x634c,0x5b2b,0x632c,0x6b6d,0x6b8d,0x636d,0x634c,0x632c,0x5b2b,0x6b6d,0x6b6d,0x6bad,0x6b6d,0x634c,0x6b6d,0x6b6d,0x632c,0x6b6d,0x634c,0x636c,0x634c,0x5b0b,0x634c,0x6b8d,0x632c,0x6b6d,0x632c,0x630b,0x634c,0x632c,0x634c,0x632c,0x632c,0x5b2b,0x5b0b,0x632c,0x630b,0x634c,0x5b2b,0x5b2b,0x630b,0x5aeb,0x632c,0x5b0c,0x634c,0x634c,0x6b6d,0x634c,0x634c,0x630b,0x632c,0x5b2c,0x5b4c,0x634c,0x5b0b,0x630b,0x630b,0x630b,0x6b4c,0x6b4c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632b,0x634c,0x632c,0x5b0b,0x632c,0x632c,0x6b4c,0x632b,0x634c,0x6b8c,0x634c,0x5b2b,0x634c,0x5b2b,0x632b,0x632c,0x6b8d,0x634c, +0x634c,0x634b,0x5b2b,0x634c,0x636c,0x5b0b,0x634c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2c,0x632c,0x634c,0x5b2b,0x5b2b,0x632b,0x5b0b,0x634c,0x5b0b,0x634c,0x5b4c,0x632b,0x634c,0x634c,0x6b8d,0x5b4c,0x5b0b,0x5b0b,0x5aeb,0x530b,0x5b0b,0x5aeb,0x52ca,0x632c,0x632c,0x5b0b,0x52ea,0x5b0b,0x632b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b4c,0x5b2b,0x5b2c,0x52ea,0x4268,0x5b0b,0x52eb,0x52ea,0x52eb,0x52aa,0x52ca,0x4aa9,0x5b0b,0x5b0b,0x5aea,0x52ca,0x5b0b,0x530b,0x5b0b,0x634c,0x4aa9,0x4a89,0x52ca,0x5b2b,0x4aca,0x5b2c,0x5b0b,0x5b0b,0x52ea,0x52ea,0x634c,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x4a89,0x52eb,0x530b,0x5b0b,0x52eb,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x634c,0x5b0b,0x52eb,0x636c,0x530b,0x530b,0x5b2b,0x530b,0x5b2b,0x5b2b,0x530b,0x52ea,0x4289,0x52eb,0x52ea,0x5b0b,0x52ca,0x52ca,0x52ca,0x52ea,0x5b2b,0x530b,0x530b,0x5b0b,0x530b,0x5b2b,0x5b0b,0x4aca,0x530b,0x52eb,0x5b0b,0x4aca,0x52ca,0x52eb,0x5b2b,0x634c,0x52eb,0x632b,0x5b0b,0x530b,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5aeb,0x52eb,0x636c,0x5b0b,0x52ca,0x5b0b,0x52ea,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x634c,0x52ea,0x5b0b,0x5b4c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b4c,0x5b2c,0x5aeb,0x530b,0x636d,0x5b0b,0x5b2c,0x634c,0x52ea,0x636c,0x5b0b,0x4aaa,0x530b,0x6b6d,0x5b2b,0x5b4c,0x52eb,0x634c,0x632c,0x634c,0x6b8d,0x6b8d,0x636d,0x636d,0x632c,0x5b0b,0x5b2c,0x636c,0x5b0b,0x632c,0x73ae,0x6b8d,0x636d,0x634c,0x636c,0x5b2c,0x634c,0x636c,0x634c,0x5b0b,0x636d,0x632c,0x5b2c,0x6b8d,0x5b4c,0x634c,0x6b8d,0x6b6d,0x5b2c,0x5aeb,0x5b0b,0x5b2c,0x6b8d,0x6b8d,0x6b8d,0x5b2c,0x6b6d,0x738e,0x634c,0x634c,0x6b6d,0x636d,0x634c,0x634c,0x634c,0x6bad,0x73ae,0x5b0b,0x634c,0x6b6c,0x632c,0x634c,0x636c,0x634c,0x6b4d,0x632c,0x634c,0x632c,0x5b0b,0x6b4c,0x6b8d,0x6b6c,0x6b6c,0x5b0b,0x52cb,0x5b2c,0x634c,0x632c,0x634c,0x738d,0x632c,0x634c,0x634c,0x634c,0x632c,0x6b4c,0x6b4c,0x73ce,0x6b6d,0x636d,0x634c,0x632c,0x634c,0x632c,0x6b4c,0x634c,0x632c,0x6b4c,0x6b6d,0x630b,0x5b0b,0x634c,0x632c,0x632c,0x636c,0x634c,0x5aeb,0x632c,0x632c,0x5b0b,0x6b6d,0x634c,0x632c,0x634c,0x5b0c,0x630b,0x632c,0x634c,0x636d,0x632c,0x632c,0x632c,0x5b0b,0x632c,0x632b,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5aeb,0x632c,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x632c,0x5b0b,0x630b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb, +0x5b2b,0x5b2b,0x636c,0x634c,0x636c,0x52ea,0x5b0b,0x636c,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x632c,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b4c,0x6b8d,0x634c,0x5b2b,0x5b2b,0x634c,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x530b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x530b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b4c,0x5b2c,0x4aaa,0x52eb,0x52eb,0x52ca,0x52aa,0x4a89,0x530b,0x52ca,0x52ea,0x5b0b,0x5b0b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x636c,0x5b2b,0x636c,0x530b,0x530b,0x530b,0x52ea,0x5b0b,0x52ca,0x52eb,0x52ea,0x5b4c,0x52ea,0x5b0b,0x52eb,0x52ca,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b4c,0x636c,0x5b2b,0x52ca,0x52eb,0x52eb,0x52ca,0x5b2b,0x634c,0x5b4c,0x52ea,0x5b2b,0x634c,0x5b2b,0x5b2b,0x52ca,0x5b0b,0x5b4c,0x634c,0x5b0b,0x4aaa,0x52eb,0x52eb,0x5b0b,0x52ca,0x4aca,0x5b2b,0x5b2c,0x636c,0x5b2c,0x52ea,0x5b0b,0x52eb,0x5b2c,0x5b0b,0x530b,0x636c,0x52ca,0x634c,0x5b4c,0x52ea,0x5b2c,0x5b4c,0x5b4c,0x52ca,0x5b0b,0x636c,0x636c,0x4aca,0x636d,0x5b4c,0x634c,0x5b4c,0x5b4c,0x530b,0x5b2c,0x636c,0x634c,0x5b4c,0x5b4c,0x5b2c,0x52ea,0x636c,0x636d,0x634c,0x5b2b,0x636c,0x634c,0x638d,0x5b2c,0x636c,0x636d,0x5b2c,0x6bae,0x530b,0x5b2c,0x636c,0x530b,0x5b2c,0x5b0b,0x636d,0x6b8d,0x634c,0x636c,0x634c,0x6bad,0x6b8d,0x6bae,0x6bae,0x5b2b,0x638d,0x5b2c,0x5b2c,0x6b8d,0x636d,0x6b6d,0x5b0b,0x634c,0x5b2c,0x52eb,0x634c,0x5b2c,0x5b0b,0x636d,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5b2c,0x634c,0x5b2c,0x5b0b,0x634c,0x634c,0x6b8d,0x6b8d,0x632c,0x632c,0x6b8d,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x5b2c,0x6bae,0x7bce,0x6b6d,0x634c,0x634c,0x5b0b,0x5b2b,0x5b0b,0x6bae,0x6b8d,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x636c,0x636d,0x6b6d,0x5b0b,0x6b8d,0x636c,0x5b0b,0x632c,0x634c,0x634c,0x634c,0x636c,0x634c,0x6bae,0x636d,0x632c,0x6b6d,0x632c,0x5aeb,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x5aeb,0x5b2c,0x6b6d,0x634c,0x636d,0x634c,0x5b0b,0x5b2c,0x634c,0x636d,0x632c,0x6b6d,0x5b0b,0x632c,0x5b0b,0x6b8d,0x634c,0x634c,0x5aeb,0x632c,0x634c,0x634c,0x5aeb,0x6b6d,0x634c,0x632c,0x5aeb,0x5b0b,0x5b0b,0x632c,0x632c,0x6b4c,0x6b6d,0x634c,0x634c,0x630b,0x6b6c,0x6b8d,0x6b6d,0x634c,0x6b6c,0x632c,0x634c,0x73ae,0x632c,0x632c,0x6b4c,0x738d,0x630b,0x632c,0x632c,0x634c,0x5b0b,0x5b0b,0x632c,0x632c,0x5aeb,0x5aeb,0x5b0b, +0x6b8d,0x6bce,0x6b8d,0x6b8d,0x6b8d,0x636c,0x634c,0x5b0b,0x5b2b,0x5b2b,0x6bcd,0x5b4c,0x636d,0x634c,0x636c,0x6b8d,0x6b8d,0x636c,0x634c,0x73ee,0x5b2b,0x636c,0x634c,0x5b2c,0x638d,0x636c,0x634c,0x634c,0x5b2b,0x5b2c,0x5b2b,0x5b2b,0x52eb,0x530b,0x5b2c,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x6b8d,0x636c,0x634c,0x5b0b,0x5b4b,0x530b,0x5b0b,0x52eb,0x52ea,0x5b0b,0x52ca,0x4a89,0x52ca,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52eb,0x4a69,0x52aa,0x52eb,0x52eb,0x4aa9,0x52ca,0x4aca,0x5b2c,0x52eb,0x52ca,0x4aca,0x530b,0x5b2c,0x52ea,0x636d,0x52ea,0x52eb,0x52ca,0x52ca,0x52ca,0x4aaa,0x4a89,0x52eb,0x52ca,0x530a,0x52ca,0x4aaa,0x52eb,0x5b2b,0x4aa9,0x5aeb,0x52ca,0x4248,0x52eb,0x4a89,0x52ea,0x52ca,0x4248,0x4aaa,0x52aa,0x52eb,0x4aaa,0x52ea,0x530b,0x4aaa,0x4a89,0x4268,0x52ca,0x5aeb,0x52ca,0x52ca,0x52eb,0x4a89,0x52ca,0x4a89,0x4a69,0x4a89,0x52ca,0x4269,0x5b0b,0x5b2c,0x3a48,0x4aaa,0x52ea,0x4aaa,0x4aaa,0x52ca,0x4aa9,0x4aaa,0x4a89,0x52ca,0x52eb,0x52eb,0x5b0b,0x5b2c,0x52ca,0x4269,0x52ca,0x5b2c,0x5b2c,0x5aeb,0x52eb,0x52ca,0x5b0b,0x52eb,0x3a28,0x4aaa,0x5b0c,0x4a8a,0x52aa,0x52ca,0x4aca,0x4aaa,0x5b0b,0x52eb,0x5b0c,0x5b2c,0x5b2b,0x5b2b,0x52ca,0x5b2b,0x52eb,0x52ca,0x4a89,0x5b0b,0x5b2c,0x5b2b,0x636d,0x5b0b,0x5b0b,0x530b,0x5aeb,0x52ca,0x5b2c,0x634c,0x5b2b,0x530b,0x5b0b,0x52eb,0x634c,0x52ca,0x5b0b,0x52eb,0x52ca,0x5b0b,0x6b6d,0x5b0b,0x634c,0x5b2b,0x530b,0x5b2c,0x634c,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x634c,0x52ca,0x634c,0x632c,0x5aeb,0x5b2c,0x5b0b,0x634c,0x6b6d,0x632c,0x634c,0x5aeb,0x636d,0x634c,0x634c,0x630b,0x632c,0x52eb,0x634c,0x634c,0x632c,0x632c,0x632c,0x5b0b,0x636d,0x52eb,0x632c,0x634c,0x632c,0x634c,0x634c,0x5b0b,0x6b6d,0x6b8d,0x6b6d,0x632c,0x634c,0x632c,0x634c,0x6b8d,0x52eb,0x634c,0x632c,0x634c,0x6b8d,0x636c,0x636c,0x6bae,0x6bad,0x6b8d,0x738e,0x6b6d,0x634c,0x636c,0x6b8d,0x632c,0x6b6d,0x6b8d,0x738e,0x73ae,0x634c,0x6b6d,0x634c,0x6b4c,0x6b6d,0x6b8d,0x636d,0x6b8d,0x73ae,0x5b0b,0x5b0b,0x634c,0x634c,0x5aeb,0x5b0b,0x52ea,0x636c,0x634c,0x634c,0x73ce,0x636c,0x5b0c,0x6b4c,0x634c,0x634c,0x636d,0x6b6d,0x632c,0x632c,0x632c,0x52ca,0x632c,0x632c,0x632c,0x632c,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x6b6d,0x6b8d,0x6b8d,0x5b2c,0x632c,0x632c,0x634c,0x6b6d,0x6b8d,0x5aeb,0x6b4c,0x6b6d,0x632c,0x5b0b,0x73ae,0x7bce,0x6b4c,0x632c,0x5b0b,0x5b0b,0x5aeb,0x632c,0x632c, +0x6bad,0x73ce,0x638d,0x7c2f,0x740f,0x6bae,0x636d,0x634c,0x6b8d,0x636c,0x638d,0x636c,0x636d,0x636d,0x634c,0x5b0b,0x6bce,0x5b0b,0x638d,0x636d,0x5b2c,0x638d,0x634c,0x634c,0x73ce,0x636c,0x5b4c,0x5b0b,0x5b0b,0x530b,0x5b2b,0x530b,0x52ea,0x52ca,0x4aaa,0x5b4c,0x52ca,0x52ca,0x52eb,0x52eb,0x4aaa,0x52ea,0x530b,0x530b,0x52ea,0x5aeb,0x52aa,0x4aaa,0x5b0b,0x52eb,0x4aaa,0x4aaa,0x4a89,0x4a89,0x4a69,0x4a69,0x4228,0x4a69,0x4269,0x4269,0x4249,0x52ea,0x52ca,0x4248,0x52aa,0x3a08,0x4228,0x4249,0x52aa,0x4a69,0x3a08,0x3a28,0x4228,0x31e7,0x4248,0x4248,0x4228,0x4248,0x4248,0x3a07,0x39e7,0x3a07,0x4a89,0x4228,0x2986,0x39e7,0x3a08,0x31c7,0x31c6,0x4248,0x4248,0x39e7,0x4228,0x4a89,0x3a07,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x31c6,0x31e7,0x3a07,0x39c7,0x4228,0x3a07,0x31c6,0x2965,0x2986,0x39c7,0x2945,0x31a6,0x2145,0x31c6,0x31a6,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2986,0x31a6,0x2965,0x31c6,0x31c6,0x3186,0x31a6,0x31c7,0x4208,0x31a6,0x31a6,0x3186,0x31e7,0x3a08,0x31a6,0x2965,0x31e7,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x3a07,0x31a6,0x39e7,0x3a07,0x31c6,0x31c6,0x39c7,0x39e7,0x31a6,0x31a6,0x31c6,0x3a07,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x4248,0x4228,0x39e7,0x4a69,0x31c6,0x4208,0x39e7,0x4248,0x4248,0x39e7,0x39e7,0x4269,0x39e7,0x31a6,0x4228,0x39c7,0x4228,0x4248,0x4248,0x39e7,0x4228,0x4aa9,0x4a69,0x4249,0x3a28,0x4a8a,0x4a69,0x4269,0x4a69,0x4228,0x4a69,0x52ca,0x4a89,0x4a89,0x4248,0x4a89,0x5b0b,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52ca,0x5aeb,0x52cb,0x4aaa,0x52aa,0x52aa,0x52ca,0x5aeb,0x52ca,0x52ca,0x5aeb,0x634c,0x632c,0x634c,0x632c,0x632c,0x5b0b,0x73ae,0x5aeb,0x5aeb,0x52ca,0x5b0b,0x634c,0x6b6d,0x634c,0x634c,0x6b8d,0x636d,0x5b0b,0x632c,0x6b6d,0x6b8d,0x73ce,0x6bae,0x6bae,0x5b2c,0x73cf,0x73ef,0x6bad,0x73ce,0x7c10,0x7c0f,0x8430,0x73ae,0x7c0f,0x73ae,0x7c0f,0x7c30,0x8430,0x7c2f,0x7bef,0x7c0f,0x7c0f,0x8471,0x8450,0x7bef,0x7bef,0x8430,0x7c0f,0x73ee,0x7c0f,0x8430,0x7c0f,0x8c91,0x94b2,0x8450,0x8430,0x7c2f,0x8450,0x8c91,0x8c71,0x73ae,0x94d2,0x94d2,0x8430,0x840f,0x73ae,0x73ce,0x8c71,0x8c91,0x8450,0x7bef,0x840f,0x8c71,0x8450,0x7c0f,0x8450,0x8c70,0x7c0f,0x7c2f,0x8c91,0x8c71,0x73ce,0x8450,0x8c71,0x94d2,0x8450,0x8c91,0x73ee,0x8c71,0x7bef,0x73ae,0x8c91,0x8c71,0x7c0f,0x7bef,0x6bad,0x7c0f,0x8c91,0x842f,0x73ce,0x6bae,0x6b4c,0x6b8d,0x73ce,0x73ad, +0x4a69,0x4aaa,0x4269,0x4a69,0x3a28,0x4228,0x3a08,0x4a8a,0x4249,0x31a6,0x3a08,0x4269,0x3a28,0x39e7,0x4228,0x31c7,0x39e7,0x31c7,0x3a08,0x31a6,0x31c7,0x3a08,0x31c6,0x31a6,0x39c7,0x31c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x39e7,0x31a6,0x2985,0x31a6,0x31c7,0x2986,0x31a6,0x2145,0x2965,0x2986,0x31a6,0x2124,0x2965,0x3a07,0x31a6,0x31c7,0x3186,0x2145,0x2965,0x2145,0x2985,0x2965,0x2965,0x2124,0x2965,0x2104,0x2965,0x2945,0x2965,0x2965,0x2104,0x2965,0x2986,0x2965,0x2104,0x2144,0x2124,0x2965,0x2965,0x2104,0x2104,0x18e3,0x2965,0x2144,0x2965,0x2145,0x2965,0x2945,0x2124,0x2124,0x18e3,0x2145,0x2124,0x10a2,0x2124,0x2965,0x2124,0x2104,0x2965,0x2144,0x1903,0x2145,0x2124,0x2124,0x2104,0x18e3,0x2124,0x1904,0x1903,0x2104,0x2965,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x2124,0x2104,0x18e3,0x10a2,0x18c3,0x2124,0x2124,0x2104,0x2945,0x18c2,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x2965,0x18e3,0x10a3,0x2124,0x2124,0x18c3,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2144,0x2124,0x2124,0x2124,0x1903,0x1903,0x2104,0x18e3,0x1904,0x2124,0x10c3,0x2104,0x2124,0x2144,0x2965,0x2985,0x2986,0x3186,0x2124,0x2124,0x2124,0x2124,0x2965,0x2144,0x2145,0x2104,0x2104,0x2124,0x2945,0x2986,0x2145,0x31a6,0x3186,0x2145,0x2986,0x31a6,0x2985,0x2986,0x39e7,0x31a6,0x2965,0x2985,0x2965,0x31c6,0x2144,0x2965,0x2945,0x2986,0x31c7,0x2945,0x2986,0x3a07,0x39e7,0x2985,0x31c6,0x31a6,0x31a6,0x39c7,0x31a6,0x2965,0x4208,0x31a6,0x31a6,0x39e7,0x4a89,0x31c6,0x39c7,0x31a7,0x39e7,0x39e7,0x4249,0x3a07,0x4a49,0x39e7,0x39e7,0x4208,0x4228,0x4a49,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4228,0x39e7,0x39e7,0x4a69,0x4249,0x4a89,0x4248,0x52ca,0x52ca,0x52ca,0x5aeb,0x528a,0x4a69,0x52cb,0x52aa,0x4a49,0x4a69,0x4a49,0x5acb,0x632c,0x634c,0x5b0b,0x5b0b,0x52eb,0x5b0c,0x5b0b,0x5aeb,0x5b0b,0x6b4d,0x5b0b,0x630c,0x6b6d,0x6b6d,0x634c,0x636d,0x6b6d,0x632c,0x5b2c,0x5aeb,0x5b2c,0x738e,0x7bcf,0x73ae,0x73ae,0x6bae,0x7c10,0x73ae,0x632c,0x6b4d,0x6b6d,0x73ae,0x6b4d,0x73ae,0x73ae,0x7bef,0x73ae,0x6b6e,0x8451,0x8430,0x73ce,0x8451,0x8430,0x7bef,0x7bef,0x7c10,0x8451,0x8c92,0x73cf,0x7c0f,0x73ce,0x73ae,0x8470,0x9cd3,0x8450,0x8450,0x8430,0x7bcf,0x8430,0x8c50,0x94d2,0x8451,0x9491,0x8c71,0x8c91,0x9d13,0x9cf3,0x94b2,0x94b1,0x8c71,0x7bef,0x7bef,0x7bef,0x8c91, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1041,0x0820,0x0000,0x0000,0x0020,0x0000,0x1081,0x0000,0x0861,0x0840,0x1081,0x0020,0x0000,0x1082,0x18c3,0x0861,0x0861,0x0861,0x0820,0x0820,0x1081,0x0861,0x0841,0x0861,0x1081,0x10a2,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0861,0x0820,0x1082,0x0861,0x0000,0x0840,0x0000,0x0840,0x10a2,0x0861,0x0881,0x0861,0x1081,0x1081,0x1082,0x0861,0x0861,0x1081,0x0840,0x0861,0x1081,0x0861,0x0020,0x0000,0x0841,0x0861,0x0841,0x0861,0x0020,0x0861,0x10a2,0x0861,0x1061,0x0840,0x0840,0x0020,0x0820,0x0820,0x0841,0x1061,0x0841,0x1082,0x1081,0x0841,0x1082,0x0861,0x0000,0x0861,0x0841,0x0020,0x0841,0x1081,0x0000,0x0820,0x1081,0x0841,0x1082,0x0861,0x1081,0x0861,0x0861,0x0840,0x0840,0x0861,0x0841,0x0841,0x1061,0x0841,0x0820,0x0861,0x1061,0x0841,0x10a2,0x0861,0x0020,0x0861,0x0020,0x0841,0x1082,0x10a2,0x0861,0x10a2,0x1081,0x0861,0x0881,0x0020,0x1081,0x0841,0x1061,0x1061,0x10a2,0x1082,0x0840,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x0861,0x0861,0x0881,0x0861,0x1061,0x0861,0x1082,0x1082,0x0840,0x0861,0x0861,0x0861,0x1082,0x0861,0x0840,0x10a2,0x1081,0x0861,0x0861,0x0840,0x0840,0x0000,0x0840,0x1061,0x0841,0x0861,0x10a2,0x1081,0x0861,0x1082,0x10a2,0x1082,0x1081,0x10a2,0x0840,0x0861,0x0840,0x0840,0x0841,0x0841,0x0020,0x0841,0x0841,0x0000,0x0000,0x0000,0x0820,0x0841,0x0020,0x1082,0x0820,0x0861,0x0820,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0841,0x0020,0x0000,0x0020,0x0881,0x18e3,0x18c2,0x18c3,0x0000,0x2103,0x2965,0x1061,0x0000,0x2104,0x2124,0x18e4,0x0821,0x18c3,0x2104,0x18e3,0x20e3,0x2104,0x18c3,0x2124,0x2125,0x1082,0x10a2,0x2104,0x18c3,0x2125,0x31a6,0x18e4,0x2965,0x4228,0x39c7,0x31a6,0x4208,0x4208,0x4208,0x4228,0x4208,0x39e8,0x39c7,0x4208,0x4249, +0x4248,0x4a89,0x4a69,0x4a89,0x52ca,0x4268,0x4289,0x4248,0x3a28,0x4248,0x3a07,0x4248,0x4248,0x3a07,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4a89,0x4269,0x4228,0x3a07,0x3a28,0x3a07,0x4228,0x4248,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x4228,0x4a69,0x4228,0x3a07,0x3a28,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x4248,0x3a07,0x3a28,0x3a28,0x3a28,0x4228,0x3a08,0x3a07,0x3a28,0x39e7,0x3a07,0x3a07,0x4248,0x39e7,0x39e7,0x4228,0x3a07,0x3a07,0x4228,0x3a28,0x3a07,0x3a28,0x3a28,0x3a08,0x39e7,0x3a08,0x3a07,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a28,0x3a07,0x3a28,0x39e7,0x3a07,0x4228,0x4a69,0x4228,0x31c7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x4248,0x4248,0x3a07,0x3a28,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a07,0x3a07,0x3a28,0x3a07,0x3a28,0x3a07,0x4228,0x4248,0x31c6,0x39e7,0x3a07,0x3a07,0x3a07,0x3a08,0x3a28,0x31e7,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a07,0x3a07,0x3a08,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4248,0x3a07,0x3a07,0x3a08,0x4248,0x3a07,0x39e7,0x3a07,0x4248,0x4228,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a28,0x39e7,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a89,0x31c6,0x3a07,0x3a28,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x4228,0x39e7,0x4248,0x4208,0x39e7,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x3a07,0x3a07,0x4248,0x4228,0x39e7,0x3a07,0x39e7,0x39c6,0x39e7,0x39e7,0x31c7,0x39c6,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x39c6,0x39e7,0x31e7,0x39e7,0x3a07,0x3a07,0x31c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x31c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39c6,0x4228,0x39e7,0x31a6,0x39e7,0x4207,0x31a6,0x31a6,0x39e7,0x31c6,0x31a6,0x31c6,0x31c6,0x39e7,0x4228,0x31c6,0x31a6,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3185,0x3186,0x3186,0x3185,0x39e7,0x31a6,0x2965,0x3186,0x39e7,0x3186,0x31a6,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39c7,0x39c6,0x31c6,0x31a6,0x31a6,0x39c6,0x31a6,0x3185,0x2965,0x2124,0x2104,0x2124,0x2944,0x1903,0x1903,0x18e2,0x1903,0x2124,0x1903,0x18e3,0x1081, +0x4269,0x4249,0x4248,0x4269,0x4248,0x4248,0x4248,0x4228,0x4248,0x4228,0x3a28,0x4248,0x4269,0x3a28,0x4248,0x4248,0x4248,0x4a89,0x4269,0x4228,0x3a28,0x4248,0x3a28,0x3a28,0x4228,0x4248,0x3a28,0x3a07,0x4248,0x4228,0x4248,0x3a28,0x3a07,0x4228,0x3a28,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x4228,0x4228,0x4248,0x4269,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4228,0x4248,0x3a28,0x4228,0x3a28,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x4248,0x4248,0x4228,0x4228,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4228,0x3a08,0x4248,0x4228,0x3a07,0x4269,0x4248,0x4228,0x4248,0x3a07,0x39e7,0x4248,0x4248,0x4248,0x4269,0x4228,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4248,0x4228,0x39e7,0x4249,0x4248,0x4228,0x4248,0x4228,0x4a69,0x4248,0x4228,0x3a28,0x4269,0x4269,0x4248,0x4269,0x4a69,0x4228,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a89,0x4248,0x3a28,0x4268,0x4248,0x4248,0x4a89,0x4248,0x4269,0x4269,0x4269,0x4a69,0x4248,0x4228,0x4228,0x4a89,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4a89,0x4228,0x4248,0x4a69,0x4248,0x3a28,0x4248,0x4228,0x4a89,0x4a69,0x4228,0x4a69,0x4a69,0x4269,0x4a89,0x4269,0x4269,0x4a69,0x4269,0x4a89,0x4a69,0x4228,0x4248,0x4a69,0x4a89,0x4a69,0x5289,0x4a69,0x4a69,0x4aaa,0x4a69,0x4248,0x4a89,0x4a89,0x4269,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x52ca,0x52aa,0x52aa,0x4a89,0x4aaa,0x52aa,0x52aa,0x52aa,0x4a89,0x4a69,0x4a89,0x4a89,0x52ca,0x52aa,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52aa,0x4a89,0x4aaa,0x4a69,0x52ca,0x5aeb,0x52ca,0x52aa,0x4a89,0x5aeb,0x52ca,0x4a89,0x52aa,0x4a69,0x4a69,0x4a89,0x4a89,0x52eb,0x52ca,0x4a69,0x4a89,0x52aa,0x52aa,0x52aa,0x4a89,0x52ca,0x5aca,0x52a9,0x5aeb,0x52ca,0x4a89,0x52aa,0x4aaa,0x4a89,0x5289,0x52aa,0x52ca,0x52a9,0x52ca,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4248,0x4a69,0x4a69,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x52aa,0x52aa,0x5aeb,0x4a89,0x4a89,0x52ca,0x4a8a,0x4a89,0x4a89,0x5aeb,0x5289,0x4a69,0x4a69,0x4a69,0x4a69,0x52ca,0x52ca,0x4a69,0x52aa,0x528a,0x4a49,0x4a8a,0x4a49,0x4a69,0x4a69,0x4a69,0x4249,0x4a89,0x52aa,0x52aa,0x4248,0x4a69,0x4248,0x4a89,0x4a89,0x4a89,0x4a8a,0x528a,0x4a69,0x4228,0x528a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52aa,0x4a69,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x528a,0x4a69,0x4a89,0x5acb,0x5aeb,0x4a89,0x4a49,0x52aa,0x52aa,0x52aa,0x4a69,0x528a,0x4a89,0x4228,0x4a49, +0x3a08,0x4248,0x3a28,0x3a07,0x3a28,0x3a07,0x3a08,0x3a07,0x4228,0x3a08,0x4249,0x4248,0x4228,0x3a28,0x3a07,0x3a28,0x4228,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x3a27,0x4248,0x3a07,0x3a08,0x4228,0x39e7,0x3a28,0x4228,0x4248,0x4269,0x4228,0x3a07,0x4228,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a28,0x3a07,0x4248,0x4248,0x4248,0x4a69,0x4a89,0x4228,0x4248,0x4269,0x4269,0x4269,0x4248,0x4248,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4248,0x4a89,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4269,0x4268,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4269,0x4248,0x3a28,0x4248,0x4248,0x4248,0x4269,0x4248,0x3a28,0x4a69,0x4269,0x4268,0x4268,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x3a28,0x4269,0x4248,0x4269,0x4269,0x4248,0x3a08,0x4269,0x4269,0x4248,0x3a28,0x4a69,0x4aa9,0x4269,0x4a89,0x4a69,0x4228,0x4249,0x4269,0x4a69,0x4248,0x4248,0x4268,0x4268,0x4248,0x4248,0x4228,0x4248,0x4269,0x4248,0x4248,0x4269,0x4248,0x4249,0x4248,0x4228,0x4269,0x4248,0x4269,0x4248,0x4a69,0x4269,0x4aaa,0x52aa,0x4a89,0x4a69,0x4a89,0x4aa9,0x4a69,0x4248,0x4248,0x4a69,0x4269,0x4a89,0x4269,0x4a69,0x4a49,0x4a69,0x4a89,0x4a89,0x4248,0x4248,0x4a89,0x4aa9,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x4a8a,0x4a89,0x4a89,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x4a89,0x4a89,0x4a89,0x52aa,0x52aa,0x4aa9,0x4a69,0x4a89,0x4aaa,0x52aa,0x52ca,0x52eb,0x52ca,0x52aa,0x52ca,0x52ca,0x4a89,0x4a89,0x52ca,0x52aa,0x52aa,0x4a69,0x52aa,0x5289,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x52aa,0x52aa,0x4a89,0x4a69,0x52aa,0x52aa,0x52aa,0x52aa,0x5289,0x4a69,0x52aa,0x52aa,0x4a69,0x4a89,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x52aa,0x4a69,0x4a48,0x4a48,0x4a48,0x4248,0x4a69,0x4a69,0x528a,0x528a,0x4a69,0x4aaa,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x52aa,0x5289,0x52aa,0x52aa,0x5289,0x4a89,0x52ca,0x52aa,0x4a69,0x4a89,0x52ca,0x52aa,0x4a8a,0x4249,0x4a8a,0x4a89,0x4a69,0x4249,0x4a69,0x4a89,0x52aa,0x4a69,0x4a69,0x4269,0x52aa,0x4249,0x4a89,0x52aa,0x4a89,0x528a,0x52aa,0x52aa,0x4a69,0x4a89,0x52ca,0x4a89,0x52aa,0x5b0b,0x52cb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x4aaa,0x52aa,0x52cb,0x52ca,0x5aeb,0x52ca,0x528a,0x5aca,0x52ca,0x52aa,0x4a69,0x6b4d,0x632c,0x52ca,0x5aeb, +0x39e7,0x3a08,0x4208,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39c7,0x31c6,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31a6,0x39e7,0x4208,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x3a08,0x39e7,0x3a07,0x3a07,0x4228,0x39e7,0x3a07,0x3a07,0x3a08,0x3a07,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4248,0x4a89,0x4228,0x3a08,0x4228,0x3a07,0x3a07,0x4248,0x4248,0x3a07,0x39e7,0x3a07,0x39e7,0x4248,0x4248,0x3a07,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4269,0x4248,0x4228,0x4228,0x4248,0x39e7,0x3a07,0x4228,0x3a28,0x4228,0x4228,0x39e7,0x4228,0x3a08,0x39e7,0x4228,0x4207,0x4228,0x3a07,0x4228,0x4248,0x4a69,0x4228,0x3a07,0x3a08,0x4248,0x4228,0x4248,0x4a8a,0x4228,0x4228,0x4249,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4a69,0x4248,0x4a69,0x4248,0x4228,0x4248,0x3a28,0x3a08,0x4248,0x3a28,0x4248,0x3a28,0x4228,0x4a89,0x4249,0x4228,0x4248,0x39e7,0x4228,0x4248,0x3a28,0x3a07,0x39e7,0x4208,0x4228,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x3a28,0x4228,0x4249,0x4228,0x4249,0x4248,0x3a08,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x5289,0x4a89,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4a89,0x4a48,0x4248,0x4aaa,0x52aa,0x52ca,0x4a69,0x4a89,0x4aaa,0x4a69,0x4a8a,0x4a69,0x52aa,0x52ca,0x52aa,0x4a89,0x4a69,0x4248,0x4a89,0x52ca,0x5aeb,0x52aa,0x52aa,0x52aa,0x4a69,0x4269,0x4a89,0x5aeb,0x4a89,0x4aaa,0x4a69,0x4a89,0x4a69,0x52aa,0x4a89,0x4a89,0x4a69,0x528a,0x4a89,0x52aa,0x52cb,0x4a69,0x4a8a,0x4a69,0x52aa,0x4a89,0x4aaa,0x52eb,0x52ca,0x5aeb,0x52aa,0x52ca,0x5acb,0x5289,0x4a89,0x4248,0x4a49,0x52aa,0x4a69,0x52aa,0x52aa,0x528a,0x528a,0x4a69,0x4a49,0x4a69,0x4a69,0x4a8a,0x4a48,0x52ca,0x630c,0x4a89,0x52aa,0x4a89,0x528a,0x4a89,0x52ca,0x52aa,0x4a89,0x5289,0x528a,0x4a69,0x4248,0x4a69,0x4269,0x4269,0x4a69,0x4a89,0x4a89,0x52aa,0x4a89,0x52aa,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4aaa,0x4a89,0x4aaa,0x5289,0x4a69,0x52aa,0x4a89,0x52aa,0x4a69,0x4249,0x4a8a,0x4a69,0x4a69,0x528a,0x4a89,0x4a69,0x4248,0x4a69,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4aaa,0x4249,0x4228,0x52aa,0x4a69,0x4a49,0x4228,0x4a69,0x4a8a,0x4a69,0x4228,0x4a69,0x528a,0x4a49,0x52aa,0x630c,0x5b0b,0x4a8a,0x5aeb,0x4a89,0x5aeb,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x4a69,0x52cb,0x52cb,0x52ca,0x632c,0x6b6d,0x5acb,0x5aeb,0x634d,0x5b0b, +0x3186,0x3185,0x31a6,0x31a6,0x2985,0x31c6,0x31c6,0x2985,0x3185,0x31a6,0x31a5,0x3185,0x3185,0x3186,0x31a6,0x31a6,0x3185,0x31a6,0x3185,0x3186,0x31a6,0x2985,0x2985,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x2985,0x31c6,0x31c6,0x31a5,0x39e7,0x31a6,0x31a6,0x31c6,0x3185,0x31c6,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x2985,0x2986,0x31a6,0x3185,0x31a6,0x2965,0x3185,0x31c6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x31c6,0x2985,0x2965,0x31c6,0x31c6,0x2985,0x2985,0x2965,0x2965,0x2965,0x31c6,0x2965,0x2965,0x2985,0x2965,0x2965,0x2944,0x31a6,0x31a6,0x31a6,0x2985,0x2965,0x2124,0x31a6,0x2144,0x2144,0x2985,0x2985,0x2965,0x2144,0x2985,0x2144,0x2985,0x2985,0x2985,0x2965,0x2145,0x2965,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2144,0x18e3,0x2104,0x2124,0x18e3,0x2124,0x2124,0x2944,0x2124,0x2144,0x2945,0x2144,0x2124,0x2985,0x2985,0x2144,0x2964,0x2965,0x2144,0x2144,0x2985,0x2965,0x3185,0x2965,0x2965,0x2965,0x2985,0x2144,0x2145,0x2145,0x2144,0x2124,0x2145,0x2144,0x2144,0x2965,0x2124,0x2945,0x2985,0x2965,0x2985,0x2945,0x2144,0x2144,0x2145,0x2965,0x2124,0x2144,0x2965,0x2144,0x2965,0x2124,0x1903,0x2965,0x2144,0x2985,0x31a6,0x2144,0x2985,0x2985,0x2965,0x2965,0x2985,0x2985,0x2985,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2944,0x2965,0x2985,0x31c6,0x2945,0x2945,0x2945,0x2945,0x3186,0x2985,0x2944,0x2985,0x2965,0x2145,0x2965,0x2144,0x2124,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2944,0x2945,0x2965,0x2965,0x2104,0x2124,0x2144,0x2144,0x2965,0x2144,0x31a6,0x2965,0x31a6,0x31a6,0x2944,0x2965,0x2985,0x2985,0x2945,0x2965,0x2965,0x3185,0x31a6,0x3186,0x2945,0x2124,0x2965,0x2144,0x2124,0x2965,0x31a6,0x39e7,0x2965,0x31a6,0x2965,0x2945,0x3185,0x31a6,0x2945,0x2945,0x3186,0x2965,0x2124,0x2965,0x2965,0x2145,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x3186,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945,0x3186,0x2985,0x2985,0x2985,0x2965,0x2985,0x31a6,0x39c7,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x3186,0x2965,0x2945,0x2985,0x2965,0x2985,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x3186,0x31a6,0x2985,0x2985,0x31a6,0x2985,0x31a6,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a07,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e7,0x39c7,0x31c7,0x3a07,0x4a69,0x39c7,0x528a,0x5aeb,0x4228,0x4228,0x3a08,0x4228, +0x4a89,0x4aa9,0x4aa9,0x52a9,0x52ea,0x52ca,0x52ca,0x52ca,0x4aa9,0x52ea,0x52ca,0x52a9,0x52aa,0x5aea,0x52ca,0x4aa9,0x52ca,0x52aa,0x52ea,0x52ca,0x52ca,0x52ca,0x4aa9,0x52ea,0x5aeb,0x52ca,0x52aa,0x52ea,0x52ca,0x5b0b,0x52ea,0x52ea,0x52ea,0x52ea,0x52ca,0x5aeb,0x52ea,0x52ea,0x52ea,0x52ca,0x5aeb,0x52ca,0x5b0b,0x52ea,0x52ca,0x52ea,0x52ea,0x52aa,0x52aa,0x52ea,0x4aa9,0x52ca,0x52ea,0x5b4c,0x52ea,0x52ca,0x52ea,0x4aa9,0x52ea,0x52ea,0x4aa9,0x52ea,0x52ca,0x4a69,0x4aa9,0x52ca,0x5b0b,0x52ca,0x52ca,0x52eb,0x5b2b,0x5b0b,0x52eb,0x52ca,0x52ca,0x5aeb,0x52ea,0x4aa9,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x52ca,0x52ca,0x5b0b,0x52ca,0x4a89,0x52ea,0x52eb,0x5b0b,0x5b0b,0x52ea,0x52ca,0x5aeb,0x52eb,0x52ca,0x52ca,0x4aa9,0x52ea,0x52eb,0x4aaa,0x52aa,0x5aeb,0x5b0b,0x52aa,0x5b0b,0x52ca,0x4248,0x4a89,0x4a89,0x4aa9,0x52aa,0x4aa9,0x52ca,0x5b0b,0x52ca,0x52ea,0x52ca,0x4a89,0x52a9,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b0b,0x52ca,0x5b0b,0x52ca,0x5aeb,0x5b2c,0x52ca,0x52ea,0x52ca,0x52ea,0x5b0b,0x4aaa,0x5aeb,0x5b0b,0x5b0b,0x4a89,0x4aa9,0x5b0b,0x634c,0x5b2b,0x634c,0x5b2b,0x634c,0x52ca,0x52ca,0x4aaa,0x4aa9,0x5b2c,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x632c,0x52ca,0x5b0b,0x52ea,0x5b0b,0x632c,0x52ca,0x52ca,0x5b0b,0x52aa,0x5aea,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aea,0x5b0b,0x5b0b,0x5aeb,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x5aeb,0x5aeb,0x5aeb,0x5aca,0x5aea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52aa,0x52aa,0x52ca,0x4a89,0x52a9,0x4aa9,0x52ca,0x5aeb,0x52a9,0x5aeb,0x52ca,0x4a89,0x5aeb,0x52ca,0x52ca,0x52ca,0x52ea,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52ea,0x52ea,0x52a9,0x52ca,0x5aca,0x52ca,0x52ca,0x4a69,0x52aa,0x5aeb,0x4a89,0x4a69,0x52aa,0x4a69,0x4a89,0x52ca,0x52aa,0x52aa,0x4a69,0x5aeb,0x4a89,0x4248,0x4a69,0x52aa,0x4a69,0x4aa9,0x3a07,0x4268,0x4268,0x4228,0x4269,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4a69,0x5289,0x4a69,0x52aa,0x4a49,0x4a89,0x4a69,0x4268,0x4aa9,0x4a68,0x4a69,0x4a89,0x4a68,0x52a9,0x4a69,0x4248,0x4248,0x4a89,0x4a49,0x4a48,0x4a69,0x4a69,0x4248,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4a49,0x4a49,0x4228,0x4207,0x39e7,0x4207,0x39e7,0x4227,0x4248,0x4207,0x4227,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x4207,0x4207,0x39c6,0x31c6,0x39c7,0x2985,0x2965,0x31a6,0x31a6,0x2985,0x2985, +0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x52ea,0x632c,0x634c,0x5b0b,0x634c,0x5b2b,0x52ea,0x632c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x634c,0x5b2b,0x5b0b,0x5b4c,0x530b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2c,0x5b0b,0x530b,0x52ea,0x5b4b,0x636c,0x52ea,0x530a,0x52eb,0x5b4c,0x530b,0x5b4c,0x5b2b,0x52ea,0x5b2b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x52ea,0x636c,0x5b2b,0x5b2b,0x5b2b,0x52ea,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x530a,0x634c,0x5b0b,0x5b2b,0x5b2c,0x530b,0x5b2b,0x530b,0x5b0b,0x5b4c,0x5b4c,0x530b,0x5b0b,0x636c,0x636c,0x530b,0x5b2b,0x530b,0x52ea,0x52ea,0x634c,0x5b4c,0x5b4c,0x634c,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b0b,0x634c,0x5b0b,0x530b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x52ca,0x5b0b,0x52eb,0x52eb,0x5b4c,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b2c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x636c,0x530b,0x5b0b,0x634c,0x636c,0x634c,0x634c,0x52ea,0x636c,0x634c,0x638d,0x73ee,0x634c,0x52eb,0x636c,0x636c,0x5b2c,0x632c,0x6b8d,0x5b4c,0x636d,0x638d,0x6bae,0x6bad,0x634c,0x636c,0x636c,0x5b0b,0x632c,0x6b8d,0x634c,0x6b8d,0x6b8d,0x636c,0x634c,0x6b6d,0x5b0b,0x636c,0x6b6d,0x632c,0x634c,0x636d,0x6b6d,0x634c,0x634c,0x634c,0x632c,0x634c,0x6b6d,0x6b8d,0x6b6c,0x634c,0x5b2b,0x6b8d,0x6b8d,0x634c,0x6b6c,0x6b8d,0x6b6c,0x6b6c,0x6b6d,0x632c,0x634c,0x634c,0x5b2c,0x5b2c,0x5b2c,0x632c,0x634c,0x634c,0x6b6d,0x6b6d,0x634c,0x636c,0x636c,0x634c,0x634c,0x6b6d,0x6b8d,0x6b6d,0x634c,0x6b6d,0x636c,0x634c,0x6b6c,0x630b,0x632c,0x6b4c,0x634c,0x634c,0x634c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x634c,0x632c,0x632c,0x634c,0x6b8d,0x632c,0x5b2b,0x634c,0x634c,0x632c,0x6b6d,0x6b6d,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630c,0x632c,0x634c,0x632c,0x634c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x632c,0x630b,0x5b0b,0x5b0b,0x634c,0x634c,0x6b6c,0x634c,0x632c,0x634c,0x6b6c,0x6b6d,0x634c,0x6b4d,0x632c,0x634c,0x6b4c,0x6b4c,0x6b8d,0x632b,0x5aeb,0x5aeb,0x6b6c,0x634c,0x634c,0x6b6d,0x6b4c,0x634c,0x632c,0x632c,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x5aeb,0x5b0b,0x632c,0x632c,0x632c,0x634c,0x632b,0x6b6c,0x5b0b,0x5b0b,0x632b,0x630b,0x5b0b,0x634c,0x632b,0x630b,0x632b,0x632c,0x632c,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5aeb, +0x5b0b,0x5b0b,0x5b0b,0x634c,0x634c,0x52ea,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x52ea,0x5b2b,0x634c,0x632b,0x5b2b,0x634c,0x636c,0x634b,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x52ca,0x5aeb,0x5b2b,0x5b0b,0x634c,0x6b8d,0x634c,0x5b0b,0x634c,0x5b2c,0x5b2b,0x634c,0x5b2c,0x5b0b,0x634c,0x636c,0x632b,0x5b0b,0x5b2b,0x634c,0x5b2b,0x5b4c,0x638d,0x634c,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x5aeb,0x52ea,0x52aa,0x5b0b,0x5aea,0x52aa,0x5b0b,0x5b0b,0x5b2b,0x632c,0x5b0b,0x4aaa,0x52ca,0x5b0b,0x632b,0x5b0b,0x5b2b,0x5b2b,0x52ca,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x52ea,0x52ca,0x52ca,0x5b2b,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x4aa9,0x52eb,0x5b0b,0x52eb,0x530b,0x5b2b,0x5b2c,0x5b2c,0x634c,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b2b,0x52eb,0x52eb,0x52ca,0x5b0b,0x5b4c,0x5b0b,0x530b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x530b,0x632c,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x5b4c,0x52ca,0x5b0b,0x52ca,0x52ca,0x632c,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x634c,0x634c,0x6b6d,0x5b0b,0x6b8d,0x636c,0x5b2c,0x5b0b,0x634c,0x636c,0x634c,0x5b0b,0x6b8d,0x634c,0x632c,0x634c,0x634c,0x636c,0x5b2b,0x6b6d,0x6b6c,0x6b6d,0x6b6c,0x5b0b,0x634c,0x634c,0x6b8d,0x632c,0x634c,0x6b8d,0x636c,0x6b6d,0x636d,0x632c,0x632c,0x6b8d,0x636c,0x632c,0x636c,0x634c,0x632c,0x5b0b,0x6b6c,0x632c,0x632c,0x636c,0x6b6d,0x636c,0x634c,0x6b6c,0x6b6d,0x6b8d,0x6b8d,0x6b6c,0x6b8d,0x73ce,0x6b8d,0x632c,0x630b,0x630b,0x6b6c,0x6b6d,0x632c,0x6bae,0x5aeb,0x634c,0x6b6d,0x632b,0x632c,0x6b6d,0x6b8d,0x7bef,0x634c,0x636c,0x6bad,0x6b8d,0x636c,0x634c,0x630b,0x6b6d,0x634c,0x632c,0x6b8d,0x6b8d,0x5b0b,0x632c,0x6b6d,0x6b6d,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630b,0x6b8d,0x630b,0x630b,0x6b8d,0x6b8d,0x634c,0x632c,0x632c,0x5b0b,0x634c,0x6b6d,0x6b8d,0x5b0b,0x630b,0x630c,0x632c,0x632b,0x632c,0x632c,0x5b0b,0x52ca,0x5aeb,0x630b,0x632c,0x634c,0x5b0b,0x632c,0x632c,0x630b,0x5aea,0x634c,0x6b6c,0x632c,0x632b,0x632c,0x632c,0x5aeb,0x632b,0x5b0b,0x634c,0x632c,0x6b4c,0x632c,0x632b,0x5aeb,0x634c,0x630b,0x5aca,0x5aeb,0x632c,0x6b4c,0x634c,0x6b6d,0x5aca,0x5aeb,0x5b0b,0x5aeb,0x630b,0x5b0b,0x632c,0x632c,0x5b0b,0x634c,0x632c,0x632c,0x5b0b,0x632c,0x630b,0x630b,0x632c,0x632c,0x630b,0x630b,0x632b,0x6b6c,0x6b6c,0x632c,0x5aeb,0x632b,0x6b8d,0x632c,0x632c,0x634c,0x632c,0x630b,0x632c, +0x52ca,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b2b,0x632b,0x530b,0x634c,0x636c,0x5b2b,0x5b2b,0x634c,0x5b0b,0x52ca,0x52ca,0x530b,0x5b0b,0x634c,0x5b2b,0x530b,0x634c,0x5b2b,0x5b4c,0x636c,0x636c,0x634c,0x636d,0x634c,0x5b4c,0x634c,0x5b4c,0x5b2b,0x634c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ca,0x52ea,0x52ea,0x5aeb,0x5b2b,0x636d,0x5b0b,0x5b0b,0x5b2b,0x52ca,0x52ca,0x4aaa,0x52ca,0x52eb,0x5b0b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x5b4c,0x5b2b,0x5b0b,0x6bad,0x6bce,0x4aa9,0x52ea,0x4aa9,0x636c,0x5b2b,0x52ea,0x5b2c,0x5b0b,0x5b0b,0x5b0c,0x634c,0x5b2b,0x52ea,0x5b2b,0x634c,0x5b2c,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x530b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x530b,0x5b2b,0x5b2b,0x5b0b,0x634c,0x52ca,0x52aa,0x5b0b,0x5b2b,0x5b4c,0x530a,0x52ea,0x5b4c,0x634c,0x5b2b,0x5b2b,0x634c,0x5b0b,0x632b,0x5b0b,0x634c,0x634c,0x634c,0x634c,0x634c,0x52eb,0x5b0b,0x5b2c,0x530b,0x634c,0x636c,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x634c,0x5b0b,0x5b0b,0x634c,0x5b2b,0x634c,0x634c,0x634c,0x6b8d,0x5b2c,0x5b4c,0x634c,0x634c,0x6b8d,0x636c,0x5b2b,0x636c,0x634c,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x73ad,0x632b,0x634c,0x6b8d,0x73ce,0x6b8d,0x6bad,0x6b8d,0x632c,0x632c,0x6b8d,0x634c,0x6b8d,0x6b8d,0x634c,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636c,0x636c,0x6b8d,0x6b8d,0x6b8d,0x73ae,0x73ee,0x73ce,0x6b6d,0x6b8d,0x6b6d,0x634c,0x6b8d,0x6b8d,0x73ad,0x6b8d,0x73ce,0x73ad,0x6b8d,0x632c,0x632c,0x6b4c,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6bad,0x634c,0x634c,0x6b8d,0x634c,0x73ae,0x6b8d,0x6b8d,0x6b6d,0x73ad,0x7bef,0x73ad,0x634c,0x6b6c,0x6b6d,0x6b6c,0x6b8d,0x6b8d,0x6bad,0x73ce,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x632b,0x632c,0x634c,0x6b6d,0x634c,0x634c,0x634c,0x73ae,0x6b8d,0x5b0b,0x6b6d,0x5b0b,0x632c,0x6b6d,0x632c,0x632c,0x5b0b,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x630b,0x630b,0x634c,0x6b4c,0x632c,0x632c,0x6b4c,0x632c,0x630c,0x630c,0x630b,0x634c,0x632c,0x632c,0x6b4c,0x6b4c,0x632c,0x632c,0x5b0b,0x634c,0x632c,0x632c,0x630b,0x5b0b,0x6b6c,0x5b0b,0x5b0b,0x6b6d,0x6b6d,0x630b,0x6b6d,0x632c,0x632c,0x630b,0x5b0b,0x5b0b,0x5aca,0x630b,0x5b0b,0x632c,0x6b4c,0x5aeb,0x632c,0x6b8d,0x630c,0x634c,0x6b4c,0x632c,0x632c,0x632b,0x6b4c,0x6b6c,0x630b,0x630c,0x632b,0x632c,0x632b,0x6b6c,0x634c,0x632c,0x634c,0x630b,0x6b6d,0x634c,0x634c,0x632c,0x632b,0x632b, +0x52eb,0x5b2c,0x52eb,0x52aa,0x5b2c,0x634c,0x634c,0x634c,0x5b2b,0x52aa,0x5b0b,0x5b0b,0x636c,0x634c,0x6bad,0x6b8d,0x5b0b,0x634c,0x5aea,0x5aeb,0x632c,0x5b0b,0x5b0b,0x52ea,0x4aa9,0x52ea,0x636c,0x634c,0x5b0b,0x5b2b,0x636c,0x6b8d,0x73ee,0x636c,0x638d,0x5b4c,0x5b4c,0x5b2b,0x530b,0x636c,0x634c,0x5b4c,0x636c,0x636c,0x634c,0x634c,0x52ea,0x4aaa,0x52ca,0x5b2b,0x636c,0x5b0b,0x5b2b,0x530b,0x5b4c,0x5b4c,0x634c,0x52aa,0x52ca,0x5b0b,0x52ea,0x5b2b,0x52ea,0x4aca,0x4aca,0x5b2b,0x636c,0x5b0b,0x530b,0x52ea,0x4aaa,0x530b,0x530b,0x5b2c,0x5b2b,0x5b2b,0x636d,0x5b4c,0x5b0b,0x5b2c,0x634c,0x5b2c,0x52eb,0x52ca,0x634c,0x636d,0x634c,0x5aeb,0x5aeb,0x5b2c,0x52ca,0x52ca,0x5b0b,0x5b0b,0x632c,0x52eb,0x5b0b,0x5b0b,0x5b2c,0x52ca,0x636c,0x4aca,0x52ea,0x5b2c,0x5aeb,0x4a89,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5b0b,0x5b2c,0x634c,0x5b4c,0x5b2b,0x5b4c,0x636c,0x5b2c,0x5b2c,0x634c,0x52eb,0x52eb,0x52aa,0x634c,0x632c,0x530b,0x5b4c,0x634c,0x5b2c,0x5b2c,0x5b0c,0x634c,0x5b0c,0x5b2c,0x634c,0x6b8d,0x5b0b,0x634c,0x636d,0x6b8d,0x634c,0x52eb,0x52eb,0x4aaa,0x5b4c,0x636d,0x5aeb,0x5b2c,0x5b0b,0x636d,0x5b2c,0x5b4c,0x5b2c,0x634c,0x6b6d,0x636d,0x6b8d,0x73ee,0x5b2c,0x636c,0x636c,0x52eb,0x5b2c,0x6b8d,0x73ae,0x52ca,0x5b0b,0x632c,0x6b6d,0x6bad,0x73ce,0x638d,0x6bae,0x73ce,0x6b8d,0x6b8d,0x636d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x73ce,0x634c,0x6b8d,0x6bae,0x634c,0x634c,0x636d,0x6b6d,0x73ae,0x73ae,0x6bad,0x6b8d,0x634c,0x6b6d,0x73ae,0x6b6d,0x6b6d,0x636d,0x6b8d,0x6b6d,0x73ce,0x6b8d,0x636d,0x636d,0x636c,0x636c,0x5b2c,0x6b6d,0x634c,0x634c,0x6b8d,0x6b8d,0x634c,0x634c,0x634c,0x6b6c,0x6b8d,0x6b6d,0x73ce,0x73ad,0x73ae,0x73ae,0x6b6d,0x6b6d,0x632b,0x634c,0x5b0b,0x634c,0x6b6d,0x634c,0x636d,0x634c,0x634c,0x6b6d,0x634c,0x632c,0x632c,0x5b0b,0x5b0b,0x634d,0x634c,0x6b8d,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x6b4c,0x5b0b,0x632c,0x738e,0x6b6d,0x6b6d,0x6b6d,0x632c,0x632c,0x634c,0x6b8d,0x738d,0x634c,0x632c,0x632c,0x634c,0x5b2b,0x6b6c,0x630b,0x6b8d,0x6b6d,0x632c,0x6b6d,0x632b,0x6b4c,0x630b,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5aeb,0x630b,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5b0b,0x632c,0x630b,0x632b,0x5b0b,0x5b0c,0x5b0b,0x5acb,0x5aeb,0x5aeb,0x5b0b,0x632c,0x6b4c,0x6b4c,0x5b0b,0x5b0b,0x5aeb,0x634c,0x632c,0x630b,0x634c,0x630b,0x6b4c,0x634c,0x632c,0x738d,0x630b,0x632c,0x632c,0x6b6d,0x632b, +0x6b8d,0x6b8d,0x5b4c,0x638d,0x5b2c,0x6bce,0x6bce,0x6bad,0x6b8d,0x638d,0x638d,0x530b,0x73ce,0x6bce,0x740f,0x73ce,0x52eb,0x5b2b,0x6bad,0x6b8d,0x636c,0x73ee,0x634c,0x636d,0x638d,0x638d,0x636d,0x5b2c,0x6bad,0x638d,0x5b4c,0x638d,0x636c,0x638d,0x636c,0x5b0b,0x5b4c,0x5b2c,0x5b0b,0x5b0b,0x638d,0x636c,0x530b,0x5b2b,0x634c,0x4aaa,0x52eb,0x52ea,0x4269,0x4aca,0x530b,0x4aaa,0x4a89,0x52eb,0x52eb,0x4248,0x52eb,0x4aaa,0x4a89,0x4a89,0x52ea,0x4aaa,0x4248,0x4269,0x4a8a,0x4aaa,0x4a89,0x4a89,0x4269,0x4aa9,0x4a89,0x4a69,0x4248,0x39e7,0x4228,0x52ea,0x52eb,0x4248,0x4a89,0x3a07,0x4228,0x4228,0x31c6,0x4228,0x4248,0x4248,0x4228,0x3a28,0x3a07,0x39e7,0x4248,0x4a69,0x3a28,0x4228,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31c7,0x4269,0x3a28,0x31a6,0x3a08,0x39e7,0x31a6,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x4a69,0x4228,0x39e7,0x52aa,0x4228,0x4a69,0x4228,0x31c7,0x4269,0x4269,0x3a07,0x4208,0x4248,0x39e7,0x31e7,0x3a08,0x4248,0x4228,0x3a08,0x3a08,0x4228,0x4248,0x3a07,0x3a28,0x4248,0x4a69,0x3a08,0x4249,0x4249,0x3a08,0x4a69,0x4249,0x4aaa,0x3a07,0x3a07,0x4228,0x39e7,0x31c7,0x4228,0x4228,0x4249,0x4228,0x4a69,0x4248,0x4228,0x4249,0x4208,0x4248,0x3a07,0x4228,0x4a89,0x4a69,0x52aa,0x4228,0x4228,0x4228,0x4a69,0x4aaa,0x4228,0x4228,0x4a8a,0x52cb,0x4a49,0x4a89,0x4a89,0x52aa,0x52aa,0x52aa,0x4a89,0x528a,0x4a69,0x52aa,0x5b0b,0x4a69,0x5acb,0x52aa,0x632c,0x52cb,0x4a69,0x4a8a,0x528a,0x528a,0x52aa,0x52aa,0x6b6d,0x52aa,0x52eb,0x5acb,0x52aa,0x634c,0x5b0b,0x4a8a,0x5b0c,0x632c,0x52eb,0x52cb,0x5b0b,0x5aeb,0x634c,0x5aeb,0x52cb,0x634c,0x52ca,0x5b0b,0x632c,0x52eb,0x636d,0x632c,0x632c,0x634c,0x738d,0x634c,0x6b6d,0x6b6d,0x636c,0x73ce,0x73ae,0x73ae,0x6b8d,0x6b8d,0x632c,0x634c,0x6bae,0x5b2c,0x634c,0x73ef,0x73ae,0x73ae,0x6b8d,0x7bef,0x634c,0x8450,0x73ef,0x73ae,0x8430,0x6b8d,0x632c,0x73ce,0x634c,0x6b6d,0x8430,0x73ae,0x73ce,0x7bef,0x6b8d,0x7bef,0x7bef,0x7bef,0x73ce,0x6b6d,0x73ae,0x8c70,0x7bef,0x8c71,0x8470,0x7c2f,0x6b8d,0x7c0f,0x73ce,0x8410,0x7bee,0x7c0f,0x8450,0x6b8d,0x7c2f,0x7c0f,0x7c0f,0x7c0f,0x7bee,0x7bee,0x73ce,0x840d,0x94ae,0x842f,0x8450,0x7c0f,0x73ce,0x738d,0x73ce,0x634c,0x7bce,0x840f,0x840f,0x634c,0x634c,0x6b8d,0x738d,0x73ae,0x73ae,0x73ad,0x6b6d,0x6b6d,0x6b8d,0x73ad,0x6b6c,0x6b6d,0x6b8d,0x634c,0x6b4c,0x632c,0x634c,0x6b6d,0x73ce,0x7bce,0x73ae,0x73ae,0x6b6d,0x6b4c,0x6b4d, +0x7c50,0x634c,0x6bae,0x6bce,0x5b0b,0x4acb,0x636d,0x5b0c,0x634c,0x5b4c,0x5b4c,0x52eb,0x634c,0x6b8e,0x5b0b,0x4a89,0x4248,0x5b0b,0x6bce,0x5b2c,0x5b0c,0x5b0b,0x52ca,0x5b4c,0x5b0b,0x52eb,0x52ca,0x4269,0x5b0b,0x52ca,0x4248,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4269,0x4aaa,0x4a8a,0x4249,0x4a8a,0x4a8a,0x3a08,0x39e7,0x52ca,0x52aa,0x4a8a,0x4a89,0x4208,0x31a6,0x31e7,0x4269,0x4248,0x29a6,0x4269,0x4249,0x31c6,0x4228,0x3a28,0x3a27,0x3a28,0x4228,0x4228,0x39e7,0x4249,0x3a07,0x31e7,0x31c6,0x4269,0x29a6,0x39e7,0x3a08,0x31a6,0x31a6,0x31a6,0x4208,0x31a6,0x2965,0x2986,0x31a6,0x31c6,0x39e7,0x31c7,0x31a6,0x2986,0x2965,0x2124,0x2986,0x2144,0x2986,0x2965,0x39c7,0x31a6,0x2986,0x2965,0x2124,0x31c7,0x2986,0x2965,0x2986,0x2165,0x31c7,0x2986,0x2124,0x29a6,0x2965,0x31a6,0x31a6,0x2124,0x2965,0x2965,0x2145,0x31a6,0x2985,0x31c6,0x31a6,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x31c7,0x39e7,0x3186,0x31c7,0x2986,0x3186,0x2965,0x2965,0x3186,0x2966,0x2965,0x2965,0x39e7,0x31a6,0x2965,0x2124,0x31a6,0x3186,0x31a6,0x31a6,0x2124,0x2145,0x2965,0x2145,0x2124,0x2965,0x2965,0x2945,0x2124,0x39c7,0x39c7,0x39e7,0x2986,0x31a6,0x3186,0x3186,0x2985,0x31c7,0x2945,0x2124,0x2985,0x31a6,0x39e8,0x2965,0x31c7,0x31a6,0x39e7,0x31a6,0x39c7,0x39e7,0x3a07,0x3a08,0x39e7,0x2965,0x3186,0x31c6,0x31a6,0x3a07,0x31c7,0x39e7,0x31c6,0x4248,0x4228,0x31a6,0x3a08,0x3a08,0x31c6,0x4248,0x3a08,0x31c7,0x39e7,0x4208,0x39c7,0x4248,0x52aa,0x4a89,0x4a69,0x4248,0x52aa,0x5aeb,0x4a89,0x4228,0x31a7,0x52cb,0x4a8a,0x4228,0x4a69,0x4a49,0x5aeb,0x52aa,0x4a89,0x52aa,0x5289,0x5aeb,0x52aa,0x52ca,0x52ea,0x632c,0x52ca,0x3a28,0x5b0b,0x52cb,0x632c,0x5aeb,0x632c,0x634c,0x632c,0x5b2c,0x5b0b,0x73ae,0x632c,0x5aeb,0x73ce,0x6b8d,0x73ce,0x6b8e,0x6b6d,0x6b6d,0x8450,0x73ae,0x636d,0x6b8d,0x73ae,0x6b6d,0x634d,0x6b6d,0x73cf,0x8c71,0x7bef,0x6b8d,0x7c0f,0x7c0f,0x6b6d,0x8430,0x7bce,0x7c0f,0x7bef,0x7bef,0x8430,0x7bef,0x7c0f,0x840f,0x7bef,0x7bef,0x7c10,0x8450,0x8c71,0x7bef,0x73ce,0x840f,0x8410,0x8430,0x8430,0x8430,0x8450,0x8c71,0x8c71,0x840f,0x8430,0x8430,0x7bef,0xa510,0xa4ee,0x8c71,0x9cd3,0x8450,0x8410,0x8450,0x8430,0x7c0f,0x8c50,0x8430,0x8450,0x840f,0x840f,0x8450,0x8430,0x8c71,0x8c71,0x8c50,0x8430,0x7c0f,0x7bef,0x8430,0x73ae,0x73ce,0x7bef,0x7bef,0x73ce,0x73ad,0x73ce,0x8c70,0x94b1,0x8c70,0x9cd2,0x94d2,0x8430,0x7bef,0x7bef, +0x2965,0x18e3,0x18e4,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x10a3,0x18c3,0x2104,0x18a3,0x0000,0x18a2,0x18a2,0x18c3,0x18e3,0x0000,0x1061,0x20e3,0x0000,0x1062,0x0820,0x0000,0x1082,0x0861,0x1082,0x0000,0x0800,0x18a2,0x18a3,0x1082,0x1082,0x0800,0x1061,0x0820,0x0841,0x0841,0x0841,0x0000,0x10a2,0x18c2,0x0820,0x0000,0x0841,0x0000,0x0000,0x1061,0x1061,0x1041,0x0841,0x1082,0x0841,0x0841,0x1061,0x0000,0x0000,0x1081,0x0841,0x0000,0x0820,0x1082,0x0841,0x1062,0x0841,0x1082,0x0000,0x0841,0x0841,0x0020,0x0882,0x0861,0x1082,0x0020,0x0840,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x0841,0x0861,0x0020,0x0821,0x1061,0x0861,0x1082,0x10a2,0x1082,0x0861,0x0861,0x1061,0x0821,0x0841,0x1082,0x1061,0x1082,0x10a2,0x0861,0x1082,0x0861,0x0861,0x1082,0x0841,0x1081,0x0841,0x0020,0x0861,0x0861,0x0861,0x1082,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x0881,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0020,0x0841,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1062,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x0861,0x10a2,0x18c3,0x1082,0x18c3,0x1082,0x0861,0x0020,0x10a2,0x10a2,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1081,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0020,0x10a2,0x1082,0x0862,0x18c3,0x1082,0x10a3,0x10a2,0x18c3,0x1903,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x10a3,0x18e3,0x2104,0x10c2,0x18e3,0x10a2,0x10a2,0x10a2,0x2124,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2145,0x2104,0x18e3,0x2124,0x2145,0x2104,0x10a3,0x10a3,0x2104,0x2945,0x2945,0x2945,0x10a3,0x2965,0x2965,0x1904,0x2124,0x31a6,0x39c7,0x2965,0x2965,0x2945,0x3186,0x2945,0x3186,0x3186,0x39c7,0x31a6,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39e7,0x4a49,0x3a08,0x31a7,0x4208,0x4208,0x3186,0x39e7,0x4a49,0x4228,0x4a6a,0x5acb,0x528a,0x4228,0x526a,0x4a69,0x4a29,0x2947,0x4a69,0x4a8a,0x39e7,0x52aa,0x632c,0x528a,0x5acb,0x6b6d,0x52aa,0x630c,0x632c,0x5aeb,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x6b6d,0x632c,0x5aeb,0x52cb,0x5aeb,0x632c,0x632c,0x6b4d,0x5aeb,0x632c,0x738e,0x6b6d,0x73ae,0x7bef,0x73af,0x73ae,0x8410,0x6b8e,0x5b0c}; diff --git a/MCUME_esp32/espvcs/main/macro.h b/MCUME_esp32/espvcs/main/macro.h new file mode 100644 index 0000000..e298409 --- /dev/null +++ b/MCUME_esp32/espvcs/main/macro.h @@ -0,0 +1,99 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: macro.h,v 1.7 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + +/* + * + * Originally from x64 by + * Vesa-Matti Puro (vmp@lut.fi) + * Jarkko Sonninen (sonninen@lut.fi) + * + * NOTE: Can add zero page optimizations + */ + +#ifndef X2600_MACRO_H +#define X2600_MACRO_H + + +#include "types.h" +#include "cpu.h" + +#define LOAD(a) decRead(a) +#define LOADEXEC(a) undecRead(a) +//#define DLOAD(a) dbgRead(a) +#define LOAD_ZERO(a) decRead((ADDRESS)a) +#define LOAD_ADDR(a) ((LOADEXEC(a+1)<<8)+LOADEXEC(a)) //WAS LOAD +#define LOAD_ZERO_ADDR(a) LOAD_ADDR(a) + +#define STORE(a,b) decWrite((a),(b)) +#define STORE_ZERO(a,b) decWrite((a),(b)) + +#define PUSH(b) decWrite(SP+0x100,(b));SP-- +#define PULL() decRead((++SP)+0x100) + +#define UPPER(ad) (((ad)>>8)&0xff) +#define LOWER(ad) ((ad)&0xff) +#define LOHI(lo,hi) ((lo)|((hi)<<8)) + +#define REL_ADDR(pc,src) (pc+((SIGNED_CHAR)src)) + +#define SET_SIGN(a) (SF=(a)&S_SIGN) +#define SET_ZERO(a) (ZF=!(a)) +#define SET_CARRY(a) (CF=(a)) + +#define SET_INTERRUPT(a) (IF=(a)) +#define SET_DECIMAL(a) (DF=(a)) +#define SET_OVERFLOW(a) (OF=(a)) +#define SET_BREAK(a) (BF=(a)) + +#define SET_SR(a) (SF=(a) & S_SIGN,\ + ZF=(a) & S_ZERO,\ + CF=(a) & S_CARRY,\ + IF=(a) & S_INTERRUPT,\ + DF=(a) & S_DECIMAL,\ + OF=(a) & S_OVERFLOW,\ + BF=(a) & S_BREAK) + +#define GET_SR() ((SF ? S_SIGN : 0) |\ + (ZF ? S_ZERO : 0) |\ + (CF ? S_CARRY : 0) |\ + (IF ? S_INTERRUPT : 0) |\ + (DF ? S_DECIMAL : 0) |\ + (OF ? S_OVERFLOW : 0) |\ + (BF ? S_BREAK : 0) | S_NOTUSED) + +#define IF_SIGN() SF +#define IF_ZERO() ZF +#define IF_CARRY() CF +#define IF_INTERRUPT() IF +#define IF_DECIMAL() DF +#define IF_OVERFLOW() OF +#define IF_BREAK() BF + + +#define sprint_status() sprint_binary(GET_SR()) + + +#endif /* X2600_MACRO_H */ + + + + + + + + + + + diff --git a/MCUME_esp32/espvcs/main/main.c b/MCUME_esp32/espvcs/main/main.c new file mode 100644 index 0000000..5dc5bee --- /dev/null +++ b/MCUME_esp32/espvcs/main/main.c @@ -0,0 +1,31 @@ + +#include "freertos/FreeRTOS.h" +#include "esp_wifi.h" +#include "esp_system.h" +#include "esp_event.h" +#include "esp_event_loop.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "esp_partition.h" + +#include "go.h" + + +int app_main(void) +{ + printf("Test start!\n"); + + setup(); + while(1) { + loop(); + } + + for (int i = 10; i >= 0; i--) { + printf("Restarting in %d seconds...\n", i); + vTaskDelay(1000 / portTICK_PERIOD_MS); + } + printf("Restarting now.\n"); + fflush(stdout); + esp_restart(); +} + diff --git a/MCUME_esp32/espvcs/main/mnemonic.h b/MCUME_esp32/espvcs/main/mnemonic.h new file mode 100644 index 0000000..59b417d --- /dev/null +++ b/MCUME_esp32/espvcs/main/mnemonic.h @@ -0,0 +1,149 @@ +/* + * $Id: mnemonic.h,v 1.1 1995/11/26 21:52:43 alex Exp alex $ + * + * This file is part of Commodore 64 emulator. + * See README for copyright notice + * + * This file contains #defines for MOS6010 instruction mnemonics. + * + * Written by + * Vesa-Matti Puro (vmp@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + * $Log: mnemonic.h,v $ + * Revision 1.1 1995/11/26 21:52:43 alex + * Initial revision + * + * Revision 1.6 1994/12/12 16:59:44 jopi + * *** empty log message *** + * + * Revision 1.5 1994/06/16 17:19:26 jopi + * Code reorganized and cleaned up + * + * Revision 1.4 1993/11/10 01:55:34 jopi + * reu, asm and disk directory fixed + * REL_ADDR macro and 1541 made more portable + * + * Revision 1.3 93/06/21 13:38:45 jopi + * X64 version 0.2 PL 0 + * + * Revision 1.2 1993/06/13 08:21:50 sonninen + * *** empty log message *** + * + * + */ + +#ifndef X64_MNEMONIC_H +#define X64_MNEMONIC_H + + +/* INSTRUCTION MNEMONICS. */ + +#define ADC "ADC" +#define AND "AND" +#define ASL "ASL" +#define BCC "BCC" +#define BCS "BCS" +#define BEQ "BEQ" +#define BIT "BIT" +#define BMI "BMI" +#define BNE "BNE" +#define BPL "BPL" +#define BRK "BRK" +#define BVC "BVC" +#define BVS "BVS" +#define CLC "CLC" +#define CLD "CLD" +#define CLI "CLI" +#define CLV "CLV" +#define CMP "CMP" +#define CPX "CPX" +#define CPY "CPY" +#define DEC "DEC" +#define DEX "DEX" +#define DEY "DEY" +#define EOR "EOR" +#define INC "INC" +#define INX "INX" +#define INY "INY" +#define JMP "JMP" +#define JSR "JSR" +#define LDA "LDA" +#define LDX "LDX" +#define LDY "LDY" +#define LSR "LSR" +#define NOOP "NOOP" +#define NOP "NOP" +#define ORA "ORA" +#define PHA "PHA" +#define PHP "PHP" +#define PLA "PLA" +#define PLP "PLP" +#define ROL "ROL" +#define ROR "ROR" +#define RTI "RTI" +#define RTS "RTS" +#define SBC "SBC" +#define SEC "SEC" +#define SED "SED" +#define SEI "SEI" +#define STA "STA" +#define STX "STX" +#define STY "STY" +#define TAX "TAX" +#define TAY "TAY" +#define TSX "TSX" +#define TXA "TXA" +#define TXS "TXS" +#define TYA "TYA" + +#ifndef NO_UNDOC_CMDS +#define ANC "ANC" +#define ANE "ANE" +#define ARR "ARR" +#define ASR "ASR" +#define DCP "DCP" +#define ISB "ISB" +#define JAM "JAM" +#define LAS "LAS" +#define LAX "LAX" +#define LXA "LXA" + /* NOOP undefined NOP */ +#define RLA "RLA" +#define RRA "RRA" +#define SAX "SAX" +#define USBC "USBC" /* undefined SBC */ +#define SBX "SBX" +#define SHA "SHA" +#define SHS "SHS" +#define SHX "SHX" +#define SHY "SHY" +#define SLO "SLO" +#define SRE "SRE" + +#else +#define ANC NOOP +#define ANE NOOP +#define ARR NOOP +#define ASR NOOP +#define DCP NOOP +#define ISB NOOP +#define JAM NOOP +#define LAS NOOP +#define LAX NOOP +#define LXA NOOP + /* NOOP undefined NOP */ +#define RLA NOOP +#define RRA NOOP +#define SAX NOOP +#define USBC NOOP +#define SBX NOOP +#define SHA NOOP +#define SHS NOOP +#define SHX NOOP +#define SHY NOOP +#define SLO NOOP +#define SRE NOOP +#endif + +#endif /* X64_MNEMONIC_H */ diff --git a/MCUME_esp32/espvcs/main/options.h b/MCUME_esp32/espvcs/main/options.h new file mode 100644 index 0000000..2614f66 --- /dev/null +++ b/MCUME_esp32/espvcs/main/options.h @@ -0,0 +1,26 @@ +//#ifndef OPTIONS_H +#define OPTIONS_H + +enum {NTSC=0, PAL=1, SECAM=2}; + +/* Options common to all ports of x2600 */ +extern struct BaseOptions { + int tvtype; + int lcon; + int rcon; + int bank; + int magstep; + char filename[80]; + int sound; + int swap; + int realjoy; + int limit; + int mousey; + int mitshm; + int dbg_level; +} base_opts; + +int +parse_options(int argc, char **argv); + +//#endif diff --git a/MCUME_esp32/espvcs/main/raster.h b/MCUME_esp32/espvcs/main/raster.h new file mode 100644 index 0000000..0436523 --- /dev/null +++ b/MCUME_esp32/espvcs/main/raster.h @@ -0,0 +1,44 @@ +/***************************************************************************** + + This file is part of Virtual 2600, the Atari 2600 Emulator + ========================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: raster.h,v 1.5 1997/04/06 02:15:13 ahornby Exp $ +******************************************************************************/ + +/* + The raster prototypes. + */ + +#ifndef RASTER_H +#define RASTER_H +/* Color lookup tables. Used to speed up rendering */ +/* The current colour lookup table */ +extern int *colour_lookup; + +/* Colour table */ +#define P0M0_COLOUR 0 +#define P1M1_COLOUR 1 +#define PFBL_COLOUR 2 +#define BK_COLOUR 3 +extern unsigned int colour_table[4]; + +/* normal/alternate, not scores/scores*/ +extern int norm_val, scores_val; +extern int *colour_ptrs[2][3]; + +void tv_raster(int line); + +extern void +init_raster(void); +#endif + + + diff --git a/MCUME_esp32/espvcs/main/resource.h b/MCUME_esp32/espvcs/main/resource.h new file mode 100644 index 0000000..320059c --- /dev/null +++ b/MCUME_esp32/espvcs/main/resource.h @@ -0,0 +1,60 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Atari2600Emulator.rc +// +#define IDS_APP_TITLE 1 +#define IDS_HELLO 2 +#define IDC_ATARI2600EMULATOR 3 +#define IDI_ATARI2600EMULATOR 101 +#define IDM_MENU 102 +#define IDS_HELP 104 +#define IDD_OPTIONS 104 +#define IDD_Error 105 +#define IDB_CONSOLE 109 +#define IDB_LOGO 110 +#define IDB_CONTROLLER 111 +#define IDD_CONSOLE 111 +#define IDD_DIALOG1 113 +#define IDD_DIALOG2 114 +#define IDD_VCSINFO 115 +#define IDS_COMMAND1 301 +#define IDC_BUTTON1 1001 +#define IDC_CHECK_SOUND 1003 +#define IDC_RADIO_COLOR 1005 +#define IDC_RADIO_P1AM 1006 +#define IDC_RADIO_BW 1007 +#define IDC_RADIO_P1PRO 1008 +#define IDC_RADIO_P2PRO 1009 +#define IDC_EDIT_SKIP_FRAMES 1010 +#define IDC_RADIO_P2AM 1010 +#define IDC_EDIT_SLEEP 1011 +#define IDC_CHECK_LAND 1012 +#define IDC_SNDSPEED_SLIDER 1013 +#define IDC_SND_BUFFER 1014 +#define IDC_VOL_SLIDER 1016 +#define IDC_SND_RATE 1025 +#define IDM_MAIN_COMMAND1 40001 +#define IDM_SETTINGS_CONSOLE 40002 +#define IDM_HELP_ABOUTVCS 40003 +#define ID_FILE 40004 +#define ID_SETTINGS 40005 +#define IDS_CAP_FILE 40006 +#define IDM_FILE_OPEN 40007 +#define IDM_SETTINGS_OPTIONS 40008 +#define IDM_FILE_EXIT 40009 +#define IDS_CAP_SETTINGS 40011 + +#define STICK 0x01 +#define PADDLE 0x02 +#define KEYPAD 0x03 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 117 +#define _APS_NEXT_COMMAND_VALUE 40014 +#define _APS_NEXT_CONTROL_VALUE 1026 +#define _APS_NEXT_SYMED_VALUE 103 +#endif +#endif diff --git a/MCUME_esp32/espvcs/main/sound.h b/MCUME_esp32/espvcs/main/sound.h new file mode 100644 index 0000000..a07fc44 --- /dev/null +++ b/MCUME_esp32/espvcs/main/sound.h @@ -0,0 +1,26 @@ +#ifndef X2600_SOUND_H +#define X2600_SOUND_H + +/* $Id: sound.h,v 1.4 1996/09/04 22:37:48 ahornby Exp $ */ + +extern void +sound_init(void); + +extern void +sound_close(void); + +extern void +sound_freq(int channel, BYTE freq); + +extern void +sound_volume(int channel, BYTE vol); + +//extern void +// Update_tia_sound(0x15 + channel, value); + +//sound_waveform(int channel, BYTE value); + +extern void +sound_update(void); + +#endif diff --git a/MCUME_esp32/espvcs/main/tiasound.h b/MCUME_esp32/espvcs/main/tiasound.h new file mode 100644 index 0000000..c96e829 --- /dev/null +++ b/MCUME_esp32/espvcs/main/tiasound.h @@ -0,0 +1,41 @@ +/*****************************************************************************/ +/* */ +/* Module: TIA Chip Sound Simulator Includes, V1.0 */ +/* Purpose: Define global function prototypes and structures for the TIA */ +/* Chip Sound Simulator. */ +/* Author: Ron Fries */ +/* Date: September 10, 1996 */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* TiaSound is Copyright(c) 1996 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ + +#ifndef _TIASOUND_H +#define _TIASOUND_H + +void Tia_sound_init (unsigned int sample_freq, unsigned int playback_freq); +extern void Update_tia_sound (unsigned int addr, unsigned char val); +extern void Tia_process_2 (register unsigned short *buffer, + register unsigned int n); +extern void Tia_process (register unsigned char *buffer, + register unsigned int n); +#endif diff --git a/MCUME_esp32/espvcs/main/types.h b/MCUME_esp32/espvcs/main/types.h new file mode 100644 index 0000000..60d2ac2 --- /dev/null +++ b/MCUME_esp32/espvcs/main/types.h @@ -0,0 +1,51 @@ +/* + * $Id: types.h,v 1.1 1995/11/26 21:52:43 alex Exp alex $ + * + * This file is part of Commodore 64 emulator. + * See README for copyright notice + * + * This file declares types used all over. + * + * + * Written by + * Jarkko Sonninen (sonninen@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + * + * $Log: types.h,v $ + * Revision 1.1 1995/11/26 21:52:43 alex + * Initial revision + * + * Revision 1.4 1995/04/01 07:54:09 jopi + * X64 0.3 PL 0 + * Typedef for signed char. + * Room for new options for Printer charsets, Basic patch, REU size. + * + * Revision 1.3 1994/12/12 16:59:44 jopi + * 16-bit portability + * + * Revision 1.2 1994/08/10 18:34:13 jopi + * More changeability + * + * Revision 1.1 1994/06/16 17:19:26 jopi + * Initial revision + * + */ + + +#ifndef X64_TYPES_H +#define X64_TYPES_H + + +typedef signed char SIGNED_CHAR; +/*typedef char SIGNED_CHAR;*/ + +typedef unsigned char byte; +typedef unsigned char BYTE; +typedef unsigned short ADDRESS; +typedef unsigned long CLOCK; + +typedef int ADDR_T; +/*typedef long ADDR_T;*/ + +#endif /* X64_TYPES_H */ diff --git a/MCUME_esp32/espvcs/main/vmachine.h b/MCUME_esp32/espvcs/main/vmachine.h new file mode 100644 index 0000000..33a7be1 --- /dev/null +++ b/MCUME_esp32/espvcs/main/vmachine.h @@ -0,0 +1,148 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: vmachine.h,v 2.13 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + + +/* + External definitions of the 2600 virtual machine. +*/ + + +#ifndef VMACHINE_H +#define VMACHINE_H +//#define BYTE char + +extern int rom_size; +//JMH +extern BYTE *theCart; +//extern BYTE theCart[4096]; +extern BYTE *theRom; +extern BYTE *cartScratch; +extern BYTE *cartRam; +extern BYTE theRam[]; +extern BYTE riotRead[]; +extern BYTE riotWrite[]; +extern BYTE tiaWrite[]; +extern BYTE tiaRead[]; +extern BYTE keypad[2][4]; + +extern int reset_flag; + +extern int ebeamx, ebeamy, sbeamx; + +#define VSYNCSTATE 1 +#define VBLANKSTATE 2 +#define HSYNCSTATE 4 +#define DRAWSTATE 8 +#define OVERSTATE 16 + +extern int vbeam_state, hbeam_state; + +extern int tv_width, tv_height, tv_vsync, tv_vblank, + tv_overscan, tv_frame, tv_hertz, tv_hsync; + +extern int timer_res, timer_count, timer_clks; + +typedef struct { + BYTE pf0,pf1,pf2; + BYTE ref; +} PlayField; + +extern PlayField pf[2]; + +typedef struct { + int pos; + int val; +} Paddle; + +extern Paddle paddle[4]; +typedef struct { + int x; + BYTE grp; + BYTE hmm; + BYTE vdel; + BYTE vdel_flag; + BYTE nusize; + BYTE reflect; + BYTE mask; +} Player; + +extern Player pl[2]; + +struct RasterChange { + int x; /* Position at which change happened */ + int type; /* Type of change */ + int val; /* Value of change */ +} ; + +extern struct RasterChange pl_change[2][80], pf_change[1][80], unified[80]; + +extern int pl_change_count[2], pf_change_count[1], unified_count; + +/* The missile and ball positions */ +typedef struct { + int x; + BYTE hmm; + BYTE locked; + BYTE enabled; + BYTE width; + BYTE vdel; + BYTE vdel_flag; + BYTE mask; +} Missile; + +extern Missile ml[3]; + +/**************************************************************************** + functions. +*****************************************************************************/ + +extern __inline void +do_plraster_change(int i, int type, int val); + +extern __inline void +do_unified_change(int type, int val); + +extern __inline void +use_unified_change( struct RasterChange *rc); + +extern __inline void +use_plraster_change( Player *pl, struct RasterChange *rc); + +extern __inline void +do_pfraster_change(int i, int type, int val); + +extern __inline void +use_pfraster_change( PlayField *pf, struct RasterChange *rc); + +void init_machine(void); +void init_hardware(void); +void init_banking(void); + +extern __inline void set_timer(int res, int count, int clkadj); +extern __inline BYTE do_timer(int clkadj); +extern __inline void do_vblank(BYTE b); +extern __inline void do_hsync(void); + +int do_paddle(int padnum); +BYTE do_keypad(int pad, int col); +extern __inline void do_screen(int clks); + +#endif + + + + + + diff --git a/MCUME_esp32/espvcs/sdkconfig b/MCUME_esp32/espvcs/sdkconfig new file mode 100644 index 0000000..c570cb7 --- /dev/null +++ b/MCUME_esp32/espvcs/sdkconfig @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/espvcs/sdkconfig.old b/MCUME_esp32/espvcs/sdkconfig.old new file mode 100644 index 0000000..a23a446 --- /dev/null +++ b/MCUME_esp32/espvcs/sdkconfig.old @@ -0,0 +1,682 @@ +# +# Automatically generated file; DO NOT EDIT. +# Espressif IoT Development Framework Configuration +# +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_PYTHON="python" +CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y + +# +# Bootloader config +# +CONFIG_LOG_BOOTLOADER_LEVEL_NONE= +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= +CONFIG_LOG_BOOTLOADER_LEVEL_WARN= +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= +CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= +CONFIG_LOG_BOOTLOADER_LEVEL=3 +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +CONFIG_BOOTLOADER_FACTORY_RESET= +CONFIG_BOOTLOADER_APP_TEST= +CONFIG_BOOTLOADER_WDT_ENABLE=y +CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 + +# +# Security features +# +CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= +CONFIG_SECURE_BOOT_ENABLED= +CONFIG_FLASH_ENCRYPTION_ENABLED= + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/cu.SLAB_USBtoUART" +CONFIG_ESPTOOLPY_BAUD_115200B=y +CONFIG_ESPTOOLPY_BAUD_230400B= +CONFIG_ESPTOOLPY_BAUD_921600B= +CONFIG_ESPTOOLPY_BAUD_2MB= +CONFIG_ESPTOOLPY_BAUD_OTHER= +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=115200 +CONFIG_ESPTOOLPY_COMPRESSED=y +CONFIG_FLASHMODE_QIO= +CONFIG_FLASHMODE_QOUT= +CONFIG_FLASHMODE_DIO=y +CONFIG_FLASHMODE_DOUT= +CONFIG_ESPTOOLPY_FLASHMODE="dio" +CONFIG_ESPTOOLPY_FLASHFREQ_80M= +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +CONFIG_ESPTOOLPY_FLASHFREQ_26M= +CONFIG_ESPTOOLPY_FLASHFREQ_20M= +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +CONFIG_ESPTOOLPY_FLASHSIZE_1MB= +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB= +CONFIG_ESPTOOLPY_FLASHSIZE_8MB= +CONFIG_ESPTOOLPY_FLASHSIZE_16MB= +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +CONFIG_ESPTOOLPY_BEFORE_NORESET= +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +CONFIG_ESPTOOLPY_AFTER_NORESET= +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_MONITOR_BAUD_9600B= +CONFIG_MONITOR_BAUD_57600B= +CONFIG_MONITOR_BAUD_115200B=y +CONFIG_MONITOR_BAUD_230400B= +CONFIG_MONITOR_BAUD_921600B= +CONFIG_MONITOR_BAUD_2MB= +CONFIG_MONITOR_BAUD_OTHER= +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +CONFIG_PARTITION_TABLE_TWO_OTA= +CONFIG_PARTITION_TABLE_CUSTOM= +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y + +# +# Compiler options +# +CONFIG_OPTIMIZATION_LEVEL_DEBUG= +CONFIG_OPTIMIZATION_LEVEL_RELEASE=y +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED= +CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= +CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= +CONFIG_CXX_EXCEPTIONS= +CONFIG_STACK_CHECK_NONE=y +CONFIG_STACK_CHECK_NORM= +CONFIG_STACK_CHECK_STRONG= +CONFIG_STACK_CHECK_ALL= +CONFIG_STACK_CHECK= +CONFIG_WARN_WRITE_STRINGS= +CONFIG_DISABLE_GCC8_WARNINGS= + +# +# Component config +# + +# +# Application Level Tracing +# +CONFIG_ESP32_APPTRACE_DEST_TRAX= +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_ENABLE= +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_AWS_IOT_SDK= + +# +# Bluetooth +# +CONFIG_BT_ENABLED= +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BT_RESERVE_DRAM=0 + +# +# Driver configurations +# + +# +# ADC configuration +# +CONFIG_ADC_FORCE_XPD_FSM= +CONFIG_ADC2_DISABLE_DAC=y + +# +# SPI configuration +# +CONFIG_SPI_MASTER_IN_IRAM= +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +CONFIG_SPI_SLAVE_IN_IRAM= +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y + +# +# ESP32-specific +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_80= +CONFIG_ESP32_DEFAULT_CPU_FREQ_160= +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_SPIRAM_SUPPORT= +CONFIG_MEMMAP_TRACEMEM= +CONFIG_MEMMAP_TRACEMEM_TWOBANKS= +CONFIG_ESP32_TRAX= +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 + +# +# Core dump +# +CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= +CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_ESP32_ENABLE_COREDUMP= +CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_NEWLIB_NANO_FORMAT= +CONFIG_CONSOLE_UART_DEFAULT=y +CONFIG_CONSOLE_UART_CUSTOM= +CONFIG_CONSOLE_UART_NONE= +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ULP_COPROC_ENABLED= +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_ESP32_PANIC_PRINT_HALT= +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +CONFIG_ESP32_PANIC_SILENT_REBOOT= +CONFIG_ESP32_PANIC_GDBSTUB= +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_PANIC= +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_BROWNOUT_DET_LVL_SEL_1= +CONFIG_BROWNOUT_DET_LVL_SEL_2= +CONFIG_BROWNOUT_DET_LVL_SEL_3= +CONFIG_BROWNOUT_DET_LVL_SEL_4= +CONFIG_BROWNOUT_DET_LVL_SEL_5= +CONFIG_BROWNOUT_DET_LVL_SEL_6= +CONFIG_BROWNOUT_DET_LVL_SEL_7= +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC= +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= +CONFIG_ESP32_TIME_SYSCALL_USE_NONE= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= +CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +CONFIG_ESP32_XTAL_FREQ_26= +CONFIG_ESP32_XTAL_FREQ_AUTO= +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_DISABLE_BASIC_ROM_CONSOLE= +CONFIG_NO_BLOBS= +CONFIG_ESP_TIMER_PROFILING= +CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_CSI_ENABLED= +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE= + +# +# PHY +# +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 + +# +# Power Management +# +CONFIG_PM_ENABLE= + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y + +# +# Event Loop Library +# +CONFIG_EVENT_LOOP_PROFILING= + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS= + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 + +# +# Ethernet +# +CONFIG_DMA_RX_BUF_NUM=10 +CONFIG_DMA_TX_BUF_NUM=10 +CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y +CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 +CONFIG_EMAC_TASK_PRIORITY=20 +CONFIG_EMAC_TASK_STACK_SIZE=3072 + +# +# FAT Filesystem support +# +CONFIG_FATFS_CODEPAGE_DYNAMIC= +CONFIG_FATFS_CODEPAGE_437=y +CONFIG_FATFS_CODEPAGE_720= +CONFIG_FATFS_CODEPAGE_737= +CONFIG_FATFS_CODEPAGE_771= +CONFIG_FATFS_CODEPAGE_775= +CONFIG_FATFS_CODEPAGE_850= +CONFIG_FATFS_CODEPAGE_852= +CONFIG_FATFS_CODEPAGE_855= +CONFIG_FATFS_CODEPAGE_857= +CONFIG_FATFS_CODEPAGE_860= +CONFIG_FATFS_CODEPAGE_861= +CONFIG_FATFS_CODEPAGE_862= +CONFIG_FATFS_CODEPAGE_863= +CONFIG_FATFS_CODEPAGE_864= +CONFIG_FATFS_CODEPAGE_865= +CONFIG_FATFS_CODEPAGE_866= +CONFIG_FATFS_CODEPAGE_869= +CONFIG_FATFS_CODEPAGE_932= +CONFIG_FATFS_CODEPAGE_936= +CONFIG_FATFS_CODEPAGE_949= +CONFIG_FATFS_CODEPAGE_950= +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE= +CONFIG_FATFS_LFN_HEAP= +CONFIG_FATFS_LFN_STACK=y +CONFIG_FATFS_MAX_LFN=255 +CONFIG_FATFS_API_ENCODING_ANSI_OEM=y +CONFIG_FATFS_API_ENCODING_UTF_16= +CONFIG_FATFS_API_ENCODING_UTF_8= +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y + +# +# Modbus configuration +# +CONFIG_MB_UART_RXD=22 +CONFIG_MB_UART_TXD=23 +CONFIG_MB_UART_RTS=18 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +CONFIG_FREERTOS_CORETIMER_1= +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= +CONFIG_FREERTOS_ASSERT_DISABLE= +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_LEGACY_HOOKS= +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +CONFIG_SUPPORT_STATIC_ALLOCATION= +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_USE_TRACE_FACILITY= +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= +CONFIG_FREERTOS_DEBUG_INTERNALS= + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +CONFIG_HEAP_POISONING_LIGHT= +CONFIG_HEAP_POISONING_COMPREHENSIVE= +CONFIG_HEAP_TRACING= + +# +# libsodium +# +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y + +# +# Log output +# +CONFIG_LOG_DEFAULT_LEVEL_NONE= +CONFIG_LOG_DEFAULT_LEVEL_ERROR= +CONFIG_LOG_DEFAULT_LEVEL_WARN= +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +CONFIG_LOG_DEFAULT_LEVEL_DEBUG= +CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_COLORS=y + +# +# LWIP +# +CONFIG_L2_TO_L3_COPY= +CONFIG_LWIP_IRAM_OPTIMIZATION= +CONFIG_LWIP_MAX_SOCKETS=10 +CONFIG_USE_ONLY_LWIP_SELECT= +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF= +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_IP_FRAG= +CONFIG_LWIP_IP_REASSEMBLY= +CONFIG_LWIP_STATS= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +CONFIG_LWIP_DHCP_RESTORE_LAST_IP= + +# +# DHCP server +# +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_AUTOIP= +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1436 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= +CONFIG_TCP_OVERSIZE_MSS=y +CONFIG_TCP_OVERSIZE_QUARTER_MSS= +CONFIG_TCP_OVERSIZE_DISABLE= + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +CONFIG_TCPIP_TASK_AFFINITY_CPU0= +CONFIG_TCPIP_TASK_AFFINITY_CPU1= +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_PPP_SUPPORT= + +# +# ICMP +# +CONFIG_LWIP_MULTICAST_PING= +CONFIG_LWIP_BROADCAST_PING= + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= +CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= +CONFIG_MBEDTLS_DEBUG= +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI= +CONFIG_MBEDTLS_HARDWARE_SHA= +CONFIG_MBEDTLS_HAVE_TIME=y +CONFIG_MBEDTLS_HAVE_TIME_DATE= +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +CONFIG_MBEDTLS_TLS_SERVER_ONLY= +CONFIG_MBEDTLS_TLS_CLIENT_ONLY= +CONFIG_MBEDTLS_TLS_DISABLED= +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES= +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_SSL3= +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +CONFIG_MBEDTLS_SSL_PROTO_DTLS= +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +CONFIG_MBEDTLS_CAMELLIA_C= +CONFIG_MBEDTLS_DES_C= +CONFIG_MBEDTLS_RC4_DISABLED=y +CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= +CONFIG_MBEDTLS_RC4_ENABLED= +CONFIG_MBEDTLS_BLOWFISH_C= +CONFIG_MBEDTLS_XTEA_C= +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +CONFIG_MBEDTLS_RIPEMD160_C= + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y + +# +# mDNS +# +CONFIG_MDNS_MAX_SERVICES=10 + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +CONFIG_MQTT_USE_CUSTOM_CONFIG= +CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= +CONFIG_MQTT_CUSTOM_OUTBOX= + +# +# NVS +# + +# +# OpenSSL +# +CONFIG_OPENSSL_DEBUG= +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +CONFIG_OPENSSL_ASSERT_EXIT= + +# +# PThreads +# +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1= +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" + +# +# SPI Flash driver +# +CONFIG_SPI_FLASH_VERIFY_WRITE= +CONFIG_SPI_FLASH_ENABLE_COUNTERS= +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +CONFIG_SPIFFS_CACHE_STATS= +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +CONFIG_SPIFFS_GC_STATS= +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +CONFIG_SPIFFS_DBG= +CONFIG_SPIFFS_API_DBG= +CONFIG_SPIFFS_GC_DBG= +CONFIG_SPIFFS_CACHE_DBG= +CONFIG_SPIFFS_CHECK_DBG= +CONFIG_SPIFFS_TEST_VISUALISATION= + +# +# TCP/IP Adapter +# +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +CONFIG_UNITY_ENABLE_COLOR= +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +CONFIG_UNITY_ENABLE_FIXTURE= + +# +# Virtual file system +# +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y + +# +# Wear Levelling +# +CONFIG_WL_SECTOR_SIZE_512= +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 diff --git a/MCUME_esp32/pcb/.DS_Store b/MCUME_esp32/pcb/.DS_Store new file mode 100644 index 0000000..471dffb Binary files /dev/null and b/MCUME_esp32/pcb/.DS_Store differ diff --git a/MCUME_esp32/pcb/mcume.kicad_pcb b/MCUME_esp32/pcb/mcume.kicad_pcb new file mode 100644 index 0000000..49c19a9 --- /dev/null +++ b/MCUME_esp32/pcb/mcume.kicad_pcb @@ -0,0 +1,847 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 5) + (tracks 727) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 1) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 1) + (via_dia 1.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (net_class neti "" + (clearance 0.2) + (trace_width 0.8) + (via_dia 3) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (gr_line (start 57.15 91.44) (end 43.18 91.44) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 57.15 91.44) (end 142.24 91.44) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 142.24 17.78) (end 142.24 142.24) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 43.18 17.78) (end 142.24 17.78) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 43.18 144.78) (end 43.18 17.78) (layer Edge.Cuts) (width 0.15)) + + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68311F)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C683492)) + (via (at 50.8 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6836AE)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BA)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BC)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BF)) + (via (at 60.96 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C1)) + (via (at 60.96 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C3)) + (via (at 60.96 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C5)) + (via (at 60.96 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C7)) + (via (at 60.96 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C9)) + (via (at 60.96 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CB)) + (via (at 60.96 43.18) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CD)) + (via (at 60.96 45.72) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CF)) + (via (at 60.96 48.26) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D1)) + (via (at 60.96 50.8) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D3)) + (via (at 60.96 53.34) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D5)) + (via (at 60.96 55.88) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D7)) + (via (at 60.96 58.42) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D9)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DB)) + (via (at 86.36 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DD)) + (via (at 86.36 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DF)) + (via (at 86.36 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E1)) + (via (at 86.36 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E3)) + (via (at 86.36 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E5)) + (via (at 86.36 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837EF)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F3)) + (via (at 60.96 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F5)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F7)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F9)) + (via (at 60.96 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FB)) + (via (at 60.96 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FD)) + (via (at 60.96 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FF)) + (via (at 60.96 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683801)) + (via (at 60.96 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683803)) + (via (at 60.96 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683805)) + (via (at 60.96 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683807)) + (via (at 60.96 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683809)) + (via (at 60.96 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380B)) + (via (at 60.96 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380D)) + (via (at 60.96 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380F)) + (via (at 60.96 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683811)) + (via (at 60.96 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683813)) + (via (at 53.34 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683815)) + (via (at 53.34 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683817)) + (via (at 53.34 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683819)) + (via (at 53.34 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381B)) + (via (at 53.34 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381D)) + (via (at 53.34 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381F)) + (via (at 53.34 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683821)) + (via (at 53.34 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683823)) + (via (at 53.34 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683825)) + (via (at 53.34 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683827)) + (via (at 53.34 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683829)) + (via (at 53.34 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382B)) + (via (at 53.34 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382D)) + (via (at 53.34 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C68382F)) + (via (at 50.8 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683831)) + (via (at 50.8 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683833)) + (via (at 50.8 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683835)) + (via (at 50.8 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683837)) + (via (at 50.8 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683839)) + (via (at 50.8 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383B)) + (via (at 50.8 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383D)) + (via (at 50.8 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383F)) + (via (at 50.8 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683841)) + (via (at 50.8 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683843)) + (via (at 50.8 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683845)) + (via (at 50.8 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683847)) + (via (at 50.8 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683849)) + (via (at 50.8 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384B)) + (via (at 86.36 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384D)) + (via (at 86.36 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384F)) + (via (at 86.36 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683851)) + (via (at 86.36 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683853)) + (via (at 86.36 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683855)) + (via (at 86.36 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683857)) + (via (at 86.36 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683859)) + (via (at 86.36 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385B)) + (via (at 86.36 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385D)) + (via (at 86.36 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385F)) + (via (at 86.36 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683861)) + (via (at 86.36 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683863)) + (via (at 86.36 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683865)) + (via (at 86.36 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683867)) + (via (at 86.36 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683869)) + (via (at 127 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386B)) + (via (at 127 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386D)) + (via (at 127 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386F)) + (via (at 127 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683871)) + (via (at 132.08 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683873)) + (via (at 132.08 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683875)) + (via (at 132.08 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683877)) + (via (at 132.08 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683879)) + (via (at 137.16 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387B)) + (via (at 137.16 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387D)) + (via (at 137.16 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387F)) + (via (at 137.16 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683881)) + (via (at 137.16 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683885)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683887)) + (via (at 48.26 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683889)) + (via (at 48.26 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388B)) + (via (at 48.26 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388D)) + (via (at 48.26 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 53.34 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 25.4) (end 58.42 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 25.4) (end 50.8 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 48.26 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 27.94) (end 139.7 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6842EE)) + (via (at 48.26 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.7 73.66) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C684667)) + (via (at 58.42 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 53.34) (end 76.2 58.42) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.7 48.26) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 50.8) (end 76.2 52.07) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 52.07) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 49.53) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7556)) + (via (at 48.26 73.66) (size 2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7558)) + (via (at 48.26 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755A)) + (via (at 48.26 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755C)) + (via (at 48.26 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755E)) + (via (at 48.26 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7560)) + (via (at 48.26 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7562)) + (via (at 137.16 73.66) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7564)) + (via (at 137.16 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7566)) + (via (at 137.16 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7568)) + (via (at 137.16 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756A)) + (via (at 137.16 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756C)) + (via (at 137.16 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756E)) + (via (at 132.08 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7570)) + (via (at 132.08 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7572)) + (via (at 132.08 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7574)) + (via (at 132.08 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7576)) + (via (at 127 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7578)) + (via (at 127 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757A)) + (via (at 127 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757C)) + (via (at 127 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757E)) + (via (at 86.36 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7580)) + (via (at 86.36 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7582)) + (via (at 86.36 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7584)) + (via (at 86.36 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7586)) + (via (at 86.36 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7588)) + (via (at 86.36 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758A)) + (via (at 86.36 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758C)) + (via (at 86.36 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758E)) + (via (at 86.36 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7590)) + (via (at 86.36 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7592)) + (via (at 86.36 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7594)) + (via (at 86.36 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7596)) + (via (at 86.36 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7598)) + (via (at 86.36 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759A)) + (via (at 86.36 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759C)) + (via (at 60.96 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759E)) + (via (at 60.96 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A0)) + (via (at 60.96 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A2)) + (via (at 60.96 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A4)) + (via (at 60.96 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A6)) + (via (at 60.96 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A8)) + (via (at 60.96 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AA)) + (via (at 60.96 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AC)) + (via (at 60.96 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AE)) + (via (at 60.96 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B0)) + (via (at 60.96 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B2)) + (via (at 60.96 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B4)) + (via (at 60.96 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B6)) + (via (at 60.96 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B8)) + (via (at 60.96 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BA)) + (via (at 53.34 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BC)) + (via (at 53.34 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BE)) + (via (at 53.34 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C0)) + (via (at 53.34 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C2)) + (via (at 53.34 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C4)) + (via (at 53.34 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C6)) + (via (at 53.34 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C8)) + (via (at 53.34 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CA)) + (via (at 53.34 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CC)) + (via (at 53.34 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CE)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D0)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D2)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D4)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D6)) + (via (at 50.8 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D8)) + (via (at 50.8 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DA)) + (via (at 53.34 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DC)) + (via (at 50.8 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DE)) + (via (at 50.8 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E0)) + (via (at 50.8 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E2)) + (via (at 50.8 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E4)) + (via (at 50.8 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E6)) + (via (at 50.8 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E8)) + (via (at 50.8 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EA)) + (via (at 50.8 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EC)) + (via (at 50.8 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EE)) + (via (at 50.8 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F0)) + (via (at 50.8 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C7B75F2)) + (via (at 50.8 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F4)) + (via (at 88.9 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F6)) + (via (at 91.44 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FA)) + (via (at 99.06 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FC)) + (via (at 106.68 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FE)) + (via (at 93.98 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7600)) + (via (at 96.52 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7602)) + (via (at 99.06 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7604)) + (via (at 106.68 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7606)) + (via (at 109.22 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7608)) + (via (at 60.96 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760A)) + (via (at 60.96 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760C)) + (via (at 53.34 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760E)) + (via (at 53.34 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 45.72 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 66.04) (end 45.72 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 138.43 86.36) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 138.43 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 135.89 86.36) (end 49.53 86.36) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.89 86.36) (end 137.16 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 36.83) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 127 36.83) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 132.08 40.64) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 127 45.72) (end 132.08 45.72) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 111.76 40.64) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 87.63 35.56) (end 104.14 35.56) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 87.63 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 127 45.72) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.89 81.28) (end 137.16 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 87.63 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 55.88) (end 87.63 55.88) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 110.49 46.99) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 110.49 46.99) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 106.68 43.18) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 97.79 43.18) (end 96.52 43.18) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 97.79 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 53.34 43.18) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 53.34 35.56) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 53.34 33.02) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 53.34 30.48) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 52.07 27.94) (end 53.34 27.94) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 50.8 27.94) (end 52.07 27.94) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 49.53 27.94) (end 52.07 27.94) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 48.26 27.94) (end 49.53 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 49.53 27.94) (end 50.8 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 45.72 33.02) (end 50.8 33.02) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 45.72 43.18) (end 50.8 43.18) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 53.34 35.56) (end 55.88 35.56) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 54.61 27.94) (end 58.42 27.94) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 53.34 27.94) (end 54.61 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 59.69 29.21) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 59.69 29.21) (end 60.96 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 30.48) (end 58.42 30.48) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 54.61 41.91) (end 53.34 40.64) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 54.61 41.91) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 55.88 66.04) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 48.26 78.74) (end 57.15 78.74) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 57.15 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 60.96) (end 76.2 60.96) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 76.2 69.85) (end 76.2 60.96) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 85.09 55.88) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 85.09 55.88) (end 86.36 55.88) (width 0.5) (layer B.Cu) (net 0)) + (via (at 83.82 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 58.42) (end 76.2 71.12) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C711CCF)) + (via (at 76.2 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 60.96) (end 76.2 49.53) (width 0.8) (layer B.Cu) (net 0) (tstamp 5C711CD3)) + (via (at 76.2 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711CDC)) + (via (at 76.2 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711CE2)) + (via (at 76.2 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711CE7)) + (via (at 76.2 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711CEB)) + (via (at 58.42 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711CF1)) + (via (at 53.34 71.12) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711CF3)) + (via (at 76.2 71.12) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711D07)) + (via (at 83.82 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711D09)) + (via (at 83.82 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711D0B)) + (via (at 106.68 49.53) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (status 1000000)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711D10)) + (via (at 55.88 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C711D12)) + (via (at 55.88 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C711D14)) + (via (at 58.42 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 111.76 48.26) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 137.16 78.74) (end 134.62 78.74) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 134.62 78.74) (end 135.89 78.74) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 134.62 78.74) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 137.16 81.28) (end 134.62 81.28) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 134.62 81.28) (end 127 81.28) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 135.89 81.28) (end 134.62 81.28) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 138.43 86.36) (end 134.62 86.36) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 134.62 86.36) (end 135.89 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 86.36) (end 134.62 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 27.94) (end 50.8 27.94) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 86.36 50.8) (end 99.06 50.8) (width 1) (layer B.Cu) (net 0)) + (segment (start 99.06 50.8) (end 127 78.74) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 137.16 78.74) (width 1) (layer B.Cu) (net 0)) + (segment (start 137.16 81.28) (end 127 81.28) (width 1) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 127 81.28) (width 1) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 86.36 53.34) (width 1) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 99.06 55.88) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 99.06 55.88) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 137.16 83.82) (width 1) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 48.26 86.36) (width 1) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 139.7 86.36) (width 1) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 22.86) (width 1) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 81.28 22.86) (width 1) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 60.96 30.48) (width 1) (layer B.Cu) (net 0)) + (segment (start 60.96 33.02) (end 73.66 33.02) (width 1) (layer B.Cu) (net 0)) + (segment (start 73.66 33.02) (end 81.28 25.4) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 81.28 25.4) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 38.1) (end 132.08 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 132.08 40.64) (end 111.76 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 111.76 40.64) (end 104.14 33.02) (width 1) (layer B.Cu) (net 0)) + (segment (start 104.14 33.02) (end 86.36 33.02) (width 1) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 104.14 35.56) (width 1) (layer B.Cu) (net 0)) + (segment (start 104.14 35.56) (end 111.76 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 111.76 43.18) (end 127 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 132.08 43.18) (end 127 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 132.08 45.72) (end 111.76 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 104.14 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 104.14 38.1) (end 86.36 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 91.44 45.72) (end 91.44 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 88.9 45.72) (end 86.36 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 95.25 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 93.98 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 95.25 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 106.68 49.53) (end 106.68 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 106.68 43.18) (end 111.76 48.26) (width 1) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 139.7 48.26) (width 1) (layer B.Cu) (net 0)) + (segment (start 83.82 58.42) (end 86.36 58.42) (width 1) (layer B.Cu) (net 0)) + (segment (start 83.82 60.96) (end 86.36 60.96) (width 1) (layer B.Cu) (net 0)) + (segment (start 48.26 83.82) (end 68.58 83.82) (width 1) (layer B.Cu) (net 0)) + (segment (start 68.58 83.82) (end 71.12 81.28) (width 1) (layer B.Cu) (net 0)) + (segment (start 71.12 81.28) (end 71.12 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 71.12 43.18) (end 73.66 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 73.66 40.64) (end 86.36 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 48.26 81.28) (end 66.04 81.28) (width 1) (layer B.Cu) (net 0)) + (segment (start 66.04 81.28) (end 68.58 78.74) (width 1) (layer B.Cu) (net 0)) + (segment (start 68.58 78.74) (end 68.58 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 60.96 35.56) (width 1) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 68.58 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 62.23 38.1) (end 63.5 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 62.23 38.1) (end 60.96 38.1) (width 0.8) (layer B.Cu) (net 0)) + (segment (start 63.5 38.1) (end 66.04 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 66.04 40.64) (end 66.04 68.58) (width 1) (layer B.Cu) (net 0)) + (segment (start 66.04 68.58) (end 60.96 68.58) (width 1) (layer B.Cu) (net 0)) + (segment (start 60.96 68.58) (end 60.96 76.2) (width 1) (layer B.Cu) (net 0)) + (segment (start 60.96 76.2) (end 58.42 78.74) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 48.26 78.74) (width 1) (layer B.Cu) (net 0)) + (segment (start 48.26 76.2) (end 55.88 76.2) (width 1) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 55.88 76.2) (width 1) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 60.96 66.04) (width 1) (layer B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 45.72 66.04) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 63.5) (end 60.96 63.5) (width 1) (layer B.Cu) (net 0)) + (segment (start 60.96 66.04) (end 63.5 66.04) (width 1) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 63.5 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 63.5 45.72) (end 60.96 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 60.96 53.34) (end 55.88 53.34) (width 1) (layer B.Cu) (net 0)) + (segment (start 53.34 71.12) (end 53.34 66.04) (width 1) (layer B.Cu) (net 0)) + (segment (start 48.26 73.66) (end 45.72 71.12) (width 1) (layer B.Cu) (net 0)) + (segment (start 45.72 71.12) (end 45.72 25.4) (width 1) (layer B.Cu) (net 0)) + (segment (start 45.72 25.4) (end 58.42 25.4) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 25.4) (end 60.96 27.94) (width 1) (layer B.Cu) (net 0)) + (segment (start 48.26 27.94) (end 58.42 27.94) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 60.96 30.48) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 58.42 30.48) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 40.64) (end 60.96 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 53.34 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 45.72 33.02) (end 53.34 33.02) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 55.88 35.56) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 38.1) (end 53.34 38.1) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 40.64) (end 53.34 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 45.72 43.18) (end 53.34 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 45.72) (end 53.34 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 48.26) (end 53.34 48.26) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 50.8) (end 53.34 50.8) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 53.34) (end 53.34 53.34) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 55.88) (end 53.34 55.88) (width 1) (layer B.Cu) (net 0)) + (segment (start 50.8 58.42) (end 53.34 58.42) (width 1) (layer B.Cu) (net 0)) + (segment (start 53.34 45.72) (end 58.42 50.8) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 50.8) (end 60.96 50.8) (width 1) (layer B.Cu) (net 0)) + (segment (start 60.96 48.26) (end 58.42 48.26) (width 1) (layer B.Cu) (net 0)) + (segment (start 58.42 48.26) (end 55.88 45.72) (width 1) (layer B.Cu) (net 0)) + (segment (start 55.88 45.72) (end 55.88 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 53.34 40.64) (width 1) (layer B.Cu) (net 0)) + (segment (start 76.2 71.12) (end 76.2 49.53) (width 1) (layer B.Cu) (net 0)) + (segment (start 137.16 76.2) (end 127 76.2) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 76.2) (end 111.76 60.96) (width 1) (layer B.Cu) (net 0)) + (segment (start 137.16 73.66) (end 127 73.66) (width 1) (layer B.Cu) (net 0)) + (segment (start 127 73.66) (end 111.76 58.42) (width 1) (layer B.Cu) (net 0)) + (segment (start 111.76 58.42) (end 111.76 58.42) (width 1) (layer B.Cu) (net 0) (tstamp 5C712743)) + (via (at 111.76 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 111.76 60.96) (end 111.76 60.96) (width 1) (layer B.Cu) (net 0) (tstamp 5C712745)) + (via (at 111.76 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 58.42) (end 83.82 58.42) (width 1) (layer B.Cu) (net 0)) + (segment (start 83.82 60.96) (end 88.9 60.96) (width 1) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 86.36 55.88) (width 1) (layer B.Cu) (net 0)) + (segment (start 83.82 53.34) (end 86.36 53.34) (width 1) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 81.28 22.86) (width 1) (layer B.Cu) (net 0)) + (via (at 50.8 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 71.12) (end 76.2 71.12) (width 1) (layer F.Cu) (net 0)) + (segment (start 88.9 58.42) (end 111.76 58.42) (width 1) (layer F.Cu) (net 0)) + (segment (start 88.9 60.96) (end 111.76 60.96) (width 1) (layer F.Cu) (net 0)) + (segment (start 55.88 35.56) (end 55.88 53.34) (width 1) (layer F.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 63.5) (width 1) (layer F.Cu) (net 0)) + (segment (start 50.8 22.86) (end 48.26 22.86) (width 1) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C72B51E)) + (via (at 99.06 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 96.52 43.18) (end 95.25 43.18) (width 0.8) (layer B.Cu) (net 0) (tstamp 5C72B520)) + (via (at 96.52 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 43.18) (end 91.44 43.18) (width 1) (layer B.Cu) (net 0)) + (segment (start 87.63 49.53) (end 76.2 49.53) (width 1) (layer F.Cu) (net 0)) + (segment (start 106.68 49.53) (end 87.63 49.53) (width 1) (layer F.Cu) (net 0)) + +) diff --git a/MCUME_esp32/pcb/mcume.pro b/MCUME_esp32/pcb/mcume.pro new file mode 100644 index 0000000..152769c --- /dev/null +++ b/MCUME_esp32/pcb/mcume.pro @@ -0,0 +1,33 @@ +update=22/05/2015 07:44:53 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] diff --git a/MCUME_esp32/pcb/older/mcume1.kicad_pcb b/MCUME_esp32/pcb/older/mcume1.kicad_pcb new file mode 100644 index 0000000..2aa7429 --- /dev/null +++ b/MCUME_esp32/pcb/older/mcume1.kicad_pcb @@ -0,0 +1,542 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 0) + (tracks 437) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.5) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.5) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.5) + (via_dia 1.5) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68311F)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C683492)) + (via (at 50.8 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6836AE)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BA)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BC)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BF)) + (via (at 60.96 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C1)) + (via (at 60.96 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C3)) + (via (at 60.96 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C5)) + (via (at 60.96 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C7)) + (via (at 60.96 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C9)) + (via (at 60.96 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CB)) + (via (at 60.96 43.18) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CD)) + (via (at 60.96 45.72) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CF)) + (via (at 60.96 48.26) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D1)) + (via (at 60.96 50.8) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D3)) + (via (at 60.96 53.34) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D5)) + (via (at 60.96 55.88) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D7)) + (via (at 60.96 58.42) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D9)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DB)) + (via (at 86.36 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DD)) + (via (at 86.36 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DF)) + (via (at 86.36 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E1)) + (via (at 86.36 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E3)) + (via (at 86.36 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E5)) + (via (at 86.36 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837EF)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F3)) + (via (at 60.96 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F5)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F7)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F9)) + (via (at 60.96 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FB)) + (via (at 60.96 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FD)) + (via (at 60.96 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FF)) + (via (at 60.96 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683801)) + (via (at 60.96 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683803)) + (via (at 60.96 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683805)) + (via (at 60.96 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683807)) + (via (at 60.96 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683809)) + (via (at 60.96 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380B)) + (via (at 60.96 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380D)) + (via (at 60.96 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380F)) + (via (at 60.96 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683811)) + (via (at 60.96 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683813)) + (via (at 53.34 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683815)) + (via (at 53.34 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683817)) + (via (at 53.34 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683819)) + (via (at 53.34 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381B)) + (via (at 53.34 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381D)) + (via (at 53.34 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381F)) + (via (at 53.34 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683821)) + (via (at 53.34 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683823)) + (via (at 53.34 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683825)) + (via (at 53.34 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683827)) + (via (at 53.34 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683829)) + (via (at 53.34 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382B)) + (via (at 53.34 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382D)) + (via (at 53.34 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C68382F)) + (via (at 50.8 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683831)) + (via (at 50.8 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683833)) + (via (at 50.8 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683835)) + (via (at 50.8 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683837)) + (via (at 50.8 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683839)) + (via (at 50.8 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383B)) + (via (at 50.8 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383D)) + (via (at 50.8 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383F)) + (via (at 50.8 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683841)) + (via (at 50.8 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683843)) + (via (at 50.8 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683845)) + (via (at 50.8 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683847)) + (via (at 50.8 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683849)) + (via (at 50.8 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384B)) + (via (at 86.36 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384D)) + (via (at 86.36 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384F)) + (via (at 86.36 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683851)) + (via (at 86.36 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683853)) + (via (at 86.36 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683855)) + (via (at 86.36 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683857)) + (via (at 86.36 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683859)) + (via (at 86.36 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385B)) + (via (at 86.36 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385D)) + (via (at 86.36 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385F)) + (via (at 86.36 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683861)) + (via (at 86.36 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683863)) + (via (at 86.36 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683865)) + (via (at 86.36 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683867)) + (via (at 86.36 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683869)) + (via (at 127 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386B)) + (via (at 127 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386D)) + (via (at 127 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386F)) + (via (at 127 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683871)) + (via (at 132.08 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683873)) + (via (at 132.08 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683875)) + (via (at 132.08 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683877)) + (via (at 132.08 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683879)) + (via (at 137.16 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387B)) + (via (at 137.16 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387D)) + (via (at 137.16 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387F)) + (via (at 137.16 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683881)) + (via (at 137.16 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683885)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683887)) + (via (at 48.26 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683889)) + (via (at 48.26 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388B)) + (via (at 48.26 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388D)) + (via (at 48.26 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 53.34 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 27.94) (end 53.34 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 53.34 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 53.34 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 25.4) (end 58.42 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 25.4) (end 60.96 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 27.94) (end 58.42 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 60.96 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 53.34 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 38.1) (end 53.34 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 40.64) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 53.34 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 45.72) (end 53.34 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 48.26) (end 53.34 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 50.8) (end 53.34 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 53.34) (end 53.34 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 55.88) (end 53.34 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 58.42) (end 53.34 58.42) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 25.4) (end 50.8 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 33.02) (end 48.26 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 48.26 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 43.18) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 30.48) (end 58.42 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 40.64) (end 60.96 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 33.02) (end 73.66 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 33.02) (end 81.28 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 25.4) (end 127 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 129.54 38.1) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 132.08 38.1) (end 129.54 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 132.08 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 43.18) (end 132.08 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 45.72) (end 132.08 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 30.48) (end 73.66 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 81.28 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 22.86) (end 139.7 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 27.94) (end 139.7 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 40.64) (end 127 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 33.02) (end 111.76 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 33.02) (end 104.14 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 43.18) (end 127 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 35.56) (end 111.76 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 104.14 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 38.1) (end 104.14 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 38.1) (end 111.76 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 127 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 53.34) (end 96.52 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6842EE)) + (via (at 48.26 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 137.16 73.66) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 73.66) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 76.2) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 137.16 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 50.8) (end 127 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 50.8) (end 99.06 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 96.52 53.34) (end 99.06 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 127 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 81.28) (end 137.16 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 137.16 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 55.88) (end 127 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 99.06 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 40.64) (end 66.04 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 38.1) (end 66.04 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 38.1) (end 63.5 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 45.72) (end 63.5 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 45.72) (end 63.5 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 48.26) (end 58.42 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 48.26) (end 55.88 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 45.72) (end 55.88 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 50.8) (end 60.96 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 45.72) (end 58.42 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 38.1) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C684667)) + (via (at 58.42 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 63.5) (end 58.42 63.5) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 35.56) (end 55.88 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 55.88 53.34) (end 60.96 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 48.26 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 66.04) (end 48.26 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 68.58) (end 48.26 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 43.18) (end 48.26 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 40.64) (end 73.66 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 40.64) (end 71.12 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 43.18) (end 71.12 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 81.28) (end 68.58 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 83.82) (end 48.26 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 38.1) (end 68.58 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 68.58 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 81.28) (end 48.26 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 78.74) (end 66.04 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 35.56) (end 66.04 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 83.82 53.34) (end 86.36 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 86.36 55.88) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 53.34) (end 76.2 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 53.34 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 86.36) (end 137.16 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 139.7 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 66.04) (end 55.88 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 55.88 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 73.66) (end 55.88 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 76.2) (end 48.26 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 60.96 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 68.58) (end 60.96 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 76.2) (end 58.42 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 68.58) (end 60.96 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 48.26 78.74) (width 0.5) (layer B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 45.72) (end 86.36 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 111.76 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 48.26) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 91.44 45.72) (end 91.44 43.18) (width 0.5) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 95.25 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 95.25 43.18) (end 93.98 44.45) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 93.98 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 50.8) (end 76.2 52.07) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 52.07) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 43.18) (end 109.22 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 45.72) (end 106.68 49.53) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 49.53) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 35.56) (end 55.88 53.34) (width 0.5) (layer F.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 63.5) (width 0.5) (layer F.Cu) (net 0)) + (segment (start 106.68 49.53) (end 76.2 49.53) (width 0.5) (layer F.Cu) (net 0)) + +) diff --git a/MCUME_esp32/pcb/older/mcume2.kicad_pcb b/MCUME_esp32/pcb/older/mcume2.kicad_pcb new file mode 100644 index 0000000..6e038c1 --- /dev/null +++ b/MCUME_esp32/pcb/older/mcume2.kicad_pcb @@ -0,0 +1,547 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 4) + (tracks 437) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.5) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.5) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.5) + (via_dia 1.5) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (gr_line (start 44.45 88.9) (end 44.45 17.78) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 143.51 88.9) (end 44.45 88.9) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 143.51 17.78) (end 143.51 88.9) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 44.45 17.78) (end 143.51 17.78) (layer Edge.Cuts) (width 0.15)) + + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68311F)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (status 1000000)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C683492)) + (via (at 50.8 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6836AE)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BA)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BC)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BF)) + (via (at 60.96 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C1)) + (via (at 60.96 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C3)) + (via (at 60.96 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C5)) + (via (at 60.96 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C7)) + (via (at 60.96 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C9)) + (via (at 60.96 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CB)) + (via (at 60.96 43.18) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CD)) + (via (at 60.96 45.72) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CF)) + (via (at 60.96 48.26) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D1)) + (via (at 60.96 50.8) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D3)) + (via (at 60.96 53.34) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D5)) + (via (at 60.96 55.88) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D7)) + (via (at 60.96 58.42) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D9)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DB)) + (via (at 86.36 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DD)) + (via (at 86.36 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DF)) + (via (at 86.36 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E1)) + (via (at 86.36 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E3)) + (via (at 86.36 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E5)) + (via (at 86.36 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837EF)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F3)) + (via (at 60.96 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F5)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F7)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F9)) + (via (at 60.96 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FB)) + (via (at 60.96 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FD)) + (via (at 60.96 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FF)) + (via (at 60.96 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683801)) + (via (at 60.96 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683803)) + (via (at 60.96 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683805)) + (via (at 60.96 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683807)) + (via (at 60.96 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683809)) + (via (at 60.96 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380B)) + (via (at 60.96 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380D)) + (via (at 60.96 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380F)) + (via (at 60.96 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683811)) + (via (at 60.96 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683813)) + (via (at 53.34 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683815)) + (via (at 53.34 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683817)) + (via (at 53.34 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683819)) + (via (at 53.34 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381B)) + (via (at 53.34 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381D)) + (via (at 53.34 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381F)) + (via (at 53.34 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683821)) + (via (at 53.34 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683823)) + (via (at 53.34 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683825)) + (via (at 53.34 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683827)) + (via (at 53.34 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683829)) + (via (at 53.34 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382B)) + (via (at 53.34 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382D)) + (via (at 53.34 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C68382F)) + (via (at 50.8 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683831)) + (via (at 50.8 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683833)) + (via (at 50.8 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683835)) + (via (at 50.8 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683837)) + (via (at 50.8 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683839)) + (via (at 50.8 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383B)) + (via (at 50.8 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383D)) + (via (at 50.8 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383F)) + (via (at 50.8 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683841)) + (via (at 50.8 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683843)) + (via (at 50.8 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683845)) + (via (at 50.8 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683847)) + (via (at 50.8 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683849)) + (via (at 50.8 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384B)) + (via (at 86.36 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384D)) + (via (at 86.36 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384F)) + (via (at 86.36 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683851)) + (via (at 86.36 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683853)) + (via (at 86.36 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683855)) + (via (at 86.36 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683857)) + (via (at 86.36 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683859)) + (via (at 86.36 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385B)) + (via (at 86.36 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385D)) + (via (at 86.36 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385F)) + (via (at 86.36 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683861)) + (via (at 86.36 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683863)) + (via (at 86.36 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683865)) + (via (at 86.36 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683867)) + (via (at 86.36 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683869)) + (via (at 127 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386B)) + (via (at 127 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386D)) + (via (at 127 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386F)) + (via (at 127 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683871)) + (via (at 132.08 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683873)) + (via (at 132.08 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683875)) + (via (at 132.08 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683877)) + (via (at 132.08 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683879)) + (via (at 137.16 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387B)) + (via (at 137.16 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387D)) + (via (at 137.16 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387F)) + (via (at 137.16 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683881)) + (via (at 137.16 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683885)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683887)) + (via (at 48.26 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683889)) + (via (at 48.26 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388B)) + (via (at 48.26 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388D)) + (via (at 48.26 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 53.34 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 27.94) (end 53.34 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 53.34 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 53.34 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 25.4) (end 58.42 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 25.4) (end 60.96 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 27.94) (end 58.42 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 60.96 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 53.34 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 38.1) (end 53.34 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 40.64) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 53.34 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 45.72) (end 53.34 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 48.26) (end 53.34 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 50.8) (end 53.34 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 53.34) (end 53.34 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 55.88) (end 53.34 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 58.42) (end 53.34 58.42) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 25.4) (end 50.8 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 33.02) (end 48.26 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 48.26 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 43.18) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 30.48) (end 58.42 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 40.64) (end 60.96 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 33.02) (end 73.66 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 33.02) (end 81.28 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 25.4) (end 127 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 129.54 38.1) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 132.08 38.1) (end 129.54 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 132.08 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 43.18) (end 132.08 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 45.72) (end 132.08 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 30.48) (end 73.66 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 81.28 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 22.86) (end 139.7 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 27.94) (end 139.7 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 40.64) (end 127 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 33.02) (end 111.76 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 33.02) (end 104.14 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 43.18) (end 127 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 35.56) (end 111.76 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 104.14 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 38.1) (end 104.14 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 38.1) (end 111.76 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 127 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 53.34) (end 96.52 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6842EE)) + (via (at 48.26 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 137.16 73.66) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 73.66) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 76.2) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 137.16 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 50.8) (end 127 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 50.8) (end 99.06 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 96.52 53.34) (end 99.06 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 127 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 81.28) (end 137.16 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 137.16 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 55.88) (end 127 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 99.06 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 40.64) (end 66.04 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 38.1) (end 66.04 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 38.1) (end 63.5 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 45.72) (end 63.5 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 45.72) (end 63.5 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 48.26) (end 58.42 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 48.26) (end 55.88 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 45.72) (end 55.88 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 50.8) (end 60.96 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 45.72) (end 58.42 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 38.1) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C684667)) + (via (at 58.42 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 63.5) (end 58.42 63.5) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 35.56) (end 55.88 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 55.88 53.34) (end 60.96 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 48.26 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 66.04) (end 48.26 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 68.58) (end 48.26 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 43.18) (end 48.26 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 40.64) (end 73.66 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 40.64) (end 71.12 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 43.18) (end 71.12 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 81.28) (end 68.58 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 83.82) (end 48.26 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 38.1) (end 68.58 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 68.58 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 81.28) (end 48.26 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 78.74) (end 66.04 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 35.56) (end 66.04 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 83.82 53.34) (end 86.36 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 86.36 55.88) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 53.34) (end 76.2 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 53.34 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 86.36) (end 137.16 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 139.7 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 66.04) (end 55.88 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 55.88 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 73.66) (end 55.88 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 76.2) (end 48.26 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 60.96 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 68.58) (end 60.96 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 76.2) (end 58.42 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 68.58) (end 60.96 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 48.26 78.74) (width 0.5) (layer B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 45.72) (end 86.36 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 111.76 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 48.26) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 91.44 45.72) (end 91.44 43.18) (width 0.5) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 95.25 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 95.25 43.18) (end 93.98 44.45) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 93.98 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 50.8) (end 76.2 52.07) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 52.07) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 43.18) (end 109.22 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 45.72) (end 106.68 49.53) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 49.53) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 35.56) (end 55.88 53.34) (width 0.5) (layer F.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 63.5) (width 0.5) (layer F.Cu) (net 0)) + (segment (start 106.68 49.53) (end 76.2 49.53) (width 0.5) (layer F.Cu) (net 0)) + +) diff --git a/MCUME_esp32/pcb/older/mcume3.kicad_pcb b/MCUME_esp32/pcb/older/mcume3.kicad_pcb new file mode 100644 index 0000000..2a0385e --- /dev/null +++ b/MCUME_esp32/pcb/older/mcume3.kicad_pcb @@ -0,0 +1,734 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 0) + (tracks 620) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.5) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.5) + (via_dia 1.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (net_class neti "" + (clearance 0.2) + (trace_width 0.5) + (via_dia 3) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68311F)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C683492)) + (via (at 50.8 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6836AE)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BA)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BC)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BF)) + (via (at 60.96 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C1)) + (via (at 60.96 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C3)) + (via (at 60.96 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C5)) + (via (at 60.96 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C7)) + (via (at 60.96 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C9)) + (via (at 60.96 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CB)) + (via (at 60.96 43.18) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CD)) + (via (at 60.96 45.72) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CF)) + (via (at 60.96 48.26) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D1)) + (via (at 60.96 50.8) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D3)) + (via (at 60.96 53.34) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D5)) + (via (at 60.96 55.88) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D7)) + (via (at 60.96 58.42) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D9)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DB)) + (via (at 86.36 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DD)) + (via (at 86.36 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DF)) + (via (at 86.36 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E1)) + (via (at 86.36 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E3)) + (via (at 86.36 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E5)) + (via (at 86.36 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837EF)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F3)) + (via (at 60.96 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F5)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F7)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F9)) + (via (at 60.96 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FB)) + (via (at 60.96 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FD)) + (via (at 60.96 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FF)) + (via (at 60.96 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683801)) + (via (at 60.96 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683803)) + (via (at 60.96 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683805)) + (via (at 60.96 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683807)) + (via (at 60.96 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683809)) + (via (at 60.96 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380B)) + (via (at 60.96 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380D)) + (via (at 60.96 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380F)) + (via (at 60.96 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683811)) + (via (at 60.96 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683813)) + (via (at 53.34 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683815)) + (via (at 53.34 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683817)) + (via (at 53.34 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683819)) + (via (at 53.34 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381B)) + (via (at 53.34 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381D)) + (via (at 53.34 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381F)) + (via (at 53.34 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683821)) + (via (at 53.34 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683823)) + (via (at 53.34 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683825)) + (via (at 53.34 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683827)) + (via (at 53.34 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683829)) + (via (at 53.34 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382B)) + (via (at 53.34 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382D)) + (via (at 53.34 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C68382F)) + (via (at 50.8 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683831)) + (via (at 50.8 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683833)) + (via (at 50.8 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683835)) + (via (at 50.8 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683837)) + (via (at 50.8 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683839)) + (via (at 50.8 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383B)) + (via (at 50.8 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383D)) + (via (at 50.8 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383F)) + (via (at 50.8 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683841)) + (via (at 50.8 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683843)) + (via (at 50.8 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683845)) + (via (at 50.8 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683847)) + (via (at 50.8 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683849)) + (via (at 50.8 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384B)) + (via (at 86.36 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384D)) + (via (at 86.36 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384F)) + (via (at 86.36 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683851)) + (via (at 86.36 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683853)) + (via (at 86.36 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683855)) + (via (at 86.36 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683857)) + (via (at 86.36 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683859)) + (via (at 86.36 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385B)) + (via (at 86.36 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385D)) + (via (at 86.36 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385F)) + (via (at 86.36 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683861)) + (via (at 86.36 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683863)) + (via (at 86.36 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683865)) + (via (at 86.36 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683867)) + (via (at 86.36 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683869)) + (via (at 127 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386B)) + (via (at 127 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386D)) + (via (at 127 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386F)) + (via (at 127 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683871)) + (via (at 132.08 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683873)) + (via (at 132.08 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683875)) + (via (at 132.08 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683877)) + (via (at 132.08 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683879)) + (via (at 137.16 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387B)) + (via (at 137.16 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387D)) + (via (at 137.16 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387F)) + (via (at 137.16 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683881)) + (via (at 137.16 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683885)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683887)) + (via (at 48.26 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683889)) + (via (at 48.26 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388B)) + (via (at 48.26 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388D)) + (via (at 48.26 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 53.34 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 27.94) (end 53.34 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 53.34 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 53.34 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 25.4) (end 58.42 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 25.4) (end 60.96 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 27.94) (end 58.42 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 60.96 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 53.34 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 38.1) (end 53.34 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 40.64) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 53.34 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 45.72) (end 53.34 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 48.26) (end 53.34 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 50.8) (end 53.34 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 53.34) (end 53.34 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 55.88) (end 53.34 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 58.42) (end 53.34 58.42) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 25.4) (end 50.8 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 33.02) (end 48.26 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 48.26 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 43.18) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 30.48) (end 58.42 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 40.64) (end 60.96 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 33.02) (end 73.66 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 33.02) (end 81.28 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 25.4) (end 127 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 129.54 38.1) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 132.08 38.1) (end 129.54 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 132.08 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 43.18) (end 132.08 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 45.72) (end 132.08 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 30.48) (end 73.66 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 81.28 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 22.86) (end 139.7 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 27.94) (end 139.7 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 40.64) (end 127 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 33.02) (end 111.76 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 43.18) (end 127 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 35.56) (end 111.76 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 38.1) (end 111.76 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 127 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 53.34) (end 96.52 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6842EE)) + (via (at 48.26 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.7 73.66) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 50.8) (end 127 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 50.8) (end 99.06 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 96.52 53.34) (end 99.06 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 127 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 55.88) (end 127 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 40.64) (end 66.04 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 38.1) (end 66.04 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 38.1) (end 63.5 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 45.72) (end 63.5 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 45.72) (end 63.5 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 48.26) (end 58.42 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 48.26) (end 55.88 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 45.72) (end 55.88 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 50.8) (end 60.96 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 45.72) (end 58.42 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 38.1) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C684667)) + (via (at 58.42 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 63.5) (end 58.42 63.5) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 35.56) (end 55.88 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 55.88 53.34) (end 60.96 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 48.26 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 66.04) (end 48.26 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 68.58) (end 48.26 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 43.18) (end 48.26 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 40.64) (end 71.12 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 43.18) (end 71.12 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 81.28) (end 68.58 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 38.1) (end 68.58 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 68.58 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 78.74) (end 66.04 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 35.56) (end 66.04 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 53.34) (end 76.2 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 53.34 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 66.04) (end 55.88 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 55.88 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 73.66) (end 55.88 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 60.96 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 68.58) (end 60.96 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 76.2) (end 58.42 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 68.58) (end 60.96 68.58) (width 0.5) (layer B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 45.72) (end 86.36 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 111.76 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 48.26) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 91.44 45.72) (end 91.44 43.18) (width 0.5) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 95.25 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 95.25 43.18) (end 93.98 44.45) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 93.98 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 50.8) (end 76.2 52.07) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 52.07) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 43.18) (end 109.22 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 45.72) (end 106.68 49.53) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 49.53) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 86.36 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 99.06 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 53.34) (end 86.36 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 40.64) (end 73.66 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 38.1) (end 104.14 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 104.14 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 33.02) (end 104.14 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 139.7 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 137.16 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 81.28) (end 137.16 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 137.16 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 76.2) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 73.66) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 86.36) (end 137.16 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 83.82) (end 48.26 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 81.28) (end 48.26 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 48.26 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 76.2) (end 48.26 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7556)) + (via (at 48.26 73.66) (size 2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7558)) + (via (at 48.26 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755A)) + (via (at 48.26 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755C)) + (via (at 48.26 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755E)) + (via (at 48.26 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7560)) + (via (at 48.26 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7562)) + (via (at 137.16 73.66) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7564)) + (via (at 137.16 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7566)) + (via (at 137.16 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7568)) + (via (at 137.16 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756A)) + (via (at 137.16 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756C)) + (via (at 137.16 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756E)) + (via (at 132.08 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7570)) + (via (at 132.08 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7572)) + (via (at 132.08 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7574)) + (via (at 132.08 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7576)) + (via (at 127 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7578)) + (via (at 127 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757A)) + (via (at 127 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757C)) + (via (at 127 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757E)) + (via (at 86.36 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7580)) + (via (at 86.36 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7582)) + (via (at 86.36 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7584)) + (via (at 86.36 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7586)) + (via (at 86.36 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7588)) + (via (at 86.36 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758A)) + (via (at 86.36 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758C)) + (via (at 86.36 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758E)) + (via (at 86.36 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7590)) + (via (at 86.36 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7592)) + (via (at 86.36 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7594)) + (via (at 86.36 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7596)) + (via (at 86.36 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7598)) + (via (at 86.36 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759A)) + (via (at 86.36 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759C)) + (via (at 60.96 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759E)) + (via (at 60.96 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A0)) + (via (at 60.96 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A2)) + (via (at 60.96 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A4)) + (via (at 60.96 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A6)) + (via (at 60.96 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A8)) + (via (at 60.96 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AA)) + (via (at 60.96 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AC)) + (via (at 60.96 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AE)) + (via (at 60.96 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B0)) + (via (at 60.96 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B2)) + (via (at 60.96 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B4)) + (via (at 60.96 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B6)) + (via (at 60.96 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B8)) + (via (at 60.96 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BA)) + (via (at 53.34 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BC)) + (via (at 53.34 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BE)) + (via (at 53.34 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C0)) + (via (at 53.34 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C2)) + (via (at 53.34 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C4)) + (via (at 53.34 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C6)) + (via (at 53.34 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C8)) + (via (at 53.34 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CA)) + (via (at 53.34 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CC)) + (via (at 53.34 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CE)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D0)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D2)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D4)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D6)) + (via (at 50.8 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D8)) + (via (at 50.8 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DA)) + (via (at 53.34 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DC)) + (via (at 50.8 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DE)) + (via (at 50.8 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E0)) + (via (at 50.8 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E2)) + (via (at 50.8 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E4)) + (via (at 50.8 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E6)) + (via (at 50.8 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E8)) + (via (at 50.8 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EA)) + (via (at 50.8 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EC)) + (via (at 50.8 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EE)) + (via (at 50.8 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F0)) + (via (at 50.8 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C7B75F2)) + (via (at 50.8 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F4)) + (via (at 88.9 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F6)) + (via (at 91.44 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F8)) + (via (at 91.44 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FA)) + (via (at 99.06 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FC)) + (via (at 106.68 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FE)) + (via (at 93.98 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7600)) + (via (at 96.52 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7602)) + (via (at 99.06 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7604)) + (via (at 106.68 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7606)) + (via (at 109.22 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7608)) + (via (at 60.96 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760A)) + (via (at 60.96 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760C)) + (via (at 53.34 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760E)) + (via (at 53.34 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + +) diff --git a/MCUME_esp32/pcb/older/mcume4.kicad_pcb b/MCUME_esp32/pcb/older/mcume4.kicad_pcb new file mode 100644 index 0000000..3044e4f --- /dev/null +++ b/MCUME_esp32/pcb/older/mcume4.kicad_pcb @@ -0,0 +1,744 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 5) + (tracks 624) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.5) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.5) + (via_dia 1.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (net_class neti "" + (clearance 0.2) + (trace_width 0.5) + (via_dia 3) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (gr_line (start 57.15 91.44) (end 43.18 91.44) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 57.15 91.44) (end 142.24 91.44) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 142.24 17.78) (end 142.24 142.24) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 43.18 17.78) (end 142.24 17.78) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 43.18 144.78) (end 43.18 17.78) (layer Edge.Cuts) (width 0.15)) + + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68311F)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C683492)) + (via (at 50.8 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6836AE)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BA)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BC)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BF)) + (via (at 60.96 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C1)) + (via (at 60.96 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C3)) + (via (at 60.96 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C5)) + (via (at 60.96 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C7)) + (via (at 60.96 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C9)) + (via (at 60.96 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CB)) + (via (at 60.96 43.18) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CD)) + (via (at 60.96 45.72) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CF)) + (via (at 60.96 48.26) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D1)) + (via (at 60.96 50.8) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D3)) + (via (at 60.96 53.34) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D5)) + (via (at 60.96 55.88) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D7)) + (via (at 60.96 58.42) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D9)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DB)) + (via (at 86.36 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DD)) + (via (at 86.36 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DF)) + (via (at 86.36 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E1)) + (via (at 86.36 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E3)) + (via (at 86.36 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E5)) + (via (at 86.36 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837EF)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F3)) + (via (at 60.96 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F5)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F7)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F9)) + (via (at 60.96 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FB)) + (via (at 60.96 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FD)) + (via (at 60.96 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FF)) + (via (at 60.96 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683801)) + (via (at 60.96 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683803)) + (via (at 60.96 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683805)) + (via (at 60.96 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683807)) + (via (at 60.96 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683809)) + (via (at 60.96 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380B)) + (via (at 60.96 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380D)) + (via (at 60.96 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380F)) + (via (at 60.96 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683811)) + (via (at 60.96 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683813)) + (via (at 53.34 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683815)) + (via (at 53.34 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683817)) + (via (at 53.34 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683819)) + (via (at 53.34 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381B)) + (via (at 53.34 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381D)) + (via (at 53.34 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381F)) + (via (at 53.34 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683821)) + (via (at 53.34 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683823)) + (via (at 53.34 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683825)) + (via (at 53.34 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683827)) + (via (at 53.34 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683829)) + (via (at 53.34 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382B)) + (via (at 53.34 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382D)) + (via (at 53.34 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C68382F)) + (via (at 50.8 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683831)) + (via (at 50.8 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683833)) + (via (at 50.8 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683835)) + (via (at 50.8 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683837)) + (via (at 50.8 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683839)) + (via (at 50.8 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383B)) + (via (at 50.8 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383D)) + (via (at 50.8 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383F)) + (via (at 50.8 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683841)) + (via (at 50.8 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683843)) + (via (at 50.8 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683845)) + (via (at 50.8 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683847)) + (via (at 50.8 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683849)) + (via (at 50.8 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384B)) + (via (at 86.36 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384D)) + (via (at 86.36 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384F)) + (via (at 86.36 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683851)) + (via (at 86.36 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683853)) + (via (at 86.36 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683855)) + (via (at 86.36 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683857)) + (via (at 86.36 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683859)) + (via (at 86.36 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385B)) + (via (at 86.36 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385D)) + (via (at 86.36 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385F)) + (via (at 86.36 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683861)) + (via (at 86.36 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683863)) + (via (at 86.36 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683865)) + (via (at 86.36 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683867)) + (via (at 86.36 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683869)) + (via (at 127 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386B)) + (via (at 127 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386D)) + (via (at 127 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386F)) + (via (at 127 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683871)) + (via (at 132.08 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683873)) + (via (at 132.08 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683875)) + (via (at 132.08 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683877)) + (via (at 132.08 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683879)) + (via (at 137.16 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387B)) + (via (at 137.16 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387D)) + (via (at 137.16 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387F)) + (via (at 137.16 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683881)) + (via (at 137.16 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683885)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683887)) + (via (at 48.26 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683889)) + (via (at 48.26 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388B)) + (via (at 48.26 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388D)) + (via (at 48.26 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 53.34 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 27.94) (end 53.34 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 53.34 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 53.34 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 25.4) (end 58.42 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 25.4) (end 60.96 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 27.94) (end 58.42 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 60.96 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 53.34 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 38.1) (end 53.34 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 40.64) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 53.34 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 45.72) (end 53.34 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 48.26) (end 53.34 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 50.8) (end 53.34 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 53.34) (end 53.34 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 55.88) (end 53.34 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 58.42) (end 53.34 58.42) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 25.4) (end 50.8 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 48.26 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 30.48) (end 58.42 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 40.64) (end 60.96 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 33.02) (end 73.66 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 33.02) (end 81.28 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 25.4) (end 127 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 129.54 38.1) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 132.08 38.1) (end 129.54 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 132.08 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 43.18) (end 132.08 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 45.72) (end 132.08 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 30.48) (end 73.66 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 81.28 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 22.86) (end 139.7 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 27.94) (end 139.7 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 40.64) (end 127 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 33.02) (end 111.76 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 43.18) (end 127 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 35.56) (end 111.76 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 38.1) (end 111.76 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 127 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 53.34) (end 96.52 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6842EE)) + (via (at 48.26 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.7 73.66) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 50.8) (end 127 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 50.8) (end 99.06 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 96.52 53.34) (end 99.06 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 127 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 55.88) (end 127 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 40.64) (end 66.04 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 38.1) (end 66.04 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 38.1) (end 63.5 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 45.72) (end 63.5 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 45.72) (end 63.5 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 48.26) (end 58.42 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 48.26) (end 55.88 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 45.72) (end 55.88 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 50.8) (end 60.96 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 45.72) (end 58.42 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 38.1) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C684667)) + (via (at 58.42 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 63.5) (end 58.42 63.5) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 35.56) (end 55.88 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 55.88 53.34) (end 60.96 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 73.66 40.64) (end 71.12 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 43.18) (end 71.12 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 81.28) (end 68.58 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 38.1) (end 68.58 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 68.58 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 78.74) (end 66.04 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 35.56) (end 66.04 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 53.34) (end 76.2 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 53.34 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 66.04) (end 55.88 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 55.88 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 73.66) (end 55.88 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 60.96 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 68.58) (end 60.96 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 76.2) (end 58.42 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 68.58) (end 60.96 68.58) (width 0.5) (layer B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 45.72) (end 86.36 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 111.76 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 48.26) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 91.44 45.72) (end 91.44 43.18) (width 0.5) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 95.25 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 95.25 43.18) (end 93.98 44.45) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 93.98 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 50.8) (end 76.2 52.07) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 52.07) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 43.18) (end 109.22 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 45.72) (end 106.68 49.53) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 49.53) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 86.36 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 99.06 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 53.34) (end 86.36 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 40.64) (end 73.66 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 38.1) (end 104.14 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 104.14 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 33.02) (end 104.14 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 139.7 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 137.16 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 81.28) (end 137.16 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 137.16 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 76.2) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 73.66) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 86.36) (end 137.16 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 83.82) (end 48.26 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 81.28) (end 48.26 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 48.26 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 76.2) (end 48.26 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7556)) + (via (at 48.26 73.66) (size 2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7558)) + (via (at 48.26 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755A)) + (via (at 48.26 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755C)) + (via (at 48.26 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755E)) + (via (at 48.26 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7560)) + (via (at 48.26 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7562)) + (via (at 137.16 73.66) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7564)) + (via (at 137.16 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7566)) + (via (at 137.16 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7568)) + (via (at 137.16 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756A)) + (via (at 137.16 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756C)) + (via (at 137.16 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756E)) + (via (at 132.08 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7570)) + (via (at 132.08 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7572)) + (via (at 132.08 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7574)) + (via (at 132.08 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7576)) + (via (at 127 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7578)) + (via (at 127 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757A)) + (via (at 127 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757C)) + (via (at 127 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757E)) + (via (at 86.36 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7580)) + (via (at 86.36 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7582)) + (via (at 86.36 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7584)) + (via (at 86.36 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7586)) + (via (at 86.36 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7588)) + (via (at 86.36 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758A)) + (via (at 86.36 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758C)) + (via (at 86.36 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758E)) + (via (at 86.36 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7590)) + (via (at 86.36 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7592)) + (via (at 86.36 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7594)) + (via (at 86.36 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7596)) + (via (at 86.36 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7598)) + (via (at 86.36 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759A)) + (via (at 86.36 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759C)) + (via (at 60.96 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759E)) + (via (at 60.96 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A0)) + (via (at 60.96 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A2)) + (via (at 60.96 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A4)) + (via (at 60.96 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A6)) + (via (at 60.96 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A8)) + (via (at 60.96 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AA)) + (via (at 60.96 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AC)) + (via (at 60.96 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AE)) + (via (at 60.96 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B0)) + (via (at 60.96 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B2)) + (via (at 60.96 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B4)) + (via (at 60.96 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B6)) + (via (at 60.96 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B8)) + (via (at 60.96 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BA)) + (via (at 53.34 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BC)) + (via (at 53.34 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BE)) + (via (at 53.34 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C0)) + (via (at 53.34 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C2)) + (via (at 53.34 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C4)) + (via (at 53.34 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C6)) + (via (at 53.34 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C8)) + (via (at 53.34 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CA)) + (via (at 53.34 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CC)) + (via (at 53.34 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CE)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D0)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D2)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D4)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D6)) + (via (at 50.8 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D8)) + (via (at 50.8 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DA)) + (via (at 53.34 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DC)) + (via (at 50.8 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DE)) + (via (at 50.8 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E0)) + (via (at 50.8 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E2)) + (via (at 50.8 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E4)) + (via (at 50.8 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E6)) + (via (at 50.8 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E8)) + (via (at 50.8 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EA)) + (via (at 50.8 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EC)) + (via (at 50.8 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EE)) + (via (at 50.8 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F0)) + (via (at 50.8 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C7B75F2)) + (via (at 50.8 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F4)) + (via (at 88.9 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F6)) + (via (at 91.44 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F8)) + (via (at 91.44 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FA)) + (via (at 99.06 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FC)) + (via (at 106.68 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FE)) + (via (at 93.98 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7600)) + (via (at 96.52 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7602)) + (via (at 99.06 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7604)) + (via (at 106.68 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7606)) + (via (at 109.22 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7608)) + (via (at 60.96 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760A)) + (via (at 60.96 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760C)) + (via (at 53.34 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760E)) + (via (at 53.34 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 45.72 25.4) (end 45.72 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 45.72 71.12) (end 48.26 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 45.72 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 45.72 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 45.72 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 66.04) (end 45.72 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 45.72 66.04) (end 53.34 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 48.26 27.94) (end 50.8 27.94) (width 0.5) (layer B.Cu) (net 0)) + +) diff --git a/MCUME_esp32/pcb/older/mcume5.kicad_pcb b/MCUME_esp32/pcb/older/mcume5.kicad_pcb new file mode 100644 index 0000000..916adcf --- /dev/null +++ b/MCUME_esp32/pcb/older/mcume5.kicad_pcb @@ -0,0 +1,757 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)") + + (general + (thickness 1.6) + (drawings 4) + (tracks 638) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.5) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2) + (segment_width 0.2) + (edge_width 0.15) + (via_size 1.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0.051) + (solder_mask_min_width 0.25) + (aux_axis_origin 0 0) + (visible_elements FFFFF77F) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.5) + (via_dia 1.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (net_class neti "" + (clearance 0.2) + (trace_width 0.5) + (via_dia 3) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + ) + + (gr_line (start 142.24 142.24) (end 43.18 142.24) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 142.24 17.78) (end 142.24 142.24) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 43.18 17.78) (end 142.24 17.78) (layer Edge.Cuts) (width 0.15)) + (gr_line (start 43.18 144.78) (end 43.18 17.78) (layer Edge.Cuts) (width 0.15)) + + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68311F)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C683492)) + (via (at 50.8 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6836AE)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BA)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BC)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837BF)) + (via (at 60.96 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C1)) + (via (at 60.96 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C3)) + (via (at 60.96 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C5)) + (via (at 60.96 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C7)) + (via (at 60.96 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837C9)) + (via (at 60.96 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CB)) + (via (at 60.96 43.18) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CD)) + (via (at 60.96 45.72) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837CF)) + (via (at 60.96 48.26) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D1)) + (via (at 60.96 50.8) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D3)) + (via (at 60.96 53.34) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D5)) + (via (at 60.96 55.88) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D7)) + (via (at 60.96 58.42) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837D9)) + (via (at 60.96 60.96) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DB)) + (via (at 86.36 27.94) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DD)) + (via (at 86.36 30.48) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837DF)) + (via (at 86.36 33.02) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E1)) + (via (at 86.36 35.56) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E3)) + (via (at 86.36 38.1) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837E5)) + (via (at 86.36 40.64) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837EF)) + (via (at 60.96 63.5) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F3)) + (via (at 60.96 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F5)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F7)) + (via (at 60.96 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837F9)) + (via (at 60.96 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FB)) + (via (at 60.96 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FD)) + (via (at 60.96 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6837FF)) + (via (at 60.96 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683801)) + (via (at 60.96 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683803)) + (via (at 60.96 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683805)) + (via (at 60.96 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683807)) + (via (at 60.96 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683809)) + (via (at 60.96 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380B)) + (via (at 60.96 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380D)) + (via (at 60.96 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68380F)) + (via (at 60.96 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683811)) + (via (at 60.96 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683813)) + (via (at 53.34 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683815)) + (via (at 53.34 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683817)) + (via (at 53.34 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683819)) + (via (at 53.34 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381B)) + (via (at 53.34 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381D)) + (via (at 53.34 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68381F)) + (via (at 53.34 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683821)) + (via (at 53.34 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683823)) + (via (at 53.34 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683825)) + (via (at 53.34 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683827)) + (via (at 53.34 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683829)) + (via (at 53.34 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382B)) + (via (at 53.34 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68382D)) + (via (at 53.34 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C68382F)) + (via (at 50.8 25.4) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683831)) + (via (at 50.8 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683833)) + (via (at 50.8 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683835)) + (via (at 50.8 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683837)) + (via (at 50.8 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683839)) + (via (at 50.8 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383B)) + (via (at 50.8 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383D)) + (via (at 50.8 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68383F)) + (via (at 50.8 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683841)) + (via (at 50.8 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683843)) + (via (at 50.8 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683845)) + (via (at 50.8 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683847)) + (via (at 50.8 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683849)) + (via (at 50.8 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384B)) + (via (at 86.36 27.94) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384D)) + (via (at 86.36 30.48) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68384F)) + (via (at 86.36 33.02) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683851)) + (via (at 86.36 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683853)) + (via (at 86.36 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683855)) + (via (at 86.36 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683857)) + (via (at 86.36 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683859)) + (via (at 86.36 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385B)) + (via (at 86.36 48.26) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385D)) + (via (at 86.36 50.8) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68385F)) + (via (at 86.36 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683861)) + (via (at 86.36 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683863)) + (via (at 86.36 58.42) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683865)) + (via (at 86.36 60.96) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683867)) + (via (at 86.36 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683869)) + (via (at 127 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386B)) + (via (at 127 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386D)) + (via (at 127 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68386F)) + (via (at 127 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683871)) + (via (at 132.08 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683873)) + (via (at 132.08 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683875)) + (via (at 132.08 40.64) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683877)) + (via (at 132.08 38.1) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683879)) + (via (at 137.16 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387B)) + (via (at 137.16 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387D)) + (via (at 137.16 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68387F)) + (via (at 137.16 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683881)) + (via (at 137.16 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683885)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683887)) + (via (at 48.26 78.74) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C683889)) + (via (at 48.26 81.28) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388B)) + (via (at 48.26 83.82) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C68388D)) + (via (at 48.26 86.36) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 53.34 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 27.94) (end 53.34 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 30.48) (end 53.34 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 53.34 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 25.4) (end 58.42 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 25.4) (end 60.96 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 27.94) (end 58.42 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 27.94) (end 60.96 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 35.56) (end 53.34 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 38.1) (end 53.34 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 40.64) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 53.34 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 45.72) (end 53.34 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 48.26) (end 53.34 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 50.8) (end 53.34 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 53.34) (end 53.34 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 55.88) (end 53.34 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 58.42) (end 53.34 58.42) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 25.4) (end 50.8 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 48.26 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 48.26 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 30.48) (end 58.42 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 40.64) (end 60.96 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 30.48) (end 58.42 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 33.02) (end 73.66 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 33.02) (end 81.28 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 25.4) (end 127 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 25.4) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 129.54 38.1) (end 127 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 132.08 38.1) (end 129.54 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 40.64) (end 132.08 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 43.18) (end 132.08 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 45.72) (end 132.08 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 30.48) (end 73.66 30.48) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 73.66 30.48) (end 81.28 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 81.28 22.86) (end 139.7 22.86) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 22.86) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 27.94) (end 139.7 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 27.94) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 40.64) (end 127 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 33.02) (end 111.76 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 43.18) (end 127 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 35.56) (end 111.76 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 104.14 38.1) (end 111.76 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 45.72) (end 127 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 53.34) (end 96.52 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C6842EE)) + (via (at 48.26 76.2) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 139.7 73.66) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 50.8) (end 127 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 50.8) (end 99.06 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 96.52 53.34) (end 99.06 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 53.34) (end 127 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 99.06 55.88) (end 127 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 40.64) (end 66.04 68.58) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 38.1) (end 66.04 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 38.1) (end 63.5 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 45.72) (end 63.5 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 45.72) (end 63.5 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 48.26) (end 58.42 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 48.26) (end 55.88 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 45.72) (end 55.88 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 43.18) (end 53.34 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 50.8) (end 60.96 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 45.72) (end 58.42 50.8) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 38.1) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 43.18) (end 58.42 43.18) (width 0.5) (layer B.Cu) (net 0) (tstamp 5C684667)) + (via (at 58.42 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 58.42 63.5) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 63.5) (end 58.42 63.5) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 35.56) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 53.34 35.56) (end 55.88 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 55.88 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 55.88 53.34) (end 60.96 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 73.66 40.64) (end 71.12 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 43.18) (end 71.12 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 71.12 81.28) (end 68.58 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 38.1) (end 68.58 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 35.56) (end 68.58 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 78.74) (end 66.04 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 35.56) (end 66.04 35.56) (width 0.5) (layer B.Cu) (net 0)) + (via (at 53.34 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 83.82 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 53.34) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 55.88) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 76.2 71.12) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 76.2 53.34) (end 76.2 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 53.34 66.04) (end 53.34 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 86.36) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 66.04) (end 55.88 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 66.04) (end 55.88 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 73.66) (end 55.88 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 63.5 66.04) (end 60.96 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 60.96 68.58) (end 60.96 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 60.96 76.2) (end 58.42 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 68.58) (end 60.96 68.58) (width 0.5) (layer B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 88.9 45.72) (end 86.36 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 109.22 45.72) (end 111.76 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 111.76 48.26) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 48.26) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 139.7 38.1) (end 139.7 48.26) (width 0.5) (layer B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 91.44 45.72) (end 91.44 43.18) (width 0.5) (layer B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 99.06 43.18) (end 95.25 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 95.25 43.18) (end 93.98 44.45) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 93.98 44.45) (end 93.98 45.72) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 50.8) (end 76.2 52.07) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 52.07) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 43.18) (end 109.22 45.72) (width 0.5) (layer B.Cu) (net 0)) + (via (at 76.2 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 49.53) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 106.68 45.72) (end 106.68 49.53) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 76.2 49.53) (end 76.2 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 55.88) (end 86.36 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 55.88) (end 99.06 55.88) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 83.82 53.34) (end 86.36 53.34) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 40.64) (end 73.66 40.64) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 38.1) (end 104.14 38.1) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 35.56) (end 104.14 35.56) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 86.36 33.02) (end 104.14 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 86.36) (end 139.7 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 83.82) (end 137.16 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 81.28) (end 137.16 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 127 78.74) (end 137.16 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 76.2) (end 139.7 76.2) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 73.66) (end 139.7 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 86.36) (end 137.16 86.36) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 68.58 83.82) (end 48.26 83.82) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 66.04 81.28) (end 48.26 81.28) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 58.42 78.74) (end 48.26 78.74) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 55.88 76.2) (end 48.26 76.2) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7556)) + (via (at 48.26 73.66) (size 2) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7558)) + (via (at 48.26 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755A)) + (via (at 48.26 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755C)) + (via (at 48.26 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B755E)) + (via (at 48.26 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7560)) + (via (at 48.26 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 73.66) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7562)) + (via (at 137.16 73.66) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 76.2) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7564)) + (via (at 137.16 76.2) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 78.74) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7566)) + (via (at 137.16 78.74) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 81.28) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7568)) + (via (at 137.16 81.28) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 83.82) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756A)) + (via (at 137.16 83.82) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 86.36) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756C)) + (via (at 137.16 86.36) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B756E)) + (via (at 132.08 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7570)) + (via (at 132.08 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7572)) + (via (at 132.08 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 132.08 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7574)) + (via (at 132.08 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7576)) + (via (at 127 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7578)) + (via (at 127 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757A)) + (via (at 127 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 127 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757C)) + (via (at 127 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B757E)) + (via (at 86.36 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7580)) + (via (at 86.36 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7582)) + (via (at 86.36 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7584)) + (via (at 86.36 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7586)) + (via (at 86.36 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7588)) + (via (at 86.36 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758A)) + (via (at 86.36 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758C)) + (via (at 86.36 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B758E)) + (via (at 86.36 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7590)) + (via (at 86.36 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7592)) + (via (at 86.36 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7594)) + (via (at 86.36 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7596)) + (via (at 86.36 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7598)) + (via (at 86.36 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 86.36 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759A)) + (via (at 86.36 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759C)) + (via (at 60.96 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B759E)) + (via (at 60.96 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A0)) + (via (at 60.96 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A2)) + (via (at 60.96 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A4)) + (via (at 60.96 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A6)) + (via (at 60.96 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75A8)) + (via (at 60.96 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AA)) + (via (at 60.96 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AC)) + (via (at 60.96 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75AE)) + (via (at 60.96 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B0)) + (via (at 60.96 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B2)) + (via (at 60.96 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B4)) + (via (at 60.96 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 60.96) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B6)) + (via (at 60.96 60.96) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 63.5) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75B8)) + (via (at 60.96 63.5) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 25.4) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BA)) + (via (at 53.34 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BC)) + (via (at 53.34 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75BE)) + (via (at 53.34 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C0)) + (via (at 53.34 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C2)) + (via (at 53.34 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C4)) + (via (at 53.34 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C6)) + (via (at 53.34 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75C8)) + (via (at 53.34 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CA)) + (via (at 53.34 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CC)) + (via (at 53.34 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75CE)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D0)) + (via (at 53.34 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D2)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D4)) + (via (at 53.34 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D6)) + (via (at 50.8 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 55.88) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75D8)) + (via (at 50.8 55.88) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 58.42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DA)) + (via (at 53.34 58.42) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 53.34) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DC)) + (via (at 50.8 53.34) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 50.8) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75DE)) + (via (at 50.8 50.8) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 48.26) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E0)) + (via (at 50.8 48.26) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 45.72) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E2)) + (via (at 50.8 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 43.18) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E4)) + (via (at 50.8 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 40.64) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E6)) + (via (at 50.8 40.64) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 38.1) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75E8)) + (via (at 50.8 38.1) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 35.56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EA)) + (via (at 50.8 35.56) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 33.02) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EC)) + (via (at 50.8 33.02) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 30.48) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75EE)) + (via (at 50.8 30.48) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 50.8 27.94) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F0)) + (via (at 50.8 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 50.8 25.4) (width 0.25) (layer B.Cu) (net 0) (tstamp 5C7B75F2)) + (via (at 50.8 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 88.9 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F4)) + (via (at 88.9 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F6)) + (via (at 91.44 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 91.44 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75F8)) + (via (at 91.44 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FA)) + (via (at 99.06 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 43.18) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FC)) + (via (at 106.68 43.18) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 93.98 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B75FE)) + (via (at 93.98 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 96.52 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7600)) + (via (at 96.52 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 99.06 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7602)) + (via (at 99.06 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 106.68 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7604)) + (via (at 106.68 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 109.22 45.72) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7606)) + (via (at 109.22 45.72) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B7608)) + (via (at 60.96 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 60.96 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760A)) + (via (at 60.96 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 68.58) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760C)) + (via (at 53.34 68.58) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 53.34 66.04) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5C7B760E)) + (via (at 53.34 66.04) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 119.38) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 121.92) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 124.46) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 127) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 129.54) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 132.08) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 119.38) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 121.92) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 124.46) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 127) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 129.54) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 137.16 132.08) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 48.26 119.38) (end 48.26 132.08) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 137.16 119.38) (end 137.16 132.08) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 45.72 25.4) (end 45.72 71.12) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 45.72 71.12) (end 48.26 73.66) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 25.4) (end 45.72 25.4) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 33.02) (end 45.72 33.02) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 50.8 43.18) (end 45.72 43.18) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 48.26 66.04) (end 45.72 66.04) (width 0.5) (layer B.Cu) (net 0)) + (segment (start 45.72 66.04) (end 53.34 66.04) (width 0.5) (layer B.Cu) (net 0)) + (via (at 48.26 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (via (at 48.26 27.94) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0)) + (segment (start 48.26 27.94) (end 50.8 27.94) (width 0.5) (layer B.Cu) (net 0)) + +) diff --git a/MCUME_esp32/pinout.txt b/MCUME_esp32/pinout.txt new file mode 100644 index 0000000..6432831 --- /dev/null +++ b/MCUME_esp32/pinout.txt @@ -0,0 +1,30 @@ +pinout ESP32s board (2x15 pins) GPIO# +------------------------------- + (NC) EN X 23 ILI SDI+T_DIN-SPI MOSI + Key USER4 36 22 (NC) + Key USER3 39 01 (NC) + Key USER2 34 X 03 (NC) + Key USER1 35 X X 21 ILI DC + JOY2 Fire 32 X X 19 ILI SDO+T_DO-SPI MISO + (NC) 33 X 18 ILI SCK+T_CLK-SPI SCK + AUDIO DAC1 25 O O 05 I2C SCL + (NC) 26 X 17 ILI CS-SPI CS + JOY2 AnalogX 27 X 16 (NC) + SD SCK-SPI CLK 14 X O 04 I2C SDA + SD MISO-SPI MISO 12 X X 02 JOY2 AnalogY + SD MOSI-SPI MISO 13 X X 15 SD CS-SPI CS + GND X GND + Vin IUSBI X 3.3v + + + +(X) mandatory pins to connect for the minimum set-up +(O) optional connections for audio and I2C keyboard support + +The keys (all) are using internal pullup so just connect the other side to the GND +I2C SDA,SCL, USER1 and USER2 requires external pullup. +The Analog joypad also needs VCC and GND connections ! +The Display part of the ILI: SDI,SDO,SCK,CS but also DC,VCC and GND must be connected +The i2ckeyboard : I2C SCL, I2C SDA, VCC and GND + +Everything is powered over the USB connector of the ESP32! \ No newline at end of file diff --git a/MCUME_teensy/.DS_Store b/MCUME_teensy/.DS_Store new file mode 100644 index 0000000..e04ebeb Binary files /dev/null and b/MCUME_teensy/.DS_Store differ diff --git a/MCUME_teensy/README.md b/MCUME_teensy/README.md new file mode 100644 index 0000000..6d179df --- /dev/null +++ b/MCUME_teensy/README.md @@ -0,0 +1,4 @@ +# M.CU.M.E = Multi CompUter Machine Emulator +

+ +

diff --git a/MCUME_teensy/pinout.txt b/MCUME_teensy/pinout.txt new file mode 100644 index 0000000..ba1c553 --- /dev/null +++ b/MCUME_teensy/pinout.txt @@ -0,0 +1,53 @@ +Teensy 4.0 (2x14 pins) or Teensy 3.6 (2x24 pins inc bottom part) +---------------------------------------------------------------- + + GND X VIn (NC) + (NC) 00 Ang (NC) + (NC) 01 X 3.3v + VGA Blue (OPT2) 02 X 23 DISPLAY - CS (also RST for ST7789!) + Key USER1 (OPT1) 03 X 22 VGA Hsync (OPT2) + Key USER2 (OPT1) 04 X 21 VGA Red (OPT2) + VGA Red (OPT2) 05 20 VGA Red (OPT2) + VGA Green (OPT2) 06 19 I2C CLK (OPT1) + VGA Green (OPT2) 07 18 I2C DAT (OPT1) + VGA Green (OPT2) 08 X 17 JOY2 Fire + DISPLAY - DC 09 X X 16 JOY2 AnalogY-A2 + Audio MSQL for T4 (OPT0) 10 X 15 JOY2 AnalogX-A1 + DISPLAY - MOSI 11 X 14 VGA Blue (OPT2) + MISO (Touch) for T3.6 (OPT2) 12 X 13 DISPLAY - SCK + + + + (NC) 3.3v GND + (NC) 24 DAC1 Audio R for T3.6 (OPT0) + (NC) 25 DAC0 Audio L for T3.6 (OPT0) + (NC) 26 39 Key USER4 (OPT1) + (NC) 27 38 T_CS (Touch) for T3.6 (OPT2) + (NC) 28 37 T_IRQ (Touch) for T3.6 (OPT2) + VGA Vsync (OPT2) 29 36 + 30 35 + 31 34 + 32 33 Key USER3 (OPT1) + + +Display: ILI9341/ST7789 (SPI connected, MISO not connected) +Storage: SD build-in (external SD requires extra CS) + +(X) mandatory pins to connect for the minimum set-up +(OPT0) audio output +(OPT1) keys required to play 'better' as for e.g. computer (I2C keyboard, 2 extra joystick buttons) +(OPT2) for VGA output and ILI touch screen (for T3.6 only). ILI touch on same SPI as DISPLAY + + +The keys (all) are using internal pull-up so just connect the other side to the GND +The Analog joypad also needs VCC and GND connections ! +The Touch (OPT) part of the ILI: T_DIN,T_DO,T_CLK,T_CS (SPI) but also T_IRQ must be connected +The Display pins: SDI,SCK,CS but also DC,VCC and GND must be connected +The i2ckeyboard : I2C CLK, I2C DAT, VCC and GND + +Everything is powered over the USB connector of the Teensy! + + +======= !!!!! Please select display type in "tft_t_dma_config.h" and verify IO config in "iopins.h" !!!!! ======= + + diff --git a/MCUME_teensy/teensy5200/.DS_Store b/MCUME_teensy/teensy5200/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensy5200/.DS_Store differ diff --git a/MCUME_teensy/teensy5200/AudioPlaySystem.cpp b/MCUME_teensy/teensy5200/AudioPlaySystem.cpp new file mode 100644 index 0000000..e6b82e1 --- /dev/null +++ b/MCUME_teensy/teensy5200/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void POKEYSND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + POKEYSND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensy5200/AudioPlaySystem.h b/MCUME_teensy/teensy5200/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensy5200/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensy5200/antic.c b/MCUME_teensy/teensy5200/antic.c new file mode 100644 index 0000000..26f1392 --- /dev/null +++ b/MCUME_teensy/teensy5200/antic.c @@ -0,0 +1,4151 @@ +/* + * antic.c - ANTIC chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include + +#include "antic.h" +#include "cpu.h" +#include "gtia.h" +#include "memory.h" +#include "pokey.h" + +#ifdef NEW_CYCLE_EXACT +#include "cycle_map.h" +#endif + + +UWORD Screen_atari[ATARI_WIDTH / 2]; // = NULL; +#define scrn_line 0 //(ATARI_WIDTH / 2) + +#define DRAWLINE() \ + if ( (ANTIC_ypos > 8) && (ANTIC_ypos < 248)) { \ + emu_DrawLine((unsigned char *)&Screen_atari[32/sizeof(Screen_atari[0])], 320, 240, ANTIC_ypos-8); \ + } + + +#define LCHOP 3 /* do not build leftmost 0..3 characters in wide mode */ +#define RCHOP 3 /* do not build rightmost 0..3 characters in wide mode */ + +int ANTIC_break_ypos = 999; +#if !defined(BASIC) && !defined(CURSES_BASIC) +static int gtia_bug_active = FALSE; /* The GTIA bug mode is active */ +#endif +#ifdef NEW_CYCLE_EXACT +static void draw_partial_scanline(int l,int r); +static void update_scanline_chbase(void); +static void update_scanline_invert(void); +static void update_scanline_blank(void); +const int *ANTIC_cpu2antic_ptr; +const int *ANTIC_antic2cpu_ptr; +int ANTIC_delayed_wsync = 0; +static int dmactl_changed = 0; +static UBYTE delayed_DMACTL; +static int draw_antic_ptr_changed = 0; +static UBYTE need_load; +static int dmactl_bug_chdata; +#endif /* NEW_CYCLE_EXACT */ +#ifndef NO_SIMPLE_PAL_BLENDING +int ANTIC_pal_blending = 0; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* Video memory access is hidden behind these macros. It allows to track dirty video memory + to improve video system performance */ +#ifdef DIRTYRECT + +static UWORD *scratchUWordPtr; +static UWORD scratchUWord; +static ULONG *scratchULongPtr; +static ULONG scratchULong; +static UBYTE *scratchUBytePtr; +static UBYTE scratchUByte; + + +#ifdef NODIRTYCOMPARE + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = (val); \ + } while (0) +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = (val); \ + } while (0) +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = (val); \ + } while (0) +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE*) (ptr); \ + scratchULong = (ULONG) (size); \ + memset(Screen_dirty + (((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3), 1, scratchULong >> 3); \ + memset(scratchUBytePtr, (val), scratchULong); \ + } while (0) + +#else /* NODIRTYCOMPARE not defined: */ + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + scratchUWord = (val); \ + if (*scratchUWordPtr != scratchUWord) { \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = scratchUWord; \ + } \ + } while (0) +#ifndef WORDS_UNALIGNED_OK +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#else +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari + 2) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#endif +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + scratchUByte = (val); \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } while (0) +static UBYTE *scratchFillLimit; +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE *) (ptr); \ + scratchUByte = (UBYTE) (val); \ + scratchFillLimit = scratchUBytePtr + (size); \ + for (; scratchUBytePtr < scratchFillLimit; scratchUBytePtr++) { \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } \ + } while (0) + +#endif /* NODIRTYCOMPARE */ + +#else /* DIRTYRECT not defined: */ + +#define WRITE_VIDEO(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_LONG(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_BYTE(ptr, val) (*(ptr) = val) +#define FILL_VIDEO(ptr, val, size) memset(ptr, val, size) + +#endif /* DIRTYRECT */ + +#define READ_VIDEO_LONG(ptr) (*(ptr)) + +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size) +{ + FILL_VIDEO(ptr, val, size); +} + +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val) +{ + WRITE_VIDEO_BYTE(ptr, val); +} + + +/* Memory access helpers----------------------------------------------------- */ +/* Some optimizations result in unaligned 32-bit accesses. These macros have + been introduced for machines that don't allow unaligned memory accesses. */ + +#ifdef DIRTYRECT +/* STAT_UNALIGNED_WORDS doesn't work with DIRTYRECT */ +#define WRITE_VIDEO_LONG_UNALIGNED WRITE_VIDEO_LONG +#else +#define WRITE_VIDEO_LONG_UNALIGNED(ptr, val) UNALIGNED_PUT_LONG((ptr), (val), Screen_atari_write_long_stat) +#endif + +#ifdef WORDS_UNALIGNED_OK +#define IS_ZERO_ULONG(x) (! UNALIGNED_GET_LONG(x, pm_scanline_read_long_stat)) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p), (l)[(x) >> 4]); \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p) + 1, (l)[(x) & 0xf]); \ + } +#else /* WORDS_UNALIGNED_OK */ +#define IS_ZERO_ULONG(x) (!((const UBYTE *)(x))[0] && !((const UBYTE *)(x))[1] && !((const UBYTE *)(x))[2] && !((const UBYTE *)(x))[3]) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO((UWORD *) (p), (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 1, (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 2, (UWORD) ((l)[(x) & 0xf])); \ + WRITE_VIDEO((UWORD *) (p) + 3, (UWORD) ((l)[(x) & 0xf])); \ + } +#endif /* WORDS_UNALIGNED_OK */ + +/* ANTIC Registers --------------------------------------------------------- */ + +UBYTE ANTIC_DMACTL; +UBYTE ANTIC_CHACTL; +UWORD ANTIC_dlist; +UBYTE ANTIC_HSCROL; +UBYTE ANTIC_VSCROL; +UBYTE ANTIC_PMBASE; +UBYTE ANTIC_CHBASE; +UBYTE ANTIC_NMIEN; +UBYTE ANTIC_NMIST; + +/* ANTIC Memory ------------------------------------------------------------ */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) +static UBYTE antic_memory[52]; +#define ANTIC_margin 4 +/* It's number of bytes in antic_memory, which are never loaded, but may be + read in wide playfield mode. These bytes are uninitialized, because on + real computer there's some kind of 'garbage'. Possibly 1 is enough, but + 4 bytes surely won't cause negative indexes. :) */ + +/* Screen ----------------------------------------------------------------- + Define screen as ULONG to ensure that it is Longword aligned. + This allows special optimisations under certain conditions. + ------------------------------------------------------------------------ */ + +static UWORD *scrn_ptr; +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Separate access to XE extended memory ----------------------------------- */ +/* It's available in 130 XE and 320 KB Compy Shop. + Note: during ANTIC access to extended memory in Compy Shop Self Test + is disabled. It is unknown if this is true for real 130 XE. If not, + then some extra code has to be added to: + - check if selftest_enabled is set + - check if the address is in range 0x5000..0x57ff + - if both conditions are true, then access memory instead of ANTIC_xe_ptr */ + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in MEMORY_mem[0x4000..0x7fff], + then NULL. */ +const UBYTE *ANTIC_xe_ptr = NULL; + +/* ANTIC Timing -------------------------------------------------------------- + +NOTE: this information was written before NEW_CYCLE_EXACT was introduced! + +I've introduced global variable ANTIC_xpos, which contains current number of cycle +in a line. This simplifies ANTIC/CPU timing much. The CPU_GO() function which +emulates CPU is now void and is called with ANTIC_xpos limit, below which CPU can go. + +All strange variables holding 'unused cycles', 'DMA cycles', 'allocated cycles' +etc. are removed. Simply whenever ANTIC fetches a byte, it takes single cycle, +which can be done now with ANTIC_xpos++. There's only one exception: in text modes +2-5 ANTIC takes more bytes than cycles, because it does less than ANTIC_DMAR refresh +cycles. + +Now emulation is really screenline-oriented. We do ANTIC_ypos++ after a line, +not inside it. + +This simplified diagram shows when what is done in a line: + +MDPPPPDD..............(------R/S/F------).......... +^ ^ ^ ^ ^ ^ ^ ^ ---> time/xpos +0 | NMIST_C NMI_C SCR_C WSYNC_C|LINE_C +VSCON_C VSCOF_C + +M - fetch Missiles +D - fetch DL +P - fetch Players +S - fetch Screen +F - fetch Font (in text modes) +R - refresh Memory (ANTIC_DMAR cycles) + +Only Memory Refresh happens in every line, other tasks are optional. + +Below are exact diagrams for some non-scrolled modes: + 11111111111111 + 11111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111 +012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 + /--------------------------narrow------------------------------\ + /----------------------------------normal--------------------------------------\ + /-------------------------------------------wide--------------------------------------------\ + +blank line: +MDPPPPDD.................R...R...R...R...R...R...R...R...R........................................................ + +mode 8,9: +MDPPPPDD....S.......S....R..SR...R..SR...R..SR...R..SR...R..S.......S.......S.......S.......S.......S............. + +mode a,b,c: +MDPPPPDD....S...S...S...SR..SR..SR..SR..SR..SR..SR..SR..SR..S...S...S...S...S...S...S...S...S...S...S...S......... + +mode d,e,f: +MDPPPPDD....S.S.S.S.S.S.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S......... + +Notes: +* At the beginning of a line fetched are: + - a byte of Missiles + - a byte of DL (instruction) + - four bytes of Players + - two bytes of DL argument (jump or screen address) + The emulator, however, fetches them all continuously. + +* Refresh cycles and Screen/Font fetches have been tested for some modes (see above). + This is for making the emulator more accurate, able to change colour registers, + sprite positions or GTIA modes during scanline. These modes are the most commonly used + with those effects. + Currently this isn't implemented, and all R/S/F cycles are fetched continuously in *all* modes + (however, right number of cycles is taken in every mode, basing on screen width and HSCROL). + +There are a few constants representing following events: + +* VSCON_C - in first VSC line dctr is loaded with VSCROL + +* ANTIC_NMIST_C - NMIST is updated (set to 0x9f on DLI, set to 0x5f on VBLKI) + +* ANTIC_NMI_C - If NMIEN permits, NMI interrupt is generated + +* SCR_C - We draw whole line of screen. On a real computer you can change + ANTIC/GTIA registers while displaying screen, however this emulator + isn't that accurate. + +* ANTIC_WSYNC_C - ANTIC holds CPU until this moment, when WSYNC is written + +* VSCOF_C - in last VSC line dctr is compared with VSCROL + +* ANTIC_LINE_C - simply end of line (this used to be called CPUL) + +All constants are determined by tests on real Atari computer. It is assumed, +that ANTIC registers are read with LDA, LDX, LDY and written with STA, STX, +STY, all in absolute addressing mode. All these instructions last 4 cycles +and perform read/write operation in last cycle. The CPU emulation should +correctly emulate WSYNC and add cycles for current instruction BEFORE +executing it. That's why VSCOF_C > ANTIC_LINE_C is correct. + +How WSYNC is now implemented: + +* On writing WSYNC: + - if ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C, + we only change ANTIC_xpos to ANTIC_WSYNC_C - that's all + - otherwise we set ANTIC_wsync_halt and change ANTIC_xpos to ANTIC_xpos_limit causing CPU_GO() + to return + +* At the beginning of CPU_GO() (CPU emulation), when ANTIC_wsync_halt is set: + - if ANTIC_xpos_limit < ANTIC_WSYNC_C we return + - else we set ANTIC_xpos to ANTIC_WSYNC_C, reset ANTIC_wsync_halt and emulate some cycles + +We don't emulate ANTIC_NMIST_C, ANTIC_NMI_C and SCR_C if it is unnecessary. +These are all cases: + +* Common overscreen line + Nothing happens except that ANTIC gets ANTIC_DMAR cycles: + ANTIC_xpos += ANTIC_DMAR; GOEOL; + +* First overscreen line - start of vertical blank + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x5f + if (ANTIC_NMIEN & 0x40) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - ANTIC gets ANTIC_DMAR cycles + - CPU goes until ANTIC_LINE_C + +* Screen line without DLI + - ANTIC fetches DL and P/MG + - CPU goes until SCR_C + - ANTIC draws whole line fetching Screen/Font and refreshing memory + - CPU goes until ANTIC_LINE_C + +* Screen line with DLI + - ANTIC fetches DL and P/MG + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x9f + if (ANTIC_NMIEN & 0x80) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - CPU goes until SCR_C + - ANTIC draws line with ANTIC_DMAR + - CPU goes until ANTIC_LINE_C + + -------------------------------------------------------------------------- */ + +#define VSCON_C 1 +#define SCR_C 28 +#define VSCOF_C 112 + +unsigned int ANTIC_screenline_cpu_clock = 0; + +#ifdef NEW_CYCLE_EXACT +#define UPDATE_DMACTL do{if (dmactl_changed) { \ + dmactl_changed = 0; \ + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, delayed_DMACTL); \ + } \ + if (draw_antic_ptr_changed) { \ + draw_antic_ptr_changed = 0; \ + draw_antic_ptr = saved_draw_antic_ptr; \ + }}while(0) +#else +#define UPDATE_DMACTL do{}while(0) +#endif /* NEW_CYCLE_EXACT */ +#define UPDATE_GTIA_BUG /* update GTIA if it was in bug mode */\ + do{if(gtia_bug_active) {\ + /* restore draw_antic_ptr for multi-line modes*/\ + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode];\ + gtia_bug_active = FALSE;\ + }}while(0) +#define GOEOL_CYCLE_EXACT CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_LINE_C]); \ + ANTIC_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; \ + ANTIC_xpos -= ANTIC_LINE_C; \ + ANTIC_screenline_cpu_clock += ANTIC_LINE_C; \ + DRAWLINE();ANTIC_ypos++; \ + GTIA_UpdatePmplColls(); +#define GOEOL CPU_GO(ANTIC_LINE_C); ANTIC_xpos -= ANTIC_LINE_C; ANTIC_screenline_cpu_clock += ANTIC_LINE_C; UPDATE_DMACTL; DRAWLINE();ANTIC_ypos++; UPDATE_GTIA_BUG +#define OVERSCREEN_LINE ANTIC_xpos += ANTIC_DMAR; GOEOL + +int ANTIC_xpos = 0; +int ANTIC_xpos_limit; +int ANTIC_wsync_halt = FALSE; + +int ANTIC_ypos; /* Line number - lines 8..247 are on screen */ + +/* Timing in first line of modes 2-5 +In these modes ANTIC takes more bytes than cycles. Despite this, it would be +possible that SCR_C + cycles_taken > ANTIC_WSYNC_C. To avoid this we must take some +cycles before SCR_C. before_cycles contains number of them, while extra_cycles +contains difference between bytes taken and cycles taken plus before_cycles. */ + +#define BEFORE_CYCLES (SCR_C - 28) +/* It's number of cycles taken before SCR_C for not scrolled, narrow playfield. + It wasn't tested, but should be ok. ;) */ + +/* Light pen support ------------------------------------------------------- */ + +static UBYTE PENH; +static UBYTE PENV; +UBYTE ANTIC_PENH_input = 0x00; +UBYTE ANTIC_PENV_input = 0xff; + +#ifndef BASIC + +/* Internal ANTIC registers ------------------------------------------------ */ + +static UWORD screenaddr; /* Screen Pointer */ +static UBYTE IR; /* Instruction Register */ +static UBYTE anticmode; /* Antic mode */ +static UBYTE dctr; /* Delta Counter */ +static UBYTE lastline; /* dctr limit */ +static UBYTE need_dl; /* boolean: fetch DL next line */ +static UBYTE vscrol_off; /* boolean: displaying line ending VSC */ + +#endif + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Pre-computed values for improved performance ---------------------------- */ + +#define NORMAL0 0 /* modes 2,3,4,5,0xd,0xe,0xf */ +#define NORMAL1 1 /* modes 6,7,0xa,0xb,0xc */ +#define NORMAL2 2 /* modes 8,9 */ +#define SCROLL0 3 /* modes 2,3,4,5,0xd,0xe,0xf with HSC */ +#define SCROLL1 4 /* modes 6,7,0xa,0xb,0xc with HSC */ +#define SCROLL2 5 /* modes 8,9 with HSC */ +static int md; /* current mode NORMAL0..SCROLL2 */ +/* tables for modes NORMAL0..SCROLL2 */ +static int chars_read[6]; +static int chars_displayed[6]; +static int x_min[6]; +static int ch_offset[6]; +static int load_cycles[6]; +static int font_cycles[6]; +static int before_cycles[6]; +static int extra_cycles[6]; + +/* border parameters for current display width */ +static int left_border_chars; +static int right_border_start; +#ifdef NEW_CYCLE_EXACT +static int left_border_start = LCHOP * 4; +static int right_border_end = (48 - RCHOP) * 4; +#define LBORDER_START left_border_start +#define RBORDER_END right_border_end +#else +#define LBORDER_START (LCHOP * 4) +#define RBORDER_END ((48 - RCHOP) * 4) +#endif /* NEW_CYCLE_EXACT */ + +/* set with CHBASE *and* CHACTL - bits 0..2 set if flip on */ +static UWORD chbase_20; /* CHBASE for 20 character mode */ + +/* set with CHACTL */ +static UBYTE invert_mask; +static int blank_mask; + +/* A scanline of AN0 and AN1 signals as transmitted from ANTIC to GTIA. + In every byte, bit 0 is AN0 and bit 1 is AN1 */ +static UBYTE an_scanline[ATARI_WIDTH / 2 + 8]; + +/* lookup tables */ +static UBYTE blank_lookup[256]; +static UWORD lookup2[256]; +ULONG ANTIC_lookup_gtia9[16]; +ULONG ANTIC_lookup_gtia11[16]; +static UBYTE playfield_lookup[257]; +static UBYTE mode_e_an_lookup[256]; + +/* Colour lookup table + This single table replaces 4 previously used: cl_word, cur_prior, + prior_table and pf_colls. It should be treated as a two-dimensional table, + with playfield colours in rows and PMG colours in columns: + no_PMG PM0 PM1 PM01 PM2 PM3 PM23 PM023 PM123 PM0123 PM25 PM35 PM235 colls ... ... + BAK + ... + HI2 + HI3 + PF0 + PF1 + PF2 + PF3 + The table contains word value (lsb = msb) of colour to be drawn. + The table is being updated taking current PRIOR setting into consideration. + '...' represent two unused columns and single unused row. + HI2 and HI3 are used only if colour_translation_table is being used. + They're colours of hi-res pixels on PF2 and PF3 respectively (PF2 is + default background for hi-res, PF3 is PM5). + Columns PM023, PM123 and PM0123 are used when PRIOR & 0xf equals any + of 5,7,0xc,0xd,0xe,0xf. The columns represent PM0, PM1 and PM01 respectively + covered by PM2 and/or PM3. This is to handle black colour on PF2 and PF3. + Columns PM25, PM35 and PM235 are used when PRIOR & 0x1f equals any + of 0x10,0x1a,0x1c,0x1e. The columns represent PM2, PM3 and PM23 + respectively covered by PM5. This to handle colour on PF0 and PF1: + PF3 if (PRIOR & 0x1f) == 0x10, PF0 or PF1 otherwise. + Additional column 'colls' holds collisions of playfields with PMG. */ + +UWORD ANTIC_cl[128]; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 +#define C_BLACK (C_PF3 | C_PM25) + +/* these are byte-offsets in the table, so left shift for indexing word table + has been avoided */ +#define COLOUR(x) (*(UWORD *) ((UBYTE *) ANTIC_cl + (x) )) +#define L_PM0 (2 * C_PM0) +#define L_PM1 (2 * C_PM1) +#define L_PM01 (2 * C_PM01) +#define L_PM2 (2 * C_PM2) +#define L_PM3 (2 * C_PM3) +#define L_PM23 (2 * C_PM23) +#define L_PM023 (2 * C_PM023) +#define L_PM123 (2 * C_PM123) +#define L_PM0123 (2 * C_PM0123) +#define L_PM25 (2 * C_PM25) +#define L_PM35 (2 * C_PM35) +#define L_PM235 (2 * C_PM235) +#define L_COLLS (2 * C_COLLS) +#define L_BAK (2 * C_BAK) +#define L_HI2 (2 * C_HI2) +#define L_HI3 (2 * C_HI3) +#define L_PF0 (2 * C_PF0) +#define L_PF1 (2 * C_PF1) +#define L_PF2 (2 * C_PF2) +#define L_PF3 (2 * C_PF3) +#define L_BLACK (2 * C_BLACK) + +/* Blank areas optimizations + Routines for most graphics modes take advantage of fact, that often + large areas of screen are background colour. If it is possible, 8 pixels + of background are drawn at once - with two longs or four words, if + the platform doesn't allow unaligned long access. + Artifacting also uses unaligned long access if it's supported. */ + +#ifdef WORDS_UNALIGNED_OK + +#define INIT_BACKGROUND_6 ULONG background = ANTIC_cl[C_PF2] | (((ULONG) ANTIC_cl[C_PF2]) << 16); +#define INIT_BACKGROUND_8 ULONG background = ANTIC_lookup_gtia9[0]; +#define DRAW_BACKGROUND(colreg) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, background); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, background); \ + ptr += 4; \ + } +#define DRAW_ARTIF { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, art_curtable[(UBYTE) (screendata_tally >> 10)]); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, art_curtable[(UBYTE) (screendata_tally >> 6)]); \ + ptr += 4; \ + } + +#else + +#define INIT_BACKGROUND_6 +#define INIT_BACKGROUND_8 +#define DRAW_BACKGROUND(colreg) {\ + WRITE_VIDEO(ptr, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 1, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 2, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 3, ANTIC_cl[colreg]); \ + ptr += 4;\ + } +#define DRAW_ARTIF {\ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x03fc00) >> 9]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x03fc00) >> 9) + 1]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x003fc0) >> 5]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x003fc0) >> 5) + 1]); \ + } + +#endif /* WORDS_UNALIGNED_OK */ + +#define DRAW_ARTIF_NEW {\ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x03f000) >> 12]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x00fc00) >> 10]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x003f00) >> 8]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x000fc0) >> 6]); \ + } + +/* Hi-res modes optimizations + Now hi-res modes are drawn with words, not bytes. Endianess defaults + to little-endian. WORDS_BIGENDIAN should be defined when compiling on + a big-endian machine. */ + +#ifdef WORDS_BIGENDIAN +#define BYTE0_MASK 0xff00 +#define BYTE1_MASK 0x00ff +#define HIRES_MASK_01 0xfff0 +#define HIRES_MASK_10 0xf0ff +#define HIRES_LUM_01 0x000f +#define HIRES_LUM_10 0x0f00 +#else +#define BYTE0_MASK 0x00ff +#define BYTE1_MASK 0xff00 +#define HIRES_MASK_01 0xf0ff +#define HIRES_MASK_10 0xfff0 +#define HIRES_LUM_01 0x0f00 +#define HIRES_LUM_10 0x000f +#endif + +static UWORD hires_lookup_n[128]; +static UWORD hires_lookup_m[128]; +#define hires_norm(x) hires_lookup_n[(x) >> 1] +#define hires_mask(x) hires_lookup_m[(x) >> 1] + +#ifndef USE_COLOUR_TRANSLATION_TABLE +int ANTIC_artif_new = FALSE; /* New type of artifacting */ +UWORD ANTIC_hires_lookup_l[128]; /* accessed in gtia.c */ +#define hires_lum(x) ANTIC_hires_lookup_l[(x) >> 1] +#endif + +/* Player/Missile Graphics ------------------------------------------------- */ + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) +#define PF_COLLS(x) (((UBYTE *) &ANTIC_cl)[(x) + L_COLLS]) + +static int singleline; +int ANTIC_player_dma_enabled; +int ANTIC_player_gra_enabled; +int ANTIC_missile_dma_enabled; +int ANTIC_missile_gra_enabled; +int ANTIC_player_flickering; +int ANTIC_missile_flickering; + +static UWORD pmbase_s; +static UWORD pmbase_d; + +/* PMG lookup tables */ +static UBYTE pm_lookup_table[20][256]; +/* current PMG lookup table */ +static const UBYTE *pm_lookup_ptr; + +#define PL_00 0 /* 0x00,0x01,0x02,0x03,0x04,0x06,0x08,0x09,0x0a,0x0b */ +#define PL_05 1 /* 0x05,0x07,0x0c,0x0d,0x0e,0x0f */ +#define PL_10 2 /* 0x10,0x1a */ +#define PL_11 3 /* 0x11,0x18,0x19 */ +#define PL_12 4 /* 0x12 */ +#define PL_13 5 /* 0x13,0x1b */ +#define PL_14 6 /* 0x14,0x16 */ +#define PL_15 7 /* 0x15,0x17,0x1d,0x1f */ +#define PL_1c 8 /* 0x1c */ +#define PL_1e 9 /* 0x1e */ +#define PL_20 10 /* 0x20,0x21,0x22,0x23,0x24,0x26,0x28,0x29,0x2a,0x2b */ +#define PL_25 11 /* 0x25,0x27,0x2c,0x2d,0x2e,0x2f */ +#define PL_30 12 /* 0x30,0x3a */ +#define PL_31 13 /* 0x31,0x38,0x39 */ +#define PL_32 14 /* 0x32 */ +#define PL_33 15 /* 0x33,0x3b */ +#define PL_34 16 /* 0x34,0x36 */ +#define PL_35 17 /* 0x35,0x37,0x3d,0x3f */ +#define PL_3c 18 /* 0x3c */ +#define PL_3e 19 /* 0x3e */ + +static const UBYTE prior_to_pm_lookup[64] = { + PL_00, PL_00, PL_00, PL_00, PL_00, PL_05, PL_00, PL_05, + PL_00, PL_00, PL_00, PL_00, PL_05, PL_05, PL_05, PL_05, + PL_10, PL_11, PL_12, PL_13, PL_14, PL_15, PL_14, PL_15, + PL_11, PL_11, PL_10, PL_13, PL_1c, PL_15, PL_1e, PL_15, + PL_20, PL_20, PL_20, PL_20, PL_20, PL_25, PL_20, PL_25, + PL_20, PL_20, PL_20, PL_20, PL_25, PL_25, PL_25, PL_25, + PL_30, PL_31, PL_32, PL_33, PL_34, PL_35, PL_34, PL_35, + PL_31, PL_31, PL_30, PL_33, PL_3c, PL_35, PL_3e, PL_35 +}; + +static void init_pm_lookup(void) +{ + static const UBYTE pm_lookup_template[10][16] = { + /* PL_20 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_25 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM023, L_PM123, L_PM0123, + L_PM3, L_PM023, L_PM123, L_PM0123, L_PM23, L_PM023, L_PM123, L_PM0123 }, + /* PL_30 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM25, L_PM0, L_PM1, L_PM01, + L_PM35, L_PM0, L_PM1, L_PM01, L_PM235, L_PM0, L_PM1, L_PM01 }, + /* PL_31 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_32 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01, + L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01 }, + /* PL_33 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01, + L_BLACK, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01 }, + /* PL_34 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, + L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3 }, + /* PL_35 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_BLACK, L_BLACK, L_BLACK, L_BLACK, + L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK }, + /* PL_3c */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_PM25, L_PM25, L_PM25, + L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25 }, + /* PL_3e */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_BLACK, L_BLACK, L_BLACK, + L_PM25, L_BLACK, L_BLACK, L_BLACK, L_PM25, L_BLACK, L_BLACK, L_BLACK } + }; + + static const UBYTE multi_to_normal[] = { + L_BAK, + L_PM0, L_PM1, L_PM0, + L_PM2, L_PM3, L_PM2, + L_PM023, L_PM123, L_PM023, + L_PM25, L_PM35, L_PM25 + }; + + int i; + int j; + UBYTE temp; + + for (i = 0; i <= 1; i++) + for (j = 0; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][(j & 0xf) | (j >> 4)]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; i <= 9; i++) { + for (j = 0; j <= 15; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i < 7 ? 0 : 1][j]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][j & 0xf]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + } +} + +static const UBYTE hold_missiles_tab[16] = { + 0x00,0x03,0x0c,0x0f,0x30,0x33,0x3c,0x3f, + 0xc0,0xc3,0xcc,0xcf,0xf0,0xf3,0xfc,0xff}; + +static void pmg_dma(void) +{ + /* VDELAY bit set == GTIA ignores PMG DMA in even lines */ + if (ANTIC_player_dma_enabled) { + if (ANTIC_player_gra_enabled) { + const UBYTE *base; + if (singleline) { + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + base = ANTIC_xe_ptr + pmbase_s - 0x4000 + ANTIC_ypos; + else + base = memory + pmbase_s + ANTIC_ypos; + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x400]; + GTIA_GRAFP1 = base[0x500]; + GTIA_GRAFP2 = base[0x600]; + GTIA_GRAFP3 = base[0x700]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x400]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x500]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x600]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x700]; + } + } + else { + if (ANTIC_xe_ptr != NULL && pmbase_d < 0x8000 && pmbase_d >= 0x4000) + base = ANTIC_xe_ptr + (pmbase_d - 0x4000) + (ANTIC_ypos >> 1); + else + base = memory + pmbase_d + (ANTIC_ypos >> 1); + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x200]; + GTIA_GRAFP1 = base[0x280]; + GTIA_GRAFP2 = base[0x300]; + GTIA_GRAFP3 = base[0x380]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x200]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x280]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x300]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x380]; + } + } + } + ANTIC_xpos += 4; + } + if (ANTIC_missile_dma_enabled) { + if (ANTIC_missile_gra_enabled) { + UBYTE data; + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + data = ANTIC_xe_ptr[singleline ? pmbase_s + ANTIC_ypos + 0x300 - 0x4000 : pmbase_d + (ANTIC_ypos >> 1) + 0x180 - 0x4000]; + else + data = MEMORY_dGetByte(singleline ? pmbase_s + ANTIC_ypos + 0x300 : pmbase_d + (ANTIC_ypos >> 1) + 0x180); + /* in odd lines load all missiles, in even only those, for which VDELAY bit is zero */ + GTIA_GRAFM = ANTIC_ypos & 1 ? data : ((GTIA_GRAFM ^ data) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ data; + } + ANTIC_xpos++; + } +} + +/* Artifacting ------------------------------------------------------------ */ + +int ANTIC_artif_mode; + +static UWORD art_lookup_new[64]; +static UWORD art_colour1_new; +static UWORD art_colour2_new; + +static ULONG art_lookup_normal[256]; +static ULONG art_lookup_reverse[256]; +static ULONG art_bkmask_normal[256]; +static ULONG art_lummask_normal[256]; +static ULONG art_bkmask_reverse[256]; +static ULONG art_lummask_reverse[256]; + +static ULONG *art_curtable = art_lookup_normal; +static ULONG *art_curbkmask = art_bkmask_normal; +static ULONG *art_curlummask = art_lummask_normal; + +static UWORD art_normal_colpf1_save; +static UWORD art_normal_colpf2_save; +static UWORD art_reverse_colpf1_save; +static UWORD art_reverse_colpf2_save; + +static void setup_art_colours(void) +{ + static UWORD *art_colpf1_save = &art_normal_colpf1_save; + static UWORD *art_colpf2_save = &art_normal_colpf2_save; + UWORD curlum = ANTIC_cl[C_PF1] & 0x0f0f; + + if (curlum != *art_colpf1_save || ANTIC_cl[C_PF2] != *art_colpf2_save) { + if (curlum < (ANTIC_cl[C_PF2] & 0x0f0f)) { + art_colpf1_save = &art_reverse_colpf1_save; + art_colpf2_save = &art_reverse_colpf2_save; + art_curtable = art_lookup_reverse; + art_curlummask = art_lummask_reverse; + art_curbkmask = art_bkmask_reverse; + } + else { + art_colpf1_save = &art_normal_colpf1_save; + art_colpf2_save = &art_normal_colpf2_save; + art_curtable = art_lookup_normal; + art_curlummask = art_lummask_normal; + art_curbkmask = art_bkmask_normal; + } + if (curlum ^ *art_colpf1_save) { + int i; + ULONG new_colour = curlum ^ *art_colpf1_save; + new_colour |= new_colour << 16; + *art_colpf1_save = curlum; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curlummask[i] & new_colour; + } + if (ANTIC_cl[C_PF2] ^ *art_colpf2_save) { + int i; + ULONG new_colour = ANTIC_cl[C_PF2] ^ *art_colpf2_save; + new_colour |= new_colour << 16; + *art_colpf2_save = ANTIC_cl[C_PF2]; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curbkmask[i] & new_colour; + } + + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int ANTIC_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) +#if SKIP + int i, j; + + for (i = j = 1; i < *argc; i++) { + int i_a = (i + 1 < *argc); /* is argument available? */ + int a_m = FALSE; /* error, argument missing! */ + + if (strcmp(argv[i], "-artif") == 0) { + if (i_a) { + ANTIC_artif_mode = Util_sscandec(argv[++i]); + if (ANTIC_artif_mode < 0 || ANTIC_artif_mode > 4) { + Log_print("Invalid artifacting mode, using default."); + ANTIC_artif_mode = 0; + } + } + else a_m = TRUE; + } + else { + if (strcmp(argv[i], "-help") == 0) { + Log_print("\t-artif Set artifacting mode 0-4 (0 = disable)"); + } + argv[j++] = argv[i]; + } + + if (a_m) { + Log_print("Missing argument for '%s'", argv[i]); + return FALSE; + } + } + *argc = j; +#endif + ANTIC_UpdateArtifacting(); + + playfield_lookup[0x00] = L_BAK; + playfield_lookup[0x40] = L_PF0; + playfield_lookup[0x80] = L_PF1; + playfield_lookup[0xc0] = L_PF2; + playfield_lookup[0x100] = L_PF3; + blank_lookup[0x80] = blank_lookup[0xa0] = blank_lookup[0xc0] = blank_lookup[0xe0] = 0x00; + hires_mask(0x00) = 0xffff; +#ifdef USE_COLOUR_TRANSLATION_TABLE + hires_mask(0x40) = BYTE0_MASK; + hires_mask(0x80) = BYTE1_MASK; + hires_mask(0xc0) = 0; +#else + hires_mask(0x40) = HIRES_MASK_01; + hires_mask(0x80) = HIRES_MASK_10; + hires_mask(0xc0) = 0xf0f0; + hires_lum(0x00) = hires_lum(0x40) = hires_lum(0x80) = hires_lum(0xc0) = 0; +#endif + init_pm_lookup(); + mode_e_an_lookup[0] = 0; + mode_e_an_lookup[1] = mode_e_an_lookup[4] = mode_e_an_lookup[0x10] = mode_e_an_lookup[0x40] = 0; + mode_e_an_lookup[2] = mode_e_an_lookup[8] = mode_e_an_lookup[0x20] = mode_e_an_lookup[0x80] = 1; + mode_e_an_lookup[3] = mode_e_an_lookup[12] = mode_e_an_lookup[0x30] = mode_e_an_lookup[0xc0] = 2; +#ifdef NEW_CYCLE_EXACT + CYCLE_MAP_Create(); + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +void ANTIC_Reset(void) +{ + ANTIC_NMIEN = 0x00; + ANTIC_NMIST = 0x1f; + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, 0); +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Border ------------------------------------------------------------------ */ + +#define DO_BORDER_1 {\ + if (IS_ZERO_ULONG(pm_scanline_ptr)) {\ + ULONG *l_ptr = (ULONG *) ptr;\ + WRITE_VIDEO_LONG(l_ptr++, background); \ + WRITE_VIDEO_LONG(l_ptr++, background); \ + ptr = (UWORD *) l_ptr;\ + pm_scanline_ptr += 4;\ + }\ + else {\ + int k = 4;\ + do + +#define DO_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++]));\ + while (--k);\ + }\ +} + +#define DO_GTIA10_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++ | 1]));\ + while (--k);\ + }\ +} + +static void do_border(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER +} + +static void do_border_gtia10(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_GTIA10_BORDER + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[*pm_scanline_ptr | 1])); /* one extra pixel, because of the right shift of gtia10*/ + /* right border */ + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + if (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) { + ptr = &scrn_ptr[right_border_start + 1]; /*start one pixel further right because of the right shift of gtia10*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[1] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[2] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[3] | 1])); + pm_scanline_ptr += 4; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_GTIA10_BORDER + } +} + +static void do_border_gtia11(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) +} + +static void draw_antic_0(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_BAK], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia10(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + do + DO_GTIA10_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_PM0], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia11(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) + } + else + FILL_VIDEO(ptr, ANTIC_lookup_gtia11[0], (RBORDER_END - LBORDER_START) * 2); +} + +/* ANTIC modes ------------------------------------------------------------- */ + +static const UBYTE gtia_10_lookup[] = +{L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3, + L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3}; +static const UBYTE gtia_10_pm[] = +{1, 2, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static void draw_an_gtia9(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr + 1, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border(); +} + +static void draw_an_gtia10(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) | 1; + UWORD lookup_gtia10[16]; + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i - 1] << 2) + an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia10[pixel]); + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr + 1, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr + 1, lookup_gtia10[pixel]); + } + i++; + } + do_border_gtia10(); +} + +static void draw_an_gtia11(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr + 1, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border_gtia11(); +} + +static void draw_an_gtia_bug(const ULONG *t_pm_scanline_ptr) +{ + static const UBYTE gtia_bug_colreg[] = {L_PF0, L_PF1, L_PF2, L_PF3}; + UWORD lookup_gtia_bug[16]; + int i; + lookup_gtia_bug[0] = ANTIC_cl[C_PF0]; + lookup_gtia_bug[1] = ANTIC_cl[C_PF1]; + lookup_gtia_bug[2] = ANTIC_cl[C_PF2]; + lookup_gtia_bug[3] = ANTIC_cl[C_PF3]; + i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline); + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_bug_colreg[pixel]; + PF_COLLS(colreg) |= pm_reg; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia_bug[pixel]); + } + i++; + } + do_border(); +} + +#define DEFINE_DRAW_AN(anticmode) \ + static void draw_antic_ ## anticmode ## _gtia9 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia9(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia10(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia11(t_pm_scanline_ptr);\ + } + +#define CHAR_LOOP_BEGIN do { +#define CHAR_LOOP_END } while (--nchars); + +#define DO_PMG_LORES PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++;\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + +#ifdef ALTERNATE_LOOP_COUNTERS /* speeds-up pmg in hires a bit or not? try it :) */ +#define FOUR_LOOP_BEGIN(data) data |= 0x800000; do { /* data becomes negative after four data <<= 2 */ +#define FOUR_LOOP_END(data) } while (data >= 0); +#else +#define FOUR_LOOP_BEGIN(data) int k = 4; do { +#define FOUR_LOOP_END(data) } while (--k); +#endif + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & BYTE0_MASK) | (ANTIC_cl[C_HI2] & BYTE1_MASK);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_HI2] & BYTE0_MASK) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = ANTIC_cl[C_HI2]; + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + int mask;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + mask = hires_mask(data & 0xc0);\ + pm_pixel = pm_lookup_ptr[pm_pixel] | L_PF2;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_pixel) & mask) | (COLOUR(pm_pixel + (L_HI2 - L_PF2)) & ~mask));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#else /* USE_COLOUR_TRANSLATION_TABLE */ + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0); + +#define INIT_ARTIF_NEW art_lookup_new[0] = art_lookup_new[1] = art_lookup_new[2] = art_lookup_new[3] = \ + art_lookup_new[16] = art_lookup_new[17] = art_lookup_new[18] = art_lookup_new[19] = \ + art_lookup_new[32] = art_lookup_new[33] = art_lookup_new[34] = art_lookup_new[35] = \ + art_lookup_new[48] = art_lookup_new[49] = art_lookup_new[50] = art_lookup_new[51] = ANTIC_cl[C_PF2];\ + art_lookup_new[7] = art_lookup_new[23] = art_lookup_new[39] = art_lookup_new[55] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[56] = art_lookup_new[57] = art_lookup_new[58] = art_lookup_new[59] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + art_lookup_new[12] = art_lookup_new[13] = art_lookup_new[14] = art_lookup_new[15] = \ + art_lookup_new[28] = art_lookup_new[29] = art_lookup_new[30] = art_lookup_new[31] = \ + art_lookup_new[44] = art_lookup_new[45] = art_lookup_new[46] = art_lookup_new[47] = \ + art_lookup_new[60] = art_lookup_new[61] = art_lookup_new[62] = art_lookup_new[63] = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0);\ + if ((ANTIC_cl[C_PF2] & 0x0F00) != (ANTIC_cl[C_PF1] & 0x0F00)) { \ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= ((art_colour1_new & BYTE1_MASK & ~(HIRES_LUM_01))) | hires_lum(0x40) | (ANTIC_cl[C_PF2] & BYTE0_MASK);\ + art_lookup_new[20] = art_lookup_new[21] = (art_colour1_new & 0xf0f0) | hires_lum(0xc0);\ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = ((art_colour2_new & BYTE0_MASK & ~(HIRES_LUM_10))) | hires_lum(0x80) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = (art_colour2_new & 0xf0f0) | hires_lum(0xc0);\ + }\ + else {\ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= art_lookup_new[20] = art_lookup_new[21] = \ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = ANTIC_cl[C_PF2];\ + }\ + art_lookup_new[6] = art_lookup_new[22] = art_lookup_new[38] = art_lookup_new[54] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[24] = art_lookup_new[25] = art_lookup_new[26] = art_lookup_new[27] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80); + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2) & hires_mask(data & 0xc0)) | hires_lum(data & 0xc0));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#define DO_PMG_HIRES_NEW(data, tally) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (pm_pixel) \ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2)));\ + else\ + WRITE_VIDEO(ptr++, art_lookup_new[(tally & 0xfc0000) >> 18]); \ + data <<= 2;\ + tally <<= 6;\ + FOUR_LOOP_END(data)\ +} + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +#ifdef NEW_CYCLE_EXACT +#define ADD_FONT_CYCLES +#else +#define ADD_FONT_CYCLES ANTIC_xpos += font_cycles[md] +#endif + +#ifdef PAGED_MEM + +#define INIT_ANTIC_2 int t_chbase = (dctr ^ chbase_20) & 0xfc07;\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); + +#else /* PAGED_MEM */ + +#define INIT_ANTIC_2 const UBYTE *chptr;\ + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000)\ + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07);\ + else\ + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07);\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= chptr[(screendata & 0x7f) << 3]; + +#endif /* PAGED_MEM */ + +static void draw_antic_2(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + INIT_HIRES + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifdef NEW_CYCLE_EXACT +static void draw_antic_2_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + (void)chptr; /* suppress GCC -Wunused-but-set-variable warning */ + INIT_HIRES + + CHAR_LOOP_BEGIN + /* UBYTE screendata = *antic_memptr++; */ + +/* In this glitched mode, the output depends on the MSB of the last char */ +/* drawn in the previous line, and invert_mask. It seems to reveal that */ +/* ANTIC has a latch that is set by the MSB of the char that controls an */ +/* invert gate. */ +/* When this gate was set on the last line and the next line is glitched */ +/* it remains set and the whole line appears inverted */ +/* We'll use this modeline to draw antic f glitched as well, and set */ +/* dmactl_bug_chdata to 0 */ + int chdata = (dmactl_bug_chdata & invert_mask) ? 0xff : 0; + /* GET_CHDATA_ANTIC_2 */ + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void draw_antic_2_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + INIT_ANTIC_2 + { + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + } + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + chdata = screendata_tally >> 8; + DO_PMG_HIRES(chdata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_2_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + ULONG pmtally; + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + INIT_ANTIC_2 + INIT_ARTIF_NEW + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + chdata = screendata_tally >> 8; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(chdata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_2(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + int t_chbase = (dctr ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07); +#endif + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + GET_CHDATA_ANTIC_2 + *an_ptr++ = chdata >> 6; + *an_ptr++ = (chdata >> 4) & 3; + *an_ptr++ = (chdata >> 2) & 3; + *an_ptr++ = chdata & 3; + CHAR_LOOP_END +} + +static void draw_antic_2_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata >> 4 : chdata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_2_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } + +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, chdata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = chdata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; + pm_pixel |= gtia_10_pm[t_screendata]; + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + if (k == 3) + t_screendata = chdata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_2_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata & 0xf0 : chdata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +static void draw_antic_2_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia_bug(t_pm_scanline_ptr); + return; +} + +static void draw_antic_4(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + lookup2[0x0f] = lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x4f] = lookup2[0x1f] = lookup2[0x13] = + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x8f] = lookup2[0x2f] = lookup2[0x17] = lookup2[0x11] = + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + lookup2[0xcf] = lookup2[0x3f] = lookup2[0x1b] = lookup2[0x12] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + const UWORD *lookup; + UBYTE chdata; + if (screendata & 0x80) + lookup = lookup2 + 0xf; + else + lookup = lookup2; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, lookup[chdata & 0xc0]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x30]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x0c]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + playfield_lookup[0xc0] = screendata & 0x80 ? L_PF3 : L_PF2; + do { + colreg = playfield_lookup[chdata & 0xc0]; + DO_PMG_LORES + chdata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + playfield_lookup[0xc0] = L_PF2; + do_border(); +} + +static void prepare_an_antic_4(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + an = mode_e_an_lookup[chdata & 0xc0]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x30]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x0c]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x03]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(4) + +static void draw_antic_6(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + UWORD colour; + int kk = 2; + colour = COLOUR((playfield_lookup + 0x40)[screendata & 0xc0]); +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata & 0xf0) { + if (chdata & 0x80) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x40) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x20) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x10) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + chdata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + UBYTE setcol = (playfield_lookup + 0x40)[screendata & 0xc0]; + int colreg; + int k = 4; + do { + colreg = chdata & 0x80 ? setcol : L_BAK; + DO_PMG_LORES + chdata <<= 1; + } while (--k); + + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_6(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an = screendata >> 6; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + *an_ptr++ = chdata & 0x80 ? an : 0; + *an_ptr++ = chdata & 0x40 ? an : 0; + *an_ptr++ = chdata & 0x20 ? an : 0; + *an_ptr++ = chdata & 0x10 ? an : 0; + *an_ptr++ = chdata & 0x08 ? an : 0; + *an_ptr++ = chdata & 0x04 ? an : 0; + *an_ptr++ = chdata & 0x02 ? an : 0; + *an_ptr++ = chdata & 0x01 ? an : 0; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(6) + +static void draw_antic_8(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = ANTIC_cl[C_PF0]; + lookup2[0x80] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + UWORD data = lookup2[screendata & 0xc0]; + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg = playfield_lookup[screendata & 0xc0]; + int k = 4; + do { + DO_PMG_LORES + } while (--k); + } + screendata <<= 2; + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_8(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + screendata <<= 2; + } while (--kk); + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(8) + +static void draw_antic_9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + screendata <<= 2; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +/* ANTIC modes 9, b and c use BAK and PF0 colours only so they're not visible in GTIA modes */ + +static void draw_antic_9_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0(); +} + +static void draw_antic_9_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia10(); +} + +static void draw_antic_9_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia11(); +} + +static void draw_antic_a(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_a(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x03]; + *an_ptr++ = data; + *an_ptr++ = data; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(a) + +static void draw_antic_c(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = lookup2[0x20] = lookup2[0x10] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x20]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x10]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_e(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x03]; + CHAR_LOOP_END +} + +static void draw_antic_e_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG lookup[16]; + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + lookup[0] = lookup[1] = lookup[4] = lookup[5] = ANTIC_lookup_gtia9[0]; + lookup[2] = lookup[6] = ANTIC_lookup_gtia9[1]; + lookup[3] = lookup[7] = ANTIC_lookup_gtia9[2]; + lookup[8] = lookup[9] = ANTIC_lookup_gtia9[4]; + lookup[10] = ANTIC_lookup_gtia9[5]; + lookup[11] = ANTIC_lookup_gtia9[6]; + lookup[12] = lookup[13] = ANTIC_lookup_gtia9[8]; + lookup[14] = ANTIC_lookup_gtia9[9]; + lookup[15] = ANTIC_lookup_gtia9[10]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, lookup[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, lookup[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e_gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); +} +static void draw_antic_e_gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); +} + +static void draw_antic_f(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_HIRES + + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, hires_norm(screendata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((screendata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(screendata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally = *antic_memptr++; + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + screendata = antic_memptr[-2]; + DO_PMG_HIRES(screendata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_f_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG pmtally; + ULONG screendata_tally = *antic_memptr++; + INIT_ARTIF_NEW + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + screendata = antic_memptr[-2]; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(screendata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_f(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = screendata >> 6; + *an_ptr++ = (screendata >> 4) & 3; + *an_ptr++ = (screendata >> 2) & 3; + *an_ptr++ = screendata & 3; + CHAR_LOOP_END +} + +static void draw_antic_f_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, screendata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = screendata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; /*playfield colours can generate collisions*/ + pm_pixel |= gtia_10_pm[t_screendata]; /*but player colours don't*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); /*although they mix with the real players*/ + if (k == 3) + t_screendata = screendata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_f_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata & 0xf0 : screendata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +/* GTIA-switch-to-mode-00 bug +If while drawing line in hi-res mode PRIOR is changed from 0x40..0xff to +0x00..0x3f, GTIA doesn't back to hi-res, but starts generating mode similar +to ANTIC's 0xe, but with colours PF0, PF1, PF2, PF3. */ + +/* Technical explaination by perrym: + * in gtia.pdf there is a flip-flop at page 40, drawing location C3 with + * what looks like W and A on the gates + * This is set by AN2=0 AN1=1 AN0=1 durning HBLANK + * The middle input to the lower NOR gate is the inverted signal !NRM(?) + * (NRM means NORMAL?) which arrives from the top left of the page. + * This signal is defined on page 38, positions C2/B2 + * where there is a NOR gate pointing downwards with 00 written to the + * right of its output. + * !NRM is the condition that PRIOR is not set to b7=0,b6=0. + * When PRIOR is not set to NRM, the flip-flip is always reset, + * which seems necessary for the proper operation of the GTIA modes. + * If PRIOR is reset to NRM then the flip-flop remains reset, and + * since ANTIC data in hi-res modes is sent as PF0-PF3, this data is used + * by GTIA directly.*/ + +static void draw_antic_f_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_PF0]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF1]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF2]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (playfield_lookup + 0x40)[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +/* pointer to a function that draws a single line of graphics */ +typedef void (*draw_antic_function)(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr); + +/* tables for all GTIA and ANTIC modes */ +static draw_antic_function draw_antic_table[4][16] = { +/* normal */ + { NULL, NULL, draw_antic_2, draw_antic_2, + draw_antic_4, draw_antic_4, draw_antic_6, draw_antic_6, + draw_antic_8, draw_antic_9, draw_antic_a, draw_antic_c, + draw_antic_c, draw_antic_e, draw_antic_e, draw_antic_f}, +/* GTIA 9 */ + { NULL, NULL, draw_antic_2_gtia9, draw_antic_2_gtia9, + draw_antic_4_gtia9, draw_antic_4_gtia9, draw_antic_6_gtia9, draw_antic_6_gtia9, + draw_antic_8_gtia9, draw_antic_9_gtia9, draw_antic_a_gtia9, draw_antic_9_gtia9, + draw_antic_9_gtia9, draw_antic_e_gtia9, draw_antic_e_gtia9, draw_antic_f_gtia9}, +/* GTIA 10 */ + { NULL, NULL, draw_antic_2_gtia10, draw_antic_2_gtia10, + draw_antic_4_gtia10, draw_antic_4_gtia10, draw_antic_6_gtia10, draw_antic_6_gtia10, + draw_antic_8_gtia10, draw_antic_9_gtia10, draw_antic_a_gtia10, draw_antic_9_gtia10, + draw_antic_9_gtia10, draw_antic_e_gtia10, draw_antic_e_gtia10, draw_antic_f_gtia10}, +/* GTIA 11 */ + { NULL, NULL, draw_antic_2_gtia11, draw_antic_2_gtia11, + draw_antic_4_gtia11, draw_antic_4_gtia11, draw_antic_6_gtia11, draw_antic_6_gtia11, + draw_antic_8_gtia11, draw_antic_9_gtia11, draw_antic_a_gtia11, draw_antic_9_gtia11, + draw_antic_9_gtia11, draw_antic_e_gtia11, draw_antic_e_gtia11, draw_antic_f_gtia11}}; + +/* pointer to current GTIA/ANTIC mode routine */ +static draw_antic_function draw_antic_ptr = draw_antic_8; +#ifdef NEW_CYCLE_EXACT +static draw_antic_function saved_draw_antic_ptr; +#endif +/* pointer to current GTIA mode blank drawing routine */ +static void (*draw_antic_0_ptr)(void) = draw_antic_0; + +#ifdef NEW_CYCLE_EXACT +/* wrapper for antic_0, for dmactl bugs */ +static void draw_antic_0_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_ptr(); +} +#endif + +/* Artifacting ------------------------------------------------------------ */ + +void ANTIC_UpdateArtifacting(void) +{ +#define ART_BROWN 0 +#define ART_BLUE 1 +#define ART_DARK_BROWN 2 +#define ART_DARK_BLUE 3 +#define ART_BRIGHT_BROWN 4 +#define ART_BRIGHT_BLUE 5 +#define ART_RED 6 +#define ART_GREEN 7 + static const UBYTE art_colour_table[4][8] = { + { 0x88, 0x14, 0x88, 0x14, 0x8f, 0x1f, 0xbb, 0x5f }, /* brownblue */ + { 0x14, 0x88, 0x14, 0x88, 0x1f, 0x8f, 0x5f, 0xbb }, /* bluebrown */ + { 0xd6, 0x46, 0xd6, 0x46, 0xdf, 0x4a, 0x4f, 0xac }, /* redgreen */ + { 0x46, 0xd6, 0x46, 0xd6, 0x4a, 0xdf, 0xac, 0x4f } /* greenred */ + }; + + int i; + int j; + int c; + const UBYTE *art_colours; + UBYTE q; + UBYTE art_white; + + if (ANTIC_artif_mode == 0) { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2; + draw_antic_table[0][0xf] = draw_antic_f; + return; + } + +#ifndef USE_COLOUR_TRANSLATION_TABLE + if (ANTIC_artif_new) { + static UWORD new_art_colour_table[4][2] = { + {0x4040, 0x8080}, + {0x8080, 0x4040}, + {0x8080, 0xd0d0}, + {0xd0d0, 0x8080} + }; + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif_new; + draw_antic_table[0][0xf] = draw_antic_f_artif_new; + art_colour1_new = new_art_colour_table[ANTIC_artif_mode - 1][0]; + art_colour2_new = new_art_colour_table[ANTIC_artif_mode - 1][1]; + } + else +#endif + { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif; + draw_antic_table[0][0xf] = draw_antic_f_artif; + } + + art_colours = (ANTIC_artif_mode <= 4 ? art_colour_table[ANTIC_artif_mode - 1] : art_colour_table[2]); + + art_reverse_colpf1_save = art_normal_colpf1_save = ANTIC_cl[C_PF1] & 0x0f0f; + art_reverse_colpf2_save = art_normal_colpf2_save = ANTIC_cl[C_PF2]; + art_white = (ANTIC_cl[C_PF2] & 0xf0) | (ANTIC_cl[C_PF1] & 0x0f); + + for (i = 0; i <= 255; i++) { + art_bkmask_normal[i] = 0; + art_lummask_normal[i] = 0; + art_bkmask_reverse[255 - i] = 0; + art_lummask_reverse[255 - i] = 0; + + for (j = 0; j <= 3; j++) { + q = i << j; + if (!(q & 0x20)) { + if ((q & 0xf8) == 0x50) + c = ART_BLUE; /* 01010 */ + else if ((q & 0xf8) == 0xD8) + c = ART_DARK_BLUE; /* 11011 */ + else { /* xx0xx */ + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = art_white; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xff; + ((UBYTE *) art_lummask_reverse)[((255 - i) << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xf0; + continue; + } + } + else if (q & 0x40) { + if (q & 0x10) + goto colpf1_pixel; /* x111x */ + else if (q & 0x80) { + if (q & 0x08) + c = ART_BRIGHT_BROWN; /* 11101 */ + else + goto colpf1_pixel; /* 11100 */ + } + else + c = ART_GREEN; /* 0110x */ + } + else if (q & 0x10) { + if (q & 0x08) { + if (q & 0x80) + c = ART_BRIGHT_BROWN; /* 00111 */ + else + goto colpf1_pixel; /* 10111 */ + } + else + c = ART_RED; /* x0110 */ + } + else + c = ART_BROWN; /* x010x */ + + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_colours[(j & 1) ^ c]; + continue; + + colpf1_pixel: + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_white; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xff; + ((UBYTE *) art_lummask_normal)[(i << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xf0; + } + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Display List ------------------------------------------------------------ */ + +UBYTE ANTIC_GetDLByte(UWORD *paddr) +{ + int addr = *paddr; + UBYTE result; + if (ANTIC_xe_ptr != NULL && addr < 0x8000 && addr >= 0x4000) + result = ANTIC_xe_ptr[addr - 0x4000]; + else + result = MEMORY_GetByte((UWORD) addr); + addr++; + if ((addr & 0x3FF) == 0) + addr -= 0x400; + *paddr = (UWORD) addr; + return result; +} + +UWORD ANTIC_GetDLWord(UWORD *paddr) +{ + UBYTE lsb = ANTIC_GetDLByte(paddr); +#if !defined(BASIC) && !defined(CURSES_BASIC) + if (ANTIC_player_flickering && ((GTIA_VDELAY & 0x80) == 0 || ANTIC_ypos & 1)) + GTIA_GRAFP3 = lsb; +#endif + return (ANTIC_GetDLByte(paddr) << 8) + lsb; +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Real ANTIC doesn't fetch beginning bytes in HSC + nor screen+47 in wide playfield. This function does. */ +static void antic_load(void) +{ +#ifdef PAGED_MEM + UBYTE *antic_memptr = antic_memory + ANTIC_margin; + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + do + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); + while (screenaddr & 0xfff); + screenaddr -= 0x1000; + new_screenaddr -= 0x1000; + } + while (screenaddr < new_screenaddr) + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); +#else + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + int bytes = (-screenaddr) & 0xfff; + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) { + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), bytes); + if (new_screenaddr & 0xfff) + memcpy(antic_memory + ANTIC_margin + bytes, ANTIC_xe_ptr + (screenaddr + bytes - 0x5000), new_screenaddr & 0xfff); + } + else if ((screenaddr & 0xf000) == 0xd000) { + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_CopyFromMem((UWORD) (screenaddr + bytes - 0x1000), antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + else { + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_dCopyFromMem(screenaddr + bytes - 0x1000, antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + screenaddr = new_screenaddr - 0x1000; + } + else { + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), chars_read[md]); + else if ((screenaddr & 0xf000) == 0xd000) + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + else + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + screenaddr = new_screenaddr; + } +#endif +} + +#ifdef NEW_CYCLE_EXACT +int ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + +#ifdef USE_CURSES +static int scanlines_to_curses_display = 0; +#endif + +/* This function emulates one frame drawing screen at Screen_atari */ +void ANTIC_Frame(int draw_display) +{ + static const UBYTE mode_type[32] = { + NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL1, NORMAL1, + NORMAL2, NORMAL2, NORMAL1, NORMAL1, NORMAL1, NORMAL0, NORMAL0, NORMAL0, + SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL1, SCROLL1, + SCROLL2, SCROLL2, SCROLL1, SCROLL1, SCROLL1, SCROLL0, SCROLL0, SCROLL0 + }; + static const UBYTE normal_lastline[16] = + { 0, 0, 7, 9, 7, 15, 7, 15, 7, 3, 3, 1, 0, 1, 0, 0 }; + UBYTE vscrol_flag = FALSE; + UBYTE no_jvb = TRUE; +#ifndef NEW_CYCLE_EXACT + UBYTE need_load; +#endif + +#ifdef NEW_CYCLE_EXACT + int cpu2antic_index; +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_ypos = 0; + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < 8); + + scrn_ptr = (UWORD *) Screen_atari; +#ifdef NEW_CYCLE_EXACT + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + need_dl = TRUE; + do { +#ifdef SKIP + if ((INPUT_mouse_mode == INPUT_MOUSE_PEN || INPUT_mouse_mode == INPUT_MOUSE_GUN) && (ANTIC_ypos >> 1 == ANTIC_PENV_input)) { + PENH = ANTIC_PENH_input; + PENV = ANTIC_PENV_input; + if (GTIA_GRACTL & 4) + GTIA_TRIG_latch[INPUT_mouse_port] = 0; + } +#endif + POKEY_Scanline(); /* check and generate IRQ */ + pmg_dma(); + +#ifdef USE_CURSES + if (--scanlines_to_curses_display == 0) + curses_display_line(anticmode, antic_memory + ANTIC_margin); +#endif + + need_load = FALSE; + if (need_dl) { + if (ANTIC_DMACTL & 0x20) { + IR = ANTIC_GetDLByte(&ANTIC_dlist); + anticmode = IR & 0xf; + ANTIC_xpos++; + /* PMG flickering :-) */ + if (ANTIC_missile_flickering) + GTIA_GRAFM = ANTIC_ypos & 1 ? IR : ((GTIA_GRAFM ^ IR) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ IR; + if (ANTIC_player_flickering) + { + UBYTE hold = ANTIC_ypos & 1 ? 0 : GTIA_VDELAY; + if ((hold & 0x10) == 0) + GTIA_GRAFP0 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 8)); + if ((hold & 0x20) == 0) + GTIA_GRAFP1 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 9)); + if ((hold & 0x40) == 0) + GTIA_GRAFP2 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 10)); + if ((hold & 0x80) == 0) + GTIA_GRAFP3 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 11)); + } + } + else + IR &= 0x7f; /* repeat last instruction, but don't generate DLI */ + + dctr = 0; + need_dl = FALSE; + vscrol_off = FALSE; + + switch (anticmode) { + case 0x00: + lastline = (IR >> 4) & 7; + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + case 0x01: + lastline = 0; + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + no_jvb = FALSE; + } + else + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + default: + lastline = normal_lastline[anticmode]; + if (IR & 0x20) { + if (!vscrol_flag) { + CPU_GO(VSCON_C); + dctr = ANTIC_VSCROL; + vscrol_flag = TRUE; + } + } + else if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + screenaddr = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + md = mode_type[IR & 0x1f]; + need_load = TRUE; + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode]; + break; + } + } +#ifdef NEW_CYCLE_EXACT + cpu2antic_index = 0; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || + (anticmode >= 8 && !need_load)) { + cpu2antic_index = 0; + } + else { +/* TODO: use a cleaner lookup table here */ + if (!(IR & 0x10) && ((ANTIC_DMACTL & 3) == 1)) + cpu2antic_index = 1; + else if ((!(IR &0x10) && ((ANTIC_DMACTL & 3) == 2)) || + ((IR & 0x10) && ((ANTIC_DMACTL & 3) == 1))) { + cpu2antic_index = 2; + } + else + cpu2antic_index = 10; + if (IR & 0x10) { + cpu2antic_index += (ANTIC_HSCROL >> 1); + } + if (anticmode >=2 && anticmode <=7 && !need_load) + cpu2antic_index += 17; + if (anticmode ==6 || anticmode ==7) + cpu2antic_index += 17 * 2; + else if (anticmode==8 || anticmode == 9) + cpu2antic_index += 17 * 6; + else if (anticmode >=0xa && anticmode <=0xc) + cpu2antic_index += 17 * 5; + else if (anticmode >=0x0d) + cpu2antic_index += 17 * 4; + } + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[CYCLE_MAP_SIZE * cpu2antic_index]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[CYCLE_MAP_SIZE * cpu2antic_index]; +#endif /* NEW_CYCLE_EXACT */ + + if ((IR & 0x4f) == 1 && (ANTIC_DMACTL & 0x20)) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + +#ifdef NEW_CYCLE_EXACT + /* begin drawing here */ + if (draw_display) { + ANTIC_cur_screen_pos = LBORDER_START; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_xpos]; /* convert antic to cpu(need for WSYNC) */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMIST_C]); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMI_C]); + CPU_NMI(); + } + } + } + } + else /* force this to be within an else if NEW_CYCLE_EXACT */ +#endif /* NEW_CYCLE_EXACT */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + } + } + if (!draw_display) { + ANTIC_xpos += ANTIC_DMAR; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + if (need_load) { + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos += before_cycles[md] - extra_cycles[md]; + } + if (anticmode < 8) + ANTIC_xpos += font_cycles[md]; + GOEOL; + dctr++; + dctr &= 0xf; + continue; + } +#ifndef NO_YPOS_BREAK_FLICKER +#define YPOS_BREAK_FLICKER do{if (ANTIC_ypos == ANTIC_break_ypos - 1000) {\ + static int toggle;\ + if (toggle == 1) {\ + FILL_VIDEO(scrn_ptr + LBORDER_START, 0x0f0f, (RBORDER_END - LBORDER_START) * 2);\ + }\ + toggle = !toggle;\ + }}while(0) +#else +#define YPOS_BREAK_FLICKER do{}while(0) +#endif /* NO_YPOS_BREAK_FLICKER */ + +#ifdef NEW_CYCLE_EXACT + GTIA_NewPmScanline(); + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + YPOS_BREAK_FLICKER; + scrn_ptr += Screen_WIDTH / 2; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + +#else /* NEW_CYCLE_EXACT not defined */ + if (need_load && anticmode <= 5 && ANTIC_DMACTL & 3) + ANTIC_xpos += before_cycles[md]; + + CPU_GO(SCR_C); + GTIA_NewPmScanline(); + + ANTIC_xpos += ANTIC_DMAR; + + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + draw_antic_0_ptr(); + GOEOL; + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos -= extra_cycles[md]; + } + + draw_antic_ptr(chars_displayed[md], + antic_memory + ANTIC_margin + ch_offset[md], + scrn_ptr + x_min[md], + (ULONG *) >IA_pm_scanline[x_min[md]]); + + GOEOL; +#endif /* NEW_CYCLE_EXACT */ + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + dctr++; + dctr &= 0xf; + + //drawline(); + + } while (ANTIC_ypos < (ATARI_HEIGHT + 8)); + +#ifndef NO_SIMPLE_PAL_BLENDING + /* Simple PAL blending, using only the base 256 color palette. */ + if (ANTIC_pal_blending) + { + int ypos = ANTIC_ypos - 1; + /* Start at the last screen line (248). */ + ULONG *ptr = (ULONG *) (scrn_ptr - 4 * RCHOP); + do { + int k = 2 * (48 - LCHOP - RCHOP); + do { + /* For each grayscale pixel (colors $00..$0f) blend it with + chrominance of a pixel from the previous line. */ + ULONG pix = READ_VIDEO_LONG(--ptr); + ULONG mask = 0xf0f0f0f0; + /* Take advantage of the fact that chrominance can change only + every two pixels. This way we may test only two pixels in a + quadruplet instead of four. */ + if (pix & 0x0000f0f0) + /* Two LSBs are non-grayscale */ + mask &= 0xf0f00000; + if (pix & 0xf0f00000) + /* Two MSBs are non-grayscale */ + mask &= 0x0000f0f0; + + WRITE_VIDEO_LONG(ptr, (READ_VIDEO_LONG(ptr - ATARI_WIDTH / 4) & mask) | pix); + } while (--k); + ptr -= 2 * (LCHOP + RCHOP); /* Move one line up */ + } while (--ypos > 8); /* Stop after line 9 */ + + } +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* TODO: cycle-exact overscreen lines */ + POKEY_Scanline(); /* check and generate IRQ */ + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x5f; /* Set VBLANK */ + if (ANTIC_NMIEN & 0x40) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + ANTIC_xpos += ANTIC_DMAR; + GOEOL; + + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < max_ypos); + ANTIC_ypos = 0; /* just for monitor.c */ +} + +#ifdef NEW_CYCLE_EXACT + +/* update the scanline from the last changed position to the current +position, when a change was made to a display register during drawing */ +void ANTIC_UpdateScanline(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* prior needs a different adjustment and could generate small glitches +between mode changes */ +/* TODO: support glitches between mode changes (tiny areas that are neither +the new mode nor the old mode, which occur between mode changes */ +void ANTIC_UpdateScanlinePrior(UBYTE byte) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int prior_mode_adj = 2; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + prior_mode_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chbase needs a different adjustment */ +void update_scanline_chbase(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + int fontfetch_adj; + /* antic fetches character font data every 2 or 4 cycles */ + /* we want to delay the change until the next fetch */ + /* empirically determined: */ + if (anticmode >= 2 && anticmode <= 5) { + fontfetch_adj = (((hscrol_adj >>1) - actual_xpos + 0) & 1) * 2 + 9; + } + else if (anticmode == 6 || anticmode == 7) { + fontfetch_adj = (((hscrol_adj >> 1) - actual_xpos + 2) & 3) * 2 + 9; + } + else { + fontfetch_adj = 0; + } + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + fontfetch_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl invert needs a different adjustment */ +void update_scanline_invert(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 4 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 4; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl blank needs a different adjustment */ +void update_scanline_blank(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 7 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 7; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +static void set_dmactl_bug(void){ + need_load = FALSE; + saved_draw_antic_ptr = draw_antic_ptr; + draw_antic_ptr_changed = 1; + if (anticmode == 2 || anticmode == 3 || anticmode == 0xf) { + draw_antic_ptr = draw_antic_2_dmactl_bug; + dmactl_bug_chdata = (anticmode == 0xf) ? 0 : antic_memory[ANTIC_margin + chars_read[md] - 1]; + } + else { + draw_antic_ptr = draw_antic_0_dmactl_bug; + } +} + +/* draw a partial scanline between point l and point r */ +/* l is the left hand word, r is the point one past the right-most word to draw */ +void draw_partial_scanline(int l, int r) +{ + /* lborder_chars: save left border chars,we restore it after */ + /* it is the number of 8pixel 'chars' in the left border */ + int lborder_chars = left_border_chars; + + /* rborder_start: save right border start, we restore it after */ + /* it is the start of the right border, in words */ + int rborder_start = right_border_start; + + /* lborder_start: start of the left border, in words */ + int lborder_start = LCHOP * 4; + /* end of the left border, in words */ + int lborder_end = LCHOP * 4 + left_border_chars * 4; + /* end of the right border, in words */ + int rborder_end = (48 - RCHOP) * 4; + /* flag: if true, don't show playfield. used if the partial scanline */ + /* does not include the playfield */ + int dont_display_playfield = 0; + /* offset of the left most drawable 8 pixel pf block */ + /* int l_pfchar = (lborder_end - x_min[md]) / 4; */ + int l_pfchar = 0; + /* offset of the right most drawable 8 pixel pf plock, *plus one* */ + int r_pfchar = 0; + /* buffer to save 0,1,2 or 3 words of the left hand portion of an 8pixel */ + /* 'char' which is going to be erased by the left hand side of the */ + /* left most 8pixel 'char' in the partial scanline and must be saved */ + /* and restored later */ + UWORD sv_buf[4]; + /* buffer to save 0 or 1 (modes 6,7,a,b,c) ,or , (0,1,2 or 3) (modes 8,9) */ + /* 8pixel 'chars' of playfield which is going to be erased by the left */ + /* hand most 8pixel 'char's of the 2(modes 67abc) or 4(modes 89) 8pixel */ + /* 'char'-sized blocks that these modes must draw. */ + UWORD sv_buf2[4 * 4]; /* for modes 6,7,8,9,a,b,c */ + /* start,size of the above buffers */ + int sv_bufstart = 0; + int sv_bufsize = 0; + int sv_bufstart2 = 0; + int sv_bufsize2 = 0; + /* number of 8,16,32pixel chars to draw in the playfield */ + int nchars = 0; + /* adjustment to ch_index , it is the number of 8,16,32pixel chars */ + /* that we do not draw on the left hand side that would usually be drawn */ + /* for this mode */ + int ch_adj = 0; + /* adjustment to x_min to skip over the left side */ + int x_min_adj = 0; + /* it's the offset of the left most drawable 8pixel pfblock which is */ + /* rounded *down* to the nearest factor of (2:mode 67abc,4:mode 89) */ + /* if it is divided by (2:mode 67abc,4:mode 89) it will give the */ + /* offset of the left most drawable (16,32)pixel 'char' */ + int l_pfactual = 0; + /* it is the offset of the right most drawable 8pixel pf block which is */ + /* rounded *up* to the nearest factor of (2,4), *plus one* */ + /* so that r_pfactual-l_pfactual / (2,4) = number of 16,32 pixel 'chars' */ + /* to be drawn */ + int r_pfactual = 0; + /* it is the offset of the 8pixel block aligned with pf which overlaps */ + /* the left border. We need this for modes 6-c, because in these modes */ + /* the code will save 8pixel blocks to the left of l_pfchar and */ + /* >= l_pfactual, which will result in portions of the left border */ + /* being saved on some occasions which should not be, unless we */ + /* use this variable to alter the number of chars saved */ + /* int l_borderpfchar=0; */ + + r_pfchar = chars_displayed[md]; + if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + r_pfchar *= 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + r_pfchar *= 4; + } + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + lborder_end = rborder_end; + dont_display_playfield = 1; + } + if (l > rborder_end) + l = rborder_end; + if (r > rborder_end) + r = rborder_end; + if (l < lborder_start) + l = lborder_start; + if (r < lborder_start) + r = lborder_start; + if (l >= r) + return; + if (l < lborder_end) { + /* left point is within left border */ + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + left_border_start = sv_bufstart; + left_border_chars = lborder_chars - (sv_bufstart - lborder_start) / 4; + if (l > x_min[md]) { + /* special case for modes 56789abc */ + /* position buffer within the reference frame */ + /* of the playfield if that */ + /* results in more pixels being saved in the buffer */ + /* needed because for modes 5789abc the overlapping part */ + /* can be more than 1 8pixel char and we only save the left */ + /* hand most 8pixel chars in the code in the later section */ + /* further down, so there is a possibility that the 8pixels */ + /* which are saved within the reference frame of the border */ + /* are not enough to ensure that everything gets saved */ + l_pfchar = (l - x_min[md]) / 4; + if (((l - x_min[md]) & 3) > sv_bufsize) { + sv_bufsize = ((l - x_min[md]) & 3); + sv_bufstart = l - sv_bufsize; + } + } + } + else if (l >= rborder_start) { + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + right_border_start = sv_bufstart; + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /*within screen */ + sv_bufsize = ((l - x_min[md]) & 3); /* low bits have buf size */ + sv_bufstart = l - sv_bufsize; /* difference gives start */ + l_pfchar = (sv_bufstart - x_min[md]) / 4; + left_border_chars = 0; /* don't display left border */ + } + memcpy(sv_buf, scrn_ptr + sv_bufstart, sv_bufsize * sizeof(UWORD)); /* save part of screen */ + + if (r <= lborder_end) { + /* right_end_char = (r + 3) / 4; */ + left_border_chars = (r + 3) / 4 - sv_bufstart / 4; + /* everything must be within the left border */ + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /* right point is past start of playfield */ + /* now load ANTIC data: needed for ANTIC glitches */ + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + need_load = FALSE; + } + + if (r > rborder_start) { + right_border_end = ((r + 3) & (~3)); /* round up to nearest 8pixel */ + } + else { + r_pfchar = (r - x_min[md] + 3) / 4; /* round up to nearest 8pixel */ + } + } + if (dont_display_playfield) { + nchars = 0; + x_min_adj = 0; + ch_adj = 0; + } + else if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + l_pfactual = (l_pfchar & (~1)); /* round down to nearest 16pixel */ + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 1) & (~1)); /* round up to nearest 16pixel */ + nchars = (r_pfactual - l_pfactual) / 2; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + l_pfactual = (l_pfchar & (~3)); + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 3) & (~3)); + nchars = (r_pfactual - l_pfactual) / 4; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 4; + } + else { + nchars = r_pfchar - l_pfchar; + x_min_adj = l_pfchar * 4; + ch_adj = l_pfchar; + } + memcpy(sv_buf2, scrn_ptr + sv_bufstart2, sv_bufsize2 * sizeof(UWORD)); /* save part of screen */ + + if (dont_display_playfield) { +/* the idea here is to use draw_antic_0_ptr() to draw just the border only, since */ +/* we can't set nchars=0. draw_antic_0_ptr will work if left_border_start and */ +/* right_border_end are set correctly */ + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || r <= lborder_end) { + right_border_end = left_border_start + left_border_chars * 4; + } + else if (l >= rborder_start) { + left_border_start = right_border_start; + } + draw_antic_0_ptr(); + } + else { + draw_antic_ptr(nchars, /* chars_displayed[md], */ + antic_memory + ANTIC_margin + ch_offset[md] + ch_adj, + scrn_ptr + x_min[md] + x_min_adj, + (ULONG *) >IA_pm_scanline[x_min[md] + x_min_adj]); + } + memcpy(scrn_ptr + sv_bufstart2, sv_buf2, sv_bufsize2 * sizeof(UWORD)); /* restore screen */ + memcpy(scrn_ptr + sv_bufstart, sv_buf, sv_bufsize * sizeof(UWORD)); /* restore screen */ + + /* restore border global variables */ + left_border_chars=lborder_chars; + right_border_start=rborder_start; + left_border_start = LCHOP * 4; + right_border_end = (48-RCHOP) *4; +} +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* ANTIC registers --------------------------------------------------------- */ + +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_VCOUNT: + if (ANTIC_XPOS < ANTIC_LINE_C) + return ANTIC_ypos >> 1; + if (ANTIC_ypos + 1 < max_ypos) + return (ANTIC_ypos + 1) >> 1; + return 0; + case ANTIC_OFFSET_PENH: + return PENH; + case ANTIC_OFFSET_PENV: + return PENV; + case ANTIC_OFFSET_NMIST: + return ANTIC_NMIST; + default: + return 0xff; + } +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* GTIA calls it on write to PRIOR */ +void ANTIC_SetPrior(UBYTE byte) +{ + if ((byte ^ GTIA_PRIOR) & 0x0f) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + UBYTE col = 0; + UBYTE col2 = 0; + UBYTE hi; + UBYTE hi2; + if ((byte & 3) == 0) { + col = GTIA_COLPF0; + col2 = GTIA_COLPF1; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[col | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[col | GTIA_COLPM0 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2 | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[col2 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[col2 | GTIA_COLPM0 | GTIA_COLPM1]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col]; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2]; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = ANTIC_cl[C_HI2]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(GTIA_COLPM0 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(GTIA_COLPM1 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[((GTIA_COLPM0 | GTIA_COLPM1) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + col = col2 = 0; + hi = hi2 = GTIA_COLPF1 & 0xf; + ANTIC_cl[C_BLACK - C_PF2 + C_HI2] = colour_translation_table[hi]; + if ((byte & 9) == 0) { + col = GTIA_COLPF2; + col2 = GTIA_COLPF3; + hi |= col & 0xf0; + hi2 |= col2 & 0xf0; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[col | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[col | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2 | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[col2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[col2 | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[hi | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[hi | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[hi2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM35] = colour_translation_table[hi2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[hi2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col]; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2]; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi]; + } +#else /* USE_COLOUR_TRANSLATION_TABLE */ + UWORD cword = 0; + UWORD cword2 = 0; + if ((byte & 3) == 0) { + cword = ANTIC_cl[C_PF0]; + cword2 = ANTIC_cl[C_PF1]; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF0 | C_PM01] = cword | ANTIC_cl[C_PM01]; + ANTIC_cl[C_PF1 | C_PM0] = cword2 | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF1 | C_PM1] = cword2 | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PM01]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword2; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + } + cword = cword2 = 0; + if ((byte & 9) == 0) { + cword = ANTIC_cl[C_PF2]; + cword2 = ANTIC_cl[C_PF3]; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF2 | C_PM23] = cword | ANTIC_cl[C_PM23]; + ANTIC_cl[C_PF3 | C_PM2] = cword2 | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM3] = cword2 | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword2; + } +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + if (byte & 1) { + ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF1]; + } + if ((byte & 0xf) == 0xc) { + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = ANTIC_cl[C_PF1]; + } + else + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = GTIA_COLOUR_BLACK; + if (byte & 0xf) { + ANTIC_cl[C_PF0 | C_PM25] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = GTIA_COLOUR_BLACK; + } + else { + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23]; + } + } + pm_lookup_ptr = pm_lookup_table[prior_to_pm_lookup[byte & 0x3f]]; + draw_antic_0_ptr = byte < 0x80 ? draw_antic_0 : byte < 0xc0 ? draw_antic_0_gtia10 : draw_antic_0_gtia11; + if (byte < 0x40 && (GTIA_PRIOR >= 0x40 || gtia_bug_active) && (anticmode == 2 || anticmode == 3 || anticmode == 0xf) && ANTIC_XPOS >= ((ANTIC_DMACTL & 3) == 3 ? 16 : 18)) { + /* A GTIA Mode was active, and no longer is. An ANTIC hi-res mode is being used. GTIA is no longer set in hi-res mode */ + if (anticmode == 2 || anticmode == 3) draw_antic_ptr = draw_antic_2_gtia_bug; + else if (anticmode == 0xf) draw_antic_ptr = draw_antic_f_gtia_bug; + gtia_bug_active = TRUE; + } + else + draw_antic_ptr = draw_antic_table[byte >> 6][anticmode]; +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +void ANTIC_PutByte(UWORD addr, UBYTE byte) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_DLISTL: + ANTIC_dlist = (ANTIC_dlist & 0xff00) | byte; + break; + case ANTIC_OFFSET_DLISTH: + ANTIC_dlist = (ANTIC_dlist & 0x00ff) | (byte << 8); + break; + case ANTIC_OFFSET_DMACTL: +/* TODO: make this truly cycle-exact, update cpu2antic and antic2cpu, +add support for wider->narrow glitches including the interesting mode 6 +glitch */ +#ifdef NEW_CYCLE_EXACT + dmactl_changed=0; + /* has DMACTL width changed? */ + if ((byte & 3) != (ANTIC_DMACTL & 3) ){ + /* DMACTL width changed from 0 */ + if ((ANTIC_DMACTL & 3) == 0) { + int glitch_cycle = (3 + 32) - 8*(byte & 3); + int x = ANTIC_XPOS; + if((IR & 0x10) && ((byte & 3) != 3)){ + /*adjust for narrow or std HSCROL*/ + glitch_cycle -= 8; + } + /*ANTIC doesn't fetch and display data if the*/ + /*DMACTL width changes from zero after this */ + /*cycle. Instead, it displays a blank scan */ + /*line for modes other than 23F and for 23F */ + /*it displays a glitched line after the change*/ + if(x >= glitch_cycle){ + if(ANTIC_DRAWING_SCREEN){ + ANTIC_UpdateScanline(); + set_dmactl_bug(); + } + } + else { + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + /* DMACTL width changed to 0 */ + else if ((byte & 3)==0) { + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int antic_limit = ANTIC_cpu2antic_ptr[ANTIC_xpos_limit]; + ANTIC_UpdateScanline(); + /*fix for a minor glitch in fasteddie*/ + /*don't steal cycles after DMACTL off*/ + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; + ANTIC_xpos = ANTIC_antic2cpu_ptr[actual_xpos]; + ANTIC_xpos_limit = ANTIC_antic2cpu_ptr[antic_limit]; + } + /* DMACTL width has changed and not to 0 and not from 0 */ + } + else { + /* DMACTL width has increased and no HSCROL */ + if (((byte & 3) > (ANTIC_DMACTL & 3)) && !(IR & 0x10)) { + int x; /* the change cycle */ + int left_glitch_cycle = 0; + int right_glitch_cycle = 0; + x = ANTIC_XPOS; + if (((ANTIC_DMACTL & 3) == 2) && ((byte & 3) == 3)) { /* Normal->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 18; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 3)) { /* Narrow->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 26; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 2)) { /* Narrow->Normal */ + left_glitch_cycle = 19; + right_glitch_cycle = 27; + } + /* change occurs during drawing of line */ + /* delay change till next line */ + if (x > right_glitch_cycle) { + dmactl_changed = 1; + delayed_DMACTL = byte; + break; + /* change occurs during 'glitch' region */ + } + else if (x >= left_glitch_cycle && x <= right_glitch_cycle && anticmode > 1) { + set_dmactl_bug(); + } + } + else { + /* DMACTL width has decreased or HSCROL */ + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + } +#endif /* NEW_CYCLE_EXACT */ + ANTIC_DMACTL = byte; +#if defined(BASIC) || defined(CURSES_BASIC) + break; +#else + switch (byte & 0x03) { + case 0x00: + /* no antic_load when screen off */ + /* chars_read[NORMAL0] = 0; + chars_read[NORMAL1] = 0; + chars_read[NORMAL2] = 0; + chars_read[SCROLL0] = 0; + chars_read[SCROLL1] = 0; + chars_read[SCROLL2] = 0; */ + /* no draw_antic_* when screen off */ + /* chars_displayed[NORMAL0] = 0; + chars_displayed[NORMAL1] = 0; + chars_displayed[NORMAL2] = 0; + chars_displayed[SCROLL0] = 0; + chars_displayed[SCROLL1] = 0; + chars_displayed[SCROLL2] = 0; + x_min[NORMAL0] = 0; + x_min[NORMAL1] = 0; + x_min[NORMAL2] = 0; + x_min[SCROLL0] = 0; + x_min[SCROLL1] = 0; + x_min[SCROLL2] = 0; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + ch_offset[SCROLL0] = 0; + ch_offset[SCROLL1] = 0; + ch_offset[SCROLL2] = 0; */ + /* no borders when screen off, only background */ + /* left_border_chars = 48 - LCHOP - RCHOP; + right_border_start = 0; */ + break; + case 0x01: + chars_read[NORMAL0] = 32; + chars_read[NORMAL1] = 16; + chars_read[NORMAL2] = 8; + chars_read[SCROLL0] = 40; + chars_read[SCROLL1] = 20; + chars_read[SCROLL2] = 10; + chars_displayed[NORMAL0] = 32; + chars_displayed[NORMAL1] = 16; + chars_displayed[NORMAL2] = 8; + x_min[NORMAL0] = 32; + x_min[NORMAL1] = 32; + x_min[NORMAL2] = 32; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 32; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 16; + load_cycles[NORMAL2] = 8; + before_cycles[NORMAL0] = BEFORE_CYCLES; + before_cycles[SCROLL0] = BEFORE_CYCLES + 8; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES; + extra_cycles[SCROLL0] = 8 + BEFORE_CYCLES + 8; + left_border_chars = 8 - LCHOP; + right_border_start = (ATARI_WIDTH - 64) / 2; + break; + case 0x02: + chars_read[NORMAL0] = 40; + chars_read[NORMAL1] = 20; + chars_read[NORMAL2] = 10; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 40; + chars_displayed[NORMAL1] = 20; + chars_displayed[NORMAL2] = 10; + x_min[NORMAL0] = 16; + x_min[NORMAL1] = 16; + x_min[NORMAL2] = 16; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 40; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 20; + load_cycles[NORMAL2] = 10; + before_cycles[NORMAL0] = BEFORE_CYCLES + 8; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 8 + BEFORE_CYCLES + 8; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 4 - LCHOP; + right_border_start = (ATARI_WIDTH - 32) / 2; + break; + case 0x03: + chars_read[NORMAL0] = 48; + chars_read[NORMAL1] = 24; + chars_read[NORMAL2] = 12; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 42; + chars_displayed[NORMAL1] = 22; + chars_displayed[NORMAL2] = 12; + x_min[NORMAL0] = 12; + x_min[NORMAL1] = 8; + x_min[NORMAL2] = 0; + ch_offset[NORMAL0] = 3; + ch_offset[NORMAL1] = 1; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 47; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 24; + load_cycles[NORMAL2] = 12; + before_cycles[NORMAL0] = BEFORE_CYCLES + 16; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES + 16; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 3 - LCHOP; + right_border_start = (ATARI_WIDTH - 8) / 2; + break; + } + + ANTIC_missile_dma_enabled = (byte & 0x0c); /* no player dma without missile */ + ANTIC_player_dma_enabled = (byte & 0x08); + singleline = (byte & 0x10); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + + byte = ANTIC_HSCROL; /* update horizontal scroll data */ +/* ******* FALLTHROUGH ******* */ + case ANTIC_OFFSET_HSCROL: +/* TODO: make this truely cycle exact, and update cpu2antic and antic2cpu */ +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + ANTIC_HSCROL = byte &= 0x0f; + if (ANTIC_DMACTL & 3) { + chars_displayed[SCROLL0] = chars_displayed[NORMAL0]; + ch_offset[SCROLL0] = 4 - (byte >> 2); + x_min[SCROLL0] = x_min[NORMAL0]; + if (byte & 3) { + x_min[SCROLL0] += (byte & 3) - 4; + chars_displayed[SCROLL0]++; + ch_offset[SCROLL0]--; + } + chars_displayed[SCROLL2] = chars_displayed[NORMAL2]; + if ((ANTIC_DMACTL & 3) == 3) { /* wide playfield */ + ch_offset[SCROLL0]--; + if (byte == 4 || byte == 12) + chars_displayed[SCROLL1] = 21; + else + chars_displayed[SCROLL1] = 22; + if (byte <= 4) { + x_min[SCROLL1] = byte + 8; + ch_offset[SCROLL1] = 1; + } + else if (byte <= 12) { + x_min[SCROLL1] = byte; + ch_offset[SCROLL1] = 0; + } + else { + x_min[SCROLL1] = byte - 8; + ch_offset[SCROLL1] = -1; + } + /* technically, the part below is wrong */ + /* scrolling in mode 8,9 with HSCROL=13,14,15 */ + /* will set x_min=13,14,15 > 4*LCHOP = 12 */ + /* so that nothing is drawn on the far left side */ + /* of the screen. We could fix this, but only */ + /* by setting x_min to be negative. */ + x_min[SCROLL2] = byte; + ch_offset[SCROLL2] = 0; + } + else { + chars_displayed[SCROLL1] = chars_displayed[NORMAL1]; + ch_offset[SCROLL1] = 2 - (byte >> 3); + x_min[SCROLL1] = x_min[NORMAL0]; + if (byte) { + if (byte & 7) { + x_min[SCROLL1] += (byte & 7) - 8; + chars_displayed[SCROLL1]++; + ch_offset[SCROLL1]--; + } + x_min[SCROLL2] = x_min[NORMAL2] + byte - 16; + chars_displayed[SCROLL2]++; + ch_offset[SCROLL2] = 0; + } + else { + x_min[SCROLL2] = x_min[NORMAL2]; + ch_offset[SCROLL2] = 1; + } + } + + if (ANTIC_DMACTL & 2) { /* normal & wide playfield */ + load_cycles[SCROLL0] = 47 - (byte >> 2); + font_cycles[SCROLL0] = (47 * 4 + 1 - byte) >> 2; + load_cycles[SCROLL1] = (24 * 8 + 3 - byte) >> 3; + font_cycles[SCROLL1] = (24 * 8 + 1 - byte) >> 3; + load_cycles[SCROLL2] = byte < 0xc ? 12 : 11; + } + else { /* narrow playfield */ + font_cycles[SCROLL0] = load_cycles[SCROLL0] = 40; + font_cycles[SCROLL1] = load_cycles[SCROLL1] = 20; + load_cycles[SCROLL2] = 16; + } + } + break; + case ANTIC_OFFSET_VSCROL: + ANTIC_VSCROL = byte & 0x0f; + if (vscrol_off) { + lastline = ANTIC_VSCROL; + if (ANTIC_XPOS < VSCOF_C) + need_dl = dctr == lastline; + } + break; + case ANTIC_OFFSET_PMBASE: + ANTIC_PMBASE = byte; + pmbase_d = (byte & 0xfc) << 8; + pmbase_s = pmbase_d & 0xf8ff; + break; + case ANTIC_OFFSET_CHACTL: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_invert(); + } +#endif + invert_mask = byte & 2 ? 0x80 : 0; +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_blank(); + } +#endif + blank_mask = byte & 1 ? 0xe0 : 0x60; + if ((ANTIC_CHACTL ^ byte) & 4) { +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + /* timing for flip is the same as chbase */ + update_scanline_chbase(); + } +#endif + chbase_20 ^= 7; + } + ANTIC_CHACTL = byte; + break; + case ANTIC_OFFSET_CHBASE: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_chbase(); + } +#endif + ANTIC_CHBASE = byte; + chbase_20 = (byte & 0xfe) << 8; + if (ANTIC_CHACTL & 4) + chbase_20 ^= 7; + break; +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + case ANTIC_OFFSET_WSYNC: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + if (ANTIC_xpos <= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] && ANTIC_xpos_limit >= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C]) + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ +/* note that if ANTIC_WSYNC_C is a stolen cycle, then ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C+1]-1 corresponds +to the last cpu cycle < ANTIC_WSYNC_C. Then the cpu will see this cycle if WSYNC +is not delayed, since it really occurred one cycle after the STA WSYNC. But if +WSYNC is "delayed" then ANTIC_xpos is the next cpu cycle after ANTIC_WSYNC_C (which was stolen +), so it is one greater than the above value. EG if ANTIC_WSYNC_C=10 and is stolen +(and let us say cycle 9,11 are also stolen, and 8,12 are not), then in the first +case we have ANTIC_cpu2antic_ptr[ANTIC_WSYNC_C+1]-1 = 8 and in the 2nd =12 */ + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1] - 1; + } + else { + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1]; + } + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ + ANTIC_delayed_wsync = 0; + } + else { + ANTIC_delayed_wsync = 1; + } + } + } + else { + ANTIC_delayed_wsync = 0; +#endif /* NEW_CYCLE_EXACT */ + if (ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C) + ANTIC_xpos = ANTIC_WSYNC_C; + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + } +#ifdef NEW_CYCLE_EXACT + } +#endif /* NEW_CYCLE_EXACT */ + break; + case ANTIC_OFFSET_NMIEN: + ANTIC_NMIEN = byte; + break; + case ANTIC_OFFSET_NMIRES: + ANTIC_NMIST = 0x1f; + break; + default: + break; + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void ANTIC_StateSave(void) +{ + StateSav_SaveUBYTE(&ANTIC_DMACTL, 1); + StateSav_SaveUBYTE(&ANTIC_CHACTL, 1); + StateSav_SaveUBYTE(&ANTIC_HSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_VSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_PMBASE, 1); + StateSav_SaveUBYTE(&ANTIC_CHBASE, 1); + StateSav_SaveUBYTE(&ANTIC_NMIEN, 1); + StateSav_SaveUBYTE(&ANTIC_NMIST, 1); + StateSav_SaveUBYTE(&IR, 1); + StateSav_SaveUBYTE(&anticmode, 1); + StateSav_SaveUBYTE(&dctr, 1); + StateSav_SaveUBYTE(&lastline, 1); + StateSav_SaveUBYTE(&need_dl, 1); + StateSav_SaveUBYTE(&vscrol_off, 1); + + StateSav_SaveUWORD(&ANTIC_dlist, 1); + StateSav_SaveUWORD(&screenaddr, 1); + + StateSav_SaveINT(&ANTIC_xpos, 1); + StateSav_SaveINT(&ANTIC_xpos_limit, 1); + StateSav_SaveINT(&ANTIC_ypos, 1); +} + +void ANTIC_StateRead(void) +{ + StateSav_ReadUBYTE(&ANTIC_DMACTL, 1); + StateSav_ReadUBYTE(&ANTIC_CHACTL, 1); + StateSav_ReadUBYTE(&ANTIC_HSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_VSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_PMBASE, 1); + StateSav_ReadUBYTE(&ANTIC_CHBASE, 1); + StateSav_ReadUBYTE(&ANTIC_NMIEN, 1); + StateSav_ReadUBYTE(&ANTIC_NMIST, 1); + StateSav_ReadUBYTE(&IR, 1); + StateSav_ReadUBYTE(&anticmode, 1); + StateSav_ReadUBYTE(&dctr, 1); + StateSav_ReadUBYTE(&lastline, 1); + StateSav_ReadUBYTE(&need_dl, 1); + StateSav_ReadUBYTE(&vscrol_off, 1); + + StateSav_ReadUWORD(&ANTIC_dlist, 1); + StateSav_ReadUWORD(&screenaddr, 1); + + StateSav_ReadINT(&ANTIC_xpos, 1); + StateSav_ReadINT(&ANTIC_xpos_limit, 1); + StateSav_ReadINT(&ANTIC_ypos, 1); + + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, ANTIC_DMACTL); + ANTIC_PutByte(ANTIC_OFFSET_CHACTL, ANTIC_CHACTL); + ANTIC_PutByte(ANTIC_OFFSET_PMBASE, ANTIC_PMBASE); + ANTIC_PutByte(ANTIC_OFFSET_CHBASE, ANTIC_CHBASE); +} + +#endif /* BASIC */ diff --git a/MCUME_teensy/teensy5200/antic.h b/MCUME_teensy/teensy5200/antic.h new file mode 100644 index 0000000..0a89e66 --- /dev/null +++ b/MCUME_teensy/teensy5200/antic.h @@ -0,0 +1,136 @@ +#ifndef ANTIC_H_ +#define ANTIC_H_ + +#include "atari.h" +/* + * Offset to registers in custom relative to start of antic memory addresses. + */ + +#define ANTIC_OFFSET_DMACTL 0x00 +#define ANTIC_OFFSET_CHACTL 0x01 +#define ANTIC_OFFSET_DLISTL 0x02 +#define ANTIC_OFFSET_DLISTH 0x03 +#define ANTIC_OFFSET_HSCROL 0x04 +#define ANTIC_OFFSET_VSCROL 0x05 +#define ANTIC_OFFSET_PMBASE 0x07 +#define ANTIC_OFFSET_CHBASE 0x09 +#define ANTIC_OFFSET_WSYNC 0x0a +#define ANTIC_OFFSET_VCOUNT 0x0b +#define ANTIC_OFFSET_PENH 0x0c +#define ANTIC_OFFSET_PENV 0x0d +#define ANTIC_OFFSET_NMIEN 0x0e +#define ANTIC_OFFSET_NMIRES 0x0f +#define ANTIC_OFFSET_NMIST 0x0f + +extern UBYTE ANTIC_CHACTL; +extern UBYTE ANTIC_CHBASE; +extern UWORD ANTIC_dlist; +extern UBYTE ANTIC_DMACTL; +extern UBYTE ANTIC_HSCROL; +extern UBYTE ANTIC_NMIEN; +extern UBYTE ANTIC_NMIST; +extern UBYTE ANTIC_PMBASE; +extern UBYTE ANTIC_VSCROL; + +extern int ANTIC_break_ypos; +extern int ANTIC_ypos; +extern int ANTIC_wsync_halt; + +/* Current clock cycle in a scanline. + Normally 0 <= ANTIC_xpos && ANTIC_xpos < ANTIC_LINE_C, but in some cases ANTIC_xpos >= ANTIC_LINE_C, + which means that we are already in line (ypos + 1). */ +extern int ANTIC_xpos; + +/* ANTIC_xpos limit for the currently running 6502 emulation. */ +extern int ANTIC_xpos_limit; + +/* Main clock value at the beginning of the current scanline. */ +extern unsigned int ANTIC_screenline_cpu_clock; + +/* Current main clock value. */ +#define ANTIC_CPU_CLOCK (ANTIC_screenline_cpu_clock + ANTIC_XPOS) + +#define ANTIC_NMIST_C 6 +#define ANTIC_NMI_C 12 + +/* Number of cycles per scanline. */ +#define ANTIC_LINE_C 114 + +/* STA WSYNC resumes here. */ +#define ANTIC_WSYNC_C 106 + +/* Number of memory refresh cycles per scanline. + In the first scanline of a font mode there are actually less than ANTIC_DMAR + memory refresh cycles. */ +#define ANTIC_DMAR 9 + +extern int ANTIC_artif_mode; +extern int ANTIC_artif_new; + +extern UBYTE ANTIC_PENH_input; +extern UBYTE ANTIC_PENV_input; + +int ANTIC_Initialise(void); +void ANTIC_Reset(void); +void ANTIC_Frame(int draw_display); +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects); +void ANTIC_PutByte(UWORD addr, UBYTE byte); + +UBYTE ANTIC_GetDLByte(UWORD *paddr); +UWORD ANTIC_GetDLWord(UWORD *paddr); + +/* always call ANTIC_UpdateArtifacting after changing ANTIC_artif_mode */ +void ANTIC_UpdateArtifacting(void); + +/* Video memory access */ +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size); +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val); + +/* GTIA calls it on a write to PRIOR */ +void ANTIC_SetPrior(UBYTE prior); + +/* Saved states */ +void ANTIC_StateSave(void); +void ANTIC_StateRead(void); + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in memory[0x4000..0x7fff], + then NULL. */ +extern const UBYTE *ANTIC_xe_ptr; + +/* PM graphics for GTIA */ +extern int ANTIC_player_dma_enabled; +extern int ANTIC_missile_dma_enabled; +extern int ANTIC_player_gra_enabled; +extern int ANTIC_missile_gra_enabled; +extern int ANTIC_player_flickering; +extern int ANTIC_missile_flickering; + +/* ANTIC colour lookup tables, used by GTIA */ +extern UWORD ANTIC_cl[128]; +extern ULONG ANTIC_lookup_gtia9[16]; +extern ULONG ANTIC_lookup_gtia11[16]; +extern UWORD ANTIC_hires_lookup_l[128]; + +#ifdef NEW_CYCLE_EXACT +#define ANTIC_NOT_DRAWING -999 +#define ANTIC_DRAWING_SCREEN (ANTIC_cur_screen_pos!=ANTIC_NOT_DRAWING) +extern int ANTIC_delayed_wsync; +extern int ANTIC_cur_screen_pos; +extern const int *ANTIC_cpu2antic_ptr; +extern const int *ANTIC_antic2cpu_ptr; +void ANTIC_UpdateScanline(void); +void ANTIC_UpdateScanlinePrior(UBYTE byte); + +#define ANTIC_XPOS ( ANTIC_DRAWING_SCREEN ? ANTIC_cpu2antic_ptr[ANTIC_xpos] : ANTIC_xpos ) +#else +#define ANTIC_XPOS ANTIC_xpos +#endif /* NEW_CYCLE_EXACT */ + +#ifndef NO_SIMPLE_PAL_BLENDING +/* Set to 1 to enable simplified emulation of PAL blending, that uses only + the standard 8-bit palette. */ +extern int ANTIC_pal_blending; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +#endif /* ANTIC_H_ */ diff --git a/MCUME_teensy/teensy5200/atari.h b/MCUME_teensy/teensy5200/atari.h new file mode 100644 index 0000000..f9cbd87 --- /dev/null +++ b/MCUME_teensy/teensy5200/atari.h @@ -0,0 +1,63 @@ +#ifndef __ATARI__ +#define __ATARI__ + +// define globals +#define MEMORY_SIZE 0xC000 //0x10000 + +#define ATARI_WIDTH 384 +#define ATARI_HEIGHT 240 +#define TV_PAL 312 +#define TV_NTSC 262 + +//#define DIRTYRECT 1 +//#define WORDS_UNALIGNED_OK 1 +//#define ALTERNATE_LOOP_COUNTERS 1 +//#define NEW_CYCLE_EXACT 1 +//#define USE_CURSES 1 +//#define WORDS_BIGENDIAN 1 +//#define SYNCHRONIZED_SOUND 1 +#define CLIP_SOUND 1 +#define STEREO_SOUND 1 +#define POKEYSND_SIGNED_SAMPLES 1 +#define PAGED_MEM 1 +#define SOUND 1 +#define NO_SIMPLE_PAL_BLENDING 1 +#define ANALOGJOY 1 + +#define max_ypos tv_mode + +extern int tv_mode; + + + +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +//data types +#define UBYTE unsigned char +#define UWORD unsigned short +#define ULONG unsigned int + +#define SBYTE signed char +#define SWORD signed short +#define SLONG signed int + +#define int8 char +#define int16 short +#define int32 int + +#define uint8 unsigned int8 +#define uint16 unsigned int16 +#define uint32 unsigned int32 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#endif + + + +#endif diff --git a/MCUME_teensy/teensy5200/atari5200.c b/MCUME_teensy/teensy5200/atari5200.c new file mode 100644 index 0000000..fd22297 --- /dev/null +++ b/MCUME_teensy/teensy5200/atari5200.c @@ -0,0 +1,601 @@ +#include "atari5200.h" +#include +#include "memory.h" +#include "cpu.h" +#include "atari.h" +#include "pokey.h" +#include "rom.h" +#include "antic.h" +#include "gtia.h" +#include "colours.h" +#include "emuapi.h" +#if HAS_SND +#include "pokeysnd.h" +#endif + + +// Controllers +typedef struct +{ + // All values are 1 or 0, or perhaps not... + int left; + int right; + int up; + int down; + + unsigned char analog_h; + unsigned char analog_v; + + int trig; + int side_button; + + // These may be set to 1. The core handles clearing them. + // [BREAK] [ # ] [ 0 ] [ * ] + // [RESET] [ 9 ] [ 8 ] [ 7 ] + // [PAUSE] [ 6 ] [ 5 ] [ 4 ] + // [START] [ 3 ] [ 2 ] [ 1 ] + int key[16]; + int last_key_still_pressed; + + int lastRead; +} CONTROLLER; + + +#define POT_MAX 223 +#define POT_CENTRE 115 +#define POT_LEFT (POT_CENTRE-100) //15 +#define POT_RIGHT (POT_CENTRE+100) // 210 + +#define CONSOL 0xC01F + +#define NUM_16K_ROM_MAPS 200 + +typedef struct +{ // 80 bytes + char crc[8]; + int mapping; + char description[68]; +} Map16k_t; + + +// global variables +int tv_mode = TV_PAL; +//unsigned char mem[MEMORY_SIZE]; +unsigned char * memory=NULL; //mem; + +// local variables +static char logmsg[64]; + +static CONTROLLER cont1, cont2; +static int pot_max_left = POT_LEFT; +static int pot_max_right = POT_RIGHT; + +static int framesdrawn=0; + +/* MEMORY MAP INDEX (0 is invalid) +* 0-3FFF RAM (read/write) 1 +* 4000-BFFF ROM (ro) 2 +* C000-C0FF GTIA regs 3 +* D300-D3FF Serial??? 7 +* D400-D4FF ANTIC regs 4 +* E000 I/O expansion 5 +* E800-E8FF POKEY regs 6 +* EB00-EBFF also POKEY regs??? 6 +* F800-FFFF ROM (BIOS)(ro) 2 +*/ + + +// memory CPU read (load) handler +uint8 Atari_GetByte(uint16 addr) +{ + if (addr < 0xC000) { // MAPPER_RAM or MAPPER_ROM + return(memory[addr]); + } + else if (addr < 0xC100) { // MAPPER_GTIA + return GTIA_GetByte(addr,1); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + return ANTIC_GetByte(addr,1); + } + else if ( (addr >= 0xE800) && (addr < 0xE900) ) { // MAPPER_POKEY + return POKEY_GetByte(addr,1); + } + else if ( (addr >= 0xEB00) && (addr < 0xEC00) ) { // MAPPER_POKEY mirror + return POKEY_GetByte(addr,1); + } + else if (addr >= 0xF800) { // MAPPER_ROM (bios) + return(BIOSData[addr-0xF800]); + } + + //case MAPPER_IOEXP: // I/O exp read + // return IOEXPread(addr); + + return 0xff; +} + +// memory CPU write (store) handler +void Atari_PutByte(uint16 addr, uint8 byte) +{ + if (addr < 0x4000) { // MAPPER_RAM + memory[addr] = byte; + } + else if (addr < 0xC000) { // MAPPER_ROM + } + else if (addr < 0xC100) { // MAPPER_GTIA + GTIA_PutByte(addr, byte); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + ANTIC_PutByte(addr, byte); + } + else if ( (addr >= 0xE800) && (addr < 0xE900) ) { // MAPPER_POKEY + POKEY_PutByte(addr, byte); + } + else if ( (addr >= 0xEB00) && (addr < 0xEC00) ) { // MAPPER_POKEY mirror + POKEY_PutByte(addr, byte); + } + //else if (addr >= 0xF800) { // MAPPER_ROM (bios) + // POKEY_PutByte(addr, byte); + //} + + //case MAPPER_IOEXP: // I/O exp write + // IOEXPwrite(addr, byte); +} + + +// check keyboard and set kbcode on VBI +void INPUT_Scanline(void) +{ + // NB: 5200 will do a keyboard IRQ every 32 scanlines if a key is held down + CONTROLLER *which = NULL; + UBYTE consol=GTIA_GetByte(CONSOL,1); + switch (consol & 0x03) { + case 0: which = &cont1; break; + case 1: which = &cont2; break; + // 3 and 4 in the future + default: return; + } + + // "loose bit" (bit 5 of KBCODE) - fluctuates 0 or 1 randomly + uint8 loose_bit = (framesdrawn & 0x1) << 5; + + // Default to "key not pressed" + POKEY_KBCODE = loose_bit | 0x1F; + which->last_key_still_pressed = 0; + + for (int8 i = 0; i < 16; i++) + { + if (which->key[i]) + { + //emu_printi(i); +/* 2016-06-18 - commented out (reset in HostDoEvents()) + which->key[i] = 0; + which->last_key_still_pressed = 0; + + // Don't respond to the same thing twice in a row... + if (i == which->lastRead) + { + which->last_key_still_pressed = 1; // flag key still held + return; + } +*/ + if (i == which->lastRead) + which->last_key_still_pressed = 1; // flag key still held + + which->lastRead = i; + + // Write in the change + POKEY_KBCODE = (i << 1) | loose_bit | 0x1; + + // set KEY interrupt bit (bit 6) to 0 (key int req "on") + POKEY_IRQST &= 0xbf; + + // check irqen and do interrupt if bit 6 set + if(POKEY_IRQEN & 0x40) + { + CPU_GenerateIRQ(); + } + + return; + } + } + + // 2016-06-18 - Reset kbd irq if no key pressed + // NO - "POKEY_IRQST is latched, only reset by write to IRQEN" + //POKEY_IRQST |= 0x40; + + // If no keys are down at all, we can write anything again + which->lastRead = 0xFF; + + // This should in theory work but in practise breaks some games? + //POKEY_KBCODE = which->lastRead = 0xFF; +} + +uint8 INPUT_handle_trigger(uint16 POKEYreg) +{ + CONTROLLER *which; + switch (POKEYreg) + { + case 0: case 1: which = &cont1; if (which->trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1; break; + case 2: case 3: which = &cont2; if (which->trig) GTIA_TRIG[1]=0; else GTIA_TRIG[1]=1; break; + // 3 and 4 in the future + default: return 0x80; + } + + + // Top to bottom + if (POKEYreg & 1) + { +#if ANALOGJOY + return which->analog_v;; +#else + if (which->up) return pot_max_left; + else if (which->down) return pot_max_right; + else return POT_CENTRE; +#endif + } + else + { +#if ANALOGJOY + return which->analog_h;; +#else + if (which->left) return pot_max_left; + else if (which->right) return pot_max_right; + else return POT_CENTRE; +#endif + } +} + +uint8 INPUT_handle_skstat(uint16 POKEYreg) +{ + uint8 skstatreg = 0x0C; + UBYTE consol=GTIA_GetByte(CONSOL,1); + //emu_printi(consol&3); + switch(consol & 0x03) { + case 0 : // controller 1 + if(cont1.side_button) skstatreg &= 0x07; + if(cont1.last_key_still_pressed) skstatreg &= 0x0B; + break; + case 1 : // controller 2 + if(cont2.side_button) skstatreg &= 0x07; + if(cont2.last_key_still_pressed) skstatreg &= 0x0B; + break; + } + return skstatreg; +} + + + + + +static void load_CART(char * cartname) +{ + int i, mapnum, flen; + char sig[40]; + unsigned long crc32; + + flen = emu_FileSize(cartname); + + emu_FileOpen(cartname); + // set POT left and right values to default + pot_max_left = POT_LEFT; + pot_max_right = POT_RIGHT; + + // load cart into memory image + // Note: 5200 cartridge mapping has only a few + // variations, so this mess of code below + // works, and it avoids having a cartridge + // config file. + switch (flen) + { + case 32768: // 32k cart + for (i = 0; i < 32768; i++) memory[0x4000 + i] = emu_FileGetc(); + // get crc32 from 32k data + crc32 = calc_crc32(memory + 0x4000, 32768); + sprintf(logmsg, "32 Trying to load '%s', crc32=0x%08X\n", cartname, (unsigned int)crc32); + emu_printf(logmsg); + break; + case 16384: // 16k cart + // here we hack and load it twice (mapped like that?) + for (i = 0; i < 16384; i++) memory[0x4000 + i] = memory[0x8000 + i] = emu_FileGetc(); + + // get crc32 from 16k data + crc32 = calc_crc32(memory + 0x4000, 16384); + sprintf(logmsg, "16 Trying to load '%s', crc32=0x%08X\n", cartname, (unsigned int)crc32); + emu_printf(logmsg); + + // get cart "signature" + strncpy(sig, &memory[0xBFE8], 20); + sig[20] = 0; + //printf("Cart signature is %s\n", sig); + + // check for Moon Patrol + if (strcmp("@@@@@moon@patrol@@@@", sig) == 0) { + //printf("Mapping for Moon Patrol (16+16)\n"); + // already loaded correctly + break; + } + + // check for SW-Arcade + if (strncmp("asfilmLt", sig, 8) == 0) { + //printf("Mapping for SW-Arcade (16+16)\n"); + // already loaded correctly + break; + } + + // check for Super Pacman using start vector + if ((memory[0xBFFF] == 0x92) && (memory[0xBFFE] == 0x55)) { + //printf("Mapping for Super Pacman (16+16)\n"); + // already loaded correctly + break; + } + + // check for other carts with reset vec 8000h + // (eg: Space Shuttle) + if (memory[0xBFFF] == 0x80) { + //printf("Mapping for reset vec = 8000h (16+16)\n"); + // already loaded corectly + break; + } + + // Tempest + if (memory[0xBFFF] == 0x81) { + //printf("Mapping for reset vec = 81xxh eg: Tempest (16+16)\n"); + // already loaded corectly + break; + } + + + // PAM Diagnostics v2.0 + // NB: this seems to prevent the emu from crashing when running + // pamdiag2.bin + if ((memory[0xBFFF] == 0x9F) && (memory[0xBFFE] == 0xD0)) { + //printf("Mapping for reset vector = $9FD0 (PAM DIAG 2.0)\n"); + // move cart up by 0x1000 + break; + } + + + +#ifdef SKIP + // Notes: check for megamania cart + // 8K mirrored at 0x8000 and 0xA000, nothing from 0x4000-0x7FFF + // see if we have a 16k mapping for this cart in jum52.cfg + sprintf(sig, "%08X", crc32); + mapnum = 0; // invalid + + // initialise 16k rom maps + emu_printf("Allocating p16kMaps"); + int num16kMappings = 0; // pointer to 16k rom mappings and number of 16k rom mappings + Map16k_t * p16kMaps = (Map16k_t *)emu_TmpMemory(); //emu_Malloc(sizeof(Map16k_t) * NUM_16K_ROM_MAPS); + if (p16kMaps) memset(p16kMaps, 0, sizeof(Map16k_t) * NUM_16K_ROM_MAPS); + + for (i = 0; i < num16kMappings; i++) { + if (0 == strncmp(sig, p16kMaps[i].crc, 8)) { + mapnum = p16kMaps[i].mapping; + sprintf(logmsg, "Mapping %d found for crc=0x%s !\n", mapnum, sig); + emu_printf(logmsg); + i = num16kMappings; // exit search + } + } + //emu_printf("freeing p16kMaps"); + //emu_Free(p16kMaps); + // if the mapping was 16+16, then break, since we have loaded it 16+16 already + if (1 == mapnum) + break; +#endif + // default to 16k+8k mapping + emu_FileSeek(0); + for(i=0; i<16384; i++) memory[0x6000 + i] = emu_FileGetc(); + for(i=0; i<8192; i++) memory[0xA000 + i] = memory[0x8000 + i]; + break; + case 8192 : // 8k cart + // Load mirrored 4 times + for(i = 0; i < 8192; i++) + { + uint8 c = emu_FileGetc(); + memory[0x4000 + i] = c; + memory[0x6000 + i] = c; + memory[0x8000 + i] = c; + memory[0xA000 + i] = c; + } + // get crc32 from 8k data + crc32 = calc_crc32(memory + 0x4000, 8192); + sprintf(logmsg, "8k cart load '%s', crc32=0x%08X\n", cartname, (unsigned int)crc32); + emu_printf(logmsg); + break; + default: // oops! + // these rom dumps are strange, because some carts are 8K, yet + // all the dumps are either 16K or 32K! + sprintf(logmsg, "Cartridge ROM size not 16K or 32K. Unable to load."); + emu_printf(logmsg); + return -1; + break; + } + + // check for Pengo + if (strncmp("pengo", memory + 0xBFEF, 8) == 0) { + emu_printf("Pengo detected! Switching controller to Pengo mode."); + pot_max_left = 70; + pot_max_right = 170; + } + + // check for Centipede + if (strncmp("centipede", memory + 0xBFEF, 8) == 0) { + emu_printf("centipede detected! Switching controller to centipede mode."); + pot_max_left = (POT_CENTRE-10); + pot_max_right = (POT_CENTRE+10); + } + + // is cartridge PAL-compatible? + // (doesn't seem to work!) + //if(memory[0xBFE7] == 0x02) printf("Cart is PAL-compatible!\n"); + //else printf("Cart is *not* PAL-compatible.\n"); + + emu_FileClose(); +} + +static void Initialise(void) +{ + int i; + + emu_printf("Initialising ..."); + + // Set up memory area + memset(memory, 0, MEMORY_SIZE); + + // init controllers + memset(&cont1, 0, sizeof(CONTROLLER)); + memset(&cont2, 0, sizeof(CONTROLLER)); + + pot_max_left = POT_LEFT; + pot_max_right = POT_RIGHT; + cont1.analog_h = POT_CENTRE; + cont1.analog_v = POT_CENTRE; + cont2.analog_h = POT_CENTRE; + cont2.analog_v = POT_CENTRE; +} + +void at5_Init(void) +{ + int i; + + // Palette + for (i = 0; i < PALETTE_SIZE; i++) + { + emu_SetPaletteEntry(R32(colourtable[i]), G32(colourtable[i]), B32(colourtable[i]), i); + } + +#if HAS_SND + emu_sndInit(); + POKEYSND_Init(POKEYSND_FREQ_17_EXACT, 44100, 1, POKEYSND_BIT16); +#endif + + emu_printf("Allocating RAM"); + if (memory == NULL) memory = emu_Malloc(MEMORY_SIZE); + + Initialise(); +} + +static int prevKey=-1; +static int countKey = 0; + +void at5_Step(void) +{ + //emu_printf("step"); + + int k,j; + j=emu_ReadKeys(); + k=emu_GetPad(); + + CONTROLLER * which; + + if (j & 0x8000) which=&cont2; + else which=&cont1; + + // Start + if (j & MASK_KEY_USER1) + which->key[12] = 1; + else + which->key[12] = 0; + + // 1 + if (j & MASK_KEY_USER3) + which->key[15] = 1; + else + which->key[15] = 0; + + // 2 + //if (j & MASK_KEY_USER4) + // which->key[14] = 1; + //else + // which->key[14] = 0; + + if (countKey) { + which->key[prevKey] = 1; + //emu_printi(cont1.key[prevKey]); + countKey--; + } + else { + if (prevKey>0) { + //emu_printf("resetting"); + which->key[prevKey] = 0; + prevKey=-1; + //emu_printi(cont1.key[prevKey]); + } + if (k) { + prevKey = k-1; + which->key[prevKey] = 1; + //emu_printi(cont1.key[prevKey]); + countKey = 4; + } + } + + // Joystick side button, trigger and directions + if (j & MASK_JOY2_BTN) + which->trig = 1; + else + which->trig = 0; + if (j & MASK_KEY_USER2) + which->side_button = 1; + else + which->side_button = 0; + if (j & MASK_JOY2_DOWN) + which->down = 1; + else + which->down = 0; + if (j & MASK_JOY2_UP) + which->up = 1; + else + which->up = 0; + if (j & MASK_JOY2_RIGHT) + which->left = 1; + else + which->left = 0; + if (j & MASK_JOY2_LEFT) + which->right = 1; + else + which->right = 0; + + which->analog_h = emu_ReadAnalogJoyX(0,230); + which->analog_v = emu_ReadAnalogJoyY(0,230); + + GTIA_Frame(); + ANTIC_Frame(1); + emu_DrawVsync(); + POKEY_Frame(); + //int i; + //for (i=0xC000; i< 0x10000; i++) + // if (memory[i] !=0) emu_printf("bug"); + + framesdrawn = framesdrawn +1; +} + + + +void at5_Start(char * cartname) +{ + int i; + + load_CART(cartname); + + emu_printf("antic"); + ANTIC_Initialise(); + emu_printf("gtia"); + GTIA_Initialise(); + emu_printf("pokey"); + POKEY_Initialise(); + GTIA_TRIG[0]=1; + GTIA_TRIG[1]=1; + GTIA_TRIG[2]=1; + GTIA_TRIG[3]=1; + emu_printf("6502 reset"); + CPU_Reset(); + + emu_printf("init done"); +} + + + + + + diff --git a/MCUME_teensy/teensy5200/atari5200.h b/MCUME_teensy/teensy5200/atari5200.h new file mode 100644 index 0000000..45088b1 --- /dev/null +++ b/MCUME_teensy/teensy5200/atari5200.h @@ -0,0 +1,4 @@ +extern void at5_Init(void); +extern void at5_Step(void); +extern void at5_Start(char * filename); + diff --git a/MCUME_teensy/teensy5200/bmpjoy.h b/MCUME_teensy/teensy5200/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensy5200/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensy5200/bmptft.h b/MCUME_teensy/teensy5200/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensy5200/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy5200/bmpvbar.h b/MCUME_teensy/teensy5200/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensy5200/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy5200/bmpvga.h b/MCUME_teensy/teensy5200/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensy5200/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy5200/colours.h b/MCUME_teensy/teensy5200/colours.h new file mode 100644 index 0000000..a31db53 --- /dev/null +++ b/MCUME_teensy/teensy5200/colours.h @@ -0,0 +1,68 @@ +const unsigned int colourtable[256] = +{ + 0x0, 0x1c1c1c, 0x393939, 0x595959, + 0x797979, 0x929292, 0xababab, 0xbcbcbc, + 0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec, + 0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff, + 0x391701, 0x5e2304, 0x833008, 0xa54716, + 0xc85f24, 0xe37820, 0xff911d, 0xffab1d, + 0xffc51d, 0xffce34, 0xffd84c, 0xffe651, + 0xfff456, 0xfff977, 0xffff98, 0xffff98, + 0x451904, 0x721e11, 0x9f241e, 0xb33a20, + 0xc85122, 0xe36920, 0xff811e, 0xff8c25, + 0xff982c, 0xffae38, 0xffc545, 0xffc559, + 0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1, + 0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119, + 0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161, + 0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e, + 0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce, + 0x50568, 0x3b136d, 0x712272, 0x8b2a8c, + 0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd, + 0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd, + 0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff, + 0x280479, 0x400984, 0x590f90, 0x70249d, + 0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed, + 0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff, + 0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff, + 0x35088a, 0x420aad, 0x500cd0, 0x6428d0, + 0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec, + 0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff, + 0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff, + 0x51e81, 0x626a5, 0x82fca, 0x263dd4, + 0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff, + 0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff, + 0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff, + 0xc048b, 0x2218a0, 0x382db5, 0x483ec7, + 0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff, + 0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff, + 0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff, + 0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac, + 0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec, + 0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff, + 0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff, + 0x2f4302, 0x395202, 0x446103, 0x417a12, + 0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55, + 0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d, + 0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6, + 0xa4108, 0xd540a, 0x10680d, 0x137d0f, + 0x169212, 0x19a514, 0x1cb917, 0x1ec919, + 0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d, + 0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a, + 0x4410b, 0x5530e, 0x66611, 0x77714, + 0x88817, 0x99b1a, 0xbaf1d, 0x48c41f, + 0x86d922, 0x8fe924, 0x99f927, 0xa8fc41, + 0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81, + 0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e, + 0x4f7420, 0x598324, 0x649228, 0x82a12e, + 0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945, + 0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53, + 0x263001, 0x243803, 0x234005, 0x51541b, + 0x806931, 0x978135, 0xaf993a, 0xc2a73e, + 0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836, + 0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d, + 0x401a02, 0x581f05, 0x702408, 0x8d3a13, + 0xab511f, 0xb56427, 0xbf7730, 0xd0853a, + 0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c, + 0xffc160, 0xffc671, 0xffcb83, 0xffcb83, +}; + diff --git a/MCUME_teensy/teensy5200/cpu.c b/MCUME_teensy/teensy5200/cpu.c new file mode 100644 index 0000000..cc73b28 --- /dev/null +++ b/MCUME_teensy/teensy5200/cpu.c @@ -0,0 +1,2444 @@ +/* + * cpu.c - 6502 CPU emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2005 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* + Configuration symbols + ===================== + + Define CPU65C02 if you don't want 6502 JMP() bug emulation. + Define CYCLES_PER_OPCODE to update ANTIC_xpos in each opcode's emulation. + Define MONITOR_BREAK if you want code breakpoints and execution history. + Define MONITOR_BREAKPOINTS if you want user-defined breakpoints. + Define MONITOR_PROFILE if you want 6502 opcode profiling. + Define MONITOR_TRACE if you want the code to be disassembled while it is executed. + Define NO_GOTO if you compile with GCC, but want switch() rather than goto *. + Define NO_V_FLAG_VARIABLE to don't use local (static) variable V for the V flag. + Define PC_PTR to emulate 6502 Program Counter using UBYTE *. + Define PREFETCH_CODE to always fetch 2 bytes after the opcode. + Define WRAP_64K to correctly emulate instructions that wrap at 64K. + Define WRAP_ZPAGE to prevent incorrect access to the address 0x0100 in zeropage + indirect mode. + + + Limitations & Known bugs + ======================== + + There is no emulation of the bug in the BRK instruction executed simultaneously + with another interrupt. + + The 6502 emulation ignores memory attributes for instruction fetch. + This is because the instruction must come from either RAM or ROM. + A program that executes instructions from within hardware addresses will fail + since there is never any usable code there. + + The 6502 emulation also ignores memory attributes for accesses to page 0 and page 1. + */ + + +#ifdef SKIP +#include "config.h" +#include +#include /* exit() */ + +#include "cpu.h" +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "antic.h" +#include "atari.h" +#include "esc.h" +#include "memory.h" +#include "monitor.h" +#ifndef BASIC +#include "statesav.h" +#ifndef __PLUS +#include "ui.h" +#endif +#endif /* BASIC */ +#endif /* ASAP */ +#else + +#include +#include /* exit() */ +#include "cpu.h" +#include "antic.h" +#include "memory.h" + +#define ESC_Run(x) + +#endif + + +/* For Atari Basic loader */ +void (*CPU_rts_handler)(void) = NULL; + +/* 6502 instruction profiling */ +#ifdef MONITOR_PROFILE +int CPU_instruction_count[256]; +#endif + +/* Execution history */ +#ifdef MONITOR_BREAK +UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +unsigned int CPU_remember_PC_curpos = 0; +int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; +UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +unsigned int CPU_remember_jmp_curpos = 0; +#define INC_RET_NESTING MONITOR_ret_nesting++ +#else /* MONITOR_BREAK */ +#define INC_RET_NESTING +#endif /* MONITOR_BREAK */ + +UBYTE CPU_cim_encountered = FALSE; +UBYTE CPU_IRQ; + +#ifdef FALCON_CPUASM + +#if defined(PAGED_MEM) || defined(PAGED_ATTRIB) +#error cpu_m68k.asm cannot work with paged memory/attributes +#endif + +#if defined(MONITOR_BREAKPOINTS) +#error cpu_m68k.asm does not support user-defined breakpoints +#endif + +#if defined(MONITOR_TRACE) +#error cpu_m68k.asm does not support disassembling the code while it is executed +#endif + +#else /* FALCON_CPUASM */ + +/* Windows headers define it */ +#undef ABSOLUTE + +#ifndef __GNUC__ +#define NO_GOTO +#endif + +/* #define CYCLES_PER_OPCODE */ + +/* #define MONITOR_PROFILE */ + +/* #define NO_V_FLAG_VARIABLE */ + +/* If PC_PTR is defined, local PC is "const UBYTE *", otherwise it's UWORD. */ +/* #define PC_PTR */ + +/* If PREFETCH_CODE is defined, 2 bytes after the opcode are always fetched. */ +/* #define PREFETCH_CODE */ + + +/* 6502 stack handling */ +#define PL MEMORY_dGetByte(0x0100 + ++S) +#define PH(x) MEMORY_dPutByte(0x0100 + S--, x) +#define PHW(x) PH((x) >> 8); PH((x) & 0xff) + +/* 6502 code fetching */ +#ifdef PC_PTR +#define GET_PC() (PC - MEMORY_mem) +#define SET_PC(newpc) (PC = MEMORY_mem + (newpc)) +#define PHPC { UWORD tmp = PC - MEMORY_mem; PHW(tmp); } +#define GET_CODE_BYTE() (*PC++) +#define PEEK_CODE_BYTE() (*PC) +#if !defined(WORDS_BIGENDIAN) && defined(WORDS_UNALIGNED_OK) +#define PEEK_CODE_WORD() (*(const UWORD *) PC) +#else +#define PEEK_CODE_WORD() (*PC + (PC[1] << 8)) +#endif +#else /* PC_PTR */ +#define GET_PC() PC +#define SET_PC(newpc) (PC = (newpc)) +#define PHPC PHW(PC) +#define GET_CODE_BYTE() MEMORY_dGetByte(PC++) +#define PEEK_CODE_BYTE() MEMORY_dGetByte(PC) +#define PEEK_CODE_WORD() MEMORY_dGetWord(PC) +#endif /* PC_PTR */ + +/* Cycle-exact Read-Modify-Write instructions. + RMW instructions: ASL, LSR, ROL, ROR, INC, DEC + (+ some undocumented) write to the specified address + *twice*: first the unmodified value, then the modified value. + This can be observed only with some hardware registers. */ +/* XXX: we do this only for GTIA, because NEW_CYCLE_EXACT does not correctly + emulate INC $D400 (and INC $D40A wasn't tested) */ +#ifdef NEW_CYCLE_EXACT +#ifndef PAGED_ATTRIB +#define RMW_GetByte(x, addr) \ + if (MEMORY_attrib[addr] == MEMORY_HARDWARE) { \ + x = MEMORY_HwGetByte(addr, FALSE); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_HwPutByte(addr, x); \ + ANTIC_xpos++; \ + } \ + } else \ + x = MEMORY_dGetByte(addr); +#else /* PAGED_ATTRIB */ +#define RMW_GetByte(x, addr) \ + x = MEMORY_GetByte(addr); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_PutByte(addr, x); \ + ANTIC_xpos++; \ + } +#endif /* PAGED_ATTRIB */ +#else /* NEW_CYCLE_EXACT */ +/* Don't emulate the first write */ +#define RMW_GetByte(x, addr) x = MEMORY_GetByte(addr); +#endif /* NEW_CYCLE_EXACT */ + +/* 6502 registers. */ +UWORD CPU_regPC; +UBYTE CPU_regA; +UBYTE CPU_regX; +UBYTE CPU_regY; +UBYTE CPU_regP; /* Processor Status Byte (Partial) */ +UBYTE CPU_regS; + +/* Transfer 6502 registers between global variables and local variables inside CPU_GO() */ +#define UPDATE_GLOBAL_REGS CPU_regPC = GET_PC(); CPU_regS = S; CPU_regA = A; CPU_regX = X; CPU_regY = Y +#define UPDATE_LOCAL_REGS SET_PC(CPU_regPC); S = CPU_regS; A = CPU_regA; X = CPU_regX; Y = CPU_regY + +/* 6502 flags local to this module */ +static UBYTE N; /* bit7 set => N flag set */ +#ifndef NO_V_FLAG_VARIABLE +static UBYTE V; /* non-zero => V flag set */ +#endif +static UBYTE Z; /* zero => Z flag set */ +static UBYTE C; /* must be 0 or 1 */ +/* B, D, I are always in CPU_regP */ + +void CPU_GetStatus(void) +{ +#ifndef NO_V_FLAG_VARIABLE + CPU_regP = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & 0x3c) + ((Z == 0) ? 0x02 : 0) + C; +#else + CPU_regP = (N & 0x80) + (CPU_regP & 0x7c) + ((Z == 0) ? 0x02 : 0) + C; +#endif +} + +void CPU_PutStatus(void) +{ + N = CPU_regP; +#ifndef NO_V_FLAG_VARIABLE + V = (CPU_regP & 0x40); +#endif + Z = (CPU_regP & 0x02) ^ 0x02; + C = (CPU_regP & 0x01); +} + +/* Addressing modes */ +#ifdef WRAP_ZPAGE +#define zGetWord(x) (MEMORY_dGetByte(x) + (MEMORY_dGetByte((UBYTE) ((x) + 1)) << 8)) +#else +#define zGetWord(x) MEMORY_dGetWord(x) +#endif +#ifdef PREFETCH_CODE +#if defined(WORDS_BIGENDIAN) || !defined(WORDS_UNALIGNED_OK) +#warning PREFETCH_CODE is efficient only on little-endian machines with WORDS_UNALIGNED_OK +#endif +#define OP_BYTE ((UBYTE) addr) +#define OP_WORD addr +#define IMMEDIATE (PC++, (UBYTE) addr) +#define ABSOLUTE PC += 2 +#define ZPAGE PC++; addr &= 0xff +#define ABSOLUTE_X addr += X; PC += 2 +#define ABSOLUTE_Y addr += Y; PC += 2 +#define INDIRECT_X PC++; addr = (UBYTE) (addr + X); addr = zGetWord(addr) +#define INDIRECT_Y PC++; addr &= 0xff; addr = zGetWord(addr) + Y +#define ZPAGE_X PC++; addr = (UBYTE) (addr + X) +#define ZPAGE_Y PC++; addr = (UBYTE) (addr + Y) +#else /* PREFETCH_CODE */ +#define OP_BYTE PEEK_CODE_BYTE() +#define OP_WORD PEEK_CODE_WORD() +#define IMMEDIATE GET_CODE_BYTE() +#define ABSOLUTE addr = PEEK_CODE_WORD(); PC += 2 +#define ZPAGE addr = GET_CODE_BYTE() +#define ABSOLUTE_X addr = PEEK_CODE_WORD() + X; PC += 2 +#define ABSOLUTE_Y addr = PEEK_CODE_WORD() + Y; PC += 2 +#define INDIRECT_X addr = (UBYTE) (GET_CODE_BYTE() + X); addr = zGetWord(addr) +#define INDIRECT_Y addr = GET_CODE_BYTE(); addr = zGetWord(addr) + Y +#define ZPAGE_X addr = (UBYTE) (GET_CODE_BYTE() + X) +#define ZPAGE_Y addr = (UBYTE) (GET_CODE_BYTE() + Y) +#endif /* PREFETCH_CODE */ + +/* Instructions */ +#define AND(t_data) Z = N = A &= t_data +#define CMP(t_data) data = t_data; Z = N = A - data; C = (A >= data) +#define CPX(t_data) data = t_data; Z = N = X - data; C = (X >= data) +#define CPY(t_data) data = t_data; Z = N = Y - data; C = (Y >= data) +#define EOR(t_data) Z = N = A ^= t_data +#define LDA(t_data) Z = N = A = t_data +#define LDX(t_data) Z = N = X = t_data +#define LDY(t_data) Z = N = Y = t_data +#define ORA(t_data) Z = N = A |= t_data +#ifndef NO_V_FLAG_VARIABLE +#define PHP(x) data = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x2c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x3c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; V = (data & 0x40); Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x0c) + 0x30 +#else /* NO_V_FLAG_VARIABLE */ +#define PHP(x) data = (N & 0x80) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x6c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x7c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x4c) + 0x30 +#endif /* NO_V_FLAG_VARIABLE */ +/* 1 or 2 extra cycles for conditional jumps */ +#if 0 +/* old, less efficient version */ +#define BRANCH(cond) \ + if (cond) { \ + SWORD sdata = (SBYTE) GET_CODE_BYTE(); \ + if ((sdata + (UBYTE) GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + PC += sdata; \ + DONE \ + } \ + PC++; \ + DONE +#else +#define BRANCH(cond) \ + if (cond) { \ + addr = (UWORD) (SBYTE) IMMEDIATE; \ + addr += GET_PC(); \ + if ((addr ^ GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + SET_PC(addr); \ + DONE \ + } \ + PC++; \ + DONE +#endif + +/* 1 extra cycle for X (or Y) index overflow */ +#define NCYCLES_X if ((UBYTE) addr < X) ANTIC_xpos++ +#define NCYCLES_Y if ((UBYTE) addr < Y) ANTIC_xpos++ + +/* Triggers a Non-Maskable Interrupt */ +void CPU_NMI(void) +{ + UBYTE S = CPU_regS; + UBYTE data; + + PHW(CPU_regPC); + PHPB0; + CPU_SetI; + CPU_regPC = MEMORY_dGetWordAligned(0xfffa); + CPU_regS = S; + ANTIC_xpos += 7; /* handling an interrupt by 6502 takes 7 cycles */ + INC_RET_NESTING; +} + +/* Check pending IRQ, helps in (not only) Lucasfilm games */ +#define CPUCHECKIRQ \ + if (CPU_IRQ && !(CPU_regP & CPU_I_FLAG) && ANTIC_xpos < ANTIC_xpos_limit) { \ + PHPC; \ + PHPB0; \ + CPU_SetI; \ + SET_PC(MEMORY_dGetWordAligned(0xfffe)); \ + ANTIC_xpos += 7; \ + INC_RET_NESTING; \ + } + +/* Enter monitor */ +#ifdef __PLUS +#define ENTER_MONITOR Atari800_Exit(TRUE) +#else +#ifdef SKIP +#define ENTER_MONITOR if (!Atari800_Exit(TRUE)) exit(0) +#else +#define ENTER_MONITOR exit(0) +#endif +#endif +#define DO_BREAK \ + UPDATE_GLOBAL_REGS; \ + CPU_GetStatus(); \ + ENTER_MONITOR; \ + CPU_PutStatus(); \ + UPDATE_LOCAL_REGS; + + +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ +static const int cycles[256] = +{ + 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, /* 0x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 1x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, /* 2x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 3x */ + + 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, /* 4x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 5x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, /* 6x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 7x */ + + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* 8x */ + 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, /* 9x */ + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* Ax */ + 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, /* Bx */ + + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Cx */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* Dx */ + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Ex */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7 /* Fx */ +}; + +/* 6502 emulation routine */ +#ifndef NO_GOTO +__extension__ /* suppress -ansi -pedantic warnings */ +#endif +void CPU_GO(int limit) +{ +#ifdef NO_GOTO +#define OPCODE_ALIAS(code) case 0x##code: +#define DONE break; +#else +#define OPCODE_ALIAS(code) opcode_##code: +#define DONE goto next; + static const void *opcode[256] = + { + &&opcode_00, &&opcode_01, &&opcode_02, &&opcode_03, + &&opcode_04, &&opcode_05, &&opcode_06, &&opcode_07, + &&opcode_08, &&opcode_09, &&opcode_0a, &&opcode_0b, + &&opcode_0c, &&opcode_0d, &&opcode_0e, &&opcode_0f, + + &&opcode_10, &&opcode_11, &&opcode_12, &&opcode_13, + &&opcode_14, &&opcode_15, &&opcode_16, &&opcode_17, + &&opcode_18, &&opcode_19, &&opcode_1a, &&opcode_1b, + &&opcode_1c, &&opcode_1d, &&opcode_1e, &&opcode_1f, + + &&opcode_20, &&opcode_21, &&opcode_22, &&opcode_23, + &&opcode_24, &&opcode_25, &&opcode_26, &&opcode_27, + &&opcode_28, &&opcode_29, &&opcode_2a, &&opcode_2b, + &&opcode_2c, &&opcode_2d, &&opcode_2e, &&opcode_2f, + + &&opcode_30, &&opcode_31, &&opcode_32, &&opcode_33, + &&opcode_34, &&opcode_35, &&opcode_36, &&opcode_37, + &&opcode_38, &&opcode_39, &&opcode_3a, &&opcode_3b, + &&opcode_3c, &&opcode_3d, &&opcode_3e, &&opcode_3f, + + &&opcode_40, &&opcode_41, &&opcode_42, &&opcode_43, + &&opcode_44, &&opcode_45, &&opcode_46, &&opcode_47, + &&opcode_48, &&opcode_49, &&opcode_4a, &&opcode_4b, + &&opcode_4c, &&opcode_4d, &&opcode_4e, &&opcode_4f, + + &&opcode_50, &&opcode_51, &&opcode_52, &&opcode_53, + &&opcode_54, &&opcode_55, &&opcode_56, &&opcode_57, + &&opcode_58, &&opcode_59, &&opcode_5a, &&opcode_5b, + &&opcode_5c, &&opcode_5d, &&opcode_5e, &&opcode_5f, + + &&opcode_60, &&opcode_61, &&opcode_62, &&opcode_63, + &&opcode_64, &&opcode_65, &&opcode_66, &&opcode_67, + &&opcode_68, &&opcode_69, &&opcode_6a, &&opcode_6b, + &&opcode_6c, &&opcode_6d, &&opcode_6e, &&opcode_6f, + + &&opcode_70, &&opcode_71, &&opcode_72, &&opcode_73, + &&opcode_74, &&opcode_75, &&opcode_76, &&opcode_77, + &&opcode_78, &&opcode_79, &&opcode_7a, &&opcode_7b, + &&opcode_7c, &&opcode_7d, &&opcode_7e, &&opcode_7f, + + &&opcode_80, &&opcode_81, &&opcode_82, &&opcode_83, + &&opcode_84, &&opcode_85, &&opcode_86, &&opcode_87, + &&opcode_88, &&opcode_89, &&opcode_8a, &&opcode_8b, + &&opcode_8c, &&opcode_8d, &&opcode_8e, &&opcode_8f, + + &&opcode_90, &&opcode_91, &&opcode_92, &&opcode_93, + &&opcode_94, &&opcode_95, &&opcode_96, &&opcode_97, + &&opcode_98, &&opcode_99, &&opcode_9a, &&opcode_9b, + &&opcode_9c, &&opcode_9d, &&opcode_9e, &&opcode_9f, + + &&opcode_a0, &&opcode_a1, &&opcode_a2, &&opcode_a3, + &&opcode_a4, &&opcode_a5, &&opcode_a6, &&opcode_a7, + &&opcode_a8, &&opcode_a9, &&opcode_aa, &&opcode_ab, + &&opcode_ac, &&opcode_ad, &&opcode_ae, &&opcode_af, + + &&opcode_b0, &&opcode_b1, &&opcode_b2, &&opcode_b3, + &&opcode_b4, &&opcode_b5, &&opcode_b6, &&opcode_b7, + &&opcode_b8, &&opcode_b9, &&opcode_ba, &&opcode_bb, + &&opcode_bc, &&opcode_bd, &&opcode_be, &&opcode_bf, + + &&opcode_c0, &&opcode_c1, &&opcode_c2, &&opcode_c3, + &&opcode_c4, &&opcode_c5, &&opcode_c6, &&opcode_c7, + &&opcode_c8, &&opcode_c9, &&opcode_ca, &&opcode_cb, + &&opcode_cc, &&opcode_cd, &&opcode_ce, &&opcode_cf, + + &&opcode_d0, &&opcode_d1, &&opcode_d2, &&opcode_d3, + &&opcode_d4, &&opcode_d5, &&opcode_d6, &&opcode_d7, + &&opcode_d8, &&opcode_d9, &&opcode_da, &&opcode_db, + &&opcode_dc, &&opcode_dd, &&opcode_de, &&opcode_df, + + &&opcode_e0, &&opcode_e1, &&opcode_e2, &&opcode_e3, + &&opcode_e4, &&opcode_e5, &&opcode_e6, &&opcode_e7, + &&opcode_e8, &&opcode_e9, &&opcode_ea, &&opcode_eb, + &&opcode_ec, &&opcode_ed, &&opcode_ee, &&opcode_ef, + + &&opcode_f0, &&opcode_f1, &&opcode_f2, &&opcode_f3, + &&opcode_f4, &&opcode_f5, &&opcode_f6, &&opcode_f7, + &&opcode_f8, &&opcode_f9, &&opcode_fa, &&opcode_fb, + &&opcode_fc, &&opcode_fd, &&opcode_fe, &&opcode_ff, + }; +#endif /* NO_GOTO */ + +#ifdef CYCLES_PER_OPCODE +#define OPCODE(code) OPCODE_ALIAS(code) ANTIC_xpos += cycles[0x##code]; +#else +#define OPCODE(code) OPCODE_ALIAS(code) +#endif + +#ifdef PC_PTR + const UBYTE *PC; +#else + UWORD PC; +#endif + UBYTE A; + UBYTE X; + UBYTE Y; + UBYTE S; + + UWORD addr; + UBYTE data; +#define insn data + +/* + This used to be in the main loop but has been removed to improve + execution speed. It does not seem to have any adverse effect on + the emulation for two reasons: + + 1. NMI's will can only be raised in antic.c - there is + no way an NMI can be generated whilst in this routine. + + 2. The timing of the IRQs are not that critical. */ + + if (ANTIC_wsync_halt) { + +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { +/* if ANTIC_WSYNC_C is a stolen cycle, ANTIC_antic2cpu_ptr will convert that to the nearest + cpu cycle before that cycle. The CPU will see this cycle, if WSYNC is not + delayed. (Actually this cycle is the first cycle of the instruction after + STA WSYNC, which was really executed one cycle after STA WSYNC because + of an internal antic delay ). ANTIC_delayed_wsync is added to this cycle to form + the limit in the case that WSYNC is not early (does not allow this extra cycle) */ + + if (limit < ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync) + return; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync; + } + else { + if (limit < (ANTIC_WSYNC_C + ANTIC_delayed_wsync)) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + } + ANTIC_delayed_wsync = 0; + +#else /* NEW_CYCLE_EXACT */ + + if (limit < ANTIC_WSYNC_C) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_wsync_halt = 0; + } + ANTIC_xpos_limit = limit; /* needed for WSYNC store inside ANTIC */ + + UPDATE_LOCAL_REGS; + + CPUCHECKIRQ; + + while (ANTIC_xpos < ANTIC_xpos_limit) { +#ifdef MONITOR_PROFILE + int old_xpos = ANTIC_xpos; + UWORD old_PC = GET_PC(); +#endif + + +#ifdef MONITOR_BREAKPOINTS + breakpoint_return: +#endif + +#ifdef PC_PTR + /* must handle 64k wrapping */ + if (PC >= MEMORY_mem + 0xfffe) { + if (PC >= MEMORY_mem + 0x10000) + PC -= 0x10000; + else { + /* the opcode is before 0x10000, but the operand is past */ +#ifdef WORDS_UNALIGNED_OK + *(UWORD *) (MEMORY_mem + 0x10000) = *(UWORD *) MEMORY_mem; +#else + MEMORY_mem[0x10000] = MEMORY_mem[0]; + MEMORY_mem[0x10001] = MEMORY_mem[1]; +#endif /* WORDS_UNALIGNED_OK */ + } + } +#endif /* PC_PTR */ + +#ifdef MONITOR_TRACE + if (MONITOR_trace_file != NULL) { + MONITOR_ShowState(MONITOR_trace_file, GET_PC(), A, X, Y, S, + (N & 0x80) ? 'N' : '-', +#ifndef NO_V_FLAG_VARIABLE + V ? 'V' : '-', +#else + (CPU_regP & CPU_V_FLAG) ? 'V' : '-', +#endif + (Z == 0) ? 'Z' : '-', + (C != 0) ? 'C' : '-'); + } +#endif + +#ifdef MONITOR_BREAK + CPU_remember_PC[CPU_remember_PC_curpos] = GET_PC(); + CPU_remember_op[CPU_remember_PC_curpos][0] = MEMORY_dGetByte(GET_PC()); + CPU_remember_op[CPU_remember_PC_curpos][1] = MEMORY_dGetByte(GET_PC()+1); + CPU_remember_op[CPU_remember_PC_curpos][2] = MEMORY_dGetByte(GET_PC()+2); +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_cpu2antic_ptr[ANTIC_xpos] + (ANTIC_ypos << 8); + else +#endif + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_xpos + (ANTIC_ypos << 8); + CPU_remember_PC_curpos = (CPU_remember_PC_curpos + 1) % CPU_REMEMBER_PC_STEPS; + + if (MONITOR_break_addr == GET_PC() || ANTIC_break_ypos == ANTIC_ypos) { + DO_BREAK; + } +#endif /* MONITOR_BREAK */ + +#if defined(WRAP_64K) && !defined(PC_PTR) + MEMORY_mem[0x10000] = MEMORY_mem[0]; +#endif + + insn = GET_CODE_BYTE(); + +#ifdef MONITOR_BREAKPOINTS +#ifdef MONITOR_BREAK + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled && !MONITOR_break_step) +#else + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled) +#endif + { + UBYTE optype = MONITOR_optype6502[insn]; + int i; + switch (optype >> 4) { + case 1: + addr = PEEK_CODE_WORD(); + break; + case 2: + addr = PEEK_CODE_BYTE(); + break; + case 3: + addr = PEEK_CODE_WORD() + X; + break; + case 4: + addr = PEEK_CODE_WORD() + Y; + break; + case 5: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + addr = zGetWord(addr); + break; + case 6: + addr = PEEK_CODE_BYTE(); + addr = zGetWord(addr) + Y; + break; + case 7: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + break; + case 8: + addr = (UBYTE) (PEEK_CODE_BYTE() + Y); + break; + /* XXX: case 13 */ + default: + addr = 0; + break; + } + for (i = 0; i < MONITOR_breakpoint_table_size; i++) { + int cond; + int value, m_addr; + if (!MONITOR_breakpoint_table[i].enabled) + continue; /* skip */ + cond = MONITOR_breakpoint_table[i].condition; + if (cond == MONITOR_BREAKPOINT_OR) + break; /* fire */ + value = MONITOR_breakpoint_table[i].value; + m_addr = MONITOR_breakpoint_table[i].m_addr; + if (cond == MONITOR_BREAKPOINT_FLAG_CLEAR) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) == 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V == 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z != 0) + continue; + break; + case CPU_C_FLAG: + if (C == 0) + continue; + break; + default: + if ((CPU_regP & value) == 0) + continue; + break; + } + } + else if (cond == MONITOR_BREAKPOINT_FLAG_SET) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) != 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V != 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z == 0) + continue; + break; + case CPU_C_FLAG: + if (C != 0) + continue; + break; + default: + if ((CPU_regP & value) != 0) + continue; + break; + } + } + else { + int val; + switch (cond >> 3) { + case MONITOR_BREAKPOINT_PC >> 3: + val = GET_PC() - 1; + break; + case MONITOR_BREAKPOINT_A >> 3: + val = A; + break; + case MONITOR_BREAKPOINT_X >> 3: + val = X; + break; + case MONITOR_BREAKPOINT_Y >> 3: + val = Y; + break; + case MONITOR_BREAKPOINT_S >> 3: + val = S; + break; + case MONITOR_BREAKPOINT_READ >> 3: + if ((optype & 4) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_WRITE >> 3: + if ((optype & 8) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_ACCESS >> 3: + if ((optype & 12) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_MEMORY >> 3: + val = MEMORY_SafeGetByte(m_addr); + break; + default: + /* shouldn't happen */ + continue; + } + if ((cond & MONITOR_BREAKPOINT_LESS) != 0 && val < value) + continue; + if ((cond & MONITOR_BREAKPOINT_EQUAL) != 0 && val == value) + continue; + if ((cond & MONITOR_BREAKPOINT_GREATER) != 0 && val > value) + continue; + cond_failed: + ; + } + /* a condition failed */ + /* quickly skip AND-connected conditions */ + do { + if (++i >= MONITOR_breakpoint_table_size) + goto no_breakpoint; + } while (MONITOR_breakpoint_table[i].condition != MONITOR_BREAKPOINT_OR || !MONITOR_breakpoint_table[i].enabled); + } + /* fire breakpoint */ + PC--; + DO_BREAK; + goto breakpoint_return; + no_breakpoint: + ; + } +#endif /* MONITOR_BREAKPOINTS */ + +#ifndef CYCLES_PER_OPCODE + ANTIC_xpos += cycles[insn]; +#endif + +#ifdef MONITOR_PROFILE + CPU_instruction_count[insn]++; + MONITOR_coverage[old_PC = PC - 1].count++; + MONITOR_coverage_insns++; +#endif + +#ifdef PREFETCH_CODE + addr = PEEK_CODE_WORD(); +#endif + +#ifdef NO_GOTO + switch (insn) { +#else + goto *opcode[insn]; +#endif + + OPCODE(00) /* BRK */ +#ifdef MONITOR_BREAK + if (MONITOR_break_brk) { + DO_BREAK; + } + else +#endif + { + PC++; + PHPC; + PHPB1; + CPU_SetI; + SET_PC(MEMORY_dGetWordAligned(0xfffe)); + INC_RET_NESTING; + } + DONE + + OPCODE(01) /* ORA (ab,x) */ + INDIRECT_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(03) /* ASO (ab,x) [unofficial - ASL then ORA with Acc] */ + INDIRECT_X; + + aso: + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_PutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE_ALIAS(04) /* NOP ab [unofficial - skip byte] */ + OPCODE_ALIAS(44) + OPCODE(64) + PC++; + DONE + + OPCODE_ALIAS(14) /* NOP ab,x [unofficial - skip byte] */ + OPCODE_ALIAS(34) + OPCODE_ALIAS(54) + OPCODE_ALIAS(74) + OPCODE_ALIAS(d4) + OPCODE(f4) + PC++; + DONE + + OPCODE_ALIAS(80) /* NOP #ab [unofficial - skip byte] */ + OPCODE_ALIAS(82) + OPCODE_ALIAS(89) + OPCODE_ALIAS(c2) + OPCODE(e2) + PC++; + DONE + + OPCODE(05) /* ORA ab */ + ZPAGE; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(06) /* ASL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(07) /* ASO ab [unofficial - ASL then ORA with Acc] */ + ZPAGE; + + aso_zpage: + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_dPutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE(08) /* PHP */ + PHPB1; + DONE + + OPCODE(09) /* ORA #ab */ + ORA(IMMEDIATE); + DONE + + OPCODE(0a) /* ASL */ + C = (A & 0x80) ? 1 : 0; + Z = N = A <<= 1; + DONE + + OPCODE_ALIAS(0b) /* ANC #ab [unofficial - AND then copy N to C (Fox) */ + OPCODE(2b) + AND(IMMEDIATE); + C = N >= 0x80; + DONE + + OPCODE(0c) /* NOP abcd [unofficial - skip word] */ + PC += 2; + DONE + + OPCODE(0d) /* ORA abcd */ + ABSOLUTE; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(0e) /* ASL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(0f) /* ASO abcd [unofficial - ASL then ORA with Acc] */ + ABSOLUTE; + goto aso; + + OPCODE(10) /* BPL */ + BRANCH(!(N & 0x80)) + + OPCODE(11) /* ORA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(13) /* ASO (ab),y [unofficial - ASL then ORA with Acc] */ + INDIRECT_Y; + goto aso; + + OPCODE(15) /* ORA ab,x */ + ZPAGE_X; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(16) /* ASL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(17) /* ASO ab,x [unofficial - ASL then ORA with Acc] */ + ZPAGE_X; + goto aso_zpage; + + OPCODE(18) /* CLC */ + C = 0; + DONE + + OPCODE(19) /* ORA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1b) /* ASO abcd,y [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_Y; + goto aso; + + OPCODE_ALIAS(1c) /* NOP abcd,x [unofficial - skip word] */ + OPCODE_ALIAS(3c) + OPCODE_ALIAS(5c) + OPCODE_ALIAS(7c) + OPCODE_ALIAS(dc) + OPCODE(fc) + if (OP_BYTE + X >= 0x100) + ANTIC_xpos++; + PC += 2; + DONE + + OPCODE(1d) /* ORA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1e) /* ASL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(1f) /* ASO abcd,x [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_X; + goto aso; + + OPCODE(20) /* JSR abcd */ + { + UWORD retaddr = GET_PC() + 1; +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; + MONITOR_ret_nesting++; +#endif + PHW(retaddr); + } + SET_PC(OP_WORD); + DONE + + OPCODE(21) /* AND (ab,x) */ + INDIRECT_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(23) /* RLA (ab,x) [unofficial - ROL Mem, then AND with A] */ + INDIRECT_X; + + rla: + RMW_GetByte(data, addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_PutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(24) /* BIT ab */ + ZPAGE; + N = MEMORY_dGetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(25) /* AND ab */ + ZPAGE; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(26) /* ROL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(27) /* RLA ab [unofficial - ROL Mem, then AND with A] */ + ZPAGE; + + rla_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_dPutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(28) /* PLP */ + PLP; + CPUCHECKIRQ; + DONE + + OPCODE(29) /* AND #ab */ + AND(IMMEDIATE); + DONE + + OPCODE(2a) /* ROL */ + Z = N = (A << 1) + C; + C = (A & 0x80) ? 1 : 0; + A = Z; + DONE + + OPCODE(2c) /* BIT abcd */ + ABSOLUTE; + N = MEMORY_GetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(2d) /* AND abcd */ + ABSOLUTE; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(2e) /* ROL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(2f) /* RLA abcd [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE; + goto rla; + + OPCODE(30) /* BMI */ + BRANCH(N & 0x80) + + OPCODE(31) /* AND (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(33) /* RLA (ab),y [unofficial - ROL Mem, then AND with A] */ + INDIRECT_Y; + goto rla; + + OPCODE(35) /* AND ab,x */ + ZPAGE_X; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(36) /* ROL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(37) /* RLA ab,x [unofficial - ROL Mem, then AND with A] */ + ZPAGE_X; + goto rla_zpage; + + OPCODE(38) /* SEC */ + C = 1; + DONE + + OPCODE(39) /* AND abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3b) /* RLA abcd,y [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_Y; + goto rla; + + OPCODE(3d) /* AND abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3e) /* ROL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(3f) /* RLA abcd,x [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_X; + goto rla; + + OPCODE(40) /* RTI */ + PLP; + data = PL; + SET_PC((PL << 8) + data); + CPUCHECKIRQ; +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(41) /* EOR (ab,x) */ + INDIRECT_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(43) /* LSE (ab,x) [unofficial - LSR then EOR result with A] */ + INDIRECT_X; + + lse: + RMW_GetByte(data, addr); + C = data & 1; + data >>= 1; + MEMORY_PutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(45) /* EOR ab */ + ZPAGE; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(46) /* LSR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(47) /* LSE ab [unofficial - LSR then EOR result with A] */ + ZPAGE; + + lse_zpage: + data = MEMORY_dGetByte(addr); + C = data & 1; + data >>= 1; + MEMORY_dPutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(48) /* PHA */ + PH(A); + DONE + + OPCODE(49) /* EOR #ab */ + EOR(IMMEDIATE); + DONE + + OPCODE(4a) /* LSR */ + C = A & 1; + Z = N = A >>= 1; + DONE + + OPCODE(4b) /* ALR #ab [unofficial - Acc AND Data, LSR result] */ + data = A & IMMEDIATE; + C = data & 1; + Z = N = A = (data >> 1); + DONE + + OPCODE(4c) /* JMP abcd */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + SET_PC(OP_WORD); + DONE + + OPCODE(4d) /* EOR abcd */ + ABSOLUTE; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(4e) /* LSR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(4f) /* LSE abcd [unofficial - LSR then EOR result with A] */ + ABSOLUTE; + goto lse; + + OPCODE(50) /* BVC */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(!V) +#else + BRANCH(!(CPU_regP & 0x40)) +#endif + + OPCODE(51) /* EOR (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(53) /* LSE (ab),y [unofficial - LSR then EOR result with A] */ + INDIRECT_Y; + goto lse; + + OPCODE(55) /* EOR ab,x */ + ZPAGE_X; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(56) /* LSR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(57) /* LSE ab,x [unofficial - LSR then EOR result with A] */ + ZPAGE_X; + goto lse_zpage; + + OPCODE(58) /* CLI */ + CPU_ClrI; + CPUCHECKIRQ; + DONE + + OPCODE(59) /* EOR abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5b) /* LSE abcd,y [unofficial - LSR then EOR result with A] */ + ABSOLUTE_Y; + goto lse; + + OPCODE(5d) /* EOR abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5e) /* LSR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(5f) /* LSE abcd,x [unofficial - LSR then EOR result with A] */ + ABSOLUTE_X; + goto lse; + + OPCODE(60) /* RTS */ + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + if (CPU_rts_handler != NULL) { + CPU_rts_handler(); + CPU_rts_handler = NULL; + } + DONE + + OPCODE(61) /* ADC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(63) /* RRA (ab,x) [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_X; + + rra: + RMW_GetByte(data, addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_PutByte(addr, data); + goto adc; + + OPCODE(65) /* ADC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(66) /* ROR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(67) /* RRA ab [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE; + + rra_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_dPutByte(addr, data); + goto adc; + + OPCODE(68) /* PLA */ + Z = N = A = PL; + DONE + + OPCODE(69) /* ADC #ab */ + data = IMMEDIATE; + goto adc; + + OPCODE(6a) /* ROR */ + Z = N = (C << 7) + (A >> 1); + C = A & 1; + A = Z; + DONE + + OPCODE(6b) /* ARR #ab [unofficial - Acc AND Data, ROR result] */ + /* It does some 'BCD fixup' if D flag is set */ + /* MPC 05/24/00 */ + data = A & IMMEDIATE; + if (CPU_regP & CPU_D_FLAG) { + UBYTE temp = (data >> 1) + (C << 7); + Z = N = temp; +#ifndef NO_V_FLAG_VARIABLE + V = ((temp ^ data) & 0x40); +#else + CPU_regP = (CPU_regP & 0xbf) + ((temp ^ data) & 0x40); +#endif + if ((data & 0x0F) + (data & 0x01) > 5) + temp = (temp & 0xF0) + ((temp + 0x6) & 0x0F); + if (data + (data & 0x10) >= 0x60) { + temp += 0x60; + C = 1; + } + else + C = 0; + A = (UBYTE) temp; + } + else { + Z = N = A = (data >> 1) + (C << 7); + C = data >> 7; +#ifndef NO_V_FLAG_VARIABLE + V = C ^ ((A >> 5) & 1); +#else + CPU_regP = (CPU_regP & 0xbf) + ((A ^ data) & 0x40); +#endif + } + DONE + + OPCODE(6c) /* JMP (abcd) */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + ABSOLUTE; +#ifdef CPU65C02 + /* XXX: if ((UBYTE) addr == 0xff) ANTIC_xpos++; */ + SET_PC(MEMORY_dGetWord(addr)); +#else + /* original 6502 had a bug in JMP (addr) when addr crossed page boundary */ + if ((UBYTE) addr == 0xff) + SET_PC((MEMORY_dGetByte(addr - 0xff) << 8) + MEMORY_dGetByte(addr)); + else + SET_PC(MEMORY_dGetWord(addr)); +#endif + DONE + + OPCODE(6d) /* ADC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(6e) /* ROR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(6f) /* RRA abcd [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE; + goto rra; + + OPCODE(70) /* BVS */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(V) +#else + BRANCH(CPU_regP & 0x40) +#endif + + OPCODE(71) /* ADC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(73) /* RRA (ab),y [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_Y; + goto rra; + + OPCODE(75) /* ADC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(76) /* ROR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(77) /* RRA ab,x [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE_X; + goto rra_zpage; + + OPCODE(78) /* SEI */ + CPU_SetI; + DONE + + OPCODE(79) /* ADC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7b) /* RRA abcd,y [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_Y; + goto rra; + + OPCODE(7d) /* ADC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7e) /* ROR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(7f) /* RRA abcd,x [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_X; + goto rra; + + OPCODE(81) /* STA (ab,x) */ + INDIRECT_X; + MEMORY_PutByte(addr, A); + DONE + + /* AXS doesn't change flags and SAX is better name for it (Fox) */ + OPCODE(83) /* SAX (ab,x) [unofficial - Store result A AND X */ + INDIRECT_X; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(84) /* STY ab */ + ZPAGE; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(85) /* STA ab */ + ZPAGE; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(86) /* STX ab */ + ZPAGE; + MEMORY_dPutByte(addr, X); + DONE + + OPCODE(87) /* SAX ab [unofficial - Store result A AND X] */ + ZPAGE; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(88) /* DEY */ + Z = N = --Y; + DONE + + OPCODE(8a) /* TXA */ + Z = N = A = X; + DONE + + OPCODE(8b) /* ANE #ab [unofficial - A AND X AND (Mem OR $EF) to Acc] (Fox) */ + data = IMMEDIATE; + Z = N = A & X & data; + A &= X & (data | 0xef); + DONE + + OPCODE(8c) /* STY abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, Y); + DONE + + OPCODE(8d) /* STA abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(8e) /* STX abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(8f) /* SAX abcd [unofficial - Store result A AND X] */ + ABSOLUTE; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(90) /* BCC */ + BRANCH(!C) + + OPCODE(91) /* STA (ab),y */ + INDIRECT_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(93) /* SHA (ab),y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + /* It seems previous memory value is important - also in 9f */ + ZPAGE; + addr = zGetWord(addr); + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(94) /* STY ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(95) /* STA ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(96) /* STX ab,y */ + ZPAGE_Y; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(97) /* SAX ab,y [unofficial - Store result A AND X] */ + ZPAGE_Y; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(98) /* TYA */ + Z = N = A = Y; + DONE + + OPCODE(99) /* STA abcd,y */ + ABSOLUTE_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9a) /* TXS */ + S = X; + DONE + + OPCODE(9b) /* SHS abcd,y [unofficial, UNSTABLE] (Fox) */ + /* Transfer A AND X to S, then store S AND (H+1)] */ + /* S seems to be stable, only memory values vary */ + ABSOLUTE; + S = A & X; + data = S & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9c) /* SHY abcd,x [unofficial - Store Y and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = Y & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + X > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + X) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + X, data); + } + DONE + + OPCODE(9d) /* STA abcd,x */ + ABSOLUTE_X; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9e) /* SHX abcd,y [unofficial - Store X and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = X & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9f) /* SHA abcd,y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + ABSOLUTE; + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(a0) /* LDY #ab */ + LDY(IMMEDIATE); + DONE + + OPCODE(a1) /* LDA (ab,x) */ + INDIRECT_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(a2) /* LDX #ab */ + LDX(IMMEDIATE); + DONE + + OPCODE(a3) /* LAX (ab,x) [unofficial] */ + INDIRECT_X; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a4) /* LDY ab */ + ZPAGE; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a5) /* LDA ab */ + ZPAGE; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a6) /* LDX ab */ + ZPAGE; + LDX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a7) /* LAX ab [unofficial] */ + ZPAGE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a8) /* TAY */ + Z = N = Y = A; + DONE + + OPCODE(a9) /* LDA #ab */ + LDA(IMMEDIATE); + DONE + + OPCODE(aa) /* TAX */ + Z = N = X = A; + DONE + + OPCODE(ab) /* ANX #ab [unofficial - AND #ab, then TAX] */ + Z = N = X = A &= IMMEDIATE; + DONE + + OPCODE(ac) /* LDY abcd */ + ABSOLUTE; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(ad) /* LDA abcd */ + ABSOLUTE; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ae) /* LDX abcd */ + ABSOLUTE; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(af) /* LAX abcd [unofficial] */ + ABSOLUTE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b0) /* BCS */ + BRANCH(C) + + OPCODE(b1) /* LDA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(b3) /* LAX (ab),y [unofficial] */ + INDIRECT_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b4) /* LDY ab,x */ + ZPAGE_X; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b5) /* LDA ab,x */ + ZPAGE_X; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b6) /* LDX ab,y */ + ZPAGE_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(b7) /* LAX ab,y [unofficial] */ + ZPAGE_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b8) /* CLV */ +#ifndef NO_V_FLAG_VARIABLE + V = 0; +#else + CPU_ClrV; +#endif + DONE + + OPCODE(b9) /* LDA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ba) /* TSX */ + Z = N = X = S; + DONE + +/* AXA [unofficial - original decode by R.Sterba and R.Petruzela 15.1.1998 :-)] + AXA - this is our new imaginative name for instruction with opcode hex BB. + AXA - Store Mem AND #$FD to Acc and X, then set stackpoint to value (Acc - 4) + It's cool! :-) + LAS - this is better name for this :) (Fox) + It simply ANDs stack pointer with Mem, then transfers result to A and X + */ + + OPCODE(bb) /* LAS abcd,y [unofficial - AND S with Mem, transfer to A and X (Fox) */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = A = X = S &= MEMORY_GetByte(addr); + DONE + + OPCODE(bc) /* LDY abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(bd) /* LDA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(be) /* LDX abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(bf) /* LAX abcd,y [unofficial] */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(c0) /* CPY #ab */ + CPY(IMMEDIATE); + DONE + + OPCODE(c1) /* CMP (ab,x) */ + INDIRECT_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(c3) /* DCM (ab,x) [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_X; + + dcm: + RMW_GetByte(data, addr); + data--; + MEMORY_PutByte(addr, data); + CMP(data); + DONE + + OPCODE(c4) /* CPY ab */ + ZPAGE; + CPY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c5) /* CMP ab */ + ZPAGE; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c6) /* DEC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(c7) /* DCM ab [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE; + + dcm_zpage: + data = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, data); + CMP(data); + DONE + + OPCODE(c8) /* INY */ + Z = N = ++Y; + DONE + + OPCODE(c9) /* CMP #ab */ + CMP(IMMEDIATE); + DONE + + OPCODE(ca) /* DEX */ + Z = N = --X; + DONE + + OPCODE(cb) /* SBX #ab [unofficial - store ((A AND X) - Mem) in X] (Fox) */ + X &= A; + data = IMMEDIATE; + C = X >= data; + /* MPC 05/24/00 */ + Z = N = X -= data; + DONE + + OPCODE(cc) /* CPY abcd */ + ABSOLUTE; + CPY(MEMORY_GetByte(addr)); + DONE + + OPCODE(cd) /* CMP abcd */ + ABSOLUTE; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(ce) /* DEC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(cf) /* DCM abcd [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE; + goto dcm; + + OPCODE(d0) /* BNE */ + BRANCH(Z) + + OPCODE(d1) /* CMP (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(d3) /* DCM (ab),y [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_Y; + goto dcm; + + OPCODE(d5) /* CMP ab,x */ + ZPAGE_X; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(d6) /* DEC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(d7) /* DCM ab,x [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE_X; + goto dcm_zpage; + + OPCODE(d8) /* CLD */ + CPU_ClrD; + DONE + + OPCODE(d9) /* CMP abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(db) /* DCM abcd,y [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_Y; + goto dcm; + + OPCODE(dd) /* CMP abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(de) /* DEC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(df) /* DCM abcd,x [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_X; + goto dcm; + + OPCODE(e0) /* CPX #ab */ + CPX(IMMEDIATE); + DONE + + OPCODE(e1) /* SBC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(e3) /* INS (ab,x) [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_X; + + ins: + RMW_GetByte(data, addr); + ++data; + MEMORY_PutByte(addr, data); + goto sbc; + + OPCODE(e4) /* CPX ab */ + ZPAGE; + CPX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(e5) /* SBC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(e6) /* INC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(e7) /* INS ab [unofficial - INC Mem then SBC with Acc] */ + ZPAGE; + + ins_zpage: + data = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, data); + goto sbc; + + OPCODE(e8) /* INX */ + Z = N = ++X; + DONE + + OPCODE_ALIAS(e9) /* SBC #ab */ + OPCODE(eb) /* SBC #ab [unofficial] */ + data = IMMEDIATE; + goto sbc; + + OPCODE_ALIAS(ea) /* NOP */ + OPCODE_ALIAS(1a) /* NOP [unofficial] */ + OPCODE_ALIAS(3a) + OPCODE_ALIAS(5a) + OPCODE_ALIAS(7a) + OPCODE_ALIAS(da) + OPCODE(fa) + DONE + + OPCODE(ec) /* CPX abcd */ + ABSOLUTE; + CPX(MEMORY_GetByte(addr)); + DONE + + OPCODE(ed) /* SBC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(ee) /* INC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ef) /* INS abcd [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE; + goto ins; + + OPCODE(f0) /* BEQ */ + BRANCH(!Z) + + OPCODE(f1) /* SBC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(f3) /* INS (ab),y [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_Y; + goto ins; + + OPCODE(f5) /* SBC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(f6) /* INC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(f7) /* INS ab,x [unofficial - INC Mem then SBC with Acc] */ + ZPAGE_X; + goto ins_zpage; + + OPCODE(f8) /* SED */ + CPU_SetD; + DONE + + OPCODE(f9) /* SBC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fb) /* INS abcd,y [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_Y; + goto ins; + + OPCODE(fd) /* SBC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fe) /* INC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ff) /* INS abcd,x [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_X; + goto ins; + +#ifdef ASAP + + OPCODE_ALIAS(d2) + OPCODE_ALIAS(f2) + +#else + + OPCODE(d2) /* ESCRTS #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(f2) /* ESC #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + /* OPCODE(ff: ESC #ab - opcode FF is now used for INS [unofficial] instruction !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + + OPCODE_ALIAS(02) /* CIM [unofficial - crash intermediate] */ + OPCODE_ALIAS(12) + OPCODE_ALIAS(22) + OPCODE_ALIAS(32) + OPCODE_ALIAS(42) + OPCODE_ALIAS(52) + OPCODE_ALIAS(62) + OPCODE_ALIAS(72) + OPCODE_ALIAS(92) + OPCODE(b2) + +#ifdef ASAP + + ASAP_CIM(); + DONE + +#else + + /* OPCODE(d2) Used for ESCRTS #ab (CIM) */ + /* OPCODE(f2) Used for ESC #ab (CIM) */ + PC--; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + +#ifdef CRASH_MENU + UI_crash_address = GET_PC(); + UI_crash_afterCIM = GET_PC() + 1; + UI_crash_code = insn; + UI_Run(); +#else + CPU_cim_encountered = TRUE; + ENTER_MONITOR; +#endif /* CRASH_MENU */ + + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + +/* ---------------------------------------------- */ +/* ADC and SBC routines */ + + adc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + tmp = A + data + C; + C = tmp > 0xff; + /* C = tmp >> 8; */ +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) + (data & 0x0f) + C; + if (tmp >= 0x0a) + tmp = ((tmp + 0x06) & 0x0f) + 0x10; + tmp += (A & 0xf0) + (data & 0xf0); + + Z = A + data + C; + N = (UBYTE) tmp; +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + + if (tmp >= 0xa0) + tmp += 0x60; + C = tmp > 0xff; + A = (UBYTE) tmp; + } + DONE + + sbc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + /* tmp = A - data - !C; */ + tmp = A - data - 1 + C; + C = tmp < 0x100; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ tmp) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) - (data & 0x0f) - 1 + C; + if (tmp & 0x10) + tmp = ((tmp - 0x06) & 0x0f) - 0x10; + tmp += (A & 0xf0) - (data & 0xf0); + if (tmp & 0x100) + tmp -= 0x60; + + Z = N = A - data - 1 + C; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ Z) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ Z) & 0x80)) + CPU_SetV; +#endif + C = ((unsigned int) (A - data - 1 + C)) <= 0xff; + + A = tmp; + } + DONE + +#ifdef NO_GOTO + } +#else + next: +#endif + +#ifdef MONITOR_PROFILE + { + int cyc = ANTIC_xpos - old_xpos; + MONITOR_coverage[old_PC].cycles += cyc; + MONITOR_coverage_cycles += cyc; + } +#endif + +#ifdef MONITOR_BREAK + if (MONITOR_break_step) { + DO_BREAK; + } +#endif + /* This "continue" does nothing here. + But it is necessary because, if we're not using NO_GOTO nor MONITOR_BREAK, + gcc can complain: "error: label at end of compound statement". */ + continue; + } + + UPDATE_GLOBAL_REGS; +} + +#endif /* FALCON_CPUASM */ + +void CPU_Reset(void) +{ +#ifdef MONITOR_PROFILE + memset(CPU_instruction_count, 0, sizeof(CPU_instruction_count)); +#endif + + CPU_IRQ = 0; + + CPU_regP = 0x34; /* The unused bit is always 1, I flag set! */ + CPU_PutStatus(); /* Make sure flags are all updated */ + CPU_regS = 0xff; + CPU_regPC = MEMORY_dGetWordAligned(0xfffc); +} + +#if !defined(BASIC) && !defined(ASAP) + +void CPU_StateSave(UBYTE SaveVerbose) +{ + StateSav_SaveUBYTE(&CPU_regA, 1); + + CPU_GetStatus(); /* Make sure flags are all updated */ + StateSav_SaveUBYTE(&CPU_regP, 1); + + StateSav_SaveUBYTE(&CPU_regS, 1); + StateSav_SaveUBYTE(&CPU_regX, 1); + StateSav_SaveUBYTE(&CPU_regY, 1); + StateSav_SaveUBYTE(&CPU_IRQ, 1); + + MEMORY_StateSave(SaveVerbose); + + StateSav_SaveUWORD(&CPU_regPC, 1); +} + +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion) +{ + StateSav_ReadUBYTE(&CPU_regA, 1); + + StateSav_ReadUBYTE(&CPU_regP, 1); + CPU_PutStatus(); /* Make sure flags are all updated */ + + StateSav_ReadUBYTE(&CPU_regS, 1); + StateSav_ReadUBYTE(&CPU_regX, 1); + StateSav_ReadUBYTE(&CPU_regY, 1); + StateSav_ReadUBYTE(&CPU_IRQ, 1); + + MEMORY_StateRead(SaveVerbose, StateVersion); + + StateSav_ReadUWORD(&CPU_regPC, 1); +} + +#endif diff --git a/MCUME_teensy/teensy5200/cpu.h b/MCUME_teensy/teensy5200/cpu.h new file mode 100644 index 0000000..3ee25e6 --- /dev/null +++ b/MCUME_teensy/teensy5200/cpu.h @@ -0,0 +1,65 @@ +#ifndef CPU_H_ +#define CPU_H_ + +#include "atari.h" + +#define CPU_N_FLAG 0x80 +#define CPU_V_FLAG 0x40 +#define CPU_B_FLAG 0x10 +#define CPU_D_FLAG 0x08 +#define CPU_I_FLAG 0x04 +#define CPU_Z_FLAG 0x02 +#define CPU_C_FLAG 0x01 + +void CPU_GetStatus(void); +void CPU_PutStatus(void); +void CPU_Reset(void); +void CPU_StateSave(UBYTE SaveVerbose); +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion); +void CPU_NMI(void); +void CPU_GO(int limit); +#define CPU_GenerateIRQ() (CPU_IRQ = 1) + +extern UWORD CPU_regPC; +extern UBYTE CPU_regA; +extern UBYTE CPU_regP; +extern UBYTE CPU_regS; +extern UBYTE CPU_regY; +extern UBYTE CPU_regX; + +#define CPU_SetN CPU_regP |= CPU_N_FLAG +#define CPU_ClrN CPU_regP &= (~CPU_N_FLAG) +#define CPU_SetV CPU_regP |= CPU_V_FLAG +#define CPU_ClrV CPU_regP &= (~CPU_V_FLAG) +#define CPU_SetB CPU_regP |= CPU_B_FLAG +#define CPU_ClrB CPU_regP &= (~CPU_B_FLAG) +#define CPU_SetD CPU_regP |= CPU_D_FLAG +#define CPU_ClrD CPU_regP &= (~CPU_D_FLAG) +#define CPU_SetI CPU_regP |= CPU_I_FLAG +#define CPU_ClrI CPU_regP &= (~CPU_I_FLAG) +#define CPU_SetZ CPU_regP |= CPU_Z_FLAG +#define CPU_ClrZ CPU_regP &= (~CPU_Z_FLAG) +#define CPU_SetC CPU_regP |= CPU_C_FLAG +#define CPU_ClrC CPU_regP &= (~CPU_C_FLAG) + +extern UBYTE CPU_IRQ; + +extern void (*CPU_rts_handler)(void); + +extern UBYTE CPU_cim_encountered; + +#define CPU_REMEMBER_PC_STEPS 64 +extern UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +extern UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +extern unsigned int CPU_remember_PC_curpos; +extern int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; + +#define CPU_REMEMBER_JMP_STEPS 16 +extern UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +extern unsigned int CPU_remember_jmp_curpos; + +#ifdef MONITOR_PROFILE +extern int CPU_instruction_count[256]; +#endif + +#endif /* CPU_H_ */ diff --git a/MCUME_teensy/teensy5200/crc32.c b/MCUME_teensy/teensy5200/crc32.c new file mode 100644 index 0000000..d22e223 --- /dev/null +++ b/MCUME_teensy/teensy5200/crc32.c @@ -0,0 +1,86 @@ +/* CRC32.C -- Calculates 32bit CRC checksum + */ +// modified main() (see crc32.orig) to get calc_crc32() function +// JH 2002 + +#include +#include + +const unsigned long crc32_table[256] = { /* lookup table */ +0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, +0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, +0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, +0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, +0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, +0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, +0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, +0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, +0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, +0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, +0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, +0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, +0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, +0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, +0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, +0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, +0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, +0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, +0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, +0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, +0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, +0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, +0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, +0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, +0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, +0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, +0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, +0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, +0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, +0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, +0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, +0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, +0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, +0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, +0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, +0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, +0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, +0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, +0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, +0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, +0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, +0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, +0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; + +unsigned long calc_crc32(unsigned char *buf, int buflen) +{ + // buf is pointer to input buffer (data to crc) + // buflen is length of input buffer + + unsigned long crc; /* CRC value */ + //size_t j; /* buffer positions*/ + int j; /* buffer positions*/ + int k; /* generic integer */ + +#ifdef DEBUG + printf("32bit Cyclic Redudancy Check\n"); +#endif + + crc = 0xFFFFFFFF; /* preconditioning sets non zero value */ + + /* loop through the buffer and calculate CRC */ + for(j=0; j> 8) & 0x00FFFFFFL) ^ crc32_table[k]; + } + + crc=~crc; /* postconditioning */ + + /* print results */ +#ifdef DEBUG + printf("CRC32 is %08lX\n", crc); +#endif + + return crc; +} + + diff --git a/MCUME_teensy/teensy5200/emuapi.cpp b/MCUME_teensy/teensy5200/emuapi.cpp new file mode 100644 index 0000000..1b702d8 --- /dev/null +++ b/MCUME_teensy/teensy5200/emuapi.cpp @@ -0,0 +1,1045 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensy5200/emuapi.h b/MCUME_teensy/teensy5200/emuapi.h new file mode 100644 index 0000000..199cadb --- /dev/null +++ b/MCUME_teensy/teensy5200/emuapi.h @@ -0,0 +1,151 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define CUSTOM_SND 1 +//#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " Atari5200 Emulator " +#define ROMSDIR "5200" + +#define emu_Init(ROM) {at5_Init(); at5_Start(ROM);} +#define emu_Step(x) {at5_Step();} +#define emu_Input(x) {} + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x3 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 16 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 120 +#define KEYBOARD_Y 6 +#define KEYBOARD_KEY_H 23 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_COL,136, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_ROW,28,28,28, + TAREA_NEW_ROW,28,28,28, + TAREA_END}; + + // These may be set to 1. The core handles clearing them. + // [BREAK] 0 [ # ] 1 [ 0 ] 2 [ * ] 3 + // [RESET] 4 [ 9 ] 5 [ 8 ] 6 [ 7 ] 7 + // [PAUSE] 8 [ 6 ] 9 [ 5 ] 10 [ 4 ] 11 + // [START] 12 [ 3 ] 13 [ 2 ] 14 [ 1 ] 15 + + +const unsigned short keys[] = { + 12+1,8+1,4+1, + 0, + 15+1,14+1,13+1, + 11+1,10+1,9+1, + 7+1,6+1,9+1, + 3+1,2+1,1+1 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensy5200/font8x8.h b/MCUME_teensy/teensy5200/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensy5200/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensy5200/gtia.c b/MCUME_teensy/teensy5200/gtia.c new file mode 100644 index 0000000..b5b2022 --- /dev/null +++ b/MCUME_teensy/teensy5200/gtia.c @@ -0,0 +1,1340 @@ +/* + * gtia.c - GTIA chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2015 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include + +#include "antic.h" +#include "gtia.h" + +/* GTIA Registers ---------------------------------------------------------- */ + +UBYTE GTIA_M0PL; +UBYTE GTIA_M1PL; +UBYTE GTIA_M2PL; +UBYTE GTIA_M3PL; +UBYTE GTIA_P0PL; +UBYTE GTIA_P1PL; +UBYTE GTIA_P2PL; +UBYTE GTIA_P3PL; +UBYTE GTIA_HPOSP0; +UBYTE GTIA_HPOSP1; +UBYTE GTIA_HPOSP2; +UBYTE GTIA_HPOSP3; +UBYTE GTIA_HPOSM0; +UBYTE GTIA_HPOSM1; +UBYTE GTIA_HPOSM2; +UBYTE GTIA_HPOSM3; +UBYTE GTIA_SIZEP0; +UBYTE GTIA_SIZEP1; +UBYTE GTIA_SIZEP2; +UBYTE GTIA_SIZEP3; +UBYTE GTIA_SIZEM; +UBYTE GTIA_GRAFP0; +UBYTE GTIA_GRAFP1; +UBYTE GTIA_GRAFP2; +UBYTE GTIA_GRAFP3; +UBYTE GTIA_GRAFM; +UBYTE GTIA_COLPM0; +UBYTE GTIA_COLPM1; +UBYTE GTIA_COLPM2; +UBYTE GTIA_COLPM3; +UBYTE GTIA_COLPF0; +UBYTE GTIA_COLPF1; +UBYTE GTIA_COLPF2; +UBYTE GTIA_COLPF3; +UBYTE GTIA_COLBK; +UBYTE GTIA_PRIOR; +UBYTE GTIA_VDELAY; +UBYTE GTIA_GRACTL; + +/* Internal GTIA state ----------------------------------------------------- */ + +int GTIA_speaker; +int GTIA_consol_override = 0; +static UBYTE consol; +UBYTE consol_mask; +UBYTE GTIA_TRIG[4]; +UBYTE GTIA_TRIG_latch[4]; + +#if defined(BASIC) || defined(CURSES_BASIC) + +static UBYTE PF0PM = 0; +static UBYTE PF1PM = 0; +static UBYTE PF2PM = 0; +static UBYTE PF3PM = 0; +#define GTIA_collisions_mask_missile_playfield 0 +#define GTIA_collisions_mask_player_playfield 0 +#define GTIA_collisions_mask_missile_player 0 +#define GTIA_collisions_mask_player_player 0 + +#else /* defined(BASIC) || defined(CURSES_BASIC) */ + +void set_prior(UBYTE byte); /* in antic.c */ + +/* Player/Missile stuff ---------------------------------------------------- */ + +/* change to 0x00 to disable collisions */ +UBYTE GTIA_collisions_mask_missile_playfield = 0x0f; +UBYTE GTIA_collisions_mask_player_playfield = 0x0f; +UBYTE GTIA_collisions_mask_missile_player = 0x0f; +UBYTE GTIA_collisions_mask_player_player = 0x0f; + +#ifdef NEW_CYCLE_EXACT +/* temporary collision registers for the current scanline only */ +UBYTE P1PL_T; +UBYTE P2PL_T; +UBYTE P3PL_T; +UBYTE M0PL_T; +UBYTE M1PL_T; +UBYTE M2PL_T; +UBYTE M3PL_T; +/* If partial collisions have been generated during a scanline, this + * is the position of the up-to-date collision point , otherwise it is 0 + */ +int collision_curpos; +/* if hitclr has been written to during a scanline, this is the position + * within pm_scaline at which it was written to, and collisions should + * only be generated from this point on, otherwise it is 0 + */ +int hitclr_pos; +#else +#define P1PL_T GTIA_P1PL +#define P2PL_T GTIA_P2PL +#define P3PL_T GTIA_P3PL +#define M0PL_T GTIA_M0PL +#define M1PL_T GTIA_M1PL +#define M2PL_T GTIA_M2PL +#define M3PL_T GTIA_M3PL +#endif /* NEW_CYCLE_EXACT */ + +static UBYTE *hposp_ptr[4]; +static UBYTE *hposm_ptr[4]; +static ULONG hposp_mask[4]; + +static ULONG grafp_lookup[4][256]; +static ULONG *grafp_ptr[4]; +static int global_sizem[4]; + +static const int PM_Width[4] = {1, 2, 1, 4}; + +/* Meaning of bits in GTIA_pm_scanline: +bit 0 - Player 0 +bit 1 - Player 1 +bit 2 - Player 2 +bit 3 - Player 3 +bit 4 - Missile 0 +bit 5 - Missile 1 +bit 6 - Missile 2 +bit 7 - Missile 3 +*/ + +UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +int GTIA_pm_dirty = TRUE; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) + +/* Colours ----------------------------------------------------------------- */ + +#ifdef USE_COLOUR_TRANSLATION_TABLE +UWORD colour_translation_table[256]; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +static void setup_gtia9_11(void) { + int i; +#ifdef USE_COLOUR_TRANSLATION_TABLE + UWORD temp; + temp = colour_translation_table[GTIA_COLBK & 0xf0]; + ANTIC_lookup_gtia11[0] = ((ULONG) temp << 16) + temp; + for (i = 1; i < 16; i++) { + temp = colour_translation_table[GTIA_COLBK | i]; + ANTIC_lookup_gtia9[i] = ((ULONG) temp << 16) + temp; + temp = colour_translation_table[GTIA_COLBK | (i << 4)]; + ANTIC_lookup_gtia11[i] = ((ULONG) temp << 16) + temp; + } +#else + ULONG count9 = 0; + ULONG count11 = 0; + ANTIC_lookup_gtia11[0] = ANTIC_lookup_gtia9[0] & 0xf0f0f0f0; + for (i = 1; i < 16; i++) { + ANTIC_lookup_gtia9[i] = ANTIC_lookup_gtia9[0] | (count9 += 0x01010101); + ANTIC_lookup_gtia11[i] = ANTIC_lookup_gtia9[0] | (count11 += 0x10101010); + } +#endif +} + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int GTIA_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + int i; + for (i = 0; i < 256; i++) { + int tmp = i + 0x100; + ULONG grafp1 = 0; + ULONG grafp2 = 0; + ULONG grafp4 = 0; + do { + grafp1 <<= 1; + grafp2 <<= 2; + grafp4 <<= 4; + if (tmp & 1) { + grafp1++; + grafp2 += 3; + grafp4 += 15; + } + tmp >>= 1; + } while (tmp != 1); + grafp_lookup[2][i] = grafp_lookup[0][i] = grafp1; + grafp_lookup[1][i] = grafp2; + grafp_lookup[3][i] = grafp4; + } + memset(ANTIC_cl, GTIA_COLOUR_BLACK, sizeof(ANTIC_cl)); + for (i = 0; i < 32; i++) + GTIA_PutByte((UWORD) i, 0); +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +#ifdef NEW_CYCLE_EXACT + +/* generate updated PxPL and MxPL for part of a scanline */ +/* slow, but should be called rarely */ +static void generate_partial_pmpl_colls(int l, int r) +{ + int i; + if (r < 0 || l >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) + return; + if (r >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) { + r = (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0]); + } + if (l < 0) + l = 0; + + for (i = l; i <= r; i++) { + UBYTE p = GTIA_pm_scanline[i]; +/* It is possible that some bits are set in PxPL/MxPL here, which would + * not otherwise be set ever in GTIA_NewPmScanline. This is because the + * player collisions are always generated in order in GTIA_NewPmScanline. + * However this does not cause any problem because we never use those bits + * of PxPL/MxPL in the collision reading code. + */ + GTIA_P1PL |= (p & (1 << 1)) ? p : 0; + GTIA_P2PL |= (p & (1 << 2)) ? p : 0; + GTIA_P3PL |= (p & (1 << 3)) ? p : 0; + GTIA_M0PL |= (p & (0x10 << 0)) ? p : 0; + GTIA_M1PL |= (p & (0x10 << 1)) ? p : 0; + GTIA_M2PL |= (p & (0x10 << 2)) ? p : 0; + GTIA_M3PL |= (p & (0x10 << 3)) ? p : 0; + } + +} + +/* update pm->pl collisions for a partial scanline */ +static void update_partial_pmpl_colls(void) +{ + int l = collision_curpos; + int r = ANTIC_XPOS * 2 - 37; + generate_partial_pmpl_colls(l, r); + collision_curpos = r; +} + +/* update pm-> pl collisions at the end of a scanline */ +void GTIA_UpdatePmplColls(void) +{ + if (hitclr_pos != 0){ + generate_partial_pmpl_colls(hitclr_pos, + sizeof(GTIA_pm_scanline) / sizeof(GTIA_pm_scanline[0]) - 1); +/* If hitclr was written to, then only part of GTIA_pm_scanline should be used + * for collisions */ + + } + else { +/* otherwise the whole of pm_scaline can be used for collisions. This will + * update the collision registers based on the generated collisions for the + * current line */ + GTIA_P1PL |= P1PL_T; + GTIA_P2PL |= P2PL_T; + GTIA_P3PL |= P3PL_T; + GTIA_M0PL |= M0PL_T; + GTIA_M1PL |= M1PL_T; + GTIA_M2PL |= M2PL_T; + GTIA_M3PL |= M3PL_T; + } + collision_curpos = 0; + hitclr_pos = 0; +} + +#else +#define update_partial_pmpl_colls() +#endif /* NEW_CYCLE_EXACT */ + +/* Prepare PMG scanline ---------------------------------------------------- */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +void GTIA_NewPmScanline(void) +{ +#ifdef NEW_CYCLE_EXACT +/* reset temporary pm->pl collisions */ + P1PL_T = P2PL_T = P3PL_T = 0; + M0PL_T = M1PL_T = M2PL_T = M3PL_T = 0; +#endif /* NEW_CYCLE_EXACT */ +/* Clear if necessary */ + if (GTIA_pm_dirty) { + memset(GTIA_pm_scanline, 0, ATARI_WIDTH / 2); + GTIA_pm_dirty = FALSE; + } + +/* Draw Players */ + +#define DO_PLAYER(n) if (GTIA_GRAFP##n) { \ + ULONG grafp = grafp_ptr[n][GTIA_GRAFP##n] & hposp_mask[n]; \ + if (grafp) { \ + UBYTE *ptr = hposp_ptr[n]; \ + GTIA_pm_dirty = TRUE; \ + do { \ + if (grafp & 1) \ + P##n##PL_T |= *ptr |= 1 << n; \ + ptr++; \ + grafp >>= 1; \ + } while (grafp); \ + } \ +} + + /* optimized DO_PLAYER(0): GTIA_pm_scanline is clear and P0PL is unused */ + if (GTIA_GRAFP0) { + ULONG grafp = grafp_ptr[0][GTIA_GRAFP0] & hposp_mask[0]; + if (grafp) { + UBYTE *ptr = hposp_ptr[0]; + GTIA_pm_dirty = TRUE; + do { + if (grafp & 1) + *ptr = 1; + ptr++; + grafp >>= 1; + } while (grafp); + } + } + + DO_PLAYER(1) + DO_PLAYER(2) + DO_PLAYER(3) + +/* Draw Missiles */ + +#define DO_MISSILE(n,p,m,r,l) if (GTIA_GRAFM & m) { \ + int j = global_sizem[n]; \ + UBYTE *ptr = hposm_ptr[n]; \ + if (GTIA_GRAFM & r) { \ + if (GTIA_GRAFM & l) \ + j <<= 1; \ + } \ + else \ + ptr += j; \ + if (ptr < GTIA_pm_scanline + 2) { \ + j += ptr - GTIA_pm_scanline - 2; \ + ptr = GTIA_pm_scanline + 2; \ + } \ + else if (ptr + j > GTIA_pm_scanline + ATARI_WIDTH / 2 - 2) \ + j = GTIA_pm_scanline + ATARI_WIDTH / 2 - 2 - ptr; \ + if (j > 0) \ + do \ + M##n##PL_T |= *ptr++ |= p; \ + while (--j); \ +} + + if (GTIA_GRAFM) { + GTIA_pm_dirty = TRUE; + DO_MISSILE(3, 0x80, 0xc0, 0x80, 0x40) + DO_MISSILE(2, 0x40, 0x30, 0x20, 0x10) + DO_MISSILE(1, 0x20, 0x0c, 0x08, 0x04) + DO_MISSILE(0, 0x10, 0x03, 0x02, 0x01) + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* GTIA registers ---------------------------------------------------------- */ + +void GTIA_Frame(void) +{ +#ifdef BASIC + consol = 0xf; +#else +#if SKIP + consol = INPUT_key_consol | 0x08; +#else + consol = 0xf; +#endif +#endif + + if (GTIA_GRACTL & 4) { + GTIA_TRIG_latch[0] &= GTIA_TRIG[0]; + GTIA_TRIG_latch[1] &= GTIA_TRIG[1]; + GTIA_TRIG_latch[2] &= GTIA_TRIG[2]; + GTIA_TRIG_latch[3] &= GTIA_TRIG[3]; + } +} + +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0x1f) { + case GTIA_OFFSET_M0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x10) >> 4) + + ((PF1PM & 0x10) >> 3) + + ((PF2PM & 0x10) >> 2) + + ((PF3PM & 0x10) >> 1)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x20) >> 5) + + ((PF1PM & 0x20) >> 4) + + ((PF2PM & 0x20) >> 3) + + ((PF3PM & 0x20) >> 2)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x40) >> 6) + + ((PF1PM & 0x40) >> 5) + + ((PF2PM & 0x40) >> 4) + + ((PF3PM & 0x40) >> 3)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x80) >> 7) + + ((PF1PM & 0x80) >> 6) + + ((PF2PM & 0x80) >> 5) + + ((PF3PM & 0x80) >> 4)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_P0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return ((PF0PM & 0x01) + + ((PF1PM & 0x01) << 1) + + ((PF2PM & 0x01) << 2) + + ((PF3PM & 0x01) << 3)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x02) >> 1) + + (PF1PM & 0x02) + + ((PF2PM & 0x02) << 1) + + ((PF3PM & 0x02) << 2)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x04) >> 2) + + ((PF1PM & 0x04) >> 1) + + (PF2PM & 0x04) + + ((PF3PM & 0x04) << 1)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x08) >> 3) + + ((PF1PM & 0x08) >> 2) + + ((PF2PM & 0x08) >> 1) + + (PF3PM & 0x08)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_M0PL: + update_partial_pmpl_colls(); + return GTIA_M0PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M1PL: + update_partial_pmpl_colls(); + return GTIA_M1PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M2PL: + update_partial_pmpl_colls(); + return GTIA_M2PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M3PL: + update_partial_pmpl_colls(); + return GTIA_M3PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_P0PL: + update_partial_pmpl_colls(); + return (((GTIA_P1PL & 0x01) << 1) /* mask in player 1 */ + + ((GTIA_P2PL & 0x01) << 2) /* mask in player 2 */ + + ((GTIA_P3PL & 0x01) << 3)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P1PL: + update_partial_pmpl_colls(); + return ((GTIA_P1PL & 0x01) /* mask in player 0 */ + + ((GTIA_P2PL & 0x02) << 1) /* mask in player 2 */ + + ((GTIA_P3PL & 0x02) << 2)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P2PL: + update_partial_pmpl_colls(); + return ((GTIA_P2PL & 0x03) /* mask in player 0 and 1 */ + + ((GTIA_P3PL & 0x04) << 1)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P3PL: + update_partial_pmpl_colls(); + return (GTIA_P3PL & 0x07) /* mask in player 0,1, and 2 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_TRIG0: + return GTIA_TRIG[0] & GTIA_TRIG_latch[0]; + case GTIA_OFFSET_TRIG1: + return GTIA_TRIG[1] & GTIA_TRIG_latch[1]; + case GTIA_OFFSET_TRIG2: + return GTIA_TRIG[2] & GTIA_TRIG_latch[2]; + case GTIA_OFFSET_TRIG3: + return GTIA_TRIG[3] & GTIA_TRIG_latch[3]; + case GTIA_OFFSET_PAL: + return (tv_mode == TV_PAL) ? 0x01 : 0x0f; + case GTIA_OFFSET_CONSOL: + { +#if SKIP + UBYTE byte = consol & consol_mask; + if (!no_side_effects && GTIA_consol_override > 0) { + /* Check if we're called from outside OS. This avoids sending + console keystrokes to diagnostic cartridges. */ + if (CPU_regPC < 0xc000) + /* Not from OS. Disable console override. */ + GTIA_consol_override = 0; + else { + --GTIA_consol_override; + if (Atari800_builtin_basic && Atari800_disable_basic && !BINLOAD_loading_basic) + /* Only for XL/XE - hold Option during reboot. */ + byte &= ~INPUT_CONSOL_OPTION; + if (CASSETTE_hold_start && Atari800_machine_type != Atari800_MACHINE_5200) { + /* Only for the computers - hold Start during reboot. */ + byte &= ~INPUT_CONSOL_START; + if (GTIA_consol_override == 0) { + /* press Space after Start to start cassette boot. */ + CASSETTE_press_space = 1; + CASSETTE_hold_start = CASSETTE_hold_start_on_reboot; + } + } + } + } +#else + UBYTE byte = consol_mask; +#endif + return byte; + } + default: + break; + } + + return 0xf; +} + +void GTIA_PutByte(UWORD addr, UBYTE byte) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + UWORD cword; + UWORD cword2; + +#ifdef NEW_CYCLE_EXACT + int x; /* the cycle-exact update position in GTIA_pm_scanline */ + if (ANTIC_DRAWING_SCREEN) { + if ((addr & 0x1f) != GTIA_PRIOR) { + ANTIC_UpdateScanline(); + } else { + ANTIC_UpdateScanlinePrior(byte); + } + } +#define UPDATE_PM_CYCLE_EXACT if(ANTIC_DRAWING_SCREEN) GTIA_NewPmScanline(); +#else +#define UPDATE_PM_CYCLE_EXACT +#endif + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + switch (addr & 0x1f) { + case GTIA_OFFSET_CONSOL: + GTIA_speaker = !(byte & 0x08); +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(1); +#endif +#ifdef SKIP + consol_mask = (~byte) & 0x0f; +#else + consol_mask = byte; +#endif + break; + +#if defined(BASIC) || defined(CURSES_BASIC) + + /* We use these for Antic modes 6, 7 on Curses */ + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte; + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte; + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte; + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte; + break; + +#else + +#ifdef USE_COLOUR_TRANSLATION_TABLE + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + ANTIC_cl[C_BAK] = cword = colour_translation_table[byte]; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + ANTIC_cl[C_PF0] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + ANTIC_cl[C_PF1] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + } + { + UBYTE byte2 = (GTIA_COLPF2 & 0xf0) + (byte & 0xf); + ANTIC_cl[C_HI2] = cword = colour_translation_table[byte2]; + ANTIC_cl[C_HI3] = colour_translation_table[(GTIA_COLPF3 & 0xf0) | (byte & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword; + else { + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + ANTIC_cl[C_PF2] = cword = GTIA_colour_translation_table[byte]; + { + UBYTE byte2 = (byte & 0xf0) + (GTIA_COLPF1 & 0xf); + ANTIC_cl[C_HI2] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword2; + } + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + ANTIC_cl[C_PF3] = cword = colour_translation_table[byte]; + ANTIC_cl[C_HI3] = cword2 = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM1; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM0; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + ANTIC_cl[C_PM2] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM3; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[((byte | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[((byte2 | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + ANTIC_cl[C_PM3] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM2; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; +#else /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_BAK] = cword; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF0] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF0 | C_PM01] = (ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF1] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF1 | C_PM01] = (ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + } + ((UBYTE *)ANTIC_hires_lookup_l)[0x80] = ((UBYTE *)ANTIC_hires_lookup_l)[0x41] = (UBYTE) + (ANTIC_hires_lookup_l[0x60] = cword & 0xf0f); + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF2] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + else + ANTIC_cl[C_PF2 | C_PM23] = (ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]) | (ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]); + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF3] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM2] | ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM1]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM0]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM2] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM3]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM3] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_GRAFM: + GTIA_GRAFM = byte; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_GRAFP(n) x = ANTIC_XPOS * 2 - 3;\ + if (GTIA_HPOSP##n >= x) {\ + /* hpos right of x */\ + /* redraw */ \ + UPDATE_PM_CYCLE_EXACT\ + } +#else +#define CYCLE_EXACT_GRAFP(n) +#endif /* NEW_CYCLE_EXACT */ + +#define DO_GRAFP(n) case GTIA_OFFSET_GRAFP##n:\ + GTIA_GRAFP##n = byte;\ + CYCLE_EXACT_GRAFP(n);\ + break; + + DO_GRAFP(0) + DO_GRAFP(1) + DO_GRAFP(2) + DO_GRAFP(3) + + case GTIA_OFFSET_HITCLR: + GTIA_M0PL = GTIA_M1PL = GTIA_M2PL = GTIA_M3PL = 0; + GTIA_P0PL = GTIA_P1PL = GTIA_P2PL = GTIA_P3PL = 0; + PF0PM = PF1PM = PF2PM = PF3PM = 0; +#ifdef NEW_CYCLE_EXACT + hitclr_pos = ANTIC_XPOS * 2 - 37; + collision_curpos = hitclr_pos; +#endif + break; +/* TODO: cycle-exact missile HPOS, GRAF, SIZE */ +/* this is only an approximation */ + case GTIA_OFFSET_HPOSM0: + GTIA_HPOSM0 = byte; + hposm_ptr[0] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM1: + GTIA_HPOSM1 = byte; + hposm_ptr[1] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM2: + GTIA_HPOSM2 = byte; + hposm_ptr[2] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM3: + GTIA_HPOSM3 = byte; + hposm_ptr[3] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_HPOSP(n) x = ANTIC_XPOS * 2 - 1;\ + if (GTIA_HPOSP##n < x && byte < x) {\ + /* case 1: both left of x */\ + /* do nothing */\ + }\ + else if (GTIA_HPOSP##n >= x && byte >= x ) {\ + /* case 2: both right of x */\ + /* redraw, clearing first */\ + UPDATE_PM_CYCLE_EXACT\ + }\ + else if (GTIA_HPOSP##n = x) {\ + /* case 3: new value is right, old value is left */\ + /* redraw without clearing first */\ + /* note: a hack, we can get away with it unless another change occurs */\ + /* before the original copy that wasn't erased due to changing */\ + /* GTIA_pm_dirty is drawn */\ + GTIA_pm_dirty = FALSE;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_pm_dirty = TRUE; /* can't trust that it was reset correctly */\ + }\ + else {\ + /* case 4: new value is left, old value is right */\ + /* remove old player and don't draw the new one */\ + UBYTE save_graf = GTIA_GRAFP##n;\ + GTIA_GRAFP##n = 0;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_GRAFP##n = save_graf;\ + } +#else +#define CYCLE_EXACT_HPOSP(n) +#endif /* NEW_CYCLE_EXACT */ +#define DO_HPOSP(n) case GTIA_OFFSET_HPOSP##n: \ + hposp_ptr[n] = GTIA_pm_scanline + byte - 0x20; \ + if (byte >= 0x22) { \ + if (byte > 0xbe) { \ + if (byte >= 0xde) \ + hposp_mask[n] = 0; \ + else \ + hposp_mask[n] = 0xffffffff >> (byte - 0xbe); \ + } \ + else \ + hposp_mask[n] = 0xffffffff; \ + } \ + else if (byte > 2) \ + hposp_mask[n] = 0xffffffff << (0x22 - byte); \ + else \ + hposp_mask[n] = 0; \ + CYCLE_EXACT_HPOSP(n)\ + GTIA_HPOSP##n = byte; \ + break; + + DO_HPOSP(0) + DO_HPOSP(1) + DO_HPOSP(2) + DO_HPOSP(3) + +/* TODO: cycle-exact size changes */ +/* this is only an approximation */ + case GTIA_OFFSET_SIZEM: + GTIA_SIZEM = byte; + global_sizem[0] = PM_Width[byte & 0x03]; + global_sizem[1] = PM_Width[(byte & 0x0c) >> 2]; + global_sizem[2] = PM_Width[(byte & 0x30) >> 4]; + global_sizem[3] = PM_Width[(byte & 0xc0) >> 6]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP0: + GTIA_SIZEP0 = byte; + grafp_ptr[0] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP1: + GTIA_SIZEP1 = byte; + grafp_ptr[1] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP2: + GTIA_SIZEP2 = byte; + grafp_ptr[2] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP3: + GTIA_SIZEP3 = byte; + grafp_ptr[3] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_PRIOR: + ANTIC_SetPrior(byte); + GTIA_PRIOR = byte; + if (byte & 0x40) + setup_gtia9_11(); + break; + case GTIA_OFFSET_VDELAY: + GTIA_VDELAY = byte; + break; + case GTIA_OFFSET_GRACTL: + GTIA_GRACTL = byte; + ANTIC_missile_gra_enabled = (byte & 0x01); + ANTIC_player_gra_enabled = (byte & 0x02); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + if ((byte & 4) == 0) + GTIA_TRIG_latch[0] = GTIA_TRIG_latch[1] = GTIA_TRIG_latch[2] = GTIA_TRIG_latch[3] = 1; + break; + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void GTIA_StateSave(void) +{ + int next_console_value = 7; + + StateSav_SaveUBYTE(>IA_HPOSP0, 1); + StateSav_SaveUBYTE(>IA_HPOSP1, 1); + StateSav_SaveUBYTE(>IA_HPOSP2, 1); + StateSav_SaveUBYTE(>IA_HPOSP3, 1); + StateSav_SaveUBYTE(>IA_HPOSM0, 1); + StateSav_SaveUBYTE(>IA_HPOSM1, 1); + StateSav_SaveUBYTE(>IA_HPOSM2, 1); + StateSav_SaveUBYTE(>IA_HPOSM3, 1); + StateSav_SaveUBYTE(&PF0PM, 1); + StateSav_SaveUBYTE(&PF1PM, 1); + StateSav_SaveUBYTE(&PF2PM, 1); + StateSav_SaveUBYTE(&PF3PM, 1); + StateSav_SaveUBYTE(>IA_M0PL, 1); + StateSav_SaveUBYTE(>IA_M1PL, 1); + StateSav_SaveUBYTE(>IA_M2PL, 1); + StateSav_SaveUBYTE(>IA_M3PL, 1); + StateSav_SaveUBYTE(>IA_P0PL, 1); + StateSav_SaveUBYTE(>IA_P1PL, 1); + StateSav_SaveUBYTE(>IA_P2PL, 1); + StateSav_SaveUBYTE(>IA_P3PL, 1); + StateSav_SaveUBYTE(>IA_SIZEP0, 1); + StateSav_SaveUBYTE(>IA_SIZEP1, 1); + StateSav_SaveUBYTE(>IA_SIZEP2, 1); + StateSav_SaveUBYTE(>IA_SIZEP3, 1); + StateSav_SaveUBYTE(>IA_SIZEM, 1); + StateSav_SaveUBYTE(>IA_GRAFP0, 1); + StateSav_SaveUBYTE(>IA_GRAFP1, 1); + StateSav_SaveUBYTE(>IA_GRAFP2, 1); + StateSav_SaveUBYTE(>IA_GRAFP3, 1); + StateSav_SaveUBYTE(>IA_GRAFM, 1); + StateSav_SaveUBYTE(>IA_COLPM0, 1); + StateSav_SaveUBYTE(>IA_COLPM1, 1); + StateSav_SaveUBYTE(>IA_COLPM2, 1); + StateSav_SaveUBYTE(>IA_COLPM3, 1); + StateSav_SaveUBYTE(>IA_COLPF0, 1); + StateSav_SaveUBYTE(>IA_COLPF1, 1); + StateSav_SaveUBYTE(>IA_COLPF2, 1); + StateSav_SaveUBYTE(>IA_COLPF3, 1); + StateSav_SaveUBYTE(>IA_COLBK, 1); + StateSav_SaveUBYTE(>IA_PRIOR, 1); + StateSav_SaveUBYTE(>IA_VDELAY, 1); + StateSav_SaveUBYTE(>IA_GRACTL, 1); + + StateSav_SaveUBYTE(&consol_mask, 1); + StateSav_SaveINT(>IA_speaker, 1); + StateSav_SaveINT(&next_console_value, 1); + StateSav_SaveUBYTE(GTIA_TRIG_latch, 4); +} + +void GTIA_StateRead(UBYTE version) +{ + int next_console_value; /* ignored */ + + StateSav_ReadUBYTE(>IA_HPOSP0, 1); + StateSav_ReadUBYTE(>IA_HPOSP1, 1); + StateSav_ReadUBYTE(>IA_HPOSP2, 1); + StateSav_ReadUBYTE(>IA_HPOSP3, 1); + StateSav_ReadUBYTE(>IA_HPOSM0, 1); + StateSav_ReadUBYTE(>IA_HPOSM1, 1); + StateSav_ReadUBYTE(>IA_HPOSM2, 1); + StateSav_ReadUBYTE(>IA_HPOSM3, 1); + StateSav_ReadUBYTE(&PF0PM, 1); + StateSav_ReadUBYTE(&PF1PM, 1); + StateSav_ReadUBYTE(&PF2PM, 1); + StateSav_ReadUBYTE(&PF3PM, 1); + StateSav_ReadUBYTE(>IA_M0PL, 1); + StateSav_ReadUBYTE(>IA_M1PL, 1); + StateSav_ReadUBYTE(>IA_M2PL, 1); + StateSav_ReadUBYTE(>IA_M3PL, 1); + StateSav_ReadUBYTE(>IA_P0PL, 1); + StateSav_ReadUBYTE(>IA_P1PL, 1); + StateSav_ReadUBYTE(>IA_P2PL, 1); + StateSav_ReadUBYTE(>IA_P3PL, 1); + StateSav_ReadUBYTE(>IA_SIZEP0, 1); + StateSav_ReadUBYTE(>IA_SIZEP1, 1); + StateSav_ReadUBYTE(>IA_SIZEP2, 1); + StateSav_ReadUBYTE(>IA_SIZEP3, 1); + StateSav_ReadUBYTE(>IA_SIZEM, 1); + StateSav_ReadUBYTE(>IA_GRAFP0, 1); + StateSav_ReadUBYTE(>IA_GRAFP1, 1); + StateSav_ReadUBYTE(>IA_GRAFP2, 1); + StateSav_ReadUBYTE(>IA_GRAFP3, 1); + StateSav_ReadUBYTE(>IA_GRAFM, 1); + StateSav_ReadUBYTE(>IA_COLPM0, 1); + StateSav_ReadUBYTE(>IA_COLPM1, 1); + StateSav_ReadUBYTE(>IA_COLPM2, 1); + StateSav_ReadUBYTE(>IA_COLPM3, 1); + StateSav_ReadUBYTE(>IA_COLPF0, 1); + StateSav_ReadUBYTE(>IA_COLPF1, 1); + StateSav_ReadUBYTE(>IA_COLPF2, 1); + StateSav_ReadUBYTE(>IA_COLPF3, 1); + StateSav_ReadUBYTE(>IA_COLBK, 1); + StateSav_ReadUBYTE(>IA_PRIOR, 1); + StateSav_ReadUBYTE(>IA_VDELAY, 1); + StateSav_ReadUBYTE(>IA_GRACTL, 1); + + StateSav_ReadUBYTE(&consol_mask, 1); + StateSav_ReadINT(>IA_speaker, 1); + StateSav_ReadINT(&next_console_value, 1); + if (version >= 7) + StateSav_ReadUBYTE(GTIA_TRIG_latch, 4); + + GTIA_PutByte(GTIA_OFFSET_HPOSP0, GTIA_HPOSP0); + GTIA_PutByte(GTIA_OFFSET_HPOSP1, GTIA_HPOSP1); + GTIA_PutByte(GTIA_OFFSET_HPOSP2, GTIA_HPOSP2); + GTIA_PutByte(GTIA_OFFSET_HPOSP3, GTIA_HPOSP3); + GTIA_PutByte(GTIA_OFFSET_HPOSM0, GTIA_HPOSM0); + GTIA_PutByte(GTIA_OFFSET_HPOSM1, GTIA_HPOSM1); + GTIA_PutByte(GTIA_OFFSET_HPOSM2, GTIA_HPOSM2); + GTIA_PutByte(GTIA_OFFSET_HPOSM3, GTIA_HPOSM3); + GTIA_PutByte(GTIA_OFFSET_SIZEP0, GTIA_SIZEP0); + GTIA_PutByte(GTIA_OFFSET_SIZEP1, GTIA_SIZEP1); + GTIA_PutByte(GTIA_OFFSET_SIZEP2, GTIA_SIZEP2); + GTIA_PutByte(GTIA_OFFSET_SIZEP3, GTIA_SIZEP3); + GTIA_PutByte(GTIA_OFFSET_SIZEM, GTIA_SIZEM); + GTIA_PutByte(GTIA_OFFSET_GRAFP0, GTIA_GRAFP0); + GTIA_PutByte(GTIA_OFFSET_GRAFP1, GTIA_GRAFP1); + GTIA_PutByte(GTIA_OFFSET_GRAFP2, GTIA_GRAFP2); + GTIA_PutByte(GTIA_OFFSET_GRAFP3, GTIA_GRAFP3); + GTIA_PutByte(GTIA_OFFSET_GRAFM, GTIA_GRAFM); + GTIA_PutByte(GTIA_OFFSET_COLPM0, GTIA_COLPM0); + GTIA_PutByte(GTIA_OFFSET_COLPM1, GTIA_COLPM1); + GTIA_PutByte(GTIA_OFFSET_COLPM2, GTIA_COLPM2); + GTIA_PutByte(GTIA_OFFSET_COLPM3, GTIA_COLPM3); + GTIA_PutByte(GTIA_OFFSET_COLPF0, GTIA_COLPF0); + GTIA_PutByte(GTIA_OFFSET_COLPF1, GTIA_COLPF1); + GTIA_PutByte(GTIA_OFFSET_COLPF2, GTIA_COLPF2); + GTIA_PutByte(GTIA_OFFSET_COLPF3, GTIA_COLPF3); + GTIA_PutByte(GTIA_OFFSET_COLBK, GTIA_COLBK); + GTIA_PutByte(GTIA_OFFSET_PRIOR, GTIA_PRIOR); + GTIA_PutByte(GTIA_OFFSET_GRACTL, GTIA_GRACTL); +} + +#endif /* BASIC */ diff --git a/MCUME_teensy/teensy5200/gtia.h b/MCUME_teensy/teensy5200/gtia.h new file mode 100644 index 0000000..865c4ae --- /dev/null +++ b/MCUME_teensy/teensy5200/gtia.h @@ -0,0 +1,136 @@ +#ifndef GTIA_H_ +#define GTIA_H_ + + +#define GTIA_OFFSET_HPOSP0 0x00 +#define GTIA_OFFSET_M0PF 0x00 +#define GTIA_OFFSET_HPOSP1 0x01 +#define GTIA_OFFSET_M1PF 0x01 +#define GTIA_OFFSET_HPOSP2 0x02 +#define GTIA_OFFSET_M2PF 0x02 +#define GTIA_OFFSET_HPOSP3 0x03 +#define GTIA_OFFSET_M3PF 0x03 +#define GTIA_OFFSET_HPOSM0 0x04 +#define GTIA_OFFSET_P0PF 0x04 +#define GTIA_OFFSET_HPOSM1 0x05 +#define GTIA_OFFSET_P1PF 0x05 +#define GTIA_OFFSET_HPOSM2 0x06 +#define GTIA_OFFSET_P2PF 0x06 +#define GTIA_OFFSET_HPOSM3 0x07 +#define GTIA_OFFSET_P3PF 0x07 +#define GTIA_OFFSET_SIZEP0 0x08 +#define GTIA_OFFSET_M0PL 0x08 +#define GTIA_OFFSET_SIZEP1 0x09 +#define GTIA_OFFSET_M1PL 0x09 +#define GTIA_OFFSET_SIZEP2 0x0a +#define GTIA_OFFSET_M2PL 0x0a +#define GTIA_OFFSET_SIZEP3 0x0b +#define GTIA_OFFSET_M3PL 0x0b +#define GTIA_OFFSET_SIZEM 0x0c +#define GTIA_OFFSET_P0PL 0x0c +#define GTIA_OFFSET_GRAFP0 0x0d +#define GTIA_OFFSET_P1PL 0x0d +#define GTIA_OFFSET_GRAFP1 0x0e +#define GTIA_OFFSET_P2PL 0x0e +#define GTIA_OFFSET_GRAFP2 0x0f +#define GTIA_OFFSET_P3PL 0x0f +#define GTIA_OFFSET_GRAFP3 0x10 +#define GTIA_OFFSET_TRIG0 0x10 +#define GTIA_OFFSET_GRAFM 0x11 +#define GTIA_OFFSET_TRIG1 0x11 +#define GTIA_OFFSET_COLPM0 0x12 +#define GTIA_OFFSET_TRIG2 0x12 +#define GTIA_OFFSET_COLPM1 0x13 +#define GTIA_OFFSET_TRIG3 0x13 +#define GTIA_OFFSET_COLPM2 0x14 +#define GTIA_OFFSET_PAL 0x14 +#define GTIA_OFFSET_COLPM3 0x15 +#define GTIA_OFFSET_COLPF0 0x16 +#define GTIA_OFFSET_COLPF1 0x17 +#define GTIA_OFFSET_COLPF2 0x18 +#define GTIA_OFFSET_COLPF3 0x19 +#define GTIA_OFFSET_COLBK 0x1a +#define GTIA_OFFSET_PRIOR 0x1b +#define GTIA_OFFSET_VDELAY 0x1c +#define GTIA_OFFSET_GRACTL 0x1d +#define GTIA_OFFSET_HITCLR 0x1e +#define GTIA_OFFSET_CONSOL 0x1f + +extern UBYTE GTIA_GRAFM; +extern UBYTE GTIA_GRAFP0; +extern UBYTE GTIA_GRAFP1; +extern UBYTE GTIA_GRAFP2; +extern UBYTE GTIA_GRAFP3; +extern UBYTE GTIA_HPOSP0; +extern UBYTE GTIA_HPOSP1; +extern UBYTE GTIA_HPOSP2; +extern UBYTE GTIA_HPOSP3; +extern UBYTE GTIA_HPOSM0; +extern UBYTE GTIA_HPOSM1; +extern UBYTE GTIA_HPOSM2; +extern UBYTE GTIA_HPOSM3; +extern UBYTE GTIA_SIZEP0; +extern UBYTE GTIA_SIZEP1; +extern UBYTE GTIA_SIZEP2; +extern UBYTE GTIA_SIZEP3; +extern UBYTE GTIA_SIZEM; +extern UBYTE GTIA_COLPM0; +extern UBYTE GTIA_COLPM1; +extern UBYTE GTIA_COLPM2; +extern UBYTE GTIA_COLPM3; +extern UBYTE GTIA_COLPF0; +extern UBYTE GTIA_COLPF1; +extern UBYTE GTIA_COLPF2; +extern UBYTE GTIA_COLPF3; +extern UBYTE GTIA_COLBK; +extern UBYTE GTIA_GRACTL; +extern UBYTE GTIA_M0PL; +extern UBYTE GTIA_M1PL; +extern UBYTE GTIA_M2PL; +extern UBYTE GTIA_M3PL; +extern UBYTE GTIA_P0PL; +extern UBYTE GTIA_P1PL; +extern UBYTE GTIA_P2PL; +extern UBYTE GTIA_P3PL; +extern UBYTE GTIA_PRIOR; +extern UBYTE GTIA_VDELAY; + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +extern UWORD GTIA_colour_translation_table[256]; +#define GTIA_COLOUR_BLACK GTIA_colour_translation_table[0] +#define GTIA_COLOUR_TO_WORD(dest,src) dest = GTIA_colour_translation_table[src]; + +#else + +#define GTIA_COLOUR_BLACK 0 +#define GTIA_COLOUR_TO_WORD(dest,src) dest = (((UWORD) (src)) << 8) | (src); + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +extern UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +extern int GTIA_pm_dirty; + +extern UBYTE GTIA_collisions_mask_missile_playfield; +extern UBYTE GTIA_collisions_mask_player_playfield; +extern UBYTE GTIA_collisions_mask_missile_player; +extern UBYTE GTIA_collisions_mask_player_player; + +extern UBYTE GTIA_TRIG[4]; +extern UBYTE GTIA_TRIG_latch[4]; + +extern int GTIA_consol_override; +extern int GTIA_speaker; + +int GTIA_Initialise(void); +void GTIA_Frame(void); +void GTIA_NewPmScanline(void); +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects); +void GTIA_PutByte(UWORD addr, UBYTE byte); +void GTIA_StateSave(void); +void GTIA_StateRead(UBYTE version); + +#ifdef NEW_CYCLE_EXACT +void GTIA_UpdatePmplColls(void); +#endif +#endif /* GTIA_H_ */ diff --git a/MCUME_teensy/teensy5200/iopins.h b/MCUME_teensy/teensy5200/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensy5200/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensy5200/keyboard_osd.h b/MCUME_teensy/teensy5200/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensy5200/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensy5200/logo.h b/MCUME_teensy/teensy5200/logo.h new file mode 100644 index 0000000..26fffa0 --- /dev/null +++ b/MCUME_teensy/teensy5200/logo.h @@ -0,0 +1,241 @@ +const uint16_t logo[] = { +0x0140,0x00f0,0x9533,0x5b0b,0x3a07,0x39e7,0x31e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39a7,0x39a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x39c7,0x39c6,0x31a6,0x31a6,0x3186,0x3165,0x3165,0x3986,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3a07,0x39c7,0x31a6,0x3186,0x3185,0x3186,0x3986,0x4207,0x31c7,0x31c6,0x2986,0x2985,0x31a6,0x3186,0x39e7,0x39e7,0x31a6,0x2985,0x2986,0x3186,0x3186,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x2966,0x2985,0x39c6,0x39c7,0x31a6,0x2986,0x2965,0x2986,0x3186,0x39c7,0x39e7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x39e7,0x39e7,0x39c7,0x3165,0x2965,0x3186,0x3186,0x4207,0x4207,0x39c7,0x3186,0x2986,0x2985,0x3186,0x39e7,0x39e7,0x39e7,0x31a6,0x2986,0x3186,0x3185,0x3a07,0x4207,0x3a07,0x31c6,0x2965,0x3186,0x2986,0x39c7,0x4208,0x39e7,0x31a6,0x2965,0x2985,0x2985,0x39c7,0x39c7,0x39e7,0x31a6,0x3185,0x2965,0x2965,0x31c6,0x3a07,0x39e7,0x31c6,0x2985,0x2965,0x2965,0x39c6,0x4227,0x4248,0x39e7,0x2965,0x3186,0x3185,0x31a6,0x4228,0x4208,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x39e7,0x4207,0x39e7,0x3186,0x2986,0x2986,0x3186,0x4207,0x4208,0x39e7,0x31a6,0x3185,0x3185,0x3186,0x39e7,0x4227,0x3a07,0x31a6,0x2986,0x2985,0x29a6,0x31e7,0x3a07,0x3a07,0x31a6,0x2965,0x3186,0x3186,0x39c7,0x4228,0x4228,0x31a6,0x3185,0x3185,0x3185,0x39c6,0x39e7,0x39e7,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x39c6,0x39e7,0x31c6,0x3185,0x31a6,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x3185,0x3186,0x3186,0x39c6,0x39e7,0x2986,0x3186,0x2986,0x2985,0x3185,0x31a6,0x39e7,0x3185,0x3186,0x2986,0x2986,0x2985,0x39c6,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x3186,0x2985,0x2985,0x2985,0x3186,0x31a7,0x2945,0x3186,0x2985,0x3186,0x3185,0x3186,0x31c6,0x2965,0x2985,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x2985,0x2985,0x3186,0x3186,0x31a6,0x39e7,0x2965,0x3186,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x3185,0x2965,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x3166,0x3166,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x3206,0x9d53, +0x532b,0x00a0,0x2965,0x2945,0x2145,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2965,0x2965,0x2966,0x2965,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2125,0x2945,0x39c7,0x31a6,0x2144,0x2145,0x2144,0x2144,0x2965,0x39c6,0x39c6,0x2144,0x1944,0x2145,0x2124,0x3185,0x3a07,0x31c6,0x2144,0x2144,0x2144,0x2124,0x3165,0x4228,0x39e7,0x2164,0x2144,0x2145,0x2145,0x2965,0x39e7,0x3a07,0x2965,0x2124,0x2145,0x2125,0x2945,0x39e7,0x39e7,0x2986,0x2145,0x2945,0x2124,0x2944,0x31a6,0x39c7,0x2965,0x2124,0x2145,0x2145,0x2945,0x39e7,0x39e7,0x3185,0x2124,0x2125,0x2124,0x2144,0x39c6,0x39e7,0x31a6,0x2144,0x2144,0x2124,0x2945,0x39c6,0x39e7,0x31c6,0x2144,0x2145,0x2144,0x2144,0x39c6,0x39e7,0x39a6,0x2945,0x2945,0x2945,0x2144,0x39e6,0x4207,0x39e7,0x2165,0x2144,0x2145,0x2124,0x39c7,0x4a28,0x39e7,0x2965,0x2125,0x2144,0x2124,0x31a6,0x4227,0x3a06,0x2985,0x2124,0x2944,0x2124,0x31a6,0x4227,0x39e7,0x2985,0x2145,0x2145,0x2124,0x3185,0x5288,0x5288,0x31c6,0x2944,0x2945,0x2944,0x2965,0x4248,0x4228,0x39c6,0x2945,0x2945,0x2945,0x2945,0x31c6,0x4227,0x31c6,0x2945,0x2945,0x2945,0x2945,0x39e7,0x4207,0x31c6,0x2945,0x2945,0x2944,0x2944,0x39c6,0x3a07,0x31c6,0x2965,0x2945,0x2945,0x2144,0x39c6,0x4207,0x31a6,0x2945,0x2945,0x2945,0x2124,0x31a6,0x4228,0x39e6,0x2965,0x2964,0x2945,0x2124,0x31a5,0x4207,0x39c6,0x2965,0x2965,0x2145,0x2145,0x2985,0x4207,0x39c6,0x2945,0x2965,0x2965,0x2145,0x2965,0x3a07,0x39c6,0x2944,0x2965,0x2944,0x2144,0x2965,0x39e7,0x39c7,0x2124,0x2945,0x2144,0x2945,0x2944,0x31a6,0x39e7,0x2124,0x2124,0x2144,0x2145,0x2124,0x39c6,0x31a6,0x20e3,0x2945,0x2945,0x2144,0x2124,0x2965,0x31a6,0x2104,0x2144,0x2124,0x2144,0x2144,0x2986,0x31a6,0x18e3,0x2124,0x2124,0x2144,0x2124,0x3186,0x31a6,0x18e3,0x2144,0x2144,0x2144,0x2124,0x2985,0x39e7,0x1903,0x1904,0x2145,0x2145,0x2144,0x2985,0x39c6,0x18e3,0x2104,0x2945,0x2124,0x2124,0x2966,0x39c7,0x18e3,0x2103,0x2944,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2145,0x2125,0x2125,0x2925,0x2945,0x2945,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2985,0x0000,0x52ea, +0x2165,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2103,0x1904,0x1924,0x2104,0x2945,0x39c7,0x2985,0x1904,0x2124,0x2124,0x2104,0x2944,0x39a5,0x2964,0x1903,0x1924,0x2124,0x2104,0x3185,0x4227,0x39e6,0x2124,0x2124,0x2104,0x2104,0x3185,0x4227,0x31e6,0x2124,0x2124,0x2124,0x2103,0x2965,0x3a07,0x39e6,0x2124,0x2124,0x2124,0x2104,0x2944,0x4207,0x39c6,0x2124,0x2104,0x2104,0x2104,0x2944,0x39e7,0x39c7,0x2945,0x2104,0x2104,0x2104,0x2944,0x4207,0x39e7,0x2965,0x1904,0x2104,0x2104,0x2124,0x41e7,0x4207,0x2965,0x1904,0x2124,0x2104,0x2125,0x41e7,0x4207,0x3185,0x2124,0x2124,0x2124,0x2104,0x39e7,0x4228,0x31a6,0x2103,0x2124,0x2944,0x4aa8,0x2985,0x39c6,0x39e7,0x31a6,0x31a6,0x31a5,0x31a6,0x4228,0x4a48,0x4228,0x39c7,0x31a6,0x31a6,0x3186,0x39e7,0x4228,0x39e7,0x3185,0x2144,0x2124,0x18e3,0x2944,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2104,0x2945,0x39c6,0x39c6,0x31a6,0x2965,0x2985,0x2965,0x3185,0x4207,0x39e7,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x4207,0x4228,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x4207,0x4228,0x39c7,0x31a6,0x3185,0x3185,0x2965,0x31a6,0x39e7,0x39c7,0x3186,0x31a6,0x3186,0x2965,0x39e7,0x4208,0x39c7,0x3186,0x3186,0x3186,0x2965,0x39c6,0x4a48,0x4268,0x4247,0x4227,0x4247,0x4248,0x4aa9,0x52ea,0x52e9,0x52e9,0x52ea,0x4ac9,0x52c8,0x5b2a,0x636b,0x634b,0x5b2a,0x5b0a,0x636c,0x6309,0x3183,0x4228,0x39e7,0x2945,0x2124,0x2124,0x2124,0x2124,0x39e7,0x4207,0x2944,0x2104,0x2124,0x2124,0x2104,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2124,0x1904,0x31a6,0x39e7,0x2924,0x2104,0x2104,0x2124,0x1924,0x2965,0x39e7,0x2124,0x18e3,0x2104,0x2124,0x1903,0x2986,0x39e7,0x2104,0x18e3,0x2104,0x2104,0x1904,0x2985,0x39c6,0x2103,0x2103,0x2124,0x2124,0x18e3,0x2965,0x39e7,0x2124,0x18e3,0x2124,0x2104,0x1903,0x2944,0x39e7,0x2104,0x18c3,0x2124,0x2124,0x2104,0x2965,0x3a07,0x2124,0x10a2,0x2104,0x2104,0x2104,0x2945,0x39c7,0x18e3,0x18c2,0x2104,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1924,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2123,0x2124,0x2124,0x2124,0x2144, +0x1924,0x1903,0x1903,0x1903,0x18e3,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1903,0x1904,0x1903,0x2104,0x2104,0x1903,0x2104,0x1903,0x1903,0x1903,0x2104,0x1903,0x18e3,0x1903,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x20e3,0x3185,0x39e6,0x2144,0x18e3,0x2104,0x2104,0x20e3,0x3186,0x39c6,0x2944,0x18e3,0x1903,0x2103,0x20e3,0x3185,0x4207,0x2985,0x18e3,0x1904,0x18e4,0x20e3,0x3185,0x4227,0x2985,0x1903,0x1904,0x18e4,0x18e3,0x3185,0x4207,0x31a5,0x1903,0x1903,0x1904,0x18e3,0x2965,0x4207,0x31c6,0x1904,0x18e4,0x18e4,0x18e3,0x2944,0x4207,0x31c6,0x1904,0x1904,0x18e3,0x18c3,0x2945,0x4228,0x39c6,0x2124,0x10e3,0x18e3,0x18e3,0x2924,0x41e7,0x39c7,0x2124,0x18e3,0x1904,0x18e4,0x2124,0x4207,0x4206,0x2965,0x18e3,0x18e4,0x2104,0x2104,0x39e7,0x4207,0x2965,0x18e3,0x1904,0x2124,0x4246,0x1903,0x2104,0x2965,0x31c6,0x39e7,0x39e6,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x41e7,0x4207,0x4207,0x4207,0x39e7,0x39c6,0x3186,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c6,0x31a6,0x31a6,0x39c7,0x39c6,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39c6,0x31a5,0x31a6,0x39e6,0x39e7,0x39e7,0x4208,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x4228,0x4a48,0x4a48,0x4a48,0x4a68,0x4a69,0x4a68,0x4a89,0x5289,0x52aa,0x52a9,0x4a88,0x4a88,0x4a68,0x4a68,0x52a8,0x4a88,0x4a68,0x5b2b,0x8c2c,0x41c2,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2104,0x1903,0x39e7,0x4207,0x2124,0x18e3,0x1904,0x1904,0x18e3,0x39c6,0x4207,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x3186,0x4207,0x2924,0x18e3,0x1904,0x1903,0x18e3,0x2985,0x39e7,0x2124,0x18c3,0x1904,0x1903,0x10e3,0x2945,0x39e7,0x2944,0x10a2,0x1904,0x18e3,0x18e3,0x2944,0x39e7,0x2944,0x10a2,0x18e4,0x18e3,0x18e3,0x2124,0x41e7,0x2965,0x1082,0x2103,0x2124,0x2124,0x2123,0x31c6,0x2144,0x1082,0x2104,0x1904,0x18e3,0x2104,0x39e7,0x2965,0x0862,0x18e3,0x1903,0x18e3,0x2104,0x39c6,0x2924,0x0861,0x1903,0x2124,0x2124,0x2104,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x2104,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2104,0x1904,0x2124, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x39c6,0x39c6,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39e7,0x2124,0x10e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39c6,0x2124,0x18c3,0x18e3,0x18e4,0x18e3,0x39a6,0x3a07,0x2964,0x10c2,0x18e3,0x18e3,0x18e3,0x31a6,0x39e6,0x2965,0x18e3,0x10e3,0x18c3,0x18c3,0x3165,0x39e7,0x2985,0x18c3,0x10c3,0x18e3,0x18c2,0x2965,0x39c6,0x2965,0x10c3,0x10c3,0x18c3,0x18c3,0x2944,0x39e7,0x31a6,0x18e3,0x10c2,0x18c3,0x18c3,0x2104,0x39e6,0x39c6,0x1903,0x10c3,0x18e3,0x18c3,0x2104,0x39e6,0x39c6,0x2124,0x18c3,0x18e3,0x18e3,0x2104,0x39e7,0x39e7,0x2945,0x18e3,0x18e3,0x2103,0x4a67,0x18c2,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x39e7,0x4207,0x4208,0x4208,0x4208,0x4208,0x41e7,0x4207,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x31a6,0x2965,0x2945,0x2944,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x2124,0x2945,0x2965,0x3186,0x3186,0x2965,0x2965,0x2985,0x3165,0x3186,0x3186,0x31a7,0x39c7,0x39c6,0x39e7,0x4208,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x4207,0x4208,0x4207,0x41e7,0x39e7,0x39c6,0x3185,0x3185,0x31a6,0x39c6,0x39c7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c7,0x39e7,0x4207,0x39e7,0x39c7,0x41e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4207,0x4207,0x4208,0x4208,0x4208,0x4207,0x39e7,0x39c6,0x39c6,0x39c6,0x2985,0x2944,0x39c6,0x7bc9,0x41e2,0x39c7,0x39e7,0x2124,0x18e3,0x1904,0x1903,0x18e3,0x31a6,0x39e6,0x2124,0x18c3,0x18e3,0x1903,0x18c3,0x3185,0x41e7,0x2944,0x18c3,0x18e3,0x18e3,0x10c2,0x2965,0x3a07,0x2944,0x10a2,0x18e3,0x18e3,0x10c3,0x2945,0x39e7,0x2945,0x10c3,0x18e3,0x18c3,0x10a2,0x2123,0x39e6,0x2965,0x1082,0x18e3,0x18e3,0x18c3,0x2104,0x39e7,0x2985,0x1082,0x18c3,0x10c3,0x18e3,0x18e3,0x39c6,0x3185,0x1082,0x18c3,0x2104,0x2964,0x2103,0x31a6,0x2965,0x0861,0x2104,0x2124,0x2144,0x2104,0x39c7,0x3186,0x0861,0x18c3,0x18c3,0x10c3,0x10c2,0x31a6,0x31a6,0x0861,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x10c2,0x10c3,0x10c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0x3185,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x3186,0x31a6,0x10e3,0x10c2,0x10c3,0x10c2,0x2104,0x39c6,0x31a6,0x2103,0x10c3,0x18c3,0x18c3,0x18e3,0x39a6,0x39c6,0x2124,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x31a6,0x2124,0x10c2,0x10c3,0x10c2,0x18c3,0x3185,0x39e7,0x2965,0x10c2,0x10a2,0x10c2,0x10c2,0x2965,0x31c6,0x2144,0x10c2,0x10c2,0x10a2,0x10a2,0x2945,0x39c6,0x2965,0x10c3,0x10a2,0x10c3,0x10a2,0x2124,0x39c6,0x3185,0x18e3,0x10a2,0x18c3,0x10a2,0x2104,0x39c6,0x3185,0x18e3,0x18c3,0x18c3,0x18a2,0x20e3,0x39e7,0x31c6,0x2124,0x10a2,0x18e3,0x18e3,0x52c8,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x41e7,0x39e7,0x4207,0x4208,0x4207,0x3a07,0x39e7,0x31a6,0x2965,0x2124,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2124,0x2944,0x3186,0x31a6,0x31a6,0x39c7,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4a48,0x4a48,0x4227,0x4207,0x39e7,0x3185,0x31a5,0x39c6,0x39e7,0x4208,0x4208,0x4208,0x39e7,0x39c6,0x39e7,0x41e8,0x4208,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4a29,0x4229,0x4229,0x4229,0x4208,0x4207,0x4207,0x4207,0x4207,0x41e7,0x39e7,0x39c6,0x31a6,0x3185,0x2124,0x18e3,0x18e3,0x2944,0x6b27,0x41e2,0x39c6,0x39c7,0x2104,0x18c3,0x18e3,0x18e3,0x18c2,0x2985,0x39e6,0x2944,0x10c2,0x18e3,0x18e3,0x18c2,0x2965,0x39e7,0x2945,0x10a2,0x18e3,0x18c3,0x10a2,0x2964,0x39e7,0x2965,0x1082,0x18c3,0x10c3,0x10c2,0x2124,0x39c7,0x2965,0x10a2,0x10c2,0x10c2,0x1082,0x18e3,0x31c5,0x3185,0x1082,0x10c3,0x18c3,0x10c2,0x10c3,0x31a6,0x2965,0x0861,0x10a3,0x10c3,0x10c2,0x10c2,0x31a6,0x31a6,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x31a6,0x3186,0x0861,0x1903,0x2124,0x2965,0x2965,0x31a6,0x39a6,0x1081,0x10a2,0x10c3,0x10c2,0x10a2,0x2965,0x31a6,0x10a2,0x10a2,0x18e3,0x10e3,0x10c3,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x10c3, +0x10a3,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x3185,0x2944,0x10a2,0x10a2,0x10c2,0x10a2,0x2104,0x2986,0x2145,0x10c3,0x10a2,0x10a2,0x10a2,0x1904,0x31a6,0x3185,0x18e3,0x10a2,0x10a3,0x10a2,0x18e3,0x39a6,0x31a6,0x18e3,0x10a2,0x10a2,0x10c2,0x18e3,0x31a6,0x3185,0x18e3,0x10a2,0x10c2,0x10a2,0x10c2,0x31a5,0x39e6,0x2144,0x10a2,0x10c3,0x10c3,0x10a2,0x3185,0x31a6,0x2104,0x08a2,0x10a2,0x10a2,0x10a2,0x2965,0x39c6,0x2965,0x10a2,0x10a2,0x10a2,0x1082,0x2144,0x39c6,0x2965,0x18c2,0x10a2,0x10a3,0x10a2,0x2104,0x31a6,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x1903,0x39c6,0x2965,0x18e3,0x10c2,0x10c3,0x18e3,0x4a87,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1903,0x2924,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2104,0x2104,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2964,0x2985,0x3185,0x3185,0x3185,0x3185,0x31a5,0x3185,0x31a6,0x31a6,0x31a6,0x31a6,0x31a5,0x3185,0x2964,0x3185,0x31a5,0x31a6,0x39c6,0x39c7,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e6,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4207,0x4207,0x3a07,0x39e6,0x3185,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2944,0x7389,0x5263,0x31a6,0x31a6,0x2104,0x10a2,0x18e3,0x18e3,0x10a2,0x2985,0x31c6,0x2124,0x10c3,0x18e3,0x18e3,0x10a2,0x2165,0x31c6,0x2944,0x1082,0x10c2,0x18c3,0x10a2,0x2124,0x3a07,0x3185,0x1082,0x10c3,0x10c3,0x10a2,0x2103,0x31a6,0x2985,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x31a6,0x2965,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x2985,0x2103,0x0861,0x10a2,0x10c2,0x10a2,0x10a2,0x31a5,0x31a6,0x10a2,0x1082,0x10a3,0x10a3,0x10a2,0x3185,0x3185,0x1082,0x10a2,0x18e3,0x18e3,0x18e3,0x2965,0x39a6,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x2124,0x31a5,0x18c2,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3, +0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2985,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x3186,0x2945,0x10c2,0x1082,0x10a2,0x10a2,0x20e3,0x31a6,0x3186,0x18c3,0x1082,0x10a2,0x10a2,0x18e3,0x31a6,0x2985,0x18e3,0x0882,0x10a2,0x10a2,0x10c2,0x31a5,0x3185,0x1903,0x1082,0x10a2,0x10a3,0x10a2,0x2965,0x2985,0x1903,0x1082,0x1082,0x10a2,0x10a2,0x3185,0x39c6,0x2924,0x1082,0x1082,0x10a2,0x1082,0x2924,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2965,0x18c3,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x10c3,0x10c2,0x3a06,0x10a2,0x18c2,0x18c3,0x18c3,0x20e3,0x18c3,0x18a2,0x18a3,0x18c3,0x2124,0x18e3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x10a2,0x10c2,0x18c3,0x10a2,0x18c3,0x10c2,0x18c2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x2103,0x2103,0x2103,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2104,0x2103,0x2103,0x2123,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2103,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2124,0x7bcb,0x62c3,0x2965,0x31a6,0x2124,0x10a2,0x18e3,0x18c3,0x10a2,0x2965,0x31a6,0x2104,0x10c3,0x10e3,0x10e3,0x10a2,0x2145,0x31a6,0x2124,0x10a2,0x10c2,0x10c3,0x10c2,0x2103,0x39c6,0x2965,0x10a2,0x10c2,0x10c3,0x10a2,0x18e3,0x31a6,0x3185,0x1081,0x10a2,0x10a2,0x10a2,0x10c2,0x3185,0x2965,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x2965,0x2104,0x1062,0x10a2,0x10c2,0x10a2,0x1082,0x2985,0x39c6,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x2964,0x3185,0x10a2,0x0861,0x10a2,0x10a2,0x0861,0x2965,0x31a6,0x18c3,0x1081,0x10a2,0x10a2,0x0882,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2, +0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x18e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2124,0x2985,0x2124,0x10a2,0x10c2,0x10a2,0x10a2,0x2104,0x3165,0x2945,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x31a6,0x2945,0x18a2,0x1082,0x10a2,0x10a2,0x18e3,0x3185,0x2964,0x10c2,0x08a2,0x10a2,0x10a2,0x10e3,0x31a5,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x10c2,0x2144,0x2964,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x2965,0x3185,0x2104,0x1082,0x10a2,0x10a2,0x10a2,0x2944,0x3185,0x2124,0x08a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2944,0x10c2,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x18c3,0x10c2,0x31a5,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x18c3,0x10a2,0x18c3,0x18c3,0x2104,0x2103,0x10a2,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18e3,0x18c3,0x18c3,0x2124,0x18e3,0x20e3,0x18c3,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x20e3,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18c2,0x18c3,0x18c3,0x2104,0x6327,0x5ac3,0x3186,0x31c6,0x2103,0x10a2,0x18c3,0x18e3,0x18c3,0x2945,0x31a6,0x2104,0x10a2,0x18c3,0x18c3,0x10c2,0x2124,0x31a6,0x2944,0x10a2,0x10c3,0x18c3,0x10c2,0x2123,0x31c6,0x2965,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x31a6,0x3186,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x31a6,0x2985,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x2965,0x2965,0x10a2,0x10a2,0x10c2,0x10c2,0x1082,0x2965,0x39e7,0x1904,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x0882,0x2144,0x31a6,0x1903,0x0861,0x10a2,0x10a2,0x0882,0x1903,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2, +0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x08a2,0x0882,0x0882,0x1082,0x1082,0x0881,0x0881,0x1082,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2124,0x10e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2144,0x3185,0x1903,0x10a2,0x10a2,0x10a2,0x10a2,0x2103,0x3165,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x20e4,0x3186,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x39c6,0x2944,0x10a2,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x3185,0x1903,0x10a2,0x10a2,0x10c2,0x10a2,0x2945,0x2965,0x10c2,0x10a2,0x10c3,0x10a2,0x10a2,0x2965,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x2124,0x10a2,0x10a2,0x18c3,0x18a2,0x2924,0x3185,0x2124,0x18c3,0x10a2,0x18c3,0x10a2,0x1904,0x3186,0x2145,0x18c3,0x10a2,0x18c2,0x18c2,0x2123,0x18c2,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x2103,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18a2,0x18a2,0x18e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c2,0x10a2,0x18c2,0x2104,0x18e3,0x18e3,0x18c3,0x2124,0x18c3,0x2124,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x10a2,0x18c2,0x18e3,0x18a2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x62e6,0x5aa3,0x2965,0x2985,0x2123,0x10c2,0x18e3,0x18e4,0x18c3,0x2124,0x3186,0x2104,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x10a2,0x18c3,0x18e3,0x18c3,0x2104,0x31a6,0x2965,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x3186,0x2945,0x1082,0x10a2,0x10c3,0x10c3,0x10c2,0x31a6,0x3185,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e3,0x1081,0x10c2,0x10c3,0x10a2,0x2964,0x31a6,0x18e3,0x1082,0x10a3,0x10a3,0x10a3,0x2104,0x2965,0x18e3,0x0881,0x10a2,0x18c3,0x10a2,0x2103,0x3185,0x2103,0x0861,0x10a2,0x10a3,0x10a2,0x18e3,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e4,0x2104,0x18c3,0x10c2,0x10c3,0x10c2,0x10a2,0x2944,0x3185,0x2104,0x1082,0x10c2,0x10c3,0x10a2,0x2124,0x3185,0x2104,0x10a2,0x10c3,0x18c3,0x18a2,0x20e4,0x2945,0x1904,0x10a2,0x18c3,0x10c3,0x10c3,0x2124,0x39c6,0x2124,0x18c3,0x18c3,0x18c3,0x18a2,0x2103,0x3185,0x2985,0x2103,0x10a2,0x18c3,0x18e3,0x18e3,0x2944,0x2965,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x2965,0x2965,0x2103,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x2965,0x1903,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2124,0x18e3,0x18e3,0x1903,0x18c3,0x1903,0x2945,0x2144,0x18e3,0x18c3,0x18e3,0x18e3,0x18e2,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x18c2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x18e3,0x18c2,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x18c3,0x10a2,0x1082,0x18a2,0x18c3,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c3,0x2104,0x2104,0x10a2,0x18c2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x6328,0x6b24,0x2144,0x31a6,0x2144,0x18e3,0x2104,0x2104,0x1904,0x2124,0x2986,0x2124,0x10c2,0x2124,0x2124,0x2103,0x2124,0x3186,0x2944,0x10a2,0x1903,0x2104,0x18e3,0x2124,0x3186,0x2124,0x10a2,0x18e3,0x1903,0x18e3,0x18c3,0x2965,0x2966,0x10a2,0x10c3,0x18e3,0x10e3,0x10c2,0x2965,0x2965,0x10c2,0x10a2,0x1903,0x18e3,0x10c2,0x2124,0x2986,0x18e3,0x10a2,0x18e3,0x1904,0x10c2,0x2964,0x3185,0x18e3,0x1082,0x18c3,0x18e4,0x18c3,0x2104,0x2985,0x20e3,0x0882,0x18c3,0x18e3,0x10c3,0x2103,0x31a5,0x2124,0x0861,0x10a3,0x18c3,0x10a3,0x18e3,0x2965,0x18e3,0x0881,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x18e3,0x18c3,0x10c3,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c3,0x10c2,0x10c2,0x18e3, +0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x10c2,0x10c3,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2124,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x2124,0x2965,0x18e4,0x10a3,0x18e3,0x18e3,0x10a2,0x2124,0x3165,0x2104,0x10c3,0x18e3,0x18e3,0x18c3,0x2124,0x3186,0x1904,0x18c3,0x1904,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x1903,0x2125,0x2104,0x18e3,0x2104,0x3185,0x2965,0x18e3,0x18e3,0x2104,0x1904,0x18e3,0x2144,0x2965,0x18e3,0x18c3,0x2124,0x2104,0x18c3,0x3185,0x39e7,0x2924,0x2104,0x2104,0x2104,0x18e4,0x2145,0x2985,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2965,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2124,0x1903,0x1904,0x2104,0x18e3,0x18e1,0x18c3,0x18c3,0x10a2,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0861,0x10a2,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x18a2,0x18e3,0x2104,0x18e3,0x10a2,0x1082,0x0861,0x18c3,0x2104,0x2924,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2103,0x18a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x18e3,0x2104,0x18a2,0x18c3,0x0861,0x0861,0x18c3,0x18e3,0x20e3,0x20e3,0x20e4,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x10a2,0x10a2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x20e3,0x5ac7,0x7ba4,0x2144,0x29a6,0x2124,0x1903,0x2145,0x2145,0x2144,0x2124,0x2986,0x2124,0x10c3,0x2965,0x2965,0x1904,0x2124,0x2965,0x2124,0x18c3,0x2144,0x2144,0x2104,0x2104,0x2965,0x2965,0x18e3,0x1904,0x2124,0x2124,0x2104,0x2965,0x2965,0x18c3,0x18e3,0x2124,0x1904,0x18e3,0x2965,0x2965,0x10c2,0x10c3,0x2124,0x1904,0x18e3,0x2124,0x2985,0x18e3,0x18c3,0x1904,0x2104,0x18e3,0x2965,0x31a6,0x18e3,0x10a2,0x18e3,0x1904,0x18e3,0x2104,0x2985,0x2104,0x1082,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2124,0x0862,0x18e3,0x18e4,0x18c3,0x18e3,0x2965,0x2104,0x1082,0x18e3,0x2104,0x18e3,0x18c3,0x18e3,0x10c3,0x10a2,0x10a2,0x18e3,0x18e3,0x10c3,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x10c2,0x10c3,0x18e3,0x18c3,0x10c2,0x18c3,0x18e3,0x18c3,0x10c3,0x18e3, +0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18e3,0x18c3,0x10a2,0x10c3,0x18c3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x2124,0x2124,0x18e3,0x2945,0x2124,0x18e3,0x18e3,0x2945,0x2965,0x2104,0x2104,0x2124,0x2104,0x18c3,0x2944,0x31a6,0x2144,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2945,0x18e3,0x18e3,0x2124,0x2124,0x1904,0x2124,0x31a6,0x2145,0x2104,0x2945,0x2945,0x2945,0x2104,0x3186,0x2965,0x2144,0x2965,0x2965,0x2145,0x18e3,0x2944,0x2985,0x2104,0x2144,0x2965,0x2986,0x2104,0x3185,0x41e6,0x3185,0x2945,0x29a6,0x2165,0x2124,0x2145,0x3185,0x2124,0x2985,0x31a6,0x2986,0x2965,0x2124,0x3185,0x2124,0x2945,0x3186,0x2966,0x3186,0x2124,0x2965,0x2945,0x2104,0x2966,0x2965,0x2945,0x18e2,0x18a3,0x18a2,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x1082,0x0861,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18a2,0x18e3,0x2124,0x18e3,0x18c2,0x1081,0x1082,0x18e3,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x2124,0x18a3,0x18c3,0x0841,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2945,0x2944,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2945,0x2124,0x18c3,0x18c2,0x18e3,0x18e3,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4225,0x6b24,0x2965,0x3186,0x2104,0x2124,0x31c6,0x31a6,0x2965,0x2144,0x31a6,0x2145,0x1904,0x2965,0x2965,0x2986,0x2124,0x3186,0x2145,0x2104,0x3186,0x2965,0x2965,0x2124,0x3186,0x3186,0x1903,0x2144,0x2145,0x2945,0x2945,0x2965,0x2965,0x18e3,0x2145,0x2145,0x2945,0x2124,0x2945,0x3186,0x18c3,0x1904,0x2965,0x2945,0x2124,0x2965,0x31a6,0x18e3,0x2104,0x2124,0x2965,0x2104,0x2945,0x31c7,0x2104,0x18e3,0x2144,0x2145,0x2144,0x2124,0x3186,0x2104,0x10a2,0x2124,0x2965,0x2124,0x2124,0x31a6,0x2145,0x10a3,0x2125,0x2125,0x2124,0x2104,0x2965,0x2124,0x1082,0x2124,0x2124,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x1903,0x2104,0x2104,0x1904,0x18e3,0x1904,0x1903,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x18e3, +0x18e3,0x18e3,0x18c3,0x18e3,0x18e4,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x2124,0x1903,0x1903,0x2104,0x1904,0x2104,0x2104,0x2124,0x1904,0x2144,0x2144,0x1904,0x1903,0x2104,0x2104,0x2124,0x2125,0x1903,0x2965,0x2965,0x1904,0x2124,0x2945,0x2144,0x18e3,0x2965,0x2985,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x31a6,0x2145,0x1904,0x2165,0x2965,0x2104,0x2104,0x2945,0x2124,0x2124,0x2965,0x2965,0x2145,0x2124,0x2986,0x2145,0x2144,0x2965,0x2965,0x2986,0x2124,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2104,0x2124,0x2965,0x2124,0x2965,0x31a6,0x31c6,0x2124,0x3185,0x39a6,0x2965,0x31a6,0x29a6,0x29a6,0x2165,0x2965,0x3186,0x2945,0x3186,0x39c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2966,0x39c7,0x31a7,0x2966,0x2104,0x3186,0x2965,0x2945,0x31a6,0x2986,0x39e7,0x18e2,0x18c3,0x18a2,0x18a3,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x18e3,0x2104,0x20e4,0x18e4,0x2104,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x10a2,0x18c2,0x10a2,0x18c3,0x2124,0x18c3,0x10c2,0x1082,0x1082,0x18e3,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2944,0x18e3,0x2103,0x2103,0x18e3,0x10a2,0x18e3,0x18e3,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3186,0x3186,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4206,0x62e6,0x2945,0x3186,0x2104,0x2145,0x3186,0x2965,0x2945,0x2945,0x31c6,0x2945,0x2104,0x2985,0x2965,0x3186,0x2965,0x3186,0x2945,0x2124,0x2965,0x2985,0x2965,0x2144,0x31a6,0x31a6,0x2944,0x2944,0x2965,0x2965,0x2924,0x2965,0x3186,0x2104,0x2945,0x2145,0x2145,0x2124,0x2965,0x3186,0x2104,0x2124,0x2965,0x3186,0x2945,0x2124,0x31a6,0x2124,0x2124,0x2965,0x2965,0x2124,0x2945,0x39c7,0x2124,0x2104,0x2965,0x2945,0x2124,0x2124,0x3186,0x2124,0x18e3,0x2945,0x2945,0x2945,0x2124,0x31a6,0x2965,0x18c3,0x2145,0x2945,0x2965,0x2104,0x2965,0x2945,0x18e3,0x2144,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2144,0x2124,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x1924,0x1903,0x2145,0x2124,0x1904,0x1904,0x2124,0x1904,0x1904,0x1903,0x2104,0x18e3,0x2104,0x2124,0x1904,0x1903,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x2104,0x1903,0x1903,0x18e3,0x18e3,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2145,0x1904,0x1904,0x2104,0x2124,0x2145,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2965,0x29a6,0x2145,0x2124,0x2965,0x2124,0x2165,0x2985,0x2185,0x2124,0x2124,0x2945,0x2124,0x2944,0x2985,0x2985,0x2165,0x2124,0x2965,0x2145,0x2144,0x2965,0x2965,0x2965,0x2125,0x2945,0x2965,0x2965,0x2986,0x2986,0x3186,0x2945,0x2124,0x2965,0x2124,0x2965,0x2965,0x2985,0x2124,0x2124,0x2945,0x2144,0x2986,0x2986,0x2986,0x2145,0x2124,0x2965,0x2124,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2985,0x2144,0x2965,0x31a6,0x2986,0x2966,0x2144,0x2145,0x2945,0x2986,0x31a6,0x2985,0x3186,0x18c2,0x18a2,0x18a3,0x10a2,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x1082,0x1082,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1924,0x1924,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x18e3,0x2104,0x3164,0x2944,0x2104,0x3144,0x2924,0x2124,0x2104,0x2124,0x2924,0x3164,0x2945,0x2124,0x2103,0x2104,0x2104,0x18e3,0x10a2,0x18e3,0x20e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3185,0x3165,0x2945,0x2924,0x2124,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x20e3,0x18e3,0x2103,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4207,0x62c9,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2144,0x3186,0x2986,0x2965,0x2965,0x2965,0x2945,0x31a6,0x2945,0x3185,0x2965,0x2124,0x2145,0x2986,0x2145,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2124,0x2124,0x2945,0x2965,0x2144,0x2104,0x2945,0x2145,0x2945,0x2144,0x2945,0x2965,0x2945,0x2965,0x2124,0x2965,0x2945,0x2144,0x2965,0x2124,0x2965,0x2124,0x2124,0x2144,0x2145,0x2945,0x2124,0x2145,0x2124,0x18e3,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x1904,0x2124,0x2124,0x2124,0x2104,0x1903,0x2104,0x2104,0x2965,0x2145,0x2144,0x2145,0x2144,0x2145,0x2124,0x1924,0x10e3,0x2165,0x2124,0x1903,0x1904,0x1904,0x1904,0x18e3,0x2104,0x1903,0x2104,0x2124,0x2945,0x1904,0x1904,0x2124,0x1903,0x1904,0x1904,0x1903,0x2104, +0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1904,0x18e3,0x2104,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2965,0x2985,0x2144,0x1924,0x2124,0x2124,0x1904,0x2124,0x2965,0x3186,0x2124,0x2125,0x2125,0x2124,0x2945,0x2965,0x2965,0x2124,0x1904,0x1904,0x1904,0x2125,0x2966,0x2986,0x2965,0x2145,0x2124,0x2945,0x2985,0x2985,0x2986,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2144,0x2145,0x2985,0x2945,0x2965,0x2965,0x2966,0x3186,0x2945,0x2966,0x31a6,0x2986,0x2985,0x2965,0x2124,0x2965,0x2986,0x2986,0x2144,0x2965,0x2144,0x2145,0x2966,0x2166,0x2165,0x2965,0x2165,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x29a6,0x31c7,0x31a6,0x31c7,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x2965,0x2145,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x1944,0x21a6,0x2144,0x21a6,0x21a6,0x2145,0x21a6,0x21a6,0x2145,0x21a6,0x21c6,0x2145,0x2185,0x1944,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x39a4,0x6b04,0x62c3,0x4a04,0x62e4,0x5a64,0x41c4,0x41e4,0x4a05,0x5264,0x6ae4,0x41c4,0x41e4,0x4a03,0x2123,0x2104,0x18e3,0x10a2,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3965,0x5185,0x3944,0x3145,0x4965,0x3145,0x4145,0x4165,0x2945,0x3965,0x3965,0x3965,0x4165,0x28e3,0x2103,0x20e3,0x18a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c3,0x3985,0x6227,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x2145,0x31a6,0x2965,0x2145,0x2124,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2945,0x2145,0x2145,0x2965,0x2965,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2965,0x2945,0x2945,0x2945,0x2124,0x2124,0x2986,0x2145,0x2144,0x2145,0x2965,0x2145,0x2965,0x2145,0x2945,0x2965,0x2945,0x2124,0x2124,0x2144,0x2124,0x2945,0x2145,0x2124,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2104,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2144,0x1924,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x1903,0x1903,0x18e3,0x1904,0x18e4, +0x18c3,0x18e3,0x2124,0x2104,0x1903,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2144,0x2124,0x1904,0x2124,0x2145,0x2125,0x2125,0x2124,0x1904,0x18e3,0x1904,0x1904,0x2124,0x1904,0x2145,0x2965,0x2145,0x2125,0x2945,0x2966,0x2965,0x2965,0x3185,0x2165,0x2124,0x2145,0x2125,0x2125,0x2945,0x2945,0x2966,0x2966,0x2165,0x2965,0x2986,0x2965,0x2986,0x2985,0x2145,0x2165,0x2145,0x29a6,0x29a6,0x31a6,0x2145,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x31c7,0x2965,0x2986,0x31a6,0x3186,0x2165,0x2986,0x2965,0x2165,0x31a6,0x2986,0x2145,0x2985,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2145,0x2165,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2985,0x2966,0x31c7,0x3186,0x31a6,0x39e7,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x31e7,0x31a6,0x2986,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x1924,0x21c6,0x2145,0x2186,0x21a6,0x2165,0x21e7,0x2207,0x21a5,0x21e7,0x21e7,0x2165,0x2185,0x1964,0x18e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18a2,0x0861,0x1082,0x18c3,0x5264,0x83c3,0x7ba3,0x6304,0x7b84,0x83a4,0x62c4,0x5aa4,0x6b25,0x6b04,0x83a3,0x4a04,0x7b64,0x5a62,0x2103,0x2104,0x18e3,0x10a2,0x18c3,0x18c2,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x5965,0x7185,0x5165,0x5185,0x6985,0x4165,0x6185,0x5965,0x4165,0x69a6,0x51a6,0x4985,0x6185,0x2903,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6184,0x31a7,0x2966,0x2965,0x2986,0x3186,0x2945,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2966,0x2966,0x2986,0x31a6,0x3186,0x2945,0x3186,0x31a6,0x2965,0x3186,0x2965,0x1924,0x2986,0x2986,0x2124,0x2124,0x2124,0x2145,0x2165,0x2986,0x2986,0x2145,0x2945,0x2945,0x2945,0x2165,0x2165,0x2966,0x2124,0x1904,0x2125,0x2125,0x2945,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2965,0x2144,0x2965,0x2965,0x2165,0x1924,0x1904,0x2145,0x2144,0x2965,0x2986,0x2124,0x2965,0x2145,0x2125,0x2125,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2945,0x18c3,0x18e3,0x18e3,0x2104,0x1903,0x1904,0x2124,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x1903,0x2124,0x2124,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x18e3,0x1903,0x2104,0x2124,0x1903,0x2124,0x2124,0x10c3,0x10c3,0x18e3,0x2104, +0x1904,0x18e3,0x18e3,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x1904,0x2145,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2125,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2145,0x2125,0x2145,0x2145,0x2144,0x2124,0x2165,0x2965,0x2124,0x2124,0x2124,0x2144,0x2145,0x2125,0x2986,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2145,0x2985,0x2965,0x2986,0x2145,0x2965,0x31a6,0x2945,0x2125,0x2145,0x2945,0x2945,0x2125,0x2966,0x3186,0x2966,0x2945,0x2986,0x2986,0x31a6,0x31a6,0x2966,0x2965,0x2145,0x2966,0x2965,0x2165,0x2124,0x2144,0x2966,0x2966,0x2965,0x31a6,0x2985,0x2165,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x2966,0x2986,0x31c7,0x2986,0x2966,0x2986,0x31a6,0x2966,0x4228,0x39e7,0x2965,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x18c2,0x18a2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x2124,0x21e6,0x2165,0x2145,0x2185,0x2165,0x21c6,0x21c6,0x21a5,0x21c6,0x29a6,0x2165,0x2164,0x1944,0x20e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2104,0x18e3,0x18c2,0x0861,0x1082,0x18c3,0x5aa4,0x6b44,0x4223,0x6324,0x6b24,0x7bc5,0x6304,0x7b63,0x7ba4,0x62c3,0x83e3,0x62c3,0x83c3,0x5a82,0x2103,0x18e3,0x2103,0x18c2,0x18c3,0x18c3,0x2124,0x18c3,0x18e3,0x0841,0x18e3,0x2124,0x5985,0x6185,0x6185,0x6185,0x7185,0x4165,0x5165,0x7185,0x5985,0x79e6,0x59c6,0x4986,0x6985,0x2903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6164,0x3186,0x2986,0x2966,0x2966,0x3186,0x2966,0x2966,0x31a6,0x2986,0x2986,0x29a6,0x2966,0x2145,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x2945,0x2965,0x2965,0x2925,0x2124,0x2945,0x2945,0x31a6,0x2145,0x2125,0x2986,0x39c7,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x3186,0x2965,0x2145,0x2965,0x3186,0x2985,0x2986,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2145,0x2986,0x2144,0x2124,0x2124,0x2965,0x2145,0x2125,0x2125,0x2125,0x2965,0x2124,0x2145,0x2945,0x2965,0x2124,0x2965,0x2985,0x1904,0x2104,0x18e4,0x2945,0x2945,0x18e3,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x1904,0x1904,0x1903,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x1903,0x1904,0x2145,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x2104,0x2104, +0x1903,0x1903,0x1903,0x2104,0x2104,0x2124,0x18e3,0x1904,0x1903,0x1904,0x18e3,0x1904,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x2965,0x2986,0x2125,0x2965,0x2124,0x2145,0x2124,0x2124,0x2145,0x2965,0x2124,0x2124,0x2985,0x2965,0x2125,0x2966,0x2986,0x2104,0x2945,0x2965,0x3186,0x3186,0x2965,0x2124,0x2966,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2966,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2966,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2145,0x2966,0x2986,0x2966,0x2966,0x2966,0x2145,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x31a6,0x2986,0x2985,0x2145,0x2965,0x29a6,0x2145,0x2966,0x3186,0x2986,0x3186,0x2965,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x2986,0x2966,0x31a6,0x31e7,0x31a6,0x2985,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1924,0x2165,0x2124,0x2104,0x1924,0x2124,0x2145,0x2144,0x2144,0x2145,0x2145,0x2145,0x2144,0x1904,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18c2,0x0861,0x10a2,0x18e3,0x39c4,0x4204,0x2944,0x4225,0x4204,0x4a65,0x4204,0x6304,0x5ac4,0x4224,0x6304,0x4203,0x4a64,0x5263,0x2923,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x2124,0x18e3,0x18c3,0x0841,0x18e3,0x2124,0x4165,0x4165,0x4965,0x4145,0x5985,0x4145,0x4965,0x6185,0x4165,0x59a6,0x51a6,0x3986,0x5185,0x20e3,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x6164,0x2986,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2125,0x2945,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2945,0x2145,0x2965,0x31c6,0x2945,0x31c7,0x31c6,0x2985,0x2965,0x2144,0x2965,0x2965,0x2985,0x2945,0x2124,0x2104,0x2965,0x2945,0x2945,0x2965,0x2124,0x2124,0x2144,0x2124,0x2965,0x2125,0x2945,0x2966,0x2124,0x3186,0x2945,0x2145,0x2945,0x2985,0x2945,0x2145,0x2144,0x2124,0x2985,0x2145,0x2145,0x2124,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2145,0x2124,0x1903,0x2124,0x2145,0x2124,0x2965,0x2965,0x2124,0x2125,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2986,0x2124,0x1903,0x1904,0x1924,0x2165,0x1924,0x1924,0x2144,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x2104,0x20e4, +0x18e3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x1903,0x2124,0x1903,0x1904,0x1903,0x18e3,0x1904,0x1904,0x1903,0x1904,0x1904,0x1904,0x2125,0x1904,0x1904,0x2104,0x1904,0x18e3,0x1904,0x2124,0x2125,0x2965,0x2125,0x2124,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2945,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2124,0x2965,0x31a6,0x2945,0x2104,0x2145,0x2145,0x2124,0x2124,0x2965,0x2945,0x2966,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2125,0x2965,0x2986,0x2966,0x2965,0x31a6,0x2145,0x2125,0x31a6,0x31c7,0x2986,0x2986,0x2124,0x2965,0x2965,0x2145,0x29a6,0x31c7,0x2165,0x2145,0x2165,0x29a6,0x29a6,0x2965,0x2985,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x31a7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2145,0x2986,0x31a7,0x31a6,0x2986,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2125,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x20e3,0x2944,0x2965,0x2944,0x2965,0x2944,0x2964,0x2944,0x31a4,0x3184,0x2964,0x3184,0x2944,0x2944,0x2943,0x2103,0x2103,0x18e3,0x18c2,0x18c3,0x18c3,0x2144,0x2104,0x18c3,0x0841,0x18e3,0x2124,0x3145,0x2945,0x2945,0x2924,0x3145,0x2925,0x3145,0x3145,0x2924,0x3145,0x3185,0x3165,0x3165,0x20e3,0x2103,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2965,0x2986,0x2966,0x2986,0x2985,0x2985,0x2965,0x2986,0x2965,0x2124,0x2945,0x3186,0x3186,0x2966,0x2125,0x3186,0x3186,0x31c6,0x31c6,0x29a6,0x2985,0x2985,0x2124,0x2965,0x2986,0x31a6,0x2124,0x2945,0x2145,0x2165,0x2165,0x2124,0x2986,0x2985,0x2124,0x2945,0x2965,0x2965,0x2966,0x2966,0x2125,0x2986,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2144,0x1904,0x2104,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x2124,0x2965,0x2145,0x2104,0x2124,0x2124,0x2124,0x2124,0x1903,0x2124,0x1904,0x2124,0x2945,0x2144,0x2104,0x2104,0x2124,0x2145,0x1924,0x2124,0x2145,0x2124,0x1904,0x1904,0x2124,0x2124,0x1924,0x2124,0x1904,0x1904,0x18e4,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x18e3,0x2144,0x2945,0x18e3, +0x1903,0x1904,0x2104,0x1903,0x2104,0x2104,0x1904,0x1903,0x1903,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x1903,0x18e3,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x2124,0x2125,0x2124,0x2965,0x2145,0x2124,0x2144,0x2965,0x2985,0x2124,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2144,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2986,0x2145,0x2145,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2165,0x2165,0x2985,0x2986,0x2965,0x2945,0x2945,0x2945,0x3186,0x3186,0x29a6,0x2986,0x2965,0x31a7,0x2966,0x2986,0x31a6,0x2985,0x2986,0x2945,0x2945,0x2966,0x2165,0x2165,0x2966,0x2966,0x2966,0x2986,0x31c7,0x31c6,0x29a6,0x2965,0x3186,0x2966,0x31a7,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2985,0x2965,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x1082,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1061,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2944,0x2124,0x18e3,0x2103,0x18e3,0x10a2,0x10a2,0x18a2,0x18c3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x2103,0x2944,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2103,0x18e3,0x18c2,0x18c3,0x18c2,0x2944,0x18e3,0x20e3,0x0841,0x18c3,0x2124,0x2944,0x2965,0x2965,0x2944,0x2945,0x2925,0x2924,0x2124,0x2124,0x2945,0x2945,0x2965,0x2965,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x3186,0x2965,0x2965,0x2986,0x2145,0x31a6,0x29a6,0x31c6,0x31c7,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2986,0x29a6,0x29a6,0x2165,0x29a6,0x2185,0x2144,0x29a6,0x2986,0x2945,0x2965,0x2145,0x2945,0x2945,0x2165,0x2165,0x2145,0x2165,0x2144,0x2986,0x2965,0x2104,0x2925,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2145,0x2986,0x2965,0x2965,0x2124,0x2985,0x2945,0x2124,0x2965,0x2124,0x1924,0x2124,0x2145,0x2965,0x2124,0x2165,0x2145,0x2124,0x2145,0x2124,0x2965,0x2104,0x2124,0x2104,0x2945,0x2145,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e4,0x2104,0x2145,0x1904,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2125,0x2125,0x2104,0x18e3,0x1903,0x2124,0x2104,0x2104,0x2124,0x2104,0x18e3, +0x2104,0x2104,0x2124,0x2104,0x2104,0x1903,0x2104,0x2124,0x1904,0x1904,0x1903,0x18e3,0x18e3,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2145,0x31a6,0x2125,0x2145,0x2145,0x2124,0x2104,0x2104,0x1904,0x2104,0x1904,0x2104,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2124,0x2945,0x2945,0x2125,0x2125,0x2965,0x2965,0x2945,0x2125,0x2945,0x2986,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2145,0x2966,0x2965,0x2165,0x2985,0x2985,0x2944,0x2965,0x2965,0x2965,0x3186,0x39c7,0x2966,0x29a6,0x29a6,0x2966,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x2124,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2986,0x2986,0x31c7,0x31e7,0x31a6,0x2986,0x31a6,0x2966,0x31a7,0x2986,0x2966,0x2145,0x2986,0x31e7,0x31c7,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x2965,0x31a6,0x31e7,0x29a6,0x31a6,0x2966,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x18c3,0x18c3,0x0861,0x0861,0x10a2,0x2103,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x2104,0x2103,0x2103,0x2124,0x2124,0x2103,0x2104,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x2124,0x18c3,0x20e3,0x0841,0x10a2,0x2104,0x2124,0x2945,0x2944,0x2124,0x2124,0x2924,0x2924,0x2124,0x2124,0x2924,0x2945,0x2965,0x2965,0x2124,0x2124,0x2924,0x2104,0x10a2,0x10a2,0x18e3,0x18e3,0x20e3,0x18c3,0x18c2,0x18c3,0x18c3,0x2903,0x5164,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2165,0x2986,0x2986,0x2965,0x2965,0x31a7,0x2145,0x2986,0x31a6,0x2145,0x2985,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2144,0x2165,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2985,0x2144,0x2144,0x2145,0x2145,0x2145,0x2965,0x2124,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2985,0x2965,0x2965,0x2944,0x2145,0x2145,0x2124,0x2145,0x2945,0x2145,0x2145,0x29a6,0x2985,0x2165,0x2145,0x2125,0x2945,0x2945,0x2125,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x1904,0x2124,0x2124,0x2125,0x2125,0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1924,0x1904,0x2125,0x2925,0x1904,0x2104,0x2124,0x2104,0x18e4,0x1904,0x2145,0x2125,0x1904, +0x18e3,0x1904,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x1904,0x1924,0x1924,0x1903,0x18e3,0x1904,0x2145,0x1904,0x18e3,0x2144,0x2124,0x2125,0x1904,0x1924,0x2145,0x2965,0x2145,0x2965,0x2124,0x2124,0x1903,0x2124,0x2104,0x2124,0x2145,0x2145,0x1904,0x2124,0x2144,0x2965,0x39e7,0x2985,0x2165,0x2145,0x2144,0x2145,0x2124,0x2104,0x2124,0x2945,0x2945,0x2966,0x31a7,0x2145,0x2125,0x2145,0x2165,0x2965,0x31a6,0x2986,0x31c7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2144,0x31a6,0x31a6,0x2965,0x3186,0x2986,0x3186,0x31a7,0x2966,0x2965,0x2965,0x2165,0x2145,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2986,0x2966,0x2945,0x2966,0x2966,0x2965,0x2986,0x31e7,0x39e7,0x4248,0x31c6,0x3186,0x2966,0x2965,0x2945,0x2966,0x2986,0x2986,0x31e7,0x29a6,0x2965,0x31a6,0x3186,0x2965,0x39e7,0x3186,0x2986,0x29a6,0x31c7,0x3a08,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x2104,0x18c3,0x18c3,0x0861,0x0841,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x18c3,0x18c3,0x0841,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18a2,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x2966,0x2945,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x2124,0x3165,0x2965,0x2965,0x2965,0x2125,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2945,0x2965,0x2965,0x2144,0x2144,0x2165,0x2145,0x2965,0x2985,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x2945,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2985,0x2144,0x1945,0x2165,0x2145,0x2145,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2145,0x2165,0x2165,0x2145,0x2145,0x2124,0x2965,0x1904,0x2145,0x2985,0x1904,0x2125,0x2104,0x2125,0x2966,0x2145,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x2104,0x2144,0x2124,0x1904,0x18e3,0x1903,0x1924,0x1924,0x1904,0x2945,0x2945,0x2104,0x2125,0x2125,0x2104,0x2104,0x18e3,0x1904,0x1904,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x18e3,0x18e3,0x2104,0x2125,0x2124,0x1924,0x2124,0x1904,0x2145,0x2145,0x1904,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2145,0x2144,0x2124,0x2124,0x2965,0x2965,0x2144,0x2144,0x2124,0x2104,0x2124,0x2965,0x2986,0x2144,0x2986,0x2965,0x2145,0x2145,0x2965,0x2165,0x2965,0x2965,0x29a6,0x2145,0x2125,0x2986,0x2985,0x2965,0x2986,0x2145,0x2985,0x2965,0x2124,0x2986,0x2986,0x2986,0x3186,0x2965,0x2945,0x2966,0x2986,0x2966,0x2986,0x2985,0x2145,0x2945,0x2145,0x2965,0x3186,0x3186,0x2985,0x3186,0x3186,0x2986,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x31c7,0x31a6,0x3186,0x2986,0x39c7,0x3186,0x2965,0x2986,0x2145,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31a6,0x2966,0x39e8,0x39c7,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a2,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18a3,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2985,0x31c7,0x2124,0x2965,0x2986,0x2945,0x3186,0x3186,0x2945,0x2124,0x2965,0x2985,0x2986,0x2965,0x31c6,0x2985,0x2985,0x2985,0x2985,0x2986,0x2145,0x2986,0x2965,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2165,0x2986,0x2124,0x2965,0x2945,0x2965,0x2124,0x2945,0x2144,0x2125,0x2145,0x2145,0x2965,0x3186,0x2144,0x2985,0x31a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2145,0x2124,0x2124,0x2145,0x2125,0x2125,0x2145,0x2125,0x2124,0x2145,0x1904,0x1924,0x1924,0x2124,0x2945,0x2104,0x2145,0x2124,0x2124,0x2125,0x2124,0x1904,0x1904,0x2144,0x2144,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x1904,0x1904,0x2986, +0x1903,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x1904,0x1903,0x1904,0x1904,0x2104,0x2124,0x2144,0x1924,0x1924,0x2124,0x2145,0x2125,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2945,0x2965,0x2124,0x2965,0x2965,0x2965,0x2124,0x2124,0x2145,0x2145,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2145,0x2124,0x2145,0x2165,0x2144,0x2965,0x2965,0x2966,0x3186,0x2965,0x2945,0x2966,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2985,0x2165,0x29a6,0x2965,0x2145,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x3186,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c7,0x2986,0x39c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a6,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x2945,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18c3,0x2104,0x5164,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x2966,0x3186,0x2985,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2145,0x2965,0x2985,0x2945,0x2985,0x2185,0x29a6,0x2985,0x31c7,0x31a6,0x31c7,0x2145,0x2965,0x2986,0x2945,0x2104,0x2124,0x2144,0x2124,0x2144,0x2145,0x2945,0x4208,0x2965,0x2144,0x2965,0x2966,0x2145,0x2124,0x2165,0x2145,0x29a6,0x31c6,0x2145,0x2965,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2124,0x2145,0x3186,0x2124,0x2945,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2945,0x2145,0x18e4,0x2124,0x2124,0x18e4,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145, +0x18e3,0x2124,0x2124,0x18e3,0x1904,0x18e4,0x1904,0x2124,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x2945,0x2965,0x2144,0x2144,0x2145,0x2965,0x2124,0x2124,0x2145,0x2145,0x2945,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2965,0x2124,0x2144,0x2965,0x2965,0x2985,0x2185,0x2125,0x2945,0x2986,0x2966,0x2125,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x3186,0x2986,0x2986,0x2945,0x2145,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2966,0x31a6,0x2986,0x31a7,0x2966,0x2165,0x2965,0x2966,0x2986,0x31a6,0x3186,0x39c7,0x2966,0x3186,0x31c7,0x31a7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x2104,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18e3,0x2965,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18a3,0x2103,0x4964,0x31c6,0x2965,0x2986,0x2985,0x2965,0x2945,0x2966,0x3186,0x3186,0x31a6,0x31c7,0x2945,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2965,0x2965,0x2144,0x2145,0x2965,0x2985,0x2986,0x2986,0x2145,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2945,0x2124,0x2145,0x2965,0x2145,0x2145,0x2124,0x2145,0x3186,0x2145,0x2145,0x2145,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2124,0x2145,0x2965,0x2965,0x2965,0x2945,0x2144,0x2945,0x2124,0x2965,0x2965,0x2965,0x2965,0x2124,0x2145,0x2986,0x2986,0x2124,0x2945,0x2144,0x2145,0x2145,0x2125,0x2124,0x18e4,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2986,0x2104,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2124,0x2145,0x2125,0x2945,0x2145,0x2124,0x2104, +0x2104,0x1903,0x1903,0x1904,0x1904,0x18e4,0x2104,0x2145,0x2104,0x18e3,0x1904,0x1904,0x2145,0x2124,0x1904,0x2124,0x2124,0x1904,0x2145,0x2945,0x2104,0x2124,0x2125,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2985,0x2985,0x2985,0x31e7,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2145,0x2145,0x2965,0x2965,0x2986,0x31c7,0x31a6,0x2966,0x31a6,0x29a6,0x2986,0x2966,0x2965,0x2965,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2945,0x2986,0x3186,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x31a7,0x3186,0x2965,0x3186,0x39c7,0x31a7,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18a3,0x10a2,0x18a2,0x2945,0x2945,0x18c3,0x18e3,0x10a2,0x18c2,0x18a2,0x20e3,0x4944,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2985,0x3186,0x2986,0x2986,0x2985,0x2145,0x2165,0x2965,0x29a6,0x2145,0x2145,0x2986,0x2986,0x2965,0x2966,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2144,0x2965,0x2965,0x2965,0x2945,0x2986,0x3186,0x3186,0x2965,0x2985,0x2945,0x2965,0x2945,0x2985,0x2965,0x2145,0x2145,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2985,0x2965,0x2144,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x31a6,0x2145,0x2986,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2945,0x2124,0x2125,0x2966,0x2145,0x2125,0x1904,0x2124,0x2125,0x2986,0x2124,0x2124,0x2165,0x2145,0x2145,0x2165,0x2124,0x2124,0x1904,0x2104,0x2124,0x2125,0x2145,0x2125,0x2124,0x2125,0x2104,0x1904,0x2125,0x2145,0x2124,0x1903,0x2124, +0x1904,0x1904,0x1903,0x1904,0x1903,0x1904,0x2124,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2144,0x2945,0x2145,0x2124,0x2145,0x2124,0x2124,0x1904,0x1904,0x2145,0x2144,0x2145,0x2124,0x2965,0x2145,0x2124,0x2124,0x2145,0x2165,0x2165,0x2145,0x1924,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2125,0x2965,0x2965,0x2965,0x3a08,0x31c7,0x2145,0x2145,0x2985,0x2985,0x2986,0x2986,0x2945,0x2945,0x2965,0x3186,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x2966,0x2125,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x2965,0x2966,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2986,0x2966,0x2965,0x3186,0x39c7,0x3186,0x2966,0x2986,0x2986,0x2986,0x3186,0x39c7,0x31a7,0x3186,0x39e7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2104,0x10c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2966,0x18e3,0x18c3,0x10a2,0x18c2,0x18c2,0x20e3,0x4964,0x31a6,0x2965,0x31a6,0x2986,0x2966,0x2986,0x2965,0x2945,0x2965,0x2945,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x2965,0x2966,0x2986,0x2965,0x2145,0x2965,0x2945,0x2965,0x2145,0x2945,0x2965,0x3186,0x2945,0x3186,0x3186,0x2945,0x2965,0x2144,0x2124,0x2124,0x2945,0x2986,0x2965,0x2144,0x2965,0x2965,0x2985,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2986,0x2965,0x2124,0x2965,0x2986,0x31a6,0x2965,0x3186,0x31a6,0x2145,0x2965,0x2965,0x2965,0x2945,0x2945,0x2985,0x2965,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1904,0x2104,0x2125,0x2124,0x2104,0x1904,0x2124,0x2145,0x2104,0x2125,0x2124,0x18e4,0x1904,0x2145,0x2124,0x2125,0x2125,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2124, +0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2125,0x2124,0x1924,0x2124,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2144,0x2144,0x2144,0x2965,0x2965,0x2145,0x2165,0x2145,0x2124,0x2124,0x2145,0x2124,0x2965,0x2145,0x2965,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2145,0x2145,0x1924,0x2144,0x2145,0x2144,0x2965,0x2145,0x2125,0x2145,0x2145,0x2966,0x2965,0x2124,0x3186,0x31a6,0x2986,0x2986,0x2165,0x2144,0x2965,0x2965,0x2145,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2145,0x2966,0x2966,0x2966,0x2965,0x2165,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x3186,0x39e7,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x39e7,0x2985,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x31a6,0x31c7,0x2965,0x3186,0x3a08,0x31e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x18a3,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x2104,0x2925,0x18c3,0x10a2,0x18c2,0x18c3,0x20e3,0x4964,0x31a6,0x2985,0x31c7,0x2986,0x2966,0x2986,0x2966,0x2965,0x2965,0x2144,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2965,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2966,0x2145,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2945,0x2965,0x2945,0x2965,0x2144,0x2144,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2144,0x2965,0x2965,0x2986,0x2145,0x2986,0x2986,0x2945,0x2144,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x2965,0x2145,0x2945,0x2965,0x2945,0x39a7,0x2966,0x2124,0x2145,0x2965,0x2965,0x2965,0x2144,0x2945,0x2124,0x2124,0x2124,0x2145,0x2124,0x2945,0x2125,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2945,0x2104,0x1904,0x2124,0x2125,0x2124,0x18e4,0x2124,0x2125,0x2124,0x1904,0x2104,0x2124,0x2124,0x2124,0x2104, +0x1904,0x18e3,0x1903,0x1904,0x1903,0x1903,0x18e4,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2104,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2145,0x2124,0x2144,0x2965,0x2145,0x2124,0x2104,0x2145,0x2145,0x2124,0x2145,0x2986,0x2986,0x2986,0x2145,0x2124,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2985,0x2965,0x2124,0x2145,0x2965,0x2145,0x2965,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x2986,0x31c7,0x2986,0x31a7,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2165,0x29a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2986,0x29a6,0x31c7,0x2986,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2124,0x2104,0x2124,0x2945,0x2965,0x2124,0x2124,0x2924,0x2124,0x2124,0x2125,0x2945,0x2124,0x2104,0x2104,0x2124,0x2125,0x2125,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x20e3,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2945,0x20e3,0x10a2,0x18a3,0x18c3,0x20e3,0x4964,0x2986,0x2985,0x2966,0x2965,0x2986,0x2966,0x31a7,0x2986,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x31a7,0x31a7,0x2965,0x2965,0x2986,0x2945,0x2145,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2144,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2965,0x2145,0x2144,0x2124,0x2965,0x2145,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2125,0x2124,0x2124,0x2945,0x2125,0x2945,0x2125,0x2104,0x2104,0x1904,0x2124,0x2124,0x2104,0x1904,0x2124,0x2125,0x2145,0x1904,0x1904,0x2125,0x1904,0x2124,0x1903,0x2124, +0x2104,0x2104,0x2104,0x1924,0x1924,0x1924,0x2104,0x18e3,0x18e4,0x1904,0x18e3,0x1904,0x1904,0x2124,0x2124,0x2124,0x2144,0x2944,0x2145,0x2124,0x2125,0x2145,0x2965,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2965,0x2965,0x2144,0x2124,0x2965,0x2965,0x2945,0x2125,0x2945,0x2945,0x2965,0x2965,0x2145,0x2986,0x2986,0x2966,0x2986,0x2145,0x2965,0x2985,0x2144,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2966,0x31a7,0x31a6,0x2965,0x3186,0x2945,0x2965,0x3186,0x2965,0x2985,0x2965,0x2945,0x31a6,0x2985,0x2165,0x2965,0x2965,0x2965,0x2985,0x2145,0x2145,0x2985,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x2966,0x2965,0x2145,0x39e7,0x31a7,0x2966,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x1903,0x2104,0x2124,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2945,0x2104,0x2124,0x2924,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e3,0x2103,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2944,0x2945,0x2925,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2925,0x2945,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x10a2,0x18c3,0x18a3,0x20e3,0x4165,0x2965,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3166,0x2966,0x2966,0x2965,0x2145,0x2145,0x2965,0x2145,0x2986,0x2986,0x2965,0x3185,0x2965,0x2145,0x2945,0x2985,0x31a6,0x3186,0x2965,0x2986,0x2966,0x2965,0x2985,0x2145,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2985,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x31a6,0x2985,0x3186,0x2986,0x2124,0x2965,0x2965,0x2144,0x2124,0x2145,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2144,0x2125,0x2965,0x2104,0x2124,0x2145,0x2104,0x2125,0x2104,0x2124,0x2145,0x2945,0x2986,0x2124,0x2104,0x1904,0x2145,0x2124,0x2124,0x1904,0x1904,0x2104,0x2125,0x2124,0x1924,0x2124, +0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x20e4,0x20e4,0x2104,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2125,0x2945,0x2124,0x2124,0x2125,0x2125,0x2145,0x2145,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2986,0x2145,0x2145,0x2965,0x2144,0x2124,0x2965,0x3186,0x2124,0x2965,0x2145,0x2124,0x2966,0x31c7,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2985,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2986,0x2985,0x2985,0x2985,0x2965,0x2145,0x2986,0x2965,0x2145,0x2985,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x31c7,0x3186,0x2966,0x31a7,0x3186,0x31a7,0x31a7,0x31a6,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x39e7,0x39c7,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x2103,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18a2,0x10a2,0x18c3,0x18a3,0x20e3,0x4144,0x3186,0x3186,0x2966,0x2945,0x2965,0x2145,0x2965,0x2966,0x2966,0x2986,0x2165,0x2145,0x2965,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x3186,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2145,0x2965,0x2965,0x2966,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x2145,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2985,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2965,0x2145,0x2145,0x2965,0x2145,0x2124,0x2945,0x2965,0x2986,0x2145,0x2145,0x2965,0x3186,0x2965,0x3186,0x2145,0x2124,0x2145,0x2124,0x2145,0x2124,0x2124,0x2945,0x2145,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2125,0x2125,0x1904,0x2124,0x2145,0x2145,0x2124,0x2945,0x2945,0x31c6,0x2945,0x2124,0x1904,0x2124,0x2145,0x2124,0x2145,0x2124,0x2104,0x2145,0x2124,0x1924,0x2144, +0x2104,0x1904,0x2104,0x1903,0x2104,0x2125,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1904,0x2104,0x2125,0x2125,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2125,0x2145,0x2124,0x2124,0x2124,0x2924,0x2945,0x2145,0x2124,0x2144,0x2144,0x2145,0x2124,0x2145,0x2145,0x2124,0x2945,0x2145,0x2165,0x2144,0x2124,0x2965,0x2965,0x2945,0x2124,0x2144,0x2144,0x2124,0x2965,0x3186,0x2145,0x2985,0x2965,0x2965,0x2966,0x2985,0x2165,0x2165,0x2966,0x2966,0x2945,0x2125,0x2965,0x2965,0x31a6,0x39c6,0x39c6,0x3186,0x29a6,0x2986,0x2965,0x2965,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2985,0x29a6,0x3186,0x31a6,0x29a6,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x31a7,0x2966,0x31a6,0x31c7,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x18a2,0x18a3,0x20e3,0x3944,0x2966,0x2145,0x2986,0x2966,0x2966,0x2145,0x2966,0x2986,0x2145,0x2165,0x2965,0x2986,0x2985,0x2965,0x29a6,0x2985,0x2985,0x29a6,0x2145,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x31a6,0x2145,0x3186,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2985,0x2145,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31c6,0x2986,0x2965,0x2945,0x2145,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2145,0x2945,0x2985,0x2945,0x2144,0x2145,0x2145,0x2965,0x2966,0x2986,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2145,0x2124,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2124,0x2125,0x2104,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x1904,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x18e3,0x1904,0x1903,0x1924, +0x2144,0x2104,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2124,0x2144,0x2124,0x18e4,0x2104,0x2124,0x2945,0x2144,0x2965,0x2965,0x2145,0x2144,0x2125,0x2104,0x2125,0x2925,0x2945,0x2945,0x2945,0x2965,0x2965,0x2145,0x2945,0x2945,0x2945,0x2145,0x2945,0x31a6,0x2165,0x1924,0x2144,0x2944,0x2985,0x2965,0x2145,0x2145,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2965,0x3186,0x2965,0x2965,0x3186,0x2985,0x2165,0x2985,0x2165,0x2165,0x2145,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x2986,0x2965,0x39c7,0x39c7,0x2965,0x2985,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2966,0x3186,0x39c7,0x39e7,0x31a6,0x3186,0x31a7,0x31c7,0x31a6,0x31a6,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2924,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3944,0x2986,0x2965,0x2145,0x2186,0x2986,0x2186,0x2186,0x2986,0x29a6,0x2165,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2965,0x2965,0x2945,0x2986,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2165,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2965,0x2145,0x2965,0x2986,0x2185,0x2165,0x2965,0x2965,0x2986,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2965,0x2986,0x2145,0x2986,0x2965,0x2145,0x2986,0x2985,0x2165,0x2145,0x2965,0x2145,0x2965,0x2965,0x2145,0x2965,0x2124,0x2145,0x2965,0x2124,0x2945,0x2965,0x2104,0x2965,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2965,0x2104,0x2145,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x2104,0x18e4, +0x2144,0x2145,0x2124,0x18e3,0x1904,0x2104,0x2104,0x2104,0x1904,0x1903,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2945,0x2965,0x2104,0x2144,0x2145,0x2144,0x2145,0x2945,0x2124,0x2124,0x2124,0x2945,0x2145,0x2125,0x2145,0x2945,0x2945,0x2965,0x2125,0x2125,0x2966,0x2145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2985,0x2165,0x1924,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2966,0x2966,0x2145,0x2145,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2165,0x2986,0x29a6,0x31a6,0x2986,0x2145,0x2986,0x2965,0x3186,0x2965,0x2985,0x2986,0x3186,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x3186,0x2965,0x2965,0x2965,0x31a6,0x2986,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3166,0x31a6,0x31a6,0x39a6,0x39c6,0x39c7,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x3166,0x2925,0x2924,0x2925,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3924,0x2966,0x2986,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2966,0x2965,0x2145,0x31a6,0x2965,0x31a6,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2966,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2945,0x2965,0x31c6,0x3186,0x3186,0x2965,0x2965,0x2145,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2165,0x2986,0x2986,0x2965,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2165,0x2965,0x2965,0x2985,0x2986,0x2965,0x2144,0x2965,0x2144,0x2965,0x2985,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2965,0x2965,0x2124,0x2124,0x2104,0x2945,0x2965,0x2145,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2145,0x1903,0x2124,0x2124,0x1924,0x2145,0x2125,0x2104,0x2104, +0x2104,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145,0x2124,0x2145,0x1904,0x2124,0x2125,0x2125,0x2945,0x2945,0x2124,0x2965,0x2144,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2965,0x2966,0x2125,0x2145,0x2945,0x2925,0x2125,0x2965,0x2945,0x2945,0x2966,0x2986,0x2965,0x2145,0x2966,0x2985,0x2145,0x2145,0x2145,0x2965,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x2144,0x2945,0x2966,0x3186,0x3186,0x2966,0x2986,0x2965,0x2986,0x3186,0x3186,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2165,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2965,0x3186,0x2965,0x2945,0x2985,0x3186,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c7,0x31c7,0x31c6,0x31c6,0x3a07,0x39e7,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2945,0x2945,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x3186,0x3165,0x2925,0x18e4,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x3124,0x2966,0x39e7,0x31a6,0x2965,0x3186,0x2965,0x2986,0x3186,0x2965,0x2986,0x3186,0x2144,0x2965,0x31c7,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x3186,0x2965,0x3186,0x31a6,0x2985,0x3186,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x39e7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2125,0x2965,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x3186,0x2945,0x2145,0x2986,0x2965,0x2945,0x2145,0x2985,0x3186,0x3186,0x31a6,0x2124,0x31a6,0x2965,0x2124,0x2124,0x2965,0x2965,0x1924,0x2165,0x2165,0x2945,0x2145,0x2145,0x2124,0x2104,0x2145,0x2124,0x2124,0x2945,0x2144,0x1903,0x2124,0x2124,0x2124,0x2145,0x2104,0x2104,0x2104, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2125,0x2945,0x2145,0x2124,0x2124,0x1904,0x2124,0x2125,0x2945,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2985,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2125,0x2945,0x2125,0x2145,0x2165,0x2145,0x2165,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2965,0x2985,0x2965,0x3186,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2165,0x2945,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2965,0x2986,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2966,0x2966,0x2985,0x2165,0x2986,0x31a6,0x39c7,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x39e7,0x39e7,0x31a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x18a3,0x2124,0x2965,0x3186,0x3186,0x3186,0x2965,0x2944,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2145,0x2986,0x31a6,0x31c6,0x39c6,0x31a6,0x3186,0x20e4,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x3944,0x3186,0x3186,0x3166,0x3186,0x3186,0x2145,0x2966,0x3186,0x3186,0x2965,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x3186,0x3186,0x2986,0x2985,0x2145,0x2986,0x31c6,0x2965,0x2986,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2945,0x2144,0x2965,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2145,0x2145,0x2945,0x2965,0x2986,0x2165,0x2965,0x31a6,0x2986,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2945,0x2966,0x3186,0x2945,0x2125,0x2966,0x2985,0x2145,0x2965,0x2965,0x2145,0x2945,0x2965,0x2945,0x2965,0x2145,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x2965,0x2945,0x2104,0x2124,0x2124,0x2104,0x2104,0x2965,0x2986,0x2144,0x1904,0x1904,0x2124,0x1904,0x1904,0x2145,0x2145,0x2124,0x2124, +0x2104,0x2945,0x2945,0x2125,0x1904,0x2104,0x2104,0x2124,0x2124,0x2104,0x2965,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2965,0x2144,0x2965,0x2965,0x2125,0x2165,0x2145,0x2124,0x2124,0x2945,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2144,0x2145,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x3186,0x2985,0x2965,0x3186,0x2965,0x2145,0x2145,0x2145,0x2145,0x2945,0x2945,0x2986,0x2965,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2985,0x2986,0x2985,0x31a6,0x39e7,0x2965,0x2986,0x2965,0x2986,0x31c7,0x31a6,0x2965,0x2144,0x2165,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2986,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x18c3,0x2944,0x2965,0x3186,0x3185,0x2965,0x2104,0x18c3,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10c2,0x1903,0x2944,0x31a6,0x31a6,0x39c6,0x3185,0x18a3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x3124,0x31a6,0x2965,0x2965,0x2966,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2945,0x3186,0x39e7,0x31c6,0x2965,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2165,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2145,0x2125,0x2145,0x2965,0x2145,0x2165,0x2965,0x3186,0x31a7,0x2966,0x2945,0x2945,0x2986,0x2986,0x2145,0x2986,0x2985,0x2985,0x2985,0x2965,0x29a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2165,0x2965,0x2165,0x2145,0x2145,0x2965,0x2945,0x2144,0x2945,0x2144,0x2965,0x2124,0x2124,0x2945,0x2104,0x2124,0x1903,0x2124,0x2145,0x1904,0x2124,0x2124,0x2124,0x2144,0x1904,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x2124, +0x2124,0x1904,0x2104,0x2145,0x1904,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2125,0x2145,0x2104,0x2124,0x2125,0x2124,0x2945,0x2145,0x2145,0x2965,0x2144,0x2124,0x2145,0x2124,0x2125,0x2165,0x2145,0x2124,0x2945,0x2945,0x2945,0x2145,0x2124,0x2144,0x2965,0x2986,0x2965,0x2124,0x2986,0x2986,0x2965,0x2945,0x2945,0x2124,0x2124,0x2145,0x2165,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2165,0x2185,0x2165,0x2185,0x2985,0x2985,0x2165,0x2945,0x2985,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2965,0x2966,0x3186,0x3186,0x2966,0x3186,0x31c7,0x2986,0x2965,0x2965,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x2986,0x31c7,0x31a7,0x31a7,0x2966,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x1082,0x0861,0x0861,0x0841,0x0861,0x1062,0x18e3,0x2944,0x2965,0x2965,0x2965,0x2104,0x10c2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x10a2,0x2103,0x2965,0x31a6,0x31a6,0x2965,0x2104,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x3124,0x31a6,0x31a6,0x31a7,0x2986,0x3186,0x3186,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2965,0x3186,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2945,0x2985,0x3186,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2986,0x2986,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2965,0x2145,0x2165,0x2965,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2124,0x2145,0x2986,0x2965,0x2145,0x2986,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2124,0x2124,0x2145,0x2144,0x2965,0x2965,0x2124,0x2985,0x2965,0x2145,0x2145,0x2145,0x3186,0x2145,0x2945,0x2965,0x2124,0x2124,0x2144,0x2945,0x2145,0x2144,0x2124,0x2124,0x2144,0x2986,0x2965,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2145,0x2124,0x18e3, +0x1904,0x1904,0x2124,0x2145,0x2124,0x1904,0x2104,0x2104,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2145,0x2145,0x2125,0x1924,0x2145,0x2165,0x2145,0x2145,0x2124,0x2945,0x2965,0x2125,0x2145,0x2986,0x2986,0x2966,0x2124,0x2945,0x2145,0x2124,0x2124,0x2165,0x2965,0x2965,0x2985,0x2145,0x2985,0x2986,0x2965,0x2965,0x2125,0x2965,0x2144,0x2965,0x2165,0x2965,0x2965,0x2965,0x3186,0x3186,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2145,0x2985,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x29a6,0x2986,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x31c6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x3186,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x20e4,0x31a6,0x2945,0x2944,0x2944,0x18e3,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x2124,0x3185,0x3185,0x3165,0x20e3,0x1082,0x0861,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x4185,0x31a6,0x2966,0x39c7,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2145,0x29a6,0x31a6,0x2966,0x3186,0x2965,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x2965,0x2986,0x3186,0x3186,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2985,0x3186,0x2986,0x2965,0x2966,0x2966,0x2965,0x31a6,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2985,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2965,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2966,0x31a7,0x2946,0x2966,0x2966,0x2945,0x2965,0x2145,0x2945,0x2945,0x2945,0x2965,0x2985,0x2945,0x2124,0x2145,0x2165,0x2144,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2945,0x2124,0x2945,0x2965,0x2124,0x2144,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x2104,0x18e4, +0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e4,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2125,0x2145,0x2145,0x1924,0x2165,0x2165,0x2124,0x2144,0x2144,0x2945,0x2965,0x2945,0x31c7,0x31a6,0x2965,0x2945,0x2965,0x2945,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2165,0x1924,0x2145,0x2965,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2124,0x2124,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2986,0x2966,0x2145,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2145,0x2985,0x2985,0x2985,0x3186,0x2965,0x2965,0x2966,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2965,0x2985,0x39e7,0x3186,0x31c6,0x3186,0x2986,0x2986,0x3186,0x2965,0x2985,0x3186,0x2965,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x29a6,0x39e7,0x31a6,0x2965,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x18a2,0x2945,0x31a6,0x2924,0x2124,0x18c3,0x1061,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x20e3,0x2124,0x2124,0x2924,0x2965,0x2945,0x2103,0x18c2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x10a2,0x2124,0x2965,0x2965,0x2945,0x18c3,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51c6,0x31c7,0x29a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31c6,0x2986,0x2965,0x2986,0x31a6,0x2965,0x2986,0x2986,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x2144,0x2985,0x2986,0x2966,0x2966,0x2965,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2966,0x2966,0x2145,0x2946,0x2946,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2144,0x2945,0x2965,0x2945,0x2124,0x2965,0x2945,0x2145,0x3186,0x3186,0x2124,0x2145,0x2124,0x2965,0x2144,0x2144,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2985,0x2986,0x2145,0x2124,0x2145,0x2124,0x2104,0x2104,0x2125,0x1904, +0x2124,0x2145,0x2125,0x1904,0x1904,0x2104,0x2104,0x2124,0x2945,0x2124,0x2145,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2945,0x2945,0x2124,0x2145,0x2145,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2145,0x2945,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2965,0x2144,0x2965,0x2145,0x2124,0x2144,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2965,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2986,0x2965,0x2985,0x2986,0x2986,0x2986,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2966,0x2986,0x3186,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31e7,0x31e7,0x2965,0x2145,0x2104,0x10c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x2104,0x2124,0x2104,0x18c3,0x0861,0x1083,0x3167,0x39a7,0x2124,0x18c3,0x18c3,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x2103,0x18e3,0x10a2,0x10a2,0x18c3,0x18c4,0x1083,0x0861,0x10a2,0x2124,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51a5,0x2145,0x4228,0x39e7,0x3186,0x2986,0x2986,0x29a6,0x31e7,0x2985,0x2986,0x2986,0x2965,0x2945,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2986,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2966,0x39c7,0x31c7,0x2165,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2966,0x31a6,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x2145,0x2165,0x2986,0x2965,0x2945,0x2124,0x3186,0x2945,0x2945,0x2965,0x2945,0x2945,0x2144,0x2965,0x2965,0x3186,0x2966,0x2104,0x2124,0x2144,0x2124,0x2945,0x2945,0x2145,0x2965,0x2124,0x2945,0x2144,0x2104,0x2104,0x2965,0x2145,0x2144,0x2124,0x1904,0x2145,0x2145,0x2104,0x2124, +0x2124,0x2124,0x2124,0x2124,0x1904,0x18e3,0x2104,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x1904,0x2125,0x2965,0x2145,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2985,0x2145,0x2145,0x2144,0x2965,0x2165,0x2986,0x2145,0x2145,0x2965,0x31c7,0x2965,0x2125,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2965,0x2945,0x2945,0x2145,0x2145,0x2145,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2124,0x2986,0x31a6,0x2945,0x2965,0x2986,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2966,0x3186,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x29a6,0x31c6,0x2985,0x3186,0x2966,0x3186,0x2986,0x39e7,0x31a6,0x2165,0x2965,0x2986,0x31a6,0x31a6,0x31c6,0x2966,0x31a6,0x2966,0x2966,0x31a6,0x2124,0x0000,0x0000,0x0000,0x0020,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0861,0x41ca,0x9cb4,0x5249,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2924,0x2924,0x2965,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x2967,0x420a,0x20e5,0x0861,0x10a2,0x2104,0x2924,0x2924,0x2104,0x1082,0x0861,0x0861,0x0861,0x10a2,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x51a5,0x0000,0x1082,0x4208,0x4208,0x3186,0x31a6,0x31c6,0x29a6,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2965,0x2966,0x31c7,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2986,0x2965,0x3186,0x3186,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x3186,0x2965,0x3186,0x2965,0x2985,0x2986,0x2986,0x2986,0x2966,0x31a7,0x2965,0x2985,0x2965,0x2985,0x2986,0x2945,0x3186,0x2966,0x2945,0x2985,0x31a6,0x2986,0x2965,0x2144,0x2145,0x2165,0x2144,0x2145,0x2985,0x2986,0x2144,0x1924,0x2145,0x2165,0x1924,0x2145,0x2145,0x2965,0x2966,0x2125,0x2965,0x2965,0x2965,0x2986,0x2945,0x2124,0x2144,0x2965,0x2945,0x2145,0x2104,0x2124,0x2104,0x2124,0x2965,0x2124,0x2124,0x2965,0x2965,0x2104,0x1903, +0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2144,0x2144,0x2986,0x2965,0x2145,0x2124,0x1904,0x2124,0x2945,0x2145,0x2965,0x2144,0x2145,0x2145,0x2165,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2966,0x2965,0x2965,0x2965,0x2945,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3186,0x2986,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2165,0x2985,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2985,0x29a6,0x2985,0x31a6,0x2985,0x2985,0x2165,0x2165,0x2986,0x2965,0x2985,0x31c6,0x31c6,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2966,0x31c7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x1904,0x0020,0x0861,0x0861,0x0041,0x0841,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x1082,0x52cd,0x94d2,0x3986,0x2945,0x20e3,0x18c3,0x2103,0x2124,0x2104,0x2124,0x2924,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18a3,0x2946,0x8c94,0x6b4e,0x0841,0x0861,0x18c3,0x2104,0x2104,0x2944,0x20e3,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x49c5,0x1082,0x0000,0x3186,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2945,0x3186,0x39e7,0x3186,0x2145,0x2966,0x2986,0x2986,0x2966,0x2945,0x2986,0x2986,0x2966,0x2986,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2165,0x29a6,0x31a6,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x2145,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2965,0x2165,0x2986,0x3186,0x2145,0x31a6,0x31a6,0x2945,0x3186,0x2145,0x2145,0x2986,0x2145,0x2985,0x31c7,0x2965,0x2145,0x2145,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2125,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2124,0x2144,0x2144,0x2124,0x2945,0x2945,0x2125,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904, +0x2104,0x2965,0x2125,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x29a6,0x2165,0x2145,0x2965,0x2965,0x2965,0x2145,0x2945,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x2145,0x2125,0x2945,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2185,0x2165,0x2165,0x2965,0x2125,0x2125,0x2125,0x2145,0x2965,0x2985,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2145,0x2165,0x2165,0x2165,0x2945,0x2986,0x29a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2945,0x2945,0x2966,0x2986,0x3186,0x2986,0x2165,0x2145,0x3186,0x3186,0x2985,0x2986,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x31c7,0x2966,0x2145,0x2966,0x2986,0x2986,0x3186,0x31c7,0x3186,0x3186,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x18e3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x0861,0x18c3,0x3a08,0x39e7,0x4208,0x39c6,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2104,0x2104,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x2945,0x2945,0x636d,0x6bae,0x10a2,0x0841,0x1082,0x18e3,0x18e3,0x39c6,0x39a6,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x18a3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x5288,0x1082,0x1082,0x18a2,0x3186,0x31a6,0x3186,0x3186,0x2986,0x31c7,0x2965,0x31a6,0x31c7,0x31a6,0x2145,0x2986,0x3186,0x31a6,0x2165,0x2965,0x2165,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x2985,0x2985,0x2986,0x2986,0x2965,0x3186,0x2965,0x2966,0x2986,0x2986,0x2985,0x2985,0x2165,0x2965,0x29a6,0x2965,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x3186,0x2966,0x2945,0x2966,0x2966,0x2985,0x31c6,0x2165,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2966,0x3186,0x3166,0x2945,0x2925,0x2125,0x2945,0x2945,0x2124,0x2145,0x2145,0x2965,0x2986,0x2945,0x2965,0x3186,0x2145,0x2124,0x2124,0x2124,0x2125,0x2945,0x2965,0x2144,0x2124,0x2965,0x2104,0x2124,0x2965,0x2965,0x3186,0x1903,0x2124, +0x2124,0x2125,0x2104,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x2124,0x2145,0x2145,0x2145,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2945,0x2145,0x2124,0x2965,0x2145,0x2966,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2165,0x2965,0x2965,0x2145,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2945,0x2945,0x2965,0x2985,0x2965,0x2965,0x2985,0x2185,0x2165,0x2965,0x3186,0x2985,0x2965,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2966,0x2966,0x2966,0x2965,0x2986,0x3186,0x2986,0x2965,0x2986,0x31c7,0x2986,0x2986,0x3186,0x2966,0x2965,0x2965,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x3187,0x2986,0x2986,0x2986,0x2966,0x3186,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x2103,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x0841,0x0861,0x18e3,0x2104,0x18c3,0x31c6,0x2944,0x2965,0x18c3,0x18c3,0x18e3,0x2944,0x2945,0x2924,0x2103,0x18c3,0x10a2,0x18a2,0x20e3,0x2124,0x39e7,0x2124,0x31e8,0x2125,0x0861,0x0861,0x18c2,0x18c2,0x2965,0x3186,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x6b2c,0x10a2,0x10a2,0x18e4,0x39a7,0x2986,0x3186,0x2965,0x2986,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2945,0x29a6,0x31c6,0x2965,0x2985,0x2986,0x31c6,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2986,0x2965,0x2985,0x2986,0x3186,0x2965,0x2965,0x2986,0x2965,0x2986,0x31c6,0x2165,0x2965,0x31a6,0x2945,0x2965,0x2165,0x29a6,0x2966,0x2945,0x2986,0x2986,0x2965,0x2965,0x39c7,0x31a6,0x2965,0x2165,0x2986,0x2986,0x2965,0x2965,0x2986,0x2145,0x2945,0x2966,0x3186,0x2966,0x2965,0x31a6,0x29a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2145,0x2965,0x2986,0x2966,0x2965,0x3186,0x2986,0x2945,0x2965,0x2944,0x2965,0x2965,0x2945,0x2986,0x2965,0x2965,0x2965,0x3186,0x2145,0x2124,0x2124,0x2125,0x2104,0x2965,0x2944,0x2124,0x2145,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124, +0x2124,0x2124,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2104,0x2124,0x1904,0x2124,0x2144,0x2124,0x2124,0x2965,0x2986,0x2124,0x2145,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2985,0x31c7,0x31a6,0x2124,0x2965,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2985,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x2965,0x2965,0x2124,0x39e7,0x3a07,0x2144,0x2965,0x2965,0x2945,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x2985,0x2165,0x2165,0x2965,0x2986,0x31c7,0x2986,0x2986,0x2965,0x2965,0x2986,0x2966,0x31c7,0x3186,0x2986,0x2986,0x2965,0x2945,0x3186,0x2986,0x2966,0x2965,0x2986,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2966,0x2986,0x2965,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x18c3,0x10c2,0x18c2,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x18c3,0x2944,0x2944,0x2124,0x18e3,0x18c3,0x18e3,0x18c3,0x2944,0x1903,0x2124,0x10a2,0x18e4,0x2987,0x1082,0x0841,0x1082,0x10a2,0x18c3,0x20e3,0x18e3,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x630c,0x18e3,0x1082,0x2124,0x39c7,0x2986,0x31c7,0x2165,0x2986,0x3186,0x2965,0x2165,0x2986,0x2966,0x2966,0x3186,0x39e7,0x2985,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x31a6,0x2965,0x31c7,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x29a6,0x2966,0x2965,0x31a6,0x2985,0x2965,0x2985,0x31a6,0x31a7,0x2966,0x2145,0x29a6,0x2965,0x2985,0x31a6,0x2986,0x3186,0x3186,0x2965,0x2945,0x2945,0x2965,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2945,0x2965,0x2965,0x2965,0x2165,0x2145,0x2165,0x2965,0x2965,0x2986,0x2985,0x2945,0x2965,0x2965,0x2985,0x2124,0x2145,0x2985,0x2965,0x31a6,0x2125,0x2124,0x2124,0x2124,0x2945,0x2945,0x2965,0x2945,0x2124,0x2965,0x2145,0x1904,0x2124,0x2124,0x2124,0x2145, +0x2125,0x2124,0x2145,0x2124,0x1903,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x2145,0x2124,0x2145,0x2965,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2985,0x2965,0x2165,0x2145,0x2145,0x2965,0x2966,0x2965,0x2165,0x2145,0x2986,0x2145,0x2965,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2125,0x2986,0x2986,0x2145,0x2986,0x2965,0x2986,0x29a6,0x2165,0x2986,0x29a6,0x3186,0x2985,0x2965,0x2965,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2965,0x2965,0x3186,0x2966,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31e7,0x2986,0x31a6,0x31c6,0x3a07,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x1924,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0841,0x2945,0x39e6,0x10a2,0x1082,0x0861,0x0841,0x0841,0x0861,0x18c3,0x1082,0x18c3,0x1082,0x18e3,0x18e3,0x2124,0x20e3,0x2103,0x20e3,0x2944,0x2104,0x18c3,0x18c3,0x18e3,0x2144,0x18c3,0x18e3,0x1082,0x18c3,0x10a2,0x2986,0x10c3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x4a8a,0x18e3,0x0020,0x18e3,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x2966,0x2986,0x29a6,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2985,0x2985,0x2965,0x2986,0x2165,0x2986,0x2145,0x2145,0x2966,0x2986,0x2965,0x2986,0x2966,0x3186,0x2985,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x2986,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2985,0x2965,0x2966,0x2966,0x2986,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2966,0x2165,0x2965,0x2965,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x2145,0x2985,0x2945,0x2965,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2945,0x3186,0x2945,0x2145,0x2144,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2145,0x2145,0x2165,0x2124,0x2965,0x2965,0x2124,0x2145,0x2144,0x2144,0x2124,0x2104,0x2945,0x2945,0x2124,0x2144,0x2124,0x2124, +0x2145,0x1904,0x1904,0x2104,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2125,0x2145,0x2145,0x2945,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2124,0x2945,0x2965,0x2165,0x2165,0x2165,0x2945,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2966,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2965,0x2986,0x2145,0x31a6,0x2986,0x2145,0x2986,0x2965,0x2986,0x2986,0x2165,0x2165,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2985,0x3186,0x2965,0x2966,0x3186,0x2986,0x3186,0x2986,0x2945,0x2965,0x3186,0x2966,0x3186,0x3186,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x0881,0x0881,0x18e3,0x18c3,0x10c3,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a3,0x39c7,0x4226,0x1082,0x1082,0x0861,0x0841,0x0841,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x2924,0x2104,0x2124,0x3165,0x2944,0x18e3,0x20e3,0x20e3,0x18e3,0x1082,0x10a3,0x1082,0x18c3,0x1082,0x1904,0x10a2,0x0841,0x0861,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x4208,0x10c2,0x0020,0x10c2,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2966,0x2965,0x29a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x31a6,0x2985,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x2965,0x2966,0x2965,0x2986,0x2966,0x2986,0x3186,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x31e7,0x2165,0x2986,0x2965,0x2985,0x31a6,0x3186,0x3186,0x2986,0x2965,0x29a6,0x31a6,0x31a6,0x29a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2145,0x31a6,0x31a6,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x3186,0x3186,0x3186,0x2145,0x2145,0x2986,0x2945,0x2945,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2124,0x31a6,0x3186,0x2945,0x2145,0x2965,0x2124,0x2165,0x2165,0x2125,0x2165,0x2986,0x2144,0x2945,0x2965,0x2104,0x2145,0x2965,0x2124,0x2145,0x2945,0x2145,0x2124,0x1904,0x2124, +0x2124,0x2104,0x2104,0x2104,0x2104,0x2125,0x2124,0x2145,0x2124,0x1904,0x2124,0x2145,0x2125,0x2124,0x2124,0x2145,0x2145,0x2965,0x2145,0x2145,0x2945,0x2965,0x2124,0x2945,0x2144,0x2124,0x2965,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2965,0x2965,0x2145,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x3186,0x2965,0x2165,0x2985,0x2965,0x2965,0x2965,0x29a6,0x31a6,0x2965,0x2144,0x3186,0x31a6,0x2986,0x2965,0x2966,0x2966,0x2145,0x2145,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x2965,0x2986,0x2965,0x2986,0x31c7,0x2966,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2986,0x3186,0x2986,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x3186,0x18c3,0x0841,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x2104,0x2945,0x2104,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x18a2,0x18a2,0x18e3,0x2104,0x2945,0x3185,0x2944,0x2103,0x18c3,0x18e3,0x1082,0x10a2,0x1082,0x1082,0x18c2,0x1082,0x18a2,0x1082,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0841,0x0861,0x0861,0x0861,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x39c7,0x10a2,0x0040,0x10a2,0x3186,0x3186,0x2985,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2965,0x2965,0x3186,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2986,0x2965,0x2965,0x2145,0x2965,0x31a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x2986,0x2985,0x2965,0x31c6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2124,0x2945,0x2965,0x2965,0x2145,0x31c6,0x31a6,0x2965,0x2985,0x31a6,0x29a6,0x2965,0x2945,0x2945,0x31c7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2986,0x2986,0x2965,0x2124,0x2145,0x2145,0x2145,0x2966,0x2125,0x2966,0x2965,0x2145,0x2965,0x2965,0x2124,0x2145,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2145,0x1904, +0x2124,0x2124,0x2124,0x2125,0x2145,0x2125,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2145,0x1924,0x2124,0x2145,0x2966,0x2145,0x2145,0x2965,0x2945,0x2124,0x2124,0x2145,0x2145,0x31a6,0x2985,0x2124,0x2945,0x2165,0x2144,0x2145,0x2965,0x2965,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x3186,0x2985,0x2965,0x2144,0x2145,0x2965,0x2965,0x2985,0x2965,0x31c6,0x39e7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2966,0x2986,0x2145,0x2145,0x2165,0x2165,0x2165,0x2985,0x2965,0x2165,0x2985,0x29a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2145,0x2986,0x31c7,0x2966,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2965,0x31a6,0x18c3,0x0020,0x10a2,0x2104,0x18e3,0x10c2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x18e3,0x20e4,0x18c3,0x18a3,0x10a3,0x18a3,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x2103,0x2104,0x2944,0x20e3,0x18c3,0x18c3,0x18e3,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0020,0x0841,0x0861,0x0861,0x1081,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x31a6,0x1082,0x0840,0x18c3,0x3186,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2985,0x2165,0x2965,0x2986,0x2986,0x2986,0x2965,0x2165,0x2965,0x2965,0x31c6,0x31c6,0x2965,0x3186,0x39c7,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2965,0x2945,0x2965,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x29a6,0x2986,0x2145,0x29a6,0x2986,0x31a6,0x2985,0x2965,0x2965,0x31a6,0x31c6,0x31c6,0x29a6,0x2986,0x2965,0x2986,0x31a7,0x2966,0x2985,0x31a6,0x2986,0x2165,0x3186,0x3186,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x29a6,0x2986,0x2965,0x2145,0x2965,0x31c6,0x3186,0x2986,0x2985,0x2965,0x2124,0x2945,0x2144,0x2965,0x2986,0x2965,0x2145,0x2145,0x2145,0x2966,0x2965,0x2145,0x2125,0x2145,0x2125,0x2124,0x2124,0x2985,0x2145,0x2104,0x2124,0x2144,0x2124,0x2124,0x1904,0x2145, +0x2124,0x2124,0x2145,0x2144,0x2144,0x2124,0x1904,0x2124,0x2125,0x2124,0x2124,0x1904,0x2124,0x2125,0x2145,0x2145,0x2124,0x2124,0x2145,0x2945,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x31a6,0x2124,0x2145,0x2145,0x2144,0x2145,0x2965,0x2986,0x2986,0x2145,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x3186,0x2965,0x2145,0x2965,0x2986,0x2965,0x2945,0x2145,0x2945,0x2965,0x2985,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2966,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2985,0x31c6,0x29a6,0x10a2,0x0020,0x0861,0x18e3,0x1904,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x18e3,0x18e4,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x18a2,0x2103,0x2924,0x2924,0x20e3,0x2104,0x18e3,0x18c3,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x1082,0x10a2,0x1082,0x1082,0x18c3,0x10a2,0x0020,0x0020,0x0841,0x1082,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x2944,0x0861,0x0000,0x10c3,0x31c6,0x3186,0x2985,0x3186,0x31c6,0x3186,0x2965,0x2165,0x2986,0x2985,0x2965,0x2966,0x2965,0x2965,0x3186,0x3186,0x31c7,0x2985,0x29a6,0x2986,0x2965,0x29a6,0x2965,0x2986,0x3186,0x2965,0x2986,0x2986,0x2965,0x3186,0x2986,0x3186,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2986,0x2145,0x2986,0x2986,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2165,0x2165,0x2986,0x2185,0x2165,0x2965,0x2965,0x2145,0x2986,0x3186,0x2965,0x2965,0x2965,0x2124,0x2986,0x2965,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2125,0x2125,0x2124,0x2144,0x2985,0x2965,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2144,0x2124, +0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2945,0x2145,0x2145,0x2125,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x2965,0x2965,0x2145,0x2945,0x2124,0x2925,0x2144,0x2124,0x2124,0x2965,0x2945,0x2965,0x2145,0x2945,0x2985,0x2965,0x2145,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2144,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2985,0x29a6,0x29a6,0x0882,0x0020,0x0841,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x1082,0x18c3,0x10a2,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x2145,0x10a2,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e3,0x2944,0x20e3,0x18e3,0x2944,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x3186,0x18e3,0x0020,0x0020,0x0020,0x0861,0x1082,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x2103,0x0861,0x0000,0x18e3,0x4208,0x39c7,0x3186,0x31a7,0x3186,0x3186,0x2986,0x2966,0x29a6,0x2986,0x2965,0x2966,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x39e7,0x2985,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2986,0x31a6,0x31c6,0x2965,0x2945,0x4a69,0x39e7,0x2986,0x31a7,0x2966,0x2986,0x2945,0x2986,0x3186,0x2965,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2986,0x2965,0x2945,0x2986,0x31a6,0x2965,0x2965,0x2145,0x2965,0x29a6,0x29a6,0x2165,0x2165,0x2145,0x2165,0x2965,0x2945,0x2986,0x2986,0x2145,0x2965,0x3186,0x2965,0x2965,0x2985,0x2145,0x2144,0x2145,0x2145,0x2965,0x2965,0x2945,0x2124,0x2145,0x2965,0x3186,0x2124,0x2144,0x2945,0x2965,0x2965,0x2965,0x2124,0x2965,0x2124,0x2145, +0x2124,0x2945,0x2145,0x2145,0x2125,0x2124,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2125,0x2125,0x2145,0x2145,0x2125,0x2124,0x2145,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2945,0x2945,0x2145,0x2144,0x2124,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2965,0x2985,0x2145,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2945,0x2945,0x3186,0x3186,0x2985,0x2965,0x2945,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2985,0x2945,0x2986,0x2986,0x2986,0x2966,0x2985,0x2986,0x2965,0x2966,0x2965,0x2986,0x31a6,0x2986,0x31c6,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2965,0x2966,0x39e7,0x31a6,0x2965,0x31a6,0x3186,0x1082,0x0020,0x0040,0x1082,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2103,0x10a2,0x1082,0x18a2,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0020,0x0020,0x0861,0x18e4,0x10a3,0x1082,0x0861,0x18e3,0x2944,0x2104,0x10a3,0x18c3,0x2966,0x2104,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x18a2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1062,0x1082,0x0841,0x0861,0x18e3,0x10a2,0x1082,0x31a6,0x5289,0x2104,0x1082,0x0020,0x0020,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18a2,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18e3,0x0841,0x0000,0x18c3,0x31c7,0x31a6,0x31c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x31c6,0x29a6,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x2985,0x29a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2945,0x2965,0x2966,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x3a08,0x4228,0x31a7,0x2986,0x2986,0x2986,0x31a6,0x39c7,0x2986,0x2986,0x39e7,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x2145,0x2965,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2966,0x2945,0x31a6,0x2145,0x2145,0x2965,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2986,0x2124,0x31c6,0x31c7,0x2965,0x2965,0x2965,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x31a6,0x2965,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x31a6,0x2144,0x2104, +0x2124,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2145,0x2145,0x2145,0x2144,0x2145,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2165,0x2144,0x2144,0x2145,0x2965,0x2124,0x2945,0x2945,0x2965,0x2145,0x2124,0x2945,0x2145,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2165,0x2145,0x2965,0x2965,0x2985,0x2985,0x2165,0x2165,0x2985,0x2986,0x2965,0x2966,0x2965,0x2945,0x2945,0x2986,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x2165,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x2985,0x2145,0x2965,0x31a6,0x2965,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2966,0x3186,0x2965,0x31a7,0x31a7,0x3186,0x39c7,0x2965,0x0861,0x0000,0x0020,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2124,0x18c3,0x1082,0x10a2,0x18a2,0x18a2,0x1081,0x0861,0x0861,0x0841,0x0020,0x0841,0x18e3,0x18e3,0x1082,0x0861,0x0841,0x2104,0x2965,0x2124,0x18e3,0x2104,0x2966,0x2986,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1081,0x1082,0x1062,0x0841,0x1082,0x1904,0x10a3,0x10a2,0x2124,0x4207,0x20e3,0x10a2,0x0861,0x0020,0x0020,0x0841,0x1082,0x0861,0x10a2,0x18e3,0x18a2,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x18c2,0x0841,0x0020,0x10a2,0x31a6,0x29a6,0x31c7,0x31a7,0x3186,0x3187,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2986,0x3186,0x31a6,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2965,0x2985,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2945,0x2145,0x2965,0x3186,0x31a7,0x2986,0x2985,0x2965,0x39e7,0x3186,0x3186,0x2966,0x3186,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x2986,0x3186,0x2945,0x2965,0x2966,0x2145,0x2965,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2165,0x2965,0x2965,0x2945,0x2145,0x2165,0x2985,0x2965,0x3186,0x31a6,0x2985,0x2986,0x2145,0x2945,0x2144,0x2945,0x2124,0x2145,0x2945,0x2144,0x2965,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x2986,0x2965,0x2144, +0x2124,0x2945,0x2145,0x2945,0x2144,0x2945,0x2145,0x2145,0x2145,0x2145,0x2144,0x2124,0x2945,0x2965,0x2145,0x2145,0x2124,0x2145,0x2965,0x1904,0x2124,0x2144,0x2145,0x2965,0x2945,0x2144,0x2145,0x2145,0x2965,0x2144,0x2124,0x2124,0x2144,0x2965,0x2165,0x2965,0x2985,0x2145,0x2145,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2985,0x2986,0x2966,0x2966,0x2965,0x2985,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2985,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2965,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31a6,0x3185,0x2985,0x2986,0x2165,0x2165,0x29a6,0x2966,0x2966,0x3186,0x2985,0x2965,0x2945,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x2985,0x0861,0x0020,0x0040,0x0861,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2965,0x2965,0x3165,0x2965,0x2966,0x39e8,0x2104,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x18c3,0x18e4,0x18c3,0x10a2,0x18e3,0x2965,0x18a2,0x18c2,0x18a2,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x10a2,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0020,0x0000,0x10a2,0x31c6,0x29c6,0x2986,0x31a6,0x3186,0x3186,0x31c7,0x2966,0x3186,0x2986,0x2986,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2985,0x2965,0x31c7,0x29a6,0x2145,0x2985,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2965,0x2966,0x31a7,0x31c7,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a7,0x2945,0x3186,0x2966,0x2145,0x2965,0x2985,0x2965,0x2965,0x2165,0x2145,0x2945,0x2965,0x2986,0x2985,0x2965,0x2124,0x2965,0x2985,0x1903,0x2965,0x2986,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x2986,0x2144,0x2124,0x2945,0x2124,0x2965,0x2945,0x2124, +0x2104,0x2124,0x2104,0x2124,0x2124,0x2144,0x2145,0x2144,0x2124,0x2144,0x2144,0x2986,0x2145,0x2145,0x2145,0x2965,0x2144,0x2144,0x2144,0x2124,0x2144,0x2986,0x2966,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2965,0x2985,0x2165,0x2985,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2985,0x3186,0x31a7,0x2965,0x2965,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2986,0x2966,0x2965,0x2986,0x29a6,0x29a6,0x2986,0x2985,0x2985,0x2986,0x2986,0x2985,0x2965,0x2986,0x31a6,0x3186,0x29a6,0x29a6,0x2186,0x2185,0x29a6,0x2986,0x2966,0x2965,0x2985,0x2985,0x2985,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2986,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x0881,0x0020,0x0841,0x0861,0x10a2,0x18e3,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2104,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0020,0x0841,0x2104,0x18c3,0x1082,0x0841,0x0020,0x0841,0x2944,0x2965,0x39c7,0x5248,0x39c7,0x2986,0x4229,0x528a,0x18a2,0x0841,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x10a3,0x2945,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x0861,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18e3,0x18c2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x18c3,0x18a2,0x0841,0x0020,0x1082,0x2986,0x31c6,0x31c7,0x2985,0x31c6,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x2986,0x2986,0x2165,0x31c7,0x2986,0x2986,0x31a6,0x3186,0x2985,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2986,0x39c7,0x3186,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3186,0x31a7,0x3186,0x2965,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2985,0x2965,0x2144,0x2965,0x2965,0x2945,0x2965,0x2165,0x2965,0x2144,0x2965,0x29a6,0x2145,0x2965,0x2986,0x2145,0x2125,0x2965,0x2965,0x2145,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2144,0x2124,0x2985,0x2945, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x1904,0x2144,0x2965,0x2124,0x2125,0x2145,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x31a6,0x2966,0x2125,0x2165,0x2124,0x2125,0x2145,0x2145,0x2145,0x2945,0x2966,0x2966,0x2945,0x2965,0x2965,0x2965,0x2966,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x31a7,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2966,0x2966,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2165,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2966,0x2986,0x2986,0x2185,0x2185,0x2986,0x2966,0x2986,0x2986,0x3186,0x2985,0x2965,0x2986,0x2966,0x3186,0x3186,0x2986,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x29a6,0x2986,0x0882,0x0020,0x0841,0x1082,0x18c3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2124,0x10a2,0x0862,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0020,0x1082,0x2944,0x2945,0x4207,0x5289,0x5289,0x39c7,0x4208,0x6b6d,0x4207,0x1061,0x0861,0x1082,0x18a2,0x18a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x1082,0x0841,0x1082,0x31a7,0x3186,0x2104,0x20e4,0x2104,0x2945,0x2945,0x0841,0x0861,0x18c3,0x18a3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x10a2,0x0841,0x0020,0x10a2,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x31c7,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x3186,0x2965,0x29a6,0x31a6,0x31a6,0x31a7,0x2966,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x2986,0x3186,0x2986,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x2985,0x31a6,0x3186,0x2966,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x3186,0x2986,0x2986,0x29a6,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x2965,0x2966,0x2165,0x2965,0x2945,0x2144,0x2986,0x2985,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x2145,0x31c6,0x31a6,0x2945,0x2966,0x2966,0x2965,0x2145,0x2144,0x2985,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965, +0x2124,0x2124,0x1924,0x1924,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2945,0x2945,0x2965,0x31a6,0x2145,0x2125,0x2125,0x2125,0x2125,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2125,0x2125,0x2945,0x2966,0x2945,0x2986,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2965,0x31a6,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2965,0x3166,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2986,0x2986,0x3186,0x2986,0x3166,0x31a6,0x31a6,0x2985,0x2945,0x2966,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2986,0x2965,0x29a6,0x29a6,0x29a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2985,0x2986,0x31a6,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x0861,0x0020,0x0841,0x1082,0x18e3,0x2104,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x0841,0x0020,0x0841,0x18e4,0x18c3,0x1082,0x0841,0x0020,0x0821,0x18c3,0x2944,0x2965,0x39c6,0x4207,0x5aea,0x4208,0x39e8,0x4a6a,0x5aeb,0x2945,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0861,0x2986,0x4229,0x3186,0x2946,0x2945,0x2945,0x31a6,0x2924,0x0020,0x0841,0x1082,0x18c3,0x1061,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c3,0x18e3,0x18c3,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0841,0x0000,0x18c3,0x39c7,0x2966,0x31a7,0x39e8,0x2966,0x31a7,0x3a08,0x2986,0x2966,0x2986,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x3186,0x3186,0x3186,0x3186,0x39e7,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2965,0x31a6,0x31c6,0x2986,0x2165,0x31a6,0x3186,0x3186,0x2965,0x3186,0x2986,0x2985,0x31a6,0x3186,0x2965,0x2966,0x2966,0x31a7,0x3186,0x2945,0x2965,0x3186,0x2945,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x3186,0x2144,0x2965,0x2986,0x2985,0x31a6,0x2966,0x2145,0x2144,0x2165,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2945,0x2985,0x2965,0x2124,0x2965,0x2965,0x2945,0x2145,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2124,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2124, +0x2945,0x2124,0x2124,0x2124,0x2945,0x2124,0x2145,0x2144,0x2144,0x31a6,0x2985,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2125,0x2124,0x2145,0x2145,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2945,0x2165,0x2965,0x2945,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2966,0x2965,0x2965,0x2985,0x2985,0x2965,0x2965,0x2986,0x3186,0x2966,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2165,0x29a6,0x31e7,0x2985,0x2986,0x29a6,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x2965,0x2986,0x2985,0x2985,0x3186,0x3186,0x31a7,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x31a6,0x1082,0x0020,0x0841,0x0861,0x18c3,0x2104,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0861,0x0841,0x0020,0x0861,0x2104,0x10a2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2124,0x3185,0x39a6,0x3185,0x4a48,0x4a48,0x4a28,0x39a7,0x4208,0x3a08,0x18e3,0x0861,0x0841,0x1061,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x1062,0x0861,0x0861,0x2104,0x39e8,0x39e8,0x31a7,0x31a7,0x31a7,0x31a6,0x39c6,0x2103,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18a3,0x18a2,0x18c3,0x18c3,0x0841,0x0020,0x10a2,0x4228,0x31a7,0x31a7,0x39e7,0x31a7,0x31c7,0x31c7,0x2986,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x31a6,0x31a7,0x31a7,0x3186,0x3186,0x31c6,0x2986,0x31c7,0x3186,0x2986,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2965,0x2985,0x2986,0x2965,0x2165,0x31a6,0x2985,0x2965,0x2986,0x3186,0x3186,0x3186,0x2965,0x31a6,0x31c7,0x31a6,0x2966,0x31a6,0x31a7,0x2966,0x2986,0x2986,0x2966,0x31c7,0x31c7,0x2965,0x2966,0x3186,0x2966,0x2965,0x31a6,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2145,0x2144,0x2985,0x2965,0x2965,0x2145,0x2965,0x2144,0x2145,0x2144,0x2144,0x2124,0x2104, +0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2145,0x2125,0x1924,0x2165,0x2145,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2124,0x2145,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2965,0x2144,0x2985,0x2986,0x2165,0x2165,0x2165,0x2985,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x31a6,0x2986,0x2966,0x2965,0x2965,0x2965,0x2165,0x2985,0x2965,0x31a6,0x31c7,0x3186,0x3186,0x2986,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2985,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2985,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a6,0x31a7,0x31a6,0x31a7,0x31a6,0x2965,0x1082,0x0020,0x0841,0x0841,0x10a2,0x2944,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0861,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x0861,0x0020,0x0020,0x18c3,0x2104,0x2124,0x3185,0x31a5,0x2965,0x31a6,0x4a48,0x5289,0x31a6,0x2925,0x2966,0x2945,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x18e3,0x2145,0x2966,0x31a6,0x39c7,0x4208,0x39e7,0x39e7,0x39a6,0x18e3,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c2,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0020,0x10a2,0x3a08,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a7,0x31a6,0x2965,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x2965,0x31a7,0x3186,0x3186,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2966,0x2965,0x2986,0x29a6,0x31c7,0x31a6,0x2985,0x2985,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x31c6,0x2986,0x2965,0x2965,0x3186,0x2986,0x3186,0x2966,0x2966,0x2986,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x39c7,0x3186,0x2965,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31c7,0x31a6,0x31c7,0x2985,0x3186,0x31a7,0x2966,0x2966,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2945,0x2965,0x3186,0x2945,0x2986,0x2145,0x2145,0x2965,0x2965,0x2145,0x3186,0x3186,0x2945,0x2945,0x31a6,0x2985,0x2144,0x2165,0x2145,0x2124,0x2124,0x2124,0x2965,0x2144,0x1904, +0x2124,0x2124,0x2145,0x2124,0x2124,0x2965,0x2985,0x2965,0x2165,0x2144,0x1904,0x2144,0x2945,0x2145,0x2145,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x3186,0x2965,0x2145,0x2124,0x2145,0x2124,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2965,0x2986,0x2985,0x2185,0x2165,0x2186,0x31c7,0x2986,0x2965,0x2965,0x2945,0x2966,0x2965,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2986,0x2965,0x2966,0x2965,0x31a6,0x39c7,0x2986,0x3186,0x31a7,0x2986,0x2966,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0841,0x18e3,0x10c2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2104,0x2924,0x3186,0x31a5,0x2945,0x3186,0x4a28,0x4a48,0x3186,0x2104,0x20e4,0x2104,0x18e3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1904,0x2104,0x2125,0x2966,0x39e8,0x630b,0x4a27,0x39e7,0x31a6,0x18e3,0x0020,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0881,0x0020,0x10c2,0x31c7,0x2986,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x2965,0x31a7,0x31a6,0x31c6,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2986,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2986,0x2986,0x3186,0x3186,0x2986,0x2966,0x2945,0x2945,0x3186,0x2986,0x3186,0x2986,0x29a6,0x29a6,0x2966,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2965,0x3186,0x3186,0x2965,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x2986,0x2966,0x3186,0x2966,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2945,0x2965,0x2965,0x2945,0x3186,0x31c7,0x2165,0x2986,0x2145,0x2145,0x2966,0x2966,0x3186,0x2965,0x2104,0x2986,0x2145,0x2145,0x2945,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124, +0x2145,0x2124,0x2145,0x2144,0x2145,0x2145,0x2145,0x2165,0x2144,0x2145,0x2165,0x2145,0x2965,0x2965,0x2145,0x2965,0x2144,0x2165,0x2965,0x2165,0x2965,0x2986,0x2945,0x2145,0x2965,0x2145,0x2144,0x2945,0x2945,0x2986,0x2965,0x2945,0x2965,0x2966,0x2985,0x2965,0x2165,0x2165,0x2986,0x31a6,0x2986,0x2965,0x2966,0x2965,0x2966,0x2985,0x2985,0x2986,0x2986,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2965,0x2986,0x2966,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2986,0x29a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x29a6,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18c3,0x0861,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0861,0x20e4,0x10a2,0x1082,0x0841,0x0020,0x1082,0x2104,0x20e4,0x2945,0x39a6,0x3185,0x2965,0x3185,0x4207,0x31a6,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e4,0x18e4,0x2104,0x2945,0x39e8,0x62ea,0x4207,0x39c6,0x3185,0x18e3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18e3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0882,0x0020,0x10a2,0x4208,0x39c7,0x31a7,0x39c7,0x31c6,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x39e7,0x31c7,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x39c6,0x3186,0x31a6,0x39e7,0x31a7,0x31a7,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x3186,0x31a6,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2986,0x29a6,0x2966,0x3186,0x31c7,0x31c7,0x2145,0x31c7,0x31c7,0x2965,0x29a6,0x29a6,0x2966,0x2986,0x31c7,0x2966,0x2966,0x31a6,0x2965,0x2965,0x3186,0x2986,0x2965,0x2965,0x2986,0x2965,0x2144,0x31a6,0x2985,0x2945,0x2945,0x2965,0x31a6,0x2965,0x2986,0x3186,0x39c7,0x3186,0x2986,0x31a6,0x2145,0x2145,0x2985,0x2165,0x2965,0x2945,0x2945,0x2124,0x2965,0x2124,0x2144,0x1924, +0x2144,0x2144,0x2144,0x2144,0x2165,0x2145,0x2124,0x2165,0x2145,0x2144,0x2165,0x2145,0x2945,0x2145,0x2124,0x2145,0x2965,0x2165,0x2165,0x2145,0x2144,0x2145,0x2165,0x2145,0x2145,0x2144,0x2965,0x2945,0x2945,0x2986,0x2986,0x2986,0x2965,0x2966,0x2985,0x2986,0x2965,0x2965,0x2966,0x3186,0x2986,0x2965,0x3186,0x2985,0x31a6,0x2986,0x2165,0x2965,0x2985,0x2986,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x2965,0x2145,0x31a6,0x3186,0x2965,0x2985,0x39e7,0x3186,0x2985,0x31a6,0x2985,0x29a6,0x2965,0x2986,0x3186,0x31c7,0x29a6,0x2986,0x3186,0x2966,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x29a6,0x2986,0x2966,0x3186,0x2966,0x2986,0x31a7,0x31c7,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x0882,0x0040,0x0861,0x0861,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x1082,0x2104,0x10a2,0x0861,0x0020,0x0841,0x18e3,0x2104,0x18e3,0x2965,0x39c6,0x3165,0x2965,0x2965,0x3185,0x2944,0x2104,0x39c6,0x3165,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e4,0x18e4,0x2104,0x2966,0x4249,0x5289,0x41c6,0x39c6,0x2944,0x18c3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18e3,0x1082,0x0020,0x0882,0x4228,0x31c7,0x2986,0x4208,0x31c6,0x2986,0x31c7,0x31a7,0x29a6,0x31c7,0x31c7,0x31a7,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31c7,0x39c7,0x39c7,0x29a6,0x31a6,0x3186,0x3186,0x31a7,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x2986,0x31a6,0x2985,0x2986,0x31c7,0x39e7,0x31c7,0x31a7,0x3186,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x3186,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x2986,0x2966,0x31a6,0x3186,0x2986,0x2986,0x2966,0x2145,0x2965,0x2965,0x2945,0x2986,0x2986,0x2965,0x2945,0x2985,0x2985,0x2144,0x2986,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2144,0x2945,0x2965,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145, +0x2144,0x2144,0x2124,0x2145,0x2145,0x2144,0x2145,0x2145,0x2145,0x2144,0x2124,0x2965,0x2124,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2165,0x2145,0x2144,0x2965,0x2965,0x2965,0x2165,0x2965,0x2945,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2986,0x2145,0x2965,0x2986,0x2986,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x3186,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2985,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x31c6,0x31a6,0x31a6,0x2985,0x2986,0x31c6,0x29a6,0x2965,0x3186,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x29a6,0x0882,0x0040,0x0861,0x10a2,0x10a2,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x10a3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2104,0x18e3,0x2124,0x2985,0x2965,0x2945,0x2965,0x2945,0x2124,0x18e3,0x4a47,0x3185,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e4,0x2124,0x3186,0x4228,0x4a69,0x41e7,0x31a6,0x20e3,0x18c3,0x1082,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x10a2,0x0861,0x0861,0x31c6,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x29a6,0x39e7,0x31a7,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x39c7,0x39e8,0x3186,0x39e7,0x39c7,0x2986,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x2965,0x31a7,0x3186,0x3186,0x39c7,0x39e7,0x31c7,0x31a7,0x2986,0x29a6,0x31a6,0x31c6,0x31c6,0x2986,0x31a7,0x31a7,0x39c7,0x2966,0x3186,0x3186,0x3a07,0x31e7,0x31c7,0x31a6,0x2966,0x31a7,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x31a7,0x2986,0x2986,0x2966,0x2125,0x2966,0x2986,0x2965,0x2965,0x2986,0x2145,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2165,0x2145,0x3186,0x31a7,0x2945,0x2965,0x2986,0x2985,0x2945,0x2965,0x2144,0x2986,0x2145,0x2124,0x2145,0x2145,0x2144,0x2965, +0x2145,0x2124,0x2124,0x2145,0x2945,0x2945,0x2124,0x2145,0x2965,0x2965,0x2945,0x2144,0x2965,0x2985,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2966,0x2966,0x2965,0x2145,0x2145,0x2985,0x2986,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c6,0x3186,0x2986,0x2985,0x2965,0x3186,0x3186,0x2986,0x2986,0x2145,0x2145,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2966,0x2986,0x3186,0x31a7,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c7,0x2986,0x31a6,0x10a2,0x0040,0x0861,0x18c3,0x18c3,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x18c2,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2944,0x2104,0x18e3,0x2104,0x2944,0x2945,0x2944,0x2964,0x2944,0x2104,0x2103,0x4227,0x2123,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x3186,0x39c7,0x4a48,0x39e7,0x2965,0x10a2,0x18c3,0x18a2,0x0020,0x0020,0x0841,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x39e7,0x39e8,0x31a6,0x39e8,0x31c7,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31c7,0x31a7,0x4228,0x31c6,0x3186,0x31c7,0x31c7,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2966,0x3186,0x31a6,0x39c7,0x31c7,0x31c7,0x31c7,0x31c7,0x2986,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x3186,0x2986,0x31a6,0x39e8,0x31a6,0x2985,0x31c6,0x2965,0x4228,0x39c7,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x3186,0x2965,0x2145,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2966,0x3186,0x2986,0x2945,0x2144,0x2965,0x2945,0x2965,0x2145,0x2165,0x2986,0x2945,0x2145,0x2144,0x2965,0x2945, +0x1904,0x2144,0x2124,0x2145,0x2945,0x2945,0x2144,0x2145,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2144,0x2965,0x2986,0x2986,0x2966,0x2966,0x3186,0x2965,0x2965,0x2966,0x3186,0x39e7,0x2986,0x2985,0x2986,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2145,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x29a6,0x31e7,0x2986,0x31a6,0x31c6,0x31a6,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2985,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a7,0x31a7,0x31a6,0x31c7,0x29a6,0x29a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x3186,0x10a2,0x0841,0x10a2,0x18c3,0x18e4,0x29c7,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e4,0x2104,0x10a2,0x0861,0x0020,0x0861,0x2945,0x2104,0x18e3,0x2104,0x2944,0x2944,0x2124,0x2944,0x2944,0x2103,0x2104,0x39c6,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1081,0x10a2,0x18c3,0x1082,0x18e3,0x3186,0x3185,0x18c3,0x2124,0x2124,0x3185,0x2923,0x18c3,0x2104,0x2124,0x2945,0x3186,0x39c7,0x4207,0x3186,0x2104,0x10a2,0x18c3,0x18c3,0x0841,0x0020,0x0020,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a3,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18c3,0x18e3,0x2103,0x18e3,0x1082,0x0861,0x39c7,0x39c7,0x3186,0x39c7,0x3186,0x31a7,0x39a7,0x39a7,0x3186,0x3186,0x39a7,0x4208,0x31a6,0x2985,0x2986,0x29a7,0x31c7,0x2986,0x29a7,0x3186,0x39a7,0x3186,0x2966,0x31a7,0x31a6,0x3186,0x2986,0x3186,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2986,0x39c7,0x31a7,0x31a7,0x31a7,0x31a7,0x2966,0x31a7,0x2965,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x39c7,0x31a6,0x31c7,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2165,0x2986,0x2986,0x2986,0x2145,0x31c6,0x4228,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2165,0x2124,0x2965,0x2144,0x2145,0x2124,0x2965,0x2965, +0x2144,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2144,0x2144,0x2965,0x2145,0x2145,0x2145,0x2965,0x2966,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2985,0x2985,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x3186,0x2986,0x2986,0x2966,0x31e7,0x39e7,0x39e7,0x2965,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x39c7,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x3186,0x29a6,0x31a6,0x2965,0x2985,0x29a6,0x2985,0x31a6,0x2986,0x29a7,0x29a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x31a7,0x31c7,0x31a6,0x1082,0x0861,0x10a2,0x18e3,0x10c2,0x21a5,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0020,0x18e4,0x2104,0x1082,0x0841,0x0841,0x0861,0x2965,0x2104,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2924,0x2924,0x18e3,0x2104,0x3185,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x18c3,0x2124,0x10a2,0x2104,0x4207,0x4a27,0x2924,0x2944,0x2124,0x39a5,0x2923,0x18c3,0x2104,0x2125,0x2965,0x3186,0x39c6,0x39a6,0x2945,0x18e3,0x1082,0x18c3,0x18e3,0x0841,0x0020,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a2,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x20e3,0x1904,0x10a2,0x0861,0x31c7,0x4208,0x31a7,0x31a7,0x4208,0x31a7,0x31a7,0x39e8,0x39e8,0x39e8,0x31a7,0x39e8,0x31a6,0x31a7,0x31a7,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x39c7,0x2986,0x2986,0x31a7,0x31a7,0x2966,0x3186,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x39a7,0x31a6,0x31c7,0x2986,0x29a6,0x31a7,0x39e7,0x31a6,0x31a6,0x2965,0x31c7,0x31e7,0x31e7,0x39e7,0x31a6,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x3187,0x2986,0x2946,0x31c7,0x2966,0x2966,0x3186,0x31c6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x31c7,0x31a6,0x2945,0x31c6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x2945,0x31a6,0x39c7,0x2966,0x3186,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2145,0x2985,0x2986,0x2144,0x2124,0x1904,0x2965,0x2144, +0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2145,0x2145,0x2945,0x2145,0x2165,0x2165,0x2144,0x2144,0x2145,0x2144,0x2144,0x2986,0x2985,0x29a6,0x2165,0x2145,0x2965,0x2965,0x3186,0x2986,0x2965,0x2986,0x2985,0x2145,0x2945,0x2966,0x2966,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2986,0x2165,0x2145,0x2986,0x2986,0x2986,0x29a6,0x2966,0x2985,0x31a6,0x3a07,0x2986,0x2985,0x31a6,0x31a6,0x2165,0x31a6,0x31a7,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x29a6,0x29a6,0x2165,0x2965,0x2986,0x29a6,0x29a6,0x2165,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31e7,0x10c3,0x0041,0x10c2,0x18e3,0x18c3,0x2985,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2104,0x1082,0x0841,0x0841,0x0861,0x2945,0x2104,0x18e3,0x18e3,0x2124,0x2104,0x2103,0x2104,0x2124,0x18c3,0x2103,0x2944,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2124,0x18a2,0x18a3,0x2104,0x2944,0x18e3,0x18c3,0x18e3,0x2965,0x18e2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x31a6,0x2944,0x2104,0x18e3,0x1082,0x18e4,0x2104,0x0841,0x0841,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18c3,0x18c3,0x20e4,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2104,0x10a2,0x0881,0x39e7,0x39e7,0x31e7,0x31a7,0x39e8,0x2986,0x2986,0x31c7,0x39e8,0x3a08,0x2986,0x3186,0x3186,0x31a7,0x39c7,0x31c7,0x31a6,0x2986,0x29a6,0x29a6,0x31c6,0x31a6,0x31c7,0x31c7,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x3a08,0x31c7,0x3186,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x2986,0x2986,0x31a6,0x39e8,0x2986,0x3186,0x31c7,0x31e7,0x31a6,0x2965,0x3186,0x31a6,0x31a7,0x2986,0x2986,0x2985,0x29a6,0x31c6,0x39e7,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2965,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x2945,0x2145,0x29a6,0x2985,0x2986,0x3186,0x2124,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2986,0x2965,0x2145,0x2145,0x2144, +0x2945,0x2144,0x2144,0x2144,0x2125,0x2966,0x2965,0x2125,0x2145,0x2145,0x2945,0x2986,0x2965,0x2985,0x2145,0x2165,0x2165,0x2144,0x2144,0x2965,0x2165,0x2985,0x2985,0x2144,0x2145,0x2945,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x3186,0x2986,0x2986,0x31a6,0x3165,0x3165,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x29a6,0x2966,0x2986,0x31c7,0x2186,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2985,0x2985,0x2986,0x2966,0x2965,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x3186,0x2986,0x2985,0x2985,0x2986,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31c7,0x29a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2986,0x29a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x3207,0x10c3,0x0882,0x18c3,0x2104,0x18e4,0x29a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2124,0x1082,0x0861,0x0841,0x0841,0x2945,0x2124,0x18e3,0x18c3,0x2103,0x18e3,0x18e3,0x20e3,0x2104,0x18c3,0x20e3,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x2124,0x10a2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x2965,0x18e3,0x20e3,0x18e3,0x1082,0x2104,0x2124,0x0841,0x0041,0x0841,0x1082,0x18e4,0x10a3,0x0020,0x0041,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2124,0x1081,0x10a2,0x4208,0x31c7,0x4228,0x31a7,0x2987,0x31c7,0x31c7,0x31a7,0x29a6,0x31a6,0x31a7,0x3186,0x3186,0x31a7,0x31e7,0x31a7,0x31a7,0x31a6,0x31c7,0x31a6,0x31a6,0x39c7,0x31a6,0x2986,0x29a6,0x31a6,0x31a7,0x39c7,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x31a6,0x3a08,0x39c7,0x39c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31a7,0x31a7,0x3186,0x31a6,0x31c7,0x31a6,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x29a6,0x31a6,0x2986,0x2966,0x2966,0x3186,0x39c7,0x31a6,0x2986,0x2985,0x31a6,0x3186,0x31a6,0x31a7,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2966,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2985,0x31a6,0x3186,0x2965,0x2965,0x29a6,0x31e7,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x31c7,0x31a6,0x2124,0x2124, +0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2124,0x2165,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2985,0x3186,0x3186,0x2966,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2966,0x2966,0x2966,0x2986,0x2965,0x2985,0x3186,0x3186,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2985,0x31a6,0x2986,0x2965,0x2945,0x3186,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x39e7,0x3186,0x2985,0x3186,0x3186,0x2986,0x2985,0x31a6,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x3186,0x31a7,0x39e8,0x39e8,0x31c7,0x29a6,0x0861,0x1904,0x2924,0x2944,0x18e3,0x21a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e3,0x2945,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2945,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e3,0x18c2,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2965,0x2124,0x18c3,0x20e4,0x18c3,0x10a2,0x2145,0x2124,0x0841,0x0840,0x0841,0x1082,0x2104,0x10a2,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x18c3,0x18e3,0x2104,0x2965,0x18e3,0x1082,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e8,0x39c8,0x31a7,0x31a7,0x2986,0x39e7,0x31e7,0x3a08,0x39e7,0x31c7,0x29a6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2145,0x31a6,0x31c7,0x2986,0x3186,0x39c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a7,0x39c7,0x31c7,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31c7,0x31a7,0x31a6,0x39e7,0x4228,0x39c7,0x31a6,0x31c7,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31c7,0x3186,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2965,0x3166,0x3186,0x2966,0x31a6,0x3186,0x2965,0x3186,0x3186,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x31a6,0x2965,0x2965,0x2945,0x2965,0x2965,0x31a7,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2144,0x2965,0x2985,0x2986,0x2145,0x31a6,0x2986,0x3186,0x2124, +0x2124,0x2124,0x2145,0x2144,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2165,0x2165,0x2965,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2986,0x2966,0x2966,0x31a6,0x31c6,0x2986,0x2986,0x3186,0x31c6,0x2965,0x2965,0x2986,0x2985,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x2986,0x2965,0x39e7,0x2985,0x2945,0x2965,0x2986,0x29a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31c6,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31a6,0x10c2,0x2124,0x2965,0x3165,0x2965,0x10e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2945,0x18c3,0x0861,0x0841,0x0020,0x2104,0x2945,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x2124,0x18e3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x2124,0x18e3,0x18c3,0x2104,0x18a2,0x18c3,0x2965,0x2103,0x0820,0x0020,0x0841,0x10a2,0x2124,0x1082,0x0020,0x0841,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c2,0x18c2,0x18e3,0x2104,0x39c7,0x2104,0x1082,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e8,0x31c8,0x3a08,0x31c7,0x39e7,0x31e7,0x31a6,0x29a6,0x31a7,0x31a7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31c7,0x31a7,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x4208,0x39c7,0x31a6,0x31a6,0x39c7,0x31a6,0x31c7,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31a7,0x31a6,0x3186,0x39e7,0x31a6,0x2965,0x39e7,0x31a6,0x39c7,0x3186,0x31a6,0x29a6,0x2986,0x31a6,0x2986,0x31c7,0x31c6,0x31a6,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2965,0x3186,0x2966,0x3186,0x31a6,0x2986,0x2985,0x2985,0x2966,0x2945,0x2965,0x2966,0x2965,0x2986,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x3186,0x2985,0x2965,0x2145,0x2145,0x2145,0x2145,0x2985, +0x2125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2945,0x2986,0x2965,0x2945,0x2945,0x3186,0x2965,0x2145,0x2124,0x2965,0x2965,0x2985,0x2965,0x2986,0x2165,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2966,0x2966,0x2966,0x2985,0x29a6,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31a6,0x3186,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2985,0x31c7,0x31a6,0x2965,0x2965,0x31a6,0x29a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x29a6,0x31c7,0x31a6,0x2966,0x3186,0x31a7,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x3187,0x3186,0x3186,0x31a7,0x31a6,0x3186,0x31a7,0x39c7,0x4208,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x18e3,0x1904,0x18e3,0x2145,0x2104,0x18a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x1082,0x2945,0x18e3,0x0861,0x0841,0x0020,0x10a3,0x2965,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x10a2,0x2124,0x2965,0x18c2,0x0020,0x0020,0x0841,0x18c3,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2103,0x31a6,0x1904,0x10a2,0x4228,0x3a07,0x3a08,0x39e8,0x31c7,0x31c6,0x3a07,0x31a7,0x31a7,0x39c8,0x39e8,0x4249,0x31c7,0x31a7,0x39e7,0x39e7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x39e7,0x39c7,0x2986,0x3186,0x31c7,0x39e7,0x3186,0x39e8,0x3a08,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x2985,0x31a6,0x39e7,0x39c7,0x39c7,0x31a6,0x31c7,0x31a6,0x2966,0x2966,0x2966,0x2966,0x31c7,0x31a6,0x31a6,0x31e7,0x31a6,0x2965,0x2986,0x2966,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x3186,0x2945,0x31a6,0x31c7,0x31a6,0x3186,0x2986,0x2945,0x2965,0x39c7,0x31a6,0x31a6,0x2986,0x2965,0x31a6,0x2965,0x31c7,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31c7,0x2145,0x31a6,0x31c6,0x2965,0x2945,0x2986,0x2985,0x2965,0x2144,0x2145,0x2124,0x31a6, +0x2124,0x2145,0x2145,0x2145,0x2145,0x2145,0x2966,0x2966,0x2945,0x2945,0x2985,0x3186,0x2945,0x2144,0x2945,0x3186,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2165,0x2145,0x2165,0x2966,0x2966,0x31a6,0x3186,0x2966,0x2946,0x2966,0x3186,0x2965,0x2985,0x29a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2965,0x31a6,0x31c6,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x31c6,0x39e7,0x31a6,0x2986,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x29a6,0x2986,0x2966,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a7,0x3186,0x3186,0x39e8,0x39c7,0x31a6,0x31a7,0x39c7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x4208,0x39e8,0x10c3,0x18c3,0x10c3,0x2124,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x0841,0x2945,0x2124,0x1082,0x0841,0x0020,0x0861,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x18a2,0x2103,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1081,0x18c3,0x18c3,0x18c3,0x20e4,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x2986,0x2965,0x1061,0x0020,0x0841,0x0861,0x2104,0x2104,0x0841,0x0020,0x0841,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x18e3,0x10a2,0x0882,0x39e7,0x39e7,0x39c7,0x31c7,0x31a6,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x3a08,0x39e7,0x31c7,0x39c7,0x39c6,0x3185,0x31a6,0x39e7,0x31a6,0x31c7,0x31a6,0x31c7,0x39c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a7,0x39c7,0x31c7,0x3186,0x3186,0x3186,0x39e7,0x2986,0x31a6,0x31c7,0x31a6,0x31c6,0x31a6,0x39e7,0x31c7,0x31c7,0x31c7,0x3186,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x31a7,0x31a7,0x31a6,0x31c7,0x31e7,0x31c7,0x3a08,0x3186,0x31a6,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31a6,0x3a08,0x2986,0x2965,0x3186,0x2986,0x2986,0x3186,0x2986,0x31a6,0x2986,0x3186,0x2986,0x31c7,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2124,0x2124,0x3186,0x31a6,0x2965,0x2965,0x2145,0x3186,0x3186, +0x2945,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2965,0x2945,0x2965,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2145,0x2945,0x2145,0x2965,0x2986,0x2145,0x2946,0x2966,0x3186,0x3186,0x2965,0x2165,0x2965,0x2986,0x2985,0x2985,0x2985,0x2965,0x3186,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x2986,0x2986,0x39e7,0x31a6,0x3186,0x31a6,0x31c6,0x3186,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x3186,0x31c7,0x29a6,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x2986,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a6,0x29a6,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a6,0x31c7,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x2124,0x0041,0x10a2,0x18c3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x0020,0x0020,0x2104,0x2965,0x10a2,0x0841,0x0841,0x0841,0x2104,0x2965,0x2124,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x0861,0x0861,0x0861,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1081,0x1081,0x1081,0x1081,0x1082,0x10a2,0x18c3,0x1082,0x1081,0x10a2,0x18c2,0x18c3,0x20e3,0x2104,0x18c3,0x18e3,0x18a2,0x2104,0x31a6,0x2124,0x0841,0x0020,0x0841,0x10a2,0x2945,0x18e3,0x0821,0x0841,0x0841,0x0861,0x1061,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x20e4,0x20e3,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x0881,0x0040,0x2124,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x39e7,0x31a6,0x39e7,0x4228,0x31a6,0x31c7,0x31c7,0x39c7,0x39c7,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x31c6,0x3a07,0x31c7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x3186,0x3186,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x31c7,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x4208,0x31c7,0x39c7,0x39e8,0x31c7,0x31a7,0x31c7,0x31c7,0x29a6,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x2986,0x31c7,0x39e7,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x2985,0x2986,0x2966,0x39e7,0x31a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2145,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2145,0x2945,0x2985,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145, +0x2124,0x2124,0x2165,0x2165,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2165,0x2165,0x2965,0x2966,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2965,0x2965,0x2145,0x2966,0x2986,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2985,0x2965,0x31a6,0x2986,0x2986,0x2985,0x2985,0x2986,0x29a6,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31c7,0x31a6,0x29a6,0x29a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x29a6,0x31a7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x31a6,0x39c7,0x31c7,0x39e7,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c7,0x31a7,0x39a7,0x31a7,0x31a7,0x31a7,0x39e7,0x31e6,0x3a07,0x3a07,0x31c7,0x3a28,0x31c7,0x10a2,0x0020,0x0020,0x0841,0x0841,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x0841,0x0020,0x18c3,0x2985,0x18e3,0x0861,0x0841,0x0020,0x10a2,0x2945,0x2965,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1081,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1082,0x1082,0x18c2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x18c2,0x18c3,0x10a2,0x3186,0x3186,0x18a2,0x0020,0x0841,0x0841,0x18e3,0x2966,0x10a2,0x0841,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x0881,0x2104,0x31a6,0x3a07,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x3a28,0x3a08,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x31c7,0x31a6,0x39c7,0x3a08,0x3186,0x39e8,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x31c6,0x31c7,0x31a6,0x2986,0x29a6,0x2965,0x2986,0x39e7,0x3186,0x4228,0x39c7,0x31a6,0x31a7,0x31a7,0x29a6,0x29a6,0x31c7,0x2986,0x31a6,0x31c7,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x2986,0x39c7,0x3186,0x2966,0x31a7,0x3186,0x31a6,0x31c6,0x2965,0x31c7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x39c7,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2986,0x2985,0x2145,0x2965, +0x2986,0x2986,0x2124,0x2145,0x2965,0x3186,0x2965,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2945,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x3186,0x2985,0x3186,0x31a7,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x2985,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31c6,0x31c6,0x31c6,0x31c6,0x29a6,0x31a6,0x31c7,0x31a6,0x31c7,0x3186,0x31a6,0x31a6,0x31c6,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x31c7,0x31a7,0x31c7,0x31c6,0x31e7,0x31c7,0x31c7,0x31a6,0x31a7,0x39c7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x31c7,0x31a6,0x2965,0x2925,0x2125,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x0861,0x1082,0x0861,0x0020,0x0861,0x2965,0x2945,0x1082,0x0841,0x0020,0x0841,0x2104,0x3186,0x2144,0x18a3,0x18c3,0x18c2,0x1082,0x1081,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x18a2,0x18a2,0x18c3,0x18c3,0x20e3,0x18e3,0x1082,0x2945,0x39e7,0x2944,0x0841,0x0020,0x0841,0x1082,0x2945,0x2945,0x0861,0x0020,0x0861,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x31c6,0x39e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e7,0x39c8,0x39e8,0x4229,0x39e8,0x31e7,0x3a08,0x39e8,0x31c7,0x39e7,0x3a07,0x31a6,0x3a08,0x3a08,0x31c7,0x31c7,0x2986,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x3186,0x31a7,0x31c7,0x31c7,0x3186,0x31a7,0x39e7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x39e7,0x31a6,0x3a08,0x2986,0x3a08,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x31a6,0x29a6,0x2986,0x2966,0x39e8,0x31a7,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x31e7,0x2965,0x31a6,0x2965,0x31c7,0x39e7,0x31a6,0x3186,0x2986,0x31a6,0x39e8,0x39e7,0x2986,0x31c7,0x31c7,0x3186,0x2966,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x3186,0x31a6,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2965,0x2145,0x31a6,0x3207,0x31c7,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2165,0x2965, +0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2965,0x2165,0x2145,0x2965,0x3186,0x2986,0x2965,0x2966,0x2986,0x2145,0x2965,0x31a6,0x2985,0x31c7,0x2985,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31c6,0x2986,0x31a6,0x2985,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31c7,0x31e7,0x31c7,0x2986,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x31a6,0x31a6,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c7,0x39e8,0x31a7,0x2986,0x3186,0x31c6,0x39e7,0x39e7,0x31a7,0x39c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c6,0x29a6,0x31a7,0x31c7,0x31a6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x31c6,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31c7,0x39e7,0x3a08,0x31e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0020,0x2104,0x3186,0x18e3,0x0861,0x0841,0x0021,0x10a2,0x2945,0x2985,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c2,0x0861,0x1082,0x10a2,0x18a2,0x18c3,0x18c3,0x2103,0x18c3,0x18e4,0x4208,0x31a6,0x18c2,0x0020,0x0841,0x0861,0x18e3,0x3186,0x18e4,0x0020,0x0841,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x31c7,0x39e8,0x3a08,0x39e8,0x39e8,0x31e8,0x3a08,0x39c7,0x31c7,0x4208,0x39e7,0x31e6,0x31c6,0x3a08,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x31c6,0x31c7,0x31c7,0x2986,0x31a6,0x3a08,0x39e8,0x3187,0x2986,0x2986,0x31a6,0x2985,0x31c6,0x31a6,0x2986,0x31a6,0x2986,0x39e7,0x39e7,0x2986,0x39e7,0x31a6,0x31c7,0x31a6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x29a6,0x31a7,0x39e8,0x39c7,0x3186,0x39e8,0x3a08,0x31c7,0x31c6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x39c7,0x31a6,0x31a6,0x2965,0x39c7,0x39c7,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3186,0x2986,0x2965,0x2965,0x2986,0x3186,0x2965,0x2124,0x2145,0x2986,0x29a6,0x39e7,0x31a6,0x31a6,0x2945,0x2125,0x2945,0x2986,0x2145,0x2965,0x2965,0x2124,0x2965,0x2145,0x2145, +0x2145,0x2945,0x2985,0x3186,0x2965,0x2145,0x2145,0x2144,0x2145,0x2165,0x2145,0x2165,0x2966,0x2165,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2986,0x3186,0x2966,0x2965,0x2986,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6,0x31c7,0x3186,0x31a6,0x31c6,0x31a6,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x3186,0x31a6,0x2986,0x3186,0x39c7,0x31a6,0x31a6,0x31c7,0x39c7,0x31c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a6,0x31a6,0x39e7,0x31c7,0x31a7,0x39c7,0x31a6,0x3186,0x31c7,0x39e7,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x39c7,0x39e7,0x31c7,0x39e8,0x39c8,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x3186,0x31a6,0x31e7,0x31c7,0x31a6,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a3,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x0020,0x1082,0x2965,0x2945,0x10a2,0x1082,0x0841,0x0841,0x18e3,0x2965,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x18c3,0x0861,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x31a7,0x39e7,0x2104,0x0841,0x0020,0x0841,0x1082,0x2965,0x3186,0x1082,0x0020,0x0861,0x1082,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18e3,0x18c3,0x20e3,0x2104,0x31c7,0x39e7,0x3a08,0x31c7,0x31c7,0x39e8,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x3a28,0x39e7,0x4228,0x3a07,0x31c7,0x31c7,0x31a7,0x31c7,0x39e7,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x39c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31c7,0x3186,0x39e7,0x31a6,0x2986,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x3186,0x39c7,0x39c7,0x31c7,0x31a7,0x39e7,0x31c7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0x31a6,0x31a7,0x39e8,0x3186,0x2965,0x39c7,0x3a07,0x31a6,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31e7,0x29a6,0x2966,0x3186,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x2945,0x2965,0x39c7,0x3186,0x2124,0x2986,0x3186,0x2965,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965, +0x2945,0x2124,0x2965,0x31a6,0x2985,0x2145,0x2144,0x2945,0x2165,0x2986,0x2966,0x2945,0x2986,0x2165,0x2165,0x2145,0x2966,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2985,0x2986,0x29a6,0x2165,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2986,0x3186,0x2966,0x2965,0x2986,0x2966,0x2986,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x2986,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e8,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31c7,0x31a6,0x31c7,0x31c7,0x31e7,0x39e7,0x31a7,0x31c7,0x3a08,0x39c7,0x39c7,0x31a7,0x3186,0x31c7,0x31c7,0x31c8,0x31c8,0x39e7,0x31e7,0x3187,0x39c7,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31a6,0x31a6,0x2986,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x18e3,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x10a2,0x0841,0x0020,0x20e4,0x3186,0x2104,0x18a3,0x1082,0x0841,0x0861,0x2104,0x2945,0x2124,0x18c3,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x10a2,0x10a2,0x18c3,0x18a2,0x10a2,0x18c3,0x3186,0x3a08,0x2945,0x1081,0x0020,0x0861,0x1082,0x2104,0x31a7,0x2104,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x31a7,0x31e7,0x31e7,0x39e8,0x31a7,0x39e8,0x3a08,0x3a28,0x39e7,0x4228,0x39e7,0x3a08,0x31c7,0x31c7,0x39c8,0x39c7,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x31a7,0x31c7,0x31c7,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x39c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x31a6,0x3186,0x31a6,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x31a6,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x2986,0x31a6,0x31a7,0x31a7,0x4208,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a6,0x2985,0x31c7,0x3186,0x3186,0x3186,0x2965,0x2985,0x31a6,0x29a6,0x2986,0x2985,0x2945,0x31a6,0x2965,0x2945,0x3186,0x39c7,0x2945,0x2966,0x2945,0x31a7,0x39c7,0x2966,0x2965,0x2945,0x2965,0x2965,0x2986,0x2986,0x2124,0x2945,0x2966,0x2945, +0x2124,0x2945,0x2985,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2966,0x2945,0x2965,0x2965,0x2966,0x2965,0x2965,0x2986,0x2966,0x2986,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2945,0x2965,0x31a6,0x31c7,0x2965,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31c7,0x39c7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2986,0x2986,0x39c7,0x31c7,0x3186,0x2986,0x31c7,0x29a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x31c7,0x31c7,0x39e8,0x31c8,0x39e8,0x39e7,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x31c7,0x39e8,0x31c8,0x31a7,0x31a7,0x39e8,0x39a7,0x31c7,0x31a6,0x31a6,0x39e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x2104,0x18e3,0x1082,0x10a2,0x10a2,0x0020,0x0862,0x2925,0x2966,0x2104,0x18c3,0x1082,0x0841,0x1062,0x2104,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2965,0x39a7,0x2945,0x1082,0x0841,0x1082,0x18a3,0x2104,0x31a6,0x2965,0x0862,0x0020,0x0861,0x1082,0x1082,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x2104,0x20e4,0x2125,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x39e7,0x31c7,0x31e7,0x3a08,0x31c7,0x39e8,0x39e8,0x3a08,0x3a08,0x39e7,0x31c7,0x3a28,0x31e7,0x31c7,0x31c7,0x39e8,0x31c7,0x29a7,0x31c7,0x39e8,0x31c7,0x3186,0x31c7,0x31a6,0x31c7,0x39e8,0x39e7,0x3186,0x31a6,0x31a7,0x31e7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x31c7,0x31c7,0x31a6,0x31a6,0x39e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31c7,0x31c7,0x39c7,0x31c7,0x3186,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x2966,0x2965,0x31c7,0x39e7,0x2945,0x2986,0x4208,0x39c7,0x31c6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2986,0x3186,0x2966,0x2965,0x2965,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x3186,0x3186,0x3186,0x2966,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x31a7, +0x2945,0x2965,0x2965,0x2985,0x2985,0x2145,0x2145,0x2144,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2965,0x2986,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2985,0x2985,0x2986,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x29a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x31a6,0x31c6,0x29a6,0x2986,0x2986,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x31c6,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x31e7,0x31e7,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x31c7,0x29c6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x31c7,0x39e7,0x3a07,0x3a08,0x39c7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2124,0x18c3,0x10a3,0x18c3,0x18c3,0x10a2,0x18e4,0x2945,0x10a2,0x1082,0x18c3,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2104,0x18c3,0x1082,0x0841,0x1082,0x18e3,0x2944,0x2945,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x2965,0x3186,0x2124,0x1082,0x0841,0x1082,0x18e3,0x2104,0x31a6,0x39a7,0x18c3,0x0020,0x0841,0x1082,0x1082,0x1082,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x20e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3a08,0x31c7,0x31e7,0x31c7,0x39e7,0x4208,0x39c7,0x31a6,0x39e7,0x3a07,0x39e7,0x3207,0x31e7,0x31e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x39c7,0x2986,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a7,0x31e7,0x31e7,0x29a6,0x31a6,0x31c7,0x31c7,0x2985,0x31c6,0x31a6,0x31c6,0x31e7,0x31c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31a7,0x2966,0x31a6,0x39e7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31a6,0x3186,0x31a6,0x29a6,0x2986,0x2965,0x29a6,0x31a6,0x31c6,0x39c7,0x2986,0x3186,0x31c7,0x2986,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31c7,0x29a6,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x2986,0x29a6,0x2965,0x2145,0x2945,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x2945,0x2965, +0x2945,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2986,0x2986,0x31c7,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2985,0x2986,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2165,0x29a6,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31c6,0x31c7,0x31c6,0x31e7,0x31c6,0x31c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x31c6,0x29a6,0x31c7,0x31e7,0x31a6,0x31a7,0x31c7,0x31a7,0x39a7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x3a08,0x39c7,0x31c7,0x31c7,0x31c6,0x3a07,0x39e7,0x31e7,0x3a08,0x3a08,0x39e8,0x39e8,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a28,0x3a08,0x39e7,0x3a08,0x3a28,0x3a28,0x3a28,0x3a08,0x31c7,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x10a3,0x18c3,0x18c3,0x10a2,0x18c3,0x2966,0x2945,0x1082,0x18c2,0x10a2,0x0841,0x0841,0x18e3,0x2966,0x2945,0x20e3,0x18c3,0x10a2,0x0861,0x1082,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x18c2,0x18c3,0x18e4,0x2125,0x2965,0x2965,0x2124,0x1082,0x0861,0x1082,0x18e3,0x2104,0x3186,0x39c7,0x2924,0x0861,0x0841,0x1061,0x1082,0x1082,0x18e3,0x2125,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2925,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x3a08,0x3a08,0x39e8,0x39e7,0x4208,0x4208,0x39e8,0x39c7,0x4208,0x4228,0x4228,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x4a6a,0x4229,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x39e7,0x3a08,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x39e8,0x39e7,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x31e7,0x31c7,0x31a6,0x31c7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a7,0x39e7,0x4208,0x39e7,0x31c7,0x39e7,0x31c7,0x31c7,0x31a6,0x31a7,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x31c7,0x31a6,0x4228,0x39c7,0x31a7,0x3186,0x39e7,0x29a6,0x2985,0x31a6,0x31a6,0x39c7,0x3186,0x2945,0x2966,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x2145,0x31a7,0x31a6,0x2986,0x2966,0x2945,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2124,0x2124,0x2145,0x3186,0x2925,0x2966,0x31a6,0x31a6,0x2986,0x31a6,0x3186,0x2945,0x2125, +0x3186,0x3186,0x2945,0x2124,0x2945,0x2945,0x3166,0x2965,0x3186,0x2986,0x2986,0x2986,0x2986,0x3186,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c6,0x31a6,0x31c7,0x29a6,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x3186,0x2986,0x2986,0x3186,0x39c7,0x3186,0x3186,0x2986,0x2986,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2986,0x31a7,0x2966,0x2986,0x2946,0x2986,0x2986,0x2966,0x2966,0x3186,0x3186,0x3186,0x3166,0x3167,0x3167,0x31a7,0x2966,0x2966,0x3187,0x3166,0x3187,0x3187,0x2945,0x3166,0x3166,0x3187,0x3166,0x3186,0x3187,0x2966,0x3187,0x2946,0x2946,0x2966,0x2946,0x2966,0x39e8,0x39c8,0x2966,0x2946,0x3146,0x3966,0x3126,0x2926,0x2946,0x2966,0x2946,0x2906,0x2926,0x20c5,0x2905,0x2905,0x2946,0x2105,0x20e5,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x2124,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x2104,0x39c7,0x18c3,0x1082,0x18a2,0x1082,0x0841,0x0861,0x2104,0x2965,0x2945,0x2103,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e4,0x2104,0x2945,0x2965,0x2945,0x2103,0x10a2,0x1062,0x10a2,0x18e3,0x2104,0x3186,0x39e7,0x2965,0x1082,0x0861,0x0861,0x10a2,0x1082,0x10a2,0x2966,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2125,0x2945,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x20e4,0x2105,0x2966,0x20c4,0x2105,0x2926,0x2105,0x2946,0x2946,0x3166,0x3187,0x2947,0x3167,0x39a7,0x31c7,0x2987,0x31c7,0x39e8,0x3187,0x2966,0x31a7,0x3187,0x2986,0x31c7,0x31a7,0x3186,0x39a6,0x3186,0x39e8,0x31a7,0x31a7,0x3186,0x2966,0x3166,0x3186,0x3186,0x2966,0x2966,0x31a7,0x39c7,0x31a7,0x39c7,0x3187,0x31a7,0x31a7,0x39a7,0x39a7,0x39a7,0x31a7,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x39c7,0x39c8,0x39c7,0x31c7,0x39c8,0x39e8,0x31c7,0x31a7,0x31a7,0x39a7,0x39c7,0x39c7,0x39c7,0x39a7,0x4a6a,0x3a08,0x39e8,0x31a6,0x39c7,0x39c7,0x39e7,0x39a6,0x39a6,0x39c7,0x39e8,0x39e7,0x39e8,0x4228,0x4228,0x4208,0x41e8,0x41e7,0x41e7,0x39e7,0x41e8,0x4208,0x3a07,0x4208,0x4249,0x4228,0x4208,0x39e7,0x4208,0x39e7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39c7, +0x3186,0x3186,0x2945,0x2945,0x2985,0x2945,0x3165,0x3165,0x3166,0x2945,0x2945,0x3166,0x2965,0x3166,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39a6,0x39a6,0x31a6,0x3186,0x3186,0x3166,0x3186,0x3186,0x31a6,0x39c6,0x31a6,0x31a7,0x3186,0x3187,0x39a7,0x39a7,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x39c7,0x39c7,0x31a7,0x39a7,0x39a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x41e7,0x4207,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4a29,0x4a49,0x528a,0x528a,0x4a6a,0x526a,0x528b,0x528a,0x528a,0x528a,0x526a,0x52ab,0x5aab,0x52ab,0x5aab,0x5acb,0x5acb,0x5acb,0x5acc,0x5aec,0x630d,0x630d,0x632d,0x632d,0x5b0c,0x5b0d,0x5b0c,0x632d,0x632d,0x632d,0x636e,0x634e,0x634e,0x634e,0x632e,0x6b8e,0x6b8e,0x738f,0x6b8f,0x73b0,0x6b6e,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2966,0x2985,0x10a2,0x10a2,0x18c3,0x1082,0x0841,0x1082,0x2124,0x2965,0x2124,0x20e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2925,0x2945,0x2945,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x3186,0x39e8,0x3186,0x10a2,0x0841,0x1081,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x2965,0x2945,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2965,0x94b3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8472,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x8472,0x7c32,0x7c31,0x8452,0x8451,0x8c72,0x8451,0x8431,0x8431,0x8451,0x8c92,0x8c93,0x8472,0x8c92,0x8c72,0x8452,0x8472,0x8452,0x7c11,0x7c51,0x7c51,0x7c31,0x8451,0x7c31,0x8471,0x8471,0x8451,0x8c92,0x8cb3,0x8c92,0x8c92,0x8451,0x8451,0x8431,0x8451,0x8431,0x7bf0,0x7c10,0x7c10,0x8451,0x7c51,0x73ef,0x8451,0x8431,0x7c30,0x7c30,0x73ef,0x6baf,0x73cf,0x7c10,0x7bf0,0x7c10,0x7c10,0x6baf,0x6baf,0x73af,0x6b8e,0x73cf,0x73ef,0x6baf,0x6bae,0x7c0f,0x7c0f,0x73cf,0x73af,0x73cf,0x7bef,0x73ef,0x7c10,0x73ef,0x73ef,0x73ef,0x7bf0,0x7bef,0x6bae,0x6b8e,0x6baf,0x6b8e,0x6b6e,0x73d0,0x73cf,0x634d,0x636d,0x634d,0x634c,0x5b2c,0x632c,0x634d,0x632d,0x632c,0x5b0c,0x5b4d,0x634d,0x5b2c,0x5b0c,0x630c,0x5acb,0x5acb,0x5b0c,0x5aeb, +0x4a69,0x5289,0x5aca,0x5aca,0x52aa,0x528a,0x5acb,0x5aeb,0x630c,0x632c,0x630c,0x632c,0x6b4d,0x632c,0x630c,0x632c,0x634c,0x634c,0x632c,0x630c,0x6b4d,0x6b4d,0x634c,0x634d,0x632d,0x6b4d,0x6b6d,0x6b4d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x8430,0x8451,0x8451,0x7c10,0x7bef,0x6bae,0x6b8e,0x73ae,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6d,0x6b6d,0x6b8e,0x738e,0x73ae,0x7bf0,0x7bf0,0x7c10,0x8410,0x8430,0x8450,0x8410,0x7c10,0x7c10,0x7c30,0x7c10,0x7c10,0x7c10,0x7bf0,0x7c10,0x8450,0x8451,0x8451,0x8cb2,0x94b3,0x8c92,0x8c92,0x8cb3,0x8cb3,0x94f4,0x9d34,0x9d34,0x9d54,0xa575,0xa555,0x9d34,0x9d34,0x9d14,0x94f3,0x9d14,0x9d14,0xa555,0xb5d7,0xa576,0xad97,0xadb7,0xadd8,0xadf8,0xa596,0xadb6,0xa5b6,0xa576,0xadf8,0xadd7,0xadd7,0xa5d7,0xadd8,0xadd8,0xadd8,0xb618,0xb638,0xb618,0xb5f8,0xb619,0xadd7,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18e3,0x2124,0x2945,0x18e3,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x3186,0x2124,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x1082,0x2124,0x2945,0x2124,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2965,0x2945,0x2924,0x2104,0x2104,0x2104,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2965,0x2965,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x39c7,0x3186,0x18c3,0x0841,0x0861,0x10a2,0x20e3,0x18c3,0x2945,0x39e8,0x2945,0x18e4,0x18e3,0x18c3,0x2104,0x2965,0x3186,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x3186,0xadf8,0xb619,0xb619,0xb639,0xb618,0xadd7,0xadb7,0xadd7,0xadd8,0xadd8,0xa576,0x9535,0x8cf4,0x8d14,0x9515,0x9535,0x9515,0x9514,0x94f4,0x9514,0x94f4,0xa596,0xa597,0x9d35,0x9d56,0x9d35,0x94f4,0x94f4,0x9515,0x8cd4,0x8cb3,0x8cd3,0x8cd3,0x8cf4,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x8492,0x8cd3,0x8cb2,0x8472,0x8cd3,0x94d3,0x8452,0x7c31,0x7c31,0x7431,0x8472,0x94f4,0x8cb3,0x8cd3,0x8cd3,0x8492,0x7c51,0x73ef,0x73ef,0x7c31,0x8472,0x7c31,0x73f0,0x73d0,0x6bd0,0x6bcf,0x73ef,0x73f0,0x73f0,0x6bcf,0x6baf,0x73d0,0x7c31,0x7c51,0x7410,0x7c10,0x73f0,0x73cf,0x73f0,0x73ef,0x7410,0x73f0,0x73f0,0x73d0,0x73cf,0x6b8f,0x6bcf,0x6b8e,0x638e,0x8431,0x6baf,0x5b2d,0x5b0d,0x5b2c,0x636d,0x636d,0x5b4d,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52cb,0x5b2c,0x5b2d,0x5b0c,0x5aed,0x5aec,0x5aec,0x52cb,0x4acb,0x52eb, +0x630c,0x5aeb,0x630c,0x6b4c,0x630c,0x630b,0x6b2c,0x6b4d,0x7bef,0x73ce,0x6b8d,0x73cf,0x7bef,0x73cf,0x6bae,0x6bae,0x73ef,0x6bce,0x6b8e,0x6b8e,0x73cf,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x73af,0x73cf,0x7bf0,0x7c10,0x7c0f,0x7bef,0x7bf0,0x7c10,0x73cf,0x73cf,0x73cf,0x7c10,0x8451,0x8471,0x8cd3,0x8471,0x7c51,0x7410,0x6baf,0x73af,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x7c10,0x7c11,0x7c11,0x7c32,0x8452,0x8452,0x8451,0x8452,0x8452,0x8451,0x7c11,0x7c11,0x8432,0x8472,0x8452,0x7c11,0x7c11,0x7c31,0x8452,0x8452,0x8c92,0x94d4,0x8cd3,0x8472,0x8cb3,0x8cd4,0x94f4,0x9d14,0x9d55,0xa576,0xa597,0xadd7,0x9d56,0x9515,0x9d35,0x9d15,0x9d35,0x9d35,0xad97,0xbe19,0xa577,0xadb7,0xb5f8,0xadb7,0xa597,0x9d76,0xad97,0xadd8,0x9d56,0xa597,0xad97,0xa597,0xa597,0xadb8,0xadd8,0xbe39,0xb619,0xb5f9,0xb5f9,0xadd8,0xb5f8,0xadd8,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a3,0x18e3,0x2104,0x2966,0x2924,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x10a2,0x2104,0x2945,0x2124,0x18e4,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x2104,0x2965,0x3186,0x3185,0x3186,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x2924,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2966,0x31a6,0x2965,0x18c2,0x0841,0x0861,0x1082,0x18e3,0x18e3,0x2125,0x4208,0x31a7,0x2124,0x1904,0x18e3,0x18e3,0x2125,0x3186,0x2965,0x2124,0x2104,0x2104,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d77,0xadd9,0xa5b8,0xa598,0xa597,0x9d35,0xa576,0xa597,0xa556,0xadb7,0xb5f8,0x9d55,0x8493,0x8cb3,0x9515,0x9515,0x84b3,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x9d35,0x9d56,0x9d36,0xa577,0xa556,0x9d15,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8c93,0x8492,0x8c93,0x8473,0x8c93,0x94d4,0x8cb3,0x8c93,0x8493,0x7411,0x8472,0x8cb3,0x8c72,0x8c93,0x8cb3,0x8452,0x7c31,0x73f1,0x7c11,0x7c11,0x8492,0x8cb3,0x8c92,0x8472,0x7c52,0x7411,0x73f0,0x7c11,0x7410,0x7c31,0x73f1,0x73d0,0x6bd0,0x73f1,0x73f0,0x6baf,0x73cf,0x6baf,0x638f,0x6baf,0x6bd0,0x7c11,0x7c10,0x73f0,0x7c10,0x7bf0,0x73af,0x73cf,0x7c10,0x8c72,0x7c10,0x73af,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73af,0x8431,0x73ef,0x636e,0x636e,0x634d,0x5b2d,0x632d,0x634e,0x634e,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x5aec,0x5aec,0x5aed,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x52cb, +0x630c,0x630c,0x6b4d,0x632c,0x5aeb,0x62ec,0x6b2d,0x632c,0x73ce,0x73ae,0x738e,0x738e,0x73af,0x738e,0x6b6d,0x738e,0x73cf,0x73af,0x6b8e,0x73ae,0x73cf,0x73af,0x738e,0x738e,0x738e,0x6b8e,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x73cf,0x73af,0x738f,0x6b8e,0x73af,0x73cf,0x73cf,0x8451,0x8c72,0x8c72,0x8451,0x7bf0,0x6bae,0x73ae,0x73ae,0x6b6e,0x632d,0x6b6e,0x73af,0x7c10,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7bf0,0x7c11,0x7c11,0x8431,0x8431,0x8432,0x8431,0x7c31,0x7c11,0x7c31,0x8451,0x7c11,0x8431,0x7c31,0x7c31,0x8451,0x8472,0x8472,0x8472,0x8cd3,0x94d4,0x94d4,0x94f4,0x8cb3,0x94d4,0x94d4,0x9cf4,0xa556,0xa556,0xad97,0xa576,0x9d35,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xadb7,0xa597,0xb5d8,0xadd8,0xa556,0xa556,0xad77,0xadb7,0xa597,0xa597,0xa597,0xadb7,0xadd8,0xadd8,0xadd8,0xbe19,0xc67a,0xce9a,0xce9b,0xcebb,0xc67b,0xbe19,0xb5d8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2125,0x2965,0x2104,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x2104,0x2124,0x10a2,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2124,0x2124,0x18e4,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x2945,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x3186,0x3185,0x3186,0x3185,0x3185,0x3185,0x3165,0x2944,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2124,0x2965,0x3186,0x2945,0x10a2,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x2104,0x39c7,0x39c7,0x2925,0x2104,0x18e4,0x2104,0x2104,0x2966,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadd8,0xadd8,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xa597,0xad97,0x94f4,0x8493,0x9535,0x94f5,0x9515,0x94f4,0x9d35,0x94f4,0x94f4,0x8cd4,0x9d35,0x9d15,0x94d4,0xa576,0x9d35,0x9d35,0x9d35,0x94f4,0x9d15,0x9d55,0x9515,0x8cb3,0x8cb3,0x8cb3,0x94d4,0x94f4,0x8cb3,0x94d4,0x8cd4,0x8493,0x8452,0x8c93,0x8cb3,0x8cb3,0x9514,0x7c31,0x7c31,0x8451,0x8451,0x8472,0x7c31,0x7c11,0x7c31,0x7c72,0x7c52,0x7c52,0x7c11,0x73f0,0x73f0,0x73f0,0x73f0,0x7411,0x7410,0x7411,0x7c11,0x6bcf,0x6bcf,0x6bcf,0x6baf,0x6bae,0x6bae,0x73f0,0x7410,0x7430,0x7c10,0x8431,0x6b8f,0x6baf,0x73f0,0x7c30,0x7c10,0x73cf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x8431,0x73af,0x636e,0x6b6f,0x6b6e,0x634d,0x5b0d,0x5b0d,0x5b2d,0x5b0d,0x5b2d,0x636d,0x636e,0x634d,0x5b0c,0x52ab,0x52cb,0x5aeb,0x5b0b,0x632c,0x52cb,0x52aa,0x5aeb,0x5aec, +0x634d,0x738e,0x6b8d,0x632c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x6b4d,0x738e,0x7baf,0x738e,0x736e,0x6b6e,0x738f,0x73b0,0x73cf,0x7bd0,0x7bcf,0x8430,0x8451,0x7c10,0x7bcf,0x738f,0x738e,0x73af,0x7bf0,0x73cf,0x6bae,0x6baf,0x73ef,0x6baf,0x6b8f,0x73d0,0x8411,0x8451,0x8451,0x8c71,0x8c72,0x8451,0x8c72,0x8430,0x7bef,0x73ef,0x73af,0x6b6e,0x636e,0x636e,0x73d0,0x6baf,0x6baf,0x6baf,0x73cf,0x73f0,0x7bf0,0x7c11,0x7bf0,0x7c11,0x8432,0x8452,0x7c31,0x7c10,0x7c31,0x8451,0x8451,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8472,0x8452,0x8431,0x8c72,0x8452,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x9d35,0x9d35,0x9d35,0xa576,0xa556,0xad76,0xa576,0xa576,0x9d56,0x9d35,0x9d36,0xa576,0xad97,0xadd8,0xad97,0xa556,0xa576,0xa597,0xadd8,0xadd7,0xa576,0xad97,0xa5b7,0xa5b7,0xadd8,0xadd8,0xb5f9,0xc65a,0xc67a,0xcebb,0xd6fb,0xd6fb,0xd6dc,0xc67a,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2945,0x2965,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2124,0x2924,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2945,0x2965,0x2965,0x2124,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x18a2,0x18e3,0x3186,0x31a6,0x2945,0x2124,0x2104,0x20e4,0x2104,0x2945,0x31a6,0x2965,0x2124,0x2124,0x20e3,0x2104,0x2104,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadf8,0xadd8,0xa577,0x9d76,0x9d56,0x9d36,0xa576,0xa5b7,0x9515,0x94f4,0x8cf4,0x9d36,0x8cb4,0x8cb4,0x9d56,0xadb7,0x94f4,0x9d36,0x9d15,0x9d35,0x8cb3,0x9d15,0x94f4,0x94d4,0x8cd4,0x9d15,0x9d15,0x94f4,0x9d35,0x9d55,0x9d15,0x94f4,0x8cd3,0x94f4,0x9514,0x9d35,0x94f5,0x9d15,0x8cd4,0x8cb3,0x8c93,0x8c93,0x8cb3,0x94f4,0x8c93,0x8cb3,0x8472,0x8c92,0x8c92,0x8451,0x7c31,0x7c31,0x7c52,0x8493,0x8cb3,0x7c31,0x6bcf,0x8493,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x73f0,0x6bd0,0x6baf,0x6baf,0x6baf,0x73af,0x73ef,0x7410,0x73f0,0x73ef,0x7c50,0x7c30,0x73f0,0x6baf,0x73cf,0x73f0,0x7c10,0x73cf,0x6baf,0x6b8e,0x73af,0x8c92,0x7bf0,0x632d,0x6b8e,0x6b8e,0x634e,0x5b0d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x634d,0x632d,0x5b0c,0x5aec,0x52cb,0x52ab,0x52aa,0x52eb,0x6bae,0x5aeb,0x52ab,0x5aec,0x630c, +0x6b4d,0x73ae,0x738e,0x630c,0x632c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x738f,0x6baf,0x73af,0x8411,0x8451,0x94d2,0x8471,0x7c10,0x7bf0,0x6b8e,0x6b8e,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73cf,0x73af,0x738e,0x8431,0x8c92,0x8451,0x8451,0x8c72,0x8472,0x8451,0x8471,0x8470,0x7c10,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x6baf,0x73b0,0x73d0,0x73d0,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x8431,0x8431,0x8431,0x8431,0x8431,0x8451,0x8451,0x8431,0x8431,0x7c11,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x8452,0x8c72,0x8c93,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x9d35,0xa596,0xa556,0x9d35,0x9d56,0xa576,0xa556,0x9d56,0x9d35,0x9d35,0xa556,0xa576,0xa576,0xa576,0x9d56,0x9d56,0xa576,0xad97,0xadb7,0xad97,0xa556,0xadb7,0xa597,0xa597,0xadd8,0xb5d8,0xbe5a,0xc67b,0xc65a,0xce9b,0xd6dc,0xc67a,0xd6db,0xdf1c,0xbe39,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x2945,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18a2,0x18c2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x2124,0x2124,0x2104,0x18e4,0x20e3,0x18e3,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2124,0x2945,0x2945,0x2124,0x2103,0x18a2,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x18c3,0x2945,0x3166,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x39a7,0x31a6,0x2924,0x2124,0x2104,0x18e3,0x2104,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xadd8,0xadf9,0xadd8,0xa597,0x9d56,0x9536,0x9515,0x9d16,0x9515,0x9d56,0xa597,0x9d35,0x8cf4,0x9d56,0x9515,0x8cf4,0xadb7,0xadb7,0x9cf4,0x9d15,0x8cd3,0x8cb3,0x8cf4,0xa597,0x8cb3,0x8493,0x8cb3,0x9514,0x9514,0x9514,0x9515,0x9515,0x9515,0x9535,0x9515,0x9d35,0x9515,0x9d15,0x9d35,0x9d15,0x8cb3,0x8cb4,0x94f4,0x94d4,0x94d4,0x9d15,0x9d15,0x9d15,0x94d4,0x8452,0x8452,0x8472,0x8452,0x8c93,0x8472,0x8cb3,0x8cb3,0x8432,0x73f0,0x73f0,0x73f0,0x6bcf,0x6baf,0x6bd0,0x73f0,0x7410,0x73f0,0x6baf,0x6bcf,0x73d0,0x7c10,0x7c10,0x73ef,0x73cf,0x7c11,0x8431,0x73f0,0x73f0,0x6baf,0x6baf,0x73d0,0x73f0,0x7bf0,0x73cf,0x73cf,0x8c51,0x7c11,0x73af,0x6b6e,0x6b6e,0x73af,0x6b6e,0x634d,0x634d,0x5b2c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x73cf,0x6b6d,0x52ab,0x630c,0x5acb, +0x632c,0x6b4c,0x6b4d,0x630c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x634d,0x6b6e,0x738e,0x738e,0x6baf,0x73af,0x7bd0,0x8410,0x8c91,0x73ef,0x73af,0x738f,0x6b8e,0x6b8e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x8c72,0x8c72,0x8471,0x8451,0x8451,0x8471,0x8471,0x8451,0x7c0f,0x7bef,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73d0,0x73f0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c31,0x8431,0x8472,0x8451,0x8451,0x8451,0x8431,0x7c31,0x7c31,0x7c31,0x7411,0x7c11,0x8452,0x8452,0x8472,0x8c72,0x8c93,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x9515,0x9d35,0x94f5,0x9d36,0x9d56,0xa556,0xad97,0x9d36,0x9d56,0xa556,0x9d56,0x9d56,0xa576,0xad97,0x9d56,0x9d35,0xa576,0xa556,0xa556,0xa576,0xa597,0xadd8,0xa597,0xa597,0xbdf9,0xbe3a,0xb639,0xc65b,0xcebb,0xc67b,0xc65a,0xd6fc,0xdf1c,0xc67a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x2124,0x3186,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x18c2,0x10a2,0x1082,0x1081,0x1081,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2945,0x2944,0x2124,0x20e3,0x10a2,0x10a2,0x18a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x2124,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x3186,0x39c7,0x2945,0x2124,0x2124,0x2104,0x2104,0x1904,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xb619,0xb619,0xa597,0x9d56,0x9515,0x9536,0x94f5,0x9d15,0x8cd4,0x94f5,0xa576,0xa577,0x9535,0x9535,0x9d36,0xa597,0xb619,0xa576,0x9d36,0x94f4,0x8cb3,0x8cb3,0x9d55,0x9d76,0x8473,0x8472,0x8cb3,0x8cb3,0x8492,0x8cb3,0x9515,0x9d15,0x9515,0x9535,0x9515,0x9d35,0xa556,0xa576,0xa576,0xb5b8,0xad97,0x8cd4,0x9d56,0x9d35,0x94d4,0xa535,0x8cb3,0x94d4,0x94f4,0x8cb3,0x8472,0x8472,0x8472,0x94d3,0x8cb3,0x8c93,0x8cd4,0x8452,0x7bf1,0x73d0,0x73d0,0x73f0,0x6bd0,0x7410,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x73d0,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7c11,0x7c11,0x73f0,0x73d0,0x6b8f,0x6baf,0x73d0,0x73d0,0x73cf,0x73ef,0x8471,0x7c31,0x6baf,0x6baf,0x6baf,0x6bae,0x6baf,0x6b8e,0x6bae,0x636d,0x5b4d,0x52ec,0x5b0c,0x5aec,0x52ab,0x52cb,0x5b0c,0x52ec,0x4aab,0x52cb,0x52cb,0x5aeb,0x6b6d,0x73cf,0x52eb,0x5b0c,0x52aa, +0x632c,0x6b2c,0x632c,0x630c,0x5aeb,0x630c,0x630c,0x5b0b,0x634d,0x630c,0x630c,0x632d,0x632c,0x632d,0x6b4d,0x738e,0x6baf,0x7bf0,0x7bf0,0x7bef,0x7c10,0x73ef,0x738e,0x736e,0x738e,0x738e,0x6b6e,0x73af,0x7bcf,0x73cf,0x73ae,0x6b8e,0x73af,0x8431,0x8c92,0x94b3,0x8c92,0x8451,0x8451,0x8c92,0x7c31,0x73f0,0x7c10,0x7c10,0x6baf,0x6b8e,0x6baf,0x73af,0x738f,0x6b8f,0x6b8f,0x73cf,0x73f0,0x7c10,0x73ef,0x7c10,0x7c10,0x73f0,0x8451,0x8452,0x8472,0x8cb3,0x8472,0x8471,0x8451,0x7c10,0x7c10,0x8431,0x7c31,0x7c31,0x8452,0x8432,0x8452,0x8493,0x8492,0x8472,0x8c93,0x8493,0x8493,0x8493,0x7c52,0x7c73,0x8493,0x8cd4,0x9d36,0x9d56,0x9d36,0xb5d8,0xa597,0xa556,0x9d35,0x9d35,0xa556,0xa576,0xa597,0x9d56,0x9d35,0x9d56,0x9d15,0x9515,0xa556,0xb5d7,0xb5d8,0xa577,0xa557,0xb5d8,0xb5f8,0xadb8,0xb5f9,0xc67b,0xc67a,0xc67a,0xd6db,0xd6db,0xc65a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2965,0x2965,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18c2,0x2104,0x2104,0x2924,0x2944,0x2124,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2925,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x18a2,0x18c3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2125,0x3186,0x31a7,0x2965,0x2124,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xadb8,0xadb8,0xa597,0x9d56,0x9d35,0x9d15,0x9d15,0x94f5,0x94d4,0x9515,0x9d35,0xa577,0xa597,0x9d56,0x9d36,0xadb7,0xadb8,0x94f5,0xa577,0x9d56,0x94f4,0x8cd3,0x9d35,0x94d4,0x8452,0x8452,0x8cb3,0x8472,0x8472,0x8472,0x8cf4,0x9514,0x9d15,0x9cf4,0x94f4,0xa556,0xa596,0xa597,0xad97,0xb5f8,0xb5f8,0xa576,0x9515,0x9d15,0x94f4,0x9d14,0x94f4,0x8492,0x8cb3,0x8492,0x8472,0x8cb3,0x8492,0x94f3,0x8cd3,0x8452,0x8cb4,0x8473,0x73d0,0x73f0,0x73f0,0x6bcf,0x6bcf,0x7410,0x73d0,0x73d0,0x73d0,0x6bcf,0x6baf,0x6b8f,0x7c10,0x7c31,0x73cf,0x7bf0,0x73cf,0x7410,0x7410,0x73f0,0x6baf,0x73d0,0x73f0,0x6bae,0x7c10,0x8472,0x73f0,0x73f0,0x73f1,0x6baf,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x5b4d,0x530c,0x5b0c,0x52eb,0x52cb,0x5b0c,0x5b2d,0x52eb,0x4acb,0x52cb,0x52ab,0x52cb,0x6b6d,0x73ae,0x632d,0x52ab,0x52ab, +0x6b4c,0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x62ec,0x5aec,0x5aec,0x632d,0x632c,0x632c,0x6b6d,0x6b4d,0x738f,0x7bf0,0x7bef,0x7c10,0x7bef,0x73ef,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x7bcf,0x7bcf,0x738e,0x6b6e,0x6b6e,0x7bf0,0x94b3,0x9cf4,0x94d3,0x8471,0x8c71,0x8471,0x7c30,0x73cf,0x73af,0x7bf0,0x7c10,0x6baf,0x6baf,0x73af,0x7bf0,0x73af,0x6baf,0x6baf,0x73f0,0x7c10,0x73f0,0x73ef,0x73f0,0x73f0,0x73f0,0x8452,0x8c93,0x7c52,0x8472,0x7c51,0x7c51,0x8451,0x7c51,0x8451,0x7c31,0x7c31,0x8472,0x8c93,0x8452,0x8472,0x84b3,0x7c51,0x7c52,0x8452,0x8452,0x8452,0x8493,0x8473,0x7c52,0x7c52,0x84b3,0x94f5,0x94f5,0x9d36,0xadb7,0xb5f9,0x94d4,0x9d15,0x9d35,0x9d56,0xa556,0x9d35,0xa576,0x9d35,0x9d35,0x9d35,0x9d36,0xa556,0xadb7,0xb5d8,0xad97,0xad77,0xb5d8,0xb5f8,0xb5d8,0xadd8,0xb5f9,0xbe3a,0xc65a,0xc67a,0xc67a,0xbe19,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x3186,0x3166,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18c2,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2925,0x2124,0x2104,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2104,0x2966,0x39c7,0x2966,0x2124,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x3186,0xa597,0x9d76,0x9d56,0xa577,0xa576,0x9515,0x94f5,0x94f4,0x9515,0x94f4,0x94f4,0x9535,0x9d56,0xa5b7,0x9515,0xb5f8,0x9d36,0x8494,0x9d77,0xadb8,0x94f4,0x9d15,0x94d4,0x8c93,0x8c93,0x8472,0x94d4,0x8472,0x7c32,0x8cd4,0x84b3,0x94f4,0x9d15,0x9d35,0xa556,0xad76,0xad96,0xa576,0xad97,0xa597,0xa597,0xadb7,0x9d36,0x9d35,0x9d56,0x94f4,0x8cb3,0x8c92,0x94f4,0x8c93,0x8cb3,0x8cd3,0x8cb3,0x94f3,0x94f4,0x8cb3,0x7c51,0x73f0,0x73f0,0x7411,0x73f0,0x6baf,0x6bcf,0x73f0,0x73d0,0x73d0,0x73af,0x73d0,0x73f0,0x73af,0x7c10,0x8c72,0x7c31,0x7c10,0x7410,0x7c30,0x7c30,0x73f0,0x63ae,0x73ef,0x6bcf,0x6baf,0x7c31,0x7c10,0x73ef,0x7bf0,0x73d0,0x73af,0x6baf,0x636e,0x634d,0x6b8e,0x6b8e,0x636d,0x5b2c,0x5b2c,0x5b2d,0x5b0c,0x530c,0x52eb,0x52cb,0x52cb,0x4a8a,0x52aa,0x52cb,0x5b0c,0x5b0c,0x6b6d,0x6b6d,0x632c,0x6b4d, +0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x62eb,0x62eb,0x632c,0x5b0c,0x5aec,0x630d,0x6b2d,0x6b4d,0x6b4d,0x6b4d,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73ae,0x6b4d,0x6b6e,0x6b8e,0x6b6e,0x738f,0x7bef,0x7bcf,0x738e,0x73af,0x7bf0,0x8c72,0x94b3,0x9cf4,0x94d3,0x8c92,0x8c72,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x73f0,0x73f0,0x73d0,0x7bf0,0x73cf,0x8411,0x73cf,0x73cf,0x73f0,0x73f0,0x7c10,0x73f0,0x73f0,0x73cf,0x73cf,0x7bf0,0x7bf0,0x7c31,0x8472,0x8452,0x8431,0x8431,0x8452,0x8451,0x8451,0x8451,0x8471,0x8472,0x8431,0x8452,0x8472,0x8472,0x7c31,0x7c52,0x8452,0x8452,0x8452,0x8452,0x8493,0x8493,0x8493,0x94f5,0x8cd4,0x94f5,0x9d35,0xa556,0xadd8,0x94f4,0x94f5,0x94f4,0x9d56,0x9d56,0x9d56,0xa556,0x9d56,0x9d15,0xa556,0xa576,0xa576,0xad97,0xadb7,0xad97,0xadd8,0xb5d8,0xb5d8,0xb5f9,0xb5f8,0xadd8,0xb5d9,0xbe3a,0xc67a,0xc65a,0xb5f9,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x2103,0x2925,0x2965,0x2965,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18a2,0x18a2,0x18c3,0x2103,0x2124,0x2945,0x3165,0x31a6,0x31a6,0x31a6,0x31a6,0x3185,0x3185,0x3165,0x2944,0x2924,0x2104,0x18c3,0x18c3,0x18a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2124,0x31a6,0x31a7,0x2124,0x2104,0x2104,0x2124,0x2104,0x20e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d56,0x9d56,0x9515,0x9d16,0x9d36,0x9d15,0x9d35,0x9515,0x9514,0x9514,0x9d35,0x9d56,0x94f5,0xa577,0xa596,0xb5f8,0x8cd4,0x8cd4,0x9535,0xa576,0x9d35,0x9d55,0x8493,0x8cb3,0x8cd4,0x8472,0x8cd3,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x9514,0x9d55,0xa576,0xad97,0xadb7,0xb5d8,0xa576,0xa556,0xa576,0xa597,0xa597,0x9d35,0x9d35,0x94f5,0x94f4,0x94d4,0x9d15,0x94f4,0x8cb3,0x8cb3,0x8492,0x8cb3,0x94f4,0x94d3,0x8472,0x73f0,0x73d0,0x6bd0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73d0,0x6bcf,0x73b0,0x7410,0x7410,0x7c10,0x8451,0x7c51,0x8cb3,0x8c72,0x7c10,0x7c10,0x7c30,0x73f0,0x73f0,0x7410,0x73f0,0x7c31,0x73d0,0x7c31,0x7c31,0x8431,0x7c10,0x73af,0x73cf,0x73cf,0x6bae,0x638e,0x6baf,0x636e,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x634d,0x634d,0x634d,0x5aec,0x5aec,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x634d,0x73ae,0x7c10, +0x5aeb,0x5aeb,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0x632c,0x630c,0x630c,0x630d,0x736e,0x6b2d,0x6b6e,0x738e,0x738e,0x7bf0,0x7bef,0x7c10,0x7c10,0x738e,0x6b4d,0x634d,0x636d,0x73af,0x7bf0,0x73cf,0x73af,0x7bd0,0x8411,0x8452,0x8c72,0x8cb3,0x94f4,0x8472,0x8451,0x7c10,0x73cf,0x73ae,0x6b8e,0x6baf,0x73cf,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x7410,0x7410,0x73f0,0x73cf,0x73cf,0x73cf,0x73cf,0x73d0,0x73d0,0x7bf0,0x8431,0x8452,0x8452,0x8452,0x8452,0x8452,0x8452,0x8472,0x8492,0x8492,0x8452,0x8452,0x8452,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x7c32,0x8493,0x8472,0x8493,0x94f4,0x8cb4,0x94d4,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0xa597,0xad97,0xa576,0xa556,0xa576,0xa556,0xa576,0xadb7,0xa597,0xadb7,0xadd8,0xadd8,0xb5f8,0xadd8,0xadb8,0xadf8,0xadf8,0xadd8,0xadf9,0xadf9,0xb619,0xbe3a,0xadb8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x2124,0x2965,0x3185,0x2965,0x20e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x2104,0x2945,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x20e3,0x20e3,0x18c3,0x10a2,0x18a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2125,0x2965,0x3186,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a3,0x18e3,0x18e3,0x20e3,0x3186,0x94f5,0x94f5,0x9515,0x9516,0x9d56,0x9d56,0x9d36,0x9d35,0x9d35,0xa596,0xa597,0x9d36,0x94f5,0x94f5,0xb618,0xadd7,0x8cf4,0x9535,0x9515,0x9d35,0xb5d8,0x94f4,0x8452,0x8c93,0x8c93,0x7c31,0x8c93,0x94f4,0x8452,0x7c52,0x8492,0x7c52,0x94f4,0x9514,0x9d15,0xad97,0xa576,0xb5f8,0xadb7,0xa556,0xa576,0xa576,0xadb7,0xa576,0x8cb4,0x94f5,0x9d15,0x8cd4,0x8cd4,0x8472,0x7c31,0x8492,0x8472,0x8cb3,0x8cb3,0x8472,0x7c31,0x7c11,0x7c31,0x73cf,0x73cf,0x6baf,0x73ef,0x73f0,0x6baf,0x6b8f,0x6b8f,0x73b0,0x73d0,0x7c10,0x7c31,0x73ef,0x7c10,0x8c92,0x8431,0x7bf0,0x7c10,0x73d0,0x73d0,0x8451,0x8c92,0x6b6e,0x636e,0x6baf,0x7c10,0x7bf0,0x7c10,0x7bf0,0x6baf,0x6baf,0x6baf,0x636e,0x6bae,0x6b8e,0x5b4d,0x5b2d,0x5b2c,0x5b0c,0x632c,0x5b0c,0x6b6e,0x5b2c,0x6b8e,0x636e,0x5b2d,0x5b0d,0x5b0d,0x5aec,0x52ab,0x5aec,0x5b2c, +0x5acb,0x5aeb,0x5b0b,0x5b0b,0x5acb,0x6b2c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x5b0c,0x632d,0x6b4d,0x6b6e,0x6b8e,0x7c10,0x94b2,0x7c10,0x7c30,0x7bef,0x73ae,0x6b4d,0x632d,0x6b4e,0x7bcf,0x73ef,0x73ef,0x7c30,0x7c10,0x7bd0,0x7bd0,0x8472,0x94d3,0x8cb3,0x8451,0x7c10,0x7bf0,0x73ef,0x73cf,0x73af,0x6baf,0x73af,0x6b8e,0x73cf,0x73cf,0x6b8e,0x6b8f,0x73d0,0x73cf,0x73cf,0x6baf,0x6baf,0x6bae,0x6bae,0x73ef,0x73cf,0x7bf0,0x73d0,0x73d0,0x7c10,0x8431,0x7c31,0x8451,0x7c31,0x8472,0x8472,0x8cb3,0x8472,0x8492,0x8cb3,0x8cb3,0x8c93,0x8c72,0x8452,0x8c93,0x8c93,0x8472,0x8452,0x8452,0x8452,0x8432,0x8451,0x94d4,0x8cb4,0x94f4,0x9d15,0x94f5,0x9d35,0xa556,0xa556,0x9d35,0x9d35,0xa597,0xa576,0xa556,0xa576,0x9d56,0x9d56,0xa597,0x9d36,0x9d36,0xa597,0xa597,0xadb7,0xadb7,0xa597,0xadd8,0xb619,0xadf9,0xadf9,0xadf8,0xb619,0xadd8,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18e3,0x2925,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2125,0x2965,0x2965,0x2945,0x2925,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9516,0x8cf5,0x8cf5,0x9d56,0xa5b7,0xa597,0x9535,0x9d55,0x9d56,0xa596,0xa556,0xa576,0x9d36,0x9d35,0xb5f8,0x9d35,0x9515,0x9d76,0x9515,0x9d35,0xadb8,0x94f4,0x8493,0x8c93,0x8493,0x7411,0x8452,0x8cb4,0x8c73,0x8493,0x7c51,0x7c51,0x8cb3,0x9d35,0x9d35,0xa556,0xad96,0xa576,0xadb7,0xa576,0xa576,0xa597,0xadd8,0xa577,0x8cb3,0x9d15,0x9d15,0x8cd3,0x8cd3,0x8472,0x8472,0x8472,0x7c52,0x94f4,0x8493,0x7c52,0x73f0,0x73f1,0x73f0,0x73cf,0x73f0,0x73cf,0x7410,0x73f0,0x73d0,0x73f0,0x7c10,0x73f0,0x73d0,0x73d0,0x7bf0,0x7c31,0x7410,0x7c31,0x7c31,0x7bf0,0x7c30,0x6baf,0x7c31,0x8c92,0x8c72,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x6baf,0x6baf,0x636e,0x636e,0x6b6e,0x636e,0x636e,0x6b8e,0x634d,0x5b0c,0x5b2d,0x634d,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x634d,0x636d,0x636d,0x5b0c,0x5b0c,0x5b0c,0x5b2c, +0x5aeb,0x5acb,0x52ca,0x528a,0x52aa,0x5acb,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x630c,0x630c,0x632c,0x632c,0x6b6e,0x8471,0x8472,0x7c10,0x7bf0,0x73f0,0x73f0,0x634d,0x632d,0x736e,0x7bcf,0x7c10,0x7c30,0x7c10,0x738e,0x6b6e,0x73af,0x8c92,0x8cb3,0x8451,0x8451,0x7c10,0x73ef,0x6b8e,0x6b8e,0x6b6e,0x738f,0x73af,0x6baf,0x73ef,0x73ef,0x73cf,0x6bae,0x6baf,0x6baf,0x6baf,0x6bae,0x73af,0x6b8e,0x6bae,0x6bcf,0x73f0,0x7c11,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73cf,0x73f0,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x8452,0x8cd3,0x9d35,0x9d15,0x94d4,0x8c93,0x8472,0x8452,0x7c31,0x7c31,0x8c93,0x8473,0x8452,0x7c52,0x9d55,0xa576,0x94f4,0x9d15,0x9d15,0xa555,0x9d35,0x9d35,0x9d15,0x9d15,0x9d35,0xa556,0xa576,0xa597,0xa556,0xa576,0xa597,0xa597,0xa576,0x9d76,0x9d76,0xa596,0xa597,0xa576,0xadb8,0xb61a,0xadf9,0xadd8,0xb639,0xb639,0xadf9,0xadd8,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a3,0x18c3,0x18a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0x9d36,0x9515,0x9515,0x9d56,0x9d56,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d36,0xa597,0xa5b7,0xa597,0xadd8,0x9d36,0x9515,0x9d36,0x9515,0x9535,0x9d35,0x8cd4,0x8cb3,0x8493,0x8cd4,0x7c72,0x8493,0x8cd3,0x8c93,0x8473,0x8472,0x7c11,0x8452,0x94f4,0x9d35,0x9d55,0xa596,0x9d55,0xa556,0xadd8,0xa576,0xadd7,0xa5b7,0x9d56,0x8cd4,0x9514,0x9d55,0x8cb3,0x8472,0x8472,0x8c93,0x8472,0x8493,0x8c93,0x7c72,0x7411,0x73f1,0x73f1,0x73d0,0x6baf,0x6baf,0x73d0,0x7411,0x73d0,0x73cf,0x73cf,0x8472,0x7c11,0x73f0,0x6bd0,0x6bf0,0x7411,0x7411,0x6baf,0x6bb0,0x6bcf,0x73cf,0x7c31,0x7c31,0x73d0,0x73f0,0x6b8f,0x6b8e,0x73cf,0x73ef,0x73ef,0x6baf,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x5b4d,0x6b6e,0x7bf0,0x634d,0x52ec,0x5b0d,0x5b2d,0x5b4d,0x530c,0x530c,0x634d,0x73ce,0x73cf,0x634d,0x634e,0x5b0c,0x5b2d, +0x5acb,0x52aa,0x52aa,0x5aaa,0x5acb,0x5acb,0x630c,0x632c,0x632c,0x632c,0x630c,0x62ec,0x632c,0x6b6d,0x7bef,0x8451,0x8c92,0x8451,0x8431,0x7c10,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73cf,0x8410,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x736e,0x8431,0x94b3,0x8451,0x7c31,0x7c30,0x7bf0,0x73af,0x6b6e,0x6b4e,0x6b4e,0x738f,0x73af,0x6baf,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x6bcf,0x73ef,0x6bcf,0x6bcf,0x6bcf,0x73af,0x6baf,0x6bcf,0x73f0,0x73d0,0x7bd0,0x73d0,0x7bf0,0x73f0,0x6baf,0x6baf,0x7c11,0x8452,0x8c93,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x8472,0x8cb3,0x8472,0x8473,0x8472,0x8452,0x8472,0x8cd4,0x8473,0x8473,0x8493,0x8472,0xadd7,0xa576,0x94f4,0x9d35,0x9d35,0x94d3,0x9d15,0xa556,0x9d15,0xa576,0xad97,0xa597,0xadb7,0xa597,0xa556,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0xa576,0xa596,0xad97,0xb5d9,0xb619,0xadf8,0xadf8,0xb5f9,0xadd8,0xadd9,0xa577,0x1082,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x2124,0x2965,0x3186,0x2965,0x2104,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x2124,0x2966,0x2965,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xa597,0x9d56,0x9d36,0x9d15,0x9536,0x9d36,0x9d56,0x9d76,0xa597,0x9d56,0x9d35,0xa577,0xadb7,0xa576,0xadb7,0xadb7,0x9535,0x94f4,0x9d76,0x9d56,0x94f4,0x8cb4,0x8493,0x9535,0x94f4,0x8c93,0x8493,0x9d35,0x8cb3,0x8472,0x8472,0x8452,0x7c11,0x8472,0x9515,0x8cf4,0x8cd4,0x9d15,0x94d4,0xa577,0xadb7,0xadd7,0xa556,0x94f5,0x9514,0x94f4,0x94f4,0x8cb3,0x8493,0x7c31,0x7c52,0x7c52,0x8452,0x7c31,0x7410,0x7411,0x73f1,0x73d0,0x73f0,0x73cf,0x6baf,0x6bcf,0x7410,0x73f0,0x6baf,0x6baf,0x7c10,0x7c11,0x73f0,0x6bcf,0x6bcf,0x6bd0,0x6baf,0x6b8f,0x6b8f,0x6baf,0x8451,0x7c10,0x636e,0x6b8e,0x73d0,0x6baf,0x636e,0x6bae,0x8430,0x8c72,0x7c10,0x73af,0x73d0,0x73f0,0x6baf,0x6b6e,0x6baf,0x6baf,0x634d,0x636e,0x5b2d,0x52ec,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b2d,0x634e,0x634d,0x6b6d,0x73af,0x6b6e,0x632d,0x5b0c,0x5b0c, +0x52ca,0x5acb,0x5acb,0x62cb,0x62eb,0x62eb,0x630c,0x6b2d,0x630c,0x630c,0x632c,0x6b4d,0x6b8e,0x6b6e,0x73cf,0x8c72,0x7c11,0x7c10,0x8430,0x8410,0x7bef,0x73ef,0x73cf,0x73ae,0x73cf,0x7c10,0x738e,0x6b6d,0x73af,0x7bcf,0x7bf0,0x8c92,0x8451,0x6bcf,0x7c10,0x73cf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x73af,0x73ce,0x73cf,0x6b8e,0x6baf,0x73cf,0x73ef,0x73cf,0x6baf,0x6b8e,0x6baf,0x6bcf,0x6baf,0x8431,0x7c31,0x73cf,0x7bf0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x8452,0x8c93,0x8452,0x7c31,0x8452,0x8452,0x8452,0x8472,0x8493,0x8492,0x8452,0x7c32,0x8472,0x8493,0x8493,0x8473,0x8473,0x8473,0x8c93,0xa556,0xb5f8,0x94d4,0x8cb3,0x94d4,0x8cd4,0x9515,0x9d35,0x9d36,0xa576,0xa576,0xad97,0xadb7,0xadb7,0xadb8,0xadd8,0xa597,0x9d56,0x9d56,0xa597,0xadb7,0xb5d8,0xadb7,0xbe19,0xb619,0xb619,0xbe3a,0xb5f9,0xb5f9,0xb5f9,0xa597,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x2965,0x2965,0x2925,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9d56,0x9d56,0x9d56,0x9d35,0x9515,0x9d35,0x9d36,0x9d56,0xadb8,0x9d76,0xa556,0xa577,0xb619,0xa576,0xa576,0xa597,0xa576,0x8cb3,0x9535,0x9d56,0x94d4,0xa556,0x9515,0x9d35,0x9d35,0x94f4,0x8cb3,0x94f4,0x8cd3,0x8cb2,0x8cb3,0x8492,0x8452,0x8452,0x8493,0x8493,0x8cb4,0x9515,0x94d4,0x8cb3,0xad77,0xb5b8,0x9d15,0x9d15,0xa555,0x94f4,0x8451,0x8cb3,0x94f4,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7c11,0x7c31,0x7c10,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x7c10,0x7c11,0x6baf,0x6baf,0x6bd0,0x73d0,0x73f0,0x73f0,0x6baf,0x6bcf,0x6baf,0x6baf,0x6b8e,0x73f0,0x8c92,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x6bcf,0x636e,0x636e,0x73cf,0x7c10,0x7c10,0x73f0,0x73d0,0x7c11,0x73d0,0x6b8f,0x6baf,0x634e,0x6b6e,0x634d,0x5b2c,0x5b2d,0x5b0c,0x52ec,0x5b0c,0x5b0c,0x5b2c,0x634d,0x634d,0x632d,0x632d,0x634d,0x5b2c,0x5b0b,0x5b2c, +0x52ca,0x5acb,0x630c,0x630c,0x62ec,0x630c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x6b4d,0x6b4d,0x632d,0x7bd0,0x8c72,0x7bf0,0x7c10,0x7bf0,0x7bf0,0x7bef,0x73cf,0x6b8e,0x6b8e,0x73af,0x73ef,0x73ae,0x73af,0x7bf0,0x7bf0,0x7c10,0x8451,0x7410,0x6baf,0x6baf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x6baf,0x73cf,0x7c10,0x73f0,0x6baf,0x6baf,0x6baf,0x73cf,0x6bcf,0x8451,0x8451,0x73af,0x73d0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x7c11,0x8431,0x8c92,0x8c93,0x8452,0x7c31,0x7c11,0x8452,0x8472,0x7c52,0x8452,0x8492,0x7c52,0x7c11,0x8452,0x8473,0x8473,0x8493,0x8c93,0x8c93,0x94f4,0x9d15,0xa576,0x9515,0x9514,0x9d35,0x9515,0x9514,0x9d35,0x9d35,0x9d15,0x9d36,0xad97,0xad97,0xadb8,0xa577,0xa577,0x9d36,0x9d15,0x9d56,0xa576,0xad97,0xadb7,0xb5f9,0xbe3a,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xb5f8,0xbe39,0xadb7,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x3186,0x2945,0x2124,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x18a2,0x2104,0x2945,0x3186,0x2945,0x2104,0x2104,0x20e4,0x20e3,0x20e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xa598,0x9d56,0x9d56,0xa576,0xa556,0x9d36,0x9d15,0x9d36,0xa577,0x9d56,0xa576,0xb5f8,0xb639,0xadd8,0xa577,0xa597,0x9d35,0x8493,0xa577,0x9d15,0x8cd4,0x9d15,0x9d15,0x9d15,0x9d56,0x9d35,0x9515,0x94d4,0x8c93,0x7c31,0x8cb3,0x94f4,0x8c72,0x8472,0x7c51,0x8493,0x8cb3,0x94f4,0x9d15,0x94d4,0x94f5,0x9d36,0x94f4,0x94f4,0x9d35,0x8cb3,0x8472,0x8452,0x8452,0x7c31,0x7410,0x7c31,0x8472,0x7c31,0x7c11,0x7c11,0x7410,0x73f0,0x73d0,0x73d0,0x73d0,0x73cf,0x73f0,0x7c11,0x6b8f,0x6bd0,0x6bcf,0x6bf0,0x73f0,0x7bf0,0x73af,0x73cf,0x6bcf,0x6bae,0x6baf,0x7c31,0x8451,0x6b8e,0x6b8e,0x6b8e,0x636e,0x636e,0x6bae,0x636e,0x73cf,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x6b8f,0x73b0,0x6b6f,0x6b6f,0x6b8f,0x5b2d,0x530c,0x6bae,0x5b2c,0x4acb,0x52eb,0x5b4d,0x52ec,0x73ef,0x6b8e,0x5b2c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb, +0x5aaa,0x5acb,0x630c,0x630c,0x632c,0x630c,0x632c,0x632c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x738e,0x8c71,0x7c10,0x73cf,0x6baf,0x73af,0x7bf0,0x7c10,0x73cf,0x6b4d,0x738e,0x7bcf,0x73ef,0x73ef,0x73cf,0x7bef,0x73ef,0x7bf0,0x7c10,0x6bcf,0x6b8e,0x6b8e,0x6b8f,0x738f,0x738f,0x6b8e,0x6bae,0x6baf,0x6baf,0x6bae,0x6b8e,0x6b8e,0x73af,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x7bf0,0x7c31,0x8c72,0x8c92,0x8c72,0x8451,0x7c31,0x8472,0x8472,0x7c52,0x7c31,0x8472,0x8493,0x7c52,0x8452,0x8472,0x8cb3,0x8cb3,0x8493,0x94f4,0x94d4,0x94d4,0x8cb3,0x9515,0xadb7,0xadb7,0x9514,0x9d15,0x94f4,0x94f4,0x8cd4,0x9d15,0xa577,0xadb7,0xadb8,0x9d56,0xa577,0xad97,0x9d15,0x9d36,0xa576,0xa576,0xa576,0xb5f8,0xadb8,0xb5f9,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xbe39,0xb5d8,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x2103,0x3186,0xa577,0x9d56,0x9d76,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xb5d8,0xb5d8,0xadd8,0xadb8,0xa577,0x9535,0x9d35,0xa597,0x8cb3,0x8cd4,0x94d4,0x9d15,0x9d35,0x8cf4,0x8cf4,0x9515,0x8cb4,0x8452,0x8432,0x8472,0x9d14,0x9cf4,0x8492,0x7c31,0x84b3,0x8452,0x8472,0x94f4,0x9515,0x9514,0x9d35,0x9515,0x8cb4,0x8473,0x8493,0x8472,0x7c52,0x7c31,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x7c52,0x7c11,0x7c51,0x7410,0x73d0,0x73d0,0x73d0,0x73f0,0x73f0,0x8471,0x7c51,0x73f0,0x6bd0,0x73f0,0x7411,0x7bf0,0x73af,0x6bcf,0x73d0,0x6bcf,0x73f0,0x8472,0x7c11,0x6baf,0x6b8e,0x6bae,0x6b8e,0x6b6e,0x73af,0x6b8e,0x73ef,0x73ef,0x73cf,0x73cf,0x73f0,0x73cf,0x73cf,0x73af,0x6b6e,0x6b8f,0x634d,0x634d,0x5b0c,0x6b8e,0x632d,0x52ec,0x52cb,0x5b0c,0x634d,0x6b8e,0x634d,0x5aec,0x52cb,0x52cb,0x52cb,0x52eb,0x4acb, +0x5acb,0x630c,0x6b2c,0x632c,0x632c,0x630c,0x5aeb,0x5b0b,0x630c,0x630c,0x5aeb,0x62ec,0x6b0c,0x8430,0x8c91,0x8450,0x73ef,0x634d,0x6b4d,0x738e,0x73cf,0x73af,0x6b8e,0x73af,0x7bcf,0x73ef,0x73cf,0x73cf,0x7bd0,0x73af,0x73cf,0x7bf0,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x738e,0x73af,0x6baf,0x6baf,0x73af,0x73cf,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x6b8e,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7c10,0x6bcf,0x73cf,0x6b8e,0x6baf,0x73ef,0x73cf,0x73cf,0x73cf,0x73f0,0x7c31,0x7c31,0x8472,0x8c92,0x8431,0x8452,0x8472,0x8452,0x7c72,0x7c32,0x8473,0x8493,0x8c93,0x8c93,0x8c93,0x8cd3,0x8cd4,0x8493,0x8cb4,0x94f4,0x8cd4,0x8c93,0x94d4,0x9d35,0xadb7,0xa556,0xa556,0xa577,0xa556,0x9d15,0x9d36,0xb5d8,0xadd8,0xa576,0x9d56,0x9d35,0xa577,0xa556,0x9d36,0xa556,0xadb7,0xadd8,0xb5f9,0xadd8,0xadd9,0xadf9,0xbe3a,0xbe3a,0xc67a,0xc65a,0xb5f9,0x10a2,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x18a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x20e4,0x2924,0x2965,0x2944,0x2124,0x2104,0x2104,0x2104,0x20e4,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e4,0x18e3,0x2104,0x3186,0xadb8,0x9d57,0xa577,0x9d56,0x9d36,0xa576,0xa597,0xa597,0xa597,0xa597,0xadd8,0xad97,0xa577,0x9d56,0x9d76,0xadd8,0xa597,0xa597,0xa576,0x94f4,0x94f4,0x8cb4,0x94d4,0x9514,0x8493,0x8cd4,0x8cf4,0x8cb3,0x8472,0x8cb3,0x8472,0x7c31,0x8c92,0x8cd4,0x7c72,0x7431,0x8473,0x8c93,0x94f4,0x9d55,0x8cf4,0x94f4,0x9d15,0x8cb4,0x8473,0x8cb3,0x8472,0x7c31,0x7c11,0x7c52,0x7c31,0x7410,0x7c31,0x7c32,0x7c52,0x7411,0x8cb3,0xb5d7,0x9d14,0x8c92,0x8472,0x6baf,0x7431,0x8472,0x7c31,0x7410,0x6bcf,0x6baf,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x73f0,0x73cf,0x73f0,0x6baf,0x73d0,0x6baf,0x6b8e,0x6baf,0x638e,0x6baf,0x6b8e,0x6bae,0x6bcf,0x73cf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x6baf,0x73af,0x6b6e,0x5b2d,0x636e,0x636d,0x636e,0x5b0d,0x5aec,0x632d,0x6b6d,0x634d,0x530c,0x530c,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb, +0x5aeb,0x634c,0x6b8d,0x632c,0x634c,0x634c,0x6b4d,0x630c,0x630c,0x5b0b,0x630c,0x630c,0x738e,0x8c92,0x7c30,0x7c0f,0x634d,0x630c,0x632d,0x6b4d,0x73ae,0x7bef,0x7bef,0x7bf0,0x7bf0,0x73af,0x636e,0x73af,0x7bf0,0x6b8f,0x6b6e,0x73ae,0x73ae,0x6b6d,0x632d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x7c10,0x7c10,0x73d0,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x73f0,0x7c31,0x8452,0x8452,0x7c31,0x7c31,0x7c11,0x8452,0x8472,0x8472,0x8452,0x8c93,0x8c92,0x94d3,0x8c93,0x8472,0x8c93,0x8cb3,0x8493,0x8493,0x8cb3,0x8cd4,0x8cb3,0x94b4,0x9d15,0x9d15,0xa556,0xa556,0x9d56,0xa556,0xa597,0xadb7,0xadd8,0xa577,0xa576,0x9515,0x94f5,0xa556,0xa577,0x9d15,0xa556,0xadb8,0xadb8,0xadd8,0xadd8,0xadd9,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xad97,0x10a2,0x1082,0x10a2,0x18c3,0x18a3,0x18c3,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e4,0x2103,0x2104,0x31a6,0xadd8,0x9d36,0x9d56,0x9d76,0xa597,0xadb7,0xad97,0xa5b8,0xa5b8,0x9d56,0x9d56,0x9d56,0x9d56,0xa576,0x9d56,0xad97,0xadb7,0xa556,0xa556,0x9d35,0x9515,0x8cf4,0x8cd4,0x9515,0x8cd4,0x84b3,0x8c93,0x94f4,0x8cb3,0x8cb3,0x8c93,0x8452,0x7c11,0x8472,0x84b3,0x7c51,0x8cb3,0x9d34,0x94d3,0x94f4,0x8c93,0x8cd3,0x9d15,0x8cb3,0x94f4,0x8cb3,0x7c31,0x7411,0x7411,0x7c11,0x7c11,0x7c31,0x7c32,0x7411,0x7c32,0x7c52,0x8452,0x9d14,0x9cf4,0x7c52,0x8472,0x6bd0,0x6bd0,0x7410,0x6bd0,0x6bcf,0x6baf,0x7c11,0x73f0,0x73f0,0x6bef,0x7410,0x7c10,0x6bcf,0x73d0,0x73af,0x73af,0x6b8f,0x6b8e,0x6b8e,0x6baf,0x6b8f,0x636e,0x636e,0x6b6e,0x6baf,0x6baf,0x638e,0x638e,0x6b8e,0x638e,0x638e,0x634e,0x636e,0x6b8e,0x636e,0x634e,0x6bd0,0x73f0,0x6baf,0x634d,0x632d,0x630d,0x5b0c,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb, +0x5aeb,0x6b6d,0x6b6d,0x632c,0x632c,0x632c,0x6b4d,0x632c,0x630c,0x630b,0x630c,0x6b2d,0x8c31,0x94b2,0x7c50,0x73cf,0x632d,0x6b4d,0x738e,0x73ae,0x73cf,0x7bef,0x8450,0x8451,0x73cf,0x6b8e,0x6b8e,0x7bf0,0x8430,0x73ef,0x6b6d,0x6b8e,0x73cf,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x73f0,0x73d0,0x73cf,0x73f0,0x7410,0x73f0,0x73d0,0x73cf,0x73ef,0x7410,0x7c10,0x73f0,0x73d0,0x7bf0,0x73f0,0x7c11,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8451,0x8431,0x8452,0x8472,0x8472,0x8c93,0x94d4,0x9514,0x94f4,0x8c93,0x8cb3,0x94f4,0x8cd4,0x8472,0x7c52,0x8493,0x8cb3,0x8cd4,0x94d4,0x94f5,0x94f5,0x9d15,0xa556,0x9d56,0xa577,0xadb7,0xadb7,0xa597,0xa576,0x9d35,0x9515,0x9515,0x9d35,0xa576,0xa556,0xa597,0xadb7,0xa597,0xadb8,0xadd8,0xa597,0xa5b8,0xadd8,0xadb8,0xadd8,0xb5d8,0xa556,0x10a2,0x1082,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x18a2,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e4,0x2104,0x2945,0x2965,0x2104,0x2124,0x2924,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e4,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x31a6,0xadb8,0x9d36,0x9d56,0xadd8,0xb5d8,0xadd8,0xadb7,0xa597,0xa598,0x9d36,0x8cf4,0x9515,0xa597,0xa577,0x9d35,0x9d36,0xadb7,0x9d36,0x94f5,0x94f4,0x9515,0x94f5,0x8cd4,0x9d15,0x9d36,0x8493,0x8493,0x94d4,0x8cd3,0x8c93,0x8c93,0x8452,0x7c11,0x7c11,0x8c93,0x8cb3,0x8cb3,0x9514,0x9d35,0x8492,0x8cb3,0x8cd3,0x8cd3,0x8472,0x7410,0x7c51,0x7c51,0x7410,0x7410,0x7c51,0x7c31,0x8472,0x8452,0x7411,0x7c31,0x7c52,0x7c11,0x73af,0x73d0,0x73f0,0x7410,0x73f0,0x6bcf,0x7410,0x7411,0x73f0,0x73f0,0x7c52,0x7410,0x7410,0x7410,0x7410,0x73f0,0x73d0,0x6b8f,0x6b6f,0x6b8f,0x636e,0x6b8f,0x6baf,0x636e,0x638e,0x638e,0x6b8e,0x636e,0x6baf,0x6bae,0x636e,0x638e,0x636e,0x6b8e,0x6b8f,0x634e,0x634e,0x6baf,0x73d0,0x636f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x634e,0x632d,0x5b4d,0x5b0c,0x5b2d,0x5b2d,0x5b2c,0x52ec,0x52cb,0x52eb, +0x630c,0x6b6d,0x6b6d,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x736e,0x8c31,0x8c72,0x7c10,0x634d,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x73af,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73af,0x7c10,0x7c10,0x73cf,0x6b8e,0x6b8e,0x73cf,0x636e,0x636e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73cf,0x7bcf,0x73cf,0x73cf,0x73ef,0x6bcf,0x73cf,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x7c10,0x73f0,0x73ef,0x73cf,0x73f0,0x73f0,0x7c11,0x7c11,0x7c10,0x73f0,0x7c51,0x8452,0x8452,0x8452,0x8451,0x8451,0x8451,0x8452,0x8472,0x8452,0x8472,0x8cb3,0x94f3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cb4,0x8c93,0x8493,0x8cb4,0x8cd4,0x94d4,0x94d4,0x94d4,0x94f5,0x9d15,0x9d35,0xa556,0xadb7,0xa576,0xa577,0xadb7,0xa597,0x9d56,0x9d35,0x9515,0x9d56,0x9d56,0xa576,0xb5f8,0xadd7,0xad97,0xb5d8,0xb5f9,0xadd8,0xadd8,0xadb8,0xb5d8,0xb5d8,0xbe18,0xc618,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2945,0x2945,0x2945,0x2104,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x20e3,0x20e3,0x2103,0x2104,0x2124,0x2125,0x2945,0x2124,0x2945,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x31a6,0xa577,0x9d36,0xa576,0xadb7,0xb5f8,0xadf8,0xb639,0xa597,0x9d56,0x94f5,0x9515,0x94f4,0x94f5,0x9d15,0x9d15,0x9d56,0xa576,0x9d35,0x9d36,0x9d15,0x94f4,0x8cb4,0x8472,0x8c93,0x8cb4,0x8493,0x8cd4,0x8c93,0x8cb3,0x8c93,0x8473,0x8472,0x7c11,0x7c11,0x8431,0x8c93,0x8c93,0x8493,0x8493,0x8493,0x84b3,0x8493,0x8472,0x7c31,0x73f0,0x7c31,0x8472,0x7c52,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7bf0,0x7bf0,0x7c31,0x7c11,0x73f1,0x73f1,0x73f1,0x73f0,0x6bcf,0x6b8f,0x6bef,0x7c31,0x73d0,0x73f0,0x73f0,0x73f0,0x7410,0x7411,0x73f0,0x6bd0,0x73f1,0x6b8f,0x636f,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x636e,0x5b6e,0x5b4d,0x636e,0x636e,0x6bcf,0x6bae,0x73ef,0x73f0,0x6b8f,0x6b6e,0x73cf,0x6b6e,0x6baf,0x73ef,0x6baf,0x634e,0x634e,0x636e,0x638e,0x6b8f,0x634e,0x634e,0x5b4e,0x636e,0x5b0d,0x632d,0x5b0d,0x52cb,0x5b0c,0x636e, +0x632d,0x6b6d,0x6b4c,0x6b4c,0x632c,0x630c,0x632c,0x5aec,0x5b0c,0x632c,0x632c,0x7baf,0x8410,0x7bcf,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x634d,0x630d,0x634e,0x6b6e,0x6b8e,0x6bae,0x6b6e,0x6b8e,0x7bf0,0x73ef,0x6bae,0x634d,0x6bae,0x73cf,0x6b6e,0x6b6e,0x6baf,0x6b6d,0x6b8e,0x73cf,0x7c10,0x7bcf,0x73af,0x73cf,0x7c10,0x7bf0,0x73cf,0x6baf,0x6bcf,0x73f0,0x7bf1,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73ef,0x7bf0,0x73cf,0x73f0,0x7bf1,0x8451,0x8c92,0x8452,0x7c31,0x7c31,0x7c31,0x8452,0x8c92,0x8472,0x7c31,0x8472,0x8492,0x8452,0x8472,0x8472,0x8cb3,0x9d35,0x94d3,0x94f4,0x8cb3,0x8c93,0x8c72,0x94b3,0x94d4,0x94f5,0x94f4,0x94d4,0x94d4,0x94f4,0x9d35,0x9d36,0xa556,0xa577,0xa556,0x9d35,0x9d56,0xa596,0xa597,0xa577,0x9d35,0x9d35,0x9d56,0x9d76,0xa576,0xbdf8,0xd6fb,0xce99,0xc638,0xcebb,0xb5f8,0xadd7,0xadb7,0xbe39,0xc659,0xce9a,0xce9a,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2125,0x2144,0x2945,0x2124,0x2124,0x2945,0x2945,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2925,0x2945,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x20e4,0x20e3,0x18c3,0x18c3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2103,0x2103,0x3186,0xad97,0xa576,0xa5b7,0xa597,0xadb7,0xadb7,0xbe79,0xadd7,0x9d35,0x9535,0x9535,0x9535,0x9515,0x9515,0x9d56,0x9d56,0x94f5,0x9d15,0xa577,0x94f4,0x94f4,0x94d4,0x8493,0x7c53,0x8453,0x8452,0x8c93,0x8c93,0x8cb4,0x8cb3,0x8493,0x8472,0x7c52,0x7c52,0x7c52,0x8452,0x8cb3,0x8472,0x8493,0x8cd4,0x8cb3,0x8472,0x7c52,0x7c52,0x7411,0x7c52,0x8472,0x7c32,0x73f1,0x73f1,0x7c11,0x73f0,0x73f0,0x7c11,0x7c11,0x7c31,0x7c11,0x7411,0x73f1,0x73d0,0x6b8f,0x73d0,0x6b8f,0x6baf,0x6bf0,0x6bcf,0x73f0,0x73f0,0x6bf0,0x6bcf,0x7c31,0x7410,0x73f0,0x73f0,0x634e,0x6baf,0x6bd0,0x638f,0x636e,0x636e,0x638e,0x634e,0x636e,0x6b8e,0x6b8e,0x7c10,0x73cf,0x73f0,0x7c10,0x6b8f,0x636e,0x73af,0x634d,0x636e,0x73f0,0x6baf,0x5b4d,0x5b6d,0x5b4d,0x6baf,0x73f0,0x6b8f,0x636e,0x636e,0x636e,0x5b2d,0x634e,0x5b0d,0x52ec,0x52ec,0x52ec, +0x632c,0x634c,0x634c,0x6b6d,0x632c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x738e,0x73af,0x73ae,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x632c,0x630c,0x632d,0x632d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x6b6e,0x6baf,0x6b8e,0x6b8e,0x73cf,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73d0,0x73d0,0x73cf,0x6bae,0x73ef,0x73f0,0x73f0,0x73f0,0x7c10,0x7c30,0x7c10,0x73cf,0x7c10,0x7c10,0x73f0,0x7c11,0x8452,0x94b3,0x94b3,0x8431,0x7c31,0x7c31,0x7c31,0x8472,0x8431,0x8431,0x8c92,0x8472,0x8472,0x8cb3,0x8cb3,0x8cb3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x9cf4,0x9d35,0x9d15,0x8cd4,0x8cd4,0x8cb3,0x94f4,0x9d15,0x9d35,0x9d56,0x9515,0x9d35,0xa555,0x9d35,0xa576,0xa597,0x9d35,0x9515,0x9d15,0xa577,0xa556,0xad97,0xad76,0xc659,0xc679,0xadb6,0xadb7,0xad97,0xadb7,0xb5f8,0xb618,0xadb8,0xad97,0x9d35,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb7,0xa5b7,0xadf8,0xa597,0xadb7,0xa597,0xb5f8,0xadb7,0x9d56,0xa577,0x9d56,0x9d56,0x9536,0x9d56,0xa577,0x9515,0x94f4,0x9d36,0x9d35,0x9515,0x8cf4,0x8493,0x8493,0x8493,0x8473,0x8472,0x8472,0x8452,0x8c93,0x94d4,0x8cb3,0x8493,0x8473,0x7c32,0x8472,0x7c52,0x8472,0x8472,0x8493,0x9515,0x8473,0x7c31,0x7c52,0x7c31,0x8452,0x8472,0x7c32,0x7c32,0x73f0,0x7c11,0x7c31,0x7c11,0x7bf0,0x8431,0x7c11,0x7c11,0x7c11,0x73f1,0x73f0,0x73f0,0x638f,0x6bd0,0x6bd0,0x6b8f,0x6bd0,0x6bcf,0x6baf,0x6bcf,0x6bef,0x6bef,0x6bef,0x73ef,0x6bcf,0x636e,0x638e,0x6bcf,0x636e,0x632e,0x634e,0x636e,0x636e,0x634e,0x6b8f,0x6b8e,0x6baf,0x7c10,0x73cf,0x6baf,0x73f0,0x6baf,0x6b6e,0x634e,0x634e,0x530c,0x6bcf,0x638e,0x530c,0x5b2c,0x5b4d,0x636e,0x636e,0x634e,0x636e,0x636e,0x5b2d,0x5b2e,0x5b4e,0x52ec,0x52cb,0x52cb,0x4a8a, +0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x630c,0x5aeb,0x5aeb,0x630c,0x5aec,0x634d,0x738e,0x738e,0x6b4d,0x6b4d,0x6b6d,0x632d,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x632d,0x634d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x632d,0x6b2d,0x6b4d,0x738e,0x6b8e,0x6b8e,0x73cf,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73ef,0x7c10,0x7c10,0x73f0,0x7c30,0x7c30,0x73ef,0x73cf,0x73f0,0x73f0,0x73af,0x7bd0,0x8451,0x8452,0x8c92,0x94b3,0x7c10,0x7410,0x7c31,0x7c11,0x7c11,0x8431,0x8452,0x8472,0x8472,0x8472,0x8472,0x8cb3,0x8cf3,0x8cd3,0x94f4,0x8cb3,0x94f4,0x9cf4,0x9d15,0x9d15,0x8cb3,0x8cb3,0x8cd4,0x8493,0x8cd4,0x9515,0x94f4,0x8cd4,0x94d4,0x9d35,0xad96,0xad96,0xa576,0x9d36,0x9515,0x94f5,0x9514,0xadb7,0x9d35,0xa576,0xad76,0xa536,0xa597,0xa597,0xadb7,0xadb7,0xadd8,0xbe39,0xb619,0xadf8,0xadd8,0xad97,0x1082,0x1082,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x18e3,0x18e4,0x20e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e4,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x3186,0xadd8,0xadd8,0xa597,0xa597,0xadd8,0xadd8,0xb619,0xb5d8,0xa556,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xadb7,0x9515,0x9d36,0x94f5,0x94d4,0x8cf4,0x9515,0x8cb3,0x8cb4,0x8493,0x8492,0x7c31,0xadb7,0xb5b7,0x8452,0x8cd4,0x94f4,0x8cb4,0x8473,0x8452,0x8472,0x8472,0x7c31,0x8472,0x84b3,0x8493,0x8c93,0x7c32,0x7c52,0x7c52,0x8473,0x8472,0x7c52,0x8452,0x7c11,0x7c11,0x7c31,0x7c31,0x7c11,0x8431,0x7c11,0x7c11,0x7c31,0x7c31,0x7411,0x73f0,0x6bf0,0x73f1,0x6bf0,0x6bcf,0x7410,0x6bf0,0x73d0,0x7410,0x6bcf,0x73ef,0x73ef,0x6bcf,0x6baf,0x636e,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x6b6e,0x6b8e,0x636e,0x638e,0x73ef,0x73cf,0x6baf,0x73f0,0x73af,0x6b8e,0x634e,0x634e,0x5b4e,0x636e,0x6bae,0x6b8e,0x5b2d,0x5b4d,0x5b2c,0x5b2d,0x636e,0x634d,0x5b4d,0x530d,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x52ec,0x4aab, +0x6b6d,0x6b4d,0x5aec,0x5aec,0x5aec,0x5aeb,0x630c,0x630c,0x632c,0x634c,0x630c,0x630c,0x738e,0x6b8e,0x6b6d,0x634d,0x5b2c,0x5b2c,0x5b0c,0x630c,0x5b2c,0x632c,0x632c,0x632d,0x6b6d,0x634d,0x634c,0x632c,0x632c,0x632c,0x634d,0x634d,0x634d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x636e,0x6b6e,0x6b8f,0x6b8e,0x73af,0x73af,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73af,0x73af,0x7bf0,0x73cf,0x6bcf,0x73ef,0x73af,0x7bcf,0x8431,0x7bf0,0x7c10,0x73d0,0x8452,0x8452,0x7c51,0x7410,0x7c11,0x7c31,0x8452,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x94f4,0x9d14,0x9d14,0x9514,0x8cb3,0x8493,0x94d4,0x9d15,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x9535,0x9d55,0x9535,0x9515,0x94f5,0x94f5,0x94f4,0x8cf4,0xa556,0x9d35,0xa556,0xadb7,0xad97,0xad97,0xa577,0xa577,0xadb7,0xb5f8,0xadb7,0xadd8,0xb5f9,0xadb8,0xa577,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x2104,0x18e3,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0xb5f9,0xadd8,0xadb7,0xa597,0xa596,0xa597,0xb5f9,0xb5d8,0xa556,0xadb7,0xa576,0xa576,0xadd8,0xb5f8,0xa597,0xa577,0x9515,0x8493,0x8cb3,0x8cd4,0x94f4,0x94f4,0x84b3,0x8493,0x8473,0x8472,0x8472,0x8cb4,0x8cb3,0x8cb3,0x94f5,0x94f4,0x8452,0x8452,0x7c32,0x7c31,0x7411,0x7c11,0x8472,0x7c52,0x8493,0x8493,0x7c52,0x8452,0x8493,0x8cb3,0x7c51,0x7c52,0x8431,0x7c11,0x8431,0x8431,0x8452,0x7c11,0x7c11,0x73f0,0x7411,0x7c32,0x7c31,0x7c31,0x7411,0x73f1,0x73f0,0x73f0,0x7431,0x7431,0x73f0,0x7410,0x6baf,0x6baf,0x73cf,0x6bcf,0x6baf,0x638e,0x73f0,0x63af,0x636e,0x6baf,0x73d0,0x6baf,0x6b8f,0x636e,0x6b8f,0x6b6e,0x636e,0x73cf,0x73cf,0x6baf,0x73d0,0x6bcf,0x638e,0x636e,0x5b4d,0x5b6e,0x5b4d,0x638e,0x6b8e,0x7bcf,0x6b8e,0x5aec,0x52ec,0x634d,0x5b4d,0x5b4d,0x530c,0x5b2d,0x6b8e,0x632d,0x5b2c,0x530c,0x52ec, +0x6b4d,0x630c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x6b6d,0x73ae,0x634d,0x632c,0x632c,0x634c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632d,0x6b6e,0x634d,0x632c,0x632c,0x632c,0x6b4d,0x6b2d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x634e,0x6b4e,0x634d,0x636e,0x634d,0x6b6e,0x6b8f,0x73af,0x73cf,0x73cf,0x73cf,0x7bef,0x73ef,0x73cf,0x73af,0x73af,0x7bd0,0x7bf0,0x73ef,0x73ef,0x73cf,0x7bf0,0x8451,0x73cf,0x73f0,0x73f0,0x73f0,0x8452,0x8492,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x8452,0x7c32,0x8452,0x8c73,0x8cb3,0x8cb3,0x94d4,0x94f4,0x9515,0x9d15,0x9d35,0x9514,0x8cb3,0x8cd4,0xa576,0xa577,0x8cf4,0x94f4,0x94d4,0x9514,0x94f4,0x8cd4,0x9515,0x9515,0x8d15,0x9515,0x94f5,0x9536,0x94f5,0x94f4,0x9d36,0x9d36,0x9d56,0xadd7,0xb5f8,0xa597,0xa576,0xa556,0xb619,0xb5f8,0xadd8,0xadd8,0xadd8,0xadb8,0xad97,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2104,0x2104,0x2124,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x20e4,0x18c3,0x18e4,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x20e3,0x20e3,0x18c3,0x20e4,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2103,0x31a6,0xbe3a,0xb619,0xb5f9,0xa577,0x9d35,0x9d56,0xa576,0xadd8,0xadd8,0xadb7,0xadb8,0xadd8,0xadd8,0xadb7,0xa577,0xa597,0x8cd4,0x8493,0x8cb3,0x8cb4,0x94d4,0x94d4,0x8cb3,0x8493,0x7c72,0x8452,0x7c11,0x7c32,0x8472,0x8cb3,0x94f4,0x9514,0x8cd4,0x8493,0x8473,0x7c11,0x7410,0x7c31,0x7c31,0x7c31,0x8472,0x8472,0x8472,0x8493,0x8492,0x8cb3,0x8452,0x7c11,0x7c11,0x7c31,0x8451,0x7410,0x8472,0x8472,0x73f0,0x7410,0x6bd0,0x7c31,0x7c31,0x7c31,0x7c11,0x73f0,0x73d0,0x7410,0x7c31,0x7411,0x7c11,0x73f1,0x6b8f,0x6baf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x73f0,0x6baf,0x638e,0x638f,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8e,0x634e,0x636f,0x6bcf,0x6bcf,0x6baf,0x73d0,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530d,0x6b8e,0x6b6e,0x73af,0x7bf0,0x632d,0x5b2c,0x5b0c,0x530c,0x5b2d,0x5b4d,0x634d,0x6b8e,0x6b8e,0x5b2d,0x52ec,0x52cc, +0x634c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x630c,0x6b4d,0x6b6e,0x6b6e,0x630c,0x630c,0x632c,0x5b2c,0x630c,0x630c,0x632c,0x632d,0x630c,0x5b0c,0x632d,0x636d,0x5b2c,0x630c,0x634c,0x632c,0x632d,0x632d,0x5b0c,0x632d,0x6b4d,0x632d,0x6b4e,0x634e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x73cf,0x73cf,0x7bcf,0x73f0,0x73ef,0x7c30,0x7c31,0x73f0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x73f0,0x73cf,0x6baf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73f0,0x7410,0x7c30,0x8451,0x8452,0x8452,0x7c51,0x8451,0x8472,0x8472,0x8c73,0x8c93,0x94d4,0x8cd3,0x94f4,0x94f4,0x9d15,0x9d15,0x9d15,0x9d15,0x8cd4,0x9d35,0xad97,0x9515,0x8cd3,0x94d4,0x8cd4,0x8cd4,0x8cd4,0x94f4,0x9515,0x9515,0x9515,0x9535,0x94f4,0x9515,0x9515,0x9515,0x9d35,0x9d15,0x9d56,0xa576,0xadb7,0xadb7,0x9d56,0xadd8,0xb619,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xb5d8,0x18c3,0x2124,0x31a6,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2124,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2925,0x2945,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2965,0x2104,0x2104,0x2125,0x2124,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2124,0x2125,0x2945,0x2945,0x2965,0x2945,0x3186,0x3165,0x2965,0x2945,0x2945,0x2124,0x2945,0x2945,0x2125,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x3166,0x2104,0x2104,0x31a6,0xb619,0xb5f9,0xbe3a,0xadd8,0x9d36,0x9d76,0xa576,0xb5f8,0xb5f8,0xa597,0xadd8,0xadd8,0xadf8,0xa597,0xa577,0x94d4,0x94f4,0x8cb4,0x8cb4,0x8cb4,0x94f4,0x8cb3,0x8cd4,0x8cd4,0x8473,0x8472,0x7c32,0x7c52,0x8473,0x8493,0x8cd4,0x8cd4,0x8493,0x84b3,0x7c31,0x7c31,0x7c11,0x7411,0x7411,0x7c11,0x7c11,0x8472,0x9d15,0x7c52,0x8472,0x8c93,0x8452,0x7411,0x7c11,0x7c31,0x7c31,0x7c31,0x7c31,0x8472,0x7410,0x73f0,0x73f0,0x7c11,0x73f0,0x73f0,0x7c11,0x73f0,0x6bd0,0x6bd0,0x7411,0x7411,0x7c11,0x73f0,0x73af,0x73f0,0x7c11,0x73cf,0x6b8f,0x73af,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x636e,0x6bcf,0x6baf,0x638e,0x6baf,0x638e,0x638e,0x6baf,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530c,0x636e,0x73cf,0x6b8e,0x73d0,0x636e,0x5b2d,0x5b2d,0x5aeb,0x52eb,0x5b0c,0x634d,0x636e,0x6b6e,0x634e,0x5aec,0x52ab, +0x632c,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aec,0x632d,0x6b6e,0x630c,0x5aec,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632d,0x632d,0x630c,0x5b0c,0x634d,0x636d,0x634d,0x632c,0x632c,0x5b2c,0x5b2c,0x5b2d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8f,0x6b8e,0x6baf,0x73cf,0x73cf,0x73cf,0x73cf,0x73f0,0x7c30,0x7c31,0x7411,0x7c11,0x7c11,0x7c11,0x7c11,0x73f0,0x73d0,0x73d0,0x73cf,0x6baf,0x73cf,0x73ef,0x73cf,0x73ef,0x73ef,0x73f0,0x7410,0x7c10,0x8431,0x8452,0x8cd3,0x8471,0x8451,0x8c93,0x8c73,0x8452,0x8c93,0x9514,0x9514,0x94f4,0xa555,0x9d35,0x9d15,0x9d15,0x9d15,0xa576,0x9d15,0x8cd4,0x8cd4,0x94f4,0x9515,0x94d4,0x8cb4,0x8cd4,0x94d4,0x9d15,0x9d35,0x9514,0x8cf4,0x9515,0x9d35,0x9d56,0x9d56,0x9d56,0xa556,0xad97,0xadd8,0xa597,0xa576,0xa597,0xa597,0xadb7,0xadd8,0xb5f8,0xb619,0xbe5a,0xb5d8,0x4a6a,0x632d,0x738d,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52cb,0x52ab,0x52ab,0x52ab,0x52cb,0x5acb,0x52aa,0x528a,0x526a,0x4a69,0x5269,0x5269,0x526a,0x528a,0x526a,0x528a,0x528a,0x5aaa,0x5aaa,0x528a,0x528a,0x528a,0x528a,0x5aab,0x5269,0x4a69,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a29,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x528a,0x526a,0x528a,0x528a,0x5acb,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4229,0x4229,0x4229,0x4208,0x4229,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x39e8,0x39e7,0x4208,0x4249,0x634d,0x6baf,0xb619,0xb619,0xb63a,0xadd8,0xa597,0xa5b7,0xa597,0xb5f8,0xadd8,0x9d36,0xa577,0xa5b7,0xa597,0xa5b7,0x9d56,0x8cb4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x94f4,0x84d4,0x84d3,0x9515,0x8cb4,0x8c93,0x8493,0x8472,0x8493,0x8cb4,0x8cb4,0x8cb4,0x8493,0x84b3,0x7c52,0x73f0,0x73f0,0x73f0,0x7c11,0x73d0,0x73f0,0x94b3,0x8c72,0x7c11,0x8493,0x8cb4,0x8452,0x7c31,0x7c52,0x7c52,0x8452,0x7c32,0x7411,0x7c11,0x7c11,0x7bf0,0x7c31,0x7c31,0x7411,0x6bd0,0x73f0,0x73f0,0x73d0,0x6bb0,0x6bd0,0x7c31,0x7c11,0x73ef,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x73d0,0x6b8f,0x6b8f,0x73af,0x634e,0x5b4d,0x636e,0x636d,0x6bcf,0x73ef,0x638e,0x638e,0x638e,0x638e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x634e,0x5b2d,0x636d,0x6b8e,0x6bae,0x636e,0x636e,0x5b0c,0x5b2c,0x5aeb,0x5acb,0x52cb,0x5b0c,0x636e,0x52ec,0x5aec,0x5b0c,0x52cb, +0x630c,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aec,0x632d,0x630c,0x62eb,0x630c,0x630c,0x632c,0x5b0c,0x52eb,0x5b0c,0x630c,0x634c,0x634c,0x632c,0x632d,0x634d,0x634d,0x634d,0x632c,0x5b2c,0x632c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x636d,0x6b8e,0x73af,0x6b8f,0x6b8e,0x6baf,0x6baf,0x6baf,0x73af,0x7bd0,0x73d0,0x73f0,0x73d0,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x7c11,0x73f0,0x7410,0x73f0,0x6bcf,0x6baf,0x73cf,0x73cf,0x73cf,0x7bf0,0x73cf,0x73f0,0x73f0,0x7c11,0x8432,0x8452,0x94f4,0x8c93,0x8c93,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x9515,0xa576,0xa596,0x9d35,0x9d15,0x9d56,0xa576,0x9515,0x8cd4,0x8cb3,0x8cb4,0x9515,0x9515,0x94d4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x8cf4,0x9515,0x9d56,0x9d35,0x9d35,0x9d76,0x9d55,0xa577,0xadb8,0xadb8,0xa597,0xa576,0xa577,0xa597,0xadb7,0xb5d8,0xadb7,0xb5f8,0xbe3a,0xbe39,0x52ab,0x8412,0x844f,0x4a89,0x4a49,0x4229,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e7,0x41e7,0x41e7,0x39c7,0x41c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41c7,0x41c7,0x39c7,0x39a7,0x39a7,0x39a6,0x39a7,0x3186,0x3166,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2925,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x3166,0x2966,0x3165,0x3166,0x31a6,0x3166,0x3186,0x3186,0x3186,0x3186,0x39a7,0x39c7,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e7,0x41e8,0x41e7,0x41e7,0x39c7,0x41e7,0x41e7,0x39c7,0x39c7,0x41e8,0x4208,0x41e7,0x4228,0x4207,0x4a28,0x4a28,0x4208,0x41e7,0x39c7,0x39c7,0x41e7,0x52aa,0x9d36,0x9d56,0xa5b8,0xb5f9,0xadb8,0xa577,0xadb8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d56,0x9d77,0xa577,0x9d56,0x9d36,0x94f4,0x9515,0x9535,0x8cb3,0x8cd4,0x9515,0x8cf4,0x8cb3,0x8cb3,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x8493,0x94f4,0x8cd4,0x8c93,0x8493,0x7c52,0x8472,0x8cd4,0x7c31,0x7410,0x7c31,0x7410,0x7411,0x7c31,0x7c31,0x7c32,0x8472,0x8493,0x8472,0x8492,0x8492,0x8452,0x8472,0x7c72,0x7c31,0x7410,0x7c31,0x73f0,0x7410,0x7c31,0x7c31,0x73f0,0x7c31,0x73f0,0x6bd0,0x6bcf,0x7410,0x7c52,0x7411,0x7410,0x73f0,0x73cf,0x73ef,0x7c30,0x7c31,0x73f0,0x6bcf,0x6b8e,0x636e,0x6baf,0x6b8e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x634d,0x636d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b2d,0x5b2c,0x52eb,0x5aeb,0x5aec,0x52ec,0x5b4d,0x530c,0x5b0c,0x5b2c,0x52eb, +0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52aa,0x52cb,0x5aeb,0x5aec,0x630c,0x630c,0x630c,0x5aec,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x632c,0x634d,0x634d,0x632c,0x632c,0x5b0c,0x632d,0x632d,0x636d,0x634d,0x634d,0x634d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738f,0x738e,0x73af,0x73af,0x73cf,0x73d0,0x73d0,0x8431,0x8c52,0x7c11,0x7c11,0x8452,0x8452,0x8451,0x8451,0x8451,0x8451,0x8451,0x7c31,0x7c10,0x73d0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c11,0x7c32,0x8c73,0x94d4,0x8472,0x8cd4,0x8cb3,0x8452,0x8493,0x8cb4,0x94d4,0x9d35,0xa576,0x9d56,0x9d35,0x9514,0x9d55,0x9d56,0x8cd3,0x8cd4,0x8cb3,0x9515,0x94f4,0x8cd4,0x8cb4,0x8cb3,0x94f4,0x94f5,0x8cd4,0x94f5,0x9515,0x94f5,0x8cd4,0x94f4,0x9d35,0x9d35,0x9d76,0xa576,0xa577,0xa597,0xa576,0xa576,0xad97,0xa597,0xadb7,0xadb7,0xb5d8,0xbe3a,0xc65a,0xc69b,0x630d,0x9cd5,0x94b1,0x52ab,0x4a4a,0x4229,0x4229,0x4209,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x4208,0x526a,0x528a,0x526a,0x4a49,0x526a,0x4a69,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x39e7,0x39a7,0x39e8,0x3186,0x3186,0x31a6,0x39a7,0x31a6,0x39c7,0x39a6,0x2945,0x2965,0x3186,0x31a6,0x39c7,0x39c7,0x31a6,0x39c7,0x4208,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x41e8,0x4a29,0x4a29,0x4a4a,0x524a,0x526a,0x528a,0x528a,0x5aab,0x5aab,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5a8b,0x5a8a,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5aab,0x5acb,0x62eb,0x62eb,0x62eb,0x6b0c,0x630b,0x62eb,0x5aab,0x62cb,0x6b2c,0x736e,0xa577,0xa598,0xa5b8,0xadd8,0xadb8,0x9d36,0xa577,0xadf8,0xadb8,0xadf8,0xa576,0xa597,0xa5b7,0xadb7,0xa577,0x9d35,0x8cd4,0x9515,0x9515,0x8493,0x84b3,0x8cf4,0x8493,0x8cb3,0x8cd4,0x8cb3,0x8c93,0x8cd4,0x8473,0x7c32,0x7c52,0x8cb3,0x8493,0x8452,0x7c32,0x8472,0x7c72,0x8493,0x7c31,0x7c31,0x7c31,0x7410,0x73f0,0x7431,0x7c72,0x8472,0x8492,0x8472,0x7c72,0x8472,0x8493,0x8452,0x7c11,0x7c31,0x8432,0x7c11,0x7c31,0x7c11,0x7c11,0x7c51,0x8471,0x73f0,0x73f0,0x7410,0x73f0,0x73f0,0x73f0,0x7411,0x7411,0x7411,0x7410,0x73ef,0x73ef,0x7c30,0x7410,0x73d0,0x6bcf,0x6b8f,0x6baf,0x6baf,0x638e,0x6bae,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x6b6e,0x636e,0x6b8f,0x6baf,0x6b6e,0x636e,0x636e,0x6baf,0x6baf,0x636e,0x634d,0x6b8e,0x6b6e,0x73af,0x6b8e,0x5b0c,0x5b0c,0x5b2c,0x52ec,0x52eb,0x5b0c,0x636e,0x5b4d,0x530c,0x52eb,0x52cb, +0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aaa,0x5aeb,0x630c,0x5b0c,0x5b0c,0x6b6d,0x6b4d,0x630c,0x630c,0x632c,0x630c,0x5b0c,0x5b0c,0x632c,0x634d,0x632c,0x632c,0x630c,0x632c,0x632d,0x634d,0x634d,0x632d,0x632d,0x634d,0x636d,0x6b8e,0x6b8e,0x8411,0x94b3,0x94b2,0x9492,0x8430,0x73ef,0x73cf,0x73cf,0x73af,0x7bef,0x9492,0x94b3,0x9cf3,0x9492,0x9cf4,0x9cf4,0x9d14,0xa514,0x9cf4,0x94b2,0x94d3,0x94d3,0x7c30,0x7c10,0x8c72,0x9cf4,0xa535,0xa555,0x9cf4,0x94d3,0x9cf4,0x94b3,0x7c31,0x8452,0x94d4,0x8472,0x8c73,0x8cb3,0x8472,0x8472,0x8cb4,0x94d4,0x9d15,0xa576,0x9d56,0x9515,0x9d35,0x9d35,0x9d35,0x94f4,0x8cd4,0x8cd4,0x94f4,0x9d15,0x8cd4,0x8493,0x8cb4,0x8cf4,0x94f4,0x9515,0x94f5,0x8cf4,0x94f4,0x94f4,0x8cb3,0x94f4,0x9515,0x9515,0xa556,0x9d56,0xa597,0xa597,0xa577,0xadb8,0xb5d8,0xa597,0xa577,0xadb8,0xb5f9,0xbe19,0xbe5a,0xbe5a,0x630e,0x9cf6,0x8c70,0x528a,0x4a49,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x630d,0x7baf,0x6b2d,0x5acb,0x738e,0x6b4c,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a29,0x52aa,0x4a69,0x4a6a,0x5acb,0x41e8,0x39c7,0x4229,0x528a,0x4a69,0x4229,0x52aa,0x3165,0x39c7,0x4a49,0x4208,0x4a49,0x526a,0x39c7,0x5acb,0x5acb,0x4a29,0x39c7,0x39c7,0x39e8,0x39e8,0x4208,0x4a4a,0x62ec,0x5aab,0x5aab,0x6b2d,0x5aab,0x62ec,0x62ec,0x62ec,0x6b2d,0x62cb,0x5a8a,0x5aab,0x62ec,0x62cc,0x62ec,0x6b2d,0x62ec,0x5aab,0x5aab,0x6b2d,0x632c,0x62ec,0x62ec,0x736e,0x6b0c,0x62cb,0x62eb,0x630c,0x738d,0x6b4d,0x734d,0x7bce,0x8410,0xa597,0xa597,0xa597,0xa597,0xadd8,0xa597,0xa576,0xadb7,0xadd8,0xa596,0x9d36,0xa597,0xa597,0x9d55,0x9d35,0x9d35,0x94f4,0x94f4,0x9515,0x8493,0x8493,0x94f4,0x8493,0x7c72,0x84b3,0x8cd4,0x94d4,0x8cd4,0x8cd4,0x8493,0x8493,0x8cd4,0x7c52,0x7c52,0x8452,0x7c52,0x7431,0x84b3,0x7c51,0x7c11,0x7c31,0x7c31,0x7c11,0x7c31,0x8472,0x8492,0x7c52,0x8cb3,0x8472,0x8493,0x8cb3,0x8472,0x7c31,0x7c31,0x7c11,0x7c11,0x7410,0x7c31,0x7c31,0x7c51,0x8472,0x73f0,0x6bf0,0x73f0,0x7411,0x73f0,0x73f0,0x7411,0x73f0,0x73d0,0x7410,0x7410,0x7410,0x7c11,0x73d0,0x73d0,0x73cf,0x6bcf,0x6baf,0x636e,0x636e,0x6b8e,0x6baf,0x6b8f,0x6b8e,0x636e,0x6b8e,0x6baf,0x73d0,0x636e,0x6b6e,0x636e,0x634d,0x636d,0x638e,0x6b8e,0x73cf,0x6b8e,0x73cf,0x6b8e,0x634d,0x634d,0x5aec,0x52cc,0x632d,0x5aec,0x5acb,0x632d,0x6b8e,0x52ec,0x52eb,0x5aec,0x52cb, +0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632d,0x6b4d,0x632c,0x738e,0x73ae,0x6b6d,0x630c,0x5aec,0x630c,0x630c,0x5aec,0x5aec,0x630c,0x632d,0x632d,0x634d,0x632c,0x632c,0x636d,0x634d,0x632c,0x632d,0x634d,0x632d,0x6b6e,0x738e,0x7bcf,0x9cb3,0xa4f3,0xa4f3,0x9cd3,0x9d14,0x8471,0x73ef,0x7bf0,0x7bd0,0x9472,0x8c71,0x94d3,0xad75,0x94b2,0x9492,0x9cd3,0xa4f3,0x9492,0xa514,0x9cd3,0x9472,0xadb6,0x9d55,0x8471,0x8c72,0x9cd3,0x9cd3,0xa535,0xb5d7,0x94d3,0xa575,0xadb6,0x8451,0x8c92,0x94f4,0x8431,0x8cb3,0x8cb3,0x8cb3,0x8473,0x8493,0x9d35,0x9d56,0x9d56,0x9d35,0x9d15,0x94d4,0x9515,0x9d56,0x94f4,0x94f4,0x9d15,0x9d56,0xa556,0x94f4,0x8cb3,0x94d4,0x8cf4,0x8cd4,0x9d15,0x9d15,0x8cb4,0x8cd4,0x8cb4,0x8cb3,0x9d14,0x94f4,0x94f4,0xa576,0xad97,0xad97,0xa576,0xadb7,0xad97,0xa577,0xa577,0xad97,0xad98,0xadd9,0xb5f9,0xb5f9,0xb5f9,0x630e,0xa516,0x844f,0x528a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x7390,0x8c72,0x736e,0x62ed,0x8c51,0x7bce,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x5acb,0x526a,0x4a29,0x630c,0x528a,0x5acb,0x4a4a,0x528b,0x52ac,0x5acb,0x39c7,0x632d,0x39a7,0x526b,0x62ec,0x5acb,0x62ec,0x5acb,0x5aab,0x738e,0x632d,0x4a49,0x39a7,0x39a7,0x39a7,0x39c8,0x4208,0x52ab,0x73af,0x6b2d,0x62ec,0x6b4e,0x5acc,0x7baf,0x738e,0x5aab,0x73af,0x736d,0x5acb,0x738f,0x736e,0x5aab,0x5aab,0x6b2d,0x738e,0x5aab,0x62ec,0x83d0,0x736e,0x5aab,0x5aab,0x738f,0x7bae,0x5aab,0x5a8b,0x5aab,0x630c,0x6b0c,0x6b0c,0x734d,0x83ef,0xadb8,0xadb7,0xa576,0x9d56,0xa597,0xb5f8,0xa536,0xad97,0xb5d8,0xadb7,0xa577,0xa597,0x9d56,0xa576,0x9d35,0x8cb3,0x9d15,0x94f4,0x9d35,0x9d15,0x8cf4,0x9515,0x8cd4,0x8473,0x8472,0x8cb3,0x94d3,0x8cb3,0x9514,0x9514,0x94f4,0x9515,0x8472,0x7c31,0x7c52,0x7c72,0x7431,0xa576,0x94f4,0x73d0,0x7411,0x7c31,0x7c11,0x7c31,0x94d3,0x94d4,0x8492,0x8452,0x8473,0x8493,0x8472,0x8472,0x8472,0x7c51,0x7c11,0x7c11,0x7411,0x7c31,0x7c11,0x73d0,0x7c11,0x73f0,0x6bf0,0x7410,0x7c51,0x7410,0x73cf,0x7c10,0x73f0,0x73d0,0x7410,0x73f0,0x73f0,0x7c31,0x73f0,0x6baf,0x73af,0x73af,0x6baf,0x6b8f,0x73d0,0x73f0,0x6b8f,0x73d0,0x6baf,0x63ae,0x6baf,0x73cf,0x73cf,0x634e,0x6b8e,0x636d,0x6b8e,0x638e,0x636d,0x636e,0x638e,0x6baf,0x73f0,0x636e,0x5b2d,0x5b2d,0x530c,0x5b0c,0x634e,0x5b2d,0x5aec,0x5b0c,0x636d,0x5aec,0x52cb,0x52cb,0x52cb, +0x630c,0x630c,0x5aeb,0x630c,0x5aec,0x5b0c,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x634d,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x632c,0x6b4d,0x6b4d,0x632d,0x632c,0x634d,0x636e,0x6b8e,0x636d,0x634c,0x6b6d,0x6b8e,0x6b8e,0x7bf0,0x8c51,0x9451,0x8c30,0x9c92,0x8c31,0xb5b6,0x9d54,0x7c31,0x8410,0x8410,0xa514,0x9491,0x94b1,0xa513,0xa513,0x9471,0x9492,0xb5b6,0xa534,0x9cf3,0x9471,0x9471,0xa514,0xbe18,0x8cb3,0x8c71,0xa534,0x94d2,0x8c71,0xad34,0x8c71,0xa534,0xb5d7,0x8452,0x9d35,0x8c93,0x8451,0x8472,0x8493,0x8492,0x8452,0x8cb3,0x9d15,0x9d55,0x9d35,0x9d15,0x94f4,0x8cb3,0x94f4,0x8cd4,0x8cb3,0x94d4,0x9cf5,0x9d36,0xa576,0x94f4,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x8cd4,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x9515,0x94f4,0x94f5,0xad97,0xb5d8,0xadd8,0xadd7,0xa5b7,0x9d36,0x9d36,0xa597,0xadd8,0xadd8,0xb619,0xbe3a,0xbe59,0xb5f8,0x632e,0xa516,0x842f,0x4a8a,0x4229,0x39e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x738f,0x8c31,0x6b4d,0x630d,0x8c92,0x73ce,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e8,0x630c,0x5acc,0x62cc,0x632d,0x39e8,0x6b6e,0x5aac,0x526a,0x528b,0x5aab,0x526a,0x62ed,0x4a49,0x5acc,0x6b2d,0x632d,0x62ec,0x5acc,0x6b4e,0x738f,0x630d,0x4a49,0x3186,0x3186,0x3186,0x3187,0x39c7,0x630c,0x73af,0x6b6e,0x630c,0x630d,0x5aab,0x6b4e,0x630c,0x526a,0x7bf0,0x7bcf,0x630d,0x9472,0x732d,0x5249,0x524a,0x528a,0x738e,0x6b0c,0x738e,0x9452,0x62cc,0x5a6a,0x526a,0x5acc,0x7bcf,0x6b0c,0x5a8b,0x5a6a,0x526a,0x62cb,0x62cb,0x62eb,0x736e,0xa577,0xadd8,0xadd8,0xa577,0x9d56,0xadd8,0xad97,0x9d56,0xadd7,0xb5d8,0xb5f8,0xa577,0x94f5,0xa576,0xa577,0x94d4,0x9d56,0x9d15,0x94d4,0x94f4,0x94f5,0x9515,0x8cd4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x8cb3,0x8cd3,0x9d14,0x9d35,0x94d4,0x8cb3,0x8493,0x7c52,0x7c72,0x73f0,0x9d36,0xa556,0x7c11,0x7411,0x7410,0x73f0,0x7411,0x8cd3,0x9d35,0x9514,0x8c93,0x8cb4,0x8c93,0x8492,0x8492,0x7c52,0x8452,0x7c11,0x73f1,0x73d0,0x73f0,0x7c11,0x73f0,0x73f0,0x73f0,0x6baf,0x6baf,0x6bcf,0x73ef,0x73cf,0x73f0,0x7410,0x73d0,0x73d0,0x73cf,0x73f0,0x73f0,0x73d0,0x73af,0x73d0,0x6baf,0x6bb0,0x73f0,0x73d0,0x6baf,0x6b8f,0x6baf,0x6bcf,0x6bcf,0x6baf,0x73cf,0x6bcf,0x73f0,0x6b8e,0x634e,0x6bae,0x638e,0x5b2c,0x634d,0x636d,0x6bae,0x6bcf,0x638e,0x638e,0x5b2d,0x5b0c,0x5b0d,0x634d,0x5b2c,0x636d,0x634d,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52ab, +0x5aeb,0x62ec,0x630c,0x62eb,0x630c,0x632c,0x6b8e,0x6b8e,0x6b6d,0x738e,0x6b8e,0x634d,0x632c,0x634c,0x634d,0x632c,0x630c,0x632c,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x634d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x73cf,0x8c52,0x9472,0x9471,0x9471,0x9cb2,0x9451,0xbdf8,0xadb6,0x8471,0x8431,0x94b3,0x9cd2,0x9450,0x9491,0x9cb2,0xb5b6,0x9d14,0x9472,0xb5b6,0xbe17,0x8471,0x8c71,0x9491,0x9492,0xbe18,0x9d14,0x8430,0xc618,0xad95,0x8c51,0xa4f4,0x9492,0xa534,0xadb6,0x7c31,0x9d15,0x8473,0x8472,0x8452,0x8472,0x8472,0x8452,0x94f4,0x9514,0x9d35,0x9d15,0x94f4,0x94d3,0x8cb2,0x9d34,0x8cf3,0x8493,0x8cb3,0x94b4,0x94d4,0x94f5,0x94f5,0x8cd4,0x8cb4,0x94f5,0x8cd4,0x8c93,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x8cd4,0x94f4,0x94f4,0x9515,0xad97,0xadb7,0xadd7,0xadd7,0xa597,0xa577,0xa577,0xa556,0xadb7,0xb639,0xc6bb,0xbe59,0xb618,0xbe19,0x6b2e,0xa536,0x840f,0x4a6a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x41e8,0x738f,0x8411,0x6b4d,0x630e,0x94b3,0x7bcf,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a49,0x5aec,0x6b6f,0x7bd0,0x5aec,0x4229,0x6b6e,0x5aec,0x4a6a,0x5acb,0x528b,0x8411,0x5acc,0x5aab,0x630d,0x62ec,0x4a6a,0x4a4a,0x630d,0x5aac,0x6b6e,0x62ec,0x4a49,0x3186,0x3186,0x3186,0x3166,0x3186,0x5aab,0x6b2d,0x630c,0x5acc,0x738e,0x62cb,0x524a,0x524a,0x5acb,0x8c52,0x83af,0x6b4d,0x9451,0x5a6a,0x4a29,0x4a09,0x4a09,0x6b6e,0x738e,0x73cf,0x8411,0x5a6a,0x524a,0x4a4a,0x4a6a,0x6b6e,0x6b4d,0x5a8a,0x5a8a,0x5a8a,0x5aab,0x62ab,0x62cb,0x6b2d,0x9d56,0xa5b8,0xa5b8,0x9d77,0x9d56,0xadb7,0xadb7,0x9d77,0xadd8,0xb5f8,0xa597,0x9d56,0x9d56,0xadb8,0xad97,0x9515,0xa576,0xa596,0x9d76,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x94d4,0x94d4,0x8472,0x8cb3,0x9d35,0x94f4,0x8cb3,0x8473,0x7c52,0x8452,0x7c11,0x94f5,0x8c93,0x7c52,0x7c31,0x7c52,0x7431,0x7431,0x7c72,0x8cd3,0x8cd3,0x8492,0x8472,0x8493,0x8473,0x8472,0x8472,0x7c11,0x73d0,0x7bf1,0x7bf1,0x73f0,0x7bf0,0x7c11,0x7bf0,0x73f0,0x73f0,0x6bcf,0x6baf,0x73cf,0x7410,0x7c31,0x7bf0,0x73d0,0x73f0,0x73d0,0x73d0,0x73d0,0x7bf0,0x73af,0x6b8f,0x6baf,0x73b0,0x73d0,0x6baf,0x638e,0x636e,0x6b8f,0x73cf,0x73cf,0x73cf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x636e,0x636e,0x5b4d,0x634d,0x636d,0x73ef,0x6bcf,0x6baf,0x634e,0x5b2d,0x5b0d,0x632d,0x632d,0x5b2d,0x5b2c,0x636d,0x6b8e,0x5b0c,0x52ec,0x5aeb,0x52eb, +0x5aeb,0x62ec,0x5aeb,0x62eb,0x632c,0x6b6d,0x738e,0x6b4d,0x73ae,0x73ce,0x636d,0x632c,0x634c,0x634c,0x5b0c,0x5b0c,0x630c,0x632c,0x630c,0x632c,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x634d,0x634d,0x6b6e,0x7bd0,0x8c51,0x8c51,0x8c30,0x8c10,0x9cd2,0x9451,0xb5b6,0xb5f7,0x8cb2,0x8472,0x9cd3,0x9471,0x9cb1,0xa4f3,0x8c30,0xb5b6,0xa575,0x7bd0,0xa515,0xbe18,0x73ef,0x94b2,0xad34,0x8c30,0xbdf7,0xa575,0x8430,0xa554,0x94b2,0x9491,0xb576,0x9492,0xa554,0xb5d7,0x7c52,0x8cb3,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb4,0x9d35,0x94f4,0x8c93,0x8c93,0x8cb3,0x8cb3,0x94f4,0x9535,0x8cd3,0x7c52,0x8c92,0x94b3,0x94d4,0x94f4,0x94d4,0x94f4,0x8cb4,0x84b3,0x8493,0x8493,0x8cb4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x94f5,0xa576,0xadd8,0xad97,0xa556,0xa556,0xa556,0xa577,0xa556,0xa556,0xc67a,0xb5f8,0xadd8,0xa577,0xa597,0xb5d9,0x632e,0xa537,0x840f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4a29,0x738f,0x8411,0x6b4d,0x630d,0x8c72,0x7bcf,0x4228,0x41e7,0x39c7,0x41c7,0x39c7,0x41c7,0x41c7,0x39c7,0x5aab,0x526a,0x52ac,0x5aec,0x4a6a,0x52ab,0x6b2d,0x5acc,0x52ab,0x5acb,0x4209,0x632d,0x4229,0x62ec,0x632d,0x5aab,0x528a,0x4a4a,0x630c,0x41e9,0x6b2d,0x5aec,0x4a49,0x3986,0x3986,0x3186,0x3186,0x3186,0x4a6a,0x5aab,0x4a49,0x4a4a,0x7bcf,0x6b0d,0x4a28,0x5aab,0x7baf,0x7bb0,0x62ab,0x632d,0x8410,0x5249,0x4a08,0x4a08,0x4a29,0x7baf,0x738e,0x6b4e,0x7baf,0x5a4a,0x524a,0x524a,0x528b,0x7bd0,0x736e,0x5a8b,0x5a8a,0x5aab,0x5acb,0x5a8a,0x628b,0x6b4e,0xa598,0xa5b8,0xa5b8,0xa5b8,0x9d77,0xadb8,0xadb8,0xadb8,0xadd8,0xb5f8,0xa576,0x9d35,0xa556,0xadb7,0xad97,0x9d56,0x9d55,0xadf8,0x9d76,0x8cd4,0x94f5,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x94d4,0x84b3,0x7c72,0x9515,0x8cd4,0x8c93,0x8cb3,0x8473,0x7c31,0x7c52,0x9d15,0x8452,0x7431,0x7411,0x7411,0x7c32,0x7c31,0x7c31,0x94b3,0x8c93,0x8472,0x7c51,0x7c31,0x8452,0x8473,0x8472,0x7411,0x7411,0x73f1,0x7c31,0x7c31,0x7c31,0x7c10,0x7c10,0x7bf0,0x73d0,0x6baf,0x6baf,0x73f0,0x7c31,0x7c31,0x7c10,0x73f0,0x7c11,0x73f0,0x73d0,0x73f0,0x7c11,0x8452,0x73d0,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8f,0x6baf,0x73cf,0x73d0,0x7c10,0x73ef,0x73f0,0x6baf,0x6b8f,0x6bae,0x6bae,0x6b6e,0x6b8e,0x6b8e,0x634d,0x636e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0c,0x5b0c,0x634d,0x636d,0x636d,0x5aec,0x5b0c, +0x630c,0x630c,0x630c,0x5aeb,0x632c,0x632c,0x6b4d,0x6b6d,0x6b8d,0x634d,0x634c,0x634c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x634d,0x6b6d,0x6b8e,0x632d,0x5b0d,0x6b4e,0x738f,0x7bf0,0x8c51,0x8410,0xa4f3,0x8c30,0x9cf3,0x9491,0xa4f3,0xbdf7,0x9d54,0x94d3,0x8c92,0x9471,0xa4f2,0xa513,0x9451,0xad34,0xad96,0x73af,0xad35,0xbdd7,0x7bef,0x9cb2,0x9cd3,0x8c10,0xb576,0xad96,0x8430,0x94b2,0x9492,0xad75,0xbdf7,0x8431,0xa555,0xb5f7,0x8452,0x8452,0x8432,0x8472,0x7c51,0x7c31,0x8472,0x94f4,0x9d15,0x8c93,0x8473,0x8452,0x8c93,0x8cb4,0x8cd4,0x8cb3,0x8cb3,0x7c31,0x8472,0x8cd3,0x8cd4,0x8cd4,0x8492,0x8cd4,0x8cb3,0x7c72,0x8472,0x8493,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x9cf5,0xa536,0xadb7,0xa5b7,0xadb7,0xa576,0x9d56,0x9d36,0x9d56,0xa576,0xbe39,0xbe39,0xa597,0xa597,0xadb8,0xb5f9,0xb5f9,0x632e,0xa537,0x7c0f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x5aab,0x6b4e,0x8432,0x6b2d,0x630d,0x9492,0x73af,0x5269,0x41c7,0x39c7,0x39e7,0x39c7,0x39e7,0x41e7,0x39c8,0x632d,0x528a,0x4229,0x4209,0x4a6a,0x630c,0x6b2d,0x5acc,0x630d,0x52ab,0x4a4a,0x39c7,0x39e8,0x5acc,0x6b4e,0x5aab,0x630d,0x526b,0x62ec,0x4a4a,0x630c,0x5aec,0x4a49,0x3986,0x3987,0x3186,0x3186,0x39c7,0x5aec,0x630c,0x4a29,0x4a4a,0x7bf0,0x6b2d,0x5aab,0x736e,0x83d0,0x5aab,0x4a49,0x528a,0x6b6e,0x62cb,0x5249,0x4a49,0x5acb,0x8c31,0x6b2d,0x5aec,0x7bf0,0x62cb,0x526a,0x526a,0x630d,0x9493,0x732d,0x5a8b,0x5a8b,0x62cb,0x62cb,0x5a8a,0x5a8a,0x6b2d,0xad98,0xa598,0xa5b8,0xadd8,0xa597,0xa597,0xadb7,0xb5f9,0xb5f9,0x9d56,0x9515,0x9d56,0x9d56,0xad97,0xbe19,0xadd8,0x9d15,0x9d36,0x8cd4,0x8cd4,0x9515,0x94f4,0x8c93,0x8cb3,0x8c93,0x8493,0x84b3,0x84b3,0x8cf4,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8472,0x7c32,0x7c32,0x94f4,0x8492,0x7410,0x73f0,0x7c11,0x8452,0x7c51,0x7411,0x8c93,0x8cd3,0x8492,0x7c11,0x7c11,0x7c52,0x8472,0x8472,0x7c31,0x73f0,0x8452,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x7bf0,0x7c11,0x73d0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x7411,0x6bf0,0x7410,0x7c31,0x73f0,0x73f0,0x7431,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x73b0,0x73d0,0x73cf,0x73cf,0x7410,0x6bcf,0x6baf,0x6baf,0x73cf,0x73cf,0x6b8e,0x6b8e,0x636d,0x638e,0x636e,0x73af,0x6b6e,0x632e,0x630d,0x5b0d,0x5b2d,0x52ec,0x6b8e,0x73ae,0x5aec,0x630c,0x634c,0x73cf,0x634d,0x5b0c, +0x5aeb,0x634d,0x632c,0x5aeb,0x630c,0x630c,0x634c,0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x634c,0x6b8e,0x634d,0x630d,0x6b6e,0x7bcf,0x9471,0x9451,0x9471,0xb5b6,0x840f,0xa534,0x9cf3,0x8c10,0xad75,0xadb6,0x9d54,0x8c91,0x9471,0x9cb2,0x9cd2,0x9cb2,0xa4f3,0xad95,0x7bce,0xb575,0xb595,0x840f,0x9cd2,0x8c72,0x8c51,0x9cd3,0xb596,0x8410,0xa4f4,0x9492,0xad75,0xbdf7,0x8410,0xad55,0xbe18,0x8472,0x7c31,0x7c11,0x8452,0x8452,0x7c31,0x8432,0x8c93,0x94d4,0x8cb3,0x8452,0x8c72,0x8c93,0x8c93,0x8473,0x8473,0x8472,0x8492,0x8c93,0x8c93,0x8492,0x8472,0x8472,0x8492,0x8cb4,0x8493,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x8cb4,0x94f4,0x94d4,0x9d15,0xa576,0xa597,0xa576,0x9d56,0xa576,0x9d36,0x9d56,0xad97,0xc67a,0xbe5a,0xa597,0xadd8,0xad97,0xadd8,0xb619,0xbe19,0x632e,0xa537,0x7bef,0x4a6a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x4208,0x4208,0x4208,0x4209,0x632d,0x6b2e,0x8c32,0x630d,0x630e,0x9cf4,0x738e,0x5aab,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41e8,0x5acc,0x5acb,0x4208,0x39e8,0x528b,0x5acc,0x5aec,0x528b,0x5aec,0x526a,0x5aab,0x3166,0x4229,0x528b,0x632d,0x5aab,0x5acc,0x4a29,0x52ab,0x5aec,0x5aab,0x5aec,0x4a29,0x3986,0x39a6,0x3186,0x3186,0x39a7,0x528a,0x630c,0x5aab,0x5a8b,0x7bb0,0x62cc,0x62cc,0x62ec,0x62cc,0x5a8b,0x630c,0x4a09,0x526a,0x5aeb,0x5aaa,0x5aaa,0x630d,0x736e,0x5a8b,0x526a,0x6b2d,0x6b2d,0x5aab,0x5aab,0x6b4e,0x83f0,0x62cc,0x5a8b,0x5a8b,0x62cc,0x62ec,0x5aab,0x5a8b,0x6b2e,0xadd8,0xadb8,0xa5b8,0xadb8,0xadb8,0xa597,0xbe19,0xbe39,0xc65a,0x9d35,0x94f5,0x94f4,0xa556,0xa556,0xbe19,0xb5f9,0xadd8,0x9515,0x9515,0x9d35,0x9d35,0x94f5,0x8c93,0x94f4,0x8cd4,0x8cb3,0x8493,0x8c93,0x8c93,0x94d4,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x7c52,0x7c31,0x8472,0x8c92,0x8472,0x7c31,0x7c31,0x8452,0x7c31,0x7411,0x8472,0x8472,0x7411,0x7c31,0x7411,0x7c32,0x8452,0x7c52,0x7c52,0x7c52,0x7c31,0x7431,0x6bf0,0x6bf0,0x7410,0x7c31,0x73f0,0x7c31,0x73d0,0x73f0,0x6baf,0x73f0,0x7410,0x6bf0,0x6bcf,0x73f0,0x7c11,0x7410,0x73f0,0x7410,0x6bcf,0x6baf,0x6baf,0x638e,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73cf,0x73d0,0x73d0,0x6baf,0x73f0,0x7c10,0x6bae,0x636e,0x636e,0x6b8e,0x6b8e,0x73af,0x6b6e,0x5b2d,0x5b2d,0x5b0d,0x632d,0x6b8e,0x6b8e,0x6b8e,0x5b0d,0x632c,0x5b0c,0x636d,0x5b4d,0x5b0c, +0x632c,0x630c,0x5b0b,0x5aeb,0x630c,0x630c,0x634c,0x632c,0x5aeb,0x630c,0x5b0b,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x632c,0x630c,0x5aeb,0x630c,0x6b4d,0x632c,0x630c,0x630c,0x6b8e,0x6b6d,0x6b4e,0x738f,0x8c10,0x9451,0x8c30,0xad55,0xad75,0x7bcf,0xa514,0xad75,0x8c31,0x9492,0x9d13,0xa595,0x94b2,0x9471,0xad34,0xad54,0x94b1,0x94b1,0xad54,0x8c30,0xa513,0xa513,0x8c71,0xad95,0xa555,0x8c91,0x8c51,0x9cd3,0x8410,0xb5b6,0x9cf4,0x8c92,0xad76,0x9451,0xad14,0xbdd7,0x8472,0x8451,0x8431,0x7c31,0x7c31,0x8431,0x7c11,0x8451,0x8c93,0x8c93,0x8452,0x8472,0x8472,0x8452,0x8c93,0x7c31,0x7c52,0x8493,0x8c73,0x8c72,0x8452,0x8452,0x8472,0x8452,0x8c93,0x94f4,0x8cd3,0x8c93,0x8c93,0x8cb3,0x94f4,0x94d4,0x94f4,0x9d56,0x9d35,0xa576,0x9d35,0x9d15,0xa535,0xa535,0xbe19,0xc69b,0xbe19,0xad98,0xa598,0xadb8,0xadb8,0xb5d8,0xbdf8,0xc67a,0x630e,0xa557,0x7bee,0x4a8a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x5acb,0x5aec,0x630e,0x738f,0x6b2d,0x630e,0x83f1,0x738e,0x5aab,0x4a49,0x41e7,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x4229,0x4209,0x39c7,0x31a7,0x41e8,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x3166,0x39e8,0x4208,0x4208,0x41e8,0x4209,0x39a7,0x41e8,0x4a29,0x4208,0x4a2a,0x41e8,0x39a7,0x39a7,0x3186,0x3186,0x3186,0x39a7,0x4a49,0x4a49,0x526a,0x5aab,0x522a,0x524a,0x4a29,0x4a09,0x524a,0x62cb,0x4a08,0x4a08,0x5249,0x5249,0x526a,0x5a8b,0x526a,0x5229,0x4a29,0x526a,0x5aab,0x5aab,0x5aab,0x62cc,0x62ec,0x5a8b,0x5a8b,0x5aab,0x62ec,0x62ec,0x62ec,0x62ab,0x6b4d,0xb5f9,0xa5b8,0xa597,0xadb8,0xad97,0xa597,0xb5d8,0xb5d8,0xbe39,0xad97,0x9d36,0xa556,0xad97,0xa576,0xa556,0xadd8,0xadd8,0xa576,0x94f4,0x9515,0x9d36,0x94f4,0x94f4,0x9d35,0x8cf4,0x8cf4,0x8cf4,0x8cb3,0x8473,0x8493,0x8493,0x8cb3,0x8cb4,0x7c32,0x8473,0x8473,0x7c32,0x7c52,0x8452,0x8472,0x7c52,0x73f1,0x7c31,0x7c11,0x7411,0x7c52,0x7411,0x7c11,0x7410,0x7c31,0x8472,0x8473,0x7c52,0x8473,0x8493,0x7411,0x7411,0x73f0,0x73f0,0x73ef,0x7c30,0x7410,0x7410,0x73f0,0x6bcf,0x73cf,0x7c31,0x7410,0x73f0,0x73f0,0x7bf0,0x7c11,0x7410,0x6bef,0x7410,0x7c30,0x73cf,0x6b8e,0x636e,0x6baf,0x73cf,0x6b8f,0x6baf,0x6b8f,0x73af,0x73af,0x73cf,0x73b0,0x73d0,0x73d0,0x73f0,0x6baf,0x6b8f,0x6b8f,0x6b6e,0x6b6e,0x73af,0x73af,0x6baf,0x6b8e,0x636d,0x636e,0x5b2d,0x636d,0x7bf0,0x5b0d,0x5b2d,0x634e,0x5b0d,0x5b0c,0x530c,0x52eb,0x5b0c, +0x5aeb,0x5aeb,0x5b0c,0x5aec,0x5aeb,0x5aeb,0x630c,0x632c,0x5aeb,0x5aeb,0x62ec,0x630c,0x5b0c,0x634d,0x5b0c,0x5aec,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x632c,0x634d,0x6b4d,0x6b6e,0x7bcf,0x8c31,0x9cd2,0xa534,0xa535,0x8cb2,0x8c31,0xad34,0xad75,0x94b2,0x8c71,0x8c71,0xad54,0x9cd3,0x9492,0xad96,0xa575,0x94d3,0x9491,0x9cd2,0x9492,0x9cd3,0x9cf3,0xa534,0xb5d6,0x94d2,0x94b2,0x94b2,0x94d2,0x94d3,0xb5f7,0xa555,0x8c72,0x9cf4,0x9c93,0xad76,0xadb7,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x7c32,0x7c51,0x7c31,0x7c31,0x8472,0x8431,0x8451,0x8492,0x8493,0x8472,0x8492,0x8472,0x7c51,0x8472,0x8c92,0x8472,0x8472,0x8493,0x84b3,0x9535,0x8cf4,0x8472,0x8493,0x8473,0x8493,0x8cb3,0x94f4,0x9d55,0x9d55,0x9d76,0xa576,0xa576,0x9d35,0xad96,0xce9a,0xce9a,0xb619,0xb5f9,0xa5b7,0xadd8,0xadf8,0xbe3a,0xc65a,0xbe19,0xc67a,0x630e,0xad57,0x7bee,0x4a8a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4a49,0x528a,0x5acb,0x52ab,0x526a,0x630d,0x6b4d,0x6b2e,0x62ec,0x630d,0x5aab,0x526a,0x4a28,0x41e8,0x41e7,0x39c7,0x39c7,0x4a09,0x528a,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x41e8,0x41e8,0x39c7,0x39a6,0x39a7,0x39c7,0x39a7,0x39a7,0x39c7,0x39c7,0x41e8,0x4208,0x41e8,0x41e8,0x39c7,0x41e8,0x41e8,0x41e8,0x4a29,0x4a29,0x4a49,0x4a49,0x4a29,0x5249,0x4a29,0x4a29,0x4a29,0x5249,0x4a49,0x5249,0x4a29,0x5249,0x5269,0x5269,0x5249,0x5269,0x526a,0x528a,0x5a8a,0x5a8a,0x5aab,0x5a8b,0x62cb,0x62cc,0x5a8b,0x62ab,0x62ec,0x62ec,0x62ec,0x62cb,0x6b2d,0xadd8,0xadd8,0xa597,0xa5b8,0xadf8,0xadd8,0xa597,0xa597,0xb5f8,0xadb7,0xa576,0xb5f8,0xadb7,0xadb7,0xa597,0xa576,0xa576,0xa597,0x9d36,0x9515,0x8cf5,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x84b3,0x8493,0x8cb4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x7c32,0x8473,0x8472,0x8493,0x7c72,0x7c52,0x7c32,0x7c31,0x7c52,0x7c52,0x7411,0x6bf0,0x73f1,0x73f0,0x7c11,0x7c32,0x84b4,0x84b4,0x7c52,0x8493,0x7c52,0x7411,0x7411,0x6bb0,0x6bb0,0x6bd0,0x6bb0,0x6bd0,0x6bd0,0x63af,0x636f,0x6bb0,0x6c11,0x6bd0,0x6bf0,0x6bd0,0x636f,0x63b0,0x6bd0,0x5b8f,0x6bd0,0x6b90,0x5b4f,0x5b4e,0x5b4e,0x638f,0x63af,0x5b4e,0x4aed,0x530d,0x6bcf,0x5b6e,0x5b4d,0x5b4e,0x5b4e,0x5b6e,0x63af,0x5b8e,0x532d,0x532d,0x532c,0x5b6d,0x638d,0x5b6d,0x534d,0x4b2c,0x534c,0x536d,0x536d,0x4b0b,0x42eb,0x4b0b,0x430b,0x4b2b,0x4b2c,0x4b2b,0x430a,0x4b2b,0x4b2b, +0x5aaa,0x5aca,0x62eb,0x5aca,0x5aea,0x5aeb,0x630c,0x630c,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632c,0x630c,0x62ec,0x630c,0x62eb,0x62eb,0x630c,0x630c,0x62eb,0x62eb,0x62cb,0x62ec,0x6b2d,0x632d,0x632d,0x73af,0x8431,0x9cd3,0x8c92,0x7c10,0x7bf0,0x9472,0x9cb3,0x8451,0x7c10,0x8451,0x8c51,0x9492,0x94b3,0x9cd3,0x94b3,0x8c72,0x8c71,0x9cd3,0xa534,0x9cf3,0x9d13,0x9d13,0x9cf3,0x94b3,0x8431,0x8c72,0x9cd4,0xa515,0xa535,0x9cf3,0x8c72,0x9492,0x9cb3,0x9492,0x8cb2,0x8492,0x8431,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8431,0x8410,0x8431,0x8c31,0x8410,0x8410,0x8c52,0x94b3,0x8431,0xa514,0x94b3,0x8431,0x8c51,0x8410,0x8c31,0x8c10,0x8c31,0x8c51,0x9492,0x8c92,0x8c51,0x8c51,0x9472,0x9472,0x9473,0x94b3,0x9cf4,0x9cf4,0x9cd3,0xa4d3,0xa4d4,0xb535,0xd65a,0xce3a,0xb597,0xad76,0xad77,0xad56,0xb597,0xbdb8,0xc5f9,0xc5f9,0xc5f9,0xbdd8,0x630f,0xad78,0x7bce,0x528a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x4209,0x630d,0x52aa,0x528a,0x528a,0x526a,0x41e8,0x630d,0x6b6d,0x6b2e,0x5a8a,0x4a49,0x528a,0x526a,0x4a49,0x4229,0x4a49,0x39c7,0x39a7,0x528b,0x7bcf,0x5a68,0x6247,0x6226,0x6206,0x61e6,0x59c6,0x59c6,0x59c6,0x59c6,0x6207,0x6207,0x61e7,0x59c6,0x59c6,0x59c6,0x59c7,0x59e8,0x59c7,0x59c7,0x51e7,0x5208,0x5a49,0x5229,0x4a08,0x41e8,0x4208,0x4208,0x4209,0x4a29,0x4a4a,0x4a29,0x4a4a,0x4a4a,0x526a,0x4a4a,0x4209,0x4209,0x4209,0x4229,0x4a28,0x4228,0x4a28,0x4a48,0x4248,0x4a48,0x4a68,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5a89,0x6b2d,0x6b2d,0x5a8b,0x62cb,0x62ec,0x630c,0x62ec,0x5a8b,0x5aac,0x7c54,0x7c34,0x7434,0x7c34,0x84b5,0x8474,0x7c33,0x7c13,0x7c53,0x7c33,0x7c33,0x73f2,0x7413,0x7413,0x7c54,0x7413,0x6bb2,0x63b2,0x63b2,0x6391,0x5b51,0x6391,0x5b71,0x5330,0x5b50,0x5b71,0x5330,0x5b50,0x5b30,0x5310,0x5b10,0x530f,0x52ef,0x5b30,0x428e,0x42cf,0x4aef,0x4aef,0x42ce,0x42ce,0x42ae,0x428d,0x42ce,0x3aae,0x3a6d,0x3a6d,0x3a6d,0x3a8e,0x3a8e,0x3a6e,0x42cf,0x3a8e,0x324d,0x3a8e,0x428e,0x324d,0x3a8d,0x326d,0x2a6d,0x2a4d,0x2a6d,0x2a6d,0x222c,0x222c,0x224d,0x2a6d,0x32ce,0x2a8d,0x224c,0x224c,0x224c,0x2a6d,0x226d,0x226c,0x2a8d,0x224d,0x224c,0x1a2b,0x222b,0x224b,0x2a8b,0x328b,0x224a,0x2a8a,0x2aab,0x2aab,0x2aab,0x22aa,0x2aaa,0x2aca,0x2ac9,0x32c9,0x32ea,0x2ac9,0x2ac9,0x32c9,0x32e9,0x32e9,0x32e9,0x3309,0x3309,0x3309,0x32e8,0x32e8,0x32e8,0x32e8,0x2ac8,0x2ae8,0x32e8,0x32e8,0x3308,0x3308,0x32e8, +0x7b66,0x7b87,0x7b87,0x7b87,0x7b86,0x7b87,0x7b88,0x7b88,0x7b67,0x7b47,0x7b47,0x8368,0x8348,0x8347,0x8348,0x7b27,0x7b27,0x7b27,0x7b27,0x8327,0x8327,0x8327,0x8307,0x8327,0x8307,0x8328,0x8328,0x8308,0x8b49,0x8b6a,0x8b49,0x8b6a,0x8b6b,0x936a,0x936b,0x936b,0x8b4a,0x938b,0x93ac,0x938c,0x938c,0x938b,0x938c,0x936c,0x9b8c,0x9b8c,0x9b8c,0x9b8d,0x9b6c,0x9b6d,0x9b4c,0x932b,0x92ea,0x9b2b,0x9b2b,0x9b2b,0x9b2b,0x930b,0x92ea,0x9b0a,0x92ea,0x92ea,0x9aeb,0x92aa,0x92aa,0x9aca,0x9aea,0x9ac9,0x9ac9,0x9aea,0x9aea,0x9aa9,0x9aaa,0x9aa9,0x9aa9,0x9aa9,0x9aa9,0xa2ca,0x9aaa,0x9a89,0xab0b,0xaaeb,0x9a89,0x9a89,0x9a89,0x9a89,0xa269,0xa269,0xa248,0xa248,0xa269,0xa269,0xa249,0xa249,0xa249,0xa249,0xa269,0xa26a,0xa26a,0xa269,0x9a08,0xb30c,0xc3ae,0xaaec,0xaa6b,0xa26a,0xa26a,0xa24a,0xa26a,0xaaab,0xaa8b,0xaa4a,0xaa6b,0xaaac,0xaa8b,0x62ce,0xad98,0x7bce,0x528a,0x4249,0x4209,0x4208,0x4208,0x41e8,0x41e8,0x4a2a,0x7bd0,0x526a,0x4a29,0x4a29,0x41e8,0x39c8,0x62ed,0x6b6e,0x630d,0x5269,0x41e7,0x4229,0x4a49,0x4a29,0x4229,0x6b2d,0x39c7,0x39a7,0x5aac,0x9471,0x7b06,0x8a43,0x8a03,0x89e3,0x91a3,0x8982,0x89a3,0x8983,0x8983,0x9183,0x91a3,0x9183,0x9163,0x9164,0x8964,0x8964,0x89a5,0x8184,0x7964,0x7165,0x7165,0x71a6,0x5986,0x3945,0x2945,0x2925,0x2946,0x2946,0x2967,0x3188,0x2968,0x2989,0x2989,0x29a9,0x2989,0x2988,0x2988,0x2987,0x29a6,0x29c6,0x29c6,0x29e6,0x29e6,0x2a06,0x3206,0x3225,0x3245,0x3a45,0x3a66,0x4286,0x4ac6,0x5b07,0x73ad,0x736e,0x5a8b,0x62cb,0x736e,0x6b4d,0x62cc,0x5a6a,0x5aab,0x52d0,0x4ad1,0x52d1,0x4ab0,0x4ad0,0x4ab0,0x4a90,0x4a90,0x4a8f,0x52d0,0x4ab0,0x42b0,0x4ad0,0x52f0,0x4ad0,0x4ab0,0x4ab0,0x428f,0x3a6f,0x3a6e,0x42af,0x3a6f,0x324e,0x42af,0x4acf,0x42af,0x42af,0x42cf,0x42af,0x3a8f,0x42af,0x42af,0x3a8e,0x324e,0x42af,0x42af,0x3a8e,0x42cf,0x3aae,0x42ae,0x3a8d,0x324d,0x326d,0x3a8e,0x3aae,0x326e,0x3aae,0x3aae,0x42ae,0x42ce,0x42ce,0x3aae,0x3acf,0x3aae,0x328d,0x42ce,0x42ee,0x326c,0x3aad,0x3acd,0x3acd,0x3acd,0x430e,0x430e,0x4b0e,0x42ee,0x3aad,0x3acd,0x430e,0x3aad,0x3aad,0x3acd,0x42ee,0x42ed,0x4b0d,0x4b0d,0x42ed,0x42cc,0x42cc,0x42cc,0x4b0d,0x42ec,0x42cb,0x4b0c,0x4b2c,0x4b4d,0x4b4d,0x4b0c,0x4b2c,0x534c,0x532c,0x534c,0x5b6c,0x5b6c,0x534b,0x534c,0x534c,0x536c,0x534b,0x532b,0x5b6b,0x534b,0x534a,0x4b2a,0x534b,0x4b0a,0x532b,0x532b,0x4b0b,0x534b,0x534b,0x534b,0x530a, +0x8c23,0x8c23,0x8c03,0x8c03,0x9404,0x8be5,0x8be4,0x8bc3,0x8bc3,0x93c3,0x93a4,0x93a4,0x93a4,0x9384,0x8b84,0x8b64,0x8b64,0x8b64,0x8b63,0x9364,0x9364,0x9364,0x9363,0x9364,0x9364,0x9364,0x9364,0x9364,0x9b44,0x9b65,0x9b66,0x9b66,0x9b66,0x9b46,0x9b46,0x9b66,0x9b66,0x9b66,0x9b67,0x9b67,0x9b47,0x9b46,0x9b26,0x9b46,0x9b46,0x9b46,0xa326,0xa305,0x9ac5,0x9ae6,0x9ac6,0x9ae6,0xa2e6,0x9ac6,0x9aa5,0x9a85,0x9ac6,0x9ae7,0x9ac6,0x9aa6,0xa2a6,0xa2c7,0x9aa6,0x9a86,0x9aa7,0x9aa7,0x9aa7,0x9aa7,0xa2a7,0xa2a6,0x9a65,0x9a86,0x9a86,0x9aa7,0x9aa7,0x9a87,0x9aa7,0xa2c7,0xa2c7,0x9a87,0x9a86,0xa286,0xa287,0xa287,0xa2a7,0x9a65,0x9a66,0xa2a8,0xa2c8,0xa2a8,0xa2c9,0xa2a8,0xa2a8,0xa2a8,0xa288,0xa288,0xa2a9,0xa2c9,0xa2ca,0xa268,0xcc91,0xccd1,0x9b6c,0xa32c,0xa32c,0xab4c,0xa34c,0xa32c,0xab8d,0xab8d,0xa36d,0xb3af,0xb3ef,0xb3ef,0xb3ef,0x62ce,0xad78,0x73ae,0x528a,0x4a49,0x4229,0x4208,0x4208,0x41e8,0x41e8,0x4209,0x5acb,0x4208,0x41e8,0x41c8,0x41c7,0x39e7,0x526b,0x5aab,0x526a,0x4208,0x39c7,0x39e7,0x41e8,0x41e8,0x4209,0x5aab,0x39c7,0x39a7,0x526b,0x7bcf,0x7b06,0x8a42,0x8a02,0x91c2,0x91a2,0x9182,0x91a2,0x9182,0x9162,0x9142,0x9162,0x9142,0x9142,0x9142,0x9122,0x9143,0x8943,0x8943,0x8123,0x7923,0x7124,0x6944,0x5104,0x30e3,0x20c3,0x18c4,0x18e4,0x18e5,0x18e5,0x1906,0x2107,0x1927,0x1928,0x1928,0x2148,0x2148,0x2168,0x2167,0x2186,0x21a5,0x21a5,0x21c5,0x21e5,0x2a05,0x2a25,0x2a44,0x3264,0x3264,0x3a85,0x42a5,0x5305,0x6385,0x7bcc,0x7b8f,0x62cc,0x6b2d,0x736e,0x736e,0x62cb,0x5a8a,0x6b4d,0x9d56,0x9536,0x9535,0x9515,0x9515,0x9d56,0x9536,0x8cd4,0x8cd4,0x9535,0xa597,0x9d56,0x9515,0xa556,0x9d56,0x9515,0x9d56,0x9515,0x8473,0x8494,0x7c73,0x8493,0x84b4,0x84d3,0x8cf4,0x8cf4,0x7432,0x7c32,0x7c73,0x7c52,0x8493,0x8493,0x7c72,0x7c32,0x8473,0x8cb4,0x7c73,0x7c52,0x7c72,0x8493,0x8493,0x7c51,0x7431,0x7431,0x7c72,0x7c51,0x8cd3,0x94f4,0xa576,0x94f4,0x7c52,0x7c52,0x73f0,0x73f0,0x7410,0x7411,0x7411,0x63b0,0x6bf1,0x7c31,0x7430,0x7c31,0x8cd3,0x7c72,0x8472,0x7c51,0x73cf,0x6bd0,0x7410,0x6bf0,0x6c10,0x7410,0x7430,0x73f0,0x73f0,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x73f0,0x638f,0x638f,0x6b8f,0x638e,0x638e,0x6baf,0x638e,0x636e,0x6baf,0x638f,0x6b6e,0x6b8e,0x73cf,0x73cf,0x6bae,0x6bae,0x73cf,0x8451,0x6b6e,0x636e,0x634d,0x5b2c,0x638e,0x638d,0x634d,0x634d,0x632d,0x632d,0x5b0c,0x634d,0x5b0c,0x5b0c, +0x7368,0x7348,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7b69,0x7b69,0x7b68,0x7b68,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7349,0x7b49,0x7349,0x7328,0x7308,0x7309,0x7309,0x7309,0x7b29,0x7b4a,0x838a,0x7b6a,0x7b6a,0x838b,0x8bcd,0x8bed,0x940e,0x8c0e,0x8bed,0x940e,0x944f,0x942f,0x8c0e,0x8c0e,0x8bee,0x942f,0x9c6f,0x942f,0x8c0e,0x8c0d,0x93ee,0x9c4f,0x9c90,0x8c2e,0x8bed,0x8bed,0x8bee,0x8bee,0x8c2e,0x946f,0x8c4f,0x8c0f,0x83cd,0x83ad,0x8bad,0x8bad,0x83ce,0x83ae,0x83ce,0x83ee,0x83cd,0x83cd,0x8bee,0x8bee,0x942f,0x9470,0x9450,0x8c50,0x8c0f,0x8c0f,0x8c0f,0x8c0f,0x8c2f,0x840f,0x83ef,0x8bef,0x8bef,0x8bef,0x83ef,0x9cb1,0x9cf2,0x8c50,0x8c50,0x9471,0x9471,0x9471,0x8c71,0x8c71,0x9471,0x94b2,0x94b2,0x9cb2,0x9c92,0xad35,0xde9a,0xbdf8,0xbe18,0xb5b6,0xa534,0xa555,0xad75,0xa575,0xb5d7,0xad96,0xad76,0xbdf8,0xbe38,0xbe39,0xbe39,0x5aee,0xad77,0x73ad,0x52ab,0x4a6a,0x4a29,0x4209,0x4208,0x4208,0x41e8,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41c7,0x41e7,0x41e8,0x41e8,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c8,0x41e8,0x39c7,0x39c7,0x4208,0x526a,0x5226,0x51c4,0x51a4,0x5184,0x5985,0x5985,0x5985,0x5984,0x5984,0x5964,0x5964,0x5964,0x5964,0x5944,0x5944,0x5965,0x5985,0x5985,0x5965,0x5985,0x5185,0x5185,0x4145,0x3145,0x3145,0x2945,0x3186,0x3186,0x3146,0x3167,0x3167,0x3187,0x3187,0x3188,0x3188,0x31a8,0x31a8,0x31a7,0x31a7,0x39c6,0x39e6,0x39e6,0x31e6,0x3a06,0x3a06,0x3a26,0x3a46,0x4246,0x4246,0x4266,0x4aa6,0x5ae7,0x6b4c,0x734e,0x62ec,0x6b4d,0x630c,0x734e,0x734d,0x734d,0x736e,0xadd9,0xa597,0x9d76,0x9d96,0xa596,0xa577,0x9d36,0x9d35,0x9d55,0xadb7,0xbe39,0xc69a,0xadf7,0xadd7,0xadb7,0xa556,0xadb7,0xa556,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cf4,0x8cf4,0x9535,0x8493,0x84b3,0x8cb4,0x84b3,0x8cb4,0x8493,0x8452,0x8452,0x8cb4,0x8452,0x8452,0x8493,0x8473,0x84b3,0x84b3,0x8493,0x8472,0x7c52,0x8452,0x8472,0x9514,0xa575,0x9d55,0x8cb3,0x8452,0x8452,0x73f0,0x73f0,0x7c31,0x7410,0x7411,0x6bf0,0x7410,0x7c51,0x7c51,0x7c11,0x73f0,0x73f0,0x8451,0x8492,0x8472,0x73d0,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x7c30,0x73f0,0x73f0,0x7bf0,0x73d0,0x73af,0x73d0,0x73d0,0x6baf,0x638f,0x6bcf,0x6bcf,0x6b8e,0x636e,0x6bcf,0x636e,0x6baf,0x638e,0x6b8f,0x73d0,0x6b8f,0x7bf0,0x7c10,0x73f0,0x7bf0,0x73f0,0x636e,0x634e,0x634e,0x5b0d,0x634d,0x6b8e,0x5b4d,0x634d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x52cb, +0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x6b2c,0x630c,0x6b4c,0x6b4d,0x632c,0x6b6d,0x6b8d,0x634d,0x632c,0x632d,0x630c,0x5b0c,0x630c,0x5b2c,0x530c,0x5aec,0x5aeb,0x5aeb,0x5aec,0x62ec,0x630c,0x6b6e,0x6b4d,0x6b4d,0x83ef,0x94b2,0x9cd2,0xa513,0x9cf3,0x9cf3,0x94b2,0x9cf3,0xa534,0x9d34,0x94d2,0x94b2,0x94b2,0x9d13,0xa555,0x94f3,0x7c30,0x8c71,0x9492,0xa534,0xa555,0x94b2,0x8431,0x8431,0x8c72,0x94d3,0x9d14,0xa534,0xad75,0x9cf3,0x8c91,0x8451,0x7c31,0x7c11,0x7c31,0x73f0,0x8451,0x94f3,0x94f3,0x8cb2,0x8cb3,0x94d3,0x9d14,0xad75,0xb5d7,0x9d55,0x8c92,0x8471,0x7c31,0x7410,0x8471,0x8c72,0x8c72,0x8c92,0x8c93,0x8452,0x9d35,0xa556,0x94d4,0x94d4,0x94b3,0x8c93,0x8c93,0x8493,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0xb5b8,0xb5b7,0x9d15,0x9d15,0x9d56,0xa576,0xa577,0xa576,0xa556,0xa577,0xa577,0xbdf9,0xbe19,0xb5d8,0xb5f8,0xb619,0x52ad,0x9493,0x632c,0x528a,0x52aa,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39a7,0x3186,0x3186,0x3186,0x3986,0x3986,0x39a6,0x3986,0x3986,0x39a6,0x41e7,0x41e7,0x41e7,0x41a7,0x3986,0x39a6,0x41a7,0x41a7,0x41a6,0x39a6,0x39a6,0x41c7,0x41a7,0x41c7,0x39c7,0x39a7,0x4a08,0x526a,0x4a29,0x4a29,0x41e8,0x41e7,0x41e7,0x41e8,0x41e8,0x41e8,0x41e8,0x4a08,0x4a29,0x4a28,0x4a49,0x5269,0x4a48,0x4a49,0x4a28,0x4208,0x4a49,0x5aaa,0x4a28,0x4a28,0x5249,0x5269,0x62ec,0x6b2d,0x6b0c,0x736d,0x6b2d,0x6b0d,0x7bcf,0x8c51,0x7baf,0x9d57,0x9d57,0x9d56,0x9d56,0xa577,0xa576,0x9515,0x8cf4,0x9d35,0xa556,0xadd8,0xbe59,0xadb7,0xbe39,0xadd7,0xa556,0xadb7,0x9d36,0x8cb4,0x9d15,0x94f5,0x8cb4,0x8473,0x8cd4,0x8cb4,0x8493,0x8cb4,0x8cd4,0x8cf4,0x94f5,0x84b4,0x8493,0x8473,0x8473,0x8cd4,0x8473,0x9515,0x8cd4,0x8472,0x8493,0x8472,0x8493,0x8452,0x8452,0x7c52,0x7c51,0x94f4,0x9d35,0x94f4,0x8cb3,0x7c31,0x7c52,0x7410,0x73f0,0x7c11,0x7c10,0x7c31,0x7c31,0x7410,0x7c11,0x7411,0x73f0,0x73f0,0x7c31,0x8472,0x7c51,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x6bcf,0x6baf,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x6baf,0x6baf,0x6bcf,0x6bcf,0x6bd0,0x638f,0x6baf,0x638e,0x73ef,0x7bd0,0x634e,0x634e,0x634d,0x638e,0x73cf,0x73cf,0x73af,0x6b8e,0x7bf0,0x73f0,0x6baf,0x636e,0x634e,0x636e,0x634e,0x73af,0x6b8e,0x632d,0x5b2d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0d,0x52ec, +0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x634d,0x6b4d,0x630c,0x5aeb,0x632c,0x632c,0x6b6d,0x73ae,0x634c,0x636d,0x636d,0x5b2c,0x632c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aec,0x5b0c,0x632c,0x6b6e,0x6b4d,0x7bae,0x8c51,0x9cb2,0x9492,0x8c51,0x9492,0x9cd3,0xa4d3,0x9cb2,0x8c30,0xa514,0xad55,0x9492,0xa514,0x94b3,0x94d2,0xb5d6,0x9d13,0x8c50,0xa513,0x94b2,0x9cb2,0xb5b6,0x9cf3,0x8451,0x9472,0x9cf3,0xa534,0x94b2,0xa554,0xbdf7,0x9d13,0x94d3,0xa555,0xad76,0x94f4,0x8c93,0x9492,0xad55,0xbdf7,0xb5d7,0x94b3,0xa555,0xbdb7,0xa513,0xad55,0xad96,0xa535,0xad96,0x94d3,0x8cb2,0xad95,0xad75,0xa554,0xbe38,0xb5f7,0xa555,0xad96,0xb5d7,0xb5d7,0xbdf8,0xb5b6,0xb5b7,0xbdf7,0xb5d7,0xb5f7,0xad76,0xb5f8,0xadd7,0x94f4,0x94d4,0x9d35,0xb5f8,0xa576,0x9d15,0x9d56,0xa577,0xadb8,0xad97,0xa597,0xadb7,0xadb8,0xb5f8,0xadd8,0xad97,0xadb8,0xb639,0x4a6b,0x4229,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2965,0x3165,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2925,0x2945,0x2945,0x2925,0x2925,0x2945,0x2965,0x3185,0x2965,0x2945,0x2965,0x2965,0x2945,0x2924,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x39a6,0x39a7,0x3186,0x3166,0x3166,0x3186,0x3166,0x3165,0x2945,0x3165,0x39a6,0x3166,0x3186,0x3186,0x3166,0x31a6,0x4208,0x39c7,0x39e7,0x39a6,0x3186,0x39a6,0x39a6,0x3186,0x39a6,0x39a6,0x39c7,0x41e8,0x41e8,0x4228,0x4228,0x4208,0x4228,0x41e7,0x39a7,0x4208,0x526a,0x41e8,0x4a08,0x4a29,0x4a49,0x528a,0x5acb,0x62eb,0x62eb,0x5acb,0x528a,0x630c,0x736e,0x6b6e,0x9d76,0xa597,0xa576,0x9d56,0xa576,0xadb7,0xa597,0x9535,0x9515,0x9515,0xad97,0xb5d8,0xa576,0xb5f8,0xb5d8,0xad97,0xad97,0x9d56,0x8cf5,0x8cd4,0x9d35,0x94f5,0x8cb4,0x8cb4,0x8493,0x8493,0x8493,0x8493,0x9515,0x9515,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8493,0x8cd4,0x9515,0x8cd4,0x8cd4,0x8cd4,0x8c93,0x8cb3,0x8452,0x7c31,0x7c52,0x7c31,0x8493,0x8cb3,0x9514,0x8cd3,0x8cb3,0x8493,0x7c51,0x7c31,0x8452,0x8431,0x7c31,0x7c11,0x73f0,0x7bf1,0x73f0,0x7c11,0x7c31,0x7c11,0x7c52,0x7c11,0x73f0,0x73f0,0x73d0,0x73d0,0x6bd0,0x73f0,0x73f0,0x6bd0,0x6baf,0x6baf,0x73d0,0x73d0,0x73d0,0x73d0,0x6bcf,0x73f0,0x73f0,0x6baf,0x6baf,0x6bce,0x8471,0x73ef,0x6b8f,0x636e,0x6baf,0x6b8e,0x638e,0x634d,0x8c71,0x8431,0x73af,0x6b8e,0x6b8e,0x636d,0x6b8e,0x636d,0x636d,0x73af,0x6b8e,0x632d,0x5b0d,0x5b0c,0x5b4d,0x638e,0x5b4d,0x52ec,0x530c, +0x5aeb,0x5aeb,0x5aeb,0x62eb,0x632c,0x632c,0x630c,0x62ec,0x62ec,0x632d,0x6b4e,0x630c,0x632c,0x6b6d,0x634d,0x5aeb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x630c,0x5b0d,0x5b0d,0x6b6e,0x6b6e,0x6b8f,0x8432,0x9cf3,0xa514,0x8c51,0x9cd2,0x9491,0xb595,0xa533,0x842f,0x9cb2,0xacf3,0x9cd3,0xc638,0x9cf3,0x8410,0xb575,0xad14,0x9cd3,0xc679,0x94f4,0x8410,0xad76,0xbe18,0x8cb2,0x8c92,0xb5d7,0xbe17,0x94b2,0x8c71,0xad54,0x94b2,0xa534,0x9492,0xb596,0xad75,0x94d3,0xbdd6,0xa4f3,0xa4f3,0xce59,0x9492,0xb5b7,0xc639,0xa555,0xad54,0xad55,0x9d14,0xc639,0xadb6,0xa535,0xbe18,0xb5b7,0xbdf8,0xb596,0xad76,0xbdf8,0xb596,0xbdf8,0xce79,0xce59,0xbdd7,0xce59,0xc659,0xbe18,0xce59,0xbdf8,0xdefb,0xceba,0xadb7,0xa596,0xd6da,0xdf1c,0xb5f8,0x9d36,0xa577,0xa597,0xadb8,0xad97,0xb619,0xadf8,0xb5f9,0xb5f8,0xadb7,0xa597,0xa5b7,0xb619,0x52aa,0x18c3,0x18a3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18a3,0x18a3,0x18c3,0x2104,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x2104,0x20e3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2925,0x2124,0x2104,0x2924,0x2945,0x2925,0x2945,0x2965,0x3166,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3186,0x39a6,0x4229,0xa597,0xa597,0xa556,0xa556,0xa556,0xad96,0xadd8,0xadd8,0x9d76,0x9d76,0xa576,0xa556,0xa576,0xbe19,0xadb7,0xad97,0xa576,0x9d35,0x8cf4,0x8cd4,0x9d35,0x9515,0x94f4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8493,0x8cd4,0x8cf4,0x8cd4,0x8493,0x94f4,0x94f4,0x9514,0x8cf4,0x9515,0x94d4,0x8c93,0x8c93,0x8493,0x8452,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x94d4,0x8c93,0x7411,0x7c11,0x7c31,0x7410,0x7c10,0x7411,0x73f1,0x73f1,0x7c11,0x7c51,0x7c51,0x7c11,0x7c32,0x73f1,0x73f0,0x7bd0,0x7bf0,0x7c11,0x7410,0x6bcf,0x7c11,0x7c31,0x73f0,0x7c11,0x7c11,0x73b0,0x73d0,0x73d0,0x73f0,0x7410,0x6b8f,0x73cf,0x73ce,0x8472,0x6baf,0x73ef,0x73d0,0x636e,0x73f0,0x73f0,0x73ef,0x6b8e,0x8430,0x7bf0,0x738f,0x6b8e,0x638e,0x6b8e,0x6bae,0x7c30,0x8c92,0x632d,0x73af,0x73af,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b0c,0x52ec, +0x5acb,0x630c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x6b4d,0x5b0c,0x632c,0x632d,0x632d,0x5b0c,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x5b0c,0x630c,0x6b4d,0x6b4d,0x6b4e,0x7bb0,0x9452,0x9c92,0x9471,0xbdb6,0x8c70,0x9491,0x9cb2,0x8c30,0xad55,0x9472,0xb596,0xc638,0x8c91,0x840f,0xad34,0xa4f3,0xad96,0xc659,0x8451,0x8c11,0xa514,0xce9a,0x9cf3,0x9493,0x9cd3,0xa4f4,0x9cd3,0xad75,0xb596,0x94b2,0xb5b6,0x9472,0xad35,0x9cd3,0xbdf7,0xc6ba,0x9514,0x9452,0xc638,0xad96,0x9492,0xad35,0xb5d7,0xbe18,0xb5d7,0x9d14,0xa535,0xa514,0xbdd7,0xc659,0x9d14,0xc638,0xbdf8,0xb5b7,0xc639,0xb5b7,0xad56,0xdf1c,0xc639,0xa535,0xce3a,0xc639,0xbdf8,0xbdf8,0xbdf8,0xc659,0xdefb,0xc659,0xb5d7,0xce79,0xdefc,0xc67a,0x9d56,0x9d77,0xa577,0xa577,0xad97,0xadb8,0xb619,0xb619,0xb5f9,0xadb8,0xadb7,0xadb7,0xbe5a,0x5aeb,0x20e3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18a3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a2,0x18a2,0x18a3,0x18c3,0x10a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x20e4,0x18e3,0x18c3,0x18e3,0x3186,0xadd8,0xa597,0x9d56,0xa576,0xa556,0xa576,0xa5b7,0xa597,0xadb7,0xa596,0xa576,0x9d35,0x9d56,0xbdf9,0xad97,0x9d15,0x94f4,0x9d36,0x94d4,0x94f4,0x9d35,0x9514,0x94f4,0x8cd4,0x8cb3,0x8cd4,0x9d36,0x8cd4,0x8473,0x8493,0x8493,0x8cd4,0x94f4,0x94f4,0x94d3,0x9d14,0x9535,0x9d55,0x8cb3,0x9d14,0x94f4,0x8452,0x8cb4,0x8cd4,0x8473,0x7c52,0x8493,0x7c52,0x8cd4,0x8493,0x8cb3,0x9514,0x8cd3,0x8cd3,0x7c51,0x7c10,0x7c31,0x7c11,0x7411,0x7411,0x7c31,0x7c51,0x8452,0x7c31,0x7c31,0x7431,0x8452,0x7c11,0x7bf0,0x7bf0,0x7c10,0x6baf,0x6baf,0x6bd0,0x7c31,0x73d0,0x73af,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x6baf,0x6bae,0x6b8e,0x73af,0x6b8f,0x73af,0x7c11,0x73d0,0x6b6e,0x73cf,0x7c30,0x8c92,0x73cf,0x6b8e,0x73af,0x6baf,0x6bae,0x8451,0x6baf,0x73cf,0x8c72,0x73cf,0x632d,0x634d,0x636e,0x5b2d,0x5b2d,0x5b0c,0x5b2c,0x634d,0x5b0c, +0x5aeb,0x5b0b,0x630c,0x630c,0x632c,0x634d,0x630c,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6d,0x630c,0x630c,0x634d,0x632d,0x630c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5acb,0x5aec,0x5b0c,0x634d,0x6b6e,0x6b6e,0x6b6e,0x7bd0,0x8c52,0x8c51,0xb596,0xb5b6,0x840f,0x9471,0x9cb2,0x83ef,0xad34,0x8c51,0xbdd6,0xc638,0x8c71,0x840f,0xa514,0x9c92,0xb5b7,0xc679,0x8c92,0x8c51,0x9cf4,0xc679,0x8cb2,0x9492,0xa514,0xad55,0xad96,0xad96,0xa514,0x94b2,0x9cd3,0x9472,0xc5f8,0x9492,0xce5a,0xbe59,0x8493,0x8c32,0xbdb7,0xc659,0xa535,0x9cf4,0x9cf3,0x9d14,0xbe59,0xad96,0x94d3,0xa515,0xd69a,0xbdf8,0xa535,0xa534,0xad96,0xbdf7,0xce7a,0xb5d7,0xa534,0xe77d,0xc659,0x9d15,0xc639,0xc638,0xc618,0xc639,0xbdf8,0xbdd7,0xce7a,0xce39,0xc5f7,0xbdd7,0xdedb,0xc67a,0x9d76,0xa577,0x9d56,0xa577,0xb5f8,0xb619,0xb639,0xadf9,0xa5b8,0xa5b8,0xadb8,0xadb8,0xb619,0x5aab,0x20e3,0x2124,0x31a7,0x2944,0x18c2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18a2,0x10a2,0x10a2,0x18c3,0x3186,0xa597,0xadb7,0xa577,0xadb7,0xa5b7,0xa576,0xadb7,0xadb7,0xa5b7,0xadd8,0xa576,0x94f5,0xa556,0xb5f8,0x94f5,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9535,0x8cd4,0x9514,0x94f4,0x8493,0x8cd4,0x9535,0x84b4,0x84b4,0x8cb3,0x8472,0x8cb3,0x9d35,0x9d35,0x94f4,0x9514,0x9534,0x9515,0x8cb3,0x9d14,0x9d56,0x8452,0x8472,0x8493,0x7c72,0x7c72,0x7c72,0x7c51,0x8cb3,0x8cf4,0x8cd3,0x9d35,0x8cd4,0x8cb3,0x8493,0x7c11,0x7c32,0x73f0,0x73f0,0x7410,0x7410,0x7c31,0x8472,0x7c31,0x7c31,0x7411,0x73f0,0x6b8f,0x6baf,0x7c10,0x73cf,0x73cf,0x6baf,0x6bd0,0x7c31,0x7c11,0x73d0,0x73f0,0x6bd0,0x73f0,0x6baf,0x6baf,0x6b8e,0x8471,0x7c10,0x634e,0x6b8f,0x6b8f,0x73af,0x738f,0x8431,0x8c92,0x73cf,0x73cf,0x6bcf,0x6baf,0x6b8e,0x6b8e,0x73af,0x73ef,0x7c10,0x73af,0x6b4d,0x6b6d,0x636d,0x632d,0x634d,0x634d,0x5b0c,0x5b0c,0x5b2d,0x5b0c,0x52ec, +0x632c,0x630c,0x5acb,0x5aeb,0x5b0c,0x630c,0x632c,0x734d,0x738e,0x636d,0x6b6d,0x6b6e,0x5aeb,0x5aeb,0x630c,0x632c,0x634d,0x630c,0x5b0b,0x5aeb,0x52cb,0x5aeb,0x5b0c,0x5aeb,0x5b0c,0x632c,0x6b8e,0x6b8e,0x6b8e,0x7bcf,0x8c31,0x9492,0xbdd7,0x9c92,0x8c30,0xbdd6,0xad75,0x8c51,0x9471,0x9cb2,0xad54,0xc638,0x9cf3,0x8c50,0xad54,0x9cd3,0xa535,0xce7a,0x9513,0x8451,0xa514,0xb5f8,0x8451,0x9492,0xbdd7,0xadb6,0x8492,0x94d3,0x9cf3,0xa534,0xbdd7,0x8c51,0xb596,0x9cd3,0xbdf7,0xc679,0x9d14,0x8c51,0xb5b6,0xad35,0xbe18,0xbe18,0xa555,0x8c51,0xbe38,0xb5f8,0x9d14,0xb5b7,0xce9a,0x9d14,0xbe17,0xbe18,0x9cf4,0x94d3,0xd6db,0xbe18,0x9cf4,0xdf1c,0xbdf8,0x9cf5,0xc67a,0xbe38,0xbdf7,0xbe18,0xb5b7,0xc618,0xc5f8,0xc639,0xd69a,0xbdd8,0xd6bb,0xbe5a,0xa5b7,0xa577,0xa557,0xa597,0xb5f8,0xadf8,0xb5f9,0xb5f8,0xadd8,0xadd9,0xadd8,0xadb8,0xadb8,0x526a,0x20e3,0x2945,0x4229,0x4a6a,0x39e7,0x2124,0x10a2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x1082,0x18c3,0x2124,0x3165,0x3186,0x3a08,0xad98,0xadb8,0xa556,0xa597,0xadb8,0xa597,0xadd8,0xb5f9,0xa597,0xa5b7,0xa576,0x94f4,0x9d36,0xadd7,0x94f4,0x8cd4,0x9515,0x94f4,0x8cf4,0x94f4,0x9515,0x94d4,0x94d4,0x94f4,0x8cf4,0x94f4,0x9d35,0x8cb3,0x8493,0x8493,0x8c93,0x8c93,0x8cb3,0x9514,0x8cd3,0x8cf3,0x9534,0x8cd3,0x8cd4,0x8cb3,0x9d15,0x8cb3,0x7c31,0x8493,0x8473,0x8493,0x8472,0x8472,0x8cb3,0x8cb3,0x94d3,0x94f4,0x8c93,0x7c31,0x7c52,0x7c51,0x7c31,0x73f0,0x73f0,0x7c31,0x7431,0x8472,0x7c52,0x6baf,0x7411,0x7411,0x73d0,0x6baf,0x7c10,0x8451,0x73cf,0x73d0,0x6bd0,0x6bf0,0x7411,0x7c31,0x7c11,0x73f0,0x6bf0,0x6bef,0x6bcf,0x6baf,0x6b6e,0x8c92,0x7c10,0x6b6e,0x73d0,0x73cf,0x6b8e,0x636e,0x7c10,0x9cf4,0x73f0,0x73cf,0x6b8e,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b6d,0x73af,0x7bf0,0x6b6e,0x632d,0x636d,0x636d,0x632d,0x5b2c,0x632d,0x5b0c,0x5aec,0x5aec,0x5aec, +0x632c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x6b4d,0x632c,0x736e,0x73af,0x630c,0x62eb,0x632c,0x738e,0x738e,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x630c,0x634c,0x6b6d,0x738e,0x7bcf,0x7bcf,0x8410,0x8431,0xa535,0xad96,0x8c71,0x8c71,0xa513,0x9cf2,0x8c50,0xad75,0xa534,0x9471,0xb575,0x9d13,0x94b2,0xad95,0x8c92,0x9493,0xb576,0x9d34,0x94d3,0xb5f8,0x9d56,0x8cb3,0x9492,0xb5d7,0x9d15,0x73f1,0x94b3,0x94b3,0xad96,0xb5b7,0x8452,0xad76,0xad55,0x9492,0xb596,0xa534,0xa534,0xbe18,0x94b3,0xa555,0xad75,0x9cf3,0xa535,0xb5d7,0x9d35,0x94d4,0xb5b7,0xbe39,0x8cd4,0xadb7,0xbdf7,0xb597,0xb597,0xce9a,0xadb7,0xa535,0xd6dc,0xb5d8,0xa556,0xce9b,0xc639,0xbe18,0xbdf7,0xbdf8,0xdedb,0xbdd8,0xce9a,0xd6db,0xbdf8,0xd6fc,0xbe59,0xa596,0xa556,0xa557,0xa597,0xa597,0xb5f8,0xb5d8,0xa577,0xb5d8,0xb5f9,0xb5f9,0xadd8,0xb5f9,0x4229,0x2104,0x2945,0x422a,0x632d,0x634d,0x5aeb,0x41e7,0x20e3,0x18e3,0x18c3,0x18a3,0x10a2,0x18a2,0x10c2,0x18a3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1061,0x1081,0x1081,0x0861,0x1082,0x0841,0x0020,0x0020,0x0841,0x0020,0x0841,0x0841,0x0841,0x0841,0x0020,0x0841,0x0861,0x1081,0x1082,0x1082,0x1061,0x0861,0x1081,0x0861,0x0861,0x1081,0x1081,0x1081,0x0881,0x1081,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x1082,0x1062,0x1061,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2964,0x4a27,0x5aa9,0x5289,0x4229,0x4a6a,0xad98,0xa597,0xadb7,0x9d56,0xa577,0xa597,0xad97,0xadb8,0xad97,0x9d56,0x9d56,0xa576,0x9d55,0xa576,0x94f4,0x94f4,0x94f4,0x94f4,0x9515,0x94f4,0x9d35,0x9d56,0x8cd4,0x8cb3,0x8cb3,0x8cb3,0x9d15,0x8cb3,0x8cd4,0x8cb3,0x8cb3,0x94f4,0x8cb3,0x8cd3,0x84b3,0x8cb3,0x8cd3,0x94f4,0x94f4,0x94d3,0x8cb3,0x8493,0x7c52,0x8473,0x84b3,0x8cb3,0x7c52,0x8493,0x7c52,0x8cb3,0x8cb3,0x8c93,0x94d4,0x7c31,0x7c52,0x7c31,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x94f4,0x7c31,0x73f0,0x73d0,0x7410,0x73f0,0x73cf,0x7410,0x7c10,0x73d0,0x73d0,0x73f0,0x73f0,0x73f0,0x7bf0,0x73d0,0x73f0,0x73f0,0x6bcf,0x73f0,0x6baf,0x73cf,0x6baf,0x638e,0x6baf,0x636e,0x73d0,0x6b8e,0x6baf,0x6baf,0x6b6f,0x73d0,0x73cf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73cf,0x6b6e,0x634d,0x636e,0x6b8e,0x634d,0x632d,0x5b2d,0x52ec,0x52ec,0x52ec, +0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x6b4d,0x6b6d,0x8410,0x73ae,0x630c,0x6b2d,0x6b4d,0x6b6e,0x73af,0x736e,0x6b6e,0x6b4d,0x6b6d,0x630c,0x5b0c,0x632c,0x6b6d,0x6b6e,0x738e,0x73af,0x7c10,0x8410,0x8c51,0xa535,0x94b3,0x8451,0x8c71,0x8c71,0x9cf2,0xa554,0x9cf3,0x8471,0x8431,0x8c71,0x9d14,0xa535,0x8c72,0x73d0,0x8411,0x8431,0x9d35,0xa576,0x94f4,0x7c52,0x7bf0,0x8431,0x9d14,0x8452,0x73d0,0x7c11,0x8431,0x94b3,0x8c92,0x8452,0x8c93,0x8c72,0x7bf0,0x8432,0x9cf4,0x9d35,0x8c93,0x8452,0x8452,0x8c93,0xa536,0x9d36,0x8c93,0x7c11,0x8431,0xa535,0x94d4,0x8452,0x8c73,0x9493,0xa556,0xad96,0x9d35,0x8cd4,0x94d4,0xad97,0x9cf5,0x9cf4,0xad76,0xb5b7,0xb5b7,0xb5b7,0xad76,0xbe19,0xa556,0xad97,0xb5f8,0x9d35,0xb619,0xad97,0xa556,0xa556,0x9d56,0xadb7,0xadb7,0xb5f9,0xadd8,0xa597,0xadb7,0xb619,0xb5f8,0xb619,0xbe3a,0x4208,0x2104,0x2125,0x422a,0x6b6f,0x73d0,0x8452,0x7bae,0x3185,0x3165,0x2124,0x2104,0x2104,0x2104,0x2124,0x2925,0x2104,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18e3,0x18e3,0x20e3,0x20e4,0x20e3,0x2104,0x2104,0x2124,0x2944,0x2924,0x2945,0x2965,0x3165,0x3165,0x3185,0x2945,0x2965,0x5268,0x734c,0x8c4f,0x630c,0x4a4a,0x4a8b,0xa577,0xadd8,0xadb7,0xa597,0xa597,0xadb8,0xadb8,0xa557,0xa556,0x9d56,0x9d56,0xadb7,0xa576,0x9d15,0x94d4,0x94d4,0x94f4,0x9d15,0x9d15,0x8cd4,0x9d56,0x9d56,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x94d4,0x8cb3,0x84b3,0x94f4,0x8cd4,0x94f4,0x94f4,0x8cb3,0x8c93,0x8c73,0x9d15,0x94d4,0x8c93,0x8cb3,0x8472,0x8473,0x8493,0x8cd3,0x8cd3,0x8493,0x7c11,0x8452,0x7c52,0x8c93,0x9d15,0x8c93,0x7c52,0x7c31,0x7c52,0x7411,0x73d0,0x7c11,0x73f0,0x7c31,0x7c31,0x94d4,0x7c31,0x73b0,0x73b0,0x73d0,0x73f0,0x73d0,0x73d0,0x7c10,0x6baf,0x73d0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73af,0x73af,0x73d0,0x73d0,0x6baf,0x6baf,0x6bcf,0x7411,0x6b8f,0x636e,0x634d,0x7c31,0x6b8e,0x6baf,0x6b8f,0x6b6e,0x6baf,0x73cf,0x6baf,0x6bcf,0x6baf,0x6bae,0x73af,0x73af,0x73cf,0x73af,0x6bae,0x638e,0x6b8e,0x636e,0x636e,0x634e,0x634e,0x5b2d,0x52ec,0x52cb,0x52cb, +0x5aeb,0x630c,0x630c,0x630c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x73cf,0x7c30,0x634c,0x5aeb,0x630c,0x632d,0x630d,0x6b4e,0x6b8e,0x6b6e,0x73ae,0x73ae,0x6b6d,0x636d,0x636d,0x634d,0x632d,0x6b6e,0x73ae,0x73cf,0x73cf,0x7c10,0x8451,0x7bf0,0x73cf,0x7bd0,0x8431,0x8451,0x73f0,0x634e,0x6b6e,0x6b6f,0x738f,0x7bd0,0x738f,0x6b6e,0x738f,0x738f,0x73d0,0x7c11,0x73f1,0x6bb0,0x73f0,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x7bf0,0x7bf0,0x7bd0,0x7c11,0x7c11,0x73f0,0x73f0,0x7c11,0x7c32,0x7c11,0x7c11,0x73f1,0x7c11,0x8452,0x7c11,0x7411,0x7c52,0x7c11,0x8451,0x8472,0x8472,0x8472,0x8472,0x8472,0x8473,0x8c73,0x8cb3,0x94f4,0x8cf4,0x8493,0x8493,0x8cb4,0x8c93,0x8452,0x8cb4,0x94f5,0x8c93,0x8cb4,0x94f5,0x8cb4,0x8cb4,0x94d4,0x9515,0x9515,0x94f5,0x9d36,0xa597,0xadb7,0xa597,0xadd8,0xadb8,0xa577,0xadb8,0xadd8,0xadf8,0xb619,0xbe39,0x4208,0x2124,0x2945,0x424a,0x6b90,0x73f1,0x9cf6,0x9cd2,0x39a6,0x2945,0x2104,0x20e4,0x20e3,0x18e3,0x2104,0x2124,0x20e4,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x2104,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x20e3,0x20e4,0x2104,0x20e3,0x18e3,0x18c3,0x18c3,0x1082,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0861,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2945,0x3165,0x3165,0x2965,0x3185,0x3185,0x3186,0x3186,0x3165,0x31a6,0x4a28,0x83ef,0xb595,0x6b2d,0x4a6a,0x52ab,0xadd8,0xb619,0xadd8,0xadd8,0xa597,0x9d77,0xa556,0xa597,0xa576,0x9d35,0x9d15,0x9d15,0x9d36,0x9d15,0x8cd4,0x8cf4,0x94d4,0x94f4,0x9d15,0x94d4,0x8cb4,0x9515,0x94d4,0x8cb4,0x8c93,0x8cd4,0x8cb4,0x84b3,0x8493,0x8493,0x94d4,0x94f4,0x94f4,0x94f4,0x8c93,0x8c93,0x8493,0x7c52,0x8452,0x8472,0x8473,0x84b3,0x7c52,0x94f4,0x8472,0x8452,0x7c11,0x8473,0x8452,0x7c31,0x9515,0x8cd4,0x7411,0x73f0,0x7431,0x7c52,0x7c11,0x73f1,0x7411,0x7c31,0x7411,0x8492,0x7c11,0x8472,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x7c31,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x6baf,0x7c10,0x73d0,0x6baf,0x73d0,0x7c11,0x73f0,0x73d0,0x73f0,0x6b8f,0x634d,0x638e,0x9d34,0x7c30,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73cf,0x73f0,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x6baf,0x73cf,0x6bcf,0x638e,0x636e,0x6b8e,0x632d,0x630d,0x6b6e,0x5b0c,0x52eb,0x52eb,0x52eb, +0x5aeb,0x630c,0x630c,0x62ec,0x6b0d,0x6b4d,0x6b4e,0x6b4d,0x6b6d,0x7bef,0x6b8e,0x5b2c,0x5b0c,0x5aeb,0x5acb,0x5acc,0x630d,0x6b6d,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b8e,0x6b4d,0x6b6d,0x738e,0x73ae,0x738e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x6baf,0x6baf,0x73d0,0x6bcf,0x6b8e,0x6b6e,0x634d,0x634e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x73af,0x73af,0x738f,0x6baf,0x6bb0,0x73f0,0x7430,0x73f0,0x7bf0,0x8451,0x7c31,0x7c10,0x7bf0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c31,0x7c31,0x8452,0x7c51,0x7411,0x7c31,0x7c11,0x7c31,0x7c52,0x7c52,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x8472,0x8472,0x8c93,0x94d4,0x94d4,0x84b3,0x8472,0x8473,0x8493,0x8472,0x8473,0x8cb3,0x8cd4,0x84b3,0x8cd4,0x94f5,0x8cd4,0x8cb4,0x9515,0x9515,0x94d4,0x94f5,0xa556,0xad97,0x9d56,0xa597,0xa577,0x9d36,0xa556,0xadb7,0xadd8,0xb619,0xbe39,0xc69b,0x4208,0x2104,0x2946,0x4a6b,0x6b6f,0x7c11,0xad78,0xa534,0x3185,0x20e4,0x18c3,0x18c3,0x18a3,0x18a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2124,0x18c3,0x20e3,0x18e3,0x20e4,0x2924,0x39a6,0x9cd3,0xce39,0x632d,0x4a6b,0x52cc,0xadd8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0x9d56,0x9d56,0x9d15,0x9d36,0x9d36,0x9d15,0xa576,0x94f4,0x9535,0x9535,0x94f4,0x94f5,0x94f5,0x8c93,0x8493,0x8cb4,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x94f4,0x8493,0x8452,0x8473,0x8473,0x8493,0x8cb3,0x8cb3,0x8452,0x8492,0x8472,0x8c92,0x8cd3,0x8cb3,0x8493,0x7c32,0x8cb3,0xa556,0x8431,0x7c11,0x8c93,0x8472,0x7c11,0x7c32,0x8472,0x7c31,0x7c11,0x7c52,0x7c72,0x7c52,0x73f0,0x7411,0x73f0,0x7410,0x8472,0x7c52,0x8cd4,0x6bb0,0x73f0,0x6bcf,0x7410,0x7c31,0x7411,0x73f0,0x7410,0x73f0,0x73f0,0x73cf,0x73f0,0x7c51,0x73f0,0x6baf,0x73d0,0x7c31,0x73f0,0x6b8f,0x6b8f,0x6b8f,0x6bae,0x6bae,0x6baf,0x6b8e,0x73d0,0x6baf,0x6bcf,0x6b8f,0x73cf,0x73d0,0x73f0,0x636d,0x6b8e,0x6baf,0x6bcf,0x6bcf,0x73cf,0x73cf,0x6b8e,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x5b0c,0x52ec,0x52ec,0x52ec, +0x630c,0x5aeb,0x62ec,0x630c,0x6b4d,0x736e,0x6b4d,0x634d,0x7bef,0x6b8e,0x5b0c,0x632d,0x632d,0x5aec,0x5aeb,0x62ec,0x6b6e,0x6b4d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x6b8e,0x6b6d,0x6b6e,0x738e,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x6baf,0x6b8e,0x6bae,0x73cf,0x6baf,0x6b6e,0x6b6e,0x634e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x73af,0x73af,0x6b8f,0x73af,0x73af,0x73af,0x7bf0,0x8471,0x7c31,0x7c10,0x7c11,0x7c10,0x73f0,0x73f0,0x7bf0,0x8431,0x8472,0x7c31,0x7c31,0x8432,0x8452,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x7c31,0x7c52,0x7c52,0x7c31,0x7c31,0x8472,0x8493,0x8c93,0x8452,0x8452,0x8472,0x8472,0x8c93,0x94b4,0x94d4,0x8cd4,0x84b3,0x8472,0x7c72,0x8472,0x94d4,0x8cb3,0x8cd4,0x8cf4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x94f4,0x94d4,0x9d15,0x9d56,0xadb8,0xa597,0xa556,0x9d36,0xa557,0xadb8,0xadd8,0xb5f8,0xbe3a,0xce9b,0xbe3a,0x39e8,0x2104,0x2945,0x4a6b,0x634f,0x8433,0xbdfa,0xad54,0x3185,0x20e3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x3186,0xad75,0xce59,0x62ed,0x4a8b,0x5aec,0xadb8,0xadb8,0xb5f9,0xadd8,0xa597,0x9d56,0xa577,0x9d36,0x9d36,0xa556,0xa556,0x9d15,0x9515,0x9d35,0x9d35,0x9535,0x9d36,0x9d16,0x94d5,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8cb4,0x8493,0x8cb3,0x8cf4,0x94f4,0x94d4,0x8c93,0x73f1,0x7c32,0x8cb3,0x8493,0x8493,0x8493,0x8493,0x8472,0x8473,0x8472,0x8492,0x7c52,0x8472,0x8452,0x9d35,0x94f4,0x7c11,0x7c31,0x7c52,0x7c31,0x7c31,0x7c31,0x7c11,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x73f0,0x7c31,0x7c11,0x8c72,0x8c93,0x8452,0x6bb0,0x6bb0,0x6baf,0x73f0,0x7410,0x73f0,0x6baf,0x73f0,0x73cf,0x7c31,0x73f0,0x6baf,0x7411,0x7410,0x73cf,0x73f0,0x73f0,0x73af,0x6b8f,0x6b8f,0x6b8e,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x73f0,0x6bd0,0x73d0,0x6baf,0x6baf,0x73f0,0x73f0,0x6b8e,0x634d,0x73cf,0x6baf,0x6bcf,0x6baf,0x73f0,0x73af,0x6b4e,0x634d,0x636e,0x634d,0x634d,0x5b0d,0x5aec,0x52ec,0x52cb, +0x5b0c,0x630c,0x632c,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x7bef,0x7bcf,0x632d,0x630c,0x632d,0x632c,0x630c,0x632c,0x6b6d,0x7c10,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x738e,0x7bef,0x73cf,0x6bae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6b6d,0x6b8e,0x6b8f,0x6baf,0x6b8e,0x6b6e,0x636e,0x636e,0x636e,0x636e,0x6bae,0x73af,0x6b6e,0x6baf,0x73cf,0x73af,0x738e,0x7bcf,0x8411,0x7c10,0x7c11,0x7c11,0x7c11,0x7c31,0x7c10,0x7bf0,0x7c31,0x8432,0x7c11,0x8431,0x8432,0x8452,0x7c31,0x7c11,0x8452,0x8452,0x8452,0x8452,0x8473,0x8493,0x8493,0x8493,0x8452,0x8493,0x8cb3,0x8493,0x8472,0x8492,0x8c93,0x8cb3,0x8cb4,0x9cd4,0x9515,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x8cd4,0x94d4,0x94f4,0x8cd4,0x8cd4,0x9d35,0x9515,0x8cd4,0x9515,0x94f5,0x9d15,0xa576,0xadb7,0xad97,0xa556,0x9d36,0xad98,0xadd8,0xb5f8,0xb5f9,0xcebb,0xbe39,0xadb8,0x39c7,0x2124,0x2105,0x4a6b,0x6b70,0x8c94,0xd6bc,0xad34,0x2965,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x3186,0xb596,0xc5f8,0x5aac,0x52cc,0x5b2d,0xadb7,0xadd8,0xadd8,0xadb7,0xa576,0xa597,0xadd8,0xa576,0xa576,0xa576,0x9d35,0x9d15,0x94f4,0x9d35,0xa576,0xa556,0xa577,0xa557,0x94f5,0x94f4,0x94d4,0x94f5,0x8cb4,0x8473,0x8473,0x8473,0x8493,0x8cb4,0x94d4,0x8c93,0x7c11,0x7c52,0x8cd4,0x8cb3,0x7c52,0x8493,0x8cd4,0x8473,0x7bf1,0x8452,0x7c32,0x7c72,0x7c72,0x8472,0x7c52,0x8c93,0x7c31,0x7411,0x7411,0x7c31,0x7411,0x7411,0x7411,0x8472,0x7c31,0x73f0,0x73f0,0x6bd0,0x73f0,0x7c31,0x7410,0x8451,0x8cb3,0x73d0,0x73f0,0x73d0,0x6baf,0x73f0,0x7410,0x73d0,0x6baf,0x6bd0,0x6baf,0x7411,0x73f1,0x6baf,0x73d0,0x7411,0x6bd0,0x6bcf,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6b8e,0x73f0,0x6bf0,0x6bcf,0x6bcf,0x73f0,0x73d0,0x6baf,0x636e,0x6b8f,0x6baf,0x636e,0x5b0c,0x6bcf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x636e,0x634d,0x634d,0x5b0c,0x5b0c,0x52cb,0x52cc,0x52ab,0x5aec, +0x630c,0x632c,0x6b4d,0x6b4d,0x632c,0x6b8d,0x7c0f,0x7bef,0x6b4d,0x5b0c,0x632c,0x630c,0x632c,0x632d,0x632d,0x6b4e,0x8430,0x73ae,0x5aec,0x632c,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x7bf0,0x7bf0,0x73af,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x636d,0x6b6e,0x6b8f,0x73af,0x638e,0x636d,0x634d,0x6b6d,0x6b8e,0x6b6e,0x6bae,0x73cf,0x6baf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x8431,0x8451,0x7c31,0x7c51,0x7c51,0x7c10,0x8411,0x73b0,0x73d0,0x7c31,0x7c11,0x7c31,0x7c32,0x7c31,0x7c32,0x8493,0x8452,0x8472,0x8c73,0x8472,0x8c93,0x8c93,0x8cb3,0x8473,0x8cb3,0x8cb3,0x8cb3,0x8473,0x94d4,0x94f4,0x8cd3,0x94f4,0x94f4,0x94f4,0x8cb3,0x8493,0x8cd4,0x9535,0x9d76,0x9515,0x8cb4,0x94f5,0x94f4,0x94f4,0x9d76,0x9d15,0x8cd4,0x9d36,0x94f5,0x9d15,0xadb7,0xa576,0xadb7,0xad97,0xa597,0xa597,0xb5d8,0xadb7,0xc67a,0xbe5a,0xadd8,0xb5f9,0x39e8,0x2924,0x2104,0x528c,0x6b90,0x9d16,0xef7e,0xa534,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x3186,0xad55,0xbdb7,0x5acc,0x5b0d,0x632d,0xa597,0xa5b8,0xadb8,0xadd8,0xa5b7,0xadd8,0xa597,0x9d76,0xadb8,0x9d56,0x9d36,0xa576,0x9d35,0x9d55,0xa576,0xad97,0xb5d8,0xa5b7,0x9d56,0x8cf4,0x8cb4,0x8cb4,0x8cb4,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x8c93,0x8c93,0x8473,0x8cb4,0x8cd4,0x8493,0x7c52,0x7c52,0x8492,0x8cb3,0x8c92,0x8c92,0x7c72,0x7c52,0x7c52,0x7c31,0x7c11,0x7412,0x7411,0x7411,0x73f0,0x7411,0x73f1,0x6bd0,0x7411,0x7c11,0x73d0,0x73f0,0x7410,0x73f0,0x7410,0x7410,0x7410,0x7c31,0x7c51,0x6baf,0x7410,0x7410,0x73d0,0x73f0,0x73d0,0x73f0,0x73cf,0x73f0,0x7411,0x7c31,0x7c31,0x7411,0x7c11,0x7411,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x73d0,0x73f0,0x6bd0,0x73d0,0x73f1,0x7c11,0x73f0,0x6bcf,0x6baf,0x638f,0x6baf,0x6bcf,0x6baf,0x7c10,0x73cf,0x73ef,0x6baf,0x73cf,0x6baf,0x6b8f,0x6b8e,0x634e,0x632d,0x5b0c,0x5aec,0x5b0c,0x632d, +0x632c,0x632c,0x632c,0x630c,0x6b4d,0x73cf,0x73cf,0x6b6d,0x632c,0x5b0c,0x632c,0x5b0c,0x632c,0x630c,0x632d,0x6b4d,0x8c51,0x738e,0x630c,0x630c,0x630c,0x632d,0x632c,0x632c,0x6b4d,0x738e,0x73cf,0x73cf,0x73af,0x73af,0x736e,0x738f,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x632d,0x6b6e,0x6b6e,0x6b6e,0x73ce,0x73cf,0x6bcf,0x6bcf,0x6baf,0x6baf,0x73cf,0x73af,0x73d0,0x7c51,0x7c51,0x7410,0x7c31,0x7410,0x7c10,0x7bf0,0xa534,0xb5b6,0x8471,0x73f0,0x8c93,0x94f4,0x8472,0x7c72,0x8492,0x7c72,0x8493,0x8cd4,0x8493,0x8492,0x8cb3,0x8cb3,0x8c73,0x8cb3,0x94d4,0x8cb3,0x8c73,0x9cf5,0x9d15,0x8cb3,0x9514,0x9d15,0x9514,0xa576,0x9d55,0xa576,0xadb7,0x9d35,0x8c93,0x8cb3,0x94d4,0x94f4,0x8cf4,0x9515,0x8cd4,0x9d15,0x9515,0x8cd4,0x9d15,0xa5b7,0xa596,0xadd7,0xa597,0xadb7,0xadd8,0xadd8,0xbe5a,0xc67a,0xadd8,0xb5f9,0xb61a,0x39c8,0x2924,0x2104,0x52ac,0x73b1,0xad78,0xffdf,0xa513,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18e3,0x39a6,0xa514,0xb576,0x630d,0x634e,0x6b6e,0xadd8,0xb5f8,0xb619,0xadd8,0xb5f8,0xadd7,0xadd8,0xadd8,0xa5b7,0xadb7,0xa597,0xadb7,0xadd7,0xad97,0xb5d7,0xadb7,0xadb8,0xad97,0xadb7,0x9515,0x9d35,0x9515,0x9515,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x8493,0x8c93,0x94f4,0x9d15,0x94d4,0x8cb4,0x8cb4,0x94f5,0x94f5,0x9515,0x8cb4,0x8cd4,0x8473,0x8452,0x8c93,0x8452,0x7c32,0x8451,0x8451,0x7c31,0x7c31,0x8451,0x8452,0x8451,0x8451,0x8431,0x7c31,0x8451,0x8472,0x8451,0x7bf0,0x7c11,0x73f0,0x7c31,0x7c11,0x73f0,0x73d0,0x73d0,0x7bf0,0x8411,0x7bf0,0x73cf,0x73cf,0x73cf,0x7c11,0x7bf0,0x6baf,0x73d0,0x6b8f,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6f,0x6b8f,0x6b8e,0x6b8f,0x636e,0x634e,0x634e,0x634d,0x634d,0x634d,0x634d,0x5b2d,0x5b2d,0x5aed,0x5b0d,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x4a8a,0x4a8a,0x4a8a, +0x6b6e,0x6b6d,0x634d,0x6b2d,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x6b6d,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b4d,0x6b6e,0x8431,0x6b6e,0x5aec,0x630c,0x632c,0x634d,0x632c,0x632d,0x6b6e,0x6b6e,0x7bf0,0x73cf,0x6bae,0x73af,0x6b8e,0x6b8e,0x6b8e,0x636d,0x636e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x634d,0x6b6e,0x6b6e,0x73af,0x73cf,0x73ef,0x73cf,0x73cf,0x73cf,0x73cf,0x6b8e,0x73cf,0x7c11,0x7c31,0x7c31,0x7411,0x7c11,0x7c10,0x7c11,0x7bd0,0xad96,0xad75,0x8471,0x8cb3,0x8452,0x8452,0x7c31,0x7c52,0x8472,0x8473,0x8473,0x8493,0x8493,0x8452,0x8c93,0x8c73,0x8c72,0x8c93,0x8c73,0x8472,0x8452,0x8c73,0x8c73,0x8c93,0x94d4,0x94f4,0x9d35,0xa576,0x9d14,0x94d3,0x94f4,0x94d3,0x94f4,0x94f4,0x94f4,0x8cf4,0x8cd4,0x94f4,0x9d15,0x9cf5,0x94d4,0x94f5,0x9d15,0xa556,0x9d56,0xa576,0xad77,0xadb8,0xad97,0xb5b8,0xc63a,0xadb8,0xadb8,0xadd8,0xadb8,0x31a7,0x2124,0x18e4,0x52ac,0x7bf2,0xbdfa,0xffff,0x9cd2,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x2104,0x39e7,0x9492,0xa4d4,0x630d,0x6b8f,0x738f,0x8432,0x7bf1,0x8432,0x7bf1,0x7bf1,0x7bd1,0x73b0,0x73b0,0x6b6f,0x6b90,0x73b0,0x7390,0x73b0,0x738f,0x7370,0x7390,0x7370,0x634f,0x6b4e,0x6b6e,0x6b6e,0x634e,0x6b6f,0x634e,0x5b2e,0x5b2d,0x5b0d,0x632d,0x632d,0x5aed,0x5aed,0x5aec,0x5aed,0x52cc,0x52cc,0x52ac,0x5acd,0x5acd,0x4a8c,0x4aac,0x4a8b,0x4aac,0x52ac,0x52ac,0x4a8b,0x4a6b,0x424a,0x4a6a,0x424a,0x4229,0x4249,0x424a,0x4a6a,0x424a,0x424a,0x424a,0x4229,0x424a,0x4a2a,0x4a2a,0x4209,0x39c8,0x4229,0x4209,0x39c8,0x31a8,0x39c8,0x39c8,0x39c9,0x39c8,0x39c8,0x31a8,0x31a8,0x2967,0x39c8,0x39c8,0x31a7,0x39c8,0x3187,0x3187,0x3187,0x3187,0x3167,0x39a7,0x3166,0x31a7,0x2124,0x2986,0x2125,0x2945,0x2945,0x2925,0x2945,0x3187,0x2105,0x3167,0x2146,0x2125,0x2966,0x39c7,0x2966,0x18c3,0x3186,0x2946,0x31c7,0x2946,0x2125,0x2966,0x31a7,0x2945,0x31a6,0x39c7,0x3166, +0x4a6a,0x4a6a,0x4a4a,0x4a49,0x4a49,0x4249,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4249,0x528a,0x4a6a,0x4229,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x4229,0x4a4a,0x4a4a,0x4a4a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4229,0x3a09,0x424a,0x4a4a,0x4a4a,0x424a,0x424a,0x4a6b,0x4a6a,0x4249,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x52ab,0x52ab,0x4a8b,0x52cb,0x52cc,0x52ab,0x4a8b,0x4a8b,0x528b,0x52ab,0x52ab,0x52ac,0x526c,0x422a,0x528b,0x52ac,0x4a6b,0x4a8c,0x52ac,0x52ac,0x52ac,0x52ac,0x4a8b,0x52ac,0x4a8b,0x528b,0x4a8b,0x4a8b,0x4a8b,0x4aab,0x528b,0x4a8b,0x528c,0x528c,0x4a8b,0x52ac,0x52ac,0x52ac,0x52ac,0x528c,0x4a6b,0x528c,0x52ad,0x5acd,0x52cc,0x4a8c,0x52cd,0x52ac,0x4a6b,0x4a6b,0x526b,0x4a4b,0x424b,0x4a6c,0x526c,0x4a4b,0x4a6c,0x526c,0x528c,0x524c,0x4a2b,0x528c,0x526c,0x526c,0x4a4c,0x524c,0x4a0c,0x2945,0x2944,0x18c3,0x52ac,0x8412,0xce3b,0xffff,0x9490,0x2964,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x18a3,0x18e3,0x2104,0x39c7,0x8410,0x9431,0x5aec,0x738f,0x6b6e,0x2947,0x3187,0x39c8,0x3187,0x1927,0x2147,0x3188,0x3188,0x2926,0x2126,0x2967,0x2967,0x3168,0x2967,0x2946,0x3187,0x2966,0x2966,0x31a8,0x3a09,0x3187,0x2966,0x39e8,0x39e8,0x4a6a,0x4229,0x4249,0x3a08,0x31a6,0x39c7,0x39e8,0x3a08,0x2987,0x31a8,0x31a7,0x3a08,0x3a08,0x31c7,0x31e8,0x3208,0x3a28,0x4228,0x4208,0x4229,0x4229,0x4208,0x39c7,0x39e8,0x39c7,0x39e7,0x4228,0x39e7,0x3a07,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4208,0x4a69,0x4a8a,0x31c7,0x3a08,0x4229,0x4249,0x4208,0x4208,0x4208,0x4228,0x4228,0x4229,0x4228,0x4249,0x39c8,0x39e8,0x4229,0x39c7,0x4249,0x3a08,0x39e8,0x4228,0x4207,0x4208,0x4209,0x39e8,0x4228,0x3a07,0x4228,0x3a08,0x39e8,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x3a08,0x3a07,0x31c7,0x4228,0x4208,0x39e7,0x31c7,0x39e7,0x4208,0x3a08,0x31e7,0x31e7,0x31c7,0x4269,0x4269,0x4a49,0x39a7,0x39c7, +0x2165,0x2166,0x2146,0x2966,0x3187,0x3187,0x2966,0x3187,0x2966,0x2146,0x31a7,0x2986,0x2145,0x2986,0x39e8,0x31c7,0x39e8,0x2966,0x2986,0x2986,0x2986,0x2966,0x31c7,0x39c8,0x2986,0x3a08,0x2986,0x29a7,0x3a08,0x2987,0x39c8,0x31a7,0x31c8,0x3a08,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x31e8,0x31c7,0x31a7,0x31c8,0x31c8,0x3a08,0x31a7,0x2986,0x31a7,0x31c8,0x31e8,0x3a29,0x3a49,0x3a08,0x39e8,0x39c8,0x31c7,0x31a7,0x39c8,0x39e8,0x4209,0x4a4a,0x4229,0x39e8,0x31a7,0x31c8,0x4229,0x3a09,0x39c7,0x4229,0x4209,0x3a08,0x31e8,0x3a08,0x4209,0x4209,0x4229,0x4249,0x4a6a,0x4a6a,0x4229,0x4229,0x4a4a,0x4208,0x528a,0x4a49,0x4a49,0x4a29,0x4229,0x4a49,0x4229,0x4a49,0x528a,0x4249,0x3a09,0x4a6a,0x4a6a,0x4208,0x39c7,0x41e9,0x4a49,0x4249,0x39e8,0x39c8,0x4a29,0x4a6a,0x4a6a,0x4229,0x4229,0x4229,0x4208,0x4249,0x4a6a,0x4a4a,0x4a4a,0x526a,0x2125,0x2945,0x18c3,0x52ac,0x8412,0xce5b,0xffff,0x8c2e,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x31a6,0x7bcf,0x8c10,0x5aec,0x738f,0x6b6e,0x4a69,0x528a,0x4228,0x4228,0x4228,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4229,0x4249,0x4208,0x3a08,0x4207,0x4248,0x4248,0x4249,0x4229,0x4208,0x4249,0x4a6a,0x4208,0x4a6a,0x4249,0x3a08,0x4a49,0x3a08,0x39e8,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x4228,0x3a08,0x3a08,0x3a28,0x3a09,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4a49,0x3a08,0x39c7,0x4208,0x4269,0x4228,0x4208,0x4a49,0x3a08,0x39e7,0x39e7,0x39e7,0x4229,0x4208,0x39e7,0x3a07,0x4228,0x39e8,0x31a7,0x39e8,0x39c7,0x4228,0x4228,0x39e8,0x39c7,0x3a08,0x31c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x31c7,0x3a28,0x3a07,0x3a07,0x39e8,0x39e8,0x31c7,0x31c7,0x39c7,0x3186,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x31c6,0x4a69,0x39e7,0x3186, +0x29a6,0x29a6,0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x39e7,0x29a6,0x29a6,0x31c7,0x31c7,0x31a6,0x31a6,0x3186,0x39c7,0x39e8,0x39e8,0x4249,0x3a28,0x29a6,0x31c7,0x4229,0x3a28,0x39e7,0x3a07,0x4248,0x4248,0x4a69,0x3a08,0x4249,0x3a08,0x3a08,0x4228,0x39e8,0x39c7,0x31c7,0x39e7,0x3a07,0x4228,0x39e7,0x39e8,0x4229,0x4228,0x31c7,0x31c7,0x3a08,0x39e8,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x4249,0x3a08,0x31c7,0x39e7,0x4248,0x4248,0x4249,0x4228,0x3a28,0x39e8,0x3a08,0x3a07,0x4228,0x4a49,0x4a49,0x3a28,0x39e8,0x4229,0x4229,0x4249,0x52aa,0x4269,0x4249,0x4a8a,0x4249,0x4228,0x4229,0x3a08,0x4208,0x4a49,0x4a49,0x5acb,0x4249,0x3a08,0x4a69,0x4a69,0x3a08,0x4229,0x4229,0x3a28,0x3a28,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4229,0x528a,0x528a,0x52ab,0x4a6a,0x4a49,0x4a49,0x4228,0x528a,0x4a8a,0x4a6a,0x526a,0x4a69,0x2124,0x2945,0x18a3,0x52ac,0x8c33,0xde9c,0xffff,0x842e,0x2944,0x2124,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a2,0x18a3,0x18a3,0x18c3,0x18e3,0x2103,0x2124,0x3186,0x7bcf,0x83f0,0x5aec,0x738f,0x6b4d,0x4a49,0x3a08,0x3a08,0x4a69,0x4228,0x4249,0x4228,0x31c7,0x39e8,0x4229,0x3a29,0x3a08,0x39e7,0x3a07,0x3a28,0x4a69,0x4208,0x39e8,0x39e8,0x4209,0x39e8,0x4229,0x3a28,0x3a08,0x4229,0x39c7,0x4249,0x4228,0x39e7,0x4208,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31c8,0x31e8,0x3a09,0x3a09,0x39e9,0x31a7,0x39e8,0x3a28,0x3a08,0x3a07,0x3a08,0x4228,0x4229,0x3a08,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x4208,0x3a28,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x4229,0x39e8,0x3a08,0x4228,0x4249,0x39e8,0x39e7,0x39e8,0x3a08,0x4249,0x3a08,0x31a6,0x39e8,0x31a7,0x39c7,0x39c6,0x39c7,0x39e7,0x31c7,0x3a07,0x31c7,0x39e8,0x3a08,0x39e8,0x4228,0x39e7,0x39c7,0x39e8,0x31a6,0x31c7,0x39e7,0x31c7,0x31e7,0x31c7,0x4249,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39c7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x3186,0x39c7,0x39e7,0x39c7,0x39e7, +0x3186,0x31a6,0x31a6,0x2966,0x2986,0x2986,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x29a6,0x31c7,0x31a6,0x3186,0x4a49,0x4208,0x3a08,0x4228,0x3a28,0x3207,0x39e7,0x3a08,0x31a6,0x39e7,0x3a28,0x3a08,0x31c7,0x4249,0x4229,0x4269,0x4a8a,0x31c7,0x4228,0x3a08,0x31c6,0x31a6,0x4249,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39e7,0x31c7,0x3a08,0x4a69,0x3a08,0x3a07,0x3a08,0x31e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4228,0x4208,0x4249,0x4229,0x4249,0x4228,0x4228,0x4a69,0x3a08,0x3a28,0x3a28,0x4228,0x3a08,0x4209,0x4229,0x4a49,0x4229,0x4a69,0x4a69,0x4228,0x4229,0x4a69,0x4228,0x39e8,0x39e8,0x4269,0x4249,0x4249,0x4a8a,0x5289,0x4a69,0x4a8a,0x528a,0x4a6a,0x4a8a,0x4249,0x4aaa,0x4269,0x4a8a,0x4289,0x3a28,0x4249,0x52cb,0x52ab,0x52ab,0x4a8b,0x2104,0x2945,0x18a3,0x52cd,0x8c54,0xdedc,0xffff,0x840d,0x2944,0x2945,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a3,0x18c3,0x20e3,0x2103,0x2124,0x3186,0x7bcf,0x8c10,0x5aec,0x738f,0x6b4d,0x4229,0x4208,0x4a6a,0x4228,0x39e7,0x31c7,0x31e7,0x31e7,0x3a08,0x4249,0x4229,0x4228,0x3a28,0x3a08,0x4249,0x4a8a,0x39e8,0x3a08,0x4249,0x39e8,0x4208,0x31e7,0x39e7,0x4229,0x4a49,0x4208,0x3a08,0x4a8a,0x4229,0x39e8,0x4208,0x39e8,0x39e8,0x39e7,0x39c7,0x4249,0x31c7,0x39e8,0x4a49,0x3a08,0x3a08,0x31a7,0x3a08,0x4249,0x4228,0x3a08,0x31c7,0x4a69,0x3a08,0x31e7,0x31a6,0x4249,0x4249,0x4228,0x31e7,0x4a69,0x4248,0x3a08,0x4228,0x4a69,0x52aa,0x3a08,0x4228,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x31e7,0x3a08,0x3a08,0x39e7,0x39c7,0x31a7,0x4228,0x39e7,0x31a7,0x39e7,0x3a07,0x4228,0x4248,0x3a08,0x39e8,0x31c7,0x39c7,0x39e7,0x4228,0x31a7,0x39e7,0x39e7,0x31c7,0x4228,0x3a07,0x3a08,0x4249,0x31a7,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x31c7,0x4208, +0x2945,0x29a6,0x31c7,0x31c8,0x31c7,0x31c7,0x31c7,0x31a6,0x39e8,0x39c7,0x31c7,0x3a08,0x39e7,0x31a6,0x4208,0x4249,0x31e7,0x39e7,0x31c7,0x3a08,0x4229,0x4208,0x4229,0x31a7,0x39e7,0x4228,0x31a7,0x39c8,0x4209,0x4228,0x4a49,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x31c7,0x39e7,0x39e7,0x4249,0x4249,0x3a08,0x31e7,0x39e8,0x3a08,0x39e8,0x39e8,0x4a6a,0x4a69,0x4249,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e7,0x4208,0x4229,0x3a08,0x4228,0x4228,0x4229,0x4228,0x4208,0x3a28,0x4269,0x4249,0x4a8a,0x4249,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4248,0x4a69,0x52aa,0x4a69,0x4228,0x4208,0x4208,0x4249,0x4a6a,0x4249,0x3a08,0x4a8a,0x4208,0x4aaa,0x52aa,0x4228,0x4228,0x4a69,0x528a,0x4269,0x4a8a,0x52ab,0x4229,0x4249,0x528a,0x528a,0x4208,0x4a6a,0x426a,0x2104,0x2925,0x18a3,0x5aed,0x9494,0xdedc,0xffff,0x7bed,0x2124,0x2124,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x3165,0x8410,0x9451,0x632d,0x7bf0,0x6b4d,0x3a08,0x4a8a,0x4a69,0x3a07,0x31e7,0x3a08,0x3a08,0x4228,0x3a08,0x4208,0x39e8,0x4208,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x4a69,0x3a08,0x3a08,0x4249,0x39e7,0x39e8,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4229,0x39e7,0x39e8,0x39a7,0x31a6,0x31e7,0x3a28,0x3208,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x3a07,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4248,0x4a49,0x39e7,0x3a08,0x4208,0x39e7,0x4248,0x3a08,0x39e7,0x3a08,0x3a07,0x39e7,0x4228,0x31c7,0x3a07,0x4228,0x31a6,0x3a08,0x4228,0x4208,0x4208,0x39e8,0x4228,0x39e7,0x31c7,0x4229,0x3a08,0x39c7,0x39e7,0x4208,0x4208,0x3a28,0x3a08,0x39e8,0x4208,0x3a08,0x31c6,0x39e8,0x39c8,0x3a08,0x39c7,0x4208,0x4208,0x39e8,0x4209,0x31e7,0x3a07,0x4228,0x3a07,0x4208,0x4208,0x31a6,0x39e7,0x3186, +0x39e7,0x29a6,0x2166,0x31c7,0x31a6,0x31c6,0x31a7,0x31c7,0x31a7,0x31c8,0x31c7,0x29a6,0x29a6,0x39c7,0x4208,0x4228,0x29a6,0x31a7,0x31c7,0x31a7,0x41e8,0x4a29,0x31a7,0x3186,0x39e7,0x4228,0x39e7,0x39c7,0x39e8,0x4a29,0x4209,0x4209,0x4a6a,0x39e7,0x39e7,0x31c7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x4228,0x4228,0x31e8,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x3a28,0x3a08,0x39e7,0x4228,0x39e8,0x4229,0x4229,0x39e7,0x4229,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a49,0x3a28,0x3a07,0x39e7,0x4228,0x4229,0x3a28,0x39e7,0x3a28,0x4228,0x4208,0x39e7,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x4229,0x3a08,0x4a69,0x4229,0x4208,0x4228,0x4249,0x4249,0x39e8,0x4249,0x528a,0x4249,0x4249,0x4249,0x39e8,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4a49,0x4a6a,0x528a,0x528a,0x52aa,0x4a49,0x4a29,0x4229,0x4a6a,0x528a,0x4228,0x4a6a,0x4a49,0x2104,0x2945,0x18a3,0x630e,0x9cd5,0xdebc,0xffff,0x7bcc,0x2103,0x2104,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x18c3,0x20e3,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x2104,0x2104,0x3165,0x8c51,0x9451,0x738f,0x8c52,0x736e,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x3a28,0x3a28,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x3a08,0x39e8,0x3a08,0x39e8,0x4249,0x4228,0x31c7,0x3a08,0x3a08,0x39e7,0x4208,0x4a49,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x4208,0x39c7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a28,0x3a28,0x31e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x4249,0x39e7,0x3a08,0x3a08,0x4228,0x31e7,0x4249,0x4a49,0x39c7,0x4208,0x4208,0x39e7,0x4a69,0x39e7,0x31a6,0x3a07,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4208,0x3a08,0x31c7,0x31e7,0x3a28,0x4248,0x3a08,0x31a6,0x39e7,0x3a07,0x3186,0x31a6,0x3a07,0x4228,0x39e7,0x31a7,0x31a7,0x39c7,0x31c7,0x31c7,0x3a08,0x3a08,0x3a08,0x31a7,0x31c7,0x39e8,0x31e8,0x31c7,0x31c7,0x3a07,0x3a07,0x4228,0x39e8,0x39e8,0x39e7,0x31c6,0x39e7,0x31a6,0x3a08,0x31c7,0x3a07,0x31c6,0x4228,0x3a08,0x39e7,0x3186,0x31c7,0x4228, +0x39c7,0x31c7,0x2946,0x3186,0x3a07,0x2986,0x2986,0x39e8,0x39e8,0x31a7,0x39c7,0x31a6,0x31e7,0x31a7,0x39e8,0x3186,0x3186,0x39c7,0x39e8,0x39e8,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a07,0x31a7,0x31c7,0x4229,0x4a6a,0x4209,0x4a49,0x4229,0x3a08,0x31c7,0x31c7,0x4229,0x3a08,0x39e8,0x3a09,0x3a08,0x4248,0x4228,0x31e7,0x31e7,0x31e7,0x4249,0x3a08,0x3a28,0x31e7,0x39e8,0x4208,0x4249,0x3a08,0x3a08,0x4269,0x3a08,0x4249,0x4a69,0x4a49,0x4249,0x4a49,0x3a08,0x4228,0x4269,0x39e7,0x4229,0x3a08,0x4229,0x4228,0x39e7,0x3a28,0x3a08,0x3a08,0x39e7,0x39e8,0x39e7,0x39e7,0x4228,0x31c7,0x4209,0x4229,0x4249,0x4228,0x4a6a,0x4229,0x4208,0x4229,0x3a08,0x4229,0x3a28,0x3a29,0x4249,0x4208,0x4a69,0x4249,0x3a08,0x4a49,0x4229,0x4229,0x4249,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x3a28,0x4a69,0x3a28,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a49,0x2104,0x2945,0x18a3,0x7390,0xad36,0xde9c,0xffbe,0x736c,0x2104,0x2104,0x18c3,0x18a2,0x2945,0x2944,0x2124,0x2103,0x2103,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x10a2,0x2124,0x3165,0x2944,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2103,0x18e3,0x18c3,0x1082,0x18e3,0x3186,0x2924,0x2103,0x18c3,0x18c2,0x18c2,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2944,0x2124,0x18e3,0x18c3,0x20e3,0x2104,0x3186,0x9492,0x8c31,0x8410,0x9c93,0x738e,0x4229,0x3a08,0x4a49,0x4a49,0x4228,0x4a69,0x4228,0x4228,0x3a28,0x39e7,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4228,0x4249,0x39e7,0x3a08,0x39e8,0x4249,0x4228,0x4a6a,0x4a69,0x3a08,0x39e8,0x39e8,0x4a69,0x39e7,0x4229,0x4228,0x3a08,0x4249,0x4229,0x39c7,0x31a7,0x3a08,0x3a08,0x3a08,0x31a6,0x39e7,0x3a08,0x31c7,0x3a07,0x39e7,0x4208,0x3a08,0x3a07,0x3a07,0x3a28,0x31c6,0x39e7,0x39e7,0x4249,0x3a08,0x4a49,0x39c7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x31c6,0x39e7,0x39c7,0x4228,0x31e7,0x3a08,0x3a28,0x39e7,0x3a08,0x39c7,0x31c7,0x39e7,0x39e7,0x39c7,0x3a08,0x3186,0x4a69,0x4228,0x39e7,0x39c7,0x4208,0x31a6,0x39e7,0x39e8,0x3a08,0x39e8,0x39c7,0x31a7,0x3a08,0x31c7,0x4248,0x4228,0x4248,0x39e7,0x4208,0x3a08,0x4248,0x39e7,0x39c7,0x39e8,0x31a7,0x31a6,0x4228,0x4a8a,0x3186,0x4208,0x31c7,0x39e7,0x31a6,0x39e7, +0x31a7,0x31a6,0x2966,0x39c7,0x31e7,0x2986,0x2145,0x41e8,0x4a4a,0x39e7,0x2965,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39c7,0x4a49,0x4228,0x31a6,0x3a07,0x4249,0x31e7,0x31e7,0x39e7,0x3a08,0x39e8,0x31c7,0x4a8a,0x4249,0x39e7,0x4208,0x39c7,0x39c7,0x31a7,0x4249,0x4249,0x31c7,0x39e8,0x39c8,0x31c7,0x4228,0x4208,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4229,0x4228,0x4249,0x3a08,0x3a07,0x4248,0x4249,0x4228,0x4249,0x4a8a,0x39e8,0x39e7,0x31e7,0x3a28,0x3a28,0x4249,0x39e8,0x4a69,0x52aa,0x4a69,0x39e7,0x4228,0x4a49,0x4249,0x52aa,0x4a6a,0x3a09,0x4208,0x4208,0x4228,0x4269,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4a6a,0x4208,0x4a49,0x4229,0x4229,0x4a69,0x4a69,0x4248,0x528a,0x52cb,0x52ab,0x426a,0x3a28,0x4a8a,0x4249,0x4a8a,0x4a69,0x4a49,0x4228,0x4a69,0x20e3,0x2965,0x18c4,0x7bd1,0xb576,0xd67b,0xef3c,0x632b,0x2104,0x2104,0x18c3,0x18a3,0x2965,0x2945,0x3165,0x2944,0x2944,0x3165,0x3185,0x2965,0x2944,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2944,0x2965,0x2924,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x2945,0x31a6,0x3186,0x2965,0x18e3,0x20e3,0x2124,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2924,0x2944,0x2945,0x2965,0x3165,0x3165,0x2104,0x18e3,0x1082,0x2104,0x41e8,0x3186,0x31a6,0x3165,0x2944,0x2945,0x2945,0x2965,0x3165,0x3185,0x2965,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x3186,0x39a6,0x2945,0x18e3,0x18c3,0x18e3,0x20e3,0x3186,0x9492,0x83f0,0x8c51,0x9cd3,0x630d,0x4229,0x52ab,0x4a49,0x4229,0x39e8,0x3a08,0x4249,0x4228,0x4249,0x4249,0x4249,0x4228,0x3a08,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x4a8a,0x4228,0x4208,0x4228,0x39e7,0x4249,0x4228,0x3a08,0x3a08,0x4229,0x4249,0x31e7,0x39e7,0x39c7,0x4208,0x39e8,0x31a7,0x31c7,0x3a08,0x39c7,0x3a08,0x31e7,0x31c7,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x4208,0x39e7,0x4228,0x3a28,0x39e7,0x39e7,0x39e7,0x4228,0x39e7,0x31c7,0x39c6,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x3a07,0x39c7,0x4228,0x3a07,0x31e7,0x39e7,0x52aa,0x39e7,0x3a08,0x39e7,0x3187,0x4a49,0x4228,0x31c6,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x31c7,0x3a08,0x4228,0x3a08,0x31a6,0x31a6,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39c7,0x4249,0x31a6,0x4228,0x39e7,0x39e7, +0x3186,0x2965,0x3186,0x39e8,0x29a6,0x2186,0x29a7,0x39c7,0x39e8,0x3a08,0x3a07,0x3a07,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x39e8,0x39e7,0x31e7,0x4249,0x31a6,0x31c6,0x39e8,0x39e8,0x3a28,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x39e8,0x39c7,0x39e8,0x31c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31a7,0x39a7,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4229,0x4228,0x3a08,0x4249,0x3a29,0x3a08,0x4249,0x4229,0x4249,0x4249,0x4249,0x39e7,0x39e8,0x3a28,0x3a28,0x3a49,0x4249,0x4208,0x4228,0x4a6a,0x39e8,0x39e8,0x4208,0x4a8a,0x4a49,0x4229,0x3a08,0x4249,0x4249,0x4a49,0x4249,0x4a69,0x3a08,0x3a08,0x3a08,0x3a07,0x4228,0x4229,0x4249,0x4229,0x4249,0x426a,0x4229,0x4249,0x4228,0x4a49,0x528a,0x4249,0x4249,0x4a8a,0x4249,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a8a,0x18e3,0x2945,0x18c4,0x7bd2,0xb596,0xce3a,0xd679,0x5aca,0x2104,0x1903,0x18c3,0x18a3,0x2965,0x20e4,0x2104,0x10a2,0x2104,0x3165,0x2945,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2124,0x2124,0x2104,0x18c3,0x1082,0x2945,0x3166,0x2945,0x18e3,0x18c3,0x2124,0x2924,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x3165,0x3186,0x2924,0x2924,0x2945,0x2104,0x18e3,0x1082,0x2104,0x39e8,0x2965,0x2965,0x2944,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x3165,0x41e7,0x39c6,0x31a6,0x3186,0x3185,0x3165,0x2124,0x2924,0x3165,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2965,0x8431,0x738f,0x8c51,0x9cb3,0x4a29,0x4228,0x4a69,0x4249,0x4249,0x3a08,0x3a29,0x4249,0x4249,0x3a29,0x3a29,0x31e7,0x3a08,0x39e7,0x3a08,0x31c7,0x39e8,0x4249,0x39e7,0x39c7,0x3a08,0x4a69,0x3a08,0x4229,0x4a69,0x39e7,0x3a08,0x4228,0x4208,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39e7,0x4a69,0x3a08,0x3a08,0x4249,0x4208,0x39c7,0x3a08,0x4208,0x3a08,0x4208,0x4a49,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a07,0x4248,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x31c7,0x39e8,0x4208,0x39e8,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a28,0x3a07,0x4269,0x52eb,0x31e7,0x3a07,0x39e7,0x31e7,0x4a69,0x4a49,0x2986,0x3a08,0x4249,0x31c7,0x39e7,0x31c7,0x31c7,0x31c6,0x3a28,0x4269,0x3a08,0x39e7,0x4228,0x3207,0x29a7,0x31c7,0x39e8,0x39e8,0x39c7,0x39e7,0x39e7,0x31c7,0x31c7, +0x2986,0x2965,0x31a6,0x29a7,0x29c7,0x29a7,0x31e7,0x31c7,0x31a6,0x3a08,0x3a08,0x31a6,0x31a7,0x3a08,0x3a08,0x31c7,0x2986,0x39c8,0x3a08,0x31c7,0x31c7,0x4a6a,0x4a8a,0x4249,0x39e8,0x39e8,0x31e7,0x3a28,0x3a28,0x3a08,0x3a07,0x39e7,0x31c7,0x31a7,0x4208,0x4208,0x39e7,0x31a7,0x31a7,0x39c7,0x39e7,0x39c7,0x31c7,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x39e8,0x4208,0x4208,0x4228,0x4a8a,0x4228,0x4a69,0x4249,0x3a08,0x4208,0x4229,0x4249,0x4248,0x4249,0x4269,0x4a8a,0x4aaa,0x4269,0x4a8a,0x4228,0x39e7,0x3a08,0x4228,0x3a28,0x3a28,0x4249,0x39e7,0x4249,0x3a28,0x39e7,0x39e8,0x3a28,0x4249,0x4249,0x31e7,0x4aaa,0x4249,0x3a28,0x4228,0x4229,0x4249,0x39e8,0x39e7,0x4228,0x3a28,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x4208,0x5acb,0x4a49,0x4208,0x39e8,0x4228,0x4229,0x4229,0x4228,0x4a49,0x4a69,0x4a69,0x4249,0x4a69,0x4a6a,0x4a69,0x426a,0x18e3,0x2925,0x18c4,0x7bb1,0xb596,0xbdb7,0xb596,0x52aa,0x2103,0x18e3,0x18c3,0x18a3,0x2965,0x10a2,0x0861,0x0861,0x2944,0x2945,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x20e4,0x20e3,0x18e3,0x18e3,0x2104,0x2945,0x2104,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x2925,0x2104,0x1082,0x0861,0x18e3,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2124,0x2104,0x2104,0x2124,0x2965,0x2945,0x18a2,0x18c3,0x18e3,0x18c3,0x1082,0x20e4,0x3186,0x18a3,0x10a2,0x2104,0x2924,0x2104,0x2104,0x2104,0x2124,0x2104,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x3185,0x2924,0x1082,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x3186,0x7bcf,0x632e,0x8411,0x8411,0x39a7,0x3a07,0x4249,0x4a69,0x4249,0x4249,0x4229,0x3a29,0x3a08,0x3a29,0x3a28,0x39e7,0x3a08,0x3a08,0x4228,0x31c7,0x4228,0x4228,0x4249,0x4228,0x39c7,0x3a08,0x4249,0x4208,0x3a08,0x39e8,0x4249,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a49,0x4228,0x4229,0x3a08,0x3a07,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c6,0x3a08,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4228,0x4228,0x4208,0x4249,0x39c7,0x31a6,0x39c7,0x4249,0x4249,0x3a08,0x31c7,0x4228,0x31a6,0x52aa,0x4208,0x31a6,0x3a08,0x31c7,0x3a07,0x4228,0x3a08,0x4a69,0x39e8,0x4229,0x4208,0x3a08,0x4228,0x4228,0x39c7,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x4249,0x3a07,0x39e7,0x39e7,0x31e7,0x4249,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x4249,0x31c7,0x31e7,0x3a28,0x3a08,0x4208,0x39e8,0x41e8,0x3a08,0x31e7,0x31c7,0x31a7,0x3186,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7, +0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x2986,0x31a7,0x31a7,0x3186,0x31c7,0x31a7,0x2966,0x39c7,0x3a08,0x31a6,0x31a6,0x39c7,0x39e8,0x3a28,0x3a08,0x31c7,0x39c8,0x4229,0x4208,0x31a7,0x39e8,0x3a08,0x3a08,0x39e7,0x31e7,0x3a28,0x39c7,0x31a7,0x31a6,0x39c7,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e7,0x4249,0x39e8,0x31c7,0x39e7,0x31e7,0x31e7,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x4249,0x39e7,0x4a49,0x4228,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4a69,0x4249,0x4a8a,0x4249,0x4249,0x31c7,0x3a08,0x4249,0x4249,0x4228,0x4228,0x4a49,0x4a69,0x3a08,0x3a28,0x4249,0x3a07,0x3a08,0x3a28,0x3a08,0x4249,0x4269,0x4248,0x4249,0x4228,0x4229,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4229,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4208,0x4a49,0x4249,0x4229,0x4249,0x3a08,0x4228,0x4a49,0x4208,0x4208,0x4249,0x4229,0x4a6a,0x4249,0x4a6a,0x4a8a,0x18c3,0x2104,0x18c4,0x7391,0xbdb7,0xad35,0x9cf4,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2945,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2944,0x2144,0x2925,0x2945,0x2945,0x2924,0x2124,0x2124,0x2945,0x2965,0x3185,0x0861,0x0841,0x18c3,0x18a2,0x1082,0x2124,0x10a2,0x0020,0x0841,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2924,0x2925,0x2925,0x2124,0x2124,0x2124,0x2965,0x31a6,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x20e3,0x2124,0x0841,0x0861,0x2945,0x2124,0x2124,0x2924,0x2924,0x2945,0x2925,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3186,0x3186,0x1062,0x0861,0x1082,0x20e4,0x18c3,0x18c3,0x2104,0x39c7,0x6b4e,0x630d,0x73af,0x738e,0x3186,0x39e8,0x4a69,0x4a8a,0x52aa,0x4a49,0x3a08,0x3a08,0x31e7,0x3a28,0x4248,0x4249,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x3a08,0x4229,0x39c7,0x3a08,0x3a08,0x4249,0x4228,0x39c7,0x4208,0x3a08,0x4a8a,0x3a28,0x4228,0x3a08,0x4228,0x4208,0x4208,0x4a49,0x39e8,0x3a08,0x4228,0x31c7,0x4228,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x4a69,0x4a69,0x3a28,0x4269,0x31c7,0x3a08,0x3a08,0x3a08,0x39e8,0x39c7,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x31a7,0x4229,0x39e8,0x39e7,0x3a07,0x4208,0x39e7,0x31c6,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e8,0x39e8,0x39e8,0x31c7,0x31a7,0x39e7,0x39e7,0x4249,0x4a49,0x31c7,0x4228,0x3a08,0x31c7,0x2986,0x3a08,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x4228,0x31c7,0x39e8,0x39e8,0x39c7,0x3a08,0x29a6,0x31e7,0x4269,0x3a08,0x2986,0x31a6,0x3a08,0x39e8,0x31a7,0x3166, +0x31a7,0x31c7,0x31a6,0x31a7,0x29a6,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x39c7,0x39c7,0x39c8,0x4229,0x3a28,0x3a28,0x3a07,0x3a07,0x31e7,0x31c7,0x31a7,0x31a7,0x39e8,0x39e8,0x31e7,0x31c7,0x4208,0x39e7,0x39e8,0x4208,0x39e8,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x4208,0x4208,0x4249,0x3a08,0x31e7,0x3a28,0x3a08,0x3a08,0x3a28,0x3a08,0x4a6a,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x3207,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x4a69,0x4269,0x4249,0x3a28,0x3a28,0x4248,0x4269,0x4a69,0x4208,0x4249,0x4a8a,0x4208,0x41e8,0x4a49,0x3a08,0x39e8,0x4228,0x4a69,0x4a49,0x4249,0x4228,0x4a69,0x4a69,0x4aaa,0x4249,0x4228,0x4a69,0x4228,0x528a,0x4a49,0x3a08,0x4229,0x4a6a,0x4249,0x4a49,0x39e8,0x4229,0x3a08,0x3a29,0x4208,0x4229,0x4249,0x4269,0x4229,0x4229,0x4249,0x4249,0x426a,0x4249,0x4a8b,0x52cb,0x18c3,0x2104,0x18c4,0x7371,0xc5f8,0xa535,0x94b3,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2124,0x0861,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x4a05,0x39c5,0x2965,0x2965,0x2945,0x2965,0x3166,0x3186,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x41e5,0x4a25,0x4205,0x3185,0x2965,0x2965,0x2965,0x2965,0x31a6,0x10a2,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x20e3,0x0020,0x1081,0x2965,0x2945,0x2965,0x2965,0x3186,0x3186,0x41e5,0x4a25,0x4205,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0841,0x0861,0x18e3,0x18a2,0x18c3,0x2104,0x31a7,0x5aec,0x5acc,0x6b6e,0x630d,0x2965,0x4229,0x4209,0x4249,0x52aa,0x4a69,0x4229,0x39e8,0x4a69,0x4a69,0x4269,0x4228,0x3a08,0x4229,0x4229,0x39e8,0x4249,0x3a08,0x4228,0x3a08,0x4249,0x3a08,0x3a07,0x4228,0x39e7,0x4a49,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x3a08,0x4228,0x39e7,0x4228,0x4229,0x31c7,0x4208,0x39e8,0x39a7,0x39e7,0x4248,0x3a07,0x39e7,0x39e7,0x31a6,0x39c7,0x4208,0x4249,0x4a69,0x3a08,0x31c7,0x31c7,0x4249,0x4228,0x39e8,0x3a08,0x4228,0x4249,0x3a08,0x3a08,0x31c7,0x31e7,0x31e7,0x31c7,0x3a28,0x4208,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x3a07,0x31a6,0x4a6a,0x39e7,0x31c7,0x3a08,0x4a6a,0x39e8,0x4208,0x3a08,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x31c7,0x4249,0x4a69,0x31c7,0x3a08,0x31e7,0x31c7,0x4249,0x4249,0x31e7,0x31e7,0x3a08,0x29a6,0x2985,0x4228,0x39e8,0x31c7,0x3a08, +0x39c7,0x39c7,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x426a,0x426a,0x31c7,0x4228,0x31c7,0x3a08,0x31c7,0x29a6,0x3a28,0x3a28,0x31c7,0x31c7,0x3a08,0x4229,0x4229,0x3a08,0x31a6,0x31e7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c7,0x39e8,0x4229,0x4a6a,0x3a08,0x31a6,0x4228,0x4249,0x3a08,0x3a08,0x4229,0x52ab,0x3a08,0x3a49,0x4249,0x4228,0x4208,0x4a8a,0x4249,0x3a08,0x4a69,0x3a08,0x3a08,0x4a49,0x39e8,0x3a08,0x3a08,0x4a49,0x4228,0x4a69,0x4a8a,0x4228,0x4269,0x3a08,0x4229,0x3a08,0x4208,0x4228,0x4228,0x4228,0x41e8,0x39e7,0x39e8,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4228,0x4248,0x4249,0x31e7,0x39e7,0x4208,0x4a89,0x4a49,0x39e8,0x4229,0x39e8,0x39e8,0x3a09,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x4a69,0x4249,0x4229,0x4a69,0x4249,0x4228,0x4249,0x4249,0x4249,0x52aa,0x528a,0x4a6a,0x18c3,0x2124,0x18a3,0x6b30,0xd659,0xad35,0x8c72,0x4a69,0x20e3,0x18c3,0x18c3,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4a45,0x8385,0x5264,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x0861,0x0020,0x10a2,0x1082,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x4a25,0x7b65,0x7324,0x7b65,0x5a64,0x3165,0x3166,0x2966,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18e3,0x0020,0x1082,0x2965,0x2965,0x3186,0x3186,0x3186,0x4226,0x7b65,0x7b65,0x8385,0x5246,0x3186,0x3186,0x3186,0x31a7,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x18a2,0x18c3,0x20e4,0x2945,0x52ab,0x52ab,0x6b6e,0x5aec,0x2945,0x4a6a,0x4229,0x4229,0x4a69,0x4228,0x3a08,0x3a08,0x4a69,0x4a89,0x4a8a,0x3a08,0x3a08,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x4228,0x4249,0x39e7,0x4228,0x4248,0x4249,0x4228,0x4249,0x4a69,0x3a08,0x4208,0x4229,0x4229,0x4a69,0x4228,0x4a8a,0x4229,0x4229,0x4229,0x4208,0x4208,0x31a7,0x31c6,0x4228,0x39c7,0x31a6,0x4228,0x39e8,0x39c7,0x4208,0x4229,0x3a08,0x3a08,0x39e7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x4229,0x4249,0x31c7,0x3a08,0x39e7,0x4a69,0x39e7,0x31a7,0x39e8,0x4208,0x39c7,0x4208,0x4249,0x39e7,0x39e7,0x3a08,0x3a08,0x31c7,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31a7,0x4a69,0x3a08,0x31c7,0x4a69,0x4249,0x39e8,0x4a49,0x4208,0x39c7,0x31a6,0x39e7,0x4248,0x39e7,0x39e7,0x4228,0x31c7,0x39e7,0x4208,0x39e8,0x3a08,0x3a08,0x31a6,0x4228,0x52aa,0x31a7,0x3186,0x3186,0x31a6,0x2986,0x3a08,0x31a7,0x39e8,0x39c7, +0x3186,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31a7,0x31c7,0x31e7,0x31a7,0x29a6,0x2986,0x31c7,0x31a7,0x31e8,0x31c8,0x31a7,0x31c7,0x39c7,0x4208,0x4228,0x39e7,0x31e7,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x31a6,0x39e7,0x31c7,0x31c7,0x31c8,0x3a08,0x4228,0x39e7,0x4269,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x39e8,0x4228,0x39e7,0x39c7,0x4a69,0x3a08,0x3208,0x4249,0x4208,0x31e7,0x4229,0x4229,0x4a49,0x4a49,0x41e8,0x4208,0x4a49,0x4249,0x4229,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x39c7,0x39e8,0x4229,0x4249,0x3a08,0x3a08,0x3a08,0x4249,0x4249,0x4228,0x4228,0x3a08,0x4a69,0x39e7,0x4a69,0x3a08,0x39e8,0x4228,0x4208,0x39e8,0x3a08,0x4249,0x4228,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a69,0x4228,0x4a49,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x52aa,0x4a8a,0x3a08,0x18c3,0x2124,0x18c3,0x6b30,0xdeba,0xb575,0x8c51,0x4a49,0x20e3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2945,0x4a46,0x7b45,0xa465,0x62a4,0x2945,0x2965,0x2965,0x2965,0x3186,0x2965,0x0861,0x0020,0x1082,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x7325,0x8bc5,0x5a64,0x8bc5,0x8384,0x3165,0x2966,0x3166,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x2966,0x2966,0x3186,0x3186,0x5ac6,0x8bc5,0x6ae5,0x9405,0x7305,0x3186,0x3186,0x3186,0x3187,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a3,0x18e3,0x2124,0x4a6a,0x528b,0x632d,0x5acc,0x2965,0x4a6a,0x4229,0x4229,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x3a08,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4a49,0x4a49,0x4269,0x4229,0x4249,0x3a08,0x4229,0x4a49,0x4248,0x3a08,0x39e7,0x3a07,0x4228,0x4a69,0x3a08,0x3a08,0x3a08,0x4a49,0x52aa,0x4249,0x4228,0x4228,0x3a08,0x4248,0x39e7,0x3a07,0x4208,0x4248,0x4229,0x31c7,0x4249,0x3a08,0x31a6,0x4249,0x3a08,0x39c7,0x4208,0x39e7,0x31e7,0x39e7,0x4228,0x4249,0x4249,0x39e7,0x39c7,0x39e7,0x39e8,0x39e8,0x31a7,0x39c7,0x39c8,0x31a6,0x39e7,0x4a49,0x4228,0x39e7,0x4249,0x4208,0x3a08,0x39c7,0x31a6,0x31c7,0x31e7,0x39e7,0x4229,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x4208,0x39e8,0x3a08,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x31a7,0x31c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39e7, +0x2966,0x2966,0x39e7,0x3186,0x2986,0x31a7,0x3186,0x3186,0x31c7,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e8,0x3a08,0x31a6,0x39e8,0x39e8,0x39e7,0x3a08,0x4229,0x39c7,0x3a07,0x4248,0x3a29,0x3a08,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x39e7,0x4248,0x4228,0x39e8,0x4249,0x3a08,0x41e7,0x39c7,0x3a08,0x3a08,0x3a08,0x31c7,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x4209,0x4229,0x39e8,0x4229,0x3a08,0x39e8,0x4229,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4229,0x39e8,0x39e9,0x4249,0x4249,0x4249,0x4a6a,0x39e8,0x4208,0x4208,0x4229,0x4208,0x4229,0x3a08,0x3a08,0x3a28,0x39e7,0x3a08,0x4a49,0x4208,0x39e7,0x4208,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x4a49,0x528a,0x3a08,0x4a69,0x4228,0x39e7,0x4229,0x4249,0x4208,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4229,0x4228,0x4249,0x4a49,0x4248,0x3a08,0x18a3,0x2104,0x18c3,0x62ef,0xe6fb,0xb595,0x8c51,0x4a49,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x4206,0x5a85,0x9425,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x62c6,0x5a85,0x39a5,0x83a5,0x83a4,0x3165,0x2965,0x3166,0x3186,0x3186,0x10a2,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3166,0x3166,0x3186,0x4a46,0x5a85,0x5a65,0x9405,0x7305,0x3165,0x3186,0x3186,0x3186,0x31a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a2,0x18c3,0x2104,0x4229,0x528b,0x630d,0x528b,0x2945,0x4249,0x4269,0x4a8a,0x4229,0x3a08,0x4a69,0x4a69,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x4a69,0x4a8a,0x4208,0x4228,0x4a89,0x4a69,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x4229,0x39e8,0x39c7,0x4249,0x3a08,0x3a08,0x39e8,0x39c7,0x39e7,0x3a08,0x31e7,0x3a08,0x4248,0x3a08,0x3a08,0x4228,0x4249,0x3a08,0x39e8,0x4228,0x4208,0x39e7,0x4208,0x4249,0x4269,0x39e8,0x39e7,0x4a49,0x39e8,0x39e7,0x4208,0x4208,0x4249,0x31e7,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x39c7,0x4249,0x4228,0x39e7,0x39e7,0x39e8,0x4229,0x4208,0x4208,0x39e8,0x39c7,0x3a08,0x31a6,0x29a6,0x31c7,0x39e7,0x3a07,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x29a6,0x4248,0x3a28,0x31e7,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x3a08,0x31e7,0x4229,0x4208,0x39e8,0x4249,0x31a6,0x2965,0x2965,0x39c6,0x39e7, +0x31a6,0x31c7,0x31c6,0x2986,0x2986,0x2986,0x3186,0x31c6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x31c7,0x3a07,0x39e7,0x29a6,0x39e8,0x4229,0x3a08,0x31c8,0x31c8,0x3a09,0x4209,0x4208,0x3a08,0x3a07,0x3a08,0x3a49,0x4229,0x31c7,0x4a69,0x4228,0x3a08,0x39e7,0x31c7,0x3a28,0x4a69,0x4228,0x39e7,0x4249,0x4248,0x39e7,0x3a08,0x3a07,0x3a07,0x4228,0x4208,0x4208,0x4228,0x4208,0x39e7,0x4249,0x4a8a,0x3a08,0x39e8,0x4208,0x4229,0x4a6a,0x39e8,0x4208,0x4228,0x4228,0x4a69,0x4a49,0x39c7,0x4a8a,0x4aaa,0x3a08,0x31a7,0x3a09,0x39e8,0x31c8,0x3a09,0x39e8,0x39e8,0x4a48,0x4a49,0x4249,0x4208,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a08,0x4249,0x4249,0x52aa,0x4249,0x4229,0x3a08,0x4a6a,0x4a69,0x4269,0x4249,0x39e7,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4229,0x4229,0x4228,0x4a8a,0x4a69,0x4249,0x4a49,0x528a,0x4a69,0x4a8a,0x4249,0x18a3,0x18e3,0x18a3,0x5aae,0xe6fc,0xbd96,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x3185,0x3185,0x8be6,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x39c6,0x41e5,0x62c5,0x8bc5,0x5a84,0x2965,0x2965,0x2965,0x3165,0x3186,0x1082,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x3166,0x3186,0x39a6,0x39c5,0x62e5,0x9c45,0x6ae4,0x3165,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0820,0x0861,0x18a3,0x10a2,0x18c3,0x18c3,0x2104,0x3a08,0x4a6a,0x5aec,0x4a29,0x2124,0x4249,0x4249,0x4229,0x4229,0x4a8a,0x3a08,0x4249,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a89,0x528a,0x4a49,0x4228,0x4208,0x31a7,0x4229,0x4a49,0x3a08,0x39e8,0x39c8,0x41e8,0x4208,0x4a49,0x4a69,0x4228,0x4228,0x4249,0x4a49,0x4229,0x41e8,0x4208,0x39e8,0x39e7,0x3a08,0x3a28,0x4228,0x4a69,0x3a08,0x31c7,0x4228,0x4248,0x39e7,0x39e7,0x3a08,0x4249,0x39e8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e8,0x4208,0x4208,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3186,0x39e7,0x3186,0x39e8,0x4208,0x31a7,0x39e8,0x4208,0x39e8,0x4208,0x4a49,0x4208,0x4208,0x39e8,0x31c7,0x31e7,0x3a28,0x31e7,0x3a07,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x31a7,0x39e7,0x4228,0x39e7,0x39e8,0x39c7,0x39c7,0x4228,0x4a69,0x4249,0x31e7,0x39e7,0x4249,0x4229,0x31a7,0x3a08,0x39e8,0x39e8,0x31a7,0x4208,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7, +0x31c6,0x39e7,0x31a6,0x2986,0x2965,0x2986,0x4208,0x39c7,0x2986,0x31c7,0x39c8,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c7,0x3a08,0x31e8,0x29a7,0x31c8,0x3a09,0x4229,0x4a49,0x4228,0x39c7,0x31e7,0x31e7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a08,0x4249,0x4208,0x4248,0x39c7,0x39e8,0x4a69,0x4a69,0x4a49,0x4248,0x39e7,0x3a08,0x4a49,0x4a49,0x4208,0x4228,0x3a08,0x39e8,0x4a69,0x4249,0x528a,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4208,0x4228,0x39e7,0x4228,0x39e8,0x4a49,0x4249,0x3a07,0x4a69,0x3a07,0x3a08,0x3a08,0x4209,0x4229,0x4208,0x39e7,0x39e8,0x39e8,0x4228,0x4228,0x39e7,0x4208,0x4249,0x4a49,0x4228,0x4249,0x4249,0x4228,0x4229,0x4a6a,0x4229,0x4229,0x3a08,0x4a69,0x4a69,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4208,0x4228,0x4a69,0x4249,0x4249,0x4a6a,0x4229,0x4249,0x4a6a,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4229,0x18a3,0x18e3,0x10a3,0x528d,0xdebb,0xb595,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x8bc6,0x62c4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2966,0x2965,0x2965,0x39c5,0x6b25,0x8bc5,0x6ae4,0x39c5,0x2965,0x2965,0x2965,0x2965,0x3186,0x1082,0x0841,0x1082,0x18c2,0x1082,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x2965,0x3165,0x4a45,0x5245,0x5245,0x8be5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1061,0x18a3,0x10a2,0x18c3,0x18e3,0x2104,0x39e8,0x4a4a,0x52ab,0x41e8,0x2124,0x3a28,0x4a8a,0x4228,0x4a8a,0x52aa,0x4228,0x4a49,0x4208,0x4a49,0x4a49,0x4229,0x4a69,0x4249,0x4249,0x4a49,0x4249,0x3a08,0x4a6a,0x39e8,0x4208,0x4a8a,0x4229,0x4a49,0x39e7,0x39e8,0x4208,0x4229,0x4228,0x3a07,0x4228,0x4208,0x4229,0x4208,0x4a29,0x41e8,0x4208,0x39c7,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x31a6,0x4a69,0x4249,0x31a6,0x31a6,0x3a08,0x4269,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x4208,0x4229,0x31a7,0x3a28,0x3a28,0x3a28,0x4229,0x39e8,0x39e8,0x3a08,0x39e7,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x3a08,0x4a8a,0x3a08,0x31c7,0x3207,0x31c6,0x39e8,0x4a69,0x3a07,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x39e7,0x31c7,0x4248,0x4249,0x3a08,0x31a7,0x31a7,0x39e8,0x39e8,0x2986,0x31a6,0x4228,0x4228,0x31a6,0x29a6,0x4228, +0x31c6,0x31a6,0x2986,0x2966,0x2986,0x2966,0x39c7,0x39c7,0x31c7,0x39e8,0x4208,0x31a7,0x31a7,0x31c7,0x31a6,0x39c7,0x39e8,0x39e8,0x39e8,0x31a7,0x31c7,0x31c8,0x31e8,0x31c7,0x31c7,0x4208,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e7,0x31a7,0x39c7,0x4228,0x4208,0x31c8,0x39e8,0x4249,0x4208,0x41e8,0x4208,0x4208,0x4208,0x4208,0x4a6a,0x3a08,0x4228,0x31a7,0x3a08,0x4a8a,0x4228,0x4228,0x52aa,0x4a69,0x52aa,0x4249,0x4228,0x39e7,0x3a28,0x3a28,0x4228,0x4249,0x39e8,0x4229,0x4a6a,0x4a49,0x3a07,0x4249,0x39e8,0x3a08,0x4249,0x4249,0x4208,0x4208,0x4229,0x4228,0x4228,0x4249,0x4249,0x4208,0x39e8,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x3a08,0x39e7,0x4229,0x4229,0x4229,0x3a49,0x3a28,0x39e8,0x4208,0x4228,0x4228,0x4a6a,0x4a69,0x3a08,0x3a08,0x52aa,0x4249,0x4228,0x4a49,0x4a6a,0x4249,0x3a29,0x4229,0x4208,0x18a3,0x2104,0x18c3,0x4a4c,0xce39,0xa534,0x7c10,0x4228,0x18e3,0x18e3,0x18c3,0x18a3,0x2104,0x0861,0x0841,0x1082,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x83a6,0x62a4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x3165,0x2965,0x2965,0x2945,0x5aa5,0x9c45,0x8bc4,0x62c4,0x5245,0x2965,0x2965,0x2965,0x2965,0x3185,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x18c2,0x0020,0x1082,0x2965,0x3186,0x3186,0x3186,0x3165,0x62e5,0x8385,0x5a64,0x83c5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x39c7,0x4229,0x4a6a,0x39c8,0x2104,0x4aaa,0x3a28,0x4228,0x4249,0x4249,0x4a8a,0x4a49,0x4a69,0x4a49,0x4a69,0x5acb,0x4a8a,0x3a08,0x4229,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4228,0x3a08,0x3a28,0x3a28,0x4249,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x39e7,0x3a07,0x4a49,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4a89,0x31c7,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x39c7,0x39c6,0x4a69,0x4228,0x3a08,0x4227,0x31a7,0x3a08,0x3a08,0x4249,0x39e8,0x39e8,0x31a6,0x39e8,0x4208,0x31c6,0x3207,0x31c7,0x39e7,0x4208,0x4228,0x31c7,0x39e8,0x39e7,0x31c7,0x31a6,0x31e7,0x3a08,0x31c7,0x4208,0x4a69,0x31a6,0x39e8,0x31c7,0x3a08,0x39e7,0x4249,0x4229,0x4228,0x4228,0x3a08,0x3a07,0x39e7,0x31a6,0x31a6,0x31c7,0x39e7,0x39e7,0x31e7,0x31c7,0x39e7,0x3a08,0x31a6,0x31c6,0x3a08,0x4229,0x31c7,0x4228,0x4228,0x31e7,0x29a6,0x31e7,0x39e7,0x31c6,0x31a7,0x31c7,0x39e8, +0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39c7,0x39e8,0x31a6,0x39e7,0x39e8,0x4228,0x4208,0x3187,0x2987,0x31c7,0x3a08,0x31e8,0x31c7,0x31c7,0x3a28,0x39e7,0x4229,0x4229,0x31c7,0x3a08,0x39e8,0x39e7,0x3a08,0x39e7,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4228,0x39e8,0x3a08,0x3a09,0x39c7,0x4249,0x4249,0x3a08,0x4229,0x3a08,0x3a28,0x52aa,0x3a08,0x39e7,0x4228,0x4228,0x4269,0x39e7,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x39e8,0x4a49,0x4a49,0x39e7,0x39e8,0x4229,0x4249,0x31e8,0x3a08,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4228,0x4248,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x39c7,0x39e7,0x3a07,0x4249,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x3a08,0x4229,0x4229,0x4228,0x4228,0x4208,0x4228,0x4249,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4228,0x4228,0x4a6a,0x4249,0x3a08,0x4a6a,0x4249,0x18c3,0x2945,0x18e3,0x41ea,0xbdb7,0x9cd3,0x7bcf,0x4208,0x18e3,0x18e3,0x18c3,0x18a3,0x2124,0x10a2,0x1081,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x62e6,0x4a25,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x0861,0x0861,0x18c2,0x1082,0x1082,0x2104,0x10a2,0x0861,0x0861,0x2945,0x3165,0x2965,0x2945,0x2945,0x62e5,0x83c5,0x7b45,0x7325,0x62c5,0x3165,0x2965,0x2965,0x2965,0x2965,0x1082,0x0861,0x10a2,0x18c3,0x10a2,0x18e3,0x18c3,0x0861,0x1082,0x2965,0x3166,0x3186,0x3186,0x3186,0x4a46,0x7b66,0x7b45,0x7b65,0x5a65,0x3185,0x3186,0x3186,0x3186,0x2965,0x1082,0x0841,0x10a2,0x18c3,0x10a2,0x18c3,0x18e3,0x2124,0x31a7,0x4208,0x4a49,0x31a7,0x2104,0x4249,0x4249,0x4228,0x4228,0x4a69,0x4a49,0x4a49,0x4a49,0x39e7,0x39e7,0x52aa,0x4a69,0x4228,0x4a6a,0x4228,0x4249,0x4a8a,0x4228,0x4228,0x4208,0x4a49,0x4248,0x3a28,0x3a28,0x4249,0x4a69,0x39c8,0x39e8,0x4229,0x4229,0x4208,0x39e7,0x4a49,0x4a69,0x4228,0x39e7,0x4249,0x4249,0x3a28,0x4a49,0x4228,0x4228,0x4249,0x4249,0x4229,0x4228,0x39e7,0x4208,0x39e8,0x39e8,0x39e7,0x4248,0x4228,0x4a69,0x39e8,0x4229,0x4208,0x4228,0x31a7,0x39c7,0x39c7,0x39e7,0x4249,0x39e7,0x3a07,0x3a08,0x39c7,0x39c7,0x39e7,0x4229,0x31a6,0x31c6,0x31e7,0x39e7,0x39c7,0x4208,0x4249,0x39e8,0x39e7,0x31c6,0x4228,0x39e7,0x4209,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x4208,0x4249,0x31a6,0x31a7,0x31a7,0x31c7,0x3a08,0x39e8,0x3a08,0x4249,0x31c7,0x39e7,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x31a6,0x31a6,0x39c7,0x39c7,0x3186,0x2986,0x3186, +0x2965,0x2966,0x31a6,0x39c7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x31e8,0x3208,0x3a49,0x3a08,0x31c7,0x31a7,0x39e7,0x4228,0x39e7,0x31e7,0x31e7,0x3a07,0x31c7,0x4249,0x52ab,0x31c7,0x3a08,0x4228,0x31a6,0x4a8a,0x4229,0x2986,0x31c7,0x39e8,0x4249,0x4269,0x4228,0x3a08,0x4228,0x4a69,0x4228,0x31c7,0x3a08,0x4229,0x4228,0x3a08,0x39e7,0x4229,0x4228,0x3a08,0x4229,0x4249,0x3a28,0x4229,0x3a28,0x4249,0x4a69,0x39e8,0x4208,0x4a69,0x4249,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a6a,0x31c7,0x3a08,0x4228,0x4248,0x4248,0x4228,0x31e7,0x4269,0x4a8a,0x4228,0x4a49,0x4a49,0x4228,0x3a08,0x4a8a,0x4249,0x4228,0x4228,0x39e7,0x4a69,0x4a89,0x4248,0x4228,0x4249,0x4209,0x3a08,0x4249,0x4228,0x4248,0x4a69,0x4228,0x39e7,0x3a08,0x4a69,0x4a49,0x4a6a,0x4229,0x528a,0x4a69,0x4229,0x4a49,0x4249,0x4249,0x52cb,0x4a69,0x18a3,0x2125,0x18e3,0x3188,0xa535,0x8c71,0x738e,0x3a07,0x18e3,0x18e3,0x18e3,0x18c3,0x2925,0x2104,0x2104,0x18e3,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x39c5,0x31a5,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x2103,0x18e3,0x2924,0x2965,0x3165,0x2965,0x2945,0x41e5,0x4a25,0x4a25,0x4a25,0x4205,0x3165,0x2965,0x3185,0x3185,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18e3,0x2124,0x2104,0x18e3,0x2925,0x3166,0x3186,0x3186,0x3186,0x31a6,0x4a26,0x5266,0x4a26,0x39a6,0x3186,0x31a6,0x3186,0x3186,0x2945,0x18c2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x3187,0x39e8,0x4209,0x3186,0x2124,0x3a08,0x4249,0x4a8a,0x4228,0x4a8a,0x4249,0x4249,0x52aa,0x4228,0x4a48,0x4a48,0x3a08,0x4249,0x4a49,0x3a07,0x4228,0x4229,0x4249,0x4228,0x4208,0x4a49,0x4228,0x39e7,0x3a08,0x4a69,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4228,0x4249,0x4228,0x4228,0x528a,0x4208,0x4229,0x4228,0x3a08,0x4228,0x3a08,0x39e8,0x4229,0x4228,0x39e7,0x31c7,0x3a08,0x4a69,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x31c7,0x31c7,0x4228,0x3a08,0x39e7,0x3a08,0x39e8,0x4249,0x3a08,0x528a,0x39e8,0x4249,0x4228,0x4a49,0x39e7,0x39c7,0x4228,0x4228,0x39c7,0x39e7,0x4a49,0x29a6,0x31c7,0x3a07,0x3a28,0x3a08,0x39e7,0x3a07,0x39c7,0x31a6,0x4208,0x31a6,0x52ab,0x52ab,0x39e7,0x31c7,0x3a08,0x31c7,0x39c7,0x31c7,0x4249,0x39c7,0x31a7,0x3a08,0x39e8,0x31c6,0x4228,0x4229,0x31c7,0x39e8,0x2986,0x31a7,0x39e7,0x31c7,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31c7, +0x2986,0x3186,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x31c7,0x31e7,0x3208,0x3a08,0x4a8a,0x4229,0x39c7,0x39e7,0x39c7,0x39e8,0x4208,0x3a08,0x39e7,0x4a69,0x39e7,0x3a08,0x39e7,0x3a08,0x4a8a,0x4228,0x39e8,0x3a08,0x31c7,0x3a08,0x39e8,0x31a7,0x39e8,0x3a08,0x4228,0x39c7,0x39e8,0x3a08,0x39e7,0x3a08,0x4249,0x4249,0x4a8a,0x3a08,0x39e7,0x4a6a,0x3a08,0x39e7,0x4228,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4249,0x3a08,0x4208,0x4208,0x4a49,0x4229,0x4a49,0x4229,0x4208,0x3a28,0x4249,0x4249,0x3a08,0x39e8,0x4a49,0x4a69,0x3a07,0x4248,0x4228,0x3a08,0x39e8,0x4229,0x4229,0x5aab,0x4228,0x3a08,0x3a08,0x3a08,0x4229,0x4a49,0x4209,0x4249,0x4249,0x4249,0x4228,0x4229,0x3a08,0x3a09,0x4229,0x4229,0x4a69,0x52aa,0x3a08,0x3a08,0x4249,0x4aaa,0x4aaa,0x4269,0x3a28,0x4269,0x4229,0x4229,0x4a69,0x4a8a,0x52ca,0x4a8a,0x4228,0x18a2,0x18c3,0x18c3,0x2967,0x9493,0x8410,0x6b6e,0x39e7,0x18e3,0x18e3,0x18e3,0x18c3,0x2945,0x2965,0x2965,0x2924,0x2945,0x2945,0x2924,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2965,0x3165,0x31a6,0x3165,0x2965,0x2944,0x2103,0x1082,0x1082,0x2124,0x2965,0x31a6,0x3185,0x2965,0x3165,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x3186,0x3186,0x3185,0x3165,0x3165,0x20e4,0x18a2,0x1082,0x18e3,0x2965,0x3186,0x2945,0x2945,0x31a6,0x3186,0x3186,0x3166,0x2965,0x3186,0x3186,0x3165,0x39a6,0x31a6,0x39c7,0x31a6,0x3186,0x2924,0x2924,0x2124,0x2104,0x18c3,0x10a2,0x18e3,0x18e3,0x2104,0x3186,0x39e8,0x39e8,0x2966,0x2124,0x3a08,0x4a49,0x4a49,0x4249,0x4a69,0x4228,0x4a6a,0x52aa,0x4a49,0x4a89,0x52aa,0x4a69,0x4249,0x4228,0x4269,0x4249,0x4249,0x4229,0x4228,0x528a,0x4228,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4248,0x3a28,0x4228,0x4228,0x39e8,0x4249,0x4a6a,0x4208,0x4229,0x3a08,0x39e8,0x3a08,0x4208,0x4a69,0x4249,0x3a09,0x3a09,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x31c7,0x4a69,0x3a07,0x31a6,0x39e7,0x3a08,0x3a08,0x39e7,0x39e7,0x4a6a,0x4229,0x4208,0x39c7,0x4208,0x3a08,0x4a49,0x3a08,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x41e8,0x31a7,0x4208,0x4a49,0x3a08,0x4249,0x4228,0x31c6,0x4228,0x4228,0x4a69,0x31c7,0x3a08,0x4249,0x39e8,0x4209,0x39e8,0x39e7,0x4228,0x39e7,0x4229,0x39c7,0x4208,0x4229,0x4249,0x4a89,0x4228,0x3a08,0x31a7,0x3a08,0x31a7,0x31c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c6,0x31c7,0x3a08,0x31c6, +0x2986,0x3186,0x31a7,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x31a7,0x31c7,0x39e8,0x31c7,0x3a08,0x4229,0x31c7,0x31a7,0x31c7,0x4a69,0x39e8,0x31e8,0x3a08,0x4249,0x39e8,0x3a08,0x39e8,0x39c8,0x31a7,0x4229,0x528a,0x3a08,0x3a08,0x39e7,0x31c7,0x3a08,0x39e8,0x31c7,0x31c7,0x31e7,0x4228,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e8,0x4228,0x4249,0x4249,0x4a8a,0x4269,0x3a08,0x3a28,0x4249,0x4249,0x4249,0x4208,0x4a49,0x3a08,0x4a69,0x4248,0x4228,0x4a49,0x4a6a,0x4a49,0x4a49,0x4249,0x3a08,0x3a08,0x4209,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4208,0x4208,0x39e8,0x4208,0x4a6a,0x4228,0x3a28,0x4249,0x4a69,0x4228,0x4228,0x4a8a,0x4249,0x3a29,0x4229,0x4249,0x4229,0x4249,0x3a28,0x4269,0x3a08,0x3a08,0x39e8,0x4208,0x4249,0x4208,0x4229,0x4aaa,0x4a69,0x4249,0x4249,0x3208,0x4249,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4228,0x18a2,0x18c3,0x18a3,0x2926,0x83f1,0x73cf,0x634d,0x39c7,0x18c3,0x18c3,0x18c3,0x18c3,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2924,0x2124,0x2124,0x2944,0x2104,0x10a2,0x1082,0x2124,0x3185,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x3165,0x2104,0x18a2,0x1082,0x20e4,0x3166,0x3165,0x2925,0x2924,0x2965,0x2945,0x2945,0x2104,0x20e4,0x2104,0x2924,0x2124,0x2945,0x2965,0x3165,0x2944,0x2104,0x20e4,0x2124,0x2124,0x2124,0x18c3,0x1082,0x18e3,0x20e3,0x2104,0x3186,0x39c7,0x31a7,0x2945,0x2924,0x4a69,0x528a,0x41e7,0x4248,0x4228,0x4249,0x4249,0x4a6a,0x4a69,0x4249,0x4a49,0x4a69,0x4249,0x39e8,0x4249,0x4a69,0x4a49,0x4a69,0x4a8a,0x4228,0x4228,0x4a69,0x3a08,0x4229,0x4208,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x4249,0x3a08,0x4229,0x4208,0x4208,0x4228,0x4228,0x4248,0x3a08,0x31e7,0x4208,0x4229,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4229,0x39c7,0x4208,0x39e7,0x4a69,0x3a08,0x39e7,0x3a07,0x4228,0x4229,0x39c8,0x4208,0x4208,0x39c7,0x31c7,0x4249,0x39e7,0x3a08,0x39e7,0x4a69,0x4228,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x3a08,0x3a07,0x31c6,0x39e7,0x4249,0x4a69,0x31c7,0x31c7,0x3a08,0x39e8,0x4249,0x39e8,0x3a08,0x4228,0x39e7,0x3186,0x4208,0x4228,0x4229,0x4229,0x4208,0x4228,0x39e8,0x39c7,0x3a08,0x39e7,0x31e7,0x31c7,0x39e7,0x31a6,0x31a6,0x3a07,0x39e7,0x4208,0x39e7, +0x2987,0x2966,0x39e7,0x31a6,0x2145,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x31e7,0x39e8,0x3a08,0x4249,0x39e8,0x31c7,0x39e8,0x31e8,0x39e8,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x4249,0x3a08,0x3a07,0x3a28,0x39e7,0x39c7,0x31c7,0x31a7,0x31e8,0x3a28,0x39e7,0x31c7,0x39e7,0x3a28,0x4249,0x4249,0x3a08,0x39e7,0x3a28,0x4a69,0x4228,0x4249,0x3a08,0x3a08,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x4a6a,0x4228,0x4249,0x4228,0x4208,0x4a49,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4229,0x4a49,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4269,0x4249,0x4a49,0x4249,0x4a89,0x4a69,0x3a08,0x4248,0x4a69,0x4228,0x4249,0x4a69,0x31c7,0x4249,0x4269,0x3a28,0x428a,0x4249,0x4229,0x3a08,0x4a69,0x4a69,0x4229,0x4a69,0x4a29,0x4229,0x4a6a,0x4229,0x426a,0x4229,0x4249,0x4a49,0x5acb,0x4a6a,0x4a6a,0x18c3,0x18a2,0x18c3,0x2125,0x738f,0x738e,0x5b0c,0x39c6,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x20e3,0x10a2,0x1082,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c2,0x18c3,0x18a3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x2104,0x18a2,0x1082,0x18e3,0x2925,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x18c3,0x10a2,0x20e4,0x20e4,0x2104,0x2966,0x31a7,0x3187,0x2945,0x2945,0x4a69,0x4a49,0x528a,0x5aab,0x52aa,0x4269,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4a6a,0x52cb,0x4a8a,0x4269,0x4249,0x4269,0x4a8a,0x4249,0x3a28,0x3a28,0x4228,0x3a08,0x4249,0x4249,0x4248,0x4a49,0x4228,0x4228,0x39c7,0x39e8,0x4229,0x31c7,0x4228,0x4249,0x3a08,0x31e7,0x3a07,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x3a08,0x3a08,0x4a49,0x3a08,0x3a08,0x4228,0x3a08,0x4229,0x39e7,0x39c7,0x39e8,0x4a49,0x39e7,0x4a69,0x4228,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x41e8,0x39e7,0x4a69,0x4a69,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3a08,0x3a07,0x3a08,0x39e7,0x31c7,0x3a08,0x39e7,0x4228,0x39e7,0x3a07,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4a8a,0x4269,0x31a6,0x3a08,0x39e7,0x31c7,0x39e8,0x41e8,0x4229,0x31a7,0x3a08,0x39e8,0x4228,0x4208,0x31c7,0x31e7,0x4228,0x4248,0x31e7,0x4228,0x3a07,0x39c7,0x3186,0x3186,0x3a08, +0x31a7,0x2986,0x31a7,0x2965,0x31c7,0x31c7,0x29a6,0x2986,0x39c7,0x39e8,0x2986,0x31c7,0x31c7,0x31a7,0x3a08,0x31e7,0x31c7,0x3187,0x31a7,0x31a7,0x4208,0x4249,0x31c6,0x4229,0x4208,0x39c7,0x39e7,0x39c7,0x3a08,0x39e8,0x3a08,0x4228,0x3a08,0x39e7,0x39c7,0x31c7,0x3a29,0x3a28,0x3a07,0x3a08,0x31c7,0x3a08,0x31e8,0x3a08,0x52ab,0x3a28,0x3a08,0x4249,0x4249,0x3a28,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x4249,0x4228,0x4249,0x4229,0x4229,0x3a09,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4a49,0x4a6a,0x4228,0x4269,0x4249,0x39e8,0x4249,0x4228,0x4228,0x39e8,0x4228,0x4249,0x39e8,0x4a8a,0x5b0c,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x4249,0x4228,0x4a69,0x4a69,0x39e7,0x4a8a,0x4a8a,0x3a08,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x52aa,0x4249,0x4208,0x4a8a,0x4229,0x4228,0x4a8a,0x52ab,0x4249,0x4228,0x18a3,0x18a2,0x18e3,0x2105,0x632e,0x632d,0x5acb,0x31a6,0x18c3,0x18c3,0x18a3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x18a2,0x2104,0x20e4,0x18e3,0x2945,0x3186,0x3166,0x2945,0x2965,0x4a49,0x4a49,0x52aa,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a69,0x4249,0x4a69,0x4a69,0x4269,0x4a8a,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4249,0x3a28,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x39e7,0x4208,0x4208,0x3a08,0x4228,0x4a49,0x3a08,0x4249,0x39c7,0x39c7,0x4208,0x31c7,0x4249,0x4249,0x3a08,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4249,0x3a08,0x3a08,0x4228,0x4a69,0x4228,0x3a08,0x4249,0x4248,0x3a08,0x3a08,0x31c7,0x4208,0x4229,0x4269,0x3a28,0x4228,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x2986,0x4229,0x4228,0x39e8,0x39e8,0x4208,0x4208,0x39e7,0x4249,0x3a07,0x39c7,0x4208,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39e7,0x4208,0x29a6,0x31c7,0x39e8,0x3a08,0x31a6,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x3a07,0x31a6,0x31a6,0x2966,0x31a6,0x3186, +0x2966,0x2966,0x31a6,0x31c7,0x31e7,0x31e7,0x3a08,0x3186,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x31c7,0x39e8,0x3a08,0x4a29,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4208,0x39c7,0x39c7,0x39e7,0x39e8,0x4229,0x4249,0x3a08,0x31c6,0x4228,0x4249,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x31e8,0x4a8a,0x4229,0x31e8,0x4a6a,0x4a6a,0x31e7,0x4249,0x4269,0x3a28,0x4249,0x3a28,0x4228,0x4249,0x4249,0x4229,0x4229,0x4229,0x4228,0x4228,0x4229,0x4269,0x4a8a,0x3a08,0x4229,0x4249,0x3a08,0x39e7,0x4228,0x4a69,0x4269,0x4aaa,0x4228,0x4228,0x4228,0x4209,0x4208,0x4228,0x4249,0x4229,0x4249,0x4a69,0x4228,0x3a08,0x3a29,0x4a6a,0x4229,0x4a49,0x52aa,0x528a,0x4228,0x39e7,0x3a08,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4208,0x4228,0x4a8a,0x4a49,0x4a8a,0x4249,0x4249,0x4208,0x10a2,0x10a2,0x18c3,0x2104,0x5aec,0x630c,0x528b,0x31a6,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x20e3,0x18e3,0x2125,0x2965,0x2945,0x2124,0x3166,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4249,0x52aa,0x4aaa,0x4a69,0x4269,0x4aaa,0x4a8a,0x4249,0x4a49,0x4208,0x4a69,0x4a69,0x39c7,0x4a8a,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4248,0x3a28,0x4228,0x5289,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4228,0x4a69,0x4208,0x4228,0x3a08,0x4228,0x3a08,0x4a69,0x39e7,0x3a07,0x39e8,0x39c7,0x39e7,0x4228,0x3a08,0x4249,0x4228,0x39e8,0x31c7,0x39e7,0x39c7,0x4228,0x4a49,0x39c7,0x4a49,0x39e8,0x39e7,0x3a28,0x39e7,0x4208,0x39e8,0x31e8,0x4228,0x4228,0x4248,0x39e7,0x31a6,0x4208,0x4249,0x4a49,0x39e7,0x4208,0x3a08,0x39c7,0x4a49,0x39c7,0x31a7,0x3a08,0x4229,0x31a6,0x39e7,0x3a08,0x39c7,0x4208,0x31a7,0x3187,0x31c7,0x31a6,0x3a07,0x31a6,0x39c7,0x39c7,0x2965, +0x31a7,0x39c7,0x4228,0x39c7,0x31a7,0x39e7,0x39e8,0x31a7,0x39e8,0x31a7,0x2986,0x39e8,0x3a08,0x4249,0x4249,0x39e8,0x31a6,0x31e8,0x31c7,0x39c7,0x4229,0x4208,0x3a08,0x31c8,0x31e8,0x31e7,0x39e7,0x4228,0x3a08,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e7,0x4208,0x39e8,0x39e7,0x39e7,0x3a28,0x4249,0x4249,0x39e8,0x3a08,0x4229,0x4229,0x3a08,0x4a4a,0x3a08,0x4249,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x4249,0x4a8a,0x52aa,0x4a6a,0x4229,0x3a08,0x39e7,0x4a8a,0x3a28,0x4269,0x4a8a,0x4208,0x4229,0x4269,0x3a08,0x4249,0x4a49,0x4248,0x4269,0x4a69,0x39e7,0x39e7,0x4229,0x4a6a,0x3a08,0x3a08,0x4229,0x52ab,0x4249,0x4a69,0x4a6a,0x4249,0x4249,0x526a,0x4a8a,0x4249,0x4249,0x4248,0x3a08,0x3a08,0x4269,0x4249,0x4229,0x4a49,0x52aa,0x4a8a,0x4228,0x4269,0x4249,0x4249,0x39e8,0x4208,0x4208,0x4a49,0x4a69,0x4229,0x4228,0x4249,0x4a6a,0x4208,0x10a2,0x10a2,0x18c3,0x18e4,0x52ac,0x5aec,0x4a6a,0x3186,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x20e3,0x18e3,0x2124,0x2945,0x2925,0x2104,0x2945,0x4a69,0x4a8a,0x4a69,0x4a49,0x4a49,0x528a,0x4249,0x4249,0x4269,0x4249,0x4a6a,0x4249,0x4229,0x4228,0x4228,0x4208,0x528a,0x528a,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x4a49,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4a8a,0x39e8,0x4249,0x4208,0x4228,0x39e7,0x39c7,0x39e7,0x4228,0x3a28,0x31e7,0x4228,0x39e7,0x3a08,0x4249,0x4229,0x3a07,0x39e7,0x39e7,0x4248,0x4a69,0x39e7,0x39e8,0x4249,0x39e7,0x3a08,0x4249,0x3a08,0x4228,0x3a08,0x39e7,0x31c6,0x39e7,0x3a28,0x4249,0x4208,0x39e7,0x3a08,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x3a08,0x3a07,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x3187,0x39e8,0x31c7,0x4229,0x39c7,0x3a07,0x4208,0x3a08,0x3a07,0x4229,0x4229,0x39e8,0x39e8,0x39e8,0x39c7,0x4229,0x4249,0x39e8,0x39e7,0x39e8,0x31a6,0x31e7,0x39e7,0x39e7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x4a49,0x39e7,0x31a6,0x39c7,0x31a6, +0x3a08,0x39e8,0x2986,0x31a6,0x31a6,0x39c7,0x31a7,0x39c7,0x3a08,0x31c7,0x31a7,0x31a7,0x31c7,0x4208,0x4229,0x31e7,0x31c7,0x3a08,0x29c7,0x31c7,0x39e8,0x39a7,0x31c8,0x31e8,0x31e7,0x3a28,0x4249,0x3a07,0x3a28,0x3a07,0x4207,0x4228,0x39e7,0x4249,0x4a49,0x4208,0x39e7,0x39e8,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x3a29,0x4228,0x4269,0x4249,0x4229,0x4a49,0x4228,0x5b0c,0x4a8a,0x3a08,0x3a28,0x52ab,0x4a49,0x4a49,0x4a69,0x4248,0x3a28,0x4269,0x4249,0x3a28,0x4249,0x4a49,0x41e8,0x4208,0x4229,0x4228,0x4a49,0x4228,0x4a69,0x4a6a,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4a6a,0x4a6a,0x528a,0x528a,0x4a49,0x4249,0x52cb,0x4a8a,0x4249,0x4228,0x4248,0x4248,0x4a8a,0x4228,0x4249,0x4a89,0x4228,0x4228,0x4208,0x4208,0x52ab,0x4208,0x4249,0x4249,0x4229,0x4249,0x4208,0x4229,0x4a49,0x4a69,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x18c3,0x10a2,0x18c3,0x20e4,0x528b,0x5acb,0x4a49,0x3185,0x18c3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x2124,0x20e3,0x18c3,0x2104,0x2125,0x2104,0x20e4,0x2124,0x4249,0x4a69,0x52aa,0x4229,0x4a6a,0x4a49,0x4249,0x4249,0x4229,0x4a69,0x4a8a,0x4a69,0x4a49,0x52cb,0x4a69,0x4a89,0x4248,0x4aaa,0x4248,0x39e7,0x4229,0x4228,0x3a08,0x4228,0x4228,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a69,0x4249,0x39e7,0x4228,0x4a8a,0x4a89,0x4228,0x3a07,0x3a08,0x31c7,0x4208,0x4a6a,0x3a08,0x39e7,0x3a08,0x3a08,0x528a,0x4a49,0x39e8,0x3a08,0x4229,0x39c7,0x39c7,0x4208,0x4229,0x4228,0x3a08,0x4249,0x31c6,0x3a08,0x31c7,0x52ab,0x4208,0x39e8,0x4208,0x31a6,0x3a08,0x3a08,0x39e7,0x4229,0x3a08,0x4228,0x31a6,0x31a6,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x4228,0x4208,0x4208,0x4208,0x3a08,0x31c7,0x3a08,0x4228,0x4229,0x39c7,0x4208,0x31a7,0x39e8,0x4249,0x3a08,0x31a7,0x31a7,0x31c7,0x39e7,0x31a6,0x31c7,0x39e7,0x4208,0x3a08,0x39e7,0x39e8,0x31a6,0x31a6,0x3186,0x2945,0x31c6, +0x39c7,0x31c6,0x2145,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c8,0x31a7,0x2986,0x2986,0x39e8,0x3a08,0x31c7,0x3a08,0x3208,0x29a6,0x31a7,0x39c7,0x39e8,0x31c7,0x4208,0x4249,0x31e8,0x29a6,0x31c7,0x39e8,0x4229,0x4228,0x4249,0x4a69,0x39c7,0x3a07,0x4228,0x3a28,0x3a28,0x31e7,0x4249,0x4269,0x4249,0x3a08,0x3a28,0x4249,0x4a8a,0x3a08,0x4a49,0x4a49,0x4228,0x52aa,0x4249,0x3a08,0x4249,0x4249,0x4a69,0x5289,0x4a69,0x39e7,0x4228,0x4a69,0x4249,0x52cb,0x4249,0x4249,0x4229,0x4249,0x4228,0x4a89,0x4248,0x4a69,0x4249,0x4249,0x4a8a,0x52cb,0x3a08,0x4248,0x4249,0x4249,0x4a69,0x52ab,0x4a8a,0x4a8a,0x52ab,0x4a49,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4aaa,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4249,0x3a08,0x4a8a,0x4a8a,0x4a69,0x39e7,0x4249,0x4229,0x528a,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x3a08,0x4a69,0x4228,0x4228,0x18c3,0x10a2,0x18e3,0x18e4,0x4a4a,0x528a,0x4249,0x3186,0x18c3,0x18e3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x18e3,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x2104,0x4228,0x4a69,0x52aa,0x4248,0x4a49,0x4a49,0x4249,0x4a69,0x4269,0x4a69,0x52aa,0x52ab,0x4249,0x4a6a,0x4a8a,0x4269,0x4a89,0x4248,0x4228,0x39e7,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x3a07,0x4249,0x39c7,0x39e7,0x4208,0x4a49,0x4208,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4229,0x39e8,0x4a6a,0x4228,0x3a08,0x39e7,0x4208,0x4a49,0x4208,0x4248,0x4249,0x39e7,0x31e7,0x3a08,0x4249,0x4208,0x4208,0x3a08,0x4228,0x3a07,0x3a08,0x4249,0x39c7,0x4a49,0x4228,0x39c7,0x4208,0x31e7,0x39e8,0x39e7,0x3a08,0x3a28,0x31e7,0x39c7,0x31a6,0x4249,0x3a08,0x31c7,0x39e7,0x31c7,0x31c7,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x31c7,0x3a07,0x4228,0x4208,0x3a08,0x39e8,0x4208,0x4a6a,0x31a7,0x39c7,0x39e8,0x3a08,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x31a6,0x31a6, +0x2965,0x2986,0x2986,0x31c7,0x3a08,0x31e7,0x31e7,0x31a6,0x39c7,0x39c7,0x31a7,0x31c7,0x31e8,0x31e8,0x31a7,0x3a08,0x39c7,0x4228,0x4229,0x3a08,0x31e7,0x31a7,0x39c7,0x31a7,0x4208,0x31a7,0x31a7,0x31c7,0x4a6a,0x3a08,0x39e8,0x39e8,0x4249,0x4209,0x3a07,0x4248,0x4249,0x3a28,0x4249,0x3a08,0x39c7,0x4208,0x41e8,0x4a49,0x4a49,0x5b0b,0x4a89,0x3a07,0x3a08,0x4a69,0x528a,0x39e7,0x4229,0x4a49,0x4a49,0x4a49,0x528a,0x4249,0x5acb,0x4229,0x4208,0x4a69,0x4229,0x4a69,0x4249,0x4229,0x4a69,0x4228,0x4a8a,0x4248,0x4a69,0x4a69,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4269,0x4249,0x4a69,0x4a8a,0x3a28,0x4249,0x4a6a,0x4a49,0x5acb,0x52aa,0x5acb,0x630c,0x4a69,0x4229,0x4a6a,0x4a69,0x4249,0x4269,0x4249,0x4249,0x3a08,0x4249,0x428a,0x3a08,0x4249,0x3a08,0x4208,0x4a69,0x4a49,0x4a49,0x4249,0x4a8a,0x426a,0x3a08,0x3a08,0x3a08,0x4249,0x4248,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x4229,0x4a6a,0x4229,0x3186,0x18c3,0x20e3,0x18c3,0x18c2,0x18c2,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x2104,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a49,0x4249,0x4a69,0x4aaa,0x4229,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4249,0x4249,0x528a,0x4a49,0x3a08,0x4229,0x4228,0x528a,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x39c7,0x4a6a,0x31e7,0x3a08,0x3a08,0x4208,0x39e7,0x39e7,0x3a07,0x4a69,0x52aa,0x3a07,0x31a7,0x4249,0x4228,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x3a08,0x4228,0x31c7,0x4248,0x4249,0x4249,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x31a7,0x4249,0x4248,0x31c7,0x3a08,0x3a08,0x4248,0x39c7,0x31e7,0x31c6,0x3a07,0x31a6,0x31c7,0x3a08,0x31a6,0x4228,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x4249,0x4208,0x39e7,0x39c7,0x4207,0x4228,0x4229,0x4209,0x39e8,0x3186,0x39c7,0x3a08,0x3207,0x29a6,0x31c7,0x31a6,0x31a7,0x31c7,0x31e7,0x39e7,0x39e7,0x4228,0x4208,0x31a6,0x39e7,0x39e7, +0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x39c7,0x31a7,0x31a6,0x31c7,0x39e8,0x3a28,0x3208,0x2985,0x31c7,0x31c7,0x3a08,0x31a7,0x3a08,0x39e7,0x3a07,0x31c6,0x4208,0x4208,0x39e7,0x3a08,0x3a28,0x4249,0x3a09,0x4229,0x4208,0x4229,0x4a49,0x4228,0x4228,0x4a8a,0x4249,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x4229,0x4229,0x4a49,0x4228,0x4229,0x4249,0x4228,0x4a8a,0x4a6a,0x4228,0x528a,0x4229,0x4a69,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x52aa,0x4a6a,0x4a8a,0x39e7,0x4a8a,0x4a49,0x4a69,0x4a6a,0x4249,0x4a8a,0x4a6a,0x52cb,0x4229,0x4a49,0x4aaa,0x4a8a,0x52aa,0x4a49,0x632c,0x5aec,0x4a6a,0x4249,0x4249,0x4249,0x4a8a,0x4a8a,0x4249,0x4208,0x4228,0x4229,0x4249,0x4208,0x4a49,0x4228,0x4a69,0x4269,0x4a8a,0x4a6a,0x4a49,0x4a8a,0x4a69,0x3a08,0x3a08,0x4269,0x4269,0x4a8a,0x4229,0x18a2,0x10a2,0x20e4,0x18c3,0x4208,0x4a29,0x4208,0x3186,0x18e3,0x20e3,0x18e3,0x18c3,0x18e3,0x2104,0x20e3,0x20e3,0x20e3,0x20e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x18a2,0x18a2,0x18c2,0x18a2,0x18c3,0x18c2,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2103,0x20e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x2103,0x18c3,0x10a2,0x18a2,0x2104,0x1082,0x20e4,0x2104,0x18e4,0x18e3,0x18e4,0x2124,0x3a08,0x4a8a,0x4a49,0x4a89,0x5acb,0x528a,0x4228,0x4a8a,0x52cb,0x4249,0x3a08,0x4a49,0x4a8a,0x528a,0x4249,0x4249,0x4a69,0x4228,0x4228,0x528a,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x4a49,0x4a8a,0x39e7,0x4228,0x3a08,0x39e8,0x4228,0x4229,0x3a08,0x31e7,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4269,0x4228,0x4228,0x39e7,0x4a69,0x4249,0x4228,0x3a07,0x4208,0x4248,0x4248,0x4249,0x4228,0x4207,0x4a48,0x4208,0x4208,0x4208,0x4228,0x4228,0x4249,0x4208,0x39e7,0x4a49,0x4208,0x39e8,0x4228,0x3a08,0x4228,0x39e7,0x4249,0x3a28,0x39e7,0x39e7,0x39c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31c7,0x31a6,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x31a7,0x3a08,0x31c7,0x39e7,0x3a08,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x3a07,0x39c7,0x31a6,0x39e7,0x3a08, +0x31a6,0x29a6,0x31c6,0x31a6,0x2966,0x29a6,0x29a6,0x31c7,0x31a7,0x39c7,0x4228,0x31c7,0x39e8,0x31e7,0x31c6,0x29a6,0x31a7,0x4208,0x39e7,0x39c7,0x4228,0x4248,0x4228,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x4209,0x3a08,0x4249,0x4249,0x3a08,0x31c7,0x31e7,0x4269,0x3a29,0x3a08,0x3a08,0x39e8,0x4a8a,0x4228,0x4228,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a6a,0x4248,0x4a49,0x4249,0x4a69,0x3a29,0x4a8a,0x52aa,0x4a69,0x4228,0x4229,0x4a49,0x4229,0x528a,0x4a49,0x4228,0x528a,0x52aa,0x4228,0x4a6a,0x52cb,0x4a8a,0x4208,0x52ab,0x5aeb,0x4a89,0x4a69,0x4229,0x52ab,0x4208,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4229,0x4249,0x4a69,0x4228,0x4a49,0x4229,0x4a69,0x52aa,0x4a69,0x4a8a,0x4a8a,0x3a09,0x4a6a,0x4229,0x4a69,0x4a49,0x3a28,0x4229,0x426a,0x4aab,0x4a6a,0x18a3,0x10a2,0x2104,0x18c3,0x39e8,0x4209,0x39e8,0x31a6,0x2103,0x18e3,0x18e3,0x18c3,0x2104,0x2945,0x2945,0x2944,0x2944,0x3165,0x2965,0x3165,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2945,0x2944,0x2103,0x2124,0x2924,0x2924,0x2124,0x18c3,0x1082,0x1082,0x20e3,0x2965,0x3185,0x2965,0x2965,0x3185,0x3165,0x3186,0x3165,0x2965,0x2965,0x2944,0x2965,0x2965,0x2944,0x2924,0x2124,0x2924,0x2924,0x2944,0x2924,0x18c3,0x1082,0x1082,0x18c3,0x2965,0x39c6,0x31a6,0x3165,0x2965,0x3165,0x3185,0x3185,0x3185,0x2945,0x2965,0x2945,0x2965,0x3165,0x2945,0x3165,0x2945,0x2924,0x2945,0x3165,0x20e3,0x10a2,0x18a2,0x20e3,0x10a2,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x2945,0x4248,0x4a69,0x4a8a,0x4a49,0x4a8a,0x4a49,0x4208,0x4a69,0x4a89,0x3a28,0x4249,0x4249,0x4a69,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4a69,0x4a6a,0x4a49,0x52ab,0x4228,0x39e7,0x39e7,0x4228,0x4249,0x3a08,0x4228,0x3a07,0x4249,0x4228,0x3a08,0x4a89,0x4228,0x4228,0x4a69,0x4a69,0x3a08,0x39e7,0x4228,0x3a08,0x3a08,0x3a07,0x4a49,0x4a49,0x4228,0x39e7,0x4a49,0x4208,0x4208,0x4249,0x4a69,0x4a69,0x4228,0x4208,0x39e8,0x39e8,0x4a49,0x4228,0x39e7,0x4207,0x4208,0x4249,0x4229,0x3a08,0x3a08,0x3a08,0x39e8,0x31a7,0x39e8,0x39e7,0x39e7,0x39c7,0x39e8,0x31a7,0x39e7,0x39c7,0x39e7,0x31a6,0x31e7,0x3a08,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x3a08,0x39e7,0x4208,0x39e7,0x4208,0x4208,0x31a6,0x31c7,0x31e7,0x4228,0x39e7,0x39c7,0x39c7,0x31c7,0x31c7,0x3a08,0x4208,0x4208,0x39e7,0x3a08,0x31c7,0x31a6,0x31c7,0x39e7,0x31a6,0x31c6, +0x31c6,0x3a08,0x2986,0x2165,0x2145,0x31c7,0x31e7,0x3a08,0x39e7,0x39e8,0x31c7,0x3186,0x39c7,0x4208,0x39e7,0x3186,0x39c7,0x3a08,0x3a29,0x31e7,0x31c7,0x31a6,0x39e7,0x3a08,0x4228,0x39e8,0x31c7,0x39e8,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4228,0x424a,0x3a08,0x3a08,0x4a6a,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x39e8,0x4208,0x4229,0x41e8,0x4208,0x4229,0x4249,0x4229,0x4208,0x4249,0x39e8,0x4208,0x4a49,0x4208,0x4228,0x4269,0x4269,0x4249,0x4249,0x4249,0x52cb,0x4a8a,0x4249,0x4249,0x4a8a,0x3a28,0x4269,0x52aa,0x4a69,0x52ab,0x52aa,0x4a8a,0x4a89,0x4249,0x4249,0x52cb,0x5acb,0x5aec,0x52eb,0x4aaa,0x52aa,0x52cb,0x52ab,0x4208,0x4a6a,0x52aa,0x4229,0x4229,0x4229,0x4269,0x4249,0x4a89,0x4a8a,0x4228,0x4aaa,0x4a8a,0x4228,0x4a69,0x4229,0x4249,0x4249,0x3a08,0x4229,0x4249,0x4229,0x4249,0x426a,0x4a8a,0x4a69,0x4249,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x39c7,0x41e8,0x39e7,0x31a6,0x2103,0x18c3,0x18e3,0x18c3,0x2104,0x2124,0x2124,0x18e3,0x2924,0x3165,0x2965,0x2945,0x2945,0x2945,0x2944,0x2965,0x2944,0x2945,0x2945,0x2965,0x2944,0x2924,0x20e3,0x2945,0x2124,0x18c3,0x1082,0x1082,0x18e3,0x2945,0x2965,0x2103,0x2944,0x3185,0x2965,0x3186,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2924,0x2103,0x2945,0x2944,0x18c3,0x1082,0x1082,0x18c3,0x2945,0x39c6,0x2945,0x2944,0x3165,0x3165,0x3185,0x39a6,0x3186,0x2965,0x3185,0x3186,0x3186,0x39a6,0x3186,0x3186,0x3185,0x2104,0x2945,0x2945,0x20e3,0x10a2,0x10a2,0x18e3,0x18a2,0x2945,0x2124,0x18e3,0x18e3,0x18c3,0x2945,0x4a8a,0x4228,0x4a69,0x4a6a,0x528a,0x4a49,0x4228,0x4a69,0x4228,0x3a28,0x4269,0x3a28,0x4228,0x4a49,0x39e8,0x4249,0x4a89,0x4a89,0x4228,0x4a49,0x4249,0x4229,0x3a28,0x3a08,0x4228,0x4249,0x31c7,0x3a28,0x3a28,0x3a28,0x3a08,0x4228,0x52aa,0x4a89,0x3a07,0x4a69,0x4a49,0x3a07,0x3a08,0x39c7,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x3a07,0x4248,0x4a49,0x4229,0x4a49,0x39e7,0x4a89,0x4a69,0x3a08,0x4a6a,0x4229,0x4208,0x39e8,0x3a07,0x39c6,0x4228,0x4228,0x4249,0x4249,0x4249,0x4228,0x4208,0x4a49,0x4229,0x39c7,0x31a7,0x39e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x3a08,0x39e7,0x31c7,0x39e7,0x3a07,0x39e7,0x4a69,0x39e7,0x31c6,0x3a08,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x39e7,0x4249,0x39e8,0x39e8,0x39e7,0x31c7,0x39c7,0x31a6,0x39e7,0x4228,0x31a6,0x39e7,0x4a69,0x39e7,0x39e7,0x31c7,0x2986,0x39e7,0x31c7,0x39e7, +0x31c7,0x3186,0x2965,0x31c6,0x31a6,0x31c7,0x39e7,0x39e7,0x39e8,0x31a7,0x31a7,0x31a7,0x39c7,0x4228,0x39e8,0x31c6,0x3a07,0x3a28,0x29a7,0x31e8,0x31c7,0x3a08,0x4228,0x3a08,0x3a28,0x3a08,0x31c7,0x31e7,0x3a08,0x3a08,0x4229,0x39e8,0x52ab,0x4269,0x3a29,0x3a08,0x4229,0x4a4a,0x39e8,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x31e7,0x4269,0x4249,0x3a08,0x5acb,0x4a49,0x31e7,0x3a08,0x4229,0x4208,0x4a49,0x4a8a,0x4249,0x4249,0x4249,0x4229,0x4a8a,0x5b0c,0x4a69,0x528a,0x4a6a,0x4a69,0x4a69,0x4aaa,0x4a6a,0x4a8a,0x4aaa,0x4a8a,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x52cb,0x52ec,0x4a8a,0x4249,0x4a6a,0x4a8a,0x4229,0x424a,0x424a,0x4a4a,0x4229,0x4248,0x4a89,0x4a69,0x52aa,0x4a6a,0x4aaa,0x4249,0x3a08,0x4a49,0x52aa,0x528a,0x4a69,0x4a49,0x4a49,0x4249,0x4228,0x4a49,0x4229,0x528a,0x528a,0x4a8a,0x18c3,0x1082,0x18c3,0x18c3,0x31a7,0x39c7,0x39c7,0x3185,0x18e3,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x1082,0x0861,0x2945,0x2945,0x2944,0x2924,0x2124,0x2124,0x2924,0x2945,0x2104,0x2124,0x2924,0x2944,0x2945,0x2965,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x18c3,0x18e3,0x18c3,0x1082,0x2124,0x2945,0x2924,0x2945,0x2924,0x2124,0x2124,0x2924,0x2924,0x2924,0x2944,0x2924,0x2945,0x2945,0x18c3,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x2104,0x20e3,0x18c3,0x2944,0x2944,0x2944,0x2945,0x2945,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x3165,0x3186,0x18a2,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2945,0x20e4,0x18e4,0x18e3,0x18c3,0x2925,0x4229,0x4208,0x4208,0x4a49,0x4a6a,0x4a8a,0x3a08,0x4a69,0x4228,0x4228,0x4a89,0x4a69,0x4a69,0x4249,0x3a08,0x4228,0x4a49,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x4a49,0x3a08,0x4229,0x52aa,0x4208,0x4a49,0x4a69,0x4228,0x31c7,0x4229,0x528a,0x39e8,0x3a08,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x4228,0x4a8a,0x4228,0x3a08,0x4228,0x4a69,0x3a08,0x4249,0x4228,0x4248,0x31c7,0x4228,0x4249,0x4249,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x39e7,0x3a08,0x4228,0x3a08,0x4249,0x4a69,0x4248,0x4249,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x4249,0x4208,0x39c7,0x39e7,0x31a7,0x39c7,0x39e7,0x39e7,0x4229,0x4228,0x3a08,0x31c7,0x3a08,0x31e7,0x31c7,0x31e8,0x31e7,0x3a28,0x3a08,0x39e8,0x31a7,0x39a7,0x3186,0x31c7,0x3a08,0x3186,0x31c7,0x31c7,0x31a7,0x39e8,0x4209,0x3187,0x39c7,0x3a07,0x2985,0x39e7,0x31a6,0x3186, +0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x2986,0x31c7,0x31a7,0x2986,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4a89,0x3a08,0x31c7,0x3a29,0x3a08,0x4229,0x3a08,0x39e8,0x31c8,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x39e8,0x39c7,0x4208,0x3a08,0x39e8,0x4228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x3a08,0x4228,0x52ab,0x528a,0x4229,0x3a08,0x4a69,0x4a8a,0x3a08,0x528a,0x4a6a,0x3a28,0x3a08,0x4a49,0x4228,0x4208,0x4249,0x4228,0x4229,0x4229,0x4228,0x4249,0x5acb,0x4228,0x4a49,0x5aeb,0x4a8a,0x52cb,0x4269,0x3a08,0x52cb,0x4a8a,0x4a6a,0x4249,0x4a69,0x52cb,0x4249,0x4a8a,0x426a,0x426a,0x52ab,0x4a8a,0x4aab,0x4269,0x4a69,0x4229,0x4a6a,0x4a6a,0x4249,0x3a08,0x4a8a,0x52ca,0x4249,0x4a8a,0x4249,0x4249,0x4a6a,0x4229,0x4a29,0x4a49,0x4a49,0x528a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x4a49,0x526a,0x4a6a,0x52ab,0x4a8a,0x18c3,0x10a2,0x18c3,0x18c3,0x3166,0x39c7,0x31a7,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2965,0x2965,0x2965,0x3185,0x3165,0x1082,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0841,0x10a2,0x2965,0x2945,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x3165,0x2103,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x10a2,0x0861,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2924,0x2944,0x2925,0x2924,0x2925,0x2925,0x2945,0x31a6,0x18c3,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2924,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x4249,0x4228,0x4a49,0x4208,0x4a8a,0x4a8a,0x4229,0x52aa,0x4a6a,0x4229,0x4249,0x4a49,0x4228,0x4249,0x4228,0x4249,0x4208,0x4228,0x4229,0x4229,0x3a08,0x4208,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a69,0x4228,0x4228,0x4249,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x3a08,0x4249,0x4248,0x4208,0x4228,0x4228,0x4249,0x4228,0x4249,0x4aaa,0x4a6a,0x31c6,0x4249,0x4249,0x3a08,0x3a08,0x39e7,0x31e7,0x4228,0x4208,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x39e8,0x39e8,0x4228,0x3a08,0x31a6,0x39c7,0x3a08,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x31c7,0x39e8,0x3a07,0x31e7,0x4208,0x4208,0x4208,0x39e8,0x39c7,0x29a6,0x39e7,0x31c7,0x31a6,0x4228,0x4229,0x39e8,0x4208,0x39e8,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a6, +0x39e7,0x3a08,0x31a7,0x2986,0x2986,0x2966,0x39e8,0x31c7,0x3a28,0x4248,0x4228,0x31a7,0x31c7,0x31c7,0x3a08,0x4228,0x39e7,0x31c7,0x31c7,0x31e7,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x4229,0x39e8,0x4a6a,0x4248,0x31c6,0x39e8,0x4229,0x31c7,0x39e7,0x4208,0x4208,0x4208,0x31c7,0x4228,0x4208,0x39e8,0x4228,0x3a08,0x4249,0x4a8a,0x4a69,0x4228,0x39e8,0x3a08,0x4249,0x39e7,0x4269,0x4249,0x4228,0x4a69,0x4a49,0x4229,0x3a28,0x4a69,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x52aa,0x4a69,0x4a49,0x52aa,0x4a8a,0x4a8a,0x52cb,0x3a28,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4aaa,0x4a6a,0x4a8a,0x4a69,0x52aa,0x52eb,0x4a8a,0x4249,0x4249,0x4a8a,0x4a69,0x4208,0x4a8a,0x4249,0x426a,0x4a8a,0x4a69,0x4208,0x4229,0x52aa,0x4228,0x4a69,0x4a49,0x4a8a,0x4249,0x4aaa,0x52aa,0x4a6a,0x4a49,0x4a69,0x4249,0x4a8a,0x52cb,0x18c3,0x10a2,0x18c3,0x18c3,0x2965,0x31a6,0x3186,0x2924,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x3165,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39a5,0x41e5,0x3185,0x2965,0x2965,0x2965,0x2965,0x3186,0x1061,0x0841,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2945,0x2965,0x3166,0x3185,0x41e5,0x41e5,0x39c5,0x3185,0x2965,0x2965,0x2965,0x2965,0x2124,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4205,0x41e5,0x39a5,0x2945,0x2945,0x2945,0x2965,0x3186,0x20e3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x18a3,0x18c3,0x18c3,0x18e3,0x18e3,0x4228,0x4248,0x4249,0x4a49,0x528a,0x4249,0x3a08,0x4a8a,0x4249,0x4a49,0x4228,0x4a49,0x3a08,0x4228,0x4248,0x4249,0x4249,0x3a28,0x4229,0x4228,0x3a07,0x4228,0x4a69,0x4a49,0x4208,0x39e8,0x4a49,0x4228,0x4229,0x4249,0x3a28,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4229,0x4208,0x4249,0x4249,0x4228,0x39e7,0x4a49,0x4208,0x4229,0x4a69,0x3a28,0x4a8a,0x4a49,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x39e7,0x3a08,0x4249,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4249,0x4228,0x4248,0x4248,0x39e7,0x4209,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x3a08,0x4228,0x31c7,0x4249,0x3a08,0x31c7,0x31a6,0x39e7,0x31e7,0x3207,0x31e7,0x3a08,0x4228,0x39c7,0x39e7,0x4249,0x31a6,0x39e7,0x4228,0x39c7,0x3a28,0x39e8,0x41e8,0x3a08,0x3a08,0x39e8,0x3a08,0x3a08,0x4228,0x4208,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6, +0x31c7,0x3a08,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31c7,0x39e7,0x39e7,0x4248,0x4248,0x39e7,0x31c7,0x39e7,0x31c7,0x39e7,0x3a08,0x31c7,0x39e7,0x4249,0x31c7,0x3a08,0x4a49,0x4208,0x4208,0x4228,0x4249,0x4229,0x3a09,0x3a07,0x4228,0x3a08,0x31c8,0x31c8,0x3a08,0x4229,0x39e8,0x4208,0x4208,0x39c7,0x4249,0x4228,0x4249,0x4249,0x31c7,0x39e7,0x39e7,0x3a08,0x4228,0x39e8,0x39c7,0x39c7,0x4a69,0x3a08,0x3a08,0x4228,0x4228,0x4249,0x4249,0x4a69,0x4229,0x4249,0x4a8a,0x4249,0x4289,0x4249,0x4229,0x4a6a,0x4a6a,0x4249,0x4228,0x4a8a,0x52cb,0x52aa,0x52ab,0x4a6a,0x52cb,0x4a69,0x4a8a,0x52eb,0x4a89,0x52aa,0x52cb,0x4a6a,0x3a08,0x52aa,0x5aeb,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4249,0x4249,0x4209,0x4a49,0x528a,0x528a,0x3a08,0x4249,0x528a,0x528a,0x4228,0x4a69,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x5b0c,0x52eb,0x4229,0x5acb,0x52aa,0x18c3,0x10a2,0x18c3,0x18c3,0x2945,0x3186,0x2966,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x62e5,0x7b65,0x39c4,0x2965,0x2965,0x2965,0x2965,0x3165,0x0861,0x0020,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3166,0x4205,0x7345,0x6b04,0x6b05,0x41c4,0x2965,0x2965,0x2965,0x3165,0x2944,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2965,0x3166,0x2965,0x2965,0x31a5,0x62c5,0x7b45,0x7b45,0x62c4,0x3165,0x2965,0x2965,0x3165,0x3166,0x18c3,0x0020,0x0841,0x1082,0x1082,0x10a2,0x18a3,0x18e3,0x20e4,0x10a2,0x18c3,0x18c3,0x20e3,0x18e3,0x4208,0x4a49,0x3a08,0x4249,0x4249,0x4249,0x4a6a,0x52aa,0x4269,0x4207,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4229,0x4249,0x4249,0x3a07,0x3a28,0x3a08,0x3a07,0x4248,0x4a49,0x39c7,0x4228,0x4a69,0x3a08,0x3a08,0x4a69,0x4249,0x4228,0x4a49,0x4a6a,0x3a08,0x31c7,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4a69,0x4228,0x4a49,0x4229,0x4a6a,0x3a08,0x4249,0x4a69,0x4229,0x4249,0x3a08,0x39c7,0x4208,0x4a8a,0x3a08,0x39e7,0x3a07,0x4249,0x3a08,0x4a89,0x4208,0x3a07,0x4228,0x4208,0x4a69,0x39e7,0x4249,0x3a08,0x39e7,0x31c7,0x29a6,0x3a08,0x39e7,0x39e8,0x4208,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3186,0x39e8,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x39c7,0x39e7,0x4208,0x39c7,0x39e7,0x4248,0x4249,0x3a08,0x3a08,0x39c7,0x4228,0x4229,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x4208,0x4208,0x31a7,0x39e7,0x31c6,0x31a6,0x2986,0x29a7, +0x2986,0x2986,0x31a7,0x31a7,0x39c7,0x39e7,0x31a6,0x31a7,0x31c7,0x4a69,0x3a07,0x39e7,0x39c7,0x31a7,0x4208,0x39c7,0x31c7,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x4269,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x4249,0x4a49,0x39c7,0x39c8,0x3a09,0x4249,0x3a28,0x4228,0x4208,0x4208,0x4a6a,0x3a08,0x39e8,0x4249,0x31a7,0x31c7,0x4249,0x4208,0x3a08,0x39e7,0x4208,0x4208,0x4249,0x4249,0x4a8a,0x4248,0x4248,0x4229,0x4a6a,0x4a6a,0x3a08,0x4249,0x4269,0x3a28,0x4a69,0x4aaa,0x3a28,0x4249,0x528a,0x52cb,0x4249,0x4a69,0x52aa,0x4a69,0x528a,0x4a69,0x52cb,0x4a8a,0x52ab,0x5b0c,0x5b0b,0x52aa,0x5acb,0x4a6a,0x4a8a,0x52ab,0x4229,0x4229,0x52ab,0x5aeb,0x4a69,0x4a69,0x4a69,0x52aa,0x4a69,0x4249,0x4229,0x3a08,0x4a49,0x4a6a,0x4a6a,0x4a6a,0x3a08,0x4208,0x4a8a,0x4a4a,0x39e8,0x4249,0x4a8a,0x4a6a,0x5acb,0x528b,0x424a,0x52aa,0x18c3,0x1082,0x18c3,0x10a2,0x2124,0x2966,0x2945,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x5245,0x8bc4,0x9c24,0x41e4,0x2965,0x2965,0x2945,0x2965,0x3186,0x1061,0x0020,0x1082,0x1082,0x1082,0x18a3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x5285,0x93e4,0x6ae4,0x62c5,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3166,0x3166,0x2965,0x2965,0x4205,0x9405,0x7b24,0x7b45,0x7b45,0x3985,0x2945,0x2945,0x2965,0x3165,0x18c3,0x0021,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x4229,0x4228,0x52cb,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a49,0x3a08,0x4228,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4248,0x4249,0x39e8,0x4249,0x4289,0x3a28,0x3a28,0x4249,0x4248,0x4208,0x4228,0x4a69,0x4229,0x39e8,0x4a6a,0x4249,0x4228,0x4248,0x4a69,0x4a8a,0x4a69,0x4a69,0x4249,0x39e8,0x39e8,0x39c7,0x41e8,0x4a49,0x4208,0x39e8,0x3a08,0x3a08,0x4aaa,0x4a8a,0x4229,0x39c8,0x3a08,0x4249,0x5aeb,0x3a07,0x3a28,0x3a28,0x4249,0x4269,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x3a28,0x39e8,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x39c7,0x39c7,0x39e7,0x4229,0x39e7,0x2986,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x4208,0x39e7,0x3a08,0x39e7,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x31c7,0x4249,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x31a6,0x3a08,0x31a6,0x31e7,0x2986,0x29a6, +0x2986,0x2986,0x2966,0x31c7,0x3186,0x39e7,0x39e8,0x3a28,0x31c7,0x3a08,0x31c6,0x39e7,0x3186,0x3186,0x39e8,0x4228,0x31c7,0x39e7,0x3a08,0x4229,0x3a08,0x3a08,0x31c7,0x39e7,0x39e7,0x3a08,0x39e8,0x4249,0x4229,0x4229,0x4209,0x39e8,0x39e7,0x4208,0x4229,0x31c7,0x4228,0x4249,0x3a07,0x3a08,0x3a08,0x4229,0x4208,0x4228,0x4228,0x4249,0x4a69,0x3a08,0x4228,0x4249,0x4a69,0x4229,0x4228,0x4248,0x4249,0x4248,0x3a28,0x3a08,0x4249,0x4a8a,0x52eb,0x4a8a,0x3a49,0x4229,0x4229,0x4248,0x4269,0x4249,0x4a6a,0x528a,0x4a69,0x52ab,0x4a8a,0x52cb,0x528a,0x4a69,0x4a89,0x52aa,0x4249,0x3a08,0x5acb,0x528a,0x4229,0x4249,0x528a,0x52aa,0x52aa,0x5aca,0x4a8a,0x4a8a,0x4a49,0x4229,0x4249,0x52ca,0x4a8a,0x4249,0x3a08,0x4a49,0x4a8a,0x52ab,0x528a,0x4228,0x4a6a,0x4228,0x4248,0x52aa,0x4a69,0x4a8a,0x4aaa,0x4aaa,0x4229,0x528a,0x4a6a,0x4a6a,0x632c,0x18c3,0x1082,0x18a2,0x10a2,0x2124,0x2945,0x2945,0x2104,0x18c3,0x18e3,0x18a2,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x39a5,0x7b45,0x7304,0x9405,0x41e4,0x2945,0x2965,0x2945,0x2945,0x3186,0x1082,0x0020,0x1082,0x1082,0x1082,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62e5,0x93e4,0x6ae4,0x62a4,0x3985,0x2965,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c2,0x0861,0x0841,0x2104,0x3166,0x3166,0x3165,0x2965,0x5aa5,0xa465,0x7b24,0x7b65,0x6ae5,0x3165,0x2945,0x2965,0x2965,0x3165,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x10a2,0x18a3,0x18e3,0x2945,0x4208,0x4a69,0x528a,0x52ab,0x4229,0x4a69,0x4228,0x4228,0x4248,0x52aa,0x4249,0x4228,0x4a8a,0x4249,0x52aa,0x4228,0x4248,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x3a48,0x4248,0x3a08,0x4208,0x4228,0x4208,0x39e7,0x4228,0x4a69,0x4a49,0x4228,0x4249,0x31c7,0x3a07,0x4a69,0x31c7,0x4a69,0x4208,0x3a08,0x4208,0x41e8,0x4208,0x4a49,0x4249,0x4a69,0x4208,0x4228,0x4a49,0x39e7,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4a69,0x4248,0x4aaa,0x3a28,0x4228,0x4229,0x3a08,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x31e7,0x39e7,0x39c7,0x31a7,0x39e8,0x31e8,0x39e8,0x39e7,0x31a6,0x31c7,0x39e8,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c6,0x4228,0x31c7,0x31c7,0x31c7,0x39e7,0x4a8a,0x4208,0x39c7,0x39e8,0x3a08,0x3a08,0x31a7,0x39e7,0x3186,0x31a7,0x4228,0x39e8,0x3a08,0x3186,0x31c7,0x31c7, +0x31c7,0x2986,0x39e7,0x39e7,0x31c6,0x4a49,0x31a6,0x39e7,0x3a08,0x31a6,0x39e7,0x3a08,0x4249,0x31e8,0x31c7,0x31a7,0x31c7,0x3a08,0x39e8,0x39e8,0x29a7,0x39e8,0x39e7,0x39c7,0x4228,0x39e7,0x4a89,0x4249,0x39e7,0x4228,0x4208,0x39e8,0x39e8,0x4249,0x4228,0x31c7,0x39c7,0x39c7,0x39e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x4a69,0x4a69,0x3a08,0x4228,0x4229,0x3a09,0x39e8,0x4249,0x4228,0x4208,0x4208,0x4229,0x4228,0x4249,0x4a8a,0x4249,0x4269,0x4aaa,0x4249,0x4249,0x4269,0x4249,0x4a89,0x4a69,0x4229,0x4249,0x426a,0x3a29,0x426a,0x4249,0x4a69,0x528a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4a6a,0x4a49,0x4a49,0x4a69,0x4a8a,0x52aa,0x4a6a,0x4269,0x4a8a,0x428a,0x4aaa,0x4a69,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x52cb,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x528a,0x5acb,0x5acb,0x4a6a,0x4228,0x4a8a,0x4a8a,0x4a8b,0x632c,0x18c3,0x1082,0x18a2,0x18a2,0x2124,0x2945,0x2125,0x2104,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2965,0x2965,0x2945,0x2965,0x62c5,0x8364,0x5a64,0x9425,0x4a03,0x2945,0x2965,0x2945,0x2945,0x3186,0x1061,0x0020,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62c6,0x8365,0x6ae5,0x83a5,0x4a24,0x2945,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x3165,0x3165,0x2965,0x2965,0x62e5,0xa465,0x7324,0x83a5,0x8385,0x3184,0x2945,0x2945,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x1082,0x10a2,0x18a3,0x18e3,0x2125,0x4a49,0x4a69,0x5269,0x528a,0x4a8a,0x4a8a,0x4249,0x4228,0x4248,0x4228,0x4228,0x3a08,0x4249,0x4a8a,0x4269,0x4249,0x3a07,0x4228,0x4a49,0x4228,0x4208,0x39c7,0x39e7,0x4a29,0x4a49,0x4208,0x4228,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x39e7,0x3a07,0x4228,0x4a49,0x4249,0x4248,0x39e7,0x3a28,0x4228,0x4248,0x4228,0x4a49,0x528a,0x4208,0x39c7,0x4a49,0x4248,0x3a28,0x3a28,0x39e7,0x4228,0x4a89,0x3a08,0x4249,0x3a07,0x4228,0x4229,0x528a,0x4249,0x4248,0x4a69,0x31e7,0x4a69,0x4249,0x4208,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x31c7,0x39e7,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x31e7,0x31c7,0x39e8,0x31c7,0x3a08,0x3a08,0x4208,0x31c7,0x4208,0x3a07,0x39e7,0x31c7,0x3a08,0x3a08,0x4a69,0x4228,0x39c7,0x39c7,0x31c7,0x29a6,0x4208,0x4a69,0x31c7,0x4208,0x31c7,0x3a08,0x31c7,0x31c7,0x31a7,0x31c7,0x39e8, +0x2966,0x31a7,0x39e8,0x31c7,0x31a6,0x31a6,0x31c7,0x39e8,0x39e8,0x29a6,0x3186,0x39e7,0x39e8,0x31c7,0x2986,0x31c7,0x4269,0x4249,0x39e8,0x39e8,0x3a08,0x31c7,0x31a6,0x39e7,0x3a08,0x39e7,0x4248,0x39e7,0x4208,0x4248,0x39e7,0x39e7,0x39e7,0x3a28,0x39e7,0x39e8,0x3a28,0x31c7,0x31c7,0x4228,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4208,0x4a8a,0x3a08,0x3a29,0x4249,0x31e8,0x3a08,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x4229,0x3a28,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x39e8,0x4229,0x4a8a,0x4a69,0x4228,0x4249,0x4a8a,0x4a8a,0x4249,0x4a49,0x4228,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4a4a,0x4a49,0x4a69,0x528a,0x528a,0x4a49,0x4229,0x4a8a,0x4a69,0x4a69,0x528a,0x4a8a,0x52eb,0x4a8a,0x4228,0x4a6a,0x5aeb,0x4a49,0x52aa,0x5acb,0x52aa,0x4249,0x3a28,0x426a,0x4a6a,0x4a6a,0x52aa,0x4a4a,0x528a,0x4a69,0x4a8a,0x4a6a,0x52ab,0x52cb,0x5b0c,0x18c3,0x1082,0x10a2,0x18a2,0x2104,0x2945,0x2125,0x2104,0x18e3,0x18c2,0x10a2,0x10a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2965,0x2965,0x2945,0x3985,0x8385,0x7b44,0x6ae4,0x9c44,0x5a84,0x2945,0x2965,0x2945,0x2965,0x3186,0x0861,0x0041,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x5a65,0x4a05,0x9405,0x6ac4,0x2945,0x2945,0x2945,0x3165,0x3185,0x1081,0x0841,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3165,0x2965,0x2965,0x2945,0x62c5,0x9c45,0x5244,0x6ae5,0x9c25,0x39a4,0x2965,0x2965,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2965,0x4228,0x4228,0x52aa,0x4a6a,0x52cb,0x4a8a,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4228,0x4a49,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4a89,0x4a69,0x4208,0x4a69,0x4228,0x31c7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x4a69,0x4248,0x3a07,0x4208,0x4228,0x4208,0x4228,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x3207,0x3208,0x3a28,0x4229,0x39e8,0x4208,0x4229,0x4a49,0x39e8,0x3a08,0x3a08,0x39c7,0x39e7,0x4229,0x4228,0x39e7,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x3a08,0x4228,0x31c7,0x3a08,0x41e8,0x4229,0x4208,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x31a7,0x39e7,0x31c7,0x4228,0x39e7,0x39c7,0x31a6,0x39e7,0x31e7,0x4249,0x4a6a,0x3a08,0x4249,0x29a6,0x31c7,0x31c7,0x39c7,0x4208,0x39e8,0x4208,0x39e7,0x39e7,0x31a7,0x2966,0x31a7,0x2986,0x4a69, +0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a7,0x31e7,0x31c7,0x31a7,0x31c7,0x39e7,0x31c7,0x31a7,0x2986,0x31e7,0x31e8,0x31c8,0x31c7,0x4208,0x4229,0x29a6,0x29a6,0x31e7,0x3a08,0x3a08,0x39e8,0x3a09,0x4a6a,0x4229,0x31e7,0x39e7,0x39e8,0x3a08,0x39e8,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x4228,0x4228,0x3a28,0x3a08,0x3a08,0x4229,0x31c7,0x39e8,0x39e7,0x39e7,0x4a69,0x4249,0x39e8,0x4208,0x4208,0x4208,0x3a28,0x4229,0x52aa,0x5acb,0x4a6a,0x4228,0x3a08,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x4269,0x4249,0x4a8a,0x52aa,0x4249,0x4a49,0x4a6a,0x528a,0x4a69,0x4229,0x4a6a,0x4229,0x52aa,0x528a,0x4249,0x4a69,0x4a49,0x5269,0x528a,0x62ec,0x528a,0x52aa,0x52ab,0x52ab,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4a69,0x4229,0x4229,0x52ab,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x52aa,0x4a89,0x4a8a,0x4a8a,0x52ab,0x52cb,0x4a69,0x52ab,0x52eb,0x18c2,0x1082,0x10a2,0x10a2,0x18e3,0x2945,0x2125,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x18c2,0x0841,0x0841,0x1082,0x2945,0x2965,0x3165,0x2965,0x3185,0x62a5,0x5a85,0x62c5,0x9c24,0x5a64,0x2945,0x2945,0x2965,0x2965,0x3186,0x0861,0x0841,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3185,0x7326,0x62a4,0x5244,0x8bc5,0x5a84,0x3165,0x2965,0x2945,0x2965,0x3165,0x1081,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0861,0x2124,0x3165,0x2965,0x2965,0x2965,0x5245,0x93e5,0x5a84,0x6b25,0x8ba5,0x3984,0x2965,0x2965,0x3165,0x3186,0x18a3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2965,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a8a,0x4a69,0x4a8a,0x4249,0x3a08,0x4228,0x3a08,0x4228,0x4208,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x4229,0x4a49,0x4208,0x39e8,0x4208,0x4228,0x3a28,0x4269,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4a69,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x4aaa,0x4249,0x4249,0x3a08,0x31e7,0x4209,0x4a6a,0x39c7,0x4a69,0x39e7,0x39e7,0x4a69,0x39e7,0x39e8,0x39e8,0x4228,0x4a49,0x4208,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x39e7,0x39c7,0x31a7,0x39c7,0x3a08,0x3a07,0x3a08,0x4228,0x31a7,0x39e8,0x4a69,0x31c7,0x4249,0x4229,0x39e7,0x3a08,0x39e7,0x3a08,0x31c7,0x4249,0x39e7,0x4228,0x31c7,0x31c7,0x31a7,0x39c7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x39e8,0x31a6,0x39e7, +0x31c6,0x39e7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x29a6,0x31a7,0x39c7,0x31a6,0x31c7,0x3a08,0x3a28,0x31c7,0x39e8,0x31e8,0x31a7,0x4229,0x4249,0x39e7,0x31e7,0x31a7,0x31c7,0x3a08,0x31e7,0x31c7,0x31e7,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x3a08,0x4229,0x4228,0x4a8a,0x39e7,0x3a07,0x4248,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x39e7,0x4248,0x4a69,0x3a08,0x4249,0x4229,0x4208,0x4248,0x4249,0x3a28,0x4269,0x4208,0x4a49,0x4229,0x4209,0x4229,0x4229,0x4a6a,0x52ab,0x4aab,0x3a29,0x3a28,0x4aaa,0x4269,0x4269,0x4228,0x52ab,0x52cb,0x4aaa,0x3a08,0x4269,0x4a69,0x4228,0x4a69,0x52eb,0x52ab,0x4a8a,0x52ab,0x52aa,0x52aa,0x52ab,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x528a,0x4a49,0x4a49,0x4a69,0x52aa,0x4249,0x52ca,0x52aa,0x4a69,0x5aeb,0x6b6d,0x4a89,0x4229,0x4a8a,0x52ca,0x4a49,0x632d,0x6b6d,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2125,0x2104,0x2104,0x18e3,0x18a2,0x10a2,0x10a2,0x18c2,0x0861,0x0861,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x39a5,0x3985,0x41e5,0x7b45,0x41c4,0x2965,0x2965,0x2965,0x3186,0x3165,0x1082,0x0861,0x1082,0x1082,0x1062,0x18c3,0x10a2,0x0861,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x7325,0x7304,0x7305,0x41c4,0x3165,0x2965,0x2965,0x2965,0x2924,0x1061,0x1061,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0861,0x2104,0x2965,0x2965,0x2965,0x2965,0x39a5,0x6ae5,0x7325,0x7325,0x6285,0x3165,0x2965,0x2965,0x3165,0x3165,0x10a2,0x0841,0x0861,0x10a2,0x1082,0x1082,0x18a2,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x52ab,0x4a49,0x4a49,0x4249,0x4a69,0x4a49,0x4228,0x41e7,0x4208,0x4a49,0x4a69,0x4a69,0x4269,0x3a28,0x4a8a,0x4249,0x3a08,0x4a6a,0x4249,0x4249,0x4a89,0x4269,0x4248,0x4228,0x4249,0x39e7,0x39e7,0x4229,0x4229,0x39e8,0x39e8,0x4229,0x4a6a,0x4249,0x4249,0x4a8a,0x4249,0x52aa,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x4a69,0x4249,0x4248,0x4a69,0x4208,0x39e8,0x31e7,0x4228,0x39e7,0x3a08,0x4a69,0x4a69,0x4228,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x4248,0x4228,0x4248,0x4228,0x4208,0x39e8,0x4229,0x4228,0x4a49,0x4249,0x31c7,0x39e8,0x39c8,0x4229,0x3a08,0x31c6,0x31c7,0x31a6,0x4a48,0x39e7,0x3a07,0x4228,0x31c7,0x31c7,0x31c7,0x3a08,0x4249,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x3a08,0x31e7,0x3a08,0x4208,0x4229,0x4208,0x31a7,0x39c7,0x39e8,0x39e7,0x4248,0x39c7,0x39c7,0x31c7,0x31e7,0x31c6,0x39e7,0x39c6,0x31a6, +0x31a7,0x31a6,0x2965,0x2986,0x31c7,0x31c7,0x31a7,0x39c8,0x31a7,0x39c8,0x4a69,0x39e8,0x3a08,0x3a28,0x31a7,0x3a08,0x39c7,0x39e8,0x3a08,0x4228,0x3a07,0x3a28,0x3a28,0x3a08,0x31e7,0x39e8,0x31c7,0x3a08,0x3a08,0x31e7,0x3a28,0x31e7,0x39e8,0x39c7,0x39e7,0x31c7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x4269,0x4229,0x39e8,0x4208,0x39e7,0x3a08,0x4249,0x3a07,0x39e7,0x4208,0x4209,0x4209,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x4228,0x4a69,0x4229,0x3a09,0x424a,0x4229,0x4a6a,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x528a,0x528a,0x528a,0x526a,0x4a8a,0x4a8a,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4a49,0x4a8a,0x4a8a,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4a69,0x4a89,0x4269,0x4a6a,0x4229,0x4a69,0x4a6a,0x4a8a,0x4a49,0x4a69,0x52aa,0x52cb,0x52ab,0x5acc,0x632c,0x52aa,0x4a6a,0x52ab,0x5aeb,0x528a,0x5aec,0x630c,0x18c2,0x1082,0x1082,0x10a2,0x20e4,0x2125,0x2104,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x2103,0x20e3,0x2945,0x2965,0x2965,0x2945,0x2965,0x3165,0x2945,0x3185,0x4a05,0x3185,0x3165,0x3165,0x3185,0x3186,0x2944,0x18e3,0x10a2,0x10a2,0x1062,0x1061,0x18c3,0x20e4,0x20e3,0x18e3,0x2945,0x2965,0x2965,0x2965,0x2945,0x39a5,0x4a26,0x5245,0x41e5,0x3165,0x3165,0x3165,0x3166,0x3165,0x2104,0x18c2,0x18c2,0x18a3,0x1082,0x1082,0x18e3,0x2104,0x20e3,0x2103,0x2945,0x2965,0x2945,0x2945,0x3165,0x39c5,0x4a25,0x4a05,0x3985,0x2965,0x2945,0x2945,0x3165,0x3165,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2925,0x4a6a,0x4a6a,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4a69,0x4228,0x4a6a,0x4a69,0x3a28,0x4a69,0x528a,0x4a49,0x3a28,0x4249,0x4249,0x4228,0x3a08,0x3a07,0x39e7,0x3a08,0x4249,0x3a28,0x31e7,0x39e8,0x4228,0x3a08,0x4a6a,0x4249,0x4249,0x4249,0x31c6,0x4249,0x4249,0x4a69,0x52ca,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4208,0x3a08,0x3a28,0x3a08,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x4229,0x4208,0x4228,0x4208,0x4228,0x39e7,0x4228,0x39e7,0x31c7,0x3a07,0x39e7,0x31a7,0x31c7,0x31c7,0x4208,0x4228,0x31a6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x39e8,0x4229,0x39c8,0x39c8,0x4208,0x4208,0x3a08,0x3a08,0x39e7,0x39e7,0x2145,0x2986,0x31c7,0x4249, +0x31a7,0x31a6,0x31a6,0x29a6,0x31c6,0x31c7,0x2986,0x31a7,0x39c7,0x4208,0x4a69,0x39c7,0x39e7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x4209,0x4229,0x3a08,0x4228,0x4228,0x4269,0x4249,0x39e8,0x31c8,0x31c7,0x39e8,0x39e8,0x4229,0x4249,0x4249,0x4a49,0x4a49,0x4228,0x31c7,0x4248,0x4228,0x4228,0x4a49,0x3a08,0x3a08,0x4a89,0x3a08,0x4208,0x4a49,0x39e7,0x4228,0x4249,0x3a28,0x4228,0x39e8,0x39e8,0x39e8,0x39e8,0x4249,0x3a28,0x3a08,0x4228,0x528a,0x4a69,0x426a,0x4a6a,0x4229,0x4228,0x4249,0x4a49,0x528a,0x4229,0x5acb,0x4229,0x4a49,0x4a69,0x4229,0x528a,0x52aa,0x4249,0x52aa,0x52aa,0x4a49,0x4a6a,0x4229,0x4a69,0x5aec,0x4249,0x4209,0x4249,0x4229,0x4a8b,0x52ec,0x4aaa,0x4a8a,0x4a69,0x4a89,0x4248,0x52aa,0x4269,0x4a49,0x5aeb,0x4a8a,0x4269,0x52cb,0x5aec,0x52cb,0x4aab,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x528a,0x5aeb,0x6b6d,0x52eb,0x5b0b,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18e4,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x18e3,0x2925,0x3186,0x3185,0x3165,0x2965,0x2945,0x2945,0x3165,0x3165,0x3165,0x3165,0x3165,0x3185,0x3165,0x3165,0x31a6,0x3186,0x3165,0x3165,0x2124,0x10a2,0x1062,0x1062,0x18c3,0x2965,0x31a6,0x2964,0x2944,0x2965,0x2965,0x2945,0x2945,0x2945,0x3165,0x3165,0x3145,0x2945,0x2945,0x3166,0x3186,0x3186,0x2965,0x2944,0x2924,0x18a3,0x1082,0x1082,0x2104,0x3186,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2945,0x2945,0x3165,0x3165,0x2924,0x2924,0x20e3,0x18c2,0x1082,0x1082,0x1082,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2925,0x4a49,0x4a69,0x4249,0x4269,0x3a28,0x4208,0x4a69,0x4228,0x3a28,0x4a69,0x528a,0x4a69,0x528a,0x4229,0x4a6a,0x4a69,0x4249,0x3a28,0x4a69,0x528a,0x4a49,0x4208,0x4249,0x4a69,0x4a49,0x4228,0x4208,0x39e7,0x4248,0x4269,0x4269,0x4a49,0x4249,0x39e7,0x4269,0x4a49,0x4249,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4a89,0x4a89,0x4228,0x4228,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4208,0x4a49,0x4a6a,0x4228,0x31c7,0x3207,0x3a07,0x4228,0x4269,0x4a69,0x31c7,0x4249,0x3a08,0x39e8,0x39c7,0x3a08,0x4a49,0x39e7,0x3a07,0x3a28,0x4249,0x4228,0x3a08,0x39c7,0x31c7,0x39e8,0x39e8,0x39e7,0x4a49,0x39c7,0x4229,0x4249,0x31a7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x31a7,0x4249,0x39e7,0x31c6,0x31e7,0x39e7,0x39e7,0x39e7,0x31a6,0x4228,0x39e8,0x39e8,0x3a08,0x4208,0x39e7,0x31c7,0x3a08,0x31a6,0x2145,0x2986,0x29a6,0x31a6, +0x31a7,0x39e7,0x39c7,0x31a6,0x39c7,0x4228,0x31a6,0x39e7,0x3a08,0x4208,0x39a7,0x31a7,0x3a08,0x39e7,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x3a08,0x4228,0x4228,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4228,0x39c7,0x39e7,0x39e7,0x4a8a,0x4249,0x4208,0x4209,0x4a29,0x4208,0x4aaa,0x4289,0x4248,0x52aa,0x4228,0x39e8,0x39e8,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x3a29,0x3a08,0x4229,0x4208,0x4228,0x4207,0x4208,0x52aa,0x4229,0x4a49,0x4a49,0x4a89,0x4249,0x4229,0x4249,0x4a8a,0x4a69,0x3a08,0x3a28,0x4269,0x4228,0x528a,0x4229,0x52aa,0x4269,0x4269,0x4aaa,0x42aa,0x3a28,0x4249,0x5acb,0x3a08,0x4249,0x4a69,0x52aa,0x52aa,0x52cb,0x4a8a,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a6a,0x4249,0x4a69,0x4aaa,0x4a89,0x4269,0x52aa,0x6b4d,0x4a8a,0x4a8a,0x6b4d,0x630d,0x528b,0x4a8a,0x5b0c,0x4a8a,0x52ab,0x4a69,0x5aec,0x52cb,0x5b0c,0x632c,0x634c,0x18c2,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x20e4,0x18c3,0x10a2,0x1082,0x1082,0x2104,0x2945,0x3185,0x2965,0x2924,0x2104,0x18e3,0x20e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x3165,0x2944,0x18a2,0x1062,0x1061,0x18e3,0x3166,0x3186,0x3165,0x2945,0x2924,0x2924,0x2104,0x2104,0x2104,0x2125,0x2124,0x2924,0x2104,0x2104,0x2924,0x2944,0x2945,0x2965,0x2945,0x2945,0x18c3,0x1082,0x1082,0x2104,0x31a6,0x39a6,0x3165,0x2924,0x2924,0x2924,0x2945,0x2124,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2924,0x2945,0x2945,0x2124,0x2124,0x2945,0x2924,0x18c3,0x1082,0x1082,0x1082,0x2104,0x18a3,0x1082,0x10a2,0x18a3,0x18e3,0x2124,0x4228,0x4a49,0x526a,0x52cb,0x3a29,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x4228,0x52aa,0x4a8a,0x4a69,0x4a6a,0x4a69,0x4a69,0x4a6a,0x52ca,0x52aa,0x52cb,0x4a89,0x4a69,0x4228,0x4208,0x4a69,0x4a49,0x4208,0x4208,0x4a69,0x3a28,0x3a28,0x4228,0x4249,0x3a28,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4228,0x52aa,0x4208,0x4a49,0x4a89,0x4228,0x4249,0x4a69,0x4249,0x4249,0x3a28,0x4229,0x4a6a,0x4208,0x3a08,0x3a07,0x39e8,0x3a08,0x3a28,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e7,0x3a07,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x3a08,0x31c7,0x31c7,0x39e7,0x39c7,0x4208,0x31c7,0x39e7,0x39e7,0x31c7,0x39c7,0x3a08,0x3a08,0x29a6,0x31c7,0x3a08,0x39c7,0x4228,0x31a7,0x3a08,0x4229,0x3a08,0x4208,0x31a6,0x31c6,0x39e7,0x31a6,0x2966,0x31a6,0x31c7,0x2965, +0x39e7,0x39e7,0x31c6,0x39c6,0x31a6,0x3186,0x39c7,0x4208,0x39a7,0x3187,0x31c7,0x31a7,0x31c7,0x31a7,0x39e8,0x39c8,0x39e7,0x39e7,0x3a08,0x4229,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x39e8,0x4a6a,0x4a8a,0x4229,0x39e7,0x4228,0x4228,0x3a08,0x39c7,0x4208,0x4229,0x4229,0x4249,0x4228,0x39c7,0x39e7,0x4208,0x39e8,0x4209,0x4229,0x39c8,0x39c7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x4208,0x4249,0x4208,0x4a49,0x52aa,0x4228,0x4249,0x4a6a,0x4a49,0x4a49,0x4249,0x4229,0x3a08,0x4a6a,0x4228,0x4a69,0x4a8a,0x4a69,0x4a69,0x4aaa,0x4269,0x4289,0x4248,0x4a6a,0x528a,0x4229,0x5aeb,0x5289,0x52aa,0x4a69,0x52cb,0x52cb,0x426a,0x424a,0x4aa9,0x52a9,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5aeb,0x4aaa,0x4269,0x52ab,0x5aeb,0x4a6a,0x5aec,0x5acb,0x630c,0x5aeb,0x52aa,0x738e,0x4a6a,0x5aeb,0x52ab,0x6b4d,0x5acb,0x52cb,0x528a,0x5acb,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x18e4,0x18c3,0x10a2,0x1082,0x1082,0x20e4,0x2104,0x20e3,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x18a3,0x18a3,0x18c3,0x18e3,0x20e3,0x18c3,0x1062,0x1062,0x18e3,0x2104,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x18c3,0x20e3,0x18c3,0x1082,0x1082,0x18e3,0x2924,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2104,0x18c3,0x1082,0x1082,0x1082,0x20e3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4249,0x52ab,0x4a49,0x4a49,0x4a6a,0x4a8a,0x3a08,0x52cb,0x4aaa,0x3a08,0x52cb,0x52cb,0x4269,0x4a6a,0x4229,0x528a,0x52cb,0x528a,0x52aa,0x4a49,0x39e7,0x4a69,0x4a69,0x4228,0x52cb,0x52aa,0x4208,0x4228,0x4249,0x4228,0x3a28,0x3a07,0x4248,0x4a49,0x3a28,0x4a89,0x4a89,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4229,0x4208,0x4228,0x528a,0x4a69,0x3208,0x3a28,0x3a08,0x4228,0x39e7,0x3a07,0x3a07,0x39e8,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4a49,0x39e7,0x3a07,0x4a49,0x4a69,0x3a08,0x4269,0x4228,0x3a28,0x4228,0x39c7,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x39e7,0x31a6,0x39e7,0x31c7,0x39e8,0x39e7,0x31a6,0x39e7,0x39c7,0x39e7,0x39e7,0x39c7,0x31c6,0x39c7,0x39e7,0x4249,0x4249,0x3187,0x39e8,0x31a7,0x31e7,0x3a08,0x39e7,0x4249,0x4228,0x4249,0x31e7,0x31e7,0x3a08,0x31c6,0x39e7,0x31a6,0x2145,0x31c7,0x31c7, +0x31a7,0x2986,0x31c7,0x31c7,0x31a6,0x2986,0x3186,0x31a7,0x3187,0x31a6,0x31c7,0x2986,0x2966,0x39c8,0x3a08,0x4208,0x39e7,0x4228,0x4249,0x31c7,0x31e7,0x31e7,0x31c7,0x39e7,0x4208,0x4208,0x4229,0x3a08,0x3a08,0x31c7,0x4228,0x31c7,0x39e7,0x39c7,0x3a28,0x3a08,0x39e7,0x4208,0x39e7,0x39e7,0x2986,0x31a7,0x39e8,0x31a7,0x39e8,0x4208,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3a08,0x4229,0x4229,0x4228,0x4a89,0x52ca,0x3a07,0x4228,0x4a69,0x4a6a,0x3a08,0x3a28,0x4229,0x4229,0x4a49,0x39e7,0x4249,0x4249,0x3a08,0x4229,0x4208,0x4229,0x4249,0x4249,0x4228,0x39c8,0x4a6a,0x4a69,0x528a,0x5aca,0x4a89,0x4a8a,0x4a6a,0x4a8a,0x4aab,0x4a8a,0x4a69,0x52aa,0x52ab,0x4aaa,0x5b0b,0x52aa,0x4249,0x4269,0x52aa,0x52aa,0x52aa,0x5aeb,0x4a89,0x528a,0x5acb,0x6b4d,0x52aa,0x526a,0x528a,0x52cb,0x5aeb,0x528a,0x630c,0x528a,0x528b,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e3,0x18e4,0x18c2,0x1082,0x1082,0x1082,0x18a3,0x10a2,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x1062,0x0861,0x10a2,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4228,0x4a8a,0x4229,0x4208,0x4a6a,0x4a6a,0x4a69,0x52aa,0x4a49,0x4249,0x4aaa,0x4269,0x4249,0x528a,0x4229,0x4a49,0x4a49,0x4228,0x39e8,0x4228,0x39e8,0x4a29,0x4a69,0x4208,0x528a,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4269,0x4228,0x4a49,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4208,0x3a08,0x4208,0x4208,0x4a69,0x4a4a,0x3a08,0x3a08,0x4248,0x4a69,0x3a08,0x4249,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4229,0x4a49,0x4228,0x4249,0x4228,0x31c6,0x4228,0x4249,0x4229,0x39e7,0x4228,0x4248,0x3a08,0x39e7,0x4249,0x4208,0x4228,0x31c7,0x39e7,0x4228,0x31a6,0x31c7,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x4a6a,0x5b0c,0x31c7,0x39c7,0x4229,0x3a07,0x4208,0x3a08,0x4228,0x31c7,0x3a07,0x4228,0x4209,0x3187,0x39c7,0x4249,0x31c7,0x31a6,0x31a6,0x39c7, +0x2966,0x2966,0x3a08,0x31a7,0x31a7,0x39e8,0x31a7,0x31a7,0x39c7,0x39c7,0x39e7,0x3a08,0x3a08,0x39e8,0x39e7,0x3a08,0x39e8,0x39c8,0x39e8,0x39e7,0x3a28,0x31c7,0x31c7,0x3a08,0x31a6,0x39c7,0x39c7,0x3a07,0x3a08,0x31c7,0x31e8,0x39c8,0x3186,0x3a08,0x52cb,0x31c7,0x3a07,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x39e8,0x39e7,0x39c7,0x4228,0x4228,0x39e7,0x4229,0x4229,0x39e9,0x39e8,0x31c7,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x4a49,0x4249,0x4249,0x528a,0x4248,0x4a8a,0x4249,0x4248,0x4249,0x4a8a,0x4249,0x4229,0x4249,0x4a49,0x4229,0x4229,0x4a69,0x4249,0x4269,0x4a8a,0x4228,0x4228,0x4a49,0x528a,0x52cb,0x4a69,0x4a8a,0x52ab,0x4aaa,0x52eb,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a6a,0x52ab,0x5acb,0x5aeb,0x3a08,0x4a69,0x5aec,0x4229,0x528a,0x6b4d,0x4a69,0x6b6d,0x52cb,0x634d,0x528b,0x4a6a,0x630c,0x5aeb,0x52aa,0x528a,0x5aeb,0x4a49,0x5aec,0x18c3,0x1082,0x1082,0x10a2,0x18a3,0x18e4,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1061,0x1061,0x1061,0x0861,0x0861,0x1082,0x1061,0x0861,0x1061,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1062,0x1062,0x1082,0x1082,0x1082,0x1062,0x1062,0x1062,0x1061,0x0861,0x1061,0x1062,0x1062,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x4a6a,0x4a6a,0x4229,0x4a69,0x4249,0x4a8a,0x52cb,0x4a8a,0x4249,0x4a69,0x4a8a,0x4249,0x4249,0x4229,0x4a49,0x4208,0x4208,0x4a69,0x4228,0x4a8a,0x4228,0x4a6a,0x52aa,0x4228,0x528a,0x4228,0x4a49,0x4a69,0x39e7,0x4249,0x4229,0x4228,0x4228,0x4228,0x4269,0x4269,0x4a49,0x528a,0x4a69,0x4229,0x4249,0x4248,0x4248,0x4249,0x52aa,0x4229,0x39e8,0x4a49,0x4a29,0x4a49,0x4229,0x4208,0x4248,0x3a08,0x4228,0x4228,0x3a07,0x4249,0x4249,0x39c7,0x4228,0x4a49,0x4249,0x4228,0x4229,0x39e7,0x4a69,0x3a07,0x4208,0x39e8,0x31c7,0x3a08,0x4228,0x31c7,0x39e8,0x4229,0x39e8,0x4208,0x39e7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x31a6,0x39e7,0x4248,0x39e7,0x31c7,0x39e8,0x4249,0x3a07,0x3a08,0x52ab,0x39e7,0x4228,0x31c7,0x31c7,0x3a08,0x4249,0x4229,0x4209,0x3187,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x31c7, +0x2986,0x2986,0x31a6,0x31a6,0x31a7,0x4228,0x39e8,0x39e7,0x31a7,0x39c7,0x39e8,0x39e7,0x3a08,0x29a6,0x31e7,0x4229,0x31a7,0x39e8,0x4a4a,0x39e8,0x4a69,0x39e7,0x39c7,0x4208,0x39c7,0x31a7,0x3a08,0x4a69,0x39e7,0x3a08,0x4229,0x4209,0x2987,0x4229,0x4a8a,0x31e7,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e7,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x424a,0x39e8,0x31e8,0x3a28,0x3a08,0x3a08,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a8a,0x4aaa,0x4a69,0x4249,0x4249,0x4a6a,0x39e7,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4249,0x4269,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52ab,0x4aaa,0x52cb,0x4249,0x4249,0x4a49,0x4a49,0x4a6a,0x52ab,0x4a8a,0x52cb,0x4249,0x4249,0x4269,0x4a8a,0x5aec,0x5acb,0x5acb,0x6b8d,0x52aa,0x4a8a,0x5aed,0x4a8b,0x4a6a,0x5b0c,0x5acb,0x5aec,0x528a,0x52eb,0x5b0c,0x18c2,0x1082,0x1082,0x18a2,0x18a3,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1061,0x1062,0x1082,0x1082,0x1081,0x0861,0x1061,0x1061,0x1082,0x1062,0x1061,0x1061,0x1062,0x1061,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x1062,0x1082,0x1082,0x1062,0x1062,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1062,0x1082,0x10a2,0x10a2,0x2124,0x4a49,0x4a6a,0x4208,0x528a,0x4a8a,0x52aa,0x52aa,0x4249,0x4a69,0x5aeb,0x4269,0x4249,0x4a8a,0x4a29,0x4a6a,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4a69,0x52ab,0x39e8,0x4a49,0x4a69,0x39e7,0x4aaa,0x4a69,0x4a49,0x4a49,0x4248,0x4228,0x4a49,0x4a49,0x4a29,0x39e7,0x3a08,0x39e8,0x39e7,0x4249,0x4a6a,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x4249,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x39e7,0x4229,0x39e7,0x31c7,0x31c7,0x39e8,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x4249,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39c7,0x31a6,0x39c7,0x31a7,0x31c7,0x3a07,0x4228,0x31c7,0x31c7,0x39e7,0x31a7,0x3a08,0x3a08,0x31c7,0x4229,0x39e9,0x4249,0x4229,0x2986,0x39e7,0x4249,0x4228,0x39e7,0x39e7, +0x3186,0x2986,0x31c7,0x3207,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x39c7,0x31c7,0x3a07,0x31c7,0x31e7,0x31e7,0x3a08,0x39e8,0x3a08,0x3a08,0x39c7,0x39c7,0x39a7,0x4208,0x39e7,0x31c6,0x39c7,0x39e8,0x3a07,0x3a08,0x39c7,0x4208,0x4229,0x31a7,0x39c8,0x31c7,0x31e7,0x4228,0x3a28,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x39e7,0x31c7,0x3a08,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x3a08,0x39c7,0x39e7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4a6a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a6a,0x39e8,0x4229,0x4229,0x52ab,0x52ab,0x4a69,0x4a69,0x4269,0x4a8a,0x4a8a,0x52ab,0x4a69,0x4a69,0x52ab,0x4a6a,0x528b,0x4a4a,0x528a,0x528a,0x4229,0x4229,0x52ab,0x5b2c,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x4229,0x4aaa,0x52ab,0x528a,0x5aec,0x5aeb,0x52cb,0x52cb,0x632d,0x4a6a,0x4a8a,0x5aec,0x5b0c,0x5aec,0x4a8a,0x6b8e,0x634d,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x1082,0x1082,0x0861,0x1061,0x1061,0x1062,0x1061,0x1062,0x1062,0x1061,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x1082,0x2104,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x2104,0x528a,0x5acb,0x4249,0x52ca,0x5aeb,0x528a,0x528a,0x528a,0x4a6a,0x52aa,0x4a8a,0x4249,0x4a49,0x4a29,0x39e8,0x4249,0x4a8a,0x52aa,0x4228,0x4229,0x4a6a,0x528a,0x528a,0x4228,0x4249,0x4a69,0x4208,0x4a69,0x4a69,0x4a49,0x4a49,0x4229,0x4a49,0x4208,0x4228,0x4a49,0x4249,0x4229,0x4269,0x5aeb,0x4a8a,0x4249,0x4229,0x39e7,0x4249,0x52cb,0x4248,0x4a8a,0x528a,0x4229,0x4228,0x4a49,0x4208,0x39c7,0x39e8,0x4249,0x4228,0x4229,0x4208,0x3a08,0x39e8,0x29a7,0x31e7,0x3a29,0x31e8,0x4228,0x39e7,0x39e7,0x39e7,0x4249,0x4228,0x4249,0x39e8,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x4209,0x4229,0x4208,0x39e7,0x31a6,0x4228,0x4228,0x39e7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x31a7,0x2966,0x3a08,0x39e8,0x31c7,0x39c7,0x31c7,0x31a6,0x39e8,0x4229,0x39c7,0x39c7,0x4208,0x41e8,0x39e8,0x4249,0x31c7,0x4208,0x39e8,0x39c7,0x39c7,0x31c7, +0x39c7,0x31a6,0x31c7,0x31e7,0x31c6,0x29a6,0x2986,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39c7,0x31c7,0x3a08,0x4a6a,0x39e8,0x3a08,0x4a49,0x39e7,0x39e7,0x39e8,0x39e7,0x4a89,0x4207,0x31a6,0x39e8,0x39c7,0x31a7,0x39e8,0x3a08,0x31a7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x3a07,0x3a07,0x4228,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x39e7,0x41e8,0x39e8,0x39e7,0x39e8,0x3a08,0x39e8,0x4208,0x4228,0x4208,0x4229,0x4229,0x4249,0x4228,0x4249,0x4a69,0x4a6a,0x4a6a,0x4a69,0x4a69,0x3a08,0x4208,0x4229,0x526a,0x526a,0x4a29,0x528a,0x528a,0x4208,0x4a29,0x52ab,0x4a29,0x4a6a,0x4a49,0x4229,0x5acc,0x528a,0x4a69,0x4a69,0x4a69,0x526a,0x4a49,0x528a,0x528a,0x4229,0x4a69,0x52ab,0x4a6a,0x52aa,0x52aa,0x4a69,0x4a6a,0x5aec,0x5acb,0x52aa,0x52aa,0x5aeb,0x5b0c,0x6b6d,0x52cb,0x5aec,0x528a,0x5acb,0x52ab,0x528a,0x18c2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10c3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1062,0x0861,0x0861,0x1061,0x1061,0x0861,0x1061,0x1062,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x10a2,0x2104,0x1082,0x0881,0x1082,0x18c3,0x10a2,0x2124,0x5acb,0x5acb,0x4a69,0x52ca,0x52aa,0x52ca,0x528a,0x5acb,0x528a,0x4249,0x5b0c,0x4249,0x4a49,0x4a6a,0x4a69,0x4a69,0x4249,0x4249,0x4229,0x3a08,0x4a6a,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4249,0x4a69,0x4228,0x4228,0x4208,0x4a8a,0x52aa,0x3a07,0x4208,0x4a49,0x4a89,0x4a8a,0x31e7,0x52cb,0x4a8a,0x4a6a,0x4a49,0x39e8,0x4229,0x528a,0x4a69,0x52aa,0x4a69,0x4229,0x4228,0x4a49,0x4a89,0x4249,0x4228,0x4228,0x31e7,0x3a08,0x3a28,0x3a28,0x4a89,0x4249,0x3a07,0x4249,0x4249,0x2985,0x39e7,0x4248,0x31c6,0x4228,0x4248,0x4249,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x31c7,0x31c7,0x4229,0x39e8,0x39c7,0x39c7,0x3a08,0x39e7,0x4228,0x39e7,0x39c7,0x3186,0x4228,0x39e7,0x31a7,0x39c7,0x4229,0x39e8,0x31a7,0x39a7,0x2945,0x39c7,0x4208,0x39e7,0x39c7,0x31a6,0x31c7,0x4208,0x31c6,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4228,0x31a6, +0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x39e7,0x3a08,0x39e8,0x31c7,0x31a7,0x41e8,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39c7,0x4228,0x4a8a,0x4269,0x4269,0x39e8,0x31c7,0x4208,0x39c7,0x31a6,0x4228,0x3a07,0x39c7,0x3a07,0x31c7,0x31a6,0x3a07,0x4248,0x3a08,0x31a7,0x31a7,0x31a8,0x31c7,0x39e8,0x4208,0x4207,0x4208,0x39e7,0x4228,0x3207,0x3a08,0x3a08,0x39e7,0x39e8,0x4208,0x3a08,0x4a69,0x39e8,0x4229,0x3a09,0x3a08,0x3a28,0x4228,0x4228,0x4249,0x4a69,0x4aaa,0x52cb,0x4228,0x4228,0x4228,0x3a08,0x4a8a,0x3a28,0x3a08,0x4a49,0x4a49,0x4229,0x4228,0x528a,0x4a89,0x52aa,0x4249,0x4a69,0x4229,0x4aab,0x4269,0x4269,0x52cb,0x4a89,0x5b0c,0x4a69,0x4208,0x4249,0x4a69,0x4249,0x52aa,0x3a08,0x4a8a,0x52cb,0x3a08,0x52aa,0x52aa,0x5acb,0x528a,0x5b0c,0x52aa,0x5acb,0x5b0c,0x52aa,0x5b0b,0x52aa,0x630c,0x5acc,0x4229,0x526a,0x5acb,0x5aeb,0x18c2,0x1081,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1061,0x0861,0x0861,0x0861,0x1081,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1061,0x1061,0x1082,0x10a2,0x2924,0x1082,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x52aa,0x5aeb,0x4a89,0x4248,0x52ca,0x52ca,0x52cb,0x4a8a,0x5aec,0x5aab,0x528a,0x5aeb,0x5b0c,0x528a,0x4a69,0x4a8a,0x3a28,0x4a8a,0x52ab,0x4229,0x4229,0x5269,0x4a49,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4a69,0x52aa,0x4269,0x4a8a,0x4a69,0x4aaa,0x3a28,0x4a69,0x3a28,0x4a69,0x3a28,0x4a8a,0x4249,0x4a6a,0x4208,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4229,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e8,0x31a7,0x31a7,0x4a49,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4207,0x3a08,0x39e7,0x4228,0x31c6,0x39c7,0x4208,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x39e7,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4a89,0x3a08,0x4a8a,0x39e8,0x31a7,0x31a7,0x3a08,0x4249,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x4228,0x39e7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x4a69,0x39c7, +0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x39c7,0x39e8,0x31e7,0x31c7,0x31c7,0x3a08,0x39e8,0x31a7,0x39c8,0x4208,0x39c7,0x39e8,0x39e7,0x31a6,0x3186,0x39e8,0x39e7,0x2986,0x31a7,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x3a28,0x4248,0x31e7,0x31e7,0x39e8,0x39c7,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31e7,0x4228,0x4248,0x39e7,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x31c8,0x31c7,0x39e7,0x4a69,0x4a69,0x4249,0x4228,0x4a6a,0x4249,0x3a08,0x4208,0x3a08,0x4a49,0x4a6a,0x4228,0x39e8,0x4208,0x4208,0x4249,0x4a8a,0x4a49,0x52aa,0x4249,0x52aa,0x4228,0x4a89,0x3a49,0x4229,0x4a8a,0x3a08,0x4a8a,0x4aaa,0x4228,0x4248,0x4269,0x52cb,0x52ab,0x5aec,0x4a8a,0x5b0c,0x4269,0x4248,0x528a,0x52aa,0x5289,0x52aa,0x6b6e,0x5aec,0x4a49,0x52cb,0x4a8a,0x4a89,0x528a,0x632c,0x528a,0x4a69,0x5aeb,0x52ab,0x4a8a,0x18c2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x18e3,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2103,0x1082,0x1061,0x1062,0x18a2,0x2944,0x1082,0x0861,0x1082,0x18e3,0x18e3,0x2924,0x4a49,0x4a49,0x4a69,0x52aa,0x52ca,0x5b0c,0x52eb,0x52aa,0x52aa,0x52aa,0x4208,0x6b6e,0x528b,0x4208,0x4a49,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x52aa,0x5aeb,0x4248,0x4a69,0x4249,0x4269,0x4228,0x52aa,0x52ca,0x4a69,0x4aaa,0x4a6a,0x4a69,0x3a08,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x528a,0x4208,0x39c7,0x4208,0x4228,0x4228,0x4208,0x4208,0x4248,0x3a07,0x39e7,0x4249,0x3a08,0x31c7,0x3a08,0x4229,0x39e8,0x39e8,0x39e8,0x4249,0x39e7,0x39c7,0x4208,0x4228,0x4208,0x4a49,0x4228,0x4208,0x39e8,0x4208,0x4a69,0x39e7,0x4228,0x3a07,0x4228,0x528a,0x39e8,0x4228,0x39e7,0x39e7,0x4a49,0x3a07,0x4a69,0x39e7,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x4a49,0x4208,0x39e7,0x3a07,0x39e8,0x4209,0x31a7,0x39e7,0x4228,0x31e7,0x31c7,0x3186,0x4a69,0x31a7,0x31c7,0x39c7,0x39e7,0x31a6,0x3a08,0x39e7,0x31a7, +0x29a6,0x31c7,0x31c7,0x2965,0x2986,0x2986,0x39e7,0x3a08,0x3a08,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x39e7,0x3a08,0x39e7,0x31a7,0x31a7,0x39e8,0x31a7,0x39e7,0x4228,0x4228,0x4208,0x31a6,0x39e7,0x4208,0x4249,0x31c7,0x31a6,0x31e7,0x3a08,0x2987,0x31a7,0x39c8,0x3a08,0x31e7,0x31e7,0x39e8,0x3a08,0x3a08,0x4228,0x4228,0x4269,0x3a28,0x3a28,0x52aa,0x4208,0x4208,0x39e7,0x39c7,0x39e8,0x4249,0x4249,0x31c7,0x31e7,0x3a08,0x3a07,0x4249,0x3a08,0x3a08,0x39e8,0x4229,0x4a69,0x4248,0x4249,0x3a29,0x4249,0x4229,0x4249,0x4208,0x4a69,0x4208,0x3a08,0x4249,0x4249,0x4a8a,0x4a49,0x4a49,0x4a8a,0x4a6a,0x4229,0x4209,0x4249,0x4249,0x4228,0x4229,0x5aec,0x5acb,0x52ab,0x4a6a,0x4249,0x4a8a,0x4a8a,0x4a89,0x4a8a,0x4248,0x4228,0x528a,0x5aeb,0x7bef,0x52cb,0x5acb,0x4a8a,0x4aaa,0x4a8a,0x52aa,0x4a69,0x528a,0x528a,0x5aab,0x5aec,0x528b,0x630c,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1062,0x1082,0x1081,0x18c3,0x2124,0x2944,0x3165,0x2944,0x2944,0x2944,0x2944,0x2103,0x2124,0x2124,0x2103,0x2103,0x2103,0x2104,0x2924,0x2124,0x2124,0x2924,0x3165,0x2103,0x10a2,0x0861,0x0861,0x10a2,0x2945,0x39c6,0x2123,0x20e3,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x18c2,0x1082,0x0861,0x0861,0x18c3,0x2965,0x3185,0x2924,0x2124,0x2924,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2924,0x2924,0x2924,0x2965,0x2965,0x2965,0x3185,0x3185,0x2104,0x1082,0x0861,0x0861,0x18c2,0x3164,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x528a,0x4a69,0x5aeb,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x5289,0x4228,0x4a6a,0x4229,0x4209,0x4a49,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4a8a,0x4a6a,0x4a49,0x52aa,0x4248,0x52aa,0x4a8a,0x4a8a,0x4249,0x4208,0x52aa,0x3a08,0x4228,0x4228,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a69,0x4a49,0x4a6a,0x4a69,0x4a49,0x4a6a,0x4249,0x4228,0x4a89,0x4a69,0x4269,0x4a69,0x4229,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x3a08,0x3a28,0x3a07,0x3a07,0x3a28,0x3a08,0x4208,0x4228,0x3a08,0x4249,0x3a08,0x3a08,0x39e8,0x4228,0x3a07,0x3a08,0x4208,0x39e7,0x39c7,0x3a08,0x4229,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c7,0x3a08,0x39e7,0x3a08,0x4248,0x4208,0x4208,0x4207,0x528a,0x422a,0x39c8,0x31a7,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x4a49,0x31c7,0x31a7,0x39e8,0x3a07,0x4208,0x3a08,0x39e8,0x31c7, +0x31c7,0x31a6,0x2986,0x2986,0x2986,0x31c7,0x3a08,0x39e7,0x39e7,0x39e7,0x31a7,0x31a7,0x3186,0x39c7,0x39c7,0x3a08,0x3a08,0x31e7,0x3a08,0x3a28,0x3207,0x39e7,0x3a08,0x3a08,0x39c7,0x31c7,0x39c7,0x39e8,0x4229,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x31e8,0x3208,0x3a08,0x31a7,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3208,0x426a,0x426a,0x3a08,0x3a48,0x4269,0x31c7,0x3a08,0x4a6a,0x4a8a,0x3a28,0x3a28,0x3a28,0x4248,0x4228,0x4229,0x4249,0x4229,0x4228,0x4a69,0x4a89,0x4249,0x4249,0x4269,0x39e8,0x52cb,0x4a8a,0x4a69,0x4208,0x4aaa,0x52cb,0x3a08,0x4229,0x4229,0x4a49,0x4249,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a08,0x4a8a,0x4a6a,0x4a49,0x528a,0x4a69,0x528a,0x528a,0x4a8a,0x52cb,0x52ca,0x4aaa,0x4a8a,0x5acb,0x526a,0x528a,0x634d,0x5aeb,0x5acb,0x52aa,0x4a89,0x52cb,0x632c,0x4228,0x528b,0x6b4d,0x5acc,0x4a8a,0x528a,0x528a,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18c3,0x18a2,0x1062,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2904,0x2944,0x2965,0x3165,0x3165,0x2924,0x2944,0x2944,0x2944,0x2944,0x2945,0x2945,0x3165,0x3165,0x2944,0x2103,0x2944,0x2103,0x10a2,0x0861,0x0861,0x18a3,0x2945,0x3186,0x18e3,0x2124,0x2945,0x2944,0x2944,0x2924,0x2924,0x2124,0x2924,0x2944,0x2124,0x2124,0x2124,0x2924,0x2103,0x18c2,0x20e3,0x18c3,0x1082,0x0861,0x0861,0x18e3,0x2965,0x2965,0x2104,0x2944,0x2945,0x3165,0x3165,0x3185,0x3185,0x3186,0x3165,0x2965,0x2945,0x2965,0x2965,0x3185,0x2104,0x2104,0x2944,0x18e3,0x1082,0x0861,0x0861,0x18c3,0x2944,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2924,0x5acb,0x5aec,0x5aeb,0x4a49,0x52ab,0x52aa,0x4aaa,0x52eb,0x4248,0x4a69,0x52ca,0x528a,0x4a49,0x4a8a,0x4249,0x4269,0x4269,0x4a8a,0x4a69,0x4a8a,0x4229,0x4a6a,0x5acb,0x4249,0x4228,0x4a69,0x4249,0x4a49,0x39e8,0x39e8,0x4269,0x52cb,0x4a69,0x4228,0x4a49,0x4229,0x4a49,0x5aec,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x4208,0x3a08,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x31c7,0x4249,0x4249,0x4228,0x39e7,0x4248,0x39e7,0x4208,0x4269,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x3a08,0x4228,0x4208,0x39e7,0x39e7,0x31a7,0x4249,0x4269,0x3a07,0x31a6,0x3a08,0x4248,0x39c7,0x3a08,0x4228,0x31c6,0x31c7,0x31c7,0x3a08,0x3a28,0x31e7,0x2985,0x528a,0x52aa,0x39e7,0x4249,0x39e8,0x39c8,0x39c7,0x39e8,0x4208,0x31a6,0x4248,0x3a08,0x39e7,0x39e8,0x31c7,0x39c7,0x4208,0x4a69,0x4228,0x2966,0x31c7, +0x39e7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31a6,0x39e7,0x31a6,0x31a7,0x39c7,0x39e7,0x39c7,0x4228,0x3a08,0x39e8,0x31c7,0x39e7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e8,0x39e7,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c7,0x31a7,0x39e7,0x31e7,0x31a6,0x31c7,0x31a7,0x39c8,0x39e8,0x3a09,0x3a08,0x39e8,0x3a08,0x4248,0x4268,0x4aaa,0x3a08,0x4249,0x4208,0x4a49,0x4249,0x4249,0x39e7,0x4229,0x4229,0x4a49,0x4249,0x39e8,0x4229,0x4249,0x4249,0x4249,0x4228,0x3a08,0x4249,0x5acb,0x4a6a,0x4249,0x4249,0x52cb,0x4a8a,0x4208,0x4a49,0x4229,0x4a6a,0x4a49,0x4269,0x4aaa,0x4a8a,0x4a69,0x634c,0x52aa,0x4a8a,0x4249,0x4a8a,0x4228,0x4a49,0x52aa,0x4a8a,0x4a69,0x52cb,0x52cb,0x4a8a,0x4a8b,0x4a6a,0x52ab,0x528a,0x630c,0x630c,0x52aa,0x5b0b,0x4a8a,0x52cb,0x5aec,0x52ab,0x52ab,0x5b0c,0x52ec,0x4a69,0x52cb,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x1082,0x1082,0x2924,0x2944,0x2945,0x2945,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3165,0x2103,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x18a2,0x18a2,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2124,0x2944,0x2944,0x2944,0x2124,0x2124,0x2945,0x3165,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18c3,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2924,0x2945,0x2945,0x3186,0x2104,0x1082,0x18c2,0x10a2,0x1082,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x10a2,0x18c3,0x18c3,0x2924,0x4a49,0x4a8a,0x4a6a,0x4229,0x4a6a,0x528b,0x4a8a,0x52cb,0x4a49,0x4249,0x4a69,0x52aa,0x52cb,0x4a69,0x4a89,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x528a,0x4249,0x4a69,0x52aa,0x39e7,0x4228,0x4249,0x52aa,0x4228,0x4249,0x4a49,0x4249,0x4228,0x528a,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x39e8,0x4a6a,0x4249,0x39e7,0x4249,0x39e8,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x3a28,0x4228,0x4248,0x39e7,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x39e7,0x39e8,0x4249,0x4228,0x39e7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e7,0x31c7,0x4208,0x39c7,0x39e7,0x4228,0x31c7,0x4228,0x4228,0x3a08,0x4228,0x4249,0x31c7,0x4228,0x4228,0x3a07,0x4249,0x528a,0x39c7,0x39e7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x39c6,0x4248,0x39e7,0x39e7,0x4a6a,0x31a6,0x39e7,0x31a7,0x3a08, +0x31c7,0x31a7,0x3186,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x39e7,0x31c7,0x31a6,0x31a7,0x39c7,0x31a7,0x39c7,0x31c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x2986,0x31c7,0x3a08,0x39e8,0x3a09,0x3a09,0x3a08,0x29c7,0x31c7,0x31e7,0x3a07,0x39e7,0x31c7,0x2986,0x29a6,0x31a6,0x31e7,0x31a7,0x31c7,0x31c7,0x31e8,0x39e8,0x39e8,0x424a,0x4a8a,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x4208,0x4208,0x39e8,0x39e8,0x31c7,0x39e8,0x526a,0x4a49,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4228,0x4249,0x4a6a,0x4249,0x4249,0x4a8a,0x4229,0x4208,0x4a49,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a6a,0x4a49,0x4a6a,0x4a49,0x52cb,0x4aaa,0x4269,0x4a69,0x52cb,0x52cb,0x4a8a,0x4228,0x52aa,0x52cb,0x4a6a,0x632d,0x5acb,0x4a49,0x52ab,0x5acb,0x5aca,0x4a69,0x52ab,0x4a69,0x52cb,0x52cb,0x4a8a,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x18a2,0x0861,0x0841,0x0861,0x2924,0x2924,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2944,0x0861,0x0861,0x1082,0x0861,0x0861,0x10a2,0x1082,0x0841,0x18c3,0x2944,0x2924,0x2925,0x2945,0x2924,0x2944,0x2964,0x3164,0x2944,0x2944,0x2924,0x2944,0x2945,0x3165,0x18c2,0x0841,0x1082,0x1082,0x0861,0x1082,0x10a2,0x1061,0x0861,0x2104,0x2124,0x2924,0x2924,0x2945,0x2945,0x2945,0x2964,0x2944,0x2944,0x2925,0x2945,0x2925,0x2965,0x2945,0x0841,0x0841,0x1082,0x1062,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x18a3,0x18c3,0x18c3,0x2124,0x4a69,0x5aeb,0x4a6a,0x52aa,0x528a,0x528a,0x4a49,0x52ab,0x4249,0x4228,0x3a08,0x52eb,0x52aa,0x4a69,0x5acb,0x4a69,0x4a49,0x4228,0x4a49,0x4208,0x4a6a,0x4a6a,0x3a08,0x4a8a,0x52aa,0x4249,0x4a69,0x4a49,0x4a49,0x4a69,0x3a08,0x4a49,0x39e7,0x4a69,0x4a89,0x52aa,0x4248,0x4a49,0x4248,0x4228,0x4a49,0x52aa,0x4a69,0x52aa,0x4a69,0x4228,0x528a,0x4a6a,0x4229,0x4229,0x39e7,0x528a,0x4a69,0x39e7,0x4249,0x4229,0x3a08,0x3a08,0x31a6,0x4249,0x4249,0x39c7,0x3a08,0x4248,0x3a08,0x4a89,0x4228,0x4208,0x3a07,0x39e7,0x39c7,0x39e8,0x4a49,0x528a,0x39e8,0x39e8,0x39c8,0x31c7,0x31a6,0x3a08,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e8,0x4a69,0x4228,0x4a69,0x31a6,0x3186,0x39e7,0x39e7,0x39e7,0x4229,0x4a6a,0x4228,0x39e7,0x4248,0x4248,0x4228,0x4249,0x4228,0x39e7,0x3a08,0x31e7,0x39e7,0x39c7,0x29a6,0x31c7, +0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x39e7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a6,0x31c7,0x31a7,0x4249,0x4249,0x2986,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x31c7,0x39c7,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x3a08,0x31e7,0x29a6,0x31e7,0x39e7,0x4228,0x39e7,0x4249,0x4229,0x3a08,0x4229,0x3a08,0x3a08,0x4269,0x4229,0x31e8,0x3a08,0x3a08,0x4229,0x528a,0x528a,0x4228,0x31a7,0x4228,0x3a08,0x3a08,0x4a49,0x4a69,0x4228,0x4249,0x4229,0x4228,0x5acb,0x3a08,0x428a,0x428a,0x3a29,0x3a28,0x4249,0x52aa,0x4a89,0x4a89,0x4a69,0x4a6a,0x4a6a,0x4249,0x4a49,0x4a4a,0x5aeb,0x4a69,0x4a49,0x4a6a,0x5acc,0x52ab,0x52ab,0x4a49,0x4a6a,0x4249,0x5aec,0x5aeb,0x528a,0x5aeb,0x632c,0x5acb,0x4a69,0x52ab,0x4a6a,0x424a,0x4a8a,0x52ca,0x52cb,0x5b2c,0x4a8a,0x5b0c,0x630c,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0020,0x0861,0x2124,0x2124,0x2945,0x2945,0x2925,0x2945,0x3185,0x39a4,0x39a4,0x39a5,0x3165,0x2945,0x2945,0x2965,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0020,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c4,0x5a64,0x5a84,0x4204,0x2944,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1061,0x1082,0x1082,0x0841,0x0861,0x2104,0x2925,0x2945,0x2945,0x2945,0x3185,0x4a25,0x5244,0x4204,0x3185,0x2945,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0841,0x18c3,0x2904,0x0861,0x0861,0x10a2,0x18c3,0x18c2,0x2944,0x528a,0x4a49,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4a6a,0x4228,0x5289,0x4a89,0x4a69,0x4229,0x4a69,0x4a49,0x52aa,0x4228,0x4a49,0x4a8a,0x3a28,0x3a28,0x4a8a,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a49,0x4249,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4228,0x4a8a,0x4a8a,0x3a08,0x5aeb,0x528a,0x4208,0x4a49,0x4a49,0x4a6a,0x4208,0x4229,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x39e7,0x4229,0x3a08,0x39e7,0x3a08,0x4228,0x4208,0x39c7,0x31e7,0x31c7,0x3a08,0x4a69,0x4a69,0x31a6,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e8,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x39c7,0x4208,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x4208,0x39c7,0x39e8,0x31c7,0x31c7,0x4228,0x39e7,0x31a7,0x39c7,0x31c7,0x3186,0x39c8,0x31e7,0x3a08,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31e7,0x39e7,0x39e8,0x2966,0x2986, +0x2966,0x2986,0x31a7,0x31c7,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x39e8,0x3a08,0x39e7,0x31a6,0x31c7,0x4228,0x4a89,0x4228,0x39e7,0x39e7,0x3186,0x31a7,0x39e8,0x4249,0x39e7,0x31a6,0x31a6,0x3a28,0x31e7,0x3a08,0x4a49,0x528a,0x31c7,0x3a29,0x39e8,0x3a08,0x4a69,0x4229,0x4208,0x4229,0x4a49,0x4229,0x3a08,0x3a08,0x4249,0x52aa,0x4a48,0x4228,0x39e8,0x39e8,0x31e8,0x31e8,0x4229,0x528a,0x41e8,0x39e8,0x4208,0x4a6a,0x4a6a,0x4248,0x4229,0x4249,0x4249,0x4a4a,0x4249,0x52cb,0x4a4a,0x4a6a,0x4229,0x634d,0x52cb,0x4249,0x52ab,0x52aa,0x4a69,0x3a28,0x4a8a,0x4209,0x3a09,0x4a6a,0x4a6a,0x4a49,0x5aeb,0x5b0c,0x634c,0x5269,0x5acb,0x634d,0x4a8a,0x52ab,0x528a,0x4a4a,0x528a,0x52ab,0x52cb,0x5aeb,0x632d,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2925,0x2925,0x2925,0x3165,0x5265,0x5a64,0x62c4,0x6b04,0x39c4,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2945,0x2945,0x2964,0x7324,0x7303,0x7304,0x7b64,0x3984,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x0861,0x2104,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b24,0x6ae4,0x7344,0x5244,0x2965,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0861,0x18c3,0x2104,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x2944,0x528b,0x4a29,0x4228,0x5289,0x528a,0x4a69,0x4228,0x4a69,0x528a,0x52aa,0x4248,0x4a29,0x4229,0x4a29,0x4229,0x528a,0x4229,0x4249,0x4a69,0x4a69,0x3a07,0x52cb,0x4a49,0x528a,0x4a8a,0x4228,0x4a89,0x4248,0x4228,0x4249,0x4a49,0x4a69,0x4a49,0x3a07,0x4228,0x4a69,0x4a8a,0x3a08,0x4249,0x4a8a,0x4a69,0x52aa,0x4a6a,0x4209,0x528a,0x528a,0x4a49,0x4249,0x4249,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x4228,0x3a08,0x31e7,0x3a08,0x3a08,0x4a49,0x4a29,0x31a7,0x3a08,0x31e7,0x4a69,0x3a08,0x3a08,0x39c7,0x3186,0x39e7,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x31a7,0x39c7,0x31a7,0x39e8,0x39c7,0x39e8,0x31a7,0x39e7,0x31a6,0x4228,0x2985,0x4208,0x4208,0x39e8,0x3a08,0x31c7,0x39e7,0x31c7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x2986,0x39e7,0x31a6,0x31c7,0x3a28,0x39e8,0x31a7,0x3187,0x31a7,0x3a08,0x4228,0x31c7,0x31a7,0x2966,0x2986, +0x2966,0x2965,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x31c7,0x31c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x39e7,0x39e7,0x31c7,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x31a7,0x4209,0x39c8,0x39e8,0x3186,0x39c7,0x4208,0x3a28,0x39e7,0x4228,0x4228,0x39e8,0x39e8,0x3a08,0x3a08,0x4208,0x4a49,0x4249,0x41e8,0x4249,0x4a6a,0x3a08,0x4a8a,0x4a8a,0x3a08,0x4269,0x4249,0x4a49,0x4208,0x39e8,0x31a7,0x39e8,0x3a08,0x39e8,0x39e8,0x4209,0x4208,0x4a49,0x4a29,0x528a,0x4a6a,0x4a49,0x5acb,0x5aeb,0x3a28,0x4a8a,0x4229,0x4249,0x4a8a,0x4249,0x3a28,0x4a6a,0x5aeb,0x4a8a,0x4269,0x52ca,0x4a8a,0x4249,0x3a28,0x4249,0x4a49,0x4229,0x5acb,0x52aa,0x52aa,0x4208,0x5b0c,0x632c,0x31e8,0x528a,0x5acb,0x4a4a,0x5aec,0x5aeb,0x52aa,0x52cb,0x52ab,0x52aa,0x4a89,0x4249,0x5aec,0x4229,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2924,0x2925,0x2925,0x3165,0x5245,0x5a64,0x8384,0x7b63,0x39a4,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2925,0x2925,0x3184,0x8be4,0x7b23,0x7304,0x9404,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7b65,0x8344,0x5224,0x83a5,0x7304,0x3145,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x2104,0x0861,0x0861,0x10a2,0x18c3,0x20e3,0x2924,0x4a49,0x4a69,0x4208,0x4249,0x4249,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4228,0x4a69,0x4229,0x4208,0x39c7,0x4a69,0x4228,0x4a6a,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x3a08,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4269,0x4229,0x39e8,0x3a08,0x528a,0x4228,0x4228,0x4a69,0x4229,0x4208,0x4a6a,0x4229,0x4249,0x4a69,0x4a69,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x31a6,0x31a6,0x31c6,0x4228,0x4a8a,0x39e8,0x4249,0x4249,0x4249,0x4249,0x4208,0x4208,0x31a6,0x31a6,0x39e8,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x39c7,0x39c7,0x31a7,0x39c8,0x39e8,0x31a6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x39c7,0x31a7,0x39e7,0x31a7,0x2966,0x31a6,0x29a6,0x31c7,0x31c7,0x2966,0x31a6,0x31a6,0x39c7,0x31c6,0x31e7,0x31e7,0x39e7,0x39c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a7, +0x2965,0x2965,0x2986,0x29a6,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31e7,0x39e7,0x31c7,0x31a6,0x31a6,0x31c7,0x31a7,0x31c7,0x31a7,0x39c7,0x39e7,0x4228,0x39e7,0x31a6,0x29a6,0x31c7,0x31c7,0x39c7,0x39e8,0x2986,0x2986,0x31c7,0x29a7,0x2986,0x2986,0x39e7,0x39c7,0x39e7,0x39e8,0x3a08,0x4249,0x4a6a,0x4229,0x4a69,0x31c7,0x39e7,0x39c8,0x4229,0x31a7,0x31a7,0x4249,0x4249,0x3a08,0x52cb,0x4249,0x3a08,0x31c8,0x4a6a,0x39e8,0x4208,0x3a08,0x31a7,0x31e7,0x3a08,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4229,0x4249,0x4229,0x4229,0x4a8a,0x4249,0x31c7,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x3a08,0x4249,0x52ab,0x4a6a,0x4228,0x4a8a,0x5aeb,0x4a49,0x428a,0x426a,0x4229,0x4a6a,0x4a6a,0x4a8a,0x4249,0x52cb,0x528a,0x4a6a,0x630c,0x4208,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a49,0x4a49,0x528a,0x52ab,0x4a69,0x4a49,0x528a,0x4a4a,0x18a3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2124,0x2924,0x2945,0x2925,0x2945,0x3165,0x5244,0x8384,0x5223,0x3164,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x3184,0x8bc4,0x8363,0x7b44,0x93e4,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7325,0x8364,0x5244,0x8bc4,0x8364,0x3144,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x2103,0x20e3,0x0861,0x1061,0x10a2,0x18c3,0x18e3,0x2924,0x4249,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4228,0x4229,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x39e8,0x3a28,0x3a28,0x3a08,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x4249,0x3a08,0x4249,0x4208,0x4a69,0x528a,0x528a,0x4a69,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4a69,0x4a6a,0x39e8,0x31a7,0x39e8,0x31c6,0x3a07,0x4229,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x3a08,0x31a6,0x3186,0x39c7,0x4208,0x3a07,0x39e7,0x4208,0x4a49,0x4a69,0x39c7,0x4249,0x4229,0x4229,0x3a08,0x39c8,0x4229,0x39c7,0x31a7,0x4228,0x39c7,0x39c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e8,0x31a6,0x31a6,0x31c7,0x31c6,0x31c7,0x3a08,0x31a7,0x2966,0x31a7,0x39c7,0x31a7,0x4208,0x31a6,0x29a6,0x2986,0x3186,0x31a6,0x3185,0x39a6,0x2966,0x31c7,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x3186,0x2986,0x31c6,0x31a6,0x31c7,0x3186, +0x2986,0x31c7,0x2986,0x2965,0x2986,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x31c7,0x39c7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x39c8,0x39e8,0x39c7,0x31a7,0x31c7,0x31a7,0x31a7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x39e8,0x3a08,0x4229,0x39e8,0x39e8,0x4208,0x39e8,0x4249,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x4208,0x39c7,0x39e8,0x4249,0x39e7,0x31c7,0x31c8,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3a08,0x3a28,0x3a28,0x39e8,0x3a28,0x4269,0x4269,0x4269,0x4249,0x3a08,0x4229,0x4a6a,0x4229,0x5acc,0x4249,0x4229,0x4249,0x39e8,0x4a49,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4208,0x4a29,0x4a49,0x4229,0x4249,0x3a08,0x3a08,0x4229,0x3a08,0x4249,0x4a6a,0x528a,0x4a69,0x4a49,0x4229,0x4249,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2924,0x2944,0x2924,0x2945,0x2945,0x3164,0x7344,0x7303,0x3164,0x2944,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0881,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x39c4,0x93e5,0x6ac3,0x62a4,0x9c04,0x4a03,0x2925,0x2945,0x2945,0x2965,0x18c3,0x0020,0x0861,0x1082,0x0861,0x1082,0x1082,0x0020,0x1081,0x2124,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b44,0x6ac3,0x9404,0x7b24,0x2944,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x18e3,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x2124,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x4208,0x4229,0x4229,0x39e8,0x4208,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x4208,0x39c7,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39e8,0x4a29,0x4a49,0x4229,0x2986,0x31a7,0x4208,0x4208,0x39e8,0x31c7,0x2986,0x29a6,0x31c7,0x39e8,0x39c7,0x31a7,0x52aa,0x4a69,0x4228,0x3a28,0x4229,0x3a08,0x39c7,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x41e7,0x3186,0x2945,0x2965,0x2125,0x2145,0x2145,0x2966,0x2965,0x2966,0x2125,0x2125,0x2104,0x2125,0x2945,0x2104,0x2124,0x2124,0x2104,0x2124,0x1904,0x2125,0x2125,0x2125,0x18e4,0x4228,0x4228,0x3186,0x31c7,0x31a6,0x2966,0x2966,0x2965,0x3186,0x2966,0x2966,0x2966,0x2965,0x2966,0x2986,0x3186,0x2965,0x2945,0x3186,0x2986,0x3186,0x2966,0x2945,0x2965,0x2965,0x2124,0x2945,0x2145,0x2145,0x2165,0x2986,0x2965, +0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a7,0x2966,0x39e8,0x39c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31a7,0x39c7,0x3a08,0x39e8,0x4209,0x39c8,0x39c8,0x4208,0x39e8,0x39e8,0x39c7,0x31a7,0x29a6,0x31c6,0x31e7,0x39e7,0x4228,0x39c7,0x39c8,0x39c8,0x39c8,0x41e8,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x31c7,0x4229,0x4208,0x39e7,0x4208,0x39c7,0x4209,0x4209,0x4a8a,0x4229,0x4a6a,0x4229,0x4249,0x4249,0x4a6a,0x4a49,0x4209,0x4209,0x39e8,0x41e8,0x4a4a,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4229,0x39e8,0x4208,0x4a49,0x4229,0x4208,0x41e8,0x4208,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2944,0x2924,0x2924,0x2924,0x2124,0x41e4,0x93e4,0x5223,0x2924,0x2944,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18e3,0x2945,0x2945,0x2925,0x2124,0x41e5,0x93e5,0x6283,0x5264,0x93e4,0x4a03,0x2925,0x2925,0x2925,0x2965,0x18c3,0x0020,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x1082,0x2124,0x2945,0x2945,0x2945,0x2945,0x4a45,0x7324,0x62c4,0x93e4,0x6284,0x2945,0x2945,0x2945,0x2945,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18c3,0x18e3,0x2944,0x39e7,0x4228,0x4228,0x29a6,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x4207,0x31c6,0x39e7,0x4228,0x39e7,0x4228,0x4a48,0x4248,0x39e7,0x0842,0x0000,0x1904,0x18e3,0x18c3,0x10c3,0x1083,0x1082,0x18c3,0x10a3,0x18e4,0x2104,0x2104,0x18e4,0x18c4,0x10c3,0x2145,0x2125,0x1904,0x1924,0x1904,0x1904,0x18e3,0x1924,0x634c,0x636c,0x52aa,0x4a8a,0x5289,0x4228,0x4208,0x39e7,0x39e7,0x39c7,0x31a6,0x4208,0x4208,0x41e8,0x2945,0x1082,0x1083,0x1083,0x10a2,0x18e3,0x10a2,0x18c3,0x18e4,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x2124,0x1903,0x1904,0x18c3,0x18c3,0x18c3,0x2104,0x2125,0x2986,0x3a07,0x4a89,0x29a6,0x29a6,0x2965,0x2145,0x2124,0x2124,0x2144,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2104,0x2125,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1904,0x18e3,0x2125,0x2965,0x3a08,0x4248,0x4aaa,0x4a8a, +0x2945,0x2145,0x2144,0x2945,0x2965,0x2945,0x2966,0x2965,0x2986,0x2986,0x2945,0x3186,0x39c7,0x31a6,0x3186,0x2985,0x3186,0x2985,0x2965,0x3186,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3a07,0x39c6,0x31a6,0x3186,0x31a6,0x3186,0x2104,0x2104,0x18e4,0x18c3,0x10c4,0x10a3,0x10a3,0x18e4,0x18a3,0x18c3,0x20e4,0x18c3,0x18a3,0x1082,0x18c3,0x18c4,0x18c4,0x18c4,0x10a3,0x18e4,0x10a3,0x18e4,0x18c3,0x1083,0x2104,0x5aeb,0x4a8a,0x31c7,0x39e7,0x31a6,0x3186,0x39e8,0x3a08,0x31c7,0x31c7,0x4208,0x4208,0x3a08,0x52aa,0x4a49,0x0000,0x18c3,0x18a3,0x18a2,0x18a3,0x1083,0x18a3,0x1083,0x18c4,0x1083,0x18c4,0x1083,0x2105,0x20e4,0x10a3,0x0842,0x0862,0x0021,0x1063,0x1063,0x1083,0x18c4,0x0862,0x31a7,0x52aa,0x3a08,0x39e7,0x2986,0x31c6,0x31c7,0x31a6,0x39e7,0x39c7,0x2985,0x39c6,0x39e7,0x39c6,0x39e6,0x39e7,0x39e7,0x4228,0x4228,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x2104,0x2924,0x2124,0x2124,0x2124,0x2124,0x5245,0x8384,0x3983,0x2924,0x2924,0x2924,0x2925,0x2945,0x2124,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0841,0x18c3,0x2925,0x2945,0x2925,0x2924,0x3185,0x6ae5,0x6ac4,0x62a4,0x7304,0x3984,0x2924,0x2924,0x2925,0x2945,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x0861,0x1082,0x2124,0x2925,0x2925,0x2924,0x2944,0x4a25,0x7325,0x6ae4,0x7b24,0x41c4,0x2945,0x2945,0x2945,0x2945,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x2965,0x5b4c,0x5b4c,0x5b4c,0x8450,0x73ce,0x73ce,0x7c30,0x8450,0x73ee,0x5b0b,0x632c,0x8450,0x6bae,0x6bce,0x6bae,0x632b,0x5b0b,0x634c,0x5b0c,0x4229,0x5aec,0x2965,0x4a89,0x52ca,0x52eb,0x4268,0x52eb,0x5b0b,0x52ea,0x5b0b,0x4aaa,0x4a89,0x4228,0x4228,0x29a7,0x4269,0x4249,0x31e7,0x4249,0x4269,0x4aaa,0x638d,0x31e7,0x4a69,0x4229,0x4249,0x4248,0x4228,0x4208,0x4228,0x39e8,0x4249,0x3a08,0x4269,0x5aec,0x52aa,0x4a69,0x3a07,0x2124,0x2925,0x2104,0x2945,0x31a7,0x2965,0x10a3,0x0001,0x1904,0x10c2,0x1904,0x10c3,0x18e3,0x2124,0x2985,0x2165,0x0882,0x2965,0x2145,0x2124,0x2124,0x2945,0x39c7,0x2965,0x5aeb,0x4a6a,0x2166,0x10e4,0x1904,0x1904,0x10c3,0x18e3,0x18e3,0x18c3,0x2104,0x18e3,0x10c3,0x18e3,0x1904,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x2165,0x4248,0x4a8a,0x4a4a, +0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2125,0x2124,0x2945,0x2966,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2944,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2125,0x4a69,0x632c,0x0882,0x2124,0x18e3,0x1903,0x18e3,0x10a3,0x18e4,0x18e4,0x10c3,0x18e4,0x2125,0x2124,0x2165,0x2945,0x2124,0x2144,0x2945,0x2925,0x2124,0x2124,0x2104,0x1904,0x18e4,0x2104,0x4208,0x39e8,0x2145,0x2965,0x2965,0x2986,0x31a7,0x31a7,0x31a7,0x31c7,0x31e7,0x31e8,0x39e8,0x4269,0x31e7,0x39e6,0x4228,0x39e7,0x31a6,0x2165,0x2985,0x31c6,0x31e7,0x31c7,0x29c6,0x29c6,0x3207,0x3a07,0x4248,0x3a08,0x4a8a,0x52ab,0x4aab,0x4269,0x428a,0x4a89,0x39e7,0x1904,0x4228,0x5aeb,0x4a8a,0x52ca,0x636d,0x73ef,0x638e,0x7bf0,0x73ce,0x634c,0x7c0f,0x8450,0x8450,0x94d2,0x9d33,0x8491,0x8cd3,0x8cd2,0x9534,0x18e3,0x1082,0x1081,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2924,0x2124,0x2924,0x2924,0x2124,0x41e5,0x5244,0x2944,0x2924,0x2124,0x2924,0x2945,0x2945,0x2103,0x10a2,0x1081,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c2,0x2104,0x2125,0x2124,0x2124,0x2924,0x39c4,0x4a24,0x4a04,0x41c4,0x2944,0x2124,0x2124,0x2924,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c2,0x18c3,0x2104,0x2945,0x2925,0x2924,0x2925,0x39a5,0x5245,0x5245,0x4a05,0x3165,0x2945,0x2945,0x2965,0x2965,0x2104,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x3186,0x84b3,0x7c51,0x8471,0xa575,0x9d14,0x8472,0x94f4,0x9d55,0xa595,0x9513,0x8cd3,0x94f4,0x7c52,0x8492,0x8c92,0x6b8e,0x632e,0x636e,0x52cb,0x4a69,0x5b0b,0x31c7,0x4a6a,0x4a8b,0x4a6a,0x4aaa,0x52eb,0x4a8a,0x4aaa,0x4a8a,0x4249,0x39e7,0x3a08,0x29a7,0x4269,0x29c7,0x31e7,0x3a08,0x31e8,0x31e7,0x4aab,0x8472,0x3a08,0x634d,0x52aa,0x31c8,0x31a7,0x39c8,0x3a08,0x29a7,0x3208,0x3a08,0x29a6,0x52aa,0x634d,0x528a,0x4a8a,0x4249,0x2124,0x2924,0x2104,0x2145,0x2965,0x10c3,0x4269,0x5b4c,0x3a08,0x5b0c,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x634c,0x52eb,0x6bae,0x2986,0x2144,0x2965,0x2144,0x2124,0x39c7,0x31c6,0x5aec,0x52ab,0x39c8,0x10a3,0x18e3,0x1904,0x10e3,0x10c3,0x10c3,0x10a3,0x2104,0x18e3,0x10e3,0x10c3,0x18e4,0x1904,0x18e3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3,0x10c3,0x18c3,0x10a2,0x2986,0x4229,0x18e4, +0x18e3,0x18e3,0x2124,0x2124,0x1904,0x1904,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x2104,0x1904,0x10e3,0x18e4,0x10c3,0x18e4,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x0001,0x630c,0x840f,0x0000,0x2965,0x18e3,0x1904,0x18e3,0x2965,0x1903,0x2104,0x31a6,0x1944,0x2985,0x2103,0x2944,0x2986,0x31c6,0x3a07,0x31c6,0x3a07,0x1924,0x2985,0x2124,0x1904,0x2145,0x2104,0x18e4,0x18e5,0x18e4,0x18e4,0x1904,0x2125,0x18e4,0x18c4,0x31a7,0x3a08,0x29c7,0x31c8,0x29a7,0x52ab,0x4a8a,0x52cb,0x4aaa,0x3a29,0x31e7,0x31c7,0x2166,0x29a6,0x39e8,0x31c7,0x3a49,0x3a69,0x3a28,0x4249,0x4269,0x4269,0x4a8a,0x4a8a,0x52ec,0x4acb,0x4aab,0x4aab,0x3a29,0x31a6,0x3a08,0x4a8a,0x5b0d,0x6bcf,0x7410,0x73f0,0x6bd0,0x73f0,0x73d0,0x7c0f,0x7c10,0x8452,0x8431,0x8c93,0xadf8,0x9535,0x8493,0x8cd4,0x9d55,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x2124,0x2124,0x2945,0x2945,0x2924,0x2945,0x2944,0x3164,0x3164,0x2924,0x2945,0x2925,0x2925,0x2945,0x2945,0x2924,0x2924,0x18c3,0x1081,0x0861,0x0861,0x10a2,0x2104,0x2964,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2944,0x18c2,0x1081,0x1082,0x1082,0x18e3,0x2944,0x2964,0x2945,0x3165,0x2945,0x2945,0x2945,0x2944,0x3165,0x39a5,0x3185,0x3165,0x3165,0x2965,0x3165,0x3185,0x2965,0x2924,0x20e3,0x10a2,0x0861,0x0861,0x0841,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x18a2,0x18e3,0x3186,0x8472,0x8493,0x8473,0x8c92,0x94f4,0x7c31,0x8c93,0x8473,0x9515,0x9d35,0x84b3,0x7411,0x6bb0,0x7bf1,0x94f4,0x73af,0x4a8c,0x52cd,0x426a,0x31c7,0x4228,0x4249,0x4a8a,0x4a6a,0x6b8e,0x7c10,0x6b6d,0x8430,0x6b8d,0x6b8d,0x634c,0x8c70,0x4a89,0x636c,0x6bae,0x636d,0x6b8e,0x73cf,0x1925,0x31a7,0x31a8,0x52ed,0x3a29,0x6b6f,0x424a,0x29a7,0x2966,0x2966,0x31a7,0x31a7,0x31c7,0x29a7,0x08c3,0x5aeb,0x7bef,0x4a8a,0x4229,0x2986,0x2945,0x2124,0x1904,0x18e4,0x39e7,0x2164,0x73ce,0x73ee,0x6bae,0x8470,0x52ca,0x7c0f,0x52eb,0x8430,0x634d,0x4a8a,0x8430,0x0040,0x31a6,0x2985,0x2144,0x2145,0x31c7,0x31c6,0x5acb,0x4a8a,0x3a08,0x0882,0x10c3,0x10e3,0x1904,0x10e3,0x10c3,0x10a3,0x18e3,0x1904,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x10c3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e3,0x18e4,0x10a3,0x10c3,0x10e4,0x2966,0x18e4, +0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x18e4,0x1083,0x528a,0x52aa,0x2144,0x2985,0x18e3,0x0800,0x52cb,0x5b4c,0x3248,0x530b,0x634d,0x52cb,0x4a89,0x52ca,0x636c,0x42a9,0x73ef,0x5b0b,0x6b8d,0x636c,0x530b,0x10e3,0x2145,0x1924,0x2124,0x2104,0x2104,0x1904,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x2125,0x3a09,0x29c8,0x29c7,0x29c7,0x4a8a,0x4228,0x52ec,0x426a,0x3208,0x31e7,0x2165,0x5b2c,0x6bae,0x4269,0x636d,0x5aeb,0x5b0c,0x5b2c,0x632c,0x6bae,0x73ce,0x6bae,0x8492,0x5b0d,0x424a,0x52ec,0x428b,0x3a09,0x31a7,0x39c8,0x422a,0x5b0d,0x636f,0x73f0,0x73f0,0x6bd0,0x6b8f,0x8431,0x8cb3,0x7c32,0x7411,0x8c94,0x7c53,0x8cb5,0x73f2,0x6bd1,0x8473,0x8cb4,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x1062,0x1061,0x10a2,0x2124,0x3165,0x2965,0x2924,0x2945,0x2924,0x2104,0x2104,0x2124,0x2104,0x2104,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x3165,0x2104,0x1082,0x0861,0x0861,0x18c3,0x2945,0x3185,0x2944,0x2104,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2924,0x39a5,0x39a6,0x2103,0x1081,0x0862,0x1082,0x18e3,0x3185,0x3185,0x2945,0x2945,0x2124,0x2924,0x2104,0x2104,0x2924,0x3165,0x3186,0x3165,0x3165,0x2925,0x2924,0x3165,0x3165,0x3165,0x2945,0x18c3,0x1061,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x1082,0x18a2,0x20e3,0x3186,0x8472,0x7412,0x7412,0x73f1,0x7c31,0xad97,0x7c32,0x8473,0x8cb4,0x8c94,0x6bb0,0x7c31,0x7c11,0x7c11,0x8452,0x634e,0x52cc,0x52cc,0x4a6b,0x31a7,0x39e7,0x4228,0x52eb,0x4a8a,0x6baf,0x7c10,0x73cf,0x8c71,0x7bf0,0x8451,0x5aeb,0x8cb2,0x634e,0x7c31,0x0064,0x4209,0x6b4e,0x738e,0x0001,0x39e8,0x2167,0x634e,0x4a6a,0x528b,0x4229,0x29a7,0x29a7,0x2966,0x3187,0x39e8,0x39e8,0x2966,0x10e3,0x52ca,0x7c10,0x632d,0x4249,0x31c7,0x2965,0x2945,0x18c3,0x2144,0x2985,0x2985,0x73ae,0x94d2,0x6b6d,0x8451,0x52ca,0x5289,0x738e,0x8c71,0x6b4d,0x4249,0x8431,0x0000,0x2966,0x3186,0x2986,0x2125,0x2965,0x39c7,0x5b0c,0x4249,0x39e8,0x3186,0x18e4,0x10e3,0x1904,0x18e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e4,0x1924,0x1904,0x10e3,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e4,0x1904,0x10a3,0x10c3,0x10e3,0x08a3,0x10c3, +0x10a2,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x10e3,0x10c3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x10c3,0x10e3,0x1904,0x18e4,0x18e3,0x10c3,0x31a7,0x2985,0x2965,0x2965,0x18e4,0x0000,0x6b8e,0x6baf,0x636d,0x5b0c,0x0000,0x6b6e,0x6b8d,0x73ef,0x740f,0x6b8e,0x7c0f,0x5b0c,0x73ef,0x7c2f,0x636c,0x0081,0x2145,0x2124,0x2104,0x2124,0x2125,0x1904,0x10e3,0x1903,0x18e3,0x18a3,0x18c3,0x18c3,0x10a3,0x2986,0x29c7,0x29c7,0x2987,0x4249,0x39e8,0x4aab,0x424a,0x31e8,0x31c7,0x0882,0x7c30,0x8471,0x638d,0x8491,0x6bad,0x73ee,0x73ae,0x7c0f,0x8c91,0x73ee,0x8c92,0x8472,0x4aab,0x4aab,0x4acc,0x428b,0x39e8,0x31a7,0x39e8,0x422a,0x73d0,0x8c93,0x7411,0x7410,0x73f0,0x73cf,0x6bd0,0x7411,0x73f1,0x6bd0,0x8cb3,0x7411,0x6bb0,0x7c31,0x94d3,0x7c51,0x7c33,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c3,0x1082,0x1062,0x0861,0x18c3,0x2104,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x18a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18e3,0x2104,0x20e4,0x1082,0x0861,0x0861,0x18c3,0x2124,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x3165,0x3185,0x2924,0x1082,0x0861,0x1082,0x20e3,0x2944,0x2924,0x20e3,0x18c3,0x18a2,0x18a3,0x18a2,0x18a3,0x18c3,0x2104,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x20e3,0x2104,0x2924,0x2124,0x18e3,0x1062,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18a2,0x20e3,0x39a6,0x9d35,0x4aee,0x6391,0x530e,0x8cd3,0xb5d7,0x6bd0,0x7c31,0x7411,0x73f1,0x73b0,0x73d0,0x73d0,0x6baf,0x6b8f,0x632e,0x4aab,0x4aab,0x422a,0x31a7,0x4208,0x4228,0x52eb,0x4aab,0x5b0d,0x73f0,0x8430,0x8430,0x6b8e,0x8450,0x5b0c,0x8451,0x634d,0x73af,0x632d,0x634e,0x5b0c,0x6b6e,0x0062,0x31e8,0x2186,0x5b2c,0x3a08,0x52aa,0x4a8a,0x29a6,0x31c8,0x2967,0x31a7,0x31c7,0x29a6,0x2965,0x2145,0x1944,0x632d,0x8451,0x31e8,0x31e8,0x2945,0x2104,0x10c2,0x2124,0x2145,0x10a2,0x52cb,0x632d,0x52ab,0x6b4e,0x5aec,0x5aeb,0x632c,0x5b0c,0x632d,0x31a7,0x5acb,0x10a3,0x2104,0x2945,0x2966,0x2965,0x2986,0x2965,0x52aa,0x4a6a,0x39e8,0x2946,0x18e4,0x18e3,0x1903,0x1904,0x10c3,0x18e3,0x18e3,0x10c2,0x1904,0x1924,0x2124,0x1904,0x10a3,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x1904,0x2124,0x10c3,0x10c3,0x10c3,0x1904,0x2125, +0x10c2,0x18c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x10c3,0x10c3,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18e4,0x18e3,0x10c3,0x10c3,0x1903,0x1903,0x18e3,0x10c3,0x3186,0x31a6,0x2924,0x2125,0x18e4,0x0042,0x6b6e,0x5aeb,0x39c7,0x632d,0x5aeb,0x6b8e,0x634d,0x7c10,0x7bcf,0x73ae,0x6bcf,0x5b2d,0x73cf,0x7bef,0x4248,0x1904,0x2124,0x2104,0x2104,0x2125,0x2145,0x29a7,0x10e3,0x1924,0x1903,0x18c2,0x39c6,0x2945,0x10a3,0x2986,0x29a6,0x2186,0x2987,0x426a,0x39e7,0x39e8,0x3a09,0x31a8,0x39c8,0x1023,0x8c51,0x73cf,0x634d,0x7c30,0x8430,0x8430,0x73ae,0x7c30,0x73ae,0x8430,0x8c92,0x73f0,0x428a,0x426a,0x3a49,0x3a08,0x31c7,0x31a6,0x4229,0x4a4a,0x6b8f,0x8493,0x6bf1,0x7411,0x6baf,0x6bb0,0x5b2f,0x52ee,0x5b2e,0x636f,0x6b6f,0x634f,0x5b2e,0x73af,0xa576,0x73f1,0x7c11,0x18c3,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x18c3,0x18a3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x1082,0x1062,0x0861,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a3,0x10a2,0x1061,0x1061,0x1061,0x18e3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x3186,0x8c93,0x6390,0x6bf2,0x6bd0,0x8451,0x8452,0x8493,0x7411,0x6bd0,0x636e,0x73d0,0x73d0,0x6baf,0x8452,0x8472,0x7410,0x4aec,0x4aac,0x422a,0x31a7,0x4208,0x3a08,0x426a,0x426a,0x4a8b,0x6b6e,0x52ab,0x5b0d,0x4a8b,0x52cb,0x4a8b,0x5acc,0x52ab,0x3a08,0x5b0c,0x426a,0x3a08,0x39e8,0x2146,0x31c7,0x29c7,0x4249,0x31a7,0x528b,0x424a,0x31e7,0x3a08,0x2166,0x2987,0x2986,0x2966,0x2986,0x31a7,0x2986,0x4249,0x6b6f,0x31e9,0x31c8,0x2125,0x2145,0x10e3,0x1904,0x1904,0x2125,0x1905,0x08a4,0x18c4,0x1084,0x18e4,0x2105,0x18e4,0x1063,0x18c5,0x20e5,0x0842,0x2125,0x2104,0x2104,0x2125,0x3186,0x31c7,0x0882,0x4208,0x4a49,0x31a7,0x1904,0x18e3,0x10c2,0x10e3,0x2145,0x18e3,0x2145,0x1904,0x10a2,0x18e3,0x2124,0x2124,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x10c3,0x18e3,0x2145,0x2966, +0x18c3,0x10c2,0x10c2,0x10c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x18e4,0x2145,0x2124,0x1904,0x18e3,0x10c3,0x18e3,0x18e3,0x10c3,0x18c3,0x2965,0x2965,0x1904,0x2124,0x18c3,0x18e4,0x31c7,0x18e4,0x18c4,0x4a29,0x630c,0x31c7,0x31c8,0x41e8,0x41e9,0x3187,0x424a,0x4a6a,0x31c8,0x2987,0x31c7,0x1904,0x2124,0x1903,0x1903,0x18e4,0x2146,0x2145,0x1904,0x2124,0x1924,0x3186,0x39c6,0x2104,0x2965,0x31c7,0x29a7,0x2986,0x31a7,0x4a6a,0x31a6,0x29a7,0x31e8,0x29c7,0x31c8,0x2966,0x5aed,0x31a8,0x52cc,0x3a09,0x52ac,0x5aed,0x73af,0x5b0c,0x632d,0x73af,0x632d,0x6baf,0x4a8a,0x428a,0x4249,0x3a08,0x31c7,0x2966,0x39e8,0x4a6b,0x4a8b,0x52ed,0x52ed,0x5b0e,0x6b8f,0x52ed,0x4acd,0x428c,0x634e,0x73d0,0x4aac,0x5b2d,0x5b6e,0x6baf,0x6bb0,0x636f,0x73d0,0x18e3,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x0861,0x0882,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1062,0x0861,0x0861,0x1061,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1081,0x0861,0x0861,0x1061,0x0861,0x1061,0x0861,0x0861,0x1062,0x1062,0x1061,0x0861,0x1061,0x1082,0x18c3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x2945,0x634f,0x636f,0x5b0e,0x5b2e,0x5b2e,0x6b6f,0x8473,0x73d0,0x5b0e,0x52ed,0x636f,0x6b8f,0x7c11,0x8452,0x8c73,0x7c11,0x5b2e,0x428b,0x424a,0x2966,0x4228,0x4229,0x424a,0x424b,0x422b,0x3a0a,0x4a6b,0x3a0a,0x424a,0x422a,0x3a09,0x31e9,0x3a09,0x52ec,0x4a8a,0x4209,0x5aec,0x52cb,0x2986,0x31c8,0x29a7,0x4a6a,0x31c8,0x4229,0x31c8,0x2986,0x2986,0x2966,0x2145,0x2145,0x2145,0x2966,0x2966,0x2966,0x2125,0x2947,0x39e8,0x2987,0x2124,0x1904,0x18e3,0x1904,0x2145,0x2104,0x1904,0x1904,0x18e4,0x18c3,0x10e3,0x2125,0x1905,0x18e4,0x18a3,0x10a3,0x18c3,0x10a3,0x18c3,0x2104,0x2125,0x18e3,0x10c2,0x31a6,0x52aa,0x39c7,0x2945,0x2125,0x2125,0x1904,0x1904,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x3186,0x2986,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965, +0x18c3,0x10c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x10c3,0x10a3,0x10c3,0x10c3,0x10a3,0x18e4,0x18e4,0x2104,0x2145,0x2124,0x2124,0x1904,0x18e3,0x18e4,0x1904,0x18e3,0x18e3,0x31c7,0x2965,0x18e3,0x2124,0x18e3,0x18e4,0x18c3,0x2104,0x2104,0x18c3,0x0000,0x2125,0x2945,0x20e4,0x2105,0x2946,0x2125,0x18e3,0x1904,0x2125,0x2124,0x2144,0x2124,0x2104,0x18e3,0x2125,0x2966,0x2125,0x1904,0x2104,0x2945,0x2965,0x3165,0x2965,0x31a6,0x31c7,0x2986,0x2986,0x31a7,0x4a6a,0x31a6,0x31c7,0x3a08,0x3208,0x3a28,0x31e8,0x2167,0x31a8,0x31a8,0x31a8,0x2987,0x2967,0x31c8,0x3a2a,0x422a,0x39e9,0x4a6b,0x4a6b,0x4249,0x4aaa,0x4a8a,0x4249,0x3a08,0x2124,0x4a6a,0x6baf,0x4aec,0x428b,0x4a6b,0x52cd,0x6bd0,0x5b2d,0x52ec,0x634e,0x638e,0x6baf,0x5b4d,0x73f0,0x6baf,0x5b4d,0x5b4e,0x5b0e,0x5b2e,0x18c3,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a2,0x18a2,0x20e3,0x2924,0x4209,0x4209,0x3a09,0x31c8,0x39c9,0x39c9,0x420a,0x420a,0x528c,0x4a4a,0x4209,0x422a,0x422a,0x4a6b,0x632e,0x738e,0x630c,0x52aa,0x4228,0x2945,0x2125,0x2125,0x2946,0x2967,0x2147,0x2146,0x2966,0x2966,0x2966,0x2986,0x2125,0x2125,0x2125,0x2966,0x2966,0x2125,0x2945,0x2986,0x1904,0x1904,0x2145,0x10e4,0x18e4,0x632d,0x52ab,0x4208,0x4208,0x39e7,0x3a07,0x3a08,0x31a6,0x39c7,0x39e7,0x4228,0x4228,0x39e8,0x4a69,0x39e7,0x18e3,0x18c2,0x2124,0x2965,0x2986,0x2145,0x18e3,0x10c3,0x18c3,0x2104,0x1904,0x18e3,0x2104,0x18e3,0x2144,0x2144,0x2945,0x2124,0x2144,0x2945,0x2966,0x2104,0x1903,0x31c6,0x4249,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x2985,0x31c6,0x2985,0x2985,0x31c6,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x2986,0x31a6,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x3186,0x3186, +0x1904,0x1904,0x1904,0x1904,0x1903,0x18e3,0x1904,0x1904,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18e4,0x10c3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x29a6,0x2965,0x10e3,0x10a2,0x10a2,0x18e3,0x10c2,0x10a2,0x10a3,0x18c3,0x18e4,0x18e3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e3,0x18c2,0x10a2,0x10c3,0x1081,0x18c2,0x18c3,0x10a2,0x2124,0x2165,0x2965,0x2165,0x2945,0x2945,0x2124,0x2145,0x31a6,0x39e7,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x2145,0x2965,0x3186,0x2986,0x2966,0x2146,0x2966,0x2125,0x2125,0x2125,0x2145,0x1905,0x2125,0x2987,0x2987,0x2987,0x31a7,0x3187,0x2946,0x3187,0x3187,0x2125,0x2125,0x2104,0x4a29,0x5acc,0x4a8a,0x5aec,0x4229,0x4229,0x3a09,0x3a09,0x3a2a,0x424a,0x3a09,0x424a,0x4a6b,0x424b,0x31e9,0x29c9,0x39ea,0x39e9,0x4209,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0862,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x0861,0x1082,0x18a2,0x18c2,0x20e3,0x2924,0x528a,0x4a8a,0x4a49,0x4a6a,0x424a,0x424a,0x424a,0x426a,0x4a6a,0x4249,0x4229,0x4249,0x4a49,0x4228,0x5aeb,0x5aec,0x52ab,0x4a8b,0x4a8a,0x3186,0x39c6,0x31c6,0x31c6,0x2124,0x39e7,0x31a6,0x4208,0x39e7,0x39c7,0x39c7,0x31e7,0x3207,0x31e7,0x31c6,0x31c7,0x29a6,0x29a6,0x3a08,0x3a07,0x31c6,0x29a6,0x2986,0x31a7,0x39e7,0x4208,0x39e7,0x39c7,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31e6,0x3a28,0x3a07,0x39e7,0x31e6,0x3a07,0x4269,0x31e7,0x29a6,0x31c6,0x31e7,0x31e7,0x31c6,0x31c6,0x39e7,0x31e6,0x3a07,0x39e7,0x2986,0x39e7,0x39c7,0x31a7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c6,0x31a6,0x29a6,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x31c7,0x2986,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x3186,0x2986,0x2145,0x31c7,0x3186,0x2985, +0x2985,0x2986,0x2965,0x2965,0x2145,0x2965,0x2986,0x2165,0x2165,0x2124,0x2144,0x2945,0x2945,0x2965,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2144,0x2986,0x2144,0x2965,0x2965,0x2145,0x2124,0x2145,0x2965,0x2945,0x31a6,0x31a6,0x2985,0x2124,0x2145,0x2165,0x2144,0x2144,0x2945,0x2145,0x2144,0x2144,0x2124,0x18c3,0x2125,0x2165,0x2986,0x2165,0x2945,0x2965,0x2165,0x2144,0x31a5,0x2123,0x2124,0x29a6,0x29a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31e7,0x31c7,0x3a08,0x31c7,0x31e7,0x31e7,0x31a7,0x2145,0x2965,0x2985,0x2144,0x2965,0x2124,0x2144,0x31c6,0x2985,0x2965,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a6,0x4228,0x3a07,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x4208,0x4a6a,0x4a8a,0x528b,0x4a8a,0x4269,0x4249,0x4229,0x4249,0x4a69,0x426a,0x424a,0x4a4a,0x4a6a,0x4a8a,0x426a,0x426a,0x52aa,0x4a69,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a3,0x18c2,0x20e3,0x2104,0x4249,0x4228,0x4a28,0x4228,0x3a08,0x4229,0x39e8,0x4a49,0x4a69,0x3a08,0x4228,0x4249,0x4a49,0x4229,0x3a09,0x3a09,0x39e8,0x4229,0x4229,0x52cb,0x4249,0x4248,0x4249,0x39e7,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x4a49,0x3a07,0x3a28,0x3a49,0x3a08,0x4228,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4208,0x4208,0x3a08,0x39c7,0x31c7,0x31c7,0x39e8,0x4228,0x4228,0x31c7,0x4269,0x4208,0x528a,0x4249,0x4248,0x3a28,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31e7,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2985,0x2965,0x2986,0x2985,0x31a6,0x31a7,0x3186,0x3186,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3a07,0x29a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a7,0x31a7,0x2986,0x2986, +0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2985,0x29a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x39c7,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x3186,0x39e7,0x31a6,0x3186,0x31a6,0x39c7,0x3a07,0x3a27,0x4248,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x4228,0x39e7,0x4289,0x3207,0x3a27,0x4269,0x4228,0x4a69,0x4207,0x4248,0x4228,0x4a49,0x4248,0x4a89,0x3a28,0x31e7,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x39e7,0x4229,0x4228,0x31a6,0x31e7,0x3a08,0x31c7,0x29c7,0x31c7,0x31a6,0x31c6,0x4a68,0x4227,0x31e6,0x4248,0x3a28,0x3a28,0x4248,0x3a08,0x4248,0x4a69,0x4249,0x4249,0x52aa,0x4a8a,0x3a28,0x4249,0x52cb,0x528a,0x4249,0x4228,0x4249,0x52cb,0x4a69,0x4a69,0x4a8a,0x4229,0x4209,0x4a69,0x52ca,0x52aa,0x4269,0x4a8a,0x52cb,0x5aeb,0x5aeb,0x4a8a,0x52ca,0x52aa,0x18c2,0x1082,0x1081,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x18a3,0x18c2,0x20e3,0x2104,0x4a6a,0x4a6a,0x4249,0x4229,0x4a49,0x4229,0x4229,0x528a,0x528a,0x4249,0x4249,0x4a6a,0x528a,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4a8a,0x4a69,0x4a69,0x4a8a,0x4248,0x4248,0x4228,0x4228,0x4208,0x4229,0x3a08,0x4228,0x3a08,0x3a29,0x3a09,0x39e8,0x3a08,0x3a27,0x39e7,0x3a08,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x4208,0x39e7,0x31c7,0x4228,0x39e7,0x31c7,0x4228,0x39e8,0x4229,0x39e7,0x3a08,0x39e8,0x39e8,0x4208,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x31c7,0x3a28,0x31c7,0x39e7,0x39e8,0x4228,0x31e7,0x31a6,0x39e7,0x39e7,0x3a08,0x39e8,0x31c7,0x39e8,0x31a7,0x31a6,0x3a07,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x31a7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x39c7,0x31a6,0x39e7,0x39c7,0x3186,0x2966,0x31c7,0x4228,0x31a6,0x39e7,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x29a6,0x31c7,0x31a7,0x29a6,0x31a6,0x31c7, +0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c7,0x31a7,0x31a6,0x29a6,0x29a6,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31c7,0x31a6,0x2966,0x2966,0x31a6,0x31a6,0x31c7,0x39e7,0x31e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x31a7,0x39e8,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x39e7,0x39e7,0x31a6,0x3a07,0x3a08,0x31c6,0x3a08,0x52aa,0x31a6,0x4269,0x4269,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x3a08,0x4a69,0x52ab,0x4228,0x4a8a,0x4248,0x31e7,0x31c7,0x3a07,0x3a08,0x31c7,0x39e7,0x3a08,0x39e8,0x4a49,0x4229,0x4228,0x4228,0x3a08,0x3a08,0x31c7,0x31a7,0x31a7,0x39c7,0x4a69,0x52aa,0x3a08,0x4a49,0x4208,0x3a08,0x3a08,0x3a08,0x4228,0x4a89,0x4249,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4a8a,0x4a49,0x5acb,0x5acb,0x632d,0x5aec,0x52aa,0x52cb,0x4249,0x52aa,0x632d,0x4a8a,0x52cb,0x4a6a,0x424a,0x4a49,0x4a8a,0x528a,0x4a6a,0x4a49,0x528a,0x5aec,0x18c2,0x1082,0x1081,0x1061,0x1062,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1081,0x1081,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18e3,0x18e3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x18a2,0x10a2,0x18c2,0x18e3,0x2104,0x52aa,0x5aeb,0x4229,0x4a8a,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a49,0x4228,0x4228,0x4a69,0x4269,0x4a69,0x52cb,0x52ab,0x528a,0x4a6a,0x4a69,0x39e7,0x4a49,0x4a49,0x39e7,0x4a49,0x39e7,0x39e7,0x4208,0x39e7,0x3a08,0x4229,0x31c7,0x4228,0x3a08,0x39e7,0x31c7,0x39e8,0x39e8,0x39e7,0x3a07,0x3a07,0x4208,0x3a08,0x3a07,0x39e8,0x4228,0x3a08,0x39c7,0x4228,0x39e8,0x39e7,0x3a08,0x31e7,0x31c7,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x31c8,0x3a08,0x39e7,0x39c7,0x3a08,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31a7,0x31c7,0x39e7,0x39e8,0x31a7,0x31c7,0x39e7,0x31c7,0x31a6,0x39c7,0x39c7,0x39e8,0x31a7,0x31c7,0x39e8,0x31c7,0x39c7,0x31a7,0x3187,0x31c7,0x39c7,0x31a6,0x31a6,0x39a7,0x39c7,0x528a,0x2986,0x29a6,0x2986,0x29a6,0x31a6,0x39e7,0x3186,0x31a6,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x2986, +0x2985,0x2986,0x2965,0x2966,0x2966,0x2986,0x2986,0x2986,0x31c7,0x2985,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x4249,0x31c7,0x2145,0x2986,0x31c7,0x31c7,0x3a08,0x31e8,0x2986,0x31a7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x2986,0x31a7,0x31a7,0x2986,0x39e8,0x39e7,0x3186,0x39e8,0x39c7,0x39c7,0x39c7,0x3a08,0x3a08,0x4248,0x39e7,0x39e7,0x4249,0x4a8a,0x39e8,0x31e8,0x39e8,0x39e8,0x4249,0x4208,0x4a69,0x4228,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x3a28,0x31e7,0x3a08,0x3a28,0x4229,0x3a08,0x39e8,0x4a69,0x4a49,0x4a69,0x4aaa,0x31c7,0x39e8,0x39e7,0x39e8,0x4229,0x3a29,0x424a,0x4a8b,0x3a29,0x3a29,0x39e8,0x4249,0x4a6a,0x4a69,0x4248,0x4249,0x4208,0x4a49,0x52ab,0x4a49,0x4a6a,0x5aeb,0x5acb,0x52ab,0x630c,0x4a69,0x528a,0x5aeb,0x4a69,0x5b0c,0x73cf,0x52cb,0x52eb,0x4a69,0x4a49,0x52aa,0x528a,0x4a8a,0x5acb,0x5aec,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1061,0x1062,0x1062,0x1082,0x10a2,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x18c2,0x18c3,0x2103,0x2103,0x2103,0x2123,0x2103,0x20e3,0x20e3,0x18e3,0x18c2,0x18c2,0x18c3,0x18e3,0x20e3,0x18e3,0x2103,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e3,0x2103,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18e3,0x2103,0x18c2,0x0861,0x0861,0x0861,0x18c3,0x2965,0x2924,0x2103,0x2103,0x2123,0x2924,0x2924,0x2124,0x2104,0x2924,0x2944,0x2944,0x2944,0x2944,0x2964,0x2965,0x2944,0x3164,0x2104,0x10a2,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x2104,0x4a89,0x4a8a,0x4a49,0x4a49,0x52cb,0x52eb,0x4a8a,0x4228,0x4a49,0x4208,0x4208,0x4a49,0x4228,0x4228,0x4a69,0x4248,0x4228,0x5acb,0x4a8a,0x3a08,0x4229,0x4228,0x4208,0x4a69,0x4208,0x4249,0x4a49,0x3a07,0x4249,0x4a49,0x4208,0x39e7,0x39c7,0x4228,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4208,0x4229,0x31c7,0x4a69,0x39e7,0x31c7,0x3207,0x31c7,0x39e7,0x4229,0x39e8,0x4208,0x39e8,0x39c7,0x31c8,0x31c8,0x31c7,0x39c7,0x4228,0x31e7,0x4228,0x3a08,0x31a7,0x39e7,0x4248,0x39c7,0x39c8,0x39c7,0x31e7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x39e8,0x39e7,0x31c7,0x31a7,0x31a6,0x31e7,0x31c7,0x31a6,0x31a7,0x31c7,0x39e7,0x39e7,0x29a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3186,0x31c7,0x31a7,0x39e7,0x39c7,0x39c7,0x31a7,0x39c7,0x31c7,0x2986,0x31c7,0x31a6,0x31c7,0x31a6,0x3186,0x39e7,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x2985, +0x39c7,0x39e7,0x3186,0x2966,0x2966,0x2966,0x29a7,0x29a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31e7,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x29a6,0x31a6,0x39c7,0x31a7,0x39e8,0x31c7,0x3186,0x31a6,0x31a7,0x39c7,0x31a7,0x31e7,0x31c7,0x31a6,0x2986,0x31c7,0x4a49,0x31a7,0x31c7,0x4228,0x4269,0x31c7,0x31c7,0x3a09,0x3a09,0x31c8,0x31c7,0x31c7,0x31c7,0x3a08,0x4208,0x4249,0x4228,0x3a07,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4269,0x4208,0x4208,0x4228,0x3a28,0x39e7,0x39e7,0x4229,0x3a09,0x31e8,0x4249,0x426a,0x3a29,0x4249,0x3a08,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x52aa,0x4229,0x4229,0x4a8a,0x4249,0x630c,0x528a,0x4229,0x4a49,0x4a49,0x4a49,0x52aa,0x4a49,0x5acb,0x528a,0x52aa,0x52ca,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x528a,0x630d,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x10a2,0x2103,0x2944,0x2944,0x2944,0x2964,0x2944,0x2924,0x2944,0x2124,0x2103,0x2124,0x2124,0x2944,0x2944,0x20e3,0x2924,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e4,0x2103,0x18c3,0x2104,0x2124,0x2104,0x2924,0x2124,0x2103,0x2103,0x2103,0x2124,0x2124,0x2124,0x2104,0x2944,0x2103,0x18c3,0x2104,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x3165,0x2124,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2944,0x2944,0x2965,0x3165,0x3185,0x3185,0x39a6,0x3185,0x2103,0x2944,0x2104,0x10a2,0x0861,0x0861,0x1082,0x1082,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x52cb,0x4a4a,0x5aec,0x52aa,0x52aa,0x52aa,0x52aa,0x4a6a,0x4249,0x4a49,0x3a08,0x4269,0x5aeb,0x4228,0x4248,0x528a,0x4a8a,0x4249,0x4249,0x4a8a,0x4269,0x4228,0x4249,0x4a8a,0x4228,0x3a28,0x4249,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4248,0x4249,0x3a08,0x3a08,0x3a08,0x39c7,0x3a07,0x39e7,0x39e8,0x39c7,0x39e8,0x39e8,0x31a7,0x3a08,0x39e8,0x4208,0x4208,0x39c7,0x39e7,0x31c7,0x31c7,0x31c8,0x31c7,0x39e7,0x39e8,0x39c7,0x31c7,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x39c7,0x3a08,0x39e7,0x39c7,0x31c7,0x31c7,0x31a6,0x4228,0x3a08,0x31c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e7,0x39c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x39e7,0x31a6,0x39e7,0x39c7,0x31c7,0x3186,0x4228,0x4208,0x2986,0x31a7,0x2986,0x31c7,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x2965,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x2966,0x2966,0x2965, +0x31a7,0x31a7,0x3186,0x2986,0x3166,0x2965,0x31c7,0x31e7,0x31c7,0x3186,0x31a6,0x31c7,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x31a6,0x2986,0x31a6,0x2966,0x31a6,0x39e7,0x31a6,0x3186,0x3186,0x2966,0x31c7,0x29a7,0x31a6,0x39e7,0x31a6,0x31a6,0x2986,0x31e7,0x31c7,0x3a07,0x31e7,0x39e7,0x4208,0x31c7,0x31e7,0x31c7,0x31a7,0x31a7,0x3187,0x39e8,0x39e8,0x31c7,0x39c7,0x4228,0x39e7,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x39e7,0x3a08,0x31c7,0x3a28,0x3a08,0x39e8,0x39e8,0x4208,0x39c7,0x3a08,0x4249,0x3a28,0x3a28,0x39e8,0x3a08,0x4249,0x39e7,0x4228,0x4249,0x4229,0x4228,0x3a08,0x4228,0x4229,0x4229,0x528a,0x528a,0x4249,0x4a8a,0x4a69,0x3a08,0x528a,0x4208,0x528a,0x526a,0x4a49,0x528a,0x4229,0x4a8a,0x4a49,0x4229,0x4a8a,0x4229,0x4a4a,0x4229,0x4a69,0x52aa,0x4a6a,0x528b,0x4aab,0x4a8a,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x0861,0x2103,0x2924,0x2924,0x2924,0x2924,0x2124,0x2924,0x2924,0x2124,0x2103,0x2124,0x2924,0x2924,0x2944,0x2103,0x18a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x2924,0x1082,0x18c3,0x18c3,0x1061,0x0861,0x0861,0x18a3,0x18e3,0x18c3,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2944,0x2965,0x3165,0x3186,0x3186,0x18c2,0x18a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x1082,0x18a2,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x4a8a,0x52ab,0x4249,0x4a6a,0x4a8a,0x4249,0x4a8a,0x4a8a,0x4228,0x4248,0x4269,0x4aaa,0x4aaa,0x4a69,0x52aa,0x4a69,0x4a69,0x5acb,0x528a,0x4a8a,0x4a69,0x4a69,0x4249,0x4a6a,0x4a69,0x4249,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4249,0x39e8,0x4229,0x4228,0x39e7,0x4248,0x39e7,0x39e7,0x3a08,0x39c8,0x31c7,0x4208,0x39c7,0x4208,0x39c7,0x39e8,0x4229,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x4a69,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x4208,0x4229,0x39e8,0x4228,0x4249,0x39c7,0x3186,0x39c7,0x39e7,0x39e7,0x3a28,0x2986,0x31a7,0x31c7,0x3a08,0x3a07,0x3a08,0x4249,0x39e7,0x31c7,0x4208,0x31a7,0x31a6,0x3a08,0x31a7,0x31a6,0x31a6,0x31c6,0x4248,0x31a6,0x31a6,0x31c7,0x31c7,0x31a6,0x39e7,0x3186,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x29a6,0x2986,0x3a08,0x31a7,0x2986,0x2965, +0x2986,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31c7,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x39c7,0x39a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31c7,0x39c7,0x31a6,0x31a6,0x31e7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x31e7,0x39e7,0x39e8,0x4208,0x31c7,0x39c7,0x3a08,0x31a6,0x31c7,0x4228,0x3a08,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x4208,0x3a28,0x39e7,0x3a08,0x4229,0x39e8,0x41e8,0x4209,0x4209,0x4249,0x3a08,0x39c7,0x4229,0x3a08,0x39c7,0x3a08,0x3a08,0x31e8,0x39e8,0x39c8,0x4209,0x39e8,0x3a08,0x4a6a,0x4a49,0x4208,0x4a49,0x4a49,0x4249,0x4a49,0x4229,0x4a6a,0x52ab,0x4a49,0x4249,0x4a69,0x4a6a,0x4a8a,0x4228,0x52aa,0x528a,0x4229,0x4a49,0x4249,0x4a69,0x4208,0x4a69,0x3a48,0x4229,0x4229,0x4229,0x4a29,0x4a69,0x4a6a,0x4a6a,0x4a69,0x3a08,0x10a2,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x0841,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2104,0x2924,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0821,0x18a2,0x2103,0x2104,0x2104,0x2104,0x2104,0x2123,0x2963,0x2943,0x2103,0x2104,0x2104,0x2104,0x2124,0x2924,0x0861,0x1082,0x10a2,0x0861,0x0861,0x1061,0x1082,0x0861,0x1082,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x3165,0x18a2,0x0841,0x1062,0x1062,0x0861,0x1082,0x1082,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x4a6a,0x4a8a,0x52ab,0x52cb,0x4249,0x4a8a,0x634d,0x4228,0x4a69,0x4269,0x4aaa,0x4aaa,0x4a6a,0x528a,0x5b0c,0x4a69,0x4a8a,0x52cb,0x4a49,0x4a69,0x4229,0x4229,0x4249,0x4229,0x4a49,0x4229,0x4208,0x4228,0x4228,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x4229,0x4228,0x4228,0x4228,0x4229,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4249,0x3a08,0x39c7,0x3a28,0x4249,0x3a08,0x3a08,0x3a28,0x4249,0x3a08,0x4249,0x39e8,0x4228,0x4a6a,0x4208,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x2986,0x4208,0x3a08,0x31a6,0x4208,0x3a08,0x31c7,0x3a07,0x39e7,0x31a7,0x2986,0x31c7,0x39e7,0x39e7,0x4249,0x31c6,0x31c6,0x4228,0x39e7,0x4208,0x39e7,0x31e7,0x3a07,0x31c7,0x31a6,0x3a28,0x31a7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x39c7,0x31c7,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x2986,0x2945,0x3186, +0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x31a7,0x31c7,0x2966,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31c6,0x31c6,0x2986,0x31a6,0x31c7,0x3186,0x31c7,0x31e7,0x31c7,0x31e7,0x3a28,0x31a7,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a08,0x4228,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4269,0x4228,0x39c7,0x41e8,0x4208,0x4228,0x4249,0x3a08,0x31c7,0x31c7,0x39e8,0x3a08,0x4208,0x4229,0x31c7,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x39c7,0x4228,0x39e8,0x39e8,0x3a08,0x31a7,0x4249,0x3a08,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4249,0x4249,0x4249,0x3a09,0x426a,0x3a28,0x3a08,0x4249,0x4aaa,0x4269,0x4228,0x4249,0x424a,0x4a8a,0x4249,0x4249,0x52aa,0x4a69,0x52ab,0x4229,0x4249,0x4a69,0x4a49,0x4a69,0x528a,0x4a49,0x4228,0x4a49,0x4228,0x10a2,0x1081,0x1061,0x1081,0x1081,0x0861,0x0861,0x10a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0020,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2944,0x2124,0x2104,0x2104,0x2104,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x4203,0x5a63,0x5263,0x39a3,0x2124,0x2124,0x2104,0x2124,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x1062,0x0041,0x1082,0x2104,0x2124,0x2124,0x2104,0x2124,0x2924,0x41e5,0x2964,0x4205,0x3184,0x2945,0x2945,0x2945,0x2945,0x18a2,0x0841,0x0841,0x0861,0x0861,0x1062,0x1062,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2924,0x52aa,0x52ab,0x5acb,0x52cb,0x52cb,0x4a8a,0x4a6a,0x4229,0x4a8a,0x4a8a,0x52cb,0x52aa,0x52cb,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4229,0x4a8a,0x52aa,0x4229,0x3a08,0x4a6a,0x4228,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4a49,0x4229,0x4228,0x4a69,0x4a6a,0x4249,0x4229,0x424a,0x4249,0x4a6a,0x4229,0x39e7,0x3a07,0x3a28,0x3a08,0x39e8,0x4249,0x3a28,0x3207,0x31e7,0x3a08,0x31c7,0x4229,0x4a49,0x4228,0x39e8,0x4249,0x4228,0x3a08,0x4249,0x3a08,0x31a7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x3a07,0x31c7,0x31c7,0x31e7,0x29a7,0x31c7,0x31c7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x3a07,0x3a28,0x39e7,0x39e7,0x31a6,0x39e7,0x39c7,0x31a7,0x31a6,0x31a6,0x31a7,0x2966,0x31a6,0x3a08,0x31a7,0x31a7,0x31c7,0x29a6,0x2986,0x31a7,0x39c7,0x31a7,0x2166,0x3186,0x2946,0x2965, +0x2966,0x2986,0x31c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2965,0x39c7,0x31c6,0x2986,0x2986,0x31a7,0x31a7,0x2986,0x3186,0x3186,0x2986,0x2966,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x31c7,0x31e7,0x31a6,0x31a6,0x2986,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3a07,0x3a07,0x31a6,0x31a7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x31a7,0x31c7,0x39c7,0x39e7,0x39e7,0x4a49,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x3a08,0x4208,0x4a8a,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4229,0x39c7,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x39e7,0x3a08,0x3a28,0x3a48,0x4228,0x3a08,0x31c7,0x39e8,0x4229,0x39e7,0x4228,0x52ca,0x4249,0x3a28,0x3a08,0x4269,0x4a8a,0x4269,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4249,0x4a8a,0x52ca,0x52aa,0x4a49,0x4229,0x4a69,0x5b0b,0x4228,0x4249,0x4228,0x4a49,0x52aa,0x4229,0x4229,0x10a2,0x1061,0x1061,0x1061,0x1081,0x0861,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x5244,0x3163,0x2944,0x2124,0x2124,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x31a4,0x7343,0x6ac3,0x7303,0x62c3,0x2923,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x6ae5,0x41e3,0x6ae5,0x41e4,0x2944,0x2945,0x2945,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18c3,0x20e3,0x20e3,0x2924,0x5acb,0x528a,0x4a49,0x4a8a,0x52aa,0x52aa,0x4a69,0x4229,0x4a69,0x52ab,0x5acb,0x4a49,0x4249,0x4228,0x4a8a,0x4229,0x4249,0x4a69,0x4249,0x3a08,0x5acb,0x4a49,0x4229,0x4a8a,0x4a49,0x4249,0x39c7,0x4208,0x4229,0x39c7,0x4269,0x4248,0x39e7,0x39e7,0x39c8,0x39e8,0x4229,0x4a69,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x4208,0x4208,0x4228,0x4249,0x4229,0x4208,0x4208,0x528a,0x4228,0x31c7,0x3a08,0x4208,0x4228,0x4228,0x4a49,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x39e8,0x31c7,0x3a08,0x31a6,0x39e7,0x39e7,0x39c7,0x4a49,0x4208,0x31a6,0x31a6,0x31c7,0x4249,0x31e7,0x31c7,0x3187,0x2986,0x3a08,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x39e8,0x31a6,0x2965,0x39e8,0x39e7,0x39c7,0x3186,0x3186,0x4229,0x3186,0x39c7,0x31a7,0x31a7,0x2966,0x31c7,0x39e8,0x31a6,0x2966,0x39e7,0x3186,0x2966,0x2145,0x2965, +0x31a7,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x4208,0x39a6,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x31c6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x31a6,0x29a6,0x3a08,0x31e7,0x31a6,0x31a7,0x3187,0x31c7,0x39e7,0x31a6,0x31c6,0x39e8,0x31e7,0x31c7,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x4aaa,0x3a28,0x2965,0x31c7,0x2986,0x31c6,0x3a28,0x4228,0x39c7,0x4249,0x3a08,0x39e8,0x3a08,0x31c7,0x39e7,0x4228,0x3a08,0x3a08,0x39e8,0x4a6a,0x4229,0x39e7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x39c7,0x39e8,0x31e7,0x3a08,0x4269,0x3a28,0x4249,0x4228,0x4228,0x4228,0x4249,0x3a08,0x52aa,0x4a89,0x4249,0x3a08,0x4a69,0x4a8a,0x4209,0x4208,0x4249,0x4249,0x4a49,0x4249,0x4249,0x4249,0x52eb,0x5aeb,0x4a49,0x4a49,0x4a49,0x528a,0x4a89,0x3a08,0x4249,0x4229,0x528a,0x4a8a,0x4228,0x4229,0x10a2,0x1061,0x1061,0x1081,0x1081,0x1081,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2944,0x4a24,0x4a03,0x7b44,0x5223,0x5244,0x2944,0x2124,0x2124,0x2924,0x2104,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x5244,0x8ba3,0x41c3,0x5a84,0x8ba3,0x3143,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2104,0x2124,0x2124,0x4a24,0x8384,0x6283,0x8384,0x5224,0x2924,0x2944,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18a2,0x20e3,0x20e3,0x2924,0x4a8a,0x4a8a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x4208,0x4a49,0x52ab,0x4a6a,0x4229,0x4249,0x4a69,0x528a,0x4a69,0x4228,0x4a8a,0x4229,0x528a,0x4a6a,0x4208,0x4228,0x4249,0x4229,0x39e8,0x3a08,0x3a08,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x39a8,0x39e8,0x4228,0x4a69,0x4249,0x31c7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x31c7,0x39e8,0x4208,0x4208,0x4a49,0x39e8,0x4228,0x39e7,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39e7,0x3a07,0x31a6,0x39e7,0x31a6,0x39e8,0x2986,0x31c7,0x31a7,0x39e8,0x39e7,0x31a6,0x31a7,0x31a7,0x3186,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x31a7,0x31a7,0x39c8,0x39c8,0x39e8,0x31c8,0x31a7,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x2966,0x2965,0x31a6,0x2966,0x2966,0x31a6,0x2986,0x2945,0x3186,0x2986,0x2945,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945, +0x2965,0x29a6,0x29a6,0x31c7,0x31c6,0x2965,0x2945,0x31a6,0x39c7,0x3186,0x2966,0x2986,0x2986,0x29a6,0x2986,0x3186,0x31a6,0x2985,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x31e7,0x2986,0x2986,0x2966,0x2987,0x39e8,0x3a08,0x2986,0x29a6,0x29a6,0x2986,0x39e7,0x31c6,0x31e7,0x31c7,0x39c7,0x39c7,0x3a08,0x31c7,0x3a08,0x31e7,0x31e8,0x3a08,0x4228,0x31c7,0x39e8,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x31c6,0x39e8,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x4209,0x4229,0x39e8,0x3a08,0x39e7,0x3a08,0x3a08,0x39e8,0x39c7,0x4208,0x39c7,0x3a08,0x4228,0x39e8,0x3a08,0x4249,0x4249,0x4269,0x3a28,0x4a69,0x3a28,0x4228,0x4228,0x4249,0x4a8a,0x4aaa,0x4249,0x31e7,0x4249,0x4249,0x3a08,0x39e8,0x4209,0x4a49,0x52aa,0x4249,0x4249,0x4249,0x426a,0x4228,0x4a6a,0x4a49,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4249,0x4228,0x4249,0x4228,0x4a69,0x10a2,0x1061,0x0861,0x0861,0x1081,0x1082,0x1081,0x10a2,0x18c3,0x1082,0x1062,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x3164,0x62a4,0x7303,0x8bc3,0x7b43,0x6ae3,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x62a4,0x8383,0x2923,0x49e4,0x93c4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2124,0x2144,0x5a84,0x8bc4,0x6ac3,0x8ba4,0x5204,0x2924,0x2124,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x1082,0x18a2,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4a8a,0x4269,0x3a08,0x4229,0x426a,0x4229,0x4229,0x4249,0x4a69,0x4229,0x4a49,0x4a8a,0x4208,0x39c7,0x4228,0x4a69,0x31c7,0x39e8,0x4249,0x3a08,0x39e8,0x4228,0x4249,0x4229,0x31c7,0x39e8,0x4208,0x31a7,0x31c7,0x39e8,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x31a7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x31e7,0x39e7,0x39e8,0x31a6,0x39c7,0x39c7,0x31c7,0x39e7,0x31c7,0x2986,0x31c7,0x31c6,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x2986,0x2946,0x2966,0x31a7,0x2966,0x2945,0x2966,0x31a7,0x31c7,0x2986,0x2125,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2946,0x2966,0x2966,0x2966,0x2125,0x2145,0x2145,0x2145,0x2965,0x2125,0x2966,0x2965,0x2145,0x2966,0x2124,0x2145,0x2965,0x2125,0x2145,0x2945,0x2125,0x2124,0x2124,0x2124,0x2124, +0x2165,0x2985,0x29a6,0x31c6,0x2985,0x2145,0x2145,0x2966,0x2986,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x2966,0x31a6,0x2966,0x2966,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2966,0x2986,0x31a7,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a7,0x31a7,0x3187,0x2986,0x3186,0x31a7,0x3186,0x3187,0x3187,0x31a7,0x3186,0x31c6,0x3186,0x3186,0x2966,0x3186,0x31a6,0x39c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c7,0x2986,0x39a7,0x39a7,0x31c7,0x29c7,0x31a7,0x39c8,0x39e8,0x31c7,0x3186,0x31a7,0x39c7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x4208,0x3a08,0x39e8,0x4229,0x3a08,0x39e8,0x31e8,0x31c7,0x31c7,0x3a08,0x3a08,0x4208,0x4a49,0x3a08,0x4229,0x4a8a,0x31e8,0x39e8,0x39e8,0x4229,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x3a28,0x10a2,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1062,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2924,0x3164,0x6ac4,0x8363,0x8bc3,0x8383,0x6ae3,0x3164,0x2124,0x2124,0x2925,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2124,0x2104,0x2104,0x2104,0x5a84,0x8363,0x2923,0x4a04,0x8bc4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2104,0x2944,0x62c4,0x8384,0x6ae3,0x8b84,0x41c4,0x2924,0x2124,0x2924,0x2924,0x1082,0x0020,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4229,0x39e8,0x31e7,0x31c7,0x3a28,0x39e7,0x31c7,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x3187,0x3187,0x3187,0x3186,0x31a6,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x3186,0x2986,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x2966,0x2966,0x2986,0x31a7,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x2965,0x2945,0x2966,0x2986,0x31a6,0x2986,0x2145,0x2965,0x2986,0x2965,0x2965,0x2144,0x3186,0x39c7,0x31a7,0x2945,0x2945,0x2945,0x3186,0x2965,0x2945,0x3186,0x31a6,0x2965,0x2145,0x2125,0x2945,0x2125,0x2945,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2104,0x2124,0x2945,0x2125,0x2125,0x2105,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x18e3,0x18e3, +0x2945,0x2124,0x2945,0x2124,0x2145,0x2145,0x2125,0x2945,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2124,0x2144,0x2965,0x2145,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2946,0x2966,0x2986,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2966,0x2986,0x3186,0x2945,0x2945,0x2946,0x2946,0x2966,0x2965,0x2965,0x2945,0x2946,0x2945,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2946,0x2946,0x2966,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x31a6,0x2965,0x2965,0x31a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x3186,0x3186,0x31a7,0x2966,0x31c7,0x2986,0x2966,0x3187,0x39e8,0x3186,0x39c8,0x39c8,0x31c7,0x31a7,0x3186,0x39c7,0x4228,0x31c7,0x39c7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39a7,0x31a6,0x31c7,0x31a7,0x31c7,0x2966,0x10a2,0x1081,0x1081,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x1082,0x0861,0x1062,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2924,0x2124,0x3164,0x62a5,0x72e4,0x8ba4,0x6ac3,0x62a4,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18e3,0x2124,0x2124,0x2104,0x2104,0x4a24,0x8364,0x41c3,0x5aa4,0x7b43,0x3143,0x2124,0x2104,0x2104,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0041,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2924,0x62a5,0x7304,0x62a4,0x7304,0x3184,0x2124,0x2924,0x2924,0x2924,0x1082,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2104,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x31a7,0x31a7,0x31a6,0x2986,0x31a7,0x2986,0x2986,0x31a7,0x2986,0x2986,0x3186,0x31a7,0x2945,0x2945,0x2966,0x2945,0x2945,0x2145,0x2146,0x2146,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2124,0x2165,0x2145,0x2125,0x2125,0x2104,0x2125,0x2945,0x2145,0x2965,0x2125,0x2124,0x2104,0x2104,0x2125,0x2124,0x2124,0x2124,0x1924,0x2124,0x2144,0x2124,0x2145,0x2945,0x2124,0x2125,0x2945,0x2145,0x2125,0x18e4,0x2104,0x2124,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2125,0x2104,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x2945,0x2144,0x2104,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3, +0x2124,0x1904,0x2104,0x1904,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2125,0x18e4,0x2125,0x2986,0x18e3,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2104,0x2104,0x2104,0x2125,0x2145,0x2124,0x2124,0x2125,0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2125,0x1904,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2124,0x2104,0x2105,0x2125,0x2125,0x2124,0x2124,0x2945,0x2945,0x2125,0x2104,0x2124,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2966,0x2125,0x1904,0x2966,0x2965,0x2965,0x2124,0x2125,0x2986,0x2987,0x2987,0x2145,0x2145,0x2966,0x2945,0x2946,0x2946,0x2946,0x2145,0x2986,0x2946,0x2966,0x2945,0x2966,0x2965,0x2945,0x2966,0x2945,0x2125,0x2125,0x2125,0x1082,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0841,0x0861,0x2104,0x2124,0x2924,0x2124,0x2944,0x4a05,0x49e4,0x7305,0x49e3,0x41c4,0x2944,0x2124,0x2124,0x2124,0x20e3,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x18c3,0x2124,0x2104,0x2104,0x2104,0x3984,0x6ae4,0x5a83,0x6ae4,0x5a43,0x2924,0x2124,0x2124,0x2104,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x1062,0x1082,0x0841,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x4a25,0x5224,0x41e4,0x4a04,0x2944,0x2124,0x2124,0x2124,0x2924,0x1082,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x2103,0x2925,0x2125,0x31a6,0x2966,0x2945,0x2145,0x2105,0x2125,0x2966,0x2945,0x2125,0x2125,0x2125,0x2124,0x2945,0x2124,0x2965,0x1904,0x1904,0x1904,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x1904,0x2124,0x1904,0x1904,0x1924,0x2125,0x1924,0x1904,0x2124,0x2125,0x2104,0x1904,0x1904,0x18e4,0x2104,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x1903,0x10c3,0x10c3,0x1903,0x1904,0x18e4,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x18e4,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e4,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e4,0x2124,0x1904,0x18c3,0x18c3,0x1904,0x10e3,0x18e3,0x18e3,0x18e4,0x18e3,0x10a3,0x10c3,0x10a3,0x10a2,0x10c3,0x18e3,0x10a2,0x10a2,0x10c3,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3, +0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x18c3,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x1904,0x18c3,0x18c3,0x1904,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x18e3,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x18e3,0x18e4,0x18e4,0x18e3,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2124,0x18e4,0x1904,0x2104,0x2145,0x2965,0x1904,0x2124,0x2125,0x1904,0x1904,0x18e3,0x1904,0x2145,0x1904,0x2104,0x2104,0x2104,0x1904,0x2125,0x2125,0x1904,0x2124,0x2965,0x2124,0x2945,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1081,0x1081,0x0861,0x1081,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x2124,0x2124,0x2124,0x2124,0x2944,0x3144,0x49e5,0x3144,0x2924,0x2124,0x2124,0x2124,0x2124,0x18c3,0x1081,0x1082,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x18c2,0x2103,0x2104,0x2104,0x2104,0x2924,0x41c4,0x4a04,0x4a04,0x3164,0x2104,0x2104,0x2104,0x2104,0x20e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x20e3,0x2104,0x2104,0x2104,0x2104,0x3164,0x3164,0x2944,0x3164,0x2124,0x2124,0x2124,0x2924,0x2924,0x18c2,0x10a2,0x0861,0x0861,0x0841,0x0841,0x0861,0x18a3,0x10a2,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x20e3,0x1904,0x1904,0x2104,0x18e3,0x18e4,0x18e4,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x18e3,0x18e3,0x2125,0x2104,0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a2,0x18e3,0x18e3,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a2,0x10c2,0x10c3,0x10c2,0x10e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x10c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10a3,0x10c3,0x10c3,0x10c2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x08a2,0x10c3,0x1924,0x18e3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2, +0x18c3,0x18c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x10a2,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18e4,0x18c3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18e3,0x10c3,0x18e3,0x1904,0x18c3,0x18e3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1903,0x18c3,0x18e3,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x1081,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x18c3,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2124,0x2124,0x2924,0x2924,0x20e3,0x20e3,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x20e3,0x2103,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2944,0x2124,0x20e3,0x2103,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2924,0x2104,0x2104,0x2924,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x1082,0x1082,0x18c2,0x20e3,0x20e3,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10a2,0x10a3,0x10a2,0x10a3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c2,0x18e3,0x18e3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1082,0x10a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a3,0x10c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10c2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a1,0x1062,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2924,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2124,0x2924,0x2104,0x2104,0x2924,0x2924,0x2104,0x2944,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x2924,0x2924,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x2924,0x2124,0x18a2,0x0861,0x0861,0x1082,0x2104,0x3165,0x2924,0x2924,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x20e3,0x20e3,0x20e3,0x2103,0x20e3,0x20e4,0x2104,0x2924,0x3165,0x3165,0x2103,0x1062,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x0862,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082, +0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0882,0x1082,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1081,0x1062,0x10a2,0x2104,0x2103,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x20e3,0x2104,0x18e3,0x1061,0x0841,0x0841,0x18c3,0x2104,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x18c3,0x0861,0x0861,0x1082,0x20e4,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x2104,0x2924,0x20e3,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x10a2,0x18c2,0x20e3,0x20e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1082,0x1082,0x0882,0x10a2,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x0861,0x0881,0x0881,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x0882,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0881,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0861,0x0861,0x0882,0x1082,0x1082, +0x1082,0x0882,0x1082,0x0861,0x0881,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x0882,0x0881,0x0882,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0881,0x0881,0x0881,0x0882,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x0882,0x0881,0x0881,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x1082,0x0882,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x0881,0x0882,0x0882,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x1082,0x1082,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x0861,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x18a2,0x18a3,0x1082,0x0861,0x0861,0x0862,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x1082,0x0882,0x0882,0x0882,0x0882,0x0881,0x1082,0x1082,0x0881,0x0861,0x0882,0x0882,0x1082,0x1082,0x0881,0x0861,0x0881,0x0882,0x0882,0x1082,0x0882,0x0881,0x0882,0x1082,0x0882,0x1082,0x0881,0x0882,0x0861,0x0882,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0882,0x1082,0x0881,0x0882,0x0882,0x0882,0x0882,0x0882,0x0882,0x0861,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x0882, +0x0882,0x1082,0x0882,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x1082,0x0881,0x0861,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0881,0x0881,0x1082,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0861,0x0882,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0861,0x0882,0x0861,0x0861,0x0861,0x0882,0x0861,0x0861,0x0882,0x0881,0x0881,0x0881,0x0861,0x0881,0x0882,0x0861,0x0861,0x0881,0x0861,0x0861,0x0882,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x0881,0x0881,0x0881,0x0861,0x0881,0x0881,0x1082,0x0881,0x0861,0x0882,0x0882,0x0882,0x0861,0x0881,0x0882,0x0882,0x0861,0x18c2,0x1061,0x0861,0x1061,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x1082,0x0862,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1082,0x0861,0x0841,0x1081,0x18e3,0x1082,0x10a2,0x1082,0x18c3,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x0881,0x0882,0x0881,0x1082,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x10a2,0x0882,0x08a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0882,0x08a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x0861,0x0881,0x0882,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0861,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0881,0x0882,0x0881,0x0881,0x0881,0x0881,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x0861,0x0882,0x0881,0x0882,0x0881,0x0881,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x1082,0x0882,0x0861,0x0882,0x1082,0x0881,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0881,0x0861,0x0882,0x0882,0x0882,0x0881,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0882,0x1082,0x1082,0x0881,0x2102,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10c3,0x10a2,0x10c2,0x10c2,0x10c3, +0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0881,0x0882,0x0882,0x1082,0x1082,0x1082,0x10a2,0x1082,0x2943,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18c3,0x18c2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10a2,0x10c3,0x18c3,0x10a2,0x10c3,0x10a2,0x18c3,0x10c3,0x10c2,0x10c2,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x3164,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1904,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x1904,0x1904,0x18e3,0x1904,0x1904,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2104,0x2104,0x2103,0x1903,0x1903,0x1904,0x1904,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x2144,0x2144,0x2945,0x2124,0x2124,0x2124, +0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x3184,0x1081,0x1061,0x1061,0x0861,0x1061,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x18c2,0x20e3,0x2104,0x2124,0x1904,0x2124,0x2104,0x2103,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2165,0x2144,0x2145,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2986,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2986,0x31a6,0x29a6,0x2985, +0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x1924,0x1924,0x1924,0x2124,0x2124,0x2104,0x2124,0x1924,0x1924,0x1904,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1924,0x2124,0x1904,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x2144,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x1081,0x1081,0x1081,0x1081,0x1081,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x10a2,0x10a2,0x18c2,0x18e3,0x18c2,0x2103,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2165,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x29a6,0x29a6,0x3186,0x3186,0x2986,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x29a6,0x29c6,0x31c6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29c6,0x31c7,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x39e7,0x3a08,0x4208,0x41e7,0x4207,0x4207, +0x2985,0x2965,0x2986,0x2986,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x2985,0x3185,0x3185,0x2985,0x2986,0x2985,0x2965,0x2985,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2986,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2986,0x2985,0x2986,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2985,0x29a6,0x29a5,0x2985,0x3185,0x3185,0x31a6,0x31a6,0x31a5,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29c6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x29a6,0x2986,0x31a6,0x2986,0x29a6,0x2986,0x3186,0x2985,0x2986,0x31a6,0x29a6,0x2985,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x31a6,0x2985,0x29a6,0x31a6,0x31a6,0x3186,0x39a4,0x1081,0x1081,0x1082,0x1082,0x10a2,0x1061,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x10a2,0x2103,0x1082,0x18a2,0x1082,0x18c2,0x18e3,0x18c2,0x2104,0x39c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4208,0x41e7,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4249,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4228,0x4a28,0x4228,0x4208,0x3a28,0x3a28,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x39e7,0x4207,0x4208,0x4208,0x39e7,0x4208,0x39e7,0x41e8,0x4207,0x4207,0x39c7,0x39e7,0x39e7,0x41e7,0x41e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31a6,0x39a6,0x39a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3165,0x3186,0x3186,0x3165,0x3165,0x2945,0x2944,0x2944,0x3144,0x3145,0x2904,0x20e3,0x2924,0x2944,0x2944,0x2944,0x3145,0x2924,0x2924,0x2924}; diff --git a/MCUME_teensy/teensy5200/memory.h b/MCUME_teensy/teensy5200/memory.h new file mode 100644 index 0000000..1945156 --- /dev/null +++ b/MCUME_teensy/teensy5200/memory.h @@ -0,0 +1,18 @@ +#ifndef __MEMORY__ +#define __MEMORY__ + +extern unsigned char * memory; + +#define MEMORY_GetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_PutByte(addr,byte) Atari_PutByte(addr,byte) + +#define MEMORY_dGetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_dPutByte(addr,byte) Atari_PutByte(addr,byte) +#define MEMORY_dGetWord(x) (Atari_GetByte(x) | (Atari_GetByte((x) + 1) << 8)) +#define MEMORY_dPutWord(x,y) (Atari_PutByte(x,(UBYTE) (y)) , Atari_PutByte(x + 1,(UBYTE) ((y) >> 8)) +/* faster versions of dGetWord and dPutWord for even addresses */ +/* TODO: guarantee that memory is UWORD-aligned and use UWORD access */ +#define MEMORY_dGetWordAligned(x) MEMORY_dGetWord(x) +#define MEMORY_dPutWordAligned(x,y) MEMORY_dPutWord(x,y) + +#endif diff --git a/MCUME_teensy/teensy5200/noise.h b/MCUME_teensy/teensy5200/noise.h new file mode 100644 index 0000000..c93ac89 --- /dev/null +++ b/MCUME_teensy/teensy5200/noise.h @@ -0,0 +1,1059 @@ +const UBYTE POKEY_poly9_lookup[] = { +255,127,63,31,15,135,195,225,240,120,188,222,239,119,59,29, +14,135,67,161,208,104,52,154,205,102,179,217,108,182,219,237, +246,123,189,94,47,23,11,133,194,225,112,56,156,206,103,51, +25,12,134,67,33,144,72,36,18,137,68,162,81,168,212,234, +117,186,93,174,215,235,245,122,61,158,79,39,147,73,164,210, +233,116,58,157,206,231,115,57,28,14,7,3,129,192,224,112, +184,220,238,119,187,93,46,151,203,229,242,121,188,94,175,87, +43,149,74,165,82,41,20,10,5,2,129,64,160,80,168,84, +170,85,170,213,234,245,250,125,190,95,175,215,107,181,90,45, +22,11,5,130,193,96,176,216,236,118,187,221,110,183,219,109, +182,91,173,214,107,53,26,13,6,131,65,160,208,232,116,186, +221,238,247,251,125,62,31,143,199,227,241,120,60,158,207,103, +179,89,44,150,203,101,178,89,172,214,235,117,58,29,142,199, +99,177,88,44,22,139,69,162,209,232,244,250,253,254,127,191, +95,47,151,75,165,210,105,52,26,141,70,163,81,40,148,202, +101,50,25,140,198,99,49,24,12,6,3,1,128,192,96,48, +152,204,102,51,153,76,166,83,169,212,106,53,154,77,38,147, +201,228,242,249,252,126,191,223,111,183,91,45,150,75,37,146, +73,36,146,201,100,178,217,236,246,251,253,126,63,159,79,167, +211,105,180,90,173,86,43,21,10,133,66,161,80,40,20,138, +69,34,145,200,228,114,185,220,110,55,155,77,166,211,233,244, +122,189,222,111,55,27,13,134,195,97,176,88,172,86,171,85, +42,149,202,229,114,57,156,78,39,19,9,132,194,97,48,24, +140,70,35,17,8,132,66,33,16,8,4,2,1,0,128,64, +32,16,136,68,34,17,136,196,98,49,152,76,38,19,137,196, +226,113,184,92,174,87,171,213,106,181,218,109,54,27,141,198, +227,113,56,28,142,71,35,145,72,164,82,169,84,42,21,138, +197,98,177,216,108,54,155,205,230,243,249,124,62,159,207,231, +243,121,60,30,143,71,163,209,104,180,218,237,118,59,157,78, +167,83,41,148,74,37,18,9,4,130,65,32,144,200,100,50, +153,204,230,115,185,92,46,23,139,197,226,241,248,124,190,223, +239,247,123,61,30,15,7,131,193,224,240,248,252,254,255,}; +const UBYTE POKEY_poly17_lookup[] = { +255,1,224,3,254,231,131,241,31,28,254,217,99,142,33,4, +1,24,130,17,28,226,25,90,146,145,61,250,216,123,12,48, +24,227,1,216,131,141,223,227,130,233,157,13,226,59,122,212, +179,149,60,226,90,106,16,210,1,185,147,73,190,119,7,152, +142,217,133,238,227,227,249,89,108,118,190,11,199,103,242,233, +123,109,32,220,130,149,93,242,158,11,132,87,112,170,71,46, +107,238,48,210,66,137,17,10,130,52,76,170,60,158,154,149, +108,226,255,58,80,118,197,187,54,28,174,217,198,222,97,160, +197,26,39,68,12,76,216,28,125,232,125,14,28,220,249,37, +172,137,194,59,57,228,49,214,0,161,17,88,162,149,30,194, +28,72,184,20,59,152,245,105,116,149,191,211,68,234,45,10, +249,132,189,209,96,174,39,38,45,158,184,181,42,192,87,252, +106,87,163,155,252,254,22,146,12,237,201,68,223,125,99,204, +0,148,65,49,151,17,55,82,77,113,142,5,68,75,60,82, +91,17,163,19,124,230,159,50,22,6,77,220,94,85,232,47, +46,189,142,145,5,122,171,67,108,67,238,98,242,227,219,121, +42,84,22,205,253,70,148,201,177,143,152,151,72,166,245,22, +132,108,192,223,124,114,222,3,129,23,122,142,19,36,102,42, +106,246,178,195,94,107,8,80,16,165,113,80,228,229,150,165, +116,1,254,226,211,251,26,88,180,245,51,212,36,229,27,116, +118,143,27,166,86,38,200,206,124,81,238,71,162,171,254,189, +34,80,71,213,218,7,200,143,108,215,175,83,101,242,236,43, +103,37,152,200,185,13,168,155,234,158,59,132,52,64,106,36, +146,106,141,3,34,39,54,44,175,170,244,31,22,94,205,105, +6,181,92,161,172,136,211,41,58,241,103,157,25,163,2,108, +197,142,102,117,155,93,239,78,48,153,243,11,88,151,197,119, +247,152,97,40,69,2,174,228,22,167,92,132,252,192,246,237, +50,245,54,133,62,226,94,42,24,214,81,177,182,9,246,115, +211,208,171,28,157,232,179,239,156,17,32,34,98,102,162,234, +238,59,99,68,128,140,200,145,141,250,179,202,204,89,5,230, +106,98,243,242,201,122,63,2,93,212,255,85,160,174,170,247, +47,16,93,241,175,29,133,106,162,243,126,8,122,176,243,91, +88,50,149,55,83,92,99,141,16,18,0,37,80,72,37,196, +8,4,81,24,39,65,92,70,221,88,55,196,45,84,25,61, +227,73,88,23,197,127,118,152,107,137,65,10,39,100,12,14, +248,156,63,192,124,76,62,124,191,15,133,79,242,187,91,204, +114,180,162,67,127,115,201,113,142,4,84,73,61,70,25,24, +179,1,125,211,205,123,39,128,76,200,29,76,250,60,59,202, +213,200,38,253,159,5,102,107,122,112,243,215,153,50,26,198, +85,208,174,77,135,239,246,177,242,72,106,53,130,73,156,87, +65,186,38,31,191,207,133,195,51,187,212,61,116,56,111,131, +232,142,63,229,44,4,27,184,183,11,212,87,213,250,7,138, +175,236,149,135,82,39,208,76,109,77,12,94,248,57,111,128, +216,136,60,217,234,31,43,142,180,84,34,140,134,112,5,182, +106,199,163,178,109,190,61,167,8,196,81,148,230,65,211,183, +219,212,250,4,186,169,239,169,65,73,23,230,79,50,187,215, +13,114,59,83,69,243,190,9,230,115,242,192,235,61,9,232, +146,254,204,50,181,54,1,126,226,219,122,26,82,21,241,59, +93,164,255,178,208,110,76,27,44,247,42,65,71,246,234,67, +235,51,232,228,158,39,68,13,92,218,29,105,170,116,30,14, +221,204,119,229,184,68,58,45,167,40,196,19,180,102,3,251, +182,153,246,90,66,144,128,41,153,193,43,63,165,45,144,89, +185,38,25,223,195,131,187,191,140,180,81,114,134,131,52,79, +154,58,157,166,83,119,210,201,57,15,128,30,232,188,30,146, +28,237,232,84,159,92,247,204,33,133,17,18,2,5,84,74, +13,64,26,36,117,26,77,229,206,36,209,91,31,66,31,112, +63,23,13,255,234,81,203,22,250,140,59,161,100,8,79,224, +154,110,220,27,5,102,106,106,114,242,195,219,59,10,212,84, +229,252,4,182,105,247,165,177,81,120,38,151,62,199,14,98, +61,18,89,181,231,17,209,50,143,150,118,68,170,44,158,187, +133,44,195,107,58,113,103,149,152,163,8,205,193,134,239,245, +129,244,75,86,243,153,121,170,84,30,76,253,76,53,205,185, +6,24,141,225,2,237,213,132,230,97,211,245,251,84,184,44, +187,235,205,9,7,99,62,32,127,178,217,255,78,16,153,177, +43,216,213,237,118,181,186,193,110,111,43,104,212,150,197,116, +199,158,98,20,131,25,158,210,21,248,170,95,175,74,244,209, +247,222,0,176,1,123,179,193,125,95,12,123,168,113,74,68, +208,140,109,193,205,94,119,200,105,12,21,72,171,36,28,139, +137,142,251,165,168,193,75,63,99,77,16,158,193,37,223,185, +35,72,197,196,198,229,209,213,254,70,146,169,189,137,224,27, +127,198,153,16,58,128,119,120,104,119,166,137,214,123,16,240, +33,255,177,225,120,77,38,254,174,19,103,86,168,41,202,241, +136,108,217,79,79,107,42,112,86,135,217,150,222,196,240,133, +190,227,70,169,25,200,178,188,174,146,119,92,40,61,130,89, +156,118,81,250,7,139,191,238,148,147,16,46,192,94,108,120, +94,23,201,191,110,148,155,145,46,202,255,104,112,215,151,211, +22,202,140,88,145,164,107,243,225,249,93,44,126,186,91,207, +66,178,161,127,185,104,249,71,141,91,162,146,110,204,27,36, +118,42,75,230,242,226,202,107,41,65,64,134,228,68,135,253, +214,148,224,32,207,179,162,76,143,109,198,189,80,112,164,167, +50,101,54,172,175,162,117,31,28,255,201,97,143,53,70,8, +8,144,16,41,176,80,107,20,144,41,185,193,105,31,37,111, +184,88,251,4,185,153,233,170,125,143,12,214,121,49,228,33, +214,33,177,81,121,54,149,63,211,76,107,45,0,88,128,181, +88,224,180,142,130,53,93,184,63,139,204,222,117,224,236,14, +55,109,189,12,177,9,249,131,205,223,103,194,233,24,93,224, +191,62,148,62,193,110,110,59,106,213,130,135,125,215,140,99, +33,209,80,175,84,20,236,233,70,189,89,225,166,172,135,35, +55,53,61,185,233,233,77,13,79,234,58,122,214,147,145,62, +202,222,120,48,246,3,211,55,219,220,123,4,176,8,235,161, +200,201,13,79,235,42,120,215,135,211,55,218,204,121,5,164, +74,226,177,218,200,56,29,162,27,254,214,147,144,46,200,223, +108,114,255,19,193,54,238,142,50,53,54,9,255,226,209,219, +30,90,156,113,33,244,0,231,113,208,228,237,23,165,126,160, +250,234,90,123,0,241,16,237,240,212,174,68,23,253,255,5, +160,11,250,183,139,212,95,84,250,13,43,171,228,28,7,72, +142,116,84,174,77,134,255,244,176,230,10,99,37,144,72,169, +5,8,139,160,30,171,140,156,209,32,174,163,102,45,27,232, +183,174,132,23,113,62,5,47,250,252,59,70,20,200,169,12, +153,137,171,171,237,141,5,67,59,50,85,55,223,157,99,2, +225,20,140,232,144,223,216,50,156,166,81,87,214,203,17,139, +146,62,204,190,116,54,142,143,228,87,183,218,197,232,7,175, +255,164,176,67,90,35,129,84,74,12,80,24,37,97,88,68, +245,220,37,228,9,86,115,153,113,43,84,20,237,249,68,188, +77,163,175,188,149,34,2,103,116,136,111,232,89,78,86,248, +41,111,161,200,200,29,77,234,62,58,222,151,193,54,239,158, +48,52,34,75,246,242,195,218,43,8,213,64,167,245,20,164, +104,194,247,248,96,254,39,131,125,222,28,113,40,101,2,236, +196,150,229,116,133,190,226,86,171,24,220,240,181,190,128,118, +105,122,116,179,223,157,98,18,227,21,152,170,153,207,202,51, +169,244,24,102,80,202,5,200,139,44,223,171,3,109,215,172, +99,99,241,208,237,124,21,174,203,230,251,115,200,96,156,7, +65,31,118,95,27,11,135,102,102,171,122,252,50,215,22,195, +28,74,152,16,57,176,113,123,84,177,189,185,224,120,79,6, +250,172,59,227,68,136,13,200,155,44,254,187,67,76,67,172, +66,114,161,243,120,104,118,182,139,215,111,82,249,49,237,176, +212,42,4,23,120,175,7,36,79,186,58,223,134,211,53,250, +200,123,45,32,88,194,149,216,162,156,143,192,23,253,254,21, +162,10,238,245,130,196,77,85,207,95,98,154,98,29,19,11, +151,102,71,187,58,221,166,215,55,210,76,105,13,4,90,168, +49,74,192,144,140,232,145,207,218,51,136,228,88,71,196,202, +36,217,219,15,74,191,96,117,151,157,247,66,192,129,156,203, +128,155,185,174,152,215,72,34,181,22,1,60,194,91,56,50, +83,87,211,155,27,142,214,116,224,238,46,51,111,149,136,163, +41,221,129,167,123,245,160,229,27,117,102,141,26,178,20,47, +216,220,125,100,188,14,147,45,255,169,97,73,85,198,207,112, +147,214,79,80,155,21,111,218,120,57,102,17,218,131,137,159, +235,134,185,149,40,162,115,126,0,251,176,249,250,92,58,28, +183,73,245,199,149,211,18,138,132,92,193,172,78,179,169,253, +137,100,91,127,67,201,18,190,196,55,245,60,37,42,232,214, +190,64,118,229,187,116,60,46,155,238,223,35,130,101,92,13, +109,202,124,88,126,85,171,31,172,254,178,210,78,72,25,4, +115,56,97,99,244,128,231,121,81,228,231,182,161,118,41,122, +240,243,223,24,50,16,103,81,216,39,205,157,70,82,169,49, +72,224,148,142,192,21,221,250,23,138,142,252,213,166,198,39, +241,93,61,110,153,74,155,33,47,177,76,169,13,136,155,168, +190,187,198,28,65,40,6,50,44,167,42,228,23,182,78,135, +233,150,189,244,48,230,2,226,37,154,233,173,13,129,11,186, +183,15,148,95,209,170,15,175,239,164,145,83,26,2,21,84, +107,29,0,59,176,117,59,92,181,237,177,197,56,7,2,46, +228,30,38,92,142,93,196,254,100,178,239,159,33,38,33,94, +160,185,218,216,56,60,178,91,223,66,147,177,63,152,252,249, +102,156,11,129,7,122,175,3,100,71,190,106,215,163,147,125, +254,28,51,8,229,64,196,197,212,199,212,195,148,203,144,155, +152,190,216,246,220,34,148,7,81,31,87,79,91,42,19,102, +71,186,42,223,167,195,117,219,92,123,12,49,8,225,0,204, +193,132,207,241,131,220,207,68,211,189,123,192,240,140,46,241, +79,29,75,139,34,62,167,15,180,95,147,138,143,237,199,165, +211,113,186,68,63,125,173,45,128,89,152,54,89,254,87,131, +154,174,220,151,196,102,229,155,116,126,14,27,172,247,34,192, +71,252,75,71,227,186,104,254,55,131,92,206,92,80,188,101, +35,253,148,181,112,96,230,166,162,103,63,57,237,161,196,9, +21,67,27,50,23,23,95,223,75,3,163,54,44,174,186,246, +30,2,28,196,121,20,180,105,243,229,185,85,40,46,178,126, +143,10,182,117,55,156,173,225,65,221,87,199,218,34,152,199, +73,19,167,87,52,234,203,106,59,99,69,144,142,201,133,207, +243,163,216,205,108,87,175,91,228,242,230,138,99,45,17,72, +163,164,12,131,41,158,177,37,56,201,227,174,41,199,33,146, +97,61,21,41,187,224,125,31,12,255,232,113,207,20,210,8, +41,129,64,10,37,68,8,12,208,24,45,224,88,78,84,216, +45,109,137,76,218,61,105,232,84,158,76,245,205,53,199,24, +2,16,4,97,24,68,113,156,37,97,89,84,247,221,49,166, +0,70,97,152,68,121,29,37,107,248,80,255,84,177,188,169, +226,121,91,68,243,188,41,226,113,218,68,249,29,45,234,248, +90,94,80,185,53,41,248,208,255,92,48,188,163,67,125,83, +205,115,166,128,70,105,25,68,115,188,33,99,113,208,229,253, +21,164,106,226,243,250,72,122,53,163,89,220,118,213,186,7, +14,239,236,16,215,80,163,148,12,224,25,94,210,153,57,170, +208,94,76,120,28,55,73,253,70,149,217,179,142,140,213,65, +182,231,23,177,62,137,238,250,115,202,64,152,5,105,155,100, +127,63,9,237,194,244,201,118,255,26,81,36,231,58,96,118, +166,139,246,127,18,216,165,237,145,197,122,39,130,108,204,31, +100,126,46,27,238,215,162,130,111,253,9,101,67,252,66,215, +241,179,220,172,116,19,222,199,193,147,191,222,148,240,32,238, +163,226,109,27,109,231,172,0,83,49,179,81,125,118,157,59, +131,68,78,109,72,92,84,253,125,37,172,136,210,57,56,240, +115,223,16,179,16,109,240,220,47,68,29,92,251,13,41,139, +224,30,47,204,156,84,112,172,39,34,109,150,188,229,34,229, +23,180,110,131,235,190,57,230,16,194,0,136,129,8,139,161, +14,169,141,136,147,41,190,177,103,24,73,161,134,40,133,3, +50,39,23,60,239,139,96,31,55,79,157,74,147,161,63,185, +236,185,71,8,11,160,22,42,140,150,112,36,166,42,230,55, +178,76,175,109,132,157,208,50,140,166,112,71,150,234,133,139, +179,47,156,157,225,34,237,151,164,102,35,251,244,185,118,24, +106,145,194,11,57,135,1,22,99,29,16,59,145,101,123,125, +33,237,144,212,104,36,151,58,135,6,102,109,26,124,245,175, +21,5,122,170,83,110,66,250,32,251,243,201,120,31,6,95, +252,123,71,128,138,168,157,139,130,63,253,172,53,3,88,134, +213,84,230,204,2,181,85,49,190,129,103,123,121,97,229,148, +132,96,1,215,114,131,210,46,72,223,100,243,255,25,96,50, +230,7,178,47,159,173,231,33,209,81,191,86,21,248,171,79, +173,75,224,147,254,206,18,177,52,41,250,240,251,94,24,56, +177,99,89,81,167,215,52,226,74,106,49,194,65,152,7,73, +159,102,87,187,27,205,230,246,163,210,109,120,93,39,207,188, +82,82,128,161,24,201,160,158,171,132,29,209,42,15,167,110, +164,155,242,30,10,156,212,113,180,164,35,115,117,177,253,185, +100,56,79,131,170,174,191,167,4,5,89,154,23,77,254,126, +19,202,135,232,135,175,247,37,176,73,251,39,137,221,202,22, +249,188,61,162,88,206,84,208,172,109,131,237,222,53,224,104, +78,55,232,237,14,53,77,185,14,153,141,235,163,233,221,13, +102,123,122,81,227,151,184,166,26,231,68,128,141,216,147,140, +238,241,195,220,75,4,211,56,43,194,116,200,110,124,27,79, +199,234,34,251,247,137,112,27,86,87,217,59,15,132,94,224, +184,78,154,57,173,160,80,75,20,210,9,57,131,65,30,103, +77,24,30,209,45,127,169,105,200,85,204,110,116,155,95,207, +74,50,177,119,25,120,179,199,29,83,10,3,36,70,42,40, +214,50,129,118,106,74,114,176,227,91,121,34,213,22,199,92, +66,156,64,49,149,49,51,80,101,245,156,37,96,73,86,246, +201,115,175,16,84,96,173,22,48,44,163,106,236,19,230,70, +162,169,222,185,32,120,195,199,250,35,202,229,200,69,205,95, +102,218,106,25,67,3,178,38,15,191,238,149,131,18,47,212, +28,101,104,76,22,252,237,39,165,29,144,58,137,230,122,99, +194,224,136,79,233,11,108,215,174,67,103,243,248,105,110,53, +138,201,140,95,225,170,108,159,47,199,45,82,121,49,229,49, +212,32,165,19,112,38,135,62,230,30,34,28,134,89,148,246, +65,242,167,155,245,110,4,155,184,191,138,212,93,116,254,15, +3,47,246,60,35,74,228,208,198,204,65,133,215,114,130,194, +44,73,203,38,250,239,11,97,7,180,78,131,169,158,185,164, +56,195,66,170,33,78,161,136,200,153,13,234,187,106,220,19, +133,118,98,202,98,184,67,75,51,162,69,30,111,205,8,22, +113,61,53,41,249,192,253,93,36,254,170,83,111,82,248,33, +239,177,192,104,13,7,106,174,50,118,6,139,188,222,146,144, +44,232,219,110,90,123,1,225,18,236,228,150,167,84,5,252, +202,87,233,58,124,182,159,151,70,70,233,24,92,240,189,63, +128,124,200,126,124,58,95,135,203,182,251,214,152,32,56,195, +67,186,35,79,181,202,193,137,31,235,142,56,149,34,3,119, +118,137,123,170,80,94,68,249,28,61,232,249,78,28,89,169, +39,40,205,130,182,109,182,189,183,0,100,65,222,102,209,219, +31,74,158,112,53,182,9,247,99,209,209,191,94,148,248,161, +238,169,67,105,19,228,103,182,169,247,41,112,81,247,215,145, +178,10,206,245,192,228,205,23,231,94,32,184,194,91,57,34, +81,86,199,217,18,158,196,117,213,188,103,2,233,148,156,224, +48,207,146,178,12,174,249,198,156,65,32,135,50,38,6,46, +236,158,54,84,46,77,142,126,244,186,71,14,107,172,16,82, +0,161,16,72,160,148,10,128,21,88,170,21,14,202,188,88, +242,148,171,144,93,248,62,31,142,223,228,242,231,154,97,44, +5,10,170,180,30,130,28,204,248,20,190,200,247,237,48,213, +50,135,22,102,76,10,60,212,59,21,36,107,250,112,251,86, +153,56,187,194,93,89,46,87,46,75,238,114,242,194,203,57, +11,192,22,236,236,22,183,92,165,236,128,215,121,50,212,39, +213,29,119,74,73,0,150,96,37,151,56,167,2,100,69,158, +110,213,139,23,111,222,56,49,98,65,210,166,201,215,239,82, +241,176,237,186,117,46,12,158,248,181,174,128,87,121,58,85, +39,223,188,115,66,192,128,140,201,129,143,251,167,136,197,73, +23,231,95,48,186,195,79,123,43,65,68,198,236,64,215,245, +243,212,168,36,27,251,135,137,151,107,150,177,53,56,232,243, +238,8,83,33,179,112,109,54,188,175,131,101,95,61,107,201, +64,158,101,101,157,28,243,8,105,129,196,74,37,193,88,14, +84,92,109,109,12,28,216,185,45,168,217,202,30,121,172,53, +2,72,132,212,64,164,197,18,167,84,4,236,200,86,253,120, +117,166,141,150,115,20,160,41,218,241,169,124,153,110,219,107, +11,97,6,164,76,130,189,220,176,180,42,194,119,248,104,127, +39,137,220,218,20,248,168,127,171,72,220,85,229,254,36,178, +107,223,33,163,113,92,36,253,154,85,108,110,62,58,223,135, +195,55,251,220,57,36,48,74,195,160,138,235,173,9,193,3, +190,231,7,177,31,153,174,219,231,202,97,137,85,74,14,112, +28,39,73,220,86,213,248,39,142,173,196,17,149,114,3,210, +38,201,223,110,82,251,17,233,178,252,174,22,55,92,173,109, +128,221,216,54,220,174,85,7,222,238,81,195,150,234,132,155, +177,46,136,223,232,50,255,150,145,52,106,202,114,184,98,91, +115,131,209,30,78,220,88,53,228,41,86,49,185,241,105,124, +21,175,219,228,250,103,138,105,140,21,64,42,36,22,42,141, +134,114,37,178,104,239,39,160,77,154,63,205,172,86,51,152, +229,105,85,133,255,242,208,234,12,27,169,167,40,197,3,182, +103,23,185,191,137,228,91,119,194,201,24,31,192,63,124,188, +63,131,76,206,125,64,252,68,183,253,181,164,32,67,115,178, +193,127,127,8,121,128,245,88,100,244,142,7,101,95,60,123, +203,65,138,39,108,141,14,242,61,59,200,245,204,36,213,27, +23,70,79,120,26,87,69,251,62,25,238,211,226,138,107,173, +1,64,3,180,70,3,185,150,25,180,114,67,210,162,137,223, +235,2,249,149,173,242,113,250,68,187,61,173,168,208,91,28, +114,25,115,3,209,22,207,220,82,148,224,33,223,177,163,88, +205,100,214,175,81,69,246,238,3,227,55,184,236,187,103,12, +9,136,146,56,172,178,114,78,2,184,132,59,177,100,41,95, +160,187,250,220,58,20,54,73,255,102,145,219,155,10,158,245, +101,180,141,179,35,92,133,237,210,245,248,100,190,47,135,45, +214,57,49,96,97,214,164,225,83,253,114,213,178,135,30,231, +76,0,157,208,51,156,164,113,83,212,227,149,153,178,26,206, +212,208,164,236,131,231,127,49,232,225,206,45,65,73,22,246, +77,51,175,149,4,98,41,82,112,161,247,56,96,114,230,131, +242,47,26,253,229,165,149,17,50,2,71,116,202,79,104,27, +102,87,186,11,207,231,226,225,219,125,106,92,18,157,245,99, +212,129,181,91,208,178,141,190,243,70,136,9,136,147,40,174, +179,102,12,11,168,150,58,132,54,96,110,38,186,238,159,35, +6,37,92,136,61,200,248,28,62,216,255,77,32,159,178,23, +30,206,221,64,182,229,55,181,60,161,106,232,83,238,66,242, +161,251,249,104,124,23,143,223,230,210,227,152,73,168,23,42, +142,182,116,38,142,174,244,23,150,78,197,201,22,255,220,49, +164,32,66,99,176,192,107,61,1,105,146,244,109,54,189,191, +129,100,75,127,98,217,82,159,80,55,212,45,117,9,125,194, +221,88,54,212,47,85,13,127,234,89,74,22,240,45,63,169, +237,136,85,73,62,118,31,27,143,199,102,227,251,120,120,118, +151,155,151,78,198,249,16,252,224,247,191,16,116,96,239,54, +176,110,139,107,174,49,70,0,136,128,24,137,160,26,235,132, +152,129,40,139,227,46,41,207,160,146,107,156,17,33,50,96, +103,182,168,231,43,113,69,181,222,129,160,11,251,167,137,213, +75,22,243,29,57,170,209,78,78,121,8,117,64,237,84,148, +236,225,199,189,83,64,162,164,14,163,45,156,153,161,42,233, +199,172,67,99,179,240,109,62,61,175,137,196,91,53,226,73, +90,55,193,125,94,28,121,169,101,8,77,192,158,108,244,159, +23,70,78,104,24,86,81,185,55,9,252,210,215,216,34,156, +135,65,23,247,95,17,170,131,110,239,43,96,85,150,207,213, +195,150,235,148,153,176,58,202,214,248,32,254,163,195,125,91, +76,115,172,33,66,97,144,196,105,21,133,123,178,208,111,92, +25,45,227,104,72,87,228,235,118,185,122,217,98,159,51,7, +20,78,201,8,30,241,45,61,137,233,138,125,205,44,86,59, +25,229,99,244,129,247,123,80,240,165,191,177,100,40,79,162, +186,238,158,51,4,36,72,202,52,216,234,29,11,138,182,124, +166,158,166,84,7,220,206,85,193,190,110,150,187,149,44,226, +123,122,80,243,149,185,178,88,238,84,146,140,237,193,197,223, +119,194,200,8,29,193,43,62,181,47,145,77,251,47,9,205, +194,182,233,246,189,50,80,102,197,154,38,92,143,77,198,255, +112,240,230,143,51,39,20,12,233,136,92,217,44,127,171,73, +204,87,228,234,102,187,123,205,32,150,35,21,21,123,155,65, +47,119,44,41,202,240,152,110,216,91,13,98,58,98,87,178, +139,223,239,66,241,145,253,250,84,186,12,191,233,229,141,21, +67,26,34,21,22,75,157,66,19,177,55,25,252,243,199,152, +3,8,135,96,6,167,124,132,190,224,118,175,26,244,116,167, +158,164,116,3,222,230,209,211,158,74,148,209,49,190,128,119, +121,120,117,167,157,148,114,0,226,32,202,227,168,73,203,39, +234,237,10,117,69,189,94,145,168,171,235,237,9,69,67,190, +98,87,179,155,221,238,86,179,152,237,232,85,143,94,246,216, +99,140,1,0,3,48,6,3,60,198,27,48,54,3,95,246, +219,83,138,2,60,197,43,54,53,63,153,237,235,101,137,93, +202,30,120,188,55,3,92,198,221,80,182,196,39,245,29,53, +106,201,66,190,97,103,181,152,225,40,77,131,174,238,183,163, +84,13,124,218,95,73,42,54,54,15,159,238,215,163,146,109, +252,29,39,74,236,80,214,196,225,149,157,242,18,202,132,216, +129,172,203,227,171,121,205,36,214,43,17,69,115,190,1,103, +115,248,97,239,53,128,104,136,87,104,42,118,54,139,223,238, +82,243,144,233,184,93,170,30,190,220,183,196,36,197,27,54, +86,15,89,142,87,100,234,110,58,123,199,129,146,43,156,149, +97,50,229,55,180,44,163,107,252,17,231,82,224,160,206,171, +33,77,145,142,203,165,203,241,139,92,223,76,115,173,49,64, +96,132,134,96,5,151,122,135,130,38,109,159,44,247,43,81, +69,247,254,1,226,35,250,229,171,117,13,60,218,219,9,42, +179,102,13,27,170,151,46,198,63,112,124,39,143,188,214,18, +128,36,72,203,36,218,235,9,73,131,166,110,167,171,244,29, +54,90,207,65,130,167,124,133,174,226,119,187,88,253,100,181, +159,145,38,74,239,96,208,199,221,83,134,194,36,201,219,46, +90,255,65,225,151,188,230,18,227,20,136,168,152,219,136,58, +185,230,25,83,2,131,52,78,138,56,156,178,17,126,194,219, +56,58,210,87,217,58,31,134,95,244,250,71,138,43,172,149, +2,2,37,84,8,45,192,88,12,116,88,111,69,136,14,248, +157,47,194,125,88,124,117,175,29,132,122,160,242,106,74,115, +160,225,90,109,96,220,6,213,93,119,206,9,0,19,48,39, +19,124,231,143,48,23,18,15,213,78,71,233,26,124,244,191, +23,4,110,232,90,126,80,251,21,169,186,248,254,30,18,28, +229,105,84,149,253,243,196,168,5,11,187,166,29,151,74,135, +225,22,173,252,144,246,72,98,181,146,65,60,71,11,58,182, +23,23,94,207,73,2,183,116,37,190,168,247,43,80,85,245, +255,21,160,42,234,247,170,64,95,117,235,93,8,62,240,127, +31,8,191,224,117,159,28,247,72,97,133,148,66,0,129,16, +10,128,20,72,168,20,26,136,181,72,224,149,158,194,20,201, +184,30,154,156,253,224,244,143,22,119,92,41,45,128,88,136, +52,88,234,21,138,138,188,221,162,150,47,212,29,117,106,77, +2,190,228,55,183,28,165,104,192,215,252,98,214,163,145,93, +250,30,27,140,247,96,224,199,190,99,70,161,152,200,184,29, +170,154,254,220,50,148,38,65,95,118,219,91,11,2,54,100, +47,62,188,191,131,68,79,125,74,93,64,191,116,53,190,137, +231,107,113,193,245,222,4,240,9,127,227,201,88,31,68,127, +124,57,111,129,200,138,61,205,168,22,59,156,181,97,112,197, +183,246,4,162,41,222,177,161,120,201,102,254,43,67,101,210, +236,105,71,165,218,224,184,79,138,59,172,180,18,66,4,192, +8,12,209,8,47,225,76,12,93,200,63,108,188,30,147,12, +239,233,64,221,85,231,222,32,176,67,91,51,131,85,94,78, +89,8,55,96,109,22,188,237,163,229,29,21,106,139,98,62, +35,79,180,218,195,136,11,169,135,40,135,35,54,37,63,184, +253,171,68,29,93,235,15,40,159,162,23,63,222,157,97,34, +229,22,164,108,130,255,252,48,246,2,195,53,218,200,57,13, +160,26,234,148,154,128,60,201,234,62,59,206,149,192,34,173, +151,32,38,35,126,164,187,242,92,42,28,150,89,181,230,1, +211,51,155,212,127,84,184,45,171,233,204,29,69,106,46,50, +126,135,139,182,127,150,152,165,104,193,199,254,99,194,225,152, +77,232,31,46,222,190,81,102,198,170,32,95,179,139,221,207, +70,243,185,121,232,116,158,14,213,77,119,239,25,64,50,164, +39,50,109,183,172,165,3,113,23,149,127,211,200,43,45,133, +8,130,49,28,160,57,218,208,185,60,184,250,219,74,26,49, +37,49,88,225,165,156,129,32,11,243,38,137,223,234,18,251, +148,185,176,120,234,86,186,8,255,225,225,221,29,102,90,106, +17,194,3,184,135,11,183,103,21,153,187,139,204,223,101,226, +237,26,117,100,173,30,176,60,171,202,252,89,102,214,170,1, +79,243,170,73,207,103,226,233,90,125,96,253,22,149,124,227, +206,40,17,67,19,178,7,31,255,207,1,131,51,62,132,63, +240,124,47,14,188,220,179,132,44,193,75,62,115,79,17,138, +131,44,207,171,34,125,151,141,247,99,208,193,189,95,128,186, +168,254,187,66,92,65,173,86,48,168,227,106,105,67,228,194, +230,233,83,237,114,244,162,199,63,115,76,33,140,128,16,9, +176,18,75,148,210,1,184,131,75,191,99,69,145,158,203,132, +219,177,170,200,223,109,98,253,18,213,116,231,158,32,52,3, +91,182,211,87,218,10,25,133,99,50,225,119,188,40,243,99, +217,81,175,86,52,232,235,110,57,75,193,130,174,237,135,165, +87,49,186,193,111,127,41,105,192,212,204,100,213,159,87,70, +202,40,24,211,1,187,179,77,188,95,131,138,174,253,135,132, +71,113,155,85,111,94,56,57,227,65,216,7,205,223,102,210, +235,25,73,162,182,46,134,63,244,60,39,10,236,212,150,196, +100,197,159,118,86,138,9,140,211,32,170,227,110,41,75,224, +146,238,204,19,165,118,32,234,226,250,107,74,113,128,229,88, +69,228,206,38,241,95,29,106,155,98,31,51,15,149,78,195, +169,26,249,164,189,147,64,46,101,14,44,220,154,21,108,234, +126,58,90,215,193,179,191,156,180,112,98,198,162,160,79,187, +43,205,133,198,99,177,209,121,62,20,63,217,237,111,37,137, +216,154,28,252,248,119,142,8,148,81,49,182,1,119,115,217, +113,175,20,20,104,169,70,56,9,227,34,232,199,174,99,103, +177,216,233,44,29,139,139,174,255,167,128,69,89,31,71,79, +122,58,83,71,211,186,11,206,247,224,224,207,63,99,76,0, +156,192,49,157,176,51,90,196,241,148,172,224,83,255,82,209, +176,175,154,245,108,36,159,186,151,14,198,125,80,252,101,167, +189,148,48,32,98,98,226,226,234,107,107,97,192,196,204,69, +197,223,118,210,202,9,9,131,34,46,167,46,164,31,178,30, +143,204,214,245,240,228,174,39,39,61,156,185,161,104,201,71, +238,107,98,241,210,205,120,23,134,79,244,219,87,202,10,56, +149,35,19,117,119,157,57,163,64,76,69,204,78,116,217,127, +79,8,26,176,53,59,216,245,237,52,149,58,131,70,110,105, +74,116,208,239,93,1,174,226,118,171,90,252,112,247,150,129, +52,75,218,50,153,246,91,82,146,129,61,219,200,59,45,164, +24,194,16,136,160,24,203,128,154,169,172,153,195,10,43,165, +4,0,9,144,18,9,180,82,67,144,130,9,157,195,3,187, +183,13,180,91,211,130,139,189,207,128,147,57,190,144,119,88, +104,53,134,9,148,83,17,178,3,95,247,203,81,139,22,126, +204,59,36,52,10,203,164,218,227,136,73,137,7,106,175,34, +116,7,159,254,215,130,130,45,221,137,39,107,253,0,245,81, +245,246,133,178,35,94,165,233,208,221,124,118,158,11,133,71, +114,171,83,108,98,254,34,211,119,219,88,59,4,53,88,233, +37,140,137,128,27,185,166,25,215,66,131,177,30,136,188,216, +242,156,42,144,87,89,58,23,7,95,254,91,67,130,162,44, +143,171,166,61,151,8,167,97,84,133,253,210,212,232,36,159, +187,135,12,199,105,18,245,117,181,188,161,98,105,83,228,227, +246,169,114,121,114,213,179,151,28,230,88,66,148,192,33,157, +145,35,26,229,101,148,141,241,3,220,199,197,211,183,218,196, +248,5,174,235,230,185,83,72,34,180,6,3,61,214,25,49, +34,65,86,230,201,82,191,80,117,244,173,55,33,124,128,255, +248,112,254,6,147,61,255,136,113,9,116,82,207,81,130,134, +108,197,143,118,119,154,73,173,71,32,139,242,62,10,222,244, +241,246,140,34,49,87,17,187,147,77,254,127,3,200,134,252, +197,166,231,55,177,124,169,110,184,91,203,2,186,165,47,177, +77,185,15,137,143,234,183,171,212,29,116,122,79,3,170,166, +62,167,14,164,93,146,158,205,228,215,183,210,68,232,13,14, +251,172,57,195,64,138,37,76,137,12,218,185,41,232,209,206, +78,113,137,117,74,76,80,156,101,97,221,20,247,88,97,164, +132,2,33,21,16,43,145,68,107,61,0,121,144,245,121,116, +180,175,147,101,126,45,43,232,212,158,68,116,205,63,102,28, +10,153,132,123,177,224,105,95,37,235,248,88,126,84,187,29, +173,234,240,219,94,90,24,49,33,113,80,229,245,148,164,96, +67,247,242,193,250,47,10,253,196,181,213,48,166,2,102,101, +154,108,253,15,5,79,250,58,91,198,211,176,170,202,255,105, +96,213,150,199,84,195,156,74,144,145,57,186,208,127,92,56, +61,163,73,220,87,197,250,38,154,239,205,1,135,115,54,128, +111,248,89,111,70,184,8,251,161,233,217,77,110,127,42,89, +198,215,240,162,206,175,97,69,149,222,195,128,139,185,143,136, +151,105,182,181,55,16,108,225,206,44,81,75,23,226,15,58, +191,135,5,87,123,27,65,39,246,44,35,107,244,144,231,88, +65,164,198,34,161,87,56,42,211,102,203,123,42,80,86,197, +249,22,156,236,241,199,156,67,0,131,48,14,130,60,204,186, +52,62,138,223,236,114,247,146,193,60,79,138,58,188,182,19, +86,70,201,24,30,208,61,125,168,125,138,92,220,124,117,174, +13,134,123,180,176,99,90,97,161,212,8,36,81,90,7,193, +30,110,220,26,21,100,107,126,48,251,211,201,58,63,134,29, +212,122,5,162,42,238,183,162,68,15,125,206,29,64,58,36, +55,58,205,167,230,37,147,121,191,4,53,89,249,39,141,157, +194,18,169,180,24,226,16,202,128,152,137,168,155,235,142,57, +133,32,2,99,52,128,107,184,81,107,22,176,45,187,233,237, +13,5,75,186,50,95,150,219,149,234,130,251,189,40,240,83, +223,82,147,144,47,216,221,109,102,189,26,209,36,239,187,96, +124,7,143,254,246,146,194,12,73,137,6,122,173,35,96,69, +150,238,197,131,183,127,148,184,161,106,233,67,236,67,230,227, +242,233,122,125,34,221,150,215,84,226,140,10,177,5,57,155, +193,47,127,173,41,192,81,156,102,81,219,23,203,158,122,148, +178,1,126,227,203,120,27,70,87,248,43,79,165,202,224,153, +95,202,26,56,180,51,83,84,227,157,24,178,16,111,208,216, +45,108,153,78,219,41,43,225,68,140,77,192,159,124,246,158, +3,4,71,120,10,87,100,235,126,56,122,211,195,155,59,142, +148,84,96,172,6,50,45,183,40,229,3,244,71,151,251,151, +136,166,121,215,132,227,49,217,240,191,30,148,124,225,238,44, +19,107,151,160,39,59,253,165,165,17,81,50,135,23,118,78, +11,40,150,50,5,54,106,207,34,178,103,31,57,175,129,68, +75,61,66,89,16,183,81,117,246,141,51,35,84,4,237,216, +84,252,108,55,175,157,132,114,33,242,96,235,119,168,104,218, +119,201,120,30,22,93,253,111,5,137,154,186,156,190,208,118, +204,42,52,23,27,159,199,71,243,187,89,236,118,182,138,199, +109,83,237,115,228,160,198,43,49,69,49,158,129,37,91,249, +35,205,149,198,66,161,145,88,170,20,30,200,189,76,176,157, +187,130,92,205,108,86,191,89,229,230,164,131,115,63,16,125, +241,237,61,5,40,138,242,60,42,218,246,217,114,158,2,21, +85,123,31,1,47,242,124,43,78,180,216,227,140,9,129,3, +58,167,7,52,79,155,42,159,167,71,53,219,217,43,14,181, +76,161,141,152,147,8,174,241,70,140,73,128,151,120,166,150, +38,68,15,124,222,31,65,46,102,62,42,223,166,211,119,218, +72,57,5,33,26,224,53,158,136,181,73,240,151,159,214,86, +192,168,12,155,169,175,169,197,9,23,99,31,48,63,147,77, +255,111,1,201,146,190,204,182,245,54,132,46,224,95,62,90, +223,65,163,183,60,164,58,226,86,170,8,222,241,161,252,137, +102,123,123,65,225,150,172,228,19,247,86,129,184,138,218,189, +104,240,215,159,82,22,192,45,92,153,45,235,233,72,93,69, +239,126,48,250,195,203,59,43,196,20,196,104,4,151,120,167, +134,36,69,27,62,215,15,83,47,83,108,99,238,32,210,99, +153,81,43,22,52,109,187,108,189,15,129,15,250,191,11,196, +87,244,234,71,171,59,236,180,150,2,4,69,88,14,85,76, +111,108,24,94,209,169,63,169,236,152,87,72,42,52,22,11, +157,198,83,177,178,73,254,119,131,216,142,92,213,236,103,167, +185,212,56,36,50,106,199,162,162,111,191,41,229,1,212,67, +149,211,19,154,134,93,213,238,71,163,187,252,188,54,18,78, +197,200,6,253,221,37,230,41,82,113,177,245,57,116,48,239, +147,224,46,47,175,172,148,19,16,38,65,94,102,217,90,31, +64,63,116,61,63,137,237,202,117,201,124,94,30,89,173,103, +32,201,210,190,72,246,245,179,212,44,100,27,126,215,139,19, +47,214,60,97,106,100,146,238,205,3,167,119,52,168,235,234, +121,75,68,210,172,105,195,229,218,101,232,77,14,127,236,57, +70,16,136,161,8,201,129,142,235,165,137,209,11,30,247,77, +49,143,145,6,74,173,64,80,133,245,82,196,224,132,143,241, +7,156,207,193,131,191,255,132,176,1,122,163,195,124,75,78, +114,184,99,75,113,130,197,92,71,204,74,52,209,123,31,0, +63,240,125,63,12,189,200,241,141,60,211,74,11,33,6,32, +12,130,56,140,178,48,110,130,250,172,58,243,70,137,25,138, +146,60,236,186,118,30,10,157,196,115,181,176,97,122,101,163, +252,140,54,113,126,5,171,186,252,190,22,22,76,237,76,20, +221,249,39,140,141,192,19,189,246,17,242,2,203,181,202,192, +153,29,234,154,122,156,50,17,118,67,219,50,155,214,95,80, +186,5,47,251,236,57,71,0,138,160,28,139,136,158,249,164, +188,131,66,47,113,76,37,204,136,20,89,184,55,11,220,214, +213,240,166,142,167,101,21,157,251,131,200,143,109,199,173,82, +113,176,229,59,117,36,173,154,240,60,46,154,254,221,34,150, +39,85,29,127,203,73,10,55,100,45,30,184,189,171,192,93, +93,110,95,42,27,230,87,178,138,207,237,67,229,211,244,234, +70,187,57,237,160,212,11,20,87,89,59,7,5,94,234,25, +74,146,176,45,186,249,239,12,17,9,179,34,77,151,238,199, +163,179,125,188,60,179,74,205,65,134,231,116,129,254,234,82, +251,16,249,176,253,186,84,62,76,191,108,181,143,145,7,90, +175,65,68,199,252,66,214,225,177,221,184,54,26,206,213,192, +166,237,151,165,118,33,250,224,251,127,8,120,144,247,89,112, +182,135,23,119,94,9,41,130,112,12,38,120,206,23,224,46, +46,191,174,149,7,82,47,81,76,103,236,8,86,113,185,117, +41,124,144,255,217,96,190,39,7,61,222,153,33,42,225,70, +172,73,194,183,248,228,190,39,6,45,220,152,53,104,232,86, +190,72,247,229,177,213,56,38,18,110,197,138,38,125,159,13, +231,107,112,209,247,223,16,178,0,111,241,200,109,77,13,78, +250,56,123,194,209,152,46,216,223,77,98,191,50,85,54,207, +159,98,22,163,29,156,250,145,234,138,123,173,32,80,67,149, +210,3,152,135,73,151,231,87,177,186,201,238,127,35,200,196, +220,69,228,207,54,243,94,9,40,146,114,13,50,58,199,7, +242,47,27,237,231,164,129,83,59,18,85,117,255,29,33,42, +224,86,174,72,214,245,241,244,172,38,51,127,149,169,179,105, +252,21,167,90,228,240,198,142,97,5,149,90,131,128,14,233, +141,12,211,41,59,225,101,156,13,225,11,124,215,143,83,39, +210,108,105,79,36,218,234,25,75,130,178,44,174,187,230,28, +3,8,134,112,4,166,104,198,183,240,100,174,47,166,61,150, +24,165,96,64,199,244,194,198,233,17,205,242,182,138,198,125, +81,236,103,166,169,214,57,48,112,99,215,176,163,90,237,96, +212,135,213,87,214,202,1,137,147,42,142,183,100,36,143,186, +182,30,134,92,196,252,68,182,237,183,165,52,1,122,162,211, +126,74,90,48,177,115,89,112,183,151,21,118,74,75,32,146, +98,13,19,42,135,38,102,47,58,252,183,135,20,71,88,10, +21,68,107,60,16,123,145,225,59,125,164,189,146,80,44,100, +26,110,213,138,7,109,223,44,115,107,81,192,167,252,133,166, +99,119,177,249,249,108,60,31,139,143,238,247,163,208,77,124, +95,15,75,174,114,118,130,203,188,91,194,146,168,172,155,227, +14,41,141,128,18,41,180,16,99,16,192,33,156,129,33,27, +241,39,157,157,227,2,233,149,140,226,49,219,208,187,28,188, +248,243,206,8,17,1,51,50,69,55,254,141,35,35,117,20, +173,249,192,252,77,38,255,190,17,102,66,234,32,218,227,137, +89,139,6,126,237,43,100,21,158,203,133,203,179,171,220,157, +100,114,239,19,224,38,174,175,166,53,23,24,175,193,68,207, +125,66,220,64,181,213,49,182,0,103,113,216,101,237,29,4, +122,168,115,106,64,210,164,233,211,237,122,117,162,205,158,119, +68,168,12,154,185,173,168,209,75,30,115,13,49,10,193,4, +206,233,0,221,209,167,222,165,224,65,223,119,195,216,10,28, +213,105,55,165,61,144,120,169,102,56,75,195,162,170,239,175, +33,69,17,158,195,5,219,187,11,204,215,228,226,231,187,113, +108,36,158,170,149,15,210,63,89,236,119,166,136,198,121,17, +228,99,246,161,243,121,120,116,183,159,149,102,66,235,48,216, +226,157,27,130,22,108,236,30,54,92,175,77,132,223,240,178, +206,142,113,5,180,74,195,161,154,233,172,29,131,10,174,245, +6,132,77,208,159,93,230,222,34,144,71,89,27,7,71,126, +106,91,98,147,242,15,26,191,197,37,215,57,51,64,101,212, +140,101,65,221,86,215,216,35,140,133,64,3,181,86,1,184, +130,91,189,98,81,211,151,219,150,218,132,248,129,238,235,99, +233,81,204,102,244,139,87,111,90,120,49,231,17,208,34,141, +151,98,6,163,60,140,186,176,126,138,90,188,112,115,214,129, +177,27,216,182,221,182,214,6,192,13,92,219,13,107,171,96, +92,7,205,222,118,208,234,13,11,171,166,60,135,10,166,117, +22,140,237,192,213,221,118,214,138,1,13,211,42,11,231,102, +160,203,250,59,74,212,208,165,252,129,230,107,115,225,241,220, +44,116,27,95,199,203,50,187,214,29,112,58,71,7,250,174, +27,231,70,160,137,218,187,8,252,209,231,222,33,160,65,90, +39,193,92,78,92,88,61,101,41,92,144,189,249,224,252,15, +6,127,252,57,103,0,200,128,156,201,160,159,187,134,28,197, +104,6,183,124,165,174,160,87,59,26,213,101,247,189,49,96, +96,198,166,224,71,191,123,197,160,134,43,181,5,49,27,209, +39,223,189,99,64,193,148,206,192,145,157,250,146,218,140,120, +145,230,75,115,163,209,92,110,92,26,29,229,107,116,145,255, +219,64,186,37,47,185,204,185,5,40,139,226,62,43,206,180, +208,98,140,3,32,7,50,46,135,46,230,63,50,92,167,205, +148,215,80,162,132,14,225,13,28,219,137,43,171,229,12,5, +73,154,54,93,190,95,135,202,166,249,215,140,98,49,211,81, +187,22,29,252,251,71,136,11,168,151,42,134,55,116,44,47, +170,252,158,22,84,108,109,14,60,220,187,5,44,203,234,58, +123,198,145,144,42,136,215,104,34,247,54,129,126,234,90,122, +16,243,17,249,178,221,190,86,22,200,173,76,145,141,251,163, +200,205,77,71,239,122,112,242,199,155,51,14,132,92,192,188, +76,178,189,191,128,116,73,126,118,155,91,143,66,54,225,127, +60,56,251,195,201,27,47,198,60,64,122,36,179,122,205,34, +182,39,23,61,255,137,97,11,117,70,141,88,146,148,109,240, +221,63,70,28,72,185,4,57,153,225,43,125,133,173,210,113, +184,100,59,127,133,169,146,121,188,52,51,90,197,225,150,173, +244,17,246,66,195,177,154,200,188,93,162,158,174,212,23,212, +110,69,139,62,254,158,19,4,102,104,74,118,240,235,95,41, +42,240,86,143,88,150,212,101,244,141,55,99,92,0,189,208, +113,188,36,51,123,213,161,183,57,244,48,231,18,224,36,142, +171,164,29,147,10,143,229,70,165,217,208,190,76,182,253,183, +132,36,65,91,54,211,95,91,10,19,36,103,58,104,247,166, +129,87,123,26,81,37,247,56,97,98,228,130,230,109,19,237, +247,164,160,67,123,51,193,117,222,12,113,9,117,66,205,80, +150,196,101,213,157,119,66,200,0,156,193,33,159,177,39,24, +205,225,134,173,213,1,182,99,87,177,187,217,236,126,55,138, +205,204,87,229,250,100,186,111,143,41,134,49,20,32,41,210, +112,169,118,56,106,211,226,139,123,175,0,84,65,189,86,17, +184,163,75,253,67,197,211,182,202,198,249,17,236,226,246,171, +82,125,112,253,55,133,60,194,90,40,48,82,67,145,146,11, +156,215,65,178,167,31,181,110,129,203,186,59,206,148,208,32, +172,131,98,47,51,108,165,142,160,21,27,154,151,77,246,255, +19,192,38,236,143,38,119,63,25,237,227,228,137,87,107,26, +112,53,183,25,245,98,197,147,182,78,134,249,148,188,224,114, +239,18,240,36,175,187,228,60,7,10,174,244,22,134,76,196, +221,84,246,204,35,165,21,16,42,129,70,106,41,66,112,128, +231,120,65,230,230,162,227,127,57,104,241,198,141,81,3,150, +102,69,155,62,223,142,83,37,242,104,107,103,160,200,202,61, +73,232,22,190,204,183,229,52,133,58,162,86,46,72,222,116, +241,254,13,34,59,246,21,179,26,205,228,214,167,208,69,252, +79,7,235,190,56,246,18,195,20,202,136,24,153,160,59,251, +196,185,21,40,170,242,126,10,90,180,241,115,220,32,181,19, +81,54,199,31,114,30,3,13,214,122,1,226,34,234,231,170, +97,79,53,202,201,8,31,225,47,60,157,171,131,109,223,45, +99,105,80,212,229,245,149,180,98,66,227,176,200,234,61,11, +200,150,252,228,182,167,22,37,124,136,127,232,120,94,22,217, +189,111,128,217,152,62,216,254,93,34,158,166,85,23,222,207, +65,131,183,126,132,186,160,126,171,74,252,81,231,214,160,160, +75,251,35,201,213,206,70,241,153,125,234,92,26,28,245,105, +117,133,189,210,80,168,36,26,235,133,136,131,41,159,161,39, +57,221,161,167,57,213,32,167,51,116,36,175,186,244,62,6, +30,236,253,6,148,77,241,143,29,199,74,34,177,86,9,56, +146,83,29,114,27,83,7,211,62,75,206,114,176,226,75,123, +35,193,84,206,76,80,157,117,99,220,0,181,81,113,182,133, +55,115,92,33,173,144,80,40,36,18,106,133,130,34,45,151, +40,167,35,116,5,191,250,213,170,6,63,253,173,37,1,89, +146,151,93,246,222,3,128,7,120,143,7,102,111,58,120,247, +135,145,23,90,142,81,4,230,104,66,247,240,225,254,45,34, +121,214,149,241,50,204,166,244,7,150,111,213,137,55,107,220, +16,181,112,97,246,164,163,115,125,48,253,179,197,60,71,10, +42,180,22,3,28,198,89,16,182,65,119,247,153,113,42,68, +22,236,237,6,181,93,177,174,137,199,107,51,225,117,156,44, +241,75,93,67,143,114,54,130,79,252,91,71,194,170,40,223, +163,131,125,223,12,115,41,113,64,229,212,132,228,65,215,247, +211,208,170,12,159,233,167,173,149,1,50,35,87,52,235,219, +104,58,119,7,153,158,219,132,250,161,234,233,75,109,67,236, +66,246,225,243,253,56,116,50,207,151,226,6,171,189,140,176, +17,122,130,211,60,106,218,114,153,114,27,82,23,209,63,95, +140,123,160,240,74,78,113,136,101,72,77,68,222,108,113,207, +21,194,10,40,149,2,3,53,86,9,57,130,81,28,102,89, +90,23,193,63,126,156,59,129,100,74,111,96,216,70,221,89, +39,198,44,64,91,52,243,91,89,34,151,54,71,30,106,157, +2,19,53,119,25,121,163,197,28,71,72,10,52,84,43,29, +132,123,176,240,107,94,49,169,241,72,108,85,142,79,228,219, +118,218,74,25,1,35,50,100,39,190,172,183,35,84,5,253, +218,85,232,46,62,191,143,133,71,115,187,81,109,118,188,43, +195,101,218,109,105,77,4,222,232,49,207,144,146,8,172,209, +66,142,97,4,133,88,130,148,76,224,157,30,210,28,105,168, +84,26,12,245,72,101,197,156,70,80,137,53,74,200,16,156, +224,49,223,144,179,24,236,240,214,142,64,21,213,123,23,128, +47,248,221,47,70,61,88,249,37,173,153,192,58,45,166,56, +198,18,160,36,10,235,164,152,195,8,11,161,6,40,141,130, +50,45,182,56,231,2,224,5,158,235,133,137,147,43,158,181, +101,48,205,179,166,12,135,105,150,181,117,48,236,163,230,45, +19,105,183,164,37,19,121,183,133,53,83,88,35,133,20,66, +8,0,16,0,33,16,64,33,148,0,33,17,80,35,149,20, +99,24,64,49,148,33,49,81,113,183,149,53,114,72,99,164, +128,66,41,17,64,35,180,4,35,57,212,49,181,48,97,114, +228,163,246,45,50,121,247,133,177,19,88,166,213,22,198,76, +64,157,84,115,156,33,33,81,80,167,213,20,230,72,66,181, +208,97,188,5,35,59,244,53,183,24,229,96,196,135,244,71, +150,235,149,137,178,59,222,148,241,48,236,162,246,47,18,125, +245,173,53,1,120,130,215,124,98,222,34,145,87,91,26,19, +5,119,122,73,99,166,160,70,43,57,196,49,148,32,33,83, +112,163,215,60,98,90,98,145,210,11,24,151,65,55,247,29, +49,42,193,70,238,105,66,245,208,229,252,5,166,107,246,177, +243,88,104,52,150,11,149,71,83,187,19,77,246,254,3,194, +39,248,205,47,103,45,24,216,177,173,184,209,106,14,51,44, +165,10,224,21,158,202,149,201,178,191,158,148,116,96,238,38, +178,111,159,41,167,33,84,1,189,210,81,184,38,27,255,199, +129,147,59,158,148,117,112,236,39,166,45,150,57,181,32,97, +83,244,227,215,185,50,88,230,213,146,134,76,197,205,86,247, +216,97,172,5,2,43,180,20,35,24,196,113,148,164,97,83, +245,243,213,184,38,26,239,197,128,135,121,151,132,103,113,217, +117,239,28,16,56,161,99,120,65,231,246,160,226,107,123,97, +225,212,140,100,81,223,87,195,154,42,156,151,65,54,231,31, +48,62,131,79,254,123,67,192,130,172,205,131,167,127,181,168, +225,75,125,67,205,82,182,192,103,253,25,101,98,236,2,246, +101,179,253,189,36,48,75,211,162,139,255,239,0,209,17,191, +210,85,248,46,31,175,207,164,211,115,154,64,61,85,41,63, +160,125,154,92,253,108,53,143,153,134,90,165,224,64,207,117, +194,204,72,21,197,123,54,144,111,217,73,47,103,44,8,218, +176,185,250,216,122,28,50,25,247,67,209,147,159,222,214,208, +160,172,139,227,47,57,205,161,134,41,149,1,51,51,85,53, +255,153,97,42,101,6,172,204,146,181,124,160,254,170,82,127, +80,249,53,173,184,208,122,12,50,56,231,3,240,7,159,255, +199,128,131,57,159,128,55,121,252,53,167,24,196,112,132,166, +96,71,183,250,197,170,39,47,189,140,177,1,120,131,199,126, +99,202,96,152,71,73,27,38,87,62,75,207,98,178,227,95, +57,42,209,70,207,121,2,212,68,229,221,20,246,72,99,165, +144,64,40,5,2,42,164,22,34,12,134,120,132,182,96,102, +167,186,228,62,39,14,172,220,146,148,108,224,223,62,82,94, +65,169,22,56,172,179,98,76,3,172,198,50,161,118,40,106, +242,242,203,90,59,0,117,80,237,117,132,172,192,83,189,114, +81,242,135,155,183,78,132,217,144,190,200,246,253,50,212,38, +197,31,118,94,11,9,134,114,36,162,106,238,51,226,68,138, +45,204,153,4,122,169,99,104,65,198,230,224,195,255,123,64, +240,132,175,241,69,188,79,131,171,190,189,166,16,71,80,138, +5,76,203,44,90,251,1,233,147,236,238,55,163,92,140,124, +208,254,77,34,191,182,21,54,74,207,96,146,231,93,17,174, +195,102,235,123,104,112,214,135,209,23,222,206,81,129,182,106, +198,179,176,108,170,127,174,24,214,80,161,180,8,226,49,218, +192,185,29,168,186,250,222,26,16,52,97,123,116,177,255,153, +96,58,103,7,184,142,155,165,110,161,203,248,27,78,214,248, +33,238,161,194,105,25,69,99,190,32,119,51,217,245,239,20, +145,56,171,194,124,73,110,118,186,75,207,99,162,225,94,45, +104,216,86,221,120,55,134,13,212,91,21,226,11,122,183,131, +85,95,94,91,9,35,34,100,6,174,236,150,183,84,36,236, +138,118,125,58,93,167,207,180,211,82,138,0,28,193,41,30, +177,45,185,201,233,15,45,207,168,18,123,148,177,49,120,224, +247,190,0,118,97,251,116,185,126,153,106,155,99,15,49,14, +129,12,202,185,8,248,145,239,218,113,168,100,26,111,197,136, +6,121,157,37,99,121,80,245,245,181,180,32,98,99,242,224, +235,127,41,104,208,214,205,112,151,150,71,84,203,29,74,154, +48,61,178,89,255,70,145,153,187,138,220,221,100,246,175,19, +101,118,172,43,226,117,154,76,253,77,37,207,184,18,90,132, +241,16,236,224,214,175,80,85,244,239,23,161,62,168,254,186, +82,94,64,185,20,57,184,241,107,92,17,173,243,96,232,71, +174,107,230,177,210,72,40,21,2,11,180,86,3,152,134,89, +149,230,67,243,179,217,252,126,22,154,141,237,195,229,219,117, +234,76,26,61,229,41,84,17,189,243,65,248,7,143,255,230, +144,195,24,11,128,22,104,172,22,50,12,167,104,196,151,244, +102,134,171,180,29,178,26,207,196,210,165,248,193,238,111,35, +233,212,156,100,112,207,23,226,14,42,189,134,17,21,114,11, +83,38,195,126,106,90,114,145,243,27,88,182,213,55,214,12, +97,9,84,82,141,113,2,196,68,196,205,84,215,220,99,132, +129,16,11,144,22,73,188,86,19,152,167,73,213,199,215,243, +146,200,172,93,131,142,238,245,131,212,79,84,219,29,107,138, +112,28,38,89,222,87,193,186,46,158,191,197,36,199,59,50, +84,39,221,156,119,64,232,4,158,233,165,141,145,3,26,167, +69,20,207,217,2,158,229,101,149,157,243,2,200,133,204,195, +165,219,241,170,76,159,109,231,173,16,81,48,167,19,116,102, +143,58,182,22,7,92,206,93,64,190,100,55,191,157,165,98, +97,211,244,235,86,185,56,249,226,221,27,6,86,108,105,78, +52,216,235,13,9,139,162,62,175,142,180,85,50,142,135,100, +71,191,122,213,162,135,63,247,12,33,9,208,18,141,244,82, +198,192,128,141,217,131,142,239,229,129,213,91,22,210,13,121, +139,69,78,111,104,88,86,213,249,55,140,172,208,83,156,98, +17,211,19,155,150,95,212,250,5,170,171,238,189,3,64,7, +244,78,7,233,158,60,244,58,71,6,234,172,26,243,4,169, +153,200,186,61,174,152,214,88,32,180,2,67,53,210,73,57, +7,1,30,226,29,26,154,149,109,242,253,59,68,52,204,171, +36,29,155,139,143,239,231,161,209,89,62,86,31,89,175,71, +36,203,250,58,90,214,209,177,190,136,246,121,114,212,163,149, +29,242,26,75,132,210,32,168,195,106,43,99,100,128,206,232, +17,207,210,178,136,238,249,67,204,67,164,195,114,171,82,124, +96,255,54,145,126,203,74,58,49,103,17,216,163,141,157,195, +2,171,181,12,160,25,218,146,153,188,250,210,218,8,56,145, +99,27,113,39,149,28,227,8,72,145,132,107,177,193,121,31, +4,127,248,121,111,4,152,136,185,137,232,155,111,206,57,0, +112,0,231,112,192,230,236,3,231,119,176,232,235,111,41,73, +192,150,236,228,151,183,86,4,232,136,94,249,40,125,131,205, +222,119,192,232,12,31,233,175,44,149,11,147,39,95,189,107, +193,193,158,111,196,153,20,122,136,115,40,96,82,230,193,210, +175,88,213,228,231,183,177,116,40,110,178,250,207,10,51,37, +53,24,233,161,204,137,5,75,187,34,93,151,207,215,227,146, +233,188,29,162,26,238,212,146,132,108,193,207,126,115,202,65, +136,7,104,143,38,118,47,27,236,247,166,128,71,121,27,69, +103,254,40,115,99,209,208,175,92,149,236,227,231,185,81,104, +38,182,46,135,47,246,61,51,72,229,196,132,197,81,151,214, +71,208,139,29,207,202,50,185,246,25,114,18,195,21,218,138, +25,141,226,50,235,214,184,32,122,227,195,248,11,78,247,232, +97,207,53,194,72,8,21,64,43,52,20,43,153,196,123,53, +160,105,218,117,233,124,28,62,217,239,79,33,139,240,30,14, +220,220,117,228,172,6,51,61,181,41,241,65,253,87,133,250, +162,218,239,72,81,133,247,114,192,226,172,11,227,39,184,205, +171,39,45,157,136,179,41,252,145,231,90,97,160,196,10,37, +69,24,14,209,12,111,233,72,92,85,237,127,36,184,202,219, +41,42,241,70,141,89,130,150,108,228,159,54,86,14,73,140, +86,112,168,103,42,105,198,180,192,98,173,19,96,38,166,46, +166,63,182,28,167,72,196,213,212,230,196,131,181,95,144,186, +137,238,251,99,200,65,140,71,96,139,118,126,10,91,164,243, +114,200,98,188,3,67,55,242,77,59,47,133,12,194,57,24, +240,49,255,144,241,56,108,178,254,143,2,55,117,61,61,169, +233,200,93,77,110,126,58,91,199,195,178,171,222,189,96,112, +199,151,242,6,138,173,204,145,133,122,163,194,108,73,79,102, +250,106,91,99,131,240,14,14,253,204,53,197,56,6,18,44, +229,10,100,85,158,79,197,203,54,251,222,25,32,50,98,71, +178,170,207,175,99,101,145,220,235,4,153,153,171,138,253,205, +36,215,59,19,68,103,252,8,119,97,249,84,189,124,177,238, +137,67,43,51,100,37,158,168,181,11,208,23,221,254,87,130, +138,172,221,131,134,111,245,137,117,75,92,82,157,113,35,212, +4,229,89,84,246,205,51,167,20,4,104,136,86,120,40,119, +34,201,214,254,64,242,165,187,241,108,44,31,170,159,174,214, +55,208,108,109,15,44,222,186,17,110,194,250,40,122,243,195, +217,27,14,214,124,97,238,36,146,107,157,1,35,51,116,37, +191,184,245,42,68,23,252,239,7,161,31,184,190,155,198,94, +97,168,68,26,45,229,8,68,81,156,103,65,217,22,223,220, +115,132,160,0,75,177,130,73,157,71,67,187,50,93,182,223, +151,194,6,233,157,12,242,57,123,192,241,156,44,240,91,95, +66,155,48,63,146,93,253,110,21,139,155,174,222,183,192,100, +205,31,102,94,42,25,198,83,176,162,75,255,99,193,209,158, +78,212,217,53,238,136,82,57,48,113,115,213,177,183,24,228, +112,198,134,224,5,159,251,135,136,135,105,151,165,119,49,248, +225,239,61,1,104,130,246,108,34,255,182,145,118,74,74,48, +144,99,25,81,35,151,52,103,26,104,181,134,1,21,83,27, +19,7,87,126,75,75,34,178,102,15,59,174,149,6,66,45, +80,88,37,229,24,68,112,140,39,96,77,22,254,205,35,167, +53,20,40,169,194,120,9,102,114,234,67,234,35,234,229,138, +101,77,29,78,219,40,59,227,69,152,15,201,143,110,247,171, +81,77,118,254,11,67,39,242,108,43,111,164,152,194,24,9, +160,18,106,132,146,32,44,131,106,174,51,102,4,138,168,156, +155,128,62,233,238,60,19,74,135,224,6,175,253,132,180,65, +114,167,147,116,110,14,58,188,183,3,84,71,221,90,23,192, +47,124,157,47,195,109,90,125,97,237,20,148,104,161,199,56, +3,66,38,224,78,46,121,206,21,192,42,44,151,42,135,39, +118,45,59,232,245,142,4,85,89,63,71,13,90,186,17,111, +210,248,41,110,177,202,201,9,15,227,46,40,223,162,147,127, +222,24,49,32,97,82,228,225,214,173,112,81,246,199,147,179, +30,140,252,208,246,204,34,181,23,17,62,195,79,122,59,67, +69,210,174,73,199,231,242,225,250,109,42,125,134,157,212,114, +132,162,32,79,179,170,205,143,103,103,185,88,249,36,189,155, +193,46,111,175,40,212,19,149,118,67,218,34,153,215,75,18, +179,21,61,250,217,107,14,49,12,161,8,200,145,140,234,177, +203,216,27,12,246,120,99,198,160,128,75,185,3,73,151,230, +71,179,187,221,172,118,51,218,197,233,23,173,254,176,242,74, +74,49,128,97,24,69,97,158,36,117,27,93,231,207,48,147, +82,15,80,30,69,109,94,60,121,235,69,136,15,232,159,46, +214,63,81,108,103,174,40,214,51,145,116,107,94,48,185,243, +73,120,23,135,95,246,218,67,136,3,40,135,34,38,39,62, +172,191,162,84,15,92,222,93,97,174,36,22,43,157,132,115, +49,240,97,255,53,161,120,200,118,252,42,87,39,219,252,123, +70,144,136,169,137,201,139,47,239,173,0,81,17,183,83,85, +242,143,27,167,70,36,201,218,62,88,254,85,163,158,172,244, +19,214,70,193,153,30,218,156,121,160,244,10,70,117,216,109, +109,13,12,218,184,57,234,208,218,12,120,153,103,75,121,2, +213,84,231,220,0,180,65,115,183,145,117,122,76,51,172,165, +2,97,21,148,107,145,193,59,63,132,61,208,120,45,38,56, +206,147,160,46,171,239,172,17,67,18,162,5,30,235,141,8, +147,33,63,177,109,185,77,169,15,168,159,170,150,63,212,60, +101,42,108,150,190,197,38,231,63,48,124,163,207,188,83,66, +130,160,12,139,169,142,185,133,40,131,99,62,33,111,176,216, +235,12,25,137,163,42,237,135,164,71,51,187,213,45,118,57, +123,193,225,158,45,228,25,86,82,137,49,10,192,20,204,232, +20,159,216,183,204,164,213,19,150,70,69,217,30,95,204,123, +36,176,74,203,33,138,225,12,13,201,138,62,253,174,21,7, +90,174,81,70,198,232,0,223,241,163,220,141,100,83,255,83, +193,178,174,142,183,101,52,141,187,162,92,143,76,214,253,113, +228,164,134,35,53,21,57,187,193,109,95,45,107,232,80,222, +68,241,157,61,226,88,74,20,208,41,61,129,105,154,117,109, +60,28,187,137,237,203,101,203,125,74,92,80,189,117,33,252, +128,247,121,112,244,167,151,53,118,8,107,160,208,74,12,81, +8,39,96,76,6,252,204,55,229,60,4,58,168,247,42,64, +87,244,235,87,169,58,248,246,159,18,22,68,109,92,28,125, +233,109,12,29,200,187,44,188,155,195,14,107,173,0,80,1, +181,82,65,176,134,11,181,71,17,155,147,15,222,255,65,224, +135,190,231,6,161,29,152,186,153,238,218,115,136,96,24,71, +65,154,38,93,159,79,199,235,50,249,246,157,50,18,70,69, +216,14,93,205,111,102,185,90,217,32,191,179,69,60,79,139, +42,190,183,7,20,79,217,10,31,229,111,52,153,251,139,72, +159,101,103,189,24,241,32,237,147,228,110,39,171,252,156,54, +80,110,69,138,46,252,159,7,70,111,120,88,119,197,185,22, +24,172,241,66,204,65,132,199,112,131,214,110,64,219,52,251, +218,89,40,54,50,79,151,234,135,171,183,45,180,25,243,2, +201,149,206,194,177,153,248,186,94,158,88,181,228,33,215,49, +179,80,109,116,156,47,193,77,94,127,73,105,6,180,76,163, +173,156,145,32,42,227,102,168,75,234,51,234,196,154,37,108, +137,78,250,57,107,192,208,140,108,209,207,95,99,138,96,28, +7,73,158,118,85,186,15,143,239,230,177,211,88,42,20,22, +73,189,70,17,153,179,11,220,215,197,242,167,154,229,108,5, +143,250,182,154,198,92,65,172,70,50,169,247,40,96,83,246, +195,211,187,26,220,244,245,182,132,38,97,95,52,251,219,73, +42,55,38,13,158,250,149,170,130,127,253,40,117,3,221,214, +215,208,162,140,143,225,7,189,223,129,162,43,255,165,161,81, +89,54,215,31,83,14,67,44,66,122,32,243,114,201,114,190, +2,87,117,251,93,41,46,176,94,139,8,158,241,37,188,137, +227,43,121,197,165,214,33,176,65,123,55,129,125,218,92,121, +44,53,10,201,132,222,225,160,205,155,39,78,173,72,208,149, +253,242,212,170,4,31,249,175,13,133,75,178,179,95,156,122, +145,226,11,123,167,129,84,75,28,82,25,49,35,81,84,231, +221,16,182,64,103,245,152,101,104,77,6,254,236,51,231,20, +128,40,136,211,40,42,243,102,137,91,170,18,126,196,187,52, +60,170,219,238,90,115,128,225,24,77,224,158,46,212,31,85, +110,79,42,58,246,23,147,30,207,204,82,181,240,97,254,37, +163,121,220,52,245,58,69,38,238,174,50,119,22,137,189,202, +208,153,60,250,218,91,8,50,48,103,19,248,167,143,181,71, +16,139,145,14,202,189,72,240,149,191,210,84,232,44,30,187, +141,173,195,97,155,117,111,28,24,185,161,105,217,69,239,127, +32,248,194,223,121,34,212,6,197,93,86,222,73,33,135,48, +6,2,44,196,26,36,116,10,79,228,218,102,216,75,13,67, +42,34,118,38,139,254,254,18,210,4,233,153,76,250,61,43, +200,212,220,100,244,143,23,103,94,40,57,194,81,152,38,89, +223,71,195,187,58,220,182,213,54,198,14,96,29,22,91,157, +99,3,241,22,141,252,210,214,200,32,157,147,3,30,231,77, +16,159,209,39,222,173,97,65,213,214,199,208,131,156,207,192, +147,189,254,144,242,8,106,177,194,73,25,7,67,62,98,95, +50,155,215,79,82,187,17,109,242,252,43,70,53,216,233,45, +13,137,138,186,189,174,144,87,88,42,21,6,75,188,82,83, +144,163,25,221,226,151,187,150,28,228,120,70,150,232,165,143, +177,7,24,143,193,6,239,253,0,244,65,247,247,145,240,42, +78,183,232,229,143,53,71,24,10,145,4,107,185,64,121,21, +165,123,240,240,239,30,49,44,161,74,232,17,206,194,176,137, +250,187,74,220,81,165,246,32,226,99,250,97,235,117,136,108, +216,95,77,106,62,50,95,151,203,151,235,150,185,180,56,226, +82,234,0,218,161,169,217,201,46,127,175,9,196,83,180,226, +67,251,51,201,244,222,6,208,13,125,203,77,74,63,96,125, +22,157,253,227,196,137,21,75,154,50,29,182,91,215,194,131, +185,159,136,182,121,246,148,163,16,77,240,158,15,196,95,116, +250,79,11,43,166,52,6,10,172,212,18,132,100,64,207,116, +210,206,73,1,135,114,38,130,110,236,27,102,86,170,9,206, +243,160,232,203,111,107,105,64,212,196,229,213,149,246,66,194, +161,152,201,168,31,171,142,188,213,34,134,39,116,13,63,234, +221,10,22,117,125,61,45,169,200,216,29,108,250,126,27,74, +151,224,39,191,189,165,32,65,83,182,195,87,251,26,89,164, +247,50,192,102,236,11,102,119,186,73,239,103,160,201,218,63, +72,252,84,183,220,165,228,1,215,115,147,208,47,92,157,109, +227,237,24,85,96,175,54,52,46,139,238,254,51,194,68,200, +13,76,219,44,123,235,65,200,7,236,207,38,243,127,25,104, +179,230,13,19,43,151,36,103,59,120,245,167,149,21,114,10, +67,36,194,106,40,83,98,131,242,46,10,255,228,177,215,24, +34,16,70,65,152,6,89,157,103,67,249,18,221,244,247,150, +128,36,73,219,38,219,255,75,64,147,180,111,146,249,189,44, +176,91,219,2,155,181,111,144,217,185,46,152,223,201,34,191, +183,5,52,75,219,34,155,247,79,16,155,145,47,218,253,105, +100,149,158,195,4,203,185,10,216,149,237,242,245,186,68,62, +109,175,44,148,27,145,38,75,255,98,209,211,159,90,150,208, +37,252,137,103,107,121,64,245,212,165,244,1,246,99,211,241, +187,92,188,124,179,206,141,65,3,183,118,5,186,170,223,175, +66,117,209,253,127,4,184,136,251,169,104,217,71,207,123,34, +208,70,205,89,6,214,108,97,207,52,210,74,9,1,2,34, +36,6,42,172,150,50,4,38,104,206,54,240,110,15,43,174, +180,22,2,12,196,88,4,244,72,103,229,152,68,120,13,39, +106,236,18,246,68,163,189,156,176,48,106,194,242,168,106,251, +99,201,81,142,70,116,201,127,110,24,90,145,161,59,249,228, +189,23,0,46,224,94,46,88,222,85,225,190,44,182,59,215, +4,227,57,88,240,181,191,144,116,104,110,54,186,207,143,99, +39,177,92,169,44,152,219,137,42,187,231,13,17,11,147,38, +79,191,106,213,131,151,127,214,152,33,40,193,66,174,97,70, +165,216,192,188,77,162,191,190,148,54,64,110,100,154,110,221, +11,7,103,126,40,123,226,209,218,14,88,157,101,99,253,16, +245,112,229,182,164,38,35,127,180,185,243,72,104,21,134,75, +180,211,83,154,2,29,213,107,23,161,63,184,252,187,70,28, +73,169,6,56,141,163,34,109,151,172,231,35,241,85,189,126, +145,234,139,107,175,33,68,1,156,194,17,153,178,27,222,214, +209,176,174,138,247,109,48,221,179,135,28,199,72,2,181,84, +33,188,128,115,57,112,113,247,149,177,50,72,230,244,130,198, +109,81,205,119,230,136,66,57,17,97,51,244,37,183,57,245, +32,229,19,244,102,135,187,182,28,166,88,198,212,192,164,205, +147,167,94,165,232,192,223,125,98,220,2,149,85,115,158,1, +37,83,120,35,199,52,194,74,40,17,66,3,176,6,11,189, +198,17,145,50,11,214,118,193,250,46,26,255,197,161,151,57, +182,16,103,80,200,37,204,137,4,91,185,35,73,213,198,199, +241,147,220,238,84,147,156,239,192,209,157,126,210,218,9,40, +147,98,15,51,46,133,14,226,61,26,216,181,237,176,213,58, +6,22,108,237,14,52,93,187,15,141,207,226,179,251,220,56, +52,50,75,215,226,131,251,191,8,244,81,247,214,129,176,11, +218,183,201,244,223,22,210,12,105,137,68,90,45,97,72,68, +212,204,101,197,157,86,82,136,33,8,193,0,142,225,4,141, +217,130,158,237,228,149,151,82,6,192,12,76,217,12,127,233, +105,76,21,204,235,36,153,219,139,10,191,229,37,149,25,179, +2,77,213,206,71,225,155,124,254,30,19,12,231,104,64,215, +244,227,214,169,48,89,242,151,155,150,94,196,248,4,190,233, +231,173,17,65,50,166,7,54,111,159,40,183,35,85,21,255, +219,65,170,39,46,173,142,176,21,58,138,215,108,98,255,50, +209,118,207,26,50,20,39,89,220,119,197,184,6,26,173,229, +0,197,81,150,198,69,209,159,95,198,218,32,184,195,75,59, +35,69,20,206,201,0,159,241,39,156,141,225,3,253,215,133, +242,35,218,229,233,85,141,126,242,218,75,8,19,32,39,50, +108,167,174,164,23,51,30,133,109,210,253,121,100,180,142,131, +37,95,185,43,201,197,206,103,225,217,92,126,92,59,13,165, +74,224,145,222,202,16,153,176,59,218,212,249,52,188,170,211, +111,90,121,33,229,16,196,96,132,135,112,7,150,110,197,139, +54,127,158,25,165,98,96,195,246,234,66,251,49,233,240,220, +46,84,31,93,239,79,32,155,242,31,26,158,213,101,246,173, +51,97,116,132,175,240,85,190,78,151,233,183,173,180,17,114, +2,195,52,202,202,56,25,226,19,250,134,155,181,110,128,219, +184,58,218,214,217,48,190,130,87,125,122,93,35,143,180,86, +2,136,132,88,129,164,74,227,161,216,201,44,95,171,11,236, +215,166,194,103,249,89,109,102,188,10,211,37,251,249,105,108, +21,142,203,164,219,243,138,72,157,69,99,191,48,117,50,205, +183,230,4,131,57,158,144,53,120,232,119,174,8,214,113,177, +244,41,118,49,251,209,233,62,61,174,153,198,90,33,160,64, +74,37,192,72,12,85,72,47,100,28,14,217,140,127,225,232, +76,31,109,239,44,16,91,145,163,27,253,230,149,147,18,14, +196,92,68,252,76,55,237,189,4,48,9,243,34,201,215,238, +66,243,177,249,248,124,62,30,159,205,231,231,177,209,120,46, +22,62,205,175,102,53,155,217,175,78,181,201,241,143,28,215, +72,35,165,20,0,40,128,82,40,32,82,98,129,210,42,8, +215,96,163,247,60,32,122,226,211,250,10,90,181,225,113,221, +52,247,26,65,36,198,42,32,87,50,139,215,110,66,251,48, +249,242,221,58,22,22,77,253,78,21,201,187,46,156,159,193, +38,239,191,32,116,3,223,246,211,210,138,8,157,193,35,191, +181,37,48,73,243,166,137,215,107,18,241,53,189,184,241,106, +76,19,172,231,34,225,87,188,106,211,227,155,121,174,20,22, +72,173,68,16,141,241,2,204,197,196,199,245,211,212,234,4, +155,185,175,136,213,73,54,247,31,17,46,195,110,106,123,98, +209,210,143,88,151,196,103,245,153,117,106,76,18,188,229,35, +245,21,181,122,193,226,174,43,231,37,144,73,185,7,9,159, +226,23,187,158,157,228,114,231,146,224,44,15,171,174,188,151, +2,6,101,92,12,125,200,125,76,60,92,187,13,173,203,224, +155,127,206,24,16,48,33,115,112,225,247,188,32,114,99,211, +240,171,94,189,104,241,199,157,83,2,130,36,76,139,44,222, +187,1,108,195,238,106,115,227,209,216,46,92,159,77,231,239, +48,209,114,143,18,54,68,47,124,156,63,193,108,78,63,104, +253,6,149,93,243,142,9,133,67,50,163,87,60,106,219,98, +155,115,15,16,30,193,45,94,185,41,233,193,204,79,101,203, +124,90,94,81,169,55,40,236,146,246,76,34,189,150,17,52, +98,75,114,178,195,95,123,10,81,4,231,120,64,246,228,163, +247,61,48,120,227,199,184,3,74,167,224,68,143,125,198,156, +64,48,133,51,50,68,39,252,140,55,97,124,4,191,248,245, +174,4,23,121,191,5,37,91,248,51,207,148,210,0,168,129, +74,171,33,76,129,140,202,177,137,248,155,78,222,121,33,228, +0,198,97,144,197,121,23,132,111,240,217,127,78,24,24,177, +33,121,209,229,255,53,160,104,202,119,232,104,94,55,201,253, +78,20,217,185,47,136,221,200,54,253,190,21,38,74,238,112, +210,198,201,17,143,210,54,200,238,124,19,206,199,224,131,255, +255,}; diff --git a/MCUME_teensy/teensy5200/pokey.c b/MCUME_teensy/teensy5200/pokey.c new file mode 100644 index 0000000..59ab863 --- /dev/null +++ b/MCUME_teensy/teensy5200/pokey.c @@ -0,0 +1,710 @@ +/* + * pokey.c - POKEY sound chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include "cpu.h" +#include "pokey.h" +#include "gtia.h" +#ifdef SOUND +#include "pokeysnd.h" +#endif +#include "antic.h" + +#ifdef VOICEBOX +#include "voicebox.h" +#include "votraxsnd.h" +#endif + +#ifdef POKEY_UPDATE +void pokey_update(void); +#endif + +UBYTE POKEY_KBCODE; +UBYTE POKEY_SERIN; +UBYTE POKEY_IRQST; +UBYTE POKEY_IRQEN; +UBYTE POKEY_SKSTAT; +UBYTE POKEY_SKCTL; +int POKEY_DELAYED_SERIN_IRQ; +int POKEY_DELAYED_SEROUT_IRQ; +int POKEY_DELAYED_XMTDONE_IRQ; + +/* structures to hold the 9 pokey control bytes */ +UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ +int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +UBYTE POKEY_POT_input[8] = {228, 228, 228, 228, 228, 228, 228, 228}; +static int pot_scanline; + +#include "noise.h" +//UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +//UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +static ULONG random_scanline_counter; + +ULONG POKEY_GetRandomCounter(void) +{ + return random_scanline_counter; +} + +void POKEY_SetRandomCounter(ULONG value) +{ + random_scanline_counter = value; +} + +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects) +{ + UBYTE byte = 0xff; + +#ifdef STEREO_SOUND + if (addr & 0x0010 && POKEYSND_stereo_enabled) + return 0; +#endif + addr &= 0x0f; + if (addr < 8) { + return (INPUT_handle_trigger(addr)); + //byte = POKEY_POT_input[addr]; + //if (byte <= pot_scanline) + // return byte; + //return pot_scanline; + } + switch (addr) { + case POKEY_OFFSET_ALLPOT: + { + int i; + for (i = 0; i < 8; i++) + if (POKEY_POT_input[i] <= pot_scanline) + byte &= ~(1 << i); /* reset bit if pot value known */ + } + break; + case POKEY_OFFSET_KBCODE: + byte = POKEY_KBCODE; + break; + case POKEY_OFFSET_RANDOM: + if ((POKEY_SKCTL & 0x03) != 0) { + int i = random_scanline_counter + ANTIC_XPOS; + if (POKEY_AUDCTL[0] & POKEY_POLY9) + byte = POKEY_poly9_lookup[i % POKEY_POLY9_SIZE]; + else { + const UBYTE *ptr; + i %= POKEY_POLY17_SIZE; + ptr = POKEY_poly17_lookup + (i >> 3); + i &= 7; + byte = (UBYTE) ((ptr[0] >> i) + (ptr[1] << (8 - i))); + } + } + break; + case POKEY_OFFSET_SERIN: + byte = POKEY_SERIN; +#ifdef DEBUG3 + printf("SERIO: SERIN read, bytevalue %02x\n", POKEY_SERIN); +#endif +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(0,byte); +#endif + break; + case POKEY_OFFSET_IRQST: + byte = POKEY_IRQST; + break; + case POKEY_OFFSET_SKSTAT: +#if SKIP + byte = POKEY_SKSTAT + (CASSETTE_IOLineStatus() << 4); +#else + byte = INPUT_handle_skstat(addr); +// byte = POKEY_SKSTAT; +#endif +#ifdef VOICEBOX + if (VOICEBOX_enabled) { + byte = POKEY_SKSTAT + (VOTRAXSND_busy << 4); + } +#endif + break; + } + + return byte; +} + +static void Update_Counter(int chan_mask); + +static int POKEY_siocheck(void) +{ + return (((POKEY_AUDF[POKEY_CHAN3] == 0x28 || POKEY_AUDF[POKEY_CHAN3] == 0x10 + || POKEY_AUDF[POKEY_CHAN3] == 0x08 || POKEY_AUDF[POKEY_CHAN3] == 0x0a) + && POKEY_AUDF[POKEY_CHAN4] == 0x00) /* intelligent peripherals speeds */ + || (POKEY_SKCTL & 0x78) == 0x28) /* cassette save mode */ + && (POKEY_AUDCTL[0] & 0x28) == 0x28; +} + +#ifndef SOUND_GAIN /* sound gain can be pre-defined in the configure/Makefile */ +#define SOUND_GAIN 4 +#endif + +#ifndef SOUND +#define POKEYSND_Update(addr, val, chip, gain) +#else +//#define POKEYSND_Update(addr, val, chip, gain) if (chip == 0) emu_sndPlaySound((chip*4)+addr, gain*16, val*16) +#endif + +void POKEY_PutByte(UWORD addr, UBYTE byte) +{ +#ifdef STEREO_SOUND + addr &= POKEYSND_stereo_enabled ? 0x1f : 0x0f; +#else + addr &= 0x0f; +#endif + switch (addr) { + case POKEY_OFFSET_AUDC1: + POKEY_AUDC[POKEY_CHAN1] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2: + POKEY_AUDC[POKEY_CHAN2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3: + POKEY_AUDC[POKEY_CHAN3] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4: + POKEY_AUDC[POKEY_CHAN4] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL: + POKEY_AUDCTL[0] = byte; + + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[0] = POKEY_DIV_15; + else + POKEY_Base_mult[0] = POKEY_DIV_64; + + Update_Counter((1 << POKEY_CHAN1) | (1 << POKEY_CHAN2) | (1 << POKEY_CHAN3) | (1 << POKEY_CHAN4)); + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1: + POKEY_AUDF[POKEY_CHAN1] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH1_CH2) ? ((1 << POKEY_CHAN2) | (1 << POKEY_CHAN1)) : (1 << POKEY_CHAN1)); + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2: + POKEY_AUDF[POKEY_CHAN2] = byte; + Update_Counter(1 << POKEY_CHAN2); + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3: + POKEY_AUDF[POKEY_CHAN3] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH3_CH4) ? ((1 << POKEY_CHAN4) | (1 << POKEY_CHAN3)) : (1 << POKEY_CHAN3)); + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4: + POKEY_AUDF[POKEY_CHAN4] = byte; + Update_Counter(1 << POKEY_CHAN4); + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_IRQEN: + POKEY_IRQEN = byte; +#ifdef DEBUG1 + printf("WR: IRQEN = %x, PC = %x\n", POKEY_IRQEN, PC); +#endif + POKEY_IRQST |= ~byte & 0xf7; /* Reset disabled IRQs except XMTDONE */ +#if SKIP + if ((~POKEY_IRQST & POKEY_IRQEN) == 0 && PBI_IRQ == 0 && PIA_IRQ == 0) +#else + if ((~POKEY_IRQST & POKEY_IRQEN) == 0) +#endif + { + CPU_IRQ = 0; + } + else { + CPU_GenerateIRQ(); + } + break; + case POKEY_OFFSET_SKRES: + POKEY_SKSTAT |= 0xe0; + break; + case POKEY_OFFSET_POTGO: + if (!(POKEY_SKCTL & 4)) + pot_scanline = 0; /* slow pot mode */ + break; + case POKEY_OFFSET_SEROUT: +#ifdef VOICEBOX + VOICEBOX_SEROUTPutByte(byte); +#endif +#if SKIP + if ((POKEY_SKCTL & 0x70) == 0x20 && POKEY_siocheck()) + SIO_PutByte(byte); +#endif + /* check if cassette 2-tone mode has been enabled */ + if ((POKEY_SKCTL & 0x08) == 0x00) { + /* intelligent device */ +#if SKIP + POKEY_DELAYED_SEROUT_IRQ = SIO_SEROUT_INTERVAL; +#endif + POKEY_IRQST |= 0x08; +#if SKIP + POKEY_DELAYED_XMTDONE_IRQ = SIO_XMTDONE_INTERVAL; +#endif + } + else { + /* cassette */ + /* some savers patch the cassette baud rate, so we evaluate it here */ + /* scanlines per second*10 bit*audiofrequency/(1.79 MHz/2) */ + POKEY_DELAYED_SEROUT_IRQ = 312*50*10*(POKEY_AUDF[POKEY_CHAN3] + POKEY_AUDF[POKEY_CHAN4]*0x100)/895000; + /* safety check */ + if (POKEY_DELAYED_SEROUT_IRQ >= 3) { + POKEY_IRQST |= 0x08; + POKEY_DELAYED_XMTDONE_IRQ = 2*POKEY_DELAYED_SEROUT_IRQ - 2; + } + else { + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + } + }; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(1, byte); +#endif + break; + case POKEY_OFFSET_STIMER: + POKEY_DivNIRQ[POKEY_CHAN1] = POKEY_DivNMax[POKEY_CHAN1]; + POKEY_DivNIRQ[POKEY_CHAN2] = POKEY_DivNMax[POKEY_CHAN2]; + POKEY_DivNIRQ[POKEY_CHAN4] = POKEY_DivNMax[POKEY_CHAN4]; + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 0, SOUND_GAIN); +#ifdef DEBUG1 + printf("WR: STIMER = %x\n", byte); +#endif + break; + case POKEY_OFFSET_SKCTL: +#ifdef VOICEBOX + VOICEBOX_SKCTLPutByte(byte); +#endif + POKEY_SKCTL = byte; + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 0, SOUND_GAIN); + if (byte & 4) + pot_scanline = 228; /* fast pot mode - return results immediately */ + if ((byte & 0x03) == 0) { + /* POKEY reset. */ + /* Stop serial IO. */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; +#if SKIP + CASSETTE_ResetPOKEY(); +#endif + /* TODO other registers should also be reset. */ + } + break; +#ifdef STEREO_SOUND + case POKEY_OFFSET_AUDC1 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL + POKEY_OFFSET_POKEY2: + POKEY_AUDCTL[1] = byte; + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[1] = POKEY_DIV_15; + else + POKEY_Base_mult[1] = POKEY_DIV_64; + + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_STIMER + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_SKCTL + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 1, SOUND_GAIN); + break; +#endif + } +} + +int POKEY_Initialise(void) +{ + int i; + ULONG reg; + + /* Initialise Serial Port Interrupts */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + + POKEY_KBCODE = 0xff; + POKEY_SERIN = 0x00; /* or 0xff ? */ + POKEY_IRQST = 0xff; + POKEY_IRQEN = 0x00; + POKEY_SKSTAT = 0xef; + POKEY_SKCTL = 0x00; + + for (i = 0; i < (POKEY_MAXPOKEYS * 4); i++) { + POKEY_AUDC[i] = 0; + POKEY_AUDF[i] = 0; + } + + for (i = 0; i < POKEY_MAXPOKEYS; i++) { + POKEY_AUDCTL[i] = 0; + POKEY_Base_mult[i] = POKEY_DIV_64; + } + + for (i = 0; i < 4; i++) + POKEY_DivNIRQ[i] = POKEY_DivNMax[i] = 0; + + pot_scanline = 0; + +#if SKIP + /* initialise poly9_lookup */ + reg = 0x1ff; + for (i = 0; i < POKEY_POLY9_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 1) << 8) + (reg >> 1); + POKEY_poly9_lookup[i] = (UBYTE) reg; + } + /* initialise poly17_lookup */ + reg = 0x1ffff; + for (i = 0; i < POKEY_POLY17_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 0xff) << 9) + (reg >> 8); + POKEY_poly17_lookup[i] = (UBYTE) (reg >> 1); + } +#endif + +#ifndef BASIC +#if SKIP + if (INPUT_Playingback()) { + random_scanline_counter = INPUT_PlaybackInt(); + } + else +#endif +#endif + { + random_scanline_counter = +#ifdef HAVE_WINDOWS_H + GetTickCount() % POKEY_POLY17_SIZE; +#elif defined(HAVE_TIME) + time(NULL) % POKEY_POLY17_SIZE; +#else + 0; +#endif + } +#ifndef BASIC +#if SKIP + if (INPUT_Recording()) { + INPUT_RecordInt(random_scanline_counter); + } +#endif +#endif + + return TRUE; +} + +void POKEY_Frame(void) +{ + random_scanline_counter %= (POKEY_AUDCTL[0] & POKEY_POLY9) ? POKEY_POLY9_SIZE : POKEY_POLY17_SIZE; +} + +/*************************************************************************** + ** Generate POKEY Timer IRQs if required ** + ** called on a per-scanline basis, not very precise, but good enough ** + ** for most applications ** + ***************************************************************************/ + +void POKEY_Scanline(void) +{ +#ifdef POKEY_UPDATE + pokey_update(); +#endif + +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly(); +#endif + +#ifndef BASIC + INPUT_Scanline(); /* Handle Amiga and ST mice. */ + /* It's not a part of POKEY emulation, */ + /* but it looks to be the best place to put it. */ +#endif + + /* on nonpatched i/o-operation, enable the cassette timing */ +#if SKIP + if (!ESC_enable_sio_patch) { + if (CASSETTE_AddScanLine()) + POKEY_DELAYED_SERIN_IRQ = 1; + } +#endif + if ((POKEY_SKCTL & 0x03) == 0) + /* Don't process timers when POKEY is in reset mode. */ + return; + + if (pot_scanline < 228) + pot_scanline++; + + random_scanline_counter += ANTIC_LINE_C; + + if (POKEY_DELAYED_SERIN_IRQ > 0) { + if (--POKEY_DELAYED_SERIN_IRQ == 0) { + /* Load a byte to SERIN - even when the IRQ is disabled. */ +#if SKIP + POKEY_SERIN = SIO_GetByte(); +#else +// POKEY_SERIN = 0; +#endif + if (POKEY_IRQEN & 0x20) { + if (POKEY_IRQST & 0x20) { + POKEY_IRQST &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + else { + POKEY_SKSTAT &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SERIN Interrupt missed, bytevalue %02x\n", POKEY_SERIN); + } +#endif + } + } + + if (POKEY_DELAYED_SEROUT_IRQ > 0) { + if (--POKEY_DELAYED_SEROUT_IRQ == 0) { + if (POKEY_IRQEN & 0x10) { +#ifdef DEBUG2 + printf("SERIO: SEROUT Interrupt triggered\n"); +#endif + POKEY_IRQST &= 0xef; + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SEROUT Interrupt missed\n"); + } +#endif + } + } + + if (POKEY_DELAYED_XMTDONE_IRQ > 0) + if (--POKEY_DELAYED_XMTDONE_IRQ == 0) { + POKEY_IRQST &= 0xf7; + if (POKEY_IRQEN & 0x08) { +#ifdef DEBUG2 + printf("SERIO: XMTDONE Interrupt triggered\n"); +#endif + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else + printf("SERIO: XMTDONE Interrupt missed\n"); +#endif + } + + if ((POKEY_DivNIRQ[POKEY_CHAN1] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN1] += POKEY_DivNMax[POKEY_CHAN1]; + if (POKEY_IRQEN & 0x01) { + POKEY_IRQST &= 0xfe; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN2] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN2] += POKEY_DivNMax[POKEY_CHAN2]; + if (POKEY_IRQEN & 0x02) { + POKEY_IRQST &= 0xfd; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN4] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN4] += POKEY_DivNMax[POKEY_CHAN4]; + if (POKEY_IRQEN & 0x04) { + POKEY_IRQST &= 0xfb; + CPU_GenerateIRQ(); + } + } +} + +/*****************************************************************************/ +/* Module: Update_Counter() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has been added */ +/* here again as I need the precise frequency for the pokey timers */ +/* again. The pokey emulation is therefore somewhat sub-optimal */ +/* since the actual pokey emulation should grab the frequency values */ +/* directly from here instead of calculating them again. */ +/* */ +/* Author: Ron Fries,Thomas Richter */ +/* Date: March 27, 1998 */ +/* */ +/* Inputs: chan_mask: Channel mask, one bit per channel. */ +/* The channels that need to be updated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static void Update_Counter(int chan_mask) +{ + +/************************************************************/ +/* As defined in the manual, the exact Div_n_cnt values are */ +/* different depending on the frequency and resolution: */ +/* 64 kHz or 15 kHz - AUDF + 1 */ +/* 1 MHz, 8-bit - AUDF + 4 */ +/* 1 MHz, 16-bit - AUDF[CHAN1]+256*AUDF[CHAN2] + 7 */ +/************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN1] = POKEY_AUDF[POKEY_CHAN1] + 4; + else + POKEY_DivNMax[POKEY_CHAN1] = (POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN1] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN1] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN2] = POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 7; + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN2] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN2] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[0] & POKEY_CH3_179) + POKEY_DivNMax[POKEY_CHAN4] = POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 7; + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN4] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN4] = ANTIC_LINE_C; + } +} + +#ifndef BASIC + +void POKEY_StateSave(void) +{ + int shift_key = 0; + int keypressed = 0; + + StateSav_SaveUBYTE(&POKEY_KBCODE, 1); + StateSav_SaveUBYTE(&POKEY_IRQST, 1); + StateSav_SaveUBYTE(&POKEY_IRQEN, 1); + StateSav_SaveUBYTE(&POKEY_SKCTL, 1); + + StateSav_SaveINT(&shift_key, 1); + StateSav_SaveINT(&keypressed, 1); + StateSav_SaveINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_SaveUBYTE(&POKEY_AUDF[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDC[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDCTL[0], 1); + + StateSav_SaveINT(&POKEY_DivNIRQ[0], 4); + StateSav_SaveINT(&POKEY_DivNMax[0], 4); + StateSav_SaveINT(&POKEY_Base_mult[0], 1); +} + +void POKEY_StateRead(void) +{ + int i; + int shift_key; + int keypressed; + + StateSav_ReadUBYTE(&POKEY_KBCODE, 1); + StateSav_ReadUBYTE(&POKEY_IRQST, 1); + StateSav_ReadUBYTE(&POKEY_IRQEN, 1); + StateSav_ReadUBYTE(&POKEY_SKCTL, 1); + + StateSav_ReadINT(&shift_key, 1); + StateSav_ReadINT(&keypressed, 1); + StateSav_ReadINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_ReadUBYTE(&POKEY_AUDF[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDC[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDCTL[0], 1); + for (i = 0; i < 4; i++) { + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDF1 + i * 2), POKEY_AUDF[i]); + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDC1 + i * 2), POKEY_AUDC[i]); + } + POKEY_PutByte(POKEY_OFFSET_AUDCTL, POKEY_AUDCTL[0]); + + StateSav_ReadINT(&POKEY_DivNIRQ[0], 4); + StateSav_ReadINT(&POKEY_DivNMax[0], 4); + StateSav_ReadINT(&POKEY_Base_mult[0], 1); +} + +#endif diff --git a/MCUME_teensy/teensy5200/pokey.h b/MCUME_teensy/teensy5200/pokey.h new file mode 100644 index 0000000..b9a0c29 --- /dev/null +++ b/MCUME_teensy/teensy5200/pokey.h @@ -0,0 +1,120 @@ +#ifndef POKEY_H_ +#define POKEY_H_ + + +#include "atari.h" + + +#define POKEY_OFFSET_AUDF1 0x00 +#define POKEY_OFFSET_AUDC1 0x01 +#define POKEY_OFFSET_AUDF2 0x02 +#define POKEY_OFFSET_AUDC2 0x03 +#define POKEY_OFFSET_AUDF3 0x04 +#define POKEY_OFFSET_AUDC3 0x05 +#define POKEY_OFFSET_AUDF4 0x06 +#define POKEY_OFFSET_AUDC4 0x07 +#define POKEY_OFFSET_AUDCTL 0x08 +#define POKEY_OFFSET_STIMER 0x09 +#define POKEY_OFFSET_SKRES 0x0a +#define POKEY_OFFSET_POTGO 0x0b +#define POKEY_OFFSET_SEROUT 0x0d +#define POKEY_OFFSET_IRQEN 0x0e +#define POKEY_OFFSET_SKCTL 0x0f + +#define POKEY_OFFSET_POT0 0x00 +#define POKEY_OFFSET_POT1 0x01 +#define POKEY_OFFSET_POT2 0x02 +#define POKEY_OFFSET_POT3 0x03 +#define POKEY_OFFSET_POT4 0x04 +#define POKEY_OFFSET_POT5 0x05 +#define POKEY_OFFSET_POT6 0x06 +#define POKEY_OFFSET_POT7 0x07 +#define POKEY_OFFSET_ALLPOT 0x08 +#define POKEY_OFFSET_KBCODE 0x09 +#define POKEY_OFFSET_RANDOM 0x0a +#define POKEY_OFFSET_SERIN 0x0d +#define POKEY_OFFSET_IRQST 0x0e +#define POKEY_OFFSET_SKSTAT 0x0f + +#define POKEY_OFFSET_POKEY2 0x10 /* offset to second pokey chip (STEREO expansion) */ + +#ifndef ASAP + +extern UBYTE POKEY_KBCODE; +extern UBYTE POKEY_IRQST; +extern UBYTE POKEY_IRQEN; +extern UBYTE POKEY_SKSTAT; +extern UBYTE POKEY_SKCTL; +extern int POKEY_DELAYED_SERIN_IRQ; +extern int POKEY_DELAYED_SEROUT_IRQ; +extern int POKEY_DELAYED_XMTDONE_IRQ; + +extern UBYTE POKEY_POT_input[8]; + +ULONG POKEY_GetRandomCounter(void); +void POKEY_SetRandomCounter(ULONG value); +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects); +void POKEY_PutByte(UWORD addr, UBYTE byte); +int POKEY_Initialise(void); +void POKEY_Frame(void); +void POKEY_Scanline(void); +void POKEY_StateSave(void); +void POKEY_StateRead(void); + +#endif + +/* CONSTANT DEFINITIONS */ + +/* definitions for AUDCx (D201, D203, D205, D207) */ +#define POKEY_NOTPOLY5 0x80 /* selects POLY5 or direct CLOCK */ +#define POKEY_POLY4 0x40 /* selects POLY4 or POLY17 */ +#define POKEY_PURETONE 0x20 /* selects POLY4/17 or PURE tone */ +#define POKEY_VOL_ONLY 0x10 /* selects VOLUME OUTPUT ONLY */ +#define POKEY_VOLUME_MASK 0x0f /* volume mask */ + +/* definitions for AUDCTL (D208) */ +#define POKEY_POLY9 0x80 /* selects POLY9 or POLY17 */ +#define POKEY_CH1_179 0x40 /* selects 1.78979 MHz for Ch 1 */ +#define POKEY_CH3_179 0x20 /* selects 1.78979 MHz for Ch 3 */ +#define POKEY_CH1_CH2 0x10 /* clocks channel 1 w/channel 2 */ +#define POKEY_CH3_CH4 0x08 /* clocks channel 3 w/channel 4 */ +#define POKEY_CH1_FILTER 0x04 /* selects channel 1 high pass filter */ +#define POKEY_CH2_FILTER 0x02 /* selects channel 2 high pass filter */ +#define POKEY_CLOCK_15 0x01 /* selects 15.6999kHz or 63.9210kHz */ + +/* for accuracy, the 64kHz and 15kHz clocks are exact divisions of + the 1.79MHz clock */ +#define POKEY_DIV_64 28 /* divisor for 1.79MHz clock to 64 kHz */ +#define POKEY_DIV_15 114 /* divisor for 1.79MHz clock to 15 kHz */ + +/* the size (in entries) of the 4 polynomial tables */ +#define POKEY_POLY4_SIZE 0x000f +#define POKEY_POLY5_SIZE 0x001f +#define POKEY_POLY9_SIZE 511 //0x01ff +#define POKEY_POLY17_SIZE 16385//0x0001ffff + +#define POKEY_MAXPOKEYS 2 /* max number of emulated chips */ + +/* channel/chip definitions */ +#define POKEY_CHAN1 0 +#define POKEY_CHAN2 1 +#define POKEY_CHAN3 2 +#define POKEY_CHAN4 3 +#define POKEY_CHIP1 0 +#define POKEY_CHIP2 4 +#define POKEY_CHIP3 8 +#define POKEY_CHIP4 12 +#define POKEY_SAMPLE 127 + +/* structures to hold the 9 pokey control bytes */ +extern UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +extern UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +extern UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ + +extern int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +extern int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +extern const UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +extern const UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +#endif /* POKEY_H_ */ diff --git a/MCUME_teensy/teensy5200/pokeysnd.c b/MCUME_teensy/teensy5200/pokeysnd.c new file mode 100644 index 0000000..c3d66e5 --- /dev/null +++ b/MCUME_teensy/teensy5200/pokeysnd.c @@ -0,0 +1,1427 @@ +/* + * pokeysnd.c - POKEY sound chip emulation, v2.4 + * + * Copyright (C) 1996-1998 Ron Fries + * Copyright (C) 1998-2014 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifdef skip +#include "config.h" +#include +#include + +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "atari.h" +#ifndef __PLUS +#include "sndsave.h" +#else +#include "sound_win.h" +#endif +#endif +#include "mzpokeysnd.h" +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" +#include "util.h" +#endif + +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" + +#ifdef WORDS_UNALIGNED_OK +# define READ_U32(x) (*(ULONG *) (x)) +# define WRITE_U32(x, d) (*(ULONG *) (x) = (d)) +#else +# ifdef WORDS_BIGENDIAN +# define READ_U32(x) (((*(unsigned char *)(x)) << 24) | ((*((unsigned char *)(x) + 1)) << 16) | \ + ((*((unsigned char *)(x) + 2)) << 8) | ((*((unsigned char *)(x) + 3)))) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *) (x)) = (((i) >> 24) & 255); \ + (*((unsigned char *) (x) + 1)) = (((i) >> 16) & 255); \ + (*((unsigned char *) (x) + 2)) = (((i) >> 8) & 255); \ + (*((unsigned char *) (x) + 3)) = ((i) & 255); \ + } +# else +# define READ_U32(x) ((*(unsigned char *) (x)) | ((*((unsigned char *) (x) + 1)) << 8) | \ + ((*((unsigned char *) (x) + 2)) << 16) | ((*((unsigned char *) (x) + 3)) << 24)) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *)(x)) = ((i) & 255); \ + (*((unsigned char *)(x) + 1)) = (((i) >> 8) & 255); \ + (*((unsigned char *)(x) + 2)) = (((i) >> 16) & 255); \ + (*((unsigned char *)(x) + 3)) = (((i) >> 24) & 255); \ + } +# endif +#endif + +/* GLOBAL VARIABLE DEFINITIONS */ + +/* number of pokey chips currently emulated */ +static UBYTE Num_pokeys; + +static UBYTE pokeysnd_AUDV[4 * POKEY_MAXPOKEYS]; /* Channel volume - derived */ + +static UBYTE Outbit[4 * POKEY_MAXPOKEYS]; /* current state of the output (high or low) */ + +static UBYTE Outvol[4 * POKEY_MAXPOKEYS]; /* last output volume for each channel */ + +/* Initialize the bit patterns for the polynomials. */ + +/* The 4bit and 5bit patterns are the identical ones used in the pokey chip. */ +/* Though the patterns could be packed with 8 bits per byte, using only a */ +/* single bit per byte keeps the math simple, which is important for */ +/* efficient processing. */ + +static const UBYTE bit4[POKEY_POLY4_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0}; /* new table invented by Perry */ +#else +{1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0}; /* original POKEY 2.3 table */ +#endif + +static const UBYTE bit5[POKEY_POLY5_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0}; +#else +{0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}; +#endif + +static ULONG P4 = 0, /* Global position pointer for the 4-bit POLY array */ + P5 = 0, /* Global position pointer for the 5-bit POLY array */ + P9 = 0, /* Global position pointer for the 9-bit POLY array */ + P17 = 0; /* Global position pointer for the 17-bit POLY array */ + +static ULONG Div_n_cnt[4 * POKEY_MAXPOKEYS], /* Divide by n counter. one for each channel */ + Div_n_max[4 * POKEY_MAXPOKEYS]; /* Divide by n maximum, one for each channel */ + +static ULONG Samp_n_max, /* Sample max. For accuracy, it is *256 */ + Samp_n_cnt[2]; /* Sample cnt. */ + +#ifdef INTERPOLATE_SOUND +#ifdef CLIP_SOUND +static SWORD last_val = 0; /* last output value */ +#else +static UWORD last_val = 0; +#endif +#ifdef STEREO_SOUND +#ifdef CLIP_SOUND +static SWORD last_val2 = 0; /* last output value */ +#else +static UWORD last_val2 = 0; +#endif +#endif +#endif + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +int POKEYSND_sampbuf_ptr = 0; /* pointer to sampbuf */ +int POKEYSND_sampbuf_rptr = 0; /* pointer to read from sampbuf */ +int POKEYSND_sampbuf_last = 0; /* last absolute time */ +int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +int POKEYSND_sampbuf_lastval = 0; /* last volume */ +int POKEYSND_sampout; /* last out volume */ +int POKEYSND_samp_freq; +int POKEYSND_samp_consol_val = 0; /* actual value of console sound */ +#ifdef STEREO_SOUND +static int sampbuf_val2[POKEYSND_SAMPBUF_MAX]; /* volume values */ +static int sampbuf_cnt2[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +static int sampbuf_ptr2 = 0; /* pointer to sampbuf */ +static int sampbuf_rptr2 = 0; /* pointer to read from sampbuf */ +static int sampbuf_last2 = 0; /* last absolute time */ +static int sampbuf_lastval2 = 0; /* last volume */ +static int sampout2; /* last out volume */ +#endif +#endif /* VOL_ONLY_SOUND */ + +static ULONG snd_freq17 = POKEYSND_FREQ_17_EXACT; +int POKEYSND_playback_freq = 44100; +UBYTE POKEYSND_num_pokeys = 1; +int POKEYSND_snd_flags = 0; +static int mz_quality = 0; /* default quality for mzpokeysnd */ +#ifdef __PLUS +int mz_clear_regs = 0; +#endif + +int POKEYSND_enable_new_pokey = TRUE; +int POKEYSND_bienias_fix = TRUE; /* when TRUE, high frequencies get emulated: better sound but slower */ +#if defined(__PLUS) && !defined(_WX_) +#define BIENIAS_FIX (g_Sound.nBieniasFix) +#else +#define BIENIAS_FIX POKEYSND_bienias_fix +#endif +#ifndef ASAP +int POKEYSND_stereo_enabled = FALSE; +#endif + +int POKEYSND_volume = 0x100; + +/* multiple sound engine interface */ +static void pokeysnd_process_8(void *sndbuffer, int sndn); +static void pokeysnd_process_16(void *sndbuffer, int sndn); +static void null_pokey_process(void *sndbuffer, int sndn) {} +void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn) = null_pokey_process; + +static void Update_pokey_sound_rf(UWORD, UBYTE, UBYTE, UBYTE); +static void null_pokey_sound(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) {} +void (*POKEYSND_Update_ptr) (UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) + = null_pokey_sound; + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data); +static void null_serio_sound(int out, UBYTE data) {} +void (*POKEYSND_UpdateSerio)(int out, UBYTE data) = null_serio_sound; +int POKEYSND_serio_sound_enabled = 1; +#endif + +#ifdef CONSOLE_SOUND +static void Update_consol_sound_rf(int set); +static void null_consol_sound(int set) {} +void (*POKEYSND_UpdateConsol_ptr)(int set) = null_consol_sound; +int POKEYSND_console_sound_enabled = 1; +#endif + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void); +static void null_vol_only_sound(void) {} +void (*POKEYSND_UpdateVolOnly)(void) = null_vol_only_sound; +#endif + +#ifdef SYNCHRONIZED_SOUND +UBYTE *POKEYSND_process_buffer = NULL; +unsigned int POKEYSND_process_buffer_length; +unsigned int POKEYSND_process_buffer_fill; +static unsigned int prev_update_tick; + +static void Generate_sync_rf(unsigned int num_ticks); +static void null_generate_sync(unsigned int num_ticks) {} +void (*POKEYSND_GenerateSync)(unsigned int num_ticks) = null_generate_sync; + +static double ticks_per_sample; +static double samp_pos; +static int speaker; +static int const CONSOLE_VOL = 32; +#endif /* SYNCHRONIZED_SOUND */ + +/*****************************************************************************/ +/* In my routines, I treat the sample output as another divide by N counter */ +/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */ +/* which has 8 binary digits to the right of the decimal point. I use a two */ +/* byte array to give me a minimum of 40 bits, and then use pointer math to */ +/* reference either the 24.8 whole/fraction combination or the 32-bit whole */ +/* only number. This is mainly used to keep the math simple for */ +/* optimization. See below: */ +/* */ +/* Representation on little-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx */ +/* fraction whole whole whole whole unused unused unused */ +/* */ +/* Samp_n_cnt[0] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+1) gives me the 32-bit whole */ +/* number only. */ +/* */ +/* Representation on big-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx.xxxxxxxx */ +/* unused unused unused whole whole whole whole fraction */ +/* */ +/* Samp_n_cnt[1] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+3) gives me the 32-bit whole */ +/* number only. */ +/*****************************************************************************/ + + +/*****************************************************************************/ +/* Module: pokeysnd_init_rf() */ +/* Purpose: to handle the power-up initialization functions */ +/* these functions should only be executed on a cold-restart */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: freq17 - the value for the '1.79MHz' Pokey audio clock */ +/* playback_freq - the playback frequency in samples per second */ +/* num_pokeys - specifies the number of pokey chips to be emulated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags); + +#ifdef VOL_ONLY_SOUND +/* Initialise variables related to volume-only sound. */ +static void init_vol_only(void) +{ + POKEYSND_sampbuf_rptr = POKEYSND_sampbuf_ptr; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_lastval = 0; + POKEYSND_samp_consol_val = 0; +#ifdef STEREO_SOUND + sampbuf_rptr2 = sampbuf_ptr2; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_lastval2 = 0; +#endif /* STEREO_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ + +int POKEYSND_DoInit(void) +{ +#if SKIP + SndSave_CloseSoundFile(); +#endif + +#ifdef VOL_ONLY_SOUND + init_vol_only(); +#endif /* VOL_ONLY_SOUND */ + +#if SKIP + if (POKEYSND_enable_new_pokey) + return MZPOKEYSND_Init(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags, mz_quality +#ifdef __PLUS + , mz_clear_regs +#endif + ); + else +#endif + return pokeysnd_init_rf(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags); +} + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif +) +{ + snd_freq17 = freq17; + POKEYSND_playback_freq = playback_freq; + POKEYSND_num_pokeys = num_pokeys; + POKEYSND_snd_flags = flags; +#ifdef __PLUS + mz_clear_regs = clear_regs; +#endif +#ifdef SYNCHRONIZED_SOUND + { + /* A single call to Atari800_Frame may emulate a bit more CPU ticks than the exact number of + ticks per frame (Atari800_tv_mode*114). So we add a few ticks to buffer size just to be safe. */ + unsigned int const surplus_ticks = 10; + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + unsigned int max_ticks_per_frame = ticks_per_frame + surplus_ticks; + double ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + POKEYSND_process_buffer_length = POKEYSND_num_pokeys * (unsigned int)ceil((double)max_ticks_per_frame / ticks_per_sample) * ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2:1); + free(POKEYSND_process_buffer); + POKEYSND_process_buffer = (UBYTE *)Util_malloc(POKEYSND_process_buffer_length); + POKEYSND_process_buffer_fill = 0; + prev_update_tick = ANTIC_CPU_CLOCK; + } +#endif /* SYNCHRONIZED_SOUND */ + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Init(playback_freq, num_pokeys, (flags & POKEYSND_BIT16)); +#endif + return POKEYSND_DoInit(); +} + +void POKEYSND_SetMzQuality(int quality) /* specially for win32, perhaps not needed? */ +{ + mz_quality = quality; +} + +void POKEYSND_Process(void *sndbuffer, int sndn) +{ + POKEYSND_Process_ptr(sndbuffer, sndn); +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(sndbuffer,sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) +#if SKIP + SndSave_WriteToSoundFile((const unsigned char *)sndbuffer, sndn); +#endif +#endif +} + +#ifdef SYNCHRONIZED_SOUND +static void Update_synchronized_sound(void) +{ + POKEYSND_GenerateSync(ANTIC_CPU_CLOCK - prev_update_tick); + prev_update_tick = ANTIC_CPU_CLOCK; +} + +int POKEYSND_UpdateProcessBuffer(void) +{ + int sndn; + Update_synchronized_sound(); + sndn = POKEYSND_process_buffer_fill / ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2 : 1); + POKEYSND_process_buffer_fill = 0; + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(POKEYSND_process_buffer, sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) + SndSave_WriteToSoundFile((const unsigned char *)POKEYSND_process_buffer, sndn); +#endif + return sndn; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +static void init_syncsound(void) +{ + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + samp_pos = 0.0; + POKEYSND_GenerateSync = Generate_sync_rf; + speaker = 0; +} +#endif /* SYNCHRONIZED_SOUND */ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags) +{ + UBYTE chan; + + POKEYSND_Update_ptr = Update_pokey_sound_rf; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio = Update_serio_sound_rf; +#endif +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol_ptr = Update_consol_sound_rf; +#endif +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly = Update_vol_only_sound_rf; +#endif + + POKEYSND_Process_ptr = (flags & POKEYSND_BIT16) ? pokeysnd_process_16 : pokeysnd_process_8; + +#ifdef VOL_ONLY_SOUND + POKEYSND_samp_freq = playback_freq; +#endif + + /* start all of the polynomial counters at zero */ + P4 = 0; + P5 = 0; + P9 = 0; + P17 = 0; + + /* calculate the sample 'divide by N' value based on the playback freq. */ + Samp_n_max = ((ULONG) freq17 << 8) / playback_freq; + + Samp_n_cnt[0] = 0; /* initialize all bits of the sample */ + Samp_n_cnt[1] = 0; /* 'divide by N' counter */ + + for (chan = 0; chan < (POKEY_MAXPOKEYS * 4); chan++) { + Outvol[chan] = 0; + Outbit[chan] = 0; + Div_n_cnt[chan] = 0; + Div_n_max[chan] = 0x7fffffffL; + pokeysnd_AUDV[chan] = 0; +#ifdef VOL_ONLY_SOUND + POKEYSND_sampbuf_AUDV[chan] = 0; +#endif + } + + /* set the number of pokey chips currently emulated */ + Num_pokeys = num_pokeys; + +#ifdef SYNCHRONIZED_SOUND + init_syncsound(); +#endif + return 0; /* OK */ +} + + +/*****************************************************************************/ +/* Module: Update_pokey_sound_rf() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has not been */ +/* optimized. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: addr - the address of the parameter to be changed */ +/* val - the new value to be placed in the specified address */ +/* gain - specified as an 8-bit fixed point number - use 1 for no */ +/* amplification (output is multiplied by gain) */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) +{ +#ifdef SYNCHRONIZED_SOUND + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_Update_ptr(addr, val, chip, gain); +} + +static void Update_pokey_sound_rf(UWORD addr, UBYTE val, UBYTE chip, + UBYTE gain) +{ + ULONG new_val = 0; + UBYTE chan; + UBYTE chan_mask; + UBYTE chip_offs; + + /* calculate the chip_offs for the channel arrays */ + chip_offs = chip << 2; + + /* determine which address was changed */ + switch (addr & 0x0f) { + case POKEY_OFFSET_AUDF1: + /* POKEY_AUDF[POKEY_CHAN1 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN1; + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) /* if ch 1&2 tied together */ + chan_mask |= 1 << POKEY_CHAN2; /* then also change on ch2 */ + break; + case POKEY_OFFSET_AUDC1: + /* POKEY_AUDC[POKEY_CHAN1 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN1 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN1; + break; + case POKEY_OFFSET_AUDF2: + /* POKEY_AUDF[POKEY_CHAN2 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDC2: + /* POKEY_AUDC[POKEY_CHAN2 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN2 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDF3: + /* POKEY_AUDF[POKEY_CHAN3 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN3; + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) /* if ch 3&4 tied together */ + chan_mask |= 1 << POKEY_CHAN4; /* then also change on ch4 */ + break; + case POKEY_OFFSET_AUDC3: + /* POKEY_AUDC[POKEY_CHAN3 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN3 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN3; + break; + case POKEY_OFFSET_AUDF4: + /* POKEY_AUDF[POKEY_CHAN4 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDC4: + /* POKEY_AUDC[POKEY_CHAN4 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN4 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDCTL: + /* POKEY_AUDCTL[chip] = val; */ + chan_mask = 15; /* all channels */ + break; + default: + chan_mask = 0; + break; + } + + /************************************************************/ + /* As defined in the manual, the exact Div_n_cnt values are */ + /* different depending on the frequency and resolution: */ + /* 64 kHz or 15 kHz - AUDF + 1 */ + /* 1 MHz, 8-bit - AUDF + 4 */ + /* 1 MHz, 16-bit - POKEY_AUDF[POKEY_CHAN1]+256*POKEY_AUDF[POKEY_CHAN2] + 7 */ + /************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN1 + chip_offs]) { + Div_n_max[POKEY_CHAN1 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN1 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN1 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN2 + chip_offs]) { + Div_n_max[POKEY_CHAN2 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN2 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN2 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN3)) { + /* process channel 3 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN3 + chip_offs]) { + Div_n_max[POKEY_CHAN3 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN3 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN3 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN4 + chip_offs]) { + Div_n_max[POKEY_CHAN4 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN4 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN4 + chip_offs] = new_val; + } + } + } + + /* if channel is volume only, set current output */ + for (chan = POKEY_CHAN1; chan <= POKEY_CHAN4; chan++) { + if (chan_mask & (1 << chan)) { + +#ifdef VOL_ONLY_SOUND + +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + if ((POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY)) { + +#ifdef STEREO_SOUND + +#ifdef __PLUS + if (POKEYSND_stereo_enabled && chip & 0x01) +#else + if (chip & 0x01) +#endif + { + sampbuf_lastval2 += pokeysnd_AUDV[chan + chip_offs] + - POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + sampbuf_val2[sampbuf_ptr2] = sampbuf_lastval2; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + sampbuf_cnt2[sampbuf_ptr2] = + (ANTIC_CPU_CLOCK - sampbuf_last2) * 128 * POKEYSND_samp_freq / 178979; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_ptr2++; + if (sampbuf_ptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_ptr2 = 0; + if (sampbuf_ptr2 == sampbuf_rptr2) { + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + } + } + else +#endif /* STEREO_SOUND */ + { + POKEYSND_sampbuf_lastval += pokeysnd_AUDV[chan + chip_offs] + -POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + } + } + +#endif /* VOL_ONLY_SOUND */ + + /* I've disabled any frequencies that exceed the sampling + frequency. There isn't much point in processing frequencies + that the hardware can't reproduce. I've also disabled + processing if the volume is zero. */ + + /* if the channel is volume only */ + /* or the channel is off (volume == 0) */ + /* or the channel freq is greater than the playback freq */ + if ( (POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY) || + ((POKEY_AUDC[chan + chip_offs] & POKEY_VOLUME_MASK) == 0) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* indicate the channel is 'on' */ + Outvol[chan + chip_offs] = 1; + + /* can only ignore channel if filtering off */ + if ((chan == POKEY_CHAN3 && !(POKEY_AUDCTL[chip] & POKEY_CH1_FILTER)) || + (chan == POKEY_CHAN4 && !(POKEY_AUDCTL[chip] & POKEY_CH2_FILTER)) || + (chan == POKEY_CHAN1) || + (chan == POKEY_CHAN2) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* and set channel freq to max to reduce processing */ + Div_n_max[chan + chip_offs] = 0x7fffffffL; + Div_n_cnt[chan + chip_offs] = 0x7fffffffL; + } + } + } + } + + /* _enable(); */ /* RSF - removed for portability 31-MAR-97 */ +} + + +/*****************************************************************************/ +/* Module: pokeysnd_process() */ +/* Purpose: To fill the output buffer with the sound output based on the */ +/* pokey chip parameters. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: *buffer - pointer to the buffer where the audio output will */ +/* be placed */ +/* sndn - for mono, size of the playback buffer in samples */ +/* for stereo, size of the playback buffer in left samples */ +/* plus right samples. */ +/* num_pokeys - number of currently active pokeys to process */ +/* */ +/* Outputs: the buffer will be filled with n bytes of audio - no return val */ +/* Also the buffer will be written to disk if Sound recording is ON */ +/* */ +/*****************************************************************************/ + +static void pokeysnd_process_8(void *sndbuffer, int sndn) +{ + register UBYTE *buffer = (UBYTE *) sndbuffer; + register int n = sndn; + + register ULONG *div_n_ptr; + register UBYTE *samp_cnt_w_ptr; + register ULONG event_min; + register UBYTE next_event; +#ifdef CLIP_SOUND + register SWORD cur_val; /* then we have to count as 16-bit signed */ +#ifdef STEREO_SOUND + register SWORD cur_val2; +#endif +#else /* CLIP_SOUND */ + register UBYTE cur_val; /* otherwise we'll simplify as 8-bit unsigned */ +#ifdef STEREO_SOUND + register UBYTE cur_val2; +#endif +#endif /* CLIP_SOUND */ + register UBYTE *out_ptr; + register UBYTE audc; + register UBYTE toggle; + register UBYTE count; + register UBYTE *vol_ptr; + + /* set a pointer to the whole portion of the samp_n_cnt */ +#ifdef WORDS_BIGENDIAN + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 3); +#else + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 1); +#endif + + /* set a pointer for optimization */ + out_ptr = Outvol; + vol_ptr = pokeysnd_AUDV; + + /* The current output is pre-determined and then adjusted based on each */ + /* output change for increased performance (less over-all math). */ + /* add the output values of all 4 channels */ + cur_val = POKEYSND_SAMP_MIN; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + cur_val2 = POKEYSND_SAMP_MIN; +#endif /* STEREO_SOUND */ + + count = Num_pokeys; + do { + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + count--; + if (count) { + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + } + else + break; + } +#endif /* STEREO_SOUND */ + count--; + } while (count); + +#ifdef SYNCHRONIZED_SOUND + cur_val += speaker; +#endif + + /* loop until the buffer is filled */ + while (n) { + /* Normally the routine would simply decrement the 'div by N' */ + /* counters and react when they reach zero. Since we normally */ + /* won't be processing except once every 80 or so counts, */ + /* I've optimized by finding the smallest count and then */ + /* 'accelerated' time by adjusting all pointers by that amount. */ + + /* find next smallest event (either sample or chan 1-4) */ + next_event = POKEY_SAMPLE; + event_min = READ_U32(samp_cnt_w_ptr); + + div_n_ptr = Div_n_cnt; + + count = 0; + do { + /* Though I could have used a loop here, this is faster */ + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN1 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN2 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN3 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN4 + (count << 2); + } + div_n_ptr++; + + count++; + } while (count < Num_pokeys); + + /* if the next event is a channel change */ + if (next_event != POKEY_SAMPLE) { + /* shift the polynomial counters */ + + count = Num_pokeys; + do { + /* decrement all counters by the smallest count found */ + /* again, no loop for efficiency */ + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + + count--; + } while (count); + + + WRITE_U32(samp_cnt_w_ptr, READ_U32(samp_cnt_w_ptr) - event_min); + + /* since the polynomials require a mod (%) function which is + division, I don't adjust the polynomials on the SAMPLE events, + only the CHAN events. I have to keep track of the change, + though. */ + + P4 = (P4 + event_min) % POKEY_POLY4_SIZE; + P5 = (P5 + event_min) % POKEY_POLY5_SIZE; + P9 = (P9 + event_min) % POKEY_POLY9_SIZE; + P17 = (P17 + event_min) % POKEY_POLY17_SIZE; + + /* adjust channel counter */ + Div_n_cnt[next_event] += Div_n_max[next_event]; + + /* get the current AUDC into a register (for optimization) */ + audc = POKEY_AUDC[next_event]; + + /* set a pointer to the current output (for opt...) */ + out_ptr = &Outvol[next_event]; + + /* assume no changes to the output */ + toggle = FALSE; + + /* From here, a good understanding of the hardware is required */ + /* to understand what is happening. I won't be able to provide */ + /* much description to explain it here. */ + + /* if VOLUME only then nothing to process */ + if (!(audc & POKEY_VOL_ONLY)) { + /* if the output is pure or the output is poly5 and the poly5 bit */ + /* is set */ + if ((audc & POKEY_NOTPOLY5) || bit5[P5]) { + /* if the PURETONE bit is set */ + if (audc & POKEY_PURETONE) { + /* then simply toggle the output */ + toggle = TRUE; + } + /* otherwise if POLY4 is selected */ + else if (audc & POKEY_POLY4) { + /* then compare to the poly4 bit */ + toggle = (bit4[P4] == !(*out_ptr)); + } + else { + /* if 9-bit poly is selected on this chip */ + if (POKEY_AUDCTL[next_event >> 2] & POKEY_POLY9) { + /* compare to the poly9 bit */ + toggle = ((POKEY_poly9_lookup[P9] & 1) == !(*out_ptr)); + } + else { + /* otherwise compare to the poly17 bit */ + toggle = (((POKEY_poly17_lookup[P17 >> 3] >> (P17 & 7)) & 1) == !(*out_ptr)); + } + } + } + } + + /* check channel 1 filter (clocked by channel 3) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH1_FILTER) { + /* if we're processing channel 3 */ + if ((next_event & 0x03) == POKEY_CHAN3) { + /* check output of channel 1 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* check channel 2 filter (clocked by channel 4) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH2_FILTER) { + /* if we're processing channel 4 */ + if ((next_event & 0x03) == POKEY_CHAN4) { + /* check output of channel 2 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* if the current output bit has changed */ + if (toggle) { + if (*out_ptr) { + /* remove this channel from the signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event]; + + /* and turn the output off */ + *out_ptr = 0; + } + else { + /* turn the output on */ + *out_ptr = 1; + + /* and add it to the output signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 += pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val += pokeysnd_AUDV[next_event]; + } + } + } + else { /* otherwise we're processing a sample */ + /* adjust the sample counter - note we're using the 24.8 integer + which includes an 8 bit fraction for accuracy */ + + int iout; +#ifdef STEREO_SOUND + int iout2; +#endif +#ifdef INTERPOLATE_SOUND + if (cur_val != last_val) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout = (cur_val * (SLONG)(*Samp_n_cnt) + + last_val * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout = (cur_val * (*Samp_n_cnt) + + last_val * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout = cur_val; + last_val = cur_val; + } + else + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (cur_val2 != last_val2) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout2 = (cur_val2 * (SLONG)(*Samp_n_cnt) + + last_val2 * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout2 = (cur_val2 * (*Samp_n_cnt) + + last_val2 * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout2 = cur_val2; + last_val2 = cur_val2; + } + else + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#else /* INTERPOLATE_SOUND */ + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#endif /* INTERPOLATE_SOUND */ + +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) { + int l; + if (POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] > 0) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] -= 1280; + while ((l = POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr]) <= 0) { + POKEYSND_sampout = POKEYSND_sampbuf_val[POKEYSND_sampbuf_rptr]; + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] += l; + else + break; + } + } + iout += POKEYSND_sampout; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + if (sampbuf_rptr2 != sampbuf_ptr2) { + int l; + if (sampbuf_cnt2[sampbuf_rptr2] > 0) + sampbuf_cnt2[sampbuf_rptr2] -= 1280; + while ((l = sampbuf_cnt2[sampbuf_rptr2]) <= 0) { + sampout2 = sampbuf_val2[sampbuf_rptr2]; + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + if (sampbuf_rptr2 != sampbuf_ptr2) + sampbuf_cnt2[sampbuf_rptr2] += l; + else + break; + } + } + iout2 += sampout2; + } +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ + +#ifdef CLIP_SOUND + if (iout > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if (iout < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) iout; + } +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) { + if (iout2 > POKEYSND_SAMP_MAX) + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; + else if (iout2 < POKEYSND_SAMP_MIN) + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; + else + *buffer++ = (UBYTE) iout2; + } +#else /* __PLUS */ + if (Num_pokeys > 1) { + if ((POKEYSND_stereo_enabled ? iout2 : iout) > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if ((POKEYSND_stereo_enabled ? iout2 : iout) < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); + } + } +#endif /* __PLUS */ +#endif /* STEREO_SOUND */ +#else /* CLIP_SOUND */ + *buffer++ = (UBYTE) iout; /* clipping not selected, use value */ +#ifdef STEREO_SOUND + if (Num_pokeys > 1) +#ifdef ASAP + *buffer++ = (UBYTE) iout2; +#else + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); +#endif +#endif /* STEREO_SOUND */ +#endif /* CLIP_SOUND */ + +#ifdef WORDS_BIGENDIAN + *(Samp_n_cnt + 1) += Samp_n_max; +#else + *Samp_n_cnt += Samp_n_max; +#endif + /* and indicate one less byte in the buffer */ + n--; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (Num_pokeys > 1) + n--; +#endif + } + } +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr == POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (sampbuf_rptr2 == sampbuf_ptr2) + sampbuf_last2 = ANTIC_CPU_CLOCK; +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ +} + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data) +{ +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) { +#endif + int bits, pv, future; + if (!POKEYSND_serio_sound_enabled) return; + + pv = 0; + future = 0; + bits = (data << 1) | 0x200; + while (bits) + { + POKEYSND_sampbuf_lastval -= pv; + pv = (bits & 0x01) * pokeysnd_AUDV[3]; /* FIXME!!! - set volume from AUDV */ + POKEYSND_sampbuf_lastval += pv; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK + future-POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK + future; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX ) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr ) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + /* 1789790/19200 = 93 */ + future += 93; /* ~ 19200 bit/s - FIXME!!! set speed form AUDF [2] ??? */ + bits >>= 1; + } + POKEYSND_sampbuf_lastval -= pv; +#ifdef __PLUS + } +#endif +#endif /* VOL_ONLY_SOUND */ +} +#endif /* SERIO_SOUND */ + +void POKEYSND_SetVolume(int vol) +{ + if (vol > 100) + vol = 100; + if (vol < 0) + vol = 0; + + POKEYSND_volume = vol * 0x100 / 100; +} + +static void pokeysnd_process_16(void *sndbuffer, int sndn) +{ + UWORD *buffer = (UWORD *) sndbuffer; + int i; + + pokeysnd_process_8(buffer, sndn); + + for (i = sndn - 1; i >= 0; i--) { +#ifndef POKEYSND_SIGNED_SAMPLES + int smp = ((int) (((UBYTE *) buffer)[i]) - 0x80) * POKEYSND_volume; +#else + int smp = ((int) ((SBYTE *) buffer)[i]) * POKEYSND_volume; +#endif + if (smp > 32767) + smp = 32767; + else if (smp < -32768) + smp = -32768; + + buffer[i] = smp; + } +} + +#ifdef SYNCHRONIZED_SOUND +static void Generate_sync_rf(unsigned int num_ticks) +{ + double new_samp_pos; + unsigned int ticks; + UBYTE *buffer = POKEYSND_process_buffer + POKEYSND_process_buffer_fill; + UBYTE *buffer_end = POKEYSND_process_buffer + POKEYSND_process_buffer_length; + + for (;;) { + double int_part; + new_samp_pos = samp_pos + ticks_per_sample; + new_samp_pos = modf(new_samp_pos, &int_part); + ticks = (unsigned int)int_part; + if (ticks > num_ticks) { + samp_pos -= num_ticks; + break; + } + if (buffer >= buffer_end) + break; + + samp_pos = new_samp_pos; + num_ticks -= ticks; + + if (POKEYSND_snd_flags & POKEYSND_BIT16) { + pokeysnd_process_16(buffer, POKEYSND_num_pokeys); + buffer += 2 * POKEYSND_num_pokeys; + } + else { + pokeysnd_process_8(buffer, POKEYSND_num_pokeys); + buffer += POKEYSND_num_pokeys; + } + + } + + POKEYSND_process_buffer_fill = buffer - POKEYSND_process_buffer; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef CONSOLE_SOUND +void POKEYSND_UpdateConsol(int set) +{ + if (!POKEYSND_console_sound_enabled) + return; +#ifdef SYNCHRONIZED_SOUND + if (set) + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_UpdateConsol_ptr(set); +} + +static void Update_consol_sound_rf(int set) +{ +#ifdef SYNCHRONIZED_SOUND + if (set) + speaker = CONSOLE_VOL * GTIA_speaker; +#elif defined(VOL_ONLY_SOUND) + static int prev_atari_speaker = 0; + static unsigned int prev_cpu_clock = 0; + int d; +#ifdef __PLUS + if (!g_Sound.nDigitized) + return; +#endif + + if (!set && POKEYSND_samp_consol_val == 0) + return; + POKEYSND_sampbuf_lastval -= POKEYSND_samp_consol_val; + if (prev_atari_speaker != GTIA_speaker) { + POKEYSND_samp_consol_val = GTIA_speaker * 8 * 4; /* gain */ + prev_cpu_clock = ANTIC_CPU_CLOCK; + } + else if (!set) { + d = ANTIC_CPU_CLOCK - prev_cpu_clock; + if (d < 114) { + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + return; + } + while (d >= 114 /* CPUL */) { + POKEYSND_samp_consol_val = POKEYSND_samp_consol_val * 99 / 100; + d -= 114; + } + prev_cpu_clock = ANTIC_CPU_CLOCK - d; + } + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + prev_atari_speaker = GTIA_speaker; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } +#endif /* !SYNCHRONIZED_SOUND && VOL_ONLY_SOUND */ +} +#endif /* CONSOLE_SOUND */ + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void) +{ +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(0); /* mmm */ +#endif /* CONSOLE_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ diff --git a/MCUME_teensy/teensy5200/pokeysnd.h b/MCUME_teensy/teensy5200/pokeysnd.h new file mode 100644 index 0000000..64f5cd6 --- /dev/null +++ b/MCUME_teensy/teensy5200/pokeysnd.h @@ -0,0 +1,144 @@ +/*****************************************************************************/ +/* */ +/* Module: POKEY Chip Simulator Includes, V2.3 */ +/* Purpose: To emulate the sound generation hardware of the Atari POKEY chip. */ +/* Author: Ron Fries */ +/* */ +/* Revision History: */ +/* */ +/* 09/22/96 - Ron Fries - Initial Release */ +/* 04/06/97 - Brad Oliver - Some cross-platform modifications. Added */ +/* big/little endian #defines, removed , */ +/* conditional defines for TRUE/FALSE */ +/* 01/19/98 - Ron Fries - Changed signed/unsigned sample support to a */ +/* compile-time option. Defaults to unsigned - */ +/* define SIGNED_SAMPLES to create signed. */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* PokeySound is Copyright(c) 1996-1998 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ + +#ifndef POKEYSND_H_ +#define POKEYSND_H_ + +#include "atari.h" +#include "pokey.h" + +/* CONSTANT DEFINITIONS */ + +/* As an alternative to using the exact frequencies, selecting a playback + frequency that is an exact division of the main clock provides a higher + quality output due to less aliasing. For best results, a value of + 1787520 MHz is used for the main clock. With this value, both the + 64 kHz and 15 kHz clocks are evenly divisible. Selecting a playback + frequency that is also a division of the clock provides the best + results. The best options are FREQ_64 divided by either 2, 3, or 4. + The best selection is based on a trade off between performance and + sound quality. + + Of course, using a main clock frequency that is not exact will affect + the pitch of the output. With these numbers, the pitch will be low + by 0.127%. (More than likely, an actual unit will vary by this much!) */ + +#define POKEYSND_FREQ_17_EXACT 1789790 /* exact 1.79 MHz clock freq */ +#define POKEYSND_FREQ_17_APPROX 1787520 /* approximate 1.79 MHz clock freq */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef POKEYSND_SIGNED_SAMPLES /* if signed output selected */ +#define POKEYSND_SAMP_MAX 127 /* then set signed 8-bit clipping ranges */ +#define POKEYSND_SAMP_MIN -128 +#define POKEYSND_SAMP_MID 0 +#else +#define POKEYSND_SAMP_MAX 255 /* else set unsigned 8-bit clip ranges */ +#define POKEYSND_SAMP_MIN 0 +#define POKEYSND_SAMP_MID 128 +#endif + +/* init flags */ +#define POKEYSND_BIT16 1 + +extern SLONG POKEYSND_playback_freq; +extern UBYTE POKEYSND_num_pokeys; +extern int POKEYSND_snd_flags; +extern int POKEYSND_volume; + +extern int POKEYSND_enable_new_pokey; +extern int POKEYSND_stereo_enabled; +extern int POKEYSND_serio_sound_enabled; +extern int POKEYSND_console_sound_enabled; +extern int POKEYSND_bienias_fix; + +extern void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn); +extern void (*POKEYSND_Update_ptr)(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain); +extern void (*POKEYSND_UpdateSerio)(int out, UBYTE data); +extern void (*POKEYSND_UpdateConsol_ptr)(int set); +extern void (*POKEYSND_UpdateVolOnly)(void); + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif + ); +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE /*chip*/, UBYTE gain); +void POKEYSND_UpdateConsol(int set); + +/* Fill sndbuffer with sndn samples of audio. Number of bytes written to + sndbuffer is sndn with 8-bit sound, and 2*sndn with 16-bit sound. sndn + must be a multiple of POKEYSND_num_pokeys. */ +void POKEYSND_Process(void *sndbuffer, int sndn); +int POKEYSND_DoInit(void); +void POKEYSND_SetMzQuality(int quality); +void POKEYSND_SetVolume(int vol); + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +#define POKEYSND_SAMPBUF_MAX 2000 +extern int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +extern int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +extern int POKEYSND_sampbuf_ptr; /* pointer to sampbuf */ +extern int POKEYSND_sampbuf_rptr; /* pointer to read from sampbuf */ +extern int POKEYSND_sampbuf_last; /* last absolute time */ +extern int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +extern int POKEYSND_sampbuf_lastval; /* last volume */ +extern int POKEYSND_sampout; /* last out volume */ +extern int POKEYSND_samp_freq; +extern int POKEYSND_samp_consol_val; /* actual value of console sound */ +#endif /* VOL_ONLY_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +extern UBYTE *POKEYSND_process_buffer; +extern unsigned int POKEYSND_process_buffer_length; +extern unsigned int POKEYSND_process_buffer_fill; +extern void (*POKEYSND_GenerateSync)(unsigned int num_ticks); +int POKEYSND_UpdateProcessBuffer(void); +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef __cplusplus +} + +#endif +#endif /* POKEYSND_H_ */ diff --git a/MCUME_teensy/teensy5200/rom.h b/MCUME_teensy/teensy5200/rom.h new file mode 100644 index 0000000..ab0dd4c --- /dev/null +++ b/MCUME_teensy/teensy5200/rom.h @@ -0,0 +1,131 @@ +// Atari 5200 ROM +const unsigned char BIOSData[] = { + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0x18, 0x0, 0x18, 0x0, + 0x0, 0x66, 0x66, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0xFF, 0x66, 0x66, 0xFF, 0x66, 0x0, + 0x18, 0x3E, 0x60, 0x3C, 0x6, 0x7C, 0x18, 0x0, 0x0, 0x66, 0x6C, 0x18, 0x30, 0x66, 0x46, 0x0, + 0x1C, 0x36, 0x1C, 0x38, 0x6F, 0x66, 0x3B, 0x0, 0x0, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, + 0x0, 0xE, 0x1C, 0x18, 0x18, 0x1C, 0xE, 0x0, 0x0, 0x70, 0x38, 0x18, 0x18, 0x38, 0x70, 0x0, + 0x0, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x0, 0x0, 0x0, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x30, 0x0, 0x0, 0x0, 0x7E, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x0, 0x6, 0xC, 0x18, 0x30, 0x60, 0x40, 0x0, + 0x0, 0x3C, 0x66, 0x6E, 0x76, 0x66, 0x3C, 0x0, 0x0, 0x18, 0x38, 0x18, 0x18, 0x18, 0x7E, 0x0, + 0x0, 0x3C, 0x66, 0xC, 0x18, 0x30, 0x7E, 0x0, 0x0, 0x7E, 0xC, 0x18, 0xC, 0x66, 0x3C, 0x0, + 0x0, 0xC, 0x1C, 0x3C, 0x6C, 0x7E, 0xC, 0x0, 0x0, 0x7E, 0x60, 0x7C, 0x6, 0x66, 0x3C, 0x0, + 0x0, 0x3C, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x0, 0x0, 0x7E, 0x6, 0xC, 0x18, 0x30, 0x30, 0x0, + 0x0, 0x3C, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x0, 0x0, 0x3C, 0x66, 0x3E, 0x6, 0xC, 0x38, 0x0, + 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x0, 0x0, 0x0, 0x18, 0x18, 0x0, 0x18, 0x18, 0x30, + 0x6, 0xC, 0x18, 0x30, 0x18, 0xC, 0x6, 0x0, 0x0, 0x0, 0x7E, 0x0, 0x0, 0x7E, 0x0, 0x0, + 0x60, 0x30, 0x18, 0xC, 0x18, 0x30, 0x60, 0x0, 0x0, 0x3C, 0x66, 0xC, 0x18, 0x0, 0x18, 0x0, + 0x0, 0x3C, 0x66, 0x6E, 0x6E, 0x60, 0x3E, 0x0, 0x0, 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x0, + 0x0, 0x7C, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x0, 0x0, 0x3C, 0x66, 0x60, 0x60, 0x66, 0x3C, 0x0, + 0x0, 0x78, 0x6C, 0x66, 0x66, 0x6C, 0x78, 0x0, 0x0, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x7E, 0x0, + 0x0, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x60, 0x0, 0x0, 0x3E, 0x60, 0x60, 0x6E, 0x66, 0x3E, 0x0, + 0x0, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x0, 0x0, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x0, + 0x0, 0x6, 0x6, 0x6, 0x6, 0x66, 0x3C, 0x0, 0x0, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0x0, + 0x0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x0, 0x0, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x0, + 0x0, 0x66, 0x76, 0x7E, 0x7E, 0x6E, 0x66, 0x0, 0x0, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x0, + 0x0, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x0, 0x0, 0x3C, 0x66, 0x66, 0x66, 0x6C, 0x36, 0x0, + 0x0, 0x7C, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x0, 0x0, 0x3C, 0x60, 0x3C, 0x6, 0x6, 0x3C, 0x0, + 0x0, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x0, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x0, + 0x0, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x0, 0x0, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x0, + 0x0, 0x66, 0x66, 0x3C, 0x3C, 0x66, 0x66, 0x0, 0x0, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x0, + 0x0, 0x7E, 0xC, 0x18, 0x30, 0x60, 0x7E, 0x0, 0x0, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x0, + 0x0, 0x40, 0x60, 0x30, 0x18, 0xC, 0x6, 0x0, 0x0, 0x78, 0x18, 0x18, 0x18, 0x18, 0x78, 0x0, + 0x0, 0x8, 0x1C, 0x36, 0x63, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x0, + 0x0, 0x36, 0x7F, 0x7F, 0x3E, 0x1C, 0x8, 0x0, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x0, 0x0, 0x0, + 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0xF8, 0xF8, 0x18, 0x18, 0x18, + 0x3, 0x7, 0xE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0xE, 0x7, 0x3, + 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x0, 0x0, 0x0, 0x0, 0xF, 0xF, 0xF, 0xF, + 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xF, 0xF, 0xF, 0xF, 0x0, 0x0, 0x0, 0x0, + 0xF0, 0xF0, 0xF0, 0xF0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x0, 0x1C, 0x1C, 0x77, 0x77, 0x8, 0x1C, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x1F, 0x18, 0x18, 0x18, + 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, + 0x0, 0x0, 0x3C, 0x7E, 0x7E, 0x7E, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x0, 0x0, 0x0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x0, 0x0, 0x0, 0x78, 0x60, 0x78, 0x60, 0x7E, 0x18, 0x1E, 0x0, + 0x0, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x0, 0x0, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x0, + 0x0, 0x18, 0x30, 0x7E, 0x30, 0x18, 0x0, 0x0, 0x0, 0x18, 0xC, 0x7E, 0xC, 0x18, 0x0, 0x0, + 0x0, 0x18, 0x3C, 0x7E, 0x7E, 0x3C, 0x18, 0x0, 0x0, 0x0, 0x3C, 0x6, 0x3E, 0x66, 0x3E, 0x0, + 0x0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x0, 0x0, 0x0, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x0, + 0x0, 0x6, 0x6, 0x3E, 0x66, 0x66, 0x3E, 0x0, 0x0, 0x0, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x0, + 0x0, 0xE, 0x18, 0x3E, 0x18, 0x18, 0x18, 0x0, 0x0, 0x0, 0x3E, 0x66, 0x66, 0x3E, 0x6, 0x7C, + 0x0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x0, 0x0, 0x18, 0x0, 0x38, 0x18, 0x18, 0x3C, 0x0, + 0x0, 0x6, 0x0, 0x6, 0x6, 0x6, 0x6, 0x3C, 0x0, 0x60, 0x60, 0x6C, 0x78, 0x6C, 0x66, 0x0, + 0x0, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x0, 0x0, 0x0, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0x0, + 0x0, 0x0, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x0, 0x0, 0x0, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x0, + 0x0, 0x0, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x0, 0x0, 0x3E, 0x66, 0x66, 0x3E, 0x6, 0x6, + 0x0, 0x0, 0x7C, 0x66, 0x60, 0x60, 0x60, 0x0, 0x0, 0x0, 0x3E, 0x60, 0x3C, 0x6, 0x7C, 0x0, + 0x0, 0x18, 0x7E, 0x18, 0x18, 0x18, 0xE, 0x0, 0x0, 0x0, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x0, + 0x0, 0x0, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x0, 0x0, 0x0, 0x63, 0x6B, 0x7F, 0x3E, 0x36, 0x0, + 0x0, 0x0, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x0, 0x0, 0x0, 0x66, 0x66, 0x66, 0x3E, 0xC, 0x78, + 0x0, 0x0, 0x7E, 0xC, 0x18, 0x30, 0x7E, 0x0, 0x0, 0x18, 0x3C, 0x7E, 0x7E, 0x18, 0x3C, 0x0, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0, 0x7E, 0x78, 0x7C, 0x6E, 0x66, 0x6, 0x0, + 0x8, 0x18, 0x38, 0x78, 0x38, 0x18, 0x8, 0x0, 0x10, 0x18, 0x1C, 0x1E, 0x1C, 0x18, 0x10, 0x0, + 0x6C, 0x0, 0x2, 0x48, 0xA9, 0x20, 0x2C, 0xE, 0xE8, 0xD0, 0xD, 0xA9, 0xDF, 0x8D, 0xE, 0xE8, + 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x10, 0x2, 0x10, 0x6E, 0x50, 0x79, 0xA9, 0x10, 0x2D, 0xE, + 0xE8, 0xD0, 0xD, 0xA9, 0xEF, 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x12, 0x2, + 0xA9, 0x8, 0x25, 0x0, 0xF0, 0x12, 0x2D, 0xE, 0xE8, 0xD0, 0xD, 0xA9, 0xF7, 0x8D, 0xE, 0xE8, + 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x14, 0x2, 0xAD, 0xE, 0xE8, 0x6A, 0xB0, 0xD, 0xA9, 0xFE, + 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x16, 0x2, 0x6A, 0xB0, 0xD, 0xA9, 0xFD, + 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x18, 0x2, 0x6A, 0xB0, 0xD, 0xA9, 0xFB, + 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, 0x1A, 0x2, 0x8A, 0x48, 0xBA, 0xBD, 0x3, + 0x1, 0x29, 0x10, 0xF0, 0x2F, 0x6C, 0xE, 0x2, 0xA9, 0x7F, 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, + 0xE, 0xE8, 0x6C, 0xC, 0x2, 0xA9, 0xBF, 0x8D, 0xE, 0xE8, 0xA5, 0x0, 0x8D, 0xE, 0xE8, 0x6C, + 0x8, 0x2, 0x2C, 0xF, 0xD4, 0x8D, 0xF, 0xD4, 0x30, 0x5, 0x50, 0xB, 0x6C, 0x2, 0x2, 0x6C, + 0x6, 0x2, 0x68, 0xA8, 0x68, 0xAA, 0x68, 0x40, 0x48, 0x8A, 0x48, 0x98, 0x48, 0xE6, 0x2, 0xD0, + 0x4, 0xE6, 0x4, 0xE6, 0x1, 0xA5, 0x3, 0xD0, 0xE9, 0xA5, 0x6, 0x8D, 0x3, 0xD4, 0xA5, 0x5, + 0x8D, 0x2, 0xD4, 0xA5, 0x7, 0x8D, 0x0, 0xD4, 0xA4, 0x4, 0x10, 0x4, 0xA0, 0x80, 0x84, 0x4, + 0xA2, 0x8, 0xB5, 0x8, 0xC0, 0x80, 0x90, 0x4, 0x45, 0x1, 0x29, 0xF6, 0x9D, 0x12, 0xC0, 0xCA, + 0x10, 0xF0, 0xA2, 0x7, 0xBD, 0x0, 0xE8, 0x95, 0x11, 0xCA, 0x10, 0xF8, 0x8D, 0xB, 0xE8, 0x6C, + 0x4, 0x2, 0x8A, 0x48, 0x98, 0x48, 0xAD, 0x9, 0xE8, 0x4A, 0x29, 0xF, 0xAA, 0xBD, 0x13, 0xFD, + 0x6C, 0xA, 0x2, 0xFF, 0xB, 0x0, 0xA, 0xE, 0x9, 0x8, 0x7, 0xD, 0x6, 0x5, 0x4, 0xC, + 0x3, 0x2, 0x1, 0x78, 0xD8, 0xA2, 0xFF, 0x9A, 0xAD, 0xFD, 0xBF, 0xC9, 0xFF, 0xD0, 0x3, 0x6C, + 0xFE, 0xBF, 0xE8, 0x8A, 0x9D, 0x0, 0xE8, 0x9D, 0x0, 0xC0, 0x9D, 0x0, 0xD4, 0x95, 0x0, 0xE8, + 0xD0, 0xF2, 0xA9, 0xF8, 0x8D, 0x9, 0xD4, 0xA2, 0xB, 0xBD, 0x95, 0xFE, 0x9D, 0x0, 0x2, 0xCA, + 0x10, 0xF7, 0xA9, 0x3C, 0x85, 0x12, 0xA9, 0x0, 0x85, 0x11, 0xA2, 0xC, 0xA8, 0x91, 0x11, 0x88, + 0xD0, 0xFB, 0xC6, 0x12, 0xCA, 0x10, 0xF6, 0xA9, 0xD, 0xA2, 0x4D, 0x9D, 0x7, 0x20, 0xCA, 0x10, + 0xFA, 0xA2, 0x6, 0xBD, 0xC8, 0xFE, 0x9D, 0x0, 0x20, 0xCA, 0x10, 0xF7, 0xA2, 0x4, 0xBD, 0xCF, + 0xFE, 0x9D, 0x55, 0x20, 0xCA, 0x10, 0xF7, 0xA9, 0x0, 0x85, 0x5, 0xA9, 0x20, 0x85, 0x6, 0xA9, + 0x22, 0x85, 0x7, 0xA9, 0x30, 0xA8, 0xA9, 0x28, 0xA2, 0x36, 0x9D, 0x0, 0x11, 0x48, 0x98, 0x9D, + 0x0, 0x10, 0x68, 0xCA, 0x30, 0x8, 0x18, 0x69, 0x28, 0x90, 0xEF, 0xC8, 0xB0, 0xEC, 0xA2, 0x13, + 0x86, 0x17, 0xE8, 0x86, 0x18, 0xA9, 0x20, 0x85, 0x13, 0xA9, 0x1, 0x85, 0x15, 0xA9, 0x40, 0x85, + 0x16, 0xC6, 0x13, 0x30, 0x3E, 0xA6, 0x13, 0xBD, 0xE8, 0xFE, 0x85, 0x14, 0xBD, 0x8, 0xFF, 0xAA, + 0xE4, 0x14, 0xF0, 0x1D, 0xBD, 0x0, 0x11, 0x85, 0x11, 0xBD, 0x0, 0x10, 0x85, 0x12, 0xA4, 0x17, + 0xA5, 0x15, 0x11, 0x11, 0x91, 0x11, 0xA4, 0x18, 0xA5, 0x16, 0x11, 0x11, 0x91, 0x11, 0xE8, 0xD0, + 0xDF, 0x6, 0x15, 0x6, 0x15, 0xB0, 0x6, 0x46, 0x16, 0x46, 0x16, 0x90, 0xC4, 0xC6, 0x17, 0xE6, + 0x18, 0xB0, 0xB6, 0xA9, 0x11, 0x85, 0x11, 0xA9, 0x39, 0x85, 0x12, 0xA9, 0x13, 0x85, 0x13, 0xA9, + 0x0, 0x85, 0x15, 0xA9, 0x1, 0xA0, 0xA, 0x85, 0x18, 0xA6, 0x15, 0xE6, 0x15, 0xBD, 0x28, 0xFF, + 0xF0, 0x2A, 0xAA, 0x29, 0xF, 0x85, 0x16, 0x8A, 0x4A, 0x4A, 0x4A, 0x4A, 0xAA, 0xA5, 0x18, 0xA, + 0xA, 0x90, 0x5, 0x91, 0x11, 0xC8, 0xA9, 0x1, 0xCA, 0x10, 0xF4, 0xA6, 0x16, 0x38, 0x2A, 0xA, + 0x90, 0x5, 0x91, 0x11, 0xC8, 0xA9, 0x1, 0xCA, 0x10, 0xF3, 0x30, 0xCB, 0xA5, 0x18, 0xA, 0xA, + 0x90, 0xFC, 0x91, 0x11, 0xA5, 0x11, 0x18, 0x69, 0x28, 0x85, 0x11, 0x90, 0x2, 0xE6, 0x12, 0xC6, + 0x13, 0x10, 0xB0, 0xA2, 0x13, 0xBD, 0xD4, 0xFE, 0x9D, 0x94, 0x3C, 0xBD, 0xE8, 0xBF, 0x9D, 0x80, + 0x3C, 0xCA, 0x10, 0xF1, 0xAD, 0xFC, 0xBF, 0x8D, 0xA0, 0x3C, 0xAD, 0xFD, 0xBF, 0x8D, 0xA1, 0x3C, + 0xA9, 0xF, 0x85, 0xD, 0xA9, 0xC0, 0x8D, 0xE, 0xD4, 0xA9, 0x2, 0x8D, 0xF, 0xE8, 0xE4, 0x2, + 0xD0, 0xFC, 0x6C, 0xFE, 0xBF, 0x3, 0xFC, 0xB8, 0xFC, 0xB2, 0xFC, 0xA1, 0xFE, 0x2, 0xFD, 0xB2, + 0xFC, 0x48, 0x8A, 0x48, 0x98, 0x48, 0xA6, 0x8, 0xA0, 0x72, 0xE0, 0x10, 0xB0, 0x2, 0xA2, 0xFE, + 0x8E, 0xA, 0xD4, 0x8E, 0x16, 0xC0, 0xCA, 0xCA, 0x88, 0xD0, 0xEF, 0xE6, 0x8, 0xA0, 0x10, 0xC4, + 0x8, 0x90, 0x2, 0x84, 0x8, 0x4C, 0xB2, 0xFC, 0x70, 0x70, 0x70, 0x4D, 0x0, 0x30, 0x8D, 0x7, + 0x7, 0x41, 0x0, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x0, 0x51, 0x59, + 0x58, 0x51, 0x0, 0x61, 0x74, 0x61, 0x72, 0x69, 0x8, 0x8, 0x8, 0x9, 0x9, 0x9, 0xA, 0xA, + 0xB, 0xB, 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12, 0x14, 0x16, 0x19, 0x1C, 0x1F, 0x36, 0x36, + 0x36, 0x36, 0x0, 0x0, 0x36, 0x36, 0x36, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xE, 0x10, + 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x4E, 0x42, 0x97, 0x52, 0x0, 0x84, 0x3E, + 0x34, 0x79, 0x42, 0x0, 0x76, 0x2E, 0x26, 0x5B, 0x32, 0x0, 0x76, 0x82, 0x86, 0x53, 0x43, 0x22, + 0x0, 0x63, 0x3, 0x72, 0x73, 0x3, 0x42, 0x63, 0x12, 0x0, 0x62, 0x22, 0x72, 0x72, 0x22, 0x42, + 0x72, 0x12, 0x0, 0x62, 0x22, 0x72, 0x72, 0x22, 0x42, 0x72, 0x12, 0x0, 0x52, 0x42, 0x62, 0x62, + 0x42, 0x32, 0x62, 0x22, 0x0, 0x52, 0x42, 0x62, 0x62, 0x42, 0x32, 0x52, 0x32, 0x0, 0x52, 0x42, + 0x62, 0x62, 0x42, 0x32, 0x6, 0x42, 0x0, 0x43, 0x43, 0x52, 0x53, 0x43, 0x22, 0x5, 0x52, 0x0, + 0x42, 0x62, 0x52, 0x52, 0x62, 0x22, 0x5, 0x52, 0x0, 0x42, 0x62, 0x52, 0x52, 0x62, 0x22, 0x42, + 0x42, 0x0, 0x3E, 0x42, 0x4E, 0x12, 0x42, 0x42, 0x0, 0x3E, 0x42, 0x4E, 0x12, 0x52, 0x32, 0x0, + 0x3E, 0x42, 0x4E, 0x12, 0x52, 0x32, 0x0, 0x23, 0x83, 0x32, 0x33, 0x83, 0x2, 0x62, 0x22, 0x0, + 0x22, 0xA2, 0x32, 0x32, 0xA2, 0x2, 0x62, 0x22, 0x0, 0x22, 0xA2, 0x32, 0x32, 0xA2, 0x2, 0x72, + 0x12, 0x0, 0x22, 0xA2, 0x32, 0x32, 0xA2, 0x2, 0x72, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x52, 0x4A, 0x5A, 0x20, 0x31, 0x39, 0x38, 0x32, 0x0, 0xA2, 0xFC, 0x23, 0xFD, 0x0, 0xFC +}; diff --git a/MCUME_teensy/teensy5200/teensy5200.ino b/MCUME_teensy/teensy5200/teensy5200.ino new file mode 100644 index 0000000..b40becf --- /dev/null +++ b/MCUME_teensy/teensy5200/teensy5200.ino @@ -0,0 +1,274 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "atari5200.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensy5200/tft_t_dma.cpp b/MCUME_teensy/teensy5200/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensy5200/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensy5200/tft_t_dma_config.h b/MCUME_teensy/teensy5200/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensy5200/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensy64/.DS_Store b/MCUME_teensy/teensy64/.DS_Store new file mode 100644 index 0000000..2818a2e Binary files /dev/null and b/MCUME_teensy/teensy64/.DS_Store differ diff --git a/MCUME_teensy/teensy64/AudioPlaySystem.cpp b/MCUME_teensy/teensy64/AudioPlaySystem.cpp new file mode 100644 index 0000000..6671585 --- /dev/null +++ b/MCUME_teensy/teensy64/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +//extern "C" { +void SND_Process(void *sndbuffer, int sndn); +//} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensy64/AudioPlaySystem.h b/MCUME_teensy/teensy64/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensy64/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensy64/IntervalTimer.h b/MCUME_teensy/teensy64/IntervalTimer.h new file mode 100755 index 0000000..42359dd --- /dev/null +++ b/MCUME_teensy/teensy64/IntervalTimer.h @@ -0,0 +1,150 @@ +/* Teensyduino Core Library + * http://www.pjrc.com/teensy/ + * Copyright (c) 2017 PJRC.COM, LLC. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation 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 furnished to do so, subject to + * the following conditions: + * + * 1. The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * 2. If the Software is incorporated into a build system that allows + * selection among a list of target devices, then similar target + * devices manufactured by PJRC.COM must be included in the list of + * target devices and selectable in the same manner. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR 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. + */ + + /* + + Added : + + - void setIntervalFast(float microseconds) + - bool setInterval(float microseconds) + + F.B. + + */ + +#ifndef __INTERVALTIMERX_H__ +#define __INTERVALTIMERX_H__ + +//#include "kinetis.h" + +#ifdef __cplusplus +extern "C" { +#endif + +class MyIntervalTimer { +private: + static const uint32_t MAX_PERIOD = UINT32_MAX / (F_BUS / 1000000.0); +public: + MyIntervalTimer() { + //channel = NULL; + nvic_priority = 128; + } + ~MyIntervalTimer() { + end(); + } + bool begin(void (*funct)(), unsigned int microseconds) { + if (microseconds == 0 || microseconds > MAX_PERIOD) return false; + uint32_t cycles = (F_BUS / 1000000) * microseconds - 1; + if (cycles < 36) return false; + return beginCycles(funct, cycles); + } + bool begin(void (*funct)(), int microseconds) { + if (microseconds < 0) return false; + return begin(funct, (unsigned int)microseconds); + } + bool begin(void (*funct)(), unsigned long microseconds) { + return begin(funct, (unsigned int)microseconds); + } + bool begin(void (*funct)(), long microseconds) { + return begin(funct, (int)microseconds); + } + bool begin(void (*funct)(), float microseconds) { + if (microseconds <= 0 || microseconds > MAX_PERIOD) return false; + uint32_t cycles = (float)(F_BUS / 1000000) * microseconds - 0.5; + if (cycles < 36) return false; + return beginCycles(funct, cycles); + } + bool begin(void (*funct)(), double microseconds) { + return begin(funct, (float)microseconds); + } + + void setIntervalFast(float microseconds) { /*NEW*/ + uint32_t cycles = (float)(F_BUS / 1000000) * microseconds - 0.5; + //channel->LDVAL = cycles; + } + bool setInterval(float microseconds) { /*NEW*/ + //if (!channel) return false; + if (microseconds <= 0 || microseconds > MAX_PERIOD) return false; + setIntervalFast(microseconds); + return true; + } + + void end() {}; + void priority(uint8_t n) { + nvic_priority = n; + #if defined(KINETISK) + /* + if (channel) { + int index = channel - KINETISK_PIT_CHANNELS; + NVIC_SET_PRIORITY(IRQ_PIT_CH0 + index, nvic_priority); + } + */ + #elif defined(KINETISL) + /* + if (channel) { + int index = channel - KINETISK_PIT_CHANNELS; + nvic_priorites[index] = nvic_priority; + if (nvic_priorites[0] <= nvic_priorites[1]) { + NVIC_SET_PRIORITY(IRQ_PIT, nvic_priorites[0]); + } else { + NVIC_SET_PRIORITY(IRQ_PIT, nvic_priorites[1]); + } + } + */ + #endif + } + //operator IRQ_NUMBER_t() { + /* + if (channel) { + #if defined(KINETISK) + int index = channel - KINETISK_PIT_CHANNELS; + return (IRQ_NUMBER_t)(IRQ_PIT_CH0 + index); + #elif defined(KINETISL) + return IRQ_PIT; + #endif + } + */ + //return (IRQ_NUMBER_t)NVIC_NUM_INTERRUPTS; + //} +private: + //KINETISK_PIT_CHANNEL_t *channel; + uint8_t nvic_priority; + #if defined(KINETISL) + static uint8_t nvic_priorites[2]; + #endif + bool beginCycles(void (*funct)(), uint32_t cycles); + +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/MCUME_teensy/teensy64/Teensy64.h b/MCUME_teensy/teensy64/Teensy64.h new file mode 100644 index 0000000..1588c7e --- /dev/null +++ b/MCUME_teensy/teensy64/Teensy64.h @@ -0,0 +1,114 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ +#ifndef Teensy64_h_ +#define Teensy64_h_ + +#include +#include +#include + + +//#define F_CPU 600000000.0 +#define F_BUS 600000000.0 + +#include "settings.h" + +#define VERSION "09" +#define NTSC (!PAL) +#define USBHOST (!PS2KEYBOARD) + + +#include "tft_t_dma.h" +extern TFT_T_DMA tft; + +extern "C" { + #include "emuapi.h" +} + +void initMachine(); +void resetMachine() __attribute__ ((noreturn)); +void resetExternal(); +unsigned loadFile(const char *filename); + + +#if PAL == 1 +#define CRYSTAL 17734475.0f +#define CLOCKSPEED ( CRYSTAL / 18.0f) // 985248,61 Hz +#define CYCLESPERRASTERLINE 63 +#define LINECNT 312 //Rasterlines +#define VBLANK_FIRST 300 +#define VBLANK_LAST 15 + +#else +#define CRYSTAL 14318180.0f +#define CLOCKSPEED ( CRYSTAL / 14.0f) // 1022727,14 Hz +#define CYCLESPERRASTERLINE 64 +#define LINECNT 263 //Rasterlines +#define VBLANK_FIRST 13 +#define VBLANK_LAST 40 +#endif + +#define LINEFREQ (CLOCKSPEED / CYCLESPERRASTERLINE) //Hz +#define REFRESHRATE (LINEFREQ / LINECNT) //Hz +#define LINETIMER_DEFAULT_FREQ (1000000.0f/LINEFREQ) + + +#define MCU_C64_RATIO ((float)F_CPU / CLOCKSPEED) //MCU Cycles per C64 Cycle +#define US_C64_CYCLE (1000000.0f / CLOCKSPEED) // Duration (µs) of a C64 Cycle + +#define AUDIOSAMPLERATE (LINEFREQ * 2)// (~32kHz) + +#define ISR_PRIORITY_RASTERLINE 255 + + + +#if 0 +#define WRITE_ATN_CLK_DATA(value) { \ + digitalWriteFast(PIN_SERIAL_ATN, (~value & 0x08));\//PTA13 IEC ATN 3 +digitalWriteFast(PIN_SERIAL_CLK, (~value & 0x10)); \ //PTA14 IEC CLK 4 +digitalWriteFast(PIN_SERIAL_DATA, (~value & 0x20)); \ //PTA15 IEC DATA 5 +} +#define READ_CLK_DATA() \ + ((digitalReadFast(PIN_SERIAL_CLK) << 6) | \ + (digitalReadFast(PIN_SERIAL_DATA) << 7)) + +#else +#define WRITE_ATN_CLK_DATA(value) {} +#define READ_CLK_DATA() (0) +#endif + +#include "output_dac.h" +#include "cpu.h" +#endif diff --git a/MCUME_teensy/teensy64/bmpjoy.h b/MCUME_teensy/teensy64/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensy64/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensy64/bmptft.h b/MCUME_teensy/teensy64/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensy64/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy64/bmpvbar.h b/MCUME_teensy/teensy64/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensy64/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy64/bmpvga.h b/MCUME_teensy/teensy64/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensy64/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy64/c64.cpp b/MCUME_teensy/teensy64/c64.cpp new file mode 100644 index 0000000..c0493ce --- /dev/null +++ b/MCUME_teensy/teensy64/c64.cpp @@ -0,0 +1,315 @@ + +extern "C" { +#include "emuapi.h" +} +#include "Teensy64.h" +#include + +#ifdef HAS_SND +#include "reSID.h" +AudioPlaySID playSID; +#endif + +using namespace std; + +/* IRAM_ATTR */ +static void oneRasterLine(void) { + static unsigned short lc = 1; + + while (true) { + + cpu.lineStartTime = ARM_DWT_CYCCNT; + cpu.lineCycles = cpu.lineCyclesAbs = 0; + + if (!cpu.exactTiming) { + vic_do(); + } else { + vic_do_simple(); + } + + if (--lc == 0) { + lc = LINEFREQ / 10; // 10Hz + cia1_checkRTCAlarm(); + cia2_checkRTCAlarm(); + } + + //Switch "ExactTiming" Mode off after a while: + if (!cpu.exactTiming) break; + if (ARM_DWT_CYCCNT - cpu.exactTimingStartTime >= EXACTTIMINGDURATION * (F_CPU / 1000)) { + cpu_disableExactTiming(); + break; + } + }; + +} + +const uint32_t ascii2scan[] = { + //0 1 2 3 4 5 6 7 8 9 A B C D E F + 0,0,0,0,0,0,0,0,0,0,0,0,0,0x28,0,0, // return + // 17:down 29:right + 0x00,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4f,0x00,0x00, + //sp ! " # $ % & ' ( ) * + , - . / + 0x2c,0x201e,0x201f,0x2020,0x2021,0x2022,0x2023,0x2024,0x2025,0x2026,0x55,0x57,0x36,0x56,0x37,0x54, + //0 1 2 3 4 5 6 7 8 9 : ; < = > ? + 0x27,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x33,0x34,0x2036,0x32,0x2037,0x0238, + //@ A B C D E F G H I J K L M N O + 47,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12, + //P Q R S T U V W X Y Z [ \ ] ^ _ + 0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x2026,0x31,0x2027,0x00,0x00, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // ' a b c d e f g h i j k l m n o + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x49,0, // p q r s t u v w x y z { | } ~ DEL + //up left arr 133:f1 f2 f3 f4 f5 f6 f7 f8 + 75,78,0x00,0x00,0x00,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x00,0x00,0x00, // 128-143 + // 145:up 157:left + 0x00,0x2051,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x204f,0x00,0x00 // 144-159 +}; + +// we also use USB matrix for the moment +static const uint8_t keymatrixmap[2][256] = { + //Rows: + // 0 1 2 3 4 5 6 7 8 9 A B C D E F + { 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x04, 0x04, 0x02, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, //0x00 + 0x10, 0x10, 0x10, 0x20, 0x80, 0x04, 0x02, 0x04, 0x08, 0x08, 0x02, 0x04, 0x08, 0x02, 0x80, 0x80, //0x10 + 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x01, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x20, //0x20 + 0x00, 0x00, 0x40, 0x20, 0x40, 0x00, 0x20, 0x20, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, //0x30 + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x00, 0x00, 0x80, 0x01, //0x40 + 0x00, 0x01, 0x00, 0x00, 0x40, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x70 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x90 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xA0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xB0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xC0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xD0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xE0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x02 + }, //0xF0 + //Columns: + // 0 1 2 3 4 5 6 7 8 9 A B C D E F + { 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x10, 0x04, 0x40, 0x20, 0x04, 0x20, 0x02, 0x04, 0x20, 0x04, //0x00 + 0x10, 0x80, 0x40, 0x02, 0x40, 0x02, 0x20, 0x40, 0x40, 0x80, 0x02, 0x80, 0x02, 0x10, 0x01, 0x08, //0x10 + 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x02, 0x80, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40, //0x20 + 0x00, 0x00, 0x20, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, //0x30 + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x40, 0x00, 0x00, 0x02, 0x04, //0x40 + 0x00, 0x80, 0x00, 0x00, 0x80, 0x02, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x70 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x90 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xA0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xB0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xC0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xD0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0xE0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x10, 0x80 + } +}; //0xF0 + +struct { + union { + uint32_t kv; + struct { + uint8_t ke, //Extratasten SHIFT, STRG, ALT... + kdummy, + k, //Erste gedrückte Taste + k2; //Zweite gedrückte Taste + }; + }; + uint32_t lastkv; + uint8_t shiftLock; +} kbdData = {0, 0, 0}; + + + + +static void setKey(uint32_t k, boolean pressed) { + if (pressed) { + kbdData.kv = (k << 16); + kbdData.ke = kbdData.k2; + kbdData.k2 = 0; + } + else + { + kbdData.kv = 0; + } +} + +static void pushStringToTextEntry(char * text) { + char c; + while ((c = *text++)) { + setKey(ascii2scan[c], true); + delay(20); + setKey(ascii2scan[c], false); + delay(20); + } +} + + +uint8_t cia1PORTA(void) { + + uint8_t v; + + v = ~cpu.cia1.R[0x02] | (cpu.cia1.R[0x00] & cpu.cia1.R[0x02]); + int keys = emu_ReadKeys(); + if (!cpu.swapJoysticks) { + if (keys & MASK_JOY2_BTN) v &= 0xEF; + if (keys & MASK_JOY2_UP) v &= 0xFE; + if (keys & MASK_JOY2_DOWN) v &= 0xFD; + if (keys & MASK_JOY2_RIGHT) v &= 0xFB; + if (keys & MASK_JOY2_LEFT) v &= 0xF7; + } else { + if (keys & MASK_JOY1_BTN) v &= 0xEF; + if (keys & MASK_JOY1_UP) v &= 0xFE; + if (keys & MASK_JOY1_DOWN) v &= 0xFD; + if (keys & MASK_JOY1_RIGHT) v &= 0xFB; + if (keys & MASK_JOY1_LEFT) v &= 0xF7; + } + + + if (!kbdData.kv) return v; //Keine Taste gedrückt + + uint8_t filter = ~cpu.cia1.R[0x01] & cpu.cia1.R[0x03]; + + if (kbdData.k) { + if ( keymatrixmap[1][kbdData.k] & filter) v &= ~keymatrixmap[0][kbdData.k]; + } + + if (kbdData.ke) { + if (kbdData.ke & 0x02) { //Shift-links + if ( keymatrixmap[1][0xff] & filter) v &= ~keymatrixmap[0][0xff]; + } + if (kbdData.ke & 0x20) { //Shift-rechts + if ( keymatrixmap[1][0xfe] & filter) v &= ~keymatrixmap[0][0xfe]; + } + if (kbdData.ke & 0x11) { //Control + if ( keymatrixmap[1][0xfd] & filter) v &= ~keymatrixmap[0][0xfd]; + } + if (kbdData.ke & 0x88) { //Windows (=> Commodore) + if ( keymatrixmap[1][0xfc] & filter) v &= ~keymatrixmap[0][0xfc]; + } + } + + return v; + +} + + +uint8_t cia1PORTB(void) { + + uint8_t v; + + v = ~cpu.cia1.R[0x03] | (cpu.cia1.R[0x00] & cpu.cia1.R[0x02]) ; + + int keys = emu_ReadKeys(); + if (!cpu.swapJoysticks) { + if (keys & MASK_JOY1_BTN) v &= 0xEF; + if (keys & MASK_JOY1_UP) v &= 0xFE; + if (keys & MASK_JOY1_DOWN) v &= 0xFD; + if (keys & MASK_JOY1_RIGHT) v &= 0xFB; + if (keys & MASK_JOY1_LEFT) v &= 0xF7; + } else { + if (keys & MASK_JOY2_BTN) v &= 0xEF; + if (keys & MASK_JOY2_UP) v &= 0xFE; + if (keys & MASK_JOY2_DOWN) v &= 0xFD; + if (keys & MASK_JOY2_RIGHT) v &= 0xFB; + if (keys & MASK_JOY2_LEFT) v &= 0xF7; + } + + if (!kbdData.kv) return v; //Keine Taste gedrückt + + uint8_t filter = ~cpu.cia1.R[0x00] & cpu.cia1.R[0x02]; + + if (kbdData.k) { + if ( keymatrixmap[0][kbdData.k] & filter) v &= ~keymatrixmap[1][kbdData.k]; + } + + if (kbdData.ke) { + if (kbdData.ke & 0x02) { //Shift-links + if ( keymatrixmap[0][0xff] & filter) v &= ~keymatrixmap[1][0xff]; + } + if (kbdData.ke & 0x20) { //Shift-rechts + if ( keymatrixmap[0][0xfe] & filter) v &= ~keymatrixmap[1][0xfe]; + } + if (kbdData.ke & 0x11) { //Control + if ( keymatrixmap[0][0xfd] & filter) v &= ~keymatrixmap[1][0xfd]; + } + if (kbdData.ke & 0x88) { //Windows (=> Commodore) + if ( keymatrixmap[0][0xfc] & filter) v &= ~keymatrixmap[1][0xfc]; + } + } + + return v; +} + + +void c64_Init(void) +{ + disableEventResponder(); + resetPLA(); + resetCia1(); + resetCia2(); + resetVic(); + cpu_reset(); + emu_sndInit(); +} + + +void c64_Step(void) +{ + oneRasterLine(); +} + +void c64_Start(char * filename) +{ +} + + +static uint8_t nbkeys=0; +static uint8_t kcnt=0; +static boolean toggle=true; + +static char * seq="LOAD\"\"\r RUN\r"; + +static bool res=false; +void c64_Input(int bClick) { + + + if (nbkeys == 0) { + if (bClick) { + nbkeys = strlen(seq); + kcnt=0; + } + else + { + int hk = emu_ReadI2CKeyboard(); + if ( (hk != 0) && (res == false) ) { + setKey(ascii2scan[hk],true); + res = true; + } + else if (hk == 0){ + setKey(ascii2scan[hk],false); + res = false; + } + } + } + else { + char k = seq[kcnt]; + if (k != ' ') setKey(ascii2scan[k],toggle); + if (!toggle) { + kcnt++; + nbkeys--; + toggle = true; + } + else { + toggle = false; + } + } +} + +#ifdef HAS_SND +void SND_Process( void * stream, int len ) +{ + playSID.update(stream, len); +} +#endif diff --git a/MCUME_teensy/teensy64/c64.h b/MCUME_teensy/teensy64/c64.h new file mode 100644 index 0000000..93525f4 --- /dev/null +++ b/MCUME_teensy/teensy64/c64.h @@ -0,0 +1,5 @@ +extern void c64_Init(void); +extern void c64_Step(void); +extern void c64_Start(char * filename); +extern void c64_Input(int key); + diff --git a/MCUME_teensy/teensy64/cia1.cpp b/MCUME_teensy/teensy64/cia1.cpp new file mode 100755 index 0000000..9c4e749 --- /dev/null +++ b/MCUME_teensy/teensy64/cia1.cpp @@ -0,0 +1,401 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include "cpu.h" +#include "cia1.h" +#include + + +#define DEBUGCIA1 0 +#define RTCDEBUG 0 + +#define decToBcd(x) ( ( (uint8_t) (x) / 10 * 16) | ((uint8_t) (x) % 10) ) +#define bcdToDec(x) ( ( (uint8_t) (x) / 16 * 10) | ((uint8_t) (x) % 16) ) +#define tod() (cpu.cia1.TODfrozen?cpu.cia1.TODfrozenMillis:(int)((millis() - cpu.cia1.TOD) % 86400000l)) + +void cia1_setAlarmTime() { + cpu.cia1.TODAlarm = (cpu.cia1.W[0x08] + cpu.cia1.W[0x09] * 10l + cpu.cia1.W[0x0A] * 600l + cpu.cia1.W[0x0B] * 36000l); +} + +void cia1_write(uint32_t address, uint8_t value) { + + address &= 0x0F; + + switch (address) { + case 0x04 : {cpu.cia1.W[address] = value;} ;break; //Timer A LO + case 0x05 : {cpu.cia1.W[address] = value; if ((cpu.cia1.R[0x0E] & 0x01) == 0) cpu.cia1.R[address]=value; };break;//Timer A HI + case 0x06 : {cpu.cia1.W[address] = value;} ;break; //Timer B LO + case 0x07 : {cpu.cia1.W[address] = value; if ((cpu.cia1.R[0x0F] & 0x01) == 0) cpu.cia1.R[address]=value; };break; //Timer B HI + + //RTC + case 0x08 : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + value &= 0x0f; + cpu.cia1.W[address] = value; + cia1_setAlarmTime(); + + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm TENTH:"); + Serial.println(value,HEX); + #endif + + } else { + value &= 0x0f; + cpu.cia1.TODstopped=0; + //Translate set Time to TOD: + cpu.cia1.TOD = (int)(millis() % 86400000l) - (value * 100 + cpu.cia1.R[0x09] * 1000l + cpu.cia1.R[0x0A] * 60000l + cpu.cia1.R[0x0B] * 3600000l); + #if RTCDEBUG + Serial.print("CIA 1 Set TENTH:"); + Serial.println(value,HEX); + Serial.print("CIA 1 TOD (millis):"); + Serial.println(cpu.cia1.TOD); + #endif + } + }; + break; //TOD-Tenth + case 0x09 : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + cpu.cia1.W[address] = bcdToDec(value); + cia1_setAlarmTime(); + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm SEC:"); + Serial.println(value,HEX); + #endif + + } else { + cpu.cia1.R[address] = bcdToDec(value); + #if RTCDEBUG + Serial.print("CIA 1 Set SEC:"); + Serial.println(value,HEX); + #endif + + } + }; + break; //TOD-Secs + case 0x0A : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + cpu.cia1.W[address] = bcdToDec(value); + cia1_setAlarmTime(); + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm MIN:"); + Serial.println(value,HEX); + #endif + + } else { + cpu.cia1.R[address] = bcdToDec(value); + #if RTCDEBUG + Serial.print("CIA 1 Set MIN:"); + Serial.println(value,HEX); + #endif + + } + };break; //TOD-Minutes + case 0x0B : { + if ((cpu.cia1.R[0x0f] & 0x80)>0) { + cpu.cia1.W[address] = bcdToDec(value & 0x1f) + (value & 0x80?12:0); + cia1_setAlarmTime(); + #if RTCDEBUG + Serial.print("CIA 1 Set Alarm HRS:"); + Serial.println(value,HEX); + #endif + + } else { + cpu.cia1.R[address] = bcdToDec(value & 0x1f) + (value & 0x80?12:0); + cpu.cia1.TODstopped=1; + #if RTCDEBUG + Serial.print("CIA 1 Set HRS:"); + Serial.println(value,HEX); + #endif + } + };break; //TOD-Hours + + case 0x0C : { + cpu.cia1.R[address] = value; + //Fake IRQ + cpu.cia1.R[0x0d] |= 8 | ((cpu.cia1.W[0x0d] & 0x08) << 4); + } + ;break; + case 0x0D : { + if ((value & 0x80)>0) { + cpu.cia1.W[address] |= value & 0x1f; + //ggf IRQ triggern + if (cpu.cia1.R[address] & cpu.cia1.W[address] & 0x1f) { + cpu.cia1.R[address] |= 0x80; + }; + } else { + cpu.cia1.W[address] &= ~value; + } + + }; + break; + case 0x0E : {cpu.cia1.R[address] = value & ~0x10; + if ((value & 0x10)>0) { cpu.cia1.R16[0x04/2] = cpu.cia1.W16[0x04/2]; } + }; + break; + case 0x0F : {cpu.cia1.R[address] = value & ~0x10; if ((value & 0x10)>0) { cpu.cia1.R16[0x06/2] = cpu.cia1.W16[0x06/2]; }};break; + default : {cpu.cia1.R[address] = value;/*if (address ==0) {Serial.print(value);Serial.print(" ");}*/ } break; + } + +#if DEBUGCIA1 + if (cpu.pc < 0xa000) Serial.printf("%x CIA1: W %x %x\n", cpu.pc, address, value); +#endif +} + +uint8_t cia1_read(uint32_t address) { +uint8_t ret; + + address &= 0x0F; + + switch (address) { + case 0x00: {ret = cia1PORTA();};break; + case 0x01: {ret = cia1PORTB();};break; + //RTC + case 0x08: { + ret = tod() % 1000 / 10; + cpu.cia1.TODfrozen = 0; + }; + + #if RTCDEBUG + Serial.print("CIA 1 Read TENTH:"); + Serial.println(ret,HEX); + #endif + + break; //Bit 0..3: Zehntelsekunden im BCD-Format ($0-$9) Bit 4..7: immer 0 + case 0x09: { + ret = decToBcd(tod() / 1000 % 60); + }; + //Serial.println( tod() / 100); + #if RTCDEBUG + Serial.print("CIA 1 Read SEC:"); + Serial.println(ret,HEX); + #endif + + break; //Bit 0..3: Einersekunden im BCD-Format ($0-$9) Bit 4..6: Zehnersekunden im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0A: { + ret = decToBcd(tod() / (1000 * 60) % 60); + }; + #if RTCDEBUG + Serial.print("CIA 1 Read MIN:"); + Serial.println(ret,HEX); + #endif + + break; //Bit 0..3: Einerminuten im BCD-Format( $0-$9) Bit 4..6: Zehnerminuten im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0B: { + //Bit 0..3: Einerstunden im BCD-Format ($0-$9) Bit 4: Zehnerstunden im BCD-Format ($0-$1) // Bit 7: Unterscheidung AM/PM, 0=AM, 1=PM + //Lesen aus diesem Register friert alle TOD-Register ein (TOD läuft aber weiter), bis Register 8 (TOD 10THS) gelesen wird. + cpu.cia1.TODfrozen = 0; + cpu.cia1.TODfrozenMillis = tod(); + cpu.cia1.TODfrozen = 1; + #if RTCDEBUG + Serial.print("CIA 1 FrozenMillis:"); + Serial.println(cpu.cia1.TODfrozenMillis); + #endif + ret = cpu.cia1.TODfrozenMillis / (1000 * 3600) % 24; + if (ret>=12) + ret = 128 | decToBcd(ret - 12); + else + ret = decToBcd(ret); + }; + #if RTCDEBUG + Serial.print("CIA 1 Read HRS:"); + Serial.println(ret,HEX); + #endif + + break; + + case 0x0D: {ret = cpu.cia1.R[address] & 0x9f; + cpu.cia1.R[address]=0; + }; + break; + + default: ret = cpu.cia1.R[address];break; + } + +#if DEBUGCIA1 + if (cpu.pc < 0xa000) Serial.printf("%x CIA1: R %x %x\n", cpu.pc, address, ret); +#endif +return ret; +} + +#if 0 +void cia1_clock(int clk) { + + uint32_t cnta, cntb, cra, crb; + + //Timer A + cra = cpu.cia1.R[0x0e]; + crb = cpu.cia1.R[0x0f]; + + if (( cra & 0x21) == 0x01) { + cnta = cpu.cia1.R[0x04] | cpu.cia1.R[0x05] << 8; + cnta -= clk; + if (cnta > 0xffff) { //Underflow + cnta = cpu.cia1.W[0x04] | cpu.cia1.W[0x05] << 8; // Reload Timer + if (cra & 0x08) { // One Shot + cpu.cia1.R[0x0e] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia1.R[0x0d] |= 1 /*| (cpu.cia1.W[0x1a] & 0x01) */| ((cpu.cia1.W[0x0d] & 0x01) << 7); + + if ((crb & 0x61)== 0x41) { //Timer B counts underflows of Timer A + cntb = cpu.cia1.R[0x06] | cpu.cia1.R[0x07] << 8; + cntb--; + if (cntb > 0xffff) { //underflow + cpu.cia1.R[0x04] = cnta; + cpu.cia1.R[0x05] = cnta >> 8; + goto underflow_b; + } + } + } + + cpu.cia1.R[0x04] = cnta; + cpu.cia1.R[0x05] = cnta >> 8; + + } + + //Timer B + if (( crb & 0x61) == 0x01) { + cntb = cpu.cia1.R[0x06] | cpu.cia1.R[0x07] << 8; + cntb -= clk; + if (cntb > 0xffff) { //underflow +underflow_b: + cntb = cpu.cia1.W[0x06] | cpu.cia1.W[0x07] << 8; // Reload Timer + if (crb & 0x08) { // One Shot + cpu.cia1.R[0x0f] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia1.R[0x0d] |= 2 /*| (cpu.cia1.W[0x1a] & 0x02) */ | ((cpu.cia1.W[0x0d] & 0x02) << 6); + + } + + cpu.cia1.R[0x06] = cntb; + cpu.cia1.R[0x07] = cntb >> 8; + + } +} +#else + +void cia1_clock(int clk) { + + int32_t t; + uint32_t regFEDC = cpu.cia1.R32[0x0C/4]; + + // TIMER A + //if (((cpu.cia1.R[0x0E] & 0x01)>0) && ((cpu.cia1.R[0x0E] & 0x20)==0)) { + + //if ((regFEDC & 0x210000)==0x10000) { + if (((regFEDC>>16) & 0x21)==0x1) { + t = cpu.cia1.R16[0x04/2]; + + if (clk > t) { //underflow ? + t = cpu.cia1.W16[0x04/2] - (clk - t); + regFEDC |= 0x00000100; + if ((regFEDC & 0x00080000)) regFEDC &= 0xfffeffff; //One-Shot + } + else { + t-=clk; + } + + cpu.cia1.R16[0x04/2] = t; + } + + + // TIMER B + //TODO : Prüfen ob das funktioniert + if ( regFEDC & 0x01000000 ) { + //uint16_t quelle = (cpu.cia1.R[0x0F]>>5) & 0x03; + if ((regFEDC & 0x60000000) == 0x40000000) { + + if (regFEDC & 0x00000100) //unterlauf TimerA? + clk = 1; + else + goto tend; + } + + t = cpu.cia1.R16[0x06/2]; + + if (clk > t) { //underflow ? + t = cpu.cia1.W16[0x06/2] - (clk - t); + regFEDC |= 0x00000200; + if ((regFEDC & 0x08000000)) regFEDC &= 0xfeffffff; + } else { + t -= clk; + } + cpu.cia1.R16[0x06/2] = t; //One-Shot + + } + +tend: + + + // INTERRUPT ? + if ( regFEDC & cpu.cia1.W32[0x0C/4] & 0x0f00 ) { + regFEDC |= 0x8000; + cpu.cia1.R32[0x0C/4]=regFEDC; + } + else cpu.cia1.R32[0x0C/4]=regFEDC; +} + +#endif + +void cia1_checkRTCAlarm() { // call @ 1/10 sec interval minimum + + if ((int)(millis() - cpu.cia1.TOD) % 86400000l/100 == cpu.cia1.TODAlarm) { + //Serial.print("CIA1 RTC interrupt"); + cpu.cia1.R[13] |= 0x4 | ((cpu.cia1.W[13] & 4) << 5); + } +} + +void cia1FLAG(void) { + //Serial.println("CIA1 FLAG interrupt"); + cpu.cia1.R[13] |= 0x10 | ((cpu.cia1.W[13] & 0x10) << 3); +} + +void resetCia1(void) { + memset((uint8_t*)&cpu.cia1.R, 0, sizeof(cpu.cia1.R)); + cpu.cia1.W[0x04] = cpu.cia1.R[0x04] = 0xff; + cpu.cia1.W[0x05] = cpu.cia1.R[0x05] = 0xff; + cpu.cia1.W[0x06] = cpu.cia1.R[0x06] = 0xff; + cpu.cia1.W[0x07] = cpu.cia1.R[0x07] = 0xff; + + //FLAG pin CIA1 - Serial SRQ (input only) + //pinMode(PIN_SERIAL_SRQ, OUTPUT_OPENDRAIN); + //digitalWriteFast(PIN_SERIAL_SRQ, 1); + //attachInterrupt(digitalPinToInterrupt(PIN_SERIAL_SRQ), cia1FLAG, FALLING); +} + + diff --git a/MCUME_teensy/teensy64/cia1.h b/MCUME_teensy/teensy64/cia1.h new file mode 100755 index 0000000..ec69047 --- /dev/null +++ b/MCUME_teensy/teensy64/cia1.h @@ -0,0 +1,33 @@ +#ifndef Teensy64_cia1_h_ +#define Teensy64_cia1_h_ + +struct tcia { + union { + uint8_t R[0x10]; + uint16_t R16[0x10/2]; + uint32_t R32[0x10/4]; + }; + union { + uint8_t W[0x10]; + uint16_t W16[0x10/2]; + uint32_t W32[0x10/4]; + }; + int32_t TOD; + int32_t TODfrozenMillis; + int32_t TODAlarm; + uint8_t TODstopped; + uint8_t TODfrozen; +}; + + +void cia1_clock(int clk) __attribute__ ((hot)); +void cia1_checkRTCAlarm() __attribute__ ((hot)); +void cia1_write(uint32_t address, uint8_t value) __attribute__ ((hot)); +uint8_t cia1_read(uint32_t address) __attribute__ ((hot)); + +void resetCia1(void); + + + + +#endif diff --git a/MCUME_teensy/teensy64/cia2.cpp b/MCUME_teensy/teensy64/cia2.cpp new file mode 100755 index 0000000..db71d7d --- /dev/null +++ b/MCUME_teensy/teensy64/cia2.cpp @@ -0,0 +1,452 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include "cpu.h" +#include "cia2.h" +#include + +#define DEBUGCIA2 0 +#define RTCDEBUG 0 + +#define decToBcd(x) ( ( (uint8_t) (x) / 10 * 16) | ((uint8_t) (x) % 10) ) +#define bcdToDec(x) ( ( (uint8_t) (x) / 16 * 10) | ((uint8_t) (x) % 16) ) +#define tod() (cpu.cia2.TODfrozen?cpu.cia2.TODfrozenMillis:(int)((millis() - cpu.cia2.TOD) % 86400000l)) + +void cia2_setAlarmTime() { + cpu.cia2.TODAlarm = (cpu.cia2.W[0x08] + cpu.cia2.W[0x09] * 10l + cpu.cia2.W[0x0A] * 600l + cpu.cia2.W[0x0B] * 36000l); +} + +void cia2_write(uint32_t address, uint8_t value) { + + address &= 0x0F; + + switch (address) { + + case 0x00 : { + if ((~value & 0x38)) { + cpu_setExactTiming(); + } + + WRITE_ATN_CLK_DATA(value); + + + cpu.vic.bank = ((~value) & 0x03) * 16384; + vic_adrchange(); + cpu.cia2.R[address] = value; + } + break; + + case 0x01 : + break;//Data PORTB + + case 0x04 : { + cpu.cia2.W[address] = value; + } + break; //Timer A LO + case 0x05 : { + cpu.cia2.W[address] = value; + if ((cpu.cia2.R[0x0E] & 0x01) == 0) cpu.cia2.R[address] = value; + } + break; //Timer A HI + case 0x06 : { + cpu.cia2.W[address] = value; + } + break; //Timer B LO + case 0x07 : { + cpu.cia2.W[address] = value; + if ((cpu.cia2.R[0x0F] & 0x01) == 0) cpu.cia2.R[address] = value; + } + break; //Timer B HI + + //RTC + case 0x08 : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + value &= 0x0f; + cpu.cia2.W[address] = value; + cia2_setAlarmTime(); + +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm TENTH:"); + Serial.println(value, HEX); +#endif + + } else { + value &= 0x0f; + cpu.cia2.TODstopped = 0; + //Translate set Time to TOD: + cpu.cia2.TOD = (int)(millis() % 86400000l) - + (value * 100 + cpu.cia2.R[0x09] * 1000l + cpu.cia2.R[0x0A] * 60000l + cpu.cia2.R[0x0B] * 3600000l); +#if RTCDEBUG + Serial.print("CIA 2 Set TENTH:"); + Serial.println(value, HEX); + Serial.print("CIA 2 TOD (millis):"); + Serial.println(cpu.cia2.TOD); +#endif + } + } + break; //TOD-Tenth + case 0x09 : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + cpu.cia2.W[address] = bcdToDec(value); + cia2_setAlarmTime(); +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm SEC:"); + Serial.println(value, HEX); +#endif + + } else { + cpu.cia2.R[address] = bcdToDec(value); +#if RTCDEBUG + Serial.print("CIA 2 Set SEC:"); + Serial.println(value, HEX); +#endif + + } + } + break; //TOD-Secs + case 0x0A : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + cpu.cia2.W[address] = bcdToDec(value); + cia2_setAlarmTime(); +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm MIN:"); + Serial.println(value, HEX); +#endif + + } else { + cpu.cia2.R[address] = bcdToDec(value); +#if RTCDEBUG + Serial.print("CIA 2 Set MIN:"); + Serial.println(value, HEX); +#endif + + } + } + break; //TOD-Minutes + case 0x0B : { + if ((cpu.cia2.R[0x0f] & 0x80) > 0) { + cpu.cia2.W[address] = bcdToDec(value & 0x1f) + (value & 0x80 ? 12 : 0); + cia2_setAlarmTime(); +#if RTCDEBUG + Serial.print("CIA 2 Set Alarm HRS:"); + Serial.println(value, HEX); +#endif + + } else { + cpu.cia2.R[address] = bcdToDec(value & 0x1f) + (value & 0x80 ? 12 : 0); + cpu.cia2.TODstopped = 1; +#if RTCDEBUG + Serial.print("CIA 2 Set HRS:"); + Serial.println(value, HEX); +#endif + } + } + break; //TOD-Hours + case 0x0C : { + cpu.cia2.R[address] = value; + //Fake IRQ + cpu.cia2.R[0x0d] |= 8 | ((cpu.cia2.W[0x0d] & 0x08) << 4); + cpu_nmi(); + } + break; + case 0x0D : { + if ((value & 0x80) > 0) { + cpu.cia2.W[address] |= value & 0x1f; + //ggf NMItriggern + if (cpu.cia2.R[address] & cpu.cia2.W[address] & 0x1f) { + cpu.cia2.R[address] |= 0x80; + cpu_nmi(); + }; + } else { + cpu.cia2.W[address] &= ~value; + } + } + break; + + case 0x0E : { + cpu.cia2.R[address] = value & ~0x10; + if ((value & 0x10) > 0) { + cpu.cia2.R16[0x04 / 2] = cpu.cia2.W16[0x04 / 2]; + } + } + break; + case 0x0F : { + cpu.cia2.R[address] = value & ~0x10; + if ((value & 0x10) > 0) { + cpu.cia2.R16[0x06 / 2] = cpu.cia2.W16[0x06 / 2]; + } + } + break; + default : { + cpu.cia2.R[address] = value;/*if (address ==0) {Serial.print(value);Serial.print(" ");}*/ + } + break; + } + +#if DEBUGCIA2 + Serial.printf("%x CIA2: W %x %x\n", cpu.pc, address, value); +#endif +} + +uint8_t cia2_read(uint32_t address) { + uint8_t ret; + + address &= 0x0F; + + switch (address) { + + case 0x00 : { + ret = (cpu.cia2.R[address] & 0x3f) | READ_CLK_DATA(); + if ((~ret & 0x3f)) { + cpu_setExactTiming(); + } + + break; + } + + //RTC + case 0x08: { + ret = tod() % 1000 / 10; + cpu.cia2.TODfrozen = 0; + }; + +#if RTCDEBUG + Serial.print("CIA 2 Read TENTH:"); + Serial.println(ret, HEX); +#endif + + break; //Bit 0..3: Zehntelsekunden im BCD-Format ($0-$9) Bit 4..7: immer 0 + case 0x09: { + ret = decToBcd(tod() / 1000 % 60); + }; + //Serial.println( tod() / 100); +#if RTCDEBUG + Serial.print("CIA 2 Read SEC:"); + Serial.println(ret, HEX); +#endif + + break; //Bit 0..3: Einersekunden im BCD-Format ($0-$9) Bit 4..6: Zehnersekunden im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0A: { + ret = decToBcd(tod() / (1000 * 60) % 60); + }; +#if RTCDEBUG + Serial.print("CIA 2 Read MIN:"); + Serial.println(ret, HEX); +#endif + + break; //Bit 0..3: Einerminuten im BCD-Format( $0-$9) Bit 4..6: Zehnerminuten im BCD-Format ($0-$5) Bit 7: immer 0 + case 0x0B: { + //Bit 0..3: Einerstunden im BCD-Format ($0-$9) Bit 4: Zehnerstunden im BCD-Format ($0-$1) // Bit 7: Unterscheidung AM/PM, 0=AM, 1=PM + //Lesen aus diesem Register friert alle TOD-Register ein (TOD läuft aber weiter), bis Register 8 (TOD 10THS) gelesen wird. + cpu.cia2.TODfrozen = 0; + cpu.cia2.TODfrozenMillis = tod(); + cpu.cia2.TODfrozen = 1; +#if RTCDEBUG + Serial.print("CIA 2 FrozenMillis:"); + Serial.println(cpu.cia2.TODfrozenMillis); +#endif + ret = cpu.cia2.TODfrozenMillis / (1000 * 3600) % 24; + if (ret >= 12) + ret = 128 | decToBcd(ret - 12); + else + ret = decToBcd(ret); + }; +#if RTCDEBUG + Serial.print("CIA 2 Read HRS:"); + Serial.println(ret, HEX); +#endif + + break; + + case 0x0D: { + ret = cpu.cia2.R[address] & 0x9f; + cpu.cia2.R[address] = 0; + cpu_clearNmi(); + }; break; + default: ret = cpu.cia2.R[address]; break; + } + +#if DEBUGCIA2 + Serial.printf("%x CIA2: R %x %x\n", cpu.pc, address, ret); +#endif + return ret; +} + +#if 0 +void cia2_clock(int clk) { + + uint32_t cnta, cntb, cra, crb; + + //Timer A + cra = cpu.cia2.R[0x0e]; + crb = cpu.cia2.R[0x0f]; + + if (( cra & 0x21) == 0x01) { + cnta = cpu.cia2.R[0x04] | cpu.cia2.R[0x05] << 8; + cnta -= clk; + if (cnta > 0xffff) { //Underflow + cnta = cpu.cia2.W[0x04] | cpu.cia2.W[0x05] << 8; // Reload Timer + if (cra & 0x08) { // One Shot + cpu.cia2.R[0x0e] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia2.R[0x0d] |= 1 | /* (cpu.cia2.W[0x0d] & 0x01) |*/ ((cpu.cia2.W[0x0d] & 0x01) << 7); + + if ((crb & 0x61) == 0x41) { //Timer B counts underflows of Timer A + cntb = cpu.cia2.R[0x06] | cpu.cia2.R[0x07] << 8; + cntb--; + if (cntb > 0xffff) { //underflow + cpu.cia2.R[0x04] = cnta & 0x0f; + cpu.cia2.R[0x05] = cnta >> 8; + goto underflow_b; + } + } + } + + cpu.cia2.R[0x04] = cnta & 0x0f; + cpu.cia2.R[0x05] = cnta >> 8; + + } + + //Timer B + if (( crb & 0x61) == 0x01) { + cntb = cpu.cia2.R[0x06] | cpu.cia2.R[0x07] << 8; + cntb -= clk; + if (cntb > 0xffff) { //underflow +underflow_b: + cntb = cpu.cia2.W[0x06] | cpu.cia2.W[0x07] << 8; // Reload Timer + if (crb & 0x08) { // One Shot + cpu.cia2.R[0x0f] &= 0xfe; //Stop timer + } + + //Interrupt: + cpu.cia2.R[0x0d] |= 2 | /*(cpu.cia2.W[0x0d] & 0x02) | */ ((cpu.cia2.W[0x0d] & 0x02) << 6); + } + + cpu.cia2.R[0x06] = cntb & 0x0f; + cpu.cia2.R[0x07] = cntb >> 8; + + } + if (cpu.cia2.R[0x0d] & 0x80) cpu_nmi(); +} + +#else + +void cia2_clock(int clk) { + + int32_t t; + uint32_t regFEDC = cpu.cia2.R32[0x0C / 4]; + + // TIMER A + //if (((cpu.cia2.R[0x0E] & 0x01)>0) && ((cpu.cia2.R[0x0E] & 0x20)==0)) { + //if ((regFEDC & 0x210000)==0x10000) { + if (((regFEDC >> 16) & 0x21) == 0x1) { + + t = cpu.cia2.R16[0x04 / 2]; + + if (clk > t) { //underflow + t = cpu.cia2.W16[0x04 / 2] - (clk - t); //neu + regFEDC |= 0x00000100; + if ((regFEDC & 0x00080000)) regFEDC &= 0xfffeffff; + } + else { + t -= clk; + } + + cpu.cia2.R16[0x04 / 2] = t; + } + + + // TIMER B + //TODO : Prüfen ob das funktioniert + if ( regFEDC & 0x01000000 ) { + //uint16_t quelle = (cpu.cia2.R[0x0F]>>5) & 0x03; + if ((regFEDC & 0x60000000) == 0x40000000) { + + if (regFEDC & 0x00000100) //unterlauf TimerA? + clk = 1; + else + goto tend; + } + + t = cpu.cia2.R16[0x06 / 2]; + + if (clk > t) { //underflow + t = cpu.cia2.W16[0x06 / 2] - (clk - t); //Neu + regFEDC |= 0x00000200; + if ((regFEDC & 0x08000000)) regFEDC &= 0xfeffffff; + } else { + t -= clk; + } + cpu.cia2.R16[0x06 / 2] = t; + + } + +tend: + + + // INTERRUPT ? + if ( regFEDC & cpu.cia2.W32[0x0C / 4] & 0x0f00 ) { + regFEDC |= 0x8000; + cpu.cia2.R32[0x0C / 4] = regFEDC; + } + cpu.cia2.R32[0x0C / 4] = regFEDC; +} +#endif + +void cia2_checkRTCAlarm() { // call every 1/10 sec minimum + if ((int)(millis() - cpu.cia2.TOD) % 86400000l / 100 == cpu.cia2.TODAlarm) { + // Serial.print("CIA2 RTC interrupt"); + // Interrupt + cpu.cia2.R[0x0d] |= 0x4 | (cpu.cia2.W[0x0d] & 4) << 5; + } +} + +void resetCia2(void) { + memset((uint8_t*)&cpu.cia2.R, 0, sizeof(cpu.cia2.R)); + cpu.cia2.R[0x04] = 0xff; + cpu.cia2.R[0x05] = 0xff; + cpu.cia2.R[0x06] = 0xff; + cpu.cia2.R[0x07] = 0xff; + + //pinMode(PIN_SERIAL_ATN, OUTPUT_OPENDRAIN); //ATN OUT (CIA2 PA3 OUT) + //pinMode(PIN_SERIAL_CLK, OUTPUT_OPENDRAIN); //CLK (CIA2 PA6:IN PA4: OUT) + //pinMode(PIN_SERIAL_DATA, OUTPUT_OPENDRAIN); //DATA (CIA2 PA7:IN PA5: OUT) + //digitalWriteFast(PIN_SERIAL_ATN, 1); + //digitalWriteFast(PIN_SERIAL_CLK, 1); + //digitalWriteFast(PIN_SERIAL_DATA, 1); + +} diff --git a/MCUME_teensy/teensy64/cia2.h b/MCUME_teensy/teensy64/cia2.h new file mode 100755 index 0000000..1c21cb5 --- /dev/null +++ b/MCUME_teensy/teensy64/cia2.h @@ -0,0 +1,47 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_cia2_h_ +#define Teensy64_cia2_h_ + + +void cia2_clock(int clk) __attribute__ ((hot)); +void cia2_checkRTCAlarm() __attribute__ ((hot)); +void cia2_write(uint32_t address, uint8_t value) __attribute__ ((hot)); +uint8_t cia2_read(uint32_t address) __attribute__ ((hot)); + +void resetCia2(void); + +#endif diff --git a/MCUME_teensy/teensy64/cpu.cpp b/MCUME_teensy/teensy64/cpu.cpp new file mode 100755 index 0000000..82547a3 --- /dev/null +++ b/MCUME_teensy/teensy64/cpu.cpp @@ -0,0 +1,2717 @@ +/* + Copyright Mike Chambers, Frank Bösing, 2017 + Parts of this file are based on "Fake6502 CPU emulator core v1.1" by Mike Chambers + + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +/* Fake6502 CPU emulator core v1.1 ******************* + * (c)2011 Mike Chambers (miker00lz@gmail.com) * + ***************************************************** + * LICENSE: This source code is released into the * + * public domain, but if you use it please do give * + * credit. I put a lot of effort into writing this! * + * * + ***************************************************** +*/ + +#include "cpu.h" + +#define FLAG_CARRY 0x01 +#define FLAG_ZERO 0x02 +#define FLAG_INTERRUPT 0x04 +#define FLAG_DECIMAL 0x08 +#define FLAG_BREAK 0x10 +#define FLAG_CONSTANT 0x20 +#define FLAG_OVERFLOW 0x40 +#define FLAG_SIGN 0x80 + +//flag modifier macros +#define setcarry() cpu.cpustatus |= FLAG_CARRY +#define clearcarry() cpu.cpustatus &= (~FLAG_CARRY) +#define setzero() cpu.cpustatus |= FLAG_ZERO +#define clearzero() cpu.cpustatus &= (~FLAG_ZERO) +#define setinterrupt() cpu.cpustatus |= FLAG_INTERRUPT +#define clearinterrupt() cpu.cpustatus &= (~FLAG_INTERRUPT) +#define setdecimal() cpu.cpustatus |= FLAG_DECIMAL +#define cleardecimal() cpu.cpustatus &= (~FLAG_DECIMAL) +#define setoverflow() cpu.cpustatus |= FLAG_OVERFLOW +#define clearoverflow() cpu.cpustatus &= (~FLAG_OVERFLOW) +#define setsign() cpu.cpustatus |= FLAG_SIGN +#define clearsign() cpu.cpustatus &= (~FLAG_SIGN) + + +//flag calculation macros +#define zerocalc(n) { if ((n) & 0x00FF) clearzero(); else setzero(); } +//#define signcalc(n) { if ((n) & 0x0080) setsign(); else clearsign(); } +#define signcalc(n) { cpu.cpustatus =( cpu.cpustatus & 0x7f) | (n & 0x80); } +#define carrycalc(n) { if ((n) & 0xFF00) setcarry(); else clearcarry(); } +//#define carrycalc(n) {cpu.cpustatus =( cpu.cpustatus & 0xfe) | (n >> 8); } +#define overflowcalc(n, m, o) { if (((n) ^ (uint16_t)(m)) & ((n) ^ (o)) & 0x0080) setoverflow(); else clearoverflow(); } + +#define saveaccum(n) cpu.a = (uint8_t)((n) & 0x00FF) + +#define UNSUPPORTED { printf("Unsupported Opcode\n"); while(1){;} } + +void logAddr(const uint32_t address, const uint8_t value, const uint8_t rw) { + if (rw) printf("Write "); else printf("Read "); + printf("0x%d=0x%d\n",address,value); + +} +struct tcpu cpu; +struct tio io; + +void reset6502(); +void cpu_nmi(); +static inline void cpu_irq(); + +INLINEOP uint8_t read6502(const uint32_t address) __attribute__ ((hot)); +INLINEOP uint8_t read6502(const uint32_t address) { + return (*cpu.plamap_r)[address >> 8](address); +} + +INLINEOP uint8_t read6502ZP(const uint32_t address) __attribute__ ((hot)); //Zeropage +INLINEOP uint8_t read6502ZP(const uint32_t address) { + return cpu.RAM[address & 0xff]; +} + +/* Ein Schreibzugriff auf einen ROM-Bereich speichert das Byte im „darunterliegenden” RAM. */ +INLINEOP void write6502(const uint32_t address, const uint8_t value) __attribute__ ((hot)); +INLINEOP void write6502(const uint32_t address, const uint8_t value) { + (*cpu.plamap_w)[address>>8](address, value); +} + +//a few general functions used by various other functions +INLINEOP void push16(const uint16_t pushval) { + cpu.RAM[BASE_STACK + cpu.sp] = (pushval >> 8) & 0xFF; + cpu.RAM[BASE_STACK + ((cpu.sp - 1) & 0xFF)] = pushval & 0xFF; + cpu.sp -= 2; +} + +INLINEOP uint16_t pull16() { + uint16_t temp16; + temp16 = cpu.RAM[BASE_STACK + ((cpu.sp + 1) & 0xFF)] | ((uint16_t)cpu.RAM[BASE_STACK + ((cpu.sp + 2) & 0xFF)] << 8); + cpu.sp += 2; + return(temp16); +} + +INLINEOP void push8(uint8_t pushval) { + cpu.RAM[BASE_STACK + (cpu.sp--)] = pushval; + +} + +INLINEOP uint8_t pull8() { + return cpu.RAM[BASE_STACK + (++cpu.sp)]; +} + +/********************************************************************************************************************/ +/*addressing mode functions, calculates effective addresses */ +/********************************************************************************************************************/ + +INLINEOP void imp() { //implied +} + +INLINEOP void acc() { //accumulator +} + +INLINEOP void imm() { //immediate + cpu.ea = cpu.pc++; +} + +INLINEOP void zp() { //zero-page + cpu.ea = read6502(cpu.pc++) & 0xFF; +} + +INLINEOP void zpx() { //zero-page,X + cpu.ea = (read6502(cpu.pc++) + cpu.x) & 0xFF; //zero-page wraparound +} + +INLINEOP void zpy() { //zero-page,Y + cpu.ea = (read6502(cpu.pc++) + cpu.y) & 0xFF; //zero-page wraparound +} + +INLINEOP void rel() { //relative for branch ops (8-bit immediate value, sign-extended) + cpu.reladdr = read6502(cpu.pc++); + if (cpu.reladdr & 0x80) cpu.reladdr |= 0xFF00; +} + +INLINEOP void abso() { //absolute + cpu.ea = read6502(cpu.pc) | (read6502(cpu.pc + 1) << 8); + cpu.pc += 2; +} + +INLINEOP void absx() { //absolute,X + cpu.ea = (read6502(cpu.pc) | (read6502(cpu.pc + 1) << 8)) + cpu.x; + cpu.pc += 2; +} + +INLINEOP void absx_t() { //absolute,X with extra cycle + uint16_t h = read6502(cpu.pc) + cpu.x; + if (h & 0x100) cpu.ticks += 1; + cpu.ea = h + (read6502(cpu.pc + 1) << 8); + cpu.pc += 2; +} + +INLINEOP void absy() { //absolute,Y + cpu.ea = (read6502(cpu.pc) + (read6502(cpu.pc + 1) << 8)) + cpu.y; + cpu.pc += 2; +} + +INLINEOP void absy_t() { //absolute,Y with extra cycle + uint16_t h = read6502(cpu.pc) + cpu.y; + if (h & 0x100) cpu.ticks += 1; + cpu.ea = h + (read6502(cpu.pc + 1) << 8); + cpu.pc += 2; +} + +INLINEOP void ind() { //indirect + uint16_t eahelp, eahelp2; + eahelp = read6502(cpu.pc) | (read6502(cpu.pc + 1) << 8); + eahelp2 = (eahelp & 0xFF00) | ((eahelp + 1) & 0x00FF); //replicate 6502 page-boundary wraparound bug + cpu.ea = read6502(eahelp) | (read6502(eahelp2) << 8); + cpu.pc += 2; +} + +INLINEOP void indx() { // (indirect,X) + uint32_t eahelp; + eahelp = (read6502(cpu.pc++) + cpu.x) & 0xFF; //zero-page wraparound for table pointer + cpu.ea = read6502ZP((uint8_t)eahelp) | (read6502ZP((uint8_t)(eahelp + 1)) << 8); +} + +INLINEOP void indy() { // (zeropage indirect),Y + uint8_t zp = read6502(cpu.pc++); + cpu.ea = read6502ZP((uint16_t) zp++); + cpu.ea += (uint16_t) read6502ZP((uint16_t) zp) << 8; + cpu.ea += cpu.y; +} + +INLINEOP void indy_t() { // (zeropage indirect),Y with extra cycle + uint8_t zp = read6502(cpu.pc++); + uint16_t h; + h = read6502ZP((uint16_t) zp++); + h += (uint16_t) read6502ZP((uint16_t) zp) << 8; + if (((h + cpu.y) & 0xff) != (h & 0xff)) cpu.ticks += 1; + cpu.ea = h + cpu.y; +} + +INLINEOP uint32_t getvalue() __attribute__ ((hot)); +INLINEOP uint32_t getvalue() { + return read6502(cpu.ea); +} + +INLINEOP uint32_t getvalueZP() __attribute__ ((hot)); +INLINEOP uint32_t getvalueZP() { + return read6502ZP(cpu.ea); +} + +INLINEOP void putvalue(const uint8_t saveval) __attribute__ ((hot)); +INLINEOP void putvalue(const uint8_t saveval) { + write6502(cpu.ea, saveval); +} + + +/********************************************************************************************************************/ +/* instruction handler functions */ +/********************************************************************************************************************/ + +/* +Aliases used in other illegal opcode sources: + +SLO = ASO +SRE = LSE +ISC = ISB +ALR = ASR +SHX = A11 (A11 was a result of only having tested this one on adress $1000) +SHY = A11 +LAS = LAR +KIL = JAM, HLT +*/ + +#define SETFLAGS(data) \ +{ \ + if (!(data)) \ + cpu.cpustatus = (cpu.cpustatus & ~FLAG_SIGN) | FLAG_ZERO; \ + else \ + cpu.cpustatus = (cpu.cpustatus & ~(FLAG_SIGN|FLAG_ZERO)) | \ + ((data) & FLAG_SIGN); \ +} + + +INLINEOP void _adc(unsigned data) { + unsigned tempval = data; + unsigned temp; + if (cpu.cpustatus & FLAG_DECIMAL) { + temp = (cpu.a & 0x0f) + (tempval & 0x0f) + (cpu.cpustatus & FLAG_CARRY); + if (temp > 9) temp += 6; + if (temp <= 0x0f) + temp = (temp & 0xf) + (cpu.a & 0xf0) + (tempval & 0xf0); + else + temp = (temp & 0xf) + (cpu.a & 0xf0) + (tempval & 0xf0) + 0x10; + if (!((cpu.a + tempval + (cpu.cpustatus & FLAG_CARRY)) & 0xff)) + setzero(); + else + clearzero(); + signcalc(temp); + if (((cpu.a ^ temp) & 0x80) && !((cpu.a ^ tempval) & 0x80)) + setoverflow(); + else + clearoverflow(); + if ((temp & 0x1f0) > 0x90) temp += 0x60; + if ((temp & 0xff0) > 0xf0) + setcarry(); + else + clearcarry(); + } else { + temp = tempval + cpu.a + (cpu.cpustatus & FLAG_CARRY); + SETFLAGS(temp & 0xff); + if (!((cpu.a ^ tempval) & 0x80) && ((cpu.a ^ temp) & 0x80)) + setoverflow(); + else + clearoverflow(); + if (temp > 0xff) + setcarry(); + else + clearcarry(); + } + saveaccum(temp); +} + +INLINEOP void _sbc(unsigned data) { + unsigned tempval = data; + unsigned temp; + + temp = cpu.a - tempval - ((cpu.cpustatus & FLAG_CARRY) ^ FLAG_CARRY); + + if (cpu.cpustatus & FLAG_DECIMAL) { + unsigned tempval2; + tempval2 = (cpu.a & 0x0f) - (tempval & 0x0f) - ((cpu.cpustatus & FLAG_CARRY) ^ FLAG_CARRY); + if (tempval2 & 0x10) + tempval2 = ((tempval2 - 6) & 0xf) | ((cpu.a & 0xf0) - (tempval & 0xf0) - 0x10); + else + tempval2 = (tempval2 & 0xf) | ((cpu.a & 0xf0) - (tempval & 0xf0)); + if (tempval2 & 0x100) + tempval2 -= 0x60; + if (temp < 0x100) + setcarry(); + else + clearcarry(); + SETFLAGS(temp & 0xff); + if (((cpu.a ^ temp) & 0x80) && ((cpu.a ^ tempval) & 0x80)) + setoverflow(); + else + clearoverflow(); + saveaccum(tempval2); + } else { + SETFLAGS(temp & 0xff); + if (temp < 0x100) + setcarry(); + else + clearcarry(); + if (((cpu.a ^ temp) & 0x80) && ((cpu.a ^ tempval) & 0x80)) + setoverflow(); + else + clearoverflow(); + saveaccum(temp); + } + +} + +INLINEOP void adc() { + unsigned data = getvalue(); + _adc(data); +} + +INLINEOP void adcZP() { + unsigned data = getvalueZP(); + _adc(data); + +} + +INLINEOP void op_and() { + uint32_t result = cpu.a & getvalue(); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void op_andZP() { + uint32_t result = cpu.a & getvalueZP(); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void asl() { + uint32_t result = getvalue(); + result <<=1; + carrycalc(result); + zerocalc(result); + signcalc(result); + putvalue(result); +} + +INLINEOP void aslZP() { + uint32_t result = getvalueZP(); + result <<=1; + carrycalc(result); + zerocalc(result); + signcalc(result); + putvalue(result); +} + +INLINEOP void asla() { + uint32_t result = cpu.a << 1; + carrycalc(result); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void bcc() { + if ((cpu.cpustatus & FLAG_CARRY) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bcs() { + if ((cpu.cpustatus & FLAG_CARRY) == FLAG_CARRY) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void beq() { + if ((cpu.cpustatus & FLAG_ZERO) == FLAG_ZERO) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void op_bit() { + unsigned value = getvalue(); + cpu.cpustatus = (cpu.cpustatus & ~(FLAG_SIGN|FLAG_OVERFLOW)) | (value & (FLAG_SIGN|FLAG_OVERFLOW)); + if (!(value & cpu.a)) + setzero(); + else + clearzero(); +/* + uint32_t value = getvalue(); + uint32_t result = (uint16_t)cpu.a & value; + + zerocalc(result); + cpu.cpustatus = (cpu.cpustatus & 0x3F) | (uint8_t)(value & 0xC0); +*/ +} + +INLINEOP void op_bitZP() { + unsigned value = getvalueZP(); + cpu.cpustatus = (cpu.cpustatus & ~(FLAG_SIGN|FLAG_OVERFLOW)) | (value & (FLAG_SIGN|FLAG_OVERFLOW)); + if (!(value & cpu.a)) + setzero(); + else + clearzero(); +} + +INLINEOP void bmi() { + if ((cpu.cpustatus & FLAG_SIGN) == FLAG_SIGN) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bne() { + if ((cpu.cpustatus & FLAG_ZERO) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bpl() { + if ((cpu.cpustatus & FLAG_SIGN) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void brk() { + cpu.pc++; + push16(cpu.pc); //push next instruction address onto stack + push8(cpu.cpustatus | FLAG_BREAK); //push CPU cpustatus to stack + setinterrupt(); //set interrupt flag + cpu.pc = read6502(0xFFFE) | (read6502(0xFFFF) << 8); +} + +INLINEOP void bvc() { + if ((cpu.cpustatus & FLAG_OVERFLOW) == 0) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void bvs() { + if ((cpu.cpustatus & FLAG_OVERFLOW) == FLAG_OVERFLOW) { + uint32_t oldpc = cpu.pc; + cpu.pc += cpu.reladdr; + if ((oldpc & 0xFF00) != (cpu.pc & 0xFF00)) cpu.ticks += 2; //check if jump crossed a page boundary + else cpu.ticks++; + } +} + +INLINEOP void clc() { + clearcarry(); +} + +INLINEOP void cld() { + cleardecimal(); +} + +INLINEOP void cli_() { + clearinterrupt(); +} + +INLINEOP void clv() { + clearoverflow(); +} + +INLINEOP void cmp() { + uint16_t value = getvalue(); + uint32_t result = (uint16_t)cpu.a - value; + + if (cpu.a >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.a == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cmpZP() { + uint16_t value = getvalueZP(); + uint32_t result = (uint16_t)cpu.a - value; + + if (cpu.a >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.a == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpx() { + uint16_t value = getvalue(); + uint16_t result = (uint16_t)cpu.x - value; + + if (cpu.x >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.x == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpxZP() { + uint16_t value = getvalueZP(); + uint16_t result = (uint16_t)cpu.x - value; + + if (cpu.x >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.x == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpy() { + uint16_t value = getvalue(); + uint16_t result = (uint16_t)cpu.y - value; + + if (cpu.y >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.y == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void cpyZP() { + uint16_t value = getvalueZP(); + uint16_t result = (uint16_t)cpu.y - value; + + if (cpu.y >= (uint8_t)(value & 0x00FF)) setcarry(); + else clearcarry(); + if (cpu.y == (uint8_t)(value & 0x00FF)) setzero(); + else clearzero(); + signcalc(result); +} + +INLINEOP void dec() { + uint32_t result = getvalue() - 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void decZP() { + uint32_t result = getvalueZP() - 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void dex() { + cpu.x--; + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void dey() { + cpu.y--; + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void eor() { + uint32_t result = cpu.a ^ getvalue(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void eorZP() { + uint32_t result = cpu.a ^ getvalueZP(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void inc() { + uint32_t result = getvalue() + 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void incZP() { + uint32_t result = getvalueZP() + 1; + + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void inx() { + cpu.x++; + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void iny() { + cpu.y++; + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void jmp() { + cpu.pc = cpu.ea; +} + +INLINEOP void jsr() { + push16(cpu.pc - 1); + cpu.pc = cpu.ea; +} + +INLINEOP void lda() { + cpu.a = getvalue(); + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void ldaZP() { + cpu.a = getvalueZP(); + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void ldx() { + cpu.x = getvalue(); + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void ldxZP() { + cpu.x = getvalue(); + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void ldy() { + cpu.y = getvalue(); + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void ldyZP() { + cpu.y = getvalueZP(); + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void lsr() { + uint32_t value = getvalue(); + uint32_t result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + //clearsign(); + signcalc(result); + + putvalue(result); +} + +INLINEOP void lsrZP() { + uint32_t value = getvalue(); + uint32_t result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + //clearsign(); + signcalc(result); + + putvalue(result); +} + +INLINEOP void lsra() { + uint8_t value = cpu.a; + uint8_t result = value >> 1; + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + //clearsign(); + signcalc(result); + saveaccum(result); +} + +INLINEOP void ora() { + + uint32_t result = cpu.a | getvalue(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void oraZP() { + + uint32_t result = cpu.a | getvalueZP(); + + zerocalc(result); + signcalc(result); + + saveaccum(result); +} + +INLINEOP void pha() { + push8(cpu.a); +} + +INLINEOP void php() { + push8(cpu.cpustatus | FLAG_BREAK); +} + +INLINEOP void pla() { + cpu.a = pull8(); + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void plp() { + cpu.cpustatus = (pull8() & 0xef) | FLAG_CONSTANT; +} + +INLINEOP void rol() { + uint16_t value = getvalue(); + uint16_t result = (value << 1) | (cpu.cpustatus & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rolZP() { + uint16_t value = getvalueZP(); + uint16_t result = (value << 1) | (cpu.cpustatus & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rola() { + uint16_t value = cpu.a; + uint16_t result = (value << 1) | (cpu.cpustatus & FLAG_CARRY); + + carrycalc(result); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + +INLINEOP void ror() { + uint32_t value = getvalue(); + uint16_t result = (value >> 1) | ((cpu.cpustatus & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rorZP() { + uint32_t value = getvalueZP(); + uint16_t result = (value >> 1) | ((cpu.cpustatus & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + + putvalue(result); +} + +INLINEOP void rora() { + uint32_t value = cpu.a; + uint16_t result = (value >> 1) | ((cpu.cpustatus & FLAG_CARRY) << 7); + + if (value & 1) setcarry(); + else clearcarry(); + zerocalc(result); + signcalc(result); + saveaccum(result); +} + + +INLINEOP void rti() { + cpu.cpustatus = pull8(); + cpu.pc = pull16(); +} + +INLINEOP void rts() { + cpu.pc = pull16() + 1; +} + +INLINEOP void sbc() { + unsigned data = getvalue(); + _sbc(data); +} + +INLINEOP void sbcZP() { + unsigned data = getvalueZP(); + _sbc(data); +} + + +INLINEOP void sec() { + setcarry(); +} + +INLINEOP void sed() { + setdecimal(); +} + +INLINEOP void sei_() { + setinterrupt(); +} + +INLINEOP void sta() { + putvalue(cpu.a); +} + +INLINEOP void stx() { + putvalue(cpu.x); +} + +INLINEOP void sty() { + putvalue(cpu.y); +} + +INLINEOP void tax() { + cpu.x = cpu.a; + + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void tay() { + cpu.y = cpu.a; + + zerocalc(cpu.y); + signcalc(cpu.y); +} + +INLINEOP void tsx() { + + cpu.x = cpu.sp; + + zerocalc(cpu.x); + signcalc(cpu.x); + +} + +INLINEOP void txa() { + cpu.a = cpu.x; + + zerocalc(cpu.a); + signcalc(cpu.a); +} + +INLINEOP void txs() { + cpu.sp = cpu.x; +} + +INLINEOP void tya() { + cpu.a = cpu.y; + + zerocalc(cpu.a); + signcalc(cpu.a); +} + + +//undocumented instructions +INLINEOP void lax() { + lda(); + ldx(); +} + +INLINEOP void sax() { + sta(); + stx(); + putvalue(cpu.a & cpu.x); +} + +INLINEOP void dcp() { + dec(); + cmp(); +} + +INLINEOP void isb() { + inc(); + sbc(); +} + +INLINEOP void slo() { + asl(); + ora(); +} + +INLINEOP void rla() { + rol(); + op_and(); +} + +INLINEOP void sre() { + lsr(); + eor(); +} + +INLINEOP void rra() { + ror(); + adc(); +} + +INLINEOP void alr() { // (FB) + + uint32_t result = cpu.a & getvalue() ; + + if (result & 1) setcarry(); + else clearcarry(); + + result = result / 2; + + clearsign(); + zerocalc(result); + saveaccum(result); +} + +INLINEOP void arr() { //This one took me hours.. finally taken from VICE (FB) + uint32_t result; + result = cpu.a & getvalue(); + if (!(cpu.cpustatus & FLAG_DECIMAL)) { + result >>= 1; + result |= ((cpu.cpustatus & FLAG_CARRY) << 7); + signcalc(result); + zerocalc(result); + if (result & 0x40) setcarry(); else clearcarry(); + if ((result & 0x40) ^ ((result & 0x20)<<1)) setoverflow(); else clearoverflow(); + saveaccum(result); + } else { + uint32_t t2 = result; + t2 >>= 1; + t2 |= ((cpu.cpustatus & FLAG_CARRY) << 7); + if (cpu.cpustatus & FLAG_CARRY) setsign(); else clearsign(); + zerocalc(t2); + if ((t2 ^ result) & 0x40) setoverflow(); else clearoverflow(); + if (((result & 0xf) + (result & 0x1)) > 0x5) { + t2 = (t2 & 0xf0) | ((t2 + 0x6) & 0xf); + } + if (((result & 0xf0) + (result & 0x10)) > 0x50) { + t2 = (t2 & 0x0f) | ((t2 + 0x60) & 0xf0); + setcarry(); + } else { + clearcarry(); + } + saveaccum(t2); + } + +} + +INLINEOP void xaa() { // AKA ANE + const uint32_t val = 0xee; // VICE uses 0xff - but this results in an error in the testsuite (FB) + uint32_t result = (cpu.a | val) & cpu.x & getvalue(); + signcalc(result); + zerocalc(result); + saveaccum(result); +} + +INLINEOP void lxa() { + const uint32_t val = 0xee; + uint32_t result = (cpu.a | val) & getvalue(); + signcalc(result); + zerocalc(result); + cpu.x = result; + saveaccum(result); +} + +INLINEOP void axs() { //aka SBX + uint32_t result = getvalue(); + result = (cpu.a & cpu.x) - result; + cpu.x = result; + if (result < 0x100) setcarry(); else clearcarry(); + zerocalc(cpu.x); + signcalc(cpu.x); +} + +INLINEOP void ahx() { //todo (is unstable) + UNSUPPORTED +} + +INLINEOP void anc() { + uint32_t result = cpu.a & getvalue(); + signcalc(result) + zerocalc(result); + if (cpu.cpustatus & FLAG_SIGN) setcarry(); else clearcarry(); + saveaccum(result); +} + +INLINEOP void las() { + uint32_t result = cpu.sp & getvalue(); + signcalc(result); + zerocalc(result); + cpu.sp = result; + cpu.x = result; + saveaccum(result); +} + +/********************************************************************************************************************/ +/* OPCODES */ +/********************************************************************************************************************/ + +OPCODE void opKIL(void) { + printf("CPU JAM @ $%d\n",cpu.pc); + cpu_reset(); +} + +OPCODE void op0x0(void) { + cpu.ticks = 7; + imp(); + brk(); +} + +OPCODE void op0x1(void) { + cpu.ticks = 6; + indx(); + ora(); +} + +OPCODE void op0x3(void) { //undocumented + cpu.ticks = 8; + indx(); + slo(); +} + +OPCODE void op0x4(void) { //nop read zeropage + cpu.ticks = 3; + zp(); +} + +OPCODE void op0x5(void) { + cpu.ticks = 3; + zp(); + oraZP(); +} + +OPCODE void op0x6(void) { + cpu.ticks = 5; + zp(); + aslZP(); +} + +OPCODE void op0x7(void) { //undocumented SLO + cpu.ticks = 5; + zp(); + slo(); +} + +OPCODE void op0x8(void) { + cpu.ticks = 3; + imp(); + php(); +} + +OPCODE void op0x9(void) { + cpu.ticks = 2; + imm(); + ora(); +} + +OPCODE void op0xA(void) { + cpu.ticks = 2; + //acc(); + asla(); +} + +OPCODE void op0xB(void) { //undocumented + cpu.ticks = 2; + imm(); + anc(); +} + +OPCODE void op0xC(void) { //nop + cpu.ticks = 4; + abso(); +} + +OPCODE void op0xD(void) { + cpu.ticks = 4; + abso(); + ora(); +} + +OPCODE void op0xE(void) { + cpu.ticks = 6; + abso(); + asl(); +} + +OPCODE void op0xF(void) { //undocumented + cpu.ticks = 6; + abso(); + slo(); +} + +OPCODE void op0x10(void) { + cpu.ticks = 2; + rel(); + bpl(); +} + +OPCODE void op0x11(void) { + cpu.ticks = 5; + indy_t(); + ora(); +} + +OPCODE void op0x13(void) { //undocumented + cpu.ticks = 8; + indy(); + slo(); +} + +OPCODE void op0x14(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x15(void) { + cpu.ticks = 4; + zpx(); + ora(); +} + +OPCODE void op0x16(void) { + cpu.ticks = 6; + zpx(); + asl(); +} + +OPCODE void op0x17(void) { //undocumented + cpu.ticks = 6; + //zpy(); bug + zpx(); + slo(); +} + +OPCODE void op0x18(void) { + cpu.ticks = 2; + imp(); + clc(); +} + +OPCODE void op0x19(void) { + cpu.ticks = 4; + absy_t(); + ora(); +} + +OPCODE void op0x1A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x1B(void) { //undocumented + cpu.ticks = 7; + absy(); + slo(); +} + +OPCODE void op0x1C(void) { //nop + cpu.ticks = 4; + //(); +} + +OPCODE void op0x1D(void) { + cpu.ticks = 4; + absx_t(); + ora(); +} + +OPCODE void op0x1E(void) { + cpu.ticks = 7; + absx(); + asl(); +} + + +OPCODE void op0x1F(void) { //undocumented + cpu.ticks = 7; + absx(); + slo(); +} + +OPCODE void op0x20(void) { + cpu.ticks = 6; + abso(); + jsr(); +} + +OPCODE void op0x21(void) { + cpu.ticks = 6; + indx(); + op_and(); +} + +OPCODE void op0x23(void) { //undocumented + cpu.ticks = 8; + indx(); + rla(); +} + +OPCODE void op0x24(void) { + cpu.ticks = 3; + zp(); + op_bitZP(); +} + +OPCODE void op0x25(void) { + cpu.ticks = 3; + zp(); + op_and(); +} + +OPCODE void op0x26(void) { + cpu.ticks = 5; + zp(); + rolZP(); +} + +OPCODE void op0x27(void) { //undocumented + cpu.ticks = 5; + zp(); + rla(); +} + +OPCODE void op0x28(void) { + cpu.ticks = 4; + imp(); + plp(); +} + +OPCODE void op0x29(void) { + cpu.ticks = 2; + imm(); + op_and(); +} + +OPCODE void op0x2A(void) { + cpu.ticks = 2; + //acc(); + rola(); +} + +OPCODE void op0x2B(void) { //undocumented + cpu.ticks = 2; + imm(); + anc(); +} + +OPCODE void op0x2C(void) { + cpu.ticks = 4; + abso(); + op_bit(); +} + +OPCODE void op0x2D(void) { + cpu.ticks = 4; + abso(); + op_and(); +} + +OPCODE void op0x2E(void) { + cpu.ticks = 6; + abso(); + rol(); +} + +OPCODE void op0x2F(void) { //undocumented + cpu.ticks = 6; + abso(); + rla(); +} + +OPCODE void op0x30(void) { + cpu.ticks = 2; + rel(); + bmi(); +} + +OPCODE void op0x31(void) { + cpu.ticks = 5; + indy_t(); + op_and(); +} + +OPCODE void op0x33(void) { //undocumented + cpu.ticks = 8; + indy(); + rla(); +} + +OPCODE void op0x34(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x35(void) { + cpu.ticks = 4; + zpx(); + op_and(); +} + +OPCODE void op0x36(void) { + cpu.ticks = 6; + zpx(); + rol(); +} + +OPCODE void op0x37(void) { //undocumented + cpu.ticks = 6; + zpx(); + rla(); +} + +OPCODE void op0x38(void) { + cpu.ticks = 2; + imp(); + sec(); +} + +OPCODE void op0x39(void) { + cpu.ticks = 4; + absy_t(); + op_and(); +} + +OPCODE void op0x3A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x3B(void) { //undocumented + cpu.ticks = 7; + absy(); + rla(); +} + +OPCODE void op0x3C(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0x3D(void) { + cpu.ticks = 4; + absx_t(); + op_and(); +} + +OPCODE void op0x3E(void) { + cpu.ticks = 7; + absx(); + rol(); +} + +OPCODE void op0x3F(void) { //undocumented + cpu.ticks = 7; + absx(); + rla(); +} + +OPCODE void op0x40(void) { + cpu.ticks = 6; + imp(); + rti(); +} + +OPCODE void op0x41(void) { + cpu.ticks = 6; + indx(); + eor(); +} + +OPCODE void op0x43(void) { //undocumented + cpu.ticks = 8; + indx(); + sre(); +} + +OPCODE void op0x44(void) { //nop + cpu.ticks = 3; + zp(); +} + +OPCODE void op0x45(void) { + cpu.ticks = 3; + zp(); + eorZP(); +} + +OPCODE void op0x46(void) { + cpu.ticks = 5; + zp(); + lsrZP(); +} + +OPCODE void op0x47(void) { //undocumented + cpu.ticks = 5; + zp(); + sre(); +} + +OPCODE void op0x48(void) { + cpu.ticks = 3; + imp(); + pha(); +} + +OPCODE void op0x49(void) { + cpu.ticks = 2; + imm(); + eor(); +} + +OPCODE void op0x4A(void) { + cpu.ticks = 2; +// acc(); + lsra(); +} + +OPCODE void op0x4B(void) { //undocumented + cpu.ticks = 2; + imm(); + alr(); +} + +OPCODE void op0x4C(void) { + cpu.ticks = 3; + abso(); + jmp(); +} + +OPCODE void op0x4D(void) { + cpu.ticks = 4; + abso(); + eor(); +} + +OPCODE void op0x4E(void) { + cpu.ticks = 6; + abso(); + lsr(); +} + +OPCODE void op0x4F(void) { //undocumented + cpu.ticks = 6; + abso(); + sre(); +} + +OPCODE void op0x50(void) { + cpu.ticks = 2; + rel(); + bvc(); +} + +OPCODE void op0x51(void) { + cpu.ticks = 5; + indy_t(); + eor(); +} + +OPCODE void op0x53(void) { //undocumented + cpu.ticks = 8; + //zp(); BUG + indy(); + sre(); +} + +OPCODE void op0x54(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x55(void) { + cpu.ticks = 4; + zpx(); + eor(); +} + +OPCODE void op0x56(void) { + cpu.ticks = 6; + zpx(); + lsr(); +} + +OPCODE void op0x57(void) { //undocumented + cpu.ticks = 6; + zpx(); + sre(); +} + +OPCODE void op0x58(void) { + cpu.ticks = 2; + imp(); + cli_(); +} + +OPCODE void op0x59(void) { + cpu.ticks = 4; + absy_t(); + eor(); +} + +OPCODE void op0x5A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x5B(void) { //undocumented + cpu.ticks = 7; + absy(); + sre(); +} + +OPCODE void op0x5C(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0x5D(void) { + cpu.ticks = 4; + absx_t(); + eor(); +} + +OPCODE void op0x5E(void) { + cpu.ticks = 7; + absx(); + lsr(); +} + +OPCODE void op0x5F(void) { //undocumented + cpu.ticks = 7; + absx(); + sre(); +} + +OPCODE void op0x60(void) { + cpu.ticks = 6; + imp(); + rts(); +} + +OPCODE void op0x61(void) { + cpu.ticks = 6; + indx(); + adc(); +} + +OPCODE void op0x63(void) { //undocumented + cpu.ticks = 8; + indx(); + rra(); +} + +OPCODE void op0x64(void) { + cpu.ticks = 3; + zp(); +} + +OPCODE void op0x65(void) { + cpu.ticks = 3; + zp(); + adcZP(); +} + +OPCODE void op0x66(void) { + cpu.ticks = 5; + zp(); + rorZP(); +} + +OPCODE void op0x67(void) { //undocumented + cpu.ticks = 5; + zp(); + rra(); +} + +OPCODE void op0x68(void) { + cpu.ticks = 4; + imp(); + pla(); +} + +OPCODE void op0x69(void) { + cpu.ticks = 2; + imm(); + adc(); +} + +OPCODE void op0x6A(void) { + cpu.ticks = 2; +// acc(); + rora(); +} + +OPCODE void op0x6B(void) { //undocumented + cpu.ticks = 2; + imm(); + arr(); +} + +OPCODE void op0x6C(void) { + cpu.ticks = 5; + ind(); + jmp(); +} + +OPCODE void op0x6D(void) { + cpu.ticks = 4; + abso(); + adc(); +} + +OPCODE void op0x6E(void) { + cpu.ticks = 6; + abso(); + ror(); +} + +OPCODE void op0x6F(void) { //undocumented + cpu.ticks = 6; + abso(); + rra(); +} + +OPCODE void op0x70(void) { + cpu.ticks = 2; + rel(); + bvs(); +} + +OPCODE void op0x71(void) { + cpu.ticks = 5; + indy_t(); + adc(); +} + +OPCODE void op0x73(void) { //undocumented + cpu.ticks = 8; + indy(); + rra(); +} + +OPCODE void op0x74(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0x75(void) { + cpu.ticks = 4; + zpx(); + adc(); +} + +OPCODE void op0x76(void) { + cpu.ticks = 6; + zpx(); + ror(); +} + +OPCODE void op0x77(void) { //undocumented + cpu.ticks = 6; + zpx(); + rra(); +} + +OPCODE void op0x78(void) { + cpu.ticks = 2; + imp(); + sei_(); +} + +OPCODE void op0x79(void) { + cpu.ticks = 4; + absy_t(); + adc(); +} + +OPCODE void op0x7A(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0x7B(void) { //undocumented + cpu.ticks = 7; + absy(); + rra(); +} + +OPCODE void op0x7C(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0x7D(void) { + cpu.ticks = 4; + absx_t(); + adc(); +} + +OPCODE void op0x7E(void) { + cpu.ticks = 7; + absx(); + ror(); +} + +OPCODE void op0x7F(void) { //undocumented + cpu.ticks = 7; + absx(); + rra(); +} + +OPCODE void op0x80(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0x81(void) { + cpu.ticks = 6; + indx(); + sta(); +} + +OPCODE void op0x82(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0x83(void) { //undocumented + cpu.ticks = 6; + indx(); + sax(); +} + +OPCODE void op0x84(void) { + cpu.ticks = 3; + zp(); + sty(); +} + +OPCODE void op0x85(void) { + cpu.ticks = 3; + zp(); + sta(); +} + +OPCODE void op0x86(void) { + cpu.ticks = 3; + zp(); + stx(); +} + +OPCODE void op0x87(void) { //undocumented + cpu.ticks = 3; + zp(); + sax(); +} + +OPCODE void op0x88(void) { + cpu.ticks = 2; + imp(); + dey(); +} + +OPCODE void op0x89(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0x8A(void) { + cpu.ticks = 2; + imp(); + txa(); +} + +OPCODE void op0x8B(void) { //undocumented + cpu.ticks = 2; + imm(); + xaa(); +} + +OPCODE void op0x8C(void) { + cpu.ticks = 4; + abso(); + sty(); +} + +OPCODE void op0x8D(void) { + cpu.ticks = 4; + abso(); + sta(); +} + +OPCODE void op0x8E(void) { + cpu.ticks = 4; + abso(); + stx(); +} + +OPCODE void op0x8F(void) { //undocumented + cpu.ticks = 4; + abso(); + sax(); +} + +OPCODE void op0x90(void) { + cpu.ticks = 2; + rel(); + bcc(); +} + +OPCODE void op0x91(void) { + cpu.ticks = 6; + indy(); + sta(); +} + +OPCODE void op0x93(void) { //undocumented + cpu.ticks = 6; + indy(); + ahx(); +} + +OPCODE void op0x94(void) { + cpu.ticks = 4; + zpx(); + sty(); +} + +OPCODE void op0x95(void) { + cpu.ticks = 4; + zpx(); + sta(); +} + +OPCODE void op0x96(void) { + cpu.ticks = 4; + zpy(); + stx(); +} + +OPCODE void op0x97(void) { //undocumented + cpu.ticks = 4; + zpy(); + sax(); +} + +OPCODE void op0x98(void) { + cpu.ticks = 2; + imp(); + tya(); +} + +OPCODE void op0x99(void) { + cpu.ticks = 5; + absy(); + sta(); +} + +OPCODE void op0x9A(void) { + cpu.ticks = 2; + imp(); + txs(); +} + +OPCODE void op0x9B(void) { //undocumented + cpu.ticks = 5; + absy(); + //tas(); + UNSUPPORTED; +} + +OPCODE void op0x9C(void) { //undocumented + cpu.ticks = 5; + absy(); + //shy(); + UNSUPPORTED; +} + +OPCODE void op0x9D(void) { + cpu.ticks = 5; + absx(); + sta(); +} + +OPCODE void op0x9E(void) { //undocumented + cpu.ticks = 5; + absx(); + //shx(); +} + +OPCODE void op0x9F(void) { //undocumented + cpu.ticks = 5; + absx(); + ahx(); +} + +OPCODE void op0xA0(void) { + cpu.ticks = 2; + imm(); + ldy(); +} + +OPCODE void op0xA1(void) { + cpu.ticks = 6; + indx(); + lda(); +} + +OPCODE void op0xA2(void) { + cpu.ticks = 2; + imm(); + ldx(); +} + +OPCODE void op0xA3(void) { //undocumented + cpu.ticks = 6; + indx(); + lax(); +} + +OPCODE void op0xA4(void) { + cpu.ticks = 3; + zp(); + ldyZP(); +} + +OPCODE void op0xA5(void) { + cpu.ticks = 3; + zp(); + ldaZP(); +} + +OPCODE void op0xA6(void) { + cpu.ticks = 3; + zp(); + ldxZP(); +} + +OPCODE void op0xA7(void) { //undocumented + cpu.ticks = 3; + zp(); + lax(); +} + +OPCODE void op0xA8(void) { + cpu.ticks = 2; + imp(); + tay(); +} + +OPCODE void op0xA9(void) { + cpu.ticks = 2; + imm(); + lda(); +} + +OPCODE void op0xAA(void) { + cpu.ticks = 2; + imp(); + tax(); +} + +OPCODE void op0xAB(void) { //undocumented + cpu.ticks = 2; + imm(); + lxa(); +} + +OPCODE void op0xAC(void) { + cpu.ticks = 4; + abso(); + ldy(); +} + +OPCODE void op0xAD(void) { + cpu.ticks = 4; + abso(); + lda(); +} + +OPCODE void op0xAE(void) { + cpu.ticks = 4; + abso(); + ldx(); +} + +OPCODE void op0xAF(void) { //undocumented + cpu.ticks = 4; + abso(); + lax(); +} + +OPCODE void op0xB0(void) { + cpu.ticks = 2; + rel(); + bcs(); +} + +OPCODE void op0xB1(void) { + cpu.ticks = 5; + indy_t(); + lda(); +} + +OPCODE void op0xB3(void) { //undocumented + cpu.ticks = 5; + indy_t(); + lax(); +} + +OPCODE void op0xB4(void) { + cpu.ticks = 4; + zpx(); + ldy(); +} + +OPCODE void op0xB5(void) { + cpu.ticks = 4; + zpx(); + lda(); +} + +OPCODE void op0xB6(void) { + cpu.ticks = 4; + zpy(); + ldx(); +} + +OPCODE void op0xB7(void) { //undocumented + cpu.ticks = 4; + zpy(); + lax(); +} + +OPCODE void op0xB8(void) { + cpu.ticks = 2; + imp(); + clv(); +} + +OPCODE void op0xB9(void) { + cpu.ticks = 4; + absy_t(); + lda(); +} + +OPCODE void op0xBA(void) { + cpu.ticks = 2; + imp(); + tsx(); +} + +OPCODE void op0xBB(void) { //undocumented + cpu.ticks = 4; + absy_t(); + las(); +} + +OPCODE void op0xBC(void) { + cpu.ticks = 4; + absx_t(); + ldy(); +} + +OPCODE void op0xBD(void) { + cpu.ticks = 4; + absx_t(); + lda(); +} + +OPCODE void op0xBE(void) { + cpu.ticks = 4; + absy_t(); + ldx(); +} + +OPCODE void op0xBF(void) { //undocumented + cpu.ticks = 4; + absy_t(); + lax(); +} + +OPCODE void op0xC0(void) { + cpu.ticks = 2; + imm(); + cpy(); +} + +OPCODE void op0xC1(void) { + cpu.ticks = 6; + indx(); + cmp(); +} + +OPCODE void op0xC2(void) { //nop + cpu.ticks = 2; + imm(); +} + +OPCODE void op0xC3(void) { //undocumented + cpu.ticks = 8; + indx(); + dcp(); +} + +OPCODE void op0xC4(void) { + cpu.ticks = 3; + zp(); + cpyZP(); +} + +OPCODE void op0xC5(void) { + cpu.ticks = 3; + zp(); + cmpZP(); +} + +OPCODE void op0xC6(void) { + cpu.ticks = 5; + zp(); + decZP(); +} + +OPCODE void op0xC7(void) { //undocumented + cpu.ticks = 5; + zp(); + dcp(); +} + +OPCODE void op0xC8(void) { + cpu.ticks = 2; + imp(); + iny(); +} + +OPCODE void op0xC9(void) { + cpu.ticks = 2; + imm(); + cmp(); +} + +OPCODE void op0xCA(void) { + cpu.ticks = 2; + imp(); + dex(); +} + +OPCODE void op0xCB(void) { //undocumented + cpu.ticks = 2; + imm(); + axs(); +} + +OPCODE void op0xCC(void) { + cpu.ticks = 4; + abso(); + cpy(); +} + +OPCODE void op0xCD(void) { + cpu.ticks = 4; + abso(); + cmp(); +} + +OPCODE void op0xCE(void) { + cpu.ticks = 6; + abso(); + dec(); +} + +OPCODE void op0xCF(void) { //undocumented + cpu.ticks = 6; + abso(); + dcp(); +} + +OPCODE void op0xD0(void) { + cpu.ticks = 2; + rel(); + bne(); +} + +OPCODE void op0xD1(void) { + cpu.ticks = 5; + indy_t(); + cmp(); +} + +OPCODE void op0xD3(void) { //undocumented + cpu.ticks = 8; + indy(); + dcp(); +} + +OPCODE void op0xD4(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0xD5(void) { + cpu.ticks = 4; + zpx(); + cmp(); +} + +OPCODE void op0xD6(void) { + cpu.ticks = 6; + zpx(); + dec(); +} + +OPCODE void op0xD7(void) { //undocumented + cpu.ticks = 6; + zpx(); + dcp(); +} + +OPCODE void op0xD8(void) { + cpu.ticks = 2; + imp(); + cld(); +} + +OPCODE void op0xD9(void) { + cpu.ticks = 4; + absy_t(); + cmp(); +} + +OPCODE void op0xDA(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0xDB(void) { //undocumented + cpu.ticks = 7; + absy(); + dcp(); +} + +OPCODE void op0xDC(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0xDD(void) { + cpu.ticks = 4; + absx_t(); + cmp(); +} + +OPCODE void op0xDE(void) { + cpu.ticks = 7; + absx(); + dec(); +} + +OPCODE void op0xDF(void) { //undocumented + cpu.ticks = 7; + absx(); + dcp(); +} + +OPCODE void op0xE0(void) { + cpu.ticks = 2; + imm(); + cpx(); +} + +OPCODE void op0xE1(void) { + cpu.ticks = 5; + indx(); + sbc(); +} + +OPCODE void op0xE2(void) { //NOP + cpu.ticks = 2; + imm(); +} + +OPCODE void op0xE3(void) { //undocumented + cpu.ticks = 8; + indx(); + isb(); +} + +OPCODE void op0xE4(void) { + cpu.ticks = 3; + zp(); + cpxZP(); +} + +OPCODE void op0xE5(void) { + cpu.ticks = 3; + zp(); + sbcZP(); +} + +OPCODE void op0xE6(void) { + cpu.ticks = 5; + zp(); + incZP(); +} + +OPCODE void op0xE7(void) { //undocumented + cpu.ticks = 5; + zp(); + isb(); +} + +OPCODE void op0xE8(void) { + cpu.ticks = 2; + imp(); + inx(); +} + +OPCODE void op0xE9(void) { + cpu.ticks = 2; + imm(); + sbc(); +} + +OPCODE void op0xEA(void) { + cpu.ticks = 2; +} + +OPCODE void op0xEB(void) { + cpu.ticks = 2; + imm(); + sbc(); +} + +OPCODE void op0xEC(void) { + cpu.ticks = 4; + abso(); + cpx(); +} + +OPCODE void op0xED(void) { + cpu.ticks = 4; + abso(); + sbc(); +} + +OPCODE void op0xEE(void) { + cpu.ticks = 6; + abso(); + inc(); +} + +OPCODE void op0xEF(void) { //undocumented + cpu.ticks = 6; + abso(); + isb(); +} + +OPCODE void op0xF0(void) { + cpu.ticks = 2; + rel(); + beq(); +} + +OPCODE void op0xF1(void) { + cpu.ticks = 5; + indy_t(); + sbc(); +} + +OPCODE void op0xF3(void) { //undocumented + cpu.ticks = 8; + indy(); + isb(); +} + +OPCODE void op0xF4(void) { //nop + cpu.ticks = 4; + zpx(); +} + +OPCODE void op0xF5(void) { + cpu.ticks = 4; + zpx(); + sbc(); +} + +OPCODE void op0xF6(void) { + cpu.ticks = 6; + zpx(); + inc(); +} + +OPCODE void op0xF7(void) { //undocumented + cpu.ticks = 6; + zpx(); + isb(); +} + +OPCODE void op0xF8(void) { + cpu.ticks = 2; + imp(); + sed(); +} + +OPCODE void op0xF9(void) { + cpu.ticks = 4; + absy_t(); + sbc(); +} + +OPCODE void op0xFA(void) { //nop + cpu.ticks = 2; +} + +OPCODE void op0xFB(void) { //undocumented + cpu.ticks = 7; + absy(); + isb(); +} + +OPCODE void op0xFC(void) { //nop + cpu.ticks = 4; + absx_t(); +} + +OPCODE void op0xFD(void) { + cpu.ticks = 4; + absx_t(); + sbc(); +} + +OPCODE void op0xFE(void) { + cpu.ticks = 7; + absx(); + inc(); +} + +OPCODE void op0xFF(void) { //undocumented + cpu.ticks = 7; + absx(); + isb(); +} + +OPCODE void opPATCHD2(void) { +#if APPLY_PATCHES + patchLOAD(); +#else + opKIL(); +#endif +} + +OPCODE void opPATCHF2(void) { +#if APPLY_PATCHES + patchSAVE(); +#else + opKIL(); +#endif +} + +typedef void (*op_ptr_t)( void ); + +static const op_ptr_t opcodetable[256] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + /* 0 */ op0x0 , op0x1, opKIL , op0x3, op0x4 , op0x5, op0x6, op0x7, op0x8, op0x9, op0xA, op0xB , op0xC , op0xD , op0xE , op0xF, + /* 1 */ op0x10, op0x11, opKIL , op0x13, op0x14, op0x15, op0x16, op0x17, op0x18, op0x19, op0x1A, op0x1B, op0x1C, op0x1D, op0x1E, op0x1F, + /* 2 */ op0x20, op0x21, opKIL , op0x23, op0x24, op0x25, op0x26, op0x27, op0x28, op0x29, op0x2A, op0x2B, op0x2C, op0x2D, op0x2E, op0x2F, + /* 3 */ op0x30, op0x31, opKIL , op0x33, op0x34, op0x35, op0x36, op0x37, op0x38, op0x39, op0x3A, op0x3B, op0x3C, op0x3D, op0x3E, op0x3F, + /* 4 */ op0x40, op0x41, opKIL , op0x43, op0x44, op0x45, op0x46, op0x47, op0x48, op0x49, op0x4A, op0x4B, op0x4C, op0x4D, op0x4E, op0x4F, + /* 5 */ op0x50, op0x51, opKIL , op0x53, op0x54, op0x55, op0x56, op0x57, op0x58, op0x59, op0x5A, op0x5B, op0x5C, op0x5D, op0x5E, op0x5F, + /* 6 */ op0x60, op0x61, opKIL , op0x63, op0x64, op0x65, op0x66, op0x67, op0x68, op0x69, op0x6A, op0x6B, op0x6C, op0x6D, op0x6E, op0x6F, + /* 7 */ op0x70, op0x71, opKIL , op0x73, op0x74, op0x75, op0x76, op0x77, op0x78, op0x79, op0x7A, op0x7B, op0x7C, op0x7D, op0x7E, op0x7F, + /* 8 */ op0x80, op0x81, op0x82, op0x83, op0x84, op0x85, op0x86, op0x87, op0x88, op0x89, op0x8A, op0x8B, op0x8C, op0x8D, op0x8E, op0x8F, + /* 9 */ op0x90, op0x91, opKIL , op0x93, op0x94, op0x95, op0x96, op0x97, op0x98, op0x99, op0x9A, op0x9B, op0x9C, op0x9D, op0x9E, op0x9F, + /* A */ op0xA0, op0xA1, op0xA2, op0xA3, op0xA4, op0xA5, op0xA6, op0xA7, op0xA8, op0xA9, op0xAA, op0xAB, op0xAC, op0xAD, op0xAE, op0xAF, + /* B */ op0xB0, op0xB1, opKIL , op0xB3, op0xB4, op0xB5, op0xB6, op0xB7, op0xB8, op0xB9, op0xBA, op0xBB, op0xBC, op0xBD, op0xBE, op0xBF, + /* C */ op0xC0, op0xC1, op0xC2, op0xC3, op0xC4, op0xC5, op0xC6, op0xC7, op0xC8, op0xC9, op0xCA, op0xCB, op0xCC, op0xCD, op0xCE, op0xCF, + /* D */ op0xD0, op0xD1, opPATCHD2 , op0xD3, op0xD4, op0xD5, op0xD6, op0xD7, op0xD8, op0xD9, op0xDA, op0xDB, op0xDC, op0xDD, op0xDE, op0xDF, + /* E */ op0xE0, op0xE1, op0xE2, op0xE3, op0xE4, op0xE5, op0xE6, op0xE7, op0xE8, op0xE9, op0xEA, op0xEB, op0xEC, op0xED, op0xEE, op0xEF, + /* F */ op0xF0, op0xF1, opPATCHF2 , op0xF3, op0xF4, op0xF5, op0xF6, op0xF7, op0xF8, op0xF9, op0xFA, op0xFB, op0xFC, op0xFD, op0xFE, op0xFF +}; + +static const uint8_t cyclesTable[256] = +{ + 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, // $00 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $10 + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, // $20 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $30 + 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, // $40 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $50 + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, // $60 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $70 + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, // $80 + 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, // $90 + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, // $A0 + 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 5, 4, 4, 4, 4, // $B0 + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, // $C0 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7, // $D0 + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, // $E0 + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 5, 5, 7, 7 // $F0 +}; + +static const uint8_t writeCycleTable[256] = +{ + 3, 0, 0, 2, 0, 0, 2, 2, 1, 0, 0, 0, 0, 0, 2, 2, // $00 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $10 + 2, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $20 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $30 + 0, 0, 0, 2, 0, 0, 2, 2, 1, 0, 0, 0, 0, 0, 2, 2, // $40 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $50 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $60 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $70 + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, // $80 + 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, // $90 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // $A0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // $B0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $C0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2, // $D0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, // $E0 + 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 2, 2 // $F0 +}; + + +void cpu_nmi() { + cpu.nmiLine = 1; + printf("nmiLine=1\n"); +} +void cpu_clearNmi() { + cpu.nmi = 0; +} + +void cpu_nmi_do() { + if (cpu.nmi) return; + cpu.nmi = 1; + cpu.nmiLine = 0; + push16(cpu.pc); + push8(cpu.cpustatus & ~FLAG_BREAK); + cpu.cpustatus |= FLAG_INTERRUPT; + cpu.pc = read6502(0xFFFA) | (read6502(0xFFFB) << 8); + cpu.ticks = 7; +} + +static inline void cpu_irq() { + push16(cpu.pc); + push8(cpu.cpustatus & ~FLAG_BREAK); + cpu.cpustatus |= FLAG_INTERRUPT; + cpu.pc = read6502(0xFFFE) | (read6502(0xFFFF) << 8); + cpu.ticks = 7; +} + +inline void cia_clock(void) __attribute__((always_inline)); + +void cia_clock(void) { + cia1_clock(1); + cia2_clock(1); +} + +void cia_clockt(int ticks) { + cia1_clock(ticks); + cia2_clock(ticks); +} + +void cpu_clock(int cycles) { +static int c = 0; +static int writeCycles = 0; + cpu.lineCyclesAbs += cycles; + c+=cycles; + while (c > 0) { + + uint8_t opcode ; + cpu.ticks = 0; + + //NMI + + if (!cpu.nmi && ((cpu.cia2.R[0x0D] & 0x80) | cpu.nmiLine)) { + cpu_nmi_do(); + goto noOpcode; + } + + if (!(cpu.cpustatus & FLAG_INTERRUPT)) { + if (((cpu.vic.R[0x19] | cpu.cia1.R[0x0D]) & 0x80)) { + cpu_irq(); + goto noOpcode; + } + } + + cpu.cpustatus |= FLAG_CONSTANT; + opcode = read6502(cpu.pc++); + opcodetable[opcode](); + writeCycles = writeCycleTable[opcode]; +noOpcode: + + cia_clockt(cpu.ticks); + c-= cpu.ticks; + cpu.lineCycles += cpu.ticks; + + if (cpu.exactTiming) { + uint32_t t = cpu.lineCycles * MCU_C64_RATIO; + //while (ARM_DWT_CYCCNT - cpu.lineStartTime < t){;} + } + + }; + + return; +} + +//Enable "ExactTiming" Mode +void cpu_setExactTiming() { + if (!cpu.exactTiming) { + //enable exact timing + setAudioOff(); + vic_displaySimpleModeScreen(); + + } + cpu.exactTiming = 1; + //cpu.exactTimingStartTime = ARM_DWT_CYCCNT; + cpu.exactTiming = 0; +} + +//Disable "ExactTiming" Mode +void cpu_disableExactTiming() { + cpu.exactTiming = 0; + setAudioOn(); +} + +void cpu_reset() { + enableCycleCounter(); + cpu.exactTiming = 0; + cpu.nmi = 0; + cpu.cpustatus = FLAG_CONSTANT; + cpu.pc = read6502(0xFFFC) | (read6502(0xFFFD) << 8); + cpu.sp = 0xFD; +} \ No newline at end of file diff --git a/MCUME_teensy/teensy64/cpu.h b/MCUME_teensy/teensy64/cpu.h new file mode 100755 index 0000000..1c6c602 --- /dev/null +++ b/MCUME_teensy/teensy64/cpu.h @@ -0,0 +1,334 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_cpu_h_ +#define Teensy64_cpu_h_ + +//#include + + +#define INLINE static inline __attribute__((always_inline)) +#define INLINEOP static inline __attribute__((always_inline, flatten)) +#define OPCODE static + +#define RAMSIZE 65536 //Bytes + + +#include "Teensy64.h" +#include "roms.h" +#include "patches.h" +#include "util.h" +#include "pla.h" +#include "vic.h" +#include "keyboard.h" +#include "cia1.h" +#include "cia2.h" + + +//#include +//extern AudioPlaySID playSID; +//extern AudioOutputAnalog audioout; + +#define BASE_STACK 0x100 + +struct tio { + uint32_t gpioa, gpiob, gpioc, gpiod, gpioe; +}__attribute__((packed, aligned(4))); + +struct tcpu { + uint32_t exactTimingStartTime; + uint8_t exactTiming; + + //6502 CPU registers + uint8_t sp, a, x, y, cpustatus; + uint8_t penaltyop, penaltyaddr; + uint8_t nmi; + uint16_t pc; + + //helper variables + uint16_t reladdr; + uint16_t ea; + + uint16_t lineCyclesAbs; //for debug + unsigned ticks; + unsigned lineCycles; + unsigned long lineStartTime; + + r_rarr_ptr_t plamap_r; //Memory-Mapping read + w_rarr_ptr_t plamap_w; //Memory-Mapping write + uint8_t _exrom:1, _game:1; + uint8_t nmiLine; + uint8_t swapJoysticks; + + tvic vic; + tcia cia1; + tcia cia2; + + union { + uint8_t RAM[RAMSIZE]; + uint16_t RAM16[RAMSIZE/2]; + uint32_t RAM32[RAMSIZE/4]; + }; + + + + uint8_t cartrigeLO[1]; //TODO + uint8_t cartrigeHI[1]; //TODO + +}; + +extern struct tio io; +extern struct tcpu cpu; + +void cpu_reset(); +void cpu_nmi(); +void cpu_clearNmi(); +void cpu_clock(int cycles); +void cpu_setExactTiming(); +void cpu_disableExactTiming(); + +void cia_clockt(int ticks); + +#define CORE_PIN0_PORT io.gpiob +#define CORE_PIN1_PORT io.gpiob +#define CORE_PIN2_PORT io.gpiod +#define CORE_PIN3_PORT io.gpioa +#define CORE_PIN4_PORT io.gpioa +#define CORE_PIN5_PORT io.gpiod +#define CORE_PIN6_PORT io.gpiod +#define CORE_PIN7_PORT io.gpiod +#define CORE_PIN8_PORT io.gpiod +#define CORE_PIN9_PORT io.gpioc +#define CORE_PIN10_PORT io.gpioc +#define CORE_PIN11_PORT io.gpioc +#define CORE_PIN12_PORT io.gpioc +#define CORE_PIN13_PORT io.gpioc +#define CORE_PIN14_PORT io.gpiod +#define CORE_PIN15_PORT io.gpioc +#define CORE_PIN16_PORT io.gpiob +#define CORE_PIN17_PORT io.gpiob +#define CORE_PIN18_PORT io.gpiob +#define CORE_PIN19_PORT io.gpiob +#define CORE_PIN20_PORT io.gpiod +#define CORE_PIN21_PORT io.gpiod +#define CORE_PIN22_PORT io.gpioc +#define CORE_PIN23_PORT io.gpioc +#define CORE_PIN24_PORT io.gpioe +#define CORE_PIN25_PORT io.gpioa +#define CORE_PIN26_PORT io.gpioa +#define CORE_PIN27_PORT io.gpioa +#define CORE_PIN28_PORT io.gpioa +#define CORE_PIN29_PORT io.gpiob +#define CORE_PIN30_PORT io.gpiob +#define CORE_PIN31_PORT io.gpiob +#define CORE_PIN32_PORT io.gpiob +#define CORE_PIN33_PORT io.gpioe +#define CORE_PIN34_PORT io.gpioe +#define CORE_PIN35_PORT io.gpioc +#define CORE_PIN36_PORT io.gpioc +#define CORE_PIN37_PORT io.gpioc +#define CORE_PIN38_PORT io.gpioc +#define CORE_PIN39_PORT io.gpioa +#define CORE_PIN40_PORT io.gpioa +#define CORE_PIN41_PORT io.gpioa +#define CORE_PIN42_PORT io.gpioa +#define CORE_PIN43_PORT io.gpiob +#define CORE_PIN44_PORT io.gpiob +#define CORE_PIN45_PORT io.gpiob +#define CORE_PIN46_PORT io.gpiob +#define CORE_PIN47_PORT io.gpiod +#define CORE_PIN48_PORT io.gpiod +#define CORE_PIN49_PORT io.gpiob +#define CORE_PIN50_PORT io.gpiob +#define CORE_PIN51_PORT io.gpiod +#define CORE_PIN52_PORT io.gpiod +#define CORE_PIN53_PORT io.gpiod +#define CORE_PIN54_PORT io.gpiod +#define CORE_PIN55_PORT io.gpiod +#define CORE_PIN56_PORT io.gpioe +#define CORE_PIN57_PORT io.gpioe +#define CORE_PIN58_PORT io.gpioe +#define CORE_PIN59_PORT io.gpioe +#define CORE_PIN60_PORT io.gpioe +#define CORE_PIN61_PORT io.gpioe +#define CORE_PIN62_PORT io.gpioe +#define CORE_PIN63_PORT io.gpioe + +static inline uint8_t gpioRead(uint8_t pin) __attribute__((always_inline, unused)); +static inline uint8_t gpioRead(uint8_t pin) +{ + /* + if (__builtin_constant_p(pin)) { + if (pin == 0) { + return (CORE_PIN0_PORT & CORE_PIN0_BITMASK) ? 1 : 0; + } else if (pin == 1) { + return (CORE_PIN1_PORT & CORE_PIN1_BITMASK) ? 1 : 0; + } else if (pin == 2) { + return (CORE_PIN2_PORT & CORE_PIN2_BITMASK) ? 1 : 0; + } else if (pin == 3) { + return (CORE_PIN3_PORT & CORE_PIN3_BITMASK) ? 1 : 0; + } else if (pin == 4) { + return (CORE_PIN4_PORT & CORE_PIN4_BITMASK) ? 1 : 0; + } else if (pin == 5) { + return (CORE_PIN5_PORT & CORE_PIN5_BITMASK) ? 1 : 0; + } else if (pin == 6) { + return (CORE_PIN6_PORT & CORE_PIN6_BITMASK) ? 1 : 0; + } else if (pin == 7) { + return (CORE_PIN7_PORT & CORE_PIN7_BITMASK) ? 1 : 0; + } else if (pin == 8) { + return (CORE_PIN8_PORT & CORE_PIN8_BITMASK) ? 1 : 0; + } else if (pin == 9) { + return (CORE_PIN9_PORT & CORE_PIN9_BITMASK) ? 1 : 0; + } else if (pin == 10) { + return (CORE_PIN10_PORT & CORE_PIN10_BITMASK) ? 1 : 0; + } else if (pin == 11) { + return (CORE_PIN11_PORT & CORE_PIN11_BITMASK) ? 1 : 0; + } else if (pin == 12) { + return (CORE_PIN12_PORT & CORE_PIN12_BITMASK) ? 1 : 0; + } else if (pin == 13) { + return (CORE_PIN13_PORT & CORE_PIN13_BITMASK) ? 1 : 0; + } else if (pin == 14) { + return (CORE_PIN14_PORT & CORE_PIN14_BITMASK) ? 1 : 0; + } else if (pin == 15) { + return (CORE_PIN15_PORT & CORE_PIN15_BITMASK) ? 1 : 0; + } else if (pin == 16) { + return (CORE_PIN16_PORT & CORE_PIN16_BITMASK) ? 1 : 0; + } else if (pin == 17) { + return (CORE_PIN17_PORT & CORE_PIN17_BITMASK) ? 1 : 0; + } else if (pin == 18) { + return (CORE_PIN18_PORT & CORE_PIN18_BITMASK) ? 1 : 0; + } else if (pin == 19) { + return (CORE_PIN19_PORT & CORE_PIN19_BITMASK) ? 1 : 0; + } else if (pin == 20) { + return (CORE_PIN20_PORT & CORE_PIN20_BITMASK) ? 1 : 0; + } else if (pin == 21) { + return (CORE_PIN21_PORT & CORE_PIN21_BITMASK) ? 1 : 0; + } else if (pin == 22) { + return (CORE_PIN22_PORT & CORE_PIN22_BITMASK) ? 1 : 0; + } else if (pin == 23) { + return (CORE_PIN23_PORT & CORE_PIN23_BITMASK) ? 1 : 0; + } else if (pin == 24) { + return (CORE_PIN24_PORT & CORE_PIN24_BITMASK) ? 1 : 0; + } else if (pin == 25) { + return (CORE_PIN25_PORT & CORE_PIN25_BITMASK) ? 1 : 0; + } else if (pin == 26) { + return (CORE_PIN26_PORT & CORE_PIN26_BITMASK) ? 1 : 0; + } else if (pin == 27) { + return (CORE_PIN27_PORT & CORE_PIN27_BITMASK) ? 1 : 0; + } else if (pin == 28) { + return (CORE_PIN28_PORT & CORE_PIN28_BITMASK) ? 1 : 0; + } else if (pin == 29) { + return (CORE_PIN29_PORT & CORE_PIN29_BITMASK) ? 1 : 0; + } else if (pin == 30) { + return (CORE_PIN30_PORT & CORE_PIN30_BITMASK) ? 1 : 0; + } else if (pin == 31) { + return (CORE_PIN31_PORT & CORE_PIN31_BITMASK) ? 1 : 0; + } else if (pin == 32) { + return (CORE_PIN32_PORT & CORE_PIN32_BITMASK) ? 1 : 0; + } else if (pin == 33) { + return (CORE_PIN33_PORT & CORE_PIN33_BITMASK) ? 1 : 0; + } else if (pin == 34) { + return (CORE_PIN34_PORT & CORE_PIN34_BITMASK) ? 1 : 0; + } else if (pin == 35) { + return (CORE_PIN35_PORT & CORE_PIN35_BITMASK) ? 1 : 0; + } else if (pin == 36) { + return (CORE_PIN36_PORT & CORE_PIN36_BITMASK) ? 1 : 0; + } else if (pin == 37) { + return (CORE_PIN37_PORT & CORE_PIN37_BITMASK) ? 1 : 0; + } else if (pin == 38) { + return (CORE_PIN38_PORT & CORE_PIN38_BITMASK) ? 1 : 0; + } else if (pin == 39) { + return (CORE_PIN39_PORT & CORE_PIN39_BITMASK) ? 1 : 0; + } else if (pin == 40) { + return (CORE_PIN40_PORT & CORE_PIN40_BITMASK) ? 1 : 0; + } else if (pin == 41) { + return (CORE_PIN41_PORT & CORE_PIN41_BITMASK) ? 1 : 0; + } else if (pin == 42) { + return (CORE_PIN42_PORT & CORE_PIN42_BITMASK) ? 1 : 0; + } else if (pin == 43) { + return (CORE_PIN43_PORT & CORE_PIN43_BITMASK) ? 1 : 0; + } else if (pin == 44) { + return (CORE_PIN44_PORT & CORE_PIN44_BITMASK) ? 1 : 0; + } else if (pin == 45) { + return (CORE_PIN45_PORT & CORE_PIN45_BITMASK) ? 1 : 0; + } else if (pin == 46) { + return (CORE_PIN46_PORT & CORE_PIN46_BITMASK) ? 1 : 0; + } else if (pin == 47) { + return (CORE_PIN47_PORT & CORE_PIN47_BITMASK) ? 1 : 0; + } else if (pin == 48) { + return (CORE_PIN48_PORT & CORE_PIN48_BITMASK) ? 1 : 0; + } else if (pin == 49) { + return (CORE_PIN49_PORT & CORE_PIN49_BITMASK) ? 1 : 0; + } else if (pin == 50) { + return (CORE_PIN50_PORT & CORE_PIN50_BITMASK) ? 1 : 0; + } else if (pin == 51) { + return (CORE_PIN51_PORT & CORE_PIN51_BITMASK) ? 1 : 0; + } else if (pin == 52) { + return (CORE_PIN52_PORT & CORE_PIN52_BITMASK) ? 1 : 0; + } else if (pin == 53) { + return (CORE_PIN53_PORT & CORE_PIN53_BITMASK) ? 1 : 0; + } else if (pin == 54) { + return (CORE_PIN54_PORT & CORE_PIN54_BITMASK) ? 1 : 0; + } else if (pin == 55) { + return (CORE_PIN55_PORT & CORE_PIN55_BITMASK) ? 1 : 0; + } else if (pin == 56) { + return (CORE_PIN56_PORT & CORE_PIN56_BITMASK) ? 1 : 0; + } else if (pin == 57) { + return (CORE_PIN57_PORT & CORE_PIN57_BITMASK) ? 1 : 0; + } else if (pin == 58) { + return (CORE_PIN58_PORT & CORE_PIN58_BITMASK) ? 1 : 0; + } else if (pin == 59) { + return (CORE_PIN59_PORT & CORE_PIN59_BITMASK) ? 1 : 0; + } else if (pin == 60) { + return (CORE_PIN60_PORT & CORE_PIN60_BITMASK) ? 1 : 0; + } else if (pin == 61) { + return (CORE_PIN61_PORT & CORE_PIN61_BITMASK) ? 1 : 0; + } else if (pin == 62) { + return (CORE_PIN62_PORT & CORE_PIN62_BITMASK) ? 1 : 0; + } else if (pin == 63) { + return (CORE_PIN63_PORT & CORE_PIN63_BITMASK) ? 1 : 0; + } else { + return 0; + } + } else { + Serial.println("Warning: Pin# not constant"); + return digitalRead(pin); + } + */ + return 0; + +} + +#endif \ No newline at end of file diff --git a/MCUME_teensy/teensy64/emuapi.cpp b/MCUME_teensy/teensy64/emuapi.cpp new file mode 100644 index 0000000..57a254b --- /dev/null +++ b/MCUME_teensy/teensy64/emuapi.cpp @@ -0,0 +1,1054 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + +void emu_resetSD(void) +{ +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } +} + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensy64/emuapi.h b/MCUME_teensy/teensy64/emuapi.h new file mode 100644 index 0000000..63e5423 --- /dev/null +++ b/MCUME_teensy/teensy64/emuapi.h @@ -0,0 +1,126 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define CUSTOM_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + + +// Title: < > +#define TITLE " NES Emulator " +#define ROMSDIR "c64" + +#define emu_Init(ROM) {c64_Start(ROM); c64_Init(); } +#define emu_Step(x) { c64_Step(); } +#define emu_Input(x) { c64_Input(x); } + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 12 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 104 +#define KEYBOARD_Y 78 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 21 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,40,40, + TAREA_END}; + +const unsigned short keys[] = { + 2,3}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008}; +#endif + +#endif + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_resetSD(void); + +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensy64/font8x8.h b/MCUME_teensy/teensy64/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensy64/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensy64/iopins.h b/MCUME_teensy/teensy64/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensy64/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensy64/keyboard.h b/MCUME_teensy/teensy64/keyboard.h new file mode 100755 index 0000000..2c13ef3 --- /dev/null +++ b/MCUME_teensy/teensy64/keyboard.h @@ -0,0 +1,49 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_keyboard_h_ +#define Teensy64_keyboard_h_ + +void initKeyboard(); +void initJoysticks(); + +void sendKey(char key); +void sendString(const char * p); +void do_sendString();//call in yield() + +uint8_t cia1PORTA(void); +uint8_t cia1PORTB(void); + +#endif \ No newline at end of file diff --git a/MCUME_teensy/teensy64/keyboard_osd.h b/MCUME_teensy/teensy64/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensy64/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensy64/logo.h b/MCUME_teensy/teensy64/logo.h new file mode 100644 index 0000000..168c944 --- /dev/null +++ b/MCUME_teensy/teensy64/logo.h @@ -0,0 +1,125 @@ +const uint16_t logo[] PROGMEM = { +0x0140,0x007c,0x632c,0xbdd7,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xa514,0x2104, +0xbdf7,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xdefb,0x9cd3, +0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xd69a,0xbdf7, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0xce59,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce59,0xce79,0xd69a,0xad75,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0xb596,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xce79,0xce79,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd6ba,0xa514,0x0000,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0841,0x2124,0x9492,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x8c71,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0000,0x18c3,0xbdd7,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd6ba,0x7bef,0x0000,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8430,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x8c51,0x9cf3,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cf3,0x8430,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b4d,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1800,0x1800,0x0000,0x0000,0x0000,0x0000,0x1800,0x1800,0x0800,0x1000,0x1800,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x2965,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x2945,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5000,0x8041,0x7061,0x0020,0x0000,0x0000,0x2800,0x7020,0x8061,0x4041,0x6820,0x8841,0x8061,0x1020,0x0000,0x0800,0x0000,0x0000,0x1000,0x1000,0x0800,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1000,0x0000,0x8020,0xa061,0x7082,0x0000,0x0800,0x0800,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x8410,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x7bef,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x9000,0xd000,0xd061,0x90c3,0x0000,0x0000,0x4800,0xc800,0xd861,0x7882,0x9800,0xd800,0xc082,0x2061,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x7020,0x8861,0x3861,0x0000,0x0800,0x1000,0x0000,0x0000,0x0000,0x0800,0x1000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0x0000,0x0000,0x0000,0xb000,0xe000,0xa0a2,0x0000,0x2000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x7bcf,0xa514,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xc000,0xc8a2,0x68a2,0x0000,0x4800,0xc000,0xd041,0x7882,0x0000,0x3000,0x2820,0x0800,0x0800,0x0820,0x0020,0x2800,0x5820,0x5841,0x2041,0x0000,0x4800,0x8020,0xc800,0xd820,0xa0a2,0x6841,0x1820,0x0000,0x0000,0x5820,0x5021,0x0020,0x0000,0x1000,0x0800,0x0020,0x0000,0x3800,0x6020,0x5041,0x0020,0x0000,0x0800,0x0000,0x3000,0x6020,0x5020,0xa800,0xd000,0x98a2,0x0000,0x0000,0x3800,0x6020,0x5820,0x0020,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x8c71,0x9cf3,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd800,0xa882,0x7800,0xc8c3,0x1061,0x4000,0xc000,0xd041,0x7882,0x8800,0xc041,0xa882,0x3041,0xa820,0xc061,0x9881,0x8000,0xb820,0xd021,0xc0a2,0x4882,0x5800,0x9800,0xc000,0xc800,0xa841,0x8041,0x0020,0x7800,0xb820,0x8020,0x9021,0xb0a2,0x5082,0x4000,0xb820,0xb861,0x9061,0x8800,0xc020,0xd041,0xb0c3,0x2861,0x0000,0x9000,0xc020,0x9841,0x7020,0xb800,0xd000,0x98a2,0x0000,0xa000,0xc020,0x8821,0x9840,0xb882,0x70a2,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xb082,0x0020,0xa800,0xb0e3,0x0841,0xc000,0xd041,0x7082,0xa800,0xe000,0xc082,0x3061,0xc000,0xd800,0xa861,0x0000,0x3800,0xb800,0xd820,0x98c3,0x0000,0x0000,0xb800,0xd820,0x7082,0x0000,0x5800,0xd000,0xc861,0x4861,0x7000,0xd800,0xc0c3,0x5861,0xc800,0xd820,0x8861,0x0000,0x5800,0xc800,0xd861,0x70a2,0x6800,0xd800,0xc861,0x0841,0x0000,0xb000,0xd800,0x90a2,0x7800,0xe000,0xa861,0x0000,0x3000,0xc800,0xc8a2,0x4082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x528a,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x630c,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xb082,0x0020,0x3000,0xc061,0xa082,0xc000,0xd041,0x7882,0x9800,0xd000,0xb882,0x3061,0xb800,0xd020,0x88a2,0x0000,0x0000,0xb000,0xd000,0xa082,0x0000,0x3000,0xb800,0xd820,0x80a2,0x0000,0x8800,0xd000,0xb841,0x9841,0x9000,0x8800,0x9020,0x6041,0xc000,0xd061,0x6882,0x0000,0x4000,0xc000,0xd041,0x7082,0x9800,0xd800,0xb882,0x1041,0x0000,0xa800,0xd800,0x90a2,0x9800,0xd800,0x9882,0x0020,0x3800,0xb800,0xd040,0x78a2,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0xad55,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0x9cf3,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xb082,0x0020,0x0000,0x6000,0xd000,0xc800,0xd041,0x7882,0xa000,0xd800,0xc082,0x3061,0xb800,0xd020,0x90a2,0x0000,0x1800,0xb000,0xd800,0xa0a2,0x0000,0x2800,0xb800,0xd820,0x78a2,0x0000,0x7000,0xd800,0xb8a2,0x0020,0x0000,0x9820,0x9882,0x5020,0xc800,0xd061,0x7082,0x0000,0x4000,0xc000,0xd041,0x6882,0x8800,0xd800,0xc082,0x0061,0x0000,0xa800,0xd800,0x90a2,0x8000,0xe000,0xa0a2,0x0020,0x2800,0xc000,0xd041,0x5861,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x8c51,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd800,0xb882,0x0040,0x1800,0x0000,0x8800,0xd000,0xd041,0x7882,0xa000,0xd800,0xc082,0x3861,0xb800,0xd820,0x90a2,0x0000,0x1000,0xb000,0xd800,0xa0a2,0x0000,0x3000,0xb800,0xd820,0x80a2,0x0000,0x0000,0x9800,0xc882,0x7082,0x8800,0xd000,0x9041,0x4800,0xc800,0xd061,0x7882,0x0000,0x4800,0xc800,0xd841,0x7882,0x0000,0xb000,0xd061,0x88a2,0x6000,0xc000,0xd800,0x98a2,0x0000,0xa800,0xc082,0x6882,0x9000,0xc800,0x8820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce79,0xce59,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce79,0xce59,0xce59,0xce59,0xd6ba,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5000,0x8000,0x6820,0x0000,0x0800,0x0000,0x1000,0x7000,0x8000,0x4820,0x5800,0x8000,0x7020,0x2000,0x6800,0x8000,0x5820,0x0000,0x0800,0x6800,0x8000,0x6020,0x0000,0x1800,0x6800,0x8000,0x4820,0x0000,0x0000,0x0000,0x5000,0x7820,0x7800,0x4800,0x0000,0x3000,0x7000,0x7800,0x4020,0x0000,0x2800,0x7000,0x8000,0x4820,0x0000,0x1000,0x6800,0x8020,0x7000,0x7000,0x7800,0x6020,0x0000,0x0000,0x5800,0x8020,0x7800,0x3800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce79,0xce59,0xbdd7,0xa514,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x9cf3,0xbdd7,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xd69a,0xce59,0x9492,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x2965,0x73ae,0xb596,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1800,0x1000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0800,0x1800,0x1000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x1000,0x1800,0x1000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0800,0x1000,0x1000,0x0800,0x0000,0x0000,0x1000,0x1000,0x0800,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0800,0x0000,0x0000,0x0800,0x1000,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce59,0x9492,0x0000,0x0000,0x2965,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4a49,0x8c51,0x8c71,0x2104,0x7bef,0xc618,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xce59,0x9cd3,0x0000,0x0000,0x10a2,0x2945,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x3186,0x31a6,0x8430,0xc638,0x8410,0x39c7,0xb5b6,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xbdd7,0x5aeb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4a49,0xad75,0x9492,0x18e3,0xad55,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cf3,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8410,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad75,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x5aeb,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x528a,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4a69,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x4a49,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x1082,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x2124,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0841,0x39e7,0x39c7,0x2104,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x18c3,0x4a69,0x4228,0x3186,0x18e3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x18e3,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x1082,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x10a2,0x52aa,0x528a,0x4208,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x39e7,0x9492,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x8c51,0x31a6,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x4a69,0x5aeb,0x4a49,0x31a6,0x2104,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x8410,0xa514,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0xa514,0x7bef,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x2124,0x5aeb,0x52aa,0x39e7,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x4228,0x3186,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cf3,0x8c31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1082,0x738e,0x7bef,0x7bcf,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x73ae,0xad75,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x2124,0x2104,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd69a,0xb596,0x738e,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd2,0x9cd3,0x94f3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94d3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cf3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94f4,0x94f3,0x9cf3,0x9cf3,0x94f3,0x9cd3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cd3,0x94f3,0x9cf3,0x9cf3,0x9cf3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x94d3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xa534,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xce79,0xce59,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xce59,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0x94b2,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x94d3,0xa430,0xb2eb,0xb2eb,0xb2eb,0xb2aa,0xa430,0xa451,0xb2eb,0xb2eb,0xb2cb,0xb28a,0xa410,0xab8e,0xa471,0x94f3,0x9cd3,0x9cd3,0x94d3,0xabcf,0xb2cb,0xb2eb,0xb2aa,0xb2cb,0x9c92,0xabcf,0xb28a,0xb2cb,0xb2aa,0xb2eb,0x9c31,0xaaeb,0xb2aa,0xbaeb,0xb2aa,0xb2cb,0xa492,0x94d3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xabcf,0xb2cb,0xb2eb,0xb2cb,0xb2eb,0xa430,0xaaeb,0xb2aa,0xbaeb,0xb2aa,0xb2cb,0xa471,0xab8e,0xb2cb,0xb2eb,0xb2eb,0xac30,0x9c51,0xbaab,0xb2eb,0xb2eb,0xb2eb,0xac30,0xa3ef,0xb269,0xb2eb,0xbaeb,0xb28a,0xab8e,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x632c,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xd6ba,0x528a,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x94d3,0xb104,0xba08,0xab6d,0xab2c,0xabaf,0x9492,0xb986,0xba49,0xab6d,0xa3cf,0xa3ef,0x9c51,0xb924,0xac10,0x94f3,0x9cb2,0x9cf3,0x9471,0xc000,0xb2eb,0xa36d,0xa3ef,0xa430,0x9c30,0xc061,0xabae,0x9c10,0xa3ef,0xa3f0,0x9c71,0x9c30,0x9bae,0xc000,0xab8e,0x9c10,0x9c92,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cf3,0x9471,0xc000,0xb2eb,0xab4d,0xab2c,0xa3ef,0x9c92,0x9c30,0x9bae,0xc000,0xb36d,0x9c51,0xa36d,0xc061,0xab4c,0xab6d,0xaa8a,0xc208,0xab0c,0xc081,0xab4d,0xab6d,0xaaaa,0xc186,0xa451,0x9c30,0xaa49,0xc1c7,0x9c10,0xa431,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xc638,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8430,0x18e3,0x9cd3,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xce59,0xce79,0xce79,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9c10,0xab0c,0xab2c,0xab2c,0xbaaa,0xabf0,0xb186,0xba8a,0xab2c,0xa4b2,0x9555,0x8cf3,0xb965,0xac71,0x9534,0x94f3,0x9534,0x9451,0xc000,0xb2ec,0xab6d,0x9cf3,0x9575,0x9430,0xc124,0x9d14,0x9534,0x9534,0x9534,0x94f3,0x9d14,0x94b2,0xb945,0xa492,0x9534,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94d3,0x9bcf,0xab0c,0xab2c,0xab0c,0xbaaa,0xa492,0x9534,0x94b2,0xb925,0xac71,0x8d55,0xa38d,0xc0a2,0xb2eb,0xb2eb,0xb269,0xc228,0xab0c,0xc124,0xb2eb,0xaacb,0xb945,0xbacb,0x9cf3,0x9554,0xa34c,0xbacb,0x9534,0x94f3,0x9cd3,0x9cd2,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce59,0xce59,0xce59,0xbdf7,0x9cf3,0x8410,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8410,0x8c51,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0xa514,0x94b2,0x0000,0x5aeb,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x738e,0x73ae,0x94b2,0xbdd7,0xce59,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x94d3,0xa3ae,0xb2ab,0xb2ca,0xaacb,0xb800,0xabae,0xa2ca,0xb9e7,0xaacb,0xb2cb,0xb2cb,0xa410,0xb1c7,0xba69,0xb30c,0xb2eb,0xb2ec,0xa3ef,0xb1e7,0xb269,0xaacb,0xb2cb,0xb30c,0x9c50,0xb1c7,0xba8a,0xb2eb,0xb2cb,0xb2eb,0xa492,0x9cf3,0x9471,0xb882,0xa451,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb2,0xab4d,0xb2aa,0xb2cb,0xaa8a,0xc000,0xa451,0x94f3,0x9471,0xb861,0xac51,0x9514,0xa36d,0xb9e8,0x94d3,0x94f3,0x9451,0xb9e7,0xaaeb,0xba28,0x94d3,0x94d3,0x9bcf,0xb9a6,0x9cb2,0x9514,0xa2ec,0xba6a,0x94f3,0x9cb2,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xd69a,0xce79,0x9cd3,0x4228,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xa514,0x528a,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x39e7,0x4a49,0x2945,0x73ae,0xb5b6,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9c10,0xa3ef,0xa3ef,0xa3ef,0xa430,0x94f3,0x94b2,0x9c10,0xa3ef,0xa3ef,0xa3cf,0xa471,0x9c51,0xa3ef,0xa3ef,0xa3ef,0xa3cf,0x9c71,0x9492,0xa3ef,0xa3ef,0xa3ef,0xa3ef,0x9cb2,0x9492,0xa3ef,0xa3ef,0xa3ef,0xa3ef,0x9cb2,0x9cd3,0x9cb3,0x9c50,0x9cb2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb2,0xa3ef,0xa3ef,0xa3ef,0xa3ef,0x9c71,0x9cd3,0x9cd3,0x94b3,0x9c30,0x9cb2,0x9cd3,0x9c92,0x9c51,0x9cd3,0x9cd3,0x9cb2,0x9c51,0x9c71,0x9c51,0x9cd3,0x9cd3,0x9cd3,0x9c30,0x9cb3,0x94d3,0x9c71,0x9c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce59,0xce79,0xce59,0x94b2,0x0000,0x0000,0x2124,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x7bcf,0x6b6d,0x4228,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x5aeb,0xa514,0x9492,0x0861,0x8c71,0xce59,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cf3,0x94f3,0x94f3,0x94f3,0x9cf3,0x9cd3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f4,0x9cd3,0x9cd2,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94f3,0x94f4,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x94f3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xa514,0x2104,0x0000,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x31a6,0x9cd3,0xc638,0x5acb,0x630c,0xc618,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb3,0x9cd3,0x9cb3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xc618,0x7bcf,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xad75,0x738e,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8430,0xa514,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0xa514,0x8410,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x18e3,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x52aa,0x9cf3,0x6b4d,0x4a49,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0x94b2,0xa514,0x9cf3,0x9cf3,0x9cf3,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa4f4,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9d14,0xa513,0x9cf4,0x9cf3,0x9cf3,0x9d14,0x9d13,0x9cf3,0x9cf3,0xa514,0x9cf3,0xa513,0x9cf3,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x9cf3,0xa514,0x9492,0x4208,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x2965,0x2104,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x2945,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x39e7,0x31a6,0x2945,0x2104,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4a49,0x39e7,0x31a6,0x2945,0x2104,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x3186,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x3186,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x528a,0x4228,0x39e7,0x31a6,0x2945,0x18e3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x2965,0x2124,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4a49,0xb596,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xbdd7,0x52aa,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x9cd3,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xc638,0x8c51,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x39c7,0x4208,0x2945,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x52aa,0x5acb,0x528a,0x4a49,0x39e7,0x3186,0x2124,0x18c3,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x4228,0x31a6,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0xad55,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0xc618,0x0861,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0x6b6d,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x4a49,0x4a69,0x39c7,0x2124,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x630c,0x5aeb,0x52aa,0x528a,0x4228,0x39e7,0x3186,0x2104,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x528a,0x4208,0x3186,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x39e7,0x7bcf,0x8410,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x8410,0x7bef,0x4208,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x94b2,0xd69a,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0020,0x0000,0x4a69,0x5acb,0x4228,0x31a6,0x18e3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x630c,0x632c,0x5aeb,0x52aa,0x4a69,0x4228,0x39c7,0x2965,0x18e3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x5aeb,0x4a69,0x39e7,0x2945,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4228,0xb5b6,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xdedb,0xce79,0x630c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xd679,0xd679,0xce59,0xc638,0xbdf8,0xbdf7,0xbe17,0xc638,0xce79,0xd69a,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xd679,0xce79,0xc638,0xbe18,0xbdf7,0xbdf7,0xc638,0xce59,0xd69a,0xd679,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0020,0x0000,0x39c7,0x630c,0x4a69,0x39e7,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0x6b6d,0x630c,0x5aeb,0x52aa,0x4a49,0x39e7,0x3186,0x2124,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x5acb,0x5acb,0x4228,0x3186,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8c51,0xc638,0xc638,0xb5b6,0xad55,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad55,0xb596,0xdedb,0xb5b6,0x0000,0x1082,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xb5f7,0x9534,0x8430,0x7b4d,0x7acb,0x72aa,0x6aeb,0x634d,0x7410,0x9d14,0xc618,0xd69a,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xc638,0xa575,0x8c72,0x7bae,0x7b0c,0x72aa,0x6acb,0x632c,0x6bcf,0x8cb2,0xbdd7,0xce79,0xce7a,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x4a69,0x5acb,0x4228,0x2965,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x738e,0x6b4d,0x630c,0x5acb,0x528a,0x4228,0x39c7,0x2945,0x18e3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x5aeb,0x4a69,0x39c7,0x2124,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xd69a,0xb5b6,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8410,0x8c51,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xc618,0x94d3,0x8aeb,0xb8e3,0xe000,0xf020,0xf124,0xf1c7,0xf249,0xe2aa,0xbacb,0x8269,0x42cb,0x94d3,0xce38,0xd67a,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xa575,0x83ae,0xa9a6,0xd800,0xf000,0xf0c3,0xf1a6,0xf228,0xea8a,0xcacb,0x9a8a,0x4a69,0x7410,0xbdd7,0xd679,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x4228,0x31a6,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x738e,0x6b6d,0x632c,0x5aeb,0x52aa,0x4a49,0x39e7,0x3186,0x2104,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x39e7,0x2965,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xd69a,0xb5b6,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0x94b2,0x7bcf,0x8410,0xc618,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xb596,0x7b4d,0xa800,0xe800,0xf800,0xf082,0xe8a2,0xd8a2,0xd0c3,0xd904,0xd9c7,0xf2cb,0xfbcf,0xdc10,0x728a,0x532c,0xbdb6,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xc618,0x8c51,0x9145,0xd000,0xf800,0xf061,0xe8a2,0xe0a2,0xd8c3,0xd104,0xd986,0xea69,0xfb8e,0xec30,0xa34d,0x3a28,0x9cf3,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x18e3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x52aa,0x73ae,0x632c,0x630c,0x5acb,0x4a69,0x4208,0x31a6,0x2945,0x18c3,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdedb,0xd69a,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xad55,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xa534,0x71e7,0xb800,0xf020,0xf861,0xe820,0xd800,0xd000,0xc800,0xc000,0xb800,0xb000,0xa800,0xb820,0xeb0c,0xfcd3,0xb3ef,0x3208,0xb575,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce59,0xce79,0xce79,0xbdd7,0x7b6d,0x9000,0xe000,0xf882,0xe841,0xd820,0xd800,0xd000,0xc000,0xb800,0xb000,0xa800,0xb000,0xda48,0xfc71,0xdcb2,0x49c7,0x8c71,0xce79,0xce79,0xce59,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x632c,0x6b6d,0x630c,0x5acb,0x528a,0x4228,0x39c7,0x2965,0x2104,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cd3,0x632c,0x528a,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd699,0xce59,0xce79,0xce59,0xce79,0xce59,0xa534,0x5145,0xb800,0xf8a2,0xf820,0xf000,0xe800,0xe800,0xe000,0xd000,0xc800,0xc000,0xb820,0xb041,0xa800,0x9800,0xc145,0xfcf3,0xc492,0x29e7,0xb5b6,0xce79,0xce59,0xce59,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce79,0xce79,0xce79,0xbdd7,0x630b,0x9000,0xe882,0xf861,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc000,0xb820,0xb040,0xa820,0x9800,0xb000,0xfc0f,0xed55,0x5208,0x9492,0xce79,0xce59,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x632c,0x6b4d,0x5aeb,0x528a,0x4a49,0x39e7,0x3186,0x2124,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4a69,0x8410,0x52aa,0x630c,0xbdf7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xce79,0xce79,0xce79,0xad75,0x41c7,0xa800,0xf8e3,0xf841,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xc000,0xb800,0xb000,0xa882,0x9800,0xb000,0xfd34,0xb451,0x4aca,0xc638,0xce79,0xce59,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xce79,0xc618,0x738e,0x7000,0xe8c3,0xf881,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xc000,0xb800,0xb000,0xa861,0xa041,0xa000,0xf410,0xed75,0x31c7,0xad55,0xd69a,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b6d,0x10a2,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0000,0x0000,0x0020,0x0000,0x18c3,0x528a,0x5aeb,0x52aa,0x4a49,0x39e7,0x3186,0x2124,0x18c3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x2104,0x31a6,0x39e7,0x8430,0xc638,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce99,0xce59,0xce59,0xce79,0xc5f8,0x632c,0x7800,0xf0e3,0xf8a2,0xf881,0xf841,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xb800,0xb000,0xa800,0xa882,0x9800,0xb904,0xfd96,0x7b4d,0x8451,0xd679,0xce59,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce59,0x9492,0x3800,0xd882,0xf8c3,0xf882,0xf841,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xc000,0xb000,0xa800,0xa820,0xa082,0xa000,0xfcd3,0xc4d3,0x428a,0xc638,0xce79,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xc618,0x8430,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x2965,0x4208,0x4228,0x4208,0x31a6,0x2945,0x18e3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x7bcf,0xad75,0xce59,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xb596,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9492,0x94b2,0xa514,0xc618,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xbdf7,0xa534,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9492,0x9cd3,0xb596,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd699,0xce59,0xce59,0xce59,0x94b2,0x2800,0xd082,0xf904,0xf8c3,0xf8a2,0xf881,0xf820,0xf800,0xf800,0xe800,0xe800,0xe000,0xd800,0xd000,0xc000,0xb800,0xb000,0xa800,0xa0c3,0x9000,0xdb6d,0xe555,0x3228,0xbdd7,0xce79,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce79,0xb596,0x3a08,0xa000,0xf924,0xf8e3,0xf8a2,0xf882,0xf841,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc000,0xb800,0xb000,0xa800,0xa861,0x9800,0xc104,0xfd96,0x730c,0x94b2,0xd69a,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce59,0xb596,0x7bef,0x5acb,0x4a49,0x4228,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x18c3,0x18c3,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x4a49,0x2945,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x5acb,0x8c51,0xad55,0xb5b6,0xc638,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xc618,0x8430,0x4208,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x4a49,0x528a,0x630c,0xad55,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad55,0x630c,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x39e7,0x528a,0x528a,0x8430,0xc638,0xce79,0xce59,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd67a,0xce59,0xce79,0xbdd7,0x52cb,0x8000,0xf944,0xf944,0xf904,0xf8c3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe800,0xe800,0xe000,0xd000,0xc800,0xc000,0xb000,0xa800,0xa800,0x9841,0xa000,0xf534,0x93ae,0x8471,0xd69a,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce38,0x8c51,0x3800,0xe104,0xf945,0xf904,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe800,0xe800,0xe000,0xd800,0xc800,0xc000,0xb800,0xb000,0xa800,0xa0a2,0x9000,0xec10,0xccf3,0x4acb,0xce39,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xad75,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xa534,0xad55,0x8c71,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x7bef,0x5aeb,0x528a,0x9cf3,0xad55,0xa534,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xbdd7,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce59,0xce79,0xbdf7,0x6b6d,0x0000,0x0000,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x39c7,0x6b6d,0x7bcf,0x4a49,0xad75,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0x9cf3,0x2965,0x0000,0x0841,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x528a,0x7bef,0x5aeb,0x7bcf,0xc638,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xce59,0xa514,0x10c3,0xc061,0xf986,0xf965,0xf924,0xf903,0xf8c3,0xf882,0xf841,0xf800,0xf800,0xf000,0xf000,0xe800,0xd800,0xd000,0xc800,0xb800,0xb000,0xa800,0xa082,0x9000,0xe3cf,0xccd2,0x530c,0xce59,0xce79,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xbdd7,0x52cb,0x8000,0xf986,0xf965,0xf924,0xf904,0xf8c3,0xf882,0xf861,0xf800,0xf800,0xf000,0xe800,0xe800,0xe000,0xd000,0xc800,0xc000,0xb000,0xa800,0xa841,0x9000,0xc1e7,0xf555,0x4a69,0xb596,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x73ae,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xad75,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x9492,0x7bef,0x3186,0xad75,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0x6b6d,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xc618,0x7bcf,0x0000,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0x8430,0x630c,0xc638,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xad55,0x3186,0x0000,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9492,0x5acb,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xc638,0x8c30,0x3000,0xe144,0xf9c7,0xf986,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf800,0xf000,0xf000,0xe800,0xd800,0xd000,0xc000,0xb800,0xb000,0xa841,0x9800,0xc228,0xecf3,0x528a,0xbdd7,0xce99,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xad55,0x2145,0xb082,0xf9c7,0xf986,0xf965,0xf924,0xf903,0xf8a3,0xf882,0xf820,0xf800,0xf800,0xf000,0xf000,0xe800,0xe000,0xd000,0xc800,0xb800,0xb000,0xa800,0x9820,0xa800,0xf4d3,0x936d,0x94b2,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xc618,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa514,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xce79,0xd69a,0xce79,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xce79,0xa534,0x2104,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c71,0x5aeb,0xa534,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xc618,0x738e,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x630c,0x8430,0x6b4d,0xce59,0xce79,0xce59,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd679,0xce59,0xc618,0x738e,0x5000,0xf1a6,0xf9e7,0xf9a6,0xf986,0xf945,0xf904,0xf8c3,0xf882,0xf841,0xf800,0xf800,0xf800,0xf000,0xf000,0xe000,0xd800,0xc800,0xc000,0xb800,0xa820,0xa000,0xb0c3,0xf4b2,0x62aa,0xad75,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0x9cd3,0x1000,0xc925,0xfa08,0xf9c6,0xf986,0xf945,0xf924,0xf8e3,0xf8a2,0xf861,0xf800,0xf800,0xf800,0xf800,0xf000,0xe000,0xd800,0xc800,0xc000,0xb800,0xb000,0xa061,0x9800,0xf410,0xbbcf,0x7410,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b6d,0xb5b6,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0xce79,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xce79,0xce59,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0x73ae,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xce59,0x8430,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b4d,0x6b6d,0x8c71,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xb596,0x4a49,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x8410,0x5aeb,0xbdf7,0xce79,0xce59,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce99,0xce79,0xbdd7,0x5b0c,0x6800,0xf1e7,0xfa28,0xf9c7,0xf9a6,0xf965,0xf924,0xf8e3,0xf8a2,0xf841,0xf800,0xf800,0xf800,0xf800,0xf000,0xe800,0xd800,0xd000,0xc000,0xb800,0xb000,0xa020,0xa800,0xec71,0x72aa,0xa534,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xc638,0x8c71,0x2000,0xd986,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd000,0xc800,0xb800,0xb000,0xa861,0x9800,0xf38e,0xc3ef,0x6bcf,0xd679,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x18e3,0xa514,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd69a,0xa534,0x0841,0x39e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x0861,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xc638,0x7bef,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x52aa,0x5aeb,0x8c71,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xad75,0x39c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x6b6d,0x5aeb,0xbdf7,0xce79,0xce59,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce79,0xbdd7,0x5aeb,0x6800,0xf228,0xfa49,0xfa07,0xf9c7,0xf986,0xf945,0xf904,0xf8a2,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd000,0xc800,0xc000,0xb800,0xa800,0xb000,0xec10,0x7a8a,0xa534,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xc638,0x8c51,0x2000,0xd9a6,0xfa69,0xfa08,0xf9e7,0xf986,0xf945,0xf904,0xf8c3,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xc800,0xc000,0xb800,0xb041,0xa000,0xf36d,0xc3ae,0x6bcf,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xd69a,0xce59,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xc638,0x8c51,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x4a69,0xa514,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xb596,0x528a,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x52aa,0x6b6d,0xc638,0xce79,0xce59,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd679,0xce79,0xbdf7,0x632c,0x5800,0xf208,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8c3,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xc800,0xc000,0xb800,0xb000,0xb800,0xebcf,0x7269,0xad75,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xc639,0x9471,0x1000,0xc9a6,0xfa8a,0xfa28,0xfa08,0xf9c7,0xf986,0xf924,0xf8e3,0xf882,0xf841,0xf820,0xf800,0xf800,0xf800,0xe800,0xe000,0xd800,0xd000,0xc800,0xb800,0xb041,0xa800,0xf34d,0xc32c,0x7410,0xd679,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x10a2,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x18e3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18e3,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce59,0xa534,0x39c7,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x18c3,0x3186,0x632c,0xbdf7,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xc618,0x7bcf,0x0000,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x2945,0x39e7,0x9cd3,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce99,0xce59,0xc618,0x73ae,0x3800,0xe1e7,0xfa8a,0xfa49,0xfa28,0xf9e7,0xf986,0xf945,0xf904,0xf8a2,0xf841,0xf820,0xf820,0xf800,0xf800,0xe800,0xe000,0xd800,0xd000,0xc800,0xc020,0xb000,0xc925,0xf36d,0x628a,0xbdd7,0xd67a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0x9cd3,0x0000,0xb945,0xfa8a,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf904,0xf8c2,0xf861,0xf841,0xf820,0xf800,0xf800,0xf000,0xe000,0xd800,0xd000,0xc800,0xc000,0xb820,0xb000,0xf34c,0xaaaa,0x8cb2,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x2965,0x2965,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xc618,0x8430,0x0000,0x0000,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0000,0x0000,0x52aa,0xad55,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad55,0x52aa,0x0000,0x0000,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0020,0x0000,0x18c3,0x8410,0xc618,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xc638,0x8c71,0x0000,0xc165,0xfaaa,0xfa69,0xfa49,0xfa08,0xf9c7,0xf986,0xf924,0xf8e3,0xf882,0xf861,0xf841,0xf820,0xf800,0xf000,0xe800,0xe000,0xd000,0xc800,0xc020,0xb800,0xe1e7,0xdacb,0x634d,0xc638,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xad55,0x31e7,0x9000,0xfa8a,0xfa8a,0xfa49,0xfa28,0xf9e7,0xf986,0xf945,0xf8e3,0xf8a2,0xf861,0xf841,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xb800,0xc8a2,0xfb0c,0x7249,0xad75,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x10a2,0x4228,0x39e7,0x2945,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0x8c51,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x73ae,0xad75,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xc638,0xad55,0x632c,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x94b2,0xc618,0xce79,0xce59,0xce79,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce9a,0xce59,0xce59,0xa534,0x29a6,0x8800,0xfa69,0xfa8a,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf904,0xf8c3,0xf882,0xf861,0xf841,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc820,0xc000,0xf269,0xaa08,0x8492,0xd679,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xbdd7,0x6b4d,0x4000,0xea28,0xfaaa,0xfa69,0xfa49,0xfa08,0xf9c7,0xf985,0xf924,0xf8e3,0xf8a2,0xf861,0xf841,0xf800,0xf800,0xe800,0xe000,0xd800,0xd000,0xc820,0xc000,0xe9a6,0xe269,0x634c,0xc638,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x18c3,0x52aa,0x4a49,0x39c7,0x2124,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xc638,0xad75,0x94b2,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x94b2,0xb596,0xc638,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xa514,0x8c51,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8c51,0xa514,0xbdf7,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xce79,0xbdd7,0x736d,0x2000,0xd9c7,0xfaaa,0xfa69,0xfa49,0xfa28,0xf9e7,0xf9a6,0xf945,0xf904,0xf8c3,0xf882,0xf841,0xf800,0xf800,0xe800,0xe000,0xd800,0xd800,0xc800,0xd8e3,0xf208,0x6a8a,0xb5d7,0xd679,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xc638,0x94b2,0x0041,0xa924,0xfa8a,0xfa6a,0xfa49,0xfa28,0xf9e7,0xf9a6,0xf965,0xf904,0xf8c3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe000,0xe000,0xd800,0xc800,0xd000,0xfa08,0xa1a6,0x8cd3,0xd679,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0861,0x52aa,0x52aa,0x4208,0x3186,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd679,0xce59,0xce79,0xce58,0x9cf3,0x2945,0x8000,0xfa49,0xfa8a,0xfa49,0xfa28,0xfa08,0xf9c7,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xf965,0xb924,0x7c92,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce59,0xb5b6,0x62eb,0x3800,0xe208,0xfaaa,0xfa49,0xfa49,0xfa08,0xf9c7,0xf986,0xf945,0xf903,0xf8c3,0xf882,0xf841,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xf124,0xe104,0x632c,0xbe18,0xce79,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0020,0x0000,0x4208,0x630c,0x4a69,0x39c7,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd67a,0xce59,0xce59,0xce79,0xbdf7,0x83ef,0x0000,0xa8e4,0xfa69,0xfa89,0xfa48,0xfa08,0xf9e7,0xf9a6,0xf945,0xf904,0xf8c3,0xf882,0xf841,0xf800,0xf000,0xe800,0xe000,0xd820,0xf8c3,0xe000,0x6b6d,0xbe18,0xce79,0xce59,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce39,0x9cf3,0x3165,0x7000,0xf228,0xfa8a,0xfa49,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8e3,0xf882,0xf841,0xf800,0xf800,0xf000,0xe000,0xd800,0xf0c2,0xf800,0x89e7,0xa555,0xd679,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x4a69,0x52aa,0x4208,0x2965,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce9a,0xce59,0xce79,0xce79,0xce59,0xb5b6,0x6b2c,0x0000,0xb104,0xfa49,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf800,0xf800,0xf000,0xe841,0xf882,0xe800,0x82cb,0xadb6,0xd679,0xce59,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xc618,0x8c51,0x1000,0x7800,0xea08,0xfa69,0xfa28,0xfa07,0xf9c7,0xf986,0xf945,0xf903,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe820,0xf082,0xf800,0xa945,0x8cd3,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x39e7,0x2965,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xb596,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xad75,0x6b2c,0x0000,0x9000,0xe9c7,0xfa28,0xfa08,0xf9c7,0xf986,0xf945,0xf904,0xf8c3,0xf881,0xf840,0xf841,0xf882,0xe800,0xd000,0x830c,0xad96,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xbdf7,0x8c30,0x18a2,0x6000,0xd1a6,0xfa28,0xfa08,0xf9e7,0xf9a6,0xf965,0xf924,0xf8c3,0xf882,0xf841,0xf820,0xf882,0xf020,0xe000,0x99e7,0x8cd3,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xbdf7,0x8430,0x8410,0xc638,0xc638,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xb596,0x83cf,0x1904,0x4800,0xa8a2,0xe186,0xf9c7,0xf9a6,0xf986,0xf945,0xf904,0xf8e3,0xf082,0xe000,0xc000,0x9986,0x8410,0xb5d7,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xbdf7,0x94b2,0x4a49,0x0000,0x9000,0xd165,0xf1a7,0xf9a7,0xf986,0xf945,0xf924,0xf8e3,0xf8a2,0xe800,0xc800,0xa800,0x834d,0xa555,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x9492,0x7bef,0x2945,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xad75,0x9492,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xa4f3,0x6b4d,0x10e3,0x3800,0x7000,0x9800,0xa800,0xb000,0xa800,0x9800,0x8000,0x79a6,0x83cf,0xa575,0xc638,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xc638,0xad75,0x83ef,0x31e7,0x1000,0x6000,0x9000,0xa800,0xb000,0xb000,0xa000,0x8800,0x7882,0x832c,0x9cf3,0xbe17,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x73ae,0x630c,0x4228,0xad75,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce59,0xbdd7,0xce79,0xc618,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xad34,0x8c51,0x6b6d,0x52cb,0x4a8a,0x4a8a,0x5b0c,0x7bcf,0x9cd3,0xb5b7,0xc659,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xc618,0xb596,0x94b2,0x73ae,0x5b0c,0x4a8a,0x4a89,0x52cb,0x6b6d,0x8c71,0xad75,0xc618,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xad75,0x52aa,0x0861,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0020,0x0861,0x31a6,0x73ae,0xbdd7,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x738e,0xb5b6,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xdedb,0xa534,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xc638,0xc5f7,0xbdf7,0xbdf7,0xc638,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xc638,0xc618,0xbdf7,0xbdf7,0xc618,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xbdf7,0x7bcf,0x31a6,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x7bef,0xad55,0xc638,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x7bef,0xa534,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xbdd7,0xad55,0x39c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xd6ba,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce59,0xb596,0x8410,0x6b4d,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x6b4d,0x9492,0xb5b6,0xbdf7,0xc638,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x3186,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0xad75,0xd6ba,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xce79,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x8410,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x8c51,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce59,0xc618,0xbdd7,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xbdf7,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x5acb,0xbdf7,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x8c71,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0xa534,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xb5b6,0x10a2,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x39c7,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x630c,0x6b6d,0x6b4d,0x6b6d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b4d,0x18e3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x632c,0xce59,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x6b6d,0xad55,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0x7bcf,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0082,0x0082,0x0082,0x0082,0x0082,0x00a2,0x0082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0082,0x0082,0x0082,0x0082,0x0082,0x0082,0x00a2,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x9020,0xb841,0xb841,0xb841,0xb841,0xb841,0xb861,0x90a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0xa000,0xb841,0xb841,0xb841,0xb841,0xb861,0x98a2,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0841,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b6d,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x632c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xb800,0xc820,0x8800,0x8800,0x8800,0x8800,0x9800,0xd061,0x90c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xa800,0xd000,0x9000,0x8800,0x8800,0x8800,0x9000,0xd040,0xa8c3,0x0020,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x8c71,0x9cf3,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xb000,0xb0a2,0x0041,0x0020,0x0020,0x0020,0x2000,0xc000,0xa882,0x0020,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc000,0xa8a2,0x0041,0x0020,0x0020,0x0020,0x0020,0xb000,0xc082,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb000,0xd020,0xc041,0xc820,0xc841,0xc041,0xc800,0xd021,0x6862,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb800,0xc820,0xc041,0xc040,0xc040,0xc041,0xc020,0xd000,0xb882,0x1041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xb000,0xb841,0x6800,0x7000,0x7000,0x6800,0x7000,0xc820,0x98c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb800,0xb841,0x7000,0x7800,0x7800,0x7800,0x7000,0xb800,0xb882,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb800,0xb8a2,0x3061,0x4820,0x4841,0x4041,0x6000,0xd000,0xa881,0x0000,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc000,0xb0a2,0x0020,0x0000,0x0000,0x0000,0x0000,0xb000,0xc0a2,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce59,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xa000,0xc800,0xc820,0xc820,0xc820,0xc820,0xc800,0xb000,0x4000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb000,0xa082,0x0000,0x1800,0x1800,0x1800,0x0000,0xa800,0xb061,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd6ba,0x8c51,0x0000,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0020,0x2104,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0062,0x3082,0x5061,0x5061,0x5061,0x5061,0x5061,0x4861,0x0061,0x0061,0x1061,0x0862,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0061,0x3861,0x3061,0x0062,0x1061,0x0861,0x1061,0x0061,0x3061,0x3861,0x0061,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x1082,0x0000,0xad75,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce59,0xd6ba,0xbdf7,0x73ae,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x632c,0xa514,0xad75,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad75,0x9cf3,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x62ec,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630b,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x62ec,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x632c,0x9cd3,0xce59,0xce79,0xce59,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0xce59,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xc618, +0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0xbdd7, +0x8c71,0xce59,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0x738e, +0x0000,0x632c,0x8c51,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c51,0x5acb,0x0000}; diff --git a/MCUME_teensy/teensy64/output_dac.h b/MCUME_teensy/teensy64/output_dac.h new file mode 100644 index 0000000..d868f94 --- /dev/null +++ b/MCUME_teensy/teensy64/output_dac.h @@ -0,0 +1,52 @@ +/* Audio Library for Teensy 3.X + * Copyright (c) 2014, Paul Stoffregen, paul@pjrc.com + * + * Development of this audio library was funded by PJRC.COM, LLC by sales of + * Teensy and Audio Adaptor boards. Please support PJRC's efforts to develop + * open source software by purchasing Teensy or other PJRC products. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation 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 + * furnished to do so, subject to the following conditions: + * + * The above copyright notice, development funding 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 FOR 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 output_dac_h_ +#define output_dac_h_ + +#include "reSID.h" +extern AudioPlaySID playSID; + + +class AudioOutputAnalog +{ +public: + //AudioOutputAnalog(void) : AudioStream(1, inputQueueArray) { begin(); } + virtual void update(void); + void begin(void); + void analogReference(int ref); + //static DMAChannel dma; +//private: + //static audio_block_t *block_left_1st; + //static audio_block_t *block_left_2nd; + static bool update_responsibility; + //audio_block_t *inputQueueArray[1]; + static void isr(void); + static uint8_t volume; + +}; + +#endif diff --git a/MCUME_teensy/teensy64/patches.cpp b/MCUME_teensy/teensy64/patches.cpp new file mode 100644 index 0000000..22d62df --- /dev/null +++ b/MCUME_teensy/teensy64/patches.cpp @@ -0,0 +1,294 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include "patches.h" +#include "emuapi.h" + + +#define DIRECTORY ROMSDIR + "/\0" + +static char filename[64]; +static char buffer[2]; + +extern char * menuSelection(void); + +void patchLOAD(void) { + +int device; +int secondaryAddress; +uint16_t addr,size; + + device = cpu.RAM[0xBA]; + if (device != 1) { + //Jump to unpatched original address: + cpu.pc = rom_kernal[cpu.pc - 0xe000 + 1] * 256 + rom_kernal[cpu.pc - 0xe000]; + return; + }; + + +#if XXX + if (cpu.RAM[cpu.RAM[0xBC] * 256 + cpu.RAM[0xBB]] == '$' && cpu.RAM[0xB7] == 1) { + //Directoy listing with LOAD "$" + printf("Listing of "); + printf(DIRECTORY); + printf("\n"); + file = SD.open(DIRECTORY); + int blocks, start, len; + addr = cpu.RAM[0x2C] * 256 + cpu.RAM[0x2B]; + + /*first line of BASIC listing */ + start = addr; + cpu.RAM[addr++] = (start + 30) & 0xff; + cpu.RAM[addr++] = (start + 30) >> 8; + blocks = 0; + cpu.RAM[addr++] = blocks & 0xff; + cpu.RAM[addr++] = blocks >> 8; + + const char title[] = "\x12\"TEENSY64 \" FB " VERSION; + strcpy((char * )&cpu.RAM[addr], title); + addr = start + 30; + + while (true) { + entry = file.openNextFile(); + if (! entry) { + // no more files + break; + } + int offset; + if (!entry.isDirectory()) { + + /* Listing to BASIC-RAM */ + start = addr; + offset = 0; + + //pointer to next line: + cpu.RAM[addr++] = (start + 32) & 0xff; + cpu.RAM[addr++] = (start + 32) >> 8; + + //# of blocks + blocks = ceil((float)entry.size()/256.0f); + cpu.RAM[addr++] = blocks & 0xff; + cpu.RAM[addr++] = blocks >> 8; + + if (blocks < 100) { cpu.RAM[addr++] = ' '; offset++;} + if (blocks < 10) { cpu.RAM[addr++] = ' '; offset++; } + cpu.RAM[addr++] = ' '; + + //filename: + cpu.RAM[addr++] = '"'; + char *s = (char * )&cpu.RAM[addr]; + entry.getName(s, 17); + while(*s) {*s = toupper(*s); s++;} + //strcpy((char * )&cpu.RAM[addr], entry.name()); + len = strlen((char * )&cpu.RAM[addr]); + + if (len > 16) len = 16; + addr += len; + cpu.RAM[addr++] = '"'; + + //fill with space + while ((addr-start) < (32)) { cpu.RAM[addr++] = ' ';} + + //display "PRG" + addr = start + 23 + offset; + cpu.RAM[addr++] = ' '; + cpu.RAM[addr++] = 'P'; + cpu.RAM[addr++] = 'R'; + cpu.RAM[addr++] = 'G'; + + //line-ending + cpu.RAM[start+31] = 0; + addr = start + 32; + + /* Listing to serial console */ + itoa (blocks,filename,10); + len = strlen(filename); + while (len < 4) { strcat(filename," "); len++; }; + strcat(filename, "\""); + char nbuf[18] = {0}; + entry.getName(nbuf, 17); + strcat(filename, nbuf); + //strcat(filename, entry.getName()); + strcat(filename, "\""); + len = strlen(filename); + while (len < 18+4) { strcat(filename," "); len++; }; + strcat(filename," PRG "); + //printf(filename); + + } + entry.close(); + } + file.close(); + + /*add last line to BASIC listing*/ + start = addr; + cpu.RAM[addr++] = (start + 32) & 0xff; + cpu.RAM[addr++] = (start + 32) >> 8; + //# of blocks. todo : determine free space on sd card + blocks = 65535; + cpu.RAM[addr++] = blocks & 0xff; + cpu.RAM[addr++] = blocks >> 8; + if (blocks < 100) { cpu.RAM[addr++] = ' ';} + if (blocks < 10) { cpu.RAM[addr++] = ' ';} + const char blockfree[] = "BLOCKS FREE."; + + strcpy((char * )&cpu.RAM[addr], blockfree); + len = strlen(blockfree); + addr += len; + while ((addr-start) < (32)) { cpu.RAM[addr++] = ' ';} + cpu.RAM[start+31] = 0; + cpu.RAM[start+32] = 0; + cpu.RAM[start+33] = 0; + + cpu.y = 0x49; //Offset for "LOADING" + cpu.pc = 0xF12B; //Print and return + return; + } // end directory listing +#endif + + //$B7 : Length of file name or disk command + //$BB-$BC: Pointer to current file name or disk command + memset(filename,0,sizeof(filename)); + if ( cpu.RAM[0xB7] == 0) { + strcpy(filename,menuSelection()); + } + else { + strncpy(filename, (char*)&cpu.RAM[cpu.RAM[0xBC] * 256 + cpu.RAM[0xBB]], cpu.RAM[0xB7] ); + } + secondaryAddress = cpu.RAM[0xB9]; + + Serial.println("loading"); + //printf("%s,%d,%d:", filename, device, secondaryAddress); + //tft.stopDMA(); + //emu_resetSD(); + //tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) ); + if (emu_FileOpen(filename) == 0) { + //Serial.println("not found"); + cpu.pc = 0xf530; //Jump to $F530 + //tft.startDMA(); + return; + } + + size = emu_FileSize(filename); + emu_FileOpen(filename); + emu_FileRead(buffer, 2); + addr = buffer[1] * 256 + buffer[0]; + emu_FileRead((char*)&cpu.RAM[addr], size - 2); + emu_FileClose(); + + cpu.RAM[0xAF] = (addr + size - 2) & 0xff; + cpu.RAM[0xAE] = (addr + size - 2) / 256; + + cpu.y = 0x49; //Offset for "LOADING" + cpu.pc = 0xF12B; //Print and return + emu_printf("loaded"); + //tft.startDMA(); + + return; +} + +void patchSAVE(void) { +#ifdef XXX +int device; +int secondaryAddress; +uint16_t addr,size; + + Serial.println("Patched SAVE"); + device = cpu.RAM[0xBA]; + if (device != 1) { + //Jump to unpatched original address: + cpu.pc = rom_kernal[cpu.pc - 0xe000 + 1] * 256 + rom_kernal[cpu.pc - 0xe000]; + return; + }; + + if (!SDinitialized) { + cpu.pc = 0xF707; //Device not present error + Serial.println("SD Card not initialized"); + return; + } + + if( !SD.exists(DIRECTORY) && SD.mkdir(DIRECTORY) ) { + cpu.pc = 0xF707; //Device not present error + Serial.println("SD: Could not create " DIRECTORY); + } + + //$B7 : Length of file name or disk command + //$BB-$BC: Pointer to current file name or disk command + memset(filename,0,sizeof(filename)); + strcpy(filename, DIRECTORY); + strncat(filename, (char*)&cpu.RAM[cpu.RAM[0xBC] * 256 + cpu.RAM[0xBB]], cpu.RAM[0xB7] ); + + secondaryAddress = cpu.RAM[0xB9]; + + Serial.print(filename); + Serial.print(","); + Serial.print(device); + Serial.print(","); + Serial.print(secondaryAddress); + Serial.print(":"); + + addr = cpu.RAM[cpu.a + 1] * 256 + cpu.RAM[cpu.a]; + size = (cpu.y * 256 + cpu.x) - addr; + + buffer[0] = addr & 0xff; + buffer[1] = addr >> 8; + + if (SD.exists(filename)) SD.remove(filename); + file = SD.open(filename, FILE_WRITE); + if (!file) { + Serial.println ("not possible."); + cpu.pc = 0xf530; //Jump to $F530 + return; + } + file.write(buffer, 2); + file.write(&cpu.RAM[addr], size); + file.close(); + + if (cpu.RAM[0x9D] & 128) { + uint16_t pushval = 0xF68D; + cpu.RAM[BASE_STACK + cpu.sp] = (pushval >> 8) & 0xFF; + cpu.RAM[BASE_STACK + ((cpu.sp - 1) & 0xFF)] = pushval & 0xFF; + cpu.sp -= 2; + + cpu.y = 0x51; + cpu.pc = 0xF12F; + } else { + cpu.pc = 0xF68D; + } + + Serial.println("saved."); + return; +#endif +} diff --git a/MCUME_teensy/teensy64/patches.h b/MCUME_teensy/teensy64/patches.h new file mode 100755 index 0000000..34a1646 --- /dev/null +++ b/MCUME_teensy/teensy64/patches.h @@ -0,0 +1,44 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ +#ifndef Teensy64_patches_h_ +#define Teensy64_patches_h_ + +#include "cpu.h" +#include "roms.h" + +void patchLOAD(void); +void patchSAVE(void); + +#endif \ No newline at end of file diff --git a/MCUME_teensy/teensy64/pla.cpp b/MCUME_teensy/teensy64/pla.cpp new file mode 100644 index 0000000..7e1a970 --- /dev/null +++ b/MCUME_teensy/teensy64/pla.cpp @@ -0,0 +1,1114 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#include +#include "roms.h" +#include "cpu.h" + +#include "pla.h" +#include "vic.h" +#include "cia1.h" +#include "cia2.h" + + +extern CONSTROM rarray_t PLA_READ[8]; +extern CONSTROM warray_t PLA_WRITE[8]; + +uint8_t r_ram(uint32_t address) { return cpu.RAM[address]; } +uint8_t r_bas(uint32_t address) { return rom_basic[address & (sizeof(rom_basic)-1)]; } //BASIC ROM +uint8_t r_ker(uint32_t address) { return rom_kernal[address & (sizeof(rom_kernal)-1)]; } //KERNAL ROM +uint8_t r_chr(uint32_t address) { return rom_characters[address & (sizeof(rom_characters)-1)]; } //CHARACTER ROM +uint8_t r_vic(uint32_t address) { return vic_read(address); } +#ifdef HAS_SND +uint8_t r_sid(uint32_t address) { return playSID.getreg(address & 0x1F);} +#else +uint8_t r_sid(uint32_t address) { return 0;} +#endif +uint8_t r_col(uint32_t address) { return cpu.vic.COLORRAM[address & 0x3FF]; } +uint8_t r_cia1(uint32_t address) { return cia1_read(address); } +uint8_t r_cia2(uint32_t address) { return cia2_read(address); } +uint8_t r_crtL(uint32_t address) { return cpu.cartrigeLO[address & 0x1fff]; } //Cartrige Low ($8000) +uint8_t r_crtH(uint32_t address) { return cpu.cartrigeHI[address & 0x1fff]; } +uint8_t r_nul(uint32_t address) { return 0;} //No RAM for Ultimax-cartrige +uint8_t r_rnd(uint32_t address) { return 255;} //Random for $DE00-$DFFF + +void w_ram( uint32_t address, uint8_t value ) { + cpu.RAM[address ]=value; +} +void w_ramz( uint32_t address, uint8_t value ) { + cpu.RAM[address]=value; //zeropage + if (address==1) { //6510 Port + value &= 0x07; + cpu.plamap_r = (rarray_t*)&PLA_READ[value]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[value]; + } + } +void w_vic( uint32_t address, uint8_t value ) { vic_write(address, value); } +void w_col( uint32_t address, uint8_t value ) { cpu.vic.COLORRAM[address & 0x3FF] = value & 0x0F;} +#ifdef HAS_SND +void w_sid( uint32_t address, uint8_t value ) { playSID.setreg(address & 0x1F, value); } +#else +void w_sid( uint32_t address, uint8_t value ) { } +#endif +void w_cia1( uint32_t address, uint8_t value ) { cia1_write(address, value); } +void w_cia2( uint32_t address, uint8_t value ) { cia2_write(address, value); } + +/* + LORAM (bit 0) can generally be thought of as a control line which banks + the 8K byte BASIC ROM in and out of the microprocessor address space. + Normally, this line is HIGH for BASIC operation. If this line is + programmed LOW, the BASIC ROM will disappear from the memory map and be + replaced by 8K bytes of RAM from $A000-$BFFF. + + HIRAM (bit 1) can generally be thought of as a control line which banks + the 8K byte KERNAL ROM in and out of the microprocessor address space. + Normally, this line is HIGH for BASIC operation. If this line is + programmed LOW, the KERNAL ROM will disappear from the memory map and be + replaced by 8K bytes of RAM from $E000-$FFFF. + + CHAREN (bit 2) is used only to bank the 4K byte character generator ROM + in or out of the microprocessor address space. From the processor point + of view, the character ROM occupies the same address space as the I/O + devices ($D000-$DFFF). When the CHAREN line is set to 1 (as is normal), + the I/O devices appear in the microprocessor address space, and the + character ROM is not accessable. When the CHAREN bit is cleared to 0, the + character ROM appears in the processor address space, and the I/O devices + are not accessible. (The microprocessor only needs to access the + character ROM when downloading the character set from ROM to RAM. Special + care is needed for this... see the section on PROGRAMMABLE CHARACTERS in + the GRAPHICS chapter). CHAREN can be overridden by other control lines in + certain memory configurations. CHAREN will have no effect on any memory + configuration without I/O devices. RAM will appear from $D000-$DFFF + instead. + */ + + /* + Bit+-------------+-----------+------------+ + 210| $8000-$BFFF |$D000-$DFFF|$E000-$FFFF | + +---+---+-------------+-----------+------------+ + | 7 |111| Cart.+Basic | I/O | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 6 |110| RAM | I/O | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 5 |101| RAM | I/O | RAM | + +---+---+-------------+-----------+------------+ + | 4 |100| RAM | RAM | RAM | + +---+---+-------------+-----------+------------+ + | 3 |011| Cart.+Basic | Char. ROM | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 2 |010| RAM | Char. ROM | Kernal ROM | + +---+---+-------------+-----------+------------+ + | 1 |001| RAM | Char. ROM | RAM | + +---+---+-------------+-----------+------------+ + | 0 |000| RAM | RAM | RAM | + +---+---+-------------+-----------+------------+ + ||| + /CharEn|/LoRam + | + /HiRam + */ + +CONSTROM +rarray_t PLA_READ[8] = { + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* A0 */ // r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ // r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker} +}; + +CONSTROM +warray_t PLA_WRITE[8] = { + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram,}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram,}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_vic, w_vic, w_vic, w_vic, w_sid, w_sid, w_sid, w_sid, w_col, w_col, w_col, w_col, w_cia1, w_cia2, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_vic, w_vic, w_vic, w_vic, w_sid, w_sid, w_sid, w_sid, w_col, w_col, w_col, w_col, w_cia1, w_cia2, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {w_ramz, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 10 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 20 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 30 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 40 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 50 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 60 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 70 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* 80 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* 90 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* A0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* B0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + + /* C0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* D0 */ w_vic, w_vic, w_vic, w_vic, w_sid, w_sid, w_sid, w_sid, w_col, w_col, w_col, w_col, w_cia1, w_cia2, w_ram, w_ram, + /* E0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, + /* F0 */ w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram, w_ram} +}; + +/* +Normal 8kB cartridge at $8000 (ROML): GAME = 1, EXROM = 0 +Normal 16kB cartridge at $8000/$a000 (ROML,ROMH): GAME = 0, EXROM = 0 +Ultimax 16kB cartridge at $8000/$e000 (ROML,ROMH): GAME = 0, EXROM = 1 +*/ + +CONSTROM +rarray_t PLA_READ_CARTRIGE_10[8] = { + + //Normal 8kB cartridge at $8000 (ROML): GAME = 1, EXROM = 0 + + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker} +}; + +CONSTROM +rarray_t PLA_READ_CARTRIGE_00[8] = { //GAME = 0 EXROM = 0 + + //Normal 16kB cartridge at $8000/$a000 (ROML,ROMH): GAME = 0, EXROM = 0 + + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, r_chr, //chr + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* B0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + /* B0 */ r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, r_bas, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* F0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 90 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 20 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 30 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 40 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 50 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 60 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 70 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* B0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + + /* C0 */ r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_ram, r_ram, + /* E0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, + /* F0 */ r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker, r_ker} +}; + +CONSTROM +rarray_t PLA_READ_CARTRIGE_01[8] = { + + //Ultimax 16kB cartridge at $8000/$e000 (ROML,ROMH): GAME = 0, EXROM = 1 + + //charen hiram loram + /* 000 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 001 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 010 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 011 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 100 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 101 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 110 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, + + /* 111 */ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F*/ + /* 00 */ {r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, r_ram, + /* 10 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 20 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 30 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 40 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 50 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 60 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* 70 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* 80 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* 90 */ r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, r_crtL, + /* A0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* B0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + + /* C0 */ r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, r_nul, + /* D0 */ r_vic, r_vic, r_vic, r_vic, r_sid, r_sid, r_sid, r_sid, r_col, r_col, r_col, r_col, r_cia1, r_cia2, r_nul/*?*/, r_nul/*?*/, + /* E0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, + /* F0 */ r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH, r_crtH}, +}; + + + +void resetPLA(void) { + + // Initialize RAM + unsigned i = 0; + const char pattern1 = 0x00; + const char pattern2 = 0xff; + const char patternLength = 0x40; + + while (i <= (sizeof(cpu.RAM) - patternLength * 2)) { + memset(&cpu.RAM[i], pattern1, patternLength); + i += patternLength; + memset(&cpu.RAM[i], pattern2, patternLength); + i += patternLength; + }; + + cpu.RAM[0] = 0x2F; + cpu.RAM[1] = 0x1F; + +/* Cartriges : +Normal 8kB cartridge at $8000 (ROML): GAME = 1, EXROM = 0 +Normal 16kB cartridge at $8000/$a000 (ROML,ROMH): GAME = 0, EXROM = 0 +Ultimax 16kB cartridge at $8000/$e000 (ROML,ROMH): GAME = 0, EXROM = 1 +*/ +#if 1 //No Cartrige + cpu._game = 1; + cpu._exrom = 1; +#else //TODO... + cpu._game = 0; + cpu._exrom = 0; +#endif + + if (cpu._game == 1 && cpu._exrom==0) { + cpu.plamap_r = (rarray_t*)&PLA_READ_CARTRIGE_10[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } + else + if (cpu._game == 0 && cpu._exrom==0) { + cpu.plamap_r = (rarray_t*)&PLA_READ_CARTRIGE_00[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } + else + if (cpu._game == 0 && cpu._exrom==1) { + cpu.plamap_r = (rarray_t*)&PLA_READ_CARTRIGE_00[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } + else { //C64 without Cartridge + cpu.plamap_r = (rarray_t*)&PLA_READ[0x07]; + cpu.plamap_w = (warray_t*)&PLA_WRITE[0x07]; + } +} diff --git a/MCUME_teensy/teensy64/pla.h b/MCUME_teensy/teensy64/pla.h new file mode 100755 index 0000000..2355787 --- /dev/null +++ b/MCUME_teensy/teensy64/pla.h @@ -0,0 +1,66 @@ +/* +Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_pla_h_ +#define Teensy64_pla_h_ + +#define CONSTROM const + +#define MEM_BASIC_ROM 0xA000 +#define MEM_CHARSET_ROM 0xD000 +#define MEM_KERNAL_ROM 0xE000 + +#define MEM_VIC 0xD000 +#define MEM_VICCOLOR 0xD800 +#define MEM_SID 0xD400 +#define MEM_CIA1 0xDC00 +#define MEM_CIA2 0xDD00 + +//C64 Memory/Device access (PLA) + +/* READ */ +typedef uint8_t (*r_ptr_t)( uint32_t address ); //Funktionspointer auf uint8_t foo(uint16_t address); +typedef r_ptr_t rarray_t[256]; //Array von Funktionspointern +typedef rarray_t * r_rarr_ptr_t; //Pointer auf Array von Funktionspointern + +/* WRITE */ +typedef void (*w_ptr_t)( uint32_t address, uint8_t value ); //Funktionspointer auf void foo( uint16_t address, uint8_t value ); +typedef w_ptr_t warray_t[256]; //Array von Funktionspointern +typedef warray_t * w_rarr_ptr_t; //Pointer auf Array von Funktionspointern + + +void resetPLA(void); + +#endif diff --git a/MCUME_teensy/teensy64/reSID.cpp b/MCUME_teensy/teensy64/reSID.cpp new file mode 100644 index 0000000..e8362e2 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID.cpp @@ -0,0 +1,64 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ +#include "reSID.h" +#include + +#define AUDIO_BLOCK_SAMPLES 443 +#define SAMPLERATE 22050 +#define CLOCKFREQ 985248 + +void AudioPlaySID::begin(void) +{ + sidptr = &sid; + this->reset(); + setSampleParameters(CLOCKFREQ, SAMPLERATE); + playing = true; +} + +void AudioPlaySID::setSampleParameters(float clockfreq, float samplerate) { + sid.set_sampling_parameters(clockfreq, SAMPLE_FAST, samplerate); + csdelta = round((float)clockfreq / ((float)samplerate / AUDIO_BLOCK_SAMPLES)); +} + +void AudioPlaySID::reset(void) +{ + sid.reset(); +} + +void AudioPlaySID::stop(void) +{ + playing = false; +} + +void AudioPlaySID::update(void * stream, int len) { + // only update if we're playing + if (!playing) return; + + cycle_count delta_t = csdelta; + + sidptr->clock(delta_t, (short int*)stream, len); +} diff --git a/MCUME_teensy/teensy64/reSID.h b/MCUME_teensy/teensy64/reSID.h new file mode 100644 index 0000000..db7021e --- /dev/null +++ b/MCUME_teensy/teensy64/reSID.h @@ -0,0 +1,54 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ +#include "reSID/sid.h" +#include + +#ifndef play_sid_h_ +#define play_sid_h_ + + +class AudioPlaySID +{ +public: + AudioPlaySID(void) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + inline void setreg(int ofs, int val) { sid.write(ofs, val); } + inline uint8_t getreg(int ofs) { return sid.read(ofs); } + void reset(void); + void stop(void); + void update(void * stream, int len); + inline bool isPlaying(void) { return playing; } +private: + cycle_count csdelta; + volatile bool playing; + SID sid; + SID* sidptr; +}; + + +#endif diff --git a/MCUME_teensy/teensy64/reSID/.DS_Store b/MCUME_teensy/teensy64/reSID/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensy64/reSID/.DS_Store differ diff --git a/MCUME_teensy/teensy64/reSID/AUTHORS b/MCUME_teensy/teensy64/reSID/AUTHORS new file mode 100755 index 0000000..d22e33d --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/AUTHORS @@ -0,0 +1,3 @@ +Authors of reSID. + +Dag Lem: Designed and programmed complete emulation engine. diff --git a/MCUME_teensy/teensy64/reSID/COPYING b/MCUME_teensy/teensy64/reSID/COPYING new file mode 100755 index 0000000..d60c31a --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/MCUME_teensy/teensy64/reSID/ChangeLog b/MCUME_teensy/teensy64/reSID/ChangeLog new file mode 100755 index 0000000..1c7aa47 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/ChangeLog @@ -0,0 +1,313 @@ +2004-06-11 Dag Lem + + * Version 0.16 released. + + * envelope.h (EnvelopeGenerator::clock): Corrected off-by-one + error in check for ADSR delay bug in delta_t cycle interface. + + * filter.cc (Filter::set_chip_model): Initialize filter cutoff + mappings before call to set_chip_model. + + * sid.cc (SID::set_sampling_parameters): Build shifted FIR tables + with samples according to the sampling frequency. + (SID::clock_resample_interpolate): New function; factorized linear + interpolation out from filter convolutions, and made convolutions + vectorizable. + (SID::clock_resample_fast): New function; single convolution, same + accuracy as with interpolation by using more filter tables. + (SID::State, SID::read_state, SID::write_state): Read and write + rate_counter_period and exponential_counter_period. Read sustain + value. + +2003-10-20 Dag Lem + + * Version 0.15 released. + + * envelope.h (EnvelopeGenerator): Added public State enum. + (EnvelopeGenerator::clock): Rate counter is 15 bits, count + rate_period - 1 after wrapping from 0x8000 to 0 in ADSR delay bug. + + * sid.cc, sid.h (SID::State): Added envelope_state. + (SID::State::write_state): Restore register 0x18. + (SID::set_sampling_parameters): Scale resampling filter to avoid + clipping. + (SID::clock_resample): Saturated arithmetics to avoid clipping. + +2002-12-31 Dag Lem + + * Version 0.14 released. + + * envelope.h (EnvelopeGenerator::clock): Corrected one cycle error + in ADSR delay bug. Only load the exponential counter period at the + envelope counter values 255, 93, 54, 26, 14, 6, 0. + + * filter.cc (Filter::set_chip_model): Call set_w0() and set_Q() to + update filter settings. + (Filter::set_w0): Limit cutoff frequency for both 1 cycle and + delta_t cycle filter. + + * filter.h (Filter::clock): Mix in external audio input. + + * sid.cc, sid.h (SID::input): New function; accepts external audio + input sample. + + * spline.h (PointPlotter::operator ()): Clamp negative values to + zero. + + * voice.cc, voice.h: Changed misleading name wave_DC to wave_zero. + + * wave.h (WaveformGenerator::clock): Corrected bug in check for + accumulator bit 19 in noise register shift. + +2002-01-19 Dag Lem + + * Version 0.13 released. + + * configure.in: Replaced AC_TRY_COMPILER with AC_TRY_COMPILE, + removed AC_PROG_RANLIB. + + * envelope.h (EnvelopeGenerator::clock): Reset rate_step on state + change. + + * extfilt.cc (ExternalFilter::set_chip_model): New calculation of + maximum mixer DC level. + + * filter.cc (Filter::set_chip_model): Moved calculation of + voice_DC to voice.cc, corrected calculation of mixer_DC. + + * filter.h (Filter::output): Mixer output is not inverted. + + * sid.cc (SID::set_chip_model): Call voice.set_chip_model instead + of voice.wave.set_chip_model. + + * voice.cc (Voice::Voice): Call set_chip_model. + (Voice::set_chip_model): New function; model both waveform D/A + converter and envelope multiplying D/A converter DC offsets. + + * voice.h (Voice::output): Add both waveform D/A converter and + envelope multiplying D/A converter DC offsets. + + * wave.h (WaveformGenerator::output____): Reverted to output + minimum wave level when no waveform is selected. The maximum and + minimum wave output levels are interchanged in C= Hacking Issue #20. + +2001-10-20 Dag Lem + + * Version 0.12 released. + + * envelope.cc, envelope.h, filter.cc, filter.h, wave.cc, wave.h: + Removed bool usage. This avoids unnecessary conversion to 1/0. + + * filter.cc (Filter::set_chip_model): New function; selects voice + and mixer DC offsets and mapping from the FC registers to filter + cutoff frequency. The voice and mixer DC offsets for the MOS6581 are + calculated from measurements made by Hrsfalvi, Levente in + C= Hacking Issue #20. + (Filter::Filter): Call set_chip_model. + (Filter::f0_6581, Filter::f0_8580): Separate FC mapping tables. + (Filter::f0_points_6581, Filter::f0_points_8580): Separate FC mapping + points. + + * extfilt.cc, extfilt.h (ExternalFilter::set_chip_model): New + function supporting separate DC correction for MOS6581 and MOS8580. + + * sid.cc, sid.h (SID::adjust_sampling_frequency): New function for + on-the-fly adjustment of sampling frequency. + (SID::clock_fast): Corrected sample calculation. + (SID::set_chip_model): Set filter chip model. + (SID::output): Added audio clipping. + (SID::clock, SID::clock_fast, SID::clock_interpolate, + SID::clock_resample): Added sample interleaving. + + * spline.h (interpolate): Generalized to accept repeated points to + introduce points of non-differentiability and discontinuity. + + * wave.h (WaveformGenerator::output____): No selected waveform + yields maximum wave output level. This was found by Hrsfalvi, + Levente in C= Hacking Issue #20. + (WaveformGenerator::clock): Optimized for speed (no division). + +2001-03-10 Dag Lem + + * Version 0.11 released. + + * configure.in: Disable building of shared library by default. + Control inlining with RESID_INLINING (0 or 1) and RESID_INLINE + (blank or "inline"). + + * envelope.h, extfilt.h, filter.h, voice.h, wave.h: inline keyword + in both function declarations and function definitions. + + * samp2src.pl: Beautified Perl code. + + * sid.h, sid.cc: Replaced voice variables with array. Removed + filter variables from SID::State. + (SID::clock): New audio sample generating interface. Three + clocking methods are available; clocking at output sample + frequency, clocking at cycle frequency with linear sample + interpolation, and clocking at cycle frequency with audio + resampling. + (SID::clock_fast, SID::clock_interpolate, SID::clock_resample): + New functions called by SID::clock. + (SID::set_sampling_parameters): New function to set up SID for + sample generation. The FIR table used in SID::clock_resample is + calculated here. + (SID::I0): 0th order modified Bessel function to calculate Kaiser + window. + + * siddefs.h: Control inlining with RESID_INLINING (0 or 1) and + RESID_INLINE (blank or "inline"). Added enum sampling_method. + + * voice.h, voice.cc (Voice::set_sync_source): Moved setting of + sync source from constructor. + + * wave.h, wave.cc (WaveformGenerator::set_sync_source): Moved + setting of sync source from constructor. + +2000-11-22 Dag Lem + + * Version 0.10 released. + + * configure.in, Makefile.am: Use libtool to build library. The + hack to "disable" install is removed. + + * extfilt.h, filter.h: Moved filter stability code from sid.cc. + + * sid.cc (SID::clock): Moved filter stability code to + extfilt.h/filter.h. Don't clock the rest of the chip more + frequently than necessary. + + * wave.cc: Typecast for pedantic (and probably incorrect) + compilers. + +2000-05-18 Dag Lem + + * Version 0.9 released. + + * filter.h (Filter::output): The sum of the filter outputs is no + longer weighted. + +1999-06-24 Dag Lem + + * Version 0.8 released. + + * filter.h, filter.cc, wave.h, wave.cc: Typecasts for pedantic + compilers. + + * filter.h (Filter::clock): Voice 3 is only silenced by voice3off + if it is not routed through the filter. + + * sid.cc (SID::State): Added constructor for proper initalization. + + * spline.h: Inlined template functions to avoid problems at link + time with certain compilers. + +1999-02-25 Dag Lem + + * Version 0.7 released. + + * configure.in: Check whether compiler supports bool. + + * extfilt.h, extfilt.cc: Implementation of C64 filter, external to + the SID chip. + + * filter.h (Filter::clock): Optimized filter routing using a switch. + (Filter::output): Optimized filter mixing using a switch, avoiding + integer division. Corrected sign of filtered output, which is + inverted compared to unfiltered output. + + * filter.cc (Filter::set_w0): Removed use of M_PI and math.h + functions. Use spline table to map fc to w0. + (Filter::fc_default): Return array of FC spline interpolation points. + (Filter::fc_plotter): Return FC spline plotter object. + + * sid.h (SID::enable_external_filter): Enable/disable external + filter. + (SID::fc_default): Return array of FC spline interpolation points. + (SID::fc_plotter): Return FC spline plotter object. + (SID::State, SID::read_state, SID::write_state): Read and write + complete SID state. + + * sid.cc (SID::clock): Age bus value. Clock external filter. + (SID::enable_external_filter): Enable/disable external filter. + + * spline.h: Spline implementation. Used to specify mapping from + the FC register to filter cutoff frequency. + +1998-11-14 Dag Lem + + * Version 0.6 released. + + * configure.in: Allow compilation in a separate directory. + + * wave.h (WaveformGenerator::synchronize): Handle special case when a + sync source is synced itself on the same cycle as its MSB is set + high. + + * sid.cc (SID::clock): Only clock on MSB on/off for hard sync. + +1998-09-06 Dag Lem + + * Version 0.5 released. + + * version.cc (resid_version_string): Version string with C linkage. + + * wave.cc (WaveformGenerator::set_chip_model): Emulation of MOS8580 + combined waveforms. + +1998-08-28 Dag Lem + + * Version 0.4 released. + + * envelope.h (EnvelopeGenerator::clock): Count up to rate_period twice + during ADSR delay bug, and add one extra rate counter step. + + * filter.cc (Filter::bsd_copysign): Renamed copysign function for + compilation on platforms where copysign is implemented as a macro. + +1998-08-23 Dag Lem + + * Version 0.3 released. + + * envelope.h (EnvelopeGenerator::clock): Handle ADSR boundary bug. + + * envelope.cc (EnvelopeGenerator::rate_counter_period, + EnvelopeGenerator::exponential_counter_period): Corrected counter + periods. + + * filter.h (Filter::clock): Optimized for speed (division by shifting). + + * sid.h (SID::clock): New one-cycle optimized overload of the clock() + function. + + * wave.h (WaveformGenerator::output_P_T): Combined waveform + pulse+triangle indexing corrected. + (WaveformGenerator::output_P__): Check for test bit to handle + pulse+test bit samples. + (WaveformGenerator::output): Optimized for speed (inlining). + +1998-07-28 Dag Lem + + * Version 0.2 released. + + * envelope.h (EnvelopeGenerator::clock): Start decay cycle immediately + at envelope counter 0xff. New sustain value is zero if the sustain + level is raised above the current envelope counter value. + (EnvelopeGenerator::step_envelope): Handle ADSR delay bug. + + * envelope.cc (EnvelopeGenerator::rate_counter_period, + EnvelopeGenerator::exponential_counter_period): Corrected counter + periods. + (EnvelopeGenerator::writeCONTROL_REG): Do not modify rate counter. + + * filter.cc (Filter::set_Q): Constrain Q to keep filter stable. + + * sid.h (SID::read, SID::write, SID::bypass_filter): Simplified API + routing register access through the SID class. + + * sid.cc (SID::output): Corrected variable-bit audio output return. + (SID::read, SID::write): Allow read of write only registers. + +1998-06-09 Dag Lem + + * Version 0.1 released. diff --git a/MCUME_teensy/teensy64/reSID/INSTALL b/MCUME_teensy/teensy64/reSID/INSTALL new file mode 100755 index 0000000..54caf7c --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/INSTALL @@ -0,0 +1,229 @@ +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/MCUME_teensy/teensy64/reSID/NEWS b/MCUME_teensy/teensy64/reSID/NEWS new file mode 100755 index 0000000..e0ff298 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/NEWS @@ -0,0 +1,271 @@ +Changes in reSID version 0.16 +----------------------------- + +An off-by-one error in the emulation of the ADSR delay bug has been +fixed in the fast version of the envelope clocking. + +An initialization bug in the Filter class which caused floating point +exceptions on some platforms has been fixed. + +Missing fields have been added to SID::State for correct snapshots. + +By building shifted FIR tables with samples according to the sampling +frequency, the resampling code dramatically reduces the computational +effort in the filter convolutions, without any loss of accuracy. The +filter convolutions are now also vectorizable on current hardware. The +implementation builds on ideas by Laurent Ganier. + +The resampling code has been split into two functions, one using +interpolation and a small set of shifted filter tables, and one using +direct lookup and a large set of shifted filter tables. The accuracy +is the same, the difference is that the direct lookup runs has the +potential of running at almost twice the speed (depending on cache +size and memory bandwidth) using approximately 16MB more memory. It is +now possible to run high quality resampling in real time on quite +modest hardware, provided that a vectorizing compiler is used. + + +Changes in reSID version 0.15 +----------------------------- + +An error in the emulation of the ADSR delay bug has been fixed. When +emulation of the ADSR delay bug was introduced in reSID 0.2, the delay +was one cycle too long. One cycle was subtracted from the delay in +reSID 0.4, however unfortunately one rate counter period was added as +well, thus increasing the error. At the time there was no method to +fully synchronize the CPU with envelope 3, so the measurements relied +on averaging. Because of pipelining in the envelope logic the effects +of a write are delayed, and this caused the test code to miss the +target by exactly one rate counter period on a real SID. The current +test code does achieve full synchronization with envelope 3, so this +time the delay should be 100% correct. There are still side effects +caused by pipelining which are not implemented in reSID, however these +effects are not controllable without full synchronization with the +envelope, something which is hard to achieve with envelope 3, and +impossible with envelope 1 and 2. + +The envelope state (ADSR) has been added to the SID state, and the +volume setting is now restored from the SID state. + +Filter scaling and clipping has been added to avoid sample overflows +in the resampling filter. + + +Changes in reSID version 0.14 +----------------------------- + +The SID external audio input is now emulated. This can be used e.g. to +simulate the hack of connecting a resistor from EXT IN to GND to boost +the sample volume on the MOS8580. Calling sid.input(-32768) makes the +MOS8580 sound more or less like the MOS6581 with respect to samples. +The interface could also be used to mix in an external audio signal, +but note that to do this correctly you should really resample the +audio signal to 1MHz first. + +The filter settings are now updated immediately when the chip model is +changed. Earlier the filter cutoff frequency would not change until +the FC registers were updated. + +A one cycle error in the fast version of the envelope clocking has +been fixed. This bug was introduced in reSID 0.13 and could affect the +ADSR delay emulation. + +The exponential counter period is now only loaded at the envelope +counter values 255, 93, 54, 26, 14, 6, 0. The period can be different +for the same envelope counter value, depending on whether the envelope +has been rising (attack -> release) or sinking (decay/release). + +A bug in the fast version of the noise register shift routine has been +corrected. This bug caused too low noise frequency in some cases. + +The filter cutoff frequency is limited to 16kHz to keep the filter stable. + + +Changes in reSID version 0.13 +----------------------------- + +The internal DC levels of the MOS6581 have been double checked and +corrected. The reason for the asymmetric scaling of the voice output +has been found; there is a DC offset from the waveform D/A converter +in addition to the DC offset from the envelope multiplying D/A +converter. No selected waveform (N=P=S=T=0) yields minimum wave output +level again. + +A bug in the fast version of the envelope clocking has been corrected. +This bug could incorrectly invoke the ADSR delay emulation. + + +Changes in reSID version 0.12 +----------------------------- + +A bug causing incorrect sample spacing in the new SAMPLE_FAST sample +calculation has been corrected. + +Audio clipping has been added to guard against sample overflows. + +To support multi-channel sampling, sample interleaving has been added +to the clock() interface. + +To support synchronization with an external timer, an interface for +sample rate adjustment has been added. + +The internal DC levels have been corrected. No selected waveform +(N=P=S=T=0) yields maximum wave output level. Furthermore, each voice +in the MOS6581 independently contributes to the DC level in the mixer, +and the mixer itself has a small DC offset as well. The MOS8580 has no +DC offsets. + +The spline interpolation routine has been generalized to accept +repeated points to introduce points of non-differentiability and +discontinuity. + +A separate mapping from the FC registers to filter cutoff frequency +has been included for the MOS8580, and the mapping for the MOS6581 has +been refined. + + +Changes in reSID version 0.11 +----------------------------- + +A new clock() interface has been added. This function generates audio +samples into a buffer, greatly simplifying the task of writing driver +code for reSID. It also facilitates more advanced audio sample +generation, as described below. + +Three clocking methods are available: clocking at output sample +frequency, clocking at cycle frequency with linear sample +interpolation, and clocking at cycle frequency with audio resampling. + +Clocking at output sample frequency is fast, and yields acceptable +sound quality, except for the SID combined waveforms, which have a +very high frequency content. + +Clocking at cycle frequency with linear sample interpolation is +approximately five to ten times slower at 44.1kHz sampling frequency, +but the sound quality is improved because of the linear sample +interpolation, and because some sampling noise is removed by the SID +external filter, which attenuates signals above 16kHz. + +Finally, clocking at cycle frequency with audio resampling has a work +rate which is independent of the sampling frequency; it is rather +inversely proportional to the percentage of the bandwidth allocated +to the filter transition band. This implies that e.g. with the +transition band starting at ~ 20kHz, it is faster to generate 48kHz +than 44.1kHz samples. + +Audio resampling is the theoretically correct method for sample +generation, and delivers SID sound quality previously unheard of. This +should make connoisseurs nod in appreciation, and for some time to +come it could possibly also make people tear their hair over having to +buy state of the art hardware to handle the obscene workload in real +time. By trading off passband bandwidth for speed, real time +processing is possible on current hardware. A 60% passband bandwidth +is within the reach of reasonably fast machines, while maximum sound +quality at 90% passband bandwidth, requiring four times the processing +power, is not. Yet. + + +Changes in reSID version 0.10 +----------------------------- + +Libtool is now used to build the library. + +To keep the filters stable it is necessary to clock them at above +sample rate. The chip clocking code has been modified to only +"overclock" the filters, not the whole chip. This yields a +considerable speedup without noticeably lowering sound quality. Note +that this is aimed at slow hardware, if possible the 1 cycle clock +interface should be used to eliminate sampling noise. + + +Changes in reSID version 0.9 +---------------------------- + +The sum of the filter outputs is no longer weighted. + + +Changes in reSID version 0.8 +---------------------------- + +voice3off has no effect if voice 3 is routed through the filter. + + +Changes in reSID version 0.7 +---------------------------- + +The audio output filter in the C64, external to the SID chip, has been +modeled. + +The mapping function between the FC register and filter cutoff frequency can +now be specified with spline interpolation points. This facilitates +interactive modification of the mapping function by graphical presentation of +the interpolation curve. The implementation of this novel spline design is +fast and general purpose, and should be well suited for use in other projects +as well. + +Filtered output has been inverted compared to unfiltered output. + +Aging of the bus value obtained when reading write only registers has been +partly implemented. + +To facilitate offline storage the complete state of SID can be read and +written. + + +Changes in reSID version 0.6 +---------------------------- + +A special case in synchronization has been implemented. + +The Autoconf script is cleaned up to allow compilation in a separate directory. + + +Changes in reSID version 0.5 +---------------------------- + +Emulation of MOS8580 combined waveforms. + +Version string resid_version_string provided for e.g. Autoconf tests. +The string has C linkage. + + +Changes in reSID version 0.4 +---------------------------- + +The implementation of the ADSR delay bug has been refined and should now be +cycle exact. + +The patch for VICE has been removed since VICE 0.15 will include reSID support. + + +Changes in reSID version 0.3 +---------------------------- + +The reSID library has changed name from libmos6581.a to libresid.a + +The pulse+sawtooth combined waveform has been corrected. + +Pulse+test bit samples are implemented. + +The envelope rate periods have finally been exactly determined. + +A new SID bug, the ADSR boundary bug, has been discovered and implemented. +This bug makes it possible to step from envelope level 0x00 to 0xff or from +0xff to 0x00 in one step. + +One-cycle optimized overloads of the clock() functions have been implemented +to facilitate sampling at 1MHz. + +The code has been further optimized for speed. + + +Changes in reSID version 0.2 +---------------------------- + +The implementation of the Envelope Generator has been rewritten to handle +the infamous ADSR delay bug. All known envelope related bugs have been +corrected. + +The maximum filter resonance is lowered to keep the filter stable. + +The reSID API has been simplified. Reading write only registers is allowed. diff --git a/MCUME_teensy/teensy64/reSID/README b/MCUME_teensy/teensy64/reSID/README new file mode 100755 index 0000000..79da519 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/README @@ -0,0 +1,26 @@ +This is reSID, a reverse engineered software emulation of the MOS6581 SID +(Sound Interface Device). This chip was used in the Commodore 64 computer. + +reSID is free software. See the file COPYING for copying permission. + +reSID is a C++ library containing a complete emulation of the SID chip. +This library can be linked into programs emulating the MOS6510 MPU to +play music made for the Commodore 64 computer. reSID has been successfully +linked into VICE, a full-fledged Commodore 64 emulator, and SIDPLAY, a +popular SID tune player. The VICE home page is: +http://www.viceteam.org/ +A patch for SIDPLAY can be found on the SIDPLAY home page: +http://www.geocities.com/SiliconValley/Lakes/5147/ + +Various SID emulators exist, however reSID should still be of great +interest to Commodore 64 nostalgics. The emulator engine is cycle-based, +emulating the internal operations of the SID chip. SID's audio filter is +modeled as an actual two-integrator-loop biquadratic filter circuit. +The engine has been developed based on available information on SID, sampling +of the OSC3 and ENV3 registers, filter theory, and meticulous testing. +In short, a scientific approach has been taken to model the SID chip as +accurately as possible. + +To our knowledge reSID is by far the most accurate SID emulator ever created. +This comes at a price; what is considered a fairly fast CPU at the time of +this writing is needed to run the emulator. diff --git a/MCUME_teensy/teensy64/reSID/THANKS b/MCUME_teensy/teensy64/reSID/THANKS new file mode 100755 index 0000000..824c682 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/THANKS @@ -0,0 +1,87 @@ +reSID was written by Dag Lem. + +The project was started after reading an interview with Bob Yannes, the +head engineer of the SID chip. This interview was made by Andreas Varga, +with additional questions from Linus Walleij. The interview can be found on +the SID Homepage: +http://stud1.tuwien.ac.at/~e9426444/sidpage.html +The reverse engineering of the SID chip would not have been possible without +this interview. + +Also found on the SID Homepage is an examination of the SID noise waveform +written by Asger Alstrup. This article was of great help in reverse +engineering the complete algorithm for the noise waveform. + +Lars Haugseth has been invaluable in the testing of reSID. +In a matter of hours after hearing about my project, he had completed a 6510 +disassembler in Perl. The importance of this was not evident to me until the +next day when he had disassembled the music routine for "Outrun Remix" by +Geir Tjelta, made some changes to it, reassembled, and produced a file +containing 48K of SID register values. +The first tests of reSID were run on this file. +With an exceptional memory of Commodore 64 tunes Lars Haugseth has pointed +out several errors in reSID that are now corrected. + +Morten Rollan and Kre Gunnar Nesheim have provided interesting and insightful +information regarding digital filters. Kre Gunnar Nesheim has also kindly +provided a 1901 monitor and a C64C from his private computer museum. His C64C +was used to measure the MOS8580 filter cutoff characteristics. + +VICE has been an inspiration for this project, and testing of reSID has +been greatly simplified by VICEs -sounddev dump option. Teemu Rantanen +has written support for reSID in VICE, making it possible to choose at runtime +between his excellent SID emulation and, given enough CPU power, the reSID +emulator engine. Tibor Biczo, Andreas Boose, and Andr Fachat have provided +combined waveform samples for 6581 R1, R3, R4, and 8580 R5 SID chips. +The VICE home page is found at: +http://www.viceteam.org/ + +The author of SIDPLAY, Michael Schwendt, has implemented a patch to link +libsidplay with reSID. Using his excellent tune player he has pointed out +several bugs in reSID. He has also provided invaluable information related to +the bugs as basis for further investigation. Most notably, the infamous ADSR +delay bug, of which I was previously unaware, has finally been understood and +is now correctly implemented in reSID. The SIDPLAY home page is found at: +http://www.geocities.com/SiliconValley/Lakes/5147/ + +A bug report from Daniel Lacasse led to the discovery of a previously unknown +SID bug, the ADSR boundary bug. + +Anders degrd has explained aspects of analog electronics and audio +equipment. + +Bob Yannes has patiently answered questions and has provided lots of +technical information on the SID filter. Thank you Bob! + +Julius O. Smith III has provided much of the theoretical basis for the +audio resampling with his "Digital Audio Resampling Home Page": +http://www-ccrma.stanford.edu/~jos/resample/ + +Hrsfalvi, Levente has made a thorough investigation of the DC levels +in the MOS6581 chip. His results are available in C= Hacking Issue #20, +and form the basis of DC corrections in reSID. Levente found that each +voice independently contributes to the DC level in the mixer. Note +that some of the conclusions in the article are incorrect, as the +maximum and minimum voice output levels are interchanged. + +The author of SIDPLAY2, Simon White, has given a lot of feedback on +reSID. Most importantly he found and fixed a bug in the fast clock +version of the ADSR emulation. + +Laurent Ovaert found and fixed a bug in the fast version of the noise +register shift routine. + +Andreas Dehmel has reported all sorts of initialization and overflow +errors. + +Laurent Ganier demonstrated two crucial techniques for vectorizable +filter convolution in a patch. Firstly, he made the filter elements +correspond to the sampling frequency, allowing the linear +interpolation to be factorized out from the convolution. Secondly, he +duplicated elements in the sample ring buffer, achieving contiguous +storage of the samples. The current resampling implementation builds +on these ideas, improving on them by using shifted filter tables for +generalization and accuracy. + +Finally I would like to thank my business partner Stian W. Arnesen for +putting up with all this nonsense. diff --git a/MCUME_teensy/teensy64/reSID/TODO b/MCUME_teensy/teensy64/reSID/TODO new file mode 100755 index 0000000..4527dfa --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/TODO @@ -0,0 +1,8 @@ +* Determine the characteristics of the SID filter integrators. Spice + may perhaps be used to simulate the filter circuit. + +* Write documentation. Possibly a paper describing how SID was reverse + engineered. + +* Implement a SID tune player. A PSID player, VSID, is partly + implemented in VICE. diff --git a/MCUME_teensy/teensy64/reSID/envelope.cpp b/MCUME_teensy/teensy64/reSID/envelope.cpp new file mode 100755 index 0000000..915c4c4 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/envelope.cpp @@ -0,0 +1,231 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __ENVELOPE_CC__ +#include "envelope.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +EnvelopeGenerator::EnvelopeGenerator() +{ + reset(); +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void EnvelopeGenerator::reset() +{ + envelope_counter = 0; + + attack = 0; + decay = 0; + sustain = 0; + release = 0; + + gate = 0; + + rate_counter = 0; + exponential_counter = 0; + exponential_counter_period = 1; + + state = RELEASE; + rate_period = rate_counter_period[release]; + hold_zero = true; +} + + +// Rate counter periods are calculated from the Envelope Rates table in +// the Programmer's Reference Guide. The rate counter period is the number of +// cycles between each increment of the envelope counter. +// The rates have been verified by sampling ENV3. +// +// The rate counter is a 16 bit register which is incremented each cycle. +// When the counter reaches a specific comparison value, the envelope counter +// is incremented (attack) or decremented (decay/release) and the +// counter is zeroed. +// +// NB! Sampling ENV3 shows that the calculated values are not exact. +// It may seem like most calculated values have been rounded (.5 is rounded +// down) and 1 has beed added to the result. A possible explanation for this +// is that the SID designers have used the calculated values directly +// as rate counter comparison values, not considering a one cycle delay to +// zero the counter. This would yield an actual period of comparison value + 1. +// +// The time of the first envelope count can not be exactly controlled, except +// possibly by resetting the chip. Because of this we cannot do cycle exact +// sampling and must devise another method to calculate the rate counter +// periods. +// +// The exact rate counter periods can be determined e.g. by counting the number +// of cycles from envelope level 1 to envelope level 129, and dividing the +// number of cycles by 128. CIA1 timer A and B in linked mode can perform +// the cycle count. This is the method used to find the rates below. +// +// To avoid the ADSR delay bug, sampling of ENV3 should be done using +// sustain = release = 0. This ensures that the attack state will not lower +// the current rate counter period. +// +// The ENV3 sampling code below yields a maximum timing error of 14 cycles. +// lda #$01 +// l1: cmp $d41c +// bne l1 +// ... +// lda #$ff +// l2: cmp $d41c +// bne l2 +// +// This yields a maximum error for the calculated rate period of 14/128 cycles. +// The described method is thus sufficient for exact calculation of the rate +// periods. +// +const reg16 EnvelopeGenerator::rate_counter_period[] = { + 9, // 2ms*1.0MHz/256 = 7.81 + 32, // 8ms*1.0MHz/256 = 31.25 + 63, // 16ms*1.0MHz/256 = 62.50 + 95, // 24ms*1.0MHz/256 = 93.75 + 149, // 38ms*1.0MHz/256 = 148.44 + 220, // 56ms*1.0MHz/256 = 218.75 + 267, // 68ms*1.0MHz/256 = 265.63 + 313, // 80ms*1.0MHz/256 = 312.50 + 392, // 100ms*1.0MHz/256 = 390.63 + 977, // 250ms*1.0MHz/256 = 976.56 + 1954, // 500ms*1.0MHz/256 = 1953.13 + 3126, // 800ms*1.0MHz/256 = 3125.00 + 3907, // 1 s*1.0MHz/256 = 3906.25 + 11720, // 3 s*1.0MHz/256 = 11718.75 + 19532, // 5 s*1.0MHz/256 = 19531.25 + 31251 // 8 s*1.0MHz/256 = 31250.00 +}; + + +// For decay and release, the clock to the envelope counter is sequentially +// divided by 1, 2, 4, 8, 16, 30, 1 to create a piece-wise linear approximation +// of an exponential. The exponential counter period is loaded at the envelope +// counter values 255, 93, 54, 26, 14, 6, 0. The period can be different for the +// same envelope counter value, depending on whether the envelope has been +// rising (attack -> release) or sinking (decay/release). +// +// Since it is not possible to reset the rate counter (the test bit has no +// influence on the envelope generator whatsoever) a method must be devised to +// do cycle exact sampling of ENV3 to do the investigation. This is possible +// with knowledge of the rate period for A=0, found above. +// +// The CPU can be synchronized with ENV3 by first synchronizing with the rate +// counter by setting A=0 and wait in a carefully timed loop for the envelope +// counter _not_ to change for 9 cycles. We can then wait for a specific value +// of ENV3 with another timed loop to fully synchronize with ENV3. +// +// At the first period when an exponential counter period larger than one +// is used (decay or relase), one extra cycle is spent before the envelope is +// decremented. The envelope output is then delayed one cycle until the state +// is changed to attack. Now one cycle less will be spent before the envelope +// is incremented, and the situation is normalized. +// The delay is probably caused by the comparison with the exponential counter, +// and does not seem to affect the rate counter. This has been verified by +// timing 256 consecutive complete envelopes with A = D = R = 1, S = 0, using +// CIA1 timer A and B in linked mode. If the rate counter is not affected the +// period of each complete envelope is +// (255 + 162*1 + 39*2 + 28*4 + 12*8 + 8*16 + 6*30)*32 = 756*32 = 32352 +// which corresponds exactly to the timed value divided by the number of +// complete envelopes. +// NB! This one cycle delay is not modeled. + + +// From the sustain levels it follows that both the low and high 4 bits of the +// envelope counter are compared to the 4-bit sustain value. +// This has been verified by sampling ENV3. +// +const reg8 EnvelopeGenerator::sustain_level[] = { + 0x00, + 0x11, + 0x22, + 0x33, + 0x44, + 0x55, + 0x66, + 0x77, + 0x88, + 0x99, + 0xaa, + 0xbb, + 0xcc, + 0xdd, + 0xee, + 0xff, +}; + + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void EnvelopeGenerator::writeCONTROL_REG(reg8 control) +{ + reg8 gate_next = control & 0x01; + + // The rate counter is never reset, thus there will be a delay before the + // envelope counter starts counting up (attack) or down (release). + + // Gate bit on: Start attack, decay, sustain. + if (!gate && gate_next) { + state = ATTACK; + rate_period = rate_counter_period[attack]; + + // Switching to attack state unlocks the zero freeze. + hold_zero = false; + } + // Gate bit off: Start release. + else if (gate && !gate_next) { + state = RELEASE; + rate_period = rate_counter_period[release]; + } + + gate = gate_next; +} + +void EnvelopeGenerator::writeATTACK_DECAY(reg8 attack_decay) +{ + attack = (attack_decay >> 4) & 0x0f; + decay = attack_decay & 0x0f; + if (state == ATTACK) { + rate_period = rate_counter_period[attack]; + } + else if (state == DECAY_SUSTAIN) { + rate_period = rate_counter_period[decay]; + } +} + +void EnvelopeGenerator::writeSUSTAIN_RELEASE(reg8 sustain_release) +{ + sustain = (sustain_release >> 4) & 0x0f; + release = sustain_release & 0x0f; + if (state == RELEASE) { + rate_period = rate_counter_period[release]; + } +} + +reg8 EnvelopeGenerator::readENV() +{ + return output(); +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/envelope.h b/MCUME_teensy/teensy64/reSID/envelope.h new file mode 100755 index 0000000..7fd86ee --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/envelope.h @@ -0,0 +1,309 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __ENVELOPE_H__ +#define __ENVELOPE_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// A 15 bit counter is used to implement the envelope rates, in effect +// dividing the clock to the envelope counter by the currently selected rate +// period. +// In addition, another counter is used to implement the exponential envelope +// decay, in effect further dividing the clock to the envelope counter. +// The period of this counter is set to 1, 2, 4, 8, 16, 30 at the envelope +// counter values 255, 93, 54, 26, 14, 6, respectively. +// ---------------------------------------------------------------------------- +class EnvelopeGenerator +{ +public: + EnvelopeGenerator(); + + enum State { ATTACK, DECAY_SUSTAIN, RELEASE }; + + RESID_INLINE void clock(); + RESID_INLINE void clock(cycle_count delta_t); + void reset(); + + void writeCONTROL_REG(reg8); + void writeATTACK_DECAY(reg8); + void writeSUSTAIN_RELEASE(reg8); + reg8 readENV(); + + // 8-bit envelope output. + RESID_INLINE reg8 output(); + +protected: + reg16 rate_counter; + reg16 rate_period; + reg8 exponential_counter; + reg8 exponential_counter_period; + reg8 envelope_counter; + bool hold_zero; + + reg4 attack; + reg4 decay; + reg4 sustain; + reg4 release; + + reg8 gate; + + State state; + + // Lookup table to convert from attack, decay, or release value to rate + // counter period. + static const reg16 rate_counter_period[]; + + // The 16 selectable sustain levels. + static const reg8 sustain_level[]; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__ENVELOPE_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void EnvelopeGenerator::clock() +{ + // Check for ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can finally be stepped. + // This has been verified by sampling ENV3. + // + if (++rate_counter & 0x8000) { + ++rate_counter &= 0x7fff; + } + + if (rate_counter != rate_period) { + return; + } + + rate_counter = 0; + + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + // + if (state == ATTACK || ++exponential_counter == exponential_counter_period) + { + exponential_counter = 0; + + // Check whether the envelope counter is frozen at zero. + if (hold_zero) { + return; + } + + switch (state) { + case ATTACK: + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + // + ++envelope_counter &= 0xff; + if (envelope_counter == 0xff) { + state = DECAY_SUSTAIN; + rate_period = rate_counter_period[decay]; + } + break; + case DECAY_SUSTAIN: + if (envelope_counter != sustain_level[sustain]) { + --envelope_counter; + } + break; + case RELEASE: + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + // NB! The operation below requires two's complement integer. + // + --envelope_counter &= 0xff; + break; + } + + // Check for change of exponential counter period. + switch (envelope_counter) { + case 0xff: + exponential_counter_period = 1; + break; + case 0x5d: + exponential_counter_period = 2; + break; + case 0x36: + exponential_counter_period = 4; + break; + case 0x1a: + exponential_counter_period = 8; + break; + case 0x0e: + exponential_counter_period = 16; + break; + case 0x06: + exponential_counter_period = 30; + break; + case 0x00: + exponential_counter_period = 1; + + // When the envelope counter is changed to zero, it is frozen at zero. + // This has been verified by sampling ENV3. + hold_zero = true; + break; + } + } +} + + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void EnvelopeGenerator::clock(cycle_count delta_t) +{ + // Check for ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can finally be stepped. + // This has been verified by sampling ENV3. + // + + // NB! This requires two's complement integer. + int rate_step = rate_period - rate_counter; + if (rate_step <= 0) { + rate_step += 0x7fff; + } + + while (delta_t) { + if (delta_t < rate_step) { + rate_counter += delta_t; + if (rate_counter & 0x8000) { + ++rate_counter &= 0x7fff; + } + return; + } + + rate_counter = 0; + delta_t -= rate_step; + + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + // + if (state == ATTACK || ++exponential_counter == exponential_counter_period) + { + exponential_counter = 0; + + // Check whether the envelope counter is frozen at zero. + if (hold_zero) { + rate_step = rate_period; + continue; + } + + switch (state) { + case ATTACK: + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + // + ++envelope_counter &= 0xff; + if (envelope_counter == 0xff) { + state = DECAY_SUSTAIN; + rate_period = rate_counter_period[decay]; + } + break; + case DECAY_SUSTAIN: + if (envelope_counter != sustain_level[sustain]) { + --envelope_counter; + } + break; + case RELEASE: + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + // NB! The operation below requires two's complement integer. + // + --envelope_counter &= 0xff; + break; + } + + // Check for change of exponential counter period. + switch (envelope_counter) { + case 0xff: + exponential_counter_period = 1; + break; + case 0x5d: + exponential_counter_period = 2; + break; + case 0x36: + exponential_counter_period = 4; + break; + case 0x1a: + exponential_counter_period = 8; + break; + case 0x0e: + exponential_counter_period = 16; + break; + case 0x06: + exponential_counter_period = 30; + break; + case 0x00: + exponential_counter_period = 1; + + // When the envelope counter is changed to zero, it is frozen at zero. + // This has been verified by sampling ENV3. + hold_zero = true; + break; + } + } + + rate_step = rate_period; + } +} + + +// ---------------------------------------------------------------------------- +// Read the envelope generator output. +// ---------------------------------------------------------------------------- +RESID_INLINE +reg8 EnvelopeGenerator::output() +{ + return envelope_counter; +} + +#endif // RESID_INLINING || defined(__ENVELOPE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __ENVELOPE_H__ diff --git a/MCUME_teensy/teensy64/reSID/extfilt.cpp b/MCUME_teensy/teensy64/reSID/extfilt.cpp new file mode 100755 index 0000000..e9747f0 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/extfilt.cpp @@ -0,0 +1,98 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __EXTFILT_CC__ +#include "extfilt.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +ExternalFilter::ExternalFilter() +{ + reset(); + enable_filter(true); + set_sampling_parameter(15915.6); + //set_chip_model(MOS6581); + {//instead: + mixer_DC = ((((0x800 - 0x380) + 0x800)*0xff*3 - 0xfff*0xff/18) >> 7)*0x0f; + } +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void ExternalFilter::enable_filter(bool enable) +{ + enabled = enable; +} + + +// ---------------------------------------------------------------------------- +// Setup of the external filter sampling parameters. +// ---------------------------------------------------------------------------- +void ExternalFilter::set_sampling_parameter(float pass_freq) +{ + static const float pi = 3.1415926535897932385; + + // Low-pass: R = 10kOhm, C = 1000pF; w0l = 1/RC = 1/(1e4*1e-9) = 100000 + // High-pass: R = 1kOhm, C = 10uF; w0h = 1/RC = 1/(1e3*1e-5) = 100 + // Multiply with 1.048576 to facilitate division by 1 000 000 by right- + // shifting 20 times (2 ^ 20 = 1048576). + + w0hp = 105; + w0lp = (sound_sample) (pass_freq * (2.0 * pi * 1.048576)); + if (w0lp > 104858) + w0lp = 104858; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void ExternalFilter::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + // Maximum mixer DC output level; to be removed if the external + // filter is turned off: ((wave DC + voice DC)*voices + mixer DC)*volume + // See voice.cc and filter.cc for an explanation of the values. + mixer_DC = ((((0x800 - 0x380) + 0x800)*0xff*3 - 0xfff*0xff/18) >> 7)*0x0f; + } + else { + // No DC offsets in the MOS8580. + mixer_DC = 0; + } +} +*/ + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void ExternalFilter::reset() +{ + // State of filter. + Vlp = 0; + Vhp = 0; + Vo = 0; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/extfilt.h b/MCUME_teensy/teensy64/reSID/extfilt.h new file mode 100755 index 0000000..7b67e52 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/extfilt.h @@ -0,0 +1,169 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __EXTFILT_H__ +#define __EXTFILT_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// The audio output stage in a Commodore 64 consists of two STC networks, +// a low-pass filter with 3-dB frequency 16kHz followed by a high-pass +// filter with 3-dB frequency 16Hz (the latter provided an audio equipment +// input impedance of 1kOhm). +// The STC networks are connected with a BJT supposedly meant to act as +// a unity gain buffer, which is not really how it works. A more elaborate +// model would include the BJT, however DC circuit analysis yields BJT +// base-emitter and emitter-base impedances sufficiently low to produce +// additional low-pass and high-pass 3dB-frequencies in the order of hundreds +// of kHz. This calls for a sampling frequency of several MHz, which is far +// too high for practical use. +// ---------------------------------------------------------------------------- +class ExternalFilter +{ +public: + ExternalFilter(); + + void enable_filter(bool enable); + void set_sampling_parameter(float pass_freq); + //void set_chip_model(chip_model model); + + RESID_INLINE void clock(sound_sample Vi); + RESID_INLINE void clock(cycle_count delta_t, sound_sample Vi); + void reset(); + + // Audio output (20 bits). + RESID_INLINE sound_sample output(); + +protected: + // Filter enabled. + bool enabled; + + // Maximum mixer DC offset. + sound_sample mixer_DC; + + // State of filters. + sound_sample Vlp; // lowpass + sound_sample Vhp; // highpass + sound_sample Vo; + + // Cutoff frequencies. + sound_sample w0lp; + sound_sample w0hp; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__EXTFILT_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void ExternalFilter::clock(sound_sample Vi) +{ + // This is handy for testing. + if (!enabled) { + // Remove maximum DC level since there is no filter to do it. + Vlp = Vhp = 0; + Vo = Vi - mixer_DC; + return; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vo = Vlp - Vhp; + // Vlp = Vlp + w0lp*(Vi - Vlp)*delta_t; + // Vhp = Vhp + w0hp*(Vlp - Vhp)*delta_t; + + sound_sample dVlp = (w0lp >> 8)*(Vi - Vlp) >> 12; + sound_sample dVhp = w0hp*(Vlp - Vhp) >> 20; + Vo = Vlp - Vhp; + Vlp += dVlp; + Vhp += dVhp; +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void ExternalFilter::clock(cycle_count delta_t, + sound_sample Vi) +{ + // This is handy for testing. + if (!enabled) { + // Remove maximum DC level since there is no filter to do it. + Vlp = Vhp = 0; + Vo = Vi - mixer_DC; + return; + } + + // Maximum delta cycles for the external filter to work satisfactorily + // is approximately 8. + cycle_count delta_t_flt = 8; + + while (delta_t) { + if (delta_t < delta_t_flt) { + delta_t_flt = delta_t; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vo = Vlp - Vhp; + // Vlp = Vlp + w0lp*(Vi - Vlp)*delta_t; + // Vhp = Vhp + w0hp*(Vlp - Vhp)*delta_t; + + sound_sample dVlp = (w0lp*delta_t_flt >> 8)*(Vi - Vlp) >> 12; + sound_sample dVhp = w0hp*delta_t_flt*(Vlp - Vhp) >> 20; + Vo = Vlp - Vhp; + Vlp += dVlp; + Vhp += dVhp; + + delta_t -= delta_t_flt; + } +} + + +// ---------------------------------------------------------------------------- +// Audio output (19.5 bits). +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample ExternalFilter::output() +{ + return Vo; +} + +#endif // RESID_INLINING || defined(__EXTFILT_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __EXTFILT_H__ diff --git a/MCUME_teensy/teensy64/reSID/filter.cpp b/MCUME_teensy/teensy64/reSID/filter.cpp new file mode 100755 index 0000000..8240b11 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/filter.cpp @@ -0,0 +1,325 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __FILTER_CC__ +#include "filter.h" + +RESID_NAMESPACE_START + +// Maximum cutoff frequency is specified as +// FCmax = 2.6e-5/C = 2.6e-5/2200e-12 = 11818. +// +// Measurements indicate a cutoff frequency range of approximately +// 220Hz - 18kHz on a MOS6581 fitted with 470pF capacitors. The function +// mapping FC to cutoff frequency has the shape of the tanh function, with +// a discontinuity at FCHI = 0x80. +// In contrast, the MOS8580 almost perfectly corresponds with the +// specification of a linear mapping from 30Hz to 12kHz. +// +// The mappings have been measured by feeding the SID with an external +// signal since the chip itself is incapable of generating waveforms of +// higher fundamental frequency than 4kHz. It is best to use the bandpass +// output at full resonance to pick out the cutoff frequency at any given +// FC setting. +// +// The mapping function is specified with spline interpolation points and +// the function values are retrieved via table lookup. +// +// NB! Cutoff frequency characteristics may vary, we have modeled two +// particular Commodore 64s. +/* +const fc_point Filter::f0_points_6581[] = +{ + // FC f FCHI FCLO + // ---------------------------- + { 0, 220 }, // 0x00 - repeated end point + { 0, 220 }, // 0x00 + { 128, 230 }, // 0x10 + { 256, 250 }, // 0x20 + { 384, 300 }, // 0x30 + { 512, 420 }, // 0x40 + { 640, 780 }, // 0x50 + { 768, 1600 }, // 0x60 + { 832, 2300 }, // 0x68 + { 896, 3200 }, // 0x70 + { 960, 4300 }, // 0x78 + { 992, 5000 }, // 0x7c + { 1008, 5400 }, // 0x7e + { 1016, 5700 }, // 0x7f + { 1023, 6000 }, // 0x7f 0x07 + { 1023, 6000 }, // 0x7f 0x07 - discontinuity + { 1024, 4600 }, // 0x80 - + { 1024, 4600 }, // 0x80 + { 1032, 4800 }, // 0x81 + { 1056, 5300 }, // 0x84 + { 1088, 6000 }, // 0x88 + { 1120, 6600 }, // 0x8c + { 1152, 7200 }, // 0x90 + { 1280, 9500 }, // 0xa0 + { 1408, 12000 }, // 0xb0 + { 1536, 14500 }, // 0xc0 + { 1664, 16000 }, // 0xd0 + { 1792, 17100 }, // 0xe0 + { 1920, 17700 }, // 0xf0 + { 2047, 18000 }, // 0xff 0x07 + { 2047, 18000 } // 0xff 0x07 - repeated end point +}; +*/ +/* +const fc_point Filter::f0_points_8580[] = +{ + // FC f FCHI FCLO + // ---------------------------- + { 0, 0 }, // 0x00 - repeated end point + { 0, 0 }, // 0x00 + { 128, 800 }, // 0x10 + { 256, 1600 }, // 0x20 + { 384, 2500 }, // 0x30 + { 512, 3300 }, // 0x40 + { 640, 4100 }, // 0x50 + { 768, 4800 }, // 0x60 + { 896, 5600 }, // 0x70 + { 1024, 6500 }, // 0x80 + { 1152, 7500 }, // 0x90 + { 1280, 8400 }, // 0xa0 + { 1408, 9200 }, // 0xb0 + { 1536, 9800 }, // 0xc0 + { 1664, 10500 }, // 0xd0 + { 1792, 11000 }, // 0xe0 + { 1920, 11700 }, // 0xf0 + { 2047, 12500 }, // 0xff 0x07 + { 2047, 12500 } // 0xff 0x07 - repeated end point +}; +*/ + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +Filter::Filter() +{ + fc = 0; + + res = 0; + + filt = 0; + + voice3off = 0; + + hp_bp_lp = 0; + + vol = 0; + + // State of filter. + Vhp = 0; + Vbp = 0; + Vlp = 0; + Vnf = 0; + + enable_filter(true); +/* + // Create mappings from FC to cutoff frequency. + interpolate(f0_points_6581, f0_points_6581 + + sizeof(f0_points_6581)/sizeof(*f0_points_6581) - 1, + PointPlotter(f0_6581), 1.0); + + interpolate(f0_points_8580, f0_points_8580 + + sizeof(f0_points_8580)/sizeof(*f0_points_8580) - 1, + PointPlotter(f0_8580), 1.0); +*/ +// set_chip_model(MOS6581); +{//instead: + mixer_DC = -0xfff*0xff/18 >> 7; + + //f0 = f0_6581; + // f0_points = f0_points_6581; + // f0_count = sizeof(f0_points_6581)/sizeof(*f0_points_6581); + set_w0(); + set_Q(); +} + +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void Filter::enable_filter(bool enable) +{ + enabled = enable; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void Filter::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + // The mixer has a small input DC offset. This is found as follows: + // + // The "zero" output level of the mixer measured on the SID audio + // output pin is 5.50V at zero volume, and 5.44 at full + // volume. This yields a DC offset of (5.44V - 5.50V) = -0.06V. + // + // The DC offset is thus -0.06V/1.05V ~ -1/18 of the dynamic range + // of one voice. See voice.cc for measurement of the dynamic + // range. + + mixer_DC = -0xfff*0xff/18 >> 7; + + f0 = f0_6581; + f0_points = f0_points_6581; + f0_count = sizeof(f0_points_6581)/sizeof(*f0_points_6581); + } + else { + // No DC offsets in the MOS8580. + mixer_DC = 0; + + f0 = f0_8580; + f0_points = f0_points_8580; + f0_count = sizeof(f0_points_8580)/sizeof(*f0_points_8580); + } + + set_w0(); + set_Q(); +} +*/ + + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void Filter::reset() +{ + fc = 0; + + res = 0; + + filt = 0; + + voice3off = 0; + + hp_bp_lp = 0; + + vol = 0; + + // State of filter. + Vhp = 0; + Vbp = 0; + Vlp = 0; + Vnf = 0; + + set_w0(); + set_Q(); +} + + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void Filter::writeFC_LO(reg8 fc_lo) +{ + fc = (fc & 0x7f8) | (fc_lo & 0x007); + set_w0(); +} + +void Filter::writeFC_HI(reg8 fc_hi) +{ + fc = (((unsigned int)fc_hi << 3) & 0x7f8) | (fc & 0x007); + set_w0(); +} + +void Filter::writeRES_FILT(reg8 res_filt) +{ + res = (res_filt >> 4) & 0x0f; + set_Q(); + + filt = res_filt & 0x0f; +} + +void Filter::writeMODE_VOL(reg8 mode_vol) +{ + voice3off = mode_vol & 0x80; + + hp_bp_lp = (mode_vol >> 4) & 0x07; + + vol = mode_vol & 0x0f; +} + +// Set filter cutoff frequency. +void Filter::set_w0() +{ + const float pi = 3.1415926535897932385; + + // Multiply with 1.048576 to facilitate division by 1 000 000 by right- + // shifting 20 times (2 ^ 20 = 1048576). + w0 = static_cast(2.0*pi*f0[fc]*1.048576); + + // Limit f0 to 16kHz to keep 1 cycle filter stable. + const sound_sample w0_max_1 = static_cast(2.0*pi*16000.0*1.048576); + w0_ceil_1 = w0 <= w0_max_1 ? w0 : w0_max_1; + + // Limit f0 to 4kHz to keep delta_t cycle filter stable. + const sound_sample w0_max_dt = static_cast(2.0*pi*4000.0*1.048576); + w0_ceil_dt = w0 <= w0_max_dt ? w0 : w0_max_dt; +} + +// Set filter resonance. +void Filter::set_Q() +{ + // Q is controlled linearly by res. Q has approximate range [0.707, 1.7]. + // As resonance is increased, the filter must be clocked more often to keep + // stable. + + // The coefficient 1024 is dispensed of later by right-shifting 10 times + // (2 ^ 10 = 1024). + _1024_div_Q = static_cast(1024.0/(0.707 + 1.0*res/15.0)); +} + +// ---------------------------------------------------------------------------- +// Spline functions. +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +// Return the array of spline interpolation points used to map the FC register +// to filter cutoff frequency. +// ---------------------------------------------------------------------------- +/* +void Filter::fc_default(const fc_point*& points, int& count) +{ + points = f0_points; + count = f0_count; +} +*/ +// ---------------------------------------------------------------------------- +// Given an array of interpolation points p with n points, the following +// statement will specify a new FC mapping: +// interpolate(p, p + n - 1, filter.fc_plotter(), 1.0); +// Note that the x range of the interpolation points *must* be [0, 2047], +// and that additional end points *must* be present since the end points +// are not interpolated. +// ---------------------------------------------------------------------------- +/* +PointPlotter Filter::fc_plotter() +{ + return PointPlotter(f0); +} +*/ +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/filter.h b/MCUME_teensy/teensy64/reSID/filter.h new file mode 100755 index 0000000..24cc5ce --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/filter.h @@ -0,0 +1,539 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __FILTER_H__ +#define __FILTER_H__ + +#include "siddefs.h" +//#include "spline.h" +#include "filter6581.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// The SID filter is modeled with a two-integrator-loop biquadratic filter, +// which has been confirmed by Bob Yannes to be the actual circuit used in +// the SID chip. +// +// Measurements show that excellent emulation of the SID filter is achieved, +// except when high resonance is combined with high sustain levels. +// In this case the SID op-amps are performing less than ideally and are +// causing some peculiar behavior of the SID filter. This however seems to +// have more effect on the overall amplitude than on the color of the sound. +// +// The theory for the filter circuit can be found in "Microelectric Circuits" +// by Adel S. Sedra and Kenneth C. Smith. +// The circuit is modeled based on the explanation found there except that +// an additional inverter is used in the feedback from the bandpass output, +// allowing the summer op-amp to operate in single-ended mode. This yields +// inverted filter outputs with levels independent of Q, which corresponds with +// the results obtained from a real SID. +// +// We have been able to model the summer and the two integrators of the circuit +// to form components of an IIR filter. +// Vhp is the output of the summer, Vbp is the output of the first integrator, +// and Vlp is the output of the second integrator in the filter circuit. +// +// According to Bob Yannes, the active stages of the SID filter are not really +// op-amps. Rather, simple NMOS inverters are used. By biasing an inverter +// into its region of quasi-linear operation using a feedback resistor from +// input to output, a MOS inverter can be made to act like an op-amp for +// small signals centered around the switching threshold. +// +// Qualified guesses at SID filter schematics are depicted below. +// +// SID filter +// ---------- +// +// ----------------------------------------------- +// | | +// | ---Rq-- | +// | | | | +// | --------------|--R-----[A>--|--R-----[A>--| +// | | | | +// vi -----R1-- | | | +// +// vhp vbp vlp +// +// +// vi - input voltage +// vhp - highpass output +// vbp - bandpass output +// vlp - lowpass output +// [A> - op-amp +// R1 - summer resistor +// Rq - resistor array controlling resonance (4 resistors) +// R - NMOS FET voltage controlled resistor controlling cutoff frequency +// Rs - shunt resitor +// C - capacitor +// +// +// +// SID integrator +// -------------- +// +// V+ +// +// | +// | +// -----| +// | | +// | ||-- +// -|| +// ---C--- ||-> +// | | | +// |---Rs-----------|---- vo +// | | +// | ||-- +// vi ---- -----|------------|| +// | ^ | ||-> +// |___| | | +// ----- | | +// | | | +// |---R2-- | +// | +// R1 V- +// | +// | +// +// Vw +// +// ---------------------------------------------------------------------------- +class Filter +{ +public: + Filter(); + + void enable_filter(bool enable); + // void set_chip_model(chip_model model); + + RESID_INLINE + void clock(sound_sample voice1, sound_sample voice2, sound_sample voice3, + sound_sample ext_in); + RESID_INLINE + void clock(cycle_count delta_t, + sound_sample voice1, sound_sample voice2, sound_sample voice3, + sound_sample ext_in); + void reset(); + + // Write registers. + void writeFC_LO(reg8); + void writeFC_HI(reg8); + void writeRES_FILT(reg8); + void writeMODE_VOL(reg8); + + // SID audio output (16 bits). + sound_sample output(); + + // Spline functions. + // void fc_default(const fc_point*& points, int& count); + // PointPlotter fc_plotter(); + +protected: + void set_w0(); + void set_Q(); + + // Filter enabled. + bool enabled; + + // Filter cutoff frequency. + reg12 fc; + + // Filter resonance. + reg8 res; + + // Selects which inputs to route through filter. + reg8 filt; + + // Switch voice 3 off. + reg8 voice3off; + + // Highpass, bandpass, and lowpass filter modes. + reg8 hp_bp_lp; + + // Output master volume. + reg4 vol; + + // Mixer DC offset. + sound_sample mixer_DC; + + // State of filter. + sound_sample Vhp; // highpass + sound_sample Vbp; // bandpass + sound_sample Vlp; // lowpass + sound_sample Vnf; // not filtered + + // Cutoff frequency, resonance. + sound_sample w0, w0_ceil_1, w0_ceil_dt; + sound_sample _1024_div_Q; + + // Cutoff frequency tables. + // FC is an 11 bit register. + //sound_sample f0_6581[2048]; + //sound_sample f0_8580[2048]; + //sound_sample* f0; + //const sound_sample* f0 = filter6581; + const short* f0 = filter6581; + //const static fc_point f0_points_6581[]; + + //const static fc_point f0_points_8580[]; + //const fc_point* f0_points; + //int f0_count; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__FILTER_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void Filter::clock(sound_sample voice1, + sound_sample voice2, + sound_sample voice3, + sound_sample ext_in) +{ + // Scale each voice down from 20 to 13 bits. + voice1 >>= 7; + voice2 >>= 7; + + // NB! Voice 3 is not silenced by voice3off if it is routed through + // the filter. + if (voice3off && !(filt & 0x04)) { + voice3 = 0; + } + else { + voice3 >>= 7; + } + + ext_in >>= 7; + + // This is handy for testing. + if (!enabled) { + Vnf = voice1 + voice2 + voice3 + ext_in; + Vhp = Vbp = Vlp = 0; + return; + } + + // Route voices into or around filter. + // The code below is expanded to a switch for faster execution. + // (filt1 ? Vi : Vnf) += voice1; + // (filt2 ? Vi : Vnf) += voice2; + // (filt3 ? Vi : Vnf) += voice3; + + sound_sample Vi; + + switch (filt) { + default: + case 0x0: + Vi = 0; + Vnf = voice1 + voice2 + voice3 + ext_in; + break; + case 0x1: + Vi = voice1; + Vnf = voice2 + voice3 + ext_in; + break; + case 0x2: + Vi = voice2; + Vnf = voice1 + voice3 + ext_in; + break; + case 0x3: + Vi = voice1 + voice2; + Vnf = voice3 + ext_in; + break; + case 0x4: + Vi = voice3; + Vnf = voice1 + voice2 + ext_in; + break; + case 0x5: + Vi = voice1 + voice3; + Vnf = voice2 + ext_in; + break; + case 0x6: + Vi = voice2 + voice3; + Vnf = voice1 + ext_in; + break; + case 0x7: + Vi = voice1 + voice2 + voice3; + Vnf = ext_in; + break; + case 0x8: + Vi = ext_in; + Vnf = voice1 + voice2 + voice3; + break; + case 0x9: + Vi = voice1 + ext_in; + Vnf = voice2 + voice3; + break; + case 0xa: + Vi = voice2 + ext_in; + Vnf = voice1 + voice3; + break; + case 0xb: + Vi = voice1 + voice2 + ext_in; + Vnf = voice3; + break; + case 0xc: + Vi = voice3 + ext_in; + Vnf = voice1 + voice2; + break; + case 0xd: + Vi = voice1 + voice3 + ext_in; + Vnf = voice2; + break; + case 0xe: + Vi = voice2 + voice3 + ext_in; + Vnf = voice1; + break; + case 0xf: + Vi = voice1 + voice2 + voice3 + ext_in; + Vnf = 0; + break; + } + + // delta_t = 1 is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. + + // Calculate filter outputs. + // Vhp = Vbp/Q - Vlp - Vi; + // dVbp = -w0*Vhp*dt; + // dVlp = -w0*Vbp*dt; + + sound_sample dVbp = (w0_ceil_1*Vhp >> 20); + sound_sample dVlp = (w0_ceil_1*Vbp >> 20); + Vbp -= dVbp; + Vlp -= dVlp; + Vhp = (Vbp*_1024_div_Q >> 10) - Vlp - Vi; +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void Filter::clock(cycle_count delta_t, + sound_sample voice1, + sound_sample voice2, + sound_sample voice3, + sound_sample ext_in) +{ + // Scale each voice down from 20 to 13 bits. + voice1 >>= 7; + voice2 >>= 7; + + // NB! Voice 3 is not silenced by voice3off if it is routed through + // the filter. + if (voice3off && !(filt & 0x04)) { + voice3 = 0; + } + else { + voice3 >>= 7; + } + + ext_in >>= 7; + + // Enable filter on/off. + // This is not really part of SID, but is useful for testing. + // On slow CPUs it may be necessary to bypass the filter to lower the CPU + // load. + if (!enabled) { + Vnf = voice1 + voice2 + voice3 + ext_in; + Vhp = Vbp = Vlp = 0; + return; + } + + // Route voices into or around filter. + // The code below is expanded to a switch for faster execution. + // (filt1 ? Vi : Vnf) += voice1; + // (filt2 ? Vi : Vnf) += voice2; + // (filt3 ? Vi : Vnf) += voice3; + + sound_sample Vi; + + switch (filt) { + default: + case 0x0: + Vi = 0; + Vnf = voice1 + voice2 + voice3 + ext_in; + break; + case 0x1: + Vi = voice1; + Vnf = voice2 + voice3 + ext_in; + break; + case 0x2: + Vi = voice2; + Vnf = voice1 + voice3 + ext_in; + break; + case 0x3: + Vi = voice1 + voice2; + Vnf = voice3 + ext_in; + break; + case 0x4: + Vi = voice3; + Vnf = voice1 + voice2 + ext_in; + break; + case 0x5: + Vi = voice1 + voice3; + Vnf = voice2 + ext_in; + break; + case 0x6: + Vi = voice2 + voice3; + Vnf = voice1 + ext_in; + break; + case 0x7: + Vi = voice1 + voice2 + voice3; + Vnf = ext_in; + break; + case 0x8: + Vi = ext_in; + Vnf = voice1 + voice2 + voice3; + break; + case 0x9: + Vi = voice1 + ext_in; + Vnf = voice2 + voice3; + break; + case 0xa: + Vi = voice2 + ext_in; + Vnf = voice1 + voice3; + break; + case 0xb: + Vi = voice1 + voice2 + ext_in; + Vnf = voice3; + break; + case 0xc: + Vi = voice3 + ext_in; + Vnf = voice1 + voice2; + break; + case 0xd: + Vi = voice1 + voice3 + ext_in; + Vnf = voice2; + break; + case 0xe: + Vi = voice2 + voice3 + ext_in; + Vnf = voice1; + break; + case 0xf: + Vi = voice1 + voice2 + voice3 + ext_in; + Vnf = 0; + break; + } + + // Maximum delta cycles for the filter to work satisfactorily under current + // cutoff frequency and resonance constraints is approximately 8. + cycle_count delta_t_flt = 8; + + while (delta_t) { + if (delta_t < delta_t_flt) { + delta_t_flt = delta_t; + } + + // delta_t is converted to seconds given a 1MHz clock by dividing + // with 1 000 000. This is done in two operations to avoid integer + // multiplication overflow. + + // Calculate filter outputs. + // Vhp = Vbp/Q - Vlp - Vi; + // dVbp = -w0*Vhp*dt; + // dVlp = -w0*Vbp*dt; + sound_sample w0_delta_t = w0_ceil_dt * delta_t_flt >> 6; + + sound_sample dVbp = (w0_delta_t*Vhp >> 14); + sound_sample dVlp = (w0_delta_t*Vbp >> 14); + Vbp -= dVbp; + Vlp -= dVlp; + Vhp = (Vbp*_1024_div_Q >> 10) - Vlp - Vi; + + delta_t -= delta_t_flt; + } +} + + +// ---------------------------------------------------------------------------- +// SID audio output (20 bits). +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample Filter::output() +{ + // This is handy for testing. + if (!enabled) { + return (Vnf + mixer_DC)*static_cast(vol); + } + + // Mix highpass, bandpass, and lowpass outputs. The sum is not + // weighted, this can be confirmed by sampling sound output for + // e.g. bandpass, lowpass, and bandpass+lowpass from a SID chip. + + // The code below is expanded to a switch for faster execution. + // if (hp) Vf += Vhp; + // if (bp) Vf += Vbp; + // if (lp) Vf += Vlp; + + sound_sample Vf; + + switch (hp_bp_lp) { + default: + case 0x0: + Vf = 0; + break; + case 0x1: + Vf = Vlp; + break; + case 0x2: + Vf = Vbp; + break; + case 0x3: + Vf = Vlp + Vbp; + break; + case 0x4: + Vf = Vhp; + break; + case 0x5: + Vf = Vlp + Vhp; + break; + case 0x6: + Vf = Vbp + Vhp; + break; + case 0x7: + Vf = Vlp + Vbp + Vhp; + break; + } + + // Sum non-filtered and filtered output. + // Multiply the sum with volume. + return (Vnf + Vf + mixer_DC)*static_cast(vol); +} + +#endif // RESID_INLINING || defined(__FILTER_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __FILTER_H__ diff --git a/MCUME_teensy/teensy64/reSID/filter6581.h b/MCUME_teensy/teensy64/reSID/filter6581.h new file mode 100755 index 0000000..2f7f796 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/filter6581.h @@ -0,0 +1,131 @@ + +const short filter6581[] = { +0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, 0x00DC, +0x00DC, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, 0x00DD, +0x00DD, 0x00DD, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, 0x00DE, +0x00DE, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, 0x00DF, +0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E0, 0x00E1, 0x00E1, 0x00E1, +0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E1, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E2, +0x00E2, 0x00E2, 0x00E2, 0x00E2, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E3, 0x00E4, 0x00E4, +0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, 0x00E5, +0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E6, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, 0x00E7, +0x00E7, 0x00E7, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E8, 0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00E9, +0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00EB, +0x00EB, 0x00EB, 0x00EB, 0x00EB, 0x00EB, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00EC, 0x00ED, 0x00ED, 0x00ED, +0x00ED, 0x00ED, 0x00ED, 0x00ED, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EE, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, +0x00EF, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F0, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F1, 0x00F2, 0x00F2, 0x00F2, +0x00F2, 0x00F2, 0x00F3, 0x00F3, 0x00F3, 0x00F3, 0x00F3, 0x00F4, 0x00F4, 0x00F4, 0x00F4, 0x00F4, 0x00F5, 0x00F5, 0x00F5, 0x00F5, +0x00F5, 0x00F6, 0x00F6, 0x00F6, 0x00F6, 0x00F7, 0x00F7, 0x00F7, 0x00F7, 0x00F8, 0x00F8, 0x00F8, 0x00F8, 0x00F9, 0x00F9, 0x00F9, +0x00FA, 0x00FA, 0x00FA, 0x00FA, 0x00FB, 0x00FB, 0x00FB, 0x00FB, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FD, 0x00FD, 0x00FD, 0x00FE, +0x00FE, 0x00FE, 0x00FE, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0101, 0x0101, 0x0102, 0x0102, +0x0102, 0x0103, 0x0103, 0x0103, 0x0103, 0x0104, 0x0104, 0x0104, 0x0105, 0x0105, 0x0105, 0x0105, 0x0106, 0x0106, 0x0106, 0x0107, +0x0107, 0x0107, 0x0108, 0x0108, 0x0108, 0x0109, 0x0109, 0x0109, 0x010A, 0x010A, 0x010A, 0x010B, 0x010B, 0x010B, 0x010C, 0x010C, +0x010C, 0x010D, 0x010D, 0x010D, 0x010E, 0x010E, 0x010E, 0x010F, 0x010F, 0x0110, 0x0110, 0x0110, 0x0111, 0x0111, 0x0111, 0x0112, +0x0112, 0x0113, 0x0113, 0x0114, 0x0114, 0x0114, 0x0115, 0x0115, 0x0116, 0x0116, 0x0117, 0x0117, 0x0117, 0x0118, 0x0118, 0x0119, +0x0119, 0x011A, 0x011A, 0x011B, 0x011B, 0x011C, 0x011C, 0x011D, 0x011D, 0x011E, 0x011E, 0x011F, 0x011F, 0x0120, 0x0121, 0x0121, +0x0122, 0x0122, 0x0123, 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0126, 0x0127, 0x0128, 0x0128, 0x0129, 0x012A, 0x012A, 0x012B, +0x012C, 0x012C, 0x012D, 0x012D, 0x012E, 0x012F, 0x012F, 0x0130, 0x0131, 0x0131, 0x0132, 0x0132, 0x0133, 0x0134, 0x0134, 0x0135, +0x0136, 0x0136, 0x0137, 0x0137, 0x0138, 0x0138, 0x0139, 0x013A, 0x013A, 0x013B, 0x013B, 0x013C, 0x013D, 0x013D, 0x013E, 0x013E, +0x013F, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0143, 0x0143, 0x0144, 0x0144, 0x0145, 0x0146, 0x0146, 0x0147, 0x0148, 0x0148, +0x0149, 0x0149, 0x014A, 0x014B, 0x014B, 0x014C, 0x014D, 0x014E, 0x014E, 0x014F, 0x0150, 0x0150, 0x0151, 0x0152, 0x0153, 0x0153, +0x0154, 0x0155, 0x0156, 0x0156, 0x0157, 0x0158, 0x0159, 0x015A, 0x015B, 0x015B, 0x015C, 0x015D, 0x015E, 0x015F, 0x0160, 0x0161, +0x0162, 0x0163, 0x0164, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169, 0x016A, 0x016B, 0x016C, 0x016D, 0x016E, 0x016F, 0x0171, 0x0172, +0x0173, 0x0174, 0x0175, 0x0177, 0x0178, 0x0179, 0x017A, 0x017C, 0x017D, 0x017F, 0x0180, 0x0181, 0x0183, 0x0184, 0x0186, 0x0187, +0x0189, 0x018A, 0x018C, 0x018D, 0x018F, 0x0190, 0x0192, 0x0194, 0x0195, 0x0197, 0x0199, 0x019A, 0x019C, 0x019E, 0x01A0, 0x01A2, +0x01A4, 0x01A5, 0x01A7, 0x01A9, 0x01AB, 0x01AD, 0x01AF, 0x01B1, 0x01B3, 0x01B4, 0x01B6, 0x01B8, 0x01BA, 0x01BC, 0x01BE, 0x01C0, +0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC, 0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x01DE, 0x01E0, +0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC, 0x01EF, 0x01F1, 0x01F3, 0x01F5, 0x01F7, 0x01F9, 0x01FC, 0x01FE, 0x0200, 0x0202, +0x0205, 0x0207, 0x0209, 0x020C, 0x020E, 0x0210, 0x0213, 0x0215, 0x0218, 0x021A, 0x021D, 0x021F, 0x0222, 0x0224, 0x0227, 0x0229, +0x022C, 0x022E, 0x0231, 0x0234, 0x0236, 0x0239, 0x023C, 0x023E, 0x0241, 0x0244, 0x0247, 0x024A, 0x024D, 0x024F, 0x0252, 0x0255, +0x0258, 0x025B, 0x025E, 0x0261, 0x0264, 0x0267, 0x026B, 0x026E, 0x0271, 0x0274, 0x0277, 0x027B, 0x027E, 0x0281, 0x0285, 0x0288, +0x028C, 0x028F, 0x0292, 0x0296, 0x029A, 0x029D, 0x02A1, 0x02A4, 0x02A8, 0x02AC, 0x02B0, 0x02B3, 0x02B7, 0x02BB, 0x02BF, 0x02C3, +0x02C7, 0x02CB, 0x02CF, 0x02D3, 0x02D7, 0x02DB, 0x02DF, 0x02E4, 0x02E8, 0x02EC, 0x02F1, 0x02F5, 0x02F9, 0x02FE, 0x0302, 0x0307, +0x030C, 0x0310, 0x0315, 0x0319, 0x031E, 0x0323, 0x0328, 0x032D, 0x0331, 0x0336, 0x033B, 0x0340, 0x0345, 0x034A, 0x034F, 0x0354, +0x0359, 0x035E, 0x0364, 0x0369, 0x036E, 0x0373, 0x0379, 0x037E, 0x0383, 0x0389, 0x038E, 0x0393, 0x0399, 0x039E, 0x03A4, 0x03AA, +0x03AF, 0x03B5, 0x03BA, 0x03C0, 0x03C6, 0x03CB, 0x03D1, 0x03D7, 0x03DD, 0x03E3, 0x03E9, 0x03EE, 0x03F4, 0x03FA, 0x0400, 0x0406, +0x040C, 0x0412, 0x0418, 0x041F, 0x0425, 0x042B, 0x0431, 0x0437, 0x043E, 0x0444, 0x044A, 0x0451, 0x0457, 0x045D, 0x0464, 0x046A, +0x0471, 0x0477, 0x047E, 0x0484, 0x048B, 0x0491, 0x0498, 0x049F, 0x04A5, 0x04AC, 0x04B3, 0x04B9, 0x04C0, 0x04C7, 0x04CE, 0x04D5, +0x04DB, 0x04E2, 0x04E9, 0x04F0, 0x04F7, 0x04FE, 0x0505, 0x050C, 0x0513, 0x051A, 0x0521, 0x0529, 0x0530, 0x0537, 0x053E, 0x0545, +0x054D, 0x0554, 0x055B, 0x0562, 0x056A, 0x0571, 0x0578, 0x0580, 0x0587, 0x058F, 0x0596, 0x059E, 0x05A5, 0x05AD, 0x05B4, 0x05BC, +0x05C3, 0x05CB, 0x05D3, 0x05DA, 0x05E2, 0x05EA, 0x05F1, 0x05F9, 0x0601, 0x0609, 0x0610, 0x0618, 0x0620, 0x0628, 0x0630, 0x0638, +0x0640, 0x0647, 0x0650, 0x0658, 0x0660, 0x0669, 0x0671, 0x067A, 0x0683, 0x068C, 0x0695, 0x069F, 0x06A8, 0x06B1, 0x06BB, 0x06C5, +0x06CF, 0x06D9, 0x06E3, 0x06ED, 0x06F7, 0x0701, 0x070C, 0x0716, 0x0721, 0x072C, 0x0736, 0x0741, 0x074C, 0x0757, 0x0762, 0x076E, +0x0779, 0x0784, 0x0790, 0x079B, 0x07A7, 0x07B2, 0x07BE, 0x07CA, 0x07D5, 0x07E1, 0x07ED, 0x07F9, 0x0805, 0x0811, 0x081D, 0x0829, +0x0835, 0x0842, 0x084E, 0x085A, 0x0866, 0x0873, 0x087F, 0x088B, 0x0898, 0x08A4, 0x08B1, 0x08BD, 0x08CA, 0x08D6, 0x08E3, 0x08EF, +0x08FC, 0x0908, 0x0915, 0x0921, 0x092E, 0x093B, 0x0947, 0x0954, 0x0961, 0x096E, 0x097B, 0x0988, 0x0995, 0x09A2, 0x09AF, 0x09BC, +0x09CA, 0x09D7, 0x09E4, 0x09F2, 0x09FF, 0x0A0D, 0x0A1A, 0x0A28, 0x0A36, 0x0A43, 0x0A51, 0x0A5F, 0x0A6D, 0x0A7B, 0x0A88, 0x0A96, +0x0AA5, 0x0AB3, 0x0AC1, 0x0ACF, 0x0ADD, 0x0AEB, 0x0AFA, 0x0B08, 0x0B17, 0x0B25, 0x0B34, 0x0B42, 0x0B51, 0x0B5F, 0x0B6E, 0x0B7D, +0x0B8C, 0x0B9B, 0x0BAA, 0x0BB9, 0x0BC8, 0x0BD7, 0x0BE6, 0x0BF5, 0x0C04, 0x0C13, 0x0C23, 0x0C32, 0x0C41, 0x0C51, 0x0C60, 0x0C70, +0x0C80, 0x0C8F, 0x0C9F, 0x0CAF, 0x0CBE, 0x0CCE, 0x0CDE, 0x0CEE, 0x0CFE, 0x0D0E, 0x0D1E, 0x0D2E, 0x0D3F, 0x0D4F, 0x0D5F, 0x0D6F, +0x0D80, 0x0D90, 0x0DA1, 0x0DB1, 0x0DC2, 0x0DD2, 0x0DE3, 0x0DF4, 0x0E05, 0x0E15, 0x0E26, 0x0E37, 0x0E48, 0x0E59, 0x0E6A, 0x0E7B, +0x0E8D, 0x0E9E, 0x0EAF, 0x0EC0, 0x0ED2, 0x0EE3, 0x0EF5, 0x0F06, 0x0F18, 0x0F29, 0x0F3B, 0x0F4D, 0x0F5E, 0x0F70, 0x0F82, 0x0F94, +0x0FA6, 0x0FB8, 0x0FCA, 0x0FDC, 0x0FEE, 0x1000, 0x1012, 0x1025, 0x1037, 0x1049, 0x105C, 0x106E, 0x1081, 0x1093, 0x10A6, 0x10B9, +0x10CC, 0x10DE, 0x10F2, 0x1105, 0x1119, 0x112D, 0x1141, 0x1156, 0x116B, 0x1180, 0x1195, 0x11AB, 0x11C0, 0x11D6, 0x11EC, 0x1203, +0x1219, 0x122F, 0x1246, 0x125D, 0x1273, 0x128A, 0x12A1, 0x12B8, 0x12CF, 0x12E6, 0x12FD, 0x1314, 0x132B, 0x1343, 0x135A, 0x1371, +0x1388, 0x139E, 0x13B5, 0x13CC, 0x13E4, 0x13FB, 0x1413, 0x142B, 0x1443, 0x145C, 0x1475, 0x148E, 0x14A9, 0x14C3, 0x14DF, 0x14FB, +0x1518, 0x1536, 0x1558, 0x157C, 0x15A3, 0x15CA, 0x15F3, 0x161B, 0x1644, 0x166C, 0x1696, 0x16C0, 0x16EB, 0x1717, 0x1743, 0x1770, +0x11F8, 0x1212, 0x122C, 0x1247, 0x1260, 0x1279, 0x1292, 0x12A9, 0x12C0, 0x12D5, 0x12EB, 0x1300, 0x1315, 0x132A, 0x133F, 0x1354, +0x1369, 0x137D, 0x1392, 0x13A6, 0x13BB, 0x13CF, 0x13E4, 0x13F8, 0x140D, 0x1421, 0x1436, 0x144A, 0x145F, 0x1474, 0x1489, 0x149E, +0x14B4, 0x14C9, 0x14DF, 0x14F4, 0x150A, 0x1520, 0x1536, 0x154D, 0x1563, 0x1579, 0x158F, 0x15A6, 0x15BC, 0x15D3, 0x15E9, 0x1600, +0x1616, 0x162C, 0x1643, 0x1659, 0x166F, 0x1685, 0x169B, 0x16B1, 0x16C7, 0x16DD, 0x16F2, 0x1707, 0x171D, 0x1732, 0x1746, 0x175B, +0x1770, 0x1784, 0x1798, 0x17AC, 0x17BF, 0x17D3, 0x17E6, 0x17F9, 0x180D, 0x1820, 0x1832, 0x1845, 0x1858, 0x186A, 0x187D, 0x188F, +0x18A2, 0x18B4, 0x18C6, 0x18D9, 0x18EB, 0x18FD, 0x190F, 0x1922, 0x1934, 0x1946, 0x1958, 0x196B, 0x197D, 0x1990, 0x19A2, 0x19B5, +0x19C8, 0x19DA, 0x19ED, 0x1A00, 0x1A13, 0x1A26, 0x1A39, 0x1A4B, 0x1A5E, 0x1A71, 0x1A84, 0x1A97, 0x1AAA, 0x1ABD, 0x1AD0, 0x1AE3, +0x1AF6, 0x1B09, 0x1B1C, 0x1B2F, 0x1B41, 0x1B54, 0x1B67, 0x1B7A, 0x1B8C, 0x1B9F, 0x1BB1, 0x1BC4, 0x1BD6, 0x1BE9, 0x1BFB, 0x1C0D, +0x1C20, 0x1C32, 0x1C44, 0x1C56, 0x1C68, 0x1C7A, 0x1C8C, 0x1C9E, 0x1CB0, 0x1CC2, 0x1CD4, 0x1CE6, 0x1CF8, 0x1D0A, 0x1D1C, 0x1D2E, +0x1D40, 0x1D51, 0x1D63, 0x1D75, 0x1D87, 0x1D99, 0x1DAB, 0x1DBD, 0x1DCE, 0x1DE0, 0x1DF2, 0x1E04, 0x1E16, 0x1E27, 0x1E39, 0x1E4B, +0x1E5D, 0x1E6E, 0x1E80, 0x1E92, 0x1EA4, 0x1EB5, 0x1EC7, 0x1ED9, 0x1EEA, 0x1EFC, 0x1F0E, 0x1F20, 0x1F31, 0x1F43, 0x1F55, 0x1F66, +0x1F78, 0x1F8A, 0x1F9C, 0x1FAD, 0x1FBF, 0x1FD1, 0x1FE2, 0x1FF4, 0x2006, 0x2017, 0x2029, 0x203B, 0x204D, 0x205E, 0x2070, 0x2082, +0x2094, 0x20A5, 0x20B7, 0x20C9, 0x20DA, 0x20EC, 0x20FE, 0x2110, 0x2122, 0x2133, 0x2145, 0x2157, 0x2169, 0x217B, 0x218C, 0x219E, +0x21B0, 0x21C2, 0x21D4, 0x21E6, 0x21F8, 0x220A, 0x221B, 0x222D, 0x223F, 0x2251, 0x2263, 0x2275, 0x2287, 0x2299, 0x22AB, 0x22BD, +0x22CF, 0x22E1, 0x22F4, 0x2306, 0x2318, 0x232A, 0x233C, 0x234E, 0x2360, 0x2373, 0x2385, 0x2397, 0x23A9, 0x23BC, 0x23CE, 0x23E0, +0x23F3, 0x2405, 0x2417, 0x242A, 0x243C, 0x244F, 0x2461, 0x2474, 0x2486, 0x2499, 0x24AB, 0x24BE, 0x24D1, 0x24E3, 0x24F6, 0x2509, +0x251C, 0x252E, 0x2541, 0x2554, 0x2567, 0x257A, 0x258C, 0x259F, 0x25B2, 0x25C5, 0x25D8, 0x25EB, 0x25FE, 0x2611, 0x2624, 0x2637, +0x264A, 0x265E, 0x2671, 0x2684, 0x2697, 0x26AA, 0x26BD, 0x26D1, 0x26E4, 0x26F7, 0x270A, 0x271E, 0x2731, 0x2744, 0x2758, 0x276B, +0x277E, 0x2792, 0x27A5, 0x27B9, 0x27CC, 0x27E0, 0x27F3, 0x2806, 0x281A, 0x282D, 0x2841, 0x2855, 0x2868, 0x287C, 0x288F, 0x28A3, +0x28B6, 0x28CA, 0x28DE, 0x28F1, 0x2905, 0x2918, 0x292C, 0x2940, 0x2953, 0x2967, 0x297B, 0x298E, 0x29A2, 0x29B6, 0x29CA, 0x29DD, +0x29F1, 0x2A05, 0x2A18, 0x2A2C, 0x2A40, 0x2A54, 0x2A67, 0x2A7B, 0x2A8F, 0x2AA3, 0x2AB7, 0x2ACA, 0x2ADE, 0x2AF2, 0x2B06, 0x2B19, +0x2B2D, 0x2B41, 0x2B55, 0x2B69, 0x2B7C, 0x2B90, 0x2BA4, 0x2BB8, 0x2BCC, 0x2BDF, 0x2BF3, 0x2C07, 0x2C1B, 0x2C2E, 0x2C42, 0x2C56, +0x2C6A, 0x2C7E, 0x2C91, 0x2CA5, 0x2CB9, 0x2CCD, 0x2CE0, 0x2CF4, 0x2D08, 0x2D1C, 0x2D2F, 0x2D43, 0x2D57, 0x2D6B, 0x2D7E, 0x2D92, +0x2DA6, 0x2DB9, 0x2DCD, 0x2DE1, 0x2DF4, 0x2E08, 0x2E1C, 0x2E2F, 0x2E43, 0x2E56, 0x2E6A, 0x2E7E, 0x2E91, 0x2EA5, 0x2EB8, 0x2ECC, +0x2EE0, 0x2EF3, 0x2F07, 0x2F1A, 0x2F2E, 0x2F42, 0x2F56, 0x2F6A, 0x2F7E, 0x2F92, 0x2FA6, 0x2FBA, 0x2FCE, 0x2FE2, 0x2FF6, 0x300B, +0x301F, 0x3033, 0x3048, 0x305C, 0x3070, 0x3085, 0x3099, 0x30AE, 0x30C3, 0x30D7, 0x30EC, 0x3100, 0x3115, 0x312A, 0x313E, 0x3153, +0x3168, 0x317D, 0x3191, 0x31A6, 0x31BB, 0x31D0, 0x31E5, 0x31F9, 0x320E, 0x3223, 0x3238, 0x324D, 0x3262, 0x3276, 0x328B, 0x32A0, +0x32B5, 0x32CA, 0x32DF, 0x32F3, 0x3308, 0x331D, 0x3332, 0x3346, 0x335B, 0x3370, 0x3384, 0x3399, 0x33AE, 0x33C2, 0x33D7, 0x33EB, +0x3400, 0x3414, 0x3429, 0x343D, 0x3452, 0x3466, 0x347A, 0x348F, 0x34A3, 0x34B7, 0x34CB, 0x34DF, 0x34F3, 0x3507, 0x351B, 0x352F, +0x3543, 0x3557, 0x356B, 0x357F, 0x3592, 0x35A6, 0x35B9, 0x35CD, 0x35E0, 0x35F3, 0x3607, 0x361A, 0x362D, 0x3640, 0x3653, 0x3666, +0x3679, 0x368C, 0x369E, 0x36B1, 0x36C3, 0x36D6, 0x36E8, 0x36FA, 0x370D, 0x371F, 0x3731, 0x3743, 0x3754, 0x3766, 0x3778, 0x3789, +0x379B, 0x37AC, 0x37BD, 0x37CF, 0x37E0, 0x37F1, 0x3801, 0x3812, 0x3823, 0x3833, 0x3844, 0x3854, 0x3864, 0x3874, 0x3884, 0x3894, +0x38A4, 0x38B3, 0x38C3, 0x38D2, 0x38E1, 0x38F0, 0x3900, 0x390F, 0x391D, 0x392C, 0x393B, 0x394A, 0x3958, 0x3967, 0x3975, 0x3983, +0x3992, 0x39A0, 0x39AE, 0x39BC, 0x39CA, 0x39D7, 0x39E5, 0x39F3, 0x3A00, 0x3A0E, 0x3A1B, 0x3A29, 0x3A36, 0x3A43, 0x3A50, 0x3A5D, +0x3A6A, 0x3A77, 0x3A84, 0x3A91, 0x3A9D, 0x3AAA, 0x3AB7, 0x3AC3, 0x3AD0, 0x3ADC, 0x3AE8, 0x3AF4, 0x3B01, 0x3B0D, 0x3B19, 0x3B25, +0x3B31, 0x3B3D, 0x3B49, 0x3B54, 0x3B60, 0x3B6C, 0x3B77, 0x3B83, 0x3B8E, 0x3B9A, 0x3BA5, 0x3BB1, 0x3BBC, 0x3BC7, 0x3BD3, 0x3BDE, +0x3BE9, 0x3BF4, 0x3BFF, 0x3C0A, 0x3C15, 0x3C20, 0x3C2B, 0x3C36, 0x3C41, 0x3C4C, 0x3C56, 0x3C61, 0x3C6C, 0x3C76, 0x3C81, 0x3C8C, +0x3C96, 0x3CA1, 0x3CAB, 0x3CB6, 0x3CC0, 0x3CCB, 0x3CD5, 0x3CDF, 0x3CEA, 0x3CF4, 0x3CFF, 0x3D09, 0x3D13, 0x3D1D, 0x3D28, 0x3D32, +0x3D3C, 0x3D46, 0x3D50, 0x3D5B, 0x3D65, 0x3D6F, 0x3D79, 0x3D83, 0x3D8D, 0x3D97, 0x3DA1, 0x3DAC, 0x3DB6, 0x3DC0, 0x3DCA, 0x3DD4, +0x3DDE, 0x3DE8, 0x3DF2, 0x3DFC, 0x3E06, 0x3E10, 0x3E1A, 0x3E24, 0x3E2F, 0x3E39, 0x3E43, 0x3E4D, 0x3E57, 0x3E61, 0x3E6B, 0x3E75, +0x3E80, 0x3E8A, 0x3E94, 0x3E9E, 0x3EA8, 0x3EB2, 0x3EBC, 0x3EC6, 0x3ED0, 0x3EDA, 0x3EE4, 0x3EEE, 0x3EF8, 0x3F02, 0x3F0C, 0x3F16, +0x3F20, 0x3F29, 0x3F33, 0x3F3D, 0x3F47, 0x3F51, 0x3F5A, 0x3F64, 0x3F6E, 0x3F77, 0x3F81, 0x3F8B, 0x3F94, 0x3F9E, 0x3FA7, 0x3FB1, +0x3FBA, 0x3FC4, 0x3FCD, 0x3FD7, 0x3FE0, 0x3FEA, 0x3FF3, 0x3FFC, 0x4006, 0x400F, 0x4018, 0x4021, 0x402B, 0x4034, 0x403D, 0x4046, +0x404F, 0x4058, 0x4061, 0x406A, 0x4074, 0x407D, 0x4085, 0x408E, 0x4097, 0x40A0, 0x40A9, 0x40B2, 0x40BB, 0x40C4, 0x40CC, 0x40D5, +0x40DE, 0x40E6, 0x40EF, 0x40F8, 0x4100, 0x4109, 0x4111, 0x411A, 0x4122, 0x412B, 0x4133, 0x413C, 0x4144, 0x414C, 0x4155, 0x415D, +0x4165, 0x416D, 0x4176, 0x417E, 0x4186, 0x418E, 0x4196, 0x419E, 0x41A6, 0x41AE, 0x41B6, 0x41BE, 0x41C6, 0x41CE, 0x41D5, 0x41DD, +0x41E5, 0x41ED, 0x41F4, 0x41FC, 0x4204, 0x420B, 0x4213, 0x421A, 0x4222, 0x4229, 0x4231, 0x4238, 0x4240, 0x4247, 0x424E, 0x4255, +0x425D, 0x4264, 0x426B, 0x4272, 0x4279, 0x4280, 0x4287, 0x428E, 0x4295, 0x429C, 0x42A3, 0x42AA, 0x42B1, 0x42B7, 0x42BE, 0x42C5, +0x42CC, 0x42D2, 0x42D9, 0x42DF, 0x42E6, 0x42EC, 0x42F3, 0x42F9, 0x42FF, 0x4306, 0x430C, 0x4312, 0x4318, 0x431E, 0x4324, 0x432A, +0x4330, 0x4336, 0x433C, 0x4342, 0x4348, 0x434E, 0x4354, 0x4359, 0x435F, 0x4365, 0x436A, 0x4370, 0x4376, 0x437B, 0x4381, 0x4386, +0x438C, 0x4391, 0x4396, 0x439C, 0x43A1, 0x43A6, 0x43AC, 0x43B1, 0x43B6, 0x43BB, 0x43C0, 0x43C5, 0x43CA, 0x43CF, 0x43D4, 0x43D9, +0x43DE, 0x43E3, 0x43E8, 0x43ED, 0x43F2, 0x43F6, 0x43FB, 0x4400, 0x4405, 0x4409, 0x440E, 0x4413, 0x4417, 0x441C, 0x4420, 0x4425, +0x4429, 0x442E, 0x4432, 0x4437, 0x443B, 0x443F, 0x4444, 0x4448, 0x444C, 0x4451, 0x4455, 0x4459, 0x445D, 0x4462, 0x4466, 0x446A, +0x446E, 0x4472, 0x4476, 0x447B, 0x447F, 0x4483, 0x4487, 0x448B, 0x448F, 0x4493, 0x4497, 0x449B, 0x449F, 0x44A2, 0x44A6, 0x44AA, +0x44AE, 0x44B2, 0x44B6, 0x44BA, 0x44BD, 0x44C1, 0x44C5, 0x44C9, 0x44CC, 0x44D0, 0x44D4, 0x44D8, 0x44DB, 0x44DF, 0x44E3, 0x44E6, +0x44EA, 0x44EE, 0x44F1, 0x44F5, 0x44F9, 0x44FC, 0x4500, 0x4503, 0x4507, 0x450B, 0x450E, 0x4512, 0x4515, 0x4519, 0x451C, 0x4520, +0x4524, 0x4527, 0x452B, 0x452E, 0x4531, 0x4535, 0x4538, 0x453C, 0x453F, 0x4542, 0x4545, 0x4549, 0x454C, 0x454F, 0x4552, 0x4555, +0x4559, 0x455C, 0x455F, 0x4562, 0x4565, 0x4568, 0x456B, 0x456E, 0x4571, 0x4574, 0x4577, 0x4579, 0x457C, 0x457F, 0x4582, 0x4585, +0x4588, 0x458A, 0x458D, 0x4590, 0x4592, 0x4595, 0x4598, 0x459A, 0x459D, 0x45A0, 0x45A2, 0x45A5, 0x45A7, 0x45AA, 0x45AC, 0x45AF, +0x45B1, 0x45B4, 0x45B6, 0x45B8, 0x45BB, 0x45BD, 0x45C0, 0x45C2, 0x45C4, 0x45C7, 0x45C9, 0x45CB, 0x45CD, 0x45D0, 0x45D2, 0x45D4, +0x45D6, 0x45D9, 0x45DB, 0x45DD, 0x45DF, 0x45E1, 0x45E3, 0x45E6, 0x45E8, 0x45EA, 0x45EC, 0x45EE, 0x45F0, 0x45F2, 0x45F4, 0x45F6, +0x45F8, 0x45FA, 0x45FC, 0x45FE, 0x4600, 0x4602, 0x4604, 0x4606, 0x4608, 0x460A, 0x460C, 0x460E, 0x4610, 0x4612, 0x4614, 0x4615, +0x4617, 0x4619, 0x461B, 0x461D, 0x461F, 0x4621, 0x4622, 0x4624, 0x4626, 0x4628, 0x462A, 0x462C, 0x462D, 0x462F, 0x4631, 0x4633, +0x4635, 0x4637, 0x4638, 0x463A, 0x463C, 0x463E, 0x463F, 0x4641, 0x4643, 0x4645, 0x4647, 0x4648, 0x464A, 0x464C, 0x464E, 0x464F, +}; diff --git a/MCUME_teensy/teensy64/reSID/pot.cpp b/MCUME_teensy/teensy64/reSID/pot.cpp new file mode 100755 index 0000000..25ad24e --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/pot.cpp @@ -0,0 +1,30 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "pot.h" + +RESID_NAMESPACE_START + +reg8 Potentiometer::readPOT() +{ + // NB! Not modeled. + return 0xff; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/pot.h b/MCUME_teensy/teensy64/reSID/pot.h new file mode 100755 index 0000000..5bed353 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/pot.h @@ -0,0 +1,35 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __POT_H__ +#define __POT_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +class Potentiometer +{ +public: + reg8 readPOT(); +}; + +RESID_NAMESPACE_STOP + +#endif diff --git a/MCUME_teensy/teensy64/reSID/sid.cpp b/MCUME_teensy/teensy64/reSID/sid.cpp new file mode 100755 index 0000000..de73cce --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/sid.cpp @@ -0,0 +1,771 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "sid.h" +#include + +RESID_NAMESPACE_START + +// Resampling constants. +// The error in interpolated lookup is bounded by 1.234/L^2, +// while the error in non-interpolated lookup is bounded by +// 0.7854/L + 0.4113/L^2, see +// http://www-ccrma.stanford.edu/~jos/resample/Choice_Table_Size.html +// For a resolution of 16 bits this yields L >= 285 and L >= 51473, +// respectively. +const int SID::FIR_N = 125; +const int SID::FIR_RES_INTERPOLATE = 285; +const int SID::FIR_RES_FAST = 51473; +const int SID::FIR_SHIFT = 15; +const int SID::RINGSIZE = 16384; + +// Fixpoint constants (16.16 bits). +const int SID::FIXP_SHIFT = 16; +const int SID::FIXP_MASK = 0xffff; + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +SID::SID() +{ + + voice[0].set_sync_source(&voice[2]); + voice[1].set_sync_source(&voice[0]); + voice[2].set_sync_source(&voice[1]); + + set_sampling_parameters(985248, SAMPLE_FAST, 22050); + + bus_value = 0; + bus_value_ttl = 0; + + ext_in = 0; + +} +/* +void SID::printFilter(void){ + Serial.print(filter.f0_count); + for (int i=0; i< 2048; i++) { + if (i % 16==0) Serial.println(); + Serial.printf("0x%04X, ",filter.f0_6581[i]); + } +} +*/ +// ---------------------------------------------------------------------------- +// Destructor. +// ---------------------------------------------------------------------------- +SID::~SID() +{ +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void SID::set_chip_model(chip_model model) +{ + voice[0].set_chip_model(model); + voice[1].set_chip_model(model); + voice[2].set_chip_model(model); + + filter.set_chip_model(model); + extfilt.set_chip_model(model); +} +*/ + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void SID::reset() +{ + + voice[0].reset(); + voice[1].reset(); + voice[2].reset(); + + filter.reset(); + extfilt.reset(); + + bus_value = 0; + bus_value_ttl = 0; +} + + +// ---------------------------------------------------------------------------- +// Write 16-bit sample to audio input. +// NB! The caller is responsible for keeping the value within 16 bits. +// Note that to mix in an external audio signal, the signal should be +// resampled to 1MHz first to avoid sampling noise. +// ---------------------------------------------------------------------------- +void SID::input(int sample) +{ + // Voice outputs are 20 bits. Scale up to match three voices in order + // to facilitate simulation of the MOS8580 "digi boost" hardware hack. + ext_in = (sample << 4)*3; +} + +// ---------------------------------------------------------------------------- +// Read sample from audio output. +// ---------------------------------------------------------------------------- +int SID::output() +{ + const int range = 1 << 16; + const int half = range >> 1; + int sample = extfilt.output()/((4095*255 >> 7)*3*15*2/range); + + //asm ("ssat %0, #16, %1" : "=r" (sample) : "r" (sample)); + + if (sample >= half) { + return half - 1; + } + if (sample < -half) { + return -half; + } + + return sample; +} + + +// ---------------------------------------------------------------------------- +// Read registers. +// +// Reading a write only register returns the last byte written to any SID +// register. The individual bits in this value start to fade down towards +// zero after a few cycles. All bits reach zero within approximately +// $2000 - $4000 cycles. +// It has been claimed that this fading happens in an orderly fashion, however +// sampling of write only registers reveals that this is not the case. +// NB! This is not correctly modeled. +// The actual use of write only registers has largely been made in the belief +// that all SID registers are readable. To support this belief the read +// would have to be done immediately after a write to the same register +// (remember that an intermediate write to another register would yield that +// value instead). With this in mind we return the last value written to +// any SID register for $2000 cycles without modeling the bit fading. +// ---------------------------------------------------------------------------- +reg8 SID::read(reg8 offset) +{ + switch (offset) { + case 0x19: + return potx.readPOT(); + case 0x1a: + return poty.readPOT(); + case 0x1b: + return voice[2].wave.readOSC(); + case 0x1c: + return voice[2].envelope.readENV(); + default: + return bus_value; + } +} + + +// ---------------------------------------------------------------------------- +// Write registers. +// ---------------------------------------------------------------------------- +void SID::write(reg8 offset, reg8 value) +{ + bus_value = value; + bus_value_ttl = 0x2000; + + switch (offset) { + case 0x00: + voice[0].wave.writeFREQ_LO(value); + break; + case 0x01: + voice[0].wave.writeFREQ_HI(value); + break; + case 0x02: + voice[0].wave.writePW_LO(value); + break; + case 0x03: + voice[0].wave.writePW_HI(value); + break; + case 0x04: + voice[0].writeCONTROL_REG(value); + break; + case 0x05: + voice[0].envelope.writeATTACK_DECAY(value); + break; + case 0x06: + voice[0].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x07: + voice[1].wave.writeFREQ_LO(value); + break; + case 0x08: + voice[1].wave.writeFREQ_HI(value); + break; + case 0x09: + voice[1].wave.writePW_LO(value); + break; + case 0x0a: + voice[1].wave.writePW_HI(value); + break; + case 0x0b: + voice[1].writeCONTROL_REG(value); + break; + case 0x0c: + voice[1].envelope.writeATTACK_DECAY(value); + break; + case 0x0d: + voice[1].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x0e: + voice[2].wave.writeFREQ_LO(value); + break; + case 0x0f: + voice[2].wave.writeFREQ_HI(value); + break; + case 0x10: + voice[2].wave.writePW_LO(value); + break; + case 0x11: + voice[2].wave.writePW_HI(value); + break; + case 0x12: + voice[2].writeCONTROL_REG(value); + break; + case 0x13: + voice[2].envelope.writeATTACK_DECAY(value); + break; + case 0x14: + voice[2].envelope.writeSUSTAIN_RELEASE(value); + break; + case 0x15: + filter.writeFC_LO(value); + break; + case 0x16: + filter.writeFC_HI(value); + break; + case 0x17: + filter.writeRES_FILT(value); + break; + case 0x18: + filter.writeMODE_VOL(value); + break; + default: + break; + } +} + + +// ---------------------------------------------------------------------------- +// SID voice muting. +// ---------------------------------------------------------------------------- +void SID::mute(reg8 channel, bool enable) +{ + // Only have 3 voices! + if (channel >= 3) + return; + + voice[channel].mute (enable); +} + + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +SID::State::State() +{ + int i; + + for (i = 0; i < 0x20; i++) { + sid_register[i] = 0; + } + + bus_value = 0; + bus_value_ttl = 0; + + for (i = 0; i < 3; i++) { + accumulator[i] = 0; + shift_register[i] = 0x7ffff8; + rate_counter[i] = 0; + rate_counter_period[i] = 9; + exponential_counter[i] = 0; + exponential_counter_period[i] = 1; + envelope_counter[i] = 0; + envelope_state[i] = EnvelopeGenerator::RELEASE; + hold_zero[i] = true; + } +} + + +// ---------------------------------------------------------------------------- +// Read state. +// ---------------------------------------------------------------------------- +SID::State SID::read_state() +{ + State state; + int i, j; + + for (i = 0, j = 0; i < 3; i++, j += 7) { + WaveformGenerator& wave = voice[i].wave; + EnvelopeGenerator& envelope = voice[i].envelope; + state.sid_register[j + 0] = wave.freq & 0xff; + state.sid_register[j + 1] = wave.freq >> 8; + state.sid_register[j + 2] = wave.pw & 0xff; + state.sid_register[j + 3] = wave.pw >> 8; + state.sid_register[j + 4] = + (wave.waveform << 4) + | (wave.test ? 0x08 : 0) + | (wave.ring_mod ? 0x04 : 0) + | (wave.sync ? 0x02 : 0) + | (envelope.gate ? 0x01 : 0); + state.sid_register[j + 5] = (envelope.attack << 4) | envelope.decay; + state.sid_register[j + 6] = (envelope.sustain << 4) | envelope.release; + } + + state.sid_register[j++] = filter.fc & 0x007; + state.sid_register[j++] = filter.fc >> 3; + state.sid_register[j++] = (filter.res << 4) | filter.filt; + state.sid_register[j++] = + (filter.voice3off ? 0x80 : 0) + | (filter.hp_bp_lp << 4) + | filter.vol; + + // These registers are superfluous, but included for completeness. + for (; j < 0x1d; j++) { + state.sid_register[j] = read(j); + } + for (; j < 0x20; j++) { + state.sid_register[j] = 0; + } + + state.bus_value = bus_value; + state.bus_value_ttl = bus_value_ttl; + + for (i = 0; i < 3; i++) { + state.accumulator[i] = voice[i].wave.accumulator; + state.shift_register[i] = voice[i].wave.shift_register; + state.rate_counter[i] = voice[i].envelope.rate_counter; + state.rate_counter_period[i] = voice[i].envelope.rate_period; + state.exponential_counter[i] = voice[i].envelope.exponential_counter; + state.exponential_counter_period[i] = voice[i].envelope.exponential_counter_period; + state.envelope_counter[i] = voice[i].envelope.envelope_counter; + state.envelope_state[i] = voice[i].envelope.state; + state.hold_zero[i] = voice[i].envelope.hold_zero; + } + + return state; +} + + +// ---------------------------------------------------------------------------- +// Write state. +// ---------------------------------------------------------------------------- +void SID::write_state(const State& state) +{ + int i; + + for (i = 0; i <= 0x18; i++) { + write(i, state.sid_register[i]); + } + + bus_value = state.bus_value; + bus_value_ttl = state.bus_value_ttl; + + for (i = 0; i < 3; i++) { + voice[i].wave.accumulator = state.accumulator[i]; + voice[i].wave.shift_register = state.shift_register[i]; + voice[i].envelope.rate_counter = state.rate_counter[i]; + voice[i].envelope.rate_period = state.rate_counter_period[i]; + voice[i].envelope.exponential_counter = state.exponential_counter[i]; + voice[i].envelope.exponential_counter_period = state.exponential_counter_period[i]; + voice[i].envelope.envelope_counter = state.envelope_counter[i]; + voice[i].envelope.state = state.envelope_state[i]; + voice[i].envelope.hold_zero = state.hold_zero[i]; + } +} + + +// ---------------------------------------------------------------------------- +// Enable filter. +// ---------------------------------------------------------------------------- +void SID::enable_filter(bool enable) +{ + filter.enable_filter(enable); +} + + +// ---------------------------------------------------------------------------- +// Enable external filter. +// ---------------------------------------------------------------------------- +void SID::enable_external_filter(bool enable) +{ + extfilt.enable_filter(enable); +} + + +// ---------------------------------------------------------------------------- +// I0() computes the 0th order modified Bessel function of the first kind. +// This function is originally from resample-1.5/filterkit.c by J. O. Smith. +// ---------------------------------------------------------------------------- +/* +float SID::I0(float x) +{ + // Max error acceptable in I0. + const float I0e = 1e-6; + + float sum, u, halfx, temp; + int n; + + sum = u = n = 1; + halfx = x/2.0; + + do { + temp = halfx/n++; + u *= temp*temp; + sum += u; + } while (u >= I0e*sum); + + return sum; +} +*/ + +// ---------------------------------------------------------------------------- +// Setting of SID sampling parameters. +// +// Use a clock freqency of 985248Hz for PAL C64, 1022730Hz for NTSC C64. +// The default end of passband frequency is pass_freq = 0.9*sample_freq/2 +// for sample frequencies up to ~ 44.1kHz, and 20kHz for higher sample +// frequencies. +// +// For resampling, the ratio between the clock frequency and the sample +// frequency is limited as follows: +// 125*clock_freq/sample_freq < 16384 +// E.g. provided a clock frequency of ~ 1MHz, the sample frequency can not +// be set lower than ~ 8kHz. A lower sample frequency would make the +// resampling code overfill its 16k sample ring buffer. +// +// The end of passband frequency is also limited: +// pass_freq <= 0.9*sample_freq/2 + +// E.g. for a 44.1kHz sampling rate the end of passband frequency is limited +// to slightly below 20kHz. This constraint ensures that the FIR table is +// not overfilled. +// ---------------------------------------------------------------------------- +bool SID::set_sampling_parameters(float clock_freq, sampling_method method, + float sample_freq, float pass_freq, + float filter_scale) +{ + + // The default passband limit is 0.9*sample_freq/2 for sample + // frequencies below ~ 44.1kHz, and 20kHz for higher sample frequencies. + if (pass_freq < 0) { + pass_freq = 20000; + if (2.0*pass_freq/sample_freq >= 0.9) { + pass_freq = 0.9*sample_freq/2.0; + } + } + // Check whether the FIR table would overfill. + else if (pass_freq > 0.9*sample_freq/2.0) { + return false; + } + + // The filter scaling is only included to avoid clipping, so keep + // it sane. + if (filter_scale < 0.9 || filter_scale > 1.0) { + return false; + } + + // Set the external filter to the pass freq + extfilt.set_sampling_parameter (pass_freq); + clock_frequency = clock_freq; + sampling = method; + + cycles_per_sample = + cycle_count(clock_freq/sample_freq*(1 << FIXP_SHIFT) + 0.5); + + sample_offset = 0; + sample_prev = 0; + + return true; +} + + +// ---------------------------------------------------------------------------- +// Adjustment of SID sampling frequency. +// +// In some applications, e.g. a C64 emulator, it can be desirable to +// synchronize sound with a timer source. This is supported by adjustment of +// the SID sampling frequency. +// +// NB! Adjustment of the sampling frequency may lead to noticeable shifts in +// frequency, and should only be used for interactive applications. Note also +// that any adjustment of the sampling frequency will change the +// characteristics of the resampling filter, since the filter is not rebuilt. +// ---------------------------------------------------------------------------- +void SID::adjust_sampling_frequency(float sample_freq) +{ + cycles_per_sample = + cycle_count(clock_frequency/sample_freq*(1 << FIXP_SHIFT) + 0.5); +} + + +// ---------------------------------------------------------------------------- +// Return array of default spline interpolation points to map FC to +// filter cutoff frequency. +// ---------------------------------------------------------------------------- +/* +void SID::fc_default(const fc_point*& points, int& count) +{ + filter.fc_default(points, count); +} +*/ + +// ---------------------------------------------------------------------------- +// Return FC spline plotter object. +// ---------------------------------------------------------------------------- +/* +PointPlotter SID::fc_plotter() +{ + return filter.fc_plotter(); +} +*/ + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +void SID::clock() +{ + + // Age bus value. + if (--bus_value_ttl <= 0) { + bus_value = 0; + bus_value_ttl = 0; + } + + // Clock amplitude modulators. + voice[0].envelope.clock(); + voice[1].envelope.clock(); + voice[2].envelope.clock(); + + // Clock oscillators. + voice[0].wave.clock(); + voice[1].wave.clock(); + voice[2].wave.clock(); + + // Synchronize oscillators. + voice[0].wave.synchronize(); + voice[1].wave.synchronize(); + voice[2].wave.synchronize(); + + // Clock filter. + filter.clock(voice[0].output(), voice[1].output(), voice[2].output(), ext_in); + + // Clock external filter. + extfilt.clock(filter.output()); +} + + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +void SID::clock(cycle_count delta_t) +{ + int i; + + if (delta_t <= 0) { + return; + } + + // Age bus value. + bus_value_ttl -= delta_t; + if (bus_value_ttl <= 0) { + bus_value = 0; + bus_value_ttl = 0; + } + + // Clock amplitude modulators. + + voice[0].envelope.clock(delta_t); + voice[1].envelope.clock(delta_t); + voice[2].envelope.clock(delta_t); + + // Clock and synchronize oscillators. + // Loop until we reach the current cycle. + cycle_count delta_t_osc = delta_t; + while (delta_t_osc) { + cycle_count delta_t_min = delta_t_osc; + + // Find minimum number of cycles to an oscillator accumulator MSB toggle. + // We have to clock on each MSB on / MSB off for hard sync to operate + // correctly. + for (i = 0; i < 3; i++) { + WaveformGenerator& wave = voice[i].wave; + + // It is only necessary to clock on the MSB of an oscillator that is + // a sync source and has freq != 0. + if (!(wave.sync_dest->sync && wave.freq)) { + continue; + } + + reg16 freq = wave.freq; + reg24 accumulator = wave.accumulator; + + // Clock on MSB off if MSB is on, clock on MSB on if MSB is off. + reg24 delta_accumulator = + (accumulator & 0x800000 ? 0x1000000 : 0x800000) - accumulator; + + cycle_count delta_t_next = delta_accumulator/freq; + if (delta_accumulator%freq) { + ++delta_t_next; + } + + if (delta_t_next < delta_t_min) { + delta_t_min = delta_t_next; + } + } + + // Clock oscillators. + voice[0].wave.clock(delta_t_min); + voice[1].wave.clock(delta_t_min); + voice[2].wave.clock(delta_t_min); + + + // Synchronize oscillators. + voice[0].wave.synchronize(); + voice[1].wave.synchronize(); + voice[2].wave.synchronize(); + + delta_t_osc -= delta_t_min; + } + + // Clock filter. + filter.clock(delta_t, + voice[0].output(), voice[1].output(), voice[2].output(), ext_in); + + // Clock external filter. + extfilt.clock(delta_t, filter.output()); +} + + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling. +// Fixpoint arithmetics is used. +// +// The example below shows how to clock the SID a specified amount of cycles +// while producing audio output: +// +// while (delta_t) { +// bufindex += sid.clock(delta_t, buf + bufindex, buflength - bufindex); +// write(dsp, buf, bufindex*2); +// bufindex = 0; +// } +// +// ---------------------------------------------------------------------------- +int SID::clock(cycle_count& delta_t, short* buf, int n) +{ + switch (sampling) { + default: + case SAMPLE_FAST: + return clock_fast(delta_t, buf, n); + case SAMPLE_INTERPOLATE: + return clock_interpolate(delta_t, buf, n); + } +} + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling - delta clocking picking nearest sample. +// ---------------------------------------------------------------------------- +RESID_INLINE +int SID::clock_fast(cycle_count& delta_t, short* buf, int n) +{ + int s = 0; + + for (;;) { + cycle_count next_sample_offset = sample_offset + cycles_per_sample + (1 << (FIXP_SHIFT - 1)); + cycle_count delta_t_sample = next_sample_offset >> FIXP_SHIFT; + if (delta_t_sample > delta_t) { + break; + } + if (s >= n) { + return s; + } + clock(delta_t_sample); + delta_t -= delta_t_sample; + sample_offset = (next_sample_offset & FIXP_MASK) - (1 << (FIXP_SHIFT - 1)); + buf[s++] = output(); + } + + clock(delta_t); + sample_offset -= delta_t << FIXP_SHIFT; + delta_t = 0; + return s; +} + + +// ---------------------------------------------------------------------------- +// SID clocking with audio sampling - cycle based with linear sample +// interpolation. +// +// Here the chip is clocked every cycle. This yields higher quality +// sound since the samples are linearly interpolated, and since the +// external filter attenuates frequencies above 16kHz, thus reducing +// sampling noise. +// ---------------------------------------------------------------------------- +RESID_INLINE +int SID::clock_interpolate(cycle_count& delta_t, short* buf, int n) +{ + + int s = 0; + int i; + + for (;;) { + cycle_count next_sample_offset = sample_offset + cycles_per_sample; + cycle_count delta_t_sample = next_sample_offset >> FIXP_SHIFT; + if (delta_t_sample > delta_t) { + break; + } + if (s >= n) { + return s; + } + for (i = 0; i < delta_t_sample - 1; i++) { + clock(); + } + if (i < delta_t_sample) { + sample_prev = output(); + clock(); + } + + delta_t -= delta_t_sample; + sample_offset = next_sample_offset & FIXP_MASK; + + short sample_now = output(); + buf[s++] = + sample_prev + (sample_offset*(sample_now - sample_prev) >> FIXP_SHIFT); + sample_prev = sample_now; + } + + for (i = 0; i < delta_t - 1; i++) { + clock(); + } + if (i < delta_t) { + sample_prev = output(); + clock(); + } + + sample_offset -= delta_t << FIXP_SHIFT; + delta_t = 0; + return s; +} + + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/sid.h b/MCUME_teensy/teensy64/reSID/sid.h new file mode 100755 index 0000000..3087e6f --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/sid.h @@ -0,0 +1,133 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free float; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free float Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free float +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SID_H__ +#define __SID_H__ + +#include "siddefs.h" +#include "voice.h" +#include "filter.h" +#include "extfilt.h" +#include "pot.h" + +RESID_NAMESPACE_START + +class SID +{ +public: + SID(); + ~SID(); + //void printFilter(void); + //void set_chip_model(chip_model model); + void enable_filter(bool enable); + void enable_external_filter(bool enable); + bool set_sampling_parameters(float clock_freq, sampling_method method, + float sample_freq, float pass_freq = -1, + float filter_scale = 0.97); + void adjust_sampling_frequency(float sample_freq); + + //void fc_default(const fc_point*& points, int& count); + //PointPlotter fc_plotter(); + + void clock(); + void clock(cycle_count delta_t); + int clock(cycle_count& delta_t, short* buf, int n); + void reset(); + + // Read/write registers. + reg8 read(reg8 offset); + void write(reg8 offset, reg8 value); + void mute(reg8 channel, bool enable); + + // Read/write state. + class State + { + public: + State(); + + char sid_register[0x20]; + + reg8 bus_value; + cycle_count bus_value_ttl; + + reg24 accumulator[3]; + reg24 shift_register[3]; + reg16 rate_counter[3]; + reg16 rate_counter_period[3]; + reg16 exponential_counter[3]; + reg16 exponential_counter_period[3]; + reg8 envelope_counter[3]; + EnvelopeGenerator::State envelope_state[3]; + bool hold_zero[3]; + }; + + State read_state(); + void write_state(const State& state); + + // 16-bit input (EXT IN). + void input(int sample); + + // 16-bit output (AUDIO OUT). + int output(); + + +protected: + + RESID_INLINE int clock_fast(cycle_count& delta_t, short* buf, int n); + RESID_INLINE int clock_interpolate(cycle_count& delta_t, short* buf, int n); + + Voice voice[3]; + Filter filter; + ExternalFilter extfilt; + Potentiometer potx; + Potentiometer poty; + + reg8 bus_value; + cycle_count bus_value_ttl; + + float clock_frequency; + + // External audio input. + int ext_in; + + // Resampling constants. + static const int FIR_N; + static const int FIR_RES_INTERPOLATE; + static const int FIR_RES_FAST; + static const int FIR_SHIFT; + static const int RINGSIZE; + + // Fixpoint constants. + static const int FIXP_SHIFT; + static const int FIXP_MASK; + + // Sampling variables. + sampling_method sampling; + cycle_count cycles_per_sample; + cycle_count sample_offset; + int sample_index; + short sample_prev; + int fir_N; + int fir_RES; + +}; + +RESID_NAMESPACE_STOP + +#endif // not __SID_H__ diff --git a/MCUME_teensy/teensy64/reSID/siddefs.h b/MCUME_teensy/teensy64/reSID/siddefs.h new file mode 100755 index 0000000..05604ea --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/siddefs.h @@ -0,0 +1,86 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 1999 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SIDDEFS_H__ +#define __SIDDEFS_H__ + +// Define bool, true, and false for C++ compilers that lack these keywords. +#define RESID_HAVE_BOOL 1 + +// Inlining on/off. +#define RESID_INLINING 1 +#define RESID_INLINE inline + +// Support namespace + +#ifdef RESID_NAMESPACE +# define RESID_NAMESPACE_START \ + namespace RESID_NAMESPACE \ + { +# define RESID_NAMESPACE_STOP \ + } +#else +# define RESID_NAMESPACE_START +# define RESID_NAMESPACE_STOP +#endif + + +RESID_NAMESPACE_START + +#if !RESID_HAVE_BOOL +typedef int bool; +const bool true = 1; +const bool false = 0; +#endif + +// We could have used the smallest possible data type for each SID register, +// however this would give a slower engine because of data type conversions. +// An int is assumed to be at least 32 bits (necessary in the types reg24, +// cycle_count, and sound_sample). GNU does not support 16-bit machines +// (GNU Coding Standards: Portability between CPUs), so this should be +// a valid assumption. +#include +#include + +typedef uint16_t reg4; +typedef uint16_t reg8; +typedef uint16_t reg12; +typedef uint16_t reg16; +typedef unsigned int reg24; + +typedef int cycle_count; +typedef int sound_sample; +typedef sound_sample fc_point[2]; + +//enum chip_model { MOS6581, MOS8580 }; + +enum sampling_method { SAMPLE_FAST, SAMPLE_INTERPOLATE}; + +extern "C" +{ +#ifndef __VERSION_CC__ +extern const char* resid_version_string; +#else +const char* resid_version_string = VERSION; +#endif +} + +RESID_NAMESPACE_STOP + +#endif // not __SIDDEFS_H__ diff --git a/MCUME_teensy/teensy64/reSID/spline.h b/MCUME_teensy/teensy64/reSID/spline.h new file mode 100755 index 0000000..c03260c --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/spline.h @@ -0,0 +1,275 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __SPLINE_H__ +#define __SPLINE_H__ + +RESID_NAMESPACE_START + +// Our objective is to construct a smooth interpolating single-valued function +// y = f(x). +// +// Catmull-Rom splines are widely used for interpolation, however these are +// parametric curves [x(t) y(t) ...] and can not be used to directly calculate +// y = f(x). +// For a discussion of Catmull-Rom splines see Catmull, E., and R. Rom, +// "A Class of Local Interpolating Splines", Computer Aided Geometric Design. +// +// Natural cubic splines are single-valued functions, and have been used in +// several applications e.g. to specify gamma curves for image display. +// These splines do not afford local control, and a set of linear equations +// including all interpolation points must be solved before any point on the +// curve can be calculated. The lack of local control makes the splines +// more difficult to handle than e.g. Catmull-Rom splines, and real-time +// interpolation of a stream of data points is not possible. +// For a discussion of natural cubic splines, see e.g. Kreyszig, E., "Advanced +// Engineering Mathematics". +// +// Our approach is to approximate the properties of Catmull-Rom splines for +// piecewice cubic polynomials f(x) = ax^3 + bx^2 + cx + d as follows: +// Each curve segment is specified by four interpolation points, +// p0, p1, p2, p3. +// The curve between p1 and p2 must interpolate both p1 and p2, and in addition +// f'(p1.x) = k1 = (p2.y - p0.y)/(p2.x - p0.x) and +// f'(p2.x) = k2 = (p3.y - p1.y)/(p3.x - p1.x). +// +// The constraints are expressed by the following system of linear equations +// +// [ 1 xi xi^2 xi^3 ] [ d ] [ yi ] +// [ 1 2*xi 3*xi^2 ] * [ c ] = [ ki ] +// [ 1 xj xj^2 xj^3 ] [ b ] [ yj ] +// [ 1 2*xj 3*xj^2 ] [ a ] [ kj ] +// +// Solving using Gaussian elimination and back substitution, setting +// dy = yj - yi, dx = xj - xi, we get +// +// a = ((ki + kj) - 2*dy/dx)/(dx*dx); +// b = ((kj - ki)/dx - 3*(xi + xj)*a)/2; +// c = ki - (3*xi*a + 2*b)*xi; +// d = yi - ((xi*a + b)*xi + c)*xi; +// +// Having calculated the coefficients of the cubic polynomial we have the +// choice of evaluation by brute force +// +// for (x = x1; x <= x2; x += res) { +// y = ((a*x + b)*x + c)*x + d; +// plot(x, y); +// } +// +// or by forward differencing +// +// y = ((a*x1 + b)*x1 + c)*x1 + d; +// dy = (3*a*(x1 + res) + 2*b)*x1*res + ((a*res + b)*res + c)*res; +// d2y = (6*a*(x1 + res) + 2*b)*res*res; +// d3y = 6*a*res*res*res; +// +// for (x = x1; x <= x2; x += res) { +// plot(x, y); +// y += dy; dy += d2y; d2y += d3y; +// } +// +// See Foley, Van Dam, Feiner, Hughes, "Computer Graphics, Principles and +// Practice" for a discussion of forward differencing. +// +// If we have a set of interpolation points p0, ..., pn, we may specify +// curve segments between p0 and p1, and between pn-1 and pn by using the +// following constraints: +// f''(p0.x) = 0 and +// f''(pn.x) = 0. +// +// Substituting the results for a and b in +// +// 2*b + 6*a*xi = 0 +// +// we get +// +// ki = (3*dy/dx - kj)/2; +// +// or by substituting the results for a and b in +// +// 2*b + 6*a*xj = 0 +// +// we get +// +// kj = (3*dy/dx - ki)/2; +// +// Finally, if we have only two interpolation points, the cubic polynomial +// will degenerate to a straight line if we set +// +// ki = kj = dy/dx; +// + + +#if SPLINE_BRUTE_FORCE +#define interpolate_segment interpolate_brute_force +#else +#define interpolate_segment interpolate_forward_difference +#endif + + +// ---------------------------------------------------------------------------- +// Calculation of coefficients. +// ---------------------------------------------------------------------------- +inline +void cubic_coefficients(double x1, double y1, double x2, double y2, + double k1, double k2, + double& a, double& b, double& c, double& d) +{ + double dx = x2 - x1, dy = y2 - y1; + + a = ((k1 + k2) - 2*dy/dx)/(dx*dx); + b = ((k2 - k1)/dx - 3*(x1 + x2)*a)/2; + c = k1 - (3*x1*a + 2*b)*x1; + d = y1 - ((x1*a + b)*x1 + c)*x1; +} + +// ---------------------------------------------------------------------------- +// Evaluation of cubic polynomial by brute force. +// ---------------------------------------------------------------------------- +template +inline +void interpolate_brute_force(double x1, double y1, double x2, double y2, + double k1, double k2, + PointPlotter plot, double res) +{ + double a, b, c, d; + cubic_coefficients(x1, y1, x2, y2, k1, k2, a, b, c, d); + + // Calculate each point. + for (double x = x1; x <= x2; x += res) { + double y = ((a*x + b)*x + c)*x + d; + plot(x, y); + } +} + +// ---------------------------------------------------------------------------- +// Evaluation of cubic polynomial by forward differencing. +// ---------------------------------------------------------------------------- +template +inline +void interpolate_forward_difference(double x1, double y1, double x2, double y2, + double k1, double k2, + PointPlotter plot, double res) +{ + double a, b, c, d; + cubic_coefficients(x1, y1, x2, y2, k1, k2, a, b, c, d); + + double y = ((a*x1 + b)*x1 + c)*x1 + d; + double dy = (3*a*(x1 + res) + 2*b)*x1*res + ((a*res + b)*res + c)*res; + double d2y = (6*a*(x1 + res) + 2*b)*res*res; + double d3y = 6*a*res*res*res; + + // Calculate each point. + for (double x = x1; x <= x2; x += res) { + plot(x, y); + y += dy; dy += d2y; d2y += d3y; + } +} + +template +inline +double x(PointIter p) +{ + return (*p)[0]; +} + +template +inline +double y(PointIter p) +{ + return (*p)[1]; +} + +// ---------------------------------------------------------------------------- +// Evaluation of complete interpolating function. +// Note that since each curve segment is controlled by four points, the +// end points will not be interpolated. If extra control points are not +// desirable, the end points can simply be repeated to ensure interpolation. +// Note also that points of non-differentiability and discontinuity can be +// introduced by repeating points. +// ---------------------------------------------------------------------------- +template +inline +void interpolate(PointIter p0, PointIter pn, PointPlotter plot, double res) +{ + double k1, k2; + + // Set up points for first curve segment. + PointIter p1 = p0; ++p1; + PointIter p2 = p1; ++p2; + PointIter p3 = p2; ++p3; + + // Draw each curve segment. + for (; p2 != pn; ++p0, ++p1, ++p2, ++p3) { + // p1 and p2 equal; single point. + if (x(p1) == x(p2)) { + continue; + } + // Both end points repeated; straight line. + if (x(p0) == x(p1) && x(p2) == x(p3)) { + k1 = k2 = (y(p2) - y(p1))/(x(p2) - x(p1)); + } + // p0 and p1 equal; use f''(x1) = 0. + else if (x(p0) == x(p1)) { + k2 = (y(p3) - y(p1))/(x(p3) - x(p1)); + k1 = (3*(y(p2) - y(p1))/(x(p2) - x(p1)) - k2)/2; + } + // p2 and p3 equal; use f''(x2) = 0. + else if (x(p2) == x(p3)) { + k1 = (y(p2) - y(p0))/(x(p2) - x(p0)); + k2 = (3*(y(p2) - y(p1))/(x(p2) - x(p1)) - k1)/2; + } + // Normal curve. + else { + k1 = (y(p2) - y(p0))/(x(p2) - x(p0)); + k2 = (y(p3) - y(p1))/(x(p3) - x(p1)); + } + + interpolate_segment(x(p1), y(p1), x(p2), y(p2), k1, k2, plot, res); + } +} + +// ---------------------------------------------------------------------------- +// Class for plotting integers into an array. +// ---------------------------------------------------------------------------- +template +class PointPlotter +{ + protected: + FN* f; + + public: + PointPlotter(FN* arr) : f(arr) + { + } + + void operator ()(double x, double y) + { + // Clamp negative values to zero. + if (y < 0) { + y = 0; + } + + f[FN(x)] = FN(y); + } +}; + +RESID_NAMESPACE_STOP + +#endif // not __SPLINE_H__ diff --git a/MCUME_teensy/teensy64/reSID/version.cpp b/MCUME_teensy/teensy64/reSID/version.cpp new file mode 100755 index 0000000..3b61afd --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/version.cpp @@ -0,0 +1,21 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __VERSION_CC__ +#include "siddefs.h" diff --git a/MCUME_teensy/teensy64/reSID/voice.cpp b/MCUME_teensy/teensy64/reSID/voice.cpp new file mode 100755 index 0000000..e24bcdb --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/voice.cpp @@ -0,0 +1,152 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __VOICE_CC__ +#include "voice.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +Voice::Voice() + : muted(false) +{ + //set_chip_model(MOS6581); + {//instead: + wave_zero = 0x380; + voice_DC = 0x800*0xff; + } +} + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void Voice::set_chip_model(chip_model model) +{ + wave.set_chip_model(model); + + if (model == MOS6581) { + // The waveform D/A converter introduces a DC offset in the signal + // to the envelope multiplying D/A converter. The "zero" level of + // the waveform D/A converter can be found as follows: + // + // Measure the "zero" voltage of voice 3 on the SID audio output + // pin, routing only voice 3 to the mixer ($d417 = $0b, $d418 = + // $0f, all other registers zeroed). + // + // Then set the sustain level for voice 3 to maximum and search for + // the waveform output value yielding the same voltage as found + // above. This is done by trying out different waveform output + // values until the correct value is found, e.g. with the following + // program: + // + // lda #$08 + // sta $d412 + // lda #$0b + // sta $d417 + // lda #$0f + // sta $d418 + // lda #$f0 + // sta $d414 + // lda #$21 + // sta $d412 + // lda #$01 + // sta $d40e + // + // ldx #$00 + // lda #$38 ; Tweak this to find the "zero" level + //l cmp $d41b + // bne l + // stx $d40e ; Stop frequency counter - freeze waveform output + // brk + // + // The waveform output range is 0x000 to 0xfff, so the "zero" + // level should ideally have been 0x800. In the measured chip, the + // waveform output "zero" level was found to be 0x380 (i.e. $d41b + // = 0x38) at 5.94V. + + wave_zero = 0x380; + + // The envelope multiplying D/A converter introduces another DC + // offset. This is isolated by the following measurements: + // + // * The "zero" output level of the mixer at full volume is 5.44V. + // * Routing one voice to the mixer at full volume yields + // 6.75V at maximum voice output (wave = 0xfff, sustain = 0xf) + // 5.94V at "zero" voice output (wave = any, sustain = 0x0) + // 5.70V at minimum voice output (wave = 0x000, sustain = 0xf) + // * The DC offset of one voice is (5.94V - 5.44V) = 0.50V + // * The dynamic range of one voice is |6.75V - 5.70V| = 1.05V + // * The DC offset is thus 0.50V/1.05V ~ 1/2 of the dynamic range. + // + // Note that by removing the DC offset, we get the following ranges for + // one voice: + // y > 0: (6.75V - 5.44V) - 0.50V = 0.81V + // y < 0: (5.70V - 5.44V) - 0.50V = -0.24V + // The scaling of the voice amplitude is not symmetric about y = 0; + // this follows from the DC level in the waveform output. + + voice_DC = 0x800*0xff; + } + else { + // No DC offsets in the MOS8580. + wave_zero = 0x800; + voice_DC = 0; + } +} +*/ +// ---------------------------------------------------------------------------- +// Set sync source. +// ---------------------------------------------------------------------------- +void Voice::set_sync_source(Voice* source) +{ + wave.set_sync_source(&source->wave); +} + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void Voice::writeCONTROL_REG(reg8 control) +{ + wave.writeCONTROL_REG(control); + envelope.writeCONTROL_REG(control); +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void Voice::reset() +{ + wave.reset(); + envelope.reset(); +} + + +// ---------------------------------------------------------------------------- +// Voice mute. +// ---------------------------------------------------------------------------- +void Voice::mute(bool enable) +{ + // enable = true (means voice is muted) + muted = enable; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/voice.h b/MCUME_teensy/teensy64/reSID/voice.h new file mode 100755 index 0000000..119d26d --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/voice.h @@ -0,0 +1,87 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __VOICE_H__ +#define __VOICE_H__ + +#include "siddefs.h" +#include "wave.h" +#include "envelope.h" + +RESID_NAMESPACE_START + +class Voice +{ +public: + Voice(); + +// void set_chip_model(chip_model model); + void set_sync_source(Voice*); + void reset(); + void mute(bool enable); + + void writeCONTROL_REG(reg8); + + // Amplitude modulated waveform output. + // Range [-2048*255, 2047*255]. + RESID_INLINE sound_sample output(); + +protected: + WaveformGenerator wave; + EnvelopeGenerator envelope; + bool muted; + + // Waveform D/A zero level. + sound_sample wave_zero; + + // Multiplying D/A DC offset. + sound_sample voice_DC; + +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following function is defined inline because it is called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__VOICE_CC__) + +// ---------------------------------------------------------------------------- +// Amplitude modulated waveform output. +// Ideal range [-2048*255, 2047*255]. +// ---------------------------------------------------------------------------- +RESID_INLINE +sound_sample Voice::output() +{ + if (!muted) + { // Multiply oscillator output with envelope output. + return (wave.output() - wave_zero)*envelope.output() + voice_DC; + } else { + return 0; + } +} + +#endif // RESID_INLINING || defined(__VOICE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __VOICE_H__ diff --git a/MCUME_teensy/teensy64/reSID/wave.cpp b/MCUME_teensy/teensy64/reSID/wave.cpp new file mode 100755 index 0000000..9da1a58 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave.cpp @@ -0,0 +1,154 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#define __WAVE_CC__ +#include "wave.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// Constructor. +// ---------------------------------------------------------------------------- +WaveformGenerator::WaveformGenerator() +{ + sync_source = this; + + // set_chip_model(MOS6581); + {//instead: + wave__ST = &wave6581__ST[0]; + wave_P_T = &wave6581_P_T[0]; + wave_PS_ = &wave6581_PS_[0]; + wave_PST = &wave6581_PST[0]; + } + reset(); +} + + +// ---------------------------------------------------------------------------- +// Set sync source. +// ---------------------------------------------------------------------------- +void WaveformGenerator::set_sync_source(WaveformGenerator* source) +{ + sync_source = source; + source->sync_dest = this; +} + + +// ---------------------------------------------------------------------------- +// Set chip model. +// ---------------------------------------------------------------------------- +/* +void WaveformGenerator::set_chip_model(chip_model model) +{ + if (model == MOS6581) { + wave__ST = &wave6581__ST[0]; + wave_P_T = &wave6581_P_T[0]; + wave_PS_ = &wave6581_PS_[0]; + wave_PST = &wave6581_PST[0]; + } + else { + wave__ST = &wave8580__ST[0]; + wave_P_T = &wave8580_P_T[0]; + wave_PS_ = &wave8580_PS_[0]; + wave_PST = &wave8580_PST[0]; + } +} +*/ + +// ---------------------------------------------------------------------------- +// Register functions. +// ---------------------------------------------------------------------------- +void WaveformGenerator::writeFREQ_LO(reg8 freq_lo) +{ + freq = (freq & 0xff00) | (freq_lo & 0x00ff); +} + +void WaveformGenerator::writeFREQ_HI(reg8 freq_hi) +{ + freq = (((unsigned int) freq_hi << 8) & 0xff00) | (freq & 0x00ff); +} + +void WaveformGenerator::writePW_LO(reg8 pw_lo) +{ + pw = (pw & 0xf00) | (pw_lo & 0x0ff); +} + +void WaveformGenerator::writePW_HI(reg8 pw_hi) +{ + pw = (((unsigned int)pw_hi << 8) & 0xf00) | (pw & 0x0ff); +} + +void WaveformGenerator::writeCONTROL_REG(reg8 control) +{ + waveform = (control >> 4) & 0x0f; + ring_mod = control & 0x04; + sync = control & 0x02; + + reg8 test_next = control & 0x08; + + // Test bit set. + // The accumulator and the shift register are both cleared. + // NB! The shift register is not really cleared immediately. It seems like + // the individual bits in the shift register start to fade down towards + // zero when test is set. All bits reach zero within approximately + // $2000 - $4000 cycles. + // This is not modeled. There should fortunately be little audible output + // from this peculiar behavior. + if (test_next) { + accumulator = 0; + shift_register = 0; + } + // Test bit cleared. + // The accumulator starts counting, and the shift register is reset to + // the value 0x7ffff8. + // NB! The shift register will not actually be set to this exact value if the + // shift register bits have not had time to fade to zero. + // This is not modeled. + else if (test) { + shift_register = 0x7ffff8; + } + + test = test_next; + + // The gate bit is handled by the EnvelopeGenerator. +} + +reg8 WaveformGenerator::readOSC() +{ + return output() >> 4; +} + +// ---------------------------------------------------------------------------- +// SID reset. +// ---------------------------------------------------------------------------- +void WaveformGenerator::reset() +{ + accumulator = 0; + shift_register = 0x7ffff8; + freq = 0; + pw = 0; + + test = 0; + ring_mod = 0; + sync = 0; + + msb_rising = false; +} + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave.h b/MCUME_teensy/teensy64/reSID/wave.h new file mode 100755 index 0000000..376960d --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave.h @@ -0,0 +1,514 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#ifndef __WAVE_H__ +#define __WAVE_H__ + +#include "siddefs.h" + +RESID_NAMESPACE_START + +// ---------------------------------------------------------------------------- +// A 24 bit accumulator is the basis for waveform generation. FREQ is added to +// the lower 16 bits of the accumulator each cycle. +// The accumulator is set to zero when TEST is set, and starts counting +// when TEST is cleared. +// The noise waveform is taken from intermediate bits of a 23 bit shift +// register. This register is clocked by bit 19 of the accumulator. +// ---------------------------------------------------------------------------- +class WaveformGenerator +{ +public: + WaveformGenerator(); + + void set_sync_source(WaveformGenerator*); + //void set_chip_model(chip_model model); + + RESID_INLINE void clock(); + RESID_INLINE void clock(cycle_count delta_t); + RESID_INLINE void synchronize(); + void reset(); + + void writeFREQ_LO(reg8); + void writeFREQ_HI(reg8); + void writePW_LO(reg8); + void writePW_HI(reg8); + void writeCONTROL_REG(reg8); + reg8 readOSC(); + + // 12-bit waveform output. + RESID_INLINE reg12 output(); + +protected: + const WaveformGenerator* sync_source; + WaveformGenerator* sync_dest; + + // Tell whether the accumulator MSB was set high on this cycle. + bool msb_rising; + + reg24 accumulator; + reg24 shift_register; + + // Fout = (Fn*Fclk/16777216)Hz + reg16 freq; + // PWout = (PWn/40.95)% + reg12 pw; + + // The control register right-shifted 4 bits; used for output function + // table lookup. + reg8 waveform; + + // The remaining control register bits. + reg8 test; + reg8 ring_mod; + reg8 sync; + // The gate bit is handled by the EnvelopeGenerator. + + // 16 possible combinations of waveforms. + RESID_INLINE reg12 output____(); + RESID_INLINE reg12 output___T(); + RESID_INLINE reg12 output__S_(); + RESID_INLINE reg12 output__ST(); + RESID_INLINE reg12 output_P__(); + RESID_INLINE reg12 output_P_T(); + RESID_INLINE reg12 output_PS_(); + RESID_INLINE reg12 output_PST(); + RESID_INLINE reg12 outputN___(); + RESID_INLINE reg12 outputN__T(); + RESID_INLINE reg12 outputN_S_(); + RESID_INLINE reg12 outputN_ST(); + RESID_INLINE reg12 outputNP__(); + RESID_INLINE reg12 outputNP_T(); + RESID_INLINE reg12 outputNPS_(); + RESID_INLINE reg12 outputNPST(); + + // Sample data for combinations of waveforms. + /* + static reg8 wave6581__ST[]; + static reg8 wave6581_P_T[]; + static reg8 wave6581_PS_[]; + static reg8 wave6581_PST[]; + + static reg8 wave8580__ST[]; + static reg8 wave8580_P_T[]; + static reg8 wave8580_PS_[]; + static reg8 wave8580_PST[]; + + reg8* wave__ST; + reg8* wave_P_T; + reg8* wave_PS_; + reg8* wave_PST; +*/ + + const reg8* wave__ST; + const reg8* wave_P_T; + const reg8* wave_PS_; + const reg8* wave_PST; + +friend class Voice; +friend class SID; +}; + + +// ---------------------------------------------------------------------------- +// Inline functions. +// The following functions are defined inline because they are called every +// time a sample is calculated. +// ---------------------------------------------------------------------------- + +#if RESID_INLINING || defined(__WAVE_CC__) + +// ---------------------------------------------------------------------------- +// SID clocking - 1 cycle. +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::clock() +{ + // No operation if test bit is set. + if (test) { + return; + } + + reg24 accumulator_prev = accumulator; + + // Calculate new accumulator value; + accumulator += freq; + accumulator &= 0xffffff; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = !(accumulator_prev & 0x800000) && (accumulator & 0x800000); + + // Shift noise register once for each time accumulator bit 19 is set high. + if (!(accumulator_prev & 0x080000) && (accumulator & 0x080000)) { + reg24 bit0 = ((shift_register >> 22) ^ (shift_register >> 17)) & 0x1; + shift_register <<= 1; + shift_register &= 0x7fffff; + shift_register |= bit0; + } +} + +// ---------------------------------------------------------------------------- +// SID clocking - delta_t cycles. +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::clock(cycle_count delta_t) +{ + // No operation if test bit is set. + if (test) { + return; + } + + reg24 accumulator_prev = accumulator; + + // Calculate new accumulator value; + reg24 delta_accumulator = delta_t*freq; + accumulator += delta_accumulator; + accumulator &= 0xffffff; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = !(accumulator_prev & 0x800000) && (accumulator & 0x800000); + + // Shift noise register once for each time accumulator bit 19 is set high. + // Bit 19 is set high each time 2^20 (0x100000) is added to the accumulator. + reg24 shift_period = 0x100000; + + while (delta_accumulator) { + if (delta_accumulator < shift_period) { + shift_period = delta_accumulator; + // Determine whether bit 19 is set on the last period. + // NB! Requires two's complement integer. + if (shift_period <= 0x080000) { + // Check for flip from 0 to 1. + if (((accumulator - shift_period) & 0x080000) || !(accumulator & 0x080000)) + { + break; + } + } + else { + // Check for flip from 0 (to 1 or via 1 to 0) or from 1 via 0 to 1. + if (((accumulator - shift_period) & 0x080000) && !(accumulator & 0x080000)) + { + break; + } + } + } + + // Shift the noise/random register. + // NB! The shift is actually delayed 2 cycles, this is not modeled. + reg24 bit0 = ((shift_register >> 22) ^ (shift_register >> 17)) & 0x1; + shift_register <<= 1; + shift_register &= 0x7fffff; + shift_register |= bit0; + + delta_accumulator -= shift_period; + } +} + + +// ---------------------------------------------------------------------------- +// Synchronize oscillators. +// This must be done after all the oscillators have been clock()'ed since the +// oscillators operate in parallel. +// Note that the oscillators must be clocked exactly on the cycle when the +// MSB is set high for hard sync to operate correctly. See SID::clock(). +// ---------------------------------------------------------------------------- +RESID_INLINE +void WaveformGenerator::synchronize() +{ + // A special case occurs when a sync source is synced itself on the same + // cycle as when its MSB is set high. In this case the destination will + // not be synced. This has been verified by sampling OSC3. + if (msb_rising && sync_dest->sync && !(sync && sync_source->msb_rising)) { + sync_dest->accumulator = 0; + } +} + + +// ---------------------------------------------------------------------------- +// Output functions. +// NB! The output from SID 8580 is delayed one cycle compared to SID 6581, +// this is not modeled. +// ---------------------------------------------------------------------------- + +// No waveform: +// Zero output. +// +RESID_INLINE +reg12 WaveformGenerator::output____() +{ + return 0x000; +} + +// Triangle: +// The upper 12 bits of the accumulator are used. +// The MSB is used to create the falling edge of the triangle by inverting +// the lower 11 bits. The MSB is thrown away and the lower 11 bits are +// left-shifted (half the resolution, full amplitude). +// Ring modulation substitutes the MSB with MSB EOR sync_source MSB. +// +RESID_INLINE +reg12 WaveformGenerator::output___T() +{ + reg24 msb = (ring_mod ? accumulator ^ sync_source->accumulator : accumulator) + & 0x800000; + return ((msb ? ~accumulator : accumulator) >> 11) & 0xffe; +} + +// Sawtooth: +// The output is identical to the upper 12 bits of the accumulator. +// +RESID_INLINE +reg12 WaveformGenerator::output__S_() +{ + return accumulator >> 12; +} + +// Pulse: +// The upper 12 bits of the accumulator are used. +// These bits are compared to the pulse width register by a 12 bit digital +// comparator; output is either all one or all zero bits. +// NB! The output is actually delayed one cycle after the compare. +// This is not modeled. +// +// The test bit, when set to one, holds the pulse waveform output at 0xfff +// regardless of the pulse width setting. +// +RESID_INLINE +reg12 WaveformGenerator::output_P__() +{ + return (test || (accumulator >> 12) >= pw) ? 0xfff : 0x000; +} + +// Noise: +// The noise output is taken from intermediate bits of a 23-bit shift register +// which is clocked by bit 19 of the accumulator. +// NB! The output is actually delayed 2 cycles after bit 19 is set high. +// This is not modeled. +// +// Operation: Calculate EOR result, shift register, set bit 0 = result. +// +// ----------------------->--------------------- +// | | +// ----EOR---- | +// | | | +// 2 2 2 1 1 1 1 1 1 1 1 1 1 | +// Register bits: 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <--- +// | | | | | | | | +// OSC3 bits : 7 6 5 4 3 2 1 0 +// +// Since waveform output is 12 bits the output is left-shifted 4 times. +// +RESID_INLINE +reg12 WaveformGenerator::outputN___() +{ + return + ((shift_register & 0x400000) >> 11) | + ((shift_register & 0x100000) >> 10) | + ((shift_register & 0x010000) >> 7) | + ((shift_register & 0x002000) >> 5) | + ((shift_register & 0x000800) >> 4) | + ((shift_register & 0x000080) >> 1) | + ((shift_register & 0x000010) << 1) | + ((shift_register & 0x000004) << 2); +} + +// Combined waveforms: +// By combining waveforms, the bits of each waveform are effectively short +// circuited. A zero bit in one waveform will result in a zero output bit +// (thus the infamous claim that the waveforms are AND'ed). +// However, a zero bit in one waveform will also affect the neighboring bits +// in the output. The reason for this has not been determined. +// +// Example: +// +// 1 1 +// Bit # 1 0 9 8 7 6 5 4 3 2 1 0 +// ----------------------- +// Sawtooth 0 0 0 1 1 1 1 1 1 0 0 0 +// +// Triangle 0 0 1 1 1 1 1 1 0 0 0 0 +// +// AND 0 0 0 1 1 1 1 1 0 0 0 0 +// +// Output 0 0 0 0 1 1 1 0 0 0 0 0 +// +// +// This behavior would be quite difficult to model exactly, since the SID +// in this case does not act as a digital state machine. Tests show that minor +// (1 bit) differences can actually occur in the output from otherwise +// identical samples from OSC3 when waveforms are combined. To further +// complicate the situation the output changes slightly with time (more +// neighboring bits are successively set) when the 12-bit waveform +// registers are kept unchanged. +// +// It is probably possible to come up with a valid model for the +// behavior, however this would be far too slow for practical use since it +// would have to be based on the mutual influence of individual bits. +// +// The output is instead approximated by using the upper bits of the +// accumulator as an index to look up the combined output in a table +// containing actual combined waveform samples from OSC3. +// These samples are 8 bit, so 4 bits of waveform resolution is lost. +// All OSC3 samples are taken with FREQ=0x1000, adding a 1 to the upper 12 +// bits of the accumulator each cycle for a sample period of 4096 cycles. +// +// Sawtooth+Triangle: +// The sawtooth output is used to look up an OSC3 sample. +// +// Pulse+Triangle: +// The triangle output is right-shifted and used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// The reason for using the triangle output as the index is to handle ring +// modulation. Only the first half of the sample is used, which should be OK +// since the triangle waveform has half the resolution of the accumulator. +// +// Pulse+Sawtooth: +// The sawtooth output is used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// +// Pulse+Sawtooth+Triangle: +// The sawtooth output is used to look up an OSC3 sample. +// The sample is output if the pulse output is on. +// +RESID_INLINE +reg12 WaveformGenerator::output__ST() +{ + return wave__ST[output__S_()] << 4; +} + +RESID_INLINE +reg12 WaveformGenerator::output_P_T() +{ + return (wave_P_T[output___T() >> 1] << 4) & output_P__(); +} + +RESID_INLINE +reg12 WaveformGenerator::output_PS_() +{ + return (wave_PS_[output__S_()] << 4) & output_P__(); +} + +RESID_INLINE +reg12 WaveformGenerator::output_PST() +{ + return (wave_PST[output__S_()] << 4) & output_P__(); +} + +// Combined waveforms including noise: +// All waveform combinations including noise output zero after a few cycles. +// NB! The effects of such combinations are not fully explored. It is claimed +// that the shift register may be filled with zeroes and locked up, which +// seems to be true. +// We have not attempted to model this behavior, suffice to say that +// there is very little audible output from waveform combinations including +// noise. We hope that nobody is actually using it. +// +RESID_INLINE +reg12 WaveformGenerator::outputN__T() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputN_S_() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputN_ST() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNP__() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNP_T() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNPS_() +{ + return 0; +} + +RESID_INLINE +reg12 WaveformGenerator::outputNPST() +{ + return 0; +} + +// ---------------------------------------------------------------------------- +// Select one of 16 possible combinations of waveforms. +// ---------------------------------------------------------------------------- +RESID_INLINE +reg12 WaveformGenerator::output() +{ + // It may seem cleaner to use an array of member functions to return + // waveform output; however a switch with inline functions is faster. + + switch (waveform) { + default: + case 0x0: + return output____(); + case 0x1: + return output___T(); + case 0x2: + return output__S_(); + case 0x3: + return output__ST(); + case 0x4: + return output_P__(); + case 0x5: + return output_P_T(); + case 0x6: + return output_PS_(); + case 0x7: + return output_PST(); + case 0x8: + return outputN___(); + case 0x9: + return outputN__T(); + case 0xa: + return outputN_S_(); + case 0xb: + return outputN_ST(); + case 0xc: + return outputNP__(); + case 0xd: + return outputNP_T(); + case 0xe: + return outputNPS_(); + case 0xf: + return outputNPST(); + } +} + +#endif // RESID_INLINING || defined(__WAVE_CC__) + +RESID_NAMESPACE_STOP + +#endif // not __WAVE_H__ diff --git a/MCUME_teensy/teensy64/reSID/wave6581_PST.cpp b/MCUME_teensy/teensy64/reSID/wave6581_PST.cpp new file mode 100755 index 0000000..2198373 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave6581_PST.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_PST[] = +const reg8 wave6581_PST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +/* 0x7f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +/* 0x7f8: */ 0x00, 0x00, 0x00, 0x78, 0x78, 0x7e, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x78, 0x78, 0x7e, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave6581_PS_.cpp b/MCUME_teensy/teensy64/reSID/wave6581_PS_.cpp new file mode 100755 index 0000000..08febfe --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave6581_PS_.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_PS_[] = +const reg8 wave6581_PS_[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, +/* 0x3f8: */ 0x00, 0x30, 0x38, 0x3f, 0x3e, 0x3f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5f, +/* 0x5f8: */ 0x00, 0x40, 0x40, 0x5f, 0x5c, 0x5f, 0x5f, 0x5f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6b, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x6d, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x6e, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x6f, +/* 0x6f8: */ 0x00, 0x60, 0x60, 0x6f, 0x60, 0x6f, 0x6f, 0x6f, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x738: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x60, 0x73, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x758: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x75, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x768: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x76, +/* 0x770: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x77, +/* 0x778: */ 0x00, 0x70, 0x70, 0x77, 0x70, 0x77, 0x77, 0x77, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x798: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x79, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x70, 0x7a, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7b, +/* 0x7b8: */ 0x40, 0x70, 0x70, 0x7b, 0x78, 0x7b, 0x7b, 0x7b, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7c, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7d, +/* 0x7d8: */ 0x40, 0x70, 0x78, 0x7d, 0x78, 0x7d, 0x7d, 0x7d, +/* 0x7e0: */ 0x00, 0x40, 0x40, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0x7e8: */ 0x60, 0x78, 0x78, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0x7f0: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x7f8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, +/* 0xbf8: */ 0x00, 0x30, 0x38, 0x3f, 0x3e, 0x3f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5f, +/* 0xdf8: */ 0x00, 0x40, 0x40, 0x5f, 0x5c, 0x5f, 0x5f, 0x5f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6b, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6d, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x6e, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x6f, +/* 0xef8: */ 0x00, 0x60, 0x60, 0x6f, 0x60, 0x6f, 0x6f, 0x6f, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x60, 0x73, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x60, 0x75, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x76, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x77, +/* 0xf78: */ 0x00, 0x70, 0x70, 0x77, 0x70, 0x77, 0x77, 0x77, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x79, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x70, 0x7a, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7b, +/* 0xfb8: */ 0x40, 0x70, 0x70, 0x7b, 0x78, 0x7b, 0x7b, 0x7b, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x70, 0x7c, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7d, +/* 0xfd8: */ 0x40, 0x70, 0x78, 0x7d, 0x78, 0x7d, 0x7d, 0x7d, +/* 0xfe0: */ 0x00, 0x40, 0x40, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0xfe8: */ 0x60, 0x78, 0x78, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0xff0: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7c, 0x7f, 0x7f, 0x7f, +/* 0xff8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave6581_P_T.cpp b/MCUME_teensy/teensy64/reSID/wave6581_P_T.cpp new file mode 100755 index 0000000..03c770f --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave6581_P_T.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581_P_T[] = +const reg8 wave6581_P_T[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x3f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x5f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x378: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x60, 0x6f, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x70, 0x77, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x70, 0x40, 0x70, 0x70, 0x7b, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, +/* 0x3e8: */ 0x00, 0x40, 0x40, 0x70, 0x60, 0x70, 0x78, 0x7d, +/* 0x3f0: */ 0x00, 0x40, 0x60, 0x78, 0x60, 0x78, 0x78, 0x7e, +/* 0x3f8: */ 0x70, 0x7c, 0x7c, 0x7f, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x578: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0xa0, 0xa0, 0xaf, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5b8: */ 0x00, 0x80, 0x80, 0xa0, 0x80, 0xa0, 0xb0, 0xb7, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xa0, +/* 0x5d8: */ 0x00, 0x80, 0x80, 0xa0, 0x80, 0xb0, 0xb0, 0xbb, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0x5e8: */ 0x80, 0x80, 0x80, 0xb0, 0x80, 0xb0, 0xb8, 0xbd, +/* 0x5f0: */ 0x80, 0x80, 0x80, 0xb8, 0xa0, 0xb8, 0xb8, 0xbe, +/* 0x5f8: */ 0xa0, 0xb8, 0xbc, 0xbf, 0xbe, 0xbf, 0xbf, 0xbf, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x670: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x678: */ 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x698: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0xc0, 0xc0, +/* 0x6b8: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd7, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x6d0: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0x6d8: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xdb, +/* 0x6e0: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xd0, +/* 0x6e8: */ 0x80, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd8, 0xdd, +/* 0x6f0: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd8, 0xd8, 0xde, +/* 0x6f8: */ 0xc0, 0xd8, 0xdc, 0xdf, 0xdc, 0xdf, 0xdf, 0xdf, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x718: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x728: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x730: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x738: */ 0x80, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe7, +/* 0x740: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0xc0, +/* 0x748: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x750: */ 0x00, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, +/* 0x758: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xeb, +/* 0x760: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0x768: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xed, +/* 0x770: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, 0xe8, 0xee, +/* 0x778: */ 0xe0, 0xe8, 0xec, 0xef, 0xec, 0xef, 0xef, 0xef, +/* 0x780: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0x788: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, +/* 0x790: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, +/* 0x798: */ 0xc0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf3, +/* 0x7a0: */ 0x80, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xf0, +/* 0x7a8: */ 0xc0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf5, +/* 0x7b0: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf6, +/* 0x7b8: */ 0xf0, 0xf0, 0xf4, 0xf7, 0xf4, 0xf7, 0xf7, 0xf7, +/* 0x7c0: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0x7c8: */ 0xe0, 0xe0, 0xe0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf9, +/* 0x7d0: */ 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xfa, +/* 0x7d8: */ 0xf0, 0xf8, 0xf8, 0xfb, 0xf8, 0xfb, 0xfb, 0xfb, +/* 0x7e0: */ 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xfc, 0xfc, +/* 0x7e8: */ 0xf8, 0xfc, 0xfc, 0xfd, 0xfc, 0xfd, 0xfd, 0xfd, +/* 0x7f0: */ 0xf8, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0x7f8: */ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x800: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, +/* 0x808: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0xf8, +/* 0x810: */ 0xfd, 0xfd, 0xfd, 0xfc, 0xfd, 0xfc, 0xfc, 0xf8, +/* 0x818: */ 0xfc, 0xfc, 0xfc, 0xf0, 0xf8, 0xf0, 0xf0, 0xe0, +/* 0x820: */ 0xfb, 0xfb, 0xfb, 0xf8, 0xfb, 0xf8, 0xf8, 0xf0, +/* 0x828: */ 0xfa, 0xf8, 0xf8, 0xf0, 0xf8, 0xf0, 0xf0, 0xe0, +/* 0x830: */ 0xf9, 0xf8, 0xf8, 0xf0, 0xf8, 0xf0, 0xe0, 0xe0, +/* 0x838: */ 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, +/* 0x840: */ 0xf7, 0xf7, 0xf7, 0xf4, 0xf7, 0xf4, 0xf0, 0xf0, +/* 0x848: */ 0xf6, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, +/* 0x850: */ 0xf5, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, +/* 0x858: */ 0xf0, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xc0, 0x80, +/* 0x860: */ 0xf3, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, +/* 0x868: */ 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x870: */ 0xf0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x878: */ 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x880: */ 0xef, 0xef, 0xef, 0xec, 0xef, 0xec, 0xe8, 0xe0, +/* 0x888: */ 0xee, 0xe8, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, +/* 0x890: */ 0xed, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, +/* 0x898: */ 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x8a0: */ 0xeb, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, +/* 0x8a8: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8b0: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8b8: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0xe7, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xc0, 0x80, +/* 0x8c8: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8d0: */ 0xe0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x8d8: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0xdf, 0xdf, 0xdf, 0xdc, 0xdf, 0xdc, 0xd8, 0xc0, +/* 0x908: */ 0xde, 0xd8, 0xd8, 0xc0, 0xd8, 0xc0, 0xc0, 0xc0, +/* 0x910: */ 0xdd, 0xd8, 0xd0, 0xc0, 0xd0, 0xc0, 0xc0, 0x80, +/* 0x918: */ 0xd0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x920: */ 0xdb, 0xd0, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x928: */ 0xc0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x00, +/* 0x930: */ 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0x938: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0xd7, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x948: */ 0xc0, 0xc0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x950: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x958: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x968: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, +/* 0x988: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x990: */ 0xc0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0xbf, 0xbf, 0xbf, 0xbe, 0xbf, 0xbc, 0xbc, 0xa0, +/* 0xa08: */ 0xbe, 0xbc, 0xb8, 0xa0, 0xb8, 0xa0, 0x80, 0x80, +/* 0xa10: */ 0xbd, 0xb8, 0xb0, 0x80, 0xb0, 0x80, 0x80, 0x80, +/* 0xa18: */ 0xb0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xa20: */ 0xbb, 0xb0, 0xb0, 0x80, 0xa0, 0x80, 0x80, 0x00, +/* 0xa28: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa30: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0xb7, 0xb0, 0xa0, 0x80, 0xa0, 0x80, 0x80, 0x00, +/* 0xa48: */ 0xa0, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0xaf, 0xa0, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x00, +/* 0xa88: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x9f, 0x90, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc00: */ 0x7f, 0x7f, 0x7f, 0x7e, 0x7f, 0x7c, 0x7c, 0x70, +/* 0xc08: */ 0x7e, 0x7c, 0x78, 0x60, 0x78, 0x60, 0x60, 0x00, +/* 0xc10: */ 0x7d, 0x78, 0x78, 0x60, 0x70, 0x40, 0x40, 0x00, +/* 0xc18: */ 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x7b, 0x78, 0x70, 0x40, 0x70, 0x40, 0x00, 0x00, +/* 0xc28: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x77, 0x70, 0x70, 0x00, 0x60, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x6f, 0x60, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x5f, 0x58, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x3f, 0x3c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave6581__ST.cpp b/MCUME_teensy/teensy64/reSID/wave6581__ST.cpp new file mode 100755 index 0000000..ac5f52d --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave6581__ST.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave6581__ST[] = +const reg8 wave6581__ST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0x3f8: */ 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7e8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7f0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, +/* 0x7f8: */ 0x3e, 0x3e, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0xbf8: */ 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xf00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0xfe8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0xff0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, +/* 0xff8: */ 0x3e, 0x3e, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave8580_PST.cpp b/MCUME_teensy/teensy64/reSID/wave8580_PST.cpp new file mode 100755 index 0000000..f43f34d --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave8580_PST.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_PST[] = +const reg8 wave8580_PST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, +/* 0x7f0: */ 0x60, 0x20, 0x70, 0x70, 0x70, 0x70, 0x70, 0x78, +/* 0x7f8: */ 0x78, 0x78, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xdf8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8c, 0x9f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe80: */ 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0xe88: */ 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0xef0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xef8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0xf00: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf08: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf10: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf18: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf20: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf28: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf30: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf38: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf40: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf48: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf50: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf58: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf68: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xf70: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, +/* 0xf80: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf88: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf90: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf98: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfa0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfa8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xfb0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, +/* 0xfb8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfc0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfc8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfd0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfd8: */ 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe8: */ 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xff0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, +/* 0xff8: */ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave8580_PS_.cpp b/MCUME_teensy/teensy64/reSID/wave8580_PS_.cpp new file mode 100755 index 0000000..4b66a4b --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave8580_PS_.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_PS_[] = +const reg8 wave8580_PS_[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x1f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, +/* 0x3f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, +/* 0x3f8: */ 0x00, 0x0c, 0x1c, 0x3f, 0x1e, 0x3f, 0x3f, 0x3f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, +/* 0x5f8: */ 0x00, 0x00, 0x00, 0x5f, 0x0c, 0x5f, 0x5f, 0x5f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, +/* 0x6f8: */ 0x00, 0x40, 0x40, 0x6f, 0x40, 0x6f, 0x6f, 0x6f, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x61, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x768: */ 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x70, +/* 0x770: */ 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x70, +/* 0x778: */ 0x40, 0x60, 0x60, 0x77, 0x60, 0x77, 0x77, 0x77, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, +/* 0x798: */ 0x00, 0x40, 0x40, 0x60, 0x40, 0x60, 0x60, 0x79, +/* 0x7a0: */ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, +/* 0x7a8: */ 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x78, +/* 0x7b0: */ 0x40, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, +/* 0x7b8: */ 0x60, 0x70, 0x70, 0x78, 0x70, 0x79, 0x7b, 0x7b, +/* 0x7c0: */ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, +/* 0x7c8: */ 0x60, 0x60, 0x60, 0x70, 0x60, 0x70, 0x70, 0x7c, +/* 0x7d0: */ 0x60, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7c, +/* 0x7d8: */ 0x70, 0x78, 0x78, 0x7c, 0x78, 0x7c, 0x7c, 0x7d, +/* 0x7e0: */ 0x70, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x7c, +/* 0x7e8: */ 0x78, 0x7c, 0x7c, 0x7e, 0x7c, 0x7e, 0x7e, 0x7e, +/* 0x7f0: */ 0x7c, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, +/* 0x7f8: */ 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8d, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x8e, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x8f, +/* 0x9f8: */ 0x80, 0x80, 0x80, 0x9f, 0x80, 0x9f, 0x9f, 0x9f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x87, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x83, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0xad8: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xae0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xae8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, +/* 0xaf0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x87, +/* 0xaf8: */ 0x80, 0x80, 0x80, 0x87, 0x80, 0x8f, 0xaf, 0xaf, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, +/* 0xb28: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, +/* 0xb40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xb60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xb70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xb78: */ 0x80, 0x80, 0x80, 0xa0, 0x80, 0xa3, 0xb7, 0xb7, +/* 0xb80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb1, +/* 0xba0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xba8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0xbb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb0, +/* 0xbb8: */ 0x80, 0xa0, 0xa0, 0xb0, 0xa0, 0xb8, 0xb9, 0xbb, +/* 0xbc0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0xbc8: */ 0x80, 0x80, 0x80, 0xa0, 0x80, 0xa0, 0xa0, 0xb8, +/* 0xbd0: */ 0x80, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb8, +/* 0xbd8: */ 0xa0, 0xb0, 0xb0, 0xb8, 0xb0, 0xbc, 0xbc, 0xbd, +/* 0xbe0: */ 0xa0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb8, 0xb8, 0xbc, +/* 0xbe8: */ 0xb0, 0xb8, 0xb8, 0xbc, 0xb8, 0xbc, 0xbe, 0xbe, +/* 0xbf0: */ 0xb8, 0xbc, 0xbc, 0xbe, 0xbc, 0xbe, 0xbe, 0xbf, +/* 0xbf8: */ 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, +/* 0xc10: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc18: */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc28: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, +/* 0xc40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc7, +/* 0xc80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xc98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xca0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xca8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc3, +/* 0xcc0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xcc8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xcd0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xcd8: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc1, +/* 0xce0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xce8: */ 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xcf0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc7, +/* 0xcf8: */ 0xc0, 0xc0, 0xc0, 0xc7, 0xc0, 0xcf, 0xcf, 0xcf, +/* 0xd00: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd08: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd10: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd18: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xd28: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd30: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0xd38: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc3, +/* 0xd40: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0xd48: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0xd50: */ 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd58: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, +/* 0xd60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd68: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd70: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd78: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc7, 0xd7, +/* 0xd80: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd88: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd90: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xd98: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xda0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xda8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0xdb0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0xdb8: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd8, 0xdb, +/* 0xdc0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xdc8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, +/* 0xdd0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, +/* 0xdd8: */ 0xc0, 0xc0, 0xc0, 0xd8, 0xd0, 0xd8, 0xd8, 0xdd, +/* 0xde0: */ 0xc0, 0xc0, 0xc0, 0xd0, 0xc0, 0xd0, 0xd0, 0xdc, +/* 0xde8: */ 0xd0, 0xd8, 0xd8, 0xdc, 0xd8, 0xdc, 0xdc, 0xde, +/* 0xdf0: */ 0xd8, 0xdc, 0xdc, 0xde, 0xdc, 0xde, 0xde, 0xdf, +/* 0xdf8: */ 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, +/* 0xe00: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe08: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe10: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe18: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe20: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe28: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe30: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe38: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe3, +/* 0xe40: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe48: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xe50: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe58: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe1, +/* 0xe60: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe68: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xe70: */ 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xe78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe3, 0xe7, +/* 0xe80: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0xe88: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xe90: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xe98: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xea0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xea8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xeb0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xeb8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xeb, +/* 0xec0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xec8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xed0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xed8: */ 0xe0, 0xe0, 0xe0, 0xe8, 0xe0, 0xe8, 0xe8, 0xed, +/* 0xee0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xec, +/* 0xee8: */ 0xe0, 0xe0, 0xe0, 0xec, 0xe8, 0xec, 0xec, 0xee, +/* 0xef0: */ 0xe8, 0xe8, 0xe8, 0xec, 0xec, 0xee, 0xee, 0xef, +/* 0xef8: */ 0xec, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, +/* 0xf00: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf08: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf10: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf18: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0xf20: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, +/* 0xf28: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf0, +/* 0xf30: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf38: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf3, +/* 0xf40: */ 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf48: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf50: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf58: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf5, +/* 0xf60: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf68: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, 0xf4, 0xf6, +/* 0xf70: */ 0xf0, 0xf0, 0xf0, 0xf4, 0xf0, 0xf4, 0xf6, 0xf7, +/* 0xf78: */ 0xf4, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, +/* 0xf80: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, +/* 0xf88: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0xf90: */ 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0xf98: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, +/* 0xfa0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfa8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfa, +/* 0xfb0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfb, +/* 0xfb8: */ 0xf8, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, +/* 0xfc0: */ 0xf8, 0xf8, 0xf8, 0xfc, 0xf8, 0xfc, 0xfc, 0xfc, +/* 0xfc8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xfd0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, +/* 0xfd8: */ 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, +/* 0xfe0: */ 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xfe8: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xff0: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0xff8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave8580_P_T.cpp b/MCUME_teensy/teensy64/reSID/wave8580_P_T.cpp new file mode 100755 index 0000000..344e539 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave8580_P_T.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580_P_T[] = +const reg8 wave8580_P_T[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x3f, 0x3f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x5e, 0x5f, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x378: */ 0x00, 0x00, 0x00, 0x40, 0x40, 0x60, 0x60, 0x6f, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x60, +/* 0x3b8: */ 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x70, 0x77, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, +/* 0x3c8: */ 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, +/* 0x3d0: */ 0x40, 0x40, 0x40, 0x60, 0x60, 0x60, 0x60, 0x70, +/* 0x3d8: */ 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x78, 0x7b, +/* 0x3e0: */ 0x60, 0x60, 0x60, 0x70, 0x60, 0x70, 0x70, 0x70, +/* 0x3e8: */ 0x70, 0x70, 0x70, 0x78, 0x78, 0x78, 0x78, 0x7c, +/* 0x3f0: */ 0x78, 0x78, 0x78, 0x7c, 0x78, 0x7c, 0x7c, 0x7e, +/* 0x3f8: */ 0x7c, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x4d8: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4e8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4f0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x4f8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8e, 0x9f, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, +/* 0x530: */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x538: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x540: */ 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, +/* 0x548: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x550: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x558: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x560: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x568: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x570: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x578: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xaf, +/* 0x580: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x588: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x590: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x598: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5a0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5a8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5b0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5b8: */ 0x80, 0x80, 0x80, 0xa0, 0xa0, 0xa0, 0xa0, 0xb7, +/* 0x5c0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x5c8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, +/* 0x5d0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, 0xa0, +/* 0x5d8: */ 0xa0, 0xa0, 0xa0, 0xb0, 0xa0, 0xb0, 0xb0, 0xbb, +/* 0x5e0: */ 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb0, 0xb0, +/* 0x5e8: */ 0xa0, 0xb0, 0xb0, 0xb8, 0xb0, 0xb8, 0xb8, 0xbc, +/* 0x5f0: */ 0xb0, 0xb8, 0xb8, 0xb8, 0xb8, 0xbc, 0xbc, 0xbe, +/* 0x5f8: */ 0xbc, 0xbc, 0xbe, 0xbf, 0xbe, 0xbf, 0xbf, 0xbf, +/* 0x600: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x608: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x610: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x618: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x620: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x628: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x630: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x638: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x640: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x648: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x650: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, +/* 0x658: */ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x660: */ 0x80, 0x80, 0x80, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, +/* 0x668: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x670: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x678: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcf, +/* 0x680: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, +/* 0x688: */ 0xc0, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x690: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x698: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6a0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6a8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6b0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6b8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd7, +/* 0x6c0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6c8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6d0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x6d8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xd9, +/* 0x6e0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xd0, +/* 0x6e8: */ 0xc0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd8, 0xd8, 0xdc, +/* 0x6f0: */ 0xd0, 0xd0, 0xd8, 0xd8, 0xd8, 0xdc, 0xdc, 0xde, +/* 0x6f8: */ 0xdc, 0xdc, 0xde, 0xdf, 0xde, 0xdf, 0xdf, 0xdf, +/* 0x700: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x708: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x710: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x718: */ 0xc0, 0xc0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0x720: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, +/* 0x728: */ 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x730: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x738: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe7, +/* 0x740: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x748: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x750: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x758: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, +/* 0x760: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x768: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe8, 0xec, +/* 0x770: */ 0xe0, 0xe0, 0xe0, 0xe8, 0xe8, 0xe8, 0xec, 0xee, +/* 0x778: */ 0xec, 0xec, 0xec, 0xee, 0xee, 0xef, 0xef, 0xef, +/* 0x780: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x788: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, +/* 0x790: */ 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x798: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x7a0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x7a8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, +/* 0x7b0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf4, +/* 0x7b8: */ 0xf0, 0xf4, 0xf4, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, +/* 0x7c0: */ 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf8, 0xf8, 0xf8, +/* 0x7c8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x7d0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x7d8: */ 0xf8, 0xf8, 0xf8, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, +/* 0x7e0: */ 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0x7e8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, +/* 0x7f0: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0x7f8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x800: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +/* 0x808: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, +/* 0x810: */ 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0x818: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, +/* 0x820: */ 0xfb, 0xfb, 0xfb, 0xfa, 0xfa, 0xf8, 0xf8, 0xf8, +/* 0x828: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x830: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0x838: */ 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x840: */ 0xf7, 0xf7, 0xf7, 0xf6, 0xf6, 0xf4, 0xf4, 0xf0, +/* 0x848: */ 0xf4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x850: */ 0xf4, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x858: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x860: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0x868: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, +/* 0x870: */ 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x878: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x880: */ 0xef, 0xef, 0xef, 0xee, 0xee, 0xec, 0xec, 0xe8, +/* 0x888: */ 0xee, 0xec, 0xe8, 0xe8, 0xe8, 0xe0, 0xe0, 0xe0, +/* 0x890: */ 0xec, 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x898: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8a0: */ 0xe8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8a8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8b0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8b8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8c0: */ 0xe7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8c8: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0x8d0: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, +/* 0x8d8: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8e0: */ 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8e8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8f0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x8f8: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x900: */ 0xdf, 0xdf, 0xdf, 0xde, 0xdf, 0xde, 0xdc, 0xdc, +/* 0x908: */ 0xde, 0xdc, 0xdc, 0xd8, 0xd8, 0xd8, 0xd0, 0xd0, +/* 0x910: */ 0xdc, 0xd8, 0xd8, 0xd0, 0xd0, 0xd0, 0xd0, 0xc0, +/* 0x918: */ 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x920: */ 0xd9, 0xd0, 0xd0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x928: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x930: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x938: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x940: */ 0xd7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x948: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x950: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x958: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x960: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x968: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x970: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, +/* 0x978: */ 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x980: */ 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x988: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x990: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0x998: */ 0xc0, 0xc0, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x80, +/* 0x9a0: */ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, +/* 0x9a8: */ 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9b0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9b8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9c0: */ 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9c8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9d0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9d8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9e0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9e8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9f0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0x9f8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa00: */ 0xbf, 0xbf, 0xbf, 0xbe, 0xbf, 0xbe, 0xbc, 0xbc, +/* 0xa08: */ 0xbe, 0xbc, 0xbc, 0xb8, 0xb8, 0xb8, 0xb8, 0xb0, +/* 0xa10: */ 0xbc, 0xb8, 0xb8, 0xb0, 0xb8, 0xb0, 0xb0, 0xb0, +/* 0xa18: */ 0xb0, 0xb0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, +/* 0xa20: */ 0xbb, 0xb0, 0xb0, 0xa0, 0xb0, 0xa0, 0xa0, 0xa0, +/* 0xa28: */ 0xa0, 0xa0, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa30: */ 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa38: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa40: */ 0xb7, 0xb0, 0xa0, 0xa0, 0xa0, 0x80, 0x80, 0x80, +/* 0xa48: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa50: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa58: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa60: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa68: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa70: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa78: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa80: */ 0xaf, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xa98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xaa0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xaa8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xab0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xab8: */ 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xac8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, +/* 0xad0: */ 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb00: */ 0x9f, 0x9e, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb08: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb10: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xb18: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb80: */ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc00: */ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7c, +/* 0xc08: */ 0x7e, 0x7c, 0x7c, 0x78, 0x7c, 0x78, 0x78, 0x78, +/* 0xc10: */ 0x7c, 0x78, 0x78, 0x78, 0x78, 0x70, 0x70, 0x70, +/* 0xc18: */ 0x78, 0x70, 0x70, 0x60, 0x70, 0x60, 0x60, 0x60, +/* 0xc20: */ 0x7b, 0x78, 0x70, 0x70, 0x70, 0x60, 0x60, 0x60, +/* 0xc28: */ 0x70, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, +/* 0xc30: */ 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, +/* 0xc38: */ 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x77, 0x70, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, +/* 0xc48: */ 0x60, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc80: */ 0x6f, 0x64, 0x60, 0x40, 0x40, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd00: */ 0x5f, 0x5e, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe00: */ 0x3f, 0x3f, 0x3e, 0x00, 0x1c, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xea8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xeb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xec8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xed8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xee8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xef8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf00: */ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xf98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xfe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xff8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/reSID/wave8580__ST.cpp b/MCUME_teensy/teensy64/reSID/wave8580__ST.cpp new file mode 100755 index 0000000..e2ca522 --- /dev/null +++ b/MCUME_teensy/teensy64/reSID/wave8580__ST.cpp @@ -0,0 +1,541 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// --------------------------------------------------------------------------- + +#include "wave.h" + +RESID_NAMESPACE_START + +//reg8 WaveformGenerator::wave8580__ST[] = +const reg8 wave8580__ST[] = +{ +/* 0x000: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x008: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x010: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x018: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x020: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x028: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x030: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x038: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x040: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x048: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x050: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x058: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x060: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x068: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x070: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x078: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x080: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x088: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x090: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x098: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x0f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x100: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x108: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x110: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x118: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x120: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x128: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x130: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x138: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x140: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x148: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x150: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x158: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x160: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x168: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x170: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x178: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x180: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x188: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x190: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x198: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x1f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0x200: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x208: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x210: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x218: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x220: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x228: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x230: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x238: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x240: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x248: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x250: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x258: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x260: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x268: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x270: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x278: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x280: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x288: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x290: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x298: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x2f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x300: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x308: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x310: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x318: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x320: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x328: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x330: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x338: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x340: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x348: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x350: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x358: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x360: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x368: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x370: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x378: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x380: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x388: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x390: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x398: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x3c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x3f0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0x3f8: */ 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, +/* 0x400: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x408: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x410: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x418: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x420: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x428: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x430: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x438: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x440: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x448: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x450: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x458: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x460: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x468: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x470: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x478: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x480: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x488: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x490: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x498: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x4f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x500: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x508: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x510: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x518: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x520: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x528: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x530: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x538: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x540: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x548: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x550: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x558: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x560: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x568: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x570: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x578: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x580: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x588: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x590: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x598: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x5f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x1f, +/* 0x600: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x608: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x610: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x618: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x620: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x628: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x630: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x638: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x640: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x648: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x650: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x658: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x660: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x668: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x670: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x678: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x680: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x688: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x690: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x698: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x6f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x700: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x708: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x710: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x718: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x720: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x728: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x730: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x738: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x740: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x748: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x750: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x758: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x760: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x768: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x770: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x778: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x780: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x788: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x790: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x798: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0x7c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x7e0: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7e8: */ 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, +/* 0x7f0: */ 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3e, +/* 0x7f8: */ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, +/* 0x800: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x808: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x810: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x818: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x820: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x828: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x830: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x838: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x840: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x848: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x850: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x858: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x860: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x868: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x870: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x878: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x880: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x888: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x890: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x898: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x8f8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0x900: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x908: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x910: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x918: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x920: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x928: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x930: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x938: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x940: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x948: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x950: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x958: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x960: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x968: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x970: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x978: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0x980: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x988: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x990: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x998: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9a8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9b8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9c8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9d8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9e8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0x9f8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, +/* 0xa00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xa80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xa98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaa8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xab8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xac8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xad8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xae8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xaf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xb00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xb80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xb98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xba8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xbc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbe8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xbf0: */ 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, +/* 0xbf8: */ 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, +/* 0xc00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xc80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xc98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xca8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xce8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xcf8: */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, +/* 0xd00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd78: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 0xd80: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd88: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd90: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xd98: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xda8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdb8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +/* 0xdc0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdc8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdd8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xde8: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf0: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xdf8: */ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x1f, 0x1f, +/* 0xe00: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe08: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe10: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe18: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe20: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe28: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe30: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe38: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe40: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe48: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe50: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe58: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe60: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe68: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe70: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 0xe78: */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x83, 0x83, +/* 0xe80: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe88: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe90: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xe98: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xea8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xeb8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xec8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xed8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xee8: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xef0: */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +/* 0xef8: */ 0x80, 0x80, 0x80, 0x80, 0x87, 0x87, 0x87, 0x8f, +/* 0xf00: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xf08: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf10: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf18: */ 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +/* 0xf20: */ 0xc0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, +/* 0xf28: */ 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xc0, 0xe0, 0xe0, +/* 0xf30: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf38: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf40: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf48: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf50: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf58: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf60: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf68: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf70: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, +/* 0xf78: */ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, 0xe3, +/* 0xf80: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf88: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf90: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xf98: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfa0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfa8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfb0: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +/* 0xfb8: */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, +/* 0xfc0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfc8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfd0: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfd8: */ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +/* 0xfe0: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xfe8: */ 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, +/* 0xff0: */ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, +/* 0xff8: */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +}; + +RESID_NAMESPACE_STOP diff --git a/MCUME_teensy/teensy64/roms.cpp b/MCUME_teensy/teensy64/roms.cpp new file mode 100644 index 0000000..d5e8cb9 --- /dev/null +++ b/MCUME_teensy/teensy64/roms.cpp @@ -0,0 +1,1899 @@ +#include +#include +#include "roms.h" +#include + +/* +bin2h basic.901226-01.bin -id=rom_basic > roms.h +bin2h kernal.901227-03.bin -id=rom_kernal >> roms.h +bin2h characters.901225-01.bin -id=rom_characters >> roms.h +*/ + +//file auto-generated from basic.901226-01.bin by bin2h.exe +const size_t rom_basic_len = 8192; +const unsigned char PROGMEM rom_basic[8192]= +{ + 0x94,0xE3,0x7B,0xE3,0x43,0x42,0x4D,0x42,0x41,0x53,0x49, + 0x43,0x30,0xA8,0x41,0xA7,0x1D,0xAD,0xF7,0xA8,0xA4,0xAB, + 0xBE,0xAB,0x80,0xB0,0x05,0xAC,0xA4,0xA9,0x9F,0xA8,0x70, + 0xA8,0x27,0xA9,0x1C,0xA8,0x82,0xA8,0xD1,0xA8,0x3A,0xA9, + 0x2E,0xA8,0x4A,0xA9,0x2C,0xB8,0x67,0xE1,0x55,0xE1,0x64, + 0xE1,0xB2,0xB3,0x23,0xB8,0x7F,0xAA,0x9F,0xAA,0x56,0xA8, + 0x9B,0xA6,0x5D,0xA6,0x85,0xAA,0x29,0xE1,0xBD,0xE1,0xC6, + 0xE1,0x7A,0xAB,0x41,0xA6,0x39,0xBC,0xCC,0xBC,0x58,0xBC, + 0x10,0x03,0x7D,0xB3,0x9E,0xB3,0x71,0xBF,0x97,0xE0,0xEA, + 0xB9,0xED,0xBF,0x64,0xE2,0x6B,0xE2,0xB4,0xE2,0x0E,0xE3, + 0x0D,0xB8,0x7C,0xB7,0x65,0xB4,0xAD,0xB7,0x8B,0xB7,0xEC, + 0xB6,0x00,0xB7,0x2C,0xB7,0x37,0xB7,0x79,0x69,0xB8,0x79, + 0x52,0xB8,0x7B,0x2A,0xBA,0x7B,0x11,0xBB,0x7F,0x7A,0xBF, + 0x50,0xE8,0xAF,0x46,0xE5,0xAF,0x7D,0xB3,0xBF,0x5A,0xD3, + 0xAE,0x64,0x15,0xB0,0x45,0x4E,0xC4,0x46,0x4F,0xD2,0x4E, + 0x45,0x58,0xD4,0x44,0x41,0x54,0xC1,0x49,0x4E,0x50,0x55, + 0x54,0xA3,0x49,0x4E,0x50,0x55,0xD4,0x44,0x49,0xCD,0x52, + 0x45,0x41,0xC4,0x4C,0x45,0xD4,0x47,0x4F,0x54,0xCF,0x52, + 0x55,0xCE,0x49,0xC6,0x52,0x45,0x53,0x54,0x4F,0x52,0xC5, + 0x47,0x4F,0x53,0x55,0xC2,0x52,0x45,0x54,0x55,0x52,0xCE, + 0x52,0x45,0xCD,0x53,0x54,0x4F,0xD0,0x4F,0xCE,0x57,0x41, + 0x49,0xD4,0x4C,0x4F,0x41,0xC4,0x53,0x41,0x56,0xC5,0x56, + 0x45,0x52,0x49,0x46,0xD9,0x44,0x45,0xC6,0x50,0x4F,0x4B, + 0xC5,0x50,0x52,0x49,0x4E,0x54,0xA3,0x50,0x52,0x49,0x4E, + 0xD4,0x43,0x4F,0x4E,0xD4,0x4C,0x49,0x53,0xD4,0x43,0x4C, + 0xD2,0x43,0x4D,0xC4,0x53,0x59,0xD3,0x4F,0x50,0x45,0xCE, + 0x43,0x4C,0x4F,0x53,0xC5,0x47,0x45,0xD4,0x4E,0x45,0xD7, + 0x54,0x41,0x42,0xA8,0x54,0xCF,0x46,0xCE,0x53,0x50,0x43, + 0xA8,0x54,0x48,0x45,0xCE,0x4E,0x4F,0xD4,0x53,0x54,0x45, + 0xD0,0xAB,0xAD,0xAA,0xAF,0xDE,0x41,0x4E,0xC4,0x4F,0xD2, + 0xBE,0xBD,0xBC,0x53,0x47,0xCE,0x49,0x4E,0xD4,0x41,0x42, + 0xD3,0x55,0x53,0xD2,0x46,0x52,0xC5,0x50,0x4F,0xD3,0x53, + 0x51,0xD2,0x52,0x4E,0xC4,0x4C,0x4F,0xC7,0x45,0x58,0xD0, + 0x43,0x4F,0xD3,0x53,0x49,0xCE,0x54,0x41,0xCE,0x41,0x54, + 0xCE,0x50,0x45,0x45,0xCB,0x4C,0x45,0xCE,0x53,0x54,0x52, + 0xA4,0x56,0x41,0xCC,0x41,0x53,0xC3,0x43,0x48,0x52,0xA4, + 0x4C,0x45,0x46,0x54,0xA4,0x52,0x49,0x47,0x48,0x54,0xA4, + 0x4D,0x49,0x44,0xA4,0x47,0xCF,0x00,0x54,0x4F,0x4F,0x20, + 0x4D,0x41,0x4E,0x59,0x20,0x46,0x49,0x4C,0x45,0xD3,0x46, + 0x49,0x4C,0x45,0x20,0x4F,0x50,0x45,0xCE,0x46,0x49,0x4C, + 0x45,0x20,0x4E,0x4F,0x54,0x20,0x4F,0x50,0x45,0xCE,0x46, + 0x49,0x4C,0x45,0x20,0x4E,0x4F,0x54,0x20,0x46,0x4F,0x55, + 0x4E,0xC4,0x44,0x45,0x56,0x49,0x43,0x45,0x20,0x4E,0x4F, + 0x54,0x20,0x50,0x52,0x45,0x53,0x45,0x4E,0xD4,0x4E,0x4F, + 0x54,0x20,0x49,0x4E,0x50,0x55,0x54,0x20,0x46,0x49,0x4C, + 0xC5,0x4E,0x4F,0x54,0x20,0x4F,0x55,0x54,0x50,0x55,0x54, + 0x20,0x46,0x49,0x4C,0xC5,0x4D,0x49,0x53,0x53,0x49,0x4E, + 0x47,0x20,0x46,0x49,0x4C,0x45,0x20,0x4E,0x41,0x4D,0xC5, + 0x49,0x4C,0x4C,0x45,0x47,0x41,0x4C,0x20,0x44,0x45,0x56, + 0x49,0x43,0x45,0x20,0x4E,0x55,0x4D,0x42,0x45,0xD2,0x4E, + 0x45,0x58,0x54,0x20,0x57,0x49,0x54,0x48,0x4F,0x55,0x54, + 0x20,0x46,0x4F,0xD2,0x53,0x59,0x4E,0x54,0x41,0xD8,0x52, + 0x45,0x54,0x55,0x52,0x4E,0x20,0x57,0x49,0x54,0x48,0x4F, + 0x55,0x54,0x20,0x47,0x4F,0x53,0x55,0xC2,0x4F,0x55,0x54, + 0x20,0x4F,0x46,0x20,0x44,0x41,0x54,0xC1,0x49,0x4C,0x4C, + 0x45,0x47,0x41,0x4C,0x20,0x51,0x55,0x41,0x4E,0x54,0x49, + 0x54,0xD9,0x4F,0x56,0x45,0x52,0x46,0x4C,0x4F,0xD7,0x4F, + 0x55,0x54,0x20,0x4F,0x46,0x20,0x4D,0x45,0x4D,0x4F,0x52, + 0xD9,0x55,0x4E,0x44,0x45,0x46,0x27,0x44,0x20,0x53,0x54, + 0x41,0x54,0x45,0x4D,0x45,0x4E,0xD4,0x42,0x41,0x44,0x20, + 0x53,0x55,0x42,0x53,0x43,0x52,0x49,0x50,0xD4,0x52,0x45, + 0x44,0x49,0x4D,0x27,0x44,0x20,0x41,0x52,0x52,0x41,0xD9, + 0x44,0x49,0x56,0x49,0x53,0x49,0x4F,0x4E,0x20,0x42,0x59, + 0x20,0x5A,0x45,0x52,0xCF,0x49,0x4C,0x4C,0x45,0x47,0x41, + 0x4C,0x20,0x44,0x49,0x52,0x45,0x43,0xD4,0x54,0x59,0x50, + 0x45,0x20,0x4D,0x49,0x53,0x4D,0x41,0x54,0x43,0xC8,0x53, + 0x54,0x52,0x49,0x4E,0x47,0x20,0x54,0x4F,0x4F,0x20,0x4C, + 0x4F,0x4E,0xC7,0x46,0x49,0x4C,0x45,0x20,0x44,0x41,0x54, + 0xC1,0x46,0x4F,0x52,0x4D,0x55,0x4C,0x41,0x20,0x54,0x4F, + 0x4F,0x20,0x43,0x4F,0x4D,0x50,0x4C,0x45,0xD8,0x43,0x41, + 0x4E,0x27,0x54,0x20,0x43,0x4F,0x4E,0x54,0x49,0x4E,0x55, + 0xC5,0x55,0x4E,0x44,0x45,0x46,0x27,0x44,0x20,0x46,0x55, + 0x4E,0x43,0x54,0x49,0x4F,0xCE,0x56,0x45,0x52,0x49,0x46, + 0xD9,0x4C,0x4F,0x41,0xC4,0x9E,0xA1,0xAC,0xA1,0xB5,0xA1, + 0xC2,0xA1,0xD0,0xA1,0xE2,0xA1,0xF0,0xA1,0xFF,0xA1,0x10, + 0xA2,0x25,0xA2,0x35,0xA2,0x3B,0xA2,0x4F,0xA2,0x5A,0xA2, + 0x6A,0xA2,0x72,0xA2,0x7F,0xA2,0x90,0xA2,0x9D,0xA2,0xAA, + 0xA2,0xBA,0xA2,0xC8,0xA2,0xD5,0xA2,0xE4,0xA2,0xED,0xA2, + 0x00,0xA3,0x0E,0xA3,0x1E,0xA3,0x24,0xA3,0x83,0xA3,0x0D, + 0x4F,0x4B,0x0D,0x00,0x20,0x20,0x45,0x52,0x52,0x4F,0x52, + 0x00,0x20,0x49,0x4E,0x20,0x00,0x0D,0x0A,0x52,0x45,0x41, + 0x44,0x59,0x2E,0x0D,0x0A,0x00,0x0D,0x0A,0x42,0x52,0x45, + 0x41,0x4B,0x00,0xA0,0xBA,0xE8,0xE8,0xE8,0xE8,0xBD,0x01, + 0x01,0xC9,0x81,0xD0,0x21,0xA5,0x4A,0xD0,0x0A,0xBD,0x02, + 0x01,0x85,0x49,0xBD,0x03,0x01,0x85,0x4A,0xDD,0x03,0x01, + 0xD0,0x07,0xA5,0x49,0xDD,0x02,0x01,0xF0,0x07,0x8A,0x18, + 0x69,0x12,0xAA,0xD0,0xD8,0x60,0x20,0x08,0xA4,0x85,0x31, + 0x84,0x32,0x38,0xA5,0x5A,0xE5,0x5F,0x85,0x22,0xA8,0xA5, + 0x5B,0xE5,0x60,0xAA,0xE8,0x98,0xF0,0x23,0xA5,0x5A,0x38, + 0xE5,0x22,0x85,0x5A,0xB0,0x03,0xC6,0x5B,0x38,0xA5,0x58, + 0xE5,0x22,0x85,0x58,0xB0,0x08,0xC6,0x59,0x90,0x04,0xB1, + 0x5A,0x91,0x58,0x88,0xD0,0xF9,0xB1,0x5A,0x91,0x58,0xC6, + 0x5B,0xC6,0x59,0xCA,0xD0,0xF2,0x60,0x0A,0x69,0x3E,0xB0, + 0x35,0x85,0x22,0xBA,0xE4,0x22,0x90,0x2E,0x60,0xC4,0x34, + 0x90,0x28,0xD0,0x04,0xC5,0x33,0x90,0x22,0x48,0xA2,0x09, + 0x98,0x48,0xB5,0x57,0xCA,0x10,0xFA,0x20,0x26,0xB5,0xA2, + 0xF7,0x68,0x95,0x61,0xE8,0x30,0xFA,0x68,0xA8,0x68,0xC4, + 0x34,0x90,0x06,0xD0,0x05,0xC5,0x33,0xB0,0x01,0x60,0xA2, + 0x10,0x6C,0x00,0x03,0x8A,0x0A,0xAA,0xBD,0x26,0xA3,0x85, + 0x22,0xBD,0x27,0xA3,0x85,0x23,0x20,0xCC,0xFF,0xA9,0x00, + 0x85,0x13,0x20,0xD7,0xAA,0x20,0x45,0xAB,0xA0,0x00,0xB1, + 0x22,0x48,0x29,0x7F,0x20,0x47,0xAB,0xC8,0x68,0x10,0xF4, + 0x20,0x7A,0xA6,0xA9,0x69,0xA0,0xA3,0x20,0x1E,0xAB,0xA4, + 0x3A,0xC8,0xF0,0x03,0x20,0xC2,0xBD,0xA9,0x76,0xA0,0xA3, + 0x20,0x1E,0xAB,0xA9,0x80,0x20,0x90,0xFF,0x6C,0x02,0x03, + 0x20,0x60,0xA5,0x86,0x7A,0x84,0x7B,0x20,0x73,0x00,0xAA, + 0xF0,0xF0,0xA2,0xFF,0x86,0x3A,0x90,0x06,0x20,0x79,0xA5, + 0x4C,0xE1,0xA7,0x20,0x6B,0xA9,0x20,0x79,0xA5,0x84,0x0B, + 0x20,0x13,0xA6,0x90,0x44,0xA0,0x01,0xB1,0x5F,0x85,0x23, + 0xA5,0x2D,0x85,0x22,0xA5,0x60,0x85,0x25,0xA5,0x5F,0x88, + 0xF1,0x5F,0x18,0x65,0x2D,0x85,0x2D,0x85,0x24,0xA5,0x2E, + 0x69,0xFF,0x85,0x2E,0xE5,0x60,0xAA,0x38,0xA5,0x5F,0xE5, + 0x2D,0xA8,0xB0,0x03,0xE8,0xC6,0x25,0x18,0x65,0x22,0x90, + 0x03,0xC6,0x23,0x18,0xB1,0x22,0x91,0x24,0xC8,0xD0,0xF9, + 0xE6,0x23,0xE6,0x25,0xCA,0xD0,0xF2,0x20,0x59,0xA6,0x20, + 0x33,0xA5,0xAD,0x00,0x02,0xF0,0x88,0x18,0xA5,0x2D,0x85, + 0x5A,0x65,0x0B,0x85,0x58,0xA4,0x2E,0x84,0x5B,0x90,0x01, + 0xC8,0x84,0x59,0x20,0xB8,0xA3,0xA5,0x14,0xA4,0x15,0x8D, + 0xFE,0x01,0x8C,0xFF,0x01,0xA5,0x31,0xA4,0x32,0x85,0x2D, + 0x84,0x2E,0xA4,0x0B,0x88,0xB9,0xFC,0x01,0x91,0x5F,0x88, + 0x10,0xF8,0x20,0x59,0xA6,0x20,0x33,0xA5,0x4C,0x80,0xA4, + 0xA5,0x2B,0xA4,0x2C,0x85,0x22,0x84,0x23,0x18,0xA0,0x01, + 0xB1,0x22,0xF0,0x1D,0xA0,0x04,0xC8,0xB1,0x22,0xD0,0xFB, + 0xC8,0x98,0x65,0x22,0xAA,0xA0,0x00,0x91,0x22,0xA5,0x23, + 0x69,0x00,0xC8,0x91,0x22,0x86,0x22,0x85,0x23,0x90,0xDD, + 0x60,0xA2,0x00,0x20,0x12,0xE1,0xC9,0x0D,0xF0,0x0D,0x9D, + 0x00,0x02,0xE8,0xE0,0x59,0x90,0xF1,0xA2,0x17,0x4C,0x37, + 0xA4,0x4C,0xCA,0xAA,0x6C,0x04,0x03,0xA6,0x7A,0xA0,0x04, + 0x84,0x0F,0xBD,0x00,0x02,0x10,0x07,0xC9,0xFF,0xF0,0x3E, + 0xE8,0xD0,0xF4,0xC9,0x20,0xF0,0x37,0x85,0x08,0xC9,0x22, + 0xF0,0x56,0x24,0x0F,0x70,0x2D,0xC9,0x3F,0xD0,0x04,0xA9, + 0x99,0xD0,0x25,0xC9,0x30,0x90,0x04,0xC9,0x3C,0x90,0x1D, + 0x84,0x71,0xA0,0x00,0x84,0x0B,0x88,0x86,0x7A,0xCA,0xC8, + 0xE8,0xBD,0x00,0x02,0x38,0xF9,0x9E,0xA0,0xF0,0xF5,0xC9, + 0x80,0xD0,0x30,0x05,0x0B,0xA4,0x71,0xE8,0xC8,0x99,0xFB, + 0x01,0xB9,0xFB,0x01,0xF0,0x36,0x38,0xE9,0x3A,0xF0,0x04, + 0xC9,0x49,0xD0,0x02,0x85,0x0F,0x38,0xE9,0x55,0xD0,0x9F, + 0x85,0x08,0xBD,0x00,0x02,0xF0,0xDF,0xC5,0x08,0xF0,0xDB, + 0xC8,0x99,0xFB,0x01,0xE8,0xD0,0xF0,0xA6,0x7A,0xE6,0x0B, + 0xC8,0xB9,0x9D,0xA0,0x10,0xFA,0xB9,0x9E,0xA0,0xD0,0xB4, + 0xBD,0x00,0x02,0x10,0xBE,0x99,0xFD,0x01,0xC6,0x7B,0xA9, + 0xFF,0x85,0x7A,0x60,0xA5,0x2B,0xA6,0x2C,0xA0,0x01,0x85, + 0x5F,0x86,0x60,0xB1,0x5F,0xF0,0x1F,0xC8,0xC8,0xA5,0x15, + 0xD1,0x5F,0x90,0x18,0xF0,0x03,0x88,0xD0,0x09,0xA5,0x14, + 0x88,0xD1,0x5F,0x90,0x0C,0xF0,0x0A,0x88,0xB1,0x5F,0xAA, + 0x88,0xB1,0x5F,0xB0,0xD7,0x18,0x60,0xD0,0xFD,0xA9,0x00, + 0xA8,0x91,0x2B,0xC8,0x91,0x2B,0xA5,0x2B,0x18,0x69,0x02, + 0x85,0x2D,0xA5,0x2C,0x69,0x00,0x85,0x2E,0x20,0x8E,0xA6, + 0xA9,0x00,0xD0,0x2D,0x20,0xE7,0xFF,0xA5,0x37,0xA4,0x38, + 0x85,0x33,0x84,0x34,0xA5,0x2D,0xA4,0x2E,0x85,0x2F,0x84, + 0x30,0x85,0x31,0x84,0x32,0x20,0x1D,0xA8,0xA2,0x19,0x86, + 0x16,0x68,0xA8,0x68,0xA2,0xFA,0x9A,0x48,0x98,0x48,0xA9, + 0x00,0x85,0x3E,0x85,0x10,0x60,0x18,0xA5,0x2B,0x69,0xFF, + 0x85,0x7A,0xA5,0x2C,0x69,0xFF,0x85,0x7B,0x60,0x90,0x06, + 0xF0,0x04,0xC9,0xAB,0xD0,0xE9,0x20,0x6B,0xA9,0x20,0x13, + 0xA6,0x20,0x79,0x00,0xF0,0x0C,0xC9,0xAB,0xD0,0x8E,0x20, + 0x73,0x00,0x20,0x6B,0xA9,0xD0,0x86,0x68,0x68,0xA5,0x14, + 0x05,0x15,0xD0,0x06,0xA9,0xFF,0x85,0x14,0x85,0x15,0xA0, + 0x01,0x84,0x0F,0xB1,0x5F,0xF0,0x43,0x20,0x2C,0xA8,0x20, + 0xD7,0xAA,0xC8,0xB1,0x5F,0xAA,0xC8,0xB1,0x5F,0xC5,0x15, + 0xD0,0x04,0xE4,0x14,0xF0,0x02,0xB0,0x2C,0x84,0x49,0x20, + 0xCD,0xBD,0xA9,0x20,0xA4,0x49,0x29,0x7F,0x20,0x47,0xAB, + 0xC9,0x22,0xD0,0x06,0xA5,0x0F,0x49,0xFF,0x85,0x0F,0xC8, + 0xF0,0x11,0xB1,0x5F,0xD0,0x10,0xA8,0xB1,0x5F,0xAA,0xC8, + 0xB1,0x5F,0x86,0x5F,0x85,0x60,0xD0,0xB5,0x4C,0x86,0xE3, + 0x6C,0x06,0x03,0x10,0xD7,0xC9,0xFF,0xF0,0xD3,0x24,0x0F, + 0x30,0xCF,0x38,0xE9,0x7F,0xAA,0x84,0x49,0xA0,0xFF,0xCA, + 0xF0,0x08,0xC8,0xB9,0x9E,0xA0,0x10,0xFA,0x30,0xF5,0xC8, + 0xB9,0x9E,0xA0,0x30,0xB2,0x20,0x47,0xAB,0xD0,0xF5,0xA9, + 0x80,0x85,0x10,0x20,0xA5,0xA9,0x20,0x8A,0xA3,0xD0,0x05, + 0x8A,0x69,0x0F,0xAA,0x9A,0x68,0x68,0xA9,0x09,0x20,0xFB, + 0xA3,0x20,0x06,0xA9,0x18,0x98,0x65,0x7A,0x48,0xA5,0x7B, + 0x69,0x00,0x48,0xA5,0x3A,0x48,0xA5,0x39,0x48,0xA9,0xA4, + 0x20,0xFF,0xAE,0x20,0x8D,0xAD,0x20,0x8A,0xAD,0xA5,0x66, + 0x09,0x7F,0x25,0x62,0x85,0x62,0xA9,0x8B,0xA0,0xA7,0x85, + 0x22,0x84,0x23,0x4C,0x43,0xAE,0xA9,0xBC,0xA0,0xB9,0x20, + 0xA2,0xBB,0x20,0x79,0x00,0xC9,0xA9,0xD0,0x06,0x20,0x73, + 0x00,0x20,0x8A,0xAD,0x20,0x2B,0xBC,0x20,0x38,0xAE,0xA5, + 0x4A,0x48,0xA5,0x49,0x48,0xA9,0x81,0x48,0x20,0x2C,0xA8, + 0xA5,0x7A,0xA4,0x7B,0xC0,0x02,0xEA,0xF0,0x04,0x85,0x3D, + 0x84,0x3E,0xA0,0x00,0xB1,0x7A,0xD0,0x43,0xA0,0x02,0xB1, + 0x7A,0x18,0xD0,0x03,0x4C,0x4B,0xA8,0xC8,0xB1,0x7A,0x85, + 0x39,0xC8,0xB1,0x7A,0x85,0x3A,0x98,0x65,0x7A,0x85,0x7A, + 0x90,0x02,0xE6,0x7B,0x6C,0x08,0x03,0x20,0x73,0x00,0x20, + 0xED,0xA7,0x4C,0xAE,0xA7,0xF0,0x3C,0xE9,0x80,0x90,0x11, + 0xC9,0x23,0xB0,0x17,0x0A,0xA8,0xB9,0x0D,0xA0,0x48,0xB9, + 0x0C,0xA0,0x48,0x4C,0x73,0x00,0x4C,0xA5,0xA9,0xC9,0x3A, + 0xF0,0xD6,0x4C,0x08,0xAF,0xC9,0x4B,0xD0,0xF9,0x20,0x73, + 0x00,0xA9,0xA4,0x20,0xFF,0xAE,0x4C,0xA0,0xA8,0x38,0xA5, + 0x2B,0xE9,0x01,0xA4,0x2C,0xB0,0x01,0x88,0x85,0x41,0x84, + 0x42,0x60,0x20,0xE1,0xFF,0xB0,0x01,0x18,0xD0,0x3C,0xA5, + 0x7A,0xA4,0x7B,0xA6,0x3A,0xE8,0xF0,0x0C,0x85,0x3D,0x84, + 0x3E,0xA5,0x39,0xA4,0x3A,0x85,0x3B,0x84,0x3C,0x68,0x68, + 0xA9,0x81,0xA0,0xA3,0x90,0x03,0x4C,0x69,0xA4,0x4C,0x86, + 0xE3,0xD0,0x17,0xA2,0x1A,0xA4,0x3E,0xD0,0x03,0x4C,0x37, + 0xA4,0xA5,0x3D,0x85,0x7A,0x84,0x7B,0xA5,0x3B,0xA4,0x3C, + 0x85,0x39,0x84,0x3A,0x60,0x08,0xA9,0x00,0x20,0x90,0xFF, + 0x28,0xD0,0x03,0x4C,0x59,0xA6,0x20,0x60,0xA6,0x4C,0x97, + 0xA8,0xA9,0x03,0x20,0xFB,0xA3,0xA5,0x7B,0x48,0xA5,0x7A, + 0x48,0xA5,0x3A,0x48,0xA5,0x39,0x48,0xA9,0x8D,0x48,0x20, + 0x79,0x00,0x20,0xA0,0xA8,0x4C,0xAE,0xA7,0x20,0x6B,0xA9, + 0x20,0x09,0xA9,0x38,0xA5,0x39,0xE5,0x14,0xA5,0x3A,0xE5, + 0x15,0xB0,0x0B,0x98,0x38,0x65,0x7A,0xA6,0x7B,0x90,0x07, + 0xE8,0xB0,0x04,0xA5,0x2B,0xA6,0x2C,0x20,0x17,0xA6,0x90, + 0x1E,0xA5,0x5F,0xE9,0x01,0x85,0x7A,0xA5,0x60,0xE9,0x00, + 0x85,0x7B,0x60,0xD0,0xFD,0xA9,0xFF,0x85,0x4A,0x20,0x8A, + 0xA3,0x9A,0xC9,0x8D,0xF0,0x0B,0xA2,0x0C,0x2C,0xA2,0x11, + 0x4C,0x37,0xA4,0x4C,0x08,0xAF,0x68,0x68,0x85,0x39,0x68, + 0x85,0x3A,0x68,0x85,0x7A,0x68,0x85,0x7B,0x20,0x06,0xA9, + 0x98,0x18,0x65,0x7A,0x85,0x7A,0x90,0x02,0xE6,0x7B,0x60, + 0xA2,0x3A,0x2C,0xA2,0x00,0x86,0x07,0xA0,0x00,0x84,0x08, + 0xA5,0x08,0xA6,0x07,0x85,0x07,0x86,0x08,0xB1,0x7A,0xF0, + 0xE8,0xC5,0x08,0xF0,0xE4,0xC8,0xC9,0x22,0xD0,0xF3,0xF0, + 0xE9,0x20,0x9E,0xAD,0x20,0x79,0x00,0xC9,0x89,0xF0,0x05, + 0xA9,0xA7,0x20,0xFF,0xAE,0xA5,0x61,0xD0,0x05,0x20,0x09, + 0xA9,0xF0,0xBB,0x20,0x79,0x00,0xB0,0x03,0x4C,0xA0,0xA8, + 0x4C,0xED,0xA7,0x20,0x9E,0xB7,0x48,0xC9,0x8D,0xF0,0x04, + 0xC9,0x89,0xD0,0x91,0xC6,0x65,0xD0,0x04,0x68,0x4C,0xEF, + 0xA7,0x20,0x73,0x00,0x20,0x6B,0xA9,0xC9,0x2C,0xF0,0xEE, + 0x68,0x60,0xA2,0x00,0x86,0x14,0x86,0x15,0xB0,0xF7,0xE9, + 0x2F,0x85,0x07,0xA5,0x15,0x85,0x22,0xC9,0x19,0xB0,0xD4, + 0xA5,0x14,0x0A,0x26,0x22,0x0A,0x26,0x22,0x65,0x14,0x85, + 0x14,0xA5,0x22,0x65,0x15,0x85,0x15,0x06,0x14,0x26,0x15, + 0xA5,0x14,0x65,0x07,0x85,0x14,0x90,0x02,0xE6,0x15,0x20, + 0x73,0x00,0x4C,0x71,0xA9,0x20,0x8B,0xB0,0x85,0x49,0x84, + 0x4A,0xA9,0xB2,0x20,0xFF,0xAE,0xA5,0x0E,0x48,0xA5,0x0D, + 0x48,0x20,0x9E,0xAD,0x68,0x2A,0x20,0x90,0xAD,0xD0,0x18, + 0x68,0x10,0x12,0x20,0x1B,0xBC,0x20,0xBF,0xB1,0xA0,0x00, + 0xA5,0x64,0x91,0x49,0xC8,0xA5,0x65,0x91,0x49,0x60,0x4C, + 0xD0,0xBB,0x68,0xA4,0x4A,0xC0,0xBF,0xD0,0x4C,0x20,0xA6, + 0xB6,0xC9,0x06,0xD0,0x3D,0xA0,0x00,0x84,0x61,0x84,0x66, + 0x84,0x71,0x20,0x1D,0xAA,0x20,0xE2,0xBA,0xE6,0x71,0xA4, + 0x71,0x20,0x1D,0xAA,0x20,0x0C,0xBC,0xAA,0xF0,0x05,0xE8, + 0x8A,0x20,0xED,0xBA,0xA4,0x71,0xC8,0xC0,0x06,0xD0,0xDF, + 0x20,0xE2,0xBA,0x20,0x9B,0xBC,0xA6,0x64,0xA4,0x63,0xA5, + 0x65,0x4C,0xDB,0xFF,0xB1,0x22,0x20,0x80,0x00,0x90,0x03, + 0x4C,0x48,0xB2,0xE9,0x2F,0x4C,0x7E,0xBD,0xA0,0x02,0xB1, + 0x64,0xC5,0x34,0x90,0x17,0xD0,0x07,0x88,0xB1,0x64,0xC5, + 0x33,0x90,0x0E,0xA4,0x65,0xC4,0x2E,0x90,0x08,0xD0,0x0D, + 0xA5,0x64,0xC5,0x2D,0xB0,0x07,0xA5,0x64,0xA4,0x65,0x4C, + 0x68,0xAA,0xA0,0x00,0xB1,0x64,0x20,0x75,0xB4,0xA5,0x50, + 0xA4,0x51,0x85,0x6F,0x84,0x70,0x20,0x7A,0xB6,0xA9,0x61, + 0xA0,0x00,0x85,0x50,0x84,0x51,0x20,0xDB,0xB6,0xA0,0x00, + 0xB1,0x50,0x91,0x49,0xC8,0xB1,0x50,0x91,0x49,0xC8,0xB1, + 0x50,0x91,0x49,0x60,0x20,0x86,0xAA,0x4C,0xB5,0xAB,0x20, + 0x9E,0xB7,0xF0,0x05,0xA9,0x2C,0x20,0xFF,0xAE,0x08,0x86, + 0x13,0x20,0x18,0xE1,0x28,0x4C,0xA0,0xAA,0x20,0x21,0xAB, + 0x20,0x79,0x00,0xF0,0x35,0xF0,0x43,0xC9,0xA3,0xF0,0x50, + 0xC9,0xA6,0x18,0xF0,0x4B,0xC9,0x2C,0xF0,0x37,0xC9,0x3B, + 0xF0,0x5E,0x20,0x9E,0xAD,0x24,0x0D,0x30,0xDE,0x20,0xDD, + 0xBD,0x20,0x87,0xB4,0x20,0x21,0xAB,0x20,0x3B,0xAB,0xD0, + 0xD3,0xA9,0x00,0x9D,0x00,0x02,0xA2,0xFF,0xA0,0x01,0xA5, + 0x13,0xD0,0x10,0xA9,0x0D,0x20,0x47,0xAB,0x24,0x13,0x10, + 0x05,0xA9,0x0A,0x20,0x47,0xAB,0x49,0xFF,0x60,0x38,0x20, + 0xF0,0xFF,0x98,0x38,0xE9,0x0A,0xB0,0xFC,0x49,0xFF,0x69, + 0x01,0xD0,0x16,0x08,0x38,0x20,0xF0,0xFF,0x84,0x09,0x20, + 0x9B,0xB7,0xC9,0x29,0xD0,0x59,0x28,0x90,0x06,0x8A,0xE5, + 0x09,0x90,0x05,0xAA,0xE8,0xCA,0xD0,0x06,0x20,0x73,0x00, + 0x4C,0xA2,0xAA,0x20,0x3B,0xAB,0xD0,0xF2,0x20,0x87,0xB4, + 0x20,0xA6,0xB6,0xAA,0xA0,0x00,0xE8,0xCA,0xF0,0xBC,0xB1, + 0x22,0x20,0x47,0xAB,0xC8,0xC9,0x0D,0xD0,0xF3,0x20,0xE5, + 0xAA,0x4C,0x28,0xAB,0xA5,0x13,0xF0,0x03,0xA9,0x20,0x2C, + 0xA9,0x1D,0x2C,0xA9,0x3F,0x20,0x0C,0xE1,0x29,0xFF,0x60, + 0xA5,0x11,0xF0,0x11,0x30,0x04,0xA0,0xFF,0xD0,0x04,0xA5, + 0x3F,0xA4,0x40,0x85,0x39,0x84,0x3A,0x4C,0x08,0xAF,0xA5, + 0x13,0xF0,0x05,0xA2,0x18,0x4C,0x37,0xA4,0xA9,0x0C,0xA0, + 0xAD,0x20,0x1E,0xAB,0xA5,0x3D,0xA4,0x3E,0x85,0x7A,0x84, + 0x7B,0x60,0x20,0xA6,0xB3,0xC9,0x23,0xD0,0x10,0x20,0x73, + 0x00,0x20,0x9E,0xB7,0xA9,0x2C,0x20,0xFF,0xAE,0x86,0x13, + 0x20,0x1E,0xE1,0xA2,0x01,0xA0,0x02,0xA9,0x00,0x8D,0x01, + 0x02,0xA9,0x40,0x20,0x0F,0xAC,0xA6,0x13,0xD0,0x13,0x60, + 0x20,0x9E,0xB7,0xA9,0x2C,0x20,0xFF,0xAE,0x86,0x13,0x20, + 0x1E,0xE1,0x20,0xCE,0xAB,0xA5,0x13,0x20,0xCC,0xFF,0xA2, + 0x00,0x86,0x13,0x60,0xC9,0x22,0xD0,0x0B,0x20,0xBD,0xAE, + 0xA9,0x3B,0x20,0xFF,0xAE,0x20,0x21,0xAB,0x20,0xA6,0xB3, + 0xA9,0x2C,0x8D,0xFF,0x01,0x20,0xF9,0xAB,0xA5,0x13,0xF0, + 0x0D,0x20,0xB7,0xFF,0x29,0x02,0xF0,0x06,0x20,0xB5,0xAB, + 0x4C,0xF8,0xA8,0xAD,0x00,0x02,0xD0,0x1E,0xA5,0x13,0xD0, + 0xE3,0x20,0x06,0xA9,0x4C,0xFB,0xA8,0xA5,0x13,0xD0,0x06, + 0x20,0x45,0xAB,0x20,0x3B,0xAB,0x4C,0x60,0xA5,0xA6,0x41, + 0xA4,0x42,0xA9,0x98,0x2C,0xA9,0x00,0x85,0x11,0x86,0x43, + 0x84,0x44,0x20,0x8B,0xB0,0x85,0x49,0x84,0x4A,0xA5,0x7A, + 0xA4,0x7B,0x85,0x4B,0x84,0x4C,0xA6,0x43,0xA4,0x44,0x86, + 0x7A,0x84,0x7B,0x20,0x79,0x00,0xD0,0x20,0x24,0x11,0x50, + 0x0C,0x20,0x24,0xE1,0x8D,0x00,0x02,0xA2,0xFF,0xA0,0x01, + 0xD0,0x0C,0x30,0x75,0xA5,0x13,0xD0,0x03,0x20,0x45,0xAB, + 0x20,0xF9,0xAB,0x86,0x7A,0x84,0x7B,0x20,0x73,0x00,0x24, + 0x0D,0x10,0x31,0x24,0x11,0x50,0x09,0xE8,0x86,0x7A,0xA9, + 0x00,0x85,0x07,0xF0,0x0C,0x85,0x07,0xC9,0x22,0xF0,0x07, + 0xA9,0x3A,0x85,0x07,0xA9,0x2C,0x18,0x85,0x08,0xA5,0x7A, + 0xA4,0x7B,0x69,0x00,0x90,0x01,0xC8,0x20,0x8D,0xB4,0x20, + 0xE2,0xB7,0x20,0xDA,0xA9,0x4C,0x91,0xAC,0x20,0xF3,0xBC, + 0xA5,0x0E,0x20,0xC2,0xA9,0x20,0x79,0x00,0xF0,0x07,0xC9, + 0x2C,0xF0,0x03,0x4C,0x4D,0xAB,0xA5,0x7A,0xA4,0x7B,0x85, + 0x43,0x84,0x44,0xA5,0x4B,0xA4,0x4C,0x85,0x7A,0x84,0x7B, + 0x20,0x79,0x00,0xF0,0x2D,0x20,0xFD,0xAE,0x4C,0x15,0xAC, + 0x20,0x06,0xA9,0xC8,0xAA,0xD0,0x12,0xA2,0x0D,0xC8,0xB1, + 0x7A,0xF0,0x6C,0xC8,0xB1,0x7A,0x85,0x3F,0xC8,0xB1,0x7A, + 0xC8,0x85,0x40,0x20,0xFB,0xA8,0x20,0x79,0x00,0xAA,0xE0, + 0x83,0xD0,0xDC,0x4C,0x51,0xAC,0xA5,0x43,0xA4,0x44,0xA6, + 0x11,0x10,0x03,0x4C,0x27,0xA8,0xA0,0x00,0xB1,0x43,0xF0, + 0x0B,0xA5,0x13,0xD0,0x07,0xA9,0xFC,0xA0,0xAC,0x4C,0x1E, + 0xAB,0x60,0x3F,0x45,0x58,0x54,0x52,0x41,0x20,0x49,0x47, + 0x4E,0x4F,0x52,0x45,0x44,0x0D,0x00,0x3F,0x52,0x45,0x44, + 0x4F,0x20,0x46,0x52,0x4F,0x4D,0x20,0x53,0x54,0x41,0x52, + 0x54,0x0D,0x00,0xD0,0x04,0xA0,0x00,0xF0,0x03,0x20,0x8B, + 0xB0,0x85,0x49,0x84,0x4A,0x20,0x8A,0xA3,0xF0,0x05,0xA2, + 0x0A,0x4C,0x37,0xA4,0x9A,0x8A,0x18,0x69,0x04,0x48,0x69, + 0x06,0x85,0x24,0x68,0xA0,0x01,0x20,0xA2,0xBB,0xBA,0xBD, + 0x09,0x01,0x85,0x66,0xA5,0x49,0xA4,0x4A,0x20,0x67,0xB8, + 0x20,0xD0,0xBB,0xA0,0x01,0x20,0x5D,0xBC,0xBA,0x38,0xFD, + 0x09,0x01,0xF0,0x17,0xBD,0x0F,0x01,0x85,0x39,0xBD,0x10, + 0x01,0x85,0x3A,0xBD,0x12,0x01,0x85,0x7A,0xBD,0x11,0x01, + 0x85,0x7B,0x4C,0xAE,0xA7,0x8A,0x69,0x11,0xAA,0x9A,0x20, + 0x79,0x00,0xC9,0x2C,0xD0,0xF1,0x20,0x73,0x00,0x20,0x24, + 0xAD,0x20,0x9E,0xAD,0x18,0x24,0x38,0x24,0x0D,0x30,0x03, + 0xB0,0x03,0x60,0xB0,0xFD,0xA2,0x16,0x4C,0x37,0xA4,0xA6, + 0x7A,0xD0,0x02,0xC6,0x7B,0xC6,0x7A,0xA2,0x00,0x24,0x48, + 0x8A,0x48,0xA9,0x01,0x20,0xFB,0xA3,0x20,0x83,0xAE,0xA9, + 0x00,0x85,0x4D,0x20,0x79,0x00,0x38,0xE9,0xB1,0x90,0x17, + 0xC9,0x03,0xB0,0x13,0xC9,0x01,0x2A,0x49,0x01,0x45,0x4D, + 0xC5,0x4D,0x90,0x61,0x85,0x4D,0x20,0x73,0x00,0x4C,0xBB, + 0xAD,0xA6,0x4D,0xD0,0x2C,0xB0,0x7B,0x69,0x07,0x90,0x77, + 0x65,0x0D,0xD0,0x03,0x4C,0x3D,0xB6,0x69,0xFF,0x85,0x22, + 0x0A,0x65,0x22,0xA8,0x68,0xD9,0x80,0xA0,0xB0,0x67,0x20, + 0x8D,0xAD,0x48,0x20,0x20,0xAE,0x68,0xA4,0x4B,0x10,0x17, + 0xAA,0xF0,0x56,0xD0,0x5F,0x46,0x0D,0x8A,0x2A,0xA6,0x7A, + 0xD0,0x02,0xC6,0x7B,0xC6,0x7A,0xA0,0x1B,0x85,0x4D,0xD0, + 0xD7,0xD9,0x80,0xA0,0xB0,0x48,0x90,0xD9,0xB9,0x82,0xA0, + 0x48,0xB9,0x81,0xA0,0x48,0x20,0x33,0xAE,0xA5,0x4D,0x4C, + 0xA9,0xAD,0x4C,0x08,0xAF,0xA5,0x66,0xBE,0x80,0xA0,0xA8, + 0x68,0x85,0x22,0xE6,0x22,0x68,0x85,0x23,0x98,0x48,0x20, + 0x1B,0xBC,0xA5,0x65,0x48,0xA5,0x64,0x48,0xA5,0x63,0x48, + 0xA5,0x62,0x48,0xA5,0x61,0x48,0x6C,0x22,0x00,0xA0,0xFF, + 0x68,0xF0,0x23,0xC9,0x64,0xF0,0x03,0x20,0x8D,0xAD,0x84, + 0x4B,0x68,0x4A,0x85,0x12,0x68,0x85,0x69,0x68,0x85,0x6A, + 0x68,0x85,0x6B,0x68,0x85,0x6C,0x68,0x85,0x6D,0x68,0x85, + 0x6E,0x45,0x66,0x85,0x6F,0xA5,0x61,0x60,0x6C,0x0A,0x03, + 0xA9,0x00,0x85,0x0D,0x20,0x73,0x00,0xB0,0x03,0x4C,0xF3, + 0xBC,0x20,0x13,0xB1,0x90,0x03,0x4C,0x28,0xAF,0xC9,0xFF, + 0xD0,0x0F,0xA9,0xA8,0xA0,0xAE,0x20,0xA2,0xBB,0x4C,0x73, + 0x00,0x82,0x49,0x0F,0xDA,0xA1,0xC9,0x2E,0xF0,0xDE,0xC9, + 0xAB,0xF0,0x58,0xC9,0xAA,0xF0,0xD1,0xC9,0x22,0xD0,0x0F, + 0xA5,0x7A,0xA4,0x7B,0x69,0x00,0x90,0x01,0xC8,0x20,0x87, + 0xB4,0x4C,0xE2,0xB7,0xC9,0xA8,0xD0,0x13,0xA0,0x18,0xD0, + 0x3B,0x20,0xBF,0xB1,0xA5,0x65,0x49,0xFF,0xA8,0xA5,0x64, + 0x49,0xFF,0x4C,0x91,0xB3,0xC9,0xA5,0xD0,0x03,0x4C,0xF4, + 0xB3,0xC9,0xB4,0x90,0x03,0x4C,0xA7,0xAF,0x20,0xFA,0xAE, + 0x20,0x9E,0xAD,0xA9,0x29,0x2C,0xA9,0x28,0x2C,0xA9,0x2C, + 0xA0,0x00,0xD1,0x7A,0xD0,0x03,0x4C,0x73,0x00,0xA2,0x0B, + 0x4C,0x37,0xA4,0xA0,0x15,0x68,0x68,0x4C,0xFA,0xAD,0x38, + 0xA5,0x64,0xE9,0x00,0xA5,0x65,0xE9,0xA0,0x90,0x08,0xA9, + 0xA2,0xE5,0x64,0xA9,0xE3,0xE5,0x65,0x60,0x20,0x8B,0xB0, + 0x85,0x64,0x84,0x65,0xA6,0x45,0xA4,0x46,0xA5,0x0D,0xF0, + 0x26,0xA9,0x00,0x85,0x70,0x20,0x14,0xAF,0x90,0x1C,0xE0, + 0x54,0xD0,0x18,0xC0,0xC9,0xD0,0x14,0x20,0x84,0xAF,0x84, + 0x5E,0x88,0x84,0x71,0xA0,0x06,0x84,0x5D,0xA0,0x24,0x20, + 0x68,0xBE,0x4C,0x6F,0xB4,0x60,0x24,0x0E,0x10,0x0D,0xA0, + 0x00,0xB1,0x64,0xAA,0xC8,0xB1,0x64,0xA8,0x8A,0x4C,0x91, + 0xB3,0x20,0x14,0xAF,0x90,0x2D,0xE0,0x54,0xD0,0x1B,0xC0, + 0x49,0xD0,0x25,0x20,0x84,0xAF,0x98,0xA2,0xA0,0x4C,0x4F, + 0xBC,0x20,0xDE,0xFF,0x86,0x64,0x84,0x63,0x85,0x65,0xA0, + 0x00,0x84,0x62,0x60,0xE0,0x53,0xD0,0x0A,0xC0,0x54,0xD0, + 0x06,0x20,0xB7,0xFF,0x4C,0x3C,0xBC,0xA5,0x64,0xA4,0x65, + 0x4C,0xA2,0xBB,0x0A,0x48,0xAA,0x20,0x73,0x00,0xE0,0x8F, + 0x90,0x20,0x20,0xFA,0xAE,0x20,0x9E,0xAD,0x20,0xFD,0xAE, + 0x20,0x8F,0xAD,0x68,0xAA,0xA5,0x65,0x48,0xA5,0x64,0x48, + 0x8A,0x48,0x20,0x9E,0xB7,0x68,0xA8,0x8A,0x48,0x4C,0xD6, + 0xAF,0x20,0xF1,0xAE,0x68,0xA8,0xB9,0xEA,0x9F,0x85,0x55, + 0xB9,0xEB,0x9F,0x85,0x56,0x20,0x54,0x00,0x4C,0x8D,0xAD, + 0xA0,0xFF,0x2C,0xA0,0x00,0x84,0x0B,0x20,0xBF,0xB1,0xA5, + 0x64,0x45,0x0B,0x85,0x07,0xA5,0x65,0x45,0x0B,0x85,0x08, + 0x20,0xFC,0xBB,0x20,0xBF,0xB1,0xA5,0x65,0x45,0x0B,0x25, + 0x08,0x45,0x0B,0xA8,0xA5,0x64,0x45,0x0B,0x25,0x07,0x45, + 0x0B,0x4C,0x91,0xB3,0x20,0x90,0xAD,0xB0,0x13,0xA5,0x6E, + 0x09,0x7F,0x25,0x6A,0x85,0x6A,0xA9,0x69,0xA0,0x00,0x20, + 0x5B,0xBC,0xAA,0x4C,0x61,0xB0,0xA9,0x00,0x85,0x0D,0xC6, + 0x4D,0x20,0xA6,0xB6,0x85,0x61,0x86,0x62,0x84,0x63,0xA5, + 0x6C,0xA4,0x6D,0x20,0xAA,0xB6,0x86,0x6C,0x84,0x6D,0xAA, + 0x38,0xE5,0x61,0xF0,0x08,0xA9,0x01,0x90,0x04,0xA6,0x61, + 0xA9,0xFF,0x85,0x66,0xA0,0xFF,0xE8,0xC8,0xCA,0xD0,0x07, + 0xA6,0x66,0x30,0x0F,0x18,0x90,0x0C,0xB1,0x6C,0xD1,0x62, + 0xF0,0xEF,0xA2,0xFF,0xB0,0x02,0xA2,0x01,0xE8,0x8A,0x2A, + 0x25,0x12,0xF0,0x02,0xA9,0xFF,0x4C,0x3C,0xBC,0x20,0xFD, + 0xAE,0xAA,0x20,0x90,0xB0,0x20,0x79,0x00,0xD0,0xF4,0x60, + 0xA2,0x00,0x20,0x79,0x00,0x86,0x0C,0x85,0x45,0x20,0x79, + 0x00,0x20,0x13,0xB1,0xB0,0x03,0x4C,0x08,0xAF,0xA2,0x00, + 0x86,0x0D,0x86,0x0E,0x20,0x73,0x00,0x90,0x05,0x20,0x13, + 0xB1,0x90,0x0B,0xAA,0x20,0x73,0x00,0x90,0xFB,0x20,0x13, + 0xB1,0xB0,0xF6,0xC9,0x24,0xD0,0x06,0xA9,0xFF,0x85,0x0D, + 0xD0,0x10,0xC9,0x25,0xD0,0x13,0xA5,0x10,0xD0,0xD0,0xA9, + 0x80,0x85,0x0E,0x05,0x45,0x85,0x45,0x8A,0x09,0x80,0xAA, + 0x20,0x73,0x00,0x86,0x46,0x38,0x05,0x10,0xE9,0x28,0xD0, + 0x03,0x4C,0xD1,0xB1,0xA0,0x00,0x84,0x10,0xA5,0x2D,0xA6, + 0x2E,0x86,0x60,0x85,0x5F,0xE4,0x30,0xD0,0x04,0xC5,0x2F, + 0xF0,0x22,0xA5,0x45,0xD1,0x5F,0xD0,0x08,0xA5,0x46,0xC8, + 0xD1,0x5F,0xF0,0x7D,0x88,0x18,0xA5,0x5F,0x69,0x07,0x90, + 0xE1,0xE8,0xD0,0xDC,0xC9,0x41,0x90,0x05,0xE9,0x5B,0x38, + 0xE9,0xA5,0x60,0x68,0x48,0xC9,0x2A,0xD0,0x05,0xA9,0x13, + 0xA0,0xBF,0x60,0xA5,0x45,0xA4,0x46,0xC9,0x54,0xD0,0x0B, + 0xC0,0xC9,0xF0,0xEF,0xC0,0x49,0xD0,0x03,0x4C,0x08,0xAF, + 0xC9,0x53,0xD0,0x04,0xC0,0x54,0xF0,0xF5,0xA5,0x2F,0xA4, + 0x30,0x85,0x5F,0x84,0x60,0xA5,0x31,0xA4,0x32,0x85,0x5A, + 0x84,0x5B,0x18,0x69,0x07,0x90,0x01,0xC8,0x85,0x58,0x84, + 0x59,0x20,0xB8,0xA3,0xA5,0x58,0xA4,0x59,0xC8,0x85,0x2F, + 0x84,0x30,0xA0,0x00,0xA5,0x45,0x91,0x5F,0xC8,0xA5,0x46, + 0x91,0x5F,0xA9,0x00,0xC8,0x91,0x5F,0xC8,0x91,0x5F,0xC8, + 0x91,0x5F,0xC8,0x91,0x5F,0xC8,0x91,0x5F,0xA5,0x5F,0x18, + 0x69,0x02,0xA4,0x60,0x90,0x01,0xC8,0x85,0x47,0x84,0x48, + 0x60,0xA5,0x0B,0x0A,0x69,0x05,0x65,0x5F,0xA4,0x60,0x90, + 0x01,0xC8,0x85,0x58,0x84,0x59,0x60,0x90,0x80,0x00,0x00, + 0x00,0x20,0xBF,0xB1,0xA5,0x64,0xA4,0x65,0x60,0x20,0x73, + 0x00,0x20,0x9E,0xAD,0x20,0x8D,0xAD,0xA5,0x66,0x30,0x0D, + 0xA5,0x61,0xC9,0x90,0x90,0x09,0xA9,0xA5,0xA0,0xB1,0x20, + 0x5B,0xBC,0xD0,0x7A,0x4C,0x9B,0xBC,0xA5,0x0C,0x05,0x0E, + 0x48,0xA5,0x0D,0x48,0xA0,0x00,0x98,0x48,0xA5,0x46,0x48, + 0xA5,0x45,0x48,0x20,0xB2,0xB1,0x68,0x85,0x45,0x68,0x85, + 0x46,0x68,0xA8,0xBA,0xBD,0x02,0x01,0x48,0xBD,0x01,0x01, + 0x48,0xA5,0x64,0x9D,0x02,0x01,0xA5,0x65,0x9D,0x01,0x01, + 0xC8,0x20,0x79,0x00,0xC9,0x2C,0xF0,0xD2,0x84,0x0B,0x20, + 0xF7,0xAE,0x68,0x85,0x0D,0x68,0x85,0x0E,0x29,0x7F,0x85, + 0x0C,0xA6,0x2F,0xA5,0x30,0x86,0x5F,0x85,0x60,0xC5,0x32, + 0xD0,0x04,0xE4,0x31,0xF0,0x39,0xA0,0x00,0xB1,0x5F,0xC8, + 0xC5,0x45,0xD0,0x06,0xA5,0x46,0xD1,0x5F,0xF0,0x16,0xC8, + 0xB1,0x5F,0x18,0x65,0x5F,0xAA,0xC8,0xB1,0x5F,0x65,0x60, + 0x90,0xD7,0xA2,0x12,0x2C,0xA2,0x0E,0x4C,0x37,0xA4,0xA2, + 0x13,0xA5,0x0C,0xD0,0xF7,0x20,0x94,0xB1,0xA5,0x0B,0xA0, + 0x04,0xD1,0x5F,0xD0,0xE7,0x4C,0xEA,0xB2,0x20,0x94,0xB1, + 0x20,0x08,0xA4,0xA0,0x00,0x84,0x72,0xA2,0x05,0xA5,0x45, + 0x91,0x5F,0x10,0x01,0xCA,0xC8,0xA5,0x46,0x91,0x5F,0x10, + 0x02,0xCA,0xCA,0x86,0x71,0xA5,0x0B,0xC8,0xC8,0xC8,0x91, + 0x5F,0xA2,0x0B,0xA9,0x00,0x24,0x0C,0x50,0x08,0x68,0x18, + 0x69,0x01,0xAA,0x68,0x69,0x00,0xC8,0x91,0x5F,0xC8,0x8A, + 0x91,0x5F,0x20,0x4C,0xB3,0x86,0x71,0x85,0x72,0xA4,0x22, + 0xC6,0x0B,0xD0,0xDC,0x65,0x59,0xB0,0x5D,0x85,0x59,0xA8, + 0x8A,0x65,0x58,0x90,0x03,0xC8,0xF0,0x52,0x20,0x08,0xA4, + 0x85,0x31,0x84,0x32,0xA9,0x00,0xE6,0x72,0xA4,0x71,0xF0, + 0x05,0x88,0x91,0x58,0xD0,0xFB,0xC6,0x59,0xC6,0x72,0xD0, + 0xF5,0xE6,0x59,0x38,0xA5,0x31,0xE5,0x5F,0xA0,0x02,0x91, + 0x5F,0xA5,0x32,0xC8,0xE5,0x60,0x91,0x5F,0xA5,0x0C,0xD0, + 0x62,0xC8,0xB1,0x5F,0x85,0x0B,0xA9,0x00,0x85,0x71,0x85, + 0x72,0xC8,0x68,0xAA,0x85,0x64,0x68,0x85,0x65,0xD1,0x5F, + 0x90,0x0E,0xD0,0x06,0xC8,0x8A,0xD1,0x5F,0x90,0x07,0x4C, + 0x45,0xB2,0x4C,0x35,0xA4,0xC8,0xA5,0x72,0x05,0x71,0x18, + 0xF0,0x0A,0x20,0x4C,0xB3,0x8A,0x65,0x64,0xAA,0x98,0xA4, + 0x22,0x65,0x65,0x86,0x71,0xC6,0x0B,0xD0,0xCA,0x85,0x72, + 0xA2,0x05,0xA5,0x45,0x10,0x01,0xCA,0xA5,0x46,0x10,0x02, + 0xCA,0xCA,0x86,0x28,0xA9,0x00,0x20,0x55,0xB3,0x8A,0x65, + 0x58,0x85,0x47,0x98,0x65,0x59,0x85,0x48,0xA8,0xA5,0x47, + 0x60,0x84,0x22,0xB1,0x5F,0x85,0x28,0x88,0xB1,0x5F,0x85, + 0x29,0xA9,0x10,0x85,0x5D,0xA2,0x00,0xA0,0x00,0x8A,0x0A, + 0xAA,0x98,0x2A,0xA8,0xB0,0xA4,0x06,0x71,0x26,0x72,0x90, + 0x0B,0x18,0x8A,0x65,0x28,0xAA,0x98,0x65,0x29,0xA8,0xB0, + 0x93,0xC6,0x5D,0xD0,0xE3,0x60,0xA5,0x0D,0xF0,0x03,0x20, + 0xA6,0xB6,0x20,0x26,0xB5,0x38,0xA5,0x33,0xE5,0x31,0xA8, + 0xA5,0x34,0xE5,0x32,0xA2,0x00,0x86,0x0D,0x85,0x62,0x84, + 0x63,0xA2,0x90,0x4C,0x44,0xBC,0x38,0x20,0xF0,0xFF,0xA9, + 0x00,0xF0,0xEB,0xA6,0x3A,0xE8,0xD0,0xA0,0xA2,0x15,0x2C, + 0xA2,0x1B,0x4C,0x37,0xA4,0x20,0xE1,0xB3,0x20,0xA6,0xB3, + 0x20,0xFA,0xAE,0xA9,0x80,0x85,0x10,0x20,0x8B,0xB0,0x20, + 0x8D,0xAD,0x20,0xF7,0xAE,0xA9,0xB2,0x20,0xFF,0xAE,0x48, + 0xA5,0x48,0x48,0xA5,0x47,0x48,0xA5,0x7B,0x48,0xA5,0x7A, + 0x48,0x20,0xF8,0xA8,0x4C,0x4F,0xB4,0xA9,0xA5,0x20,0xFF, + 0xAE,0x09,0x80,0x85,0x10,0x20,0x92,0xB0,0x85,0x4E,0x84, + 0x4F,0x4C,0x8D,0xAD,0x20,0xE1,0xB3,0xA5,0x4F,0x48,0xA5, + 0x4E,0x48,0x20,0xF1,0xAE,0x20,0x8D,0xAD,0x68,0x85,0x4E, + 0x68,0x85,0x4F,0xA0,0x02,0xB1,0x4E,0x85,0x47,0xAA,0xC8, + 0xB1,0x4E,0xF0,0x99,0x85,0x48,0xC8,0xB1,0x47,0x48,0x88, + 0x10,0xFA,0xA4,0x48,0x20,0xD4,0xBB,0xA5,0x7B,0x48,0xA5, + 0x7A,0x48,0xB1,0x4E,0x85,0x7A,0xC8,0xB1,0x4E,0x85,0x7B, + 0xA5,0x48,0x48,0xA5,0x47,0x48,0x20,0x8A,0xAD,0x68,0x85, + 0x4E,0x68,0x85,0x4F,0x20,0x79,0x00,0xF0,0x03,0x4C,0x08, + 0xAF,0x68,0x85,0x7A,0x68,0x85,0x7B,0xA0,0x00,0x68,0x91, + 0x4E,0x68,0xC8,0x91,0x4E,0x68,0xC8,0x91,0x4E,0x68,0xC8, + 0x91,0x4E,0x68,0xC8,0x91,0x4E,0x60,0x20,0x8D,0xAD,0xA0, + 0x00,0x20,0xDF,0xBD,0x68,0x68,0xA9,0xFF,0xA0,0x00,0xF0, + 0x12,0xA6,0x64,0xA4,0x65,0x86,0x50,0x84,0x51,0x20,0xF4, + 0xB4,0x86,0x62,0x84,0x63,0x85,0x61,0x60,0xA2,0x22,0x86, + 0x07,0x86,0x08,0x85,0x6F,0x84,0x70,0x85,0x62,0x84,0x63, + 0xA0,0xFF,0xC8,0xB1,0x6F,0xF0,0x0C,0xC5,0x07,0xF0,0x04, + 0xC5,0x08,0xD0,0xF3,0xC9,0x22,0xF0,0x01,0x18,0x84,0x61, + 0x98,0x65,0x6F,0x85,0x71,0xA6,0x70,0x90,0x01,0xE8,0x86, + 0x72,0xA5,0x70,0xF0,0x04,0xC9,0x02,0xD0,0x0B,0x98,0x20, + 0x75,0xB4,0xA6,0x6F,0xA4,0x70,0x20,0x88,0xB6,0xA6,0x16, + 0xE0,0x22,0xD0,0x05,0xA2,0x19,0x4C,0x37,0xA4,0xA5,0x61, + 0x95,0x00,0xA5,0x62,0x95,0x01,0xA5,0x63,0x95,0x02,0xA0, + 0x00,0x86,0x64,0x84,0x65,0x84,0x70,0x88,0x84,0x0D,0x86, + 0x17,0xE8,0xE8,0xE8,0x86,0x16,0x60,0x46,0x0F,0x48,0x49, + 0xFF,0x38,0x65,0x33,0xA4,0x34,0xB0,0x01,0x88,0xC4,0x32, + 0x90,0x11,0xD0,0x04,0xC5,0x31,0x90,0x0B,0x85,0x33,0x84, + 0x34,0x85,0x35,0x84,0x36,0xAA,0x68,0x60,0xA2,0x10,0xA5, + 0x0F,0x30,0xB6,0x20,0x26,0xB5,0xA9,0x80,0x85,0x0F,0x68, + 0xD0,0xD0,0xA6,0x37,0xA5,0x38,0x86,0x33,0x85,0x34,0xA0, + 0x00,0x84,0x4F,0x84,0x4E,0xA5,0x31,0xA6,0x32,0x85,0x5F, + 0x86,0x60,0xA9,0x19,0xA2,0x00,0x85,0x22,0x86,0x23,0xC5, + 0x16,0xF0,0x05,0x20,0xC7,0xB5,0xF0,0xF7,0xA9,0x07,0x85, + 0x53,0xA5,0x2D,0xA6,0x2E,0x85,0x22,0x86,0x23,0xE4,0x30, + 0xD0,0x04,0xC5,0x2F,0xF0,0x05,0x20,0xBD,0xB5,0xF0,0xF3, + 0x85,0x58,0x86,0x59,0xA9,0x03,0x85,0x53,0xA5,0x58,0xA6, + 0x59,0xE4,0x32,0xD0,0x07,0xC5,0x31,0xD0,0x03,0x4C,0x06, + 0xB6,0x85,0x22,0x86,0x23,0xA0,0x00,0xB1,0x22,0xAA,0xC8, + 0xB1,0x22,0x08,0xC8,0xB1,0x22,0x65,0x58,0x85,0x58,0xC8, + 0xB1,0x22,0x65,0x59,0x85,0x59,0x28,0x10,0xD3,0x8A,0x30, + 0xD0,0xC8,0xB1,0x22,0xA0,0x00,0x0A,0x69,0x05,0x65,0x22, + 0x85,0x22,0x90,0x02,0xE6,0x23,0xA6,0x23,0xE4,0x59,0xD0, + 0x04,0xC5,0x58,0xF0,0xBA,0x20,0xC7,0xB5,0xF0,0xF3,0xB1, + 0x22,0x30,0x35,0xC8,0xB1,0x22,0x10,0x30,0xC8,0xB1,0x22, + 0xF0,0x2B,0xC8,0xB1,0x22,0xAA,0xC8,0xB1,0x22,0xC5,0x34, + 0x90,0x06,0xD0,0x1E,0xE4,0x33,0xB0,0x1A,0xC5,0x60,0x90, + 0x16,0xD0,0x04,0xE4,0x5F,0x90,0x10,0x86,0x5F,0x85,0x60, + 0xA5,0x22,0xA6,0x23,0x85,0x4E,0x86,0x4F,0xA5,0x53,0x85, + 0x55,0xA5,0x53,0x18,0x65,0x22,0x85,0x22,0x90,0x02,0xE6, + 0x23,0xA6,0x23,0xA0,0x00,0x60,0xA5,0x4F,0x05,0x4E,0xF0, + 0xF5,0xA5,0x55,0x29,0x04,0x4A,0xA8,0x85,0x55,0xB1,0x4E, + 0x65,0x5F,0x85,0x5A,0xA5,0x60,0x69,0x00,0x85,0x5B,0xA5, + 0x33,0xA6,0x34,0x85,0x58,0x86,0x59,0x20,0xBF,0xA3,0xA4, + 0x55,0xC8,0xA5,0x58,0x91,0x4E,0xAA,0xE6,0x59,0xA5,0x59, + 0xC8,0x91,0x4E,0x4C,0x2A,0xB5,0xA5,0x65,0x48,0xA5,0x64, + 0x48,0x20,0x83,0xAE,0x20,0x8F,0xAD,0x68,0x85,0x6F,0x68, + 0x85,0x70,0xA0,0x00,0xB1,0x6F,0x18,0x71,0x64,0x90,0x05, + 0xA2,0x17,0x4C,0x37,0xA4,0x20,0x75,0xB4,0x20,0x7A,0xB6, + 0xA5,0x50,0xA4,0x51,0x20,0xAA,0xB6,0x20,0x8C,0xB6,0xA5, + 0x6F,0xA4,0x70,0x20,0xAA,0xB6,0x20,0xCA,0xB4,0x4C,0xB8, + 0xAD,0xA0,0x00,0xB1,0x6F,0x48,0xC8,0xB1,0x6F,0xAA,0xC8, + 0xB1,0x6F,0xA8,0x68,0x86,0x22,0x84,0x23,0xA8,0xF0,0x0A, + 0x48,0x88,0xB1,0x22,0x91,0x35,0x98,0xD0,0xF8,0x68,0x18, + 0x65,0x35,0x85,0x35,0x90,0x02,0xE6,0x36,0x60,0x20,0x8F, + 0xAD,0xA5,0x64,0xA4,0x65,0x85,0x22,0x84,0x23,0x20,0xDB, + 0xB6,0x08,0xA0,0x00,0xB1,0x22,0x48,0xC8,0xB1,0x22,0xAA, + 0xC8,0xB1,0x22,0xA8,0x68,0x28,0xD0,0x13,0xC4,0x34,0xD0, + 0x0F,0xE4,0x33,0xD0,0x0B,0x48,0x18,0x65,0x33,0x85,0x33, + 0x90,0x02,0xE6,0x34,0x68,0x86,0x22,0x84,0x23,0x60,0xC4, + 0x18,0xD0,0x0C,0xC5,0x17,0xD0,0x08,0x85,0x16,0xE9,0x03, + 0x85,0x17,0xA0,0x00,0x60,0x20,0xA1,0xB7,0x8A,0x48,0xA9, + 0x01,0x20,0x7D,0xB4,0x68,0xA0,0x00,0x91,0x62,0x68,0x68, + 0x4C,0xCA,0xB4,0x20,0x61,0xB7,0xD1,0x50,0x98,0x90,0x04, + 0xB1,0x50,0xAA,0x98,0x48,0x8A,0x48,0x20,0x7D,0xB4,0xA5, + 0x50,0xA4,0x51,0x20,0xAA,0xB6,0x68,0xA8,0x68,0x18,0x65, + 0x22,0x85,0x22,0x90,0x02,0xE6,0x23,0x98,0x20,0x8C,0xB6, + 0x4C,0xCA,0xB4,0x20,0x61,0xB7,0x18,0xF1,0x50,0x49,0xFF, + 0x4C,0x06,0xB7,0xA9,0xFF,0x85,0x65,0x20,0x79,0x00,0xC9, + 0x29,0xF0,0x06,0x20,0xFD,0xAE,0x20,0x9E,0xB7,0x20,0x61, + 0xB7,0xF0,0x4B,0xCA,0x8A,0x48,0x18,0xA2,0x00,0xF1,0x50, + 0xB0,0xB6,0x49,0xFF,0xC5,0x65,0x90,0xB1,0xA5,0x65,0xB0, + 0xAD,0x20,0xF7,0xAE,0x68,0xA8,0x68,0x85,0x55,0x68,0x68, + 0x68,0xAA,0x68,0x85,0x50,0x68,0x85,0x51,0xA5,0x55,0x48, + 0x98,0x48,0xA0,0x00,0x8A,0x60,0x20,0x82,0xB7,0x4C,0xA2, + 0xB3,0x20,0xA3,0xB6,0xA2,0x00,0x86,0x0D,0xA8,0x60,0x20, + 0x82,0xB7,0xF0,0x08,0xA0,0x00,0xB1,0x22,0xA8,0x4C,0xA2, + 0xB3,0x4C,0x48,0xB2,0x20,0x73,0x00,0x20,0x8A,0xAD,0x20, + 0xB8,0xB1,0xA6,0x64,0xD0,0xF0,0xA6,0x65,0x4C,0x79,0x00, + 0x20,0x82,0xB7,0xD0,0x03,0x4C,0xF7,0xB8,0xA6,0x7A,0xA4, + 0x7B,0x86,0x71,0x84,0x72,0xA6,0x22,0x86,0x7A,0x18,0x65, + 0x22,0x85,0x24,0xA6,0x23,0x86,0x7B,0x90,0x01,0xE8,0x86, + 0x25,0xA0,0x00,0xB1,0x24,0x48,0x98,0x91,0x24,0x20,0x79, + 0x00,0x20,0xF3,0xBC,0x68,0xA0,0x00,0x91,0x24,0xA6,0x71, + 0xA4,0x72,0x86,0x7A,0x84,0x7B,0x60,0x20,0x8A,0xAD,0x20, + 0xF7,0xB7,0x20,0xFD,0xAE,0x4C,0x9E,0xB7,0xA5,0x66,0x30, + 0x9D,0xA5,0x61,0xC9,0x91,0xB0,0x97,0x20,0x9B,0xBC,0xA5, + 0x64,0xA4,0x65,0x84,0x14,0x85,0x15,0x60,0xA5,0x15,0x48, + 0xA5,0x14,0x48,0x20,0xF7,0xB7,0xA0,0x00,0xB1,0x14,0xA8, + 0x68,0x85,0x14,0x68,0x85,0x15,0x4C,0xA2,0xB3,0x20,0xEB, + 0xB7,0x8A,0xA0,0x00,0x91,0x14,0x60,0x20,0xEB,0xB7,0x86, + 0x49,0xA2,0x00,0x20,0x79,0x00,0xF0,0x03,0x20,0xF1,0xB7, + 0x86,0x4A,0xA0,0x00,0xB1,0x14,0x45,0x4A,0x25,0x49,0xF0, + 0xF8,0x60,0xA9,0x11,0xA0,0xBF,0x4C,0x67,0xB8,0x20,0x8C, + 0xBA,0xA5,0x66,0x49,0xFF,0x85,0x66,0x45,0x6E,0x85,0x6F, + 0xA5,0x61,0x4C,0x6A,0xB8,0x20,0x99,0xB9,0x90,0x3C,0x20, + 0x8C,0xBA,0xD0,0x03,0x4C,0xFC,0xBB,0xA6,0x70,0x86,0x56, + 0xA2,0x69,0xA5,0x69,0xA8,0xF0,0xCE,0x38,0xE5,0x61,0xF0, + 0x24,0x90,0x12,0x84,0x61,0xA4,0x6E,0x84,0x66,0x49,0xFF, + 0x69,0x00,0xA0,0x00,0x84,0x56,0xA2,0x61,0xD0,0x04,0xA0, + 0x00,0x84,0x70,0xC9,0xF9,0x30,0xC7,0xA8,0xA5,0x70,0x56, + 0x01,0x20,0xB0,0xB9,0x24,0x6F,0x10,0x57,0xA0,0x61,0xE0, + 0x69,0xF0,0x02,0xA0,0x69,0x38,0x49,0xFF,0x65,0x56,0x85, + 0x70,0xB9,0x04,0x00,0xF5,0x04,0x85,0x65,0xB9,0x03,0x00, + 0xF5,0x03,0x85,0x64,0xB9,0x02,0x00,0xF5,0x02,0x85,0x63, + 0xB9,0x01,0x00,0xF5,0x01,0x85,0x62,0xB0,0x03,0x20,0x47, + 0xB9,0xA0,0x00,0x98,0x18,0xA6,0x62,0xD0,0x4A,0xA6,0x63, + 0x86,0x62,0xA6,0x64,0x86,0x63,0xA6,0x65,0x86,0x64,0xA6, + 0x70,0x86,0x65,0x84,0x70,0x69,0x08,0xC9,0x20,0xD0,0xE4, + 0xA9,0x00,0x85,0x61,0x85,0x66,0x60,0x65,0x56,0x85,0x70, + 0xA5,0x65,0x65,0x6D,0x85,0x65,0xA5,0x64,0x65,0x6C,0x85, + 0x64,0xA5,0x63,0x65,0x6B,0x85,0x63,0xA5,0x62,0x65,0x6A, + 0x85,0x62,0x4C,0x36,0xB9,0x69,0x01,0x06,0x70,0x26,0x65, + 0x26,0x64,0x26,0x63,0x26,0x62,0x10,0xF2,0x38,0xE5,0x61, + 0xB0,0xC7,0x49,0xFF,0x69,0x01,0x85,0x61,0x90,0x0E,0xE6, + 0x61,0xF0,0x42,0x66,0x62,0x66,0x63,0x66,0x64,0x66,0x65, + 0x66,0x70,0x60,0xA5,0x66,0x49,0xFF,0x85,0x66,0xA5,0x62, + 0x49,0xFF,0x85,0x62,0xA5,0x63,0x49,0xFF,0x85,0x63,0xA5, + 0x64,0x49,0xFF,0x85,0x64,0xA5,0x65,0x49,0xFF,0x85,0x65, + 0xA5,0x70,0x49,0xFF,0x85,0x70,0xE6,0x70,0xD0,0x0E,0xE6, + 0x65,0xD0,0x0A,0xE6,0x64,0xD0,0x06,0xE6,0x63,0xD0,0x02, + 0xE6,0x62,0x60,0xA2,0x0F,0x4C,0x37,0xA4,0xA2,0x25,0xB4, + 0x04,0x84,0x70,0xB4,0x03,0x94,0x04,0xB4,0x02,0x94,0x03, + 0xB4,0x01,0x94,0x02,0xA4,0x68,0x94,0x01,0x69,0x08,0x30, + 0xE8,0xF0,0xE6,0xE9,0x08,0xA8,0xA5,0x70,0xB0,0x14,0x16, + 0x01,0x90,0x02,0xF6,0x01,0x76,0x01,0x76,0x01,0x76,0x02, + 0x76,0x03,0x76,0x04,0x6A,0xC8,0xD0,0xEC,0x18,0x60,0x81, + 0x00,0x00,0x00,0x00,0x03,0x7F,0x5E,0x56,0xCB,0x79,0x80, + 0x13,0x9B,0x0B,0x64,0x80,0x76,0x38,0x93,0x16,0x82,0x38, + 0xAA,0x3B,0x20,0x80,0x35,0x04,0xF3,0x34,0x81,0x35,0x04, + 0xF3,0x34,0x80,0x80,0x00,0x00,0x00,0x80,0x31,0x72,0x17, + 0xF8,0x20,0x2B,0xBC,0xF0,0x02,0x10,0x03,0x4C,0x48,0xB2, + 0xA5,0x61,0xE9,0x7F,0x48,0xA9,0x80,0x85,0x61,0xA9,0xD6, + 0xA0,0xB9,0x20,0x67,0xB8,0xA9,0xDB,0xA0,0xB9,0x20,0x0F, + 0xBB,0xA9,0xBC,0xA0,0xB9,0x20,0x50,0xB8,0xA9,0xC1,0xA0, + 0xB9,0x20,0x43,0xE0,0xA9,0xE0,0xA0,0xB9,0x20,0x67,0xB8, + 0x68,0x20,0x7E,0xBD,0xA9,0xE5,0xA0,0xB9,0x20,0x8C,0xBA, + 0xD0,0x03,0x4C,0x8B,0xBA,0x20,0xB7,0xBA,0xA9,0x00,0x85, + 0x26,0x85,0x27,0x85,0x28,0x85,0x29,0xA5,0x70,0x20,0x59, + 0xBA,0xA5,0x65,0x20,0x59,0xBA,0xA5,0x64,0x20,0x59,0xBA, + 0xA5,0x63,0x20,0x59,0xBA,0xA5,0x62,0x20,0x5E,0xBA,0x4C, + 0x8F,0xBB,0xD0,0x03,0x4C,0x83,0xB9,0x4A,0x09,0x80,0xA8, + 0x90,0x19,0x18,0xA5,0x29,0x65,0x6D,0x85,0x29,0xA5,0x28, + 0x65,0x6C,0x85,0x28,0xA5,0x27,0x65,0x6B,0x85,0x27,0xA5, + 0x26,0x65,0x6A,0x85,0x26,0x66,0x26,0x66,0x27,0x66,0x28, + 0x66,0x29,0x66,0x70,0x98,0x4A,0xD0,0xD6,0x60,0x85,0x22, + 0x84,0x23,0xA0,0x04,0xB1,0x22,0x85,0x6D,0x88,0xB1,0x22, + 0x85,0x6C,0x88,0xB1,0x22,0x85,0x6B,0x88,0xB1,0x22,0x85, + 0x6E,0x45,0x66,0x85,0x6F,0xA5,0x6E,0x09,0x80,0x85,0x6A, + 0x88,0xB1,0x22,0x85,0x69,0xA5,0x61,0x60,0xA5,0x69,0xF0, + 0x1F,0x18,0x65,0x61,0x90,0x04,0x30,0x1D,0x18,0x2C,0x10, + 0x14,0x69,0x80,0x85,0x61,0xD0,0x03,0x4C,0xFB,0xB8,0xA5, + 0x6F,0x85,0x66,0x60,0xA5,0x66,0x49,0xFF,0x30,0x05,0x68, + 0x68,0x4C,0xF7,0xB8,0x4C,0x7E,0xB9,0x20,0x0C,0xBC,0xAA, + 0xF0,0x10,0x18,0x69,0x02,0xB0,0xF2,0xA2,0x00,0x86,0x6F, + 0x20,0x77,0xB8,0xE6,0x61,0xF0,0xE7,0x60,0x84,0x20,0x00, + 0x00,0x00,0x20,0x0C,0xBC,0xA9,0xF9,0xA0,0xBA,0xA2,0x00, + 0x86,0x6F,0x20,0xA2,0xBB,0x4C,0x12,0xBB,0x20,0x8C,0xBA, + 0xF0,0x76,0x20,0x1B,0xBC,0xA9,0x00,0x38,0xE5,0x61,0x85, + 0x61,0x20,0xB7,0xBA,0xE6,0x61,0xF0,0xBA,0xA2,0xFC,0xA9, + 0x01,0xA4,0x6A,0xC4,0x62,0xD0,0x10,0xA4,0x6B,0xC4,0x63, + 0xD0,0x0A,0xA4,0x6C,0xC4,0x64,0xD0,0x04,0xA4,0x6D,0xC4, + 0x65,0x08,0x2A,0x90,0x09,0xE8,0x95,0x29,0xF0,0x32,0x10, + 0x34,0xA9,0x01,0x28,0xB0,0x0E,0x06,0x6D,0x26,0x6C,0x26, + 0x6B,0x26,0x6A,0xB0,0xE6,0x30,0xCE,0x10,0xE2,0xA8,0xA5, + 0x6D,0xE5,0x65,0x85,0x6D,0xA5,0x6C,0xE5,0x64,0x85,0x6C, + 0xA5,0x6B,0xE5,0x63,0x85,0x6B,0xA5,0x6A,0xE5,0x62,0x85, + 0x6A,0x98,0x4C,0x4F,0xBB,0xA9,0x40,0xD0,0xCE,0x0A,0x0A, + 0x0A,0x0A,0x0A,0x0A,0x85,0x70,0x28,0x4C,0x8F,0xBB,0xA2, + 0x14,0x4C,0x37,0xA4,0xA5,0x26,0x85,0x62,0xA5,0x27,0x85, + 0x63,0xA5,0x28,0x85,0x64,0xA5,0x29,0x85,0x65,0x4C,0xD7, + 0xB8,0x85,0x22,0x84,0x23,0xA0,0x04,0xB1,0x22,0x85,0x65, + 0x88,0xB1,0x22,0x85,0x64,0x88,0xB1,0x22,0x85,0x63,0x88, + 0xB1,0x22,0x85,0x66,0x09,0x80,0x85,0x62,0x88,0xB1,0x22, + 0x85,0x61,0x84,0x70,0x60,0xA2,0x5C,0x2C,0xA2,0x57,0xA0, + 0x00,0xF0,0x04,0xA6,0x49,0xA4,0x4A,0x20,0x1B,0xBC,0x86, + 0x22,0x84,0x23,0xA0,0x04,0xA5,0x65,0x91,0x22,0x88,0xA5, + 0x64,0x91,0x22,0x88,0xA5,0x63,0x91,0x22,0x88,0xA5,0x66, + 0x09,0x7F,0x25,0x62,0x91,0x22,0x88,0xA5,0x61,0x91,0x22, + 0x84,0x70,0x60,0xA5,0x6E,0x85,0x66,0xA2,0x05,0xB5,0x68, + 0x95,0x60,0xCA,0xD0,0xF9,0x86,0x70,0x60,0x20,0x1B,0xBC, + 0xA2,0x06,0xB5,0x60,0x95,0x68,0xCA,0xD0,0xF9,0x86,0x70, + 0x60,0xA5,0x61,0xF0,0xFB,0x06,0x70,0x90,0xF7,0x20,0x6F, + 0xB9,0xD0,0xF2,0x4C,0x38,0xB9,0xA5,0x61,0xF0,0x09,0xA5, + 0x66,0x2A,0xA9,0xFF,0xB0,0x02,0xA9,0x01,0x60,0x20,0x2B, + 0xBC,0x85,0x62,0xA9,0x00,0x85,0x63,0xA2,0x88,0xA5,0x62, + 0x49,0xFF,0x2A,0xA9,0x00,0x85,0x65,0x85,0x64,0x86,0x61, + 0x85,0x70,0x85,0x66,0x4C,0xD2,0xB8,0x46,0x66,0x60,0x85, + 0x24,0x84,0x25,0xA0,0x00,0xB1,0x24,0xC8,0xAA,0xF0,0xC4, + 0xB1,0x24,0x45,0x66,0x30,0xC2,0xE4,0x61,0xD0,0x21,0xB1, + 0x24,0x09,0x80,0xC5,0x62,0xD0,0x19,0xC8,0xB1,0x24,0xC5, + 0x63,0xD0,0x12,0xC8,0xB1,0x24,0xC5,0x64,0xD0,0x0B,0xC8, + 0xA9,0x7F,0xC5,0x70,0xB1,0x24,0xE5,0x65,0xF0,0x28,0xA5, + 0x66,0x90,0x02,0x49,0xFF,0x4C,0x31,0xBC,0xA5,0x61,0xF0, + 0x4A,0x38,0xE9,0xA0,0x24,0x66,0x10,0x09,0xAA,0xA9,0xFF, + 0x85,0x68,0x20,0x4D,0xB9,0x8A,0xA2,0x61,0xC9,0xF9,0x10, + 0x06,0x20,0x99,0xB9,0x84,0x68,0x60,0xA8,0xA5,0x66,0x29, + 0x80,0x46,0x62,0x05,0x62,0x85,0x62,0x20,0xB0,0xB9,0x84, + 0x68,0x60,0xA5,0x61,0xC9,0xA0,0xB0,0x20,0x20,0x9B,0xBC, + 0x84,0x70,0xA5,0x66,0x84,0x66,0x49,0x80,0x2A,0xA9,0xA0, + 0x85,0x61,0xA5,0x65,0x85,0x07,0x4C,0xD2,0xB8,0x85,0x62, + 0x85,0x63,0x85,0x64,0x85,0x65,0xA8,0x60,0xA0,0x00,0xA2, + 0x0A,0x94,0x5D,0xCA,0x10,0xFB,0x90,0x0F,0xC9,0x2D,0xD0, + 0x04,0x86,0x67,0xF0,0x04,0xC9,0x2B,0xD0,0x05,0x20,0x73, + 0x00,0x90,0x5B,0xC9,0x2E,0xF0,0x2E,0xC9,0x45,0xD0,0x30, + 0x20,0x73,0x00,0x90,0x17,0xC9,0xAB,0xF0,0x0E,0xC9,0x2D, + 0xF0,0x0A,0xC9,0xAA,0xF0,0x08,0xC9,0x2B,0xF0,0x04,0xD0, + 0x07,0x66,0x60,0x20,0x73,0x00,0x90,0x5C,0x24,0x60,0x10, + 0x0E,0xA9,0x00,0x38,0xE5,0x5E,0x4C,0x49,0xBD,0x66,0x5F, + 0x24,0x5F,0x50,0xC3,0xA5,0x5E,0x38,0xE5,0x5D,0x85,0x5E, + 0xF0,0x12,0x10,0x09,0x20,0xFE,0xBA,0xE6,0x5E,0xD0,0xF9, + 0xF0,0x07,0x20,0xE2,0xBA,0xC6,0x5E,0xD0,0xF9,0xA5,0x67, + 0x30,0x01,0x60,0x4C,0xB4,0xBF,0x48,0x24,0x5F,0x10,0x02, + 0xE6,0x5D,0x20,0xE2,0xBA,0x68,0x38,0xE9,0x30,0x20,0x7E, + 0xBD,0x4C,0x0A,0xBD,0x48,0x20,0x0C,0xBC,0x68,0x20,0x3C, + 0xBC,0xA5,0x6E,0x45,0x66,0x85,0x6F,0xA6,0x61,0x4C,0x6A, + 0xB8,0xA5,0x5E,0xC9,0x0A,0x90,0x09,0xA9,0x64,0x24,0x60, + 0x30,0x11,0x4C,0x7E,0xB9,0x0A,0x0A,0x18,0x65,0x5E,0x0A, + 0x18,0xA0,0x00,0x71,0x7A,0x38,0xE9,0x30,0x85,0x5E,0x4C, + 0x30,0xBD,0x9B,0x3E,0xBC,0x1F,0xFD,0x9E,0x6E,0x6B,0x27, + 0xFD,0x9E,0x6E,0x6B,0x28,0x00,0xA9,0x71,0xA0,0xA3,0x20, + 0xDA,0xBD,0xA5,0x3A,0xA6,0x39,0x85,0x62,0x86,0x63,0xA2, + 0x90,0x38,0x20,0x49,0xBC,0x20,0xDF,0xBD,0x4C,0x1E,0xAB, + 0xA0,0x01,0xA9,0x20,0x24,0x66,0x10,0x02,0xA9,0x2D,0x99, + 0xFF,0x00,0x85,0x66,0x84,0x71,0xC8,0xA9,0x30,0xA6,0x61, + 0xD0,0x03,0x4C,0x04,0xBF,0xA9,0x00,0xE0,0x80,0xF0,0x02, + 0xB0,0x09,0xA9,0xBD,0xA0,0xBD,0x20,0x28,0xBA,0xA9,0xF7, + 0x85,0x5D,0xA9,0xB8,0xA0,0xBD,0x20,0x5B,0xBC,0xF0,0x1E, + 0x10,0x12,0xA9,0xB3,0xA0,0xBD,0x20,0x5B,0xBC,0xF0,0x02, + 0x10,0x0E,0x20,0xE2,0xBA,0xC6,0x5D,0xD0,0xEE,0x20,0xFE, + 0xBA,0xE6,0x5D,0xD0,0xDC,0x20,0x49,0xB8,0x20,0x9B,0xBC, + 0xA2,0x01,0xA5,0x5D,0x18,0x69,0x0A,0x30,0x09,0xC9,0x0B, + 0xB0,0x06,0x69,0xFF,0xAA,0xA9,0x02,0x38,0xE9,0x02,0x85, + 0x5E,0x86,0x5D,0x8A,0xF0,0x02,0x10,0x13,0xA4,0x71,0xA9, + 0x2E,0xC8,0x99,0xFF,0x00,0x8A,0xF0,0x06,0xA9,0x30,0xC8, + 0x99,0xFF,0x00,0x84,0x71,0xA0,0x00,0xA2,0x80,0xA5,0x65, + 0x18,0x79,0x19,0xBF,0x85,0x65,0xA5,0x64,0x79,0x18,0xBF, + 0x85,0x64,0xA5,0x63,0x79,0x17,0xBF,0x85,0x63,0xA5,0x62, + 0x79,0x16,0xBF,0x85,0x62,0xE8,0xB0,0x04,0x10,0xDE,0x30, + 0x02,0x30,0xDA,0x8A,0x90,0x04,0x49,0xFF,0x69,0x0A,0x69, + 0x2F,0xC8,0xC8,0xC8,0xC8,0x84,0x47,0xA4,0x71,0xC8,0xAA, + 0x29,0x7F,0x99,0xFF,0x00,0xC6,0x5D,0xD0,0x06,0xA9,0x2E, + 0xC8,0x99,0xFF,0x00,0x84,0x71,0xA4,0x47,0x8A,0x49,0xFF, + 0x29,0x80,0xAA,0xC0,0x24,0xF0,0x04,0xC0,0x3C,0xD0,0xA6, + 0xA4,0x71,0xB9,0xFF,0x00,0x88,0xC9,0x30,0xF0,0xF8,0xC9, + 0x2E,0xF0,0x01,0xC8,0xA9,0x2B,0xA6,0x5E,0xF0,0x2E,0x10, + 0x08,0xA9,0x00,0x38,0xE5,0x5E,0xAA,0xA9,0x2D,0x99,0x01, + 0x01,0xA9,0x45,0x99,0x00,0x01,0x8A,0xA2,0x2F,0x38,0xE8, + 0xE9,0x0A,0xB0,0xFB,0x69,0x3A,0x99,0x03,0x01,0x8A,0x99, + 0x02,0x01,0xA9,0x00,0x99,0x04,0x01,0xF0,0x08,0x99,0xFF, + 0x00,0xA9,0x00,0x99,0x00,0x01,0xA9,0x00,0xA0,0x01,0x60, + 0x80,0x00,0x00,0x00,0x00,0xFA,0x0A,0x1F,0x00,0x00,0x98, + 0x96,0x80,0xFF,0xF0,0xBD,0xC0,0x00,0x01,0x86,0xA0,0xFF, + 0xFF,0xD8,0xF0,0x00,0x00,0x03,0xE8,0xFF,0xFF,0xFF,0x9C, + 0x00,0x00,0x00,0x0A,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0x0A, + 0x80,0x00,0x03,0x4B,0xC0,0xFF,0xFF,0x73,0x60,0x00,0x00, + 0x0E,0x10,0xFF,0xFF,0xFD,0xA8,0x00,0x00,0x00,0x3C,0xEC, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x20,0x0C,0xBC, + 0xA9,0x11,0xA0,0xBF,0x20,0xA2,0xBB,0xF0,0x70,0xA5,0x69, + 0xD0,0x03,0x4C,0xF9,0xB8,0xA2,0x4E,0xA0,0x00,0x20,0xD4, + 0xBB,0xA5,0x6E,0x10,0x0F,0x20,0xCC,0xBC,0xA9,0x4E,0xA0, + 0x00,0x20,0x5B,0xBC,0xD0,0x03,0x98,0xA4,0x07,0x20,0xFE, + 0xBB,0x98,0x48,0x20,0xEA,0xB9,0xA9,0x4E,0xA0,0x00,0x20, + 0x28,0xBA,0x20,0xED,0xBF,0x68,0x4A,0x90,0x0A,0xA5,0x61, + 0xF0,0x06,0xA5,0x66,0x49,0xFF,0x85,0x66,0x60,0x81,0x38, + 0xAA,0x3B,0x29,0x07,0x71,0x34,0x58,0x3E,0x56,0x74,0x16, + 0x7E,0xB3,0x1B,0x77,0x2F,0xEE,0xE3,0x85,0x7A,0x1D,0x84, + 0x1C,0x2A,0x7C,0x63,0x59,0x58,0x0A,0x7E,0x75,0xFD,0xE7, + 0xC6,0x80,0x31,0x72,0x18,0x10,0x81,0x00,0x00,0x00,0x00, + 0xA9,0xBF,0xA0,0xBF,0x20,0x28,0xBA,0xA5,0x70,0x69,0x50, + 0x90,0x03,0x20,0x23,0xBC,0x4C,0x00,0xE0, +}; +//file auto-generated from kernal.901227-03.bin by bin2h.exe +const size_t rom_kernal_len = 8192; +const unsigned char PROGMEM rom_kernal[8192]= +{ + 0x85,0x56,0x20,0x0F,0xBC,0xA5,0x61,0xC9,0x88,0x90,0x03, + 0x20,0xD4,0xBA,0x20,0xCC,0xBC,0xA5,0x07,0x18,0x69,0x81, + 0xF0,0xF3,0x38,0xE9,0x01,0x48,0xA2,0x05,0xB5,0x69,0xB4, + 0x61,0x95,0x61,0x94,0x69,0xCA,0x10,0xF5,0xA5,0x56,0x85, + 0x70,0x20,0x53,0xB8,0x20,0xB4,0xBF,0xA9,0xC4,0xA0,0xBF, + 0x20,0x59,0xE0,0xA9,0x00,0x85,0x6F,0x68,0x20,0xB9,0xBA, + 0x60,0x85,0x71,0x84,0x72,0x20,0xCA,0xBB,0xA9,0x57,0x20, + 0x28,0xBA,0x20,0x5D,0xE0,0xA9,0x57,0xA0,0x00,0x4C,0x28, + 0xBA,0x85,0x71,0x84,0x72,0x20,0xC7,0xBB,0xB1,0x71,0x85, + 0x67,0xA4,0x71,0xC8,0x98,0xD0,0x02,0xE6,0x72,0x85,0x71, + 0xA4,0x72,0x20,0x28,0xBA,0xA5,0x71,0xA4,0x72,0x18,0x69, + 0x05,0x90,0x01,0xC8,0x85,0x71,0x84,0x72,0x20,0x67,0xB8, + 0xA9,0x5C,0xA0,0x00,0xC6,0x67,0xD0,0xE4,0x60,0x98,0x35, + 0x44,0x7A,0x00,0x68,0x28,0xB1,0x46,0x00,0x20,0x2B,0xBC, + 0x30,0x37,0xD0,0x20,0x20,0xF3,0xFF,0x86,0x22,0x84,0x23, + 0xA0,0x04,0xB1,0x22,0x85,0x62,0xC8,0xB1,0x22,0x85,0x64, + 0xA0,0x08,0xB1,0x22,0x85,0x63,0xC8,0xB1,0x22,0x85,0x65, + 0x4C,0xE3,0xE0,0xA9,0x8B,0xA0,0x00,0x20,0xA2,0xBB,0xA9, + 0x8D,0xA0,0xE0,0x20,0x28,0xBA,0xA9,0x92,0xA0,0xE0,0x20, + 0x67,0xB8,0xA6,0x65,0xA5,0x62,0x85,0x65,0x86,0x62,0xA6, + 0x63,0xA5,0x64,0x85,0x63,0x86,0x64,0xA9,0x00,0x85,0x66, + 0xA5,0x61,0x85,0x70,0xA9,0x80,0x85,0x61,0x20,0xD7,0xB8, + 0xA2,0x8B,0xA0,0x00,0x4C,0xD4,0xBB,0xC9,0xF0,0xD0,0x07, + 0x84,0x38,0x86,0x37,0x4C,0x63,0xA6,0xAA,0xD0,0x02,0xA2, + 0x1E,0x4C,0x37,0xA4,0x20,0xD2,0xFF,0xB0,0xE8,0x60,0x20, + 0xCF,0xFF,0xB0,0xE2,0x60,0x20,0xAD,0xE4,0xB0,0xDC,0x60, + 0x20,0xC6,0xFF,0xB0,0xD6,0x60,0x20,0xE4,0xFF,0xB0,0xD0, + 0x60,0x20,0x8A,0xAD,0x20,0xF7,0xB7,0xA9,0xE1,0x48,0xA9, + 0x46,0x48,0xAD,0x0F,0x03,0x48,0xAD,0x0C,0x03,0xAE,0x0D, + 0x03,0xAC,0x0E,0x03,0x28,0x6C,0x14,0x00,0x08,0x8D,0x0C, + 0x03,0x8E,0x0D,0x03,0x8C,0x0E,0x03,0x68,0x8D,0x0F,0x03, + 0x60,0x20,0xD4,0xE1,0xA6,0x2D,0xA4,0x2E,0xA9,0x2B,0x20, + 0xD8,0xFF,0xB0,0x95,0x60,0xA9,0x01,0x2C,0xA9,0x00,0x85, + 0x0A,0x20,0xD4,0xE1,0xA5,0x0A,0xA6,0x2B,0xA4,0x2C,0x20, + 0xD5,0xFF,0xB0,0x57,0xA5,0x0A,0xF0,0x17,0xA2,0x1C,0x20, + 0xB7,0xFF,0x29,0x10,0xD0,0x17,0xA5,0x7A,0xC9,0x02,0xF0, + 0x07,0xA9,0x64,0xA0,0xA3,0x4C,0x1E,0xAB,0x60,0x20,0xB7, + 0xFF,0x29,0xBF,0xF0,0x05,0xA2,0x1D,0x4C,0x37,0xA4,0xA5, + 0x7B,0xC9,0x02,0xD0,0x0E,0x86,0x2D,0x84,0x2E,0xA9,0x76, + 0xA0,0xA3,0x20,0x1E,0xAB,0x4C,0x2A,0xA5,0x20,0x8E,0xA6, + 0x20,0x33,0xA5,0x4C,0x77,0xA6,0x20,0x19,0xE2,0x20,0xC0, + 0xFF,0xB0,0x0B,0x60,0x20,0x19,0xE2,0xA5,0x49,0x20,0xC3, + 0xFF,0x90,0xC3,0x4C,0xF9,0xE0,0xA9,0x00,0x20,0xBD,0xFF, + 0xA2,0x01,0xA0,0x00,0x20,0xBA,0xFF,0x20,0x06,0xE2,0x20, + 0x57,0xE2,0x20,0x06,0xE2,0x20,0x00,0xE2,0xA0,0x00,0x86, + 0x49,0x20,0xBA,0xFF,0x20,0x06,0xE2,0x20,0x00,0xE2,0x8A, + 0xA8,0xA6,0x49,0x4C,0xBA,0xFF,0x20,0x0E,0xE2,0x4C,0x9E, + 0xB7,0x20,0x79,0x00,0xD0,0x02,0x68,0x68,0x60,0x20,0xFD, + 0xAE,0x20,0x79,0x00,0xD0,0xF7,0x4C,0x08,0xAF,0xA9,0x00, + 0x20,0xBD,0xFF,0x20,0x11,0xE2,0x20,0x9E,0xB7,0x86,0x49, + 0x8A,0xA2,0x01,0xA0,0x00,0x20,0xBA,0xFF,0x20,0x06,0xE2, + 0x20,0x00,0xE2,0x86,0x4A,0xA0,0x00,0xA5,0x49,0xE0,0x03, + 0x90,0x01,0x88,0x20,0xBA,0xFF,0x20,0x06,0xE2,0x20,0x00, + 0xE2,0x8A,0xA8,0xA6,0x4A,0xA5,0x49,0x20,0xBA,0xFF,0x20, + 0x06,0xE2,0x20,0x0E,0xE2,0x20,0x9E,0xAD,0x20,0xA3,0xB6, + 0xA6,0x22,0xA4,0x23,0x4C,0xBD,0xFF,0xA9,0xE0,0xA0,0xE2, + 0x20,0x67,0xB8,0x20,0x0C,0xBC,0xA9,0xE5,0xA0,0xE2,0xA6, + 0x6E,0x20,0x07,0xBB,0x20,0x0C,0xBC,0x20,0xCC,0xBC,0xA9, + 0x00,0x85,0x6F,0x20,0x53,0xB8,0xA9,0xEA,0xA0,0xE2,0x20, + 0x50,0xB8,0xA5,0x66,0x48,0x10,0x0D,0x20,0x49,0xB8,0xA5, + 0x66,0x30,0x09,0xA5,0x12,0x49,0xFF,0x85,0x12,0x20,0xB4, + 0xBF,0xA9,0xEA,0xA0,0xE2,0x20,0x67,0xB8,0x68,0x10,0x03, + 0x20,0xB4,0xBF,0xA9,0xEF,0xA0,0xE2,0x4C,0x43,0xE0,0x20, + 0xCA,0xBB,0xA9,0x00,0x85,0x12,0x20,0x6B,0xE2,0xA2,0x4E, + 0xA0,0x00,0x20,0xF6,0xE0,0xA9,0x57,0xA0,0x00,0x20,0xA2, + 0xBB,0xA9,0x00,0x85,0x66,0xA5,0x12,0x20,0xDC,0xE2,0xA9, + 0x4E,0xA0,0x00,0x4C,0x0F,0xBB,0x48,0x4C,0x9D,0xE2,0x81, + 0x49,0x0F,0xDA,0xA2,0x83,0x49,0x0F,0xDA,0xA2,0x7F,0x00, + 0x00,0x00,0x00,0x05,0x84,0xE6,0x1A,0x2D,0x1B,0x86,0x28, + 0x07,0xFB,0xF8,0x87,0x99,0x68,0x89,0x01,0x87,0x23,0x35, + 0xDF,0xE1,0x86,0xA5,0x5D,0xE7,0x28,0x83,0x49,0x0F,0xDA, + 0xA2,0xA5,0x66,0x48,0x10,0x03,0x20,0xB4,0xBF,0xA5,0x61, + 0x48,0xC9,0x81,0x90,0x07,0xA9,0xBC,0xA0,0xB9,0x20,0x0F, + 0xBB,0xA9,0x3E,0xA0,0xE3,0x20,0x43,0xE0,0x68,0xC9,0x81, + 0x90,0x07,0xA9,0xE0,0xA0,0xE2,0x20,0x50,0xB8,0x68,0x10, + 0x03,0x4C,0xB4,0xBF,0x60,0x0B,0x76,0xB3,0x83,0xBD,0xD3, + 0x79,0x1E,0xF4,0xA6,0xF5,0x7B,0x83,0xFC,0xB0,0x10,0x7C, + 0x0C,0x1F,0x67,0xCA,0x7C,0xDE,0x53,0xCB,0xC1,0x7D,0x14, + 0x64,0x70,0x4C,0x7D,0xB7,0xEA,0x51,0x7A,0x7D,0x63,0x30, + 0x88,0x7E,0x7E,0x92,0x44,0x99,0x3A,0x7E,0x4C,0xCC,0x91, + 0xC7,0x7F,0xAA,0xAA,0xAA,0x13,0x81,0x00,0x00,0x00,0x00, + 0x20,0xCC,0xFF,0xA9,0x00,0x85,0x13,0x20,0x7A,0xA6,0x58, + 0xA2,0x80,0x6C,0x00,0x03,0x8A,0x30,0x03,0x4C,0x3A,0xA4, + 0x4C,0x74,0xA4,0x20,0x53,0xE4,0x20,0xBF,0xE3,0x20,0x22, + 0xE4,0xA2,0xFB,0x9A,0xD0,0xE4,0xE6,0x7A,0xD0,0x02,0xE6, + 0x7B,0xAD,0x60,0xEA,0xC9,0x3A,0xB0,0x0A,0xC9,0x20,0xF0, + 0xEF,0x38,0xE9,0x30,0x38,0xE9,0xD0,0x60,0x80,0x4F,0xC7, + 0x52,0x58,0xA9,0x4C,0x85,0x54,0x8D,0x10,0x03,0xA9,0x48, + 0xA0,0xB2,0x8D,0x11,0x03,0x8C,0x12,0x03,0xA9,0x91,0xA0, + 0xB3,0x85,0x05,0x84,0x06,0xA9,0xAA,0xA0,0xB1,0x85,0x03, + 0x84,0x04,0xA2,0x1C,0xBD,0xA2,0xE3,0x95,0x73,0xCA,0x10, + 0xF8,0xA9,0x03,0x85,0x53,0xA9,0x00,0x85,0x68,0x85,0x13, + 0x85,0x18,0xA2,0x01,0x8E,0xFD,0x01,0x8E,0xFC,0x01,0xA2, + 0x19,0x86,0x16,0x38,0x20,0x9C,0xFF,0x86,0x2B,0x84,0x2C, + 0x38,0x20,0x99,0xFF,0x86,0x37,0x84,0x38,0x86,0x33,0x84, + 0x34,0xA0,0x00,0x98,0x91,0x2B,0xE6,0x2B,0xD0,0x02,0xE6, + 0x2C,0x60,0xA5,0x2B,0xA4,0x2C,0x20,0x08,0xA4,0xA9,0x73, + 0xA0,0xE4,0x20,0x1E,0xAB,0xA5,0x37,0x38,0xE5,0x2B,0xAA, + 0xA5,0x38,0xE5,0x2C,0x20,0xCD,0xBD,0xA9,0x60,0xA0,0xE4, + 0x20,0x1E,0xAB,0x4C,0x44,0xA6,0x8B,0xE3,0x83,0xA4,0x7C, + 0xA5,0x1A,0xA7,0xE4,0xA7,0x86,0xAE,0xA2,0x0B,0xBD,0x47, + 0xE4,0x9D,0x00,0x03,0xCA,0x10,0xF7,0x60,0x00,0x20,0x42, + 0x41,0x53,0x49,0x43,0x20,0x42,0x59,0x54,0x45,0x53,0x20, + 0x46,0x52,0x45,0x45,0x0D,0x00,0x93,0x0D,0x20,0x20,0x20, + 0x20,0x2A,0x2A,0x2A,0x2A,0x20,0x43,0x4F,0x4D,0x4D,0x4F, + 0x44,0x4F,0x52,0x45,0x20,0x36,0x34,0x20,0x42,0x41,0x53, + 0x49,0x43,0x20,0x56,0x32,0x20,0x2A,0x2A,0x2A,0x2A,0x0D, + 0x0D,0x20,0x36,0x34,0x4B,0x20,0x52,0x41,0x4D,0x20,0x53, + 0x59,0x53,0x54,0x45,0x4D,0x20,0x20,0x00,0x81,0x48,0x20, + 0xC9,0xFF,0xAA,0x68,0x90,0x01,0x8A,0x60,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, + 0xAA,0xAA,0xAA,0x85,0xA9,0xA9,0x01,0x85,0xAB,0x60,0xAD, + 0x86,0x02,0x91,0xF3,0x60,0x69,0x02,0xA4,0x91,0xC8,0xD0, + 0x04,0xC5,0xA1,0xD0,0xF7,0x60,0x19,0x26,0x44,0x19,0x1A, + 0x11,0xE8,0x0D,0x70,0x0C,0x06,0x06,0xD1,0x02,0x37,0x01, + 0xAE,0x00,0x69,0x00,0xA2,0x00,0xA0,0xDC,0x60,0xA2,0x28, + 0xA0,0x19,0x60,0xB0,0x07,0x86,0xD6,0x84,0xD3,0x20,0x6C, + 0xE5,0xA6,0xD6,0xA4,0xD3,0x60,0x20,0xA0,0xE5,0xA9,0x00, + 0x8D,0x91,0x02,0x85,0xCF,0xA9,0x48,0x8D,0x8F,0x02,0xA9, + 0xEB,0x8D,0x90,0x02,0xA9,0x0A,0x8D,0x89,0x02,0x8D,0x8C, + 0x02,0xA9,0x0E,0x8D,0x86,0x02,0xA9,0x04,0x8D,0x8B,0x02, + 0xA9,0x0C,0x85,0xCD,0x85,0xCC,0xAD,0x88,0x02,0x09,0x80, + 0xA8,0xA9,0x00,0xAA,0x94,0xD9,0x18,0x69,0x28,0x90,0x01, + 0xC8,0xE8,0xE0,0x1A,0xD0,0xF3,0xA9,0xFF,0x95,0xD9,0xA2, + 0x18,0x20,0xFF,0xE9,0xCA,0x10,0xFA,0xA0,0x00,0x84,0xD3, + 0x84,0xD6,0xA6,0xD6,0xA5,0xD3,0xB4,0xD9,0x30,0x08,0x18, + 0x69,0x28,0x85,0xD3,0xCA,0x10,0xF4,0x20,0xF0,0xE9,0xA9, + 0x27,0xE8,0xB4,0xD9,0x30,0x06,0x18,0x69,0x28,0xE8,0x10, + 0xF6,0x85,0xD5,0x4C,0x24,0xEA,0xE4,0xC9,0xF0,0x03,0x4C, + 0xED,0xE6,0x60,0xEA,0x20,0xA0,0xE5,0x4C,0x66,0xE5,0xA9, + 0x03,0x85,0x9A,0xA9,0x00,0x85,0x99,0xA2,0x2F,0xBD,0xB8, + 0xEC,0x9D,0xFF,0xCF,0xCA,0xD0,0xF7,0x60,0xAC,0x77,0x02, + 0xA2,0x00,0xBD,0x78,0x02,0x9D,0x77,0x02,0xE8,0xE4,0xC6, + 0xD0,0xF5,0xC6,0xC6,0x98,0x58,0x18,0x60,0x20,0x16,0xE7, + 0xA5,0xC6,0x85,0xCC,0x8D,0x92,0x02,0xF0,0xF7,0x78,0xA5, + 0xCF,0xF0,0x0C,0xA5,0xCE,0xAE,0x87,0x02,0xA0,0x00,0x84, + 0xCF,0x20,0x13,0xEA,0x20,0xB4,0xE5,0xC9,0x83,0xD0,0x10, + 0xA2,0x09,0x78,0x86,0xC6,0xBD,0xE6,0xEC,0x9D,0x76,0x02, + 0xCA,0xD0,0xF7,0xF0,0xCF,0xC9,0x0D,0xD0,0xC8,0xA4,0xD5, + 0x84,0xD0,0xB1,0xD1,0xC9,0x20,0xD0,0x03,0x88,0xD0,0xF7, + 0xC8,0x84,0xC8,0xA0,0x00,0x8C,0x92,0x02,0x84,0xD3,0x84, + 0xD4,0xA5,0xC9,0x30,0x1B,0xA6,0xD6,0x20,0x91,0xE5,0xE4, + 0xC9,0xD0,0x12,0xA5,0xCA,0x85,0xD3,0xC5,0xC8,0x90,0x0A, + 0xB0,0x2B,0x98,0x48,0x8A,0x48,0xA5,0xD0,0xF0,0x93,0xA4, + 0xD3,0xB1,0xD1,0x85,0xD7,0x29,0x3F,0x06,0xD7,0x24,0xD7, + 0x10,0x02,0x09,0x80,0x90,0x04,0xA6,0xD4,0xD0,0x04,0x70, + 0x02,0x09,0x40,0xE6,0xD3,0x20,0x84,0xE6,0xC4,0xC8,0xD0, + 0x17,0xA9,0x00,0x85,0xD0,0xA9,0x0D,0xA6,0x99,0xE0,0x03, + 0xF0,0x06,0xA6,0x9A,0xE0,0x03,0xF0,0x03,0x20,0x16,0xE7, + 0xA9,0x0D,0x85,0xD7,0x68,0xAA,0x68,0xA8,0xA5,0xD7,0xC9, + 0xDE,0xD0,0x02,0xA9,0xFF,0x18,0x60,0xC9,0x22,0xD0,0x08, + 0xA5,0xD4,0x49,0x01,0x85,0xD4,0xA9,0x22,0x60,0x09,0x40, + 0xA6,0xC7,0xF0,0x02,0x09,0x80,0xA6,0xD8,0xF0,0x02,0xC6, + 0xD8,0xAE,0x86,0x02,0x20,0x13,0xEA,0x20,0xB6,0xE6,0x68, + 0xA8,0xA5,0xD8,0xF0,0x02,0x46,0xD4,0x68,0xAA,0x68,0x18, + 0x58,0x60,0x20,0xB3,0xE8,0xE6,0xD3,0xA5,0xD5,0xC5,0xD3, + 0xB0,0x3F,0xC9,0x4F,0xF0,0x32,0xAD,0x92,0x02,0xF0,0x03, + 0x4C,0x67,0xE9,0xA6,0xD6,0xE0,0x19,0x90,0x07,0x20,0xEA, + 0xE8,0xC6,0xD6,0xA6,0xD6,0x16,0xD9,0x56,0xD9,0xE8,0xB5, + 0xD9,0x09,0x80,0x95,0xD9,0xCA,0xA5,0xD5,0x18,0x69,0x28, + 0x85,0xD5,0xB5,0xD9,0x30,0x03,0xCA,0xD0,0xF9,0x4C,0xF0, + 0xE9,0xC6,0xD6,0x20,0x7C,0xE8,0xA9,0x00,0x85,0xD3,0x60, + 0xA6,0xD6,0xD0,0x06,0x86,0xD3,0x68,0x68,0xD0,0x9D,0xCA, + 0x86,0xD6,0x20,0x6C,0xE5,0xA4,0xD5,0x84,0xD3,0x60,0x48, + 0x85,0xD7,0x8A,0x48,0x98,0x48,0xA9,0x00,0x85,0xD0,0xA4, + 0xD3,0xA5,0xD7,0x10,0x03,0x4C,0xD4,0xE7,0xC9,0x0D,0xD0, + 0x03,0x4C,0x91,0xE8,0xC9,0x20,0x90,0x10,0xC9,0x60,0x90, + 0x04,0x29,0xDF,0xD0,0x02,0x29,0x3F,0x20,0x84,0xE6,0x4C, + 0x93,0xE6,0xA6,0xD8,0xF0,0x03,0x4C,0x97,0xE6,0xC9,0x14, + 0xD0,0x2E,0x98,0xD0,0x06,0x20,0x01,0xE7,0x4C,0x73,0xE7, + 0x20,0xA1,0xE8,0x88,0x84,0xD3,0x20,0x24,0xEA,0xC8,0xB1, + 0xD1,0x88,0x91,0xD1,0xC8,0xB1,0xF3,0x88,0x91,0xF3,0xC8, + 0xC4,0xD5,0xD0,0xEF,0xA9,0x20,0x91,0xD1,0xAD,0x86,0x02, + 0x91,0xF3,0x10,0x4D,0xA6,0xD4,0xF0,0x03,0x4C,0x97,0xE6, + 0xC9,0x12,0xD0,0x02,0x85,0xC7,0xC9,0x13,0xD0,0x03,0x20, + 0x66,0xE5,0xC9,0x1D,0xD0,0x17,0xC8,0x20,0xB3,0xE8,0x84, + 0xD3,0x88,0xC4,0xD5,0x90,0x09,0xC6,0xD6,0x20,0x7C,0xE8, + 0xA0,0x00,0x84,0xD3,0x4C,0xA8,0xE6,0xC9,0x11,0xD0,0x1D, + 0x18,0x98,0x69,0x28,0xA8,0xE6,0xD6,0xC5,0xD5,0x90,0xEC, + 0xF0,0xEA,0xC6,0xD6,0xE9,0x28,0x90,0x04,0x85,0xD3,0xD0, + 0xF8,0x20,0x7C,0xE8,0x4C,0xA8,0xE6,0x20,0xCB,0xE8,0x4C, + 0x44,0xEC,0x29,0x7F,0xC9,0x7F,0xD0,0x02,0xA9,0x5E,0xC9, + 0x20,0x90,0x03,0x4C,0x91,0xE6,0xC9,0x0D,0xD0,0x03,0x4C, + 0x91,0xE8,0xA6,0xD4,0xD0,0x3F,0xC9,0x14,0xD0,0x37,0xA4, + 0xD5,0xB1,0xD1,0xC9,0x20,0xD0,0x04,0xC4,0xD3,0xD0,0x07, + 0xC0,0x4F,0xF0,0x24,0x20,0x65,0xE9,0xA4,0xD5,0x20,0x24, + 0xEA,0x88,0xB1,0xD1,0xC8,0x91,0xD1,0x88,0xB1,0xF3,0xC8, + 0x91,0xF3,0x88,0xC4,0xD3,0xD0,0xEF,0xA9,0x20,0x91,0xD1, + 0xAD,0x86,0x02,0x91,0xF3,0xE6,0xD8,0x4C,0xA8,0xE6,0xA6, + 0xD8,0xF0,0x05,0x09,0x40,0x4C,0x97,0xE6,0xC9,0x11,0xD0, + 0x16,0xA6,0xD6,0xF0,0x37,0xC6,0xD6,0xA5,0xD3,0x38,0xE9, + 0x28,0x90,0x04,0x85,0xD3,0x10,0x2A,0x20,0x6C,0xE5,0xD0, + 0x25,0xC9,0x12,0xD0,0x04,0xA9,0x00,0x85,0xC7,0xC9,0x1D, + 0xD0,0x12,0x98,0xF0,0x09,0x20,0xA1,0xE8,0x88,0x84,0xD3, + 0x4C,0xA8,0xE6,0x20,0x01,0xE7,0x4C,0xA8,0xE6,0xC9,0x13, + 0xD0,0x06,0x20,0x44,0xE5,0x4C,0xA8,0xE6,0x09,0x80,0x20, + 0xCB,0xE8,0x4C,0x4F,0xEC,0x46,0xC9,0xA6,0xD6,0xE8,0xE0, + 0x19,0xD0,0x03,0x20,0xEA,0xE8,0xB5,0xD9,0x10,0xF4,0x86, + 0xD6,0x4C,0x6C,0xE5,0xA2,0x00,0x86,0xD8,0x86,0xC7,0x86, + 0xD4,0x86,0xD3,0x20,0x7C,0xE8,0x4C,0xA8,0xE6,0xA2,0x02, + 0xA9,0x00,0xC5,0xD3,0xF0,0x07,0x18,0x69,0x28,0xCA,0xD0, + 0xF6,0x60,0xC6,0xD6,0x60,0xA2,0x02,0xA9,0x27,0xC5,0xD3, + 0xF0,0x07,0x18,0x69,0x28,0xCA,0xD0,0xF6,0x60,0xA6,0xD6, + 0xE0,0x19,0xF0,0x02,0xE6,0xD6,0x60,0xA2,0x0F,0xDD,0xDA, + 0xE8,0xF0,0x04,0xCA,0x10,0xF8,0x60,0x8E,0x86,0x02,0x60, + 0x90,0x05,0x1C,0x9F,0x9C,0x1E,0x1F,0x9E,0x81,0x95,0x96, + 0x97,0x98,0x99,0x9A,0x9B,0xA5,0xAC,0x48,0xA5,0xAD,0x48, + 0xA5,0xAE,0x48,0xA5,0xAF,0x48,0xA2,0xFF,0xC6,0xD6,0xC6, + 0xC9,0xCE,0xA5,0x02,0xE8,0x20,0xF0,0xE9,0xE0,0x18,0xB0, + 0x0C,0xBD,0xF1,0xEC,0x85,0xAC,0xB5,0xDA,0x20,0xC8,0xE9, + 0x30,0xEC,0x20,0xFF,0xE9,0xA2,0x00,0xB5,0xD9,0x29,0x7F, + 0xB4,0xDA,0x10,0x02,0x09,0x80,0x95,0xD9,0xE8,0xE0,0x18, + 0xD0,0xEF,0xA5,0xF1,0x09,0x80,0x85,0xF1,0xA5,0xD9,0x10, + 0xC3,0xE6,0xD6,0xEE,0xA5,0x02,0xA9,0x7F,0x8D,0x00,0xDC, + 0xAD,0x01,0xDC,0xC9,0xFB,0x08,0xA9,0x7F,0x8D,0x00,0xDC, + 0x28,0xD0,0x0B,0xA0,0x00,0xEA,0xCA,0xD0,0xFC,0x88,0xD0, + 0xF9,0x84,0xC6,0xA6,0xD6,0x68,0x85,0xAF,0x68,0x85,0xAE, + 0x68,0x85,0xAD,0x68,0x85,0xAC,0x60,0xA6,0xD6,0xE8,0xB5, + 0xD9,0x10,0xFB,0x8E,0xA5,0x02,0xE0,0x18,0xF0,0x0E,0x90, + 0x0C,0x20,0xEA,0xE8,0xAE,0xA5,0x02,0xCA,0xC6,0xD6,0x4C, + 0xDA,0xE6,0xA5,0xAC,0x48,0xA5,0xAD,0x48,0xA5,0xAE,0x48, + 0xA5,0xAF,0x48,0xA2,0x19,0xCA,0x20,0xF0,0xE9,0xEC,0xA5, + 0x02,0x90,0x0E,0xF0,0x0C,0xBD,0xEF,0xEC,0x85,0xAC,0xB5, + 0xD8,0x20,0xC8,0xE9,0x30,0xE9,0x20,0xFF,0xE9,0xA2,0x17, + 0xEC,0xA5,0x02,0x90,0x0F,0xB5,0xDA,0x29,0x7F,0xB4,0xD9, + 0x10,0x02,0x09,0x80,0x95,0xDA,0xCA,0xD0,0xEC,0xAE,0xA5, + 0x02,0x20,0xDA,0xE6,0x4C,0x58,0xE9,0x29,0x03,0x0D,0x88, + 0x02,0x85,0xAD,0x20,0xE0,0xE9,0xA0,0x27,0xB1,0xAC,0x91, + 0xD1,0xB1,0xAE,0x91,0xF3,0x88,0x10,0xF5,0x60,0x20,0x24, + 0xEA,0xA5,0xAC,0x85,0xAE,0xA5,0xAD,0x29,0x03,0x09,0xD8, + 0x85,0xAF,0x60,0xBD,0xF0,0xEC,0x85,0xD1,0xB5,0xD9,0x29, + 0x03,0x0D,0x88,0x02,0x85,0xD2,0x60,0xA0,0x27,0x20,0xF0, + 0xE9,0x20,0x24,0xEA,0x20,0xDA,0xE4,0xA9,0x20,0x91,0xD1, + 0x88,0x10,0xF6,0x60,0xEA,0xA8,0xA9,0x02,0x85,0xCD,0x20, + 0x24,0xEA,0x98,0xA4,0xD3,0x91,0xD1,0x8A,0x91,0xF3,0x60, + 0xA5,0xD1,0x85,0xF3,0xA5,0xD2,0x29,0x03,0x09,0xD8,0x85, + 0xF4,0x60,0x20,0xEA,0xFF,0xA5,0xCC,0xD0,0x29,0xC6,0xCD, + 0xD0,0x25,0xA9,0x14,0x85,0xCD,0xA4,0xD3,0x46,0xCF,0xAE, + 0x87,0x02,0xB1,0xD1,0xB0,0x11,0xE6,0xCF,0x85,0xCE,0x20, + 0x24,0xEA,0xB1,0xF3,0x8D,0x87,0x02,0xAE,0x86,0x02,0xA5, + 0xCE,0x49,0x80,0x20,0x1C,0xEA,0xA5,0x01,0x29,0x10,0xF0, + 0x0A,0xA0,0x00,0x84,0xC0,0xA5,0x01,0x09,0x20,0xD0,0x08, + 0xA5,0xC0,0xD0,0x06,0xA5,0x01,0x29,0x1F,0x85,0x01,0x20, + 0x87,0xEA,0xAD,0x0D,0xDC,0x68,0xA8,0x68,0xAA,0x68,0x40, + 0xA9,0x00,0x8D,0x8D,0x02,0xA0,0x40,0x84,0xCB,0x8D,0x00, + 0xDC,0xAE,0x01,0xDC,0xE0,0xFF,0xF0,0x61,0xA8,0xA9,0x81, + 0x85,0xF5,0xA9,0xEB,0x85,0xF6,0xA9,0xFE,0x8D,0x00,0xDC, + 0xA2,0x08,0x48,0xAD,0x01,0xDC,0xCD,0x01,0xDC,0xD0,0xF8, + 0x4A,0xB0,0x16,0x48,0xB1,0xF5,0xC9,0x05,0xB0,0x0C,0xC9, + 0x03,0xF0,0x08,0x0D,0x8D,0x02,0x8D,0x8D,0x02,0x10,0x02, + 0x84,0xCB,0x68,0xC8,0xC0,0x41,0xB0,0x0B,0xCA,0xD0,0xDF, + 0x38,0x68,0x2A,0x8D,0x00,0xDC,0xD0,0xCC,0x68,0x6C,0x8F, + 0x02,0xA4,0xCB,0xB1,0xF5,0xAA,0xC4,0xC5,0xF0,0x07,0xA0, + 0x10,0x8C,0x8C,0x02,0xD0,0x36,0x29,0x7F,0x2C,0x8A,0x02, + 0x30,0x16,0x70,0x49,0xC9,0x7F,0xF0,0x29,0xC9,0x14,0xF0, + 0x0C,0xC9,0x20,0xF0,0x08,0xC9,0x1D,0xF0,0x04,0xC9,0x11, + 0xD0,0x35,0xAC,0x8C,0x02,0xF0,0x05,0xCE,0x8C,0x02,0xD0, + 0x2B,0xCE,0x8B,0x02,0xD0,0x26,0xA0,0x04,0x8C,0x8B,0x02, + 0xA4,0xC6,0x88,0x10,0x1C,0xA4,0xCB,0x84,0xC5,0xAC,0x8D, + 0x02,0x8C,0x8E,0x02,0xE0,0xFF,0xF0,0x0E,0x8A,0xA6,0xC6, + 0xEC,0x89,0x02,0xB0,0x06,0x9D,0x77,0x02,0xE8,0x86,0xC6, + 0xA9,0x7F,0x8D,0x00,0xDC,0x60,0xAD,0x8D,0x02,0xC9,0x03, + 0xD0,0x15,0xCD,0x8E,0x02,0xF0,0xEE,0xAD,0x91,0x02,0x30, + 0x1D,0xAD,0x18,0xD0,0x49,0x02,0x8D,0x18,0xD0,0x4C,0x76, + 0xEB,0x0A,0xC9,0x08,0x90,0x02,0xA9,0x06,0xAA,0xBD,0x79, + 0xEB,0x85,0xF5,0xBD,0x7A,0xEB,0x85,0xF6,0x4C,0xE0,0xEA, + 0x81,0xEB,0xC2,0xEB,0x03,0xEC,0x78,0xEC,0x14,0x0D,0x1D, + 0x88,0x85,0x86,0x87,0x11,0x33,0x57,0x41,0x34,0x5A,0x53, + 0x45,0x01,0x35,0x52,0x44,0x36,0x43,0x46,0x54,0x58,0x37, + 0x59,0x47,0x38,0x42,0x48,0x55,0x56,0x39,0x49,0x4A,0x30, + 0x4D,0x4B,0x4F,0x4E,0x2B,0x50,0x4C,0x2D,0x2E,0x3A,0x40, + 0x2C,0x5C,0x2A,0x3B,0x13,0x01,0x3D,0x5E,0x2F,0x31,0x5F, + 0x04,0x32,0x20,0x02,0x51,0x03,0xFF,0x94,0x8D,0x9D,0x8C, + 0x89,0x8A,0x8B,0x91,0x23,0xD7,0xC1,0x24,0xDA,0xD3,0xC5, + 0x01,0x25,0xD2,0xC4,0x26,0xC3,0xC6,0xD4,0xD8,0x27,0xD9, + 0xC7,0x28,0xC2,0xC8,0xD5,0xD6,0x29,0xC9,0xCA,0x30,0xCD, + 0xCB,0xCF,0xCE,0xDB,0xD0,0xCC,0xDD,0x3E,0x5B,0xBA,0x3C, + 0xA9,0xC0,0x5D,0x93,0x01,0x3D,0xDE,0x3F,0x21,0x5F,0x04, + 0x22,0xA0,0x02,0xD1,0x83,0xFF,0x94,0x8D,0x9D,0x8C,0x89, + 0x8A,0x8B,0x91,0x96,0xB3,0xB0,0x97,0xAD,0xAE,0xB1,0x01, + 0x98,0xB2,0xAC,0x99,0xBC,0xBB,0xA3,0xBD,0x9A,0xB7,0xA5, + 0x9B,0xBF,0xB4,0xB8,0xBE,0x29,0xA2,0xB5,0x30,0xA7,0xA1, + 0xB9,0xAA,0xA6,0xAF,0xB6,0xDC,0x3E,0x5B,0xA4,0x3C,0xA8, + 0xDF,0x5D,0x93,0x01,0x3D,0xDE,0x3F,0x81,0x5F,0x04,0x95, + 0xA0,0x02,0xAB,0x83,0xFF,0xC9,0x0E,0xD0,0x07,0xAD,0x18, + 0xD0,0x09,0x02,0xD0,0x09,0xC9,0x8E,0xD0,0x0B,0xAD,0x18, + 0xD0,0x29,0xFD,0x8D,0x18,0xD0,0x4C,0xA8,0xE6,0xC9,0x08, + 0xD0,0x07,0xA9,0x80,0x0D,0x91,0x02,0x30,0x09,0xC9,0x09, + 0xD0,0xEE,0xA9,0x7F,0x2D,0x91,0x02,0x8D,0x91,0x02,0x4C, + 0xA8,0xE6,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1C, + 0x17,0x01,0x9F,0x1A,0x13,0x05,0xFF,0x9C,0x12,0x04,0x1E, + 0x03,0x06,0x14,0x18,0x1F,0x19,0x07,0x9E,0x02,0x08,0x15, + 0x16,0x12,0x09,0x0A,0x92,0x0D,0x0B,0x0F,0x0E,0xFF,0x10, + 0x0C,0xFF,0xFF,0x1B,0x00,0xFF,0x1C,0xFF,0x1D,0xFF,0xFF, + 0x1F,0x1E,0xFF,0x90,0x06,0xFF,0x05,0xFF,0xFF,0x11,0xFF, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9B,0x37,0x00,0x00, + 0x00,0x08,0x00,0x14,0x0F,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0E,0x06,0x01,0x02,0x03,0x04,0x00,0x01,0x02,0x03,0x04, + 0x05,0x06,0x07,0x4C,0x4F,0x41,0x44,0x0D,0x52,0x55,0x4E, + 0x0D,0x00,0x28,0x50,0x78,0xA0,0xC8,0xF0,0x18,0x40,0x68, + 0x90,0xB8,0xE0,0x08,0x30,0x58,0x80,0xA8,0xD0,0xF8,0x20, + 0x48,0x70,0x98,0xC0,0x09,0x40,0x2C,0x09,0x20,0x20,0xA4, + 0xF0,0x48,0x24,0x94,0x10,0x0A,0x38,0x66,0xA3,0x20,0x40, + 0xED,0x46,0x94,0x46,0xA3,0x68,0x85,0x95,0x78,0x20,0x97, + 0xEE,0xC9,0x3F,0xD0,0x03,0x20,0x85,0xEE,0xAD,0x00,0xDD, + 0x09,0x08,0x8D,0x00,0xDD,0x78,0x20,0x8E,0xEE,0x20,0x97, + 0xEE,0x20,0xB3,0xEE,0x78,0x20,0x97,0xEE,0x20,0xA9,0xEE, + 0xB0,0x64,0x20,0x85,0xEE,0x24,0xA3,0x10,0x0A,0x20,0xA9, + 0xEE,0x90,0xFB,0x20,0xA9,0xEE,0xB0,0xFB,0x20,0xA9,0xEE, + 0x90,0xFB,0x20,0x8E,0xEE,0xA9,0x08,0x85,0xA5,0xAD,0x00, + 0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A,0x90,0x3F,0x66,0x95, + 0xB0,0x05,0x20,0xA0,0xEE,0xD0,0x03,0x20,0x97,0xEE,0x20, + 0x85,0xEE,0xEA,0xEA,0xEA,0xEA,0xAD,0x00,0xDD,0x29,0xDF, + 0x09,0x10,0x8D,0x00,0xDD,0xC6,0xA5,0xD0,0xD4,0xA9,0x04, + 0x8D,0x07,0xDC,0xA9,0x19,0x8D,0x0F,0xDC,0xAD,0x0D,0xDC, + 0xAD,0x0D,0xDC,0x29,0x02,0xD0,0x0A,0x20,0xA9,0xEE,0xB0, + 0xF4,0x58,0x60,0xA9,0x80,0x2C,0xA9,0x03,0x20,0x1C,0xFE, + 0x58,0x18,0x90,0x4A,0x85,0x95,0x20,0x36,0xED,0xAD,0x00, + 0xDD,0x29,0xF7,0x8D,0x00,0xDD,0x60,0x85,0x95,0x20,0x36, + 0xED,0x78,0x20,0xA0,0xEE,0x20,0xBE,0xED,0x20,0x85,0xEE, + 0x20,0xA9,0xEE,0x30,0xFB,0x58,0x60,0x24,0x94,0x30,0x05, + 0x38,0x66,0x94,0xD0,0x05,0x48,0x20,0x40,0xED,0x68,0x85, + 0x95,0x18,0x60,0x78,0x20,0x8E,0xEE,0xAD,0x00,0xDD,0x09, + 0x08,0x8D,0x00,0xDD,0xA9,0x5F,0x2C,0xA9,0x3F,0x20,0x11, + 0xED,0x20,0xBE,0xED,0x8A,0xA2,0x0A,0xCA,0xD0,0xFD,0xAA, + 0x20,0x85,0xEE,0x4C,0x97,0xEE,0x78,0xA9,0x00,0x85,0xA5, + 0x20,0x85,0xEE,0x20,0xA9,0xEE,0x10,0xFB,0xA9,0x01,0x8D, + 0x07,0xDC,0xA9,0x19,0x8D,0x0F,0xDC,0x20,0x97,0xEE,0xAD, + 0x0D,0xDC,0xAD,0x0D,0xDC,0x29,0x02,0xD0,0x07,0x20,0xA9, + 0xEE,0x30,0xF4,0x10,0x18,0xA5,0xA5,0xF0,0x05,0xA9,0x02, + 0x4C,0xB2,0xED,0x20,0xA0,0xEE,0x20,0x85,0xEE,0xA9,0x40, + 0x20,0x1C,0xFE,0xE6,0xA5,0xD0,0xCA,0xA9,0x08,0x85,0xA5, + 0xAD,0x00,0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A,0x10,0xF5, + 0x66,0xA4,0xAD,0x00,0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A, + 0x30,0xF5,0xC6,0xA5,0xD0,0xE4,0x20,0xA0,0xEE,0x24,0x90, + 0x50,0x03,0x20,0x06,0xEE,0xA5,0xA4,0x58,0x18,0x60,0xAD, + 0x00,0xDD,0x29,0xEF,0x8D,0x00,0xDD,0x60,0xAD,0x00,0xDD, + 0x09,0x10,0x8D,0x00,0xDD,0x60,0xAD,0x00,0xDD,0x29,0xDF, + 0x8D,0x00,0xDD,0x60,0xAD,0x00,0xDD,0x09,0x20,0x8D,0x00, + 0xDD,0x60,0xAD,0x00,0xDD,0xCD,0x00,0xDD,0xD0,0xF8,0x0A, + 0x60,0x8A,0xA2,0xB8,0xCA,0xD0,0xFD,0xAA,0x60,0xA5,0xB4, + 0xF0,0x47,0x30,0x3F,0x46,0xB6,0xA2,0x00,0x90,0x01,0xCA, + 0x8A,0x45,0xBD,0x85,0xBD,0xC6,0xB4,0xF0,0x06,0x8A,0x29, + 0x04,0x85,0xB5,0x60,0xA9,0x20,0x2C,0x94,0x02,0xF0,0x14, + 0x30,0x1C,0x70,0x14,0xA5,0xBD,0xD0,0x01,0xCA,0xC6,0xB4, + 0xAD,0x93,0x02,0x10,0xE3,0xC6,0xB4,0xD0,0xDF,0xE6,0xB4, + 0xD0,0xF0,0xA5,0xBD,0xF0,0xED,0xD0,0xEA,0x70,0xE9,0x50, + 0xE6,0xE6,0xB4,0xA2,0xFF,0xD0,0xCB,0xAD,0x94,0x02,0x4A, + 0x90,0x07,0x2C,0x01,0xDD,0x10,0x1D,0x50,0x1E,0xA9,0x00, + 0x85,0xBD,0x85,0xB5,0xAE,0x98,0x02,0x86,0xB4,0xAC,0x9D, + 0x02,0xCC,0x9E,0x02,0xF0,0x13,0xB1,0xF9,0x85,0xB6,0xEE, + 0x9D,0x02,0x60,0xA9,0x40,0x2C,0xA9,0x10,0x0D,0x97,0x02, + 0x8D,0x97,0x02,0xA9,0x01,0x8D,0x0D,0xDD,0x4D,0xA1,0x02, + 0x09,0x80,0x8D,0xA1,0x02,0x8D,0x0D,0xDD,0x60,0xA2,0x09, + 0xA9,0x20,0x2C,0x93,0x02,0xF0,0x01,0xCA,0x50,0x02,0xCA, + 0xCA,0x60,0xA6,0xA9,0xD0,0x33,0xC6,0xA8,0xF0,0x36,0x30, + 0x0D,0xA5,0xA7,0x45,0xAB,0x85,0xAB,0x46,0xA7,0x66,0xAA, + 0x60,0xC6,0xA8,0xA5,0xA7,0xF0,0x67,0xAD,0x93,0x02,0x0A, + 0xA9,0x01,0x65,0xA8,0xD0,0xEF,0xA9,0x90,0x8D,0x0D,0xDD, + 0x0D,0xA1,0x02,0x8D,0xA1,0x02,0x85,0xA9,0xA9,0x02,0x4C, + 0x3B,0xEF,0xA5,0xA7,0xD0,0xEA,0x4C,0xD3,0xE4,0xAC,0x9B, + 0x02,0xC8,0xCC,0x9C,0x02,0xF0,0x2A,0x8C,0x9B,0x02,0x88, + 0xA5,0xAA,0xAE,0x98,0x02,0xE0,0x09,0xF0,0x04,0x4A,0xE8, + 0xD0,0xF8,0x91,0xF7,0xA9,0x20,0x2C,0x94,0x02,0xF0,0xB4, + 0x30,0xB1,0xA5,0xA7,0x45,0xAB,0xF0,0x03,0x70,0xA9,0x2C, + 0x50,0xA6,0xA9,0x01,0x2C,0xA9,0x04,0x2C,0xA9,0x80,0x2C, + 0xA9,0x02,0x0D,0x97,0x02,0x8D,0x97,0x02,0x4C,0x7E,0xEF, + 0xA5,0xAA,0xD0,0xF1,0xF0,0xEC,0x85,0x9A,0xAD,0x94,0x02, + 0x4A,0x90,0x29,0xA9,0x02,0x2C,0x01,0xDD,0x10,0x1D,0xD0, + 0x20,0xAD,0xA1,0x02,0x29,0x02,0xD0,0xF9,0x2C,0x01,0xDD, + 0x70,0xFB,0xAD,0x01,0xDD,0x09,0x02,0x8D,0x01,0xDD,0x2C, + 0x01,0xDD,0x70,0x07,0x30,0xF9,0xA9,0x40,0x8D,0x97,0x02, + 0x18,0x60,0x20,0x28,0xF0,0xAC,0x9E,0x02,0xC8,0xCC,0x9D, + 0x02,0xF0,0xF4,0x8C,0x9E,0x02,0x88,0xA5,0x9E,0x91,0xF9, + 0xAD,0xA1,0x02,0x4A,0xB0,0x1E,0xA9,0x10,0x8D,0x0E,0xDD, + 0xAD,0x99,0x02,0x8D,0x04,0xDD,0xAD,0x9A,0x02,0x8D,0x05, + 0xDD,0xA9,0x81,0x20,0x3B,0xEF,0x20,0x06,0xEF,0xA9,0x11, + 0x8D,0x0E,0xDD,0x60,0x85,0x99,0xAD,0x94,0x02,0x4A,0x90, + 0x28,0x29,0x08,0xF0,0x24,0xA9,0x02,0x2C,0x01,0xDD,0x10, + 0xAD,0xF0,0x22,0xAD,0xA1,0x02,0x4A,0xB0,0xFA,0xAD,0x01, + 0xDD,0x29,0xFD,0x8D,0x01,0xDD,0xAD,0x01,0xDD,0x29,0x04, + 0xF0,0xF9,0xA9,0x90,0x18,0x4C,0x3B,0xEF,0xAD,0xA1,0x02, + 0x29,0x12,0xF0,0xF3,0x18,0x60,0xAD,0x97,0x02,0xAC,0x9C, + 0x02,0xCC,0x9B,0x02,0xF0,0x0B,0x29,0xF7,0x8D,0x97,0x02, + 0xB1,0xF7,0xEE,0x9C,0x02,0x60,0x09,0x08,0x8D,0x97,0x02, + 0xA9,0x00,0x60,0x48,0xAD,0xA1,0x02,0xF0,0x11,0xAD,0xA1, + 0x02,0x29,0x03,0xD0,0xF9,0xA9,0x10,0x8D,0x0D,0xDD,0xA9, + 0x00,0x8D,0xA1,0x02,0x68,0x60,0x0D,0x49,0x2F,0x4F,0x20, + 0x45,0x52,0x52,0x4F,0x52,0x20,0xA3,0x0D,0x53,0x45,0x41, + 0x52,0x43,0x48,0x49,0x4E,0x47,0xA0,0x46,0x4F,0x52,0xA0, + 0x0D,0x50,0x52,0x45,0x53,0x53,0x20,0x50,0x4C,0x41,0x59, + 0x20,0x4F,0x4E,0x20,0x54,0x41,0x50,0xC5,0x50,0x52,0x45, + 0x53,0x53,0x20,0x52,0x45,0x43,0x4F,0x52,0x44,0x20,0x26, + 0x20,0x50,0x4C,0x41,0x59,0x20,0x4F,0x4E,0x20,0x54,0x41, + 0x50,0xC5,0x0D,0x4C,0x4F,0x41,0x44,0x49,0x4E,0xC7,0x0D, + 0x53,0x41,0x56,0x49,0x4E,0x47,0xA0,0x0D,0x56,0x45,0x52, + 0x49,0x46,0x59,0x49,0x4E,0xC7,0x0D,0x46,0x4F,0x55,0x4E, + 0x44,0xA0,0x0D,0x4F,0x4B,0x8D,0x24,0x9D,0x10,0x0D,0xB9, + 0xBD,0xF0,0x08,0x29,0x7F,0x20,0xD2,0xFF,0xC8,0x28,0x10, + 0xF3,0x18,0x60,0xA5,0x99,0xD0,0x08,0xA5,0xC6,0xF0,0x0F, + 0x78,0x4C,0xB4,0xE5,0xC9,0x02,0xD0,0x18,0x84,0x97,0x20, + 0x86,0xF0,0xA4,0x97,0x18,0x60,0xA5,0x99,0xD0,0x0B,0xA5, + 0xD3,0x85,0xCA,0xA5,0xD6,0x85,0xC9,0x4C,0x32,0xE6,0xC9, + 0x03,0xD0,0x09,0x85,0xD0,0xA5,0xD5,0x85,0xC8,0x4C,0x32, + 0xE6,0xB0,0x38,0xC9,0x02,0xF0,0x3F,0x86,0x97,0x20,0x99, + 0xF1,0xB0,0x16,0x48,0x20,0x99,0xF1,0xB0,0x0D,0xD0,0x05, + 0xA9,0x40,0x20,0x1C,0xFE,0xC6,0xA6,0xA6,0x97,0x68,0x60, + 0xAA,0x68,0x8A,0xA6,0x97,0x60,0x20,0x0D,0xF8,0xD0,0x0B, + 0x20,0x41,0xF8,0xB0,0x11,0xA9,0x00,0x85,0xA6,0xF0,0xF0, + 0xB1,0xB2,0x18,0x60,0xA5,0x90,0xF0,0x04,0xA9,0x0D,0x18, + 0x60,0x4C,0x13,0xEE,0x20,0x4E,0xF1,0xB0,0xF7,0xC9,0x00, + 0xD0,0xF2,0xAD,0x97,0x02,0x29,0x60,0xD0,0xE9,0xF0,0xEE, + 0x48,0xA5,0x9A,0xC9,0x03,0xD0,0x04,0x68,0x4C,0x16,0xE7, + 0x90,0x04,0x68,0x4C,0xDD,0xED,0x4A,0x68,0x85,0x9E,0x8A, + 0x48,0x98,0x48,0x90,0x23,0x20,0x0D,0xF8,0xD0,0x0E,0x20, + 0x64,0xF8,0xB0,0x0E,0xA9,0x02,0xA0,0x00,0x91,0xB2,0xC8, + 0x84,0xA6,0xA5,0x9E,0x91,0xB2,0x18,0x68,0xA8,0x68,0xAA, + 0xA5,0x9E,0x90,0x02,0xA9,0x00,0x60,0x20,0x17,0xF0,0x4C, + 0xFC,0xF1,0x20,0x0F,0xF3,0xF0,0x03,0x4C,0x01,0xF7,0x20, + 0x1F,0xF3,0xA5,0xBA,0xF0,0x16,0xC9,0x03,0xF0,0x12,0xB0, + 0x14,0xC9,0x02,0xD0,0x03,0x4C,0x4D,0xF0,0xA6,0xB9,0xE0, + 0x60,0xF0,0x03,0x4C,0x0A,0xF7,0x85,0x99,0x18,0x60,0xAA, + 0x20,0x09,0xED,0xA5,0xB9,0x10,0x06,0x20,0xCC,0xED,0x4C, + 0x48,0xF2,0x20,0xC7,0xED,0x8A,0x24,0x90,0x10,0xE6,0x4C, + 0x07,0xF7,0x20,0x0F,0xF3,0xF0,0x03,0x4C,0x01,0xF7,0x20, + 0x1F,0xF3,0xA5,0xBA,0xD0,0x03,0x4C,0x0D,0xF7,0xC9,0x03, + 0xF0,0x0F,0xB0,0x11,0xC9,0x02,0xD0,0x03,0x4C,0xE1,0xEF, + 0xA6,0xB9,0xE0,0x60,0xF0,0xEA,0x85,0x9A,0x18,0x60,0xAA, + 0x20,0x0C,0xED,0xA5,0xB9,0x10,0x05,0x20,0xBE,0xED,0xD0, + 0x03,0x20,0xB9,0xED,0x8A,0x24,0x90,0x10,0xE7,0x4C,0x07, + 0xF7,0x20,0x14,0xF3,0xF0,0x02,0x18,0x60,0x20,0x1F,0xF3, + 0x8A,0x48,0xA5,0xBA,0xF0,0x50,0xC9,0x03,0xF0,0x4C,0xB0, + 0x47,0xC9,0x02,0xD0,0x1D,0x68,0x20,0xF2,0xF2,0x20,0x83, + 0xF4,0x20,0x27,0xFE,0xA5,0xF8,0xF0,0x01,0xC8,0xA5,0xFA, + 0xF0,0x01,0xC8,0xA9,0x00,0x85,0xF8,0x85,0xFA,0x4C,0x7D, + 0xF4,0xA5,0xB9,0x29,0x0F,0xF0,0x23,0x20,0xD0,0xF7,0xA9, + 0x00,0x38,0x20,0xDD,0xF1,0x20,0x64,0xF8,0x90,0x04,0x68, + 0xA9,0x00,0x60,0xA5,0xB9,0xC9,0x62,0xD0,0x0B,0xA9,0x05, + 0x20,0x6A,0xF7,0x4C,0xF1,0xF2,0x20,0x42,0xF6,0x68,0xAA, + 0xC6,0x98,0xE4,0x98,0xF0,0x14,0xA4,0x98,0xB9,0x59,0x02, + 0x9D,0x59,0x02,0xB9,0x63,0x02,0x9D,0x63,0x02,0xB9,0x6D, + 0x02,0x9D,0x6D,0x02,0x18,0x60,0xA9,0x00,0x85,0x90,0x8A, + 0xA6,0x98,0xCA,0x30,0x15,0xDD,0x59,0x02,0xD0,0xF8,0x60, + 0xBD,0x59,0x02,0x85,0xB8,0xBD,0x63,0x02,0x85,0xBA,0xBD, + 0x6D,0x02,0x85,0xB9,0x60,0xA9,0x00,0x85,0x98,0xA2,0x03, + 0xE4,0x9A,0xB0,0x03,0x20,0xFE,0xED,0xE4,0x99,0xB0,0x03, + 0x20,0xEF,0xED,0x86,0x9A,0xA9,0x00,0x85,0x99,0x60,0xA6, + 0xB8,0xD0,0x03,0x4C,0x0A,0xF7,0x20,0x0F,0xF3,0xD0,0x03, + 0x4C,0xFE,0xF6,0xA6,0x98,0xE0,0x0A,0x90,0x03,0x4C,0xFB, + 0xF6,0xE6,0x98,0xA5,0xB8,0x9D,0x59,0x02,0xA5,0xB9,0x09, + 0x60,0x85,0xB9,0x9D,0x6D,0x02,0xA5,0xBA,0x9D,0x63,0x02, + 0xF0,0x5A,0xC9,0x03,0xF0,0x56,0x90,0x05,0x20,0xD5,0xF3, + 0x90,0x4F,0xC9,0x02,0xD0,0x03,0x4C,0x09,0xF4,0x20,0xD0, + 0xF7,0xB0,0x03,0x4C,0x13,0xF7,0xA5,0xB9,0x29,0x0F,0xD0, + 0x1F,0x20,0x17,0xF8,0xB0,0x36,0x20,0xAF,0xF5,0xA5,0xB7, + 0xF0,0x0A,0x20,0xEA,0xF7,0x90,0x18,0xF0,0x28,0x4C,0x04, + 0xF7,0x20,0x2C,0xF7,0xF0,0x20,0x90,0x0C,0xB0,0xF4,0x20, + 0x38,0xF8,0xB0,0x17,0xA9,0x04,0x20,0x6A,0xF7,0xA9,0xBF, + 0xA4,0xB9,0xC0,0x60,0xF0,0x07,0xA0,0x00,0xA9,0x02,0x91, + 0xB2,0x98,0x85,0xA6,0x18,0x60,0xA5,0xB9,0x30,0xFA,0xA4, + 0xB7,0xF0,0xF6,0xA9,0x00,0x85,0x90,0xA5,0xBA,0x20,0x0C, + 0xED,0xA5,0xB9,0x09,0xF0,0x20,0xB9,0xED,0xA5,0x90,0x10, + 0x05,0x68,0x68,0x4C,0x07,0xF7,0xA5,0xB7,0xF0,0x0C,0xA0, + 0x00,0xB1,0xBB,0x20,0xDD,0xED,0xC8,0xC4,0xB7,0xD0,0xF6, + 0x4C,0x54,0xF6,0x20,0x83,0xF4,0x8C,0x97,0x02,0xC4,0xB7, + 0xF0,0x0A,0xB1,0xBB,0x99,0x93,0x02,0xC8,0xC0,0x04,0xD0, + 0xF2,0x20,0x4A,0xEF,0x8E,0x98,0x02,0xAD,0x93,0x02,0x29, + 0x0F,0xF0,0x1C,0x0A,0xAA,0xAD,0xA6,0x02,0xD0,0x09,0xBC, + 0xC1,0xFE,0xBD,0xC0,0xFE,0x4C,0x40,0xF4,0xBC,0xEB,0xE4, + 0xBD,0xEA,0xE4,0x8C,0x96,0x02,0x8D,0x95,0x02,0xAD,0x95, + 0x02,0x0A,0x20,0x2E,0xFF,0xAD,0x94,0x02,0x4A,0x90,0x09, + 0xAD,0x01,0xDD,0x0A,0xB0,0x03,0x20,0x0D,0xF0,0xAD,0x9B, + 0x02,0x8D,0x9C,0x02,0xAD,0x9E,0x02,0x8D,0x9D,0x02,0x20, + 0x27,0xFE,0xA5,0xF8,0xD0,0x05,0x88,0x84,0xF8,0x86,0xF7, + 0xA5,0xFA,0xD0,0x05,0x88,0x84,0xFA,0x86,0xF9,0x38,0xA9, + 0xF0,0x4C,0x2D,0xFE,0xA9,0x7F,0x8D,0x0D,0xDD,0xA9,0x06, + 0x8D,0x03,0xDD,0x8D,0x01,0xDD,0xA9,0x04,0x0D,0x00,0xDD, + 0x8D,0x00,0xDD,0xA0,0x00,0x8C,0xA1,0x02,0x60,0x86,0xC3, + 0x84,0xC4,0x6C,0x30,0x03,0x85,0x93,0xA9,0x00,0x85,0x90, + 0xA5,0xBA,0xD0,0x03,0x4C,0x13,0xF7,0xC9,0x03,0xF0,0xF9, + 0x90,0x7B,0xA4,0xB7,0xD0,0x03,0x4C,0x10,0xF7,0xA6,0xB9, + 0x20,0xAF,0xF5,0xA9,0x60,0x85,0xB9,0x20,0xD5,0xF3,0xA5, + 0xBA,0x20,0x09,0xED,0xA5,0xB9,0x20,0xC7,0xED,0x20,0x13, + 0xEE,0x85,0xAE,0xA5,0x90,0x4A,0x4A,0xB0,0x50,0x20,0x13, + 0xEE,0x85,0xAF,0x8A,0xD0,0x08,0xA5,0xC3,0x85,0xAE,0xA5, + 0xC4,0x85,0xAF,0x20,0xD2,0xF5,0xA9,0xFD,0x25,0x90,0x85, + 0x90,0x20,0xE1,0xFF,0xD0,0x03,0x4C,0x33,0xF6,0x20,0x13, + 0xEE,0xAA,0xA5,0x90,0x4A,0x4A,0xB0,0xE8,0x8A,0xA4,0x93, + 0xF0,0x0C,0xA0,0x00,0xD1,0xAE,0xF0,0x08,0xA9,0x10,0x20, + 0x1C,0xFE,0x2C,0x91,0xAE,0xE6,0xAE,0xD0,0x02,0xE6,0xAF, + 0x24,0x90,0x50,0xCB,0x20,0xEF,0xED,0x20,0x42,0xF6,0x90, + 0x79,0x4C,0x04,0xF7,0x4A,0xB0,0x03,0x4C,0x13,0xF7,0x20, + 0xD0,0xF7,0xB0,0x03,0x4C,0x13,0xF7,0x20,0x17,0xF8,0xB0, + 0x68,0x20,0xAF,0xF5,0xA5,0xB7,0xF0,0x09,0x20,0xEA,0xF7, + 0x90,0x0B,0xF0,0x5A,0xB0,0xDA,0x20,0x2C,0xF7,0xF0,0x53, + 0xB0,0xD3,0xA5,0x90,0x29,0x10,0x38,0xD0,0x4A,0xE0,0x01, + 0xF0,0x11,0xE0,0x03,0xD0,0xDD,0xA0,0x01,0xB1,0xB2,0x85, + 0xC3,0xC8,0xB1,0xB2,0x85,0xC4,0xB0,0x04,0xA5,0xB9,0xD0, + 0xEF,0xA0,0x03,0xB1,0xB2,0xA0,0x01,0xF1,0xB2,0xAA,0xA0, + 0x04,0xB1,0xB2,0xA0,0x02,0xF1,0xB2,0xA8,0x18,0x8A,0x65, + 0xC3,0x85,0xAE,0x98,0x65,0xC4,0x85,0xAF,0xA5,0xC3,0x85, + 0xC1,0xA5,0xC4,0x85,0xC2,0x20,0xD2,0xF5,0x20,0x4A,0xF8, + 0x24,0x18,0xA6,0xAE,0xA4,0xAF,0x60,0xA5,0x9D,0x10,0x1E, + 0xA0,0x0C,0x20,0x2F,0xF1,0xA5,0xB7,0xF0,0x15,0xA0,0x17, + 0x20,0x2F,0xF1,0xA4,0xB7,0xF0,0x0C,0xA0,0x00,0xB1,0xBB, + 0x20,0xD2,0xFF,0xC8,0xC4,0xB7,0xD0,0xF6,0x60,0xA0,0x49, + 0xA5,0x93,0xF0,0x02,0xA0,0x59,0x4C,0x2B,0xF1,0x86,0xAE, + 0x84,0xAF,0xAA,0xB5,0x00,0x85,0xC1,0xB5,0x01,0x85,0xC2, + 0x6C,0x32,0x03,0xA5,0xBA,0xD0,0x03,0x4C,0x13,0xF7,0xC9, + 0x03,0xF0,0xF9,0x90,0x5F,0xA9,0x61,0x85,0xB9,0xA4,0xB7, + 0xD0,0x03,0x4C,0x10,0xF7,0x20,0xD5,0xF3,0x20,0x8F,0xF6, + 0xA5,0xBA,0x20,0x0C,0xED,0xA5,0xB9,0x20,0xB9,0xED,0xA0, + 0x00,0x20,0x8E,0xFB,0xA5,0xAC,0x20,0xDD,0xED,0xA5,0xAD, + 0x20,0xDD,0xED,0x20,0xD1,0xFC,0xB0,0x16,0xB1,0xAC,0x20, + 0xDD,0xED,0x20,0xE1,0xFF,0xD0,0x07,0x20,0x42,0xF6,0xA9, + 0x00,0x38,0x60,0x20,0xDB,0xFC,0xD0,0xE5,0x20,0xFE,0xED, + 0x24,0xB9,0x30,0x11,0xA5,0xBA,0x20,0x0C,0xED,0xA5,0xB9, + 0x29,0xEF,0x09,0xE0,0x20,0xB9,0xED,0x20,0xFE,0xED,0x18, + 0x60,0x4A,0xB0,0x03,0x4C,0x13,0xF7,0x20,0xD0,0xF7,0x90, + 0x8D,0x20,0x38,0xF8,0xB0,0x25,0x20,0x8F,0xF6,0xA2,0x03, + 0xA5,0xB9,0x29,0x01,0xD0,0x02,0xA2,0x01,0x8A,0x20,0x6A, + 0xF7,0xB0,0x12,0x20,0x67,0xF8,0xB0,0x0D,0xA5,0xB9,0x29, + 0x02,0xF0,0x06,0xA9,0x05,0x20,0x6A,0xF7,0x24,0x18,0x60, + 0xA5,0x9D,0x10,0xFB,0xA0,0x51,0x20,0x2F,0xF1,0x4C,0xC1, + 0xF5,0xA2,0x00,0xE6,0xA2,0xD0,0x06,0xE6,0xA1,0xD0,0x02, + 0xE6,0xA0,0x38,0xA5,0xA2,0xE9,0x01,0xA5,0xA1,0xE9,0x1A, + 0xA5,0xA0,0xE9,0x4F,0x90,0x06,0x86,0xA0,0x86,0xA1,0x86, + 0xA2,0xAD,0x01,0xDC,0xCD,0x01,0xDC,0xD0,0xF8,0xAA,0x30, + 0x13,0xA2,0xBD,0x8E,0x00,0xDC,0xAE,0x01,0xDC,0xEC,0x01, + 0xDC,0xD0,0xF8,0x8D,0x00,0xDC,0xE8,0xD0,0x02,0x85,0x91, + 0x60,0x78,0xA5,0xA2,0xA6,0xA1,0xA4,0xA0,0x78,0x85,0xA2, + 0x86,0xA1,0x84,0xA0,0x58,0x60,0xA5,0x91,0xC9,0x7F,0xD0, + 0x07,0x08,0x20,0xCC,0xFF,0x85,0xC6,0x28,0x60,0xA9,0x01, + 0x2C,0xA9,0x02,0x2C,0xA9,0x03,0x2C,0xA9,0x04,0x2C,0xA9, + 0x05,0x2C,0xA9,0x06,0x2C,0xA9,0x07,0x2C,0xA9,0x08,0x2C, + 0xA9,0x09,0x48,0x20,0xCC,0xFF,0xA0,0x00,0x24,0x9D,0x50, + 0x0A,0x20,0x2F,0xF1,0x68,0x48,0x09,0x30,0x20,0xD2,0xFF, + 0x68,0x38,0x60,0xA5,0x93,0x48,0x20,0x41,0xF8,0x68,0x85, + 0x93,0xB0,0x32,0xA0,0x00,0xB1,0xB2,0xC9,0x05,0xF0,0x2A, + 0xC9,0x01,0xF0,0x08,0xC9,0x03,0xF0,0x04,0xC9,0x04,0xD0, + 0xE1,0xAA,0x24,0x9D,0x10,0x17,0xA0,0x63,0x20,0x2F,0xF1, + 0xA0,0x05,0xB1,0xB2,0x20,0xD2,0xFF,0xC8,0xC0,0x15,0xD0, + 0xF6,0xA5,0xA1,0x20,0xE0,0xE4,0xEA,0x18,0x88,0x60,0x85, + 0x9E,0x20,0xD0,0xF7,0x90,0x5E,0xA5,0xC2,0x48,0xA5,0xC1, + 0x48,0xA5,0xAF,0x48,0xA5,0xAE,0x48,0xA0,0xBF,0xA9,0x20, + 0x91,0xB2,0x88,0xD0,0xFB,0xA5,0x9E,0x91,0xB2,0xC8,0xA5, + 0xC1,0x91,0xB2,0xC8,0xA5,0xC2,0x91,0xB2,0xC8,0xA5,0xAE, + 0x91,0xB2,0xC8,0xA5,0xAF,0x91,0xB2,0xC8,0x84,0x9F,0xA0, + 0x00,0x84,0x9E,0xA4,0x9E,0xC4,0xB7,0xF0,0x0C,0xB1,0xBB, + 0xA4,0x9F,0x91,0xB2,0xE6,0x9E,0xE6,0x9F,0xD0,0xEE,0x20, + 0xD7,0xF7,0xA9,0x69,0x85,0xAB,0x20,0x6B,0xF8,0xA8,0x68, + 0x85,0xAE,0x68,0x85,0xAF,0x68,0x85,0xC1,0x68,0x85,0xC2, + 0x98,0x60,0xA6,0xB2,0xA4,0xB3,0xC0,0x02,0x60,0x20,0xD0, + 0xF7,0x8A,0x85,0xC1,0x18,0x69,0xC0,0x85,0xAE,0x98,0x85, + 0xC2,0x69,0x00,0x85,0xAF,0x60,0x20,0x2C,0xF7,0xB0,0x1D, + 0xA0,0x05,0x84,0x9F,0xA0,0x00,0x84,0x9E,0xC4,0xB7,0xF0, + 0x10,0xB1,0xBB,0xA4,0x9F,0xD1,0xB2,0xD0,0xE7,0xE6,0x9E, + 0xE6,0x9F,0xA4,0x9E,0xD0,0xEC,0x18,0x60,0x20,0xD0,0xF7, + 0xE6,0xA6,0xA4,0xA6,0xC0,0xC0,0x60,0x20,0x2E,0xF8,0xF0, + 0x1A,0xA0,0x1B,0x20,0x2F,0xF1,0x20,0xD0,0xF8,0x20,0x2E, + 0xF8,0xD0,0xF8,0xA0,0x6A,0x4C,0x2F,0xF1,0xA9,0x10,0x24, + 0x01,0xD0,0x02,0x24,0x01,0x18,0x60,0x20,0x2E,0xF8,0xF0, + 0xF9,0xA0,0x2E,0xD0,0xDD,0xA9,0x00,0x85,0x90,0x85,0x93, + 0x20,0xD7,0xF7,0x20,0x17,0xF8,0xB0,0x1F,0x78,0xA9,0x00, + 0x85,0xAA,0x85,0xB4,0x85,0xB0,0x85,0x9E,0x85,0x9F,0x85, + 0x9C,0xA9,0x90,0xA2,0x0E,0xD0,0x11,0x20,0xD7,0xF7,0xA9, + 0x14,0x85,0xAB,0x20,0x38,0xF8,0xB0,0x6C,0x78,0xA9,0x82, + 0xA2,0x08,0xA0,0x7F,0x8C,0x0D,0xDC,0x8D,0x0D,0xDC,0xAD, + 0x0E,0xDC,0x09,0x19,0x8D,0x0F,0xDC,0x29,0x91,0x8D,0xA2, + 0x02,0x20,0xA4,0xF0,0xAD,0x11,0xD0,0x29,0xEF,0x8D,0x11, + 0xD0,0xAD,0x14,0x03,0x8D,0x9F,0x02,0xAD,0x15,0x03,0x8D, + 0xA0,0x02,0x20,0xBD,0xFC,0xA9,0x02,0x85,0xBE,0x20,0x97, + 0xFB,0xA5,0x01,0x29,0x1F,0x85,0x01,0x85,0xC0,0xA2,0xFF, + 0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x58,0xAD,0xA0, + 0x02,0xCD,0x15,0x03,0x18,0xF0,0x15,0x20,0xD0,0xF8,0x20, + 0xBC,0xF6,0x4C,0xBE,0xF8,0x20,0xE1,0xFF,0x18,0xD0,0x0B, + 0x20,0x93,0xFC,0x38,0x68,0x68,0xA9,0x00,0x8D,0xA0,0x02, + 0x60,0x86,0xB1,0xA5,0xB0,0x0A,0x0A,0x18,0x65,0xB0,0x18, + 0x65,0xB1,0x85,0xB1,0xA9,0x00,0x24,0xB0,0x30,0x01,0x2A, + 0x06,0xB1,0x2A,0x06,0xB1,0x2A,0xAA,0xAD,0x06,0xDC,0xC9, + 0x16,0x90,0xF9,0x65,0xB1,0x8D,0x04,0xDC,0x8A,0x6D,0x07, + 0xDC,0x8D,0x05,0xDC,0xAD,0xA2,0x02,0x8D,0x0E,0xDC,0x8D, + 0xA4,0x02,0xAD,0x0D,0xDC,0x29,0x10,0xF0,0x09,0xA9,0xF9, + 0x48,0xA9,0x2A,0x48,0x4C,0x43,0xFF,0x58,0x60,0xAE,0x07, + 0xDC,0xA0,0xFF,0x98,0xED,0x06,0xDC,0xEC,0x07,0xDC,0xD0, + 0xF2,0x86,0xB1,0xAA,0x8C,0x06,0xDC,0x8C,0x07,0xDC,0xA9, + 0x19,0x8D,0x0F,0xDC,0xAD,0x0D,0xDC,0x8D,0xA3,0x02,0x98, + 0xE5,0xB1,0x86,0xB1,0x4A,0x66,0xB1,0x4A,0x66,0xB1,0xA5, + 0xB0,0x18,0x69,0x3C,0xC5,0xB1,0xB0,0x4A,0xA6,0x9C,0xF0, + 0x03,0x4C,0x60,0xFA,0xA6,0xA3,0x30,0x1B,0xA2,0x00,0x69, + 0x30,0x65,0xB0,0xC5,0xB1,0xB0,0x1C,0xE8,0x69,0x26,0x65, + 0xB0,0xC5,0xB1,0xB0,0x17,0x69,0x2C,0x65,0xB0,0xC5,0xB1, + 0x90,0x03,0x4C,0x10,0xFA,0xA5,0xB4,0xF0,0x1D,0x85,0xA8, + 0xD0,0x19,0xE6,0xA9,0xB0,0x02,0xC6,0xA9,0x38,0xE9,0x13, + 0xE5,0xB1,0x65,0x92,0x85,0x92,0xA5,0xA4,0x49,0x01,0x85, + 0xA4,0xF0,0x2B,0x86,0xD7,0xA5,0xB4,0xF0,0x22,0xAD,0xA3, + 0x02,0x29,0x01,0xD0,0x05,0xAD,0xA4,0x02,0xD0,0x16,0xA9, + 0x00,0x85,0xA4,0x8D,0xA4,0x02,0xA5,0xA3,0x10,0x30,0x30, + 0xBF,0xA2,0xA6,0x20,0xE2,0xF8,0xA5,0x9B,0xD0,0xB9,0x4C, + 0xBC,0xFE,0xA5,0x92,0xF0,0x07,0x30,0x03,0xC6,0xB0,0x2C, + 0xE6,0xB0,0xA9,0x00,0x85,0x92,0xE4,0xD7,0xD0,0x0F,0x8A, + 0xD0,0xA0,0xA5,0xA9,0x30,0xBD,0xC9,0x10,0x90,0xB9,0x85, + 0x96,0xB0,0xB5,0x8A,0x45,0x9B,0x85,0x9B,0xA5,0xB4,0xF0, + 0xD2,0xC6,0xA3,0x30,0xC5,0x46,0xD7,0x66,0xBF,0xA2,0xDA, + 0x20,0xE2,0xF8,0x4C,0xBC,0xFE,0xA5,0x96,0xF0,0x04,0xA5, + 0xB4,0xF0,0x07,0xA5,0xA3,0x30,0x03,0x4C,0x97,0xF9,0x46, + 0xB1,0xA9,0x93,0x38,0xE5,0xB1,0x65,0xB0,0x0A,0xAA,0x20, + 0xE2,0xF8,0xE6,0x9C,0xA5,0xB4,0xD0,0x11,0xA5,0x96,0xF0, + 0x26,0x85,0xA8,0xA9,0x00,0x85,0x96,0xA9,0x81,0x8D,0x0D, + 0xDC,0x85,0xB4,0xA5,0x96,0x85,0xB5,0xF0,0x09,0xA9,0x00, + 0x85,0xB4,0xA9,0x01,0x8D,0x0D,0xDC,0xA5,0xBF,0x85,0xBD, + 0xA5,0xA8,0x05,0xA9,0x85,0xB6,0x4C,0xBC,0xFE,0x20,0x97, + 0xFB,0x85,0x9C,0xA2,0xDA,0x20,0xE2,0xF8,0xA5,0xBE,0xF0, + 0x02,0x85,0xA7,0xA9,0x0F,0x24,0xAA,0x10,0x17,0xA5,0xB5, + 0xD0,0x0C,0xA6,0xBE,0xCA,0xD0,0x0B,0xA9,0x08,0x20,0x1C, + 0xFE,0xD0,0x04,0xA9,0x00,0x85,0xAA,0x4C,0xBC,0xFE,0x70, + 0x31,0xD0,0x18,0xA5,0xB5,0xD0,0xF5,0xA5,0xB6,0xD0,0xF1, + 0xA5,0xA7,0x4A,0xA5,0xBD,0x30,0x03,0x90,0x18,0x18,0xB0, + 0x15,0x29,0x0F,0x85,0xAA,0xC6,0xAA,0xD0,0xDD,0xA9,0x40, + 0x85,0xAA,0x20,0x8E,0xFB,0xA9,0x00,0x85,0xAB,0xF0,0xD0, + 0xA9,0x80,0x85,0xAA,0xD0,0xCA,0xA5,0xB5,0xF0,0x0A,0xA9, + 0x04,0x20,0x1C,0xFE,0xA9,0x00,0x4C,0x4A,0xFB,0x20,0xD1, + 0xFC,0x90,0x03,0x4C,0x48,0xFB,0xA6,0xA7,0xCA,0xF0,0x2D, + 0xA5,0x93,0xF0,0x0C,0xA0,0x00,0xA5,0xBD,0xD1,0xAC,0xF0, + 0x04,0xA9,0x01,0x85,0xB6,0xA5,0xB6,0xF0,0x4B,0xA2,0x3D, + 0xE4,0x9E,0x90,0x3E,0xA6,0x9E,0xA5,0xAD,0x9D,0x01,0x01, + 0xA5,0xAC,0x9D,0x00,0x01,0xE8,0xE8,0x86,0x9E,0x4C,0x3A, + 0xFB,0xA6,0x9F,0xE4,0x9E,0xF0,0x35,0xA5,0xAC,0xDD,0x00, + 0x01,0xD0,0x2E,0xA5,0xAD,0xDD,0x01,0x01,0xD0,0x27,0xE6, + 0x9F,0xE6,0x9F,0xA5,0x93,0xF0,0x0B,0xA5,0xBD,0xA0,0x00, + 0xD1,0xAC,0xF0,0x17,0xC8,0x84,0xB6,0xA5,0xB6,0xF0,0x07, + 0xA9,0x10,0x20,0x1C,0xFE,0xD0,0x09,0xA5,0x93,0xD0,0x05, + 0xA8,0xA5,0xBD,0x91,0xAC,0x20,0xDB,0xFC,0xD0,0x43,0xA9, + 0x80,0x85,0xAA,0x78,0xA2,0x01,0x8E,0x0D,0xDC,0xAE,0x0D, + 0xDC,0xA6,0xBE,0xCA,0x30,0x02,0x86,0xBE,0xC6,0xA7,0xF0, + 0x08,0xA5,0x9E,0xD0,0x27,0x85,0xBE,0xF0,0x23,0x20,0x93, + 0xFC,0x20,0x8E,0xFB,0xA0,0x00,0x84,0xAB,0xB1,0xAC,0x45, + 0xAB,0x85,0xAB,0x20,0xDB,0xFC,0x20,0xD1,0xFC,0x90,0xF2, + 0xA5,0xAB,0x45,0xBD,0xF0,0x05,0xA9,0x20,0x20,0x1C,0xFE, + 0x4C,0xBC,0xFE,0xA5,0xC2,0x85,0xAD,0xA5,0xC1,0x85,0xAC, + 0x60,0xA9,0x08,0x85,0xA3,0xA9,0x00,0x85,0xA4,0x85,0xA8, + 0x85,0x9B,0x85,0xA9,0x60,0xA5,0xBD,0x4A,0xA9,0x60,0x90, + 0x02,0xA9,0xB0,0xA2,0x00,0x8D,0x06,0xDC,0x8E,0x07,0xDC, + 0xAD,0x0D,0xDC,0xA9,0x19,0x8D,0x0F,0xDC,0xA5,0x01,0x49, + 0x08,0x85,0x01,0x29,0x08,0x60,0x38,0x66,0xB6,0x30,0x3C, + 0xA5,0xA8,0xD0,0x12,0xA9,0x10,0xA2,0x01,0x20,0xB1,0xFB, + 0xD0,0x2F,0xE6,0xA8,0xA5,0xB6,0x10,0x29,0x4C,0x57,0xFC, + 0xA5,0xA9,0xD0,0x09,0x20,0xAD,0xFB,0xD0,0x1D,0xE6,0xA9, + 0xD0,0x19,0x20,0xA6,0xFB,0xD0,0x14,0xA5,0xA4,0x49,0x01, + 0x85,0xA4,0xF0,0x0F,0xA5,0xBD,0x49,0x01,0x85,0xBD,0x29, + 0x01,0x45,0x9B,0x85,0x9B,0x4C,0xBC,0xFE,0x46,0xBD,0xC6, + 0xA3,0xA5,0xA3,0xF0,0x3A,0x10,0xF3,0x20,0x97,0xFB,0x58, + 0xA5,0xA5,0xF0,0x12,0xA2,0x00,0x86,0xD7,0xC6,0xA5,0xA6, + 0xBE,0xE0,0x02,0xD0,0x02,0x09,0x80,0x85,0xBD,0xD0,0xD9, + 0x20,0xD1,0xFC,0x90,0x0A,0xD0,0x91,0xE6,0xAD,0xA5,0xD7, + 0x85,0xBD,0xB0,0xCA,0xA0,0x00,0xB1,0xAC,0x85,0xBD,0x45, + 0xD7,0x85,0xD7,0x20,0xDB,0xFC,0xD0,0xBB,0xA5,0x9B,0x49, + 0x01,0x85,0xBD,0x4C,0xBC,0xFE,0xC6,0xBE,0xD0,0x03,0x20, + 0xCA,0xFC,0xA9,0x50,0x85,0xA7,0xA2,0x08,0x78,0x20,0xBD, + 0xFC,0xD0,0xEA,0xA9,0x78,0x20,0xAF,0xFB,0xD0,0xE3,0xC6, + 0xA7,0xD0,0xDF,0x20,0x97,0xFB,0xC6,0xAB,0x10,0xD8,0xA2, + 0x0A,0x20,0xBD,0xFC,0x58,0xE6,0xAB,0xA5,0xBE,0xF0,0x30, + 0x20,0x8E,0xFB,0xA2,0x09,0x86,0xA5,0x86,0xB6,0xD0,0x83, + 0x08,0x78,0xAD,0x11,0xD0,0x09,0x10,0x8D,0x11,0xD0,0x20, + 0xCA,0xFC,0xA9,0x7F,0x8D,0x0D,0xDC,0x20,0xDD,0xFD,0xAD, + 0xA0,0x02,0xF0,0x09,0x8D,0x15,0x03,0xAD,0x9F,0x02,0x8D, + 0x14,0x03,0x28,0x60,0x20,0x93,0xFC,0xF0,0x97,0xBD,0x93, + 0xFD,0x8D,0x14,0x03,0xBD,0x94,0xFD,0x8D,0x15,0x03,0x60, + 0xA5,0x01,0x09,0x20,0x85,0x01,0x60,0x38,0xA5,0xAC,0xE5, + 0xAE,0xA5,0xAD,0xE5,0xAF,0x60,0xE6,0xAC,0xD0,0x02,0xE6, + 0xAD,0x60,0xA2,0xFF,0x78,0x9A,0xD8,0x20,0x02,0xFD,0xD0, + 0x03,0x6C,0x00,0x80,0x8E,0x16,0xD0,0x20,0xA3,0xFD,0x20, + 0x50,0xFD,0x20,0x15,0xFD,0x20,0x5B,0xFF,0x58,0x6C,0x00, + 0xA0,0xA2,0x05,0xBD,0x0F,0xFD,0xDD,0x03,0x80,0xD0,0x03, + 0xCA,0xD0,0xF5,0x60,0xC3,0xC2,0xCD,0x38,0x30,0xA2,0x30, + 0xA0,0xFD,0x18,0x86,0xC3,0x84,0xC4,0xA0,0x1F,0xB9,0x14, + 0x03,0xB0,0x02,0xB1,0xC3,0x91,0xC3,0x99,0x14,0x03,0x88, + 0x10,0xF1,0x60,0x31,0xEA,0x66,0xFE,0x47,0xFE,0x4A,0xF3, + 0x91,0xF2,0x0E,0xF2,0x50,0xF2,0x33,0xF3,0x57,0xF1,0xCA, + 0xF1,0xED,0xF6,0x3E,0xF1,0x2F,0xF3,0x66,0xFE,0xA5,0xF4, + 0xED,0xF5,0xA9,0x00,0xA8,0x99,0x02,0x00,0x99,0x00,0x02, + 0x99,0x00,0x03,0xC8,0xD0,0xF4,0xA2,0x3C,0xA0,0x03,0x86, + 0xB2,0x84,0xB3,0xA8,0xA9,0x03,0x85,0xC2,0xE6,0xC2,0xB1, + 0xC1,0xAA,0xA9,0x55,0x91,0xC1,0xD1,0xC1,0xD0,0x0F,0x2A, + 0x91,0xC1,0xD1,0xC1,0xD0,0x08,0x8A,0x91,0xC1,0xC8,0xD0, + 0xE8,0xF0,0xE4,0x98,0xAA,0xA4,0xC2,0x18,0x20,0x2D,0xFE, + 0xA9,0x08,0x8D,0x82,0x02,0xA9,0x04,0x8D,0x88,0x02,0x60, + 0x6A,0xFC,0xCD,0xFB,0x31,0xEA,0x2C,0xF9,0xA9,0x7F,0x8D, + 0x0D,0xDC,0x8D,0x0D,0xDD,0x8D,0x00,0xDC,0xA9,0x08,0x8D, + 0x0E,0xDC,0x8D,0x0E,0xDD,0x8D,0x0F,0xDC,0x8D,0x0F,0xDD, + 0xA2,0x00,0x8E,0x03,0xDC,0x8E,0x03,0xDD,0x8E,0x18,0xD4, + 0xCA,0x8E,0x02,0xDC,0xA9,0x07,0x8D,0x00,0xDD,0xA9,0x3F, + 0x8D,0x02,0xDD,0xA9,0xE7,0x85,0x01,0xA9,0x2F,0x85,0x00, + 0xAD,0xA6,0x02,0xF0,0x0A,0xA9,0x25,0x8D,0x04,0xDC,0xA9, + 0x40,0x4C,0xF3,0xFD,0xA9,0x95,0x8D,0x04,0xDC,0xA9,0x42, + 0x8D,0x05,0xDC,0x4C,0x6E,0xFF,0x85,0xB7,0x86,0xBB,0x84, + 0xBC,0x60,0x85,0xB8,0x86,0xBA,0x84,0xB9,0x60,0xA5,0xBA, + 0xC9,0x02,0xD0,0x0D,0xAD,0x97,0x02,0x48,0xA9,0x00,0x8D, + 0x97,0x02,0x68,0x60,0x85,0x9D,0xA5,0x90,0x05,0x90,0x85, + 0x90,0x60,0x8D,0x85,0x02,0x60,0x90,0x06,0xAE,0x83,0x02, + 0xAC,0x84,0x02,0x8E,0x83,0x02,0x8C,0x84,0x02,0x60,0x90, + 0x06,0xAE,0x81,0x02,0xAC,0x82,0x02,0x8E,0x81,0x02,0x8C, + 0x82,0x02,0x60,0x78,0x6C,0x18,0x03,0x48,0x8A,0x48,0x98, + 0x48,0xA9,0x7F,0x8D,0x0D,0xDD,0xAC,0x0D,0xDD,0x30,0x1C, + 0x20,0x02,0xFD,0xD0,0x03,0x6C,0x02,0x80,0x20,0xBC,0xF6, + 0x20,0xE1,0xFF,0xD0,0x0C,0x20,0x15,0xFD,0x20,0xA3,0xFD, + 0x20,0x18,0xE5,0x6C,0x02,0xA0,0x98,0x2D,0xA1,0x02,0xAA, + 0x29,0x01,0xF0,0x28,0xAD,0x00,0xDD,0x29,0xFB,0x05,0xB5, + 0x8D,0x00,0xDD,0xAD,0xA1,0x02,0x8D,0x0D,0xDD,0x8A,0x29, + 0x12,0xF0,0x0D,0x29,0x02,0xF0,0x06,0x20,0xD6,0xFE,0x4C, + 0x9D,0xFE,0x20,0x07,0xFF,0x20,0xBB,0xEE,0x4C,0xB6,0xFE, + 0x8A,0x29,0x02,0xF0,0x06,0x20,0xD6,0xFE,0x4C,0xB6,0xFE, + 0x8A,0x29,0x10,0xF0,0x03,0x20,0x07,0xFF,0xAD,0xA1,0x02, + 0x8D,0x0D,0xDD,0x68,0xA8,0x68,0xAA,0x68,0x40,0xC1,0x27, + 0x3E,0x1A,0xC5,0x11,0x74,0x0E,0xED,0x0C,0x45,0x06,0xF0, + 0x02,0x46,0x01,0xB8,0x00,0x71,0x00,0xAD,0x01,0xDD,0x29, + 0x01,0x85,0xA7,0xAD,0x06,0xDD,0xE9,0x1C,0x6D,0x99,0x02, + 0x8D,0x06,0xDD,0xAD,0x07,0xDD,0x6D,0x9A,0x02,0x8D,0x07, + 0xDD,0xA9,0x11,0x8D,0x0F,0xDD,0xAD,0xA1,0x02,0x8D,0x0D, + 0xDD,0xA9,0xFF,0x8D,0x06,0xDD,0x8D,0x07,0xDD,0x4C,0x59, + 0xEF,0xAD,0x95,0x02,0x8D,0x06,0xDD,0xAD,0x96,0x02,0x8D, + 0x07,0xDD,0xA9,0x11,0x8D,0x0F,0xDD,0xA9,0x12,0x4D,0xA1, + 0x02,0x8D,0xA1,0x02,0xA9,0xFF,0x8D,0x06,0xDD,0x8D,0x07, + 0xDD,0xAE,0x98,0x02,0x86,0xA8,0x60,0xAA,0xAD,0x96,0x02, + 0x2A,0xA8,0x8A,0x69,0xC8,0x8D,0x99,0x02,0x98,0x69,0x00, + 0x8D,0x9A,0x02,0x60,0xEA,0xEA,0x08,0x68,0x29,0xEF,0x48, + 0x48,0x8A,0x48,0x98,0x48,0xBA,0xBD,0x04,0x01,0x29,0x10, + 0xF0,0x03,0x6C,0x16,0x03,0x6C,0x14,0x03,0x20,0x18,0xE5, + 0xAD,0x12,0xD0,0xD0,0xFB,0xAD,0x19,0xD0,0x29,0x01,0x8D, + 0xA6,0x02,0x4C,0xDD,0xFD,0xA9,0x81,0x8D,0x0D,0xDC,0xAD, + 0x0E,0xDC,0x29,0x80,0x09,0x11,0x8D,0x0E,0xDC,0x4C,0x8E, + 0xEE,0x03,0x4C,0x5B,0xFF,0x4C,0xA3,0xFD,0x4C,0x50,0xFD, + 0x4C,0x15,0xFD,0x4C,0x1A,0xFD,0x4C,0x18,0xFE,0x4C,0xB9, + 0xED,0x4C,0xC7,0xED,0x4C,0x25,0xFE,0x4C,0x34,0xFE,0x4C, + 0x87,0xEA,0x4C,0x21,0xFE,0x4C,0x13,0xEE,0x4C,0xDD,0xED, + 0x4C,0xEF,0xED,0x4C,0xFE,0xED,0x4C,0x0C,0xED,0x4C,0x09, + 0xED,0x4C,0x07,0xFE,0x4C,0x00,0xFE,0x4C,0xF9,0xFD,0x6C, + 0x1A,0x03,0x6C,0x1C,0x03,0x6C,0x1E,0x03,0x6C,0x20,0x03, + 0x6C,0x22,0x03,0x6C,0x24,0x03,0x6C,0x26,0x03, + +#if APPLY_PATCHES + 0xD2,0x9E,0xF4, /* PATCH LOAD */ + 0XF2,0xDD,0xF5, /* PATCH SAVE */ +#else + 0x4C,0x9E,0xF4, /* LOAD */ + 0x4C,0xDD,0xF5, /* SAVE */ +#endif + + 0x4C,0xE4,0xF6,0x4C,0xDD,0xF6,0x6C, + 0x28,0x03,0x6C,0x2A,0x03,0x6C,0x2C,0x03,0x4C,0x9B,0xF6, + 0x4C,0x05,0xE5,0x4C,0x0A,0xE5,0x4C,0x00,0xE5,0x52,0x52, + 0x42,0x59,0x43,0xFE,0xE2,0xFC,0x48,0xFF, +}; + +//file auto-generated from characters.901225-01.bin by bin2h.exe +const size_t rom_characters_len = 4096; +const unsigned char PROGMEM rom_characters[4096]= +{ + 0x3C,0x66,0x6E,0x6E,0x60,0x62,0x3C,0x00,0x18,0x3C,0x66, + 0x7E,0x66,0x66,0x66,0x00,0x7C,0x66,0x66,0x7C,0x66,0x66, + 0x7C,0x00,0x3C,0x66,0x60,0x60,0x60,0x66,0x3C,0x00,0x78, + 0x6C,0x66,0x66,0x66,0x6C,0x78,0x00,0x7E,0x60,0x60,0x78, + 0x60,0x60,0x7E,0x00,0x7E,0x60,0x60,0x78,0x60,0x60,0x60, + 0x00,0x3C,0x66,0x60,0x6E,0x66,0x66,0x3C,0x00,0x66,0x66, + 0x66,0x7E,0x66,0x66,0x66,0x00,0x3C,0x18,0x18,0x18,0x18, + 0x18,0x3C,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0x6C,0x38,0x00, + 0x66,0x6C,0x78,0x70,0x78,0x6C,0x66,0x00,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7E,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63, + 0x63,0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x66,0x00,0x3C, + 0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x7C,0x66,0x66,0x7C, + 0x60,0x60,0x60,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x0E, + 0x00,0x7C,0x66,0x66,0x7C,0x78,0x6C,0x66,0x00,0x3C,0x66, + 0x60,0x3C,0x06,0x66,0x3C,0x00,0x7E,0x18,0x18,0x18,0x18, + 0x18,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00, + 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x63,0x63,0x63, + 0x6B,0x7F,0x77,0x63,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66, + 0x66,0x00,0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x00,0x7E, + 0x06,0x0C,0x18,0x30,0x60,0x7E,0x00,0x3C,0x30,0x30,0x30, + 0x30,0x30,0x3C,0x00,0x0C,0x12,0x30,0x7C,0x30,0x62,0xFC, + 0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x18, + 0x3C,0x7E,0x18,0x18,0x18,0x18,0x00,0x10,0x30,0x7F,0x7F, + 0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x00,0x66,0x66,0x66, + 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0xFF,0x66,0xFF,0x66, + 0x66,0x00,0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x62, + 0x66,0x0C,0x18,0x30,0x66,0x46,0x00,0x3C,0x66,0x3C,0x38, + 0x67,0x66,0x3F,0x00,0x06,0x0C,0x18,0x00,0x00,0x00,0x00, + 0x00,0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00,0x30,0x18, + 0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,0x66,0x3C,0xFF,0x3C, + 0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00, + 0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x60,0x00,0x3C, + 0x66,0x6E,0x76,0x66,0x66,0x3C,0x00,0x18,0x18,0x38,0x18, + 0x18,0x18,0x7E,0x00,0x3C,0x66,0x06,0x0C,0x30,0x60,0x7E, + 0x00,0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00,0x06,0x0E, + 0x1E,0x66,0x7F,0x06,0x06,0x00,0x7E,0x60,0x7C,0x06,0x06, + 0x66,0x3C,0x00,0x3C,0x66,0x60,0x7C,0x66,0x66,0x3C,0x00, + 0x7E,0x66,0x0C,0x18,0x18,0x18,0x18,0x00,0x3C,0x66,0x66, + 0x3C,0x66,0x66,0x3C,0x00,0x3C,0x66,0x66,0x3E,0x06,0x66, + 0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x00, + 0x00,0x18,0x00,0x00,0x18,0x18,0x30,0x0E,0x18,0x30,0x60, + 0x30,0x18,0x0E,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00, + 0x00,0x70,0x18,0x0C,0x06,0x0C,0x18,0x70,0x00,0x3C,0x66, + 0x06,0x0C,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF, + 0x00,0x00,0x00,0x08,0x1C,0x3E,0x7F,0x7F,0x1C,0x3E,0x00, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, + 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C, + 0x0C,0x00,0x00,0x00,0xE0,0xF0,0x38,0x18,0x18,0x18,0x18, + 0x1C,0x0F,0x07,0x00,0x00,0x00,0x18,0x18,0x38,0xF0,0xE0, + 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF, + 0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x03,0x07,0x0E, + 0x1C,0x38,0x70,0xE0,0xC0,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xFF,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x00, + 0x3C,0x7E,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00, + 0x00,0xFF,0xFF,0x00,0x36,0x7F,0x7F,0x7F,0x3E,0x1C,0x08, + 0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00, + 0x00,0x07,0x0F,0x1C,0x18,0x18,0xC3,0xE7,0x7E,0x3C,0x3C, + 0x7E,0xE7,0xC3,0x00,0x3C,0x7E,0x66,0x66,0x7E,0x3C,0x00, + 0x18,0x18,0x66,0x66,0x18,0x18,0x3C,0x00,0x06,0x06,0x06, + 0x06,0x06,0x06,0x06,0x06,0x08,0x1C,0x3E,0x7F,0x3E,0x1C, + 0x08,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18,0xC0, + 0xC0,0x30,0x30,0xC0,0xC0,0x30,0x30,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x00,0x00,0x03,0x3E,0x76,0x36,0x36, + 0x00,0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0, + 0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33,0x03, + 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00, + 0xCC,0xCC,0x33,0x33,0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0, + 0x80,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18, + 0x18,0x1F,0x1F,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x0F, + 0x0F,0x0F,0x0F,0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00, + 0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x1F,0x1F,0x18, + 0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0xF8, + 0xF8,0x18,0x18,0x18,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x07,0x07, + 0x07,0x07,0x07,0x07,0x07,0x07,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0, + 0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x18, + 0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, + 0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F, + 0x0F,0xC3,0x99,0x91,0x91,0x9F,0x99,0xC3,0xFF,0xE7,0xC3, + 0x99,0x81,0x99,0x99,0x99,0xFF,0x83,0x99,0x99,0x83,0x99, + 0x99,0x83,0xFF,0xC3,0x99,0x9F,0x9F,0x9F,0x99,0xC3,0xFF, + 0x87,0x93,0x99,0x99,0x99,0x93,0x87,0xFF,0x81,0x9F,0x9F, + 0x87,0x9F,0x9F,0x81,0xFF,0x81,0x9F,0x9F,0x87,0x9F,0x9F, + 0x9F,0xFF,0xC3,0x99,0x9F,0x91,0x99,0x99,0xC3,0xFF,0x99, + 0x99,0x99,0x81,0x99,0x99,0x99,0xFF,0xC3,0xE7,0xE7,0xE7, + 0xE7,0xE7,0xC3,0xFF,0xE1,0xF3,0xF3,0xF3,0xF3,0x93,0xC7, + 0xFF,0x99,0x93,0x87,0x8F,0x87,0x93,0x99,0xFF,0x9F,0x9F, + 0x9F,0x9F,0x9F,0x9F,0x81,0xFF,0x9C,0x88,0x80,0x94,0x9C, + 0x9C,0x9C,0xFF,0x99,0x89,0x81,0x81,0x91,0x99,0x99,0xFF, + 0xC3,0x99,0x99,0x99,0x99,0x99,0xC3,0xFF,0x83,0x99,0x99, + 0x83,0x9F,0x9F,0x9F,0xFF,0xC3,0x99,0x99,0x99,0x99,0xC3, + 0xF1,0xFF,0x83,0x99,0x99,0x83,0x87,0x93,0x99,0xFF,0xC3, + 0x99,0x9F,0xC3,0xF9,0x99,0xC3,0xFF,0x81,0xE7,0xE7,0xE7, + 0xE7,0xE7,0xE7,0xFF,0x99,0x99,0x99,0x99,0x99,0x99,0xC3, + 0xFF,0x99,0x99,0x99,0x99,0x99,0xC3,0xE7,0xFF,0x9C,0x9C, + 0x9C,0x94,0x80,0x88,0x9C,0xFF,0x99,0x99,0xC3,0xE7,0xC3, + 0x99,0x99,0xFF,0x99,0x99,0x99,0xC3,0xE7,0xE7,0xE7,0xFF, + 0x81,0xF9,0xF3,0xE7,0xCF,0x9F,0x81,0xFF,0xC3,0xCF,0xCF, + 0xCF,0xCF,0xCF,0xC3,0xFF,0xF3,0xED,0xCF,0x83,0xCF,0x9D, + 0x03,0xFF,0xC3,0xF3,0xF3,0xF3,0xF3,0xF3,0xC3,0xFF,0xFF, + 0xE7,0xC3,0x81,0xE7,0xE7,0xE7,0xE7,0xFF,0xEF,0xCF,0x80, + 0x80,0xCF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xE7,0xFF,0x99,0x99, + 0x99,0xFF,0xFF,0xFF,0xFF,0xFF,0x99,0x99,0x00,0x99,0x00, + 0x99,0x99,0xFF,0xE7,0xC1,0x9F,0xC3,0xF9,0x83,0xE7,0xFF, + 0x9D,0x99,0xF3,0xE7,0xCF,0x99,0xB9,0xFF,0xC3,0x99,0xC3, + 0xC7,0x98,0x99,0xC0,0xFF,0xF9,0xF3,0xE7,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xF3,0xE7,0xCF,0xCF,0xCF,0xE7,0xF3,0xFF,0xCF, + 0xE7,0xF3,0xF3,0xF3,0xE7,0xCF,0xFF,0xFF,0x99,0xC3,0x00, + 0xC3,0x99,0xFF,0xFF,0xFF,0xE7,0xE7,0x81,0xE7,0xE7,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xCF,0xFF,0xFF, + 0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xE7,0xE7,0xFF,0xFF,0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0xFF, + 0xC3,0x99,0x91,0x89,0x99,0x99,0xC3,0xFF,0xE7,0xE7,0xC7, + 0xE7,0xE7,0xE7,0x81,0xFF,0xC3,0x99,0xF9,0xF3,0xCF,0x9F, + 0x81,0xFF,0xC3,0x99,0xF9,0xE3,0xF9,0x99,0xC3,0xFF,0xF9, + 0xF1,0xE1,0x99,0x80,0xF9,0xF9,0xFF,0x81,0x9F,0x83,0xF9, + 0xF9,0x99,0xC3,0xFF,0xC3,0x99,0x9F,0x83,0x99,0x99,0xC3, + 0xFF,0x81,0x99,0xF3,0xE7,0xE7,0xE7,0xE7,0xFF,0xC3,0x99, + 0x99,0xC3,0x99,0x99,0xC3,0xFF,0xC3,0x99,0x99,0xC1,0xF9, + 0x99,0xC3,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xE7,0xFF,0xFF, + 0xFF,0xFF,0xE7,0xFF,0xFF,0xE7,0xE7,0xCF,0xF1,0xE7,0xCF, + 0x9F,0xCF,0xE7,0xF1,0xFF,0xFF,0xFF,0x81,0xFF,0x81,0xFF, + 0xFF,0xFF,0x8F,0xE7,0xF3,0xF9,0xF3,0xE7,0x8F,0xFF,0xC3, + 0x99,0xF9,0xF3,0xE7,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0x00, + 0x00,0xFF,0xFF,0xFF,0xF7,0xE3,0xC1,0x80,0x80,0xE3,0xC1, + 0xFF,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF, + 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xCF,0xCF,0xCF, + 0xCF,0xCF,0xCF,0xCF,0xCF,0xF3,0xF3,0xF3,0xF3,0xF3,0xF3, + 0xF3,0xF3,0xFF,0xFF,0xFF,0x1F,0x0F,0xC7,0xE7,0xE7,0xE7, + 0xE7,0xE3,0xF0,0xF8,0xFF,0xFF,0xFF,0xE7,0xE7,0xC7,0x0F, + 0x1F,0xFF,0xFF,0xFF,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x00, + 0x00,0x3F,0x1F,0x8F,0xC7,0xE3,0xF1,0xF8,0xFC,0xFC,0xF8, + 0xF1,0xE3,0xC7,0x8F,0x1F,0x3F,0x00,0x00,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFF,0xC3,0x81,0x81,0x81,0x81,0xC3,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0x00,0x00,0xFF,0xC9,0x80,0x80,0x80,0xC1,0xE3, + 0xF7,0xFF,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F,0xFF, + 0xFF,0xFF,0xF8,0xF0,0xE3,0xE7,0xE7,0x3C,0x18,0x81,0xC3, + 0xC3,0x81,0x18,0x3C,0xFF,0xC3,0x81,0x99,0x99,0x81,0xC3, + 0xFF,0xE7,0xE7,0x99,0x99,0xE7,0xE7,0xC3,0xFF,0xF9,0xF9, + 0xF9,0xF9,0xF9,0xF9,0xF9,0xF9,0xF7,0xE3,0xC1,0x80,0xC1, + 0xE3,0xF7,0xFF,0xE7,0xE7,0xE7,0x00,0x00,0xE7,0xE7,0xE7, + 0x3F,0x3F,0xCF,0xCF,0x3F,0x3F,0xCF,0xCF,0xE7,0xE7,0xE7, + 0xE7,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xFC,0xC1,0x89,0xC9, + 0xC9,0xFF,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F, + 0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3F,0x3F,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC, + 0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF, + 0xFF,0x33,0x33,0xCC,0xCC,0x00,0x01,0x03,0x07,0x0F,0x1F, + 0x3F,0x7F,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xE7, + 0xE7,0xE7,0xE0,0xE0,0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF, + 0xF0,0xF0,0xF0,0xF0,0xE7,0xE7,0xE7,0xE0,0xE0,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x07,0x07,0xE7,0xE7,0xE7,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xE0,0xE0, + 0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x00,0x00,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0x00,0x00,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7, + 0x07,0x07,0xE7,0xE7,0xE7,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0xF8, + 0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFC, + 0xFC,0xFC,0xFC,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x0F, + 0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF, + 0xE7,0xE7,0xE7,0x07,0x07,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F, + 0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0, + 0xF0,0xF0,0x3C,0x66,0x6E,0x6E,0x60,0x62,0x3C,0x00,0x00, + 0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00,0x00,0x60,0x60,0x7C, + 0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C, + 0x00,0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00, + 0x3C,0x66,0x7E,0x60,0x3C,0x00,0x00,0x0E,0x18,0x3E,0x18, + 0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, + 0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00, + 0x38,0x18,0x18,0x3C,0x00,0x00,0x06,0x00,0x06,0x06,0x06, + 0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00,0x00, + 0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F, + 0x7F,0x6B,0x63,0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x66, + 0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,0x00,0x00, + 0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66, + 0x3E,0x06,0x06,0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00, + 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00,0x00,0x18,0x7E, + 0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66, + 0x3E,0x00,0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00, + 0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00,0x00,0x00,0x66,0x3C, + 0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C, + 0x78,0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x3C,0x30, + 0x30,0x30,0x30,0x30,0x3C,0x00,0x0C,0x12,0x30,0x7C,0x30, + 0x62,0xFC,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, + 0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x00,0x10,0x30, + 0x7F,0x7F,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x00,0x66, + 0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0xFF,0x66, + 0xFF,0x66,0x66,0x00,0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18, + 0x00,0x62,0x66,0x0C,0x18,0x30,0x66,0x46,0x00,0x3C,0x66, + 0x3C,0x38,0x67,0x66,0x3F,0x00,0x06,0x0C,0x18,0x00,0x00, + 0x00,0x00,0x00,0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, + 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,0x66,0x3C, + 0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00, + 0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x18,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x60, + 0x00,0x3C,0x66,0x6E,0x76,0x66,0x66,0x3C,0x00,0x18,0x18, + 0x38,0x18,0x18,0x18,0x7E,0x00,0x3C,0x66,0x06,0x0C,0x30, + 0x60,0x7E,0x00,0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, + 0x06,0x0E,0x1E,0x66,0x7F,0x06,0x06,0x00,0x7E,0x60,0x7C, + 0x06,0x06,0x66,0x3C,0x00,0x3C,0x66,0x60,0x7C,0x66,0x66, + 0x3C,0x00,0x7E,0x66,0x0C,0x18,0x18,0x18,0x18,0x00,0x3C, + 0x66,0x66,0x3C,0x66,0x66,0x3C,0x00,0x3C,0x66,0x66,0x3E, + 0x06,0x66,0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x00, + 0x00,0x00,0x00,0x18,0x00,0x00,0x18,0x18,0x30,0x0E,0x18, + 0x30,0x60,0x30,0x18,0x0E,0x00,0x00,0x00,0x7E,0x00,0x7E, + 0x00,0x00,0x00,0x70,0x18,0x0C,0x06,0x0C,0x18,0x70,0x00, + 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0x00,0x00,0x00,0x18,0x3C,0x66,0x7E,0x66,0x66, + 0x66,0x00,0x7C,0x66,0x66,0x7C,0x66,0x66,0x7C,0x00,0x3C, + 0x66,0x60,0x60,0x60,0x66,0x3C,0x00,0x78,0x6C,0x66,0x66, + 0x66,0x6C,0x78,0x00,0x7E,0x60,0x60,0x78,0x60,0x60,0x7E, + 0x00,0x7E,0x60,0x60,0x78,0x60,0x60,0x60,0x00,0x3C,0x66, + 0x60,0x6E,0x66,0x66,0x3C,0x00,0x66,0x66,0x66,0x7E,0x66, + 0x66,0x66,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, + 0x1E,0x0C,0x0C,0x0C,0x0C,0x6C,0x38,0x00,0x66,0x6C,0x78, + 0x70,0x78,0x6C,0x66,0x00,0x60,0x60,0x60,0x60,0x60,0x60, + 0x7E,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x00,0x66, + 0x76,0x7E,0x7E,0x6E,0x66,0x66,0x00,0x3C,0x66,0x66,0x66, + 0x66,0x66,0x3C,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x60, + 0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x0E,0x00,0x7C,0x66, + 0x66,0x7C,0x78,0x6C,0x66,0x00,0x3C,0x66,0x60,0x3C,0x06, + 0x66,0x3C,0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00, + 0x66,0x66,0x66,0x66,0x66,0x66,0x3C,0x00,0x66,0x66,0x66, + 0x66,0x66,0x3C,0x18,0x00,0x63,0x63,0x63,0x6B,0x7F,0x77, + 0x63,0x00,0x66,0x66,0x3C,0x18,0x3C,0x66,0x66,0x00,0x66, + 0x66,0x66,0x3C,0x18,0x18,0x18,0x00,0x7E,0x06,0x0C,0x18, + 0x30,0x60,0x7E,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18, + 0x18,0xC0,0xC0,0x30,0x30,0xC0,0xC0,0x30,0x30,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x33,0x33,0xCC,0xCC,0x33, + 0x33,0xCC,0xCC,0x33,0x99,0xCC,0x66,0x33,0x99,0xCC,0x66, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0, + 0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xC0,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33, + 0x33,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00, + 0x00,0x00,0xCC,0xCC,0x33,0x33,0xCC,0x99,0x33,0x66,0xCC, + 0x99,0x33,0x66,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, + 0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18,0x00,0x00,0x00, + 0x00,0x0F,0x0F,0x0F,0x0F,0x18,0x18,0x18,0x1F,0x1F,0x00, + 0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x1F, + 0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18,0x18,0x18, + 0x18,0xF8,0xF8,0x18,0x18,0x18,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0, + 0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0xFF,0xFF,0x00, + 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01, + 0x03,0x06,0x6C,0x78,0x70,0x60,0x00,0x00,0x00,0x00,0x00, + 0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00, + 0x00,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,0xF0,0xF0, + 0xF0,0xF0,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x0F, + 0x0F,0x0F,0x0F,0xC3,0x99,0x91,0x91,0x9F,0x99,0xC3,0xFF, + 0xFF,0xFF,0xC3,0xF9,0xC1,0x99,0xC1,0xFF,0xFF,0x9F,0x9F, + 0x83,0x99,0x99,0x83,0xFF,0xFF,0xFF,0xC3,0x9F,0x9F,0x9F, + 0xC3,0xFF,0xFF,0xF9,0xF9,0xC1,0x99,0x99,0xC1,0xFF,0xFF, + 0xFF,0xC3,0x99,0x81,0x9F,0xC3,0xFF,0xFF,0xF1,0xE7,0xC1, + 0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,0xC1,0x99,0x99,0xC1,0xF9, + 0x83,0xFF,0x9F,0x9F,0x83,0x99,0x99,0x99,0xFF,0xFF,0xE7, + 0xFF,0xC7,0xE7,0xE7,0xC3,0xFF,0xFF,0xF9,0xFF,0xF9,0xF9, + 0xF9,0xF9,0xC3,0xFF,0x9F,0x9F,0x93,0x87,0x93,0x99,0xFF, + 0xFF,0xC7,0xE7,0xE7,0xE7,0xE7,0xC3,0xFF,0xFF,0xFF,0x99, + 0x80,0x80,0x94,0x9C,0xFF,0xFF,0xFF,0x83,0x99,0x99,0x99, + 0x99,0xFF,0xFF,0xFF,0xC3,0x99,0x99,0x99,0xC3,0xFF,0xFF, + 0xFF,0x83,0x99,0x99,0x83,0x9F,0x9F,0xFF,0xFF,0xC1,0x99, + 0x99,0xC1,0xF9,0xF9,0xFF,0xFF,0x83,0x99,0x9F,0x9F,0x9F, + 0xFF,0xFF,0xFF,0xC1,0x9F,0xC3,0xF9,0x83,0xFF,0xFF,0xE7, + 0x81,0xE7,0xE7,0xE7,0xF1,0xFF,0xFF,0xFF,0x99,0x99,0x99, + 0x99,0xC1,0xFF,0xFF,0xFF,0x99,0x99,0x99,0xC3,0xE7,0xFF, + 0xFF,0xFF,0x9C,0x94,0x80,0xC1,0xC9,0xFF,0xFF,0xFF,0x99, + 0xC3,0xE7,0xC3,0x99,0xFF,0xFF,0xFF,0x99,0x99,0x99,0xC1, + 0xF3,0x87,0xFF,0xFF,0x81,0xF3,0xE7,0xCF,0x81,0xFF,0xC3, + 0xCF,0xCF,0xCF,0xCF,0xCF,0xC3,0xFF,0xF3,0xED,0xCF,0x83, + 0xCF,0x9D,0x03,0xFF,0xC3,0xF3,0xF3,0xF3,0xF3,0xF3,0xC3, + 0xFF,0xFF,0xE7,0xC3,0x81,0xE7,0xE7,0xE7,0xE7,0xFF,0xEF, + 0xCF,0x80,0x80,0xCF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xE7,0xFF, + 0x99,0x99,0x99,0xFF,0xFF,0xFF,0xFF,0xFF,0x99,0x99,0x00, + 0x99,0x00,0x99,0x99,0xFF,0xE7,0xC1,0x9F,0xC3,0xF9,0x83, + 0xE7,0xFF,0x9D,0x99,0xF3,0xE7,0xCF,0x99,0xB9,0xFF,0xC3, + 0x99,0xC3,0xC7,0x98,0x99,0xC0,0xFF,0xF9,0xF3,0xE7,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xF3,0xE7,0xCF,0xCF,0xCF,0xE7,0xF3, + 0xFF,0xCF,0xE7,0xF3,0xF3,0xF3,0xE7,0xCF,0xFF,0xFF,0x99, + 0xC3,0x00,0xC3,0x99,0xFF,0xFF,0xFF,0xE7,0xE7,0x81,0xE7, + 0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xCF, + 0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFC,0xF9,0xF3,0xE7,0xCF, + 0x9F,0xFF,0xC3,0x99,0x91,0x89,0x99,0x99,0xC3,0xFF,0xE7, + 0xE7,0xC7,0xE7,0xE7,0xE7,0x81,0xFF,0xC3,0x99,0xF9,0xF3, + 0xCF,0x9F,0x81,0xFF,0xC3,0x99,0xF9,0xE3,0xF9,0x99,0xC3, + 0xFF,0xF9,0xF1,0xE1,0x99,0x80,0xF9,0xF9,0xFF,0x81,0x9F, + 0x83,0xF9,0xF9,0x99,0xC3,0xFF,0xC3,0x99,0x9F,0x83,0x99, + 0x99,0xC3,0xFF,0x81,0x99,0xF3,0xE7,0xE7,0xE7,0xE7,0xFF, + 0xC3,0x99,0x99,0xC3,0x99,0x99,0xC3,0xFF,0xC3,0x99,0x99, + 0xC1,0xF9,0x99,0xC3,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xE7, + 0xFF,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xE7,0xE7,0xCF,0xF1, + 0xE7,0xCF,0x9F,0xCF,0xE7,0xF1,0xFF,0xFF,0xFF,0x81,0xFF, + 0x81,0xFF,0xFF,0xFF,0x8F,0xE7,0xF3,0xF9,0xF3,0xE7,0x8F, + 0xFF,0xC3,0x99,0xF9,0xF3,0xE7,0xFF,0xE7,0xFF,0xFF,0xFF, + 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xE7,0xC3,0x99,0x81,0x99, + 0x99,0x99,0xFF,0x83,0x99,0x99,0x83,0x99,0x99,0x83,0xFF, + 0xC3,0x99,0x9F,0x9F,0x9F,0x99,0xC3,0xFF,0x87,0x93,0x99, + 0x99,0x99,0x93,0x87,0xFF,0x81,0x9F,0x9F,0x87,0x9F,0x9F, + 0x81,0xFF,0x81,0x9F,0x9F,0x87,0x9F,0x9F,0x9F,0xFF,0xC3, + 0x99,0x9F,0x91,0x99,0x99,0xC3,0xFF,0x99,0x99,0x99,0x81, + 0x99,0x99,0x99,0xFF,0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3, + 0xFF,0xE1,0xF3,0xF3,0xF3,0xF3,0x93,0xC7,0xFF,0x99,0x93, + 0x87,0x8F,0x87,0x93,0x99,0xFF,0x9F,0x9F,0x9F,0x9F,0x9F, + 0x9F,0x81,0xFF,0x9C,0x88,0x80,0x94,0x9C,0x9C,0x9C,0xFF, + 0x99,0x89,0x81,0x81,0x91,0x99,0x99,0xFF,0xC3,0x99,0x99, + 0x99,0x99,0x99,0xC3,0xFF,0x83,0x99,0x99,0x83,0x9F,0x9F, + 0x9F,0xFF,0xC3,0x99,0x99,0x99,0x99,0xC3,0xF1,0xFF,0x83, + 0x99,0x99,0x83,0x87,0x93,0x99,0xFF,0xC3,0x99,0x9F,0xC3, + 0xF9,0x99,0xC3,0xFF,0x81,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7, + 0xFF,0x99,0x99,0x99,0x99,0x99,0x99,0xC3,0xFF,0x99,0x99, + 0x99,0x99,0x99,0xC3,0xE7,0xFF,0x9C,0x9C,0x9C,0x94,0x80, + 0x88,0x9C,0xFF,0x99,0x99,0xC3,0xE7,0xC3,0x99,0x99,0xFF, + 0x99,0x99,0x99,0xC3,0xE7,0xE7,0xE7,0xFF,0x81,0xF9,0xF3, + 0xE7,0xCF,0x9F,0x81,0xFF,0xE7,0xE7,0xE7,0x00,0x00,0xE7, + 0xE7,0xE7,0x3F,0x3F,0xCF,0xCF,0x3F,0x3F,0xCF,0xCF,0xE7, + 0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xCC,0xCC,0x33,0x33, + 0xCC,0xCC,0x33,0x33,0xCC,0x66,0x33,0x99,0xCC,0x66,0x33, + 0x99,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F, + 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x3F,0x3F,0x33,0x33,0xCC,0xCC,0x33,0x33, + 0xCC,0xCC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFF, + 0xFF,0xFF,0xFF,0x33,0x33,0xCC,0xCC,0x33,0x66,0xCC,0x99, + 0x33,0x66,0xCC,0x99,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFC,0xE7,0xE7,0xE7,0xE0,0xE0,0xE7,0xE7,0xE7,0xFF,0xFF, + 0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xE7,0xE7,0xE7,0xE0,0xE0, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x07,0xE7,0xE7,0xE7, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF, + 0xE0,0xE0,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x00,0x00,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xE7,0xE7,0xE7,0xE7, + 0xE7,0xE7,0x07,0x07,0xE7,0xE7,0xE7,0x3F,0x3F,0x3F,0x3F, + 0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F, + 0x1F,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, + 0xFE,0xFC,0xF9,0x93,0x87,0x8F,0x9F,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF, + 0xFF,0xFF,0xE7,0xE7,0xE7,0x07,0x07,0xFF,0xFF,0xFF,0x0F, + 0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F, + 0xF0,0xF0,0xF0,0xF0, +}; diff --git a/MCUME_teensy/teensy64/roms.h b/MCUME_teensy/teensy64/roms.h new file mode 100755 index 0000000..5722277 --- /dev/null +++ b/MCUME_teensy/teensy64/roms.h @@ -0,0 +1,10 @@ +#ifndef Teensy64_roms_h_ +#define Teensy64_roms_h_ + +#define APPLY_PATCHES 1 + +extern const unsigned char rom_basic[8192]; +extern const unsigned char rom_kernal[8192]; +extern const unsigned char rom_characters[4096]; + +#endif \ No newline at end of file diff --git a/MCUME_teensy/teensy64/settings.h b/MCUME_teensy/teensy64/settings.h new file mode 100755 index 0000000..014f245 --- /dev/null +++ b/MCUME_teensy/teensy64/settings.h @@ -0,0 +1,62 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef settings_h_ +#define settings_h_ + +#ifndef VGA +#define VGA 0 //use 0 for ILI9341 Display +#endif + +#ifndef PS2KEYBOARD +#define PS2KEYBOARD 0 //Use 0 for USB-HOST +#endif + + +//Note: PAL/NTSC are EMULATED - This is not the real videomode! +#ifndef PAL +#define PAL 1 //use 0 for NTSC +#endif + +#ifndef FASTBOOT +#define FASTBOOT 1 //0 to disable fastboot +#endif + + +#define EXACTTIMINGDURATION 600ul //ms exact timing after IEC-BUS activity + + + +#endif diff --git a/MCUME_teensy/teensy64/sid.cpp b/MCUME_teensy/teensy64/sid.cpp new file mode 100644 index 0000000..76ac568 --- /dev/null +++ b/MCUME_teensy/teensy64/sid.cpp @@ -0,0 +1,49 @@ +/* + Arduino SID + Copyright (c) 2015 Frank Bösing + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this library. If not, see . + + Diese Bibliothek ist freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + Diese Bibliothek wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + + */ + +#include "reSID/envelope.cpp" +#include "reSID/extfilt.cpp" +#include "reSID/filter.cpp" +#include "reSID/pot.cpp" +#include "reSID/version.cpp" +#include "reSID/voice.cpp" + + +#include "reSID/wave6581__ST.cpp" +#include "reSID/wave6581_P_T.cpp" +#include "reSID/wave6581_PS_.cpp" +#include "reSID/wave6581_PST.cpp" + +/* +#include "reSID/wave8580__ST.cc" +#include "reSID/wave8580_P_T.cc" +#include "reSID/wave8580_PS_.cc" +#include "reSID/wave8580_PST.cc" +*/ +#include "reSID/wave.cpp" + +#include "reSID/sid.cpp" diff --git a/MCUME_teensy/teensy64/teensy64.ino b/MCUME_teensy/teensy64/teensy64.ino new file mode 100644 index 0000000..269725c --- /dev/null +++ b/MCUME_teensy/teensy64/teensy64.ino @@ -0,0 +1,294 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +//extern "C" { +#include "c64.h" +//} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +volatile int16_t mClick=0; +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } + emu_Input(mClick); + if (mClick) { + mClick = 0; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif + + diff --git a/MCUME_teensy/teensy64/tft_t_dma.cpp b/MCUME_teensy/teensy64/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensy64/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensy64/tft_t_dma_config.h b/MCUME_teensy/teensy64/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensy64/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensy64/util.cpp b/MCUME_teensy/teensy64/util.cpp new file mode 100755 index 0000000..5eaf921 --- /dev/null +++ b/MCUME_teensy/teensy64/util.cpp @@ -0,0 +1,71 @@ +/* +Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ +#include +#include +#include "util.h" + +//Attention, don't use WFI-instruction - the CPU does not count cycles during sleep +void enableCycleCounter(void) { + +} + +extern "C" volatile uint32_t systick_millis_count; +void mySystick_isr(void) { systick_millis_count++; } +void myUnused_isr(void) {}; + +void disableEventResponder(void) { +} + +static float setDACFreq(float freq) { + + return (float)0; +} + +float setAudioSampleFreq(float freq) { + int f=0; + return f; +} + +void setAudioOff(void) { + +} + +void setAudioOn(void) { + +} + +void listInterrupts() { + +} \ No newline at end of file diff --git a/MCUME_teensy/teensy64/util.h b/MCUME_teensy/teensy64/util.h new file mode 100755 index 0000000..f8abda0 --- /dev/null +++ b/MCUME_teensy/teensy64/util.h @@ -0,0 +1,60 @@ +/* +Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef _UTIL_C64H_ +#define _UTIL_C64H_ + +#include "Teensy64.h" + +void disableEventResponder(void); + +void enableCycleCounter(void); +inline unsigned fbmillis(void) __attribute__((always_inline)); +inline unsigned fbmicros(void) __attribute__((always_inline)); +inline unsigned fbnanos(void) __attribute__((always_inline)); + + +unsigned fbmillis(void) { return (ARM_DWT_CYCCNT * (1000.0/F_CPU)); } +unsigned fbmicros(void) { return (ARM_DWT_CYCCNT * (1000000.0/F_CPU)); } +unsigned fbnanos(void) { return (ARM_DWT_CYCCNT * (1000000000.0 / F_CPU)); } + +float setAudioSampleFreq(float freq); +void setAudioOff(void); +void setAudioOn(void); +void listInterrupts(); + + + +#endif \ No newline at end of file diff --git a/MCUME_teensy/teensy64/vic.cpp b/MCUME_teensy/teensy64/vic.cpp new file mode 100644 index 0000000..8d6f6ed --- /dev/null +++ b/MCUME_teensy/teensy64/vic.cpp @@ -0,0 +1,2152 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +/* + TODOs: + - Fix Bugs.. + - FLD - (OK 08/17) test this more.. + - Sprite Stretching (requires "MOBcounter") + - BA Signal -> CPU + - xFLI + - ... + - DMA Delay (?) - needs partial rewrite (idle - > badline in middle of line. Is the 3.6 fast enough??) + - optimize more +*/ + + +#include "Teensy64.h" +#include "vic.h" +#include +#include +#include + +#define min(a, b) (((a) < (b)) ? (a) : (b)) +#define max(a, b) (((a) > (b)) ? (a) : (b)) + +#define PALETTE(r,g,b) (RGBVAL16(r,g,b)) //(((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3)) +#include "vic_palette.h" + + + +#define BORDER (240-200)/2 +#define SCREEN_HEIGHT (200+2*BORDER) +#define SCREEN_WIDTH 320 +//#define LINE_MEM_WIDTH 320 +#define FIRSTDISPLAYLINE ( 51 - BORDER ) +#define LASTDISPLAYLINE ( 250 + BORDER ) +#define BORDER_LEFT 0 +#define BORDER_RIGHT 0 + +typedef uint16_t tpixel; + +#define MAXCYCLESSPRITES0_2 3 +#define MAXCYCLESSPRITES3_7 5 +#define MAXCYCLESSPRITES (MAXCYCLESSPRITES0_2 + MAXCYCLESSPRITES3_7) + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +inline __attribute__((always_inline)) +void fastFillLine(tpixel * p, const tpixel * pe, const uint16_t col, uint16_t * spl); +inline __attribute__((always_inline)) +void fastFillLineNoSprites(tpixel * p, const tpixel * pe, const uint16_t col); + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +#define SPRITENUM(data) (1 << ((data >> 8) & 0x07)) +#define CHARSETPTR() cpu.vic.charsetPtr = cpu.vic.charsetPtrBase + cpu.vic.rc; +#define CYCLES(x) {if (cpu.vic.badline) {cia_clockt(x);} else {cpu_clock(x);} } + +#define BADLINE(x) {if (cpu.vic.badline) { \ + cpu.vic.lineMemChr[x] = cpu.RAM[cpu.vic.videomatrix + vc + x]; \ + cpu.vic.lineMemCol[x] = cpu.vic.COLORRAM[vc + x]; \ + cia1_clock(1); \ + cia2_clock(1); \ + } else { \ + cpu_clock(1); \ + } \ + }; + +#define SPRITEORFIXEDCOLOR() \ + sprite = *spl++; \ + if (sprite) { \ + *p++ = cpu.vic.palette[sprite & 0x0f]; \ + } else { \ + *p++ = col; \ + } + + +#if 0 +#define PRINTOVERFLOW \ + if (p>pe) { \ + Serial.print("VIC overflow Mode "); \ + Serial.println(mode); \ + } + +#define PRINTOVERFLOWS \ + if (p>pe) { \ + Serial.print("VIC overflow (Sprite) Mode "); \ + Serial.println(mode); \ + } +#else +#define PRINTOVERFLOW +#define PRINTOVERFLOWS +#endif + +/*****************************************************************************************************/ +void mode0 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + // Standard-Textmodus(ECM/BMM/MCM=0/0/0) + /* + Standard-Textmodus (ECM / BMM / MCM = 0/0/0) + In diesem Modus (wie in allen Textmodi) liest der VIC aus der videomatrix 8-Bit-Zeichenzeiger, + die die Adresse der Punktmatrix des Zeichens im Zeichengenerator angibt. Damit ist ein Zeichensatz + von 256 Zeichen verfügbar, die jeweils aus 8×8 Pixeln bestehen, die in 8 aufeinanderfolgenden Bytes + im Zeichengenerator abgelegt sind. Mit den Bits VM10-13 und CB11-13 aus Register $d018 lassen sich + videomatrix und Zeichengenerator im Speicher verschieben. Im Standard-Textmodus entspricht jedes Bit + im Zeichengenerator direkt einem Pixel auf dem Bildschirm. Die Vordergrundfarbe ist für jedes Zeichen + im Farbnibble aus der videomatrix angegeben, die Hintergrundfarbe wird global durch Register $d021 festgelegt. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | + | "0": Hintergrundfarbe 0 ($d021) | + | "1": Farbe aus Bits 8-11 der c-Daten | + +---------------------------------------+ + + */ + + uint8_t chr, pixel; + uint16_t fgcol; + uint16_t bgcol; + uint16_t x = 0; + + CHARSETPTR(); + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + fgcol = cpu.vic.lineMemCol[x]; + x++; + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + int spritepixel = sprite & 0x0f; + + if (sprite & 0x4000) { // Sprite: Hinter Text MDP = 1 + if (chr & 0x80) { + cpu.vic.fgcollision |= spritenum; + pixel = fgcol; + } else { + pixel = spritepixel; + } + } else { // Sprite: Vor Text //MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; + pixel = spritepixel; + } + } else { // Kein Sprite + pixel = (chr & 0x80) ? fgcol : cpu.vic.B0C; + } + + *p++ = cpu.vic.palette[pixel]; + chr = chr << 1; + + } + } while (p < pe); + PRINTOVERFLOWS + } else { //Keine Sprites + + while (p < pe - 8) { + + BADLINE(x) + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + bgcol = cpu.vic.colors[1]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + + while (p < pe) { + + BADLINE(x) + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + bgcol = cpu.vic.colors[1]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +}; + +/*****************************************************************************************************/ +void mode1 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Multicolor-Textmodus (ECM/BMM/MCM=0/0/1) + Dieser Modus ermöglicht es, auf Kosten der horizontalen Auflösung vierfarbige Zeichen darzustellen. + Ist Bit 11 der c-Daten Null, wird das Zeichen wie im Standard-Textmodus dargestellt, wobei aber nur die + Farben 0-7 für den Vordergrund zur Verfügung stehen. Ist Bit 11 gesetzt, bilden jeweils zwei horizontal + benachbarte Bits der Punktmatrix ein Pixel. Dadurch ist die Auflösung des Zeichens auf 4×8 reduziert + (die Pixel sind doppelt so breit, die Gesamtbreite der Zeichen ändert sich also nicht). + Interessant ist, daß nicht nur die Bitkombination „00”, sondern auch „01” für die Spritepriorität + und -kollisionserkennung zum "Hintergrund" gezählt wird. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | MC-Flag = 0 + | "0": Hintergrundfarbe 0 ($d021) | + | "1": Farbe aus Bits 8-10 der c-Daten | + +---------------------------------------+ + | 4 Pixel (2 Bit/Pixel) | + | | + | "00": Hintergrundfarbe 0 ($d021) | MC-Flag = 1 + | "01": Hintergrundfarbe 1 ($d022) | + | "10": Hintergrundfarbe 2 ($d023) | + | "11": Farbe aus Bits 8-10 der c-Daten | + +---------------------------------------+ + + */ + + // POKE 53270,PEEK(53270) OR 16 + // poke 53270,peek(53270) or 16 + + uint16_t bgcol, fgcol, pixel; + uint16_t colors[4]; + uint8_t chr; + uint8_t x = 0; + + CHARSETPTR(); + + if (cpu.vic.lineHasSprites) { + + colors[0] = cpu.vic.B0C; + + do { + + if (cpu.vic.idle) { + cpu_clock(1); + fgcol = colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + fgcol = cpu.vic.lineMemCol[x]; + colors[1] = cpu.vic.R[0x22]; + colors[2] = cpu.vic.R[0x23]; + colors[3] = fgcol & 0x07; + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + } + + x++; + + if ((fgcol & 0x08) == 0) { //Zeichen ist HIRES + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergrund, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[3]; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = (chr >> 7) ? colors[3] : colors[0]; + } + + *p++ = cpu.vic.palette[pixel]; + + chr = chr << 1; + } + + } else {//Zeichen ist MULTICOLOR + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + int c = (chr >> 6) & 0x03; + chr = chr << 2; + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = colors[c]; + + } + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl++; + + //Das gleiche nochmal für das nächste Pixel + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = colors[c]; + } + *p++ = cpu.vic.palette[pixel]; + + } + + } + + } while (p < pe); + PRINTOVERFLOWS + } else { //Keine Sprites + + while (p < pe - 8) { + + int c; + + bgcol = cpu.vic.colors[1]; + colors[0] = bgcol; + + if (cpu.vic.idle) { + cpu_clock(1); + c = colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + colors[1] = cpu.vic.colors[2]; + colors[2] = cpu.vic.colors[3]; + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + c = cpu.vic.lineMemCol[x]; + } + + x++; + + if ((c & 0x08) == 0) { //Zeichen ist HIRES + fgcol = cpu.vic.palette[c & 0x07]; + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + } else {//Zeichen ist MULTICOLOR + + colors[3] = cpu.vic.palette[c & 0x07]; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr ) & 0x03]; *p++ = pixel; *p++ = pixel; + } + + }; + + while (p < pe) { + + int c; + + bgcol = cpu.vic.colors[1]; + colors[0] = bgcol; + + if (cpu.vic.idle) { + cpu_clock(1); + c = colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + colors[1] = cpu.vic.colors[2]; + colors[2] = cpu.vic.colors[3]; + + chr = cpu.vic.charsetPtr[cpu.vic.lineMemChr[x] * 8]; + c = cpu.vic.lineMemCol[x]; + } + + x++; + + if ((c & 0x08) == 0) { //Zeichen ist HIRES + fgcol = cpu.vic.palette[c & 0x07]; + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + } else {//Zeichen ist MULTICOLOR + + colors[3] = cpu.vic.palette[c & 0x07]; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr ) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; + } + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} + +/*****************************************************************************************************/ +void mode2 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Standard-Bitmap-Modus (ECM / BMM / MCM = 0/1/0) ("HIRES") + In diesem Modus (wie in allen Bitmap-Modi) liest der VIC die Grafikdaten aus einer 320×200-Bitmap, + in der jedes Bit direkt einem Punkt auf dem Bildschirm entspricht. Die Daten aus der videomatrix + werden für die Farbinformation benutzt. Da die videomatrix weiterhin nur eine 40×25-Matrix ist, + können die Farben nur für Blöcke von 8×8 Pixeln individuell bestimmt werden (also eine Art YC-8:1-Format). + Da die Entwickler des VIC-II den Bitmap-Modus mit sowenig zusätzlichem Schaltungsaufwand wie möglich realisieren wollten + (der VIC-I hatte noch keinen Bitmap-Modus), ist die Bitmap etwas ungewöhnlich im Speicher abgelegt: + Im Gegensatz zu modernen Videochips, die die Bitmap linear aus dem Speicher lesen, bilden beim VIC jeweils 8 aufeinanderfolgende Bytes einen 8×8-Pixelblock + auf dem Bildschirm. Mit den Bits VM10-13 und CB13 aus Register $d018 lassen sich videomatrix und Bitmap im Speicher verschieben. + Im Standard-Bitmap-Modus entspricht jedes Bit in der Bitmap direkt einem Pixel auf dem Bildschirm. + Für jeden 8×8-Block können Vorder- und Hintergrundfarbe beliebig eingestellt werden. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | + | "0": Farbe aus Bits 0-3 der c-Daten | + | "1": Farbe aus Bits 4-7 der c-Daten | + +---------------------------------------+ + + + http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_3/page_127.html + */ + + uint8_t chr; + uint16_t fgcol, pixel; + uint16_t bgcol; + uint8_t x = 0; + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + + if (cpu.vic.lineHasSprites) { + do { + + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + fgcol = t >> 4; + bgcol = t & 0x0f; + chr = bP[x * 8]; + + x++; + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl++; + + chr = chr << 1; + if (sprite) { // Sprite: Ja + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergung, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = fgcol; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = (chr & 0x80) ? fgcol :cpu.vic.B0C; + } + + *p++ = cpu.vic.palette[pixel]; + + } + } while (p < pe); + PRINTOVERFLOWS + } else { //Keine Sprites + + while (p < pe - 8) { + //color-ram not used! + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + fgcol = cpu.vic.palette[t >> 4]; + bgcol = cpu.vic.palette[t & 0x0f]; + chr = bP[x * 8]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + }; + while (p < pe) { + //color-ram not used! + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + fgcol = cpu.vic.palette[t >> 4]; + bgcol = cpu.vic.palette[t & 0x0f]; + chr = bP[x * 8]; + + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode3 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Multicolor-Bitmap-Modus (ECM/BMM/MCM=0/1/1) + + Ähnlich wie beim Multicolor-Textmodus bilden auch in diesem Modus jeweils + zwei benachbarte Bits ein (doppelt so breites) Pixel. Die Auflösung + reduziert sich damit auf 160×200 Pixel. + + Genau wie beim Multicolor-Textmodus wird die Bitkombination "01" für die + Spritepriorität und -kollisionserkennung zum "Hintergrund" gezählt. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 4 Pixel (2 Bit/Pixel) | + | | + | "00": Hintergrundfarbe 0 ($d021) | + | "01": Farbe aus Bits 4-7 der c-Daten | + | "10": Farbe aus Bits 0-3 der c-Daten | + | "11": Farbe aus Bits 8-11 der c-Daten | + +---------------------------------------+ + + POKE 53265,PEEK(53625)OR 32: POKE 53270,PEEK(53270)OR 16 + */ + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + uint16_t colors[4]; + uint16_t pixel; + uint8_t chr, x; + + x = 0; + + if (cpu.vic.lineHasSprites) { + colors[0] = cpu.vic.B0C; + do { + + if (cpu.vic.idle) { + cpu_clock(1); + colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + uint8_t t = cpu.vic.lineMemChr[x]; + colors[1] = t >> 4;//10 + colors[2] = t & 0x0f; //01 + colors[3] = cpu.vic.lineMemCol[x]; + chr = bP[x * 8]; + }; + + x++; + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + uint32_t c = (chr >> 6) & 0x03; + chr = chr << 2; + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (c & 0x02) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + } else { // MDP = 0 + if (c & 0x02) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = colors[c]; + } + + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (c & 0x02) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = colors[c]; + } + } else { // MDP = 0 + if (c & 0x02) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = colors[c]; + } + + *p++ = cpu.vic.palette[pixel]; + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + + while (p < pe - 8) { + + colors[0] = cpu.vic.colors[1]; + + if (cpu.vic.idle) { + cpu_clock(1); + colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + colors[1] = cpu.vic.palette[t >> 4];//10 + colors[2] = cpu.vic.palette[t & 0x0f]; //01 + colors[3] = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + chr = bP[x * 8]; + } + + x++; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; *p++ = pixel; + pixel = colors[chr & 0x03]; *p++ = pixel; *p++ = pixel; + + }; + while (p < pe) { + + colors[0] = cpu.vic.colors[1]; + + if (cpu.vic.idle) { + cpu_clock(1); + colors[1] = colors[2] = colors[3] = 0; + chr = cpu.RAM[cpu.vic.bank + 0x3fff]; + } else { + BADLINE(x); + + uint8_t t = cpu.vic.lineMemChr[x]; + colors[1] = cpu.vic.palette[t >> 4];//10 + colors[2] = cpu.vic.palette[t & 0x0f]; //01 + colors[3] = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + chr = bP[x * 8]; + } + + x++; + pixel = colors[(chr >> 6) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 4) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[(chr >> 2) & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; if (p >= pe) break; + pixel = colors[chr & 0x03]; *p++ = pixel; if (p >= pe) break; *p++ = pixel; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode4 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + //ECM-Textmodus (ECM/BMM/MCM=1/0/0) + /* + Dieser Textmodus entspricht dem Standard-Textmodus, erlaubt es aber, für + jedes einzelne Zeichen eine von vier Hintergrundfarben auszuwählen. Die + Auswahl geschieht über die oberen beiden Bits des Zeichenzeigers. Dadurch + reduziert sich der Zeichenvorrat allerdings von 256 auf 64 Zeichen. + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | + | | + | "0": Je nach Bits 6/7 der c-Daten | + | 00: Hintergrundfarbe 0 ($d021) | + | 01: Hintergrundfarbe 1 ($d022) | + | 10: Hintergrundfarbe 2 ($d023) | + | 11: Hintergrundfarbe 3 ($d024) | + | "1": Farbe aus Bits 8-11 der c-Daten | + +---------------------------------------+ + */ + // https://www.c64-wiki.de/wiki/Hintergrundfarbe + // POKE 53265, PEEK(53265) OR 64:REM CURSOR BLINKT ROT abc + + uint8_t chr, pixel; + uint16_t fgcol; + uint16_t bgcol; + uint8_t x = 0; + + CHARSETPTR(); + if (cpu.vic.lineHasSprites) { + do { + + BADLINE(x); + + uint32_t td = cpu.vic.lineMemChr[x]; + bgcol = cpu.vic.R[0x21 + ((td >> 6) & 0x03)]; + chr = cpu.vic.charsetPtr[(td & 0x3f) * 8]; + fgcol = cpu.vic.lineMemCol[x]; + + x++; + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl++; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + if (sprite & 0x4000) { // Sprite: Hinter Text + if (chr & 0x80) { + cpu.vic.fgcollision |= spritenum; + pixel = fgcol; + } else pixel = bgcol; + } else { // Sprite: Vor Text + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; + pixel = sprite & 0x0f; + } + } else { // Kein Sprite + pixel = (chr & 0x80) ? fgcol : bgcol; + } + + chr = chr << 1; + *p++ = cpu.vic.palette[pixel]; + } + } while (p < pe); + PRINTOVERFLOWS + } + else //Keine Sprites + while (p < pe - 8) { + + BADLINE(x); + + uint32_t td = cpu.vic.lineMemChr[x]; + bgcol = cpu.vic.palette[cpu.vic.R[0x21 + ((td >> 6) & 0x03)]]; + chr = cpu.vic.charsetPtr[(td & 0x3f) * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; + *p++ = (chr & 0x40) ? fgcol : bgcol; + *p++ = (chr & 0x20) ? fgcol : bgcol; + *p++ = (chr & 0x10) ? fgcol : bgcol; + *p++ = (chr & 0x08) ? fgcol : bgcol; + *p++ = (chr & 0x04) ? fgcol : bgcol; + *p++ = (chr & 0x02) ? fgcol : bgcol; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + while (p < pe) { + + BADLINE(x); + + uint32_t td = cpu.vic.lineMemChr[x]; + bgcol = cpu.vic.palette[cpu.vic.R[0x21 + ((td >> 6) & 0x03)]]; + chr = cpu.vic.charsetPtr[(td & 0x3f) * 8]; + fgcol = cpu.vic.palette[cpu.vic.lineMemCol[x]]; + + x++; + + *p++ = (chr & 0x80) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x40) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x20) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x10) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x08) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x04) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x02) ? fgcol : bgcol; if (p >= pe) break; + *p++ = (chr & 0x01) ? fgcol : bgcol; + + }; + PRINTOVERFLOW + while (x<40) {BADLINE(x); x++;} +} + +/*****************************************************************************************************/ +/* Ungültige Modi ************************************************************************************/ +/*****************************************************************************************************/ + +void mode5 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Ungültiger Textmodus (ECM/BMM/MCM=1/0/1) + + Das gleichzeitige Setzen der ECM- und MCM-Bits wählt keinen der + "offiziellen" Grafikmodi des VIC, sondern erzeugt nur schwarze Pixel. + Nichtsdestotrotz erzeugt der Grafikdatensequenzer auch in diesem Modus + intern gültige Grafikdaten, die die Spritekollisionserkennung triggern + können. Über den Umweg der Spritekollisionen kann man die erzeugten Daten + auch auslesen (sehen kann man nichts, das Bild ist schwarz). Man kann so + allerdings nur Vordergrund- und Hintergrundpixel unterscheiden, die + Farbinformation läßt sich aus den Spritekollisionen nicht gewinnen. + + Die erzeugte Grafik entspricht der des Multicolor-Textmodus, allerdings ist + der Zeichenvorrat genau wie im ECM-Modus auf 64 Zeichen eingeschränkt. + */ + CHARSETPTR(); + + uint8_t chr, pixel; + uint16_t fgcol; + uint8_t x = 0; + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = cpu.vic.charsetPtr[(cpu.vic.lineMemChr[x] & 0x3F) * 8]; + fgcol = cpu.vic.lineMemCol[x]; + + x++; + + if ((fgcol & 0x08) == 0) { //Zeichen ist HIRES + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergrund, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + + chr = chr << 1; + } + + } else {//Zeichen ist MULTICOLOR + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + + chr = chr << 2; + + int sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = 0; + + } + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl; + *spl++ = 0; + //Das gleiche nochmal für das nächste Pixel + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = 0; + } + *p++ = cpu.vic.palette[pixel]; + + } + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + //Farbe immer schwarz + const uint16_t bgcol = palette[0]; + while (p < pe - 8) { + + BADLINE(x); + x++; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + + }; + while (p < pe) { + + BADLINE(x); + x++; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode6 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Ungültiger Bitmap-Modus 1 (ECM/BMM/MCM=1/1/0) + + Dieser Modus erzeugt nur ebenfalls nur ein schwarzes Bild, die Pixel lassen + sich allerdings auch hier mit dem Spritekollisionstrick auslesen. + + Der Aufbau der Grafik ist im Prinzip wie im Standard-Bitmap-Modus, aber die + Bits 9 und 10 der g-Adressen sind wegen dem gesetzten ECM-Bit immer Null, + entsprechend besteht auch die Grafik - grob gesagt - aus vier + "Abschnitten", die jeweils viermal wiederholt dargestellt werden. + + */ + + uint8_t chr, pixel; + uint8_t x = 0; + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = bP[x * 8]; + + x++; + + unsigned m = min(8, pe - p); + for (unsigned i = 0; i < m; i++) { + + int sprite = *spl; + *spl++ = 0; + + chr = chr << 1; + if (sprite) { // Sprite: Ja + /* + Sprite-Prioritäten (Anzeige) + MDP = 1: Grafikhintergrund, Sprite, Vordergrund + MDP = 0: Grafikhintergung, Vordergrund, Sprite + + Kollision: + Eine Kollision zwischen Sprites und anderen Grafikdaten wird erkannt, + sobald beim Bildaufbau ein nicht transparentes Spritepixel und ein Vordergrundpixel ausgegeben wird. + + */ + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f; //Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergrundpixel ist gesetzt + } + + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + //Farbe immer schwarz + const uint16_t bgcol = palette[0]; + while (p < pe - 8) { + + BADLINE(x); + x++; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + + }; + while (p < pe) { + + BADLINE(x); + x++; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; + + }; + PRINTOVERFLOW + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +void mode7 (tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc) { + /* + Ungültiger Bitmap-Modus 2 (ECM/BMM/MCM=1/1/1) + + Der letzte ungültige Modus liefert auch ein schwarzes Bild, das sich jedoch + genauso mit Hilfe der Sprite-Grafik-Kollisionen "abtasten" läßt. + + Der Aufbau der Grafik ist im Prinzip wie im Multicolor-Bitmap-Modus, aber + die Bits 9 und 10 der g-Adressen sind wegen dem gesetzten ECM-Bit immer + Null, was sich in der Darstellung genauso wie beim ersten ungültigen + Bitmap-Modus wiederspiegelt. Die Bitkombination "01" wird wie gewohnt zum + Hintergrund gezählt. + + */ + + uint8_t chr; + uint8_t x = 0; + uint16_t pixel; + uint8_t * bP = cpu.vic.bitmapPtr + vc * 8 + cpu.vic.rc; + + if (cpu.vic.lineHasSprites) { + + do { + + BADLINE(x); + + chr = bP[x * 8]; + x++; + + for (unsigned i = 0; i < 4; i++) { + if (p >= pe) break; + + chr = chr << 2; + + int sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f;//Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + if (p >= pe) break; + + sprite = *spl; + *spl++ = 0; + + if (sprite) { // Sprite: Ja + int spritenum = SPRITENUM(sprite); + pixel = sprite & 0x0f;//Hintergrundgrafik + if (sprite & 0x4000) { // MDP = 1 + + if (chr & 0x80) { //Vordergrundpixel ist gesetzt + cpu.vic.fgcollision |= spritenum; + pixel = 0; + } + } else { // MDP = 0 + if (chr & 0x80) cpu.vic.fgcollision |= spritenum; //Vordergundpixel ist gesetzt + } + } else { // Kein Sprite + pixel = 0; + } + + *p++ = cpu.vic.palette[pixel]; + + } + + } while (p < pe); + PRINTOVERFLOWS + + } else { //Keine Sprites + + const uint16_t bgcol = palette[0]; + while (p < pe - 8) { + + BADLINE(x); + x++; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + *p++ = bgcol; *p++ = bgcol; + + }; + while (p < pe) { + + BADLINE(x); + x++; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; if (p >= pe) break; + *p++ = bgcol; if (p >= pe) break; *p++ = bgcol; + + }; + PRINTOVERFLOW + + } + while (x<40) {BADLINE(x); x++;} +} +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +typedef void (*modes_t)( tpixel *p, const tpixel *pe, uint16_t *spl, const uint16_t vc ); //Funktionspointer +const modes_t modes[8] = {mode0, mode1, mode2, mode3, mode4, mode5, mode6, mode7}; + +static uint16_t linebuffer[SCREEN_WIDTH]; + +void vic_do(void) { + + uint16_t vc; + uint16_t xscroll; + tpixel *pe; + tpixel *p; + uint16_t *spl; + uint8_t mode; + + /*****************************************************************************************************/ + /* Linecounter ***************************************************************************************/ + /*****************************************************************************************************/ + /* + ?PEEK(678) NTSC =0 + ?PEEK(678) PAL = 1 + */ + + if ( cpu.vic.rasterLine >= LINECNT ) { + + //reSID sound needs much time - too much to keep everything in sync and with stable refreshrate + //but it is not called very often, so most of the time, we have more time than needed. + //We can measure the time needed for a frame and calc a correction factor to speed things up. + unsigned long m = fbmicros(); + cpu.vic.neededTime = (m - cpu.vic.timeStart); + cpu.vic.timeStart = m; + cpu.vic.lineClock.setIntervalFast(LINETIMER_DEFAULT_FREQ - ((float)cpu.vic.neededTime / (float)LINECNT - LINETIMER_DEFAULT_FREQ )); + + cpu.vic.rasterLine = 0; + cpu.vic.vcbase = 0; + cpu.vic.denLatch = 0; + + } else cpu.vic.rasterLine++; + + int r = cpu.vic.rasterLine; + + if (r == cpu.vic.intRasterLine )//Set Rasterline-Interrupt + cpu.vic.R[0x19] |= 1 | ((cpu.vic.R[0x1a] & 1) << 7); + + /*****************************************************************************************************/ + /* Badlines ******************************************************************************************/ + /*****************************************************************************************************/ + /* + Ein Bad-Line-Zustand liegt in einem beliebigen Taktzyklus vor, wenn an der + negativen Flanke von ø0 zu Beginn des Zyklus RASTER >= $30 und RASTER <= + $f7 und die unteren drei Bits von RASTER mit YSCROLL übereinstimmen und in + einem beliebigen Zyklus von Rasterzeile $30 das DEN-Bit gesetzt war. + + (default 3) + yscroll : POKE 53265, PEEK(53265) AND 248 OR 1:POKE 1024,0 + yscroll : poke 53265, peek(53265) and 248 or 1 + + DEN : POKE 53265, PEEK(53265) AND 224 Bildschirm aus + + Die einzige Verwendung von YSCROLL ist der Vergleich mit r in der Badline + + */ + + if (r == 0x30 ) cpu.vic.denLatch |= cpu.vic.DEN; + + /* 3.7.2 + 2. In der ersten Phase von Zyklus 14 jeder Zeile wird VC mit VCBASE geladen + (VCBASE->VC) und VMLI gelöscht. Wenn zu diesem Zeitpunkt ein + Bad-Line-Zustand vorliegt, wird zusätzlich RC auf Null gesetzt. + */ + + vc = cpu.vic.vcbase; + + cpu.vic.badline = (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL)); + + if (cpu.vic.badline) { + cpu.vic.idle = 0; + cpu.vic.rc = 0; + } + + /*****************************************************************************************************/ + /*****************************************************************************************************/ +#if 1 + { + int t = MAXCYCLESSPRITES3_7 - cpu.vic.spriteCycles3_7; + if (t > 0) cpu_clock(t); + if (cpu.vic.spriteCycles3_7 > 0) cia_clockt(cpu.vic.spriteCycles3_7); + } +#endif + + //HBlank: + cpu_clock(10); + +#ifdef ADDITIONALCYCLES + cpu_clock(ADDITIONALCYCLES); +#endif + + //cpu.vic.videomatrix = cpu.vic.bank + (unsigned)(cpu.vic.R[0x18] & 0xf0) * 64; + + /* Rand oben /unten **********************************************************************************/ + /* + RSEL Höhe des Anzeigefensters Erste Zeile Letzte Zeile + 0 24 Textzeilen/192 Pixel 55 ($37) 246 ($f6) = 192 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + 1 25 Textzeilen/200 Pixel 51 ($33) 250 ($fa) = 200 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + */ + + if (cpu.vic.borderFlag) { + int firstLine = (cpu.vic.RSEL) ? 0x33 : 0x37; + if ((cpu.vic.DEN) && (r == firstLine)) cpu.vic.borderFlag = false; + } else { + int lastLine = (cpu.vic.RSEL) ? 0xfb : 0xf7; + if (r == lastLine) cpu.vic.borderFlag = true; + } + + if (r < FIRSTDISPLAYLINE || r > LASTDISPLAYLINE ) { + if (r == 0) + cpu_clock(CYCLESPERRASTERLINE - 10 - 2 - MAXCYCLESSPRITES - 1); // (minus hblank l + r) + else + cpu_clock(CYCLESPERRASTERLINE - 10 - 2 - MAXCYCLESSPRITES ); + goto noDisplayIncRC; + } + + //max_x = (!cpu.vic.CSEL) ? 40:38; + //p = SCREENMEM + (r - FIRSTDISPLAYLINE) * LINE_MEM_WIDTH; + p = &linebuffer[0]; //tft.getLineBuffer((r - FIRSTDISPLAYLINE)); + pe = p + SCREEN_WIDTH; + //Left Screenborder: Cycle 10 + spl = &cpu.vic.spriteLine[24]; + cpu_clock(6); + + + if (cpu.vic.borderFlag) { + cpu_clock(5); + fastFillLineNoSprites(p, pe + BORDER_RIGHT, cpu.vic.colors[0]); + goto noDisplayIncRC ; + } + + + /*****************************************************************************************************/ + /* DISPLAY *******************************************************************************************/ + /*****************************************************************************************************/ + + + //max_x = (!cpu.vic.CSEL) ? 40:38; + //X-Scrolling: + + xscroll = cpu.vic.XSCROLL; + + if (xscroll > 0) { + uint16_t col = cpu.vic.colors[0]; + + if (!cpu.vic.CSEL) { + cpu_clock(1); + uint16_t sprite; + for (int i = 0; i < xscroll; i++) { + SPRITEORFIXEDCOLOR(); + } + } else { + spl += xscroll; + for (unsigned i = 0; i < xscroll; i++) { + *p++ = col; + } + + } + } + + /*****************************************************************************************************/ + /*****************************************************************************************************/ + /*****************************************************************************************************/ + + + cpu.vic.fgcollision = 0; + mode = (cpu.vic.ECM << 2) | (cpu.vic.BMM << 1) | cpu.vic.MCM; + + if ( !cpu.vic.idle) { + +#if 0 + static uint8_t omode = 99; + if (mode != omode) { + Serial.print("Graphicsmode:"); + Serial.println(mode); + omode = mode; + } +#endif + + modes[mode](p, pe, spl, vc); + vc = (vc + 40) & 0x3ff; + + } else { + /* +3.7.3.9. Idle-Zustand +--------------------- + +Im Idle-Zustand liest der VIC die Grafikdaten von Adresse $3fff (bzw. $39ff +bei gesetztem ECM-Bit) und stellt sie im ausgewählten Grafikmodus dar, +wobei aber die Videomatrix-Daten (normalerweise in den c-Zugriffen gelesen) +nur aus "0"-Bits bestehen. Es wird also immer wiederholt das Byte an +Adresse $3fff/$39ff ausgegeben. + +c-Zugriff + + Es werden keine c-Zugriffe ausgeführt. + + Daten + + +----+----+----+----+----+----+----+----+----+----+----+----+ + | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+ + | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+ + +g-Zugriff + + Adressen (ECM=0) + + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + + Adressen (ECM=1) + + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | + +----+----+----+----+----+----+----+----+----+----+----+----+----+----+ + + Daten + + +----+----+----+----+----+----+----+----+ + | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + +----+----+----+----+----+----+----+----+ + | 8 Pixel (1 Bit/Pixel) | Standard-Textmodus/ + | | Multicolor-Textmodus/ + | "0": Hintergrundfarbe 0 ($d021) | ECM-Textmodus + | "1": Schwarz | + +---------------------------------------+ + | 8 Pixel (1 Bit/Pixel) | Standard-Bitmap-Modus/ + | | Ungültiger Textmodus/ + | "0": Schwarz (Hintergrund) | Ungültiger Bitmap-Modus 1 + | "1": Schwarz (Vordergrund) | + +---------------------------------------+ + | 4 Pixel (2 Bit/Pixel) | Multicolor-Bitmap-Modus + | | + | "00": Hintergrundfarbe 0 ($d021) | + | "01": Schwarz (Hintergrund) | + | "10": Schwarz (Vordergrund) | + | "11": Schwarz (Vordergrund) | + +---------------------------------------+ + | 4 Pixel (2 Bit/Pixel) | Ungültiger Bitmap-Modus 2 + | | + | "00": Schwarz (Hintergrund) | + | "01": Schwarz (Hintergrund) | + | "10": Schwarz (Vordergrund) | + | "11": Schwarz (Vordergrund) | + +---------------------------------------+ +*/ + //Modes 1 & 3 + if (mode == 1 || mode == 3) { + modes[mode](p, pe, spl, vc); + } else {//TODO: all other modes + fastFillLine(p, pe, cpu.vic.palette[0], spl); + } + } + + /* + Bei den MBC- und MMC-Interrupts löst jeweils nur die erste Kollision einen + Interrupt aus (d.h. wenn die Kollisionsregister $d01e bzw. $d01f vor der + Kollision den Inhalt Null hatten). Um nach einer Kollision weitere + Interrupts auszulösen, muß das betreffende Register erst durch Auslesen + gelöscht werden. + */ + + if (cpu.vic.fgcollision) { + if (cpu.vic.MD == 0) { + cpu.vic.R[0x19] |= 2 | ( (cpu.vic.R[0x1a] & 2) << 6); + } + cpu.vic.MD |= cpu.vic.fgcollision; + } + + /*****************************************************************************************************/ + + if (!cpu.vic.CSEL) { + cpu_clock(1); + uint16_t col = cpu.vic.colors[0]; + //p = &screen[r - FIRSTDISPLAYLINE][0]; + //p = SCREENMEM + (r - FIRSTDISPLAYLINE) * LINE_MEM_WIDTH + BORDER_LEFT; + p = &linebuffer[0]; // tft.getLineBuffer((r - FIRSTDISPLAYLINE)); +#if 0 + // Sprites im Rand + uint16_t sprite; + uint16_t * spl; + spl = &cpu.vic.spriteLine[24 + xscroll]; + + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() + SPRITEORFIXEDCOLOR() //7 +#else + //keine Sprites im Rand + *p++ = col; *p++ = col; *p++ = col; *p++ = col; + *p++ = col; *p++ = col; *p = col; + +#endif + + //Rand rechts: + //p = &screen[r - FIRSTDISPLAYLINE][SCREEN_WIDTH - 9]; + //p = SCREENMEM + (r - FIRSTDISPLAYLINE) * LINE_MEM_WIDTH + SCREEN_WIDTH - 9 + BORDER_LEFT; + p = &linebuffer[SCREEN_WIDTH - 9 + BORDER_LEFT]; //tft.getLineBuffer((r - FIRSTDISPLAYLINE)) + SCREEN_WIDTH - 9 + BORDER_LEFT; + pe = p + 9; + +#if 0 + // Sprites im Rand + spl = &cpu.vic.spriteLine[24 + SCREEN_WIDTH - 9 + xscroll]; + while (p < pe) { + SPRITEORFIXEDCOLOR(); + } +#else + //keine Sprites im Rand + //while (p < pe) { + // *p++ = col; + //} +#endif + + + + } + + emu_DrawLine16(&linebuffer[0], SCREEN_WIDTH, SCREEN_HEIGHT, (r - FIRSTDISPLAYLINE)); + +//Rechter Rand nach CSEL, im Textbereich +cpu_clock(5); + + +noDisplayIncRC: + /* 3.7.2 + 5. In der ersten Phase von Zyklus 58 wird geprüft, ob RC=7 ist. Wenn ja, + geht die Videologik in den Idle-Zustand und VCBASE wird mit VC geladen + (VC->VCBASE). Ist die Videologik danach im Display-Zustand (liegt ein + Bad-Line-Zustand vor, ist dies immer der Fall), wird RC erhöht. + */ + + if (cpu.vic.rc == 7) { + cpu.vic.idle = 1; + cpu.vic.vcbase = vc; + } + //Ist dies richtig ?? + if ((!cpu.vic.idle) || (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL))) { + cpu.vic.rc = (cpu.vic.rc + 1) & 0x07; + } + + + /*****************************************************************************************************/ + /* Sprites *******************************************************************************************/ + /*****************************************************************************************************/ + + cpu.vic.spriteCycles0_2 = 0; + cpu.vic.spriteCycles3_7 = 0; + + if (cpu.vic.lineHasSprites) { + cpu.vic.lineHasSprites = 0; + memset(cpu.vic.spriteLine, 0, sizeof(cpu.vic.spriteLine) ); + } + + uint32_t spriteYCheck = cpu.vic.R[0x15]; //Sprite enabled Register + + if (spriteYCheck) { + + unsigned short R17 = cpu.vic.R[0x17]; //Sprite-y-expansion + unsigned char collision = 0; + short lastSpriteNum = 0; + + for (unsigned short i = 0; i < 8; i++) { + if (!spriteYCheck) break; + + unsigned b = 1 << i; + + if (spriteYCheck & b ) { + spriteYCheck &= ~b; + short y = cpu.vic.R[i * 2 + 1]; + + if ( (r >= y ) && //y-Position > Sprite-y ? + (((r < y + 21) && (~R17 & b )) || // ohne y-expansion + ((r < y + 2 * 21 ) && (R17 & b ))) ) //mit y-expansion + { + + //Sprite Cycles + if (i < 3) { + if (!lastSpriteNum) cpu.vic.spriteCycles0_2 += 1; + cpu.vic.spriteCycles0_2 += 2; + } else { + if (!lastSpriteNum) cpu.vic.spriteCycles3_7 += 1; + cpu.vic.spriteCycles3_7 += 2; + } + lastSpriteNum = i; + //Sprite Cycles END + + + if (r < FIRSTDISPLAYLINE || r > LASTDISPLAYLINE ) continue; + + uint16_t x = (((cpu.vic.R[0x10] >> i) & 1) << 8) | cpu.vic.R[i * 2]; + if (x >= SPRITE_MAX_X) continue; + + unsigned short lineOfSprite = r - y; + if (R17 & b) lineOfSprite = lineOfSprite / 2; // Y-Expansion + unsigned short spriteadr = cpu.vic.bank | cpu.RAM[cpu.vic.videomatrix + (1024 - 8) + i] << 6 | (lineOfSprite * 3); + unsigned spriteData = ((unsigned)cpu.RAM[ spriteadr ] << 16) | ((unsigned)cpu.RAM[ spriteadr + 1 ] << 8) | ((unsigned)cpu.RAM[ spriteadr + 2 ]); + + if (!spriteData) continue; + cpu.vic.lineHasSprites = 1; + + uint16_t * slp = &cpu.vic.spriteLine[x]; //Sprite-Line-Pointer + unsigned short upperByte = ( 0x80 | ( (cpu.vic.MDP & b) ? 0x40 : 0 ) | i ) << 8; //Bit7 = Sprite "da", Bit 6 = Sprite-Priorität vor Grafik/Text, Bits 3..0 = Spritenummer + + //Sprite in Spritezeile schreiben: + if ((cpu.vic.MMC & b) == 0) { // NO MULTICOLOR + + uint16_t color = upperByte | cpu.vic.R[0x27 + i]; + + if ((cpu.vic.MXE & b) == 0) { // NO MULTICOLOR, NO SPRITE-EXPANSION + + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 23) & 0x01; + spriteData = (spriteData << 1); + + if (c) { + if (*slp == 0) *slp = color; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + } + slp++; + + } + + } else { // NO MULTICOLOR, SPRITE-EXPANSION + + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 23) & 0x01; + spriteData = (spriteData << 1); + //So wie oben, aber zwei gleiche Pixel + + if (c) { + if (*slp == 0) *slp = color; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = color; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + } else { + slp += 2; + } + + } + } + + + + } else { // MULTICOLOR + /* Im Mehrfarbenmodus (Multicolor-Modus) bekommen alle Sprites zwei zusätzliche gemeinsame Farben. + Die horizontale Auflösung wird von 24 auf 12 halbiert, da bei der Sprite-Definition jeweils zwei Bits zusammengefasst werden. + */ + uint16_t colors[4]; + //colors[0] = 1; //dummy, color 0 is transparent + colors[1] = upperByte | cpu.vic.R[0x25]; + colors[2] = upperByte | cpu.vic.R[0x27 + i]; + colors[3] = upperByte | cpu.vic.R[0x26]; + + if ((cpu.vic.MXE & b) == 0) { // MULTICOLOR, NO SPRITE-EXPANSION + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 22) & 0x03; + spriteData = (spriteData << 2); + + if (c) { + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + } else { + slp += 2; + } + + } + + } else { // MULTICOLOR, SPRITE-EXPANSION + for (unsigned cnt = 0; (spriteData > 0) && (cnt < 24); cnt++) { + int c = (spriteData >> 22) & 0x03; + spriteData = (spriteData << 2); + + //So wie oben, aber vier gleiche Pixel + if (c) { + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + if (*slp == 0) *slp = colors[c]; + else collision |= b | (1 << ((*slp >> 8) & 0x07)); + slp++; + } else { + slp += 4; + } + + } + + } + } + + } + else lastSpriteNum = 0; + } + + } + + if (collision) { + if (cpu.vic.MM == 0) { + cpu.vic.R[0x19] |= 4 | ((cpu.vic.R[0x1a] & 4) << 5 ); + } + cpu.vic.MM |= collision; + } + + } + /*****************************************************************************************************/ +#if 0 + { + int t = MAXCYCLESSPRITES0_2 - cpu.vic.spriteCycles0_2; + if (t > 0) cpu_clock(t); + if (cpu.vic.spriteCycles0_2 > 0) cia_clockt(cpu.vic.spriteCycles0_2); + } +#endif + + //HBlank: +#if PAL + cpu_clock(2); +#else + cpu_clock(3); +#endif + + +#if 0 + if (cpu.vic.idle) { + Serial.print("Cycles line "); + Serial.print(r); + Serial.print(": "); + Serial.println(cpu.lineCyclesAbs); + } +#endif + + + return; +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ +void fastFillLineNoSprites(tpixel * p, const tpixel * pe, const uint16_t col) { + int i = 0; + + while (p < pe) { + *p++ = col; + i = (i + 1) & 0x07; + if (!i) CYCLES(1); + } + + +} + +void fastFillLine(tpixel * p, const tpixel * pe, const uint16_t col, uint16_t * spl) { + if (spl != NULL && cpu.vic.lineHasSprites) { + int i = 0; + uint16_t sprite; + while ( p < pe ) { + SPRITEORFIXEDCOLOR(); + i = (i + 1) & 0x07; + if (!i) CYCLES(1); + }; + + } else { + + fastFillLineNoSprites(p, pe, col); + + } +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void vic_displaySimpleModeScreen(void) { +} + + +void vic_do_simple(void) { + uint16_t vc; + int cycles = 0; + +if ( cpu.vic.rasterLine >= LINECNT ) { + + //reSID sound needs much time - too much to keep everything in sync and with stable refreshrate + //but it is not called very often, so most of the time, we have more time than needed. + //We can measure the time needed for a frame and calc a correction factor to speed things up. + unsigned long m = fbmicros(); + cpu.vic.neededTime = (m - cpu.vic.timeStart); + cpu.vic.timeStart = m; + cpu.vic.lineClock.setIntervalFast(LINETIMER_DEFAULT_FREQ - ((float)cpu.vic.neededTime / (float)LINECNT - LINETIMER_DEFAULT_FREQ )); + + cpu.vic.rasterLine = 0; + cpu.vic.vcbase = 0; + cpu.vic.denLatch = 0; + + } else { + cpu.vic.rasterLine++; + cpu_clock(1); + cycles += 1; + } + + int r = cpu.vic.rasterLine; + + if (r == cpu.vic.intRasterLine )//Set Rasterline-Interrupt + cpu.vic.R[0x19] |= 1 | ((cpu.vic.R[0x1a] & 1) << 7); + + cpu_clock(9); + cycles += 9; + + if (r == 0x30 ) cpu.vic.denLatch |= cpu.vic.DEN; + + vc = cpu.vic.vcbase; + + cpu.vic.badline = (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL)); + + if (cpu.vic.badline) { + cpu.vic.idle = 0; + cpu.vic.rc = 0; + } + + + /* Rand oben /unten **********************************************************************************/ + /* + RSEL Höhe des Anzeigefensters Erste Zeile Letzte Zeile + 0 24 Textzeilen/192 Pixel 55 ($37) 246 ($f6) = 192 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + 1 25 Textzeilen/200 Pixel 51 ($33) 250 ($fa) = 200 sichtbare Zeilen, der Rest ist Rand oder unsichtbar + */ + + if (cpu.vic.borderFlag) { + int firstLine = (cpu.vic.RSEL) ? 0x33 : 0x37; + if ((cpu.vic.DEN) && (r == firstLine)) cpu.vic.borderFlag = false; + } else { + int lastLine = (cpu.vic.RSEL) ? 0xfb : 0xf7; + if (r == lastLine) cpu.vic.borderFlag = true; + } + + + //left screenborder + cpu_clock(6); + cycles += 6; + + CYCLES(40); + cycles += 40; + vc += 40; + + //right screenborder + cpu_clock(4); //1 + cycles += 4; + + + if (cpu.vic.rc == 7) { + cpu.vic.idle = 1; + cpu.vic.vcbase = vc; + } + //Ist dies richtig ?? + if ((!cpu.vic.idle) || (cpu.vic.denLatch && (r >= 0x30) && (r <= 0xf7) && ( (r & 0x07) == cpu.vic.YSCROLL))) { + cpu.vic.rc = (cpu.vic.rc + 1) & 0x07; + } + + cpu_clock(3); //1 + cycles += 3; + + int cyclesleft = CYCLESPERRASTERLINE - cycles; + if (cyclesleft) cpu_clock(cyclesleft); + +} + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void installPalette(void) { + memcpy(cpu.vic.palette, (void*)palette, sizeof(cpu.vic.palette)); +} + + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void vic_adrchange(void) { + uint8_t r18 = cpu.vic.R[0x18]; + cpu.vic.videomatrix = cpu.vic.bank + (unsigned)(r18 & 0xf0) * 64; + + unsigned charsetAddr = r18 & 0x0e; + if ((cpu.vic.bank & 0x4000) == 0) { + if (charsetAddr == 0x04) cpu.vic.charsetPtrBase = ((uint8_t *)&rom_characters); + else if (charsetAddr == 0x06) cpu.vic.charsetPtrBase = ((uint8_t *)&rom_characters) + 0x800; + else + cpu.vic.charsetPtrBase = &cpu.RAM[charsetAddr * 0x400 + cpu.vic.bank] ; + } else + cpu.vic.charsetPtrBase = &cpu.RAM[charsetAddr * 0x400 + cpu.vic.bank]; + + cpu.vic.bitmapPtr = (uint8_t*) &cpu.RAM[cpu.vic.bank | ((r18 & 0x08) * 0x400)]; + if ((cpu.vic.R[0x11] & 0x60) == 0x60) cpu.vic.bitmapPtr = (uint8_t*)((uintptr_t)cpu.vic.bitmapPtr & 0xf9ff); + +} +/*****************************************************************************************************/ +void vic_write(uint32_t address, uint8_t value) { + + address &= 0x3F; + + switch (address) { + case 0x11 : + cpu.vic.R[address] = value; + cpu.vic.intRasterLine = (cpu.vic.intRasterLine & 0xff) | ((((uint16_t) value) << 1) & 0x100); + if (cpu.vic.rasterLine == 0x30 ) cpu.vic.denLatch |= value & 0x10; + + cpu.vic.badline = (cpu.vic.denLatch && (cpu.vic.rasterLine >= 0x30) && (cpu.vic.rasterLine <= 0xf7) && ( (cpu.vic.rasterLine & 0x07) == (value & 0x07))); + + if (cpu.vic.badline) { + cpu.vic.idle = 0; + } + + vic_adrchange(); + + break; + case 0x12 : + cpu.vic.intRasterLine = (cpu.vic.intRasterLine & 0x100) | value; + cpu.vic.R[address] = value; + break; + case 0x18 : + cpu.vic.R[address] = value; + vic_adrchange(); + break; + case 0x19 : //IRQs + cpu.vic.R[0x19] &= (~value & 0x0f); + break; + case 0x1A : //IRQ Mask + cpu.vic.R[address] = value & 0x0f; + break; + case 0x1e: + case 0x1f: + cpu.vic.R[address] = 0; + break; + case 0x20 ... 0x2E: + cpu.vic.R[address] = value & 0x0f; + cpu.vic.colors[address - 0x20] = cpu.vic.palette[value & 0x0f]; + break; + case 0x2F ... 0x3F: + break; + default : + cpu.vic.R[address] = value; + break; + } + + //#if DEBUGVIC +#if 0 + Serial.print("VIC "); + Serial.print(address, HEX); + Serial.print("="); + Serial.println(value, HEX); + //logAddr(address, value, 1); +#endif +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +uint8_t vic_read(uint32_t address) { + uint8_t ret; + + address &= 0x3F; + switch (address) { + + case 0x11: + ret = (cpu.vic.R[address] & 0x7F) | ((cpu.vic.rasterLine & 0x100) >> 1); + break; + case 0x12: + ret = cpu.vic.rasterLine; + break; + case 0x16: + ret = cpu.vic.R[address] | 0xC0; + break; + case 0x18: + ret = cpu.vic.R[address] | 0x01; + break; + case 0x19: + ret = cpu.vic.R[address] | 0x70; + break; + case 0x1a: + ret = cpu.vic.R[address] | 0xF0; + break; + case 0x1e: + case 0x1f: + ret = cpu.vic.R[address]; + cpu.vic.R[address] = 0; + break; + case 0x20 ... 0x2E: + ret = cpu.vic.R[address] | 0xF0; + break; + case 0x2F ... 0x3F: + ret = 0xFF; + break; + default: + ret = cpu.vic.R[address]; + break; + } + +#if DEBUGVIC + Serial.print("VIC "); + logAddr(address, ret, 0); +#endif + return ret; +} + +/*****************************************************************************************************/ +/*****************************************************************************************************/ +/*****************************************************************************************************/ + +void resetVic(void) { + enableCycleCounter(); + + cpu.vic.intRasterLine = 0; + cpu.vic.rasterLine = 0; + cpu.vic.lineHasSprites = 0; + memset(&cpu.RAM[0x400], 0, 1000); + memset(&cpu.vic, 0, sizeof(cpu.vic)); + + + + installPalette(); + + //http://dustlayer.com/vic-ii/2013/4/22/when-visibility-matters + cpu.vic.R[0x11] = 0x9B; + cpu.vic.R[0x16] = 0x08; + cpu.vic.R[0x18] = 0x14; + cpu.vic.R[0x19] = 0x0f; + + for (unsigned i = 0; i < sizeof(cpu.vic.COLORRAM); i++) + cpu.vic.COLORRAM[i] = (rand() & 0x0F); + + cpu.RAM[0x39FF] = 0x0; + cpu.RAM[0x3FFF] = 0x0; + cpu.RAM[0x39FF + 16384] = 0x0; + cpu.RAM[0x3FFF + 16384] = 0x0; + cpu.RAM[0x39FF + 32768] = 0x0; + cpu.RAM[0x3FFF + 32768] = 0x0; + cpu.RAM[0x39FF + 49152] = 0x0; + cpu.RAM[0x3FFF + 49152] = 0x0; + + vic_adrchange(); +} + + +/* + ?PEEK(678) NTSC =0 + ?PEEK(678) PAL = 1 + PRINT TIME$ +*/ +/* + Raster- Takt- sichtb. sichtbare + VIC-II System zeilen zyklen Zeilen Pixel/Zeile + ------------------------------------------------------- + 6569 PAL 312 63 284 403 + 6567R8 NTSC 263 65 235 418 + 6567R56A NTSC 262 64 234 411 +*/ diff --git a/MCUME_teensy/teensy64/vic.h b/MCUME_teensy/teensy64/vic.h new file mode 100755 index 0000000..b1b03ba --- /dev/null +++ b/MCUME_teensy/teensy64/vic.h @@ -0,0 +1,144 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +#ifndef Teensy64_vic_h_ +#define Teensy64_vic_h_ + +#include "Teensy64.h" +#include "IntervalTimer.h" + + + +#define SPRITE_MAX_X (320 + 24) + +/* for later use +struct tsprite { + uint8_t MC; //Mob Data Counter + uint8_t MCBase; //Mob Data Counter Base + uint8_t MobYexpand; //Y-Epansion FlipFlop +}; +*/ + +struct tvic { + uint32_t timeStart, neededTime; + int intRasterLine; //Interruptsetting + int rasterLine; + uint16_t bank; + uint16_t vcbase; + uint8_t rc; + + uint8_t borderFlag; //Top-Bottom border flag + uint8_t borderFlagH; //Left-Right border flag + uint8_t idle; + uint8_t denLatch; + uint8_t badline; + uint8_t BAsignal; + uint8_t lineHasSprites; + int8_t spriteCycles0_2; + int8_t spriteCycles3_7; + int fgcollision; + + uint8_t * charsetPtrBase; + uint8_t * charsetPtr; + uint8_t * bitmapPtr; + uint16_t videomatrix; + + uint16_t colors[15]; // translated ([palette]) colors + uint16_t palette[16]; + + MyIntervalTimer lineClock; + + union { + uint8_t R[0x40]; + struct { + uint8_t M0X, M0Y, M1X, M1Y, M2X, M2Y, M3X, M3Y, M4X, M4Y, M5X, M5Y, M6X, M6Y, M7X, M7Y; + uint8_t MX8; // Sprite-X Bit 8 $D010 + uint8_t YSCROLL: 3, RSEL: 1, DEN: 1, BMM: 1, ECM: 1, RST8: 1; // $D011 + uint8_t RASTER; // Rasterline $D012 + uint8_t LPX; // Lightpen X $D013 + uint8_t LPY; // Lightpen Y $D014 + uint8_t ME; // Sprite Enable $D015 + uint8_t XSCROLL: 3, CSEL: 1, MCM: 1, RES: 1, : 2; // $D016 + uint8_t MYE; // Sprite Y-Expansion $D017 + uint8_t : 1, CB: 3, VM: 4; // $D018 + uint8_t IRST: 1, IMBC: 1, IMMC: 1, ILP: 1, : 3, IRQ: 1; // $D019 + uint8_t ERST: 1, EMBC: 1, EMMC: 1, ELP: 1, : 4; // $D01A + uint8_t MDP; // Sprite-Daten-Priority $D01B + uint8_t MMC; // Sprite Multicolor $D01C + uint8_t MXE; // Sprite X-Expansion $D01D + uint8_t MM; // Sprite-Sprite collision $D01E + uint8_t MD; // Sprite-Data collision $D01F + uint8_t EC: 4, : 4; // Bordercolor $D020 + uint8_t B0C: 4, : 4; // Backgroundcolor 0 $D021 + uint8_t B1C: 4, : 4; // Backgroundcolor 1 $D022 + uint8_t B2C: 4, : 4; // Backgroundcolor 2 $D023 + uint8_t B3C: 4, : 4; // Backgroundcolor 3 $D024 + uint8_t MM0: 4, : 4; // Sprite Multicolor 0 $D025 + uint8_t MM1: 4, : 4; // Sprite Multicolor 1 $D026 + uint8_t M0C: 4, : 4; // Spritecolor 0 $D027 + uint8_t M1C: 4, : 4; // Spritecolor 1 $D028 + uint8_t M2C: 4, : 4; // Spritecolor 2 $D029 + uint8_t M3C: 4, : 4; // Spritecolor 3 $D02A + uint8_t M4C: 4, : 4; // Spritecolor 4 $D02B + uint8_t M5C: 4, : 4; // Spritecolor 5 $D02C + uint8_t M6C: 4, : 4; // Spritecolor 6 $D02D + uint8_t M7C: 4, : 4; // Spritecolor 7 $D02E + }; + }; + + //tsprite spriteInfo[8];//todo + uint16_t spriteLine[SPRITE_MAX_X]; + + uint8_t lineMemChr[40]; + uint8_t lineMemCol[40]; + uint8_t COLORRAM[1024]; + +}; + +void vic_do(void); +void vic_do_simple(void); +void vic_displaySimpleModeScreen(void); + +void vic_write(uint32_t address, uint8_t value) ; +uint8_t vic_read(uint32_t address); + +void vic_colorwrite(uint32_t address, uint8_t value); +uint8_t vic_colorread(uint32_t address); + +void vic_adrchange(void); + +void resetVic(void); + +#endif diff --git a/MCUME_teensy/teensy64/vic_palette.h b/MCUME_teensy/teensy64/vic_palette.h new file mode 100755 index 0000000..bc7080d --- /dev/null +++ b/MCUME_teensy/teensy64/vic_palette.h @@ -0,0 +1,112 @@ +/* + Copyright Frank Bösing, 2017 + + This file is part of Teensy64. + + Teensy64 is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Teensy64 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Teensy64. If not, see . + + Diese Datei ist Teil von Teensy64. + + Teensy64 ist Freie Software: Sie können es unter den Bedingungen + der GNU General Public License, wie von der Free Software Foundation, + Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren + veröffentlichten Version, weiterverbreiten und/oder modifizieren. + + Teensy64 wird in der Hoffnung, dass es nützlich sein wird, aber + OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite + Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. + Siehe die GNU General Public License für weitere Details. + + Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + Programm erhalten haben. Wenn nicht, siehe . + +*/ + +/* choose your "display"-type */ + +#if 1 // color display (default) + +// MACROS moved to vic implementations + +#elif 0 // B&W TV for real retro feeling. Looks great (ILI 9341 only) +#define PALETTE(r,g,b) ( ((((int)( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xF8) << 8 ) | \ + ( (((int) ( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xFC) << 3 ) | \ + ( (((int) ( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xFF) >> 3 )) + + +#elif 0 // green display (ILI 9341 only) +#define PALETTE(r,g,b) ( ( 0 ) | \ + ( (((int) ( 0.299f * r + 0.587f * g + 0.114f * b )) & 0xFC) << 3 ) | \ + ( 0 )) +// TODO: amber display +#endif + + + +/* chose one of these palettes: + VGA is 256 colors only (rrrgggbb) , subtle differences might not be visible +*/ + +#if 1 // "Deekay" (default) +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0x88,0x20,0x00), PALETTE(0x68,0xd0,0xa8), // black, white, red, cyan, + PALETTE(0xa8,0x38,0xa0), PALETTE(0x50,0xb8,0x18), PALETTE(0x18,0x10,0x90), PALETTE(0xf0,0xe8,0x58), // purple, green, blue, yellow + PALETTE(0xa0,0x48,0x00), PALETTE(0x47,0x2b,0x1b), PALETTE(0xc8,0x78,0x70), PALETTE(0x48,0x48,0x48), // orange, brown, lightred, grey1, + PALETTE(0x80,0x80,0x80), PALETTE(0x98,0xff,0x98), PALETTE(0x50,0x90,0xd0), PALETTE(0xb8,0xb8,0xb8) // grey2, lightgreen, lightblue, grey3 +}; + +#elif 0 // VICE vice.vpl +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xFD,0xFE,0xFC), PALETTE(0xBE,0x1a,0x24), PALETTE(0x30,0xe6,0xc6), // black, white, red, cyan, + PALETTE(0xb4,0x1a,0xe2), PALETTE(0x1f,0xd2,0x1e), PALETTE(0x21,0x1b,0xae), PALETTE(0xdf,0xf6,0x0a), // purple, green, blue, yellow + PALETTE(0xb8,0x41,0x04), PALETTE(0x6a,0x33,0x04), PALETTE(0xfe,0x4a,0x57), PALETTE(0x42,0x45,0x40), // orange, brown, lightred, grey1, + PALETTE(0x70,0x74,0x6f), PALETTE(0x59,0xfe,0x59), PALETTE(0x5f,0x53,0xfe), PALETTE(0xa4,0xa7,0xa2) // grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 // "PEPTO" http://www.pepto.de/projects/colorvic/2001/ +static const uint16_t palette[16] = { + 0x0000, 0xFFFF, 0x69A5, 0x7536, 0x69F0, 0x5C68, 0x314F, 0xBE2D,// black, white, red, cyan, purple, green, blue, yellow + 0x6A64, 0x41C0, 0x9B2B, 0x4228, 0x6B6D, 0x9E90, 0x6AF6, 0x94B2 // orange, brown, lightred, grey1, grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 // "GODOT" http://www.godot64.de/german/hpalet.htm +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0x88,0x00,0x00), PALETTE(0xaa,0xff,0xee), // black, white, red, cyan, + PALETTE(0xcc,0x44,0xcc), PALETTE(0x00,0xcc,0x55), PALETTE(0x00,0x00,0xaa), PALETTE(0xee,0xee,0x77), // purple, green, blue, yellow + PALETTE(0xdd,0x88,0x55), PALETTE(0x66,0x44,0x00), PALETTE(0xff,0x77,0x77), PALETTE(0x33,0x33,0x33), // orange, brown, lightred, grey1, + PALETTE(0x77,0x77,0x77), PALETTE(0xaa,0xff,0x66), PALETTE(0x00,0x88,0xff), PALETTE(0xbb,0xbb,0xbb) // grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 // "FRODO" +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0xcc,0x00,0x00), PALETTE(0x00,0xff,0xcc), // black, white, red, cyan, + PALETTE(0xff,0x00,0xff), PALETTE(0x00,0xcc,0x00), PALETTE(0x00,0x00,0xcc), PALETTE(0xff,0xff,0x00), // purple, green, blue, yellow + PALETTE(0xff,0x88,0x00), PALETTE(0x88,0x44,0x00), PALETTE(0xff,0x88,0x88), PALETTE(0x44,0x44,0x44), // orange, brown, lightred, grey1, + PALETTE(0x88,0x88,0x88), PALETTE(0x88,0xff,0x88), PALETTE(0x88,0x88,0xff), PALETTE(0xcc,0xcc,0xcc) // grey2, lightgreen, lightblue, grey3 +}; + + +#elif 0 //RGB (full saturated colors - only good for testing) +static const uint16_t palette[16] = { + PALETTE(0x00,0x00,0x00), PALETTE(0xff,0xff,0xff), PALETTE(0xff,0x00,0x00), PALETTE(0x00,0xff,0xff), // black, white, red, cyan, + PALETTE(0xff,0x00,0xff), PALETTE(0x00,0xff,0x00), PALETTE(0x00,0x00,0xff), PALETTE(0xff,0xff,0x00), // purple, green, blue, yellow + PALETTE(0xff,0x80,0x00), PALETTE(0x80,0x40,0x00), PALETTE(0xff,0x80,0x80), PALETTE(0x40,0x40,0x40), // orange, brown, lightred, grey1, + PALETTE(0x80,0x80,0x80), PALETTE(0x80,0xff,0x80), PALETTE(0x80,0x80,0xff), PALETTE(0xc0,0xc0,0xc0) // grey2, lightgreen, lightblue, grey3 +}; +#endif + +#undef BW diff --git a/MCUME_teensy/teensy800/.DS_Store b/MCUME_teensy/teensy800/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensy800/.DS_Store differ diff --git a/MCUME_teensy/teensy800/AudioPlaySystem.cpp b/MCUME_teensy/teensy800/AudioPlaySystem.cpp new file mode 100644 index 0000000..e6b82e1 --- /dev/null +++ b/MCUME_teensy/teensy800/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void POKEYSND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + POKEYSND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensy800/AudioPlaySystem.h b/MCUME_teensy/teensy800/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensy800/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensy800/akey.h b/MCUME_teensy/teensy800/akey.h new file mode 100644 index 0000000..06e4939 --- /dev/null +++ b/MCUME_teensy/teensy800/akey.h @@ -0,0 +1,239 @@ +#ifndef AKEY_H_ +#define AKEY_H_ +/* akey.h: Atari key codes */ + +/* INPUT_key_code values */ +#define AKEY_NONE -1 + +/* Special key codes. */ +#define AKEY_WARMSTART -2 +#define AKEY_COLDSTART -3 +#define AKEY_EXIT -4 +#define AKEY_BREAK -5 +#define AKEY_UI -7 +#define AKEY_SCREENSHOT -8 +#define AKEY_SCREENSHOT_INTERLACE -9 +#define AKEY_START -10 +#define AKEY_SELECT -11 +#define AKEY_OPTION -12 +#define AKEY_PBI_BB_MENU -13 +#define AKEY_CX85_1 -14 +#define AKEY_CX85_2 -15 +#define AKEY_CX85_3 -16 +#define AKEY_CX85_4 -17 +#define AKEY_CX85_5 -18 +#define AKEY_CX85_6 -19 +#define AKEY_CX85_7 -20 +#define AKEY_CX85_8 -21 +#define AKEY_CX85_9 -22 +#define AKEY_CX85_0 -23 +#define AKEY_CX85_PERIOD -24 +#define AKEY_CX85_MINUS -25 +#define AKEY_CX85_PLUS_ENTER -26 +#define AKEY_CX85_ESCAPE -27 +#define AKEY_CX85_NO -28 +#define AKEY_CX85_DELETE -29 +#define AKEY_CX85_YES -30 +#define AKEY_TURBO -31 +#ifdef USE_UI_BASIC_ONSCREEN_KEYBOARD +#define AKEY_KEYB -32 +#endif +#ifdef DIRECTX + /* special menu directives */ + #define AKEY32_MENU_SAVE_CONFIG -107 + #define AKEY32_UI_MOUSE_CLICK -108 +#endif + +#define AKEY_SHFT 0x40 +#define AKEY_CTRL 0x80 +#define AKEY_SHFTCTRL 0xc0 + +#define AKEY_0 0x32 +#define AKEY_1 0x1f +#define AKEY_2 0x1e +#define AKEY_3 0x1a +#define AKEY_4 0x18 +#define AKEY_5 0x1d +#define AKEY_6 0x1b +#define AKEY_7 0x33 +#define AKEY_8 0x35 +#define AKEY_9 0x30 + +#define AKEY_CTRL_0 (AKEY_CTRL | AKEY_0) +#define AKEY_CTRL_1 (AKEY_CTRL | AKEY_1) +#define AKEY_CTRL_2 (AKEY_CTRL | AKEY_2) +#define AKEY_CTRL_3 (AKEY_CTRL | AKEY_3) +#define AKEY_CTRL_4 (AKEY_CTRL | AKEY_4) +#define AKEY_CTRL_5 (AKEY_CTRL | AKEY_5) +#define AKEY_CTRL_6 (AKEY_CTRL | AKEY_6) +#define AKEY_CTRL_7 (AKEY_CTRL | AKEY_7) +#define AKEY_CTRL_8 (AKEY_CTRL | AKEY_8) +#define AKEY_CTRL_9 (AKEY_CTRL | AKEY_9) + +#define AKEY_a 0x3f +#define AKEY_b 0x15 +#define AKEY_c 0x12 +#define AKEY_d 0x3a +#define AKEY_e 0x2a +#define AKEY_f 0x38 +#define AKEY_g 0x3d +#define AKEY_h 0x39 +#define AKEY_i 0x0d +#define AKEY_j 0x01 +#define AKEY_k 0x05 +#define AKEY_l 0x00 +#define AKEY_m 0x25 +#define AKEY_n 0x23 +#define AKEY_o 0x08 +#define AKEY_p 0x0a +#define AKEY_q 0x2f +#define AKEY_r 0x28 +#define AKEY_s 0x3e +#define AKEY_t 0x2d +#define AKEY_u 0x0b +#define AKEY_v 0x10 +#define AKEY_w 0x2e +#define AKEY_x 0x16 +#define AKEY_y 0x2b +#define AKEY_z 0x17 + +#define AKEY_A (AKEY_SHFT | AKEY_a) +#define AKEY_B (AKEY_SHFT | AKEY_b) +#define AKEY_C (AKEY_SHFT | AKEY_c) +#define AKEY_D (AKEY_SHFT | AKEY_d) +#define AKEY_E (AKEY_SHFT | AKEY_e) +#define AKEY_F (AKEY_SHFT | AKEY_f) +#define AKEY_G (AKEY_SHFT | AKEY_g) +#define AKEY_H (AKEY_SHFT | AKEY_h) +#define AKEY_I (AKEY_SHFT | AKEY_i) +#define AKEY_J (AKEY_SHFT | AKEY_j) +#define AKEY_K (AKEY_SHFT | AKEY_k) +#define AKEY_L (AKEY_SHFT | AKEY_l) +#define AKEY_M (AKEY_SHFT | AKEY_m) +#define AKEY_N (AKEY_SHFT | AKEY_n) +#define AKEY_O (AKEY_SHFT | AKEY_o) +#define AKEY_P (AKEY_SHFT | AKEY_p) +#define AKEY_Q (AKEY_SHFT | AKEY_q) +#define AKEY_R (AKEY_SHFT | AKEY_r) +#define AKEY_S (AKEY_SHFT | AKEY_s) +#define AKEY_T (AKEY_SHFT | AKEY_t) +#define AKEY_U (AKEY_SHFT | AKEY_u) +#define AKEY_V (AKEY_SHFT | AKEY_v) +#define AKEY_W (AKEY_SHFT | AKEY_w) +#define AKEY_X (AKEY_SHFT | AKEY_x) +#define AKEY_Y (AKEY_SHFT | AKEY_y) +#define AKEY_Z (AKEY_SHFT | AKEY_z) + +#define AKEY_CTRL_a (AKEY_CTRL | AKEY_a) +#define AKEY_CTRL_b (AKEY_CTRL | AKEY_b) +#define AKEY_CTRL_c (AKEY_CTRL | AKEY_c) +#define AKEY_CTRL_d (AKEY_CTRL | AKEY_d) +#define AKEY_CTRL_e (AKEY_CTRL | AKEY_e) +#define AKEY_CTRL_f (AKEY_CTRL | AKEY_f) +#define AKEY_CTRL_g (AKEY_CTRL | AKEY_g) +#define AKEY_CTRL_h (AKEY_CTRL | AKEY_h) +#define AKEY_CTRL_i (AKEY_CTRL | AKEY_i) +#define AKEY_CTRL_j (AKEY_CTRL | AKEY_j) +#define AKEY_CTRL_k (AKEY_CTRL | AKEY_k) +#define AKEY_CTRL_l (AKEY_CTRL | AKEY_l) +#define AKEY_CTRL_m (AKEY_CTRL | AKEY_m) +#define AKEY_CTRL_n (AKEY_CTRL | AKEY_n) +#define AKEY_CTRL_o (AKEY_CTRL | AKEY_o) +#define AKEY_CTRL_p (AKEY_CTRL | AKEY_p) +#define AKEY_CTRL_q (AKEY_CTRL | AKEY_q) +#define AKEY_CTRL_r (AKEY_CTRL | AKEY_r) +#define AKEY_CTRL_s (AKEY_CTRL | AKEY_s) +#define AKEY_CTRL_t (AKEY_CTRL | AKEY_t) +#define AKEY_CTRL_u (AKEY_CTRL | AKEY_u) +#define AKEY_CTRL_v (AKEY_CTRL | AKEY_v) +#define AKEY_CTRL_w (AKEY_CTRL | AKEY_w) +#define AKEY_CTRL_x (AKEY_CTRL | AKEY_x) +#define AKEY_CTRL_y (AKEY_CTRL | AKEY_y) +#define AKEY_CTRL_z (AKEY_CTRL | AKEY_z) + +#define AKEY_CTRL_A (AKEY_CTRL | AKEY_A) +#define AKEY_CTRL_B (AKEY_CTRL | AKEY_B) +#define AKEY_CTRL_C (AKEY_CTRL | AKEY_C) +#define AKEY_CTRL_D (AKEY_CTRL | AKEY_D) +#define AKEY_CTRL_E (AKEY_CTRL | AKEY_E) +#define AKEY_CTRL_F (AKEY_CTRL | AKEY_F) +#define AKEY_CTRL_G (AKEY_CTRL | AKEY_G) +#define AKEY_CTRL_H (AKEY_CTRL | AKEY_H) +#define AKEY_CTRL_I (AKEY_CTRL | AKEY_I) +#define AKEY_CTRL_J (AKEY_CTRL | AKEY_J) +#define AKEY_CTRL_K (AKEY_CTRL | AKEY_K) +#define AKEY_CTRL_L (AKEY_CTRL | AKEY_L) +#define AKEY_CTRL_M (AKEY_CTRL | AKEY_M) +#define AKEY_CTRL_N (AKEY_CTRL | AKEY_N) +#define AKEY_CTRL_O (AKEY_CTRL | AKEY_O) +#define AKEY_CTRL_P (AKEY_CTRL | AKEY_P) +#define AKEY_CTRL_Q (AKEY_CTRL | AKEY_Q) +#define AKEY_CTRL_R (AKEY_CTRL | AKEY_R) +#define AKEY_CTRL_S (AKEY_CTRL | AKEY_S) +#define AKEY_CTRL_T (AKEY_CTRL | AKEY_T) +#define AKEY_CTRL_U (AKEY_CTRL | AKEY_U) +#define AKEY_CTRL_V (AKEY_CTRL | AKEY_V) +#define AKEY_CTRL_W (AKEY_CTRL | AKEY_W) +#define AKEY_CTRL_X (AKEY_CTRL | AKEY_X) +#define AKEY_CTRL_Y (AKEY_CTRL | AKEY_Y) +#define AKEY_CTRL_Z (AKEY_CTRL | AKEY_Z) + +#define AKEY_HELP 0x11 +#define AKEY_DOWN 0x8f +#define AKEY_LEFT 0x86 +#define AKEY_RIGHT 0x87 +#define AKEY_UP 0x8e +#define AKEY_BACKSPACE 0x34 +#define AKEY_DELETE_CHAR 0xb4 +#define AKEY_DELETE_LINE 0x74 +#define AKEY_INSERT_CHAR 0xb7 +#define AKEY_INSERT_LINE 0x77 +#define AKEY_ESCAPE 0x1c +#define AKEY_ATARI 0x27 +#define AKEY_CAPSLOCK 0x7c +#define AKEY_CAPSTOGGLE 0x3c +#define AKEY_TAB 0x2c +#define AKEY_SETTAB 0x6c +#define AKEY_CLRTAB 0xac +#define AKEY_RETURN 0x0c +#define AKEY_SPACE 0x21 +#define AKEY_EXCLAMATION 0x5f +#define AKEY_DBLQUOTE 0x5e +#define AKEY_HASH 0x5a +#define AKEY_DOLLAR 0x58 +#define AKEY_PERCENT 0x5d +#define AKEY_AMPERSAND 0x5b +#define AKEY_QUOTE 0x73 +#define AKEY_AT 0x75 +#define AKEY_PARENLEFT 0x70 +#define AKEY_PARENRIGHT 0x72 +#define AKEY_LESS 0x36 +#define AKEY_GREATER 0x37 +#define AKEY_EQUAL 0x0f +#define AKEY_QUESTION 0x66 +#define AKEY_MINUS 0x0e +#define AKEY_PLUS 0x06 +#define AKEY_ASTERISK 0x07 +#define AKEY_SLASH 0x26 +#define AKEY_COLON 0x42 +#define AKEY_SEMICOLON 0x02 +#define AKEY_COMMA 0x20 +#define AKEY_FULLSTOP 0x22 +#define AKEY_UNDERSCORE 0x4e +#define AKEY_BRACKETLEFT 0x60 +#define AKEY_BRACKETRIGHT 0x62 +#define AKEY_CIRCUMFLEX 0x47 +#define AKEY_BACKSLASH 0x46 +#define AKEY_BAR 0x4f +#define AKEY_CLEAR (AKEY_SHFT | AKEY_LESS) +#define AKEY_CARET (AKEY_SHFT | AKEY_ASTERISK) +#define AKEY_F1 0x03 +#define AKEY_F2 0x04 +#define AKEY_F3 0x13 +#define AKEY_F4 0x14 + +/* Following keys cannot be read with both shift and control pressed: + J K L ; + * Z X C V B F1 F2 F3 F4 HELP */ + + +#endif /* AKEY_H_ */ diff --git a/MCUME_teensy/teensy800/antic.c b/MCUME_teensy/teensy800/antic.c new file mode 100644 index 0000000..542f5fa --- /dev/null +++ b/MCUME_teensy/teensy800/antic.c @@ -0,0 +1,4150 @@ +/* + * antic.c - ANTIC chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include + +#include "antic.h" +#include "cpu.h" +#include "gtia.h" +#include "memory.h" +#include "pokey.h" + +#ifdef NEW_CYCLE_EXACT +#include "cycle_map.h" +#endif + + +UWORD Screen_atari[ATARI_WIDTH / 2]; // = NULL; +#define scrn_line 0 //(ATARI_WIDTH / 2) + +#define DRAWLINE() \ + if ( (ANTIC_ypos > 8) && (ANTIC_ypos < 248)) { \ + emu_DrawLine((unsigned char *)&Screen_atari[32/sizeof(Screen_atari[0])], 320, 240, ANTIC_ypos-8); \ + } + + +#define LCHOP 3 /* do not build leftmost 0..3 characters in wide mode */ +#define RCHOP 3 /* do not build rightmost 0..3 characters in wide mode */ + +int ANTIC_break_ypos = 999; +#if !defined(BASIC) && !defined(CURSES_BASIC) +static int gtia_bug_active = FALSE; /* The GTIA bug mode is active */ +#endif +#ifdef NEW_CYCLE_EXACT +static void draw_partial_scanline(int l,int r); +static void update_scanline_chbase(void); +static void update_scanline_invert(void); +static void update_scanline_blank(void); +const int *ANTIC_cpu2antic_ptr; +const int *ANTIC_antic2cpu_ptr; +int ANTIC_delayed_wsync = 0; +static int dmactl_changed = 0; +static UBYTE delayed_DMACTL; +static int draw_antic_ptr_changed = 0; +static UBYTE need_load; +static int dmactl_bug_chdata; +#endif /* NEW_CYCLE_EXACT */ +#ifndef NO_SIMPLE_PAL_BLENDING +int ANTIC_pal_blending = 0; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* Video memory access is hidden behind these macros. It allows to track dirty video memory + to improve video system performance */ +#ifdef DIRTYRECT + +static UWORD *scratchUWordPtr; +static UWORD scratchUWord; +static ULONG *scratchULongPtr; +static ULONG scratchULong; +static UBYTE *scratchUBytePtr; +static UBYTE scratchUByte; + + +#ifdef NODIRTYCOMPARE + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = (val); \ + } while (0) +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = (val); \ + } while (0) +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = (val); \ + } while (0) +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE*) (ptr); \ + scratchULong = (ULONG) (size); \ + memset(Screen_dirty + (((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3), 1, scratchULong >> 3); \ + memset(scratchUBytePtr, (val), scratchULong); \ + } while (0) + +#else /* NODIRTYCOMPARE not defined: */ + +#define WRITE_VIDEO(ptr, val) \ + do { \ + scratchUWordPtr = (ptr); \ + scratchUWord = (val); \ + if (*scratchUWordPtr != scratchUWord) { \ + Screen_dirty[((ULONG) scratchUWordPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUWordPtr = scratchUWord; \ + } \ + } while (0) +#ifndef WORDS_UNALIGNED_OK +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#else +#define WRITE_VIDEO_LONG(ptr, val) \ + do { \ + scratchULongPtr = (ptr); \ + scratchULong = (val); \ + if (*scratchULongPtr != scratchULong) { \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari) >> 3] = 1; \ + Screen_dirty[((ULONG) scratchULongPtr - (ULONG) Screen_atari + 2) >> 3] = 1; \ + *scratchULongPtr = scratchULong; \ + } \ + } while (0) +#endif +#define WRITE_VIDEO_BYTE(ptr, val) \ + do { \ + scratchUBytePtr = (ptr); \ + scratchUByte = (val); \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } while (0) +static UBYTE *scratchFillLimit; +#define FILL_VIDEO(ptr, val, size) \ + do { \ + scratchUBytePtr = (UBYTE *) (ptr); \ + scratchUByte = (UBYTE) (val); \ + scratchFillLimit = scratchUBytePtr + (size); \ + for (; scratchUBytePtr < scratchFillLimit; scratchUBytePtr++) { \ + if (*scratchUBytePtr != scratchUByte) { \ + Screen_dirty[((ULONG) scratchUBytePtr - (ULONG) Screen_atari) >> 3] = 1; \ + *scratchUBytePtr = scratchUByte; \ + } \ + } \ + } while (0) + +#endif /* NODIRTYCOMPARE */ + +#else /* DIRTYRECT not defined: */ + +#define WRITE_VIDEO(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_LONG(ptr, val) (*(ptr) = val) +#define WRITE_VIDEO_BYTE(ptr, val) (*(ptr) = val) +#define FILL_VIDEO(ptr, val, size) memset(ptr, val, size) + +#endif /* DIRTYRECT */ + +#define READ_VIDEO_LONG(ptr) (*(ptr)) + +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size) +{ + FILL_VIDEO(ptr, val, size); +} + +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val) +{ + WRITE_VIDEO_BYTE(ptr, val); +} + + +/* Memory access helpers----------------------------------------------------- */ +/* Some optimizations result in unaligned 32-bit accesses. These macros have + been introduced for machines that don't allow unaligned memory accesses. */ + +#ifdef DIRTYRECT +/* STAT_UNALIGNED_WORDS doesn't work with DIRTYRECT */ +#define WRITE_VIDEO_LONG_UNALIGNED WRITE_VIDEO_LONG +#else +#define WRITE_VIDEO_LONG_UNALIGNED(ptr, val) UNALIGNED_PUT_LONG((ptr), (val), Screen_atari_write_long_stat) +#endif + +#ifdef WORDS_UNALIGNED_OK +#define IS_ZERO_ULONG(x) (! UNALIGNED_GET_LONG(x, pm_scanline_read_long_stat)) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p), (l)[(x) >> 4]); \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) (p) + 1, (l)[(x) & 0xf]); \ + } +#else /* WORDS_UNALIGNED_OK */ +#define IS_ZERO_ULONG(x) (!((const UBYTE *)(x))[0] && !((const UBYTE *)(x))[1] && !((const UBYTE *)(x))[2] && !((const UBYTE *)(x))[3]) +#define DO_GTIA_BYTE(p, l, x) { \ + WRITE_VIDEO((UWORD *) (p), (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 1, (UWORD) ((l)[(x) >> 4])); \ + WRITE_VIDEO((UWORD *) (p) + 2, (UWORD) ((l)[(x) & 0xf])); \ + WRITE_VIDEO((UWORD *) (p) + 3, (UWORD) ((l)[(x) & 0xf])); \ + } +#endif /* WORDS_UNALIGNED_OK */ + +/* ANTIC Registers --------------------------------------------------------- */ + +UBYTE ANTIC_DMACTL; +UBYTE ANTIC_CHACTL; +UWORD ANTIC_dlist; +UBYTE ANTIC_HSCROL; +UBYTE ANTIC_VSCROL; +UBYTE ANTIC_PMBASE; +UBYTE ANTIC_CHBASE; +UBYTE ANTIC_NMIEN; +UBYTE ANTIC_NMIST; + +/* ANTIC Memory ------------------------------------------------------------ */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) +static UBYTE antic_memory[52]; +#define ANTIC_margin 4 +/* It's number of bytes in antic_memory, which are never loaded, but may be + read in wide playfield mode. These bytes are uninitialized, because on + real computer there's some kind of 'garbage'. Possibly 1 is enough, but + 4 bytes surely won't cause negative indexes. :) */ + +/* Screen ----------------------------------------------------------------- + Define screen as ULONG to ensure that it is Longword aligned. + This allows special optimisations under certain conditions. + ------------------------------------------------------------------------ */ + +static UWORD *scrn_ptr; +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Separate access to XE extended memory ----------------------------------- */ +/* It's available in 130 XE and 320 KB Compy Shop. + Note: during ANTIC access to extended memory in Compy Shop Self Test + is disabled. It is unknown if this is true for real 130 XE. If not, + then some extra code has to be added to: + - check if selftest_enabled is set + - check if the address is in range 0x5000..0x57ff + - if both conditions are true, then access memory instead of ANTIC_xe_ptr */ + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in MEMORY_mem[0x4000..0x7fff], + then NULL. */ +const UBYTE *ANTIC_xe_ptr = NULL; + +/* ANTIC Timing -------------------------------------------------------------- + +NOTE: this information was written before NEW_CYCLE_EXACT was introduced! + +I've introduced global variable ANTIC_xpos, which contains current number of cycle +in a line. This simplifies ANTIC/CPU timing much. The CPU_GO() function which +emulates CPU is now void and is called with ANTIC_xpos limit, below which CPU can go. + +All strange variables holding 'unused cycles', 'DMA cycles', 'allocated cycles' +etc. are removed. Simply whenever ANTIC fetches a byte, it takes single cycle, +which can be done now with ANTIC_xpos++. There's only one exception: in text modes +2-5 ANTIC takes more bytes than cycles, because it does less than ANTIC_DMAR refresh +cycles. + +Now emulation is really screenline-oriented. We do ANTIC_ypos++ after a line, +not inside it. + +This simplified diagram shows when what is done in a line: + +MDPPPPDD..............(------R/S/F------).......... +^ ^ ^ ^ ^ ^ ^ ^ ---> time/xpos +0 | NMIST_C NMI_C SCR_C WSYNC_C|LINE_C +VSCON_C VSCOF_C + +M - fetch Missiles +D - fetch DL +P - fetch Players +S - fetch Screen +F - fetch Font (in text modes) +R - refresh Memory (ANTIC_DMAR cycles) + +Only Memory Refresh happens in every line, other tasks are optional. + +Below are exact diagrams for some non-scrolled modes: + 11111111111111 + 11111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111 +012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 + /--------------------------narrow------------------------------\ + /----------------------------------normal--------------------------------------\ + /-------------------------------------------wide--------------------------------------------\ + +blank line: +MDPPPPDD.................R...R...R...R...R...R...R...R...R........................................................ + +mode 8,9: +MDPPPPDD....S.......S....R..SR...R..SR...R..SR...R..SR...R..S.......S.......S.......S.......S.......S............. + +mode a,b,c: +MDPPPPDD....S...S...S...SR..SR..SR..SR..SR..SR..SR..SR..SR..S...S...S...S...S...S...S...S...S...S...S...S......... + +mode d,e,f: +MDPPPPDD....S.S.S.S.S.S.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.SRS.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S......... + +Notes: +* At the beginning of a line fetched are: + - a byte of Missiles + - a byte of DL (instruction) + - four bytes of Players + - two bytes of DL argument (jump or screen address) + The emulator, however, fetches them all continuously. + +* Refresh cycles and Screen/Font fetches have been tested for some modes (see above). + This is for making the emulator more accurate, able to change colour registers, + sprite positions or GTIA modes during scanline. These modes are the most commonly used + with those effects. + Currently this isn't implemented, and all R/S/F cycles are fetched continuously in *all* modes + (however, right number of cycles is taken in every mode, basing on screen width and HSCROL). + +There are a few constants representing following events: + +* VSCON_C - in first VSC line dctr is loaded with VSCROL + +* ANTIC_NMIST_C - NMIST is updated (set to 0x9f on DLI, set to 0x5f on VBLKI) + +* ANTIC_NMI_C - If NMIEN permits, NMI interrupt is generated + +* SCR_C - We draw whole line of screen. On a real computer you can change + ANTIC/GTIA registers while displaying screen, however this emulator + isn't that accurate. + +* ANTIC_WSYNC_C - ANTIC holds CPU until this moment, when WSYNC is written + +* VSCOF_C - in last VSC line dctr is compared with VSCROL + +* ANTIC_LINE_C - simply end of line (this used to be called CPUL) + +All constants are determined by tests on real Atari computer. It is assumed, +that ANTIC registers are read with LDA, LDX, LDY and written with STA, STX, +STY, all in absolute addressing mode. All these instructions last 4 cycles +and perform read/write operation in last cycle. The CPU emulation should +correctly emulate WSYNC and add cycles for current instruction BEFORE +executing it. That's why VSCOF_C > ANTIC_LINE_C is correct. + +How WSYNC is now implemented: + +* On writing WSYNC: + - if ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C, + we only change ANTIC_xpos to ANTIC_WSYNC_C - that's all + - otherwise we set ANTIC_wsync_halt and change ANTIC_xpos to ANTIC_xpos_limit causing CPU_GO() + to return + +* At the beginning of CPU_GO() (CPU emulation), when ANTIC_wsync_halt is set: + - if ANTIC_xpos_limit < ANTIC_WSYNC_C we return + - else we set ANTIC_xpos to ANTIC_WSYNC_C, reset ANTIC_wsync_halt and emulate some cycles + +We don't emulate ANTIC_NMIST_C, ANTIC_NMI_C and SCR_C if it is unnecessary. +These are all cases: + +* Common overscreen line + Nothing happens except that ANTIC gets ANTIC_DMAR cycles: + ANTIC_xpos += ANTIC_DMAR; GOEOL; + +* First overscreen line - start of vertical blank + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x5f + if (ANTIC_NMIEN & 0x40) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - ANTIC gets ANTIC_DMAR cycles + - CPU goes until ANTIC_LINE_C + +* Screen line without DLI + - ANTIC fetches DL and P/MG + - CPU goes until SCR_C + - ANTIC draws whole line fetching Screen/Font and refreshing memory + - CPU goes until ANTIC_LINE_C + +* Screen line with DLI + - ANTIC fetches DL and P/MG + - CPU goes until ANTIC_NMIST_C + - ANTIC sets NMIST to 0x9f + if (ANTIC_NMIEN & 0x80) { + - CPU goes until ANTIC_NMI_C + - ANTIC forces NMI + } + - CPU goes until SCR_C + - ANTIC draws line with ANTIC_DMAR + - CPU goes until ANTIC_LINE_C + + -------------------------------------------------------------------------- */ + +#define VSCON_C 1 +#define SCR_C 28 +#define VSCOF_C 112 + +unsigned int ANTIC_screenline_cpu_clock = 0; + +#ifdef NEW_CYCLE_EXACT +#define UPDATE_DMACTL do{if (dmactl_changed) { \ + dmactl_changed = 0; \ + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, delayed_DMACTL); \ + } \ + if (draw_antic_ptr_changed) { \ + draw_antic_ptr_changed = 0; \ + draw_antic_ptr = saved_draw_antic_ptr; \ + }}while(0) +#else +#define UPDATE_DMACTL do{}while(0) +#endif /* NEW_CYCLE_EXACT */ +#define UPDATE_GTIA_BUG /* update GTIA if it was in bug mode */\ + do{if(gtia_bug_active) {\ + /* restore draw_antic_ptr for multi-line modes*/\ + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode];\ + gtia_bug_active = FALSE;\ + }}while(0) +#define GOEOL_CYCLE_EXACT CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_LINE_C]); \ + ANTIC_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; \ + ANTIC_xpos -= ANTIC_LINE_C; \ + ANTIC_screenline_cpu_clock += ANTIC_LINE_C; \ + DRAWLINE();ANTIC_ypos++; \ + GTIA_UpdatePmplColls(); +#define GOEOL CPU_GO(ANTIC_LINE_C); ANTIC_xpos -= ANTIC_LINE_C; ANTIC_screenline_cpu_clock += ANTIC_LINE_C; UPDATE_DMACTL; DRAWLINE();ANTIC_ypos++; UPDATE_GTIA_BUG +#define OVERSCREEN_LINE ANTIC_xpos += ANTIC_DMAR; GOEOL + +int ANTIC_xpos = 0; +int ANTIC_xpos_limit; +int ANTIC_wsync_halt = FALSE; + +int ANTIC_ypos; /* Line number - lines 8..247 are on screen */ + +/* Timing in first line of modes 2-5 +In these modes ANTIC takes more bytes than cycles. Despite this, it would be +possible that SCR_C + cycles_taken > ANTIC_WSYNC_C. To avoid this we must take some +cycles before SCR_C. before_cycles contains number of them, while extra_cycles +contains difference between bytes taken and cycles taken plus before_cycles. */ + +#define BEFORE_CYCLES (SCR_C - 28) +/* It's number of cycles taken before SCR_C for not scrolled, narrow playfield. + It wasn't tested, but should be ok. ;) */ + +/* Light pen support ------------------------------------------------------- */ + +static UBYTE PENH; +static UBYTE PENV; +UBYTE ANTIC_PENH_input = 0x00; +UBYTE ANTIC_PENV_input = 0xff; + +#ifndef BASIC + +/* Internal ANTIC registers ------------------------------------------------ */ + +static UWORD screenaddr; /* Screen Pointer */ +static UBYTE IR; /* Instruction Register */ +static UBYTE anticmode; /* Antic mode */ +static UBYTE dctr; /* Delta Counter */ +static UBYTE lastline; /* dctr limit */ +static UBYTE need_dl; /* boolean: fetch DL next line */ +static UBYTE vscrol_off; /* boolean: displaying line ending VSC */ + +#endif + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Pre-computed values for improved performance ---------------------------- */ + +#define NORMAL0 0 /* modes 2,3,4,5,0xd,0xe,0xf */ +#define NORMAL1 1 /* modes 6,7,0xa,0xb,0xc */ +#define NORMAL2 2 /* modes 8,9 */ +#define SCROLL0 3 /* modes 2,3,4,5,0xd,0xe,0xf with HSC */ +#define SCROLL1 4 /* modes 6,7,0xa,0xb,0xc with HSC */ +#define SCROLL2 5 /* modes 8,9 with HSC */ +static int md; /* current mode NORMAL0..SCROLL2 */ +/* tables for modes NORMAL0..SCROLL2 */ +static int chars_read[6]; +static int chars_displayed[6]; +static int x_min[6]; +static int ch_offset[6]; +static int load_cycles[6]; +static int font_cycles[6]; +static int before_cycles[6]; +static int extra_cycles[6]; + +/* border parameters for current display width */ +static int left_border_chars; +static int right_border_start; +#ifdef NEW_CYCLE_EXACT +static int left_border_start = LCHOP * 4; +static int right_border_end = (48 - RCHOP) * 4; +#define LBORDER_START left_border_start +#define RBORDER_END right_border_end +#else +#define LBORDER_START (LCHOP * 4) +#define RBORDER_END ((48 - RCHOP) * 4) +#endif /* NEW_CYCLE_EXACT */ + +/* set with CHBASE *and* CHACTL - bits 0..2 set if flip on */ +static UWORD chbase_20; /* CHBASE for 20 character mode */ + +/* set with CHACTL */ +static UBYTE invert_mask; +static int blank_mask; + +/* A scanline of AN0 and AN1 signals as transmitted from ANTIC to GTIA. + In every byte, bit 0 is AN0 and bit 1 is AN1 */ +static UBYTE an_scanline[ATARI_WIDTH / 2 + 8]; + +/* lookup tables */ +static UBYTE blank_lookup[256]; +static UWORD lookup2[256]; +ULONG ANTIC_lookup_gtia9[16]; +ULONG ANTIC_lookup_gtia11[16]; +static UBYTE playfield_lookup[257]; +static UBYTE mode_e_an_lookup[256]; + +/* Colour lookup table + This single table replaces 4 previously used: cl_word, cur_prior, + prior_table and pf_colls. It should be treated as a two-dimensional table, + with playfield colours in rows and PMG colours in columns: + no_PMG PM0 PM1 PM01 PM2 PM3 PM23 PM023 PM123 PM0123 PM25 PM35 PM235 colls ... ... + BAK + ... + HI2 + HI3 + PF0 + PF1 + PF2 + PF3 + The table contains word value (lsb = msb) of colour to be drawn. + The table is being updated taking current PRIOR setting into consideration. + '...' represent two unused columns and single unused row. + HI2 and HI3 are used only if colour_translation_table is being used. + They're colours of hi-res pixels on PF2 and PF3 respectively (PF2 is + default background for hi-res, PF3 is PM5). + Columns PM023, PM123 and PM0123 are used when PRIOR & 0xf equals any + of 5,7,0xc,0xd,0xe,0xf. The columns represent PM0, PM1 and PM01 respectively + covered by PM2 and/or PM3. This is to handle black colour on PF2 and PF3. + Columns PM25, PM35 and PM235 are used when PRIOR & 0x1f equals any + of 0x10,0x1a,0x1c,0x1e. The columns represent PM2, PM3 and PM23 + respectively covered by PM5. This to handle colour on PF0 and PF1: + PF3 if (PRIOR & 0x1f) == 0x10, PF0 or PF1 otherwise. + Additional column 'colls' holds collisions of playfields with PMG. */ + +UWORD ANTIC_cl[128]; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 +#define C_BLACK (C_PF3 | C_PM25) + +/* these are byte-offsets in the table, so left shift for indexing word table + has been avoided */ +#define COLOUR(x) (*(UWORD *) ((UBYTE *) ANTIC_cl + (x) )) +#define L_PM0 (2 * C_PM0) +#define L_PM1 (2 * C_PM1) +#define L_PM01 (2 * C_PM01) +#define L_PM2 (2 * C_PM2) +#define L_PM3 (2 * C_PM3) +#define L_PM23 (2 * C_PM23) +#define L_PM023 (2 * C_PM023) +#define L_PM123 (2 * C_PM123) +#define L_PM0123 (2 * C_PM0123) +#define L_PM25 (2 * C_PM25) +#define L_PM35 (2 * C_PM35) +#define L_PM235 (2 * C_PM235) +#define L_COLLS (2 * C_COLLS) +#define L_BAK (2 * C_BAK) +#define L_HI2 (2 * C_HI2) +#define L_HI3 (2 * C_HI3) +#define L_PF0 (2 * C_PF0) +#define L_PF1 (2 * C_PF1) +#define L_PF2 (2 * C_PF2) +#define L_PF3 (2 * C_PF3) +#define L_BLACK (2 * C_BLACK) + +/* Blank areas optimizations + Routines for most graphics modes take advantage of fact, that often + large areas of screen are background colour. If it is possible, 8 pixels + of background are drawn at once - with two longs or four words, if + the platform doesn't allow unaligned long access. + Artifacting also uses unaligned long access if it's supported. */ + +#ifdef WORDS_UNALIGNED_OK + +#define INIT_BACKGROUND_6 ULONG background = ANTIC_cl[C_PF2] | (((ULONG) ANTIC_cl[C_PF2]) << 16); +#define INIT_BACKGROUND_8 ULONG background = ANTIC_lookup_gtia9[0]; +#define DRAW_BACKGROUND(colreg) { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, background); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, background); \ + ptr += 4; \ + } +#define DRAW_ARTIF { \ + WRITE_VIDEO_LONG_UNALIGNED((ULONG *) ptr, art_curtable[(UBYTE) (screendata_tally >> 10)]); \ + WRITE_VIDEO_LONG_UNALIGNED(((ULONG *) ptr) + 1, art_curtable[(UBYTE) (screendata_tally >> 6)]); \ + ptr += 4; \ + } + +#else + +#define INIT_BACKGROUND_6 +#define INIT_BACKGROUND_8 +#define DRAW_BACKGROUND(colreg) {\ + WRITE_VIDEO(ptr, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 1, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 2, ANTIC_cl[colreg]); \ + WRITE_VIDEO(ptr + 3, ANTIC_cl[colreg]); \ + ptr += 4;\ + } +#define DRAW_ARTIF {\ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x03fc00) >> 9]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x03fc00) >> 9) + 1]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[(screendata_tally & 0x003fc0) >> 5]); \ + WRITE_VIDEO(ptr++, ((UWORD *) art_curtable)[((screendata_tally & 0x003fc0) >> 5) + 1]); \ + } + +#endif /* WORDS_UNALIGNED_OK */ + +#define DRAW_ARTIF_NEW {\ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x03f000) >> 12]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x00fc00) >> 10]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x003f00) >> 8]); \ + WRITE_VIDEO(ptr++, art_lookup_new[(screendata_tally & 0x000fc0) >> 6]); \ + } + +/* Hi-res modes optimizations + Now hi-res modes are drawn with words, not bytes. Endianess defaults + to little-endian. WORDS_BIGENDIAN should be defined when compiling on + a big-endian machine. */ + +#ifdef WORDS_BIGENDIAN +#define BYTE0_MASK 0xff00 +#define BYTE1_MASK 0x00ff +#define HIRES_MASK_01 0xfff0 +#define HIRES_MASK_10 0xf0ff +#define HIRES_LUM_01 0x000f +#define HIRES_LUM_10 0x0f00 +#else +#define BYTE0_MASK 0x00ff +#define BYTE1_MASK 0xff00 +#define HIRES_MASK_01 0xf0ff +#define HIRES_MASK_10 0xfff0 +#define HIRES_LUM_01 0x0f00 +#define HIRES_LUM_10 0x000f +#endif + +static UWORD hires_lookup_n[128]; +static UWORD hires_lookup_m[128]; +#define hires_norm(x) hires_lookup_n[(x) >> 1] +#define hires_mask(x) hires_lookup_m[(x) >> 1] + +#ifndef USE_COLOUR_TRANSLATION_TABLE +int ANTIC_artif_new = FALSE; /* New type of artifacting */ +UWORD ANTIC_hires_lookup_l[128]; /* accessed in gtia.c */ +#define hires_lum(x) ANTIC_hires_lookup_l[(x) >> 1] +#endif + +/* Player/Missile Graphics ------------------------------------------------- */ + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) +#define PF_COLLS(x) (((UBYTE *) &ANTIC_cl)[(x) + L_COLLS]) + +static int singleline; +int ANTIC_player_dma_enabled; +int ANTIC_player_gra_enabled; +int ANTIC_missile_dma_enabled; +int ANTIC_missile_gra_enabled; +int ANTIC_player_flickering; +int ANTIC_missile_flickering; + +static UWORD pmbase_s; +static UWORD pmbase_d; + +/* PMG lookup tables */ +static UBYTE pm_lookup_table[20][256]; +/* current PMG lookup table */ +static const UBYTE *pm_lookup_ptr; + +#define PL_00 0 /* 0x00,0x01,0x02,0x03,0x04,0x06,0x08,0x09,0x0a,0x0b */ +#define PL_05 1 /* 0x05,0x07,0x0c,0x0d,0x0e,0x0f */ +#define PL_10 2 /* 0x10,0x1a */ +#define PL_11 3 /* 0x11,0x18,0x19 */ +#define PL_12 4 /* 0x12 */ +#define PL_13 5 /* 0x13,0x1b */ +#define PL_14 6 /* 0x14,0x16 */ +#define PL_15 7 /* 0x15,0x17,0x1d,0x1f */ +#define PL_1c 8 /* 0x1c */ +#define PL_1e 9 /* 0x1e */ +#define PL_20 10 /* 0x20,0x21,0x22,0x23,0x24,0x26,0x28,0x29,0x2a,0x2b */ +#define PL_25 11 /* 0x25,0x27,0x2c,0x2d,0x2e,0x2f */ +#define PL_30 12 /* 0x30,0x3a */ +#define PL_31 13 /* 0x31,0x38,0x39 */ +#define PL_32 14 /* 0x32 */ +#define PL_33 15 /* 0x33,0x3b */ +#define PL_34 16 /* 0x34,0x36 */ +#define PL_35 17 /* 0x35,0x37,0x3d,0x3f */ +#define PL_3c 18 /* 0x3c */ +#define PL_3e 19 /* 0x3e */ + +static const UBYTE prior_to_pm_lookup[64] = { + PL_00, PL_00, PL_00, PL_00, PL_00, PL_05, PL_00, PL_05, + PL_00, PL_00, PL_00, PL_00, PL_05, PL_05, PL_05, PL_05, + PL_10, PL_11, PL_12, PL_13, PL_14, PL_15, PL_14, PL_15, + PL_11, PL_11, PL_10, PL_13, PL_1c, PL_15, PL_1e, PL_15, + PL_20, PL_20, PL_20, PL_20, PL_20, PL_25, PL_20, PL_25, + PL_20, PL_20, PL_20, PL_20, PL_25, PL_25, PL_25, PL_25, + PL_30, PL_31, PL_32, PL_33, PL_34, PL_35, PL_34, PL_35, + PL_31, PL_31, PL_30, PL_33, PL_3c, PL_35, PL_3e, PL_35 +}; + +static void init_pm_lookup(void) +{ + static const UBYTE pm_lookup_template[10][16] = { + /* PL_20 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_25 */ + { L_BAK, L_PM0, L_PM1, L_PM01, L_PM2, L_PM023, L_PM123, L_PM0123, + L_PM3, L_PM023, L_PM123, L_PM0123, L_PM23, L_PM023, L_PM123, L_PM0123 }, + /* PL_30 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM25, L_PM0, L_PM1, L_PM01, + L_PM35, L_PM0, L_PM1, L_PM01, L_PM235, L_PM0, L_PM1, L_PM01 }, + /* PL_31 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PM2, L_PM0, L_PM1, L_PM01, + L_PM3, L_PM0, L_PM1, L_PM01, L_PM23, L_PM0, L_PM1, L_PM01 }, + /* PL_32 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01, + L_PF3, L_PM0, L_PM1, L_PM01, L_PF3, L_PM0, L_PM1, L_PM01 }, + /* PL_33 */ + { L_PF3, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01, + L_BLACK, L_PM0, L_PM1, L_PM01, L_BLACK, L_PM0, L_PM1, L_PM01 }, + /* PL_34 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, + L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3, L_PF3 }, + /* PL_35 */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_BLACK, L_BLACK, L_BLACK, L_BLACK, + L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK, L_BLACK }, + /* PL_3c */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_PM25, L_PM25, L_PM25, + L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25, L_PM25 }, + /* PL_3e */ + { L_PF3, L_PF3, L_PF3, L_PF3, L_PM25, L_BLACK, L_BLACK, L_BLACK, + L_PM25, L_BLACK, L_BLACK, L_BLACK, L_PM25, L_BLACK, L_BLACK, L_BLACK } + }; + + static const UBYTE multi_to_normal[] = { + L_BAK, + L_PM0, L_PM1, L_PM0, + L_PM2, L_PM3, L_PM2, + L_PM023, L_PM123, L_PM023, + L_PM25, L_PM35, L_PM25 + }; + + int i; + int j; + UBYTE temp; + + for (i = 0; i <= 1; i++) + for (j = 0; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][(j & 0xf) | (j >> 4)]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; i <= 9; i++) { + for (j = 0; j <= 15; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i < 7 ? 0 : 1][j]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + for (; j <= 255; j++) { + pm_lookup_table[i + 10][j] = temp = pm_lookup_template[i][j & 0xf]; + pm_lookup_table[i][j] = temp <= L_PM235 ? multi_to_normal[temp >> 1] : temp; + } + } +} + +static const UBYTE hold_missiles_tab[16] = { + 0x00,0x03,0x0c,0x0f,0x30,0x33,0x3c,0x3f, + 0xc0,0xc3,0xcc,0xcf,0xf0,0xf3,0xfc,0xff}; + +static void pmg_dma(void) +{ + /* VDELAY bit set == GTIA ignores PMG DMA in even lines */ + if (ANTIC_player_dma_enabled) { + if (ANTIC_player_gra_enabled) { + const UBYTE *base; + if (singleline) { + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + base = ANTIC_xe_ptr + pmbase_s - 0x4000 + ANTIC_ypos; + else + base = memory + pmbase_s + ANTIC_ypos; + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x400]; + GTIA_GRAFP1 = base[0x500]; + GTIA_GRAFP2 = base[0x600]; + GTIA_GRAFP3 = base[0x700]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x400]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x500]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x600]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x700]; + } + } + else { + if (ANTIC_xe_ptr != NULL && pmbase_d < 0x8000 && pmbase_d >= 0x4000) + base = ANTIC_xe_ptr + (pmbase_d - 0x4000) + (ANTIC_ypos >> 1); + else + base = memory + pmbase_d + (ANTIC_ypos >> 1); + if (ANTIC_ypos & 1) { + GTIA_GRAFP0 = base[0x200]; + GTIA_GRAFP1 = base[0x280]; + GTIA_GRAFP2 = base[0x300]; + GTIA_GRAFP3 = base[0x380]; + } + else { + if ((GTIA_VDELAY & 0x10) == 0) + GTIA_GRAFP0 = base[0x200]; + if ((GTIA_VDELAY & 0x20) == 0) + GTIA_GRAFP1 = base[0x280]; + if ((GTIA_VDELAY & 0x40) == 0) + GTIA_GRAFP2 = base[0x300]; + if ((GTIA_VDELAY & 0x80) == 0) + GTIA_GRAFP3 = base[0x380]; + } + } + } + ANTIC_xpos += 4; + } + if (ANTIC_missile_dma_enabled) { + if (ANTIC_missile_gra_enabled) { + UBYTE data; + if (ANTIC_xe_ptr != NULL && pmbase_s < 0x8000 && pmbase_s >= 0x4000) + data = ANTIC_xe_ptr[singleline ? pmbase_s + ANTIC_ypos + 0x300 - 0x4000 : pmbase_d + (ANTIC_ypos >> 1) + 0x180 - 0x4000]; + else + data = MEMORY_dGetByte(singleline ? pmbase_s + ANTIC_ypos + 0x300 : pmbase_d + (ANTIC_ypos >> 1) + 0x180); + /* in odd lines load all missiles, in even only those, for which VDELAY bit is zero */ + GTIA_GRAFM = ANTIC_ypos & 1 ? data : ((GTIA_GRAFM ^ data) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ data; + } + ANTIC_xpos++; + } +} + +/* Artifacting ------------------------------------------------------------ */ + +int ANTIC_artif_mode; + +static UWORD art_lookup_new[64]; +static UWORD art_colour1_new; +static UWORD art_colour2_new; + +static ULONG art_lookup_normal[256]; +static ULONG art_lookup_reverse[256]; +static ULONG art_bkmask_normal[256]; +static ULONG art_lummask_normal[256]; +static ULONG art_bkmask_reverse[256]; +static ULONG art_lummask_reverse[256]; + +static ULONG *art_curtable = art_lookup_normal; +static ULONG *art_curbkmask = art_bkmask_normal; +static ULONG *art_curlummask = art_lummask_normal; + +static UWORD art_normal_colpf1_save; +static UWORD art_normal_colpf2_save; +static UWORD art_reverse_colpf1_save; +static UWORD art_reverse_colpf2_save; + +static void setup_art_colours(void) +{ + static UWORD *art_colpf1_save = &art_normal_colpf1_save; + static UWORD *art_colpf2_save = &art_normal_colpf2_save; + UWORD curlum = ANTIC_cl[C_PF1] & 0x0f0f; + + if (curlum != *art_colpf1_save || ANTIC_cl[C_PF2] != *art_colpf2_save) { + if (curlum < (ANTIC_cl[C_PF2] & 0x0f0f)) { + art_colpf1_save = &art_reverse_colpf1_save; + art_colpf2_save = &art_reverse_colpf2_save; + art_curtable = art_lookup_reverse; + art_curlummask = art_lummask_reverse; + art_curbkmask = art_bkmask_reverse; + } + else { + art_colpf1_save = &art_normal_colpf1_save; + art_colpf2_save = &art_normal_colpf2_save; + art_curtable = art_lookup_normal; + art_curlummask = art_lummask_normal; + art_curbkmask = art_bkmask_normal; + } + if (curlum ^ *art_colpf1_save) { + int i; + ULONG new_colour = curlum ^ *art_colpf1_save; + new_colour |= new_colour << 16; + *art_colpf1_save = curlum; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curlummask[i] & new_colour; + } + if (ANTIC_cl[C_PF2] ^ *art_colpf2_save) { + int i; + ULONG new_colour = ANTIC_cl[C_PF2] ^ *art_colpf2_save; + new_colour |= new_colour << 16; + *art_colpf2_save = ANTIC_cl[C_PF2]; + for (i = 0; i <= 255; i++) + art_curtable[i] ^= art_curbkmask[i] & new_colour; + } + + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int ANTIC_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) +#if SKIP + int i, j; + + for (i = j = 1; i < *argc; i++) { + int i_a = (i + 1 < *argc); /* is argument available? */ + int a_m = FALSE; /* error, argument missing! */ + + if (strcmp(argv[i], "-artif") == 0) { + if (i_a) { + ANTIC_artif_mode = Util_sscandec(argv[++i]); + if (ANTIC_artif_mode < 0 || ANTIC_artif_mode > 4) { + Log_print("Invalid artifacting mode, using default."); + ANTIC_artif_mode = 0; + } + } + else a_m = TRUE; + } + else { + if (strcmp(argv[i], "-help") == 0) { + Log_print("\t-artif Set artifacting mode 0-4 (0 = disable)"); + } + argv[j++] = argv[i]; + } + + if (a_m) { + Log_print("Missing argument for '%s'", argv[i]); + return FALSE; + } + } + *argc = j; +#endif + ANTIC_UpdateArtifacting(); + + playfield_lookup[0x00] = L_BAK; + playfield_lookup[0x40] = L_PF0; + playfield_lookup[0x80] = L_PF1; + playfield_lookup[0xc0] = L_PF2; + playfield_lookup[0x100] = L_PF3; + blank_lookup[0x80] = blank_lookup[0xa0] = blank_lookup[0xc0] = blank_lookup[0xe0] = 0x00; + hires_mask(0x00) = 0xffff; +#ifdef USE_COLOUR_TRANSLATION_TABLE + hires_mask(0x40) = BYTE0_MASK; + hires_mask(0x80) = BYTE1_MASK; + hires_mask(0xc0) = 0; +#else + hires_mask(0x40) = HIRES_MASK_01; + hires_mask(0x80) = HIRES_MASK_10; + hires_mask(0xc0) = 0xf0f0; + hires_lum(0x00) = hires_lum(0x40) = hires_lum(0x80) = hires_lum(0xc0) = 0; +#endif + init_pm_lookup(); + mode_e_an_lookup[0] = 0; + mode_e_an_lookup[1] = mode_e_an_lookup[4] = mode_e_an_lookup[0x10] = mode_e_an_lookup[0x40] = 0; + mode_e_an_lookup[2] = mode_e_an_lookup[8] = mode_e_an_lookup[0x20] = mode_e_an_lookup[0x80] = 1; + mode_e_an_lookup[3] = mode_e_an_lookup[12] = mode_e_an_lookup[0x30] = mode_e_an_lookup[0xc0] = 2; +#ifdef NEW_CYCLE_EXACT + CYCLE_MAP_Create(); + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +void ANTIC_Reset(void) +{ + ANTIC_NMIEN = 0x00; + ANTIC_NMIST = 0x1f; + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, 0); +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Border ------------------------------------------------------------------ */ + +#define DO_BORDER_1 {\ + if (IS_ZERO_ULONG(pm_scanline_ptr)) {\ + ULONG *l_ptr = (ULONG *) ptr;\ + WRITE_VIDEO_LONG(l_ptr++, background); \ + WRITE_VIDEO_LONG(l_ptr++, background); \ + ptr = (UWORD *) l_ptr;\ + pm_scanline_ptr += 4;\ + }\ + else {\ + int k = 4;\ + do + +#define DO_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++]));\ + while (--k);\ + }\ +} + +#define DO_GTIA10_BORDER DO_BORDER_1\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[*pm_scanline_ptr++ | 1]));\ + while (--k);\ + }\ +} + +static void do_border(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER +} + +static void do_border_gtia10(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_GTIA10_BORDER + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[*pm_scanline_ptr | 1])); /* one extra pixel, because of the right shift of gtia10*/ + /* right border */ + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + if (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) { + ptr = &scrn_ptr[right_border_start + 1]; /*start one pixel further right because of the right shift of gtia10*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[1] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[2] | 1])); + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_scanline_ptr[3] | 1])); + pm_scanline_ptr += 4; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_GTIA10_BORDER + } +} + +static void do_border_gtia11(void) +{ + int kk; + UWORD *ptr = &scrn_ptr[LBORDER_START]; + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + /* left border */ + for (kk = left_border_chars; kk; kk--) + DO_BORDER + /* right border */ + ptr = &scrn_ptr[right_border_start]; + pm_scanline_ptr = >IA_pm_scanline[right_border_start]; + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]) + DO_BORDER + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) +} + +static void draw_antic_0(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia9[0]; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_BAK], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia10(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + do + DO_GTIA10_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + } + else + FILL_VIDEO(ptr, ANTIC_cl[C_PM0], (RBORDER_END - LBORDER_START) * 2); +} + +static void draw_antic_0_gtia11(void) +{ + UWORD *ptr = scrn_ptr + LBORDER_START; + if (GTIA_pm_dirty) { + const UBYTE *pm_scanline_ptr = >IA_pm_scanline[LBORDER_START]; + ULONG background = ANTIC_lookup_gtia11[0]; +#ifdef USE_COLOUR_TRANSLATION_TABLE + ANTIC_cl[C_PF3] = colour_translation_table[GTIA_COLPF3 & 0xf0]; +#else + ANTIC_cl[C_PF3] &= 0xf0f0; +#endif + ANTIC_cl[C_BAK] = (UWORD) background; + do + DO_BORDER + while (pm_scanline_ptr < >IA_pm_scanline[RBORDER_END]); + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_PF3],GTIA_COLPF3) + GTIA_COLOUR_TO_WORD(ANTIC_cl[C_BAK],GTIA_COLBK) + } + else + FILL_VIDEO(ptr, ANTIC_lookup_gtia11[0], (RBORDER_END - LBORDER_START) * 2); +} + +/* ANTIC modes ------------------------------------------------------------- */ + +static const UBYTE gtia_10_lookup[] = +{L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3, + L_BAK, L_BAK, L_BAK, L_BAK, L_PF0, L_PF1, L_PF2, L_PF3}; +static const UBYTE gtia_10_pm[] = +{1, 2, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static void draw_an_gtia9(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr + 1, pixel | (pixel << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border(); +} + +static void draw_an_gtia10(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) | 1; + UWORD lookup_gtia10[16]; + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i - 1] << 2) + an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia10[pixel]); + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_10_lookup[pixel]; + PF_COLLS(colreg) |= pm_reg; + pm_reg |= gtia_10_pm[pixel]; + WRITE_VIDEO(ptr + 1, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr + 1, lookup_gtia10[pixel]); + } + i++; + } + do_border_gtia10(); +} + +static void draw_an_gtia11(const ULONG *t_pm_scanline_ptr) +{ + int i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline) & ~1; + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = (an_scanline[i] << 2) + an_scanline[i + 1]; + UBYTE pm_reg; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[pixel]); + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + i++; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + pm_reg = pm_lookup_ptr[pm_reg]; + if (pm_reg == L_PF3) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr + 1, colour_translation_table[pixel ? pixel | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr + 1, pixel ? (pixel << 4) | (pixel << 12) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else { + WRITE_VIDEO(ptr + 1, COLOUR(pm_reg)); + } + } + i++; + } + do_border_gtia11(); +} + +static void draw_an_gtia_bug(const ULONG *t_pm_scanline_ptr) +{ + static const UBYTE gtia_bug_colreg[] = {L_PF0, L_PF1, L_PF2, L_PF3}; + UWORD lookup_gtia_bug[16]; + int i; + lookup_gtia_bug[0] = ANTIC_cl[C_PF0]; + lookup_gtia_bug[1] = ANTIC_cl[C_PF1]; + lookup_gtia_bug[2] = ANTIC_cl[C_PF2]; + lookup_gtia_bug[3] = ANTIC_cl[C_PF3]; + i = ((const UBYTE *) t_pm_scanline_ptr - GTIA_pm_scanline); + while (i < right_border_start) { + UWORD *ptr = scrn_ptr + i; + int pixel = an_scanline[i]; + UBYTE pm_reg; + int colreg; + pm_reg = GTIA_pm_scanline[i]; + if (pm_reg) { + colreg = gtia_bug_colreg[pixel]; + PF_COLLS(colreg) |= pm_reg; + WRITE_VIDEO(ptr, COLOUR(pm_lookup_ptr[pm_reg] | colreg)); + } + else { + WRITE_VIDEO(ptr, lookup_gtia_bug[pixel]); + } + i++; + } + do_border(); +} + +#define DEFINE_DRAW_AN(anticmode) \ + static void draw_antic_ ## anticmode ## _gtia9 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia9(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia10(t_pm_scanline_ptr);\ + }\ + static void draw_antic_ ## anticmode ## _gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr)\ + {\ + prepare_an_antic_ ## anticmode (nchars, antic_memptr, t_pm_scanline_ptr);\ + draw_an_gtia11(t_pm_scanline_ptr);\ + } + +#define CHAR_LOOP_BEGIN do { +#define CHAR_LOOP_END } while (--nchars); + +#define DO_PMG_LORES PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++;\ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + +#ifdef ALTERNATE_LOOP_COUNTERS /* speeds-up pmg in hires a bit or not? try it :) */ +#define FOUR_LOOP_BEGIN(data) data |= 0x800000; do { /* data becomes negative after four data <<= 2 */ +#define FOUR_LOOP_END(data) } while (data >= 0); +#else +#define FOUR_LOOP_BEGIN(data) int k = 4; do { +#define FOUR_LOOP_END(data) } while (--k); +#endif + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & BYTE0_MASK) | (ANTIC_cl[C_HI2] & BYTE1_MASK);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_HI2] & BYTE0_MASK) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = ANTIC_cl[C_HI2]; + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + int mask;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + mask = hires_mask(data & 0xc0);\ + pm_pixel = pm_lookup_ptr[pm_pixel] | L_PF2;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_pixel) & mask) | (COLOUR(pm_pixel + (L_HI2 - L_PF2)) & ~mask));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#else /* USE_COLOUR_TRANSLATION_TABLE */ + +#define INIT_HIRES hires_norm(0x00) = ANTIC_cl[C_PF2];\ + hires_norm(0x40) = hires_norm(0x10) = hires_norm(0x04) = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + hires_norm(0x80) = hires_norm(0x20) = hires_norm(0x08) = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + hires_norm(0xc0) = hires_norm(0x30) = hires_norm(0x0c) = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0); + +#define INIT_ARTIF_NEW art_lookup_new[0] = art_lookup_new[1] = art_lookup_new[2] = art_lookup_new[3] = \ + art_lookup_new[16] = art_lookup_new[17] = art_lookup_new[18] = art_lookup_new[19] = \ + art_lookup_new[32] = art_lookup_new[33] = art_lookup_new[34] = art_lookup_new[35] = \ + art_lookup_new[48] = art_lookup_new[49] = art_lookup_new[50] = art_lookup_new[51] = ANTIC_cl[C_PF2];\ + art_lookup_new[7] = art_lookup_new[23] = art_lookup_new[39] = art_lookup_new[55] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[56] = art_lookup_new[57] = art_lookup_new[58] = art_lookup_new[59] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80);\ + art_lookup_new[12] = art_lookup_new[13] = art_lookup_new[14] = art_lookup_new[15] = \ + art_lookup_new[28] = art_lookup_new[29] = art_lookup_new[30] = art_lookup_new[31] = \ + art_lookup_new[44] = art_lookup_new[45] = art_lookup_new[46] = art_lookup_new[47] = \ + art_lookup_new[60] = art_lookup_new[61] = art_lookup_new[62] = art_lookup_new[63] = (ANTIC_cl[C_PF2] & 0xf0f0) | hires_lum(0xc0);\ + if ((ANTIC_cl[C_PF2] & 0x0F00) != (ANTIC_cl[C_PF1] & 0x0F00)) { \ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= ((art_colour1_new & BYTE1_MASK & ~(HIRES_LUM_01))) | hires_lum(0x40) | (ANTIC_cl[C_PF2] & BYTE0_MASK);\ + art_lookup_new[20] = art_lookup_new[21] = (art_colour1_new & 0xf0f0) | hires_lum(0xc0);\ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = ((art_colour2_new & BYTE0_MASK & ~(HIRES_LUM_10))) | hires_lum(0x80) | (ANTIC_cl[C_PF2] & BYTE1_MASK);\ + art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = (art_colour2_new & 0xf0f0) | hires_lum(0xc0);\ + }\ + else {\ + art_lookup_new[4] = art_lookup_new[5] = art_lookup_new[36] = art_lookup_new[37] = \ + art_lookup_new[52] = art_lookup_new[53 ]= art_lookup_new[20] = art_lookup_new[21] = \ + art_lookup_new[8] = art_lookup_new[9] = art_lookup_new[11] = art_lookup_new[40] = \ + art_lookup_new[43] = art_lookup_new[10] = art_lookup_new[41] = art_lookup_new[42] = ANTIC_cl[C_PF2];\ + }\ + art_lookup_new[6] = art_lookup_new[22] = art_lookup_new[38] = art_lookup_new[54] = (ANTIC_cl[C_PF2] & HIRES_MASK_01) | hires_lum(0x40);\ + art_lookup_new[24] = art_lookup_new[25] = art_lookup_new[26] = art_lookup_new[27] = (ANTIC_cl[C_PF2] & HIRES_MASK_10) | hires_lum(0x80); + +#define DO_PMG_HIRES(data) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (data & 0xc0)\ + PF2PM |= pm_pixel;\ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2) & hires_mask(data & 0xc0)) | hires_lum(data & 0xc0));\ + data <<= 2;\ + FOUR_LOOP_END(data)\ +} + +#define DO_PMG_HIRES_NEW(data, tally) {\ + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr;\ + int pm_pixel;\ + FOUR_LOOP_BEGIN(data)\ + pm_pixel = *c_pm_scanline_ptr++;\ + if (pm_pixel) \ + WRITE_VIDEO(ptr++, (COLOUR(pm_lookup_ptr[pm_pixel] | L_PF2)));\ + else\ + WRITE_VIDEO(ptr++, art_lookup_new[(tally & 0xfc0000) >> 18]); \ + data <<= 2;\ + tally <<= 6;\ + FOUR_LOOP_END(data)\ +} + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +#ifdef NEW_CYCLE_EXACT +#define ADD_FONT_CYCLES +#else +#define ADD_FONT_CYCLES ANTIC_xpos += font_cycles[md] +#endif + +#ifdef PAGED_MEM + +#define INIT_ANTIC_2 int t_chbase = (dctr ^ chbase_20) & 0xfc07;\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); + +#else /* PAGED_MEM */ + +#define INIT_ANTIC_2 const UBYTE *chptr;\ + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000)\ + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07);\ + else\ + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07);\ + ADD_FONT_CYCLES;\ + blank_lookup[0x60] = (anticmode == 2 || dctr & 0xe) ? 0xff : 0;\ + blank_lookup[0x00] = blank_lookup[0x20] = blank_lookup[0x40] = (dctr & 0xe) == 8 ? 0 : 0xff; + +#define GET_CHDATA_ANTIC_2 chdata = (screendata & invert_mask) ? 0xff : 0;\ + if (blank_lookup[screendata & blank_mask])\ + chdata ^= chptr[(screendata & 0x7f) << 3]; + +#endif /* PAGED_MEM */ + +static void draw_antic_2(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + INIT_HIRES + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifdef NEW_CYCLE_EXACT +static void draw_antic_2_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_ANTIC_2 + (void)chptr; /* suppress GCC -Wunused-but-set-variable warning */ + INIT_HIRES + + CHAR_LOOP_BEGIN + /* UBYTE screendata = *antic_memptr++; */ + +/* In this glitched mode, the output depends on the MSB of the last char */ +/* drawn in the previous line, and invert_mask. It seems to reveal that */ +/* ANTIC has a latch that is set by the MSB of the char that controls an */ +/* invert gate. */ +/* When this gate was set on the last line and the next line is glitched */ +/* it remains set and the whole line appears inverted */ +/* We'll use this modeline to draw antic f glitched as well, and set */ +/* dmactl_bug_chdata to 0 */ + int chdata = (dmactl_bug_chdata & invert_mask) ? 0xff : 0; + /* GET_CHDATA_ANTIC_2 */ + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + + if (chdata) { + WRITE_VIDEO(ptr++, hires_norm(chdata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(chdata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((chdata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(chdata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void draw_antic_2_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + INIT_ANTIC_2 + { + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + } + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + chdata = screendata_tally >> 8; + DO_PMG_HIRES(chdata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_2_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally; + ULONG pmtally; + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + INIT_ANTIC_2 + INIT_ARTIF_NEW + GET_CHDATA_ANTIC_2 + screendata_tally = chdata; + setup_art_colours(); + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + ULONG chdata; + + GET_CHDATA_ANTIC_2 + screendata_tally <<= 8; + screendata_tally |= chdata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + chdata = screendata_tally >> 8; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(chdata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_2(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + int t_chbase = (dctr ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + ((dctr ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + ((dctr ^ chbase_20) & 0xfc07); +#endif + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + GET_CHDATA_ANTIC_2 + *an_ptr++ = chdata >> 6; + *an_ptr++ = (chdata >> 4) & 3; + *an_ptr++ = (chdata >> 2) & 3; + *an_ptr++ = chdata & 3; + CHAR_LOOP_END +} + +static void draw_antic_2_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata >> 4 : chdata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_2_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } + +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, chdata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = chdata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; + pm_pixel |= gtia_10_pm[t_screendata]; + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); + if (k == 3) + t_screendata = chdata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_2_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_ANTIC_2 + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int chdata; + + GET_CHDATA_ANTIC_2 + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[chdata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[chdata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? chdata & 0xf0 : chdata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +static void draw_antic_2_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_2(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia_bug(t_pm_scanline_ptr); + return; +} + +static void draw_antic_4(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + lookup2[0x0f] = lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x4f] = lookup2[0x1f] = lookup2[0x13] = + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x8f] = lookup2[0x2f] = lookup2[0x17] = lookup2[0x11] = + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + lookup2[0xcf] = lookup2[0x3f] = lookup2[0x1b] = lookup2[0x12] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + const UWORD *lookup; + UBYTE chdata; + if (screendata & 0x80) + lookup = lookup2 + 0xf; + else + lookup = lookup2; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata) { + WRITE_VIDEO(ptr++, lookup[chdata & 0xc0]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x30]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x0c]); + WRITE_VIDEO(ptr++, lookup[chdata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + playfield_lookup[0xc0] = screendata & 0x80 ? L_PF3 : L_PF2; + do { + colreg = playfield_lookup[chdata & 0xc0]; + DO_PMG_LORES + chdata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + playfield_lookup[0xc0] = L_PF2; + do_border(); +} + +static void prepare_an_antic_4(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = ((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0x3c07); + else + chptr = MEMORY_mem + (((anticmode == 4 ? dctr : dctr >> 1) ^ chbase_20) & 0xfc07); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x7f) << 3)); +#else + chdata = chptr[(screendata & 0x7f) << 3]; +#endif + an = mode_e_an_lookup[chdata & 0xc0]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x30]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x0c]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + an = mode_e_an_lookup[chdata & 0x03]; + *an_ptr++ = (an == 2 && screendata & 0x80) ? 3 : an; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(4) + +static void draw_antic_6(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE chdata; + UWORD colour; + int kk = 2; + colour = COLOUR((playfield_lookup + 0x40)[screendata & 0xc0]); +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (chdata & 0xf0) { + if (chdata & 0x80) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x40) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x20) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + if (chdata & 0x10) { + WRITE_VIDEO(ptr++, colour); + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + } + else { + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + WRITE_VIDEO(ptr++, ANTIC_cl[C_BAK]); + } + chdata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + UBYTE setcol = (playfield_lookup + 0x40)[screendata & 0xc0]; + int colreg; + int k = 4; + do { + colreg = chdata & 0x80 ? setcol : L_BAK; + DO_PMG_LORES + chdata <<= 1; + } while (--k); + + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_6(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); +#ifdef PAGED_MEM + UWORD t_chbase = (anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20; +#else + const UBYTE *chptr; + if (ANTIC_xe_ptr != NULL && chbase_20 < 0x8000 && chbase_20 >= 0x4000) + chptr = ANTIC_xe_ptr + (((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20) - 0x4000); + else + chptr = MEMORY_mem + ((anticmode == 6 ? dctr & 7 : dctr >> 1) ^ chbase_20); +#endif + + ADD_FONT_CYCLES; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE an = screendata >> 6; + UBYTE chdata; +#ifdef PAGED_MEM + chdata = MEMORY_dGetByte(t_chbase + ((UWORD) (screendata & 0x3f) << 3)); +#else + chdata = chptr[(screendata & 0x3f) << 3]; +#endif + *an_ptr++ = chdata & 0x80 ? an : 0; + *an_ptr++ = chdata & 0x40 ? an : 0; + *an_ptr++ = chdata & 0x20 ? an : 0; + *an_ptr++ = chdata & 0x10 ? an : 0; + *an_ptr++ = chdata & 0x08 ? an : 0; + *an_ptr++ = chdata & 0x04 ? an : 0; + *an_ptr++ = chdata & 0x02 ? an : 0; + *an_ptr++ = chdata & 0x01 ? an : 0; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(6) + +static void draw_antic_8(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = ANTIC_cl[C_PF0]; + lookup2[0x80] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + UWORD data = lookup2[screendata & 0xc0]; + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + WRITE_VIDEO(ptr++, data); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg = playfield_lookup[screendata & 0xc0]; + int k = 4; + do { + DO_PMG_LORES + } while (--k); + } + screendata <<= 2; + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_8(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + *an_ptr++ = data; + screendata <<= 2; + } while (--kk); + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(8) + +static void draw_antic_9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 4; + do { + if ((const UBYTE *) t_pm_scanline_ptr >= GTIA_pm_scanline + 4 * (48 - RCHOP)) + break; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + screendata <<= 2; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +/* ANTIC modes 9, b and c use BAK and PF0 colours only so they're not visible in GTIA modes */ + +static void draw_antic_9_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0(); +} + +static void draw_antic_9_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia10(); +} + +static void draw_antic_9_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_gtia11(); +} + +static void draw_antic_a(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = ANTIC_cl[C_PF2]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + if (k & 0x01) + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_a(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + UBYTE data = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = data; + *an_ptr++ = data; + data = mode_e_an_lookup[screendata & 0x03]; + *an_ptr++ = data; + *an_ptr++ = data; + CHAR_LOOP_END +} + +DEFINE_DRAW_AN(a) + +static void draw_antic_c(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x80] = lookup2[0x40] = lookup2[0x20] = lookup2[0x10] = ANTIC_cl[C_PF0]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + int kk = 2; + do { + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0x80]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x40]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x20]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x10]); + screendata <<= 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (screendata & 0x80) ? L_PF0 : L_BAK; + DO_PMG_LORES + screendata <<= 1; + } while (--k); + } + t_pm_scanline_ptr++; + } while (--kk); + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_8 + lookup2[0x00] = ANTIC_cl[C_BAK]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF0]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF1]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF2]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else + DRAW_BACKGROUND(C_BAK) + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = playfield_lookup[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void prepare_an_antic_e(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = mode_e_an_lookup[screendata & 0xc0]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x30]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x0c]; + *an_ptr++ = mode_e_an_lookup[screendata & 0x03]; + CHAR_LOOP_END +} + +static void draw_antic_e_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG lookup[16]; + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + lookup[0] = lookup[1] = lookup[4] = lookup[5] = ANTIC_lookup_gtia9[0]; + lookup[2] = lookup[6] = ANTIC_lookup_gtia9[1]; + lookup[3] = lookup[7] = ANTIC_lookup_gtia9[2]; + lookup[8] = lookup[9] = ANTIC_lookup_gtia9[4]; + lookup[10] = ANTIC_lookup_gtia9[5]; + lookup[11] = ANTIC_lookup_gtia9[6]; + lookup[12] = lookup[13] = ANTIC_lookup_gtia9[8]; + lookup[14] = ANTIC_lookup_gtia9[9]; + lookup[15] = ANTIC_lookup_gtia9[10]; + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, lookup[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, lookup[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_e_gtia10 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); +} +static void draw_antic_e_gtia11 (int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + prepare_an_antic_e(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); +} + +static void draw_antic_f(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + INIT_BACKGROUND_6 + INIT_HIRES + + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + if (screendata) { + WRITE_VIDEO(ptr++, hires_norm(screendata & 0xc0)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x30)); + WRITE_VIDEO(ptr++, hires_norm(screendata & 0x0c)); + WRITE_VIDEO(ptr++, hires_norm((screendata & 0x03) << 2)); + } + else + DRAW_BACKGROUND(C_PF2) + } + else + DO_PMG_HIRES(screendata) + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_artif(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG screendata_tally = *antic_memptr++; + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF + else { + screendata = antic_memptr[-2]; + DO_PMG_HIRES(screendata) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +#ifndef USE_COLOUR_TRANSLATION_TABLE +static void draw_antic_f_artif_new(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + ULONG pmtally; + ULONG screendata_tally = *antic_memptr++; + INIT_ARTIF_NEW + + setup_art_colours(); + CHAR_LOOP_BEGIN + int screendata = *antic_memptr++; + screendata_tally <<= 8; + screendata_tally |= screendata; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + DRAW_ARTIF_NEW + else { + screendata = antic_memptr[-2]; + pmtally = ((screendata_tally & 0x03f000) << 6) | + ((screendata_tally & 0x00fc00) << 2) | + ((screendata_tally & 0x003f00) >> 2) | + ((screendata_tally & 0x000fc0) >> 6); + DO_PMG_HIRES_NEW(screendata,pmtally) + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} +#endif + +static void prepare_an_antic_f(int nchars, const UBYTE *antic_memptr, const ULONG *t_pm_scanline_ptr) +{ + UBYTE *an_ptr = (UBYTE *) t_pm_scanline_ptr + (an_scanline - GTIA_pm_scanline); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + *an_ptr++ = screendata >> 6; + *an_ptr++ = (screendata >> 4) & 3; + *an_ptr++ = (screendata >> 2) & 3; + *an_ptr++ = screendata & 3; + CHAR_LOOP_END +} + +static void draw_antic_f_gtia9(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia9(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia9[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia9[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata >> 4 : screendata & 0xf; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp | GTIA_COLPF3]); +#else + WRITE_VIDEO(ptr, tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3]); +#endif + } + else { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +static void draw_antic_f_gtia10(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ +#ifdef WORDS_UNALIGNED_OK + ULONG lookup_gtia10[16]; +#else + UWORD lookup_gtia10[16]; +#endif + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia10(t_pm_scanline_ptr); + return; + } +#ifdef WORDS_UNALIGNED_OK + lookup_gtia10[0] = ANTIC_cl[C_PM0] | (ANTIC_cl[C_PM0] << 16); + lookup_gtia10[1] = ANTIC_cl[C_PM1] | (ANTIC_cl[C_PM1] << 16); + lookup_gtia10[2] = ANTIC_cl[C_PM2] | (ANTIC_cl[C_PM2] << 16); + lookup_gtia10[3] = ANTIC_cl[C_PM3] | (ANTIC_cl[C_PM3] << 16); + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0] | (ANTIC_cl[C_PF0] << 16); + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1] | (ANTIC_cl[C_PF1] << 16); + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2] | (ANTIC_cl[C_PF2] << 16); + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3] | (ANTIC_cl[C_PF3] << 16); + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_lookup_gtia9[0]; +#else + lookup_gtia10[0] = ANTIC_cl[C_PM0]; + lookup_gtia10[1] = ANTIC_cl[C_PM1]; + lookup_gtia10[2] = ANTIC_cl[C_PM2]; + lookup_gtia10[3] = ANTIC_cl[C_PM3]; + lookup_gtia10[12] = lookup_gtia10[4] = ANTIC_cl[C_PF0]; + lookup_gtia10[13] = lookup_gtia10[5] = ANTIC_cl[C_PF1]; + lookup_gtia10[14] = lookup_gtia10[6] = ANTIC_cl[C_PF2]; + lookup_gtia10[15] = lookup_gtia10[7] = ANTIC_cl[C_PF3]; + lookup_gtia10[8] = lookup_gtia10[9] = lookup_gtia10[10] = lookup_gtia10[11] = ANTIC_cl[C_BAK]; +#endif + ptr++; + t_pm_scanline_ptr = (const ULONG *) (((const UBYTE *) t_pm_scanline_ptr) + 1); + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + DO_GTIA_BYTE(ptr, lookup_gtia10, screendata) + ptr += 4; + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + UBYTE t_screendata = screendata >> 4; + do { + colreg = gtia_10_lookup[t_screendata]; + PF_COLLS(colreg) |= pm_pixel = *c_pm_scanline_ptr++; /*playfield colours can generate collisions*/ + pm_pixel |= gtia_10_pm[t_screendata]; /*but player colours don't*/ + WRITE_VIDEO(ptr++, COLOUR(pm_lookup_ptr[pm_pixel] | colreg)); /*although they mix with the real players*/ + if (k == 3) + t_screendata = screendata & 0x0f; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia10(); +} + +static void draw_antic_f_gtia11(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + if ((unsigned long) ptr & 2) { /* HSCROL & 1 */ + prepare_an_antic_f(nchars, antic_memptr, t_pm_scanline_ptr); + draw_an_gtia11(t_pm_scanline_ptr); + return; + } + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + WRITE_VIDEO_LONG((ULONG *) ptr, ANTIC_lookup_gtia11[screendata >> 4]); + WRITE_VIDEO_LONG((ULONG *) ptr + 1, ANTIC_lookup_gtia11[screendata & 0xf]); + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) + ptr += 4; + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int k = 4; + UBYTE pm_reg; + do { + pm_reg = pm_lookup_ptr[*c_pm_scanline_ptr++]; + if (pm_reg) { + if (pm_reg == L_PF3) { + UBYTE tmp = k > 2 ? screendata & 0xf0 : screendata << 4; +#ifdef USE_COLOUR_TRANSLATION_TABLE + WRITE_VIDEO(ptr, colour_translation_table[tmp ? tmp | GTIA_COLPF3 : GTIA_COLPF3 & 0xf0]); +#else + WRITE_VIDEO(ptr, tmp ? tmp | ((UWORD)tmp << 8) | ANTIC_cl[C_PF3] : ANTIC_cl[C_PF3] & 0xf0f0); +#endif + } + else + { + WRITE_VIDEO(ptr, COLOUR(pm_reg)); + } + } + ptr++; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border_gtia11(); +} + +/* GTIA-switch-to-mode-00 bug +If while drawing line in hi-res mode PRIOR is changed from 0x40..0xff to +0x00..0x3f, GTIA doesn't back to hi-res, but starts generating mode similar +to ANTIC's 0xe, but with colours PF0, PF1, PF2, PF3. */ + +/* Technical explaination by perrym: + * in gtia.pdf there is a flip-flop at page 40, drawing location C3 with + * what looks like W and A on the gates + * This is set by AN2=0 AN1=1 AN0=1 durning HBLANK + * The middle input to the lower NOR gate is the inverted signal !NRM(?) + * (NRM means NORMAL?) which arrives from the top left of the page. + * This signal is defined on page 38, positions C2/B2 + * where there is a NOR gate pointing downwards with 00 written to the + * right of its output. + * !NRM is the condition that PRIOR is not set to b7=0,b6=0. + * When PRIOR is not set to NRM, the flip-flip is always reset, + * which seems necessary for the proper operation of the GTIA modes. + * If PRIOR is reset to NRM then the flip-flop remains reset, and + * since ANTIC data in hi-res modes is sent as PF0-PF3, this data is used + * by GTIA directly.*/ + +static void draw_antic_f_gtia_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + lookup2[0x00] = ANTIC_cl[C_PF0]; + lookup2[0x40] = lookup2[0x10] = lookup2[0x04] = lookup2[0x01] = ANTIC_cl[C_PF1]; + lookup2[0x80] = lookup2[0x20] = lookup2[0x08] = lookup2[0x02] = ANTIC_cl[C_PF2]; + lookup2[0xc0] = lookup2[0x30] = lookup2[0x0c] = lookup2[0x03] = ANTIC_cl[C_PF3]; + + CHAR_LOOP_BEGIN + UBYTE screendata = *antic_memptr++; + if (IS_ZERO_ULONG(t_pm_scanline_ptr)) { + WRITE_VIDEO(ptr++, lookup2[screendata & 0xc0]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x30]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x0c]); + WRITE_VIDEO(ptr++, lookup2[screendata & 0x03]); + } + else { + const UBYTE *c_pm_scanline_ptr = (const UBYTE *) t_pm_scanline_ptr; + int pm_pixel; + int colreg; + int k = 4; + do { + colreg = (playfield_lookup + 0x40)[screendata & 0xc0]; + DO_PMG_LORES + screendata <<= 2; + } while (--k); + } + t_pm_scanline_ptr++; + CHAR_LOOP_END + do_border(); +} + +/* pointer to a function that draws a single line of graphics */ +typedef void (*draw_antic_function)(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr); + +/* tables for all GTIA and ANTIC modes */ +static draw_antic_function draw_antic_table[4][16] = { +/* normal */ + { NULL, NULL, draw_antic_2, draw_antic_2, + draw_antic_4, draw_antic_4, draw_antic_6, draw_antic_6, + draw_antic_8, draw_antic_9, draw_antic_a, draw_antic_c, + draw_antic_c, draw_antic_e, draw_antic_e, draw_antic_f}, +/* GTIA 9 */ + { NULL, NULL, draw_antic_2_gtia9, draw_antic_2_gtia9, + draw_antic_4_gtia9, draw_antic_4_gtia9, draw_antic_6_gtia9, draw_antic_6_gtia9, + draw_antic_8_gtia9, draw_antic_9_gtia9, draw_antic_a_gtia9, draw_antic_9_gtia9, + draw_antic_9_gtia9, draw_antic_e_gtia9, draw_antic_e_gtia9, draw_antic_f_gtia9}, +/* GTIA 10 */ + { NULL, NULL, draw_antic_2_gtia10, draw_antic_2_gtia10, + draw_antic_4_gtia10, draw_antic_4_gtia10, draw_antic_6_gtia10, draw_antic_6_gtia10, + draw_antic_8_gtia10, draw_antic_9_gtia10, draw_antic_a_gtia10, draw_antic_9_gtia10, + draw_antic_9_gtia10, draw_antic_e_gtia10, draw_antic_e_gtia10, draw_antic_f_gtia10}, +/* GTIA 11 */ + { NULL, NULL, draw_antic_2_gtia11, draw_antic_2_gtia11, + draw_antic_4_gtia11, draw_antic_4_gtia11, draw_antic_6_gtia11, draw_antic_6_gtia11, + draw_antic_8_gtia11, draw_antic_9_gtia11, draw_antic_a_gtia11, draw_antic_9_gtia11, + draw_antic_9_gtia11, draw_antic_e_gtia11, draw_antic_e_gtia11, draw_antic_f_gtia11}}; + +/* pointer to current GTIA/ANTIC mode routine */ +static draw_antic_function draw_antic_ptr = draw_antic_8; +#ifdef NEW_CYCLE_EXACT +static draw_antic_function saved_draw_antic_ptr; +#endif +/* pointer to current GTIA mode blank drawing routine */ +static void (*draw_antic_0_ptr)(void) = draw_antic_0; + +#ifdef NEW_CYCLE_EXACT +/* wrapper for antic_0, for dmactl bugs */ +static void draw_antic_0_dmactl_bug(int nchars, const UBYTE *antic_memptr, UWORD *ptr, const ULONG *t_pm_scanline_ptr) +{ + draw_antic_0_ptr(); +} +#endif + +/* Artifacting ------------------------------------------------------------ */ + +void ANTIC_UpdateArtifacting(void) +{ +#define ART_BROWN 0 +#define ART_BLUE 1 +#define ART_DARK_BROWN 2 +#define ART_DARK_BLUE 3 +#define ART_BRIGHT_BROWN 4 +#define ART_BRIGHT_BLUE 5 +#define ART_RED 6 +#define ART_GREEN 7 + static const UBYTE art_colour_table[4][8] = { + { 0x88, 0x14, 0x88, 0x14, 0x8f, 0x1f, 0xbb, 0x5f }, /* brownblue */ + { 0x14, 0x88, 0x14, 0x88, 0x1f, 0x8f, 0x5f, 0xbb }, /* bluebrown */ + { 0xd6, 0x46, 0xd6, 0x46, 0xdf, 0x4a, 0x4f, 0xac }, /* redgreen */ + { 0x46, 0xd6, 0x46, 0xd6, 0x4a, 0xdf, 0xac, 0x4f } /* greenred */ + }; + + int i; + int j; + int c; + const UBYTE *art_colours; + UBYTE q; + UBYTE art_white; + + if (ANTIC_artif_mode == 0) { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2; + draw_antic_table[0][0xf] = draw_antic_f; + return; + } + +#ifndef USE_COLOUR_TRANSLATION_TABLE + if (ANTIC_artif_new) { + static UWORD new_art_colour_table[4][2] = { + {0x4040, 0x8080}, + {0x8080, 0x4040}, + {0x8080, 0xd0d0}, + {0xd0d0, 0x8080} + }; + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif_new; + draw_antic_table[0][0xf] = draw_antic_f_artif_new; + art_colour1_new = new_art_colour_table[ANTIC_artif_mode - 1][0]; + art_colour2_new = new_art_colour_table[ANTIC_artif_mode - 1][1]; + } + else +#endif + { + draw_antic_table[0][2] = draw_antic_table[0][3] = draw_antic_2_artif; + draw_antic_table[0][0xf] = draw_antic_f_artif; + } + + art_colours = (ANTIC_artif_mode <= 4 ? art_colour_table[ANTIC_artif_mode - 1] : art_colour_table[2]); + + art_reverse_colpf1_save = art_normal_colpf1_save = ANTIC_cl[C_PF1] & 0x0f0f; + art_reverse_colpf2_save = art_normal_colpf2_save = ANTIC_cl[C_PF2]; + art_white = (ANTIC_cl[C_PF2] & 0xf0) | (ANTIC_cl[C_PF1] & 0x0f); + + for (i = 0; i <= 255; i++) { + art_bkmask_normal[i] = 0; + art_lummask_normal[i] = 0; + art_bkmask_reverse[255 - i] = 0; + art_lummask_reverse[255 - i] = 0; + + for (j = 0; j <= 3; j++) { + q = i << j; + if (!(q & 0x20)) { + if ((q & 0xf8) == 0x50) + c = ART_BLUE; /* 01010 */ + else if ((q & 0xf8) == 0xD8) + c = ART_DARK_BLUE; /* 11011 */ + else { /* xx0xx */ + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = art_white; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xff; + ((UBYTE *) art_lummask_reverse)[((255 - i) << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xf0; + continue; + } + } + else if (q & 0x40) { + if (q & 0x10) + goto colpf1_pixel; /* x111x */ + else if (q & 0x80) { + if (q & 0x08) + c = ART_BRIGHT_BROWN; /* 11101 */ + else + goto colpf1_pixel; /* 11100 */ + } + else + c = ART_GREEN; /* 0110x */ + } + else if (q & 0x10) { + if (q & 0x08) { + if (q & 0x80) + c = ART_BRIGHT_BROWN; /* 00111 */ + else + goto colpf1_pixel; /* 10111 */ + } + else + c = ART_RED; /* x0110 */ + } + else + c = ART_BROWN; /* x010x */ + + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_colours[(j & 1) ^ c]; + continue; + + colpf1_pixel: + ((UBYTE *) art_lookup_normal)[(i << 2) + j] = art_white; + ((UBYTE *) art_lookup_reverse)[((255 - i) << 2) + j] = GTIA_COLPF2; + ((UBYTE *) art_bkmask_reverse)[((255 - i) << 2) + j] = 0xff; + ((UBYTE *) art_lummask_normal)[(i << 2) + j] = 0x0f; + ((UBYTE *) art_bkmask_normal)[(i << 2) + j] = 0xf0; + } + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* Display List ------------------------------------------------------------ */ + +UBYTE ANTIC_GetDLByte(UWORD *paddr) +{ + int addr = *paddr; + UBYTE result; + if (ANTIC_xe_ptr != NULL && addr < 0x8000 && addr >= 0x4000) + result = ANTIC_xe_ptr[addr - 0x4000]; + else + result = MEMORY_GetByte((UWORD) addr); + addr++; + if ((addr & 0x3FF) == 0) + addr -= 0x400; + *paddr = (UWORD) addr; + return result; +} + +UWORD ANTIC_GetDLWord(UWORD *paddr) +{ + UBYTE lsb = ANTIC_GetDLByte(paddr); +#if !defined(BASIC) && !defined(CURSES_BASIC) + if (ANTIC_player_flickering && ((GTIA_VDELAY & 0x80) == 0 || ANTIC_ypos & 1)) + GTIA_GRAFP3 = lsb; +#endif + return (ANTIC_GetDLByte(paddr) << 8) + lsb; +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* Real ANTIC doesn't fetch beginning bytes in HSC + nor screen+47 in wide playfield. This function does. */ +static void antic_load(void) +{ +#ifdef PAGED_MEM + UBYTE *antic_memptr = antic_memory + ANTIC_margin; + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + do + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); + while (screenaddr & 0xfff); + screenaddr -= 0x1000; + new_screenaddr -= 0x1000; + } + while (screenaddr < new_screenaddr) + *antic_memptr++ = MEMORY_dGetByte(screenaddr++); +#else + UWORD new_screenaddr = screenaddr + chars_read[md]; + if ((screenaddr ^ new_screenaddr) & 0xf000) { + int bytes = (-screenaddr) & 0xfff; + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) { + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), bytes); + if (new_screenaddr & 0xfff) + memcpy(antic_memory + ANTIC_margin + bytes, ANTIC_xe_ptr + (screenaddr + bytes - 0x5000), new_screenaddr & 0xfff); + } + else if ((screenaddr & 0xf000) == 0xd000) { + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_CopyFromMem((UWORD) (screenaddr + bytes - 0x1000), antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + else { + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, bytes); + if (new_screenaddr & 0xfff) + MEMORY_dCopyFromMem(screenaddr + bytes - 0x1000, antic_memory + ANTIC_margin + bytes, new_screenaddr & 0xfff); + } + screenaddr = new_screenaddr - 0x1000; + } + else { + if (ANTIC_xe_ptr != NULL && screenaddr < 0x8000 && screenaddr >= 0x4000) + memcpy(antic_memory + ANTIC_margin, ANTIC_xe_ptr + (screenaddr - 0x4000), chars_read[md]); + else if ((screenaddr & 0xf000) == 0xd000) + MEMORY_CopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + else + MEMORY_dCopyFromMem(screenaddr, antic_memory + ANTIC_margin, chars_read[md]); + screenaddr = new_screenaddr; + } +#endif +} + +#ifdef NEW_CYCLE_EXACT +int ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + +#ifdef USE_CURSES +static int scanlines_to_curses_display = 0; +#endif + +/* This function emulates one frame drawing screen at Screen_atari */ +void ANTIC_Frame(int draw_display) +{ + static const UBYTE mode_type[32] = { + NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL0, NORMAL1, NORMAL1, + NORMAL2, NORMAL2, NORMAL1, NORMAL1, NORMAL1, NORMAL0, NORMAL0, NORMAL0, + SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL0, SCROLL1, SCROLL1, + SCROLL2, SCROLL2, SCROLL1, SCROLL1, SCROLL1, SCROLL0, SCROLL0, SCROLL0 + }; + static const UBYTE normal_lastline[16] = + { 0, 0, 7, 9, 7, 15, 7, 15, 7, 3, 3, 1, 0, 1, 0, 0 }; + UBYTE vscrol_flag = FALSE; + UBYTE no_jvb = TRUE; +#ifndef NEW_CYCLE_EXACT + UBYTE need_load; +#endif + +#ifdef NEW_CYCLE_EXACT + int cpu2antic_index; +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_ypos = 0; + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < 8); + + scrn_ptr = (UWORD *) Screen_atari; +#ifdef NEW_CYCLE_EXACT + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; +#endif + need_dl = TRUE; + do { +#ifdef SKIP + if ((INPUT_mouse_mode == INPUT_MOUSE_PEN || INPUT_mouse_mode == INPUT_MOUSE_GUN) && (ANTIC_ypos >> 1 == ANTIC_PENV_input)) { + PENH = ANTIC_PENH_input; + PENV = ANTIC_PENV_input; + if (GTIA_GRACTL & 4) + GTIA_TRIG_latch[INPUT_mouse_port] = 0; + } +#endif + POKEY_Scanline(); /* check and generate IRQ */ + pmg_dma(); + +#ifdef USE_CURSES + if (--scanlines_to_curses_display == 0) + curses_display_line(anticmode, antic_memory + ANTIC_margin); +#endif + + need_load = FALSE; + if (need_dl) { + if (ANTIC_DMACTL & 0x20) { + IR = ANTIC_GetDLByte(&ANTIC_dlist); + anticmode = IR & 0xf; + ANTIC_xpos++; + /* PMG flickering :-) */ + if (ANTIC_missile_flickering) + GTIA_GRAFM = ANTIC_ypos & 1 ? IR : ((GTIA_GRAFM ^ IR) & hold_missiles_tab[GTIA_VDELAY & 0xf]) ^ IR; + if (ANTIC_player_flickering) + { + UBYTE hold = ANTIC_ypos & 1 ? 0 : GTIA_VDELAY; + if ((hold & 0x10) == 0) + GTIA_GRAFP0 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 8)); + if ((hold & 0x20) == 0) + GTIA_GRAFP1 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 9)); + if ((hold & 0x40) == 0) + GTIA_GRAFP2 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 10)); + if ((hold & 0x80) == 0) + GTIA_GRAFP3 = MEMORY_dGetByte((UWORD) (CPU_regPC - ANTIC_xpos + 11)); + } + } + else + IR &= 0x7f; /* repeat last instruction, but don't generate DLI */ + + dctr = 0; + need_dl = FALSE; + vscrol_off = FALSE; + + switch (anticmode) { + case 0x00: + lastline = (IR >> 4) & 7; + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + case 0x01: + lastline = 0; + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + no_jvb = FALSE; + } + else + if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + break; + default: + lastline = normal_lastline[anticmode]; + if (IR & 0x20) { + if (!vscrol_flag) { + CPU_GO(VSCON_C); + dctr = ANTIC_VSCROL; + vscrol_flag = TRUE; + } + } + else if (vscrol_flag) { + lastline = ANTIC_VSCROL; + vscrol_flag = FALSE; + vscrol_off = TRUE; + } + if (IR & 0x40 && ANTIC_DMACTL & 0x20) { + screenaddr = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + md = mode_type[IR & 0x1f]; + need_load = TRUE; + draw_antic_ptr = draw_antic_table[GTIA_PRIOR >> 6][anticmode]; + break; + } + } +#ifdef NEW_CYCLE_EXACT + cpu2antic_index = 0; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || + (anticmode >= 8 && !need_load)) { + cpu2antic_index = 0; + } + else { +/* TODO: use a cleaner lookup table here */ + if (!(IR & 0x10) && ((ANTIC_DMACTL & 3) == 1)) + cpu2antic_index = 1; + else if ((!(IR &0x10) && ((ANTIC_DMACTL & 3) == 2)) || + ((IR & 0x10) && ((ANTIC_DMACTL & 3) == 1))) { + cpu2antic_index = 2; + } + else + cpu2antic_index = 10; + if (IR & 0x10) { + cpu2antic_index += (ANTIC_HSCROL >> 1); + } + if (anticmode >=2 && anticmode <=7 && !need_load) + cpu2antic_index += 17; + if (anticmode ==6 || anticmode ==7) + cpu2antic_index += 17 * 2; + else if (anticmode==8 || anticmode == 9) + cpu2antic_index += 17 * 6; + else if (anticmode >=0xa && anticmode <=0xc) + cpu2antic_index += 17 * 5; + else if (anticmode >=0x0d) + cpu2antic_index += 17 * 4; + } + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[CYCLE_MAP_SIZE * cpu2antic_index]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[CYCLE_MAP_SIZE * cpu2antic_index]; +#endif /* NEW_CYCLE_EXACT */ + + if ((IR & 0x4f) == 1 && (ANTIC_DMACTL & 0x20)) { + ANTIC_dlist = ANTIC_GetDLWord(&ANTIC_dlist); + ANTIC_xpos += 2; + } + +#ifdef NEW_CYCLE_EXACT + /* begin drawing here */ + if (draw_display) { + ANTIC_cur_screen_pos = LBORDER_START; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_xpos]; /* convert antic to cpu(need for WSYNC) */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMIST_C]); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_antic2cpu_ptr[ANTIC_NMI_C]); + CPU_NMI(); + } + } + } + } + else /* force this to be within an else if NEW_CYCLE_EXACT */ +#endif /* NEW_CYCLE_EXACT */ + if (dctr == lastline) { + if (no_jvb) + need_dl = TRUE; + if (IR & 0x80) { + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x9f; + if (ANTIC_NMIEN & 0x80) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + } + } + if (!draw_display) { + ANTIC_xpos += ANTIC_DMAR; + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + if (need_load) { + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos += before_cycles[md] - extra_cycles[md]; + } + if (anticmode < 8) + ANTIC_xpos += font_cycles[md]; + GOEOL; + dctr++; + dctr &= 0xf; + continue; + } +#ifndef NO_YPOS_BREAK_FLICKER +#define YPOS_BREAK_FLICKER do{if (ANTIC_ypos == ANTIC_break_ypos - 1000) {\ + static int toggle;\ + if (toggle == 1) {\ + FILL_VIDEO(scrn_ptr + LBORDER_START, 0x0f0f, (RBORDER_END - LBORDER_START) * 2);\ + }\ + toggle = !toggle;\ + }}while(0) +#else +#define YPOS_BREAK_FLICKER do{}while(0) +#endif /* NO_YPOS_BREAK_FLICKER */ + +#ifdef NEW_CYCLE_EXACT + GTIA_NewPmScanline(); + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + YPOS_BREAK_FLICKER; + scrn_ptr += Screen_WIDTH / 2; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + GOEOL_CYCLE_EXACT; + draw_partial_scanline(ANTIC_cur_screen_pos, RBORDER_END); + UPDATE_DMACTL; + UPDATE_GTIA_BUG; + ANTIC_cur_screen_pos = ANTIC_NOT_DRAWING; + +#else /* NEW_CYCLE_EXACT not defined */ + if (need_load && anticmode <= 5 && ANTIC_DMACTL & 3) + ANTIC_xpos += before_cycles[md]; + + CPU_GO(SCR_C); + GTIA_NewPmScanline(); + + ANTIC_xpos += ANTIC_DMAR; + + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + draw_antic_0_ptr(); + GOEOL; + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + if (no_jvb) { + dctr++; + dctr &= 0xf; + } + continue; + } + + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + ANTIC_xpos += load_cycles[md]; + if (anticmode <= 5) /* extra cycles in font modes */ + ANTIC_xpos -= extra_cycles[md]; + } + + draw_antic_ptr(chars_displayed[md], + antic_memory + ANTIC_margin + ch_offset[md], + scrn_ptr + x_min[md], + (ULONG *) >IA_pm_scanline[x_min[md]]); + + GOEOL; +#endif /* NEW_CYCLE_EXACT */ + YPOS_BREAK_FLICKER; + scrn_ptr += scrn_line; + dctr++; + dctr &= 0xf; + } while (ANTIC_ypos < (ATARI_HEIGHT + 8)); + + emu_DrawVsync(); + +#ifndef NO_SIMPLE_PAL_BLENDING + /* Simple PAL blending, using only the base 256 color palette. */ + if (ANTIC_pal_blending) + { + int ypos = ANTIC_ypos - 1; + /* Start at the last screen line (248). */ + ULONG *ptr = (ULONG *) (scrn_ptr - 4 * RCHOP); + do { + int k = 2 * (48 - LCHOP - RCHOP); + do { + /* For each grayscale pixel (colors $00..$0f) blend it with + chrominance of a pixel from the previous line. */ + ULONG pix = READ_VIDEO_LONG(--ptr); + ULONG mask = 0xf0f0f0f0; + /* Take advantage of the fact that chrominance can change only + every two pixels. This way we may test only two pixels in a + quadruplet instead of four. */ + if (pix & 0x0000f0f0) + /* Two LSBs are non-grayscale */ + mask &= 0xf0f00000; + if (pix & 0xf0f00000) + /* Two MSBs are non-grayscale */ + mask &= 0x0000f0f0; + + WRITE_VIDEO_LONG(ptr, (READ_VIDEO_LONG(ptr - ATARI_WIDTH / 4) & mask) | pix); + } while (--k); + ptr -= 2 * (LCHOP + RCHOP); /* Move one line up */ + } while (--ypos > 8); /* Stop after line 9 */ + + } +#endif /* NO_SIMPLE_PAL_BLENDING */ + +/* TODO: cycle-exact overscreen lines */ + POKEY_Scanline(); /* check and generate IRQ */ + CPU_GO(ANTIC_NMIST_C); + ANTIC_NMIST = 0x5f; /* Set VBLANK */ + if (ANTIC_NMIEN & 0x40) { + CPU_GO(ANTIC_NMI_C); + CPU_NMI(); + } + ANTIC_xpos += ANTIC_DMAR; + GOEOL; + + do { + POKEY_Scanline(); /* check and generate IRQ */ + OVERSCREEN_LINE; + } while (ANTIC_ypos < max_ypos); + ANTIC_ypos = 0; /* just for monitor.c */ +} + +#ifdef NEW_CYCLE_EXACT + +/* update the scanline from the last changed position to the current +position, when a change was made to a display register during drawing */ +void ANTIC_UpdateScanline(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* prior needs a different adjustment and could generate small glitches +between mode changes */ +/* TODO: support glitches between mode changes (tiny areas that are neither +the new mode nor the old mode, which occur between mode changes */ +void ANTIC_UpdateScanlinePrior(UBYTE byte) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int prior_mode_adj = 2; + int oldpos = ANTIC_cur_screen_pos; + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + prior_mode_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chbase needs a different adjustment */ +void update_scanline_chbase(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + int fontfetch_adj; + /* antic fetches character font data every 2 or 4 cycles */ + /* we want to delay the change until the next fetch */ + /* empirically determined: */ + if (anticmode >= 2 && anticmode <= 5) { + fontfetch_adj = (((hscrol_adj >>1) - actual_xpos + 0) & 1) * 2 + 9; + } + else if (anticmode == 6 || anticmode == 7) { + fontfetch_adj = (((hscrol_adj >> 1) - actual_xpos + 2) & 3) * 2 + 9; + } + else { + fontfetch_adj = 0; + } + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + fontfetch_adj; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl invert needs a different adjustment */ +void update_scanline_invert(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 4 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 4; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +/* chactl blank needs a different adjustment */ +void update_scanline_blank(void) +{ + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int hscrol_adj = (IR & 0x10) ? ANTIC_HSCROL : 0; + int hscrollsb_adj = (hscrol_adj & 1); + int oldpos = ANTIC_cur_screen_pos; + + /* empirically determined: adjustment of 7 */ + ANTIC_cur_screen_pos = actual_xpos * 2 - 37 + hscrollsb_adj + 7; + draw_partial_scanline(oldpos, ANTIC_cur_screen_pos); +} + +static void set_dmactl_bug(void){ + need_load = FALSE; + saved_draw_antic_ptr = draw_antic_ptr; + draw_antic_ptr_changed = 1; + if (anticmode == 2 || anticmode == 3 || anticmode == 0xf) { + draw_antic_ptr = draw_antic_2_dmactl_bug; + dmactl_bug_chdata = (anticmode == 0xf) ? 0 : antic_memory[ANTIC_margin + chars_read[md] - 1]; + } + else { + draw_antic_ptr = draw_antic_0_dmactl_bug; + } +} + +/* draw a partial scanline between point l and point r */ +/* l is the left hand word, r is the point one past the right-most word to draw */ +void draw_partial_scanline(int l, int r) +{ + /* lborder_chars: save left border chars,we restore it after */ + /* it is the number of 8pixel 'chars' in the left border */ + int lborder_chars = left_border_chars; + + /* rborder_start: save right border start, we restore it after */ + /* it is the start of the right border, in words */ + int rborder_start = right_border_start; + + /* lborder_start: start of the left border, in words */ + int lborder_start = LCHOP * 4; + /* end of the left border, in words */ + int lborder_end = LCHOP * 4 + left_border_chars * 4; + /* end of the right border, in words */ + int rborder_end = (48 - RCHOP) * 4; + /* flag: if true, don't show playfield. used if the partial scanline */ + /* does not include the playfield */ + int dont_display_playfield = 0; + /* offset of the left most drawable 8 pixel pf block */ + /* int l_pfchar = (lborder_end - x_min[md]) / 4; */ + int l_pfchar = 0; + /* offset of the right most drawable 8 pixel pf plock, *plus one* */ + int r_pfchar = 0; + /* buffer to save 0,1,2 or 3 words of the left hand portion of an 8pixel */ + /* 'char' which is going to be erased by the left hand side of the */ + /* left most 8pixel 'char' in the partial scanline and must be saved */ + /* and restored later */ + UWORD sv_buf[4]; + /* buffer to save 0 or 1 (modes 6,7,a,b,c) ,or , (0,1,2 or 3) (modes 8,9) */ + /* 8pixel 'chars' of playfield which is going to be erased by the left */ + /* hand most 8pixel 'char's of the 2(modes 67abc) or 4(modes 89) 8pixel */ + /* 'char'-sized blocks that these modes must draw. */ + UWORD sv_buf2[4 * 4]; /* for modes 6,7,8,9,a,b,c */ + /* start,size of the above buffers */ + int sv_bufstart = 0; + int sv_bufsize = 0; + int sv_bufstart2 = 0; + int sv_bufsize2 = 0; + /* number of 8,16,32pixel chars to draw in the playfield */ + int nchars = 0; + /* adjustment to ch_index , it is the number of 8,16,32pixel chars */ + /* that we do not draw on the left hand side that would usually be drawn */ + /* for this mode */ + int ch_adj = 0; + /* adjustment to x_min to skip over the left side */ + int x_min_adj = 0; + /* it's the offset of the left most drawable 8pixel pfblock which is */ + /* rounded *down* to the nearest factor of (2:mode 67abc,4:mode 89) */ + /* if it is divided by (2:mode 67abc,4:mode 89) it will give the */ + /* offset of the left most drawable (16,32)pixel 'char' */ + int l_pfactual = 0; + /* it is the offset of the right most drawable 8pixel pf block which is */ + /* rounded *up* to the nearest factor of (2,4), *plus one* */ + /* so that r_pfactual-l_pfactual / (2,4) = number of 16,32 pixel 'chars' */ + /* to be drawn */ + int r_pfactual = 0; + /* it is the offset of the 8pixel block aligned with pf which overlaps */ + /* the left border. We need this for modes 6-c, because in these modes */ + /* the code will save 8pixel blocks to the left of l_pfchar and */ + /* >= l_pfactual, which will result in portions of the left border */ + /* being saved on some occasions which should not be, unless we */ + /* use this variable to alter the number of chars saved */ + /* int l_borderpfchar=0; */ + + r_pfchar = chars_displayed[md]; + if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + r_pfchar *= 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + r_pfchar *= 4; + } + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0) { + lborder_end = rborder_end; + dont_display_playfield = 1; + } + if (l > rborder_end) + l = rborder_end; + if (r > rborder_end) + r = rborder_end; + if (l < lborder_start) + l = lborder_start; + if (r < lborder_start) + r = lborder_start; + if (l >= r) + return; + if (l < lborder_end) { + /* left point is within left border */ + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + left_border_start = sv_bufstart; + left_border_chars = lborder_chars - (sv_bufstart - lborder_start) / 4; + if (l > x_min[md]) { + /* special case for modes 56789abc */ + /* position buffer within the reference frame */ + /* of the playfield if that */ + /* results in more pixels being saved in the buffer */ + /* needed because for modes 5789abc the overlapping part */ + /* can be more than 1 8pixel char and we only save the left */ + /* hand most 8pixel chars in the code in the later section */ + /* further down, so there is a possibility that the 8pixels */ + /* which are saved within the reference frame of the border */ + /* are not enough to ensure that everything gets saved */ + l_pfchar = (l - x_min[md]) / 4; + if (((l - x_min[md]) & 3) > sv_bufsize) { + sv_bufsize = ((l - x_min[md]) & 3); + sv_bufstart = l - sv_bufsize; + } + } + } + else if (l >= rborder_start) { + sv_bufstart = (l & (~3)); /* high order bits give buffer start */ + sv_bufsize = l - sv_bufstart; + right_border_start = sv_bufstart; + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /*within screen */ + sv_bufsize = ((l - x_min[md]) & 3); /* low bits have buf size */ + sv_bufstart = l - sv_bufsize; /* difference gives start */ + l_pfchar = (sv_bufstart - x_min[md]) / 4; + left_border_chars = 0; /* don't display left border */ + } + memcpy(sv_buf, scrn_ptr + sv_bufstart, sv_bufsize * sizeof(UWORD)); /* save part of screen */ + + if (r <= lborder_end) { + /* right_end_char = (r + 3) / 4; */ + left_border_chars = (r + 3) / 4 - sv_bufstart / 4; + /* everything must be within the left border */ + dont_display_playfield = 1; /* don't display the playfield */ + } + else { /* right point is past start of playfield */ + /* now load ANTIC data: needed for ANTIC glitches */ + if (need_load) { + antic_load(); +#ifdef USE_CURSES + /* Normally, we would call curses_display_line here, + and not use scanlines_to_curses_display at all. + That would however cause incorrect color of the "MEMORY" + menu item in Self Test - it isn't set properly + in the first scanline. We therefore postpone + curses_display_line call to the next scanline. */ + scanlines_to_curses_display = 1; +#endif + need_load = FALSE; + } + + if (r > rborder_start) { + right_border_end = ((r + 3) & (~3)); /* round up to nearest 8pixel */ + } + else { + r_pfchar = (r - x_min[md] + 3) / 4; /* round up to nearest 8pixel */ + } + } + if (dont_display_playfield) { + nchars = 0; + x_min_adj = 0; + ch_adj = 0; + } + else if (md == NORMAL1 || md == SCROLL1) { /* modes 6,7,a,b,c */ + l_pfactual = (l_pfchar & (~1)); /* round down to nearest 16pixel */ + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 1) & (~1)); /* round up to nearest 16pixel */ + nchars = (r_pfactual - l_pfactual) / 2; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 2; + } + else if (md == NORMAL2 || md == SCROLL2) { /* modes 8,9 */ + l_pfactual = (l_pfchar & (~3)); + sv_bufsize2 = (l_pfchar - l_pfactual) * 4; + sv_bufstart2 = x_min[md] + l_pfactual * 4; + r_pfactual = ((r_pfchar + 3) & (~3)); + nchars = (r_pfactual - l_pfactual) / 4; + x_min_adj = l_pfactual * 4; + ch_adj = l_pfactual / 4; + } + else { + nchars = r_pfchar - l_pfchar; + x_min_adj = l_pfchar * 4; + ch_adj = l_pfchar; + } + memcpy(sv_buf2, scrn_ptr + sv_bufstart2, sv_bufsize2 * sizeof(UWORD)); /* save part of screen */ + + if (dont_display_playfield) { +/* the idea here is to use draw_antic_0_ptr() to draw just the border only, since */ +/* we can't set nchars=0. draw_antic_0_ptr will work if left_border_start and */ +/* right_border_end are set correctly */ + if (anticmode < 2 || (ANTIC_DMACTL & 3) == 0 || r <= lborder_end) { + right_border_end = left_border_start + left_border_chars * 4; + } + else if (l >= rborder_start) { + left_border_start = right_border_start; + } + draw_antic_0_ptr(); + } + else { + draw_antic_ptr(nchars, /* chars_displayed[md], */ + antic_memory + ANTIC_margin + ch_offset[md] + ch_adj, + scrn_ptr + x_min[md] + x_min_adj, + (ULONG *) >IA_pm_scanline[x_min[md] + x_min_adj]); + } + memcpy(scrn_ptr + sv_bufstart2, sv_buf2, sv_bufsize2 * sizeof(UWORD)); /* restore screen */ + memcpy(scrn_ptr + sv_bufstart, sv_buf, sv_bufsize * sizeof(UWORD)); /* restore screen */ + + /* restore border global variables */ + left_border_chars=lborder_chars; + right_border_start=rborder_start; + left_border_start = LCHOP * 4; + right_border_end = (48-RCHOP) *4; +} +#endif /* NEW_CYCLE_EXACT */ + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* ANTIC registers --------------------------------------------------------- */ + +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_VCOUNT: + if (ANTIC_XPOS < ANTIC_LINE_C) + return ANTIC_ypos >> 1; + if (ANTIC_ypos + 1 < max_ypos) + return (ANTIC_ypos + 1) >> 1; + return 0; + case ANTIC_OFFSET_PENH: + return PENH; + case ANTIC_OFFSET_PENV: + return PENV; + case ANTIC_OFFSET_NMIST: + return ANTIC_NMIST; + default: + return 0xff; + } +} + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +/* GTIA calls it on write to PRIOR */ +void ANTIC_SetPrior(UBYTE byte) +{ + if ((byte ^ GTIA_PRIOR) & 0x0f) { +#ifdef USE_COLOUR_TRANSLATION_TABLE + UBYTE col = 0; + UBYTE col2 = 0; + UBYTE hi; + UBYTE hi2; + if ((byte & 3) == 0) { + col = GTIA_COLPF0; + col2 = GTIA_COLPF1; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[col | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[col | GTIA_COLPM0 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2 | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[col2 | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[col2 | GTIA_COLPM0 | GTIA_COLPM1]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[col]; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[col2]; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = ANTIC_cl[C_HI2]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(GTIA_COLPM0 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(GTIA_COLPM1 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[((GTIA_COLPM0 | GTIA_COLPM1) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + col = col2 = 0; + hi = hi2 = GTIA_COLPF1 & 0xf; + ANTIC_cl[C_BLACK - C_PF2 + C_HI2] = colour_translation_table[hi]; + if ((byte & 9) == 0) { + col = GTIA_COLPF2; + col2 = GTIA_COLPF3; + hi |= col & 0xf0; + hi2 |= col2 & 0xf0; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[col | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[col | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2 | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[col2 | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[col2 | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[hi | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[hi | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[hi2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM35] = colour_translation_table[hi2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[hi2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[col]; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[col2]; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[hi]; + } +#else /* USE_COLOUR_TRANSLATION_TABLE */ + UWORD cword = 0; + UWORD cword2 = 0; + if ((byte & 3) == 0) { + cword = ANTIC_cl[C_PF0]; + cword2 = ANTIC_cl[C_PF1]; + } + if ((byte & 0xc) == 0) { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF0 | C_PM01] = cword | ANTIC_cl[C_PM01]; + ANTIC_cl[C_PF1 | C_PM0] = cword2 | ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF1 | C_PM1] = cword2 | ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PM01]; + } + else { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword2; + } + if (byte & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF3]; + } + else { + ANTIC_cl[C_PF3 | C_PM0] = ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PM0]; + ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PM1]; + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PM01]; + } + cword = cword2 = 0; + if ((byte & 9) == 0) { + cword = ANTIC_cl[C_PF2]; + cword2 = ANTIC_cl[C_PF3]; + } + if ((byte & 6) == 0) { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF2 | C_PM23] = cword | ANTIC_cl[C_PM23]; + ANTIC_cl[C_PF3 | C_PM2] = cword2 | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM3] = cword2 | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword2; + } +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + if (byte & 1) { + ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PM23]; + } + else { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = ANTIC_cl[C_PF1]; + } + if ((byte & 0xf) == 0xc) { + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = ANTIC_cl[C_PF1]; + } + else + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = GTIA_COLOUR_BLACK; + if (byte & 0xf) { + ANTIC_cl[C_PF0 | C_PM25] = ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = GTIA_COLOUR_BLACK; + } + else { + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23]; + } + } + pm_lookup_ptr = pm_lookup_table[prior_to_pm_lookup[byte & 0x3f]]; + draw_antic_0_ptr = byte < 0x80 ? draw_antic_0 : byte < 0xc0 ? draw_antic_0_gtia10 : draw_antic_0_gtia11; + if (byte < 0x40 && (GTIA_PRIOR >= 0x40 || gtia_bug_active) && (anticmode == 2 || anticmode == 3 || anticmode == 0xf) && ANTIC_XPOS >= ((ANTIC_DMACTL & 3) == 3 ? 16 : 18)) { + /* A GTIA Mode was active, and no longer is. An ANTIC hi-res mode is being used. GTIA is no longer set in hi-res mode */ + if (anticmode == 2 || anticmode == 3) draw_antic_ptr = draw_antic_2_gtia_bug; + else if (anticmode == 0xf) draw_antic_ptr = draw_antic_f_gtia_bug; + gtia_bug_active = TRUE; + } + else + draw_antic_ptr = draw_antic_table[byte >> 6][anticmode]; +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +void ANTIC_PutByte(UWORD addr, UBYTE byte) +{ + switch (addr & 0xf) { + case ANTIC_OFFSET_DLISTL: + ANTIC_dlist = (ANTIC_dlist & 0xff00) | byte; + break; + case ANTIC_OFFSET_DLISTH: + ANTIC_dlist = (ANTIC_dlist & 0x00ff) | (byte << 8); + break; + case ANTIC_OFFSET_DMACTL: +/* TODO: make this truly cycle-exact, update cpu2antic and antic2cpu, +add support for wider->narrow glitches including the interesting mode 6 +glitch */ +#ifdef NEW_CYCLE_EXACT + dmactl_changed=0; + /* has DMACTL width changed? */ + if ((byte & 3) != (ANTIC_DMACTL & 3) ){ + /* DMACTL width changed from 0 */ + if ((ANTIC_DMACTL & 3) == 0) { + int glitch_cycle = (3 + 32) - 8*(byte & 3); + int x = ANTIC_XPOS; + if((IR & 0x10) && ((byte & 3) != 3)){ + /*adjust for narrow or std HSCROL*/ + glitch_cycle -= 8; + } + /*ANTIC doesn't fetch and display data if the*/ + /*DMACTL width changes from zero after this */ + /*cycle. Instead, it displays a blank scan */ + /*line for modes other than 23F and for 23F */ + /*it displays a glitched line after the change*/ + if(x >= glitch_cycle){ + if(ANTIC_DRAWING_SCREEN){ + ANTIC_UpdateScanline(); + set_dmactl_bug(); + } + } + else { + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + /* DMACTL width changed to 0 */ + else if ((byte & 3)==0) { + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + int actual_xpos = ANTIC_cpu2antic_ptr[ANTIC_xpos]; + int antic_limit = ANTIC_cpu2antic_ptr[ANTIC_xpos_limit]; + ANTIC_UpdateScanline(); + /*fix for a minor glitch in fasteddie*/ + /*don't steal cycles after DMACTL off*/ + ANTIC_cpu2antic_ptr = &CYCLE_MAP_cpu2antic[0]; + ANTIC_antic2cpu_ptr = &CYCLE_MAP_antic2cpu[0]; + ANTIC_xpos = ANTIC_antic2cpu_ptr[actual_xpos]; + ANTIC_xpos_limit = ANTIC_antic2cpu_ptr[antic_limit]; + } + /* DMACTL width has changed and not to 0 and not from 0 */ + } + else { + /* DMACTL width has increased and no HSCROL */ + if (((byte & 3) > (ANTIC_DMACTL & 3)) && !(IR & 0x10)) { + int x; /* the change cycle */ + int left_glitch_cycle = 0; + int right_glitch_cycle = 0; + x = ANTIC_XPOS; + if (((ANTIC_DMACTL & 3) == 2) && ((byte & 3) == 3)) { /* Normal->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 18; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 3)) { /* Narrow->Wide */ + left_glitch_cycle = 11; + right_glitch_cycle = 26; + } + else if (((ANTIC_DMACTL & 3) == 1) && ((byte & 3) == 2)) { /* Narrow->Normal */ + left_glitch_cycle = 19; + right_glitch_cycle = 27; + } + /* change occurs during drawing of line */ + /* delay change till next line */ + if (x > right_glitch_cycle) { + dmactl_changed = 1; + delayed_DMACTL = byte; + break; + /* change occurs during 'glitch' region */ + } + else if (x >= left_glitch_cycle && x <= right_glitch_cycle && anticmode > 1) { + set_dmactl_bug(); + } + } + else { + /* DMACTL width has decreased or HSCROL */ + /* TODO: this is not 100% correct */ + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } + } + } + } +#endif /* NEW_CYCLE_EXACT */ + ANTIC_DMACTL = byte; +#if defined(BASIC) || defined(CURSES_BASIC) + break; +#else + switch (byte & 0x03) { + case 0x00: + /* no antic_load when screen off */ + /* chars_read[NORMAL0] = 0; + chars_read[NORMAL1] = 0; + chars_read[NORMAL2] = 0; + chars_read[SCROLL0] = 0; + chars_read[SCROLL1] = 0; + chars_read[SCROLL2] = 0; */ + /* no draw_antic_* when screen off */ + /* chars_displayed[NORMAL0] = 0; + chars_displayed[NORMAL1] = 0; + chars_displayed[NORMAL2] = 0; + chars_displayed[SCROLL0] = 0; + chars_displayed[SCROLL1] = 0; + chars_displayed[SCROLL2] = 0; + x_min[NORMAL0] = 0; + x_min[NORMAL1] = 0; + x_min[NORMAL2] = 0; + x_min[SCROLL0] = 0; + x_min[SCROLL1] = 0; + x_min[SCROLL2] = 0; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + ch_offset[SCROLL0] = 0; + ch_offset[SCROLL1] = 0; + ch_offset[SCROLL2] = 0; */ + /* no borders when screen off, only background */ + /* left_border_chars = 48 - LCHOP - RCHOP; + right_border_start = 0; */ + break; + case 0x01: + chars_read[NORMAL0] = 32; + chars_read[NORMAL1] = 16; + chars_read[NORMAL2] = 8; + chars_read[SCROLL0] = 40; + chars_read[SCROLL1] = 20; + chars_read[SCROLL2] = 10; + chars_displayed[NORMAL0] = 32; + chars_displayed[NORMAL1] = 16; + chars_displayed[NORMAL2] = 8; + x_min[NORMAL0] = 32; + x_min[NORMAL1] = 32; + x_min[NORMAL2] = 32; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 32; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 16; + load_cycles[NORMAL2] = 8; + before_cycles[NORMAL0] = BEFORE_CYCLES; + before_cycles[SCROLL0] = BEFORE_CYCLES + 8; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES; + extra_cycles[SCROLL0] = 8 + BEFORE_CYCLES + 8; + left_border_chars = 8 - LCHOP; + right_border_start = (ATARI_WIDTH - 64) / 2; + break; + case 0x02: + chars_read[NORMAL0] = 40; + chars_read[NORMAL1] = 20; + chars_read[NORMAL2] = 10; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 40; + chars_displayed[NORMAL1] = 20; + chars_displayed[NORMAL2] = 10; + x_min[NORMAL0] = 16; + x_min[NORMAL1] = 16; + x_min[NORMAL2] = 16; + ch_offset[NORMAL0] = 0; + ch_offset[NORMAL1] = 0; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 40; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 20; + load_cycles[NORMAL2] = 10; + before_cycles[NORMAL0] = BEFORE_CYCLES + 8; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 8 + BEFORE_CYCLES + 8; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 4 - LCHOP; + right_border_start = (ATARI_WIDTH - 32) / 2; + break; + case 0x03: + chars_read[NORMAL0] = 48; + chars_read[NORMAL1] = 24; + chars_read[NORMAL2] = 12; + chars_read[SCROLL0] = 48; + chars_read[SCROLL1] = 24; + chars_read[SCROLL2] = 12; + chars_displayed[NORMAL0] = 42; + chars_displayed[NORMAL1] = 22; + chars_displayed[NORMAL2] = 12; + x_min[NORMAL0] = 12; + x_min[NORMAL1] = 8; + x_min[NORMAL2] = 0; + ch_offset[NORMAL0] = 3; + ch_offset[NORMAL1] = 1; + ch_offset[NORMAL2] = 0; + font_cycles[NORMAL0] = load_cycles[NORMAL0] = 47; + font_cycles[NORMAL1] = load_cycles[NORMAL1] = 24; + load_cycles[NORMAL2] = 12; + before_cycles[NORMAL0] = BEFORE_CYCLES + 16; + before_cycles[SCROLL0] = BEFORE_CYCLES + 16; + extra_cycles[NORMAL0] = 7 + BEFORE_CYCLES + 16; + extra_cycles[SCROLL0] = 7 + BEFORE_CYCLES + 16; + left_border_chars = 3 - LCHOP; + right_border_start = (ATARI_WIDTH - 8) / 2; + break; + } + + ANTIC_missile_dma_enabled = (byte & 0x0c); /* no player dma without missile */ + ANTIC_player_dma_enabled = (byte & 0x08); + singleline = (byte & 0x10); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + + byte = ANTIC_HSCROL; /* update horizontal scroll data */ +/* ******* FALLTHROUGH ******* */ + case ANTIC_OFFSET_HSCROL: +/* TODO: make this truely cycle exact, and update cpu2antic and antic2cpu */ +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + ANTIC_HSCROL = byte &= 0x0f; + if (ANTIC_DMACTL & 3) { + chars_displayed[SCROLL0] = chars_displayed[NORMAL0]; + ch_offset[SCROLL0] = 4 - (byte >> 2); + x_min[SCROLL0] = x_min[NORMAL0]; + if (byte & 3) { + x_min[SCROLL0] += (byte & 3) - 4; + chars_displayed[SCROLL0]++; + ch_offset[SCROLL0]--; + } + chars_displayed[SCROLL2] = chars_displayed[NORMAL2]; + if ((ANTIC_DMACTL & 3) == 3) { /* wide playfield */ + ch_offset[SCROLL0]--; + if (byte == 4 || byte == 12) + chars_displayed[SCROLL1] = 21; + else + chars_displayed[SCROLL1] = 22; + if (byte <= 4) { + x_min[SCROLL1] = byte + 8; + ch_offset[SCROLL1] = 1; + } + else if (byte <= 12) { + x_min[SCROLL1] = byte; + ch_offset[SCROLL1] = 0; + } + else { + x_min[SCROLL1] = byte - 8; + ch_offset[SCROLL1] = -1; + } + /* technically, the part below is wrong */ + /* scrolling in mode 8,9 with HSCROL=13,14,15 */ + /* will set x_min=13,14,15 > 4*LCHOP = 12 */ + /* so that nothing is drawn on the far left side */ + /* of the screen. We could fix this, but only */ + /* by setting x_min to be negative. */ + x_min[SCROLL2] = byte; + ch_offset[SCROLL2] = 0; + } + else { + chars_displayed[SCROLL1] = chars_displayed[NORMAL1]; + ch_offset[SCROLL1] = 2 - (byte >> 3); + x_min[SCROLL1] = x_min[NORMAL0]; + if (byte) { + if (byte & 7) { + x_min[SCROLL1] += (byte & 7) - 8; + chars_displayed[SCROLL1]++; + ch_offset[SCROLL1]--; + } + x_min[SCROLL2] = x_min[NORMAL2] + byte - 16; + chars_displayed[SCROLL2]++; + ch_offset[SCROLL2] = 0; + } + else { + x_min[SCROLL2] = x_min[NORMAL2]; + ch_offset[SCROLL2] = 1; + } + } + + if (ANTIC_DMACTL & 2) { /* normal & wide playfield */ + load_cycles[SCROLL0] = 47 - (byte >> 2); + font_cycles[SCROLL0] = (47 * 4 + 1 - byte) >> 2; + load_cycles[SCROLL1] = (24 * 8 + 3 - byte) >> 3; + font_cycles[SCROLL1] = (24 * 8 + 1 - byte) >> 3; + load_cycles[SCROLL2] = byte < 0xc ? 12 : 11; + } + else { /* narrow playfield */ + font_cycles[SCROLL0] = load_cycles[SCROLL0] = 40; + font_cycles[SCROLL1] = load_cycles[SCROLL1] = 20; + load_cycles[SCROLL2] = 16; + } + } + break; + case ANTIC_OFFSET_VSCROL: + ANTIC_VSCROL = byte & 0x0f; + if (vscrol_off) { + lastline = ANTIC_VSCROL; + if (ANTIC_XPOS < VSCOF_C) + need_dl = dctr == lastline; + } + break; + case ANTIC_OFFSET_PMBASE: + ANTIC_PMBASE = byte; + pmbase_d = (byte & 0xfc) << 8; + pmbase_s = pmbase_d & 0xf8ff; + break; + case ANTIC_OFFSET_CHACTL: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_invert(); + } +#endif + invert_mask = byte & 2 ? 0x80 : 0; +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_blank(); + } +#endif + blank_mask = byte & 1 ? 0xe0 : 0x60; + if ((ANTIC_CHACTL ^ byte) & 4) { +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + /* timing for flip is the same as chbase */ + update_scanline_chbase(); + } +#endif + chbase_20 ^= 7; + } + ANTIC_CHACTL = byte; + break; + case ANTIC_OFFSET_CHBASE: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + update_scanline_chbase(); + } +#endif + ANTIC_CHBASE = byte; + chbase_20 = (byte & 0xfe) << 8; + if (ANTIC_CHACTL & 4) + chbase_20 ^= 7; + break; +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + case ANTIC_OFFSET_WSYNC: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + if (ANTIC_xpos <= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] && ANTIC_xpos_limit >= ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C]) + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ +/* note that if ANTIC_WSYNC_C is a stolen cycle, then ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C+1]-1 corresponds +to the last cpu cycle < ANTIC_WSYNC_C. Then the cpu will see this cycle if WSYNC +is not delayed, since it really occurred one cycle after the STA WSYNC. But if +WSYNC is "delayed" then ANTIC_xpos is the next cpu cycle after ANTIC_WSYNC_C (which was stolen +), so it is one greater than the above value. EG if ANTIC_WSYNC_C=10 and is stolen +(and let us say cycle 9,11 are also stolen, and 8,12 are not), then in the first +case we have ANTIC_cpu2antic_ptr[ANTIC_WSYNC_C+1]-1 = 8 and in the 2nd =12 */ + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1] - 1; + } + else { + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C + 1]; + } + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + if (ANTIC_cpu2antic_ptr[ANTIC_xpos + 1] == ANTIC_cpu2antic_ptr[ANTIC_xpos] + 1) { + /* antic does not steal the current cycle */ + ANTIC_delayed_wsync = 0; + } + else { + ANTIC_delayed_wsync = 1; + } + } + } + else { + ANTIC_delayed_wsync = 0; +#endif /* NEW_CYCLE_EXACT */ + if (ANTIC_xpos <= ANTIC_WSYNC_C && ANTIC_xpos_limit >= ANTIC_WSYNC_C) + ANTIC_xpos = ANTIC_WSYNC_C; + else { + ANTIC_wsync_halt = TRUE; + ANTIC_xpos = ANTIC_xpos_limit; + } +#ifdef NEW_CYCLE_EXACT + } +#endif /* NEW_CYCLE_EXACT */ + break; + case ANTIC_OFFSET_NMIEN: + ANTIC_NMIEN = byte; + break; + case ANTIC_OFFSET_NMIRES: + ANTIC_NMIST = 0x1f; + break; + default: + break; + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void ANTIC_StateSave(void) +{ + StateSav_SaveUBYTE(&ANTIC_DMACTL, 1); + StateSav_SaveUBYTE(&ANTIC_CHACTL, 1); + StateSav_SaveUBYTE(&ANTIC_HSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_VSCROL, 1); + StateSav_SaveUBYTE(&ANTIC_PMBASE, 1); + StateSav_SaveUBYTE(&ANTIC_CHBASE, 1); + StateSav_SaveUBYTE(&ANTIC_NMIEN, 1); + StateSav_SaveUBYTE(&ANTIC_NMIST, 1); + StateSav_SaveUBYTE(&IR, 1); + StateSav_SaveUBYTE(&anticmode, 1); + StateSav_SaveUBYTE(&dctr, 1); + StateSav_SaveUBYTE(&lastline, 1); + StateSav_SaveUBYTE(&need_dl, 1); + StateSav_SaveUBYTE(&vscrol_off, 1); + + StateSav_SaveUWORD(&ANTIC_dlist, 1); + StateSav_SaveUWORD(&screenaddr, 1); + + StateSav_SaveINT(&ANTIC_xpos, 1); + StateSav_SaveINT(&ANTIC_xpos_limit, 1); + StateSav_SaveINT(&ANTIC_ypos, 1); +} + +void ANTIC_StateRead(void) +{ + StateSav_ReadUBYTE(&ANTIC_DMACTL, 1); + StateSav_ReadUBYTE(&ANTIC_CHACTL, 1); + StateSav_ReadUBYTE(&ANTIC_HSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_VSCROL, 1); + StateSav_ReadUBYTE(&ANTIC_PMBASE, 1); + StateSav_ReadUBYTE(&ANTIC_CHBASE, 1); + StateSav_ReadUBYTE(&ANTIC_NMIEN, 1); + StateSav_ReadUBYTE(&ANTIC_NMIST, 1); + StateSav_ReadUBYTE(&IR, 1); + StateSav_ReadUBYTE(&anticmode, 1); + StateSav_ReadUBYTE(&dctr, 1); + StateSav_ReadUBYTE(&lastline, 1); + StateSav_ReadUBYTE(&need_dl, 1); + StateSav_ReadUBYTE(&vscrol_off, 1); + + StateSav_ReadUWORD(&ANTIC_dlist, 1); + StateSav_ReadUWORD(&screenaddr, 1); + + StateSav_ReadINT(&ANTIC_xpos, 1); + StateSav_ReadINT(&ANTIC_xpos_limit, 1); + StateSav_ReadINT(&ANTIC_ypos, 1); + + ANTIC_PutByte(ANTIC_OFFSET_DMACTL, ANTIC_DMACTL); + ANTIC_PutByte(ANTIC_OFFSET_CHACTL, ANTIC_CHACTL); + ANTIC_PutByte(ANTIC_OFFSET_PMBASE, ANTIC_PMBASE); + ANTIC_PutByte(ANTIC_OFFSET_CHBASE, ANTIC_CHBASE); +} + +#endif /* BASIC */ diff --git a/MCUME_teensy/teensy800/antic.h b/MCUME_teensy/teensy800/antic.h new file mode 100644 index 0000000..0a89e66 --- /dev/null +++ b/MCUME_teensy/teensy800/antic.h @@ -0,0 +1,136 @@ +#ifndef ANTIC_H_ +#define ANTIC_H_ + +#include "atari.h" +/* + * Offset to registers in custom relative to start of antic memory addresses. + */ + +#define ANTIC_OFFSET_DMACTL 0x00 +#define ANTIC_OFFSET_CHACTL 0x01 +#define ANTIC_OFFSET_DLISTL 0x02 +#define ANTIC_OFFSET_DLISTH 0x03 +#define ANTIC_OFFSET_HSCROL 0x04 +#define ANTIC_OFFSET_VSCROL 0x05 +#define ANTIC_OFFSET_PMBASE 0x07 +#define ANTIC_OFFSET_CHBASE 0x09 +#define ANTIC_OFFSET_WSYNC 0x0a +#define ANTIC_OFFSET_VCOUNT 0x0b +#define ANTIC_OFFSET_PENH 0x0c +#define ANTIC_OFFSET_PENV 0x0d +#define ANTIC_OFFSET_NMIEN 0x0e +#define ANTIC_OFFSET_NMIRES 0x0f +#define ANTIC_OFFSET_NMIST 0x0f + +extern UBYTE ANTIC_CHACTL; +extern UBYTE ANTIC_CHBASE; +extern UWORD ANTIC_dlist; +extern UBYTE ANTIC_DMACTL; +extern UBYTE ANTIC_HSCROL; +extern UBYTE ANTIC_NMIEN; +extern UBYTE ANTIC_NMIST; +extern UBYTE ANTIC_PMBASE; +extern UBYTE ANTIC_VSCROL; + +extern int ANTIC_break_ypos; +extern int ANTIC_ypos; +extern int ANTIC_wsync_halt; + +/* Current clock cycle in a scanline. + Normally 0 <= ANTIC_xpos && ANTIC_xpos < ANTIC_LINE_C, but in some cases ANTIC_xpos >= ANTIC_LINE_C, + which means that we are already in line (ypos + 1). */ +extern int ANTIC_xpos; + +/* ANTIC_xpos limit for the currently running 6502 emulation. */ +extern int ANTIC_xpos_limit; + +/* Main clock value at the beginning of the current scanline. */ +extern unsigned int ANTIC_screenline_cpu_clock; + +/* Current main clock value. */ +#define ANTIC_CPU_CLOCK (ANTIC_screenline_cpu_clock + ANTIC_XPOS) + +#define ANTIC_NMIST_C 6 +#define ANTIC_NMI_C 12 + +/* Number of cycles per scanline. */ +#define ANTIC_LINE_C 114 + +/* STA WSYNC resumes here. */ +#define ANTIC_WSYNC_C 106 + +/* Number of memory refresh cycles per scanline. + In the first scanline of a font mode there are actually less than ANTIC_DMAR + memory refresh cycles. */ +#define ANTIC_DMAR 9 + +extern int ANTIC_artif_mode; +extern int ANTIC_artif_new; + +extern UBYTE ANTIC_PENH_input; +extern UBYTE ANTIC_PENV_input; + +int ANTIC_Initialise(void); +void ANTIC_Reset(void); +void ANTIC_Frame(int draw_display); +UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects); +void ANTIC_PutByte(UWORD addr, UBYTE byte); + +UBYTE ANTIC_GetDLByte(UWORD *paddr); +UWORD ANTIC_GetDLWord(UWORD *paddr); + +/* always call ANTIC_UpdateArtifacting after changing ANTIC_artif_mode */ +void ANTIC_UpdateArtifacting(void); + +/* Video memory access */ +void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size); +void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val); + +/* GTIA calls it on a write to PRIOR */ +void ANTIC_SetPrior(UBYTE prior); + +/* Saved states */ +void ANTIC_StateSave(void); +void ANTIC_StateRead(void); + +/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff. + If it's the same what the CPU sees (and what's in memory[0x4000..0x7fff], + then NULL. */ +extern const UBYTE *ANTIC_xe_ptr; + +/* PM graphics for GTIA */ +extern int ANTIC_player_dma_enabled; +extern int ANTIC_missile_dma_enabled; +extern int ANTIC_player_gra_enabled; +extern int ANTIC_missile_gra_enabled; +extern int ANTIC_player_flickering; +extern int ANTIC_missile_flickering; + +/* ANTIC colour lookup tables, used by GTIA */ +extern UWORD ANTIC_cl[128]; +extern ULONG ANTIC_lookup_gtia9[16]; +extern ULONG ANTIC_lookup_gtia11[16]; +extern UWORD ANTIC_hires_lookup_l[128]; + +#ifdef NEW_CYCLE_EXACT +#define ANTIC_NOT_DRAWING -999 +#define ANTIC_DRAWING_SCREEN (ANTIC_cur_screen_pos!=ANTIC_NOT_DRAWING) +extern int ANTIC_delayed_wsync; +extern int ANTIC_cur_screen_pos; +extern const int *ANTIC_cpu2antic_ptr; +extern const int *ANTIC_antic2cpu_ptr; +void ANTIC_UpdateScanline(void); +void ANTIC_UpdateScanlinePrior(UBYTE byte); + +#define ANTIC_XPOS ( ANTIC_DRAWING_SCREEN ? ANTIC_cpu2antic_ptr[ANTIC_xpos] : ANTIC_xpos ) +#else +#define ANTIC_XPOS ANTIC_xpos +#endif /* NEW_CYCLE_EXACT */ + +#ifndef NO_SIMPLE_PAL_BLENDING +/* Set to 1 to enable simplified emulation of PAL blending, that uses only + the standard 8-bit palette. */ +extern int ANTIC_pal_blending; +#endif /* NO_SIMPLE_PAL_BLENDING */ + +#endif /* ANTIC_H_ */ diff --git a/MCUME_teensy/teensy800/atari.h b/MCUME_teensy/teensy800/atari.h new file mode 100644 index 0000000..14891ca --- /dev/null +++ b/MCUME_teensy/teensy800/atari.h @@ -0,0 +1,102 @@ +#ifndef __ATARI__ +#define __ATARI__ + +// define globals +#define MEMORY_SIZE 0xC000 //0x10000 + +#define ATARI_WIDTH 384 +#define ATARI_HEIGHT 240 +#define TV_PAL 312 +#define TV_NTSC 262 + +//#define DIRTYRECT 1 +//#define WORDS_UNALIGNED_OK 1 +//#define ALTERNATE_LOOP_COUNTERS 1 +//#define NEW_CYCLE_EXACT 1 +//#define USE_CURSES 1 +//#define WORDS_BIGENDIAN 1 +//#define SYNCHRONIZED_SOUND 1 +#define CLIP_SOUND 1 +#define STEREO_SOUND 1 +#define POKEYSND_SIGNED_SAMPLES 1 +#define PAGED_MEM 1 +#define SOUND 1 +#define NO_SIMPLE_PAL_BLENDING 1 + +#define max_ypos tv_mode + +extern int tv_mode; +extern unsigned char INPUT_key_consol; + +enum ESCAPE { + ESC_SIOV, +/* + * These are special device escape codes required by the Basic version + */ + ESC_E_OPEN, + ESC_E_CLOSE, + ESC_E_READ, + ESC_E_WRITE, + ESC_E_STATUS, + ESC_E_SPECIAL, + + ESC_K_OPEN, + ESC_K_CLOSE, + ESC_K_READ, + ESC_K_WRITE, + ESC_K_STATUS, + ESC_K_SPECIAL, +/* + * These are Escape codes for the normal device handlers. + * Some are never used and some are only sometimes used. + */ + + ESC_PHOPEN = 0xb0, + ESC_PHCLOS = 0xb1, + ESC_PHREAD = 0xb2, + ESC_PHWRIT = 0xb3, + ESC_PHSTAT = 0xb4, + ESC_PHSPEC = 0xb5, + ESC_PHINIT = 0xb6, + + ESC_HHOPEN = 0xc0, + ESC_HHCLOS = 0xc1, + ESC_HHREAD = 0xc2, + ESC_HHWRIT = 0xc3, + ESC_HHSTAT = 0xc4, + ESC_HHSPEC = 0xc5, + ESC_HHINIT = 0xc6, + ESC_BREAK = 0xff +}; + +#ifndef _TYPEDEF_H +#define _TYPEDEF_H + +//data types +#define UBYTE unsigned char +#define UWORD unsigned short +#define ULONG unsigned int + +#define SBYTE signed char +#define SWORD signed short +#define SLONG signed int + +#define int8 char +#define int16 short +#define int32 int + +#define uint8 unsigned int8 +#define uint16 unsigned int16 +#define uint32 unsigned int32 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#endif + + + +#endif diff --git a/MCUME_teensy/teensy800/atari800.c b/MCUME_teensy/teensy800/atari800.c new file mode 100644 index 0000000..e99987f --- /dev/null +++ b/MCUME_teensy/teensy800/atari800.c @@ -0,0 +1,379 @@ +#include "atari800.h" +#include +#include "memory.h" +#include "cpu.h" +#include "atari.h" +#include "akey.h" +#include "pokey.h" +#include +//#include "romatariosa.h" +#include "romatariosb.h" +//#include "romatarixl.h" +#include "antic.h" +#include "gtia.h" +#include "pia.h" +#include "colours.h" +#include "emuapi.h" +#if HAS_SND +#include "pokeysnd.h" +#endif + + +// Controllers +typedef struct +{ + // All values are 1 or 0, or perhaps not... + int left; + int right; + int up; + int down; + int trig; + +} CONTROLLER; + + + + + +// global variables +unsigned char mem[MEMORY_SIZE]; +unsigned char * memory=mem; +int tv_mode = TV_PAL; +UBYTE INPUT_key_consol; + + +// local variables +static CONTROLLER cont1, cont2; +static int INPUT_key_code = AKEY_NONE; +static int INPUT_key_shift = 0; + +/* MEMORY MAP INDEX (0 is invalid) +* 0-3FFF RAM (read/write) +* 4000-7FFF RAM (read/write) +* 8000-9FFF BASIC right CART 8K +* A000-BFFF BASIC left CART 8K +* D000-D0FF GTIA regs +* D200-D2FF POKEY regs +* D300-D3FF PIA regs +* D400-D4FF ANTIC regs +* D800-FFFF OS ROM (ro) +* E000 I/O expansion +*/ + + +// memory CPU read (load) handler +uint8 Atari_GetByte(uint16 addr) +{ + if (addr < MEMORY_SIZE) { // MAPPER_RAM + return(memory[addr]); + } + else if ( (addr >= 0xD000) && (addr < 0xD100) ) { // MAPPER_GTIA + return GTIA_GetByte(addr,1); + } + else if ( (addr >= 0xD200) && (addr < 0xD300) ) { // MAPPER_POKEY + return POKEY_GetByte(addr,1); + } + else if ( (addr >= 0xD300) && (addr < 0xD400) ) { // MAPPER_PIA + return PIA_GetByte(addr); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + return ANTIC_GetByte(addr,1); + } + else if ((addr >= 0xD800) && (addr < 0x10000)) { // MAPPER_ROM (bios) + //return(memory[addr]); + return(romos[addr-0xD800]); + } + + //case MAPPER_IOEXP: // I/O exp read + // return IOEXPread(addr); + + return 0xff; +} + +// memory CPU write (store) handler +void Atari_PutByte(uint16 addr, uint8 byte) +{ + if (addr < 0x8000) { // MAPPER_RAM + memory[addr] = byte; + } + else if (addr < 0xC000) { // MAPPER_ROM + } + else if ( (addr >= 0xD000) && (addr < 0xD100) ) { // MAPPER_GTIA + GTIA_PutByte(addr, byte); + } + else if ( (addr >= 0xD200) && (addr < 0xD300) ) { // MAPPER_POKEY + POKEY_PutByte(addr, byte); + } + else if ( (addr >= 0xD300) && (addr < 0xD400) ) { // MAPPER_PIA + PIA_PutByte(addr, byte); + } + else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC + ANTIC_PutByte(addr, byte); + } + + //case MAPPER_IOEXP: // I/O exp write + // IOEXPwrite(addr, byte); +} + + +static void INPUT_Frame(void) +{ + int i; + static int last_key_code = AKEY_NONE; + static int last_key_break = 0; + + if (cont1.trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1; + + + i = (INPUT_key_code == AKEY_BREAK); + if (i && !last_key_break) { + if (POKEY_IRQEN & 0x80) { + POKEY_IRQST &= ~0x80; + CPU_GenerateIRQ(); + } + } + last_key_break = i; + POKEY_SKSTAT |= 0xc; + if (INPUT_key_shift) + POKEY_SKSTAT &= ~8; + + if (INPUT_key_code < 0) { + //if (CASSETTE_press_space) { + // INPUT_key_code = AKEY_SPACE; + // CASSETTE_press_space = 0; + //} + //else { + last_key_code = AKEY_NONE; + //} + } + if ((INPUT_key_code&~0x17) == AKEY_SHFTCTRL) { + INPUT_key_code = AKEY_NONE; + } + if (INPUT_key_code >= 0) { +//emu_printi(INPUT_key_code); + POKEY_SKSTAT &= ~4; + if ((INPUT_key_code ^ last_key_code) & ~AKEY_SHFTCTRL) { + /* ignore if only shift or control has changed its state */ + last_key_code = INPUT_key_code; + POKEY_KBCODE = (UBYTE) INPUT_key_code; + if (POKEY_IRQEN & 0x40) { + if (POKEY_IRQST & 0x40) { + POKEY_IRQST &= ~0x40; + CPU_GenerateIRQ(); + } + else { + /* keyboard over-run */ + POKEY_SKSTAT &= ~0x40; + /* assert(CPU_IRQ != 0); */ + } + } + } + } +} + +// check keyboard and set kbcode on VBI (not for A800) +void INPUT_Scanline(void) +{ +// if (cont1.trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1; +} + + +static void load_CART(char * cartname) +{ + int flen = emu_FileSize(cartname); + emu_FileOpen(cartname); + if (flen < 16384) { + emu_printf("8k"); + for(int i=0; itrig = 1; + else + which->trig = 0; + if (j & MASK_JOY2_DOWN) + which->down = 1; + else + which->down = 0; + if (j & MASK_JOY2_UP) + which->up = 1; + else + which->up = 0; + if (j & MASK_JOY2_RIGHT) + which->left = 1; + else + which->left = 0; + if (j & MASK_JOY2_LEFT) + which->right = 1; + else + which->right = 0; + + GTIA_Frame(); + ANTIC_Frame(1); + emu_DrawVsync(); + POKEY_Frame(); + + //int i; + //for (i=0xC000; i< 0x10000; i++) + // if (memory[i] !=0) emu_printf("bug"); +} + + + +void at8_Start(char * cartname) +{ + load_CART(cartname); + + emu_printf("antic"); + ANTIC_Initialise(); + emu_printf("gtia"); + GTIA_Initialise(); + emu_printf("pia"); + PIA_Initialise(); + emu_printf("pokey"); + POKEY_Initialise(); + PORTA = 0x00; + ANTIC_NMIEN = 0x00; + ANTIC_NMIST = 0x00; + memory[0x244] = 1; + GTIA_TRIG[0]=1; + GTIA_TRIG[1]=1; + GTIA_TRIG[2]=1; + GTIA_TRIG[3]=1; + emu_printf("6502 reset"); + CPU_Reset(); + + emu_printf("init done"); +} + + + + + + diff --git a/MCUME_teensy/teensy800/atari800.h b/MCUME_teensy/teensy800/atari800.h new file mode 100644 index 0000000..28a6c40 --- /dev/null +++ b/MCUME_teensy/teensy800/atari800.h @@ -0,0 +1,4 @@ +extern void at8_Init(void); +extern void at8_Step(void); +extern void at8_Start(char * filename); + diff --git a/MCUME_teensy/teensy800/bmpjoy.h b/MCUME_teensy/teensy800/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensy800/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensy800/bmptft.h b/MCUME_teensy/teensy800/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensy800/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy800/bmpvbar.h b/MCUME_teensy/teensy800/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensy800/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy800/bmpvga.h b/MCUME_teensy/teensy800/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensy800/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy800/colours.h b/MCUME_teensy/teensy800/colours.h new file mode 100644 index 0000000..a31db53 --- /dev/null +++ b/MCUME_teensy/teensy800/colours.h @@ -0,0 +1,68 @@ +const unsigned int colourtable[256] = +{ + 0x0, 0x1c1c1c, 0x393939, 0x595959, + 0x797979, 0x929292, 0xababab, 0xbcbcbc, + 0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec, + 0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff, + 0x391701, 0x5e2304, 0x833008, 0xa54716, + 0xc85f24, 0xe37820, 0xff911d, 0xffab1d, + 0xffc51d, 0xffce34, 0xffd84c, 0xffe651, + 0xfff456, 0xfff977, 0xffff98, 0xffff98, + 0x451904, 0x721e11, 0x9f241e, 0xb33a20, + 0xc85122, 0xe36920, 0xff811e, 0xff8c25, + 0xff982c, 0xffae38, 0xffc545, 0xffc559, + 0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1, + 0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119, + 0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161, + 0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e, + 0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce, + 0x50568, 0x3b136d, 0x712272, 0x8b2a8c, + 0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd, + 0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd, + 0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff, + 0x280479, 0x400984, 0x590f90, 0x70249d, + 0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed, + 0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff, + 0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff, + 0x35088a, 0x420aad, 0x500cd0, 0x6428d0, + 0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec, + 0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff, + 0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff, + 0x51e81, 0x626a5, 0x82fca, 0x263dd4, + 0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff, + 0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff, + 0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff, + 0xc048b, 0x2218a0, 0x382db5, 0x483ec7, + 0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff, + 0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff, + 0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff, + 0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac, + 0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec, + 0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff, + 0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff, + 0x2f4302, 0x395202, 0x446103, 0x417a12, + 0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55, + 0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d, + 0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6, + 0xa4108, 0xd540a, 0x10680d, 0x137d0f, + 0x169212, 0x19a514, 0x1cb917, 0x1ec919, + 0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d, + 0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a, + 0x4410b, 0x5530e, 0x66611, 0x77714, + 0x88817, 0x99b1a, 0xbaf1d, 0x48c41f, + 0x86d922, 0x8fe924, 0x99f927, 0xa8fc41, + 0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81, + 0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e, + 0x4f7420, 0x598324, 0x649228, 0x82a12e, + 0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945, + 0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53, + 0x263001, 0x243803, 0x234005, 0x51541b, + 0x806931, 0x978135, 0xaf993a, 0xc2a73e, + 0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836, + 0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d, + 0x401a02, 0x581f05, 0x702408, 0x8d3a13, + 0xab511f, 0xb56427, 0xbf7730, 0xd0853a, + 0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c, + 0xffc160, 0xffc671, 0xffcb83, 0xffcb83, +}; + diff --git a/MCUME_teensy/teensy800/cpu.c b/MCUME_teensy/teensy800/cpu.c new file mode 100644 index 0000000..cc73b28 --- /dev/null +++ b/MCUME_teensy/teensy800/cpu.c @@ -0,0 +1,2444 @@ +/* + * cpu.c - 6502 CPU emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2005 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* + Configuration symbols + ===================== + + Define CPU65C02 if you don't want 6502 JMP() bug emulation. + Define CYCLES_PER_OPCODE to update ANTIC_xpos in each opcode's emulation. + Define MONITOR_BREAK if you want code breakpoints and execution history. + Define MONITOR_BREAKPOINTS if you want user-defined breakpoints. + Define MONITOR_PROFILE if you want 6502 opcode profiling. + Define MONITOR_TRACE if you want the code to be disassembled while it is executed. + Define NO_GOTO if you compile with GCC, but want switch() rather than goto *. + Define NO_V_FLAG_VARIABLE to don't use local (static) variable V for the V flag. + Define PC_PTR to emulate 6502 Program Counter using UBYTE *. + Define PREFETCH_CODE to always fetch 2 bytes after the opcode. + Define WRAP_64K to correctly emulate instructions that wrap at 64K. + Define WRAP_ZPAGE to prevent incorrect access to the address 0x0100 in zeropage + indirect mode. + + + Limitations & Known bugs + ======================== + + There is no emulation of the bug in the BRK instruction executed simultaneously + with another interrupt. + + The 6502 emulation ignores memory attributes for instruction fetch. + This is because the instruction must come from either RAM or ROM. + A program that executes instructions from within hardware addresses will fail + since there is never any usable code there. + + The 6502 emulation also ignores memory attributes for accesses to page 0 and page 1. + */ + + +#ifdef SKIP +#include "config.h" +#include +#include /* exit() */ + +#include "cpu.h" +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "antic.h" +#include "atari.h" +#include "esc.h" +#include "memory.h" +#include "monitor.h" +#ifndef BASIC +#include "statesav.h" +#ifndef __PLUS +#include "ui.h" +#endif +#endif /* BASIC */ +#endif /* ASAP */ +#else + +#include +#include /* exit() */ +#include "cpu.h" +#include "antic.h" +#include "memory.h" + +#define ESC_Run(x) + +#endif + + +/* For Atari Basic loader */ +void (*CPU_rts_handler)(void) = NULL; + +/* 6502 instruction profiling */ +#ifdef MONITOR_PROFILE +int CPU_instruction_count[256]; +#endif + +/* Execution history */ +#ifdef MONITOR_BREAK +UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +unsigned int CPU_remember_PC_curpos = 0; +int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; +UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +unsigned int CPU_remember_jmp_curpos = 0; +#define INC_RET_NESTING MONITOR_ret_nesting++ +#else /* MONITOR_BREAK */ +#define INC_RET_NESTING +#endif /* MONITOR_BREAK */ + +UBYTE CPU_cim_encountered = FALSE; +UBYTE CPU_IRQ; + +#ifdef FALCON_CPUASM + +#if defined(PAGED_MEM) || defined(PAGED_ATTRIB) +#error cpu_m68k.asm cannot work with paged memory/attributes +#endif + +#if defined(MONITOR_BREAKPOINTS) +#error cpu_m68k.asm does not support user-defined breakpoints +#endif + +#if defined(MONITOR_TRACE) +#error cpu_m68k.asm does not support disassembling the code while it is executed +#endif + +#else /* FALCON_CPUASM */ + +/* Windows headers define it */ +#undef ABSOLUTE + +#ifndef __GNUC__ +#define NO_GOTO +#endif + +/* #define CYCLES_PER_OPCODE */ + +/* #define MONITOR_PROFILE */ + +/* #define NO_V_FLAG_VARIABLE */ + +/* If PC_PTR is defined, local PC is "const UBYTE *", otherwise it's UWORD. */ +/* #define PC_PTR */ + +/* If PREFETCH_CODE is defined, 2 bytes after the opcode are always fetched. */ +/* #define PREFETCH_CODE */ + + +/* 6502 stack handling */ +#define PL MEMORY_dGetByte(0x0100 + ++S) +#define PH(x) MEMORY_dPutByte(0x0100 + S--, x) +#define PHW(x) PH((x) >> 8); PH((x) & 0xff) + +/* 6502 code fetching */ +#ifdef PC_PTR +#define GET_PC() (PC - MEMORY_mem) +#define SET_PC(newpc) (PC = MEMORY_mem + (newpc)) +#define PHPC { UWORD tmp = PC - MEMORY_mem; PHW(tmp); } +#define GET_CODE_BYTE() (*PC++) +#define PEEK_CODE_BYTE() (*PC) +#if !defined(WORDS_BIGENDIAN) && defined(WORDS_UNALIGNED_OK) +#define PEEK_CODE_WORD() (*(const UWORD *) PC) +#else +#define PEEK_CODE_WORD() (*PC + (PC[1] << 8)) +#endif +#else /* PC_PTR */ +#define GET_PC() PC +#define SET_PC(newpc) (PC = (newpc)) +#define PHPC PHW(PC) +#define GET_CODE_BYTE() MEMORY_dGetByte(PC++) +#define PEEK_CODE_BYTE() MEMORY_dGetByte(PC) +#define PEEK_CODE_WORD() MEMORY_dGetWord(PC) +#endif /* PC_PTR */ + +/* Cycle-exact Read-Modify-Write instructions. + RMW instructions: ASL, LSR, ROL, ROR, INC, DEC + (+ some undocumented) write to the specified address + *twice*: first the unmodified value, then the modified value. + This can be observed only with some hardware registers. */ +/* XXX: we do this only for GTIA, because NEW_CYCLE_EXACT does not correctly + emulate INC $D400 (and INC $D40A wasn't tested) */ +#ifdef NEW_CYCLE_EXACT +#ifndef PAGED_ATTRIB +#define RMW_GetByte(x, addr) \ + if (MEMORY_attrib[addr] == MEMORY_HARDWARE) { \ + x = MEMORY_HwGetByte(addr, FALSE); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_HwPutByte(addr, x); \ + ANTIC_xpos++; \ + } \ + } else \ + x = MEMORY_dGetByte(addr); +#else /* PAGED_ATTRIB */ +#define RMW_GetByte(x, addr) \ + x = MEMORY_GetByte(addr); \ + if ((addr & 0xef00) == 0xc000) { \ + ANTIC_xpos--; \ + MEMORY_PutByte(addr, x); \ + ANTIC_xpos++; \ + } +#endif /* PAGED_ATTRIB */ +#else /* NEW_CYCLE_EXACT */ +/* Don't emulate the first write */ +#define RMW_GetByte(x, addr) x = MEMORY_GetByte(addr); +#endif /* NEW_CYCLE_EXACT */ + +/* 6502 registers. */ +UWORD CPU_regPC; +UBYTE CPU_regA; +UBYTE CPU_regX; +UBYTE CPU_regY; +UBYTE CPU_regP; /* Processor Status Byte (Partial) */ +UBYTE CPU_regS; + +/* Transfer 6502 registers between global variables and local variables inside CPU_GO() */ +#define UPDATE_GLOBAL_REGS CPU_regPC = GET_PC(); CPU_regS = S; CPU_regA = A; CPU_regX = X; CPU_regY = Y +#define UPDATE_LOCAL_REGS SET_PC(CPU_regPC); S = CPU_regS; A = CPU_regA; X = CPU_regX; Y = CPU_regY + +/* 6502 flags local to this module */ +static UBYTE N; /* bit7 set => N flag set */ +#ifndef NO_V_FLAG_VARIABLE +static UBYTE V; /* non-zero => V flag set */ +#endif +static UBYTE Z; /* zero => Z flag set */ +static UBYTE C; /* must be 0 or 1 */ +/* B, D, I are always in CPU_regP */ + +void CPU_GetStatus(void) +{ +#ifndef NO_V_FLAG_VARIABLE + CPU_regP = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & 0x3c) + ((Z == 0) ? 0x02 : 0) + C; +#else + CPU_regP = (N & 0x80) + (CPU_regP & 0x7c) + ((Z == 0) ? 0x02 : 0) + C; +#endif +} + +void CPU_PutStatus(void) +{ + N = CPU_regP; +#ifndef NO_V_FLAG_VARIABLE + V = (CPU_regP & 0x40); +#endif + Z = (CPU_regP & 0x02) ^ 0x02; + C = (CPU_regP & 0x01); +} + +/* Addressing modes */ +#ifdef WRAP_ZPAGE +#define zGetWord(x) (MEMORY_dGetByte(x) + (MEMORY_dGetByte((UBYTE) ((x) + 1)) << 8)) +#else +#define zGetWord(x) MEMORY_dGetWord(x) +#endif +#ifdef PREFETCH_CODE +#if defined(WORDS_BIGENDIAN) || !defined(WORDS_UNALIGNED_OK) +#warning PREFETCH_CODE is efficient only on little-endian machines with WORDS_UNALIGNED_OK +#endif +#define OP_BYTE ((UBYTE) addr) +#define OP_WORD addr +#define IMMEDIATE (PC++, (UBYTE) addr) +#define ABSOLUTE PC += 2 +#define ZPAGE PC++; addr &= 0xff +#define ABSOLUTE_X addr += X; PC += 2 +#define ABSOLUTE_Y addr += Y; PC += 2 +#define INDIRECT_X PC++; addr = (UBYTE) (addr + X); addr = zGetWord(addr) +#define INDIRECT_Y PC++; addr &= 0xff; addr = zGetWord(addr) + Y +#define ZPAGE_X PC++; addr = (UBYTE) (addr + X) +#define ZPAGE_Y PC++; addr = (UBYTE) (addr + Y) +#else /* PREFETCH_CODE */ +#define OP_BYTE PEEK_CODE_BYTE() +#define OP_WORD PEEK_CODE_WORD() +#define IMMEDIATE GET_CODE_BYTE() +#define ABSOLUTE addr = PEEK_CODE_WORD(); PC += 2 +#define ZPAGE addr = GET_CODE_BYTE() +#define ABSOLUTE_X addr = PEEK_CODE_WORD() + X; PC += 2 +#define ABSOLUTE_Y addr = PEEK_CODE_WORD() + Y; PC += 2 +#define INDIRECT_X addr = (UBYTE) (GET_CODE_BYTE() + X); addr = zGetWord(addr) +#define INDIRECT_Y addr = GET_CODE_BYTE(); addr = zGetWord(addr) + Y +#define ZPAGE_X addr = (UBYTE) (GET_CODE_BYTE() + X) +#define ZPAGE_Y addr = (UBYTE) (GET_CODE_BYTE() + Y) +#endif /* PREFETCH_CODE */ + +/* Instructions */ +#define AND(t_data) Z = N = A &= t_data +#define CMP(t_data) data = t_data; Z = N = A - data; C = (A >= data) +#define CPX(t_data) data = t_data; Z = N = X - data; C = (X >= data) +#define CPY(t_data) data = t_data; Z = N = Y - data; C = (Y >= data) +#define EOR(t_data) Z = N = A ^= t_data +#define LDA(t_data) Z = N = A = t_data +#define LDX(t_data) Z = N = X = t_data +#define LDY(t_data) Z = N = Y = t_data +#define ORA(t_data) Z = N = A |= t_data +#ifndef NO_V_FLAG_VARIABLE +#define PHP(x) data = (N & 0x80) + (V ? 0x40 : 0) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x2c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x3c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; V = (data & 0x40); Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x0c) + 0x30 +#else /* NO_V_FLAG_VARIABLE */ +#define PHP(x) data = (N & 0x80) + (CPU_regP & (x)) + ((Z == 0) ? 0x02 : 0) + C; PH(data) +#define PHPB0 PHP(0x6c) /* push flags with B flag clear (NMI, IRQ) */ +#define PHPB1 PHP(0x7c) /* push flags with B flag set (PHP, BRK) */ +#define PLP data = PL; N = data; Z = (data & 0x02) ^ 0x02; C = (data & 0x01); CPU_regP = (data & 0x4c) + 0x30 +#endif /* NO_V_FLAG_VARIABLE */ +/* 1 or 2 extra cycles for conditional jumps */ +#if 0 +/* old, less efficient version */ +#define BRANCH(cond) \ + if (cond) { \ + SWORD sdata = (SBYTE) GET_CODE_BYTE(); \ + if ((sdata + (UBYTE) GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + PC += sdata; \ + DONE \ + } \ + PC++; \ + DONE +#else +#define BRANCH(cond) \ + if (cond) { \ + addr = (UWORD) (SBYTE) IMMEDIATE; \ + addr += GET_PC(); \ + if ((addr ^ GET_PC()) & 0xff00) \ + ANTIC_xpos++; \ + ANTIC_xpos++; \ + SET_PC(addr); \ + DONE \ + } \ + PC++; \ + DONE +#endif + +/* 1 extra cycle for X (or Y) index overflow */ +#define NCYCLES_X if ((UBYTE) addr < X) ANTIC_xpos++ +#define NCYCLES_Y if ((UBYTE) addr < Y) ANTIC_xpos++ + +/* Triggers a Non-Maskable Interrupt */ +void CPU_NMI(void) +{ + UBYTE S = CPU_regS; + UBYTE data; + + PHW(CPU_regPC); + PHPB0; + CPU_SetI; + CPU_regPC = MEMORY_dGetWordAligned(0xfffa); + CPU_regS = S; + ANTIC_xpos += 7; /* handling an interrupt by 6502 takes 7 cycles */ + INC_RET_NESTING; +} + +/* Check pending IRQ, helps in (not only) Lucasfilm games */ +#define CPUCHECKIRQ \ + if (CPU_IRQ && !(CPU_regP & CPU_I_FLAG) && ANTIC_xpos < ANTIC_xpos_limit) { \ + PHPC; \ + PHPB0; \ + CPU_SetI; \ + SET_PC(MEMORY_dGetWordAligned(0xfffe)); \ + ANTIC_xpos += 7; \ + INC_RET_NESTING; \ + } + +/* Enter monitor */ +#ifdef __PLUS +#define ENTER_MONITOR Atari800_Exit(TRUE) +#else +#ifdef SKIP +#define ENTER_MONITOR if (!Atari800_Exit(TRUE)) exit(0) +#else +#define ENTER_MONITOR exit(0) +#endif +#endif +#define DO_BREAK \ + UPDATE_GLOBAL_REGS; \ + CPU_GetStatus(); \ + ENTER_MONITOR; \ + CPU_PutStatus(); \ + UPDATE_LOCAL_REGS; + + +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ +static const int cycles[256] = +{ + 7, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, /* 0x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 1x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, /* 2x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 3x */ + + 6, 6, 2, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, /* 4x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 5x */ + 6, 6, 2, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, /* 6x */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* 7x */ + + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* 8x */ + 2, 6, 2, 6, 4, 4, 4, 4, 2, 5, 2, 5, 5, 5, 5, 5, /* 9x */ + 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, /* Ax */ + 2, 5, 2, 5, 4, 4, 4, 4, 2, 4, 2, 4, 4, 4, 4, 4, /* Bx */ + + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Cx */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7, /* Dx */ + 2, 6, 2, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6, /* Ex */ + 2, 5, 2, 8, 4, 4, 6, 6, 2, 4, 2, 7, 4, 4, 7, 7 /* Fx */ +}; + +/* 6502 emulation routine */ +#ifndef NO_GOTO +__extension__ /* suppress -ansi -pedantic warnings */ +#endif +void CPU_GO(int limit) +{ +#ifdef NO_GOTO +#define OPCODE_ALIAS(code) case 0x##code: +#define DONE break; +#else +#define OPCODE_ALIAS(code) opcode_##code: +#define DONE goto next; + static const void *opcode[256] = + { + &&opcode_00, &&opcode_01, &&opcode_02, &&opcode_03, + &&opcode_04, &&opcode_05, &&opcode_06, &&opcode_07, + &&opcode_08, &&opcode_09, &&opcode_0a, &&opcode_0b, + &&opcode_0c, &&opcode_0d, &&opcode_0e, &&opcode_0f, + + &&opcode_10, &&opcode_11, &&opcode_12, &&opcode_13, + &&opcode_14, &&opcode_15, &&opcode_16, &&opcode_17, + &&opcode_18, &&opcode_19, &&opcode_1a, &&opcode_1b, + &&opcode_1c, &&opcode_1d, &&opcode_1e, &&opcode_1f, + + &&opcode_20, &&opcode_21, &&opcode_22, &&opcode_23, + &&opcode_24, &&opcode_25, &&opcode_26, &&opcode_27, + &&opcode_28, &&opcode_29, &&opcode_2a, &&opcode_2b, + &&opcode_2c, &&opcode_2d, &&opcode_2e, &&opcode_2f, + + &&opcode_30, &&opcode_31, &&opcode_32, &&opcode_33, + &&opcode_34, &&opcode_35, &&opcode_36, &&opcode_37, + &&opcode_38, &&opcode_39, &&opcode_3a, &&opcode_3b, + &&opcode_3c, &&opcode_3d, &&opcode_3e, &&opcode_3f, + + &&opcode_40, &&opcode_41, &&opcode_42, &&opcode_43, + &&opcode_44, &&opcode_45, &&opcode_46, &&opcode_47, + &&opcode_48, &&opcode_49, &&opcode_4a, &&opcode_4b, + &&opcode_4c, &&opcode_4d, &&opcode_4e, &&opcode_4f, + + &&opcode_50, &&opcode_51, &&opcode_52, &&opcode_53, + &&opcode_54, &&opcode_55, &&opcode_56, &&opcode_57, + &&opcode_58, &&opcode_59, &&opcode_5a, &&opcode_5b, + &&opcode_5c, &&opcode_5d, &&opcode_5e, &&opcode_5f, + + &&opcode_60, &&opcode_61, &&opcode_62, &&opcode_63, + &&opcode_64, &&opcode_65, &&opcode_66, &&opcode_67, + &&opcode_68, &&opcode_69, &&opcode_6a, &&opcode_6b, + &&opcode_6c, &&opcode_6d, &&opcode_6e, &&opcode_6f, + + &&opcode_70, &&opcode_71, &&opcode_72, &&opcode_73, + &&opcode_74, &&opcode_75, &&opcode_76, &&opcode_77, + &&opcode_78, &&opcode_79, &&opcode_7a, &&opcode_7b, + &&opcode_7c, &&opcode_7d, &&opcode_7e, &&opcode_7f, + + &&opcode_80, &&opcode_81, &&opcode_82, &&opcode_83, + &&opcode_84, &&opcode_85, &&opcode_86, &&opcode_87, + &&opcode_88, &&opcode_89, &&opcode_8a, &&opcode_8b, + &&opcode_8c, &&opcode_8d, &&opcode_8e, &&opcode_8f, + + &&opcode_90, &&opcode_91, &&opcode_92, &&opcode_93, + &&opcode_94, &&opcode_95, &&opcode_96, &&opcode_97, + &&opcode_98, &&opcode_99, &&opcode_9a, &&opcode_9b, + &&opcode_9c, &&opcode_9d, &&opcode_9e, &&opcode_9f, + + &&opcode_a0, &&opcode_a1, &&opcode_a2, &&opcode_a3, + &&opcode_a4, &&opcode_a5, &&opcode_a6, &&opcode_a7, + &&opcode_a8, &&opcode_a9, &&opcode_aa, &&opcode_ab, + &&opcode_ac, &&opcode_ad, &&opcode_ae, &&opcode_af, + + &&opcode_b0, &&opcode_b1, &&opcode_b2, &&opcode_b3, + &&opcode_b4, &&opcode_b5, &&opcode_b6, &&opcode_b7, + &&opcode_b8, &&opcode_b9, &&opcode_ba, &&opcode_bb, + &&opcode_bc, &&opcode_bd, &&opcode_be, &&opcode_bf, + + &&opcode_c0, &&opcode_c1, &&opcode_c2, &&opcode_c3, + &&opcode_c4, &&opcode_c5, &&opcode_c6, &&opcode_c7, + &&opcode_c8, &&opcode_c9, &&opcode_ca, &&opcode_cb, + &&opcode_cc, &&opcode_cd, &&opcode_ce, &&opcode_cf, + + &&opcode_d0, &&opcode_d1, &&opcode_d2, &&opcode_d3, + &&opcode_d4, &&opcode_d5, &&opcode_d6, &&opcode_d7, + &&opcode_d8, &&opcode_d9, &&opcode_da, &&opcode_db, + &&opcode_dc, &&opcode_dd, &&opcode_de, &&opcode_df, + + &&opcode_e0, &&opcode_e1, &&opcode_e2, &&opcode_e3, + &&opcode_e4, &&opcode_e5, &&opcode_e6, &&opcode_e7, + &&opcode_e8, &&opcode_e9, &&opcode_ea, &&opcode_eb, + &&opcode_ec, &&opcode_ed, &&opcode_ee, &&opcode_ef, + + &&opcode_f0, &&opcode_f1, &&opcode_f2, &&opcode_f3, + &&opcode_f4, &&opcode_f5, &&opcode_f6, &&opcode_f7, + &&opcode_f8, &&opcode_f9, &&opcode_fa, &&opcode_fb, + &&opcode_fc, &&opcode_fd, &&opcode_fe, &&opcode_ff, + }; +#endif /* NO_GOTO */ + +#ifdef CYCLES_PER_OPCODE +#define OPCODE(code) OPCODE_ALIAS(code) ANTIC_xpos += cycles[0x##code]; +#else +#define OPCODE(code) OPCODE_ALIAS(code) +#endif + +#ifdef PC_PTR + const UBYTE *PC; +#else + UWORD PC; +#endif + UBYTE A; + UBYTE X; + UBYTE Y; + UBYTE S; + + UWORD addr; + UBYTE data; +#define insn data + +/* + This used to be in the main loop but has been removed to improve + execution speed. It does not seem to have any adverse effect on + the emulation for two reasons: + + 1. NMI's will can only be raised in antic.c - there is + no way an NMI can be generated whilst in this routine. + + 2. The timing of the IRQs are not that critical. */ + + if (ANTIC_wsync_halt) { + +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { +/* if ANTIC_WSYNC_C is a stolen cycle, ANTIC_antic2cpu_ptr will convert that to the nearest + cpu cycle before that cycle. The CPU will see this cycle, if WSYNC is not + delayed. (Actually this cycle is the first cycle of the instruction after + STA WSYNC, which was really executed one cycle after STA WSYNC because + of an internal antic delay ). ANTIC_delayed_wsync is added to this cycle to form + the limit in the case that WSYNC is not early (does not allow this extra cycle) */ + + if (limit < ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync) + return; + ANTIC_xpos = ANTIC_antic2cpu_ptr[ANTIC_WSYNC_C] + ANTIC_delayed_wsync; + } + else { + if (limit < (ANTIC_WSYNC_C + ANTIC_delayed_wsync)) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + } + ANTIC_delayed_wsync = 0; + +#else /* NEW_CYCLE_EXACT */ + + if (limit < ANTIC_WSYNC_C) + return; + ANTIC_xpos = ANTIC_WSYNC_C; + +#endif /* NEW_CYCLE_EXACT */ + + ANTIC_wsync_halt = 0; + } + ANTIC_xpos_limit = limit; /* needed for WSYNC store inside ANTIC */ + + UPDATE_LOCAL_REGS; + + CPUCHECKIRQ; + + while (ANTIC_xpos < ANTIC_xpos_limit) { +#ifdef MONITOR_PROFILE + int old_xpos = ANTIC_xpos; + UWORD old_PC = GET_PC(); +#endif + + +#ifdef MONITOR_BREAKPOINTS + breakpoint_return: +#endif + +#ifdef PC_PTR + /* must handle 64k wrapping */ + if (PC >= MEMORY_mem + 0xfffe) { + if (PC >= MEMORY_mem + 0x10000) + PC -= 0x10000; + else { + /* the opcode is before 0x10000, but the operand is past */ +#ifdef WORDS_UNALIGNED_OK + *(UWORD *) (MEMORY_mem + 0x10000) = *(UWORD *) MEMORY_mem; +#else + MEMORY_mem[0x10000] = MEMORY_mem[0]; + MEMORY_mem[0x10001] = MEMORY_mem[1]; +#endif /* WORDS_UNALIGNED_OK */ + } + } +#endif /* PC_PTR */ + +#ifdef MONITOR_TRACE + if (MONITOR_trace_file != NULL) { + MONITOR_ShowState(MONITOR_trace_file, GET_PC(), A, X, Y, S, + (N & 0x80) ? 'N' : '-', +#ifndef NO_V_FLAG_VARIABLE + V ? 'V' : '-', +#else + (CPU_regP & CPU_V_FLAG) ? 'V' : '-', +#endif + (Z == 0) ? 'Z' : '-', + (C != 0) ? 'C' : '-'); + } +#endif + +#ifdef MONITOR_BREAK + CPU_remember_PC[CPU_remember_PC_curpos] = GET_PC(); + CPU_remember_op[CPU_remember_PC_curpos][0] = MEMORY_dGetByte(GET_PC()); + CPU_remember_op[CPU_remember_PC_curpos][1] = MEMORY_dGetByte(GET_PC()+1); + CPU_remember_op[CPU_remember_PC_curpos][2] = MEMORY_dGetByte(GET_PC()+2); +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_cpu2antic_ptr[ANTIC_xpos] + (ANTIC_ypos << 8); + else +#endif + CPU_remember_xpos[CPU_remember_PC_curpos] = ANTIC_xpos + (ANTIC_ypos << 8); + CPU_remember_PC_curpos = (CPU_remember_PC_curpos + 1) % CPU_REMEMBER_PC_STEPS; + + if (MONITOR_break_addr == GET_PC() || ANTIC_break_ypos == ANTIC_ypos) { + DO_BREAK; + } +#endif /* MONITOR_BREAK */ + +#if defined(WRAP_64K) && !defined(PC_PTR) + MEMORY_mem[0x10000] = MEMORY_mem[0]; +#endif + + insn = GET_CODE_BYTE(); + +#ifdef MONITOR_BREAKPOINTS +#ifdef MONITOR_BREAK + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled && !MONITOR_break_step) +#else + if (MONITOR_breakpoint_table_size > 0 && MONITOR_breakpoints_enabled) +#endif + { + UBYTE optype = MONITOR_optype6502[insn]; + int i; + switch (optype >> 4) { + case 1: + addr = PEEK_CODE_WORD(); + break; + case 2: + addr = PEEK_CODE_BYTE(); + break; + case 3: + addr = PEEK_CODE_WORD() + X; + break; + case 4: + addr = PEEK_CODE_WORD() + Y; + break; + case 5: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + addr = zGetWord(addr); + break; + case 6: + addr = PEEK_CODE_BYTE(); + addr = zGetWord(addr) + Y; + break; + case 7: + addr = (UBYTE) (PEEK_CODE_BYTE() + X); + break; + case 8: + addr = (UBYTE) (PEEK_CODE_BYTE() + Y); + break; + /* XXX: case 13 */ + default: + addr = 0; + break; + } + for (i = 0; i < MONITOR_breakpoint_table_size; i++) { + int cond; + int value, m_addr; + if (!MONITOR_breakpoint_table[i].enabled) + continue; /* skip */ + cond = MONITOR_breakpoint_table[i].condition; + if (cond == MONITOR_BREAKPOINT_OR) + break; /* fire */ + value = MONITOR_breakpoint_table[i].value; + m_addr = MONITOR_breakpoint_table[i].m_addr; + if (cond == MONITOR_BREAKPOINT_FLAG_CLEAR) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) == 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V == 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z != 0) + continue; + break; + case CPU_C_FLAG: + if (C == 0) + continue; + break; + default: + if ((CPU_regP & value) == 0) + continue; + break; + } + } + else if (cond == MONITOR_BREAKPOINT_FLAG_SET) { + switch (value) { + case CPU_N_FLAG: + if ((N & 0x80) != 0) + continue; + break; +#ifndef NO_V_FLAG_VARIABLE + case CPU_V_FLAG: + if (V != 0) + continue; + break; +#endif + case CPU_Z_FLAG: + if (Z == 0) + continue; + break; + case CPU_C_FLAG: + if (C != 0) + continue; + break; + default: + if ((CPU_regP & value) != 0) + continue; + break; + } + } + else { + int val; + switch (cond >> 3) { + case MONITOR_BREAKPOINT_PC >> 3: + val = GET_PC() - 1; + break; + case MONITOR_BREAKPOINT_A >> 3: + val = A; + break; + case MONITOR_BREAKPOINT_X >> 3: + val = X; + break; + case MONITOR_BREAKPOINT_Y >> 3: + val = Y; + break; + case MONITOR_BREAKPOINT_S >> 3: + val = S; + break; + case MONITOR_BREAKPOINT_READ >> 3: + if ((optype & 4) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_WRITE >> 3: + if ((optype & 8) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_ACCESS >> 3: + if ((optype & 12) == 0) + goto cond_failed; + val = addr; + break; + case MONITOR_BREAKPOINT_MEMORY >> 3: + val = MEMORY_SafeGetByte(m_addr); + break; + default: + /* shouldn't happen */ + continue; + } + if ((cond & MONITOR_BREAKPOINT_LESS) != 0 && val < value) + continue; + if ((cond & MONITOR_BREAKPOINT_EQUAL) != 0 && val == value) + continue; + if ((cond & MONITOR_BREAKPOINT_GREATER) != 0 && val > value) + continue; + cond_failed: + ; + } + /* a condition failed */ + /* quickly skip AND-connected conditions */ + do { + if (++i >= MONITOR_breakpoint_table_size) + goto no_breakpoint; + } while (MONITOR_breakpoint_table[i].condition != MONITOR_BREAKPOINT_OR || !MONITOR_breakpoint_table[i].enabled); + } + /* fire breakpoint */ + PC--; + DO_BREAK; + goto breakpoint_return; + no_breakpoint: + ; + } +#endif /* MONITOR_BREAKPOINTS */ + +#ifndef CYCLES_PER_OPCODE + ANTIC_xpos += cycles[insn]; +#endif + +#ifdef MONITOR_PROFILE + CPU_instruction_count[insn]++; + MONITOR_coverage[old_PC = PC - 1].count++; + MONITOR_coverage_insns++; +#endif + +#ifdef PREFETCH_CODE + addr = PEEK_CODE_WORD(); +#endif + +#ifdef NO_GOTO + switch (insn) { +#else + goto *opcode[insn]; +#endif + + OPCODE(00) /* BRK */ +#ifdef MONITOR_BREAK + if (MONITOR_break_brk) { + DO_BREAK; + } + else +#endif + { + PC++; + PHPC; + PHPB1; + CPU_SetI; + SET_PC(MEMORY_dGetWordAligned(0xfffe)); + INC_RET_NESTING; + } + DONE + + OPCODE(01) /* ORA (ab,x) */ + INDIRECT_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(03) /* ASO (ab,x) [unofficial - ASL then ORA with Acc] */ + INDIRECT_X; + + aso: + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_PutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE_ALIAS(04) /* NOP ab [unofficial - skip byte] */ + OPCODE_ALIAS(44) + OPCODE(64) + PC++; + DONE + + OPCODE_ALIAS(14) /* NOP ab,x [unofficial - skip byte] */ + OPCODE_ALIAS(34) + OPCODE_ALIAS(54) + OPCODE_ALIAS(74) + OPCODE_ALIAS(d4) + OPCODE(f4) + PC++; + DONE + + OPCODE_ALIAS(80) /* NOP #ab [unofficial - skip byte] */ + OPCODE_ALIAS(82) + OPCODE_ALIAS(89) + OPCODE_ALIAS(c2) + OPCODE(e2) + PC++; + DONE + + OPCODE(05) /* ORA ab */ + ZPAGE; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(06) /* ASL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(07) /* ASO ab [unofficial - ASL then ORA with Acc] */ + ZPAGE; + + aso_zpage: + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + data <<= 1; + MEMORY_dPutByte(addr, data); + Z = N = A |= data; + DONE + + OPCODE(08) /* PHP */ + PHPB1; + DONE + + OPCODE(09) /* ORA #ab */ + ORA(IMMEDIATE); + DONE + + OPCODE(0a) /* ASL */ + C = (A & 0x80) ? 1 : 0; + Z = N = A <<= 1; + DONE + + OPCODE_ALIAS(0b) /* ANC #ab [unofficial - AND then copy N to C (Fox) */ + OPCODE(2b) + AND(IMMEDIATE); + C = N >= 0x80; + DONE + + OPCODE(0c) /* NOP abcd [unofficial - skip word] */ + PC += 2; + DONE + + OPCODE(0d) /* ORA abcd */ + ABSOLUTE; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(0e) /* ASL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(0f) /* ASO abcd [unofficial - ASL then ORA with Acc] */ + ABSOLUTE; + goto aso; + + OPCODE(10) /* BPL */ + BRANCH(!(N & 0x80)) + + OPCODE(11) /* ORA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(13) /* ASO (ab),y [unofficial - ASL then ORA with Acc] */ + INDIRECT_Y; + goto aso; + + OPCODE(15) /* ORA ab,x */ + ZPAGE_X; + ORA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(16) /* ASL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(17) /* ASO ab,x [unofficial - ASL then ORA with Acc] */ + ZPAGE_X; + goto aso_zpage; + + OPCODE(18) /* CLC */ + C = 0; + DONE + + OPCODE(19) /* ORA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1b) /* ASO abcd,y [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_Y; + goto aso; + + OPCODE_ALIAS(1c) /* NOP abcd,x [unofficial - skip word] */ + OPCODE_ALIAS(3c) + OPCODE_ALIAS(5c) + OPCODE_ALIAS(7c) + OPCODE_ALIAS(dc) + OPCODE(fc) + if (OP_BYTE + X >= 0x100) + ANTIC_xpos++; + PC += 2; + DONE + + OPCODE(1d) /* ORA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + ORA(MEMORY_GetByte(addr)); + DONE + + OPCODE(1e) /* ASL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = (data & 0x80) ? 1 : 0; + Z = N = data << 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(1f) /* ASO abcd,x [unofficial - ASL then ORA with Acc] */ + ABSOLUTE_X; + goto aso; + + OPCODE(20) /* JSR abcd */ + { + UWORD retaddr = GET_PC() + 1; +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; + MONITOR_ret_nesting++; +#endif + PHW(retaddr); + } + SET_PC(OP_WORD); + DONE + + OPCODE(21) /* AND (ab,x) */ + INDIRECT_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(23) /* RLA (ab,x) [unofficial - ROL Mem, then AND with A] */ + INDIRECT_X; + + rla: + RMW_GetByte(data, addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_PutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(24) /* BIT ab */ + ZPAGE; + N = MEMORY_dGetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(25) /* AND ab */ + ZPAGE; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(26) /* ROL ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(27) /* RLA ab [unofficial - ROL Mem, then AND with A] */ + ZPAGE; + + rla_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = (data & 0x80) ? 1 : 0; + data = (data << 1) + 1; + } + else { + C = (data & 0x80) ? 1 : 0; + data = (data << 1); + } + MEMORY_dPutByte(addr, data); + Z = N = A &= data; + DONE + + OPCODE(28) /* PLP */ + PLP; + CPUCHECKIRQ; + DONE + + OPCODE(29) /* AND #ab */ + AND(IMMEDIATE); + DONE + + OPCODE(2a) /* ROL */ + Z = N = (A << 1) + C; + C = (A & 0x80) ? 1 : 0; + A = Z; + DONE + + OPCODE(2c) /* BIT abcd */ + ABSOLUTE; + N = MEMORY_GetByte(addr); +#ifndef NO_V_FLAG_VARIABLE + V = N & 0x40; +#else + CPU_regP = (CPU_regP & 0xbf) + (N & 0x40); +#endif + Z = (A & N); + DONE + + OPCODE(2d) /* AND abcd */ + ABSOLUTE; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(2e) /* ROL abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(2f) /* RLA abcd [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE; + goto rla; + + OPCODE(30) /* BMI */ + BRANCH(N & 0x80) + + OPCODE(31) /* AND (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(33) /* RLA (ab),y [unofficial - ROL Mem, then AND with A] */ + INDIRECT_Y; + goto rla; + + OPCODE(35) /* AND ab,x */ + ZPAGE_X; + AND(MEMORY_dGetByte(addr)); + DONE + + OPCODE(36) /* ROL ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(37) /* RLA ab,x [unofficial - ROL Mem, then AND with A] */ + ZPAGE_X; + goto rla_zpage; + + OPCODE(38) /* SEC */ + C = 1; + DONE + + OPCODE(39) /* AND abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3b) /* RLA abcd,y [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_Y; + goto rla; + + OPCODE(3d) /* AND abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + AND(MEMORY_GetByte(addr)); + DONE + + OPCODE(3e) /* ROL abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (data << 1) + C; + C = (data & 0x80) ? 1 : 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(3f) /* RLA abcd,x [unofficial - ROL Mem, then AND with A] */ + ABSOLUTE_X; + goto rla; + + OPCODE(40) /* RTI */ + PLP; + data = PL; + SET_PC((PL << 8) + data); + CPUCHECKIRQ; +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(41) /* EOR (ab,x) */ + INDIRECT_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(43) /* LSE (ab,x) [unofficial - LSR then EOR result with A] */ + INDIRECT_X; + + lse: + RMW_GetByte(data, addr); + C = data & 1; + data >>= 1; + MEMORY_PutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(45) /* EOR ab */ + ZPAGE; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(46) /* LSR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(47) /* LSE ab [unofficial - LSR then EOR result with A] */ + ZPAGE; + + lse_zpage: + data = MEMORY_dGetByte(addr); + C = data & 1; + data >>= 1; + MEMORY_dPutByte(addr, data); + Z = N = A ^= data; + DONE + + OPCODE(48) /* PHA */ + PH(A); + DONE + + OPCODE(49) /* EOR #ab */ + EOR(IMMEDIATE); + DONE + + OPCODE(4a) /* LSR */ + C = A & 1; + Z = N = A >>= 1; + DONE + + OPCODE(4b) /* ALR #ab [unofficial - Acc AND Data, LSR result] */ + data = A & IMMEDIATE; + C = data & 1; + Z = N = A = (data >> 1); + DONE + + OPCODE(4c) /* JMP abcd */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + SET_PC(OP_WORD); + DONE + + OPCODE(4d) /* EOR abcd */ + ABSOLUTE; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(4e) /* LSR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(4f) /* LSE abcd [unofficial - LSR then EOR result with A] */ + ABSOLUTE; + goto lse; + + OPCODE(50) /* BVC */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(!V) +#else + BRANCH(!(CPU_regP & 0x40)) +#endif + + OPCODE(51) /* EOR (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(53) /* LSE (ab),y [unofficial - LSR then EOR result with A] */ + INDIRECT_Y; + goto lse; + + OPCODE(55) /* EOR ab,x */ + ZPAGE_X; + EOR(MEMORY_dGetByte(addr)); + DONE + + OPCODE(56) /* LSR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(57) /* LSE ab,x [unofficial - LSR then EOR result with A] */ + ZPAGE_X; + goto lse_zpage; + + OPCODE(58) /* CLI */ + CPU_ClrI; + CPUCHECKIRQ; + DONE + + OPCODE(59) /* EOR abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5b) /* LSE abcd,y [unofficial - LSR then EOR result with A] */ + ABSOLUTE_Y; + goto lse; + + OPCODE(5d) /* EOR abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + EOR(MEMORY_GetByte(addr)); + DONE + + OPCODE(5e) /* LSR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + C = data & 1; + Z = data >> 1; + N = 0; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(5f) /* LSE abcd,x [unofficial - LSR then EOR result with A] */ + ABSOLUTE_X; + goto lse; + + OPCODE(60) /* RTS */ + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + if (CPU_rts_handler != NULL) { + CPU_rts_handler(); + CPU_rts_handler = NULL; + } + DONE + + OPCODE(61) /* ADC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(63) /* RRA (ab,x) [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_X; + + rra: + RMW_GetByte(data, addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_PutByte(addr, data); + goto adc; + + OPCODE(65) /* ADC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(66) /* ROR ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(67) /* RRA ab [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE; + + rra_zpage: + data = MEMORY_dGetByte(addr); + if (C) { + C = data & 1; + data = (data >> 1) + 0x80; + } + else { + C = data & 1; + data >>= 1; + } + MEMORY_dPutByte(addr, data); + goto adc; + + OPCODE(68) /* PLA */ + Z = N = A = PL; + DONE + + OPCODE(69) /* ADC #ab */ + data = IMMEDIATE; + goto adc; + + OPCODE(6a) /* ROR */ + Z = N = (C << 7) + (A >> 1); + C = A & 1; + A = Z; + DONE + + OPCODE(6b) /* ARR #ab [unofficial - Acc AND Data, ROR result] */ + /* It does some 'BCD fixup' if D flag is set */ + /* MPC 05/24/00 */ + data = A & IMMEDIATE; + if (CPU_regP & CPU_D_FLAG) { + UBYTE temp = (data >> 1) + (C << 7); + Z = N = temp; +#ifndef NO_V_FLAG_VARIABLE + V = ((temp ^ data) & 0x40); +#else + CPU_regP = (CPU_regP & 0xbf) + ((temp ^ data) & 0x40); +#endif + if ((data & 0x0F) + (data & 0x01) > 5) + temp = (temp & 0xF0) + ((temp + 0x6) & 0x0F); + if (data + (data & 0x10) >= 0x60) { + temp += 0x60; + C = 1; + } + else + C = 0; + A = (UBYTE) temp; + } + else { + Z = N = A = (data >> 1) + (C << 7); + C = data >> 7; +#ifndef NO_V_FLAG_VARIABLE + V = C ^ ((A >> 5) & 1); +#else + CPU_regP = (CPU_regP & 0xbf) + ((A ^ data) & 0x40); +#endif + } + DONE + + OPCODE(6c) /* JMP (abcd) */ +#ifdef MONITOR_BREAK + CPU_remember_JMP[CPU_remember_jmp_curpos] = GET_PC() - 1; + CPU_remember_jmp_curpos = (CPU_remember_jmp_curpos + 1) % CPU_REMEMBER_JMP_STEPS; +#endif + ABSOLUTE; +#ifdef CPU65C02 + /* XXX: if ((UBYTE) addr == 0xff) ANTIC_xpos++; */ + SET_PC(MEMORY_dGetWord(addr)); +#else + /* original 6502 had a bug in JMP (addr) when addr crossed page boundary */ + if ((UBYTE) addr == 0xff) + SET_PC((MEMORY_dGetByte(addr - 0xff) << 8) + MEMORY_dGetByte(addr)); + else + SET_PC(MEMORY_dGetWord(addr)); +#endif + DONE + + OPCODE(6d) /* ADC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(6e) /* ROR abcd */ + ABSOLUTE; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(6f) /* RRA abcd [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE; + goto rra; + + OPCODE(70) /* BVS */ +#ifndef NO_V_FLAG_VARIABLE + BRANCH(V) +#else + BRANCH(CPU_regP & 0x40) +#endif + + OPCODE(71) /* ADC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(73) /* RRA (ab),y [unofficial - ROR Mem, then ADC to Acc] */ + INDIRECT_Y; + goto rra; + + OPCODE(75) /* ADC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto adc; + + OPCODE(76) /* ROR ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(77) /* RRA ab,x [unofficial - ROR Mem, then ADC to Acc] */ + ZPAGE_X; + goto rra_zpage; + + OPCODE(78) /* SEI */ + CPU_SetI; + DONE + + OPCODE(79) /* ADC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7b) /* RRA abcd,y [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_Y; + goto rra; + + OPCODE(7d) /* ADC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto adc; + + OPCODE(7e) /* ROR abcd,x */ + ABSOLUTE_X; + RMW_GetByte(data, addr); + Z = N = (C << 7) + (data >> 1); + C = data & 1; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(7f) /* RRA abcd,x [unofficial - ROR Mem, then ADC to Acc] */ + ABSOLUTE_X; + goto rra; + + OPCODE(81) /* STA (ab,x) */ + INDIRECT_X; + MEMORY_PutByte(addr, A); + DONE + + /* AXS doesn't change flags and SAX is better name for it (Fox) */ + OPCODE(83) /* SAX (ab,x) [unofficial - Store result A AND X */ + INDIRECT_X; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(84) /* STY ab */ + ZPAGE; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(85) /* STA ab */ + ZPAGE; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(86) /* STX ab */ + ZPAGE; + MEMORY_dPutByte(addr, X); + DONE + + OPCODE(87) /* SAX ab [unofficial - Store result A AND X] */ + ZPAGE; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(88) /* DEY */ + Z = N = --Y; + DONE + + OPCODE(8a) /* TXA */ + Z = N = A = X; + DONE + + OPCODE(8b) /* ANE #ab [unofficial - A AND X AND (Mem OR $EF) to Acc] (Fox) */ + data = IMMEDIATE; + Z = N = A & X & data; + A &= X & (data | 0xef); + DONE + + OPCODE(8c) /* STY abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, Y); + DONE + + OPCODE(8d) /* STA abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(8e) /* STX abcd */ + ABSOLUTE; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(8f) /* SAX abcd [unofficial - Store result A AND X] */ + ABSOLUTE; + data = A & X; + MEMORY_PutByte(addr, data); + DONE + + OPCODE(90) /* BCC */ + BRANCH(!C) + + OPCODE(91) /* STA (ab),y */ + INDIRECT_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(93) /* SHA (ab),y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + /* It seems previous memory value is important - also in 9f */ + ZPAGE; + addr = zGetWord(addr); + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(94) /* STY ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, Y); + DONE + + OPCODE(95) /* STA ab,x */ + ZPAGE_X; + MEMORY_dPutByte(addr, A); + DONE + + OPCODE(96) /* STX ab,y */ + ZPAGE_Y; + MEMORY_PutByte(addr, X); + DONE + + OPCODE(97) /* SAX ab,y [unofficial - Store result A AND X] */ + ZPAGE_Y; + data = A & X; + MEMORY_dPutByte(addr, data); + DONE + + OPCODE(98) /* TYA */ + Z = N = A = Y; + DONE + + OPCODE(99) /* STA abcd,y */ + ABSOLUTE_Y; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9a) /* TXS */ + S = X; + DONE + + OPCODE(9b) /* SHS abcd,y [unofficial, UNSTABLE] (Fox) */ + /* Transfer A AND X to S, then store S AND (H+1)] */ + /* S seems to be stable, only memory values vary */ + ABSOLUTE; + S = A & X; + data = S & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9c) /* SHY abcd,x [unofficial - Store Y and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = Y & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + X > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + X) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + X, data); + } + DONE + + OPCODE(9d) /* STA abcd,x */ + ABSOLUTE_X; + MEMORY_PutByte(addr, A); + DONE + + OPCODE(9e) /* SHX abcd,y [unofficial - Store X and (H+1)] (Fox) */ + /* Seems to be stable */ + ABSOLUTE; + /* MPC 05/24/00 */ + data = X & ((UBYTE) ((addr >> 8) + 1)); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(9f) /* SHA abcd,y [unofficial, UNSTABLE - Store A AND X AND (H+1) ?] (Fox) */ + ABSOLUTE; + data = A & X & ((addr >> 8) + 1); + if ((addr & 0xff) + Y > 0xff) { /* if it crosses a page */ + MEMORY_PutByte(((addr + Y) & 0xff) | (data << 8), data); + } + else { + MEMORY_PutByte(addr + Y, data); + } + DONE + + OPCODE(a0) /* LDY #ab */ + LDY(IMMEDIATE); + DONE + + OPCODE(a1) /* LDA (ab,x) */ + INDIRECT_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(a2) /* LDX #ab */ + LDX(IMMEDIATE); + DONE + + OPCODE(a3) /* LAX (ab,x) [unofficial] */ + INDIRECT_X; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a4) /* LDY ab */ + ZPAGE; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a5) /* LDA ab */ + ZPAGE; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a6) /* LDX ab */ + ZPAGE; + LDX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(a7) /* LAX ab [unofficial] */ + ZPAGE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(a8) /* TAY */ + Z = N = Y = A; + DONE + + OPCODE(a9) /* LDA #ab */ + LDA(IMMEDIATE); + DONE + + OPCODE(aa) /* TAX */ + Z = N = X = A; + DONE + + OPCODE(ab) /* ANX #ab [unofficial - AND #ab, then TAX] */ + Z = N = X = A &= IMMEDIATE; + DONE + + OPCODE(ac) /* LDY abcd */ + ABSOLUTE; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(ad) /* LDA abcd */ + ABSOLUTE; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ae) /* LDX abcd */ + ABSOLUTE; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(af) /* LAX abcd [unofficial] */ + ABSOLUTE; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b0) /* BCS */ + BRANCH(C) + + OPCODE(b1) /* LDA (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(b3) /* LAX (ab),y [unofficial] */ + INDIRECT_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b4) /* LDY ab,x */ + ZPAGE_X; + LDY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b5) /* LDA ab,x */ + ZPAGE_X; + LDA(MEMORY_dGetByte(addr)); + DONE + + OPCODE(b6) /* LDX ab,y */ + ZPAGE_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(b7) /* LAX ab,y [unofficial] */ + ZPAGE_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(b8) /* CLV */ +#ifndef NO_V_FLAG_VARIABLE + V = 0; +#else + CPU_ClrV; +#endif + DONE + + OPCODE(b9) /* LDA abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(ba) /* TSX */ + Z = N = X = S; + DONE + +/* AXA [unofficial - original decode by R.Sterba and R.Petruzela 15.1.1998 :-)] + AXA - this is our new imaginative name for instruction with opcode hex BB. + AXA - Store Mem AND #$FD to Acc and X, then set stackpoint to value (Acc - 4) + It's cool! :-) + LAS - this is better name for this :) (Fox) + It simply ANDs stack pointer with Mem, then transfers result to A and X + */ + + OPCODE(bb) /* LAS abcd,y [unofficial - AND S with Mem, transfer to A and X (Fox) */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = A = X = S &= MEMORY_GetByte(addr); + DONE + + OPCODE(bc) /* LDY abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDY(MEMORY_GetByte(addr)); + DONE + + OPCODE(bd) /* LDA abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + LDA(MEMORY_GetByte(addr)); + DONE + + OPCODE(be) /* LDX abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + LDX(MEMORY_GetByte(addr)); + DONE + + OPCODE(bf) /* LAX abcd,y [unofficial] */ + ABSOLUTE_Y; + NCYCLES_Y; + Z = N = X = A = MEMORY_GetByte(addr); + DONE + + OPCODE(c0) /* CPY #ab */ + CPY(IMMEDIATE); + DONE + + OPCODE(c1) /* CMP (ab,x) */ + INDIRECT_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(c3) /* DCM (ab,x) [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_X; + + dcm: + RMW_GetByte(data, addr); + data--; + MEMORY_PutByte(addr, data); + CMP(data); + DONE + + OPCODE(c4) /* CPY ab */ + ZPAGE; + CPY(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c5) /* CMP ab */ + ZPAGE; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(c6) /* DEC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(c7) /* DCM ab [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE; + + dcm_zpage: + data = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, data); + CMP(data); + DONE + + OPCODE(c8) /* INY */ + Z = N = ++Y; + DONE + + OPCODE(c9) /* CMP #ab */ + CMP(IMMEDIATE); + DONE + + OPCODE(ca) /* DEX */ + Z = N = --X; + DONE + + OPCODE(cb) /* SBX #ab [unofficial - store ((A AND X) - Mem) in X] (Fox) */ + X &= A; + data = IMMEDIATE; + C = X >= data; + /* MPC 05/24/00 */ + Z = N = X -= data; + DONE + + OPCODE(cc) /* CPY abcd */ + ABSOLUTE; + CPY(MEMORY_GetByte(addr)); + DONE + + OPCODE(cd) /* CMP abcd */ + ABSOLUTE; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(ce) /* DEC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(cf) /* DCM abcd [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE; + goto dcm; + + OPCODE(d0) /* BNE */ + BRANCH(Z) + + OPCODE(d1) /* CMP (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(d3) /* DCM (ab),y [unofficial - DEC Mem then CMP with Acc] */ + INDIRECT_Y; + goto dcm; + + OPCODE(d5) /* CMP ab,x */ + ZPAGE_X; + CMP(MEMORY_dGetByte(addr)); + DONE + + OPCODE(d6) /* DEC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) - 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(d7) /* DCM ab,x [unofficial - DEC Mem then CMP with Acc] */ + ZPAGE_X; + goto dcm_zpage; + + OPCODE(d8) /* CLD */ + CPU_ClrD; + DONE + + OPCODE(d9) /* CMP abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(db) /* DCM abcd,y [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_Y; + goto dcm; + + OPCODE(dd) /* CMP abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + CMP(MEMORY_GetByte(addr)); + DONE + + OPCODE(de) /* DEC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = --Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(df) /* DCM abcd,x [unofficial - DEC Mem then CMP with Acc] */ + ABSOLUTE_X; + goto dcm; + + OPCODE(e0) /* CPX #ab */ + CPX(IMMEDIATE); + DONE + + OPCODE(e1) /* SBC (ab,x) */ + INDIRECT_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(e3) /* INS (ab,x) [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_X; + + ins: + RMW_GetByte(data, addr); + ++data; + MEMORY_PutByte(addr, data); + goto sbc; + + OPCODE(e4) /* CPX ab */ + ZPAGE; + CPX(MEMORY_dGetByte(addr)); + DONE + + OPCODE(e5) /* SBC ab */ + ZPAGE; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(e6) /* INC ab */ + ZPAGE; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(e7) /* INS ab [unofficial - INC Mem then SBC with Acc] */ + ZPAGE; + + ins_zpage: + data = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, data); + goto sbc; + + OPCODE(e8) /* INX */ + Z = N = ++X; + DONE + + OPCODE_ALIAS(e9) /* SBC #ab */ + OPCODE(eb) /* SBC #ab [unofficial] */ + data = IMMEDIATE; + goto sbc; + + OPCODE_ALIAS(ea) /* NOP */ + OPCODE_ALIAS(1a) /* NOP [unofficial] */ + OPCODE_ALIAS(3a) + OPCODE_ALIAS(5a) + OPCODE_ALIAS(7a) + OPCODE_ALIAS(da) + OPCODE(fa) + DONE + + OPCODE(ec) /* CPX abcd */ + ABSOLUTE; + CPX(MEMORY_GetByte(addr)); + DONE + + OPCODE(ed) /* SBC abcd */ + ABSOLUTE; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(ee) /* INC abcd */ + ABSOLUTE; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ef) /* INS abcd [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE; + goto ins; + + OPCODE(f0) /* BEQ */ + BRANCH(!Z) + + OPCODE(f1) /* SBC (ab),y */ + INDIRECT_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(f3) /* INS (ab),y [unofficial - INC Mem then SBC with Acc] */ + INDIRECT_Y; + goto ins; + + OPCODE(f5) /* SBC ab,x */ + ZPAGE_X; + data = MEMORY_dGetByte(addr); + goto sbc; + + OPCODE(f6) /* INC ab,x */ + ZPAGE_X; + Z = N = MEMORY_dGetByte(addr) + 1; + MEMORY_dPutByte(addr, Z); + DONE + + OPCODE(f7) /* INS ab,x [unofficial - INC Mem then SBC with Acc] */ + ZPAGE_X; + goto ins_zpage; + + OPCODE(f8) /* SED */ + CPU_SetD; + DONE + + OPCODE(f9) /* SBC abcd,y */ + ABSOLUTE_Y; + NCYCLES_Y; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fb) /* INS abcd,y [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_Y; + goto ins; + + OPCODE(fd) /* SBC abcd,x */ + ABSOLUTE_X; + NCYCLES_X; + data = MEMORY_GetByte(addr); + goto sbc; + + OPCODE(fe) /* INC abcd,x */ + ABSOLUTE_X; + RMW_GetByte(Z, addr); + N = ++Z; + MEMORY_PutByte(addr, Z); + DONE + + OPCODE(ff) /* INS abcd,x [unofficial - INC Mem then SBC with Acc] */ + ABSOLUTE_X; + goto ins; + +#ifdef ASAP + + OPCODE_ALIAS(d2) + OPCODE_ALIAS(f2) + +#else + + OPCODE(d2) /* ESCRTS #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + data = PL; + SET_PC((PL << 8) + data + 1); +#ifdef MONITOR_BREAK + if (MONITOR_break_ret && --MONITOR_ret_nesting <= 0) + MONITOR_break_step = TRUE; +#endif + DONE + + OPCODE(f2) /* ESC #ab (CIM) - on Atari is here instruction CIM [unofficial] !RS! */ + /* OPCODE(ff: ESC #ab - opcode FF is now used for INS [unofficial] instruction !RS! */ + data = IMMEDIATE; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + ESC_Run(data); + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + + OPCODE_ALIAS(02) /* CIM [unofficial - crash intermediate] */ + OPCODE_ALIAS(12) + OPCODE_ALIAS(22) + OPCODE_ALIAS(32) + OPCODE_ALIAS(42) + OPCODE_ALIAS(52) + OPCODE_ALIAS(62) + OPCODE_ALIAS(72) + OPCODE_ALIAS(92) + OPCODE(b2) + +#ifdef ASAP + + ASAP_CIM(); + DONE + +#else + + /* OPCODE(d2) Used for ESCRTS #ab (CIM) */ + /* OPCODE(f2) Used for ESC #ab (CIM) */ + PC--; + UPDATE_GLOBAL_REGS; + CPU_GetStatus(); + +#ifdef CRASH_MENU + UI_crash_address = GET_PC(); + UI_crash_afterCIM = GET_PC() + 1; + UI_crash_code = insn; + UI_Run(); +#else + CPU_cim_encountered = TRUE; + ENTER_MONITOR; +#endif /* CRASH_MENU */ + + CPU_PutStatus(); + UPDATE_LOCAL_REGS; + DONE + +#endif /* ASAP */ + +/* ---------------------------------------------- */ +/* ADC and SBC routines */ + + adc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + tmp = A + data + C; + C = tmp > 0xff; + /* C = tmp >> 8; */ +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) + (data & 0x0f) + C; + if (tmp >= 0x0a) + tmp = ((tmp + 0x06) & 0x0f) + 0x10; + tmp += (A & 0xf0) + (data & 0xf0); + + Z = A + data + C; + N = (UBYTE) tmp; +#ifndef NO_V_FLAG_VARIABLE + V = !((A ^ data) & 0x80) && ((data ^ tmp) & 0x80); +#else + CPU_ClrV; + if (!((A ^ data) & 0x80) && ((data ^ tmp) & 0x80)) + CPU_SetV; +#endif + + if (tmp >= 0xa0) + tmp += 0x60; + C = tmp > 0xff; + A = (UBYTE) tmp; + } + DONE + + sbc: + if (!(CPU_regP & CPU_D_FLAG)) { + /* Binary mode */ + unsigned int tmp; + /* tmp = A - data - !C; */ + tmp = A - data - 1 + C; + C = tmp < 0x100; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ tmp) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ tmp) & 0x80)) + CPU_SetV; +#endif + Z = N = A = (UBYTE) tmp; + } + else { + /* Decimal mode */ + unsigned int tmp; + tmp = (A & 0x0f) - (data & 0x0f) - 1 + C; + if (tmp & 0x10) + tmp = ((tmp - 0x06) & 0x0f) - 0x10; + tmp += (A & 0xf0) - (data & 0xf0); + if (tmp & 0x100) + tmp -= 0x60; + + Z = N = A - data - 1 + C; +#ifndef NO_V_FLAG_VARIABLE + V = ((A ^ data) & 0x80) && ((A ^ Z) & 0x80); +#else + CPU_ClrV; + if (((A ^ data) & 0x80) && ((A ^ Z) & 0x80)) + CPU_SetV; +#endif + C = ((unsigned int) (A - data - 1 + C)) <= 0xff; + + A = tmp; + } + DONE + +#ifdef NO_GOTO + } +#else + next: +#endif + +#ifdef MONITOR_PROFILE + { + int cyc = ANTIC_xpos - old_xpos; + MONITOR_coverage[old_PC].cycles += cyc; + MONITOR_coverage_cycles += cyc; + } +#endif + +#ifdef MONITOR_BREAK + if (MONITOR_break_step) { + DO_BREAK; + } +#endif + /* This "continue" does nothing here. + But it is necessary because, if we're not using NO_GOTO nor MONITOR_BREAK, + gcc can complain: "error: label at end of compound statement". */ + continue; + } + + UPDATE_GLOBAL_REGS; +} + +#endif /* FALCON_CPUASM */ + +void CPU_Reset(void) +{ +#ifdef MONITOR_PROFILE + memset(CPU_instruction_count, 0, sizeof(CPU_instruction_count)); +#endif + + CPU_IRQ = 0; + + CPU_regP = 0x34; /* The unused bit is always 1, I flag set! */ + CPU_PutStatus(); /* Make sure flags are all updated */ + CPU_regS = 0xff; + CPU_regPC = MEMORY_dGetWordAligned(0xfffc); +} + +#if !defined(BASIC) && !defined(ASAP) + +void CPU_StateSave(UBYTE SaveVerbose) +{ + StateSav_SaveUBYTE(&CPU_regA, 1); + + CPU_GetStatus(); /* Make sure flags are all updated */ + StateSav_SaveUBYTE(&CPU_regP, 1); + + StateSav_SaveUBYTE(&CPU_regS, 1); + StateSav_SaveUBYTE(&CPU_regX, 1); + StateSav_SaveUBYTE(&CPU_regY, 1); + StateSav_SaveUBYTE(&CPU_IRQ, 1); + + MEMORY_StateSave(SaveVerbose); + + StateSav_SaveUWORD(&CPU_regPC, 1); +} + +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion) +{ + StateSav_ReadUBYTE(&CPU_regA, 1); + + StateSav_ReadUBYTE(&CPU_regP, 1); + CPU_PutStatus(); /* Make sure flags are all updated */ + + StateSav_ReadUBYTE(&CPU_regS, 1); + StateSav_ReadUBYTE(&CPU_regX, 1); + StateSav_ReadUBYTE(&CPU_regY, 1); + StateSav_ReadUBYTE(&CPU_IRQ, 1); + + MEMORY_StateRead(SaveVerbose, StateVersion); + + StateSav_ReadUWORD(&CPU_regPC, 1); +} + +#endif diff --git a/MCUME_teensy/teensy800/cpu.h b/MCUME_teensy/teensy800/cpu.h new file mode 100644 index 0000000..3ee25e6 --- /dev/null +++ b/MCUME_teensy/teensy800/cpu.h @@ -0,0 +1,65 @@ +#ifndef CPU_H_ +#define CPU_H_ + +#include "atari.h" + +#define CPU_N_FLAG 0x80 +#define CPU_V_FLAG 0x40 +#define CPU_B_FLAG 0x10 +#define CPU_D_FLAG 0x08 +#define CPU_I_FLAG 0x04 +#define CPU_Z_FLAG 0x02 +#define CPU_C_FLAG 0x01 + +void CPU_GetStatus(void); +void CPU_PutStatus(void); +void CPU_Reset(void); +void CPU_StateSave(UBYTE SaveVerbose); +void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion); +void CPU_NMI(void); +void CPU_GO(int limit); +#define CPU_GenerateIRQ() (CPU_IRQ = 1) + +extern UWORD CPU_regPC; +extern UBYTE CPU_regA; +extern UBYTE CPU_regP; +extern UBYTE CPU_regS; +extern UBYTE CPU_regY; +extern UBYTE CPU_regX; + +#define CPU_SetN CPU_regP |= CPU_N_FLAG +#define CPU_ClrN CPU_regP &= (~CPU_N_FLAG) +#define CPU_SetV CPU_regP |= CPU_V_FLAG +#define CPU_ClrV CPU_regP &= (~CPU_V_FLAG) +#define CPU_SetB CPU_regP |= CPU_B_FLAG +#define CPU_ClrB CPU_regP &= (~CPU_B_FLAG) +#define CPU_SetD CPU_regP |= CPU_D_FLAG +#define CPU_ClrD CPU_regP &= (~CPU_D_FLAG) +#define CPU_SetI CPU_regP |= CPU_I_FLAG +#define CPU_ClrI CPU_regP &= (~CPU_I_FLAG) +#define CPU_SetZ CPU_regP |= CPU_Z_FLAG +#define CPU_ClrZ CPU_regP &= (~CPU_Z_FLAG) +#define CPU_SetC CPU_regP |= CPU_C_FLAG +#define CPU_ClrC CPU_regP &= (~CPU_C_FLAG) + +extern UBYTE CPU_IRQ; + +extern void (*CPU_rts_handler)(void); + +extern UBYTE CPU_cim_encountered; + +#define CPU_REMEMBER_PC_STEPS 64 +extern UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS]; +extern UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3]; +extern unsigned int CPU_remember_PC_curpos; +extern int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS]; + +#define CPU_REMEMBER_JMP_STEPS 16 +extern UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS]; +extern unsigned int CPU_remember_jmp_curpos; + +#ifdef MONITOR_PROFILE +extern int CPU_instruction_count[256]; +#endif + +#endif /* CPU_H_ */ diff --git a/MCUME_teensy/teensy800/crc32.c b/MCUME_teensy/teensy800/crc32.c new file mode 100644 index 0000000..d22e223 --- /dev/null +++ b/MCUME_teensy/teensy800/crc32.c @@ -0,0 +1,86 @@ +/* CRC32.C -- Calculates 32bit CRC checksum + */ +// modified main() (see crc32.orig) to get calc_crc32() function +// JH 2002 + +#include +#include + +const unsigned long crc32_table[256] = { /* lookup table */ +0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, +0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, +0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, +0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, +0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, +0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, +0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, +0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, +0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, +0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, +0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, +0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, +0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, +0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, +0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, +0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, +0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, +0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, +0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, +0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, +0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, +0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, +0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, +0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, +0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, +0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, +0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, +0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, +0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, +0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, +0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, +0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, +0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, +0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, +0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, +0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, +0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, +0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, +0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, +0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, +0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, +0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, +0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; + +unsigned long calc_crc32(unsigned char *buf, int buflen) +{ + // buf is pointer to input buffer (data to crc) + // buflen is length of input buffer + + unsigned long crc; /* CRC value */ + //size_t j; /* buffer positions*/ + int j; /* buffer positions*/ + int k; /* generic integer */ + +#ifdef DEBUG + printf("32bit Cyclic Redudancy Check\n"); +#endif + + crc = 0xFFFFFFFF; /* preconditioning sets non zero value */ + + /* loop through the buffer and calculate CRC */ + for(j=0; j> 8) & 0x00FFFFFFL) ^ crc32_table[k]; + } + + crc=~crc; /* postconditioning */ + + /* print results */ +#ifdef DEBUG + printf("CRC32 is %08lX\n", crc); +#endif + + return crc; +} + + diff --git a/MCUME_teensy/teensy800/emuapi.cpp b/MCUME_teensy/teensy800/emuapi.cpp new file mode 100644 index 0000000..1b702d8 --- /dev/null +++ b/MCUME_teensy/teensy800/emuapi.cpp @@ -0,0 +1,1045 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensy800/emuapi.h b/MCUME_teensy/teensy800/emuapi.h new file mode 100644 index 0000000..1dcf4d4 --- /dev/null +++ b/MCUME_teensy/teensy800/emuapi.h @@ -0,0 +1,140 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define CUSTOM_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " Atari 800 Emulator " +#define ROMSDIR "800" + +#define emu_Init(ROM) {at8_Init(); at8_Start(ROM);} +#define emu_Step(x) {at8_Step();} +#define emu_Input(x) {} + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x3 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 0X40 +#define ACTION_EXITKBD 127 +#define ACTION_RUNTFT 126 +#define ACTION_RUNVGA 125 + + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 1 +#define KEYBOARD_Y 6 +#define KEYBOARD_KEY_H 23 +#define KEYBOARD_KEY_W 21 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,21,21,22,21,22,21,21,22,21,22,21,21,22,21,22, + TAREA_NEW_ROW,34,21,21,21,21,21,21,21,21,21,21,21,21,34, + TAREA_NEW_ROW,40,21,21,21,21,21,21,21,21,21,21,21,21,21, + TAREA_NEW_ROW,50,21,21,21,21,21,21,21,21,21,21,21,45, + TAREA_NEW_ROW,60,192, + TAREA_END}; + + +const unsigned short keys[] = { + 0x1C+1,0x1F+1,0x1F ,0x1A+1,0x18+1,0x1D+1,0x1B+1,0x33+1,0x35+1,0x30+1,0x32+1,0x36+1,0x37+1,0,0, + 0x2C+1,0x2F+1,0x2F ,0x2A+1,0x28+1,0x2D+1,0x2B+1,0x0B+1,0x0D+1,0x08+1,0x0A+1,0x0E,0x0F+1,0x0C+1, + 0, 0x3F+1,0x3F ,0x3A+1,0x38+1,0x3D+1,0x39+1,0x01+1,0x05+1,0x00+1,0x02+1,0x06+1,0x07+1,0, + 0x3C+1,0x17+1,0x16+1,0x12+1,0x11+1,0x15+1,0x23+1,0x25+1,0x20+1,0x22+1,0x26+1, 0,0, + 0, 0x21+1 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0, 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408,0,0,0,0, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404,0,0,0X0402, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0,0,0,0, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0,0,0,0, + 0, 0X0401}; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + +#endif + + + + diff --git a/MCUME_teensy/teensy800/font8x8.h b/MCUME_teensy/teensy800/font8x8.h new file mode 100644 index 0000000..03edc95 --- /dev/null +++ b/MCUME_teensy/teensy800/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char PROGMEM font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensy800/gtia.c b/MCUME_teensy/teensy800/gtia.c new file mode 100644 index 0000000..1d3612c --- /dev/null +++ b/MCUME_teensy/teensy800/gtia.c @@ -0,0 +1,1330 @@ +/* + * gtia.c - GTIA chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2015 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include + +#include "antic.h" +#include "gtia.h" + +/* GTIA Registers ---------------------------------------------------------- */ + +UBYTE GTIA_M0PL; +UBYTE GTIA_M1PL; +UBYTE GTIA_M2PL; +UBYTE GTIA_M3PL; +UBYTE GTIA_P0PL; +UBYTE GTIA_P1PL; +UBYTE GTIA_P2PL; +UBYTE GTIA_P3PL; +UBYTE GTIA_HPOSP0; +UBYTE GTIA_HPOSP1; +UBYTE GTIA_HPOSP2; +UBYTE GTIA_HPOSP3; +UBYTE GTIA_HPOSM0; +UBYTE GTIA_HPOSM1; +UBYTE GTIA_HPOSM2; +UBYTE GTIA_HPOSM3; +UBYTE GTIA_SIZEP0; +UBYTE GTIA_SIZEP1; +UBYTE GTIA_SIZEP2; +UBYTE GTIA_SIZEP3; +UBYTE GTIA_SIZEM; +UBYTE GTIA_GRAFP0; +UBYTE GTIA_GRAFP1; +UBYTE GTIA_GRAFP2; +UBYTE GTIA_GRAFP3; +UBYTE GTIA_GRAFM; +UBYTE GTIA_COLPM0; +UBYTE GTIA_COLPM1; +UBYTE GTIA_COLPM2; +UBYTE GTIA_COLPM3; +UBYTE GTIA_COLPF0; +UBYTE GTIA_COLPF1; +UBYTE GTIA_COLPF2; +UBYTE GTIA_COLPF3; +UBYTE GTIA_COLBK; +UBYTE GTIA_PRIOR; +UBYTE GTIA_VDELAY; +UBYTE GTIA_GRACTL; + +/* Internal GTIA state ----------------------------------------------------- */ + +int GTIA_speaker; +int GTIA_consol_override = 0; +static UBYTE consol; +UBYTE consol_mask; +UBYTE GTIA_TRIG[4]; +UBYTE GTIA_TRIG_latch[4]; + +#if defined(BASIC) || defined(CURSES_BASIC) + +static UBYTE PF0PM = 0; +static UBYTE PF1PM = 0; +static UBYTE PF2PM = 0; +static UBYTE PF3PM = 0; +#define GTIA_collisions_mask_missile_playfield 0 +#define GTIA_collisions_mask_player_playfield 0 +#define GTIA_collisions_mask_missile_player 0 +#define GTIA_collisions_mask_player_player 0 + +#else /* defined(BASIC) || defined(CURSES_BASIC) */ + +void set_prior(UBYTE byte); /* in antic.c */ + +/* Player/Missile stuff ---------------------------------------------------- */ + +/* change to 0x00 to disable collisions */ +UBYTE GTIA_collisions_mask_missile_playfield = 0x0f; +UBYTE GTIA_collisions_mask_player_playfield = 0x0f; +UBYTE GTIA_collisions_mask_missile_player = 0x0f; +UBYTE GTIA_collisions_mask_player_player = 0x0f; + +#ifdef NEW_CYCLE_EXACT +/* temporary collision registers for the current scanline only */ +UBYTE P1PL_T; +UBYTE P2PL_T; +UBYTE P3PL_T; +UBYTE M0PL_T; +UBYTE M1PL_T; +UBYTE M2PL_T; +UBYTE M3PL_T; +/* If partial collisions have been generated during a scanline, this + * is the position of the up-to-date collision point , otherwise it is 0 + */ +int collision_curpos; +/* if hitclr has been written to during a scanline, this is the position + * within pm_scaline at which it was written to, and collisions should + * only be generated from this point on, otherwise it is 0 + */ +int hitclr_pos; +#else +#define P1PL_T GTIA_P1PL +#define P2PL_T GTIA_P2PL +#define P3PL_T GTIA_P3PL +#define M0PL_T GTIA_M0PL +#define M1PL_T GTIA_M1PL +#define M2PL_T GTIA_M2PL +#define M3PL_T GTIA_M3PL +#endif /* NEW_CYCLE_EXACT */ + +static UBYTE *hposp_ptr[4]; +static UBYTE *hposm_ptr[4]; +static ULONG hposp_mask[4]; + +static ULONG grafp_lookup[4][256]; +static ULONG *grafp_ptr[4]; +static int global_sizem[4]; + +static const int PM_Width[4] = {1, 2, 1, 4}; + +/* Meaning of bits in GTIA_pm_scanline: +bit 0 - Player 0 +bit 1 - Player 1 +bit 2 - Player 2 +bit 3 - Player 3 +bit 4 - Missile 0 +bit 5 - Missile 1 +bit 6 - Missile 2 +bit 7 - Missile 3 +*/ + +UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +int GTIA_pm_dirty = TRUE; + +#define C_PM0 0x01 +#define C_PM1 0x02 +#define C_PM01 0x03 +#define C_PM2 0x04 +#define C_PM3 0x05 +#define C_PM23 0x06 +#define C_PM023 0x07 +#define C_PM123 0x08 +#define C_PM0123 0x09 +#define C_PM25 0x0a +#define C_PM35 0x0b +#define C_PM235 0x0c +#define C_COLLS 0x0d +#define C_BAK 0x00 +#define C_HI2 0x20 +#define C_HI3 0x30 +#define C_PF0 0x40 +#define C_PF1 0x50 +#define C_PF2 0x60 +#define C_PF3 0x70 + +#define PF0PM (*(UBYTE *) &ANTIC_cl[C_PF0 | C_COLLS]) +#define PF1PM (*(UBYTE *) &ANTIC_cl[C_PF1 | C_COLLS]) +#define PF2PM (*(UBYTE *) &ANTIC_cl[C_PF2 | C_COLLS]) +#define PF3PM (*(UBYTE *) &ANTIC_cl[C_PF3 | C_COLLS]) + +/* Colours ----------------------------------------------------------------- */ + +#ifdef USE_COLOUR_TRANSLATION_TABLE +UWORD colour_translation_table[256]; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +static void setup_gtia9_11(void) { + int i; +#ifdef USE_COLOUR_TRANSLATION_TABLE + UWORD temp; + temp = colour_translation_table[GTIA_COLBK & 0xf0]; + ANTIC_lookup_gtia11[0] = ((ULONG) temp << 16) + temp; + for (i = 1; i < 16; i++) { + temp = colour_translation_table[GTIA_COLBK | i]; + ANTIC_lookup_gtia9[i] = ((ULONG) temp << 16) + temp; + temp = colour_translation_table[GTIA_COLBK | (i << 4)]; + ANTIC_lookup_gtia11[i] = ((ULONG) temp << 16) + temp; + } +#else + ULONG count9 = 0; + ULONG count11 = 0; + ANTIC_lookup_gtia11[0] = ANTIC_lookup_gtia9[0] & 0xf0f0f0f0; + for (i = 1; i < 16; i++) { + ANTIC_lookup_gtia9[i] = ANTIC_lookup_gtia9[0] | (count9 += 0x01010101); + ANTIC_lookup_gtia11[i] = ANTIC_lookup_gtia9[0] | (count11 += 0x10101010); + } +#endif +} + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + +/* Initialization ---------------------------------------------------------- */ + +int GTIA_Initialise(void) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + int i; + for (i = 0; i < 256; i++) { + int tmp = i + 0x100; + ULONG grafp1 = 0; + ULONG grafp2 = 0; + ULONG grafp4 = 0; + do { + grafp1 <<= 1; + grafp2 <<= 2; + grafp4 <<= 4; + if (tmp & 1) { + grafp1++; + grafp2 += 3; + grafp4 += 15; + } + tmp >>= 1; + } while (tmp != 1); + grafp_lookup[2][i] = grafp_lookup[0][i] = grafp1; + grafp_lookup[1][i] = grafp2; + grafp_lookup[3][i] = grafp4; + } + memset(ANTIC_cl, GTIA_COLOUR_BLACK, sizeof(ANTIC_cl)); + for (i = 0; i < 32; i++) + GTIA_PutByte((UWORD) i, 0); +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + return TRUE; +} + +#ifdef NEW_CYCLE_EXACT + +/* generate updated PxPL and MxPL for part of a scanline */ +/* slow, but should be called rarely */ +static void generate_partial_pmpl_colls(int l, int r) +{ + int i; + if (r < 0 || l >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) + return; + if (r >= (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0])) { + r = (int) sizeof(GTIA_pm_scanline) / (int) sizeof(GTIA_pm_scanline[0]); + } + if (l < 0) + l = 0; + + for (i = l; i <= r; i++) { + UBYTE p = GTIA_pm_scanline[i]; +/* It is possible that some bits are set in PxPL/MxPL here, which would + * not otherwise be set ever in GTIA_NewPmScanline. This is because the + * player collisions are always generated in order in GTIA_NewPmScanline. + * However this does not cause any problem because we never use those bits + * of PxPL/MxPL in the collision reading code. + */ + GTIA_P1PL |= (p & (1 << 1)) ? p : 0; + GTIA_P2PL |= (p & (1 << 2)) ? p : 0; + GTIA_P3PL |= (p & (1 << 3)) ? p : 0; + GTIA_M0PL |= (p & (0x10 << 0)) ? p : 0; + GTIA_M1PL |= (p & (0x10 << 1)) ? p : 0; + GTIA_M2PL |= (p & (0x10 << 2)) ? p : 0; + GTIA_M3PL |= (p & (0x10 << 3)) ? p : 0; + } + +} + +/* update pm->pl collisions for a partial scanline */ +static void update_partial_pmpl_colls(void) +{ + int l = collision_curpos; + int r = ANTIC_XPOS * 2 - 37; + generate_partial_pmpl_colls(l, r); + collision_curpos = r; +} + +/* update pm-> pl collisions at the end of a scanline */ +void GTIA_UpdatePmplColls(void) +{ + if (hitclr_pos != 0){ + generate_partial_pmpl_colls(hitclr_pos, + sizeof(GTIA_pm_scanline) / sizeof(GTIA_pm_scanline[0]) - 1); +/* If hitclr was written to, then only part of GTIA_pm_scanline should be used + * for collisions */ + + } + else { +/* otherwise the whole of pm_scaline can be used for collisions. This will + * update the collision registers based on the generated collisions for the + * current line */ + GTIA_P1PL |= P1PL_T; + GTIA_P2PL |= P2PL_T; + GTIA_P3PL |= P3PL_T; + GTIA_M0PL |= M0PL_T; + GTIA_M1PL |= M1PL_T; + GTIA_M2PL |= M2PL_T; + GTIA_M3PL |= M3PL_T; + } + collision_curpos = 0; + hitclr_pos = 0; +} + +#else +#define update_partial_pmpl_colls() +#endif /* NEW_CYCLE_EXACT */ + +/* Prepare PMG scanline ---------------------------------------------------- */ + +#if !defined(BASIC) && !defined(CURSES_BASIC) + +void GTIA_NewPmScanline(void) +{ +#ifdef NEW_CYCLE_EXACT +/* reset temporary pm->pl collisions */ + P1PL_T = P2PL_T = P3PL_T = 0; + M0PL_T = M1PL_T = M2PL_T = M3PL_T = 0; +#endif /* NEW_CYCLE_EXACT */ +/* Clear if necessary */ + if (GTIA_pm_dirty) { + memset(GTIA_pm_scanline, 0, ATARI_WIDTH / 2); + GTIA_pm_dirty = FALSE; + } + +/* Draw Players */ + +#define DO_PLAYER(n) if (GTIA_GRAFP##n) { \ + ULONG grafp = grafp_ptr[n][GTIA_GRAFP##n] & hposp_mask[n]; \ + if (grafp) { \ + UBYTE *ptr = hposp_ptr[n]; \ + GTIA_pm_dirty = TRUE; \ + do { \ + if (grafp & 1) \ + P##n##PL_T |= *ptr |= 1 << n; \ + ptr++; \ + grafp >>= 1; \ + } while (grafp); \ + } \ +} + + /* optimized DO_PLAYER(0): GTIA_pm_scanline is clear and P0PL is unused */ + if (GTIA_GRAFP0) { + ULONG grafp = grafp_ptr[0][GTIA_GRAFP0] & hposp_mask[0]; + if (grafp) { + UBYTE *ptr = hposp_ptr[0]; + GTIA_pm_dirty = TRUE; + do { + if (grafp & 1) + *ptr = 1; + ptr++; + grafp >>= 1; + } while (grafp); + } + } + + DO_PLAYER(1) + DO_PLAYER(2) + DO_PLAYER(3) + +/* Draw Missiles */ + +#define DO_MISSILE(n,p,m,r,l) if (GTIA_GRAFM & m) { \ + int j = global_sizem[n]; \ + UBYTE *ptr = hposm_ptr[n]; \ + if (GTIA_GRAFM & r) { \ + if (GTIA_GRAFM & l) \ + j <<= 1; \ + } \ + else \ + ptr += j; \ + if (ptr < GTIA_pm_scanline + 2) { \ + j += ptr - GTIA_pm_scanline - 2; \ + ptr = GTIA_pm_scanline + 2; \ + } \ + else if (ptr + j > GTIA_pm_scanline + ATARI_WIDTH / 2 - 2) \ + j = GTIA_pm_scanline + ATARI_WIDTH / 2 - 2 - ptr; \ + if (j > 0) \ + do \ + M##n##PL_T |= *ptr++ |= p; \ + while (--j); \ +} + + if (GTIA_GRAFM) { + GTIA_pm_dirty = TRUE; + DO_MISSILE(3, 0x80, 0xc0, 0x80, 0x40) + DO_MISSILE(2, 0x40, 0x30, 0x20, 0x10) + DO_MISSILE(1, 0x20, 0x0c, 0x08, 0x04) + DO_MISSILE(0, 0x10, 0x03, 0x02, 0x01) + } +} + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + +/* GTIA registers ---------------------------------------------------------- */ + +void GTIA_Frame(void) +{ +#ifdef BASIC + consol = 0xf; +#else + consol = INPUT_key_consol | 0x08; +#endif + + if (GTIA_GRACTL & 4) { + GTIA_TRIG_latch[0] &= GTIA_TRIG[0]; + GTIA_TRIG_latch[1] &= GTIA_TRIG[1]; + GTIA_TRIG_latch[2] &= GTIA_TRIG[2]; + GTIA_TRIG_latch[3] &= GTIA_TRIG[3]; + } +} + +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects) +{ + switch (addr & 0x1f) { + case GTIA_OFFSET_M0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x10) >> 4) + + ((PF1PM & 0x10) >> 3) + + ((PF2PM & 0x10) >> 2) + + ((PF3PM & 0x10) >> 1)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x20) >> 5) + + ((PF1PM & 0x20) >> 4) + + ((PF2PM & 0x20) >> 3) + + ((PF3PM & 0x20) >> 2)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x40) >> 6) + + ((PF1PM & 0x40) >> 5) + + ((PF2PM & 0x40) >> 4) + + ((PF3PM & 0x40) >> 3)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_M3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x80) >> 7) + + ((PF1PM & 0x80) >> 6) + + ((PF2PM & 0x80) >> 5) + + ((PF3PM & 0x80) >> 4)) & GTIA_collisions_mask_missile_playfield; + case GTIA_OFFSET_P0PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return ((PF0PM & 0x01) + + ((PF1PM & 0x01) << 1) + + ((PF2PM & 0x01) << 2) + + ((PF3PM & 0x01) << 3)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P1PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x02) >> 1) + + (PF1PM & 0x02) + + ((PF2PM & 0x02) << 1) + + ((PF3PM & 0x02) << 2)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P2PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x04) >> 2) + + ((PF1PM & 0x04) >> 1) + + (PF2PM & 0x04) + + ((PF3PM & 0x04) << 1)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_P3PF: +#ifdef NEW_CYCLE_EXACT + if (ANTIC_DRAWING_SCREEN) { + ANTIC_UpdateScanline(); + } +#endif + return (((PF0PM & 0x08) >> 3) + + ((PF1PM & 0x08) >> 2) + + ((PF2PM & 0x08) >> 1) + + (PF3PM & 0x08)) & GTIA_collisions_mask_player_playfield; + case GTIA_OFFSET_M0PL: + update_partial_pmpl_colls(); + return GTIA_M0PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M1PL: + update_partial_pmpl_colls(); + return GTIA_M1PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M2PL: + update_partial_pmpl_colls(); + return GTIA_M2PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_M3PL: + update_partial_pmpl_colls(); + return GTIA_M3PL & GTIA_collisions_mask_missile_player; + case GTIA_OFFSET_P0PL: + update_partial_pmpl_colls(); + return (((GTIA_P1PL & 0x01) << 1) /* mask in player 1 */ + + ((GTIA_P2PL & 0x01) << 2) /* mask in player 2 */ + + ((GTIA_P3PL & 0x01) << 3)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P1PL: + update_partial_pmpl_colls(); + return ((GTIA_P1PL & 0x01) /* mask in player 0 */ + + ((GTIA_P2PL & 0x02) << 1) /* mask in player 2 */ + + ((GTIA_P3PL & 0x02) << 2)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P2PL: + update_partial_pmpl_colls(); + return ((GTIA_P2PL & 0x03) /* mask in player 0 and 1 */ + + ((GTIA_P3PL & 0x04) << 1)) /* mask in player 3 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_P3PL: + update_partial_pmpl_colls(); + return (GTIA_P3PL & 0x07) /* mask in player 0,1, and 2 */ + & GTIA_collisions_mask_player_player; + case GTIA_OFFSET_TRIG0: + return GTIA_TRIG[0] & GTIA_TRIG_latch[0]; + case GTIA_OFFSET_TRIG1: + return GTIA_TRIG[1] & GTIA_TRIG_latch[1]; + case GTIA_OFFSET_TRIG2: + return GTIA_TRIG[2] & GTIA_TRIG_latch[2]; + case GTIA_OFFSET_TRIG3: + return GTIA_TRIG[3] & GTIA_TRIG_latch[3]; + case GTIA_OFFSET_PAL: + return (tv_mode == TV_PAL) ? 0x01 : 0x0f; + case GTIA_OFFSET_CONSOL: + { + UBYTE byte = consol & consol_mask; +#if SKIP + if (!no_side_effects && GTIA_consol_override > 0) { + /* Check if we're called from outside OS. This avoids sending + console keystrokes to diagnostic cartridges. */ + if (CPU_regPC < 0xc000) + /* Not from OS. Disable console override. */ + GTIA_consol_override = 0; + else { + --GTIA_consol_override; + if (Atari800_builtin_basic && Atari800_disable_basic && !BINLOAD_loading_basic) + /* Only for XL/XE - hold Option during reboot. */ + byte &= ~INPUT_CONSOL_OPTION; + if (CASSETTE_hold_start && Atari800_machine_type != Atari800_MACHINE_5200) { + /* Only for the computers - hold Start during reboot. */ + byte &= ~INPUT_CONSOL_START; + if (GTIA_consol_override == 0) { + /* press Space after Start to start cassette boot. */ + CASSETTE_press_space = 1; + CASSETTE_hold_start = CASSETTE_hold_start_on_reboot; + } + } + } + } +#endif + return byte; + } + default: + break; + } + + return 0xf; +} + +void GTIA_PutByte(UWORD addr, UBYTE byte) +{ +#if !defined(BASIC) && !defined(CURSES_BASIC) + UWORD cword; + UWORD cword2; + +#ifdef NEW_CYCLE_EXACT + int x; /* the cycle-exact update position in GTIA_pm_scanline */ + if (ANTIC_DRAWING_SCREEN) { + if ((addr & 0x1f) != GTIA_PRIOR) { + ANTIC_UpdateScanline(); + } else { + ANTIC_UpdateScanlinePrior(byte); + } + } +#define UPDATE_PM_CYCLE_EXACT if(ANTIC_DRAWING_SCREEN) GTIA_NewPmScanline(); +#else +#define UPDATE_PM_CYCLE_EXACT +#endif + +#endif /* !defined(BASIC) && !defined(CURSES_BASIC) */ + + switch (addr & 0x1f) { + case GTIA_OFFSET_CONSOL: + GTIA_speaker = !(byte & 0x08); +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(1); +#endif + consol_mask = (~byte) & 0x0f; + break; + +#if defined(BASIC) || defined(CURSES_BASIC) + + /* We use these for Antic modes 6, 7 on Curses */ + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte; + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte; + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte; + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte; + break; + +#else + +#ifdef USE_COLOUR_TRANSLATION_TABLE + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + ANTIC_cl[C_BAK] = cword = colour_translation_table[byte]; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + ANTIC_cl[C_PF0] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + ANTIC_cl[C_PF1] = cword = GTIA_colour_translation_table[byte]; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else { + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPM0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPM1]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte | GTIA_COLPM0 | GTIA_COLPM1]; + } + } + } + { + UBYTE byte2 = (GTIA_COLPF2 & 0xf0) + (byte & 0xf); + ANTIC_cl[C_HI2] = cword = colour_translation_table[byte2]; + ANTIC_cl[C_HI3] = colour_translation_table[(GTIA_COLPF3 & 0xf0) | (byte & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword; + else { + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + ANTIC_cl[C_PF2] = cword = GTIA_colour_translation_table[byte]; + { + UBYTE byte2 = (byte & 0xf0) + (GTIA_COLPF1 & 0xf); + ANTIC_cl[C_HI2] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 4) { + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + ANTIC_cl[C_HI2 | C_PM01] = ANTIC_cl[C_HI2 | C_PM1] = ANTIC_cl[C_HI2 | C_PM0] = cword2; + } + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + ANTIC_cl[C_HI2 | C_PM23] = ANTIC_cl[C_HI2 | C_PM3] = ANTIC_cl[C_HI2 | C_PM2] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[byte2 | (GTIA_COLPM2 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[byte2 | (GTIA_COLPM3 & 0xf0)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[byte2 | ((GTIA_COLPM2 | GTIA_COLPM3) & 0xf0)]; + } + } + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + ANTIC_cl[C_PF3] = cword = colour_translation_table[byte]; + ANTIC_cl[C_HI3] = cword2 = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte | GTIA_COLPM2 | GTIA_COLPM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM1; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM0] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM0] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM0; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = colour_translation_table[byte2]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + ANTIC_cl[C_HI2 | C_PM1] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM01] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = colour_translation_table[byte | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM1] = colour_translation_table[byte | GTIA_COLPF1]; + ANTIC_cl[C_PF0 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF0]; + ANTIC_cl[C_PF1 | C_PM01] = colour_translation_table[byte2 | GTIA_COLPF1]; + } + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + ANTIC_cl[C_PM2] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM3; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[(byte & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[(byte2 & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM2] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM25] = colour_translation_table[((byte | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM235] = colour_translation_table[((byte2 | GTIA_COLPF3) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + ANTIC_cl[C_PM3] = cword = colour_translation_table[byte]; + { + UBYTE byte2 = byte | GTIA_COLPM2; + ANTIC_cl[C_PM23] = cword2 = colour_translation_table[byte2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = colour_translation_table[byte | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = colour_translation_table[byte | GTIA_COLPF3]; + ANTIC_cl[C_PF2 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = colour_translation_table[byte2 | GTIA_COLPF3]; + ANTIC_cl[C_HI2 | C_PM3] = colour_translation_table[((byte | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + ANTIC_cl[C_HI2 | C_PM23] = colour_translation_table[((byte2 | GTIA_COLPF2) & 0xf0) | (GTIA_COLPF1 & 0xf)]; + } + } + } + break; +#else /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_COLBK: + GTIA_COLBK = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_BAK] = cword; + if (cword != (UWORD) (ANTIC_lookup_gtia9[0]) ) { + ANTIC_lookup_gtia9[0] = cword + (cword << 16); + if (GTIA_PRIOR & 0x40) + setup_gtia9_11(); + } + break; + case GTIA_OFFSET_COLPF0: + GTIA_COLPF0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF0] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF0 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF0 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF0 | C_PM0123] = ANTIC_cl[C_PF0 | C_PM123] = ANTIC_cl[C_PF0 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF0 | C_PM01] = (ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + if ((GTIA_PRIOR & 0xf) >= 0xa) + ANTIC_cl[C_PF0 | C_PM25] = cword; + } + break; + case GTIA_OFFSET_COLPF1: + GTIA_COLPF1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF1] = cword; + if ((GTIA_PRIOR & 1) == 0) { + ANTIC_cl[C_PF1 | C_PM23] = ANTIC_cl[C_PF1 | C_PM3] = ANTIC_cl[C_PF1 | C_PM2] = cword; + if ((GTIA_PRIOR & 3) == 0) { + if (GTIA_PRIOR & 0xf) { + ANTIC_cl[C_PF1 | C_PM01] = ANTIC_cl[C_PF1 | C_PM1] = ANTIC_cl[C_PF1 | C_PM0] = cword; + if ((GTIA_PRIOR & 0xf) == 0xc) + ANTIC_cl[C_PF1 | C_PM0123] = ANTIC_cl[C_PF1 | C_PM123] = ANTIC_cl[C_PF1 | C_PM023] = cword; + } + else + ANTIC_cl[C_PF1 | C_PM01] = (ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PM0]) | (ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PM1]); + } + } + ((UBYTE *)ANTIC_hires_lookup_l)[0x80] = ((UBYTE *)ANTIC_hires_lookup_l)[0x41] = (UBYTE) + (ANTIC_hires_lookup_l[0x60] = cword & 0xf0f); + break; + case GTIA_OFFSET_COLPF2: + GTIA_COLPF2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF2] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF2 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF2 | C_PM2] = cword; + else + ANTIC_cl[C_PF2 | C_PM23] = (ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PM2]) | (ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PM3]); + } + break; + case GTIA_OFFSET_COLPF3: + GTIA_COLPF3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PF3] = cword; + if (GTIA_PRIOR & 4) + ANTIC_cl[C_PF3 | C_PM01] = ANTIC_cl[C_PF3 | C_PM1] = ANTIC_cl[C_PF3 | C_PM0] = cword; + if ((GTIA_PRIOR & 9) == 0) { + if (GTIA_PRIOR & 0xf) + ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM3] = ANTIC_cl[C_PF3 | C_PM2] = cword; + else { + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PM2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PM3]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = ANTIC_cl[C_PF3 | C_PM2] | ANTIC_cl[C_PF3 | C_PM3]; + ANTIC_cl[C_PF0 | C_PM235] = ANTIC_cl[C_PF0 | C_PM35] = ANTIC_cl[C_PF0 | C_PM25] = + ANTIC_cl[C_PF1 | C_PM235] = ANTIC_cl[C_PF1 | C_PM35] = ANTIC_cl[C_PF1 | C_PM25] = cword; + } + } + break; + case GTIA_OFFSET_COLPM0: + GTIA_COLPM0 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM023] = ANTIC_cl[C_PM0] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM1]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM0] = ANTIC_cl[C_PF3 | C_PM0] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM0] = ANTIC_cl[C_PF1 | C_PM0] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM0] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM0] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM1: + GTIA_COLPM1 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM123] = ANTIC_cl[C_PM1] = cword; + ANTIC_cl[C_PM0123] = ANTIC_cl[C_PM01] = cword2 = cword | ANTIC_cl[C_PM0]; + if ((GTIA_PRIOR & 4) == 0) { + ANTIC_cl[C_PF2 | C_PM1] = ANTIC_cl[C_PF3 | C_PM1] = cword; + ANTIC_cl[C_PF2 | C_PM01] = ANTIC_cl[C_PF3 | C_PM01] = cword2; + if ((GTIA_PRIOR & 0xc) == 0) { + if (GTIA_PRIOR & 3) { + ANTIC_cl[C_PF0 | C_PM1] = ANTIC_cl[C_PF1 | C_PM1] = cword; + ANTIC_cl[C_PF0 | C_PM01] = ANTIC_cl[C_PF1 | C_PM01] = cword2; + } + else { + ANTIC_cl[C_PF0 | C_PM1] = cword | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM1] = cword | ANTIC_cl[C_PF1]; + ANTIC_cl[C_PF0 | C_PM01] = cword2 | ANTIC_cl[C_PF0]; + ANTIC_cl[C_PF1 | C_PM01] = cword2 | ANTIC_cl[C_PF1]; + } + } + } + break; + case GTIA_OFFSET_COLPM2: + GTIA_COLPM2 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM2] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM3]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM2] = ANTIC_cl[C_PF1 | C_PM2] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM2] = ANTIC_cl[C_PF3 | C_PM2] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM2] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM25] = ANTIC_cl[C_PF2 | C_PM25] = ANTIC_cl[C_PM25] = ANTIC_cl[C_PF3 | C_PM2] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; + case GTIA_OFFSET_COLPM3: + GTIA_COLPM3 = byte &= 0xfe; + GTIA_COLOUR_TO_WORD(cword,byte); + ANTIC_cl[C_PM3] = cword; + ANTIC_cl[C_PM23] = cword2 = cword | ANTIC_cl[C_PM2]; + if (GTIA_PRIOR & 1) { + ANTIC_cl[C_PF0 | C_PM3] = ANTIC_cl[C_PF1 | C_PM3] = cword; + ANTIC_cl[C_PF0 | C_PM23] = ANTIC_cl[C_PF1 | C_PM23] = cword2; + } + if ((GTIA_PRIOR & 6) == 0) { + if (GTIA_PRIOR & 9) { + ANTIC_cl[C_PF2 | C_PM3] = ANTIC_cl[C_PF3 | C_PM3] = cword; + ANTIC_cl[C_PF2 | C_PM23] = ANTIC_cl[C_PF3 | C_PM23] = cword2; + } + else { + ANTIC_cl[C_PF2 | C_PM3] = cword | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM35] = ANTIC_cl[C_PF2 | C_PM35] = ANTIC_cl[C_PM35] = ANTIC_cl[C_PF3 | C_PM3] = cword | ANTIC_cl[C_PF3]; + ANTIC_cl[C_PF2 | C_PM23] = cword2 | ANTIC_cl[C_PF2]; + ANTIC_cl[C_PF3 | C_PM235] = ANTIC_cl[C_PF2 | C_PM235] = ANTIC_cl[C_PM235] = ANTIC_cl[C_PF3 | C_PM23] = cword2 | ANTIC_cl[C_PF3]; + } + } + break; +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + case GTIA_OFFSET_GRAFM: + GTIA_GRAFM = byte; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_GRAFP(n) x = ANTIC_XPOS * 2 - 3;\ + if (GTIA_HPOSP##n >= x) {\ + /* hpos right of x */\ + /* redraw */ \ + UPDATE_PM_CYCLE_EXACT\ + } +#else +#define CYCLE_EXACT_GRAFP(n) +#endif /* NEW_CYCLE_EXACT */ + +#define DO_GRAFP(n) case GTIA_OFFSET_GRAFP##n:\ + GTIA_GRAFP##n = byte;\ + CYCLE_EXACT_GRAFP(n);\ + break; + + DO_GRAFP(0) + DO_GRAFP(1) + DO_GRAFP(2) + DO_GRAFP(3) + + case GTIA_OFFSET_HITCLR: + GTIA_M0PL = GTIA_M1PL = GTIA_M2PL = GTIA_M3PL = 0; + GTIA_P0PL = GTIA_P1PL = GTIA_P2PL = GTIA_P3PL = 0; + PF0PM = PF1PM = PF2PM = PF3PM = 0; +#ifdef NEW_CYCLE_EXACT + hitclr_pos = ANTIC_XPOS * 2 - 37; + collision_curpos = hitclr_pos; +#endif + break; +/* TODO: cycle-exact missile HPOS, GRAF, SIZE */ +/* this is only an approximation */ + case GTIA_OFFSET_HPOSM0: + GTIA_HPOSM0 = byte; + hposm_ptr[0] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM1: + GTIA_HPOSM1 = byte; + hposm_ptr[1] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM2: + GTIA_HPOSM2 = byte; + hposm_ptr[2] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_HPOSM3: + GTIA_HPOSM3 = byte; + hposm_ptr[3] = GTIA_pm_scanline + byte - 0x20; + UPDATE_PM_CYCLE_EXACT + break; + +#ifdef NEW_CYCLE_EXACT +#define CYCLE_EXACT_HPOSP(n) x = ANTIC_XPOS * 2 - 1;\ + if (GTIA_HPOSP##n < x && byte < x) {\ + /* case 1: both left of x */\ + /* do nothing */\ + }\ + else if (GTIA_HPOSP##n >= x && byte >= x ) {\ + /* case 2: both right of x */\ + /* redraw, clearing first */\ + UPDATE_PM_CYCLE_EXACT\ + }\ + else if (GTIA_HPOSP##n = x) {\ + /* case 3: new value is right, old value is left */\ + /* redraw without clearing first */\ + /* note: a hack, we can get away with it unless another change occurs */\ + /* before the original copy that wasn't erased due to changing */\ + /* GTIA_pm_dirty is drawn */\ + GTIA_pm_dirty = FALSE;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_pm_dirty = TRUE; /* can't trust that it was reset correctly */\ + }\ + else {\ + /* case 4: new value is left, old value is right */\ + /* remove old player and don't draw the new one */\ + UBYTE save_graf = GTIA_GRAFP##n;\ + GTIA_GRAFP##n = 0;\ + UPDATE_PM_CYCLE_EXACT\ + GTIA_GRAFP##n = save_graf;\ + } +#else +#define CYCLE_EXACT_HPOSP(n) +#endif /* NEW_CYCLE_EXACT */ +#define DO_HPOSP(n) case GTIA_OFFSET_HPOSP##n: \ + hposp_ptr[n] = GTIA_pm_scanline + byte - 0x20; \ + if (byte >= 0x22) { \ + if (byte > 0xbe) { \ + if (byte >= 0xde) \ + hposp_mask[n] = 0; \ + else \ + hposp_mask[n] = 0xffffffff >> (byte - 0xbe); \ + } \ + else \ + hposp_mask[n] = 0xffffffff; \ + } \ + else if (byte > 2) \ + hposp_mask[n] = 0xffffffff << (0x22 - byte); \ + else \ + hposp_mask[n] = 0; \ + CYCLE_EXACT_HPOSP(n)\ + GTIA_HPOSP##n = byte; \ + break; + + DO_HPOSP(0) + DO_HPOSP(1) + DO_HPOSP(2) + DO_HPOSP(3) + +/* TODO: cycle-exact size changes */ +/* this is only an approximation */ + case GTIA_OFFSET_SIZEM: + GTIA_SIZEM = byte; + global_sizem[0] = PM_Width[byte & 0x03]; + global_sizem[1] = PM_Width[(byte & 0x0c) >> 2]; + global_sizem[2] = PM_Width[(byte & 0x30) >> 4]; + global_sizem[3] = PM_Width[(byte & 0xc0) >> 6]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP0: + GTIA_SIZEP0 = byte; + grafp_ptr[0] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP1: + GTIA_SIZEP1 = byte; + grafp_ptr[1] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP2: + GTIA_SIZEP2 = byte; + grafp_ptr[2] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_SIZEP3: + GTIA_SIZEP3 = byte; + grafp_ptr[3] = grafp_lookup[byte & 3]; + UPDATE_PM_CYCLE_EXACT + break; + case GTIA_OFFSET_PRIOR: + ANTIC_SetPrior(byte); + GTIA_PRIOR = byte; + if (byte & 0x40) + setup_gtia9_11(); + break; + case GTIA_OFFSET_VDELAY: + GTIA_VDELAY = byte; + break; + case GTIA_OFFSET_GRACTL: + GTIA_GRACTL = byte; + ANTIC_missile_gra_enabled = (byte & 0x01); + ANTIC_player_gra_enabled = (byte & 0x02); + ANTIC_player_flickering = ((ANTIC_player_dma_enabled | ANTIC_player_gra_enabled) == 0x02); + ANTIC_missile_flickering = ((ANTIC_missile_dma_enabled | ANTIC_missile_gra_enabled) == 0x01); + if ((byte & 4) == 0) + GTIA_TRIG_latch[0] = GTIA_TRIG_latch[1] = GTIA_TRIG_latch[2] = GTIA_TRIG_latch[3] = 1; + break; + +#endif /* defined(BASIC) || defined(CURSES_BASIC) */ + } +} + +/* State ------------------------------------------------------------------- */ + +#ifndef BASIC + +void GTIA_StateSave(void) +{ + int next_console_value = 7; + + StateSav_SaveUBYTE(>IA_HPOSP0, 1); + StateSav_SaveUBYTE(>IA_HPOSP1, 1); + StateSav_SaveUBYTE(>IA_HPOSP2, 1); + StateSav_SaveUBYTE(>IA_HPOSP3, 1); + StateSav_SaveUBYTE(>IA_HPOSM0, 1); + StateSav_SaveUBYTE(>IA_HPOSM1, 1); + StateSav_SaveUBYTE(>IA_HPOSM2, 1); + StateSav_SaveUBYTE(>IA_HPOSM3, 1); + StateSav_SaveUBYTE(&PF0PM, 1); + StateSav_SaveUBYTE(&PF1PM, 1); + StateSav_SaveUBYTE(&PF2PM, 1); + StateSav_SaveUBYTE(&PF3PM, 1); + StateSav_SaveUBYTE(>IA_M0PL, 1); + StateSav_SaveUBYTE(>IA_M1PL, 1); + StateSav_SaveUBYTE(>IA_M2PL, 1); + StateSav_SaveUBYTE(>IA_M3PL, 1); + StateSav_SaveUBYTE(>IA_P0PL, 1); + StateSav_SaveUBYTE(>IA_P1PL, 1); + StateSav_SaveUBYTE(>IA_P2PL, 1); + StateSav_SaveUBYTE(>IA_P3PL, 1); + StateSav_SaveUBYTE(>IA_SIZEP0, 1); + StateSav_SaveUBYTE(>IA_SIZEP1, 1); + StateSav_SaveUBYTE(>IA_SIZEP2, 1); + StateSav_SaveUBYTE(>IA_SIZEP3, 1); + StateSav_SaveUBYTE(>IA_SIZEM, 1); + StateSav_SaveUBYTE(>IA_GRAFP0, 1); + StateSav_SaveUBYTE(>IA_GRAFP1, 1); + StateSav_SaveUBYTE(>IA_GRAFP2, 1); + StateSav_SaveUBYTE(>IA_GRAFP3, 1); + StateSav_SaveUBYTE(>IA_GRAFM, 1); + StateSav_SaveUBYTE(>IA_COLPM0, 1); + StateSav_SaveUBYTE(>IA_COLPM1, 1); + StateSav_SaveUBYTE(>IA_COLPM2, 1); + StateSav_SaveUBYTE(>IA_COLPM3, 1); + StateSav_SaveUBYTE(>IA_COLPF0, 1); + StateSav_SaveUBYTE(>IA_COLPF1, 1); + StateSav_SaveUBYTE(>IA_COLPF2, 1); + StateSav_SaveUBYTE(>IA_COLPF3, 1); + StateSav_SaveUBYTE(>IA_COLBK, 1); + StateSav_SaveUBYTE(>IA_PRIOR, 1); + StateSav_SaveUBYTE(>IA_VDELAY, 1); + StateSav_SaveUBYTE(>IA_GRACTL, 1); + + StateSav_SaveUBYTE(&consol_mask, 1); + StateSav_SaveINT(>IA_speaker, 1); + StateSav_SaveINT(&next_console_value, 1); + StateSav_SaveUBYTE(GTIA_TRIG_latch, 4); +} + +void GTIA_StateRead(UBYTE version) +{ + int next_console_value; /* ignored */ + + StateSav_ReadUBYTE(>IA_HPOSP0, 1); + StateSav_ReadUBYTE(>IA_HPOSP1, 1); + StateSav_ReadUBYTE(>IA_HPOSP2, 1); + StateSav_ReadUBYTE(>IA_HPOSP3, 1); + StateSav_ReadUBYTE(>IA_HPOSM0, 1); + StateSav_ReadUBYTE(>IA_HPOSM1, 1); + StateSav_ReadUBYTE(>IA_HPOSM2, 1); + StateSav_ReadUBYTE(>IA_HPOSM3, 1); + StateSav_ReadUBYTE(&PF0PM, 1); + StateSav_ReadUBYTE(&PF1PM, 1); + StateSav_ReadUBYTE(&PF2PM, 1); + StateSav_ReadUBYTE(&PF3PM, 1); + StateSav_ReadUBYTE(>IA_M0PL, 1); + StateSav_ReadUBYTE(>IA_M1PL, 1); + StateSav_ReadUBYTE(>IA_M2PL, 1); + StateSav_ReadUBYTE(>IA_M3PL, 1); + StateSav_ReadUBYTE(>IA_P0PL, 1); + StateSav_ReadUBYTE(>IA_P1PL, 1); + StateSav_ReadUBYTE(>IA_P2PL, 1); + StateSav_ReadUBYTE(>IA_P3PL, 1); + StateSav_ReadUBYTE(>IA_SIZEP0, 1); + StateSav_ReadUBYTE(>IA_SIZEP1, 1); + StateSav_ReadUBYTE(>IA_SIZEP2, 1); + StateSav_ReadUBYTE(>IA_SIZEP3, 1); + StateSav_ReadUBYTE(>IA_SIZEM, 1); + StateSav_ReadUBYTE(>IA_GRAFP0, 1); + StateSav_ReadUBYTE(>IA_GRAFP1, 1); + StateSav_ReadUBYTE(>IA_GRAFP2, 1); + StateSav_ReadUBYTE(>IA_GRAFP3, 1); + StateSav_ReadUBYTE(>IA_GRAFM, 1); + StateSav_ReadUBYTE(>IA_COLPM0, 1); + StateSav_ReadUBYTE(>IA_COLPM1, 1); + StateSav_ReadUBYTE(>IA_COLPM2, 1); + StateSav_ReadUBYTE(>IA_COLPM3, 1); + StateSav_ReadUBYTE(>IA_COLPF0, 1); + StateSav_ReadUBYTE(>IA_COLPF1, 1); + StateSav_ReadUBYTE(>IA_COLPF2, 1); + StateSav_ReadUBYTE(>IA_COLPF3, 1); + StateSav_ReadUBYTE(>IA_COLBK, 1); + StateSav_ReadUBYTE(>IA_PRIOR, 1); + StateSav_ReadUBYTE(>IA_VDELAY, 1); + StateSav_ReadUBYTE(>IA_GRACTL, 1); + + StateSav_ReadUBYTE(&consol_mask, 1); + StateSav_ReadINT(>IA_speaker, 1); + StateSav_ReadINT(&next_console_value, 1); + if (version >= 7) + StateSav_ReadUBYTE(GTIA_TRIG_latch, 4); + + GTIA_PutByte(GTIA_OFFSET_HPOSP0, GTIA_HPOSP0); + GTIA_PutByte(GTIA_OFFSET_HPOSP1, GTIA_HPOSP1); + GTIA_PutByte(GTIA_OFFSET_HPOSP2, GTIA_HPOSP2); + GTIA_PutByte(GTIA_OFFSET_HPOSP3, GTIA_HPOSP3); + GTIA_PutByte(GTIA_OFFSET_HPOSM0, GTIA_HPOSM0); + GTIA_PutByte(GTIA_OFFSET_HPOSM1, GTIA_HPOSM1); + GTIA_PutByte(GTIA_OFFSET_HPOSM2, GTIA_HPOSM2); + GTIA_PutByte(GTIA_OFFSET_HPOSM3, GTIA_HPOSM3); + GTIA_PutByte(GTIA_OFFSET_SIZEP0, GTIA_SIZEP0); + GTIA_PutByte(GTIA_OFFSET_SIZEP1, GTIA_SIZEP1); + GTIA_PutByte(GTIA_OFFSET_SIZEP2, GTIA_SIZEP2); + GTIA_PutByte(GTIA_OFFSET_SIZEP3, GTIA_SIZEP3); + GTIA_PutByte(GTIA_OFFSET_SIZEM, GTIA_SIZEM); + GTIA_PutByte(GTIA_OFFSET_GRAFP0, GTIA_GRAFP0); + GTIA_PutByte(GTIA_OFFSET_GRAFP1, GTIA_GRAFP1); + GTIA_PutByte(GTIA_OFFSET_GRAFP2, GTIA_GRAFP2); + GTIA_PutByte(GTIA_OFFSET_GRAFP3, GTIA_GRAFP3); + GTIA_PutByte(GTIA_OFFSET_GRAFM, GTIA_GRAFM); + GTIA_PutByte(GTIA_OFFSET_COLPM0, GTIA_COLPM0); + GTIA_PutByte(GTIA_OFFSET_COLPM1, GTIA_COLPM1); + GTIA_PutByte(GTIA_OFFSET_COLPM2, GTIA_COLPM2); + GTIA_PutByte(GTIA_OFFSET_COLPM3, GTIA_COLPM3); + GTIA_PutByte(GTIA_OFFSET_COLPF0, GTIA_COLPF0); + GTIA_PutByte(GTIA_OFFSET_COLPF1, GTIA_COLPF1); + GTIA_PutByte(GTIA_OFFSET_COLPF2, GTIA_COLPF2); + GTIA_PutByte(GTIA_OFFSET_COLPF3, GTIA_COLPF3); + GTIA_PutByte(GTIA_OFFSET_COLBK, GTIA_COLBK); + GTIA_PutByte(GTIA_OFFSET_PRIOR, GTIA_PRIOR); + GTIA_PutByte(GTIA_OFFSET_GRACTL, GTIA_GRACTL); +} + +#endif /* BASIC */ diff --git a/MCUME_teensy/teensy800/gtia.h b/MCUME_teensy/teensy800/gtia.h new file mode 100644 index 0000000..865c4ae --- /dev/null +++ b/MCUME_teensy/teensy800/gtia.h @@ -0,0 +1,136 @@ +#ifndef GTIA_H_ +#define GTIA_H_ + + +#define GTIA_OFFSET_HPOSP0 0x00 +#define GTIA_OFFSET_M0PF 0x00 +#define GTIA_OFFSET_HPOSP1 0x01 +#define GTIA_OFFSET_M1PF 0x01 +#define GTIA_OFFSET_HPOSP2 0x02 +#define GTIA_OFFSET_M2PF 0x02 +#define GTIA_OFFSET_HPOSP3 0x03 +#define GTIA_OFFSET_M3PF 0x03 +#define GTIA_OFFSET_HPOSM0 0x04 +#define GTIA_OFFSET_P0PF 0x04 +#define GTIA_OFFSET_HPOSM1 0x05 +#define GTIA_OFFSET_P1PF 0x05 +#define GTIA_OFFSET_HPOSM2 0x06 +#define GTIA_OFFSET_P2PF 0x06 +#define GTIA_OFFSET_HPOSM3 0x07 +#define GTIA_OFFSET_P3PF 0x07 +#define GTIA_OFFSET_SIZEP0 0x08 +#define GTIA_OFFSET_M0PL 0x08 +#define GTIA_OFFSET_SIZEP1 0x09 +#define GTIA_OFFSET_M1PL 0x09 +#define GTIA_OFFSET_SIZEP2 0x0a +#define GTIA_OFFSET_M2PL 0x0a +#define GTIA_OFFSET_SIZEP3 0x0b +#define GTIA_OFFSET_M3PL 0x0b +#define GTIA_OFFSET_SIZEM 0x0c +#define GTIA_OFFSET_P0PL 0x0c +#define GTIA_OFFSET_GRAFP0 0x0d +#define GTIA_OFFSET_P1PL 0x0d +#define GTIA_OFFSET_GRAFP1 0x0e +#define GTIA_OFFSET_P2PL 0x0e +#define GTIA_OFFSET_GRAFP2 0x0f +#define GTIA_OFFSET_P3PL 0x0f +#define GTIA_OFFSET_GRAFP3 0x10 +#define GTIA_OFFSET_TRIG0 0x10 +#define GTIA_OFFSET_GRAFM 0x11 +#define GTIA_OFFSET_TRIG1 0x11 +#define GTIA_OFFSET_COLPM0 0x12 +#define GTIA_OFFSET_TRIG2 0x12 +#define GTIA_OFFSET_COLPM1 0x13 +#define GTIA_OFFSET_TRIG3 0x13 +#define GTIA_OFFSET_COLPM2 0x14 +#define GTIA_OFFSET_PAL 0x14 +#define GTIA_OFFSET_COLPM3 0x15 +#define GTIA_OFFSET_COLPF0 0x16 +#define GTIA_OFFSET_COLPF1 0x17 +#define GTIA_OFFSET_COLPF2 0x18 +#define GTIA_OFFSET_COLPF3 0x19 +#define GTIA_OFFSET_COLBK 0x1a +#define GTIA_OFFSET_PRIOR 0x1b +#define GTIA_OFFSET_VDELAY 0x1c +#define GTIA_OFFSET_GRACTL 0x1d +#define GTIA_OFFSET_HITCLR 0x1e +#define GTIA_OFFSET_CONSOL 0x1f + +extern UBYTE GTIA_GRAFM; +extern UBYTE GTIA_GRAFP0; +extern UBYTE GTIA_GRAFP1; +extern UBYTE GTIA_GRAFP2; +extern UBYTE GTIA_GRAFP3; +extern UBYTE GTIA_HPOSP0; +extern UBYTE GTIA_HPOSP1; +extern UBYTE GTIA_HPOSP2; +extern UBYTE GTIA_HPOSP3; +extern UBYTE GTIA_HPOSM0; +extern UBYTE GTIA_HPOSM1; +extern UBYTE GTIA_HPOSM2; +extern UBYTE GTIA_HPOSM3; +extern UBYTE GTIA_SIZEP0; +extern UBYTE GTIA_SIZEP1; +extern UBYTE GTIA_SIZEP2; +extern UBYTE GTIA_SIZEP3; +extern UBYTE GTIA_SIZEM; +extern UBYTE GTIA_COLPM0; +extern UBYTE GTIA_COLPM1; +extern UBYTE GTIA_COLPM2; +extern UBYTE GTIA_COLPM3; +extern UBYTE GTIA_COLPF0; +extern UBYTE GTIA_COLPF1; +extern UBYTE GTIA_COLPF2; +extern UBYTE GTIA_COLPF3; +extern UBYTE GTIA_COLBK; +extern UBYTE GTIA_GRACTL; +extern UBYTE GTIA_M0PL; +extern UBYTE GTIA_M1PL; +extern UBYTE GTIA_M2PL; +extern UBYTE GTIA_M3PL; +extern UBYTE GTIA_P0PL; +extern UBYTE GTIA_P1PL; +extern UBYTE GTIA_P2PL; +extern UBYTE GTIA_P3PL; +extern UBYTE GTIA_PRIOR; +extern UBYTE GTIA_VDELAY; + +#ifdef USE_COLOUR_TRANSLATION_TABLE + +extern UWORD GTIA_colour_translation_table[256]; +#define GTIA_COLOUR_BLACK GTIA_colour_translation_table[0] +#define GTIA_COLOUR_TO_WORD(dest,src) dest = GTIA_colour_translation_table[src]; + +#else + +#define GTIA_COLOUR_BLACK 0 +#define GTIA_COLOUR_TO_WORD(dest,src) dest = (((UWORD) (src)) << 8) | (src); + +#endif /* USE_COLOUR_TRANSLATION_TABLE */ + +extern UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */ +extern int GTIA_pm_dirty; + +extern UBYTE GTIA_collisions_mask_missile_playfield; +extern UBYTE GTIA_collisions_mask_player_playfield; +extern UBYTE GTIA_collisions_mask_missile_player; +extern UBYTE GTIA_collisions_mask_player_player; + +extern UBYTE GTIA_TRIG[4]; +extern UBYTE GTIA_TRIG_latch[4]; + +extern int GTIA_consol_override; +extern int GTIA_speaker; + +int GTIA_Initialise(void); +void GTIA_Frame(void); +void GTIA_NewPmScanline(void); +UBYTE GTIA_GetByte(UWORD addr, int no_side_effects); +void GTIA_PutByte(UWORD addr, UBYTE byte); +void GTIA_StateSave(void); +void GTIA_StateRead(UBYTE version); + +#ifdef NEW_CYCLE_EXACT +void GTIA_UpdatePmplColls(void); +#endif +#endif /* GTIA_H_ */ diff --git a/MCUME_teensy/teensy800/iopins.h b/MCUME_teensy/teensy800/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensy800/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensy800/keyboard_osd.h b/MCUME_teensy/teensy800/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensy800/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensy800/logo.h b/MCUME_teensy/teensy800/logo.h new file mode 100644 index 0000000..487629d --- /dev/null +++ b/MCUME_teensy/teensy800/logo.h @@ -0,0 +1,125 @@ +const uint16_t PROGMEM logo[] = { +0x0140,0x007c,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2965,0x2965,0x2985,0x2985,0x2985,0x2165,0x2144,0x2164,0x2965,0x2965,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x1924,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2144,0x2944,0x2944,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2144,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2944,0x2965,0x2965,0x2965,0x2944,0x2144,0x2144,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2944,0x2944,0x2944,0x2944,0x2144,0x2944,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x3185,0x31a6,0x3185,0x2985,0x2965,0x2965,0x2985,0x2985,0x3185, +0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x1903,0x1923,0x1103,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x08c1,0x08c2,0x08c2,0x08c1,0x08c2,0x10c2,0x08c2,0x08c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c1,0x08c2,0x08c1,0x08c2,0x08c1,0x08c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x08c2,0x08c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08a1,0x08a1,0x08c2,0x08c2,0x08c2,0x08c2,0x08c1,0x08c1,0x08c1,0x08c1,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x1102,0x1103,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x1102,0x1103,0x1103,0x1103,0x1923,0x1923,0x1103,0x10e2,0x1103,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x08c2,0x08c2,0x08c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x1903,0x1902,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x08c1,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x18e3,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1902,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x18e2,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x1103,0x1102,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1103,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x08c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10c2,0x18e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e2,0x18e3,0x1903,0x1903,0x18e2,0x1903,0x1903,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x10e2,0x1923,0x1903,0x18e3,0x1903,0x18e2,0x10e2,0x18e2,0x1903,0x1903, +0x1103,0x10e2,0x10e2,0x1103,0x10c2,0x1103,0x1903,0x1103,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x08c2,0x10e2,0x10c2,0x10e2,0x1103,0x10e2,0x10e2,0x1102,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x1102,0x1102,0x1102,0x1102,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x10e2,0x18e2,0x1903,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e3,0x10e2,0x10e2,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x1903,0x1103,0x1103,0x1103,0x1903,0x1903,0x1103,0x10e2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x1903,0x1923,0x1923,0x1923,0x1903,0x1903,0x1923,0x1903,0x10e2,0x1102,0x10e2,0x10e2,0x08c2,0x10e2,0x1103,0x10c2,0x1103,0x1103,0x1903,0x1103,0x18e2,0x10e2,0x1903,0x1903,0x1903,0x1103,0x1903,0x1903,0x1903,0x1903,0x10e2,0x10c2,0x1103,0x1103,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x1103,0x1102,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x1903,0x1923,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e3,0x1903,0x1903,0x1903,0x1102,0x10e2,0x1103,0x1103,0x1903,0x18e3,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1103,0x1903,0x1903,0x10e3,0x10e3,0x18e3,0x1903,0x1103,0x1903,0x1102,0x1103,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x1903,0x1923,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x10e2,0x1903,0x1923,0x1923,0x1923,0x1923,0x1903,0x1903,0x1923,0x1923,0x1923,0x1903,0x1102,0x1903,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x1903,0x10e2,0x1903,0x1923,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10a2,0x10e2,0x10e2,0x1903,0x1903,0x1903,0x18e3,0x10c2,0x10c2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1923,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1923,0x1923,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x18e3,0x1903,0x1923,0x1903,0x1903,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x1923,0x1903,0x1903,0x10e3,0x10e2,0x10e2,0x10e2,0x10e3,0x1903,0x1103,0x10e2,0x2124,0x2144,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x1903,0x2123,0x10c2,0x10a1,0x08a1,0x00a1,0x00a1,0x00a1,0x00a0,0x0080,0x08a1,0x0881,0x1903,0x2144,0x1903,0x08c2,0x10c2,0x10c2,0x10e2,0x1103,0x10e2,0x1102,0x1903,0x1903,0x0060,0x0881,0x0881,0x0881,0x0060,0x0080,0x0880,0x0880,0x0060,0x1903,0x2144,0x1923,0x1903,0x1103,0x1103,0x10e2,0x10e2,0x10e2,0x10c2,0x1903,0x1903,0x10a2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x1903,0x2164,0x2124,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10c2,0x10c2,0x1903,0x1903,0x18e2,0x10c2,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10c2,0x10e2,0x2144,0x1923,0x1103,0x1103,0x10e2,0x10e2,0x10e2,0x08c2,0x10c2,0x1903,0x1903,0x0861,0x0860,0x0080,0x0060,0x0060,0x0060,0x0060,0x0060,0x0880,0x10a1,0x2144,0x2144,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x1923,0x2124,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10c2,0x10c2,0x08c1,0x10e2,0x10e2,0x1923,0x2144,0x1903,0x18e2,0x10e2,0x10c2,0x10e2,0x10c2,0x08a1,0x10e2,0x1923,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x2144,0x2144,0x1903,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x1903,0x2123,0x18e2,0x10a1,0x18e2,0x10e2,0x10c2,0x10c2,0x10c1,0x10a1,0x10a1,0x08a1,0x2123,0x2144,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1923,0x1923,0x10c2,0x0040,0x00a0,0x00a0,0x00a0,0x0080,0x00a0,0x00a0,0x0880,0x08a1,0x2123,0x2164,0x2124,0x1903,0x1903,0x1903,0x18e2,0x10c2,0x10e2,0x18e2,0x2124,0x2124,0x18e3,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x18e2,0x18e3,0x2123,0x2144,0x1923,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x2124,0x2123,0x18e3,0x1903,0x18e3,0x10c2,0x18e2,0x18e3,0x18e2,0x18e3,0x1903,0x2123,0x2144,0x2144,0x1903,0x1923,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x2124,0x2123,0x1903,0x10c2,0x18e2,0x18e2,0x10c2,0x10c2,0x18e2,0x18e3,0x18e3,0x2123,0x2965,0x2144,0x1903,0x1903,0x1903,0x18e3,0x10c2,0x10c2,0x18e2,0x2124,0x2103,0x1903,0x18e3,0x18e2,0x1903,0x18e2,0x18e2,0x18e2,0x1903,0x18e2,0x1903,0x2164,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x10e2,0x18e3,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2964,0x2124,0x1923,0x1923,0x1903,0x1903,0x1903, +0x1103,0x10e2,0x10c2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2124,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x0040,0x0000,0x0000,0x10c2,0x0080,0x10e2,0x1903,0x1923,0x1923,0x1923,0x1903,0x10c2,0x0000,0x0000,0x10e2,0x1923,0x08c2,0x08c2,0x1103,0x10e2,0x10e2,0x10c2,0x0000,0x0000,0x1903,0x18e2,0x1903,0x1903,0x1903,0x2123,0x1903,0x2144,0x2144,0x0000,0x0000,0x00a0,0x2164,0x1903,0x1923,0x10e2,0x10c2,0x10c2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2144,0x1903,0x18e2,0x1903,0x10e2,0x10c2,0x10e2,0x0000,0x0000,0x0000,0x0040,0x0040,0x0040,0x0880,0x0080,0x0040,0x0020,0x0080,0x0000,0x0000,0x0000,0x2144,0x1903,0x1903,0x10e2,0x08c2,0x08c1,0x18e2,0x0000,0x0000,0x08a1,0x1923,0x1903,0x2123,0x1923,0x1923,0x1923,0x1903,0x1903,0x0060,0x0000,0x0000,0x2164,0x1903,0x1102,0x10e2,0x10e2,0x10c2,0x1903,0x0000,0x0000,0x0000,0x0060,0x0060,0x0080,0x00a1,0x00a1,0x00a0,0x10c2,0x10e2,0x0000,0x0000,0x0000,0x2144,0x1903,0x1903,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2123,0x18e2,0x10c2,0x10e2,0x10a1,0x1903,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0040,0x0060,0x0020,0x0020,0x0060,0x0060,0x0000,0x0000,0x2144,0x1923,0x10c2,0x10e2,0x10c2,0x10c2,0x18e3,0x0020,0x0000,0x0020,0x2964,0x2144,0x2164,0x2164,0x2964,0x2164,0x2144,0x2144,0x2965,0x0000,0x0000,0x1903,0x2144,0x1903,0x1903,0x10e2,0x10c2,0x10e2,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1923,0x1903,0x1903,0x10c2,0x10c2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2144,0x1903,0x1903,0x10e2,0x10c2,0x18e3,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x10e2,0x2965,0x1903,0x1923,0x10e2,0x18e3,0x18e2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x0000,0x0000,0x0060,0x2965,0x1924,0x1903,0x1903,0x10e2,0x10e2,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x2164,0x1923,0x1923,0x1903,0x1903, +0x10e2,0x10e2,0x10c2,0x18e3,0x0000,0x31c6,0x8c71,0xad74,0xad95,0xad95,0xadb5,0xb5b5,0xb5b5,0xb5b5,0xad95,0xad95,0xadb5,0xad95,0x7bef,0x0000,0x2123,0x2144,0x10e2,0x10c2,0x10c2,0x0000,0x2144,0x8c70,0xad94,0xb5b5,0xb5d5,0xb5b6,0xb5b6,0xb5d6,0xbdd6,0xb5b6,0xad95,0xb5d6,0xb5d6,0x8c91,0x1924,0x00a0,0x1923,0x10e2,0x10e2,0x1903,0x0060,0x0000,0x7bef,0xad74,0xb5b5,0xb5b5,0xb5d6,0xbdd6,0xbdf6,0xbdd6,0xb5b6,0xb5d6,0xb5d6,0xbdf6,0x9d13,0x3a27,0x0040,0x2165,0x1903,0x10e2,0x10a2,0x0860,0x0000,0x634c,0xa533,0xad95,0xad95,0xad95,0xad95,0xb5b5,0xb5b5,0xb5b5,0xb595,0xad95,0xb5d6,0xa534,0x4269,0x0000,0x2985,0x1903,0x10e2,0x10c2,0x10c2,0x0000,0x5aeb,0x9cf2,0xad95,0xb5b5,0xb5b5,0xb5b6,0xb5b6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xa554,0x52ca,0x0000,0x2144,0x1903,0x10e2,0x10c2,0x10c2,0x0000,0x5b0b,0xa553,0xb5b5,0xb5d6,0xb595,0xb5b5,0xbdd5,0xbdb5,0xbdb5,0xb5d6,0xb5d6,0xb5b5,0xad95,0x634c,0x0000,0x2144,0x1103,0x10e2,0x08c2,0x18e2,0x0000,0x5b0b,0xa554,0xb5d6,0xb5d5,0xb5d5,0xb5d5,0xb5d5,0xb5d5,0xb5b5,0xadb5,0xad95,0xb5d6,0xad75,0x6b8d,0x0000,0x2144,0x1903,0x1903,0x10a1,0x18e2,0x0000,0x29a6,0x94d2,0xad95,0xad95,0xad95,0xb595,0xb5b5,0xb595,0xad95,0xad95,0xad95,0xb5b5,0xadb5,0x73ce,0x0000,0x1923,0x1923,0x10c2,0x08a1,0x18e3,0x0000,0x2185,0x94b1,0xad95,0xb5d6,0xb5b5,0xb5b6,0xb5d6,0xb5d5,0xb5b5,0xb5b5,0xb5b5,0xb5d5,0xb5d6,0x7c0f,0x0000,0x1903,0x1923,0x10e2,0x10c2,0x1903,0x0000,0x2985,0x94d2,0xb5d5,0xbdf6,0xbdf6,0xbdf6,0xbdd6,0xb5d6,0xbdd6,0xbdd6,0xb5d6,0xb5d6,0xb5d6,0x94b2,0x2123,0x08a0,0x2144,0x1903,0x10e2,0x10e2,0x0000,0x0000,0x8450,0xad95,0xb5b5,0xb5b5,0xb595,0xad95,0xb5b5,0xb5b5,0xad95,0xad95,0xb5b5,0xb5b5,0x8c91,0x2185,0x0080,0x2144,0x18e2,0x10c2,0x10c2,0x10a1,0x0000,0x73ce,0xad74,0xad95,0xad95,0xad95,0xb5b5,0xb5b5,0xb5b5,0xad95,0xad95,0xb5b5,0xb5b5,0x94b2,0x1123,0x10c1,0x2164,0x18e2,0x10e2,0x1903,0x10a1,0x0000,0x73ce,0xad74,0xb5d6,0xb5b5,0xb5b6,0xb5b6,0xb5b6,0xb5d6,0xb5b5,0xb595,0xad95,0xb5d6,0x9d13,0x3a07,0x0020,0x2164,0x1903,0x10e2,0x18e2,0x10a1,0x0000,0x73ae,0xad95,0xad95,0xad95,0xad95,0xad95,0xad95,0xb595,0xb5b5,0xb5b5,0xadb5,0xadb5,0x9d13,0x4269,0x0000,0x2164,0x1923,0x1903,0x10e2,0x1903,0x0000,0x5b0b,0xa534,0xa554,0xa534,0xa554,0xa534,0x9d33,0xa533,0xa534,0xa554,0xa554,0xa554,0x94d2,0x4227,0x0020,0x2965,0x1923,0x2144,0x1923, +0x10e3,0x10e2,0x10e2,0x0000,0x4249,0xb5b5,0xad53,0x8c6f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0x8c2e,0x94d1,0xc658,0x9d54,0x08e3,0x2144,0x1903,0x10e2,0x0000,0x0966,0xad53,0xcdd2,0xa4ae,0xa46d,0xac6e,0xac4d,0xac6d,0xa44e,0xac6e,0xa44d,0x9c2d,0xac6e,0xaccf,0xce57,0xb5f7,0x31c6,0x08c2,0x1923,0x10e2,0x0880,0x0084,0xa4b2,0xcdb3,0xb4ae,0xa44d,0xac6d,0xa48d,0xa48d,0xac6e,0xac8e,0xa46d,0xac4d,0xa46d,0xacaf,0xce15,0xce58,0x4aaa,0x10c0,0x2144,0x10e3,0x10a2,0x0000,0x8c2f,0xc592,0xb4cf,0xacae,0xa48e,0xac6d,0xac8e,0xac8e,0xac8e,0xac8e,0xac8e,0xac8f,0xac8f,0xcdf4,0xd678,0x634d,0x0080,0x1924,0x10e2,0x18e2,0x0000,0x7bce,0xcdb3,0xb4ef,0xac8e,0xac6e,0xac8e,0xa46d,0xacae,0xacae,0xac8d,0xacae,0xac8e,0xac6e,0xcdb4,0xd69a,0x6baf,0x0000,0x2144,0x10e2,0x1903,0x0000,0x73cf,0xce56,0xbd50,0xa44d,0xa46d,0xa40c,0xa40c,0xa44d,0xa44d,0xac4d,0xac6d,0xa46d,0x9c2d,0xc552,0xd699,0x7430,0x0000,0x2165,0x1903,0x1903,0x0000,0x73ce,0xd676,0xc591,0xac8e,0xb48e,0xac8e,0xac8d,0xac4c,0xa44d,0xac6e,0xa46e,0xa46e,0xa46e,0xb511,0xd678,0x84b2,0x0000,0x2124,0x10e2,0x10e2,0x0000,0x4a48,0xc5d4,0xcdb3,0xb4cf,0xb4af,0xb4af,0xb4af,0xacaf,0xac6e,0xb4ae,0xb4cf,0xb4cf,0xacae,0xb531,0xd698,0x9d13,0x0000,0x2144,0x10e3,0x18e2,0x0000,0x31e7,0xbdd5,0xcdf3,0xaccf,0xacae,0xac8e,0xac8e,0xb4ae,0xacae,0xa46d,0xb48e,0xac8e,0xa46e,0xb4f0,0xde98,0xa575,0x0061,0x2143,0x18e3,0x18c2,0x0000,0x29a6,0xce15,0xd614,0xac8e,0xa44d,0xa46d,0xac4d,0xa46d,0xacce,0xac4d,0xac4d,0xa44d,0x9c2d,0xacaf,0xde56,0xc618,0x19a7,0x18e1,0x1924,0x10e2,0x0020,0x00a2,0xbdb5,0xde56,0xb4f0,0xaccf,0xbccf,0xb4ae,0xbd10,0xb4ef,0xb4ae,0xacaf,0xb4ce,0xacae,0xacf0,0xce56,0xc5f6,0x31a7,0x10e3,0x1902,0x10e1,0x18e1,0x0000,0x9cd2,0xd635,0xbd10,0xacae,0xacaf,0xb4ae,0xb4cf,0xb4af,0xb48f,0xb4af,0xb4af,0xb4cf,0xb4cf,0xce16,0xbdd6,0x3a48,0x1101,0x2124,0x10e2,0x20c3,0x0000,0xa4f2,0xde96,0xbd30,0xaccf,0xacae,0xacae,0xacae,0xacae,0xb4ce,0xacae,0xac8e,0xac8e,0xa48e,0xce15,0xce58,0x52ec,0x0080,0x2144,0x18c3,0x18e3,0x0000,0x9cf3,0xe697,0xbd51,0xb4af,0xb48f,0xac8e,0xac8e,0xac8e,0xac8f,0xb48e,0xb48e,0xac8e,0xa48e,0xc594,0xce58,0x632d,0x0000,0x2144,0x1903,0x2124,0x0000,0x8450,0xd6b9,0xad53,0x8c4f,0x946f,0x948f,0x8c6f,0x8c6f,0x8c6f,0x8c6f,0x946f,0x946f,0x8c4f,0xb5b5,0xc678,0x634c,0x00a0,0x2985,0x2164,0x2144, +0x18e3,0x18e3,0x08a0,0x0000,0x9cf3,0x9d11,0x41c0,0x1800,0x0800,0x0800,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x2000,0x0000,0x4a88,0xc658,0x8470,0x0000,0x2164,0x18e2,0x0000,0x8c4f,0xcdb2,0x9b22,0x79c0,0x79e0,0x79c0,0x6920,0xa3e8,0xb44b,0x7120,0x71c0,0x79c0,0x81a0,0x7120,0x6a61,0xce37,0x9cf3,0x0000,0x1924,0x18e2,0x0000,0x73ad,0xcdb3,0x9ba7,0x79e0,0x7a20,0x7140,0xb48b,0xb4ab,0x8b23,0xd56f,0x8ae0,0x7180,0x8200,0x71a0,0x6160,0xbd94,0xad95,0x0082,0x2123,0x1923,0x0000,0x630b,0xc5b3,0x9bc9,0x81e0,0x7a00,0x79c0,0x81a0,0x8200,0x9341,0x9b40,0x8240,0x79c0,0x81e0,0x7180,0x5800,0xb573,0xbdf6,0x1144,0x1943,0x1923,0x0000,0x4228,0xbdb3,0xb46b,0x8200,0x79e0,0x81c0,0x7940,0x9387,0xc591,0xbcef,0x8a40,0x7980,0x7a20,0x71e0,0x5800,0xad11,0xc656,0x3a26,0x10e3,0x1923,0x0000,0x3208,0xcdf5,0xbcee,0x79c0,0x81e0,0x7160,0x9367,0xb4ac,0x8302,0x8b00,0x92c0,0x79a0,0x71c0,0x79e0,0x5800,0x9caf,0xce78,0x4a89,0x0060,0x2164,0x0000,0x31e7,0xd696,0xc54f,0x71a0,0x7a20,0x7a00,0x79a0,0x82a0,0xac8b,0x9bc7,0x7180,0x79a0,0x7980,0x71a0,0x5800,0x940e,0xceb8,0x634c,0x0000,0x2144,0x10e2,0x0000,0xb573,0xd5b2,0x8260,0x71e0,0x79c0,0x79e0,0x6960,0x9342,0xbc8a,0x7a60,0x71e0,0x79e0,0x7200,0x6100,0x838b,0xd698,0x73ae,0x0000,0x1944,0x1902,0x0000,0xa533,0xd5f4,0x92e0,0x79c0,0x79c0,0x7980,0x8a80,0xa3a5,0x9ba6,0x8b20,0x79e0,0x7a00,0x7a00,0x6000,0x7b29,0xd6b9,0x7c50,0x0000,0x2123,0x2103,0x0000,0xa533,0xe655,0x8ac0,0x79a0,0x8200,0x71c0,0x7100,0x9be9,0xac6a,0x7960,0x7a00,0x7200,0x7220,0x60e0,0x6a00,0xd698,0x9d33,0x0000,0x2164,0x1903,0x0000,0x9470,0xeeb6,0x9b45,0x81c0,0x81e0,0x79a0,0x7160,0x9b85,0xb46a,0x6980,0x7180,0x79a0,0x79a0,0x6900,0x69c0,0xce36,0xad74,0x0000,0x2123,0x1903,0x0000,0x7bce,0xde56,0xabe8,0x7980,0x79c0,0x71e0,0x81e0,0x7180,0x7980,0x79c0,0x79c0,0x79e0,0x7180,0x6900,0x61a0,0xcdf6,0xad55,0x0000,0x2124,0x2124,0x0000,0x6b8c,0xe6b6,0xac6b,0x7960,0x81a0,0x79a0,0x7940,0x7980,0x79c0,0x71c0,0x79c0,0x79c0,0x79e0,0x70c0,0x5860,0xc5d5,0xbdd6,0x0021,0x2144,0x2124,0x0000,0x634b,0xeeb8,0xb46b,0x6940,0x79c0,0x7160,0x71c0,0x79c0,0x81c0,0x7160,0x79a0,0x79c0,0x79a0,0x7160,0x5000,0xb553,0xbe17,0x1125,0x1903,0x2144,0x0000,0x52aa,0xd6da,0x94b1,0x0000,0x1800,0x1800,0x2000,0x1800,0x1800,0x1800,0x1800,0x2000,0x2000,0x1000,0x0000,0xa533,0xc658,0x31e6,0x2164,0x2985,0x2144, +0x10c2,0x1923,0x0000,0x4a8a,0xa554,0x6b29,0x49e2,0x4a04,0x49e3,0x41a2,0x41a2,0x41a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41c4,0x0000,0x8c70,0xb5b5,0x2144,0x1903,0x1060,0x00e5,0xb532,0xc4ac,0x9280,0x92e3,0x8aa2,0x8a83,0x79e0,0xb4cd,0xc570,0x7a00,0x8aa2,0x8282,0x8a62,0x8a84,0x6940,0x8bed,0xad94,0x31c6,0x08e2,0x18e2,0x0000,0x9cb0,0xc50e,0x92a0,0x92e3,0x8ac3,0x8240,0xb48d,0xc50e,0x8b66,0xcd6f,0x9366,0x7a40,0x8aa2,0x8aa4,0x71a0,0x7b07,0xc5f7,0x5aec,0x0000,0x2123,0x0000,0x9cb0,0xc52f,0x92a0,0x92c3,0x8aa2,0x8a83,0x8a40,0x9346,0xcdb1,0xcdb2,0x9b86,0x8260,0x8a82,0x8aa3,0x79e0,0x6aa6,0xbdf5,0x5b4c,0x0000,0x2144,0x0000,0x840e,0xcd71,0x9b20,0x8ac2,0x92c2,0x8aa3,0x8220,0xc531,0xde56,0xacad,0x9323,0x8a82,0x82a2,0x82a3,0x7a00,0x6200,0xc636,0x73ef,0x0000,0x2144,0x0000,0x73cf,0xd5f4,0x9b40,0x92e2,0x8aa3,0x8280,0xbcee,0xcdb1,0xb4ed,0xa408,0x82a1,0x8260,0x8aa2,0x8283,0x8262,0x5920,0xc616,0x8cb2,0x0000,0x2985,0x0000,0x7bee,0xe675,0x9b20,0x92e1,0x8ac3,0x8aa3,0x8a40,0xa40a,0xce55,0xc530,0x8a80,0x8262,0x8282,0x8262,0x7a84,0x4800,0xc5d4,0xa533,0x0000,0x2985,0x0000,0x4289,0xce15,0xabe9,0x8a80,0x92c3,0x8aa2,0x8aa3,0x7a60,0x9ba8,0xd5b1,0x8b47,0x8260,0x8a83,0x8283,0x82a4,0x5000,0xb553,0xb595,0x0000,0x2164,0x0000,0x31a8,0xd616,0xbcac,0x9280,0x92c3,0x8a82,0x8b04,0xb44a,0xb48c,0xacad,0xb48c,0x9b25,0x8282,0x8aa2,0x8a84,0x4800,0xad73,0xb5d5,0x0000,0x2123,0x0000,0x1944,0xce36,0xc4ee,0x8a60,0x92e4,0x8ac2,0x82c2,0x8281,0xc530,0xac8c,0x7a00,0x8ac3,0x82a2,0x82a2,0x82a4,0x5000,0x9caf,0xce78,0x1944,0x10e2,0x18c2,0x0000,0xce16,0xcd2f,0x8a40,0x92e4,0x92a2,0x8aa3,0x8281,0x8b25,0xcd4f,0x9388,0x7a40,0x8a83,0x8a82,0x8284,0x6000,0x940d,0xd6b8,0x4269,0x0000,0x2124,0x0000,0xb593,0xcd70,0x9280,0xac28,0xa3c7,0x9325,0x8aa3,0x9b88,0xa3c8,0x8b03,0x9b64,0x8ae3,0xa3c8,0x9b88,0x6140,0x8bac,0xce18,0x3a48,0x08c0,0x2164,0x0000,0xa533,0xd5d2,0x9b20,0xabe8,0x9346,0x9304,0xabe9,0x9b66,0x9b67,0x9ba7,0x9b66,0xa387,0x9345,0xa3c9,0x7a40,0x7b28,0xce57,0x52cb,0x0000,0x2924,0x0000,0xb532,0xddf3,0xa386,0xac08,0x9346,0xa3a9,0x8b46,0x9304,0x8aa3,0x9b88,0x9b67,0x9ba8,0x9bc7,0x9b67,0x8b04,0x6222,0xce99,0x73cf,0x0000,0x2965,0x0000,0x94d2,0xd697,0x4160,0x49e3,0x49e3,0x49c3,0x41a2,0x49c3,0x41a2,0x41a2,0x41a2,0x41c3,0x41a2,0x41a3,0x28e0,0x2901,0xc658,0x8470,0x0000,0x31a6,0x2123, +0x10e3,0x1903,0x0000,0x5b0c,0xa512,0x6b08,0x5245,0x49e4,0x41a2,0x4182,0x3961,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4181,0x1000,0x738d,0xa554,0x3a06,0x10e2,0x0000,0x1987,0xbd73,0xbc8b,0x92c0,0x8ae2,0x82c1,0x8281,0x8220,0x9c0a,0xac8d,0x8220,0x8280,0x8281,0x8261,0x7a61,0x69e0,0x732a,0xad73,0x4a88,0x00a2,0x18e2,0x0001,0xad10,0xc4ec,0x9ac0,0x92e2,0x8ac1,0x8a80,0x9346,0x8b46,0x82e2,0x9b87,0x8280,0x8280,0x8a80,0x8260,0x8220,0x6a41,0xb5b5,0x6b6d,0x0000,0x2123,0x0000,0xad11,0xc4ed,0x9aa0,0x92e2,0x82a1,0x82a2,0x8220,0x9c09,0xd676,0xd635,0x9345,0x8260,0x8281,0x7a61,0x8220,0x6a23,0xb594,0x6bce,0x0000,0x2164,0x0000,0x9491,0xcd70,0x9b00,0x8ae2,0x8ac1,0x8281,0x7a60,0x9367,0xd5f2,0xcdb1,0x8b25,0x8280,0x8280,0x8240,0x7a01,0x6180,0xbdd6,0x8cb2,0x0000,0x2144,0x0000,0x8430,0xd5d4,0x9b40,0x9303,0x8ac3,0x82a0,0x93a8,0xac8c,0xac8c,0xb48c,0xac4a,0x92e5,0x7a20,0x7a40,0x7a22,0x60e0,0xb595,0x9d33,0x0000,0x2964,0x0000,0x9491,0xde14,0xa2e0,0x9b03,0x8a81,0x8aa2,0x8220,0xa44b,0xd676,0xb551,0x9b87,0x82a2,0x7a60,0x7a40,0x7263,0x5060,0xb553,0xad54,0x0000,0x2985,0x0000,0x6b6d,0xce14,0xab85,0x9b01,0x8aa1,0x92a1,0x8a81,0x8260,0x9305,0xabe9,0x82a2,0x8a80,0x8a80,0x7a40,0x8262,0x60c0,0xa4b0,0xb5b5,0x0040,0x2123,0x0000,0x4a8a,0xde56,0xbc6a,0x92a0,0x92e3,0x8280,0x9b86,0xac8c,0xa449,0xa48a,0xa46a,0x9b44,0x8240,0x8240,0x8a62,0x60a0,0x9c8f,0xbe16,0x0040,0x1902,0x0000,0x4249,0xd676,0xb46b,0x8ac0,0x8b03,0x8ae2,0x7a60,0x8ac2,0xcd71,0x93ea,0x8200,0x8a81,0x8260,0x8261,0x8242,0x6940,0x8bcc,0xce78,0x3a28,0x0880,0x1080,0x00c3,0xd677,0xbcce,0x92c0,0x8b03,0x8aa1,0x8a80,0x8a60,0x7a60,0xc551,0xb42c,0x71c0,0x8281,0x7a60,0x7a62,0x6980,0x7b28,0xce57,0x5b2c,0x0000,0x2124,0x0000,0xc615,0xc52f,0xabe6,0xbced,0x9bc7,0xac8a,0x7aa0,0xc54e,0xacac,0x9388,0xcd6f,0x9c0a,0xbd0e,0xb4ae,0x7200,0x7ac9,0xce17,0x632c,0x0000,0x2143,0x0000,0xb595,0xd590,0xbc08,0xd5d1,0xcdb1,0xbd0e,0xb4ed,0xacad,0xbd10,0xac6c,0xac4c,0xcd50,0xa42a,0xa46c,0x8b26,0x6245,0xc637,0x6b6d,0x0000,0x2123,0x0000,0xc594,0xddb1,0xc4ed,0xbccc,0xc54f,0xbcef,0x9be9,0xa428,0x82e4,0xbd2e,0x9be8,0xa449,0xa46b,0xacad,0xa40a,0x5140,0xc637,0x8450,0x0000,0x2965,0x0000,0xa554,0xc5f4,0x3920,0x5204,0x49c1,0x41a1,0x41a1,0x41a1,0x41a1,0x4180,0x4181,0x41a1,0x4180,0x4180,0x3961,0x0000,0xb5d6,0x94f2,0x0000,0x31c6,0x2144, +0x10e3,0x1903,0x0000,0x5aec,0xa532,0x6b28,0x5265,0x4a23,0x41c2,0x39a1,0x39a1,0x39a1,0x3981,0x3981,0x3981,0x3981,0x3980,0x3981,0x0800,0x73ce,0x9d54,0x39e5,0x18e3,0x0000,0x21a8,0xbd73,0xbc8b,0x92c0,0x92e2,0x8ac1,0x8aa1,0x8240,0x9bc8,0xac4b,0x8240,0x8280,0x8281,0x8261,0x7a61,0x69c0,0x7b49,0xa552,0x52a9,0x00a1,0x18c1,0x0003,0xb532,0xc4ed,0x9ae0,0x9b03,0x92c1,0x9282,0x8280,0x82a0,0x8a60,0x8260,0x8280,0x82a0,0x82a1,0x7a61,0x7a20,0x6a62,0xadb4,0x636d,0x0000,0x2123,0x0000,0xad12,0xcced,0x92c0,0x9303,0x8aa0,0x92a2,0x8220,0xa42b,0xce14,0xcdb1,0x8ac0,0x8a80,0x8260,0x7262,0x7a20,0x7243,0xb574,0x6bae,0x0000,0x2144,0x0000,0x9cd1,0xcdb2,0xa322,0x9ae4,0x92c2,0x8aa2,0x8280,0xac4b,0xbd72,0xde55,0xac2a,0x7a00,0x8261,0x7a60,0x7220,0x69c0,0xbdd5,0x8492,0x0000,0x2164,0x0000,0x8450,0xddf4,0xa340,0x9b23,0x92c3,0x92c2,0x8240,0x8b02,0xac2a,0xbd30,0xcdb2,0xac2b,0x7200,0x7262,0x7242,0x6100,0xbdd5,0xa554,0x0000,0x29a5,0x0000,0x94b0,0xe634,0x9b00,0x8b04,0x92e2,0x8aa0,0x82c0,0xcd90,0xb4ef,0xde96,0xcd71,0x71c0,0x8282,0x8241,0x7a23,0x5900,0xb533,0x9d34,0x0000,0x2964,0x0000,0x636d,0xd5f5,0xaba6,0x9302,0x8b02,0x8aa1,0x8a81,0x8a80,0x8aa2,0x8260,0x8280,0x8281,0x8261,0x7a40,0x7a42,0x58a0,0x9c8f,0xadb5,0x00e2,0x2123,0x0000,0x52aa,0xde77,0xbc6b,0x9ae0,0x9b03,0x8aa0,0x9ba6,0xbccc,0xb44a,0xbd0e,0xac8c,0x82c1,0x8260,0x7262,0x8262,0x60c0,0x9c6f,0xbdd5,0x0904,0x18e1,0x0000,0x3a08,0xde55,0xbc8b,0x92c0,0x9324,0x92c2,0x8a80,0x8aa0,0xcd71,0x9c2c,0x81e0,0x8a82,0x8281,0x7a61,0x7a42,0x6940,0x93ec,0xc657,0x3a28,0x10a1,0x0860,0x00e4,0xd676,0xc4cd,0x9ac0,0x8b23,0x8ac1,0x8aa1,0x8a41,0x7a80,0xc552,0xa3cb,0x8200,0x8261,0x7a60,0x7a42,0x6160,0x8349,0xd677,0x5b2c,0x0000,0x2123,0x0000,0xcdf5,0xcd2f,0xabc5,0xc52d,0xa409,0xbcab,0xac09,0xbcee,0xa46c,0xa42a,0xc52e,0xac8c,0xa42b,0x9c0a,0x7220,0x72c8,0xc5f6,0x634c,0x0000,0x2923,0x0000,0xb595,0xd590,0xb429,0xcd4f,0xc52e,0xc52e,0xac4b,0xbccd,0xc52f,0xa46b,0xa42a,0xb48d,0x93c8,0x93a7,0x8a82,0x7225,0xc5f7,0x638d,0x0000,0x2122,0x0000,0xc5d6,0xddd1,0xc4ed,0xbd0e,0xc52f,0xc50f,0xa3e8,0xb4ad,0x9bc9,0xbcee,0x9ba8,0x9365,0x9b87,0x9c4c,0x93c9,0x59a0,0xc617,0x8450,0x0000,0x2965,0x0000,0xa554,0xbdf4,0x3940,0x5244,0x49e2,0x41e2,0x41c2,0x41a1,0x41a1,0x41a1,0x3981,0x39a2,0x3980,0x3980,0x3960,0x0000,0xb5b6,0x94d2,0x0000,0x29a5,0x2164, +0x1103,0x1903,0x0000,0x5b0c,0xa553,0x6b08,0x5244,0x5244,0x3980,0x3960,0x3980,0x3120,0x3981,0x3160,0x3140,0x3160,0x3980,0x3961,0x0000,0x73ce,0xa554,0x39e5,0x10e2,0x0000,0x21e8,0xbd73,0xb44a,0x92a0,0x8ae0,0x8a80,0x8a60,0x7a20,0x9b67,0xa3c8,0x7a20,0x8260,0x8240,0x8240,0x7a41,0x6960,0x7b4b,0xad94,0x52a9,0x0080,0x10c1,0x0003,0xb552,0xb4cc,0x92c0,0x92c2,0x8aa1,0x8a80,0x8a80,0x8a80,0x8a60,0x8260,0x8a60,0x8260,0x8240,0x7a40,0x71e0,0x6a22,0xb5b4,0x6b6c,0x0020,0x2124,0x0000,0xad12,0xc4ad,0x9aa0,0x92c2,0x8a80,0x8a80,0x8240,0x9325,0xa3c9,0x9b66,0x8260,0x8260,0x8240,0x7a20,0x79e0,0x6a02,0xad54,0x6baf,0x0060,0x2143,0x0000,0x9cb1,0xcd71,0xa300,0x9ae3,0x8a80,0x8a81,0x8240,0x9bca,0xd5b3,0xbcce,0x8281,0x8241,0x8220,0x7a20,0x71c0,0x61a0,0xbe16,0x8491,0x0000,0x2965,0x0000,0x8471,0xd5d4,0x92c0,0x92e3,0x92c1,0x8a80,0x8260,0xa385,0x8b24,0x9bea,0xb50f,0x8b27,0x79e0,0x7a20,0x6a02,0x50a0,0xbdf6,0xa554,0x0000,0x31a5,0x0000,0x9490,0xde13,0x92a0,0x9302,0x92c0,0x8aa0,0x7260,0xb48d,0xc571,0xbd91,0xb4ac,0x8220,0x7a20,0x7a00,0x7202,0x5840,0xb553,0xa554,0x0000,0x2964,0x0000,0x6b6d,0xd5f4,0xab66,0xa2c3,0x92c2,0x8aa0,0x8a81,0x8260,0x8280,0x8261,0x8260,0x8261,0x7a41,0x7a60,0x7a22,0x5800,0xa48f,0xbdd5,0x00a3,0x2144,0x0000,0x52cb,0xde76,0xb449,0x9aa0,0x9ae3,0x8ac1,0x82a1,0xabe8,0xb44b,0xac4b,0x9ba8,0x7a40,0x8260,0x7a40,0x7a41,0x5800,0x9c6f,0xb5d5,0x0103,0x1902,0x0000,0x4228,0xd655,0xb46b,0x9280,0x92e3,0x92a0,0x92a1,0x8200,0xb46c,0xbccd,0x6a20,0x8260,0x8260,0x7220,0x7a20,0x60c0,0x8bcb,0xce99,0x4248,0x0080,0x0860,0x00e5,0xd676,0xbcad,0x92a0,0x9302,0x8ac0,0x9281,0x7a20,0x93a7,0xcd0e,0x8a85,0x8240,0x8240,0x7a20,0x7a21,0x6100,0x8329,0xde57,0x5b0b,0x0000,0x2123,0x0000,0xc5d4,0xc52f,0x9280,0xabc7,0x9b66,0x9305,0x9b26,0x9306,0x9b27,0x9304,0x8280,0x8ac3,0x7a60,0x7a40,0x71a0,0x7ac8,0xc616,0x634c,0x0000,0x2124,0x0000,0xbd94,0xd5b1,0xa2e0,0xa365,0x92e0,0x92e2,0x9b44,0x9304,0x9324,0x9b65,0x8ae2,0x7a60,0x8280,0x8a61,0x79a0,0x6a45,0xc617,0x6b8e,0x0000,0x2123,0x0000,0xcdd5,0xdd90,0x9b24,0xabe9,0x9305,0xa3a8,0x9b25,0x9346,0x9b46,0x9326,0x92e4,0x8282,0x8280,0x82c3,0x7aa3,0x59a0,0xbe38,0x8450,0x0000,0x2965,0x0000,0xa554,0xc5d5,0x4160,0x49c2,0x41a0,0x41a0,0x3960,0x3940,0x3120,0x3940,0x41a0,0x2900,0x3960,0x3120,0x3120,0x0800,0xb5b5,0x94d2,0x0000,0x31a6,0x2164, +0x1103,0x1903,0x0000,0x52eb,0x9d13,0x6b08,0x5a65,0x49e3,0x7349,0x7b89,0x5aa6,0x7bcb,0x62c7,0x5265,0x7bcb,0x5ac7,0x3120,0x3962,0x0000,0x73ce,0xa554,0x3a06,0x10e3,0x0800,0x0187,0xc5d4,0xcd0e,0x9b00,0x9324,0x8ac3,0x8a82,0x8aa3,0x7a40,0x8260,0x8a82,0x8281,0x8281,0x8260,0x7a63,0x71c0,0x8c0e,0xadb5,0x4a68,0x10e2,0x18c2,0x0000,0xbd52,0xcd2f,0x9b00,0x9b21,0x8ac0,0x8aa0,0x8a60,0x8260,0x8280,0x8280,0x8260,0x8260,0x8240,0x7a41,0x7200,0x7328,0xb5d6,0x636d,0x0060,0x2123,0x0000,0xad72,0xcdb0,0x9320,0x9301,0x8a80,0x8260,0x8280,0x8240,0x8240,0x8240,0x8260,0x8240,0x8240,0x7a40,0x6a00,0x6ac6,0xb5d4,0x73ee,0x0020,0x2144,0x0000,0x94d2,0xd5f4,0x9b43,0x9b02,0x8aa0,0x8a80,0x8a80,0x7a40,0x8280,0x8240,0x7a40,0x8a80,0x7a40,0x7a20,0x71e0,0x7262,0xce15,0x8c90,0x0000,0x2965,0x0000,0x8492,0xde75,0xaba0,0x9b44,0x9b23,0x8ac1,0x8ac2,0x8a80,0x8260,0x8260,0x8240,0x8240,0x8241,0x7a41,0x7223,0x7220,0xce37,0x9d14,0x0000,0x31a5,0x0000,0x9490,0xee95,0xa341,0x9b02,0x92c1,0x9280,0x9280,0x8a20,0x92c2,0x8220,0x8260,0x8261,0x7a40,0x7a41,0x7243,0x5980,0xbdd5,0xa574,0x0000,0x3185,0x0000,0x6bad,0xdeb5,0xa3e6,0x9300,0x92c0,0x9280,0x8240,0x8240,0x8240,0x8220,0x8220,0x7a00,0x7a00,0x7a00,0x7222,0x4860,0xa4f1,0xbdd6,0x08e3,0x2144,0x0000,0x4aaa,0xdeb8,0xb4cd,0x9aa0,0x9ae0,0x8aa0,0x8280,0x8240,0x82c0,0x8280,0x7a20,0x8260,0x8240,0x7a20,0x7a41,0x5940,0xacf1,0xbdd5,0x00c1,0x1902,0x0000,0x31a6,0xdeb8,0xcd50,0x9ae0,0x9b45,0x92e2,0x92c2,0x8a80,0x92e2,0xa3c6,0x82c0,0x8a61,0x8261,0x7a62,0x8263,0x6980,0x9c6e,0xd699,0x4248,0x0880,0x0880,0x0063,0xe697,0xcd2f,0x9260,0x92c0,0x8a80,0x8a40,0x7a20,0x9323,0x9b23,0x7a00,0x8240,0x7a00,0x7a00,0x7a20,0x6920,0x83cc,0xd699,0x5b2c,0x0000,0x2103,0x0000,0xc615,0xd5b1,0x9aa0,0x92c0,0x8a80,0x8240,0x8240,0x8220,0x8200,0x8200,0x8220,0x7a00,0x7a00,0x79e0,0x6160,0x7b4a,0xce38,0x634c,0x0000,0x2944,0x0000,0xbd96,0xd614,0x92e0,0x9b03,0x92c0,0x8a80,0x8a40,0x8240,0x8240,0x8220,0x8240,0x8260,0x7a20,0x7240,0x69c0,0x7308,0xc657,0x6b8d,0x0000,0x2144,0x0000,0xc5f6,0xe634,0x92a0,0x92c0,0x8a80,0x8240,0x8a60,0x8240,0x8220,0x79e0,0x8220,0x8220,0x7a20,0x71e0,0x6960,0x6a01,0xd658,0x8450,0x0000,0x2965,0x0000,0xad54,0xc5f6,0x4a00,0x8bed,0x7328,0x62a7,0x7349,0x5a66,0x6b08,0x62c7,0x39a1,0x62c7,0x41c3,0x4a04,0x4a04,0x20a0,0xb5b5,0x94d2,0x0000,0x29a5,0x2164, +0x1103,0x1903,0x0000,0x52eb,0x9d12,0x6b28,0x5a85,0x39a0,0x9c8e,0x948e,0x5a86,0x946e,0x8c0d,0x944e,0x62e8,0x4a45,0x3960,0x3941,0x0000,0x73ce,0xa554,0x4226,0x1903,0x1081,0x0000,0xce99,0xffbc,0xe674,0xd654,0xd614,0xd5f4,0xcdd4,0xc5d3,0xc5f3,0xcdd4,0xc5b3,0xc5f2,0xcdd2,0xc592,0xb552,0xbdd5,0xb5d6,0x4248,0x1903,0x2103,0x0000,0xbdf7,0xffbc,0xe675,0xde54,0xce14,0xc5b4,0xc593,0xc5b3,0xc5b2,0xc5b2,0xc592,0xc592,0xbd92,0xbd72,0xb550,0xb573,0xb618,0x5b0b,0x18e0,0x2144,0x0000,0xadb6,0xffbc,0xe676,0xd615,0xcdf4,0xc5b3,0xc5b2,0xc5d3,0xc5d3,0xcdd2,0xc591,0xc592,0xc552,0xbd52,0xb510,0xb552,0xbe57,0x6bcd,0x2120,0x2985,0x0000,0x8cd3,0xffdd,0xeed7,0xde35,0xd5f4,0xcdd3,0xc5b3,0xc592,0xc5b3,0xc593,0xc5b1,0xbd92,0xbd72,0xb551,0xad51,0xa552,0xceba,0x7c51,0x0040,0x2965,0x0000,0x8451,0xffdd,0xe6d8,0xde35,0xd614,0xcdd3,0xc5d3,0xbdb3,0xc5b3,0xc5b2,0xc592,0xbd71,0xbd51,0xb531,0xacf0,0xad32,0xd6da,0x94d2,0x0000,0x2985,0x0000,0x7c72,0xfffe,0xeef7,0xd634,0xd634,0xc5d2,0xc5b2,0xc5b3,0xc5b3,0xcdd3,0xc5b2,0xbd91,0xbd70,0xb530,0xad30,0xb531,0xce9a,0x9533,0x0000,0x2985,0x0000,0x5b4d,0xf79c,0xf718,0xd5f3,0xd5f3,0xcdb1,0xc591,0xc591,0xc591,0xc592,0xc571,0xbd51,0xb530,0xb50f,0xb50f,0xa4cf,0xbe36,0xadd6,0x00a0,0x2144,0x0000,0x3208,0xe73c,0xff59,0xde34,0xde14,0xcdd2,0xc5b1,0xc5b2,0xc572,0xc592,0xc592,0xbd92,0xb572,0xbd31,0xbd50,0xa50f,0xce37,0xbdd6,0x0080,0x1902,0x0020,0x2126,0xdedb,0xffbc,0xde76,0xde56,0xd614,0xcdd4,0xc5d2,0xc593,0xc572,0xcdb2,0xc593,0xbd51,0xb571,0xb551,0xacf0,0xbe18,0xceba,0x3a06,0x10e1,0x10c1,0x0000,0xdf1c,0xff9c,0xde33,0xcdf3,0xc591,0xc592,0xc590,0xbd70,0xbd71,0xbd90,0xbd71,0xbd51,0xb530,0xb531,0xa4b0,0xb5b5,0xd6db,0x4acb,0x0060,0x2124,0x0000,0xbe19,0xffbe,0xe655,0xde34,0xd613,0xcdd2,0xcdb1,0xc591,0xc591,0xc592,0xc571,0xbd70,0xbd30,0xb530,0xacce,0xb574,0xce9a,0x52ea,0x0000,0x2945,0x0000,0xb5b7,0xfffd,0xee95,0xde34,0xd613,0xcdd1,0xcdb1,0xc592,0xc592,0xc592,0xc571,0xc571,0xbd51,0xb530,0xb4ef,0xad52,0xceba,0x634c,0x0000,0x2944,0x0000,0xb5f7,0xffdd,0xee96,0xde35,0xd5f4,0xcdd3,0xc592,0xc591,0xc571,0xc571,0xbd50,0xbd30,0xb50f,0xacef,0xaccf,0xa510,0xcefa,0x740f,0x0000,0x2985,0x0000,0xa554,0xbdd5,0x6b49,0xb573,0x9caf,0x9470,0x9caf,0x8c0d,0x946f,0x6b2a,0x5266,0xa4f1,0x6b2a,0x948e,0x8c0d,0x0000,0xadb5,0x94d2,0x0000,0x29a5,0x2144, +0x10e2,0x1903,0x0000,0x52eb,0x9cf2,0x7328,0x5a85,0x41c2,0x8c0c,0x8c4d,0x5a86,0x7bcb,0x944d,0x840c,0x83cb,0x62c7,0x3140,0x3962,0x0000,0x73ce,0xa554,0x4226,0x1903,0x0000,0x2144,0xb617,0xb5d5,0x8c0d,0x840e,0x840d,0x83ed,0x83ed,0x840d,0x73cc,0x83ed,0x83ed,0x7c0c,0x7bec,0x73ac,0x634b,0x94d2,0xb5d6,0x4a89,0x10c2,0x18e2,0x0000,0xadb5,0xbe16,0x8c4f,0x8c4f,0x842e,0x840e,0x840d,0x7bed,0x73ab,0x7bcc,0x83ed,0x83ed,0x7bcc,0x73ac,0x6b4a,0x7c0e,0xb617,0x634c,0x10c0,0x2123,0x0000,0xa595,0xce57,0x9450,0x9450,0x8c4e,0x842d,0x8c4e,0x7c0d,0x7bcc,0x83ed,0x8c2d,0x840d,0x83cd,0x7bad,0x734b,0x7bce,0xb618,0x73cf,0x0840,0x2985,0x0000,0x9514,0xd699,0x9caf,0x946f,0x8c2e,0x840d,0x840d,0x840d,0x83cd,0x7bad,0x840d,0x83ed,0x7bcd,0x73ac,0x6b6b,0x638c,0xc679,0x8492,0x0000,0x2165,0x0000,0x8c71,0xd6d9,0x9490,0x8c2e,0x8c2d,0x840d,0x7bed,0x7bcc,0x738b,0x736b,0x83cc,0x7bcc,0x738b,0x736b,0x630a,0x5b0b,0xc658,0x9d13,0x0000,0x2965,0x0000,0x8493,0xdefb,0x9cb0,0x8c6f,0x8c6e,0x842d,0x7c0d,0x840d,0x83ed,0x7bac,0x7bac,0x7bec,0x7bab,0x6b4a,0x634a,0x6309,0xbe18,0x9d54,0x0000,0x2985,0x0000,0x638d,0xdefa,0xb532,0x9c4f,0x946f,0x8c2d,0x8c2d,0x840d,0x7bec,0x7bec,0x7bcc,0x840d,0x83cc,0x7bab,0x7bab,0x5ac8,0xadb5,0xb617,0x0000,0x2144,0x0000,0x4a8a,0xdefb,0xc5d4,0x944e,0x9470,0x8c4e,0x8c0d,0x8c0e,0x83ed,0x7b8b,0x83ed,0x83ed,0x7bcc,0x7b8c,0x73ab,0x5b09,0xa576,0xb5f7,0x00a0,0x1902,0x0000,0x3187,0xd6ba,0xbdf5,0x840d,0x8c4f,0x840d,0x83ed,0x840d,0x7bcc,0x736b,0x83cc,0x7bcd,0x738b,0x6b6b,0x634b,0x5288,0x8cd3,0xc699,0x4248,0x08c0,0x08a0,0x0000,0xd6fb,0xce57,0x946e,0x8c4e,0x8c2d,0x8c0e,0x8c0d,0x83cc,0x83cd,0x842d,0x842d,0x83ed,0x7bac,0x73ac,0x630a,0x8c91,0xd6da,0x5b0c,0x0000,0x2124,0x0000,0xbe38,0xceb9,0x948f,0x94d0,0x948f,0x944e,0x8c2e,0x944e,0x8c2e,0x8c0d,0x8c2d,0x840c,0x83ec,0x7bcc,0x6b29,0x8c50,0xce9a,0x5b2b,0x0000,0x2124,0x0000,0xb5b7,0xded9,0xa4af,0x9c8f,0x946e,0x8c4d,0x8c2d,0x83ed,0x840d,0x8c2d,0x83ed,0x83ec,0x7bac,0x7b8c,0x7329,0x7bce,0xc67a,0x634e,0x0000,0x2944,0x0000,0xbe17,0xded9,0x9c90,0x9cb0,0x946f,0x946f,0x944e,0x8c2d,0x8c2d,0x8c2d,0x8c0d,0x83ec,0x7bab,0x738c,0x6b4a,0x6b6c,0xc6bb,0x7c30,0x0000,0x2985,0x0000,0xa534,0xbdd4,0x6b48,0xad32,0x9caf,0x944f,0x8c0d,0x840c,0x9c8f,0x6b29,0x738a,0x9caf,0x840c,0x8c2d,0x7bab,0x1820,0xad74,0x94b1,0x0000,0x29a6,0x2164, +0x10e2,0x1903,0x0000,0x52eb,0x94d1,0x6b08,0x6266,0x5204,0x5244,0x5a85,0x4a03,0x5265,0x4a03,0x3960,0x62a6,0x4a03,0x3960,0x3961,0x0000,0x73ad,0xa574,0x4247,0x10e2,0x0000,0x31e7,0xa533,0x7349,0x3800,0x3920,0x28a0,0x2840,0x2000,0x30e0,0x7328,0x49c0,0x1000,0x2800,0x2000,0x1800,0x0000,0x630b,0xa574,0x4a68,0x10e2,0x10e2,0x0063,0x9d12,0x83ec,0x2880,0x4140,0x3080,0x28a0,0x1000,0x5203,0x944e,0x6ae8,0x0000,0x2000,0x2000,0x1800,0x0000,0x2984,0xb5d6,0x6b6c,0x0080,0x1903,0x0000,0x9d13,0x840c,0x1800,0x3940,0x2820,0x2840,0x0000,0x6286,0x944d,0x6b07,0x1000,0x1800,0x1800,0x1000,0x0000,0x20e0,0xad95,0x73ce,0x0040,0x2164,0x0000,0x9cf3,0xa512,0x2800,0x3940,0x30a0,0x2000,0x2000,0x0000,0x62c8,0x83ab,0x2000,0x2000,0x2000,0x2000,0x0000,0x0000,0xbdf6,0x8c91,0x0000,0x2144,0x0000,0x8c71,0xb594,0x38e0,0x4160,0x4120,0x3080,0x2800,0x3100,0x7b8b,0x83ec,0x41e2,0x0800,0x1800,0x2000,0x1800,0x0000,0xad95,0x9d34,0x0000,0x2964,0x0000,0x9490,0xbdb3,0x2000,0x3160,0x30e0,0x3020,0x3020,0x1800,0x62c5,0x942d,0x5245,0x0800,0x2000,0x2000,0x2060,0x0000,0xad96,0xad95,0x0000,0x2985,0x0000,0x73ce,0xbe16,0x49e0,0x3960,0x3100,0x2860,0x0800,0x3980,0x7baa,0x83eb,0x6b49,0x1800,0x2000,0x1800,0x2060,0x0000,0x8cb2,0xb5f7,0x0000,0x2124,0x0000,0x5aec,0xce58,0x6b2a,0x2820,0x3120,0x30c0,0x2860,0x1000,0x5a65,0x7b8a,0x3940,0x1800,0x2000,0x1000,0x1820,0x0000,0x8c4f,0xbdf5,0x00e0,0x1903,0x0000,0x4228,0xc677,0x7beb,0x3000,0x4180,0x30c0,0x30c0,0x0800,0x5a46,0x8c2d,0x49e0,0x1800,0x2840,0x1800,0x2080,0x0000,0x6b2a,0xc658,0x4a89,0x0080,0x0060,0x08e4,0xce77,0x8c2c,0x0000,0x28c0,0x3040,0x2840,0x0000,0x62c8,0x8bee,0x3940,0x1000,0x2000,0x1800,0x2000,0x0000,0x5ac9,0xd678,0x6b2c,0x0000,0x1903,0x0000,0xb5f6,0x94d0,0x3000,0x4980,0x3100,0x2880,0x2040,0x0000,0x3920,0x62a5,0x30e0,0x1800,0x1000,0x1000,0x0000,0x5249,0xc638,0x634c,0x0000,0x2124,0x0000,0xb575,0xa512,0x1800,0x4180,0x30c0,0x2880,0x2000,0x7308,0x5a44,0x0000,0x2000,0x2000,0x1800,0x1000,0x0000,0x39a4,0xbe38,0x6b8d,0x0000,0x2123,0x0000,0xb5d6,0xad32,0x0000,0x30e0,0x2880,0x2000,0x1000,0x2000,0x1800,0x1800,0x1000,0x2000,0x2000,0x0000,0x0000,0x0000,0xc638,0x8450,0x0000,0x2965,0x0000,0xa534,0xc5f5,0x4a00,0x7b6a,0x62e7,0x5225,0x41c3,0x5224,0x62e8,0x62e7,0x5a65,0x41e1,0x5264,0x41c2,0x3981,0x2060,0xad95,0x94b1,0x0000,0x29a6,0x2144, +0x10e2,0x1102,0x0000,0x52aa,0x9470,0x6b28,0x62a6,0x5224,0x41a1,0x3960,0x3960,0x3940,0x3940,0x3981,0x3120,0x3960,0x3961,0x3961,0x0000,0x73ae,0xa555,0x4247,0x10e3,0x0000,0x29c7,0x9d12,0x83cb,0x5224,0x5224,0x41e3,0x41c3,0x3920,0x840d,0xc616,0x732a,0x28c0,0x41e3,0x41a2,0x39a3,0x2060,0x634b,0x9d33,0x4248,0x1903,0x10c2,0x0082,0x9512,0x8c2e,0x5202,0x5244,0x41e3,0x41a3,0x3980,0x946d,0x9c8f,0xb572,0x734a,0x2880,0x41c3,0x3982,0x3120,0x39c5,0xad95,0x6b6d,0x0080,0x1903,0x0000,0x9d12,0x946e,0x49c1,0x5204,0x41e3,0x41c3,0x41a2,0x9c6e,0x9ccf,0xad51,0x4a04,0x4182,0x4182,0x3982,0x30e0,0x39a5,0xad95,0x6bad,0x00c0,0x2184,0x0000,0x9d14,0xad32,0x51e0,0x5246,0x49e4,0x49c3,0x41a3,0x2100,0xad72,0xbdd4,0x3980,0x4183,0x4183,0x3962,0x3142,0x20a0,0xb5d6,0x8cb2,0x0000,0x2144,0x0000,0x8471,0xb5b4,0x5241,0x5225,0x4a04,0x4203,0x2920,0x6b49,0xb572,0x840d,0x4a24,0x39a1,0x39a2,0x3982,0x3963,0x0000,0xad94,0x9d33,0x0000,0x2964,0x0000,0x8c71,0xbdd4,0x4a00,0x5245,0x4a24,0x49e3,0x3960,0x5ac7,0xb552,0x9caf,0x6b07,0x3980,0x41a2,0x3961,0x3964,0x0000,0xad74,0xad74,0x0000,0x2985,0x0000,0x73ae,0xc5f6,0x6ac6,0x5224,0x5225,0x41c3,0x3981,0x5a85,0x7ba9,0xad72,0xa510,0x3120,0x41a2,0x3982,0x4183,0x0000,0x94b1,0xb5f6,0x0000,0x2144,0x0000,0x5acb,0xce38,0x83ac,0x4a01,0x5244,0x49e3,0x4181,0x5a65,0x9cef,0xa510,0x8c4d,0x3940,0x41a3,0x3982,0x41a3,0x0000,0x8c2f,0xb5d5,0x0100,0x18e2,0x0000,0x4228,0xc656,0x842c,0x49c2,0x5245,0x4a04,0x39a1,0x5aa6,0xad10,0x9c8f,0x948e,0x4a05,0x3980,0x39a2,0x3983,0x0000,0x736c,0xc638,0x4268,0x0080,0x0040,0x1104,0xce57,0x942d,0x49a0,0x4a04,0x49e3,0x3980,0x62c8,0xad32,0xa4f1,0x9cb0,0x3960,0x3982,0x3982,0x3983,0x0000,0x630a,0xce78,0x634c,0x0000,0x2103,0x0000,0xbdd6,0xa4d1,0x49e0,0x5a65,0x5203,0x4a03,0x3981,0x6309,0x9cd0,0x8bec,0x4180,0x41a2,0x4182,0x3963,0x2040,0x5a89,0xce38,0x634c,0x0000,0x2123,0x0000,0xad95,0xad32,0x51e0,0x5a66,0x4a03,0x49e3,0x4181,0x7b69,0x9cd0,0x83ec,0x4a04,0x4182,0x4182,0x3982,0x2900,0x39e5,0xc637,0x6bae,0x0000,0x2123,0x0000,0xb5b6,0xb532,0x6ac7,0x944e,0x6ae8,0x62a6,0x6ae7,0x4a03,0x7baa,0x62e7,0x5aa6,0x5265,0x3981,0x6b29,0x62e8,0x1040,0xc616,0x8450,0x0000,0x2965,0x0000,0xa533,0xc5f5,0x3980,0x4a04,0x41c2,0x41c0,0x41c1,0x4180,0x3940,0x3960,0x3960,0x3980,0x3140,0x3940,0x3121,0x0800,0xadb5,0x94b2,0x0000,0x29a5,0x2164, +0x10e2,0x1903,0x0000,0x4a69,0x842f,0x6b28,0x62c6,0x4a03,0x49e2,0x41c1,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x3960,0x3961,0x0000,0x736d,0xad55,0x4247,0x10e2,0x0000,0x29e7,0x9cf1,0x7baa,0x4a02,0x4a02,0x41a1,0x41a1,0x3960,0x4a66,0xa532,0x734b,0x28c0,0x41c2,0x3960,0x4181,0x2000,0x630b,0xa554,0x4a89,0x10e2,0x10a1,0x0062,0x94d1,0x8c2d,0x51c0,0x4a03,0x41c1,0x41a0,0x41c2,0x28e0,0x5aa7,0xad51,0x5ac7,0x30e0,0x3981,0x3960,0x3100,0x3183,0xa575,0x6b6d,0x0060,0x10e3,0x0000,0x9cf1,0x8c4d,0x49c0,0x49c2,0x41c1,0x41a1,0x41a2,0x0800,0x7bec,0xb593,0x4180,0x4180,0x3980,0x3960,0x28c0,0x3164,0xa554,0x73ae,0x00c0,0x2984,0x0000,0x9d13,0xa512,0x49c0,0x4a04,0x49c2,0x41c2,0x3900,0x83cb,0x9cd0,0x9cf1,0x4a24,0x3940,0x4181,0x3940,0x28e0,0x1860,0xb595,0x8c91,0x0000,0x2144,0x0000,0x8450,0xad93,0x5220,0x4a04,0x49e2,0x41c2,0x2900,0x7349,0xad32,0x9c8f,0x62e8,0x3120,0x3981,0x3940,0x3121,0x0000,0xa554,0x9d33,0x0000,0x2964,0x0000,0x8c50,0xbdb4,0x49e0,0x5224,0x49e2,0x41c2,0x20a0,0x7bab,0xc5d4,0x948f,0x7bab,0x3940,0x3981,0x3140,0x3983,0x0000,0xad74,0xad74,0x0000,0x2965,0x0000,0x738e,0xc5f6,0x6ae7,0x4a03,0x49e3,0x41a1,0x4181,0x3920,0x3982,0x9cd0,0x5ac8,0x3100,0x4180,0x3140,0x3962,0x0000,0x8c70,0xb5d6,0x0060,0x2144,0x0000,0x52ca,0xce37,0x83ab,0x41a0,0x49e3,0x49c2,0x3940,0x49e3,0xa511,0xb5b3,0x8c4d,0x3100,0x4181,0x3981,0x3982,0x0000,0x840f,0xb5d5,0x1942,0x18e2,0x0000,0x4208,0xc636,0x8c0c,0x4980,0x5204,0x41c2,0x2900,0x62c7,0xad30,0x83ee,0xb552,0x5a86,0x2900,0x4181,0x3962,0x0000,0x6b4c,0xc658,0x4268,0x0060,0x0060,0x1925,0xce57,0x8c2d,0x4180,0x49e3,0x41c2,0x28c0,0x7b8b,0xa511,0x5288,0xb552,0x4180,0x3920,0x3980,0x3161,0x0000,0x5aea,0xce78,0x632b,0x0000,0x2103,0x0000,0xbdd6,0xa4d1,0x49c0,0x5244,0x51e3,0x30c0,0x946d,0xbd92,0x52a8,0x2000,0x41a1,0x4180,0x3960,0x3961,0x1800,0x5289,0xc658,0x636c,0x0000,0x2124,0x0000,0xb595,0xad32,0x49a0,0x5a44,0x49c2,0x41a1,0x41a2,0x2000,0x31a3,0xad10,0xad30,0x41a0,0x3940,0x3961,0x28c0,0x39c4,0xc617,0x6b8e,0x0000,0x2123,0x0000,0xb5d6,0xad32,0x7bcc,0xc5f4,0x8c2d,0x944e,0xad11,0x7b8b,0x734a,0x7b8b,0xb572,0x734a,0x1820,0x7bcb,0x7bcc,0x1880,0xc617,0x8450,0x0000,0x2985,0x0000,0xa533,0xbdd4,0x41a0,0x5224,0x49e3,0x41c1,0x41c1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x4181,0x3960,0x3961,0x0000,0xad95,0x94d2,0x0000,0x31a6,0x2144, +0x10e2,0x1903,0x0000,0x4aaa,0x8450,0x6308,0x62c6,0x4a24,0x41e2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x3981,0x41a2,0x0000,0x6b6c,0xad74,0x3a27,0x1903,0x0020,0x2186,0x9d12,0x83cb,0x49e2,0x5223,0x41a1,0x41a1,0x3980,0x41c2,0xb551,0x7b8b,0x2040,0x49c2,0x4181,0x4182,0x1800,0x5aea,0xa554,0x4268,0x10e2,0x10c2,0x0001,0x9cf2,0x8c0d,0x49c0,0x5204,0x41a1,0x41c2,0x3100,0x83ec,0xbdb3,0x738b,0x3120,0x41c2,0x41a1,0x41a2,0x3100,0x39e4,0xadd6,0x632c,0x0020,0x1904,0x0000,0x9cf1,0x8c4d,0x41a0,0x4a03,0x41c2,0x4181,0x49c2,0x7baa,0x7bac,0xbd93,0x62a7,0x3140,0x41a1,0x41a1,0x3140,0x3164,0xb595,0x73ae,0x0000,0x2165,0x0000,0x94d2,0xa511,0x41a0,0x5224,0x41c1,0x41a1,0x4180,0x942d,0xb553,0xc615,0x5aa6,0x3940,0x41a1,0x3961,0x3942,0x1000,0xb595,0x8450,0x0000,0x2144,0x0000,0x7c30,0xad94,0x5220,0x5224,0x49e2,0x41a1,0x3960,0x62e8,0x5ac8,0xa511,0x9caf,0x1800,0x41a2,0x3961,0x41a4,0x0000,0xad94,0x8cb1,0x0000,0x2144,0x0000,0x8430,0xbdd5,0x49c0,0x5a44,0x49c2,0x41c2,0x28c0,0x7b8a,0xad11,0x840e,0xad31,0x4180,0x3960,0x3981,0x41e4,0x0000,0xad95,0xad75,0x0000,0x2965,0x0000,0x6b6d,0xc616,0x62c6,0x5223,0x49e2,0x41c1,0x49c2,0x1800,0x9c6f,0xa4d0,0x0000,0x41c2,0x4180,0x3960,0x41c3,0x0000,0x94b1,0xb5d5,0x0000,0x2144,0x0000,0x52aa,0xc636,0x7369,0x41c0,0x4a04,0x49e3,0x28a0,0x6b28,0xad52,0x946f,0xa4f0,0x41c1,0x4180,0x41a1,0x41a3,0x0000,0x840f,0xb594,0x00a0,0x2143,0x0000,0x39e8,0xc637,0x840c,0x4160,0x5244,0x49c2,0x41a2,0x41c1,0x7bab,0xa4f2,0xbd73,0x49e3,0x3960,0x4181,0x41a3,0x0000,0x738c,0xc658,0x31e7,0x0880,0x0880,0x0042,0xc637,0x8c4e,0x3980,0x4a04,0x49e2,0x30e0,0x734a,0xad32,0x83cc,0xb552,0x3960,0x3941,0x3960,0x4183,0x0000,0x630a,0xd6b9,0x5aeb,0x0000,0x2103,0x0000,0xbdd6,0xa4d1,0x4180,0x5224,0x49c2,0x4180,0x6b28,0x9c8e,0x944d,0x6b08,0x3980,0x41a1,0x3980,0x41a2,0x2080,0x5aaa,0xc658,0x5b0b,0x0000,0x2124,0x0000,0xad74,0xad32,0x49a0,0x5a45,0x49c2,0x49c2,0x4180,0x5a66,0x8c2d,0x9c8e,0x7b8a,0x41a1,0x4181,0x41a2,0x3100,0x41c5,0xc617,0x6b4d,0x0000,0x2944,0x0000,0xadb5,0xad52,0x6b07,0xad10,0x83ec,0x8bed,0x944e,0x7b8b,0x7b8b,0x736a,0x942e,0x732a,0x3940,0x6b08,0x738b,0x2101,0xc637,0x7c2f,0x0000,0x2985,0x0000,0x9d13,0xc5f5,0x3940,0x5a44,0x49a3,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x4181,0x39a2,0x0000,0xadb5,0x94f2,0x0000,0x31c6,0x2144, +0x10e3,0x18e3,0x0020,0x29a6,0x94b2,0x73ac,0x41c0,0x41c1,0x3980,0x3140,0x3960,0x3960,0x3960,0x3960,0x3140,0x3140,0x3980,0x20c0,0x0000,0xa533,0x9d13,0x2143,0x2144,0x18e2,0x0000,0x94d2,0xa511,0x2880,0x3920,0x3940,0x3100,0x3100,0x3140,0x8c2d,0x62c8,0x1840,0x3960,0x3940,0x28c0,0x0000,0x94d2,0x9d13,0x1902,0x2123,0x18e2,0x0000,0x9491,0xad73,0x3100,0x30c0,0x4160,0x3940,0x2880,0x9caf,0xb572,0x840c,0x4a03,0x28e0,0x3940,0x3140,0x0000,0x842f,0xadb6,0x31a5,0x1903,0x1904,0x0000,0x8c90,0xb594,0x28c0,0x3120,0x3980,0x3120,0x30e0,0x8c2d,0xa4f0,0x946e,0x41a2,0x3140,0x3160,0x3140,0x0000,0x738d,0xbe17,0x4a69,0x1903,0x2144,0x0000,0x73cf,0xbe36,0x5a86,0x2040,0x3980,0x3940,0x3940,0x2880,0x6aea,0x8c4e,0x41e2,0x3120,0x3120,0x3140,0x0000,0x62ea,0xc658,0x634b,0x0000,0x2144,0x0000,0x5b2c,0xc657,0x736b,0x0800,0x3960,0x3920,0x2060,0x62c8,0x9caf,0x9caf,0x62c8,0x2060,0x3940,0x3940,0x0000,0x5aa9,0xc657,0x6b6d,0x0000,0x2144,0x0000,0x5b0b,0xd6b9,0x738b,0x0000,0x41a2,0x3940,0x3120,0x41c2,0x944e,0x9cb0,0x736a,0x2040,0x3160,0x3160,0x0000,0x2961,0xc658,0x8430,0x0000,0x2144,0x0020,0x2966,0xc638,0x842e,0x1000,0x41a1,0x3960,0x4181,0x2000,0x8c2d,0x7bab,0x1800,0x3961,0x3940,0x3160,0x20a0,0x0000,0xbdf6,0x9d13,0x0000,0x2144,0x08a1,0x0000,0xbdf7,0xa511,0x0000,0x4182,0x4160,0x30c0,0x5245,0x9caf,0xa4cf,0x8c2c,0x3120,0x3140,0x4160,0x2000,0x0000,0xb5b7,0xa513,0x0000,0x1923,0x1903,0x0000,0xb5b6,0xbdd4,0x0000,0x3980,0x4180,0x3120,0x3960,0x83eb,0x9cd0,0x7b8b,0x28a0,0x3120,0x3940,0x28a0,0x0000,0xad95,0xb5b6,0x0000,0x2123,0x18e2,0x0000,0xb5b6,0xbdd5,0x0000,0x3981,0x41a1,0x3940,0x3962,0x946f,0xad30,0x7b8b,0x2060,0x3940,0x3120,0x3121,0x0000,0xa513,0xce78,0x1144,0x10e2,0x2123,0x0000,0x9cf3,0xc5f6,0x28c0,0x3940,0x4181,0x3981,0x2080,0x28c0,0x83cb,0x940c,0x4180,0x3940,0x3980,0x3962,0x0000,0x9492,0xc638,0x1943,0x18c2,0x2124,0x0000,0x9491,0xce57,0x41c0,0x3100,0x41a2,0x3940,0x3100,0x8bcb,0x8c0c,0x3982,0x1000,0x3140,0x3940,0x3960,0x0000,0x8c50,0xc638,0x29c6,0x1924,0x2944,0x0000,0x8cb1,0xd698,0x49c0,0x4160,0x49c2,0x4140,0x38e0,0x41a0,0x5245,0x41e2,0x2080,0x39a0,0x3961,0x41a3,0x0000,0x73ae,0xce99,0x4a89,0x0020,0x2164,0x0000,0x7c0f,0xd6b9,0x5243,0x3100,0x49c3,0x41a1,0x41a1,0x4181,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a2,0x0000,0x39c5,0xc658,0x73ee,0x0000,0x29a5,0x2144, +0x10e3,0x10c3,0x10c1,0x0000,0x6b8e,0xb5b5,0x9c8e,0x5a86,0x4a03,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c1,0x41c2,0x5a66,0xa4f2,0xbe17,0x5b4c,0x1901,0x2124,0x1903,0x0000,0x52ea,0xc657,0xad73,0x62e7,0x5265,0x5a86,0x5225,0x5a45,0x51e4,0x5225,0x5265,0x5245,0x5244,0x5287,0x94f1,0xb5d5,0x5b0b,0x08c1,0x2144,0x18e3,0x0000,0x4269,0xc657,0xb594,0x62a6,0x5204,0x5204,0x4a04,0x41e2,0x4201,0x5286,0x5245,0x5224,0x5225,0x5a46,0x8c2f,0xbe17,0x73ef,0x0860,0x2144,0x1923,0x0000,0x31e7,0xbdf6,0xbd94,0x62c7,0x5223,0x5203,0x49c2,0x41c3,0x5a86,0x41c1,0x49c2,0x49e2,0x4a03,0x4204,0x7bcd,0xc678,0x8cd2,0x0060,0x2164,0x1902,0x10a0,0x0062,0xb5b6,0xce16,0x7349,0x4a04,0x4a03,0x49e3,0x49e2,0x4180,0x3960,0x41c1,0x41c2,0x4a04,0x4203,0x7bce,0xce58,0x94f3,0x0080,0x2123,0x1903,0x18e3,0x0000,0xa554,0xce78,0x7bab,0x5244,0x5245,0x5245,0x4a24,0x62c7,0x5a85,0x49e3,0x5224,0x4a24,0x4a25,0x73ac,0xc637,0x9d33,0x0000,0x2144,0x1903,0x18c2,0x0000,0xa555,0xce98,0x7bca,0x4a24,0x5206,0x5204,0x49e3,0x49e4,0x5265,0x41e2,0x4a24,0x5244,0x5225,0x6aea,0xc616,0xb5d6,0x1125,0x1942,0x18e2,0x1903,0x0000,0x94b2,0xd698,0x8bec,0x49c3,0x41a2,0x4180,0x41a1,0x3980,0x3980,0x4180,0x4981,0x4181,0x3980,0x4a04,0xb594,0xce79,0x3a29,0x18e2,0x18e3,0x1903,0x0000,0x7bd0,0xd6b9,0x9caf,0x5224,0x49c2,0x49c1,0x4181,0x4a02,0x62e6,0x3980,0x49e3,0x49e3,0x49a3,0x5224,0xad95,0xc67a,0x4a6a,0x00a0,0x1923,0x1903,0x0000,0x5b0b,0xdefa,0xb573,0x5ac6,0x5244,0x5203,0x4a04,0x5a66,0x5ac6,0x41e2,0x5205,0x5225,0x4a05,0x5246,0xa533,0xce99,0x5b2c,0x0000,0x1923,0x1903,0x0000,0x5b2d,0xdef9,0xad51,0x51e4,0x49c2,0x49c1,0x3960,0x39a2,0x4a24,0x3960,0x41e2,0x41c2,0x41c2,0x39a3,0x9470,0xdefa,0x7c0f,0x0000,0x2144,0x18e2,0x0000,0x31c8,0xce78,0xb593,0x5a43,0x49c1,0x41a0,0x4180,0x4160,0x30a0,0x4181,0x41a1,0x4160,0x3980,0x4160,0x8c2e,0xd6ba,0x8431,0x0000,0x2944,0x18e3,0x0000,0x2145,0xce58,0xc616,0x62a6,0x49a0,0x49c0,0x49e2,0x5203,0x4160,0x41a1,0x4a03,0x49e3,0x49c2,0x41e3,0x842f,0xd69a,0x8471,0x0000,0x2184,0x2102,0x0000,0x1125,0xce78,0xce15,0x5a87,0x41c3,0x41a0,0x49e2,0x49c2,0x3960,0x4180,0x41c1,0x4180,0x49a0,0x4180,0x7bac,0xce99,0x94f3,0x0000,0x2144,0x1923,0x10c1,0x0001,0xc638,0xc636,0x5263,0x3960,0x3960,0x3940,0x3900,0x3900,0x3920,0x3920,0x3920,0x3920,0x30e0,0x4a26,0xbdf6,0xb5d6,0x08e2,0x2965,0x2985,0x2144, +0x10e2,0x10c2,0x10c1,0x0881,0x0000,0x7bee,0xb5f6,0xbe38,0xb5f7,0xbdf7,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xb5f6,0xbe38,0xb5d6,0x5b2c,0x1923,0x2164,0x1903,0x10c2,0x10e2,0x0000,0x636c,0xbdf6,0xc637,0xbdf6,0xbdf6,0xbdf7,0xbdf7,0xbdf6,0xbdf7,0xbe17,0xb617,0xb5f6,0xb5f6,0xa595,0x5b2b,0x0020,0x2144,0x1903,0x10c2,0x18e3,0x0000,0x52cb,0xb5b5,0xc637,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5d6,0xb5d6,0xbdd6,0xb5d6,0x73ce,0x0040,0x2144,0x1903,0x10e2,0x18e3,0x0000,0x4a89,0xb5b5,0xc637,0xb5d6,0xb5b6,0xb5d6,0xb5f6,0xad95,0xb5b6,0xb5d6,0xb5b5,0xb5d6,0xbe17,0xb617,0x8c91,0x0903,0x2144,0x1903,0x10e2,0x18e2,0x0000,0x31a6,0xa533,0xbe17,0xbdf6,0xb5d6,0xb5b6,0xb5d6,0xbdf6,0xb5d6,0xb5d5,0xb5b5,0xb5d6,0xb5f6,0xbe37,0x94d2,0x0903,0x1903,0x1923,0x18e2,0x18e3,0x0000,0x08c3,0x94d2,0xbe17,0xbdf6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b6,0xb5d6,0xb5d6,0xb5b6,0xb5d6,0xbe17,0x94b2,0x1123,0x1903,0x1923,0x10c2,0x10c2,0x0020,0x00c3,0x9d12,0xc657,0xbdf6,0xb5d6,0xb5d6,0xb5b5,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5b5,0xb5d6,0xbdf7,0xa554,0x3a27,0x10e2,0x1923,0x10c2,0x10c2,0x10a2,0x0000,0x94b1,0xc657,0xb5d6,0xb5b5,0xb5d5,0xb5d5,0xb5d5,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xbe17,0xbdf6,0x5b0b,0x0000,0x2124,0x10e2,0x10c2,0x18e2,0x0000,0x7c0f,0xc617,0xbdf6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xb5b5,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xc637,0xb5b6,0x52ab,0x0000,0x2144,0x10e2,0x10c2,0x1903,0x0000,0x6b6d,0xbe17,0xc637,0xbdf6,0xbdf6,0xbdf6,0xb5d6,0xb5d6,0xbdf6,0xbdf6,0xb5d6,0xb5b5,0xbdf6,0xb5b5,0x634c,0x0000,0x2144,0x10e2,0x10c2,0x10c2,0x0000,0x73ad,0xc637,0xbe17,0xb5b5,0xb5d6,0xb5b6,0xb5b6,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xbe17,0xc638,0x842f,0x0000,0x2144,0x10e2,0x10c2,0x18e3,0x0000,0x5aeb,0xbdf6,0xbe17,0xb5d5,0xb5d6,0xb5d6,0xb5d6,0xb5f6,0xb5b6,0xbdf6,0xb5b5,0xb5b6,0xbdf7,0xc658,0x8450,0x0000,0x2144,0x1903,0x10c2,0x1903,0x0000,0x4248,0xb5b6,0xc637,0xb5d6,0xb5d6,0xbdf7,0xb5f6,0xb5f6,0xb5f6,0xb5d6,0xb5d6,0xb5d6,0xbdf7,0xbe17,0x8c71,0x0060,0x2144,0x2144,0x1903,0x1903,0x0000,0x4a69,0xbdf6,0xc678,0xb5f6,0xb5d6,0xb5f6,0xbdf6,0xb5f6,0xb5d6,0xb5d6,0xb5b5,0xadb5,0xb5d6,0xc637,0x94b2,0x0081,0x2123,0x1923,0x1903,0x2123,0x0000,0x3a08,0xb5d5,0xbe37,0xad95,0xadb5,0xadb5,0xb5b5,0xadb5,0xad95,0xad95,0xad95,0xad74,0xad95,0xc637,0xad95,0x4248,0x1903,0x2985,0x2144,0x2124, +0x10c2,0x10c1,0x08a1,0x10c2,0x0880,0x0000,0x1146,0x5b0c,0x6b8d,0x6bae,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x52eb,0x00e3,0x0000,0x2164,0x18e2,0x10e2,0x10e2,0x10c2,0x18e2,0x0000,0x0000,0x4a8a,0x5aeb,0x5aeb,0x5b2c,0x5b2c,0x5b2c,0x632c,0x634c,0x5b4c,0x5b2c,0x4aaa,0x00c2,0x0000,0x2144,0x1903,0x10e2,0x10c2,0x10c2,0x18e3,0x0000,0x0000,0x4aaa,0x5b2c,0x5b2c,0x632c,0x632c,0x5b0c,0x5b2c,0x5b2c,0x5b2c,0x5b0c,0x52aa,0x1965,0x0000,0x2123,0x18e3,0x10e2,0x10e2,0x10c2,0x18e3,0x0000,0x0000,0x4aaa,0x5b2c,0x632c,0x634c,0x634d,0x634c,0x634c,0x634c,0x634d,0x636d,0x5b2c,0x29c6,0x0000,0x1903,0x1923,0x10e2,0x10e2,0x08a1,0x1903,0x0000,0x0000,0x3a29,0x5b2c,0x634c,0x632c,0x634c,0x636c,0x636d,0x636c,0x636d,0x636d,0x5b0b,0x29c6,0x0000,0x1923,0x1923,0x10e2,0x10e2,0x10c2,0x10c2,0x0020,0x0000,0x31e7,0x632c,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b2b,0x5b2c,0x634c,0x5aeb,0x29a6,0x0000,0x10c1,0x1903,0x10c2,0x10c2,0x10c2,0x10e2,0x0020,0x0000,0x3a08,0x5b0b,0x5b2b,0x5b2c,0x5b2c,0x634c,0x634c,0x632c,0x5b2c,0x5b2c,0x5b2c,0x4269,0x0000,0x0060,0x2164,0x10e2,0x10c2,0x10c2,0x10c2,0x10a1,0x0000,0x31e7,0x634c,0x636d,0x6b8d,0x6b8d,0x6bad,0x6bad,0x6bae,0x73ce,0x73ae,0x6bae,0x5b0b,0x0000,0x0000,0x1923,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x0000,0x1945,0x5b0b,0x6b8d,0x6b8d,0x636d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x636d,0x636d,0x52ca,0x0000,0x0000,0x2144,0x18e2,0x10c2,0x10c2,0x10c2,0x1903,0x0000,0x0000,0x52aa,0x632c,0x632c,0x634c,0x5b2c,0x634c,0x634c,0x632c,0x5b2b,0x5b2c,0x52aa,0x0000,0x0000,0x2144,0x10e2,0x10e2,0x10c2,0x10c2,0x1903,0x0000,0x0083,0x5b2c,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x636d,0x6b6d,0x6b6d,0x5b2b,0x21a5,0x0000,0x2123,0x1903,0x10c2,0x10c2,0x08a1,0x1903,0x0000,0x0000,0x5b2c,0x6bae,0x6bae,0x73ce,0x73ae,0x73ce,0x6bae,0x73ce,0x73ae,0x6b8d,0x636d,0x29c6,0x0000,0x1923,0x1903,0x18e3,0x18e2,0x10a2,0x1903,0x0000,0x0000,0x52ca,0x6b8d,0x6bae,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x636d,0x638d,0x634c,0x29a6,0x0000,0x2144,0x2144,0x1923,0x1903,0x1903,0x2124,0x0000,0x0000,0x52eb,0x6b8d,0x73ce,0x6bae,0x6bae,0x73ae,0x73ae,0x73ae,0x73ae,0x6bae,0x636d,0x3208,0x0000,0x1923,0x2124,0x1903,0x1903,0x1903,0x2123,0x0000,0x0000,0x5b0b,0x73ef,0x73ce,0x73ee,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x73ef,0x5b2c,0x0000,0x0080,0x2144,0x2143,0x2144,0x1923, +0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x1923,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x2144,0x10e3,0x10e2,0x10e2,0x18e3,0x10c2,0x10c2,0x1923,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1923,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x2124,0x18e3,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x1903,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x1924,0x1103,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x1903,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2144,0x2144,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x1924,0x1903,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x2123,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2123,0x10e2,0x1903,0x18e2,0x10c2,0x10c2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2124,0x10c2,0x18e3,0x10e2,0x10e2,0x10c2,0x18e3,0x1903,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2124,0x1903,0x18e2,0x1903,0x10e2,0x10e2,0x1903,0x2144,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2124,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x2124,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0880,0x2144,0x1903,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x1923,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2144,0x2123,0x18e2,0x18e2,0x18e3,0x10c2,0x10c2,0x2124,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a1,0x2965,0x2124,0x2123,0x2123,0x1903,0x1903,0x1903,0x2144,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x2144,0x2124,0x1923,0x1923,0x1903,0x1903,0x1903,0x2144,0x2123,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x2144,0x1923,0x2144,0x2123,0x1903, +0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x1903,0x2124,0x2964,0x2964,0x2944,0x2944,0x2144,0x2144,0x2144,0x2144,0x2144,0x2143,0x2144,0x2123,0x1903,0x2123,0x18e2,0x1903,0x1903,0x1903,0x2123,0x2123,0x2144,0x2964,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x1923,0x1903,0x1924,0x2164,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2123,0x2144,0x2144,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2124,0x1903,0x18e2,0x10c2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x2144,0x2144,0x1923,0x1923,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1923,0x2144,0x2123,0x1903,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x2144,0x2164,0x1923,0x1923,0x1903,0x1903,0x1903,0x1923,0x1923,0x1923,0x2144,0x2123,0x1923,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2144,0x2964,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2144,0x2124,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e2,0x18e2,0x1903,0x2144,0x2124,0x1923,0x1903,0x18e3,0x1923,0x1903,0x1903,0x1903,0x1923,0x2144,0x2144,0x1923,0x1903,0x1903,0x1923,0x1903,0x18e3,0x1903,0x1903,0x1903,0x2123,0x2144,0x2124,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2144,0x2144,0x2123,0x1923,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2123,0x2144,0x2144,0x1903,0x1903,0x1923,0x1903,0x1903,0x1903,0x1903,0x2144,0x2144,0x2123,0x2123,0x1923,0x1903,0x2123,0x1923,0x1903,0x1903,0x1923,0x2123,0x2164,0x2144,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x10e2,0x2123,0x2144,0x2123,0x1903,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2123,0x2144,0x2144,0x1903,0x1923,0x1903,0x1903,0x1923,0x1903,0x1903,0x1923,0x2164,0x2123,0x1923,0x1903,0x1923,0x1903,0x1903,0x1903,0x1923,0x1903,0x2123,0x2144,0x2164,0x2124,0x1923,0x1923,0x2123,0x2123,0x2124,0x2123,0x2123,0x2964,0x2944,0x2123,0x2123,0x2123,0x2103,0x2123,0x2123,0x2123,0x2144,0x2123,0x2964,0x2144,0x2124,0x2144,0x2144,0x2144,0x2124,0x2123,0x2123,0x2144,0x2965,0x2944,0x2944,0x2143,0x2944,0x2144,0x2123,0x2144,0x2143,0x2144,0x2964,0x2985,0x2985,0x2965,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2965,0x2964,0x2964,0x2964,0x2964,0x2144,0x2144,0x2144,0x2144,0x2964,0x2964,0x2985,0x2965,0x2965,0x2964,0x2964,0x2964,0x2164,0x2144,0x2144,0x2164,0x2164,0x2144,0x1923,0x1903,0x1903,0x1923,0x1923, +0x10c2,0x10e2,0x10c2,0x10c2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x18e2,0x10e2,0x18e2,0x10e2,0x08a1,0x1903,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1903,0x18e2,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x1903,0x10c2,0x10e2,0x10c2,0x10c2,0x1903,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1923,0x10e2,0x18e3,0x10e2,0x1903,0x1903,0x08a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1923,0x10e2,0x10e2,0x1902,0x10e2,0x10e2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0880,0x1923,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x1903,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2143,0x10c2,0x10e2,0x10e2,0x10c1,0x08a1,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x10c2,0x10e2,0x10e2,0x10c1,0x10c1,0x1902,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10e2,0x10e2,0x10e2,0x10c2,0x08a1,0x1903,0x08a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e2,0x10e2,0x10e2,0x18e2,0x10c2,0x18e2,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1923,0x1903,0x1903,0x1902,0x1902,0x1903,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2124,0x1923,0x1923,0x1923,0x1903,0x1903,0x2144,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x1923,0x1903,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x18e2,0x0000,0x29e6,0x8430,0x9cd3,0xa512,0x9d34,0xa535,0xa513,0x9d14,0x9d14,0xa512,0x9cf2,0xa513,0x9d14,0x9d12,0x9cf1,0xa4f2,0x9cf2,0x9cf2,0x9cf3,0x9cf3,0x94f2,0x94f2,0x9cf3,0x8c71,0x4228,0x0000,0x2124,0x18e2,0x18e2,0x10c2,0x18e2,0x0000,0x1924,0x7c0f,0x94f2,0x9d13,0x9d13,0x9cf2,0x9d13,0x9d13,0x9cf3,0x9cf3,0xa513,0x9d13,0x94b2,0x52ca,0x0000,0x1923,0x1103,0x10e2,0x10e2,0x10e2,0x0000,0x2143,0x7c0f,0x9cf3,0x9d13,0x9d33,0xa553,0xa554,0xa554,0xa554,0xa554,0xa553,0xa553,0xa513,0x6b6d,0x0000,0x1923,0x1903,0x1903,0x10e2,0x1902,0x0060,0x00c2,0x7c0f,0x9cf2,0x9d33,0x9cf2,0x9d33,0x9d13,0x9cf3,0xa533,0xa513,0xa513,0xa534,0x9cf3,0x73ae,0x0000,0x1902,0x1924,0x1903,0x08c1,0x1902,0x0060,0x0000,0x73cf,0x9cf2,0x9d13,0xa513,0x9d13,0x9d33,0xa533,0x9d33,0x9d33,0x9d12,0x9d33,0x9d33,0x73ce,0x0000,0x10e2,0x1903,0x10c2,0x10e2,0x10e2,0x10c1,0x0000,0x632c,0x9cd2,0x9cf2,0x9d12,0xa533,0x9d12,0x9cf2,0x9d13,0x9cf2,0x9cf2,0x9cd1,0x8c70,0x73ee,0x08c2,0x08a1,0x1924,0x08c2,0x10c2,0x10c1,0x18e3,0x0000,0x4249,0x8c90,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9d13,0x9cf2,0x9cd2,0x94d2,0x94d2,0x9cf2,0x8430,0x2144,0x0040,0x1944,0x10e3,0x10c2,0x10c2,0x1903,0x0000,0x4a69,0x94b1,0xa513,0xa513,0x9cf2,0x9cf2,0x9d12,0x9d13,0x9d12,0x9d13,0xa513,0x9d12,0x94b1,0x31c6,0x0000,0x2144,0x18e2,0x10c2,0x08a1,0x1903,0x0000,0x4228,0x8c91,0x9d13,0x9d13,0xa513,0xa513,0xa513,0xa513,0xa513,0xa513,0x9d12,0x9d33,0x94d2,0x4268,0x0000,0x2144,0x10e2,0x10c2,0x08a1,0x10e2,0x0000,0x1943,0x842f,0x9cf2,0x9cd2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9d12,0xa512,0x8c91,0x4269,0x0000,0x2144,0x10e2,0x10c2,0x08c1,0x18e2,0x0000,0x0040,0x73ef,0x94d2,0x9cd2,0x9cf2,0xa512,0xa512,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x632b,0x0000,0x2124,0x18e2,0x10e1,0x08c2,0x18e2,0x18a0,0x0000,0x5b0b,0x8c72,0x94b1,0x94b1,0x94b3,0x94b1,0x9cb1,0x94b1,0x94b1,0x9491,0x94b1,0x8c70,0x4aca,0x0000,0x2944,0x1903,0x10e3,0x18e3,0x18e2,0x10a1,0x0000,0x634d,0x9cb2,0x9cd3,0x9cf2,0xa513,0x9d12,0x9d13,0xa513,0x9d12,0xa513,0xa4f3,0x94d0,0x6b8d,0x0000,0x2944,0x2164,0x1903,0x1923,0x18e3,0x2144,0x0000,0x3a07,0x844f,0x8c91,0x8c71,0x8c71,0x8c71,0x8c91,0x9491,0x9491,0x94b1,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c91,0x8c92,0x8c91,0x8cb1,0x8c91,0x5b0b,0x0000,0x2124,0x2124,0x1903,0x1902, +0x10e2,0x1103,0x1903,0x0000,0x4268,0xa511,0xbd72,0xc571,0xd58f,0xd54f,0xd571,0xcd70,0xcd70,0xcd71,0xcd6f,0xcd4f,0xc530,0xbd32,0xbd30,0xbd10,0xc530,0xbd30,0xbd30,0xbd31,0xbd31,0xbd30,0xbd51,0xbd52,0xcdf5,0xc657,0x63ae,0x0000,0x2144,0x18e2,0x1903,0x0000,0x3a27,0xa574,0xb5b4,0x9d12,0xa512,0xa4f2,0x9cf2,0xa512,0xa512,0x9cf2,0xa512,0xa532,0x9cf2,0xad74,0xc658,0x8430,0x0000,0x1923,0x10e2,0x10e2,0x0000,0x2986,0xa533,0xb5b4,0x9cd1,0x94b0,0x94b0,0x9cd1,0x9cd1,0x9cd1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0xad33,0xce78,0x94d2,0x0060,0x2144,0x1903,0x1102,0x0040,0x10e0,0xa554,0xc636,0xa532,0x9cf1,0x94b1,0x94b0,0x94b0,0x94b0,0x9cd1,0x9cd1,0x9cd1,0x9cb1,0xa512,0xce78,0xa533,0x00c1,0x1924,0x1903,0x10e2,0x0860,0x0000,0xa513,0xc637,0xa512,0x9cd1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x94b0,0x9d12,0xc617,0xa554,0x2144,0x1902,0x1903,0x10e2,0x10c2,0x0000,0x8c91,0xce57,0xad53,0x9cd0,0x9cf1,0xa4f2,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9cb0,0x9cb0,0xbdf6,0xb5b6,0x2965,0x10c2,0x1923,0x10c2,0x18e3,0x0000,0x6b8d,0xc637,0xb593,0x9cd1,0x9cf1,0x9cf1,0x9cd1,0x9cd1,0x9cb1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0xc616,0xc617,0x4268,0x00c0,0x1924,0x10c2,0x18e3,0x0000,0x7bee,0xce57,0xb594,0xa512,0xa4f1,0xa4f1,0xa4f1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0xa4f2,0x9cd1,0xc616,0xce78,0x528a,0x0000,0x1903,0x10c2,0x1903,0x0000,0x630c,0xce77,0xbdd5,0x9cd1,0x9cf1,0xa4f1,0xa512,0xa4f2,0xa4f2,0xa4f2,0xa512,0x9cf1,0x9cd1,0xb5b5,0xce98,0x73ce,0x0000,0x2144,0x10c2,0x10e2,0x0000,0x3a07,0xbdf6,0xc616,0xa4f1,0xa4f1,0xa4f2,0xa4f1,0xa4f1,0xa4f1,0x9cf1,0x9cf1,0xa511,0x9cd0,0xb594,0xc658,0x73ae,0x0000,0x2144,0x08a1,0x10c2,0x0020,0x10e2,0xa573,0xc636,0xa4d1,0xa4f1,0xa511,0xa511,0xa512,0xa4f1,0xa4f1,0xa512,0xa511,0x9cb0,0xb574,0xd6b9,0x8c71,0x0000,0x2144,0x18e2,0x10e2,0x18c1,0x0000,0xa4f3,0xde76,0xd593,0xcd51,0xcd51,0xcd73,0xc552,0xc551,0xcd71,0xcd91,0xcd92,0xbd51,0xc5b3,0xd697,0x94d2,0x0000,0x2164,0x1923,0x1903,0x10c2,0x0000,0xa4f2,0xde98,0xcd72,0xc552,0xbd90,0xc571,0xc570,0xc551,0xc572,0xc571,0xc572,0xbd52,0xc5b2,0xde98,0xad35,0x00a0,0x2144,0x2144,0x1903,0x2123,0x0000,0x73ae,0xce78,0xc616,0xad73,0xad53,0xad53,0xad53,0xad53,0xad53,0xad53,0xad53,0xad32,0xa532,0xa532,0xa532,0xa532,0xa532,0xa532,0xa532,0xa532,0xa513,0xa512,0xa532,0xad94,0xce58,0x94d2,0x0000,0x2124,0x2144,0x1923, +0x10e2,0x1902,0x0860,0x08c3,0x9cb0,0xac8d,0xbc00,0xe560,0xdd00,0xdce0,0xdce0,0xd4e0,0xd4c0,0xd4e0,0xdcc0,0xdca0,0xab60,0x7980,0x79c0,0x81c0,0x7160,0x7160,0x7180,0x7140,0x7160,0x7980,0x7180,0x71c0,0x69e0,0xa4f0,0xb5b5,0x4a89,0x10e2,0x2124,0x10a1,0x0000,0x94d2,0xa532,0x4a03,0x1800,0x1000,0x0000,0x0800,0x1000,0x0800,0x1000,0x1000,0x0800,0x1000,0x0000,0x842f,0xc658,0x5b0b,0x0040,0x1923,0x10c2,0x0000,0x8c71,0xad33,0x4a43,0x1800,0x2000,0x0800,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x0000,0x738c,0xce98,0x7c0f,0x0000,0x2124,0x18e3,0x0000,0x8c70,0xc616,0x62c7,0x1800,0x2000,0x1800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0800,0x0000,0x6309,0xce98,0x8c71,0x0000,0x2144,0x18e3,0x0000,0x842f,0xc616,0x6b08,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x1000,0x1000,0x1800,0x2000,0x0000,0x5267,0xc637,0x8cb2,0x0000,0x2164,0x1903,0x0000,0x636d,0xc657,0x83ed,0x1800,0x2000,0x1000,0x0800,0x1000,0x1000,0x1000,0x0800,0x0000,0x1000,0x0000,0x3983,0xc637,0xa554,0x0000,0x2144,0x1903,0x0000,0x3a27,0xbe16,0x9cd0,0x28a0,0x2000,0x1800,0x1000,0x1000,0x1800,0x0800,0x0800,0x1000,0x1800,0x0000,0x2080,0xbdf6,0xb5d5,0x0000,0x2124,0x1903,0x0000,0x3a08,0xce78,0xa511,0x0800,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0xbdd5,0xc637,0x10e2,0x10c1,0x1903,0x0020,0x2123,0xce58,0xbd93,0x1800,0x1000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x1800,0x1000,0x0000,0x9cf2,0xceb9,0x4289,0x0000,0x1903,0x10c2,0x0000,0xb574,0xc5f6,0x41c2,0x1000,0x1800,0x0800,0x0800,0x0800,0x0800,0x1000,0x0800,0x0000,0x1000,0x0000,0x9cb1,0xce99,0x4a89,0x0020,0x1903,0x18e3,0x0000,0xa533,0xce56,0x5a85,0x2800,0x1800,0x0000,0x0000,0x0800,0x0800,0x0800,0x1000,0x1000,0x1800,0x0000,0x840f,0xdeda,0x6b6d,0x0000,0x2124,0x2102,0x0000,0x9471,0xf6f8,0xd52b,0xd480,0xcca0,0xcc60,0xd440,0xcc60,0x92e0,0x79c0,0x7a00,0x8220,0x7a00,0x6960,0x9c4d,0xe6f9,0x7c10,0x0000,0x2964,0x2103,0x0000,0x7bee,0xf6d7,0xd52b,0xc440,0xbc00,0xbc40,0xcc20,0xc420,0x9280,0x79a0,0x8200,0x81e0,0x8220,0x6960,0x8b6a,0xdeb9,0x94f2,0x0000,0x2965,0x2124,0x0000,0x4a69,0xded9,0xa532,0x3960,0x3940,0x38c0,0x3100,0x3100,0x28e0,0x28c0,0x2880,0x2800,0x2840,0x2860,0x2860,0x2820,0x2800,0x2000,0x2000,0x2000,0x2000,0x2000,0x2040,0x1800,0x0000,0x734b,0xce78,0x8450,0x0000,0x2985,0x1923, +0x10e2,0x1902,0x0000,0x52ca,0x944e,0xab42,0xfe07,0xedc7,0xac03,0xac64,0xcd05,0xdd65,0x9bc3,0xb443,0xe564,0xf5a5,0xd4a4,0x8a82,0x8282,0x8260,0x9b46,0xa3e8,0x9346,0xa3c7,0x9b45,0xa3c8,0xa3a8,0x8a81,0x7a20,0x6100,0xad32,0x8450,0x0000,0x2144,0x0000,0x4a8a,0x9d12,0x6b29,0x4980,0x49e3,0x41c2,0x41c2,0x41c3,0x49e3,0x49e3,0x41c3,0x41a2,0x41c2,0x39a2,0x3962,0x0000,0xa513,0xa533,0x0000,0x2144,0x0000,0x39e7,0x9cd2,0x6b4a,0x41c0,0x5223,0x49c3,0x41c3,0x41a2,0x49c2,0x49e3,0x49c3,0x49c3,0x49c3,0x41a2,0x41a3,0x0000,0x9cf2,0xad95,0x0000,0x2144,0x0000,0x2185,0xad73,0x8c0d,0x30c0,0x49e3,0x49c2,0x4182,0x41a3,0x41c3,0x41c3,0x49e3,0x41c3,0x41a2,0x39a2,0x41c4,0x0000,0x94b1,0xb5d6,0x1924,0x1923,0x0882,0x0000,0xad54,0x8c4e,0x30e0,0x4a04,0x41a2,0x4182,0x49c3,0x49c3,0x49c3,0x49c3,0x41a2,0x4182,0x4182,0x41a4,0x0000,0x73ee,0xbe17,0x3a07,0x10e2,0x1903,0x0000,0xa513,0xa4f2,0x2820,0x49e3,0x49c3,0x41a2,0x41a3,0x49c3,0x41a3,0x41a3,0x41c3,0x41a2,0x4182,0x41a3,0x0000,0x632c,0xce78,0x4a68,0x0000,0x2124,0x0000,0x8c91,0xbdd4,0x3960,0x49e2,0x49c3,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41c3,0x41a2,0x41a2,0x41c3,0x0000,0x4a27,0xc658,0x5b0c,0x0000,0x2123,0x0000,0x8c91,0xbdf5,0x3960,0x41a1,0x49e3,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a3,0x41a2,0x41a2,0x41a3,0x1000,0x39a4,0xd6b9,0x7bef,0x0000,0x2144,0x0000,0x7c0f,0xce57,0x5203,0x3120,0x49e3,0x4182,0x4182,0x41a2,0x41c3,0x41c3,0x41a2,0x41a2,0x4182,0x41a3,0x3101,0x0000,0xbe17,0x9d13,0x0000,0x2165,0x0000,0x4aaa,0xce57,0x732a,0x30e0,0x4a04,0x41a2,0x41a2,0x41a2,0x41c3,0x49c3,0x49c3,0x41a2,0x41a2,0x4182,0x3121,0x0000,0xc637,0x9d13,0x0000,0x2964,0x0000,0x31e7,0xc636,0x8c0d,0x38c0,0x51e3,0x41a2,0x41a2,0x41c3,0x49c3,0x49c3,0x41c3,0x41c2,0x41a2,0x41a2,0x41a4,0x0000,0xb5b5,0xb5b6,0x0000,0x2124,0x0800,0x1126,0xce36,0xddad,0xed60,0xeda6,0x9be4,0xb485,0xeda4,0xf584,0xb3c3,0x8261,0x8aa2,0x8282,0x8282,0x8a63,0x4800,0xad12,0xc617,0x00a3,0x1902,0x20e2,0x0000,0xbdb3,0xe5f0,0xed20,0xf5e7,0x8b23,0xac25,0xfdc7,0xed85,0xb3c4,0x8a62,0x8281,0x9b25,0xbc09,0x8283,0x5000,0x9c90,0xc679,0x29c6,0x18c1,0x2965,0x0000,0xa554,0xc616,0x2020,0x49e2,0x49e3,0x49c2,0x49c2,0x41c2,0x41c2,0x41c2,0x41a2,0x41a2,0x49a2,0x49c2,0x49a2,0x41a2,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x41a1,0x41a2,0x41c4,0x0000,0x8c70,0xbdf6,0x2965,0x2144,0x2144, +0x10e2,0x1902,0x0000,0x5b0b,0x8bcc,0xcc43,0xfe88,0xb486,0x8b85,0x8be5,0x8b23,0xbc85,0x0003,0x4a22,0xd524,0xf564,0xcc62,0x8a80,0x8281,0x8260,0x9ba8,0xbced,0xb48c,0xc50d,0x9386,0xac6b,0xa40a,0x79e0,0x8a63,0x6180,0x9470,0x8cb1,0x1902,0x2144,0x0000,0x52eb,0x9cd1,0x6ae7,0x5202,0x41e2,0x39a1,0x41a2,0x3100,0x1000,0x1800,0x30e0,0x41a2,0x41a0,0x3980,0x3982,0x0000,0x7c0f,0xa553,0x2143,0x1923,0x0000,0x4a68,0x948f,0x6308,0x5223,0x5223,0x3940,0x28c0,0x41c2,0x3960,0x28c0,0x3980,0x3981,0x3120,0x3140,0x3982,0x0800,0x7bee,0xad74,0x2985,0x2123,0x0000,0x3a48,0xa553,0x7b69,0x49e0,0x41c2,0x3980,0x3960,0x3100,0x2020,0x2000,0x1800,0x30e0,0x3961,0x3940,0x3942,0x0000,0x73ad,0xb5b5,0x3a07,0x10e2,0x0000,0x2945,0xad74,0x7bcc,0x41a0,0x49e2,0x41a1,0x3960,0x28a0,0x1000,0x0000,0x1000,0x3140,0x3961,0x3140,0x3962,0x2000,0x52c9,0xb5f6,0x5b0b,0x0000,0x18c2,0x0000,0xad33,0x9c70,0x41c0,0x49e2,0x39a2,0x39a1,0x2900,0x2080,0x30e0,0x28a0,0x28c0,0x3940,0x3960,0x3961,0x20a0,0x4227,0xbdf6,0x634c,0x0000,0x2144,0x0000,0x9cd2,0xad32,0x41a0,0x5204,0x41c2,0x39a1,0x3140,0x3960,0x39a1,0x4181,0x3940,0x3940,0x3960,0x3940,0x3120,0x20c0,0xbdf7,0x73cf,0x0000,0x2123,0x0000,0xa513,0xad53,0x3960,0x4a03,0x41a2,0x3981,0x3140,0x3940,0x3960,0x3960,0x3100,0x3940,0x3960,0x3960,0x3121,0x1800,0xc5f6,0x9491,0x0000,0x2124,0x0000,0x8c70,0xc5d4,0x41a0,0x49c3,0x41a1,0x4181,0x4160,0x3981,0x3960,0x3960,0x3980,0x3980,0x3161,0x3940,0x3983,0x0000,0xad75,0xad95,0x0000,0x2144,0x0000,0x634c,0xbe15,0x62c6,0x49e2,0x49c2,0x3980,0x4181,0x3940,0x2000,0x1800,0x3100,0x41a2,0x4160,0x3940,0x3963,0x0000,0xad74,0xad95,0x0000,0x2985,0x0000,0x5b0b,0xc616,0x7349,0x4a01,0x49e3,0x41a1,0x4160,0x30e0,0x2880,0x2860,0x3140,0x41a1,0x3980,0x3960,0x3982,0x0000,0x8c70,0xb616,0x00a0,0x2123,0x0000,0x4aab,0xd636,0xdd49,0xfde5,0xb424,0x0002,0x29a2,0xcce3,0xed64,0xb3a2,0x8260,0x8a81,0x8a81,0x8260,0x8282,0x68e0,0x93cc,0xce57,0x3a49,0x10a2,0x1880,0x0085,0xc5f4,0xed6b,0xfda3,0xbca6,0x0004,0x39c3,0xcce4,0xe583,0xb3c2,0x8261,0x8260,0x9326,0xb46d,0x7a83,0x69a0,0x8bab,0xc659,0x52cb,0x0000,0x2144,0x0000,0xb5d6,0xa4f0,0x4160,0x5265,0x49e2,0x41c2,0x49c2,0x49c2,0x49c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x39a1,0x3981,0x4182,0x4181,0x4180,0x3982,0x2020,0x52c9,0xbdf6,0x52aa,0x10e3,0x2144, +0x10e2,0x18e2,0x0000,0x5acb,0x93cd,0xcca3,0xfe89,0xdda7,0xa403,0xac86,0x93a3,0xa403,0xa424,0xac23,0xd504,0xed84,0xcca2,0x8a80,0x8a81,0x8260,0x9325,0xb48c,0xb48d,0xbccd,0x9367,0x9b87,0x9346,0x7a40,0x8242,0x6980,0x946f,0x8cb1,0x1923,0x2144,0x0000,0x52eb,0x9cf1,0x6ae7,0x5203,0x41e3,0x49c1,0x2880,0x52c8,0x9cd0,0x9caf,0x5ac8,0x28e0,0x3981,0x3960,0x3962,0x0000,0x7c0f,0x9d13,0x2144,0x2103,0x0000,0x4269,0x9cf1,0x6b28,0x5a44,0x5223,0x5266,0x62e9,0x3940,0x5225,0x6b2a,0x49c2,0x3980,0x5ac8,0x4a25,0x3920,0x0000,0x7bef,0xa554,0x29c5,0x2124,0x0000,0x4248,0xad73,0x7b8a,0x49a0,0x41c3,0x3980,0x41a0,0x5285,0x6309,0x734a,0x7b6b,0x5a87,0x3120,0x3140,0x3942,0x0000,0x7bcd,0xb5b5,0x3a07,0x18e2,0x0040,0x2125,0xad74,0x83ed,0x4180,0x49e3,0x41a0,0x41c2,0x632a,0x83ec,0x8c0c,0x7bec,0x39c2,0x30e0,0x3141,0x3961,0x1800,0x5ac9,0xb5d6,0x5b0b,0x0000,0x10c2,0x0000,0x9d33,0x946f,0x4180,0x4a03,0x39a1,0x3960,0x62a7,0x6b09,0x4a85,0x5ac7,0x6ac8,0x49c4,0x3940,0x3961,0x2080,0x4207,0xb5b5,0x6b6c,0x0000,0x2124,0x0000,0x94d2,0xad52,0x4980,0x4a03,0x41c1,0x39a1,0x4a45,0x4a04,0x4181,0x3960,0x5224,0x5205,0x3140,0x3161,0x28e0,0x2902,0xbdf6,0x7bee,0x0000,0x2123,0x0000,0xa513,0xad52,0x4160,0x4a04,0x49a2,0x41a0,0x4a25,0x41e3,0x3960,0x3980,0x5265,0x41c3,0x3940,0x3940,0x3100,0x1800,0xbdf6,0x8cb1,0x0000,0x2144,0x0000,0x8c71,0xbdb4,0x4180,0x49e3,0x41a1,0x3980,0x4180,0x3960,0x41e3,0x41e2,0x3960,0x4180,0x3960,0x3961,0x3142,0x0000,0xa575,0xa574,0x0000,0x2144,0x0000,0x634c,0xbdf5,0x62c6,0x4a02,0x49c3,0x41a2,0x3940,0x4980,0x83ac,0x8bed,0x5204,0x28c0,0x3982,0x3920,0x3142,0x0000,0xa534,0xad74,0x0000,0x2965,0x0000,0x5b0b,0xc636,0x7349,0x49e0,0x4a03,0x41a0,0x41c0,0x5266,0x6b09,0x6b29,0x5225,0x3100,0x4180,0x3940,0x3962,0x0000,0x8c70,0xbe17,0x00c2,0x2103,0x0000,0x4a8b,0xde36,0xe56a,0xfde5,0xdd66,0x41a3,0x7b03,0xdd63,0xe544,0xb3a2,0x8220,0x8240,0x8260,0x7a40,0x7241,0x60e0,0x93ac,0xc5f6,0x4269,0x0861,0x18a0,0x0045,0xcdd4,0xed8c,0xfde2,0xd527,0x5a23,0x7ae3,0xd544,0xe583,0xabc2,0x8260,0x8280,0x9325,0xac6c,0x7a63,0x6940,0x8bab,0xc659,0x52eb,0x0820,0x2144,0x0000,0xb5b6,0xa511,0x4160,0x5245,0x4a03,0x49c2,0x41c2,0x41a1,0x49c2,0x41c2,0x41a1,0x49a1,0x49a2,0x41a1,0x41a1,0x41a1,0x41a2,0x41a2,0x41a1,0x3981,0x3981,0x3961,0x4181,0x3940,0x3961,0x2040,0x5268,0xb5f6,0x52eb,0x18a0,0x2145, +0x10e2,0x10e2,0x0000,0x5acb,0x8bcd,0xb3e0,0xfe07,0xfe27,0xed86,0xeda6,0xdd64,0xd545,0xe584,0xdd63,0xdd43,0xe563,0xbc43,0x8a61,0x8a61,0x8a61,0x8aa2,0x8b24,0x8ac4,0x8b04,0x8ae3,0x8aa1,0x8a82,0x7a61,0x8242,0x6980,0x9c90,0x8c91,0x1902,0x2144,0x0000,0x4aeb,0x9cd1,0x6ac7,0x4a03,0x4a03,0x30c0,0x736c,0xce57,0xbdb4,0xbd93,0xce57,0x7b8b,0x2040,0x3961,0x3962,0x0000,0x7c0f,0x9d34,0x2944,0x2103,0x0000,0x4269,0x9d12,0x7349,0x62a6,0x3940,0x7bcc,0xc5f5,0x30e0,0x944f,0xe719,0x7329,0x5265,0xbdd4,0x6309,0x2840,0x0000,0x7bcf,0xa554,0x29a4,0x2124,0x0000,0x4268,0xad94,0x7b8b,0x49c0,0x49c3,0x3940,0x49e2,0xbdd4,0xc636,0xb5b3,0xc5f5,0x8c2d,0x20c0,0x3140,0x3962,0x0000,0x7bcd,0xb5b5,0x3a28,0x1903,0x0000,0x2146,0xad54,0x7bcc,0x41a0,0x5204,0x3120,0x5aa6,0xce57,0xce16,0xb552,0xce57,0xad52,0x38e0,0x3120,0x3161,0x1800,0x52c9,0xb5f6,0x5b2b,0x0000,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x4181,0x3180,0xa4af,0xc615,0xc677,0xc635,0xbd51,0x6ae8,0x1860,0x3962,0x2040,0x4a27,0xbdd5,0x634c,0x0000,0x2124,0x0000,0x94f2,0xa532,0x4920,0x5224,0x41c2,0x30e0,0x9cae,0xad30,0x2000,0x62e8,0xc5d3,0x732a,0x2880,0x3982,0x28e0,0x28e2,0xc617,0x7c0e,0x0000,0x2123,0x0000,0x9d13,0xad52,0x4160,0x4a24,0x49c3,0x30c0,0xad31,0x9caf,0x1000,0x5245,0xbdd4,0x7bcc,0x1800,0x3982,0x3100,0x1800,0xbe17,0x8cb1,0x0000,0x2144,0x0000,0x8c91,0xbdd5,0x4180,0x49c2,0x41a2,0x3981,0x3981,0x2840,0x9cf0,0xa4f0,0x2800,0x4181,0x3960,0x3161,0x3142,0x0000,0xa555,0xa574,0x0000,0x2165,0x0000,0x632c,0xc5f5,0x62c6,0x49e1,0x49e3,0x3120,0x4a66,0xbdf4,0xc616,0xbdf5,0xc615,0x6b29,0x2000,0x3962,0x3942,0x0000,0x9d13,0xa574,0x0000,0x2965,0x0000,0x5b0b,0xbe16,0x7349,0x4a01,0x5203,0x3940,0x62a6,0xce16,0xc5d4,0xc5d4,0xc5f5,0x6b29,0x30e0,0x3941,0x3962,0x0000,0x8c70,0xbdf7,0x00c2,0x2103,0x0000,0x4a4a,0xd614,0xdd28,0xfde5,0xfde6,0xbcc3,0xc505,0xed85,0xe563,0xa383,0x8aa3,0xa367,0x9b67,0x9366,0x9b86,0x79e0,0x8bac,0xc5f6,0x3a48,0x0881,0x18c0,0x0004,0xcd94,0xe58d,0xf5c3,0xfe27,0xdd65,0xdd45,0xe584,0xdd45,0xaba3,0x8261,0x8280,0x8ae4,0x9b87,0x8263,0x6920,0x8bcc,0xce79,0x52cb,0x0820,0x2965,0x0000,0xb5b6,0xa511,0x4180,0x5a65,0x4a03,0x49c3,0x4180,0x3960,0x3960,0x3960,0x4180,0x4181,0x3940,0x4180,0x4181,0x3960,0x3920,0x3920,0x3920,0x3900,0x4160,0x3960,0x3960,0x3960,0x3941,0x2000,0x5288,0xb617,0x52eb,0x1880,0x2145, +0x10e2,0x1903,0x0000,0x5aec,0x9470,0xa363,0xbba0,0xc3c0,0xc3a0,0xbb40,0xb340,0xab20,0xa300,0xab20,0xa340,0xa320,0x9260,0x81c0,0x8a00,0x8a20,0x8200,0x79e0,0x81e0,0x81e0,0x81e0,0x81e0,0x79c0,0x79e0,0x79a0,0x6100,0x9cb0,0x8c91,0x1923,0x2124,0x0000,0x4aeb,0x94d1,0x6ac6,0x4a03,0x49e3,0x3100,0xbdf5,0xb5d5,0x0000,0x1800,0xbdb5,0xc5f6,0x28a0,0x3941,0x3962,0x0000,0x7c0f,0x9d13,0x2964,0x2123,0x0000,0x4269,0x9d12,0x7349,0x62a6,0x3960,0x5aa8,0xc635,0x6b29,0x9cd0,0xe73a,0x8c2e,0x7bac,0xc615,0x39c4,0x3100,0x0000,0x7bef,0xa554,0x29c4,0x2124,0x0000,0x4248,0xad73,0x7b8a,0x49c0,0x41c2,0x3120,0x5224,0xce37,0x9491,0x30c0,0x5205,0x49c3,0x3940,0x3120,0x3142,0x0000,0x7bcd,0xb5b5,0x3a07,0x1903,0x0000,0x2966,0xa533,0x7bab,0x41a0,0x5204,0x3100,0x62c7,0xce77,0x7bad,0x0000,0x842e,0xd6b7,0x5a45,0x1860,0x3982,0x1800,0x5ae9,0xb5f6,0x5b0b,0x0000,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x41a1,0x39a2,0x4a25,0x6b4b,0xce99,0x9cf1,0x49c3,0x49e4,0x3120,0x3141,0x2020,0x4a47,0xbdf6,0x6b6c,0x0000,0x2124,0x0000,0x9d12,0xa532,0x4120,0x5224,0x41c3,0x3100,0x7349,0xad0f,0x5220,0x9cf1,0xbdd4,0x3100,0x3940,0x3941,0x28c0,0x2903,0xc617,0x7c0e,0x0000,0x2123,0x0000,0x9cf3,0xad32,0x4160,0x4a24,0x49e4,0x2860,0xbdb4,0xad32,0x0000,0x5246,0xce37,0x840e,0x1000,0x3982,0x30e0,0x1800,0xbe17,0x94d2,0x0000,0x2144,0x0000,0x8450,0xb5b4,0x49a0,0x49e3,0x41a2,0x4181,0x4182,0x1000,0xb593,0xb5b4,0x0800,0x4182,0x3960,0x3140,0x3142,0x0000,0xa554,0xa574,0x0000,0x2164,0x0000,0x632c,0xbdd5,0x62a6,0x5202,0x5204,0x1800,0xa532,0xce57,0x4a67,0x2942,0xb593,0xc5f4,0x2020,0x3120,0x3962,0x0000,0x9d13,0xad74,0x0000,0x2985,0x0000,0x5aeb,0xbdf5,0x6b29,0x49e0,0x5204,0x3100,0x6b29,0xd678,0x7bad,0x1800,0xb5f5,0xad53,0x0000,0x3962,0x3962,0x0000,0x8c70,0xbdf6,0x00c2,0x2103,0x0000,0x4a8a,0xde76,0xb448,0xab60,0xc3a0,0xb3c0,0xab80,0xab20,0xa320,0x8240,0x8240,0x9b20,0x9300,0x8b00,0x9302,0x6100,0x8bcc,0xc617,0x3a49,0x0881,0x10a0,0x0003,0xcdf6,0xc52e,0xb360,0xc3e0,0xc3e0,0xb3a0,0xab60,0xab40,0x9240,0x81e0,0x8220,0x81e0,0x79a0,0x79c0,0x6000,0x93cb,0xd678,0x5aeb,0x0000,0x2944,0x0000,0xb5b5,0xa4f1,0x4180,0x5a65,0x5204,0x41a0,0x62e8,0x83cb,0x6ae8,0x736a,0x734a,0x7328,0x83cb,0x7349,0x5266,0x5a87,0x736a,0x83ec,0x6b29,0x6b49,0x5265,0x49e3,0x3940,0x3960,0x3961,0x2000,0x5288,0xbe17,0x5b0b,0x1080,0x2145, +0x10e2,0x18e2,0x0000,0x426a,0xb594,0xeef7,0xdeb7,0xde75,0xd615,0xcdb4,0xc571,0xc551,0xc571,0xc571,0xbd31,0xbd51,0xbd51,0xc572,0xbd71,0xc590,0xc571,0xbd51,0xbd51,0xbd50,0xc572,0xc571,0xbd50,0xb531,0xb4ef,0xa511,0xb5d6,0x8c71,0x1923,0x2144,0x0000,0x4aeb,0x94d1,0x6ac6,0x4a03,0x41a0,0x5266,0xc655,0x7c0d,0x2800,0x2000,0x738d,0xce57,0x5a87,0x28c0,0x3982,0x0000,0x7c0e,0x9513,0x2964,0x2123,0x0000,0x4269,0x9cf2,0x7328,0x5a64,0x41a3,0x28e0,0xb5b4,0x94b0,0xa4f0,0xa552,0x9cd0,0x9cb0,0xa531,0x0000,0x3963,0x0000,0x7bef,0xa554,0x29c4,0x2124,0x0000,0x3a27,0xa532,0x7b8a,0x49c0,0x49e3,0x3940,0x49e3,0xc616,0xc5f6,0xad32,0xb552,0x6b29,0x20c0,0x3140,0x3142,0x0000,0x7bad,0xb5b5,0x3a28,0x1903,0x0020,0x2946,0xa533,0x7b8b,0x4180,0x5204,0x3960,0x5a65,0xce57,0xbdb5,0x9cb0,0xbe17,0xad32,0x30a0,0x3120,0x3162,0x1000,0x630a,0xbe16,0x5b0b,0x0020,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x41c2,0x41a1,0x2820,0x49c3,0xce36,0x8c0e,0x0000,0x3982,0x3940,0x3141,0x1800,0x4a27,0xbdf6,0x6b6d,0x0000,0x2124,0x0000,0x9d13,0xa552,0x4920,0x5244,0x41c2,0x41a2,0x30e0,0x6ae7,0x9cae,0xc636,0x6b4b,0x1800,0x4182,0x3120,0x28e0,0x28e2,0xbdf7,0x7bee,0x0000,0x2123,0x0000,0x9cf2,0xa532,0x4180,0x5244,0x49e4,0x2880,0xb594,0xad33,0x0000,0x5266,0xc617,0x83ee,0x1000,0x3962,0x30e0,0x1800,0xbe17,0x94d2,0x0000,0x2144,0x0000,0x8450,0xb594,0x49c0,0x49e3,0x41a2,0x41a1,0x41a2,0x1800,0xad53,0xad74,0x1800,0x3981,0x3960,0x3140,0x3142,0x0000,0xa554,0xa575,0x0000,0x2144,0x0000,0x632c,0xbdd5,0x5aa6,0x4a02,0x41a3,0x41a0,0xc5f5,0x9c8f,0x0000,0x2860,0x6b08,0xce57,0x5ac9,0x1800,0x3963,0x0000,0x9cf3,0xad74,0x0000,0x2985,0x0000,0x5aeb,0xbdf5,0x6b08,0x41c0,0x5203,0x3940,0x6307,0xd676,0x948f,0x6b49,0xc636,0x9cd0,0x1000,0x3962,0x3942,0x0000,0x8c70,0xbdf6,0x00a2,0x2123,0x0000,0x3208,0xe71c,0xf6d9,0xddb3,0xcd73,0xc552,0xbd30,0xb50f,0xb530,0xbd30,0xc530,0xbd10,0xb510,0xb4f0,0xacae,0xa44c,0xbdb4,0xbe38,0x31c7,0x10e2,0x18c1,0x0000,0xce78,0xff59,0xd5f2,0xcdb4,0xc552,0xc571,0xbd50,0xbd50,0xbd52,0xbd71,0xbd50,0xbd31,0xb510,0xacef,0xa4af,0xb5b5,0xce9b,0x4a8a,0x1080,0x2144,0x0000,0xb5b5,0xa4f1,0x4180,0x5a65,0x5224,0x3920,0x8bec,0xad10,0x944e,0xa4d0,0x7b8b,0x62c7,0x942d,0x7bab,0x7349,0x83ed,0x9cd0,0x9d11,0x8c8f,0xa511,0x9cf1,0x62c7,0x30e0,0x3960,0x3961,0x1800,0x5288,0xbe37,0x5b0b,0x1080,0x2145, +0x10e1,0x18e2,0x0000,0x4aec,0x9d13,0xb552,0xad73,0xad72,0xad33,0xa513,0x9cd0,0x9cd0,0x9cb0,0x9cb0,0x9cb0,0x9cb0,0x9cb0,0x9cb1,0x9cb0,0x9caf,0x9cb1,0x9cb1,0x9cb0,0x946f,0x9cb1,0x9cb1,0x9490,0x9470,0x942f,0x8c50,0xadd6,0x8c91,0x1102,0x2144,0x0000,0x4aeb,0x94d1,0x6aa6,0x4a03,0x41c0,0x5225,0xce56,0x946f,0x0000,0x5224,0x94b0,0xbe15,0x4a45,0x28e0,0x3982,0x0800,0x7bee,0x94f2,0x2984,0x2143,0x0000,0x4269,0x9cf1,0x7328,0x5223,0x51e3,0x3000,0x94d0,0xbdd4,0xad32,0x738a,0xb593,0xbdd3,0x7bec,0x1800,0x4163,0x0000,0x7bef,0xa554,0x29a4,0x2103,0x0000,0x3a27,0xa512,0x7b8a,0x49c0,0x49e3,0x3940,0x4a03,0xc5f5,0xad53,0x840d,0x944f,0x5267,0x2900,0x3140,0x3142,0x0000,0x7bad,0xb5b5,0x4248,0x1902,0x0080,0x2105,0xa533,0x7bcc,0x41a0,0x5225,0x3120,0x5265,0xc637,0xbdd5,0xa4d1,0xce98,0xad53,0x2000,0x3141,0x3162,0x1000,0x630a,0xbe17,0x5b0b,0x0000,0x10c2,0x0000,0x9d33,0x8c6f,0x4180,0x4a24,0x41c2,0x41a2,0x3140,0x5246,0xc637,0x8c4f,0x1800,0x41a2,0x3140,0x3141,0x2000,0x4a27,0xbdd6,0x6b6c,0x0000,0x2124,0x0000,0x9d12,0xa532,0x4120,0x5224,0x41e2,0x49a2,0x4181,0x3920,0xbdd4,0xb573,0x2000,0x3981,0x3940,0x3141,0x28e0,0x28c2,0xc617,0x7c0f,0x0000,0x2123,0x0000,0x9cf3,0xad32,0x4180,0x5244,0x49e3,0x2000,0xb5b4,0xad32,0x0000,0x41c2,0xce17,0x840f,0x0000,0x3982,0x30e0,0x1800,0xbe17,0x8cb2,0x0000,0x2144,0x0000,0x8450,0xb5b4,0x51e0,0x49e3,0x41c2,0x41a1,0x41a2,0x1800,0xad53,0xad73,0x1800,0x3981,0x3960,0x3140,0x3142,0x0000,0xa554,0xa575,0x0000,0x2124,0x0000,0x632c,0xbdf5,0x5aa6,0x49e2,0x49c3,0x4180,0xc617,0x94b1,0x0000,0x2880,0x6b49,0xc637,0x5289,0x1820,0x3983,0x0000,0x9cf3,0xad74,0x0000,0x31a5,0x0000,0x5b0b,0xbe16,0x6b08,0x41a0,0x5224,0x3960,0x62e8,0xd678,0xc616,0xbdb4,0xad32,0x49e3,0x3120,0x3920,0x3962,0x0000,0x9490,0xbe17,0x0020,0x2103,0x0000,0x3207,0xd71b,0xde99,0xbd92,0xb593,0xad52,0xad10,0xad10,0xa511,0xa4f1,0xa4f1,0xa511,0xa4f2,0x9cd1,0xa4d0,0x942d,0xb5b5,0xc679,0x39a6,0x10c1,0x18c2,0x0000,0xc658,0xe6d8,0xb552,0xb554,0xa512,0xa4f0,0xa4d1,0x9cf1,0xa4f2,0xa4f1,0x9cd0,0x9c91,0x946f,0x946f,0x7c0d,0xa554,0xce9a,0x4a69,0x0880,0x2144,0x0000,0xad95,0xa4f1,0x41a0,0x5a66,0x5224,0x4180,0x736a,0x7bcc,0x7bab,0x8c4d,0x736a,0x5204,0x6b08,0x62c7,0x8bec,0x8bed,0x7b8b,0x734a,0x7bab,0x7b8b,0x9caf,0x62c7,0x30e0,0x3961,0x3961,0x1800,0x5288,0xbe37,0x5b2c,0x1880,0x2165, +0x10c2,0x18e2,0x0000,0x5b2c,0x73ce,0x28c0,0x49a0,0x4160,0x38e0,0x2820,0x2000,0x2020,0x1800,0x2020,0x0000,0x0800,0x1800,0x0000,0x1800,0x0000,0x1000,0x1800,0x1800,0x2000,0x1800,0x0800,0x1800,0x2000,0x1000,0x0000,0x8c70,0x8c91,0x10e2,0x2144,0x0000,0x4aeb,0x94d1,0x6ac6,0x4a23,0x4a03,0x2020,0xb573,0xd657,0x5268,0x9cf2,0xef7b,0xad73,0x2000,0x3962,0x3962,0x0000,0x7c0e,0x94f2,0x2943,0x2944,0x0000,0x4269,0x9cf2,0x7349,0x4a02,0x5204,0x38e0,0x634a,0xe6fb,0xb574,0x0000,0xce36,0xd657,0x49e2,0x28c0,0x3942,0x0000,0x7bce,0xa533,0x2984,0x2123,0x0000,0x4248,0xa553,0x7b8a,0x49c0,0x41c3,0x3940,0x4a23,0xce36,0x9490,0x2920,0x5267,0x5246,0x3960,0x3140,0x3922,0x0800,0x738c,0xad74,0x4a49,0x1102,0x0080,0x1905,0xa533,0x7bac,0x49c0,0x5224,0x3120,0x6286,0xce77,0x73ad,0x0000,0x9470,0xd677,0x39c2,0x28c0,0x3162,0x1000,0x5ae9,0xbe17,0x630b,0x0000,0x18c2,0x0000,0x9d33,0x946f,0x4980,0x4a24,0x49e2,0x41a2,0x3120,0x5246,0xce58,0x8c4f,0x0000,0x4182,0x3140,0x3141,0x2040,0x4a26,0xb5b4,0x636c,0x0000,0x2144,0x0000,0x9d13,0xa553,0x4100,0x5204,0x49e3,0x49a1,0x4181,0x28c0,0xbdd5,0x9cb0,0x0000,0x41a3,0x3940,0x3120,0x28c0,0x28e1,0xc617,0x7c0f,0x0000,0x2124,0x0000,0x94b1,0xa512,0x41a0,0x4a03,0x4a03,0x1800,0xb572,0xc615,0x0800,0x6b4b,0xd698,0x7bcd,0x1800,0x3982,0x3100,0x1000,0xb5f6,0x94b2,0x0000,0x2144,0x0000,0x7c30,0xb5b4,0x51e0,0x5203,0x41a2,0x41a1,0x41a2,0x1800,0xad73,0xad73,0x0000,0x4161,0x3960,0x3120,0x3962,0x0000,0xa534,0xa574,0x0000,0x2124,0x0000,0x632c,0xbdd5,0x5aa6,0x4a02,0x5204,0x2800,0xad53,0xce56,0x4a45,0x2920,0xb5b4,0xbdb4,0x1800,0x3121,0x3962,0x0000,0x9cf2,0xad74,0x0000,0x2985,0x0000,0x5aeb,0xc616,0x6b29,0x41a0,0x5204,0x3900,0x6b29,0xd677,0x7bcd,0x3920,0x30e0,0x3100,0x3960,0x3120,0x3962,0x0000,0x9490,0xbdf6,0x0062,0x2103,0x0000,0x4aaa,0xc657,0x734a,0x2020,0x4180,0x30c0,0x2860,0x2820,0x2800,0x2820,0x2000,0x2820,0x2000,0x2000,0x1000,0x0000,0x738d,0xbe17,0x4248,0x0080,0x1060,0x0063,0xbdf6,0x8c2e,0x0800,0x3960,0x28c0,0x2000,0x2000,0x0800,0x0000,0x1000,0x2800,0x2800,0x2000,0x2000,0x0000,0x736c,0xd679,0x5acb,0x0020,0x2144,0x0000,0xad75,0xa4f1,0x41a0,0x5a65,0x4a03,0x49c2,0x49e3,0x41c2,0x49e3,0x5245,0x5a86,0x49e3,0x49c2,0x41a1,0x5a86,0x5225,0x4180,0x4160,0x49c2,0x3960,0x4180,0x41a2,0x3960,0x3940,0x3961,0x2000,0x5268,0xbe37,0x5b2c,0x1080,0x2145, +0x10c2,0x10e2,0x0000,0x5b4c,0x7c0e,0x5243,0x62c7,0x5a86,0x5245,0x4a03,0x49e3,0x49c3,0x41c2,0x41a1,0x7b6a,0x6b08,0x5245,0x62c7,0x5245,0x7b8a,0x5245,0x3961,0x41c2,0x4182,0x41a2,0x41a2,0x41a2,0x4161,0x3962,0x1800,0x842f,0x8470,0x1923,0x2144,0x0000,0x4aca,0x94d1,0x6ac7,0x4a03,0x4a03,0x3960,0x4a03,0xbd93,0xce36,0xbdf4,0xce57,0xad32,0x4180,0x3920,0x3962,0x0000,0x7c0e,0x9d13,0x31a5,0x2123,0x0000,0x4269,0x94f2,0x6b29,0x4a02,0x4a04,0x4180,0x4224,0xbdd6,0x9470,0x0000,0xa4f1,0xacf2,0x28e0,0x3941,0x3942,0x0000,0x73ad,0x9d13,0x31a5,0x2123,0x0000,0x3a28,0xa554,0x738a,0x41a0,0x41c3,0x3960,0x41c2,0xbdb4,0xc616,0xb593,0xc5f5,0xa4d0,0x3920,0x3120,0x3942,0x0800,0x6b8c,0xad74,0x4a29,0x1102,0x0080,0x1905,0xa533,0x83ec,0x49c0,0x4a03,0x3120,0x5a44,0xb573,0x738b,0x0800,0x7b6c,0xb573,0x4a45,0x2080,0x3182,0x1000,0x5b0a,0xbe37,0x630b,0x0000,0x10c2,0x0000,0x9d13,0x8c4f,0x49a0,0x4a24,0x41c2,0x49a2,0x28e0,0x5246,0xc5b5,0x83ed,0x0800,0x3982,0x3140,0x3941,0x2040,0x4a26,0xb5b4,0x634c,0x0000,0x2144,0x0000,0x9d13,0xa553,0x4140,0x5224,0x41c2,0x41a1,0x4181,0x3100,0xb573,0x946f,0x1000,0x41a3,0x3940,0x3120,0x28e0,0x2902,0xb5b6,0x7c0e,0x0000,0x2124,0x0000,0x8c91,0xa512,0x41c0,0x5203,0x4a03,0x2900,0x736a,0xce36,0xbdb3,0xce35,0xb593,0x3982,0x3120,0x3961,0x3121,0x0000,0xb5f6,0x94d2,0x0000,0x2144,0x0000,0x7c0f,0xb594,0x5222,0x49c3,0x41a2,0x4181,0x3981,0x2000,0xad52,0xad73,0x0000,0x4161,0x3940,0x3120,0x3142,0x0000,0xa513,0xa533,0x0000,0x2124,0x0000,0x630c,0xbdd5,0x5a86,0x49e1,0x5204,0x3980,0x5266,0xc5b4,0xce16,0xbdd4,0xbdd4,0x62a8,0x2000,0x3962,0x3142,0x0000,0x9d12,0xa554,0x0060,0x2985,0x0000,0x5aeb,0xc616,0x6b09,0x3960,0x49e3,0x3920,0x62e8,0xbdd4,0x6309,0x2000,0x41a2,0x3981,0x3940,0x3120,0x3962,0x0000,0x8c70,0xbe37,0x00a2,0x2103,0x0000,0x4aaa,0xc637,0x83aa,0x5a23,0x5a65,0x5203,0x49e2,0x41a1,0x3940,0x3100,0x3140,0x3982,0x41a2,0x3982,0x41a2,0x1000,0x736c,0xbdf6,0x4248,0x0080,0x0840,0x0084,0xb5b5,0x944e,0x49c0,0x5a65,0x5204,0x49c3,0x5223,0x62c7,0x62a7,0x62a7,0x5204,0x41a2,0x41a2,0x41a3,0x1000,0x738c,0xce79,0x52cb,0x0020,0x2945,0x0000,0xb5b5,0xa4f1,0x49c0,0x5a65,0x49e3,0x49c2,0x41a1,0x41a2,0x4181,0x3960,0x3960,0x41a1,0x3980,0x4181,0x3960,0x3960,0x4181,0x41a1,0x3980,0x4181,0x3960,0x3960,0x3960,0x3960,0x3961,0x2000,0x5268,0xbe17,0x5b2c,0x1080,0x2144, +0x10c2,0x18e2,0x0000,0x5b2c,0x7c0e,0x5243,0x62a6,0x5a64,0x4a03,0x49c2,0x41a2,0x4181,0x41a1,0x28e0,0x942d,0x6b29,0x946e,0xad10,0x736a,0xad10,0x83cc,0x3100,0x4181,0x3960,0x4180,0x41a1,0x4180,0x3960,0x3941,0x1800,0x844f,0x8450,0x1902,0x2144,0x0000,0x4aeb,0x94b1,0x6ac6,0x4a03,0x41c2,0x41c1,0x3940,0x3920,0x732a,0x62e8,0x3140,0x5245,0x41a2,0x3940,0x3162,0x0800,0x73ce,0x9513,0x31c6,0x2123,0x0000,0x4269,0x9d12,0x736a,0x5202,0x49e3,0x41c0,0x39a0,0x41c2,0x41a1,0x39a0,0x41c1,0x39a0,0x3160,0x3960,0x3141,0x0000,0x73ad,0xa533,0x31c6,0x2123,0x0000,0x3a08,0xa553,0x7bab,0x41a0,0x41c2,0x3980,0x3961,0x5245,0x62e9,0x62e9,0x6ae9,0x5a87,0x3140,0x3940,0x3941,0x1000,0x6b8c,0xad74,0x4a69,0x10e2,0x0060,0x2125,0xa533,0x83ec,0x4180,0x49e3,0x41a1,0x3981,0x49c3,0x41a1,0x4160,0x4181,0x49e3,0x4181,0x3140,0x3162,0x1000,0x5b0b,0xbe37,0x5b0b,0x0000,0x18e3,0x0000,0x9d13,0x8c6f,0x49a0,0x4a24,0x41c2,0x4181,0x3980,0x3981,0x5a67,0x49e4,0x3960,0x3960,0x3140,0x3141,0x2880,0x4a26,0xb594,0x634c,0x0000,0x2124,0x0000,0x94d2,0xa532,0x4140,0x4a04,0x41c2,0x4181,0x4181,0x3960,0x5ac8,0x5266,0x3120,0x3960,0x3940,0x3940,0x2900,0x28e2,0xb5d6,0x842f,0x0000,0x2144,0x0000,0x8c70,0xa4f1,0x49e0,0x4a03,0x41c2,0x41c2,0x2920,0x5266,0x8c2d,0x7bab,0x3980,0x3120,0x3981,0x3160,0x3100,0x1000,0xb5d6,0x8cb1,0x0000,0x2124,0x0000,0x7c0f,0xad73,0x5202,0x49c3,0x41c2,0x3980,0x3980,0x3940,0x6b08,0x62e8,0x2920,0x3960,0x3940,0x3140,0x3962,0x0000,0xa513,0xa533,0x0020,0x2124,0x0000,0x632c,0xb594,0x5aa6,0x49e1,0x49c3,0x41c1,0x3120,0x41a3,0x83ed,0x83ed,0x4204,0x28a0,0x3961,0x3140,0x3162,0x0000,0x94d2,0xa554,0x10e2,0x31c6,0x0000,0x52cb,0xbdd5,0x6b09,0x4180,0x49e3,0x41a1,0x41c2,0x5266,0x41c3,0x4181,0x3980,0x3960,0x3960,0x3940,0x3962,0x0000,0x8c50,0xbe37,0x00c2,0x2103,0x0000,0x4aaa,0xc657,0x83ab,0x5243,0x5a45,0x49e3,0x3960,0x5224,0x7b69,0x838a,0x7b49,0x5224,0x3960,0x4180,0x4182,0x0000,0x738d,0xbdf6,0x4228,0x08c1,0x1080,0x0083,0xb5b5,0x8c2e,0x4980,0x5224,0x49e3,0x4180,0x5a85,0x83cc,0x83cc,0x83cc,0x5a86,0x3960,0x3981,0x3982,0x0000,0x736c,0xce79,0x52cb,0x0020,0x2965,0x0000,0xb5b6,0xad32,0x49c0,0x5a65,0x4a03,0x49c2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x41a1,0x41a2,0x41a2,0x41c2,0x41a1,0x41a1,0x41a1,0x41a1,0x4181,0x4181,0x4181,0x3960,0x3961,0x2020,0x4a27,0xbe17,0x5b2c,0x1060,0x2144, +0x10c2,0x18e2,0x0000,0x5b2c,0x7c0e,0x4a01,0x62a6,0x5244,0x49e3,0x49c2,0x41a2,0x41a2,0x41c2,0x3140,0x7349,0x5aa6,0x840c,0x944d,0x7bab,0x946e,0x7b8a,0x3960,0x41a1,0x41a1,0x41a1,0x41a1,0x39a1,0x4180,0x39a3,0x1000,0x8c70,0x8450,0x0080,0x2124,0x0000,0x4aeb,0x94b1,0x6ac6,0x4a04,0x41e2,0x41a0,0x41c2,0x4181,0x2040,0x28c0,0x3981,0x3140,0x3980,0x3981,0x3983,0x0000,0x7c0f,0x9d34,0x2964,0x2123,0x0000,0x4289,0x9cf2,0x6b29,0x5223,0x4a03,0x41a1,0x41a1,0x3960,0x3981,0x41c1,0x3981,0x3981,0x3981,0x3960,0x3982,0x0000,0x73ad,0x9d13,0x29a6,0x1902,0x0000,0x3a08,0xa533,0x7b8b,0x41e0,0x41c3,0x3961,0x3961,0x3120,0x20c0,0x28c0,0x28c0,0x28e0,0x3980,0x3960,0x4183,0x1000,0x6b8c,0xad95,0x4208,0x1923,0x0040,0x1925,0xa533,0x7bcc,0x49a0,0x49e3,0x3980,0x3981,0x3940,0x3960,0x41a1,0x3961,0x3120,0x4161,0x3980,0x39a2,0x2000,0x5aea,0xc637,0x5b0b,0x0000,0x18c2,0x0000,0xa554,0x9490,0x49c0,0x4a24,0x41a2,0x4180,0x3981,0x3960,0x3100,0x3960,0x3981,0x3981,0x3980,0x3981,0x28c0,0x4206,0xb5b5,0x634c,0x0000,0x2124,0x0000,0x8cb2,0x9d12,0x49a0,0x5204,0x41c2,0x4181,0x4181,0x4181,0x2900,0x3140,0x4181,0x3980,0x3961,0x3961,0x3141,0x20c1,0xbdd6,0x7c0f,0x0000,0x2124,0x0000,0x8c70,0xa512,0x49c0,0x5204,0x41c2,0x41a1,0x41a2,0x3100,0x1000,0x2000,0x3960,0x4181,0x3981,0x3981,0x3962,0x0000,0xb5f6,0x8cb1,0x0000,0x2944,0x0000,0x7c0f,0xad73,0x5201,0x5204,0x41a2,0x3981,0x41a1,0x41a1,0x3120,0x28c0,0x3980,0x3981,0x3961,0x3960,0x39a3,0x0000,0xa534,0xa554,0x0000,0x2944,0x0000,0x5b0c,0xb594,0x5aa6,0x4a02,0x49e3,0x41c1,0x41c1,0x3980,0x1000,0x1800,0x3160,0x4181,0x3960,0x3960,0x41a3,0x0000,0x9cf2,0xad95,0x0000,0x39e7,0x0000,0x4aaa,0xbdf6,0x6b29,0x41a0,0x41c2,0x41a1,0x41a1,0x3140,0x3960,0x3980,0x4181,0x3981,0x3981,0x3981,0x41a3,0x0000,0x9491,0xbe37,0x0000,0x2143,0x0000,0x4269,0xbe16,0x83ab,0x5243,0x5a45,0x49c2,0x3980,0x5244,0x7349,0x7b4a,0x7328,0x5224,0x3980,0x41a1,0x41a3,0x0000,0x738d,0xc637,0x4248,0x0080,0x18c2,0x0000,0xb595,0x946f,0x4160,0x5224,0x49e3,0x4181,0x5a44,0x83ab,0x83cc,0x7b8b,0x5a65,0x3960,0x41a1,0x41c3,0x0800,0x738c,0xce79,0x52aa,0x0020,0x2965,0x0000,0xad95,0xa4f1,0x41a0,0x5a66,0x49e3,0x49c2,0x41a2,0x41a2,0x4182,0x41a2,0x41a2,0x41a2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a2,0x41a2,0x41a1,0x41a1,0x4181,0x4181,0x3981,0x3960,0x3982,0x2060,0x5268,0xbe38,0x5b2c,0x1060,0x2144, +0x10c2,0x1902,0x0000,0x428a,0x94b0,0x5a84,0x41a0,0x4a03,0x41c2,0x4181,0x3961,0x3980,0x3981,0x39a1,0x41c2,0x41e3,0x3980,0x3960,0x4a24,0x5245,0x41a2,0x3981,0x4182,0x3981,0x4181,0x3982,0x3982,0x41a2,0x1800,0x2880,0xa513,0x73ef,0x0040,0x2144,0x0000,0x3a48,0xa512,0x7b48,0x3100,0x41c2,0x3981,0x3981,0x3982,0x41a3,0x41a2,0x41a2,0x41a1,0x3982,0x3982,0x28e0,0x0000,0x9d33,0x94f3,0x0060,0x2144,0x0040,0x0904,0x9d32,0x8c0c,0x2800,0x3982,0x3981,0x3961,0x4161,0x3961,0x3941,0x3961,0x3981,0x3960,0x3161,0x28c0,0x0000,0xa512,0x9d13,0x0902,0x2143,0x10a1,0x0062,0xa512,0x9c8e,0x2820,0x3161,0x3920,0x3940,0x3980,0x3962,0x4161,0x3962,0x3941,0x3120,0x3961,0x30e0,0x0000,0x9d12,0xa574,0x18a3,0x2144,0x10e2,0x0000,0x9d12,0x9cb0,0x2800,0x41a1,0x3981,0x3961,0x3981,0x3981,0x3961,0x3981,0x3982,0x4181,0x3981,0x3161,0x0000,0x8c91,0xb5f6,0x2944,0x10c2,0x1903,0x0000,0x8cb1,0xb573,0x38a0,0x3981,0x3982,0x3981,0x3961,0x3961,0x4182,0x4182,0x3961,0x3982,0x3981,0x3982,0x0000,0x738d,0xc638,0x4a69,0x00c2,0x2123,0x0000,0x73ef,0xb5b4,0x51e0,0x3960,0x41c3,0x3981,0x3961,0x3961,0x3982,0x3961,0x3961,0x3961,0x3961,0x3983,0x0000,0x5a89,0xce38,0x52ea,0x08a0,0x2124,0x0000,0x73ce,0xbdb4,0x5220,0x3900,0x41a3,0x3960,0x3981,0x4182,0x41a2,0x4182,0x4162,0x4161,0x3180,0x39a2,0x0000,0x4a26,0xc657,0x6b8d,0x0000,0x2144,0x0000,0x5b0b,0xc615,0x7307,0x2000,0x3982,0x3961,0x3961,0x3961,0x4182,0x4182,0x3981,0x3982,0x3962,0x3962,0x1000,0x0000,0xce37,0x94d2,0x0000,0x2965,0x0000,0x31a7,0xc616,0x7bab,0x1800,0x49c4,0x4181,0x3961,0x4162,0x41a2,0x41a2,0x3982,0x3962,0x3940,0x3962,0x2080,0x0000,0xbe16,0x94d2,0x0000,0x31e6,0x0881,0x00a3,0xbdd5,0x944e,0x0000,0x41a2,0x39a1,0x3981,0x4182,0x3961,0x3960,0x3961,0x3961,0x3961,0x3962,0x3100,0x0000,0xbdf6,0xa555,0x0000,0x2143,0x0840,0x00e4,0xbdf5,0x9c8e,0x3080,0x5225,0x41a2,0x41a2,0x4181,0x3140,0x3120,0x3960,0x41a2,0x41a2,0x41a2,0x49c4,0x0000,0x9cb1,0xc617,0x1104,0x1923,0x2103,0x0000,0xa533,0xad31,0x1800,0x49e3,0x49e3,0x4182,0x41c2,0x5265,0x5245,0x5225,0x49c3,0x41a2,0x41c2,0x39a3,0x0000,0x9cd1,0xc658,0x1104,0x2123,0x2964,0x0000,0x9cf2,0xc5d4,0x2000,0x5205,0x4a04,0x49e3,0x49c3,0x41c3,0x41c3,0x41a3,0x41a3,0x41a3,0x41a3,0x41a2,0x49c3,0x41c3,0x49c3,0x49c3,0x41c3,0x41a3,0x41a2,0x41a3,0x41a2,0x41a2,0x41c4,0x0000,0x83ee,0xbe38,0x3208,0x2102,0x2144, +0x10e2,0x10e2,0x0861,0x0000,0x844f,0xa532,0x7b69,0x5202,0x4180,0x4160,0x4160,0x3920,0x3920,0x3920,0x3900,0x38e0,0x3900,0x3900,0x3060,0x2840,0x30a0,0x38e0,0x38e0,0x30a0,0x38e0,0x38e0,0x38e0,0x3100,0x4205,0x9d12,0xa533,0x3207,0x1903,0x1903,0x10c2,0x0000,0x8450,0xbdd5,0x736b,0x28c0,0x2860,0x3080,0x30a0,0x3060,0x3060,0x30c0,0x30c0,0x2840,0x2880,0x4980,0x9cb1,0xb5d6,0x52ea,0x10c1,0x2123,0x1903,0x0000,0x7c0f,0xc617,0x840d,0x3940,0x3900,0x38e0,0x3900,0x3900,0x38e0,0x38e0,0x3900,0x3920,0x3920,0x41c4,0x94f2,0xc637,0x632c,0x08c1,0x2144,0x1903,0x0000,0x73ad,0xc637,0x8c4f,0x4980,0x3900,0x3920,0x3920,0x3900,0x3920,0x3920,0x3920,0x3900,0x3120,0x3980,0x94b0,0xc657,0x638c,0x0020,0x2144,0x1903,0x0000,0x634c,0xc616,0x946f,0x3960,0x30c0,0x3900,0x38e0,0x30e0,0x30c0,0x30e0,0x30c0,0x30e0,0x28e0,0x3140,0x842e,0xc658,0x7c2f,0x0000,0x2144,0x10e2,0x0000,0x4248,0xc657,0x9cf1,0x3160,0x3100,0x2880,0x3080,0x30a0,0x3080,0x38c0,0x38e0,0x38e0,0x30a0,0x2040,0x734a,0xce78,0x94f2,0x0000,0x2144,0x10e2,0x0000,0x2165,0xb5d5,0xb574,0x4a03,0x30a0,0x30c0,0x38e0,0x30c0,0x30a0,0x30c0,0x30c0,0x30c0,0x30c0,0x3040,0x5aea,0xce78,0xad75,0x0000,0x2144,0x10e2,0x0000,0x1903,0xad95,0xad95,0x5266,0x3900,0x30c0,0x3900,0x30c0,0x30e0,0x3900,0x3900,0x38e0,0x3900,0x30c0,0x62c9,0xc617,0xad95,0x00c0,0x1923,0x1903,0x18c2,0x0000,0xad74,0xce56,0x5aa6,0x2820,0x30a0,0x30a0,0x3060,0x2820,0x3060,0x30a0,0x3080,0x2880,0x2880,0x41e4,0xb5d5,0xc637,0x31e6,0x1923,0x2144,0x10c2,0x0000,0x94d2,0xc636,0x6329,0x28a0,0x3100,0x30e0,0x3080,0x30a0,0x30c0,0x3080,0x38c0,0x3920,0x2860,0x3962,0xb553,0xce58,0x3a28,0x2164,0x31a6,0x2964,0x0000,0x7c0f,0xc616,0x7b6b,0x30e0,0x30a0,0x30a0,0x3080,0x30c0,0x30e0,0x30e0,0x30c0,0x38e0,0x38e0,0x30a0,0x9d13,0xce99,0x52aa,0x0000,0x1903,0x2123,0x0000,0x8430,0xd698,0x7c0c,0x2820,0x3000,0x2800,0x2800,0x3060,0x38a0,0x3060,0x3060,0x3080,0x3060,0x0000,0x840e,0xd699,0x8430,0x0000,0x2164,0x2103,0x0000,0x632b,0xce98,0x9c8f,0x38e0,0x30a0,0x3080,0x38a0,0x3020,0x3000,0x2800,0x3060,0x38c0,0x30e0,0x3100,0x840e,0xce98,0x8450,0x0000,0x2965,0x2124,0x0000,0x52aa,0xd699,0x9cd0,0x20a0,0x28c0,0x2040,0x2000,0x2820,0x2000,0x2000,0x2820,0x2820,0x2820,0x2820,0x2860,0x2840,0x2840,0x2840,0x2820,0x2000,0x2000,0x2800,0x2800,0x2800,0x1000,0x5a87,0xc658,0x94f2,0x0000,0x2985,0x2124, +0x10c2,0x10a1,0x10c2,0x0000,0x00a2,0x8c91,0xb5b5,0xb5d5,0xbdf6,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xb5d5,0xb5d5,0xb5b4,0xb5b4,0xb5b5,0xb5b4,0xb5b4,0xad94,0xb5b4,0xb5d4,0xadb4,0xadb5,0xbe17,0xa575,0x4a8a,0x10c1,0x2144,0x1903,0x10e2,0x0000,0x08c4,0x94d2,0xbdf6,0xb5b5,0xb594,0xad94,0xad94,0xad94,0xad94,0xadb4,0xadb4,0xad74,0xad95,0xbdf6,0xb5d6,0x634c,0x0040,0x2164,0x1903,0x10e2,0x10a1,0x0000,0x8c71,0xc616,0xb5d4,0xb5d5,0xb5b5,0xb5d5,0xb5d5,0xb5b5,0xb5d5,0xb5b5,0xb5b5,0xb5b5,0xbdf6,0xbdf7,0x6b6d,0x0040,0x2144,0x10e2,0x10c2,0x10a2,0x0000,0x7c30,0xbe16,0xb5d5,0xb5b5,0xb5d5,0xb5b5,0xadb5,0xb5d5,0xb5d5,0xb5b5,0xadb5,0xad94,0xbdf6,0xc638,0x6b8e,0x0000,0x2144,0x1903,0x08a2,0x10c2,0x0000,0x7c0f,0xbe17,0xadd5,0xadb4,0xad74,0xad94,0xb5b5,0xb5d5,0xb5b5,0xadb4,0xad74,0xad74,0xbdd6,0xbe17,0x8451,0x0000,0x1923,0x10c2,0x08a1,0x10c2,0x0000,0x636d,0xbe17,0xbdf6,0xb574,0xad94,0xadb5,0xb5b5,0xad94,0xad94,0xb5b5,0xb594,0xad94,0xb5d5,0xbe37,0x9cf2,0x00c2,0x2144,0x1903,0x10c2,0x18e2,0x0000,0x52aa,0xbdd6,0xbdd5,0xad74,0xad94,0xa553,0xad74,0xb5b5,0xad94,0xad94,0xa553,0xa553,0xad94,0xc637,0xadb5,0x29c5,0x08a1,0x1903,0x08a1,0x10e2,0x0000,0x4248,0xad95,0xb5f6,0xb5d5,0xb5b5,0xadb5,0xb5b5,0xb5b5,0xb5b5,0xadb5,0xad94,0xad74,0xb5b4,0xce57,0xad75,0x31a7,0x08c0,0x2144,0x10c2,0x10e3,0x0000,0x1104,0xad95,0xc657,0xb5b5,0xad94,0xad94,0xb5b5,0xad94,0xad94,0xb594,0xad74,0xad54,0xad74,0xc617,0xb5d6,0x52ca,0x0000,0x2164,0x1903,0x0881,0x0000,0x0000,0x9d13,0xc637,0xb594,0xb594,0xb5b5,0xad94,0xad94,0xb5b5,0xad94,0xad94,0xad94,0xadb5,0xbe37,0xbdf6,0x5aeb,0x0000,0x2985,0x2985,0x29a5,0x1903,0x0000,0x842f,0xbdd5,0xad73,0xa553,0xad74,0xad74,0xad94,0xad94,0xad94,0xad94,0xad94,0xad94,0xbe16,0xc658,0x634c,0x0000,0x2144,0x10c2,0x18e2,0x10c2,0x0000,0x9cf2,0xce57,0xad74,0xad74,0xad94,0xad74,0xad94,0xad94,0xad74,0xad73,0xad74,0xa553,0xb5b4,0xd699,0x94b3,0x0000,0x29a5,0x2143,0x18e3,0x18e2,0x0000,0x7c0f,0xc637,0xb5b5,0xad74,0xb5b4,0xad73,0xad73,0xad94,0xad94,0xad74,0xa553,0xad53,0xb595,0xc637,0x8430,0x0000,0x2965,0x2144,0x1903,0x1903,0x0000,0x73af,0xce78,0xbdd4,0xad32,0xad33,0xa513,0xad33,0xad33,0xa513,0xad33,0xa513,0xa513,0xad33,0xad33,0xad33,0xa513,0xa513,0xa513,0xad13,0xad33,0xa532,0xa532,0x9d33,0xa574,0xc657,0xa554,0x10e2,0x2144,0x2164,0x1903, +0x10c2,0x10c2,0x08a1,0x10c2,0x0860,0x0000,0x426a,0x73ef,0x7c50,0x8450,0x8450,0x8471,0x8470,0x8471,0x8471,0x8491,0x8471,0x8491,0x8471,0x8450,0x8491,0x8491,0x8471,0x8471,0x8491,0x8491,0x8491,0x8491,0x6b8e,0x1104,0x0040,0x2144,0x1903,0x18e2,0x10c2,0x10c2,0x0000,0x0000,0x52cb,0x8450,0x8491,0x8491,0x8491,0x8491,0x8491,0x8491,0x8491,0x8491,0x8471,0x6bcf,0x21a6,0x0000,0x2144,0x1903,0x1903,0x10a1,0x10c2,0x0881,0x0000,0x4248,0x740f,0x7c50,0x7c30,0x7c50,0x7c50,0x7c30,0x7c30,0x7c30,0x7c30,0x7c30,0x6b8d,0x2964,0x0000,0x1923,0x18e2,0x10c2,0x10c2,0x10a1,0x10c2,0x0000,0x3a08,0x6bcf,0x7c30,0x7c30,0x740f,0x7410,0x7c30,0x7c30,0x7c30,0x7410,0x7c30,0x73cf,0x29c7,0x0000,0x1924,0x10e2,0x10c2,0x08a1,0x08a2,0x10c2,0x0000,0x21c7,0x6bce,0x7c50,0x7c10,0x7c30,0x7c70,0x7c51,0x7c50,0x7c50,0x7c50,0x8451,0x73cf,0x39e8,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x08a1,0x18c3,0x0000,0x2987,0x73cf,0x8451,0x8491,0x8491,0x8471,0x8471,0x8471,0x8451,0x7c31,0x8451,0x7c30,0x4aeb,0x0000,0x2123,0x1923,0x10e2,0x10e2,0x0881,0x10c2,0x0000,0x0000,0x6bae,0x8450,0x8471,0x7c30,0x8450,0x8491,0x8451,0x8450,0x7c30,0x8450,0x7c30,0x5b0b,0x0000,0x10c2,0x1903,0x08a1,0x10a1,0x08a1,0x10e2,0x0000,0x0000,0x636d,0x7c50,0x8471,0x7c50,0x8471,0x7c50,0x7c50,0x7c50,0x7c50,0x7c30,0x7c4f,0x5b0b,0x0000,0x08a1,0x2123,0x18e2,0x10c2,0x08a1,0x10e2,0x0000,0x0000,0x5b4d,0x8471,0x8471,0x8450,0x8471,0x8471,0x8471,0x8471,0x8451,0x8450,0x8450,0x6b6d,0x0000,0x0000,0x2144,0x1903,0x10e2,0x0881,0x10a2,0x0841,0x0000,0x5b0c,0x8450,0x8c71,0x8471,0x7c71,0x8471,0x8471,0x7c71,0x7c50,0x8450,0x8491,0x6bce,0x0103,0x0000,0x2985,0x2144,0x2985,0x29a5,0x2143,0x18e2,0x0000,0x4248,0x7bee,0x7c30,0x7c50,0x8450,0x7c50,0x7c30,0x7c30,0x7c50,0x7c51,0x7c30,0x73ef,0x2985,0x0000,0x1923,0x10e2,0x10e2,0x10c2,0x10e2,0x10e1,0x0000,0x5acb,0x8c91,0x8cd2,0x94d2,0x94d2,0x94d2,0x94f2,0x94d2,0x94d2,0x94d2,0x94d2,0x9491,0x5aab,0x0000,0x2165,0x2164,0x1903,0x18e3,0x10e2,0x1903,0x0000,0x3a29,0x7c30,0x8c91,0x8cb2,0x8c91,0x8c91,0x8cb2,0x8cb2,0x8c91,0x8471,0x8471,0x7c10,0x4249,0x0000,0x2945,0x2124,0x2124,0x1903,0x18e3,0x2123,0x0000,0x4a8a,0x94b1,0x9cd2,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x94f2,0x94f2,0x94f3,0x94f3,0x638e,0x0000,0x1903,0x2144,0x1923,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x2103,0x10e2,0x10e2,0x10e2,0x10c2,0x10c1,0x10c1,0x10e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x1923,0x18e2,0x10e2,0x10e2,0x10a1,0x0881,0x08a2,0x10e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10c2,0x10e2,0x10c2,0x10c2,0x08a1,0x10a1,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e1,0x10e1,0x10e2,0x10c2,0x08a1,0x08a2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x10e2,0x10c2,0x10c2,0x08a1,0x08a1,0x08a1,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1903,0x10e2,0x10e2,0x10c2,0x10c2,0x10a1,0x10e2,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10a1,0x0881,0x10c2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e3,0x1903,0x18e2,0x10c2,0x10e2,0x10c2,0x08a1,0x10e2,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c0,0x1902,0x1102,0x10e2,0x10c2,0x08a1,0x0881,0x10a1,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x2144,0x1923,0x2984,0x2984,0x1923,0x10c1,0x10c2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x1903,0x08a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10c1,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2145,0x2124,0x1903,0x1903,0x18e3,0x18e2,0x10c2,0x2123,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2964,0x2143,0x2123,0x1923,0x1923,0x1903,0x1903,0x2143,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2124,0x1903,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1902,0x2123,0x2144,0x2124,0x2124,0x2144,0x2965,0x2985,0x2964,0x2964,0x2964,0x2964,0x2944,0x2964,0x2944,0x2964,0x2964,0x2944,0x2144,0x2144,0x2144,0x2144,0x2964,0x2123,0x2143,0x2123,0x2123,0x2103,0x18e2,0x10c2,0x10c2,0x10c2,0x1903,0x1903,0x2124,0x2123,0x2144,0x2144,0x2144,0x2964,0x2165,0x2144,0x2144,0x2144,0x2123,0x1903,0x1903,0x1903,0x2123,0x18e3,0x10e2,0x10e2,0x10c2,0x18e2,0x1903,0x2124,0x1923,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x10c2,0x10c2,0x10e2,0x1903,0x1923,0x1923,0x1923,0x1923,0x2123,0x2144,0x2164,0x2144,0x2124,0x2144,0x2144,0x2124,0x18e3,0x1903,0x1903,0x1903,0x1903,0x18e3,0x10c2,0x10c1,0x18e2,0x1904,0x1924,0x1923,0x1923,0x2144,0x2965,0x2964,0x2164,0x2144,0x2144,0x2144,0x2124,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e3,0x1903,0x2123,0x2124,0x2124,0x2164,0x2985,0x2164,0x2144,0x2164,0x2144,0x2144,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903,0x10c3,0x10c2,0x10c1,0x18e2,0x18e3,0x1903,0x1923,0x1903,0x2123,0x2144,0x2964,0x2144,0x2144,0x2144,0x2124,0x2124,0x1903,0x1903,0x18e3,0x1903,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x1923,0x1923,0x2144,0x1923,0x2123,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2144,0x2103,0x1903,0x1903,0x1903,0x1923,0x1902,0x10c2,0x10c2,0x18e2,0x2123,0x2123,0x1923,0x2124,0x2124,0x2144,0x2964,0x2144,0x2144,0x2144,0x2144,0x2144,0x1903,0x18e3,0x1903,0x1903,0x1903,0x10c2,0x10a1,0x08a1,0x10c2,0x1903,0x1903,0x1903,0x2124,0x2124,0x2144,0x2144,0x2144,0x2164,0x2144,0x2164,0x2144,0x2124,0x2124,0x2164,0x2984,0x1903,0x10e2,0x10c1,0x10c1,0x10a1,0x10c2,0x18e3,0x1903,0x1903,0x1903,0x2124,0x2144,0x2144,0x2164,0x2964,0x2144,0x2164,0x2164,0x1903,0x18e2,0x1902,0x1923,0x1903,0x10e2,0x1902,0x1903,0x2124,0x2124,0x2124,0x2144,0x2964,0x2965,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2144,0x2144,0x2964,0x2144,0x2123,0x1903,0x1903,0x18e2,0x2143,0x2164,0x2144,0x2144,0x2944,0x2965,0x2985,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2144,0x2144,0x2144,0x2144,0x2124,0x1903,0x1903,0x2103,0x2144,0x2965,0x2165,0x2164,0x2944,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2945,0x2945,0x2144,0x2104,0x2103,0x2124,0x2123,0x2164,0x2144,0x1903,0x1903,0x1903,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x18e2,0x18e3,0x1902,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x1923,0x10c2,0x10c2,0x18e3,0x10c2,0x10a2,0x1902,0x1103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1924,0x1103,0x10c2,0x10c2,0x10c2,0x10e2,0x10e3,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2123,0x10e2,0x10c2,0x10c2,0x10c2,0x08c1,0x08e2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x1923,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x1903,0x10c2,0x10e2,0x10e2,0x18e2,0x10e2,0x1924,0x0882,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1903,0x10e2,0x10c2,0x10e2,0x10c1,0x10c1,0x1903,0x1902,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c2,0x1923,0x10c2,0x10e2,0x10e3,0x10c2,0x08c1,0x10e2,0x10e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x2144,0x1102,0x1902,0x10e2,0x10e2,0x10c2,0x1903,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x2123,0x10c2,0x18e3,0x10a2,0x10a1,0x10a2,0x10e2,0x1923,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x18e2,0x10c2,0x10c2,0x10a1,0x08c1,0x10c2,0x2103,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2123,0x2103,0x1903,0x10e2,0x10c2,0x18e2,0x2144,0x1102,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2964,0x2144,0x2124,0x1923,0x2124,0x2924,0x2123,0x2123,0x20c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2145,0x2124,0x2124,0x1904,0x1924,0x1924,0x2945,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1903,0x10e2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x10a1,0x0000,0x426a,0x842f,0x8c6f,0x8c8f,0x8c90,0x9491,0x9491,0x9491,0x9491,0x8c91,0x8c90,0x94b1,0x8c91,0x8c90,0x9490,0x9c90,0x9c91,0x9c91,0x9cb1,0x9cb0,0x9cd0,0x94b2,0x7bcf,0x2144,0x0000,0x2123,0x10e2,0x10e2,0x10c2,0x10c2,0x0060,0x0000,0x52ca,0x840e,0x840f,0x8430,0x8430,0x8430,0x8430,0x8450,0x8430,0x8430,0x8c51,0x73af,0x39e8,0x0000,0x1924,0x1903,0x10e2,0x10c2,0x10c2,0x10a2,0x0000,0x4248,0x7bef,0x840f,0x7bef,0x8410,0x8430,0x8430,0x8430,0x8430,0x8410,0x8430,0x7bef,0x3a08,0x0000,0x2124,0x1903,0x18c2,0x18c2,0x08c2,0x10e2,0x0000,0x3186,0x6b8e,0x7bef,0x8430,0x8430,0x8450,0x8c50,0x8450,0x8450,0x8c50,0x8c71,0x8430,0x52ca,0x0000,0x10e3,0x1923,0x10e2,0x10e2,0x10c2,0x18e3,0x0000,0x31c7,0x7c0f,0x8430,0x8c51,0x8c71,0x8c71,0x8c71,0x8430,0x8430,0x8450,0x8c70,0x842f,0x5b0b,0x0000,0x0080,0x1923,0x10c2,0x10e2,0x10e2,0x1923,0x0000,0x2965,0x840f,0x8c90,0x8c91,0x9491,0x9491,0x8c71,0x8c91,0x8c51,0x8c71,0x8c91,0x8c50,0x634d,0x0000,0x0020,0x1923,0x1103,0x08c2,0x08a1,0x18e2,0x0000,0x0000,0x5b2b,0x842f,0x840e,0x842e,0x842e,0x842f,0x840e,0x842f,0x842e,0x7c0e,0x842f,0x6b6c,0x08c2,0x0040,0x1923,0x18e3,0x10e3,0x08a1,0x18e2,0x0000,0x0000,0x632c,0x8430,0x8c50,0x8c70,0x8c71,0x8c50,0x8c70,0x8c71,0x8c71,0x8c50,0x8c90,0x7bee,0x2165,0x0000,0x2144,0x1902,0x1903,0x10a1,0x10c2,0x0880,0x0000,0x5aeb,0x8430,0x8430,0x842f,0x8430,0x8450,0x8c50,0x8c50,0x8c50,0x8c4f,0x8c70,0x7c0f,0x31e7,0x0000,0x2123,0x1903,0x10a1,0x0881,0x10c2,0x08a1,0x0000,0x52ca,0x844f,0x8c90,0x8c70,0x8c50,0x8c70,0x8c70,0x8c50,0x8c50,0x842f,0x842f,0x7bee,0x3a27,0x0000,0x1903,0x18e3,0x10a2,0x10a2,0x08a0,0x18e2,0x0000,0x2166,0x738d,0x7c0f,0x7c0f,0x8430,0x840f,0x840f,0x7c0f,0x7bef,0x7bee,0x7c0f,0x73cf,0x3a28,0x0000,0x2124,0x2144,0x18e3,0x1081,0x10a1,0x2103,0x0000,0x1125,0x6b8e,0x842f,0x842f,0x8430,0x8450,0x8430,0x8430,0x7c0f,0x7c2f,0x844f,0x7bce,0x52aa,0x0000,0x2965,0x2965,0x2124,0x2123,0x2103,0x2944,0x0000,0x0184,0x638d,0x7bef,0x7c0f,0x7c2f,0x840f,0x840f,0x840f,0x8410,0x840f,0x842f,0x7c0f,0x530c,0x0000,0x1903,0x2964,0x2124,0x2123,0x1903,0x2124,0x0000,0x0000,0x5b2b,0x73ce,0x73ae,0x73ee,0x73ce,0x6bad,0x73ce,0x73ce,0x73cf,0x7bef,0x7bee,0x52aa,0x0000,0x10e2,0x2124,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e3,0x10a2,0x10e1,0x10c1,0x00c2,0x944d,0xe654,0xf6f5,0xf6d3,0xf6d3,0xf6d3,0xf6d3,0xf6f3,0xf6d3,0xf6d3,0xf6b3,0xf6d3,0xf6f3,0xf6f3,0xf6d3,0xf6d3,0xf6b2,0xf6b2,0xf6b2,0xf6b2,0xf6b2,0xf6b2,0xf6b3,0xf6b4,0xce15,0x5b6d,0x0000,0x1923,0x10e2,0x10c2,0x0020,0x1904,0x9490,0xbdf5,0xb593,0xa513,0xad33,0xa533,0xa533,0xad33,0xa533,0xad53,0xad34,0xad54,0xbdb6,0xbdf6,0x7bee,0x0000,0x2144,0x18e3,0x10e2,0x10c2,0x0000,0x840f,0xbdf6,0xb594,0xad53,0xad33,0xad53,0xad53,0xad74,0xb574,0xb574,0xad74,0xad54,0xb5b5,0xc617,0x8c51,0x08a1,0x2144,0x18e2,0x10a2,0x10e2,0x0000,0x632b,0xb594,0xbdb5,0xa513,0xa512,0xa533,0xad53,0xad54,0xad53,0xad53,0xad53,0xad33,0xb574,0xc637,0xa534,0x2165,0x1924,0x1923,0x10e2,0x1903,0x0000,0x6b6d,0xbdf7,0xbdd5,0xad53,0xa533,0xa533,0xad33,0xad33,0xa512,0xa512,0xa512,0x9cf1,0xa532,0xc637,0xad75,0x2986,0x10c1,0x1903,0x10c2,0x18e2,0x0000,0x632b,0xce37,0xc615,0xa532,0xad53,0xad53,0xad53,0xa533,0xa533,0xa513,0xad33,0xa513,0xa533,0xc617,0xb595,0x4248,0x08a1,0x1923,0x10e2,0x18e3,0x0000,0x4207,0xb5b5,0xc616,0xad53,0xad32,0xad52,0xad32,0xa532,0xa532,0xad32,0xa532,0xa511,0xa531,0xbdb4,0xbdd5,0x52ca,0x0020,0x2144,0x18e2,0x10e2,0x0020,0x10e2,0xa533,0xce37,0xad53,0xa512,0xa532,0xad33,0xa532,0xad33,0xad53,0xad53,0xad33,0xa532,0xc616,0xc617,0x634d,0x0000,0x2144,0x10c2,0x10e2,0x0860,0x0000,0x9cf2,0xce57,0xb595,0xad53,0xad53,0xad33,0xad53,0xad53,0xad53,0xad33,0xad32,0xa532,0xbdf6,0xce78,0x8430,0x0000,0x2144,0x08a1,0x08a1,0x0881,0x0000,0x94b1,0xce77,0xb5b4,0xad53,0xad53,0xad53,0xad73,0xb574,0xad53,0xad53,0xad53,0xa532,0xb595,0xce58,0x8c50,0x0000,0x2124,0x0881,0x0881,0x18e2,0x0000,0x73ad,0xd656,0xde14,0xcdf3,0xcdf4,0xd5d5,0xcdd4,0xcdd3,0xcdd4,0xc5b3,0xc592,0xc5b3,0xce15,0xce57,0x8c91,0x0060,0x29a5,0x18e2,0x0820,0x18e2,0x0000,0x736d,0xce15,0xd635,0xcdf3,0xcdd3,0xcdd5,0xcdd4,0xcdd3,0xcdd4,0xbd93,0xc5d3,0xcdf3,0xcdb4,0xd657,0xa553,0x0122,0x2944,0x2945,0x1902,0x2143,0x0000,0x5b0b,0xc5f6,0xce15,0xc593,0xc593,0xc5d3,0xcdb3,0xcd93,0xcdb3,0xcdb4,0xc593,0xcdb2,0xc5d4,0xce37,0xad54,0x31a5,0x2144,0x2964,0x1903,0x2144,0x0000,0x4a69,0xbdb4,0xd635,0xc5b3,0xc593,0xc5b3,0xbd92,0xbd92,0xc593,0xc5b3,0xc5b3,0xc593,0xcdf4,0xde98,0xad55,0x10e3,0x1923,0x2144,0x1903,0x18e3,0x18e2,0x10e2,0x18e3,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e3,0x10c2,0x18e1,0x0000,0x7bec,0xee4f,0xfe69,0xfdc2,0xf560,0xf540,0xed40,0xed40,0xf540,0xed40,0xed20,0xed20,0xed20,0xed20,0xf540,0xf540,0xed20,0xe540,0xed40,0xed40,0xe540,0xed20,0xed20,0xed40,0xdd00,0xd5f1,0xbdf6,0x4289,0x10c1,0x1923,0x10c2,0x0000,0x8450,0xbdd4,0x736a,0x2080,0x2060,0x1800,0x1800,0x1000,0x1000,0x1000,0x1800,0x1840,0x1000,0x28e0,0x840e,0xc637,0x738d,0x0000,0x2144,0x10e3,0x0000,0x6b6c,0xbdb5,0x840e,0x28e0,0x1860,0x1860,0x1820,0x1000,0x1000,0x1860,0x20a0,0x20c0,0x20a0,0x1860,0x83ee,0xce58,0x7c10,0x0000,0x2144,0x18e2,0x0000,0x4248,0xb593,0x946e,0x39a0,0x1860,0x1000,0x1820,0x1800,0x1000,0x1800,0x1800,0x1000,0x1800,0x0000,0x630a,0xce58,0x9cf3,0x0000,0x2144,0x1903,0x0000,0x4a89,0xc616,0xa4d0,0x2920,0x20a0,0x20c0,0x1800,0x0800,0x0800,0x1800,0x1800,0x0800,0x0000,0x0000,0x4a67,0xc638,0xad75,0x0000,0x2123,0x1903,0x0000,0x4228,0xce57,0xad52,0x30e0,0x2040,0x1000,0x1000,0x1000,0x0800,0x0800,0x0800,0x0000,0x0800,0x0000,0x39a1,0xb5b5,0xb5b6,0x10c1,0x1903,0x1903,0x10c2,0x0000,0xb5b4,0xce36,0x5a87,0x1800,0x28a0,0x2080,0x2040,0x1800,0x1800,0x1000,0x1000,0x1000,0x0800,0x2900,0xad53,0xbe17,0x31e7,0x1902,0x1903,0x10c2,0x0000,0xa533,0xc616,0x62a6,0x2080,0x1820,0x1000,0x0800,0x1800,0x1800,0x1000,0x1800,0x1800,0x1000,0x0000,0xa533,0xce79,0x4a89,0x0080,0x1903,0x18e3,0x0000,0x8cb2,0xce36,0x6b28,0x1820,0x1000,0x2040,0x1820,0x1800,0x1000,0x1000,0x1000,0x1800,0x1000,0x1000,0x9491,0xd6ba,0x636d,0x0000,0x1923,0x18e3,0x0000,0x8430,0xd698,0x7bcc,0x1800,0x2000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1000,0x1000,0x0000,0x8c0f,0xd6da,0x7c0f,0x0000,0x2123,0x10a2,0x0000,0x5aeb,0xdeb7,0xc550,0x82c0,0x8260,0x8a40,0x8a00,0x8a20,0x8280,0x8260,0x8260,0x8260,0x7a40,0x7200,0x9c4e,0xe719,0x8c90,0x0000,0x18e2,0x18c2,0x0000,0x4249,0xe6b7,0xe5f1,0xc460,0xc460,0xc440,0xc420,0xcc20,0xab40,0x8200,0x8260,0x8260,0x8220,0x7200,0x836a,0xde98,0xa533,0x0000,0x3186,0x2163,0x0000,0x4a28,0xd656,0xdd91,0xb3e0,0xbc20,0xbc00,0xbbc0,0xbbe0,0xa320,0x8220,0x8240,0x7a60,0x79c0,0x71e0,0x8307,0xd657,0xad95,0x0000,0x2985,0x2144,0x0881,0x2144,0xce16,0xd5f4,0x9305,0x8220,0x8220,0x8220,0x8240,0x8240,0x8200,0x8220,0x8200,0x7a00,0x7a20,0x8b8b,0xe6b9,0xad95,0x0000,0x2985,0x2124,0x1903,0x18e3,0x18e2,0x18e3,0x18e3,0x10e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x1103,0x1902,0x0800,0x29c6,0xb50d,0xee09,0xfe64,0xfe05,0xfd84,0xf564,0xf563,0xed64,0xf584,0xed64,0xed44,0xed44,0xf564,0xed64,0xf584,0xf584,0xed64,0xed43,0xed64,0xf564,0xf564,0xed63,0xe563,0xe564,0xe521,0xc460,0xbd71,0x8451,0x0880,0x1923,0x0000,0x29a6,0x9d12,0x83ec,0x3940,0x41c2,0x3981,0x3961,0x3961,0x3981,0x4182,0x3981,0x3981,0x3981,0x3982,0x3121,0x0000,0x9490,0xa533,0x1103,0x1944,0x08c2,0x0020,0x9cd1,0x8c4e,0x2880,0x41a1,0x4182,0x3981,0x4182,0x4182,0x41a2,0x41a2,0x4181,0x3981,0x4181,0x39a2,0x0000,0x8c30,0xb5b6,0x2165,0x1902,0x1903,0x0000,0x842f,0x9cd1,0x3960,0x4181,0x41a2,0x4182,0x41a2,0x41a2,0x4182,0x3982,0x3982,0x3982,0x3982,0x41a3,0x0000,0x738c,0xc617,0x4a89,0x0080,0x2123,0x0000,0x8cb1,0xb573,0x3920,0x3981,0x41c2,0x41a2,0x4182,0x41a2,0x41a2,0x4182,0x4182,0x3961,0x3941,0x39a3,0x0000,0x62eb,0xc658,0x52ea,0x0000,0x2124,0x0000,0x8c71,0xbdd5,0x3940,0x4180,0x49c2,0x4182,0x41a2,0x41a2,0x41a2,0x41a2,0x4182,0x3981,0x3981,0x3983,0x0000,0x39c6,0xbe17,0x73ae,0x0000,0x2144,0x0000,0x634b,0xc635,0x62e8,0x2800,0x49c3,0x41a1,0x4181,0x4181,0x3961,0x3961,0x3961,0x3961,0x3961,0x3962,0x2080,0x0000,0xbe17,0x8c71,0x0000,0x2944,0x0000,0x4289,0xbdf5,0x7b8a,0x3060,0x49e3,0x41a2,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x4182,0x4181,0x41a2,0x2920,0x0000,0xbe16,0x9cf2,0x0000,0x2144,0x0000,0x31c6,0xbdf7,0x840e,0x1800,0x49e4,0x4181,0x41a1,0x4182,0x4181,0x4182,0x41a2,0x41a2,0x4181,0x4181,0x3982,0x0000,0xa554,0xad95,0x0000,0x2144,0x0881,0x0000,0xbdd6,0x94b0,0x0000,0x49e3,0x4181,0x3961,0x4182,0x4182,0x3981,0x4182,0x4181,0x3961,0x3981,0x3983,0x0000,0x9d13,0xbe17,0x08c0,0x1903,0x18c2,0x0000,0xbd73,0xddf2,0x8200,0x9281,0x8a82,0x8a81,0x7a00,0xac2a,0xcdf2,0x9327,0x8220,0x8aa1,0x8281,0x8242,0x4000,0xbd31,0xce56,0x1165,0x10c1,0x2103,0x0000,0x9cf2,0xe634,0xdcc0,0xf5c5,0xc465,0xc4e5,0xe5c3,0xfd84,0xd465,0x7a60,0x8304,0xb46a,0x9305,0x8240,0x5000,0x93ed,0xd678,0x4269,0x10c2,0x2963,0x0000,0x9c70,0xe653,0xd4a0,0xedc5,0xd526,0xcca6,0xed84,0xed85,0xc464,0x8a81,0x8a81,0x8ae3,0xacad,0x8b26,0x5000,0x7b49,0xce79,0x5b2c,0x0000,0x2965,0x0000,0x842f,0xe676,0x82a0,0x8240,0x8ac2,0x9345,0x82a2,0x8aa0,0x8280,0x8ac1,0x8ac2,0x8ae4,0x92e3,0x8261,0x5000,0x7b4a,0xd6b9,0x5b0b,0x08a1,0x2964,0x1923,0x1903,0x18e3,0x18e2,0x18e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x1102,0x1903,0x0000,0x4aaa,0xbd2e,0xfe26,0xfe87,0xfe05,0xfda4,0xf584,0xed83,0xe583,0xed83,0xe563,0xe563,0xe543,0xed64,0xed63,0xed62,0xed83,0xe563,0xe543,0xe563,0xe563,0xe563,0xe542,0xdd64,0xdd43,0xe504,0xd4c0,0xbd2e,0x8cb1,0x2143,0x1903,0x0000,0x4269,0x94b0,0x6ae7,0x49e3,0x41c2,0x4180,0x3960,0x3960,0x3960,0x3140,0x41a1,0x4181,0x3960,0x3960,0x3962,0x1000,0x634b,0xa554,0x4228,0x1902,0x0060,0x1965,0x94d1,0x7bab,0x49c0,0x41c3,0x4181,0x4181,0x3961,0x1800,0x1000,0x3100,0x3981,0x3960,0x3940,0x3962,0x1840,0x5aca,0xad95,0x4aa9,0x0060,0x18e3,0x0000,0x8c51,0x840d,0x49e0,0x49e4,0x41a1,0x41a0,0x3160,0x3140,0x3920,0x4161,0x41a1,0x3960,0x3940,0x3961,0x2900,0x39c5,0xb5b5,0x6b6d,0x0000,0x1903,0x0000,0x9d13,0x9490,0x4180,0x4a03,0x3980,0x3961,0x3940,0x3100,0x30c0,0x2860,0x28c0,0x3940,0x3940,0x3941,0x2900,0x3163,0xb5d5,0x6bae,0x0000,0x2123,0x0000,0x94f2,0xad32,0x4180,0x4a03,0x41a1,0x4181,0x41a2,0x3940,0x2000,0x30a0,0x3981,0x3980,0x3940,0x3941,0x3943,0x0800,0xb5b5,0x94b1,0x0000,0x2964,0x0000,0x842f,0xad52,0x41c0,0x49e3,0x49c2,0x4181,0x3961,0x3960,0x3940,0x4160,0x3140,0x3140,0x3940,0x3940,0x3162,0x0000,0xa533,0xa534,0x0000,0x2985,0x0000,0x6b6d,0xad74,0x5a85,0x5203,0x49c2,0x4181,0x3961,0x3960,0x4180,0x3960,0x3960,0x4160,0x3980,0x3960,0x3983,0x0000,0x9cd1,0xa533,0x0000,0x2144,0x0000,0x52aa,0xbdd5,0x6b28,0x49a1,0x49c3,0x41a1,0x3940,0x3140,0x39a1,0x41a2,0x30e0,0x3920,0x4180,0x3160,0x3983,0x0000,0x7bef,0xb5f6,0x2984,0x18e3,0x0000,0x31c7,0xbdf6,0x7b8b,0x41a0,0x41e2,0x41a1,0x4180,0x3120,0x3960,0x4180,0x3980,0x3961,0x3960,0x3960,0x3983,0x0000,0x6b8d,0xc637,0x4a89,0x08a1,0x1080,0x0001,0xcdf6,0xccee,0x9aa0,0x9303,0x82c1,0x8281,0x7a60,0x9367,0xac6c,0x8ac4,0x8260,0x8281,0x7a60,0x7a62,0x69a0,0x8b8b,0xd678,0x4aa9,0x10c2,0x2102,0x0000,0xad33,0xdd6f,0xf5a0,0xc4e5,0x0004,0x2145,0xa403,0xe585,0xcc84,0x8280,0x7a40,0xac29,0xa42a,0x7a20,0x7a00,0x6a44,0xcdf6,0x738e,0x0000,0x2963,0x0000,0xad13,0xe5d0,0xf5a0,0xbca5,0x39a5,0x3163,0xbca4,0xed85,0xc444,0x8a61,0x8240,0xa3ea,0xd614,0xa42d,0x71c0,0x61c0,0xc5f8,0x8431,0x0000,0x3185,0x0000,0xa533,0xd5b1,0x8a60,0x9304,0xac4a,0xa409,0x8b45,0xbcee,0x9beb,0xb4ad,0xbcac,0xac8c,0xa44a,0x7a82,0x7a40,0x59c0,0xbdf7,0x8450,0x0000,0x2985,0x1923,0x1903,0x18e2,0x18e2,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x4aca,0xc52e,0xfe26,0xfe67,0xfe06,0xfda4,0xf563,0xed64,0xed44,0xed43,0xed44,0xed43,0xe562,0xe542,0xe542,0xe562,0xe563,0xe563,0xe543,0xe543,0xe543,0xe543,0xe542,0xe563,0xdd42,0xe503,0xd4e0,0xbd4f,0x8c91,0x2964,0x1923,0x0000,0x3a69,0x9490,0x7308,0x49e3,0x41c2,0x4180,0x3980,0x3961,0x41a0,0x49e1,0x3960,0x3981,0x3960,0x3960,0x3142,0x0000,0x6b6c,0xa554,0x4a48,0x1922,0x0040,0x1945,0x9cf2,0x7bab,0x4180,0x41e3,0x41a0,0x3140,0x3941,0x7bac,0x8c0d,0x5a66,0x28c0,0x3981,0x3960,0x3941,0x1800,0x5aca,0xa533,0x4a89,0x10c1,0x18e2,0x0000,0x8c51,0x8c2e,0x49e0,0x41e3,0x41a1,0x4180,0x41c1,0x4a45,0x5246,0x3100,0x28a0,0x4161,0x3940,0x3941,0x2080,0x41e5,0xb5b5,0x6b6d,0x0000,0x1903,0x0000,0x9d13,0x94b0,0x4160,0x49e3,0x41a1,0x3960,0x41c3,0x5a86,0x62c8,0x62e8,0x5aa7,0x3982,0x3120,0x3121,0x1840,0x41a4,0xb5b5,0x6bae,0x0000,0x1923,0x0000,0x94d2,0xad32,0x4160,0x4203,0x41c2,0x41a2,0x2060,0x49c2,0x736a,0x62e8,0x20c0,0x2900,0x3960,0x3120,0x3121,0x1000,0xb5b4,0x94b1,0x0000,0x2964,0x0000,0x7c0e,0xa531,0x4a02,0x49c2,0x49c2,0x3981,0x3980,0x3980,0x4161,0x3940,0x39a1,0x3961,0x3920,0x3140,0x3142,0x0000,0xa513,0xa513,0x0000,0x2985,0x0000,0x6b6d,0xb574,0x5aa6,0x4a02,0x49e3,0x4181,0x3960,0x3980,0x4180,0x41c2,0x41c2,0x3940,0x3980,0x3160,0x3942,0x0000,0x9cb1,0xa533,0x0000,0x2123,0x0000,0x52aa,0xbdd5,0x6b49,0x4160,0x49c3,0x4180,0x49e3,0x5224,0x39a2,0x2080,0x62a7,0x5a66,0x3920,0x3141,0x3162,0x0000,0x7bce,0xb5d6,0x31c5,0x18e3,0x0000,0x31e7,0xbdf6,0x7b8b,0x4180,0x41e3,0x4180,0x41a1,0x5246,0x41c3,0x3940,0x3980,0x3960,0x3940,0x3140,0x3162,0x0000,0x73ad,0xc637,0x4a89,0x1903,0x0820,0x0042,0xc636,0xc4ee,0x9aa0,0x8b04,0x8ac1,0x8aa0,0x8a60,0x8aa1,0x8ac2,0x8280,0x8260,0x8260,0x8240,0x7a41,0x6120,0x93ac,0xd657,0x52c9,0x10c2,0x2123,0x0000,0xa533,0xdd8f,0xeda0,0xcd25,0x41a2,0x4a04,0xac43,0xdd84,0xc464,0x8a40,0x8240,0x8280,0xb46b,0x8b27,0x6980,0x6a64,0xc637,0x73ef,0x0000,0x2984,0x0000,0xad33,0xedd0,0xed81,0xc486,0x49e4,0x29a2,0xbc84,0xe564,0xc444,0x8a60,0x8b05,0xbd0e,0x8bc8,0xac6d,0x8b28,0x59a0,0xbdf5,0x7c2f,0x0000,0x31a5,0x0000,0xa533,0xd5b1,0x92a0,0x9b25,0xbc8b,0xa3c9,0xa409,0xcd90,0xb4ce,0xbd0e,0x9bea,0xa40a,0xb4ac,0x82e4,0x71c0,0x61e1,0xbdf6,0x8450,0x0000,0x31a5,0x2123,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1102,0x1903,0x0000,0x4aca,0xc54e,0xfe26,0xfe87,0xfe26,0xfda4,0xf583,0xed63,0xe562,0xdd83,0xdd44,0xe564,0xdd62,0xdd43,0xdd43,0xe543,0xed43,0xed43,0xe543,0xe543,0xe543,0xe542,0xe542,0xe543,0xdd42,0xe503,0xd500,0xc56f,0x8470,0x2964,0x2124,0x0000,0x4269,0x9490,0x7307,0x4a03,0x41e2,0x41a0,0x41a1,0x28c0,0xb573,0xce36,0x5246,0x3100,0x4181,0x3940,0x3142,0x0000,0x6b8c,0xa575,0x4a68,0x1922,0x0040,0x1945,0x9cf2,0x7bab,0x4180,0x49e3,0x41a0,0x41c0,0xad12,0xc5d5,0xbd73,0xce15,0x7bab,0x2060,0x3982,0x3941,0x1800,0x5aca,0xa533,0x4a89,0x1902,0x18e2,0x0000,0x8c71,0x8c4e,0x41c0,0x4a04,0x3940,0x62a7,0xc5d4,0xbdd4,0xbdd4,0xb593,0x62c8,0x28a0,0x3961,0x3140,0x2060,0x4206,0xb5d6,0x6b6d,0x0000,0x1903,0x0000,0x9d12,0x948f,0x4160,0x49e3,0x41a2,0x2840,0x7bad,0xce57,0xbdd5,0xbdb4,0xb532,0x4a05,0x28e0,0x3941,0x2080,0x39a4,0xb5b5,0x73ce,0x0000,0x1903,0x0000,0x94d2,0xa512,0x4160,0x4a24,0x49e3,0x30e0,0x7b8b,0xc5f5,0xbdd5,0xc615,0xad51,0x49e4,0x3100,0x3941,0x2900,0x1800,0xb5b4,0x94b1,0x0000,0x2964,0x0000,0x7bee,0xa531,0x49e1,0x49e2,0x49c2,0x28a0,0x9c8e,0x9caf,0x2060,0x41a2,0xad31,0x83ec,0x1800,0x3141,0x3142,0x0000,0xa513,0x9d13,0x0020,0x31a5,0x0000,0x6b6d,0xb574,0x5a85,0x4a02,0x49e3,0x41a1,0x4181,0x3981,0x2800,0xa4d0,0x948f,0x1800,0x3982,0x3140,0x3942,0x0000,0x9cb1,0xa533,0x0000,0x2144,0x0000,0x52aa,0xbdd5,0x6b28,0x49c1,0x49e4,0x2020,0x9cb0,0xb552,0x0000,0x946f,0xc5f4,0x62e8,0x28a0,0x3961,0x3162,0x0000,0x73ae,0xb5d6,0x31c5,0x18e3,0x0000,0x31c7,0xbdf6,0x736a,0x4180,0x4a03,0x3120,0x6287,0xc5d5,0x7bac,0x2000,0x39a1,0x3960,0x3940,0x3140,0x3162,0x0000,0x73ae,0xc658,0x4a68,0x1903,0x1060,0x0043,0xc616,0xc4ce,0x9ac0,0x9b05,0x92c4,0x8ac4,0x7a00,0xac2b,0xd5b1,0x8b06,0x7a40,0x8263,0x7a62,0x7a63,0x6980,0x8b8b,0xce37,0x52ca,0x0081,0x2103,0x0000,0xad33,0xdd6e,0xed42,0xfe06,0xcce5,0xcd05,0xe564,0xe544,0xc445,0x8242,0x8a83,0x7240,0x9388,0xa40a,0x69c0,0x7284,0xce57,0x73ef,0x0000,0x2143,0x0000,0xb532,0xe5af,0xf562,0xfdc7,0xd4e6,0xbca5,0xdd45,0xdd45,0xbc65,0x7a40,0xac4b,0xacad,0x69e0,0x9369,0xa40b,0x59c0,0xc617,0x8430,0x0000,0x31a5,0x0000,0xa553,0xd5b2,0x92c0,0x9305,0x9ba8,0xa3e9,0x9b67,0x9326,0x9b87,0x9345,0x7a60,0x8b46,0x9388,0x7a83,0x7220,0x6223,0xbdf6,0x8430,0x0000,0x31a5,0x2124,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10e2,0x10e2,0x18e3,0x1102,0x18e3,0x0000,0x4acb,0xc54f,0xfe46,0xfe87,0xfe26,0xfdc4,0xed83,0xe563,0xdd84,0x9c43,0x9382,0xac24,0x8b41,0x9bc4,0x93a3,0x93a2,0xa3e3,0xc482,0xe563,0xe543,0xe543,0xe542,0xe542,0xe543,0xdd42,0xdd03,0xd4e0,0xc54f,0x8471,0x2964,0x2124,0x0000,0x4289,0x8c90,0x6ae7,0x4a03,0x41e2,0x41c1,0x3100,0x62e8,0xd698,0xded9,0x8c2f,0x2000,0x41a2,0x3940,0x3142,0x0000,0x73ad,0xa574,0x4248,0x1922,0x0040,0x1965,0x94d1,0x7b8a,0x41a0,0x4a04,0x30a0,0x6b08,0xd677,0x73ac,0x0000,0x8c0e,0x83ec,0x28e0,0x3940,0x3961,0x1800,0x5aea,0xad74,0x52aa,0x10e2,0x18e2,0x0000,0x8c71,0x8c2e,0x41c0,0x5244,0x28c0,0x736a,0xd677,0x840e,0x5ac8,0xc615,0xbdd4,0x28e0,0x3120,0x3141,0x2060,0x4a06,0xb5b6,0x6b6d,0x0020,0x1903,0x0000,0x9cf2,0x946f,0x4160,0x49e3,0x41c2,0x1000,0x8c6e,0xce76,0x4a65,0x2920,0x4a04,0x3161,0x3120,0x3121,0x2060,0x41a4,0xb5b5,0x73ce,0x0000,0x1903,0x0000,0x94d2,0xa4f1,0x4160,0x4a24,0x4180,0x5265,0xce56,0xb553,0x1880,0x630a,0xb593,0x736a,0x2000,0x3941,0x3120,0x1800,0xbdd5,0x94b1,0x0000,0x2964,0x0000,0x7bee,0xa531,0x41c0,0x49c2,0x49e3,0x1800,0xb572,0xb573,0x0000,0x1800,0xc615,0x948f,0x0000,0x3962,0x3121,0x0000,0xa513,0x9d13,0x00a0,0x31c6,0x0000,0x6b6d,0xad74,0x5aa5,0x5202,0x4a03,0x41c2,0x41a1,0x41a2,0x2000,0xb593,0xad52,0x0800,0x4182,0x3940,0x3141,0x0000,0x94b1,0x9d33,0x0000,0x2144,0x0000,0x52ca,0xb5b5,0x6b08,0x49a1,0x4a04,0x1000,0xad32,0xbdd4,0x7bac,0xce36,0x83cc,0x1840,0x3961,0x3140,0x3162,0x0000,0x7bce,0xb5d6,0x31c5,0x1903,0x0000,0x31c7,0xb5d5,0x736a,0x4180,0x4a03,0x3120,0x5aa7,0xce57,0x83cd,0x2000,0x41a2,0x3960,0x3940,0x3140,0x3962,0x0000,0x73ce,0xce78,0x4a69,0x10c2,0x0860,0x0023,0xce37,0xbccd,0x8a00,0x92a0,0x8a40,0x8220,0x7a00,0x82a0,0x9366,0x7a20,0x79c0,0x79c0,0x71c0,0x71c0,0x5000,0x8bad,0xd699,0x4ac9,0x10a1,0x2103,0x0000,0xb573,0xcd0e,0xb340,0xc420,0xbc20,0xb400,0xaba0,0xaba0,0x92c0,0x8200,0x8200,0x79e0,0x71c0,0x7aa0,0x6160,0x6a43,0xce36,0x7bae,0x0000,0x2123,0x0000,0xb574,0xc54f,0xbba0,0xcc60,0xc400,0xbc20,0xb3e0,0xbba0,0x9ae0,0x81e0,0x92c0,0x8280,0x71c0,0x6a00,0x7280,0x61e0,0xce17,0x8430,0x0000,0x3185,0x0000,0xad74,0xddd2,0x9220,0x9ac0,0x8240,0x7a00,0x81c0,0x81c0,0x79c0,0x79c0,0x8200,0x79e0,0x69a0,0x71a0,0x7140,0x61c0,0xbe17,0x8430,0x0000,0x31a5,0x1923,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e3,0x0000,0x4aeb,0xc54f,0xfe67,0xfea8,0xfe05,0xfdc4,0xed84,0xed83,0xccc3,0x6aa2,0xac02,0xb463,0x6261,0x8386,0x39e1,0x3180,0x31a2,0x9ba2,0xed83,0xe563,0xe543,0xe543,0xe542,0xe543,0xdd42,0xdd03,0xd4c0,0xbd4f,0x94d2,0x2964,0x1903,0x0000,0x4269,0x8c70,0x6ae7,0x4a03,0x41e2,0x41c2,0x1800,0xa4f0,0xad73,0x94d1,0xbe15,0x3880,0x3162,0x3940,0x3142,0x0800,0x73ad,0x9d54,0x4228,0x2123,0x0060,0x2165,0x8cb0,0x736a,0x49c0,0x49e3,0x4180,0x4a23,0xb593,0xc637,0xb593,0x840c,0x3140,0x3960,0x3940,0x3921,0x1800,0x5aea,0xa554,0x52a9,0x10e2,0x18e2,0x0000,0x8c71,0x8c2e,0x49e0,0x5224,0x28a0,0x7b8a,0xc655,0x5a87,0x0000,0x73ac,0xce56,0x5ac8,0x1800,0x3962,0x2080,0x41e5,0xb595,0x6b6d,0x0080,0x18e3,0x0000,0x94d2,0x8c4f,0x41a0,0x4a03,0x41c2,0x2000,0x840e,0xd698,0xad33,0xa4d1,0x83cc,0x28c0,0x3120,0x3121,0x2060,0x41c4,0xb5b5,0x6bae,0x0000,0x1903,0x0000,0x8cb1,0x9cd1,0x4160,0x4a44,0x30c0,0x840e,0xce76,0x4a45,0x20a0,0x6aa6,0x62c6,0x4a23,0x3100,0x3120,0x3100,0x1800,0xbdf5,0x94d1,0x0000,0x2964,0x0000,0x7bee,0xa511,0x41c0,0x49c2,0x49c2,0x2880,0xa512,0xc616,0x9caf,0xa4f0,0xce97,0x842e,0x0800,0x3142,0x3121,0x0000,0xa513,0x9d13,0x0080,0x31e6,0x0000,0x634d,0xa533,0x5a85,0x5203,0x4a03,0x49c2,0x3960,0x3120,0x2800,0xad73,0xa532,0x1000,0x4161,0x3940,0x3142,0x0000,0x9490,0x9d13,0x0000,0x2144,0x0000,0x5acb,0xb5b4,0x62e8,0x49c1,0x4a03,0x20a0,0x94b1,0xd6d9,0xdf1a,0xa512,0x0000,0x41a3,0x3940,0x3140,0x3162,0x0000,0x7bcf,0xbdf6,0x31c5,0x1903,0x0000,0x31c7,0xb5b5,0x736a,0x41a0,0x4203,0x3920,0x62c7,0xc655,0x7bcc,0x2000,0x41c2,0x3960,0x3140,0x3120,0x3162,0x0000,0x7bce,0xce58,0x4a68,0x08a1,0x10a1,0x0000,0xceb9,0xeef8,0xcd70,0xc551,0xbd30,0xbcf0,0xbccf,0xb4ae,0xacae,0xb4ce,0xb4af,0xacaf,0xa48e,0xa46e,0x940a,0xb574,0xd6db,0x4289,0x18c0,0x2924,0x0000,0xb5f7,0xf719,0xcd50,0xbd11,0xbcf0,0xaccf,0xb4cf,0xb4ae,0xb4ce,0xb4cf,0xbccf,0xb4ae,0xac8e,0xa46d,0x9c0b,0x9cd1,0xceb9,0x73ad,0x0000,0x2144,0x0000,0xadb6,0xef39,0xc551,0xbd10,0xbd10,0xb4cf,0xb4d0,0xacd0,0xacef,0xb510,0xb4d0,0xb4ad,0xacae,0x9c6e,0x9c2d,0x9c6e,0xc698,0x7c0f,0x0000,0x2985,0x0000,0xad74,0xf75b,0xd5b2,0xcd50,0xbd30,0xb4ee,0xb4ce,0xacce,0xacee,0xacef,0xb4cf,0xb4ae,0xacaf,0xa46e,0x9c2d,0x8c4f,0xc658,0x842f,0x0000,0x29a5,0x1923,0x1903,0x10e2,0x18e2,0x1903,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1102,0x1902,0x0000,0x52eb,0xcd6e,0xfe46,0xfe87,0xfde6,0xfdc5,0xed84,0xed63,0xcd04,0x72e2,0x8362,0xbce5,0x9ba2,0xa405,0x8362,0x7b43,0x5222,0x6a61,0xbc63,0xe564,0xed42,0xe563,0xe543,0xe543,0xdd42,0xdd04,0xccc0,0xbd70,0x94d2,0x2943,0x1903,0x0000,0x4289,0x8c4f,0x6ac7,0x5224,0x49e3,0x4180,0x4160,0xce36,0xa512,0x844e,0xd6b8,0x62c8,0x2080,0x3981,0x3162,0x0000,0x738d,0xa554,0x4228,0x2143,0x0880,0x1965,0x8cb0,0x736a,0x49c0,0x4a03,0x41c1,0x3940,0x3961,0x8c0e,0xad31,0xce76,0xad52,0x28e0,0x3141,0x3941,0x1000,0x5aea,0xa554,0x52ca,0x1903,0x18c2,0x0000,0x8c51,0x840d,0x49c0,0x5204,0x30e0,0x738a,0xce76,0x62e9,0x1000,0x73ac,0xce56,0x5aa8,0x1800,0x3962,0x2080,0x4206,0xb595,0x6b6d,0x00a0,0x10e3,0x0000,0x94d1,0x8c4e,0x49a0,0x49e3,0x41c3,0x2000,0x840e,0xce78,0xad12,0xa4b0,0x83ac,0x3100,0x3140,0x3121,0x2080,0x41e4,0xa554,0x6b8d,0x0000,0x1903,0x0000,0x8470,0x9490,0x4980,0x4a24,0x30e0,0x844f,0xce57,0x49c4,0x4a02,0xad51,0xc658,0x9491,0x1800,0x3942,0x2901,0x1840,0xbdd6,0x94b1,0x0000,0x2965,0x0000,0x73ce,0x9cf1,0x49a0,0x49e3,0x4a03,0x28a0,0xa531,0xc616,0x9c8f,0x9ccf,0xce77,0x842e,0x0000,0x3142,0x3121,0x0000,0xa513,0x9d13,0x10e2,0x39e6,0x0000,0x634c,0xa512,0x5244,0x4a02,0x5203,0x41a1,0x5224,0x5245,0x1000,0xb573,0xa533,0x0000,0x4182,0x3940,0x3961,0x0000,0x9490,0x9cf2,0x0061,0x2144,0x0000,0x5acb,0xbdd5,0x62e8,0x49c2,0x5204,0x1800,0x94b1,0xd6b9,0xb5f5,0xce56,0x6b0a,0x1800,0x3982,0x3120,0x3142,0x0000,0x7bee,0xbdf6,0x31c5,0x1903,0x0000,0x31c6,0xb5b5,0x736a,0x41a0,0x4a04,0x3100,0x5ae7,0xce77,0x7bad,0x0000,0x3940,0x3120,0x3140,0x3120,0x3142,0x0000,0x73ae,0xc638,0x4a68,0x10c2,0x18c2,0x0000,0xd6ba,0xef5b,0xc5b3,0xc593,0xb573,0xad32,0xacf0,0xa4f0,0xa4f0,0xa4f1,0xa4d1,0xa4d1,0x9cb1,0x9c90,0x942d,0xb5b5,0xd6da,0x4269,0x10c1,0x2944,0x0000,0xb5f7,0xf77c,0xc5b3,0xbd74,0xb553,0xad32,0xad31,0xad11,0xad31,0xa511,0xad11,0xa4f0,0xa4f1,0xa4af,0x944e,0x9d12,0xceb9,0x636d,0x0000,0x2124,0x0000,0xb5b5,0xf75a,0xbd93,0xb553,0xb532,0xad12,0xa4f2,0xa4f1,0xa511,0x9cf1,0xa512,0x9ccf,0x9c8e,0x944f,0x944e,0x9490,0xceba,0x7c10,0x0000,0x2985,0x0000,0x9d34,0xef7e,0xc5f6,0xbd93,0xb573,0xad51,0xad31,0xad31,0xa531,0xad32,0xad32,0xa532,0x9d11,0x9cf0,0x9490,0x94b1,0xc658,0x7c2f,0x0000,0x31a5,0x1923,0x1903,0x18e2,0x18e2,0x18e3,0x18e3, +0x10c2,0x10e2,0x10c2,0x10e2,0x18e2,0x1102,0x1902,0x0000,0x52eb,0xcd8e,0xfe46,0xfe67,0xfe06,0xfda5,0xed84,0xe542,0xe544,0xccc4,0xb443,0xd525,0xd502,0xd502,0xd542,0xd523,0xc4c3,0xb463,0xc4c4,0xe544,0xed42,0xe563,0xe543,0xe543,0xdd22,0xdd04,0xccc0,0xc570,0x8cb2,0x2943,0x1903,0x0000,0x3a69,0x8c4f,0x6ae7,0x5224,0x4a04,0x28a0,0x7b8b,0xd698,0xc615,0xbdd3,0xded9,0x94b0,0x0000,0x3982,0x3942,0x0000,0x73ad,0xa554,0x4228,0x2123,0x0060,0x1945,0x8cb0,0x7b8a,0x41a0,0x49e3,0x3120,0x62c7,0xb551,0x62e8,0x0000,0xa4f1,0xce36,0x3980,0x3100,0x3962,0x1800,0x630a,0xa554,0x52aa,0x1923,0x18e2,0x0000,0x8c51,0x840d,0x49e0,0x5224,0x2880,0x7b8b,0xce56,0x62ea,0x0000,0xad73,0xc615,0x3920,0x3100,0x3141,0x2060,0x4206,0xb5b5,0x6b6d,0x0080,0x18c3,0x0000,0x94d1,0x8c4e,0x4180,0x49e3,0x41c3,0x1800,0x8c6f,0xc615,0x28c0,0x0000,0x2080,0x3160,0x3140,0x3121,0x20a0,0x41e4,0xad74,0x6bad,0x0020,0x1903,0x0000,0x8450,0x8c6f,0x4980,0x4a24,0x4180,0x5ae8,0xce77,0x9c90,0x0000,0x5288,0xce58,0xa533,0x0000,0x3962,0x2900,0x1020,0xbdd6,0x94d2,0x0000,0x2145,0x0000,0x73ef,0x9cf1,0x49a0,0x49e3,0x49e3,0x2060,0xa552,0xad33,0x0000,0x0000,0xb5d4,0x8c6f,0x0000,0x3142,0x3121,0x0000,0xa512,0x9d13,0x1903,0x39c6,0x0000,0x634c,0xa533,0x5a64,0x49e2,0x5224,0x1800,0x946e,0xbdd3,0x0000,0xbdb5,0xa512,0x0000,0x4182,0x3940,0x3941,0x0000,0x94b0,0x9d33,0x0061,0x2123,0x0000,0x5aeb,0xbdd5,0x6308,0x49c2,0x5204,0x1000,0x9d11,0xbdd5,0x0000,0xbdb4,0xce36,0x4a25,0x28e0,0x3941,0x3942,0x0000,0x83ee,0xb5d6,0x29a5,0x1923,0x0000,0x29a6,0xad74,0x736a,0x41c0,0x5204,0x3120,0x5ae7,0xd678,0x8c50,0x39a0,0x5266,0x4183,0x3120,0x3120,0x3142,0x0000,0x73ad,0xc638,0x4a89,0x10c1,0x1081,0x0062,0xc637,0x948f,0x1800,0x41a0,0x2900,0x28c0,0x1800,0x3160,0x5265,0x20c0,0x1000,0x1800,0x1800,0x1800,0x0000,0x738d,0xd699,0x4aaa,0x0880,0x2123,0x0000,0xad74,0xa4f1,0x1800,0x3140,0x3120,0x28c0,0x28c0,0x20e0,0x2000,0x28a0,0x2880,0x2840,0x2000,0x2060,0x0000,0x39c4,0xc637,0x73ce,0x0000,0x2123,0x0000,0xa533,0xa4f0,0x1800,0x3980,0x3100,0x20c0,0x28c0,0x2800,0x2800,0x2800,0x2040,0x28c0,0x1840,0x2080,0x0000,0x2140,0xce7a,0x8c71,0x0000,0x2985,0x0000,0xa534,0xb594,0x20c0,0x39c0,0x3940,0x3140,0x2040,0x2800,0x30c0,0x2860,0x2880,0x20c0,0x1000,0x1040,0x0000,0x3100,0xb5f6,0x7c2f,0x0000,0x29a6,0x1923,0x1903,0x18e2,0x18e2,0x18e3,0x18e3, +0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x52eb,0xcd8e,0xfe46,0xfe67,0xfe06,0xfda5,0xed84,0xe564,0xed23,0xed63,0xed83,0xe563,0xe563,0xed63,0xed62,0xed62,0xed63,0xed63,0xed84,0xed43,0xe543,0xdd62,0xe563,0xe543,0xdd22,0xdd04,0xccc0,0xc570,0x8c91,0x2943,0x1903,0x0000,0x3a49,0x8c70,0x7307,0x4a03,0x4a04,0x2860,0xad11,0xbdb5,0x4a46,0x5204,0xad32,0xbdf5,0x3100,0x3920,0x3942,0x1000,0x738d,0xa554,0x4207,0x2123,0x0040,0x1965,0x8cb0,0x736a,0x41a0,0x41c3,0x4180,0x41a1,0xb572,0xc636,0xb592,0xc5d4,0x8c0d,0x20a0,0x3961,0x3941,0x2000,0x5aea,0xa533,0x4aa9,0x2123,0x18e2,0x0000,0x8450,0x8c0e,0x4a00,0x4a04,0x3100,0x6b09,0xce37,0xb5b4,0xbdd3,0xce56,0x7bcc,0x2000,0x3961,0x3140,0x2060,0x41e6,0xb595,0x6b6d,0x0080,0x18e3,0x0000,0x8cd1,0x8c4e,0x41a0,0x49e3,0x41c3,0x2000,0x83ed,0xbdb4,0x5225,0x3140,0x39a2,0x3160,0x3140,0x3121,0x20c0,0x41c4,0xad94,0x6bad,0x0000,0x1903,0x0000,0x8450,0x8c6f,0x4980,0x4a24,0x49e3,0x2900,0x948f,0xce97,0xb5b3,0xbd93,0xc5f6,0x9c8f,0x1800,0x3962,0x3120,0x2080,0xbdb6,0x94b2,0x0000,0x2145,0x0000,0x73ee,0x94b0,0x4180,0x49e3,0x4a03,0x1800,0xad32,0xb573,0x1000,0x41e3,0xbdd3,0x8c4e,0x0000,0x3942,0x3121,0x0000,0xa512,0x9d13,0x2144,0x39e7,0x0000,0x636d,0xa533,0x5244,0x4a02,0x5203,0x30e0,0x6b4a,0xbe15,0xbdf4,0xc616,0x7bac,0x2040,0x4162,0x3940,0x3942,0x0000,0x9490,0xa533,0x0040,0x2123,0x0000,0x5aeb,0xbdd5,0x62e8,0x49c1,0x5204,0x2020,0x9caf,0xbd73,0x2820,0x4a05,0xc5f5,0x9caf,0x0800,0x3141,0x3962,0x0000,0x83ee,0xb5d6,0x29a5,0x1903,0x0000,0x2986,0xad74,0x736a,0x49c0,0x49e4,0x3940,0x5285,0xce16,0xc616,0xb592,0xb593,0x6b2a,0x2000,0x3141,0x3142,0x0000,0x73ad,0xc658,0x4a89,0x08a0,0x0860,0x1103,0xb5b5,0x8c2d,0x49c0,0x5a65,0x4a03,0x49e3,0x3080,0x7329,0xb552,0x5a86,0x3920,0x41a1,0x3960,0x3962,0x0000,0x6b6c,0xce98,0x52aa,0x0060,0x1902,0x0000,0xa533,0x9cb0,0x49c0,0x5244,0x49e3,0x49c2,0x41a1,0x3980,0x7308,0x49a1,0x4160,0x49a1,0x4161,0x4181,0x28e0,0x41c4,0xc5f6,0x73ae,0x0000,0x2123,0x0000,0x9d33,0x9cb0,0x4960,0x5a44,0x5203,0x49c2,0x49e3,0x5204,0x7328,0x6286,0x49c3,0x41a1,0x4181,0x4183,0x3962,0x20c0,0xce58,0x8c71,0x0000,0x2985,0x0000,0x9d13,0xad12,0x5200,0x62a6,0x5a66,0x49c2,0x62c6,0x6286,0x49c1,0x5203,0x5203,0x5204,0x5a45,0x4a04,0x3100,0x3121,0xadb5,0x7c2f,0x0020,0x29a5,0x2144,0x1903,0x18e2,0x18e2,0x18e3,0x1903, +0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x0000,0x52eb,0xcd8f,0xfe46,0xfe67,0xfde6,0xfd84,0xed63,0xe544,0xdd24,0xe522,0xe542,0xdd43,0xdd43,0xe543,0xe523,0xe542,0xe522,0xe542,0xe541,0xed63,0xe543,0xdd42,0xe563,0xe543,0xdd22,0xdd04,0xccc0,0xc570,0x8cb2,0x2943,0x1903,0x0000,0x3a49,0x9490,0x7308,0x4a03,0x49e3,0x41a0,0x6b09,0x5a87,0x1860,0x2840,0x4a25,0x736a,0x41a2,0x3120,0x3962,0x0800,0x738d,0x9d34,0x4207,0x2123,0x0040,0x2186,0x8cb0,0x7b8a,0x49c0,0x41c2,0x41a1,0x3140,0x20a0,0x6b4a,0x83ec,0x62c7,0x2080,0x3980,0x3960,0x3941,0x1800,0x5ac9,0xa513,0x52aa,0x1923,0x18e2,0x0000,0x8450,0x8c2e,0x4a00,0x4a03,0x41a0,0x49e3,0x7b8c,0x8c2e,0x8c4e,0x62c8,0x28c0,0x3981,0x3140,0x3140,0x2060,0x4206,0xb595,0x636d,0x0080,0x18e3,0x0000,0x8cb1,0x8c4e,0x49a0,0x49e3,0x41a1,0x3940,0x4a05,0x5a87,0x4181,0x3960,0x3980,0x3160,0x3140,0x3140,0x20a0,0x39a3,0xb5b5,0x6bae,0x0000,0x1903,0x0000,0x8450,0x946f,0x4980,0x4a24,0x49e3,0x41a0,0x2060,0x632a,0x948f,0x7bab,0x41a3,0x4a04,0x3140,0x3140,0x3100,0x20a0,0xb5b6,0x94b1,0x0000,0x2145,0x0000,0x6bae,0x8c8f,0x49a0,0x49e3,0x49e2,0x3980,0x6b09,0x6b09,0x3140,0x3960,0x6b29,0x5266,0x30c0,0x3140,0x3121,0x0000,0x9cf2,0x9cf2,0x2165,0x3a07,0x0000,0x6b6d,0xa533,0x5223,0x49e2,0x4a03,0x41c2,0x20a0,0x5ae8,0x948f,0x6b4a,0x30e0,0x3960,0x3960,0x3940,0x3962,0x0000,0x9470,0x9d13,0x0020,0x2123,0x0000,0x52ca,0xb5d5,0x6b28,0x41a1,0x49e3,0x3980,0x5225,0x5a46,0x4161,0x3100,0x4a04,0x5a87,0x3140,0x3120,0x3962,0x0000,0x7bce,0xb5f6,0x29a5,0x18e3,0x0000,0x2986,0xad54,0x736a,0x41a0,0x49c3,0x41a1,0x39a0,0x5a66,0x62e9,0x6b2a,0x6309,0x4a05,0x28e0,0x3140,0x3142,0x0000,0x73ae,0xc617,0x4a48,0x10c1,0x0860,0x08c2,0xbdf5,0x946e,0x49a0,0x5224,0x41c1,0x41a1,0x4160,0x49e3,0x5a66,0x41a2,0x3960,0x4181,0x3961,0x3962,0x0000,0x736c,0xce78,0x5289,0x0020,0x2123,0x0000,0xa553,0x9cd0,0x41a0,0x5224,0x49e3,0x41a2,0x49e4,0x7329,0x9cf0,0x73ab,0x4203,0x3981,0x3961,0x4181,0x28c0,0x41e5,0xc616,0x738d,0x0000,0x2944,0x0000,0xa533,0xa4f0,0x4160,0x5225,0x49c3,0x49a3,0x41a1,0x7bec,0xbdf5,0xa511,0x4a24,0x3181,0x41a1,0x3961,0x3941,0x20c0,0xc617,0x8430,0x0000,0x2985,0x0000,0x9d13,0xad13,0x49a0,0x7b6a,0x7b2b,0x6287,0x83cc,0x738a,0x83ec,0x948e,0x83ec,0x6b49,0x946e,0x7bab,0x2920,0x2921,0xb5b6,0x8430,0x0040,0x29a5,0x2144,0x1903,0x18e2,0x18e2,0x1903,0x1903, +0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1903,0x0000,0x530c,0xd5af,0xfe45,0xfe47,0xfdc5,0xf584,0xed63,0xe563,0xe542,0xe543,0xe544,0xed43,0xed43,0xe563,0xe543,0xe563,0xe562,0xe543,0xed43,0xe563,0xe562,0xed43,0xed43,0xe543,0xdd43,0xe504,0xd4c0,0xc550,0x94d2,0x2943,0x1903,0x0000,0x428a,0x8c90,0x6ae7,0x4a03,0x41e2,0x41a0,0x30e0,0x3140,0x41c2,0x41a2,0x3960,0x2860,0x3960,0x3940,0x3162,0x0800,0x738c,0xa554,0x4228,0x2123,0x0020,0x29a6,0x94b1,0x736a,0x49c1,0x41c2,0x4181,0x4181,0x3981,0x2000,0x1800,0x28c0,0x4182,0x3980,0x3960,0x3961,0x2060,0x5ac9,0xa554,0x52ca,0x10c1,0x18c2,0x0000,0x8450,0x8c0e,0x4a00,0x4a03,0x41a0,0x3940,0x1820,0x0800,0x1800,0x30c0,0x41a1,0x3980,0x3140,0x3140,0x28c0,0x41e5,0xb595,0x636d,0x0000,0x18e3,0x0000,0x8cb1,0x8c4e,0x49c0,0x49e3,0x41a1,0x4181,0x3140,0x28c0,0x3960,0x3960,0x3960,0x3160,0x3960,0x3941,0x28c0,0x39a3,0xb5b5,0x6bae,0x0000,0x1903,0x0000,0x8450,0x8c6f,0x49a0,0x4a04,0x41c2,0x4180,0x4182,0x2840,0x0000,0x1800,0x3120,0x3120,0x3160,0x3961,0x3142,0x1800,0xbdd6,0x94b2,0x0000,0x2145,0x0000,0x73ce,0x8c90,0x51c0,0x4a03,0x41c3,0x41a1,0x3100,0x28c0,0x3981,0x3960,0x2080,0x28e0,0x3940,0x3140,0x3142,0x0000,0x9cd1,0x94d2,0x2124,0x39e6,0x0000,0x634c,0xa512,0x5a64,0x4a04,0x49e3,0x4180,0x4181,0x30e0,0x0000,0x2880,0x4180,0x3960,0x3180,0x3160,0x3962,0x0000,0x9490,0xa533,0x0000,0x2123,0x0000,0x52aa,0xb5b4,0x6b28,0x41a1,0x41c3,0x41a0,0x3920,0x30e0,0x3960,0x41a1,0x3920,0x30e0,0x3960,0x3140,0x3962,0x0000,0x7bce,0xb5d6,0x2184,0x1903,0x0000,0x31a6,0xad54,0x7349,0x41c0,0x41a2,0x41a1,0x3960,0x2900,0x2040,0x2000,0x2040,0x3100,0x3961,0x3140,0x3163,0x0000,0x7bce,0xc658,0x4207,0x10c2,0x0860,0x08e3,0xbdd5,0x8c2e,0x49c0,0x5204,0x41c1,0x41c1,0x30e0,0x62e8,0x9cb0,0x5225,0x3140,0x3981,0x3960,0x3982,0x0000,0x734b,0xce78,0x4a69,0x0000,0x1902,0x0000,0xa554,0x9cb0,0x41a0,0x5224,0x41e2,0x3981,0x5224,0x83ab,0xa511,0x8c2d,0x5244,0x3960,0x4161,0x3961,0x2900,0x4205,0xc637,0x6b8d,0x0000,0x2943,0x0000,0x9d12,0x9cb0,0x4180,0x5224,0x41c2,0x49e3,0x3980,0x7bcc,0xc615,0xad31,0x4a04,0x3960,0x41a1,0x3982,0x3142,0x18c0,0xc638,0x8430,0x0000,0x2985,0x0000,0x9cf2,0xad32,0x41c0,0x7349,0x8c0d,0x7329,0x7bac,0x734a,0x7bcc,0x9c8f,0x8c0d,0x6b08,0x83ec,0x7b8b,0x3982,0x2900,0xb5d6,0x7c2f,0x0000,0x29a5,0x2124,0x1903,0x18e2,0x18e3,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e3,0x0000,0x3a09,0xc590,0xf68b,0xf624,0xfda5,0xfd64,0xed45,0xe544,0xed64,0xed64,0xe544,0xed64,0xed44,0xed44,0xed44,0xed64,0xed64,0xed64,0xed64,0xed84,0xed84,0xed84,0xed63,0xed44,0xed44,0xdd22,0xc4e0,0xbdb1,0x7c30,0x10c0,0x1923,0x0000,0x31c7,0x9cd3,0x738b,0x4180,0x51e3,0x49a2,0x41c3,0x41a3,0x39a2,0x41a2,0x41c3,0x49c3,0x4182,0x4182,0x39a3,0x0000,0x842f,0xa533,0x2985,0x2123,0x0080,0x1124,0x94d2,0x7bcc,0x4100,0x49c3,0x41a3,0x41a2,0x41a3,0x41a3,0x41c3,0x41c3,0x41a2,0x39a2,0x3982,0x41c3,0x0000,0x7bad,0xad54,0x39e7,0x1902,0x1903,0x0000,0x842f,0x8c6e,0x41c0,0x49e3,0x41c3,0x39a2,0x41c3,0x41c3,0x49c4,0x41c3,0x41a2,0x41a2,0x3982,0x39a3,0x0000,0x6b0b,0xbdb6,0x52ab,0x00a0,0x1903,0x0000,0x8450,0x9cd1,0x4180,0x41c2,0x41a2,0x4182,0x4182,0x41a3,0x41a2,0x41a2,0x41a2,0x3982,0x3982,0x41a3,0x0000,0x62ea,0xc637,0x5b0b,0x0000,0x1903,0x0000,0x73ee,0x9cf1,0x49a0,0x49e2,0x41c3,0x41a2,0x41a2,0x41c3,0x41c3,0x41c3,0x41a3,0x41a3,0x41a2,0x4183,0x2000,0x4206,0xbe37,0x73ce,0x0000,0x2144,0x0000,0x5b2b,0xa553,0x5a65,0x4980,0x49e4,0x41c3,0x41c3,0x41c3,0x41a2,0x41a3,0x41a3,0x3983,0x3962,0x3983,0x3120,0x0000,0xbdb5,0x94b2,0x1103,0x39c6,0x0000,0x4269,0xa532,0x6307,0x4180,0x49e4,0x41c3,0x41a2,0x41c3,0x41c4,0x41c3,0x41a2,0x41a2,0x39a3,0x39a3,0x3141,0x0000,0xb574,0x9cf2,0x0000,0x2124,0x0000,0x31c6,0xad94,0x7bac,0x30a0,0x49e4,0x4182,0x41a3,0x41c3,0x39a2,0x41a2,0x41c3,0x41c3,0x4182,0x4182,0x3983,0x0000,0x9cd2,0xad74,0x0000,0x2123,0x0860,0x0041,0xad53,0x840c,0x3080,0x49c3,0x41a3,0x3982,0x41a3,0x41a3,0x41a3,0x41a3,0x4183,0x4162,0x3982,0x39a4,0x0000,0x94d2,0xbe37,0x0080,0x1923,0x10e2,0x0000,0xad75,0xa4f1,0x30c0,0x49e4,0x41c3,0x41c3,0x3120,0x62e9,0xad52,0x5aa8,0x3120,0x41c3,0x41a3,0x41a4,0x0000,0x8c6f,0xce57,0x2165,0x10e2,0x2123,0x0000,0x9d13,0xad32,0x40e0,0x5224,0x4a03,0x49e3,0x39a2,0x39a2,0x7348,0x4a03,0x3961,0x49e3,0x41a3,0x49c4,0x0000,0x62ea,0xc637,0x4a89,0x0000,0x2124,0x0000,0x8c91,0xa533,0x3920,0x5204,0x49e4,0x49e3,0x49c3,0x5266,0x7b69,0x6b08,0x4a04,0x41c3,0x41a2,0x41c4,0x0000,0x5288,0xce58,0x632c,0x0000,0x2965,0x0000,0x8450,0xbdd5,0x41c0,0x5244,0x7329,0x5a46,0x62c8,0x62a7,0x41c3,0x5225,0x5225,0x51e4,0x49e3,0x4a04,0x2060,0x4a27,0xbe17,0x636c,0x08c1,0x29a5,0x2124,0x1903,0x18e2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10c1,0x1101,0x0000,0x8c4f,0xeed2,0xfe67,0xf5a0,0xf560,0xed60,0xed60,0xed40,0xed40,0xed40,0xed40,0xed40,0xed40,0xf540,0xf540,0xf540,0xf540,0xf540,0xed40,0xf540,0xf560,0xed60,0xed40,0xed40,0xd540,0xcdf0,0xb595,0x4aa9,0x08a0,0x1923,0x10c2,0x0000,0x8450,0xad94,0x62c8,0x2000,0x2000,0x2000,0x1800,0x1800,0x2000,0x1000,0x0800,0x1000,0x0000,0x0000,0x6b2b,0xbdf6,0x7bee,0x0060,0x2144,0x10e2,0x0000,0x73ce,0xad94,0x6308,0x1800,0x1800,0x0800,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x0000,0x52a7,0xb5b5,0x8c71,0x0080,0x2143,0x1903,0x0000,0x5aca,0xad73,0x7bcb,0x3880,0x1800,0x1800,0x2000,0x1800,0x1800,0x2000,0x2000,0x2000,0x1000,0x0000,0x39c4,0xb5b5,0x9cf3,0x0061,0x2123,0x1903,0x0000,0x4aaa,0xb5b5,0x8c0e,0x20c0,0x1800,0x0800,0x1800,0x1800,0x1800,0x2000,0x2000,0x1800,0x0800,0x0000,0x41c4,0xbdf6,0xad75,0x0080,0x2124,0x18e3,0x0000,0x3a08,0xad94,0x946f,0x28a0,0x1000,0x1000,0x2000,0x1800,0x1800,0x1800,0x1000,0x0000,0x1000,0x0000,0x30e0,0xb5b5,0xb5d6,0x1922,0x1903,0x18e3,0x0060,0x0060,0xa553,0xa512,0x4160,0x2000,0x1800,0x1000,0x1000,0x1000,0x1000,0x0800,0x0800,0x1000,0x1000,0x0000,0x94b0,0xce58,0x52ab,0x2185,0x2964,0x0880,0x0000,0x94d1,0xad52,0x51e0,0x3000,0x2000,0x2000,0x1800,0x1000,0x0800,0x1000,0x1000,0x1800,0x0800,0x0000,0x9470,0xc637,0x52c9,0x0040,0x1903,0x10c2,0x0000,0x8cb1,0xb5b3,0x5262,0x0800,0x0800,0x0000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1000,0x0000,0x0000,0x73ad,0xce38,0x73ae,0x0000,0x2124,0x10c2,0x0000,0x7c0f,0xbdd6,0x62c7,0x1000,0x0000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0800,0x0000,0x0000,0x0000,0x630a,0xceb9,0x8450,0x0000,0x2144,0x1903,0x0000,0x73ce,0xce57,0x736a,0x1000,0x2000,0x2000,0x0800,0x30c0,0x62a4,0x2800,0x1800,0x2000,0x2000,0x0000,0x5aa8,0xce98,0x9491,0x0000,0x2144,0x1903,0x0000,0x5b4c,0xce77,0x8c0d,0x2000,0x2800,0x2000,0x2000,0x2000,0x2800,0x2000,0x2000,0x1800,0x2000,0x0000,0x3962,0xbdd6,0xad54,0x0000,0x2124,0x2124,0x0000,0x52ca,0xbe16,0x840d,0x1800,0x2000,0x1800,0x1800,0x1000,0x2800,0x1800,0x2000,0x2800,0x2000,0x0000,0x18a0,0xbdd5,0xb5b6,0x0000,0x2965,0x2124,0x0000,0x3a08,0xc617,0x9490,0x20a0,0x1800,0x1800,0x0000,0x1000,0x2000,0x2000,0x2800,0x2000,0x0800,0x0000,0x0000,0xad53,0xadb5,0x2164,0x2985,0x2144,0x2124,0x1903,0x18e3,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x18e2,0x1101,0x0060,0x1945,0xa4d0,0xe6b6,0xeed4,0xeeb3,0xeed4,0xe6b4,0xee93,0xeeb3,0xeeb3,0xee93,0xee93,0xe693,0xe693,0xe693,0xeeb3,0xeeb4,0xee93,0xe673,0xee93,0xeeb4,0xeeb3,0xee93,0xee94,0xe694,0xbdd6,0x632f,0x10e0,0x1924,0x1903,0x10c2,0x0040,0x00c0,0x9cf3,0xbe17,0xa533,0x9cf1,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0xa512,0x9cf2,0x9cf1,0x9cf2,0xa553,0xc637,0x8c71,0x0080,0x2144,0x1903,0x10c2,0x0880,0x0000,0x8cb1,0xbe16,0xa532,0x9cf1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cb1,0xa513,0xc637,0x9d13,0x1944,0x1944,0x1102,0x10c2,0x10c2,0x0000,0x7bce,0xb5b5,0xad33,0x9cf2,0x9cf2,0x9d12,0x9d12,0x9d11,0x9d11,0x9d11,0x9cf1,0x9cf2,0xa513,0xc637,0xa574,0x31e6,0x1923,0x1903,0x10c2,0x10e2,0x0000,0x6b8d,0xb5b5,0xa553,0x9cf1,0xa532,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0x9cf2,0xa532,0xce58,0xb5b6,0x3208,0x10e1,0x1903,0x10c2,0x10e2,0x0000,0x5b0c,0xb5d5,0xad74,0x9cf2,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0x9d12,0xa533,0xc637,0xbe17,0x52ca,0x0080,0x2144,0x10c2,0x10e2,0x0000,0x4268,0xadb5,0xb5b5,0xa512,0x9d12,0x9cf1,0x9cd1,0x94b1,0x9cd1,0x9cf1,0x9cd1,0x9cd1,0x9cd0,0xb5b5,0xc638,0x6b8d,0x0060,0x29a5,0x1902,0x10c2,0x0000,0x31a6,0xa533,0xbdb5,0xa533,0x9cf2,0x9cf2,0x9cf2,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9d11,0x9d12,0xb5b5,0xc637,0x73ae,0x0020,0x2143,0x10e2,0x10c2,0x0000,0x00a2,0xa532,0xbe16,0xa512,0x9d12,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xa512,0xad74,0xc638,0x8c71,0x0000,0x2123,0x10e2,0x10a1,0x0040,0x0003,0x94d2,0xbdf5,0x9d12,0x9cf2,0x9cf1,0x9cf1,0x9cf1,0x9cd1,0x9cf1,0x9cf2,0x9cf1,0x9cf1,0xa553,0xce78,0x9cf2,0x0000,0x2144,0x10e2,0x10c2,0x10c2,0x0000,0x94d1,0xc637,0xa533,0xa4f1,0xa4f1,0xa4f1,0xa512,0x9cf1,0x9cd0,0x9cf1,0x9cd1,0x9cf1,0xa532,0xce58,0xa514,0x0860,0x2124,0x1903,0x18c1,0x18e3,0x0000,0x8471,0xc678,0xad53,0xa4f1,0x9cf1,0x9cf1,0x9cf1,0x9cf1,0x9cd1,0x9cd1,0x9cd1,0x9cd1,0x9cf1,0xc617,0xb5d6,0x29a6,0x1102,0x1903,0x10c2,0x18e3,0x0000,0x7c0f,0xc636,0xad53,0x9cf2,0x9d12,0xa512,0xa512,0x9cf2,0x9cf2,0x9cf1,0x9cd1,0x9cd1,0x9cf2,0xbe37,0xb5d6,0x3a28,0x10e3,0x2165,0x1903,0x2144,0x0000,0x6b8e,0xbe36,0xad94,0x9cf1,0xa4f2,0x9cf2,0x9cf2,0x9cf2,0xa4f2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0xbdf6,0xbdf6,0x4a89,0x10e2,0x29a5,0x2144,0x1923,0x1903,0x18e3,0x1903,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c3,0x10c4,0x08c1,0x10e2,0x0000,0x0002,0x530e,0x8472,0x94d2,0x94d3,0x94d4,0x94f3,0x94d3,0x94d3,0x8cb2,0x8c92,0x8492,0x8492,0x8c93,0x8cb3,0x8cb3,0x8c93,0x8c92,0x8c93,0x8cb3,0x8cb2,0x8cd1,0x94d3,0x7c10,0x21a6,0x0000,0x2144,0x18e2,0x10e2,0x10a1,0x10c2,0x0000,0x0000,0x6b8e,0x9cf2,0x9d13,0x9513,0x9d13,0x9d33,0x9d33,0x9d33,0xa513,0x9d13,0x9d34,0x94f3,0x5b0c,0x0000,0x1923,0x1903,0x1103,0x10a1,0x10c2,0x0060,0x0000,0x636d,0x94f2,0x9d33,0x9d34,0x9d34,0x9d34,0x9d34,0x9d34,0x9d34,0x9d14,0x9d34,0x9d13,0x6bae,0x0000,0x10e2,0x1103,0x10e2,0x08a1,0x10c2,0x08a2,0x0000,0x52cb,0x8471,0x9513,0x9513,0x9d13,0x9d33,0x9d13,0x9d13,0x9d13,0x9513,0x9d13,0x9d13,0x73ce,0x0000,0x08c1,0x1923,0x10c2,0x10c2,0x08a1,0x10e2,0x0000,0x4249,0x8450,0x94d2,0x9cf2,0x9cf3,0x94f3,0x94f3,0x94f3,0x9513,0x9d13,0x9cf2,0x9cd2,0x7bcf,0x0082,0x0020,0x1923,0x10c2,0x10c2,0x08a1,0x10c2,0x0000,0x31e7,0x8470,0x94d2,0x9d13,0x9513,0x9513,0x9d13,0x9d13,0x9d14,0x9d14,0x9d13,0x9cf3,0x7c10,0x1925,0x0000,0x2144,0x10e2,0x10c2,0x08a1,0x10c2,0x0000,0x1965,0x8430,0x9d34,0x9d54,0x9d34,0x9d34,0x9d13,0x9d13,0x9d33,0x9d13,0x9513,0x9d13,0x8c91,0x3a08,0x0000,0x2144,0x1943,0x10e2,0x10a1,0x10c2,0x0000,0x0000,0x73ef,0x94f3,0x9d34,0x9513,0x94f3,0x9513,0x9d13,0x9d13,0x9d13,0x9d13,0x9d33,0x8c91,0x3a27,0x0000,0x1923,0x10c2,0x10a2,0x08a1,0x10c2,0x0000,0x0000,0x73ae,0x94d2,0x9d13,0x9cf3,0x9d34,0x9d34,0x9d33,0x9d33,0x9d34,0x9d33,0xa533,0x94f3,0x52cb,0x0000,0x1923,0x10c2,0x10e2,0x08a1,0x10a2,0x0000,0x0000,0x636c,0x94d2,0x9d14,0x9d13,0x9d33,0x9513,0x9513,0x9d33,0x9d13,0x9d13,0x9d13,0x94d3,0x632d,0x0000,0x1903,0x1903,0x10c2,0x10c2,0x10c2,0x08a1,0x0000,0x634c,0x9d13,0x9d33,0x9d33,0xa534,0xa534,0x9d33,0x9d33,0x9d13,0x9d33,0xa554,0x9d34,0x738e,0x0000,0x1903,0x1903,0x18e2,0x18c2,0x10c2,0x10c2,0x0000,0x530b,0x94f3,0x9d34,0x9d34,0xa554,0xa574,0xa574,0xa554,0x9d33,0x9d34,0x9d34,0xa534,0x7c0f,0x0000,0x10c2,0x2124,0x18e3,0x10e2,0x10c2,0x1903,0x0000,0x52aa,0x94b2,0xa534,0xa513,0xa533,0x9d34,0x9d34,0x9d34,0x9d34,0x9d13,0x9d12,0x9d13,0x8450,0x00c3,0x00a1,0x2985,0x1903,0x1903,0x1903,0x2124,0x0000,0x4a8a,0x94d2,0xa514,0xa535,0xa554,0xa554,0xa554,0xa554,0xa554,0xa555,0xa555,0xa555,0x8c51,0x2126,0x10e2,0x2985,0x2144,0x2144,0x2144,0x1903,0x18e3,0x18e3,0x1903,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10a1,0x10a0,0x18c2,0x18e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x2143,0x10e2,0x10c2,0x10e2,0x10c2,0x0881,0x10c2,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1903,0x10e2,0x10e2,0x10c2,0x10a2,0x10e2,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x18e2,0x10c2,0x10c2,0x10c2,0x10c1,0x08a1,0x1102,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1903,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1902,0x1903,0x10c2,0x10c2,0x10c2,0x08a1,0x1081,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08c2,0x2144,0x10e2,0x10e2,0x10c2,0x10a2,0x1081,0x10e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x18e2,0x10e2,0x10c2,0x10a2,0x0881,0x10e2,0x08c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x10c3,0x10e2,0x10c2,0x10a2,0x0881,0x10c2,0x08c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10e2,0x10a2,0x10a2,0x08a1,0x0881,0x10a1,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1903,0x10c2,0x10e2,0x10c2,0x10a1,0x10a2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1902,0x1902,0x18c3,0x10c2,0x10c1,0x18c1,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2124,0x18e3,0x18e3,0x10c2,0x18e2,0x10c2,0x1923,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2964,0x1903,0x1903,0x1923,0x1924,0x1903,0x2145,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x2164,0x2144,0x2144,0x2144,0x2124,0x2123,0x18e2,0x10e2,0x18e3,0x18e2, +0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e3,0x2144,0x2985,0x29a5,0x29a5,0x2985,0x3185,0x2965,0x2965,0x2965,0x2965,0x2985,0x3185,0x2965,0x2964,0x2965,0x2965,0x2985,0x3185,0x2965,0x2965,0x3165,0x3165,0x2965,0x2944,0x2124,0x2103,0x2124,0x2124,0x2123,0x2103,0x1903,0x2123,0x2144,0x2144,0x2124,0x2123,0x2123,0x2143,0x2144,0x2144,0x2144,0x1923,0x2144,0x2964,0x2964,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x1903,0x2944,0x2144,0x1923,0x2123,0x1903,0x1923,0x2124,0x2103,0x2123,0x1923,0x2123,0x2144,0x2144,0x2123,0x1903,0x2123,0x2123,0x2123,0x1903,0x1923,0x1923,0x2164,0x2164,0x2123,0x2123,0x2124,0x2123,0x2123,0x2123,0x2123,0x2123,0x2124,0x2164,0x2965,0x1904,0x1904,0x2124,0x1923,0x1903,0x1923,0x1903,0x1903,0x2144,0x2144,0x2123,0x2124,0x2123,0x2123,0x2123,0x2124,0x2123,0x2143,0x2124,0x2144,0x2964,0x2144,0x2123,0x2123,0x1923,0x2123,0x2123,0x2123,0x1923,0x2144,0x2164,0x2103,0x2103,0x2123,0x2123,0x2123,0x2123,0x2144,0x2143,0x2143,0x2164,0x2164,0x2123,0x2124,0x2124,0x2123,0x1903,0x1903,0x2103,0x1903,0x2123,0x2144,0x2144,0x2103,0x2123,0x2123,0x2123,0x2103,0x2103,0x2123,0x2143,0x2964,0x2965,0x2124,0x1903,0x1903,0x1903,0x1903,0x1923,0x18e2,0x1902,0x1923,0x2144,0x2144,0x2123,0x2123,0x2124,0x2123,0x2123,0x2123,0x2123,0x2123,0x2144,0x2965,0x2144,0x1903,0x2124,0x2123,0x2123,0x1903,0x1903,0x18e3,0x1903,0x2144,0x2123,0x2123,0x2103,0x2123,0x2123,0x2123,0x2123,0x2144,0x2123,0x2144,0x2164,0x2144,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2144,0x2123,0x2103,0x2103,0x2123,0x1903,0x2123,0x2123,0x1923,0x1923,0x2124,0x2965,0x2144,0x1923,0x1923,0x1923,0x1923,0x1923,0x1903,0x2123,0x1903,0x2144,0x2144,0x2123,0x2123,0x2123,0x2123,0x2103,0x2103,0x2123,0x2123,0x2104,0x2965,0x2965,0x1903,0x2103,0x2123,0x2104,0x2124,0x2124,0x1923,0x2123,0x2144,0x2944,0x2123,0x2103,0x2123,0x2144,0x2144,0x2124,0x2124,0x2124,0x2944,0x2964,0x2965,0x2144,0x2124,0x2124,0x2124,0x2123,0x2103,0x2103,0x2124,0x2964,0x2964,0x2144,0x2144,0x2144,0x2944,0x2144,0x2944,0x2944,0x2944,0x2964,0x29a5,0x2986,0x2165,0x2965,0x2165,0x2165,0x2165,0x2165,0x2165,0x2965,0x2985,0x31a6,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2964,0x2985,0x2985,0x1923,0x1923,0x2144,0x2144,0x2144,0x1923,0x1903,0x18e2,0x10e2,0x18e2,0x18e2, +0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10e2,0x18e2,0x1903,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x2124,0x10e3,0x10e2,0x10e2,0x10e2,0x10e3,0x10e3,0x1903,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x1103,0x10e2,0x10e2,0x10c2,0x10c2,0x10c1,0x10e2,0x08c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e3,0x10c2,0x10e3,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x18e3,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c2,0x18e3,0x08a1,0x10c2,0x10c2,0x10c2,0x08a1,0x08c2,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e2,0x1903,0x10c2,0x10e2,0x10c2,0x10a2,0x10c2,0x10c2,0x1903,0x00a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a1,0x1903,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e3,0x08a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x1903,0x10e2,0x10e2,0x10e2,0x08a2,0x10c2,0x08a1,0x18e2,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x2102,0x10c2,0x08a2,0x10e2,0x10c2,0x08a2,0x08c1,0x10c2,0x18a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x18e2,0x2123,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x2123,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x2123,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1923,0x2944,0x10c1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x1923,0x1903,0x2144,0x1923,0x1923,0x1903,0x18e2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10c2,0x10c2,0x0000,0x29a6,0x6b6c,0x7bee,0x7c0f,0x842f,0x840e,0x7bee,0x7bee,0x840e,0x7bee,0x7c0e,0x840e,0x840e,0x842f,0x842f,0x840f,0x7c0e,0x7bee,0x7bee,0x7bee,0x7c0f,0x7c0f,0x840f,0x840f,0x7c0f,0x7bee,0x7bee,0x7bee,0x7bee,0x7bef,0x7bcf,0x7bce,0x636c,0x1965,0x0000,0x2123,0x1923,0x1923,0x18e2,0x10c2,0x10e2,0x0000,0x00a2,0x5b2b,0x73ae,0x73ae,0x73ae,0x73ce,0x7bce,0x73ce,0x73ce,0x73ae,0x73ce,0x73ae,0x4248,0x0000,0x1903,0x1903,0x10c2,0x10c2,0x10c2,0x10c2,0x0000,0x0000,0x52aa,0x6b8d,0x73ae,0x73ae,0x73ce,0x7bef,0x7bce,0x73ae,0x7bce,0x7bcf,0x73ce,0x528a,0x0000,0x08a2,0x1923,0x10e2,0x10c2,0x08a1,0x10e2,0x0881,0x0000,0x4228,0x6b8d,0x73ad,0x738d,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73cf,0x52ca,0x0000,0x00a1,0x1903,0x10c2,0x10e2,0x10c2,0x10e2,0x0060,0x0000,0x4a89,0x73ad,0x7bcf,0x7bef,0x73ef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bee,0x632b,0x0000,0x0000,0x1903,0x10c2,0x10c2,0x08a1,0x08a1,0x10c2,0x0000,0x2185,0x530b,0x632c,0x632c,0x632c,0x634c,0x634c,0x634c,0x6b8d,0x634c,0x634c,0x4a8a,0x0000,0x0000,0x1903,0x10e2,0x10e2,0x08a1,0x0881,0x10c3,0x0000,0x10c3,0x5b0b,0x634c,0x6b4c,0x6b4c,0x634c,0x632b,0x632b,0x630b,0x632b,0x6b8c,0x630b,0x10c2,0x0000,0x1903,0x10e1,0x10c1,0x10c2,0x10c2,0x18e3,0x0000,0x0040,0x5b0b,0x6b6d,0x6b8d,0x738d,0x6b8d,0x6b8d,0x6b6c,0x6b6c,0x6b4c,0x6b8d,0x632b,0x1103,0x0000,0x1923,0x10e2,0x10e2,0x08a1,0x08a1,0x10c2,0x0000,0x0000,0x528a,0x6b4c,0x6b8c,0x6b8c,0x636d,0x63ae,0x6bad,0x638d,0x6b6c,0x6b8d,0x630c,0x2145,0x0000,0x1903,0x10e2,0x10c2,0x10c2,0x08a1,0x10e1,0x0000,0x0000,0x4a69,0x634c,0x636d,0x638d,0x638d,0x6bad,0x6bad,0x6b6c,0x6b8d,0x6b6c,0x634c,0x29e7,0x0000,0x18e2,0x1903,0x10e2,0x10a1,0x10c1,0x10e2,0x0060,0x0000,0x3a28,0x634c,0x634c,0x634c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x634c,0x634c,0x3a28,0x0000,0x10e3,0x1924,0x1902,0x18e3,0x18e3,0x18e3,0x10a2,0x0000,0x31c6,0x630b,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x3a08,0x0000,0x18e2,0x2124,0x1903,0x18e3,0x18e2,0x1903,0x2103,0x0000,0x1966,0x5b0b,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x634d,0x634d,0x634d,0x634d,0x634c,0x634c,0x3a28,0x0000,0x1903,0x2144,0x2144,0x2144,0x2124,0x1903,0x18e2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x0000,0x840e,0xbd93,0xc5f4,0xc5d3,0xc5f4,0xce14,0xcdd3,0xcdd3,0xcdd3,0xcdd3,0xcdd3,0xc5d3,0xcdd3,0xcdd3,0xcdf3,0xcdf4,0xcdd4,0xcdd4,0xc5b4,0xc5b4,0xc5b4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xcdd4,0xc5d4,0xbdb4,0xc5d4,0xc5f5,0xbdf5,0x7c2f,0x0000,0x2144,0x1923,0x10e2,0x10e2,0x0000,0x52a9,0xa533,0xadb4,0xb594,0xb595,0xb595,0xb595,0xb595,0xb595,0xb5b5,0xad95,0xad95,0xb5b5,0xc617,0x94f2,0x1903,0x1903,0x18e3,0x10c2,0x10e2,0x0000,0x39e7,0x9cf2,0xb5b5,0xad74,0xad74,0xad74,0xb595,0xbdd5,0xad53,0xa533,0xad74,0xad74,0xb5b4,0xc637,0xa514,0x2986,0x10e1,0x18e2,0x10c2,0x10c2,0x0000,0x00a0,0x94b1,0xbdd6,0xbdb5,0xb595,0xb574,0xb594,0xb5b5,0xb595,0xb595,0xb595,0xb574,0xb5b5,0xc637,0xb5b5,0x4248,0x0060,0x2124,0x10c2,0x10a2,0x0020,0x10e3,0x8c70,0xb5b4,0xad73,0xb574,0xb594,0xb594,0xb5b4,0xb5b4,0xb5b4,0xb5b5,0xb594,0xb5b4,0xbe16,0xad95,0x528a,0x0040,0x2124,0x10c2,0x10c2,0x10c2,0x0000,0x7bee,0xbdd5,0xb5b4,0xb594,0xb595,0xb5b5,0xbdb5,0xb5b5,0xb595,0xbdd5,0xb5b5,0xb595,0xbdd7,0xad74,0x4aa9,0x0060,0x2123,0x10c2,0x10c1,0x10c2,0x0000,0x6b6d,0xb5b5,0xbdb4,0xb573,0xad73,0xb573,0xad32,0xa511,0xa511,0xa4f1,0xa511,0xad52,0xad93,0xb594,0x738d,0x0000,0x2143,0x1102,0x10c2,0x18e3,0x0000,0x5b0b,0xb595,0xbdd5,0xb595,0xad74,0xad73,0xb593,0xb593,0xad73,0xad73,0xad32,0xad53,0xad73,0xb5d5,0x7bee,0x0000,0x2123,0x10e2,0x08a1,0x10c2,0x0000,0x3a07,0xb573,0xce15,0xc5b3,0xbdd3,0xc5d3,0xbdb4,0xbdb5,0xbdd5,0xc5b3,0xc5d3,0xc5d3,0xc5d5,0xc616,0x8450,0x0000,0x1903,0x1903,0x10c1,0x10c2,0x0000,0x2185,0xad32,0xce15,0xc5d4,0xc5d4,0xcdd4,0xc5b4,0xbdb4,0xbdb4,0xbd93,0xbdb3,0xbdb3,0xbdf4,0xce36,0x9cf2,0x10c2,0x1903,0x1903,0x10c2,0x10c2,0x0000,0x10c4,0xa4d2,0xd5f6,0xcdd5,0xcdd5,0xcdd5,0xcdd6,0xc5b5,0xc5d5,0xc5f5,0xc5d5,0xbdb4,0xc5d4,0xce15,0xa4d1,0x2165,0x1903,0x2123,0x18e3,0x18e2,0x08a1,0x0000,0x8c70,0xc5f6,0xbdd5,0xbdb5,0xb595,0xb595,0xbdb5,0xbdb5,0xbdb5,0xbd95,0xb595,0xb5d4,0xc657,0x9cf3,0x1904,0x10e2,0x2144,0x1903,0x18e3,0x18e3,0x0000,0x8430,0xce36,0xd635,0xce15,0xc615,0xc615,0xcdf5,0xcdf5,0xcdf5,0xc5f5,0xc615,0xc615,0xc615,0xc615,0xc615,0xc5f5,0xc5f5,0xc5f5,0xc5f5,0xc5f5,0xc615,0xc5f5,0xc5d4,0xce57,0x9d12,0x1923,0x2123,0x2164,0x2144,0x1923,0x1903,0x18e3,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x0000,0x73cf,0xb573,0xac2a,0x8b05,0x8a80,0x8260,0x8260,0x8260,0x8240,0x8240,0x8260,0x8260,0x8240,0x8260,0x7a40,0x8240,0x8260,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a40,0x7a60,0x7a60,0x8240,0x7a83,0x9c6d,0xbdd5,0x6bae,0x08a0,0x2144,0x1923,0x0000,0x31c7,0xa533,0x9cd0,0x5265,0x3980,0x3960,0x3960,0x3160,0x3160,0x3980,0x3960,0x3980,0x3960,0x3960,0x6b4b,0xbe17,0x94d2,0x08a0,0x2124,0x18e3,0x0020,0x2144,0x9d12,0xa511,0x5ac7,0x41a1,0x3960,0x3960,0x3960,0x3960,0x2900,0x28e0,0x3140,0x3140,0x3160,0x5ae9,0xbdd6,0xa534,0x1102,0x1902,0x18e3,0x10a2,0x0000,0x8c91,0xb594,0x7b6b,0x41c3,0x3981,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x5aa8,0xb5b5,0xb5d6,0x31a6,0x1102,0x1903,0x10a2,0x0000,0x8c50,0xad74,0x6b49,0x3960,0x3920,0x30e0,0x3100,0x3920,0x3940,0x3920,0x3920,0x3140,0x2920,0x4a25,0xad34,0xbdd7,0x3a27,0x10c2,0x18e3,0x18e2,0x0000,0x6b8d,0xbdf6,0x8c4e,0x5245,0x4a25,0x4a05,0x4a05,0x4a25,0x4a25,0x4a04,0x49e3,0x4a05,0x49e5,0x5a67,0xa553,0xb5f6,0x4a89,0x00a0,0x1903,0x10e2,0x0000,0x5aeb,0xc616,0x94af,0x5244,0x4a04,0x41e3,0x41c2,0x41a2,0x41a1,0x41c1,0x41c1,0x41c1,0x3980,0x39c2,0x842e,0xc617,0x738e,0x0000,0x1923,0x1903,0x0000,0x4a89,0xbe17,0xa512,0x5244,0x4204,0x39a1,0x3960,0x39a0,0x41a1,0x41a1,0x41a1,0x3980,0x3960,0x3960,0x8c4f,0xce78,0x7c10,0x0000,0x2123,0x10c2,0x0020,0x00e3,0xbdb4,0xcdd3,0x9347,0x8aa3,0x82a2,0x8aa2,0x9b87,0x9be9,0x9367,0x8281,0x82a2,0x82a3,0x82a4,0x9c4d,0xd678,0x8c91,0x0000,0x2144,0x10c2,0x0020,0x0001,0xb553,0xcdd2,0x9387,0x8ac4,0x8aa2,0x8281,0x9325,0x9ba7,0x9346,0x8283,0x8280,0x7aa1,0x72a4,0x93aa,0xce38,0xa514,0x0000,0x2144,0x1102,0x10a2,0x0000,0xa532,0xd614,0xa3c9,0x8ae5,0x8ae5,0x82e5,0x82c4,0x9b65,0x92e0,0x82c2,0x8ae4,0x8ae3,0x82c2,0x938a,0xd656,0xad74,0x0000,0x2144,0x1903,0x18e3,0x0000,0x8c91,0xc657,0x83ed,0x5246,0x5226,0x5225,0x4a25,0x5246,0x5246,0x5246,0x5246,0x5246,0x5245,0x736b,0xce58,0xad76,0x0000,0x2144,0x1903,0x2123,0x0000,0x8c71,0xeed7,0xb4ae,0x9326,0x8b05,0x8304,0x8b04,0x8ae3,0x8b03,0x8ae3,0x8ae3,0x8ae4,0x8ae4,0x8ae4,0x8ae5,0x8ae5,0x8ae4,0x8ae4,0x8ae4,0x8ae4,0x8ae4,0x8ae5,0x8ae5,0x82c4,0x8bcb,0xc614,0x9d33,0x00a1,0x2964,0x2144,0x2144,0x1923,0x1903,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10a1,0x10c2,0x0000,0x29c7,0xa4f1,0xa3c9,0x9ac0,0x92e1,0x8a80,0x8a60,0x8a80,0x8a80,0x8a80,0x8a80,0x8a80,0x8280,0x8280,0x8280,0x8a80,0x8a80,0x8a80,0x8a60,0x8240,0x8a60,0x8a60,0x8280,0x8280,0x8280,0x8260,0x8a60,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8240,0x68a0,0x93ec,0x9d13,0x3a07,0x1902,0x1923,0x0000,0x7bee,0x94b0,0x5222,0x4180,0x41a1,0x3980,0x4180,0x4181,0x41a1,0x41a1,0x41a0,0x3960,0x3960,0x3960,0x0000,0x5aea,0xb5b5,0x5aca,0x0080,0x1923,0x0000,0x6b8d,0xa510,0x5a84,0x3100,0x3980,0x3960,0x4180,0x3960,0x4160,0x3961,0x4182,0x3980,0x3960,0x3962,0x0000,0x41e6,0xadb5,0x636d,0x0000,0x2124,0x0000,0x4aaa,0xa553,0x7349,0x30e0,0x4180,0x3960,0x3140,0x3980,0x41a2,0x3981,0x3980,0x3980,0x3160,0x3961,0x0800,0x2020,0xb5d6,0x8c91,0x0000,0x2124,0x0000,0x3a08,0x94b1,0x6b29,0x3940,0x41a1,0x3981,0x4182,0x4182,0x3981,0x4181,0x4182,0x4182,0x3960,0x3981,0x1840,0x0000,0xb5b5,0x8cb1,0x0000,0x2144,0x0000,0x1945,0xa553,0x8c4e,0x2000,0x3940,0x3940,0x3140,0x3160,0x3160,0x3960,0x3940,0x3940,0x3120,0x3120,0x2060,0x0000,0xad95,0x9d13,0x0000,0x2144,0x1081,0x0000,0x9d13,0xa4d0,0x2860,0x3980,0x4180,0x3960,0x3960,0x3960,0x3140,0x3940,0x3940,0x3960,0x3960,0x3140,0x0000,0x9491,0xb5d6,0x2164,0x1903,0x18e2,0x0000,0x94f2,0xa532,0x3920,0x3960,0x3960,0x3960,0x3980,0x3940,0x3940,0x3960,0x4181,0x3940,0x3140,0x3120,0x0000,0x9491,0xc637,0x2144,0x10c1,0x1903,0x0000,0x840f,0xddf3,0x8aa0,0x7a00,0x8a60,0x8200,0x8b26,0xbd2f,0x9c0a,0x9346,0x7a41,0x8240,0x8240,0x7a20,0x5000,0x9c0d,0xc637,0x31e7,0x10c1,0x2103,0x0000,0x7bce,0xddf3,0x92e0,0x8220,0x8a60,0x7a60,0x7a60,0x9366,0xa3ea,0xb530,0x9b89,0x79c0,0x8260,0x7a40,0x5800,0x7b09,0xce57,0x632c,0x0000,0x2143,0x0000,0x6b6c,0xd613,0x9b84,0x8220,0x8260,0x8240,0x7200,0xb46b,0xcd51,0xbcf0,0x8ae4,0x8200,0x8240,0x8240,0x60a0,0x7ac7,0xd677,0x6bad,0x0000,0x2944,0x0000,0x4228,0xbdd5,0x83cc,0x1000,0x3960,0x3940,0x4160,0x3120,0x3100,0x28e0,0x3120,0x3960,0x3940,0x3920,0x0000,0x4a07,0xce79,0x7bef,0x0000,0x2965,0x0000,0x21a6,0xde77,0xcd0e,0x7960,0x8a60,0x8a80,0x8280,0x8260,0x8260,0x8260,0x8a80,0x8a80,0x8a80,0x8260,0x8a60,0x8260,0x8260,0x8240,0x8220,0x8240,0x8260,0x8280,0x8a60,0x8240,0x8240,0x60e0,0x7aa5,0xc616,0x636d,0x0081,0x2985,0x2144,0x2124,0x1903,0x18e2,0x18e3,0x18e3, +0x10a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10e3,0x0000,0x52eb,0xa4d0,0xa341,0xa365,0x9303,0x8aa1,0x8281,0x8281,0x8281,0x8281,0x8281,0x8281,0x8281,0x8281,0x8261,0x8261,0x8a81,0x8a81,0x8281,0x8261,0x8281,0x82a1,0x8281,0x8280,0x8a81,0x8a81,0x8261,0x8281,0x8280,0x8281,0x8281,0x8280,0x8281,0x8281,0x8260,0x7a61,0x7a00,0x7ae6,0x94b2,0x52aa,0x2102,0x10e2,0x08a3,0x842f,0x7bcc,0x5223,0x49e3,0x41a2,0x41a1,0x3140,0x28c0,0x28c0,0x3120,0x3140,0x3961,0x4161,0x3961,0x3940,0x2922,0x9d13,0x6b4c,0x0080,0x1923,0x0000,0x7bee,0x8c6e,0x5222,0x49c3,0x41a2,0x4181,0x3100,0x3941,0x41a2,0x4181,0x30e0,0x3980,0x3961,0x3962,0x3942,0x2000,0x94f2,0x7c30,0x0000,0x1924,0x0000,0x634c,0x9cf1,0x62c6,0x4a03,0x49a3,0x4181,0x41a2,0x28e0,0x1000,0x2000,0x4161,0x4181,0x3961,0x3961,0x4183,0x0000,0x94b1,0x9d33,0x0880,0x1924,0x0000,0x52eb,0x8c8f,0x5a85,0x4a03,0x49c2,0x4182,0x3100,0x3120,0x39a1,0x39a1,0x28c0,0x3120,0x3961,0x3960,0x3983,0x0000,0x8c70,0x94f2,0x0080,0x2144,0x0000,0x4269,0xa532,0x6b28,0x49c0,0x41c3,0x4181,0x4160,0x3120,0x28c0,0x30c0,0x3940,0x4182,0x3981,0x3961,0x39a3,0x0000,0x7c0f,0xa554,0x2123,0x1923,0x0020,0x1925,0x9cf2,0x7b8a,0x49c0,0x49e3,0x41c1,0x41a1,0x3140,0x3981,0x39a1,0x3960,0x3120,0x3980,0x3981,0x4183,0x1000,0x5aca,0xb5d6,0x52ea,0x0060,0x10a1,0x1103,0x9d33,0x83cc,0x4180,0x49e3,0x49a2,0x3940,0x2900,0x3961,0x41a1,0x3960,0x30e0,0x3140,0x3961,0x3982,0x0800,0x630a,0xc637,0x52ca,0x0000,0x2124,0x0000,0x9cf2,0xcd50,0x8220,0x8ac3,0x8aa2,0x7a20,0x9b46,0xb4ad,0x7a63,0x7a00,0x8241,0x8260,0x7240,0x7a41,0x71e0,0x6a22,0xbdd6,0x632c,0x0000,0x2103,0x0000,0x9470,0xc530,0x92a0,0x8ac4,0x8281,0x8a81,0x8261,0x8240,0x79e0,0xaced,0x9bc9,0x71c0,0x7a61,0x7a41,0x7223,0x5920,0xbdf5,0x8c51,0x0000,0x2144,0x0000,0x9470,0xc571,0x9ae0,0x92e4,0x8a82,0x8a61,0x8281,0xa3c8,0x93a9,0xcd92,0x9ba8,0x8240,0x8282,0x8261,0x7a42,0x5860,0xbdd4,0x94d2,0x0000,0x2965,0x0000,0x6b6d,0xb594,0x62a5,0x4a03,0x49c3,0x49a2,0x4182,0x49e3,0x5a85,0x5a86,0x49e4,0x41a1,0x4182,0x3961,0x39a3,0x0000,0xb595,0x9cf3,0x0000,0x2965,0x0000,0x5b2c,0xde35,0xabc7,0x92c0,0x92e3,0x82a2,0x82a1,0x82a2,0x82a2,0x8281,0x8aa1,0x8aa1,0x8a82,0x8a82,0x8a82,0x8282,0x8282,0x8281,0x82a1,0x8281,0x8281,0x82a1,0x8282,0x8281,0x7a81,0x7a63,0x6100,0xad32,0x8c91,0x0000,0x3185,0x2144,0x1923,0x18e2,0x10e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e3,0x0000,0x530c,0x9cd0,0xa364,0xa365,0x9303,0x8ac1,0x8aa0,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x8a60,0x8a61,0x8261,0x8a81,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x8a60,0x8a80,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71e0,0x7b07,0x9cf3,0x5aeb,0x2122,0x10e2,0x0083,0x7c0e,0x7bec,0x5223,0x49e3,0x41c2,0x4180,0x5225,0x62a8,0x5aa8,0x5a87,0x4a25,0x4181,0x3960,0x3140,0x30e0,0x3184,0x94d2,0x632c,0x1101,0x1923,0x0000,0x73ce,0x8c4e,0x5223,0x49c3,0x41a2,0x3980,0x5224,0x41c2,0x3981,0x3940,0x5225,0x41c2,0x3140,0x3161,0x28e0,0x28e0,0x8cb1,0x740f,0x08a0,0x1903,0x0000,0x634d,0x9cf1,0x62a5,0x4a02,0x49e2,0x41c2,0x28c0,0x52a7,0x8c6e,0x7bab,0x2880,0x3920,0x3961,0x3140,0x3121,0x0000,0x8470,0x9cf3,0x2122,0x1903,0x0000,0x52eb,0x94b0,0x62e7,0x49e2,0x41c2,0x4180,0x62c7,0x5265,0x3140,0x3980,0x6308,0x5a86,0x3100,0x3960,0x3161,0x1000,0x8c70,0x94f2,0x10e2,0x2123,0x0000,0x4a69,0xa532,0x6b29,0x41a0,0x41c2,0x4180,0x4180,0x4a05,0x5a87,0x5a67,0x3941,0x2900,0x3961,0x3940,0x3142,0x0000,0x7bef,0xa554,0x3185,0x1903,0x0000,0x1945,0x9cf2,0x7bab,0x49c0,0x49c3,0x41a1,0x39a0,0x41e0,0x3160,0x3960,0x4182,0x41e3,0x3980,0x3960,0x3962,0x1800,0x5289,0xad75,0x5b0b,0x08c1,0x1060,0x1924,0x9d33,0x83ed,0x49a0,0x49e2,0x3960,0x49c3,0x4a04,0x3981,0x3960,0x41c0,0x4a24,0x41a2,0x3140,0x3141,0x1000,0x5aca,0xb5d6,0x52ca,0x0000,0x2124,0x0000,0xa533,0xcd50,0x8a40,0x8ac3,0x8281,0x7a20,0x9326,0xb48d,0x7243,0x7a00,0x8260,0x8240,0x7a40,0x7a20,0x69c0,0x6a43,0xb595,0x6b8d,0x0000,0x2123,0x0000,0x9470,0xc52f,0x92c0,0x92c3,0x8aa1,0x8281,0x8260,0x8220,0x79c0,0xaccd,0x9ba8,0x79c0,0x7a41,0x7220,0x7201,0x5920,0xbdf5,0x8c71,0x0000,0x2144,0x0000,0x9490,0xc571,0x9b00,0x92c2,0x8a81,0x8a80,0x8260,0x69c0,0xb46b,0xb48c,0x7a40,0x8240,0x7a61,0x7a20,0x7221,0x6100,0xbdb4,0x9d12,0x0000,0x2964,0x0000,0x73ae,0xb5b4,0x5a65,0x41c2,0x49e3,0x41a2,0x3120,0x7349,0xbdb4,0xc5f6,0x7bac,0x2920,0x39a1,0x3940,0x3961,0x0000,0xa534,0x9cf3,0x0000,0x2985,0x0000,0x6b8d,0xde56,0xabc7,0x92e0,0x92e3,0x8ac2,0x8aa1,0x8a80,0x8a80,0x8260,0x8aa1,0x8280,0x8a81,0x8a81,0x8a81,0x8aa2,0x8a82,0x8aa0,0x8a80,0x8a80,0x8260,0x8261,0x8260,0x8260,0x7a60,0x7a42,0x58e0,0xad12,0x94b2,0x0000,0x31a5,0x2144,0x1903,0x18e2,0x10e2,0x18e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e3,0x0000,0x4acb,0x9cb0,0xa384,0xa364,0x9303,0x92e2,0x8ac1,0x8280,0x8280,0x8280,0x8280,0x8280,0x8280,0x8a80,0x8240,0x7a40,0x7a60,0x8280,0x8a60,0x8240,0x8240,0x8240,0x8240,0x7a00,0x8240,0x8280,0x8260,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71a0,0x7b07,0x9cf3,0x52eb,0x2143,0x1102,0x0062,0x7bee,0x7bcc,0x5243,0x4a03,0x41a3,0x3920,0x9c6e,0xc5f4,0xbd93,0xce36,0xc5f4,0x49e2,0x3120,0x3961,0x30e0,0x3164,0x94d2,0x6b6c,0x1101,0x1923,0x0000,0x7bee,0x8c4d,0x5243,0x49c3,0x49e3,0x2040,0x946d,0xbd92,0x0000,0x8c2e,0xbd93,0x5223,0x3120,0x3141,0x28e0,0x28c0,0x8c91,0x73ef,0x10c0,0x1903,0x0000,0x634d,0x9cd1,0x62a6,0x5223,0x5223,0x2900,0x7bab,0xc635,0xb5b4,0xc636,0xad72,0x39e3,0x2920,0x3141,0x3141,0x0000,0x8c70,0x94d2,0x2122,0x1924,0x0000,0x4aaa,0x94b0,0x62c6,0x4a03,0x49c3,0x3080,0xad53,0xad53,0x0000,0x5225,0xc615,0x840e,0x1000,0x39a2,0x3141,0x1000,0x8470,0x8cb1,0x1923,0x2123,0x0000,0x4269,0x9d12,0x6b08,0x41c0,0x49e3,0x20c0,0x7bed,0xc617,0xb5d3,0xc5d4,0xb573,0x5ac7,0x30c0,0x3940,0x3142,0x0000,0x7c0f,0x9d14,0x2944,0x1923,0x0000,0x1925,0x9d12,0x7bab,0x49c0,0x49e4,0x3120,0x62c7,0xce35,0x948f,0x0000,0x83ac,0xad52,0x41e1,0x3120,0x3962,0x1000,0x52a9,0xad74,0x52eb,0x10e2,0x1080,0x08e3,0x9d33,0x8c0d,0x4180,0x4a03,0x28a0,0x9c8e,0xce56,0x83ed,0x0000,0x9ccf,0xce76,0x7b8a,0x1800,0x3962,0x0000,0x62ea,0xbdd6,0x5aeb,0x0000,0x2124,0x0000,0xa513,0xcd30,0x8aa0,0x92e4,0x8aa2,0x8240,0x9347,0xbd50,0xa40a,0x9345,0x7aa3,0x7a61,0x7a42,0x7a42,0x71e0,0x7284,0xb5d5,0x6b8d,0x0000,0x2103,0x0000,0x9490,0xc530,0x9b00,0x9b04,0x92c2,0x82a2,0x7aa2,0x9325,0x9b88,0xbd50,0x93a9,0x79e0,0x7a62,0x7221,0x7222,0x5940,0xbdf5,0x8c51,0x0000,0x2144,0x0000,0x9490,0xcd91,0x9b21,0x9b04,0x8ae3,0x82c2,0x7a81,0x82c4,0xb46c,0x8b06,0x8240,0x8282,0x7a62,0x8242,0x7a42,0x6100,0xbdd4,0x94f2,0x0000,0x2985,0x0000,0x73ef,0xbdd5,0x5a64,0x5203,0x49e3,0x41a2,0x3120,0x7bcb,0xc637,0xce78,0x840e,0x20c0,0x3982,0x3940,0x3141,0x0000,0xad34,0x9cf3,0x0000,0x2965,0x0000,0x6b8d,0xde76,0xabc7,0x92e1,0x8ac2,0x8ac1,0x8aa1,0x8aa0,0x8a80,0x8260,0x7a60,0x8281,0x8aa0,0x8aa0,0x8280,0x7a60,0x7a60,0x8260,0x7a20,0x8260,0x8260,0x8260,0x8261,0x7a60,0x7a40,0x7221,0x6120,0xad12,0x8c91,0x0082,0x3185,0x1924,0x1903,0x18e3,0x18e2,0x18e3,0x18e2, +0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x1903,0x0000,0x4acb,0x9cb0,0xa384,0xa365,0x9b03,0x92e2,0x8aa0,0x8280,0x8280,0x8280,0x8280,0x8280,0x8aa0,0x8260,0x9b46,0xabc9,0x9345,0x8ae2,0x8ae2,0x9344,0x9366,0xa3c8,0x9367,0xa3e9,0x9b66,0x7a60,0x8280,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a20,0x71a0,0x7b07,0x9cf3,0x5aeb,0x2143,0x10e2,0x08a3,0x7bee,0x7bab,0x5244,0x5203,0x49c2,0x4180,0x5a87,0x62e9,0x6b69,0xd698,0xad53,0x2060,0x3981,0x3961,0x30c0,0x3163,0x94d2,0x6b6c,0x1101,0x1923,0x0000,0x7bee,0x8c4d,0x5222,0x49e3,0x41c2,0x2920,0x5ac7,0xce35,0xa511,0xce16,0x9cb0,0x1840,0x3961,0x3141,0x28c0,0x28e0,0x8cb1,0x73ee,0x10a0,0x1903,0x0000,0x636d,0x94b0,0x5a65,0x5224,0x49c2,0x49e2,0xc615,0xad32,0x0000,0x6b2a,0xb572,0x6b28,0x2080,0x3961,0x3941,0x0000,0x8c70,0x94f2,0x2122,0x2124,0x0000,0x52cb,0x9490,0x5aa6,0x5203,0x4a03,0x2800,0x8c70,0xc636,0x3940,0x83ec,0xc615,0x4a48,0x30c0,0x3981,0x3141,0x1000,0x844f,0x94d2,0x1902,0x2144,0x0000,0x4269,0x9d12,0x6308,0x41c0,0x4a04,0x0800,0x9cb1,0xce17,0x52a5,0x5a86,0xc636,0x948f,0x0800,0x3942,0x3142,0x0000,0x840f,0xa534,0x2123,0x1923,0x0000,0x1125,0x9d12,0x83ab,0x49a0,0x4a04,0x3100,0x6b29,0xe6db,0xd6b9,0x41e0,0x83cd,0xc5f5,0x39e2,0x30e0,0x4162,0x1000,0x5289,0xad74,0x5b0b,0x08c1,0x1080,0x0903,0x9d13,0x83ed,0x49a0,0x49e3,0x2860,0xad31,0xe73b,0xa4f2,0x0800,0xadb4,0xdefa,0x83ec,0x1800,0x3962,0x0000,0x62ea,0xb5d6,0x5aca,0x0020,0x1903,0x0000,0xa533,0xc50f,0x7960,0x8240,0x7a00,0x79a0,0x8220,0x93a8,0x9b86,0x92e0,0x71c0,0x7180,0x6980,0x6960,0x6900,0x6220,0xbdd6,0x6b8d,0x0000,0x2103,0x0000,0x9c90,0xbcee,0x8a00,0x8a60,0x8220,0x81c0,0x69c0,0x8b02,0xaba8,0x9ba7,0x7a20,0x7180,0x7180,0x6960,0x6120,0x5040,0xc636,0x8c71,0x0000,0x2964,0x0000,0x9c90,0xc570,0x9280,0x8a60,0x8240,0x8200,0x79e0,0x79e0,0x9b66,0x8260,0x7980,0x7a00,0x69c0,0x7180,0x71a0,0x5000,0xbdd4,0x94f2,0x0000,0x2964,0x0000,0x73cf,0xb5b4,0x5a44,0x5203,0x49e3,0x49c2,0x2900,0x8c4e,0xc657,0xce37,0x8c2e,0x28c0,0x3962,0x3920,0x3141,0x0000,0xad75,0xa534,0x0000,0x2965,0x0000,0x6b8d,0xde56,0xabc7,0x9b02,0x9303,0x8ac1,0x8aa1,0x8aa1,0x8260,0x9324,0x9b66,0x82e3,0x8280,0x8ac0,0x8ae3,0x9305,0x9346,0x9346,0x9b87,0x8ae4,0x8280,0x8280,0x8260,0x7a60,0x7a40,0x7221,0x6100,0xad33,0x94b2,0x0000,0x3185,0x2124,0x1903,0x18e2,0x18e2,0x18e3,0x18e2, +0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x0000,0x4aeb,0xa4b0,0xab84,0xa365,0x9b03,0x92e2,0x8aa0,0x8a80,0x8280,0x8280,0x8280,0x8280,0x8a81,0x7a40,0xac2a,0xbcce,0xa44b,0xbd0d,0xb4ed,0xac8d,0xbcee,0xbccc,0x8b46,0xbcab,0xa3c7,0x7a20,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71c0,0x7b07,0x9cf3,0x530b,0x2923,0x10e2,0x08a3,0x7bee,0x738b,0x5243,0x5224,0x49c3,0x41a2,0x3940,0x0000,0xb594,0xbdd5,0x3100,0x3140,0x3981,0x3941,0x28c0,0x3184,0x94d2,0x6b4c,0x1922,0x1903,0x0000,0x73ee,0x840d,0x5223,0x49e3,0x49c2,0x49c3,0x0800,0x7bed,0xe73a,0xbdd4,0x2020,0x3960,0x3941,0x3121,0x28c0,0x28e0,0x8cb2,0x73ef,0x10c0,0x1923,0x0000,0x636d,0x8c90,0x5a65,0x5225,0x4160,0x738a,0xce76,0x5ac8,0x3080,0x3940,0x2800,0x3940,0x3961,0x3160,0x3121,0x0000,0x8c70,0x94d2,0x1901,0x2124,0x0000,0x52cb,0x9490,0x6286,0x4a03,0x4a03,0x3940,0x5287,0xc614,0x6b29,0xa510,0xad51,0x0000,0x3981,0x3960,0x3141,0x1000,0x8c70,0x94d2,0x00a0,0x2124,0x0000,0x4269,0x9cf1,0x6b08,0x41a1,0x4a04,0x2040,0x8c8f,0xce77,0x9490,0xa512,0xbe15,0x6b6a,0x2000,0x3941,0x3942,0x0000,0x7c0f,0xa534,0x2964,0x2123,0x0000,0x1945,0x9cf2,0x83ab,0x49c0,0x5224,0x3060,0x736b,0xbe16,0xce37,0xad11,0x738c,0xbdd5,0x4a03,0x3100,0x3962,0x1800,0x5aa9,0xa575,0x5aeb,0x10e2,0x1080,0x1124,0x94f2,0x83cc,0x49c0,0x49e3,0x3100,0xa511,0xc636,0xa511,0x62e7,0xad51,0xbdb5,0x8bee,0x0800,0x3962,0x0800,0x62ca,0xb5b6,0x52eb,0x0020,0x2124,0x0000,0xad75,0xeeb7,0xbcce,0xb4ce,0xac8c,0xac6c,0xac4c,0xa42c,0xa42c,0xa42c,0xac4c,0xac4c,0xa42c,0x9c0c,0x8bab,0x944d,0xbdf6,0x634c,0x0020,0x2124,0x0000,0x9cb1,0xee97,0xc50f,0xbcef,0xb4ae,0xb48d,0xac6c,0xa44c,0xa42c,0xa42c,0xa44c,0xa42c,0x9c0b,0x9beb,0x93cb,0x83ac,0xce78,0x8450,0x0000,0x2144,0x0000,0x8c70,0xe6d8,0xc550,0xb4cd,0xb48d,0xb46d,0xac4d,0xac4c,0xa42b,0xa44c,0xac4c,0xa42c,0xa40c,0x9bec,0x93cb,0x83ab,0xce57,0x94b2,0x0000,0x2964,0x0000,0x73ae,0xad73,0x5a44,0x4a04,0x4a03,0x49c1,0x41a1,0xa4f1,0xce16,0xce36,0x9cd0,0x3940,0x4162,0x3941,0x3921,0x0000,0xad95,0x9d33,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x9302,0x9303,0x8ac1,0x8aa1,0x8280,0x8280,0xbc8b,0xb48b,0xa449,0xb46b,0xb4ae,0xac6d,0xbd0f,0xb46b,0x9b87,0xbccc,0x9345,0x8260,0x8281,0x8261,0x7a60,0x7a40,0x7222,0x6100,0xad53,0x94b2,0x0000,0x3185,0x2144,0x1903,0x18e3,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1923,0x0000,0x4aeb,0xa4d0,0xab64,0xa345,0x9303,0x92c2,0x8aa0,0x8a80,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x9b87,0xbcac,0xbccd,0xb48b,0xac6b,0xb4ac,0xbcac,0xa3c8,0x7220,0xac07,0x9345,0x7a20,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x7a40,0x71c0,0x8307,0x9cf3,0x52eb,0x2943,0x10e2,0x00a3,0x7bce,0x736a,0x5223,0x5203,0x49e2,0x49a2,0x0000,0x9cef,0xce77,0x5268,0x20a0,0x41c2,0x3960,0x3961,0x28c0,0x3184,0x94b1,0x6b4c,0x2143,0x18e3,0x0000,0x73ce,0x83ec,0x5223,0x4203,0x41c2,0x49a3,0x1800,0x73ad,0xe75b,0xb5b4,0x2000,0x3961,0x3940,0x3121,0x28c0,0x28e0,0x8cb2,0x73ce,0x08c0,0x1903,0x0000,0x5b4c,0x8c6f,0x5a85,0x5245,0x4160,0x7b8a,0xce76,0x5ac8,0x1800,0x2900,0x5264,0x4a03,0x2920,0x3140,0x3121,0x0000,0x8c90,0x94d2,0x1902,0x2124,0x0000,0x52ca,0x8c6f,0x5a85,0x4a03,0x4a02,0x41c2,0x30e0,0xad52,0xa532,0xb593,0x840d,0x0800,0x3982,0x3140,0x3141,0x1000,0x8c70,0x94d1,0x08c1,0x1903,0x0000,0x4269,0x9cd1,0x6ae7,0x49a2,0x4a04,0x2800,0x948f,0xc636,0x9c6f,0x9caf,0xc615,0x8c6f,0x1800,0x3961,0x3122,0x0000,0x840f,0xa534,0x2984,0x1903,0x0000,0x1945,0x9cf2,0x7b8a,0x49c0,0x4a24,0x3000,0x7bac,0xbdf4,0x6b28,0xc5d4,0xad94,0xb5d4,0x49c1,0x3120,0x3162,0x1800,0x5ac9,0xa575,0x5aeb,0x18c1,0x0881,0x1103,0x94f2,0x7bcc,0x49a0,0x4a03,0x3120,0xa4f1,0xa531,0xa532,0x9cd1,0x9cae,0xad32,0x8c0e,0x0000,0x3942,0x0800,0x5ac9,0xb5b5,0x52ea,0x0060,0x2124,0x0000,0xa554,0xef5c,0xc5f5,0xc5d4,0xbd72,0xb552,0xad32,0xb532,0xad11,0xad11,0xad32,0xb532,0xacf0,0xa4f1,0x9cd0,0x9d33,0xbe17,0x630b,0x0040,0x2144,0x0000,0x94f5,0xf77d,0xd616,0xcdd5,0xc5b4,0xbd92,0xb572,0xb552,0xb552,0xb552,0xb552,0xad32,0xad11,0xa4d1,0x9cb0,0x9cd1,0xce78,0x842f,0x0000,0x2944,0x0000,0x8c73,0xf77d,0xe676,0xcdf3,0xc5b4,0xbd93,0xbd73,0xb552,0xb572,0xbd93,0xb572,0xb572,0xb532,0xad12,0xacf0,0xa4f0,0xd6b9,0x8c92,0x0000,0x2964,0x0000,0x73ae,0xad73,0x5a64,0x4a04,0x5245,0x2880,0x734a,0xad32,0xb574,0xb594,0xb593,0x6b2a,0x1800,0x39a3,0x3901,0x0000,0xa554,0x94f2,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8aa1,0x8a80,0x8281,0xac0a,0xbcee,0xbccd,0xbcac,0xc50e,0xbcce,0xc50e,0xa409,0x82a1,0xac29,0x82c3,0x8260,0x8281,0x8261,0x7a60,0x7a40,0x7222,0x6120,0xad33,0x94b2,0x0000,0x3185,0x2144,0x1903,0x18e2,0x10c2,0x10e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1923,0x0000,0x4acb,0x9caf,0xab84,0xa345,0x9303,0x8ac1,0x8a80,0x8280,0x8280,0x8280,0x8280,0x8280,0x8a80,0x8a60,0x9304,0x9b87,0x9325,0x8280,0x8ac1,0x9325,0x9303,0x8a80,0x8261,0x8ae3,0x8aa2,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a60,0x7a40,0x71c0,0x8307,0x9cd2,0x52ea,0x2943,0x10c2,0x08c3,0x7bee,0x736a,0x5223,0x5203,0x49c2,0x30c0,0x844e,0xd6f9,0x842d,0x3940,0x5245,0x3980,0x3960,0x3941,0x28c0,0x39a4,0x94b1,0x634c,0x2143,0x1903,0x0000,0x73ee,0x840d,0x5a43,0x4a03,0x41e2,0x2900,0x5aa7,0xce36,0xad54,0xce57,0x946e,0x0000,0x3982,0x3120,0x28c0,0x28e0,0x8c92,0x73cf,0x10e1,0x1924,0x0000,0x634c,0x94b0,0x62a5,0x5243,0x5203,0x49e2,0xc615,0xb573,0x20e0,0x83ed,0xc5d3,0x6308,0x1000,0x3961,0x3121,0x0000,0x8c70,0x94d2,0x2123,0x2124,0x0000,0x4aca,0x8c4f,0x5a86,0x4a03,0x49e2,0x49e3,0x2800,0x83cc,0xdf1a,0xbe16,0x49e4,0x3900,0x3981,0x3140,0x3141,0x1000,0x8470,0x94d1,0x10e2,0x1923,0x0000,0x4269,0x94d0,0x62e7,0x49c2,0x4a24,0x2000,0xa4d1,0xbdd4,0x2880,0x0000,0xb5b4,0xb594,0x0800,0x3141,0x3162,0x0000,0x842f,0xa554,0x2964,0x2123,0x0000,0x1945,0x9cd2,0x7b6a,0x49c0,0x4a24,0x2800,0x7bab,0xce76,0x4a26,0x840e,0xdf1a,0xbe36,0x3940,0x3920,0x3962,0x1800,0x5ac9,0xa555,0x52eb,0x18c2,0x0861,0x1103,0x94d2,0x7bcc,0x49a0,0x4a03,0x2900,0xb572,0x9c8e,0xa4f2,0xe6fb,0x738b,0xad53,0x946f,0x0000,0x3962,0x0000,0x5aa9,0xb5b6,0x5aeb,0x0060,0x1903,0x0000,0x9d13,0xa512,0x30e0,0x39a0,0x3120,0x28e0,0x20c0,0x20a0,0x28e0,0x28e0,0x20a0,0x2080,0x1800,0x1820,0x0000,0x4247,0xb5d6,0x6b6c,0x0000,0x2103,0x0000,0x8cd1,0x9d11,0x3980,0x39c0,0x3180,0x3120,0x2900,0x2900,0x28e0,0x20c0,0x20c0,0x20a0,0x1840,0x1000,0x0000,0x20a0,0xc637,0x8c71,0x0000,0x2144,0x0000,0x8cb2,0xad94,0x5200,0x41c0,0x41a0,0x3140,0x2900,0x28e0,0x20e0,0x2880,0x2900,0x2900,0x28e0,0x28e0,0x2040,0x28c0,0xbdd6,0x94d2,0x0000,0x2964,0x0000,0x6bae,0xad73,0x5a85,0x5203,0x2800,0x4a03,0xc5f4,0x8c6f,0xa532,0xa532,0x948f,0xbdd4,0x3963,0x0000,0x3922,0x0000,0xa554,0x9d13,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8aa1,0x8a81,0x8261,0x9b87,0xac09,0x9b87,0x8ae2,0x9345,0x9ba7,0x9b65,0x8280,0x8282,0x9346,0x82a2,0x8260,0x8281,0x8261,0x7a60,0x7a40,0x7222,0x6120,0xad33,0x94b2,0x0020,0x3186,0x2145,0x1903,0x10e2,0x10c2,0x10c2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1903,0x0000,0x4acb,0x9caf,0xab84,0xa345,0x9303,0x92c2,0x8aa0,0x8280,0x8280,0x8280,0x8280,0x8280,0x8a80,0x8a80,0x8280,0x7a40,0x8240,0x8260,0x8240,0x8240,0x8240,0x8a60,0x8260,0x7a40,0x8260,0x8260,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71c0,0x8307,0x94b2,0x4aca,0x2943,0x10c2,0x08c3,0x7bee,0x738b,0x5a44,0x5203,0x41a2,0x28a0,0xb5b4,0xdefa,0xbd93,0xc5b4,0xad12,0x4a04,0x3120,0x3961,0x28e0,0x39a4,0x94b1,0x632b,0x2143,0x18e2,0x0000,0x73ee,0x840d,0x5223,0x4a03,0x41e2,0x2080,0xad11,0xc5f5,0x0000,0x9cb0,0xce14,0x5264,0x28e0,0x3141,0x28c0,0x28e0,0x8c92,0x73ef,0x1901,0x1924,0x0000,0x634c,0x94d0,0x5a85,0x5223,0x5223,0x3920,0x7b8b,0xc5f5,0xbdd4,0xce16,0x9c90,0x3100,0x3141,0x3140,0x3121,0x0000,0x8c70,0x94d2,0x2123,0x2124,0x0000,0x4aaa,0x8c4f,0x62a6,0x49e2,0x41c2,0x41a2,0x3940,0x49e3,0xc615,0x9cf1,0x1800,0x41a2,0x3980,0x3940,0x3141,0x1800,0x844f,0x8cb1,0x1923,0x1923,0x0000,0x4269,0x94b0,0x62e7,0x49c2,0x4a04,0x28e0,0x8c4e,0xce77,0xb573,0xbdd4,0xbdd5,0x736b,0x28c0,0x3141,0x2942,0x0000,0x842f,0xa554,0x2964,0x1923,0x0000,0x2166,0x9cf2,0x7b6a,0x49e1,0x4a24,0x2840,0x7b8a,0xc614,0x5aa7,0x2000,0xb5d4,0xc615,0x3940,0x3120,0x3962,0x1800,0x5ac9,0xa554,0x52cb,0x1902,0x1081,0x08e3,0x94d2,0x83ec,0x51e1,0x4a03,0x3120,0xad31,0x942d,0x840e,0xde98,0x5aa6,0xad12,0x8c2e,0x0000,0x3962,0x0800,0x5ac9,0xb5d6,0x5b0b,0x0060,0x18e3,0x0000,0x94d2,0x946f,0x4140,0x5224,0x41a2,0x49a2,0x4182,0x4161,0x3940,0x3961,0x4161,0x3961,0x3940,0x3941,0x20a0,0x41c3,0xb5d5,0x6b6d,0x0000,0x2103,0x0000,0x8c91,0x946f,0x4980,0x5225,0x49c2,0x49c2,0x49c2,0x4161,0x3940,0x4161,0x4161,0x3941,0x3921,0x3941,0x3942,0x0000,0xbdd5,0x8c70,0x0000,0x2144,0x0000,0x8490,0x94f0,0x5200,0x5244,0x49e3,0x49a2,0x41a1,0x3960,0x49e4,0x838a,0x49c3,0x4181,0x4161,0x3941,0x3142,0x0000,0xad54,0x94b2,0x0000,0x2944,0x0000,0x6b8d,0xad73,0x5a65,0x5224,0x8c2e,0xd656,0xc5f4,0x0000,0xb594,0xb593,0x0000,0xbdb3,0xc615,0x7bcc,0x3120,0x0000,0xa554,0x9d13,0x0000,0x2985,0x0000,0x6b6d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8aa1,0x8a80,0x82a0,0x7a80,0x7a60,0x8280,0x8a81,0x8260,0x7a40,0x8260,0x8a81,0x8260,0x7a60,0x8281,0x8260,0x7a60,0x8260,0x7a60,0x7a40,0x7222,0x6120,0xad33,0x94b2,0x0040,0x3186,0x2144,0x1903,0x18e2,0x10c2,0x10c2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x1923,0x0000,0x4acb,0xa4d0,0xab84,0xa344,0x9303,0x8ac1,0x8280,0x8280,0x8280,0x8280,0x8280,0x8280,0x8280,0x8260,0x8280,0x8280,0x8a81,0x8a60,0x8260,0x8280,0x8280,0x8260,0x8260,0x8260,0x8280,0x8260,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a40,0x71e0,0x8307,0x9491,0x4aca,0x2943,0x08c2,0x10e4,0x7bee,0x738b,0x5244,0x5203,0x41c2,0x41c1,0x5a67,0x6b0a,0x736b,0x734b,0x6b0a,0x41a2,0x3960,0x3961,0x28a0,0x39a5,0x94b1,0x632b,0x2163,0x10e2,0x0000,0x740f,0x840d,0x5223,0x49e3,0x41a1,0x39a0,0x6b09,0x5245,0x3920,0x41a1,0x6b28,0x4a24,0x3900,0x3941,0x28e0,0x30e0,0x8c91,0x73ce,0x1901,0x1924,0x0000,0x636d,0x9cd1,0x62a6,0x5224,0x5203,0x49c2,0x2900,0x4a45,0x738b,0x62c8,0x2040,0x3940,0x3960,0x3140,0x3141,0x0800,0x8c70,0x94b1,0x2123,0x2123,0x0000,0x4aaa,0x842e,0x5a85,0x49e3,0x41c2,0x41a1,0x41a1,0x3980,0x4a23,0x39c1,0x3960,0x4180,0x3960,0x3960,0x3141,0x1800,0x844f,0x8c91,0x1903,0x2124,0x0000,0x4269,0x94b0,0x62e7,0x49c3,0x49e3,0x4180,0x5245,0x6b4a,0x7b8b,0x7b8b,0x5a87,0x30e0,0x3940,0x3920,0x3142,0x0000,0x840f,0xa534,0x2964,0x1903,0x0000,0x2166,0x9cd2,0x7b6a,0x4a01,0x4203,0x4180,0x5225,0x62e8,0x41a2,0x4100,0x5224,0x62e8,0x4160,0x3940,0x3162,0x1800,0x5aca,0x9d54,0x52cb,0x1902,0x1081,0x08c2,0x94d2,0x83ec,0x49c0,0x4a03,0x41a0,0x5a66,0x5224,0x41c3,0x5a86,0x39a0,0x5a66,0x5205,0x3120,0x3962,0x0800,0x5aca,0xb5b5,0x52ca,0x0060,0x18e3,0x0000,0x94b2,0x946f,0x41a0,0x4a23,0x41c1,0x41a1,0x3981,0x39a1,0x49e1,0x3981,0x3980,0x3160,0x3160,0x3141,0x20c0,0x41e4,0xb5b5,0x6b6d,0x0000,0x2103,0x0000,0x8c91,0x9cb0,0x51c0,0x4a24,0x41c1,0x41a1,0x41a1,0x5224,0x5224,0x3961,0x3960,0x3960,0x3960,0x3941,0x3141,0x0000,0xb5d5,0x8c70,0x0000,0x2964,0x0000,0x8c91,0x9cd1,0x5a00,0x5225,0x49e3,0x41c1,0x41e1,0x28e0,0x7b8b,0x7bab,0x3120,0x39a1,0x3980,0x3160,0x3141,0x0000,0xad54,0x94b2,0x0000,0x2944,0x0000,0x6b8d,0xad73,0x5202,0x736a,0xd677,0xad53,0x41e4,0x1800,0xad32,0xad11,0x1000,0x41e2,0xa511,0xb5b3,0x5246,0x0000,0xa534,0x9cf2,0x0000,0x2965,0x0000,0x636d,0xde35,0xabc7,0x92e1,0x92e3,0x8aa1,0x8281,0x8a81,0x8260,0x82a0,0x8281,0x8a81,0x8a61,0x8a81,0x82a1,0x8260,0x8a60,0x8a61,0x7a80,0x8260,0x8240,0x7a80,0x8260,0x7a60,0x7a40,0x7222,0x6120,0xad53,0x94d3,0x0040,0x3185,0x2124,0x1903,0x18e3,0x10e2,0x10e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1103,0x1923,0x0000,0x530b,0xaccf,0xab64,0xa345,0x9ae3,0x8aa1,0x8281,0x8281,0x8280,0x8a80,0x8a80,0x8a80,0x8280,0x8280,0x8260,0x8260,0x8a80,0x8a80,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a60,0x7a61,0x7200,0x72e8,0x8c91,0x52a9,0x2943,0x0880,0x1944,0x7c2e,0x734a,0x5a64,0x49e3,0x41a1,0x39a0,0x3120,0x28c0,0x1860,0x1860,0x18a0,0x3980,0x3960,0x3980,0x3100,0x3983,0x94d2,0x6bad,0x1901,0x18e2,0x0000,0x7c30,0x842e,0x5a43,0x49c2,0x41a1,0x3980,0x28e0,0x3120,0x41a1,0x3960,0x20a0,0x3140,0x3960,0x3940,0x3920,0x28e0,0x8c70,0x73ee,0x08e0,0x1923,0x0000,0x634c,0x9cd0,0x62e7,0x49e3,0x49e2,0x4181,0x41a2,0x3120,0x1800,0x28a0,0x3981,0x3960,0x3981,0x3981,0x3941,0x1000,0x842f,0x94d2,0x2143,0x1903,0x0000,0x52ca,0x840e,0x6285,0x49e3,0x41c1,0x39a1,0x39a0,0x3980,0x3140,0x3960,0x39a0,0x3980,0x3980,0x3960,0x3941,0x1800,0x844f,0x94d2,0x10e1,0x1923,0x0000,0x4a89,0x9490,0x62c7,0x49e2,0x41e2,0x41a1,0x3940,0x2040,0x1800,0x1800,0x2900,0x3981,0x3960,0x3140,0x3162,0x0000,0x840e,0xa513,0x2965,0x1903,0x0000,0x29a5,0x94d1,0x734a,0x5203,0x41c2,0x41c2,0x3960,0x2900,0x3980,0x4181,0x3120,0x28c0,0x3960,0x3960,0x3961,0x2040,0x52a8,0xa554,0x5aeb,0x10a1,0x0881,0x1124,0x94b1,0x7bab,0x49e1,0x41e2,0x41a1,0x3120,0x3940,0x3960,0x20c0,0x3980,0x3120,0x3140,0x3961,0x3961,0x1020,0x5aa9,0xb595,0x5aea,0x0000,0x1903,0x0000,0x8c91,0x944e,0x49c0,0x49e3,0x41a1,0x39a2,0x28e0,0x6b08,0xad31,0x5246,0x28c0,0x39a1,0x3160,0x3140,0x28e0,0x41c4,0xad95,0x634c,0x0000,0x1903,0x0000,0x8c91,0x94b0,0x49a0,0x5224,0x39c2,0x39a2,0x3120,0x62c7,0xacef,0x6b09,0x2880,0x3961,0x3980,0x3940,0x3942,0x0000,0xb5b5,0x8450,0x0000,0x2144,0x0000,0x8c90,0x9ccf,0x5a22,0x5204,0x49c3,0x41c2,0x3120,0x5266,0x8c2d,0x49c4,0x3940,0x41a2,0x3981,0x3940,0x3941,0x0000,0xad54,0x8cb2,0x0000,0x2964,0x0000,0x6bae,0xad73,0x5a65,0x5245,0x5287,0x20c0,0x3140,0x41a1,0x5226,0x5225,0x4181,0x3140,0x1000,0x41c3,0x41a4,0x0000,0xa513,0x9cd2,0x0000,0x2965,0x0000,0x6b6c,0xd614,0xabc8,0x92e0,0x8ac2,0x82a0,0x8280,0x8261,0x8260,0x8280,0x8281,0x8a81,0x8281,0x8281,0x8280,0x8280,0x8280,0x8260,0x8260,0x8260,0x8260,0x8260,0x8260,0x7a60,0x7a40,0x7a42,0x6100,0xad53,0x94b1,0x0000,0x2985,0x2124,0x1903,0x18e2,0x10e2,0x18e3,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x1902,0x0000,0x3a29,0xacf0,0xa3a7,0x9b43,0x9304,0x8ac2,0x82c2,0x82a2,0x82a2,0x82a2,0x82a2,0x82a2,0x82a2,0x8282,0x8282,0x8282,0x8282,0x82a2,0x82a2,0x8282,0x82a2,0x82a2,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8282,0x8a82,0x8282,0x8283,0x6960,0x7b6c,0x8cb1,0x4248,0x1923,0x18c2,0x0020,0x844f,0x7bec,0x5201,0x5224,0x41c3,0x41a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a3,0x3982,0x41a3,0x2040,0x41e5,0x9d12,0x532b,0x10c0,0x1903,0x0000,0x7c0f,0x8c70,0x5200,0x49c2,0x41a3,0x3982,0x41a3,0x41a3,0x3982,0x41a3,0x41c3,0x41a2,0x3982,0x41a3,0x3100,0x0840,0x9cf2,0x73ee,0x0060,0x1923,0x0000,0x630b,0x9cd1,0x5aa6,0x5203,0x49c3,0x41a2,0x41a2,0x41a2,0x41c3,0x41c3,0x41a2,0x41a2,0x39a2,0x41a2,0x3962,0x0000,0x94f2,0x8c91,0x0080,0x2144,0x0000,0x4a89,0x8c6f,0x5a85,0x41a2,0x41c2,0x41c2,0x39a2,0x41a2,0x41a3,0x41a3,0x41a2,0x41a2,0x41c2,0x41a2,0x3963,0x0000,0x9cf2,0x94b2,0x0000,0x1923,0x0000,0x4249,0x94d1,0x62c7,0x49c1,0x41e3,0x41c2,0x41a2,0x41c3,0x41a3,0x41a3,0x41c3,0x41a2,0x3961,0x3981,0x41a3,0x0000,0x8c2f,0xa533,0x1104,0x2123,0x0000,0x2144,0x94d1,0x736b,0x49c1,0x5204,0x41a2,0x4182,0x41c3,0x41c2,0x41a2,0x41a2,0x41c3,0x41a2,0x4181,0x41c3,0x0000,0x6b4b,0xad94,0x4a69,0x1902,0x10c2,0x0041,0x94b0,0x840d,0x4180,0x49e3,0x41a2,0x4182,0x4181,0x3981,0x41c2,0x41a2,0x41c2,0x41a2,0x4182,0x41a3,0x0000,0x6b2b,0xbdf6,0x4a89,0x0060,0x1903,0x0000,0x8470,0x9caf,0x3900,0x4a04,0x41a2,0x41a2,0x3960,0x5a66,0x9c8e,0x5266,0x3940,0x41c2,0x41c2,0x41a3,0x0800,0x5267,0xbe17,0x4aa9,0x0040,0x1903,0x0000,0x8450,0x9cd1,0x3900,0x5224,0x49e2,0x41a2,0x41c2,0x4a24,0x6b08,0x5225,0x3961,0x41c2,0x41a1,0x41a3,0x30e0,0x20e0,0xc616,0x73ae,0x0000,0x2143,0x0000,0x8470,0xa512,0x49c0,0x5204,0x49e3,0x41c2,0x39a2,0x8c0c,0x7349,0x3140,0x49e3,0x41a2,0x41a2,0x41a2,0x3121,0x0000,0xb5b5,0x8450,0x0000,0x2965,0x0000,0x634c,0xb5b4,0x5a85,0x49a1,0x49c0,0x49c3,0x49c3,0x41c2,0x4180,0x4180,0x41a2,0x41c2,0x41c3,0x4140,0x3943,0x0000,0xb5b5,0x94d2,0x0000,0x2165,0x0000,0x5aea,0xd656,0xb3e9,0x9280,0x92c3,0x8aa2,0x8282,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x8a82,0x82a2,0x8282,0x8282,0x82a2,0x8282,0x8283,0x8262,0x8262,0x7a42,0x5940,0xb5b4,0x8c90,0x0000,0x2985,0x1904,0x1903,0x18e2,0x10c2,0x18e2,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x18e2,0x18e2,0x0000,0x844f,0xbd30,0xa361,0x8a40,0x81e0,0x81c0,0x81c0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x7980,0x7980,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79a0,0x79c0,0x7a00,0x79e0,0x6960,0x7ae3,0xa4f1,0x73ce,0x2164,0x2144,0x1903,0x0000,0x5b2b,0xa553,0x736b,0x2000,0x2000,0x1000,0x1800,0x1800,0x1800,0x1800,0x2000,0x1800,0x1800,0x0000,0x1800,0x9cd1,0x94d1,0x29a5,0x1923,0x18e3,0x0000,0x52ca,0xad73,0x7bec,0x2000,0x1800,0x0800,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x0800,0x0000,0x8c70,0xa574,0x4289,0x08c0,0x1903,0x0000,0x2985,0x9d12,0x946f,0x3940,0x1000,0x1000,0x0000,0x0800,0x1000,0x1800,0x1800,0x1800,0x2000,0x1800,0x0000,0x7bcd,0xb5f6,0x5b0c,0x10c0,0x1923,0x0860,0x0020,0x8cb1,0x8c6f,0x30e0,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x0000,0x73ad,0xb5b5,0x5b0b,0x0080,0x1923,0x0040,0x0082,0x94d1,0x948f,0x30a0,0x2800,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1800,0x1800,0x1800,0x0000,0x5267,0xbdd5,0x7bef,0x0080,0x2144,0x10a2,0x0000,0x844f,0xa532,0x4a02,0x2840,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x0000,0x0800,0xad74,0x9d13,0x0060,0x2144,0x1903,0x0000,0x73cd,0xb593,0x5a86,0x1000,0x2000,0x2000,0x2800,0x2000,0x2000,0x1800,0x1800,0x2000,0x2800,0x0000,0x3120,0xb5b5,0xa533,0x0020,0x2123,0x1903,0x0000,0x5b0b,0xb5b4,0x6b2a,0x0000,0x1800,0x2000,0x1000,0x30c0,0x49a0,0x1800,0x1800,0x1800,0x1800,0x0000,0x0000,0xad74,0xad74,0x0040,0x1923,0x1903,0x0000,0x530b,0xb5b4,0x736a,0x1800,0x3060,0x2000,0x1800,0x2000,0x0000,0x0000,0x1800,0x1800,0x1800,0x0800,0x0000,0x9cd1,0xbdf6,0x31a6,0x1903,0x1923,0x0000,0x4a8a,0xbdd6,0x83cd,0x1000,0x2880,0x1000,0x30e0,0x62a5,0x2000,0x2000,0x2820,0x2800,0x2000,0x2000,0x0000,0x8c70,0xbe16,0x3a28,0x10e1,0x1903,0x0000,0x1924,0xb5b5,0x9cb0,0x2000,0x2860,0x2000,0x2000,0x2000,0x2800,0x2820,0x2800,0x2000,0x2840,0x2800,0x0000,0x7bee,0xc658,0x52eb,0x0000,0x1903,0x08a1,0x0000,0xce16,0xddf2,0x7a00,0x81e0,0x79e0,0x71e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79e0,0x79c0,0x79a0,0x79a0,0x79c0,0x79a0,0x79e0,0x79c0,0x79c0,0x5880,0x9c2c,0xc637,0x52aa,0x1903,0x2964,0x2103,0x1903,0x18e2,0x10c2,0x10e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x00a1,0x1145,0xa4b0,0xcdb4,0xbd52,0xb4f0,0xbd10,0xb510,0xb510,0xb510,0xb510,0xb50f,0xb50f,0xb50f,0xb510,0xb510,0xb4ef,0xb50f,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xb4ef,0xacef,0xb4ef,0xb4ef,0xb4ef,0xaccf,0xaccf,0xacae,0xb510,0xbd94,0x8c70,0x29a6,0x2144,0x1923,0x18e3,0x10c2,0x0000,0x7c2f,0xb5d5,0xa532,0x946f,0x9470,0x8c6f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0x8c50,0x9470,0xb595,0xa554,0x52a9,0x1943,0x1923,0x10c2,0x10c2,0x0000,0x73ce,0xb5b5,0x9cf2,0x9470,0x8c70,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0xb5b4,0xb5f6,0x636d,0x08a1,0x2123,0x10e2,0x10c2,0x0000,0x52eb,0xb5b4,0xad73,0x948f,0x8c4f,0x8c6f,0x8c6f,0x8c6f,0x8c6f,0x8c6f,0x8c4e,0x8c2e,0x944f,0xad73,0xc637,0x8450,0x00c2,0x2964,0x10e2,0x18e3,0x0000,0x3a28,0x9d12,0xad52,0x948f,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x948f,0x948f,0xad53,0xbdf6,0x7c0f,0x0040,0x2144,0x10c2,0x10c2,0x0000,0x4248,0xad53,0xad32,0x8c2e,0x840e,0x7bed,0x840d,0x840e,0x840e,0x842e,0x840e,0x840e,0x7bee,0x94b0,0xc616,0x9d13,0x1964,0x1944,0x1903,0x10c2,0x0000,0x2165,0x9d12,0xad73,0x946f,0x8c2e,0x840e,0x840e,0x8c2e,0x8c2e,0x8c2e,0x8c2e,0x8c2e,0x840d,0x946f,0xb5d5,0xa553,0x3a28,0x2164,0x2143,0x1902,0x0020,0x0060,0x9cf2,0xbdb5,0x9490,0x8c4f,0x83ed,0x738a,0x7bac,0x840d,0x8c2d,0x8c2e,0x8c0e,0x83ed,0x8c4f,0xb5b4,0xad94,0x3207,0x1923,0x2123,0x10e2,0x10a1,0x0000,0x8c91,0xbdf5,0x9cd0,0x8c2e,0x8c2e,0x8c2e,0x8c2e,0x8c4f,0x8c4e,0x944f,0x8c4f,0x8c2e,0x9490,0xbdd5,0xb5d6,0x4289,0x08a0,0x1923,0x08a1,0x10a1,0x0000,0x8450,0xbdf5,0x9cb0,0x840d,0x840d,0x8c2e,0x840d,0x8c2e,0x8c2e,0x842e,0x8c4e,0x842e,0x8c4f,0xb574,0xbe17,0x5b2b,0x0080,0x2124,0x18e2,0x1903,0x0000,0x7c0f,0xc616,0x9d11,0x8c2e,0x8c2e,0x8c2e,0x840d,0x8c2e,0x8c4e,0x8c2e,0x840d,0x8c2e,0x840e,0xa533,0xc617,0x6bad,0x0020,0x2124,0x18e2,0x18e2,0x0000,0x6b6c,0xc637,0xa512,0x840d,0x83ed,0x840d,0x840d,0x83ed,0x840d,0x840d,0x83ed,0x7bcd,0x7bed,0x9cf2,0xc637,0x8430,0x0000,0x2144,0x18e2,0x18e3,0x0000,0x5aeb,0xd697,0xcdf4,0xac6e,0xac4d,0xac4d,0xa46e,0xa46e,0xa46e,0xa46d,0xa44d,0xa46d,0xa46e,0xac8e,0xa48e,0xa46e,0xa48e,0xa48e,0xa48e,0xa46e,0xa48e,0xac8e,0xac8d,0xa46d,0xbd53,0xce17,0x7c0f,0x08c1,0x2965,0x2124,0x2123,0x18e3,0x18e2,0x18e2,0x18e2,0x10e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e3,0x10e2,0x10e2,0x0000,0x0022,0x6b6d,0x9cf3,0xa513,0xa533,0xa554,0xad54,0xa554,0xa554,0xa534,0xa534,0xa534,0xa554,0xa554,0xa534,0xa554,0xa554,0xa534,0xa554,0xa554,0xa534,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa533,0xad33,0xad54,0x9cf2,0x6b6e,0x1125,0x1943,0x1924,0x1903,0x10e2,0x10c2,0x1081,0x0000,0x5b4c,0x9cf2,0xa553,0xa554,0xa554,0xa534,0xa534,0xa554,0xa554,0xa554,0xa554,0xa534,0x8c71,0x29c6,0x10e2,0x2144,0x10e3,0x10c2,0x10a1,0x10c2,0x0000,0x52ca,0x8c92,0x9d13,0xa554,0xa554,0xa534,0xa534,0xa554,0xa554,0xa554,0xa554,0xa554,0x94d2,0x4269,0x0061,0x2144,0x18e2,0x10e2,0x08a1,0x10c2,0x0000,0x4228,0x8c70,0xa553,0xad74,0xad74,0xad94,0xad74,0xa553,0xa553,0x9cf2,0x9d13,0xad95,0x9d33,0x5b2c,0x0000,0x2164,0x1923,0x18e3,0x10c2,0x10c2,0x0000,0x2165,0x844f,0x9d12,0x9d13,0xa534,0xa554,0xa554,0xa554,0xa554,0xa574,0xa574,0xad74,0x9cf2,0x5b0b,0x0000,0x2144,0x1903,0x08a1,0x0881,0x10c2,0x0000,0x3a28,0x8cb1,0xad74,0xad95,0xad74,0xad95,0xad95,0xad95,0xb5d5,0xb5b5,0xad95,0xadb5,0xad95,0x7c0f,0x08e3,0x2164,0x1944,0x10c2,0x1081,0x10c2,0x0000,0x1124,0x7c0e,0xa533,0xad74,0xad74,0xad74,0xad95,0xad74,0xad94,0xad74,0xad74,0xad74,0xa533,0x8c50,0x29e6,0x1123,0x2164,0x1902,0x10c1,0x10c2,0x0000,0x0000,0x7bef,0xa533,0xad95,0x9d12,0x94b0,0x9cf1,0xa553,0xa553,0xad74,0xad74,0xa553,0xa533,0x7c0e,0x2185,0x1923,0x2164,0x1903,0x10c2,0x10c2,0x0060,0x0000,0x634c,0x9d12,0xa574,0xad74,0xad54,0xad74,0xad95,0xa574,0xad74,0xa574,0xa553,0xa553,0x8450,0x29a6,0x08e2,0x2144,0x10e2,0x08a1,0x08a1,0x08a1,0x0000,0x634c,0x94d2,0x9d12,0xa554,0xad74,0xa554,0xad74,0xad94,0xad74,0xad94,0xa573,0xad94,0x94d2,0x4a89,0x0000,0x2164,0x1902,0x18e2,0x10c2,0x10c2,0x0000,0x634b,0x9d12,0xad74,0xad95,0xad74,0xadb5,0xadb4,0xad95,0xad95,0xad75,0xb5b5,0xb5b5,0xa514,0x52ca,0x00a0,0x2964,0x18e3,0x10c2,0x10a1,0x10c2,0x0000,0x52aa,0xa533,0xb5b5,0xb5d5,0xb5d5,0xb5b5,0xad95,0xadb5,0xb5b5,0xb5d6,0xb5b5,0xadb5,0xa554,0x632c,0x0000,0x2124,0x1903,0x18e3,0x18c2,0x18e2,0x0000,0x426a,0xa533,0xb595,0xbd74,0xbd94,0xb595,0xb595,0xb594,0xb574,0xb574,0xb594,0xb595,0xbdb5,0xbdb5,0xb595,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xbdd5,0xbdb5,0xb5b5,0xa534,0x630d,0x0082,0x2965,0x2144,0x1923,0x1903,0x18e3,0x18e2,0x1903,0x1903,0x18e2, +0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x1923,0x1903,0x1903,0x10e2,0x10a1,0x10a1,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x08c2,0x1923,0x1903,0x10e2,0x10e3,0x10a2,0x10c2,0x10e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1923,0x10e2,0x10c2,0x10c2,0x10c1,0x08a1,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1903,0x10e2,0x18e2,0x10a1,0x10a1,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x10e3,0x10c2,0x10a2,0x0881,0x0881,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1904,0x1924,0x1903,0x10c3,0x1082,0x0881,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1903,0x2144,0x18e3,0x18e3,0x10e2,0x10a1,0x10c2,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10e2,0x1944,0x1903,0x1903,0x10c2,0x10a2,0x10a2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c2,0x2144,0x18e3,0x18e3,0x10c2,0x0882,0x10a2,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2144,0x1903,0x18e3,0x18c3,0x10c2,0x10c1,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2164,0x1903,0x18c2,0x18e2,0x10c2,0x10a1,0x18e2,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0001,0x0001,0x0001,0x0022,0x0083,0x0082,0x0000,0x0000,0x2144,0x18e3,0x18e3,0x10c2,0x10c2,0x10c1,0x1903,0x0000,0x0000,0x0000,0x0002,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0000,0x0000,0x0080,0x2965,0x1924,0x1923,0x1903,0x18e3,0x1903,0x18e2,0x1903,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x1923,0x2123,0x2123,0x2123,0x2123,0x2123,0x2123,0x2123,0x2123,0x1903,0x1903,0x2123,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x1903,0x2123,0x1903,0x18e2,0x1903,0x1903,0x18e2,0x10c2,0x10c2,0x10c2,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x2124,0x2124,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1902,0x1903,0x1923,0x2124,0x2123,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x2144,0x1923,0x1903,0x10e2,0x1103,0x18e3,0x10e3,0x10e2,0x10e2,0x1903,0x1923,0x1923,0x2123,0x2123,0x1923,0x2143,0x2143,0x1923,0x1902,0x1923,0x1903,0x2144,0x2124,0x1923,0x1903,0x1903,0x18e3,0x18e2,0x10e2,0x10c2,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x18e2,0x1902,0x1902,0x1902,0x1902,0x18e2,0x18e2,0x1902,0x18e2,0x18e2,0x2123,0x2144,0x1923,0x1923,0x1903,0x1902,0x1902,0x1902,0x18e2,0x1903,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x1923,0x1923,0x2123,0x1923,0x1923,0x2143,0x2164,0x2143,0x1923,0x2143,0x1923,0x1903,0x1902,0x1902,0x1903,0x2143,0x2143,0x2123,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x1923,0x2123,0x2143,0x2144,0x2123,0x2123,0x2123,0x1923,0x1903,0x1903,0x1902,0x1923,0x2143,0x2143,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x2123,0x2143,0x2143,0x2143,0x2164,0x2144,0x1923,0x1923,0x1923,0x1903,0x18e2,0x1902,0x1902,0x2143,0x2143,0x2123,0x2123,0x2123,0x2123,0x1923,0x2123,0x2123,0x2123,0x1923,0x2123,0x2144,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x18e3,0x1903,0x2123,0x2123,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10e2,0x1902,0x2123,0x2123,0x18e3,0x18e2,0x18e2,0x10e2,0x10c2,0x10a2,0x10c2,0x1903,0x18e3,0x10c1,0x18c2,0x18c2,0x18c2,0x18e2,0x18e2,0x18c2,0x10c1,0x18c1,0x18e2,0x2103,0x2123,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x1903,0x2103,0x18e2,0x18c2,0x18c2,0x18c2,0x18e2,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1902,0x1902,0x2144,0x2144,0x1923,0x1923,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x1903,0x18e3,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x1923,0x10c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a1,0x0081,0x00c1,0x0901,0x00c0,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0020,0x0000,0x0860,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x18e3,0x18e3,0x1903,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e2,0x18e3,0x18e3,0x1903,0x18e2,0x10c2,0x10e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e3,0x1903,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1923,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x10e2,0x1903,0x1903,0x18e2,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x0000,0x0000,0x4248,0x4a89,0x4a8a,0x4a8a,0x4a69,0x4a89,0x4a89,0x4a89,0x4a68,0x4a68,0x4a68,0x4248,0x4228,0x4227,0x3a27,0x4228,0x4228,0x4228,0x4227,0x3a07,0x3a27,0x4227,0x3a27,0x3a27,0x3a27,0x4227,0x4227,0x4207,0x4207,0x39e7,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c6,0x39e6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e6,0x31e6,0x39e6,0x39e6,0x39e6,0x39e6,0x39e6,0x39e7,0x39e7,0x39e7,0x39c6,0x39e6,0x39e6,0x39c6,0x39e7,0x4207,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a49,0x4a49,0x4a69,0x4a69,0x4a69,0x4a8a,0x4a69,0x4a69,0x528a,0x52aa,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x630c,0x632c,0x630c,0x630b,0x5b0b,0x630c,0x630b,0x630b,0x632c,0x634c,0x6b4c,0x6b4d,0x6b4d,0x6b6d,0x6b4d,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x634c,0x636d,0x636c,0x634c,0x634c,0x6b4c,0x6b4c,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x630c,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x630c,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x630c,0x5b0b,0x5aeb,0x5acb,0x5acb,0x52ca,0x52aa,0x52aa,0x528a,0x4a8a,0x4a89,0x4a69,0x4248,0x4227,0x3a07,0x39c6,0x31a6,0x31a6,0x2985,0x10a1,0x0000,0x0000,0x1903,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x1903,0x1903,0x18e3,0x10e2,0x10e2,0x10e2,0x1903,0x1923,0x1903,0x1903, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x18e2,0x0000,0x52ca,0x9d13,0xad94,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xb594,0xb5b5,0xad94,0xad74,0xad94,0xb595,0xb5b5,0xb5b5,0xb594,0xad54,0xad74,0xad94,0xad74,0xad74,0xad94,0xad94,0xb594,0xb574,0xad74,0xad74,0xad74,0xad74,0xad53,0xad53,0xad53,0xad53,0xad54,0xad53,0xad74,0xad74,0xad74,0xad74,0xad74,0xad74,0xad54,0xad53,0xad53,0xad53,0xad53,0xad53,0xad74,0xad74,0xad74,0xad53,0xa533,0xa533,0xa533,0xa533,0xa533,0xad53,0xad53,0xa533,0xa533,0xa533,0xa532,0xa512,0xa512,0xa512,0xa4f2,0xa512,0xa512,0x9cf2,0x9cf2,0xa512,0xa512,0xa532,0xad53,0xa533,0xa533,0xad53,0xad53,0xad53,0xad53,0xad74,0xb574,0xb594,0xad74,0xad74,0xb594,0xb594,0xb5b5,0xb594,0xb594,0xb5b4,0xb594,0xb594,0xad74,0xad74,0xad74,0xad73,0xad53,0xad53,0xad53,0xa533,0xa553,0xad53,0xad53,0xad53,0xad74,0xad74,0xb594,0xb594,0xb594,0xb594,0xb594,0xad74,0xad74,0xad74,0xad53,0xad53,0xad53,0xad74,0xad94,0xad74,0xad74,0xad74,0xb594,0xb594,0xad74,0xad74,0xb594,0xad74,0xad53,0xad53,0xad53,0xad53,0xad73,0xad74,0xad73,0xad53,0xa533,0xad53,0xad53,0xad74,0xad74,0xad74,0xad74,0xad74,0xb594,0xb5b5,0xb594,0xb594,0xad74,0xad74,0xb594,0xb594,0xb594,0xb5b5,0xb5b5,0xb5b5,0xbdd5,0xbdd5,0xb5b5,0xb5b4,0xb594,0xb5b5,0xbdb5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb594,0xad94,0xad94,0xad95,0xb595,0xb5b5,0xad74,0xb5b5,0xa554,0x31e6,0x0000,0x1923,0x1903,0x1903,0x18e2,0x10c2,0x10c2,0x18e3,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x18e3,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x1903,0x0000,0x4a89,0xa552,0x94b0,0x62e9,0x5265,0x5265,0x5245,0x5265,0x5266,0x5267,0x5267,0x5267,0x5267,0x5a87,0x5ac8,0x5ac8,0x5aa8,0x62c8,0x62c8,0x62c8,0x62e9,0x62c8,0x5aa8,0x5aa8,0x5aa8,0x5aa8,0x5aa8,0x5ac8,0x5aa8,0x5aa8,0x5aa8,0x62c8,0x62c9,0x62c8,0x5ac8,0x5ac8,0x62c8,0x62c8,0x62e8,0x62e9,0x62e9,0x62e9,0x62e9,0x62e9,0x62e9,0x62c9,0x62c8,0x62c9,0x62c8,0x62c8,0x62c8,0x62c8,0x62c8,0x62c9,0x62c9,0x62c8,0x5aa8,0x5aa8,0x5aa8,0x5a87,0x5a88,0x5a87,0x5a87,0x5a87,0x5a87,0x5a87,0x5a86,0x5a87,0x5266,0x5246,0x5245,0x4a25,0x4a24,0x4a24,0x4a04,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a04,0x4a04,0x4a24,0x4a25,0x4a25,0x4a24,0x4a24,0x4a24,0x4a03,0x49e3,0x41e3,0x49e3,0x4a03,0x4a03,0x4a03,0x4a03,0x4a03,0x4a03,0x49e3,0x41e2,0x41c2,0x41e2,0x41c2,0x41c1,0x49e2,0x49e3,0x41c2,0x41c1,0x41c2,0x41e2,0x41c2,0x41c1,0x41a1,0x41c2,0x41c2,0x41c1,0x41c1,0x41c2,0x41c2,0x41c2,0x41c1,0x41a0,0x41a0,0x41a0,0x41a1,0x41a0,0x4180,0x4180,0x41a0,0x41c1,0x41c1,0x41c1,0x41a1,0x41e2,0x41c2,0x41c1,0x41a1,0x41c1,0x41c2,0x49e3,0x49e3,0x41e3,0x41c2,0x41c2,0x41e3,0x41e3,0x41e3,0x41e3,0x49e3,0x49e3,0x49e3,0x4a03,0x4a03,0x4a04,0x4a04,0x4a04,0x4a24,0x4a24,0x4a03,0x4a03,0x4a04,0x4a24,0x4a24,0x4a24,0x4a24,0x5224,0x5245,0x5225,0x5245,0x5265,0x5266,0x5a86,0x5a86,0x5a87,0x5a87,0x5a88,0x5aa8,0x62c8,0x6309,0x6b2a,0x6b4b,0x736b,0x7bcd,0xbdf6,0xbdf6,0x3a07,0x08c0,0x2124,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e3,0x18e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x1903,0x18e2,0x10c2,0x18e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c1,0x0000,0x8470,0x8c4e,0x4180,0x3940,0x3940,0x3940,0x3120,0x3120,0x3940,0x3920,0x3920,0x3920,0x3920,0x3100,0x3100,0x3100,0x3100,0x30e0,0x3100,0x3100,0x30e0,0x30e0,0x3100,0x3100,0x3100,0x3100,0x3100,0x3100,0x30e0,0x28e0,0x30e0,0x3100,0x3100,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30c0,0x28c0,0x30e0,0x30e0,0x3100,0x3100,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30c0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x3100,0x3100,0x3100,0x3120,0x3100,0x3100,0x3100,0x3120,0x3100,0x3120,0x3920,0x3120,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3920,0x3940,0x3940,0x3940,0x3920,0x3920,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3960,0x3960,0x3960,0x3960,0x3940,0x3940,0x3960,0x3960,0x3960,0x3940,0x3960,0x3960,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3940,0x3940,0x3940,0x3960,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3920,0x3940,0x3940,0x3940,0x3940,0x3940,0x3920,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3940,0x3920,0x3120,0x3120,0x3120,0x3100,0x3100,0x30e0,0x30e0,0x30e0,0x30e0,0x30e0,0x30c0,0x30a0,0x2880,0x2860,0x0000,0x2080,0xbdd6,0x8c71,0x0000,0x2124,0x18e3,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x18e2,0x18e3,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e3,0x18e2,0x10c2,0x10e2,0x10c2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e2,0x10e2,0x10e2,0x18e2, +0x10c2,0x10a2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x0040,0x2145,0x8c91,0x738b,0x5224,0x41a3,0x41a1,0x41a1,0x3981,0x3981,0x3981,0x4182,0x41a2,0x3981,0x4182,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a1,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a1,0x4181,0x4181,0x4181,0x3981,0x41a2,0x4182,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x3981,0x4181,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3961,0x3960,0x3981,0x3981,0x3960,0x3960,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x4181,0x4181,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x3981,0x4181,0x4181,0x3981,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x3981,0x4181,0x4181,0x4181,0x4181,0x3981,0x3981,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a1,0x41a1,0x4181,0x4181,0x4181,0x4181,0x4181,0x41a2,0x41a2,0x41a2,0x41a2,0x4182,0x41c4,0x0000,0x840f,0x9d13,0x0080,0x2124,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x1903,0x18e3,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x0060,0x2965,0x8c71,0x7bcb,0x5223,0x41a2,0x41a1,0x41a1,0x4181,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x4181,0x4181,0x3981,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x4180,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x3980,0x3980,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x3980,0x3960,0x3980,0x4180,0x4180,0x4180,0x4180,0x3960,0x3960,0x3980,0x4180,0x4180,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x4180,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x4180,0x4180,0x4180,0x3980,0x3960,0x3980,0x4180,0x4180,0x4180,0x3980,0x4180,0x4180,0x4180,0x4180,0x3980,0x3980,0x4180,0x4180,0x3980,0x3980,0x4180,0x4180,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x4180,0x3980,0x3960,0x3940,0x3961,0x0800,0x7bae,0xa534,0x2184,0x1923,0x1923,0x1902,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x18e3,0x1903,0x18e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e3, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x31c7,0x8c91,0x6b6a,0x5223,0x49c2,0x41a1,0x41a1,0x3981,0x3981,0x4181,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x4180,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x4180,0x3960,0x3960,0x3980,0x4180,0x4180,0x3960,0x3960,0x3960,0x3980,0x3960,0x3980,0x3960,0x3960,0x4180,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x4180,0x4180,0x3980,0x3960,0x3980,0x4180,0x4180,0x4180,0x3980,0x4180,0x3980,0x3960,0x4180,0x3960,0x3960,0x4180,0x4180,0x3980,0x4180,0x4180,0x4180,0x4180,0x4180,0x3960,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3962,0x0000,0x83cf,0xa534,0x1944,0x1923,0x1923,0x1903,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10c2,0x10e2,0x18e2,0x18e3,0x18e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x10c2, +0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x0000,0x3a08,0x8c91,0x734a,0x5203,0x41c2,0x41a1,0x3981,0x3980,0x3980,0x3980,0x3960,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3980,0x4180,0x3980,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x4180,0x4180,0x3980,0x3980,0x3960,0x3960,0x3981,0x3960,0x3962,0x1000,0x7bef,0xa534,0x1903,0x1923,0x1923,0x18e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e3,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2, +0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e3,0x0000,0x3208,0x8c91,0x7329,0x5223,0x41c2,0x41a1,0x3981,0x3981,0x3981,0x3960,0x3960,0x4180,0x4180,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x4181,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x4181,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3962,0x1000,0x7c0f,0xa555,0x2123,0x1923,0x1923,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10e2,0x18e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2, +0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x0000,0x3208,0x8cb1,0x734a,0x5223,0x41c2,0x41a1,0x4181,0x3981,0x3981,0x3980,0x3960,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4181,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3940,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x4180,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x4180,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3962,0x1000,0x7c0f,0xa555,0x2123,0x2144,0x1923,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e3,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e3,0x0000,0x3a08,0x8cb1,0x734a,0x5223,0x41c2,0x41a1,0x3981,0x3981,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3980,0x4180,0x4180,0x3980,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3940,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x4180,0x3960,0x3960,0x3960,0x4180,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3962,0x1000,0x7c0f,0xa554,0x2103,0x2144,0x1923,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10a1,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10a1,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e3,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x0000,0x3a28,0x8cb1,0x734a,0x5223,0x41c2,0x4181,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x4180,0x4180,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3981,0x3980,0x3960,0x3980,0x3960,0x3960,0x3960,0x4181,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x4180,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x4180,0x3960,0x3980,0x3980,0x3980,0x3980,0x4180,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3960,0x3980,0x4180,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3942,0x1000,0x7c0f,0xa554,0x18e2,0x2144,0x1923,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2, +0x08a1,0x10c2,0x10e2,0x10c2,0x10a2,0x10a1,0x08a1,0x10a1,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x0000,0x3a28,0x8cb1,0x736a,0x5224,0x41c1,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x3960,0x4160,0x3960,0x3960,0x4160,0x3960,0x4160,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3960,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3960,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x4160,0x4160,0x3960,0x3960,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x3980,0x3980,0x3980,0x3960,0x3960,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4180,0x4160,0x4160,0x4160,0x4180,0x4180,0x4180,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x3980,0x3980,0x3980,0x3980,0x3960,0x4160,0x4160,0x3960,0x4160,0x3960,0x3960,0x3960,0x4160,0x4160,0x4160,0x4180,0x4180,0x4180,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4160,0x4180,0x4160,0x3960,0x4160,0x4180,0x3960,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x4180,0x4180,0x4180,0x4160,0x4180,0x4180,0x4160,0x3960,0x4160,0x4181,0x3960,0x3961,0x1000,0x840f,0xa534,0x1943,0x2123,0x2123,0x18e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x18e2,0x0000,0x3a28,0x8c90,0x738b,0x5244,0x41a1,0x39a1,0x3981,0x3980,0x3981,0x3981,0x3981,0x3981,0x3960,0x3960,0x3981,0x3981,0x3981,0x3980,0x3980,0x3981,0x4161,0x4161,0x4181,0x4181,0x3981,0x39a1,0x3981,0x3981,0x3981,0x3981,0x3961,0x3960,0x3960,0x3961,0x3981,0x3981,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3981,0x3981,0x3961,0x3961,0x3960,0x3960,0x3960,0x3981,0x3960,0x3960,0x3961,0x3961,0x3961,0x3961,0x3961,0x3960,0x3960,0x3940,0x3940,0x3960,0x3960,0x3940,0x3940,0x3940,0x3960,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3960,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3961,0x3960,0x3961,0x3961,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x39a1,0x39a1,0x3981,0x3981,0x3961,0x3961,0x3961,0x3981,0x4181,0x4181,0x4181,0x4181,0x4161,0x3981,0x3981,0x3960,0x3980,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3960,0x3981,0x3981,0x3980,0x3980,0x3981,0x3981,0x3981,0x3981,0x3980,0x3980,0x3980,0x3980,0x3980,0x4180,0x4180,0x4180,0x3960,0x3960,0x3980,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3960,0x3980,0x3981,0x3960,0x3960,0x3980,0x3980,0x3980,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3980,0x3980,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x3981,0x39a1,0x3981,0x3981,0x3981,0x3982,0x1000,0x83ef,0x9cf3,0x1143,0x2123,0x2123,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x10c2,0x08a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e3,0x10c2,0x10c2,0x10e2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x18e2,0x1903,0x10e2,0x10e2,0x18e2,0x0020,0x2985,0x94d1,0x6309,0x51e0,0x49c3,0x41c3,0x39a2,0x39a2,0x39a2,0x41c3,0x41c3,0x41c3,0x41a3,0x39a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41a2,0x41a2,0x49a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x4182,0x4182,0x4182,0x4182,0x4182,0x4182,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a3,0x41a2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c2,0x41c3,0x41c3,0x41c2,0x41c2,0x41c2,0x41c2,0x41c3,0x41c3,0x41c3,0x49a3,0x41a3,0x41a3,0x49a3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41c2,0x41c2,0x41a2,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41a2,0x41c2,0x41c2,0x41a3,0x41a2,0x41c3,0x41c3,0x41c3,0x41c3,0x41c3,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41c2,0x41c3,0x41c3,0x41c3,0x41c2,0x41a2,0x39a2,0x39a2,0x41a2,0x41a2,0x41a2,0x41a2,0x39a2,0x39a2,0x39a2,0x39a2,0x39a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x41a2,0x39a2,0x41a3,0x41a3,0x41a3,0x39a3,0x41c3,0x41c3,0x39a2,0x41a3,0x39a3,0x41c3,0x41c3,0x41a2,0x41c4,0x0000,0x9491,0x94d3,0x0060,0x2164,0x1923,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2, +0x10c2,0x08a1,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x18e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x0000,0x8c91,0xa512,0x49e3,0x2000,0x1000,0x0800,0x0000,0x0800,0x0800,0x0800,0x1000,0x1000,0x1800,0x1000,0x1000,0x1000,0x1800,0x1800,0x1000,0x0800,0x0800,0x1000,0x1000,0x1800,0x2000,0x2000,0x2000,0x2000,0x1800,0x1800,0x1840,0x1820,0x1000,0x1000,0x1820,0x2060,0x20a0,0x20a0,0x20a0,0x20a0,0x1840,0x1840,0x2080,0x20a0,0x20a0,0x20a0,0x20a0,0x20a0,0x20c0,0x20c0,0x20c0,0x28e0,0x28e0,0x20a0,0x2080,0x2080,0x2060,0x2060,0x1840,0x1840,0x1840,0x1820,0x1800,0x1840,0x2060,0x1840,0x1820,0x1820,0x1800,0x1800,0x1800,0x1820,0x1820,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x2000,0x2000,0x2000,0x2000,0x2800,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x1000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1000,0x1800,0x1000,0x1000,0x0800,0x1000,0x1000,0x1000,0x1000,0x0800,0x1000,0x1800,0x1800,0x1800,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x1000,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1000,0x1000,0x1000,0x1000,0x0800,0x1800,0x2000,0x1000,0x1000,0x1000,0x1800,0x1800,0x2000,0x0000,0x5ae9,0xc637,0x7bef,0x0040,0x2165,0x1923,0x1903,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e2,0x10e2,0x10c2,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08a1,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x0000,0x29a6,0xa554,0xb5b5,0x94b1,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9470,0x8c70,0x8c6f,0x8c4f,0x8c4f,0x842e,0x842e,0x842e,0x83ed,0x83ed,0x83ed,0x83ed,0x7bcd,0x7bcd,0x7bcd,0x7bcd,0x7bcd,0x7bac,0x738c,0x7b8c,0x7b8c,0x738b,0x736b,0x736b,0x736b,0x6b2a,0x6b2a,0x6b0a,0x6309,0x6309,0x6b09,0x6309,0x62e9,0x62c8,0x62e8,0x62c8,0x62c8,0x62c8,0x62c8,0x5aa7,0x5aa7,0x62c7,0x5ac7,0x5ac7,0x62c8,0x62e8,0x62e8,0x6b09,0x6b09,0x6b0a,0x6b0a,0x6b2a,0x6b2a,0x6b0a,0x6b0a,0x6b2a,0x6b2a,0x6b2a,0x6b4a,0x734b,0x734b,0x734b,0x734b,0x734b,0x736b,0x736b,0x736b,0x736b,0x736c,0x736c,0x738c,0x738c,0x736c,0x736c,0x738c,0x738c,0x7b8c,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bac,0x7bcd,0x7bcd,0x7bed,0x7bed,0x83ed,0x83ee,0x83ee,0x840e,0x840e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x842e,0x8c2e,0x8c4f,0x8c6f,0x8c4f,0x8c4f,0x8c6f,0x8c6f,0x946f,0x9490,0x9490,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x946f,0x946f,0x944f,0x8c6f,0x9470,0x9470,0x8c6f,0x9470,0x946f,0x946f,0x948f,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9490,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x9470,0x9490,0x9470,0x9470,0x9490,0x94b0,0x94b0,0x94b0,0x94b0,0x9490,0x9490,0x9490,0x9490,0x9470,0x8c6f,0x8c6f,0x8c4f,0x8c4f,0x8c4f,0x8c6f,0x8c4f,0x8c4f,0x842f,0x9cd1,0xc677,0xa554,0x2145,0x2143,0x1944,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e3,0x10e2,0x10c2,0x10e2,0x10e2, +0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x0000,0x00c2,0x73ee,0x94d2,0x9cf3,0x9d13,0x9d13,0xa533,0xa554,0xa554,0xa554,0xa554,0xa554,0xa554,0xa574,0xa554,0xa554,0xa553,0xa533,0xad54,0xad74,0xad74,0xad54,0xad54,0xad74,0xad95,0xad95,0xad95,0xad74,0xad75,0xad95,0xb595,0xb5b5,0xb595,0xad95,0xad95,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b5,0xb5b6,0xb5d6,0xb5d5,0xb5b5,0xb5b5,0xbdd6,0xbdd6,0xb5d5,0xb5d5,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbe17,0xbe17,0xbe16,0xbe17,0xbe17,0xbe17,0xc617,0xc637,0xc617,0xbe17,0xbe17,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xc617,0xc617,0xbdf6,0xbe17,0xc617,0xbe17,0xbe17,0xbe17,0xbdf7,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xbdf6,0xb5d6,0xb5d5,0xb5d6,0xb5d5,0xb5d6,0xb5b5,0xb5b5,0xb5d6,0xb5d6,0xb5d6,0xb5d6,0xb5b5,0xb5b5,0xb5d6,0xb5d5,0xb5b5,0xb595,0xad75,0xad95,0xb595,0xad95,0xad95,0xad95,0xad95,0xad94,0xad74,0xad74,0xad74,0xa554,0xa554,0xa574,0xa554,0xa553,0xa533,0xa554,0xa533,0xa533,0xa553,0xa554,0xa554,0xa554,0xa553,0xa533,0xa533,0xa533,0xa533,0xa513,0xa513,0x9cf3,0x9cf3,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf3,0x9d12,0x9d12,0x9d12,0x9d12,0x9d12,0x9cf2,0x9cf3,0x9cf2,0x9cf2,0x9cf2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94d2,0x94f2,0x94f2,0x94f2,0x94f2,0x9cf2,0x94f2,0x9cf2,0x9cf2,0x9cf2,0x9cf2,0x9cf3,0x9cf2,0x9d13,0xa533,0xa533,0xa533,0xa533,0xa574,0x844f,0x1923,0x1903,0x2144,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10e2,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0021,0x0000,0x0021,0x00a3,0x08e3,0x1124,0x1924,0x1945,0x2145,0x2145,0x2165,0x2986,0x2986,0x29a6,0x29a6,0x29c7,0x31c7,0x31e7,0x31e7,0x3208,0x3a08,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x52aa,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52ca,0x52eb,0x52cb,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x4a89,0x4a69,0x4269,0x4269,0x4269,0x4269,0x4269,0x4249,0x4269,0x4269,0x4269,0x4249,0x4269,0x4249,0x4249,0x4249,0x4248,0x3a28,0x3a28,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x29a6,0x2986,0x29a6,0x2986,0x2165,0x1944,0x1124,0x1124,0x1124,0x08c3,0x10e3,0x1904,0x10c3,0x08c3,0x08c3,0x08c3,0x00a2,0x0041,0x0061,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0081,0x0000,0x0000,0x2123,0x2144,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2, +0x10c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10e2,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x10c2,0x18e3,0x18e3,0x10e2,0x18e3,0x10e2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x0881,0x0881,0x10a1,0x10a1,0x08a1,0x0881,0x0060,0x0060,0x0040,0x0040,0x0060,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x0060,0x0880,0x08a1,0x0880,0x0880,0x0880,0x10a1,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x18e2,0x18e3,0x10e2,0x18e2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e2,0x18e2,0x18e3,0x1903,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1923,0x18e2,0x18e2,0x1903,0x2123,0x2164,0x2144,0x18e2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1103,0x10e2,0x10c2,0x10c2,0x10e2,0x1103,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x18e3,0x18e3,0x10e2,0x10e2,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x10e2,0x10e2,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x1903,0x10e3,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x10e2,0x18e3,0x18e3,0x18e3,0x10e2,0x10e2,0x10e2,0x10e3,0x18e3,0x18e3,0x10e2,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x1903,0x18e3,0x10e2,0x18e3,0x1903,0x1903,0x1903,0x10e2,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x10e2,0x10e2,0x18e3,0x1903,0x10e2,0x10e2,0x18e2,0x18e3,0x18e2,0x1903,0x1903,0x18e2,0x10e2,0x18e3,0x18e3,0x18e2,0x1903,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e3,0x1903,0x1903,0x1903,0x1903,0x1903,0x1903,0x18e2,0x18e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10c2,0x10c2,0x18e2,0x18e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2, +0x08c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x1103,0x10c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c1,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x10a2,0x10a1,0x10c2,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x08a1,0x08a1,0x10a1,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10a1,0x08a1,0x08a1,0x10c2,0x10a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10a1,0x10a1,0x08a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10c2,0x10c2,0x10a2,0x10c2,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10c1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10e2,0x10e2,0x10e2,0x10c1,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c1,0x10c1,0x10c1,0x10a1,0x10c1,0x10c1,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10e2,0x10c2,0x10c1,0x10c1,0x10c2,0x10c2,0x10c1,0x10c2,0x10e2,0x10c1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x1902,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2, +0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x08c2,0x10c2,0x08c2,0x08c2,0x10c2,0x08c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c1,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10c2,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c1,0x10a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10c2,0x10a1,0x08a1,0x10a1,0x08a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x08a1,0x08a1,0x08a1,0x08a1,0x08a1,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10a1,0x08a1,0x08a1,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10c2,0x10c2,0x08a1,0x08a1,0x10a1,0x10a1,0x10c1,0x10c2,0x10c2,0x10c1,0x10a1,0x10c1,0x10c2,0x10c1,0x08a1,0x10c1,0x10c1,0x10c2,0x10c2,0x10c2,0x10c1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c1,0x10a1,0x10c1,0x10c1,0x10c2,0x10c2,0x10a1,0x08a1,0x08a1,0x08a1,0x10c1,0x10c1,0x10c1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c1,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e3,0x10e2,0x10e2, +0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a2,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10a1,0x10c2,0x10a1,0x08a1,0x10a1,0x10a2,0x10c2,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x08a1,0x08a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a1,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a2,0x10a1,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x18e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x1902,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x10e2,0x18e3, +0x10e2,0x10c2,0x08c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x08a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08a1,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x1903,0x1903,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x10e2,0x10e2,0x10e2, +0x10c2,0x08c2,0x08a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x08c2,0x08a1,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x10e2,0x10e2,0x10c2,0x10c2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x18e2,0x1903,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x18e3,0x10e2,0x10e2,0x18e3,0x10e2, +0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x08c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x1903,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1902,0x1102,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a1,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x18e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x1903,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1903,0x1903,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x18e2,0x1903,0x10e2,0x10e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x1903,0x18e2,0x10e2,0x10c2,0x10e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x10e2,0x1902,0x1903,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e3,0x18e3,0x10e2,0x10e2,0x1903,0x10e2, +0x10e2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x1903,0x1903,0x18e2,0x1902,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x1902,0x1903,0x1903,0x1903,0x1903,0x1903,0x1902,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x1102,0x1102,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x08c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e3,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10c2,0x10c2,0x10e2,0x10c2,0x10e2,0x10e2,0x10c2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e3,0x18e2,0x18e2,0x18e2,0x10e2,0x18e3,0x18e2,0x18e2,0x18e2,0x10e2,0x1903,0x18e3,0x10e2,0x10c2,0x10c2,0x10e2,0x18e3,0x18e3,0x18e2,0x18e2,0x18e3,0x18e2,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x10e2,0x18e2,0x18e2,0x10e2,0x10e2,0x18e2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x18e3,0x18e2,0x18e2,0x10e2,0x10e2,0x10e2,0x10e2,0x10e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e2,0x18e3,0x18e2,0x18e2,0x18e2,0x18e2,0x10e3,0x10e3,0x10e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x10e3}; diff --git a/MCUME_teensy/teensy800/memory.h b/MCUME_teensy/teensy800/memory.h new file mode 100644 index 0000000..1945156 --- /dev/null +++ b/MCUME_teensy/teensy800/memory.h @@ -0,0 +1,18 @@ +#ifndef __MEMORY__ +#define __MEMORY__ + +extern unsigned char * memory; + +#define MEMORY_GetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_PutByte(addr,byte) Atari_PutByte(addr,byte) + +#define MEMORY_dGetByte(addr) (Atari_GetByte(addr)) +#define MEMORY_dPutByte(addr,byte) Atari_PutByte(addr,byte) +#define MEMORY_dGetWord(x) (Atari_GetByte(x) | (Atari_GetByte((x) + 1) << 8)) +#define MEMORY_dPutWord(x,y) (Atari_PutByte(x,(UBYTE) (y)) , Atari_PutByte(x + 1,(UBYTE) ((y) >> 8)) +/* faster versions of dGetWord and dPutWord for even addresses */ +/* TODO: guarantee that memory is UWORD-aligned and use UWORD access */ +#define MEMORY_dGetWordAligned(x) MEMORY_dGetWord(x) +#define MEMORY_dPutWordAligned(x,y) MEMORY_dPutWord(x,y) + +#endif diff --git a/MCUME_teensy/teensy800/noise.h b/MCUME_teensy/teensy800/noise.h new file mode 100644 index 0000000..c93ac89 --- /dev/null +++ b/MCUME_teensy/teensy800/noise.h @@ -0,0 +1,1059 @@ +const UBYTE POKEY_poly9_lookup[] = { +255,127,63,31,15,135,195,225,240,120,188,222,239,119,59,29, +14,135,67,161,208,104,52,154,205,102,179,217,108,182,219,237, +246,123,189,94,47,23,11,133,194,225,112,56,156,206,103,51, +25,12,134,67,33,144,72,36,18,137,68,162,81,168,212,234, +117,186,93,174,215,235,245,122,61,158,79,39,147,73,164,210, +233,116,58,157,206,231,115,57,28,14,7,3,129,192,224,112, +184,220,238,119,187,93,46,151,203,229,242,121,188,94,175,87, +43,149,74,165,82,41,20,10,5,2,129,64,160,80,168,84, +170,85,170,213,234,245,250,125,190,95,175,215,107,181,90,45, +22,11,5,130,193,96,176,216,236,118,187,221,110,183,219,109, +182,91,173,214,107,53,26,13,6,131,65,160,208,232,116,186, +221,238,247,251,125,62,31,143,199,227,241,120,60,158,207,103, +179,89,44,150,203,101,178,89,172,214,235,117,58,29,142,199, +99,177,88,44,22,139,69,162,209,232,244,250,253,254,127,191, +95,47,151,75,165,210,105,52,26,141,70,163,81,40,148,202, +101,50,25,140,198,99,49,24,12,6,3,1,128,192,96,48, +152,204,102,51,153,76,166,83,169,212,106,53,154,77,38,147, +201,228,242,249,252,126,191,223,111,183,91,45,150,75,37,146, +73,36,146,201,100,178,217,236,246,251,253,126,63,159,79,167, +211,105,180,90,173,86,43,21,10,133,66,161,80,40,20,138, +69,34,145,200,228,114,185,220,110,55,155,77,166,211,233,244, +122,189,222,111,55,27,13,134,195,97,176,88,172,86,171,85, +42,149,202,229,114,57,156,78,39,19,9,132,194,97,48,24, +140,70,35,17,8,132,66,33,16,8,4,2,1,0,128,64, +32,16,136,68,34,17,136,196,98,49,152,76,38,19,137,196, +226,113,184,92,174,87,171,213,106,181,218,109,54,27,141,198, +227,113,56,28,142,71,35,145,72,164,82,169,84,42,21,138, +197,98,177,216,108,54,155,205,230,243,249,124,62,159,207,231, +243,121,60,30,143,71,163,209,104,180,218,237,118,59,157,78, +167,83,41,148,74,37,18,9,4,130,65,32,144,200,100,50, +153,204,230,115,185,92,46,23,139,197,226,241,248,124,190,223, +239,247,123,61,30,15,7,131,193,224,240,248,252,254,255,}; +const UBYTE POKEY_poly17_lookup[] = { +255,1,224,3,254,231,131,241,31,28,254,217,99,142,33,4, +1,24,130,17,28,226,25,90,146,145,61,250,216,123,12,48, +24,227,1,216,131,141,223,227,130,233,157,13,226,59,122,212, +179,149,60,226,90,106,16,210,1,185,147,73,190,119,7,152, +142,217,133,238,227,227,249,89,108,118,190,11,199,103,242,233, +123,109,32,220,130,149,93,242,158,11,132,87,112,170,71,46, +107,238,48,210,66,137,17,10,130,52,76,170,60,158,154,149, +108,226,255,58,80,118,197,187,54,28,174,217,198,222,97,160, +197,26,39,68,12,76,216,28,125,232,125,14,28,220,249,37, +172,137,194,59,57,228,49,214,0,161,17,88,162,149,30,194, +28,72,184,20,59,152,245,105,116,149,191,211,68,234,45,10, +249,132,189,209,96,174,39,38,45,158,184,181,42,192,87,252, +106,87,163,155,252,254,22,146,12,237,201,68,223,125,99,204, +0,148,65,49,151,17,55,82,77,113,142,5,68,75,60,82, +91,17,163,19,124,230,159,50,22,6,77,220,94,85,232,47, +46,189,142,145,5,122,171,67,108,67,238,98,242,227,219,121, +42,84,22,205,253,70,148,201,177,143,152,151,72,166,245,22, +132,108,192,223,124,114,222,3,129,23,122,142,19,36,102,42, +106,246,178,195,94,107,8,80,16,165,113,80,228,229,150,165, +116,1,254,226,211,251,26,88,180,245,51,212,36,229,27,116, +118,143,27,166,86,38,200,206,124,81,238,71,162,171,254,189, +34,80,71,213,218,7,200,143,108,215,175,83,101,242,236,43, +103,37,152,200,185,13,168,155,234,158,59,132,52,64,106,36, +146,106,141,3,34,39,54,44,175,170,244,31,22,94,205,105, +6,181,92,161,172,136,211,41,58,241,103,157,25,163,2,108, +197,142,102,117,155,93,239,78,48,153,243,11,88,151,197,119, +247,152,97,40,69,2,174,228,22,167,92,132,252,192,246,237, +50,245,54,133,62,226,94,42,24,214,81,177,182,9,246,115, +211,208,171,28,157,232,179,239,156,17,32,34,98,102,162,234, +238,59,99,68,128,140,200,145,141,250,179,202,204,89,5,230, +106,98,243,242,201,122,63,2,93,212,255,85,160,174,170,247, +47,16,93,241,175,29,133,106,162,243,126,8,122,176,243,91, +88,50,149,55,83,92,99,141,16,18,0,37,80,72,37,196, +8,4,81,24,39,65,92,70,221,88,55,196,45,84,25,61, +227,73,88,23,197,127,118,152,107,137,65,10,39,100,12,14, +248,156,63,192,124,76,62,124,191,15,133,79,242,187,91,204, +114,180,162,67,127,115,201,113,142,4,84,73,61,70,25,24, +179,1,125,211,205,123,39,128,76,200,29,76,250,60,59,202, +213,200,38,253,159,5,102,107,122,112,243,215,153,50,26,198, +85,208,174,77,135,239,246,177,242,72,106,53,130,73,156,87, +65,186,38,31,191,207,133,195,51,187,212,61,116,56,111,131, +232,142,63,229,44,4,27,184,183,11,212,87,213,250,7,138, +175,236,149,135,82,39,208,76,109,77,12,94,248,57,111,128, +216,136,60,217,234,31,43,142,180,84,34,140,134,112,5,182, +106,199,163,178,109,190,61,167,8,196,81,148,230,65,211,183, +219,212,250,4,186,169,239,169,65,73,23,230,79,50,187,215, +13,114,59,83,69,243,190,9,230,115,242,192,235,61,9,232, +146,254,204,50,181,54,1,126,226,219,122,26,82,21,241,59, +93,164,255,178,208,110,76,27,44,247,42,65,71,246,234,67, +235,51,232,228,158,39,68,13,92,218,29,105,170,116,30,14, +221,204,119,229,184,68,58,45,167,40,196,19,180,102,3,251, +182,153,246,90,66,144,128,41,153,193,43,63,165,45,144,89, +185,38,25,223,195,131,187,191,140,180,81,114,134,131,52,79, +154,58,157,166,83,119,210,201,57,15,128,30,232,188,30,146, +28,237,232,84,159,92,247,204,33,133,17,18,2,5,84,74, +13,64,26,36,117,26,77,229,206,36,209,91,31,66,31,112, +63,23,13,255,234,81,203,22,250,140,59,161,100,8,79,224, +154,110,220,27,5,102,106,106,114,242,195,219,59,10,212,84, +229,252,4,182,105,247,165,177,81,120,38,151,62,199,14,98, +61,18,89,181,231,17,209,50,143,150,118,68,170,44,158,187, +133,44,195,107,58,113,103,149,152,163,8,205,193,134,239,245, +129,244,75,86,243,153,121,170,84,30,76,253,76,53,205,185, +6,24,141,225,2,237,213,132,230,97,211,245,251,84,184,44, +187,235,205,9,7,99,62,32,127,178,217,255,78,16,153,177, +43,216,213,237,118,181,186,193,110,111,43,104,212,150,197,116, +199,158,98,20,131,25,158,210,21,248,170,95,175,74,244,209, +247,222,0,176,1,123,179,193,125,95,12,123,168,113,74,68, +208,140,109,193,205,94,119,200,105,12,21,72,171,36,28,139, +137,142,251,165,168,193,75,63,99,77,16,158,193,37,223,185, +35,72,197,196,198,229,209,213,254,70,146,169,189,137,224,27, +127,198,153,16,58,128,119,120,104,119,166,137,214,123,16,240, +33,255,177,225,120,77,38,254,174,19,103,86,168,41,202,241, +136,108,217,79,79,107,42,112,86,135,217,150,222,196,240,133, +190,227,70,169,25,200,178,188,174,146,119,92,40,61,130,89, +156,118,81,250,7,139,191,238,148,147,16,46,192,94,108,120, +94,23,201,191,110,148,155,145,46,202,255,104,112,215,151,211, +22,202,140,88,145,164,107,243,225,249,93,44,126,186,91,207, +66,178,161,127,185,104,249,71,141,91,162,146,110,204,27,36, +118,42,75,230,242,226,202,107,41,65,64,134,228,68,135,253, +214,148,224,32,207,179,162,76,143,109,198,189,80,112,164,167, +50,101,54,172,175,162,117,31,28,255,201,97,143,53,70,8, +8,144,16,41,176,80,107,20,144,41,185,193,105,31,37,111, +184,88,251,4,185,153,233,170,125,143,12,214,121,49,228,33, +214,33,177,81,121,54,149,63,211,76,107,45,0,88,128,181, +88,224,180,142,130,53,93,184,63,139,204,222,117,224,236,14, +55,109,189,12,177,9,249,131,205,223,103,194,233,24,93,224, +191,62,148,62,193,110,110,59,106,213,130,135,125,215,140,99, +33,209,80,175,84,20,236,233,70,189,89,225,166,172,135,35, +55,53,61,185,233,233,77,13,79,234,58,122,214,147,145,62, +202,222,120,48,246,3,211,55,219,220,123,4,176,8,235,161, +200,201,13,79,235,42,120,215,135,211,55,218,204,121,5,164, +74,226,177,218,200,56,29,162,27,254,214,147,144,46,200,223, +108,114,255,19,193,54,238,142,50,53,54,9,255,226,209,219, +30,90,156,113,33,244,0,231,113,208,228,237,23,165,126,160, +250,234,90,123,0,241,16,237,240,212,174,68,23,253,255,5, +160,11,250,183,139,212,95,84,250,13,43,171,228,28,7,72, +142,116,84,174,77,134,255,244,176,230,10,99,37,144,72,169, +5,8,139,160,30,171,140,156,209,32,174,163,102,45,27,232, +183,174,132,23,113,62,5,47,250,252,59,70,20,200,169,12, +153,137,171,171,237,141,5,67,59,50,85,55,223,157,99,2, +225,20,140,232,144,223,216,50,156,166,81,87,214,203,17,139, +146,62,204,190,116,54,142,143,228,87,183,218,197,232,7,175, +255,164,176,67,90,35,129,84,74,12,80,24,37,97,88,68, +245,220,37,228,9,86,115,153,113,43,84,20,237,249,68,188, +77,163,175,188,149,34,2,103,116,136,111,232,89,78,86,248, +41,111,161,200,200,29,77,234,62,58,222,151,193,54,239,158, +48,52,34,75,246,242,195,218,43,8,213,64,167,245,20,164, +104,194,247,248,96,254,39,131,125,222,28,113,40,101,2,236, +196,150,229,116,133,190,226,86,171,24,220,240,181,190,128,118, +105,122,116,179,223,157,98,18,227,21,152,170,153,207,202,51, +169,244,24,102,80,202,5,200,139,44,223,171,3,109,215,172, +99,99,241,208,237,124,21,174,203,230,251,115,200,96,156,7, +65,31,118,95,27,11,135,102,102,171,122,252,50,215,22,195, +28,74,152,16,57,176,113,123,84,177,189,185,224,120,79,6, +250,172,59,227,68,136,13,200,155,44,254,187,67,76,67,172, +66,114,161,243,120,104,118,182,139,215,111,82,249,49,237,176, +212,42,4,23,120,175,7,36,79,186,58,223,134,211,53,250, +200,123,45,32,88,194,149,216,162,156,143,192,23,253,254,21, +162,10,238,245,130,196,77,85,207,95,98,154,98,29,19,11, +151,102,71,187,58,221,166,215,55,210,76,105,13,4,90,168, +49,74,192,144,140,232,145,207,218,51,136,228,88,71,196,202, +36,217,219,15,74,191,96,117,151,157,247,66,192,129,156,203, +128,155,185,174,152,215,72,34,181,22,1,60,194,91,56,50, +83,87,211,155,27,142,214,116,224,238,46,51,111,149,136,163, +41,221,129,167,123,245,160,229,27,117,102,141,26,178,20,47, +216,220,125,100,188,14,147,45,255,169,97,73,85,198,207,112, +147,214,79,80,155,21,111,218,120,57,102,17,218,131,137,159, +235,134,185,149,40,162,115,126,0,251,176,249,250,92,58,28, +183,73,245,199,149,211,18,138,132,92,193,172,78,179,169,253, +137,100,91,127,67,201,18,190,196,55,245,60,37,42,232,214, +190,64,118,229,187,116,60,46,155,238,223,35,130,101,92,13, +109,202,124,88,126,85,171,31,172,254,178,210,78,72,25,4, +115,56,97,99,244,128,231,121,81,228,231,182,161,118,41,122, +240,243,223,24,50,16,103,81,216,39,205,157,70,82,169,49, +72,224,148,142,192,21,221,250,23,138,142,252,213,166,198,39, +241,93,61,110,153,74,155,33,47,177,76,169,13,136,155,168, +190,187,198,28,65,40,6,50,44,167,42,228,23,182,78,135, +233,150,189,244,48,230,2,226,37,154,233,173,13,129,11,186, +183,15,148,95,209,170,15,175,239,164,145,83,26,2,21,84, +107,29,0,59,176,117,59,92,181,237,177,197,56,7,2,46, +228,30,38,92,142,93,196,254,100,178,239,159,33,38,33,94, +160,185,218,216,56,60,178,91,223,66,147,177,63,152,252,249, +102,156,11,129,7,122,175,3,100,71,190,106,215,163,147,125, +254,28,51,8,229,64,196,197,212,199,212,195,148,203,144,155, +152,190,216,246,220,34,148,7,81,31,87,79,91,42,19,102, +71,186,42,223,167,195,117,219,92,123,12,49,8,225,0,204, +193,132,207,241,131,220,207,68,211,189,123,192,240,140,46,241, +79,29,75,139,34,62,167,15,180,95,147,138,143,237,199,165, +211,113,186,68,63,125,173,45,128,89,152,54,89,254,87,131, +154,174,220,151,196,102,229,155,116,126,14,27,172,247,34,192, +71,252,75,71,227,186,104,254,55,131,92,206,92,80,188,101, +35,253,148,181,112,96,230,166,162,103,63,57,237,161,196,9, +21,67,27,50,23,23,95,223,75,3,163,54,44,174,186,246, +30,2,28,196,121,20,180,105,243,229,185,85,40,46,178,126, +143,10,182,117,55,156,173,225,65,221,87,199,218,34,152,199, +73,19,167,87,52,234,203,106,59,99,69,144,142,201,133,207, +243,163,216,205,108,87,175,91,228,242,230,138,99,45,17,72, +163,164,12,131,41,158,177,37,56,201,227,174,41,199,33,146, +97,61,21,41,187,224,125,31,12,255,232,113,207,20,210,8, +41,129,64,10,37,68,8,12,208,24,45,224,88,78,84,216, +45,109,137,76,218,61,105,232,84,158,76,245,205,53,199,24, +2,16,4,97,24,68,113,156,37,97,89,84,247,221,49,166, +0,70,97,152,68,121,29,37,107,248,80,255,84,177,188,169, +226,121,91,68,243,188,41,226,113,218,68,249,29,45,234,248, +90,94,80,185,53,41,248,208,255,92,48,188,163,67,125,83, +205,115,166,128,70,105,25,68,115,188,33,99,113,208,229,253, +21,164,106,226,243,250,72,122,53,163,89,220,118,213,186,7, +14,239,236,16,215,80,163,148,12,224,25,94,210,153,57,170, +208,94,76,120,28,55,73,253,70,149,217,179,142,140,213,65, +182,231,23,177,62,137,238,250,115,202,64,152,5,105,155,100, +127,63,9,237,194,244,201,118,255,26,81,36,231,58,96,118, +166,139,246,127,18,216,165,237,145,197,122,39,130,108,204,31, +100,126,46,27,238,215,162,130,111,253,9,101,67,252,66,215, +241,179,220,172,116,19,222,199,193,147,191,222,148,240,32,238, +163,226,109,27,109,231,172,0,83,49,179,81,125,118,157,59, +131,68,78,109,72,92,84,253,125,37,172,136,210,57,56,240, +115,223,16,179,16,109,240,220,47,68,29,92,251,13,41,139, +224,30,47,204,156,84,112,172,39,34,109,150,188,229,34,229, +23,180,110,131,235,190,57,230,16,194,0,136,129,8,139,161, +14,169,141,136,147,41,190,177,103,24,73,161,134,40,133,3, +50,39,23,60,239,139,96,31,55,79,157,74,147,161,63,185, +236,185,71,8,11,160,22,42,140,150,112,36,166,42,230,55, +178,76,175,109,132,157,208,50,140,166,112,71,150,234,133,139, +179,47,156,157,225,34,237,151,164,102,35,251,244,185,118,24, +106,145,194,11,57,135,1,22,99,29,16,59,145,101,123,125, +33,237,144,212,104,36,151,58,135,6,102,109,26,124,245,175, +21,5,122,170,83,110,66,250,32,251,243,201,120,31,6,95, +252,123,71,128,138,168,157,139,130,63,253,172,53,3,88,134, +213,84,230,204,2,181,85,49,190,129,103,123,121,97,229,148, +132,96,1,215,114,131,210,46,72,223,100,243,255,25,96,50, +230,7,178,47,159,173,231,33,209,81,191,86,21,248,171,79, +173,75,224,147,254,206,18,177,52,41,250,240,251,94,24,56, +177,99,89,81,167,215,52,226,74,106,49,194,65,152,7,73, +159,102,87,187,27,205,230,246,163,210,109,120,93,39,207,188, +82,82,128,161,24,201,160,158,171,132,29,209,42,15,167,110, +164,155,242,30,10,156,212,113,180,164,35,115,117,177,253,185, +100,56,79,131,170,174,191,167,4,5,89,154,23,77,254,126, +19,202,135,232,135,175,247,37,176,73,251,39,137,221,202,22, +249,188,61,162,88,206,84,208,172,109,131,237,222,53,224,104, +78,55,232,237,14,53,77,185,14,153,141,235,163,233,221,13, +102,123,122,81,227,151,184,166,26,231,68,128,141,216,147,140, +238,241,195,220,75,4,211,56,43,194,116,200,110,124,27,79, +199,234,34,251,247,137,112,27,86,87,217,59,15,132,94,224, +184,78,154,57,173,160,80,75,20,210,9,57,131,65,30,103, +77,24,30,209,45,127,169,105,200,85,204,110,116,155,95,207, +74,50,177,119,25,120,179,199,29,83,10,3,36,70,42,40, +214,50,129,118,106,74,114,176,227,91,121,34,213,22,199,92, +66,156,64,49,149,49,51,80,101,245,156,37,96,73,86,246, +201,115,175,16,84,96,173,22,48,44,163,106,236,19,230,70, +162,169,222,185,32,120,195,199,250,35,202,229,200,69,205,95, +102,218,106,25,67,3,178,38,15,191,238,149,131,18,47,212, +28,101,104,76,22,252,237,39,165,29,144,58,137,230,122,99, +194,224,136,79,233,11,108,215,174,67,103,243,248,105,110,53, +138,201,140,95,225,170,108,159,47,199,45,82,121,49,229,49, +212,32,165,19,112,38,135,62,230,30,34,28,134,89,148,246, +65,242,167,155,245,110,4,155,184,191,138,212,93,116,254,15, +3,47,246,60,35,74,228,208,198,204,65,133,215,114,130,194, +44,73,203,38,250,239,11,97,7,180,78,131,169,158,185,164, +56,195,66,170,33,78,161,136,200,153,13,234,187,106,220,19, +133,118,98,202,98,184,67,75,51,162,69,30,111,205,8,22, +113,61,53,41,249,192,253,93,36,254,170,83,111,82,248,33, +239,177,192,104,13,7,106,174,50,118,6,139,188,222,146,144, +44,232,219,110,90,123,1,225,18,236,228,150,167,84,5,252, +202,87,233,58,124,182,159,151,70,70,233,24,92,240,189,63, +128,124,200,126,124,58,95,135,203,182,251,214,152,32,56,195, +67,186,35,79,181,202,193,137,31,235,142,56,149,34,3,119, +118,137,123,170,80,94,68,249,28,61,232,249,78,28,89,169, +39,40,205,130,182,109,182,189,183,0,100,65,222,102,209,219, +31,74,158,112,53,182,9,247,99,209,209,191,94,148,248,161, +238,169,67,105,19,228,103,182,169,247,41,112,81,247,215,145, +178,10,206,245,192,228,205,23,231,94,32,184,194,91,57,34, +81,86,199,217,18,158,196,117,213,188,103,2,233,148,156,224, +48,207,146,178,12,174,249,198,156,65,32,135,50,38,6,46, +236,158,54,84,46,77,142,126,244,186,71,14,107,172,16,82, +0,161,16,72,160,148,10,128,21,88,170,21,14,202,188,88, +242,148,171,144,93,248,62,31,142,223,228,242,231,154,97,44, +5,10,170,180,30,130,28,204,248,20,190,200,247,237,48,213, +50,135,22,102,76,10,60,212,59,21,36,107,250,112,251,86, +153,56,187,194,93,89,46,87,46,75,238,114,242,194,203,57, +11,192,22,236,236,22,183,92,165,236,128,215,121,50,212,39, +213,29,119,74,73,0,150,96,37,151,56,167,2,100,69,158, +110,213,139,23,111,222,56,49,98,65,210,166,201,215,239,82, +241,176,237,186,117,46,12,158,248,181,174,128,87,121,58,85, +39,223,188,115,66,192,128,140,201,129,143,251,167,136,197,73, +23,231,95,48,186,195,79,123,43,65,68,198,236,64,215,245, +243,212,168,36,27,251,135,137,151,107,150,177,53,56,232,243, +238,8,83,33,179,112,109,54,188,175,131,101,95,61,107,201, +64,158,101,101,157,28,243,8,105,129,196,74,37,193,88,14, +84,92,109,109,12,28,216,185,45,168,217,202,30,121,172,53, +2,72,132,212,64,164,197,18,167,84,4,236,200,86,253,120, +117,166,141,150,115,20,160,41,218,241,169,124,153,110,219,107, +11,97,6,164,76,130,189,220,176,180,42,194,119,248,104,127, +39,137,220,218,20,248,168,127,171,72,220,85,229,254,36,178, +107,223,33,163,113,92,36,253,154,85,108,110,62,58,223,135, +195,55,251,220,57,36,48,74,195,160,138,235,173,9,193,3, +190,231,7,177,31,153,174,219,231,202,97,137,85,74,14,112, +28,39,73,220,86,213,248,39,142,173,196,17,149,114,3,210, +38,201,223,110,82,251,17,233,178,252,174,22,55,92,173,109, +128,221,216,54,220,174,85,7,222,238,81,195,150,234,132,155, +177,46,136,223,232,50,255,150,145,52,106,202,114,184,98,91, +115,131,209,30,78,220,88,53,228,41,86,49,185,241,105,124, +21,175,219,228,250,103,138,105,140,21,64,42,36,22,42,141, +134,114,37,178,104,239,39,160,77,154,63,205,172,86,51,152, +229,105,85,133,255,242,208,234,12,27,169,167,40,197,3,182, +103,23,185,191,137,228,91,119,194,201,24,31,192,63,124,188, +63,131,76,206,125,64,252,68,183,253,181,164,32,67,115,178, +193,127,127,8,121,128,245,88,100,244,142,7,101,95,60,123, +203,65,138,39,108,141,14,242,61,59,200,245,204,36,213,27, +23,70,79,120,26,87,69,251,62,25,238,211,226,138,107,173, +1,64,3,180,70,3,185,150,25,180,114,67,210,162,137,223, +235,2,249,149,173,242,113,250,68,187,61,173,168,208,91,28, +114,25,115,3,209,22,207,220,82,148,224,33,223,177,163,88, +205,100,214,175,81,69,246,238,3,227,55,184,236,187,103,12, +9,136,146,56,172,178,114,78,2,184,132,59,177,100,41,95, +160,187,250,220,58,20,54,73,255,102,145,219,155,10,158,245, +101,180,141,179,35,92,133,237,210,245,248,100,190,47,135,45, +214,57,49,96,97,214,164,225,83,253,114,213,178,135,30,231, +76,0,157,208,51,156,164,113,83,212,227,149,153,178,26,206, +212,208,164,236,131,231,127,49,232,225,206,45,65,73,22,246, +77,51,175,149,4,98,41,82,112,161,247,56,96,114,230,131, +242,47,26,253,229,165,149,17,50,2,71,116,202,79,104,27, +102,87,186,11,207,231,226,225,219,125,106,92,18,157,245,99, +212,129,181,91,208,178,141,190,243,70,136,9,136,147,40,174, +179,102,12,11,168,150,58,132,54,96,110,38,186,238,159,35, +6,37,92,136,61,200,248,28,62,216,255,77,32,159,178,23, +30,206,221,64,182,229,55,181,60,161,106,232,83,238,66,242, +161,251,249,104,124,23,143,223,230,210,227,152,73,168,23,42, +142,182,116,38,142,174,244,23,150,78,197,201,22,255,220,49, +164,32,66,99,176,192,107,61,1,105,146,244,109,54,189,191, +129,100,75,127,98,217,82,159,80,55,212,45,117,9,125,194, +221,88,54,212,47,85,13,127,234,89,74,22,240,45,63,169, +237,136,85,73,62,118,31,27,143,199,102,227,251,120,120,118, +151,155,151,78,198,249,16,252,224,247,191,16,116,96,239,54, +176,110,139,107,174,49,70,0,136,128,24,137,160,26,235,132, +152,129,40,139,227,46,41,207,160,146,107,156,17,33,50,96, +103,182,168,231,43,113,69,181,222,129,160,11,251,167,137,213, +75,22,243,29,57,170,209,78,78,121,8,117,64,237,84,148, +236,225,199,189,83,64,162,164,14,163,45,156,153,161,42,233, +199,172,67,99,179,240,109,62,61,175,137,196,91,53,226,73, +90,55,193,125,94,28,121,169,101,8,77,192,158,108,244,159, +23,70,78,104,24,86,81,185,55,9,252,210,215,216,34,156, +135,65,23,247,95,17,170,131,110,239,43,96,85,150,207,213, +195,150,235,148,153,176,58,202,214,248,32,254,163,195,125,91, +76,115,172,33,66,97,144,196,105,21,133,123,178,208,111,92, +25,45,227,104,72,87,228,235,118,185,122,217,98,159,51,7, +20,78,201,8,30,241,45,61,137,233,138,125,205,44,86,59, +25,229,99,244,129,247,123,80,240,165,191,177,100,40,79,162, +186,238,158,51,4,36,72,202,52,216,234,29,11,138,182,124, +166,158,166,84,7,220,206,85,193,190,110,150,187,149,44,226, +123,122,80,243,149,185,178,88,238,84,146,140,237,193,197,223, +119,194,200,8,29,193,43,62,181,47,145,77,251,47,9,205, +194,182,233,246,189,50,80,102,197,154,38,92,143,77,198,255, +112,240,230,143,51,39,20,12,233,136,92,217,44,127,171,73, +204,87,228,234,102,187,123,205,32,150,35,21,21,123,155,65, +47,119,44,41,202,240,152,110,216,91,13,98,58,98,87,178, +139,223,239,66,241,145,253,250,84,186,12,191,233,229,141,21, +67,26,34,21,22,75,157,66,19,177,55,25,252,243,199,152, +3,8,135,96,6,167,124,132,190,224,118,175,26,244,116,167, +158,164,116,3,222,230,209,211,158,74,148,209,49,190,128,119, +121,120,117,167,157,148,114,0,226,32,202,227,168,73,203,39, +234,237,10,117,69,189,94,145,168,171,235,237,9,69,67,190, +98,87,179,155,221,238,86,179,152,237,232,85,143,94,246,216, +99,140,1,0,3,48,6,3,60,198,27,48,54,3,95,246, +219,83,138,2,60,197,43,54,53,63,153,237,235,101,137,93, +202,30,120,188,55,3,92,198,221,80,182,196,39,245,29,53, +106,201,66,190,97,103,181,152,225,40,77,131,174,238,183,163, +84,13,124,218,95,73,42,54,54,15,159,238,215,163,146,109, +252,29,39,74,236,80,214,196,225,149,157,242,18,202,132,216, +129,172,203,227,171,121,205,36,214,43,17,69,115,190,1,103, +115,248,97,239,53,128,104,136,87,104,42,118,54,139,223,238, +82,243,144,233,184,93,170,30,190,220,183,196,36,197,27,54, +86,15,89,142,87,100,234,110,58,123,199,129,146,43,156,149, +97,50,229,55,180,44,163,107,252,17,231,82,224,160,206,171, +33,77,145,142,203,165,203,241,139,92,223,76,115,173,49,64, +96,132,134,96,5,151,122,135,130,38,109,159,44,247,43,81, +69,247,254,1,226,35,250,229,171,117,13,60,218,219,9,42, +179,102,13,27,170,151,46,198,63,112,124,39,143,188,214,18, +128,36,72,203,36,218,235,9,73,131,166,110,167,171,244,29, +54,90,207,65,130,167,124,133,174,226,119,187,88,253,100,181, +159,145,38,74,239,96,208,199,221,83,134,194,36,201,219,46, +90,255,65,225,151,188,230,18,227,20,136,168,152,219,136,58, +185,230,25,83,2,131,52,78,138,56,156,178,17,126,194,219, +56,58,210,87,217,58,31,134,95,244,250,71,138,43,172,149, +2,2,37,84,8,45,192,88,12,116,88,111,69,136,14,248, +157,47,194,125,88,124,117,175,29,132,122,160,242,106,74,115, +160,225,90,109,96,220,6,213,93,119,206,9,0,19,48,39, +19,124,231,143,48,23,18,15,213,78,71,233,26,124,244,191, +23,4,110,232,90,126,80,251,21,169,186,248,254,30,18,28, +229,105,84,149,253,243,196,168,5,11,187,166,29,151,74,135, +225,22,173,252,144,246,72,98,181,146,65,60,71,11,58,182, +23,23,94,207,73,2,183,116,37,190,168,247,43,80,85,245, +255,21,160,42,234,247,170,64,95,117,235,93,8,62,240,127, +31,8,191,224,117,159,28,247,72,97,133,148,66,0,129,16, +10,128,20,72,168,20,26,136,181,72,224,149,158,194,20,201, +184,30,154,156,253,224,244,143,22,119,92,41,45,128,88,136, +52,88,234,21,138,138,188,221,162,150,47,212,29,117,106,77, +2,190,228,55,183,28,165,104,192,215,252,98,214,163,145,93, +250,30,27,140,247,96,224,199,190,99,70,161,152,200,184,29, +170,154,254,220,50,148,38,65,95,118,219,91,11,2,54,100, +47,62,188,191,131,68,79,125,74,93,64,191,116,53,190,137, +231,107,113,193,245,222,4,240,9,127,227,201,88,31,68,127, +124,57,111,129,200,138,61,205,168,22,59,156,181,97,112,197, +183,246,4,162,41,222,177,161,120,201,102,254,43,67,101,210, +236,105,71,165,218,224,184,79,138,59,172,180,18,66,4,192, +8,12,209,8,47,225,76,12,93,200,63,108,188,30,147,12, +239,233,64,221,85,231,222,32,176,67,91,51,131,85,94,78, +89,8,55,96,109,22,188,237,163,229,29,21,106,139,98,62, +35,79,180,218,195,136,11,169,135,40,135,35,54,37,63,184, +253,171,68,29,93,235,15,40,159,162,23,63,222,157,97,34, +229,22,164,108,130,255,252,48,246,2,195,53,218,200,57,13, +160,26,234,148,154,128,60,201,234,62,59,206,149,192,34,173, +151,32,38,35,126,164,187,242,92,42,28,150,89,181,230,1, +211,51,155,212,127,84,184,45,171,233,204,29,69,106,46,50, +126,135,139,182,127,150,152,165,104,193,199,254,99,194,225,152, +77,232,31,46,222,190,81,102,198,170,32,95,179,139,221,207, +70,243,185,121,232,116,158,14,213,77,119,239,25,64,50,164, +39,50,109,183,172,165,3,113,23,149,127,211,200,43,45,133, +8,130,49,28,160,57,218,208,185,60,184,250,219,74,26,49, +37,49,88,225,165,156,129,32,11,243,38,137,223,234,18,251, +148,185,176,120,234,86,186,8,255,225,225,221,29,102,90,106, +17,194,3,184,135,11,183,103,21,153,187,139,204,223,101,226, +237,26,117,100,173,30,176,60,171,202,252,89,102,214,170,1, +79,243,170,73,207,103,226,233,90,125,96,253,22,149,124,227, +206,40,17,67,19,178,7,31,255,207,1,131,51,62,132,63, +240,124,47,14,188,220,179,132,44,193,75,62,115,79,17,138, +131,44,207,171,34,125,151,141,247,99,208,193,189,95,128,186, +168,254,187,66,92,65,173,86,48,168,227,106,105,67,228,194, +230,233,83,237,114,244,162,199,63,115,76,33,140,128,16,9, +176,18,75,148,210,1,184,131,75,191,99,69,145,158,203,132, +219,177,170,200,223,109,98,253,18,213,116,231,158,32,52,3, +91,182,211,87,218,10,25,133,99,50,225,119,188,40,243,99, +217,81,175,86,52,232,235,110,57,75,193,130,174,237,135,165, +87,49,186,193,111,127,41,105,192,212,204,100,213,159,87,70, +202,40,24,211,1,187,179,77,188,95,131,138,174,253,135,132, +71,113,155,85,111,94,56,57,227,65,216,7,205,223,102,210, +235,25,73,162,182,46,134,63,244,60,39,10,236,212,150,196, +100,197,159,118,86,138,9,140,211,32,170,227,110,41,75,224, +146,238,204,19,165,118,32,234,226,250,107,74,113,128,229,88, +69,228,206,38,241,95,29,106,155,98,31,51,15,149,78,195, +169,26,249,164,189,147,64,46,101,14,44,220,154,21,108,234, +126,58,90,215,193,179,191,156,180,112,98,198,162,160,79,187, +43,205,133,198,99,177,209,121,62,20,63,217,237,111,37,137, +216,154,28,252,248,119,142,8,148,81,49,182,1,119,115,217, +113,175,20,20,104,169,70,56,9,227,34,232,199,174,99,103, +177,216,233,44,29,139,139,174,255,167,128,69,89,31,71,79, +122,58,83,71,211,186,11,206,247,224,224,207,63,99,76,0, +156,192,49,157,176,51,90,196,241,148,172,224,83,255,82,209, +176,175,154,245,108,36,159,186,151,14,198,125,80,252,101,167, +189,148,48,32,98,98,226,226,234,107,107,97,192,196,204,69, +197,223,118,210,202,9,9,131,34,46,167,46,164,31,178,30, +143,204,214,245,240,228,174,39,39,61,156,185,161,104,201,71, +238,107,98,241,210,205,120,23,134,79,244,219,87,202,10,56, +149,35,19,117,119,157,57,163,64,76,69,204,78,116,217,127, +79,8,26,176,53,59,216,245,237,52,149,58,131,70,110,105, +74,116,208,239,93,1,174,226,118,171,90,252,112,247,150,129, +52,75,218,50,153,246,91,82,146,129,61,219,200,59,45,164, +24,194,16,136,160,24,203,128,154,169,172,153,195,10,43,165, +4,0,9,144,18,9,180,82,67,144,130,9,157,195,3,187, +183,13,180,91,211,130,139,189,207,128,147,57,190,144,119,88, +104,53,134,9,148,83,17,178,3,95,247,203,81,139,22,126, +204,59,36,52,10,203,164,218,227,136,73,137,7,106,175,34, +116,7,159,254,215,130,130,45,221,137,39,107,253,0,245,81, +245,246,133,178,35,94,165,233,208,221,124,118,158,11,133,71, +114,171,83,108,98,254,34,211,119,219,88,59,4,53,88,233, +37,140,137,128,27,185,166,25,215,66,131,177,30,136,188,216, +242,156,42,144,87,89,58,23,7,95,254,91,67,130,162,44, +143,171,166,61,151,8,167,97,84,133,253,210,212,232,36,159, +187,135,12,199,105,18,245,117,181,188,161,98,105,83,228,227, +246,169,114,121,114,213,179,151,28,230,88,66,148,192,33,157, +145,35,26,229,101,148,141,241,3,220,199,197,211,183,218,196, +248,5,174,235,230,185,83,72,34,180,6,3,61,214,25,49, +34,65,86,230,201,82,191,80,117,244,173,55,33,124,128,255, +248,112,254,6,147,61,255,136,113,9,116,82,207,81,130,134, +108,197,143,118,119,154,73,173,71,32,139,242,62,10,222,244, +241,246,140,34,49,87,17,187,147,77,254,127,3,200,134,252, +197,166,231,55,177,124,169,110,184,91,203,2,186,165,47,177, +77,185,15,137,143,234,183,171,212,29,116,122,79,3,170,166, +62,167,14,164,93,146,158,205,228,215,183,210,68,232,13,14, +251,172,57,195,64,138,37,76,137,12,218,185,41,232,209,206, +78,113,137,117,74,76,80,156,101,97,221,20,247,88,97,164, +132,2,33,21,16,43,145,68,107,61,0,121,144,245,121,116, +180,175,147,101,126,45,43,232,212,158,68,116,205,63,102,28, +10,153,132,123,177,224,105,95,37,235,248,88,126,84,187,29, +173,234,240,219,94,90,24,49,33,113,80,229,245,148,164,96, +67,247,242,193,250,47,10,253,196,181,213,48,166,2,102,101, +154,108,253,15,5,79,250,58,91,198,211,176,170,202,255,105, +96,213,150,199,84,195,156,74,144,145,57,186,208,127,92,56, +61,163,73,220,87,197,250,38,154,239,205,1,135,115,54,128, +111,248,89,111,70,184,8,251,161,233,217,77,110,127,42,89, +198,215,240,162,206,175,97,69,149,222,195,128,139,185,143,136, +151,105,182,181,55,16,108,225,206,44,81,75,23,226,15,58, +191,135,5,87,123,27,65,39,246,44,35,107,244,144,231,88, +65,164,198,34,161,87,56,42,211,102,203,123,42,80,86,197, +249,22,156,236,241,199,156,67,0,131,48,14,130,60,204,186, +52,62,138,223,236,114,247,146,193,60,79,138,58,188,182,19, +86,70,201,24,30,208,61,125,168,125,138,92,220,124,117,174, +13,134,123,180,176,99,90,97,161,212,8,36,81,90,7,193, +30,110,220,26,21,100,107,126,48,251,211,201,58,63,134,29, +212,122,5,162,42,238,183,162,68,15,125,206,29,64,58,36, +55,58,205,167,230,37,147,121,191,4,53,89,249,39,141,157, +194,18,169,180,24,226,16,202,128,152,137,168,155,235,142,57, +133,32,2,99,52,128,107,184,81,107,22,176,45,187,233,237, +13,5,75,186,50,95,150,219,149,234,130,251,189,40,240,83, +223,82,147,144,47,216,221,109,102,189,26,209,36,239,187,96, +124,7,143,254,246,146,194,12,73,137,6,122,173,35,96,69, +150,238,197,131,183,127,148,184,161,106,233,67,236,67,230,227, +242,233,122,125,34,221,150,215,84,226,140,10,177,5,57,155, +193,47,127,173,41,192,81,156,102,81,219,23,203,158,122,148, +178,1,126,227,203,120,27,70,87,248,43,79,165,202,224,153, +95,202,26,56,180,51,83,84,227,157,24,178,16,111,208,216, +45,108,153,78,219,41,43,225,68,140,77,192,159,124,246,158, +3,4,71,120,10,87,100,235,126,56,122,211,195,155,59,142, +148,84,96,172,6,50,45,183,40,229,3,244,71,151,251,151, +136,166,121,215,132,227,49,217,240,191,30,148,124,225,238,44, +19,107,151,160,39,59,253,165,165,17,81,50,135,23,118,78, +11,40,150,50,5,54,106,207,34,178,103,31,57,175,129,68, +75,61,66,89,16,183,81,117,246,141,51,35,84,4,237,216, +84,252,108,55,175,157,132,114,33,242,96,235,119,168,104,218, +119,201,120,30,22,93,253,111,5,137,154,186,156,190,208,118, +204,42,52,23,27,159,199,71,243,187,89,236,118,182,138,199, +109,83,237,115,228,160,198,43,49,69,49,158,129,37,91,249, +35,205,149,198,66,161,145,88,170,20,30,200,189,76,176,157, +187,130,92,205,108,86,191,89,229,230,164,131,115,63,16,125, +241,237,61,5,40,138,242,60,42,218,246,217,114,158,2,21, +85,123,31,1,47,242,124,43,78,180,216,227,140,9,129,3, +58,167,7,52,79,155,42,159,167,71,53,219,217,43,14,181, +76,161,141,152,147,8,174,241,70,140,73,128,151,120,166,150, +38,68,15,124,222,31,65,46,102,62,42,223,166,211,119,218, +72,57,5,33,26,224,53,158,136,181,73,240,151,159,214,86, +192,168,12,155,169,175,169,197,9,23,99,31,48,63,147,77, +255,111,1,201,146,190,204,182,245,54,132,46,224,95,62,90, +223,65,163,183,60,164,58,226,86,170,8,222,241,161,252,137, +102,123,123,65,225,150,172,228,19,247,86,129,184,138,218,189, +104,240,215,159,82,22,192,45,92,153,45,235,233,72,93,69, +239,126,48,250,195,203,59,43,196,20,196,104,4,151,120,167, +134,36,69,27,62,215,15,83,47,83,108,99,238,32,210,99, +153,81,43,22,52,109,187,108,189,15,129,15,250,191,11,196, +87,244,234,71,171,59,236,180,150,2,4,69,88,14,85,76, +111,108,24,94,209,169,63,169,236,152,87,72,42,52,22,11, +157,198,83,177,178,73,254,119,131,216,142,92,213,236,103,167, +185,212,56,36,50,106,199,162,162,111,191,41,229,1,212,67, +149,211,19,154,134,93,213,238,71,163,187,252,188,54,18,78, +197,200,6,253,221,37,230,41,82,113,177,245,57,116,48,239, +147,224,46,47,175,172,148,19,16,38,65,94,102,217,90,31, +64,63,116,61,63,137,237,202,117,201,124,94,30,89,173,103, +32,201,210,190,72,246,245,179,212,44,100,27,126,215,139,19, +47,214,60,97,106,100,146,238,205,3,167,119,52,168,235,234, +121,75,68,210,172,105,195,229,218,101,232,77,14,127,236,57, +70,16,136,161,8,201,129,142,235,165,137,209,11,30,247,77, +49,143,145,6,74,173,64,80,133,245,82,196,224,132,143,241, +7,156,207,193,131,191,255,132,176,1,122,163,195,124,75,78, +114,184,99,75,113,130,197,92,71,204,74,52,209,123,31,0, +63,240,125,63,12,189,200,241,141,60,211,74,11,33,6,32, +12,130,56,140,178,48,110,130,250,172,58,243,70,137,25,138, +146,60,236,186,118,30,10,157,196,115,181,176,97,122,101,163, +252,140,54,113,126,5,171,186,252,190,22,22,76,237,76,20, +221,249,39,140,141,192,19,189,246,17,242,2,203,181,202,192, +153,29,234,154,122,156,50,17,118,67,219,50,155,214,95,80, +186,5,47,251,236,57,71,0,138,160,28,139,136,158,249,164, +188,131,66,47,113,76,37,204,136,20,89,184,55,11,220,214, +213,240,166,142,167,101,21,157,251,131,200,143,109,199,173,82, +113,176,229,59,117,36,173,154,240,60,46,154,254,221,34,150, +39,85,29,127,203,73,10,55,100,45,30,184,189,171,192,93, +93,110,95,42,27,230,87,178,138,207,237,67,229,211,244,234, +70,187,57,237,160,212,11,20,87,89,59,7,5,94,234,25, +74,146,176,45,186,249,239,12,17,9,179,34,77,151,238,199, +163,179,125,188,60,179,74,205,65,134,231,116,129,254,234,82, +251,16,249,176,253,186,84,62,76,191,108,181,143,145,7,90, +175,65,68,199,252,66,214,225,177,221,184,54,26,206,213,192, +166,237,151,165,118,33,250,224,251,127,8,120,144,247,89,112, +182,135,23,119,94,9,41,130,112,12,38,120,206,23,224,46, +46,191,174,149,7,82,47,81,76,103,236,8,86,113,185,117, +41,124,144,255,217,96,190,39,7,61,222,153,33,42,225,70, +172,73,194,183,248,228,190,39,6,45,220,152,53,104,232,86, +190,72,247,229,177,213,56,38,18,110,197,138,38,125,159,13, +231,107,112,209,247,223,16,178,0,111,241,200,109,77,13,78, +250,56,123,194,209,152,46,216,223,77,98,191,50,85,54,207, +159,98,22,163,29,156,250,145,234,138,123,173,32,80,67,149, +210,3,152,135,73,151,231,87,177,186,201,238,127,35,200,196, +220,69,228,207,54,243,94,9,40,146,114,13,50,58,199,7, +242,47,27,237,231,164,129,83,59,18,85,117,255,29,33,42, +224,86,174,72,214,245,241,244,172,38,51,127,149,169,179,105, +252,21,167,90,228,240,198,142,97,5,149,90,131,128,14,233, +141,12,211,41,59,225,101,156,13,225,11,124,215,143,83,39, +210,108,105,79,36,218,234,25,75,130,178,44,174,187,230,28, +3,8,134,112,4,166,104,198,183,240,100,174,47,166,61,150, +24,165,96,64,199,244,194,198,233,17,205,242,182,138,198,125, +81,236,103,166,169,214,57,48,112,99,215,176,163,90,237,96, +212,135,213,87,214,202,1,137,147,42,142,183,100,36,143,186, +182,30,134,92,196,252,68,182,237,183,165,52,1,122,162,211, +126,74,90,48,177,115,89,112,183,151,21,118,74,75,32,146, +98,13,19,42,135,38,102,47,58,252,183,135,20,71,88,10, +21,68,107,60,16,123,145,225,59,125,164,189,146,80,44,100, +26,110,213,138,7,109,223,44,115,107,81,192,167,252,133,166, +99,119,177,249,249,108,60,31,139,143,238,247,163,208,77,124, +95,15,75,174,114,118,130,203,188,91,194,146,168,172,155,227, +14,41,141,128,18,41,180,16,99,16,192,33,156,129,33,27, +241,39,157,157,227,2,233,149,140,226,49,219,208,187,28,188, +248,243,206,8,17,1,51,50,69,55,254,141,35,35,117,20, +173,249,192,252,77,38,255,190,17,102,66,234,32,218,227,137, +89,139,6,126,237,43,100,21,158,203,133,203,179,171,220,157, +100,114,239,19,224,38,174,175,166,53,23,24,175,193,68,207, +125,66,220,64,181,213,49,182,0,103,113,216,101,237,29,4, +122,168,115,106,64,210,164,233,211,237,122,117,162,205,158,119, +68,168,12,154,185,173,168,209,75,30,115,13,49,10,193,4, +206,233,0,221,209,167,222,165,224,65,223,119,195,216,10,28, +213,105,55,165,61,144,120,169,102,56,75,195,162,170,239,175, +33,69,17,158,195,5,219,187,11,204,215,228,226,231,187,113, +108,36,158,170,149,15,210,63,89,236,119,166,136,198,121,17, +228,99,246,161,243,121,120,116,183,159,149,102,66,235,48,216, +226,157,27,130,22,108,236,30,54,92,175,77,132,223,240,178, +206,142,113,5,180,74,195,161,154,233,172,29,131,10,174,245, +6,132,77,208,159,93,230,222,34,144,71,89,27,7,71,126, +106,91,98,147,242,15,26,191,197,37,215,57,51,64,101,212, +140,101,65,221,86,215,216,35,140,133,64,3,181,86,1,184, +130,91,189,98,81,211,151,219,150,218,132,248,129,238,235,99, +233,81,204,102,244,139,87,111,90,120,49,231,17,208,34,141, +151,98,6,163,60,140,186,176,126,138,90,188,112,115,214,129, +177,27,216,182,221,182,214,6,192,13,92,219,13,107,171,96, +92,7,205,222,118,208,234,13,11,171,166,60,135,10,166,117, +22,140,237,192,213,221,118,214,138,1,13,211,42,11,231,102, +160,203,250,59,74,212,208,165,252,129,230,107,115,225,241,220, +44,116,27,95,199,203,50,187,214,29,112,58,71,7,250,174, +27,231,70,160,137,218,187,8,252,209,231,222,33,160,65,90, +39,193,92,78,92,88,61,101,41,92,144,189,249,224,252,15, +6,127,252,57,103,0,200,128,156,201,160,159,187,134,28,197, +104,6,183,124,165,174,160,87,59,26,213,101,247,189,49,96, +96,198,166,224,71,191,123,197,160,134,43,181,5,49,27,209, +39,223,189,99,64,193,148,206,192,145,157,250,146,218,140,120, +145,230,75,115,163,209,92,110,92,26,29,229,107,116,145,255, +219,64,186,37,47,185,204,185,5,40,139,226,62,43,206,180, +208,98,140,3,32,7,50,46,135,46,230,63,50,92,167,205, +148,215,80,162,132,14,225,13,28,219,137,43,171,229,12,5, +73,154,54,93,190,95,135,202,166,249,215,140,98,49,211,81, +187,22,29,252,251,71,136,11,168,151,42,134,55,116,44,47, +170,252,158,22,84,108,109,14,60,220,187,5,44,203,234,58, +123,198,145,144,42,136,215,104,34,247,54,129,126,234,90,122, +16,243,17,249,178,221,190,86,22,200,173,76,145,141,251,163, +200,205,77,71,239,122,112,242,199,155,51,14,132,92,192,188, +76,178,189,191,128,116,73,126,118,155,91,143,66,54,225,127, +60,56,251,195,201,27,47,198,60,64,122,36,179,122,205,34, +182,39,23,61,255,137,97,11,117,70,141,88,146,148,109,240, +221,63,70,28,72,185,4,57,153,225,43,125,133,173,210,113, +184,100,59,127,133,169,146,121,188,52,51,90,197,225,150,173, +244,17,246,66,195,177,154,200,188,93,162,158,174,212,23,212, +110,69,139,62,254,158,19,4,102,104,74,118,240,235,95,41, +42,240,86,143,88,150,212,101,244,141,55,99,92,0,189,208, +113,188,36,51,123,213,161,183,57,244,48,231,18,224,36,142, +171,164,29,147,10,143,229,70,165,217,208,190,76,182,253,183, +132,36,65,91,54,211,95,91,10,19,36,103,58,104,247,166, +129,87,123,26,81,37,247,56,97,98,228,130,230,109,19,237, +247,164,160,67,123,51,193,117,222,12,113,9,117,66,205,80, +150,196,101,213,157,119,66,200,0,156,193,33,159,177,39,24, +205,225,134,173,213,1,182,99,87,177,187,217,236,126,55,138, +205,204,87,229,250,100,186,111,143,41,134,49,20,32,41,210, +112,169,118,56,106,211,226,139,123,175,0,84,65,189,86,17, +184,163,75,253,67,197,211,182,202,198,249,17,236,226,246,171, +82,125,112,253,55,133,60,194,90,40,48,82,67,145,146,11, +156,215,65,178,167,31,181,110,129,203,186,59,206,148,208,32, +172,131,98,47,51,108,165,142,160,21,27,154,151,77,246,255, +19,192,38,236,143,38,119,63,25,237,227,228,137,87,107,26, +112,53,183,25,245,98,197,147,182,78,134,249,148,188,224,114, +239,18,240,36,175,187,228,60,7,10,174,244,22,134,76,196, +221,84,246,204,35,165,21,16,42,129,70,106,41,66,112,128, +231,120,65,230,230,162,227,127,57,104,241,198,141,81,3,150, +102,69,155,62,223,142,83,37,242,104,107,103,160,200,202,61, +73,232,22,190,204,183,229,52,133,58,162,86,46,72,222,116, +241,254,13,34,59,246,21,179,26,205,228,214,167,208,69,252, +79,7,235,190,56,246,18,195,20,202,136,24,153,160,59,251, +196,185,21,40,170,242,126,10,90,180,241,115,220,32,181,19, +81,54,199,31,114,30,3,13,214,122,1,226,34,234,231,170, +97,79,53,202,201,8,31,225,47,60,157,171,131,109,223,45, +99,105,80,212,229,245,149,180,98,66,227,176,200,234,61,11, +200,150,252,228,182,167,22,37,124,136,127,232,120,94,22,217, +189,111,128,217,152,62,216,254,93,34,158,166,85,23,222,207, +65,131,183,126,132,186,160,126,171,74,252,81,231,214,160,160, +75,251,35,201,213,206,70,241,153,125,234,92,26,28,245,105, +117,133,189,210,80,168,36,26,235,133,136,131,41,159,161,39, +57,221,161,167,57,213,32,167,51,116,36,175,186,244,62,6, +30,236,253,6,148,77,241,143,29,199,74,34,177,86,9,56, +146,83,29,114,27,83,7,211,62,75,206,114,176,226,75,123, +35,193,84,206,76,80,157,117,99,220,0,181,81,113,182,133, +55,115,92,33,173,144,80,40,36,18,106,133,130,34,45,151, +40,167,35,116,5,191,250,213,170,6,63,253,173,37,1,89, +146,151,93,246,222,3,128,7,120,143,7,102,111,58,120,247, +135,145,23,90,142,81,4,230,104,66,247,240,225,254,45,34, +121,214,149,241,50,204,166,244,7,150,111,213,137,55,107,220, +16,181,112,97,246,164,163,115,125,48,253,179,197,60,71,10, +42,180,22,3,28,198,89,16,182,65,119,247,153,113,42,68, +22,236,237,6,181,93,177,174,137,199,107,51,225,117,156,44, +241,75,93,67,143,114,54,130,79,252,91,71,194,170,40,223, +163,131,125,223,12,115,41,113,64,229,212,132,228,65,215,247, +211,208,170,12,159,233,167,173,149,1,50,35,87,52,235,219, +104,58,119,7,153,158,219,132,250,161,234,233,75,109,67,236, +66,246,225,243,253,56,116,50,207,151,226,6,171,189,140,176, +17,122,130,211,60,106,218,114,153,114,27,82,23,209,63,95, +140,123,160,240,74,78,113,136,101,72,77,68,222,108,113,207, +21,194,10,40,149,2,3,53,86,9,57,130,81,28,102,89, +90,23,193,63,126,156,59,129,100,74,111,96,216,70,221,89, +39,198,44,64,91,52,243,91,89,34,151,54,71,30,106,157, +2,19,53,119,25,121,163,197,28,71,72,10,52,84,43,29, +132,123,176,240,107,94,49,169,241,72,108,85,142,79,228,219, +118,218,74,25,1,35,50,100,39,190,172,183,35,84,5,253, +218,85,232,46,62,191,143,133,71,115,187,81,109,118,188,43, +195,101,218,109,105,77,4,222,232,49,207,144,146,8,172,209, +66,142,97,4,133,88,130,148,76,224,157,30,210,28,105,168, +84,26,12,245,72,101,197,156,70,80,137,53,74,200,16,156, +224,49,223,144,179,24,236,240,214,142,64,21,213,123,23,128, +47,248,221,47,70,61,88,249,37,173,153,192,58,45,166,56, +198,18,160,36,10,235,164,152,195,8,11,161,6,40,141,130, +50,45,182,56,231,2,224,5,158,235,133,137,147,43,158,181, +101,48,205,179,166,12,135,105,150,181,117,48,236,163,230,45, +19,105,183,164,37,19,121,183,133,53,83,88,35,133,20,66, +8,0,16,0,33,16,64,33,148,0,33,17,80,35,149,20, +99,24,64,49,148,33,49,81,113,183,149,53,114,72,99,164, +128,66,41,17,64,35,180,4,35,57,212,49,181,48,97,114, +228,163,246,45,50,121,247,133,177,19,88,166,213,22,198,76, +64,157,84,115,156,33,33,81,80,167,213,20,230,72,66,181, +208,97,188,5,35,59,244,53,183,24,229,96,196,135,244,71, +150,235,149,137,178,59,222,148,241,48,236,162,246,47,18,125, +245,173,53,1,120,130,215,124,98,222,34,145,87,91,26,19, +5,119,122,73,99,166,160,70,43,57,196,49,148,32,33,83, +112,163,215,60,98,90,98,145,210,11,24,151,65,55,247,29, +49,42,193,70,238,105,66,245,208,229,252,5,166,107,246,177, +243,88,104,52,150,11,149,71,83,187,19,77,246,254,3,194, +39,248,205,47,103,45,24,216,177,173,184,209,106,14,51,44, +165,10,224,21,158,202,149,201,178,191,158,148,116,96,238,38, +178,111,159,41,167,33,84,1,189,210,81,184,38,27,255,199, +129,147,59,158,148,117,112,236,39,166,45,150,57,181,32,97, +83,244,227,215,185,50,88,230,213,146,134,76,197,205,86,247, +216,97,172,5,2,43,180,20,35,24,196,113,148,164,97,83, +245,243,213,184,38,26,239,197,128,135,121,151,132,103,113,217, +117,239,28,16,56,161,99,120,65,231,246,160,226,107,123,97, +225,212,140,100,81,223,87,195,154,42,156,151,65,54,231,31, +48,62,131,79,254,123,67,192,130,172,205,131,167,127,181,168, +225,75,125,67,205,82,182,192,103,253,25,101,98,236,2,246, +101,179,253,189,36,48,75,211,162,139,255,239,0,209,17,191, +210,85,248,46,31,175,207,164,211,115,154,64,61,85,41,63, +160,125,154,92,253,108,53,143,153,134,90,165,224,64,207,117, +194,204,72,21,197,123,54,144,111,217,73,47,103,44,8,218, +176,185,250,216,122,28,50,25,247,67,209,147,159,222,214,208, +160,172,139,227,47,57,205,161,134,41,149,1,51,51,85,53, +255,153,97,42,101,6,172,204,146,181,124,160,254,170,82,127, +80,249,53,173,184,208,122,12,50,56,231,3,240,7,159,255, +199,128,131,57,159,128,55,121,252,53,167,24,196,112,132,166, +96,71,183,250,197,170,39,47,189,140,177,1,120,131,199,126, +99,202,96,152,71,73,27,38,87,62,75,207,98,178,227,95, +57,42,209,70,207,121,2,212,68,229,221,20,246,72,99,165, +144,64,40,5,2,42,164,22,34,12,134,120,132,182,96,102, +167,186,228,62,39,14,172,220,146,148,108,224,223,62,82,94, +65,169,22,56,172,179,98,76,3,172,198,50,161,118,40,106, +242,242,203,90,59,0,117,80,237,117,132,172,192,83,189,114, +81,242,135,155,183,78,132,217,144,190,200,246,253,50,212,38, +197,31,118,94,11,9,134,114,36,162,106,238,51,226,68,138, +45,204,153,4,122,169,99,104,65,198,230,224,195,255,123,64, +240,132,175,241,69,188,79,131,171,190,189,166,16,71,80,138, +5,76,203,44,90,251,1,233,147,236,238,55,163,92,140,124, +208,254,77,34,191,182,21,54,74,207,96,146,231,93,17,174, +195,102,235,123,104,112,214,135,209,23,222,206,81,129,182,106, +198,179,176,108,170,127,174,24,214,80,161,180,8,226,49,218, +192,185,29,168,186,250,222,26,16,52,97,123,116,177,255,153, +96,58,103,7,184,142,155,165,110,161,203,248,27,78,214,248, +33,238,161,194,105,25,69,99,190,32,119,51,217,245,239,20, +145,56,171,194,124,73,110,118,186,75,207,99,162,225,94,45, +104,216,86,221,120,55,134,13,212,91,21,226,11,122,183,131, +85,95,94,91,9,35,34,100,6,174,236,150,183,84,36,236, +138,118,125,58,93,167,207,180,211,82,138,0,28,193,41,30, +177,45,185,201,233,15,45,207,168,18,123,148,177,49,120,224, +247,190,0,118,97,251,116,185,126,153,106,155,99,15,49,14, +129,12,202,185,8,248,145,239,218,113,168,100,26,111,197,136, +6,121,157,37,99,121,80,245,245,181,180,32,98,99,242,224, +235,127,41,104,208,214,205,112,151,150,71,84,203,29,74,154, +48,61,178,89,255,70,145,153,187,138,220,221,100,246,175,19, +101,118,172,43,226,117,154,76,253,77,37,207,184,18,90,132, +241,16,236,224,214,175,80,85,244,239,23,161,62,168,254,186, +82,94,64,185,20,57,184,241,107,92,17,173,243,96,232,71, +174,107,230,177,210,72,40,21,2,11,180,86,3,152,134,89, +149,230,67,243,179,217,252,126,22,154,141,237,195,229,219,117, +234,76,26,61,229,41,84,17,189,243,65,248,7,143,255,230, +144,195,24,11,128,22,104,172,22,50,12,167,104,196,151,244, +102,134,171,180,29,178,26,207,196,210,165,248,193,238,111,35, +233,212,156,100,112,207,23,226,14,42,189,134,17,21,114,11, +83,38,195,126,106,90,114,145,243,27,88,182,213,55,214,12, +97,9,84,82,141,113,2,196,68,196,205,84,215,220,99,132, +129,16,11,144,22,73,188,86,19,152,167,73,213,199,215,243, +146,200,172,93,131,142,238,245,131,212,79,84,219,29,107,138, +112,28,38,89,222,87,193,186,46,158,191,197,36,199,59,50, +84,39,221,156,119,64,232,4,158,233,165,141,145,3,26,167, +69,20,207,217,2,158,229,101,149,157,243,2,200,133,204,195, +165,219,241,170,76,159,109,231,173,16,81,48,167,19,116,102, +143,58,182,22,7,92,206,93,64,190,100,55,191,157,165,98, +97,211,244,235,86,185,56,249,226,221,27,6,86,108,105,78, +52,216,235,13,9,139,162,62,175,142,180,85,50,142,135,100, +71,191,122,213,162,135,63,247,12,33,9,208,18,141,244,82, +198,192,128,141,217,131,142,239,229,129,213,91,22,210,13,121, +139,69,78,111,104,88,86,213,249,55,140,172,208,83,156,98, +17,211,19,155,150,95,212,250,5,170,171,238,189,3,64,7, +244,78,7,233,158,60,244,58,71,6,234,172,26,243,4,169, +153,200,186,61,174,152,214,88,32,180,2,67,53,210,73,57, +7,1,30,226,29,26,154,149,109,242,253,59,68,52,204,171, +36,29,155,139,143,239,231,161,209,89,62,86,31,89,175,71, +36,203,250,58,90,214,209,177,190,136,246,121,114,212,163,149, +29,242,26,75,132,210,32,168,195,106,43,99,100,128,206,232, +17,207,210,178,136,238,249,67,204,67,164,195,114,171,82,124, +96,255,54,145,126,203,74,58,49,103,17,216,163,141,157,195, +2,171,181,12,160,25,218,146,153,188,250,210,218,8,56,145, +99,27,113,39,149,28,227,8,72,145,132,107,177,193,121,31, +4,127,248,121,111,4,152,136,185,137,232,155,111,206,57,0, +112,0,231,112,192,230,236,3,231,119,176,232,235,111,41,73, +192,150,236,228,151,183,86,4,232,136,94,249,40,125,131,205, +222,119,192,232,12,31,233,175,44,149,11,147,39,95,189,107, +193,193,158,111,196,153,20,122,136,115,40,96,82,230,193,210, +175,88,213,228,231,183,177,116,40,110,178,250,207,10,51,37, +53,24,233,161,204,137,5,75,187,34,93,151,207,215,227,146, +233,188,29,162,26,238,212,146,132,108,193,207,126,115,202,65, +136,7,104,143,38,118,47,27,236,247,166,128,71,121,27,69, +103,254,40,115,99,209,208,175,92,149,236,227,231,185,81,104, +38,182,46,135,47,246,61,51,72,229,196,132,197,81,151,214, +71,208,139,29,207,202,50,185,246,25,114,18,195,21,218,138, +25,141,226,50,235,214,184,32,122,227,195,248,11,78,247,232, +97,207,53,194,72,8,21,64,43,52,20,43,153,196,123,53, +160,105,218,117,233,124,28,62,217,239,79,33,139,240,30,14, +220,220,117,228,172,6,51,61,181,41,241,65,253,87,133,250, +162,218,239,72,81,133,247,114,192,226,172,11,227,39,184,205, +171,39,45,157,136,179,41,252,145,231,90,97,160,196,10,37, +69,24,14,209,12,111,233,72,92,85,237,127,36,184,202,219, +41,42,241,70,141,89,130,150,108,228,159,54,86,14,73,140, +86,112,168,103,42,105,198,180,192,98,173,19,96,38,166,46, +166,63,182,28,167,72,196,213,212,230,196,131,181,95,144,186, +137,238,251,99,200,65,140,71,96,139,118,126,10,91,164,243, +114,200,98,188,3,67,55,242,77,59,47,133,12,194,57,24, +240,49,255,144,241,56,108,178,254,143,2,55,117,61,61,169, +233,200,93,77,110,126,58,91,199,195,178,171,222,189,96,112, +199,151,242,6,138,173,204,145,133,122,163,194,108,73,79,102, +250,106,91,99,131,240,14,14,253,204,53,197,56,6,18,44, +229,10,100,85,158,79,197,203,54,251,222,25,32,50,98,71, +178,170,207,175,99,101,145,220,235,4,153,153,171,138,253,205, +36,215,59,19,68,103,252,8,119,97,249,84,189,124,177,238, +137,67,43,51,100,37,158,168,181,11,208,23,221,254,87,130, +138,172,221,131,134,111,245,137,117,75,92,82,157,113,35,212, +4,229,89,84,246,205,51,167,20,4,104,136,86,120,40,119, +34,201,214,254,64,242,165,187,241,108,44,31,170,159,174,214, +55,208,108,109,15,44,222,186,17,110,194,250,40,122,243,195, +217,27,14,214,124,97,238,36,146,107,157,1,35,51,116,37, +191,184,245,42,68,23,252,239,7,161,31,184,190,155,198,94, +97,168,68,26,45,229,8,68,81,156,103,65,217,22,223,220, +115,132,160,0,75,177,130,73,157,71,67,187,50,93,182,223, +151,194,6,233,157,12,242,57,123,192,241,156,44,240,91,95, +66,155,48,63,146,93,253,110,21,139,155,174,222,183,192,100, +205,31,102,94,42,25,198,83,176,162,75,255,99,193,209,158, +78,212,217,53,238,136,82,57,48,113,115,213,177,183,24,228, +112,198,134,224,5,159,251,135,136,135,105,151,165,119,49,248, +225,239,61,1,104,130,246,108,34,255,182,145,118,74,74,48, +144,99,25,81,35,151,52,103,26,104,181,134,1,21,83,27, +19,7,87,126,75,75,34,178,102,15,59,174,149,6,66,45, +80,88,37,229,24,68,112,140,39,96,77,22,254,205,35,167, +53,20,40,169,194,120,9,102,114,234,67,234,35,234,229,138, +101,77,29,78,219,40,59,227,69,152,15,201,143,110,247,171, +81,77,118,254,11,67,39,242,108,43,111,164,152,194,24,9, +160,18,106,132,146,32,44,131,106,174,51,102,4,138,168,156, +155,128,62,233,238,60,19,74,135,224,6,175,253,132,180,65, +114,167,147,116,110,14,58,188,183,3,84,71,221,90,23,192, +47,124,157,47,195,109,90,125,97,237,20,148,104,161,199,56, +3,66,38,224,78,46,121,206,21,192,42,44,151,42,135,39, +118,45,59,232,245,142,4,85,89,63,71,13,90,186,17,111, +210,248,41,110,177,202,201,9,15,227,46,40,223,162,147,127, +222,24,49,32,97,82,228,225,214,173,112,81,246,199,147,179, +30,140,252,208,246,204,34,181,23,17,62,195,79,122,59,67, +69,210,174,73,199,231,242,225,250,109,42,125,134,157,212,114, +132,162,32,79,179,170,205,143,103,103,185,88,249,36,189,155, +193,46,111,175,40,212,19,149,118,67,218,34,153,215,75,18, +179,21,61,250,217,107,14,49,12,161,8,200,145,140,234,177, +203,216,27,12,246,120,99,198,160,128,75,185,3,73,151,230, +71,179,187,221,172,118,51,218,197,233,23,173,254,176,242,74, +74,49,128,97,24,69,97,158,36,117,27,93,231,207,48,147, +82,15,80,30,69,109,94,60,121,235,69,136,15,232,159,46, +214,63,81,108,103,174,40,214,51,145,116,107,94,48,185,243, +73,120,23,135,95,246,218,67,136,3,40,135,34,38,39,62, +172,191,162,84,15,92,222,93,97,174,36,22,43,157,132,115, +49,240,97,255,53,161,120,200,118,252,42,87,39,219,252,123, +70,144,136,169,137,201,139,47,239,173,0,81,17,183,83,85, +242,143,27,167,70,36,201,218,62,88,254,85,163,158,172,244, +19,214,70,193,153,30,218,156,121,160,244,10,70,117,216,109, +109,13,12,218,184,57,234,208,218,12,120,153,103,75,121,2, +213,84,231,220,0,180,65,115,183,145,117,122,76,51,172,165, +2,97,21,148,107,145,193,59,63,132,61,208,120,45,38,56, +206,147,160,46,171,239,172,17,67,18,162,5,30,235,141,8, +147,33,63,177,109,185,77,169,15,168,159,170,150,63,212,60, +101,42,108,150,190,197,38,231,63,48,124,163,207,188,83,66, +130,160,12,139,169,142,185,133,40,131,99,62,33,111,176,216, +235,12,25,137,163,42,237,135,164,71,51,187,213,45,118,57, +123,193,225,158,45,228,25,86,82,137,49,10,192,20,204,232, +20,159,216,183,204,164,213,19,150,70,69,217,30,95,204,123, +36,176,74,203,33,138,225,12,13,201,138,62,253,174,21,7, +90,174,81,70,198,232,0,223,241,163,220,141,100,83,255,83, +193,178,174,142,183,101,52,141,187,162,92,143,76,214,253,113, +228,164,134,35,53,21,57,187,193,109,95,45,107,232,80,222, +68,241,157,61,226,88,74,20,208,41,61,129,105,154,117,109, +60,28,187,137,237,203,101,203,125,74,92,80,189,117,33,252, +128,247,121,112,244,167,151,53,118,8,107,160,208,74,12,81, +8,39,96,76,6,252,204,55,229,60,4,58,168,247,42,64, +87,244,235,87,169,58,248,246,159,18,22,68,109,92,28,125, +233,109,12,29,200,187,44,188,155,195,14,107,173,0,80,1, +181,82,65,176,134,11,181,71,17,155,147,15,222,255,65,224, +135,190,231,6,161,29,152,186,153,238,218,115,136,96,24,71, +65,154,38,93,159,79,199,235,50,249,246,157,50,18,70,69, +216,14,93,205,111,102,185,90,217,32,191,179,69,60,79,139, +42,190,183,7,20,79,217,10,31,229,111,52,153,251,139,72, +159,101,103,189,24,241,32,237,147,228,110,39,171,252,156,54, +80,110,69,138,46,252,159,7,70,111,120,88,119,197,185,22, +24,172,241,66,204,65,132,199,112,131,214,110,64,219,52,251, +218,89,40,54,50,79,151,234,135,171,183,45,180,25,243,2, +201,149,206,194,177,153,248,186,94,158,88,181,228,33,215,49, +179,80,109,116,156,47,193,77,94,127,73,105,6,180,76,163, +173,156,145,32,42,227,102,168,75,234,51,234,196,154,37,108, +137,78,250,57,107,192,208,140,108,209,207,95,99,138,96,28, +7,73,158,118,85,186,15,143,239,230,177,211,88,42,20,22, +73,189,70,17,153,179,11,220,215,197,242,167,154,229,108,5, +143,250,182,154,198,92,65,172,70,50,169,247,40,96,83,246, +195,211,187,26,220,244,245,182,132,38,97,95,52,251,219,73, +42,55,38,13,158,250,149,170,130,127,253,40,117,3,221,214, +215,208,162,140,143,225,7,189,223,129,162,43,255,165,161,81, +89,54,215,31,83,14,67,44,66,122,32,243,114,201,114,190, +2,87,117,251,93,41,46,176,94,139,8,158,241,37,188,137, +227,43,121,197,165,214,33,176,65,123,55,129,125,218,92,121, +44,53,10,201,132,222,225,160,205,155,39,78,173,72,208,149, +253,242,212,170,4,31,249,175,13,133,75,178,179,95,156,122, +145,226,11,123,167,129,84,75,28,82,25,49,35,81,84,231, +221,16,182,64,103,245,152,101,104,77,6,254,236,51,231,20, +128,40,136,211,40,42,243,102,137,91,170,18,126,196,187,52, +60,170,219,238,90,115,128,225,24,77,224,158,46,212,31,85, +110,79,42,58,246,23,147,30,207,204,82,181,240,97,254,37, +163,121,220,52,245,58,69,38,238,174,50,119,22,137,189,202, +208,153,60,250,218,91,8,50,48,103,19,248,167,143,181,71, +16,139,145,14,202,189,72,240,149,191,210,84,232,44,30,187, +141,173,195,97,155,117,111,28,24,185,161,105,217,69,239,127, +32,248,194,223,121,34,212,6,197,93,86,222,73,33,135,48, +6,2,44,196,26,36,116,10,79,228,218,102,216,75,13,67, +42,34,118,38,139,254,254,18,210,4,233,153,76,250,61,43, +200,212,220,100,244,143,23,103,94,40,57,194,81,152,38,89, +223,71,195,187,58,220,182,213,54,198,14,96,29,22,91,157, +99,3,241,22,141,252,210,214,200,32,157,147,3,30,231,77, +16,159,209,39,222,173,97,65,213,214,199,208,131,156,207,192, +147,189,254,144,242,8,106,177,194,73,25,7,67,62,98,95, +50,155,215,79,82,187,17,109,242,252,43,70,53,216,233,45, +13,137,138,186,189,174,144,87,88,42,21,6,75,188,82,83, +144,163,25,221,226,151,187,150,28,228,120,70,150,232,165,143, +177,7,24,143,193,6,239,253,0,244,65,247,247,145,240,42, +78,183,232,229,143,53,71,24,10,145,4,107,185,64,121,21, +165,123,240,240,239,30,49,44,161,74,232,17,206,194,176,137, +250,187,74,220,81,165,246,32,226,99,250,97,235,117,136,108, +216,95,77,106,62,50,95,151,203,151,235,150,185,180,56,226, +82,234,0,218,161,169,217,201,46,127,175,9,196,83,180,226, +67,251,51,201,244,222,6,208,13,125,203,77,74,63,96,125, +22,157,253,227,196,137,21,75,154,50,29,182,91,215,194,131, +185,159,136,182,121,246,148,163,16,77,240,158,15,196,95,116, +250,79,11,43,166,52,6,10,172,212,18,132,100,64,207,116, +210,206,73,1,135,114,38,130,110,236,27,102,86,170,9,206, +243,160,232,203,111,107,105,64,212,196,229,213,149,246,66,194, +161,152,201,168,31,171,142,188,213,34,134,39,116,13,63,234, +221,10,22,117,125,61,45,169,200,216,29,108,250,126,27,74, +151,224,39,191,189,165,32,65,83,182,195,87,251,26,89,164, +247,50,192,102,236,11,102,119,186,73,239,103,160,201,218,63, +72,252,84,183,220,165,228,1,215,115,147,208,47,92,157,109, +227,237,24,85,96,175,54,52,46,139,238,254,51,194,68,200, +13,76,219,44,123,235,65,200,7,236,207,38,243,127,25,104, +179,230,13,19,43,151,36,103,59,120,245,167,149,21,114,10, +67,36,194,106,40,83,98,131,242,46,10,255,228,177,215,24, +34,16,70,65,152,6,89,157,103,67,249,18,221,244,247,150, +128,36,73,219,38,219,255,75,64,147,180,111,146,249,189,44, +176,91,219,2,155,181,111,144,217,185,46,152,223,201,34,191, +183,5,52,75,219,34,155,247,79,16,155,145,47,218,253,105, +100,149,158,195,4,203,185,10,216,149,237,242,245,186,68,62, +109,175,44,148,27,145,38,75,255,98,209,211,159,90,150,208, +37,252,137,103,107,121,64,245,212,165,244,1,246,99,211,241, +187,92,188,124,179,206,141,65,3,183,118,5,186,170,223,175, +66,117,209,253,127,4,184,136,251,169,104,217,71,207,123,34, +208,70,205,89,6,214,108,97,207,52,210,74,9,1,2,34, +36,6,42,172,150,50,4,38,104,206,54,240,110,15,43,174, +180,22,2,12,196,88,4,244,72,103,229,152,68,120,13,39, +106,236,18,246,68,163,189,156,176,48,106,194,242,168,106,251, +99,201,81,142,70,116,201,127,110,24,90,145,161,59,249,228, +189,23,0,46,224,94,46,88,222,85,225,190,44,182,59,215, +4,227,57,88,240,181,191,144,116,104,110,54,186,207,143,99, +39,177,92,169,44,152,219,137,42,187,231,13,17,11,147,38, +79,191,106,213,131,151,127,214,152,33,40,193,66,174,97,70, +165,216,192,188,77,162,191,190,148,54,64,110,100,154,110,221, +11,7,103,126,40,123,226,209,218,14,88,157,101,99,253,16, +245,112,229,182,164,38,35,127,180,185,243,72,104,21,134,75, +180,211,83,154,2,29,213,107,23,161,63,184,252,187,70,28, +73,169,6,56,141,163,34,109,151,172,231,35,241,85,189,126, +145,234,139,107,175,33,68,1,156,194,17,153,178,27,222,214, +209,176,174,138,247,109,48,221,179,135,28,199,72,2,181,84, +33,188,128,115,57,112,113,247,149,177,50,72,230,244,130,198, +109,81,205,119,230,136,66,57,17,97,51,244,37,183,57,245, +32,229,19,244,102,135,187,182,28,166,88,198,212,192,164,205, +147,167,94,165,232,192,223,125,98,220,2,149,85,115,158,1, +37,83,120,35,199,52,194,74,40,17,66,3,176,6,11,189, +198,17,145,50,11,214,118,193,250,46,26,255,197,161,151,57, +182,16,103,80,200,37,204,137,4,91,185,35,73,213,198,199, +241,147,220,238,84,147,156,239,192,209,157,126,210,218,9,40, +147,98,15,51,46,133,14,226,61,26,216,181,237,176,213,58, +6,22,108,237,14,52,93,187,15,141,207,226,179,251,220,56, +52,50,75,215,226,131,251,191,8,244,81,247,214,129,176,11, +218,183,201,244,223,22,210,12,105,137,68,90,45,97,72,68, +212,204,101,197,157,86,82,136,33,8,193,0,142,225,4,141, +217,130,158,237,228,149,151,82,6,192,12,76,217,12,127,233, +105,76,21,204,235,36,153,219,139,10,191,229,37,149,25,179, +2,77,213,206,71,225,155,124,254,30,19,12,231,104,64,215, +244,227,214,169,48,89,242,151,155,150,94,196,248,4,190,233, +231,173,17,65,50,166,7,54,111,159,40,183,35,85,21,255, +219,65,170,39,46,173,142,176,21,58,138,215,108,98,255,50, +209,118,207,26,50,20,39,89,220,119,197,184,6,26,173,229, +0,197,81,150,198,69,209,159,95,198,218,32,184,195,75,59, +35,69,20,206,201,0,159,241,39,156,141,225,3,253,215,133, +242,35,218,229,233,85,141,126,242,218,75,8,19,32,39,50, +108,167,174,164,23,51,30,133,109,210,253,121,100,180,142,131, +37,95,185,43,201,197,206,103,225,217,92,126,92,59,13,165, +74,224,145,222,202,16,153,176,59,218,212,249,52,188,170,211, +111,90,121,33,229,16,196,96,132,135,112,7,150,110,197,139, +54,127,158,25,165,98,96,195,246,234,66,251,49,233,240,220, +46,84,31,93,239,79,32,155,242,31,26,158,213,101,246,173, +51,97,116,132,175,240,85,190,78,151,233,183,173,180,17,114, +2,195,52,202,202,56,25,226,19,250,134,155,181,110,128,219, +184,58,218,214,217,48,190,130,87,125,122,93,35,143,180,86, +2,136,132,88,129,164,74,227,161,216,201,44,95,171,11,236, +215,166,194,103,249,89,109,102,188,10,211,37,251,249,105,108, +21,142,203,164,219,243,138,72,157,69,99,191,48,117,50,205, +183,230,4,131,57,158,144,53,120,232,119,174,8,214,113,177, +244,41,118,49,251,209,233,62,61,174,153,198,90,33,160,64, +74,37,192,72,12,85,72,47,100,28,14,217,140,127,225,232, +76,31,109,239,44,16,91,145,163,27,253,230,149,147,18,14, +196,92,68,252,76,55,237,189,4,48,9,243,34,201,215,238, +66,243,177,249,248,124,62,30,159,205,231,231,177,209,120,46, +22,62,205,175,102,53,155,217,175,78,181,201,241,143,28,215, +72,35,165,20,0,40,128,82,40,32,82,98,129,210,42,8, +215,96,163,247,60,32,122,226,211,250,10,90,181,225,113,221, +52,247,26,65,36,198,42,32,87,50,139,215,110,66,251,48, +249,242,221,58,22,22,77,253,78,21,201,187,46,156,159,193, +38,239,191,32,116,3,223,246,211,210,138,8,157,193,35,191, +181,37,48,73,243,166,137,215,107,18,241,53,189,184,241,106, +76,19,172,231,34,225,87,188,106,211,227,155,121,174,20,22, +72,173,68,16,141,241,2,204,197,196,199,245,211,212,234,4, +155,185,175,136,213,73,54,247,31,17,46,195,110,106,123,98, +209,210,143,88,151,196,103,245,153,117,106,76,18,188,229,35, +245,21,181,122,193,226,174,43,231,37,144,73,185,7,9,159, +226,23,187,158,157,228,114,231,146,224,44,15,171,174,188,151, +2,6,101,92,12,125,200,125,76,60,92,187,13,173,203,224, +155,127,206,24,16,48,33,115,112,225,247,188,32,114,99,211, +240,171,94,189,104,241,199,157,83,2,130,36,76,139,44,222, +187,1,108,195,238,106,115,227,209,216,46,92,159,77,231,239, +48,209,114,143,18,54,68,47,124,156,63,193,108,78,63,104, +253,6,149,93,243,142,9,133,67,50,163,87,60,106,219,98, +155,115,15,16,30,193,45,94,185,41,233,193,204,79,101,203, +124,90,94,81,169,55,40,236,146,246,76,34,189,150,17,52, +98,75,114,178,195,95,123,10,81,4,231,120,64,246,228,163, +247,61,48,120,227,199,184,3,74,167,224,68,143,125,198,156, +64,48,133,51,50,68,39,252,140,55,97,124,4,191,248,245, +174,4,23,121,191,5,37,91,248,51,207,148,210,0,168,129, +74,171,33,76,129,140,202,177,137,248,155,78,222,121,33,228, +0,198,97,144,197,121,23,132,111,240,217,127,78,24,24,177, +33,121,209,229,255,53,160,104,202,119,232,104,94,55,201,253, +78,20,217,185,47,136,221,200,54,253,190,21,38,74,238,112, +210,198,201,17,143,210,54,200,238,124,19,206,199,224,131,255, +255,}; diff --git a/MCUME_teensy/teensy800/pia.c b/MCUME_teensy/teensy800/pia.c new file mode 100644 index 0000000..9dfd9ce --- /dev/null +++ b/MCUME_teensy/teensy800/pia.c @@ -0,0 +1,71 @@ +#include + +#include "atari.h" +#include "cpu.h" +#include "pia.h" + +UBYTE PACTL; +UBYTE PBCTL; +UBYTE PORTA; +UBYTE PORTB; + + +static UBYTE PORTA_mask = 0xff; +static UBYTE PORTB_mask = 0xff; + +void PIA_Initialise(void) +{ + PORTA = 0xff; + PORTB = 0xff; +} + +UBYTE PIA_GetByte(UWORD addr) +{ + UBYTE byte; + + addr &= 0x03; + switch (addr) { + case _PACTL: + byte = PACTL; + break; + case _PBCTL: + byte = PBCTL; + break; + case _PORTA: + byte = Atari_PORT(0); + byte &= PORTA_mask; + break; + case _PORTB: + byte = Atari_PORT(1); + byte &= PORTB_mask; + break; + } + + return byte; +} + +int PIA_PutByte(UWORD addr, UBYTE byte) +{ + addr &= 0xff03; + + switch (addr) { + case _PACTL: + PACTL = byte; + break; + case _PBCTL: + PBCTL = byte; + break; + case _PORTA: + if (!(PACTL & 0x04)) + PORTA_mask = ~byte; + break; + case _PORTB: + // if ((byte == 0) && (machine == AtariXL || machine == AtariXE)) + // break; /* special hack for old Atari800 games like is Tapper, for example */ + if (!(PBCTL & 0x04)) + PORTB_mask = ~byte; + break; + } + + return FALSE; +} diff --git a/MCUME_teensy/teensy800/pia.h b/MCUME_teensy/teensy800/pia.h new file mode 100644 index 0000000..24080a5 --- /dev/null +++ b/MCUME_teensy/teensy800/pia.h @@ -0,0 +1,22 @@ +#ifndef __PIA__ +#define __PIA__ + +#include "atari.h" + +#define _PORTA 0x00 +#define _PORTB 0x01 +#define _PACTL 0x02 +#define _PBCTL 0x03 + +extern UBYTE PACTL; +extern UBYTE PBCTL; +extern UBYTE PORTA; +extern UBYTE PORTB; + +extern int xe_bank; + +void PIA_Initialise(void); +UBYTE PIA_GetByte(UWORD addr); +int PIA_PutByte(UWORD addr, UBYTE byte); + +#endif diff --git a/MCUME_teensy/teensy800/pokey.c b/MCUME_teensy/teensy800/pokey.c new file mode 100644 index 0000000..228580c --- /dev/null +++ b/MCUME_teensy/teensy800/pokey.c @@ -0,0 +1,699 @@ +/* + * pokey.c - POKEY sound chip emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#include "cpu.h" +#include "pokey.h" +#include "gtia.h" +#include "sio.h" +#ifdef SOUND +#include "pokeysnd.h" +#endif +#include "antic.h" + +#ifdef VOICEBOX +#include "voicebox.h" +#include "votraxsnd.h" +#endif + +#ifdef POKEY_UPDATE +void pokey_update(void); +#endif + +UBYTE POKEY_KBCODE; +UBYTE POKEY_SERIN; +UBYTE POKEY_IRQST; +UBYTE POKEY_IRQEN; +UBYTE POKEY_SKSTAT; +UBYTE POKEY_SKCTL; +int POKEY_DELAYED_SERIN_IRQ; +int POKEY_DELAYED_SEROUT_IRQ; +int POKEY_DELAYED_XMTDONE_IRQ; + +/* structures to hold the 9 pokey control bytes */ +UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ +int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +UBYTE POKEY_POT_input[8] = {228, 228, 228, 228, 228, 228, 228, 228}; +static int pot_scanline; + +#include "noise.h" +//UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +//UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +static ULONG random_scanline_counter; + +ULONG POKEY_GetRandomCounter(void) +{ + return random_scanline_counter; +} + +void POKEY_SetRandomCounter(ULONG value) +{ + random_scanline_counter = value; +} + +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects) +{ + UBYTE byte = 0xff; + +#ifdef STEREO_SOUND + if (addr & 0x0010 && POKEYSND_stereo_enabled) + return 0; +#endif + addr &= 0x0f; + if (addr < 8) { + byte = POKEY_POT_input[addr]; + if (byte <= pot_scanline) + return byte; + return pot_scanline; + } + switch (addr) { + case POKEY_OFFSET_ALLPOT: + { + int i; + for (i = 0; i < 8; i++) + if (POKEY_POT_input[i] <= pot_scanline) + byte &= ~(1 << i); /* reset bit if pot value known */ + } + break; + case POKEY_OFFSET_KBCODE: + byte = POKEY_KBCODE; + break; + case POKEY_OFFSET_RANDOM: + if ((POKEY_SKCTL & 0x03) != 0) { + int i = random_scanline_counter + ANTIC_XPOS; + if (POKEY_AUDCTL[0] & POKEY_POLY9) + byte = POKEY_poly9_lookup[i % POKEY_POLY9_SIZE]; + else { + const UBYTE *ptr; + i %= POKEY_POLY17_SIZE; + ptr = POKEY_poly17_lookup + (i >> 3); + i &= 7; + byte = (UBYTE) ((ptr[0] >> i) + (ptr[1] << (8 - i))); + } + } + break; + case POKEY_OFFSET_SERIN: + byte = POKEY_SERIN; +#ifdef DEBUG3 + printf("SERIO: SERIN read, bytevalue %02x\n", POKEY_SERIN); +#endif +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(0,byte); +#endif + break; + case POKEY_OFFSET_IRQST: + byte = POKEY_IRQST; + break; + case POKEY_OFFSET_SKSTAT: +#if SKIP + byte = POKEY_SKSTAT + (CASSETTE_IOLineStatus() << 4); +#else + byte = POKEY_SKSTAT; +#endif +#ifdef VOICEBOX + if (VOICEBOX_enabled) { + byte = POKEY_SKSTAT + (VOTRAXSND_busy << 4); + } +#endif + break; + } + + return byte; +} + +static void Update_Counter(int chan_mask); + +static int POKEY_siocheck(void) +{ + return (((POKEY_AUDF[POKEY_CHAN3] == 0x28 || POKEY_AUDF[POKEY_CHAN3] == 0x10 + || POKEY_AUDF[POKEY_CHAN3] == 0x08 || POKEY_AUDF[POKEY_CHAN3] == 0x0a) + && POKEY_AUDF[POKEY_CHAN4] == 0x00) /* intelligent peripherals speeds */ + || (POKEY_SKCTL & 0x78) == 0x28) /* cassette save mode */ + && (POKEY_AUDCTL[0] & 0x28) == 0x28; +} + +#ifndef SOUND_GAIN /* sound gain can be pre-defined in the configure/Makefile */ +#define SOUND_GAIN 4 +#endif + +#ifndef SOUND +#define POKEYSND_Update(addr, val, chip, gain) +#else +//#define POKEYSND_Update(addr, val, chip, gain) if (chip == 0) emu_sndPlaySound((chip*4)+addr, gain*16, val*16) +#endif + +void POKEY_PutByte(UWORD addr, UBYTE byte) +{ +#ifdef STEREO_SOUND + addr &= POKEYSND_stereo_enabled ? 0x1f : 0x0f; +#else + addr &= 0x0f; +#endif + switch (addr) { + case POKEY_OFFSET_AUDC1: + POKEY_AUDC[POKEY_CHAN1] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2: + POKEY_AUDC[POKEY_CHAN2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3: + POKEY_AUDC[POKEY_CHAN3] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4: + POKEY_AUDC[POKEY_CHAN4] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL: + POKEY_AUDCTL[0] = byte; + + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[0] = POKEY_DIV_15; + else + POKEY_Base_mult[0] = POKEY_DIV_64; + + Update_Counter((1 << POKEY_CHAN1) | (1 << POKEY_CHAN2) | (1 << POKEY_CHAN3) | (1 << POKEY_CHAN4)); + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1: + POKEY_AUDF[POKEY_CHAN1] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH1_CH2) ? ((1 << POKEY_CHAN2) | (1 << POKEY_CHAN1)) : (1 << POKEY_CHAN1)); + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2: + POKEY_AUDF[POKEY_CHAN2] = byte; + Update_Counter(1 << POKEY_CHAN2); + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3: + POKEY_AUDF[POKEY_CHAN3] = byte; + Update_Counter((POKEY_AUDCTL[0] & POKEY_CH3_CH4) ? ((1 << POKEY_CHAN4) | (1 << POKEY_CHAN3)) : (1 << POKEY_CHAN3)); + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4: + POKEY_AUDF[POKEY_CHAN4] = byte; + Update_Counter(1 << POKEY_CHAN4); + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 0, SOUND_GAIN); + break; + case POKEY_OFFSET_IRQEN: + POKEY_IRQEN = byte; +#ifdef DEBUG1 + printf("WR: IRQEN = %x, PC = %x\n", POKEY_IRQEN, PC); +#endif + POKEY_IRQST |= ~byte & 0xf7; /* Reset disabled IRQs except XMTDONE */ +#if SKIP + if ((~POKEY_IRQST & POKEY_IRQEN) == 0 && PBI_IRQ == 0 && PIA_IRQ == 0) +#else + if ((~POKEY_IRQST & POKEY_IRQEN) == 0) +#endif + { + CPU_IRQ = 0; + } + else { + CPU_GenerateIRQ(); + } + break; + case POKEY_OFFSET_SKRES: + POKEY_SKSTAT |= 0xe0; + break; + case POKEY_OFFSET_POTGO: + if (!(POKEY_SKCTL & 4)) + pot_scanline = 0; /* slow pot mode */ + break; + case POKEY_OFFSET_SEROUT: +#ifdef VOICEBOX + VOICEBOX_SEROUTPutByte(byte); +#endif + if ((POKEY_SKCTL & 0x70) == 0x20 && POKEY_siocheck()) + SIO_PutByte(byte); + /* check if cassette 2-tone mode has been enabled */ + if ((POKEY_SKCTL & 0x08) == 0x00) { + /* intelligent device */ + POKEY_DELAYED_SEROUT_IRQ = SIO_SEROUT_INTERVAL; + POKEY_IRQST |= 0x08; + POKEY_DELAYED_XMTDONE_IRQ = SIO_XMTDONE_INTERVAL; + } + else { + /* cassette */ + /* some savers patch the cassette baud rate, so we evaluate it here */ + /* scanlines per second*10 bit*audiofrequency/(1.79 MHz/2) */ + POKEY_DELAYED_SEROUT_IRQ = 312*50*10*(POKEY_AUDF[POKEY_CHAN3] + POKEY_AUDF[POKEY_CHAN4]*0x100)/895000; + /* safety check */ + if (POKEY_DELAYED_SEROUT_IRQ >= 3) { + POKEY_IRQST |= 0x08; + POKEY_DELAYED_XMTDONE_IRQ = 2*POKEY_DELAYED_SEROUT_IRQ - 2; + } + else { + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + } + }; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio(1, byte); +#endif + break; + case POKEY_OFFSET_STIMER: + POKEY_DivNIRQ[POKEY_CHAN1] = POKEY_DivNMax[POKEY_CHAN1]; + POKEY_DivNIRQ[POKEY_CHAN2] = POKEY_DivNMax[POKEY_CHAN2]; + POKEY_DivNIRQ[POKEY_CHAN4] = POKEY_DivNMax[POKEY_CHAN4]; + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 0, SOUND_GAIN); +#ifdef DEBUG1 + printf("WR: STIMER = %x\n", byte); +#endif + break; + case POKEY_OFFSET_SKCTL: +#ifdef VOICEBOX + VOICEBOX_SKCTLPutByte(byte); +#endif + POKEY_SKCTL = byte; + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 0, SOUND_GAIN); + if (byte & 4) + pot_scanline = 228; /* fast pot mode - return results immediately */ + if ((byte & 0x03) == 0) { + /* POKEY reset. */ + /* Stop serial IO. */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; +#if SKIP + CASSETTE_ResetPOKEY(); +#endif + /* TODO other registers should also be reset. */ + } + break; +#ifdef STEREO_SOUND + case POKEY_OFFSET_AUDC1 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC2 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC3 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDC4 + POKEY_OFFSET_POKEY2: + POKEY_AUDC[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDCTL + POKEY_OFFSET_POKEY2: + POKEY_AUDCTL[1] = byte; + /* determine the base multiplier for the 'div by n' calculations */ + if (byte & POKEY_CLOCK_15) + POKEY_Base_mult[1] = POKEY_DIV_15; + else + POKEY_Base_mult[1] = POKEY_DIV_64; + + POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF1 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN1 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF2 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN2 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF3 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN3 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_AUDF4 + POKEY_OFFSET_POKEY2: + POKEY_AUDF[POKEY_CHAN4 + POKEY_CHIP2] = byte; + POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_STIMER + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 1, SOUND_GAIN); + break; + case POKEY_OFFSET_SKCTL + POKEY_OFFSET_POKEY2: + POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 1, SOUND_GAIN); + break; +#endif + } +} + +int POKEY_Initialise(void) +{ + int i; + ULONG reg; + + /* Initialise Serial Port Interrupts */ + POKEY_DELAYED_SERIN_IRQ = 0; + POKEY_DELAYED_SEROUT_IRQ = 0; + POKEY_DELAYED_XMTDONE_IRQ = 0; + + POKEY_KBCODE = 0xff; + POKEY_SERIN = 0x00; /* or 0xff ? */ + POKEY_IRQST = 0xff; + POKEY_IRQEN = 0x00; + POKEY_SKSTAT = 0xef; + POKEY_SKCTL = 0x00; + + for (i = 0; i < (POKEY_MAXPOKEYS * 4); i++) { + POKEY_AUDC[i] = 0; + POKEY_AUDF[i] = 0; + } + + for (i = 0; i < POKEY_MAXPOKEYS; i++) { + POKEY_AUDCTL[i] = 0; + POKEY_Base_mult[i] = POKEY_DIV_64; + } + + for (i = 0; i < 4; i++) + POKEY_DivNIRQ[i] = POKEY_DivNMax[i] = 0; + + pot_scanline = 0; + +#if SKIP + /* initialise poly9_lookup */ + reg = 0x1ff; + for (i = 0; i < POKEY_POLY9_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 1) << 8) + (reg >> 1); + POKEY_poly9_lookup[i] = (UBYTE) reg; + } + /* initialise poly17_lookup */ + reg = 0x1ffff; + for (i = 0; i < POKEY_POLY17_SIZE; i++) { + reg = ((((reg >> 5) ^ reg) & 0xff) << 9) + (reg >> 8); + POKEY_poly17_lookup[i] = (UBYTE) (reg >> 1); + } +#endif + +#ifndef BASIC +#if SKIP + if (INPUT_Playingback()) { + random_scanline_counter = INPUT_PlaybackInt(); + } + else +#endif +#endif + { + random_scanline_counter = +#ifdef HAVE_WINDOWS_H + GetTickCount() % POKEY_POLY17_SIZE; +#elif defined(HAVE_TIME) + time(NULL) % POKEY_POLY17_SIZE; +#else + 0; +#endif + } +#ifndef BASIC +#if SKIP + if (INPUT_Recording()) { + INPUT_RecordInt(random_scanline_counter); + } +#endif +#endif + + return TRUE; +} + +void POKEY_Frame(void) +{ + random_scanline_counter %= (POKEY_AUDCTL[0] & POKEY_POLY9) ? POKEY_POLY9_SIZE : POKEY_POLY17_SIZE; +} + +/*************************************************************************** + ** Generate POKEY Timer IRQs if required ** + ** called on a per-scanline basis, not very precise, but good enough ** + ** for most applications ** + ***************************************************************************/ + +void POKEY_Scanline(void) +{ +#ifdef POKEY_UPDATE + pokey_update(); +#endif + +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly(); +#endif + +#ifndef BASIC + INPUT_Scanline(); /* Handle Amiga and ST mice. */ + /* It's not a part of POKEY emulation, */ + /* but it looks to be the best place to put it. */ +#endif + + /* on nonpatched i/o-operation, enable the cassette timing */ +#if SKIP + if (!ESC_enable_sio_patch) { + if (CASSETTE_AddScanLine()) + POKEY_DELAYED_SERIN_IRQ = 1; + } +#endif + if ((POKEY_SKCTL & 0x03) == 0) + /* Don't process timers when POKEY is in reset mode. */ + return; + + if (pot_scanline < 228) + pot_scanline++; + + random_scanline_counter += ANTIC_LINE_C; + + if (POKEY_DELAYED_SERIN_IRQ > 0) { + if (--POKEY_DELAYED_SERIN_IRQ == 0) { + /* Load a byte to SERIN - even when the IRQ is disabled. */ + POKEY_SERIN = SIO_GetByte(); + if (POKEY_IRQEN & 0x20) { + if (POKEY_IRQST & 0x20) { + POKEY_IRQST &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + else { + POKEY_SKSTAT &= 0xdf; +#ifdef DEBUG2 + printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN); +#endif + } + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SERIN Interrupt missed, bytevalue %02x\n", POKEY_SERIN); + } +#endif + } + } + + if (POKEY_DELAYED_SEROUT_IRQ > 0) { + if (--POKEY_DELAYED_SEROUT_IRQ == 0) { + if (POKEY_IRQEN & 0x10) { +#ifdef DEBUG2 + printf("SERIO: SEROUT Interrupt triggered\n"); +#endif + POKEY_IRQST &= 0xef; + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else { + printf("SERIO: SEROUT Interrupt missed\n"); + } +#endif + } + } + + if (POKEY_DELAYED_XMTDONE_IRQ > 0) + if (--POKEY_DELAYED_XMTDONE_IRQ == 0) { + POKEY_IRQST &= 0xf7; + if (POKEY_IRQEN & 0x08) { +#ifdef DEBUG2 + printf("SERIO: XMTDONE Interrupt triggered\n"); +#endif + CPU_GenerateIRQ(); + } +#ifdef DEBUG2 + else + printf("SERIO: XMTDONE Interrupt missed\n"); +#endif + } + + if ((POKEY_DivNIRQ[POKEY_CHAN1] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN1] += POKEY_DivNMax[POKEY_CHAN1]; + if (POKEY_IRQEN & 0x01) { + POKEY_IRQST &= 0xfe; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN2] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN2] += POKEY_DivNMax[POKEY_CHAN2]; + if (POKEY_IRQEN & 0x02) { + POKEY_IRQST &= 0xfd; + CPU_GenerateIRQ(); + } + } + + if ((POKEY_DivNIRQ[POKEY_CHAN4] -= ANTIC_LINE_C) < 0 ) { + POKEY_DivNIRQ[POKEY_CHAN4] += POKEY_DivNMax[POKEY_CHAN4]; + if (POKEY_IRQEN & 0x04) { + POKEY_IRQST &= 0xfb; + CPU_GenerateIRQ(); + } + } +} + +/*****************************************************************************/ +/* Module: Update_Counter() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has been added */ +/* here again as I need the precise frequency for the pokey timers */ +/* again. The pokey emulation is therefore somewhat sub-optimal */ +/* since the actual pokey emulation should grab the frequency values */ +/* directly from here instead of calculating them again. */ +/* */ +/* Author: Ron Fries,Thomas Richter */ +/* Date: March 27, 1998 */ +/* */ +/* Inputs: chan_mask: Channel mask, one bit per channel. */ +/* The channels that need to be updated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static void Update_Counter(int chan_mask) +{ + +/************************************************************/ +/* As defined in the manual, the exact Div_n_cnt values are */ +/* different depending on the frequency and resolution: */ +/* 64 kHz or 15 kHz - AUDF + 1 */ +/* 1 MHz, 8-bit - AUDF + 4 */ +/* 1 MHz, 16-bit - AUDF[CHAN1]+256*AUDF[CHAN2] + 7 */ +/************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN1] = POKEY_AUDF[POKEY_CHAN1] + 4; + else + POKEY_DivNMax[POKEY_CHAN1] = (POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN1] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN1] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[0] & POKEY_CH1_179) + POKEY_DivNMax[POKEY_CHAN2] = POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 7; + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN2] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN2] = ANTIC_LINE_C; + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[0] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[0] & POKEY_CH3_179) + POKEY_DivNMax[POKEY_CHAN4] = POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 7; + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 1) * POKEY_Base_mult[0]; + } + else + POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] + 1) * POKEY_Base_mult[0]; + if (POKEY_DivNMax[POKEY_CHAN4] < ANTIC_LINE_C) + POKEY_DivNMax[POKEY_CHAN4] = ANTIC_LINE_C; + } +} + +#ifndef BASIC + +void POKEY_StateSave(void) +{ + int shift_key = 0; + int keypressed = 0; + + StateSav_SaveUBYTE(&POKEY_KBCODE, 1); + StateSav_SaveUBYTE(&POKEY_IRQST, 1); + StateSav_SaveUBYTE(&POKEY_IRQEN, 1); + StateSav_SaveUBYTE(&POKEY_SKCTL, 1); + + StateSav_SaveINT(&shift_key, 1); + StateSav_SaveINT(&keypressed, 1); + StateSav_SaveINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_SaveINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_SaveUBYTE(&POKEY_AUDF[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDC[0], 4); + StateSav_SaveUBYTE(&POKEY_AUDCTL[0], 1); + + StateSav_SaveINT(&POKEY_DivNIRQ[0], 4); + StateSav_SaveINT(&POKEY_DivNMax[0], 4); + StateSav_SaveINT(&POKEY_Base_mult[0], 1); +} + +void POKEY_StateRead(void) +{ + int i; + int shift_key; + int keypressed; + + StateSav_ReadUBYTE(&POKEY_KBCODE, 1); + StateSav_ReadUBYTE(&POKEY_IRQST, 1); + StateSav_ReadUBYTE(&POKEY_IRQEN, 1); + StateSav_ReadUBYTE(&POKEY_SKCTL, 1); + + StateSav_ReadINT(&shift_key, 1); + StateSav_ReadINT(&keypressed, 1); + StateSav_ReadINT(&POKEY_DELAYED_SERIN_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_SEROUT_IRQ, 1); + StateSav_ReadINT(&POKEY_DELAYED_XMTDONE_IRQ, 1); + + StateSav_ReadUBYTE(&POKEY_AUDF[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDC[0], 4); + StateSav_ReadUBYTE(&POKEY_AUDCTL[0], 1); + for (i = 0; i < 4; i++) { + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDF1 + i * 2), POKEY_AUDF[i]); + POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDC1 + i * 2), POKEY_AUDC[i]); + } + POKEY_PutByte(POKEY_OFFSET_AUDCTL, POKEY_AUDCTL[0]); + + StateSav_ReadINT(&POKEY_DivNIRQ[0], 4); + StateSav_ReadINT(&POKEY_DivNMax[0], 4); + StateSav_ReadINT(&POKEY_Base_mult[0], 1); +} + +#endif diff --git a/MCUME_teensy/teensy800/pokey.h b/MCUME_teensy/teensy800/pokey.h new file mode 100644 index 0000000..b9a0c29 --- /dev/null +++ b/MCUME_teensy/teensy800/pokey.h @@ -0,0 +1,120 @@ +#ifndef POKEY_H_ +#define POKEY_H_ + + +#include "atari.h" + + +#define POKEY_OFFSET_AUDF1 0x00 +#define POKEY_OFFSET_AUDC1 0x01 +#define POKEY_OFFSET_AUDF2 0x02 +#define POKEY_OFFSET_AUDC2 0x03 +#define POKEY_OFFSET_AUDF3 0x04 +#define POKEY_OFFSET_AUDC3 0x05 +#define POKEY_OFFSET_AUDF4 0x06 +#define POKEY_OFFSET_AUDC4 0x07 +#define POKEY_OFFSET_AUDCTL 0x08 +#define POKEY_OFFSET_STIMER 0x09 +#define POKEY_OFFSET_SKRES 0x0a +#define POKEY_OFFSET_POTGO 0x0b +#define POKEY_OFFSET_SEROUT 0x0d +#define POKEY_OFFSET_IRQEN 0x0e +#define POKEY_OFFSET_SKCTL 0x0f + +#define POKEY_OFFSET_POT0 0x00 +#define POKEY_OFFSET_POT1 0x01 +#define POKEY_OFFSET_POT2 0x02 +#define POKEY_OFFSET_POT3 0x03 +#define POKEY_OFFSET_POT4 0x04 +#define POKEY_OFFSET_POT5 0x05 +#define POKEY_OFFSET_POT6 0x06 +#define POKEY_OFFSET_POT7 0x07 +#define POKEY_OFFSET_ALLPOT 0x08 +#define POKEY_OFFSET_KBCODE 0x09 +#define POKEY_OFFSET_RANDOM 0x0a +#define POKEY_OFFSET_SERIN 0x0d +#define POKEY_OFFSET_IRQST 0x0e +#define POKEY_OFFSET_SKSTAT 0x0f + +#define POKEY_OFFSET_POKEY2 0x10 /* offset to second pokey chip (STEREO expansion) */ + +#ifndef ASAP + +extern UBYTE POKEY_KBCODE; +extern UBYTE POKEY_IRQST; +extern UBYTE POKEY_IRQEN; +extern UBYTE POKEY_SKSTAT; +extern UBYTE POKEY_SKCTL; +extern int POKEY_DELAYED_SERIN_IRQ; +extern int POKEY_DELAYED_SEROUT_IRQ; +extern int POKEY_DELAYED_XMTDONE_IRQ; + +extern UBYTE POKEY_POT_input[8]; + +ULONG POKEY_GetRandomCounter(void); +void POKEY_SetRandomCounter(ULONG value); +UBYTE POKEY_GetByte(UWORD addr, int no_side_effects); +void POKEY_PutByte(UWORD addr, UBYTE byte); +int POKEY_Initialise(void); +void POKEY_Frame(void); +void POKEY_Scanline(void); +void POKEY_StateSave(void); +void POKEY_StateRead(void); + +#endif + +/* CONSTANT DEFINITIONS */ + +/* definitions for AUDCx (D201, D203, D205, D207) */ +#define POKEY_NOTPOLY5 0x80 /* selects POLY5 or direct CLOCK */ +#define POKEY_POLY4 0x40 /* selects POLY4 or POLY17 */ +#define POKEY_PURETONE 0x20 /* selects POLY4/17 or PURE tone */ +#define POKEY_VOL_ONLY 0x10 /* selects VOLUME OUTPUT ONLY */ +#define POKEY_VOLUME_MASK 0x0f /* volume mask */ + +/* definitions for AUDCTL (D208) */ +#define POKEY_POLY9 0x80 /* selects POLY9 or POLY17 */ +#define POKEY_CH1_179 0x40 /* selects 1.78979 MHz for Ch 1 */ +#define POKEY_CH3_179 0x20 /* selects 1.78979 MHz for Ch 3 */ +#define POKEY_CH1_CH2 0x10 /* clocks channel 1 w/channel 2 */ +#define POKEY_CH3_CH4 0x08 /* clocks channel 3 w/channel 4 */ +#define POKEY_CH1_FILTER 0x04 /* selects channel 1 high pass filter */ +#define POKEY_CH2_FILTER 0x02 /* selects channel 2 high pass filter */ +#define POKEY_CLOCK_15 0x01 /* selects 15.6999kHz or 63.9210kHz */ + +/* for accuracy, the 64kHz and 15kHz clocks are exact divisions of + the 1.79MHz clock */ +#define POKEY_DIV_64 28 /* divisor for 1.79MHz clock to 64 kHz */ +#define POKEY_DIV_15 114 /* divisor for 1.79MHz clock to 15 kHz */ + +/* the size (in entries) of the 4 polynomial tables */ +#define POKEY_POLY4_SIZE 0x000f +#define POKEY_POLY5_SIZE 0x001f +#define POKEY_POLY9_SIZE 511 //0x01ff +#define POKEY_POLY17_SIZE 16385//0x0001ffff + +#define POKEY_MAXPOKEYS 2 /* max number of emulated chips */ + +/* channel/chip definitions */ +#define POKEY_CHAN1 0 +#define POKEY_CHAN2 1 +#define POKEY_CHAN3 2 +#define POKEY_CHAN4 3 +#define POKEY_CHIP1 0 +#define POKEY_CHIP2 4 +#define POKEY_CHIP3 8 +#define POKEY_CHIP4 12 +#define POKEY_SAMPLE 127 + +/* structures to hold the 9 pokey control bytes */ +extern UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */ +extern UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */ +extern UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */ + +extern int POKEY_DivNIRQ[4], POKEY_DivNMax[4]; +extern int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */ + +extern const UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE]; +extern const UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE]; + +#endif /* POKEY_H_ */ diff --git a/MCUME_teensy/teensy800/pokeysnd.c b/MCUME_teensy/teensy800/pokeysnd.c new file mode 100644 index 0000000..0c0a7f5 --- /dev/null +++ b/MCUME_teensy/teensy800/pokeysnd.c @@ -0,0 +1,1428 @@ +/* + * pokeysnd.c - POKEY sound chip emulation, v2.4 + * + * Copyright (C) 1996-1998 Ron Fries + * Copyright (C) 1998-2014 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifdef skip +#include "config.h" +#include +#include + +#ifdef ASAP /* external project, see http://asap.sf.net */ +#include "asap_internal.h" +#else +#include "atari.h" +#ifndef __PLUS +#include "sndsave.h" +#else +#include "sound_win.h" +#endif +#endif +#include "mzpokeysnd.h" +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" +#include "util.h" +#endif + +#include "pokeysnd.h" +#if defined(PBI_XLD) || defined (VOICEBOX) +#include "votraxsnd.h" +#endif +#include "antic.h" +#include "gtia.h" + +#ifdef WORDS_UNALIGNED_OK +# define READ_U32(x) (*(ULONG *) (x)) +# define WRITE_U32(x, d) (*(ULONG *) (x) = (d)) +#else +# ifdef WORDS_BIGENDIAN +# define READ_U32(x) (((*(unsigned char *)(x)) << 24) | ((*((unsigned char *)(x) + 1)) << 16) | \ + ((*((unsigned char *)(x) + 2)) << 8) | ((*((unsigned char *)(x) + 3)))) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *) (x)) = (((i) >> 24) & 255); \ + (*((unsigned char *) (x) + 1)) = (((i) >> 16) & 255); \ + (*((unsigned char *) (x) + 2)) = (((i) >> 8) & 255); \ + (*((unsigned char *) (x) + 3)) = ((i) & 255); \ + } +# else +# define READ_U32(x) ((*(unsigned char *) (x)) | ((*((unsigned char *) (x) + 1)) << 8) | \ + ((*((unsigned char *) (x) + 2)) << 16) | ((*((unsigned char *) (x) + 3)) << 24)) +# define WRITE_U32(x, d) \ + { \ + ULONG i = d; \ + (*(unsigned char *)(x)) = ((i) & 255); \ + (*((unsigned char *)(x) + 1)) = (((i) >> 8) & 255); \ + (*((unsigned char *)(x) + 2)) = (((i) >> 16) & 255); \ + (*((unsigned char *)(x) + 3)) = (((i) >> 24) & 255); \ + } +# endif +#endif + +/* GLOBAL VARIABLE DEFINITIONS */ + +/* number of pokey chips currently emulated */ +static UBYTE Num_pokeys; + +static UBYTE pokeysnd_AUDV[4 * POKEY_MAXPOKEYS]; /* Channel volume - derived */ + +static UBYTE Outbit[4 * POKEY_MAXPOKEYS]; /* current state of the output (high or low) */ + +static UBYTE Outvol[4 * POKEY_MAXPOKEYS]; /* last output volume for each channel */ + +/* Initialize the bit patterns for the polynomials. */ + +/* The 4bit and 5bit patterns are the identical ones used in the pokey chip. */ +/* Though the patterns could be packed with 8 bits per byte, using only a */ +/* single bit per byte keeps the math simple, which is important for */ +/* efficient processing. */ + +static const UBYTE bit4[POKEY_POLY4_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0}; /* new table invented by Perry */ +#else +{1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0}; /* original POKEY 2.3 table */ +#endif + +static const UBYTE bit5[POKEY_POLY5_SIZE] = +#ifndef POKEY23_POLY +{1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0}; +#else +{0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1}; +#endif + +static ULONG P4 = 0, /* Global position pointer for the 4-bit POLY array */ + P5 = 0, /* Global position pointer for the 5-bit POLY array */ + P9 = 0, /* Global position pointer for the 9-bit POLY array */ + P17 = 0; /* Global position pointer for the 17-bit POLY array */ + +static ULONG Div_n_cnt[4 * POKEY_MAXPOKEYS], /* Divide by n counter. one for each channel */ + Div_n_max[4 * POKEY_MAXPOKEYS]; /* Divide by n maximum, one for each channel */ + +static ULONG Samp_n_max, /* Sample max. For accuracy, it is *256 */ + Samp_n_cnt[2]; /* Sample cnt. */ + +#ifdef INTERPOLATE_SOUND +#ifdef CLIP_SOUND +static SWORD last_val = 0; /* last output value */ +#else +static UWORD last_val = 0; +#endif +#ifdef STEREO_SOUND +#ifdef CLIP_SOUND +static SWORD last_val2 = 0; /* last output value */ +#else +static UWORD last_val2 = 0; +#endif +#endif +#endif + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +int POKEYSND_sampbuf_ptr = 0; /* pointer to sampbuf */ +int POKEYSND_sampbuf_rptr = 0; /* pointer to read from sampbuf */ +int POKEYSND_sampbuf_last = 0; /* last absolute time */ +int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +int POKEYSND_sampbuf_lastval = 0; /* last volume */ +int POKEYSND_sampout; /* last out volume */ +int POKEYSND_samp_freq; +int POKEYSND_samp_consol_val = 0; /* actual value of console sound */ +#ifdef STEREO_SOUND +static int sampbuf_val2[POKEYSND_SAMPBUF_MAX]; /* volume values */ +static int sampbuf_cnt2[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +static int sampbuf_ptr2 = 0; /* pointer to sampbuf */ +static int sampbuf_rptr2 = 0; /* pointer to read from sampbuf */ +static int sampbuf_last2 = 0; /* last absolute time */ +static int sampbuf_lastval2 = 0; /* last volume */ +static int sampout2; /* last out volume */ +#endif +#endif /* VOL_ONLY_SOUND */ + +static ULONG snd_freq17 = POKEYSND_FREQ_17_EXACT; +int POKEYSND_playback_freq = 44100; +UBYTE POKEYSND_num_pokeys = 1; +int POKEYSND_snd_flags = 0; +static int mz_quality = 0; /* default quality for mzpokeysnd */ +#ifdef __PLUS +int mz_clear_regs = 0; +#endif + +int POKEYSND_enable_new_pokey = TRUE; +int POKEYSND_bienias_fix = TRUE; /* when TRUE, high frequencies get emulated: better sound but slower */ +#if defined(__PLUS) && !defined(_WX_) +#define BIENIAS_FIX (g_Sound.nBieniasFix) +#else +#define BIENIAS_FIX POKEYSND_bienias_fix +#endif +#ifndef ASAP +int POKEYSND_stereo_enabled = FALSE; +#endif + +int POKEYSND_volume = 0x100; + +/* multiple sound engine interface */ +static void pokeysnd_process_8(void *sndbuffer, int sndn); +static void pokeysnd_process_16(void *sndbuffer, int sndn); +static void null_pokey_process(void *sndbuffer, int sndn) {} +void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn) = null_pokey_process; + +static void Update_pokey_sound_rf(UWORD, UBYTE, UBYTE, UBYTE); +static void null_pokey_sound(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) {} +void (*POKEYSND_Update_ptr) (UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) + = null_pokey_sound; + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data); +static void null_serio_sound(int out, UBYTE data) {} +void (*POKEYSND_UpdateSerio)(int out, UBYTE data) = null_serio_sound; +int POKEYSND_serio_sound_enabled = 1; +#endif + +#ifdef CONSOLE_SOUND +static void Update_consol_sound_rf(int set); +static void null_consol_sound(int set) {} +void (*POKEYSND_UpdateConsol_ptr)(int set) = null_consol_sound; +int POKEYSND_console_sound_enabled = 1; +#endif + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void); +static void null_vol_only_sound(void) {} +void (*POKEYSND_UpdateVolOnly)(void) = null_vol_only_sound; +#endif + +#ifdef SYNCHRONIZED_SOUND +UBYTE *POKEYSND_process_buffer = NULL; +unsigned int POKEYSND_process_buffer_length; +unsigned int POKEYSND_process_buffer_fill; +static unsigned int prev_update_tick; + +static void Generate_sync_rf(unsigned int num_ticks); +static void null_generate_sync(unsigned int num_ticks) {} +void (*POKEYSND_GenerateSync)(unsigned int num_ticks) = null_generate_sync; + +static double ticks_per_sample; +static double samp_pos; +static int speaker; +static int const CONSOLE_VOL = 32; +#endif /* SYNCHRONIZED_SOUND */ + +/*****************************************************************************/ +/* In my routines, I treat the sample output as another divide by N counter */ +/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */ +/* which has 8 binary digits to the right of the decimal point. I use a two */ +/* byte array to give me a minimum of 40 bits, and then use pointer math to */ +/* reference either the 24.8 whole/fraction combination or the 32-bit whole */ +/* only number. This is mainly used to keep the math simple for */ +/* optimization. See below: */ +/* */ +/* Representation on little-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx */ +/* fraction whole whole whole whole unused unused unused */ +/* */ +/* Samp_n_cnt[0] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+1) gives me the 32-bit whole */ +/* number only. */ +/* */ +/* Representation on big-endian machines: */ +/* xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx | xxxxxxxx xxxxxxxx xxxxxxxx.xxxxxxxx */ +/* unused unused unused whole whole whole whole fraction */ +/* */ +/* Samp_n_cnt[1] gives me a 32-bit int 24 whole bits with 8 fractional bits, */ +/* while (ULONG *)((UBYTE *)(&Samp_n_cnt[0])+3) gives me the 32-bit whole */ +/* number only. */ +/*****************************************************************************/ + + +/*****************************************************************************/ +/* Module: pokeysnd_init_rf() */ +/* Purpose: to handle the power-up initialization functions */ +/* these functions should only be executed on a cold-restart */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: freq17 - the value for the '1.79MHz' Pokey audio clock */ +/* playback_freq - the playback frequency in samples per second */ +/* num_pokeys - specifies the number of pokey chips to be emulated */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags); + +#ifdef VOL_ONLY_SOUND +/* Initialise variables related to volume-only sound. */ +static void init_vol_only(void) +{ + POKEYSND_sampbuf_rptr = POKEYSND_sampbuf_ptr; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_lastval = 0; + POKEYSND_samp_consol_val = 0; +#ifdef STEREO_SOUND + sampbuf_rptr2 = sampbuf_ptr2; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_lastval2 = 0; +#endif /* STEREO_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ + +int POKEYSND_DoInit(void) +{ +#if SKIP + SndSave_CloseSoundFile(); +#endif + +#ifdef VOL_ONLY_SOUND + init_vol_only(); +#endif /* VOL_ONLY_SOUND */ + +#if SKIP + if (POKEYSND_enable_new_pokey) + return MZPOKEYSND_Init(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags, mz_quality +#ifdef __PLUS + , mz_clear_regs +#endif + ); + else +#endif + return pokeysnd_init_rf(snd_freq17, POKEYSND_playback_freq, + POKEYSND_num_pokeys, POKEYSND_snd_flags); +} + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif +) +{ + snd_freq17 = freq17; + POKEYSND_playback_freq = playback_freq; + POKEYSND_num_pokeys = num_pokeys; + POKEYSND_snd_flags = flags; +#ifdef __PLUS + mz_clear_regs = clear_regs; +#endif +#ifdef SYNCHRONIZED_SOUND + { + /* A single call to Atari800_Frame may emulate a bit more CPU ticks than the exact number of + ticks per frame (Atari800_tv_mode*114). So we add a few ticks to buffer size just to be safe. */ + unsigned int const surplus_ticks = 10; + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + unsigned int max_ticks_per_frame = ticks_per_frame + surplus_ticks; + double ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + POKEYSND_process_buffer_length = POKEYSND_num_pokeys * (unsigned int)ceil((double)max_ticks_per_frame / ticks_per_sample) * ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2:1); + free(POKEYSND_process_buffer); + POKEYSND_process_buffer = (UBYTE *)Util_malloc(POKEYSND_process_buffer_length); + POKEYSND_process_buffer_fill = 0; + prev_update_tick = ANTIC_CPU_CLOCK; + } +#endif /* SYNCHRONIZED_SOUND */ + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Init(playback_freq, num_pokeys, (flags & POKEYSND_BIT16)); +#endif + return POKEYSND_DoInit(); +} + +void POKEYSND_SetMzQuality(int quality) /* specially for win32, perhaps not needed? */ +{ + mz_quality = quality; +} + +void POKEYSND_Process(void *sndbuffer, int sndn) +{ + POKEYSND_Process_ptr(sndbuffer, sndn); +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(sndbuffer,sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) +#if SKIP + SndSave_WriteToSoundFile((const unsigned char *)sndbuffer, sndn); +#endif +#endif +} + +#ifdef SYNCHRONIZED_SOUND +static void Update_synchronized_sound(void) +{ + POKEYSND_GenerateSync(ANTIC_CPU_CLOCK - prev_update_tick); + prev_update_tick = ANTIC_CPU_CLOCK; +} + +int POKEYSND_UpdateProcessBuffer(void) +{ + int sndn; + Update_synchronized_sound(); + sndn = POKEYSND_process_buffer_fill / ((POKEYSND_snd_flags & POKEYSND_BIT16) ? 2 : 1); + POKEYSND_process_buffer_fill = 0; + +#if defined(PBI_XLD) || defined (VOICEBOX) + VOTRAXSND_Process(POKEYSND_process_buffer, sndn); +#endif +#if !defined(__PLUS) && !defined(ASAP) + SndSave_WriteToSoundFile((const unsigned char *)POKEYSND_process_buffer, sndn); +#endif + return sndn; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +static void init_syncsound(void) +{ + double samples_per_frame = (double)POKEYSND_playback_freq/(Atari800_tv_mode == Atari800_TV_PAL ? Atari800_FPS_PAL : Atari800_FPS_NTSC); + unsigned int ticks_per_frame = Atari800_tv_mode*114; + ticks_per_sample = (double)ticks_per_frame / samples_per_frame; + samp_pos = 0.0; + POKEYSND_GenerateSync = Generate_sync_rf; + speaker = 0; +} +#endif /* SYNCHRONIZED_SOUND */ + +static int pokeysnd_init_rf(ULONG freq17, int playback_freq, + UBYTE num_pokeys, int flags) +{ + UBYTE chan; + + POKEYSND_Update_ptr = Update_pokey_sound_rf; +#ifdef SERIO_SOUND + POKEYSND_UpdateSerio = Update_serio_sound_rf; +#endif +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol_ptr = Update_consol_sound_rf; +#endif +#ifdef VOL_ONLY_SOUND + POKEYSND_UpdateVolOnly = Update_vol_only_sound_rf; +#endif + + POKEYSND_Process_ptr = (flags & POKEYSND_BIT16) ? pokeysnd_process_16 : pokeysnd_process_8; + +#ifdef VOL_ONLY_SOUND + POKEYSND_samp_freq = playback_freq; +#endif + + /* start all of the polynomial counters at zero */ + P4 = 0; + P5 = 0; + P9 = 0; + P17 = 0; + + /* calculate the sample 'divide by N' value based on the playback freq. */ + Samp_n_max = ((ULONG) freq17 << 8) / playback_freq; + + Samp_n_cnt[0] = 0; /* initialize all bits of the sample */ + Samp_n_cnt[1] = 0; /* 'divide by N' counter */ + + for (chan = 0; chan < (POKEY_MAXPOKEYS * 4); chan++) { + Outvol[chan] = 0; + Outbit[chan] = 0; + Div_n_cnt[chan] = 0; + Div_n_max[chan] = 0x7fffffffL; + pokeysnd_AUDV[chan] = 0; +#ifdef VOL_ONLY_SOUND + POKEYSND_sampbuf_AUDV[chan] = 0; +#endif + } + + /* set the number of pokey chips currently emulated */ + Num_pokeys = num_pokeys; + +#ifdef SYNCHRONIZED_SOUND + init_syncsound(); +#endif + return 0; /* OK */ +} + + +/*****************************************************************************/ +/* Module: Update_pokey_sound_rf() */ +/* Purpose: To process the latest control values stored in the AUDF, AUDC, */ +/* and AUDCTL registers. It pre-calculates as much information as */ +/* possible for better performance. This routine has not been */ +/* optimized. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: addr - the address of the parameter to be changed */ +/* val - the new value to be placed in the specified address */ +/* gain - specified as an 8-bit fixed point number - use 1 for no */ +/* amplification (output is multiplied by gain) */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain) +{ +#ifdef SYNCHRONIZED_SOUND + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_Update_ptr(addr, val, chip, gain); +} + +static void Update_pokey_sound_rf(UWORD addr, UBYTE val, UBYTE chip, + UBYTE gain) +{ + ULONG new_val = 0; + UBYTE chan; + UBYTE chan_mask; + UBYTE chip_offs; + + /* calculate the chip_offs for the channel arrays */ + chip_offs = chip << 2; + + /* determine which address was changed */ + switch (addr & 0x0f) { + case POKEY_OFFSET_AUDF1: + /* POKEY_AUDF[POKEY_CHAN1 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN1; + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) /* if ch 1&2 tied together */ + chan_mask |= 1 << POKEY_CHAN2; /* then also change on ch2 */ + break; + case POKEY_OFFSET_AUDC1: + /* POKEY_AUDC[POKEY_CHAN1 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN1 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN1; + break; + case POKEY_OFFSET_AUDF2: + /* POKEY_AUDF[POKEY_CHAN2 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDC2: + /* POKEY_AUDC[POKEY_CHAN2 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN2 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN2; + break; + case POKEY_OFFSET_AUDF3: + /* POKEY_AUDF[POKEY_CHAN3 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN3; + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) /* if ch 3&4 tied together */ + chan_mask |= 1 << POKEY_CHAN4; /* then also change on ch4 */ + break; + case POKEY_OFFSET_AUDC3: + /* POKEY_AUDC[POKEY_CHAN3 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN3 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN3; + break; + case POKEY_OFFSET_AUDF4: + /* POKEY_AUDF[POKEY_CHAN4 + chip_offs] = val; */ + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDC4: + /* POKEY_AUDC[POKEY_CHAN4 + chip_offs] = val; */ + pokeysnd_AUDV[POKEY_CHAN4 + chip_offs] = (val & POKEY_VOLUME_MASK) * gain; + chan_mask = 1 << POKEY_CHAN4; + break; + case POKEY_OFFSET_AUDCTL: + /* POKEY_AUDCTL[chip] = val; */ + chan_mask = 15; /* all channels */ + break; + default: + chan_mask = 0; + break; + } + + /************************************************************/ + /* As defined in the manual, the exact Div_n_cnt values are */ + /* different depending on the frequency and resolution: */ + /* 64 kHz or 15 kHz - AUDF + 1 */ + /* 1 MHz, 8-bit - AUDF + 4 */ + /* 1 MHz, 16-bit - POKEY_AUDF[POKEY_CHAN1]+256*POKEY_AUDF[POKEY_CHAN2] + 7 */ + /************************************************************/ + + /* only reset the channels that have changed */ + + if (chan_mask & (1 << POKEY_CHAN1)) { + /* process channel 1 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN1 + chip_offs]) { + Div_n_max[POKEY_CHAN1 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN1 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN1 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN2)) { + /* process channel 2 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH1_CH2) { + if (POKEY_AUDCTL[chip] & POKEY_CH1_179) + new_val = POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN1 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN2 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN2 + chip_offs]) { + Div_n_max[POKEY_CHAN2 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN2 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN2 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN3)) { + /* process channel 3 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 4; + else + new_val = (POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN3 + chip_offs]) { + Div_n_max[POKEY_CHAN3 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN3 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN3 + chip_offs] = new_val; + } + } + } + + if (chan_mask & (1 << POKEY_CHAN4)) { + /* process channel 4 frequency */ + if (POKEY_AUDCTL[chip] & POKEY_CH3_CH4) { + if (POKEY_AUDCTL[chip] & POKEY_CH3_179) + new_val = POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 7; + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] * 256 + + POKEY_AUDF[POKEY_CHAN3 + chip_offs] + 1) * POKEY_Base_mult[chip]; + } + else + new_val = (POKEY_AUDF[POKEY_CHAN4 + chip_offs] + 1) * POKEY_Base_mult[chip]; + + if (new_val != Div_n_max[POKEY_CHAN4 + chip_offs]) { + Div_n_max[POKEY_CHAN4 + chip_offs] = new_val; + + if (Div_n_cnt[POKEY_CHAN4 + chip_offs] > new_val) { + Div_n_cnt[POKEY_CHAN4 + chip_offs] = new_val; + } + } + } + + /* if channel is volume only, set current output */ + for (chan = POKEY_CHAN1; chan <= POKEY_CHAN4; chan++) { + if (chan_mask & (1 << chan)) { + +#ifdef VOL_ONLY_SOUND + +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + if ((POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY)) { + +#ifdef STEREO_SOUND + +#ifdef __PLUS + if (POKEYSND_stereo_enabled && chip & 0x01) +#else + if (chip & 0x01) +#endif + { + sampbuf_lastval2 += pokeysnd_AUDV[chan + chip_offs] + - POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + sampbuf_val2[sampbuf_ptr2] = sampbuf_lastval2; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + sampbuf_cnt2[sampbuf_ptr2] = + (ANTIC_CPU_CLOCK - sampbuf_last2) * 128 * POKEYSND_samp_freq / 178979; + sampbuf_last2 = ANTIC_CPU_CLOCK; + sampbuf_ptr2++; + if (sampbuf_ptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_ptr2 = 0; + if (sampbuf_ptr2 == sampbuf_rptr2) { + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + } + } + else +#endif /* STEREO_SOUND */ + { + POKEYSND_sampbuf_lastval += pokeysnd_AUDV[chan + chip_offs] + -POKEYSND_sampbuf_AUDV[chan + chip_offs]; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_AUDV[chan + chip_offs] = pokeysnd_AUDV[chan + chip_offs]; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + } + } + +#endif /* VOL_ONLY_SOUND */ + + /* I've disabled any frequencies that exceed the sampling + frequency. There isn't much point in processing frequencies + that the hardware can't reproduce. I've also disabled + processing if the volume is zero. */ + + /* if the channel is volume only */ + /* or the channel is off (volume == 0) */ + /* or the channel freq is greater than the playback freq */ + if ( (POKEY_AUDC[chan + chip_offs] & POKEY_VOL_ONLY) || + ((POKEY_AUDC[chan + chip_offs] & POKEY_VOLUME_MASK) == 0) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* indicate the channel is 'on' */ + Outvol[chan + chip_offs] = 1; + + /* can only ignore channel if filtering off */ + if ((chan == POKEY_CHAN3 && !(POKEY_AUDCTL[chip] & POKEY_CH1_FILTER)) || + (chan == POKEY_CHAN4 && !(POKEY_AUDCTL[chip] & POKEY_CH2_FILTER)) || + (chan == POKEY_CHAN1) || + (chan == POKEY_CHAN2) + || (!BIENIAS_FIX && (Div_n_max[chan + chip_offs] < (Samp_n_max >> 8))) + ) { + /* and set channel freq to max to reduce processing */ + Div_n_max[chan + chip_offs] = 0x7fffffffL; + Div_n_cnt[chan + chip_offs] = 0x7fffffffL; + } + } + } + } + + /* _enable(); */ /* RSF - removed for portability 31-MAR-97 */ +} + + +/*****************************************************************************/ +/* Module: pokeysnd_process() */ +/* Purpose: To fill the output buffer with the sound output based on the */ +/* pokey chip parameters. */ +/* */ +/* Author: Ron Fries */ +/* Date: January 1, 1997 */ +/* */ +/* Inputs: *buffer - pointer to the buffer where the audio output will */ +/* be placed */ +/* sndn - for mono, size of the playback buffer in samples */ +/* for stereo, size of the playback buffer in left samples */ +/* plus right samples. */ +/* num_pokeys - number of currently active pokeys to process */ +/* */ +/* Outputs: the buffer will be filled with n bytes of audio - no return val */ +/* Also the buffer will be written to disk if Sound recording is ON */ +/* */ +/*****************************************************************************/ + +static void pokeysnd_process_8(void *sndbuffer, int sndn) +{ + register UBYTE *buffer = (UBYTE *) sndbuffer; + register int n = sndn; + + register ULONG *div_n_ptr; + register UBYTE *samp_cnt_w_ptr; + register ULONG event_min; + register UBYTE next_event; +#ifdef CLIP_SOUND + register SWORD cur_val; /* then we have to count as 16-bit signed */ +#ifdef STEREO_SOUND + register SWORD cur_val2; +#endif +#else /* CLIP_SOUND */ + register UBYTE cur_val; /* otherwise we'll simplify as 8-bit unsigned */ +#ifdef STEREO_SOUND + register UBYTE cur_val2; +#endif +#endif /* CLIP_SOUND */ + register UBYTE *out_ptr; + register UBYTE audc; + register UBYTE toggle; + register UBYTE count; + register UBYTE *vol_ptr; + + /* set a pointer to the whole portion of the samp_n_cnt */ +#ifdef WORDS_BIGENDIAN + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 3); +#else + samp_cnt_w_ptr = ((UBYTE *) (&Samp_n_cnt[0]) + 1); +#endif + + /* set a pointer for optimization */ + out_ptr = Outvol; + vol_ptr = pokeysnd_AUDV; + + /* The current output is pre-determined and then adjusted based on each */ + /* output change for increased performance (less over-all math). */ + /* add the output values of all 4 channels */ + cur_val = POKEYSND_SAMP_MIN; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + cur_val2 = POKEYSND_SAMP_MIN; +#endif /* STEREO_SOUND */ + + count = Num_pokeys; + do { + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val += *vol_ptr; + vol_ptr++; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + count--; + if (count) { + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + + if (*out_ptr++) + cur_val2 += *vol_ptr; + vol_ptr++; + } + else + break; + } +#endif /* STEREO_SOUND */ + count--; + } while (count); + +#ifdef SYNCHRONIZED_SOUND + cur_val += speaker; +#endif + + /* loop until the buffer is filled */ + while (n) { + /* Normally the routine would simply decrement the 'div by N' */ + /* counters and react when they reach zero. Since we normally */ + /* won't be processing except once every 80 or so counts, */ + /* I've optimized by finding the smallest count and then */ + /* 'accelerated' time by adjusting all pointers by that amount. */ + + /* find next smallest event (either sample or chan 1-4) */ + next_event = POKEY_SAMPLE; + event_min = READ_U32(samp_cnt_w_ptr); + + div_n_ptr = Div_n_cnt; + + count = 0; + do { + /* Though I could have used a loop here, this is faster */ + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN1 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN2 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN3 + (count << 2); + } + div_n_ptr++; + if (*div_n_ptr <= event_min) { + event_min = *div_n_ptr; + next_event = POKEY_CHAN4 + (count << 2); + } + div_n_ptr++; + + count++; + } while (count < Num_pokeys); + + /* if the next event is a channel change */ + if (next_event != POKEY_SAMPLE) { + /* shift the polynomial counters */ + + count = Num_pokeys; + do { + /* decrement all counters by the smallest count found */ + /* again, no loop for efficiency */ + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + div_n_ptr--; + *div_n_ptr -= event_min; + + count--; + } while (count); + + + WRITE_U32(samp_cnt_w_ptr, READ_U32(samp_cnt_w_ptr) - event_min); + + /* since the polynomials require a mod (%) function which is + division, I don't adjust the polynomials on the SAMPLE events, + only the CHAN events. I have to keep track of the change, + though. */ + + P4 = (P4 + event_min) % POKEY_POLY4_SIZE; + P5 = (P5 + event_min) % POKEY_POLY5_SIZE; + P9 = (P9 + event_min) % POKEY_POLY9_SIZE; + P17 = (P17 + event_min) % POKEY_POLY17_SIZE; + + /* adjust channel counter */ + Div_n_cnt[next_event] += Div_n_max[next_event]; + + /* get the current AUDC into a register (for optimization) */ + audc = POKEY_AUDC[next_event]; + + /* set a pointer to the current output (for opt...) */ + out_ptr = &Outvol[next_event]; + + /* assume no changes to the output */ + toggle = FALSE; + + /* From here, a good understanding of the hardware is required */ + /* to understand what is happening. I won't be able to provide */ + /* much description to explain it here. */ + + /* if VOLUME only then nothing to process */ + if (!(audc & POKEY_VOL_ONLY)) { + /* if the output is pure or the output is poly5 and the poly5 bit */ + /* is set */ + if ((audc & POKEY_NOTPOLY5) || bit5[P5]) { + /* if the PURETONE bit is set */ + if (audc & POKEY_PURETONE) { + /* then simply toggle the output */ + toggle = TRUE; + } + /* otherwise if POLY4 is selected */ + else if (audc & POKEY_POLY4) { + /* then compare to the poly4 bit */ + toggle = (bit4[P4] == !(*out_ptr)); + } + else { + /* if 9-bit poly is selected on this chip */ + if (POKEY_AUDCTL[next_event >> 2] & POKEY_POLY9) { + /* compare to the poly9 bit */ + toggle = ((POKEY_poly9_lookup[P9] & 1) == !(*out_ptr)); + } + else { + /* otherwise compare to the poly17 bit */ + toggle = (((POKEY_poly17_lookup[P17 >> 3] >> (P17 & 7)) & 1) == !(*out_ptr)); + } + } + } + } + + /* check channel 1 filter (clocked by channel 3) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH1_FILTER) { + /* if we're processing channel 3 */ + if ((next_event & 0x03) == POKEY_CHAN3) { + /* check output of channel 1 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* check channel 2 filter (clocked by channel 4) */ + if ( POKEY_AUDCTL[next_event >> 2] & POKEY_CH2_FILTER) { + /* if we're processing channel 4 */ + if ((next_event & 0x03) == POKEY_CHAN4) { + /* check output of channel 2 on same chip */ + if (Outvol[next_event & 0xfd]) { + /* if on, turn it off */ + Outvol[next_event & 0xfd] = 0; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event & 0xfd]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event & 0xfd]; + } + } + } + + /* if the current output bit has changed */ + if (toggle) { + if (*out_ptr) { + /* remove this channel from the signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 -= pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val -= pokeysnd_AUDV[next_event]; + + /* and turn the output off */ + *out_ptr = 0; + } + else { + /* turn the output on */ + *out_ptr = 1; + + /* and add it to the output signal */ +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled && (next_event & 0x04)) +#else + if ((next_event & 0x04)) +#endif + cur_val2 += pokeysnd_AUDV[next_event]; + else +#endif /* STEREO_SOUND */ + cur_val += pokeysnd_AUDV[next_event]; + } + } + } + else { /* otherwise we're processing a sample */ + /* adjust the sample counter - note we're using the 24.8 integer + which includes an 8 bit fraction for accuracy */ + + int iout; +#ifdef STEREO_SOUND + int iout2; +#endif +#ifdef INTERPOLATE_SOUND + if (cur_val != last_val) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout = (cur_val * (SLONG)(*Samp_n_cnt) + + last_val * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout = (cur_val * (*Samp_n_cnt) + + last_val * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout = cur_val; + last_val = cur_val; + } + else + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (cur_val2 != last_val2) { + if (*Samp_n_cnt < Samp_n_max) { /* need interpolation */ +#ifdef CLIP_SOUND + iout2 = (cur_val2 * (SLONG)(*Samp_n_cnt) + + last_val2 * (SLONG)(Samp_n_max - *Samp_n_cnt)) + / (SLONG)Samp_n_max; +#else + iout2 = (cur_val2 * (*Samp_n_cnt) + + last_val2 * (Samp_n_max - *Samp_n_cnt)) + / Samp_n_max; +#endif + } + else + iout2 = cur_val2; + last_val2 = cur_val2; + } + else + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#else /* INTERPOLATE_SOUND */ + iout = cur_val; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + iout2 = cur_val2; +#endif /* STEREO_SOUND */ +#endif /* INTERPOLATE_SOUND */ + +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) { + int l; + if (POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] > 0) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] -= 1280; + while ((l = POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr]) <= 0) { + POKEYSND_sampout = POKEYSND_sampbuf_val[POKEYSND_sampbuf_rptr]; + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + if (POKEYSND_sampbuf_rptr != POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_rptr] += l; + else + break; + } + } + iout += POKEYSND_sampout; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + { + if (sampbuf_rptr2 != sampbuf_ptr2) { + int l; + if (sampbuf_cnt2[sampbuf_rptr2] > 0) + sampbuf_cnt2[sampbuf_rptr2] -= 1280; + while ((l = sampbuf_cnt2[sampbuf_rptr2]) <= 0) { + sampout2 = sampbuf_val2[sampbuf_rptr2]; + sampbuf_rptr2++; + if (sampbuf_rptr2 >= POKEYSND_SAMPBUF_MAX) + sampbuf_rptr2 = 0; + if (sampbuf_rptr2 != sampbuf_ptr2) + sampbuf_cnt2[sampbuf_rptr2] += l; + else + break; + } + } + iout2 += sampout2; + } +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ + +#ifdef CLIP_SOUND + if (iout > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if (iout < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) iout; + } +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) { + if (iout2 > POKEYSND_SAMP_MAX) + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; + else if (iout2 < POKEYSND_SAMP_MIN) + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; + else + *buffer++ = (UBYTE) iout2; + } +#else /* __PLUS */ + if (Num_pokeys > 1) { + if ((POKEYSND_stereo_enabled ? iout2 : iout) > POKEYSND_SAMP_MAX) { /* then check high limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MAX; /* and limit if greater */ + } + else if ((POKEYSND_stereo_enabled ? iout2 : iout) < POKEYSND_SAMP_MIN) { /* else check low limit */ + *buffer++ = (UBYTE) POKEYSND_SAMP_MIN; /* and limit if less */ + } + else { /* otherwise use raw value */ + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); + } + } +#endif /* __PLUS */ +#endif /* STEREO_SOUND */ +#else /* CLIP_SOUND */ + *buffer++ = (UBYTE) iout; /* clipping not selected, use value */ +#ifdef STEREO_SOUND + if (Num_pokeys > 1) +#ifdef ASAP + *buffer++ = (UBYTE) iout2; +#else + *buffer++ = (UBYTE) (POKEYSND_stereo_enabled ? iout2 : iout); +#endif +#endif /* STEREO_SOUND */ +#endif /* CLIP_SOUND */ + +#ifdef WORDS_BIGENDIAN + *(Samp_n_cnt + 1) += Samp_n_max; +#else + *Samp_n_cnt += Samp_n_max; +#endif + /* and indicate one less byte in the buffer */ + n--; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (Num_pokeys > 1) + n--; +#endif + } + } +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) +#endif + { + if (POKEYSND_sampbuf_rptr == POKEYSND_sampbuf_ptr) + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; +#ifdef STEREO_SOUND +#ifdef __PLUS + if (POKEYSND_stereo_enabled) +#endif + if (sampbuf_rptr2 == sampbuf_ptr2) + sampbuf_last2 = ANTIC_CPU_CLOCK; +#endif /* STEREO_SOUND */ + } +#endif /* VOL_ONLY_SOUND */ +} + +#ifdef SERIO_SOUND +static void Update_serio_sound_rf(int out, UBYTE data) +{ +#ifdef VOL_ONLY_SOUND +#ifdef __PLUS + if (g_Sound.nDigitized) { +#endif + int bits, pv, future; + if (!POKEYSND_serio_sound_enabled) return; + + pv = 0; + future = 0; + bits = (data << 1) | 0x200; + while (bits) + { + POKEYSND_sampbuf_lastval -= pv; + pv = (bits & 0x01) * pokeysnd_AUDV[3]; /* FIXME!!! - set volume from AUDV */ + POKEYSND_sampbuf_lastval += pv; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK + future-POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK + future; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX ) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr ) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } + /* 1789790/19200 = 93 */ + future += 93; /* ~ 19200 bit/s - FIXME!!! set speed form AUDF [2] ??? */ + bits >>= 1; + } + POKEYSND_sampbuf_lastval -= pv; +#ifdef __PLUS + } +#endif +#endif /* VOL_ONLY_SOUND */ +} +#endif /* SERIO_SOUND */ + +void POKEYSND_SetVolume(int vol) +{ + if (vol > 100) + vol = 100; + if (vol < 0) + vol = 0; + + POKEYSND_volume = vol * 0x100 / 100; +} + +static void pokeysnd_process_16(void *sndbuffer, int sndn) +{ + short *buffer = (UWORD *) sndbuffer; + int i; + + pokeysnd_process_8(buffer, sndn); + + for (i = sndn - 1; i >= 0; i--) { +#ifndef POKEYSND_SIGNED_SAMPLES + int smp = ((int) (((UBYTE *) buffer)[i]) - 0x80) * POKEYSND_volume; +#else + int smp = ((int) ((SBYTE *) buffer)[i]) * POKEYSND_volume; +#endif + if (smp > 32767) + smp = 32767; + else if (smp < -32768) + smp = -32768; + + buffer[i] = smp; + } + +} + +#ifdef SYNCHRONIZED_SOUND +static void Generate_sync_rf(unsigned int num_ticks) +{ + double new_samp_pos; + unsigned int ticks; + UBYTE *buffer = POKEYSND_process_buffer + POKEYSND_process_buffer_fill; + UBYTE *buffer_end = POKEYSND_process_buffer + POKEYSND_process_buffer_length; + + for (;;) { + double int_part; + new_samp_pos = samp_pos + ticks_per_sample; + new_samp_pos = modf(new_samp_pos, &int_part); + ticks = (unsigned int)int_part; + if (ticks > num_ticks) { + samp_pos -= num_ticks; + break; + } + if (buffer >= buffer_end) + break; + + samp_pos = new_samp_pos; + num_ticks -= ticks; + + if (POKEYSND_snd_flags & POKEYSND_BIT16) { + pokeysnd_process_16(buffer, POKEYSND_num_pokeys); + buffer += 2 * POKEYSND_num_pokeys; + } + else { + pokeysnd_process_8(buffer, POKEYSND_num_pokeys); + buffer += POKEYSND_num_pokeys; + } + + } + + POKEYSND_process_buffer_fill = buffer - POKEYSND_process_buffer; +} +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef CONSOLE_SOUND +void POKEYSND_UpdateConsol(int set) +{ + if (!POKEYSND_console_sound_enabled) + return; +#ifdef SYNCHRONIZED_SOUND + if (set) + Update_synchronized_sound(); +#endif /* SYNCHRONIZED_SOUND */ + POKEYSND_UpdateConsol_ptr(set); +} + +static void Update_consol_sound_rf(int set) +{ +#ifdef SYNCHRONIZED_SOUND + if (set) + speaker = CONSOLE_VOL * GTIA_speaker; +#elif defined(VOL_ONLY_SOUND) + static int prev_atari_speaker = 0; + static unsigned int prev_cpu_clock = 0; + int d; +#ifdef __PLUS + if (!g_Sound.nDigitized) + return; +#endif + + if (!set && POKEYSND_samp_consol_val == 0) + return; + POKEYSND_sampbuf_lastval -= POKEYSND_samp_consol_val; + if (prev_atari_speaker != GTIA_speaker) { + POKEYSND_samp_consol_val = GTIA_speaker * 8 * 4; /* gain */ + prev_cpu_clock = ANTIC_CPU_CLOCK; + } + else if (!set) { + d = ANTIC_CPU_CLOCK - prev_cpu_clock; + if (d < 114) { + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + return; + } + while (d >= 114 /* CPUL */) { + POKEYSND_samp_consol_val = POKEYSND_samp_consol_val * 99 / 100; + d -= 114; + } + prev_cpu_clock = ANTIC_CPU_CLOCK - d; + } + POKEYSND_sampbuf_lastval += POKEYSND_samp_consol_val; + prev_atari_speaker = GTIA_speaker; + + POKEYSND_sampbuf_val[POKEYSND_sampbuf_ptr] = POKEYSND_sampbuf_lastval; + POKEYSND_sampbuf_cnt[POKEYSND_sampbuf_ptr] = + (ANTIC_CPU_CLOCK - POKEYSND_sampbuf_last) * 128 * POKEYSND_samp_freq / 178979; + POKEYSND_sampbuf_last = ANTIC_CPU_CLOCK; + POKEYSND_sampbuf_ptr++; + if (POKEYSND_sampbuf_ptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_ptr = 0; + if (POKEYSND_sampbuf_ptr == POKEYSND_sampbuf_rptr) { + POKEYSND_sampbuf_rptr++; + if (POKEYSND_sampbuf_rptr >= POKEYSND_SAMPBUF_MAX) + POKEYSND_sampbuf_rptr = 0; + } +#endif /* !SYNCHRONIZED_SOUND && VOL_ONLY_SOUND */ +} +#endif /* CONSOLE_SOUND */ + +#ifdef VOL_ONLY_SOUND +static void Update_vol_only_sound_rf(void) +{ +#ifdef CONSOLE_SOUND + POKEYSND_UpdateConsol(0); /* mmm */ +#endif /* CONSOLE_SOUND */ +} +#endif /* VOL_ONLY_SOUND */ diff --git a/MCUME_teensy/teensy800/pokeysnd.h b/MCUME_teensy/teensy800/pokeysnd.h new file mode 100644 index 0000000..64f5cd6 --- /dev/null +++ b/MCUME_teensy/teensy800/pokeysnd.h @@ -0,0 +1,144 @@ +/*****************************************************************************/ +/* */ +/* Module: POKEY Chip Simulator Includes, V2.3 */ +/* Purpose: To emulate the sound generation hardware of the Atari POKEY chip. */ +/* Author: Ron Fries */ +/* */ +/* Revision History: */ +/* */ +/* 09/22/96 - Ron Fries - Initial Release */ +/* 04/06/97 - Brad Oliver - Some cross-platform modifications. Added */ +/* big/little endian #defines, removed , */ +/* conditional defines for TRUE/FALSE */ +/* 01/19/98 - Ron Fries - Changed signed/unsigned sample support to a */ +/* compile-time option. Defaults to unsigned - */ +/* define SIGNED_SAMPLES to create signed. */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* PokeySound is Copyright(c) 1996-1998 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ + +#ifndef POKEYSND_H_ +#define POKEYSND_H_ + +#include "atari.h" +#include "pokey.h" + +/* CONSTANT DEFINITIONS */ + +/* As an alternative to using the exact frequencies, selecting a playback + frequency that is an exact division of the main clock provides a higher + quality output due to less aliasing. For best results, a value of + 1787520 MHz is used for the main clock. With this value, both the + 64 kHz and 15 kHz clocks are evenly divisible. Selecting a playback + frequency that is also a division of the clock provides the best + results. The best options are FREQ_64 divided by either 2, 3, or 4. + The best selection is based on a trade off between performance and + sound quality. + + Of course, using a main clock frequency that is not exact will affect + the pitch of the output. With these numbers, the pitch will be low + by 0.127%. (More than likely, an actual unit will vary by this much!) */ + +#define POKEYSND_FREQ_17_EXACT 1789790 /* exact 1.79 MHz clock freq */ +#define POKEYSND_FREQ_17_APPROX 1787520 /* approximate 1.79 MHz clock freq */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef POKEYSND_SIGNED_SAMPLES /* if signed output selected */ +#define POKEYSND_SAMP_MAX 127 /* then set signed 8-bit clipping ranges */ +#define POKEYSND_SAMP_MIN -128 +#define POKEYSND_SAMP_MID 0 +#else +#define POKEYSND_SAMP_MAX 255 /* else set unsigned 8-bit clip ranges */ +#define POKEYSND_SAMP_MIN 0 +#define POKEYSND_SAMP_MID 128 +#endif + +/* init flags */ +#define POKEYSND_BIT16 1 + +extern SLONG POKEYSND_playback_freq; +extern UBYTE POKEYSND_num_pokeys; +extern int POKEYSND_snd_flags; +extern int POKEYSND_volume; + +extern int POKEYSND_enable_new_pokey; +extern int POKEYSND_stereo_enabled; +extern int POKEYSND_serio_sound_enabled; +extern int POKEYSND_console_sound_enabled; +extern int POKEYSND_bienias_fix; + +extern void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn); +extern void (*POKEYSND_Update_ptr)(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain); +extern void (*POKEYSND_UpdateSerio)(int out, UBYTE data); +extern void (*POKEYSND_UpdateConsol_ptr)(int set); +extern void (*POKEYSND_UpdateVolOnly)(void); + +int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys, + int flags +#ifdef __PLUS + , int clear_regs +#endif + ); +void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE /*chip*/, UBYTE gain); +void POKEYSND_UpdateConsol(int set); + +/* Fill sndbuffer with sndn samples of audio. Number of bytes written to + sndbuffer is sndn with 8-bit sound, and 2*sndn with 16-bit sound. sndn + must be a multiple of POKEYSND_num_pokeys. */ +void POKEYSND_Process(void *sndbuffer, int sndn); +int POKEYSND_DoInit(void); +void POKEYSND_SetMzQuality(int quality); +void POKEYSND_SetVolume(int vol); + +/* Volume only emulations declarations */ +#ifdef VOL_ONLY_SOUND + +#define POKEYSND_SAMPBUF_MAX 2000 +extern int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */ +extern int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */ +extern int POKEYSND_sampbuf_ptr; /* pointer to sampbuf */ +extern int POKEYSND_sampbuf_rptr; /* pointer to read from sampbuf */ +extern int POKEYSND_sampbuf_last; /* last absolute time */ +extern int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */ +extern int POKEYSND_sampbuf_lastval; /* last volume */ +extern int POKEYSND_sampout; /* last out volume */ +extern int POKEYSND_samp_freq; +extern int POKEYSND_samp_consol_val; /* actual value of console sound */ +#endif /* VOL_ONLY_SOUND */ + +#ifdef SYNCHRONIZED_SOUND +extern UBYTE *POKEYSND_process_buffer; +extern unsigned int POKEYSND_process_buffer_length; +extern unsigned int POKEYSND_process_buffer_fill; +extern void (*POKEYSND_GenerateSync)(unsigned int num_ticks); +int POKEYSND_UpdateProcessBuffer(void); +#endif /* SYNCHRONIZED_SOUND */ + +#ifdef __cplusplus +} + +#endif +#endif /* POKEYSND_H_ */ diff --git a/MCUME_teensy/teensy800/romatariosa.h b/MCUME_teensy/teensy800/romatariosa.h new file mode 100644 index 0000000..207cb1a --- /dev/null +++ b/MCUME_teensy/teensy800/romatariosa.h @@ -0,0 +1,642 @@ +const UBYTE PROGMEM romos[10240] = { +0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2, +0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0, +0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1, +0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18, +0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B, +0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86, +0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48, +0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65, +0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF, +0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85, +0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB, +0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03, +0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED, +0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4, +0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4, +0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20, +0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0, +0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60, +0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9, +0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82, +0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85, +0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00, +0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00, +0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20, +0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18, +0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09, +0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5, +0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4, +0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C, +0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62, +0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5, +0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0, +0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32, +0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7, +0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01, +0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5, +0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA, +0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60, +0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F, +0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4, +0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5, +0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10, +0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5, +0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90, +0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00, +0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5, +0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0, +0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7, +0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD, +0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04, +0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4, +0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5, +0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05, +0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90, +0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9, +0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4, +0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62, +0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2, +0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4, +0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94, +0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68, +0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02, +0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18, +0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60, +0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00, +0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA, +0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01, +0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0, +0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8, +0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95, +0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60, +0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5, +0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0, +0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99, +0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0, +0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F, +0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5, +0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60, +0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB, +0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA, +0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2, +0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00, +0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00, +0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60, +0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28, +0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6, +0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2, +0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1, +0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC, +0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00, +0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60, +0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1, +0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10, +0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5, +0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD, +0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20, +0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10, +0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40, +0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD, +0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94, +0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E, +0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27, +0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15, +0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40, +0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7, +0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20, +0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0, +0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0x10,0x02,0x38,0x60,0xA5,0xD4,0x85,0xE0,0x38, +0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6, +0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28, +0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20, +0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6, +0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20, +0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49, +0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05, +0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98, +0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00, +0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39, +0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64, +0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12, +0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16, +0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16, +0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29, +0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19, +0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99, +0x3F,0x78,0x53,0x98,0x16,0x34,0x98,0x16,0x34,0xFC,0xE0,0x32,0x50,0xD9,0x68,0x11, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00, +0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18, +0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03, +0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F, +0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00, +0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, +0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18, +0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18, +0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0xFB,0xF3,0x33,0xF6,0x3D,0xF6,0xA3,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0xF9, +0xF5,0xF3,0x33,0xF6,0x92,0xF5,0xB6,0xF5,0x33,0xF6,0xFB,0xFC,0x4C,0xE4,0xF3,0xF6, +0x33,0xF6,0x33,0xF6,0xE1,0xF6,0x3C,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00, +0x9E,0xEE,0xDB,0xEE,0x9D,0xEE,0xA6,0xEE,0x80,0xEE,0x9D,0xEE,0x4C,0x78,0xEE,0x00, +0x4B,0xEF,0x2A,0xF0,0xD5,0xEF,0x0F,0xF0,0x27,0xF0,0x4A,0xEF,0x4C,0x41,0xEF,0x00, +0x4C,0xEA,0xED,0x4C,0xF0,0xED,0x4C,0xC4,0xE4,0x4C,0x59,0xE9,0x4C,0x12,0xE9,0x4C, +0xD1,0xE7,0x4C,0x3E,0xE9,0x4C,0x44,0xE9,0x4C,0xF6,0xEB,0x4C,0xD5,0xE6,0x4C,0xA6, +0xE4,0x4C,0x23,0xF2,0x4C,0x1B,0xF1,0x4C,0x25,0xF1,0x4C,0xE9,0xEF,0x4C,0x5D,0xEF, +0xB3,0xE7,0xB2,0xE7,0xB2,0xE7,0xB2,0xE7,0xBE,0xFF,0x11,0xEB,0x90,0xEA,0xD1,0xEA, +0xB2,0xE7,0xB2,0xE7,0xB2,0xE7,0xF6,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xD1,0xE7,0x3E,0xE9,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xC0,0x9D, +0x46,0x03,0xA9,0xE4,0x9D,0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8, +0x60,0xA0,0x85,0x60,0x85,0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90, +0x05,0xA0,0x86,0x4C,0x1B,0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8, +0xC0,0x0C,0x90,0xF4,0xA0,0x84,0xA5,0x22,0xC9,0x03,0x90,0x25,0xA8,0xC0,0x0E,0x90, +0x02,0xA0,0x0E,0x84,0x17,0xB9,0xC6,0xE6,0xF0,0x0F,0xC9,0x02,0xF0,0x35,0xC9,0x08, +0xB0,0x4C,0xC9,0x04,0xF0,0x63,0x4C,0xC9,0xE5,0xA5,0x20,0xC9,0xFF,0xF0,0x05,0xA0, +0x81,0x4C,0x1B,0xE6,0x20,0x9E,0xE6,0xB0,0xF8,0x20,0x3D,0xE6,0xB0,0xF3,0x20,0x89, +0xE6,0xA9,0x0B,0x85,0x17,0x20,0x3D,0xE6,0xA5,0x2C,0x85,0x26,0xA5,0x2D,0x85,0x27, +0x4C,0x1D,0xE6,0xA0,0x01,0x84,0x23,0x20,0x3D,0xE6,0xB0,0x03,0x20,0x89,0xE6,0xA9, +0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27,0xA9,0xC0,0x85,0x26,0x4C,0x1D,0xE6,0xA5,0x20, +0xC9,0xFF,0xD0,0x05,0x20,0x9E,0xE6,0xB0,0xB8,0x20,0x3D,0xE6,0x20,0x89,0xE6,0xA6, +0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x83,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20, +0x89,0xE6,0x85,0x2F,0x4C,0x1D,0xE6,0x20,0x89,0xE6,0x85,0x2F,0x30,0x35,0xA0,0x00, +0x91,0x24,0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0, +0x06,0x20,0x63,0xE6,0x4C,0xC3,0xE5,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02, +0xD0,0x11,0x20,0x89,0xE6,0x85,0x2F,0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9, +0x89,0x85,0x23,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x87,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x06,0xA5, +0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F,0x20,0x89,0xE6,0x30,0x25, +0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20, +0x63,0xE6,0x4C,0x15,0xE6,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x05, +0xA9,0x9B,0x20,0x89,0xE6,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0x84,0x23,0xA4,0x2E,0xB9, +0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00,0xB5,0x20,0x99,0x40,0x03, +0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F,0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0, +0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9,0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85, +0x2D,0xA4,0x17,0xB9,0xC6,0xE6,0xA8,0xB1,0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86, +0x2C,0x18,0x60,0xC6,0x28,0xA5,0x28,0xC9,0xFF,0xD0,0x02,0xC6,0x29,0x05,0x29,0x60, +0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28,0x85, +0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0x93,0xE6,0x84,0x23, +0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0xA0,0x00, +0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x0A,0x88,0x88,0x88,0x10,0xF6, +0xA0,0x82,0x38,0xB0,0x13,0x98,0x85,0x20,0x38,0xA0,0x01,0xB1,0x24,0xE9,0x30,0xC9, +0x0A,0x90,0x02,0xA9,0x01,0x85,0x21,0x18,0x60,0x00,0x04,0x04,0x04,0x04,0x06,0x06, +0x06,0x06,0x02,0x08,0x0A,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x38,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0x8D,0x01,0xD3,0xA9,0x3C,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0x60,0x6C,0x16,0x02,0x48,0xA9,0x10,0x2C,0x0E,0xD2,0xD0,0x0D,0xA9,0xEF, +0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0C,0x02,0xA9,0x20,0x2C,0x0E,0xD2, +0xD0,0x0D,0xA9,0xDF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0A,0x02,0xA9, +0x08,0x24,0x10,0xF0,0x12,0x2C,0x0E,0xD2,0xD0,0x0D,0xA9,0xF7,0x8D,0x0E,0xD2,0xA5, +0x10,0x8D,0x0E,0xD2,0x6C,0x0E,0x02,0xAD,0x0E,0xD2,0x6A,0xB0,0x0D,0xA9,0xFE,0x8D, +0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x10,0x02,0x6A,0xB0,0x0D,0xA9,0xFD,0x8D, +0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x12,0x02,0x6A,0xB0,0x0A,0xA9,0xFB,0x8D, +0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x2C,0x0E,0xD2,0x70,0x0D,0xA9,0xBF,0x8D,0x0E, +0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x08,0x02,0x30,0x18,0xA9,0x7F,0x8D,0x0E,0xD2, +0xA5,0x10,0x8D,0x0E,0xD2,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85, +0x4D,0x68,0x40,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C,0x03, +0xD3,0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x08,0x68,0x29,0x10,0xF0,0x03,0x6C, +0x06,0x02,0x68,0x40,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02,0x48,0xAD,0x0F,0xD4, +0x29,0x20,0xF0,0x03,0x4C,0x74,0xE4,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22, +0x02,0xE6,0x14,0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE,0xA2, +0x00,0xA4,0x4D,0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F,0xA2, +0x00,0x20,0xF5,0xE8,0xD0,0x03,0x20,0xEF,0xE8,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04, +0x01,0x29,0x04,0xF0,0x03,0x4C,0x3E,0xE9,0x58,0xAD,0x0D,0xD4,0x8D,0x35,0x02,0xAD, +0x0C,0xD4,0x8D,0x34,0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02,0x8D,0x02, +0xD4,0xAD,0x2F,0x02,0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xA9,0x08,0x8D, +0x1F,0xD0,0xA2,0x08,0xBD,0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D,0x12,0xD0,0xCA,0x10, +0xF3,0xAD,0xF4,0x02,0x8D,0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01,0xD4,0xA2,0x02,0x20, +0xF5,0xE8,0xD0,0x03,0x20,0xF2,0xE8,0xA2,0x02,0xE8,0xE8,0xBD,0x18,0x02,0x1D,0x19, +0x02,0xF0,0x06,0x20,0xF5,0xE8,0x9D,0x26,0x02,0xE0,0x08,0xD0,0xEC,0xAD,0x0F,0xD2, +0x29,0x04,0xF0,0x08,0xAD,0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02,0xAD,0x2B,0x02,0xF0, +0x17,0xAD,0x0F,0xD2,0x29,0x04,0xD0,0x60,0xCE,0x2B,0x02,0xD0,0x0B,0xA9,0x06,0x8D, +0x2B,0x02,0xAD,0x09,0xD2,0x8D,0xFC,0x02,0xA0,0x01,0xA2,0x03,0xB9,0x00,0xD3,0x4A, +0x4A,0x4A,0x4A,0x9D,0x78,0x02,0xCA,0xB9,0x00,0xD3,0x29,0x0F,0x9D,0x78,0x02,0xCA, +0x88,0x10,0xE9,0xA2,0x03,0xBD,0x10,0xD0,0x9D,0x84,0x02,0xBD,0x00,0xD2,0x9D,0x70, +0x02,0xBD,0x04,0xD2,0x9D,0x74,0x02,0xCA,0x10,0xEB,0x8D,0x0B,0xD2,0xA2,0x06,0xA0, +0x03,0xB9,0x78,0x02,0x4A,0x4A,0x4A,0x9D,0x7D,0x02,0xA9,0x00,0x2A,0x9D,0x7C,0x02, +0xCA,0xCA,0x88,0x10,0xEC,0x6C,0x24,0x02,0xA9,0x00,0x8D,0x2B,0x02,0xF0,0xA9,0x6C, +0x26,0x02,0x6C,0x28,0x02,0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE, +0x19,0x02,0xDE,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9, +0xFF,0x60,0x0A,0x8D,0x2D,0x02,0xA9,0x00,0x8D,0x0E,0xD4,0x8A,0xAE,0x2D,0x02,0x9D, +0x17,0x02,0x98,0x9D,0x16,0x02,0xA9,0x40,0x8D,0x0E,0xD4,0x2C,0x0F,0xD4,0x50,0x0D, +0xA9,0xE9,0x48,0xA9,0x3D,0x48,0x08,0x48,0x48,0x48,0x6C,0x22,0x02,0x60,0x68,0xA8, +0x68,0xAA,0x68,0x40,0xA9,0x3C,0x8D,0x02,0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03, +0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2,0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85, +0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03,0x4C,0x84,0xEB,0xA9,0x00,0x8D,0x0F,0x03, +0xA9,0x01,0x85,0x37,0xA9,0x0D,0x85,0x36,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D, +0x06,0xD2,0x18,0xAD,0x00,0x03,0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02, +0x03,0x8D,0x3B,0x02,0xAD,0x0A,0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02, +0x18,0xA9,0x3A,0x85,0x32,0x69,0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9, +0x34,0x8D,0x03,0xD3,0x20,0x8E,0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x07,0xC6, +0x36,0x10,0xB5,0x4C,0x06,0xEA,0xAD,0x03,0x03,0x10,0x0C,0xA9,0x0D,0x85,0x36,0x20, +0x6E,0xEB,0x20,0x8E,0xEC,0xF0,0xE8,0x20,0x79,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20, +0x9F,0xEC,0xF0,0x12,0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1D, +0x20,0x6E,0xEB,0x20,0xE2,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30, +0xA5,0x30,0xC9,0x01,0xF0,0x07,0xC6,0x37,0x30,0x03,0x4C,0x74,0xE9,0x20,0x63,0xEC, +0xA9,0x00,0x85,0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18, +0xA9,0x3E,0x85,0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF, +0x85,0x3C,0x20,0xE2,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02, +0xC9,0x41,0xF0,0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30, +0xD0,0x04,0xA9,0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F, +0x02,0xD0,0x02,0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20, +0xF6,0xEB,0xA0,0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85, +0x31,0xA5,0x11,0xD0,0x03,0x4C,0xA4,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x63,0xEC,0x60, +0x98,0x48,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x33,0xC5,0x35,0x90,0x22,0xA5,0x32, +0xC5,0x34,0x90,0x1C,0xA5,0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85, +0x3B,0xD0,0x09,0xA5,0x10,0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40, +0xA0,0x00,0xB1,0x32,0x8D,0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xBC, +0xEA,0xA5,0x3B,0xF0,0x0B,0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2, +0x68,0x40,0xA9,0x00,0xAC,0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9, +0x01,0x85,0x30,0x20,0x1F,0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C, +0xA4,0xED,0xAD,0x17,0x03,0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30, +0x60,0x98,0x48,0xAD,0x0F,0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29, +0x20,0xD0,0x04,0xA0,0x8E,0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31, +0xF0,0x04,0xA0,0x8F,0x84,0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D, +0xD2,0xA0,0x00,0x91,0x32,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02, +0xE6,0x33,0xA5,0x33,0xC5,0x35,0x90,0xE2,0xA5,0x32,0xC5,0x34,0x90,0xDC,0xA5,0x3C, +0xF0,0x06,0xA9,0x00,0x85,0x3C,0xF0,0xCE,0xA9,0xFF,0x85,0x38,0xD0,0xCC,0x18,0xAD, +0x04,0x03,0x85,0x32,0x6D,0x08,0x03,0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09, +0x03,0x85,0x35,0x60,0xAD,0x03,0x03,0x10,0x2E,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05, +0x8D,0x06,0xD2,0x20,0xF6,0xEB,0xA0,0x0D,0xAD,0x0B,0x03,0x30,0x02,0xA0,0x96,0xA2, +0x00,0x20,0xBD,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x6E, +0xEB,0x20,0x6B,0xEA,0x4C,0xE3,0xEB,0xA9,0xFF,0x8D,0x0F,0x03,0xA0,0x08,0xAD,0x0B, +0x03,0x30,0x02,0xA0,0x64,0xA2,0x00,0x20,0xBD,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD, +0x17,0x03,0xD0,0xFB,0x20,0x6E,0xEB,0x20,0x79,0xEC,0x20,0xBD,0xED,0x20,0x14,0xED, +0x20,0xE2,0xEA,0xAD,0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x0D,0xEA, +0xA9,0x00,0x8D,0x17,0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00,0x03, +0xC0,0x60,0xD0,0x0C,0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00,0xD2, +0x8D,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x35,0xEC,0xA9, +0x07,0x2D,0x32,0x02,0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2,0xA9, +0xC7,0x25,0x10,0x09,0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA2, +0x06,0xA9,0xA8,0xA4,0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9, +0xA9,0xA0,0x8D,0x05,0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2,0x8D, +0x03,0xD2,0x60,0xEA,0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06,0xA9, +0x00,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8,0x29, +0x3F,0xAA,0x98,0x6A,0x29,0xC0,0xA8,0x60,0x11,0xEB,0x90,0xEA,0xD1,0xEA,0xA2,0x01, +0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x20,0x6B,0xEA,0xA0,0x02,0xA2,0x00,0x20, +0xBD,0xED,0x20,0x1A,0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x08,0xED, +0x8D,0x10,0x03,0xAD,0x0C,0x03,0x20,0x08,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03,0x38, +0xED,0x0C,0x03,0x8D,0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA9,0x64, +0x18,0x69,0x9C,0x88,0x10,0xFA,0x18,0x6D,0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38, +0xE9,0x16,0xAA,0x98,0x29,0x07,0xA8,0xA9,0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0, +0x00,0x8C,0x0E,0x03,0x38,0xE9,0x07,0x10,0x03,0xCE,0x0E,0x03,0x18,0x7D,0xD2,0xED, +0xA8,0xAD,0x0E,0x03,0x7D,0xD3,0xED,0x60,0xC9,0x7C,0x30,0x04,0x38,0xE9,0x7C,0x60, +0x18,0x69,0x20,0x60,0xA5,0x11,0xD0,0x03,0x4C,0xA4,0xED,0x78,0xAD,0x17,0x03,0xD0, +0x02,0xF0,0x25,0xAD,0x0F,0xD2,0x29,0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4, +0xA4,0x14,0x8E,0x0C,0x03,0x8C,0x0D,0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5, +0x11,0xF0,0x61,0xAD,0x17,0x03,0xD0,0x04,0x58,0x4C,0x0C,0xEB,0xAD,0x0F,0xD2,0x29, +0x10,0xCD,0x16,0x03,0xF0,0xE9,0x8D,0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30, +0x12,0xAD,0x0B,0xD4,0xA4,0x14,0x20,0xA7,0xEC,0x8C,0xEE,0x02,0x8D,0xEF,0x02,0xA0, +0x09,0xD0,0xCC,0xAD,0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D,0x06,0xD2,0xA9, +0x00,0x8D,0x0F,0xD2,0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91,0x32,0xC8,0x91, +0x32,0xA9,0xAA,0x85,0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5,0x33,0x69,0x00, +0x85,0x33,0x58,0x60,0x20,0x63,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xA9, +0x80,0x85,0x30,0xAE,0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C,0x0D,0xEA,0xA9,0xF0,0x8D, +0x26,0x02,0xA9,0xEB,0x8D,0x27,0x02,0xA9,0x01,0x8D,0x17,0x03,0x78,0x20,0x5C,0xE4, +0x58,0x60,0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9,0x04,0x54,0x05,0xAF,0x05,0x0A,0x06, +0x65,0x06,0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0,0x07,0xA9,0xA0,0x8D,0x46,0x02,0x60, +0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21,0xF0,0x02,0xA9, +0x07,0x8D,0x06,0x03,0xA2,0x40,0xA0,0x80,0xAD,0x02,0x03,0xC9,0x57,0xD0,0x02,0xA2, +0x80,0xC9,0x53,0xD0,0x0C,0xA9,0xEA,0x8D,0x04,0x03,0xA9,0x02,0x8D,0x05,0x03,0xA0, +0x04,0x8E,0x03,0x03,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10, +0x01,0x60,0xAD,0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x6D,0xEE,0xA0,0x02,0xB1,0x15, +0x8D,0x46,0x02,0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x6D,0xEE,0xA0,0xFE,0xC8, +0xC8,0xB1,0x15,0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88, +0x88,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03, +0x85,0x15,0xAD,0x05,0x03,0x85,0x16,0x60,0xA9,0x1E,0x85,0x1C,0x60,0xEA,0x02,0xC0, +0x03,0xA9,0x04,0x85,0x1E,0xAE,0x7D,0xEE,0xAC,0x7E,0xEE,0xA9,0x53,0x8D,0x02,0x03, +0x8D,0x0A,0x03,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x30,0x03,0x20,0x14,0xEF,0x60,0x20, +0x81,0xEE,0xA9,0x00,0x85,0x1D,0x60,0x85,0x1F,0x20,0x1A,0xEF,0xA6,0x1D,0xA5,0x1F, +0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xF0,0x13,0x86,0x1D,0xC9,0x9B,0xF0,0x03,0xA0,0x01, +0x60,0xA9,0x20,0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xD0,0xF8,0xA9,0x00,0x85,0x1D,0xAE, +0x7F,0xEE,0xAC,0x80,0xEE,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x60,0x20,0x1A,0xEF,0xA6, +0x1D,0xD0,0xDE,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00, +0x03,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9, +0x40,0x8D,0x03,0x03,0xA5,0x1E,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA5,0x1C, +0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x85,0x1C,0x60,0xA0,0x57,0xA5,0x2B,0xC9,0x4E, +0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9,0x53, +0xD0,0x0B,0xA2,0x1D,0x86,0x1E,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9,0x4E,0xD0, +0xDD,0xA9,0xCC,0x8D,0xEE,0x02,0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E, +0xA5,0x2A,0x29,0x0C,0xC9,0x04,0xF0,0x05,0xC9,0x08,0xF0,0x39,0x60,0xA9,0x00,0x8D, +0x89,0x02,0x85,0x3F,0xA9,0x01,0x20,0x58,0xF0,0x30,0x24,0xA9,0x34,0x8D,0x02,0xD3, +0xA0,0xE0,0xA2,0x01,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0, +0xFB,0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0xD3,0xEF,0xA0,0x80,0xC6,0x11,0xA9, +0x00,0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0x58,0xF0,0x30, +0xEE,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03, +0x20,0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA9,0x03,0xA2,0x03,0xA0,0xC0,0x20,0x5C, +0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xC1,0xAD,0x2A,0x02,0xD0,0xF7,0xA9, +0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D,0xEC,0x8A,0x02,0xF0, +0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20,0x95,0xF0,0x98,0x30, +0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE,0xF0,0x0D,0xC9,0xFA, +0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0xD6,0xEF,0xC6,0x3F,0xA0,0x88,0x60, +0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0,0x01,0x60,0xA9,0xFC, +0x20,0xD2,0xF0,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD,0x89,0x02,0x30,0x08, +0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A,0x8E,0x7F,0x04,0xA9, +0xFA,0x20,0xD2,0xF0,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00,0x04,0xCA,0x10,0xFA, +0xA9,0xFE,0x20,0xD2,0xF0,0x4C,0x32,0xF0,0x85,0x40,0xA5,0x14,0x18,0x69,0x19,0xAA, +0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0,0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0, +0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6,0x40,0xF0,0x0B,0x8A,0x18,0x69,0x08, +0xAA,0xE4,0x14,0xD0,0xFC,0xF0,0xD3,0x20,0x8C,0xF0,0x98,0x60,0xAD,0x25,0xE4,0x48, +0xAD,0x24,0xE4,0x48,0x60,0x8D,0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D, +0x08,0x03,0xA9,0x03,0x8D,0x05,0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00, +0x03,0xA9,0x00,0x8D,0x01,0x03,0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40, +0xC9,0x52,0xF0,0x02,0xA0,0x80,0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59, +0xE4,0x60,0x8D,0xFF,0x03,0xA9,0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20, +0x95,0xF0,0x60,0x50,0x30,0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B, +0x20,0xE4,0x7D,0x41,0x54,0x41,0x52,0x49,0x20,0x43,0x4F,0x4D,0x50,0x55,0x54,0x45, +0x52,0x20,0x2D,0x20,0x4D,0x45,0x4D,0x4F,0x20,0x50,0x41,0x44,0x9B,0x42,0x4F,0x4F, +0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0x78,0xAD,0x44,0x02,0xD0, +0x04,0xA9,0xFF,0xD0,0x03,0x78,0xA9,0x00,0x85,0x08,0xD8,0xA2,0xFF,0x9A,0x20,0x3F, +0xF2,0x20,0x81,0xF2,0xA5,0x08,0xD0,0x28,0xA9,0x00,0xA0,0x08,0x85,0x04,0x85,0x05, +0x91,0x04,0xC8,0xC0,0x00,0xD0,0xF9,0xE6,0x05,0xA6,0x05,0xE4,0x06,0xD0,0xF1,0xAD, +0x72,0xE4,0x85,0x0A,0xAD,0x73,0xE4,0x85,0x0B,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x13, +0xA2,0x00,0x8A,0x9D,0x00,0x02,0x9D,0x00,0x03,0xCA,0xD0,0xF7,0xA2,0x10,0x95,0x00, +0xE8,0x10,0xFB,0xA9,0x02,0x85,0x52,0xA9,0x27,0x85,0x53,0xA2,0x25,0xBD,0x80,0xE4, +0x9D,0x00,0x02,0xCA,0x10,0xF7,0x20,0x94,0xF2,0x58,0xA2,0x0E,0xBD,0xE3,0xF0,0x9D, +0x1A,0x03,0xCA,0x10,0xF7,0xA2,0x00,0x86,0x07,0x86,0x06,0xAE,0xE4,0x02,0xE0,0x90, +0xB0,0x0A,0xAD,0xFC,0x9F,0xD0,0x05,0xE6,0x07,0x20,0x3C,0xF2,0xAE,0xE4,0x02,0xE0, +0xB0,0xB0,0x0A,0xAE,0xFC,0xBF,0xD0,0x05,0xE6,0x06,0x20,0x39,0xF2,0xA9,0x03,0xA2, +0x00,0x9D,0x42,0x03,0xA9,0x18,0x9D,0x44,0x03,0xA9,0xF1,0x9D,0x45,0x03,0xA9,0x0C, +0x9D,0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0x25,0xF1,0xE8,0xD0,0xFD,0xC8,0x10, +0xFA,0x20,0xB2,0xF3,0xA5,0x06,0x05,0x07,0xF0,0x12,0xA5,0x06,0xF0,0x03,0xAD,0xFD, +0xBF,0xA6,0x07,0xF0,0x03,0x0D,0xFD,0x9F,0x29,0x01,0xF0,0x03,0x20,0xCF,0xF2,0xA9, +0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29,0x04,0xF0,0x03,0x6C, +0xFA,0xBF,0xA5,0x07,0xF0,0x0A,0xAD,0xFD,0x9F,0x29,0x04,0xF0,0xDF,0x6C,0xFA,0x9F, +0x6C,0x0A,0x00,0xA2,0xF2,0xA0,0xF0,0x20,0x85,0xF3,0x20,0x30,0xF2,0x4C,0x2A,0xF2, +0xAD,0x05,0xE4,0x48,0xAD,0x04,0xE4,0x48,0x60,0x6C,0xFE,0xBF,0x6C,0xFE,0x9F,0xAD, +0xFC,0xBF,0xD0,0x12,0xEE,0xFC,0xBF,0xAD,0xFC,0xBF,0xD0,0x0A,0xAD,0xFD,0xBF,0x29, +0x80,0xF0,0x03,0x6C,0xFE,0xBF,0xCE,0xFC,0xBF,0xA9,0x00,0x85,0x05,0xA9,0x10,0x85, +0x06,0xA0,0x00,0xB1,0x05,0x85,0x07,0x49,0xFF,0x85,0x04,0x91,0x05,0xB1,0x05,0xC5, +0x04,0xD0,0x0D,0xA5,0x07,0x91,0x05,0xA5,0x06,0x18,0x69,0x10,0x85,0x06,0xD0,0xE3, +0x60,0xA9,0x00,0xAA,0x9D,0x00,0xD0,0x9D,0x00,0xD4,0x9D,0x00,0xD2,0x9D,0x00,0xD3, +0xE8,0xD0,0xF1,0x60,0xC6,0x11,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00, +0x8D,0xE5,0x02,0xA9,0x00,0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4, +0x20,0x1C,0xE4,0x20,0x2C,0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20, +0x65,0xE4,0x20,0x6B,0xE4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0x02,0xE6,0x4A,0x60,0xA5, +0x08,0xF0,0x0A,0xA5,0x09,0x29,0x01,0xF0,0x03,0x20,0x7E,0xF3,0x60,0xA9,0x01,0x8D, +0x01,0x03,0xA9,0x53,0x8D,0x02,0x03,0x20,0x53,0xE4,0x10,0x01,0x60,0xA9,0x00,0x8D, +0x0B,0x03,0xA9,0x01,0x8D,0x0A,0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05, +0x03,0x20,0x9D,0xF3,0x10,0x08,0x20,0x81,0xF3,0xA5,0x4B,0xF0,0xE0,0x60,0xA2,0x03, +0xBD,0x00,0x04,0x9D,0x40,0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43, +0x02,0x85,0x05,0xAD,0x04,0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9, +0x00,0x04,0x91,0x04,0x88,0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05, +0x69,0x00,0x85,0x05,0xCE,0x41,0x02,0xF0,0x11,0xEE,0x0A,0x03,0x20,0x9D,0xF3,0x10, +0xDC,0x20,0x81,0xF3,0xA5,0x4B,0xD0,0xAE,0xF0,0xF2,0xA5,0x4B,0xF0,0x03,0x20,0x9D, +0xF3,0x20,0x6C,0xF3,0xB0,0xA0,0x20,0x7E,0xF3,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02, +0x69,0x06,0x85,0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C, +0x00,0xA2,0x0D,0xA0,0xF1,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9, +0x09,0x9D,0x42,0x03,0xA9,0xFF,0x9D,0x48,0x03,0x20,0x56,0xE4,0x60,0xA5,0x4B,0xF0, +0x03,0x4C,0x7A,0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x20,0x53, +0xE4,0x60,0xA5,0x08,0xF0,0x0A,0xA5,0x09,0x29,0x02,0xF0,0x03,0x20,0xE1,0xF3,0x60, +0xA5,0x4A,0xF0,0x1C,0xA9,0x80,0x85,0x3E,0xE6,0x4B,0x20,0x7D,0xE4,0x20,0x01,0xF3, +0xA9,0x00,0x85,0x4B,0x85,0x4A,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03, +0x60,0x6C,0x02,0x00,0xA9,0xFF,0x8D,0xFC,0x02,0xAD,0xE6,0x02,0x29,0xF0,0x85,0x6A, +0xA9,0x40,0x8D,0xBE,0x02,0x60,0xA5,0x2B,0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F, +0x85,0x2A,0xA9,0x00,0x85,0x57,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0x02,0x8D,0xF3,0x02, +0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05,0x10,0x85,0x10,0x8D,0x0E,0xD2, +0xA9,0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01, +0x99,0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0xC1,0xFE,0x9D,0xC4,0x02,0xCA,0x10, +0xF7,0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x69, +0xFE,0xD0,0x04,0xA9,0x91,0x85,0x4C,0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x45,0xFE, +0xA9,0x28,0x20,0x21,0xF9,0x88,0xD0,0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8, +0xE0,0x08,0x90,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10,0x20, +0x21,0xF9,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5,0x64, +0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x1F,0xF9, +0xBD,0x75,0xFE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0xA5,0x64,0x85,0x68,0xA5, +0x65,0x85,0x69,0x20,0x13,0xF9,0xA9,0x41,0x20,0x17,0xF9,0x86,0x66,0xA9,0x18,0x8D, +0xBF,0x02,0xA5,0x57,0xC9,0x09,0xB0,0x2D,0xA5,0x2A,0x29,0x10,0xF0,0x27,0xA9,0x04, +0x8D,0xBF,0x02,0xA2,0x02,0xA9,0x02,0x20,0x17,0xF9,0xCA,0x10,0xF8,0xA4,0x6A,0x88, +0x98,0x20,0x17,0xF9,0xA9,0x60,0x20,0x17,0xF9,0xA9,0x42,0x20,0x17,0xF9,0x18,0xA9, +0x0C,0x65,0x66,0x85,0x66,0xA4,0x66,0xBE,0x51,0xFE,0xA5,0x51,0x20,0x17,0xF9,0xCA, +0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x1C,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20, +0x17,0xF9,0xA9,0x00,0x20,0x17,0xF9,0xA9,0x4F,0x20,0x17,0xF9,0xA5,0x51,0x20,0x17, +0xF9,0xCA,0xD0,0xF8,0xA5,0x59,0x20,0x17,0xF9,0xA5,0x58,0x20,0x17,0xF9,0xA5,0x51, +0x09,0x40,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA5, +0x64,0x8D,0x30,0x02,0xA5,0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x17,0xF9,0xA5,0x64, +0x8D,0xE5,0x02,0xA5,0x65,0x8D,0xE6,0x02,0xA5,0x68,0x85,0x64,0xA5,0x69,0x85,0x65, +0xAD,0x31,0x02,0x20,0x17,0xF9,0xAD,0x30,0x02,0x20,0x17,0xF9,0xA5,0x4C,0x10,0x07, +0x48,0x20,0xFC,0xF3,0x68,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0xB9,0xF7, +0x8D,0x90,0x02,0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02, +0x4C,0x21,0xF6,0x20,0x96,0xFA,0x20,0xA2,0xF5,0x20,0x32,0xFB,0x20,0xD4,0xF9,0x4C, +0x34,0xF6,0x20,0x47,0xF9,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10, +0xF9,0x8D,0xFA,0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0x20,0x96,0xFA,0xAD,0xFB,0x02, +0xC9,0x7D,0xD0,0x06,0x20,0xB9,0xF7,0x4C,0x21,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0, +0x06,0x20,0x30,0xFA,0x4C,0x21,0xF6,0x20,0xE0,0xF5,0x20,0xD8,0xF9,0x4C,0x21,0xF6, +0xAD,0xFF,0x02,0xD0,0xFB,0xA2,0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB, +0x02,0xA8,0x2A,0x2A,0x2A,0x2A,0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0xF6,0xFE,0x8D, +0xFA,0x02,0x20,0x47,0xF9,0xAD,0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0x08,0xF6, +0x2D,0xA0,0x02,0x85,0x50,0xAD,0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64, +0x60,0x20,0xA2,0xF5,0x85,0x5D,0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49, +0x80,0x20,0xFF,0xF5,0xA4,0x4C,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x20,0xB3, +0xFC,0x20,0x88,0xFA,0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D, +0x20,0xE2,0xF6,0x84,0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xAD,0xF6,0x20, +0xB3,0xFC,0xA5,0x63,0xC9,0x71,0xD0,0x03,0x20,0x0A,0xF9,0x4C,0x50,0xF6,0x20,0xE4, +0xFA,0x20,0x00,0xFC,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11, +0xC6,0x6B,0xF0,0x0D,0xA5,0x4C,0x30,0xF8,0x20,0x93,0xF5,0x8D,0xFB,0x02,0x4C,0xB3, +0xFC,0x20,0x30,0xFA,0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x21,0xF6,0x84,0x4C,0x4C,0xB3, +0xFC,0x6C,0x64,0x00,0x8D,0xFB,0x02,0x20,0xB3,0xFC,0x20,0x88,0xFA,0x20,0xE4,0xFA, +0x20,0x8D,0xFC,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xCA,0xF5,0x4C,0xB3,0xFC,0xAD,0xFE, +0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xBD,0xC6,0xFE,0x85,0x64,0xBD, +0xC7,0xFE,0x85,0x65,0x20,0xA1,0xF6,0x20,0x21,0xF6,0x4C,0xB3,0xFC,0xA9,0xFF,0x8D, +0xFC,0x02,0xA5,0x2A,0x4A,0xB0,0x62,0xA9,0x80,0xA6,0x11,0xF0,0x58,0xAD,0xFC,0x02, +0xC9,0xFF,0xF0,0xEE,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0x20,0xD8,0xFC,0xAA,0xE0, +0xC0,0x90,0x02,0xA2,0x03,0xBD,0xFE,0xFE,0x8D,0xFB,0x02,0xC9,0x80,0xF0,0xCE,0xC9, +0x81,0xD0,0x0B,0xAD,0xB6,0x02,0x49,0x80,0x8D,0xB6,0x02,0x4C,0xDD,0xF6,0xC9,0x82, +0xD0,0x07,0xA9,0x00,0x8D,0xBE,0x02,0xF0,0xB4,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D, +0xBE,0x02,0xD0,0xA9,0xC9,0x84,0xD0,0x07,0xA9,0x80,0x8D,0xBE,0x02,0xD0,0x9E,0xC9, +0x85,0xD0,0x0A,0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0xD0,0x26,0xA5,0x7C,0xC9, +0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90,0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE, +0x02,0xF0,0x05,0x05,0x7C,0x4C,0xFE,0xF6,0x20,0x8D,0xFC,0xF0,0x09,0xAD,0xFB,0x02, +0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x34,0xF6,0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6, +0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54,0x4C,0x5C,0xFC,0xE6,0x54,0xA5,0x54, +0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE,0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5, +0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0xDD,0xFB,0xE6,0x55,0xA5,0x55,0xC5,0x53, +0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0xA5,0xF7,0x20,0xF3,0xFC,0xA0,0x00,0x98,0x91, +0x64,0xC8,0xD0,0xFB,0xE6,0x65,0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2, +0x02,0xC8,0xC0,0x04,0x90,0xF8,0x20,0xE4,0xFC,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85, +0x54,0x85,0x56,0x85,0x6C,0x60,0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52, +0xD0,0x03,0x20,0x73,0xFC,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54, +0xF0,0x03,0x20,0x7F,0xF7,0xA9,0x20,0x8D,0xFB,0x02,0x20,0xE0,0xF5,0x4C,0xDD,0xFB, +0x20,0xAA,0xF7,0xA5,0x55,0xC5,0x52,0xD0,0x0A,0x20,0x34,0xFA,0x20,0x20,0xFB,0x90, +0x02,0xB0,0x07,0xA5,0x63,0x20,0x25,0xFB,0x90,0xE6,0x4C,0xDD,0xFB,0xA5,0x63,0x4C, +0x06,0xFB,0xA5,0x63,0x4C,0x12,0xFB,0x20,0x9D,0xFC,0x20,0xA2,0xF5,0x85,0x7D,0xA9, +0x00,0x8D,0xBB,0x02,0x20,0xFF,0xF5,0xA5,0x63,0x48,0x20,0xDC,0xF9,0x68,0xC5,0x63, +0xB0,0x0C,0xA5,0x7D,0x48,0x20,0xA2,0xF5,0x85,0x7D,0x68,0x4C,0x44,0xF8,0x20,0xA8, +0xFC,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54,0xD0,0xF7,0x4C,0xDD,0xFB,0x20,0x9D,0xFC, +0x20,0x47,0xF9,0xA5,0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0xD4, +0xF9,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54,0xCD,0xBF,0x02,0xB0,0x09,0x20,0xA2,0xF5, +0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00,0x98,0x91,0x68,0x20,0x68,0xFC,0x20,0xA8, +0xFC,0x4C,0xDD,0xFB,0x38,0x20,0x7B,0xFB,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0xA5, +0x64,0x85,0x68,0x18,0x69,0x28,0x85,0x66,0xA5,0x65,0x85,0x69,0x69,0x00,0x85,0x67, +0xA6,0x54,0xE0,0x17,0xF0,0x08,0x20,0x4E,0xFB,0xE8,0xE0,0x17,0xD0,0xF8,0x20,0x9B, +0xFB,0x4C,0xDD,0xFB,0x20,0xDD,0xFB,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20, +0x23,0xFB,0x08,0x98,0x18,0x69,0x78,0x28,0x20,0x04,0xFB,0xC8,0xC0,0x18,0xD0,0xED, +0xAD,0xB4,0x02,0x09,0x01,0x8D,0xB4,0x02,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0x20, +0xB7,0xFB,0x20,0x20,0xFB,0x90,0xD4,0x4C,0xDD,0xFB,0xA0,0x20,0x20,0xD8,0xFC,0x88, +0x10,0xFA,0x60,0xA9,0x02,0xD0,0x0A,0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9, +0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30,0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64, +0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5,0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64, +0x90,0x04,0xA9,0x93,0x85,0x4C,0x60,0xA5,0x54,0x48,0xA5,0x55,0x48,0xA5,0x56,0x48, +0x20,0xF3,0xFC,0xA5,0x54,0x85,0x66,0xA9,0x00,0x85,0x67,0xA5,0x66,0x0A,0x26,0x67, +0x85,0x51,0xA4,0x67,0x8C,0x9F,0x02,0x0A,0x26,0x67,0x0A,0x26,0x67,0x18,0x65,0x51, +0x85,0x66,0xA5,0x67,0x6D,0x9F,0x02,0x85,0x67,0xA6,0x57,0xBC,0x81,0xFE,0x88,0x30, +0x07,0x06,0x66,0x26,0x67,0x4C,0x7E,0xF9,0xBC,0xA5,0xFE,0xA5,0x55,0xA2,0x07,0x88, +0x30,0x0A,0xCA,0x46,0x56,0x6A,0x6E,0xA1,0x02,0x4C,0x8F,0xF9,0xC8,0x18,0x65,0x66, +0x85,0x66,0x90,0x02,0xE6,0x67,0x38,0x6E,0xA1,0x02,0x18,0xCA,0x10,0xF9,0xAE,0xA1, +0x02,0xA5,0x66,0x18,0x65,0x64,0x85,0x64,0x85,0x5E,0xA5,0x67,0x65,0x65,0x85,0x65, +0x85,0x5F,0xBD,0xB1,0xFE,0x8D,0xA0,0x02,0x85,0x6F,0x68,0x85,0x56,0x68,0x85,0x55, +0x68,0x85,0x54,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B,0x85,0x7D,0xE6,0x63,0xE6,0x55, +0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x8D,0xFE,0xF0,0x0B,0xE0,0x00,0xD0, +0x06,0xC5,0x53,0xF0,0x02,0xB0,0x01,0x60,0xE0,0x08,0x90,0x04,0xA5,0x56,0xF0,0xF7, +0xA5,0x57,0xD0,0x30,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5,0x7D,0xF0,0x26,0x20,0x30, +0xFA,0x4C,0x77,0xFA,0x20,0x34,0xFA,0xA5,0x54,0x18,0x69,0x78,0x20,0x25,0xFB,0x90, +0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0xA5,0xF8,0x4C,0xDD,0xFB,0xA9,0x00,0xF0,0x02, +0xA9,0x9B,0x85,0x7D,0x20,0xE4,0xFC,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57,0xA0, +0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x99,0xFE,0xC5,0x54,0xD0, +0x26,0x8C,0x9D,0x02,0x8A,0xD0,0x20,0xA5,0x7D,0xF0,0x1C,0xC9,0x9B,0x38,0xF0,0x01, +0x18,0x20,0xAC,0xFB,0xEE,0xBB,0x02,0xC6,0x6C,0xCE,0x9D,0x02,0xAD,0xB2,0x02,0x38, +0x10,0xEF,0xAD,0x9D,0x02,0x85,0x54,0x4C,0xDD,0xFB,0x38,0xB5,0x70,0xE5,0x74,0x95, +0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9,0x04,0xF0,0x07,0xA5, +0x57,0xF0,0x03,0x20,0xFC,0xF3,0xA9,0x27,0xC5,0x53,0xB0,0x02,0x85,0x53,0xA6,0x57, +0xBD,0x99,0xFE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0,0x0A,0xA5,0x56,0xF0, +0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD,0x8D,0xFE,0xC5,0x55, +0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11,0x85,0x11,0xF0,0x06, +0x60,0x20,0xD6,0xF7,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B,0x10,0x03,0x20,0xB9, +0xFC,0x4C,0x34,0xF6,0xA0,0x00,0xA5,0x5D,0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD, +0xB9,0xFE,0x85,0x6E,0x68,0x4A,0x4A,0x4A,0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02, +0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0xEB,0xFA,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3, +0x02,0x60,0x20,0xEB,0xFA,0xA5,0x6E,0x49,0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60, +0xA5,0x54,0x18,0x69,0x78,0x20,0xEB,0xFA,0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01, +0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29, +0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0xFA,0xFE,0x8D,0xFB,0x02,0x60,0xA9,0x02, +0x85,0x65,0xA9,0x47,0x85,0x64,0xA0,0x27,0xB1,0x66,0x85,0x50,0xB1,0x68,0x91,0x66, +0xA5,0x50,0x91,0x64,0x88,0x10,0xF1,0xA5,0x65,0x85,0x69,0xA5,0x64,0x85,0x68,0x18, +0xA5,0x66,0x69,0x28,0x85,0x66,0x90,0x02,0xE6,0x67,0x60,0x08,0xA0,0x17,0x98,0x20, +0x22,0xFB,0x08,0x98,0x18,0x69,0x79,0x28,0x20,0x04,0xFB,0x88,0x30,0x04,0xC4,0x54, +0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C,0x04,0xFB,0xA5,0x52,0x85,0x55,0x20, +0x47,0xF9,0xA0,0x27,0xA9,0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0xFA,0xFA,0xA5, +0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0xA0,0x28,0xB1,0x64,0xA6,0x6A,0xCA,0xE4,0x65, +0xD0,0x08,0xA2,0xD7,0xE4,0x64,0xB0,0x02,0xA9,0x00,0xA0,0x00,0x91,0x64,0xE6,0x64, +0xD0,0xE5,0xE6,0x65,0xA5,0x65,0xC5,0x6A,0xD0,0xDD,0x4C,0xDD,0xFB,0xA9,0x00,0x85, +0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x22,0xFB,0xB0,0x0C,0xA5,0x63,0x18,0x69, +0x28,0x85,0x63,0xC6,0x51,0x4C,0xE5,0xFB,0x18,0xA5,0x63,0x65,0x55,0x85,0x63,0x60, +0x20,0x9D,0xFC,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9,0x01, +0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5,0x55, +0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0x39,0xFC,0x20,0xD4,0xF9,0xE6,0x6B,0xA5,0x63, +0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x99,0xF7,0x20,0xA2,0xF5,0xD0,0x17,0xC6,0x6B, +0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x02,0xC6, +0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x20,0xA8,0xFC,0x60,0x20,0xDD,0xFB,0xA5, +0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54, +0x20,0xDD,0xFB,0xA5,0x63,0xC5,0x52,0xF0,0x13,0x20,0x47,0xF9,0xA5,0x53,0x38,0xE5, +0x52,0xA8,0xB1,0x64,0xD0,0x06,0x88,0x10,0xF9,0x4C,0xDB,0xF8,0x60,0xA2,0x2D,0xBD, +0xC6,0xFE,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5, +0x54,0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA, +0x10,0xF8,0x60,0x20,0xB9,0xFC,0x4C,0x34,0xF6,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17, +0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90,0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10, +0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B,0x60,0xA2,0x7F,0x8E,0x1F,0xD0,0x8E,0x0A,0xD4, +0xCA,0x10,0xF7,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0,0x02,0xA5,0x52, +0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2,0x00,0xA5,0x22, +0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E,0xB7,0x02,0xA5, +0x54,0x85,0x60,0xA5,0x55,0x85,0x61,0xA5,0x56,0x85,0x62,0xA9,0x01,0x85,0x79,0x85, +0x7A,0x38,0xA5,0x60,0xE5,0x5A,0x85,0x76,0xB0,0x0D,0xA9,0xFF,0x85,0x79,0xA5,0x76, +0x49,0xFF,0x18,0x69,0x01,0x85,0x76,0x38,0xA5,0x61,0xE5,0x5B,0x85,0x77,0xA5,0x62, +0xE5,0x5C,0x85,0x78,0xB0,0x16,0xA9,0xFF,0x85,0x7A,0xA5,0x77,0x49,0xFF,0x85,0x77, +0xA5,0x78,0x49,0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00, +0x84,0x73,0x98,0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8, +0xA5,0x78,0x85,0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76, +0xA2,0x02,0xA8,0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70, +0xA5,0x7E,0x05,0x7F,0xD0,0x03,0x4C,0x42,0xFE,0x18,0xA5,0x70,0x65,0x76,0x85,0x70, +0x90,0x02,0xE6,0x71,0xA5,0x71,0xC5,0x75,0x90,0x14,0xD0,0x06,0xA5,0x70,0xC5,0x74, +0x90,0x0C,0x18,0xA5,0x54,0x65,0x79,0x85,0x54,0xA2,0x00,0x20,0x7A,0xFA,0x18,0xA5, +0x72,0x65,0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x27,0xD0, +0x06,0xA5,0x72,0xC5,0x74,0x90,0x1F,0x24,0x7A,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9, +0xFF,0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6, +0x56,0xA2,0x02,0x20,0x7A,0xFA,0x20,0x96,0xFA,0x20,0xE0,0xF5,0xAD,0xB7,0x02,0xF0, +0x2F,0x20,0x9D,0xFC,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0xDC,0xF9, +0x68,0x85,0x54,0x20,0x96,0xFA,0x20,0xA2,0xF5,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB, +0x02,0x20,0xE0,0xF5,0x4C,0x0A,0xFE,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0xA8,0xFC, +0x38,0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C, +0x90,0xFD,0x4C,0x34,0xF6,0x18,0x10,0x0A,0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4, +0xC4,0x17,0x17,0x0B,0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x13,0x13,0x09, +0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x02,0x06,0x07,0x08,0x09,0x0A,0x0B, +0x0D,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01, +0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x28,0x14,0x14, +0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x18,0x18,0x0C,0x18,0x30,0x30,0x60, +0x60,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01, +0x01,0x00,0xFF,0xF0,0x0F,0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02, +0x01,0x28,0xCA,0x94,0x46,0x00,0x1B,0x79,0xF7,0x1C,0x7F,0xF7,0x1D,0x8C,0xF7,0x1E, +0x99,0xF7,0x1F,0xAA,0xF7,0x7D,0xB9,0xF7,0x7E,0xE6,0xF7,0x7F,0x10,0xF8,0x9B,0x30, +0xFA,0x9C,0xD4,0xF8,0x9D,0xA4,0xF8,0x9E,0x32,0xF8,0x9F,0x2D,0xF8,0xFD,0x0A,0xF9, +0xFE,0x6D,0xF8,0xFF,0x37,0xF8,0x40,0x00,0x20,0x60,0x20,0x40,0x00,0x60,0x6C,0x6A, +0x3B,0x80,0x80,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D,0x3D,0x76,0x80, +0x63,0x80,0x80,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32,0x31,0x2C,0x20, +0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77,0x71,0x39,0x80, +0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73,0x61,0x4C,0x4A, +0x3A,0x80,0x80,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F,0x7C,0x56,0x80, +0x43,0x80,0x80,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22,0x21,0x5B,0x20, +0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57,0x51,0x28,0x80, +0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53,0x41,0x0C,0x0A, +0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C,0x1D,0x16,0x80, +0x03,0x80,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD,0x80,0x00,0x20, +0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17,0x11,0x80,0x80, +0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13,0x01,0xAD,0x09, +0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAD,0xF1,0x02,0xD0,0x20,0xAD,0x09,0xD2,0xC9,0x9F, +0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x0F,0x8D,0xFC,0x02,0x8D, +0xF2,0x02,0xA9,0x03,0x8D,0xF1,0x02,0xA9,0x00,0x85,0x4D,0xA9,0x30,0x8D,0x2B,0x02, +0x68,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x57,0xB4,0xE7,0x77,0xE4,0xF3,0xE6, +}; diff --git a/MCUME_teensy/teensy800/romatariosb.h b/MCUME_teensy/teensy800/romatariosb.h new file mode 100644 index 0000000..c0691f9 --- /dev/null +++ b/MCUME_teensy/teensy800/romatariosb.h @@ -0,0 +1,642 @@ +const UBYTE PROGMEM romos[10240] = { +0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2, +0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0, +0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1, +0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18, +0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B, +0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86, +0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48, +0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65, +0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF, +0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85, +0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB, +0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03, +0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED, +0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4, +0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4, +0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20, +0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0, +0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60, +0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9, +0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82, +0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85, +0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00, +0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00, +0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20, +0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18, +0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09, +0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5, +0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4, +0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C, +0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62, +0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5, +0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0, +0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32, +0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7, +0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01, +0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5, +0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA, +0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60, +0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F, +0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4, +0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5, +0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10, +0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5, +0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90, +0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00, +0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5, +0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0, +0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7, +0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD, +0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04, +0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4, +0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5, +0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05, +0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90, +0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9, +0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4, +0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62, +0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2, +0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4, +0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94, +0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68, +0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02, +0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18, +0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60, +0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00, +0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA, +0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01, +0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0, +0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8, +0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95, +0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60, +0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5, +0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0, +0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99, +0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0, +0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F, +0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5, +0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60, +0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB, +0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA, +0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2, +0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00, +0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00, +0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60, +0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28, +0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6, +0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2, +0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1, +0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC, +0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00, +0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60, +0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1, +0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10, +0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5, +0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD, +0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20, +0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10, +0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40, +0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD, +0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94, +0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E, +0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27, +0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15, +0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40, +0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7, +0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20, +0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0, +0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0x10,0x02,0x38,0x60,0xA5,0xD4,0x85,0xE0,0x38, +0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6, +0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28, +0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20, +0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6, +0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20, +0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49, +0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05, +0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98, +0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00, +0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39, +0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64, +0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12, +0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16, +0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16, +0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29, +0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19, +0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99, +0x3F,0x78,0x53,0x98,0x16,0x34,0x98,0x16,0x34,0xFC,0xE0,0x32,0x50,0xD9,0x68,0x11, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00, +0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18, +0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03, +0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F, +0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00, +0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, +0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18, +0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18, +0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0xFB,0xF3,0x33,0xF6,0x3D,0xF6,0xA3,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00, +0xF5,0xF3,0x33,0xF6,0x92,0xF5,0xB6,0xF5,0x33,0xF6,0xFB,0xFC,0x4C,0xE4,0xF3,0x00, +0x33,0xF6,0x33,0xF6,0xE1,0xF6,0x3C,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00, +0x9E,0xEE,0xDB,0xEE,0x9D,0xEE,0xA6,0xEE,0x80,0xEE,0x9D,0xEE,0x4C,0x78,0xEE,0x00, +0x4B,0xEF,0x2A,0xF0,0xD5,0xEF,0x0F,0xF0,0x27,0xF0,0x4A,0xEF,0x4C,0x41,0xEF,0x00, +0x4C,0xEA,0xED,0x4C,0xF0,0xED,0x4C,0xC4,0xE4,0x4C,0x59,0xE9,0x4C,0xED,0xE8,0x4C, +0xAE,0xE7,0x4C,0x05,0xE9,0x4C,0x44,0xE9,0x4C,0xF2,0xEB,0x4C,0xD5,0xE6,0x4C,0xA6, +0xE4,0x4C,0x23,0xF2,0x4C,0x1B,0xF1,0x4C,0x25,0xF1,0x4C,0xE9,0xEF,0x4C,0x5D,0xEF, +0x90,0xE7,0x8F,0xE7,0x8F,0xE7,0x8F,0xE7,0xBE,0xFF,0x0F,0xEB,0x90,0xEA,0xCF,0xEA, +0x8F,0xE7,0x8F,0xE7,0x8F,0xE7,0x06,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xAE,0xE7,0x05,0xE9,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xC0,0x9D, +0x46,0x03,0xA9,0xE4,0x9D,0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8, +0x60,0xA0,0x85,0x60,0x85,0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90, +0x05,0xA0,0x86,0x4C,0x1B,0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8, +0xC0,0x0C,0x90,0xF4,0xA0,0x84,0xA5,0x22,0xC9,0x03,0x90,0x25,0xA8,0xC0,0x0E,0x90, +0x02,0xA0,0x0E,0x84,0x17,0xB9,0xC6,0xE6,0xF0,0x0F,0xC9,0x02,0xF0,0x35,0xC9,0x08, +0xB0,0x4C,0xC9,0x04,0xF0,0x63,0x4C,0xC9,0xE5,0xA5,0x20,0xC9,0xFF,0xF0,0x05,0xA0, +0x81,0x4C,0x1B,0xE6,0x20,0x9E,0xE6,0xB0,0xF8,0x20,0x3D,0xE6,0xB0,0xF3,0x20,0x89, +0xE6,0xA9,0x0B,0x85,0x17,0x20,0x3D,0xE6,0xA5,0x2C,0x85,0x26,0xA5,0x2D,0x85,0x27, +0x4C,0x1D,0xE6,0xA0,0x01,0x84,0x23,0x20,0x3D,0xE6,0xB0,0x03,0x20,0x89,0xE6,0xA9, +0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27,0xA9,0xC0,0x85,0x26,0x4C,0x1D,0xE6,0xA5,0x20, +0xC9,0xFF,0xD0,0x05,0x20,0x9E,0xE6,0xB0,0xB8,0x20,0x3D,0xE6,0x20,0x89,0xE6,0xA6, +0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x83,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20, +0x89,0xE6,0x85,0x2F,0x4C,0x1D,0xE6,0x20,0x89,0xE6,0x85,0x2F,0x30,0x35,0xA0,0x00, +0x91,0x24,0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0, +0x06,0x20,0x63,0xE6,0x4C,0xC3,0xE5,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02, +0xD0,0x11,0x20,0x89,0xE6,0x85,0x2F,0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9, +0x89,0x85,0x23,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0, +0x87,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x06,0xA5, +0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F,0x20,0x89,0xE6,0x30,0x25, +0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20, +0x63,0xE6,0x4C,0x15,0xE6,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x05, +0xA9,0x9B,0x20,0x89,0xE6,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0x84,0x23,0xA4,0x2E,0xB9, +0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00,0xB5,0x20,0x99,0x40,0x03, +0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F,0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0, +0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9,0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85, +0x2D,0xA4,0x17,0xB9,0xC6,0xE6,0xA8,0xB1,0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86, +0x2C,0x18,0x60,0xC6,0x28,0xA5,0x28,0xC9,0xFF,0xD0,0x02,0xC6,0x29,0x05,0x29,0x60, +0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28,0x85, +0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0x93,0xE6,0x84,0x23, +0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0xA0,0x00, +0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x0A,0x88,0x88,0x88,0x10,0xF6, +0xA0,0x82,0x38,0xB0,0x13,0x98,0x85,0x20,0x38,0xA0,0x01,0xB1,0x24,0xE9,0x30,0xC9, +0x0A,0x90,0x02,0xA9,0x01,0x85,0x21,0x18,0x60,0x00,0x04,0x04,0x04,0x04,0x06,0x06, +0x06,0x06,0x02,0x08,0x0A,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x38,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0xEA,0xEA,0xEA,0xA9,0x3C,0x8D,0x02,0xD3,0x8D, +0x03,0xD3,0x60,0x6C,0x16,0x02,0x80,0x40,0x04,0x02,0x01,0x08,0x10,0x20,0x36,0x08, +0x14,0x12,0x10,0x0E,0x0C,0x0A,0x48,0xAD,0x0E,0xD2,0x29,0x20,0xD0,0x0D,0xA9,0xDF, +0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0A,0x02,0x8A,0x48,0xA2,0x06,0xBD, +0xF6,0xE6,0xE0,0x05,0xD0,0x04,0x25,0x10,0xF0,0x05,0x2C,0x0E,0xD2,0xF0,0x06,0xCA, +0x10,0xED,0x4C,0x62,0xE7,0x49,0xFF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0xBD, +0xFE,0xE6,0xAA,0xBD,0x00,0x02,0x8D,0x8C,0x02,0xBD,0x01,0x02,0x8D,0x8D,0x02,0x68, +0xAA,0x6C,0x8C,0x02,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85,0x4D, +0x68,0x40,0x68,0xAA,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C, +0x03,0xD3,0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x68,0x8D,0x8C,0x02,0x68,0x48, +0x29,0x10,0xF0,0x07,0xAD,0x8C,0x02,0x48,0x6C,0x06,0x02,0xAD,0x8C,0x02,0x48,0x68, +0x40,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02,0x48,0xAD,0x0F,0xD4,0x29,0x20,0xF0, +0x03,0x4C,0x74,0xE4,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22,0x02,0xE6,0x14, +0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE,0xA2,0x00,0xA4,0x4D, +0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F,0xA2,0x00,0x20,0xD0, +0xE8,0xD0,0x03,0x20,0xCA,0xE8,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04,0x01,0x29,0x04, +0xF0,0x03,0x4C,0x05,0xE9,0xAD,0x0D,0xD4,0x8D,0x35,0x02,0xAD,0x0C,0xD4,0x8D,0x34, +0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02,0x8D,0x02,0xD4,0xAD,0x2F,0x02, +0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xA2,0x08,0x8E,0x1F,0xD0,0x58,0xBD, +0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D,0x12,0xD0,0xCA,0x10,0xF2,0xAD,0xF4,0x02,0x8D, +0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01,0xD4,0xA2,0x02,0x20,0xD0,0xE8,0xD0,0x03,0x20, +0xCD,0xE8,0xA2,0x02,0xE8,0xE8,0xBD,0x18,0x02,0x1D,0x19,0x02,0xF0,0x06,0x20,0xD0, +0xE8,0x9D,0x26,0x02,0xE0,0x08,0xD0,0xEC,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0x08,0xAD, +0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02,0xAD,0x2B,0x02,0xF0,0x17,0xAD,0x0F,0xD2,0x29, +0x04,0xD0,0x60,0xCE,0x2B,0x02,0xD0,0x0B,0xA9,0x06,0x8D,0x2B,0x02,0xAD,0x09,0xD2, +0x8D,0xFC,0x02,0xA0,0x01,0xA2,0x03,0xB9,0x00,0xD3,0x4A,0x4A,0x4A,0x4A,0x9D,0x78, +0x02,0xCA,0xB9,0x00,0xD3,0x29,0x0F,0x9D,0x78,0x02,0xCA,0x88,0x10,0xE9,0xA2,0x03, +0xBD,0x10,0xD0,0x9D,0x84,0x02,0xBD,0x00,0xD2,0x9D,0x70,0x02,0xBD,0x04,0xD2,0x9D, +0x74,0x02,0xCA,0x10,0xEB,0x8D,0x0B,0xD2,0xA2,0x06,0xA0,0x03,0xB9,0x78,0x02,0x4A, +0x4A,0x4A,0x9D,0x7D,0x02,0xA9,0x00,0x2A,0x9D,0x7C,0x02,0xCA,0xCA,0x88,0x10,0xEC, +0x6C,0x24,0x02,0xA9,0x00,0x8D,0x2B,0x02,0xF0,0xA9,0x6C,0x26,0x02,0x6C,0x28,0x02, +0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE,0x19,0x02,0xDE,0x18,0x02, +0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9,0xFF,0x60,0x0A,0x8D,0x2D, +0x02,0x8A,0xA2,0x05,0x8D,0x0A,0xD4,0xCA,0xD0,0xFD,0xAE,0x2D,0x02,0x9D,0x17,0x02, +0x98,0x9D,0x16,0x02,0x60,0x68,0xA8,0x68,0xAA,0x68,0x40,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x4C,0xED,0xE8,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0xA9,0x3C,0x8D,0x02,0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03, +0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2,0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85, +0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03,0x4C,0x80,0xEB,0xA9,0x00,0x8D,0x0F,0x03, +0xA9,0x01,0x85,0x37,0xA9,0x0D,0x85,0x36,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D, +0x06,0xD2,0x18,0xAD,0x00,0x03,0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02, +0x03,0x8D,0x3B,0x02,0xAD,0x0A,0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02, +0x18,0xA9,0x3A,0x85,0x32,0x69,0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9, +0x34,0x8D,0x03,0xD3,0x20,0x8A,0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x07,0xC6, +0x36,0x10,0xB5,0x4C,0x06,0xEA,0xAD,0x03,0x03,0x10,0x0C,0xA9,0x0D,0x85,0x36,0x20, +0x6A,0xEB,0x20,0x8A,0xEC,0xF0,0xE8,0x20,0x75,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20, +0x9B,0xEC,0xF0,0x12,0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1D, +0x20,0x6A,0xEB,0x20,0xE0,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30, +0xA5,0x30,0xC9,0x01,0xF0,0x07,0xC6,0x37,0x30,0x03,0x4C,0x74,0xE9,0x20,0x5F,0xEC, +0xA9,0x00,0x85,0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18, +0xA9,0x3E,0x85,0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF, +0x85,0x3C,0x20,0xE0,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02, +0xC9,0x41,0xF0,0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30, +0xD0,0x04,0xA9,0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F, +0x02,0xD0,0x02,0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20, +0xF2,0xEB,0xA0,0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85, +0x31,0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x5F,0xEC,0x60, +0x98,0x48,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35, +0x90,0x1C,0xA5,0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85,0x3B,0xD0, +0x09,0xA5,0x10,0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40,0xA0,0x00, +0xB1,0x32,0x8D,0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xBA,0xEA,0xA5, +0x3B,0xF0,0x0B,0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2,0x68,0x40, +0xA9,0x00,0xAC,0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9,0x01,0x85, +0x30,0x20,0x1B,0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED, +0xAD,0x17,0x03,0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30,0x60,0x98, +0x48,0xAD,0x0F,0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29,0x20,0xD0, +0x04,0xA0,0x8E,0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31,0xF0,0x04, +0xA0,0x8F,0x84,0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D,0xD2,0xA0, +0x00,0x91,0x32,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02,0xE6,0x33, +0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35,0x90,0xDE,0xA5,0x3C,0xF0,0x06,0xA9,0x00, +0x85,0x3C,0xF0,0xD0,0xA9,0xFF,0x85,0x38,0xD0,0xCE,0x18,0xAD,0x04,0x03,0x85,0x32, +0x6D,0x08,0x03,0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09,0x03,0x85,0x35,0x60, +0xAD,0x03,0x03,0x10,0x2E,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0x20, +0xF2,0xEB,0xA0,0x0F,0xAD,0x0B,0x03,0x30,0x02,0xA0,0xB4,0xA2,0x00,0x20,0xB9,0xED, +0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x6A,0xEB,0x20,0x6B,0xEA, +0x4C,0xDF,0xEB,0xA9,0xFF,0x8D,0x0F,0x03,0xA0,0x0A,0xAD,0x0B,0x03,0x30,0x02,0xA0, +0x78,0xA2,0x00,0x20,0xB9,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB, +0x20,0x6A,0xEB,0x20,0x75,0xEC,0x20,0xB9,0xED,0x20,0x10,0xED,0x20,0xE0,0xEA,0xAD, +0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x0D,0xEA,0xA9,0x00,0x8D,0x17, +0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00,0x03,0xC0,0x60,0xD0,0x0C, +0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00,0xD2,0x8D,0x32,0x02,0x8D, +0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x31,0xEC,0xA9,0x07,0x2D,0x32,0x02, +0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2,0xA9,0xC7,0x25,0x10,0x09, +0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA2,0x06,0xA9,0xA8,0xA4, +0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0xA9,0xA0,0x8D,0x05, +0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2,0x8D,0x03,0xD2,0x60,0xEA, +0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06,0xA9,0x00,0x9D,0x01,0xD2, +0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8,0x29,0x3F,0xAA,0x98,0x6A, +0x29,0xC0,0xA8,0x60,0x0F,0xEB,0x90,0xEA,0xCF,0xEA,0xA2,0x01,0xA0,0xFF,0x88,0xD0, +0xFD,0xCA,0xD0,0xF8,0x20,0x6B,0xEA,0xA0,0x02,0xA2,0x00,0x20,0xB9,0xED,0x20,0x1A, +0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x04,0xED,0x8D,0x10,0x03,0xAD, +0x0C,0x03,0x20,0x04,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03,0x38,0xED,0x0C,0x03,0x8D, +0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA9,0x7D,0x18,0x69,0x83,0x88, +0x10,0xFA,0x18,0x6D,0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38,0xE9,0x16,0xAA,0x98, +0x29,0x07,0xA8,0xA9,0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0,0x00,0x8C,0x0E,0x03, +0x38,0xE9,0x07,0x10,0x03,0xCE,0x0E,0x03,0x18,0x7D,0xD0,0xED,0xA8,0xAD,0x0E,0x03, +0x7D,0xD1,0xED,0x60,0xC9,0x7C,0x30,0x04,0x38,0xE9,0x7C,0x60,0x18,0x69,0x07,0x60, +0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,0x78,0xAD,0x17,0x03,0xD0,0x02,0xF0,0x25,0xAD, +0x0F,0xD2,0x29,0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4,0xA4,0x14,0x8E,0x0C, +0x03,0x8C,0x0D,0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5,0x11,0xF0,0x61,0xAD, +0x17,0x03,0xD0,0x04,0x58,0x4C,0x0A,0xEB,0xAD,0x0F,0xD2,0x29,0x10,0xCD,0x16,0x03, +0xF0,0xE9,0x8D,0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30,0x12,0xAD,0x0B,0xD4, +0xA4,0x14,0x20,0xA3,0xEC,0x8C,0xEE,0x02,0x8D,0xEF,0x02,0xA0,0x09,0xD0,0xCC,0xAD, +0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D,0x06,0xD2,0xA9,0x00,0x8D,0x0F,0xD2, +0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91,0x32,0xC8,0x91,0x32,0xA9,0xAA,0x85, +0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5,0x33,0x69,0x00,0x85,0x33,0x58,0x60, +0x20,0x5F,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xA9,0x80,0x85,0x30,0xAE, +0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C,0x0D,0xEA,0xA9,0xEC,0x8D,0x26,0x02,0xA9,0xEB, +0x8D,0x27,0x02,0xA9,0x01,0x78,0x20,0x5C,0xE4,0xA9,0x01,0x8D,0x17,0x03,0x58,0x60, +0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9,0x04,0x54,0x05,0xAF,0x05,0x0A,0x06,0x65,0x06, +0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0,0x07,0x24,0x85,0xA9,0xA0,0x8D,0x46,0x02,0x60, +0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21,0xF0,0x02,0xA9, +0x07,0x8D,0x06,0x03,0xA2,0x40,0xA0,0x80,0xAD,0x02,0x03,0xC9,0x57,0xD0,0x02,0xA2, +0x80,0xC9,0x53,0xD0,0x0C,0xA9,0xEA,0x8D,0x04,0x03,0xA9,0x02,0x8D,0x05,0x03,0xA0, +0x04,0x8E,0x03,0x03,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10, +0x01,0x60,0xAD,0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x6D,0xEE,0xA0,0x02,0xB1,0x15, +0x8D,0x46,0x02,0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x6D,0xEE,0xA0,0xFE,0xC8, +0xC8,0xB1,0x15,0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88, +0x88,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03, +0x85,0x15,0xAD,0x05,0x03,0x85,0x16,0x60,0xA9,0x1E,0x85,0x1C,0x60,0xEA,0x02,0xC0, +0x03,0xA9,0x04,0x85,0x1E,0xAE,0x7D,0xEE,0xAC,0x7E,0xEE,0xA9,0x53,0x8D,0x02,0x03, +0x8D,0x0A,0x03,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x30,0x03,0x20,0x14,0xEF,0x60,0x20, +0x81,0xEE,0xA9,0x00,0x85,0x1D,0x60,0x85,0x1F,0x20,0x1A,0xEF,0xA6,0x1D,0xA5,0x1F, +0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xF0,0x13,0x86,0x1D,0xC9,0x9B,0xF0,0x03,0xA0,0x01, +0x60,0xA9,0x20,0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xD0,0xF8,0xA9,0x00,0x85,0x1D,0xAE, +0x7F,0xEE,0xAC,0x80,0xEE,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x60,0x20,0x1A,0xEF,0xA6, +0x1D,0xD0,0xDE,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00, +0x03,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9, +0x40,0x8D,0x03,0x03,0xA5,0x1E,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA5,0x1C, +0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x85,0x1C,0x60,0xA0,0x57,0xA5,0x2B,0xC9,0x4E, +0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9,0x53, +0xD0,0x0B,0xA2,0x1D,0x86,0x1E,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9,0x4E,0xD0, +0xDD,0xA9,0xCC,0x8D,0xEE,0x02,0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E, +0xA5,0x2A,0x29,0x0C,0xC9,0x04,0xF0,0x05,0xC9,0x08,0xF0,0x39,0x60,0xA9,0x00,0x8D, +0x89,0x02,0x85,0x3F,0xA9,0x01,0x20,0x58,0xF0,0x30,0x24,0xA9,0x34,0x8D,0x02,0xD3, +0xA0,0x40,0xA2,0x02,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0, +0xFB,0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0xD3,0xEF,0xA0,0x80,0xC6,0x11,0xA9, +0x00,0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0x58,0xF0,0x30, +0xEE,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03, +0x20,0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA9,0x03,0xA2,0x04,0xA0,0x80,0x20,0x5C, +0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xC1,0xAD,0x2A,0x02,0xD0,0xF7,0xA9, +0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D,0xEC,0x8A,0x02,0xF0, +0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20,0x95,0xF0,0x98,0x30, +0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE,0xF0,0x0D,0xC9,0xFA, +0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0xD6,0xEF,0xC6,0x3F,0xA0,0x88,0x60, +0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0,0x01,0x60,0xA9,0xFC, +0x20,0xD2,0xF0,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD,0x89,0x02,0x30,0x08, +0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A,0x8E,0x7F,0x04,0xA9, +0xFA,0x20,0xD2,0xF0,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00,0x04,0xCA,0x10,0xFA, +0xA9,0xFE,0x20,0xD2,0xF0,0x4C,0x32,0xF0,0x85,0x40,0xA5,0x14,0x18,0x69,0x1E,0xAA, +0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0,0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0, +0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6,0x40,0xF0,0x0B,0x8A,0x18,0x69,0x0A, +0xAA,0xE4,0x14,0xD0,0xFC,0xF0,0xD3,0x20,0x8C,0xF0,0x98,0x60,0xAD,0x25,0xE4,0x48, +0xAD,0x24,0xE4,0x48,0x60,0x8D,0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D, +0x08,0x03,0xA9,0x03,0x8D,0x05,0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00, +0x03,0xA9,0x00,0x8D,0x01,0x03,0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40, +0xC9,0x52,0xF0,0x02,0xA0,0x80,0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59, +0xE4,0x60,0x8D,0xFF,0x03,0xA9,0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20, +0x95,0xF0,0x60,0x50,0x30,0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B, +0x20,0xE4,0x7D,0x41,0x54,0x41,0x52,0x49,0x20,0x43,0x4F,0x4D,0x50,0x55,0x54,0x45, +0x52,0x20,0x2D,0x20,0x4D,0x45,0x4D,0x4F,0x20,0x50,0x41,0x44,0x9B,0x42,0x4F,0x4F, +0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0x78,0xAD,0x44,0x02,0xD0, +0x04,0xA9,0xFF,0xD0,0x03,0x78,0xA9,0x00,0x85,0x08,0xD8,0xA2,0xFF,0x9A,0x20,0x44, +0xF2,0x20,0x77,0xF2,0xA5,0x08,0xD0,0x28,0xA9,0x00,0xA0,0x08,0x85,0x04,0x85,0x05, +0x91,0x04,0xC8,0xC0,0x00,0xD0,0xF9,0xE6,0x05,0xA6,0x05,0xE4,0x06,0xD0,0xF1,0xAD, +0x72,0xE4,0x85,0x0A,0xAD,0x73,0xE4,0x85,0x0B,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x13, +0xA2,0x00,0x8A,0x9D,0x00,0x02,0x9D,0x00,0x03,0xCA,0xD0,0xF7,0xA2,0x10,0x95,0x00, +0xE8,0x10,0xFB,0xA9,0x02,0x85,0x52,0xA9,0x27,0x85,0x53,0xA2,0x25,0xBD,0x80,0xE4, +0x9D,0x00,0x02,0xCA,0x10,0xF7,0x20,0x8A,0xF2,0x58,0xA2,0x0E,0xBD,0xE3,0xF0,0x9D, +0x1A,0x03,0xCA,0x10,0xF7,0xA2,0x00,0x86,0x07,0x86,0x06,0xAE,0xE4,0x02,0xE0,0x90, +0xB0,0x0A,0xAD,0xFC,0x9F,0xD0,0x05,0xE6,0x07,0x20,0x3C,0xF2,0xAE,0xE4,0x02,0xE0, +0xB0,0xB0,0x0A,0xAE,0xFC,0xBF,0xD0,0x05,0xE6,0x06,0x20,0x39,0xF2,0xA9,0x03,0xA2, +0x00,0x9D,0x42,0x03,0xA9,0x18,0x9D,0x44,0x03,0xA9,0xF1,0x9D,0x45,0x03,0xA9,0x0C, +0x9D,0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0x25,0xF1,0xE8,0xD0,0xFD,0xC8,0x10, +0xFA,0x20,0xB2,0xF3,0xA5,0x06,0x05,0x07,0xF0,0x12,0xA5,0x06,0xF0,0x03,0xAD,0xFD, +0xBF,0xA6,0x07,0xF0,0x03,0x0D,0xFD,0x9F,0x29,0x01,0xF0,0x03,0x20,0xCF,0xF2,0xA9, +0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29,0x04,0xF0,0x03,0x6C, +0xFA,0xBF,0xA5,0x07,0xF0,0x0A,0xAD,0xFD,0x9F,0x29,0x04,0xF0,0xDF,0x6C,0xFA,0x9F, +0x6C,0x0A,0x00,0xA2,0xF2,0xA0,0xF0,0x20,0x85,0xF3,0x20,0x30,0xF2,0x4C,0x2A,0xF2, +0xAD,0x05,0xE4,0x48,0xAD,0x04,0xE4,0x48,0x60,0x6C,0xFE,0xBF,0x6C,0xFE,0x9F,0xC9, +0xD0,0xD0,0x1C,0x60,0xEE,0xFC,0xBF,0xAD,0xFC,0xBF,0xD0,0x08,0xAD,0xFD,0xBF,0x10, +0x03,0x6C,0xFE,0xBF,0xCE,0xFC,0xBF,0xA0,0x00,0x84,0x05,0xA9,0x10,0x85,0x06,0xB1, +0x05,0x49,0xFF,0x91,0x05,0xD1,0x05,0xD0,0xDA,0x49,0xFF,0x91,0x05,0xA5,0x06,0x18, +0x69,0x10,0x85,0x06,0x4C,0x3F,0xF2,0xA9,0x00,0xAA,0x9D,0x00,0xD0,0x9D,0x00,0xD4, +0x9D,0x00,0xD2,0xEA,0xEA,0xEA,0xE8,0xD0,0xF1,0x60,0xC6,0x11,0xA9,0x54,0x8D,0x36, +0x02,0xA9,0xE7,0x8D,0x37,0x02,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00, +0x8D,0xE5,0x02,0xA9,0x00,0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4, +0x20,0x1C,0xE4,0x20,0x2C,0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20, +0x65,0xE4,0x20,0x6B,0xE4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0x02,0xE6,0x4A,0x60,0xA5, +0x08,0xF0,0x0A,0xA5,0x09,0x29,0x01,0xF0,0x03,0x20,0x7E,0xF3,0x60,0xA9,0x01,0x8D, +0x01,0x03,0xA9,0x53,0x8D,0x02,0x03,0x20,0x53,0xE4,0x10,0x01,0x60,0xA9,0x00,0x8D, +0x0B,0x03,0xA9,0x01,0x8D,0x0A,0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05, +0x03,0x20,0x9D,0xF3,0x10,0x08,0x20,0x81,0xF3,0xA5,0x4B,0xF0,0xE0,0x60,0xA2,0x03, +0xBD,0x00,0x04,0x9D,0x40,0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43, +0x02,0x85,0x05,0xAD,0x04,0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9, +0x00,0x04,0x91,0x04,0x88,0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05, +0x69,0x00,0x85,0x05,0xCE,0x41,0x02,0xF0,0x11,0xEE,0x0A,0x03,0x20,0x9D,0xF3,0x10, +0xDC,0x20,0x81,0xF3,0xA5,0x4B,0xD0,0xAE,0xF0,0xF2,0xA5,0x4B,0xF0,0x03,0x20,0x9D, +0xF3,0x20,0x6C,0xF3,0xB0,0xA0,0x20,0x7E,0xF3,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02, +0x69,0x06,0x85,0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C, +0x00,0xA2,0x0D,0xA0,0xF1,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9, +0x09,0x9D,0x42,0x03,0xA9,0xFF,0x9D,0x48,0x03,0x20,0x56,0xE4,0x60,0xA5,0x4B,0xF0, +0x03,0x4C,0x7A,0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x20,0x53, +0xE4,0x60,0xA5,0x08,0xF0,0x0A,0xA5,0x09,0x29,0x02,0xF0,0x03,0x20,0xE1,0xF3,0x60, +0xA5,0x4A,0xF0,0x1C,0xA9,0x80,0x85,0x3E,0xE6,0x4B,0x20,0x7D,0xE4,0x20,0x01,0xF3, +0xA9,0x00,0x85,0x4B,0x85,0x4A,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03, +0x60,0x6C,0x02,0x00,0xA9,0xFF,0x8D,0xFC,0x02,0xAD,0xE6,0x02,0x29,0xF0,0x85,0x6A, +0xA9,0x40,0x8D,0xBE,0x02,0x60,0xA5,0x2B,0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F, +0x85,0x2A,0xA9,0x00,0x85,0x57,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0x02,0x8D,0xF3,0x02, +0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05,0x10,0x85,0x10,0x8D,0x0E,0xD2, +0xA9,0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01, +0x99,0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0xC1,0xFE,0x9D,0xC4,0x02,0xCA,0x10, +0xF7,0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x69, +0xFE,0xD0,0x04,0xA9,0x91,0x85,0x4C,0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x45,0xFE, +0xA9,0x28,0x20,0x21,0xF9,0x88,0xD0,0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8, +0xE0,0x08,0x90,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10,0x20, +0x21,0xF9,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5,0x64, +0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x1F,0xF9, +0xBD,0x75,0xFE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0xA5,0x64,0x85,0x68,0xA5, +0x65,0x85,0x69,0x20,0x13,0xF9,0xA9,0x41,0x20,0x17,0xF9,0x86,0x66,0xA9,0x18,0x8D, +0xBF,0x02,0xA5,0x57,0xC9,0x09,0xB0,0x2D,0xA5,0x2A,0x29,0x10,0xF0,0x27,0xA9,0x04, +0x8D,0xBF,0x02,0xA2,0x02,0xA9,0x02,0x20,0x17,0xF9,0xCA,0x10,0xF8,0xA4,0x6A,0x88, +0x98,0x20,0x17,0xF9,0xA9,0x60,0x20,0x17,0xF9,0xA9,0x42,0x20,0x17,0xF9,0x18,0xA9, +0x0C,0x65,0x66,0x85,0x66,0xA4,0x66,0xBE,0x51,0xFE,0xA5,0x51,0x20,0x17,0xF9,0xCA, +0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x1C,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20, +0x17,0xF9,0xA9,0x00,0x20,0x17,0xF9,0xA9,0x4F,0x20,0x17,0xF9,0xA5,0x51,0x20,0x17, +0xF9,0xCA,0xD0,0xF8,0xA5,0x59,0x20,0x17,0xF9,0xA5,0x58,0x20,0x17,0xF9,0xA5,0x51, +0x09,0x40,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA5, +0x64,0x8D,0x30,0x02,0xA5,0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x17,0xF9,0xA5,0x64, +0x8D,0xE5,0x02,0xA5,0x65,0x8D,0xE6,0x02,0xA5,0x68,0x85,0x64,0xA5,0x69,0x85,0x65, +0xAD,0x31,0x02,0x20,0x17,0xF9,0xAD,0x30,0x02,0x20,0x17,0xF9,0xA5,0x4C,0x10,0x07, +0x48,0x20,0xFC,0xF3,0x68,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0xB9,0xF7, +0x8D,0x90,0x02,0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02, +0x4C,0x21,0xF6,0x20,0x96,0xFA,0x20,0xA2,0xF5,0x20,0x32,0xFB,0x20,0xD4,0xF9,0x4C, +0x34,0xF6,0x20,0x47,0xF9,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10, +0xF9,0x8D,0xFA,0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0x20,0x96,0xFA,0xAD,0xFB,0x02, +0xC9,0x7D,0xD0,0x06,0x20,0xB9,0xF7,0x4C,0x21,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0, +0x06,0x20,0x30,0xFA,0x4C,0x21,0xF6,0x20,0xE0,0xF5,0x20,0xD8,0xF9,0x4C,0x21,0xF6, +0xAD,0xFF,0x02,0xD0,0xFB,0xA2,0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB, +0x02,0xA8,0x2A,0x2A,0x2A,0x2A,0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0xF6,0xFE,0x8D, +0xFA,0x02,0x20,0x47,0xF9,0xAD,0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0x08,0xF6, +0x2D,0xA0,0x02,0x85,0x50,0xAD,0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64, +0x60,0x20,0xA2,0xF5,0x85,0x5D,0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49, +0x80,0x20,0xFF,0xF5,0xA4,0x4C,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x20,0xB3, +0xFC,0x20,0x88,0xFA,0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D, +0x20,0xE2,0xF6,0x84,0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xAD,0xF6,0x20, +0xB3,0xFC,0xA5,0x63,0xC9,0x71,0xD0,0x03,0x20,0x0A,0xF9,0x4C,0x50,0xF6,0x20,0xE4, +0xFA,0x20,0x00,0xFC,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11, +0xC6,0x6B,0xF0,0x0D,0xA5,0x4C,0x30,0xF8,0x20,0x93,0xF5,0x8D,0xFB,0x02,0x4C,0xB3, +0xFC,0x20,0x30,0xFA,0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x21,0xF6,0x84,0x4C,0x4C,0xB3, +0xFC,0x6C,0x64,0x00,0x8D,0xFB,0x02,0x20,0xB3,0xFC,0x20,0x88,0xFA,0x20,0xE4,0xFA, +0x20,0x8D,0xFC,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xCA,0xF5,0x4C,0xB3,0xFC,0xAD,0xFE, +0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xBD,0xC6,0xFE,0x85,0x64,0xBD, +0xC7,0xFE,0x85,0x65,0x20,0xA1,0xF6,0x20,0x21,0xF6,0x4C,0xB3,0xFC,0xA9,0xFF,0x8D, +0xFC,0x02,0xA5,0x2A,0x4A,0xB0,0x62,0xA9,0x80,0xA6,0x11,0xF0,0x58,0xAD,0xFC,0x02, +0xC9,0xFF,0xF0,0xEE,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0x20,0xD8,0xFC,0xAA,0xE0, +0xC0,0x90,0x02,0xA2,0x03,0xBD,0xFE,0xFE,0x8D,0xFB,0x02,0xC9,0x80,0xF0,0xCE,0xC9, +0x81,0xD0,0x0B,0xAD,0xB6,0x02,0x49,0x80,0x8D,0xB6,0x02,0x4C,0xDD,0xF6,0xC9,0x82, +0xD0,0x07,0xA9,0x00,0x8D,0xBE,0x02,0xF0,0xB4,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D, +0xBE,0x02,0xD0,0xA9,0xC9,0x84,0xD0,0x07,0xA9,0x80,0x8D,0xBE,0x02,0xD0,0x9E,0xC9, +0x85,0xD0,0x0A,0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0xD0,0x26,0xA5,0x7C,0xC9, +0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90,0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE, +0x02,0xF0,0x05,0x05,0x7C,0x4C,0xFE,0xF6,0x20,0x8D,0xFC,0xF0,0x09,0xAD,0xFB,0x02, +0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x34,0xF6,0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6, +0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54,0x4C,0x5C,0xFC,0xE6,0x54,0xA5,0x54, +0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE,0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5, +0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0xDD,0xFB,0xE6,0x55,0xA5,0x55,0xC5,0x53, +0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0xA5,0xF7,0x20,0xF3,0xFC,0xA0,0x00,0x98,0x91, +0x64,0xC8,0xD0,0xFB,0xE6,0x65,0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2, +0x02,0xC8,0xC0,0x04,0x90,0xF8,0x20,0xE4,0xFC,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85, +0x54,0x85,0x56,0x85,0x6C,0x60,0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52, +0xD0,0x03,0x20,0x73,0xFC,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54, +0xF0,0x03,0x20,0x7F,0xF7,0xA9,0x20,0x8D,0xFB,0x02,0x20,0xE0,0xF5,0x4C,0xDD,0xFB, +0x20,0xAA,0xF7,0xA5,0x55,0xC5,0x52,0xD0,0x0A,0x20,0x34,0xFA,0x20,0x20,0xFB,0x90, +0x02,0xB0,0x07,0xA5,0x63,0x20,0x25,0xFB,0x90,0xE6,0x4C,0xDD,0xFB,0xA5,0x63,0x4C, +0x06,0xFB,0xA5,0x63,0x4C,0x12,0xFB,0x20,0x9D,0xFC,0x20,0xA2,0xF5,0x85,0x7D,0xA9, +0x00,0x8D,0xBB,0x02,0x20,0xFF,0xF5,0xA5,0x63,0x48,0x20,0xDC,0xF9,0x68,0xC5,0x63, +0xB0,0x0C,0xA5,0x7D,0x48,0x20,0xA2,0xF5,0x85,0x7D,0x68,0x4C,0x44,0xF8,0x20,0xA8, +0xFC,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54,0xD0,0xF7,0x4C,0xDD,0xFB,0x20,0x9D,0xFC, +0x20,0x47,0xF9,0xA5,0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0xD4, +0xF9,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54,0xCD,0xBF,0x02,0xB0,0x09,0x20,0xA2,0xF5, +0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00,0x98,0x91,0x68,0x20,0x68,0xFC,0x20,0xA8, +0xFC,0x4C,0xDD,0xFB,0x38,0x20,0x7B,0xFB,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0xA5, +0x64,0x85,0x68,0x18,0x69,0x28,0x85,0x66,0xA5,0x65,0x85,0x69,0x69,0x00,0x85,0x67, +0xA6,0x54,0xE0,0x17,0xF0,0x08,0x20,0x4E,0xFB,0xE8,0xE0,0x17,0xD0,0xF8,0x20,0x9B, +0xFB,0x4C,0xDD,0xFB,0x20,0xDD,0xFB,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20, +0x23,0xFB,0x08,0x98,0x18,0x69,0x78,0x28,0x20,0x04,0xFB,0xC8,0xC0,0x18,0xD0,0xED, +0xAD,0xB4,0x02,0x09,0x01,0x8D,0xB4,0x02,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0x20, +0xB7,0xFB,0x20,0x20,0xFB,0x90,0xD4,0x4C,0xDD,0xFB,0x60,0x20,0x20,0xD8,0xFC,0x88, +0x10,0xFA,0x60,0xA9,0x02,0xD0,0x0A,0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9, +0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30,0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64, +0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5,0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64, +0x90,0x04,0xA9,0x93,0x85,0x4C,0x60,0xA5,0x54,0x48,0xA5,0x55,0x48,0xA5,0x56,0x48, +0x20,0xF3,0xFC,0xA5,0x54,0x85,0x66,0xA9,0x00,0x85,0x67,0xA5,0x66,0x0A,0x26,0x67, +0x85,0x51,0xA4,0x67,0x8C,0x9F,0x02,0x0A,0x26,0x67,0x0A,0x26,0x67,0x18,0x65,0x51, +0x85,0x66,0xA5,0x67,0x6D,0x9F,0x02,0x85,0x67,0xA6,0x57,0xBC,0x81,0xFE,0x88,0x30, +0x07,0x06,0x66,0x26,0x67,0x4C,0x7E,0xF9,0xBC,0xA5,0xFE,0xA5,0x55,0xA2,0x07,0x88, +0x30,0x0A,0xCA,0x46,0x56,0x6A,0x6E,0xA1,0x02,0x4C,0x8F,0xF9,0xC8,0x18,0x65,0x66, +0x85,0x66,0x90,0x02,0xE6,0x67,0x38,0x6E,0xA1,0x02,0x18,0xCA,0x10,0xF9,0xAE,0xA1, +0x02,0xA5,0x66,0x18,0x65,0x64,0x85,0x64,0x85,0x5E,0xA5,0x67,0x65,0x65,0x85,0x65, +0x85,0x5F,0xBD,0xB1,0xFE,0x8D,0xA0,0x02,0x85,0x6F,0x68,0x85,0x56,0x68,0x85,0x55, +0x68,0x85,0x54,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B,0x85,0x7D,0xE6,0x63,0xE6,0x55, +0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x8D,0xFE,0xF0,0x0B,0xE0,0x00,0xD0, +0x06,0xC5,0x53,0xF0,0x02,0xB0,0x01,0x60,0xE0,0x08,0x90,0x04,0xA5,0x56,0xF0,0xF7, +0xA5,0x57,0xD0,0x30,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5,0x7D,0xF0,0x26,0x20,0x30, +0xFA,0x4C,0x77,0xFA,0x20,0x34,0xFA,0xA5,0x54,0x18,0x69,0x78,0x20,0x25,0xFB,0x90, +0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0xA5,0xF8,0x4C,0xDD,0xFB,0xA9,0x00,0xF0,0x02, +0xA9,0x9B,0x85,0x7D,0x20,0xE4,0xFC,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57,0xA0, +0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x99,0xFE,0xC5,0x54,0xD0, +0x26,0x8C,0x9D,0x02,0x8A,0xD0,0x20,0xA5,0x7D,0xF0,0x1C,0xC9,0x9B,0x38,0xF0,0x01, +0x18,0x20,0xAC,0xFB,0xEE,0xBB,0x02,0xC6,0x6C,0xCE,0x9D,0x02,0xAD,0xB2,0x02,0x38, +0x10,0xEF,0xAD,0x9D,0x02,0x85,0x54,0x4C,0xDD,0xFB,0x38,0xB5,0x70,0xE5,0x74,0x95, +0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9,0x04,0xF0,0x07,0xA5, +0x57,0xF0,0x03,0x20,0xFC,0xF3,0xA9,0x27,0xC5,0x53,0xB0,0x02,0x85,0x53,0xA6,0x57, +0xBD,0x99,0xFE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0,0x0A,0xA5,0x56,0xF0, +0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD,0x8D,0xFE,0xC5,0x55, +0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11,0x85,0x11,0xF0,0x06, +0x60,0x20,0xD6,0xF7,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B,0x10,0x03,0x20,0xB9, +0xFC,0x4C,0x34,0xF6,0xA0,0x00,0xA5,0x5D,0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD, +0xB9,0xFE,0x85,0x6E,0x68,0x4A,0x4A,0x4A,0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02, +0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0xEB,0xFA,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3, +0x02,0x60,0x20,0xEB,0xFA,0xA5,0x6E,0x49,0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60, +0xA5,0x54,0x18,0x69,0x78,0x20,0xEB,0xFA,0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01, +0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29, +0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0xFA,0xFE,0x8D,0xFB,0x02,0x60,0xA9,0x02, +0x85,0x65,0xA9,0x47,0x85,0x64,0xA0,0x27,0xB1,0x66,0x85,0x50,0xB1,0x68,0x91,0x66, +0xA5,0x50,0x91,0x64,0x88,0x10,0xF1,0xA5,0x65,0x85,0x69,0xA5,0x64,0x85,0x68,0x18, +0xA5,0x66,0x69,0x28,0x85,0x66,0x90,0x02,0xE6,0x67,0x60,0x08,0xA0,0x17,0x98,0x20, +0x22,0xFB,0x08,0x98,0x18,0x69,0x79,0x28,0x20,0x04,0xFB,0x88,0x30,0x04,0xC4,0x54, +0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C,0x04,0xFB,0xA5,0x52,0x85,0x55,0x20, +0x47,0xF9,0xA0,0x27,0xA9,0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0xFA,0xFA,0xA5, +0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0xA0,0x28,0xB1,0x64,0xA6,0x6A,0xCA,0xE4,0x65, +0xD0,0x08,0xA2,0xD7,0xE4,0x64,0xB0,0x02,0xA9,0x00,0xA0,0x00,0x91,0x64,0xE6,0x64, +0xD0,0xE5,0xE6,0x65,0xA5,0x65,0xC5,0x6A,0xD0,0xDD,0x4C,0xDD,0xFB,0xA9,0x00,0x85, +0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x22,0xFB,0xB0,0x0C,0xA5,0x63,0x18,0x69, +0x28,0x85,0x63,0xC6,0x51,0x4C,0xE5,0xFB,0x18,0xA5,0x63,0x65,0x55,0x85,0x63,0x60, +0x20,0x9D,0xFC,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9,0x01, +0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5,0x55, +0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0x39,0xFC,0x20,0xD4,0xF9,0xE6,0x6B,0xA5,0x63, +0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x99,0xF7,0x20,0xA2,0xF5,0xD0,0x17,0xC6,0x6B, +0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x02,0xC6, +0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x20,0xA8,0xFC,0x60,0x20,0xDD,0xFB,0xA5, +0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54, +0x20,0xDD,0xFB,0xA5,0x63,0xC5,0x52,0xF0,0x13,0x20,0x47,0xF9,0xA5,0x53,0x38,0xE5, +0x52,0xA8,0xB1,0x64,0xD0,0x06,0x88,0x10,0xF9,0x4C,0xDB,0xF8,0x60,0xA2,0x2D,0xBD, +0xC6,0xFE,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5, +0x54,0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA, +0x10,0xF8,0x60,0x20,0xB9,0xFC,0x4C,0x34,0xF6,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17, +0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90,0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10, +0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B,0x60,0xA2,0x7F,0x8E,0x1F,0xD0,0x8E,0x0A,0xD4, +0xCA,0x10,0xF7,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0,0x02,0xA5,0x52, +0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2,0x00,0xA5,0x22, +0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E,0xB7,0x02,0xA5, +0x54,0x85,0x60,0xA5,0x55,0x85,0x61,0xA5,0x56,0x85,0x62,0xA9,0x01,0x85,0x79,0x85, +0x7A,0x38,0xA5,0x60,0xE5,0x5A,0x85,0x76,0xB0,0x0D,0xA9,0xFF,0x85,0x79,0xA5,0x76, +0x49,0xFF,0x18,0x69,0x01,0x85,0x76,0x38,0xA5,0x61,0xE5,0x5B,0x85,0x77,0xA5,0x62, +0xE5,0x5C,0x85,0x78,0xB0,0x16,0xA9,0xFF,0x85,0x7A,0xA5,0x77,0x49,0xFF,0x85,0x77, +0xA5,0x78,0x49,0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00, +0x84,0x73,0x98,0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8, +0xA5,0x78,0x85,0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76, +0xA2,0x02,0xA8,0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70, +0xA5,0x7E,0x05,0x7F,0xD0,0x03,0x4C,0x42,0xFE,0x18,0xA5,0x70,0x65,0x76,0x85,0x70, +0x90,0x02,0xE6,0x71,0xA5,0x71,0xC5,0x75,0x90,0x14,0xD0,0x06,0xA5,0x70,0xC5,0x74, +0x90,0x0C,0x18,0xA5,0x54,0x65,0x79,0x85,0x54,0xA2,0x00,0x20,0x7A,0xFA,0x18,0xA5, +0x72,0x65,0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x27,0xD0, +0x06,0xA5,0x72,0xC5,0x74,0x90,0x1F,0x24,0x7A,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9, +0xFF,0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6, +0x56,0xA2,0x02,0x20,0x7A,0xFA,0x20,0x96,0xFA,0x20,0xE0,0xF5,0xAD,0xB7,0x02,0xF0, +0x2F,0x20,0x9D,0xFC,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0xDC,0xF9, +0x68,0x85,0x54,0x20,0x96,0xFA,0x20,0xA2,0xF5,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB, +0x02,0x20,0xE0,0xF5,0x4C,0x0A,0xFE,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0xA8,0xFC, +0x38,0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C, +0x90,0xFD,0x4C,0x34,0xF6,0x18,0x10,0x0A,0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4, +0xC4,0x17,0x17,0x0B,0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x13,0x13,0x09, +0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x02,0x06,0x07,0x08,0x09,0x0A,0x0B, +0x0D,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01, +0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x28,0x14,0x14, +0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x18,0x18,0x0C,0x18,0x30,0x30,0x60, +0x60,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01, +0x01,0x00,0xFF,0xF0,0x0F,0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02, +0x01,0x28,0xCA,0x94,0x46,0x00,0x1B,0x79,0xF7,0x1C,0x7F,0xF7,0x1D,0x8C,0xF7,0x1E, +0x99,0xF7,0x1F,0xAA,0xF7,0x7D,0xB9,0xF7,0x7E,0xE6,0xF7,0x7F,0x10,0xF8,0x9B,0x30, +0xFA,0x9C,0xD4,0xF8,0x9D,0xA4,0xF8,0x9E,0x32,0xF8,0x9F,0x2D,0xF8,0xFD,0x0A,0xF9, +0xFE,0x6D,0xF8,0xFF,0x37,0xF8,0x40,0x00,0x20,0x60,0x20,0x40,0x00,0x60,0x6C,0x6A, +0x3B,0x80,0x80,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D,0x3D,0x76,0x80, +0x63,0x80,0x80,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32,0x31,0x2C,0x20, +0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77,0x71,0x39,0x80, +0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73,0x61,0x4C,0x4A, +0x3A,0x80,0x80,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F,0x7C,0x56,0x80, +0x43,0x80,0x80,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22,0x21,0x5B,0x20, +0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57,0x51,0x28,0x80, +0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53,0x41,0x0C,0x0A, +0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C,0x1D,0x16,0x80, +0x03,0x80,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD,0x80,0x00,0x20, +0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17,0x11,0x80,0x80, +0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13,0x01,0xAD,0x09, +0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAD,0xF1,0x02,0xD0,0x20,0xAD,0x09,0xD2,0xC9,0x9F, +0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x0F,0x8D,0xFC,0x02,0x8D, +0xF2,0x02,0xA9,0x03,0x8D,0xF1,0x02,0xA9,0x00,0x85,0x4D,0xA9,0x30,0x8D,0x2B,0x02, +0x68,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE6,0x91,0xE7,0x25,0xF1,0xF3,0xE6, +}; diff --git a/MCUME_teensy/teensy800/romatarixl.h b/MCUME_teensy/teensy800/romatarixl.h new file mode 100644 index 0000000..2582bee --- /dev/null +++ b/MCUME_teensy/teensy800/romatarixl.h @@ -0,0 +1,1026 @@ +const UBYTE romos[16384] = { +0x11,0x92,0x10,0x05,0x83,0x00,0x42,0x42,0x00,0x00,0x01,0x02,0xA9,0x40,0x8D,0x0E, +0xD4,0xAD,0x13,0xD0,0x8D,0xFA,0x03,0x60,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02, +0xD8,0x48,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22,0x02,0xD8,0x6C,0x16,0x02, +0x48,0xAD,0x0E,0xD2,0x29,0x20,0xD0,0x0D,0xA9,0xDF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D, +0x0E,0xD2,0x6C,0x0A,0x02,0x8A,0x48,0xAD,0xFF,0xD1,0x2D,0x49,0x02,0xF0,0x03,0x6C, +0x38,0x02,0xA2,0x06,0xBD,0xCF,0xC0,0xE0,0x05,0xD0,0x04,0x25,0x10,0xF0,0x05,0x2C, +0x0E,0xD2,0xF0,0x06,0xCA,0x10,0xED,0x4C,0xA0,0xC0,0x49,0xFF,0x8D,0x0E,0xD2,0xA5, +0x10,0x8D,0x0E,0xD2,0xE0,0x00,0xD0,0x05,0xAD,0x6D,0x02,0xD0,0x23,0xBD,0xD7,0xC0, +0xAA,0xBD,0x00,0x02,0x8D,0x8C,0x02,0xBD,0x01,0x02,0x8D,0x8D,0x02,0x68,0xAA,0x6C, +0x8C,0x02,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85,0x4D,0x68,0x40, +0x68,0xAA,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C,0x03,0xD3, +0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x68,0x8D,0x8C,0x02,0x68,0x48,0x29,0x10, +0xF0,0x07,0xAD,0x8C,0x02,0x48,0x6C,0x06,0x02,0xAD,0x8C,0x02,0x48,0x68,0x40,0x80, +0x40,0x04,0x02,0x01,0x08,0x10,0x20,0x36,0x08,0x14,0x12,0x10,0x0E,0x0C,0x0A,0x4C, +0xDF,0xC0,0xE6,0x14,0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE, +0xA2,0x00,0xA4,0x4D,0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F, +0xAD,0xC5,0x02,0x45,0x4F,0x25,0x4E,0x8D,0x17,0xD0,0xA2,0x00,0x20,0x55,0xC2,0xD0, +0x03,0x20,0x4F,0xC2,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04,0x01,0x29,0x04,0xF0,0x03, +0x4C,0x8A,0xC2,0xAD,0x13,0xD0,0xCD,0xFA,0x03,0xD0,0xB4,0xAD,0x0D,0xD4,0x8D,0x35, +0x02,0xAD,0x0C,0xD4,0x8D,0x34,0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02, +0x8D,0x02,0xD4,0xAD,0x2F,0x02,0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xAD, +0x6C,0x02,0xF0,0x0E,0xCE,0x6C,0x02,0xA9,0x08,0x38,0xED,0x6C,0x02,0x29,0x07,0x8D, +0x05,0xD4,0xA2,0x08,0x8E,0x1F,0xD0,0x58,0xBD,0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D, +0x12,0xD0,0xCA,0x10,0xF2,0xAD,0xF4,0x02,0x8D,0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01, +0xD4,0xA2,0x02,0x20,0x55,0xC2,0xD0,0x03,0x20,0x52,0xC2,0xA2,0x02,0xE8,0xE8,0xBD, +0x18,0x02,0x1D,0x19,0x02,0xF0,0x06,0x20,0x55,0xC2,0x9D,0x26,0x02,0xE0,0x08,0xD0, +0xEC,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0x08,0xAD,0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02, +0xAD,0x2B,0x02,0xF0,0x3E,0xAD,0x0F,0xD2,0x29,0x04,0xD0,0x32,0xCE,0x2B,0x02,0xD0, +0x32,0xAD,0x6D,0x02,0xD0,0x2D,0xAD,0xDA,0x02,0x8D,0x2B,0x02,0xAD,0x09,0xD2,0xC9, +0x9F,0xF0,0x20,0xC9,0x83,0xF0,0x1C,0xC9,0x84,0xF0,0x18,0xC9,0x94,0xF0,0x14,0x29, +0x3F,0xC9,0x11,0xF0,0x0E,0xAD,0x09,0xD2,0x8D,0xFC,0x02,0x4C,0xF3,0xC1,0xA9,0x00, +0x8D,0x2B,0x02,0xAD,0x00,0xD3,0x4A,0x4A,0x4A,0x4A,0x8D,0x79,0x02,0x8D,0x7B,0x02, +0xAD,0x00,0xD3,0x29,0x0F,0x8D,0x78,0x02,0x8D,0x7A,0x02,0xAD,0x10,0xD0,0x8D,0x84, +0x02,0x8D,0x86,0x02,0xAD,0x11,0xD0,0x8D,0x85,0x02,0x8D,0x87,0x02,0xA2,0x03,0xBD, +0x00,0xD2,0x9D,0x70,0x02,0x9D,0x74,0x02,0xCA,0x10,0xF4,0x8D,0x0B,0xD2,0xA2,0x02, +0xA0,0x01,0xB9,0x78,0x02,0x4A,0x4A,0x4A,0x9D,0x7D,0x02,0x9D,0x81,0x02,0xA9,0x00, +0x2A,0x9D,0x7C,0x02,0x9D,0x80,0x02,0xCA,0xCA,0x88,0x10,0xE6,0x6C,0x24,0x02,0x6C, +0x26,0x02,0x6C,0x28,0x02,0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE, +0x19,0x02,0xDE,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9, +0xFF,0x60,0x0A,0x8D,0x2D,0x02,0x8A,0xA2,0x05,0x8D,0x0A,0xD4,0xCA,0xD0,0xFD,0xAE, +0x2D,0x02,0x9D,0x17,0x02,0x98,0x9D,0x16,0x02,0x60,0x68,0xA8,0x68,0xAA,0x68,0x40, +0x78,0xAD,0x13,0xD0,0xCD,0xFA,0x03,0xD0,0x2F,0x6A,0x90,0x05,0x20,0xC9,0xC4,0xD0, +0x27,0xAD,0x44,0x02,0xD0,0x22,0xA9,0xFF,0xD0,0x20,0x78,0xA2,0x8C,0x88,0xD0,0xFD, +0xCA,0xD0,0xFA,0xAD,0x3D,0x03,0xC9,0x5C,0xD0,0x0E,0xAD,0x3E,0x03,0xC9,0x93,0xD0, +0x07,0xAD,0x3F,0x03,0xC9,0x25,0xF0,0xC8,0xA9,0x00,0x85,0x08,0x78,0xD8,0xA2,0xFF, +0x9A,0x20,0x71,0xC4,0xA9,0x01,0x85,0x01,0xA5,0x08,0xD0,0x52,0xA9,0x00,0xA0,0x08, +0x85,0x04,0x85,0x05,0xA9,0xFF,0x91,0x04,0xD1,0x04,0xF0,0x02,0x46,0x01,0xA9,0x00, +0x91,0x04,0xD1,0x04,0xF0,0x02,0x46,0x01,0xC8,0xD0,0xE9,0xE6,0x05,0xA6,0x05,0xE4, +0x06,0xD0,0xE1,0xA9,0x23,0x85,0x0A,0xA9,0xF2,0x85,0x0B,0xAD,0x01,0xD3,0x29,0x7F, +0x8D,0x01,0xD3,0x20,0x73,0xFF,0xB0,0x05,0x20,0x92,0xFF,0x90,0x02,0x46,0x01,0xAD, +0x01,0xD3,0x09,0x80,0x8D,0x01,0xD3,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x22,0xA2,0x00, +0xAD,0xEC,0x03,0xF0,0x07,0x8E,0x0E,0x00,0x8E,0x0F,0x00,0x8A,0x9D,0x00,0x02,0xE0, +0xED,0xB0,0x03,0x9D,0x00,0x03,0xCA,0xD0,0xF3,0xA2,0x10,0x95,0x00,0xE8,0x10,0xFB, +0xA2,0x00,0xAD,0x01,0xD3,0x29,0x02,0xF0,0x01,0xE8,0x8E,0xF8,0x03,0xA9,0x5C,0x8D, +0x3D,0x03,0xA9,0x93,0x8D,0x3E,0x03,0xA9,0x25,0x8D,0x3F,0x03,0xA9,0x02,0x85,0x52, +0xA9,0x27,0x85,0x53,0xAD,0x14,0xD0,0x29,0x0E,0xD0,0x08,0xA9,0x05,0xA2,0x01,0xA0, +0x28,0xD0,0x06,0xA9,0x06,0xA2,0x00,0xA0,0x30,0x8D,0xDA,0x02,0x86,0x62,0x8C,0xD9, +0x02,0xA2,0x25,0xBD,0x4B,0xC4,0x9D,0x00,0x02,0xCA,0x10,0xF7,0xA2,0x0E,0xBD,0x2E, +0xC4,0x9D,0x1A,0x03,0xCA,0x10,0xF7,0x20,0x35,0xC5,0x58,0xA5,0x01,0xD0,0x15,0xAD, +0x01,0xD3,0x29,0x7F,0x8D,0x01,0xD3,0xA9,0x02,0x8D,0xF3,0x02,0xA9,0xE0,0x8D,0xF4, +0x02,0x4C,0x03,0x50,0xA2,0x00,0x86,0x06,0xAE,0xE4,0x02,0xE0,0xB0,0xB0,0x0D,0xAE, +0xFC,0xBF,0xD0,0x08,0xE6,0x06,0x20,0xC9,0xC4,0x20,0x29,0xC4,0xA9,0x03,0xA2,0x00, +0x9D,0x42,0x03,0xA9,0x48,0x9D,0x44,0x03,0xA9,0xC4,0x9D,0x45,0x03,0xA9,0x0C,0x9D, +0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0xAA,0xC2,0xE8,0xD0,0xFD,0xC8,0x10,0xFA, +0x20,0x6E,0xC6,0xA5,0x06,0xF0,0x06,0xAD,0xFD,0xBF,0x6A,0x90,0x06,0x20,0x8B,0xC5, +0x20,0x39,0xE7,0xA9,0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29, +0x04,0xF0,0x03,0x6C,0xFA,0xBF,0x6C,0x0A,0x00,0x6C,0xFE,0xBF,0x18,0x60,0x50,0x30, +0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B,0x20,0xE4,0x42,0x4F,0x4F, +0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0xCE,0xC0,0xCD,0xC0,0xCD, +0xC0,0xCD,0xC0,0x19,0xFC,0x2C,0xEB,0xAD,0xEA,0xEC,0xEA,0xCD,0xC0,0xCD,0xC0,0xCD, +0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE2,0xC0,0x8A, +0xC2,0xAD,0x13,0xD0,0x6A,0x90,0x0D,0xAD,0xFC,0xBF,0xD0,0x08,0xAD,0xFD,0xBF,0x10, +0x03,0x6C,0xFE,0xBF,0x20,0xDA,0xC4,0xAD,0x01,0xD3,0x09,0x02,0x8D,0x01,0xD3,0xA5, +0x08,0xF0,0x07,0xAD,0xF8,0x03,0xD0,0x11,0xF0,0x07,0xAD,0x1F,0xD0,0x29,0x04,0xF0, +0x08,0xAD,0x01,0xD3,0x29,0xFD,0x8D,0x01,0xD3,0xA9,0x00,0xA8,0x85,0x05,0xA9,0x28, +0x85,0x06,0xB1,0x05,0x49,0xFF,0x91,0x05,0xD1,0x05,0xD0,0x0C,0x49,0xFF,0x91,0x05, +0xD1,0x05,0xD0,0x04,0xE6,0x06,0xD0,0xEA,0x60,0xA9,0x00,0xAA,0x18,0x7D,0xF0,0xBF, +0xE8,0xD0,0xFA,0xCD,0xEB,0x03,0x8D,0xEB,0x03,0x60,0xA9,0x00,0xAA,0x8D,0x03,0xD3, +0x9D,0x00,0xD0,0x9D,0x00,0xD4,0x9D,0x00,0xD2,0xE0,0x01,0xF0,0x03,0x9D,0x00,0xD3, +0xE8,0xD0,0xED,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0xFF,0x8D,0x01,0xD3,0xA9,0x38,0x8D, +0x02,0xD3,0x8D,0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0xA9,0xFF,0x8D,0x01,0xD3,0xA9, +0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xAD,0x01,0xD3,0xAD,0x00,0xD3,0xA9,0x22,0x8D, +0x0F,0xD2,0xA9,0xA0,0x8D,0x05,0xD2,0x8D,0x07,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA9, +0xFF,0x8D,0x0D,0xD2,0x60,0xC6,0x11,0xA9,0x92,0x8D,0x36,0x02,0xA9,0xC0,0x8D,0x37, +0x02,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00,0x8D,0xE5,0x02,0xA9,0x00, +0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4,0x20,0x1C,0xE4,0x20,0x2C, +0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20,0x65,0xE4,0x20,0x6B,0xE4, +0x20,0x50,0xE4,0xA9,0x6E,0x8D,0x38,0x02,0xA9,0xC9,0x8D,0x39,0x02,0x20,0x9B,0xE4, +0xAD,0x1F,0xD0,0x29,0x01,0x49,0x01,0x8D,0xE9,0x03,0x60,0xA5,0x08,0xF0,0x09,0xA5, +0x09,0x29,0x01,0xF0,0x33,0x4C,0x3B,0xC6,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x53,0x8D, +0x02,0x03,0x20,0x53,0xE4,0x30,0x21,0xA9,0x00,0x8D,0x0B,0x03,0xA9,0x01,0x8D,0x0A, +0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05,0x03,0x20,0x59,0xC6,0x10,0x09, +0x20,0x3E,0xC6,0xAD,0xEA,0x03,0xF0,0xDF,0x60,0xA2,0x03,0xBD,0x00,0x04,0x9D,0x40, +0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43,0x02,0x85,0x05,0xAD,0x04, +0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9,0x00,0x04,0x91,0x04,0x88, +0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05,0x69,0x00,0x85,0x05,0xCE, +0x41,0x02,0xF0,0x12,0xEE,0x0A,0x03,0x20,0x59,0xC6,0x10,0xDC,0x20,0x3E,0xC6,0xAD, +0xEA,0x03,0xD0,0xAC,0xF0,0xF1,0xAD,0xEA,0x03,0xF0,0x03,0x20,0x59,0xC6,0x20,0x29, +0xC6,0xB0,0x9D,0x20,0x3B,0xC6,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02,0x69,0x06,0x85, +0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C,0x00,0xA2,0x3D, +0xA0,0xC4,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9,0x09,0x9D,0x42, +0x03,0xA9,0xFF,0x9D,0x48,0x03,0x4C,0x56,0xE4,0xAD,0xEA,0x03,0xF0,0x03,0x4C,0x7A, +0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x4C,0x53,0xE4,0xA5,0x08, +0xF0,0x09,0xA5,0x09,0x29,0x02,0xF0,0x27,0x4C,0xA0,0xC6,0xAD,0xE9,0x03,0xF0,0x1F, +0xA9,0x80,0x85,0x3E,0xEE,0xEA,0x03,0x20,0x7D,0xE4,0x20,0xBB,0xC5,0xA9,0x00,0x8D, +0xEA,0x03,0x8D,0xE9,0x03,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03,0x60, +0x6C,0x02,0x00,0xA9,0xA0,0x8D,0x46,0x02,0xA9,0x80,0x8D,0xD5,0x02,0xA9,0x00,0x8D, +0xD6,0x02,0x60,0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21, +0xF0,0x02,0xA9,0x07,0x8D,0x06,0x03,0xA2,0x40,0xAD,0x02,0x03,0xC9,0x50,0xF0,0x04, +0xC9,0x57,0xD0,0x02,0xA2,0x80,0xC9,0x53,0xD0,0x10,0xA9,0xEA,0x8D,0x04,0x03,0xA9, +0x02,0x8D,0x05,0x03,0xA0,0x04,0xA9,0x00,0xF0,0x06,0xAC,0xD5,0x02,0xAD,0xD6,0x02, +0x8E,0x03,0x03,0x8C,0x08,0x03,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10,0x01,0x60,0xAD, +0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x3A,0xC7,0xA0,0x02,0xB1,0x15,0x8D,0x46,0x02, +0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x3A,0xC7,0xA0,0xFE,0xC8,0xC8,0xB1,0x15, +0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88,0x88,0x8C,0x08, +0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03,0x85,0x15,0xAD, +0x05,0x03,0x85,0x16,0x60,0xA2,0x05,0xA9,0x00,0x9D,0xC9,0x02,0xCA,0x10,0xF8,0xA9, +0x00,0x8D,0x33,0x02,0x20,0xCF,0xC7,0xA0,0x9C,0xB0,0x39,0x8D,0x88,0x02,0x20,0xCF, +0xC7,0xA0,0x9C,0xB0,0x2F,0x8D,0x45,0x02,0xAD,0x88,0x02,0xC9,0x0B,0xF0,0x26,0x2A, +0xAA,0xBD,0xE4,0xC8,0x8D,0xC9,0x02,0xBD,0xE5,0xC8,0x8D,0xCA,0x02,0xAD,0x45,0x02, +0xCD,0x33,0x02,0xF0,0xCA,0x20,0xCF,0xC7,0xA0,0x9C,0xB0,0x08,0x20,0xD2,0xC7,0xEE, +0x33,0x02,0xD0,0xE9,0x60,0x20,0xCF,0xC7,0xA0,0x9C,0xB0,0x2C,0x8D,0xC9,0x02,0x20, +0xCF,0xC7,0xA0,0x9C,0xB0,0x22,0x8D,0xCA,0x02,0xAD,0x45,0x02,0xC9,0x01,0xF0,0x16, +0x90,0x17,0x18,0xAD,0xC9,0x02,0x6D,0xD1,0x02,0xA8,0xAD,0xCA,0x02,0x6D,0xD2,0x02, +0x8C,0xC9,0x02,0x8D,0xCA,0x02,0xA0,0x01,0x60,0xA0,0x00,0xA9,0x00,0xF0,0xF1,0x6C, +0xCF,0x02,0x6C,0xC9,0x02,0xAC,0x33,0x02,0xC0,0x01,0xF0,0x0A,0xB0,0x73,0x8D,0x4A, +0x02,0x8D,0x8E,0x02,0x90,0x6A,0x8D,0x4B,0x02,0x8D,0x8F,0x02,0xA2,0x00,0xAD,0x88, +0x02,0xF0,0x06,0xC9,0x0A,0xF0,0x15,0xA2,0x02,0x18,0xAD,0x4A,0x02,0x7D,0xD1,0x02, +0x8D,0x8E,0x02,0xAD,0x4B,0x02,0x7D,0xD2,0x02,0x8D,0x8F,0x02,0x18,0xAD,0x8E,0x02, +0x6D,0x45,0x02,0x48,0xA9,0x00,0x6D,0x8F,0x02,0xA8,0x68,0x38,0xE9,0x02,0xB0,0x01, +0x88,0x48,0x98,0xDD,0xCC,0x02,0x68,0x90,0x10,0xD0,0x05,0xDD,0xCB,0x02,0x90,0x09, +0x9D,0xCB,0x02,0x48,0x98,0x9D,0xCC,0x02,0x68,0xAE,0x88,0x02,0xE0,0x01,0xF0,0x10, +0xCC,0xE6,0x02,0x90,0x0B,0xD0,0x05,0xCD,0xE5,0x02,0x90,0x04,0x68,0x68,0xA0,0x9D, +0x60,0x38,0x48,0xAD,0x33,0x02,0xE9,0x02,0x18,0x6D,0x8E,0x02,0x85,0x36,0xA9,0x00, +0x6D,0x8F,0x02,0x85,0x37,0x68,0xA0,0x00,0x91,0x36,0x4C,0x50,0xC8,0x18,0x6D,0x8E, +0x02,0x85,0x36,0xA9,0x00,0x6D,0x8F,0x02,0x85,0x37,0xA0,0x00,0xB1,0x36,0x18,0x6D, +0xD1,0x02,0x91,0x36,0xE6,0x36,0xD0,0x02,0xE6,0x37,0xB1,0x36,0x6D,0xD2,0x02,0x91, +0x36,0x60,0xA2,0x00,0xAC,0x88,0x02,0xC0,0x04,0x90,0x02,0xA2,0x02,0x18,0x6D,0x8E, +0x02,0x85,0x36,0xA9,0x00,0x6D,0x8F,0x02,0x85,0x37,0xA0,0x00,0xB1,0x36,0x18,0x7D, +0xD1,0x02,0x91,0x36,0x60,0x48,0xAD,0x33,0x02,0x6A,0x68,0xB0,0x15,0x18,0x6D,0x8E, +0x02,0x85,0x36,0xA9,0x00,0x6D,0x8F,0x02,0x85,0x37,0xA0,0x00,0xB1,0x36,0x8D,0x88, +0x02,0x60,0x18,0x6D,0xD1,0x02,0xA9,0x00,0x6D,0xD2,0x02,0x6D,0x88,0x02,0xA0,0x00, +0x91,0x36,0xF0,0xED,0xD5,0xC7,0xD5,0xC7,0x92,0xC8,0x92,0xC8,0x92,0xC8,0x92,0xC8, +0x6D,0xC8,0x6D,0xC8,0xB5,0xC8,0xB5,0xC8,0xD5,0xC7,0x95,0xC7,0xA9,0xFF,0x8D,0x44, +0x02,0xAD,0x01,0xD3,0x29,0x7F,0x8D,0x01,0xD3,0x4C,0x83,0xE4,0xA9,0x01,0x8D,0x48, +0x02,0xAD,0x48,0x02,0x8D,0xFF,0xD1,0xAD,0x03,0xD8,0xC9,0x80,0xD0,0x0A,0xAD,0x0B, +0xD8,0xC9,0x91,0xD0,0x03,0x20,0x19,0xD8,0x0E,0x48,0x02,0xD0,0xE4,0xA9,0x00,0x8D, +0xFF,0xD1,0x60,0xA9,0x01,0x8D,0x42,0x00,0xAD,0x01,0x03,0x48,0xAD,0x47,0x02,0xF0, +0x1A,0xA2,0x08,0x20,0xAF,0xC9,0xF0,0x13,0x8A,0x48,0x20,0x05,0xD8,0x68,0xAA,0x90, +0xF2,0xA9,0x00,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0xF0,0x03,0x20,0x71,0xE9,0x68,0x8D, +0x01,0x03,0xA9,0x00,0x8D,0x42,0x00,0x8C,0x03,0x03,0xAC,0x03,0x03,0x60,0xA2,0x08, +0x6A,0xB0,0x03,0xCA,0xD0,0xFA,0xAD,0x48,0x02,0x48,0xBD,0x20,0xCA,0x8D,0x48,0x02, +0x8D,0xFF,0xD1,0x20,0x08,0xD8,0x68,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x68,0xAA,0x68, +0x40,0xA0,0x01,0x4C,0xDC,0xC9,0xA0,0x03,0x4C,0xDC,0xC9,0xA0,0x05,0x4C,0xDC,0xC9, +0xA0,0x07,0x4C,0xDC,0xC9,0xA0,0x09,0x4C,0xDC,0xC9,0xA0,0x0B,0x4C,0xDC,0xC9,0xCA, +0x10,0x09,0xA9,0x00,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x60,0xAD,0x47,0x02,0x3D,0x21, +0xCA,0xF0,0xEC,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x60,0xB9,0x0D,0xD8,0x48,0x88,0xB9, +0x0D,0xD8,0x48,0xAD,0x4C,0x02,0xAE,0x4D,0x02,0xA0,0x92,0x60,0x8D,0x4C,0x02,0x8E, +0x4D,0x02,0xAD,0x42,0x00,0x48,0xA9,0x01,0x8D,0x42,0x00,0xA2,0x08,0x20,0xAF,0xC9, +0xF0,0x11,0x8A,0x48,0x98,0x48,0x20,0xCA,0xC9,0x90,0x20,0x8D,0x4C,0x02,0x68,0x68, +0x4C,0x05,0xCA,0xA0,0x82,0xA9,0x00,0x8D,0x48,0x02,0x8D,0xFF,0xD1,0x68,0x8D,0x42, +0x00,0xAD,0x4C,0x02,0x8C,0x4D,0x02,0xAC,0x4D,0x02,0x60,0x68,0xA8,0x68,0xAA,0x90, +0xCC,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xAE,0x2E,0x00,0xBD,0x4D,0x03,0x20, +0xDE,0xE7,0xB0,0x20,0x18,0x20,0x9E,0xE8,0xB0,0x1A,0xAE,0x2E,0x00,0xBD,0x4C,0x03, +0x20,0x16,0xE7,0xB0,0x0F,0xAE,0x2E,0x00,0x9D,0x40,0x03,0x85,0x20,0xA9,0x03,0x85, +0x17,0x4C,0x5C,0xE5,0x4C,0x10,0xE5,0x00,0x13,0x16,0xD1,0xE4,0xE4,0xE8,0x29,0xEB, +0xEE,0x00,0x00,0x2D,0x25,0x2D,0x2F,0x32,0x39,0x00,0x34,0x25,0x33,0x34,0x00,0x00, +0x00,0x32,0x2F,0x2D,0x32,0x21,0x2D,0x00,0x00,0x2B,0x25,0x39,0x22,0x2F,0x21,0x32, +0x24,0x00,0x34,0x25,0x33,0x34,0x00,0x00,0x00,0xB2,0x91,0x00,0x92,0x00,0x93,0x00, +0x94,0x00,0xA8,0x00,0xA1,0x00,0xA2,0x00,0x00,0x00,0x5B,0x00,0x11,0x00,0x12,0x00, +0x13,0x00,0x14,0x00,0x15,0x00,0x16,0x00,0x17,0x00,0x18,0x00,0x19,0x00,0x10,0x00, +0x1C,0x00,0x1E,0x00,0xA2,0x80,0xB3,0x00,0x00,0x00,0xFF,0xFF,0x00,0x31,0x00,0x37, +0x00,0x25,0x00,0x32,0x00,0x34,0x00,0x39,0x00,0x35,0x00,0x29,0x00,0x2F,0x00,0x30, +0x00,0x0D,0x00,0x1D,0x00,0xB2,0xB4,0x00,0x00,0x00,0x80,0xDC,0x80,0x00,0x21,0x00, +0x33,0x00,0x24,0x00,0x26,0x00,0x27,0x00,0x28,0x00,0x2A,0x00,0x2B,0x00,0x2C,0x00, +0x1B,0x00,0x0B,0x00,0x0A,0x00,0xA3,0x00,0x00,0x00,0x80,0xB3,0xA8,0x80,0x00,0x3A, +0x00,0x38,0x00,0x23,0x00,0x36,0x00,0x22,0x00,0x2E,0x00,0x2D,0x00,0x0C,0x00,0x0E, +0x00,0x0F,0x00,0x80,0xB3,0xA8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, +0xB3,0x80,0xB0,0x80,0xA1,0x80,0xA3,0x80,0xA5,0x80,0x80,0x80,0xA2,0x80,0xA1,0x80, +0xB2,0x80,0x00,0x33,0x00,0x30,0x00,0x21,0x00,0x23,0x00,0x25,0x00,0x00,0x00,0x22, +0x00,0x21,0x00,0x32,0x00,0x00,0x33,0x28,0x00,0x22,0x00,0x33,0x00,0x5C,0x00,0x36, +0x2F,0x29,0x23,0x25,0x00,0x03,0xA0,0x11,0xA9,0x00,0x18,0x71,0x4A,0x88,0x10,0xFB, +0x69,0x00,0x49,0xFF,0x60,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,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,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,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,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,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x0C,0x18,0x3C,0x06,0x3E,0x66,0x3E,0x00,0x30,0x18,0x00,0x66,0x66,0x66,0x3E,0x00, +0x36,0x6C,0x00,0x76,0x76,0x7E,0x6E,0x00,0x0C,0x18,0x7E,0x60,0x7C,0x60,0x7E,0x00, +0x00,0x00,0x3C,0x60,0x60,0x3C,0x18,0x30,0x3C,0x66,0x00,0x3C,0x66,0x66,0x3C,0x00, +0x30,0x18,0x00,0x3C,0x66,0x66,0x3C,0x00,0x30,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x1C,0x30,0x30,0x78,0x30,0x30,0x7E,0x00,0x00,0x66,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x66,0x00,0x66,0x66,0x66,0x3E,0x00,0x36,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x66,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,0x0C,0x18,0x00,0x66,0x66,0x66,0x3E,0x00, +0x0C,0x18,0x00,0x3C,0x66,0x66,0x3C,0x00,0x00,0x66,0x00,0x3C,0x66,0x66,0x3C,0x00, +0x66,0x00,0x66,0x66,0x66,0x66,0x7E,0x00,0x3C,0x66,0x1C,0x06,0x3E,0x66,0x3E,0x00, +0x3C,0x66,0x00,0x66,0x66,0x66,0x3E,0x00,0x3C,0x66,0x00,0x38,0x18,0x18,0x3C,0x00, +0x0C,0x18,0x3C,0x66,0x7E,0x60,0x3C,0x00,0x30,0x18,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x36,0x6C,0x00,0x7C,0x66,0x66,0x66,0x00,0x3C,0xC3,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x18,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00,0x30,0x18,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x18,0x00,0x18,0x3C,0x66,0x7E,0x66,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x66,0x66,0x18,0x3C,0x66,0x7E,0x66,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0x4C,0x09,0x50,0x20,0x86,0x50,0x4C,0x91,0x52,0x20,0x86,0x50,0xA9,0x00,0x85,0x80, +0x85,0x81,0x85,0x82,0x8D,0x08,0xD2,0xA9,0x03,0x8D,0x0F,0xD2,0x20,0x10,0x55,0xA9, +0x40,0x8D,0x0E,0xD4,0xA2,0x00,0x20,0x73,0x57,0xA2,0x3A,0xA0,0x51,0x20,0x9E,0x50, +0xA9,0xD0,0x8D,0x00,0x02,0xA9,0x50,0x8D,0x01,0x02,0xA2,0x0C,0xA9,0xAA,0x20,0x2A, +0x57,0xA2,0x00,0x8E,0x0A,0xD4,0xE8,0xD0,0xFA,0xAD,0x0B,0xD4,0xC9,0x18,0xB0,0xF9, +0xA9,0x10,0x85,0x87,0xA9,0xC0,0x8D,0x0E,0xD4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0xF9, +0xA9,0xFF,0x8D,0xFC,0x02,0xA5,0x86,0x29,0x0F,0xC9,0x01,0xF0,0x10,0xC9,0x02,0xF0, +0x0F,0xC9,0x04,0xF0,0x0E,0xA9,0x88,0x85,0x86,0xA9,0xFF,0x85,0x82,0x4C,0x91,0x52, +0x4C,0x57,0x55,0x4C,0x50,0x54,0xA9,0x11,0x85,0x86,0xA9,0x21,0x8D,0x2F,0x02,0xA9, +0xC0,0x8D,0x0E,0xD4,0xA9,0x41,0x85,0x83,0xA9,0xFF,0x8D,0xFC,0x02,0x60,0x85,0x8A, +0x98,0x48,0x8A,0x48,0xA9,0x00,0x8D,0x2F,0x02,0x8D,0xDC,0x02,0xA9,0xDA,0x8D,0x00, +0x02,0xA9,0x53,0x8D,0x01,0x02,0xA2,0x00,0x8A,0x20,0x2A,0x57,0x68,0xAA,0x68,0xA8, +0x8E,0x30,0x02,0x86,0x84,0x8C,0x31,0x02,0x84,0x85,0xA9,0x21,0x8D,0x2F,0x02,0x60, +0x48,0x8A,0x48,0xA2,0x7A,0xA5,0x87,0xC9,0x01,0xF0,0x1F,0x29,0x01,0xF0,0x0A,0xE6, +0xA2,0xA5,0xA2,0x29,0x20,0xF0,0x02,0xA2,0x2C,0x8E,0x0A,0xD4,0x8E,0x16,0xD0,0x18, +0x66,0x87,0xA9,0x00,0x85,0x4D,0x68,0xAA,0x68,0x40,0xA5,0x88,0xD0,0x16,0xAD,0x1F, +0xD0,0x29,0x02,0xD0,0x1A,0xA5,0x86,0x2A,0x26,0x86,0xA9,0x20,0x85,0xA2,0xA9,0xFF, +0x85,0x88,0xD0,0x0B,0xAD,0x1F,0xD0,0x29,0x02,0xF0,0x04,0xA9,0x00,0x85,0x88,0xA5, +0x86,0x29,0x0F,0x09,0x10,0x85,0x87,0xE6,0x80,0xD0,0x02,0xE6,0x81,0xA5,0x81,0xC9, +0xFA,0xD0,0x04,0x58,0x4C,0x75,0x50,0x4C,0xD3,0x50,0x70,0x70,0x70,0x70,0x70,0x47, +0x61,0x51,0x70,0x70,0x70,0x4E,0x00,0x30,0x70,0xF0,0xC6,0x71,0x51,0x70,0x86,0x70, +0x86,0x70,0x06,0x70,0x70,0x4E,0x00,0x30,0x70,0x70,0x70,0x42,0xB1,0x51,0x41,0x3A, +0x51,0x00,0x00,0x00,0x00,0x33,0x25,0x2C,0x26,0x00,0x34,0x25,0x33,0x34,0x00,0x00, +0x00,0x00,0x00,0x2D,0x25,0x2D,0x2F,0x32,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x21,0x35,0x24,0x29,0x2F,0x0D,0x36,0x29,0x33,0x35,0x21,0x2C,0x00, +0x00,0x00,0x00,0x2B,0x25,0x39,0x22,0x2F,0x21,0x32,0x24,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x21,0x2C,0x2C,0x00,0x34,0x25,0x33,0x34,0x33,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x42,0xB3,0xA5,0xAC,0xA5,0xA3,0xB4,0x56,0x0C,0x42,0xB3, +0xB4,0xA1,0xB2,0xB4,0x56,0x2F,0x32,0x42,0xB2,0xA5,0xB3,0xA5,0xB4,0x56,0x00,0x00, +0x00,0x70,0x70,0x70,0x46,0x00,0x30,0x70,0x70,0x06,0x70,0x08,0x70,0x70,0x06,0x70, +0x08,0x70,0x08,0x70,0x08,0x70,0x08,0x70,0x70,0x70,0x01,0xED,0x51,0xA0,0x40,0x42, +0xF5,0x51,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0xB2,0xA5,0xB3,0xA5,0xB4, +0x56,0x2F,0x32,0x42,0xA8,0xA5,0xAC,0xB0,0x56,0x34,0x2F,0x00,0x25,0x38,0x29,0x34, +0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x70,0x70,0x46,0x00,0x30,0x70,0x70,0x70,0x70, +0x02,0x70,0x70,0x02,0x70,0x02,0x70,0x02,0x70,0x02,0x70,0x02,0x70,0x70,0x01,0xED, +0x51,0x70,0x70,0x70,0x70,0x46,0x71,0x52,0x70,0x06,0x70,0x70,0x4B,0x00,0x31,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B, +0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x70,0x46,0x00,0x30,0x70,0x01,0xED, +0x51,0x00,0x00,0x21,0x35,0x24,0x29,0x2F,0x0D,0x36,0x29,0x33,0x35,0x21,0x2C,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x25,0x33,0x34,0x00,0x00,0x00,0x00,0x00, +0x00,0xA2,0xD1,0xA0,0x51,0xA9,0x00,0x20,0x9E,0x50,0xA2,0x01,0x20,0x73,0x57,0xA2, +0x00,0x20,0x59,0x57,0xA2,0x01,0x20,0x59,0x57,0xAD,0x20,0x30,0xC9,0xAA,0xF0,0x17, +0xA9,0x55,0x20,0x8E,0x53,0x20,0xB1,0x53,0x20,0x73,0xFF,0xB0,0x05,0xA9,0xFF,0x4C, +0xC4,0x52,0xA9,0xAA,0x20,0x8E,0x53,0xAD,0x24,0x30,0xC9,0xAA,0xF0,0x17,0xA9,0x55, +0x20,0x99,0x53,0x20,0xB1,0x53,0x20,0x92,0xFF,0xB0,0x05,0xA9,0xFF,0x4C,0xE2,0x52, +0xA9,0xAA,0x20,0x99,0x53,0xA9,0xC0,0x85,0x8D,0xA9,0x04,0x85,0xA4,0xA9,0x00,0x85, +0x8E,0x85,0x90,0x85,0x91,0x85,0x8F,0xA6,0x8E,0xBD,0x38,0x30,0x25,0x8D,0xC9,0x80, +0xF0,0x5C,0xC9,0x08,0xF0,0x58,0xA9,0x44,0x20,0xC3,0x53,0xA5,0xA4,0x20,0xA4,0x53, +0xA5,0xA4,0x49,0x0C,0x85,0xA4,0xA2,0x07,0xBD,0x4A,0x54,0xC5,0x91,0xF0,0x37,0xCA, +0x10,0xF6,0xA9,0x04,0x85,0x92,0xA2,0x00,0xA0,0x00,0x8A,0x91,0x90,0xE8,0xC8,0xD0, +0xF9,0x86,0x93,0xA0,0x00,0xB1,0x90,0xC5,0x93,0xD0,0x10,0xE6,0x93,0xC8,0xD0,0xF5, +0xE8,0xD0,0xE5,0xE6,0x91,0xC6,0x92,0xD0,0xDD,0xF0,0x0E,0x20,0xB1,0x53,0xA9,0x88, +0x20,0xC3,0x53,0x4C,0x5E,0x53,0x20,0xB5,0x53,0xA9,0xCC,0x20,0xC3,0x53,0xA5,0x8D, +0x30,0x26,0xA9,0xC0,0x85,0x8D,0xE6,0x8E,0x18,0xA5,0x8F,0x69,0x04,0x85,0x91,0x85, +0x8F,0xCD,0xE4,0x02,0xD0,0x81,0xA5,0x82,0xD0,0x03,0x4C,0xA9,0x52,0xA9,0x0C,0x20, +0xA4,0x53,0x20,0xB5,0x53,0x4C,0x57,0x55,0xA9,0x0C,0x85,0x8D,0xD0,0xDA,0xA2,0x04, +0x20,0x2A,0x57,0x29,0xFC,0x8D,0x23,0x30,0x60,0xA2,0x08,0x20,0x2A,0x57,0x29,0xFC, +0x8D,0x27,0x30,0x60,0x85,0xA5,0xAD,0x01,0xD3,0x29,0xF3,0x05,0xA5,0x8D,0x01,0xD3, +0x60,0xA2,0x3C,0xD0,0x02,0xA2,0x96,0xA0,0xFF,0x8C,0x0A,0xD4,0x88,0xD0,0xFA,0xCA, +0xD0,0xF5,0x60,0x48,0xA6,0x8E,0xA5,0x8D,0x49,0xFF,0x3D,0x38,0x30,0x9D,0x38,0x30, +0x68,0x25,0x8D,0x1D,0x38,0x30,0x9D,0x38,0x30,0x60,0x48,0xA9,0x0C,0x8D,0x17,0xD0, +0xAD,0xC8,0x02,0x8D,0x18,0xD0,0xA9,0x00,0x85,0x4D,0xAD,0xDC,0x02,0xF0,0x0E,0xA9, +0x00,0x8D,0xDC,0x02,0xA9,0x0C,0x20,0xA4,0x53,0x58,0x4C,0x0C,0x50,0xA5,0x8A,0xF0, +0x47,0xAD,0x1F,0xD0,0x29,0x01,0xF0,0x04,0xA9,0xB3,0xD0,0x02,0xA9,0x33,0x8D,0x1C, +0x30,0xAD,0x1F,0xD0,0x29,0x02,0xF0,0x04,0xA9,0xF3,0xD0,0x02,0xA9,0x73,0x8D,0x1E, +0x30,0xAD,0x1F,0xD0,0x29,0x04,0xF0,0x04,0xA9,0xAF,0xD0,0x02,0xA9,0x2F,0x8D,0x20, +0x30,0xAD,0x1F,0xD0,0x29,0x07,0xC9,0x07,0xF0,0x09,0xA9,0x64,0x8D,0x02,0xD2,0xA9, +0xA8,0xD0,0x02,0xA9,0x00,0x8D,0x03,0xD2,0x68,0x40,0x00,0x50,0x54,0x30,0x30,0x30, +0xA2,0x00,0x86,0x94,0xA2,0x03,0x20,0x73,0x57,0xA2,0x15,0xA0,0x52,0xA9,0xFF,0x20, +0x9E,0x50,0xA2,0x02,0x20,0x59,0x57,0xA2,0x07,0x20,0x59,0x57,0xA5,0x82,0xF0,0x13, +0xA6,0x94,0xBD,0x45,0x55,0xE6,0x94,0xA6,0x94,0xE0,0x13,0xD0,0x14,0x20,0xB5,0x53, +0x4C,0x91,0x52,0xAD,0xFC,0x02,0xC9,0xFF,0xF0,0xF9,0xC9,0xC0,0xB0,0xF5,0xAD,0xFC, +0x02,0xA2,0xFF,0x8E,0xFC,0x02,0x48,0x29,0x80,0xF0,0x05,0xA2,0x08,0x20,0x59,0x57, +0x68,0x48,0x29,0x40,0xF0,0x0A,0xA2,0x05,0x20,0x59,0x57,0xA2,0x04,0x20,0x59,0x57, +0x68,0x29,0x3F,0xC9,0x21,0xF0,0x68,0xC9,0x2C,0xF0,0x74,0xC9,0x34,0xF0,0x68,0xC9, +0x0C,0xF0,0x76,0xAA,0xBD,0x9C,0x57,0x48,0xA9,0x21,0x85,0x95,0xA9,0x30,0x85,0x96, +0x68,0xA0,0xFF,0xC8,0xD1,0x95,0xD0,0xFB,0xB1,0x95,0x49,0x80,0x91,0x95,0xA5,0x82, +0xF0,0x13,0x20,0x05,0x55,0xA2,0x14,0x20,0xB7,0x53,0x20,0x10,0x55,0xA2,0x0A,0x20, +0xB7,0x53,0x4C,0x62,0x54,0x20,0x05,0x55,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0xF9,0x20, +0x10,0x55,0x4C,0x62,0x54,0xA9,0x64,0x8D,0x00,0xD2,0xA9,0xA8,0x8D,0x01,0xD2,0x60, +0xA9,0x00,0x8D,0x01,0xD2,0x8D,0x03,0xD2,0x8D,0x05,0xD2,0x8D,0x07,0xD2,0x60,0xA2, +0x03,0x20,0x59,0x57,0x4C,0xDE,0x54,0xA2,0x06,0x20,0x59,0x57,0x4C,0xDE,0x54,0xA9, +0x7F,0x8D,0x52,0x30,0x8D,0x53,0x30,0xD0,0xA5,0xA9,0x32,0x8D,0x6D,0x30,0xA9,0x34, +0x8D,0x6E,0x30,0xD0,0x99,0x52,0x08,0x0A,0x2B,0x28,0x0D,0x3D,0x39,0x2D,0x1F,0x30, +0x35,0x1A,0x7F,0x2D,0x3F,0x28,0x0D,0xA2,0x02,0x20,0x73,0x57,0xA9,0x00,0x85,0x97, +0xA9,0x00,0x85,0x98,0xA2,0x31,0xA0,0x52,0xA9,0x00,0x20,0x9E,0x50,0xA2,0x09,0x20, +0x59,0x57,0xA5,0x97,0x4A,0x18,0x69,0x11,0x8D,0x0B,0x30,0xA2,0x0F,0xA9,0xFF,0x9D, +0x50,0x31,0x9D,0xB0,0x31,0x9D,0x10,0x32,0x9D,0x70,0x32,0x9D,0xD0,0x32,0xCA,0x10, +0xEC,0xA9,0x00,0x85,0x99,0xA9,0x0C,0x85,0x9A,0xA6,0x99,0xBD,0x17,0x57,0xA8,0xBD, +0x16,0x57,0xAA,0xA5,0x9A,0x20,0x85,0x56,0x18,0xA5,0x9A,0x69,0x06,0x85,0x9A,0xE6, +0x99,0xE6,0x99,0xA5,0x99,0xC9,0x14,0xD0,0xE0,0x20,0xB1,0x53,0xA2,0x54,0xA0,0x31, +0xA9,0x00,0x20,0x85,0x56,0xA9,0x51,0x20,0x6C,0x56,0xA2,0x86,0xA0,0x31,0xA9,0x00, +0x20,0x85,0x56,0xA9,0x5B,0x20,0x6C,0x56,0xA2,0xF8,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0xC7,0xA0,0x30,0xA9,0x54,0x20,0x85,0x56,0xA2,0x48,0xA0,0x32,0xA9,0x4E, +0x20,0x85,0x56,0xA9,0x44,0x20,0x6C,0x56,0xA2,0xCA,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0x1A,0xA0,0x32,0xA9,0x4E,0x20,0x85,0x56,0xA2,0xCA,0xA0,0x31,0xA9,0x06, +0x20,0x85,0x56,0xA9,0x3C,0x20,0x6C,0x56,0xA2,0x3C,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0x8C,0xA0,0x31,0xA9,0x4E,0x20,0x85,0x56,0xA2,0x3C,0xA0,0x31,0xA9,0x06, +0x20,0x85,0x56,0xA9,0x2D,0x20,0x6C,0x56,0xA2,0x9E,0xA0,0x30,0xA9,0x48,0x20,0x85, +0x56,0xA2,0xEE,0xA0,0x31,0xA9,0x4E,0x20,0x85,0x56,0xA9,0x35,0x20,0x6C,0x56,0x20, +0xB5,0x53,0xE6,0x97,0xE6,0x97,0xA5,0x97,0xC9,0x08,0xD0,0x07,0xA5,0x82,0xD0,0x06, +0x4C,0x5C,0x55,0x4C,0x60,0x55,0x20,0xB5,0x53,0x4C,0x50,0x54,0xA4,0x97,0x99,0x00, +0xD2,0xA9,0xA8,0x99,0x01,0xD2,0xA6,0x98,0xBD,0xB6,0x56,0xAA,0x20,0xB7,0x53,0xE6, +0x98,0x20,0x10,0x55,0x60,0x86,0x9B,0x84,0x9C,0xAA,0xA0,0x00,0xA9,0x10,0x85,0x9D, +0xA9,0x06,0x85,0xA3,0xBD,0xBC,0x56,0x11,0x9B,0x91,0x9B,0x20,0xAA,0x56,0xC6,0x9D, +0xD0,0xF2,0xE6,0x9D,0xE8,0xC6,0xA3,0xD0,0xEB,0x60,0x18,0xA5,0x9B,0x69,0x10,0x85, +0x9B,0x90,0x02,0xE6,0x9C,0x60,0x20,0x20,0x20,0x10,0x10,0x20,0x01,0x1F,0x3F,0x7F, +0x3E,0x1C,0x00,0x41,0x42,0x4C,0x70,0x40,0x00,0x01,0x02,0x04,0x08,0x10,0x00,0x43, +0x44,0x48,0x48,0x48,0x00,0x44,0x22,0x10,0x08,0x07,0x00,0x04,0x08,0x05,0x02,0x00, +0x00,0x30,0x48,0x88,0x84,0x84,0x00,0x88,0x88,0x90,0xA0,0xC0,0x00,0xF0,0x88,0x84, +0x82,0x82,0x00,0x82,0x82,0x84,0x88,0xF0,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x00,0x1C,0x3E,0x7F,0x7E,0x7C,0x40,0x00,0x00,0x00,0x00,0x00, +0x00,0x04,0x04,0x06,0x05,0x06,0xC1,0x30,0x21,0x31,0x81,0x31,0xF1,0x31,0x02,0x30, +0x62,0x30,0x22,0x31,0x82,0x31,0xC2,0x30,0xC2,0x31,0x48,0xBD,0xDC,0x57,0x85,0x9E, +0xBD,0xDD,0x57,0x85,0x9F,0xBD,0xDE,0x57,0x85,0xA0,0xBD,0xDF,0x57,0x85,0xA1,0xA0, +0x00,0x68,0x91,0x9E,0xE6,0x9E,0xD0,0x02,0xE6,0x9F,0x48,0xA5,0x9E,0xC5,0xA0,0xD0, +0xF0,0xA5,0x9F,0xC5,0xA1,0xD0,0xEA,0x68,0x60,0xBD,0x57,0xCA,0xA8,0xBD,0xEC,0x57, +0x85,0x9E,0xBD,0xF6,0x57,0xAA,0xB9,0x61,0xCA,0x9D,0x00,0x30,0xC8,0xE8,0xC6,0x9E, +0xD0,0xF4,0x60,0xBD,0x8C,0x57,0x8D,0xC4,0x02,0xBD,0x90,0x57,0x8D,0xC5,0x02,0xBD, +0x94,0x57,0x8D,0xC6,0x02,0xBD,0x98,0x57,0x8D,0xC8,0x02,0x60,0x2C,0x0C,0x2A,0x18, +0x0F,0x32,0x0C,0x0E,0xD2,0xD6,0x00,0xB4,0xD2,0xA0,0x30,0xB4,0x2C,0x2A,0x1B,0x91, +0x92,0x2B,0x0B,0x0A,0x2F,0x00,0x30,0x35,0xB2,0x29,0x0D,0x1D,0x36,0xA8,0x23,0x93, +0x94,0x22,0x38,0x3A,0x14,0x00,0x13,0x16,0x5B,0x15,0x12,0x11,0x0C,0x00,0x0E,0x2E, +0x00,0x2D,0x0F,0xA1,0x32,0x00,0x25,0x39,0xFF,0x34,0x37,0x31,0x19,0x00,0x10,0x17, +0xA2,0x18,0x1C,0x1E,0x26,0x28,0x24,0x00,0xA3,0x27,0x33,0x21,0x00,0x30,0xFF,0x3E, +0x20,0x30,0x24,0x30,0x24,0x30,0x28,0x30,0x00,0x30,0x20,0x30,0x13,0x03,0x13,0x13, +0x04,0x04,0x03,0xA8,0x03,0x07,0x00,0x28,0x00,0xB7,0x92,0xAB,0x4C,0x22,0x72,0x04, +0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2, +0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0, +0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1, +0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18, +0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B, +0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86, +0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48, +0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65, +0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF, +0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85, +0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB, +0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03, +0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED, +0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4, +0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4, +0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20, +0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0, +0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60, +0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9, +0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82, +0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85, +0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00, +0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00, +0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20, +0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18, +0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09, +0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5, +0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4, +0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C, +0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62, +0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5, +0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0, +0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32, +0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7, +0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01, +0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5, +0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA, +0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60, +0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F, +0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4, +0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5, +0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10, +0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5, +0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90, +0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00, +0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5, +0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0, +0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7, +0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD, +0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04, +0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4, +0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5, +0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05, +0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90, +0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9, +0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4, +0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62, +0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2, +0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4, +0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94, +0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68, +0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02, +0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18, +0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60, +0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00, +0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA, +0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01, +0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0, +0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8, +0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95, +0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60, +0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5, +0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0, +0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99, +0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0, +0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F, +0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5, +0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60, +0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB, +0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA, +0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2, +0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00, +0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00, +0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60, +0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28, +0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6, +0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2, +0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1, +0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC, +0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00, +0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60, +0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1, +0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10, +0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5, +0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD, +0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20, +0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10, +0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40, +0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD, +0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94, +0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E, +0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27, +0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15, +0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40, +0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD, +0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7, +0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20, +0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0, +0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0xF0,0x05,0x30,0x03,0x4C,0xF6,0xDF,0x38,0x60, +0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6, +0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28, +0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20, +0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6, +0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20, +0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49, +0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05, +0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98, +0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00, +0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39, +0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64, +0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12, +0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16, +0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16, +0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29, +0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19, +0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99, +0x3F,0x78,0x53,0x98,0x16,0x34,0xA5,0xD4,0x85,0xE0,0x38,0x4C,0xE0,0xDE,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00, +0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00, +0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00, +0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00, +0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00, +0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, +0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00, +0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00, +0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00, +0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00, +0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00, +0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30, +0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, +0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00, +0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00, +0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00, +0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00, +0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00, +0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00, +0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00, +0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00, +0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00, +0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00, +0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, +0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, +0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00, +0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00, +0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00, +0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18, +0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03, +0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F, +0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00, +0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0, +0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18, +0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18, +0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, +0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00, +0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, +0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00, +0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00, +0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00, +0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, +0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C, +0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00, +0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00, +0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, +0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, +0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06, +0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, +0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00, +0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00, +0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78, +0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00, +0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00, +0x93,0xEF,0x2D,0xF2,0x49,0xF2,0xAF,0xF2,0x1D,0xF2,0x2C,0xF2,0x4C,0x6E,0xEF,0x00, +0x8D,0xEF,0x2D,0xF2,0x7F,0xF1,0xA3,0xF1,0x1D,0xF2,0xAE,0xF9,0x4C,0x6E,0xEF,0x00, +0x1D,0xF2,0x1D,0xF2,0xFC,0xF2,0x2C,0xF2,0x1D,0xF2,0x2C,0xF2,0x4C,0x6E,0xEF,0x00, +0xC1,0xFE,0x06,0xFF,0xC0,0xFE,0xCA,0xFE,0xA2,0xFE,0xC0,0xFE,0x4C,0x99,0xFE,0x00, +0xE5,0xFC,0xCE,0xFD,0x79,0xFD,0xB3,0xFD,0xCB,0xFD,0xE4,0xFC,0x4C,0xDB,0xFC,0x00, +0x4C,0xA3,0xC6,0x4C,0xB3,0xC6,0x4C,0xDF,0xE4,0x4C,0x33,0xC9,0x4C,0x72,0xC2,0x4C, +0xE2,0xC0,0x4C,0x8A,0xC2,0x4C,0x5C,0xE9,0x4C,0x17,0xEC,0x4C,0x0C,0xC0,0x4C,0xC1, +0xE4,0x4C,0x23,0xF2,0x4C,0x90,0xC2,0x4C,0xC8,0xC2,0x4C,0x8D,0xFD,0x4C,0xF7,0xFC, +0x4C,0x23,0xF2,0x4C,0x00,0x50,0x4C,0xBC,0xEE,0x4C,0x15,0xE9,0x4C,0x98,0xE8,0x90, +0xC9,0x95,0xC9,0x9A,0xC9,0x9F,0xC9,0xA4,0xC9,0xA9,0xC9,0x4C,0x0C,0xC9,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,0x00,0x00, +0x60,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xDB,0x9D,0x46,0x03,0xA9,0xE4,0x9D, +0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8,0x60,0xA0,0x85,0x60,0x85, +0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90,0x05,0xA0,0x86,0x4C,0x70, +0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8,0xC0,0x0C,0x90,0xF4,0xA5, +0x20,0xC9,0x7F,0xD0,0x15,0xA5,0x22,0xC9,0x0C,0xF0,0x71,0xAD,0xE9,0x02,0xD0,0x05, +0xA0,0x82,0x4C,0x70,0xE6,0x20,0x29,0xCA,0x30,0xF8,0xA0,0x84,0xA5,0x22,0xC9,0x03, +0x90,0x25,0xA8,0xC0,0x0E,0x90,0x02,0xA0,0x0E,0x84,0x17,0xB9,0x2A,0xE7,0xF0,0x0F, +0xC9,0x02,0xF0,0x48,0xC9,0x08,0xB0,0x5F,0xC9,0x04,0xF0,0x76,0x4C,0x1E,0xE6,0xA5, +0x20,0xC9,0xFF,0xF0,0x05,0xA0,0x81,0x4C,0x70,0xE6,0xAD,0xE9,0x02,0xD0,0x27,0x20, +0xFF,0xE6,0xB0,0x22,0xA9,0x00,0x8D,0xEA,0x02,0x8D,0xEB,0x02,0x20,0x95,0xE6,0xB0, +0xE6,0x20,0xEA,0xE6,0xA9,0x0B,0x85,0x17,0x20,0x95,0xE6,0xA5,0x2C,0x85,0x26,0xA5, +0x2D,0x85,0x27,0x4C,0x72,0xE6,0x20,0xF9,0xEE,0x4C,0x70,0xE6,0xA0,0x01,0x84,0x23, +0x20,0x95,0xE6,0xB0,0x03,0x20,0xEA,0xE6,0xA9,0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27, +0xA9,0xDB,0x85,0x26,0x4C,0x72,0xE6,0xA5,0x20,0xC9,0xFF,0xD0,0x05,0x20,0xFF,0xE6, +0xB0,0xA5,0x20,0x95,0xE6,0x20,0xEA,0xE6,0xA6,0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C, +0x72,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0,0x83,0x4C,0x70,0xE6,0x20,0x95,0xE6, +0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20,0xEA,0xE6,0x85,0x2F,0x4C,0x72,0xE6, +0x20,0xEA,0xE6,0x85,0x2F,0x30,0x41,0xA0,0x00,0x91,0x24,0x20,0xD1,0xE6,0xA5,0x22, +0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20,0xBB,0xE6,0x4C,0x18,0xE6, +0x20,0xBB,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x1D,0x20,0xEA,0xE6,0x85,0x2F, +0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9,0x89,0x85,0x23,0x20,0xC8,0xE6,0xA0, +0x00,0xA9,0x9B,0x91,0x24,0x20,0xD1,0xE6,0x20,0xD8,0xE6,0x4C,0x72,0xE6,0xA5,0x22, +0x25,0x2A,0xD0,0x05,0xA0,0x87,0x4C,0x70,0xE6,0x20,0x95,0xE6,0xB0,0xF8,0xA5,0x28, +0x05,0x29,0xD0,0x06,0xA5,0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F, +0x20,0xEA,0xE6,0x08,0x20,0xD1,0xE6,0x20,0xBB,0xE6,0x28,0x30,0x1D,0xA5,0x22,0x29, +0x02,0xD0,0x06,0xA5,0x2F,0xC9,0x9B,0xF0,0x11,0xA5,0x28,0x05,0x29,0xD0,0xDB,0xA5, +0x22,0x29,0x02,0xD0,0x05,0xA9,0x9B,0x20,0xEA,0xE6,0x20,0xD8,0xE6,0x4C,0x72,0xE6, +0x84,0x23,0xA4,0x2E,0xB9,0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00, +0x8E,0xE9,0x02,0xB5,0x20,0x99,0x40,0x03,0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F, +0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0,0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9, +0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85,0x2D,0xA4,0x17,0xB9,0x2A,0xE7,0xA8,0xB1, +0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86,0x2C,0x18,0x60,0xA5,0x28,0xD0,0x02,0xC6, +0x29,0xC6,0x28,0xA5,0x28,0x05,0x29,0x60,0xA5,0x24,0xD0,0x02,0xC6,0x25,0xC6,0x24, +0x60,0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28, +0x85,0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0xF4,0xE6,0x84, +0x23,0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0x38, +0xA0,0x01,0xB1,0x24,0xE9,0x31,0x30,0x04,0xC9,0x09,0x90,0x02,0xA9,0x00,0x85,0x21, +0xE6,0x21,0xA0,0x00,0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x09,0x88, +0x88,0x88,0x10,0xF6,0xA0,0x82,0x38,0x60,0x98,0x85,0x20,0x18,0x60,0x00,0x04,0x04, +0x04,0x04,0x06,0x06,0x06,0x06,0x02,0x08,0x0A,0xA5,0x08,0xF0,0x25,0xA9,0xE9,0x85, +0x4A,0xA9,0x03,0x85,0x4B,0xA0,0x12,0x18,0xB1,0x4A,0xAA,0xC8,0x71,0x4A,0xF0,0x26, +0xB1,0x4A,0x85,0x4B,0x86,0x4A,0x20,0x56,0xCB,0xD0,0x1B,0x20,0x94,0xE8,0xB0,0x16, +0x90,0xE3,0xA9,0x00,0x8D,0xFB,0x03,0x8D,0xFC,0x03,0xA9,0x4F,0xD0,0x2D,0xA9,0x00, +0xA8,0x20,0xBE,0xE7,0x10,0x01,0x60,0x18,0xAD,0xE7,0x02,0x6D,0xEA,0x02,0x8D,0x12, +0x03,0xAD,0xE8,0x02,0x6D,0xEB,0x02,0x8D,0x13,0x03,0x38,0xAD,0xE5,0x02,0xED,0x12, +0x03,0xAD,0xE6,0x02,0xED,0x13,0x03,0xB0,0x09,0xA9,0x4E,0xA8,0x20,0xBE,0xE7,0x4C, +0x6E,0xE7,0xAD,0xEC,0x02,0xAE,0xE7,0x02,0x8E,0xEC,0x02,0xAE,0xE8,0x02,0x8E,0xED, +0x02,0x20,0xDE,0xE7,0x30,0xE3,0x38,0x20,0x9E,0xE8,0xB0,0xDD,0x90,0xB0,0x48,0xA2, +0x09,0xBD,0xD4,0xE7,0x9D,0x00,0x03,0xCA,0x10,0xF7,0x8C,0x0B,0x03,0x68,0x8D,0x0A, +0x03,0x4C,0x59,0xE4,0x4F,0x01,0x40,0x40,0xEA,0x02,0x1E,0x00,0x04,0x00,0x8D,0x13, +0x03,0xA2,0x00,0x8E,0x12,0x03,0xCA,0x8E,0x15,0x03,0xAD,0xEC,0x02,0x6A,0x90,0x08, +0xEE,0xEC,0x02,0xD0,0x03,0xEE,0xED,0x02,0xAD,0xEC,0x02,0x8D,0xD1,0x02,0xAD,0xED, +0x02,0x8D,0xD2,0x02,0xA9,0x16,0x8D,0xCF,0x02,0xA9,0xE8,0x8D,0xD0,0x02,0xA9,0x80, +0x8D,0xD3,0x02,0x4C,0x45,0xC7,0xAE,0x15,0x03,0xE8,0x8E,0x15,0x03,0xF0,0x08,0xAE, +0x15,0x03,0xBD,0x7D,0x03,0x18,0x60,0xA9,0x80,0x8D,0x15,0x03,0x20,0x33,0xE8,0x10, +0xEE,0x38,0x60,0xA2,0x0B,0xBD,0x51,0xE8,0x9D,0x00,0x03,0xCA,0x10,0xF7,0xAE,0x12, +0x03,0x8E,0x0A,0x03,0xE8,0x8E,0x12,0x03,0xAD,0x13,0x03,0x8D,0x00,0x03,0x4C,0x59, +0xE4,0x00,0x01,0x26,0x40,0xFD,0x03,0x1E,0x00,0x80,0x00,0x00,0x00,0x8C,0x12,0x03, +0x8D,0x13,0x03,0xA9,0xE9,0x85,0x4A,0xA9,0x03,0x85,0x4B,0xA0,0x12,0xB1,0x4A,0xAA, +0xC8,0xB1,0x4A,0xCD,0x13,0x03,0xD0,0x07,0xEC,0x12,0x03,0xD0,0x02,0x18,0x60,0xC9, +0x00,0xD0,0x06,0xE0,0x00,0xD0,0x02,0x38,0x60,0x86,0x4A,0x85,0x4B,0x20,0x56,0xCB, +0xD0,0xF5,0xF0,0xD7,0x38,0x08,0xB0,0x28,0x8D,0xED,0x02,0x8C,0xEC,0x02,0x08,0xA9, +0x00,0xA8,0x20,0x5D,0xE8,0xB0,0x27,0xA0,0x12,0xAD,0xEC,0x02,0x91,0x4A,0xAA,0xC8, +0xAD,0xED,0x02,0x91,0x4A,0x86,0x4A,0x85,0x4B,0xA9,0x00,0x91,0x4A,0x88,0x91,0x4A, +0x20,0x00,0xE9,0x90,0x0C,0xAD,0xED,0x02,0xAC,0xEC,0x02,0x20,0x15,0xE9,0x28,0x38, +0x60,0x28,0xB0,0x09,0xA9,0x00,0xA0,0x10,0x91,0x4A,0xC8,0x91,0x4A,0x18,0xA0,0x10, +0xAD,0xE7,0x02,0x71,0x4A,0x8D,0xE7,0x02,0xC8,0xAD,0xE8,0x02,0x71,0x4A,0x8D,0xE8, +0x02,0xA0,0x0F,0xA9,0x00,0x91,0x4A,0x20,0x56,0xCB,0xA0,0x0F,0x91,0x4A,0x18,0x60, +0x18,0xA5,0x4A,0x69,0x0C,0x8D,0x12,0x03,0xA5,0x4B,0x69,0x00,0x8D,0x13,0x03,0x6C, +0x12,0x03,0x4C,0x72,0xC2,0x20,0x5D,0xE8,0xB0,0x3B,0xA8,0xA5,0x4A,0x48,0xA5,0x4B, +0x48,0x86,0x4A,0x84,0x4B,0xAD,0x44,0x02,0xD0,0x0F,0xA0,0x10,0x18,0xB1,0x4A,0xC8, +0x71,0x4A,0xD0,0x1F,0x20,0x56,0xCB,0xD0,0x1A,0xA0,0x12,0xB1,0x4A,0xAA,0xC8,0xB1, +0x4A,0xA8,0x68,0x85,0x4B,0x68,0x85,0x4A,0x98,0xA0,0x13,0x91,0x4A,0x88,0x8A,0x91, +0x4A,0x18,0x60,0x68,0x68,0x38,0x60,0x00,0x00,0x4C,0x33,0xC9,0xA9,0x3C,0x8D,0x02, +0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03,0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2, +0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85,0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03, +0x4C,0x9D,0xEB,0xA9,0x00,0x8D,0x0F,0x03,0xA9,0x01,0x8D,0xBD,0x02,0xA9,0x0D,0x8D, +0x9C,0x02,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D,0x06,0xD2,0x18,0xAD,0x00,0x03, +0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02,0x03,0x8D,0x3B,0x02,0xAD,0x0A, +0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02,0x18,0xA9,0x3A,0x85,0x32,0x69, +0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0x34,0x8D,0x03,0xD3,0x20,0xAF, +0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x08,0xCE,0x9C,0x02,0x10,0xB4,0x4C,0x22, +0xEA,0xAD,0x03,0x03,0x10,0x0D,0xA9,0x0D,0x8D,0x9C,0x02,0x20,0x87,0xEB,0x20,0xAF, +0xEC,0xF0,0x2F,0x20,0x9A,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20,0xC0,0xEC,0xF0,0x12, +0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1E,0x20,0x87,0xEB,0x20, +0xFD,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30,0xA5,0x30,0xC9,0x01, +0xF0,0x08,0xCE,0xBD,0x02,0x30,0x03,0x4C,0x8D,0xE9,0x20,0x84,0xEC,0xA9,0x00,0x85, +0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18,0xA9,0x3E,0x85, +0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF,0x85,0x3C,0x20, +0xFD,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02,0xC9,0x41,0xF0, +0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30,0xD0,0x04,0xA9, +0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F,0x02,0xD0,0x02, +0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20,0x17,0xEC,0xA0, +0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85,0x31,0xA5,0x11, +0xD0,0x03,0x4C,0xC7,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x84,0xEC,0x60,0x98,0x48,0xE6, +0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35,0x90,0x1C,0xA5, +0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85,0x3B,0xD0,0x09,0xA5,0x10, +0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40,0xA0,0x00,0xB1,0x32,0x8D, +0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xD7,0xEA,0xA5,0x3B,0xF0,0x0B, +0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2,0x68,0x40,0xA9,0x00,0xAC, +0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9,0x01,0x85,0x30,0x20,0x40, +0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C,0xC7,0xED,0xAD,0x17,0x03, +0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30,0x60,0x98,0x48,0xAD,0x0F, +0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29,0x20,0xD0,0x04,0xA0,0x8E, +0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31,0xF0,0x04,0xA0,0x8F,0x84, +0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D,0xD2,0xA0,0x00,0x91,0x32, +0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5, +0x34,0xA5,0x33,0xE5,0x35,0x90,0xDE,0xA5,0x3C,0xF0,0x06,0xA9,0x00,0x85,0x3C,0xF0, +0xD0,0xA9,0xFF,0x85,0x38,0xD0,0xCE,0x18,0xAD,0x04,0x03,0x85,0x32,0x6D,0x08,0x03, +0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09,0x03,0x85,0x35,0x60,0xAD,0x03,0x03, +0x10,0x32,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0x20,0x17,0xEC,0xA6, +0x62,0xBC,0x15,0xEE,0xAD,0x0B,0x03,0x30,0x03,0xBC,0x11,0xEE,0xA2,0x00,0x20,0xE2, +0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x87,0xEB,0x20,0x88, +0xEA,0x4C,0x04,0xEC,0xA9,0xFF,0x8D,0x0F,0x03,0xA6,0x62,0xBC,0x17,0xEE,0xAD,0x0B, +0x03,0x30,0x03,0xBC,0x13,0xEE,0xA2,0x00,0x20,0xE2,0xED,0xA9,0x34,0x8D,0x02,0xD3, +0xAD,0x17,0x03,0xD0,0xFB,0x20,0x87,0xEB,0x20,0x9A,0xEC,0x20,0xE2,0xED,0x20,0x3D, +0xED,0x20,0xFD,0xEA,0xAD,0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x2A, +0xEA,0xA9,0x00,0x8D,0x17,0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00, +0x03,0xC0,0x60,0xD0,0x0C,0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00, +0xD2,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x56,0xEC, +0xA9,0x07,0x2D,0x32,0x02,0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2, +0xA9,0xC7,0x25,0x10,0x09,0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2, +0xA2,0x06,0xA9,0xA8,0xA4,0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10, +0xF9,0xA9,0xA0,0x8D,0x05,0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2, +0x8D,0x03,0xD2,0x60,0xEA,0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06, +0xA9,0x00,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8, +0x29,0x3F,0xAA,0x98,0x6A,0x29,0xC0,0xA8,0x60,0x2C,0xEB,0xAD,0xEA,0xEC,0xEA,0xA2, +0x01,0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x20,0x88,0xEA,0xA0,0x02,0xA2,0x00, +0x20,0xE2,0xED,0x20,0x37,0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x2E, +0xED,0x8D,0x10,0x03,0xAD,0x0C,0x03,0x20,0x2E,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03, +0x38,0xED,0x0C,0x03,0x8D,0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA6, +0x62,0xA9,0x00,0x38,0xFD,0x19,0xEE,0x18,0x7D,0x19,0xEE,0x88,0x10,0xF9,0x18,0x6D, +0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38,0xE9,0x16,0xAA,0x98,0x29,0x07,0xA8,0xA9, +0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0,0x00,0x38,0xE9,0x07,0x10,0x01,0x88,0x18, +0x7D,0xF9,0xED,0x8D,0xEE,0x02,0x98,0x7D,0xFA,0xED,0x8D,0xEF,0x02,0x60,0xC9,0x7C, +0x30,0x04,0x38,0xE9,0x7C,0x60,0x18,0xA6,0x62,0x7D,0x1B,0xEE,0x60,0xA5,0x11,0xD0, +0x03,0x4C,0xC7,0xED,0x78,0xAD,0x17,0x03,0xD0,0x02,0xF0,0x25,0xAD,0x0F,0xD2,0x29, +0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4,0xA4,0x14,0x8E,0x0C,0x03,0x8C,0x0D, +0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5,0x11,0xF0,0x5B,0xAD,0x17,0x03,0xD0, +0x04,0x58,0x4C,0x27,0xEB,0xAD,0x0F,0xD2,0x29,0x10,0xCD,0x16,0x03,0xF0,0xE9,0x8D, +0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30,0x0C,0xAD,0x0B,0xD4,0xA4,0x14,0x20, +0xC8,0xEC,0xA0,0x09,0xD0,0xD2,0xAD,0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D, +0x06,0xD2,0xA9,0x00,0x8D,0x0F,0xD2,0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91, +0x32,0xC8,0x91,0x32,0xA9,0xAA,0x85,0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5, +0x33,0x69,0x00,0x85,0x33,0x58,0x60,0x20,0x84,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0xA9, +0x3C,0x8D,0x03,0xD3,0xA9,0x80,0x85,0x30,0xAE,0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C, +0x2A,0xEA,0xA9,0x11,0x8D,0x26,0x02,0xA9,0xEC,0x8D,0x27,0x02,0xA9,0x01,0x78,0x20, +0x5C,0xE4,0xA9,0x01,0x8D,0x17,0x03,0x58,0x60,0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9, +0x04,0x54,0x05,0xAF,0x05,0x0A,0x06,0x65,0x06,0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0, +0x07,0xB4,0x96,0x78,0x64,0x0F,0x0D,0x0A,0x08,0x83,0x9C,0x07,0x20,0x18,0x10,0x0A, +0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4,0xC4,0x1C,0x10,0x64,0xC4,0x17,0x17,0x0B, +0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x17,0x0B,0xBF,0x61,0x13,0x13,0x09, +0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x13,0x09,0x9F,0x41,0x02,0x06,0x07, +0x08,0x09,0x0A,0x0B,0x0D,0x0F,0x0F,0x0F,0x0F,0x04,0x05,0x0C,0x0E,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x03,0x02,0x02, +0x01,0x01,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x03,0x28,0x14,0x14, +0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x28,0x28,0xA0,0xA0,0x18,0x18,0x0C, +0x18,0x30,0x30,0x60,0x60,0xC0,0xC0,0xC0,0xC0,0x18,0x0C,0xC0,0xC0,0x00,0x00,0x00, +0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01,0x01,0x00,0x00,0x03,0x02,0xFF,0xF0,0x0F, +0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x48,0x98,0x48,0x8A, +0xA2,0x00,0xDD,0x1A,0x03,0xF0,0x1E,0xE8,0xE8,0xE8,0xE0,0x22,0x30,0xF4,0xA2,0x00, +0xA8,0xA9,0x00,0xDD,0x1A,0x03,0xF0,0x13,0xE8,0xE8,0xE8,0xE0,0x22,0x30,0xF4,0x68, +0x68,0xA0,0xFF,0x38,0x60,0x68,0xA8,0x68,0xE8,0x38,0x60,0x98,0x9D,0x1A,0x03,0x68, +0x9D,0x1B,0x03,0x68,0x9D,0x1C,0x03,0x18,0x60,0xA0,0x00,0xB1,0x24,0xA4,0x21,0x20, +0xBE,0xE7,0x10,0x03,0xA0,0x82,0x60,0xA9,0x7F,0x85,0x20,0xA9,0x25,0x85,0x26,0xA9, +0xEF,0x85,0x27,0xAD,0xEC,0x02,0xAE,0x2E,0x00,0x9D,0x4D,0x03,0xA0,0x00,0xB1,0x24, +0x9D,0x4C,0x03,0xA0,0x01,0x60,0x48,0x8A,0x48,0x29,0x0F,0xD0,0x10,0xE0,0x80,0x10, +0x0C,0xAD,0xE9,0x02,0xD0,0x0B,0xA0,0x82,0x68,0x68,0xC0,0x00,0x60,0xA0,0x86,0x30, +0xF7,0x8E,0x2E,0x00,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8,0xC0,0x0C, +0x30,0xF4,0x20,0x29,0xCA,0x30,0xE1,0x68,0xAA,0x68,0xA8,0xA5,0x27,0x48,0xA5,0x26, +0x48,0x98,0xA0,0x92,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x05,0xFD,0xA9,0xFF, +0x8D,0xFC,0x02,0xAD,0xE4,0x02,0x85,0x6A,0xA9,0x40,0x8D,0xBE,0x02,0xA9,0x51,0x85, +0x79,0xA9,0xFB,0x85,0x7A,0xA9,0x11,0x85,0x60,0xA9,0xFC,0x85,0x61,0x60,0xA5,0x2B, +0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F,0x85,0x2A,0xA9,0x00,0x85,0x57,0xC9,0x10, +0x90,0x05,0xA9,0x91,0x4C,0x54,0xF1,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0xCC,0x8D,0x6B, +0x02,0xA9,0x02,0x8D,0xF3,0x02,0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05, +0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x40,0x8D,0x0E,0xD4,0x2C,0x6E,0x02,0x10,0x0C, +0xA9,0xC4,0x8D,0x00,0x02,0xA9,0xFC,0x8D,0x01,0x02,0xA9,0xC0,0x8D,0x0E,0xD4,0xA9, +0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01,0x99, +0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0x08,0xFB,0x9D,0xC4,0x02,0xCA,0x10,0xF7, +0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x4D,0xEE, +0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x1D,0xEE,0xA9,0x28,0x20,0x7A,0xF5,0x88,0xD0, +0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8,0xE0,0x08,0x90,0x1F,0xE0,0x0F,0xF0, +0x0D,0xE0,0x0C,0xB0,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10, +0x20,0x7A,0xF5,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5, +0x64,0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x78, +0xF5,0xBD,0x5D,0xEE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0x20,0x65,0xF5,0xA5, +0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA9,0x41,0x20,0x70,0xF5,0x86,0x66,0xA9,0x18, +0x8D,0xBF,0x02,0xA5,0x57,0xC9,0x0C,0xB0,0x04,0xC9,0x09,0xB0,0x39,0xA5,0x2A,0x29, +0x10,0xF0,0x33,0xA9,0x04,0x8D,0xBF,0x02,0xA2,0x02,0xAD,0x6E,0x02,0xF0,0x03,0x20, +0xA0,0xF5,0xA9,0x02,0x20,0x69,0xF5,0xCA,0x10,0xF8,0xA4,0x6A,0x88,0x98,0x20,0x70, +0xF5,0xA9,0x60,0x20,0x70,0xF5,0xA9,0x42,0x20,0x69,0xF5,0x18,0xA9,0x10,0x65,0x66, +0xA8,0xBE,0x2D,0xEE,0xD0,0x15,0xA4,0x66,0xBE,0x2D,0xEE,0xA5,0x57,0xD0,0x0C,0xAD, +0x6E,0x02,0xF0,0x07,0x20,0xA0,0xF5,0xA9,0x22,0x85,0x51,0xA5,0x51,0x20,0x70,0xF5, +0xCA,0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x26,0xC9,0x0F,0xF0,0x04,0xC9,0x0C,0xB0, +0x1E,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20,0x70,0xF5,0xA9,0x00,0x20,0x70,0xF5, +0xA5,0x51,0x09,0x40,0x20,0x70,0xF5,0xA5,0x51,0x20,0x70,0xF5,0xCA,0xD0,0xF8,0xA5, +0x59,0x20,0x70,0xF5,0xA5,0x58,0x20,0x70,0xF5,0xA5,0x51,0x09,0x40,0x20,0x70,0xF5, +0xA9,0x70,0x20,0x70,0xF5,0xA9,0x70,0x20,0x70,0xF5,0xA5,0x64,0x8D,0x30,0x02,0xA5, +0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x70,0xF5,0xA5,0x64,0x8D,0xE5,0x02,0xA5,0x65, +0x8D,0xE6,0x02,0xA0,0x01,0xAD,0x30,0x02,0x91,0x68,0xC8,0xAD,0x31,0x02,0x91,0x68, +0xA5,0x4C,0x10,0x10,0x8D,0xEC,0x03,0x20,0x94,0xEF,0xAD,0xEC,0x03,0xA0,0x00,0x8C, +0xEC,0x03,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0x20,0xF4,0x8D,0x90,0x02, +0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02,0x4C,0x0B,0xF2, +0x20,0xCA,0xF6,0x20,0x8F,0xF1,0x20,0x6A,0xF7,0x20,0x0A,0xF6,0x4C,0x1E,0xF2,0x20, +0xAC,0xF5,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10,0xF9,0x8D,0xFA, +0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0xC9,0x7D,0xD0,0x06,0x20,0x20,0xF4,0x4C,0x0B, +0xF2,0x20,0xCA,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0,0x06,0x20,0x61,0xF6,0x4C,0x0B, +0xF2,0x20,0xCA,0xF1,0x20,0x0E,0xF6,0x4C,0x0B,0xF2,0xAD,0xFF,0x02,0xD0,0xFB,0xA2, +0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB,0x02,0xA8,0x2A,0x2A,0x2A,0x2A, +0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0x49,0xFB,0x8D,0xFA,0x02,0x20,0xAC,0xF5,0xAD, +0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0xF2,0xF1,0x2D,0xA0,0x02,0x85,0x50,0xAD, +0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64,0x60,0x20,0x8F,0xF1,0x85,0x5D, +0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49,0x80,0x20,0xE9,0xF1,0xA4,0x4C, +0x4C,0x26,0xF2,0x4C,0xFC,0xC8,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x2C,0x6E, +0x02,0x10,0xEB,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x00,0x8D,0x6E,0x02,0xA9,0xCE,0x8D, +0x00,0x02,0xA9,0xC0,0x8D,0x01,0x02,0x4C,0x94,0xEF,0x20,0x62,0xF9,0x20,0xBC,0xF6, +0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D,0x20,0xFD,0xF2,0x84, +0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xBE,0xF2,0x20,0x62,0xF9,0xA5,0x63, +0xC9,0x71,0xD0,0x03,0x20,0x56,0xF5,0x4C,0x5C,0xF2,0x20,0x18,0xF7,0x20,0xB1,0xF8, +0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11,0xC6,0x6B,0xF0,0x0D, +0xA5,0x4C,0x30,0xF8,0x20,0x80,0xF1,0x8D,0xFB,0x02,0x4C,0x62,0xF9,0x20,0x61,0xF6, +0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x0B,0xF2,0x84,0x4C,0x4C,0x62,0xF9,0x6C,0x64,0x00, +0x8D,0xFB,0x02,0x20,0x62,0xF9,0x20,0xBC,0xF6,0xA9,0x00,0x8D,0xE8,0x03,0x20,0x18, +0xF7,0x20,0x3C,0xF9,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xB4,0xF1,0x4C,0x62,0xF9,0xAD, +0xFE,0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xAD,0xE8,0x03,0xF0,0x05, +0x8A,0x18,0x69,0x2D,0xAA,0xBD,0x0D,0xFB,0x85,0x64,0xBD,0x0E,0xFB,0x85,0x65,0x20, +0xAD,0xF2,0x20,0x0B,0xF2,0x4C,0x62,0xF9,0xA9,0xFF,0x8D,0xFC,0x02,0xA9,0x00,0x8D, +0xE8,0x03,0xA5,0x2A,0x4A,0xB0,0x6F,0xA9,0x80,0xA6,0x11,0xF0,0x65,0xAD,0xFC,0x02, +0xC9,0xFF,0xF0,0xE9,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0xAE,0xDB,0x02,0xD0,0x03, +0x20,0x83,0xF9,0xA8,0xC0,0xC0,0xB0,0xD0,0xB1,0x79,0x8D,0xFB,0x02,0xAA,0x30,0x03, +0x4C,0xB4,0xF3,0xC9,0x80,0xF0,0xC1,0xC9,0x81,0xD0,0x0A,0xAD,0xB6,0x02,0x49,0x80, +0x8D,0xB6,0x02,0xB0,0xB3,0xC9,0x82,0xD0,0x0C,0xAD,0xBE,0x02,0xF0,0x0B,0xA9,0x00, +0x8D,0xBE,0x02,0xF0,0xA3,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D,0xBE,0x02,0xD0,0x98, +0xC9,0x84,0xD0,0x08,0xA9,0x80,0x8D,0xBE,0x02,0x4C,0xF8,0xF2,0xC9,0x85,0xD0,0x0B, +0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0x4C,0xDA,0xF3,0xC9,0x89,0xD0,0x10,0xAD, +0xDB,0x02,0x49,0xFF,0x8D,0xDB,0x02,0xD0,0x03,0x20,0x83,0xF9,0x4C,0xF8,0xF2,0xC9, +0x8E,0xB0,0x12,0xC9,0x8A,0x90,0xF5,0xE9,0x8A,0x06,0x7C,0x10,0x02,0x09,0x04,0xA8, +0xB1,0x60,0x4C,0x2A,0xF3,0xC9,0x92,0xB0,0x0B,0xC9,0x8E,0x90,0xDF,0xE9,0x72,0xEE, +0xE8,0x03,0xD0,0x26,0xA5,0x7C,0xC9,0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90, +0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE,0x02,0xF0,0x05,0x05,0x7C,0x4C,0x23,0xF3,0x20, +0x3C,0xF9,0xF0,0x09,0xAD,0xFB,0x02,0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x1E,0xF2, +0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6,0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54, +0x4C,0x0C,0xF9,0xE6,0x54,0xA5,0x54,0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE, +0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5,0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0x8E, +0xF8,0xE6,0x55,0xA5,0x55,0xC5,0x53,0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0x0C,0xF4, +0x20,0xA6,0xF9,0xA4,0x64,0xA9,0x00,0x85,0x64,0x91,0x64,0xC8,0xD0,0xFB,0xE6,0x65, +0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2,0x02,0xC8,0xC0,0x04,0x90,0xF8, +0x20,0x97,0xF9,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85,0x54,0x85,0x56,0x85,0x6C,0x60, +0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52,0xD0,0x03,0x20,0x23,0xF9,0x20, +0x00,0xF4,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54,0xF0,0x03,0x20,0xE6,0xF3,0xA9, +0x20,0x8D,0xFB,0x02,0x20,0xCA,0xF1,0x4C,0x8E,0xF8,0x20,0x11,0xF4,0xA5,0x55,0xC5, +0x52,0xD0,0x08,0x20,0x65,0xF6,0x20,0x58,0xF7,0xB0,0x07,0xA5,0x63,0x20,0x5D,0xF7, +0x90,0xE8,0x4C,0x8E,0xF8,0xA5,0x63,0x4C,0x3E,0xF7,0xA5,0x63,0x4C,0x4A,0xF7,0x20, +0x4C,0xF9,0x20,0x8F,0xF1,0x85,0x7D,0xA9,0x00,0x8D,0xBB,0x02,0x20,0xE9,0xF1,0xA5, +0x63,0x48,0x20,0x12,0xF6,0x68,0xC5,0x63,0xB0,0x0C,0xA5,0x7D,0x48,0x20,0x8F,0xF1, +0x85,0x7D,0x68,0x4C,0xAC,0xF4,0x20,0x57,0xF9,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54, +0xD0,0xF7,0x4C,0x8E,0xF8,0x20,0x4C,0xF9,0x20,0xAC,0xF5,0xA5,0x64,0x85,0x68,0xA5, +0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0x0A,0xF6,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54, +0xCD,0xBF,0x02,0xB0,0x09,0x20,0x8F,0xF1,0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00, +0x98,0x91,0x68,0x20,0x18,0xF9,0x20,0x57,0xF9,0x4C,0x8E,0xF8,0x38,0x20,0xC2,0xF7, +0xA5,0x52,0x85,0x55,0x20,0xAC,0xF5,0x20,0x8E,0xF7,0x20,0xE2,0xF7,0x4C,0x8E,0xF8, +0x20,0x8E,0xF8,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20,0x5B,0xF7,0x08,0x98, +0x18,0x69,0x78,0x28,0x20,0x3C,0xF7,0xC8,0xC0,0x18,0xD0,0xED,0xAD,0xB4,0x02,0x09, +0x01,0x8D,0xB4,0x02,0xA9,0x00,0x85,0x55,0x20,0xAC,0xF5,0x20,0x2A,0xF8,0x20,0x58, +0xF7,0x90,0xD4,0x4C,0x1B,0xF4,0xA0,0x20,0x20,0x83,0xF9,0x88,0x10,0xFA,0x60,0x20, +0x40,0xF4,0x4C,0xE6,0xF3,0xA9,0x02,0xD0,0x11,0xAC,0x6E,0x02,0xF0,0x02,0x09,0x20, +0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9,0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30, +0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64,0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5, +0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64,0x90,0x04,0xA9,0x93,0x85,0x4C,0x60, +0xA9,0x02,0x20,0x70,0xF5,0xA9,0xA2,0x20,0x70,0xF5,0xCA,0x60,0xA2,0x01,0x86,0x66, +0xCA,0x86,0x65,0xA5,0x54,0x0A,0x26,0x65,0x0A,0x26,0x65,0x65,0x54,0x85,0x64,0x90, +0x02,0xE6,0x65,0xA4,0x57,0xBE,0x6D,0xEE,0x06,0x64,0x26,0x65,0xCA,0xD0,0xF9,0xA5, +0x56,0x4A,0xA5,0x55,0xBE,0x9D,0xEE,0xF0,0x06,0x6A,0x06,0x66,0xCA,0xD0,0xFA,0x65, +0x64,0x90,0x02,0xE6,0x65,0x18,0x65,0x58,0x85,0x64,0x85,0x5E,0xA5,0x65,0x65,0x59, +0x85,0x65,0x85,0x5F,0xBE,0x9D,0xEE,0xBD,0x04,0xFB,0x25,0x55,0x65,0x66,0xA8,0xB9, +0xAC,0xEE,0x8D,0xA0,0x02,0x85,0x6F,0xA0,0x00,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B, +0x85,0x7D,0xE6,0x63,0xE6,0x55,0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x7D, +0xEE,0xF0,0x0A,0xE0,0x00,0xD0,0xE2,0xC5,0x53,0xF0,0xDE,0x90,0xDC,0xE0,0x08,0xD0, +0x04,0xA5,0x56,0xF0,0xD4,0xA5,0x57,0xD0,0x2C,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5, +0x7D,0xF0,0x22,0x20,0x61,0xF6,0x4C,0xAB,0xF6,0x20,0x65,0xF6,0xA5,0x54,0x18,0x69, +0x78,0x20,0x5D,0xF7,0x90,0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0x0D,0xF5,0x4C,0x8E, +0xF8,0xA9,0x9B,0x85,0x7D,0x20,0x97,0xF9,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57, +0xA0,0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x8D,0xEE,0xC5,0x54, +0xD0,0x29,0x8C,0x9D,0x02,0x8A,0xD0,0x23,0xA5,0x7D,0xF0,0x1F,0xC9,0x9B,0xF0,0x01, +0x18,0x20,0xF7,0xF7,0xEE,0xBB,0x02,0xC6,0x6C,0x10,0x02,0xE6,0x6C,0xCE,0x9D,0x02, +0xAD,0xB2,0x02,0x38,0x10,0xEB,0xAD,0x9D,0x02,0x85,0x54,0x4C,0x8E,0xF8,0x38,0xB5, +0x70,0xE5,0x74,0x95,0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9, +0x04,0xF0,0x07,0xA5,0x57,0xF0,0x03,0x20,0x94,0xEF,0xA9,0x27,0xC5,0x53,0xB0,0x02, +0x85,0x53,0xA6,0x57,0xBD,0x8D,0xEE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0, +0x0A,0xA5,0x56,0xF0,0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD, +0x7D,0xEE,0xC5,0x55,0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11, +0x85,0x11,0xF0,0x06,0x60,0x20,0x40,0xF4,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B, +0x10,0x03,0x4C,0x62,0xF9,0x4C,0x1E,0xF2,0xA0,0x00,0xA5,0x5F,0xF0,0x04,0xA5,0x5D, +0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD,0xB4,0xEE,0x85,0x6E,0x68,0x4A,0x4A,0x4A, +0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02,0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0x23, +0xF7,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3,0x02,0x60,0x20,0x23,0xF7,0xA5,0x6E,0x49, +0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60,0xA5,0x54,0x18,0x69,0x78,0x20,0x23,0xF7, +0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01,0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0, +0x0E,0xB0,0x17,0xC0,0x0C,0xB0,0x04,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29, +0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0x4D,0xFB,0x8D,0xFB,0x02,0x60,0xA6,0x6A, +0xCA,0x86,0x69,0x86,0x67,0xA9,0xB0,0x85,0x68,0xA9,0xD8,0x85,0x66,0xA6,0x54,0xE8, +0xEC,0xBF,0x02,0xF0,0xE8,0xA0,0x27,0xB1,0x68,0x91,0x66,0x88,0x10,0xF9,0x38,0xA5, +0x68,0x85,0x66,0xE9,0x28,0x85,0x68,0xA5,0x69,0x85,0x67,0xE9,0x00,0x85,0x69,0x4C, +0x9F,0xF7,0x08,0xA0,0x16,0x98,0x20,0x5A,0xF7,0x08,0x98,0x18,0x69,0x79,0x28,0x20, +0x3C,0xF7,0x88,0x30,0x04,0xC4,0x54,0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C, +0x3C,0xF7,0xA5,0x52,0x85,0x55,0x20,0xAC,0xF5,0x38,0xA5,0x53,0xE5,0x52,0xA8,0xA9, +0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0x32,0xF7,0xAD,0x6E,0x02,0xF0,0x28,0xAD, +0x6C,0x02,0xD0,0xFB,0xA9,0x08,0x8D,0x6C,0x02,0xAD,0x6C,0x02,0xC9,0x01,0xD0,0xF9, +0xAD,0x0B,0xD4,0xC9,0x40,0xB0,0xF9,0xA2,0x0D,0xAD,0xBF,0x02,0xC9,0x04,0xD0,0x02, +0xA2,0x70,0xEC,0x0B,0xD4,0xB0,0xFB,0x20,0xA6,0xF9,0xA5,0x64,0xA6,0x65,0xE8,0xE4, +0x6A,0xF0,0x06,0x38,0xE9,0x10,0x4C,0x2E,0xF8,0x69,0x27,0xD0,0x0A,0xA6,0x65,0xE8, +0xE4,0x6A,0xF0,0x38,0x18,0x69,0x10,0xA8,0x85,0x7E,0x38,0xA5,0x64,0xE5,0x7E,0x85, +0x64,0xB0,0x02,0xC6,0x65,0xA5,0x64,0x18,0x69,0x28,0x85,0x7E,0xA5,0x65,0x69,0x00, +0x85,0x7F,0xB1,0x7E,0x91,0x64,0xC8,0xD0,0xF9,0xA0,0x10,0xA5,0x64,0xC9,0xD8,0xF0, +0x0B,0x18,0x69,0xF0,0x85,0x64,0x90,0xDD,0xE6,0x65,0xD0,0xD9,0xA6,0x6A,0xCA,0x86, +0x7F,0xA2,0xD8,0x86,0x7E,0xA9,0x00,0xA0,0x27,0x91,0x7E,0x88,0x10,0xFB,0xA9,0x00, +0x85,0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x5A,0xF7,0xB0,0x0C,0xA5,0x63,0x18, +0x69,0x28,0x85,0x63,0xC6,0x51,0x4C,0x96,0xF8,0x18,0xA5,0x63,0x65,0x55,0x85,0x63, +0x60,0x20,0x4C,0xF9,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9, +0x01,0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5, +0x55,0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0xEA,0xF8,0x20,0x0A,0xF6,0xE6,0x6B,0xA5, +0x63,0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x00,0xF4,0x20,0x8F,0xF1,0xD0,0x17,0xC6, +0x6B,0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x00,0xF4,0xA5,0x55,0xC5,0x53,0xD0,0x02, +0xC6,0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x4C,0x57,0xF9,0x20,0x8E,0xF8,0xA5, +0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54, +0x20,0x8E,0xF8,0xA5,0x63,0xC5,0x52,0xF0,0xEE,0x20,0xAC,0xF5,0xA5,0x53,0x38,0xE5, +0x52,0xA8,0xB1,0x64,0xD0,0xE1,0x88,0x10,0xF9,0x4C,0x27,0xF5,0xA2,0x2D,0xBD,0x0D, +0xFB,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5,0x54, +0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA,0x10, +0xF8,0x60,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17,0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90, +0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10,0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B, +0x4C,0x1E,0xF2,0xA2,0x7E,0x48,0x8E,0x1F,0xD0,0xAD,0x0B,0xD4,0xCD,0x0B,0xD4,0xF0, +0xFB,0xCA,0xCA,0x10,0xF1,0x68,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0, +0x02,0xA5,0x52,0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2, +0x00,0xA5,0x22,0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E, +0xB7,0x02,0xA5,0x54,0x8D,0xF5,0x02,0xA5,0x55,0x8D,0xF6,0x02,0xA5,0x56,0x8D,0xF7, +0x02,0xA9,0x01,0x8D,0xF8,0x02,0x8D,0xF9,0x02,0x38,0xAD,0xF5,0x02,0xE5,0x5A,0x85, +0x76,0xB0,0x0E,0xA9,0xFF,0x8D,0xF8,0x02,0xA5,0x76,0x49,0xFF,0x18,0x69,0x01,0x85, +0x76,0x38,0xAD,0xF6,0x02,0xE5,0x5B,0x85,0x77,0xAD,0xF7,0x02,0xE5,0x5C,0x85,0x78, +0xB0,0x17,0xA9,0xFF,0x8D,0xF9,0x02,0xA5,0x77,0x49,0xFF,0x85,0x77,0xA5,0x78,0x49, +0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00,0x84,0x73,0x98, +0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8,0xA5,0x78,0x85, +0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76,0xA2,0x02,0xA8, +0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70,0xA5,0x7E,0x05, +0x7F,0xD0,0x03,0x4C,0x01,0xFB,0x18,0xA5,0x70,0x65,0x76,0x85,0x70,0x90,0x02,0xE6, +0x71,0xA5,0x71,0xC5,0x75,0x90,0x15,0xD0,0x06,0xA5,0x70,0xC5,0x74,0x90,0x0D,0x18, +0xA5,0x54,0x6D,0xF8,0x02,0x85,0x54,0xA2,0x00,0x20,0xAE,0xF6,0x18,0xA5,0x72,0x65, +0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x28,0xD0,0x06,0xA5, +0x72,0xC5,0x74,0x90,0x20,0x2C,0xF9,0x02,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9,0xFF, +0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6,0x56, +0xA2,0x02,0x20,0xAE,0xF6,0x20,0xCA,0xF6,0x20,0xCA,0xF1,0xAD,0xB7,0x02,0xF0,0x2F, +0x20,0x4C,0xF9,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0x12,0xF6,0x68, +0x85,0x54,0x20,0xCA,0xF6,0x20,0x8F,0xF1,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB,0x02, +0x20,0xCA,0xF1,0x4C,0xC9,0xFA,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0x57,0xF9,0x38, +0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C,0x4D, +0xFA,0x4C,0x1E,0xF2,0x00,0x01,0x03,0x07,0x28,0xCA,0x94,0x46,0x00,0x1B,0xE0,0xF3, +0x1C,0xE6,0xF3,0x1D,0xF3,0xF3,0x1E,0x00,0xF4,0x1F,0x11,0xF4,0x7D,0x20,0xF4,0x7E, +0x50,0xF4,0x7F,0x7A,0xF4,0x9B,0x61,0xF6,0x9C,0x20,0xF5,0x9D,0x0C,0xF5,0x9E,0x9A, +0xF4,0x9F,0x95,0xF4,0xFD,0x56,0xF5,0xFE,0xD5,0xF4,0xFF,0x9F,0xF4,0x1C,0x40,0xF4, +0x1D,0x5F,0xF5,0x1E,0x1B,0xF4,0x1F,0x0A,0xF4,0x40,0x00,0x20,0x60,0x20,0x40,0x00, +0x60,0x6C,0x6A,0x3B,0x8A,0x8B,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D, +0x3D,0x76,0x80,0x63,0x8C,0x8D,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32, +0x31,0x2C,0x20,0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77, +0x71,0x39,0x80,0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73, +0x61,0x4C,0x4A,0x3A,0x8A,0x8B,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F, +0x7C,0x56,0x80,0x43,0x8C,0x8D,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22, +0x21,0x5B,0x20,0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57, +0x51,0x28,0x80,0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53, +0x41,0x0C,0x0A,0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C, +0x1D,0x16,0x80,0x03,0x89,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD, +0x80,0x00,0x20,0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17, +0x11,0x80,0x80,0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13, +0x01,0x1C,0x1D,0x1E,0x1F,0x8E,0x8F,0x90,0x91,0x8A,0x48,0x98,0x48,0xAC,0x01,0xD3, +0xAD,0x09,0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAE,0xF1,0x02,0xD0,0x49,0xAE,0x6D,0x02, +0xC9,0x83,0xD0,0x13,0x8A,0x49,0xFF,0x8D,0x6D,0x02,0xD0,0x05,0x98,0x09,0x04,0xD0, +0x03,0x98,0x29,0xFB,0xA8,0xB0,0x26,0x8A,0xD0,0x3D,0xAD,0x09,0xD2,0xAA,0xC9,0x9F, +0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x11,0x29,0x3F,0xC9,0x11, +0xD0,0x2E,0x8E,0xDC,0x02,0xF0,0x06,0x8E,0xFC,0x02,0x8E,0xF2,0x02,0xA9,0x03,0x8D, +0xF1,0x02,0xA9,0x00,0x85,0x4D,0xAD,0xD9,0x02,0x8D,0x2B,0x02,0xAD,0x2F,0x02,0xD0, +0x06,0xAD,0xDD,0x02,0x8D,0x2F,0x02,0x8C,0x01,0xD3,0x68,0xA8,0x68,0xAA,0x68,0x40, +0xE0,0x84,0xF0,0x21,0xE0,0x94,0xD0,0xCF,0xAD,0xF4,0x02,0xAE,0x6B,0x02,0x8D,0x6B, +0x02,0x8E,0xF4,0x02,0xE0,0xCC,0xF0,0x06,0x98,0x09,0x08,0xA8,0xD0,0xBF,0x98,0x29, +0xF7,0xA8,0x4C,0x6D,0xFC,0xAD,0x2F,0x02,0xF0,0xCD,0x8D,0xDD,0x02,0xA9,0x00,0x8D, +0x2F,0x02,0xF0,0xC3,0x48,0xAD,0xC6,0x02,0x4D,0x4F,0x00,0x2D,0x4E,0x00,0x8D,0x0A, +0xD4,0x8D,0x17,0xD0,0x68,0x40,0x00,0x00,0x4C,0x83,0xF9,0xA9,0xCC,0x8D,0xEE,0x02, +0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E,0xA5,0x2A,0x29,0x0C,0xC9,0x04, +0xF0,0x05,0xC9,0x08,0xF0,0x3E,0x60,0xA9,0x00,0x8D,0x89,0x02,0x85,0x3F,0xA9,0x01, +0x20,0xFC,0xFD,0x30,0x29,0xA9,0x34,0x8D,0x02,0xD3,0xA6,0x62,0xBC,0x93,0xFE,0xBD, +0x91,0xFE,0xAA,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0,0xFB, +0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0x77,0xFD,0xA0,0x80,0xC6,0x11,0xA9,0x00, +0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0xFC,0xFD,0x30,0xEE, +0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03,0x20, +0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA6,0x62,0xBC,0x8F,0xFE,0xBD,0x8D,0xFE,0xAA, +0xA9,0x03,0x20,0x5C,0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xBC,0xAD,0x2A, +0x02,0xD0,0xF7,0xA9,0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D, +0xEC,0x8A,0x02,0xF0,0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20, +0x3F,0xFE,0x98,0x30,0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE, +0xF0,0x0D,0xC9,0xFA,0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0x7A,0xFD,0xC6, +0x3F,0xA0,0x88,0x60,0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0, +0x01,0x60,0xA9,0xFC,0x20,0x7C,0xFE,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD, +0x89,0x02,0x30,0x08,0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A, +0x8E,0x7F,0x04,0xA9,0xFA,0x20,0x7C,0xFE,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00, +0x04,0xCA,0x10,0xFA,0xA9,0xFE,0x20,0x7C,0xFE,0x4C,0xD6,0xFD,0x85,0x40,0xA5,0x14, +0x18,0xA6,0x62,0x7D,0x95,0xFE,0xAA,0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0, +0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0,0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6, +0x40,0xF0,0x0E,0x8A,0x18,0xA6,0x62,0x7D,0x97,0xFE,0xAA,0xE4,0x14,0xD0,0xFC,0xF0, +0xCD,0x20,0x36,0xFE,0x98,0x60,0xAD,0x25,0xE4,0x48,0xAD,0x24,0xE4,0x48,0x60,0x8D, +0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D,0x08,0x03,0xA9,0x03,0x8D,0x05, +0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00,0x03,0xA9,0x00,0x8D,0x01,0x03, +0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40,0xC9,0x52,0xF0,0x02,0xA0,0x80, +0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59,0xE4,0x60,0x8D,0xFF,0x03,0xA9, +0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20,0x3F,0xFE,0x60,0x04,0x03,0x80, +0xC0,0x02,0x01,0x40,0xE0,0x1E,0x19,0x0A,0x08,0xA9,0x1E,0x8D,0x14,0x03,0x60,0xEA, +0x02,0xC0,0x03,0xA9,0x04,0x8D,0xDF,0x02,0xAE,0x9F,0xFE,0xAC,0xA0,0xFE,0xA9,0x53, +0x8D,0x02,0x03,0x8D,0x0A,0x03,0x20,0x14,0xFF,0x20,0x59,0xE4,0x30,0x03,0x20,0x44, +0xFF,0x60,0x20,0xA3,0xFE,0xA9,0x00,0x8D,0xDE,0x02,0x60,0x48,0xBD,0x41,0x03,0x85, +0x21,0x20,0x4B,0xFF,0xAE,0xDE,0x02,0x68,0x9D,0xC0,0x03,0xE8,0xEC,0xDF,0x02,0xF0, +0x15,0x8E,0xDE,0x02,0xC9,0x9B,0xF0,0x03,0xA0,0x01,0x60,0xA9,0x20,0x9D,0xC0,0x03, +0xE8,0xEC,0xDF,0x02,0xD0,0xF7,0xA9,0x00,0x8D,0xDE,0x02,0xAE,0xA1,0xFE,0xAC,0xA2, +0xFE,0x20,0x14,0xFF,0x4C,0x59,0xE4,0x20,0x4B,0xFF,0xA9,0x9B,0xAE,0xDE,0x02,0xD0, +0xDC,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00,0x03,0xA5, +0x21,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9,0x40,0x8D, +0x03,0x03,0xAD,0xDF,0x02,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAD,0x14,0x03, +0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x8D,0x14,0x03,0x60,0xA0,0x57,0xA5,0x2B,0xC9, +0x4E,0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9, +0x53,0xD0,0x0C,0xA2,0x1D,0x8E,0xDF,0x02,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9, +0x4E,0xD0,0xDC,0xA2,0x00,0x86,0x8B,0x86,0x8C,0x20,0xA9,0xFF,0xE0,0x0C,0xD0,0xF9, +0xAD,0x00,0xC0,0xAE,0x01,0xC0,0xC5,0x8B,0xD0,0x06,0xE4,0x8C,0xD0,0x02,0x18,0x60, +0x38,0x60,0xA2,0x00,0x86,0x8B,0x86,0x8C,0xA2,0x0C,0x20,0xA9,0xFF,0x20,0xA9,0xFF, +0xAD,0xF8,0xFF,0xAE,0xF9,0xFF,0x4C,0x86,0xFF,0xA0,0x00,0xBD,0xD7,0xFF,0x99,0x9E, +0x00,0xE8,0xC8,0xC0,0x04,0xD0,0xF4,0xA0,0x00,0x18,0xB1,0x9E,0x65,0x8B,0x85,0x8B, +0x90,0x02,0xE6,0x8C,0xE6,0x9E,0xD0,0x02,0xE6,0x9F,0xA5,0x9E,0xC5,0xA0,0xD0,0xE9, +0xA5,0x9F,0xC5,0xA1,0xD0,0xE3,0x60,0x02,0xC0,0x00,0xD0,0x00,0x50,0x00,0x58,0x00, +0xD8,0x00,0xE0,0x00,0xE0,0xF8,0xFF,0xFA,0xFF,0x00,0x00,0x00,0x00,0x00,0x10,0x05, +0x83,0x02,0x42,0x42,0x00,0x00,0x01,0x02,0x8C,0x6C,0x18,0xC0,0xAA,0xC2,0x2C,0xC0, +}; diff --git a/MCUME_teensy/teensy800/sio.c b/MCUME_teensy/teensy800/sio.c new file mode 100644 index 0000000..575c914 --- /dev/null +++ b/MCUME_teensy/teensy800/sio.c @@ -0,0 +1,55 @@ +/* + * sio.c - Serial I/O emulation + * + * Copyright (C) 1995-1998 David Firth + * Copyright (C) 1998-2010 Atari800 development team (see DOC/CREDITS) + * + * This file is part of the Atari800 emulator project which emulates + * the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers. + * + * Atari800 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Atari800 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Atari800; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#define _POSIX_C_SOURCE 200112L /* for snprintf */ + +#include +#include +#include +#include + +#include "antic.h" /* ANTIC_ypos */ +#include "atari.h" +#include "cpu.h" +#include "memory.h" +#include "pokey.h" +#include "pokeysnd.h" +#include "sio.h" + + + + +/* Put a byte that comes out of POKEY. So get it here... */ +void SIO_PutByte(int byte) +{ +} + +/* Get a byte from the floppy to the pokey. */ +int SIO_GetByte(void) +{ + int byte = 0; + + return byte; +} + diff --git a/MCUME_teensy/teensy800/sio.h b/MCUME_teensy/teensy800/sio.h new file mode 100644 index 0000000..8a182f9 --- /dev/null +++ b/MCUME_teensy/teensy800/sio.h @@ -0,0 +1,61 @@ +#ifndef SIO_H_ +#define SIO_H_ + + +#include /* FILENAME_MAX */ + +#include "atari.h" + +#define SIO_MAX_DRIVES 8 + +typedef enum SIO_tagUnitStatus { + SIO_OFF, + SIO_NO_DISK, + SIO_READ_ONLY, + SIO_READ_WRITE +} SIO_UnitStatus; + +extern char SIO_status[256]; +extern SIO_UnitStatus SIO_drive_status[SIO_MAX_DRIVES]; +extern char SIO_filename[SIO_MAX_DRIVES][FILENAME_MAX]; + +#define SIO_LAST_READ 0 +#define SIO_LAST_WRITE 1 +extern int SIO_last_op; +extern int SIO_last_op_time; +extern int SIO_last_drive; /* 1 .. 8 */ +extern int SIO_last_sector; + +int SIO_Mount(int diskno, const char *filename, int b_open_readonly); +void SIO_Dismount(int diskno); +void SIO_DisableDrive(int diskno); +int SIO_RotateDisks(void); +void SIO_Handler(void); + +UBYTE SIO_ChkSum(const UBYTE *buffer, int length); +void SIO_SwitchCommandFrame(int onoff); +void SIO_PutByte(int byte); +int SIO_GetByte(void); +int SIO_Initialise(int *argc, char *argv[]); +void SIO_Exit(void); + +/* Some defines about the serial I/O timing. Currently fixed! */ +#define SIO_XMTDONE_INTERVAL 15 +#define SIO_SERIN_INTERVAL 8 +#define SIO_SEROUT_INTERVAL 8 +#define SIO_ACK_INTERVAL 36 + +/* These functions are also used by the 1450XLD Parallel disk device */ +extern int SIO_format_sectorcount[SIO_MAX_DRIVES]; +extern int SIO_format_sectorsize[SIO_MAX_DRIVES]; +int SIO_ReadStatusBlock(int unit, UBYTE *buffer); +int SIO_FormatDisk(int unit, UBYTE *buffer, int sectsize, int sectcount); +void SIO_SizeOfSector(UBYTE unit, int sector, int *sz, ULONG *ofs); +int SIO_ReadSector(int unit, int sector, UBYTE *buffer); +int SIO_DriveStatus(int unit, UBYTE *buffer); +int SIO_WriteStatusBlock(int unit, const UBYTE *buffer); +int SIO_WriteSector(int unit, int sector, const UBYTE *buffer); +void SIO_StateSave(void); +void SIO_StateRead(void); + +#endif /* SIO_H_ */ diff --git a/MCUME_teensy/teensy800/teensy800.ino b/MCUME_teensy/teensy800/teensy800.ino new file mode 100644 index 0000000..641e578 --- /dev/null +++ b/MCUME_teensy/teensy800/teensy800.ino @@ -0,0 +1,277 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "atari800.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif + + + + diff --git a/MCUME_teensy/teensy800/tft_t_dma.cpp b/MCUME_teensy/teensy800/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensy800/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensy800/tft_t_dma_config.h b/MCUME_teensy/teensy800/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensy800/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensy8086/.DS_Store b/MCUME_teensy/teensy8086/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensy8086/.DS_Store differ diff --git a/MCUME_teensy/teensy8086/AudioPlaySystem.cpp b/MCUME_teensy/teensy8086/AudioPlaySystem.cpp new file mode 100644 index 0000000..8fea18d --- /dev/null +++ b/MCUME_teensy/teensy8086/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensy8086/AudioPlaySystem.h b/MCUME_teensy/teensy8086/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensy8086/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensy8086/bmpjoy.h b/MCUME_teensy/teensy8086/bmpjoy.h new file mode 100644 index 0000000..e1c6299 --- /dev/null +++ b/MCUME_teensy/teensy8086/bmpjoy.h @@ -0,0 +1,41 @@ +PROGMEM const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensy8086/bmptft.h b/MCUME_teensy/teensy8086/bmptft.h new file mode 100644 index 0000000..5ba5346 --- /dev/null +++ b/MCUME_teensy/teensy8086/bmptft.h @@ -0,0 +1,40 @@ +PROGMEM const uint16_t bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy8086/bmpvbar.h b/MCUME_teensy/teensy8086/bmpvbar.h new file mode 100644 index 0000000..9de7f9a --- /dev/null +++ b/MCUME_teensy/teensy8086/bmpvbar.h @@ -0,0 +1,152 @@ +PROGMEM const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy8086/bmpvga.h b/MCUME_teensy/teensy8086/bmpvga.h new file mode 100644 index 0000000..b1dbed4 --- /dev/null +++ b/MCUME_teensy/teensy8086/bmpvga.h @@ -0,0 +1,40 @@ +PROGMEM const uint16_t bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy8086/cpu.cpp b/MCUME_teensy/teensy8086/cpu.cpp new file mode 100755 index 0000000..739588f --- /dev/null +++ b/MCUME_teensy/teensy8086/cpu.cpp @@ -0,0 +1,2264 @@ +#include +#include +//#include +//#include +#include "emu.h" +#include "rom.h" + +extern void portout(uint16_t portnum, uint16_t value); +extern uint16_t portin(uint16_t portnum); + +extern void readdisk(uint8_t drivenum, uint16_t dstseg, uint16_t dstoff, uint16_t cyl, uint16_t sect, uint16_t head, uint16_t sectcount); +extern void insertdisk(); + +extern void doirq(uint8_t irqnum); +extern uint8_t nextintr(); +extern struct structpic { + uint8_t imr; //mask register + uint8_t irr; //request register + uint8_t isr; //service register + uint8_t icwstep; //used during initialization to keep track of which ICW we're at + uint8_t icw[5]; + uint8_t intoffset; //interrupt vector offset + uint8_t priority; //which IRQ has highest priority + uint8_t autoeoi; //automatic EOI mode + uint8_t readmode; //remember what to return on read register from OCW3 + uint8_t enabled; +} i8259; + +extern uint8_t curkey; +void intcall86(uint8_t intnum); + +uint64_t curtimer, lasttimer, timerfreq; + +char *biosfile = NULL; +uint8_t byteregtable[8] = { regal, regcl, regdl, regbl, regah, regch, regdh, regbh }; + +uint8_t parity[0x100]; + +_bytewordregs_ regs; + +uint16_t segregs[6]; +uint8_t opcode, segoverride, reptype, bootdrive, hdcount = 0; +uint16_t savecs, saveip, ip, useseg, oldsp; +uint8_t tempcf, oldcf, cf, pf, af, zf, sf, tf, ifl, df, of, nt, iopriv, mode, reg, rm, msw = 0; +uint16_t oper1, oper2, res16, disp16, temp16, dummy, stacksize, frametemp; +uint8_t oper1b, oper2b, res8, disp8, temp8, nestlev, addrbyte; +uint16_t cr0 = 0, cr1 = 0, cr2 = 0, cr3 = 0; +uint32_t ldtr = 0, gdtr = 0, gdtlimit = 0, idtr = 0, idtlimit = 0; +uint32_t temp1, temp2, temp3, temp4, temp5, temp32, tempaddr32, ea; +int32_t result, speed = 0; +uint32_t totalexec; +uint32_t ips[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +uint16_t *tempwordptr; + +uint8_t vidmode, cgabg, blankattr, vidgfxmode, vidcolor; +uint16_t cursx, cursy, cols, rows, vgapage, cursorposition, cursorvisible; +uint8_t updatedscreen, port3da, port6, portout16; +//uint16_t VGA_SC[0xFF], VGA_CRTC[0xFF], VGA_ATTR[0xFF], VGA_GC[0xFF]; +uint32_t videobase, textbase, x, y; + +uint8_t debugmode, showcsip, verbose, mouseemu; + + +extern uint8_t * RAM; +extern uint8_t * LORAM; //LORAM[]; + +void write86(uint32_t addr32, uint8_t value) { + if (addr32 < NATIVE_RAM) { + LORAM[addr32] = value; + return; + } + else if (addr32 < RAM_SIZE) { + RAM[addr32] = value; + return; + } + else if ((addr32 >= 0xB8000) && (addr32 < 0xC0000)) { + VRAM_write(addr32 - 0xB8000UL, value); + } +} + +#define writew86(addr32,value) {write86((addr32),(uint8_t)(value));write86((addr32)+1,(uint8_t)((uint16_t)(value)>>8));} + +uint8_t read86(uint32_t addr32) { + if (addr32 < NATIVE_RAM) { + switch (addr32) { //some hardcoded values for the BIOS data area + case 0x410: //0040:0010 is the equipment word +#ifdef VGA + return (0x41); //video type (0x41 is VGA/EGA, 0x61 is CGA, 0x31 = MDA) +#else + return (0x61); //video type (0x41 is VGA/EGA, 0x61 is CGA, 0x31 = MDA) +#endif + case 0x475: //hard drive count + return (hdcount); + default: + return LORAM[addr32]; + } + } + else if (addr32 < RAM_SIZE) { + return RAM[addr32]; + } + else if ((addr32 >= 0xB8000) && (addr32 < 0xC0000)) { + addr32 -= 0xB8000UL; + return VRAM_read(addr32); + } + else if (addr32 >= 0xFE000UL) { + addr32 -= 0xFE000UL; + return ROM_READ(BIOS, addr32); //BIOS[addr32]; + } + else if ((addr32 >= 0xD0000) && (addr32 < 0xD0640)) { + return net_read_ram(addr32 - 0xD0000); + } + else if ((addr32 >= 0xE0000) && (addr32 < 0xE0006)) { + return net_mac[addr32 - 0xE0000]; + } +#ifdef INCLUDE_ROM_BASIC + else if ((addr32 >= 0xF6000UL) && (addr32 < 0xFA000UL)) { + addr32 -= 0xF6000UL; + return ROM_READ(BASICL, addr32); //BASICL[addr32]; + } else if ((addr32 >= 0xFA000UL) && (addr32 < 0xFE000UL)) { + addr32 -= 0xFA000UL; + return ROM_READ(BASICH, addr32); //BASICH[addr32]; + } +#endif + else return 0; +} + + + +#define readw86(addr32) ((uint16_t)read86((addr32))|((uint16_t)read86((addr32)+1)<<8)) + +//inline void flag_szp8(uint8_t value) { +#define flag_szp8(value) {\ + if (!(value)) zf = 1; else zf = 0;\ + if ((value) & 0x80) sf = 1; else sf = 0;\ + pf = parity[value];\ +} + +//inline void flag_szp16(uint16_t value) { +#define flag_szp16(value) {\ + if (!(value)) zf = 1; else zf = 0;\ + if (value & 0x8000) sf = 1; else sf = 0;\ + pf = parity[(uint8_t)value];\ +} + +//inline void flag_log8(uint8_t value) { +#define flag_log8(value) {\ + flag_szp8(value);\ + cf = 0; of = 0;\ +} + +//inline void flag_log16(uint16_t value) { +#define flag_log16(value) {\ + flag_szp16(value);\ + cf = 0; of = 0;\ +} + +//inline void flag_adc8(uint8_t v1, uint8_t v2, uint8_t v3) { //v1 = destination operand, v2 = source operand, v3 = carry flag +#define flag_adc8(v1, v2, v3) {\ + uint16_t dst;\ + dst = (uint16_t)(v1) + (uint16_t)(v2) + (uint16_t)(v3);\ + flag_szp8((uint8_t)dst);\ + if (((dst ^ (v1)) & (dst ^ (v2)) & 0x80) == 0x80) of = 1; else of = 0;\ + if (dst & 0xFF00) cf = 1; else cf = 0;\ + if ((((v1) ^ (v2) ^ dst) & 0x10) == 0x10) af = 1; else af = 0;\ +} + +//inline void flag_adc16(uint16_t v1, uint16_t v2, uint16_t v3) { //v1 = destination operand, v2 = source operand, v3 = carry flag +#define flag_adc16(v1, v2, v3) {\ + uint32_t dst;\ + dst = (uint32_t)(v1) + (uint32_t)(v2) + (uint32_t)(v3);\ + flag_szp16((uint16_t)dst);\ + if ((((dst ^ (v1)) & (dst ^ (v2))) & 0x8000) == 0x8000) of = 1; else of = 0;\ + if (dst & 0xFFFF0000UL) cf = 1; else cf = 0;\ + if ((((v1) ^ (v2) ^ dst) & 0x10) == 0x10) af = 1; else af = 0;\ +} + +//inline void flag_add8(uint8_t v1, uint8_t v2) { //v1 = destination operand, v2 = source operand +#define flag_add8(v1, v2) {\ + uint16_t dst;\ + dst = (uint16_t)(v1) + (uint16_t)(v2);\ + flag_szp8((uint8_t)dst);\ + if (dst & 0xFF00) cf = 1; else cf = 0;\ + if (((dst ^ (v1)) & (dst ^ (v2)) & 0x80) == 0x80) of = 1; else of = 0;\ + if ((((v1) ^ (v2) ^ dst) & 0x10) == 0x10) af = 1; else af = 0;\ +} + +//inline void flag_add16(uint16_t v1, uint16_t v2) { //v1 = destination operand, v2 = source operand +#define flag_add16(v1, v2) {\ + uint32_t dst;\ + dst = (uint32_t)(v1) + (uint32_t)(v2);\ + flag_szp16((uint16_t)dst);\ + if (dst & 0xFFFF0000UL) cf = 1; else cf = 0;\ + if (((dst ^ (v1)) & (dst ^ (v2)) & 0x8000) == 0x8000) of = 1; else of = 0;\ + if ((((v1) ^ (v2) ^ dst) & 0x10) == 0x10) af = 1; else af = 0;\ +} + +//inline void flag_sbb8(uint8_t v1, uint8_t v2, uint8_t v3) { //v1 = destination operand, v2 = source operand, v3 = carry flag +#define flag_sbb8(v1, v2, v3) {\ + uint16_t dst;\ + uint16_t newv2;\ + newv2 = (uint16_t)(v2) + (uint16_t)(v3);\ + dst = (uint16_t)(v1) - (uint16_t)newv2;\ + flag_szp8((uint8_t)dst);\ + if (dst & 0xFF00) cf = 1; else cf = 0;\ + if ((dst ^ (v1)) & ((v1) ^ newv2) & 0x80) of = 1; else of = 0;\ + if (((v1) ^ newv2 ^ dst) & 0x10) af = 1; else af = 0;\ +} + +//inline void flag_sbb16(uint16_t v1, uint16_t v2, uint16_t v3) { //v1 = destination operand, v2 = source operand, v3 = carry flag +#define flag_sbb16(v1, v2, v3){\ + uint32_t dst;\ + uint32_t newv2;\ + newv2 = (uint32_t)(v2) + (uint32_t)(v3);\ + dst = (uint32_t)v1 - newv2;\ + flag_szp16((uint16_t)dst);\ + if (dst & 0xFFFF0000UL) cf = 1; else cf = 0;\ + if ((dst ^ (v1)) & (v1 ^ newv2) & 0x8000) of = 1; else of = 0;\ + if (((v1) ^ newv2 ^ dst) & 0x10) af = 1; else af = 0;\ +} + +//inline void flag_sub8(uint8_t v1, uint8_t v2) { //v1 = destination operand, v2 = source operand +#define flag_sub8(v1, v2) {\ + uint16_t dst;\ + dst = (uint16_t)(v1) - (uint16_t)(v2);\ + flag_szp8((uint8_t)dst);\ + if (dst & 0xFF00) cf = 1; else cf = 0;\ + if ((dst ^ (v1)) & ((v1) ^ (v2)) & 0x80) of = 1; else of = 0;\ + if (((v1) ^ (v2) ^ dst) & 0x10) af = 1; else af = 0;\ +} + +//inline void flag_sub16(uint16_t v1, uint16_t v2) { //v1 = destination operand, v2 = source operand +#define flag_sub16(v1, v2) {\ + uint32_t dst;\ + dst = (uint32_t)(v1) - (uint32_t)(v2);\ + flag_szp16((uint16_t)dst);\ + if (dst & 0xFFFF0000UL) cf = 1; else cf = 0;\ + if ((dst ^ (v1)) & ((v1) ^ (v2)) & 0x8000) of = 1; else of = 0;\ + if (((v1) ^ (v2) ^ dst) & 0x10) af = 1; else af = 0;\ +} + +//inline void op_adc8() { +#define op_adc8() {\ + res8 = oper1b + oper2b + cf;\ + flag_adc8(oper1b, oper2b, cf);\ +} + +//inline void op_adc16() { +#define op_adc16() {\ + res16 = oper1 + oper2 + cf;\ + flag_adc16(oper1, oper2, cf);\ +} + +//inline void op_add8() { +#define op_add8() {\ + res8 = oper1b + oper2b;\ + flag_add8(oper1b, oper2b);\ +} + +//inline void op_add16() { +#define op_add16() {\ + res16 = oper1 + oper2;\ + flag_add16(oper1, oper2);\ +} + +//inline void op_and8() { +#define op_and8() {\ + res8 = oper1b & oper2b;\ + flag_log8(res8);\ +} + +//inline void op_and16() { +#define op_and16() {\ + res16 = oper1 & oper2;\ + flag_log16(res16);\ +} + +//inline void op_or8() { +#define op_or8() {\ + res8 = oper1b | oper2b;\ + flag_log8(res8);\ +} + +//inline void op_or16() { +#define op_or16() {\ + res16 = oper1 | oper2;\ + flag_log16(res16);\ +} + +//inline void op_xor8() { +#define op_xor8() {\ + res8 = oper1b ^ oper2b;\ + flag_log8(res8);\ +} + +//inline void op_xor16() { +#define op_xor16() {\ + res16 = oper1 ^ oper2;\ + flag_log16(res16);\ +} + +//inline void op_sub8() { +#define op_sub8() {\ + res8 = oper1b - oper2b;\ + flag_sub8(oper1b, oper2b);\ +} + +//inline void op_sub16() { +#define op_sub16() {\ + res16 = oper1 - oper2;\ + flag_sub16(oper1, oper2);\ +} + +//inline void op_sbb8() { +#define op_sbb8() {\ + res8 = oper1b - (oper2b + cf);\ + flag_sbb8(oper1b, oper2b, cf);\ +} + +//inline void op_sbb16() { +#define op_sbb16() {\ + res16 = oper1 - (oper2 + cf);\ + flag_sbb16(oper1, oper2, cf);\ +} + +//inline void modregrm() { +#define modregrm() {\ + addrbyte = getmem8(segregs[regcs], ip); StepIP(1);\ + mode = addrbyte >> 6;\ + reg = (addrbyte >> 3) & 7;\ + rm = addrbyte & 7;\ + switch (mode) {\ + case 0:\ + if (rm == 6) {\ + disp16 = getmem16(segregs[regcs], ip);\ + StepIP(2);\ + }\ + if (((rm == 2) || (rm == 3)) && !segoverride) useseg = segregs[regss]; break;\ + case 1:\ + disp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1);\ + if (((rm == 2) || (rm == 3) || (rm == 6)) && !segoverride) useseg = segregs[regss]; break;\ + case 2:\ + disp16 = getmem16(segregs[regcs], ip); StepIP(2);\ + if (((rm == 2) || (rm == 3) || (rm == 6)) && !segoverride) useseg = segregs[regss]; break;\ + default:\ + disp8 = 0; disp16 = 0;\ + }\ + if (mode < 3) getea(rm);\ +} + +//inline void getea(uint8_t rmval) { +#define getea(rmval) {\ + uint32_t tempea;\ + tempea = 0;\ + switch (mode) {\ + case 0:\ + switch (rmval) {\ + case 0: tempea = regs.wordregs[regbx] + regs.wordregs[regsi]; break;\ + case 1: tempea = regs.wordregs[regbx] + regs.wordregs[regdi]; break;\ + case 2: tempea = regs.wordregs[regbp] + regs.wordregs[regsi]; break;\ + case 3: tempea = regs.wordregs[regbp] + regs.wordregs[regdi]; break;\ + case 4: tempea = regs.wordregs[regsi]; break;\ + case 5: tempea = regs.wordregs[regdi]; break;\ + case 6: tempea = disp16; break;\ + case 7: tempea = regs.wordregs[regbx]; break;\ + } break;\ + case 1: case 2:\ + switch (rmval) {\ + case 0: tempea = regs.wordregs[regbx] + regs.wordregs[regsi] + disp16; break;\ + case 1: tempea = regs.wordregs[regbx] + regs.wordregs[regdi] + disp16; break;\ + case 2: tempea = regs.wordregs[regbp] + regs.wordregs[regsi] + disp16; break;\ + case 3: tempea = regs.wordregs[regbp] + regs.wordregs[regdi] + disp16; break;\ + case 4: tempea = regs.wordregs[regsi] + disp16; break;\ + case 5: tempea = regs.wordregs[regdi] + disp16; break;\ + case 6: tempea = regs.wordregs[regbp] + disp16; break;\ + case 7: tempea = regs.wordregs[regbx] + disp16; break;\ + } break;\ + }\ + ea = useseg;\ + ea <<= 4;\ + ea += (tempea & 0xFFFF);\ +} + +inline void push(uint16_t pushval) { + putreg16(regsp, getreg16(regsp) - 2); + //printf(" %04X:%04X PUSH\n", segregs[regss], getreg16(regsp)); + putmem16(segregs[regss], getreg16(regsp), pushval); +} + +inline uint16_t pop() { + uint16_t tempval; + //printf(" %04X:%04X POP\n", segregs[regss], getreg16(regsp)); + tempval = getmem16(segregs[regss], getreg16(regsp)); + putreg16(regsp, getreg16(regsp) + 2); + return (tempval); +} + +void reset86() { + uint16_t i, cnt, bitcount; + segregs[regcs] = 0xFFFF; + ip = 0x0000; + segregs[regss] = 0x0000; + regs.wordregs[regsp] = 0xFFFE; + + //generate parity lookup table + for (i = 0; i < 256; i++) { + bitcount = 0; + for (cnt = 0; cnt < 8; cnt++) + bitcount += ((i >> cnt) & 1); + if (bitcount & 1) parity[i] = 0; else parity[i] = 1; + } +} + +/*inline uint16_t readrm16(uint8_t rmval) { + if (mode < 3) { + getea(rmval); + return (read86(ea) | ((uint16_t)read86(ea + 1) << 8)); + } else { + return (getreg16(rmval)); + } +}*/ + +#define readrm16(rmval) ( (mode < 3) ? (read86(ea) | ((uint16_t)read86(ea + 1) << 8)) : (getreg16(rmval)) ) + +/*inline uint8_t readrm8(uint8_t rmval) { + if (mode < 3) { + //getea(rmval); + return (read86(ea)); + } else { + return (getreg8(rmval)); + } +}*/ + +#define readrm8(rmval) ( (mode < 3) ? read86(ea) : getreg8(rmval) ) + +inline void writerm16(uint8_t rmval, uint16_t value) { +//#define writerm16(rmval, value) { + if (mode < 3) {\ + /*getea(rmval);*/\ + write86(ea, value & 0xFF);\ + write86(ea + 1, value >> 8);\ + } else {\ + putreg16(rmval, value);\ + }\ +} + +inline void writerm8(uint8_t rmval, uint8_t value) { +//#define writerm8(rmval, value) { + if (mode < 3) {\ + /*getea(rmval);*/\ + write86(ea, value);\ + } else {\ + putreg8(rmval, value);\ + }\ +} + +inline uint8_t op_grp2_8(uint8_t cnt) { + uint16_t s, oldcf, msb; + uint8_t shift; + s = oper1b; + oldcf = cf; + switch (reg) { + case 0: //ROL r/m8 + for (shift = 1; shift <= cnt; shift++) { + if (s & 0x80) cf = 1; else cf = 0; + s = s << 1; + s = s | cf; + } + if (cnt == 1) of = cf ^ ((s >> 7) & 1); + break; + + case 1: //ROR r/m8 + for (shift = 1; shift <= cnt; shift++) { + cf = s & 1; + s = (s >> 1) | (cf << 7); + } + if (cnt == 1) of = (s >> 7) ^ ((s >> 6) & 1); + break; + + case 2: //RCL r/m8 + for (shift = 1; shift <= cnt; shift++) { + oldcf = cf; + if (s & 0x80) cf = 1; else cf = 0; + s = s << 1; + s = s | oldcf; + } + if (cnt == 1) of = cf ^ ((s >> 7) & 1); + break; + + case 3: //RCR r/m8 + for (shift = 1; shift <= cnt; shift++) { + oldcf = cf; + cf = s & 1; + s = (s >> 1) | (oldcf << 7); + } + if (cnt == 1) of = (s >> 7) ^ ((s >> 6) & 1); + break; + + case 4: case 6: //SHL r/m8 + for (shift = 1; shift <= cnt; shift++) { + if (s & 0x80) cf = 1; else cf = 0; + s = (s << 1) & 0xFF; + } + if ((cnt == 1) && (cf == (s >> 7))) of = 0; else of = 1; + flag_szp8((uint8_t)s); break; + + case 5: //SHR r/m8 + if ((cnt == 1) && (s & 0x80)) of = 1; else of = 0; + for (shift = 1; shift <= cnt; shift++) { + cf = s & 1; + s = s >> 1; + } + flag_szp8((uint8_t)s); break; + + case 7: //SAR r/m8 + for (shift = 1; shift <= cnt; shift++) { + msb = s & 0x80; + cf = s & 1; + s = (s >> 1) | msb; + } + of = 0; + flag_szp8((uint8_t)s); break; + + } + return (s & 0xFF); +} + +inline uint16_t op_grp2_16(uint8_t cnt) { + uint32_t s, oldcf, msb; + uint8_t shift; + s = oper1; + oldcf = cf; + switch (reg) { + case 0: //ROL r/m8 + for (shift = 1; shift <= cnt; shift++) { + if (s & 0x8000) cf = 1; else cf = 0; + s = s << 1; + s = s | cf; + } + if (cnt == 1) of = cf ^ ((s >> 15) & 1); + break; + + case 1: //ROR r/m8 + for (shift = 1; shift <= cnt; shift++) { + cf = s & 1; + s = (s >> 1) | (cf << 15); + } + if (cnt == 1) of = (s >> 15) ^ ((s >> 14) & 1); + break; + + case 2: //RCL r/m8 + for (shift = 1; shift <= cnt; shift++) { + oldcf = cf; + if (s & 0x8000) cf = 1; else cf = 0; + s = s << 1; + s = s | oldcf; + } + if (cnt == 1) of = cf ^ ((s >> 15) & 1); + break; + + case 3: //RCR r/m8 + for (shift = 1; shift <= cnt; shift++) { + oldcf = cf; + cf = s & 1; + s = (s >> 1) | (oldcf << 15); + } + if (cnt == 1) of = (s >> 15) ^ ((s >> 14) & 1); + break; + + case 4: case 6: //SHL r/m8 + for (shift = 1; shift <= cnt; shift++) { + if (s & 0x8000) cf = 1; else cf = 0; + s = (uint16_t)(s << 1); + } + if ((cnt == 1) && (cf == (s >> 15))) of = 0; else of = 1; + flag_szp16((uint16_t)s); break; + + case 5: //SHR r/m8 + if ((cnt == 1) && (s & 0x8000)) of = 1; else of = 0; + for (shift = 1; shift <= cnt; shift++) { + cf = s & 1; + s = s >> 1; + } + flag_szp16((uint16_t)s); break; + + case 7: //SAR r/m8 + for (shift = 1; shift <= cnt; shift++) { + msb = s & 0x8000; + cf = s & 1; + s = (s >> 1) | msb; + } + of = 0; + flag_szp16((uint16_t)s); break; + + } + return ((uint16_t)s); +} + +inline void op_div8(uint16_t valdiv, uint8_t divisor) { + if (divisor == 0) { + intcall86(0); + return; + } + if ((valdiv / (uint16_t)divisor) > 0xFF) { + intcall86(0); + return; + } + regs.byteregs[regah] = valdiv % (uint16_t)divisor; + regs.byteregs[regal] = valdiv / (uint16_t)divisor; +} + +inline void op_idiv8(uint16_t valdiv, uint8_t divisor) { + uint16_t s1, s2, d1, d2, sign; + if (divisor == 0) { + intcall86(0); + return; + } + s1 = valdiv; + s2 = divisor; + sign = (((s1 ^ s2) & 0x8000) != 0); + s1 = (s1 < 0x8000) ? s1 : (uint16_t)(~s1 + 1); + s2 = (s2 < 0x8000) ? s2 : (uint16_t)(~s2 + 1); + d1 = s1 / s2; + d2 = s1 % s2; + if (d1 & 0xFF00) { + intcall86(0); + return; + } + if (sign) { + d1 = (~d1 + 1) & 0xff; + d2 = (~d2 + 1) & 0xff; + } + regs.byteregs[regah] = d2; + regs.byteregs[regal] = d1; +} + +inline void op_grp3_8() { + oper1 = signext(oper1b); oper2 = signext(oper2b); + switch (reg) { + case 0: case 1: //TEST + flag_log8(oper1b & getmem8(segregs[regcs], ip)); StepIP(1); + break; + + case 2: //NOT + res8 = ~oper1b; break; + + case 3: //NEG + res8 = (~oper1b) + 1; + flag_sub8(0, oper1b); + if (res8 == 0) cf = 0; else cf = 1; + break; + + case 4: //MUL + temp1 = (uint32_t)oper1b * (uint32_t)regs.byteregs[regal]; + putreg16(regax, (uint16_t)temp1); + flag_szp8((uint8_t)temp1); + if (regs.byteregs[regah]) { + cf = 1; + of = 1; + } else { + cf = 0; + of = 0; + } + break; + + case 5: //IMUL + oper1 = signext(oper1b); + temp1 = signext(regs.byteregs[regal]); + temp2 = oper1; + if ((temp1 & 0x80) == 0x80) temp1 = temp1 | 0xFFFFFF00UL; + if ((temp2 & 0x80) == 0x80) temp2 = temp2 | 0xFFFFFF00UL; + temp3 = (uint16_t)(temp1 * temp2); + putreg16(regax, (uint16_t)temp3); + if (regs.byteregs[regah]) { + cf = 1; + of = 1; + } else { + cf = 0; + of = 0; + } + break; + + case 6: //DIV + op_div8(getreg16(regax), oper1b); + break; + + case 7: //IDIV + op_idiv8(getreg16(regax), oper1b); + break; + } +} + +void op_div16(uint32_t valdiv, uint16_t divisor) { + if (divisor == 0) { + intcall86(0); + return; + } + if ((valdiv / (uint32_t)divisor) > 0xFFFF) { + intcall86(0); + return; + } + putreg16(regdx, valdiv % (uint32_t)divisor); + putreg16(regax, valdiv / (uint32_t)divisor); +} + +void op_idiv16(uint32_t valdiv, uint16_t divisor) { + uint32_t d1, d2, s1, s2, sign; + if (divisor == 0) { + intcall86(0); + return; + } + s1 = valdiv; + s2 = divisor; + s2 = (s2 & 0x8000) ? (s2 | 0xffff0000UL) : s2; + sign = (((s1 ^ s2) & 0x80000000UL) != 0); + s1 = (s1 < 0x80000000UL) ? s1 : ((~s1 + 1) & 0xffffffffUL); + s2 = (s2 < 0x80000000UL) ? s2 : ((~s2 + 1) & 0xffffffffUL); + d1 = s1 / s2; + d2 = s1 % s2; + if (d1 & 0xFFFF0000UL) { + intcall86(0); + return; + } + if (sign) { + d1 = (uint16_t)(~d1 + 1); + d2 = (uint16_t)(~d2 + 1); + } + putreg16(regax, d1); + putreg16(regdx, d2); +} + +inline void op_grp3_16() { + switch (reg) { + case 0: case 1: //TEST + flag_log16(oper1 & getmem16(segregs[regcs], ip)); StepIP(2); break; + case 2: //NOT + res16 = ~oper1; break; + case 3: //NEG + res16 = (~oper1) + 1; + flag_sub16(0, oper1); + if (res16) cf = 1; else cf = 0; + break; + case 4: //MUL + temp1 = (uint32_t)oper1 * (uint32_t)getreg16(regax); + putreg16(regax, (uint16_t)temp1); + putreg16(regdx, temp1 >> 16); + flag_szp16((uint16_t)temp1); + if (getreg16(regdx)) { + cf = 1; + of = 1; + } else { + cf = 0; + of = 0; + } + break; + case 5: //IMUL + temp1 = getreg16(regax); + temp2 = oper1; + if (temp1 & 0x8000) temp1 |= 0xFFFF0000UL; + if (temp2 & 0x8000) temp2 |= 0xFFFF0000UL; + temp3 = temp1 * temp2; + putreg16(regax, (uint16_t)temp3); //into register ax + putreg16(regdx, temp3 >> 16); //into register dx + if (getreg16(regdx)) { + cf = 1; + of = 1; + } else { + cf = 0; + of = 0; + } + break; + case 6: //DIV + op_div16(((uint32_t)getreg16(regdx) << 16) + (uint32_t)getreg16(regax), oper1); break; + case 7: //DIV + op_idiv16(((uint32_t)getreg16(regdx) << 16) + (uint32_t)getreg16(regax), oper1); break; + } +} + +//inline void op_grp5() { +#define op_grp5() {\ + switch (reg) {\ + case 0: /*INC Ev*/\ + oper2 = 1;\ + tempcf = cf;\ + op_add16();\ + cf = tempcf;\ + writerm16(rm, res16); break;\ + case 1: /*DEC Ev*/\ + oper2 = 1;\ + tempcf = cf;\ + op_sub16();\ + cf = tempcf;\ + writerm16(rm, res16); break;\ + case 2: /*CALL Ev*/\ + push(ip);\ + ip = oper1; break;\ + case 3: /*CALL Mp*/\ + push(segregs[regcs]); push(ip);\ + /*getea(rm);*/\ + ip = (uint16_t)read86(ea) + ((uint16_t)read86(ea + 1) << 8);\ + segregs[regcs] = (uint16_t)read86(ea + 2) + ((uint16_t)read86(ea + 3) << 8); break;\ + case 4: /*JMP Ev*/\ + ip = oper1; break;\ + case 5: /*JMP Mp*/\ + /*getea(rm);*/\ + ip = (uint16_t)read86(ea) + ((uint16_t)read86(ea + 1) << 8);\ + segregs[regcs] = (uint16_t)read86(ea + 2) + ((uint16_t)read86(ea + 3) << 8); break;\ + case 6: /*PUSH Ev*/\ + push(oper1); break;\ + }\ +} + +uint8_t didintr = 0; + +void intcall86(uint8_t intnum) { + didintr = 1; + + switch (intnum) { + case 0x10: //video services + if (regs.byteregs[regah] == 0) { //video mode set +#ifdef ADVANCED_CLIENT + Serial.write(0xFF); + Serial.write(0x02); + Serial.write(regs.byteregs[regal]); + Serial.write(regs.byteregs[regal]); //duplicate for checksum + Serial.write(0xFE); + Serial.write(0x02); +#endif +#ifdef USE_DISPLAY + if (vidmode != regs.byteregs[regal]) clear_display(); + palettereset(); +#endif + vidmode = regs.byteregs[regal]; + //Serial.print("vidmode = "); Serial.println(vidmode); + } + break; + case 0x13: //disk services + diskhandler(); + return; + case 0x19: //bootstrap + //Serial.println("Bootstrap!"); + if (bootdrive < 255) { //read first sector of boot drive into 07C0:0000 and execute it + regs.byteregs[regdl] = bootdrive; + readdisk((bootdrive & 0x80) ? bootdrive - 126 : bootdrive, 0x07C0, 0x0000, 0, 1, 0, 1); + segregs[regcs] = 0x0000; ip = 0x7C00; + } else { + segregs[regcs] = 0xF600; //start ROM BASIC at bootstrap if requested + ip = 0x0000; + } + return; + case 0xFC: + net_handler(); + return; + default: + break; + } + + push(makeflagsword()); + push(segregs[regcs]); + push(ip); + segregs[regcs] = getmem16(0, ((uint16_t)intnum << 2) + 2); + ip = getmem16(0, (uint16_t)intnum << 2); + ifl = 0; + tf = 0; +} + +uint64_t frametimer = 0, didwhen = 0, didticks = 0; +uint32_t makeupticks = 0; +extern float timercomp; +uint64_t timerticks = 0, realticks = 0; +uint64_t lastcountertimer = 0, counterticks = 10000; + +#ifdef PROFILING +uint32_t startmicros, endmicros; +uint32_t instrtime[0x100]; +#endif + +#ifdef PS2_KEYBOARD +extern uint8_t kbloop; +#endif + +extern volatile uint8_t timerTick; + +void exec86(uint32_t execloops) { + uint32_t loopcount; + uint8_t docontinue; + static uint16_t firstip, trap_toggle = 0; + + for (loopcount = 0; loopcount < execloops; loopcount++) { + /*Serial.print(segregs[regcs], HEX); + Serial.write(':'); + Serial.println(ip, HEX);*/ + #ifdef PS2_KEYBOARD + if (kbloop) { + uint32_t msnow; + msnow = micros(); + while ((micros() - msnow) < 20000) { } + kbloop = 0; + ps2poll(); + } + #endif + + if (timerTick) { + //printf("isr\n"); + timerTick = 0; + doirq(0); + } + + if (trap_toggle) intcall86(1); + if (tf) trap_toggle = 1; + else trap_toggle = 0; + if (!trap_toggle && (ifl && (i8259.irr & (~i8259.imr)))) intcall86(nextintr()); //get next interrupt from the i8259, if any + reptype = 0; segoverride = 0; + useseg = segregs[regds]; docontinue = 0; + firstip = ip; + while (!docontinue) { + segregs[regcs] = segregs[regcs] & 0xFFFF; ip = ip & 0xFFFF; + savecs = segregs[regcs]; saveip = ip; + opcode = getmem8(segregs[regcs], ip); StepIP(1); + + switch (opcode) { + //segment prefix check + case 0x2E: //segment segregs[regcs] + useseg = segregs[regcs]; segoverride = 1; break; + case 0x3E: //segment segregs[regds] + useseg = segregs[regds]; segoverride = 1; break; + case 0x26: //segment segregs[reges] + useseg = segregs[reges]; segoverride = 1; break; + case 0x36: //segment segregs[regss] + useseg = segregs[regss]; segoverride = 1; break; + + //repetition prefix check + case 0xF3: //REP/REPE/REPZ + reptype = 1; break; + case 0xF2: //REPNE/REPNZ + reptype = 2; break; + default: + docontinue = 1; + break; + } + } + totalexec++; + //printf("%04X:%04X %02X\n", segregs[regcs], ip, opcode); + //if ((segregs[regcs]==0xF000) && (ip < 0xE000)) exit(0); + +#ifdef PROFILING + startmicros = micros(); +#endif + switch (opcode) { + case 0x0: //00 ADD Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_add8(); + writerm8(rm, res8); + break; + case 0x1: //01 ADD Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_add16(); + writerm16(rm, res16); + break; + case 0x2: //02 ADD Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_add8(); + putreg8(reg, res8); + break; + case 0x3: //03 ADD Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_add16(); + putreg16(reg, res16); + break; + case 0x4: //04 ADD regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_add8(); + regs.byteregs[regal] = res8; + break; + case 0x5: //05 ADD eAX Iv + oper1 = (getreg16(regax)); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_add16(); + putreg16(regax, res16); + break; + case 0x6: //06 PUSH segregs[reges] + push(segregs[reges]); + break; + case 0x7: //07 POP segregs[reges] + segregs[reges] = pop(); + break; + case 0x8: //08 OR Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_or8(); + writerm8(rm, res8); + break; + case 0x9: //09 OR Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_or16(); + writerm16(rm, res16); + break; + case 0xA: //0A OR Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_or8(); + putreg8(reg, res8); + break; + case 0xB: //0B OR Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_or16(); + if ((oper1 == 0xF802) && (oper2 == 0xF802)) sf = 0; //cheap hack to make Wolf 3D think we're a 286 so it plays + putreg16(reg, res16); + break; + case 0xC: //0C OR regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_or8(); + regs.byteregs[regal] = res8; + break; + case 0xD: //0D OR eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_or16(); + putreg16(regax, res16); + break; + case 0xE: //0E PUSH segregs[regcs] + push(segregs[regcs]); + break; + case 0xF: //0F POP CS + segregs[regcs] = pop(); + break; + /*case 0xF: //0F 80286+ extended opcodes + segregs[regcs] = segregs[regcs] & 0xFFFF; ip = ip & 0xFFFF; + savecs = segregs[regcs]; saveip = ip; + opcode = getmem8(segregs[regcs], ip); StepIP(1); + op_286(); + break;*/ + case 0x10: //10 ADC Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_adc8(); + writerm8(rm, res8); + break; + case 0x11: //11 ADC Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_adc16(); + writerm16(rm, res16); + break; + case 0x12: //12 ADC Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_adc8(); + putreg8(reg, res8); + break; + case 0x13: //13 ADC Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_adc16(); + putreg16(reg, res16); + break; + case 0x14: //14 ADC regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_adc8(); + regs.byteregs[regal] = res8; + break; + case 0x15: //15 ADC eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_adc16(); + putreg16(regax, res16); + break; + case 0x16: //16 PUSH segregs[regss] + push(segregs[regss]); + break; + case 0x17: //17 POP segregs[regss] + segregs[regss] = pop(); + break; + case 0x18: //18 SBB Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_sbb8(); + writerm8(rm, res8); + break; + case 0x19: //19 SBB Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_sbb16(); + writerm16(rm, res16); + break; + case 0x1A: //1A SBB Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_sbb8(); + putreg8(reg, res8); + break; + case 0x1B: //1B SBB Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_sbb16(); + putreg16(reg, res16); + break; + case 0x1C: //1C SBB regs.byteregs[regal] Ib; + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_sbb8(); + regs.byteregs[regal] = res8; + break; + case 0x1D: //1D SBB eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_sbb16(); + putreg16(regax, res16); + break; + case 0x1E: //1E PUSH segregs[regds] + push(segregs[regds]); + break; + case 0x1F: //1F POP segregs[regds] + segregs[regds] = pop(); + break; + case 0x20: //20 AND Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_and8(); + writerm8(rm, res8); + break; + case 0x21: //21 AND Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_and16(); + writerm16(rm, res16); + break; + case 0x22: //22 AND Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_and8(); + putreg8(reg, res8); + break; + case 0x23: //23 AND Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_and16(); + putreg16(reg, res16); + break; + case 0x24: //24 AND regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_and8(); + regs.byteregs[regal] = res8; + break; + case 0x25: //25 AND eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_and16(); + putreg16(regax, res16); + break; + case 0x27: //27 DAA + if (((regs.byteregs[regal] & 0xF) > 9) || (af == 1)) { + oper1 = regs.byteregs[regal] + 6; + regs.byteregs[regal] = oper1 & 255; + if (oper1 & 0xFF00) cf = 1; else cf = 0; + af = 1; + } else af = 0; + if (((regs.byteregs[regal] & 0xF0) > 0x90) || (cf == 1)) { + regs.byteregs[regal] = regs.byteregs[regal] + 0x60; + cf = 1; + } else cf = 0; + regs.byteregs[regal] = regs.byteregs[regal] & 255; + flag_szp8(regs.byteregs[regal]); + break; + case 0x28: //28 SUB Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_sub8(); + writerm8(rm, res8); + break; + case 0x29: //29 SUB Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_sub16(); + writerm16(rm, res16); + break; + case 0x2A: //2A SUB Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_sub8(); + putreg8(reg, res8); + break; + case 0x2B: //2B SUB Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_sub16(); + putreg16(reg, res16); + break; + case 0x2C: //2C SUB regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_sub8(); + regs.byteregs[regal] = res8; + break; + case 0x2D: //2D SUB eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_sub16(); + putreg16(regax, res16); + break; + case 0x2F: //2F DAS + if (((regs.byteregs[regal] & 15) > 9) || (af == 1)) { + oper1 = regs.byteregs[regal] - 6; + regs.byteregs[regal] = oper1 & 255; + if (oper1 & 0xFF00) cf = 1; else cf = 0; + af = 1; + } else af = 0; + if (((regs.byteregs[regal] & 0xF0) > 0x90) || (cf == 1)) { + regs.byteregs[regal] = regs.byteregs[regal] - 0x60; + cf = 1; + } else cf = 0; + flag_szp8(regs.byteregs[regal]); + break; + case 0x30: //30 XOR Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + op_xor8(); + writerm8(rm, res8); + break; + case 0x31: //31 XOR Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + op_xor16(); + writerm16(rm, res16); + break; + case 0x32: //32 XOR Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + op_xor8(); + putreg8(reg, res8); + break; + case 0x33: //33 XOR Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + op_xor16(); + putreg16(reg, res16); + break; + case 0x34: //34 XOR regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + op_xor8(); + regs.byteregs[regal] = res8; + break; + case 0x35: //35 XOR eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + op_xor16(); + putreg16(regax, res16); + break; + case 0x37: //37 AAA ASCII + if (((regs.byteregs[regal] & 0xF) > 9) || (af == 1)) { + regs.byteregs[regal] = regs.byteregs[regal] + 6; + regs.byteregs[regah] = regs.byteregs[regah] + 1; + af = 1; + cf = 1; + } else { + af = 0; + cf = 0; + } + regs.byteregs[regal] = regs.byteregs[regal] & 0xF; + break; + case 0x38: //38 CMP Eb Gb + modregrm(); + oper1b = readrm8(rm); oper2b = getreg8(reg); + flag_sub8(oper1b, oper2b); + break; + case 0x39: //39 CMP Ev Gv + modregrm(); + oper1 = readrm16(rm); oper2 = getreg16(reg); + flag_sub16(oper1, oper2); + break; + case 0x3A: //3A CMP Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + flag_sub8(oper1b, oper2b); + break; + case 0x3B: //3B CMP Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + flag_sub16(oper1, oper2); + break; + case 0x3C: //3C CMP regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + flag_sub8(oper1b, oper2b); + break; + case 0x3D: //3D CMP eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + flag_sub16(oper1, oper2); + break; + case 0x3F: //3F AAS ASCII + if (((regs.byteregs[regal] & 0xF) > 9) || (af == 1)) { + regs.byteregs[regal] = regs.byteregs[regal] - 6; + regs.byteregs[regah] = regs.byteregs[regah] - 1; + af = 1; + cf = 1; + } else { + af = 0; + cf = 0; + } + regs.byteregs[regal] = regs.byteregs[regal] & 0xF; + break; + case 0x40: //40 INC eAX + oldcf = cf; + oper1 = getreg16(regax); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regax, res16); + break; + case 0x41: //41 INC eCX + oldcf = cf; + oper1 = getreg16(regcx); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regcx, res16); + break; + case 0x42: //42 INC eDX + oldcf = cf; + oper1 = getreg16(regdx); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regdx, res16); + break; + case 0x43: //43 INC eBX + oldcf = cf; + oper1 = getreg16(regbx); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regbx, res16); + break; + case 0x44: //44 INC eSP + oldcf = cf; + oper1 = getreg16(regsp); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regsp, res16); + break; + case 0x45: //45 INC eBP + oldcf = cf; + oper1 = getreg16(regbp); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regbp, res16); + break; + case 0x46: //46 INC eSI + oldcf = cf; + oper1 = getreg16(regsi); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regsi, res16); + break; + case 0x47: //47 INC eDI + oldcf = cf; + oper1 = getreg16(regdi); oper2 = 1; + op_add16(); + cf = oldcf; + putreg16(regdi, res16); + break; + case 0x48: //48 DEC eAX + oldcf = cf; + oper1 = getreg16(regax); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regax, res16); + break; + case 0x49: //49 DEC eCX + oldcf = cf; + oper1 = getreg16(regcx); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regcx, res16); + break; + case 0x4A: //4A DEC eDX + oldcf = cf; + oper1 = getreg16(regdx); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regdx, res16); + break; + case 0x4B: //4B DEC eBX + oldcf = cf; + oper1 = getreg16(regbx); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regbx, res16); + break; + case 0x4C: //4C DEC eSP + oldcf = cf; + oper1 = getreg16(regsp); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regsp, res16); + break; + case 0x4D: //4D DEC eBP + oldcf = cf; + oper1 = getreg16(regbp); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regbp, res16); + break; + case 0x4E: //4E DEC eSI + oldcf = cf; + oper1 = getreg16(regsi); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regsi, res16); + break; + case 0x4F: //4F DEC eDI + oldcf = cf; + oper1 = getreg16(regdi); oper2 = 1; + op_sub16(); + cf = oldcf; + putreg16(regdi, res16); + break; + case 0x50: //50 PUSH eAX + push (getreg16(regax)); + break; + case 0x51: //51 PUSH eCX + push (getreg16(regcx)); + break; + case 0x52: //52 PUSH eDX + push (getreg16(regdx)); + break; + case 0x53: //53 PUSH eBX + push (getreg16(regbx)); + break; + case 0x54: //54 PUSH eSP + push (getreg16(regsp) - 2); + break; + case 0x55: //55 PUSH eBP + push (getreg16(regbp)); + break; + case 0x56: //56 PUSH eSI + push (getreg16(regsi)); + break; + case 0x57: //57 PUSH eDI + push (getreg16(regdi)); + break; + case 0x58: //58 POP eAX + putreg16(regax, pop()); + break; + case 0x59: //59 POP eCX + putreg16(regcx, pop()); + break; + case 0x5A: //5A POP eDX + putreg16(regdx, pop()); + break; + case 0x5B: //5B POP eBX + putreg16(regbx, pop()); + break; + case 0x5C: //5C POP eSP + putreg16(regsp, pop()); + break; + case 0x5D: //5D POP eBP + putreg16(regbp, pop()); + break; + case 0x5E: //5E POP eSI + putreg16(regsi, pop()); + break; + case 0x5F: //5F POP eDI + putreg16(regdi, pop()); + break; + case 0x60: //60 PUSHA (80186+) + oldsp = getreg16(regsp); + push(getreg16(regax)); + push(getreg16(regcx)); + push(getreg16(regdx)); + push(getreg16(regbx)); + push(oldsp); + push(getreg16(regbp)); + push(getreg16(regsi)); + push(getreg16(regdi)); + break; + case 0x61: //61 POPA (80186+) + putreg16(regdi, pop()); + putreg16(regsi, pop()); + putreg16(regbp, pop()); + dummy = pop(); + putreg16(regbx, pop()); + putreg16(regdx, pop()); + putreg16(regcx, pop()); + putreg16(regax, pop()); + break; + case 0x68: //68 PUSH Iv (80186+) + push(getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0x69: //69 IMUL Gv Ev Iv (80186+) + //print("WE HIT 69h IMUL\r\n"); + modregrm(); + temp1 = readrm16(rm); + temp2 = getmem16(segregs[regcs], ip); StepIP(2); + if ((temp1 & 0x8000L) == 0x8000L) temp1 = temp1 | 0xFFFF0000L; + if ((temp2 & 0x8000L) == 0x8000L) temp2 = temp2 | 0xFFFF0000L; + temp3 = temp1 * temp2; + putreg16(reg, temp3 & 0xFFFFL); + if (temp3 & 0xFFFF0000L) { + cf = 1; + of = 1; + } else { + cf = 0; + of = 0; + } + break; + case 0x6A: //6A PUSH Ib (80186+) + push(getmem8(segregs[regcs], ip)); StepIP(1); + break; + case 0x6B: //6B IMUL Gv Eb Ib (80186+) + //print("WE HIT 6Bh IMUL\r\n"); + modregrm(); + temp1 = readrm16(rm); + temp2 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if ((temp1 & 0x8000L) == 0x8000L) temp1 = temp1 | 0xFFFF0000L; + if ((temp2 & 0x8000L) == 0x8000L) temp2 = temp2 | 0xFFFF0000L; + temp3 = temp1 * temp2; + putreg16(reg, temp3 & 0xFFFFL); + if (temp3 & 0xFFFF0000L) { + cf = 1; + of = 1; + } else { + cf = 0; + of = 0; + } + break; + //case 0x6C ... 0x6F: //80186 port operations, just act as if they//re NOPs for now... + // StepIP(1); //they have a modregrm(); byte we must skip... i may properly emulate these later. + // break; + case 0x6E: //6E OUTSB + if (reptype && (getreg16(regcx) == 0)) break; + portout16 = 0; + portout(regs.wordregs[regdx], getmem16(useseg, getreg16(regsi))); + if (df) { + putreg16(regsi, getreg16(regsi) - 1); + putreg16(regdi, getreg16(regdi) - 1); + } + else { + putreg16(regsi, getreg16(regsi) + 1); + putreg16(regdi, getreg16(regdi) + 1); + } + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0x6F: //6F OUTSW + if (reptype && (getreg16(regcx) == 0)) break; + portout16 = 1; + portout(regs.wordregs[regdx], getmem16(useseg, getreg16(regsi))); + if (df) { + putreg16(regsi, getreg16(regsi) - 2); + putreg16(regdi, getreg16(regdi) - 2); + } + else { + putreg16(regsi, getreg16(regsi) + 2); + putreg16(regdi, getreg16(regdi) + 2); + } + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + + case 0x70: //70 JO Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (of) ip = ip + temp16; + break; + case 0x71: //71 JNO Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!of) ip = ip + temp16; + break; + case 0x72: //72 JB Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (cf) ip = ip + temp16; + break; + case 0x73: //73 JNB Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!cf) ip = ip + temp16; + break; + case 0x74: //74 JZ Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (zf) ip = ip + temp16; + break; + case 0x75: //75 JNZ Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!zf) ip = ip + temp16; + break; + case 0x76: //76 JBE Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (cf || zf) ip = ip + temp16; + break; + case 0x77: //77 JA Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!cf && !zf) ip = ip + temp16; + break; + case 0x78: //78 JS Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (sf) ip = ip + temp16; + break; + case 0x79: //79 JNS Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!sf) ip = ip + temp16; + break; + case 0x7A: //7A JPE Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (pf) ip = ip + temp16; + break; + case 0x7B: //7B JPO Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!pf) ip = ip + temp16; + break; + case 0x7C: //7C JL Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (sf != of) ip = ip + temp16; + break; + case 0x7D: //7D JGE Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (sf == of) ip = ip + temp16; + break; + case 0x7E: //7E JLE Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if ((sf != of) || zf) ip = ip + temp16; + break; + case 0x7F: //7F JG Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!zf && (sf == of)) ip = ip + temp16; + break; + case 0x80: case 0x82: //80/82 GRP1 Eb Ib + modregrm(); + oper1b = readrm8(rm); + oper2b = getmem8(segregs[regcs], ip); StepIP(1); + switch (reg) { + case 0: op_add8(); break; + case 1: op_or8(); break; + case 2: op_adc8(); break; + case 3: op_sbb8(); break; + case 4: op_and8(); break; + case 5: op_sub8(); break; + case 6: op_xor8(); break; + case 7: flag_sub8(oper1b, oper2b); break; + default: break; //to avoid compiler warnings + } + if (reg < 7) writerm8(rm, res8); + break; + case 0x81: //81 GRP1 Ev Iv + case 0x83: //83 GRP1 Ev Ib + modregrm(); + oper1 = readrm16(rm); + if (opcode == 0x81) { + oper2 = getmem16(segregs[regcs], ip); StepIP(2); + } else { + oper2 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + } + switch (reg) { + case 0: op_add16(); break; + case 1: op_or16(); break; + case 2: op_adc16(); break; + case 3: op_sbb16(); break; + case 4: op_and16(); break; + case 5: op_sub16(); break; + case 6: op_xor16(); break; + case 7: flag_sub16(oper1, oper2); break; + default: break; //to avoid compiler warnings + } + if (reg < 7) writerm16(rm, res16); + break; + case 0x84: //84 TEST Gb Eb + modregrm(); + oper1b = getreg8(reg); oper2b = readrm8(rm); + flag_log8(oper1b & oper2b); + break; + case 0x85: //85 TEST Gv Ev + modregrm(); + oper1 = getreg16(reg); oper2 = readrm16(rm); + flag_log16(oper1 & oper2); + break; + case 0x86: //86 XCHG Gb Eb + modregrm(); + oper1b = getreg8(reg); + putreg8(reg, readrm8(rm)); + writerm8(rm, oper1b); + break; + case 0x87: //87 XCHG Gv Ev + modregrm(); + oper1 = getreg16(reg); + putreg16(reg, readrm16(rm)); + writerm16(rm, oper1); + break; + case 0x88: //88 MOV Eb Gb + modregrm(); + writerm8(rm, getreg8(reg)); + break; + case 0x89: //89 MOV Ev Gv + modregrm(); + writerm16(rm, getreg16(reg)); + break; + case 0x8A: //8A MOV Gb Eb + modregrm(); + putreg8(reg, readrm8(rm)); + break; + case 0x8B: //8B MOV Gv Ev + modregrm(); + putreg16(reg, readrm16(rm)); + break; + case 0x8C: //8C MOV Ew Sw + modregrm(); + writerm16(rm, getsegreg(reg)); + break; + case 0x8D: //8D LEA Gv M + modregrm(); + //getea(rm); + putreg16(reg, ea - segbase(useseg)); + break; + case 0x8E: //8E MOV Sw Ew + modregrm(); + putsegreg(reg, readrm16(rm)); + break; + case 0x8F: //8F POP Ev + modregrm(); + writerm16(rm, pop()); + break; + case 0x90: //90 NOP + break; + case 0x91: //91 XCHG eCX eAX + oper1 = getreg16(regcx); + putreg16(regcx, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x92: //92 XCHG eDX eAX + oper1 = getreg16(regdx); + putreg16(regdx, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x93: //93 XCHG eBX eAX + oper1 = getreg16(regbx); + putreg16(regbx, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x94: //94 XCHG eSP eAX + oper1 = getreg16(regsp); + putreg16(regsp, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x95: //95 XCHG eBP eAX + oper1 = getreg16(regbp); + putreg16(regbp, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x96: //96 XCHG eSI eAX + oper1 = getreg16(regsi); + putreg16(regsi, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x97: //97 XCHG eDI eAX + oper1 = getreg16(regdi); + putreg16(regdi, getreg16(regax)); + putreg16(regax, oper1); + break; + case 0x98: //98 CBW + if ((regs.byteregs[regal] & 0x80) == 0x80) regs.byteregs[regah] = 0xFF; else regs.byteregs[regah] = 0; + break; + case 0x99: //99 CWD + if ((regs.byteregs[regah] & 0x80) == 0x80) putreg16(regdx, 0xFFFF); else putreg16(regdx, 0); + break; + case 0x9A: //9A CALL Ap + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + oper2 = getmem16(segregs[regcs], ip); StepIP(2); + push(segregs[regcs]); push(ip); ip = oper1; segregs[regcs] = oper2; + break; + case 0x9B: //9B WAIT + break; + case 0x9C: //9C PUSHF + push(makeflagsword() | 0xF800); + break; + case 0x9D: //9D POPF + temp16 = pop(); + decodeflagsword(temp16); + break; + case 0x9E: //9E SAHF + decodeflagsword ((makeflagsword() & 0xFF00) | regs.byteregs[regah]); + break; + case 0x9F: //9F LAHF + regs.byteregs[regah] = makeflagsword() & 0xFF; + break; + case 0xA0: //A0 MOV regs.byteregs[regal] Ob + regs.byteregs[regal] = getmem8(useseg, getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0xA1: //A1 MOV eAX Ov + oper1 = getmem16(useseg, getmem16(segregs[regcs], ip)); StepIP(2); + putreg16(regax, oper1); + break; + case 0xA2: //A2 MOV Ob regs.byteregs[regal] + putmem8(useseg, getmem16(segregs[regcs], ip), regs.byteregs[regal]); StepIP(2); + break; + case 0xA3: //A3 MOV Ov eAX + putmem16(useseg, getmem16(segregs[regcs], ip), getreg16(regax)); StepIP(2); + break; + case 0xA4: //A4 MOVSB + if (reptype && (getreg16(regcx) == 0)) break; + putmem8(segregs[reges], getreg16(regdi), getmem8(useseg, getreg16(regsi))); + if (df) { + putreg16(regsi, getreg16(regsi) - 1); + putreg16(regdi, getreg16(regdi) - 1); + } + else { + putreg16(regsi, getreg16(regsi) + 1); + putreg16(regdi, getreg16(regdi) + 1); + } + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0xA5: //A5 MOVSW + if (reptype && (getreg16(regcx) == 0)) break; + putmem16(segregs[reges], getreg16(regdi), getmem16(useseg, getreg16(regsi))); + if (df) { + putreg16(regsi, getreg16(regsi) - 2); + putreg16(regdi, getreg16(regdi) - 2); + } + else { + putreg16(regsi, getreg16(regsi) + 2); + putreg16(regdi, getreg16(regdi) + 2); + } + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0xA6: //A6 CMPSB + if (reptype && (getreg16(regcx) == 0)) break; + oper1b = getmem8(useseg, getreg16(regsi)); oper2b = getmem8(segregs[reges], getreg16(regdi)); + if (df) { + putreg16(regsi, getreg16(regsi) - 1); + putreg16(regdi, getreg16(regdi) - 1); + } + else { + putreg16(regsi, getreg16(regsi) + 1); + putreg16(regdi, getreg16(regdi) + 1); + } + flag_sub8(oper1b, oper2b); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if ((reptype == 1) && !zf) break; + else if ((reptype == 2) && (zf == 1)) break; + if (!reptype) break; + ip = firstip; + break; + case 0xA7: //A7 CMPSW + if (reptype && (getreg16(regcx) == 0)) break; + oper1 = getmem16(useseg, getreg16(regsi)); oper2 = getmem16(segregs[reges], getreg16(regdi)); + if (df) { + putreg16(regsi, getreg16(regsi) - 2); + putreg16(regdi, getreg16(regdi) - 2); + } + else { + putreg16(regsi, getreg16(regsi) + 2); + putreg16(regdi, getreg16(regdi) + 2); + } + flag_sub16(oper1, oper2); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if ((reptype == 1) && !zf) break; + if ((reptype == 2) && (zf == 1)) break; + if (!reptype) break; + ip = firstip; + break; + case 0xA8: //A8 TEST regs.byteregs[regal] Ib + oper1b = regs.byteregs[regal]; oper2b = getmem8(segregs[regcs], ip); StepIP(1); + flag_log8(oper1b & oper2b); + break; + case 0xA9: //A9 TEST eAX Iv + oper1 = getreg16(regax); oper2 = getmem16(segregs[regcs], ip); StepIP(2); + flag_log16(oper1 & oper2); + break; + case 0xAA: //AA STOSB + if (reptype && (getreg16(regcx) == 0)) break; + putmem8(segregs[reges], getreg16(regdi), regs.byteregs[regal]); + if (df) putreg16(regdi, getreg16(regdi) - 1); + else putreg16(regdi, getreg16(regdi) + 1); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0xAB: //AB STOSW + if (reptype && (getreg16(regcx) == 0)) break; + putmem16(segregs[reges], getreg16(regdi), getreg16(regax)); + if (df) putreg16(regdi, getreg16(regdi) - 2); + else putreg16(regdi, getreg16(regdi) + 2); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0xAC: //AC LODSB + if (reptype && (getreg16(regcx) == 0)) break; + regs.byteregs[regal] = getmem8(useseg, getreg16(regsi)); + if (df) putreg16(regsi, getreg16(regsi) - 1); + else putreg16(regsi, getreg16(regsi) + 1); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0xAD: //AD LODSW + if (reptype && (getreg16(regcx) == 0)) break; + oper1 = getmem16(useseg, getreg16(regsi)); + putreg16(regax, oper1); + if (df) putreg16(regsi, getreg16(regsi) - 2); + else putreg16(regsi, getreg16(regsi) + 2); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if (!reptype) break; + ip = firstip; + break; + case 0xAE: //AE SCASB + if (reptype && (getreg16(regcx) == 0)) break; + oper1b = getmem8(segregs[reges], getreg16(regdi)); oper2b = regs.byteregs[regal]; + flag_sub8(oper1b, oper2b); + if (df) putreg16(regdi, getreg16(regdi) - 1); + else putreg16(regdi, getreg16(regdi) + 1); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if ((reptype == 1) && !zf) break; + else if ((reptype == 2) && (zf == 1)) break; + if (!reptype) break; + ip = firstip; + break; + case 0xAF: //AF SCASW + if (reptype && (getreg16(regcx) == 0)) break; + oper1 = getmem16(segregs[reges], getreg16(regdi)); oper2 = getreg16(regax); + flag_sub16(oper1, oper2); + if (df) putreg16(regdi, getreg16(regdi) - 2); + else putreg16(regdi, getreg16(regdi) + 2); + if (reptype) putreg16(regcx, getreg16(regcx) - 1); + if ((reptype == 1) && !zf) break; + else if ((reptype == 2) & (zf == 1)) break; + if (!reptype) break; + ip = firstip; + break; + case 0xB0: //B0 MOV regs.byteregs[regal] Ib + regs.byteregs[regal] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB1: //B1 MOV regs.byteregs[regcl] Ib + regs.byteregs[regcl] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB2: //B2 MOV regs.byteregs[regdl] Ib + regs.byteregs[regdl] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB3: //B3 MOV regs.byteregs[regbl] Ib + regs.byteregs[regbl] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB4: //B4 MOV regs.byteregs[regah] Ib + regs.byteregs[regah] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB5: //B5 MOV regs.byteregs[regch] Ib + regs.byteregs[regch] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB6: //B6 MOV regs.byteregs[regdh] Ib + regs.byteregs[regdh] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB7: //B7 MOV regs.byteregs[regbh] Ib + regs.byteregs[regbh] = getmem8(segregs[regcs], ip); StepIP(1); + break; + case 0xB8: //B8 MOV eAX Iv + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + putreg16(regax, oper1); + break; + case 0xB9: //B9 MOV eCX Iv + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + putreg16(regcx, oper1); + break; + case 0xBA: //BA MOV eDX Iv + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + putreg16(regdx, oper1); + break; + case 0xBB: //BB MOV eBX Iv + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + putreg16(regbx, oper1); + break; + case 0xBC: //BC MOV eSP Iv + putreg16(regsp, getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0xBD: //BD MOV eBP Iv + putreg16(regbp, getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0xBE: //BE MOV eSI Iv + putreg16(regsi, getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0xBF: //BF MOV eDI Iv + putreg16(regdi, getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0xC0: //C0 GRP2 byte imm8 (80186+) + modregrm(); + oper1b = readrm8(rm); + oper2b = getmem8(segregs[regcs], ip); StepIP(1); + writerm8(rm, op_grp2_8(oper2b)); + break; + case 0xC1: //C1 GRP2 word imm8 (80186+) + modregrm(); + oper1 = readrm16(rm); + oper2 = getmem8(segregs[regcs], ip); StepIP(1); + writerm16(rm, op_grp2_16(oper2)); + break; + case 0xC2: //C2 RET Iw + oper1 = getmem16(segregs[regcs], ip); + ip = pop(); + putreg16(regsp, getreg16(regsp) + oper1); + break; + case 0xC3: //C3 RET + ip = pop(); + break; + case 0xC4: //C4 LES Gv Mp + modregrm(); + //getea(rm); + putreg16(reg, read86(ea) + ((uint16_t)read86(ea + 1) << 8)); + segregs[reges] = read86(ea + 2) + ((uint16_t)read86(ea + 3) << 8); + break; + case 0xC5: //C5 LDS Gv Mp + modregrm(); + //getea(rm); + putreg16(reg, read86(ea) + ((uint16_t)read86(ea + 1) << 8)); + segregs[regds] = read86(ea + 2) + ((uint16_t)read86(ea + 3) << 8); + break; + case 0xC6: //C6 MOV Eb Ib + modregrm(); + writerm8(rm, getmem8(segregs[regcs], ip)); StepIP(1); + break; + case 0xC7: //C7 MOV Ev Iv + modregrm(); + writerm16(rm, getmem16(segregs[regcs], ip)); StepIP(2); + break; + case 0xC8: //C8 ENTER (80186+) + stacksize = getmem16(segregs[regcs], ip); StepIP(2); + nestlev = getmem8(segregs[regcs], ip); StepIP(1); + push(getreg16(regbp)); + frametemp = getreg16(regsp); + if (nestlev) { + for (temp16 = 1; temp16 < nestlev; temp16++) { + putreg16(regbp, getreg16(regbp) - 2); + push(getreg16(regbp)); + } + push(getreg16(regsp)); + } + putreg16(regbp, frametemp); + putreg16(regsp, getreg16(regbp) - stacksize); + + break; + case 0xC9: //C9 LEAVE (80186+) + putreg16(regsp, getreg16(regbp)); + putreg16(regbp, pop()); + + break; + case 0xCA: //CA RETF Iw + oper1 = getmem16(segregs[regcs], ip); + ip = pop(); segregs[regcs] = pop(); + putreg16(regsp, getreg16(regsp) + oper1); + break; + case 0xCB: //CB RETF + ip = pop();; segregs[regcs] = pop(); + break; + case 0xCC: //CC INT 3 + intcall86(3); + break; + case 0xCD: //CD INT Ib + oper1 = getmem8(segregs[regcs], ip); StepIP(1); + intcall86(oper1); + break; + case 0xCE: //CE INTO + if (of) intcall86(4); + break; + case 0xCF: //CF IRET + ip = pop(); segregs[regcs] = pop(); + decodeflagsword(pop()); + //if (net.enabled) net.canrecv = 1; + break; + case 0xD0: //D0 GRP2 Eb 1 + modregrm(); + oper1b = readrm8(rm); + writerm8(rm, op_grp2_8(1)); + break; + case 0xD1: //D1 GRP2 Ev 1 + modregrm(); + oper1 = readrm16(rm); + writerm16(rm, op_grp2_16(1)); + break; + case 0xD2: //D2 GRP2 Eb regs.byteregs[regcl] + modregrm(); + oper1b = readrm8(rm); + writerm8(rm, op_grp2_8(regs.byteregs[regcl])); + break; + case 0xD3: //D3 GRP2 Ev regs.byteregs[regcl] + modregrm(); + oper1 = readrm16(rm); + writerm16(rm, op_grp2_16(regs.byteregs[regcl])); + break; + case 0xD4: //D4 AAM I0 + oper1 = getmem8(segregs[regcs], ip); StepIP(1); + if (!oper1) { + intcall86(0); //division by zero + return; + } + regs.byteregs[regah] = (regs.byteregs[regal] / oper1) & 255; + regs.byteregs[regal] = (regs.byteregs[regal] % oper1) & 255; + flag_szp16 (getreg16(regax)); + break; + case 0xD5: //D5 AAD I0 + oper1 = getmem8(segregs[regcs], ip); StepIP(1); + regs.byteregs[regal] = (regs.byteregs[regah] * oper1 + regs.byteregs[regal]) & 255; + regs.byteregs[regah] = 0; + flag_szp16(regs.byteregs[regah] * oper1 + regs.byteregs[regal]); + sf = 0; + break; + case 0xD6: //D6 XLAT on V20/V30, SALC on 8086/8088 + regs.byteregs[regal] = cf; + break; + case 0xD7: //D7 XLAT + putreg8(regal, read86(segbase(useseg) + (uint32_t)getreg16(regbx) + (uint32_t)getreg8(regal))); + break; + case 0xD8: case 0xD9: case 0xDA: case 0xDB: case 0xDC: case 0xDE: case 0xDD: case 0xDF: //escape + StepIP(1); + break; + case 0xE0: //E0 LOOPNZ Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + putreg16(regcx, getreg16(regcx) - 1); + if ((getreg16(regcx)) && !zf) ip = ip + temp16; + break; + case 0xE1: //E1 LOOPZ Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + putreg16(regcx, (getreg16(regcx)) - 1); + if ((getreg16(regcx)) && (zf == 1)) ip = ip + temp16; + break; + case 0xE2: //E2 LOOP Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + putreg16(regcx, (getreg16(regcx)) - 1); + if (getreg16(regcx)) ip = ip + temp16; + break; + case 0xE3: //E3 JCXZ Jb + temp16 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + if (!(getreg16(regcx))) ip = ip + temp16; + break; + case 0xE4: //E4 IN regs.byteregs[regal] Ib + oper1b = getmem8(segregs[regcs], ip); + StepIP(1); + regs.byteregs[regal] = portin(oper1b); + break; + case 0xE5: //E5 IN eAX Ib + oper1b = getmem8(segregs[regcs], ip); + StepIP(1); + putreg16(regax, portin(oper1b)); + break; + case 0xE6: //E6 OUT Ib regs.byteregs[regal] + oper1b = getmem8(segregs[regcs], ip); + StepIP(1); + portout16 = 0; + portout(oper1b, regs.byteregs[regal]); + break; + case 0xE7: //E7 OUT Ib eAX + oper1b = getmem8(segregs[regcs], ip); + StepIP(1); + portout16 = 1; + portout(oper1b, (getreg16(regax))); + break; + case 0xE8: //E8 CALL Jv + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + push(ip); + ip = ip + oper1; + break; + case 0xE9: //E9 JMP Jv + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + ip = ip + oper1; + break; + case 0xEA: //EA JMP Ap + oper1 = getmem16(segregs[regcs], ip); StepIP(2); + oper2 = getmem16(segregs[regcs], ip); + ip = oper1; segregs[regcs] = oper2; + break; + case 0xEB: //EB JMP Jb + oper1 = signext(getmem8(segregs[regcs], ip)); StepIP(1); + ip = ip + oper1; + break; + case 0xEC: //EC IN regs.byteregs[regal] regdx + oper1 = (getreg16(regdx)); + regs.byteregs[regal] = portin(oper1); + break; + case 0xED: //ED IN eAX regdx + oper1 = (getreg16(regdx)); + putreg16(regax, portin(oper1)); + break; + case 0xEE: //EE OUT regdx regs.byteregs[regal] + oper1 = (getreg16(regdx)); + portout16 = 0; + portout(oper1, regs.byteregs[regal]); + break; + case 0xEF: //EF OUT regdx eAX + oper1 = (getreg16(regdx)); + portout16 = 1; + portout(oper1, (getreg16(regax))); + break; + case 0xF0: //F0 LOCK + case 0xF4: //F4 HLT + break; + case 0xF5: //F5 CMC + if (!cf) cf = 1; else cf = 0; + break; + case 0xF6: //F6 GRP3a Eb + modregrm(); + oper1b = readrm8(rm); + op_grp3_8(); + if ((reg > 1) && (reg < 4)) writerm8(rm, res8); + + break; + case 0xF7: //F7 GRP3b Ev + modregrm(); + oper1 = readrm16(rm); + op_grp3_16(); + if ((reg > 1) && (reg < 4)) writerm16(rm, res16); + break; + case 0xF8: //F8 CLC + cf = 0; + break; + case 0xF9: //F9 STC + cf = 1; + break; + case 0xFA: //FA CLI + ifl = 0; + break; + case 0xFB: //FB STI + ifl = 1; + break; + case 0xFC: //FC CLD + df = 0; + break; + case 0xFD: //FD STD + df = 1; + break; + case 0xFE: //FE GRP4 Eb + modregrm(); + oper1b = readrm8(rm); oper2b = 1; + if (!reg) { + tempcf = cf; + res8 = oper1b + oper2b; + flag_add8(oper1b, oper2b); + cf = tempcf; writerm8(rm, res8); + } else { + tempcf = cf; + res8 = oper1b - oper2b; + flag_sub8(oper1b, oper2b); + cf = tempcf; writerm8(rm, res8); + } + break; + case 0xFF: //FF GRP5 Ev + modregrm(); + oper1 = readrm16(rm); + op_grp5(); + break; + default: + intcall86(6); //trip invalid opcode exception (this occurs on the 80186+, 8086/8088 CPUs treat them as NOPs + if (verbose) { + //if (opcode==0xF) sprintf(msg, "Illegal opcode: %02X @ %04X:%04X\n", opcode, savecs, saveip); + //else + //sprintf(msg, "Illegal opcode: %02X %02X @ %04X:%04X\n", opcode, getmem8(savecs, saveip + 1), savecs, saveip); + } + + break; + } +#ifdef PROFILING + endmicros = micros(); + if (instrtime[opcode]) { + instrtime[opcode] = (instrtime[opcode] + (endmicros - startmicros)) >> 1; + } else { + instrtime[opcode] = endmicros - startmicros; + } +#endif + //if (!running) return; + } +} + +void testmem() { + +} + diff --git a/MCUME_teensy/teensy8086/disk.cpp b/MCUME_teensy/teensy8086/disk.cpp new file mode 100644 index 0000000..775aba8 --- /dev/null +++ b/MCUME_teensy/teensy8086/disk.cpp @@ -0,0 +1,256 @@ +#include +#include +#include "emu.h" +#include "emuapi.h" + +extern uint8_t bootdrive, hdcount; +extern uint16_t segregs[6]; +extern uint8_t cf; +extern _bytewordregs_ regs; + +int file; + +struct struct_drive { + uint32_t filesize; + uint16_t cyls; + uint16_t sects; + uint16_t heads; + uint8_t inserted; +} disk[4]; +uint8_t sectorbuffer[512]; + +uint8_t insertdisk(uint8_t drivenum) { + if (drivenum & 0x80) { + drivenum -= 126; + disk[drivenum].sects = 63; + disk[drivenum].heads = 16; + disk[drivenum].cyls = 1023; //up to 512 MB + hdcount = 1; + } else { +#ifdef FDD_144M + disk[drivenum].cyls = 80; + disk[drivenum].sects = 18; + disk[drivenum].heads = 2; +#endif +#ifdef FDD_122M + disk[drivenum].cyls = 80; + disk[drivenum].sects = 15; + disk[drivenum].heads = 2; +#endif +#ifdef FDD_720K + disk[drivenum].cyls = 80; + disk[drivenum].sects = 9; + disk[drivenum].heads = 2; +#endif +#ifdef FDD_360K + disk[drivenum].cyls = 40; + disk[drivenum].sects = 9; + disk[drivenum].heads = 2; +#endif +#ifdef FDD_320K + disk[drivenum].cyls = 40; + disk[drivenum].sects = 8; + disk[drivenum].heads = 2; +#endif +#ifdef FDD_180K + disk[drivenum].cyls = 40; + disk[drivenum].sects = 9; + disk[drivenum].heads = 1; +#endif + } + disk[drivenum].inserted = 1; + return 0; +} + +void ejectdisk(uint8_t drivenum) { + if (drivenum & 0x80) drivenum -= 126; + disk[drivenum].inserted = 0; +} + +extern uint16_t ramseg; +extern "C" { +extern void emu_SdReadBlock(int block, void * buf); +} +uint8_t sectdone; +void getsect(uint32_t lba, uint8_t *dst) { +#ifdef USB_DISK + uint8_t chksum; + uint32_t curmicros; +retrysectget: + Serial.write(0xFF); + Serial.write(0x05); + outByte(lba & 0xFF); chksum = lba & 0xFF; + outByte((lba >> 8) & 0xFF); chksum += (lba >> 8) & 0xFF; + outByte((lba >> 16) & 0xFF); chksum += (lba >> 16) & 0xFF; + outByte((lba >> 24) & 0xFF); chksum += (lba >> 24) & 0xFF; + outByte(chksum); + Serial.write(0xFE); + Serial.write(0x02); + sectdone = 0; + curmicros = micros(); + while (!sectdone) { + if (micros() < curmicros) curmicros = micros(); + if ((micros() - curmicros) >= 200000) goto retrysectget; + net_loop(); + } +#else + if (file) + { + //printf("read block %d\n",lba); + emu_FileSeek(lba*512); + emu_FileRead(dst,1*512); + } +#endif +} + +void putsect(uint32_t lba, uint8_t *src) { +#ifdef USB_DISK + uint8_t chksum; + uint16_t i; + uint32_t curmicros; +retrysectput: + Serial.write(0xFF); + Serial.write(0x06); + outByte(lba & 0xFF); chksum = lba & 0xFF; + outByte((lba >> 8) & 0xFF); chksum += (lba >> 8) & 0xFF; + outByte((lba >> 16) & 0xFF); chksum += (lba >> 16) & 0xFF; + outByte((lba >> 24) & 0xFF); chksum += (lba >> 24) & 0xFF; + for (i=0; i<512; i++) { + outByte(src[i]); + chksum += src[i]; + } + outByte(chksum); + Serial.write(0xFE); + Serial.write(0x02); + sectdone = 0; + curmicros = micros(); + while (!sectdone) { + if (micros() < curmicros) curmicros = micros(); + if ((micros() - curmicros) >= 200000) goto retrysectput; + net_loop(); + } +#else + //card.writeBlock(lba, src); +#endif +} +void readdisk(uint8_t drivenum, uint16_t dstseg, uint16_t dstoff, uint16_t cyl, uint16_t sect, uint16_t head, uint16_t sectcount) { + uint32_t memdest, goodsects, dummy, lba; + if ((sect == 0) || !disk[drivenum].inserted) return; +#ifdef MEGA + SPI.setClockDivider(SPI_CLOCK_SDCARD); +#endif + lba = ((long)cyl * (long)disk[drivenum].heads + (long)head) * (long)disk[drivenum].sects + (long)sect - 1; + memdest = (uint32_t)dstseg * 16 + (uint32_t)dstoff; + for (goodsects = 0; goodsects < sectcount; goodsects++) { + getsect(lba, sectorbuffer); + memdest = (uint32_t)dstseg * 16 + (uint32_t)dstoff; + for (dummy = 0; dummy < 512; dummy++) { + write86(memdest++, sectorbuffer[dummy]); + //Serial.write(sectorbuffer[dummy]); + } + dstoff += 512; + lba++; + } + cf = 0; regs.byteregs[regah] = 0; regs.byteregs[regal] = sectcount; +#ifdef MEGA + SPI.setClockDivider(SPI_CLOCK_SPIRAM); +#endif +} + +void writedisk(uint8_t drivenum, uint16_t dstseg, uint16_t dstoff, uint16_t cyl, uint16_t sect, uint16_t head, uint16_t sectcount) { + uint32_t memdest, goodsects, dummy, lba; + if ((sect == 0) || !disk[drivenum].inserted) return; +#ifdef MEGA + SPI.setClockDivider(SPI_CLOCK_SDCARD); +#endif + lba = ((long)cyl * (long)disk[drivenum].heads + (long)head) * (long)disk[drivenum].sects + (long)sect - 1; + for (goodsects = 0; goodsects < sectcount; goodsects++) { + memdest = (uint32_t)dstseg * 16 + (uint32_t)dstoff; + for (dummy = 0; dummy < 512; dummy++) { + sectorbuffer[dummy] = read86(memdest++); + } + //card.erase(lba, lba); + putsect(lba, sectorbuffer); + dstoff += 512; + lba++; + } + cf = 0; regs.byteregs[regah] = 0; regs.byteregs[regal] = sectcount; +#ifdef MEGA + SPI.setClockDivider(SPI_CLOCK_SPIRAM); +#endif +} + +void diskhandler() { + static uint8_t lastdiskah[4], lastdiskcf[4]; + uint8_t drivenum; + drivenum = regs.byteregs[regdl]; + if (drivenum & 0x80) drivenum -= 126; + switch (regs.byteregs[regah]) { + case 0: //reset disk system + regs.byteregs[regah] = 0; cf = 0; //useless function in an emulator. say success and return. + break; + case 1: //return last status + regs.byteregs[regah] = lastdiskah[drivenum]; + cf = lastdiskcf[drivenum]; + return; + case 2: //read sector(s) into memory + if (disk[drivenum].inserted) { + readdisk(drivenum, segregs[reges], getreg16(regbx), (uint16_t)regs.byteregs[regch] + ((uint16_t)regs.byteregs[regcl] / 64) * 256, regs.byteregs[regcl] & 63, regs.byteregs[regdh], regs.byteregs[regal]); + cf = 0; regs.byteregs[regah] = 0; + } else { + cf = 1; + regs.byteregs[regah] = 1; + } + break; + case 3: //write sector(s) from memory + if (disk[drivenum].inserted) { + writedisk(drivenum, segregs[reges], getreg16(regbx), regs.byteregs[regch] + (regs.byteregs[regcl] / 64) * 256, regs.byteregs[regcl] & 63, regs.byteregs[regdh], regs.byteregs[regal]); + cf = 0; regs.byteregs[regah] = 0; + } else { + cf = 1; + regs.byteregs[regah] = 1; + } + break; + case 4: + case 5: //format track + cf = 0; regs.byteregs[regah] = 0; + break; + case 8: //get drive parameters + if (disk[drivenum].inserted) { + cf = 0; regs.byteregs[regah] = 0; + regs.byteregs[regch] = disk[drivenum].cyls - 1; + regs.byteregs[regcl] = disk[drivenum].sects & 63; + regs.byteregs[regcl] = regs.byteregs[regcl] + (disk[drivenum].cyls / 256) * 64; + regs.byteregs[regdh] = disk[drivenum].heads - 1; + //segregs[reges] = 0; regs.wordregs[regdi] = 0x7C0B; //floppy parameter table + if (drivenum < 2) { + regs.byteregs[regbl] = 4; //else regs.byteregs[regbl] = 0; + regs.byteregs[regdl] = 2; + } else regs.byteregs[regdl] = hdcount; + } else { + cf = 1; regs.byteregs[regah] = 0xAA; + } + break; + default: + cf = 1; + } + lastdiskah[drivenum] = regs.byteregs[regah]; + lastdiskcf[drivenum] = cf; + if (regs.byteregs[regdl] & 0x80) write86(0x474, regs.byteregs[regah]); +} + +void initDisk(char * filename) { + int len=emu_FileSize(filename); + file = emu_FileOpen(filename); + if (len) { + bootdrive = 0x80; + insertdisk(0x80); + hdcount = 1; + } + else { + bootdrive = 0xFF; + emu_FileClose(); + file = NULL; + } +} + diff --git a/MCUME_teensy/teensy8086/emu.h b/MCUME_teensy/teensy8086/emu.h new file mode 100644 index 0000000..b27d563 --- /dev/null +++ b/MCUME_teensy/teensy8086/emu.h @@ -0,0 +1,155 @@ +//Uncomment MEGA define if using a Mega 2560, otherwise leave undefined if using a Teensy 3.6 +//#define MEGA + + +// #define RAM_SIZE 0xF8000 // 512k //655360UL +// #define NATIVE_RAM (0X28000) // 128k+32768 //231424UL + #define RAM_SIZE 0x78000 // 512k //655360UL + #define NATIVE_RAM (0X28000) // 128k+32768 //231424UL + #define NATIVE_START 0UL + + + + #define ROM_READ(a,b) a[b] + + +//#define INCLUDE_ROM_BASIC + + +//#define BOOT_FDD +#define BOOT_HDD +//#define BOOT_BASIC + +//#define FDD_180K +//#define FDD_320K +//#define FDD_360K +//#define FDD_720K +//#define FDD_122M +//#define FDD_144M + + +#define BAUD_RATE 1000000 + +//#define USE_NETWORKING +//#define USE_PARALLEL + +//#define PROFILING + +// END ARDUINO86 USER CONFIGURABLE OPTIONS + +#define regax 0 +#define regcx 1 +#define regdx 2 +#define regbx 3 +#define regsp 4 +#define regbp 5 +#define regsi 6 +#define regdi 7 +#define reges 0 +#define regcs 1 +#define regss 2 +#define regds 3 + +#define regal 0 +#define regah 1 +#define regcl 2 +#define regch 3 +#define regdl 4 +#define regdh 5 +#define regbl 6 +#define regbh 7 + +#define StepIP(x) ip+=x +#define getmem8(x,y) read86(segbase(x)+(uint32_t)y) +//#define getmem16(x,y) (read86(segbase(x)+y) | ((uint16_t)read86(segbase(x)+y+1)<<8)) +#define getmem16(x,y) readw86(segbase(x)+(uint32_t)y) +#define putmem8(x,y,z) write86(segbase(x)+(uint32_t)y, z) +//#define putmem16(x,y,z) write86(segbase(x)+y, ((z)&0xFF)); write86(segbase(x)+y+1, (((z)>>8)&0xFF)) +#define putmem16(x,y,z) writew86(segbase(x)+(uint32_t)y, z) +#define signext(value) ((((uint16_t)value&0x80)*0x1FE)|(uint16_t)value) +#define signext32(value) ((((uint32_t)value&0x8000)*0x1FFFE)|(uint32_t)value) +#define getreg16(regid) regs.wordregs[regid] +#define getreg8(regid) regs.byteregs[byteregtable[regid]] +#define putreg16(regid, writeval) regs.wordregs[regid] = writeval +#define putreg8(regid, writeval) regs.byteregs[byteregtable[regid]] = writeval +#define getsegreg(regid) segregs[regid] +#define putsegreg(regid, writeval) segregs[regid] = writeval +#define segbase(x) ((uint32_t)x<<4) + +#define makeflagsword() (2 | (uint16_t)cf | ((uint16_t)pf << 2) | ((uint16_t)af << 4) | ((uint16_t)zf << 6) \ + | ((uint16_t)sf << 7) | ((uint16_t)tf << 8) | ((uint16_t)ifl << 9) | ((uint16_t)df << 10) | ((uint16_t)of << 11)) + +#define decodeflagsword(x) {\ + temp16 = x;\ + cf = temp16 & 1;\ + pf = (temp16 >> 2) & 1;\ + af = (temp16 >> 4) & 1;\ + zf = (temp16 >> 6) & 1;\ + sf = (temp16 >> 7) & 1;\ + tf = (temp16 >> 8) & 1;\ + ifl = (temp16 >> 9) & 1;\ + df = (temp16 >> 10) & 1;\ + of = (temp16 >> 11) & 1;\ +} + + + +//#define RAM_write(a,v) { +//} + +//#define RAM_read(a,v) { +//} + + +void setup_memory(); +void setup_timer(); +uint8_t insertdisk(uint8_t drivenum); +void reset86(); +void exec86(uint32_t execloops); +uint8_t read86(uint32_t addr32); +void write86(uint32_t addr32, uint8_t value); +void doirq(uint8_t irqnum); +void incsends(); +void init_display(); +void write_video(uint16_t addr); +void clear_display(); +void palettereset(); +void display_CSIP(); +void ps2poll(); +void setup_ps2(uint8_t data_pin, uint8_t irq_pin); +void video_init(); +uint8_t VRAM_read(uint32_t addr32); +void VRAM_write(uint32_t addr32, uint8_t value); +void setup_ps2(uint8_t data_pin, uint8_t irq_pin); +void ps2poll(); +void out8253 (uint16_t portnum, uint8_t value); +uint8_t in8253 (uint16_t portnum); +void init8259(); +void out8259(uint16_t portnum, uint8_t value); +uint8_t in8259(uint16_t portnum); + +extern uint8_t port3da; + +void initDisk(char * filename); +void init8253(); +void net_init(); +void net_loop(); +void net_handler(); +uint8_t cached_read(uint32_t addr32); +void cached_write(uint32_t addr32, uint8_t value); +void cache_init(); + +uint8_t net_read_ram(uint32_t addr32); +void diskhandler(); + +//extern uint8_t SPI_RAM_pins[8]; +extern uint8_t net_mac[6]; +extern uint8_t bufSerial[1600]; +void outByte(uint8_t cc); + +extern struct i8253_s i8253; +union _bytewordregs_{ + uint16_t wordregs[8]; + uint8_t byteregs[8]; +} ; + diff --git a/MCUME_teensy/teensy8086/emuapi.cpp b/MCUME_teensy/teensy8086/emuapi.cpp new file mode 100644 index 0000000..1c5dbae --- /dev/null +++ b/MCUME_teensy/teensy8086/emuapi.cpp @@ -0,0 +1,1047 @@ +#define KEYMAP_PRESENT 1 + +//extern "C" { + #include "emuapi.h" + #include "iopins.h" +//} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensy8086/emuapi.h b/MCUME_teensy/teensy8086/emuapi.h new file mode 100644 index 0000000..5a80a05 --- /dev/null +++ b/MCUME_teensy/teensy8086/emuapi.h @@ -0,0 +1,144 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +//#define INVX 1 +//#define INVY 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#else +#endif +//#define HAS_SND 1 +//#define CUSTOM_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " 8086 PC Emulator " +#define ROMSDIR "/pc" + +#define emu_Init(ROM) {apc_Init(); apc_Start(ROM);} +#define emu_Step(x) {apc_Step();} +#define emu_Input(x) {apc_Input(x);} + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 16 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[]= +{ TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + //TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_END}; + +const unsigned short keys[]={ + +59, 60, 61, 62, 63, 64, 65, 66, 67, 68, +109,110,111,112,106,107,108,17,18,19, +20,21,22,23,24,25,26,27,28,29, +30,31,32,33,34,35,36,37,38,57 }; + + + + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401 }; + //0X0580,0X0540,0X0520,0X0510,0X0508,0X0504,0X0502,0X0501,0X0680,0X0640 }; +#endif + +#endif + + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensy8086/font.h b/MCUME_teensy/teensy8086/font.h new file mode 100644 index 0000000..bfb72b3 --- /dev/null +++ b/MCUME_teensy/teensy8086/font.h @@ -0,0 +1,264 @@ +#include +#ifdef MEGA + const uint8_t font[2048] PROGMEM = { +#else + PROGMEM const uint8_t font[2048] = { +#endif + 0,0,0,0,0,0,0, + 0,126,129,165,129,189,153,129, + 126,126,255,219,255,195,231,255, + 126,54,127,127,127,62,28,8, + 0,8,28,62,127,62,28,8, + 0,28,62,28,127,127,62,28, + 62,8,8,28,62,127,62,28, + 62,0,0,0,0,0,0,0, + 0,255,255,231,195,195,231,255, + 255,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,254,198,254,198,198,230,103, + 3,153,90,60,231,231,60,90, + 153,1,7,31,127,31,7,1, + 0,64,112,124,127,124,112,64, + 0,24,60,126,24,24,126,60, + 24,102,102,102,102,102,0,102, + 0,254,219,219,222,216,216,216, + 0,124,198,28,54,54,28,51, + 30,0,0,0,0,126,126,126, + 0,24,60,126,24,126,60,24, + 255,24,60,126,24,24,24,24, + 0,24,24,24,24,126,60,24, + 0,0,24,48,127,48,24,0, + 0,0,12,6,127,6,12,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,12,30,30,12,12,0,12, + 0,54,54,54,0,0,0,0, + 0,54,54,127,54,127,54,54, + 0,12,62,3,30,48,31,12, + 0,0,99,51,24,12,102,99, + 0,28,54,28,110,59,51,110, + 0,6,6,3,0,0,0,0, + 0,24,12,6,6,6,12,24, + 0,6,12,24,24,24,12,6, + 0,0,102,60,255,60,102,0, + 0,0,12,12,63,12,12,0, + 0,0,0,0,0,0,12,12, + 6,0,0,0,63,0,0,0, + 0,0,0,0,0,0,12,12, + 0,96,48,24,12,6,3,1, + 0,62,99,115,123,111,103,62, + 0,12,14,12,12,12,12,63, + 0,30,51,48,28,6,51,63, + 0,30,51,48,28,48,51,30, + 0,56,60,54,51,127,48,120, + 0,63,3,31,48,48,51,30, + 0,28,6,3,31,51,51,30, + 0,63,51,48,24,12,12,12, + 0,30,51,51,30,51,51,30, + 0,30,51,51,62,48,24,14, + 0,0,12,12,0,0,12,12, + 0,0,12,12,0,0,12,12, + 6,24,12,6,3,6,12,24, + 0,0,0,63,0,0,63,0, + 0,6,12,24,48,24,12,6, + 0,30,51,48,24,12,0,12, + 0,62,99,123,123,123,3,30, + 0,12,30,51,51,63,51,51, + 0,63,102,102,62,102,102,63, + 0,60,102,3,3,3,102,60, + 0,31,54,102,102,102,54,31, + 0,127,70,22,30,22,70,127, + 0,127,70,22,30,22,6,15, + 0,60,102,3,3,115,102,124, + 0,51,51,51,63,51,51,51, + 0,30,12,12,12,12,12,30, + 0,120,48,48,48,51,51,30, + 0,103,102,54,30,54,102,103, + 0,15,6,6,6,70,102,127, + 0,99,119,127,127,107,99,99, + 0,99,103,111,123,115,99,99, + 0,28,54,99,99,99,54,28, + 0,63,102,102,62,6,6,15, + 0,30,51,51,51,59,30,56, + 0,63,102,102,62,54,102,103, + 0,30,51,7,14,56,51,30, + 0,63,45,12,12,12,12,30, + 0,51,51,51,51,51,51,63, + 0,51,51,51,51,51,30,12, + 0,99,99,99,107,127,119,99, + 0,99,99,54,28,28,54,99, + 0,51,51,51,30,12,12,30, + 0,127,99,49,24,76,102,127, + 0,30,6,6,6,6,6,30, + 0,3,6,12,24,48,96,64, + 0,30,24,24,24,24,24,30, + 0,8,28,54,99,0,0,0, + 0,0,0,0,0,0,0,0, + 255,12,12,24,0,0,0,0, + 0,0,0,30,48,62,51,110, + 0,7,6,6,62,102,102,59, + 0,0,0,30,51,3,51,30, + 0,56,48,48,62,51,51,110, + 0,0,0,30,51,63,3,30, + 0,28,54,6,15,6,6,15, + 0,0,0,110,51,51,62,48, + 31,7,6,54,110,102,102,103, + 0,12,0,14,12,12,12,30, + 0,48,0,48,48,48,51,51, + 30,7,6,102,54,30,54,103, + 0,14,12,12,12,12,12,30, + 0,0,0,51,127,127,107,99, + 0,0,0,31,51,51,51,51, + 0,0,0,30,51,51,51,30, + 0,0,0,59,102,102,62,6, + 15,0,0,110,51,51,62,48, + 120,0,0,59,110,102,6,15, + 0,0,0,62,3,30,48,31, + 0,8,12,62,12,12,44,24, + 0,0,0,51,51,51,51,110, + 0,0,0,51,51,51,30,12, + 0,0,0,99,107,127,127,54, + 0,0,0,99,54,28,54,99, + 0,0,0,51,51,51,62,48, + 31,0,0,63,25,12,38,63, + 0,56,12,12,7,12,12,56, + 0,24,24,24,0,24,24,24, + 0,7,12,12,56,12,12,7, + 0,110,59,0,0,0,0,0, + 0,0,8,28,54,99,99,127, + 0,30,51,3,51,30,24,48, + 30,0,51,0,51,51,51,126, + 0,56,0,30,51,63,3,30, + 0,126,195,60,96,124,102,252, + 0,51,0,30,48,62,51,126, + 0,7,0,30,48,62,51,126, + 0,12,12,30,48,62,51,126, + 0,0,0,30,3,3,30,48, + 28,126,195,60,102,126,6,60, + 0,51,0,30,51,63,3,30, + 0,7,0,30,51,63,3,30, + 0,51,0,14,12,12,12,30, + 0,62,99,28,24,24,24,60, + 0,7,0,14,12,12,12,30, + 0,99,28,54,99,127,99,99, + 0,12,12,0,30,51,63,51, + 0,56,0,63,6,30,6,63, + 0,0,0,254,48,254,51,254, + 0,124,54,51,127,51,51,115, + 0,30,51,0,30,51,51,30, + 0,0,51,0,30,51,51,30, + 0,0,7,0,30,51,51,30, + 0,30,51,0,51,51,51,126, + 0,0,7,0,51,51,51,126, + 0,0,51,0,51,51,62,48, + 31,195,24,60,102,102,60,24, + 0,51,0,51,51,51,51,30, + 0,24,24,126,3,3,126,24, + 24,28,54,38,15,6,103,63, + 0,51,51,30,63,12,63,12, + 12,31,51,51,95,99,243,99, + 227,112,216,24,60,24,24,27, + 14,56,0,30,48,62,51,126, + 0,28,0,14,12,12,12,30, + 0,0,56,0,30,51,51,30, + 0,0,56,0,51,51,51,126, + 0,0,31,0,31,51,51,51, + 0,63,0,51,55,63,59,51, + 0,60,54,54,124,0,126,0, + 0,28,54,54,28,0,62,0, + 0,12,0,12,6,3,51,30, + 0,0,0,0,63,3,3,0, + 0,0,0,0,63,48,48,0, + 0,195,99,51,123,204,102,51, + 240,195,99,51,219,236,246,243, + 192,24,24,0,24,24,24,24, + 0,0,204,102,51,102,204,0, + 0,0,51,102,204,102,51,0, + 0,68,17,68,17,68,17,68, + 17,170,85,170,85,170,85,170, + 85,219,238,219,119,219,238,219, + 119,24,24,24,24,24,24,24, + 24,24,24,24,24,31,24,24, + 24,24,24,31,24,31,24,24, + 24,108,108,108,108,111,108,108, + 108,0,0,0,0,127,108,108, + 108,0,0,31,24,31,24,24, + 24,108,108,111,96,111,108,108, + 108,108,108,108,108,108,108,108, + 108,0,0,127,96,111,108,108, + 108,108,108,111,96,127,0,0, + 0,108,108,108,108,127,0,0, + 0,24,24,31,24,31,0,0, + 0,0,0,0,0,31,24,24, + 24,24,24,24,24,248,0,0, + 0,24,24,24,24,255,0,0, + 0,0,0,0,0,255,24,24, + 24,24,24,24,24,248,24,24, + 24,0,0,0,0,255,0,0, + 0,24,24,24,24,255,24,24, + 24,24,24,248,24,248,24,24, + 24,108,108,108,108,236,108,108, + 108,108,108,236,12,252,0,0, + 0,0,0,252,12,236,108,108, + 108,108,108,239,0,255,0,0, + 0,0,0,255,0,239,108,108, + 108,108,108,236,12,236,108,108, + 108,0,0,255,0,255,0,0, + 0,108,108,239,0,239,108,108, + 108,24,24,255,0,255,0,0, + 0,108,108,108,108,255,0,0, + 0,0,0,255,0,255,24,24, + 24,0,0,0,0,255,108,108, + 108,108,108,108,108,252,0,0, + 0,24,24,248,24,248,0,0, + 0,0,0,248,24,248,24,24, + 24,0,0,0,0,252,108,108, + 108,108,108,108,108,255,108,108, + 108,24,24,255,24,255,24,24, + 24,24,24,24,24,31,0,0, + 0,0,0,0,0,248,24,24, + 24,255,255,255,255,255,255,255, + 255,0,0,0,0,255,255,255, + 255,15,15,15,15,15,15,15, + 15,240,240,240,240,240,240,240, + 240,255,255,255,255,0,0,0, + 0,0,0,110,59,19,59,110, + 0,0,30,51,31,51,31,3, + 3,0,63,51,3,3,3,3, + 0,0,127,54,54,54,54,54, + 0,63,51,6,12,6,51,63, + 0,0,0,126,27,27,27,14, + 0,0,102,102,102,102,62,6, + 3,0,110,59,24,24,24,24, + 0,63,12,30,51,51,30,12, + 63,28,54,99,127,99,54,28, + 0,28,54,99,99,54,54,119, + 0,56,12,24,62,51,51,30, + 0,0,0,126,219,219,126,0, + 0,96,48,126,219,219,126,6, + 3,28,6,3,31,3,6,28, + 0,30,51,51,51,51,51,51, + 0,0,63,0,63,0,63,0, + 0,12,12,63,12,12,0,63, + 0,6,12,24,12,6,0,63, + 0,24,12,6,12,24,0,63, + 0,112,216,216,24,24,24,24, + 24,24,24,24,24,24,27,27, + 14,12,12,0,63,0,12,12, + 0,0,110,59,0,110,59,0, + 0,28,54,54,28,0,0,0, + 0,0,0,0,24,24,0,0, + 0,0,0,0,0,24,0,0, + 0,240,48,48,48,55,54,60, + 56,30,54,54,54,54,0,0, + 0,14,24,12,6,30,0,0, + 0,0,0,60,60,60,60,0, + 0,0,0,0,0,0,0,0,0 +}; + diff --git a/MCUME_teensy/teensy8086/font8x8.h b/MCUME_teensy/teensy8086/font8x8.h new file mode 100644 index 0000000..2b2ab25 --- /dev/null +++ b/MCUME_teensy/teensy8086/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +PROGMEM const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensy8086/i8253.cpp b/MCUME_teensy/teensy8086/i8253.cpp new file mode 100644 index 0000000..3bb14f1 --- /dev/null +++ b/MCUME_teensy/teensy8086/i8253.cpp @@ -0,0 +1,109 @@ +#include +#include +#include + +#ifdef MEGA + #include +#else +IntervalTimer myTimer; +#endif + +#define PIT_MODE_LATCHCOUNT 0 +#define PIT_MODE_LOBYTE 1 +#define PIT_MODE_HIBYTE 2 +#define PIT_MODE_TOGGLE 3 + + +struct i8253_s { + uint16_t chandata[3]; + uint8_t accessmode[3]; + uint8_t bytetoggle[3]; + uint32_t effectivedata[3]; + float chanfreq[3]; + uint8_t active[3]; + uint16_t counter[3]; +} i8253; + +volatile uint8_t timerTick = 0; + +void timer_isr() { + timerTick = 1; +} + +void out8253 (uint16_t portnum, uint8_t value) { + uint8_t curbyte; + portnum &= 3; + switch (portnum) { + case 0: + case 1: + case 2: //channel data + if ( (i8253.accessmode[portnum] == PIT_MODE_LOBYTE) || ( (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) && (i8253.bytetoggle[portnum] == 0) ) ) curbyte = 0; + else if ( (i8253.accessmode[portnum] == PIT_MODE_HIBYTE) || ( (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) && (i8253.bytetoggle[portnum] == 1) ) ) curbyte = 1; + if (curbyte == 0) { //low byte + i8253.chandata[portnum] = (i8253.chandata[portnum] & 0xFF00) | value; + } + else { //high byte + i8253.chandata[portnum] = (i8253.chandata[portnum] & 0x00FF) | ( (uint16_t) value << 8); + } + if (i8253.chandata[portnum] == 0) i8253.effectivedata[portnum] = 65536; + else i8253.effectivedata[portnum] = i8253.chandata[portnum]; + i8253.active[portnum] = 1; + if (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) i8253.bytetoggle[portnum] = (~i8253.bytetoggle[portnum]) & 1; + //i8253.chanfreq[portnum] = (float) ( (uint32_t) ( ( (float) 1193182.0 / (float) i8253.effectivedata[portnum]) * (float) 1000.0) ); + //Serial.print("period "); Serial.println((uint32_t) ((float)1000000.0 / ( ( (float) 1193182.0 / (float) i8253.effectivedata[portnum])))); + if (portnum == 0) { + uint32_t period; + period = (uint32_t) ((float)1000000.0 / ( ( (float) 1193182.0 / (float) i8253.effectivedata[portnum]))); +#ifdef MEGA + if (period < 4000) period = 4000; //limit to 250 Hz, or the emulator just can't keep up on a Mega + //Serial.println((float)1000000.0 / (float)period); + Timer1.attachInterrupt(timer_isr, period); +#else + myTimer.begin(timer_isr, period); +#endif + } + break; + case 3: //mode/command + i8253.accessmode[value>>6] = (value >> 4) & 3; + if (i8253.accessmode[value>>6] == PIT_MODE_TOGGLE) i8253.bytetoggle[value>>6] = 0; + break; + } +} + +uint8_t in8253 (uint16_t portnum) { + uint8_t curbyte; + portnum &= 3; + switch (portnum) { + case 0: + case 1: + case 2: //channel data + if ( (i8253.accessmode[portnum] == 0) || (i8253.accessmode[portnum] == PIT_MODE_LOBYTE) || ( (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) && (i8253.bytetoggle[portnum] == 0) ) ) curbyte = 0; + else if ( (i8253.accessmode[portnum] == PIT_MODE_HIBYTE) || ( (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) && (i8253.bytetoggle[portnum] == 1) ) ) curbyte = 1; + if ( (i8253.accessmode[portnum] == 0) || (i8253.accessmode[portnum] == PIT_MODE_LOBYTE) || ( (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) && (i8253.bytetoggle[portnum] == 0) ) ) curbyte = 0; + else if ( (i8253.accessmode[portnum] == PIT_MODE_HIBYTE) || ( (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) && (i8253.bytetoggle[portnum] == 1) ) ) curbyte = 1; + if ( (i8253.accessmode[portnum] == 0) || (i8253.accessmode[portnum] == PIT_MODE_TOGGLE) ) i8253.bytetoggle[portnum] = (~i8253.bytetoggle[portnum]) & 1; + if (curbyte == 0) { //low byte + if (i8253.counter[portnum] < 10) i8253.counter[portnum] = i8253.chandata[portnum]; + i8253.counter[portnum] -= 10; + return ( (uint8_t) i8253.counter[portnum]); + } + else { //high byte + return ( (uint8_t) (i8253.counter[portnum] >> 8) ); + } + break; + } + return (0); +} + +void init8253() { + memset (&i8253, 0, sizeof (i8253) ); +#ifdef MEGA + Timer1.initialize(54925); + Timer1.attachInterrupt(timer_isr, 54925); +#else + myTimer.begin(timer_isr, 54925); +#endif + //set_port_write_redirector (0x40, 0x43, &out8253); + //set_port_read_redirector (0x40, 0x43, &in8253); +} + diff --git a/MCUME_teensy/teensy8086/i8259.cpp b/MCUME_teensy/teensy8086/i8259.cpp new file mode 100755 index 0000000..f26f2cd --- /dev/null +++ b/MCUME_teensy/teensy8086/i8259.cpp @@ -0,0 +1,83 @@ +/* i8259.c - emulation code for the Intel 8259 controller. + Note: This is not a very complete i8259 interrupt controller + implementation, but for the purposes of a PC, it's all we need. */ + +#include +#include + +struct structpic { + uint8_t imr; //mask register + uint8_t irr; //request register + uint8_t isr; //service register + uint8_t icwstep; //used during initialization to keep track of which ICW we're at + uint8_t icw[5]; + uint8_t intoffset; //interrupt vector offset + uint8_t priority; //which IRQ has highest priority + uint8_t autoeoi; //automatic EOI mode + uint8_t readmode; //remember what to return on read register from OCW3 + uint8_t enabled; +} i8259; + + +void init8259() { + memset((void *)&i8259, 0, sizeof(i8259)); +} + +uint8_t in8259(uint16_t portnum) { + switch (portnum & 1) { + case 0: + if (i8259.readmode==0) return(i8259.irr); else return(i8259.isr); + case 1: //read mask register + return(i8259.imr); + } + return(0); //can't get here, but the compiler bitches +} + +extern uint32_t makeupticks; +void out8259(uint16_t portnum, uint8_t value) { + uint8_t i; + switch (portnum & 1) { + case 0: + if (value & 0x10) { //begin initialization sequence + i8259.icwstep = 1; + i8259.imr = 0; //clear interrupt mask register + i8259.icw[i8259.icwstep++] = value; + return; + } + if ((value & 0x98)==8) { //it's an OCW3 + if (value & 2) i8259.readmode = value & 2; + } + if (value & 0x20) { //EOI command + for (i=0; i<8; i++) + if ((i8259.isr >> i) & 1) { + i8259.isr ^= (1 << i); + if ((i==0) && (makeupticks>0)) { makeupticks = 0; i8259.irr |= 1; } + return; + } + } + break; + case 1: + if ((i8259.icwstep==3) && (i8259.icw[1] & 2)) i8259.icwstep = 4; //single mode, so don't read ICW3 + if (i8259.icwstep<5) { i8259.icw[i8259.icwstep++] = value; return; } + //if we get to this point, this is just a new IMR value + i8259.imr = value; + break; + } +} + +uint8_t nextintr() { + uint8_t i, tmpirr; + tmpirr = i8259.irr & (~i8259.imr); //XOR request register with inverted mask register + for (i=0; i<8; i++) + if ((tmpirr >> i) & 1) { + i8259.irr ^= (1 << i); + i8259.isr |= (1 << i); + return(i8259.icw[2] + i); + } + return(0); //can't get here, but the compiler bitches +} + +void doirq(uint8_t irqnum) { + i8259.irr |= (1 << irqnum); +} + diff --git a/MCUME_teensy/teensy8086/iopins.h b/MCUME_teensy/teensy8086/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensy8086/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensy8086/keyboard_osd.h b/MCUME_teensy/teensy8086/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensy8086/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensy8086/logo.h b/MCUME_teensy/teensy8086/logo.h new file mode 100644 index 0000000..692a06c --- /dev/null +++ b/MCUME_teensy/teensy8086/logo.h @@ -0,0 +1,241 @@ +PROGMEM const uint16_t logo[] = { +0x0140,0x00f0,0x9533,0x5b0b,0x3a07,0x39e7,0x31e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39a7,0x39a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x39c7,0x39c6,0x31a6,0x31a6,0x3186,0x3165,0x3165,0x3986,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3a07,0x39c7,0x31a6,0x3186,0x3185,0x3186,0x3986,0x4207,0x31c7,0x31c6,0x2986,0x2985,0x31a6,0x3186,0x39e7,0x39e7,0x31a6,0x2985,0x2986,0x3186,0x3186,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x2966,0x2985,0x39c6,0x39c7,0x31a6,0x2986,0x2965,0x2986,0x3186,0x39c7,0x39e7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x39e7,0x39e7,0x39c7,0x3165,0x2965,0x3186,0x3186,0x4207,0x4207,0x39c7,0x3186,0x2986,0x2985,0x3186,0x39e7,0x39e7,0x39e7,0x31a6,0x2986,0x3186,0x3185,0x3a07,0x4207,0x3a07,0x31c6,0x2965,0x3186,0x2986,0x39c7,0x4208,0x39e7,0x31a6,0x2965,0x2985,0x2985,0x39c7,0x39c7,0x39e7,0x31a6,0x3185,0x2965,0x2965,0x31c6,0x3a07,0x39e7,0x31c6,0x2985,0x2965,0x2965,0x39c6,0x4227,0x4248,0x39e7,0x2965,0x3186,0x3185,0x31a6,0x4228,0x4208,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x39e7,0x4207,0x39e7,0x3186,0x2986,0x2986,0x3186,0x4207,0x4208,0x39e7,0x31a6,0x3185,0x3185,0x3186,0x39e7,0x4227,0x3a07,0x31a6,0x2986,0x2985,0x29a6,0x31e7,0x3a07,0x3a07,0x31a6,0x2965,0x3186,0x3186,0x39c7,0x4228,0x4228,0x31a6,0x3185,0x3185,0x3185,0x39c6,0x39e7,0x39e7,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x39c6,0x39e7,0x31c6,0x3185,0x31a6,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x3185,0x3186,0x3186,0x39c6,0x39e7,0x2986,0x3186,0x2986,0x2985,0x3185,0x31a6,0x39e7,0x3185,0x3186,0x2986,0x2986,0x2985,0x39c6,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x3186,0x2985,0x2985,0x2985,0x3186,0x31a7,0x2945,0x3186,0x2985,0x3186,0x3185,0x3186,0x31c6,0x2965,0x2985,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x2985,0x2985,0x3186,0x3186,0x31a6,0x39e7,0x2965,0x3186,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x3185,0x2965,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x3166,0x3166,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x3206,0x9d53, +0x532b,0x00a0,0x2965,0x2945,0x2145,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2965,0x2965,0x2966,0x2965,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2125,0x2945,0x39c7,0x31a6,0x2144,0x2145,0x2144,0x2144,0x2965,0x39c6,0x39c6,0x2144,0x1944,0x2145,0x2124,0x3185,0x3a07,0x31c6,0x2144,0x2144,0x2144,0x2124,0x3165,0x4228,0x39e7,0x2164,0x2144,0x2145,0x2145,0x2965,0x39e7,0x3a07,0x2965,0x2124,0x2145,0x2125,0x2945,0x39e7,0x39e7,0x2986,0x2145,0x2945,0x2124,0x2944,0x31a6,0x39c7,0x2965,0x2124,0x2145,0x2145,0x2945,0x39e7,0x39e7,0x3185,0x2124,0x2125,0x2124,0x2144,0x39c6,0x39e7,0x31a6,0x2144,0x2144,0x2124,0x2945,0x39c6,0x39e7,0x31c6,0x2144,0x2145,0x2144,0x2144,0x39c6,0x39e7,0x39a6,0x2945,0x2945,0x2945,0x2144,0x39e6,0x4207,0x39e7,0x2165,0x2144,0x2145,0x2124,0x39c7,0x4a28,0x39e7,0x2965,0x2125,0x2144,0x2124,0x31a6,0x4227,0x3a06,0x2985,0x2124,0x2944,0x2124,0x31a6,0x4227,0x39e7,0x2985,0x2145,0x2145,0x2124,0x3185,0x5288,0x5288,0x31c6,0x2944,0x2945,0x2944,0x2965,0x4248,0x4228,0x39c6,0x2945,0x2945,0x2945,0x2945,0x31c6,0x4227,0x31c6,0x2945,0x2945,0x2945,0x2945,0x39e7,0x4207,0x31c6,0x2945,0x2945,0x2944,0x2944,0x39c6,0x3a07,0x31c6,0x2965,0x2945,0x2945,0x2144,0x39c6,0x4207,0x31a6,0x2945,0x2945,0x2945,0x2124,0x31a6,0x4228,0x39e6,0x2965,0x2964,0x2945,0x2124,0x31a5,0x4207,0x39c6,0x2965,0x2965,0x2145,0x2145,0x2985,0x4207,0x39c6,0x2945,0x2965,0x2965,0x2145,0x2965,0x3a07,0x39c6,0x2944,0x2965,0x2944,0x2144,0x2965,0x39e7,0x39c7,0x2124,0x2945,0x2144,0x2945,0x2944,0x31a6,0x39e7,0x2124,0x2124,0x2144,0x2145,0x2124,0x39c6,0x31a6,0x20e3,0x2945,0x2945,0x2144,0x2124,0x2965,0x31a6,0x2104,0x2144,0x2124,0x2144,0x2144,0x2986,0x31a6,0x18e3,0x2124,0x2124,0x2144,0x2124,0x3186,0x31a6,0x18e3,0x2144,0x2144,0x2144,0x2124,0x2985,0x39e7,0x1903,0x1904,0x2145,0x2145,0x2144,0x2985,0x39c6,0x18e3,0x2104,0x2945,0x2124,0x2124,0x2966,0x39c7,0x18e3,0x2103,0x2944,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2145,0x2125,0x2125,0x2925,0x2945,0x2945,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2985,0x0000,0x52ea, +0x2165,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2103,0x1904,0x1924,0x2104,0x2945,0x39c7,0x2985,0x1904,0x2124,0x2124,0x2104,0x2944,0x39a5,0x2964,0x1903,0x1924,0x2124,0x2104,0x3185,0x4227,0x39e6,0x2124,0x2124,0x2104,0x2104,0x3185,0x4227,0x31e6,0x2124,0x2124,0x2124,0x2103,0x2965,0x3a07,0x39e6,0x2124,0x2124,0x2124,0x2104,0x2944,0x4207,0x39c6,0x2124,0x2104,0x2104,0x2104,0x2944,0x39e7,0x39c7,0x2945,0x2104,0x2104,0x2104,0x2944,0x4207,0x39e7,0x2965,0x1904,0x2104,0x2104,0x2124,0x41e7,0x4207,0x2965,0x1904,0x2124,0x2104,0x2125,0x41e7,0x4207,0x3185,0x2124,0x2124,0x2124,0x2104,0x39e7,0x4228,0x31a6,0x2103,0x2124,0x2944,0x4aa8,0x2985,0x39c6,0x39e7,0x31a6,0x31a6,0x31a5,0x31a6,0x4228,0x4a48,0x4228,0x39c7,0x31a6,0x31a6,0x3186,0x39e7,0x4228,0x39e7,0x3185,0x2144,0x2124,0x18e3,0x2944,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2104,0x2945,0x39c6,0x39c6,0x31a6,0x2965,0x2985,0x2965,0x3185,0x4207,0x39e7,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x4207,0x4228,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x4207,0x4228,0x39c7,0x31a6,0x3185,0x3185,0x2965,0x31a6,0x39e7,0x39c7,0x3186,0x31a6,0x3186,0x2965,0x39e7,0x4208,0x39c7,0x3186,0x3186,0x3186,0x2965,0x39c6,0x4a48,0x4268,0x4247,0x4227,0x4247,0x4248,0x4aa9,0x52ea,0x52e9,0x52e9,0x52ea,0x4ac9,0x52c8,0x5b2a,0x636b,0x634b,0x5b2a,0x5b0a,0x636c,0x6309,0x3183,0x4228,0x39e7,0x2945,0x2124,0x2124,0x2124,0x2124,0x39e7,0x4207,0x2944,0x2104,0x2124,0x2124,0x2104,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2124,0x1904,0x31a6,0x39e7,0x2924,0x2104,0x2104,0x2124,0x1924,0x2965,0x39e7,0x2124,0x18e3,0x2104,0x2124,0x1903,0x2986,0x39e7,0x2104,0x18e3,0x2104,0x2104,0x1904,0x2985,0x39c6,0x2103,0x2103,0x2124,0x2124,0x18e3,0x2965,0x39e7,0x2124,0x18e3,0x2124,0x2104,0x1903,0x2944,0x39e7,0x2104,0x18c3,0x2124,0x2124,0x2104,0x2965,0x3a07,0x2124,0x10a2,0x2104,0x2104,0x2104,0x2945,0x39c7,0x18e3,0x18c2,0x2104,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1924,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2123,0x2124,0x2124,0x2124,0x2144, +0x1924,0x1903,0x1903,0x1903,0x18e3,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1903,0x1904,0x1903,0x2104,0x2104,0x1903,0x2104,0x1903,0x1903,0x1903,0x2104,0x1903,0x18e3,0x1903,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x20e3,0x3185,0x39e6,0x2144,0x18e3,0x2104,0x2104,0x20e3,0x3186,0x39c6,0x2944,0x18e3,0x1903,0x2103,0x20e3,0x3185,0x4207,0x2985,0x18e3,0x1904,0x18e4,0x20e3,0x3185,0x4227,0x2985,0x1903,0x1904,0x18e4,0x18e3,0x3185,0x4207,0x31a5,0x1903,0x1903,0x1904,0x18e3,0x2965,0x4207,0x31c6,0x1904,0x18e4,0x18e4,0x18e3,0x2944,0x4207,0x31c6,0x1904,0x1904,0x18e3,0x18c3,0x2945,0x4228,0x39c6,0x2124,0x10e3,0x18e3,0x18e3,0x2924,0x41e7,0x39c7,0x2124,0x18e3,0x1904,0x18e4,0x2124,0x4207,0x4206,0x2965,0x18e3,0x18e4,0x2104,0x2104,0x39e7,0x4207,0x2965,0x18e3,0x1904,0x2124,0x4246,0x1903,0x2104,0x2965,0x31c6,0x39e7,0x39e6,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x41e7,0x4207,0x4207,0x4207,0x39e7,0x39c6,0x3186,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c6,0x31a6,0x31a6,0x39c7,0x39c6,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39c6,0x31a5,0x31a6,0x39e6,0x39e7,0x39e7,0x4208,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x4228,0x4a48,0x4a48,0x4a48,0x4a68,0x4a69,0x4a68,0x4a89,0x5289,0x52aa,0x52a9,0x4a88,0x4a88,0x4a68,0x4a68,0x52a8,0x4a88,0x4a68,0x5b2b,0x8c2c,0x41c2,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2104,0x1903,0x39e7,0x4207,0x2124,0x18e3,0x1904,0x1904,0x18e3,0x39c6,0x4207,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x3186,0x4207,0x2924,0x18e3,0x1904,0x1903,0x18e3,0x2985,0x39e7,0x2124,0x18c3,0x1904,0x1903,0x10e3,0x2945,0x39e7,0x2944,0x10a2,0x1904,0x18e3,0x18e3,0x2944,0x39e7,0x2944,0x10a2,0x18e4,0x18e3,0x18e3,0x2124,0x41e7,0x2965,0x1082,0x2103,0x2124,0x2124,0x2123,0x31c6,0x2144,0x1082,0x2104,0x1904,0x18e3,0x2104,0x39e7,0x2965,0x0862,0x18e3,0x1903,0x18e3,0x2104,0x39c6,0x2924,0x0861,0x1903,0x2124,0x2124,0x2104,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x2104,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2104,0x1904,0x2124, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x39c6,0x39c6,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39e7,0x2124,0x10e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39c6,0x2124,0x18c3,0x18e3,0x18e4,0x18e3,0x39a6,0x3a07,0x2964,0x10c2,0x18e3,0x18e3,0x18e3,0x31a6,0x39e6,0x2965,0x18e3,0x10e3,0x18c3,0x18c3,0x3165,0x39e7,0x2985,0x18c3,0x10c3,0x18e3,0x18c2,0x2965,0x39c6,0x2965,0x10c3,0x10c3,0x18c3,0x18c3,0x2944,0x39e7,0x31a6,0x18e3,0x10c2,0x18c3,0x18c3,0x2104,0x39e6,0x39c6,0x1903,0x10c3,0x18e3,0x18c3,0x2104,0x39e6,0x39c6,0x2124,0x18c3,0x18e3,0x18e3,0x2104,0x39e7,0x39e7,0x2945,0x18e3,0x18e3,0x2103,0x4a67,0x18c2,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x39e7,0x4207,0x4208,0x4208,0x4208,0x4208,0x41e7,0x4207,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x31a6,0x2965,0x2945,0x2944,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x2124,0x2945,0x2965,0x3186,0x3186,0x2965,0x2965,0x2985,0x3165,0x3186,0x3186,0x31a7,0x39c7,0x39c6,0x39e7,0x4208,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x4207,0x4208,0x4207,0x41e7,0x39e7,0x39c6,0x3185,0x3185,0x31a6,0x39c6,0x39c7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c7,0x39e7,0x4207,0x39e7,0x39c7,0x41e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4207,0x4207,0x4208,0x4208,0x4208,0x4207,0x39e7,0x39c6,0x39c6,0x39c6,0x2985,0x2944,0x39c6,0x7bc9,0x41e2,0x39c7,0x39e7,0x2124,0x18e3,0x1904,0x1903,0x18e3,0x31a6,0x39e6,0x2124,0x18c3,0x18e3,0x1903,0x18c3,0x3185,0x41e7,0x2944,0x18c3,0x18e3,0x18e3,0x10c2,0x2965,0x3a07,0x2944,0x10a2,0x18e3,0x18e3,0x10c3,0x2945,0x39e7,0x2945,0x10c3,0x18e3,0x18c3,0x10a2,0x2123,0x39e6,0x2965,0x1082,0x18e3,0x18e3,0x18c3,0x2104,0x39e7,0x2985,0x1082,0x18c3,0x10c3,0x18e3,0x18e3,0x39c6,0x3185,0x1082,0x18c3,0x2104,0x2964,0x2103,0x31a6,0x2965,0x0861,0x2104,0x2124,0x2144,0x2104,0x39c7,0x3186,0x0861,0x18c3,0x18c3,0x10c3,0x10c2,0x31a6,0x31a6,0x0861,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x10c2,0x10c3,0x10c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0x3185,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x3186,0x31a6,0x10e3,0x10c2,0x10c3,0x10c2,0x2104,0x39c6,0x31a6,0x2103,0x10c3,0x18c3,0x18c3,0x18e3,0x39a6,0x39c6,0x2124,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x31a6,0x2124,0x10c2,0x10c3,0x10c2,0x18c3,0x3185,0x39e7,0x2965,0x10c2,0x10a2,0x10c2,0x10c2,0x2965,0x31c6,0x2144,0x10c2,0x10c2,0x10a2,0x10a2,0x2945,0x39c6,0x2965,0x10c3,0x10a2,0x10c3,0x10a2,0x2124,0x39c6,0x3185,0x18e3,0x10a2,0x18c3,0x10a2,0x2104,0x39c6,0x3185,0x18e3,0x18c3,0x18c3,0x18a2,0x20e3,0x39e7,0x31c6,0x2124,0x10a2,0x18e3,0x18e3,0x52c8,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x41e7,0x39e7,0x4207,0x4208,0x4207,0x3a07,0x39e7,0x31a6,0x2965,0x2124,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2124,0x2944,0x3186,0x31a6,0x31a6,0x39c7,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4a48,0x4a48,0x4227,0x4207,0x39e7,0x3185,0x31a5,0x39c6,0x39e7,0x4208,0x4208,0x4208,0x39e7,0x39c6,0x39e7,0x41e8,0x4208,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4a29,0x4229,0x4229,0x4229,0x4208,0x4207,0x4207,0x4207,0x4207,0x41e7,0x39e7,0x39c6,0x31a6,0x3185,0x2124,0x18e3,0x18e3,0x2944,0x6b27,0x41e2,0x39c6,0x39c7,0x2104,0x18c3,0x18e3,0x18e3,0x18c2,0x2985,0x39e6,0x2944,0x10c2,0x18e3,0x18e3,0x18c2,0x2965,0x39e7,0x2945,0x10a2,0x18e3,0x18c3,0x10a2,0x2964,0x39e7,0x2965,0x1082,0x18c3,0x10c3,0x10c2,0x2124,0x39c7,0x2965,0x10a2,0x10c2,0x10c2,0x1082,0x18e3,0x31c5,0x3185,0x1082,0x10c3,0x18c3,0x10c2,0x10c3,0x31a6,0x2965,0x0861,0x10a3,0x10c3,0x10c2,0x10c2,0x31a6,0x31a6,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x31a6,0x3186,0x0861,0x1903,0x2124,0x2965,0x2965,0x31a6,0x39a6,0x1081,0x10a2,0x10c3,0x10c2,0x10a2,0x2965,0x31a6,0x10a2,0x10a2,0x18e3,0x10e3,0x10c3,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x10c3, +0x10a3,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x3185,0x2944,0x10a2,0x10a2,0x10c2,0x10a2,0x2104,0x2986,0x2145,0x10c3,0x10a2,0x10a2,0x10a2,0x1904,0x31a6,0x3185,0x18e3,0x10a2,0x10a3,0x10a2,0x18e3,0x39a6,0x31a6,0x18e3,0x10a2,0x10a2,0x10c2,0x18e3,0x31a6,0x3185,0x18e3,0x10a2,0x10c2,0x10a2,0x10c2,0x31a5,0x39e6,0x2144,0x10a2,0x10c3,0x10c3,0x10a2,0x3185,0x31a6,0x2104,0x08a2,0x10a2,0x10a2,0x10a2,0x2965,0x39c6,0x2965,0x10a2,0x10a2,0x10a2,0x1082,0x2144,0x39c6,0x2965,0x18c2,0x10a2,0x10a3,0x10a2,0x2104,0x31a6,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x1903,0x39c6,0x2965,0x18e3,0x10c2,0x10c3,0x18e3,0x4a87,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1903,0x2924,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2104,0x2104,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2964,0x2985,0x3185,0x3185,0x3185,0x3185,0x31a5,0x3185,0x31a6,0x31a6,0x31a6,0x31a6,0x31a5,0x3185,0x2964,0x3185,0x31a5,0x31a6,0x39c6,0x39c7,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e6,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4207,0x4207,0x3a07,0x39e6,0x3185,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2944,0x7389,0x5263,0x31a6,0x31a6,0x2104,0x10a2,0x18e3,0x18e3,0x10a2,0x2985,0x31c6,0x2124,0x10c3,0x18e3,0x18e3,0x10a2,0x2165,0x31c6,0x2944,0x1082,0x10c2,0x18c3,0x10a2,0x2124,0x3a07,0x3185,0x1082,0x10c3,0x10c3,0x10a2,0x2103,0x31a6,0x2985,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x31a6,0x2965,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x2985,0x2103,0x0861,0x10a2,0x10c2,0x10a2,0x10a2,0x31a5,0x31a6,0x10a2,0x1082,0x10a3,0x10a3,0x10a2,0x3185,0x3185,0x1082,0x10a2,0x18e3,0x18e3,0x18e3,0x2965,0x39a6,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x2124,0x31a5,0x18c2,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3, +0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2985,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x3186,0x2945,0x10c2,0x1082,0x10a2,0x10a2,0x20e3,0x31a6,0x3186,0x18c3,0x1082,0x10a2,0x10a2,0x18e3,0x31a6,0x2985,0x18e3,0x0882,0x10a2,0x10a2,0x10c2,0x31a5,0x3185,0x1903,0x1082,0x10a2,0x10a3,0x10a2,0x2965,0x2985,0x1903,0x1082,0x1082,0x10a2,0x10a2,0x3185,0x39c6,0x2924,0x1082,0x1082,0x10a2,0x1082,0x2924,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2965,0x18c3,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x10c3,0x10c2,0x3a06,0x10a2,0x18c2,0x18c3,0x18c3,0x20e3,0x18c3,0x18a2,0x18a3,0x18c3,0x2124,0x18e3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x10a2,0x10c2,0x18c3,0x10a2,0x18c3,0x10c2,0x18c2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x2103,0x2103,0x2103,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2104,0x2103,0x2103,0x2123,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2103,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2124,0x7bcb,0x62c3,0x2965,0x31a6,0x2124,0x10a2,0x18e3,0x18c3,0x10a2,0x2965,0x31a6,0x2104,0x10c3,0x10e3,0x10e3,0x10a2,0x2145,0x31a6,0x2124,0x10a2,0x10c2,0x10c3,0x10c2,0x2103,0x39c6,0x2965,0x10a2,0x10c2,0x10c3,0x10a2,0x18e3,0x31a6,0x3185,0x1081,0x10a2,0x10a2,0x10a2,0x10c2,0x3185,0x2965,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x2965,0x2104,0x1062,0x10a2,0x10c2,0x10a2,0x1082,0x2985,0x39c6,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x2964,0x3185,0x10a2,0x0861,0x10a2,0x10a2,0x0861,0x2965,0x31a6,0x18c3,0x1081,0x10a2,0x10a2,0x0882,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2, +0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x18e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2124,0x2985,0x2124,0x10a2,0x10c2,0x10a2,0x10a2,0x2104,0x3165,0x2945,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x31a6,0x2945,0x18a2,0x1082,0x10a2,0x10a2,0x18e3,0x3185,0x2964,0x10c2,0x08a2,0x10a2,0x10a2,0x10e3,0x31a5,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x10c2,0x2144,0x2964,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x2965,0x3185,0x2104,0x1082,0x10a2,0x10a2,0x10a2,0x2944,0x3185,0x2124,0x08a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2944,0x10c2,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x18c3,0x10c2,0x31a5,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x18c3,0x10a2,0x18c3,0x18c3,0x2104,0x2103,0x10a2,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18e3,0x18c3,0x18c3,0x2124,0x18e3,0x20e3,0x18c3,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x20e3,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18c2,0x18c3,0x18c3,0x2104,0x6327,0x5ac3,0x3186,0x31c6,0x2103,0x10a2,0x18c3,0x18e3,0x18c3,0x2945,0x31a6,0x2104,0x10a2,0x18c3,0x18c3,0x10c2,0x2124,0x31a6,0x2944,0x10a2,0x10c3,0x18c3,0x10c2,0x2123,0x31c6,0x2965,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x31a6,0x3186,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x31a6,0x2985,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x2965,0x2965,0x10a2,0x10a2,0x10c2,0x10c2,0x1082,0x2965,0x39e7,0x1904,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x0882,0x2144,0x31a6,0x1903,0x0861,0x10a2,0x10a2,0x0882,0x1903,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2, +0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x08a2,0x0882,0x0882,0x1082,0x1082,0x0881,0x0881,0x1082,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2124,0x10e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2144,0x3185,0x1903,0x10a2,0x10a2,0x10a2,0x10a2,0x2103,0x3165,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x20e4,0x3186,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x39c6,0x2944,0x10a2,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x3185,0x1903,0x10a2,0x10a2,0x10c2,0x10a2,0x2945,0x2965,0x10c2,0x10a2,0x10c3,0x10a2,0x10a2,0x2965,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x2124,0x10a2,0x10a2,0x18c3,0x18a2,0x2924,0x3185,0x2124,0x18c3,0x10a2,0x18c3,0x10a2,0x1904,0x3186,0x2145,0x18c3,0x10a2,0x18c2,0x18c2,0x2123,0x18c2,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x2103,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18a2,0x18a2,0x18e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c2,0x10a2,0x18c2,0x2104,0x18e3,0x18e3,0x18c3,0x2124,0x18c3,0x2124,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x10a2,0x18c2,0x18e3,0x18a2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x62e6,0x5aa3,0x2965,0x2985,0x2123,0x10c2,0x18e3,0x18e4,0x18c3,0x2124,0x3186,0x2104,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x10a2,0x18c3,0x18e3,0x18c3,0x2104,0x31a6,0x2965,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x3186,0x2945,0x1082,0x10a2,0x10c3,0x10c3,0x10c2,0x31a6,0x3185,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e3,0x1081,0x10c2,0x10c3,0x10a2,0x2964,0x31a6,0x18e3,0x1082,0x10a3,0x10a3,0x10a3,0x2104,0x2965,0x18e3,0x0881,0x10a2,0x18c3,0x10a2,0x2103,0x3185,0x2103,0x0861,0x10a2,0x10a3,0x10a2,0x18e3,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e4,0x2104,0x18c3,0x10c2,0x10c3,0x10c2,0x10a2,0x2944,0x3185,0x2104,0x1082,0x10c2,0x10c3,0x10a2,0x2124,0x3185,0x2104,0x10a2,0x10c3,0x18c3,0x18a2,0x20e4,0x2945,0x1904,0x10a2,0x18c3,0x10c3,0x10c3,0x2124,0x39c6,0x2124,0x18c3,0x18c3,0x18c3,0x18a2,0x2103,0x3185,0x2985,0x2103,0x10a2,0x18c3,0x18e3,0x18e3,0x2944,0x2965,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x2965,0x2965,0x2103,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x2965,0x1903,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2124,0x18e3,0x18e3,0x1903,0x18c3,0x1903,0x2945,0x2144,0x18e3,0x18c3,0x18e3,0x18e3,0x18e2,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x18c2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x18e3,0x18c2,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x18c3,0x10a2,0x1082,0x18a2,0x18c3,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c3,0x2104,0x2104,0x10a2,0x18c2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x6328,0x6b24,0x2144,0x31a6,0x2144,0x18e3,0x2104,0x2104,0x1904,0x2124,0x2986,0x2124,0x10c2,0x2124,0x2124,0x2103,0x2124,0x3186,0x2944,0x10a2,0x1903,0x2104,0x18e3,0x2124,0x3186,0x2124,0x10a2,0x18e3,0x1903,0x18e3,0x18c3,0x2965,0x2966,0x10a2,0x10c3,0x18e3,0x10e3,0x10c2,0x2965,0x2965,0x10c2,0x10a2,0x1903,0x18e3,0x10c2,0x2124,0x2986,0x18e3,0x10a2,0x18e3,0x1904,0x10c2,0x2964,0x3185,0x18e3,0x1082,0x18c3,0x18e4,0x18c3,0x2104,0x2985,0x20e3,0x0882,0x18c3,0x18e3,0x10c3,0x2103,0x31a5,0x2124,0x0861,0x10a3,0x18c3,0x10a3,0x18e3,0x2965,0x18e3,0x0881,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x18e3,0x18c3,0x10c3,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c3,0x10c2,0x10c2,0x18e3, +0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x10c2,0x10c3,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2124,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x2124,0x2965,0x18e4,0x10a3,0x18e3,0x18e3,0x10a2,0x2124,0x3165,0x2104,0x10c3,0x18e3,0x18e3,0x18c3,0x2124,0x3186,0x1904,0x18c3,0x1904,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x1903,0x2125,0x2104,0x18e3,0x2104,0x3185,0x2965,0x18e3,0x18e3,0x2104,0x1904,0x18e3,0x2144,0x2965,0x18e3,0x18c3,0x2124,0x2104,0x18c3,0x3185,0x39e7,0x2924,0x2104,0x2104,0x2104,0x18e4,0x2145,0x2985,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2965,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2124,0x1903,0x1904,0x2104,0x18e3,0x18e1,0x18c3,0x18c3,0x10a2,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0861,0x10a2,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x18a2,0x18e3,0x2104,0x18e3,0x10a2,0x1082,0x0861,0x18c3,0x2104,0x2924,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2103,0x18a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x18e3,0x2104,0x18a2,0x18c3,0x0861,0x0861,0x18c3,0x18e3,0x20e3,0x20e3,0x20e4,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x10a2,0x10a2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x20e3,0x5ac7,0x7ba4,0x2144,0x29a6,0x2124,0x1903,0x2145,0x2145,0x2144,0x2124,0x2986,0x2124,0x10c3,0x2965,0x2965,0x1904,0x2124,0x2965,0x2124,0x18c3,0x2144,0x2144,0x2104,0x2104,0x2965,0x2965,0x18e3,0x1904,0x2124,0x2124,0x2104,0x2965,0x2965,0x18c3,0x18e3,0x2124,0x1904,0x18e3,0x2965,0x2965,0x10c2,0x10c3,0x2124,0x1904,0x18e3,0x2124,0x2985,0x18e3,0x18c3,0x1904,0x2104,0x18e3,0x2965,0x31a6,0x18e3,0x10a2,0x18e3,0x1904,0x18e3,0x2104,0x2985,0x2104,0x1082,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2124,0x0862,0x18e3,0x18e4,0x18c3,0x18e3,0x2965,0x2104,0x1082,0x18e3,0x2104,0x18e3,0x18c3,0x18e3,0x10c3,0x10a2,0x10a2,0x18e3,0x18e3,0x10c3,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x10c2,0x10c3,0x18e3,0x18c3,0x10c2,0x18c3,0x18e3,0x18c3,0x10c3,0x18e3, +0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18e3,0x18c3,0x10a2,0x10c3,0x18c3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x2124,0x2124,0x18e3,0x2945,0x2124,0x18e3,0x18e3,0x2945,0x2965,0x2104,0x2104,0x2124,0x2104,0x18c3,0x2944,0x31a6,0x2144,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2945,0x18e3,0x18e3,0x2124,0x2124,0x1904,0x2124,0x31a6,0x2145,0x2104,0x2945,0x2945,0x2945,0x2104,0x3186,0x2965,0x2144,0x2965,0x2965,0x2145,0x18e3,0x2944,0x2985,0x2104,0x2144,0x2965,0x2986,0x2104,0x3185,0x41e6,0x3185,0x2945,0x29a6,0x2165,0x2124,0x2145,0x3185,0x2124,0x2985,0x31a6,0x2986,0x2965,0x2124,0x3185,0x2124,0x2945,0x3186,0x2966,0x3186,0x2124,0x2965,0x2945,0x2104,0x2966,0x2965,0x2945,0x18e2,0x18a3,0x18a2,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x1082,0x0861,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18a2,0x18e3,0x2124,0x18e3,0x18c2,0x1081,0x1082,0x18e3,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x2124,0x18a3,0x18c3,0x0841,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2945,0x2944,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2945,0x2124,0x18c3,0x18c2,0x18e3,0x18e3,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4225,0x6b24,0x2965,0x3186,0x2104,0x2124,0x31c6,0x31a6,0x2965,0x2144,0x31a6,0x2145,0x1904,0x2965,0x2965,0x2986,0x2124,0x3186,0x2145,0x2104,0x3186,0x2965,0x2965,0x2124,0x3186,0x3186,0x1903,0x2144,0x2145,0x2945,0x2945,0x2965,0x2965,0x18e3,0x2145,0x2145,0x2945,0x2124,0x2945,0x3186,0x18c3,0x1904,0x2965,0x2945,0x2124,0x2965,0x31a6,0x18e3,0x2104,0x2124,0x2965,0x2104,0x2945,0x31c7,0x2104,0x18e3,0x2144,0x2145,0x2144,0x2124,0x3186,0x2104,0x10a2,0x2124,0x2965,0x2124,0x2124,0x31a6,0x2145,0x10a3,0x2125,0x2125,0x2124,0x2104,0x2965,0x2124,0x1082,0x2124,0x2124,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x1903,0x2104,0x2104,0x1904,0x18e3,0x1904,0x1903,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x18e3, +0x18e3,0x18e3,0x18c3,0x18e3,0x18e4,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x2124,0x1903,0x1903,0x2104,0x1904,0x2104,0x2104,0x2124,0x1904,0x2144,0x2144,0x1904,0x1903,0x2104,0x2104,0x2124,0x2125,0x1903,0x2965,0x2965,0x1904,0x2124,0x2945,0x2144,0x18e3,0x2965,0x2985,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x31a6,0x2145,0x1904,0x2165,0x2965,0x2104,0x2104,0x2945,0x2124,0x2124,0x2965,0x2965,0x2145,0x2124,0x2986,0x2145,0x2144,0x2965,0x2965,0x2986,0x2124,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2104,0x2124,0x2965,0x2124,0x2965,0x31a6,0x31c6,0x2124,0x3185,0x39a6,0x2965,0x31a6,0x29a6,0x29a6,0x2165,0x2965,0x3186,0x2945,0x3186,0x39c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2966,0x39c7,0x31a7,0x2966,0x2104,0x3186,0x2965,0x2945,0x31a6,0x2986,0x39e7,0x18e2,0x18c3,0x18a2,0x18a3,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x18e3,0x2104,0x20e4,0x18e4,0x2104,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x10a2,0x18c2,0x10a2,0x18c3,0x2124,0x18c3,0x10c2,0x1082,0x1082,0x18e3,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2944,0x18e3,0x2103,0x2103,0x18e3,0x10a2,0x18e3,0x18e3,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3186,0x3186,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4206,0x62e6,0x2945,0x3186,0x2104,0x2145,0x3186,0x2965,0x2945,0x2945,0x31c6,0x2945,0x2104,0x2985,0x2965,0x3186,0x2965,0x3186,0x2945,0x2124,0x2965,0x2985,0x2965,0x2144,0x31a6,0x31a6,0x2944,0x2944,0x2965,0x2965,0x2924,0x2965,0x3186,0x2104,0x2945,0x2145,0x2145,0x2124,0x2965,0x3186,0x2104,0x2124,0x2965,0x3186,0x2945,0x2124,0x31a6,0x2124,0x2124,0x2965,0x2965,0x2124,0x2945,0x39c7,0x2124,0x2104,0x2965,0x2945,0x2124,0x2124,0x3186,0x2124,0x18e3,0x2945,0x2945,0x2945,0x2124,0x31a6,0x2965,0x18c3,0x2145,0x2945,0x2965,0x2104,0x2965,0x2945,0x18e3,0x2144,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2144,0x2124,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x1924,0x1903,0x2145,0x2124,0x1904,0x1904,0x2124,0x1904,0x1904,0x1903,0x2104,0x18e3,0x2104,0x2124,0x1904,0x1903,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x2104,0x1903,0x1903,0x18e3,0x18e3,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2145,0x1904,0x1904,0x2104,0x2124,0x2145,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2965,0x29a6,0x2145,0x2124,0x2965,0x2124,0x2165,0x2985,0x2185,0x2124,0x2124,0x2945,0x2124,0x2944,0x2985,0x2985,0x2165,0x2124,0x2965,0x2145,0x2144,0x2965,0x2965,0x2965,0x2125,0x2945,0x2965,0x2965,0x2986,0x2986,0x3186,0x2945,0x2124,0x2965,0x2124,0x2965,0x2965,0x2985,0x2124,0x2124,0x2945,0x2144,0x2986,0x2986,0x2986,0x2145,0x2124,0x2965,0x2124,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2985,0x2144,0x2965,0x31a6,0x2986,0x2966,0x2144,0x2145,0x2945,0x2986,0x31a6,0x2985,0x3186,0x18c2,0x18a2,0x18a3,0x10a2,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x1082,0x1082,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1924,0x1924,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x18e3,0x2104,0x3164,0x2944,0x2104,0x3144,0x2924,0x2124,0x2104,0x2124,0x2924,0x3164,0x2945,0x2124,0x2103,0x2104,0x2104,0x18e3,0x10a2,0x18e3,0x20e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3185,0x3165,0x2945,0x2924,0x2124,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x20e3,0x18e3,0x2103,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4207,0x62c9,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2144,0x3186,0x2986,0x2965,0x2965,0x2965,0x2945,0x31a6,0x2945,0x3185,0x2965,0x2124,0x2145,0x2986,0x2145,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2124,0x2124,0x2945,0x2965,0x2144,0x2104,0x2945,0x2145,0x2945,0x2144,0x2945,0x2965,0x2945,0x2965,0x2124,0x2965,0x2945,0x2144,0x2965,0x2124,0x2965,0x2124,0x2124,0x2144,0x2145,0x2945,0x2124,0x2145,0x2124,0x18e3,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x1904,0x2124,0x2124,0x2124,0x2104,0x1903,0x2104,0x2104,0x2965,0x2145,0x2144,0x2145,0x2144,0x2145,0x2124,0x1924,0x10e3,0x2165,0x2124,0x1903,0x1904,0x1904,0x1904,0x18e3,0x2104,0x1903,0x2104,0x2124,0x2945,0x1904,0x1904,0x2124,0x1903,0x1904,0x1904,0x1903,0x2104, +0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1904,0x18e3,0x2104,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2965,0x2985,0x2144,0x1924,0x2124,0x2124,0x1904,0x2124,0x2965,0x3186,0x2124,0x2125,0x2125,0x2124,0x2945,0x2965,0x2965,0x2124,0x1904,0x1904,0x1904,0x2125,0x2966,0x2986,0x2965,0x2145,0x2124,0x2945,0x2985,0x2985,0x2986,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2144,0x2145,0x2985,0x2945,0x2965,0x2965,0x2966,0x3186,0x2945,0x2966,0x31a6,0x2986,0x2985,0x2965,0x2124,0x2965,0x2986,0x2986,0x2144,0x2965,0x2144,0x2145,0x2966,0x2166,0x2165,0x2965,0x2165,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x29a6,0x31c7,0x31a6,0x31c7,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x2965,0x2145,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x1944,0x21a6,0x2144,0x21a6,0x21a6,0x2145,0x21a6,0x21a6,0x2145,0x21a6,0x21c6,0x2145,0x2185,0x1944,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x39a4,0x6b04,0x62c3,0x4a04,0x62e4,0x5a64,0x41c4,0x41e4,0x4a05,0x5264,0x6ae4,0x41c4,0x41e4,0x4a03,0x2123,0x2104,0x18e3,0x10a2,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3965,0x5185,0x3944,0x3145,0x4965,0x3145,0x4145,0x4165,0x2945,0x3965,0x3965,0x3965,0x4165,0x28e3,0x2103,0x20e3,0x18a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c3,0x3985,0x6227,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x2145,0x31a6,0x2965,0x2145,0x2124,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2945,0x2145,0x2145,0x2965,0x2965,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2965,0x2945,0x2945,0x2945,0x2124,0x2124,0x2986,0x2145,0x2144,0x2145,0x2965,0x2145,0x2965,0x2145,0x2945,0x2965,0x2945,0x2124,0x2124,0x2144,0x2124,0x2945,0x2145,0x2124,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2104,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2144,0x1924,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x1903,0x1903,0x18e3,0x1904,0x18e4, +0x18c3,0x18e3,0x2124,0x2104,0x1903,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2144,0x2124,0x1904,0x2124,0x2145,0x2125,0x2125,0x2124,0x1904,0x18e3,0x1904,0x1904,0x2124,0x1904,0x2145,0x2965,0x2145,0x2125,0x2945,0x2966,0x2965,0x2965,0x3185,0x2165,0x2124,0x2145,0x2125,0x2125,0x2945,0x2945,0x2966,0x2966,0x2165,0x2965,0x2986,0x2965,0x2986,0x2985,0x2145,0x2165,0x2145,0x29a6,0x29a6,0x31a6,0x2145,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x31c7,0x2965,0x2986,0x31a6,0x3186,0x2165,0x2986,0x2965,0x2165,0x31a6,0x2986,0x2145,0x2985,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2145,0x2165,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2985,0x2966,0x31c7,0x3186,0x31a6,0x39e7,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x31e7,0x31a6,0x2986,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x1924,0x21c6,0x2145,0x2186,0x21a6,0x2165,0x21e7,0x2207,0x21a5,0x21e7,0x21e7,0x2165,0x2185,0x1964,0x18e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18a2,0x0861,0x1082,0x18c3,0x5264,0x83c3,0x7ba3,0x6304,0x7b84,0x83a4,0x62c4,0x5aa4,0x6b25,0x6b04,0x83a3,0x4a04,0x7b64,0x5a62,0x2103,0x2104,0x18e3,0x10a2,0x18c3,0x18c2,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x5965,0x7185,0x5165,0x5185,0x6985,0x4165,0x6185,0x5965,0x4165,0x69a6,0x51a6,0x4985,0x6185,0x2903,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6184,0x31a7,0x2966,0x2965,0x2986,0x3186,0x2945,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2966,0x2966,0x2986,0x31a6,0x3186,0x2945,0x3186,0x31a6,0x2965,0x3186,0x2965,0x1924,0x2986,0x2986,0x2124,0x2124,0x2124,0x2145,0x2165,0x2986,0x2986,0x2145,0x2945,0x2945,0x2945,0x2165,0x2165,0x2966,0x2124,0x1904,0x2125,0x2125,0x2945,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2965,0x2144,0x2965,0x2965,0x2165,0x1924,0x1904,0x2145,0x2144,0x2965,0x2986,0x2124,0x2965,0x2145,0x2125,0x2125,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2945,0x18c3,0x18e3,0x18e3,0x2104,0x1903,0x1904,0x2124,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x1903,0x2124,0x2124,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x18e3,0x1903,0x2104,0x2124,0x1903,0x2124,0x2124,0x10c3,0x10c3,0x18e3,0x2104, +0x1904,0x18e3,0x18e3,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x1904,0x2145,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2125,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2145,0x2125,0x2145,0x2145,0x2144,0x2124,0x2165,0x2965,0x2124,0x2124,0x2124,0x2144,0x2145,0x2125,0x2986,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2145,0x2985,0x2965,0x2986,0x2145,0x2965,0x31a6,0x2945,0x2125,0x2145,0x2945,0x2945,0x2125,0x2966,0x3186,0x2966,0x2945,0x2986,0x2986,0x31a6,0x31a6,0x2966,0x2965,0x2145,0x2966,0x2965,0x2165,0x2124,0x2144,0x2966,0x2966,0x2965,0x31a6,0x2985,0x2165,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x2966,0x2986,0x31c7,0x2986,0x2966,0x2986,0x31a6,0x2966,0x4228,0x39e7,0x2965,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x18c2,0x18a2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x2124,0x21e6,0x2165,0x2145,0x2185,0x2165,0x21c6,0x21c6,0x21a5,0x21c6,0x29a6,0x2165,0x2164,0x1944,0x20e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2104,0x18e3,0x18c2,0x0861,0x1082,0x18c3,0x5aa4,0x6b44,0x4223,0x6324,0x6b24,0x7bc5,0x6304,0x7b63,0x7ba4,0x62c3,0x83e3,0x62c3,0x83c3,0x5a82,0x2103,0x18e3,0x2103,0x18c2,0x18c3,0x18c3,0x2124,0x18c3,0x18e3,0x0841,0x18e3,0x2124,0x5985,0x6185,0x6185,0x6185,0x7185,0x4165,0x5165,0x7185,0x5985,0x79e6,0x59c6,0x4986,0x6985,0x2903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6164,0x3186,0x2986,0x2966,0x2966,0x3186,0x2966,0x2966,0x31a6,0x2986,0x2986,0x29a6,0x2966,0x2145,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x2945,0x2965,0x2965,0x2925,0x2124,0x2945,0x2945,0x31a6,0x2145,0x2125,0x2986,0x39c7,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x3186,0x2965,0x2145,0x2965,0x3186,0x2985,0x2986,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2145,0x2986,0x2144,0x2124,0x2124,0x2965,0x2145,0x2125,0x2125,0x2125,0x2965,0x2124,0x2145,0x2945,0x2965,0x2124,0x2965,0x2985,0x1904,0x2104,0x18e4,0x2945,0x2945,0x18e3,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x1904,0x1904,0x1903,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x1903,0x1904,0x2145,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x2104,0x2104, +0x1903,0x1903,0x1903,0x2104,0x2104,0x2124,0x18e3,0x1904,0x1903,0x1904,0x18e3,0x1904,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x2965,0x2986,0x2125,0x2965,0x2124,0x2145,0x2124,0x2124,0x2145,0x2965,0x2124,0x2124,0x2985,0x2965,0x2125,0x2966,0x2986,0x2104,0x2945,0x2965,0x3186,0x3186,0x2965,0x2124,0x2966,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2966,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2966,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2145,0x2966,0x2986,0x2966,0x2966,0x2966,0x2145,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x31a6,0x2986,0x2985,0x2145,0x2965,0x29a6,0x2145,0x2966,0x3186,0x2986,0x3186,0x2965,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x2986,0x2966,0x31a6,0x31e7,0x31a6,0x2985,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1924,0x2165,0x2124,0x2104,0x1924,0x2124,0x2145,0x2144,0x2144,0x2145,0x2145,0x2145,0x2144,0x1904,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18c2,0x0861,0x10a2,0x18e3,0x39c4,0x4204,0x2944,0x4225,0x4204,0x4a65,0x4204,0x6304,0x5ac4,0x4224,0x6304,0x4203,0x4a64,0x5263,0x2923,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x2124,0x18e3,0x18c3,0x0841,0x18e3,0x2124,0x4165,0x4165,0x4965,0x4145,0x5985,0x4145,0x4965,0x6185,0x4165,0x59a6,0x51a6,0x3986,0x5185,0x20e3,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x6164,0x2986,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2125,0x2945,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2945,0x2145,0x2965,0x31c6,0x2945,0x31c7,0x31c6,0x2985,0x2965,0x2144,0x2965,0x2965,0x2985,0x2945,0x2124,0x2104,0x2965,0x2945,0x2945,0x2965,0x2124,0x2124,0x2144,0x2124,0x2965,0x2125,0x2945,0x2966,0x2124,0x3186,0x2945,0x2145,0x2945,0x2985,0x2945,0x2145,0x2144,0x2124,0x2985,0x2145,0x2145,0x2124,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2145,0x2124,0x1903,0x2124,0x2145,0x2124,0x2965,0x2965,0x2124,0x2125,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2986,0x2124,0x1903,0x1904,0x1924,0x2165,0x1924,0x1924,0x2144,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x2104,0x20e4, +0x18e3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x1903,0x2124,0x1903,0x1904,0x1903,0x18e3,0x1904,0x1904,0x1903,0x1904,0x1904,0x1904,0x2125,0x1904,0x1904,0x2104,0x1904,0x18e3,0x1904,0x2124,0x2125,0x2965,0x2125,0x2124,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2945,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2124,0x2965,0x31a6,0x2945,0x2104,0x2145,0x2145,0x2124,0x2124,0x2965,0x2945,0x2966,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2125,0x2965,0x2986,0x2966,0x2965,0x31a6,0x2145,0x2125,0x31a6,0x31c7,0x2986,0x2986,0x2124,0x2965,0x2965,0x2145,0x29a6,0x31c7,0x2165,0x2145,0x2165,0x29a6,0x29a6,0x2965,0x2985,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x31a7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2145,0x2986,0x31a7,0x31a6,0x2986,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2125,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x20e3,0x2944,0x2965,0x2944,0x2965,0x2944,0x2964,0x2944,0x31a4,0x3184,0x2964,0x3184,0x2944,0x2944,0x2943,0x2103,0x2103,0x18e3,0x18c2,0x18c3,0x18c3,0x2144,0x2104,0x18c3,0x0841,0x18e3,0x2124,0x3145,0x2945,0x2945,0x2924,0x3145,0x2925,0x3145,0x3145,0x2924,0x3145,0x3185,0x3165,0x3165,0x20e3,0x2103,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2965,0x2986,0x2966,0x2986,0x2985,0x2985,0x2965,0x2986,0x2965,0x2124,0x2945,0x3186,0x3186,0x2966,0x2125,0x3186,0x3186,0x31c6,0x31c6,0x29a6,0x2985,0x2985,0x2124,0x2965,0x2986,0x31a6,0x2124,0x2945,0x2145,0x2165,0x2165,0x2124,0x2986,0x2985,0x2124,0x2945,0x2965,0x2965,0x2966,0x2966,0x2125,0x2986,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2144,0x1904,0x2104,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x2124,0x2965,0x2145,0x2104,0x2124,0x2124,0x2124,0x2124,0x1903,0x2124,0x1904,0x2124,0x2945,0x2144,0x2104,0x2104,0x2124,0x2145,0x1924,0x2124,0x2145,0x2124,0x1904,0x1904,0x2124,0x2124,0x1924,0x2124,0x1904,0x1904,0x18e4,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x18e3,0x2144,0x2945,0x18e3, +0x1903,0x1904,0x2104,0x1903,0x2104,0x2104,0x1904,0x1903,0x1903,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x1903,0x18e3,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x2124,0x2125,0x2124,0x2965,0x2145,0x2124,0x2144,0x2965,0x2985,0x2124,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2144,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2986,0x2145,0x2145,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2165,0x2165,0x2985,0x2986,0x2965,0x2945,0x2945,0x2945,0x3186,0x3186,0x29a6,0x2986,0x2965,0x31a7,0x2966,0x2986,0x31a6,0x2985,0x2986,0x2945,0x2945,0x2966,0x2165,0x2165,0x2966,0x2966,0x2966,0x2986,0x31c7,0x31c6,0x29a6,0x2965,0x3186,0x2966,0x31a7,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2985,0x2965,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x1082,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1061,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2944,0x2124,0x18e3,0x2103,0x18e3,0x10a2,0x10a2,0x18a2,0x18c3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x2103,0x2944,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2103,0x18e3,0x18c2,0x18c3,0x18c2,0x2944,0x18e3,0x20e3,0x0841,0x18c3,0x2124,0x2944,0x2965,0x2965,0x2944,0x2945,0x2925,0x2924,0x2124,0x2124,0x2945,0x2945,0x2965,0x2965,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x3186,0x2965,0x2965,0x2986,0x2145,0x31a6,0x29a6,0x31c6,0x31c7,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2986,0x29a6,0x29a6,0x2165,0x29a6,0x2185,0x2144,0x29a6,0x2986,0x2945,0x2965,0x2145,0x2945,0x2945,0x2165,0x2165,0x2145,0x2165,0x2144,0x2986,0x2965,0x2104,0x2925,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2145,0x2986,0x2965,0x2965,0x2124,0x2985,0x2945,0x2124,0x2965,0x2124,0x1924,0x2124,0x2145,0x2965,0x2124,0x2165,0x2145,0x2124,0x2145,0x2124,0x2965,0x2104,0x2124,0x2104,0x2945,0x2145,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e4,0x2104,0x2145,0x1904,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2125,0x2125,0x2104,0x18e3,0x1903,0x2124,0x2104,0x2104,0x2124,0x2104,0x18e3, +0x2104,0x2104,0x2124,0x2104,0x2104,0x1903,0x2104,0x2124,0x1904,0x1904,0x1903,0x18e3,0x18e3,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2145,0x31a6,0x2125,0x2145,0x2145,0x2124,0x2104,0x2104,0x1904,0x2104,0x1904,0x2104,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2124,0x2945,0x2945,0x2125,0x2125,0x2965,0x2965,0x2945,0x2125,0x2945,0x2986,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2145,0x2966,0x2965,0x2165,0x2985,0x2985,0x2944,0x2965,0x2965,0x2965,0x3186,0x39c7,0x2966,0x29a6,0x29a6,0x2966,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x2124,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2986,0x2986,0x31c7,0x31e7,0x31a6,0x2986,0x31a6,0x2966,0x31a7,0x2986,0x2966,0x2145,0x2986,0x31e7,0x31c7,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x2965,0x31a6,0x31e7,0x29a6,0x31a6,0x2966,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x18c3,0x18c3,0x0861,0x0861,0x10a2,0x2103,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x2104,0x2103,0x2103,0x2124,0x2124,0x2103,0x2104,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x2124,0x18c3,0x20e3,0x0841,0x10a2,0x2104,0x2124,0x2945,0x2944,0x2124,0x2124,0x2924,0x2924,0x2124,0x2124,0x2924,0x2945,0x2965,0x2965,0x2124,0x2124,0x2924,0x2104,0x10a2,0x10a2,0x18e3,0x18e3,0x20e3,0x18c3,0x18c2,0x18c3,0x18c3,0x2903,0x5164,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2165,0x2986,0x2986,0x2965,0x2965,0x31a7,0x2145,0x2986,0x31a6,0x2145,0x2985,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2144,0x2165,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2985,0x2144,0x2144,0x2145,0x2145,0x2145,0x2965,0x2124,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2985,0x2965,0x2965,0x2944,0x2145,0x2145,0x2124,0x2145,0x2945,0x2145,0x2145,0x29a6,0x2985,0x2165,0x2145,0x2125,0x2945,0x2945,0x2125,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x1904,0x2124,0x2124,0x2125,0x2125,0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1924,0x1904,0x2125,0x2925,0x1904,0x2104,0x2124,0x2104,0x18e4,0x1904,0x2145,0x2125,0x1904, +0x18e3,0x1904,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x1904,0x1924,0x1924,0x1903,0x18e3,0x1904,0x2145,0x1904,0x18e3,0x2144,0x2124,0x2125,0x1904,0x1924,0x2145,0x2965,0x2145,0x2965,0x2124,0x2124,0x1903,0x2124,0x2104,0x2124,0x2145,0x2145,0x1904,0x2124,0x2144,0x2965,0x39e7,0x2985,0x2165,0x2145,0x2144,0x2145,0x2124,0x2104,0x2124,0x2945,0x2945,0x2966,0x31a7,0x2145,0x2125,0x2145,0x2165,0x2965,0x31a6,0x2986,0x31c7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2144,0x31a6,0x31a6,0x2965,0x3186,0x2986,0x3186,0x31a7,0x2966,0x2965,0x2965,0x2165,0x2145,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2986,0x2966,0x2945,0x2966,0x2966,0x2965,0x2986,0x31e7,0x39e7,0x4248,0x31c6,0x3186,0x2966,0x2965,0x2945,0x2966,0x2986,0x2986,0x31e7,0x29a6,0x2965,0x31a6,0x3186,0x2965,0x39e7,0x3186,0x2986,0x29a6,0x31c7,0x3a08,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x2104,0x18c3,0x18c3,0x0861,0x0841,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x18c3,0x18c3,0x0841,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18a2,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x2966,0x2945,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x2124,0x3165,0x2965,0x2965,0x2965,0x2125,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2945,0x2965,0x2965,0x2144,0x2144,0x2165,0x2145,0x2965,0x2985,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x2945,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2985,0x2144,0x1945,0x2165,0x2145,0x2145,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2145,0x2165,0x2165,0x2145,0x2145,0x2124,0x2965,0x1904,0x2145,0x2985,0x1904,0x2125,0x2104,0x2125,0x2966,0x2145,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x2104,0x2144,0x2124,0x1904,0x18e3,0x1903,0x1924,0x1924,0x1904,0x2945,0x2945,0x2104,0x2125,0x2125,0x2104,0x2104,0x18e3,0x1904,0x1904,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x18e3,0x18e3,0x2104,0x2125,0x2124,0x1924,0x2124,0x1904,0x2145,0x2145,0x1904,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2145,0x2144,0x2124,0x2124,0x2965,0x2965,0x2144,0x2144,0x2124,0x2104,0x2124,0x2965,0x2986,0x2144,0x2986,0x2965,0x2145,0x2145,0x2965,0x2165,0x2965,0x2965,0x29a6,0x2145,0x2125,0x2986,0x2985,0x2965,0x2986,0x2145,0x2985,0x2965,0x2124,0x2986,0x2986,0x2986,0x3186,0x2965,0x2945,0x2966,0x2986,0x2966,0x2986,0x2985,0x2145,0x2945,0x2145,0x2965,0x3186,0x3186,0x2985,0x3186,0x3186,0x2986,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x31c7,0x31a6,0x3186,0x2986,0x39c7,0x3186,0x2965,0x2986,0x2145,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31a6,0x2966,0x39e8,0x39c7,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a2,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18a3,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2985,0x31c7,0x2124,0x2965,0x2986,0x2945,0x3186,0x3186,0x2945,0x2124,0x2965,0x2985,0x2986,0x2965,0x31c6,0x2985,0x2985,0x2985,0x2985,0x2986,0x2145,0x2986,0x2965,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2165,0x2986,0x2124,0x2965,0x2945,0x2965,0x2124,0x2945,0x2144,0x2125,0x2145,0x2145,0x2965,0x3186,0x2144,0x2985,0x31a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2145,0x2124,0x2124,0x2145,0x2125,0x2125,0x2145,0x2125,0x2124,0x2145,0x1904,0x1924,0x1924,0x2124,0x2945,0x2104,0x2145,0x2124,0x2124,0x2125,0x2124,0x1904,0x1904,0x2144,0x2144,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x1904,0x1904,0x2986, +0x1903,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x1904,0x1903,0x1904,0x1904,0x2104,0x2124,0x2144,0x1924,0x1924,0x2124,0x2145,0x2125,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2945,0x2965,0x2124,0x2965,0x2965,0x2965,0x2124,0x2124,0x2145,0x2145,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2145,0x2124,0x2145,0x2165,0x2144,0x2965,0x2965,0x2966,0x3186,0x2965,0x2945,0x2966,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2985,0x2165,0x29a6,0x2965,0x2145,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x3186,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c7,0x2986,0x39c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a6,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x2945,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18c3,0x2104,0x5164,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x2966,0x3186,0x2985,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2145,0x2965,0x2985,0x2945,0x2985,0x2185,0x29a6,0x2985,0x31c7,0x31a6,0x31c7,0x2145,0x2965,0x2986,0x2945,0x2104,0x2124,0x2144,0x2124,0x2144,0x2145,0x2945,0x4208,0x2965,0x2144,0x2965,0x2966,0x2145,0x2124,0x2165,0x2145,0x29a6,0x31c6,0x2145,0x2965,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2124,0x2145,0x3186,0x2124,0x2945,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2945,0x2145,0x18e4,0x2124,0x2124,0x18e4,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145, +0x18e3,0x2124,0x2124,0x18e3,0x1904,0x18e4,0x1904,0x2124,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x2945,0x2965,0x2144,0x2144,0x2145,0x2965,0x2124,0x2124,0x2145,0x2145,0x2945,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2965,0x2124,0x2144,0x2965,0x2965,0x2985,0x2185,0x2125,0x2945,0x2986,0x2966,0x2125,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x3186,0x2986,0x2986,0x2945,0x2145,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2966,0x31a6,0x2986,0x31a7,0x2966,0x2165,0x2965,0x2966,0x2986,0x31a6,0x3186,0x39c7,0x2966,0x3186,0x31c7,0x31a7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x2104,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18e3,0x2965,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18a3,0x2103,0x4964,0x31c6,0x2965,0x2986,0x2985,0x2965,0x2945,0x2966,0x3186,0x3186,0x31a6,0x31c7,0x2945,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2965,0x2965,0x2144,0x2145,0x2965,0x2985,0x2986,0x2986,0x2145,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2945,0x2124,0x2145,0x2965,0x2145,0x2145,0x2124,0x2145,0x3186,0x2145,0x2145,0x2145,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2124,0x2145,0x2965,0x2965,0x2965,0x2945,0x2144,0x2945,0x2124,0x2965,0x2965,0x2965,0x2965,0x2124,0x2145,0x2986,0x2986,0x2124,0x2945,0x2144,0x2145,0x2145,0x2125,0x2124,0x18e4,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2986,0x2104,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2124,0x2145,0x2125,0x2945,0x2145,0x2124,0x2104, +0x2104,0x1903,0x1903,0x1904,0x1904,0x18e4,0x2104,0x2145,0x2104,0x18e3,0x1904,0x1904,0x2145,0x2124,0x1904,0x2124,0x2124,0x1904,0x2145,0x2945,0x2104,0x2124,0x2125,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2985,0x2985,0x2985,0x31e7,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2145,0x2145,0x2965,0x2965,0x2986,0x31c7,0x31a6,0x2966,0x31a6,0x29a6,0x2986,0x2966,0x2965,0x2965,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2945,0x2986,0x3186,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x31a7,0x3186,0x2965,0x3186,0x39c7,0x31a7,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18a3,0x10a2,0x18a2,0x2945,0x2945,0x18c3,0x18e3,0x10a2,0x18c2,0x18a2,0x20e3,0x4944,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2985,0x3186,0x2986,0x2986,0x2985,0x2145,0x2165,0x2965,0x29a6,0x2145,0x2145,0x2986,0x2986,0x2965,0x2966,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2144,0x2965,0x2965,0x2965,0x2945,0x2986,0x3186,0x3186,0x2965,0x2985,0x2945,0x2965,0x2945,0x2985,0x2965,0x2145,0x2145,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2985,0x2965,0x2144,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x31a6,0x2145,0x2986,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2945,0x2124,0x2125,0x2966,0x2145,0x2125,0x1904,0x2124,0x2125,0x2986,0x2124,0x2124,0x2165,0x2145,0x2145,0x2165,0x2124,0x2124,0x1904,0x2104,0x2124,0x2125,0x2145,0x2125,0x2124,0x2125,0x2104,0x1904,0x2125,0x2145,0x2124,0x1903,0x2124, +0x1904,0x1904,0x1903,0x1904,0x1903,0x1904,0x2124,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2144,0x2945,0x2145,0x2124,0x2145,0x2124,0x2124,0x1904,0x1904,0x2145,0x2144,0x2145,0x2124,0x2965,0x2145,0x2124,0x2124,0x2145,0x2165,0x2165,0x2145,0x1924,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2125,0x2965,0x2965,0x2965,0x3a08,0x31c7,0x2145,0x2145,0x2985,0x2985,0x2986,0x2986,0x2945,0x2945,0x2965,0x3186,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x2966,0x2125,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x2965,0x2966,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2986,0x2966,0x2965,0x3186,0x39c7,0x3186,0x2966,0x2986,0x2986,0x2986,0x3186,0x39c7,0x31a7,0x3186,0x39e7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2104,0x10c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2966,0x18e3,0x18c3,0x10a2,0x18c2,0x18c2,0x20e3,0x4964,0x31a6,0x2965,0x31a6,0x2986,0x2966,0x2986,0x2965,0x2945,0x2965,0x2945,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x2965,0x2966,0x2986,0x2965,0x2145,0x2965,0x2945,0x2965,0x2145,0x2945,0x2965,0x3186,0x2945,0x3186,0x3186,0x2945,0x2965,0x2144,0x2124,0x2124,0x2945,0x2986,0x2965,0x2144,0x2965,0x2965,0x2985,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2986,0x2965,0x2124,0x2965,0x2986,0x31a6,0x2965,0x3186,0x31a6,0x2145,0x2965,0x2965,0x2965,0x2945,0x2945,0x2985,0x2965,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1904,0x2104,0x2125,0x2124,0x2104,0x1904,0x2124,0x2145,0x2104,0x2125,0x2124,0x18e4,0x1904,0x2145,0x2124,0x2125,0x2125,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2124, +0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2125,0x2124,0x1924,0x2124,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2144,0x2144,0x2144,0x2965,0x2965,0x2145,0x2165,0x2145,0x2124,0x2124,0x2145,0x2124,0x2965,0x2145,0x2965,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2145,0x2145,0x1924,0x2144,0x2145,0x2144,0x2965,0x2145,0x2125,0x2145,0x2145,0x2966,0x2965,0x2124,0x3186,0x31a6,0x2986,0x2986,0x2165,0x2144,0x2965,0x2965,0x2145,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2145,0x2966,0x2966,0x2966,0x2965,0x2165,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x3186,0x39e7,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x39e7,0x2985,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x31a6,0x31c7,0x2965,0x3186,0x3a08,0x31e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x18a3,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x2104,0x2925,0x18c3,0x10a2,0x18c2,0x18c3,0x20e3,0x4964,0x31a6,0x2985,0x31c7,0x2986,0x2966,0x2986,0x2966,0x2965,0x2965,0x2144,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2965,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2966,0x2145,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2945,0x2965,0x2945,0x2965,0x2144,0x2144,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2144,0x2965,0x2965,0x2986,0x2145,0x2986,0x2986,0x2945,0x2144,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x2965,0x2145,0x2945,0x2965,0x2945,0x39a7,0x2966,0x2124,0x2145,0x2965,0x2965,0x2965,0x2144,0x2945,0x2124,0x2124,0x2124,0x2145,0x2124,0x2945,0x2125,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2945,0x2104,0x1904,0x2124,0x2125,0x2124,0x18e4,0x2124,0x2125,0x2124,0x1904,0x2104,0x2124,0x2124,0x2124,0x2104, +0x1904,0x18e3,0x1903,0x1904,0x1903,0x1903,0x18e4,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2104,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2145,0x2124,0x2144,0x2965,0x2145,0x2124,0x2104,0x2145,0x2145,0x2124,0x2145,0x2986,0x2986,0x2986,0x2145,0x2124,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2985,0x2965,0x2124,0x2145,0x2965,0x2145,0x2965,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x2986,0x31c7,0x2986,0x31a7,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2165,0x29a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2986,0x29a6,0x31c7,0x2986,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2124,0x2104,0x2124,0x2945,0x2965,0x2124,0x2124,0x2924,0x2124,0x2124,0x2125,0x2945,0x2124,0x2104,0x2104,0x2124,0x2125,0x2125,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x20e3,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2945,0x20e3,0x10a2,0x18a3,0x18c3,0x20e3,0x4964,0x2986,0x2985,0x2966,0x2965,0x2986,0x2966,0x31a7,0x2986,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x31a7,0x31a7,0x2965,0x2965,0x2986,0x2945,0x2145,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2144,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2965,0x2145,0x2144,0x2124,0x2965,0x2145,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2125,0x2124,0x2124,0x2945,0x2125,0x2945,0x2125,0x2104,0x2104,0x1904,0x2124,0x2124,0x2104,0x1904,0x2124,0x2125,0x2145,0x1904,0x1904,0x2125,0x1904,0x2124,0x1903,0x2124, +0x2104,0x2104,0x2104,0x1924,0x1924,0x1924,0x2104,0x18e3,0x18e4,0x1904,0x18e3,0x1904,0x1904,0x2124,0x2124,0x2124,0x2144,0x2944,0x2145,0x2124,0x2125,0x2145,0x2965,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2965,0x2965,0x2144,0x2124,0x2965,0x2965,0x2945,0x2125,0x2945,0x2945,0x2965,0x2965,0x2145,0x2986,0x2986,0x2966,0x2986,0x2145,0x2965,0x2985,0x2144,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2966,0x31a7,0x31a6,0x2965,0x3186,0x2945,0x2965,0x3186,0x2965,0x2985,0x2965,0x2945,0x31a6,0x2985,0x2165,0x2965,0x2965,0x2965,0x2985,0x2145,0x2145,0x2985,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x2966,0x2965,0x2145,0x39e7,0x31a7,0x2966,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x1903,0x2104,0x2124,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2945,0x2104,0x2124,0x2924,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e3,0x2103,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2944,0x2945,0x2925,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2925,0x2945,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x10a2,0x18c3,0x18a3,0x20e3,0x4165,0x2965,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3166,0x2966,0x2966,0x2965,0x2145,0x2145,0x2965,0x2145,0x2986,0x2986,0x2965,0x3185,0x2965,0x2145,0x2945,0x2985,0x31a6,0x3186,0x2965,0x2986,0x2966,0x2965,0x2985,0x2145,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2985,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x31a6,0x2985,0x3186,0x2986,0x2124,0x2965,0x2965,0x2144,0x2124,0x2145,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2144,0x2125,0x2965,0x2104,0x2124,0x2145,0x2104,0x2125,0x2104,0x2124,0x2145,0x2945,0x2986,0x2124,0x2104,0x1904,0x2145,0x2124,0x2124,0x1904,0x1904,0x2104,0x2125,0x2124,0x1924,0x2124, +0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x20e4,0x20e4,0x2104,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2125,0x2945,0x2124,0x2124,0x2125,0x2125,0x2145,0x2145,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2986,0x2145,0x2145,0x2965,0x2144,0x2124,0x2965,0x3186,0x2124,0x2965,0x2145,0x2124,0x2966,0x31c7,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2985,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2986,0x2985,0x2985,0x2985,0x2965,0x2145,0x2986,0x2965,0x2145,0x2985,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x31c7,0x3186,0x2966,0x31a7,0x3186,0x31a7,0x31a7,0x31a6,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x39e7,0x39c7,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x2103,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18a2,0x10a2,0x18c3,0x18a3,0x20e3,0x4144,0x3186,0x3186,0x2966,0x2945,0x2965,0x2145,0x2965,0x2966,0x2966,0x2986,0x2165,0x2145,0x2965,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x3186,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2145,0x2965,0x2965,0x2966,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x2145,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2985,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2965,0x2145,0x2145,0x2965,0x2145,0x2124,0x2945,0x2965,0x2986,0x2145,0x2145,0x2965,0x3186,0x2965,0x3186,0x2145,0x2124,0x2145,0x2124,0x2145,0x2124,0x2124,0x2945,0x2145,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2125,0x2125,0x1904,0x2124,0x2145,0x2145,0x2124,0x2945,0x2945,0x31c6,0x2945,0x2124,0x1904,0x2124,0x2145,0x2124,0x2145,0x2124,0x2104,0x2145,0x2124,0x1924,0x2144, +0x2104,0x1904,0x2104,0x1903,0x2104,0x2125,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1904,0x2104,0x2125,0x2125,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2125,0x2145,0x2124,0x2124,0x2124,0x2924,0x2945,0x2145,0x2124,0x2144,0x2144,0x2145,0x2124,0x2145,0x2145,0x2124,0x2945,0x2145,0x2165,0x2144,0x2124,0x2965,0x2965,0x2945,0x2124,0x2144,0x2144,0x2124,0x2965,0x3186,0x2145,0x2985,0x2965,0x2965,0x2966,0x2985,0x2165,0x2165,0x2966,0x2966,0x2945,0x2125,0x2965,0x2965,0x31a6,0x39c6,0x39c6,0x3186,0x29a6,0x2986,0x2965,0x2965,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2985,0x29a6,0x3186,0x31a6,0x29a6,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x31a7,0x2966,0x31a6,0x31c7,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x18a2,0x18a3,0x20e3,0x3944,0x2966,0x2145,0x2986,0x2966,0x2966,0x2145,0x2966,0x2986,0x2145,0x2165,0x2965,0x2986,0x2985,0x2965,0x29a6,0x2985,0x2985,0x29a6,0x2145,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x31a6,0x2145,0x3186,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2985,0x2145,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31c6,0x2986,0x2965,0x2945,0x2145,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2145,0x2945,0x2985,0x2945,0x2144,0x2145,0x2145,0x2965,0x2966,0x2986,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2145,0x2124,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2124,0x2125,0x2104,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x1904,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x18e3,0x1904,0x1903,0x1924, +0x2144,0x2104,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2124,0x2144,0x2124,0x18e4,0x2104,0x2124,0x2945,0x2144,0x2965,0x2965,0x2145,0x2144,0x2125,0x2104,0x2125,0x2925,0x2945,0x2945,0x2945,0x2965,0x2965,0x2145,0x2945,0x2945,0x2945,0x2145,0x2945,0x31a6,0x2165,0x1924,0x2144,0x2944,0x2985,0x2965,0x2145,0x2145,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2965,0x3186,0x2965,0x2965,0x3186,0x2985,0x2165,0x2985,0x2165,0x2165,0x2145,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x2986,0x2965,0x39c7,0x39c7,0x2965,0x2985,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2966,0x3186,0x39c7,0x39e7,0x31a6,0x3186,0x31a7,0x31c7,0x31a6,0x31a6,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2924,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3944,0x2986,0x2965,0x2145,0x2186,0x2986,0x2186,0x2186,0x2986,0x29a6,0x2165,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2965,0x2965,0x2945,0x2986,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2165,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2965,0x2145,0x2965,0x2986,0x2185,0x2165,0x2965,0x2965,0x2986,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2965,0x2986,0x2145,0x2986,0x2965,0x2145,0x2986,0x2985,0x2165,0x2145,0x2965,0x2145,0x2965,0x2965,0x2145,0x2965,0x2124,0x2145,0x2965,0x2124,0x2945,0x2965,0x2104,0x2965,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2965,0x2104,0x2145,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x2104,0x18e4, +0x2144,0x2145,0x2124,0x18e3,0x1904,0x2104,0x2104,0x2104,0x1904,0x1903,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2945,0x2965,0x2104,0x2144,0x2145,0x2144,0x2145,0x2945,0x2124,0x2124,0x2124,0x2945,0x2145,0x2125,0x2145,0x2945,0x2945,0x2965,0x2125,0x2125,0x2966,0x2145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2985,0x2165,0x1924,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2966,0x2966,0x2145,0x2145,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2165,0x2986,0x29a6,0x31a6,0x2986,0x2145,0x2986,0x2965,0x3186,0x2965,0x2985,0x2986,0x3186,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x3186,0x2965,0x2965,0x2965,0x31a6,0x2986,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3166,0x31a6,0x31a6,0x39a6,0x39c6,0x39c7,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x3166,0x2925,0x2924,0x2925,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3924,0x2966,0x2986,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2966,0x2965,0x2145,0x31a6,0x2965,0x31a6,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2966,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2945,0x2965,0x31c6,0x3186,0x3186,0x2965,0x2965,0x2145,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2165,0x2986,0x2986,0x2965,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2165,0x2965,0x2965,0x2985,0x2986,0x2965,0x2144,0x2965,0x2144,0x2965,0x2985,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2965,0x2965,0x2124,0x2124,0x2104,0x2945,0x2965,0x2145,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2145,0x1903,0x2124,0x2124,0x1924,0x2145,0x2125,0x2104,0x2104, +0x2104,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145,0x2124,0x2145,0x1904,0x2124,0x2125,0x2125,0x2945,0x2945,0x2124,0x2965,0x2144,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2965,0x2966,0x2125,0x2145,0x2945,0x2925,0x2125,0x2965,0x2945,0x2945,0x2966,0x2986,0x2965,0x2145,0x2966,0x2985,0x2145,0x2145,0x2145,0x2965,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x2144,0x2945,0x2966,0x3186,0x3186,0x2966,0x2986,0x2965,0x2986,0x3186,0x3186,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2165,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2965,0x3186,0x2965,0x2945,0x2985,0x3186,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c7,0x31c7,0x31c6,0x31c6,0x3a07,0x39e7,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2945,0x2945,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x3186,0x3165,0x2925,0x18e4,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x3124,0x2966,0x39e7,0x31a6,0x2965,0x3186,0x2965,0x2986,0x3186,0x2965,0x2986,0x3186,0x2144,0x2965,0x31c7,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x3186,0x2965,0x3186,0x31a6,0x2985,0x3186,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x39e7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2125,0x2965,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x3186,0x2945,0x2145,0x2986,0x2965,0x2945,0x2145,0x2985,0x3186,0x3186,0x31a6,0x2124,0x31a6,0x2965,0x2124,0x2124,0x2965,0x2965,0x1924,0x2165,0x2165,0x2945,0x2145,0x2145,0x2124,0x2104,0x2145,0x2124,0x2124,0x2945,0x2144,0x1903,0x2124,0x2124,0x2124,0x2145,0x2104,0x2104,0x2104, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2125,0x2945,0x2145,0x2124,0x2124,0x1904,0x2124,0x2125,0x2945,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2985,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2125,0x2945,0x2125,0x2145,0x2165,0x2145,0x2165,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2965,0x2985,0x2965,0x3186,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2165,0x2945,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2965,0x2986,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2966,0x2966,0x2985,0x2165,0x2986,0x31a6,0x39c7,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x39e7,0x39e7,0x31a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x18a3,0x2124,0x2965,0x3186,0x3186,0x3186,0x2965,0x2944,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2145,0x2986,0x31a6,0x31c6,0x39c6,0x31a6,0x3186,0x20e4,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x3944,0x3186,0x3186,0x3166,0x3186,0x3186,0x2145,0x2966,0x3186,0x3186,0x2965,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x3186,0x3186,0x2986,0x2985,0x2145,0x2986,0x31c6,0x2965,0x2986,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2945,0x2144,0x2965,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2145,0x2145,0x2945,0x2965,0x2986,0x2165,0x2965,0x31a6,0x2986,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2945,0x2966,0x3186,0x2945,0x2125,0x2966,0x2985,0x2145,0x2965,0x2965,0x2145,0x2945,0x2965,0x2945,0x2965,0x2145,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x2965,0x2945,0x2104,0x2124,0x2124,0x2104,0x2104,0x2965,0x2986,0x2144,0x1904,0x1904,0x2124,0x1904,0x1904,0x2145,0x2145,0x2124,0x2124, +0x2104,0x2945,0x2945,0x2125,0x1904,0x2104,0x2104,0x2124,0x2124,0x2104,0x2965,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2965,0x2144,0x2965,0x2965,0x2125,0x2165,0x2145,0x2124,0x2124,0x2945,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2144,0x2145,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x3186,0x2985,0x2965,0x3186,0x2965,0x2145,0x2145,0x2145,0x2145,0x2945,0x2945,0x2986,0x2965,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2985,0x2986,0x2985,0x31a6,0x39e7,0x2965,0x2986,0x2965,0x2986,0x31c7,0x31a6,0x2965,0x2144,0x2165,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2986,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x18c3,0x2944,0x2965,0x3186,0x3185,0x2965,0x2104,0x18c3,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10c2,0x1903,0x2944,0x31a6,0x31a6,0x39c6,0x3185,0x18a3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x3124,0x31a6,0x2965,0x2965,0x2966,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2945,0x3186,0x39e7,0x31c6,0x2965,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2165,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2145,0x2125,0x2145,0x2965,0x2145,0x2165,0x2965,0x3186,0x31a7,0x2966,0x2945,0x2945,0x2986,0x2986,0x2145,0x2986,0x2985,0x2985,0x2985,0x2965,0x29a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2165,0x2965,0x2165,0x2145,0x2145,0x2965,0x2945,0x2144,0x2945,0x2144,0x2965,0x2124,0x2124,0x2945,0x2104,0x2124,0x1903,0x2124,0x2145,0x1904,0x2124,0x2124,0x2124,0x2144,0x1904,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x2124, +0x2124,0x1904,0x2104,0x2145,0x1904,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2125,0x2145,0x2104,0x2124,0x2125,0x2124,0x2945,0x2145,0x2145,0x2965,0x2144,0x2124,0x2145,0x2124,0x2125,0x2165,0x2145,0x2124,0x2945,0x2945,0x2945,0x2145,0x2124,0x2144,0x2965,0x2986,0x2965,0x2124,0x2986,0x2986,0x2965,0x2945,0x2945,0x2124,0x2124,0x2145,0x2165,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2165,0x2185,0x2165,0x2185,0x2985,0x2985,0x2165,0x2945,0x2985,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2965,0x2966,0x3186,0x3186,0x2966,0x3186,0x31c7,0x2986,0x2965,0x2965,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x2986,0x31c7,0x31a7,0x31a7,0x2966,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x1082,0x0861,0x0861,0x0841,0x0861,0x1062,0x18e3,0x2944,0x2965,0x2965,0x2965,0x2104,0x10c2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x10a2,0x2103,0x2965,0x31a6,0x31a6,0x2965,0x2104,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x3124,0x31a6,0x31a6,0x31a7,0x2986,0x3186,0x3186,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2965,0x3186,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2945,0x2985,0x3186,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2986,0x2986,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2965,0x2145,0x2165,0x2965,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2124,0x2145,0x2986,0x2965,0x2145,0x2986,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2124,0x2124,0x2145,0x2144,0x2965,0x2965,0x2124,0x2985,0x2965,0x2145,0x2145,0x2145,0x3186,0x2145,0x2945,0x2965,0x2124,0x2124,0x2144,0x2945,0x2145,0x2144,0x2124,0x2124,0x2144,0x2986,0x2965,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2145,0x2124,0x18e3, +0x1904,0x1904,0x2124,0x2145,0x2124,0x1904,0x2104,0x2104,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2145,0x2145,0x2125,0x1924,0x2145,0x2165,0x2145,0x2145,0x2124,0x2945,0x2965,0x2125,0x2145,0x2986,0x2986,0x2966,0x2124,0x2945,0x2145,0x2124,0x2124,0x2165,0x2965,0x2965,0x2985,0x2145,0x2985,0x2986,0x2965,0x2965,0x2125,0x2965,0x2144,0x2965,0x2165,0x2965,0x2965,0x2965,0x3186,0x3186,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2145,0x2985,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x29a6,0x2986,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x31c6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x3186,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x20e4,0x31a6,0x2945,0x2944,0x2944,0x18e3,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x2124,0x3185,0x3185,0x3165,0x20e3,0x1082,0x0861,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x4185,0x31a6,0x2966,0x39c7,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2145,0x29a6,0x31a6,0x2966,0x3186,0x2965,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x2965,0x2986,0x3186,0x3186,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2985,0x3186,0x2986,0x2965,0x2966,0x2966,0x2965,0x31a6,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2985,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2965,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2966,0x31a7,0x2946,0x2966,0x2966,0x2945,0x2965,0x2145,0x2945,0x2945,0x2945,0x2965,0x2985,0x2945,0x2124,0x2145,0x2165,0x2144,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2945,0x2124,0x2945,0x2965,0x2124,0x2144,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x2104,0x18e4, +0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e4,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2125,0x2145,0x2145,0x1924,0x2165,0x2165,0x2124,0x2144,0x2144,0x2945,0x2965,0x2945,0x31c7,0x31a6,0x2965,0x2945,0x2965,0x2945,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2165,0x1924,0x2145,0x2965,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2124,0x2124,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2986,0x2966,0x2145,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2145,0x2985,0x2985,0x2985,0x3186,0x2965,0x2965,0x2966,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2965,0x2985,0x39e7,0x3186,0x31c6,0x3186,0x2986,0x2986,0x3186,0x2965,0x2985,0x3186,0x2965,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x29a6,0x39e7,0x31a6,0x2965,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x18a2,0x2945,0x31a6,0x2924,0x2124,0x18c3,0x1061,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x20e3,0x2124,0x2124,0x2924,0x2965,0x2945,0x2103,0x18c2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x10a2,0x2124,0x2965,0x2965,0x2945,0x18c3,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51c6,0x31c7,0x29a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31c6,0x2986,0x2965,0x2986,0x31a6,0x2965,0x2986,0x2986,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x2144,0x2985,0x2986,0x2966,0x2966,0x2965,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2966,0x2966,0x2145,0x2946,0x2946,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2144,0x2945,0x2965,0x2945,0x2124,0x2965,0x2945,0x2145,0x3186,0x3186,0x2124,0x2145,0x2124,0x2965,0x2144,0x2144,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2985,0x2986,0x2145,0x2124,0x2145,0x2124,0x2104,0x2104,0x2125,0x1904, +0x2124,0x2145,0x2125,0x1904,0x1904,0x2104,0x2104,0x2124,0x2945,0x2124,0x2145,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2945,0x2945,0x2124,0x2145,0x2145,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2145,0x2945,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2965,0x2144,0x2965,0x2145,0x2124,0x2144,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2965,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2986,0x2965,0x2985,0x2986,0x2986,0x2986,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2966,0x2986,0x3186,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31e7,0x31e7,0x2965,0x2145,0x2104,0x10c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x2104,0x2124,0x2104,0x18c3,0x0861,0x1083,0x3167,0x39a7,0x2124,0x18c3,0x18c3,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x2103,0x18e3,0x10a2,0x10a2,0x18c3,0x18c4,0x1083,0x0861,0x10a2,0x2124,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51a5,0x2145,0x4228,0x39e7,0x3186,0x2986,0x2986,0x29a6,0x31e7,0x2985,0x2986,0x2986,0x2965,0x2945,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2986,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2966,0x39c7,0x31c7,0x2165,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2966,0x31a6,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x2145,0x2165,0x2986,0x2965,0x2945,0x2124,0x3186,0x2945,0x2945,0x2965,0x2945,0x2945,0x2144,0x2965,0x2965,0x3186,0x2966,0x2104,0x2124,0x2144,0x2124,0x2945,0x2945,0x2145,0x2965,0x2124,0x2945,0x2144,0x2104,0x2104,0x2965,0x2145,0x2144,0x2124,0x1904,0x2145,0x2145,0x2104,0x2124, +0x2124,0x2124,0x2124,0x2124,0x1904,0x18e3,0x2104,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x1904,0x2125,0x2965,0x2145,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2985,0x2145,0x2145,0x2144,0x2965,0x2165,0x2986,0x2145,0x2145,0x2965,0x31c7,0x2965,0x2125,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2965,0x2945,0x2945,0x2145,0x2145,0x2145,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2124,0x2986,0x31a6,0x2945,0x2965,0x2986,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2966,0x3186,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x29a6,0x31c6,0x2985,0x3186,0x2966,0x3186,0x2986,0x39e7,0x31a6,0x2165,0x2965,0x2986,0x31a6,0x31a6,0x31c6,0x2966,0x31a6,0x2966,0x2966,0x31a6,0x2124,0x0000,0x0000,0x0000,0x0020,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0861,0x41ca,0x9cb4,0x5249,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2924,0x2924,0x2965,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x2967,0x420a,0x20e5,0x0861,0x10a2,0x2104,0x2924,0x2924,0x2104,0x1082,0x0861,0x0861,0x0861,0x10a2,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x51a5,0x0000,0x1082,0x4208,0x4208,0x3186,0x31a6,0x31c6,0x29a6,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2965,0x2966,0x31c7,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2986,0x2965,0x3186,0x3186,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x3186,0x2965,0x3186,0x2965,0x2985,0x2986,0x2986,0x2986,0x2966,0x31a7,0x2965,0x2985,0x2965,0x2985,0x2986,0x2945,0x3186,0x2966,0x2945,0x2985,0x31a6,0x2986,0x2965,0x2144,0x2145,0x2165,0x2144,0x2145,0x2985,0x2986,0x2144,0x1924,0x2145,0x2165,0x1924,0x2145,0x2145,0x2965,0x2966,0x2125,0x2965,0x2965,0x2965,0x2986,0x2945,0x2124,0x2144,0x2965,0x2945,0x2145,0x2104,0x2124,0x2104,0x2124,0x2965,0x2124,0x2124,0x2965,0x2965,0x2104,0x1903, +0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2144,0x2144,0x2986,0x2965,0x2145,0x2124,0x1904,0x2124,0x2945,0x2145,0x2965,0x2144,0x2145,0x2145,0x2165,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2966,0x2965,0x2965,0x2965,0x2945,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3186,0x2986,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2165,0x2985,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2985,0x29a6,0x2985,0x31a6,0x2985,0x2985,0x2165,0x2165,0x2986,0x2965,0x2985,0x31c6,0x31c6,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2966,0x31c7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x1904,0x0020,0x0861,0x0861,0x0041,0x0841,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x1082,0x52cd,0x94d2,0x3986,0x2945,0x20e3,0x18c3,0x2103,0x2124,0x2104,0x2124,0x2924,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18a3,0x2946,0x8c94,0x6b4e,0x0841,0x0861,0x18c3,0x2104,0x2104,0x2944,0x20e3,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x49c5,0x1082,0x0000,0x3186,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2945,0x3186,0x39e7,0x3186,0x2145,0x2966,0x2986,0x2986,0x2966,0x2945,0x2986,0x2986,0x2966,0x2986,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2165,0x29a6,0x31a6,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x2145,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2965,0x2165,0x2986,0x3186,0x2145,0x31a6,0x31a6,0x2945,0x3186,0x2145,0x2145,0x2986,0x2145,0x2985,0x31c7,0x2965,0x2145,0x2145,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2125,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2124,0x2144,0x2144,0x2124,0x2945,0x2945,0x2125,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904, +0x2104,0x2965,0x2125,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x29a6,0x2165,0x2145,0x2965,0x2965,0x2965,0x2145,0x2945,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x2145,0x2125,0x2945,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2185,0x2165,0x2165,0x2965,0x2125,0x2125,0x2125,0x2145,0x2965,0x2985,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2145,0x2165,0x2165,0x2165,0x2945,0x2986,0x29a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2945,0x2945,0x2966,0x2986,0x3186,0x2986,0x2165,0x2145,0x3186,0x3186,0x2985,0x2986,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x31c7,0x2966,0x2145,0x2966,0x2986,0x2986,0x3186,0x31c7,0x3186,0x3186,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x18e3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x0861,0x18c3,0x3a08,0x39e7,0x4208,0x39c6,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2104,0x2104,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x2945,0x2945,0x636d,0x6bae,0x10a2,0x0841,0x1082,0x18e3,0x18e3,0x39c6,0x39a6,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x18a3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x5288,0x1082,0x1082,0x18a2,0x3186,0x31a6,0x3186,0x3186,0x2986,0x31c7,0x2965,0x31a6,0x31c7,0x31a6,0x2145,0x2986,0x3186,0x31a6,0x2165,0x2965,0x2165,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x2985,0x2985,0x2986,0x2986,0x2965,0x3186,0x2965,0x2966,0x2986,0x2986,0x2985,0x2985,0x2165,0x2965,0x29a6,0x2965,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x3186,0x2966,0x2945,0x2966,0x2966,0x2985,0x31c6,0x2165,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2966,0x3186,0x3166,0x2945,0x2925,0x2125,0x2945,0x2945,0x2124,0x2145,0x2145,0x2965,0x2986,0x2945,0x2965,0x3186,0x2145,0x2124,0x2124,0x2124,0x2125,0x2945,0x2965,0x2144,0x2124,0x2965,0x2104,0x2124,0x2965,0x2965,0x3186,0x1903,0x2124, +0x2124,0x2125,0x2104,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x2124,0x2145,0x2145,0x2145,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2945,0x2145,0x2124,0x2965,0x2145,0x2966,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2165,0x2965,0x2965,0x2145,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2945,0x2945,0x2965,0x2985,0x2965,0x2965,0x2985,0x2185,0x2165,0x2965,0x3186,0x2985,0x2965,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2966,0x2966,0x2966,0x2965,0x2986,0x3186,0x2986,0x2965,0x2986,0x31c7,0x2986,0x2986,0x3186,0x2966,0x2965,0x2965,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x3187,0x2986,0x2986,0x2986,0x2966,0x3186,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x2103,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x0841,0x0861,0x18e3,0x2104,0x18c3,0x31c6,0x2944,0x2965,0x18c3,0x18c3,0x18e3,0x2944,0x2945,0x2924,0x2103,0x18c3,0x10a2,0x18a2,0x20e3,0x2124,0x39e7,0x2124,0x31e8,0x2125,0x0861,0x0861,0x18c2,0x18c2,0x2965,0x3186,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x6b2c,0x10a2,0x10a2,0x18e4,0x39a7,0x2986,0x3186,0x2965,0x2986,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2945,0x29a6,0x31c6,0x2965,0x2985,0x2986,0x31c6,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2986,0x2965,0x2985,0x2986,0x3186,0x2965,0x2965,0x2986,0x2965,0x2986,0x31c6,0x2165,0x2965,0x31a6,0x2945,0x2965,0x2165,0x29a6,0x2966,0x2945,0x2986,0x2986,0x2965,0x2965,0x39c7,0x31a6,0x2965,0x2165,0x2986,0x2986,0x2965,0x2965,0x2986,0x2145,0x2945,0x2966,0x3186,0x2966,0x2965,0x31a6,0x29a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2145,0x2965,0x2986,0x2966,0x2965,0x3186,0x2986,0x2945,0x2965,0x2944,0x2965,0x2965,0x2945,0x2986,0x2965,0x2965,0x2965,0x3186,0x2145,0x2124,0x2124,0x2125,0x2104,0x2965,0x2944,0x2124,0x2145,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124, +0x2124,0x2124,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2104,0x2124,0x1904,0x2124,0x2144,0x2124,0x2124,0x2965,0x2986,0x2124,0x2145,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2985,0x31c7,0x31a6,0x2124,0x2965,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2985,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x2965,0x2965,0x2124,0x39e7,0x3a07,0x2144,0x2965,0x2965,0x2945,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x2985,0x2165,0x2165,0x2965,0x2986,0x31c7,0x2986,0x2986,0x2965,0x2965,0x2986,0x2966,0x31c7,0x3186,0x2986,0x2986,0x2965,0x2945,0x3186,0x2986,0x2966,0x2965,0x2986,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2966,0x2986,0x2965,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x18c3,0x10c2,0x18c2,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x18c3,0x2944,0x2944,0x2124,0x18e3,0x18c3,0x18e3,0x18c3,0x2944,0x1903,0x2124,0x10a2,0x18e4,0x2987,0x1082,0x0841,0x1082,0x10a2,0x18c3,0x20e3,0x18e3,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x630c,0x18e3,0x1082,0x2124,0x39c7,0x2986,0x31c7,0x2165,0x2986,0x3186,0x2965,0x2165,0x2986,0x2966,0x2966,0x3186,0x39e7,0x2985,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x31a6,0x2965,0x31c7,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x29a6,0x2966,0x2965,0x31a6,0x2985,0x2965,0x2985,0x31a6,0x31a7,0x2966,0x2145,0x29a6,0x2965,0x2985,0x31a6,0x2986,0x3186,0x3186,0x2965,0x2945,0x2945,0x2965,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2945,0x2965,0x2965,0x2965,0x2165,0x2145,0x2165,0x2965,0x2965,0x2986,0x2985,0x2945,0x2965,0x2965,0x2985,0x2124,0x2145,0x2985,0x2965,0x31a6,0x2125,0x2124,0x2124,0x2124,0x2945,0x2945,0x2965,0x2945,0x2124,0x2965,0x2145,0x1904,0x2124,0x2124,0x2124,0x2145, +0x2125,0x2124,0x2145,0x2124,0x1903,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x2145,0x2124,0x2145,0x2965,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2985,0x2965,0x2165,0x2145,0x2145,0x2965,0x2966,0x2965,0x2165,0x2145,0x2986,0x2145,0x2965,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2125,0x2986,0x2986,0x2145,0x2986,0x2965,0x2986,0x29a6,0x2165,0x2986,0x29a6,0x3186,0x2985,0x2965,0x2965,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2965,0x2965,0x3186,0x2966,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31e7,0x2986,0x31a6,0x31c6,0x3a07,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x1924,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0841,0x2945,0x39e6,0x10a2,0x1082,0x0861,0x0841,0x0841,0x0861,0x18c3,0x1082,0x18c3,0x1082,0x18e3,0x18e3,0x2124,0x20e3,0x2103,0x20e3,0x2944,0x2104,0x18c3,0x18c3,0x18e3,0x2144,0x18c3,0x18e3,0x1082,0x18c3,0x10a2,0x2986,0x10c3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x4a8a,0x18e3,0x0020,0x18e3,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x2966,0x2986,0x29a6,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2985,0x2985,0x2965,0x2986,0x2165,0x2986,0x2145,0x2145,0x2966,0x2986,0x2965,0x2986,0x2966,0x3186,0x2985,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x2986,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2985,0x2965,0x2966,0x2966,0x2986,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2966,0x2165,0x2965,0x2965,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x2145,0x2985,0x2945,0x2965,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2945,0x3186,0x2945,0x2145,0x2144,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2145,0x2145,0x2165,0x2124,0x2965,0x2965,0x2124,0x2145,0x2144,0x2144,0x2124,0x2104,0x2945,0x2945,0x2124,0x2144,0x2124,0x2124, +0x2145,0x1904,0x1904,0x2104,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2125,0x2145,0x2145,0x2945,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2124,0x2945,0x2965,0x2165,0x2165,0x2165,0x2945,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2966,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2965,0x2986,0x2145,0x31a6,0x2986,0x2145,0x2986,0x2965,0x2986,0x2986,0x2165,0x2165,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2985,0x3186,0x2965,0x2966,0x3186,0x2986,0x3186,0x2986,0x2945,0x2965,0x3186,0x2966,0x3186,0x3186,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x0881,0x0881,0x18e3,0x18c3,0x10c3,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a3,0x39c7,0x4226,0x1082,0x1082,0x0861,0x0841,0x0841,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x2924,0x2104,0x2124,0x3165,0x2944,0x18e3,0x20e3,0x20e3,0x18e3,0x1082,0x10a3,0x1082,0x18c3,0x1082,0x1904,0x10a2,0x0841,0x0861,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x4208,0x10c2,0x0020,0x10c2,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2966,0x2965,0x29a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x31a6,0x2985,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x2965,0x2966,0x2965,0x2986,0x2966,0x2986,0x3186,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x31e7,0x2165,0x2986,0x2965,0x2985,0x31a6,0x3186,0x3186,0x2986,0x2965,0x29a6,0x31a6,0x31a6,0x29a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2145,0x31a6,0x31a6,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x3186,0x3186,0x3186,0x2145,0x2145,0x2986,0x2945,0x2945,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2124,0x31a6,0x3186,0x2945,0x2145,0x2965,0x2124,0x2165,0x2165,0x2125,0x2165,0x2986,0x2144,0x2945,0x2965,0x2104,0x2145,0x2965,0x2124,0x2145,0x2945,0x2145,0x2124,0x1904,0x2124, +0x2124,0x2104,0x2104,0x2104,0x2104,0x2125,0x2124,0x2145,0x2124,0x1904,0x2124,0x2145,0x2125,0x2124,0x2124,0x2145,0x2145,0x2965,0x2145,0x2145,0x2945,0x2965,0x2124,0x2945,0x2144,0x2124,0x2965,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2965,0x2965,0x2145,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x3186,0x2965,0x2165,0x2985,0x2965,0x2965,0x2965,0x29a6,0x31a6,0x2965,0x2144,0x3186,0x31a6,0x2986,0x2965,0x2966,0x2966,0x2145,0x2145,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x2965,0x2986,0x2965,0x2986,0x31c7,0x2966,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2986,0x3186,0x2986,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x3186,0x18c3,0x0841,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x2104,0x2945,0x2104,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x18a2,0x18a2,0x18e3,0x2104,0x2945,0x3185,0x2944,0x2103,0x18c3,0x18e3,0x1082,0x10a2,0x1082,0x1082,0x18c2,0x1082,0x18a2,0x1082,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0841,0x0861,0x0861,0x0861,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x39c7,0x10a2,0x0040,0x10a2,0x3186,0x3186,0x2985,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2965,0x2965,0x3186,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2986,0x2965,0x2965,0x2145,0x2965,0x31a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x2986,0x2985,0x2965,0x31c6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2124,0x2945,0x2965,0x2965,0x2145,0x31c6,0x31a6,0x2965,0x2985,0x31a6,0x29a6,0x2965,0x2945,0x2945,0x31c7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2986,0x2986,0x2965,0x2124,0x2145,0x2145,0x2145,0x2966,0x2125,0x2966,0x2965,0x2145,0x2965,0x2965,0x2124,0x2145,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2145,0x1904, +0x2124,0x2124,0x2124,0x2125,0x2145,0x2125,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2145,0x1924,0x2124,0x2145,0x2966,0x2145,0x2145,0x2965,0x2945,0x2124,0x2124,0x2145,0x2145,0x31a6,0x2985,0x2124,0x2945,0x2165,0x2144,0x2145,0x2965,0x2965,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x3186,0x2985,0x2965,0x2144,0x2145,0x2965,0x2965,0x2985,0x2965,0x31c6,0x39e7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2966,0x2986,0x2145,0x2145,0x2165,0x2165,0x2165,0x2985,0x2965,0x2165,0x2985,0x29a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2145,0x2986,0x31c7,0x2966,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2965,0x31a6,0x18c3,0x0020,0x10a2,0x2104,0x18e3,0x10c2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x18e3,0x20e4,0x18c3,0x18a3,0x10a3,0x18a3,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x2103,0x2104,0x2944,0x20e3,0x18c3,0x18c3,0x18e3,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0020,0x0841,0x0861,0x0861,0x1081,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x31a6,0x1082,0x0840,0x18c3,0x3186,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2985,0x2165,0x2965,0x2986,0x2986,0x2986,0x2965,0x2165,0x2965,0x2965,0x31c6,0x31c6,0x2965,0x3186,0x39c7,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2965,0x2945,0x2965,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x29a6,0x2986,0x2145,0x29a6,0x2986,0x31a6,0x2985,0x2965,0x2965,0x31a6,0x31c6,0x31c6,0x29a6,0x2986,0x2965,0x2986,0x31a7,0x2966,0x2985,0x31a6,0x2986,0x2165,0x3186,0x3186,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x29a6,0x2986,0x2965,0x2145,0x2965,0x31c6,0x3186,0x2986,0x2985,0x2965,0x2124,0x2945,0x2144,0x2965,0x2986,0x2965,0x2145,0x2145,0x2145,0x2966,0x2965,0x2145,0x2125,0x2145,0x2125,0x2124,0x2124,0x2985,0x2145,0x2104,0x2124,0x2144,0x2124,0x2124,0x1904,0x2145, +0x2124,0x2124,0x2145,0x2144,0x2144,0x2124,0x1904,0x2124,0x2125,0x2124,0x2124,0x1904,0x2124,0x2125,0x2145,0x2145,0x2124,0x2124,0x2145,0x2945,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x31a6,0x2124,0x2145,0x2145,0x2144,0x2145,0x2965,0x2986,0x2986,0x2145,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x3186,0x2965,0x2145,0x2965,0x2986,0x2965,0x2945,0x2145,0x2945,0x2965,0x2985,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2966,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2985,0x31c6,0x29a6,0x10a2,0x0020,0x0861,0x18e3,0x1904,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x18e3,0x18e4,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x18a2,0x2103,0x2924,0x2924,0x20e3,0x2104,0x18e3,0x18c3,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x1082,0x10a2,0x1082,0x1082,0x18c3,0x10a2,0x0020,0x0020,0x0841,0x1082,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x2944,0x0861,0x0000,0x10c3,0x31c6,0x3186,0x2985,0x3186,0x31c6,0x3186,0x2965,0x2165,0x2986,0x2985,0x2965,0x2966,0x2965,0x2965,0x3186,0x3186,0x31c7,0x2985,0x29a6,0x2986,0x2965,0x29a6,0x2965,0x2986,0x3186,0x2965,0x2986,0x2986,0x2965,0x3186,0x2986,0x3186,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2986,0x2145,0x2986,0x2986,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2165,0x2165,0x2986,0x2185,0x2165,0x2965,0x2965,0x2145,0x2986,0x3186,0x2965,0x2965,0x2965,0x2124,0x2986,0x2965,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2125,0x2125,0x2124,0x2144,0x2985,0x2965,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2144,0x2124, +0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2945,0x2145,0x2145,0x2125,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x2965,0x2965,0x2145,0x2945,0x2124,0x2925,0x2144,0x2124,0x2124,0x2965,0x2945,0x2965,0x2145,0x2945,0x2985,0x2965,0x2145,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2144,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2985,0x29a6,0x29a6,0x0882,0x0020,0x0841,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x1082,0x18c3,0x10a2,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x2145,0x10a2,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e3,0x2944,0x20e3,0x18e3,0x2944,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x3186,0x18e3,0x0020,0x0020,0x0020,0x0861,0x1082,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x2103,0x0861,0x0000,0x18e3,0x4208,0x39c7,0x3186,0x31a7,0x3186,0x3186,0x2986,0x2966,0x29a6,0x2986,0x2965,0x2966,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x39e7,0x2985,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2986,0x31a6,0x31c6,0x2965,0x2945,0x4a69,0x39e7,0x2986,0x31a7,0x2966,0x2986,0x2945,0x2986,0x3186,0x2965,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2986,0x2965,0x2945,0x2986,0x31a6,0x2965,0x2965,0x2145,0x2965,0x29a6,0x29a6,0x2165,0x2165,0x2145,0x2165,0x2965,0x2945,0x2986,0x2986,0x2145,0x2965,0x3186,0x2965,0x2965,0x2985,0x2145,0x2144,0x2145,0x2145,0x2965,0x2965,0x2945,0x2124,0x2145,0x2965,0x3186,0x2124,0x2144,0x2945,0x2965,0x2965,0x2965,0x2124,0x2965,0x2124,0x2145, +0x2124,0x2945,0x2145,0x2145,0x2125,0x2124,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2125,0x2125,0x2145,0x2145,0x2125,0x2124,0x2145,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2945,0x2945,0x2145,0x2144,0x2124,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2965,0x2985,0x2145,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2945,0x2945,0x3186,0x3186,0x2985,0x2965,0x2945,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2985,0x2945,0x2986,0x2986,0x2986,0x2966,0x2985,0x2986,0x2965,0x2966,0x2965,0x2986,0x31a6,0x2986,0x31c6,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2965,0x2966,0x39e7,0x31a6,0x2965,0x31a6,0x3186,0x1082,0x0020,0x0040,0x1082,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2103,0x10a2,0x1082,0x18a2,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0020,0x0020,0x0861,0x18e4,0x10a3,0x1082,0x0861,0x18e3,0x2944,0x2104,0x10a3,0x18c3,0x2966,0x2104,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x18a2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1062,0x1082,0x0841,0x0861,0x18e3,0x10a2,0x1082,0x31a6,0x5289,0x2104,0x1082,0x0020,0x0020,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18a2,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18e3,0x0841,0x0000,0x18c3,0x31c7,0x31a6,0x31c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x31c6,0x29a6,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x2985,0x29a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2945,0x2965,0x2966,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x3a08,0x4228,0x31a7,0x2986,0x2986,0x2986,0x31a6,0x39c7,0x2986,0x2986,0x39e7,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x2145,0x2965,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2966,0x2945,0x31a6,0x2145,0x2145,0x2965,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2986,0x2124,0x31c6,0x31c7,0x2965,0x2965,0x2965,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x31a6,0x2965,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x31a6,0x2144,0x2104, +0x2124,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2145,0x2145,0x2145,0x2144,0x2145,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2165,0x2144,0x2144,0x2145,0x2965,0x2124,0x2945,0x2945,0x2965,0x2145,0x2124,0x2945,0x2145,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2165,0x2145,0x2965,0x2965,0x2985,0x2985,0x2165,0x2165,0x2985,0x2986,0x2965,0x2966,0x2965,0x2945,0x2945,0x2986,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x2165,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x2985,0x2145,0x2965,0x31a6,0x2965,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2966,0x3186,0x2965,0x31a7,0x31a7,0x3186,0x39c7,0x2965,0x0861,0x0000,0x0020,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2124,0x18c3,0x1082,0x10a2,0x18a2,0x18a2,0x1081,0x0861,0x0861,0x0841,0x0020,0x0841,0x18e3,0x18e3,0x1082,0x0861,0x0841,0x2104,0x2965,0x2124,0x18e3,0x2104,0x2966,0x2986,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1081,0x1082,0x1062,0x0841,0x1082,0x1904,0x10a3,0x10a2,0x2124,0x4207,0x20e3,0x10a2,0x0861,0x0020,0x0020,0x0841,0x1082,0x0861,0x10a2,0x18e3,0x18a2,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x18c2,0x0841,0x0020,0x10a2,0x31a6,0x29a6,0x31c7,0x31a7,0x3186,0x3187,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2986,0x3186,0x31a6,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2965,0x2985,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2945,0x2145,0x2965,0x3186,0x31a7,0x2986,0x2985,0x2965,0x39e7,0x3186,0x3186,0x2966,0x3186,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x2986,0x3186,0x2945,0x2965,0x2966,0x2145,0x2965,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2165,0x2965,0x2965,0x2945,0x2145,0x2165,0x2985,0x2965,0x3186,0x31a6,0x2985,0x2986,0x2145,0x2945,0x2144,0x2945,0x2124,0x2145,0x2945,0x2144,0x2965,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x2986,0x2965,0x2144, +0x2124,0x2945,0x2145,0x2945,0x2144,0x2945,0x2145,0x2145,0x2145,0x2145,0x2144,0x2124,0x2945,0x2965,0x2145,0x2145,0x2124,0x2145,0x2965,0x1904,0x2124,0x2144,0x2145,0x2965,0x2945,0x2144,0x2145,0x2145,0x2965,0x2144,0x2124,0x2124,0x2144,0x2965,0x2165,0x2965,0x2985,0x2145,0x2145,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2985,0x2986,0x2966,0x2966,0x2965,0x2985,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2985,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2965,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31a6,0x3185,0x2985,0x2986,0x2165,0x2165,0x29a6,0x2966,0x2966,0x3186,0x2985,0x2965,0x2945,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x2985,0x0861,0x0020,0x0040,0x0861,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2965,0x2965,0x3165,0x2965,0x2966,0x39e8,0x2104,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x18c3,0x18e4,0x18c3,0x10a2,0x18e3,0x2965,0x18a2,0x18c2,0x18a2,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x10a2,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0020,0x0000,0x10a2,0x31c6,0x29c6,0x2986,0x31a6,0x3186,0x3186,0x31c7,0x2966,0x3186,0x2986,0x2986,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2985,0x2965,0x31c7,0x29a6,0x2145,0x2985,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2965,0x2966,0x31a7,0x31c7,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a7,0x2945,0x3186,0x2966,0x2145,0x2965,0x2985,0x2965,0x2965,0x2165,0x2145,0x2945,0x2965,0x2986,0x2985,0x2965,0x2124,0x2965,0x2985,0x1903,0x2965,0x2986,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x2986,0x2144,0x2124,0x2945,0x2124,0x2965,0x2945,0x2124, +0x2104,0x2124,0x2104,0x2124,0x2124,0x2144,0x2145,0x2144,0x2124,0x2144,0x2144,0x2986,0x2145,0x2145,0x2145,0x2965,0x2144,0x2144,0x2144,0x2124,0x2144,0x2986,0x2966,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2965,0x2985,0x2165,0x2985,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2985,0x3186,0x31a7,0x2965,0x2965,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2986,0x2966,0x2965,0x2986,0x29a6,0x29a6,0x2986,0x2985,0x2985,0x2986,0x2986,0x2985,0x2965,0x2986,0x31a6,0x3186,0x29a6,0x29a6,0x2186,0x2185,0x29a6,0x2986,0x2966,0x2965,0x2985,0x2985,0x2985,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2986,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x0881,0x0020,0x0841,0x0861,0x10a2,0x18e3,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2104,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0020,0x0841,0x2104,0x18c3,0x1082,0x0841,0x0020,0x0841,0x2944,0x2965,0x39c7,0x5248,0x39c7,0x2986,0x4229,0x528a,0x18a2,0x0841,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x10a3,0x2945,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x0861,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18e3,0x18c2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x18c3,0x18a2,0x0841,0x0020,0x1082,0x2986,0x31c6,0x31c7,0x2985,0x31c6,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x2986,0x2986,0x2165,0x31c7,0x2986,0x2986,0x31a6,0x3186,0x2985,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2986,0x39c7,0x3186,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3186,0x31a7,0x3186,0x2965,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2985,0x2965,0x2144,0x2965,0x2965,0x2945,0x2965,0x2165,0x2965,0x2144,0x2965,0x29a6,0x2145,0x2965,0x2986,0x2145,0x2125,0x2965,0x2965,0x2145,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2144,0x2124,0x2985,0x2945, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x1904,0x2144,0x2965,0x2124,0x2125,0x2145,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x31a6,0x2966,0x2125,0x2165,0x2124,0x2125,0x2145,0x2145,0x2145,0x2945,0x2966,0x2966,0x2945,0x2965,0x2965,0x2965,0x2966,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x31a7,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2966,0x2966,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2165,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2966,0x2986,0x2986,0x2185,0x2185,0x2986,0x2966,0x2986,0x2986,0x3186,0x2985,0x2965,0x2986,0x2966,0x3186,0x3186,0x2986,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x29a6,0x2986,0x0882,0x0020,0x0841,0x1082,0x18c3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2124,0x10a2,0x0862,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0020,0x1082,0x2944,0x2945,0x4207,0x5289,0x5289,0x39c7,0x4208,0x6b6d,0x4207,0x1061,0x0861,0x1082,0x18a2,0x18a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x1082,0x0841,0x1082,0x31a7,0x3186,0x2104,0x20e4,0x2104,0x2945,0x2945,0x0841,0x0861,0x18c3,0x18a3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x10a2,0x0841,0x0020,0x10a2,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x31c7,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x3186,0x2965,0x29a6,0x31a6,0x31a6,0x31a7,0x2966,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x2986,0x3186,0x2986,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x2985,0x31a6,0x3186,0x2966,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x3186,0x2986,0x2986,0x29a6,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x2965,0x2966,0x2165,0x2965,0x2945,0x2144,0x2986,0x2985,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x2145,0x31c6,0x31a6,0x2945,0x2966,0x2966,0x2965,0x2145,0x2144,0x2985,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965, +0x2124,0x2124,0x1924,0x1924,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2945,0x2945,0x2965,0x31a6,0x2145,0x2125,0x2125,0x2125,0x2125,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2125,0x2125,0x2945,0x2966,0x2945,0x2986,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2965,0x31a6,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2965,0x3166,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2986,0x2986,0x3186,0x2986,0x3166,0x31a6,0x31a6,0x2985,0x2945,0x2966,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2986,0x2965,0x29a6,0x29a6,0x29a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2985,0x2986,0x31a6,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x0861,0x0020,0x0841,0x1082,0x18e3,0x2104,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x0841,0x0020,0x0841,0x18e4,0x18c3,0x1082,0x0841,0x0020,0x0821,0x18c3,0x2944,0x2965,0x39c6,0x4207,0x5aea,0x4208,0x39e8,0x4a6a,0x5aeb,0x2945,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0861,0x2986,0x4229,0x3186,0x2946,0x2945,0x2945,0x31a6,0x2924,0x0020,0x0841,0x1082,0x18c3,0x1061,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c3,0x18e3,0x18c3,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0841,0x0000,0x18c3,0x39c7,0x2966,0x31a7,0x39e8,0x2966,0x31a7,0x3a08,0x2986,0x2966,0x2986,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x3186,0x3186,0x3186,0x3186,0x39e7,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2965,0x31a6,0x31c6,0x2986,0x2165,0x31a6,0x3186,0x3186,0x2965,0x3186,0x2986,0x2985,0x31a6,0x3186,0x2965,0x2966,0x2966,0x31a7,0x3186,0x2945,0x2965,0x3186,0x2945,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x3186,0x2144,0x2965,0x2986,0x2985,0x31a6,0x2966,0x2145,0x2144,0x2165,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2945,0x2985,0x2965,0x2124,0x2965,0x2965,0x2945,0x2145,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2124,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2124, +0x2945,0x2124,0x2124,0x2124,0x2945,0x2124,0x2145,0x2144,0x2144,0x31a6,0x2985,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2125,0x2124,0x2145,0x2145,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2945,0x2165,0x2965,0x2945,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2966,0x2965,0x2965,0x2985,0x2985,0x2965,0x2965,0x2986,0x3186,0x2966,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2165,0x29a6,0x31e7,0x2985,0x2986,0x29a6,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x2965,0x2986,0x2985,0x2985,0x3186,0x3186,0x31a7,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x31a6,0x1082,0x0020,0x0841,0x0861,0x18c3,0x2104,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0861,0x0841,0x0020,0x0861,0x2104,0x10a2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2124,0x3185,0x39a6,0x3185,0x4a48,0x4a48,0x4a28,0x39a7,0x4208,0x3a08,0x18e3,0x0861,0x0841,0x1061,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x1062,0x0861,0x0861,0x2104,0x39e8,0x39e8,0x31a7,0x31a7,0x31a7,0x31a6,0x39c6,0x2103,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18a3,0x18a2,0x18c3,0x18c3,0x0841,0x0020,0x10a2,0x4228,0x31a7,0x31a7,0x39e7,0x31a7,0x31c7,0x31c7,0x2986,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x31a6,0x31a7,0x31a7,0x3186,0x3186,0x31c6,0x2986,0x31c7,0x3186,0x2986,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2965,0x2985,0x2986,0x2965,0x2165,0x31a6,0x2985,0x2965,0x2986,0x3186,0x3186,0x3186,0x2965,0x31a6,0x31c7,0x31a6,0x2966,0x31a6,0x31a7,0x2966,0x2986,0x2986,0x2966,0x31c7,0x31c7,0x2965,0x2966,0x3186,0x2966,0x2965,0x31a6,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2145,0x2144,0x2985,0x2965,0x2965,0x2145,0x2965,0x2144,0x2145,0x2144,0x2144,0x2124,0x2104, +0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2145,0x2125,0x1924,0x2165,0x2145,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2124,0x2145,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2965,0x2144,0x2985,0x2986,0x2165,0x2165,0x2165,0x2985,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x31a6,0x2986,0x2966,0x2965,0x2965,0x2965,0x2165,0x2985,0x2965,0x31a6,0x31c7,0x3186,0x3186,0x2986,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2985,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2985,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a6,0x31a7,0x31a6,0x31a7,0x31a6,0x2965,0x1082,0x0020,0x0841,0x0841,0x10a2,0x2944,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0861,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x0861,0x0020,0x0020,0x18c3,0x2104,0x2124,0x3185,0x31a5,0x2965,0x31a6,0x4a48,0x5289,0x31a6,0x2925,0x2966,0x2945,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x18e3,0x2145,0x2966,0x31a6,0x39c7,0x4208,0x39e7,0x39e7,0x39a6,0x18e3,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c2,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0020,0x10a2,0x3a08,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a7,0x31a6,0x2965,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x2965,0x31a7,0x3186,0x3186,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2966,0x2965,0x2986,0x29a6,0x31c7,0x31a6,0x2985,0x2985,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x31c6,0x2986,0x2965,0x2965,0x3186,0x2986,0x3186,0x2966,0x2966,0x2986,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x39c7,0x3186,0x2965,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31c7,0x31a6,0x31c7,0x2985,0x3186,0x31a7,0x2966,0x2966,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2945,0x2965,0x3186,0x2945,0x2986,0x2145,0x2145,0x2965,0x2965,0x2145,0x3186,0x3186,0x2945,0x2945,0x31a6,0x2985,0x2144,0x2165,0x2145,0x2124,0x2124,0x2124,0x2965,0x2144,0x1904, +0x2124,0x2124,0x2145,0x2124,0x2124,0x2965,0x2985,0x2965,0x2165,0x2144,0x1904,0x2144,0x2945,0x2145,0x2145,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x3186,0x2965,0x2145,0x2124,0x2145,0x2124,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2965,0x2986,0x2985,0x2185,0x2165,0x2186,0x31c7,0x2986,0x2965,0x2965,0x2945,0x2966,0x2965,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2986,0x2965,0x2966,0x2965,0x31a6,0x39c7,0x2986,0x3186,0x31a7,0x2986,0x2966,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0841,0x18e3,0x10c2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2104,0x2924,0x3186,0x31a5,0x2945,0x3186,0x4a28,0x4a48,0x3186,0x2104,0x20e4,0x2104,0x18e3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1904,0x2104,0x2125,0x2966,0x39e8,0x630b,0x4a27,0x39e7,0x31a6,0x18e3,0x0020,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0881,0x0020,0x10c2,0x31c7,0x2986,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x2965,0x31a7,0x31a6,0x31c6,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2986,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2986,0x2986,0x3186,0x3186,0x2986,0x2966,0x2945,0x2945,0x3186,0x2986,0x3186,0x2986,0x29a6,0x29a6,0x2966,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2965,0x3186,0x3186,0x2965,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x2986,0x2966,0x3186,0x2966,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2945,0x2965,0x2965,0x2945,0x3186,0x31c7,0x2165,0x2986,0x2145,0x2145,0x2966,0x2966,0x3186,0x2965,0x2104,0x2986,0x2145,0x2145,0x2945,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124, +0x2145,0x2124,0x2145,0x2144,0x2145,0x2145,0x2145,0x2165,0x2144,0x2145,0x2165,0x2145,0x2965,0x2965,0x2145,0x2965,0x2144,0x2165,0x2965,0x2165,0x2965,0x2986,0x2945,0x2145,0x2965,0x2145,0x2144,0x2945,0x2945,0x2986,0x2965,0x2945,0x2965,0x2966,0x2985,0x2965,0x2165,0x2165,0x2986,0x31a6,0x2986,0x2965,0x2966,0x2965,0x2966,0x2985,0x2985,0x2986,0x2986,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2965,0x2986,0x2966,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2986,0x29a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x29a6,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18c3,0x0861,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0861,0x20e4,0x10a2,0x1082,0x0841,0x0020,0x1082,0x2104,0x20e4,0x2945,0x39a6,0x3185,0x2965,0x3185,0x4207,0x31a6,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e4,0x18e4,0x2104,0x2945,0x39e8,0x62ea,0x4207,0x39c6,0x3185,0x18e3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18e3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0882,0x0020,0x10a2,0x4208,0x39c7,0x31a7,0x39c7,0x31c6,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x39e7,0x31c7,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x39c6,0x3186,0x31a6,0x39e7,0x31a7,0x31a7,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x3186,0x31a6,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2986,0x29a6,0x2966,0x3186,0x31c7,0x31c7,0x2145,0x31c7,0x31c7,0x2965,0x29a6,0x29a6,0x2966,0x2986,0x31c7,0x2966,0x2966,0x31a6,0x2965,0x2965,0x3186,0x2986,0x2965,0x2965,0x2986,0x2965,0x2144,0x31a6,0x2985,0x2945,0x2945,0x2965,0x31a6,0x2965,0x2986,0x3186,0x39c7,0x3186,0x2986,0x31a6,0x2145,0x2145,0x2985,0x2165,0x2965,0x2945,0x2945,0x2124,0x2965,0x2124,0x2144,0x1924, +0x2144,0x2144,0x2144,0x2144,0x2165,0x2145,0x2124,0x2165,0x2145,0x2144,0x2165,0x2145,0x2945,0x2145,0x2124,0x2145,0x2965,0x2165,0x2165,0x2145,0x2144,0x2145,0x2165,0x2145,0x2145,0x2144,0x2965,0x2945,0x2945,0x2986,0x2986,0x2986,0x2965,0x2966,0x2985,0x2986,0x2965,0x2965,0x2966,0x3186,0x2986,0x2965,0x3186,0x2985,0x31a6,0x2986,0x2165,0x2965,0x2985,0x2986,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x2965,0x2145,0x31a6,0x3186,0x2965,0x2985,0x39e7,0x3186,0x2985,0x31a6,0x2985,0x29a6,0x2965,0x2986,0x3186,0x31c7,0x29a6,0x2986,0x3186,0x2966,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x29a6,0x2986,0x2966,0x3186,0x2966,0x2986,0x31a7,0x31c7,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x0882,0x0040,0x0861,0x0861,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x1082,0x2104,0x10a2,0x0861,0x0020,0x0841,0x18e3,0x2104,0x18e3,0x2965,0x39c6,0x3165,0x2965,0x2965,0x3185,0x2944,0x2104,0x39c6,0x3165,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e4,0x18e4,0x2104,0x2966,0x4249,0x5289,0x41c6,0x39c6,0x2944,0x18c3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18e3,0x1082,0x0020,0x0882,0x4228,0x31c7,0x2986,0x4208,0x31c6,0x2986,0x31c7,0x31a7,0x29a6,0x31c7,0x31c7,0x31a7,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31c7,0x39c7,0x39c7,0x29a6,0x31a6,0x3186,0x3186,0x31a7,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x2986,0x31a6,0x2985,0x2986,0x31c7,0x39e7,0x31c7,0x31a7,0x3186,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x3186,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x2986,0x2966,0x31a6,0x3186,0x2986,0x2986,0x2966,0x2145,0x2965,0x2965,0x2945,0x2986,0x2986,0x2965,0x2945,0x2985,0x2985,0x2144,0x2986,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2144,0x2945,0x2965,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145, +0x2144,0x2144,0x2124,0x2145,0x2145,0x2144,0x2145,0x2145,0x2145,0x2144,0x2124,0x2965,0x2124,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2165,0x2145,0x2144,0x2965,0x2965,0x2965,0x2165,0x2965,0x2945,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2986,0x2145,0x2965,0x2986,0x2986,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x3186,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2985,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x31c6,0x31a6,0x31a6,0x2985,0x2986,0x31c6,0x29a6,0x2965,0x3186,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x29a6,0x0882,0x0040,0x0861,0x10a2,0x10a2,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x10a3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2104,0x18e3,0x2124,0x2985,0x2965,0x2945,0x2965,0x2945,0x2124,0x18e3,0x4a47,0x3185,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e4,0x2124,0x3186,0x4228,0x4a69,0x41e7,0x31a6,0x20e3,0x18c3,0x1082,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x10a2,0x0861,0x0861,0x31c6,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x29a6,0x39e7,0x31a7,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x39c7,0x39e8,0x3186,0x39e7,0x39c7,0x2986,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x2965,0x31a7,0x3186,0x3186,0x39c7,0x39e7,0x31c7,0x31a7,0x2986,0x29a6,0x31a6,0x31c6,0x31c6,0x2986,0x31a7,0x31a7,0x39c7,0x2966,0x3186,0x3186,0x3a07,0x31e7,0x31c7,0x31a6,0x2966,0x31a7,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x31a7,0x2986,0x2986,0x2966,0x2125,0x2966,0x2986,0x2965,0x2965,0x2986,0x2145,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2165,0x2145,0x3186,0x31a7,0x2945,0x2965,0x2986,0x2985,0x2945,0x2965,0x2144,0x2986,0x2145,0x2124,0x2145,0x2145,0x2144,0x2965, +0x2145,0x2124,0x2124,0x2145,0x2945,0x2945,0x2124,0x2145,0x2965,0x2965,0x2945,0x2144,0x2965,0x2985,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2966,0x2966,0x2965,0x2145,0x2145,0x2985,0x2986,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c6,0x3186,0x2986,0x2985,0x2965,0x3186,0x3186,0x2986,0x2986,0x2145,0x2145,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2966,0x2986,0x3186,0x31a7,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c7,0x2986,0x31a6,0x10a2,0x0040,0x0861,0x18c3,0x18c3,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x18c2,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2944,0x2104,0x18e3,0x2104,0x2944,0x2945,0x2944,0x2964,0x2944,0x2104,0x2103,0x4227,0x2123,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x3186,0x39c7,0x4a48,0x39e7,0x2965,0x10a2,0x18c3,0x18a2,0x0020,0x0020,0x0841,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x39e7,0x39e8,0x31a6,0x39e8,0x31c7,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31c7,0x31a7,0x4228,0x31c6,0x3186,0x31c7,0x31c7,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2966,0x3186,0x31a6,0x39c7,0x31c7,0x31c7,0x31c7,0x31c7,0x2986,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x3186,0x2986,0x31a6,0x39e8,0x31a6,0x2985,0x31c6,0x2965,0x4228,0x39c7,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x3186,0x2965,0x2145,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2966,0x3186,0x2986,0x2945,0x2144,0x2965,0x2945,0x2965,0x2145,0x2165,0x2986,0x2945,0x2145,0x2144,0x2965,0x2945, +0x1904,0x2144,0x2124,0x2145,0x2945,0x2945,0x2144,0x2145,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2144,0x2965,0x2986,0x2986,0x2966,0x2966,0x3186,0x2965,0x2965,0x2966,0x3186,0x39e7,0x2986,0x2985,0x2986,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2145,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x29a6,0x31e7,0x2986,0x31a6,0x31c6,0x31a6,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2985,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a7,0x31a7,0x31a6,0x31c7,0x29a6,0x29a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x3186,0x10a2,0x0841,0x10a2,0x18c3,0x18e4,0x29c7,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e4,0x2104,0x10a2,0x0861,0x0020,0x0861,0x2945,0x2104,0x18e3,0x2104,0x2944,0x2944,0x2124,0x2944,0x2944,0x2103,0x2104,0x39c6,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1081,0x10a2,0x18c3,0x1082,0x18e3,0x3186,0x3185,0x18c3,0x2124,0x2124,0x3185,0x2923,0x18c3,0x2104,0x2124,0x2945,0x3186,0x39c7,0x4207,0x3186,0x2104,0x10a2,0x18c3,0x18c3,0x0841,0x0020,0x0020,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a3,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18c3,0x18e3,0x2103,0x18e3,0x1082,0x0861,0x39c7,0x39c7,0x3186,0x39c7,0x3186,0x31a7,0x39a7,0x39a7,0x3186,0x3186,0x39a7,0x4208,0x31a6,0x2985,0x2986,0x29a7,0x31c7,0x2986,0x29a7,0x3186,0x39a7,0x3186,0x2966,0x31a7,0x31a6,0x3186,0x2986,0x3186,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2986,0x39c7,0x31a7,0x31a7,0x31a7,0x31a7,0x2966,0x31a7,0x2965,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x39c7,0x31a6,0x31c7,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2165,0x2986,0x2986,0x2986,0x2145,0x31c6,0x4228,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2165,0x2124,0x2965,0x2144,0x2145,0x2124,0x2965,0x2965, +0x2144,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2144,0x2144,0x2965,0x2145,0x2145,0x2145,0x2965,0x2966,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2985,0x2985,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x3186,0x2986,0x2986,0x2966,0x31e7,0x39e7,0x39e7,0x2965,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x39c7,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x3186,0x29a6,0x31a6,0x2965,0x2985,0x29a6,0x2985,0x31a6,0x2986,0x29a7,0x29a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x31a7,0x31c7,0x31a6,0x1082,0x0861,0x10a2,0x18e3,0x10c2,0x21a5,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0020,0x18e4,0x2104,0x1082,0x0841,0x0841,0x0861,0x2965,0x2104,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2924,0x2924,0x18e3,0x2104,0x3185,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x18c3,0x2124,0x10a2,0x2104,0x4207,0x4a27,0x2924,0x2944,0x2124,0x39a5,0x2923,0x18c3,0x2104,0x2125,0x2965,0x3186,0x39c6,0x39a6,0x2945,0x18e3,0x1082,0x18c3,0x18e3,0x0841,0x0020,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a2,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x20e3,0x1904,0x10a2,0x0861,0x31c7,0x4208,0x31a7,0x31a7,0x4208,0x31a7,0x31a7,0x39e8,0x39e8,0x39e8,0x31a7,0x39e8,0x31a6,0x31a7,0x31a7,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x39c7,0x2986,0x2986,0x31a7,0x31a7,0x2966,0x3186,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x39a7,0x31a6,0x31c7,0x2986,0x29a6,0x31a7,0x39e7,0x31a6,0x31a6,0x2965,0x31c7,0x31e7,0x31e7,0x39e7,0x31a6,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x3187,0x2986,0x2946,0x31c7,0x2966,0x2966,0x3186,0x31c6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x31c7,0x31a6,0x2945,0x31c6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x2945,0x31a6,0x39c7,0x2966,0x3186,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2145,0x2985,0x2986,0x2144,0x2124,0x1904,0x2965,0x2144, +0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2145,0x2145,0x2945,0x2145,0x2165,0x2165,0x2144,0x2144,0x2145,0x2144,0x2144,0x2986,0x2985,0x29a6,0x2165,0x2145,0x2965,0x2965,0x3186,0x2986,0x2965,0x2986,0x2985,0x2145,0x2945,0x2966,0x2966,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2986,0x2165,0x2145,0x2986,0x2986,0x2986,0x29a6,0x2966,0x2985,0x31a6,0x3a07,0x2986,0x2985,0x31a6,0x31a6,0x2165,0x31a6,0x31a7,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x29a6,0x29a6,0x2165,0x2965,0x2986,0x29a6,0x29a6,0x2165,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31e7,0x10c3,0x0041,0x10c2,0x18e3,0x18c3,0x2985,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2104,0x1082,0x0841,0x0841,0x0861,0x2945,0x2104,0x18e3,0x18e3,0x2124,0x2104,0x2103,0x2104,0x2124,0x18c3,0x2103,0x2944,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2124,0x18a2,0x18a3,0x2104,0x2944,0x18e3,0x18c3,0x18e3,0x2965,0x18e2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x31a6,0x2944,0x2104,0x18e3,0x1082,0x18e4,0x2104,0x0841,0x0841,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18c3,0x18c3,0x20e4,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2104,0x10a2,0x0881,0x39e7,0x39e7,0x31e7,0x31a7,0x39e8,0x2986,0x2986,0x31c7,0x39e8,0x3a08,0x2986,0x3186,0x3186,0x31a7,0x39c7,0x31c7,0x31a6,0x2986,0x29a6,0x29a6,0x31c6,0x31a6,0x31c7,0x31c7,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x3a08,0x31c7,0x3186,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x2986,0x2986,0x31a6,0x39e8,0x2986,0x3186,0x31c7,0x31e7,0x31a6,0x2965,0x3186,0x31a6,0x31a7,0x2986,0x2986,0x2985,0x29a6,0x31c6,0x39e7,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2965,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x2945,0x2145,0x29a6,0x2985,0x2986,0x3186,0x2124,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2986,0x2965,0x2145,0x2145,0x2144, +0x2945,0x2144,0x2144,0x2144,0x2125,0x2966,0x2965,0x2125,0x2145,0x2145,0x2945,0x2986,0x2965,0x2985,0x2145,0x2165,0x2165,0x2144,0x2144,0x2965,0x2165,0x2985,0x2985,0x2144,0x2145,0x2945,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x3186,0x2986,0x2986,0x31a6,0x3165,0x3165,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x29a6,0x2966,0x2986,0x31c7,0x2186,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2985,0x2985,0x2986,0x2966,0x2965,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x3186,0x2986,0x2985,0x2985,0x2986,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31c7,0x29a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2986,0x29a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x3207,0x10c3,0x0882,0x18c3,0x2104,0x18e4,0x29a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2124,0x1082,0x0861,0x0841,0x0841,0x2945,0x2124,0x18e3,0x18c3,0x2103,0x18e3,0x18e3,0x20e3,0x2104,0x18c3,0x20e3,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x2124,0x10a2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x2965,0x18e3,0x20e3,0x18e3,0x1082,0x2104,0x2124,0x0841,0x0041,0x0841,0x1082,0x18e4,0x10a3,0x0020,0x0041,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2124,0x1081,0x10a2,0x4208,0x31c7,0x4228,0x31a7,0x2987,0x31c7,0x31c7,0x31a7,0x29a6,0x31a6,0x31a7,0x3186,0x3186,0x31a7,0x31e7,0x31a7,0x31a7,0x31a6,0x31c7,0x31a6,0x31a6,0x39c7,0x31a6,0x2986,0x29a6,0x31a6,0x31a7,0x39c7,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x31a6,0x3a08,0x39c7,0x39c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31a7,0x31a7,0x3186,0x31a6,0x31c7,0x31a6,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x29a6,0x31a6,0x2986,0x2966,0x2966,0x3186,0x39c7,0x31a6,0x2986,0x2985,0x31a6,0x3186,0x31a6,0x31a7,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2966,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2985,0x31a6,0x3186,0x2965,0x2965,0x29a6,0x31e7,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x31c7,0x31a6,0x2124,0x2124, +0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2124,0x2165,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2985,0x3186,0x3186,0x2966,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2966,0x2966,0x2966,0x2986,0x2965,0x2985,0x3186,0x3186,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2985,0x31a6,0x2986,0x2965,0x2945,0x3186,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x39e7,0x3186,0x2985,0x3186,0x3186,0x2986,0x2985,0x31a6,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x3186,0x31a7,0x39e8,0x39e8,0x31c7,0x29a6,0x0861,0x1904,0x2924,0x2944,0x18e3,0x21a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e3,0x2945,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2945,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e3,0x18c2,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2965,0x2124,0x18c3,0x20e4,0x18c3,0x10a2,0x2145,0x2124,0x0841,0x0840,0x0841,0x1082,0x2104,0x10a2,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x18c3,0x18e3,0x2104,0x2965,0x18e3,0x1082,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e8,0x39c8,0x31a7,0x31a7,0x2986,0x39e7,0x31e7,0x3a08,0x39e7,0x31c7,0x29a6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2145,0x31a6,0x31c7,0x2986,0x3186,0x39c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a7,0x39c7,0x31c7,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31c7,0x31a7,0x31a6,0x39e7,0x4228,0x39c7,0x31a6,0x31c7,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31c7,0x3186,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2965,0x3166,0x3186,0x2966,0x31a6,0x3186,0x2965,0x3186,0x3186,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x31a6,0x2965,0x2965,0x2945,0x2965,0x2965,0x31a7,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2144,0x2965,0x2985,0x2986,0x2145,0x31a6,0x2986,0x3186,0x2124, +0x2124,0x2124,0x2145,0x2144,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2165,0x2165,0x2965,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2986,0x2966,0x2966,0x31a6,0x31c6,0x2986,0x2986,0x3186,0x31c6,0x2965,0x2965,0x2986,0x2985,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x2986,0x2965,0x39e7,0x2985,0x2945,0x2965,0x2986,0x29a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31c6,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31a6,0x10c2,0x2124,0x2965,0x3165,0x2965,0x10e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2945,0x18c3,0x0861,0x0841,0x0020,0x2104,0x2945,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x2124,0x18e3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x2124,0x18e3,0x18c3,0x2104,0x18a2,0x18c3,0x2965,0x2103,0x0820,0x0020,0x0841,0x10a2,0x2124,0x1082,0x0020,0x0841,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c2,0x18c2,0x18e3,0x2104,0x39c7,0x2104,0x1082,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e8,0x31c8,0x3a08,0x31c7,0x39e7,0x31e7,0x31a6,0x29a6,0x31a7,0x31a7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31c7,0x31a7,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x4208,0x39c7,0x31a6,0x31a6,0x39c7,0x31a6,0x31c7,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31a7,0x31a6,0x3186,0x39e7,0x31a6,0x2965,0x39e7,0x31a6,0x39c7,0x3186,0x31a6,0x29a6,0x2986,0x31a6,0x2986,0x31c7,0x31c6,0x31a6,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2965,0x3186,0x2966,0x3186,0x31a6,0x2986,0x2985,0x2985,0x2966,0x2945,0x2965,0x2966,0x2965,0x2986,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x3186,0x2985,0x2965,0x2145,0x2145,0x2145,0x2145,0x2985, +0x2125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2945,0x2986,0x2965,0x2945,0x2945,0x3186,0x2965,0x2145,0x2124,0x2965,0x2965,0x2985,0x2965,0x2986,0x2165,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2966,0x2966,0x2966,0x2985,0x29a6,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31a6,0x3186,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2985,0x31c7,0x31a6,0x2965,0x2965,0x31a6,0x29a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x29a6,0x31c7,0x31a6,0x2966,0x3186,0x31a7,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x3187,0x3186,0x3186,0x31a7,0x31a6,0x3186,0x31a7,0x39c7,0x4208,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x18e3,0x1904,0x18e3,0x2145,0x2104,0x18a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x1082,0x2945,0x18e3,0x0861,0x0841,0x0020,0x10a3,0x2965,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x10a2,0x2124,0x2965,0x18c2,0x0020,0x0020,0x0841,0x18c3,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2103,0x31a6,0x1904,0x10a2,0x4228,0x3a07,0x3a08,0x39e8,0x31c7,0x31c6,0x3a07,0x31a7,0x31a7,0x39c8,0x39e8,0x4249,0x31c7,0x31a7,0x39e7,0x39e7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x39e7,0x39c7,0x2986,0x3186,0x31c7,0x39e7,0x3186,0x39e8,0x3a08,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x2985,0x31a6,0x39e7,0x39c7,0x39c7,0x31a6,0x31c7,0x31a6,0x2966,0x2966,0x2966,0x2966,0x31c7,0x31a6,0x31a6,0x31e7,0x31a6,0x2965,0x2986,0x2966,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x3186,0x2945,0x31a6,0x31c7,0x31a6,0x3186,0x2986,0x2945,0x2965,0x39c7,0x31a6,0x31a6,0x2986,0x2965,0x31a6,0x2965,0x31c7,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31c7,0x2145,0x31a6,0x31c6,0x2965,0x2945,0x2986,0x2985,0x2965,0x2144,0x2145,0x2124,0x31a6, +0x2124,0x2145,0x2145,0x2145,0x2145,0x2145,0x2966,0x2966,0x2945,0x2945,0x2985,0x3186,0x2945,0x2144,0x2945,0x3186,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2165,0x2145,0x2165,0x2966,0x2966,0x31a6,0x3186,0x2966,0x2946,0x2966,0x3186,0x2965,0x2985,0x29a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2965,0x31a6,0x31c6,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x31c6,0x39e7,0x31a6,0x2986,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x29a6,0x2986,0x2966,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a7,0x3186,0x3186,0x39e8,0x39c7,0x31a6,0x31a7,0x39c7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x4208,0x39e8,0x10c3,0x18c3,0x10c3,0x2124,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x0841,0x2945,0x2124,0x1082,0x0841,0x0020,0x0861,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x18a2,0x2103,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1081,0x18c3,0x18c3,0x18c3,0x20e4,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x2986,0x2965,0x1061,0x0020,0x0841,0x0861,0x2104,0x2104,0x0841,0x0020,0x0841,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x18e3,0x10a2,0x0882,0x39e7,0x39e7,0x39c7,0x31c7,0x31a6,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x3a08,0x39e7,0x31c7,0x39c7,0x39c6,0x3185,0x31a6,0x39e7,0x31a6,0x31c7,0x31a6,0x31c7,0x39c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a7,0x39c7,0x31c7,0x3186,0x3186,0x3186,0x39e7,0x2986,0x31a6,0x31c7,0x31a6,0x31c6,0x31a6,0x39e7,0x31c7,0x31c7,0x31c7,0x3186,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x31a7,0x31a7,0x31a6,0x31c7,0x31e7,0x31c7,0x3a08,0x3186,0x31a6,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31a6,0x3a08,0x2986,0x2965,0x3186,0x2986,0x2986,0x3186,0x2986,0x31a6,0x2986,0x3186,0x2986,0x31c7,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2124,0x2124,0x3186,0x31a6,0x2965,0x2965,0x2145,0x3186,0x3186, +0x2945,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2965,0x2945,0x2965,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2145,0x2945,0x2145,0x2965,0x2986,0x2145,0x2946,0x2966,0x3186,0x3186,0x2965,0x2165,0x2965,0x2986,0x2985,0x2985,0x2985,0x2965,0x3186,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x2986,0x2986,0x39e7,0x31a6,0x3186,0x31a6,0x31c6,0x3186,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x3186,0x31c7,0x29a6,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x2986,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a6,0x29a6,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a6,0x31c7,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x2124,0x0041,0x10a2,0x18c3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x0020,0x0020,0x2104,0x2965,0x10a2,0x0841,0x0841,0x0841,0x2104,0x2965,0x2124,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x0861,0x0861,0x0861,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1081,0x1081,0x1081,0x1081,0x1082,0x10a2,0x18c3,0x1082,0x1081,0x10a2,0x18c2,0x18c3,0x20e3,0x2104,0x18c3,0x18e3,0x18a2,0x2104,0x31a6,0x2124,0x0841,0x0020,0x0841,0x10a2,0x2945,0x18e3,0x0821,0x0841,0x0841,0x0861,0x1061,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x20e4,0x20e3,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x0881,0x0040,0x2124,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x39e7,0x31a6,0x39e7,0x4228,0x31a6,0x31c7,0x31c7,0x39c7,0x39c7,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x31c6,0x3a07,0x31c7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x3186,0x3186,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x31c7,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x4208,0x31c7,0x39c7,0x39e8,0x31c7,0x31a7,0x31c7,0x31c7,0x29a6,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x2986,0x31c7,0x39e7,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x2985,0x2986,0x2966,0x39e7,0x31a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2145,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2145,0x2945,0x2985,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145, +0x2124,0x2124,0x2165,0x2165,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2165,0x2165,0x2965,0x2966,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2965,0x2965,0x2145,0x2966,0x2986,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2985,0x2965,0x31a6,0x2986,0x2986,0x2985,0x2985,0x2986,0x29a6,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31c7,0x31a6,0x29a6,0x29a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x29a6,0x31a7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x31a6,0x39c7,0x31c7,0x39e7,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c7,0x31a7,0x39a7,0x31a7,0x31a7,0x31a7,0x39e7,0x31e6,0x3a07,0x3a07,0x31c7,0x3a28,0x31c7,0x10a2,0x0020,0x0020,0x0841,0x0841,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x0841,0x0020,0x18c3,0x2985,0x18e3,0x0861,0x0841,0x0020,0x10a2,0x2945,0x2965,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1081,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1082,0x1082,0x18c2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x18c2,0x18c3,0x10a2,0x3186,0x3186,0x18a2,0x0020,0x0841,0x0841,0x18e3,0x2966,0x10a2,0x0841,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x0881,0x2104,0x31a6,0x3a07,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x3a28,0x3a08,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x31c7,0x31a6,0x39c7,0x3a08,0x3186,0x39e8,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x31c6,0x31c7,0x31a6,0x2986,0x29a6,0x2965,0x2986,0x39e7,0x3186,0x4228,0x39c7,0x31a6,0x31a7,0x31a7,0x29a6,0x29a6,0x31c7,0x2986,0x31a6,0x31c7,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x2986,0x39c7,0x3186,0x2966,0x31a7,0x3186,0x31a6,0x31c6,0x2965,0x31c7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x39c7,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2986,0x2985,0x2145,0x2965, +0x2986,0x2986,0x2124,0x2145,0x2965,0x3186,0x2965,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2945,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x3186,0x2985,0x3186,0x31a7,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x2985,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31c6,0x31c6,0x31c6,0x31c6,0x29a6,0x31a6,0x31c7,0x31a6,0x31c7,0x3186,0x31a6,0x31a6,0x31c6,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x31c7,0x31a7,0x31c7,0x31c6,0x31e7,0x31c7,0x31c7,0x31a6,0x31a7,0x39c7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x31c7,0x31a6,0x2965,0x2925,0x2125,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x0861,0x1082,0x0861,0x0020,0x0861,0x2965,0x2945,0x1082,0x0841,0x0020,0x0841,0x2104,0x3186,0x2144,0x18a3,0x18c3,0x18c2,0x1082,0x1081,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x18a2,0x18a2,0x18c3,0x18c3,0x20e3,0x18e3,0x1082,0x2945,0x39e7,0x2944,0x0841,0x0020,0x0841,0x1082,0x2945,0x2945,0x0861,0x0020,0x0861,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x31c6,0x39e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e7,0x39c8,0x39e8,0x4229,0x39e8,0x31e7,0x3a08,0x39e8,0x31c7,0x39e7,0x3a07,0x31a6,0x3a08,0x3a08,0x31c7,0x31c7,0x2986,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x3186,0x31a7,0x31c7,0x31c7,0x3186,0x31a7,0x39e7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x39e7,0x31a6,0x3a08,0x2986,0x3a08,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x31a6,0x29a6,0x2986,0x2966,0x39e8,0x31a7,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x31e7,0x2965,0x31a6,0x2965,0x31c7,0x39e7,0x31a6,0x3186,0x2986,0x31a6,0x39e8,0x39e7,0x2986,0x31c7,0x31c7,0x3186,0x2966,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x3186,0x31a6,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2965,0x2145,0x31a6,0x3207,0x31c7,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2165,0x2965, +0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2965,0x2165,0x2145,0x2965,0x3186,0x2986,0x2965,0x2966,0x2986,0x2145,0x2965,0x31a6,0x2985,0x31c7,0x2985,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31c6,0x2986,0x31a6,0x2985,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31c7,0x31e7,0x31c7,0x2986,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x31a6,0x31a6,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c7,0x39e8,0x31a7,0x2986,0x3186,0x31c6,0x39e7,0x39e7,0x31a7,0x39c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c6,0x29a6,0x31a7,0x31c7,0x31a6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x31c6,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31c7,0x39e7,0x3a08,0x31e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0020,0x2104,0x3186,0x18e3,0x0861,0x0841,0x0021,0x10a2,0x2945,0x2985,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c2,0x0861,0x1082,0x10a2,0x18a2,0x18c3,0x18c3,0x2103,0x18c3,0x18e4,0x4208,0x31a6,0x18c2,0x0020,0x0841,0x0861,0x18e3,0x3186,0x18e4,0x0020,0x0841,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x31c7,0x39e8,0x3a08,0x39e8,0x39e8,0x31e8,0x3a08,0x39c7,0x31c7,0x4208,0x39e7,0x31e6,0x31c6,0x3a08,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x31c6,0x31c7,0x31c7,0x2986,0x31a6,0x3a08,0x39e8,0x3187,0x2986,0x2986,0x31a6,0x2985,0x31c6,0x31a6,0x2986,0x31a6,0x2986,0x39e7,0x39e7,0x2986,0x39e7,0x31a6,0x31c7,0x31a6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x29a6,0x31a7,0x39e8,0x39c7,0x3186,0x39e8,0x3a08,0x31c7,0x31c6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x39c7,0x31a6,0x31a6,0x2965,0x39c7,0x39c7,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3186,0x2986,0x2965,0x2965,0x2986,0x3186,0x2965,0x2124,0x2145,0x2986,0x29a6,0x39e7,0x31a6,0x31a6,0x2945,0x2125,0x2945,0x2986,0x2145,0x2965,0x2965,0x2124,0x2965,0x2145,0x2145, +0x2145,0x2945,0x2985,0x3186,0x2965,0x2145,0x2145,0x2144,0x2145,0x2165,0x2145,0x2165,0x2966,0x2165,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2986,0x3186,0x2966,0x2965,0x2986,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6,0x31c7,0x3186,0x31a6,0x31c6,0x31a6,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x3186,0x31a6,0x2986,0x3186,0x39c7,0x31a6,0x31a6,0x31c7,0x39c7,0x31c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a6,0x31a6,0x39e7,0x31c7,0x31a7,0x39c7,0x31a6,0x3186,0x31c7,0x39e7,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x39c7,0x39e7,0x31c7,0x39e8,0x39c8,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x3186,0x31a6,0x31e7,0x31c7,0x31a6,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a3,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x0020,0x1082,0x2965,0x2945,0x10a2,0x1082,0x0841,0x0841,0x18e3,0x2965,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x18c3,0x0861,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x31a7,0x39e7,0x2104,0x0841,0x0020,0x0841,0x1082,0x2965,0x3186,0x1082,0x0020,0x0861,0x1082,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18e3,0x18c3,0x20e3,0x2104,0x31c7,0x39e7,0x3a08,0x31c7,0x31c7,0x39e8,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x3a28,0x39e7,0x4228,0x3a07,0x31c7,0x31c7,0x31a7,0x31c7,0x39e7,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x39c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31c7,0x3186,0x39e7,0x31a6,0x2986,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x3186,0x39c7,0x39c7,0x31c7,0x31a7,0x39e7,0x31c7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0x31a6,0x31a7,0x39e8,0x3186,0x2965,0x39c7,0x3a07,0x31a6,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31e7,0x29a6,0x2966,0x3186,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x2945,0x2965,0x39c7,0x3186,0x2124,0x2986,0x3186,0x2965,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965, +0x2945,0x2124,0x2965,0x31a6,0x2985,0x2145,0x2144,0x2945,0x2165,0x2986,0x2966,0x2945,0x2986,0x2165,0x2165,0x2145,0x2966,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2985,0x2986,0x29a6,0x2165,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2986,0x3186,0x2966,0x2965,0x2986,0x2966,0x2986,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x2986,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e8,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31c7,0x31a6,0x31c7,0x31c7,0x31e7,0x39e7,0x31a7,0x31c7,0x3a08,0x39c7,0x39c7,0x31a7,0x3186,0x31c7,0x31c7,0x31c8,0x31c8,0x39e7,0x31e7,0x3187,0x39c7,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31a6,0x31a6,0x2986,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x18e3,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x10a2,0x0841,0x0020,0x20e4,0x3186,0x2104,0x18a3,0x1082,0x0841,0x0861,0x2104,0x2945,0x2124,0x18c3,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x10a2,0x10a2,0x18c3,0x18a2,0x10a2,0x18c3,0x3186,0x3a08,0x2945,0x1081,0x0020,0x0861,0x1082,0x2104,0x31a7,0x2104,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x31a7,0x31e7,0x31e7,0x39e8,0x31a7,0x39e8,0x3a08,0x3a28,0x39e7,0x4228,0x39e7,0x3a08,0x31c7,0x31c7,0x39c8,0x39c7,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x31a7,0x31c7,0x31c7,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x39c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x31a6,0x3186,0x31a6,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x31a6,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x2986,0x31a6,0x31a7,0x31a7,0x4208,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a6,0x2985,0x31c7,0x3186,0x3186,0x3186,0x2965,0x2985,0x31a6,0x29a6,0x2986,0x2985,0x2945,0x31a6,0x2965,0x2945,0x3186,0x39c7,0x2945,0x2966,0x2945,0x31a7,0x39c7,0x2966,0x2965,0x2945,0x2965,0x2965,0x2986,0x2986,0x2124,0x2945,0x2966,0x2945, +0x2124,0x2945,0x2985,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2966,0x2945,0x2965,0x2965,0x2966,0x2965,0x2965,0x2986,0x2966,0x2986,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2945,0x2965,0x31a6,0x31c7,0x2965,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31c7,0x39c7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2986,0x2986,0x39c7,0x31c7,0x3186,0x2986,0x31c7,0x29a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x31c7,0x31c7,0x39e8,0x31c8,0x39e8,0x39e7,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x31c7,0x39e8,0x31c8,0x31a7,0x31a7,0x39e8,0x39a7,0x31c7,0x31a6,0x31a6,0x39e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x2104,0x18e3,0x1082,0x10a2,0x10a2,0x0020,0x0862,0x2925,0x2966,0x2104,0x18c3,0x1082,0x0841,0x1062,0x2104,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2965,0x39a7,0x2945,0x1082,0x0841,0x1082,0x18a3,0x2104,0x31a6,0x2965,0x0862,0x0020,0x0861,0x1082,0x1082,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x2104,0x20e4,0x2125,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x39e7,0x31c7,0x31e7,0x3a08,0x31c7,0x39e8,0x39e8,0x3a08,0x3a08,0x39e7,0x31c7,0x3a28,0x31e7,0x31c7,0x31c7,0x39e8,0x31c7,0x29a7,0x31c7,0x39e8,0x31c7,0x3186,0x31c7,0x31a6,0x31c7,0x39e8,0x39e7,0x3186,0x31a6,0x31a7,0x31e7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x31c7,0x31c7,0x31a6,0x31a6,0x39e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31c7,0x31c7,0x39c7,0x31c7,0x3186,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x2966,0x2965,0x31c7,0x39e7,0x2945,0x2986,0x4208,0x39c7,0x31c6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2986,0x3186,0x2966,0x2965,0x2965,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x3186,0x3186,0x3186,0x2966,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x31a7, +0x2945,0x2965,0x2965,0x2985,0x2985,0x2145,0x2145,0x2144,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2965,0x2986,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2985,0x2985,0x2986,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x29a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x31a6,0x31c6,0x29a6,0x2986,0x2986,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x31c6,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x31e7,0x31e7,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x31c7,0x29c6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x31c7,0x39e7,0x3a07,0x3a08,0x39c7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2124,0x18c3,0x10a3,0x18c3,0x18c3,0x10a2,0x18e4,0x2945,0x10a2,0x1082,0x18c3,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2104,0x18c3,0x1082,0x0841,0x1082,0x18e3,0x2944,0x2945,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x2965,0x3186,0x2124,0x1082,0x0841,0x1082,0x18e3,0x2104,0x31a6,0x39a7,0x18c3,0x0020,0x0841,0x1082,0x1082,0x1082,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x20e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3a08,0x31c7,0x31e7,0x31c7,0x39e7,0x4208,0x39c7,0x31a6,0x39e7,0x3a07,0x39e7,0x3207,0x31e7,0x31e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x39c7,0x2986,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a7,0x31e7,0x31e7,0x29a6,0x31a6,0x31c7,0x31c7,0x2985,0x31c6,0x31a6,0x31c6,0x31e7,0x31c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31a7,0x2966,0x31a6,0x39e7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31a6,0x3186,0x31a6,0x29a6,0x2986,0x2965,0x29a6,0x31a6,0x31c6,0x39c7,0x2986,0x3186,0x31c7,0x2986,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31c7,0x29a6,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x2986,0x29a6,0x2965,0x2145,0x2945,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x2945,0x2965, +0x2945,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2986,0x2986,0x31c7,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2985,0x2986,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2165,0x29a6,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31c6,0x31c7,0x31c6,0x31e7,0x31c6,0x31c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x31c6,0x29a6,0x31c7,0x31e7,0x31a6,0x31a7,0x31c7,0x31a7,0x39a7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x3a08,0x39c7,0x31c7,0x31c7,0x31c6,0x3a07,0x39e7,0x31e7,0x3a08,0x3a08,0x39e8,0x39e8,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a28,0x3a08,0x39e7,0x3a08,0x3a28,0x3a28,0x3a28,0x3a08,0x31c7,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x10a3,0x18c3,0x18c3,0x10a2,0x18c3,0x2966,0x2945,0x1082,0x18c2,0x10a2,0x0841,0x0841,0x18e3,0x2966,0x2945,0x20e3,0x18c3,0x10a2,0x0861,0x1082,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x18c2,0x18c3,0x18e4,0x2125,0x2965,0x2965,0x2124,0x1082,0x0861,0x1082,0x18e3,0x2104,0x3186,0x39c7,0x2924,0x0861,0x0841,0x1061,0x1082,0x1082,0x18e3,0x2125,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2925,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x3a08,0x3a08,0x39e8,0x39e7,0x4208,0x4208,0x39e8,0x39c7,0x4208,0x4228,0x4228,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x4a6a,0x4229,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x39e7,0x3a08,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x39e8,0x39e7,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x31e7,0x31c7,0x31a6,0x31c7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a7,0x39e7,0x4208,0x39e7,0x31c7,0x39e7,0x31c7,0x31c7,0x31a6,0x31a7,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x31c7,0x31a6,0x4228,0x39c7,0x31a7,0x3186,0x39e7,0x29a6,0x2985,0x31a6,0x31a6,0x39c7,0x3186,0x2945,0x2966,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x2145,0x31a7,0x31a6,0x2986,0x2966,0x2945,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2124,0x2124,0x2145,0x3186,0x2925,0x2966,0x31a6,0x31a6,0x2986,0x31a6,0x3186,0x2945,0x2125, +0x3186,0x3186,0x2945,0x2124,0x2945,0x2945,0x3166,0x2965,0x3186,0x2986,0x2986,0x2986,0x2986,0x3186,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c6,0x31a6,0x31c7,0x29a6,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x3186,0x2986,0x2986,0x3186,0x39c7,0x3186,0x3186,0x2986,0x2986,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2986,0x31a7,0x2966,0x2986,0x2946,0x2986,0x2986,0x2966,0x2966,0x3186,0x3186,0x3186,0x3166,0x3167,0x3167,0x31a7,0x2966,0x2966,0x3187,0x3166,0x3187,0x3187,0x2945,0x3166,0x3166,0x3187,0x3166,0x3186,0x3187,0x2966,0x3187,0x2946,0x2946,0x2966,0x2946,0x2966,0x39e8,0x39c8,0x2966,0x2946,0x3146,0x3966,0x3126,0x2926,0x2946,0x2966,0x2946,0x2906,0x2926,0x20c5,0x2905,0x2905,0x2946,0x2105,0x20e5,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x2124,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x2104,0x39c7,0x18c3,0x1082,0x18a2,0x1082,0x0841,0x0861,0x2104,0x2965,0x2945,0x2103,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e4,0x2104,0x2945,0x2965,0x2945,0x2103,0x10a2,0x1062,0x10a2,0x18e3,0x2104,0x3186,0x39e7,0x2965,0x1082,0x0861,0x0861,0x10a2,0x1082,0x10a2,0x2966,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2125,0x2945,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x20e4,0x2105,0x2966,0x20c4,0x2105,0x2926,0x2105,0x2946,0x2946,0x3166,0x3187,0x2947,0x3167,0x39a7,0x31c7,0x2987,0x31c7,0x39e8,0x3187,0x2966,0x31a7,0x3187,0x2986,0x31c7,0x31a7,0x3186,0x39a6,0x3186,0x39e8,0x31a7,0x31a7,0x3186,0x2966,0x3166,0x3186,0x3186,0x2966,0x2966,0x31a7,0x39c7,0x31a7,0x39c7,0x3187,0x31a7,0x31a7,0x39a7,0x39a7,0x39a7,0x31a7,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x39c7,0x39c8,0x39c7,0x31c7,0x39c8,0x39e8,0x31c7,0x31a7,0x31a7,0x39a7,0x39c7,0x39c7,0x39c7,0x39a7,0x4a6a,0x3a08,0x39e8,0x31a6,0x39c7,0x39c7,0x39e7,0x39a6,0x39a6,0x39c7,0x39e8,0x39e7,0x39e8,0x4228,0x4228,0x4208,0x41e8,0x41e7,0x41e7,0x39e7,0x41e8,0x4208,0x3a07,0x4208,0x4249,0x4228,0x4208,0x39e7,0x4208,0x39e7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39c7, +0x3186,0x3186,0x2945,0x2945,0x2985,0x2945,0x3165,0x3165,0x3166,0x2945,0x2945,0x3166,0x2965,0x3166,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39a6,0x39a6,0x31a6,0x3186,0x3186,0x3166,0x3186,0x3186,0x31a6,0x39c6,0x31a6,0x31a7,0x3186,0x3187,0x39a7,0x39a7,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x39c7,0x39c7,0x31a7,0x39a7,0x39a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x41e7,0x4207,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4a29,0x4a49,0x528a,0x528a,0x4a6a,0x526a,0x528b,0x528a,0x528a,0x528a,0x526a,0x52ab,0x5aab,0x52ab,0x5aab,0x5acb,0x5acb,0x5acb,0x5acc,0x5aec,0x630d,0x630d,0x632d,0x632d,0x5b0c,0x5b0d,0x5b0c,0x632d,0x632d,0x632d,0x636e,0x634e,0x634e,0x634e,0x632e,0x6b8e,0x6b8e,0x738f,0x6b8f,0x73b0,0x6b6e,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2966,0x2985,0x10a2,0x10a2,0x18c3,0x1082,0x0841,0x1082,0x2124,0x2965,0x2124,0x20e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2925,0x2945,0x2945,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x3186,0x39e8,0x3186,0x10a2,0x0841,0x1081,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x2965,0x2945,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2965,0x94b3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8472,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x8472,0x7c32,0x7c31,0x8452,0x8451,0x8c72,0x8451,0x8431,0x8431,0x8451,0x8c92,0x8c93,0x8472,0x8c92,0x8c72,0x8452,0x8472,0x8452,0x7c11,0x7c51,0x7c51,0x7c31,0x8451,0x7c31,0x8471,0x8471,0x8451,0x8c92,0x8cb3,0x8c92,0x8c92,0x8451,0x8451,0x8431,0x8451,0x8431,0x7bf0,0x7c10,0x7c10,0x8451,0x7c51,0x73ef,0x8451,0x8431,0x7c30,0x7c30,0x73ef,0x6baf,0x73cf,0x7c10,0x7bf0,0x7c10,0x7c10,0x6baf,0x6baf,0x73af,0x6b8e,0x73cf,0x73ef,0x6baf,0x6bae,0x7c0f,0x7c0f,0x73cf,0x73af,0x73cf,0x7bef,0x73ef,0x7c10,0x73ef,0x73ef,0x73ef,0x7bf0,0x7bef,0x6bae,0x6b8e,0x6baf,0x6b8e,0x6b6e,0x73d0,0x73cf,0x634d,0x636d,0x634d,0x634c,0x5b2c,0x632c,0x634d,0x632d,0x632c,0x5b0c,0x5b4d,0x634d,0x5b2c,0x5b0c,0x630c,0x5acb,0x5acb,0x5b0c,0x5aeb, +0x4a69,0x5289,0x5aca,0x5aca,0x52aa,0x528a,0x5acb,0x5aeb,0x630c,0x632c,0x630c,0x632c,0x6b4d,0x632c,0x630c,0x632c,0x634c,0x634c,0x632c,0x630c,0x6b4d,0x6b4d,0x634c,0x634d,0x632d,0x6b4d,0x6b6d,0x6b4d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x8430,0x8451,0x8451,0x7c10,0x7bef,0x6bae,0x6b8e,0x73ae,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6d,0x6b6d,0x6b8e,0x738e,0x73ae,0x7bf0,0x7bf0,0x7c10,0x8410,0x8430,0x8450,0x8410,0x7c10,0x7c10,0x7c30,0x7c10,0x7c10,0x7c10,0x7bf0,0x7c10,0x8450,0x8451,0x8451,0x8cb2,0x94b3,0x8c92,0x8c92,0x8cb3,0x8cb3,0x94f4,0x9d34,0x9d34,0x9d54,0xa575,0xa555,0x9d34,0x9d34,0x9d14,0x94f3,0x9d14,0x9d14,0xa555,0xb5d7,0xa576,0xad97,0xadb7,0xadd8,0xadf8,0xa596,0xadb6,0xa5b6,0xa576,0xadf8,0xadd7,0xadd7,0xa5d7,0xadd8,0xadd8,0xadd8,0xb618,0xb638,0xb618,0xb5f8,0xb619,0xadd7,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18e3,0x2124,0x2945,0x18e3,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x3186,0x2124,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x1082,0x2124,0x2945,0x2124,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2965,0x2945,0x2924,0x2104,0x2104,0x2104,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2965,0x2965,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x39c7,0x3186,0x18c3,0x0841,0x0861,0x10a2,0x20e3,0x18c3,0x2945,0x39e8,0x2945,0x18e4,0x18e3,0x18c3,0x2104,0x2965,0x3186,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x3186,0xadf8,0xb619,0xb619,0xb639,0xb618,0xadd7,0xadb7,0xadd7,0xadd8,0xadd8,0xa576,0x9535,0x8cf4,0x8d14,0x9515,0x9535,0x9515,0x9514,0x94f4,0x9514,0x94f4,0xa596,0xa597,0x9d35,0x9d56,0x9d35,0x94f4,0x94f4,0x9515,0x8cd4,0x8cb3,0x8cd3,0x8cd3,0x8cf4,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x8492,0x8cd3,0x8cb2,0x8472,0x8cd3,0x94d3,0x8452,0x7c31,0x7c31,0x7431,0x8472,0x94f4,0x8cb3,0x8cd3,0x8cd3,0x8492,0x7c51,0x73ef,0x73ef,0x7c31,0x8472,0x7c31,0x73f0,0x73d0,0x6bd0,0x6bcf,0x73ef,0x73f0,0x73f0,0x6bcf,0x6baf,0x73d0,0x7c31,0x7c51,0x7410,0x7c10,0x73f0,0x73cf,0x73f0,0x73ef,0x7410,0x73f0,0x73f0,0x73d0,0x73cf,0x6b8f,0x6bcf,0x6b8e,0x638e,0x8431,0x6baf,0x5b2d,0x5b0d,0x5b2c,0x636d,0x636d,0x5b4d,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52cb,0x5b2c,0x5b2d,0x5b0c,0x5aed,0x5aec,0x5aec,0x52cb,0x4acb,0x52eb, +0x630c,0x5aeb,0x630c,0x6b4c,0x630c,0x630b,0x6b2c,0x6b4d,0x7bef,0x73ce,0x6b8d,0x73cf,0x7bef,0x73cf,0x6bae,0x6bae,0x73ef,0x6bce,0x6b8e,0x6b8e,0x73cf,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x73af,0x73cf,0x7bf0,0x7c10,0x7c0f,0x7bef,0x7bf0,0x7c10,0x73cf,0x73cf,0x73cf,0x7c10,0x8451,0x8471,0x8cd3,0x8471,0x7c51,0x7410,0x6baf,0x73af,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x7c10,0x7c11,0x7c11,0x7c32,0x8452,0x8452,0x8451,0x8452,0x8452,0x8451,0x7c11,0x7c11,0x8432,0x8472,0x8452,0x7c11,0x7c11,0x7c31,0x8452,0x8452,0x8c92,0x94d4,0x8cd3,0x8472,0x8cb3,0x8cd4,0x94f4,0x9d14,0x9d55,0xa576,0xa597,0xadd7,0x9d56,0x9515,0x9d35,0x9d15,0x9d35,0x9d35,0xad97,0xbe19,0xa577,0xadb7,0xb5f8,0xadb7,0xa597,0x9d76,0xad97,0xadd8,0x9d56,0xa597,0xad97,0xa597,0xa597,0xadb8,0xadd8,0xbe39,0xb619,0xb5f9,0xb5f9,0xadd8,0xb5f8,0xadd8,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a3,0x18e3,0x2104,0x2966,0x2924,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x10a2,0x2104,0x2945,0x2124,0x18e4,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x2104,0x2965,0x3186,0x3185,0x3186,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x2924,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2966,0x31a6,0x2965,0x18c2,0x0841,0x0861,0x1082,0x18e3,0x18e3,0x2125,0x4208,0x31a7,0x2124,0x1904,0x18e3,0x18e3,0x2125,0x3186,0x2965,0x2124,0x2104,0x2104,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d77,0xadd9,0xa5b8,0xa598,0xa597,0x9d35,0xa576,0xa597,0xa556,0xadb7,0xb5f8,0x9d55,0x8493,0x8cb3,0x9515,0x9515,0x84b3,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x9d35,0x9d56,0x9d36,0xa577,0xa556,0x9d15,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8c93,0x8492,0x8c93,0x8473,0x8c93,0x94d4,0x8cb3,0x8c93,0x8493,0x7411,0x8472,0x8cb3,0x8c72,0x8c93,0x8cb3,0x8452,0x7c31,0x73f1,0x7c11,0x7c11,0x8492,0x8cb3,0x8c92,0x8472,0x7c52,0x7411,0x73f0,0x7c11,0x7410,0x7c31,0x73f1,0x73d0,0x6bd0,0x73f1,0x73f0,0x6baf,0x73cf,0x6baf,0x638f,0x6baf,0x6bd0,0x7c11,0x7c10,0x73f0,0x7c10,0x7bf0,0x73af,0x73cf,0x7c10,0x8c72,0x7c10,0x73af,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73af,0x8431,0x73ef,0x636e,0x636e,0x634d,0x5b2d,0x632d,0x634e,0x634e,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x5aec,0x5aec,0x5aed,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x52cb, +0x630c,0x630c,0x6b4d,0x632c,0x5aeb,0x62ec,0x6b2d,0x632c,0x73ce,0x73ae,0x738e,0x738e,0x73af,0x738e,0x6b6d,0x738e,0x73cf,0x73af,0x6b8e,0x73ae,0x73cf,0x73af,0x738e,0x738e,0x738e,0x6b8e,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x73cf,0x73af,0x738f,0x6b8e,0x73af,0x73cf,0x73cf,0x8451,0x8c72,0x8c72,0x8451,0x7bf0,0x6bae,0x73ae,0x73ae,0x6b6e,0x632d,0x6b6e,0x73af,0x7c10,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7bf0,0x7c11,0x7c11,0x8431,0x8431,0x8432,0x8431,0x7c31,0x7c11,0x7c31,0x8451,0x7c11,0x8431,0x7c31,0x7c31,0x8451,0x8472,0x8472,0x8472,0x8cd3,0x94d4,0x94d4,0x94f4,0x8cb3,0x94d4,0x94d4,0x9cf4,0xa556,0xa556,0xad97,0xa576,0x9d35,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xadb7,0xa597,0xb5d8,0xadd8,0xa556,0xa556,0xad77,0xadb7,0xa597,0xa597,0xa597,0xadb7,0xadd8,0xadd8,0xadd8,0xbe19,0xc67a,0xce9a,0xce9b,0xcebb,0xc67b,0xbe19,0xb5d8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2125,0x2965,0x2104,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x2104,0x2124,0x10a2,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2124,0x2124,0x18e4,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x2945,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x3186,0x3185,0x3186,0x3185,0x3185,0x3185,0x3165,0x2944,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2124,0x2965,0x3186,0x2945,0x10a2,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x2104,0x39c7,0x39c7,0x2925,0x2104,0x18e4,0x2104,0x2104,0x2966,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadd8,0xadd8,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xa597,0xad97,0x94f4,0x8493,0x9535,0x94f5,0x9515,0x94f4,0x9d35,0x94f4,0x94f4,0x8cd4,0x9d35,0x9d15,0x94d4,0xa576,0x9d35,0x9d35,0x9d35,0x94f4,0x9d15,0x9d55,0x9515,0x8cb3,0x8cb3,0x8cb3,0x94d4,0x94f4,0x8cb3,0x94d4,0x8cd4,0x8493,0x8452,0x8c93,0x8cb3,0x8cb3,0x9514,0x7c31,0x7c31,0x8451,0x8451,0x8472,0x7c31,0x7c11,0x7c31,0x7c72,0x7c52,0x7c52,0x7c11,0x73f0,0x73f0,0x73f0,0x73f0,0x7411,0x7410,0x7411,0x7c11,0x6bcf,0x6bcf,0x6bcf,0x6baf,0x6bae,0x6bae,0x73f0,0x7410,0x7430,0x7c10,0x8431,0x6b8f,0x6baf,0x73f0,0x7c30,0x7c10,0x73cf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x8431,0x73af,0x636e,0x6b6f,0x6b6e,0x634d,0x5b0d,0x5b0d,0x5b2d,0x5b0d,0x5b2d,0x636d,0x636e,0x634d,0x5b0c,0x52ab,0x52cb,0x5aeb,0x5b0b,0x632c,0x52cb,0x52aa,0x5aeb,0x5aec, +0x634d,0x738e,0x6b8d,0x632c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x6b4d,0x738e,0x7baf,0x738e,0x736e,0x6b6e,0x738f,0x73b0,0x73cf,0x7bd0,0x7bcf,0x8430,0x8451,0x7c10,0x7bcf,0x738f,0x738e,0x73af,0x7bf0,0x73cf,0x6bae,0x6baf,0x73ef,0x6baf,0x6b8f,0x73d0,0x8411,0x8451,0x8451,0x8c71,0x8c72,0x8451,0x8c72,0x8430,0x7bef,0x73ef,0x73af,0x6b6e,0x636e,0x636e,0x73d0,0x6baf,0x6baf,0x6baf,0x73cf,0x73f0,0x7bf0,0x7c11,0x7bf0,0x7c11,0x8432,0x8452,0x7c31,0x7c10,0x7c31,0x8451,0x8451,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8472,0x8452,0x8431,0x8c72,0x8452,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x9d35,0x9d35,0x9d35,0xa576,0xa556,0xad76,0xa576,0xa576,0x9d56,0x9d35,0x9d36,0xa576,0xad97,0xadd8,0xad97,0xa556,0xa576,0xa597,0xadd8,0xadd7,0xa576,0xad97,0xa5b7,0xa5b7,0xadd8,0xadd8,0xb5f9,0xc65a,0xc67a,0xcebb,0xd6fb,0xd6fb,0xd6dc,0xc67a,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2945,0x2965,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2124,0x2924,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2945,0x2965,0x2965,0x2124,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x18a2,0x18e3,0x3186,0x31a6,0x2945,0x2124,0x2104,0x20e4,0x2104,0x2945,0x31a6,0x2965,0x2124,0x2124,0x20e3,0x2104,0x2104,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadf8,0xadd8,0xa577,0x9d76,0x9d56,0x9d36,0xa576,0xa5b7,0x9515,0x94f4,0x8cf4,0x9d36,0x8cb4,0x8cb4,0x9d56,0xadb7,0x94f4,0x9d36,0x9d15,0x9d35,0x8cb3,0x9d15,0x94f4,0x94d4,0x8cd4,0x9d15,0x9d15,0x94f4,0x9d35,0x9d55,0x9d15,0x94f4,0x8cd3,0x94f4,0x9514,0x9d35,0x94f5,0x9d15,0x8cd4,0x8cb3,0x8c93,0x8c93,0x8cb3,0x94f4,0x8c93,0x8cb3,0x8472,0x8c92,0x8c92,0x8451,0x7c31,0x7c31,0x7c52,0x8493,0x8cb3,0x7c31,0x6bcf,0x8493,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x73f0,0x6bd0,0x6baf,0x6baf,0x6baf,0x73af,0x73ef,0x7410,0x73f0,0x73ef,0x7c50,0x7c30,0x73f0,0x6baf,0x73cf,0x73f0,0x7c10,0x73cf,0x6baf,0x6b8e,0x73af,0x8c92,0x7bf0,0x632d,0x6b8e,0x6b8e,0x634e,0x5b0d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x634d,0x632d,0x5b0c,0x5aec,0x52cb,0x52ab,0x52aa,0x52eb,0x6bae,0x5aeb,0x52ab,0x5aec,0x630c, +0x6b4d,0x73ae,0x738e,0x630c,0x632c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x738f,0x6baf,0x73af,0x8411,0x8451,0x94d2,0x8471,0x7c10,0x7bf0,0x6b8e,0x6b8e,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73cf,0x73af,0x738e,0x8431,0x8c92,0x8451,0x8451,0x8c72,0x8472,0x8451,0x8471,0x8470,0x7c10,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x6baf,0x73b0,0x73d0,0x73d0,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x8431,0x8431,0x8431,0x8431,0x8431,0x8451,0x8451,0x8431,0x8431,0x7c11,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x8452,0x8c72,0x8c93,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x9d35,0xa596,0xa556,0x9d35,0x9d56,0xa576,0xa556,0x9d56,0x9d35,0x9d35,0xa556,0xa576,0xa576,0xa576,0x9d56,0x9d56,0xa576,0xad97,0xadb7,0xad97,0xa556,0xadb7,0xa597,0xa597,0xadd8,0xb5d8,0xbe5a,0xc67b,0xc65a,0xce9b,0xd6dc,0xc67a,0xd6db,0xdf1c,0xbe39,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x2945,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18a2,0x18c2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x2124,0x2124,0x2104,0x18e4,0x20e3,0x18e3,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2124,0x2945,0x2945,0x2124,0x2103,0x18a2,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x18c3,0x2945,0x3166,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x39a7,0x31a6,0x2924,0x2124,0x2104,0x18e3,0x2104,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xadd8,0xadf9,0xadd8,0xa597,0x9d56,0x9536,0x9515,0x9d16,0x9515,0x9d56,0xa597,0x9d35,0x8cf4,0x9d56,0x9515,0x8cf4,0xadb7,0xadb7,0x9cf4,0x9d15,0x8cd3,0x8cb3,0x8cf4,0xa597,0x8cb3,0x8493,0x8cb3,0x9514,0x9514,0x9514,0x9515,0x9515,0x9515,0x9535,0x9515,0x9d35,0x9515,0x9d15,0x9d35,0x9d15,0x8cb3,0x8cb4,0x94f4,0x94d4,0x94d4,0x9d15,0x9d15,0x9d15,0x94d4,0x8452,0x8452,0x8472,0x8452,0x8c93,0x8472,0x8cb3,0x8cb3,0x8432,0x73f0,0x73f0,0x73f0,0x6bcf,0x6baf,0x6bd0,0x73f0,0x7410,0x73f0,0x6baf,0x6bcf,0x73d0,0x7c10,0x7c10,0x73ef,0x73cf,0x7c11,0x8431,0x73f0,0x73f0,0x6baf,0x6baf,0x73d0,0x73f0,0x7bf0,0x73cf,0x73cf,0x8c51,0x7c11,0x73af,0x6b6e,0x6b6e,0x73af,0x6b6e,0x634d,0x634d,0x5b2c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x73cf,0x6b6d,0x52ab,0x630c,0x5acb, +0x632c,0x6b4c,0x6b4d,0x630c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x634d,0x6b6e,0x738e,0x738e,0x6baf,0x73af,0x7bd0,0x8410,0x8c91,0x73ef,0x73af,0x738f,0x6b8e,0x6b8e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x8c72,0x8c72,0x8471,0x8451,0x8451,0x8471,0x8471,0x8451,0x7c0f,0x7bef,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73d0,0x73f0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c31,0x8431,0x8472,0x8451,0x8451,0x8451,0x8431,0x7c31,0x7c31,0x7c31,0x7411,0x7c11,0x8452,0x8452,0x8472,0x8c72,0x8c93,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x9515,0x9d35,0x94f5,0x9d36,0x9d56,0xa556,0xad97,0x9d36,0x9d56,0xa556,0x9d56,0x9d56,0xa576,0xad97,0x9d56,0x9d35,0xa576,0xa556,0xa556,0xa576,0xa597,0xadd8,0xa597,0xa597,0xbdf9,0xbe3a,0xb639,0xc65b,0xcebb,0xc67b,0xc65a,0xd6fc,0xdf1c,0xc67a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x2124,0x3186,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x18c2,0x10a2,0x1082,0x1081,0x1081,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2945,0x2944,0x2124,0x20e3,0x10a2,0x10a2,0x18a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x2124,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x3186,0x39c7,0x2945,0x2124,0x2124,0x2104,0x2104,0x1904,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xb619,0xb619,0xa597,0x9d56,0x9515,0x9536,0x94f5,0x9d15,0x8cd4,0x94f5,0xa576,0xa577,0x9535,0x9535,0x9d36,0xa597,0xb619,0xa576,0x9d36,0x94f4,0x8cb3,0x8cb3,0x9d55,0x9d76,0x8473,0x8472,0x8cb3,0x8cb3,0x8492,0x8cb3,0x9515,0x9d15,0x9515,0x9535,0x9515,0x9d35,0xa556,0xa576,0xa576,0xb5b8,0xad97,0x8cd4,0x9d56,0x9d35,0x94d4,0xa535,0x8cb3,0x94d4,0x94f4,0x8cb3,0x8472,0x8472,0x8472,0x94d3,0x8cb3,0x8c93,0x8cd4,0x8452,0x7bf1,0x73d0,0x73d0,0x73f0,0x6bd0,0x7410,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x73d0,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7c11,0x7c11,0x73f0,0x73d0,0x6b8f,0x6baf,0x73d0,0x73d0,0x73cf,0x73ef,0x8471,0x7c31,0x6baf,0x6baf,0x6baf,0x6bae,0x6baf,0x6b8e,0x6bae,0x636d,0x5b4d,0x52ec,0x5b0c,0x5aec,0x52ab,0x52cb,0x5b0c,0x52ec,0x4aab,0x52cb,0x52cb,0x5aeb,0x6b6d,0x73cf,0x52eb,0x5b0c,0x52aa, +0x632c,0x6b2c,0x632c,0x630c,0x5aeb,0x630c,0x630c,0x5b0b,0x634d,0x630c,0x630c,0x632d,0x632c,0x632d,0x6b4d,0x738e,0x6baf,0x7bf0,0x7bf0,0x7bef,0x7c10,0x73ef,0x738e,0x736e,0x738e,0x738e,0x6b6e,0x73af,0x7bcf,0x73cf,0x73ae,0x6b8e,0x73af,0x8431,0x8c92,0x94b3,0x8c92,0x8451,0x8451,0x8c92,0x7c31,0x73f0,0x7c10,0x7c10,0x6baf,0x6b8e,0x6baf,0x73af,0x738f,0x6b8f,0x6b8f,0x73cf,0x73f0,0x7c10,0x73ef,0x7c10,0x7c10,0x73f0,0x8451,0x8452,0x8472,0x8cb3,0x8472,0x8471,0x8451,0x7c10,0x7c10,0x8431,0x7c31,0x7c31,0x8452,0x8432,0x8452,0x8493,0x8492,0x8472,0x8c93,0x8493,0x8493,0x8493,0x7c52,0x7c73,0x8493,0x8cd4,0x9d36,0x9d56,0x9d36,0xb5d8,0xa597,0xa556,0x9d35,0x9d35,0xa556,0xa576,0xa597,0x9d56,0x9d35,0x9d56,0x9d15,0x9515,0xa556,0xb5d7,0xb5d8,0xa577,0xa557,0xb5d8,0xb5f8,0xadb8,0xb5f9,0xc67b,0xc67a,0xc67a,0xd6db,0xd6db,0xc65a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2965,0x2965,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18c2,0x2104,0x2104,0x2924,0x2944,0x2124,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2925,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x18a2,0x18c3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2125,0x3186,0x31a7,0x2965,0x2124,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xadb8,0xadb8,0xa597,0x9d56,0x9d35,0x9d15,0x9d15,0x94f5,0x94d4,0x9515,0x9d35,0xa577,0xa597,0x9d56,0x9d36,0xadb7,0xadb8,0x94f5,0xa577,0x9d56,0x94f4,0x8cd3,0x9d35,0x94d4,0x8452,0x8452,0x8cb3,0x8472,0x8472,0x8472,0x8cf4,0x9514,0x9d15,0x9cf4,0x94f4,0xa556,0xa596,0xa597,0xad97,0xb5f8,0xb5f8,0xa576,0x9515,0x9d15,0x94f4,0x9d14,0x94f4,0x8492,0x8cb3,0x8492,0x8472,0x8cb3,0x8492,0x94f3,0x8cd3,0x8452,0x8cb4,0x8473,0x73d0,0x73f0,0x73f0,0x6bcf,0x6bcf,0x7410,0x73d0,0x73d0,0x73d0,0x6bcf,0x6baf,0x6b8f,0x7c10,0x7c31,0x73cf,0x7bf0,0x73cf,0x7410,0x7410,0x73f0,0x6baf,0x73d0,0x73f0,0x6bae,0x7c10,0x8472,0x73f0,0x73f0,0x73f1,0x6baf,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x5b4d,0x530c,0x5b0c,0x52eb,0x52cb,0x5b0c,0x5b2d,0x52eb,0x4acb,0x52cb,0x52ab,0x52cb,0x6b6d,0x73ae,0x632d,0x52ab,0x52ab, +0x6b4c,0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x62ec,0x5aec,0x5aec,0x632d,0x632c,0x632c,0x6b6d,0x6b4d,0x738f,0x7bf0,0x7bef,0x7c10,0x7bef,0x73ef,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x7bcf,0x7bcf,0x738e,0x6b6e,0x6b6e,0x7bf0,0x94b3,0x9cf4,0x94d3,0x8471,0x8c71,0x8471,0x7c30,0x73cf,0x73af,0x7bf0,0x7c10,0x6baf,0x6baf,0x73af,0x7bf0,0x73af,0x6baf,0x6baf,0x73f0,0x7c10,0x73f0,0x73ef,0x73f0,0x73f0,0x73f0,0x8452,0x8c93,0x7c52,0x8472,0x7c51,0x7c51,0x8451,0x7c51,0x8451,0x7c31,0x7c31,0x8472,0x8c93,0x8452,0x8472,0x84b3,0x7c51,0x7c52,0x8452,0x8452,0x8452,0x8493,0x8473,0x7c52,0x7c52,0x84b3,0x94f5,0x94f5,0x9d36,0xadb7,0xb5f9,0x94d4,0x9d15,0x9d35,0x9d56,0xa556,0x9d35,0xa576,0x9d35,0x9d35,0x9d35,0x9d36,0xa556,0xadb7,0xb5d8,0xad97,0xad77,0xb5d8,0xb5f8,0xb5d8,0xadd8,0xb5f9,0xbe3a,0xc65a,0xc67a,0xc67a,0xbe19,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x3186,0x3166,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18c2,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2925,0x2124,0x2104,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2104,0x2966,0x39c7,0x2966,0x2124,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x3186,0xa597,0x9d76,0x9d56,0xa577,0xa576,0x9515,0x94f5,0x94f4,0x9515,0x94f4,0x94f4,0x9535,0x9d56,0xa5b7,0x9515,0xb5f8,0x9d36,0x8494,0x9d77,0xadb8,0x94f4,0x9d15,0x94d4,0x8c93,0x8c93,0x8472,0x94d4,0x8472,0x7c32,0x8cd4,0x84b3,0x94f4,0x9d15,0x9d35,0xa556,0xad76,0xad96,0xa576,0xad97,0xa597,0xa597,0xadb7,0x9d36,0x9d35,0x9d56,0x94f4,0x8cb3,0x8c92,0x94f4,0x8c93,0x8cb3,0x8cd3,0x8cb3,0x94f3,0x94f4,0x8cb3,0x7c51,0x73f0,0x73f0,0x7411,0x73f0,0x6baf,0x6bcf,0x73f0,0x73d0,0x73d0,0x73af,0x73d0,0x73f0,0x73af,0x7c10,0x8c72,0x7c31,0x7c10,0x7410,0x7c30,0x7c30,0x73f0,0x63ae,0x73ef,0x6bcf,0x6baf,0x7c31,0x7c10,0x73ef,0x7bf0,0x73d0,0x73af,0x6baf,0x636e,0x634d,0x6b8e,0x6b8e,0x636d,0x5b2c,0x5b2c,0x5b2d,0x5b0c,0x530c,0x52eb,0x52cb,0x52cb,0x4a8a,0x52aa,0x52cb,0x5b0c,0x5b0c,0x6b6d,0x6b6d,0x632c,0x6b4d, +0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x62eb,0x62eb,0x632c,0x5b0c,0x5aec,0x630d,0x6b2d,0x6b4d,0x6b4d,0x6b4d,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73ae,0x6b4d,0x6b6e,0x6b8e,0x6b6e,0x738f,0x7bef,0x7bcf,0x738e,0x73af,0x7bf0,0x8c72,0x94b3,0x9cf4,0x94d3,0x8c92,0x8c72,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x73f0,0x73f0,0x73d0,0x7bf0,0x73cf,0x8411,0x73cf,0x73cf,0x73f0,0x73f0,0x7c10,0x73f0,0x73f0,0x73cf,0x73cf,0x7bf0,0x7bf0,0x7c31,0x8472,0x8452,0x8431,0x8431,0x8452,0x8451,0x8451,0x8451,0x8471,0x8472,0x8431,0x8452,0x8472,0x8472,0x7c31,0x7c52,0x8452,0x8452,0x8452,0x8452,0x8493,0x8493,0x8493,0x94f5,0x8cd4,0x94f5,0x9d35,0xa556,0xadd8,0x94f4,0x94f5,0x94f4,0x9d56,0x9d56,0x9d56,0xa556,0x9d56,0x9d15,0xa556,0xa576,0xa576,0xad97,0xadb7,0xad97,0xadd8,0xb5d8,0xb5d8,0xb5f9,0xb5f8,0xadd8,0xb5d9,0xbe3a,0xc67a,0xc65a,0xb5f9,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x2103,0x2925,0x2965,0x2965,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18a2,0x18a2,0x18c3,0x2103,0x2124,0x2945,0x3165,0x31a6,0x31a6,0x31a6,0x31a6,0x3185,0x3185,0x3165,0x2944,0x2924,0x2104,0x18c3,0x18c3,0x18a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2124,0x31a6,0x31a7,0x2124,0x2104,0x2104,0x2124,0x2104,0x20e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d56,0x9d56,0x9515,0x9d16,0x9d36,0x9d15,0x9d35,0x9515,0x9514,0x9514,0x9d35,0x9d56,0x94f5,0xa577,0xa596,0xb5f8,0x8cd4,0x8cd4,0x9535,0xa576,0x9d35,0x9d55,0x8493,0x8cb3,0x8cd4,0x8472,0x8cd3,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x9514,0x9d55,0xa576,0xad97,0xadb7,0xb5d8,0xa576,0xa556,0xa576,0xa597,0xa597,0x9d35,0x9d35,0x94f5,0x94f4,0x94d4,0x9d15,0x94f4,0x8cb3,0x8cb3,0x8492,0x8cb3,0x94f4,0x94d3,0x8472,0x73f0,0x73d0,0x6bd0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73d0,0x6bcf,0x73b0,0x7410,0x7410,0x7c10,0x8451,0x7c51,0x8cb3,0x8c72,0x7c10,0x7c10,0x7c30,0x73f0,0x73f0,0x7410,0x73f0,0x7c31,0x73d0,0x7c31,0x7c31,0x8431,0x7c10,0x73af,0x73cf,0x73cf,0x6bae,0x638e,0x6baf,0x636e,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x634d,0x634d,0x634d,0x5aec,0x5aec,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x634d,0x73ae,0x7c10, +0x5aeb,0x5aeb,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0x632c,0x630c,0x630c,0x630d,0x736e,0x6b2d,0x6b6e,0x738e,0x738e,0x7bf0,0x7bef,0x7c10,0x7c10,0x738e,0x6b4d,0x634d,0x636d,0x73af,0x7bf0,0x73cf,0x73af,0x7bd0,0x8411,0x8452,0x8c72,0x8cb3,0x94f4,0x8472,0x8451,0x7c10,0x73cf,0x73ae,0x6b8e,0x6baf,0x73cf,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x7410,0x7410,0x73f0,0x73cf,0x73cf,0x73cf,0x73cf,0x73d0,0x73d0,0x7bf0,0x8431,0x8452,0x8452,0x8452,0x8452,0x8452,0x8452,0x8472,0x8492,0x8492,0x8452,0x8452,0x8452,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x7c32,0x8493,0x8472,0x8493,0x94f4,0x8cb4,0x94d4,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0xa597,0xad97,0xa576,0xa556,0xa576,0xa556,0xa576,0xadb7,0xa597,0xadb7,0xadd8,0xadd8,0xb5f8,0xadd8,0xadb8,0xadf8,0xadf8,0xadd8,0xadf9,0xadf9,0xb619,0xbe3a,0xadb8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x2124,0x2965,0x3185,0x2965,0x20e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x2104,0x2945,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x20e3,0x20e3,0x18c3,0x10a2,0x18a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2125,0x2965,0x3186,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a3,0x18e3,0x18e3,0x20e3,0x3186,0x94f5,0x94f5,0x9515,0x9516,0x9d56,0x9d56,0x9d36,0x9d35,0x9d35,0xa596,0xa597,0x9d36,0x94f5,0x94f5,0xb618,0xadd7,0x8cf4,0x9535,0x9515,0x9d35,0xb5d8,0x94f4,0x8452,0x8c93,0x8c93,0x7c31,0x8c93,0x94f4,0x8452,0x7c52,0x8492,0x7c52,0x94f4,0x9514,0x9d15,0xad97,0xa576,0xb5f8,0xadb7,0xa556,0xa576,0xa576,0xadb7,0xa576,0x8cb4,0x94f5,0x9d15,0x8cd4,0x8cd4,0x8472,0x7c31,0x8492,0x8472,0x8cb3,0x8cb3,0x8472,0x7c31,0x7c11,0x7c31,0x73cf,0x73cf,0x6baf,0x73ef,0x73f0,0x6baf,0x6b8f,0x6b8f,0x73b0,0x73d0,0x7c10,0x7c31,0x73ef,0x7c10,0x8c92,0x8431,0x7bf0,0x7c10,0x73d0,0x73d0,0x8451,0x8c92,0x6b6e,0x636e,0x6baf,0x7c10,0x7bf0,0x7c10,0x7bf0,0x6baf,0x6baf,0x6baf,0x636e,0x6bae,0x6b8e,0x5b4d,0x5b2d,0x5b2c,0x5b0c,0x632c,0x5b0c,0x6b6e,0x5b2c,0x6b8e,0x636e,0x5b2d,0x5b0d,0x5b0d,0x5aec,0x52ab,0x5aec,0x5b2c, +0x5acb,0x5aeb,0x5b0b,0x5b0b,0x5acb,0x6b2c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x5b0c,0x632d,0x6b4d,0x6b6e,0x6b8e,0x7c10,0x94b2,0x7c10,0x7c30,0x7bef,0x73ae,0x6b4d,0x632d,0x6b4e,0x7bcf,0x73ef,0x73ef,0x7c30,0x7c10,0x7bd0,0x7bd0,0x8472,0x94d3,0x8cb3,0x8451,0x7c10,0x7bf0,0x73ef,0x73cf,0x73af,0x6baf,0x73af,0x6b8e,0x73cf,0x73cf,0x6b8e,0x6b8f,0x73d0,0x73cf,0x73cf,0x6baf,0x6baf,0x6bae,0x6bae,0x73ef,0x73cf,0x7bf0,0x73d0,0x73d0,0x7c10,0x8431,0x7c31,0x8451,0x7c31,0x8472,0x8472,0x8cb3,0x8472,0x8492,0x8cb3,0x8cb3,0x8c93,0x8c72,0x8452,0x8c93,0x8c93,0x8472,0x8452,0x8452,0x8452,0x8432,0x8451,0x94d4,0x8cb4,0x94f4,0x9d15,0x94f5,0x9d35,0xa556,0xa556,0x9d35,0x9d35,0xa597,0xa576,0xa556,0xa576,0x9d56,0x9d56,0xa597,0x9d36,0x9d36,0xa597,0xa597,0xadb7,0xadb7,0xa597,0xadd8,0xb619,0xadf9,0xadf9,0xadf8,0xb619,0xadd8,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18e3,0x2925,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2125,0x2965,0x2965,0x2945,0x2925,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9516,0x8cf5,0x8cf5,0x9d56,0xa5b7,0xa597,0x9535,0x9d55,0x9d56,0xa596,0xa556,0xa576,0x9d36,0x9d35,0xb5f8,0x9d35,0x9515,0x9d76,0x9515,0x9d35,0xadb8,0x94f4,0x8493,0x8c93,0x8493,0x7411,0x8452,0x8cb4,0x8c73,0x8493,0x7c51,0x7c51,0x8cb3,0x9d35,0x9d35,0xa556,0xad96,0xa576,0xadb7,0xa576,0xa576,0xa597,0xadd8,0xa577,0x8cb3,0x9d15,0x9d15,0x8cd3,0x8cd3,0x8472,0x8472,0x8472,0x7c52,0x94f4,0x8493,0x7c52,0x73f0,0x73f1,0x73f0,0x73cf,0x73f0,0x73cf,0x7410,0x73f0,0x73d0,0x73f0,0x7c10,0x73f0,0x73d0,0x73d0,0x7bf0,0x7c31,0x7410,0x7c31,0x7c31,0x7bf0,0x7c30,0x6baf,0x7c31,0x8c92,0x8c72,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x6baf,0x6baf,0x636e,0x636e,0x6b6e,0x636e,0x636e,0x6b8e,0x634d,0x5b0c,0x5b2d,0x634d,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x634d,0x636d,0x636d,0x5b0c,0x5b0c,0x5b0c,0x5b2c, +0x5aeb,0x5acb,0x52ca,0x528a,0x52aa,0x5acb,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x630c,0x630c,0x632c,0x632c,0x6b6e,0x8471,0x8472,0x7c10,0x7bf0,0x73f0,0x73f0,0x634d,0x632d,0x736e,0x7bcf,0x7c10,0x7c30,0x7c10,0x738e,0x6b6e,0x73af,0x8c92,0x8cb3,0x8451,0x8451,0x7c10,0x73ef,0x6b8e,0x6b8e,0x6b6e,0x738f,0x73af,0x6baf,0x73ef,0x73ef,0x73cf,0x6bae,0x6baf,0x6baf,0x6baf,0x6bae,0x73af,0x6b8e,0x6bae,0x6bcf,0x73f0,0x7c11,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73cf,0x73f0,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x8452,0x8cd3,0x9d35,0x9d15,0x94d4,0x8c93,0x8472,0x8452,0x7c31,0x7c31,0x8c93,0x8473,0x8452,0x7c52,0x9d55,0xa576,0x94f4,0x9d15,0x9d15,0xa555,0x9d35,0x9d35,0x9d15,0x9d15,0x9d35,0xa556,0xa576,0xa597,0xa556,0xa576,0xa597,0xa597,0xa576,0x9d76,0x9d76,0xa596,0xa597,0xa576,0xadb8,0xb61a,0xadf9,0xadd8,0xb639,0xb639,0xadf9,0xadd8,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a3,0x18c3,0x18a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0x9d36,0x9515,0x9515,0x9d56,0x9d56,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d36,0xa597,0xa5b7,0xa597,0xadd8,0x9d36,0x9515,0x9d36,0x9515,0x9535,0x9d35,0x8cd4,0x8cb3,0x8493,0x8cd4,0x7c72,0x8493,0x8cd3,0x8c93,0x8473,0x8472,0x7c11,0x8452,0x94f4,0x9d35,0x9d55,0xa596,0x9d55,0xa556,0xadd8,0xa576,0xadd7,0xa5b7,0x9d56,0x8cd4,0x9514,0x9d55,0x8cb3,0x8472,0x8472,0x8c93,0x8472,0x8493,0x8c93,0x7c72,0x7411,0x73f1,0x73f1,0x73d0,0x6baf,0x6baf,0x73d0,0x7411,0x73d0,0x73cf,0x73cf,0x8472,0x7c11,0x73f0,0x6bd0,0x6bf0,0x7411,0x7411,0x6baf,0x6bb0,0x6bcf,0x73cf,0x7c31,0x7c31,0x73d0,0x73f0,0x6b8f,0x6b8e,0x73cf,0x73ef,0x73ef,0x6baf,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x5b4d,0x6b6e,0x7bf0,0x634d,0x52ec,0x5b0d,0x5b2d,0x5b4d,0x530c,0x530c,0x634d,0x73ce,0x73cf,0x634d,0x634e,0x5b0c,0x5b2d, +0x5acb,0x52aa,0x52aa,0x5aaa,0x5acb,0x5acb,0x630c,0x632c,0x632c,0x632c,0x630c,0x62ec,0x632c,0x6b6d,0x7bef,0x8451,0x8c92,0x8451,0x8431,0x7c10,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73cf,0x8410,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x736e,0x8431,0x94b3,0x8451,0x7c31,0x7c30,0x7bf0,0x73af,0x6b6e,0x6b4e,0x6b4e,0x738f,0x73af,0x6baf,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x6bcf,0x73ef,0x6bcf,0x6bcf,0x6bcf,0x73af,0x6baf,0x6bcf,0x73f0,0x73d0,0x7bd0,0x73d0,0x7bf0,0x73f0,0x6baf,0x6baf,0x7c11,0x8452,0x8c93,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x8472,0x8cb3,0x8472,0x8473,0x8472,0x8452,0x8472,0x8cd4,0x8473,0x8473,0x8493,0x8472,0xadd7,0xa576,0x94f4,0x9d35,0x9d35,0x94d3,0x9d15,0xa556,0x9d15,0xa576,0xad97,0xa597,0xadb7,0xa597,0xa556,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0xa576,0xa596,0xad97,0xb5d9,0xb619,0xadf8,0xadf8,0xb5f9,0xadd8,0xadd9,0xa577,0x1082,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x2124,0x2965,0x3186,0x2965,0x2104,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x2124,0x2966,0x2965,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xa597,0x9d56,0x9d36,0x9d15,0x9536,0x9d36,0x9d56,0x9d76,0xa597,0x9d56,0x9d35,0xa577,0xadb7,0xa576,0xadb7,0xadb7,0x9535,0x94f4,0x9d76,0x9d56,0x94f4,0x8cb4,0x8493,0x9535,0x94f4,0x8c93,0x8493,0x9d35,0x8cb3,0x8472,0x8472,0x8452,0x7c11,0x8472,0x9515,0x8cf4,0x8cd4,0x9d15,0x94d4,0xa577,0xadb7,0xadd7,0xa556,0x94f5,0x9514,0x94f4,0x94f4,0x8cb3,0x8493,0x7c31,0x7c52,0x7c52,0x8452,0x7c31,0x7410,0x7411,0x73f1,0x73d0,0x73f0,0x73cf,0x6baf,0x6bcf,0x7410,0x73f0,0x6baf,0x6baf,0x7c10,0x7c11,0x73f0,0x6bcf,0x6bcf,0x6bd0,0x6baf,0x6b8f,0x6b8f,0x6baf,0x8451,0x7c10,0x636e,0x6b8e,0x73d0,0x6baf,0x636e,0x6bae,0x8430,0x8c72,0x7c10,0x73af,0x73d0,0x73f0,0x6baf,0x6b6e,0x6baf,0x6baf,0x634d,0x636e,0x5b2d,0x52ec,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b2d,0x634e,0x634d,0x6b6d,0x73af,0x6b6e,0x632d,0x5b0c,0x5b0c, +0x52ca,0x5acb,0x5acb,0x62cb,0x62eb,0x62eb,0x630c,0x6b2d,0x630c,0x630c,0x632c,0x6b4d,0x6b8e,0x6b6e,0x73cf,0x8c72,0x7c11,0x7c10,0x8430,0x8410,0x7bef,0x73ef,0x73cf,0x73ae,0x73cf,0x7c10,0x738e,0x6b6d,0x73af,0x7bcf,0x7bf0,0x8c92,0x8451,0x6bcf,0x7c10,0x73cf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x73af,0x73ce,0x73cf,0x6b8e,0x6baf,0x73cf,0x73ef,0x73cf,0x6baf,0x6b8e,0x6baf,0x6bcf,0x6baf,0x8431,0x7c31,0x73cf,0x7bf0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x8452,0x8c93,0x8452,0x7c31,0x8452,0x8452,0x8452,0x8472,0x8493,0x8492,0x8452,0x7c32,0x8472,0x8493,0x8493,0x8473,0x8473,0x8473,0x8c93,0xa556,0xb5f8,0x94d4,0x8cb3,0x94d4,0x8cd4,0x9515,0x9d35,0x9d36,0xa576,0xa576,0xad97,0xadb7,0xadb7,0xadb8,0xadd8,0xa597,0x9d56,0x9d56,0xa597,0xadb7,0xb5d8,0xadb7,0xbe19,0xb619,0xb619,0xbe3a,0xb5f9,0xb5f9,0xb5f9,0xa597,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x2965,0x2965,0x2925,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9d56,0x9d56,0x9d56,0x9d35,0x9515,0x9d35,0x9d36,0x9d56,0xadb8,0x9d76,0xa556,0xa577,0xb619,0xa576,0xa576,0xa597,0xa576,0x8cb3,0x9535,0x9d56,0x94d4,0xa556,0x9515,0x9d35,0x9d35,0x94f4,0x8cb3,0x94f4,0x8cd3,0x8cb2,0x8cb3,0x8492,0x8452,0x8452,0x8493,0x8493,0x8cb4,0x9515,0x94d4,0x8cb3,0xad77,0xb5b8,0x9d15,0x9d15,0xa555,0x94f4,0x8451,0x8cb3,0x94f4,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7c11,0x7c31,0x7c10,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x7c10,0x7c11,0x6baf,0x6baf,0x6bd0,0x73d0,0x73f0,0x73f0,0x6baf,0x6bcf,0x6baf,0x6baf,0x6b8e,0x73f0,0x8c92,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x6bcf,0x636e,0x636e,0x73cf,0x7c10,0x7c10,0x73f0,0x73d0,0x7c11,0x73d0,0x6b8f,0x6baf,0x634e,0x6b6e,0x634d,0x5b2c,0x5b2d,0x5b0c,0x52ec,0x5b0c,0x5b0c,0x5b2c,0x634d,0x634d,0x632d,0x632d,0x634d,0x5b2c,0x5b0b,0x5b2c, +0x52ca,0x5acb,0x630c,0x630c,0x62ec,0x630c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x6b4d,0x6b4d,0x632d,0x7bd0,0x8c72,0x7bf0,0x7c10,0x7bf0,0x7bf0,0x7bef,0x73cf,0x6b8e,0x6b8e,0x73af,0x73ef,0x73ae,0x73af,0x7bf0,0x7bf0,0x7c10,0x8451,0x7410,0x6baf,0x6baf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x6baf,0x73cf,0x7c10,0x73f0,0x6baf,0x6baf,0x6baf,0x73cf,0x6bcf,0x8451,0x8451,0x73af,0x73d0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x7c11,0x8431,0x8c92,0x8c93,0x8452,0x7c31,0x7c11,0x8452,0x8472,0x7c52,0x8452,0x8492,0x7c52,0x7c11,0x8452,0x8473,0x8473,0x8493,0x8c93,0x8c93,0x94f4,0x9d15,0xa576,0x9515,0x9514,0x9d35,0x9515,0x9514,0x9d35,0x9d35,0x9d15,0x9d36,0xad97,0xad97,0xadb8,0xa577,0xa577,0x9d36,0x9d15,0x9d56,0xa576,0xad97,0xadb7,0xb5f9,0xbe3a,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xb5f8,0xbe39,0xadb7,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x3186,0x2945,0x2124,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x18a2,0x2104,0x2945,0x3186,0x2945,0x2104,0x2104,0x20e4,0x20e3,0x20e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xa598,0x9d56,0x9d56,0xa576,0xa556,0x9d36,0x9d15,0x9d36,0xa577,0x9d56,0xa576,0xb5f8,0xb639,0xadd8,0xa577,0xa597,0x9d35,0x8493,0xa577,0x9d15,0x8cd4,0x9d15,0x9d15,0x9d15,0x9d56,0x9d35,0x9515,0x94d4,0x8c93,0x7c31,0x8cb3,0x94f4,0x8c72,0x8472,0x7c51,0x8493,0x8cb3,0x94f4,0x9d15,0x94d4,0x94f5,0x9d36,0x94f4,0x94f4,0x9d35,0x8cb3,0x8472,0x8452,0x8452,0x7c31,0x7410,0x7c31,0x8472,0x7c31,0x7c11,0x7c11,0x7410,0x73f0,0x73d0,0x73d0,0x73d0,0x73cf,0x73f0,0x7c11,0x6b8f,0x6bd0,0x6bcf,0x6bf0,0x73f0,0x7bf0,0x73af,0x73cf,0x6bcf,0x6bae,0x6baf,0x7c31,0x8451,0x6b8e,0x6b8e,0x6b8e,0x636e,0x636e,0x6bae,0x636e,0x73cf,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x6b8f,0x73b0,0x6b6f,0x6b6f,0x6b8f,0x5b2d,0x530c,0x6bae,0x5b2c,0x4acb,0x52eb,0x5b4d,0x52ec,0x73ef,0x6b8e,0x5b2c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb, +0x5aaa,0x5acb,0x630c,0x630c,0x632c,0x630c,0x632c,0x632c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x738e,0x8c71,0x7c10,0x73cf,0x6baf,0x73af,0x7bf0,0x7c10,0x73cf,0x6b4d,0x738e,0x7bcf,0x73ef,0x73ef,0x73cf,0x7bef,0x73ef,0x7bf0,0x7c10,0x6bcf,0x6b8e,0x6b8e,0x6b8f,0x738f,0x738f,0x6b8e,0x6bae,0x6baf,0x6baf,0x6bae,0x6b8e,0x6b8e,0x73af,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x7bf0,0x7c31,0x8c72,0x8c92,0x8c72,0x8451,0x7c31,0x8472,0x8472,0x7c52,0x7c31,0x8472,0x8493,0x7c52,0x8452,0x8472,0x8cb3,0x8cb3,0x8493,0x94f4,0x94d4,0x94d4,0x8cb3,0x9515,0xadb7,0xadb7,0x9514,0x9d15,0x94f4,0x94f4,0x8cd4,0x9d15,0xa577,0xadb7,0xadb8,0x9d56,0xa577,0xad97,0x9d15,0x9d36,0xa576,0xa576,0xa576,0xb5f8,0xadb8,0xb5f9,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xbe39,0xb5d8,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x2103,0x3186,0xa577,0x9d56,0x9d76,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xb5d8,0xb5d8,0xadd8,0xadb8,0xa577,0x9535,0x9d35,0xa597,0x8cb3,0x8cd4,0x94d4,0x9d15,0x9d35,0x8cf4,0x8cf4,0x9515,0x8cb4,0x8452,0x8432,0x8472,0x9d14,0x9cf4,0x8492,0x7c31,0x84b3,0x8452,0x8472,0x94f4,0x9515,0x9514,0x9d35,0x9515,0x8cb4,0x8473,0x8493,0x8472,0x7c52,0x7c31,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x7c52,0x7c11,0x7c51,0x7410,0x73d0,0x73d0,0x73d0,0x73f0,0x73f0,0x8471,0x7c51,0x73f0,0x6bd0,0x73f0,0x7411,0x7bf0,0x73af,0x6bcf,0x73d0,0x6bcf,0x73f0,0x8472,0x7c11,0x6baf,0x6b8e,0x6bae,0x6b8e,0x6b6e,0x73af,0x6b8e,0x73ef,0x73ef,0x73cf,0x73cf,0x73f0,0x73cf,0x73cf,0x73af,0x6b6e,0x6b8f,0x634d,0x634d,0x5b0c,0x6b8e,0x632d,0x52ec,0x52cb,0x5b0c,0x634d,0x6b8e,0x634d,0x5aec,0x52cb,0x52cb,0x52cb,0x52eb,0x4acb, +0x5acb,0x630c,0x6b2c,0x632c,0x632c,0x630c,0x5aeb,0x5b0b,0x630c,0x630c,0x5aeb,0x62ec,0x6b0c,0x8430,0x8c91,0x8450,0x73ef,0x634d,0x6b4d,0x738e,0x73cf,0x73af,0x6b8e,0x73af,0x7bcf,0x73ef,0x73cf,0x73cf,0x7bd0,0x73af,0x73cf,0x7bf0,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x738e,0x73af,0x6baf,0x6baf,0x73af,0x73cf,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x6b8e,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7c10,0x6bcf,0x73cf,0x6b8e,0x6baf,0x73ef,0x73cf,0x73cf,0x73cf,0x73f0,0x7c31,0x7c31,0x8472,0x8c92,0x8431,0x8452,0x8472,0x8452,0x7c72,0x7c32,0x8473,0x8493,0x8c93,0x8c93,0x8c93,0x8cd3,0x8cd4,0x8493,0x8cb4,0x94f4,0x8cd4,0x8c93,0x94d4,0x9d35,0xadb7,0xa556,0xa556,0xa577,0xa556,0x9d15,0x9d36,0xb5d8,0xadd8,0xa576,0x9d56,0x9d35,0xa577,0xa556,0x9d36,0xa556,0xadb7,0xadd8,0xb5f9,0xadd8,0xadd9,0xadf9,0xbe3a,0xbe3a,0xc67a,0xc65a,0xb5f9,0x10a2,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x18a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x20e4,0x2924,0x2965,0x2944,0x2124,0x2104,0x2104,0x2104,0x20e4,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e4,0x18e3,0x2104,0x3186,0xadb8,0x9d57,0xa577,0x9d56,0x9d36,0xa576,0xa597,0xa597,0xa597,0xa597,0xadd8,0xad97,0xa577,0x9d56,0x9d76,0xadd8,0xa597,0xa597,0xa576,0x94f4,0x94f4,0x8cb4,0x94d4,0x9514,0x8493,0x8cd4,0x8cf4,0x8cb3,0x8472,0x8cb3,0x8472,0x7c31,0x8c92,0x8cd4,0x7c72,0x7431,0x8473,0x8c93,0x94f4,0x9d55,0x8cf4,0x94f4,0x9d15,0x8cb4,0x8473,0x8cb3,0x8472,0x7c31,0x7c11,0x7c52,0x7c31,0x7410,0x7c31,0x7c32,0x7c52,0x7411,0x8cb3,0xb5d7,0x9d14,0x8c92,0x8472,0x6baf,0x7431,0x8472,0x7c31,0x7410,0x6bcf,0x6baf,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x73f0,0x73cf,0x73f0,0x6baf,0x73d0,0x6baf,0x6b8e,0x6baf,0x638e,0x6baf,0x6b8e,0x6bae,0x6bcf,0x73cf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x6baf,0x73af,0x6b6e,0x5b2d,0x636e,0x636d,0x636e,0x5b0d,0x5aec,0x632d,0x6b6d,0x634d,0x530c,0x530c,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb, +0x5aeb,0x634c,0x6b8d,0x632c,0x634c,0x634c,0x6b4d,0x630c,0x630c,0x5b0b,0x630c,0x630c,0x738e,0x8c92,0x7c30,0x7c0f,0x634d,0x630c,0x632d,0x6b4d,0x73ae,0x7bef,0x7bef,0x7bf0,0x7bf0,0x73af,0x636e,0x73af,0x7bf0,0x6b8f,0x6b6e,0x73ae,0x73ae,0x6b6d,0x632d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x7c10,0x7c10,0x73d0,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x73f0,0x7c31,0x8452,0x8452,0x7c31,0x7c31,0x7c11,0x8452,0x8472,0x8472,0x8452,0x8c93,0x8c92,0x94d3,0x8c93,0x8472,0x8c93,0x8cb3,0x8493,0x8493,0x8cb3,0x8cd4,0x8cb3,0x94b4,0x9d15,0x9d15,0xa556,0xa556,0x9d56,0xa556,0xa597,0xadb7,0xadd8,0xa577,0xa576,0x9515,0x94f5,0xa556,0xa577,0x9d15,0xa556,0xadb8,0xadb8,0xadd8,0xadd8,0xadd9,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xad97,0x10a2,0x1082,0x10a2,0x18c3,0x18a3,0x18c3,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e4,0x2103,0x2104,0x31a6,0xadd8,0x9d36,0x9d56,0x9d76,0xa597,0xadb7,0xad97,0xa5b8,0xa5b8,0x9d56,0x9d56,0x9d56,0x9d56,0xa576,0x9d56,0xad97,0xadb7,0xa556,0xa556,0x9d35,0x9515,0x8cf4,0x8cd4,0x9515,0x8cd4,0x84b3,0x8c93,0x94f4,0x8cb3,0x8cb3,0x8c93,0x8452,0x7c11,0x8472,0x84b3,0x7c51,0x8cb3,0x9d34,0x94d3,0x94f4,0x8c93,0x8cd3,0x9d15,0x8cb3,0x94f4,0x8cb3,0x7c31,0x7411,0x7411,0x7c11,0x7c11,0x7c31,0x7c32,0x7411,0x7c32,0x7c52,0x8452,0x9d14,0x9cf4,0x7c52,0x8472,0x6bd0,0x6bd0,0x7410,0x6bd0,0x6bcf,0x6baf,0x7c11,0x73f0,0x73f0,0x6bef,0x7410,0x7c10,0x6bcf,0x73d0,0x73af,0x73af,0x6b8f,0x6b8e,0x6b8e,0x6baf,0x6b8f,0x636e,0x636e,0x6b6e,0x6baf,0x6baf,0x638e,0x638e,0x6b8e,0x638e,0x638e,0x634e,0x636e,0x6b8e,0x636e,0x634e,0x6bd0,0x73f0,0x6baf,0x634d,0x632d,0x630d,0x5b0c,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb, +0x5aeb,0x6b6d,0x6b6d,0x632c,0x632c,0x632c,0x6b4d,0x632c,0x630c,0x630b,0x630c,0x6b2d,0x8c31,0x94b2,0x7c50,0x73cf,0x632d,0x6b4d,0x738e,0x73ae,0x73cf,0x7bef,0x8450,0x8451,0x73cf,0x6b8e,0x6b8e,0x7bf0,0x8430,0x73ef,0x6b6d,0x6b8e,0x73cf,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x73f0,0x73d0,0x73cf,0x73f0,0x7410,0x73f0,0x73d0,0x73cf,0x73ef,0x7410,0x7c10,0x73f0,0x73d0,0x7bf0,0x73f0,0x7c11,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8451,0x8431,0x8452,0x8472,0x8472,0x8c93,0x94d4,0x9514,0x94f4,0x8c93,0x8cb3,0x94f4,0x8cd4,0x8472,0x7c52,0x8493,0x8cb3,0x8cd4,0x94d4,0x94f5,0x94f5,0x9d15,0xa556,0x9d56,0xa577,0xadb7,0xadb7,0xa597,0xa576,0x9d35,0x9515,0x9515,0x9d35,0xa576,0xa556,0xa597,0xadb7,0xa597,0xadb8,0xadd8,0xa597,0xa5b8,0xadd8,0xadb8,0xadd8,0xb5d8,0xa556,0x10a2,0x1082,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x18a2,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e4,0x2104,0x2945,0x2965,0x2104,0x2124,0x2924,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e4,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x31a6,0xadb8,0x9d36,0x9d56,0xadd8,0xb5d8,0xadd8,0xadb7,0xa597,0xa598,0x9d36,0x8cf4,0x9515,0xa597,0xa577,0x9d35,0x9d36,0xadb7,0x9d36,0x94f5,0x94f4,0x9515,0x94f5,0x8cd4,0x9d15,0x9d36,0x8493,0x8493,0x94d4,0x8cd3,0x8c93,0x8c93,0x8452,0x7c11,0x7c11,0x8c93,0x8cb3,0x8cb3,0x9514,0x9d35,0x8492,0x8cb3,0x8cd3,0x8cd3,0x8472,0x7410,0x7c51,0x7c51,0x7410,0x7410,0x7c51,0x7c31,0x8472,0x8452,0x7411,0x7c31,0x7c52,0x7c11,0x73af,0x73d0,0x73f0,0x7410,0x73f0,0x6bcf,0x7410,0x7411,0x73f0,0x73f0,0x7c52,0x7410,0x7410,0x7410,0x7410,0x73f0,0x73d0,0x6b8f,0x6b6f,0x6b8f,0x636e,0x6b8f,0x6baf,0x636e,0x638e,0x638e,0x6b8e,0x636e,0x6baf,0x6bae,0x636e,0x638e,0x636e,0x6b8e,0x6b8f,0x634e,0x634e,0x6baf,0x73d0,0x636f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x634e,0x632d,0x5b4d,0x5b0c,0x5b2d,0x5b2d,0x5b2c,0x52ec,0x52cb,0x52eb, +0x630c,0x6b6d,0x6b6d,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x736e,0x8c31,0x8c72,0x7c10,0x634d,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x73af,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73af,0x7c10,0x7c10,0x73cf,0x6b8e,0x6b8e,0x73cf,0x636e,0x636e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73cf,0x7bcf,0x73cf,0x73cf,0x73ef,0x6bcf,0x73cf,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x7c10,0x73f0,0x73ef,0x73cf,0x73f0,0x73f0,0x7c11,0x7c11,0x7c10,0x73f0,0x7c51,0x8452,0x8452,0x8452,0x8451,0x8451,0x8451,0x8452,0x8472,0x8452,0x8472,0x8cb3,0x94f3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cb4,0x8c93,0x8493,0x8cb4,0x8cd4,0x94d4,0x94d4,0x94d4,0x94f5,0x9d15,0x9d35,0xa556,0xadb7,0xa576,0xa577,0xadb7,0xa597,0x9d56,0x9d35,0x9515,0x9d56,0x9d56,0xa576,0xb5f8,0xadd7,0xad97,0xb5d8,0xb5f9,0xadd8,0xadd8,0xadb8,0xb5d8,0xb5d8,0xbe18,0xc618,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2945,0x2945,0x2945,0x2104,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x20e3,0x20e3,0x2103,0x2104,0x2124,0x2125,0x2945,0x2124,0x2945,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x31a6,0xa577,0x9d36,0xa576,0xadb7,0xb5f8,0xadf8,0xb639,0xa597,0x9d56,0x94f5,0x9515,0x94f4,0x94f5,0x9d15,0x9d15,0x9d56,0xa576,0x9d35,0x9d36,0x9d15,0x94f4,0x8cb4,0x8472,0x8c93,0x8cb4,0x8493,0x8cd4,0x8c93,0x8cb3,0x8c93,0x8473,0x8472,0x7c11,0x7c11,0x8431,0x8c93,0x8c93,0x8493,0x8493,0x8493,0x84b3,0x8493,0x8472,0x7c31,0x73f0,0x7c31,0x8472,0x7c52,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7bf0,0x7bf0,0x7c31,0x7c11,0x73f1,0x73f1,0x73f1,0x73f0,0x6bcf,0x6b8f,0x6bef,0x7c31,0x73d0,0x73f0,0x73f0,0x73f0,0x7410,0x7411,0x73f0,0x6bd0,0x73f1,0x6b8f,0x636f,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x636e,0x5b6e,0x5b4d,0x636e,0x636e,0x6bcf,0x6bae,0x73ef,0x73f0,0x6b8f,0x6b6e,0x73cf,0x6b6e,0x6baf,0x73ef,0x6baf,0x634e,0x634e,0x636e,0x638e,0x6b8f,0x634e,0x634e,0x5b4e,0x636e,0x5b0d,0x632d,0x5b0d,0x52cb,0x5b0c,0x636e, +0x632d,0x6b6d,0x6b4c,0x6b4c,0x632c,0x630c,0x632c,0x5aec,0x5b0c,0x632c,0x632c,0x7baf,0x8410,0x7bcf,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x634d,0x630d,0x634e,0x6b6e,0x6b8e,0x6bae,0x6b6e,0x6b8e,0x7bf0,0x73ef,0x6bae,0x634d,0x6bae,0x73cf,0x6b6e,0x6b6e,0x6baf,0x6b6d,0x6b8e,0x73cf,0x7c10,0x7bcf,0x73af,0x73cf,0x7c10,0x7bf0,0x73cf,0x6baf,0x6bcf,0x73f0,0x7bf1,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73ef,0x7bf0,0x73cf,0x73f0,0x7bf1,0x8451,0x8c92,0x8452,0x7c31,0x7c31,0x7c31,0x8452,0x8c92,0x8472,0x7c31,0x8472,0x8492,0x8452,0x8472,0x8472,0x8cb3,0x9d35,0x94d3,0x94f4,0x8cb3,0x8c93,0x8c72,0x94b3,0x94d4,0x94f5,0x94f4,0x94d4,0x94d4,0x94f4,0x9d35,0x9d36,0xa556,0xa577,0xa556,0x9d35,0x9d56,0xa596,0xa597,0xa577,0x9d35,0x9d35,0x9d56,0x9d76,0xa576,0xbdf8,0xd6fb,0xce99,0xc638,0xcebb,0xb5f8,0xadd7,0xadb7,0xbe39,0xc659,0xce9a,0xce9a,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2125,0x2144,0x2945,0x2124,0x2124,0x2945,0x2945,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2925,0x2945,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x20e4,0x20e3,0x18c3,0x18c3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2103,0x2103,0x3186,0xad97,0xa576,0xa5b7,0xa597,0xadb7,0xadb7,0xbe79,0xadd7,0x9d35,0x9535,0x9535,0x9535,0x9515,0x9515,0x9d56,0x9d56,0x94f5,0x9d15,0xa577,0x94f4,0x94f4,0x94d4,0x8493,0x7c53,0x8453,0x8452,0x8c93,0x8c93,0x8cb4,0x8cb3,0x8493,0x8472,0x7c52,0x7c52,0x7c52,0x8452,0x8cb3,0x8472,0x8493,0x8cd4,0x8cb3,0x8472,0x7c52,0x7c52,0x7411,0x7c52,0x8472,0x7c32,0x73f1,0x73f1,0x7c11,0x73f0,0x73f0,0x7c11,0x7c11,0x7c31,0x7c11,0x7411,0x73f1,0x73d0,0x6b8f,0x73d0,0x6b8f,0x6baf,0x6bf0,0x6bcf,0x73f0,0x73f0,0x6bf0,0x6bcf,0x7c31,0x7410,0x73f0,0x73f0,0x634e,0x6baf,0x6bd0,0x638f,0x636e,0x636e,0x638e,0x634e,0x636e,0x6b8e,0x6b8e,0x7c10,0x73cf,0x73f0,0x7c10,0x6b8f,0x636e,0x73af,0x634d,0x636e,0x73f0,0x6baf,0x5b4d,0x5b6d,0x5b4d,0x6baf,0x73f0,0x6b8f,0x636e,0x636e,0x636e,0x5b2d,0x634e,0x5b0d,0x52ec,0x52ec,0x52ec, +0x632c,0x634c,0x634c,0x6b6d,0x632c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x738e,0x73af,0x73ae,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x632c,0x630c,0x632d,0x632d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x6b6e,0x6baf,0x6b8e,0x6b8e,0x73cf,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73d0,0x73d0,0x73cf,0x6bae,0x73ef,0x73f0,0x73f0,0x73f0,0x7c10,0x7c30,0x7c10,0x73cf,0x7c10,0x7c10,0x73f0,0x7c11,0x8452,0x94b3,0x94b3,0x8431,0x7c31,0x7c31,0x7c31,0x8472,0x8431,0x8431,0x8c92,0x8472,0x8472,0x8cb3,0x8cb3,0x8cb3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x9cf4,0x9d35,0x9d15,0x8cd4,0x8cd4,0x8cb3,0x94f4,0x9d15,0x9d35,0x9d56,0x9515,0x9d35,0xa555,0x9d35,0xa576,0xa597,0x9d35,0x9515,0x9d15,0xa577,0xa556,0xad97,0xad76,0xc659,0xc679,0xadb6,0xadb7,0xad97,0xadb7,0xb5f8,0xb618,0xadb8,0xad97,0x9d35,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb7,0xa5b7,0xadf8,0xa597,0xadb7,0xa597,0xb5f8,0xadb7,0x9d56,0xa577,0x9d56,0x9d56,0x9536,0x9d56,0xa577,0x9515,0x94f4,0x9d36,0x9d35,0x9515,0x8cf4,0x8493,0x8493,0x8493,0x8473,0x8472,0x8472,0x8452,0x8c93,0x94d4,0x8cb3,0x8493,0x8473,0x7c32,0x8472,0x7c52,0x8472,0x8472,0x8493,0x9515,0x8473,0x7c31,0x7c52,0x7c31,0x8452,0x8472,0x7c32,0x7c32,0x73f0,0x7c11,0x7c31,0x7c11,0x7bf0,0x8431,0x7c11,0x7c11,0x7c11,0x73f1,0x73f0,0x73f0,0x638f,0x6bd0,0x6bd0,0x6b8f,0x6bd0,0x6bcf,0x6baf,0x6bcf,0x6bef,0x6bef,0x6bef,0x73ef,0x6bcf,0x636e,0x638e,0x6bcf,0x636e,0x632e,0x634e,0x636e,0x636e,0x634e,0x6b8f,0x6b8e,0x6baf,0x7c10,0x73cf,0x6baf,0x73f0,0x6baf,0x6b6e,0x634e,0x634e,0x530c,0x6bcf,0x638e,0x530c,0x5b2c,0x5b4d,0x636e,0x636e,0x634e,0x636e,0x636e,0x5b2d,0x5b2e,0x5b4e,0x52ec,0x52cb,0x52cb,0x4a8a, +0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x630c,0x5aeb,0x5aeb,0x630c,0x5aec,0x634d,0x738e,0x738e,0x6b4d,0x6b4d,0x6b6d,0x632d,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x632d,0x634d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x632d,0x6b2d,0x6b4d,0x738e,0x6b8e,0x6b8e,0x73cf,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73ef,0x7c10,0x7c10,0x73f0,0x7c30,0x7c30,0x73ef,0x73cf,0x73f0,0x73f0,0x73af,0x7bd0,0x8451,0x8452,0x8c92,0x94b3,0x7c10,0x7410,0x7c31,0x7c11,0x7c11,0x8431,0x8452,0x8472,0x8472,0x8472,0x8472,0x8cb3,0x8cf3,0x8cd3,0x94f4,0x8cb3,0x94f4,0x9cf4,0x9d15,0x9d15,0x8cb3,0x8cb3,0x8cd4,0x8493,0x8cd4,0x9515,0x94f4,0x8cd4,0x94d4,0x9d35,0xad96,0xad96,0xa576,0x9d36,0x9515,0x94f5,0x9514,0xadb7,0x9d35,0xa576,0xad76,0xa536,0xa597,0xa597,0xadb7,0xadb7,0xadd8,0xbe39,0xb619,0xadf8,0xadd8,0xad97,0x1082,0x1082,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x18e3,0x18e4,0x20e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e4,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x3186,0xadd8,0xadd8,0xa597,0xa597,0xadd8,0xadd8,0xb619,0xb5d8,0xa556,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xadb7,0x9515,0x9d36,0x94f5,0x94d4,0x8cf4,0x9515,0x8cb3,0x8cb4,0x8493,0x8492,0x7c31,0xadb7,0xb5b7,0x8452,0x8cd4,0x94f4,0x8cb4,0x8473,0x8452,0x8472,0x8472,0x7c31,0x8472,0x84b3,0x8493,0x8c93,0x7c32,0x7c52,0x7c52,0x8473,0x8472,0x7c52,0x8452,0x7c11,0x7c11,0x7c31,0x7c31,0x7c11,0x8431,0x7c11,0x7c11,0x7c31,0x7c31,0x7411,0x73f0,0x6bf0,0x73f1,0x6bf0,0x6bcf,0x7410,0x6bf0,0x73d0,0x7410,0x6bcf,0x73ef,0x73ef,0x6bcf,0x6baf,0x636e,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x6b6e,0x6b8e,0x636e,0x638e,0x73ef,0x73cf,0x6baf,0x73f0,0x73af,0x6b8e,0x634e,0x634e,0x5b4e,0x636e,0x6bae,0x6b8e,0x5b2d,0x5b4d,0x5b2c,0x5b2d,0x636e,0x634d,0x5b4d,0x530d,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x52ec,0x4aab, +0x6b6d,0x6b4d,0x5aec,0x5aec,0x5aec,0x5aeb,0x630c,0x630c,0x632c,0x634c,0x630c,0x630c,0x738e,0x6b8e,0x6b6d,0x634d,0x5b2c,0x5b2c,0x5b0c,0x630c,0x5b2c,0x632c,0x632c,0x632d,0x6b6d,0x634d,0x634c,0x632c,0x632c,0x632c,0x634d,0x634d,0x634d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x636e,0x6b6e,0x6b8f,0x6b8e,0x73af,0x73af,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73af,0x73af,0x7bf0,0x73cf,0x6bcf,0x73ef,0x73af,0x7bcf,0x8431,0x7bf0,0x7c10,0x73d0,0x8452,0x8452,0x7c51,0x7410,0x7c11,0x7c31,0x8452,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x94f4,0x9d14,0x9d14,0x9514,0x8cb3,0x8493,0x94d4,0x9d15,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x9535,0x9d55,0x9535,0x9515,0x94f5,0x94f5,0x94f4,0x8cf4,0xa556,0x9d35,0xa556,0xadb7,0xad97,0xad97,0xa577,0xa577,0xadb7,0xb5f8,0xadb7,0xadd8,0xb5f9,0xadb8,0xa577,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x2104,0x18e3,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0xb5f9,0xadd8,0xadb7,0xa597,0xa596,0xa597,0xb5f9,0xb5d8,0xa556,0xadb7,0xa576,0xa576,0xadd8,0xb5f8,0xa597,0xa577,0x9515,0x8493,0x8cb3,0x8cd4,0x94f4,0x94f4,0x84b3,0x8493,0x8473,0x8472,0x8472,0x8cb4,0x8cb3,0x8cb3,0x94f5,0x94f4,0x8452,0x8452,0x7c32,0x7c31,0x7411,0x7c11,0x8472,0x7c52,0x8493,0x8493,0x7c52,0x8452,0x8493,0x8cb3,0x7c51,0x7c52,0x8431,0x7c11,0x8431,0x8431,0x8452,0x7c11,0x7c11,0x73f0,0x7411,0x7c32,0x7c31,0x7c31,0x7411,0x73f1,0x73f0,0x73f0,0x7431,0x7431,0x73f0,0x7410,0x6baf,0x6baf,0x73cf,0x6bcf,0x6baf,0x638e,0x73f0,0x63af,0x636e,0x6baf,0x73d0,0x6baf,0x6b8f,0x636e,0x6b8f,0x6b6e,0x636e,0x73cf,0x73cf,0x6baf,0x73d0,0x6bcf,0x638e,0x636e,0x5b4d,0x5b6e,0x5b4d,0x638e,0x6b8e,0x7bcf,0x6b8e,0x5aec,0x52ec,0x634d,0x5b4d,0x5b4d,0x530c,0x5b2d,0x6b8e,0x632d,0x5b2c,0x530c,0x52ec, +0x6b4d,0x630c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x6b6d,0x73ae,0x634d,0x632c,0x632c,0x634c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632d,0x6b6e,0x634d,0x632c,0x632c,0x632c,0x6b4d,0x6b2d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x634e,0x6b4e,0x634d,0x636e,0x634d,0x6b6e,0x6b8f,0x73af,0x73cf,0x73cf,0x73cf,0x7bef,0x73ef,0x73cf,0x73af,0x73af,0x7bd0,0x7bf0,0x73ef,0x73ef,0x73cf,0x7bf0,0x8451,0x73cf,0x73f0,0x73f0,0x73f0,0x8452,0x8492,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x8452,0x7c32,0x8452,0x8c73,0x8cb3,0x8cb3,0x94d4,0x94f4,0x9515,0x9d15,0x9d35,0x9514,0x8cb3,0x8cd4,0xa576,0xa577,0x8cf4,0x94f4,0x94d4,0x9514,0x94f4,0x8cd4,0x9515,0x9515,0x8d15,0x9515,0x94f5,0x9536,0x94f5,0x94f4,0x9d36,0x9d36,0x9d56,0xadd7,0xb5f8,0xa597,0xa576,0xa556,0xb619,0xb5f8,0xadd8,0xadd8,0xadd8,0xadb8,0xad97,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2104,0x2104,0x2124,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x20e4,0x18c3,0x18e4,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x20e3,0x20e3,0x18c3,0x20e4,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2103,0x31a6,0xbe3a,0xb619,0xb5f9,0xa577,0x9d35,0x9d56,0xa576,0xadd8,0xadd8,0xadb7,0xadb8,0xadd8,0xadd8,0xadb7,0xa577,0xa597,0x8cd4,0x8493,0x8cb3,0x8cb4,0x94d4,0x94d4,0x8cb3,0x8493,0x7c72,0x8452,0x7c11,0x7c32,0x8472,0x8cb3,0x94f4,0x9514,0x8cd4,0x8493,0x8473,0x7c11,0x7410,0x7c31,0x7c31,0x7c31,0x8472,0x8472,0x8472,0x8493,0x8492,0x8cb3,0x8452,0x7c11,0x7c11,0x7c31,0x8451,0x7410,0x8472,0x8472,0x73f0,0x7410,0x6bd0,0x7c31,0x7c31,0x7c31,0x7c11,0x73f0,0x73d0,0x7410,0x7c31,0x7411,0x7c11,0x73f1,0x6b8f,0x6baf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x73f0,0x6baf,0x638e,0x638f,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8e,0x634e,0x636f,0x6bcf,0x6bcf,0x6baf,0x73d0,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530d,0x6b8e,0x6b6e,0x73af,0x7bf0,0x632d,0x5b2c,0x5b0c,0x530c,0x5b2d,0x5b4d,0x634d,0x6b8e,0x6b8e,0x5b2d,0x52ec,0x52cc, +0x634c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x630c,0x6b4d,0x6b6e,0x6b6e,0x630c,0x630c,0x632c,0x5b2c,0x630c,0x630c,0x632c,0x632d,0x630c,0x5b0c,0x632d,0x636d,0x5b2c,0x630c,0x634c,0x632c,0x632d,0x632d,0x5b0c,0x632d,0x6b4d,0x632d,0x6b4e,0x634e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x73cf,0x73cf,0x7bcf,0x73f0,0x73ef,0x7c30,0x7c31,0x73f0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x73f0,0x73cf,0x6baf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73f0,0x7410,0x7c30,0x8451,0x8452,0x8452,0x7c51,0x8451,0x8472,0x8472,0x8c73,0x8c93,0x94d4,0x8cd3,0x94f4,0x94f4,0x9d15,0x9d15,0x9d15,0x9d15,0x8cd4,0x9d35,0xad97,0x9515,0x8cd3,0x94d4,0x8cd4,0x8cd4,0x8cd4,0x94f4,0x9515,0x9515,0x9515,0x9535,0x94f4,0x9515,0x9515,0x9515,0x9d35,0x9d15,0x9d56,0xa576,0xadb7,0xadb7,0x9d56,0xadd8,0xb619,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xb5d8,0x18c3,0x2124,0x31a6,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2124,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2925,0x2945,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2965,0x2104,0x2104,0x2125,0x2124,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2124,0x2125,0x2945,0x2945,0x2965,0x2945,0x3186,0x3165,0x2965,0x2945,0x2945,0x2124,0x2945,0x2945,0x2125,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x3166,0x2104,0x2104,0x31a6,0xb619,0xb5f9,0xbe3a,0xadd8,0x9d36,0x9d76,0xa576,0xb5f8,0xb5f8,0xa597,0xadd8,0xadd8,0xadf8,0xa597,0xa577,0x94d4,0x94f4,0x8cb4,0x8cb4,0x8cb4,0x94f4,0x8cb3,0x8cd4,0x8cd4,0x8473,0x8472,0x7c32,0x7c52,0x8473,0x8493,0x8cd4,0x8cd4,0x8493,0x84b3,0x7c31,0x7c31,0x7c11,0x7411,0x7411,0x7c11,0x7c11,0x8472,0x9d15,0x7c52,0x8472,0x8c93,0x8452,0x7411,0x7c11,0x7c31,0x7c31,0x7c31,0x7c31,0x8472,0x7410,0x73f0,0x73f0,0x7c11,0x73f0,0x73f0,0x7c11,0x73f0,0x6bd0,0x6bd0,0x7411,0x7411,0x7c11,0x73f0,0x73af,0x73f0,0x7c11,0x73cf,0x6b8f,0x73af,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x636e,0x6bcf,0x6baf,0x638e,0x6baf,0x638e,0x638e,0x6baf,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530c,0x636e,0x73cf,0x6b8e,0x73d0,0x636e,0x5b2d,0x5b2d,0x5aeb,0x52eb,0x5b0c,0x634d,0x636e,0x6b6e,0x634e,0x5aec,0x52ab, +0x632c,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aec,0x632d,0x6b6e,0x630c,0x5aec,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632d,0x632d,0x630c,0x5b0c,0x634d,0x636d,0x634d,0x632c,0x632c,0x5b2c,0x5b2c,0x5b2d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8f,0x6b8e,0x6baf,0x73cf,0x73cf,0x73cf,0x73cf,0x73f0,0x7c30,0x7c31,0x7411,0x7c11,0x7c11,0x7c11,0x7c11,0x73f0,0x73d0,0x73d0,0x73cf,0x6baf,0x73cf,0x73ef,0x73cf,0x73ef,0x73ef,0x73f0,0x7410,0x7c10,0x8431,0x8452,0x8cd3,0x8471,0x8451,0x8c93,0x8c73,0x8452,0x8c93,0x9514,0x9514,0x94f4,0xa555,0x9d35,0x9d15,0x9d15,0x9d15,0xa576,0x9d15,0x8cd4,0x8cd4,0x94f4,0x9515,0x94d4,0x8cb4,0x8cd4,0x94d4,0x9d15,0x9d35,0x9514,0x8cf4,0x9515,0x9d35,0x9d56,0x9d56,0x9d56,0xa556,0xad97,0xadd8,0xa597,0xa576,0xa597,0xa597,0xadb7,0xadd8,0xb5f8,0xb619,0xbe5a,0xb5d8,0x4a6a,0x632d,0x738d,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52cb,0x52ab,0x52ab,0x52ab,0x52cb,0x5acb,0x52aa,0x528a,0x526a,0x4a69,0x5269,0x5269,0x526a,0x528a,0x526a,0x528a,0x528a,0x5aaa,0x5aaa,0x528a,0x528a,0x528a,0x528a,0x5aab,0x5269,0x4a69,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a29,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x528a,0x526a,0x528a,0x528a,0x5acb,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4229,0x4229,0x4229,0x4208,0x4229,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x39e8,0x39e7,0x4208,0x4249,0x634d,0x6baf,0xb619,0xb619,0xb63a,0xadd8,0xa597,0xa5b7,0xa597,0xb5f8,0xadd8,0x9d36,0xa577,0xa5b7,0xa597,0xa5b7,0x9d56,0x8cb4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x94f4,0x84d4,0x84d3,0x9515,0x8cb4,0x8c93,0x8493,0x8472,0x8493,0x8cb4,0x8cb4,0x8cb4,0x8493,0x84b3,0x7c52,0x73f0,0x73f0,0x73f0,0x7c11,0x73d0,0x73f0,0x94b3,0x8c72,0x7c11,0x8493,0x8cb4,0x8452,0x7c31,0x7c52,0x7c52,0x8452,0x7c32,0x7411,0x7c11,0x7c11,0x7bf0,0x7c31,0x7c31,0x7411,0x6bd0,0x73f0,0x73f0,0x73d0,0x6bb0,0x6bd0,0x7c31,0x7c11,0x73ef,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x73d0,0x6b8f,0x6b8f,0x73af,0x634e,0x5b4d,0x636e,0x636d,0x6bcf,0x73ef,0x638e,0x638e,0x638e,0x638e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x634e,0x5b2d,0x636d,0x6b8e,0x6bae,0x636e,0x636e,0x5b0c,0x5b2c,0x5aeb,0x5acb,0x52cb,0x5b0c,0x636e,0x52ec,0x5aec,0x5b0c,0x52cb, +0x630c,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aec,0x632d,0x630c,0x62eb,0x630c,0x630c,0x632c,0x5b0c,0x52eb,0x5b0c,0x630c,0x634c,0x634c,0x632c,0x632d,0x634d,0x634d,0x634d,0x632c,0x5b2c,0x632c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x636d,0x6b8e,0x73af,0x6b8f,0x6b8e,0x6baf,0x6baf,0x6baf,0x73af,0x7bd0,0x73d0,0x73f0,0x73d0,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x7c11,0x73f0,0x7410,0x73f0,0x6bcf,0x6baf,0x73cf,0x73cf,0x73cf,0x7bf0,0x73cf,0x73f0,0x73f0,0x7c11,0x8432,0x8452,0x94f4,0x8c93,0x8c93,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x9515,0xa576,0xa596,0x9d35,0x9d15,0x9d56,0xa576,0x9515,0x8cd4,0x8cb3,0x8cb4,0x9515,0x9515,0x94d4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x8cf4,0x9515,0x9d56,0x9d35,0x9d35,0x9d76,0x9d55,0xa577,0xadb8,0xadb8,0xa597,0xa576,0xa577,0xa597,0xadb7,0xb5d8,0xadb7,0xb5f8,0xbe3a,0xbe39,0x52ab,0x8412,0x844f,0x4a89,0x4a49,0x4229,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e7,0x41e7,0x41e7,0x39c7,0x41c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41c7,0x41c7,0x39c7,0x39a7,0x39a7,0x39a6,0x39a7,0x3186,0x3166,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2925,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x3166,0x2966,0x3165,0x3166,0x31a6,0x3166,0x3186,0x3186,0x3186,0x3186,0x39a7,0x39c7,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e7,0x41e8,0x41e7,0x41e7,0x39c7,0x41e7,0x41e7,0x39c7,0x39c7,0x41e8,0x4208,0x41e7,0x4228,0x4207,0x4a28,0x4a28,0x4208,0x41e7,0x39c7,0x39c7,0x41e7,0x52aa,0x9d36,0x9d56,0xa5b8,0xb5f9,0xadb8,0xa577,0xadb8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d56,0x9d77,0xa577,0x9d56,0x9d36,0x94f4,0x9515,0x9535,0x8cb3,0x8cd4,0x9515,0x8cf4,0x8cb3,0x8cb3,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x8493,0x94f4,0x8cd4,0x8c93,0x8493,0x7c52,0x8472,0x8cd4,0x7c31,0x7410,0x7c31,0x7410,0x7411,0x7c31,0x7c31,0x7c32,0x8472,0x8493,0x8472,0x8492,0x8492,0x8452,0x8472,0x7c72,0x7c31,0x7410,0x7c31,0x73f0,0x7410,0x7c31,0x7c31,0x73f0,0x7c31,0x73f0,0x6bd0,0x6bcf,0x7410,0x7c52,0x7411,0x7410,0x73f0,0x73cf,0x73ef,0x7c30,0x7c31,0x73f0,0x6bcf,0x6b8e,0x636e,0x6baf,0x6b8e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x634d,0x636d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b2d,0x5b2c,0x52eb,0x5aeb,0x5aec,0x52ec,0x5b4d,0x530c,0x5b0c,0x5b2c,0x52eb, +0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52aa,0x52cb,0x5aeb,0x5aec,0x630c,0x630c,0x630c,0x5aec,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x632c,0x634d,0x634d,0x632c,0x632c,0x5b0c,0x632d,0x632d,0x636d,0x634d,0x634d,0x634d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738f,0x738e,0x73af,0x73af,0x73cf,0x73d0,0x73d0,0x8431,0x8c52,0x7c11,0x7c11,0x8452,0x8452,0x8451,0x8451,0x8451,0x8451,0x8451,0x7c31,0x7c10,0x73d0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c11,0x7c32,0x8c73,0x94d4,0x8472,0x8cd4,0x8cb3,0x8452,0x8493,0x8cb4,0x94d4,0x9d35,0xa576,0x9d56,0x9d35,0x9514,0x9d55,0x9d56,0x8cd3,0x8cd4,0x8cb3,0x9515,0x94f4,0x8cd4,0x8cb4,0x8cb3,0x94f4,0x94f5,0x8cd4,0x94f5,0x9515,0x94f5,0x8cd4,0x94f4,0x9d35,0x9d35,0x9d76,0xa576,0xa577,0xa597,0xa576,0xa576,0xad97,0xa597,0xadb7,0xadb7,0xb5d8,0xbe3a,0xc65a,0xc69b,0x630d,0x9cd5,0x94b1,0x52ab,0x4a4a,0x4229,0x4229,0x4209,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x4208,0x526a,0x528a,0x526a,0x4a49,0x526a,0x4a69,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x39e7,0x39a7,0x39e8,0x3186,0x3186,0x31a6,0x39a7,0x31a6,0x39c7,0x39a6,0x2945,0x2965,0x3186,0x31a6,0x39c7,0x39c7,0x31a6,0x39c7,0x4208,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x41e8,0x4a29,0x4a29,0x4a4a,0x524a,0x526a,0x528a,0x528a,0x5aab,0x5aab,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5a8b,0x5a8a,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5aab,0x5acb,0x62eb,0x62eb,0x62eb,0x6b0c,0x630b,0x62eb,0x5aab,0x62cb,0x6b2c,0x736e,0xa577,0xa598,0xa5b8,0xadd8,0xadb8,0x9d36,0xa577,0xadf8,0xadb8,0xadf8,0xa576,0xa597,0xa5b7,0xadb7,0xa577,0x9d35,0x8cd4,0x9515,0x9515,0x8493,0x84b3,0x8cf4,0x8493,0x8cb3,0x8cd4,0x8cb3,0x8c93,0x8cd4,0x8473,0x7c32,0x7c52,0x8cb3,0x8493,0x8452,0x7c32,0x8472,0x7c72,0x8493,0x7c31,0x7c31,0x7c31,0x7410,0x73f0,0x7431,0x7c72,0x8472,0x8492,0x8472,0x7c72,0x8472,0x8493,0x8452,0x7c11,0x7c31,0x8432,0x7c11,0x7c31,0x7c11,0x7c11,0x7c51,0x8471,0x73f0,0x73f0,0x7410,0x73f0,0x73f0,0x73f0,0x7411,0x7411,0x7411,0x7410,0x73ef,0x73ef,0x7c30,0x7410,0x73d0,0x6bcf,0x6b8f,0x6baf,0x6baf,0x638e,0x6bae,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x6b6e,0x636e,0x6b8f,0x6baf,0x6b6e,0x636e,0x636e,0x6baf,0x6baf,0x636e,0x634d,0x6b8e,0x6b6e,0x73af,0x6b8e,0x5b0c,0x5b0c,0x5b2c,0x52ec,0x52eb,0x5b0c,0x636e,0x5b4d,0x530c,0x52eb,0x52cb, +0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aaa,0x5aeb,0x630c,0x5b0c,0x5b0c,0x6b6d,0x6b4d,0x630c,0x630c,0x632c,0x630c,0x5b0c,0x5b0c,0x632c,0x634d,0x632c,0x632c,0x630c,0x632c,0x632d,0x634d,0x634d,0x632d,0x632d,0x634d,0x636d,0x6b8e,0x6b8e,0x8411,0x94b3,0x94b2,0x9492,0x8430,0x73ef,0x73cf,0x73cf,0x73af,0x7bef,0x9492,0x94b3,0x9cf3,0x9492,0x9cf4,0x9cf4,0x9d14,0xa514,0x9cf4,0x94b2,0x94d3,0x94d3,0x7c30,0x7c10,0x8c72,0x9cf4,0xa535,0xa555,0x9cf4,0x94d3,0x9cf4,0x94b3,0x7c31,0x8452,0x94d4,0x8472,0x8c73,0x8cb3,0x8472,0x8472,0x8cb4,0x94d4,0x9d15,0xa576,0x9d56,0x9515,0x9d35,0x9d35,0x9d35,0x94f4,0x8cd4,0x8cd4,0x94f4,0x9d15,0x8cd4,0x8493,0x8cb4,0x8cf4,0x94f4,0x9515,0x94f5,0x8cf4,0x94f4,0x94f4,0x8cb3,0x94f4,0x9515,0x9515,0xa556,0x9d56,0xa597,0xa597,0xa577,0xadb8,0xb5d8,0xa597,0xa577,0xadb8,0xb5f9,0xbe19,0xbe5a,0xbe5a,0x630e,0x9cf6,0x8c70,0x528a,0x4a49,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x630d,0x7baf,0x6b2d,0x5acb,0x738e,0x6b4c,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a29,0x52aa,0x4a69,0x4a6a,0x5acb,0x41e8,0x39c7,0x4229,0x528a,0x4a69,0x4229,0x52aa,0x3165,0x39c7,0x4a49,0x4208,0x4a49,0x526a,0x39c7,0x5acb,0x5acb,0x4a29,0x39c7,0x39c7,0x39e8,0x39e8,0x4208,0x4a4a,0x62ec,0x5aab,0x5aab,0x6b2d,0x5aab,0x62ec,0x62ec,0x62ec,0x6b2d,0x62cb,0x5a8a,0x5aab,0x62ec,0x62cc,0x62ec,0x6b2d,0x62ec,0x5aab,0x5aab,0x6b2d,0x632c,0x62ec,0x62ec,0x736e,0x6b0c,0x62cb,0x62eb,0x630c,0x738d,0x6b4d,0x734d,0x7bce,0x8410,0xa597,0xa597,0xa597,0xa597,0xadd8,0xa597,0xa576,0xadb7,0xadd8,0xa596,0x9d36,0xa597,0xa597,0x9d55,0x9d35,0x9d35,0x94f4,0x94f4,0x9515,0x8493,0x8493,0x94f4,0x8493,0x7c72,0x84b3,0x8cd4,0x94d4,0x8cd4,0x8cd4,0x8493,0x8493,0x8cd4,0x7c52,0x7c52,0x8452,0x7c52,0x7431,0x84b3,0x7c51,0x7c11,0x7c31,0x7c31,0x7c11,0x7c31,0x8472,0x8492,0x7c52,0x8cb3,0x8472,0x8493,0x8cb3,0x8472,0x7c31,0x7c31,0x7c11,0x7c11,0x7410,0x7c31,0x7c31,0x7c51,0x8472,0x73f0,0x6bf0,0x73f0,0x7411,0x73f0,0x73f0,0x7411,0x73f0,0x73d0,0x7410,0x7410,0x7410,0x7c11,0x73d0,0x73d0,0x73cf,0x6bcf,0x6baf,0x636e,0x636e,0x6b8e,0x6baf,0x6b8f,0x6b8e,0x636e,0x6b8e,0x6baf,0x73d0,0x636e,0x6b6e,0x636e,0x634d,0x636d,0x638e,0x6b8e,0x73cf,0x6b8e,0x73cf,0x6b8e,0x634d,0x634d,0x5aec,0x52cc,0x632d,0x5aec,0x5acb,0x632d,0x6b8e,0x52ec,0x52eb,0x5aec,0x52cb, +0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632d,0x6b4d,0x632c,0x738e,0x73ae,0x6b6d,0x630c,0x5aec,0x630c,0x630c,0x5aec,0x5aec,0x630c,0x632d,0x632d,0x634d,0x632c,0x632c,0x636d,0x634d,0x632c,0x632d,0x634d,0x632d,0x6b6e,0x738e,0x7bcf,0x9cb3,0xa4f3,0xa4f3,0x9cd3,0x9d14,0x8471,0x73ef,0x7bf0,0x7bd0,0x9472,0x8c71,0x94d3,0xad75,0x94b2,0x9492,0x9cd3,0xa4f3,0x9492,0xa514,0x9cd3,0x9472,0xadb6,0x9d55,0x8471,0x8c72,0x9cd3,0x9cd3,0xa535,0xb5d7,0x94d3,0xa575,0xadb6,0x8451,0x8c92,0x94f4,0x8431,0x8cb3,0x8cb3,0x8cb3,0x8473,0x8493,0x9d35,0x9d56,0x9d56,0x9d35,0x9d15,0x94d4,0x9515,0x9d56,0x94f4,0x94f4,0x9d15,0x9d56,0xa556,0x94f4,0x8cb3,0x94d4,0x8cf4,0x8cd4,0x9d15,0x9d15,0x8cb4,0x8cd4,0x8cb4,0x8cb3,0x9d14,0x94f4,0x94f4,0xa576,0xad97,0xad97,0xa576,0xadb7,0xad97,0xa577,0xa577,0xad97,0xad98,0xadd9,0xb5f9,0xb5f9,0xb5f9,0x630e,0xa516,0x844f,0x528a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x7390,0x8c72,0x736e,0x62ed,0x8c51,0x7bce,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x5acb,0x526a,0x4a29,0x630c,0x528a,0x5acb,0x4a4a,0x528b,0x52ac,0x5acb,0x39c7,0x632d,0x39a7,0x526b,0x62ec,0x5acb,0x62ec,0x5acb,0x5aab,0x738e,0x632d,0x4a49,0x39a7,0x39a7,0x39a7,0x39c8,0x4208,0x52ab,0x73af,0x6b2d,0x62ec,0x6b4e,0x5acc,0x7baf,0x738e,0x5aab,0x73af,0x736d,0x5acb,0x738f,0x736e,0x5aab,0x5aab,0x6b2d,0x738e,0x5aab,0x62ec,0x83d0,0x736e,0x5aab,0x5aab,0x738f,0x7bae,0x5aab,0x5a8b,0x5aab,0x630c,0x6b0c,0x6b0c,0x734d,0x83ef,0xadb8,0xadb7,0xa576,0x9d56,0xa597,0xb5f8,0xa536,0xad97,0xb5d8,0xadb7,0xa577,0xa597,0x9d56,0xa576,0x9d35,0x8cb3,0x9d15,0x94f4,0x9d35,0x9d15,0x8cf4,0x9515,0x8cd4,0x8473,0x8472,0x8cb3,0x94d3,0x8cb3,0x9514,0x9514,0x94f4,0x9515,0x8472,0x7c31,0x7c52,0x7c72,0x7431,0xa576,0x94f4,0x73d0,0x7411,0x7c31,0x7c11,0x7c31,0x94d3,0x94d4,0x8492,0x8452,0x8473,0x8493,0x8472,0x8472,0x8472,0x7c51,0x7c11,0x7c11,0x7411,0x7c31,0x7c11,0x73d0,0x7c11,0x73f0,0x6bf0,0x7410,0x7c51,0x7410,0x73cf,0x7c10,0x73f0,0x73d0,0x7410,0x73f0,0x73f0,0x7c31,0x73f0,0x6baf,0x73af,0x73af,0x6baf,0x6b8f,0x73d0,0x73f0,0x6b8f,0x73d0,0x6baf,0x63ae,0x6baf,0x73cf,0x73cf,0x634e,0x6b8e,0x636d,0x6b8e,0x638e,0x636d,0x636e,0x638e,0x6baf,0x73f0,0x636e,0x5b2d,0x5b2d,0x530c,0x5b0c,0x634e,0x5b2d,0x5aec,0x5b0c,0x636d,0x5aec,0x52cb,0x52cb,0x52cb, +0x630c,0x630c,0x5aeb,0x630c,0x5aec,0x5b0c,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x634d,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x632c,0x6b4d,0x6b4d,0x632d,0x632c,0x634d,0x636e,0x6b8e,0x636d,0x634c,0x6b6d,0x6b8e,0x6b8e,0x7bf0,0x8c51,0x9451,0x8c30,0x9c92,0x8c31,0xb5b6,0x9d54,0x7c31,0x8410,0x8410,0xa514,0x9491,0x94b1,0xa513,0xa513,0x9471,0x9492,0xb5b6,0xa534,0x9cf3,0x9471,0x9471,0xa514,0xbe18,0x8cb3,0x8c71,0xa534,0x94d2,0x8c71,0xad34,0x8c71,0xa534,0xb5d7,0x8452,0x9d35,0x8c93,0x8451,0x8472,0x8493,0x8492,0x8452,0x8cb3,0x9d15,0x9d55,0x9d35,0x9d15,0x94f4,0x8cb3,0x94f4,0x8cd4,0x8cb3,0x94d4,0x9cf5,0x9d36,0xa576,0x94f4,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x8cd4,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x9515,0x94f4,0x94f5,0xad97,0xb5d8,0xadd8,0xadd7,0xa5b7,0x9d36,0x9d36,0xa597,0xadd8,0xadd8,0xb619,0xbe3a,0xbe59,0xb5f8,0x632e,0xa516,0x842f,0x4a8a,0x4229,0x39e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x738f,0x8c31,0x6b4d,0x630d,0x8c92,0x73ce,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e8,0x630c,0x5acc,0x62cc,0x632d,0x39e8,0x6b6e,0x5aac,0x526a,0x528b,0x5aab,0x526a,0x62ed,0x4a49,0x5acc,0x6b2d,0x632d,0x62ec,0x5acc,0x6b4e,0x738f,0x630d,0x4a49,0x3186,0x3186,0x3186,0x3187,0x39c7,0x630c,0x73af,0x6b6e,0x630c,0x630d,0x5aab,0x6b4e,0x630c,0x526a,0x7bf0,0x7bcf,0x630d,0x9472,0x732d,0x5249,0x524a,0x528a,0x738e,0x6b0c,0x738e,0x9452,0x62cc,0x5a6a,0x526a,0x5acc,0x7bcf,0x6b0c,0x5a8b,0x5a6a,0x526a,0x62cb,0x62cb,0x62eb,0x736e,0xa577,0xadd8,0xadd8,0xa577,0x9d56,0xadd8,0xad97,0x9d56,0xadd7,0xb5d8,0xb5f8,0xa577,0x94f5,0xa576,0xa577,0x94d4,0x9d56,0x9d15,0x94d4,0x94f4,0x94f5,0x9515,0x8cd4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x8cb3,0x8cd3,0x9d14,0x9d35,0x94d4,0x8cb3,0x8493,0x7c52,0x7c72,0x73f0,0x9d36,0xa556,0x7c11,0x7411,0x7410,0x73f0,0x7411,0x8cd3,0x9d35,0x9514,0x8c93,0x8cb4,0x8c93,0x8492,0x8492,0x7c52,0x8452,0x7c11,0x73f1,0x73d0,0x73f0,0x7c11,0x73f0,0x73f0,0x73f0,0x6baf,0x6baf,0x6bcf,0x73ef,0x73cf,0x73f0,0x7410,0x73d0,0x73d0,0x73cf,0x73f0,0x73f0,0x73d0,0x73af,0x73d0,0x6baf,0x6bb0,0x73f0,0x73d0,0x6baf,0x6b8f,0x6baf,0x6bcf,0x6bcf,0x6baf,0x73cf,0x6bcf,0x73f0,0x6b8e,0x634e,0x6bae,0x638e,0x5b2c,0x634d,0x636d,0x6bae,0x6bcf,0x638e,0x638e,0x5b2d,0x5b0c,0x5b0d,0x634d,0x5b2c,0x636d,0x634d,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52ab, +0x5aeb,0x62ec,0x630c,0x62eb,0x630c,0x632c,0x6b8e,0x6b8e,0x6b6d,0x738e,0x6b8e,0x634d,0x632c,0x634c,0x634d,0x632c,0x630c,0x632c,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x634d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x73cf,0x8c52,0x9472,0x9471,0x9471,0x9cb2,0x9451,0xbdf8,0xadb6,0x8471,0x8431,0x94b3,0x9cd2,0x9450,0x9491,0x9cb2,0xb5b6,0x9d14,0x9472,0xb5b6,0xbe17,0x8471,0x8c71,0x9491,0x9492,0xbe18,0x9d14,0x8430,0xc618,0xad95,0x8c51,0xa4f4,0x9492,0xa534,0xadb6,0x7c31,0x9d15,0x8473,0x8472,0x8452,0x8472,0x8472,0x8452,0x94f4,0x9514,0x9d35,0x9d15,0x94f4,0x94d3,0x8cb2,0x9d34,0x8cf3,0x8493,0x8cb3,0x94b4,0x94d4,0x94f5,0x94f5,0x8cd4,0x8cb4,0x94f5,0x8cd4,0x8c93,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x8cd4,0x94f4,0x94f4,0x9515,0xad97,0xadb7,0xadd7,0xadd7,0xa597,0xa577,0xa577,0xa556,0xadb7,0xb639,0xc6bb,0xbe59,0xb618,0xbe19,0x6b2e,0xa536,0x840f,0x4a6a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x41e8,0x738f,0x8411,0x6b4d,0x630e,0x94b3,0x7bcf,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a49,0x5aec,0x6b6f,0x7bd0,0x5aec,0x4229,0x6b6e,0x5aec,0x4a6a,0x5acb,0x528b,0x8411,0x5acc,0x5aab,0x630d,0x62ec,0x4a6a,0x4a4a,0x630d,0x5aac,0x6b6e,0x62ec,0x4a49,0x3186,0x3186,0x3186,0x3166,0x3186,0x5aab,0x6b2d,0x630c,0x5acc,0x738e,0x62cb,0x524a,0x524a,0x5acb,0x8c52,0x83af,0x6b4d,0x9451,0x5a6a,0x4a29,0x4a09,0x4a09,0x6b6e,0x738e,0x73cf,0x8411,0x5a6a,0x524a,0x4a4a,0x4a6a,0x6b6e,0x6b4d,0x5a8a,0x5a8a,0x5a8a,0x5aab,0x62ab,0x62cb,0x6b2d,0x9d56,0xa5b8,0xa5b8,0x9d77,0x9d56,0xadb7,0xadb7,0x9d77,0xadd8,0xb5f8,0xa597,0x9d56,0x9d56,0xadb8,0xad97,0x9515,0xa576,0xa596,0x9d76,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x94d4,0x94d4,0x8472,0x8cb3,0x9d35,0x94f4,0x8cb3,0x8473,0x7c52,0x8452,0x7c11,0x94f5,0x8c93,0x7c52,0x7c31,0x7c52,0x7431,0x7431,0x7c72,0x8cd3,0x8cd3,0x8492,0x8472,0x8493,0x8473,0x8472,0x8472,0x7c11,0x73d0,0x7bf1,0x7bf1,0x73f0,0x7bf0,0x7c11,0x7bf0,0x73f0,0x73f0,0x6bcf,0x6baf,0x73cf,0x7410,0x7c31,0x7bf0,0x73d0,0x73f0,0x73d0,0x73d0,0x73d0,0x7bf0,0x73af,0x6b8f,0x6baf,0x73b0,0x73d0,0x6baf,0x638e,0x636e,0x6b8f,0x73cf,0x73cf,0x73cf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x636e,0x636e,0x5b4d,0x634d,0x636d,0x73ef,0x6bcf,0x6baf,0x634e,0x5b2d,0x5b0d,0x632d,0x632d,0x5b2d,0x5b2c,0x636d,0x6b8e,0x5b0c,0x52ec,0x5aeb,0x52eb, +0x5aeb,0x62ec,0x5aeb,0x62eb,0x632c,0x6b6d,0x738e,0x6b4d,0x73ae,0x73ce,0x636d,0x632c,0x634c,0x634c,0x5b0c,0x5b0c,0x630c,0x632c,0x630c,0x632c,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x634d,0x634d,0x6b6e,0x7bd0,0x8c51,0x8c51,0x8c30,0x8c10,0x9cd2,0x9451,0xb5b6,0xb5f7,0x8cb2,0x8472,0x9cd3,0x9471,0x9cb1,0xa4f3,0x8c30,0xb5b6,0xa575,0x7bd0,0xa515,0xbe18,0x73ef,0x94b2,0xad34,0x8c30,0xbdf7,0xa575,0x8430,0xa554,0x94b2,0x9491,0xb576,0x9492,0xa554,0xb5d7,0x7c52,0x8cb3,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb4,0x9d35,0x94f4,0x8c93,0x8c93,0x8cb3,0x8cb3,0x94f4,0x9535,0x8cd3,0x7c52,0x8c92,0x94b3,0x94d4,0x94f4,0x94d4,0x94f4,0x8cb4,0x84b3,0x8493,0x8493,0x8cb4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x94f5,0xa576,0xadd8,0xad97,0xa556,0xa556,0xa556,0xa577,0xa556,0xa556,0xc67a,0xb5f8,0xadd8,0xa577,0xa597,0xb5d9,0x632e,0xa537,0x840f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4a29,0x738f,0x8411,0x6b4d,0x630d,0x8c72,0x7bcf,0x4228,0x41e7,0x39c7,0x41c7,0x39c7,0x41c7,0x41c7,0x39c7,0x5aab,0x526a,0x52ac,0x5aec,0x4a6a,0x52ab,0x6b2d,0x5acc,0x52ab,0x5acb,0x4209,0x632d,0x4229,0x62ec,0x632d,0x5aab,0x528a,0x4a4a,0x630c,0x41e9,0x6b2d,0x5aec,0x4a49,0x3986,0x3986,0x3186,0x3186,0x3186,0x4a6a,0x5aab,0x4a49,0x4a4a,0x7bcf,0x6b0d,0x4a28,0x5aab,0x7baf,0x7bb0,0x62ab,0x632d,0x8410,0x5249,0x4a08,0x4a08,0x4a29,0x7baf,0x738e,0x6b4e,0x7baf,0x5a4a,0x524a,0x524a,0x528b,0x7bd0,0x736e,0x5a8b,0x5a8a,0x5aab,0x5acb,0x5a8a,0x628b,0x6b4e,0xa598,0xa5b8,0xa5b8,0xa5b8,0x9d77,0xadb8,0xadb8,0xadb8,0xadd8,0xb5f8,0xa576,0x9d35,0xa556,0xadb7,0xad97,0x9d56,0x9d55,0xadf8,0x9d76,0x8cd4,0x94f5,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x94d4,0x84b3,0x7c72,0x9515,0x8cd4,0x8c93,0x8cb3,0x8473,0x7c31,0x7c52,0x9d15,0x8452,0x7431,0x7411,0x7411,0x7c32,0x7c31,0x7c31,0x94b3,0x8c93,0x8472,0x7c51,0x7c31,0x8452,0x8473,0x8472,0x7411,0x7411,0x73f1,0x7c31,0x7c31,0x7c31,0x7c10,0x7c10,0x7bf0,0x73d0,0x6baf,0x6baf,0x73f0,0x7c31,0x7c31,0x7c10,0x73f0,0x7c11,0x73f0,0x73d0,0x73f0,0x7c11,0x8452,0x73d0,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8f,0x6baf,0x73cf,0x73d0,0x7c10,0x73ef,0x73f0,0x6baf,0x6b8f,0x6bae,0x6bae,0x6b6e,0x6b8e,0x6b8e,0x634d,0x636e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0c,0x5b0c,0x634d,0x636d,0x636d,0x5aec,0x5b0c, +0x630c,0x630c,0x630c,0x5aeb,0x632c,0x632c,0x6b4d,0x6b6d,0x6b8d,0x634d,0x634c,0x634c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x634d,0x6b6d,0x6b8e,0x632d,0x5b0d,0x6b4e,0x738f,0x7bf0,0x8c51,0x8410,0xa4f3,0x8c30,0x9cf3,0x9491,0xa4f3,0xbdf7,0x9d54,0x94d3,0x8c92,0x9471,0xa4f2,0xa513,0x9451,0xad34,0xad96,0x73af,0xad35,0xbdd7,0x7bef,0x9cb2,0x9cd3,0x8c10,0xb576,0xad96,0x8430,0x94b2,0x9492,0xad75,0xbdf7,0x8431,0xa555,0xb5f7,0x8452,0x8452,0x8432,0x8472,0x7c51,0x7c31,0x8472,0x94f4,0x9d15,0x8c93,0x8473,0x8452,0x8c93,0x8cb4,0x8cd4,0x8cb3,0x8cb3,0x7c31,0x8472,0x8cd3,0x8cd4,0x8cd4,0x8492,0x8cd4,0x8cb3,0x7c72,0x8472,0x8493,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x9cf5,0xa536,0xadb7,0xa5b7,0xadb7,0xa576,0x9d56,0x9d36,0x9d56,0xa576,0xbe39,0xbe39,0xa597,0xa597,0xadb8,0xb5f9,0xb5f9,0x632e,0xa537,0x7c0f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x5aab,0x6b4e,0x8432,0x6b2d,0x630d,0x9492,0x73af,0x5269,0x41c7,0x39c7,0x39e7,0x39c7,0x39e7,0x41e7,0x39c8,0x632d,0x528a,0x4229,0x4209,0x4a6a,0x630c,0x6b2d,0x5acc,0x630d,0x52ab,0x4a4a,0x39c7,0x39e8,0x5acc,0x6b4e,0x5aab,0x630d,0x526b,0x62ec,0x4a4a,0x630c,0x5aec,0x4a49,0x3986,0x3987,0x3186,0x3186,0x39c7,0x5aec,0x630c,0x4a29,0x4a4a,0x7bf0,0x6b2d,0x5aab,0x736e,0x83d0,0x5aab,0x4a49,0x528a,0x6b6e,0x62cb,0x5249,0x4a49,0x5acb,0x8c31,0x6b2d,0x5aec,0x7bf0,0x62cb,0x526a,0x526a,0x630d,0x9493,0x732d,0x5a8b,0x5a8b,0x62cb,0x62cb,0x5a8a,0x5a8a,0x6b2d,0xad98,0xa598,0xa5b8,0xadd8,0xa597,0xa597,0xadb7,0xb5f9,0xb5f9,0x9d56,0x9515,0x9d56,0x9d56,0xad97,0xbe19,0xadd8,0x9d15,0x9d36,0x8cd4,0x8cd4,0x9515,0x94f4,0x8c93,0x8cb3,0x8c93,0x8493,0x84b3,0x84b3,0x8cf4,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8472,0x7c32,0x7c32,0x94f4,0x8492,0x7410,0x73f0,0x7c11,0x8452,0x7c51,0x7411,0x8c93,0x8cd3,0x8492,0x7c11,0x7c11,0x7c52,0x8472,0x8472,0x7c31,0x73f0,0x8452,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x7bf0,0x7c11,0x73d0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x7411,0x6bf0,0x7410,0x7c31,0x73f0,0x73f0,0x7431,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x73b0,0x73d0,0x73cf,0x73cf,0x7410,0x6bcf,0x6baf,0x6baf,0x73cf,0x73cf,0x6b8e,0x6b8e,0x636d,0x638e,0x636e,0x73af,0x6b6e,0x632e,0x630d,0x5b0d,0x5b2d,0x52ec,0x6b8e,0x73ae,0x5aec,0x630c,0x634c,0x73cf,0x634d,0x5b0c, +0x5aeb,0x634d,0x632c,0x5aeb,0x630c,0x630c,0x634c,0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x634c,0x6b8e,0x634d,0x630d,0x6b6e,0x7bcf,0x9471,0x9451,0x9471,0xb5b6,0x840f,0xa534,0x9cf3,0x8c10,0xad75,0xadb6,0x9d54,0x8c91,0x9471,0x9cb2,0x9cd2,0x9cb2,0xa4f3,0xad95,0x7bce,0xb575,0xb595,0x840f,0x9cd2,0x8c72,0x8c51,0x9cd3,0xb596,0x8410,0xa4f4,0x9492,0xad75,0xbdf7,0x8410,0xad55,0xbe18,0x8472,0x7c31,0x7c11,0x8452,0x8452,0x7c31,0x8432,0x8c93,0x94d4,0x8cb3,0x8452,0x8c72,0x8c93,0x8c93,0x8473,0x8473,0x8472,0x8492,0x8c93,0x8c93,0x8492,0x8472,0x8472,0x8492,0x8cb4,0x8493,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x8cb4,0x94f4,0x94d4,0x9d15,0xa576,0xa597,0xa576,0x9d56,0xa576,0x9d36,0x9d56,0xad97,0xc67a,0xbe5a,0xa597,0xadd8,0xad97,0xadd8,0xb619,0xbe19,0x632e,0xa537,0x7bef,0x4a6a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x4208,0x4208,0x4208,0x4209,0x632d,0x6b2e,0x8c32,0x630d,0x630e,0x9cf4,0x738e,0x5aab,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41e8,0x5acc,0x5acb,0x4208,0x39e8,0x528b,0x5acc,0x5aec,0x528b,0x5aec,0x526a,0x5aab,0x3166,0x4229,0x528b,0x632d,0x5aab,0x5acc,0x4a29,0x52ab,0x5aec,0x5aab,0x5aec,0x4a29,0x3986,0x39a6,0x3186,0x3186,0x39a7,0x528a,0x630c,0x5aab,0x5a8b,0x7bb0,0x62cc,0x62cc,0x62ec,0x62cc,0x5a8b,0x630c,0x4a09,0x526a,0x5aeb,0x5aaa,0x5aaa,0x630d,0x736e,0x5a8b,0x526a,0x6b2d,0x6b2d,0x5aab,0x5aab,0x6b4e,0x83f0,0x62cc,0x5a8b,0x5a8b,0x62cc,0x62ec,0x5aab,0x5a8b,0x6b2e,0xadd8,0xadb8,0xa5b8,0xadb8,0xadb8,0xa597,0xbe19,0xbe39,0xc65a,0x9d35,0x94f5,0x94f4,0xa556,0xa556,0xbe19,0xb5f9,0xadd8,0x9515,0x9515,0x9d35,0x9d35,0x94f5,0x8c93,0x94f4,0x8cd4,0x8cb3,0x8493,0x8c93,0x8c93,0x94d4,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x7c52,0x7c31,0x8472,0x8c92,0x8472,0x7c31,0x7c31,0x8452,0x7c31,0x7411,0x8472,0x8472,0x7411,0x7c31,0x7411,0x7c32,0x8452,0x7c52,0x7c52,0x7c52,0x7c31,0x7431,0x6bf0,0x6bf0,0x7410,0x7c31,0x73f0,0x7c31,0x73d0,0x73f0,0x6baf,0x73f0,0x7410,0x6bf0,0x6bcf,0x73f0,0x7c11,0x7410,0x73f0,0x7410,0x6bcf,0x6baf,0x6baf,0x638e,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73cf,0x73d0,0x73d0,0x6baf,0x73f0,0x7c10,0x6bae,0x636e,0x636e,0x6b8e,0x6b8e,0x73af,0x6b6e,0x5b2d,0x5b2d,0x5b0d,0x632d,0x6b8e,0x6b8e,0x6b8e,0x5b0d,0x632c,0x5b0c,0x636d,0x5b4d,0x5b0c, +0x632c,0x630c,0x5b0b,0x5aeb,0x630c,0x630c,0x634c,0x632c,0x5aeb,0x630c,0x5b0b,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x632c,0x630c,0x5aeb,0x630c,0x6b4d,0x632c,0x630c,0x630c,0x6b8e,0x6b6d,0x6b4e,0x738f,0x8c10,0x9451,0x8c30,0xad55,0xad75,0x7bcf,0xa514,0xad75,0x8c31,0x9492,0x9d13,0xa595,0x94b2,0x9471,0xad34,0xad54,0x94b1,0x94b1,0xad54,0x8c30,0xa513,0xa513,0x8c71,0xad95,0xa555,0x8c91,0x8c51,0x9cd3,0x8410,0xb5b6,0x9cf4,0x8c92,0xad76,0x9451,0xad14,0xbdd7,0x8472,0x8451,0x8431,0x7c31,0x7c31,0x8431,0x7c11,0x8451,0x8c93,0x8c93,0x8452,0x8472,0x8472,0x8452,0x8c93,0x7c31,0x7c52,0x8493,0x8c73,0x8c72,0x8452,0x8452,0x8472,0x8452,0x8c93,0x94f4,0x8cd3,0x8c93,0x8c93,0x8cb3,0x94f4,0x94d4,0x94f4,0x9d56,0x9d35,0xa576,0x9d35,0x9d15,0xa535,0xa535,0xbe19,0xc69b,0xbe19,0xad98,0xa598,0xadb8,0xadb8,0xb5d8,0xbdf8,0xc67a,0x630e,0xa557,0x7bee,0x4a8a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x5acb,0x5aec,0x630e,0x738f,0x6b2d,0x630e,0x83f1,0x738e,0x5aab,0x4a49,0x41e7,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x4229,0x4209,0x39c7,0x31a7,0x41e8,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x3166,0x39e8,0x4208,0x4208,0x41e8,0x4209,0x39a7,0x41e8,0x4a29,0x4208,0x4a2a,0x41e8,0x39a7,0x39a7,0x3186,0x3186,0x3186,0x39a7,0x4a49,0x4a49,0x526a,0x5aab,0x522a,0x524a,0x4a29,0x4a09,0x524a,0x62cb,0x4a08,0x4a08,0x5249,0x5249,0x526a,0x5a8b,0x526a,0x5229,0x4a29,0x526a,0x5aab,0x5aab,0x5aab,0x62cc,0x62ec,0x5a8b,0x5a8b,0x5aab,0x62ec,0x62ec,0x62ec,0x62ab,0x6b4d,0xb5f9,0xa5b8,0xa597,0xadb8,0xad97,0xa597,0xb5d8,0xb5d8,0xbe39,0xad97,0x9d36,0xa556,0xad97,0xa576,0xa556,0xadd8,0xadd8,0xa576,0x94f4,0x9515,0x9d36,0x94f4,0x94f4,0x9d35,0x8cf4,0x8cf4,0x8cf4,0x8cb3,0x8473,0x8493,0x8493,0x8cb3,0x8cb4,0x7c32,0x8473,0x8473,0x7c32,0x7c52,0x8452,0x8472,0x7c52,0x73f1,0x7c31,0x7c11,0x7411,0x7c52,0x7411,0x7c11,0x7410,0x7c31,0x8472,0x8473,0x7c52,0x8473,0x8493,0x7411,0x7411,0x73f0,0x73f0,0x73ef,0x7c30,0x7410,0x7410,0x73f0,0x6bcf,0x73cf,0x7c31,0x7410,0x73f0,0x73f0,0x7bf0,0x7c11,0x7410,0x6bef,0x7410,0x7c30,0x73cf,0x6b8e,0x636e,0x6baf,0x73cf,0x6b8f,0x6baf,0x6b8f,0x73af,0x73af,0x73cf,0x73b0,0x73d0,0x73d0,0x73f0,0x6baf,0x6b8f,0x6b8f,0x6b6e,0x6b6e,0x73af,0x73af,0x6baf,0x6b8e,0x636d,0x636e,0x5b2d,0x636d,0x7bf0,0x5b0d,0x5b2d,0x634e,0x5b0d,0x5b0c,0x530c,0x52eb,0x5b0c, +0x5aeb,0x5aeb,0x5b0c,0x5aec,0x5aeb,0x5aeb,0x630c,0x632c,0x5aeb,0x5aeb,0x62ec,0x630c,0x5b0c,0x634d,0x5b0c,0x5aec,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x632c,0x634d,0x6b4d,0x6b6e,0x7bcf,0x8c31,0x9cd2,0xa534,0xa535,0x8cb2,0x8c31,0xad34,0xad75,0x94b2,0x8c71,0x8c71,0xad54,0x9cd3,0x9492,0xad96,0xa575,0x94d3,0x9491,0x9cd2,0x9492,0x9cd3,0x9cf3,0xa534,0xb5d6,0x94d2,0x94b2,0x94b2,0x94d2,0x94d3,0xb5f7,0xa555,0x8c72,0x9cf4,0x9c93,0xad76,0xadb7,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x7c32,0x7c51,0x7c31,0x7c31,0x8472,0x8431,0x8451,0x8492,0x8493,0x8472,0x8492,0x8472,0x7c51,0x8472,0x8c92,0x8472,0x8472,0x8493,0x84b3,0x9535,0x8cf4,0x8472,0x8493,0x8473,0x8493,0x8cb3,0x94f4,0x9d55,0x9d55,0x9d76,0xa576,0xa576,0x9d35,0xad96,0xce9a,0xce9a,0xb619,0xb5f9,0xa5b7,0xadd8,0xadf8,0xbe3a,0xc65a,0xbe19,0xc67a,0x630e,0xad57,0x7bee,0x4a8a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4a49,0x528a,0x5acb,0x52ab,0x526a,0x630d,0x6b4d,0x6b2e,0x62ec,0x630d,0x5aab,0x526a,0x4a28,0x41e8,0x41e7,0x39c7,0x39c7,0x4a09,0x528a,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x41e8,0x41e8,0x39c7,0x39a6,0x39a7,0x39c7,0x39a7,0x39a7,0x39c7,0x39c7,0x41e8,0x4208,0x41e8,0x41e8,0x39c7,0x41e8,0x41e8,0x41e8,0x4a29,0x4a29,0x4a49,0x4a49,0x4a29,0x5249,0x4a29,0x4a29,0x4a29,0x5249,0x4a49,0x5249,0x4a29,0x5249,0x5269,0x5269,0x5249,0x5269,0x526a,0x528a,0x5a8a,0x5a8a,0x5aab,0x5a8b,0x62cb,0x62cc,0x5a8b,0x62ab,0x62ec,0x62ec,0x62ec,0x62cb,0x6b2d,0xadd8,0xadd8,0xa597,0xa5b8,0xadf8,0xadd8,0xa597,0xa597,0xb5f8,0xadb7,0xa576,0xb5f8,0xadb7,0xadb7,0xa597,0xa576,0xa576,0xa597,0x9d36,0x9515,0x8cf5,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x84b3,0x8493,0x8cb4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x7c32,0x8473,0x8472,0x8493,0x7c72,0x7c52,0x7c32,0x7c31,0x7c52,0x7c52,0x7411,0x6bf0,0x73f1,0x73f0,0x7c11,0x7c32,0x84b4,0x84b4,0x7c52,0x8493,0x7c52,0x7411,0x7411,0x6bb0,0x6bb0,0x6bd0,0x6bb0,0x6bd0,0x6bd0,0x63af,0x636f,0x6bb0,0x6c11,0x6bd0,0x6bf0,0x6bd0,0x636f,0x63b0,0x6bd0,0x5b8f,0x6bd0,0x6b90,0x5b4f,0x5b4e,0x5b4e,0x638f,0x63af,0x5b4e,0x4aed,0x530d,0x6bcf,0x5b6e,0x5b4d,0x5b4e,0x5b4e,0x5b6e,0x63af,0x5b8e,0x532d,0x532d,0x532c,0x5b6d,0x638d,0x5b6d,0x534d,0x4b2c,0x534c,0x536d,0x536d,0x4b0b,0x42eb,0x4b0b,0x430b,0x4b2b,0x4b2c,0x4b2b,0x430a,0x4b2b,0x4b2b, +0x5aaa,0x5aca,0x62eb,0x5aca,0x5aea,0x5aeb,0x630c,0x630c,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632c,0x630c,0x62ec,0x630c,0x62eb,0x62eb,0x630c,0x630c,0x62eb,0x62eb,0x62cb,0x62ec,0x6b2d,0x632d,0x632d,0x73af,0x8431,0x9cd3,0x8c92,0x7c10,0x7bf0,0x9472,0x9cb3,0x8451,0x7c10,0x8451,0x8c51,0x9492,0x94b3,0x9cd3,0x94b3,0x8c72,0x8c71,0x9cd3,0xa534,0x9cf3,0x9d13,0x9d13,0x9cf3,0x94b3,0x8431,0x8c72,0x9cd4,0xa515,0xa535,0x9cf3,0x8c72,0x9492,0x9cb3,0x9492,0x8cb2,0x8492,0x8431,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8431,0x8410,0x8431,0x8c31,0x8410,0x8410,0x8c52,0x94b3,0x8431,0xa514,0x94b3,0x8431,0x8c51,0x8410,0x8c31,0x8c10,0x8c31,0x8c51,0x9492,0x8c92,0x8c51,0x8c51,0x9472,0x9472,0x9473,0x94b3,0x9cf4,0x9cf4,0x9cd3,0xa4d3,0xa4d4,0xb535,0xd65a,0xce3a,0xb597,0xad76,0xad77,0xad56,0xb597,0xbdb8,0xc5f9,0xc5f9,0xc5f9,0xbdd8,0x630f,0xad78,0x7bce,0x528a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x4209,0x630d,0x52aa,0x528a,0x528a,0x526a,0x41e8,0x630d,0x6b6d,0x6b2e,0x5a8a,0x4a49,0x528a,0x526a,0x4a49,0x4229,0x4a49,0x39c7,0x39a7,0x528b,0x7bcf,0x5a68,0x6247,0x6226,0x6206,0x61e6,0x59c6,0x59c6,0x59c6,0x59c6,0x6207,0x6207,0x61e7,0x59c6,0x59c6,0x59c6,0x59c7,0x59e8,0x59c7,0x59c7,0x51e7,0x5208,0x5a49,0x5229,0x4a08,0x41e8,0x4208,0x4208,0x4209,0x4a29,0x4a4a,0x4a29,0x4a4a,0x4a4a,0x526a,0x4a4a,0x4209,0x4209,0x4209,0x4229,0x4a28,0x4228,0x4a28,0x4a48,0x4248,0x4a48,0x4a68,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5a89,0x6b2d,0x6b2d,0x5a8b,0x62cb,0x62ec,0x630c,0x62ec,0x5a8b,0x5aac,0x7c54,0x7c34,0x7434,0x7c34,0x84b5,0x8474,0x7c33,0x7c13,0x7c53,0x7c33,0x7c33,0x73f2,0x7413,0x7413,0x7c54,0x7413,0x6bb2,0x63b2,0x63b2,0x6391,0x5b51,0x6391,0x5b71,0x5330,0x5b50,0x5b71,0x5330,0x5b50,0x5b30,0x5310,0x5b10,0x530f,0x52ef,0x5b30,0x428e,0x42cf,0x4aef,0x4aef,0x42ce,0x42ce,0x42ae,0x428d,0x42ce,0x3aae,0x3a6d,0x3a6d,0x3a6d,0x3a8e,0x3a8e,0x3a6e,0x42cf,0x3a8e,0x324d,0x3a8e,0x428e,0x324d,0x3a8d,0x326d,0x2a6d,0x2a4d,0x2a6d,0x2a6d,0x222c,0x222c,0x224d,0x2a6d,0x32ce,0x2a8d,0x224c,0x224c,0x224c,0x2a6d,0x226d,0x226c,0x2a8d,0x224d,0x224c,0x1a2b,0x222b,0x224b,0x2a8b,0x328b,0x224a,0x2a8a,0x2aab,0x2aab,0x2aab,0x22aa,0x2aaa,0x2aca,0x2ac9,0x32c9,0x32ea,0x2ac9,0x2ac9,0x32c9,0x32e9,0x32e9,0x32e9,0x3309,0x3309,0x3309,0x32e8,0x32e8,0x32e8,0x32e8,0x2ac8,0x2ae8,0x32e8,0x32e8,0x3308,0x3308,0x32e8, +0x7b66,0x7b87,0x7b87,0x7b87,0x7b86,0x7b87,0x7b88,0x7b88,0x7b67,0x7b47,0x7b47,0x8368,0x8348,0x8347,0x8348,0x7b27,0x7b27,0x7b27,0x7b27,0x8327,0x8327,0x8327,0x8307,0x8327,0x8307,0x8328,0x8328,0x8308,0x8b49,0x8b6a,0x8b49,0x8b6a,0x8b6b,0x936a,0x936b,0x936b,0x8b4a,0x938b,0x93ac,0x938c,0x938c,0x938b,0x938c,0x936c,0x9b8c,0x9b8c,0x9b8c,0x9b8d,0x9b6c,0x9b6d,0x9b4c,0x932b,0x92ea,0x9b2b,0x9b2b,0x9b2b,0x9b2b,0x930b,0x92ea,0x9b0a,0x92ea,0x92ea,0x9aeb,0x92aa,0x92aa,0x9aca,0x9aea,0x9ac9,0x9ac9,0x9aea,0x9aea,0x9aa9,0x9aaa,0x9aa9,0x9aa9,0x9aa9,0x9aa9,0xa2ca,0x9aaa,0x9a89,0xab0b,0xaaeb,0x9a89,0x9a89,0x9a89,0x9a89,0xa269,0xa269,0xa248,0xa248,0xa269,0xa269,0xa249,0xa249,0xa249,0xa249,0xa269,0xa26a,0xa26a,0xa269,0x9a08,0xb30c,0xc3ae,0xaaec,0xaa6b,0xa26a,0xa26a,0xa24a,0xa26a,0xaaab,0xaa8b,0xaa4a,0xaa6b,0xaaac,0xaa8b,0x62ce,0xad98,0x7bce,0x528a,0x4249,0x4209,0x4208,0x4208,0x41e8,0x41e8,0x4a2a,0x7bd0,0x526a,0x4a29,0x4a29,0x41e8,0x39c8,0x62ed,0x6b6e,0x630d,0x5269,0x41e7,0x4229,0x4a49,0x4a29,0x4229,0x6b2d,0x39c7,0x39a7,0x5aac,0x9471,0x7b06,0x8a43,0x8a03,0x89e3,0x91a3,0x8982,0x89a3,0x8983,0x8983,0x9183,0x91a3,0x9183,0x9163,0x9164,0x8964,0x8964,0x89a5,0x8184,0x7964,0x7165,0x7165,0x71a6,0x5986,0x3945,0x2945,0x2925,0x2946,0x2946,0x2967,0x3188,0x2968,0x2989,0x2989,0x29a9,0x2989,0x2988,0x2988,0x2987,0x29a6,0x29c6,0x29c6,0x29e6,0x29e6,0x2a06,0x3206,0x3225,0x3245,0x3a45,0x3a66,0x4286,0x4ac6,0x5b07,0x73ad,0x736e,0x5a8b,0x62cb,0x736e,0x6b4d,0x62cc,0x5a6a,0x5aab,0x52d0,0x4ad1,0x52d1,0x4ab0,0x4ad0,0x4ab0,0x4a90,0x4a90,0x4a8f,0x52d0,0x4ab0,0x42b0,0x4ad0,0x52f0,0x4ad0,0x4ab0,0x4ab0,0x428f,0x3a6f,0x3a6e,0x42af,0x3a6f,0x324e,0x42af,0x4acf,0x42af,0x42af,0x42cf,0x42af,0x3a8f,0x42af,0x42af,0x3a8e,0x324e,0x42af,0x42af,0x3a8e,0x42cf,0x3aae,0x42ae,0x3a8d,0x324d,0x326d,0x3a8e,0x3aae,0x326e,0x3aae,0x3aae,0x42ae,0x42ce,0x42ce,0x3aae,0x3acf,0x3aae,0x328d,0x42ce,0x42ee,0x326c,0x3aad,0x3acd,0x3acd,0x3acd,0x430e,0x430e,0x4b0e,0x42ee,0x3aad,0x3acd,0x430e,0x3aad,0x3aad,0x3acd,0x42ee,0x42ed,0x4b0d,0x4b0d,0x42ed,0x42cc,0x42cc,0x42cc,0x4b0d,0x42ec,0x42cb,0x4b0c,0x4b2c,0x4b4d,0x4b4d,0x4b0c,0x4b2c,0x534c,0x532c,0x534c,0x5b6c,0x5b6c,0x534b,0x534c,0x534c,0x536c,0x534b,0x532b,0x5b6b,0x534b,0x534a,0x4b2a,0x534b,0x4b0a,0x532b,0x532b,0x4b0b,0x534b,0x534b,0x534b,0x530a, +0x8c23,0x8c23,0x8c03,0x8c03,0x9404,0x8be5,0x8be4,0x8bc3,0x8bc3,0x93c3,0x93a4,0x93a4,0x93a4,0x9384,0x8b84,0x8b64,0x8b64,0x8b64,0x8b63,0x9364,0x9364,0x9364,0x9363,0x9364,0x9364,0x9364,0x9364,0x9364,0x9b44,0x9b65,0x9b66,0x9b66,0x9b66,0x9b46,0x9b46,0x9b66,0x9b66,0x9b66,0x9b67,0x9b67,0x9b47,0x9b46,0x9b26,0x9b46,0x9b46,0x9b46,0xa326,0xa305,0x9ac5,0x9ae6,0x9ac6,0x9ae6,0xa2e6,0x9ac6,0x9aa5,0x9a85,0x9ac6,0x9ae7,0x9ac6,0x9aa6,0xa2a6,0xa2c7,0x9aa6,0x9a86,0x9aa7,0x9aa7,0x9aa7,0x9aa7,0xa2a7,0xa2a6,0x9a65,0x9a86,0x9a86,0x9aa7,0x9aa7,0x9a87,0x9aa7,0xa2c7,0xa2c7,0x9a87,0x9a86,0xa286,0xa287,0xa287,0xa2a7,0x9a65,0x9a66,0xa2a8,0xa2c8,0xa2a8,0xa2c9,0xa2a8,0xa2a8,0xa2a8,0xa288,0xa288,0xa2a9,0xa2c9,0xa2ca,0xa268,0xcc91,0xccd1,0x9b6c,0xa32c,0xa32c,0xab4c,0xa34c,0xa32c,0xab8d,0xab8d,0xa36d,0xb3af,0xb3ef,0xb3ef,0xb3ef,0x62ce,0xad78,0x73ae,0x528a,0x4a49,0x4229,0x4208,0x4208,0x41e8,0x41e8,0x4209,0x5acb,0x4208,0x41e8,0x41c8,0x41c7,0x39e7,0x526b,0x5aab,0x526a,0x4208,0x39c7,0x39e7,0x41e8,0x41e8,0x4209,0x5aab,0x39c7,0x39a7,0x526b,0x7bcf,0x7b06,0x8a42,0x8a02,0x91c2,0x91a2,0x9182,0x91a2,0x9182,0x9162,0x9142,0x9162,0x9142,0x9142,0x9142,0x9122,0x9143,0x8943,0x8943,0x8123,0x7923,0x7124,0x6944,0x5104,0x30e3,0x20c3,0x18c4,0x18e4,0x18e5,0x18e5,0x1906,0x2107,0x1927,0x1928,0x1928,0x2148,0x2148,0x2168,0x2167,0x2186,0x21a5,0x21a5,0x21c5,0x21e5,0x2a05,0x2a25,0x2a44,0x3264,0x3264,0x3a85,0x42a5,0x5305,0x6385,0x7bcc,0x7b8f,0x62cc,0x6b2d,0x736e,0x736e,0x62cb,0x5a8a,0x6b4d,0x9d56,0x9536,0x9535,0x9515,0x9515,0x9d56,0x9536,0x8cd4,0x8cd4,0x9535,0xa597,0x9d56,0x9515,0xa556,0x9d56,0x9515,0x9d56,0x9515,0x8473,0x8494,0x7c73,0x8493,0x84b4,0x84d3,0x8cf4,0x8cf4,0x7432,0x7c32,0x7c73,0x7c52,0x8493,0x8493,0x7c72,0x7c32,0x8473,0x8cb4,0x7c73,0x7c52,0x7c72,0x8493,0x8493,0x7c51,0x7431,0x7431,0x7c72,0x7c51,0x8cd3,0x94f4,0xa576,0x94f4,0x7c52,0x7c52,0x73f0,0x73f0,0x7410,0x7411,0x7411,0x63b0,0x6bf1,0x7c31,0x7430,0x7c31,0x8cd3,0x7c72,0x8472,0x7c51,0x73cf,0x6bd0,0x7410,0x6bf0,0x6c10,0x7410,0x7430,0x73f0,0x73f0,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x73f0,0x638f,0x638f,0x6b8f,0x638e,0x638e,0x6baf,0x638e,0x636e,0x6baf,0x638f,0x6b6e,0x6b8e,0x73cf,0x73cf,0x6bae,0x6bae,0x73cf,0x8451,0x6b6e,0x636e,0x634d,0x5b2c,0x638e,0x638d,0x634d,0x634d,0x632d,0x632d,0x5b0c,0x634d,0x5b0c,0x5b0c, +0x7368,0x7348,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7b69,0x7b69,0x7b68,0x7b68,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7349,0x7b49,0x7349,0x7328,0x7308,0x7309,0x7309,0x7309,0x7b29,0x7b4a,0x838a,0x7b6a,0x7b6a,0x838b,0x8bcd,0x8bed,0x940e,0x8c0e,0x8bed,0x940e,0x944f,0x942f,0x8c0e,0x8c0e,0x8bee,0x942f,0x9c6f,0x942f,0x8c0e,0x8c0d,0x93ee,0x9c4f,0x9c90,0x8c2e,0x8bed,0x8bed,0x8bee,0x8bee,0x8c2e,0x946f,0x8c4f,0x8c0f,0x83cd,0x83ad,0x8bad,0x8bad,0x83ce,0x83ae,0x83ce,0x83ee,0x83cd,0x83cd,0x8bee,0x8bee,0x942f,0x9470,0x9450,0x8c50,0x8c0f,0x8c0f,0x8c0f,0x8c0f,0x8c2f,0x840f,0x83ef,0x8bef,0x8bef,0x8bef,0x83ef,0x9cb1,0x9cf2,0x8c50,0x8c50,0x9471,0x9471,0x9471,0x8c71,0x8c71,0x9471,0x94b2,0x94b2,0x9cb2,0x9c92,0xad35,0xde9a,0xbdf8,0xbe18,0xb5b6,0xa534,0xa555,0xad75,0xa575,0xb5d7,0xad96,0xad76,0xbdf8,0xbe38,0xbe39,0xbe39,0x5aee,0xad77,0x73ad,0x52ab,0x4a6a,0x4a29,0x4209,0x4208,0x4208,0x41e8,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41c7,0x41e7,0x41e8,0x41e8,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c8,0x41e8,0x39c7,0x39c7,0x4208,0x526a,0x5226,0x51c4,0x51a4,0x5184,0x5985,0x5985,0x5985,0x5984,0x5984,0x5964,0x5964,0x5964,0x5964,0x5944,0x5944,0x5965,0x5985,0x5985,0x5965,0x5985,0x5185,0x5185,0x4145,0x3145,0x3145,0x2945,0x3186,0x3186,0x3146,0x3167,0x3167,0x3187,0x3187,0x3188,0x3188,0x31a8,0x31a8,0x31a7,0x31a7,0x39c6,0x39e6,0x39e6,0x31e6,0x3a06,0x3a06,0x3a26,0x3a46,0x4246,0x4246,0x4266,0x4aa6,0x5ae7,0x6b4c,0x734e,0x62ec,0x6b4d,0x630c,0x734e,0x734d,0x734d,0x736e,0xadd9,0xa597,0x9d76,0x9d96,0xa596,0xa577,0x9d36,0x9d35,0x9d55,0xadb7,0xbe39,0xc69a,0xadf7,0xadd7,0xadb7,0xa556,0xadb7,0xa556,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cf4,0x8cf4,0x9535,0x8493,0x84b3,0x8cb4,0x84b3,0x8cb4,0x8493,0x8452,0x8452,0x8cb4,0x8452,0x8452,0x8493,0x8473,0x84b3,0x84b3,0x8493,0x8472,0x7c52,0x8452,0x8472,0x9514,0xa575,0x9d55,0x8cb3,0x8452,0x8452,0x73f0,0x73f0,0x7c31,0x7410,0x7411,0x6bf0,0x7410,0x7c51,0x7c51,0x7c11,0x73f0,0x73f0,0x8451,0x8492,0x8472,0x73d0,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x7c30,0x73f0,0x73f0,0x7bf0,0x73d0,0x73af,0x73d0,0x73d0,0x6baf,0x638f,0x6bcf,0x6bcf,0x6b8e,0x636e,0x6bcf,0x636e,0x6baf,0x638e,0x6b8f,0x73d0,0x6b8f,0x7bf0,0x7c10,0x73f0,0x7bf0,0x73f0,0x636e,0x634e,0x634e,0x5b0d,0x634d,0x6b8e,0x5b4d,0x634d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x52cb, +0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x6b2c,0x630c,0x6b4c,0x6b4d,0x632c,0x6b6d,0x6b8d,0x634d,0x632c,0x632d,0x630c,0x5b0c,0x630c,0x5b2c,0x530c,0x5aec,0x5aeb,0x5aeb,0x5aec,0x62ec,0x630c,0x6b6e,0x6b4d,0x6b4d,0x83ef,0x94b2,0x9cd2,0xa513,0x9cf3,0x9cf3,0x94b2,0x9cf3,0xa534,0x9d34,0x94d2,0x94b2,0x94b2,0x9d13,0xa555,0x94f3,0x7c30,0x8c71,0x9492,0xa534,0xa555,0x94b2,0x8431,0x8431,0x8c72,0x94d3,0x9d14,0xa534,0xad75,0x9cf3,0x8c91,0x8451,0x7c31,0x7c11,0x7c31,0x73f0,0x8451,0x94f3,0x94f3,0x8cb2,0x8cb3,0x94d3,0x9d14,0xad75,0xb5d7,0x9d55,0x8c92,0x8471,0x7c31,0x7410,0x8471,0x8c72,0x8c72,0x8c92,0x8c93,0x8452,0x9d35,0xa556,0x94d4,0x94d4,0x94b3,0x8c93,0x8c93,0x8493,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0xb5b8,0xb5b7,0x9d15,0x9d15,0x9d56,0xa576,0xa577,0xa576,0xa556,0xa577,0xa577,0xbdf9,0xbe19,0xb5d8,0xb5f8,0xb619,0x52ad,0x9493,0x632c,0x528a,0x52aa,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39a7,0x3186,0x3186,0x3186,0x3986,0x3986,0x39a6,0x3986,0x3986,0x39a6,0x41e7,0x41e7,0x41e7,0x41a7,0x3986,0x39a6,0x41a7,0x41a7,0x41a6,0x39a6,0x39a6,0x41c7,0x41a7,0x41c7,0x39c7,0x39a7,0x4a08,0x526a,0x4a29,0x4a29,0x41e8,0x41e7,0x41e7,0x41e8,0x41e8,0x41e8,0x41e8,0x4a08,0x4a29,0x4a28,0x4a49,0x5269,0x4a48,0x4a49,0x4a28,0x4208,0x4a49,0x5aaa,0x4a28,0x4a28,0x5249,0x5269,0x62ec,0x6b2d,0x6b0c,0x736d,0x6b2d,0x6b0d,0x7bcf,0x8c51,0x7baf,0x9d57,0x9d57,0x9d56,0x9d56,0xa577,0xa576,0x9515,0x8cf4,0x9d35,0xa556,0xadd8,0xbe59,0xadb7,0xbe39,0xadd7,0xa556,0xadb7,0x9d36,0x8cb4,0x9d15,0x94f5,0x8cb4,0x8473,0x8cd4,0x8cb4,0x8493,0x8cb4,0x8cd4,0x8cf4,0x94f5,0x84b4,0x8493,0x8473,0x8473,0x8cd4,0x8473,0x9515,0x8cd4,0x8472,0x8493,0x8472,0x8493,0x8452,0x8452,0x7c52,0x7c51,0x94f4,0x9d35,0x94f4,0x8cb3,0x7c31,0x7c52,0x7410,0x73f0,0x7c11,0x7c10,0x7c31,0x7c31,0x7410,0x7c11,0x7411,0x73f0,0x73f0,0x7c31,0x8472,0x7c51,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x6bcf,0x6baf,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x6baf,0x6baf,0x6bcf,0x6bcf,0x6bd0,0x638f,0x6baf,0x638e,0x73ef,0x7bd0,0x634e,0x634e,0x634d,0x638e,0x73cf,0x73cf,0x73af,0x6b8e,0x7bf0,0x73f0,0x6baf,0x636e,0x634e,0x636e,0x634e,0x73af,0x6b8e,0x632d,0x5b2d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0d,0x52ec, +0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x634d,0x6b4d,0x630c,0x5aeb,0x632c,0x632c,0x6b6d,0x73ae,0x634c,0x636d,0x636d,0x5b2c,0x632c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aec,0x5b0c,0x632c,0x6b6e,0x6b4d,0x7bae,0x8c51,0x9cb2,0x9492,0x8c51,0x9492,0x9cd3,0xa4d3,0x9cb2,0x8c30,0xa514,0xad55,0x9492,0xa514,0x94b3,0x94d2,0xb5d6,0x9d13,0x8c50,0xa513,0x94b2,0x9cb2,0xb5b6,0x9cf3,0x8451,0x9472,0x9cf3,0xa534,0x94b2,0xa554,0xbdf7,0x9d13,0x94d3,0xa555,0xad76,0x94f4,0x8c93,0x9492,0xad55,0xbdf7,0xb5d7,0x94b3,0xa555,0xbdb7,0xa513,0xad55,0xad96,0xa535,0xad96,0x94d3,0x8cb2,0xad95,0xad75,0xa554,0xbe38,0xb5f7,0xa555,0xad96,0xb5d7,0xb5d7,0xbdf8,0xb5b6,0xb5b7,0xbdf7,0xb5d7,0xb5f7,0xad76,0xb5f8,0xadd7,0x94f4,0x94d4,0x9d35,0xb5f8,0xa576,0x9d15,0x9d56,0xa577,0xadb8,0xad97,0xa597,0xadb7,0xadb8,0xb5f8,0xadd8,0xad97,0xadb8,0xb639,0x4a6b,0x4229,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2965,0x3165,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2925,0x2945,0x2945,0x2925,0x2925,0x2945,0x2965,0x3185,0x2965,0x2945,0x2965,0x2965,0x2945,0x2924,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x39a6,0x39a7,0x3186,0x3166,0x3166,0x3186,0x3166,0x3165,0x2945,0x3165,0x39a6,0x3166,0x3186,0x3186,0x3166,0x31a6,0x4208,0x39c7,0x39e7,0x39a6,0x3186,0x39a6,0x39a6,0x3186,0x39a6,0x39a6,0x39c7,0x41e8,0x41e8,0x4228,0x4228,0x4208,0x4228,0x41e7,0x39a7,0x4208,0x526a,0x41e8,0x4a08,0x4a29,0x4a49,0x528a,0x5acb,0x62eb,0x62eb,0x5acb,0x528a,0x630c,0x736e,0x6b6e,0x9d76,0xa597,0xa576,0x9d56,0xa576,0xadb7,0xa597,0x9535,0x9515,0x9515,0xad97,0xb5d8,0xa576,0xb5f8,0xb5d8,0xad97,0xad97,0x9d56,0x8cf5,0x8cd4,0x9d35,0x94f5,0x8cb4,0x8cb4,0x8493,0x8493,0x8493,0x8493,0x9515,0x9515,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8493,0x8cd4,0x9515,0x8cd4,0x8cd4,0x8cd4,0x8c93,0x8cb3,0x8452,0x7c31,0x7c52,0x7c31,0x8493,0x8cb3,0x9514,0x8cd3,0x8cb3,0x8493,0x7c51,0x7c31,0x8452,0x8431,0x7c31,0x7c11,0x73f0,0x7bf1,0x73f0,0x7c11,0x7c31,0x7c11,0x7c52,0x7c11,0x73f0,0x73f0,0x73d0,0x73d0,0x6bd0,0x73f0,0x73f0,0x6bd0,0x6baf,0x6baf,0x73d0,0x73d0,0x73d0,0x73d0,0x6bcf,0x73f0,0x73f0,0x6baf,0x6baf,0x6bce,0x8471,0x73ef,0x6b8f,0x636e,0x6baf,0x6b8e,0x638e,0x634d,0x8c71,0x8431,0x73af,0x6b8e,0x6b8e,0x636d,0x6b8e,0x636d,0x636d,0x73af,0x6b8e,0x632d,0x5b0d,0x5b0c,0x5b4d,0x638e,0x5b4d,0x52ec,0x530c, +0x5aeb,0x5aeb,0x5aeb,0x62eb,0x632c,0x632c,0x630c,0x62ec,0x62ec,0x632d,0x6b4e,0x630c,0x632c,0x6b6d,0x634d,0x5aeb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x630c,0x5b0d,0x5b0d,0x6b6e,0x6b6e,0x6b8f,0x8432,0x9cf3,0xa514,0x8c51,0x9cd2,0x9491,0xb595,0xa533,0x842f,0x9cb2,0xacf3,0x9cd3,0xc638,0x9cf3,0x8410,0xb575,0xad14,0x9cd3,0xc679,0x94f4,0x8410,0xad76,0xbe18,0x8cb2,0x8c92,0xb5d7,0xbe17,0x94b2,0x8c71,0xad54,0x94b2,0xa534,0x9492,0xb596,0xad75,0x94d3,0xbdd6,0xa4f3,0xa4f3,0xce59,0x9492,0xb5b7,0xc639,0xa555,0xad54,0xad55,0x9d14,0xc639,0xadb6,0xa535,0xbe18,0xb5b7,0xbdf8,0xb596,0xad76,0xbdf8,0xb596,0xbdf8,0xce79,0xce59,0xbdd7,0xce59,0xc659,0xbe18,0xce59,0xbdf8,0xdefb,0xceba,0xadb7,0xa596,0xd6da,0xdf1c,0xb5f8,0x9d36,0xa577,0xa597,0xadb8,0xad97,0xb619,0xadf8,0xb5f9,0xb5f8,0xadb7,0xa597,0xa5b7,0xb619,0x52aa,0x18c3,0x18a3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18a3,0x18a3,0x18c3,0x2104,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x2104,0x20e3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2925,0x2124,0x2104,0x2924,0x2945,0x2925,0x2945,0x2965,0x3166,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3186,0x39a6,0x4229,0xa597,0xa597,0xa556,0xa556,0xa556,0xad96,0xadd8,0xadd8,0x9d76,0x9d76,0xa576,0xa556,0xa576,0xbe19,0xadb7,0xad97,0xa576,0x9d35,0x8cf4,0x8cd4,0x9d35,0x9515,0x94f4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8493,0x8cd4,0x8cf4,0x8cd4,0x8493,0x94f4,0x94f4,0x9514,0x8cf4,0x9515,0x94d4,0x8c93,0x8c93,0x8493,0x8452,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x94d4,0x8c93,0x7411,0x7c11,0x7c31,0x7410,0x7c10,0x7411,0x73f1,0x73f1,0x7c11,0x7c51,0x7c51,0x7c11,0x7c32,0x73f1,0x73f0,0x7bd0,0x7bf0,0x7c11,0x7410,0x6bcf,0x7c11,0x7c31,0x73f0,0x7c11,0x7c11,0x73b0,0x73d0,0x73d0,0x73f0,0x7410,0x6b8f,0x73cf,0x73ce,0x8472,0x6baf,0x73ef,0x73d0,0x636e,0x73f0,0x73f0,0x73ef,0x6b8e,0x8430,0x7bf0,0x738f,0x6b8e,0x638e,0x6b8e,0x6bae,0x7c30,0x8c92,0x632d,0x73af,0x73af,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b0c,0x52ec, +0x5acb,0x630c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x6b4d,0x5b0c,0x632c,0x632d,0x632d,0x5b0c,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x5b0c,0x630c,0x6b4d,0x6b4d,0x6b4e,0x7bb0,0x9452,0x9c92,0x9471,0xbdb6,0x8c70,0x9491,0x9cb2,0x8c30,0xad55,0x9472,0xb596,0xc638,0x8c91,0x840f,0xad34,0xa4f3,0xad96,0xc659,0x8451,0x8c11,0xa514,0xce9a,0x9cf3,0x9493,0x9cd3,0xa4f4,0x9cd3,0xad75,0xb596,0x94b2,0xb5b6,0x9472,0xad35,0x9cd3,0xbdf7,0xc6ba,0x9514,0x9452,0xc638,0xad96,0x9492,0xad35,0xb5d7,0xbe18,0xb5d7,0x9d14,0xa535,0xa514,0xbdd7,0xc659,0x9d14,0xc638,0xbdf8,0xb5b7,0xc639,0xb5b7,0xad56,0xdf1c,0xc639,0xa535,0xce3a,0xc639,0xbdf8,0xbdf8,0xbdf8,0xc659,0xdefb,0xc659,0xb5d7,0xce79,0xdefc,0xc67a,0x9d56,0x9d77,0xa577,0xa577,0xad97,0xadb8,0xb619,0xb619,0xb5f9,0xadb8,0xadb7,0xadb7,0xbe5a,0x5aeb,0x20e3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18a3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a2,0x18a2,0x18a3,0x18c3,0x10a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x20e4,0x18e3,0x18c3,0x18e3,0x3186,0xadd8,0xa597,0x9d56,0xa576,0xa556,0xa576,0xa5b7,0xa597,0xadb7,0xa596,0xa576,0x9d35,0x9d56,0xbdf9,0xad97,0x9d15,0x94f4,0x9d36,0x94d4,0x94f4,0x9d35,0x9514,0x94f4,0x8cd4,0x8cb3,0x8cd4,0x9d36,0x8cd4,0x8473,0x8493,0x8493,0x8cd4,0x94f4,0x94f4,0x94d3,0x9d14,0x9535,0x9d55,0x8cb3,0x9d14,0x94f4,0x8452,0x8cb4,0x8cd4,0x8473,0x7c52,0x8493,0x7c52,0x8cd4,0x8493,0x8cb3,0x9514,0x8cd3,0x8cd3,0x7c51,0x7c10,0x7c31,0x7c11,0x7411,0x7411,0x7c31,0x7c51,0x8452,0x7c31,0x7c31,0x7431,0x8452,0x7c11,0x7bf0,0x7bf0,0x7c10,0x6baf,0x6baf,0x6bd0,0x7c31,0x73d0,0x73af,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x6baf,0x6bae,0x6b8e,0x73af,0x6b8f,0x73af,0x7c11,0x73d0,0x6b6e,0x73cf,0x7c30,0x8c92,0x73cf,0x6b8e,0x73af,0x6baf,0x6bae,0x8451,0x6baf,0x73cf,0x8c72,0x73cf,0x632d,0x634d,0x636e,0x5b2d,0x5b2d,0x5b0c,0x5b2c,0x634d,0x5b0c, +0x5aeb,0x5b0b,0x630c,0x630c,0x632c,0x634d,0x630c,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6d,0x630c,0x630c,0x634d,0x632d,0x630c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5acb,0x5aec,0x5b0c,0x634d,0x6b6e,0x6b6e,0x6b6e,0x7bd0,0x8c52,0x8c51,0xb596,0xb5b6,0x840f,0x9471,0x9cb2,0x83ef,0xad34,0x8c51,0xbdd6,0xc638,0x8c71,0x840f,0xa514,0x9c92,0xb5b7,0xc679,0x8c92,0x8c51,0x9cf4,0xc679,0x8cb2,0x9492,0xa514,0xad55,0xad96,0xad96,0xa514,0x94b2,0x9cd3,0x9472,0xc5f8,0x9492,0xce5a,0xbe59,0x8493,0x8c32,0xbdb7,0xc659,0xa535,0x9cf4,0x9cf3,0x9d14,0xbe59,0xad96,0x94d3,0xa515,0xd69a,0xbdf8,0xa535,0xa534,0xad96,0xbdf7,0xce7a,0xb5d7,0xa534,0xe77d,0xc659,0x9d15,0xc639,0xc638,0xc618,0xc639,0xbdf8,0xbdd7,0xce7a,0xce39,0xc5f7,0xbdd7,0xdedb,0xc67a,0x9d76,0xa577,0x9d56,0xa577,0xb5f8,0xb619,0xb639,0xadf9,0xa5b8,0xa5b8,0xadb8,0xadb8,0xb619,0x5aab,0x20e3,0x2124,0x31a7,0x2944,0x18c2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18a2,0x10a2,0x10a2,0x18c3,0x3186,0xa597,0xadb7,0xa577,0xadb7,0xa5b7,0xa576,0xadb7,0xadb7,0xa5b7,0xadd8,0xa576,0x94f5,0xa556,0xb5f8,0x94f5,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9535,0x8cd4,0x9514,0x94f4,0x8493,0x8cd4,0x9535,0x84b4,0x84b4,0x8cb3,0x8472,0x8cb3,0x9d35,0x9d35,0x94f4,0x9514,0x9534,0x9515,0x8cb3,0x9d14,0x9d56,0x8452,0x8472,0x8493,0x7c72,0x7c72,0x7c72,0x7c51,0x8cb3,0x8cf4,0x8cd3,0x9d35,0x8cd4,0x8cb3,0x8493,0x7c11,0x7c32,0x73f0,0x73f0,0x7410,0x7410,0x7c31,0x8472,0x7c31,0x7c31,0x7411,0x73f0,0x6b8f,0x6baf,0x7c10,0x73cf,0x73cf,0x6baf,0x6bd0,0x7c31,0x7c11,0x73d0,0x73f0,0x6bd0,0x73f0,0x6baf,0x6baf,0x6b8e,0x8471,0x7c10,0x634e,0x6b8f,0x6b8f,0x73af,0x738f,0x8431,0x8c92,0x73cf,0x73cf,0x6bcf,0x6baf,0x6b8e,0x6b8e,0x73af,0x73ef,0x7c10,0x73af,0x6b4d,0x6b6d,0x636d,0x632d,0x634d,0x634d,0x5b0c,0x5b0c,0x5b2d,0x5b0c,0x52ec, +0x632c,0x630c,0x5acb,0x5aeb,0x5b0c,0x630c,0x632c,0x734d,0x738e,0x636d,0x6b6d,0x6b6e,0x5aeb,0x5aeb,0x630c,0x632c,0x634d,0x630c,0x5b0b,0x5aeb,0x52cb,0x5aeb,0x5b0c,0x5aeb,0x5b0c,0x632c,0x6b8e,0x6b8e,0x6b8e,0x7bcf,0x8c31,0x9492,0xbdd7,0x9c92,0x8c30,0xbdd6,0xad75,0x8c51,0x9471,0x9cb2,0xad54,0xc638,0x9cf3,0x8c50,0xad54,0x9cd3,0xa535,0xce7a,0x9513,0x8451,0xa514,0xb5f8,0x8451,0x9492,0xbdd7,0xadb6,0x8492,0x94d3,0x9cf3,0xa534,0xbdd7,0x8c51,0xb596,0x9cd3,0xbdf7,0xc679,0x9d14,0x8c51,0xb5b6,0xad35,0xbe18,0xbe18,0xa555,0x8c51,0xbe38,0xb5f8,0x9d14,0xb5b7,0xce9a,0x9d14,0xbe17,0xbe18,0x9cf4,0x94d3,0xd6db,0xbe18,0x9cf4,0xdf1c,0xbdf8,0x9cf5,0xc67a,0xbe38,0xbdf7,0xbe18,0xb5b7,0xc618,0xc5f8,0xc639,0xd69a,0xbdd8,0xd6bb,0xbe5a,0xa5b7,0xa577,0xa557,0xa597,0xb5f8,0xadf8,0xb5f9,0xb5f8,0xadd8,0xadd9,0xadd8,0xadb8,0xadb8,0x526a,0x20e3,0x2945,0x4229,0x4a6a,0x39e7,0x2124,0x10a2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x1082,0x18c3,0x2124,0x3165,0x3186,0x3a08,0xad98,0xadb8,0xa556,0xa597,0xadb8,0xa597,0xadd8,0xb5f9,0xa597,0xa5b7,0xa576,0x94f4,0x9d36,0xadd7,0x94f4,0x8cd4,0x9515,0x94f4,0x8cf4,0x94f4,0x9515,0x94d4,0x94d4,0x94f4,0x8cf4,0x94f4,0x9d35,0x8cb3,0x8493,0x8493,0x8c93,0x8c93,0x8cb3,0x9514,0x8cd3,0x8cf3,0x9534,0x8cd3,0x8cd4,0x8cb3,0x9d15,0x8cb3,0x7c31,0x8493,0x8473,0x8493,0x8472,0x8472,0x8cb3,0x8cb3,0x94d3,0x94f4,0x8c93,0x7c31,0x7c52,0x7c51,0x7c31,0x73f0,0x73f0,0x7c31,0x7431,0x8472,0x7c52,0x6baf,0x7411,0x7411,0x73d0,0x6baf,0x7c10,0x8451,0x73cf,0x73d0,0x6bd0,0x6bf0,0x7411,0x7c31,0x7c11,0x73f0,0x6bf0,0x6bef,0x6bcf,0x6baf,0x6b6e,0x8c92,0x7c10,0x6b6e,0x73d0,0x73cf,0x6b8e,0x636e,0x7c10,0x9cf4,0x73f0,0x73cf,0x6b8e,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b6d,0x73af,0x7bf0,0x6b6e,0x632d,0x636d,0x636d,0x632d,0x5b2c,0x632d,0x5b0c,0x5aec,0x5aec,0x5aec, +0x632c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x6b4d,0x632c,0x736e,0x73af,0x630c,0x62eb,0x632c,0x738e,0x738e,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x630c,0x634c,0x6b6d,0x738e,0x7bcf,0x7bcf,0x8410,0x8431,0xa535,0xad96,0x8c71,0x8c71,0xa513,0x9cf2,0x8c50,0xad75,0xa534,0x9471,0xb575,0x9d13,0x94b2,0xad95,0x8c92,0x9493,0xb576,0x9d34,0x94d3,0xb5f8,0x9d56,0x8cb3,0x9492,0xb5d7,0x9d15,0x73f1,0x94b3,0x94b3,0xad96,0xb5b7,0x8452,0xad76,0xad55,0x9492,0xb596,0xa534,0xa534,0xbe18,0x94b3,0xa555,0xad75,0x9cf3,0xa535,0xb5d7,0x9d35,0x94d4,0xb5b7,0xbe39,0x8cd4,0xadb7,0xbdf7,0xb597,0xb597,0xce9a,0xadb7,0xa535,0xd6dc,0xb5d8,0xa556,0xce9b,0xc639,0xbe18,0xbdf7,0xbdf8,0xdedb,0xbdd8,0xce9a,0xd6db,0xbdf8,0xd6fc,0xbe59,0xa596,0xa556,0xa557,0xa597,0xa597,0xb5f8,0xb5d8,0xa577,0xb5d8,0xb5f9,0xb5f9,0xadd8,0xb5f9,0x4229,0x2104,0x2945,0x422a,0x632d,0x634d,0x5aeb,0x41e7,0x20e3,0x18e3,0x18c3,0x18a3,0x10a2,0x18a2,0x10c2,0x18a3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1061,0x1081,0x1081,0x0861,0x1082,0x0841,0x0020,0x0020,0x0841,0x0020,0x0841,0x0841,0x0841,0x0841,0x0020,0x0841,0x0861,0x1081,0x1082,0x1082,0x1061,0x0861,0x1081,0x0861,0x0861,0x1081,0x1081,0x1081,0x0881,0x1081,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x1082,0x1062,0x1061,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2964,0x4a27,0x5aa9,0x5289,0x4229,0x4a6a,0xad98,0xa597,0xadb7,0x9d56,0xa577,0xa597,0xad97,0xadb8,0xad97,0x9d56,0x9d56,0xa576,0x9d55,0xa576,0x94f4,0x94f4,0x94f4,0x94f4,0x9515,0x94f4,0x9d35,0x9d56,0x8cd4,0x8cb3,0x8cb3,0x8cb3,0x9d15,0x8cb3,0x8cd4,0x8cb3,0x8cb3,0x94f4,0x8cb3,0x8cd3,0x84b3,0x8cb3,0x8cd3,0x94f4,0x94f4,0x94d3,0x8cb3,0x8493,0x7c52,0x8473,0x84b3,0x8cb3,0x7c52,0x8493,0x7c52,0x8cb3,0x8cb3,0x8c93,0x94d4,0x7c31,0x7c52,0x7c31,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x94f4,0x7c31,0x73f0,0x73d0,0x7410,0x73f0,0x73cf,0x7410,0x7c10,0x73d0,0x73d0,0x73f0,0x73f0,0x73f0,0x7bf0,0x73d0,0x73f0,0x73f0,0x6bcf,0x73f0,0x6baf,0x73cf,0x6baf,0x638e,0x6baf,0x636e,0x73d0,0x6b8e,0x6baf,0x6baf,0x6b6f,0x73d0,0x73cf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73cf,0x6b6e,0x634d,0x636e,0x6b8e,0x634d,0x632d,0x5b2d,0x52ec,0x52ec,0x52ec, +0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x6b4d,0x6b6d,0x8410,0x73ae,0x630c,0x6b2d,0x6b4d,0x6b6e,0x73af,0x736e,0x6b6e,0x6b4d,0x6b6d,0x630c,0x5b0c,0x632c,0x6b6d,0x6b6e,0x738e,0x73af,0x7c10,0x8410,0x8c51,0xa535,0x94b3,0x8451,0x8c71,0x8c71,0x9cf2,0xa554,0x9cf3,0x8471,0x8431,0x8c71,0x9d14,0xa535,0x8c72,0x73d0,0x8411,0x8431,0x9d35,0xa576,0x94f4,0x7c52,0x7bf0,0x8431,0x9d14,0x8452,0x73d0,0x7c11,0x8431,0x94b3,0x8c92,0x8452,0x8c93,0x8c72,0x7bf0,0x8432,0x9cf4,0x9d35,0x8c93,0x8452,0x8452,0x8c93,0xa536,0x9d36,0x8c93,0x7c11,0x8431,0xa535,0x94d4,0x8452,0x8c73,0x9493,0xa556,0xad96,0x9d35,0x8cd4,0x94d4,0xad97,0x9cf5,0x9cf4,0xad76,0xb5b7,0xb5b7,0xb5b7,0xad76,0xbe19,0xa556,0xad97,0xb5f8,0x9d35,0xb619,0xad97,0xa556,0xa556,0x9d56,0xadb7,0xadb7,0xb5f9,0xadd8,0xa597,0xadb7,0xb619,0xb5f8,0xb619,0xbe3a,0x4208,0x2104,0x2125,0x422a,0x6b6f,0x73d0,0x8452,0x7bae,0x3185,0x3165,0x2124,0x2104,0x2104,0x2104,0x2124,0x2925,0x2104,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18e3,0x18e3,0x20e3,0x20e4,0x20e3,0x2104,0x2104,0x2124,0x2944,0x2924,0x2945,0x2965,0x3165,0x3165,0x3185,0x2945,0x2965,0x5268,0x734c,0x8c4f,0x630c,0x4a4a,0x4a8b,0xa577,0xadd8,0xadb7,0xa597,0xa597,0xadb8,0xadb8,0xa557,0xa556,0x9d56,0x9d56,0xadb7,0xa576,0x9d15,0x94d4,0x94d4,0x94f4,0x9d15,0x9d15,0x8cd4,0x9d56,0x9d56,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x94d4,0x8cb3,0x84b3,0x94f4,0x8cd4,0x94f4,0x94f4,0x8cb3,0x8c93,0x8c73,0x9d15,0x94d4,0x8c93,0x8cb3,0x8472,0x8473,0x8493,0x8cd3,0x8cd3,0x8493,0x7c11,0x8452,0x7c52,0x8c93,0x9d15,0x8c93,0x7c52,0x7c31,0x7c52,0x7411,0x73d0,0x7c11,0x73f0,0x7c31,0x7c31,0x94d4,0x7c31,0x73b0,0x73b0,0x73d0,0x73f0,0x73d0,0x73d0,0x7c10,0x6baf,0x73d0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73af,0x73af,0x73d0,0x73d0,0x6baf,0x6baf,0x6bcf,0x7411,0x6b8f,0x636e,0x634d,0x7c31,0x6b8e,0x6baf,0x6b8f,0x6b6e,0x6baf,0x73cf,0x6baf,0x6bcf,0x6baf,0x6bae,0x73af,0x73af,0x73cf,0x73af,0x6bae,0x638e,0x6b8e,0x636e,0x636e,0x634e,0x634e,0x5b2d,0x52ec,0x52cb,0x52cb, +0x5aeb,0x630c,0x630c,0x630c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x73cf,0x7c30,0x634c,0x5aeb,0x630c,0x632d,0x630d,0x6b4e,0x6b8e,0x6b6e,0x73ae,0x73ae,0x6b6d,0x636d,0x636d,0x634d,0x632d,0x6b6e,0x73ae,0x73cf,0x73cf,0x7c10,0x8451,0x7bf0,0x73cf,0x7bd0,0x8431,0x8451,0x73f0,0x634e,0x6b6e,0x6b6f,0x738f,0x7bd0,0x738f,0x6b6e,0x738f,0x738f,0x73d0,0x7c11,0x73f1,0x6bb0,0x73f0,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x7bf0,0x7bf0,0x7bd0,0x7c11,0x7c11,0x73f0,0x73f0,0x7c11,0x7c32,0x7c11,0x7c11,0x73f1,0x7c11,0x8452,0x7c11,0x7411,0x7c52,0x7c11,0x8451,0x8472,0x8472,0x8472,0x8472,0x8472,0x8473,0x8c73,0x8cb3,0x94f4,0x8cf4,0x8493,0x8493,0x8cb4,0x8c93,0x8452,0x8cb4,0x94f5,0x8c93,0x8cb4,0x94f5,0x8cb4,0x8cb4,0x94d4,0x9515,0x9515,0x94f5,0x9d36,0xa597,0xadb7,0xa597,0xadd8,0xadb8,0xa577,0xadb8,0xadd8,0xadf8,0xb619,0xbe39,0x4208,0x2124,0x2945,0x424a,0x6b90,0x73f1,0x9cf6,0x9cd2,0x39a6,0x2945,0x2104,0x20e4,0x20e3,0x18e3,0x2104,0x2124,0x20e4,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x2104,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x20e3,0x20e4,0x2104,0x20e3,0x18e3,0x18c3,0x18c3,0x1082,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0861,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2945,0x3165,0x3165,0x2965,0x3185,0x3185,0x3186,0x3186,0x3165,0x31a6,0x4a28,0x83ef,0xb595,0x6b2d,0x4a6a,0x52ab,0xadd8,0xb619,0xadd8,0xadd8,0xa597,0x9d77,0xa556,0xa597,0xa576,0x9d35,0x9d15,0x9d15,0x9d36,0x9d15,0x8cd4,0x8cf4,0x94d4,0x94f4,0x9d15,0x94d4,0x8cb4,0x9515,0x94d4,0x8cb4,0x8c93,0x8cd4,0x8cb4,0x84b3,0x8493,0x8493,0x94d4,0x94f4,0x94f4,0x94f4,0x8c93,0x8c93,0x8493,0x7c52,0x8452,0x8472,0x8473,0x84b3,0x7c52,0x94f4,0x8472,0x8452,0x7c11,0x8473,0x8452,0x7c31,0x9515,0x8cd4,0x7411,0x73f0,0x7431,0x7c52,0x7c11,0x73f1,0x7411,0x7c31,0x7411,0x8492,0x7c11,0x8472,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x7c31,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x6baf,0x7c10,0x73d0,0x6baf,0x73d0,0x7c11,0x73f0,0x73d0,0x73f0,0x6b8f,0x634d,0x638e,0x9d34,0x7c30,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73cf,0x73f0,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x6baf,0x73cf,0x6bcf,0x638e,0x636e,0x6b8e,0x632d,0x630d,0x6b6e,0x5b0c,0x52eb,0x52eb,0x52eb, +0x5aeb,0x630c,0x630c,0x62ec,0x6b0d,0x6b4d,0x6b4e,0x6b4d,0x6b6d,0x7bef,0x6b8e,0x5b2c,0x5b0c,0x5aeb,0x5acb,0x5acc,0x630d,0x6b6d,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b8e,0x6b4d,0x6b6d,0x738e,0x73ae,0x738e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x6baf,0x6baf,0x73d0,0x6bcf,0x6b8e,0x6b6e,0x634d,0x634e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x73af,0x73af,0x738f,0x6baf,0x6bb0,0x73f0,0x7430,0x73f0,0x7bf0,0x8451,0x7c31,0x7c10,0x7bf0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c31,0x7c31,0x8452,0x7c51,0x7411,0x7c31,0x7c11,0x7c31,0x7c52,0x7c52,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x8472,0x8472,0x8c93,0x94d4,0x94d4,0x84b3,0x8472,0x8473,0x8493,0x8472,0x8473,0x8cb3,0x8cd4,0x84b3,0x8cd4,0x94f5,0x8cd4,0x8cb4,0x9515,0x9515,0x94d4,0x94f5,0xa556,0xad97,0x9d56,0xa597,0xa577,0x9d36,0xa556,0xadb7,0xadd8,0xb619,0xbe39,0xc69b,0x4208,0x2104,0x2946,0x4a6b,0x6b6f,0x7c11,0xad78,0xa534,0x3185,0x20e4,0x18c3,0x18c3,0x18a3,0x18a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2124,0x18c3,0x20e3,0x18e3,0x20e4,0x2924,0x39a6,0x9cd3,0xce39,0x632d,0x4a6b,0x52cc,0xadd8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0x9d56,0x9d56,0x9d15,0x9d36,0x9d36,0x9d15,0xa576,0x94f4,0x9535,0x9535,0x94f4,0x94f5,0x94f5,0x8c93,0x8493,0x8cb4,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x94f4,0x8493,0x8452,0x8473,0x8473,0x8493,0x8cb3,0x8cb3,0x8452,0x8492,0x8472,0x8c92,0x8cd3,0x8cb3,0x8493,0x7c32,0x8cb3,0xa556,0x8431,0x7c11,0x8c93,0x8472,0x7c11,0x7c32,0x8472,0x7c31,0x7c11,0x7c52,0x7c72,0x7c52,0x73f0,0x7411,0x73f0,0x7410,0x8472,0x7c52,0x8cd4,0x6bb0,0x73f0,0x6bcf,0x7410,0x7c31,0x7411,0x73f0,0x7410,0x73f0,0x73f0,0x73cf,0x73f0,0x7c51,0x73f0,0x6baf,0x73d0,0x7c31,0x73f0,0x6b8f,0x6b8f,0x6b8f,0x6bae,0x6bae,0x6baf,0x6b8e,0x73d0,0x6baf,0x6bcf,0x6b8f,0x73cf,0x73d0,0x73f0,0x636d,0x6b8e,0x6baf,0x6bcf,0x6bcf,0x73cf,0x73cf,0x6b8e,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x5b0c,0x52ec,0x52ec,0x52ec, +0x630c,0x5aeb,0x62ec,0x630c,0x6b4d,0x736e,0x6b4d,0x634d,0x7bef,0x6b8e,0x5b0c,0x632d,0x632d,0x5aec,0x5aeb,0x62ec,0x6b6e,0x6b4d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x6b8e,0x6b6d,0x6b6e,0x738e,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x6baf,0x6b8e,0x6bae,0x73cf,0x6baf,0x6b6e,0x6b6e,0x634e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x73af,0x73af,0x6b8f,0x73af,0x73af,0x73af,0x7bf0,0x8471,0x7c31,0x7c10,0x7c11,0x7c10,0x73f0,0x73f0,0x7bf0,0x8431,0x8472,0x7c31,0x7c31,0x8432,0x8452,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x7c31,0x7c52,0x7c52,0x7c31,0x7c31,0x8472,0x8493,0x8c93,0x8452,0x8452,0x8472,0x8472,0x8c93,0x94b4,0x94d4,0x8cd4,0x84b3,0x8472,0x7c72,0x8472,0x94d4,0x8cb3,0x8cd4,0x8cf4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x94f4,0x94d4,0x9d15,0x9d56,0xadb8,0xa597,0xa556,0x9d36,0xa557,0xadb8,0xadd8,0xb5f8,0xbe3a,0xce9b,0xbe3a,0x39e8,0x2104,0x2945,0x4a6b,0x634f,0x8433,0xbdfa,0xad54,0x3185,0x20e3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x3186,0xad75,0xce59,0x62ed,0x4a8b,0x5aec,0xadb8,0xadb8,0xb5f9,0xadd8,0xa597,0x9d56,0xa577,0x9d36,0x9d36,0xa556,0xa556,0x9d15,0x9515,0x9d35,0x9d35,0x9535,0x9d36,0x9d16,0x94d5,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8cb4,0x8493,0x8cb3,0x8cf4,0x94f4,0x94d4,0x8c93,0x73f1,0x7c32,0x8cb3,0x8493,0x8493,0x8493,0x8493,0x8472,0x8473,0x8472,0x8492,0x7c52,0x8472,0x8452,0x9d35,0x94f4,0x7c11,0x7c31,0x7c52,0x7c31,0x7c31,0x7c31,0x7c11,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x73f0,0x7c31,0x7c11,0x8c72,0x8c93,0x8452,0x6bb0,0x6bb0,0x6baf,0x73f0,0x7410,0x73f0,0x6baf,0x73f0,0x73cf,0x7c31,0x73f0,0x6baf,0x7411,0x7410,0x73cf,0x73f0,0x73f0,0x73af,0x6b8f,0x6b8f,0x6b8e,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x73f0,0x6bd0,0x73d0,0x6baf,0x6baf,0x73f0,0x73f0,0x6b8e,0x634d,0x73cf,0x6baf,0x6bcf,0x6baf,0x73f0,0x73af,0x6b4e,0x634d,0x636e,0x634d,0x634d,0x5b0d,0x5aec,0x52ec,0x52cb, +0x5b0c,0x630c,0x632c,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x7bef,0x7bcf,0x632d,0x630c,0x632d,0x632c,0x630c,0x632c,0x6b6d,0x7c10,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x738e,0x7bef,0x73cf,0x6bae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6b6d,0x6b8e,0x6b8f,0x6baf,0x6b8e,0x6b6e,0x636e,0x636e,0x636e,0x636e,0x6bae,0x73af,0x6b6e,0x6baf,0x73cf,0x73af,0x738e,0x7bcf,0x8411,0x7c10,0x7c11,0x7c11,0x7c11,0x7c31,0x7c10,0x7bf0,0x7c31,0x8432,0x7c11,0x8431,0x8432,0x8452,0x7c31,0x7c11,0x8452,0x8452,0x8452,0x8452,0x8473,0x8493,0x8493,0x8493,0x8452,0x8493,0x8cb3,0x8493,0x8472,0x8492,0x8c93,0x8cb3,0x8cb4,0x9cd4,0x9515,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x8cd4,0x94d4,0x94f4,0x8cd4,0x8cd4,0x9d35,0x9515,0x8cd4,0x9515,0x94f5,0x9d15,0xa576,0xadb7,0xad97,0xa556,0x9d36,0xad98,0xadd8,0xb5f8,0xb5f9,0xcebb,0xbe39,0xadb8,0x39c7,0x2124,0x2105,0x4a6b,0x6b70,0x8c94,0xd6bc,0xad34,0x2965,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x3186,0xb596,0xc5f8,0x5aac,0x52cc,0x5b2d,0xadb7,0xadd8,0xadd8,0xadb7,0xa576,0xa597,0xadd8,0xa576,0xa576,0xa576,0x9d35,0x9d15,0x94f4,0x9d35,0xa576,0xa556,0xa577,0xa557,0x94f5,0x94f4,0x94d4,0x94f5,0x8cb4,0x8473,0x8473,0x8473,0x8493,0x8cb4,0x94d4,0x8c93,0x7c11,0x7c52,0x8cd4,0x8cb3,0x7c52,0x8493,0x8cd4,0x8473,0x7bf1,0x8452,0x7c32,0x7c72,0x7c72,0x8472,0x7c52,0x8c93,0x7c31,0x7411,0x7411,0x7c31,0x7411,0x7411,0x7411,0x8472,0x7c31,0x73f0,0x73f0,0x6bd0,0x73f0,0x7c31,0x7410,0x8451,0x8cb3,0x73d0,0x73f0,0x73d0,0x6baf,0x73f0,0x7410,0x73d0,0x6baf,0x6bd0,0x6baf,0x7411,0x73f1,0x6baf,0x73d0,0x7411,0x6bd0,0x6bcf,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6b8e,0x73f0,0x6bf0,0x6bcf,0x6bcf,0x73f0,0x73d0,0x6baf,0x636e,0x6b8f,0x6baf,0x636e,0x5b0c,0x6bcf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x636e,0x634d,0x634d,0x5b0c,0x5b0c,0x52cb,0x52cc,0x52ab,0x5aec, +0x630c,0x632c,0x6b4d,0x6b4d,0x632c,0x6b8d,0x7c0f,0x7bef,0x6b4d,0x5b0c,0x632c,0x630c,0x632c,0x632d,0x632d,0x6b4e,0x8430,0x73ae,0x5aec,0x632c,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x7bf0,0x7bf0,0x73af,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x636d,0x6b6e,0x6b8f,0x73af,0x638e,0x636d,0x634d,0x6b6d,0x6b8e,0x6b6e,0x6bae,0x73cf,0x6baf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x8431,0x8451,0x7c31,0x7c51,0x7c51,0x7c10,0x8411,0x73b0,0x73d0,0x7c31,0x7c11,0x7c31,0x7c32,0x7c31,0x7c32,0x8493,0x8452,0x8472,0x8c73,0x8472,0x8c93,0x8c93,0x8cb3,0x8473,0x8cb3,0x8cb3,0x8cb3,0x8473,0x94d4,0x94f4,0x8cd3,0x94f4,0x94f4,0x94f4,0x8cb3,0x8493,0x8cd4,0x9535,0x9d76,0x9515,0x8cb4,0x94f5,0x94f4,0x94f4,0x9d76,0x9d15,0x8cd4,0x9d36,0x94f5,0x9d15,0xadb7,0xa576,0xadb7,0xad97,0xa597,0xa597,0xb5d8,0xadb7,0xc67a,0xbe5a,0xadd8,0xb5f9,0x39e8,0x2924,0x2104,0x528c,0x6b90,0x9d16,0xef7e,0xa534,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x3186,0xad55,0xbdb7,0x5acc,0x5b0d,0x632d,0xa597,0xa5b8,0xadb8,0xadd8,0xa5b7,0xadd8,0xa597,0x9d76,0xadb8,0x9d56,0x9d36,0xa576,0x9d35,0x9d55,0xa576,0xad97,0xb5d8,0xa5b7,0x9d56,0x8cf4,0x8cb4,0x8cb4,0x8cb4,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x8c93,0x8c93,0x8473,0x8cb4,0x8cd4,0x8493,0x7c52,0x7c52,0x8492,0x8cb3,0x8c92,0x8c92,0x7c72,0x7c52,0x7c52,0x7c31,0x7c11,0x7412,0x7411,0x7411,0x73f0,0x7411,0x73f1,0x6bd0,0x7411,0x7c11,0x73d0,0x73f0,0x7410,0x73f0,0x7410,0x7410,0x7410,0x7c31,0x7c51,0x6baf,0x7410,0x7410,0x73d0,0x73f0,0x73d0,0x73f0,0x73cf,0x73f0,0x7411,0x7c31,0x7c31,0x7411,0x7c11,0x7411,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x73d0,0x73f0,0x6bd0,0x73d0,0x73f1,0x7c11,0x73f0,0x6bcf,0x6baf,0x638f,0x6baf,0x6bcf,0x6baf,0x7c10,0x73cf,0x73ef,0x6baf,0x73cf,0x6baf,0x6b8f,0x6b8e,0x634e,0x632d,0x5b0c,0x5aec,0x5b0c,0x632d, +0x632c,0x632c,0x632c,0x630c,0x6b4d,0x73cf,0x73cf,0x6b6d,0x632c,0x5b0c,0x632c,0x5b0c,0x632c,0x630c,0x632d,0x6b4d,0x8c51,0x738e,0x630c,0x630c,0x630c,0x632d,0x632c,0x632c,0x6b4d,0x738e,0x73cf,0x73cf,0x73af,0x73af,0x736e,0x738f,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x632d,0x6b6e,0x6b6e,0x6b6e,0x73ce,0x73cf,0x6bcf,0x6bcf,0x6baf,0x6baf,0x73cf,0x73af,0x73d0,0x7c51,0x7c51,0x7410,0x7c31,0x7410,0x7c10,0x7bf0,0xa534,0xb5b6,0x8471,0x73f0,0x8c93,0x94f4,0x8472,0x7c72,0x8492,0x7c72,0x8493,0x8cd4,0x8493,0x8492,0x8cb3,0x8cb3,0x8c73,0x8cb3,0x94d4,0x8cb3,0x8c73,0x9cf5,0x9d15,0x8cb3,0x9514,0x9d15,0x9514,0xa576,0x9d55,0xa576,0xadb7,0x9d35,0x8c93,0x8cb3,0x94d4,0x94f4,0x8cf4,0x9515,0x8cd4,0x9d15,0x9515,0x8cd4,0x9d15,0xa5b7,0xa596,0xadd7,0xa597,0xadb7,0xadd8,0xadd8,0xbe5a,0xc67a,0xadd8,0xb5f9,0xb61a,0x39c8,0x2924,0x2104,0x52ac,0x73b1,0xad78,0xffdf,0xa513,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18e3,0x39a6,0xa514,0xb576,0x630d,0x634e,0x6b6e,0xadd8,0xb5f8,0xb619,0xadd8,0xb5f8,0xadd7,0xadd8,0xadd8,0xa5b7,0xadb7,0xa597,0xadb7,0xadd7,0xad97,0xb5d7,0xadb7,0xadb8,0xad97,0xadb7,0x9515,0x9d35,0x9515,0x9515,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x8493,0x8c93,0x94f4,0x9d15,0x94d4,0x8cb4,0x8cb4,0x94f5,0x94f5,0x9515,0x8cb4,0x8cd4,0x8473,0x8452,0x8c93,0x8452,0x7c32,0x8451,0x8451,0x7c31,0x7c31,0x8451,0x8452,0x8451,0x8451,0x8431,0x7c31,0x8451,0x8472,0x8451,0x7bf0,0x7c11,0x73f0,0x7c31,0x7c11,0x73f0,0x73d0,0x73d0,0x7bf0,0x8411,0x7bf0,0x73cf,0x73cf,0x73cf,0x7c11,0x7bf0,0x6baf,0x73d0,0x6b8f,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6f,0x6b8f,0x6b8e,0x6b8f,0x636e,0x634e,0x634e,0x634d,0x634d,0x634d,0x634d,0x5b2d,0x5b2d,0x5aed,0x5b0d,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x4a8a,0x4a8a,0x4a8a, +0x6b6e,0x6b6d,0x634d,0x6b2d,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x6b6d,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b4d,0x6b6e,0x8431,0x6b6e,0x5aec,0x630c,0x632c,0x634d,0x632c,0x632d,0x6b6e,0x6b6e,0x7bf0,0x73cf,0x6bae,0x73af,0x6b8e,0x6b8e,0x6b8e,0x636d,0x636e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x634d,0x6b6e,0x6b6e,0x73af,0x73cf,0x73ef,0x73cf,0x73cf,0x73cf,0x73cf,0x6b8e,0x73cf,0x7c11,0x7c31,0x7c31,0x7411,0x7c11,0x7c10,0x7c11,0x7bd0,0xad96,0xad75,0x8471,0x8cb3,0x8452,0x8452,0x7c31,0x7c52,0x8472,0x8473,0x8473,0x8493,0x8493,0x8452,0x8c93,0x8c73,0x8c72,0x8c93,0x8c73,0x8472,0x8452,0x8c73,0x8c73,0x8c93,0x94d4,0x94f4,0x9d35,0xa576,0x9d14,0x94d3,0x94f4,0x94d3,0x94f4,0x94f4,0x94f4,0x8cf4,0x8cd4,0x94f4,0x9d15,0x9cf5,0x94d4,0x94f5,0x9d15,0xa556,0x9d56,0xa576,0xad77,0xadb8,0xad97,0xb5b8,0xc63a,0xadb8,0xadb8,0xadd8,0xadb8,0x31a7,0x2124,0x18e4,0x52ac,0x7bf2,0xbdfa,0xffff,0x9cd2,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x2104,0x39e7,0x9492,0xa4d4,0x630d,0x6b8f,0x738f,0x8432,0x7bf1,0x8432,0x7bf1,0x7bf1,0x7bd1,0x73b0,0x73b0,0x6b6f,0x6b90,0x73b0,0x7390,0x73b0,0x738f,0x7370,0x7390,0x7370,0x634f,0x6b4e,0x6b6e,0x6b6e,0x634e,0x6b6f,0x634e,0x5b2e,0x5b2d,0x5b0d,0x632d,0x632d,0x5aed,0x5aed,0x5aec,0x5aed,0x52cc,0x52cc,0x52ac,0x5acd,0x5acd,0x4a8c,0x4aac,0x4a8b,0x4aac,0x52ac,0x52ac,0x4a8b,0x4a6b,0x424a,0x4a6a,0x424a,0x4229,0x4249,0x424a,0x4a6a,0x424a,0x424a,0x424a,0x4229,0x424a,0x4a2a,0x4a2a,0x4209,0x39c8,0x4229,0x4209,0x39c8,0x31a8,0x39c8,0x39c8,0x39c9,0x39c8,0x39c8,0x31a8,0x31a8,0x2967,0x39c8,0x39c8,0x31a7,0x39c8,0x3187,0x3187,0x3187,0x3187,0x3167,0x39a7,0x3166,0x31a7,0x2124,0x2986,0x2125,0x2945,0x2945,0x2925,0x2945,0x3187,0x2105,0x3167,0x2146,0x2125,0x2966,0x39c7,0x2966,0x18c3,0x3186,0x2946,0x31c7,0x2946,0x2125,0x2966,0x31a7,0x2945,0x31a6,0x39c7,0x3166, +0x4a6a,0x4a6a,0x4a4a,0x4a49,0x4a49,0x4249,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4249,0x528a,0x4a6a,0x4229,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x4229,0x4a4a,0x4a4a,0x4a4a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4229,0x3a09,0x424a,0x4a4a,0x4a4a,0x424a,0x424a,0x4a6b,0x4a6a,0x4249,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x52ab,0x52ab,0x4a8b,0x52cb,0x52cc,0x52ab,0x4a8b,0x4a8b,0x528b,0x52ab,0x52ab,0x52ac,0x526c,0x422a,0x528b,0x52ac,0x4a6b,0x4a8c,0x52ac,0x52ac,0x52ac,0x52ac,0x4a8b,0x52ac,0x4a8b,0x528b,0x4a8b,0x4a8b,0x4a8b,0x4aab,0x528b,0x4a8b,0x528c,0x528c,0x4a8b,0x52ac,0x52ac,0x52ac,0x52ac,0x528c,0x4a6b,0x528c,0x52ad,0x5acd,0x52cc,0x4a8c,0x52cd,0x52ac,0x4a6b,0x4a6b,0x526b,0x4a4b,0x424b,0x4a6c,0x526c,0x4a4b,0x4a6c,0x526c,0x528c,0x524c,0x4a2b,0x528c,0x526c,0x526c,0x4a4c,0x524c,0x4a0c,0x2945,0x2944,0x18c3,0x52ac,0x8412,0xce3b,0xffff,0x9490,0x2964,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x18a3,0x18e3,0x2104,0x39c7,0x8410,0x9431,0x5aec,0x738f,0x6b6e,0x2947,0x3187,0x39c8,0x3187,0x1927,0x2147,0x3188,0x3188,0x2926,0x2126,0x2967,0x2967,0x3168,0x2967,0x2946,0x3187,0x2966,0x2966,0x31a8,0x3a09,0x3187,0x2966,0x39e8,0x39e8,0x4a6a,0x4229,0x4249,0x3a08,0x31a6,0x39c7,0x39e8,0x3a08,0x2987,0x31a8,0x31a7,0x3a08,0x3a08,0x31c7,0x31e8,0x3208,0x3a28,0x4228,0x4208,0x4229,0x4229,0x4208,0x39c7,0x39e8,0x39c7,0x39e7,0x4228,0x39e7,0x3a07,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4208,0x4a69,0x4a8a,0x31c7,0x3a08,0x4229,0x4249,0x4208,0x4208,0x4208,0x4228,0x4228,0x4229,0x4228,0x4249,0x39c8,0x39e8,0x4229,0x39c7,0x4249,0x3a08,0x39e8,0x4228,0x4207,0x4208,0x4209,0x39e8,0x4228,0x3a07,0x4228,0x3a08,0x39e8,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x3a08,0x3a07,0x31c7,0x4228,0x4208,0x39e7,0x31c7,0x39e7,0x4208,0x3a08,0x31e7,0x31e7,0x31c7,0x4269,0x4269,0x4a49,0x39a7,0x39c7, +0x2165,0x2166,0x2146,0x2966,0x3187,0x3187,0x2966,0x3187,0x2966,0x2146,0x31a7,0x2986,0x2145,0x2986,0x39e8,0x31c7,0x39e8,0x2966,0x2986,0x2986,0x2986,0x2966,0x31c7,0x39c8,0x2986,0x3a08,0x2986,0x29a7,0x3a08,0x2987,0x39c8,0x31a7,0x31c8,0x3a08,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x31e8,0x31c7,0x31a7,0x31c8,0x31c8,0x3a08,0x31a7,0x2986,0x31a7,0x31c8,0x31e8,0x3a29,0x3a49,0x3a08,0x39e8,0x39c8,0x31c7,0x31a7,0x39c8,0x39e8,0x4209,0x4a4a,0x4229,0x39e8,0x31a7,0x31c8,0x4229,0x3a09,0x39c7,0x4229,0x4209,0x3a08,0x31e8,0x3a08,0x4209,0x4209,0x4229,0x4249,0x4a6a,0x4a6a,0x4229,0x4229,0x4a4a,0x4208,0x528a,0x4a49,0x4a49,0x4a29,0x4229,0x4a49,0x4229,0x4a49,0x528a,0x4249,0x3a09,0x4a6a,0x4a6a,0x4208,0x39c7,0x41e9,0x4a49,0x4249,0x39e8,0x39c8,0x4a29,0x4a6a,0x4a6a,0x4229,0x4229,0x4229,0x4208,0x4249,0x4a6a,0x4a4a,0x4a4a,0x526a,0x2125,0x2945,0x18c3,0x52ac,0x8412,0xce5b,0xffff,0x8c2e,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x31a6,0x7bcf,0x8c10,0x5aec,0x738f,0x6b6e,0x4a69,0x528a,0x4228,0x4228,0x4228,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4229,0x4249,0x4208,0x3a08,0x4207,0x4248,0x4248,0x4249,0x4229,0x4208,0x4249,0x4a6a,0x4208,0x4a6a,0x4249,0x3a08,0x4a49,0x3a08,0x39e8,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x4228,0x3a08,0x3a08,0x3a28,0x3a09,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4a49,0x3a08,0x39c7,0x4208,0x4269,0x4228,0x4208,0x4a49,0x3a08,0x39e7,0x39e7,0x39e7,0x4229,0x4208,0x39e7,0x3a07,0x4228,0x39e8,0x31a7,0x39e8,0x39c7,0x4228,0x4228,0x39e8,0x39c7,0x3a08,0x31c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x31c7,0x3a28,0x3a07,0x3a07,0x39e8,0x39e8,0x31c7,0x31c7,0x39c7,0x3186,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x31c6,0x4a69,0x39e7,0x3186, +0x29a6,0x29a6,0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x39e7,0x29a6,0x29a6,0x31c7,0x31c7,0x31a6,0x31a6,0x3186,0x39c7,0x39e8,0x39e8,0x4249,0x3a28,0x29a6,0x31c7,0x4229,0x3a28,0x39e7,0x3a07,0x4248,0x4248,0x4a69,0x3a08,0x4249,0x3a08,0x3a08,0x4228,0x39e8,0x39c7,0x31c7,0x39e7,0x3a07,0x4228,0x39e7,0x39e8,0x4229,0x4228,0x31c7,0x31c7,0x3a08,0x39e8,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x4249,0x3a08,0x31c7,0x39e7,0x4248,0x4248,0x4249,0x4228,0x3a28,0x39e8,0x3a08,0x3a07,0x4228,0x4a49,0x4a49,0x3a28,0x39e8,0x4229,0x4229,0x4249,0x52aa,0x4269,0x4249,0x4a8a,0x4249,0x4228,0x4229,0x3a08,0x4208,0x4a49,0x4a49,0x5acb,0x4249,0x3a08,0x4a69,0x4a69,0x3a08,0x4229,0x4229,0x3a28,0x3a28,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4229,0x528a,0x528a,0x52ab,0x4a6a,0x4a49,0x4a49,0x4228,0x528a,0x4a8a,0x4a6a,0x526a,0x4a69,0x2124,0x2945,0x18a3,0x52ac,0x8c33,0xde9c,0xffff,0x842e,0x2944,0x2124,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a2,0x18a3,0x18a3,0x18c3,0x18e3,0x2103,0x2124,0x3186,0x7bcf,0x83f0,0x5aec,0x738f,0x6b4d,0x4a49,0x3a08,0x3a08,0x4a69,0x4228,0x4249,0x4228,0x31c7,0x39e8,0x4229,0x3a29,0x3a08,0x39e7,0x3a07,0x3a28,0x4a69,0x4208,0x39e8,0x39e8,0x4209,0x39e8,0x4229,0x3a28,0x3a08,0x4229,0x39c7,0x4249,0x4228,0x39e7,0x4208,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31c8,0x31e8,0x3a09,0x3a09,0x39e9,0x31a7,0x39e8,0x3a28,0x3a08,0x3a07,0x3a08,0x4228,0x4229,0x3a08,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x4208,0x3a28,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x4229,0x39e8,0x3a08,0x4228,0x4249,0x39e8,0x39e7,0x39e8,0x3a08,0x4249,0x3a08,0x31a6,0x39e8,0x31a7,0x39c7,0x39c6,0x39c7,0x39e7,0x31c7,0x3a07,0x31c7,0x39e8,0x3a08,0x39e8,0x4228,0x39e7,0x39c7,0x39e8,0x31a6,0x31c7,0x39e7,0x31c7,0x31e7,0x31c7,0x4249,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39c7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x3186,0x39c7,0x39e7,0x39c7,0x39e7, +0x3186,0x31a6,0x31a6,0x2966,0x2986,0x2986,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x29a6,0x31c7,0x31a6,0x3186,0x4a49,0x4208,0x3a08,0x4228,0x3a28,0x3207,0x39e7,0x3a08,0x31a6,0x39e7,0x3a28,0x3a08,0x31c7,0x4249,0x4229,0x4269,0x4a8a,0x31c7,0x4228,0x3a08,0x31c6,0x31a6,0x4249,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39e7,0x31c7,0x3a08,0x4a69,0x3a08,0x3a07,0x3a08,0x31e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4228,0x4208,0x4249,0x4229,0x4249,0x4228,0x4228,0x4a69,0x3a08,0x3a28,0x3a28,0x4228,0x3a08,0x4209,0x4229,0x4a49,0x4229,0x4a69,0x4a69,0x4228,0x4229,0x4a69,0x4228,0x39e8,0x39e8,0x4269,0x4249,0x4249,0x4a8a,0x5289,0x4a69,0x4a8a,0x528a,0x4a6a,0x4a8a,0x4249,0x4aaa,0x4269,0x4a8a,0x4289,0x3a28,0x4249,0x52cb,0x52ab,0x52ab,0x4a8b,0x2104,0x2945,0x18a3,0x52cd,0x8c54,0xdedc,0xffff,0x840d,0x2944,0x2945,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a3,0x18c3,0x20e3,0x2103,0x2124,0x3186,0x7bcf,0x8c10,0x5aec,0x738f,0x6b4d,0x4229,0x4208,0x4a6a,0x4228,0x39e7,0x31c7,0x31e7,0x31e7,0x3a08,0x4249,0x4229,0x4228,0x3a28,0x3a08,0x4249,0x4a8a,0x39e8,0x3a08,0x4249,0x39e8,0x4208,0x31e7,0x39e7,0x4229,0x4a49,0x4208,0x3a08,0x4a8a,0x4229,0x39e8,0x4208,0x39e8,0x39e8,0x39e7,0x39c7,0x4249,0x31c7,0x39e8,0x4a49,0x3a08,0x3a08,0x31a7,0x3a08,0x4249,0x4228,0x3a08,0x31c7,0x4a69,0x3a08,0x31e7,0x31a6,0x4249,0x4249,0x4228,0x31e7,0x4a69,0x4248,0x3a08,0x4228,0x4a69,0x52aa,0x3a08,0x4228,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x31e7,0x3a08,0x3a08,0x39e7,0x39c7,0x31a7,0x4228,0x39e7,0x31a7,0x39e7,0x3a07,0x4228,0x4248,0x3a08,0x39e8,0x31c7,0x39c7,0x39e7,0x4228,0x31a7,0x39e7,0x39e7,0x31c7,0x4228,0x3a07,0x3a08,0x4249,0x31a7,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x31c7,0x4208, +0x2945,0x29a6,0x31c7,0x31c8,0x31c7,0x31c7,0x31c7,0x31a6,0x39e8,0x39c7,0x31c7,0x3a08,0x39e7,0x31a6,0x4208,0x4249,0x31e7,0x39e7,0x31c7,0x3a08,0x4229,0x4208,0x4229,0x31a7,0x39e7,0x4228,0x31a7,0x39c8,0x4209,0x4228,0x4a49,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x31c7,0x39e7,0x39e7,0x4249,0x4249,0x3a08,0x31e7,0x39e8,0x3a08,0x39e8,0x39e8,0x4a6a,0x4a69,0x4249,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e7,0x4208,0x4229,0x3a08,0x4228,0x4228,0x4229,0x4228,0x4208,0x3a28,0x4269,0x4249,0x4a8a,0x4249,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4248,0x4a69,0x52aa,0x4a69,0x4228,0x4208,0x4208,0x4249,0x4a6a,0x4249,0x3a08,0x4a8a,0x4208,0x4aaa,0x52aa,0x4228,0x4228,0x4a69,0x528a,0x4269,0x4a8a,0x52ab,0x4229,0x4249,0x528a,0x528a,0x4208,0x4a6a,0x426a,0x2104,0x2925,0x18a3,0x5aed,0x9494,0xdedc,0xffff,0x7bed,0x2124,0x2124,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x3165,0x8410,0x9451,0x632d,0x7bf0,0x6b4d,0x3a08,0x4a8a,0x4a69,0x3a07,0x31e7,0x3a08,0x3a08,0x4228,0x3a08,0x4208,0x39e8,0x4208,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x4a69,0x3a08,0x3a08,0x4249,0x39e7,0x39e8,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4229,0x39e7,0x39e8,0x39a7,0x31a6,0x31e7,0x3a28,0x3208,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x3a07,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4248,0x4a49,0x39e7,0x3a08,0x4208,0x39e7,0x4248,0x3a08,0x39e7,0x3a08,0x3a07,0x39e7,0x4228,0x31c7,0x3a07,0x4228,0x31a6,0x3a08,0x4228,0x4208,0x4208,0x39e8,0x4228,0x39e7,0x31c7,0x4229,0x3a08,0x39c7,0x39e7,0x4208,0x4208,0x3a28,0x3a08,0x39e8,0x4208,0x3a08,0x31c6,0x39e8,0x39c8,0x3a08,0x39c7,0x4208,0x4208,0x39e8,0x4209,0x31e7,0x3a07,0x4228,0x3a07,0x4208,0x4208,0x31a6,0x39e7,0x3186, +0x39e7,0x29a6,0x2166,0x31c7,0x31a6,0x31c6,0x31a7,0x31c7,0x31a7,0x31c8,0x31c7,0x29a6,0x29a6,0x39c7,0x4208,0x4228,0x29a6,0x31a7,0x31c7,0x31a7,0x41e8,0x4a29,0x31a7,0x3186,0x39e7,0x4228,0x39e7,0x39c7,0x39e8,0x4a29,0x4209,0x4209,0x4a6a,0x39e7,0x39e7,0x31c7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x4228,0x4228,0x31e8,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x3a28,0x3a08,0x39e7,0x4228,0x39e8,0x4229,0x4229,0x39e7,0x4229,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a49,0x3a28,0x3a07,0x39e7,0x4228,0x4229,0x3a28,0x39e7,0x3a28,0x4228,0x4208,0x39e7,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x4229,0x3a08,0x4a69,0x4229,0x4208,0x4228,0x4249,0x4249,0x39e8,0x4249,0x528a,0x4249,0x4249,0x4249,0x39e8,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4a49,0x4a6a,0x528a,0x528a,0x52aa,0x4a49,0x4a29,0x4229,0x4a6a,0x528a,0x4228,0x4a6a,0x4a49,0x2104,0x2945,0x18a3,0x630e,0x9cd5,0xdebc,0xffff,0x7bcc,0x2103,0x2104,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x18c3,0x20e3,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x2104,0x2104,0x3165,0x8c51,0x9451,0x738f,0x8c52,0x736e,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x3a28,0x3a28,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x3a08,0x39e8,0x3a08,0x39e8,0x4249,0x4228,0x31c7,0x3a08,0x3a08,0x39e7,0x4208,0x4a49,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x4208,0x39c7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a28,0x3a28,0x31e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x4249,0x39e7,0x3a08,0x3a08,0x4228,0x31e7,0x4249,0x4a49,0x39c7,0x4208,0x4208,0x39e7,0x4a69,0x39e7,0x31a6,0x3a07,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4208,0x3a08,0x31c7,0x31e7,0x3a28,0x4248,0x3a08,0x31a6,0x39e7,0x3a07,0x3186,0x31a6,0x3a07,0x4228,0x39e7,0x31a7,0x31a7,0x39c7,0x31c7,0x31c7,0x3a08,0x3a08,0x3a08,0x31a7,0x31c7,0x39e8,0x31e8,0x31c7,0x31c7,0x3a07,0x3a07,0x4228,0x39e8,0x39e8,0x39e7,0x31c6,0x39e7,0x31a6,0x3a08,0x31c7,0x3a07,0x31c6,0x4228,0x3a08,0x39e7,0x3186,0x31c7,0x4228, +0x39c7,0x31c7,0x2946,0x3186,0x3a07,0x2986,0x2986,0x39e8,0x39e8,0x31a7,0x39c7,0x31a6,0x31e7,0x31a7,0x39e8,0x3186,0x3186,0x39c7,0x39e8,0x39e8,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a07,0x31a7,0x31c7,0x4229,0x4a6a,0x4209,0x4a49,0x4229,0x3a08,0x31c7,0x31c7,0x4229,0x3a08,0x39e8,0x3a09,0x3a08,0x4248,0x4228,0x31e7,0x31e7,0x31e7,0x4249,0x3a08,0x3a28,0x31e7,0x39e8,0x4208,0x4249,0x3a08,0x3a08,0x4269,0x3a08,0x4249,0x4a69,0x4a49,0x4249,0x4a49,0x3a08,0x4228,0x4269,0x39e7,0x4229,0x3a08,0x4229,0x4228,0x39e7,0x3a28,0x3a08,0x3a08,0x39e7,0x39e8,0x39e7,0x39e7,0x4228,0x31c7,0x4209,0x4229,0x4249,0x4228,0x4a6a,0x4229,0x4208,0x4229,0x3a08,0x4229,0x3a28,0x3a29,0x4249,0x4208,0x4a69,0x4249,0x3a08,0x4a49,0x4229,0x4229,0x4249,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x3a28,0x4a69,0x3a28,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a49,0x2104,0x2945,0x18a3,0x7390,0xad36,0xde9c,0xffbe,0x736c,0x2104,0x2104,0x18c3,0x18a2,0x2945,0x2944,0x2124,0x2103,0x2103,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x10a2,0x2124,0x3165,0x2944,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2103,0x18e3,0x18c3,0x1082,0x18e3,0x3186,0x2924,0x2103,0x18c3,0x18c2,0x18c2,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2944,0x2124,0x18e3,0x18c3,0x20e3,0x2104,0x3186,0x9492,0x8c31,0x8410,0x9c93,0x738e,0x4229,0x3a08,0x4a49,0x4a49,0x4228,0x4a69,0x4228,0x4228,0x3a28,0x39e7,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4228,0x4249,0x39e7,0x3a08,0x39e8,0x4249,0x4228,0x4a6a,0x4a69,0x3a08,0x39e8,0x39e8,0x4a69,0x39e7,0x4229,0x4228,0x3a08,0x4249,0x4229,0x39c7,0x31a7,0x3a08,0x3a08,0x3a08,0x31a6,0x39e7,0x3a08,0x31c7,0x3a07,0x39e7,0x4208,0x3a08,0x3a07,0x3a07,0x3a28,0x31c6,0x39e7,0x39e7,0x4249,0x3a08,0x4a49,0x39c7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x31c6,0x39e7,0x39c7,0x4228,0x31e7,0x3a08,0x3a28,0x39e7,0x3a08,0x39c7,0x31c7,0x39e7,0x39e7,0x39c7,0x3a08,0x3186,0x4a69,0x4228,0x39e7,0x39c7,0x4208,0x31a6,0x39e7,0x39e8,0x3a08,0x39e8,0x39c7,0x31a7,0x3a08,0x31c7,0x4248,0x4228,0x4248,0x39e7,0x4208,0x3a08,0x4248,0x39e7,0x39c7,0x39e8,0x31a7,0x31a6,0x4228,0x4a8a,0x3186,0x4208,0x31c7,0x39e7,0x31a6,0x39e7, +0x31a7,0x31a6,0x2966,0x39c7,0x31e7,0x2986,0x2145,0x41e8,0x4a4a,0x39e7,0x2965,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39c7,0x4a49,0x4228,0x31a6,0x3a07,0x4249,0x31e7,0x31e7,0x39e7,0x3a08,0x39e8,0x31c7,0x4a8a,0x4249,0x39e7,0x4208,0x39c7,0x39c7,0x31a7,0x4249,0x4249,0x31c7,0x39e8,0x39c8,0x31c7,0x4228,0x4208,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4229,0x4228,0x4249,0x3a08,0x3a07,0x4248,0x4249,0x4228,0x4249,0x4a8a,0x39e8,0x39e7,0x31e7,0x3a28,0x3a28,0x4249,0x39e8,0x4a69,0x52aa,0x4a69,0x39e7,0x4228,0x4a49,0x4249,0x52aa,0x4a6a,0x3a09,0x4208,0x4208,0x4228,0x4269,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4a6a,0x4208,0x4a49,0x4229,0x4229,0x4a69,0x4a69,0x4248,0x528a,0x52cb,0x52ab,0x426a,0x3a28,0x4a8a,0x4249,0x4a8a,0x4a69,0x4a49,0x4228,0x4a69,0x20e3,0x2965,0x18c4,0x7bd1,0xb576,0xd67b,0xef3c,0x632b,0x2104,0x2104,0x18c3,0x18a3,0x2965,0x2945,0x3165,0x2944,0x2944,0x3165,0x3185,0x2965,0x2944,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2944,0x2965,0x2924,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x2945,0x31a6,0x3186,0x2965,0x18e3,0x20e3,0x2124,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2924,0x2944,0x2945,0x2965,0x3165,0x3165,0x2104,0x18e3,0x1082,0x2104,0x41e8,0x3186,0x31a6,0x3165,0x2944,0x2945,0x2945,0x2965,0x3165,0x3185,0x2965,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x3186,0x39a6,0x2945,0x18e3,0x18c3,0x18e3,0x20e3,0x3186,0x9492,0x83f0,0x8c51,0x9cd3,0x630d,0x4229,0x52ab,0x4a49,0x4229,0x39e8,0x3a08,0x4249,0x4228,0x4249,0x4249,0x4249,0x4228,0x3a08,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x4a8a,0x4228,0x4208,0x4228,0x39e7,0x4249,0x4228,0x3a08,0x3a08,0x4229,0x4249,0x31e7,0x39e7,0x39c7,0x4208,0x39e8,0x31a7,0x31c7,0x3a08,0x39c7,0x3a08,0x31e7,0x31c7,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x4208,0x39e7,0x4228,0x3a28,0x39e7,0x39e7,0x39e7,0x4228,0x39e7,0x31c7,0x39c6,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x3a07,0x39c7,0x4228,0x3a07,0x31e7,0x39e7,0x52aa,0x39e7,0x3a08,0x39e7,0x3187,0x4a49,0x4228,0x31c6,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x31c7,0x3a08,0x4228,0x3a08,0x31a6,0x31a6,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39c7,0x4249,0x31a6,0x4228,0x39e7,0x39e7, +0x3186,0x2965,0x3186,0x39e8,0x29a6,0x2186,0x29a7,0x39c7,0x39e8,0x3a08,0x3a07,0x3a07,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x39e8,0x39e7,0x31e7,0x4249,0x31a6,0x31c6,0x39e8,0x39e8,0x3a28,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x39e8,0x39c7,0x39e8,0x31c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31a7,0x39a7,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4229,0x4228,0x3a08,0x4249,0x3a29,0x3a08,0x4249,0x4229,0x4249,0x4249,0x4249,0x39e7,0x39e8,0x3a28,0x3a28,0x3a49,0x4249,0x4208,0x4228,0x4a6a,0x39e8,0x39e8,0x4208,0x4a8a,0x4a49,0x4229,0x3a08,0x4249,0x4249,0x4a49,0x4249,0x4a69,0x3a08,0x3a08,0x3a08,0x3a07,0x4228,0x4229,0x4249,0x4229,0x4249,0x426a,0x4229,0x4249,0x4228,0x4a49,0x528a,0x4249,0x4249,0x4a8a,0x4249,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a8a,0x18e3,0x2945,0x18c4,0x7bd2,0xb596,0xce3a,0xd679,0x5aca,0x2104,0x1903,0x18c3,0x18a3,0x2965,0x20e4,0x2104,0x10a2,0x2104,0x3165,0x2945,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2124,0x2124,0x2104,0x18c3,0x1082,0x2945,0x3166,0x2945,0x18e3,0x18c3,0x2124,0x2924,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x3165,0x3186,0x2924,0x2924,0x2945,0x2104,0x18e3,0x1082,0x2104,0x39e8,0x2965,0x2965,0x2944,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x3165,0x41e7,0x39c6,0x31a6,0x3186,0x3185,0x3165,0x2124,0x2924,0x3165,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2965,0x8431,0x738f,0x8c51,0x9cb3,0x4a29,0x4228,0x4a69,0x4249,0x4249,0x3a08,0x3a29,0x4249,0x4249,0x3a29,0x3a29,0x31e7,0x3a08,0x39e7,0x3a08,0x31c7,0x39e8,0x4249,0x39e7,0x39c7,0x3a08,0x4a69,0x3a08,0x4229,0x4a69,0x39e7,0x3a08,0x4228,0x4208,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39e7,0x4a69,0x3a08,0x3a08,0x4249,0x4208,0x39c7,0x3a08,0x4208,0x3a08,0x4208,0x4a49,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a07,0x4248,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x31c7,0x39e8,0x4208,0x39e8,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a28,0x3a07,0x4269,0x52eb,0x31e7,0x3a07,0x39e7,0x31e7,0x4a69,0x4a49,0x2986,0x3a08,0x4249,0x31c7,0x39e7,0x31c7,0x31c7,0x31c6,0x3a28,0x4269,0x3a08,0x39e7,0x4228,0x3207,0x29a7,0x31c7,0x39e8,0x39e8,0x39c7,0x39e7,0x39e7,0x31c7,0x31c7, +0x2986,0x2965,0x31a6,0x29a7,0x29c7,0x29a7,0x31e7,0x31c7,0x31a6,0x3a08,0x3a08,0x31a6,0x31a7,0x3a08,0x3a08,0x31c7,0x2986,0x39c8,0x3a08,0x31c7,0x31c7,0x4a6a,0x4a8a,0x4249,0x39e8,0x39e8,0x31e7,0x3a28,0x3a28,0x3a08,0x3a07,0x39e7,0x31c7,0x31a7,0x4208,0x4208,0x39e7,0x31a7,0x31a7,0x39c7,0x39e7,0x39c7,0x31c7,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x39e8,0x4208,0x4208,0x4228,0x4a8a,0x4228,0x4a69,0x4249,0x3a08,0x4208,0x4229,0x4249,0x4248,0x4249,0x4269,0x4a8a,0x4aaa,0x4269,0x4a8a,0x4228,0x39e7,0x3a08,0x4228,0x3a28,0x3a28,0x4249,0x39e7,0x4249,0x3a28,0x39e7,0x39e8,0x3a28,0x4249,0x4249,0x31e7,0x4aaa,0x4249,0x3a28,0x4228,0x4229,0x4249,0x39e8,0x39e7,0x4228,0x3a28,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x4208,0x5acb,0x4a49,0x4208,0x39e8,0x4228,0x4229,0x4229,0x4228,0x4a49,0x4a69,0x4a69,0x4249,0x4a69,0x4a6a,0x4a69,0x426a,0x18e3,0x2925,0x18c4,0x7bb1,0xb596,0xbdb7,0xb596,0x52aa,0x2103,0x18e3,0x18c3,0x18a3,0x2965,0x10a2,0x0861,0x0861,0x2944,0x2945,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x20e4,0x20e3,0x18e3,0x18e3,0x2104,0x2945,0x2104,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x2925,0x2104,0x1082,0x0861,0x18e3,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2124,0x2104,0x2104,0x2124,0x2965,0x2945,0x18a2,0x18c3,0x18e3,0x18c3,0x1082,0x20e4,0x3186,0x18a3,0x10a2,0x2104,0x2924,0x2104,0x2104,0x2104,0x2124,0x2104,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x3185,0x2924,0x1082,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x3186,0x7bcf,0x632e,0x8411,0x8411,0x39a7,0x3a07,0x4249,0x4a69,0x4249,0x4249,0x4229,0x3a29,0x3a08,0x3a29,0x3a28,0x39e7,0x3a08,0x3a08,0x4228,0x31c7,0x4228,0x4228,0x4249,0x4228,0x39c7,0x3a08,0x4249,0x4208,0x3a08,0x39e8,0x4249,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a49,0x4228,0x4229,0x3a08,0x3a07,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c6,0x3a08,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4228,0x4228,0x4208,0x4249,0x39c7,0x31a6,0x39c7,0x4249,0x4249,0x3a08,0x31c7,0x4228,0x31a6,0x52aa,0x4208,0x31a6,0x3a08,0x31c7,0x3a07,0x4228,0x3a08,0x4a69,0x39e8,0x4229,0x4208,0x3a08,0x4228,0x4228,0x39c7,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x4249,0x3a07,0x39e7,0x39e7,0x31e7,0x4249,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x4249,0x31c7,0x31e7,0x3a28,0x3a08,0x4208,0x39e8,0x41e8,0x3a08,0x31e7,0x31c7,0x31a7,0x3186,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7, +0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x2986,0x31a7,0x31a7,0x3186,0x31c7,0x31a7,0x2966,0x39c7,0x3a08,0x31a6,0x31a6,0x39c7,0x39e8,0x3a28,0x3a08,0x31c7,0x39c8,0x4229,0x4208,0x31a7,0x39e8,0x3a08,0x3a08,0x39e7,0x31e7,0x3a28,0x39c7,0x31a7,0x31a6,0x39c7,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e7,0x4249,0x39e8,0x31c7,0x39e7,0x31e7,0x31e7,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x4249,0x39e7,0x4a49,0x4228,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4a69,0x4249,0x4a8a,0x4249,0x4249,0x31c7,0x3a08,0x4249,0x4249,0x4228,0x4228,0x4a49,0x4a69,0x3a08,0x3a28,0x4249,0x3a07,0x3a08,0x3a28,0x3a08,0x4249,0x4269,0x4248,0x4249,0x4228,0x4229,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4229,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4208,0x4a49,0x4249,0x4229,0x4249,0x3a08,0x4228,0x4a49,0x4208,0x4208,0x4249,0x4229,0x4a6a,0x4249,0x4a6a,0x4a8a,0x18c3,0x2104,0x18c4,0x7391,0xbdb7,0xad35,0x9cf4,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2945,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2944,0x2144,0x2925,0x2945,0x2945,0x2924,0x2124,0x2124,0x2945,0x2965,0x3185,0x0861,0x0841,0x18c3,0x18a2,0x1082,0x2124,0x10a2,0x0020,0x0841,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2924,0x2925,0x2925,0x2124,0x2124,0x2124,0x2965,0x31a6,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x20e3,0x2124,0x0841,0x0861,0x2945,0x2124,0x2124,0x2924,0x2924,0x2945,0x2925,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3186,0x3186,0x1062,0x0861,0x1082,0x20e4,0x18c3,0x18c3,0x2104,0x39c7,0x6b4e,0x630d,0x73af,0x738e,0x3186,0x39e8,0x4a69,0x4a8a,0x52aa,0x4a49,0x3a08,0x3a08,0x31e7,0x3a28,0x4248,0x4249,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x3a08,0x4229,0x39c7,0x3a08,0x3a08,0x4249,0x4228,0x39c7,0x4208,0x3a08,0x4a8a,0x3a28,0x4228,0x3a08,0x4228,0x4208,0x4208,0x4a49,0x39e8,0x3a08,0x4228,0x31c7,0x4228,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x4a69,0x4a69,0x3a28,0x4269,0x31c7,0x3a08,0x3a08,0x3a08,0x39e8,0x39c7,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x31a7,0x4229,0x39e8,0x39e7,0x3a07,0x4208,0x39e7,0x31c6,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e8,0x39e8,0x39e8,0x31c7,0x31a7,0x39e7,0x39e7,0x4249,0x4a49,0x31c7,0x4228,0x3a08,0x31c7,0x2986,0x3a08,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x4228,0x31c7,0x39e8,0x39e8,0x39c7,0x3a08,0x29a6,0x31e7,0x4269,0x3a08,0x2986,0x31a6,0x3a08,0x39e8,0x31a7,0x3166, +0x31a7,0x31c7,0x31a6,0x31a7,0x29a6,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x39c7,0x39c7,0x39c8,0x4229,0x3a28,0x3a28,0x3a07,0x3a07,0x31e7,0x31c7,0x31a7,0x31a7,0x39e8,0x39e8,0x31e7,0x31c7,0x4208,0x39e7,0x39e8,0x4208,0x39e8,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x4208,0x4208,0x4249,0x3a08,0x31e7,0x3a28,0x3a08,0x3a08,0x3a28,0x3a08,0x4a6a,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x3207,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x4a69,0x4269,0x4249,0x3a28,0x3a28,0x4248,0x4269,0x4a69,0x4208,0x4249,0x4a8a,0x4208,0x41e8,0x4a49,0x3a08,0x39e8,0x4228,0x4a69,0x4a49,0x4249,0x4228,0x4a69,0x4a69,0x4aaa,0x4249,0x4228,0x4a69,0x4228,0x528a,0x4a49,0x3a08,0x4229,0x4a6a,0x4249,0x4a49,0x39e8,0x4229,0x3a08,0x3a29,0x4208,0x4229,0x4249,0x4269,0x4229,0x4229,0x4249,0x4249,0x426a,0x4249,0x4a8b,0x52cb,0x18c3,0x2104,0x18c4,0x7371,0xc5f8,0xa535,0x94b3,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2124,0x0861,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x4a05,0x39c5,0x2965,0x2965,0x2945,0x2965,0x3166,0x3186,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x41e5,0x4a25,0x4205,0x3185,0x2965,0x2965,0x2965,0x2965,0x31a6,0x10a2,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x20e3,0x0020,0x1081,0x2965,0x2945,0x2965,0x2965,0x3186,0x3186,0x41e5,0x4a25,0x4205,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0841,0x0861,0x18e3,0x18a2,0x18c3,0x2104,0x31a7,0x5aec,0x5acc,0x6b6e,0x630d,0x2965,0x4229,0x4209,0x4249,0x52aa,0x4a69,0x4229,0x39e8,0x4a69,0x4a69,0x4269,0x4228,0x3a08,0x4229,0x4229,0x39e8,0x4249,0x3a08,0x4228,0x3a08,0x4249,0x3a08,0x3a07,0x4228,0x39e7,0x4a49,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x3a08,0x4228,0x39e7,0x4228,0x4229,0x31c7,0x4208,0x39e8,0x39a7,0x39e7,0x4248,0x3a07,0x39e7,0x39e7,0x31a6,0x39c7,0x4208,0x4249,0x4a69,0x3a08,0x31c7,0x31c7,0x4249,0x4228,0x39e8,0x3a08,0x4228,0x4249,0x3a08,0x3a08,0x31c7,0x31e7,0x31e7,0x31c7,0x3a28,0x4208,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x3a07,0x31a6,0x4a6a,0x39e7,0x31c7,0x3a08,0x4a6a,0x39e8,0x4208,0x3a08,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x31c7,0x4249,0x4a69,0x31c7,0x3a08,0x31e7,0x31c7,0x4249,0x4249,0x31e7,0x31e7,0x3a08,0x29a6,0x2985,0x4228,0x39e8,0x31c7,0x3a08, +0x39c7,0x39c7,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x426a,0x426a,0x31c7,0x4228,0x31c7,0x3a08,0x31c7,0x29a6,0x3a28,0x3a28,0x31c7,0x31c7,0x3a08,0x4229,0x4229,0x3a08,0x31a6,0x31e7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c7,0x39e8,0x4229,0x4a6a,0x3a08,0x31a6,0x4228,0x4249,0x3a08,0x3a08,0x4229,0x52ab,0x3a08,0x3a49,0x4249,0x4228,0x4208,0x4a8a,0x4249,0x3a08,0x4a69,0x3a08,0x3a08,0x4a49,0x39e8,0x3a08,0x3a08,0x4a49,0x4228,0x4a69,0x4a8a,0x4228,0x4269,0x3a08,0x4229,0x3a08,0x4208,0x4228,0x4228,0x4228,0x41e8,0x39e7,0x39e8,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4228,0x4248,0x4249,0x31e7,0x39e7,0x4208,0x4a89,0x4a49,0x39e8,0x4229,0x39e8,0x39e8,0x3a09,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x4a69,0x4249,0x4229,0x4a69,0x4249,0x4228,0x4249,0x4249,0x4249,0x52aa,0x528a,0x4a6a,0x18c3,0x2124,0x18a3,0x6b30,0xd659,0xad35,0x8c72,0x4a69,0x20e3,0x18c3,0x18c3,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4a45,0x8385,0x5264,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x0861,0x0020,0x10a2,0x1082,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x4a25,0x7b65,0x7324,0x7b65,0x5a64,0x3165,0x3166,0x2966,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18e3,0x0020,0x1082,0x2965,0x2965,0x3186,0x3186,0x3186,0x4226,0x7b65,0x7b65,0x8385,0x5246,0x3186,0x3186,0x3186,0x31a7,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x18a2,0x18c3,0x20e4,0x2945,0x52ab,0x52ab,0x6b6e,0x5aec,0x2945,0x4a6a,0x4229,0x4229,0x4a69,0x4228,0x3a08,0x3a08,0x4a69,0x4a89,0x4a8a,0x3a08,0x3a08,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x4228,0x4249,0x39e7,0x4228,0x4248,0x4249,0x4228,0x4249,0x4a69,0x3a08,0x4208,0x4229,0x4229,0x4a69,0x4228,0x4a8a,0x4229,0x4229,0x4229,0x4208,0x4208,0x31a7,0x31c6,0x4228,0x39c7,0x31a6,0x4228,0x39e8,0x39c7,0x4208,0x4229,0x3a08,0x3a08,0x39e7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x4229,0x4249,0x31c7,0x3a08,0x39e7,0x4a69,0x39e7,0x31a7,0x39e8,0x4208,0x39c7,0x4208,0x4249,0x39e7,0x39e7,0x3a08,0x3a08,0x31c7,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31a7,0x4a69,0x3a08,0x31c7,0x4a69,0x4249,0x39e8,0x4a49,0x4208,0x39c7,0x31a6,0x39e7,0x4248,0x39e7,0x39e7,0x4228,0x31c7,0x39e7,0x4208,0x39e8,0x3a08,0x3a08,0x31a6,0x4228,0x52aa,0x31a7,0x3186,0x3186,0x31a6,0x2986,0x3a08,0x31a7,0x39e8,0x39c7, +0x3186,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31a7,0x31c7,0x31e7,0x31a7,0x29a6,0x2986,0x31c7,0x31a7,0x31e8,0x31c8,0x31a7,0x31c7,0x39c7,0x4208,0x4228,0x39e7,0x31e7,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x31a6,0x39e7,0x31c7,0x31c7,0x31c8,0x3a08,0x4228,0x39e7,0x4269,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x39e8,0x4228,0x39e7,0x39c7,0x4a69,0x3a08,0x3208,0x4249,0x4208,0x31e7,0x4229,0x4229,0x4a49,0x4a49,0x41e8,0x4208,0x4a49,0x4249,0x4229,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x39c7,0x39e8,0x4229,0x4249,0x3a08,0x3a08,0x3a08,0x4249,0x4249,0x4228,0x4228,0x3a08,0x4a69,0x39e7,0x4a69,0x3a08,0x39e8,0x4228,0x4208,0x39e8,0x3a08,0x4249,0x4228,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a69,0x4228,0x4a49,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x52aa,0x4a8a,0x3a08,0x18c3,0x2124,0x18c3,0x6b30,0xdeba,0xb575,0x8c51,0x4a49,0x20e3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2945,0x4a46,0x7b45,0xa465,0x62a4,0x2945,0x2965,0x2965,0x2965,0x3186,0x2965,0x0861,0x0020,0x1082,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x7325,0x8bc5,0x5a64,0x8bc5,0x8384,0x3165,0x2966,0x3166,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x2966,0x2966,0x3186,0x3186,0x5ac6,0x8bc5,0x6ae5,0x9405,0x7305,0x3186,0x3186,0x3186,0x3187,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a3,0x18e3,0x2124,0x4a6a,0x528b,0x632d,0x5acc,0x2965,0x4a6a,0x4229,0x4229,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x3a08,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4a49,0x4a49,0x4269,0x4229,0x4249,0x3a08,0x4229,0x4a49,0x4248,0x3a08,0x39e7,0x3a07,0x4228,0x4a69,0x3a08,0x3a08,0x3a08,0x4a49,0x52aa,0x4249,0x4228,0x4228,0x3a08,0x4248,0x39e7,0x3a07,0x4208,0x4248,0x4229,0x31c7,0x4249,0x3a08,0x31a6,0x4249,0x3a08,0x39c7,0x4208,0x39e7,0x31e7,0x39e7,0x4228,0x4249,0x4249,0x39e7,0x39c7,0x39e7,0x39e8,0x39e8,0x31a7,0x39c7,0x39c8,0x31a6,0x39e7,0x4a49,0x4228,0x39e7,0x4249,0x4208,0x3a08,0x39c7,0x31a6,0x31c7,0x31e7,0x39e7,0x4229,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x4208,0x39e8,0x3a08,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x31a7,0x31c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39e7, +0x2966,0x2966,0x39e7,0x3186,0x2986,0x31a7,0x3186,0x3186,0x31c7,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e8,0x3a08,0x31a6,0x39e8,0x39e8,0x39e7,0x3a08,0x4229,0x39c7,0x3a07,0x4248,0x3a29,0x3a08,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x39e7,0x4248,0x4228,0x39e8,0x4249,0x3a08,0x41e7,0x39c7,0x3a08,0x3a08,0x3a08,0x31c7,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x4209,0x4229,0x39e8,0x4229,0x3a08,0x39e8,0x4229,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4229,0x39e8,0x39e9,0x4249,0x4249,0x4249,0x4a6a,0x39e8,0x4208,0x4208,0x4229,0x4208,0x4229,0x3a08,0x3a08,0x3a28,0x39e7,0x3a08,0x4a49,0x4208,0x39e7,0x4208,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x4a49,0x528a,0x3a08,0x4a69,0x4228,0x39e7,0x4229,0x4249,0x4208,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4229,0x4228,0x4249,0x4a49,0x4248,0x3a08,0x18a3,0x2104,0x18c3,0x62ef,0xe6fb,0xb595,0x8c51,0x4a49,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x4206,0x5a85,0x9425,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x62c6,0x5a85,0x39a5,0x83a5,0x83a4,0x3165,0x2965,0x3166,0x3186,0x3186,0x10a2,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3166,0x3166,0x3186,0x4a46,0x5a85,0x5a65,0x9405,0x7305,0x3165,0x3186,0x3186,0x3186,0x31a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a2,0x18c3,0x2104,0x4229,0x528b,0x630d,0x528b,0x2945,0x4249,0x4269,0x4a8a,0x4229,0x3a08,0x4a69,0x4a69,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x4a69,0x4a8a,0x4208,0x4228,0x4a89,0x4a69,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x4229,0x39e8,0x39c7,0x4249,0x3a08,0x3a08,0x39e8,0x39c7,0x39e7,0x3a08,0x31e7,0x3a08,0x4248,0x3a08,0x3a08,0x4228,0x4249,0x3a08,0x39e8,0x4228,0x4208,0x39e7,0x4208,0x4249,0x4269,0x39e8,0x39e7,0x4a49,0x39e8,0x39e7,0x4208,0x4208,0x4249,0x31e7,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x39c7,0x4249,0x4228,0x39e7,0x39e7,0x39e8,0x4229,0x4208,0x4208,0x39e8,0x39c7,0x3a08,0x31a6,0x29a6,0x31c7,0x39e7,0x3a07,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x29a6,0x4248,0x3a28,0x31e7,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x3a08,0x31e7,0x4229,0x4208,0x39e8,0x4249,0x31a6,0x2965,0x2965,0x39c6,0x39e7, +0x31a6,0x31c7,0x31c6,0x2986,0x2986,0x2986,0x3186,0x31c6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x31c7,0x3a07,0x39e7,0x29a6,0x39e8,0x4229,0x3a08,0x31c8,0x31c8,0x3a09,0x4209,0x4208,0x3a08,0x3a07,0x3a08,0x3a49,0x4229,0x31c7,0x4a69,0x4228,0x3a08,0x39e7,0x31c7,0x3a28,0x4a69,0x4228,0x39e7,0x4249,0x4248,0x39e7,0x3a08,0x3a07,0x3a07,0x4228,0x4208,0x4208,0x4228,0x4208,0x39e7,0x4249,0x4a8a,0x3a08,0x39e8,0x4208,0x4229,0x4a6a,0x39e8,0x4208,0x4228,0x4228,0x4a69,0x4a49,0x39c7,0x4a8a,0x4aaa,0x3a08,0x31a7,0x3a09,0x39e8,0x31c8,0x3a09,0x39e8,0x39e8,0x4a48,0x4a49,0x4249,0x4208,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a08,0x4249,0x4249,0x52aa,0x4249,0x4229,0x3a08,0x4a6a,0x4a69,0x4269,0x4249,0x39e7,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4229,0x4229,0x4228,0x4a8a,0x4a69,0x4249,0x4a49,0x528a,0x4a69,0x4a8a,0x4249,0x18a3,0x18e3,0x18a3,0x5aae,0xe6fc,0xbd96,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x3185,0x3185,0x8be6,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x39c6,0x41e5,0x62c5,0x8bc5,0x5a84,0x2965,0x2965,0x2965,0x3165,0x3186,0x1082,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x3166,0x3186,0x39a6,0x39c5,0x62e5,0x9c45,0x6ae4,0x3165,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0820,0x0861,0x18a3,0x10a2,0x18c3,0x18c3,0x2104,0x3a08,0x4a6a,0x5aec,0x4a29,0x2124,0x4249,0x4249,0x4229,0x4229,0x4a8a,0x3a08,0x4249,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a89,0x528a,0x4a49,0x4228,0x4208,0x31a7,0x4229,0x4a49,0x3a08,0x39e8,0x39c8,0x41e8,0x4208,0x4a49,0x4a69,0x4228,0x4228,0x4249,0x4a49,0x4229,0x41e8,0x4208,0x39e8,0x39e7,0x3a08,0x3a28,0x4228,0x4a69,0x3a08,0x31c7,0x4228,0x4248,0x39e7,0x39e7,0x3a08,0x4249,0x39e8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e8,0x4208,0x4208,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3186,0x39e7,0x3186,0x39e8,0x4208,0x31a7,0x39e8,0x4208,0x39e8,0x4208,0x4a49,0x4208,0x4208,0x39e8,0x31c7,0x31e7,0x3a28,0x31e7,0x3a07,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x31a7,0x39e7,0x4228,0x39e7,0x39e8,0x39c7,0x39c7,0x4228,0x4a69,0x4249,0x31e7,0x39e7,0x4249,0x4229,0x31a7,0x3a08,0x39e8,0x39e8,0x31a7,0x4208,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7, +0x31c6,0x39e7,0x31a6,0x2986,0x2965,0x2986,0x4208,0x39c7,0x2986,0x31c7,0x39c8,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c7,0x3a08,0x31e8,0x29a7,0x31c8,0x3a09,0x4229,0x4a49,0x4228,0x39c7,0x31e7,0x31e7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a08,0x4249,0x4208,0x4248,0x39c7,0x39e8,0x4a69,0x4a69,0x4a49,0x4248,0x39e7,0x3a08,0x4a49,0x4a49,0x4208,0x4228,0x3a08,0x39e8,0x4a69,0x4249,0x528a,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4208,0x4228,0x39e7,0x4228,0x39e8,0x4a49,0x4249,0x3a07,0x4a69,0x3a07,0x3a08,0x3a08,0x4209,0x4229,0x4208,0x39e7,0x39e8,0x39e8,0x4228,0x4228,0x39e7,0x4208,0x4249,0x4a49,0x4228,0x4249,0x4249,0x4228,0x4229,0x4a6a,0x4229,0x4229,0x3a08,0x4a69,0x4a69,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4208,0x4228,0x4a69,0x4249,0x4249,0x4a6a,0x4229,0x4249,0x4a6a,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4229,0x18a3,0x18e3,0x10a3,0x528d,0xdebb,0xb595,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x8bc6,0x62c4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2966,0x2965,0x2965,0x39c5,0x6b25,0x8bc5,0x6ae4,0x39c5,0x2965,0x2965,0x2965,0x2965,0x3186,0x1082,0x0841,0x1082,0x18c2,0x1082,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x2965,0x3165,0x4a45,0x5245,0x5245,0x8be5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1061,0x18a3,0x10a2,0x18c3,0x18e3,0x2104,0x39e8,0x4a4a,0x52ab,0x41e8,0x2124,0x3a28,0x4a8a,0x4228,0x4a8a,0x52aa,0x4228,0x4a49,0x4208,0x4a49,0x4a49,0x4229,0x4a69,0x4249,0x4249,0x4a49,0x4249,0x3a08,0x4a6a,0x39e8,0x4208,0x4a8a,0x4229,0x4a49,0x39e7,0x39e8,0x4208,0x4229,0x4228,0x3a07,0x4228,0x4208,0x4229,0x4208,0x4a29,0x41e8,0x4208,0x39c7,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x31a6,0x4a69,0x4249,0x31a6,0x31a6,0x3a08,0x4269,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x4208,0x4229,0x31a7,0x3a28,0x3a28,0x3a28,0x4229,0x39e8,0x39e8,0x3a08,0x39e7,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x3a08,0x4a8a,0x3a08,0x31c7,0x3207,0x31c6,0x39e8,0x4a69,0x3a07,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x39e7,0x31c7,0x4248,0x4249,0x3a08,0x31a7,0x31a7,0x39e8,0x39e8,0x2986,0x31a6,0x4228,0x4228,0x31a6,0x29a6,0x4228, +0x31c6,0x31a6,0x2986,0x2966,0x2986,0x2966,0x39c7,0x39c7,0x31c7,0x39e8,0x4208,0x31a7,0x31a7,0x31c7,0x31a6,0x39c7,0x39e8,0x39e8,0x39e8,0x31a7,0x31c7,0x31c8,0x31e8,0x31c7,0x31c7,0x4208,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e7,0x31a7,0x39c7,0x4228,0x4208,0x31c8,0x39e8,0x4249,0x4208,0x41e8,0x4208,0x4208,0x4208,0x4208,0x4a6a,0x3a08,0x4228,0x31a7,0x3a08,0x4a8a,0x4228,0x4228,0x52aa,0x4a69,0x52aa,0x4249,0x4228,0x39e7,0x3a28,0x3a28,0x4228,0x4249,0x39e8,0x4229,0x4a6a,0x4a49,0x3a07,0x4249,0x39e8,0x3a08,0x4249,0x4249,0x4208,0x4208,0x4229,0x4228,0x4228,0x4249,0x4249,0x4208,0x39e8,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x3a08,0x39e7,0x4229,0x4229,0x4229,0x3a49,0x3a28,0x39e8,0x4208,0x4228,0x4228,0x4a6a,0x4a69,0x3a08,0x3a08,0x52aa,0x4249,0x4228,0x4a49,0x4a6a,0x4249,0x3a29,0x4229,0x4208,0x18a3,0x2104,0x18c3,0x4a4c,0xce39,0xa534,0x7c10,0x4228,0x18e3,0x18e3,0x18c3,0x18a3,0x2104,0x0861,0x0841,0x1082,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x83a6,0x62a4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x3165,0x2965,0x2965,0x2945,0x5aa5,0x9c45,0x8bc4,0x62c4,0x5245,0x2965,0x2965,0x2965,0x2965,0x3185,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x18c2,0x0020,0x1082,0x2965,0x3186,0x3186,0x3186,0x3165,0x62e5,0x8385,0x5a64,0x83c5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x39c7,0x4229,0x4a6a,0x39c8,0x2104,0x4aaa,0x3a28,0x4228,0x4249,0x4249,0x4a8a,0x4a49,0x4a69,0x4a49,0x4a69,0x5acb,0x4a8a,0x3a08,0x4229,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4228,0x3a08,0x3a28,0x3a28,0x4249,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x39e7,0x3a07,0x4a49,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4a89,0x31c7,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x39c7,0x39c6,0x4a69,0x4228,0x3a08,0x4227,0x31a7,0x3a08,0x3a08,0x4249,0x39e8,0x39e8,0x31a6,0x39e8,0x4208,0x31c6,0x3207,0x31c7,0x39e7,0x4208,0x4228,0x31c7,0x39e8,0x39e7,0x31c7,0x31a6,0x31e7,0x3a08,0x31c7,0x4208,0x4a69,0x31a6,0x39e8,0x31c7,0x3a08,0x39e7,0x4249,0x4229,0x4228,0x4228,0x3a08,0x3a07,0x39e7,0x31a6,0x31a6,0x31c7,0x39e7,0x39e7,0x31e7,0x31c7,0x39e7,0x3a08,0x31a6,0x31c6,0x3a08,0x4229,0x31c7,0x4228,0x4228,0x31e7,0x29a6,0x31e7,0x39e7,0x31c6,0x31a7,0x31c7,0x39e8, +0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39c7,0x39e8,0x31a6,0x39e7,0x39e8,0x4228,0x4208,0x3187,0x2987,0x31c7,0x3a08,0x31e8,0x31c7,0x31c7,0x3a28,0x39e7,0x4229,0x4229,0x31c7,0x3a08,0x39e8,0x39e7,0x3a08,0x39e7,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4228,0x39e8,0x3a08,0x3a09,0x39c7,0x4249,0x4249,0x3a08,0x4229,0x3a08,0x3a28,0x52aa,0x3a08,0x39e7,0x4228,0x4228,0x4269,0x39e7,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x39e8,0x4a49,0x4a49,0x39e7,0x39e8,0x4229,0x4249,0x31e8,0x3a08,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4228,0x4248,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x39c7,0x39e7,0x3a07,0x4249,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x3a08,0x4229,0x4229,0x4228,0x4228,0x4208,0x4228,0x4249,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4228,0x4228,0x4a6a,0x4249,0x3a08,0x4a6a,0x4249,0x18c3,0x2945,0x18e3,0x41ea,0xbdb7,0x9cd3,0x7bcf,0x4208,0x18e3,0x18e3,0x18c3,0x18a3,0x2124,0x10a2,0x1081,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x62e6,0x4a25,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x0861,0x0861,0x18c2,0x1082,0x1082,0x2104,0x10a2,0x0861,0x0861,0x2945,0x3165,0x2965,0x2945,0x2945,0x62e5,0x83c5,0x7b45,0x7325,0x62c5,0x3165,0x2965,0x2965,0x2965,0x2965,0x1082,0x0861,0x10a2,0x18c3,0x10a2,0x18e3,0x18c3,0x0861,0x1082,0x2965,0x3166,0x3186,0x3186,0x3186,0x4a46,0x7b66,0x7b45,0x7b65,0x5a65,0x3185,0x3186,0x3186,0x3186,0x2965,0x1082,0x0841,0x10a2,0x18c3,0x10a2,0x18c3,0x18e3,0x2124,0x31a7,0x4208,0x4a49,0x31a7,0x2104,0x4249,0x4249,0x4228,0x4228,0x4a69,0x4a49,0x4a49,0x4a49,0x39e7,0x39e7,0x52aa,0x4a69,0x4228,0x4a6a,0x4228,0x4249,0x4a8a,0x4228,0x4228,0x4208,0x4a49,0x4248,0x3a28,0x3a28,0x4249,0x4a69,0x39c8,0x39e8,0x4229,0x4229,0x4208,0x39e7,0x4a49,0x4a69,0x4228,0x39e7,0x4249,0x4249,0x3a28,0x4a49,0x4228,0x4228,0x4249,0x4249,0x4229,0x4228,0x39e7,0x4208,0x39e8,0x39e8,0x39e7,0x4248,0x4228,0x4a69,0x39e8,0x4229,0x4208,0x4228,0x31a7,0x39c7,0x39c7,0x39e7,0x4249,0x39e7,0x3a07,0x3a08,0x39c7,0x39c7,0x39e7,0x4229,0x31a6,0x31c6,0x31e7,0x39e7,0x39c7,0x4208,0x4249,0x39e8,0x39e7,0x31c6,0x4228,0x39e7,0x4209,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x4208,0x4249,0x31a6,0x31a7,0x31a7,0x31c7,0x3a08,0x39e8,0x3a08,0x4249,0x31c7,0x39e7,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x31a6,0x31a6,0x39c7,0x39c7,0x3186,0x2986,0x3186, +0x2965,0x2966,0x31a6,0x39c7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x31e8,0x3208,0x3a49,0x3a08,0x31c7,0x31a7,0x39e7,0x4228,0x39e7,0x31e7,0x31e7,0x3a07,0x31c7,0x4249,0x52ab,0x31c7,0x3a08,0x4228,0x31a6,0x4a8a,0x4229,0x2986,0x31c7,0x39e8,0x4249,0x4269,0x4228,0x3a08,0x4228,0x4a69,0x4228,0x31c7,0x3a08,0x4229,0x4228,0x3a08,0x39e7,0x4229,0x4228,0x3a08,0x4229,0x4249,0x3a28,0x4229,0x3a28,0x4249,0x4a69,0x39e8,0x4208,0x4a69,0x4249,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a6a,0x31c7,0x3a08,0x4228,0x4248,0x4248,0x4228,0x31e7,0x4269,0x4a8a,0x4228,0x4a49,0x4a49,0x4228,0x3a08,0x4a8a,0x4249,0x4228,0x4228,0x39e7,0x4a69,0x4a89,0x4248,0x4228,0x4249,0x4209,0x3a08,0x4249,0x4228,0x4248,0x4a69,0x4228,0x39e7,0x3a08,0x4a69,0x4a49,0x4a6a,0x4229,0x528a,0x4a69,0x4229,0x4a49,0x4249,0x4249,0x52cb,0x4a69,0x18a3,0x2125,0x18e3,0x3188,0xa535,0x8c71,0x738e,0x3a07,0x18e3,0x18e3,0x18e3,0x18c3,0x2925,0x2104,0x2104,0x18e3,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x39c5,0x31a5,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x2103,0x18e3,0x2924,0x2965,0x3165,0x2965,0x2945,0x41e5,0x4a25,0x4a25,0x4a25,0x4205,0x3165,0x2965,0x3185,0x3185,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18e3,0x2124,0x2104,0x18e3,0x2925,0x3166,0x3186,0x3186,0x3186,0x31a6,0x4a26,0x5266,0x4a26,0x39a6,0x3186,0x31a6,0x3186,0x3186,0x2945,0x18c2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x3187,0x39e8,0x4209,0x3186,0x2124,0x3a08,0x4249,0x4a8a,0x4228,0x4a8a,0x4249,0x4249,0x52aa,0x4228,0x4a48,0x4a48,0x3a08,0x4249,0x4a49,0x3a07,0x4228,0x4229,0x4249,0x4228,0x4208,0x4a49,0x4228,0x39e7,0x3a08,0x4a69,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4228,0x4249,0x4228,0x4228,0x528a,0x4208,0x4229,0x4228,0x3a08,0x4228,0x3a08,0x39e8,0x4229,0x4228,0x39e7,0x31c7,0x3a08,0x4a69,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x31c7,0x31c7,0x4228,0x3a08,0x39e7,0x3a08,0x39e8,0x4249,0x3a08,0x528a,0x39e8,0x4249,0x4228,0x4a49,0x39e7,0x39c7,0x4228,0x4228,0x39c7,0x39e7,0x4a49,0x29a6,0x31c7,0x3a07,0x3a28,0x3a08,0x39e7,0x3a07,0x39c7,0x31a6,0x4208,0x31a6,0x52ab,0x52ab,0x39e7,0x31c7,0x3a08,0x31c7,0x39c7,0x31c7,0x4249,0x39c7,0x31a7,0x3a08,0x39e8,0x31c6,0x4228,0x4229,0x31c7,0x39e8,0x2986,0x31a7,0x39e7,0x31c7,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31c7, +0x2986,0x3186,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x31c7,0x31e7,0x3208,0x3a08,0x4a8a,0x4229,0x39c7,0x39e7,0x39c7,0x39e8,0x4208,0x3a08,0x39e7,0x4a69,0x39e7,0x3a08,0x39e7,0x3a08,0x4a8a,0x4228,0x39e8,0x3a08,0x31c7,0x3a08,0x39e8,0x31a7,0x39e8,0x3a08,0x4228,0x39c7,0x39e8,0x3a08,0x39e7,0x3a08,0x4249,0x4249,0x4a8a,0x3a08,0x39e7,0x4a6a,0x3a08,0x39e7,0x4228,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4249,0x3a08,0x4208,0x4208,0x4a49,0x4229,0x4a49,0x4229,0x4208,0x3a28,0x4249,0x4249,0x3a08,0x39e8,0x4a49,0x4a69,0x3a07,0x4248,0x4228,0x3a08,0x39e8,0x4229,0x4229,0x5aab,0x4228,0x3a08,0x3a08,0x3a08,0x4229,0x4a49,0x4209,0x4249,0x4249,0x4249,0x4228,0x4229,0x3a08,0x3a09,0x4229,0x4229,0x4a69,0x52aa,0x3a08,0x3a08,0x4249,0x4aaa,0x4aaa,0x4269,0x3a28,0x4269,0x4229,0x4229,0x4a69,0x4a8a,0x52ca,0x4a8a,0x4228,0x18a2,0x18c3,0x18c3,0x2967,0x9493,0x8410,0x6b6e,0x39e7,0x18e3,0x18e3,0x18e3,0x18c3,0x2945,0x2965,0x2965,0x2924,0x2945,0x2945,0x2924,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2965,0x3165,0x31a6,0x3165,0x2965,0x2944,0x2103,0x1082,0x1082,0x2124,0x2965,0x31a6,0x3185,0x2965,0x3165,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x3186,0x3186,0x3185,0x3165,0x3165,0x20e4,0x18a2,0x1082,0x18e3,0x2965,0x3186,0x2945,0x2945,0x31a6,0x3186,0x3186,0x3166,0x2965,0x3186,0x3186,0x3165,0x39a6,0x31a6,0x39c7,0x31a6,0x3186,0x2924,0x2924,0x2124,0x2104,0x18c3,0x10a2,0x18e3,0x18e3,0x2104,0x3186,0x39e8,0x39e8,0x2966,0x2124,0x3a08,0x4a49,0x4a49,0x4249,0x4a69,0x4228,0x4a6a,0x52aa,0x4a49,0x4a89,0x52aa,0x4a69,0x4249,0x4228,0x4269,0x4249,0x4249,0x4229,0x4228,0x528a,0x4228,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4248,0x3a28,0x4228,0x4228,0x39e8,0x4249,0x4a6a,0x4208,0x4229,0x3a08,0x39e8,0x3a08,0x4208,0x4a69,0x4249,0x3a09,0x3a09,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x31c7,0x4a69,0x3a07,0x31a6,0x39e7,0x3a08,0x3a08,0x39e7,0x39e7,0x4a6a,0x4229,0x4208,0x39c7,0x4208,0x3a08,0x4a49,0x3a08,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x41e8,0x31a7,0x4208,0x4a49,0x3a08,0x4249,0x4228,0x31c6,0x4228,0x4228,0x4a69,0x31c7,0x3a08,0x4249,0x39e8,0x4209,0x39e8,0x39e7,0x4228,0x39e7,0x4229,0x39c7,0x4208,0x4229,0x4249,0x4a89,0x4228,0x3a08,0x31a7,0x3a08,0x31a7,0x31c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c6,0x31c7,0x3a08,0x31c6, +0x2986,0x3186,0x31a7,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x31a7,0x31c7,0x39e8,0x31c7,0x3a08,0x4229,0x31c7,0x31a7,0x31c7,0x4a69,0x39e8,0x31e8,0x3a08,0x4249,0x39e8,0x3a08,0x39e8,0x39c8,0x31a7,0x4229,0x528a,0x3a08,0x3a08,0x39e7,0x31c7,0x3a08,0x39e8,0x31c7,0x31c7,0x31e7,0x4228,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e8,0x4228,0x4249,0x4249,0x4a8a,0x4269,0x3a08,0x3a28,0x4249,0x4249,0x4249,0x4208,0x4a49,0x3a08,0x4a69,0x4248,0x4228,0x4a49,0x4a6a,0x4a49,0x4a49,0x4249,0x3a08,0x3a08,0x4209,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4208,0x4208,0x39e8,0x4208,0x4a6a,0x4228,0x3a28,0x4249,0x4a69,0x4228,0x4228,0x4a8a,0x4249,0x3a29,0x4229,0x4249,0x4229,0x4249,0x3a28,0x4269,0x3a08,0x3a08,0x39e8,0x4208,0x4249,0x4208,0x4229,0x4aaa,0x4a69,0x4249,0x4249,0x3208,0x4249,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4228,0x18a2,0x18c3,0x18a3,0x2926,0x83f1,0x73cf,0x634d,0x39c7,0x18c3,0x18c3,0x18c3,0x18c3,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2924,0x2124,0x2124,0x2944,0x2104,0x10a2,0x1082,0x2124,0x3185,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x3165,0x2104,0x18a2,0x1082,0x20e4,0x3166,0x3165,0x2925,0x2924,0x2965,0x2945,0x2945,0x2104,0x20e4,0x2104,0x2924,0x2124,0x2945,0x2965,0x3165,0x2944,0x2104,0x20e4,0x2124,0x2124,0x2124,0x18c3,0x1082,0x18e3,0x20e3,0x2104,0x3186,0x39c7,0x31a7,0x2945,0x2924,0x4a69,0x528a,0x41e7,0x4248,0x4228,0x4249,0x4249,0x4a6a,0x4a69,0x4249,0x4a49,0x4a69,0x4249,0x39e8,0x4249,0x4a69,0x4a49,0x4a69,0x4a8a,0x4228,0x4228,0x4a69,0x3a08,0x4229,0x4208,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x4249,0x3a08,0x4229,0x4208,0x4208,0x4228,0x4228,0x4248,0x3a08,0x31e7,0x4208,0x4229,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4229,0x39c7,0x4208,0x39e7,0x4a69,0x3a08,0x39e7,0x3a07,0x4228,0x4229,0x39c8,0x4208,0x4208,0x39c7,0x31c7,0x4249,0x39e7,0x3a08,0x39e7,0x4a69,0x4228,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x3a08,0x3a07,0x31c6,0x39e7,0x4249,0x4a69,0x31c7,0x31c7,0x3a08,0x39e8,0x4249,0x39e8,0x3a08,0x4228,0x39e7,0x3186,0x4208,0x4228,0x4229,0x4229,0x4208,0x4228,0x39e8,0x39c7,0x3a08,0x39e7,0x31e7,0x31c7,0x39e7,0x31a6,0x31a6,0x3a07,0x39e7,0x4208,0x39e7, +0x2987,0x2966,0x39e7,0x31a6,0x2145,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x31e7,0x39e8,0x3a08,0x4249,0x39e8,0x31c7,0x39e8,0x31e8,0x39e8,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x4249,0x3a08,0x3a07,0x3a28,0x39e7,0x39c7,0x31c7,0x31a7,0x31e8,0x3a28,0x39e7,0x31c7,0x39e7,0x3a28,0x4249,0x4249,0x3a08,0x39e7,0x3a28,0x4a69,0x4228,0x4249,0x3a08,0x3a08,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x4a6a,0x4228,0x4249,0x4228,0x4208,0x4a49,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4229,0x4a49,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4269,0x4249,0x4a49,0x4249,0x4a89,0x4a69,0x3a08,0x4248,0x4a69,0x4228,0x4249,0x4a69,0x31c7,0x4249,0x4269,0x3a28,0x428a,0x4249,0x4229,0x3a08,0x4a69,0x4a69,0x4229,0x4a69,0x4a29,0x4229,0x4a6a,0x4229,0x426a,0x4229,0x4249,0x4a49,0x5acb,0x4a6a,0x4a6a,0x18c3,0x18a2,0x18c3,0x2125,0x738f,0x738e,0x5b0c,0x39c6,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x20e3,0x10a2,0x1082,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c2,0x18c3,0x18a3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x2104,0x18a2,0x1082,0x18e3,0x2925,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x18c3,0x10a2,0x20e4,0x20e4,0x2104,0x2966,0x31a7,0x3187,0x2945,0x2945,0x4a69,0x4a49,0x528a,0x5aab,0x52aa,0x4269,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4a6a,0x52cb,0x4a8a,0x4269,0x4249,0x4269,0x4a8a,0x4249,0x3a28,0x3a28,0x4228,0x3a08,0x4249,0x4249,0x4248,0x4a49,0x4228,0x4228,0x39c7,0x39e8,0x4229,0x31c7,0x4228,0x4249,0x3a08,0x31e7,0x3a07,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x3a08,0x3a08,0x4a49,0x3a08,0x3a08,0x4228,0x3a08,0x4229,0x39e7,0x39c7,0x39e8,0x4a49,0x39e7,0x4a69,0x4228,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x41e8,0x39e7,0x4a69,0x4a69,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3a08,0x3a07,0x3a08,0x39e7,0x31c7,0x3a08,0x39e7,0x4228,0x39e7,0x3a07,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4a8a,0x4269,0x31a6,0x3a08,0x39e7,0x31c7,0x39e8,0x41e8,0x4229,0x31a7,0x3a08,0x39e8,0x4228,0x4208,0x31c7,0x31e7,0x4228,0x4248,0x31e7,0x4228,0x3a07,0x39c7,0x3186,0x3186,0x3a08, +0x31a7,0x2986,0x31a7,0x2965,0x31c7,0x31c7,0x29a6,0x2986,0x39c7,0x39e8,0x2986,0x31c7,0x31c7,0x31a7,0x3a08,0x31e7,0x31c7,0x3187,0x31a7,0x31a7,0x4208,0x4249,0x31c6,0x4229,0x4208,0x39c7,0x39e7,0x39c7,0x3a08,0x39e8,0x3a08,0x4228,0x3a08,0x39e7,0x39c7,0x31c7,0x3a29,0x3a28,0x3a07,0x3a08,0x31c7,0x3a08,0x31e8,0x3a08,0x52ab,0x3a28,0x3a08,0x4249,0x4249,0x3a28,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x4249,0x4228,0x4249,0x4229,0x4229,0x3a09,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4a49,0x4a6a,0x4228,0x4269,0x4249,0x39e8,0x4249,0x4228,0x4228,0x39e8,0x4228,0x4249,0x39e8,0x4a8a,0x5b0c,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x4249,0x4228,0x4a69,0x4a69,0x39e7,0x4a8a,0x4a8a,0x3a08,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x52aa,0x4249,0x4208,0x4a8a,0x4229,0x4228,0x4a8a,0x52ab,0x4249,0x4228,0x18a3,0x18a2,0x18e3,0x2105,0x632e,0x632d,0x5acb,0x31a6,0x18c3,0x18c3,0x18a3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x18a2,0x2104,0x20e4,0x18e3,0x2945,0x3186,0x3166,0x2945,0x2965,0x4a49,0x4a49,0x52aa,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a69,0x4249,0x4a69,0x4a69,0x4269,0x4a8a,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4249,0x3a28,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x39e7,0x4208,0x4208,0x3a08,0x4228,0x4a49,0x3a08,0x4249,0x39c7,0x39c7,0x4208,0x31c7,0x4249,0x4249,0x3a08,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4249,0x3a08,0x3a08,0x4228,0x4a69,0x4228,0x3a08,0x4249,0x4248,0x3a08,0x3a08,0x31c7,0x4208,0x4229,0x4269,0x3a28,0x4228,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x2986,0x4229,0x4228,0x39e8,0x39e8,0x4208,0x4208,0x39e7,0x4249,0x3a07,0x39c7,0x4208,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39e7,0x4208,0x29a6,0x31c7,0x39e8,0x3a08,0x31a6,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x3a07,0x31a6,0x31a6,0x2966,0x31a6,0x3186, +0x2966,0x2966,0x31a6,0x31c7,0x31e7,0x31e7,0x3a08,0x3186,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x31c7,0x39e8,0x3a08,0x4a29,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4208,0x39c7,0x39c7,0x39e7,0x39e8,0x4229,0x4249,0x3a08,0x31c6,0x4228,0x4249,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x31e8,0x4a8a,0x4229,0x31e8,0x4a6a,0x4a6a,0x31e7,0x4249,0x4269,0x3a28,0x4249,0x3a28,0x4228,0x4249,0x4249,0x4229,0x4229,0x4229,0x4228,0x4228,0x4229,0x4269,0x4a8a,0x3a08,0x4229,0x4249,0x3a08,0x39e7,0x4228,0x4a69,0x4269,0x4aaa,0x4228,0x4228,0x4228,0x4209,0x4208,0x4228,0x4249,0x4229,0x4249,0x4a69,0x4228,0x3a08,0x3a29,0x4a6a,0x4229,0x4a49,0x52aa,0x528a,0x4228,0x39e7,0x3a08,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4208,0x4228,0x4a8a,0x4a49,0x4a8a,0x4249,0x4249,0x4208,0x10a2,0x10a2,0x18c3,0x2104,0x5aec,0x630c,0x528b,0x31a6,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x20e3,0x18e3,0x2125,0x2965,0x2945,0x2124,0x3166,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4249,0x52aa,0x4aaa,0x4a69,0x4269,0x4aaa,0x4a8a,0x4249,0x4a49,0x4208,0x4a69,0x4a69,0x39c7,0x4a8a,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4248,0x3a28,0x4228,0x5289,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4228,0x4a69,0x4208,0x4228,0x3a08,0x4228,0x3a08,0x4a69,0x39e7,0x3a07,0x39e8,0x39c7,0x39e7,0x4228,0x3a08,0x4249,0x4228,0x39e8,0x31c7,0x39e7,0x39c7,0x4228,0x4a49,0x39c7,0x4a49,0x39e8,0x39e7,0x3a28,0x39e7,0x4208,0x39e8,0x31e8,0x4228,0x4228,0x4248,0x39e7,0x31a6,0x4208,0x4249,0x4a49,0x39e7,0x4208,0x3a08,0x39c7,0x4a49,0x39c7,0x31a7,0x3a08,0x4229,0x31a6,0x39e7,0x3a08,0x39c7,0x4208,0x31a7,0x3187,0x31c7,0x31a6,0x3a07,0x31a6,0x39c7,0x39c7,0x2965, +0x31a7,0x39c7,0x4228,0x39c7,0x31a7,0x39e7,0x39e8,0x31a7,0x39e8,0x31a7,0x2986,0x39e8,0x3a08,0x4249,0x4249,0x39e8,0x31a6,0x31e8,0x31c7,0x39c7,0x4229,0x4208,0x3a08,0x31c8,0x31e8,0x31e7,0x39e7,0x4228,0x3a08,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e7,0x4208,0x39e8,0x39e7,0x39e7,0x3a28,0x4249,0x4249,0x39e8,0x3a08,0x4229,0x4229,0x3a08,0x4a4a,0x3a08,0x4249,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x4249,0x4a8a,0x52aa,0x4a6a,0x4229,0x3a08,0x39e7,0x4a8a,0x3a28,0x4269,0x4a8a,0x4208,0x4229,0x4269,0x3a08,0x4249,0x4a49,0x4248,0x4269,0x4a69,0x39e7,0x39e7,0x4229,0x4a6a,0x3a08,0x3a08,0x4229,0x52ab,0x4249,0x4a69,0x4a6a,0x4249,0x4249,0x526a,0x4a8a,0x4249,0x4249,0x4248,0x3a08,0x3a08,0x4269,0x4249,0x4229,0x4a49,0x52aa,0x4a8a,0x4228,0x4269,0x4249,0x4249,0x39e8,0x4208,0x4208,0x4a49,0x4a69,0x4229,0x4228,0x4249,0x4a6a,0x4208,0x10a2,0x10a2,0x18c3,0x18e4,0x52ac,0x5aec,0x4a6a,0x3186,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x20e3,0x18e3,0x2124,0x2945,0x2925,0x2104,0x2945,0x4a69,0x4a8a,0x4a69,0x4a49,0x4a49,0x528a,0x4249,0x4249,0x4269,0x4249,0x4a6a,0x4249,0x4229,0x4228,0x4228,0x4208,0x528a,0x528a,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x4a49,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4a8a,0x39e8,0x4249,0x4208,0x4228,0x39e7,0x39c7,0x39e7,0x4228,0x3a28,0x31e7,0x4228,0x39e7,0x3a08,0x4249,0x4229,0x3a07,0x39e7,0x39e7,0x4248,0x4a69,0x39e7,0x39e8,0x4249,0x39e7,0x3a08,0x4249,0x3a08,0x4228,0x3a08,0x39e7,0x31c6,0x39e7,0x3a28,0x4249,0x4208,0x39e7,0x3a08,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x3a08,0x3a07,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x3187,0x39e8,0x31c7,0x4229,0x39c7,0x3a07,0x4208,0x3a08,0x3a07,0x4229,0x4229,0x39e8,0x39e8,0x39e8,0x39c7,0x4229,0x4249,0x39e8,0x39e7,0x39e8,0x31a6,0x31e7,0x39e7,0x39e7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x4a49,0x39e7,0x31a6,0x39c7,0x31a6, +0x3a08,0x39e8,0x2986,0x31a6,0x31a6,0x39c7,0x31a7,0x39c7,0x3a08,0x31c7,0x31a7,0x31a7,0x31c7,0x4208,0x4229,0x31e7,0x31c7,0x3a08,0x29c7,0x31c7,0x39e8,0x39a7,0x31c8,0x31e8,0x31e7,0x3a28,0x4249,0x3a07,0x3a28,0x3a07,0x4207,0x4228,0x39e7,0x4249,0x4a49,0x4208,0x39e7,0x39e8,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x3a29,0x4228,0x4269,0x4249,0x4229,0x4a49,0x4228,0x5b0c,0x4a8a,0x3a08,0x3a28,0x52ab,0x4a49,0x4a49,0x4a69,0x4248,0x3a28,0x4269,0x4249,0x3a28,0x4249,0x4a49,0x41e8,0x4208,0x4229,0x4228,0x4a49,0x4228,0x4a69,0x4a6a,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4a6a,0x4a6a,0x528a,0x528a,0x4a49,0x4249,0x52cb,0x4a8a,0x4249,0x4228,0x4248,0x4248,0x4a8a,0x4228,0x4249,0x4a89,0x4228,0x4228,0x4208,0x4208,0x52ab,0x4208,0x4249,0x4249,0x4229,0x4249,0x4208,0x4229,0x4a49,0x4a69,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x18c3,0x10a2,0x18c3,0x20e4,0x528b,0x5acb,0x4a49,0x3185,0x18c3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x2124,0x20e3,0x18c3,0x2104,0x2125,0x2104,0x20e4,0x2124,0x4249,0x4a69,0x52aa,0x4229,0x4a6a,0x4a49,0x4249,0x4249,0x4229,0x4a69,0x4a8a,0x4a69,0x4a49,0x52cb,0x4a69,0x4a89,0x4248,0x4aaa,0x4248,0x39e7,0x4229,0x4228,0x3a08,0x4228,0x4228,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a69,0x4249,0x39e7,0x4228,0x4a8a,0x4a89,0x4228,0x3a07,0x3a08,0x31c7,0x4208,0x4a6a,0x3a08,0x39e7,0x3a08,0x3a08,0x528a,0x4a49,0x39e8,0x3a08,0x4229,0x39c7,0x39c7,0x4208,0x4229,0x4228,0x3a08,0x4249,0x31c6,0x3a08,0x31c7,0x52ab,0x4208,0x39e8,0x4208,0x31a6,0x3a08,0x3a08,0x39e7,0x4229,0x3a08,0x4228,0x31a6,0x31a6,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x4228,0x4208,0x4208,0x4208,0x3a08,0x31c7,0x3a08,0x4228,0x4229,0x39c7,0x4208,0x31a7,0x39e8,0x4249,0x3a08,0x31a7,0x31a7,0x31c7,0x39e7,0x31a6,0x31c7,0x39e7,0x4208,0x3a08,0x39e7,0x39e8,0x31a6,0x31a6,0x3186,0x2945,0x31c6, +0x39c7,0x31c6,0x2145,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c8,0x31a7,0x2986,0x2986,0x39e8,0x3a08,0x31c7,0x3a08,0x3208,0x29a6,0x31a7,0x39c7,0x39e8,0x31c7,0x4208,0x4249,0x31e8,0x29a6,0x31c7,0x39e8,0x4229,0x4228,0x4249,0x4a69,0x39c7,0x3a07,0x4228,0x3a28,0x3a28,0x31e7,0x4249,0x4269,0x4249,0x3a08,0x3a28,0x4249,0x4a8a,0x3a08,0x4a49,0x4a49,0x4228,0x52aa,0x4249,0x3a08,0x4249,0x4249,0x4a69,0x5289,0x4a69,0x39e7,0x4228,0x4a69,0x4249,0x52cb,0x4249,0x4249,0x4229,0x4249,0x4228,0x4a89,0x4248,0x4a69,0x4249,0x4249,0x4a8a,0x52cb,0x3a08,0x4248,0x4249,0x4249,0x4a69,0x52ab,0x4a8a,0x4a8a,0x52ab,0x4a49,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4aaa,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4249,0x3a08,0x4a8a,0x4a8a,0x4a69,0x39e7,0x4249,0x4229,0x528a,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x3a08,0x4a69,0x4228,0x4228,0x18c3,0x10a2,0x18e3,0x18e4,0x4a4a,0x528a,0x4249,0x3186,0x18c3,0x18e3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x18e3,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x2104,0x4228,0x4a69,0x52aa,0x4248,0x4a49,0x4a49,0x4249,0x4a69,0x4269,0x4a69,0x52aa,0x52ab,0x4249,0x4a6a,0x4a8a,0x4269,0x4a89,0x4248,0x4228,0x39e7,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x3a07,0x4249,0x39c7,0x39e7,0x4208,0x4a49,0x4208,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4229,0x39e8,0x4a6a,0x4228,0x3a08,0x39e7,0x4208,0x4a49,0x4208,0x4248,0x4249,0x39e7,0x31e7,0x3a08,0x4249,0x4208,0x4208,0x3a08,0x4228,0x3a07,0x3a08,0x4249,0x39c7,0x4a49,0x4228,0x39c7,0x4208,0x31e7,0x39e8,0x39e7,0x3a08,0x3a28,0x31e7,0x39c7,0x31a6,0x4249,0x3a08,0x31c7,0x39e7,0x31c7,0x31c7,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x31c7,0x3a07,0x4228,0x4208,0x3a08,0x39e8,0x4208,0x4a6a,0x31a7,0x39c7,0x39e8,0x3a08,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x31a6,0x31a6, +0x2965,0x2986,0x2986,0x31c7,0x3a08,0x31e7,0x31e7,0x31a6,0x39c7,0x39c7,0x31a7,0x31c7,0x31e8,0x31e8,0x31a7,0x3a08,0x39c7,0x4228,0x4229,0x3a08,0x31e7,0x31a7,0x39c7,0x31a7,0x4208,0x31a7,0x31a7,0x31c7,0x4a6a,0x3a08,0x39e8,0x39e8,0x4249,0x4209,0x3a07,0x4248,0x4249,0x3a28,0x4249,0x3a08,0x39c7,0x4208,0x41e8,0x4a49,0x4a49,0x5b0b,0x4a89,0x3a07,0x3a08,0x4a69,0x528a,0x39e7,0x4229,0x4a49,0x4a49,0x4a49,0x528a,0x4249,0x5acb,0x4229,0x4208,0x4a69,0x4229,0x4a69,0x4249,0x4229,0x4a69,0x4228,0x4a8a,0x4248,0x4a69,0x4a69,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4269,0x4249,0x4a69,0x4a8a,0x3a28,0x4249,0x4a6a,0x4a49,0x5acb,0x52aa,0x5acb,0x630c,0x4a69,0x4229,0x4a6a,0x4a69,0x4249,0x4269,0x4249,0x4249,0x3a08,0x4249,0x428a,0x3a08,0x4249,0x3a08,0x4208,0x4a69,0x4a49,0x4a49,0x4249,0x4a8a,0x426a,0x3a08,0x3a08,0x3a08,0x4249,0x4248,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x4229,0x4a6a,0x4229,0x3186,0x18c3,0x20e3,0x18c3,0x18c2,0x18c2,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x2104,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a49,0x4249,0x4a69,0x4aaa,0x4229,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4249,0x4249,0x528a,0x4a49,0x3a08,0x4229,0x4228,0x528a,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x39c7,0x4a6a,0x31e7,0x3a08,0x3a08,0x4208,0x39e7,0x39e7,0x3a07,0x4a69,0x52aa,0x3a07,0x31a7,0x4249,0x4228,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x3a08,0x4228,0x31c7,0x4248,0x4249,0x4249,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x31a7,0x4249,0x4248,0x31c7,0x3a08,0x3a08,0x4248,0x39c7,0x31e7,0x31c6,0x3a07,0x31a6,0x31c7,0x3a08,0x31a6,0x4228,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x4249,0x4208,0x39e7,0x39c7,0x4207,0x4228,0x4229,0x4209,0x39e8,0x3186,0x39c7,0x3a08,0x3207,0x29a6,0x31c7,0x31a6,0x31a7,0x31c7,0x31e7,0x39e7,0x39e7,0x4228,0x4208,0x31a6,0x39e7,0x39e7, +0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x39c7,0x31a7,0x31a6,0x31c7,0x39e8,0x3a28,0x3208,0x2985,0x31c7,0x31c7,0x3a08,0x31a7,0x3a08,0x39e7,0x3a07,0x31c6,0x4208,0x4208,0x39e7,0x3a08,0x3a28,0x4249,0x3a09,0x4229,0x4208,0x4229,0x4a49,0x4228,0x4228,0x4a8a,0x4249,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x4229,0x4229,0x4a49,0x4228,0x4229,0x4249,0x4228,0x4a8a,0x4a6a,0x4228,0x528a,0x4229,0x4a69,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x52aa,0x4a6a,0x4a8a,0x39e7,0x4a8a,0x4a49,0x4a69,0x4a6a,0x4249,0x4a8a,0x4a6a,0x52cb,0x4229,0x4a49,0x4aaa,0x4a8a,0x52aa,0x4a49,0x632c,0x5aec,0x4a6a,0x4249,0x4249,0x4249,0x4a8a,0x4a8a,0x4249,0x4208,0x4228,0x4229,0x4249,0x4208,0x4a49,0x4228,0x4a69,0x4269,0x4a8a,0x4a6a,0x4a49,0x4a8a,0x4a69,0x3a08,0x3a08,0x4269,0x4269,0x4a8a,0x4229,0x18a2,0x10a2,0x20e4,0x18c3,0x4208,0x4a29,0x4208,0x3186,0x18e3,0x20e3,0x18e3,0x18c3,0x18e3,0x2104,0x20e3,0x20e3,0x20e3,0x20e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x18a2,0x18a2,0x18c2,0x18a2,0x18c3,0x18c2,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2103,0x20e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x2103,0x18c3,0x10a2,0x18a2,0x2104,0x1082,0x20e4,0x2104,0x18e4,0x18e3,0x18e4,0x2124,0x3a08,0x4a8a,0x4a49,0x4a89,0x5acb,0x528a,0x4228,0x4a8a,0x52cb,0x4249,0x3a08,0x4a49,0x4a8a,0x528a,0x4249,0x4249,0x4a69,0x4228,0x4228,0x528a,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x4a49,0x4a8a,0x39e7,0x4228,0x3a08,0x39e8,0x4228,0x4229,0x3a08,0x31e7,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4269,0x4228,0x4228,0x39e7,0x4a69,0x4249,0x4228,0x3a07,0x4208,0x4248,0x4248,0x4249,0x4228,0x4207,0x4a48,0x4208,0x4208,0x4208,0x4228,0x4228,0x4249,0x4208,0x39e7,0x4a49,0x4208,0x39e8,0x4228,0x3a08,0x4228,0x39e7,0x4249,0x3a28,0x39e7,0x39e7,0x39c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31c7,0x31a6,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x31a7,0x3a08,0x31c7,0x39e7,0x3a08,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x3a07,0x39c7,0x31a6,0x39e7,0x3a08, +0x31a6,0x29a6,0x31c6,0x31a6,0x2966,0x29a6,0x29a6,0x31c7,0x31a7,0x39c7,0x4228,0x31c7,0x39e8,0x31e7,0x31c6,0x29a6,0x31a7,0x4208,0x39e7,0x39c7,0x4228,0x4248,0x4228,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x4209,0x3a08,0x4249,0x4249,0x3a08,0x31c7,0x31e7,0x4269,0x3a29,0x3a08,0x3a08,0x39e8,0x4a8a,0x4228,0x4228,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a6a,0x4248,0x4a49,0x4249,0x4a69,0x3a29,0x4a8a,0x52aa,0x4a69,0x4228,0x4229,0x4a49,0x4229,0x528a,0x4a49,0x4228,0x528a,0x52aa,0x4228,0x4a6a,0x52cb,0x4a8a,0x4208,0x52ab,0x5aeb,0x4a89,0x4a69,0x4229,0x52ab,0x4208,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4229,0x4249,0x4a69,0x4228,0x4a49,0x4229,0x4a69,0x52aa,0x4a69,0x4a8a,0x4a8a,0x3a09,0x4a6a,0x4229,0x4a69,0x4a49,0x3a28,0x4229,0x426a,0x4aab,0x4a6a,0x18a3,0x10a2,0x2104,0x18c3,0x39e8,0x4209,0x39e8,0x31a6,0x2103,0x18e3,0x18e3,0x18c3,0x2104,0x2945,0x2945,0x2944,0x2944,0x3165,0x2965,0x3165,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2945,0x2944,0x2103,0x2124,0x2924,0x2924,0x2124,0x18c3,0x1082,0x1082,0x20e3,0x2965,0x3185,0x2965,0x2965,0x3185,0x3165,0x3186,0x3165,0x2965,0x2965,0x2944,0x2965,0x2965,0x2944,0x2924,0x2124,0x2924,0x2924,0x2944,0x2924,0x18c3,0x1082,0x1082,0x18c3,0x2965,0x39c6,0x31a6,0x3165,0x2965,0x3165,0x3185,0x3185,0x3185,0x2945,0x2965,0x2945,0x2965,0x3165,0x2945,0x3165,0x2945,0x2924,0x2945,0x3165,0x20e3,0x10a2,0x18a2,0x20e3,0x10a2,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x2945,0x4248,0x4a69,0x4a8a,0x4a49,0x4a8a,0x4a49,0x4208,0x4a69,0x4a89,0x3a28,0x4249,0x4249,0x4a69,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4a69,0x4a6a,0x4a49,0x52ab,0x4228,0x39e7,0x39e7,0x4228,0x4249,0x3a08,0x4228,0x3a07,0x4249,0x4228,0x3a08,0x4a89,0x4228,0x4228,0x4a69,0x4a69,0x3a08,0x39e7,0x4228,0x3a08,0x3a08,0x3a07,0x4a49,0x4a49,0x4228,0x39e7,0x4a49,0x4208,0x4208,0x4249,0x4a69,0x4a69,0x4228,0x4208,0x39e8,0x39e8,0x4a49,0x4228,0x39e7,0x4207,0x4208,0x4249,0x4229,0x3a08,0x3a08,0x3a08,0x39e8,0x31a7,0x39e8,0x39e7,0x39e7,0x39c7,0x39e8,0x31a7,0x39e7,0x39c7,0x39e7,0x31a6,0x31e7,0x3a08,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x3a08,0x39e7,0x4208,0x39e7,0x4208,0x4208,0x31a6,0x31c7,0x31e7,0x4228,0x39e7,0x39c7,0x39c7,0x31c7,0x31c7,0x3a08,0x4208,0x4208,0x39e7,0x3a08,0x31c7,0x31a6,0x31c7,0x39e7,0x31a6,0x31c6, +0x31c6,0x3a08,0x2986,0x2165,0x2145,0x31c7,0x31e7,0x3a08,0x39e7,0x39e8,0x31c7,0x3186,0x39c7,0x4208,0x39e7,0x3186,0x39c7,0x3a08,0x3a29,0x31e7,0x31c7,0x31a6,0x39e7,0x3a08,0x4228,0x39e8,0x31c7,0x39e8,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4228,0x424a,0x3a08,0x3a08,0x4a6a,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x39e8,0x4208,0x4229,0x41e8,0x4208,0x4229,0x4249,0x4229,0x4208,0x4249,0x39e8,0x4208,0x4a49,0x4208,0x4228,0x4269,0x4269,0x4249,0x4249,0x4249,0x52cb,0x4a8a,0x4249,0x4249,0x4a8a,0x3a28,0x4269,0x52aa,0x4a69,0x52ab,0x52aa,0x4a8a,0x4a89,0x4249,0x4249,0x52cb,0x5acb,0x5aec,0x52eb,0x4aaa,0x52aa,0x52cb,0x52ab,0x4208,0x4a6a,0x52aa,0x4229,0x4229,0x4229,0x4269,0x4249,0x4a89,0x4a8a,0x4228,0x4aaa,0x4a8a,0x4228,0x4a69,0x4229,0x4249,0x4249,0x3a08,0x4229,0x4249,0x4229,0x4249,0x426a,0x4a8a,0x4a69,0x4249,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x39c7,0x41e8,0x39e7,0x31a6,0x2103,0x18c3,0x18e3,0x18c3,0x2104,0x2124,0x2124,0x18e3,0x2924,0x3165,0x2965,0x2945,0x2945,0x2945,0x2944,0x2965,0x2944,0x2945,0x2945,0x2965,0x2944,0x2924,0x20e3,0x2945,0x2124,0x18c3,0x1082,0x1082,0x18e3,0x2945,0x2965,0x2103,0x2944,0x3185,0x2965,0x3186,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2924,0x2103,0x2945,0x2944,0x18c3,0x1082,0x1082,0x18c3,0x2945,0x39c6,0x2945,0x2944,0x3165,0x3165,0x3185,0x39a6,0x3186,0x2965,0x3185,0x3186,0x3186,0x39a6,0x3186,0x3186,0x3185,0x2104,0x2945,0x2945,0x20e3,0x10a2,0x10a2,0x18e3,0x18a2,0x2945,0x2124,0x18e3,0x18e3,0x18c3,0x2945,0x4a8a,0x4228,0x4a69,0x4a6a,0x528a,0x4a49,0x4228,0x4a69,0x4228,0x3a28,0x4269,0x3a28,0x4228,0x4a49,0x39e8,0x4249,0x4a89,0x4a89,0x4228,0x4a49,0x4249,0x4229,0x3a28,0x3a08,0x4228,0x4249,0x31c7,0x3a28,0x3a28,0x3a28,0x3a08,0x4228,0x52aa,0x4a89,0x3a07,0x4a69,0x4a49,0x3a07,0x3a08,0x39c7,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x3a07,0x4248,0x4a49,0x4229,0x4a49,0x39e7,0x4a89,0x4a69,0x3a08,0x4a6a,0x4229,0x4208,0x39e8,0x3a07,0x39c6,0x4228,0x4228,0x4249,0x4249,0x4249,0x4228,0x4208,0x4a49,0x4229,0x39c7,0x31a7,0x39e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x3a08,0x39e7,0x31c7,0x39e7,0x3a07,0x39e7,0x4a69,0x39e7,0x31c6,0x3a08,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x39e7,0x4249,0x39e8,0x39e8,0x39e7,0x31c7,0x39c7,0x31a6,0x39e7,0x4228,0x31a6,0x39e7,0x4a69,0x39e7,0x39e7,0x31c7,0x2986,0x39e7,0x31c7,0x39e7, +0x31c7,0x3186,0x2965,0x31c6,0x31a6,0x31c7,0x39e7,0x39e7,0x39e8,0x31a7,0x31a7,0x31a7,0x39c7,0x4228,0x39e8,0x31c6,0x3a07,0x3a28,0x29a7,0x31e8,0x31c7,0x3a08,0x4228,0x3a08,0x3a28,0x3a08,0x31c7,0x31e7,0x3a08,0x3a08,0x4229,0x39e8,0x52ab,0x4269,0x3a29,0x3a08,0x4229,0x4a4a,0x39e8,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x31e7,0x4269,0x4249,0x3a08,0x5acb,0x4a49,0x31e7,0x3a08,0x4229,0x4208,0x4a49,0x4a8a,0x4249,0x4249,0x4249,0x4229,0x4a8a,0x5b0c,0x4a69,0x528a,0x4a6a,0x4a69,0x4a69,0x4aaa,0x4a6a,0x4a8a,0x4aaa,0x4a8a,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x52cb,0x52ec,0x4a8a,0x4249,0x4a6a,0x4a8a,0x4229,0x424a,0x424a,0x4a4a,0x4229,0x4248,0x4a89,0x4a69,0x52aa,0x4a6a,0x4aaa,0x4249,0x3a08,0x4a49,0x52aa,0x528a,0x4a69,0x4a49,0x4a49,0x4249,0x4228,0x4a49,0x4229,0x528a,0x528a,0x4a8a,0x18c3,0x1082,0x18c3,0x18c3,0x31a7,0x39c7,0x39c7,0x3185,0x18e3,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x1082,0x0861,0x2945,0x2945,0x2944,0x2924,0x2124,0x2124,0x2924,0x2945,0x2104,0x2124,0x2924,0x2944,0x2945,0x2965,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x18c3,0x18e3,0x18c3,0x1082,0x2124,0x2945,0x2924,0x2945,0x2924,0x2124,0x2124,0x2924,0x2924,0x2924,0x2944,0x2924,0x2945,0x2945,0x18c3,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x2104,0x20e3,0x18c3,0x2944,0x2944,0x2944,0x2945,0x2945,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x3165,0x3186,0x18a2,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2945,0x20e4,0x18e4,0x18e3,0x18c3,0x2925,0x4229,0x4208,0x4208,0x4a49,0x4a6a,0x4a8a,0x3a08,0x4a69,0x4228,0x4228,0x4a89,0x4a69,0x4a69,0x4249,0x3a08,0x4228,0x4a49,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x4a49,0x3a08,0x4229,0x52aa,0x4208,0x4a49,0x4a69,0x4228,0x31c7,0x4229,0x528a,0x39e8,0x3a08,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x4228,0x4a8a,0x4228,0x3a08,0x4228,0x4a69,0x3a08,0x4249,0x4228,0x4248,0x31c7,0x4228,0x4249,0x4249,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x39e7,0x3a08,0x4228,0x3a08,0x4249,0x4a69,0x4248,0x4249,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x4249,0x4208,0x39c7,0x39e7,0x31a7,0x39c7,0x39e7,0x39e7,0x4229,0x4228,0x3a08,0x31c7,0x3a08,0x31e7,0x31c7,0x31e8,0x31e7,0x3a28,0x3a08,0x39e8,0x31a7,0x39a7,0x3186,0x31c7,0x3a08,0x3186,0x31c7,0x31c7,0x31a7,0x39e8,0x4209,0x3187,0x39c7,0x3a07,0x2985,0x39e7,0x31a6,0x3186, +0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x2986,0x31c7,0x31a7,0x2986,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4a89,0x3a08,0x31c7,0x3a29,0x3a08,0x4229,0x3a08,0x39e8,0x31c8,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x39e8,0x39c7,0x4208,0x3a08,0x39e8,0x4228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x3a08,0x4228,0x52ab,0x528a,0x4229,0x3a08,0x4a69,0x4a8a,0x3a08,0x528a,0x4a6a,0x3a28,0x3a08,0x4a49,0x4228,0x4208,0x4249,0x4228,0x4229,0x4229,0x4228,0x4249,0x5acb,0x4228,0x4a49,0x5aeb,0x4a8a,0x52cb,0x4269,0x3a08,0x52cb,0x4a8a,0x4a6a,0x4249,0x4a69,0x52cb,0x4249,0x4a8a,0x426a,0x426a,0x52ab,0x4a8a,0x4aab,0x4269,0x4a69,0x4229,0x4a6a,0x4a6a,0x4249,0x3a08,0x4a8a,0x52ca,0x4249,0x4a8a,0x4249,0x4249,0x4a6a,0x4229,0x4a29,0x4a49,0x4a49,0x528a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x4a49,0x526a,0x4a6a,0x52ab,0x4a8a,0x18c3,0x10a2,0x18c3,0x18c3,0x3166,0x39c7,0x31a7,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2965,0x2965,0x2965,0x3185,0x3165,0x1082,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0841,0x10a2,0x2965,0x2945,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x3165,0x2103,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x10a2,0x0861,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2924,0x2944,0x2925,0x2924,0x2925,0x2925,0x2945,0x31a6,0x18c3,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2924,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x4249,0x4228,0x4a49,0x4208,0x4a8a,0x4a8a,0x4229,0x52aa,0x4a6a,0x4229,0x4249,0x4a49,0x4228,0x4249,0x4228,0x4249,0x4208,0x4228,0x4229,0x4229,0x3a08,0x4208,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a69,0x4228,0x4228,0x4249,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x3a08,0x4249,0x4248,0x4208,0x4228,0x4228,0x4249,0x4228,0x4249,0x4aaa,0x4a6a,0x31c6,0x4249,0x4249,0x3a08,0x3a08,0x39e7,0x31e7,0x4228,0x4208,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x39e8,0x39e8,0x4228,0x3a08,0x31a6,0x39c7,0x3a08,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x31c7,0x39e8,0x3a07,0x31e7,0x4208,0x4208,0x4208,0x39e8,0x39c7,0x29a6,0x39e7,0x31c7,0x31a6,0x4228,0x4229,0x39e8,0x4208,0x39e8,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a6, +0x39e7,0x3a08,0x31a7,0x2986,0x2986,0x2966,0x39e8,0x31c7,0x3a28,0x4248,0x4228,0x31a7,0x31c7,0x31c7,0x3a08,0x4228,0x39e7,0x31c7,0x31c7,0x31e7,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x4229,0x39e8,0x4a6a,0x4248,0x31c6,0x39e8,0x4229,0x31c7,0x39e7,0x4208,0x4208,0x4208,0x31c7,0x4228,0x4208,0x39e8,0x4228,0x3a08,0x4249,0x4a8a,0x4a69,0x4228,0x39e8,0x3a08,0x4249,0x39e7,0x4269,0x4249,0x4228,0x4a69,0x4a49,0x4229,0x3a28,0x4a69,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x52aa,0x4a69,0x4a49,0x52aa,0x4a8a,0x4a8a,0x52cb,0x3a28,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4aaa,0x4a6a,0x4a8a,0x4a69,0x52aa,0x52eb,0x4a8a,0x4249,0x4249,0x4a8a,0x4a69,0x4208,0x4a8a,0x4249,0x426a,0x4a8a,0x4a69,0x4208,0x4229,0x52aa,0x4228,0x4a69,0x4a49,0x4a8a,0x4249,0x4aaa,0x52aa,0x4a6a,0x4a49,0x4a69,0x4249,0x4a8a,0x52cb,0x18c3,0x10a2,0x18c3,0x18c3,0x2965,0x31a6,0x3186,0x2924,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x3165,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39a5,0x41e5,0x3185,0x2965,0x2965,0x2965,0x2965,0x3186,0x1061,0x0841,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2945,0x2965,0x3166,0x3185,0x41e5,0x41e5,0x39c5,0x3185,0x2965,0x2965,0x2965,0x2965,0x2124,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4205,0x41e5,0x39a5,0x2945,0x2945,0x2945,0x2965,0x3186,0x20e3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x18a3,0x18c3,0x18c3,0x18e3,0x18e3,0x4228,0x4248,0x4249,0x4a49,0x528a,0x4249,0x3a08,0x4a8a,0x4249,0x4a49,0x4228,0x4a49,0x3a08,0x4228,0x4248,0x4249,0x4249,0x3a28,0x4229,0x4228,0x3a07,0x4228,0x4a69,0x4a49,0x4208,0x39e8,0x4a49,0x4228,0x4229,0x4249,0x3a28,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4229,0x4208,0x4249,0x4249,0x4228,0x39e7,0x4a49,0x4208,0x4229,0x4a69,0x3a28,0x4a8a,0x4a49,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x39e7,0x3a08,0x4249,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4249,0x4228,0x4248,0x4248,0x39e7,0x4209,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x3a08,0x4228,0x31c7,0x4249,0x3a08,0x31c7,0x31a6,0x39e7,0x31e7,0x3207,0x31e7,0x3a08,0x4228,0x39c7,0x39e7,0x4249,0x31a6,0x39e7,0x4228,0x39c7,0x3a28,0x39e8,0x41e8,0x3a08,0x3a08,0x39e8,0x3a08,0x3a08,0x4228,0x4208,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6, +0x31c7,0x3a08,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31c7,0x39e7,0x39e7,0x4248,0x4248,0x39e7,0x31c7,0x39e7,0x31c7,0x39e7,0x3a08,0x31c7,0x39e7,0x4249,0x31c7,0x3a08,0x4a49,0x4208,0x4208,0x4228,0x4249,0x4229,0x3a09,0x3a07,0x4228,0x3a08,0x31c8,0x31c8,0x3a08,0x4229,0x39e8,0x4208,0x4208,0x39c7,0x4249,0x4228,0x4249,0x4249,0x31c7,0x39e7,0x39e7,0x3a08,0x4228,0x39e8,0x39c7,0x39c7,0x4a69,0x3a08,0x3a08,0x4228,0x4228,0x4249,0x4249,0x4a69,0x4229,0x4249,0x4a8a,0x4249,0x4289,0x4249,0x4229,0x4a6a,0x4a6a,0x4249,0x4228,0x4a8a,0x52cb,0x52aa,0x52ab,0x4a6a,0x52cb,0x4a69,0x4a8a,0x52eb,0x4a89,0x52aa,0x52cb,0x4a6a,0x3a08,0x52aa,0x5aeb,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4249,0x4249,0x4209,0x4a49,0x528a,0x528a,0x3a08,0x4249,0x528a,0x528a,0x4228,0x4a69,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x5b0c,0x52eb,0x4229,0x5acb,0x52aa,0x18c3,0x10a2,0x18c3,0x18c3,0x2945,0x3186,0x2966,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x62e5,0x7b65,0x39c4,0x2965,0x2965,0x2965,0x2965,0x3165,0x0861,0x0020,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3166,0x4205,0x7345,0x6b04,0x6b05,0x41c4,0x2965,0x2965,0x2965,0x3165,0x2944,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2965,0x3166,0x2965,0x2965,0x31a5,0x62c5,0x7b45,0x7b45,0x62c4,0x3165,0x2965,0x2965,0x3165,0x3166,0x18c3,0x0020,0x0841,0x1082,0x1082,0x10a2,0x18a3,0x18e3,0x20e4,0x10a2,0x18c3,0x18c3,0x20e3,0x18e3,0x4208,0x4a49,0x3a08,0x4249,0x4249,0x4249,0x4a6a,0x52aa,0x4269,0x4207,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4229,0x4249,0x4249,0x3a07,0x3a28,0x3a08,0x3a07,0x4248,0x4a49,0x39c7,0x4228,0x4a69,0x3a08,0x3a08,0x4a69,0x4249,0x4228,0x4a49,0x4a6a,0x3a08,0x31c7,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4a69,0x4228,0x4a49,0x4229,0x4a6a,0x3a08,0x4249,0x4a69,0x4229,0x4249,0x3a08,0x39c7,0x4208,0x4a8a,0x3a08,0x39e7,0x3a07,0x4249,0x3a08,0x4a89,0x4208,0x3a07,0x4228,0x4208,0x4a69,0x39e7,0x4249,0x3a08,0x39e7,0x31c7,0x29a6,0x3a08,0x39e7,0x39e8,0x4208,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3186,0x39e8,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x39c7,0x39e7,0x4208,0x39c7,0x39e7,0x4248,0x4249,0x3a08,0x3a08,0x39c7,0x4228,0x4229,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x4208,0x4208,0x31a7,0x39e7,0x31c6,0x31a6,0x2986,0x29a7, +0x2986,0x2986,0x31a7,0x31a7,0x39c7,0x39e7,0x31a6,0x31a7,0x31c7,0x4a69,0x3a07,0x39e7,0x39c7,0x31a7,0x4208,0x39c7,0x31c7,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x4269,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x4249,0x4a49,0x39c7,0x39c8,0x3a09,0x4249,0x3a28,0x4228,0x4208,0x4208,0x4a6a,0x3a08,0x39e8,0x4249,0x31a7,0x31c7,0x4249,0x4208,0x3a08,0x39e7,0x4208,0x4208,0x4249,0x4249,0x4a8a,0x4248,0x4248,0x4229,0x4a6a,0x4a6a,0x3a08,0x4249,0x4269,0x3a28,0x4a69,0x4aaa,0x3a28,0x4249,0x528a,0x52cb,0x4249,0x4a69,0x52aa,0x4a69,0x528a,0x4a69,0x52cb,0x4a8a,0x52ab,0x5b0c,0x5b0b,0x52aa,0x5acb,0x4a6a,0x4a8a,0x52ab,0x4229,0x4229,0x52ab,0x5aeb,0x4a69,0x4a69,0x4a69,0x52aa,0x4a69,0x4249,0x4229,0x3a08,0x4a49,0x4a6a,0x4a6a,0x4a6a,0x3a08,0x4208,0x4a8a,0x4a4a,0x39e8,0x4249,0x4a8a,0x4a6a,0x5acb,0x528b,0x424a,0x52aa,0x18c3,0x1082,0x18c3,0x10a2,0x2124,0x2966,0x2945,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x5245,0x8bc4,0x9c24,0x41e4,0x2965,0x2965,0x2945,0x2965,0x3186,0x1061,0x0020,0x1082,0x1082,0x1082,0x18a3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x5285,0x93e4,0x6ae4,0x62c5,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3166,0x3166,0x2965,0x2965,0x4205,0x9405,0x7b24,0x7b45,0x7b45,0x3985,0x2945,0x2945,0x2965,0x3165,0x18c3,0x0021,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x4229,0x4228,0x52cb,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a49,0x3a08,0x4228,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4248,0x4249,0x39e8,0x4249,0x4289,0x3a28,0x3a28,0x4249,0x4248,0x4208,0x4228,0x4a69,0x4229,0x39e8,0x4a6a,0x4249,0x4228,0x4248,0x4a69,0x4a8a,0x4a69,0x4a69,0x4249,0x39e8,0x39e8,0x39c7,0x41e8,0x4a49,0x4208,0x39e8,0x3a08,0x3a08,0x4aaa,0x4a8a,0x4229,0x39c8,0x3a08,0x4249,0x5aeb,0x3a07,0x3a28,0x3a28,0x4249,0x4269,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x3a28,0x39e8,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x39c7,0x39c7,0x39e7,0x4229,0x39e7,0x2986,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x4208,0x39e7,0x3a08,0x39e7,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x31c7,0x4249,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x31a6,0x3a08,0x31a6,0x31e7,0x2986,0x29a6, +0x2986,0x2986,0x2966,0x31c7,0x3186,0x39e7,0x39e8,0x3a28,0x31c7,0x3a08,0x31c6,0x39e7,0x3186,0x3186,0x39e8,0x4228,0x31c7,0x39e7,0x3a08,0x4229,0x3a08,0x3a08,0x31c7,0x39e7,0x39e7,0x3a08,0x39e8,0x4249,0x4229,0x4229,0x4209,0x39e8,0x39e7,0x4208,0x4229,0x31c7,0x4228,0x4249,0x3a07,0x3a08,0x3a08,0x4229,0x4208,0x4228,0x4228,0x4249,0x4a69,0x3a08,0x4228,0x4249,0x4a69,0x4229,0x4228,0x4248,0x4249,0x4248,0x3a28,0x3a08,0x4249,0x4a8a,0x52eb,0x4a8a,0x3a49,0x4229,0x4229,0x4248,0x4269,0x4249,0x4a6a,0x528a,0x4a69,0x52ab,0x4a8a,0x52cb,0x528a,0x4a69,0x4a89,0x52aa,0x4249,0x3a08,0x5acb,0x528a,0x4229,0x4249,0x528a,0x52aa,0x52aa,0x5aca,0x4a8a,0x4a8a,0x4a49,0x4229,0x4249,0x52ca,0x4a8a,0x4249,0x3a08,0x4a49,0x4a8a,0x52ab,0x528a,0x4228,0x4a6a,0x4228,0x4248,0x52aa,0x4a69,0x4a8a,0x4aaa,0x4aaa,0x4229,0x528a,0x4a6a,0x4a6a,0x632c,0x18c3,0x1082,0x18a2,0x10a2,0x2124,0x2945,0x2945,0x2104,0x18c3,0x18e3,0x18a2,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x39a5,0x7b45,0x7304,0x9405,0x41e4,0x2945,0x2965,0x2945,0x2945,0x3186,0x1082,0x0020,0x1082,0x1082,0x1082,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62e5,0x93e4,0x6ae4,0x62a4,0x3985,0x2965,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c2,0x0861,0x0841,0x2104,0x3166,0x3166,0x3165,0x2965,0x5aa5,0xa465,0x7b24,0x7b65,0x6ae5,0x3165,0x2945,0x2965,0x2965,0x3165,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x10a2,0x18a3,0x18e3,0x2945,0x4208,0x4a69,0x528a,0x52ab,0x4229,0x4a69,0x4228,0x4228,0x4248,0x52aa,0x4249,0x4228,0x4a8a,0x4249,0x52aa,0x4228,0x4248,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x3a48,0x4248,0x3a08,0x4208,0x4228,0x4208,0x39e7,0x4228,0x4a69,0x4a49,0x4228,0x4249,0x31c7,0x3a07,0x4a69,0x31c7,0x4a69,0x4208,0x3a08,0x4208,0x41e8,0x4208,0x4a49,0x4249,0x4a69,0x4208,0x4228,0x4a49,0x39e7,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4a69,0x4248,0x4aaa,0x3a28,0x4228,0x4229,0x3a08,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x31e7,0x39e7,0x39c7,0x31a7,0x39e8,0x31e8,0x39e8,0x39e7,0x31a6,0x31c7,0x39e8,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c6,0x4228,0x31c7,0x31c7,0x31c7,0x39e7,0x4a8a,0x4208,0x39c7,0x39e8,0x3a08,0x3a08,0x31a7,0x39e7,0x3186,0x31a7,0x4228,0x39e8,0x3a08,0x3186,0x31c7,0x31c7, +0x31c7,0x2986,0x39e7,0x39e7,0x31c6,0x4a49,0x31a6,0x39e7,0x3a08,0x31a6,0x39e7,0x3a08,0x4249,0x31e8,0x31c7,0x31a7,0x31c7,0x3a08,0x39e8,0x39e8,0x29a7,0x39e8,0x39e7,0x39c7,0x4228,0x39e7,0x4a89,0x4249,0x39e7,0x4228,0x4208,0x39e8,0x39e8,0x4249,0x4228,0x31c7,0x39c7,0x39c7,0x39e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x4a69,0x4a69,0x3a08,0x4228,0x4229,0x3a09,0x39e8,0x4249,0x4228,0x4208,0x4208,0x4229,0x4228,0x4249,0x4a8a,0x4249,0x4269,0x4aaa,0x4249,0x4249,0x4269,0x4249,0x4a89,0x4a69,0x4229,0x4249,0x426a,0x3a29,0x426a,0x4249,0x4a69,0x528a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4a6a,0x4a49,0x4a49,0x4a69,0x4a8a,0x52aa,0x4a6a,0x4269,0x4a8a,0x428a,0x4aaa,0x4a69,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x52cb,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x528a,0x5acb,0x5acb,0x4a6a,0x4228,0x4a8a,0x4a8a,0x4a8b,0x632c,0x18c3,0x1082,0x18a2,0x18a2,0x2124,0x2945,0x2125,0x2104,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2965,0x2965,0x2945,0x2965,0x62c5,0x8364,0x5a64,0x9425,0x4a03,0x2945,0x2965,0x2945,0x2945,0x3186,0x1061,0x0020,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62c6,0x8365,0x6ae5,0x83a5,0x4a24,0x2945,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x3165,0x3165,0x2965,0x2965,0x62e5,0xa465,0x7324,0x83a5,0x8385,0x3184,0x2945,0x2945,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x1082,0x10a2,0x18a3,0x18e3,0x2125,0x4a49,0x4a69,0x5269,0x528a,0x4a8a,0x4a8a,0x4249,0x4228,0x4248,0x4228,0x4228,0x3a08,0x4249,0x4a8a,0x4269,0x4249,0x3a07,0x4228,0x4a49,0x4228,0x4208,0x39c7,0x39e7,0x4a29,0x4a49,0x4208,0x4228,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x39e7,0x3a07,0x4228,0x4a49,0x4249,0x4248,0x39e7,0x3a28,0x4228,0x4248,0x4228,0x4a49,0x528a,0x4208,0x39c7,0x4a49,0x4248,0x3a28,0x3a28,0x39e7,0x4228,0x4a89,0x3a08,0x4249,0x3a07,0x4228,0x4229,0x528a,0x4249,0x4248,0x4a69,0x31e7,0x4a69,0x4249,0x4208,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x31c7,0x39e7,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x31e7,0x31c7,0x39e8,0x31c7,0x3a08,0x3a08,0x4208,0x31c7,0x4208,0x3a07,0x39e7,0x31c7,0x3a08,0x3a08,0x4a69,0x4228,0x39c7,0x39c7,0x31c7,0x29a6,0x4208,0x4a69,0x31c7,0x4208,0x31c7,0x3a08,0x31c7,0x31c7,0x31a7,0x31c7,0x39e8, +0x2966,0x31a7,0x39e8,0x31c7,0x31a6,0x31a6,0x31c7,0x39e8,0x39e8,0x29a6,0x3186,0x39e7,0x39e8,0x31c7,0x2986,0x31c7,0x4269,0x4249,0x39e8,0x39e8,0x3a08,0x31c7,0x31a6,0x39e7,0x3a08,0x39e7,0x4248,0x39e7,0x4208,0x4248,0x39e7,0x39e7,0x39e7,0x3a28,0x39e7,0x39e8,0x3a28,0x31c7,0x31c7,0x4228,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4208,0x4a8a,0x3a08,0x3a29,0x4249,0x31e8,0x3a08,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x4229,0x3a28,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x39e8,0x4229,0x4a8a,0x4a69,0x4228,0x4249,0x4a8a,0x4a8a,0x4249,0x4a49,0x4228,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4a4a,0x4a49,0x4a69,0x528a,0x528a,0x4a49,0x4229,0x4a8a,0x4a69,0x4a69,0x528a,0x4a8a,0x52eb,0x4a8a,0x4228,0x4a6a,0x5aeb,0x4a49,0x52aa,0x5acb,0x52aa,0x4249,0x3a28,0x426a,0x4a6a,0x4a6a,0x52aa,0x4a4a,0x528a,0x4a69,0x4a8a,0x4a6a,0x52ab,0x52cb,0x5b0c,0x18c3,0x1082,0x10a2,0x18a2,0x2104,0x2945,0x2125,0x2104,0x18e3,0x18c2,0x10a2,0x10a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2965,0x2965,0x2945,0x3985,0x8385,0x7b44,0x6ae4,0x9c44,0x5a84,0x2945,0x2965,0x2945,0x2965,0x3186,0x0861,0x0041,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x5a65,0x4a05,0x9405,0x6ac4,0x2945,0x2945,0x2945,0x3165,0x3185,0x1081,0x0841,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3165,0x2965,0x2965,0x2945,0x62c5,0x9c45,0x5244,0x6ae5,0x9c25,0x39a4,0x2965,0x2965,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2965,0x4228,0x4228,0x52aa,0x4a6a,0x52cb,0x4a8a,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4228,0x4a49,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4a89,0x4a69,0x4208,0x4a69,0x4228,0x31c7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x4a69,0x4248,0x3a07,0x4208,0x4228,0x4208,0x4228,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x3207,0x3208,0x3a28,0x4229,0x39e8,0x4208,0x4229,0x4a49,0x39e8,0x3a08,0x3a08,0x39c7,0x39e7,0x4229,0x4228,0x39e7,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x3a08,0x4228,0x31c7,0x3a08,0x41e8,0x4229,0x4208,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x31a7,0x39e7,0x31c7,0x4228,0x39e7,0x39c7,0x31a6,0x39e7,0x31e7,0x4249,0x4a6a,0x3a08,0x4249,0x29a6,0x31c7,0x31c7,0x39c7,0x4208,0x39e8,0x4208,0x39e7,0x39e7,0x31a7,0x2966,0x31a7,0x2986,0x4a69, +0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a7,0x31e7,0x31c7,0x31a7,0x31c7,0x39e7,0x31c7,0x31a7,0x2986,0x31e7,0x31e8,0x31c8,0x31c7,0x4208,0x4229,0x29a6,0x29a6,0x31e7,0x3a08,0x3a08,0x39e8,0x3a09,0x4a6a,0x4229,0x31e7,0x39e7,0x39e8,0x3a08,0x39e8,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x4228,0x4228,0x3a28,0x3a08,0x3a08,0x4229,0x31c7,0x39e8,0x39e7,0x39e7,0x4a69,0x4249,0x39e8,0x4208,0x4208,0x4208,0x3a28,0x4229,0x52aa,0x5acb,0x4a6a,0x4228,0x3a08,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x4269,0x4249,0x4a8a,0x52aa,0x4249,0x4a49,0x4a6a,0x528a,0x4a69,0x4229,0x4a6a,0x4229,0x52aa,0x528a,0x4249,0x4a69,0x4a49,0x5269,0x528a,0x62ec,0x528a,0x52aa,0x52ab,0x52ab,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4a69,0x4229,0x4229,0x52ab,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x52aa,0x4a89,0x4a8a,0x4a8a,0x52ab,0x52cb,0x4a69,0x52ab,0x52eb,0x18c2,0x1082,0x10a2,0x10a2,0x18e3,0x2945,0x2125,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x18c2,0x0841,0x0841,0x1082,0x2945,0x2965,0x3165,0x2965,0x3185,0x62a5,0x5a85,0x62c5,0x9c24,0x5a64,0x2945,0x2945,0x2965,0x2965,0x3186,0x0861,0x0841,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3185,0x7326,0x62a4,0x5244,0x8bc5,0x5a84,0x3165,0x2965,0x2945,0x2965,0x3165,0x1081,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0861,0x2124,0x3165,0x2965,0x2965,0x2965,0x5245,0x93e5,0x5a84,0x6b25,0x8ba5,0x3984,0x2965,0x2965,0x3165,0x3186,0x18a3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2965,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a8a,0x4a69,0x4a8a,0x4249,0x3a08,0x4228,0x3a08,0x4228,0x4208,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x4229,0x4a49,0x4208,0x39e8,0x4208,0x4228,0x3a28,0x4269,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4a69,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x4aaa,0x4249,0x4249,0x3a08,0x31e7,0x4209,0x4a6a,0x39c7,0x4a69,0x39e7,0x39e7,0x4a69,0x39e7,0x39e8,0x39e8,0x4228,0x4a49,0x4208,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x39e7,0x39c7,0x31a7,0x39c7,0x3a08,0x3a07,0x3a08,0x4228,0x31a7,0x39e8,0x4a69,0x31c7,0x4249,0x4229,0x39e7,0x3a08,0x39e7,0x3a08,0x31c7,0x4249,0x39e7,0x4228,0x31c7,0x31c7,0x31a7,0x39c7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x39e8,0x31a6,0x39e7, +0x31c6,0x39e7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x29a6,0x31a7,0x39c7,0x31a6,0x31c7,0x3a08,0x3a28,0x31c7,0x39e8,0x31e8,0x31a7,0x4229,0x4249,0x39e7,0x31e7,0x31a7,0x31c7,0x3a08,0x31e7,0x31c7,0x31e7,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x3a08,0x4229,0x4228,0x4a8a,0x39e7,0x3a07,0x4248,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x39e7,0x4248,0x4a69,0x3a08,0x4249,0x4229,0x4208,0x4248,0x4249,0x3a28,0x4269,0x4208,0x4a49,0x4229,0x4209,0x4229,0x4229,0x4a6a,0x52ab,0x4aab,0x3a29,0x3a28,0x4aaa,0x4269,0x4269,0x4228,0x52ab,0x52cb,0x4aaa,0x3a08,0x4269,0x4a69,0x4228,0x4a69,0x52eb,0x52ab,0x4a8a,0x52ab,0x52aa,0x52aa,0x52ab,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x528a,0x4a49,0x4a49,0x4a69,0x52aa,0x4249,0x52ca,0x52aa,0x4a69,0x5aeb,0x6b6d,0x4a89,0x4229,0x4a8a,0x52ca,0x4a49,0x632d,0x6b6d,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2125,0x2104,0x2104,0x18e3,0x18a2,0x10a2,0x10a2,0x18c2,0x0861,0x0861,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x39a5,0x3985,0x41e5,0x7b45,0x41c4,0x2965,0x2965,0x2965,0x3186,0x3165,0x1082,0x0861,0x1082,0x1082,0x1062,0x18c3,0x10a2,0x0861,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x7325,0x7304,0x7305,0x41c4,0x3165,0x2965,0x2965,0x2965,0x2924,0x1061,0x1061,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0861,0x2104,0x2965,0x2965,0x2965,0x2965,0x39a5,0x6ae5,0x7325,0x7325,0x6285,0x3165,0x2965,0x2965,0x3165,0x3165,0x10a2,0x0841,0x0861,0x10a2,0x1082,0x1082,0x18a2,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x52ab,0x4a49,0x4a49,0x4249,0x4a69,0x4a49,0x4228,0x41e7,0x4208,0x4a49,0x4a69,0x4a69,0x4269,0x3a28,0x4a8a,0x4249,0x3a08,0x4a6a,0x4249,0x4249,0x4a89,0x4269,0x4248,0x4228,0x4249,0x39e7,0x39e7,0x4229,0x4229,0x39e8,0x39e8,0x4229,0x4a6a,0x4249,0x4249,0x4a8a,0x4249,0x52aa,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x4a69,0x4249,0x4248,0x4a69,0x4208,0x39e8,0x31e7,0x4228,0x39e7,0x3a08,0x4a69,0x4a69,0x4228,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x4248,0x4228,0x4248,0x4228,0x4208,0x39e8,0x4229,0x4228,0x4a49,0x4249,0x31c7,0x39e8,0x39c8,0x4229,0x3a08,0x31c6,0x31c7,0x31a6,0x4a48,0x39e7,0x3a07,0x4228,0x31c7,0x31c7,0x31c7,0x3a08,0x4249,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x3a08,0x31e7,0x3a08,0x4208,0x4229,0x4208,0x31a7,0x39c7,0x39e8,0x39e7,0x4248,0x39c7,0x39c7,0x31c7,0x31e7,0x31c6,0x39e7,0x39c6,0x31a6, +0x31a7,0x31a6,0x2965,0x2986,0x31c7,0x31c7,0x31a7,0x39c8,0x31a7,0x39c8,0x4a69,0x39e8,0x3a08,0x3a28,0x31a7,0x3a08,0x39c7,0x39e8,0x3a08,0x4228,0x3a07,0x3a28,0x3a28,0x3a08,0x31e7,0x39e8,0x31c7,0x3a08,0x3a08,0x31e7,0x3a28,0x31e7,0x39e8,0x39c7,0x39e7,0x31c7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x4269,0x4229,0x39e8,0x4208,0x39e7,0x3a08,0x4249,0x3a07,0x39e7,0x4208,0x4209,0x4209,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x4228,0x4a69,0x4229,0x3a09,0x424a,0x4229,0x4a6a,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x528a,0x528a,0x528a,0x526a,0x4a8a,0x4a8a,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4a49,0x4a8a,0x4a8a,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4a69,0x4a89,0x4269,0x4a6a,0x4229,0x4a69,0x4a6a,0x4a8a,0x4a49,0x4a69,0x52aa,0x52cb,0x52ab,0x5acc,0x632c,0x52aa,0x4a6a,0x52ab,0x5aeb,0x528a,0x5aec,0x630c,0x18c2,0x1082,0x1082,0x10a2,0x20e4,0x2125,0x2104,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x2103,0x20e3,0x2945,0x2965,0x2965,0x2945,0x2965,0x3165,0x2945,0x3185,0x4a05,0x3185,0x3165,0x3165,0x3185,0x3186,0x2944,0x18e3,0x10a2,0x10a2,0x1062,0x1061,0x18c3,0x20e4,0x20e3,0x18e3,0x2945,0x2965,0x2965,0x2965,0x2945,0x39a5,0x4a26,0x5245,0x41e5,0x3165,0x3165,0x3165,0x3166,0x3165,0x2104,0x18c2,0x18c2,0x18a3,0x1082,0x1082,0x18e3,0x2104,0x20e3,0x2103,0x2945,0x2965,0x2945,0x2945,0x3165,0x39c5,0x4a25,0x4a05,0x3985,0x2965,0x2945,0x2945,0x3165,0x3165,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2925,0x4a6a,0x4a6a,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4a69,0x4228,0x4a6a,0x4a69,0x3a28,0x4a69,0x528a,0x4a49,0x3a28,0x4249,0x4249,0x4228,0x3a08,0x3a07,0x39e7,0x3a08,0x4249,0x3a28,0x31e7,0x39e8,0x4228,0x3a08,0x4a6a,0x4249,0x4249,0x4249,0x31c6,0x4249,0x4249,0x4a69,0x52ca,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4208,0x3a08,0x3a28,0x3a08,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x4229,0x4208,0x4228,0x4208,0x4228,0x39e7,0x4228,0x39e7,0x31c7,0x3a07,0x39e7,0x31a7,0x31c7,0x31c7,0x4208,0x4228,0x31a6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x39e8,0x4229,0x39c8,0x39c8,0x4208,0x4208,0x3a08,0x3a08,0x39e7,0x39e7,0x2145,0x2986,0x31c7,0x4249, +0x31a7,0x31a6,0x31a6,0x29a6,0x31c6,0x31c7,0x2986,0x31a7,0x39c7,0x4208,0x4a69,0x39c7,0x39e7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x4209,0x4229,0x3a08,0x4228,0x4228,0x4269,0x4249,0x39e8,0x31c8,0x31c7,0x39e8,0x39e8,0x4229,0x4249,0x4249,0x4a49,0x4a49,0x4228,0x31c7,0x4248,0x4228,0x4228,0x4a49,0x3a08,0x3a08,0x4a89,0x3a08,0x4208,0x4a49,0x39e7,0x4228,0x4249,0x3a28,0x4228,0x39e8,0x39e8,0x39e8,0x39e8,0x4249,0x3a28,0x3a08,0x4228,0x528a,0x4a69,0x426a,0x4a6a,0x4229,0x4228,0x4249,0x4a49,0x528a,0x4229,0x5acb,0x4229,0x4a49,0x4a69,0x4229,0x528a,0x52aa,0x4249,0x52aa,0x52aa,0x4a49,0x4a6a,0x4229,0x4a69,0x5aec,0x4249,0x4209,0x4249,0x4229,0x4a8b,0x52ec,0x4aaa,0x4a8a,0x4a69,0x4a89,0x4248,0x52aa,0x4269,0x4a49,0x5aeb,0x4a8a,0x4269,0x52cb,0x5aec,0x52cb,0x4aab,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x528a,0x5aeb,0x6b6d,0x52eb,0x5b0b,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18e4,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x18e3,0x2925,0x3186,0x3185,0x3165,0x2965,0x2945,0x2945,0x3165,0x3165,0x3165,0x3165,0x3165,0x3185,0x3165,0x3165,0x31a6,0x3186,0x3165,0x3165,0x2124,0x10a2,0x1062,0x1062,0x18c3,0x2965,0x31a6,0x2964,0x2944,0x2965,0x2965,0x2945,0x2945,0x2945,0x3165,0x3165,0x3145,0x2945,0x2945,0x3166,0x3186,0x3186,0x2965,0x2944,0x2924,0x18a3,0x1082,0x1082,0x2104,0x3186,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2945,0x2945,0x3165,0x3165,0x2924,0x2924,0x20e3,0x18c2,0x1082,0x1082,0x1082,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2925,0x4a49,0x4a69,0x4249,0x4269,0x3a28,0x4208,0x4a69,0x4228,0x3a28,0x4a69,0x528a,0x4a69,0x528a,0x4229,0x4a6a,0x4a69,0x4249,0x3a28,0x4a69,0x528a,0x4a49,0x4208,0x4249,0x4a69,0x4a49,0x4228,0x4208,0x39e7,0x4248,0x4269,0x4269,0x4a49,0x4249,0x39e7,0x4269,0x4a49,0x4249,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4a89,0x4a89,0x4228,0x4228,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4208,0x4a49,0x4a6a,0x4228,0x31c7,0x3207,0x3a07,0x4228,0x4269,0x4a69,0x31c7,0x4249,0x3a08,0x39e8,0x39c7,0x3a08,0x4a49,0x39e7,0x3a07,0x3a28,0x4249,0x4228,0x3a08,0x39c7,0x31c7,0x39e8,0x39e8,0x39e7,0x4a49,0x39c7,0x4229,0x4249,0x31a7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x31a7,0x4249,0x39e7,0x31c6,0x31e7,0x39e7,0x39e7,0x39e7,0x31a6,0x4228,0x39e8,0x39e8,0x3a08,0x4208,0x39e7,0x31c7,0x3a08,0x31a6,0x2145,0x2986,0x29a6,0x31a6, +0x31a7,0x39e7,0x39c7,0x31a6,0x39c7,0x4228,0x31a6,0x39e7,0x3a08,0x4208,0x39a7,0x31a7,0x3a08,0x39e7,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x3a08,0x4228,0x4228,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4228,0x39c7,0x39e7,0x39e7,0x4a8a,0x4249,0x4208,0x4209,0x4a29,0x4208,0x4aaa,0x4289,0x4248,0x52aa,0x4228,0x39e8,0x39e8,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x3a29,0x3a08,0x4229,0x4208,0x4228,0x4207,0x4208,0x52aa,0x4229,0x4a49,0x4a49,0x4a89,0x4249,0x4229,0x4249,0x4a8a,0x4a69,0x3a08,0x3a28,0x4269,0x4228,0x528a,0x4229,0x52aa,0x4269,0x4269,0x4aaa,0x42aa,0x3a28,0x4249,0x5acb,0x3a08,0x4249,0x4a69,0x52aa,0x52aa,0x52cb,0x4a8a,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a6a,0x4249,0x4a69,0x4aaa,0x4a89,0x4269,0x52aa,0x6b4d,0x4a8a,0x4a8a,0x6b4d,0x630d,0x528b,0x4a8a,0x5b0c,0x4a8a,0x52ab,0x4a69,0x5aec,0x52cb,0x5b0c,0x632c,0x634c,0x18c2,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x20e4,0x18c3,0x10a2,0x1082,0x1082,0x2104,0x2945,0x3185,0x2965,0x2924,0x2104,0x18e3,0x20e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x3165,0x2944,0x18a2,0x1062,0x1061,0x18e3,0x3166,0x3186,0x3165,0x2945,0x2924,0x2924,0x2104,0x2104,0x2104,0x2125,0x2124,0x2924,0x2104,0x2104,0x2924,0x2944,0x2945,0x2965,0x2945,0x2945,0x18c3,0x1082,0x1082,0x2104,0x31a6,0x39a6,0x3165,0x2924,0x2924,0x2924,0x2945,0x2124,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2924,0x2945,0x2945,0x2124,0x2124,0x2945,0x2924,0x18c3,0x1082,0x1082,0x1082,0x2104,0x18a3,0x1082,0x10a2,0x18a3,0x18e3,0x2124,0x4228,0x4a49,0x526a,0x52cb,0x3a29,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x4228,0x52aa,0x4a8a,0x4a69,0x4a6a,0x4a69,0x4a69,0x4a6a,0x52ca,0x52aa,0x52cb,0x4a89,0x4a69,0x4228,0x4208,0x4a69,0x4a49,0x4208,0x4208,0x4a69,0x3a28,0x3a28,0x4228,0x4249,0x3a28,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4228,0x52aa,0x4208,0x4a49,0x4a89,0x4228,0x4249,0x4a69,0x4249,0x4249,0x3a28,0x4229,0x4a6a,0x4208,0x3a08,0x3a07,0x39e8,0x3a08,0x3a28,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e7,0x3a07,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x3a08,0x31c7,0x31c7,0x39e7,0x39c7,0x4208,0x31c7,0x39e7,0x39e7,0x31c7,0x39c7,0x3a08,0x3a08,0x29a6,0x31c7,0x3a08,0x39c7,0x4228,0x31a7,0x3a08,0x4229,0x3a08,0x4208,0x31a6,0x31c6,0x39e7,0x31a6,0x2966,0x31a6,0x31c7,0x2965, +0x39e7,0x39e7,0x31c6,0x39c6,0x31a6,0x3186,0x39c7,0x4208,0x39a7,0x3187,0x31c7,0x31a7,0x31c7,0x31a7,0x39e8,0x39c8,0x39e7,0x39e7,0x3a08,0x4229,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x39e8,0x4a6a,0x4a8a,0x4229,0x39e7,0x4228,0x4228,0x3a08,0x39c7,0x4208,0x4229,0x4229,0x4249,0x4228,0x39c7,0x39e7,0x4208,0x39e8,0x4209,0x4229,0x39c8,0x39c7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x4208,0x4249,0x4208,0x4a49,0x52aa,0x4228,0x4249,0x4a6a,0x4a49,0x4a49,0x4249,0x4229,0x3a08,0x4a6a,0x4228,0x4a69,0x4a8a,0x4a69,0x4a69,0x4aaa,0x4269,0x4289,0x4248,0x4a6a,0x528a,0x4229,0x5aeb,0x5289,0x52aa,0x4a69,0x52cb,0x52cb,0x426a,0x424a,0x4aa9,0x52a9,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5aeb,0x4aaa,0x4269,0x52ab,0x5aeb,0x4a6a,0x5aec,0x5acb,0x630c,0x5aeb,0x52aa,0x738e,0x4a6a,0x5aeb,0x52ab,0x6b4d,0x5acb,0x52cb,0x528a,0x5acb,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x18e4,0x18c3,0x10a2,0x1082,0x1082,0x20e4,0x2104,0x20e3,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x18a3,0x18a3,0x18c3,0x18e3,0x20e3,0x18c3,0x1062,0x1062,0x18e3,0x2104,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x18c3,0x20e3,0x18c3,0x1082,0x1082,0x18e3,0x2924,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2104,0x18c3,0x1082,0x1082,0x1082,0x20e3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4249,0x52ab,0x4a49,0x4a49,0x4a6a,0x4a8a,0x3a08,0x52cb,0x4aaa,0x3a08,0x52cb,0x52cb,0x4269,0x4a6a,0x4229,0x528a,0x52cb,0x528a,0x52aa,0x4a49,0x39e7,0x4a69,0x4a69,0x4228,0x52cb,0x52aa,0x4208,0x4228,0x4249,0x4228,0x3a28,0x3a07,0x4248,0x4a49,0x3a28,0x4a89,0x4a89,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4229,0x4208,0x4228,0x528a,0x4a69,0x3208,0x3a28,0x3a08,0x4228,0x39e7,0x3a07,0x3a07,0x39e8,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4a49,0x39e7,0x3a07,0x4a49,0x4a69,0x3a08,0x4269,0x4228,0x3a28,0x4228,0x39c7,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x39e7,0x31a6,0x39e7,0x31c7,0x39e8,0x39e7,0x31a6,0x39e7,0x39c7,0x39e7,0x39e7,0x39c7,0x31c6,0x39c7,0x39e7,0x4249,0x4249,0x3187,0x39e8,0x31a7,0x31e7,0x3a08,0x39e7,0x4249,0x4228,0x4249,0x31e7,0x31e7,0x3a08,0x31c6,0x39e7,0x31a6,0x2145,0x31c7,0x31c7, +0x31a7,0x2986,0x31c7,0x31c7,0x31a6,0x2986,0x3186,0x31a7,0x3187,0x31a6,0x31c7,0x2986,0x2966,0x39c8,0x3a08,0x4208,0x39e7,0x4228,0x4249,0x31c7,0x31e7,0x31e7,0x31c7,0x39e7,0x4208,0x4208,0x4229,0x3a08,0x3a08,0x31c7,0x4228,0x31c7,0x39e7,0x39c7,0x3a28,0x3a08,0x39e7,0x4208,0x39e7,0x39e7,0x2986,0x31a7,0x39e8,0x31a7,0x39e8,0x4208,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3a08,0x4229,0x4229,0x4228,0x4a89,0x52ca,0x3a07,0x4228,0x4a69,0x4a6a,0x3a08,0x3a28,0x4229,0x4229,0x4a49,0x39e7,0x4249,0x4249,0x3a08,0x4229,0x4208,0x4229,0x4249,0x4249,0x4228,0x39c8,0x4a6a,0x4a69,0x528a,0x5aca,0x4a89,0x4a8a,0x4a6a,0x4a8a,0x4aab,0x4a8a,0x4a69,0x52aa,0x52ab,0x4aaa,0x5b0b,0x52aa,0x4249,0x4269,0x52aa,0x52aa,0x52aa,0x5aeb,0x4a89,0x528a,0x5acb,0x6b4d,0x52aa,0x526a,0x528a,0x52cb,0x5aeb,0x528a,0x630c,0x528a,0x528b,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e3,0x18e4,0x18c2,0x1082,0x1082,0x1082,0x18a3,0x10a2,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x1062,0x0861,0x10a2,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4228,0x4a8a,0x4229,0x4208,0x4a6a,0x4a6a,0x4a69,0x52aa,0x4a49,0x4249,0x4aaa,0x4269,0x4249,0x528a,0x4229,0x4a49,0x4a49,0x4228,0x39e8,0x4228,0x39e8,0x4a29,0x4a69,0x4208,0x528a,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4269,0x4228,0x4a49,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4208,0x3a08,0x4208,0x4208,0x4a69,0x4a4a,0x3a08,0x3a08,0x4248,0x4a69,0x3a08,0x4249,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4229,0x4a49,0x4228,0x4249,0x4228,0x31c6,0x4228,0x4249,0x4229,0x39e7,0x4228,0x4248,0x3a08,0x39e7,0x4249,0x4208,0x4228,0x31c7,0x39e7,0x4228,0x31a6,0x31c7,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x4a6a,0x5b0c,0x31c7,0x39c7,0x4229,0x3a07,0x4208,0x3a08,0x4228,0x31c7,0x3a07,0x4228,0x4209,0x3187,0x39c7,0x4249,0x31c7,0x31a6,0x31a6,0x39c7, +0x2966,0x2966,0x3a08,0x31a7,0x31a7,0x39e8,0x31a7,0x31a7,0x39c7,0x39c7,0x39e7,0x3a08,0x3a08,0x39e8,0x39e7,0x3a08,0x39e8,0x39c8,0x39e8,0x39e7,0x3a28,0x31c7,0x31c7,0x3a08,0x31a6,0x39c7,0x39c7,0x3a07,0x3a08,0x31c7,0x31e8,0x39c8,0x3186,0x3a08,0x52cb,0x31c7,0x3a07,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x39e8,0x39e7,0x39c7,0x4228,0x4228,0x39e7,0x4229,0x4229,0x39e9,0x39e8,0x31c7,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x4a49,0x4249,0x4249,0x528a,0x4248,0x4a8a,0x4249,0x4248,0x4249,0x4a8a,0x4249,0x4229,0x4249,0x4a49,0x4229,0x4229,0x4a69,0x4249,0x4269,0x4a8a,0x4228,0x4228,0x4a49,0x528a,0x52cb,0x4a69,0x4a8a,0x52ab,0x4aaa,0x52eb,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a6a,0x52ab,0x5acb,0x5aeb,0x3a08,0x4a69,0x5aec,0x4229,0x528a,0x6b4d,0x4a69,0x6b6d,0x52cb,0x634d,0x528b,0x4a6a,0x630c,0x5aeb,0x52aa,0x528a,0x5aeb,0x4a49,0x5aec,0x18c3,0x1082,0x1082,0x10a2,0x18a3,0x18e4,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1061,0x1061,0x1061,0x0861,0x0861,0x1082,0x1061,0x0861,0x1061,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1062,0x1062,0x1082,0x1082,0x1082,0x1062,0x1062,0x1062,0x1061,0x0861,0x1061,0x1062,0x1062,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x4a6a,0x4a6a,0x4229,0x4a69,0x4249,0x4a8a,0x52cb,0x4a8a,0x4249,0x4a69,0x4a8a,0x4249,0x4249,0x4229,0x4a49,0x4208,0x4208,0x4a69,0x4228,0x4a8a,0x4228,0x4a6a,0x52aa,0x4228,0x528a,0x4228,0x4a49,0x4a69,0x39e7,0x4249,0x4229,0x4228,0x4228,0x4228,0x4269,0x4269,0x4a49,0x528a,0x4a69,0x4229,0x4249,0x4248,0x4248,0x4249,0x52aa,0x4229,0x39e8,0x4a49,0x4a29,0x4a49,0x4229,0x4208,0x4248,0x3a08,0x4228,0x4228,0x3a07,0x4249,0x4249,0x39c7,0x4228,0x4a49,0x4249,0x4228,0x4229,0x39e7,0x4a69,0x3a07,0x4208,0x39e8,0x31c7,0x3a08,0x4228,0x31c7,0x39e8,0x4229,0x39e8,0x4208,0x39e7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x31a6,0x39e7,0x4248,0x39e7,0x31c7,0x39e8,0x4249,0x3a07,0x3a08,0x52ab,0x39e7,0x4228,0x31c7,0x31c7,0x3a08,0x4249,0x4229,0x4209,0x3187,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x31c7, +0x2986,0x2986,0x31a6,0x31a6,0x31a7,0x4228,0x39e8,0x39e7,0x31a7,0x39c7,0x39e8,0x39e7,0x3a08,0x29a6,0x31e7,0x4229,0x31a7,0x39e8,0x4a4a,0x39e8,0x4a69,0x39e7,0x39c7,0x4208,0x39c7,0x31a7,0x3a08,0x4a69,0x39e7,0x3a08,0x4229,0x4209,0x2987,0x4229,0x4a8a,0x31e7,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e7,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x424a,0x39e8,0x31e8,0x3a28,0x3a08,0x3a08,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a8a,0x4aaa,0x4a69,0x4249,0x4249,0x4a6a,0x39e7,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4249,0x4269,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52ab,0x4aaa,0x52cb,0x4249,0x4249,0x4a49,0x4a49,0x4a6a,0x52ab,0x4a8a,0x52cb,0x4249,0x4249,0x4269,0x4a8a,0x5aec,0x5acb,0x5acb,0x6b8d,0x52aa,0x4a8a,0x5aed,0x4a8b,0x4a6a,0x5b0c,0x5acb,0x5aec,0x528a,0x52eb,0x5b0c,0x18c2,0x1082,0x1082,0x18a2,0x18a3,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1061,0x1062,0x1082,0x1082,0x1081,0x0861,0x1061,0x1061,0x1082,0x1062,0x1061,0x1061,0x1062,0x1061,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x1062,0x1082,0x1082,0x1062,0x1062,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1062,0x1082,0x10a2,0x10a2,0x2124,0x4a49,0x4a6a,0x4208,0x528a,0x4a8a,0x52aa,0x52aa,0x4249,0x4a69,0x5aeb,0x4269,0x4249,0x4a8a,0x4a29,0x4a6a,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4a69,0x52ab,0x39e8,0x4a49,0x4a69,0x39e7,0x4aaa,0x4a69,0x4a49,0x4a49,0x4248,0x4228,0x4a49,0x4a49,0x4a29,0x39e7,0x3a08,0x39e8,0x39e7,0x4249,0x4a6a,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x4249,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x39e7,0x4229,0x39e7,0x31c7,0x31c7,0x39e8,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x4249,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39c7,0x31a6,0x39c7,0x31a7,0x31c7,0x3a07,0x4228,0x31c7,0x31c7,0x39e7,0x31a7,0x3a08,0x3a08,0x31c7,0x4229,0x39e9,0x4249,0x4229,0x2986,0x39e7,0x4249,0x4228,0x39e7,0x39e7, +0x3186,0x2986,0x31c7,0x3207,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x39c7,0x31c7,0x3a07,0x31c7,0x31e7,0x31e7,0x3a08,0x39e8,0x3a08,0x3a08,0x39c7,0x39c7,0x39a7,0x4208,0x39e7,0x31c6,0x39c7,0x39e8,0x3a07,0x3a08,0x39c7,0x4208,0x4229,0x31a7,0x39c8,0x31c7,0x31e7,0x4228,0x3a28,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x39e7,0x31c7,0x3a08,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x3a08,0x39c7,0x39e7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4a6a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a6a,0x39e8,0x4229,0x4229,0x52ab,0x52ab,0x4a69,0x4a69,0x4269,0x4a8a,0x4a8a,0x52ab,0x4a69,0x4a69,0x52ab,0x4a6a,0x528b,0x4a4a,0x528a,0x528a,0x4229,0x4229,0x52ab,0x5b2c,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x4229,0x4aaa,0x52ab,0x528a,0x5aec,0x5aeb,0x52cb,0x52cb,0x632d,0x4a6a,0x4a8a,0x5aec,0x5b0c,0x5aec,0x4a8a,0x6b8e,0x634d,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x1082,0x1082,0x0861,0x1061,0x1061,0x1062,0x1061,0x1062,0x1062,0x1061,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x1082,0x2104,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x2104,0x528a,0x5acb,0x4249,0x52ca,0x5aeb,0x528a,0x528a,0x528a,0x4a6a,0x52aa,0x4a8a,0x4249,0x4a49,0x4a29,0x39e8,0x4249,0x4a8a,0x52aa,0x4228,0x4229,0x4a6a,0x528a,0x528a,0x4228,0x4249,0x4a69,0x4208,0x4a69,0x4a69,0x4a49,0x4a49,0x4229,0x4a49,0x4208,0x4228,0x4a49,0x4249,0x4229,0x4269,0x5aeb,0x4a8a,0x4249,0x4229,0x39e7,0x4249,0x52cb,0x4248,0x4a8a,0x528a,0x4229,0x4228,0x4a49,0x4208,0x39c7,0x39e8,0x4249,0x4228,0x4229,0x4208,0x3a08,0x39e8,0x29a7,0x31e7,0x3a29,0x31e8,0x4228,0x39e7,0x39e7,0x39e7,0x4249,0x4228,0x4249,0x39e8,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x4209,0x4229,0x4208,0x39e7,0x31a6,0x4228,0x4228,0x39e7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x31a7,0x2966,0x3a08,0x39e8,0x31c7,0x39c7,0x31c7,0x31a6,0x39e8,0x4229,0x39c7,0x39c7,0x4208,0x41e8,0x39e8,0x4249,0x31c7,0x4208,0x39e8,0x39c7,0x39c7,0x31c7, +0x39c7,0x31a6,0x31c7,0x31e7,0x31c6,0x29a6,0x2986,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39c7,0x31c7,0x3a08,0x4a6a,0x39e8,0x3a08,0x4a49,0x39e7,0x39e7,0x39e8,0x39e7,0x4a89,0x4207,0x31a6,0x39e8,0x39c7,0x31a7,0x39e8,0x3a08,0x31a7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x3a07,0x3a07,0x4228,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x39e7,0x41e8,0x39e8,0x39e7,0x39e8,0x3a08,0x39e8,0x4208,0x4228,0x4208,0x4229,0x4229,0x4249,0x4228,0x4249,0x4a69,0x4a6a,0x4a6a,0x4a69,0x4a69,0x3a08,0x4208,0x4229,0x526a,0x526a,0x4a29,0x528a,0x528a,0x4208,0x4a29,0x52ab,0x4a29,0x4a6a,0x4a49,0x4229,0x5acc,0x528a,0x4a69,0x4a69,0x4a69,0x526a,0x4a49,0x528a,0x528a,0x4229,0x4a69,0x52ab,0x4a6a,0x52aa,0x52aa,0x4a69,0x4a6a,0x5aec,0x5acb,0x52aa,0x52aa,0x5aeb,0x5b0c,0x6b6d,0x52cb,0x5aec,0x528a,0x5acb,0x52ab,0x528a,0x18c2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10c3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1062,0x0861,0x0861,0x1061,0x1061,0x0861,0x1061,0x1062,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x10a2,0x2104,0x1082,0x0881,0x1082,0x18c3,0x10a2,0x2124,0x5acb,0x5acb,0x4a69,0x52ca,0x52aa,0x52ca,0x528a,0x5acb,0x528a,0x4249,0x5b0c,0x4249,0x4a49,0x4a6a,0x4a69,0x4a69,0x4249,0x4249,0x4229,0x3a08,0x4a6a,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4249,0x4a69,0x4228,0x4228,0x4208,0x4a8a,0x52aa,0x3a07,0x4208,0x4a49,0x4a89,0x4a8a,0x31e7,0x52cb,0x4a8a,0x4a6a,0x4a49,0x39e8,0x4229,0x528a,0x4a69,0x52aa,0x4a69,0x4229,0x4228,0x4a49,0x4a89,0x4249,0x4228,0x4228,0x31e7,0x3a08,0x3a28,0x3a28,0x4a89,0x4249,0x3a07,0x4249,0x4249,0x2985,0x39e7,0x4248,0x31c6,0x4228,0x4248,0x4249,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x31c7,0x31c7,0x4229,0x39e8,0x39c7,0x39c7,0x3a08,0x39e7,0x4228,0x39e7,0x39c7,0x3186,0x4228,0x39e7,0x31a7,0x39c7,0x4229,0x39e8,0x31a7,0x39a7,0x2945,0x39c7,0x4208,0x39e7,0x39c7,0x31a6,0x31c7,0x4208,0x31c6,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4228,0x31a6, +0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x39e7,0x3a08,0x39e8,0x31c7,0x31a7,0x41e8,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39c7,0x4228,0x4a8a,0x4269,0x4269,0x39e8,0x31c7,0x4208,0x39c7,0x31a6,0x4228,0x3a07,0x39c7,0x3a07,0x31c7,0x31a6,0x3a07,0x4248,0x3a08,0x31a7,0x31a7,0x31a8,0x31c7,0x39e8,0x4208,0x4207,0x4208,0x39e7,0x4228,0x3207,0x3a08,0x3a08,0x39e7,0x39e8,0x4208,0x3a08,0x4a69,0x39e8,0x4229,0x3a09,0x3a08,0x3a28,0x4228,0x4228,0x4249,0x4a69,0x4aaa,0x52cb,0x4228,0x4228,0x4228,0x3a08,0x4a8a,0x3a28,0x3a08,0x4a49,0x4a49,0x4229,0x4228,0x528a,0x4a89,0x52aa,0x4249,0x4a69,0x4229,0x4aab,0x4269,0x4269,0x52cb,0x4a89,0x5b0c,0x4a69,0x4208,0x4249,0x4a69,0x4249,0x52aa,0x3a08,0x4a8a,0x52cb,0x3a08,0x52aa,0x52aa,0x5acb,0x528a,0x5b0c,0x52aa,0x5acb,0x5b0c,0x52aa,0x5b0b,0x52aa,0x630c,0x5acc,0x4229,0x526a,0x5acb,0x5aeb,0x18c2,0x1081,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1061,0x0861,0x0861,0x0861,0x1081,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1061,0x1061,0x1082,0x10a2,0x2924,0x1082,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x52aa,0x5aeb,0x4a89,0x4248,0x52ca,0x52ca,0x52cb,0x4a8a,0x5aec,0x5aab,0x528a,0x5aeb,0x5b0c,0x528a,0x4a69,0x4a8a,0x3a28,0x4a8a,0x52ab,0x4229,0x4229,0x5269,0x4a49,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4a69,0x52aa,0x4269,0x4a8a,0x4a69,0x4aaa,0x3a28,0x4a69,0x3a28,0x4a69,0x3a28,0x4a8a,0x4249,0x4a6a,0x4208,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4229,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e8,0x31a7,0x31a7,0x4a49,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4207,0x3a08,0x39e7,0x4228,0x31c6,0x39c7,0x4208,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x39e7,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4a89,0x3a08,0x4a8a,0x39e8,0x31a7,0x31a7,0x3a08,0x4249,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x4228,0x39e7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x4a69,0x39c7, +0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x39c7,0x39e8,0x31e7,0x31c7,0x31c7,0x3a08,0x39e8,0x31a7,0x39c8,0x4208,0x39c7,0x39e8,0x39e7,0x31a6,0x3186,0x39e8,0x39e7,0x2986,0x31a7,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x3a28,0x4248,0x31e7,0x31e7,0x39e8,0x39c7,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31e7,0x4228,0x4248,0x39e7,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x31c8,0x31c7,0x39e7,0x4a69,0x4a69,0x4249,0x4228,0x4a6a,0x4249,0x3a08,0x4208,0x3a08,0x4a49,0x4a6a,0x4228,0x39e8,0x4208,0x4208,0x4249,0x4a8a,0x4a49,0x52aa,0x4249,0x52aa,0x4228,0x4a89,0x3a49,0x4229,0x4a8a,0x3a08,0x4a8a,0x4aaa,0x4228,0x4248,0x4269,0x52cb,0x52ab,0x5aec,0x4a8a,0x5b0c,0x4269,0x4248,0x528a,0x52aa,0x5289,0x52aa,0x6b6e,0x5aec,0x4a49,0x52cb,0x4a8a,0x4a89,0x528a,0x632c,0x528a,0x4a69,0x5aeb,0x52ab,0x4a8a,0x18c2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x18e3,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2103,0x1082,0x1061,0x1062,0x18a2,0x2944,0x1082,0x0861,0x1082,0x18e3,0x18e3,0x2924,0x4a49,0x4a49,0x4a69,0x52aa,0x52ca,0x5b0c,0x52eb,0x52aa,0x52aa,0x52aa,0x4208,0x6b6e,0x528b,0x4208,0x4a49,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x52aa,0x5aeb,0x4248,0x4a69,0x4249,0x4269,0x4228,0x52aa,0x52ca,0x4a69,0x4aaa,0x4a6a,0x4a69,0x3a08,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x528a,0x4208,0x39c7,0x4208,0x4228,0x4228,0x4208,0x4208,0x4248,0x3a07,0x39e7,0x4249,0x3a08,0x31c7,0x3a08,0x4229,0x39e8,0x39e8,0x39e8,0x4249,0x39e7,0x39c7,0x4208,0x4228,0x4208,0x4a49,0x4228,0x4208,0x39e8,0x4208,0x4a69,0x39e7,0x4228,0x3a07,0x4228,0x528a,0x39e8,0x4228,0x39e7,0x39e7,0x4a49,0x3a07,0x4a69,0x39e7,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x4a49,0x4208,0x39e7,0x3a07,0x39e8,0x4209,0x31a7,0x39e7,0x4228,0x31e7,0x31c7,0x3186,0x4a69,0x31a7,0x31c7,0x39c7,0x39e7,0x31a6,0x3a08,0x39e7,0x31a7, +0x29a6,0x31c7,0x31c7,0x2965,0x2986,0x2986,0x39e7,0x3a08,0x3a08,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x39e7,0x3a08,0x39e7,0x31a7,0x31a7,0x39e8,0x31a7,0x39e7,0x4228,0x4228,0x4208,0x31a6,0x39e7,0x4208,0x4249,0x31c7,0x31a6,0x31e7,0x3a08,0x2987,0x31a7,0x39c8,0x3a08,0x31e7,0x31e7,0x39e8,0x3a08,0x3a08,0x4228,0x4228,0x4269,0x3a28,0x3a28,0x52aa,0x4208,0x4208,0x39e7,0x39c7,0x39e8,0x4249,0x4249,0x31c7,0x31e7,0x3a08,0x3a07,0x4249,0x3a08,0x3a08,0x39e8,0x4229,0x4a69,0x4248,0x4249,0x3a29,0x4249,0x4229,0x4249,0x4208,0x4a69,0x4208,0x3a08,0x4249,0x4249,0x4a8a,0x4a49,0x4a49,0x4a8a,0x4a6a,0x4229,0x4209,0x4249,0x4249,0x4228,0x4229,0x5aec,0x5acb,0x52ab,0x4a6a,0x4249,0x4a8a,0x4a8a,0x4a89,0x4a8a,0x4248,0x4228,0x528a,0x5aeb,0x7bef,0x52cb,0x5acb,0x4a8a,0x4aaa,0x4a8a,0x52aa,0x4a69,0x528a,0x528a,0x5aab,0x5aec,0x528b,0x630c,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1062,0x1082,0x1081,0x18c3,0x2124,0x2944,0x3165,0x2944,0x2944,0x2944,0x2944,0x2103,0x2124,0x2124,0x2103,0x2103,0x2103,0x2104,0x2924,0x2124,0x2124,0x2924,0x3165,0x2103,0x10a2,0x0861,0x0861,0x10a2,0x2945,0x39c6,0x2123,0x20e3,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x18c2,0x1082,0x0861,0x0861,0x18c3,0x2965,0x3185,0x2924,0x2124,0x2924,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2924,0x2924,0x2924,0x2965,0x2965,0x2965,0x3185,0x3185,0x2104,0x1082,0x0861,0x0861,0x18c2,0x3164,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x528a,0x4a69,0x5aeb,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x5289,0x4228,0x4a6a,0x4229,0x4209,0x4a49,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4a8a,0x4a6a,0x4a49,0x52aa,0x4248,0x52aa,0x4a8a,0x4a8a,0x4249,0x4208,0x52aa,0x3a08,0x4228,0x4228,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a69,0x4a49,0x4a6a,0x4a69,0x4a49,0x4a6a,0x4249,0x4228,0x4a89,0x4a69,0x4269,0x4a69,0x4229,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x3a08,0x3a28,0x3a07,0x3a07,0x3a28,0x3a08,0x4208,0x4228,0x3a08,0x4249,0x3a08,0x3a08,0x39e8,0x4228,0x3a07,0x3a08,0x4208,0x39e7,0x39c7,0x3a08,0x4229,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c7,0x3a08,0x39e7,0x3a08,0x4248,0x4208,0x4208,0x4207,0x528a,0x422a,0x39c8,0x31a7,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x4a49,0x31c7,0x31a7,0x39e8,0x3a07,0x4208,0x3a08,0x39e8,0x31c7, +0x31c7,0x31a6,0x2986,0x2986,0x2986,0x31c7,0x3a08,0x39e7,0x39e7,0x39e7,0x31a7,0x31a7,0x3186,0x39c7,0x39c7,0x3a08,0x3a08,0x31e7,0x3a08,0x3a28,0x3207,0x39e7,0x3a08,0x3a08,0x39c7,0x31c7,0x39c7,0x39e8,0x4229,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x31e8,0x3208,0x3a08,0x31a7,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3208,0x426a,0x426a,0x3a08,0x3a48,0x4269,0x31c7,0x3a08,0x4a6a,0x4a8a,0x3a28,0x3a28,0x3a28,0x4248,0x4228,0x4229,0x4249,0x4229,0x4228,0x4a69,0x4a89,0x4249,0x4249,0x4269,0x39e8,0x52cb,0x4a8a,0x4a69,0x4208,0x4aaa,0x52cb,0x3a08,0x4229,0x4229,0x4a49,0x4249,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a08,0x4a8a,0x4a6a,0x4a49,0x528a,0x4a69,0x528a,0x528a,0x4a8a,0x52cb,0x52ca,0x4aaa,0x4a8a,0x5acb,0x526a,0x528a,0x634d,0x5aeb,0x5acb,0x52aa,0x4a89,0x52cb,0x632c,0x4228,0x528b,0x6b4d,0x5acc,0x4a8a,0x528a,0x528a,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18c3,0x18a2,0x1062,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2904,0x2944,0x2965,0x3165,0x3165,0x2924,0x2944,0x2944,0x2944,0x2944,0x2945,0x2945,0x3165,0x3165,0x2944,0x2103,0x2944,0x2103,0x10a2,0x0861,0x0861,0x18a3,0x2945,0x3186,0x18e3,0x2124,0x2945,0x2944,0x2944,0x2924,0x2924,0x2124,0x2924,0x2944,0x2124,0x2124,0x2124,0x2924,0x2103,0x18c2,0x20e3,0x18c3,0x1082,0x0861,0x0861,0x18e3,0x2965,0x2965,0x2104,0x2944,0x2945,0x3165,0x3165,0x3185,0x3185,0x3186,0x3165,0x2965,0x2945,0x2965,0x2965,0x3185,0x2104,0x2104,0x2944,0x18e3,0x1082,0x0861,0x0861,0x18c3,0x2944,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2924,0x5acb,0x5aec,0x5aeb,0x4a49,0x52ab,0x52aa,0x4aaa,0x52eb,0x4248,0x4a69,0x52ca,0x528a,0x4a49,0x4a8a,0x4249,0x4269,0x4269,0x4a8a,0x4a69,0x4a8a,0x4229,0x4a6a,0x5acb,0x4249,0x4228,0x4a69,0x4249,0x4a49,0x39e8,0x39e8,0x4269,0x52cb,0x4a69,0x4228,0x4a49,0x4229,0x4a49,0x5aec,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x4208,0x3a08,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x31c7,0x4249,0x4249,0x4228,0x39e7,0x4248,0x39e7,0x4208,0x4269,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x3a08,0x4228,0x4208,0x39e7,0x39e7,0x31a7,0x4249,0x4269,0x3a07,0x31a6,0x3a08,0x4248,0x39c7,0x3a08,0x4228,0x31c6,0x31c7,0x31c7,0x3a08,0x3a28,0x31e7,0x2985,0x528a,0x52aa,0x39e7,0x4249,0x39e8,0x39c8,0x39c7,0x39e8,0x4208,0x31a6,0x4248,0x3a08,0x39e7,0x39e8,0x31c7,0x39c7,0x4208,0x4a69,0x4228,0x2966,0x31c7, +0x39e7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31a6,0x39e7,0x31a6,0x31a7,0x39c7,0x39e7,0x39c7,0x4228,0x3a08,0x39e8,0x31c7,0x39e7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e8,0x39e7,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c7,0x31a7,0x39e7,0x31e7,0x31a6,0x31c7,0x31a7,0x39c8,0x39e8,0x3a09,0x3a08,0x39e8,0x3a08,0x4248,0x4268,0x4aaa,0x3a08,0x4249,0x4208,0x4a49,0x4249,0x4249,0x39e7,0x4229,0x4229,0x4a49,0x4249,0x39e8,0x4229,0x4249,0x4249,0x4249,0x4228,0x3a08,0x4249,0x5acb,0x4a6a,0x4249,0x4249,0x52cb,0x4a8a,0x4208,0x4a49,0x4229,0x4a6a,0x4a49,0x4269,0x4aaa,0x4a8a,0x4a69,0x634c,0x52aa,0x4a8a,0x4249,0x4a8a,0x4228,0x4a49,0x52aa,0x4a8a,0x4a69,0x52cb,0x52cb,0x4a8a,0x4a8b,0x4a6a,0x52ab,0x528a,0x630c,0x630c,0x52aa,0x5b0b,0x4a8a,0x52cb,0x5aec,0x52ab,0x52ab,0x5b0c,0x52ec,0x4a69,0x52cb,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x1082,0x1082,0x2924,0x2944,0x2945,0x2945,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3165,0x2103,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x18a2,0x18a2,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2124,0x2944,0x2944,0x2944,0x2124,0x2124,0x2945,0x3165,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18c3,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2924,0x2945,0x2945,0x3186,0x2104,0x1082,0x18c2,0x10a2,0x1082,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x10a2,0x18c3,0x18c3,0x2924,0x4a49,0x4a8a,0x4a6a,0x4229,0x4a6a,0x528b,0x4a8a,0x52cb,0x4a49,0x4249,0x4a69,0x52aa,0x52cb,0x4a69,0x4a89,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x528a,0x4249,0x4a69,0x52aa,0x39e7,0x4228,0x4249,0x52aa,0x4228,0x4249,0x4a49,0x4249,0x4228,0x528a,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x39e8,0x4a6a,0x4249,0x39e7,0x4249,0x39e8,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x3a28,0x4228,0x4248,0x39e7,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x39e7,0x39e8,0x4249,0x4228,0x39e7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e7,0x31c7,0x4208,0x39c7,0x39e7,0x4228,0x31c7,0x4228,0x4228,0x3a08,0x4228,0x4249,0x31c7,0x4228,0x4228,0x3a07,0x4249,0x528a,0x39c7,0x39e7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x39c6,0x4248,0x39e7,0x39e7,0x4a6a,0x31a6,0x39e7,0x31a7,0x3a08, +0x31c7,0x31a7,0x3186,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x39e7,0x31c7,0x31a6,0x31a7,0x39c7,0x31a7,0x39c7,0x31c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x2986,0x31c7,0x3a08,0x39e8,0x3a09,0x3a09,0x3a08,0x29c7,0x31c7,0x31e7,0x3a07,0x39e7,0x31c7,0x2986,0x29a6,0x31a6,0x31e7,0x31a7,0x31c7,0x31c7,0x31e8,0x39e8,0x39e8,0x424a,0x4a8a,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x4208,0x4208,0x39e8,0x39e8,0x31c7,0x39e8,0x526a,0x4a49,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4228,0x4249,0x4a6a,0x4249,0x4249,0x4a8a,0x4229,0x4208,0x4a49,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a6a,0x4a49,0x4a6a,0x4a49,0x52cb,0x4aaa,0x4269,0x4a69,0x52cb,0x52cb,0x4a8a,0x4228,0x52aa,0x52cb,0x4a6a,0x632d,0x5acb,0x4a49,0x52ab,0x5acb,0x5aca,0x4a69,0x52ab,0x4a69,0x52cb,0x52cb,0x4a8a,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x18a2,0x0861,0x0841,0x0861,0x2924,0x2924,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2944,0x0861,0x0861,0x1082,0x0861,0x0861,0x10a2,0x1082,0x0841,0x18c3,0x2944,0x2924,0x2925,0x2945,0x2924,0x2944,0x2964,0x3164,0x2944,0x2944,0x2924,0x2944,0x2945,0x3165,0x18c2,0x0841,0x1082,0x1082,0x0861,0x1082,0x10a2,0x1061,0x0861,0x2104,0x2124,0x2924,0x2924,0x2945,0x2945,0x2945,0x2964,0x2944,0x2944,0x2925,0x2945,0x2925,0x2965,0x2945,0x0841,0x0841,0x1082,0x1062,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x18a3,0x18c3,0x18c3,0x2124,0x4a69,0x5aeb,0x4a6a,0x52aa,0x528a,0x528a,0x4a49,0x52ab,0x4249,0x4228,0x3a08,0x52eb,0x52aa,0x4a69,0x5acb,0x4a69,0x4a49,0x4228,0x4a49,0x4208,0x4a6a,0x4a6a,0x3a08,0x4a8a,0x52aa,0x4249,0x4a69,0x4a49,0x4a49,0x4a69,0x3a08,0x4a49,0x39e7,0x4a69,0x4a89,0x52aa,0x4248,0x4a49,0x4248,0x4228,0x4a49,0x52aa,0x4a69,0x52aa,0x4a69,0x4228,0x528a,0x4a6a,0x4229,0x4229,0x39e7,0x528a,0x4a69,0x39e7,0x4249,0x4229,0x3a08,0x3a08,0x31a6,0x4249,0x4249,0x39c7,0x3a08,0x4248,0x3a08,0x4a89,0x4228,0x4208,0x3a07,0x39e7,0x39c7,0x39e8,0x4a49,0x528a,0x39e8,0x39e8,0x39c8,0x31c7,0x31a6,0x3a08,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e8,0x4a69,0x4228,0x4a69,0x31a6,0x3186,0x39e7,0x39e7,0x39e7,0x4229,0x4a6a,0x4228,0x39e7,0x4248,0x4248,0x4228,0x4249,0x4228,0x39e7,0x3a08,0x31e7,0x39e7,0x39c7,0x29a6,0x31c7, +0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x39e7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a6,0x31c7,0x31a7,0x4249,0x4249,0x2986,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x31c7,0x39c7,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x3a08,0x31e7,0x29a6,0x31e7,0x39e7,0x4228,0x39e7,0x4249,0x4229,0x3a08,0x4229,0x3a08,0x3a08,0x4269,0x4229,0x31e8,0x3a08,0x3a08,0x4229,0x528a,0x528a,0x4228,0x31a7,0x4228,0x3a08,0x3a08,0x4a49,0x4a69,0x4228,0x4249,0x4229,0x4228,0x5acb,0x3a08,0x428a,0x428a,0x3a29,0x3a28,0x4249,0x52aa,0x4a89,0x4a89,0x4a69,0x4a6a,0x4a6a,0x4249,0x4a49,0x4a4a,0x5aeb,0x4a69,0x4a49,0x4a6a,0x5acc,0x52ab,0x52ab,0x4a49,0x4a6a,0x4249,0x5aec,0x5aeb,0x528a,0x5aeb,0x632c,0x5acb,0x4a69,0x52ab,0x4a6a,0x424a,0x4a8a,0x52ca,0x52cb,0x5b2c,0x4a8a,0x5b0c,0x630c,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0020,0x0861,0x2124,0x2124,0x2945,0x2945,0x2925,0x2945,0x3185,0x39a4,0x39a4,0x39a5,0x3165,0x2945,0x2945,0x2965,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0020,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c4,0x5a64,0x5a84,0x4204,0x2944,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1061,0x1082,0x1082,0x0841,0x0861,0x2104,0x2925,0x2945,0x2945,0x2945,0x3185,0x4a25,0x5244,0x4204,0x3185,0x2945,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0841,0x18c3,0x2904,0x0861,0x0861,0x10a2,0x18c3,0x18c2,0x2944,0x528a,0x4a49,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4a6a,0x4228,0x5289,0x4a89,0x4a69,0x4229,0x4a69,0x4a49,0x52aa,0x4228,0x4a49,0x4a8a,0x3a28,0x3a28,0x4a8a,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a49,0x4249,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4228,0x4a8a,0x4a8a,0x3a08,0x5aeb,0x528a,0x4208,0x4a49,0x4a49,0x4a6a,0x4208,0x4229,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x39e7,0x4229,0x3a08,0x39e7,0x3a08,0x4228,0x4208,0x39c7,0x31e7,0x31c7,0x3a08,0x4a69,0x4a69,0x31a6,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e8,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x39c7,0x4208,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x4208,0x39c7,0x39e8,0x31c7,0x31c7,0x4228,0x39e7,0x31a7,0x39c7,0x31c7,0x3186,0x39c8,0x31e7,0x3a08,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31e7,0x39e7,0x39e8,0x2966,0x2986, +0x2966,0x2986,0x31a7,0x31c7,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x39e8,0x3a08,0x39e7,0x31a6,0x31c7,0x4228,0x4a89,0x4228,0x39e7,0x39e7,0x3186,0x31a7,0x39e8,0x4249,0x39e7,0x31a6,0x31a6,0x3a28,0x31e7,0x3a08,0x4a49,0x528a,0x31c7,0x3a29,0x39e8,0x3a08,0x4a69,0x4229,0x4208,0x4229,0x4a49,0x4229,0x3a08,0x3a08,0x4249,0x52aa,0x4a48,0x4228,0x39e8,0x39e8,0x31e8,0x31e8,0x4229,0x528a,0x41e8,0x39e8,0x4208,0x4a6a,0x4a6a,0x4248,0x4229,0x4249,0x4249,0x4a4a,0x4249,0x52cb,0x4a4a,0x4a6a,0x4229,0x634d,0x52cb,0x4249,0x52ab,0x52aa,0x4a69,0x3a28,0x4a8a,0x4209,0x3a09,0x4a6a,0x4a6a,0x4a49,0x5aeb,0x5b0c,0x634c,0x5269,0x5acb,0x634d,0x4a8a,0x52ab,0x528a,0x4a4a,0x528a,0x52ab,0x52cb,0x5aeb,0x632d,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2925,0x2925,0x2925,0x3165,0x5265,0x5a64,0x62c4,0x6b04,0x39c4,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2945,0x2945,0x2964,0x7324,0x7303,0x7304,0x7b64,0x3984,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x0861,0x2104,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b24,0x6ae4,0x7344,0x5244,0x2965,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0861,0x18c3,0x2104,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x2944,0x528b,0x4a29,0x4228,0x5289,0x528a,0x4a69,0x4228,0x4a69,0x528a,0x52aa,0x4248,0x4a29,0x4229,0x4a29,0x4229,0x528a,0x4229,0x4249,0x4a69,0x4a69,0x3a07,0x52cb,0x4a49,0x528a,0x4a8a,0x4228,0x4a89,0x4248,0x4228,0x4249,0x4a49,0x4a69,0x4a49,0x3a07,0x4228,0x4a69,0x4a8a,0x3a08,0x4249,0x4a8a,0x4a69,0x52aa,0x4a6a,0x4209,0x528a,0x528a,0x4a49,0x4249,0x4249,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x4228,0x3a08,0x31e7,0x3a08,0x3a08,0x4a49,0x4a29,0x31a7,0x3a08,0x31e7,0x4a69,0x3a08,0x3a08,0x39c7,0x3186,0x39e7,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x31a7,0x39c7,0x31a7,0x39e8,0x39c7,0x39e8,0x31a7,0x39e7,0x31a6,0x4228,0x2985,0x4208,0x4208,0x39e8,0x3a08,0x31c7,0x39e7,0x31c7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x2986,0x39e7,0x31a6,0x31c7,0x3a28,0x39e8,0x31a7,0x3187,0x31a7,0x3a08,0x4228,0x31c7,0x31a7,0x2966,0x2986, +0x2966,0x2965,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x31c7,0x31c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x39e7,0x39e7,0x31c7,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x31a7,0x4209,0x39c8,0x39e8,0x3186,0x39c7,0x4208,0x3a28,0x39e7,0x4228,0x4228,0x39e8,0x39e8,0x3a08,0x3a08,0x4208,0x4a49,0x4249,0x41e8,0x4249,0x4a6a,0x3a08,0x4a8a,0x4a8a,0x3a08,0x4269,0x4249,0x4a49,0x4208,0x39e8,0x31a7,0x39e8,0x3a08,0x39e8,0x39e8,0x4209,0x4208,0x4a49,0x4a29,0x528a,0x4a6a,0x4a49,0x5acb,0x5aeb,0x3a28,0x4a8a,0x4229,0x4249,0x4a8a,0x4249,0x3a28,0x4a6a,0x5aeb,0x4a8a,0x4269,0x52ca,0x4a8a,0x4249,0x3a28,0x4249,0x4a49,0x4229,0x5acb,0x52aa,0x52aa,0x4208,0x5b0c,0x632c,0x31e8,0x528a,0x5acb,0x4a4a,0x5aec,0x5aeb,0x52aa,0x52cb,0x52ab,0x52aa,0x4a89,0x4249,0x5aec,0x4229,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2924,0x2925,0x2925,0x3165,0x5245,0x5a64,0x8384,0x7b63,0x39a4,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2925,0x2925,0x3184,0x8be4,0x7b23,0x7304,0x9404,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7b65,0x8344,0x5224,0x83a5,0x7304,0x3145,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x2104,0x0861,0x0861,0x10a2,0x18c3,0x20e3,0x2924,0x4a49,0x4a69,0x4208,0x4249,0x4249,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4228,0x4a69,0x4229,0x4208,0x39c7,0x4a69,0x4228,0x4a6a,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x3a08,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4269,0x4229,0x39e8,0x3a08,0x528a,0x4228,0x4228,0x4a69,0x4229,0x4208,0x4a6a,0x4229,0x4249,0x4a69,0x4a69,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x31a6,0x31a6,0x31c6,0x4228,0x4a8a,0x39e8,0x4249,0x4249,0x4249,0x4249,0x4208,0x4208,0x31a6,0x31a6,0x39e8,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x39c7,0x39c7,0x31a7,0x39c8,0x39e8,0x31a6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x39c7,0x31a7,0x39e7,0x31a7,0x2966,0x31a6,0x29a6,0x31c7,0x31c7,0x2966,0x31a6,0x31a6,0x39c7,0x31c6,0x31e7,0x31e7,0x39e7,0x39c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a7, +0x2965,0x2965,0x2986,0x29a6,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31e7,0x39e7,0x31c7,0x31a6,0x31a6,0x31c7,0x31a7,0x31c7,0x31a7,0x39c7,0x39e7,0x4228,0x39e7,0x31a6,0x29a6,0x31c7,0x31c7,0x39c7,0x39e8,0x2986,0x2986,0x31c7,0x29a7,0x2986,0x2986,0x39e7,0x39c7,0x39e7,0x39e8,0x3a08,0x4249,0x4a6a,0x4229,0x4a69,0x31c7,0x39e7,0x39c8,0x4229,0x31a7,0x31a7,0x4249,0x4249,0x3a08,0x52cb,0x4249,0x3a08,0x31c8,0x4a6a,0x39e8,0x4208,0x3a08,0x31a7,0x31e7,0x3a08,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4229,0x4249,0x4229,0x4229,0x4a8a,0x4249,0x31c7,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x3a08,0x4249,0x52ab,0x4a6a,0x4228,0x4a8a,0x5aeb,0x4a49,0x428a,0x426a,0x4229,0x4a6a,0x4a6a,0x4a8a,0x4249,0x52cb,0x528a,0x4a6a,0x630c,0x4208,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a49,0x4a49,0x528a,0x52ab,0x4a69,0x4a49,0x528a,0x4a4a,0x18a3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2124,0x2924,0x2945,0x2925,0x2945,0x3165,0x5244,0x8384,0x5223,0x3164,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x3184,0x8bc4,0x8363,0x7b44,0x93e4,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7325,0x8364,0x5244,0x8bc4,0x8364,0x3144,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x2103,0x20e3,0x0861,0x1061,0x10a2,0x18c3,0x18e3,0x2924,0x4249,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4228,0x4229,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x39e8,0x3a28,0x3a28,0x3a08,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x4249,0x3a08,0x4249,0x4208,0x4a69,0x528a,0x528a,0x4a69,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4a69,0x4a6a,0x39e8,0x31a7,0x39e8,0x31c6,0x3a07,0x4229,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x3a08,0x31a6,0x3186,0x39c7,0x4208,0x3a07,0x39e7,0x4208,0x4a49,0x4a69,0x39c7,0x4249,0x4229,0x4229,0x3a08,0x39c8,0x4229,0x39c7,0x31a7,0x4228,0x39c7,0x39c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e8,0x31a6,0x31a6,0x31c7,0x31c6,0x31c7,0x3a08,0x31a7,0x2966,0x31a7,0x39c7,0x31a7,0x4208,0x31a6,0x29a6,0x2986,0x3186,0x31a6,0x3185,0x39a6,0x2966,0x31c7,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x3186,0x2986,0x31c6,0x31a6,0x31c7,0x3186, +0x2986,0x31c7,0x2986,0x2965,0x2986,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x31c7,0x39c7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x39c8,0x39e8,0x39c7,0x31a7,0x31c7,0x31a7,0x31a7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x39e8,0x3a08,0x4229,0x39e8,0x39e8,0x4208,0x39e8,0x4249,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x4208,0x39c7,0x39e8,0x4249,0x39e7,0x31c7,0x31c8,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3a08,0x3a28,0x3a28,0x39e8,0x3a28,0x4269,0x4269,0x4269,0x4249,0x3a08,0x4229,0x4a6a,0x4229,0x5acc,0x4249,0x4229,0x4249,0x39e8,0x4a49,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4208,0x4a29,0x4a49,0x4229,0x4249,0x3a08,0x3a08,0x4229,0x3a08,0x4249,0x4a6a,0x528a,0x4a69,0x4a49,0x4229,0x4249,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2924,0x2944,0x2924,0x2945,0x2945,0x3164,0x7344,0x7303,0x3164,0x2944,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0881,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x39c4,0x93e5,0x6ac3,0x62a4,0x9c04,0x4a03,0x2925,0x2945,0x2945,0x2965,0x18c3,0x0020,0x0861,0x1082,0x0861,0x1082,0x1082,0x0020,0x1081,0x2124,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b44,0x6ac3,0x9404,0x7b24,0x2944,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x18e3,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x2124,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x4208,0x4229,0x4229,0x39e8,0x4208,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x4208,0x39c7,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39e8,0x4a29,0x4a49,0x4229,0x2986,0x31a7,0x4208,0x4208,0x39e8,0x31c7,0x2986,0x29a6,0x31c7,0x39e8,0x39c7,0x31a7,0x52aa,0x4a69,0x4228,0x3a28,0x4229,0x3a08,0x39c7,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x41e7,0x3186,0x2945,0x2965,0x2125,0x2145,0x2145,0x2966,0x2965,0x2966,0x2125,0x2125,0x2104,0x2125,0x2945,0x2104,0x2124,0x2124,0x2104,0x2124,0x1904,0x2125,0x2125,0x2125,0x18e4,0x4228,0x4228,0x3186,0x31c7,0x31a6,0x2966,0x2966,0x2965,0x3186,0x2966,0x2966,0x2966,0x2965,0x2966,0x2986,0x3186,0x2965,0x2945,0x3186,0x2986,0x3186,0x2966,0x2945,0x2965,0x2965,0x2124,0x2945,0x2145,0x2145,0x2165,0x2986,0x2965, +0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a7,0x2966,0x39e8,0x39c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31a7,0x39c7,0x3a08,0x39e8,0x4209,0x39c8,0x39c8,0x4208,0x39e8,0x39e8,0x39c7,0x31a7,0x29a6,0x31c6,0x31e7,0x39e7,0x4228,0x39c7,0x39c8,0x39c8,0x39c8,0x41e8,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x31c7,0x4229,0x4208,0x39e7,0x4208,0x39c7,0x4209,0x4209,0x4a8a,0x4229,0x4a6a,0x4229,0x4249,0x4249,0x4a6a,0x4a49,0x4209,0x4209,0x39e8,0x41e8,0x4a4a,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4229,0x39e8,0x4208,0x4a49,0x4229,0x4208,0x41e8,0x4208,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2944,0x2924,0x2924,0x2924,0x2124,0x41e4,0x93e4,0x5223,0x2924,0x2944,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18e3,0x2945,0x2945,0x2925,0x2124,0x41e5,0x93e5,0x6283,0x5264,0x93e4,0x4a03,0x2925,0x2925,0x2925,0x2965,0x18c3,0x0020,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x1082,0x2124,0x2945,0x2945,0x2945,0x2945,0x4a45,0x7324,0x62c4,0x93e4,0x6284,0x2945,0x2945,0x2945,0x2945,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18c3,0x18e3,0x2944,0x39e7,0x4228,0x4228,0x29a6,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x4207,0x31c6,0x39e7,0x4228,0x39e7,0x4228,0x4a48,0x4248,0x39e7,0x0842,0x0000,0x1904,0x18e3,0x18c3,0x10c3,0x1083,0x1082,0x18c3,0x10a3,0x18e4,0x2104,0x2104,0x18e4,0x18c4,0x10c3,0x2145,0x2125,0x1904,0x1924,0x1904,0x1904,0x18e3,0x1924,0x634c,0x636c,0x52aa,0x4a8a,0x5289,0x4228,0x4208,0x39e7,0x39e7,0x39c7,0x31a6,0x4208,0x4208,0x41e8,0x2945,0x1082,0x1083,0x1083,0x10a2,0x18e3,0x10a2,0x18c3,0x18e4,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x2124,0x1903,0x1904,0x18c3,0x18c3,0x18c3,0x2104,0x2125,0x2986,0x3a07,0x4a89,0x29a6,0x29a6,0x2965,0x2145,0x2124,0x2124,0x2144,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2104,0x2125,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1904,0x18e3,0x2125,0x2965,0x3a08,0x4248,0x4aaa,0x4a8a, +0x2945,0x2145,0x2144,0x2945,0x2965,0x2945,0x2966,0x2965,0x2986,0x2986,0x2945,0x3186,0x39c7,0x31a6,0x3186,0x2985,0x3186,0x2985,0x2965,0x3186,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3a07,0x39c6,0x31a6,0x3186,0x31a6,0x3186,0x2104,0x2104,0x18e4,0x18c3,0x10c4,0x10a3,0x10a3,0x18e4,0x18a3,0x18c3,0x20e4,0x18c3,0x18a3,0x1082,0x18c3,0x18c4,0x18c4,0x18c4,0x10a3,0x18e4,0x10a3,0x18e4,0x18c3,0x1083,0x2104,0x5aeb,0x4a8a,0x31c7,0x39e7,0x31a6,0x3186,0x39e8,0x3a08,0x31c7,0x31c7,0x4208,0x4208,0x3a08,0x52aa,0x4a49,0x0000,0x18c3,0x18a3,0x18a2,0x18a3,0x1083,0x18a3,0x1083,0x18c4,0x1083,0x18c4,0x1083,0x2105,0x20e4,0x10a3,0x0842,0x0862,0x0021,0x1063,0x1063,0x1083,0x18c4,0x0862,0x31a7,0x52aa,0x3a08,0x39e7,0x2986,0x31c6,0x31c7,0x31a6,0x39e7,0x39c7,0x2985,0x39c6,0x39e7,0x39c6,0x39e6,0x39e7,0x39e7,0x4228,0x4228,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x2104,0x2924,0x2124,0x2124,0x2124,0x2124,0x5245,0x8384,0x3983,0x2924,0x2924,0x2924,0x2925,0x2945,0x2124,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0841,0x18c3,0x2925,0x2945,0x2925,0x2924,0x3185,0x6ae5,0x6ac4,0x62a4,0x7304,0x3984,0x2924,0x2924,0x2925,0x2945,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x0861,0x1082,0x2124,0x2925,0x2925,0x2924,0x2944,0x4a25,0x7325,0x6ae4,0x7b24,0x41c4,0x2945,0x2945,0x2945,0x2945,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x2965,0x5b4c,0x5b4c,0x5b4c,0x8450,0x73ce,0x73ce,0x7c30,0x8450,0x73ee,0x5b0b,0x632c,0x8450,0x6bae,0x6bce,0x6bae,0x632b,0x5b0b,0x634c,0x5b0c,0x4229,0x5aec,0x2965,0x4a89,0x52ca,0x52eb,0x4268,0x52eb,0x5b0b,0x52ea,0x5b0b,0x4aaa,0x4a89,0x4228,0x4228,0x29a7,0x4269,0x4249,0x31e7,0x4249,0x4269,0x4aaa,0x638d,0x31e7,0x4a69,0x4229,0x4249,0x4248,0x4228,0x4208,0x4228,0x39e8,0x4249,0x3a08,0x4269,0x5aec,0x52aa,0x4a69,0x3a07,0x2124,0x2925,0x2104,0x2945,0x31a7,0x2965,0x10a3,0x0001,0x1904,0x10c2,0x1904,0x10c3,0x18e3,0x2124,0x2985,0x2165,0x0882,0x2965,0x2145,0x2124,0x2124,0x2945,0x39c7,0x2965,0x5aeb,0x4a6a,0x2166,0x10e4,0x1904,0x1904,0x10c3,0x18e3,0x18e3,0x18c3,0x2104,0x18e3,0x10c3,0x18e3,0x1904,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x2165,0x4248,0x4a8a,0x4a4a, +0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2125,0x2124,0x2945,0x2966,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2944,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2125,0x4a69,0x632c,0x0882,0x2124,0x18e3,0x1903,0x18e3,0x10a3,0x18e4,0x18e4,0x10c3,0x18e4,0x2125,0x2124,0x2165,0x2945,0x2124,0x2144,0x2945,0x2925,0x2124,0x2124,0x2104,0x1904,0x18e4,0x2104,0x4208,0x39e8,0x2145,0x2965,0x2965,0x2986,0x31a7,0x31a7,0x31a7,0x31c7,0x31e7,0x31e8,0x39e8,0x4269,0x31e7,0x39e6,0x4228,0x39e7,0x31a6,0x2165,0x2985,0x31c6,0x31e7,0x31c7,0x29c6,0x29c6,0x3207,0x3a07,0x4248,0x3a08,0x4a8a,0x52ab,0x4aab,0x4269,0x428a,0x4a89,0x39e7,0x1904,0x4228,0x5aeb,0x4a8a,0x52ca,0x636d,0x73ef,0x638e,0x7bf0,0x73ce,0x634c,0x7c0f,0x8450,0x8450,0x94d2,0x9d33,0x8491,0x8cd3,0x8cd2,0x9534,0x18e3,0x1082,0x1081,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2924,0x2124,0x2924,0x2924,0x2124,0x41e5,0x5244,0x2944,0x2924,0x2124,0x2924,0x2945,0x2945,0x2103,0x10a2,0x1081,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c2,0x2104,0x2125,0x2124,0x2124,0x2924,0x39c4,0x4a24,0x4a04,0x41c4,0x2944,0x2124,0x2124,0x2924,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c2,0x18c3,0x2104,0x2945,0x2925,0x2924,0x2925,0x39a5,0x5245,0x5245,0x4a05,0x3165,0x2945,0x2945,0x2965,0x2965,0x2104,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x3186,0x84b3,0x7c51,0x8471,0xa575,0x9d14,0x8472,0x94f4,0x9d55,0xa595,0x9513,0x8cd3,0x94f4,0x7c52,0x8492,0x8c92,0x6b8e,0x632e,0x636e,0x52cb,0x4a69,0x5b0b,0x31c7,0x4a6a,0x4a8b,0x4a6a,0x4aaa,0x52eb,0x4a8a,0x4aaa,0x4a8a,0x4249,0x39e7,0x3a08,0x29a7,0x4269,0x29c7,0x31e7,0x3a08,0x31e8,0x31e7,0x4aab,0x8472,0x3a08,0x634d,0x52aa,0x31c8,0x31a7,0x39c8,0x3a08,0x29a7,0x3208,0x3a08,0x29a6,0x52aa,0x634d,0x528a,0x4a8a,0x4249,0x2124,0x2924,0x2104,0x2145,0x2965,0x10c3,0x4269,0x5b4c,0x3a08,0x5b0c,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x634c,0x52eb,0x6bae,0x2986,0x2144,0x2965,0x2144,0x2124,0x39c7,0x31c6,0x5aec,0x52ab,0x39c8,0x10a3,0x18e3,0x1904,0x10e3,0x10c3,0x10c3,0x10a3,0x2104,0x18e3,0x10e3,0x10c3,0x18e4,0x1904,0x18e3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3,0x10c3,0x18c3,0x10a2,0x2986,0x4229,0x18e4, +0x18e3,0x18e3,0x2124,0x2124,0x1904,0x1904,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x2104,0x1904,0x10e3,0x18e4,0x10c3,0x18e4,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x0001,0x630c,0x840f,0x0000,0x2965,0x18e3,0x1904,0x18e3,0x2965,0x1903,0x2104,0x31a6,0x1944,0x2985,0x2103,0x2944,0x2986,0x31c6,0x3a07,0x31c6,0x3a07,0x1924,0x2985,0x2124,0x1904,0x2145,0x2104,0x18e4,0x18e5,0x18e4,0x18e4,0x1904,0x2125,0x18e4,0x18c4,0x31a7,0x3a08,0x29c7,0x31c8,0x29a7,0x52ab,0x4a8a,0x52cb,0x4aaa,0x3a29,0x31e7,0x31c7,0x2166,0x29a6,0x39e8,0x31c7,0x3a49,0x3a69,0x3a28,0x4249,0x4269,0x4269,0x4a8a,0x4a8a,0x52ec,0x4acb,0x4aab,0x4aab,0x3a29,0x31a6,0x3a08,0x4a8a,0x5b0d,0x6bcf,0x7410,0x73f0,0x6bd0,0x73f0,0x73d0,0x7c0f,0x7c10,0x8452,0x8431,0x8c93,0xadf8,0x9535,0x8493,0x8cd4,0x9d55,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x2124,0x2124,0x2945,0x2945,0x2924,0x2945,0x2944,0x3164,0x3164,0x2924,0x2945,0x2925,0x2925,0x2945,0x2945,0x2924,0x2924,0x18c3,0x1081,0x0861,0x0861,0x10a2,0x2104,0x2964,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2944,0x18c2,0x1081,0x1082,0x1082,0x18e3,0x2944,0x2964,0x2945,0x3165,0x2945,0x2945,0x2945,0x2944,0x3165,0x39a5,0x3185,0x3165,0x3165,0x2965,0x3165,0x3185,0x2965,0x2924,0x20e3,0x10a2,0x0861,0x0861,0x0841,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x18a2,0x18e3,0x3186,0x8472,0x8493,0x8473,0x8c92,0x94f4,0x7c31,0x8c93,0x8473,0x9515,0x9d35,0x84b3,0x7411,0x6bb0,0x7bf1,0x94f4,0x73af,0x4a8c,0x52cd,0x426a,0x31c7,0x4228,0x4249,0x4a8a,0x4a6a,0x6b8e,0x7c10,0x6b6d,0x8430,0x6b8d,0x6b8d,0x634c,0x8c70,0x4a89,0x636c,0x6bae,0x636d,0x6b8e,0x73cf,0x1925,0x31a7,0x31a8,0x52ed,0x3a29,0x6b6f,0x424a,0x29a7,0x2966,0x2966,0x31a7,0x31a7,0x31c7,0x29a7,0x08c3,0x5aeb,0x7bef,0x4a8a,0x4229,0x2986,0x2945,0x2124,0x1904,0x18e4,0x39e7,0x2164,0x73ce,0x73ee,0x6bae,0x8470,0x52ca,0x7c0f,0x52eb,0x8430,0x634d,0x4a8a,0x8430,0x0040,0x31a6,0x2985,0x2144,0x2145,0x31c7,0x31c6,0x5acb,0x4a8a,0x3a08,0x0882,0x10c3,0x10e3,0x1904,0x10e3,0x10c3,0x10a3,0x18e3,0x1904,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x10c3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e3,0x18e4,0x10a3,0x10c3,0x10e4,0x2966,0x18e4, +0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x18e4,0x1083,0x528a,0x52aa,0x2144,0x2985,0x18e3,0x0800,0x52cb,0x5b4c,0x3248,0x530b,0x634d,0x52cb,0x4a89,0x52ca,0x636c,0x42a9,0x73ef,0x5b0b,0x6b8d,0x636c,0x530b,0x10e3,0x2145,0x1924,0x2124,0x2104,0x2104,0x1904,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x2125,0x3a09,0x29c8,0x29c7,0x29c7,0x4a8a,0x4228,0x52ec,0x426a,0x3208,0x31e7,0x2165,0x5b2c,0x6bae,0x4269,0x636d,0x5aeb,0x5b0c,0x5b2c,0x632c,0x6bae,0x73ce,0x6bae,0x8492,0x5b0d,0x424a,0x52ec,0x428b,0x3a09,0x31a7,0x39c8,0x422a,0x5b0d,0x636f,0x73f0,0x73f0,0x6bd0,0x6b8f,0x8431,0x8cb3,0x7c32,0x7411,0x8c94,0x7c53,0x8cb5,0x73f2,0x6bd1,0x8473,0x8cb4,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x1062,0x1061,0x10a2,0x2124,0x3165,0x2965,0x2924,0x2945,0x2924,0x2104,0x2104,0x2124,0x2104,0x2104,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x3165,0x2104,0x1082,0x0861,0x0861,0x18c3,0x2945,0x3185,0x2944,0x2104,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2924,0x39a5,0x39a6,0x2103,0x1081,0x0862,0x1082,0x18e3,0x3185,0x3185,0x2945,0x2945,0x2124,0x2924,0x2104,0x2104,0x2924,0x3165,0x3186,0x3165,0x3165,0x2925,0x2924,0x3165,0x3165,0x3165,0x2945,0x18c3,0x1061,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x1082,0x18a2,0x20e3,0x3186,0x8472,0x7412,0x7412,0x73f1,0x7c31,0xad97,0x7c32,0x8473,0x8cb4,0x8c94,0x6bb0,0x7c31,0x7c11,0x7c11,0x8452,0x634e,0x52cc,0x52cc,0x4a6b,0x31a7,0x39e7,0x4228,0x52eb,0x4a8a,0x6baf,0x7c10,0x73cf,0x8c71,0x7bf0,0x8451,0x5aeb,0x8cb2,0x634e,0x7c31,0x0064,0x4209,0x6b4e,0x738e,0x0001,0x39e8,0x2167,0x634e,0x4a6a,0x528b,0x4229,0x29a7,0x29a7,0x2966,0x3187,0x39e8,0x39e8,0x2966,0x10e3,0x52ca,0x7c10,0x632d,0x4249,0x31c7,0x2965,0x2945,0x18c3,0x2144,0x2985,0x2985,0x73ae,0x94d2,0x6b6d,0x8451,0x52ca,0x5289,0x738e,0x8c71,0x6b4d,0x4249,0x8431,0x0000,0x2966,0x3186,0x2986,0x2125,0x2965,0x39c7,0x5b0c,0x4249,0x39e8,0x3186,0x18e4,0x10e3,0x1904,0x18e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e4,0x1924,0x1904,0x10e3,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e4,0x1904,0x10a3,0x10c3,0x10e3,0x08a3,0x10c3, +0x10a2,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x10e3,0x10c3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x10c3,0x10e3,0x1904,0x18e4,0x18e3,0x10c3,0x31a7,0x2985,0x2965,0x2965,0x18e4,0x0000,0x6b8e,0x6baf,0x636d,0x5b0c,0x0000,0x6b6e,0x6b8d,0x73ef,0x740f,0x6b8e,0x7c0f,0x5b0c,0x73ef,0x7c2f,0x636c,0x0081,0x2145,0x2124,0x2104,0x2124,0x2125,0x1904,0x10e3,0x1903,0x18e3,0x18a3,0x18c3,0x18c3,0x10a3,0x2986,0x29c7,0x29c7,0x2987,0x4249,0x39e8,0x4aab,0x424a,0x31e8,0x31c7,0x0882,0x7c30,0x8471,0x638d,0x8491,0x6bad,0x73ee,0x73ae,0x7c0f,0x8c91,0x73ee,0x8c92,0x8472,0x4aab,0x4aab,0x4acc,0x428b,0x39e8,0x31a7,0x39e8,0x422a,0x73d0,0x8c93,0x7411,0x7410,0x73f0,0x73cf,0x6bd0,0x7411,0x73f1,0x6bd0,0x8cb3,0x7411,0x6bb0,0x7c31,0x94d3,0x7c51,0x7c33,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c3,0x1082,0x1062,0x0861,0x18c3,0x2104,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x18a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18e3,0x2104,0x20e4,0x1082,0x0861,0x0861,0x18c3,0x2124,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x3165,0x3185,0x2924,0x1082,0x0861,0x1082,0x20e3,0x2944,0x2924,0x20e3,0x18c3,0x18a2,0x18a3,0x18a2,0x18a3,0x18c3,0x2104,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x20e3,0x2104,0x2924,0x2124,0x18e3,0x1062,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18a2,0x20e3,0x39a6,0x9d35,0x4aee,0x6391,0x530e,0x8cd3,0xb5d7,0x6bd0,0x7c31,0x7411,0x73f1,0x73b0,0x73d0,0x73d0,0x6baf,0x6b8f,0x632e,0x4aab,0x4aab,0x422a,0x31a7,0x4208,0x4228,0x52eb,0x4aab,0x5b0d,0x73f0,0x8430,0x8430,0x6b8e,0x8450,0x5b0c,0x8451,0x634d,0x73af,0x632d,0x634e,0x5b0c,0x6b6e,0x0062,0x31e8,0x2186,0x5b2c,0x3a08,0x52aa,0x4a8a,0x29a6,0x31c8,0x2967,0x31a7,0x31c7,0x29a6,0x2965,0x2145,0x1944,0x632d,0x8451,0x31e8,0x31e8,0x2945,0x2104,0x10c2,0x2124,0x2145,0x10a2,0x52cb,0x632d,0x52ab,0x6b4e,0x5aec,0x5aeb,0x632c,0x5b0c,0x632d,0x31a7,0x5acb,0x10a3,0x2104,0x2945,0x2966,0x2965,0x2986,0x2965,0x52aa,0x4a6a,0x39e8,0x2946,0x18e4,0x18e3,0x1903,0x1904,0x10c3,0x18e3,0x18e3,0x10c2,0x1904,0x1924,0x2124,0x1904,0x10a3,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x1904,0x2124,0x10c3,0x10c3,0x10c3,0x1904,0x2125, +0x10c2,0x18c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x10c3,0x10c3,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18e4,0x18e3,0x10c3,0x10c3,0x1903,0x1903,0x18e3,0x10c3,0x3186,0x31a6,0x2924,0x2125,0x18e4,0x0042,0x6b6e,0x5aeb,0x39c7,0x632d,0x5aeb,0x6b8e,0x634d,0x7c10,0x7bcf,0x73ae,0x6bcf,0x5b2d,0x73cf,0x7bef,0x4248,0x1904,0x2124,0x2104,0x2104,0x2125,0x2145,0x29a7,0x10e3,0x1924,0x1903,0x18c2,0x39c6,0x2945,0x10a3,0x2986,0x29a6,0x2186,0x2987,0x426a,0x39e7,0x39e8,0x3a09,0x31a8,0x39c8,0x1023,0x8c51,0x73cf,0x634d,0x7c30,0x8430,0x8430,0x73ae,0x7c30,0x73ae,0x8430,0x8c92,0x73f0,0x428a,0x426a,0x3a49,0x3a08,0x31c7,0x31a6,0x4229,0x4a4a,0x6b8f,0x8493,0x6bf1,0x7411,0x6baf,0x6bb0,0x5b2f,0x52ee,0x5b2e,0x636f,0x6b6f,0x634f,0x5b2e,0x73af,0xa576,0x73f1,0x7c11,0x18c3,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x18c3,0x18a3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x1082,0x1062,0x0861,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a3,0x10a2,0x1061,0x1061,0x1061,0x18e3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x3186,0x8c93,0x6390,0x6bf2,0x6bd0,0x8451,0x8452,0x8493,0x7411,0x6bd0,0x636e,0x73d0,0x73d0,0x6baf,0x8452,0x8472,0x7410,0x4aec,0x4aac,0x422a,0x31a7,0x4208,0x3a08,0x426a,0x426a,0x4a8b,0x6b6e,0x52ab,0x5b0d,0x4a8b,0x52cb,0x4a8b,0x5acc,0x52ab,0x3a08,0x5b0c,0x426a,0x3a08,0x39e8,0x2146,0x31c7,0x29c7,0x4249,0x31a7,0x528b,0x424a,0x31e7,0x3a08,0x2166,0x2987,0x2986,0x2966,0x2986,0x31a7,0x2986,0x4249,0x6b6f,0x31e9,0x31c8,0x2125,0x2145,0x10e3,0x1904,0x1904,0x2125,0x1905,0x08a4,0x18c4,0x1084,0x18e4,0x2105,0x18e4,0x1063,0x18c5,0x20e5,0x0842,0x2125,0x2104,0x2104,0x2125,0x3186,0x31c7,0x0882,0x4208,0x4a49,0x31a7,0x1904,0x18e3,0x10c2,0x10e3,0x2145,0x18e3,0x2145,0x1904,0x10a2,0x18e3,0x2124,0x2124,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x10c3,0x18e3,0x2145,0x2966, +0x18c3,0x10c2,0x10c2,0x10c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x18e4,0x2145,0x2124,0x1904,0x18e3,0x10c3,0x18e3,0x18e3,0x10c3,0x18c3,0x2965,0x2965,0x1904,0x2124,0x18c3,0x18e4,0x31c7,0x18e4,0x18c4,0x4a29,0x630c,0x31c7,0x31c8,0x41e8,0x41e9,0x3187,0x424a,0x4a6a,0x31c8,0x2987,0x31c7,0x1904,0x2124,0x1903,0x1903,0x18e4,0x2146,0x2145,0x1904,0x2124,0x1924,0x3186,0x39c6,0x2104,0x2965,0x31c7,0x29a7,0x2986,0x31a7,0x4a6a,0x31a6,0x29a7,0x31e8,0x29c7,0x31c8,0x2966,0x5aed,0x31a8,0x52cc,0x3a09,0x52ac,0x5aed,0x73af,0x5b0c,0x632d,0x73af,0x632d,0x6baf,0x4a8a,0x428a,0x4249,0x3a08,0x31c7,0x2966,0x39e8,0x4a6b,0x4a8b,0x52ed,0x52ed,0x5b0e,0x6b8f,0x52ed,0x4acd,0x428c,0x634e,0x73d0,0x4aac,0x5b2d,0x5b6e,0x6baf,0x6bb0,0x636f,0x73d0,0x18e3,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x0861,0x0882,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1062,0x0861,0x0861,0x1061,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1081,0x0861,0x0861,0x1061,0x0861,0x1061,0x0861,0x0861,0x1062,0x1062,0x1061,0x0861,0x1061,0x1082,0x18c3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x2945,0x634f,0x636f,0x5b0e,0x5b2e,0x5b2e,0x6b6f,0x8473,0x73d0,0x5b0e,0x52ed,0x636f,0x6b8f,0x7c11,0x8452,0x8c73,0x7c11,0x5b2e,0x428b,0x424a,0x2966,0x4228,0x4229,0x424a,0x424b,0x422b,0x3a0a,0x4a6b,0x3a0a,0x424a,0x422a,0x3a09,0x31e9,0x3a09,0x52ec,0x4a8a,0x4209,0x5aec,0x52cb,0x2986,0x31c8,0x29a7,0x4a6a,0x31c8,0x4229,0x31c8,0x2986,0x2986,0x2966,0x2145,0x2145,0x2145,0x2966,0x2966,0x2966,0x2125,0x2947,0x39e8,0x2987,0x2124,0x1904,0x18e3,0x1904,0x2145,0x2104,0x1904,0x1904,0x18e4,0x18c3,0x10e3,0x2125,0x1905,0x18e4,0x18a3,0x10a3,0x18c3,0x10a3,0x18c3,0x2104,0x2125,0x18e3,0x10c2,0x31a6,0x52aa,0x39c7,0x2945,0x2125,0x2125,0x1904,0x1904,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x3186,0x2986,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965, +0x18c3,0x10c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x10c3,0x10a3,0x10c3,0x10c3,0x10a3,0x18e4,0x18e4,0x2104,0x2145,0x2124,0x2124,0x1904,0x18e3,0x18e4,0x1904,0x18e3,0x18e3,0x31c7,0x2965,0x18e3,0x2124,0x18e3,0x18e4,0x18c3,0x2104,0x2104,0x18c3,0x0000,0x2125,0x2945,0x20e4,0x2105,0x2946,0x2125,0x18e3,0x1904,0x2125,0x2124,0x2144,0x2124,0x2104,0x18e3,0x2125,0x2966,0x2125,0x1904,0x2104,0x2945,0x2965,0x3165,0x2965,0x31a6,0x31c7,0x2986,0x2986,0x31a7,0x4a6a,0x31a6,0x31c7,0x3a08,0x3208,0x3a28,0x31e8,0x2167,0x31a8,0x31a8,0x31a8,0x2987,0x2967,0x31c8,0x3a2a,0x422a,0x39e9,0x4a6b,0x4a6b,0x4249,0x4aaa,0x4a8a,0x4249,0x3a08,0x2124,0x4a6a,0x6baf,0x4aec,0x428b,0x4a6b,0x52cd,0x6bd0,0x5b2d,0x52ec,0x634e,0x638e,0x6baf,0x5b4d,0x73f0,0x6baf,0x5b4d,0x5b4e,0x5b0e,0x5b2e,0x18c3,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a2,0x18a2,0x20e3,0x2924,0x4209,0x4209,0x3a09,0x31c8,0x39c9,0x39c9,0x420a,0x420a,0x528c,0x4a4a,0x4209,0x422a,0x422a,0x4a6b,0x632e,0x738e,0x630c,0x52aa,0x4228,0x2945,0x2125,0x2125,0x2946,0x2967,0x2147,0x2146,0x2966,0x2966,0x2966,0x2986,0x2125,0x2125,0x2125,0x2966,0x2966,0x2125,0x2945,0x2986,0x1904,0x1904,0x2145,0x10e4,0x18e4,0x632d,0x52ab,0x4208,0x4208,0x39e7,0x3a07,0x3a08,0x31a6,0x39c7,0x39e7,0x4228,0x4228,0x39e8,0x4a69,0x39e7,0x18e3,0x18c2,0x2124,0x2965,0x2986,0x2145,0x18e3,0x10c3,0x18c3,0x2104,0x1904,0x18e3,0x2104,0x18e3,0x2144,0x2144,0x2945,0x2124,0x2144,0x2945,0x2966,0x2104,0x1903,0x31c6,0x4249,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x2985,0x31c6,0x2985,0x2985,0x31c6,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x2986,0x31a6,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x3186,0x3186, +0x1904,0x1904,0x1904,0x1904,0x1903,0x18e3,0x1904,0x1904,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18e4,0x10c3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x29a6,0x2965,0x10e3,0x10a2,0x10a2,0x18e3,0x10c2,0x10a2,0x10a3,0x18c3,0x18e4,0x18e3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e3,0x18c2,0x10a2,0x10c3,0x1081,0x18c2,0x18c3,0x10a2,0x2124,0x2165,0x2965,0x2165,0x2945,0x2945,0x2124,0x2145,0x31a6,0x39e7,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x2145,0x2965,0x3186,0x2986,0x2966,0x2146,0x2966,0x2125,0x2125,0x2125,0x2145,0x1905,0x2125,0x2987,0x2987,0x2987,0x31a7,0x3187,0x2946,0x3187,0x3187,0x2125,0x2125,0x2104,0x4a29,0x5acc,0x4a8a,0x5aec,0x4229,0x4229,0x3a09,0x3a09,0x3a2a,0x424a,0x3a09,0x424a,0x4a6b,0x424b,0x31e9,0x29c9,0x39ea,0x39e9,0x4209,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0862,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x0861,0x1082,0x18a2,0x18c2,0x20e3,0x2924,0x528a,0x4a8a,0x4a49,0x4a6a,0x424a,0x424a,0x424a,0x426a,0x4a6a,0x4249,0x4229,0x4249,0x4a49,0x4228,0x5aeb,0x5aec,0x52ab,0x4a8b,0x4a8a,0x3186,0x39c6,0x31c6,0x31c6,0x2124,0x39e7,0x31a6,0x4208,0x39e7,0x39c7,0x39c7,0x31e7,0x3207,0x31e7,0x31c6,0x31c7,0x29a6,0x29a6,0x3a08,0x3a07,0x31c6,0x29a6,0x2986,0x31a7,0x39e7,0x4208,0x39e7,0x39c7,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31e6,0x3a28,0x3a07,0x39e7,0x31e6,0x3a07,0x4269,0x31e7,0x29a6,0x31c6,0x31e7,0x31e7,0x31c6,0x31c6,0x39e7,0x31e6,0x3a07,0x39e7,0x2986,0x39e7,0x39c7,0x31a7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c6,0x31a6,0x29a6,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x31c7,0x2986,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x3186,0x2986,0x2145,0x31c7,0x3186,0x2985, +0x2985,0x2986,0x2965,0x2965,0x2145,0x2965,0x2986,0x2165,0x2165,0x2124,0x2144,0x2945,0x2945,0x2965,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2144,0x2986,0x2144,0x2965,0x2965,0x2145,0x2124,0x2145,0x2965,0x2945,0x31a6,0x31a6,0x2985,0x2124,0x2145,0x2165,0x2144,0x2144,0x2945,0x2145,0x2144,0x2144,0x2124,0x18c3,0x2125,0x2165,0x2986,0x2165,0x2945,0x2965,0x2165,0x2144,0x31a5,0x2123,0x2124,0x29a6,0x29a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31e7,0x31c7,0x3a08,0x31c7,0x31e7,0x31e7,0x31a7,0x2145,0x2965,0x2985,0x2144,0x2965,0x2124,0x2144,0x31c6,0x2985,0x2965,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a6,0x4228,0x3a07,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x4208,0x4a6a,0x4a8a,0x528b,0x4a8a,0x4269,0x4249,0x4229,0x4249,0x4a69,0x426a,0x424a,0x4a4a,0x4a6a,0x4a8a,0x426a,0x426a,0x52aa,0x4a69,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a3,0x18c2,0x20e3,0x2104,0x4249,0x4228,0x4a28,0x4228,0x3a08,0x4229,0x39e8,0x4a49,0x4a69,0x3a08,0x4228,0x4249,0x4a49,0x4229,0x3a09,0x3a09,0x39e8,0x4229,0x4229,0x52cb,0x4249,0x4248,0x4249,0x39e7,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x4a49,0x3a07,0x3a28,0x3a49,0x3a08,0x4228,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4208,0x4208,0x3a08,0x39c7,0x31c7,0x31c7,0x39e8,0x4228,0x4228,0x31c7,0x4269,0x4208,0x528a,0x4249,0x4248,0x3a28,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31e7,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2985,0x2965,0x2986,0x2985,0x31a6,0x31a7,0x3186,0x3186,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3a07,0x29a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a7,0x31a7,0x2986,0x2986, +0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2985,0x29a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x39c7,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x3186,0x39e7,0x31a6,0x3186,0x31a6,0x39c7,0x3a07,0x3a27,0x4248,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x4228,0x39e7,0x4289,0x3207,0x3a27,0x4269,0x4228,0x4a69,0x4207,0x4248,0x4228,0x4a49,0x4248,0x4a89,0x3a28,0x31e7,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x39e7,0x4229,0x4228,0x31a6,0x31e7,0x3a08,0x31c7,0x29c7,0x31c7,0x31a6,0x31c6,0x4a68,0x4227,0x31e6,0x4248,0x3a28,0x3a28,0x4248,0x3a08,0x4248,0x4a69,0x4249,0x4249,0x52aa,0x4a8a,0x3a28,0x4249,0x52cb,0x528a,0x4249,0x4228,0x4249,0x52cb,0x4a69,0x4a69,0x4a8a,0x4229,0x4209,0x4a69,0x52ca,0x52aa,0x4269,0x4a8a,0x52cb,0x5aeb,0x5aeb,0x4a8a,0x52ca,0x52aa,0x18c2,0x1082,0x1081,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x18a3,0x18c2,0x20e3,0x2104,0x4a6a,0x4a6a,0x4249,0x4229,0x4a49,0x4229,0x4229,0x528a,0x528a,0x4249,0x4249,0x4a6a,0x528a,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4a8a,0x4a69,0x4a69,0x4a8a,0x4248,0x4248,0x4228,0x4228,0x4208,0x4229,0x3a08,0x4228,0x3a08,0x3a29,0x3a09,0x39e8,0x3a08,0x3a27,0x39e7,0x3a08,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x4208,0x39e7,0x31c7,0x4228,0x39e7,0x31c7,0x4228,0x39e8,0x4229,0x39e7,0x3a08,0x39e8,0x39e8,0x4208,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x31c7,0x3a28,0x31c7,0x39e7,0x39e8,0x4228,0x31e7,0x31a6,0x39e7,0x39e7,0x3a08,0x39e8,0x31c7,0x39e8,0x31a7,0x31a6,0x3a07,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x31a7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x39c7,0x31a6,0x39e7,0x39c7,0x3186,0x2966,0x31c7,0x4228,0x31a6,0x39e7,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x29a6,0x31c7,0x31a7,0x29a6,0x31a6,0x31c7, +0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c7,0x31a7,0x31a6,0x29a6,0x29a6,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31c7,0x31a6,0x2966,0x2966,0x31a6,0x31a6,0x31c7,0x39e7,0x31e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x31a7,0x39e8,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x39e7,0x39e7,0x31a6,0x3a07,0x3a08,0x31c6,0x3a08,0x52aa,0x31a6,0x4269,0x4269,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x3a08,0x4a69,0x52ab,0x4228,0x4a8a,0x4248,0x31e7,0x31c7,0x3a07,0x3a08,0x31c7,0x39e7,0x3a08,0x39e8,0x4a49,0x4229,0x4228,0x4228,0x3a08,0x3a08,0x31c7,0x31a7,0x31a7,0x39c7,0x4a69,0x52aa,0x3a08,0x4a49,0x4208,0x3a08,0x3a08,0x3a08,0x4228,0x4a89,0x4249,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4a8a,0x4a49,0x5acb,0x5acb,0x632d,0x5aec,0x52aa,0x52cb,0x4249,0x52aa,0x632d,0x4a8a,0x52cb,0x4a6a,0x424a,0x4a49,0x4a8a,0x528a,0x4a6a,0x4a49,0x528a,0x5aec,0x18c2,0x1082,0x1081,0x1061,0x1062,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1081,0x1081,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18e3,0x18e3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x18a2,0x10a2,0x18c2,0x18e3,0x2104,0x52aa,0x5aeb,0x4229,0x4a8a,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a49,0x4228,0x4228,0x4a69,0x4269,0x4a69,0x52cb,0x52ab,0x528a,0x4a6a,0x4a69,0x39e7,0x4a49,0x4a49,0x39e7,0x4a49,0x39e7,0x39e7,0x4208,0x39e7,0x3a08,0x4229,0x31c7,0x4228,0x3a08,0x39e7,0x31c7,0x39e8,0x39e8,0x39e7,0x3a07,0x3a07,0x4208,0x3a08,0x3a07,0x39e8,0x4228,0x3a08,0x39c7,0x4228,0x39e8,0x39e7,0x3a08,0x31e7,0x31c7,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x31c8,0x3a08,0x39e7,0x39c7,0x3a08,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31a7,0x31c7,0x39e7,0x39e8,0x31a7,0x31c7,0x39e7,0x31c7,0x31a6,0x39c7,0x39c7,0x39e8,0x31a7,0x31c7,0x39e8,0x31c7,0x39c7,0x31a7,0x3187,0x31c7,0x39c7,0x31a6,0x31a6,0x39a7,0x39c7,0x528a,0x2986,0x29a6,0x2986,0x29a6,0x31a6,0x39e7,0x3186,0x31a6,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x2986, +0x2985,0x2986,0x2965,0x2966,0x2966,0x2986,0x2986,0x2986,0x31c7,0x2985,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x4249,0x31c7,0x2145,0x2986,0x31c7,0x31c7,0x3a08,0x31e8,0x2986,0x31a7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x2986,0x31a7,0x31a7,0x2986,0x39e8,0x39e7,0x3186,0x39e8,0x39c7,0x39c7,0x39c7,0x3a08,0x3a08,0x4248,0x39e7,0x39e7,0x4249,0x4a8a,0x39e8,0x31e8,0x39e8,0x39e8,0x4249,0x4208,0x4a69,0x4228,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x3a28,0x31e7,0x3a08,0x3a28,0x4229,0x3a08,0x39e8,0x4a69,0x4a49,0x4a69,0x4aaa,0x31c7,0x39e8,0x39e7,0x39e8,0x4229,0x3a29,0x424a,0x4a8b,0x3a29,0x3a29,0x39e8,0x4249,0x4a6a,0x4a69,0x4248,0x4249,0x4208,0x4a49,0x52ab,0x4a49,0x4a6a,0x5aeb,0x5acb,0x52ab,0x630c,0x4a69,0x528a,0x5aeb,0x4a69,0x5b0c,0x73cf,0x52cb,0x52eb,0x4a69,0x4a49,0x52aa,0x528a,0x4a8a,0x5acb,0x5aec,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1061,0x1062,0x1062,0x1082,0x10a2,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x18c2,0x18c3,0x2103,0x2103,0x2103,0x2123,0x2103,0x20e3,0x20e3,0x18e3,0x18c2,0x18c2,0x18c3,0x18e3,0x20e3,0x18e3,0x2103,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e3,0x2103,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18e3,0x2103,0x18c2,0x0861,0x0861,0x0861,0x18c3,0x2965,0x2924,0x2103,0x2103,0x2123,0x2924,0x2924,0x2124,0x2104,0x2924,0x2944,0x2944,0x2944,0x2944,0x2964,0x2965,0x2944,0x3164,0x2104,0x10a2,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x2104,0x4a89,0x4a8a,0x4a49,0x4a49,0x52cb,0x52eb,0x4a8a,0x4228,0x4a49,0x4208,0x4208,0x4a49,0x4228,0x4228,0x4a69,0x4248,0x4228,0x5acb,0x4a8a,0x3a08,0x4229,0x4228,0x4208,0x4a69,0x4208,0x4249,0x4a49,0x3a07,0x4249,0x4a49,0x4208,0x39e7,0x39c7,0x4228,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4208,0x4229,0x31c7,0x4a69,0x39e7,0x31c7,0x3207,0x31c7,0x39e7,0x4229,0x39e8,0x4208,0x39e8,0x39c7,0x31c8,0x31c8,0x31c7,0x39c7,0x4228,0x31e7,0x4228,0x3a08,0x31a7,0x39e7,0x4248,0x39c7,0x39c8,0x39c7,0x31e7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x39e8,0x39e7,0x31c7,0x31a7,0x31a6,0x31e7,0x31c7,0x31a6,0x31a7,0x31c7,0x39e7,0x39e7,0x29a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3186,0x31c7,0x31a7,0x39e7,0x39c7,0x39c7,0x31a7,0x39c7,0x31c7,0x2986,0x31c7,0x31a6,0x31c7,0x31a6,0x3186,0x39e7,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x2985, +0x39c7,0x39e7,0x3186,0x2966,0x2966,0x2966,0x29a7,0x29a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31e7,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x29a6,0x31a6,0x39c7,0x31a7,0x39e8,0x31c7,0x3186,0x31a6,0x31a7,0x39c7,0x31a7,0x31e7,0x31c7,0x31a6,0x2986,0x31c7,0x4a49,0x31a7,0x31c7,0x4228,0x4269,0x31c7,0x31c7,0x3a09,0x3a09,0x31c8,0x31c7,0x31c7,0x31c7,0x3a08,0x4208,0x4249,0x4228,0x3a07,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4269,0x4208,0x4208,0x4228,0x3a28,0x39e7,0x39e7,0x4229,0x3a09,0x31e8,0x4249,0x426a,0x3a29,0x4249,0x3a08,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x52aa,0x4229,0x4229,0x4a8a,0x4249,0x630c,0x528a,0x4229,0x4a49,0x4a49,0x4a49,0x52aa,0x4a49,0x5acb,0x528a,0x52aa,0x52ca,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x528a,0x630d,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x10a2,0x2103,0x2944,0x2944,0x2944,0x2964,0x2944,0x2924,0x2944,0x2124,0x2103,0x2124,0x2124,0x2944,0x2944,0x20e3,0x2924,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e4,0x2103,0x18c3,0x2104,0x2124,0x2104,0x2924,0x2124,0x2103,0x2103,0x2103,0x2124,0x2124,0x2124,0x2104,0x2944,0x2103,0x18c3,0x2104,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x3165,0x2124,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2944,0x2944,0x2965,0x3165,0x3185,0x3185,0x39a6,0x3185,0x2103,0x2944,0x2104,0x10a2,0x0861,0x0861,0x1082,0x1082,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x52cb,0x4a4a,0x5aec,0x52aa,0x52aa,0x52aa,0x52aa,0x4a6a,0x4249,0x4a49,0x3a08,0x4269,0x5aeb,0x4228,0x4248,0x528a,0x4a8a,0x4249,0x4249,0x4a8a,0x4269,0x4228,0x4249,0x4a8a,0x4228,0x3a28,0x4249,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4248,0x4249,0x3a08,0x3a08,0x3a08,0x39c7,0x3a07,0x39e7,0x39e8,0x39c7,0x39e8,0x39e8,0x31a7,0x3a08,0x39e8,0x4208,0x4208,0x39c7,0x39e7,0x31c7,0x31c7,0x31c8,0x31c7,0x39e7,0x39e8,0x39c7,0x31c7,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x39c7,0x3a08,0x39e7,0x39c7,0x31c7,0x31c7,0x31a6,0x4228,0x3a08,0x31c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e7,0x39c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x39e7,0x31a6,0x39e7,0x39c7,0x31c7,0x3186,0x4228,0x4208,0x2986,0x31a7,0x2986,0x31c7,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x2965,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x2966,0x2966,0x2965, +0x31a7,0x31a7,0x3186,0x2986,0x3166,0x2965,0x31c7,0x31e7,0x31c7,0x3186,0x31a6,0x31c7,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x31a6,0x2986,0x31a6,0x2966,0x31a6,0x39e7,0x31a6,0x3186,0x3186,0x2966,0x31c7,0x29a7,0x31a6,0x39e7,0x31a6,0x31a6,0x2986,0x31e7,0x31c7,0x3a07,0x31e7,0x39e7,0x4208,0x31c7,0x31e7,0x31c7,0x31a7,0x31a7,0x3187,0x39e8,0x39e8,0x31c7,0x39c7,0x4228,0x39e7,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x39e7,0x3a08,0x31c7,0x3a28,0x3a08,0x39e8,0x39e8,0x4208,0x39c7,0x3a08,0x4249,0x3a28,0x3a28,0x39e8,0x3a08,0x4249,0x39e7,0x4228,0x4249,0x4229,0x4228,0x3a08,0x4228,0x4229,0x4229,0x528a,0x528a,0x4249,0x4a8a,0x4a69,0x3a08,0x528a,0x4208,0x528a,0x526a,0x4a49,0x528a,0x4229,0x4a8a,0x4a49,0x4229,0x4a8a,0x4229,0x4a4a,0x4229,0x4a69,0x52aa,0x4a6a,0x528b,0x4aab,0x4a8a,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x0861,0x2103,0x2924,0x2924,0x2924,0x2924,0x2124,0x2924,0x2924,0x2124,0x2103,0x2124,0x2924,0x2924,0x2944,0x2103,0x18a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x2924,0x1082,0x18c3,0x18c3,0x1061,0x0861,0x0861,0x18a3,0x18e3,0x18c3,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2944,0x2965,0x3165,0x3186,0x3186,0x18c2,0x18a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x1082,0x18a2,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x4a8a,0x52ab,0x4249,0x4a6a,0x4a8a,0x4249,0x4a8a,0x4a8a,0x4228,0x4248,0x4269,0x4aaa,0x4aaa,0x4a69,0x52aa,0x4a69,0x4a69,0x5acb,0x528a,0x4a8a,0x4a69,0x4a69,0x4249,0x4a6a,0x4a69,0x4249,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4249,0x39e8,0x4229,0x4228,0x39e7,0x4248,0x39e7,0x39e7,0x3a08,0x39c8,0x31c7,0x4208,0x39c7,0x4208,0x39c7,0x39e8,0x4229,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x4a69,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x4208,0x4229,0x39e8,0x4228,0x4249,0x39c7,0x3186,0x39c7,0x39e7,0x39e7,0x3a28,0x2986,0x31a7,0x31c7,0x3a08,0x3a07,0x3a08,0x4249,0x39e7,0x31c7,0x4208,0x31a7,0x31a6,0x3a08,0x31a7,0x31a6,0x31a6,0x31c6,0x4248,0x31a6,0x31a6,0x31c7,0x31c7,0x31a6,0x39e7,0x3186,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x29a6,0x2986,0x3a08,0x31a7,0x2986,0x2965, +0x2986,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31c7,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x39c7,0x39a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31c7,0x39c7,0x31a6,0x31a6,0x31e7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x31e7,0x39e7,0x39e8,0x4208,0x31c7,0x39c7,0x3a08,0x31a6,0x31c7,0x4228,0x3a08,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x4208,0x3a28,0x39e7,0x3a08,0x4229,0x39e8,0x41e8,0x4209,0x4209,0x4249,0x3a08,0x39c7,0x4229,0x3a08,0x39c7,0x3a08,0x3a08,0x31e8,0x39e8,0x39c8,0x4209,0x39e8,0x3a08,0x4a6a,0x4a49,0x4208,0x4a49,0x4a49,0x4249,0x4a49,0x4229,0x4a6a,0x52ab,0x4a49,0x4249,0x4a69,0x4a6a,0x4a8a,0x4228,0x52aa,0x528a,0x4229,0x4a49,0x4249,0x4a69,0x4208,0x4a69,0x3a48,0x4229,0x4229,0x4229,0x4a29,0x4a69,0x4a6a,0x4a6a,0x4a69,0x3a08,0x10a2,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x0841,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2104,0x2924,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0821,0x18a2,0x2103,0x2104,0x2104,0x2104,0x2104,0x2123,0x2963,0x2943,0x2103,0x2104,0x2104,0x2104,0x2124,0x2924,0x0861,0x1082,0x10a2,0x0861,0x0861,0x1061,0x1082,0x0861,0x1082,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x3165,0x18a2,0x0841,0x1062,0x1062,0x0861,0x1082,0x1082,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x4a6a,0x4a8a,0x52ab,0x52cb,0x4249,0x4a8a,0x634d,0x4228,0x4a69,0x4269,0x4aaa,0x4aaa,0x4a6a,0x528a,0x5b0c,0x4a69,0x4a8a,0x52cb,0x4a49,0x4a69,0x4229,0x4229,0x4249,0x4229,0x4a49,0x4229,0x4208,0x4228,0x4228,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x4229,0x4228,0x4228,0x4228,0x4229,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4249,0x3a08,0x39c7,0x3a28,0x4249,0x3a08,0x3a08,0x3a28,0x4249,0x3a08,0x4249,0x39e8,0x4228,0x4a6a,0x4208,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x2986,0x4208,0x3a08,0x31a6,0x4208,0x3a08,0x31c7,0x3a07,0x39e7,0x31a7,0x2986,0x31c7,0x39e7,0x39e7,0x4249,0x31c6,0x31c6,0x4228,0x39e7,0x4208,0x39e7,0x31e7,0x3a07,0x31c7,0x31a6,0x3a28,0x31a7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x39c7,0x31c7,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x2986,0x2945,0x3186, +0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x31a7,0x31c7,0x2966,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31c6,0x31c6,0x2986,0x31a6,0x31c7,0x3186,0x31c7,0x31e7,0x31c7,0x31e7,0x3a28,0x31a7,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a08,0x4228,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4269,0x4228,0x39c7,0x41e8,0x4208,0x4228,0x4249,0x3a08,0x31c7,0x31c7,0x39e8,0x3a08,0x4208,0x4229,0x31c7,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x39c7,0x4228,0x39e8,0x39e8,0x3a08,0x31a7,0x4249,0x3a08,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4249,0x4249,0x4249,0x3a09,0x426a,0x3a28,0x3a08,0x4249,0x4aaa,0x4269,0x4228,0x4249,0x424a,0x4a8a,0x4249,0x4249,0x52aa,0x4a69,0x52ab,0x4229,0x4249,0x4a69,0x4a49,0x4a69,0x528a,0x4a49,0x4228,0x4a49,0x4228,0x10a2,0x1081,0x1061,0x1081,0x1081,0x0861,0x0861,0x10a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0020,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2944,0x2124,0x2104,0x2104,0x2104,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x4203,0x5a63,0x5263,0x39a3,0x2124,0x2124,0x2104,0x2124,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x1062,0x0041,0x1082,0x2104,0x2124,0x2124,0x2104,0x2124,0x2924,0x41e5,0x2964,0x4205,0x3184,0x2945,0x2945,0x2945,0x2945,0x18a2,0x0841,0x0841,0x0861,0x0861,0x1062,0x1062,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2924,0x52aa,0x52ab,0x5acb,0x52cb,0x52cb,0x4a8a,0x4a6a,0x4229,0x4a8a,0x4a8a,0x52cb,0x52aa,0x52cb,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4229,0x4a8a,0x52aa,0x4229,0x3a08,0x4a6a,0x4228,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4a49,0x4229,0x4228,0x4a69,0x4a6a,0x4249,0x4229,0x424a,0x4249,0x4a6a,0x4229,0x39e7,0x3a07,0x3a28,0x3a08,0x39e8,0x4249,0x3a28,0x3207,0x31e7,0x3a08,0x31c7,0x4229,0x4a49,0x4228,0x39e8,0x4249,0x4228,0x3a08,0x4249,0x3a08,0x31a7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x3a07,0x31c7,0x31c7,0x31e7,0x29a7,0x31c7,0x31c7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x3a07,0x3a28,0x39e7,0x39e7,0x31a6,0x39e7,0x39c7,0x31a7,0x31a6,0x31a6,0x31a7,0x2966,0x31a6,0x3a08,0x31a7,0x31a7,0x31c7,0x29a6,0x2986,0x31a7,0x39c7,0x31a7,0x2166,0x3186,0x2946,0x2965, +0x2966,0x2986,0x31c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2965,0x39c7,0x31c6,0x2986,0x2986,0x31a7,0x31a7,0x2986,0x3186,0x3186,0x2986,0x2966,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x31c7,0x31e7,0x31a6,0x31a6,0x2986,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3a07,0x3a07,0x31a6,0x31a7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x31a7,0x31c7,0x39c7,0x39e7,0x39e7,0x4a49,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x3a08,0x4208,0x4a8a,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4229,0x39c7,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x39e7,0x3a08,0x3a28,0x3a48,0x4228,0x3a08,0x31c7,0x39e8,0x4229,0x39e7,0x4228,0x52ca,0x4249,0x3a28,0x3a08,0x4269,0x4a8a,0x4269,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4249,0x4a8a,0x52ca,0x52aa,0x4a49,0x4229,0x4a69,0x5b0b,0x4228,0x4249,0x4228,0x4a49,0x52aa,0x4229,0x4229,0x10a2,0x1061,0x1061,0x1061,0x1081,0x0861,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x5244,0x3163,0x2944,0x2124,0x2124,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x31a4,0x7343,0x6ac3,0x7303,0x62c3,0x2923,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x6ae5,0x41e3,0x6ae5,0x41e4,0x2944,0x2945,0x2945,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18c3,0x20e3,0x20e3,0x2924,0x5acb,0x528a,0x4a49,0x4a8a,0x52aa,0x52aa,0x4a69,0x4229,0x4a69,0x52ab,0x5acb,0x4a49,0x4249,0x4228,0x4a8a,0x4229,0x4249,0x4a69,0x4249,0x3a08,0x5acb,0x4a49,0x4229,0x4a8a,0x4a49,0x4249,0x39c7,0x4208,0x4229,0x39c7,0x4269,0x4248,0x39e7,0x39e7,0x39c8,0x39e8,0x4229,0x4a69,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x4208,0x4208,0x4228,0x4249,0x4229,0x4208,0x4208,0x528a,0x4228,0x31c7,0x3a08,0x4208,0x4228,0x4228,0x4a49,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x39e8,0x31c7,0x3a08,0x31a6,0x39e7,0x39e7,0x39c7,0x4a49,0x4208,0x31a6,0x31a6,0x31c7,0x4249,0x31e7,0x31c7,0x3187,0x2986,0x3a08,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x39e8,0x31a6,0x2965,0x39e8,0x39e7,0x39c7,0x3186,0x3186,0x4229,0x3186,0x39c7,0x31a7,0x31a7,0x2966,0x31c7,0x39e8,0x31a6,0x2966,0x39e7,0x3186,0x2966,0x2145,0x2965, +0x31a7,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x4208,0x39a6,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x31c6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x31a6,0x29a6,0x3a08,0x31e7,0x31a6,0x31a7,0x3187,0x31c7,0x39e7,0x31a6,0x31c6,0x39e8,0x31e7,0x31c7,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x4aaa,0x3a28,0x2965,0x31c7,0x2986,0x31c6,0x3a28,0x4228,0x39c7,0x4249,0x3a08,0x39e8,0x3a08,0x31c7,0x39e7,0x4228,0x3a08,0x3a08,0x39e8,0x4a6a,0x4229,0x39e7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x39c7,0x39e8,0x31e7,0x3a08,0x4269,0x3a28,0x4249,0x4228,0x4228,0x4228,0x4249,0x3a08,0x52aa,0x4a89,0x4249,0x3a08,0x4a69,0x4a8a,0x4209,0x4208,0x4249,0x4249,0x4a49,0x4249,0x4249,0x4249,0x52eb,0x5aeb,0x4a49,0x4a49,0x4a49,0x528a,0x4a89,0x3a08,0x4249,0x4229,0x528a,0x4a8a,0x4228,0x4229,0x10a2,0x1061,0x1061,0x1081,0x1081,0x1081,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2944,0x4a24,0x4a03,0x7b44,0x5223,0x5244,0x2944,0x2124,0x2124,0x2924,0x2104,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x5244,0x8ba3,0x41c3,0x5a84,0x8ba3,0x3143,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2104,0x2124,0x2124,0x4a24,0x8384,0x6283,0x8384,0x5224,0x2924,0x2944,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18a2,0x20e3,0x20e3,0x2924,0x4a8a,0x4a8a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x4208,0x4a49,0x52ab,0x4a6a,0x4229,0x4249,0x4a69,0x528a,0x4a69,0x4228,0x4a8a,0x4229,0x528a,0x4a6a,0x4208,0x4228,0x4249,0x4229,0x39e8,0x3a08,0x3a08,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x39a8,0x39e8,0x4228,0x4a69,0x4249,0x31c7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x31c7,0x39e8,0x4208,0x4208,0x4a49,0x39e8,0x4228,0x39e7,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39e7,0x3a07,0x31a6,0x39e7,0x31a6,0x39e8,0x2986,0x31c7,0x31a7,0x39e8,0x39e7,0x31a6,0x31a7,0x31a7,0x3186,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x31a7,0x31a7,0x39c8,0x39c8,0x39e8,0x31c8,0x31a7,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x2966,0x2965,0x31a6,0x2966,0x2966,0x31a6,0x2986,0x2945,0x3186,0x2986,0x2945,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945, +0x2965,0x29a6,0x29a6,0x31c7,0x31c6,0x2965,0x2945,0x31a6,0x39c7,0x3186,0x2966,0x2986,0x2986,0x29a6,0x2986,0x3186,0x31a6,0x2985,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x31e7,0x2986,0x2986,0x2966,0x2987,0x39e8,0x3a08,0x2986,0x29a6,0x29a6,0x2986,0x39e7,0x31c6,0x31e7,0x31c7,0x39c7,0x39c7,0x3a08,0x31c7,0x3a08,0x31e7,0x31e8,0x3a08,0x4228,0x31c7,0x39e8,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x31c6,0x39e8,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x4209,0x4229,0x39e8,0x3a08,0x39e7,0x3a08,0x3a08,0x39e8,0x39c7,0x4208,0x39c7,0x3a08,0x4228,0x39e8,0x3a08,0x4249,0x4249,0x4269,0x3a28,0x4a69,0x3a28,0x4228,0x4228,0x4249,0x4a8a,0x4aaa,0x4249,0x31e7,0x4249,0x4249,0x3a08,0x39e8,0x4209,0x4a49,0x52aa,0x4249,0x4249,0x4249,0x426a,0x4228,0x4a6a,0x4a49,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4249,0x4228,0x4249,0x4228,0x4a69,0x10a2,0x1061,0x0861,0x0861,0x1081,0x1082,0x1081,0x10a2,0x18c3,0x1082,0x1062,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x3164,0x62a4,0x7303,0x8bc3,0x7b43,0x6ae3,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x62a4,0x8383,0x2923,0x49e4,0x93c4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2124,0x2144,0x5a84,0x8bc4,0x6ac3,0x8ba4,0x5204,0x2924,0x2124,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x1082,0x18a2,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4a8a,0x4269,0x3a08,0x4229,0x426a,0x4229,0x4229,0x4249,0x4a69,0x4229,0x4a49,0x4a8a,0x4208,0x39c7,0x4228,0x4a69,0x31c7,0x39e8,0x4249,0x3a08,0x39e8,0x4228,0x4249,0x4229,0x31c7,0x39e8,0x4208,0x31a7,0x31c7,0x39e8,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x31a7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x31e7,0x39e7,0x39e8,0x31a6,0x39c7,0x39c7,0x31c7,0x39e7,0x31c7,0x2986,0x31c7,0x31c6,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x2986,0x2946,0x2966,0x31a7,0x2966,0x2945,0x2966,0x31a7,0x31c7,0x2986,0x2125,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2946,0x2966,0x2966,0x2966,0x2125,0x2145,0x2145,0x2145,0x2965,0x2125,0x2966,0x2965,0x2145,0x2966,0x2124,0x2145,0x2965,0x2125,0x2145,0x2945,0x2125,0x2124,0x2124,0x2124,0x2124, +0x2165,0x2985,0x29a6,0x31c6,0x2985,0x2145,0x2145,0x2966,0x2986,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x2966,0x31a6,0x2966,0x2966,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2966,0x2986,0x31a7,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a7,0x31a7,0x3187,0x2986,0x3186,0x31a7,0x3186,0x3187,0x3187,0x31a7,0x3186,0x31c6,0x3186,0x3186,0x2966,0x3186,0x31a6,0x39c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c7,0x2986,0x39a7,0x39a7,0x31c7,0x29c7,0x31a7,0x39c8,0x39e8,0x31c7,0x3186,0x31a7,0x39c7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x4208,0x3a08,0x39e8,0x4229,0x3a08,0x39e8,0x31e8,0x31c7,0x31c7,0x3a08,0x3a08,0x4208,0x4a49,0x3a08,0x4229,0x4a8a,0x31e8,0x39e8,0x39e8,0x4229,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x3a28,0x10a2,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1062,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2924,0x3164,0x6ac4,0x8363,0x8bc3,0x8383,0x6ae3,0x3164,0x2124,0x2124,0x2925,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2124,0x2104,0x2104,0x2104,0x5a84,0x8363,0x2923,0x4a04,0x8bc4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2104,0x2944,0x62c4,0x8384,0x6ae3,0x8b84,0x41c4,0x2924,0x2124,0x2924,0x2924,0x1082,0x0020,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4229,0x39e8,0x31e7,0x31c7,0x3a28,0x39e7,0x31c7,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x3187,0x3187,0x3187,0x3186,0x31a6,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x3186,0x2986,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x2966,0x2966,0x2986,0x31a7,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x2965,0x2945,0x2966,0x2986,0x31a6,0x2986,0x2145,0x2965,0x2986,0x2965,0x2965,0x2144,0x3186,0x39c7,0x31a7,0x2945,0x2945,0x2945,0x3186,0x2965,0x2945,0x3186,0x31a6,0x2965,0x2145,0x2125,0x2945,0x2125,0x2945,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2104,0x2124,0x2945,0x2125,0x2125,0x2105,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x18e3,0x18e3, +0x2945,0x2124,0x2945,0x2124,0x2145,0x2145,0x2125,0x2945,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2124,0x2144,0x2965,0x2145,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2946,0x2966,0x2986,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2966,0x2986,0x3186,0x2945,0x2945,0x2946,0x2946,0x2966,0x2965,0x2965,0x2945,0x2946,0x2945,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2946,0x2946,0x2966,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x31a6,0x2965,0x2965,0x31a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x3186,0x3186,0x31a7,0x2966,0x31c7,0x2986,0x2966,0x3187,0x39e8,0x3186,0x39c8,0x39c8,0x31c7,0x31a7,0x3186,0x39c7,0x4228,0x31c7,0x39c7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39a7,0x31a6,0x31c7,0x31a7,0x31c7,0x2966,0x10a2,0x1081,0x1081,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x1082,0x0861,0x1062,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2924,0x2124,0x3164,0x62a5,0x72e4,0x8ba4,0x6ac3,0x62a4,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18e3,0x2124,0x2124,0x2104,0x2104,0x4a24,0x8364,0x41c3,0x5aa4,0x7b43,0x3143,0x2124,0x2104,0x2104,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0041,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2924,0x62a5,0x7304,0x62a4,0x7304,0x3184,0x2124,0x2924,0x2924,0x2924,0x1082,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2104,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x31a7,0x31a7,0x31a6,0x2986,0x31a7,0x2986,0x2986,0x31a7,0x2986,0x2986,0x3186,0x31a7,0x2945,0x2945,0x2966,0x2945,0x2945,0x2145,0x2146,0x2146,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2124,0x2165,0x2145,0x2125,0x2125,0x2104,0x2125,0x2945,0x2145,0x2965,0x2125,0x2124,0x2104,0x2104,0x2125,0x2124,0x2124,0x2124,0x1924,0x2124,0x2144,0x2124,0x2145,0x2945,0x2124,0x2125,0x2945,0x2145,0x2125,0x18e4,0x2104,0x2124,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2125,0x2104,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x2945,0x2144,0x2104,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3, +0x2124,0x1904,0x2104,0x1904,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2125,0x18e4,0x2125,0x2986,0x18e3,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2104,0x2104,0x2104,0x2125,0x2145,0x2124,0x2124,0x2125,0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2125,0x1904,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2124,0x2104,0x2105,0x2125,0x2125,0x2124,0x2124,0x2945,0x2945,0x2125,0x2104,0x2124,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2966,0x2125,0x1904,0x2966,0x2965,0x2965,0x2124,0x2125,0x2986,0x2987,0x2987,0x2145,0x2145,0x2966,0x2945,0x2946,0x2946,0x2946,0x2145,0x2986,0x2946,0x2966,0x2945,0x2966,0x2965,0x2945,0x2966,0x2945,0x2125,0x2125,0x2125,0x1082,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0841,0x0861,0x2104,0x2124,0x2924,0x2124,0x2944,0x4a05,0x49e4,0x7305,0x49e3,0x41c4,0x2944,0x2124,0x2124,0x2124,0x20e3,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x18c3,0x2124,0x2104,0x2104,0x2104,0x3984,0x6ae4,0x5a83,0x6ae4,0x5a43,0x2924,0x2124,0x2124,0x2104,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x1062,0x1082,0x0841,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x4a25,0x5224,0x41e4,0x4a04,0x2944,0x2124,0x2124,0x2124,0x2924,0x1082,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x2103,0x2925,0x2125,0x31a6,0x2966,0x2945,0x2145,0x2105,0x2125,0x2966,0x2945,0x2125,0x2125,0x2125,0x2124,0x2945,0x2124,0x2965,0x1904,0x1904,0x1904,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x1904,0x2124,0x1904,0x1904,0x1924,0x2125,0x1924,0x1904,0x2124,0x2125,0x2104,0x1904,0x1904,0x18e4,0x2104,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x1903,0x10c3,0x10c3,0x1903,0x1904,0x18e4,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x18e4,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e4,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e4,0x2124,0x1904,0x18c3,0x18c3,0x1904,0x10e3,0x18e3,0x18e3,0x18e4,0x18e3,0x10a3,0x10c3,0x10a3,0x10a2,0x10c3,0x18e3,0x10a2,0x10a2,0x10c3,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3, +0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x18c3,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x1904,0x18c3,0x18c3,0x1904,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x18e3,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x18e3,0x18e4,0x18e4,0x18e3,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2124,0x18e4,0x1904,0x2104,0x2145,0x2965,0x1904,0x2124,0x2125,0x1904,0x1904,0x18e3,0x1904,0x2145,0x1904,0x2104,0x2104,0x2104,0x1904,0x2125,0x2125,0x1904,0x2124,0x2965,0x2124,0x2945,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1081,0x1081,0x0861,0x1081,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x2124,0x2124,0x2124,0x2124,0x2944,0x3144,0x49e5,0x3144,0x2924,0x2124,0x2124,0x2124,0x2124,0x18c3,0x1081,0x1082,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x18c2,0x2103,0x2104,0x2104,0x2104,0x2924,0x41c4,0x4a04,0x4a04,0x3164,0x2104,0x2104,0x2104,0x2104,0x20e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x20e3,0x2104,0x2104,0x2104,0x2104,0x3164,0x3164,0x2944,0x3164,0x2124,0x2124,0x2124,0x2924,0x2924,0x18c2,0x10a2,0x0861,0x0861,0x0841,0x0841,0x0861,0x18a3,0x10a2,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x20e3,0x1904,0x1904,0x2104,0x18e3,0x18e4,0x18e4,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x18e3,0x18e3,0x2125,0x2104,0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a2,0x18e3,0x18e3,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a2,0x10c2,0x10c3,0x10c2,0x10e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x10c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10a3,0x10c3,0x10c3,0x10c2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x08a2,0x10c3,0x1924,0x18e3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2, +0x18c3,0x18c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x10a2,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18e4,0x18c3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18e3,0x10c3,0x18e3,0x1904,0x18c3,0x18e3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1903,0x18c3,0x18e3,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x1081,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x18c3,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2124,0x2124,0x2924,0x2924,0x20e3,0x20e3,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x20e3,0x2103,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2944,0x2124,0x20e3,0x2103,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2924,0x2104,0x2104,0x2924,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x1082,0x1082,0x18c2,0x20e3,0x20e3,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10a2,0x10a3,0x10a2,0x10a3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c2,0x18e3,0x18e3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1082,0x10a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a3,0x10c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10c2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a1,0x1062,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2924,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2124,0x2924,0x2104,0x2104,0x2924,0x2924,0x2104,0x2944,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x2924,0x2924,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x2924,0x2124,0x18a2,0x0861,0x0861,0x1082,0x2104,0x3165,0x2924,0x2924,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x20e3,0x20e3,0x20e3,0x2103,0x20e3,0x20e4,0x2104,0x2924,0x3165,0x3165,0x2103,0x1062,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x0862,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082, +0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0882,0x1082,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1081,0x1062,0x10a2,0x2104,0x2103,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x20e3,0x2104,0x18e3,0x1061,0x0841,0x0841,0x18c3,0x2104,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x18c3,0x0861,0x0861,0x1082,0x20e4,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x2104,0x2924,0x20e3,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x10a2,0x18c2,0x20e3,0x20e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1082,0x1082,0x0882,0x10a2,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x0861,0x0881,0x0881,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x0882,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0881,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0861,0x0861,0x0882,0x1082,0x1082, +0x1082,0x0882,0x1082,0x0861,0x0881,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x0882,0x0881,0x0882,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0881,0x0881,0x0881,0x0882,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x0882,0x0881,0x0881,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x1082,0x0882,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x0881,0x0882,0x0882,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x1082,0x1082,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x0861,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x18a2,0x18a3,0x1082,0x0861,0x0861,0x0862,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x1082,0x0882,0x0882,0x0882,0x0882,0x0881,0x1082,0x1082,0x0881,0x0861,0x0882,0x0882,0x1082,0x1082,0x0881,0x0861,0x0881,0x0882,0x0882,0x1082,0x0882,0x0881,0x0882,0x1082,0x0882,0x1082,0x0881,0x0882,0x0861,0x0882,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0882,0x1082,0x0881,0x0882,0x0882,0x0882,0x0882,0x0882,0x0882,0x0861,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x0882, +0x0882,0x1082,0x0882,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x1082,0x0881,0x0861,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0881,0x0881,0x1082,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0861,0x0882,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0861,0x0882,0x0861,0x0861,0x0861,0x0882,0x0861,0x0861,0x0882,0x0881,0x0881,0x0881,0x0861,0x0881,0x0882,0x0861,0x0861,0x0881,0x0861,0x0861,0x0882,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x0881,0x0881,0x0881,0x0861,0x0881,0x0881,0x1082,0x0881,0x0861,0x0882,0x0882,0x0882,0x0861,0x0881,0x0882,0x0882,0x0861,0x18c2,0x1061,0x0861,0x1061,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x1082,0x0862,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1082,0x0861,0x0841,0x1081,0x18e3,0x1082,0x10a2,0x1082,0x18c3,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x0881,0x0882,0x0881,0x1082,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x10a2,0x0882,0x08a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0882,0x08a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x0861,0x0881,0x0882,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0861,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0881,0x0882,0x0881,0x0881,0x0881,0x0881,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x0861,0x0882,0x0881,0x0882,0x0881,0x0881,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x1082,0x0882,0x0861,0x0882,0x1082,0x0881,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0881,0x0861,0x0882,0x0882,0x0882,0x0881,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0882,0x1082,0x1082,0x0881,0x2102,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10c3,0x10a2,0x10c2,0x10c2,0x10c3, +0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0881,0x0882,0x0882,0x1082,0x1082,0x1082,0x10a2,0x1082,0x2943,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18c3,0x18c2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10a2,0x10c3,0x18c3,0x10a2,0x10c3,0x10a2,0x18c3,0x10c3,0x10c2,0x10c2,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x3164,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1904,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x1904,0x1904,0x18e3,0x1904,0x1904,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2104,0x2104,0x2103,0x1903,0x1903,0x1904,0x1904,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x2144,0x2144,0x2945,0x2124,0x2124,0x2124, +0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x3184,0x1081,0x1061,0x1061,0x0861,0x1061,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x18c2,0x20e3,0x2104,0x2124,0x1904,0x2124,0x2104,0x2103,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2165,0x2144,0x2145,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2986,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2986,0x31a6,0x29a6,0x2985, +0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x1924,0x1924,0x1924,0x2124,0x2124,0x2104,0x2124,0x1924,0x1924,0x1904,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1924,0x2124,0x1904,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x2144,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x1081,0x1081,0x1081,0x1081,0x1081,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x10a2,0x10a2,0x18c2,0x18e3,0x18c2,0x2103,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2165,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x29a6,0x29a6,0x3186,0x3186,0x2986,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x29a6,0x29c6,0x31c6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29c6,0x31c7,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x39e7,0x3a08,0x4208,0x41e7,0x4207,0x4207, +0x2985,0x2965,0x2986,0x2986,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x2985,0x3185,0x3185,0x2985,0x2986,0x2985,0x2965,0x2985,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2986,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2986,0x2985,0x2986,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2985,0x29a6,0x29a5,0x2985,0x3185,0x3185,0x31a6,0x31a6,0x31a5,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29c6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x29a6,0x2986,0x31a6,0x2986,0x29a6,0x2986,0x3186,0x2985,0x2986,0x31a6,0x29a6,0x2985,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x31a6,0x2985,0x29a6,0x31a6,0x31a6,0x3186,0x39a4,0x1081,0x1081,0x1082,0x1082,0x10a2,0x1061,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x10a2,0x2103,0x1082,0x18a2,0x1082,0x18c2,0x18e3,0x18c2,0x2104,0x39c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4208,0x41e7,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4249,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4228,0x4a28,0x4228,0x4208,0x3a28,0x3a28,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x39e7,0x4207,0x4208,0x4208,0x39e7,0x4208,0x39e7,0x41e8,0x4207,0x4207,0x39c7,0x39e7,0x39e7,0x41e7,0x41e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31a6,0x39a6,0x39a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3165,0x3186,0x3186,0x3165,0x3165,0x2945,0x2944,0x2944,0x3144,0x3145,0x2904,0x20e3,0x2924,0x2944,0x2944,0x2944,0x3145,0x2924,0x2924,0x2924}; diff --git a/MCUME_teensy/teensy8086/network.cpp b/MCUME_teensy/teensy8086/network.cpp new file mode 100755 index 0000000..3c10ff5 --- /dev/null +++ b/MCUME_teensy/teensy8086/network.cpp @@ -0,0 +1,146 @@ + +#include +#include + +#include "emu.h" + + +#ifdef USE_ENC28J60 +#include + +byte ENC28J60::buffer[1514]; +//uint8_t net_mac[6] = { 0x90, 0xAD, 0xBE, 0xEF, 0x13, 0x37 }; +uint8_t net_mac[6] = { 0x2C, 0xFD, 0x13, 0x37, 0x13, 0x37 }; + +extern union _bytewordregs_ regs; +extern uint16_t segregs[6]; + +struct netstruct { + uint8_t enabled; + uint8_t canrecv; + uint16_t pktlen; +} net; + +void net_handler() { + uint32_t i; + uint16_t j; + //if (ethif==254) return; //networking not enabled + switch (regs.byteregs[regah]) { //function number + case 0x00: //enable packet reception + net.enabled = 1; + net.canrecv = 1; + return; + case 0x01: //send packet of CX at DS:SI + //if (verbose) { + //Serial.println("Sending packet of %u bytes.", regs.wordregs[regcx]); + //} + //sendpkt (&RAM[ ( (uint32_t) segregs[regds] << 4) + (uint32_t) regs.wordregs[regsi]], regs.wordregs[regcx]); + i = ( (uint32_t) segregs[regds] << 4) + (uint32_t) regs.wordregs[regsi]; + for (j=0; j 0) { + for (i=0; i +#include "emu.h" + +volatile uint16_t pit0counter = 65535; +volatile uint32_t speakercountdown, latch42, pit0latch, pit0command, pit0divisor; +uint8_t portram[0x400]; +uint8_t crt_controller_idx, crt_controller[256], port3D9 = 0; + +void portout(uint16_t portnum, uint16_t value) { + if (portnum < 0x400) portram[portnum] = value; + switch (portnum) { + case 0x20: + case 0x21: //i8259 + out8259(portnum, value); + return; + case 0x40: + case 0x41: + case 0x42: + case 0x43: //i8253 + out8253(portnum, value); + break; + case 0x3D4: + crt_controller_idx = value; + break; + case 0x3D5: + crt_controller[crt_controller_idx] = value; + if ((crt_controller_idx == 0x0E) || (crt_controller_idx == 0x0F)) { + //setcursor(((uint16_t)crt_controller[0x0E] << 8) | crt_controller[0x0F]); + //Serial.write(27); Serial.write('['); Serial.print(crt_controller[0x0E] + 1); Serial.write(';'); Serial.print(crt_controller[0x0F] + 1); Serial.write('H'); + } + break; + case 0x3D9: + port3D9 = value; + break; + } + +#ifdef ADVANCED_CLIENT + if ((portnum >= 0x3C0) && (portnum <= 0x3DA)) { + uint8_t chksum; + Serial.write(0xFF); + Serial.write(0x04); + outByte(portnum & 0xFF); chksum = portnum & 0xFF; + outByte(portnum >> 8); chksum += portnum >> 8; + outByte(value); chksum += value; + outByte(chksum); + Serial.write(0xFE); + Serial.write(0x02); + } +#endif + +#ifdef VGA + if ((portnum >= 0x3C0) && (portnum <= 0x3DA)) outVGA(portnum, value); +#endif +} + +uint16_t portin(uint16_t portnum) { +#ifdef VGA + if ((portnum >= 0x3C0) && (portnum <= 0x3DA)) return inVGA(portnum); +#endif +/* uint8_t chksum; + Serial.write(0xFF); + Serial.write(0x07); + outByte(portnum & 0xFF); chksum = portnum & 0xFF; + outByte((portnum >> 8) & 0xFF); chksum += (portnum >> 8) & 0xFF; + outByte(chksum); + Serial.write(0xFE); + Serial.write(0x02);*/ + switch (portnum) { + case 0x20: + case 0x21: //i8259 + return (in8259(portnum)); + case 0x40: + case 0x41: + case 0x42: + case 0x43: //i8253 + return in8253(portnum); + case 0x60: + case 0x64: + return portram[portnum]; + case 0x3D4: + return crt_controller_idx; + break; + case 0x3D5: + return crt_controller[crt_controller_idx]; + break; + case 0x3DA: + port3da ^= 1; + if (!(port3da & 1)) port3da ^= 8; + //port3da = random(256) & 9; + return (port3da); + default: + return (0xFF); + } +} + + diff --git a/MCUME_teensy/teensy8086/ps2.h b/MCUME_teensy/teensy8086/ps2.h new file mode 100755 index 0000000..dc6f578 --- /dev/null +++ b/MCUME_teensy/teensy8086/ps2.h @@ -0,0 +1,89 @@ +uint8_t translatescancode(uint32_t keysym) { + if ((keysym >= 'a') && (keysym <= 'z')) { + keysym -= 0x20; + } + switch (keysym) { + case 0xFF08: return 0x0E; //backspace + case 0xFF09: return 0x0F; //tab + case 0xFF0D: return 0x1C; //enter + case 0xFF1B: return 0x01; //escape + case 0xFF63: return 0x52; //KP 0 / insert + case 0xFFFF: return 0x53; //KP . / delete + case 0xFF55: return 0x49; //pgup + case 0xFF56: return 0x51; //pgdn + case 0xFF50: return 0x47; //home + case 0xFF57: return 0x4F; //end + case 'A': return 0x1E; + case 'B': return 0x30; + case 'C': return 0x2E; + case 'D': return 0x20; + case 'E': return 0x12; + case 'F': return 0x21; + case 'G': return 0x22; + case 'H': return 0x23; + case 'I': return 0x17; + case 'J': return 0x24; + case 'K': return 0x25; + case 'L': return 0x26; + case 'M': return 0x32; + case 'N': return 0x31; + case 'O': return 0x18; + case 'P': return 0x19; + case 'Q': return 0x10; + case 'R': return 0x13; + case 'S': return 0x1F; + case 'T': return 0x14; + case 'U': return 0x16; + case 'V': return 0x2F; + case 'W': return 0x11; + case 'X': return 0x2D; + case 'Y': return 0x15; + case 'Z': return 0x2C; + case '0': case ')': return 0x0B; + case '1': case '!': return 0x02; + case '2': case '@': return 0x03; + case '3': case '#': return 0x04; + case '4': case '$': return 0x05; + case '5': case '%': return 0x06; + case '6': case '^': return 0x07; + case '7': case '&': return 0x08; + case '8': case '*': return 0x09; + case '9': case '(': return 0x0A; + case '`': case '~': return 0x29; + case '-': case '_': return 0x0C; + case '=': case '+': return 0x0D; + case '[': case '{': return 0x1A; + case ']': case '}': return 0x1B; + case '\\': case '|': return 0x2B; + case ';': case ':': return 0x27; + case '\'': case '"': return 0x28; + case ' ': return 0x39; + case ',': case '<': return 0x33; + case '.': case '>': return 0x34; + case '/': case '?': return 0x35; + case 0xFFBE: return 0x3B; //F1 + case 0xFFBF: return 0x3C; //F2 + case 0xFFC0: return 0x3D; //F3 + case 0xFFC1: return 0x3E; //F4 + case 0xFFC2: return 0x3F; //F5 + case 0xFFC3: return 0x40; //F6 + case 0xFFC4: return 0x41; //F7 + case 0xFFC5: return 0x42; //F8 + case 0xFFC6: return 0x43; //F9 + case 0xFFC7: return 0x44; //F10 + case 0xFFC8: return 0x57; //F11 + case 0xFFC9: return 0x58; //F12 + case 0xFFE1: return 0x2A; //left shift + case 0xFFE2: return 0x36; //right shift + case 0xFFE3: case 0xFFE4: return 0x1D; //control + case 0xFFE9: case 0xFFEA: return 0x38; //alt + case 0xFF51: return 0x4B; //left + case 0xFF52: return 0x48; //up + case 0xFF53: return 0x4D; //right + case 0xFF54: return 0x50; //down + } + return 0xFF; +} + + + diff --git a/MCUME_teensy/teensy8086/rom.h b/MCUME_teensy/teensy8086/rom.h new file mode 100644 index 0000000..9f873fd --- /dev/null +++ b/MCUME_teensy/teensy8086/rom.h @@ -0,0 +1,3749 @@ +#include +#ifdef MEGA + const uint8_t BIOS[8192] PROGMEM = { +#else + PROGMEM const uint8_t BIOS[8192] = { +#endif + 0x54, 0x75, 0x72, 0x62, 0x6F, 0x20, 0x58, 0x54, 0x20, 0x42, 0x49, + 0x4F, 0x53, 0x20, 0x76, 0x32, 0x2E, 0x35, 0x20, 0x66, 0x6F, 0x72, + 0x20, 0x38, 0x30, 0x38, 0x38, 0x2F, 0x56, 0x32, 0x30, 0x00, 0xC3, + 0x20, 0x45, 0x47, 0x41, 0x2F, 0x56, 0x47, 0x41, 0x20, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x00, 0xC3, 0x20, 0x50, 0x61, + 0x72, 0x61, 0x6C, 0x6C, 0x65, 0x6C, 0x20, 0x50, 0x6F, 0x72, 0x74, + 0x20, 0x61, 0x74, 0x20, 0x00, 0xC3, 0x20, 0x47, 0x61, 0x6D, 0x65, + 0x20, 0x50, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x74, 0x20, 0x32, 0x30, + 0x31, 0x68, 0x00, 0xB8, 0x40, 0x00, 0x8E, 0xD8, 0xC7, 0x06, 0x72, + 0x00, 0x00, 0x00, 0xFA, 0xFC, 0xB0, 0x00, 0xE6, 0xA0, 0xBA, 0xD8, + 0x03, 0xEE, 0xBA, 0xB8, 0x03, 0xFE, 0xC0, 0xEE, 0xB0, 0x99, 0xE6, + 0x63, 0xB0, 0xA5, 0xE6, 0x61, 0xB0, 0x54, 0xE6, 0x43, 0xB0, 0x12, + 0xE6, 0x41, 0xB0, 0x40, 0xE6, 0x43, 0xB0, 0x00, 0xE6, 0x81, 0xE6, + 0x82, 0xE6, 0x83, 0xE6, 0x0D, 0xB0, 0x58, 0xE6, 0x0B, 0xB0, 0x41, + 0xE6, 0x0B, 0xB0, 0x42, 0xE6, 0x0B, 0xB0, 0x43, 0xE6, 0x0B, 0xB0, + 0xFF, 0xE6, 0x01, 0xE6, 0x01, 0xB0, 0x00, 0xE6, 0x08, 0xE6, 0x0A, + 0xB0, 0x36, 0xE6, 0x43, 0xB0, 0x00, 0xE6, 0x40, 0xE6, 0x40, 0xBA, + 0x13, 0x02, 0xB0, 0x01, 0xEE, 0xB8, 0x40, 0x00, 0x8E, 0xD8, 0x8B, + 0x36, 0x72, 0x00, 0x33, 0xC0, 0x8B, 0xE8, 0x8B, 0xD8, 0xBA, 0xAA, + 0x55, 0xFC, 0x33, 0xFF, 0x8E, 0xC3, 0x26, 0x89, 0x15, 0x26, 0x3B, + 0x15, 0x75, 0x0D, 0xB9, 0x00, 0x20, 0xF3, 0xAB, 0x80, 0xC7, 0x04, + 0x80, 0xFF, 0xA0, 0x72, 0xE7, 0x33, 0xC0, 0x8E, 0xC0, 0xB8, 0x80, + 0x00, 0x8E, 0xD0, 0xBC, 0x00, 0x01, 0x55, 0x53, 0xBD, 0x02, 0x00, + 0xE8, 0x19, 0x19, 0x89, 0x36, 0x72, 0x00, 0x58, 0xB1, 0x06, 0xD3, + 0xE8, 0xA3, 0x13, 0x00, 0x58, 0x73, 0x02, 0x0C, 0x10, 0xA2, 0x15, + 0x00, 0x33, 0xC0, 0x50, 0x50, 0x50, 0x50, 0x50, 0xB8, 0x30, 0x00, + 0x8E, 0xD0, 0xBC, 0x00, 0x01, 0x1E, 0xBB, 0x00, 0xE0, 0x0E, 0x1F, + 0xB4, 0x01, 0xE8, 0xDE, 0x18, 0x1F, 0x74, 0x05, 0x80, 0x0E, 0x15, + 0x00, 0x01, 0xFA, 0xB0, 0x13, 0xE6, 0x20, 0xB0, 0x08, 0xE6, 0x21, + 0xB0, 0x09, 0xE6, 0x21, 0xB0, 0xFF, 0xE6, 0x21, 0x1E, 0x33, 0xC0, + 0x8E, 0xC0, 0x0E, 0x1F, 0xB9, 0x08, 0x00, 0x33, 0xFF, 0xB8, 0x23, + 0xFF, 0xAB, 0x8C, 0xC8, 0xAB, 0xE2, 0xF7, 0xBE, 0xF3, 0xFE, 0xB9, + 0x18, 0x00, 0xA5, 0x8C, 0xC8, 0xAB, 0xE2, 0xFA, 0xB8, 0x00, 0xF6, + 0x8E, 0xD8, 0x33, 0xDB, 0xB4, 0x04, 0x8B, 0xEC, 0x0E, 0xBA, 0x88, + 0xE1, 0x52, 0xBA, 0x90, 0xEA, 0x52, 0xBA, 0x8B, 0x17, 0x52, 0x16, + 0x8B, 0xD4, 0x83, 0xC2, 0x02, 0x52, 0xCB, 0x8B, 0xE5, 0x3A, 0xD6, + 0x74, 0x0C, 0x1F, 0xBF, 0x60, 0x00, 0x33, 0xC0, 0xAB, 0xB8, 0x00, + 0xF6, 0xAB, 0x1E, 0x1F, 0x26, 0xC7, 0x06, 0x08, 0x00, 0x5F, 0xF8, + 0x26, 0xC7, 0x06, 0x14, 0x00, 0x54, 0xFF, 0x26, 0xC7, 0x06, 0x7C, + 0x00, 0x00, 0x00, 0x26, 0xC7, 0x06, 0x7E, 0x00, 0x00, 0x00, 0xBA, + 0x61, 0x00, 0xEC, 0x0C, 0x30, 0xEE, 0x24, 0xCF, 0xEE, 0xB0, 0x80, + 0xE6, 0xA0, 0xB8, 0x30, 0x00, 0xA3, 0x10, 0x00, 0xCD, 0x10, 0xB8, + 0x20, 0x00, 0xA3, 0x10, 0x00, 0xCD, 0x10, 0xE4, 0x62, 0x24, 0x0F, + 0x8A, 0xE0, 0xB0, 0xAD, 0xEE, 0xE4, 0x62, 0xB1, 0x04, 0xD2, 0xE0, + 0x0A, 0xC4, 0xB4, 0x00, 0xA3, 0x10, 0x00, 0x24, 0x30, 0x75, 0x09, + 0xB8, 0x53, 0xFF, 0x26, 0xA3, 0x40, 0x00, 0xEB, 0x03, 0xE8, 0xCC, + 0x17, 0xB0, 0x08, 0xEE, 0xB9, 0x56, 0x29, 0xE2, 0xFE, 0xB0, 0xC8, + 0xEE, 0x34, 0x80, 0xEE, 0xB8, 0x1E, 0x00, 0xA3, 0x1A, 0x00, 0xA3, + 0x1C, 0x00, 0xA3, 0x80, 0x00, 0x05, 0x20, 0x00, 0xA3, 0x82, 0x00, + 0xB8, 0x14, 0x14, 0xA3, 0x78, 0x00, 0xA3, 0x7A, 0x00, 0xB8, 0x01, + 0x01, 0xA3, 0x7C, 0x00, 0xA3, 0x7E, 0x00, 0xBE, 0x13, 0xF9, 0x33, + 0xFF, 0xB9, 0x03, 0x00, 0x2E, 0x8B, 0x14, 0xB0, 0xAA, 0xEE, 0xB0, + 0xFF, 0xE6, 0xC0, 0xEC, 0x3C, 0xAA, 0x75, 0x05, 0x89, 0x55, 0x08, + 0x47, 0x47, 0x46, 0x46, 0xE2, 0xE8, 0x8B, 0xC7, 0xB1, 0x03, 0xD2, + 0xC8, 0xA2, 0x11, 0x00, 0x33, 0xFF, 0xBA, 0xFB, 0x03, 0xB0, 0x1A, + 0xEE, 0xB0, 0xFF, 0xE6, 0xC0, 0xEC, 0x3C, 0x1A, 0x75, 0x06, 0xC7, + 0x05, 0xF8, 0x03, 0x47, 0x47, 0xBA, 0xFB, 0x02, 0xB0, 0x1A, 0xEE, + 0xB0, 0xFF, 0xE6, 0xC0, 0xEC, 0x3C, 0x1A, 0x75, 0x06, 0xC7, 0x05, + 0xF8, 0x02, 0x47, 0x47, 0x8B, 0xC7, 0x08, 0x06, 0x11, 0x00, 0xB9, + 0x64, 0x00, 0xBA, 0x01, 0x02, 0xEC, 0x3C, 0xFF, 0x75, 0x05, 0x49, + 0xE3, 0x07, 0xEB, 0xF6, 0x80, 0x0E, 0x11, 0x00, 0x10, 0xE8, 0x65, + 0x04, 0xBA, 0x00, 0xC0, 0x8B, 0x1E, 0x72, 0x00, 0x53, 0x1E, 0xE4, + 0x61, 0x34, 0x0C, 0xE6, 0x61, 0x8E, 0xDA, 0xEB, 0x13, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE9, 0x99, 0x15, 0x33, 0xDB, 0x8B, 0x07, 0x3D, + 0x55, 0xAA, 0x75, 0x36, 0xB8, 0x40, 0x00, 0x8E, 0xC0, 0xB4, 0x00, + 0x8A, 0x47, 0x02, 0xB1, 0x05, 0xD3, 0xE0, 0x03, 0xD0, 0xB1, 0x04, + 0xD3, 0xE0, 0x8B, 0xC8, 0xE8, 0x27, 0x17, 0x75, 0x15, 0x52, 0x26, + 0xC7, 0x06, 0x67, 0x00, 0x03, 0x00, 0x26, 0x8C, 0x1E, 0x69, 0x00, + 0x26, 0xFF, 0x1E, 0x67, 0x00, 0x5A, 0xEB, 0x0A, 0x26, 0x80, 0x0E, + 0x15, 0x00, 0x20, 0x81, 0xC2, 0x80, 0x00, 0x81, 0xFA, 0x00, 0xF6, + 0x7C, 0xA0, 0x1F, 0x5B, 0x89, 0x1E, 0x72, 0x00, 0xE4, 0x21, 0x24, + 0xBC, 0xE6, 0x21, 0xB4, 0x12, 0xBB, 0x10, 0xFF, 0xCD, 0x10, 0x80, + 0xFF, 0xFF, 0x74, 0x07, 0x80, 0x26, 0x10, 0x00, 0xCF, 0xEB, 0x09, + 0xA0, 0x49, 0x00, 0xE8, 0xDF, 0x0B, 0xE8, 0x90, 0x16, 0xB4, 0x01, + 0xB5, 0xF0, 0xCD, 0x10, 0xE8, 0xDB, 0x01, 0xC6, 0x06, 0x96, 0x00, + 0x10, 0x81, 0x3E, 0x72, 0x00, 0x34, 0x12, 0x1E, 0x07, 0x0E, 0x1F, + 0x75, 0x05, 0xB7, 0xFD, 0xE9, 0x28, 0x01, 0xBE, 0x00, 0xE0, 0xE8, + 0x3E, 0x16, 0xBE, 0x5C, 0xE5, 0xE8, 0x20, 0x16, 0x26, 0xF6, 0x06, + 0x15, 0x00, 0xFF, 0x74, 0x3E, 0xB8, 0x00, 0x03, 0xE8, 0x1D, 0x16, + 0xBE, 0xF9, 0xE7, 0xE8, 0x0C, 0x16, 0x26, 0xA0, 0x15, 0x00, 0xE8, + 0xE2, 0x15, 0xBE, 0x42, 0xF9, 0xE8, 0xFF, 0x15, 0xB3, 0x02, 0xE8, + 0x60, 0x16, 0xE8, 0x58, 0x16, 0x50, 0xE8, 0xE8, 0x15, 0x58, 0x3C, + 0x59, 0x74, 0x09, 0x3C, 0x79, 0x74, 0x05, 0xEA, 0x5B, 0xE0, 0x00, + 0xF0, 0x26, 0xC6, 0x06, 0x15, 0x00, 0x00, 0xE8, 0x75, 0x01, 0xEB, + 0xAE, 0xB8, 0x00, 0x03, 0xE8, 0xDF, 0x15, 0xE8, 0x84, 0x01, 0xBE, + 0xB1, 0xE5, 0xB8, 0x07, 0x04, 0xE8, 0xD3, 0x15, 0x26, 0xA0, 0x49, + 0x00, 0x3C, 0x07, 0x74, 0x10, 0x26, 0xA0, 0x10, 0x00, 0x24, 0x30, + 0x75, 0x05, 0xBE, 0x20, 0xE0, 0xEB, 0x03, 0xBE, 0x36, 0xF0, 0xE8, + 0xAD, 0x15, 0xBB, 0x07, 0x05, 0x26, 0xA0, 0x11, 0x00, 0x50, 0xB1, + 0x06, 0xD2, 0xC8, 0x24, 0x03, 0x74, 0x09, 0xBD, 0x08, 0x00, 0xBE, + 0x33, 0xE0, 0xE8, 0xC9, 0x00, 0x58, 0x50, 0xBE, 0x19, 0xF9, 0xD0, + 0xC8, 0x24, 0x03, 0x74, 0x05, 0x33, 0xED, 0xE8, 0xB9, 0x00, 0x58, + 0xBE, 0x47, 0xE0, 0xA8, 0x10, 0x74, 0x0A, 0x8B, 0xC3, 0xE8, 0x82, + 0x15, 0xE8, 0x74, 0x15, 0xFE, 0xC7, 0xE8, 0xF0, 0x00, 0x72, 0x0D, + 0x8B, 0xC3, 0xE8, 0x73, 0x15, 0xFE, 0xC7, 0xBE, 0xC2, 0xFF, 0xE8, + 0x60, 0x15, 0xFE, 0xCF, 0xB3, 0x07, 0x8B, 0xC3, 0xE8, 0x62, 0x15, + 0xBE, 0xA2, 0xF0, 0xE8, 0x51, 0x15, 0xFE, 0xC7, 0xFE, 0xC7, 0x32, + 0xDB, 0x8B, 0xC3, 0xE8, 0x51, 0x15, 0xBE, 0x9C, 0xE5, 0xE8, 0x40, + 0x15, 0x06, 0x26, 0x8B, 0x2E, 0x13, 0x00, 0x4D, 0x4D, 0xBE, 0x02, + 0x00, 0x8B, 0xD6, 0xB8, 0x80, 0x00, 0x8E, 0xC0, 0x80, 0xC3, 0x0D, + 0x53, 0x58, 0x50, 0x8C, 0xC1, 0x83, 0xFD, 0x01, 0x74, 0x09, 0xF7, + 0xC1, 0xFF, 0x01, 0x74, 0x02, 0x32, 0xED, 0x4A, 0xE8, 0x20, 0x15, + 0xE8, 0x69, 0x00, 0x42, 0xE8, 0xA5, 0x15, 0x72, 0x2D, 0x4D, 0x75, + 0xDF, 0x5B, 0x07, 0xE8, 0x13, 0x13, 0xB3, 0x01, 0xE8, 0x65, 0x15, + 0xE8, 0x95, 0x00, 0x33, 0xC0, 0x8E, 0xD8, 0xC7, 0x06, 0x72, 0x04, + 0x34, 0x12, 0xB4, 0x01, 0xB9, 0x0C, 0x0B, 0x80, 0x3E, 0x49, 0x04, + 0x07, 0x74, 0x03, 0xB9, 0x07, 0x06, 0xCD, 0x10, 0xCD, 0x19, 0x4D, + 0x5B, 0x07, 0x26, 0x80, 0x0E, 0x15, 0x00, 0x02, 0xFE, 0xC7, 0xFE, + 0xC7, 0x32, 0xDB, 0x8B, 0xC3, 0xE9, 0xB6, 0xFE, 0x8A, 0xD0, 0x8B, + 0xC3, 0xE8, 0xCF, 0x14, 0x56, 0xE8, 0xC0, 0x14, 0x26, 0x8B, 0x46, + 0x00, 0xE8, 0xA3, 0x14, 0xBE, 0x4E, 0xFF, 0xE8, 0xB3, 0x14, 0x5E, + 0x45, 0x45, 0xFE, 0xC7, 0xFE, 0xCA, 0x75, 0xE1, 0xC3, 0xF8, 0x8A, + 0xC2, 0xFE, 0xC0, 0x27, 0x8A, 0xD0, 0x73, 0x07, 0x8A, 0xC6, 0x14, + 0x00, 0x27, 0x8A, 0xF0, 0x80, 0xFD, 0x00, 0x74, 0x13, 0x8A, 0xC6, + 0xE8, 0x5B, 0x14, 0x8A, 0xC2, 0xB1, 0x04, 0xD2, 0xC8, 0xE8, 0x52, + 0x14, 0x8A, 0xC2, 0xE8, 0x4D, 0x14, 0xC3, 0xBA, 0x41, 0x02, 0xFA, + 0xEC, 0xFB, 0x3C, 0x99, 0x76, 0x0C, 0xBA, 0x41, 0x03, 0xFA, 0xEC, + 0xFB, 0x3C, 0x99, 0x76, 0x02, 0xF9, 0xC3, 0xF8, 0xC3, 0xBA, 0x4F, + 0x18, 0x33, 0xC9, 0xB8, 0x00, 0x06, 0xB7, 0x07, 0xCD, 0x10, 0xB4, + 0x02, 0x33, 0xD2, 0xB7, 0x00, 0xCD, 0x10, 0xB8, 0x00, 0x05, 0xCD, + 0x10, 0xC3, 0xBE, 0xE1, 0xF7, 0xE8, 0x47, 0x14, 0xE8, 0xB7, 0x01, + 0xE8, 0x41, 0x14, 0xBE, 0x00, 0xF8, 0x26, 0xF6, 0x06, 0x10, 0x00, + 0x02, 0x74, 0x03, 0xBE, 0x08, 0xF8, 0xE8, 0x30, 0x14, 0xC3, 0x50, + 0x8A, 0xC4, 0xE8, 0x06, 0x14, 0xE9, 0x16, 0x14, 0x0D, 0x0A, 0x42, + 0x49, 0x4F, 0x53, 0x20, 0x62, 0x79, 0x20, 0x59, 0x2E, 0x20, 0x4D, + 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x4A, 0x2E, + 0x20, 0x50, 0x65, 0x74, 0x72, 0x6F, 0x73, 0x6B, 0x79, 0x2C, 0x20, + 0x41, 0x72, 0x64, 0x75, 0x69, 0x6E, 0x6F, 0x38, 0x36, 0x20, 0x62, + 0x79, 0x20, 0x4D, 0x69, 0x6B, 0x65, 0x20, 0x43, 0x68, 0x61, 0x6D, + 0x62, 0x65, 0x72, 0x73, 0x00, 0x00, 0x54, 0x65, 0x73, 0x74, 0x69, + 0x6E, 0x67, 0x20, 0x52, 0x41, 0x4D, 0x3A, 0x20, 0x20, 0x20, 0x20, + 0x4B, 0x20, 0x4F, 0x4B, 0x00, 0xC3, 0x20, 0x4D, 0x6F, 0x6E, 0x6F, + 0x2F, 0x48, 0x65, 0x72, 0x63, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x00, 0x49, 0x6E, 0x73, + 0x65, 0x72, 0x74, 0x20, 0x42, 0x4F, 0x4F, 0x54, 0x20, 0x64, 0x69, + 0x73, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x41, 0x3A, 0x0D, 0x0A, 0x50, + 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6B, 0x65, + 0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x79, 0x0D, 0x0A, 0x0A, 0x00, 0xFF, 0xFF, 0xFB, 0x33, 0xC0, 0x8E, + 0xD8, 0xC7, 0x06, 0x78, 0x00, 0xC7, 0xEF, 0x8C, 0x0E, 0x7A, 0x00, + 0xB8, 0x06, 0x00, 0x50, 0x33, 0xD2, 0x3C, 0x02, 0x77, 0x03, 0x80, + 0xCA, 0x80, 0x52, 0xB4, 0x00, 0xCD, 0x13, 0x5A, 0x72, 0x17, 0x33, + 0xC0, 0x8E, 0xC0, 0xB8, 0x01, 0x02, 0xBB, 0x00, 0x7C, 0xB1, 0x01, + 0xB5, 0x00, 0xCD, 0x13, 0x72, 0x05, 0xEA, 0x00, 0x7C, 0x00, 0x00, + 0x58, 0xFE, 0xC8, 0x75, 0xD2, 0x0A, 0xE4, 0x75, 0x10, 0x0E, 0x1F, + 0xBE, 0xCA, 0xE5, 0xE8, 0x36, 0x13, 0xE8, 0x94, 0x13, 0xB8, 0x08, + 0xFF, 0xEB, 0xBE, 0x33, 0xC0, 0x8E, 0xD8, 0xA1, 0x62, 0x00, 0x3D, + 0x00, 0xF6, 0x75, 0xE4, 0xCD, 0x18, 0x3C, 0xE0, 0x75, 0x10, 0x80, + 0xCB, 0x02, 0x59, 0x50, 0x55, 0x8B, 0xEC, 0xC7, 0x46, 0x02, 0xB3, + 0xE9, 0x5D, 0xEB, 0x54, 0x3C, 0x57, 0x74, 0x55, 0x3C, 0x58, 0x74, + 0x51, 0xF6, 0xC3, 0x02, 0x74, 0x47, 0x80, 0xE3, 0xFD, 0x3C, 0xAA, + 0x75, 0x06, 0x8A, 0xC7, 0x0C, 0x80, 0x8A, 0xE0, 0x8A, 0xF8, 0x8A, + 0xC8, 0x80, 0xE1, 0x7F, 0x80, 0xF9, 0x2A, 0x74, 0xCD, 0x80, 0xF9, + 0x36, 0x74, 0xC8, 0x3C, 0x35, 0x74, 0x25, 0x3C, 0x1C, 0x74, 0x21, + 0x3C, 0x1D, 0x74, 0x1D, 0x3C, 0x38, 0x74, 0x19, 0x3C, 0x46, 0x74, + 0x15, 0xE8, 0x88, 0x08, 0xE8, 0xFA, 0x04, 0x72, 0x0D, 0xB0, 0xE0, + 0x59, 0x50, 0x55, 0x8B, 0xEC, 0xC7, 0x46, 0x02, 0xA4, 0xEB, 0x5D, + 0x89, 0x1E, 0x96, 0x00, 0xC3, 0x80, 0xC4, 0x2E, 0xA0, 0x17, 0x00, + 0xA8, 0x08, 0x75, 0x0A, 0xA8, 0x04, 0x75, 0x09, 0xA8, 0x03, 0x75, + 0x08, 0xEB, 0x09, 0x80, 0xC4, 0x02, 0x80, 0xC4, 0x02, 0x80, 0xC4, + 0x02, 0x32, 0xC0, 0xEB, 0xCF, 0xFF, 0xFF, 0xE9, 0x0B, 0xFF, 0x32, + 0xC0, 0xB0, 0x40, 0xF6, 0xE0, 0x74, 0x04, 0xBE, 0xEB, 0xF7, 0xC3, + 0xBE, 0xF6, 0xF7, 0xC3, 0xDB, 0xE3, 0xBE, 0x00, 0x02, 0xC6, 0x44, + 0x01, 0x00, 0xD9, 0x3C, 0x8A, 0x64, 0x01, 0x80, 0xFC, 0x03, 0x75, + 0x06, 0x80, 0x0E, 0x10, 0x00, 0x02, 0xC3, 0x80, 0x26, 0x10, 0x00, + 0xFD, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, 0x04, 0x00, 0x03, + 0x80, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0xFB, 0x1E, 0x52, 0x56, 0x57, 0x51, 0x53, 0xBB, 0x40, 0x00, + 0x8E, 0xDB, 0x8B, 0xFA, 0x8B, 0xDA, 0xD1, 0xE3, 0x8B, 0x17, 0x0B, + 0xD2, 0x74, 0x10, 0x0A, 0xE4, 0x74, 0x13, 0xFE, 0xCC, 0x74, 0x3A, + 0xFE, 0xCC, 0x74, 0x53, 0xFE, 0xCC, 0x74, 0x63, 0x5B, 0x59, 0x5F, + 0x5E, 0x5A, 0x1F, 0xCF, 0x50, 0x8A, 0xD8, 0x83, 0xC2, 0x03, 0xB0, + 0x80, 0xEE, 0xB1, 0x04, 0xD2, 0xC3, 0x83, 0xE3, 0x0E, 0x2E, 0x8B, + 0x87, 0x29, 0xE7, 0x83, 0xEA, 0x03, 0xEE, 0x42, 0x8A, 0xC4, 0xEE, + 0x58, 0x42, 0x42, 0x24, 0x1F, 0xEE, 0xB0, 0x00, 0x4A, 0x4A, 0xEE, + 0x4A, 0xEB, 0x31, 0x50, 0xB0, 0x03, 0xB7, 0x30, 0xB3, 0x20, 0xE8, + 0x48, 0x00, 0x75, 0x09, 0x83, 0xEA, 0x05, 0x59, 0x8A, 0xC1, 0xEE, + 0xEB, 0xB9, 0x59, 0x8A, 0xC1, 0x80, 0xCC, 0x80, 0xEB, 0xB1, 0xB0, + 0x01, 0xB7, 0x20, 0xB3, 0x01, 0xE8, 0x2C, 0x00, 0x75, 0xF0, 0x80, + 0xE4, 0x1E, 0x83, 0xEA, 0x05, 0xEC, 0xEB, 0x9D, 0x83, 0xC2, 0x05, + 0xEC, 0x8A, 0xE0, 0x42, 0xEC, 0xEB, 0x93, 0x8A, 0x5D, 0x7C, 0x2B, + 0xC9, 0xEC, 0x8A, 0xE0, 0x22, 0xC7, 0x3A, 0xC7, 0x74, 0x08, 0xE2, + 0xF5, 0xFE, 0xCB, 0x75, 0xEF, 0x0A, 0xFF, 0xC3, 0x83, 0xC2, 0x04, + 0xEE, 0x42, 0x42, 0x53, 0xE8, 0xDF, 0xFF, 0x5B, 0x75, 0x06, 0x4A, + 0x8A, 0xFB, 0xE8, 0xD6, 0xFF, 0xC3, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x6D, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0x00, 0xFA, + 0x8B, 0x1E, 0x1A, 0x00, 0x3B, 0x1E, 0x1C, 0x00, 0x8B, 0x07, 0xFB, + 0x5B, 0x1F, 0xCA, 0x02, 0x00, 0xA1, 0x17, 0x00, 0xEB, 0x2E, 0x8B, + 0xC1, 0xE8, 0xBA, 0x03, 0xB0, 0x00, 0x73, 0x25, 0xFE, 0xC0, 0xEB, + 0x21, 0xFF, 0xFF, 0xFF, 0xFB, 0x1E, 0x53, 0xBB, 0x40, 0x00, 0x8E, + 0xDB, 0x80, 0xFC, 0x05, 0x74, 0xE3, 0x8B, 0xD8, 0x80, 0xE4, 0x0F, + 0x0A, 0xE4, 0x74, 0x0B, 0xFE, 0xCC, 0x74, 0xC0, 0xFE, 0xCC, 0x74, + 0xCD, 0x5B, 0x1F, 0xCF, 0xFA, 0xA1, 0x1A, 0x00, 0x3B, 0x06, 0x1C, + 0x00, 0x75, 0x03, 0xFB, 0xEB, 0xF3, 0xF6, 0xC7, 0x10, 0x9C, 0x93, + 0x8B, 0x07, 0x9D, 0x75, 0x06, 0x3C, 0xE0, 0x75, 0x02, 0x32, 0xC0, + 0x43, 0x43, 0x89, 0x1E, 0x1A, 0x00, 0x3B, 0x1E, 0x82, 0x00, 0x75, + 0xD4, 0x8B, 0x1E, 0x80, 0x00, 0x89, 0x1E, 0x1A, 0x00, 0xEB, 0xCA, + 0xFF, 0xFF, 0xFF, 0x00, 0x37, 0x2E, 0x20, 0x2F, 0x30, 0x31, 0x21, + 0x32, 0x33, 0x34, 0x35, 0x22, 0x36, 0x38, 0x3E, 0x11, 0x17, 0x05, + 0x12, 0x14, 0x19, 0x15, 0x09, 0x0F, 0x10, 0x39, 0x3A, 0x3B, 0x84, + 0x01, 0x13, 0x04, 0x06, 0x07, 0x08, 0x0A, 0x0B, 0x0C, 0x3F, 0x40, + 0x41, 0x82, 0x3C, 0x1A, 0x18, 0x03, 0x16, 0x02, 0x0E, 0x0D, 0x42, + 0x43, 0x44, 0x81, 0x3D, 0x88, 0x2D, 0xC0, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0xA0, 0x90, 0x32, 0x36, 0x2D, + 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0x20, + 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x30, 0x3D, 0x1B, 0x08, + 0x5B, 0x5D, 0x0D, 0x5C, 0x2A, 0x09, 0x3B, 0x27, 0x60, 0x2C, 0x2E, + 0x2F, 0x40, 0x5E, 0x5F, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, + 0xDB, 0xDC, 0xDD, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x2A, 0x28, + 0x29, 0x2B, 0x1B, 0x08, 0x7B, 0x7D, 0x0D, 0x7C, 0x05, 0x8F, 0x3A, + 0x22, 0x7E, 0x3C, 0x3E, 0x3F, 0x03, 0x1E, 0x1F, 0xDE, 0xDF, 0xE0, + 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0x20, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x1B, 0x7F, 0x1B, 0x1D, 0x0A, + 0x1C, 0xF2, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xF9, 0xFD, + 0x02, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, + 0x20, 0xF8, 0xFA, 0xFB, 0xFC, 0xFE, 0xFF, 0x00, 0x01, 0x03, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x37, 0x38, 0x39, 0x2D, 0x34, 0x35, 0x36, 0x2B, 0x31, + 0x32, 0x33, 0x30, 0x2E, 0xF7, 0x05, 0x04, 0x05, 0xF3, 0x05, 0xF4, + 0x05, 0xF5, 0x05, 0xF6, 0x05, 0x05, 0xC7, 0xC8, 0xC9, 0x2D, 0xCB, + 0x05, 0xCD, 0x2B, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xFB, 0x50, 0x53, + 0x51, 0x52, 0x56, 0x57, 0x1E, 0xFC, 0xB8, 0x40, 0x00, 0x8E, 0xD8, + 0xE4, 0x60, 0x50, 0xE4, 0x61, 0x50, 0x0C, 0x80, 0xE6, 0x61, 0x58, + 0xE6, 0x61, 0x58, 0x8A, 0xE0, 0x8B, 0x1E, 0x96, 0x00, 0xE8, 0xB6, + 0xFC, 0x3C, 0xFF, 0x75, 0x0F, 0xE9, 0xF6, 0x01, 0xB0, 0x20, 0xE6, + 0x20, 0x1F, 0x5F, 0x5E, 0x5A, 0x59, 0x5B, 0x58, 0xCF, 0x24, 0x7F, + 0x3C, 0x46, 0x76, 0x03, 0xE9, 0x22, 0x01, 0xBB, 0x85, 0xE8, 0x2E, + 0xD7, 0x0A, 0xC0, 0x78, 0x06, 0x0A, 0xE4, 0x78, 0xDE, 0xEB, 0x4D, + 0x24, 0x7F, 0x0A, 0xE4, 0x78, 0x21, 0x3C, 0x10, 0x73, 0x06, 0x08, + 0x06, 0x17, 0x00, 0xEB, 0xCC, 0xF6, 0x06, 0x17, 0x00, 0x04, 0x75, + 0x36, 0x84, 0x06, 0x18, 0x00, 0x75, 0xBF, 0x08, 0x06, 0x18, 0x00, + 0x30, 0x06, 0x17, 0x00, 0xEB, 0xB5, 0x3C, 0x10, 0x73, 0x1A, 0xF6, + 0xD0, 0x20, 0x06, 0x17, 0x00, 0x3C, 0xF7, 0x75, 0xA7, 0xA0, 0x19, + 0x00, 0xB4, 0x00, 0x88, 0x26, 0x19, 0x00, 0x3A, 0xC4, 0x74, 0x9A, + 0xE9, 0x95, 0x01, 0xF6, 0xD0, 0x20, 0x06, 0x18, 0x00, 0xEB, 0x8F, + 0xF6, 0x06, 0x18, 0x00, 0x08, 0x74, 0x0D, 0x80, 0xFC, 0x45, 0x74, + 0x05, 0x80, 0x26, 0x18, 0x00, 0xF7, 0xE9, 0x7B, 0xFF, 0x8A, 0x16, + 0x17, 0x00, 0xF6, 0xC2, 0x08, 0x75, 0x1D, 0xF6, 0xC2, 0x04, 0x75, + 0x2B, 0xF6, 0xC2, 0x03, 0x75, 0x7E, 0x3C, 0x1A, 0x77, 0x05, 0x04, + 0x60, 0xE9, 0x16, 0x01, 0xBB, 0xCC, 0xE8, 0x2C, 0x20, 0x2E, 0xD7, + 0xE9, 0x0C, 0x01, 0x3C, 0x1A, 0x77, 0x05, 0xB0, 0x00, 0xE9, 0x3D, + 0x01, 0xBB, 0x3B, 0xE9, 0x2C, 0x20, 0x2E, 0xD7, 0xE9, 0xF9, 0x00, + 0x80, 0xFC, 0x46, 0x75, 0x15, 0xC6, 0x06, 0x71, 0x00, 0x80, 0xA1, + 0x80, 0x00, 0xA3, 0x1C, 0x00, 0xA3, 0x1A, 0x00, 0xCD, 0x1B, 0x2B, + 0xC0, 0xE9, 0xF1, 0x00, 0x80, 0xFC, 0x45, 0x75, 0x21, 0x80, 0x0E, + 0x18, 0x00, 0x08, 0xB0, 0x20, 0xE6, 0x20, 0x80, 0x3E, 0x49, 0x00, + 0x07, 0x74, 0x07, 0xBA, 0xD8, 0x03, 0xA0, 0x65, 0x00, 0xEE, 0xF6, + 0x06, 0x18, 0x00, 0x08, 0x75, 0xF9, 0xE9, 0x06, 0xFF, 0x80, 0xFC, + 0x03, 0x75, 0x05, 0xB0, 0x00, 0xE9, 0xE9, 0x00, 0x3C, 0x1A, 0x76, + 0xF9, 0xBB, 0x16, 0xE9, 0x2C, 0x20, 0x2E, 0xD7, 0xE9, 0xA1, 0x00, + 0x80, 0xFC, 0x37, 0x75, 0x09, 0xB0, 0x20, 0xE6, 0x20, 0xCD, 0x05, + 0xE9, 0xE0, 0xFE, 0x3C, 0x1A, 0x77, 0x05, 0x04, 0x40, 0xE9, 0x8A, + 0x00, 0xBB, 0xF1, 0xE8, 0x2C, 0x20, 0x2E, 0xD7, 0xE9, 0x80, 0x00, + 0x2C, 0x47, 0x8A, 0x1E, 0x17, 0x00, 0xF6, 0xC3, 0x08, 0x75, 0x18, + 0xF6, 0xC3, 0x04, 0x75, 0x50, 0xF6, 0xC3, 0x20, 0x74, 0x07, 0xF6, + 0xC3, 0x03, 0x75, 0x51, 0xEB, 0x5B, 0xF6, 0xC3, 0x03, 0x74, 0x4A, + 0xEB, 0x54, 0x0A, 0xE4, 0x78, 0x36, 0xF6, 0x06, 0x17, 0x00, 0x04, + 0x74, 0x16, 0x80, 0xFC, 0x53, 0x75, 0x09, 0xC7, 0x06, 0x72, 0x00, + 0x34, 0x12, 0xE9, 0x40, 0xF5, 0x80, 0xFC, 0x4A, 0x75, 0x03, 0xE8, + 0xD1, 0x00, 0xBB, 0x60, 0xE9, 0x2E, 0xD7, 0x3C, 0x30, 0x72, 0x10, + 0x2C, 0x30, 0x8A, 0xD8, 0xA0, 0x19, 0x00, 0xB4, 0x0A, 0xF6, 0xE4, + 0x02, 0xC3, 0xA2, 0x19, 0x00, 0xE9, 0x69, 0xFE, 0x0A, 0xE4, 0x78, + 0xF9, 0xBB, 0x6D, 0xE9, 0x2E, 0xD7, 0xEB, 0x15, 0xE8, 0x5D, 0x00, + 0x72, 0xED, 0xBB, 0x7A, 0xE9, 0x2E, 0xD7, 0xEB, 0x09, 0x0A, 0xE4, + 0x78, 0xE2, 0xBB, 0x60, 0xE9, 0x2E, 0xD7, 0x3C, 0x05, 0x74, 0x40, + 0x3C, 0x04, 0x77, 0x04, 0x0C, 0x80, 0xEB, 0x06, 0xA8, 0x80, 0x74, + 0x06, 0x24, 0x7F, 0x8A, 0xE0, 0xB0, 0x00, 0xF6, 0x06, 0x17, 0x00, + 0x40, 0x74, 0x1D, 0xF6, 0x06, 0x17, 0x00, 0x03, 0x74, 0x0C, 0x3C, + 0x41, 0x72, 0x12, 0x3C, 0x5A, 0x77, 0x0E, 0x04, 0x20, 0xEB, 0x0A, + 0x3C, 0x61, 0x72, 0x06, 0x3C, 0x7A, 0x77, 0x02, 0x2C, 0x20, 0xE8, + 0x36, 0x00, 0x73, 0x05, 0xB3, 0x01, 0xE8, 0x3A, 0x0E, 0xE9, 0x02, + 0xFE, 0xB4, 0x38, 0xEB, 0xEF, 0x80, 0xFC, 0xD2, 0x75, 0x07, 0x80, + 0x26, 0x18, 0x00, 0x7F, 0xF9, 0xC3, 0x0A, 0xE4, 0x78, 0xFA, 0x80, + 0xFC, 0x52, 0x75, 0x11, 0xF6, 0x06, 0x18, 0x00, 0x80, 0x75, 0x0A, + 0x80, 0x36, 0x17, 0x00, 0x80, 0x80, 0x0E, 0x18, 0x00, 0x80, 0xF8, + 0xC3, 0x8B, 0x1E, 0x1C, 0x00, 0x8B, 0xFB, 0x43, 0x43, 0x3B, 0x1E, + 0x82, 0x00, 0x75, 0x04, 0x8B, 0x1E, 0x80, 0x00, 0x3B, 0x1E, 0x1A, + 0x00, 0x75, 0x02, 0xF9, 0xC3, 0x89, 0x05, 0x89, 0x1E, 0x1C, 0x00, + 0xF8, 0xC3, 0x50, 0x53, 0x51, 0xE4, 0x61, 0x34, 0x0C, 0xE6, 0x61, + 0xBB, 0x89, 0x0F, 0x24, 0x04, 0x74, 0x03, 0xBB, 0x2E, 0x05, 0xB0, + 0xB6, 0xE6, 0x43, 0x8B, 0xC3, 0xE6, 0x42, 0x8A, 0xC4, 0xE6, 0x42, + 0xE4, 0x61, 0x50, 0x0C, 0x03, 0xE6, 0x61, 0xB9, 0x00, 0x20, 0xE2, + 0xFE, 0x58, 0xE6, 0x61, 0x59, 0x5B, 0x58, 0xC3, 0x4E, 0x6F, 0x20, + 0x52, 0x4F, 0x4D, 0x20, 0x42, 0x41, 0x53, 0x49, 0x43, 0x2C, 0x20, + 0x62, 0x6F, 0x6F, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, + 0x6D, 0x20, 0x64, 0x69, 0x73, 0x6B, 0x2E, 0x2E, 0x2E, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x55, 0x56, 0x57, 0x1E, 0x06, 0x53, + 0x8B, 0xF8, 0x33, 0xC0, 0x8E, 0xD8, 0xC4, 0x36, 0x78, 0x00, 0xB8, + 0x40, 0x00, 0x8E, 0xD8, 0xBB, 0x05, 0x00, 0x26, 0x8B, 0x00, 0x50, + 0x4B, 0x4B, 0x26, 0x8B, 0x00, 0x50, 0x86, 0xCE, 0x86, 0xD1, 0x52, + 0x51, 0x57, 0x8B, 0xEC, 0xE8, 0x22, 0x00, 0x26, 0x8A, 0x64, 0x02, + 0x88, 0x26, 0x40, 0x00, 0x8A, 0x26, 0x41, 0x00, 0x80, 0xFC, 0x01, + 0xF5, 0x5B, 0x59, 0x5A, 0x86, 0xD1, 0x86, 0xCE, 0x5B, 0x5B, 0x5B, + 0x07, 0x1F, 0x5F, 0x5E, 0x5D, 0xCA, 0x02, 0x00, 0x8A, 0x46, 0x01, + 0x0A, 0xC0, 0x74, 0x1B, 0xFE, 0xC8, 0x74, 0x13, 0x80, 0x7E, 0x02, + 0x03, 0x77, 0x04, 0x3C, 0x05, 0x76, 0x06, 0xC6, 0x06, 0x41, 0x00, + 0x01, 0xC3, 0xE9, 0x81, 0x00, 0xA0, 0x41, 0x00, 0xC3, 0xBA, 0xF2, + 0x03, 0xFA, 0x80, 0x26, 0x3F, 0x00, 0x0F, 0xA0, 0x3F, 0x00, 0xB1, + 0x04, 0xD2, 0xE0, 0xA8, 0x20, 0x75, 0x0C, 0xA8, 0x40, 0x75, 0x06, + 0xA8, 0x80, 0x74, 0x06, 0xFE, 0xC0, 0xFE, 0xC0, 0xFE, 0xC0, 0xC6, + 0x06, 0x3E, 0x00, 0x00, 0xC6, 0x06, 0x41, 0x00, 0x00, 0x0C, 0x08, + 0xEE, 0x0C, 0x04, 0xEE, 0xFB, 0xE8, 0xB3, 0x01, 0xE8, 0x66, 0x02, + 0xA0, 0x42, 0x00, 0x3C, 0xC0, 0x74, 0x07, 0xC6, 0x06, 0x41, 0x00, + 0x20, 0xEB, 0x12, 0xB0, 0x03, 0xE8, 0x7B, 0x02, 0x26, 0x8A, 0x04, + 0xE8, 0x75, 0x02, 0x26, 0x8A, 0x44, 0x01, 0xE8, 0x6E, 0x02, 0xC3, + 0x03, 0x00, 0xE6, 0xC5, 0xE6, 0x4D, 0x00, 0x00, 0x46, 0x4A, 0x42, + 0x4A, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x02, 0x04, 0x08, + 0x80, 0x20, 0x10, 0x04, 0x02, 0x01, 0x04, 0x10, 0x08, 0x04, 0x03, + 0x02, 0x20, 0xFA, 0xC6, 0x06, 0x41, 0x00, 0x00, 0x8A, 0x46, 0x01, + 0xB4, 0x00, 0x8B, 0xF8, 0xE6, 0x0C, 0x2E, 0x8A, 0x85, 0x2C, 0xED, + 0xE6, 0x0B, 0x8B, 0x46, 0x0C, 0xB1, 0x04, 0xD3, 0xC0, 0x8A, 0xE8, + 0x80, 0xE5, 0x0F, 0x24, 0xF0, 0x03, 0x46, 0x0A, 0x80, 0xD5, 0x00, + 0x8B, 0xD0, 0xE6, 0x04, 0x8A, 0xC4, 0xE6, 0x04, 0x8A, 0xC5, 0xE6, + 0x81, 0x8A, 0x66, 0x00, 0xB0, 0x00, 0xD1, 0xE8, 0x8A, 0x4E, 0x06, + 0xD3, 0xE0, 0x48, 0xE6, 0x05, 0x86, 0xC4, 0xE6, 0x05, 0x86, 0xC4, + 0x03, 0xC2, 0x73, 0x09, 0xFB, 0xC6, 0x06, 0x41, 0x00, 0x09, 0xE9, + 0x11, 0x01, 0xB0, 0x02, 0xE6, 0x0A, 0xC6, 0x06, 0x40, 0x00, 0xFF, + 0x8A, 0x5E, 0x02, 0xB7, 0x00, 0x2E, 0x8A, 0x87, 0x38, 0xED, 0x8A, + 0xE8, 0xB1, 0x04, 0xD2, 0xE0, 0x0A, 0xC3, 0x0C, 0x0C, 0xBA, 0xF2, + 0x03, 0xEE, 0xFB, 0x2E, 0x8A, 0x85, 0x32, 0xED, 0x08, 0x06, 0x3F, + 0x00, 0x0A, 0xC0, 0x79, 0x11, 0x26, 0x8A, 0x64, 0x0A, 0x0A, 0xE4, + 0x74, 0x09, 0x84, 0x2E, 0x3F, 0x00, 0x75, 0x03, 0xE8, 0x27, 0x01, + 0x08, 0x2E, 0x3F, 0x00, 0x84, 0x2E, 0x3E, 0x00, 0x75, 0x14, 0x08, + 0x2E, 0x3E, 0x00, 0xB0, 0x07, 0xE8, 0x9F, 0x01, 0x8A, 0xC3, 0xE8, + 0x9A, 0x01, 0xE8, 0xB9, 0x00, 0xE8, 0xBB, 0x01, 0xB0, 0x0F, 0xE8, + 0x8F, 0x01, 0x8A, 0xC3, 0xE8, 0x8A, 0x01, 0x8A, 0x46, 0x03, 0xE8, + 0x84, 0x01, 0xE8, 0xA3, 0x00, 0xE8, 0x56, 0x01, 0x26, 0x8A, 0x44, + 0x09, 0x0A, 0xC0, 0x74, 0x09, 0xB9, 0x26, 0x02, 0xE2, 0xFE, 0xFE, + 0xC8, 0x75, 0xF7, 0x2E, 0x8A, 0x85, 0x26, 0xED, 0xE8, 0x65, 0x01, + 0x8A, 0x46, 0x04, 0x24, 0x01, 0xD0, 0xE0, 0xD0, 0xE0, 0x0A, 0xC3, + 0xE8, 0x57, 0x01, 0x80, 0x7E, 0x01, 0x05, 0x75, 0x1C, 0x8A, 0x46, + 0x06, 0xE8, 0x4B, 0x01, 0x8A, 0x46, 0x07, 0xE8, 0x45, 0x01, 0x26, + 0x8A, 0x44, 0x07, 0xE8, 0x3E, 0x01, 0x26, 0x8A, 0x44, 0x08, 0xE8, + 0x37, 0x01, 0xEB, 0x0E, 0xB9, 0x07, 0x00, 0xBF, 0x03, 0x00, 0x8A, + 0x03, 0xE8, 0x2A, 0x01, 0x47, 0xE2, 0xF8, 0xE8, 0x46, 0x00, 0xE8, + 0xFE, 0x00, 0xA0, 0x42, 0x00, 0x24, 0xC0, 0x74, 0x25, 0x3C, 0x40, + 0x74, 0x07, 0xC6, 0x06, 0x41, 0x00, 0x20, 0xEB, 0x1A, 0xA0, 0x43, + 0x00, 0xB9, 0x06, 0x00, 0x33, 0xDB, 0x2E, 0x84, 0x87, 0x3C, 0xED, + 0x75, 0x03, 0x43, 0xE2, 0xF6, 0x2E, 0x8A, 0x87, 0x42, 0xED, 0xA2, + 0x41, 0x00, 0xA0, 0x45, 0x00, 0x3A, 0x46, 0x03, 0xA0, 0x47, 0x00, + 0x74, 0x05, 0x8A, 0x46, 0x07, 0xFE, 0xC0, 0x2A, 0x46, 0x05, 0xC3, + 0xB0, 0x00, 0xC3, 0xFB, 0x33, 0xC9, 0xB0, 0x02, 0xF6, 0x06, 0x3E, + 0x00, 0x80, 0xF8, 0x75, 0x10, 0xE2, 0xF6, 0xFE, 0xC8, 0x75, 0xF2, + 0xC6, 0x06, 0x41, 0x00, 0x80, 0x58, 0xB0, 0x00, 0xF9, 0xC3, 0x80, + 0x26, 0x3E, 0x00, 0x7F, 0xC3, 0x51, 0x33, 0xC9, 0xBA, 0xF4, 0x03, + 0xEC, 0x0A, 0xC0, 0x78, 0x09, 0xE2, 0xF9, 0xC6, 0x06, 0x41, 0x00, + 0x80, 0xEB, 0x09, 0xA8, 0x40, 0x75, 0x08, 0xC6, 0x06, 0x41, 0x00, + 0x20, 0x59, 0xF9, 0xC3, 0x42, 0xEC, 0x50, 0xB9, 0x0A, 0x00, 0xE2, + 0xFE, 0x4A, 0xEC, 0xA8, 0x10, 0xF8, 0x58, 0x59, 0xC3, 0x51, 0x33, + 0xC9, 0xE2, 0xFE, 0xFE, 0xCC, 0x75, 0xF8, 0x59, 0xC3, 0xBD, 0x04, + 0x00, 0xBB, 0x00, 0xB0, 0x3C, 0x07, 0x74, 0x06, 0xBD, 0x10, 0x00, + 0xBB, 0x00, 0xB8, 0x53, 0x07, 0xA0, 0x65, 0x00, 0x24, 0xF7, 0x8B, + 0x16, 0x63, 0x00, 0x83, 0xC2, 0x04, 0xEE, 0xE8, 0xE4, 0x0A, 0x4D, + 0x75, 0xFA, 0x73, 0x05, 0x80, 0x0E, 0x15, 0x00, 0x04, 0xC3, 0x3C, + 0x53, 0x75, 0x11, 0x8A, 0x0E, 0x17, 0x00, 0xF6, 0xC1, 0x04, 0x74, + 0x08, 0xF6, 0xC1, 0x08, 0x74, 0x03, 0xE9, 0xC8, 0xFB, 0xC3, 0xFF, + 0xFB, 0x1E, 0x50, 0xB8, 0x40, 0x00, 0x8E, 0xD8, 0x80, 0x0E, 0x3E, + 0x00, 0x80, 0xB0, 0x20, 0xE6, 0x20, 0x58, 0x1F, 0xCF, 0xB0, 0x08, + 0xE8, 0x23, 0x00, 0x53, 0x51, 0xB9, 0x07, 0x00, 0x33, 0xDB, 0xE8, + 0x5E, 0xFF, 0x72, 0x0D, 0x88, 0x47, 0x42, 0x74, 0x0F, 0x43, 0xE2, + 0xF3, 0xC6, 0x06, 0x41, 0x00, 0x20, 0xF9, 0x59, 0x5B, 0x58, 0xB0, + 0x00, 0xC3, 0x59, 0x5B, 0xC3, 0x51, 0x52, 0x50, 0x33, 0xC9, 0xBA, + 0xF4, 0x03, 0xEC, 0x0A, 0xC0, 0x78, 0x09, 0xE2, 0xF9, 0xC6, 0x06, + 0x41, 0x00, 0x80, 0xEB, 0x12, 0xA8, 0x40, 0x74, 0x07, 0xC6, 0x06, + 0x41, 0x00, 0x20, 0xEB, 0x07, 0x42, 0x58, 0xEE, 0xF8, 0x5A, 0x59, + 0xC3, 0x58, 0x5A, 0x59, 0x58, 0xB0, 0x00, 0xF9, 0xC3, 0xFF, 0xFF, + 0xFF, 0xFF, 0xCF, 0x02, 0x25, 0x02, 0x08, 0x2A, 0xFF, 0x50, 0xF6, + 0x19, 0x04, 0xFB, 0x1E, 0x53, 0x51, 0x52, 0xBB, 0x40, 0x00, 0x8E, + 0xDB, 0x8B, 0xDA, 0xD1, 0xE3, 0x8B, 0x57, 0x08, 0x0B, 0xD2, 0x74, + 0x0C, 0x0A, 0xE4, 0x74, 0x0D, 0xFE, 0xCC, 0x74, 0x39, 0xFE, 0xCC, + 0x74, 0x29, 0x5A, 0x59, 0x5B, 0x1F, 0xCF, 0xEE, 0x42, 0x8A, 0x7F, + 0x78, 0x8A, 0xE0, 0x33, 0xC9, 0xEC, 0x0A, 0xC0, 0x78, 0x0C, 0xE2, + 0xF9, 0xFE, 0xCF, 0x75, 0xF3, 0x0C, 0x01, 0x24, 0xF9, 0xEB, 0x10, + 0x42, 0xB0, 0x0D, 0xEE, 0xB0, 0x0C, 0xEE, 0x4A, 0xEB, 0x03, 0x8A, + 0xE0, 0x42, 0xEC, 0x24, 0xF8, 0x34, 0x48, 0x86, 0xC4, 0xEB, 0xCB, + 0x8A, 0xE0, 0x42, 0x42, 0xB0, 0x08, 0xEE, 0xB9, 0xDC, 0x05, 0xE2, + 0xFE, 0xEB, 0xE0, 0xC3, 0x20, 0x43, 0x47, 0x41, 0x20, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x00, 0x15, 0xF1, 0xBC, 0xF1, + 0xC9, 0xF1, 0xD9, 0xF1, 0xF5, 0xF1, 0x76, 0xF2, 0x96, 0xF2, 0x96, + 0xF2, 0xE2, 0xF3, 0xE2, 0xF3, 0xE2, 0xF3, 0xBC, 0xF5, 0xE7, 0xF5, + 0x2A, 0xF6, 0x53, 0xF6, 0xD1, 0xF6, 0xFB, 0xFC, 0x55, 0x06, 0x1E, + 0x56, 0x57, 0x52, 0x51, 0x53, 0x50, 0xBB, 0x40, 0x00, 0x8E, 0xDB, + 0x8A, 0x1E, 0x10, 0x00, 0x80, 0xE3, 0x30, 0x80, 0xFB, 0x30, 0xBB, + 0x00, 0xB8, 0x75, 0x03, 0xBB, 0x00, 0xB0, 0x53, 0x8B, 0xEC, 0xE8, + 0x77, 0x00, 0x5E, 0x58, 0x5B, 0x59, 0x5A, 0x5F, 0x5E, 0x1F, 0x07, + 0x5D, 0xCF, 0x52, 0xB4, 0x00, 0xF7, 0xE3, 0x5A, 0x8B, 0x4E, 0x00, + 0xC3, 0xC0, 0x00, 0x38, 0x28, 0x2D, 0x0A, 0x1F, 0x06, 0x19, 0x1C, + 0x02, 0x07, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x71, 0x50, 0x5A, + 0x0A, 0x1F, 0x06, 0x19, 0x1C, 0x02, 0x07, 0x06, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x28, 0x2D, 0x0A, 0x7F, 0x06, 0x64, 0x70, 0x02, + 0x01, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x61, 0x50, 0x52, 0x0F, + 0x19, 0x06, 0x19, 0x19, 0x02, 0x0D, 0x0B, 0x0C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, 0x00, 0x40, 0x28, 0x28, + 0x50, 0x50, 0x28, 0x28, 0x50, 0x50, 0x2C, 0x28, 0x2D, 0x29, 0x2A, + 0x2E, 0x1E, 0x29, 0x00, 0x00, 0x10, 0x10, 0x20, 0x20, 0x20, 0x30, + 0x80, 0xFC, 0x0F, 0x76, 0x01, 0xC3, 0xD0, 0xE4, 0x8A, 0xDC, 0xB7, + 0x00, 0x2E, 0xFF, 0xA7, 0x45, 0xF0, 0xA0, 0x10, 0x00, 0xBA, 0xB4, + 0x03, 0x24, 0x30, 0x3C, 0x30, 0xB0, 0x01, 0xB3, 0x07, 0x74, 0x07, + 0x8A, 0x5E, 0x02, 0xB2, 0xD4, 0xFE, 0xC8, 0x89, 0x16, 0x63, 0x00, + 0x80, 0xC2, 0x04, 0xEE, 0x88, 0x1E, 0x49, 0x00, 0x1E, 0x33, 0xC0, + 0x8E, 0xD8, 0xC4, 0x36, 0x74, 0x00, 0x1F, 0xB7, 0x00, 0x53, 0x2E, + 0x8A, 0x9F, 0xFC, 0xF0, 0x03, 0xF3, 0xB9, 0x10, 0x00, 0x26, 0x8A, + 0x04, 0xE8, 0x2D, 0x06, 0xFE, 0xC4, 0x46, 0xE2, 0xF5, 0x8B, 0x5E, + 0x00, 0x8E, 0xC3, 0x33, 0xFF, 0xE8, 0x80, 0x05, 0xB9, 0x00, 0x20, + 0xB8, 0x00, 0x00, 0x72, 0x08, 0x75, 0x03, 0xB9, 0x00, 0x08, 0xB8, + 0x20, 0x07, 0xF3, 0xAB, 0x8B, 0x16, 0x63, 0x00, 0x80, 0xC2, 0x04, + 0x5B, 0x2E, 0x8A, 0x87, 0xF4, 0xF0, 0xEE, 0xA2, 0x65, 0x00, 0x42, + 0xB0, 0x30, 0x80, 0xFB, 0x06, 0x75, 0x02, 0xB0, 0x3F, 0xA2, 0x66, + 0x00, 0xEE, 0x33, 0xC0, 0xA3, 0x4E, 0x00, 0xA2, 0x62, 0x00, 0xB9, + 0x08, 0x00, 0xBF, 0x50, 0x00, 0x89, 0x05, 0x47, 0xE2, 0xFB, 0x2E, + 0x8A, 0x87, 0xEC, 0xF0, 0xA3, 0x4A, 0x00, 0x80, 0xE3, 0xFE, 0x2E, + 0x8B, 0x87, 0xE4, 0xF0, 0xA3, 0x4C, 0x00, 0xC3, 0x8B, 0x4E, 0x06, + 0x89, 0x0E, 0x60, 0x00, 0xB4, 0x0A, 0xE8, 0xB1, 0x05, 0xC3, 0x8A, + 0x5E, 0x05, 0xD0, 0xE3, 0xB7, 0x00, 0x8B, 0x46, 0x08, 0x89, 0x47, + 0x50, 0xE9, 0x8B, 0x05, 0x8A, 0x5E, 0x05, 0xD0, 0xE3, 0xB7, 0x00, + 0x8B, 0x47, 0x50, 0x89, 0x46, 0x08, 0xA1, 0x60, 0x00, 0x89, 0x46, + 0x06, 0xC3, 0x03, 0x03, 0x05, 0x05, 0x03, 0x03, 0x03, 0x04, 0x8B, + 0x16, 0x63, 0x00, 0x80, 0xC2, 0x06, 0xC6, 0x46, 0x03, 0x00, 0xEC, + 0xA8, 0x04, 0x74, 0x68, 0xA8, 0x02, 0x75, 0x01, 0xC3, 0xB4, 0x10, + 0xE8, 0x10, 0x05, 0x8A, 0x1E, 0x49, 0x00, 0x8A, 0xCB, 0xB7, 0x00, + 0x2E, 0x8A, 0x9F, 0xED, 0xF1, 0x2B, 0xCB, 0x79, 0x02, 0x33, 0xC0, + 0xE8, 0xBF, 0x04, 0x73, 0x25, 0xB5, 0x28, 0xF6, 0xF2, 0x8A, 0xDC, + 0xB7, 0x00, 0xB1, 0x03, 0xD3, 0xE3, 0x8A, 0xE8, 0xD0, 0xE5, 0x8A, + 0xD4, 0x8A, 0xF0, 0xD0, 0xEE, 0xD0, 0xEE, 0x80, 0x3E, 0x49, 0x00, + 0x06, 0x75, 0x1A, 0xD0, 0xE2, 0xD1, 0xE3, 0xEB, 0x14, 0xF6, 0x36, + 0x4A, 0x00, 0x86, 0xC4, 0x8B, 0xD0, 0xB1, 0x03, 0xD2, 0xE4, 0x8A, + 0xEC, 0x8A, 0xD8, 0xB7, 0x00, 0xD3, 0xE3, 0xC6, 0x46, 0x03, 0x01, + 0x89, 0x56, 0x08, 0x89, 0x5E, 0x04, 0x88, 0x6E, 0x07, 0x8B, 0x16, + 0x63, 0x00, 0x83, 0xC2, 0x07, 0xEE, 0xC3, 0x8A, 0x46, 0x02, 0xA2, + 0x62, 0x00, 0xB4, 0x00, 0x50, 0x8B, 0x1E, 0x4C, 0x00, 0xF7, 0xE3, + 0xA3, 0x4E, 0x00, 0xD1, 0xE8, 0x8B, 0xC8, 0xB4, 0x0C, 0xE8, 0xE8, + 0x04, 0x5B, 0xE8, 0xD7, 0x04, 0xC3, 0xE8, 0x4B, 0x04, 0x73, 0x03, + 0xE9, 0x9B, 0x00, 0xFC, 0x80, 0x3E, 0x49, 0x00, 0x02, 0x72, 0x15, + 0x80, 0x3E, 0x49, 0x00, 0x03, 0x77, 0x0E, 0xBA, 0xDA, 0x03, 0xEC, + 0xA8, 0x08, 0x74, 0xFB, 0xBA, 0xD8, 0x03, 0xB0, 0x25, 0xEE, 0x8B, + 0x46, 0x08, 0x50, 0x80, 0x7E, 0x03, 0x07, 0x74, 0x03, 0x8B, 0x46, + 0x06, 0xE8, 0x75, 0x04, 0x03, 0x06, 0x4E, 0x00, 0x8B, 0xF0, 0x8B, + 0xF8, 0x5A, 0x2B, 0x56, 0x06, 0x81, 0xC2, 0x01, 0x01, 0x8B, 0x1E, + 0x4A, 0x00, 0xD1, 0xE3, 0x1E, 0x8A, 0x46, 0x02, 0xE8, 0xB0, 0xFD, + 0x8E, 0xC1, 0x8E, 0xD9, 0x80, 0x7E, 0x03, 0x06, 0x74, 0x05, 0xF7, + 0xD8, 0xF7, 0xDB, 0xFD, 0x8A, 0x4E, 0x02, 0x0A, 0xC9, 0x74, 0x1A, + 0x03, 0xF0, 0x2A, 0x76, 0x02, 0xB5, 0x00, 0x8A, 0xCA, 0x57, 0x56, + 0xF3, 0xA5, 0x5E, 0x5F, 0x03, 0xF3, 0x03, 0xFB, 0xFE, 0xCE, 0x75, + 0xEE, 0x8A, 0x76, 0x02, 0xB5, 0x00, 0x8A, 0x66, 0x05, 0xB0, 0x20, + 0x8A, 0xCA, 0x57, 0xF3, 0xAB, 0x5F, 0x03, 0xFB, 0xFE, 0xCE, 0x75, + 0xF4, 0x1F, 0xE8, 0xB5, 0x03, 0x74, 0x07, 0xA0, 0x65, 0x00, 0xBA, + 0xD8, 0x03, 0xEE, 0xC3, 0xFC, 0x8B, 0x46, 0x08, 0x50, 0x80, 0x7E, + 0x03, 0x07, 0x74, 0x03, 0x8B, 0x46, 0x06, 0xE8, 0x07, 0x04, 0x8B, + 0xF8, 0x5A, 0x2B, 0x56, 0x06, 0x81, 0xC2, 0x01, 0x01, 0xD0, 0xE6, + 0xD0, 0xE6, 0x8A, 0x46, 0x03, 0x80, 0x3E, 0x49, 0x00, 0x06, 0x74, + 0x09, 0xD0, 0xE2, 0xD1, 0xE7, 0x3C, 0x07, 0x75, 0x01, 0x47, 0x3C, + 0x07, 0x75, 0x04, 0x81, 0xC7, 0xF0, 0x00, 0x8A, 0x5E, 0x02, 0xD0, + 0xE3, 0xD0, 0xE3, 0x53, 0x2A, 0xF3, 0xB0, 0x50, 0xF6, 0xE3, 0xBB, + 0xB0, 0x1F, 0x80, 0x7E, 0x03, 0x06, 0x74, 0x06, 0xF7, 0xD8, 0xBB, + 0x50, 0x20, 0xFD, 0x8B, 0xF7, 0x03, 0xF0, 0x58, 0x0A, 0xC0, 0x8B, + 0x4E, 0x00, 0x8E, 0xD9, 0x8E, 0xC1, 0x74, 0x26, 0x50, 0xB5, 0x00, + 0x8A, 0xCA, 0x56, 0x57, 0xF3, 0xA4, 0x5F, 0x5E, 0x81, 0xC6, 0x00, + 0x20, 0x81, 0xC7, 0x00, 0x20, 0x8A, 0xCA, 0x56, 0x57, 0xF3, 0xA4, + 0x5F, 0x5E, 0x2B, 0xF3, 0x2B, 0xFB, 0xFE, 0xCE, 0x75, 0xDE, 0x58, + 0x8A, 0xF0, 0x8A, 0x46, 0x05, 0xB5, 0x00, 0x8A, 0xCA, 0x57, 0xF3, + 0xAA, 0x5F, 0x81, 0xC7, 0x00, 0x20, 0x8A, 0xCA, 0x57, 0xF3, 0xAA, + 0x5F, 0x2B, 0xFB, 0xFE, 0xCE, 0x75, 0xEA, 0xC3, 0xE8, 0xFF, 0x02, + 0x72, 0x70, 0x8A, 0x5E, 0x05, 0xB7, 0x00, 0x53, 0xE8, 0x49, 0x03, + 0x8B, 0xF8, 0x58, 0xF7, 0x26, 0x4C, 0x00, 0x03, 0xF8, 0x8B, 0xF7, + 0x8B, 0x16, 0x63, 0x00, 0x83, 0xC2, 0x06, 0x1E, 0x8B, 0x5E, 0x00, + 0x8E, 0xDB, 0x8E, 0xC3, 0x8A, 0x46, 0x03, 0x3C, 0x08, 0x75, 0x14, + 0xEC, 0xA8, 0x01, 0x75, 0xFB, 0xFA, 0xEC, 0xA8, 0x01, 0x74, 0xFB, + 0xAD, 0x1F, 0x88, 0x46, 0x02, 0x88, 0x66, 0x03, 0xC3, 0x8A, 0x5E, + 0x02, 0x8A, 0x7E, 0x04, 0x8B, 0x4E, 0x06, 0x3C, 0x0A, 0x74, 0x12, + 0xEC, 0xA8, 0x01, 0x75, 0xFB, 0xFA, 0xEC, 0xA8, 0x01, 0x74, 0xFB, + 0x8B, 0xC3, 0xAB, 0xE2, 0xF0, 0x1F, 0xC3, 0xEC, 0xA8, 0x01, 0x75, + 0xFB, 0xFA, 0xEC, 0xA8, 0x01, 0x74, 0xFB, 0x8A, 0xC3, 0xAA, 0x47, + 0xE2, 0xEF, 0x1F, 0xC3, 0x80, 0x7E, 0x03, 0x08, 0x75, 0x03, 0xE9, + 0xB8, 0x00, 0xA1, 0x50, 0x00, 0xE8, 0xEB, 0x02, 0x8B, 0xF8, 0x1E, + 0x8A, 0x46, 0x02, 0xB4, 0x00, 0x0A, 0xC0, 0x78, 0x07, 0x8C, 0xCA, + 0xBE, 0x6E, 0xFA, 0xEB, 0x0C, 0x24, 0x7F, 0x33, 0xDB, 0x8E, 0xDB, + 0xC5, 0x36, 0x7C, 0x00, 0x8C, 0xDA, 0x1F, 0xB1, 0x03, 0xD3, 0xE0, + 0x03, 0xF0, 0x8B, 0x46, 0x00, 0x8E, 0xC0, 0x8B, 0x4E, 0x06, 0x80, + 0x3E, 0x49, 0x00, 0x06, 0x1E, 0x8E, 0xDA, 0x74, 0x51, 0xD1, 0xE7, + 0x8A, 0x46, 0x04, 0x25, 0x03, 0x00, 0xBB, 0x55, 0x55, 0xF7, 0xE3, + 0x8B, 0xD0, 0x8A, 0x5E, 0x04, 0xB7, 0x08, 0x57, 0x56, 0xAC, 0x51, + 0x53, 0x33, 0xDB, 0xB9, 0x08, 0x00, 0xD0, 0xE8, 0xD1, 0xDB, 0xD1, + 0xFB, 0xE2, 0xF8, 0x8B, 0xC3, 0x5B, 0x59, 0x23, 0xC2, 0x86, 0xE0, + 0x0A, 0xDB, 0x79, 0x03, 0x26, 0x33, 0x05, 0x26, 0x89, 0x05, 0x81, + 0xF7, 0x00, 0x20, 0xF7, 0xC7, 0x00, 0x20, 0x75, 0x03, 0x83, 0xC7, + 0x50, 0xFE, 0xCF, 0x75, 0xCD, 0x5E, 0x5F, 0x47, 0x47, 0xE2, 0xC3, + 0x1F, 0xC3, 0x8A, 0x5E, 0x04, 0xBA, 0x00, 0x20, 0xB7, 0x08, 0x57, + 0x56, 0xAC, 0x0A, 0xDB, 0x79, 0x03, 0x26, 0x32, 0x05, 0x26, 0x88, + 0x05, 0x33, 0xFA, 0x85, 0xFA, 0x75, 0x03, 0x83, 0xC7, 0x50, 0xFE, + 0xCF, 0x75, 0xE8, 0x5E, 0x5F, 0x47, 0xE2, 0xDF, 0x1F, 0xC3, 0xFC, + 0xA1, 0x50, 0x00, 0xE8, 0x32, 0x02, 0x8B, 0xF0, 0x83, 0xEC, 0x08, + 0x8B, 0xFC, 0x80, 0x3E, 0x49, 0x00, 0x06, 0x8B, 0x46, 0x00, 0x1E, + 0x57, 0x8E, 0xD8, 0x74, 0x31, 0xB6, 0x08, 0xD1, 0xE6, 0xBB, 0x00, + 0x20, 0x8B, 0x04, 0x86, 0xE0, 0xB9, 0x00, 0xC0, 0xB2, 0x00, 0x85, + 0xC1, 0xF8, 0x74, 0x01, 0xF9, 0xD0, 0xD2, 0xD1, 0xE9, 0xD1, 0xE9, + 0x73, 0xF2, 0x36, 0x88, 0x15, 0x47, 0x33, 0xF3, 0x85, 0xF3, 0x75, + 0x03, 0x83, 0xC6, 0x50, 0xFE, 0xCE, 0x75, 0xD8, 0xEB, 0x17, 0xB6, + 0x04, 0x8A, 0x24, 0x36, 0x88, 0x25, 0x47, 0x8A, 0xA4, 0x00, 0x20, + 0x36, 0x88, 0x25, 0x47, 0x83, 0xC6, 0x50, 0xFE, 0xCE, 0x75, 0xEB, + 0x8C, 0xCA, 0xBF, 0x6E, 0xFA, 0x8E, 0xC2, 0x8C, 0xD2, 0x8E, 0xDA, + 0x5E, 0xB0, 0x00, 0xBA, 0x80, 0x00, 0x56, 0x57, 0xB9, 0x08, 0x00, + 0xF3, 0xA6, 0x5F, 0x5E, 0x74, 0x1C, 0xFE, 0xC0, 0x83, 0xC7, 0x08, + 0x4A, 0x75, 0xED, 0x0A, 0xC0, 0x74, 0x10, 0x33, 0xDB, 0x8E, 0xDB, + 0xC4, 0x3E, 0x7C, 0x00, 0x8C, 0xC3, 0x0B, 0xDF, 0x74, 0x02, 0xEB, + 0xD6, 0x88, 0x46, 0x02, 0x1F, 0x83, 0xC4, 0x08, 0xC3, 0x8B, 0x16, + 0x63, 0x00, 0x83, 0xC2, 0x05, 0xA0, 0x66, 0x00, 0x8A, 0x66, 0x05, + 0x0A, 0xE4, 0x8A, 0x66, 0x04, 0x75, 0x09, 0x24, 0xE0, 0x80, 0xE4, + 0x1F, 0x0A, 0xC4, 0xEB, 0x09, 0x24, 0xDF, 0xF6, 0xC4, 0x01, 0x74, + 0x02, 0x0C, 0x20, 0xA2, 0x66, 0x00, 0xEE, 0xC3, 0x8B, 0x46, 0x00, + 0x8E, 0xC0, 0x8B, 0x56, 0x08, 0x8B, 0x4E, 0x06, 0xE8, 0x01, 0x01, + 0x75, 0x0D, 0x8A, 0x46, 0x02, 0x8A, 0xD8, 0x24, 0x01, 0xD0, 0xC8, + 0xB4, 0x7F, 0xEB, 0x0F, 0xD0, 0xE1, 0x8A, 0x46, 0x02, 0x8A, 0xD8, + 0x24, 0x03, 0xD0, 0xC8, 0xD0, 0xC8, 0xB4, 0x3F, 0xD2, 0xCC, 0xD2, + 0xE8, 0x26, 0x8A, 0x0C, 0x0A, 0xDB, 0x79, 0x04, 0x32, 0xC8, 0xEB, + 0x04, 0x22, 0xCC, 0x0A, 0xC8, 0x26, 0x88, 0x0C, 0xC3, 0x8B, 0x46, + 0x00, 0x8E, 0xC0, 0x8B, 0x56, 0x08, 0x8B, 0x4E, 0x06, 0xE8, 0xBE, + 0x00, 0x26, 0x8A, 0x04, 0x75, 0x08, 0xD2, 0xE0, 0xD0, 0xC0, 0x24, + 0x01, 0xEB, 0x0A, 0xD0, 0xE1, 0xD2, 0xE0, 0xD0, 0xC0, 0xD0, 0xC0, + 0x24, 0x03, 0x88, 0x46, 0x02, 0xC3, 0x8A, 0x1E, 0x62, 0x00, 0xD0, + 0xE3, 0xB7, 0x00, 0x8B, 0x57, 0x50, 0x8A, 0x46, 0x02, 0x3C, 0x08, + 0x74, 0x22, 0x3C, 0x0A, 0x74, 0x3D, 0x3C, 0x07, 0x74, 0x23, 0x3C, + 0x0D, 0x74, 0x25, 0x8A, 0x5E, 0x04, 0xB4, 0x0A, 0xB9, 0x01, 0x00, + 0xCD, 0x10, 0xFE, 0xC2, 0x3A, 0x16, 0x4A, 0x00, 0x75, 0x15, 0xB2, + 0x00, 0xEB, 0x1F, 0x80, 0xFA, 0x00, 0x74, 0x0C, 0xFE, 0xCA, 0xEB, + 0x08, 0xB3, 0x01, 0xE8, 0x53, 0x03, 0xC3, 0xB2, 0x00, 0x8A, 0x1E, + 0x62, 0x00, 0xD0, 0xE3, 0xB7, 0x00, 0x89, 0x57, 0x50, 0xE9, 0xBE, + 0x00, 0x80, 0xFE, 0x18, 0x74, 0x04, 0xFE, 0xC6, 0x75, 0xE9, 0xB4, + 0x02, 0xCD, 0x10, 0xE8, 0x2E, 0x00, 0xB7, 0x00, 0x72, 0x06, 0xB4, + 0x08, 0xCD, 0x10, 0x8A, 0xFC, 0xB4, 0x06, 0xB0, 0x01, 0x33, 0xC9, + 0xB6, 0x18, 0x8A, 0x16, 0x4A, 0x00, 0xFE, 0xCA, 0xCD, 0x10, 0xC3, + 0xA0, 0x4A, 0x00, 0x88, 0x46, 0x03, 0xA0, 0x49, 0x00, 0x88, 0x46, + 0x02, 0xA0, 0x62, 0x00, 0x88, 0x46, 0x05, 0xC3, 0x50, 0xA0, 0x49, + 0x00, 0x3C, 0x07, 0x74, 0x08, 0x3C, 0x04, 0xF5, 0x73, 0x03, 0x1A, + 0xC0, 0xF9, 0x58, 0xC3, 0xB0, 0x50, 0x33, 0xF6, 0xD0, 0xEA, 0x73, + 0x03, 0xBE, 0x00, 0x20, 0xF6, 0xE2, 0x03, 0xF0, 0x8B, 0xD1, 0xB9, + 0x02, 0x03, 0x80, 0x3E, 0x49, 0x00, 0x06, 0x9C, 0x75, 0x03, 0xB9, + 0x03, 0x07, 0x22, 0xEA, 0xD3, 0xEA, 0x03, 0xF2, 0x86, 0xCD, 0x9D, + 0xC3, 0xE8, 0x0A, 0x00, 0x8A, 0xE8, 0xFE, 0xC4, 0xE8, 0x03, 0x00, + 0x8A, 0xC8, 0xC3, 0x52, 0x8B, 0x16, 0x63, 0x00, 0x86, 0xC4, 0xEE, + 0xFE, 0xC2, 0xEC, 0x5A, 0xC3, 0xB7, 0x00, 0xD1, 0xE3, 0x8B, 0x47, + 0x50, 0x53, 0x8A, 0xD8, 0x8A, 0xC4, 0xF6, 0x26, 0x4A, 0x00, 0xB7, + 0x00, 0x03, 0xC3, 0xD1, 0xE0, 0x5B, 0xC3, 0x53, 0x8A, 0xD8, 0x8A, + 0xC4, 0xF6, 0x26, 0x4A, 0x00, 0xD1, 0xE0, 0xD1, 0xE0, 0xB7, 0x00, + 0x03, 0xC3, 0x5B, 0xC3, 0xD0, 0xEB, 0x38, 0x1E, 0x62, 0x00, 0x75, + 0x24, 0xE8, 0xCA, 0xFF, 0x03, 0x06, 0x4E, 0x00, 0xD1, 0xE8, 0x8B, + 0xC8, 0xB4, 0x0E, 0x8A, 0xC5, 0xE8, 0x04, 0x00, 0xFE, 0xC4, 0x8A, + 0xC1, 0x52, 0x8B, 0x16, 0x63, 0x00, 0x86, 0xC4, 0xEE, 0x86, 0xC4, + 0xFE, 0xC2, 0xEE, 0x5A, 0xC3, 0x33, 0xC9, 0x8E, 0xC1, 0x26, 0x8B, + 0x0E, 0x62, 0x00, 0x32, 0xDB, 0x80, 0xC7, 0x03, 0x8B, 0xC3, 0xE8, + 0xE9, 0x01, 0xBE, 0x31, 0xEC, 0x32, 0xD2, 0x81, 0xF9, 0x00, 0xF6, + 0x75, 0x05, 0xBE, 0x12, 0xF8, 0xFE, 0xC2, 0xE8, 0xCB, 0x01, 0xFB, + 0xBB, 0x36, 0x00, 0x26, 0x03, 0x1E, 0x6C, 0x04, 0xB4, 0x01, 0xCD, + 0x16, 0x75, 0x0B, 0x26, 0x8B, 0x0E, 0x6C, 0x04, 0x2B, 0xCB, 0x72, + 0xF1, 0xFA, 0xC3, 0x32, 0xE4, 0xCD, 0x16, 0x0A, 0xD2, 0x74, 0xF6, + 0x3C, 0x20, 0x74, 0x02, 0xEB, 0xF0, 0xCD, 0x18, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6D, 0x20, 0xC2, 0x20, 0x00, 0x38, 0x30, 0x38, 0x38, + 0x20, 0x43, 0x50, 0x55, 0x20, 0x28, 0x00, 0x56, 0x32, 0x30, 0x20, + 0x43, 0x50, 0x55, 0x20, 0x28, 0x00, 0x4E, 0x6F, 0x20, 0x46, 0x50, + 0x55, 0x29, 0x00, 0x38, 0x30, 0x38, 0x37, 0x20, 0x46, 0x50, 0x55, + 0x29, 0x00, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20, 0x53, 0x50, 0x41, + 0x43, 0x45, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6F, 0x6F, 0x74, 0x20, + 0x52, 0x4F, 0x4D, 0x20, 0x42, 0x41, 0x53, 0x49, 0x43, 0x2E, 0x2E, + 0x2E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x1E, 0xB8, 0x40, 0x00, 0x8E, + 0xD8, 0xA1, 0x13, 0x00, 0x1F, 0xCF, 0xFB, 0x1E, 0xB8, 0x40, 0x00, + 0x8E, 0xD8, 0xA1, 0x10, 0x00, 0x1F, 0xCF, 0xF9, 0xB4, 0x86, 0xCA, + 0x02, 0x00, 0x50, 0xE4, 0x62, 0xA8, 0xC0, 0x75, 0x03, 0xE9, 0xA8, + 0x00, 0x53, 0x51, 0x52, 0x56, 0x57, 0x55, 0x1E, 0x06, 0xB8, 0x40, + 0x00, 0x8E, 0xD8, 0xE8, 0x4E, 0x01, 0x1E, 0x0E, 0x1F, 0xBE, 0x2B, + 0xF9, 0xE8, 0x00, 0x01, 0x1F, 0xB8, 0x11, 0x00, 0xE8, 0x04, 0x01, + 0xB0, 0x00, 0xE6, 0xA0, 0xBA, 0x61, 0x00, 0xEC, 0x0C, 0x30, 0xEE, + 0x24, 0xCF, 0xEE, 0xB1, 0x06, 0x8B, 0x1E, 0x13, 0x00, 0xD3, 0xE3, + 0x42, 0x33, 0xC0, 0x8E, 0xD8, 0xB9, 0x10, 0x00, 0x33, 0xF6, 0x8A, + 0x24, 0xEC, 0xA8, 0xC0, 0x75, 0x0E, 0x46, 0xE2, 0xF6, 0x8C, 0xD8, + 0x40, 0x8E, 0xD8, 0x3B, 0xC3, 0x75, 0xE8, 0xEB, 0x0C, 0x88, 0x24, + 0x8C, 0xD8, 0xE8, 0x8E, 0xEC, 0x8B, 0xC6, 0xE8, 0x85, 0x00, 0xB8, + 0x16, 0x00, 0xE8, 0xBD, 0x00, 0x1E, 0x0E, 0x1F, 0xBE, 0x42, 0xF9, + 0xE8, 0xA9, 0x00, 0x1F, 0xE4, 0x21, 0x50, 0xB0, 0xFC, 0xE6, 0x21, + 0xFB, 0xE8, 0xFE, 0x00, 0x50, 0xE8, 0x8E, 0x00, 0x58, 0x3C, 0x59, + 0x74, 0x07, 0x3C, 0x79, 0x74, 0x03, 0xE9, 0x66, 0xE7, 0xE8, 0x23, + 0xEC, 0x58, 0xE6, 0x21, 0xBA, 0x61, 0x00, 0xEC, 0x0C, 0x30, 0xEE, + 0x24, 0xCF, 0xEE, 0xB0, 0x80, 0xE6, 0xA0, 0x07, 0x1F, 0x5D, 0x5F, + 0x5E, 0x5A, 0x59, 0x5B, 0x58, 0xCF, 0xBC, 0x03, 0x78, 0x03, 0x78, + 0x02, 0xC3, 0x20, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6C, 0x20, 0x50, + 0x6F, 0x72, 0x74, 0x20, 0x61, 0x74, 0x20, 0x00, 0x50, 0x61, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x61, + 0x74, 0x3A, 0x20, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x0D, 0x0A, + 0x43, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x3F, 0x20, 0x00, + 0x50, 0x24, 0x0F, 0x3C, 0x09, 0x76, 0x02, 0x04, 0x07, 0x04, 0x30, + 0xE8, 0x1A, 0x00, 0x58, 0xC3, 0x50, 0xB1, 0x04, 0xD2, 0xE8, 0xE8, + 0xE8, 0xFF, 0x58, 0xE8, 0xE4, 0xFF, 0xC3, 0x50, 0x8A, 0xC4, 0xE8, + 0xDD, 0xFF, 0x58, 0xE8, 0xE9, 0xFF, 0xC3, 0x53, 0x50, 0xB4, 0x0E, + 0xB3, 0x07, 0xCD, 0x10, 0x58, 0x5B, 0xC3, 0xAC, 0x0A, 0xC0, 0x74, + 0x05, 0xE8, 0xED, 0xFF, 0xEB, 0xF6, 0xC3, 0x52, 0x53, 0x8B, 0xD0, + 0xB4, 0x02, 0xB7, 0x00, 0xCD, 0x10, 0x5B, 0x5A, 0xC3, 0xBB, 0x70, + 0x00, 0x26, 0x80, 0x3E, 0x49, 0x00, 0x07, 0x74, 0x03, 0xBB, 0x1F, + 0x00, 0xB9, 0x01, 0x00, 0xAC, 0x0A, 0xC0, 0x74, 0x05, 0xE8, 0x05, + 0x00, 0xEB, 0xF3, 0xB9, 0x31, 0x00, 0xB4, 0x09, 0xCD, 0x10, 0xB4, + 0x03, 0xCD, 0x10, 0xB4, 0x02, 0xFE, 0xC2, 0xCD, 0x10, 0xC3, 0x8A, + 0x26, 0x10, 0x00, 0x80, 0xE4, 0x30, 0xB0, 0x00, 0x80, 0xFC, 0x30, + 0x74, 0x09, 0xB0, 0x01, 0x80, 0xFC, 0x10, 0x74, 0x02, 0xB0, 0x03, + 0xB4, 0x00, 0xCD, 0x10, 0xC3, 0xB4, 0x00, 0xCD, 0x16, 0xC3, 0x50, + 0x51, 0xB0, 0xB6, 0xE6, 0x43, 0xB8, 0x28, 0x05, 0xE6, 0x42, 0x8A, + 0xC4, 0xE6, 0x42, 0xE4, 0x61, 0x50, 0x0C, 0x03, 0xE6, 0x61, 0x33, + 0xC9, 0xE2, 0xFE, 0xFE, 0xCB, 0x75, 0xFA, 0x58, 0xE6, 0x61, 0x59, + 0x58, 0xC3, 0xB9, 0x00, 0x20, 0xB0, 0x00, 0x02, 0x07, 0x43, 0xE2, + 0xFB, 0x0A, 0xC0, 0xC3, 0xBB, 0x00, 0x04, 0xB0, 0x55, 0x33, 0xFF, + 0x8B, 0xCB, 0x32, 0xC0, 0xF3, 0xAA, 0x8C, 0xC0, 0x05, 0x40, 0x00, + 0x8E, 0xC0, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x81, + 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, 0x7E, 0xFF, 0xDB, 0xFF, 0xC3, + 0xE7, 0xFF, 0x7E, 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, + 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x38, 0x7C, 0x38, + 0xFE, 0xFE, 0x7C, 0x38, 0x7C, 0x10, 0x10, 0x38, 0x7C, 0xFE, 0x7C, + 0x38, 0x7C, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0xFF, + 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF, 0x00, 0x3C, 0x66, 0x42, + 0x42, 0x66, 0x3C, 0x00, 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, + 0xFF, 0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78, 0x3C, 0x66, + 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18, 0x3F, 0x33, 0x3F, 0x30, 0x30, + 0x70, 0xF0, 0xE0, 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x67, 0xE6, 0xC0, + 0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99, 0x80, 0xE0, 0xF8, + 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, + 0x02, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00, 0x7F, 0xDB, 0xDB, 0x7B, + 0x1B, 0x1B, 0x1B, 0x00, 0x3E, 0x63, 0x38, 0x6C, 0x6C, 0x38, 0xCC, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00, 0x18, 0x3C, + 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF, 0x18, 0x3C, 0x7E, 0x18, 0x18, + 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00, + 0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x30, 0x60, + 0xFE, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, + 0x00, 0x00, 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00, 0x00, + 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7E, + 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00, 0x6C, 0x6C, + 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, + 0x6C, 0x6C, 0x00, 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, + 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00, 0x38, 0x6C, 0x38, + 0x76, 0xDC, 0xCC, 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00, 0x60, + 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00, 0x00, 0x66, 0x3C, 0xFF, + 0x3C, 0x66, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, + 0x7C, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0x7C, 0x00, 0x30, 0x70, 0x30, + 0x30, 0x30, 0x30, 0xFC, 0x00, 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, + 0xFC, 0x00, 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00, 0x1C, + 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, + 0x0C, 0xCC, 0x78, 0x00, 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, + 0x00, 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00, 0x78, 0xCC, + 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, 0x0C, + 0x18, 0x70, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, + 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60, 0x18, 0x30, 0x60, + 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x78, + 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00, 0x7C, 0xC6, 0xDE, 0xDE, + 0xDE, 0xC0, 0x78, 0x00, 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, + 0x00, 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00, 0x3C, 0x66, + 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00, 0xF8, 0x6C, 0x66, 0x66, 0x66, + 0x6C, 0xF8, 0x00, 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00, + 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00, 0x3C, 0x66, 0xC0, + 0xC0, 0xCE, 0x66, 0x3E, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, + 0xCC, 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x1E, + 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, 0xE6, 0x66, 0x6C, 0x78, + 0x6C, 0x66, 0xE6, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, + 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00, 0xC6, 0xE6, + 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, + 0x6C, 0x38, 0x00, 0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00, + 0x78, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x1C, 0x00, 0xFC, 0x66, 0x66, + 0x7C, 0x6C, 0x66, 0xE6, 0x00, 0x78, 0xCC, 0xE0, 0x70, 0x1C, 0xCC, + 0x78, 0x00, 0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0x78, 0x30, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, + 0x00, 0xC6, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0xCC, 0xCC, + 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00, 0xFE, 0xC6, 0x8C, 0x18, 0x32, + 0x66, 0xFE, 0x00, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00, + 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00, 0x78, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x78, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x30, + 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, + 0x7C, 0xCC, 0x76, 0x00, 0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xDC, + 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00, 0x1C, 0x0C, + 0x0C, 0x7C, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xFC, + 0xC0, 0x78, 0x00, 0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, 0xF0, 0x00, + 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8, 0xE0, 0x60, 0x6C, + 0x76, 0x66, 0x66, 0xE6, 0x00, 0x30, 0x00, 0x70, 0x30, 0x30, 0x30, + 0x78, 0x00, 0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0xE0, + 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00, 0x70, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0xCC, 0xFE, 0xFE, 0xD6, 0xC6, + 0x00, 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, + 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, + 0x7C, 0x60, 0xF0, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E, + 0x00, 0x00, 0xDC, 0x76, 0x66, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x7C, + 0xC0, 0x78, 0x0C, 0xF8, 0x00, 0x10, 0x30, 0x7C, 0x30, 0x30, 0x34, + 0x18, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, + 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, + 0xFE, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, + 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8, 0x00, 0x00, + 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00, 0x1C, 0x30, 0x30, 0xE0, 0x30, + 0x30, 0x1C, 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, + 0xE0, 0x30, 0x30, 0x1C, 0x30, 0x30, 0xE0, 0x00, 0x76, 0xDC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, + 0xFE, 0x00, 0xFB, 0x1E, 0x50, 0xB8, 0x40, 0x00, 0x8E, 0xD8, 0x58, + 0xFA, 0x0A, 0xE4, 0x74, 0x13, 0xFE, 0xCC, 0x75, 0x1A, 0x89, 0x16, + 0x6C, 0x00, 0x89, 0x0E, 0x6E, 0x00, 0xC6, 0x06, 0x70, 0x00, 0x00, + 0xEB, 0x0B, 0x8B, 0x0E, 0x6E, 0x00, 0x8B, 0x16, 0x6C, 0x00, 0xE8, + 0x03, 0x00, 0xFB, 0x1F, 0xCF, 0xA0, 0x70, 0x00, 0x30, 0x06, 0x70, + 0x00, 0xC3, 0xFB, 0x1E, 0x52, 0x50, 0xB8, 0x40, 0x00, 0x8E, 0xD8, + 0xFE, 0x0E, 0x40, 0x00, 0x75, 0x0B, 0x80, 0x26, 0x3F, 0x00, 0xF0, + 0xB0, 0x0C, 0xBA, 0xF2, 0x03, 0xEE, 0xFF, 0x06, 0x6C, 0x00, 0x75, + 0x04, 0xFF, 0x06, 0x6E, 0x00, 0x83, 0x3E, 0x6E, 0x00, 0x18, 0x75, + 0x19, 0x81, 0x3E, 0x6C, 0x00, 0xB0, 0x00, 0x75, 0x11, 0xC7, 0x06, + 0x6E, 0x00, 0x00, 0x00, 0xC7, 0x06, 0x6C, 0x00, 0x00, 0x00, 0xC6, + 0x06, 0x70, 0x00, 0x01, 0xCD, 0x1C, 0xB0, 0x20, 0xE6, 0x20, 0x58, + 0x5A, 0x1F, 0xCF, 0xA5, 0xFE, 0x87, 0xE9, 0x23, 0xFF, 0x23, 0xFF, + 0x23, 0xFF, 0x23, 0xFF, 0x57, 0xEF, 0x23, 0xFF, 0x65, 0xF0, 0x4D, + 0xF8, 0x41, 0xF8, 0x59, 0xEC, 0x39, 0xE7, 0x59, 0xF8, 0x2E, 0xE8, + 0xD2, 0xEF, 0x23, 0xFF, 0xF2, 0xE6, 0x6E, 0xFE, 0x53, 0xFF, 0x53, + 0xFF, 0xA4, 0xF0, 0xC7, 0xEF, 0x00, 0x00, 0x1E, 0x52, 0x50, 0xB8, + 0x40, 0x00, 0x8E, 0xD8, 0xB0, 0x0B, 0xE6, 0x20, 0x90, 0xE4, 0x20, + 0x8A, 0xE0, 0x0A, 0xC0, 0x75, 0x04, 0xB0, 0xFF, 0xEB, 0x0A, 0xE4, + 0x21, 0x0A, 0xC4, 0xE6, 0x21, 0xB0, 0x20, 0xE6, 0x20, 0x88, 0x26, + 0x6B, 0x00, 0x58, 0x5A, 0x1F, 0xCF, 0x68, 0x00, 0xFF, 0xFF, 0xFF, + 0xCF, 0xFB, 0x1E, 0x50, 0x53, 0x51, 0x52, 0xB8, 0x40, 0x00, 0x8E, + 0xD8, 0x80, 0x3E, 0x00, 0x01, 0x01, 0x74, 0x56, 0xC6, 0x06, 0x00, + 0x01, 0x01, 0xE8, 0x5D, 0x00, 0xB4, 0x0F, 0xCD, 0x10, 0x50, 0xB4, + 0x03, 0xCD, 0x10, 0x58, 0x52, 0xB5, 0x19, 0x8A, 0xCC, 0x33, 0xD2, + 0xB4, 0x02, 0xCD, 0x10, 0xB4, 0x08, 0xCD, 0x10, 0x0A, 0xC0, 0x75, + 0x02, 0xB0, 0x20, 0x52, 0x33, 0xD2, 0x8A, 0xE2, 0xCD, 0x17, 0x5A, + 0xF6, 0xC4, 0x25, 0x74, 0x07, 0xC6, 0x06, 0x00, 0x01, 0xFF, 0xEB, + 0x16, 0xFE, 0xC2, 0x3A, 0xCA, 0x75, 0xD8, 0xB2, 0x00, 0xE8, 0x1F, + 0x00, 0xFE, 0xC6, 0x3A, 0xF5, 0x75, 0xCD, 0xC6, 0x06, 0x00, 0x01, + 0x00, 0x5A, 0xB4, 0x02, 0xCD, 0x10, 0x5A, 0x59, 0x5B, 0x58, 0x1F, + 0xCF, 0xC3, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x72, 0x00, 0xFF, 0x52, + 0x33, 0xD2, 0x8A, 0xE2, 0xB0, 0x0A, 0xCD, 0x17, 0xB4, 0x00, 0xB0, + 0x0D, 0xCD, 0x17, 0x5A, 0xC3, 0xC7, 0x06, 0x60, 0x00, 0x07, 0x06, + 0x80, 0x3E, 0x49, 0x00, 0x07, 0x75, 0x06, 0xC7, 0x06, 0x60, 0x00, + 0x0C, 0x0B, 0xC3, 0xEA, 0x5B, 0xE0, 0x00, 0xF0, 0x30, 0x35, 0x2F, + 0x30, 0x32, 0x2F, 0x31, 0x32, 0xFF, 0xFE, 0xE2 +}; + +#ifdef INCLUDE_ROM_BASIC +#ifdef MEGA + const uint8_t BASICL[16384] PROGMEM = { +#else + const uint8_t BASICL[16384] = { +#endif + 0xE9, 0x8F, 0x7E, 0xE8, 0xA7, 0x6B, 0xCB, 0xE8, 0x2, 0x65, 0xCB, + 0x5D, 0xE8, 0xC7, 0x2F, 0x74, 0xD, 0x8B, 0x36, 0xE9, 0x4, 0x8A, + 0x44, 0x2E, 0x3C, 0xFE, 0x74, 0x2, 0x3C, 0xFD, 0xC3, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x33, 0x2E, 0x94, 0xD, 0x68, 0x73, 0x5B, + 0x11, 0x59, 0x15, 0x66, 0x37, 0x3E, 0x16, 0x8F, 0x11, 0xED, 0x10, + 0xB6, 0x10, 0xF8, 0x12, 0xC, 0x2E, 0xCE, 0x10, 0x35, 0x11, 0x5F, + 0x11, 0x2D, 0x2E, 0x48, 0x13, 0x50, 0x2F, 0x35, 0x1F, 0x1B, 0x2D, + 0xFE, 0x11, 0x58, 0x1E, 0xF0, 0x1B, 0x91, 0x22, 0x85, 0x2E, 0xBE, + 0x7, 0xBE, 0x7, 0x53, 0x1E, 0x43, 0x13, 0x2E, 0x1F, 0x0, 0x0, + 0x8A, 0x1E, 0x5F, 0x11, 0x9C, 0x2E, 0x9D, 0x2E, 0xA3, 0x2E, 0xF3, + 0x2E, 0xDF, 0x36, 0xA9, 0x12, 0x58, 0x12, 0x39, 0x22, 0xB8, 0x12, + 0xD8, 0x22, 0xFB, 0xF, 0xFE, 0xF, 0x1, 0x10, 0x4, 0x10, 0xD9, + 0x14, 0x4, 0x3D, 0x30, 0x3D, 0xA0, 0x5D, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0xA9, 0x3D, 0x3F, 0x24, 0x9E, 0x24, 0x4, 0x40, 0x52, + 0x43, 0x6C, 0x41, 0x6D, 0x41, 0xCE, 0x41, 0x2F, 0x53, 0xE7, 0x52, + 0x26, 0x5D, 0x13, 0x46, 0x33, 0x46, 0x29, 0x58, 0xD, 0x58, 0xD1, + 0x47, 0xCD, 0x47, 0x93, 0x51, 0x2A, 0x50, 0x17, 0x54, 0x68, 0x29, + 0xA5, 0x29, 0xB1, 0x29, 0x1C, 0x65, 0x80, 0x7E, 0x96, 0x7D, 0xF1, + 0x70, 0x87, 0x78, 0xE, 0x7A, 0xC, 0x73, 0x84, 0x62, 0xF4, 0x79, + 0xAD, 0x7A, 0xCD, 0x7A, 0x8C, 0x2B, 0x3D, 0x1E, 0x7A, 0x1B, 0xE8, + 0x28, 0x17, 0x26, 0xE9, 0x29, 0xF8, 0x28, 0xB, 0x29, 0x80, 0x22, + 0x47, 0x29, 0xD, 0x26, 0x12, 0x26, 0x75, 0x1B, 0xAD, 0x6B, 0x51, + 0x6B, 0x82, 0x6B, 0x9C, 0x65, 0xFA, 0x55, 0x98, 0x56, 0x12, 0x57, + 0xC0, 0x44, 0x98, 0x44, 0xAC, 0x44, 0x37, 0x1, 0x48, 0x1, 0x57, + 0x1, 0x8B, 0x1, 0xB4, 0x1, 0xD9, 0x1, 0xE5, 0x1, 0xF4, 0x1, + 0xF9, 0x1, 0x15, 0x2, 0x16, 0x2, 0x1A, 0x2, 0x50, 0x2, 0x62, + 0x2, 0x6D, 0x2, 0x86, 0x2, 0xA9, 0x2, 0xAA, 0x2, 0xDF, 0x2, + 0x23, 0x3, 0x3A, 0x3, 0x43, 0x3, 0x4D, 0x3, 0x65, 0x3, 0x69, + 0x3, 0x6A, 0x3, 0x55, 0x54, 0xCF, 0xAA, 0x4E, 0xC4, 0xEE, 0x42, + 0xD3, 0x6, 0x54, 0xCE, 0xE, 0x53, 0xC3, 0x15, 0x0, 0x53, 0x41, + 0x56, 0xC5, 0xC2, 0x4C, 0x4F, 0x41, 0xC4, 0xC3, 0x45, 0x45, 0xD0, + 0xC5, 0x0, 0x4F, 0x4C, 0x4F, 0xD2, 0xBF, 0x4C, 0x4F, 0x53, 0xC5, + 0xBB, 0x4F, 0x4E, 0xD4, 0x99, 0x4C, 0x45, 0x41, 0xD2, 0x92, 0x53, + 0x52, 0x4C, 0x49, 0xCE, 0xDB, 0x49, 0x4E, 0xD4, 0x1C, 0x53, 0x4E, + 0xC7, 0x1D, 0x44, 0x42, 0xCC, 0x1E, 0x4F, 0xD3, 0xC, 0x48, 0x52, + 0xA4, 0x16, 0x41, 0x4C, 0xCC, 0xB3, 0x4C, 0xD3, 0xC0, 0x0, 0x45, + 0x4C, 0x45, 0x54, 0xC5, 0xA9, 0x41, 0x54, 0xC1, 0x84, 0x49, 0xCD, + 0x86, 0x45, 0x46, 0x53, 0x54, 0xD2, 0xAC, 0x45, 0x46, 0x49, 0x4E, + 0xD4, 0xAD, 0x45, 0x46, 0x53, 0x4E, 0xC7, 0xAE, 0x45, 0x46, 0x44, + 0x42, 0xCC, 0xAF, 0x45, 0xC6, 0x97, 0x0, 0x4C, 0x53, 0xC5, 0xA1, + 0x4E, 0xC4, 0x81, 0x52, 0x41, 0x53, 0xC5, 0xA5, 0x44, 0x49, 0xD4, + 0xA6, 0x52, 0x52, 0x4F, 0xD2, 0xA7, 0x52, 0xCC, 0xD4, 0x52, 0xD2, + 0xD5, 0x58, 0xD0, 0xB, 0x4F, 0xC6, 0x23, 0x51, 0xD6, 0xF1, 0x0, + 0x4F, 0xD2, 0x82, 0xCE, 0xD1, 0x52, 0xC5, 0xF, 0x49, 0xD8, 0x1F, + 0x0, 0x4F, 0x54, 0xCF, 0x89, 0x4F, 0x20, 0x54, 0xCF, 0x89, 0x4F, + 0x53, 0x55, 0xC2, 0x8D, 0x0, 0x45, 0x58, 0xA4, 0x1A, 0x0, 0x4E, + 0x50, 0x55, 0xD4, 0x85, 0xC6, 0x8B, 0x4E, 0x53, 0x54, 0xD2, 0xD8, + 0x4E, 0xD4, 0x5, 0x4E, 0xD0, 0x10, 0x4D, 0xD0, 0xF2, 0x4E, 0x4B, + 0x45, 0x59, 0xA4, 0xDE, 0x0, 0x0, 0x45, 0xD9, 0xC9, 0x0, 0x4F, + 0x43, 0x41, 0x54, 0xC5, 0xCA, 0x50, 0x52, 0x49, 0x4E, 0xD4, 0x9D, + 0x4C, 0x49, 0x53, 0xD4, 0x9E, 0x50, 0x4F, 0xD3, 0x1B, 0x45, 0xD4, + 0x88, 0x49, 0x4E, 0xC5, 0xB0, 0x4F, 0x41, 0xC4, 0xBC, 0x49, 0x53, + 0xD4, 0x93, 0x4F, 0xC7, 0xA, 0x4F, 0xC3, 0x24, 0x45, 0xCE, 0x12, + 0x45, 0x46, 0x54, 0xA4, 0x1, 0x4F, 0xC6, 0x25, 0x0, 0x4F, 0x54, + 0x4F, 0xD2, 0xC1, 0x45, 0x52, 0x47, 0xC5, 0xBD, 0x4F, 0xC4, 0xF3, + 0x49, 0x44, 0xA4, 0x3, 0x0, 0x45, 0x58, 0xD4, 0x83, 0x45, 0xD7, + 0x94, 0x4F, 0xD4, 0xD3, 0x0, 0x50, 0x45, 0xCE, 0xBA, 0x55, 0xD4, + 0x9C, 0xCE, 0x95, 0xD2, 0xEF, 0x43, 0x54, 0xA4, 0x19, 0x50, 0x54, + 0x49, 0x4F, 0xCE, 0xB8, 0x46, 0xC6, 0xDD, 0x0, 0x52, 0x49, 0x4E, + 0xD4, 0x91, 0x4F, 0x4B, 0xC5, 0x98, 0x4F, 0xD3, 0x11, 0x45, 0x45, + 0xCB, 0x17, 0x53, 0x45, 0xD4, 0xC6, 0x52, 0x45, 0x53, 0x45, 0xD4, + 0xC7, 0x4F, 0x49, 0x4E, 0xD4, 0xDC, 0x45, 0xCE, 0x20, 0x0, 0x0, + 0x55, 0xCE, 0x8A, 0x45, 0x54, 0x55, 0x52, 0xCE, 0x8E, 0x45, 0x41, + 0xC4, 0x87, 0x45, 0x53, 0x54, 0x4F, 0x52, 0xC5, 0x8C, 0x45, 0xCD, + 0x8F, 0x45, 0x53, 0x55, 0x4D, 0xC5, 0xA8, 0x49, 0x47, 0x48, 0x54, + 0xA4, 0x2, 0x4E, 0xC4, 0x8, 0x45, 0x4E, 0x55, 0xCD, 0xAB, 0x41, + 0x4E, 0x44, 0x4F, 0x4D, 0x49, 0x5A, 0xC5, 0xB9, 0x0, 0x43, 0x52, + 0x45, 0x45, 0xCE, 0xC8, 0x54, 0x4F, 0xD0, 0x90, 0x57, 0x41, 0xD0, + 0xA4, 0x41, 0x56, 0xC5, 0xBE, 0x50, 0x43, 0xA8, 0xD2, 0x54, 0x45, + 0xD0, 0xCF, 0x47, 0xCE, 0x4, 0x51, 0xD2, 0x7, 0x49, 0xCE, 0x9, + 0x54, 0x52, 0xA4, 0x13, 0x54, 0x52, 0x49, 0x4E, 0x47, 0xA4, 0xD6, + 0x50, 0x41, 0x43, 0x45, 0xA4, 0x18, 0x4F, 0x55, 0x4E, 0xC4, 0xC4, + 0x54, 0x49, 0x43, 0xCB, 0x21, 0x54, 0x52, 0x49, 0xC7, 0x22, 0x0, + 0x48, 0x45, 0xCE, 0xCD, 0x52, 0x4F, 0xCE, 0xA2, 0x52, 0x4F, 0x46, + 0xC6, 0xA3, 0x41, 0x42, 0xA8, 0xCE, 0xCF, 0xCC, 0x41, 0xCE, 0xD, + 0x0, 0x53, 0x49, 0x4E, 0xC7, 0xD7, 0x53, 0xD2, 0xD0, 0x0, 0x41, + 0xCC, 0x14, 0x41, 0x52, 0x50, 0x54, 0xD2, 0xDA, 0x0, 0x49, 0x44, + 0x54, 0xC8, 0xA0, 0x41, 0x49, 0xD4, 0x96, 0x48, 0x49, 0x4C, 0xC5, + 0xB1, 0x45, 0x4E, 0xC4, 0xB2, 0x52, 0x49, 0x54, 0xC5, 0xB7, 0x0, + 0x4F, 0xD2, 0xF0, 0x0, 0x0, 0x0, 0xAB, 0xE9, 0xAD, 0xEA, 0xAA, + 0xEB, 0xAF, 0xEC, 0xDE, 0xED, 0xDC, 0xF4, 0xA7, 0xD9, 0xBE, 0xE6, + 0xBD, 0xE7, 0xBC, 0xE8, 0x0, 0x79, 0x79, 0x7C, 0x7C, 0x7F, 0x50, + 0x46, 0x3C, 0x32, 0x28, 0x7A, 0x7B, 0x82, 0x6B, 0x0, 0x0, 0xAD, + 0x6B, 0x3B, 0x64, 0x51, 0x6B, 0xA8, 0x66, 0x3, 0x63, 0x53, 0x6C, + 0x20, 0x63, 0x74, 0x65, 0x12, 0x63, 0x19, 0x63, 0x41, 0x63, 0x28, + 0x63, 0x31, 0x64, 0x6A, 0x63, 0x4F, 0x63, 0x89, 0x63, 0xD7, 0x18, + 0xB4, 0x65, 0x0, 0x4E, 0x45, 0x58, 0x54, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x4F, 0x52, 0x0, 0x53, 0x79, + 0x6E, 0x74, 0x61, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0, + 0x52, 0x45, 0x54, 0x55, 0x52, 0x4E, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x6F, 0x75, 0x74, 0x20, 0x47, 0x4F, 0x53, 0x55, 0x42, 0x0, 0x4F, + 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x44, 0x41, 0x54, 0x41, 0x0, + 0x49, 0x6C, 0x6C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x66, 0x75, 0x6E, + 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x0, + 0x4F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x0, 0x4F, 0x75, + 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, + 0x0, 0x55, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, + 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, + 0x0, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, + 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x61, 0x6E, 0x67, + 0x65, 0x0, 0x44, 0x75, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x20, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6F, 0x6E, + 0x0, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, + 0x79, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x0, 0x49, 0x6C, 0x6C, 0x65, + 0x67, 0x61, 0x6C, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x0, + 0x54, 0x79, 0x70, 0x65, 0x20, 0x6D, 0x69, 0x73, 0x6D, 0x61, 0x74, + 0x63, 0x68, 0x0, 0x4F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x0, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x6F, + 0x20, 0x6C, 0x6F, 0x6E, 0x67, 0x0, 0x53, 0x74, 0x72, 0x69, 0x6E, + 0x67, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x75, 0x6C, 0x61, 0x20, 0x74, + 0x6F, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x0, + 0x43, 0x61, 0x6E, 0x27, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, + 0x6E, 0x75, 0x65, 0x0, 0x55, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, + 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6E, + 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0, 0x4E, 0x6F, 0x20, 0x52, 0x45, + 0x53, 0x55, 0x4D, 0x45, 0x0, 0x52, 0x45, 0x53, 0x55, 0x4D, 0x45, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x65, 0x72, + 0x72, 0x6F, 0x72, 0x0, 0x55, 0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, + 0x61, 0x62, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0, + 0x4D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x70, 0x65, + 0x72, 0x61, 0x6E, 0x64, 0x0, 0x4C, 0x69, 0x6E, 0x65, 0x20, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, + 0x6C, 0x6F, 0x77, 0x0, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, + 0x54, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x0, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x20, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x0, 0x46, + 0x4F, 0x52, 0x20, 0x57, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, + 0x4E, 0x45, 0x58, 0x54, 0x0, 0x4F, 0x75, 0x74, 0x20, 0x6F, 0x66, + 0x20, 0x50, 0x61, 0x70, 0x65, 0x72, 0x0, 0x3F, 0x0, 0x57, 0x48, + 0x49, 0x4C, 0x45, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, + 0x20, 0x57, 0x45, 0x4E, 0x44, 0x0, 0x57, 0x45, 0x4E, 0x44, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x57, 0x48, 0x49, + 0x4C, 0x45, 0x0, 0x46, 0x49, 0x45, 0x4C, 0x44, 0x20, 0x6F, 0x76, + 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x0, 0x49, 0x6E, 0x74, 0x65, + 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0, + 0x42, 0x61, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x75, + 0x6D, 0x62, 0x65, 0x72, 0x0, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x6E, + 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x0, 0x42, 0x61, + 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x65, + 0x0, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x0, 0x3F, 0x0, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x49, 0x2F, 0x4F, 0x20, 0x45, + 0x72, 0x72, 0x6F, 0x72, 0x0, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x61, + 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x0, 0x3F, 0x0, 0x3F, 0x0, 0x44, 0x69, 0x73, 0x6B, + 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x0, 0x49, 0x6E, 0x70, 0x75, 0x74, + 0x20, 0x70, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x0, 0x42, + 0x61, 0x64, 0x20, 0x72, 0x65, 0x63, 0x6F, 0x72, 0x64, 0x20, 0x6E, + 0x75, 0x6D, 0x62, 0x65, 0x72, 0x0, 0x42, 0x61, 0x64, 0x20, 0x66, + 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x0, 0x3F, 0x0, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, + 0x6C, 0x65, 0x0, 0x54, 0x6F, 0x6F, 0x20, 0x6D, 0x61, 0x6E, 0x79, + 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x0, 0x0, 0x0, 0x0, 0xC3, + 0x1E, 0x10, 0x0, 0x52, 0xC7, 0x4F, 0x80, 0x52, 0xC7, 0x4F, 0x80, + 0xE4, 0x0, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x1, 0x0, 0x0, 0x50, 0x38, 0x0, 0x72, 0x7, 0xFE, 0xFF, + 0xF, 0x7, 0xA, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x7, 0x7, 0x20, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x18, 0x18, 0x0, 0x0, 0x0, 0x0, 0x50, 0x0, 0x1, 0x0, 0x0, + 0x0, 0x7, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x20, 0x69, 0x6E, 0x20, 0x0, + 0x4F, 0x6B, 0xFF, 0xD, 0x0, 0x42, 0x72, 0x65, 0x61, 0x6B, 0x0, + 0xBB, 0x4, 0x0, 0x3, 0xDC, 0x43, 0x8A, 0x7, 0x43, 0x3C, 0xB1, + 0x75, 0x7, 0xB9, 0x6, 0x0, 0x3, 0xD9, 0xEB, 0xF1, 0x3C, 0x82, + 0x74, 0x1, 0xC3, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x43, 0x53, 0x8B, + 0xD9, 0xB, 0xD2, 0x87, 0xDA, 0x74, 0x4, 0x87, 0xDA, 0x3B, 0xDA, + 0xB9, 0x10, 0x0, 0x5B, 0x74, 0xE6, 0x3, 0xD9, 0xEB, 0xCF, 0xB9, + 0xB5, 0x8, 0xE9, 0x91, 0x0, 0xCD, 0x86, 0x8B, 0x1E, 0x2E, 0x0, + 0x8A, 0xC7, 0x22, 0xC3, 0xFE, 0xC0, 0x74, 0x9, 0xA0, 0x4F, 0x3, + 0xA, 0xC0, 0xB2, 0x13, 0x75, 0x4D, 0xE9, 0xBD, 0x26, 0xB2, 0x3D, + 0xB9, 0xB2, 0x39, 0xB9, 0xB2, 0x36, 0xB9, 0xB2, 0x35, 0xB9, 0xB2, + 0x34, 0xB9, 0xB2, 0x33, 0xB9, 0xB2, 0x3E, 0xB9, 0xB2, 0x37, 0xB9, + 0xB2, 0x40, 0xB9, 0xB2, 0x3F, 0xB9, 0xB2, 0x32, 0xB9, 0xB2, 0x43, + 0xB9, 0xB2, 0x3A, 0xEB, 0x22, 0x8B, 0x1E, 0x37, 0x3, 0x89, 0x1E, + 0x2E, 0x0, 0xB2, 0x2, 0xB9, 0xB2, 0xB, 0xB9, 0xB2, 0x1, 0xB9, + 0xB2, 0xA, 0xB9, 0xB2, 0x12, 0xB9, 0xB2, 0x14, 0xB9, 0xB2, 0x6, + 0xB9, 0xB2, 0x16, 0xB9, 0xB2, 0xD, 0x32, 0xC0, 0xA2, 0x36, 0x5, + 0xA2, 0x5F, 0x0, 0xA2, 0x62, 0x4, 0xA2, 0x60, 0x0, 0x8B, 0x1E, + 0x2E, 0x0, 0x89, 0x1E, 0x47, 0x3, 0x32, 0xC0, 0xA2, 0x65, 0x4, + 0xA2, 0x6B, 0x4, 0x8A, 0xC7, 0x22, 0xC3, 0xFE, 0xC0, 0x74, 0x4, + 0x89, 0x1E, 0x49, 0x3, 0xB9, 0xC, 0x8, 0x8B, 0x1E, 0x45, 0x3, + 0xE9, 0xB1, 0x25, 0x59, 0x8A, 0xC2, 0x8A, 0xCA, 0xA2, 0x28, 0x0, + 0x8B, 0x1E, 0x43, 0x3, 0x89, 0x1E, 0x4B, 0x3, 0x87, 0xDA, 0x8B, + 0x1E, 0x47, 0x3, 0x8A, 0xC7, 0x22, 0xC3, 0xFE, 0xC0, 0x74, 0xA, + 0x89, 0x1E, 0x54, 0x3, 0x87, 0xDA, 0x89, 0x1E, 0x56, 0x3, 0x8B, + 0x1E, 0x4D, 0x3, 0xB, 0xDB, 0x87, 0xDA, 0xBB, 0x4F, 0x3, 0x74, + 0xB, 0x22, 0x7, 0x75, 0x7, 0xFE, 0xF, 0x87, 0xDA, 0xE9, 0x73, + 0x6, 0x32, 0xC0, 0x88, 0x7, 0x8A, 0xD1, 0xE8, 0x8, 0x24, 0xBB, + 0xB4, 0x3, 0xCD, 0x87, 0x8A, 0xC2, 0x3C, 0x44, 0x73, 0x8, 0x3C, + 0x32, 0x73, 0x6, 0x3C, 0x1F, 0x72, 0x6, 0xB0, 0x28, 0x2C, 0x13, + 0x8A, 0xD0, 0x2E, 0x8A, 0x7, 0x43, 0xA, 0xC0, 0x75, 0xF8, 0x4B, + 0x43, 0xFE, 0xCA, 0x75, 0xF2, 0x53, 0x8B, 0x1E, 0x47, 0x3, 0x5E, + 0x87, 0xDE, 0x56, 0xCD, 0x88, 0x2E, 0x8A, 0x7, 0x3C, 0x3F, 0x75, + 0x6, 0x5B, 0xBB, 0xB4, 0x3, 0xEB, 0xD4, 0xE8, 0xBE, 0x72, 0x5B, + 0xBA, 0xFE, 0xFF, 0x3B, 0xDA, 0xCD, 0x89, 0x75, 0x3, 0xE9, 0xEE, + 0x75, 0x8A, 0xC7, 0x22, 0xC3, 0xFE, 0xC0, 0x74, 0x3, 0xE8, 0x99, + 0x5C, 0xB0, 0xFF, 0xE8, 0xF1, 0x22, 0xB0, 0x59, 0xCD, 0x8A, 0x32, + 0xC0, 0xA2, 0x6F, 0x0, 0xE8, 0x3B, 0x3C, 0xE8, 0x9A, 0x23, 0xBB, + 0x2D, 0x7, 0xE8, 0x8C, 0x72, 0xA0, 0x28, 0x0, 0x2C, 0x2, 0x75, + 0x3, 0xE8, 0xEE, 0x2D, 0xCD, 0x8B, 0xBB, 0xFF, 0xFF, 0x89, 0x1E, + 0x2E, 0x0, 0xA0, 0x3E, 0x3, 0xA, 0xC0, 0x74, 0x49, 0x8B, 0x1E, + 0x3F, 0x3, 0x53, 0xE8, 0x65, 0x5C, 0x5A, 0x52, 0xE8, 0x77, 0x1, + 0xB0, 0x2A, 0x72, 0x2, 0xB0, 0x20, 0xE8, 0xAC, 0x22, 0xE8, 0x84, + 0x28, 0x5A, 0x73, 0xE, 0x32, 0xC0, 0xA2, 0x3E, 0x3, 0xEB, 0xB0, + 0x32, 0xC0, 0xA2, 0x3E, 0x3, 0xEB, 0x15, 0x8B, 0x1E, 0x41, 0x3, + 0x3, 0xDA, 0x72, 0xF1, 0x52, 0xBA, 0xF9, 0xFF, 0x3B, 0xDA, 0x5A, + 0x73, 0xE8, 0x89, 0x1E, 0x3F, 0x3, 0xA0, 0xF7, 0x1, 0xA, 0xC0, + 0x74, 0xAA, 0xE9, 0xA8, 0x2D, 0xE8, 0x51, 0x28, 0x72, 0xA2, 0xE8, + 0xE9, 0x5, 0xFE, 0xC0, 0xFE, 0xC8, 0x74, 0x99, 0x9C, 0xE8, 0x2D, + 0x7, 0x73, 0x8, 0xE8, 0x93, 0x26, 0x75, 0x3, 0xE9, 0x76, 0xFE, + 0xE8, 0x38, 0x4, 0x8A, 0x7, 0x3C, 0x20, 0x75, 0x3, 0xE8, 0xF0, + 0x5B, 0x52, 0xE8, 0x31, 0x1, 0x5A, 0x9D, 0x89, 0x1E, 0x43, 0x3, + 0xCD, 0x8C, 0x72, 0x3, 0xE9, 0x6F, 0x3B, 0x52, 0x51, 0xE8, 0xEE, + 0x3D, 0xE8, 0xB0, 0x5, 0xA, 0xC0, 0x9C, 0x89, 0x16, 0x49, 0x3, + 0xE8, 0xF0, 0x0, 0x72, 0x9, 0x9D, 0x9C, 0x75, 0x3, 0xE9, 0xB0, + 0x7, 0xA, 0xC0, 0x51, 0x9C, 0x53, 0xE8, 0xAD, 0x1A, 0x5B, 0x9D, + 0x59, 0x51, 0x73, 0x3, 0xE8, 0xD6, 0x18, 0x5A, 0x9D, 0x52, 0x74, + 0x47, 0x5A, 0xA0, 0x6B, 0x4, 0xA, 0xC0, 0x75, 0x8, 0x8B, 0x1E, + 0xA, 0x3, 0x89, 0x1E, 0x2F, 0x3, 0x8B, 0x1E, 0x58, 0x3, 0x5E, + 0x87, 0xDE, 0x56, 0x59, 0x53, 0x3, 0xD9, 0x53, 0xE8, 0x15, 0x5B, + 0x5B, 0x89, 0x1E, 0x58, 0x3, 0x87, 0xDA, 0x88, 0x3F, 0x59, 0x5A, + 0x53, 0x43, 0x43, 0x89, 0x17, 0x43, 0x43, 0xBA, 0xB8, 0x0, 0x49, + 0x49, 0x49, 0x49, 0x8B, 0xF2, 0xAC, 0x88, 0x7, 0x43, 0x42, 0x49, + 0x8A, 0xC1, 0xA, 0xC5, 0x75, 0xF2, 0xCD, 0x8D, 0x5A, 0xE8, 0x1E, + 0x0, 0x8B, 0x1E, 0xE9, 0x4, 0x89, 0x1E, 0x52, 0x3, 0xE8, 0x49, + 0x23, 0xCD, 0x8E, 0x8B, 0x1E, 0x52, 0x3, 0x89, 0x1E, 0xE9, 0x4, + 0xE9, 0xD8, 0xFE, 0x8B, 0x1E, 0x30, 0x0, 0x87, 0xDA, 0x8A, 0xFE, + 0x8A, 0xDA, 0x8A, 0x7, 0x43, 0xA, 0x7, 0x75, 0x1, 0xC3, 0x43, + 0x43, 0x43, 0x8A, 0x7, 0xA, 0xC0, 0x74, 0x10, 0x3C, 0x20, 0x73, + 0xF5, 0x3C, 0xB, 0x72, 0xF1, 0xE8, 0xFD, 0x4, 0xE8, 0xF9, 0x4, + 0xEB, 0xEC, 0x43, 0x87, 0xDA, 0x89, 0x17, 0xEB, 0xD4, 0xBA, 0x0, + 0x0, 0x52, 0x74, 0x17, 0x3C, 0x2C, 0x74, 0x13, 0x5A, 0xE8, 0x23, + 0x6, 0x52, 0x74, 0x1D, 0x3C, 0x2C, 0x74, 0x19, 0xE8, 0xAF, 0x23, + 0xEA, 0x74, 0x2, 0x3C, 0x2C, 0xBA, 0xFA, 0xFF, 0x74, 0x3, 0xE8, + 0xC, 0x6, 0x74, 0x7, 0x3C, 0x2C, 0x74, 0x3, 0xE9, 0x63, 0xFD, + 0x89, 0x1E, 0x3B, 0x3, 0x87, 0xDA, 0x5A, 0x5E, 0x87, 0xDE, 0x56, + 0x53, 0x8B, 0x1E, 0x30, 0x0, 0x8B, 0xCB, 0x8A, 0x7, 0x43, 0xA, + 0x7, 0x9F, 0x4B, 0x9E, 0x74, 0x95, 0x43, 0x43, 0x8B, 0x1F, 0x3B, + 0xDA, 0x8B, 0xD9, 0x8B, 0x1F, 0xF5, 0x74, 0x88, 0xF5, 0x73, 0x85, + 0xEB, 0xE2, 0x32, 0xC0, 0xA2, 0xFD, 0x2, 0xA2, 0xFC, 0x2, 0xCD, + 0x8F, 0xB9, 0x3B, 0x1, 0xBA, 0xB8, 0x0, 0x8A, 0x7, 0xA, 0xC0, + 0x75, 0x20, 0xBB, 0x40, 0x1, 0x8A, 0xC3, 0x2A, 0xC1, 0x8A, 0xC8, + 0x8A, 0xC7, 0x1A, 0xC5, 0x8A, 0xE8, 0xBB, 0xB7, 0x0, 0x32, 0xC0, + 0x8B, 0xFA, 0xAA, 0x42, 0x8B, 0xFA, 0xAA, 0x42, 0x8B, 0xFA, 0xAA, + 0xC3, 0x3C, 0x22, 0x75, 0x3, 0xE9, 0x33, 0x0, 0x3C, 0x20, 0x74, + 0x9, 0xA0, 0xFC, 0x2, 0xA, 0xC0, 0x8A, 0x7, 0x74, 0x2F, 0x43, + 0x50, 0xE8, 0x54, 0x2, 0x58, 0x2C, 0x3A, 0x74, 0x6, 0x3C, 0x4A, + 0x75, 0x8, 0xB0, 0x1, 0xA2, 0xFC, 0x2, 0xA2, 0xFD, 0x2, 0x2C, + 0x55, 0x75, 0xAC, 0x50, 0x8A, 0x7, 0xA, 0xC0, 0x58, 0x74, 0xAA, + 0x3A, 0x7, 0x74, 0xDA, 0x50, 0x8A, 0x7, 0x43, 0xE8, 0x2C, 0x2, + 0xEB, 0xEC, 0x43, 0xA, 0xC0, 0x78, 0x92, 0x4B, 0x3C, 0x3F, 0xB0, + 0x91, 0x52, 0x51, 0x75, 0x3, 0xE9, 0xE2, 0x0, 0xBA, 0x6B, 0x3, + 0xE8, 0xD2, 0xE, 0xE8, 0x29, 0x24, 0x73, 0x3, 0xE9, 0x2E, 0x1, + 0x53, 0xBA, 0x5E, 0xB, 0xE8, 0x20, 0x0, 0x75, 0x3E, 0xE8, 0xF0, + 0x3, 0xBA, 0x62, 0xB, 0xE8, 0x15, 0x0, 0xB0, 0x89, 0x75, 0x3, + 0xEB, 0xB, 0x90, 0xBA, 0x65, 0xB, 0xE8, 0x8, 0x0, 0x75, 0x26, + 0xB0, 0x8D, 0x59, 0xE9, 0xAD, 0x0, 0x8B, 0xF2, 0x2E, 0xAC, 0xA, + 0xC0, 0x75, 0x1, 0xC3, 0x8A, 0xC8, 0xE8, 0x95, 0xE, 0x3A, 0xC1, + 0x75, 0xF6, 0x43, 0x42, 0xEB, 0xEA, 0x47, 0x4F, 0x20, 0x0, 0x54, + 0x4F, 0x0, 0x55, 0x42, 0x0, 0x5B, 0xE8, 0x7F, 0xE, 0x53, 0xCD, + 0x90, 0xBB, 0x3, 0x1, 0x2C, 0x41, 0x2, 0xC0, 0x8A, 0xC8, 0xB5, + 0x0, 0x3, 0xD9, 0x2E, 0x8B, 0x17, 0x5B, 0x43, 0x53, 0xE8, 0x66, + 0xE, 0x8A, 0xC8, 0x8B, 0xF2, 0x2E, 0xAC, 0x24, 0x7F, 0x75, 0x3, + 0xE9, 0xAB, 0x1, 0x43, 0x3A, 0xC1, 0x75, 0x50, 0x8B, 0xF2, 0x2E, + 0xAC, 0x42, 0xA, 0xC0, 0x79, 0xE2, 0x8A, 0xC1, 0x3C, 0x28, 0x74, + 0x1D, 0x8B, 0xF2, 0x2E, 0xAC, 0x3C, 0xD1, 0x74, 0x15, 0x3C, 0xD0, + 0x74, 0x11, 0xE8, 0x36, 0xE, 0x3C, 0x2E, 0x74, 0x3, 0xE8, 0xC7, + 0x15, 0xB0, 0x0, 0x72, 0x3, 0xE9, 0x7A, 0x1, 0x58, 0x8B, 0xF2, + 0x2E, 0xAC, 0xCD, 0x91, 0xA, 0xC0, 0x79, 0x3, 0xE9, 0x23, 0x0, + 0x59, 0x5A, 0xC, 0x80, 0x50, 0xB0, 0xFF, 0xE8, 0x51, 0x1, 0x32, + 0xC0, 0xA2, 0xFD, 0x2, 0x58, 0xE8, 0x48, 0x1, 0xE9, 0xB2, 0xFE, + 0x5B, 0x8B, 0xF2, 0x2E, 0xAC, 0x42, 0xA, 0xC0, 0x79, 0xF7, 0x42, + 0xEB, 0x8D, 0x4B, 0x50, 0xCD, 0x92, 0xBA, 0xC, 0xC, 0x8A, 0xC8, + 0x8B, 0xF2, 0x2E, 0xAC, 0xA, 0xC0, 0x74, 0x17, 0x42, 0x3A, 0xC1, + 0x75, 0xF3, 0xEB, 0x14, 0x8C, 0xAA, 0xAB, 0xA9, 0xA6, 0xA8, 0xD4, + 0xA1, 0x8A, 0x93, 0x9E, 0x89, 0x8E, 0xCD, 0x8D, 0x0, 0x32, 0xC0, + 0xEB, 0x2, 0xB0, 0x1, 0xA2, 0xFD, 0x2, 0x58, 0x59, 0x5A, 0x3C, + 0xA1, 0x50, 0x75, 0x3, 0xE8, 0xFA, 0x0, 0x58, 0x3C, 0xB1, 0x75, + 0x5, 0xE8, 0xF4, 0x0, 0xB0, 0xE9, 0x3C, 0xD9, 0x74, 0x3, 0xE9, + 0xC6, 0x0, 0x50, 0xE8, 0xE5, 0x0, 0xB0, 0x8F, 0xE8, 0xE2, 0x0, + 0x58, 0x50, 0xE9, 0xAD, 0xFE, 0x8A, 0x7, 0x3C, 0x2E, 0x74, 0xE, + 0x3C, 0x3A, 0x72, 0x3, 0xE9, 0x90, 0x0, 0x3C, 0x30, 0x73, 0x3, + 0xE9, 0x89, 0x0, 0xA0, 0xFD, 0x2, 0xA, 0xC0, 0x8A, 0x7, 0x59, + 0x5A, 0x79, 0x3, 0xE9, 0x62, 0xFE, 0x74, 0x27, 0x3C, 0x2E, 0x75, + 0x3, 0xE9, 0x59, 0xFE, 0xB0, 0xE, 0xE8, 0xAD, 0x0, 0x52, 0xE8, + 0xE8, 0x3, 0xE8, 0xFD, 0x0, 0x5E, 0x87, 0xDE, 0x56, 0x87, 0xDA, + 0x8A, 0xC3, 0xE8, 0x9B, 0x0, 0x8A, 0xC7, 0x5B, 0xE8, 0x95, 0x0, + 0xE9, 0xFF, 0xFD, 0x52, 0x51, 0x8A, 0x7, 0xE8, 0x1F, 0x5D, 0xE8, + 0xDF, 0x0, 0x59, 0x5A, 0x53, 0xA0, 0xFB, 0x2, 0x3C, 0x2, 0x75, + 0x1A, 0x8B, 0x1E, 0xA3, 0x4, 0x8A, 0xC7, 0xA, 0xC0, 0xB0, 0x2, + 0x75, 0xE, 0x8A, 0xC3, 0x8A, 0xFB, 0xB3, 0xF, 0x3C, 0xA, 0x73, + 0xC8, 0x4, 0x11, 0xEB, 0xCB, 0x50, 0xD0, 0xC8, 0x4, 0x1B, 0xE8, + 0x5C, 0x0, 0xBB, 0xA3, 0x4, 0xE8, 0x4F, 0xE, 0x72, 0x3, 0xBB, + 0x9F, 0x4, 0x58, 0x50, 0x8A, 0x7, 0xE8, 0x4A, 0x0, 0x58, 0x43, + 0xFE, 0xC8, 0x75, 0xF4, 0x5B, 0xE9, 0xAD, 0xFD, 0xBA, 0x6A, 0x3, + 0x42, 0x8B, 0xF2, 0x2E, 0xAC, 0x24, 0x7F, 0x75, 0x3, 0xE9, 0x6B, + 0x0, 0x42, 0x3A, 0x7, 0x8B, 0xF2, 0x2E, 0xAC, 0x75, 0xEB, 0xE9, + 0x6F, 0x0, 0x3C, 0x26, 0x74, 0x3, 0xE9, 0xC5, 0xFD, 0x53, 0xE8, + 0xB, 0x2, 0x5B, 0xE8, 0xD7, 0xC, 0x3C, 0x48, 0xB0, 0xB, 0x75, + 0x2, 0xB0, 0xC, 0xE8, 0xB, 0x0, 0x52, 0x51, 0xE8, 0xD9, 0xC, + 0x59, 0xE9, 0x5C, 0xFF, 0xB0, 0x3A, 0x8B, 0xFA, 0xAA, 0x42, 0x49, + 0x8A, 0xC1, 0xA, 0xC5, 0x74, 0x1, 0xC3, 0xB2, 0x17, 0xE9, 0x9B, + 0xFA, 0xCD, 0x93, 0x5B, 0x4B, 0xFE, 0xC8, 0xA2, 0xFD, 0x2, 0x59, + 0x5A, 0xE8, 0xA0, 0xC, 0xE8, 0xDE, 0xFF, 0x43, 0xE8, 0x99, 0xC, + 0xE8, 0xF0, 0x21, 0x73, 0xF4, 0x3C, 0x3A, 0x73, 0x8, 0x3C, 0x30, + 0x73, 0xEC, 0x3C, 0x2E, 0x74, 0xE8, 0xE9, 0x33, 0xFD, 0x8A, 0x7, + 0x3C, 0x20, 0x73, 0xA, 0x3C, 0x9, 0x74, 0x6, 0x3C, 0xA, 0x74, + 0x2, 0xB0, 0x20, 0x50, 0xA0, 0xFD, 0x2, 0xFE, 0xC0, 0x74, 0x2, + 0xFE, 0xC8, 0xE9, 0x9F, 0xFE, 0x4B, 0x8A, 0x7, 0x3C, 0x20, 0x74, + 0xF9, 0x3C, 0x9, 0x74, 0xF5, 0x3C, 0xA, 0x74, 0xF1, 0x43, 0xC3, + 0xB0, 0x64, 0xA2, 0x39, 0x3, 0xE8, 0xD2, 0x29, 0xE8, 0x55, 0x20, + 0xE7, 0x52, 0x89, 0x16, 0x3B, 0x3, 0xA0, 0xFB, 0x2, 0x50, 0xE8, + 0x7B, 0x9, 0x58, 0x53, 0xE8, 0x29, 0x10, 0xBB, 0x56, 0x4, 0xE8, + 0x45, 0x56, 0x5B, 0x5A, 0x59, 0x53, 0xE8, 0x9D, 0x3, 0x89, 0x1E, + 0x35, 0x3, 0xBB, 0x2, 0x0, 0x3, 0xDC, 0xE8, 0x73, 0xF9, 0x75, + 0x1E, 0x3, 0xD9, 0x52, 0x4B, 0x8A, 0x37, 0x4B, 0x8A, 0x17, 0x43, + 0x43, 0x53, 0x8B, 0x1E, 0x35, 0x3, 0x3B, 0xDA, 0x5B, 0x5A, 0x75, + 0xE5, 0x5A, 0x8B, 0xE3, 0x89, 0x1E, 0x45, 0x3, 0xB1, 0x5A, 0x87, + 0xDA, 0xB1, 0x8, 0xE8, 0xE3, 0x1E, 0x53, 0x8B, 0x1E, 0x35, 0x3, + 0x5E, 0x87, 0xDE, 0x56, 0x53, 0x8B, 0x1E, 0x2E, 0x0, 0x5E, 0x87, + 0xDE, 0x56, 0xE8, 0xED, 0x1F, 0xCC, 0xE8, 0x1A, 0xD, 0x75, 0x3, + 0xE9, 0xC6, 0xF9, 0x72, 0x3, 0xE9, 0xC1, 0xF9, 0x9C, 0xE8, 0xE, + 0x9, 0x9D, 0x53, 0x78, 0x3, 0xE9, 0x1C, 0x0, 0xE8, 0x8A, 0x5D, + 0x5E, 0x87, 0xDE, 0x56, 0xBA, 0x1, 0x0, 0x8A, 0x7, 0x3C, 0xCF, + 0x75, 0x3, 0xE8, 0xD4, 0x10, 0x52, 0x53, 0x87, 0xDA, 0xE8, 0xC6, + 0x56, 0xEB, 0x27, 0xE8, 0x12, 0x5D, 0xE8, 0xB1, 0x55, 0x5B, 0x51, + 0x52, 0xB9, 0x0, 0x81, 0x8A, 0xF1, 0x8A, 0xD6, 0xCD, 0x94, 0x8A, + 0x7, 0x3C, 0xCF, 0xB0, 0x1, 0x75, 0xE, 0xE8, 0xCF, 0x8, 0x53, + 0xE8, 0xF4, 0x5C, 0xE8, 0x93, 0x55, 0xE8, 0x12, 0x6D, 0x5B, 0x51, + 0x52, 0x8A, 0xC8, 0xE8, 0xBA, 0xC, 0x8A, 0xE8, 0x51, 0x4B, 0xE8, + 0xAB, 0x0, 0x74, 0x3, 0xE9, 0x47, 0xF9, 0xE8, 0x81, 0x16, 0xE8, + 0xA0, 0x0, 0x53, 0x53, 0x8B, 0x1E, 0x5A, 0x4, 0x89, 0x1E, 0x2E, + 0x0, 0x8B, 0x1E, 0x3B, 0x3, 0x5E, 0x87, 0xDE, 0x56, 0xB5, 0x82, + 0x51, 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x9F, 0x86, 0xC4, 0x50, + 0x86, 0xC4, 0xE9, 0xCF, 0x64, 0xB5, 0x82, 0x51, 0xEB, 0x42, 0xE9, + 0xCB, 0xF8, 0xE9, 0x12, 0xF9, 0xC3, 0xE8, 0x75, 0x0, 0xEB, 0x50, + 0xCD, 0x95, 0xE9, 0x63, 0xF, 0xE9, 0xD5, 0x2, 0xA, 0xC0, 0x75, + 0xEB, 0x43, 0x8A, 0x7, 0x43, 0xA, 0x7, 0x74, 0xE0, 0x43, 0x8B, + 0x17, 0x43, 0x89, 0x16, 0x2E, 0x0, 0xF6, 0x6, 0x76, 0x4, 0xFF, + 0x74, 0x26, 0x53, 0xB0, 0x5B, 0xE8, 0xCA, 0x1C, 0x87, 0xDA, 0xE8, + 0x70, 0x56, 0xB0, 0x5D, 0xE8, 0xC0, 0x1C, 0x5B, 0xEB, 0x13, 0xCD, + 0x96, 0xE8, 0x9B, 0x1D, 0x89, 0x26, 0x45, 0x3, 0x89, 0x1E, 0x43, + 0x3, 0x8A, 0x7, 0x3C, 0x3A, 0x75, 0xBF, 0x43, 0x8A, 0x7, 0x3C, + 0x3A, 0x72, 0xAB, 0xBA, 0xE8, 0xE, 0x52, 0x74, 0xA4, 0x2C, 0x81, + 0x72, 0xAB, 0x3C, 0x4A, 0x73, 0xA2, 0x32, 0xE4, 0x2, 0xC0, 0x8B, + 0xF0, 0xCD, 0x97, 0x2E, 0xFF, 0xB4, 0x25, 0x0, 0x43, 0x8A, 0x7, + 0x3C, 0x3A, 0x72, 0x1, 0xC3, 0x3C, 0x20, 0x74, 0xF4, 0x72, 0x8, + 0x3C, 0x30, 0xF5, 0xFE, 0xC0, 0xFE, 0xC8, 0xC3, 0xA, 0xC0, 0x74, + 0xFB, 0x3C, 0xB, 0x72, 0x72, 0x3C, 0x1E, 0x75, 0x6, 0xA0, 0x0, + 0x3, 0xA, 0xC0, 0xC3, 0x3C, 0x10, 0x74, 0x3C, 0x50, 0x43, 0xA2, + 0x0, 0x3, 0x2C, 0x1C, 0x73, 0x39, 0x2C, 0xF5, 0x73, 0x7, 0x3C, + 0xFE, 0x75, 0x1B, 0x8A, 0x7, 0x43, 0x89, 0x1E, 0xFE, 0x2, 0xB7, + 0x0, 0x8A, 0xD8, 0x89, 0x1E, 0x2, 0x3, 0xB0, 0x2, 0xA2, 0x1, + 0x3, 0xBB, 0x4, 0x0, 0x58, 0xA, 0xC0, 0xC3, 0x8A, 0x7, 0x43, + 0x43, 0x89, 0x1E, 0xFE, 0x2, 0x4B, 0x8A, 0x3F, 0xEB, 0xE1, 0xE8, + 0x37, 0x0, 0x8B, 0x1E, 0xFE, 0x2, 0xEB, 0x93, 0xFE, 0xC0, 0xD0, + 0xC0, 0xA2, 0x1, 0x3, 0x52, 0x51, 0xBA, 0x2, 0x3, 0x87, 0xDA, + 0x8A, 0xE8, 0xE8, 0x13, 0x55, 0x87, 0xDA, 0x59, 0x5A, 0x89, 0x1E, + 0xFE, 0x2, 0x58, 0xBB, 0x4, 0x0, 0xA, 0xC0, 0xC3, 0x3C, 0x9, + 0x72, 0x3, 0xE9, 0x69, 0xFF, 0x3C, 0x30, 0xF5, 0xFE, 0xC0, 0xFE, + 0xC8, 0xC3, 0xA0, 0x0, 0x3, 0x3C, 0xF, 0x73, 0x17, 0x3C, 0xD, + 0x72, 0x13, 0x8B, 0x1E, 0x2, 0x3, 0x75, 0xA, 0x43, 0x43, 0x43, + 0x8A, 0x17, 0x43, 0x8A, 0x37, 0x87, 0xDA, 0xE9, 0x6A, 0x54, 0xA0, + 0x1, 0x3, 0xA2, 0xFB, 0x2, 0x3C, 0x8, 0x74, 0x11, 0x8B, 0x1E, + 0x2, 0x3, 0x89, 0x1E, 0xA3, 0x4, 0x8B, 0x1E, 0x4, 0x3, 0x89, + 0x1E, 0xA5, 0x4, 0xC3, 0xBB, 0x2, 0x3, 0xE9, 0x9D, 0x54, 0xB2, + 0x3, 0xB9, 0xB2, 0x2, 0xB9, 0xB2, 0x4, 0xB9, 0xB2, 0x8, 0xE8, + 0x3A, 0x1F, 0xB9, 0xBE, 0x7, 0x51, 0x72, 0xE5, 0x2C, 0x41, 0x8A, + 0xC8, 0x8A, 0xE8, 0xE8, 0x5, 0xFF, 0x3C, 0xEA, 0x75, 0xF, 0xE8, + 0xFE, 0xFE, 0xE8, 0x21, 0x1F, 0x72, 0xD0, 0x2C, 0x41, 0x8A, 0xE8, + 0xE8, 0xF2, 0xFE, 0x8A, 0xC5, 0x2A, 0xC1, 0x72, 0xC3, 0xFE, 0xC0, + 0x5E, 0x87, 0xDE, 0x56, 0xBB, 0x60, 0x3, 0xB5, 0x0, 0x3, 0xD9, + 0x88, 0x17, 0x43, 0xFE, 0xC8, 0x75, 0xF9, 0x5B, 0x8A, 0x7, 0x3C, + 0x2C, 0x75, 0xA8, 0xE8, 0xCE, 0xFE, 0xEB, 0xB5, 0xE8, 0xC9, 0xFE, + 0xE8, 0xB3, 0xE, 0x79, 0x9B, 0xB2, 0x5, 0xE9, 0x7A, 0xF7, 0x8A, + 0x7, 0x3C, 0x2E, 0x8B, 0x16, 0x49, 0x3, 0x75, 0x3, 0xE9, 0xB2, + 0xFE, 0x4B, 0xE8, 0xAE, 0xFE, 0x3C, 0xE, 0x74, 0x2, 0x3C, 0xD, + 0x8B, 0x16, 0x2, 0x3, 0x75, 0x3, 0xE9, 0x9F, 0xFE, 0x32, 0xC0, + 0xA2, 0x0, 0x3, 0x4B, 0xBA, 0x0, 0x0, 0xE8, 0x93, 0xFE, 0x72, + 0x1, 0xC3, 0x53, 0x9F, 0x50, 0xBB, 0x98, 0x19, 0x3B, 0xDA, 0x72, + 0x1B, 0x8A, 0xFE, 0x8A, 0xDA, 0x3, 0xDA, 0x3, 0xDB, 0x3, 0xDA, + 0x3, 0xDB, 0x58, 0x9E, 0x2C, 0x30, 0x8A, 0xD0, 0xB6, 0x0, 0x3, + 0xDA, 0x87, 0xDA, 0x5B, 0xEB, 0xD5, 0x58, 0x9E, 0x5B, 0xC3, 0x75, + 0x3, 0xE9, 0x7C, 0x1C, 0x3C, 0xE, 0x74, 0x7, 0x3C, 0xD, 0x74, + 0x3, 0xE9, 0xA3, 0x30, 0xE8, 0x75, 0x1C, 0xB9, 0xE8, 0xE, 0xEB, + 0x1E, 0xB1, 0x3, 0xE8, 0x2, 0x1C, 0xE8, 0x95, 0xFF, 0x59, 0x53, + 0x53, 0x8B, 0x1E, 0x2E, 0x0, 0x5E, 0x87, 0xDE, 0x56, 0xB0, 0x8D, + 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x51, 0xEB, 0x4, 0x51, 0xE8, + 0x7B, 0xFF, 0xA0, 0x0, 0x3, 0x3C, 0xD, 0x87, 0xDA, 0x74, 0xBC, + 0x3C, 0xE, 0x74, 0x3, 0xE9, 0xBE, 0xF6, 0x87, 0xDA, 0x53, 0x8B, + 0x1E, 0xFE, 0x2, 0x5E, 0x87, 0xDE, 0x56, 0xE8, 0x51, 0x0, 0x43, + 0x53, 0x8B, 0x1E, 0x2E, 0x0, 0x3B, 0xDA, 0x5B, 0x73, 0x3, 0xE8, + 0x4F, 0xF9, 0x72, 0x3, 0xE8, 0x46, 0xF9, 0x73, 0xD, 0x49, 0xB0, + 0xD, 0xA2, 0x3D, 0x3, 0x5B, 0xE8, 0xFC, 0x12, 0x8B, 0xD9, 0xC3, + 0xB2, 0x8, 0xE9, 0xA3, 0xF6, 0xCD, 0x98, 0x75, 0xF6, 0xB6, 0xFF, + 0xE8, 0xFA, 0xF5, 0x8B, 0xE3, 0x89, 0x1E, 0x45, 0x3, 0x3C, 0x8D, + 0xB2, 0x3, 0x74, 0x3, 0xE9, 0x8B, 0xF6, 0x5B, 0x89, 0x1E, 0x2E, + 0x0, 0xBB, 0xE8, 0xE, 0x5E, 0x87, 0xDE, 0x56, 0xB0, 0x5B, 0xB1, + 0x3A, 0xEB, 0x2, 0xB1, 0x0, 0xB5, 0x0, 0x8A, 0xC1, 0x8A, 0xCD, + 0x8A, 0xE8, 0x4B, 0xE8, 0xB0, 0xFD, 0xA, 0xC0, 0x74, 0xBE, 0x3A, + 0xC5, 0x74, 0xBA, 0x43, 0x3C, 0x22, 0x74, 0xE9, 0xFE, 0xC0, 0x74, + 0xEC, 0x2C, 0x8C, 0x75, 0xE7, 0x3A, 0xC5, 0x12, 0xC6, 0x8A, 0xF0, + 0xEB, 0xDF, 0x58, 0x4, 0x3, 0xEB, 0x14, 0xE8, 0xDC, 0x25, 0xE8, + 0x5F, 0x1C, 0xE7, 0x89, 0x16, 0x3B, 0x3, 0x52, 0xA0, 0xFB, 0x2, + 0x50, 0xE8, 0x85, 0x5, 0x58, 0x5E, 0x87, 0xDE, 0x56, 0x8A, 0xE8, + 0xA0, 0xFB, 0x2, 0x3A, 0xC5, 0x8A, 0xC5, 0x74, 0x6, 0xE8, 0x25, + 0xC, 0xA0, 0xFB, 0x2, 0xBA, 0xA3, 0x4, 0x3C, 0x5, 0x72, 0x3, + 0xBA, 0x9F, 0x4, 0x53, 0x3C, 0x3, 0x75, 0x31, 0x8B, 0x1E, 0xA3, + 0x4, 0x53, 0x43, 0x8B, 0x17, 0x8B, 0x1E, 0x30, 0x0, 0x3B, 0xDA, + 0x73, 0x11, 0x8B, 0x1E, 0x5C, 0x3, 0x3B, 0xDA, 0x5A, 0x73, 0x11, + 0xBB, 0x2C, 0x3, 0x3B, 0xDA, 0x73, 0xA, 0xB0, 0x5A, 0xE8, 0xE6, + 0x16, 0x87, 0xDA, 0xE8, 0x33, 0x14, 0xE8, 0xDE, 0x16, 0x5E, 0x87, + 0xDE, 0x56, 0xE8, 0xBE, 0x52, 0x5A, 0x5B, 0xC3, 0x3C, 0xA7, 0x75, + 0x32, 0xE8, 0x18, 0xFD, 0xE8, 0xEC, 0x1B, 0x89, 0xE8, 0x5F, 0xFE, + 0xB, 0xD2, 0x74, 0xD, 0xE8, 0x4F, 0xF8, 0x8A, 0xF5, 0x8A, 0xD1, + 0x5B, 0x72, 0x3, 0xE9, 0x13, 0xFF, 0x89, 0x16, 0x4D, 0x3, 0x72, + 0xDA, 0xA0, 0x4F, 0x3, 0xA, 0xC0, 0x8A, 0xC2, 0x74, 0xD1, 0xA0, + 0x28, 0x0, 0x8A, 0xD0, 0xE9, 0xCE, 0xF5, 0xE8, 0xE5, 0xC, 0x8A, + 0x7, 0x8A, 0xE8, 0x3C, 0x8D, 0x74, 0x5, 0xE8, 0xB2, 0x1B, 0x89, + 0x4B, 0x8A, 0xCA, 0xFE, 0xC9, 0x8A, 0xC5, 0x75, 0x3, 0xE9, 0xB9, + 0xFC, 0xE8, 0x1A, 0xFE, 0x3C, 0x2C, 0x75, 0xA7, 0xEB, 0xEE, 0xA0, + 0x4F, 0x3, 0xA, 0xC0, 0x75, 0x8, 0x33, 0xC0, 0xA3, 0x4D, 0x3, + 0xE9, 0x66, 0xF5, 0xFE, 0xC0, 0xA2, 0x28, 0x0, 0x80, 0x3F, 0x83, + 0x74, 0x12, 0xE8, 0xF7, 0xFD, 0x75, 0xC, 0xB, 0xD2, 0x74, 0x10, + 0xE8, 0x73, 0xFE, 0x32, 0xC0, 0xA2, 0x4F, 0x3, 0xC3, 0xE8, 0x97, + 0xFC, 0x75, 0xFA, 0xEB, 0x7, 0x32, 0xC0, 0xA2, 0x4F, 0x3, 0xFE, + 0xC0, 0xA1, 0x47, 0x3, 0xA3, 0x2E, 0x0, 0x8B, 0x1E, 0x4B, 0x3, + 0x75, 0xE5, 0x80, 0x3F, 0x0, 0x75, 0x3, 0x83, 0xC3, 0x4, 0x43, + 0xE9, 0x17, 0x19, 0xE8, 0x70, 0xC, 0x75, 0xDA, 0xA, 0xC0, 0x75, + 0x3, 0xE9, 0xA4, 0xFD, 0xE9, 0x20, 0xF5, 0xBA, 0xA, 0x0, 0x52, + 0x74, 0x1F, 0xE8, 0x9D, 0xFD, 0x87, 0xDA, 0x5E, 0x87, 0xDE, 0x56, + 0x74, 0x16, 0x87, 0xDA, 0xE8, 0x26, 0x1B, 0x2C, 0x8B, 0x16, 0x41, + 0x3, 0x74, 0x8, 0xE8, 0x93, 0xFD, 0x74, 0x3, 0xE9, 0xE1, 0xF4, + 0x87, 0xDA, 0x8A, 0xC7, 0xA, 0xC3, 0x75, 0x3, 0xE9, 0x71, 0xFD, + 0x89, 0x1E, 0x41, 0x3, 0xA2, 0x3E, 0x3, 0x5B, 0x89, 0x1E, 0x3F, + 0x3, 0x59, 0xE9, 0xDB, 0xF5, 0xE8, 0x2C, 0x4, 0x8A, 0x7, 0x3C, + 0x2C, 0x75, 0x3, 0xE8, 0x19, 0xFC, 0x3C, 0x89, 0x74, 0x5, 0xE8, + 0xE9, 0x1A, 0xCD, 0x4B, 0x53, 0xE8, 0xD2, 0x51, 0x5B, 0x74, 0x19, + 0xE8, 0x6, 0xFC, 0x75, 0x1, 0xC3, 0x3C, 0xE, 0x75, 0x3, 0xE9, + 0xCC, 0xFD, 0x3C, 0xD, 0x74, 0x3, 0xE9, 0xE0, 0xFB, 0x8B, 0x1E, + 0x2, 0x3, 0xC3, 0xB6, 0x1, 0xE8, 0x29, 0xFE, 0xA, 0xC0, 0x74, + 0xF6, 0xE8, 0xE4, 0xFB, 0x3C, 0xA1, 0x75, 0xF2, 0xFE, 0xCE, 0x75, + 0xEE, 0xEB, 0xD1, 0xE8, 0x6A, 0x1, 0xEB, 0x3, 0xE8, 0x9B, 0x31, + 0x4B, 0xE8, 0xCE, 0xFB, 0x75, 0x3, 0xE8, 0x1D, 0x19, 0x75, 0x3, + 0xE9, 0x3F, 0x1, 0x3C, 0xD7, 0x75, 0x3, 0xE9, 0x6B, 0x27, 0x3C, + 0xCE, 0x75, 0x3, 0xE9, 0xAB, 0x0, 0x3C, 0xD2, 0x75, 0x3, 0xE9, + 0xA4, 0x0, 0x53, 0x3C, 0x2C, 0x74, 0x6D, 0x3C, 0x3B, 0x75, 0x3, + 0xE9, 0x17, 0x1, 0x59, 0xE8, 0xA9, 0x3, 0x53, 0xE8, 0xA3, 0x7, + 0x74, 0xF, 0xE8, 0x41, 0x5D, 0xE8, 0xC2, 0x12, 0xC6, 0x7, 0x20, + 0x8B, 0x1E, 0xA3, 0x4, 0xFE, 0x7, 0xCD, 0x99, 0x8B, 0x1E, 0xA3, + 0x4, 0x53, 0xE8, 0x39, 0x1C, 0x74, 0xD, 0xE8, 0x31, 0x1, 0x78, + 0x3, 0xE9, 0x31, 0x0, 0xE8, 0x81, 0x45, 0xEB, 0x3, 0xA0, 0x29, + 0x0, 0x8A, 0xE8, 0xFE, 0xC0, 0x74, 0x23, 0xE8, 0x1E, 0x1C, 0x74, + 0x7, 0xE8, 0x66, 0x45, 0x8A, 0x7, 0xEB, 0x3, 0xE8, 0x68, 0x3B, + 0x5B, 0x53, 0xA, 0xC0, 0x74, 0xE, 0x2, 0x7, 0xF5, 0x73, 0x4, + 0xFE, 0xC8, 0x3A, 0xC5, 0x72, 0x3, 0xE8, 0x99, 0x18, 0x5B, 0xE8, + 0xDE, 0x12, 0x5B, 0xE9, 0x6B, 0xFF, 0xCD, 0x9A, 0xB9, 0x32, 0x0, + 0x8B, 0x1E, 0xE9, 0x4, 0x3, 0xD9, 0xE8, 0xE8, 0x1B, 0x8A, 0x7, + 0x75, 0x18, 0xA0, 0x2A, 0x0, 0x8A, 0xE8, 0xE8, 0x32, 0x3B, 0x3C, + 0xFF, 0x74, 0xC, 0x3A, 0xC5, 0x72, 0x3, 0xE8, 0x6C, 0x18, 0x72, + 0x3, 0xE9, 0x87, 0x0, 0x2C, 0xE, 0x73, 0xFC, 0xF6, 0xD0, 0xEB, + 0x72, 0x50, 0xE8, 0x7, 0xFB, 0xE8, 0xF1, 0xA, 0x58, 0x50, 0x3C, + 0xD2, 0x74, 0x1, 0x4A, 0x8A, 0xC6, 0xA, 0xC0, 0x78, 0x3, 0xE9, + 0x3, 0x0, 0xBA, 0x0, 0x0, 0x53, 0xE8, 0xA6, 0x1B, 0x74, 0xD, + 0xE8, 0x9E, 0x0, 0x78, 0x3, 0xE9, 0x15, 0x0, 0xE8, 0xEE, 0x44, + 0xEB, 0x3, 0xA0, 0x29, 0x0, 0x8A, 0xD8, 0xFE, 0xC0, 0x74, 0x7, + 0xB7, 0x0, 0xE8, 0x7C, 0x51, 0x87, 0xDA, 0x5B, 0xE8, 0xA1, 0x19, + 0x29, 0x4B, 0x58, 0x2C, 0xD2, 0x53, 0x74, 0x13, 0xB9, 0x32, 0x0, + 0x8B, 0x1E, 0xE9, 0x4, 0x3, 0xD9, 0xE8, 0x6F, 0x1B, 0x8A, 0x7, + 0x75, 0x3, 0xE8, 0xBE, 0x3A, 0xF6, 0xD0, 0x2, 0xC2, 0x72, 0x10, + 0xFE, 0xC0, 0x74, 0x19, 0xE8, 0xF6, 0x17, 0x8A, 0xC2, 0xFE, 0xC8, + 0x79, 0x3, 0xE9, 0xD, 0x0, 0xFE, 0xC0, 0x8A, 0xE8, 0xB0, 0x20, + 0xE8, 0x18, 0x17, 0xFE, 0xCD, 0x75, 0xF9, 0x5B, 0xE8, 0x88, 0xFA, + 0xE9, 0xBC, 0xFE, 0xCD, 0x9B, 0x32, 0xC0, 0x53, 0x52, 0x51, 0xE8, + 0x86, 0x2C, 0x59, 0x5A, 0x32, 0xC0, 0x8A, 0xF8, 0x8A, 0xD8, 0x89, + 0x1E, 0xE9, 0x4, 0x5B, 0xC3, 0x53, 0x32, 0xC0, 0x9F, 0x86, 0xC4, + 0x50, 0x86, 0xC4, 0xE8, 0xE9, 0x2A, 0x74, 0x3, 0xE9, 0xE2, 0xF2, + 0x53, 0xB9, 0x2E, 0x0, 0xB2, 0x2, 0xB6, 0xFD, 0x3, 0xD9, 0x88, + 0x37, 0xB0, 0x0, 0x5B, 0xE9, 0xE6, 0x29, 0xE8, 0x33, 0x2E, 0xA, + 0xC0, 0xC3, 0x3C, 0x85, 0x74, 0x3, 0xE9, 0xA2, 0x33, 0xE8, 0x11, + 0x19, 0x85, 0x3C, 0x23, 0x75, 0x3, 0xE9, 0x28, 0x30, 0xE8, 0x30, + 0x1D, 0xE8, 0x73, 0x0, 0xE8, 0x7A, 0x22, 0xE8, 0x44, 0x4F, 0x52, + 0x53, 0xE8, 0xA7, 0x1C, 0x5A, 0x59, 0x73, 0x3, 0xE9, 0x45, 0x19, + 0x51, 0x52, 0xB5, 0x0, 0xE8, 0x45, 0x11, 0x5B, 0xB0, 0x3, 0xE9, + 0x93, 0xFC, 0x3F, 0x52, 0x65, 0x64, 0x6F, 0x20, 0x66, 0x72, 0x6F, + 0x6D, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0xD, 0x0, 0x43, 0x8A, + 0x7, 0xA, 0xC0, 0x75, 0x3, 0xE9, 0x92, 0xF2, 0x3C, 0x22, 0x75, + 0xF2, 0xE9, 0x9B, 0x0, 0x5B, 0x5B, 0xEB, 0xC, 0xCD, 0x9C, 0xA0, + 0x3A, 0x3, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0x73, 0xF2, 0x59, 0xBB, + 0x10, 0x15, 0xE8, 0xB, 0x66, 0x8B, 0x1E, 0x43, 0x3, 0xC3, 0xE8, + 0x94, 0x2F, 0x53, 0xBB, 0xF6, 0x1, 0xE9, 0xE0, 0x0, 0x3C, 0x23, + 0x74, 0xF2, 0xE8, 0xBE, 0x1C, 0xB9, 0x8C, 0x15, 0x51, 0x3C, 0x22, + 0xB0, 0x0, 0xB0, 0xFF, 0xA2, 0x5F, 0x4, 0x75, 0xDF, 0xE8, 0xDB, + 0x10, 0x8A, 0x7, 0x3C, 0x2C, 0x75, 0xA, 0x32, 0xC0, 0xA2, 0x5F, + 0x4, 0xE8, 0x9D, 0xF9, 0xEB, 0x4, 0xE8, 0x6F, 0x18, 0x3B, 0x53, + 0xE8, 0x30, 0x11, 0x5B, 0xC3, 0x53, 0xA0, 0x5F, 0x4, 0xA, 0xC0, + 0x74, 0xA, 0xB0, 0x3F, 0xE8, 0xC, 0x16, 0xB0, 0x20, 0xE8, 0x7, + 0x16, 0xE8, 0x2, 0x1C, 0x59, 0x73, 0x3, 0xE9, 0xA1, 0x18, 0x51, + 0x32, 0xC0, 0xA2, 0x3A, 0x3, 0xC6, 0x7, 0x2C, 0x87, 0xDA, 0x5B, + 0x53, 0x52, 0x52, 0x4B, 0xB0, 0x80, 0xA2, 0x39, 0x3, 0xE8, 0x5E, + 0xF9, 0xE8, 0xA5, 0x22, 0x8A, 0x7, 0x4B, 0x3C, 0x28, 0x75, 0x20, + 0x43, 0xB5, 0x0, 0xFE, 0xC5, 0xE8, 0x4C, 0xF9, 0x75, 0x3, 0xE9, + 0xE8, 0xF1, 0x3C, 0x22, 0x75, 0x3, 0xE9, 0x45, 0xFF, 0x3C, 0x28, + 0x74, 0xEB, 0x3C, 0x29, 0x75, 0xE9, 0xFE, 0xCD, 0x75, 0xE5, 0xE8, + 0x31, 0xF9, 0x74, 0x7, 0x3C, 0x2C, 0x74, 0x3, 0xE9, 0xC9, 0xF1, + 0x5E, 0x87, 0xDE, 0x56, 0x8A, 0x7, 0x3C, 0x2C, 0x74, 0x3, 0xE9, + 0x31, 0xFF, 0xB0, 0x1, 0xA2, 0xA9, 0x4, 0xE8, 0x62, 0x0, 0xA0, + 0xA9, 0x4, 0xFE, 0xC8, 0x74, 0x3, 0xE9, 0x1F, 0xFF, 0x53, 0xE8, + 0xD, 0x5, 0x75, 0x3, 0xE8, 0x8C, 0x12, 0x5B, 0x4B, 0xE8, 0xFB, + 0xF8, 0x5E, 0x87, 0xDE, 0x56, 0x8A, 0x7, 0x3C, 0x2C, 0x74, 0x8B, + 0x5B, 0x4B, 0xE8, 0xEC, 0xF8, 0xA, 0xC0, 0x5B, 0x74, 0x3, 0xE9, + 0xA, 0xFF, 0xC6, 0x7, 0x2C, 0xEB, 0x6, 0x53, 0x8B, 0x1E, 0x5E, + 0x3, 0xD, 0x32, 0xC0, 0xA2, 0x3A, 0x3, 0x5E, 0x87, 0xDE, 0x56, + 0xEB, 0x4, 0xE8, 0xA2, 0x17, 0x2C, 0xE8, 0x18, 0x21, 0x5E, 0x87, + 0xDE, 0x56, 0x52, 0x8A, 0x7, 0x3C, 0x2C, 0x74, 0xA, 0xA0, 0x3A, + 0x3, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0x8B, 0x0, 0xD, 0x32, 0xC0, + 0xA2, 0x52, 0x4, 0xE8, 0x62, 0x19, 0x74, 0x3, 0xE9, 0x8B, 0x2E, + 0xE8, 0xA9, 0x4, 0x50, 0x75, 0x38, 0xE8, 0x9B, 0xF8, 0x8A, 0xF0, + 0x8A, 0xE8, 0x3C, 0x22, 0x74, 0xE, 0xA0, 0x3A, 0x3, 0xA, 0xC0, + 0x8A, 0xF0, 0x74, 0x2, 0xB6, 0x3A, 0xB5, 0x2C, 0x4B, 0xE8, 0xB6, + 0xF, 0x58, 0x4, 0x3, 0x8A, 0xC8, 0xA0, 0x52, 0x4, 0xA, 0xC0, + 0x75, 0x1, 0xC3, 0x8A, 0xC1, 0x87, 0xDA, 0xBB, 0xCA, 0x16, 0x5E, + 0x87, 0xDE, 0x56, 0x52, 0xE9, 0xF0, 0xFA, 0xE8, 0x63, 0xF8, 0x58, + 0x50, 0x3C, 0x5, 0xB9, 0x9B, 0x16, 0x51, 0x73, 0x3, 0xE9, 0xF9, + 0x52, 0xE9, 0xFD, 0x52, 0x4B, 0xE8, 0x4F, 0xF8, 0x74, 0x7, 0x3C, + 0x2C, 0x74, 0x3, 0xE9, 0x60, 0xFE, 0x5E, 0x87, 0xDE, 0x56, 0x4B, + 0xE8, 0x3E, 0xF8, 0x74, 0x3, 0xE9, 0x6B, 0xFF, 0x5A, 0xA0, 0x3A, + 0x3, 0xA, 0xC0, 0x87, 0xDA, 0x74, 0x3, 0xE9, 0x35, 0x17, 0x52, + 0x5B, 0xE9, 0xA2, 0xFD, 0xE8, 0x62, 0xFA, 0xA, 0xC0, 0x75, 0x15, + 0x43, 0x8A, 0x7, 0x43, 0xA, 0x7, 0xB2, 0x4, 0x75, 0x3, 0xE9, + 0xCE, 0xF0, 0x43, 0x8B, 0x17, 0x43, 0x89, 0x16, 0x37, 0x3, 0xE8, + 0x8, 0xF8, 0x3C, 0x84, 0x75, 0xDD, 0xE9, 0x4F, 0xFF, 0xE8, 0xD5, + 0x16, 0xE7, 0xE9, 0x4, 0x0, 0xE8, 0xCE, 0x16, 0x28, 0x4B, 0xB6, + 0x0, 0x52, 0xB1, 0x1, 0xE8, 0xA5, 0x15, 0xCD, 0x9D, 0xE8, 0xB2, + 0x1, 0x32, 0xC0, 0xA2, 0xA8, 0x4, 0x89, 0x1E, 0x52, 0x3, 0x8B, + 0x1E, 0x52, 0x3, 0x59, 0x8A, 0x7, 0x89, 0x1E, 0x31, 0x3, 0x3C, + 0xE6, 0x73, 0x1, 0xC3, 0x3C, 0xE9, 0x72, 0x75, 0x2C, 0xE9, 0x8A, + 0xD0, 0x75, 0xC, 0xA0, 0xFB, 0x2, 0x3C, 0x3, 0x8A, 0xC2, 0x75, + 0x3, 0xE9, 0xD6, 0x10, 0x3C, 0xC, 0x73, 0xE5, 0xBB, 0x80, 0x3, + 0xB6, 0x0, 0x3, 0xDA, 0x8A, 0xC5, 0x2E, 0x8A, 0x37, 0x3A, 0xC6, + 0x73, 0xD5, 0x51, 0xB9, 0x3E, 0x17, 0x51, 0x8A, 0xC6, 0xCD, 0x9E, + 0x3C, 0x7F, 0x74, 0x64, 0x3C, 0x51, 0x72, 0x6D, 0x24, 0xFE, 0x3C, + 0x7A, 0x74, 0x67, 0xA0, 0xFB, 0x2, 0x2C, 0x3, 0x75, 0x3, 0xE9, + 0x3D, 0xF0, 0xA, 0xC0, 0xFF, 0x36, 0xA3, 0x4, 0x79, 0x3, 0xE9, + 0x11, 0x0, 0xFF, 0x36, 0xA5, 0x4, 0x7A, 0x3, 0xE9, 0x8, 0x0, + 0xFF, 0x36, 0x9F, 0x4, 0xFF, 0x36, 0xA1, 0x4, 0x4, 0x3, 0x8A, + 0xCA, 0x8A, 0xE8, 0x51, 0xB9, 0x23, 0x18, 0x51, 0x8B, 0x1E, 0x31, + 0x3, 0xE9, 0x63, 0xFF, 0xB6, 0x0, 0x2C, 0xE6, 0x72, 0x34, 0x3C, + 0x3, 0x73, 0x30, 0x3C, 0x1, 0xD0, 0xD0, 0x32, 0xC6, 0x3A, 0xC6, + 0x8A, 0xF0, 0x73, 0x3, 0xE9, 0xDE, 0xEF, 0x89, 0x1E, 0x31, 0x3, + 0xE8, 0x36, 0xF7, 0xEB, 0xE0, 0xE8, 0x65, 0x53, 0xE8, 0x37, 0x4C, + 0xB9, 0x29, 0x65, 0xB6, 0x7F, 0xEB, 0xC9, 0x52, 0xE8, 0xB3, 0x53, + 0x5A, 0x53, 0xB9, 0x31, 0x1B, 0xEB, 0xBE, 0x8A, 0xC5, 0x3C, 0x64, + 0x72, 0x1, 0xC3, 0x51, 0x52, 0xBA, 0x4, 0x64, 0xBB, 0x3, 0x1B, + 0x53, 0xE8, 0x11, 0x3, 0x74, 0x3, 0xE9, 0x76, 0xFF, 0x8B, 0x1E, + 0xA3, 0x4, 0x53, 0xB9, 0xC8, 0x25, 0xEB, 0x9C, 0x59, 0x8A, 0xC1, + 0xA2, 0xFC, 0x2, 0xA0, 0xFB, 0x2, 0x3A, 0xC5, 0x75, 0xD, 0x3C, + 0x2, 0x74, 0x28, 0x3C, 0x4, 0x75, 0x3, 0xE9, 0x7F, 0x0, 0x73, + 0x39, 0x8A, 0xF0, 0x8A, 0xC5, 0x3C, 0x8, 0x74, 0x2E, 0x8A, 0xC6, + 0x3C, 0x8, 0x74, 0x57, 0x8A, 0xC5, 0x3C, 0x4, 0x74, 0x66, 0x8A, + 0xC6, 0x3C, 0x3, 0x75, 0x3, 0xE9, 0x7C, 0xEF, 0x73, 0x65, 0xBB, + 0xAA, 0x3, 0xB5, 0x0, 0x3, 0xD9, 0x3, 0xD9, 0x2E, 0x8A, 0xF, + 0x43, 0x2E, 0x8A, 0x2F, 0x5A, 0x8B, 0x1E, 0xA3, 0x4, 0x51, 0xC3, + 0xE8, 0xC, 0x53, 0xE8, 0x25, 0x4C, 0x5B, 0x89, 0x1E, 0xA1, 0x4, + 0x5B, 0x89, 0x1E, 0x9F, 0x4, 0x59, 0x5A, 0xE8, 0x5A, 0x4B, 0xE8, + 0xF7, 0x52, 0xBB, 0x96, 0x3, 0xA0, 0xFC, 0x2, 0xD0, 0xC0, 0x2, + 0xC3, 0x8A, 0xD8, 0x12, 0xC7, 0x2A, 0xC3, 0x8A, 0xF8, 0x2E, 0x8B, + 0x1F, 0xFF, 0xE3, 0x8A, 0xC5, 0x50, 0xE8, 0xF6, 0x4B, 0x58, 0xA2, + 0xFB, 0x2, 0x3C, 0x4, 0x74, 0xD3, 0x5B, 0x89, 0x1E, 0xA3, 0x4, + 0xEB, 0xD1, 0xE8, 0x97, 0x52, 0x59, 0x5A, 0xBB, 0xA0, 0x3, 0xEB, + 0xCD, 0x5B, 0xE8, 0x61, 0x4B, 0xE8, 0x65, 0x4A, 0xE8, 0x28, 0x4B, + 0x5B, 0x89, 0x1E, 0xA5, 0x4, 0x5B, 0x89, 0x1E, 0xA3, 0x4, 0xEB, + 0xE5, 0x53, 0x87, 0xDA, 0xE8, 0x50, 0x4A, 0x5B, 0xE8, 0x45, 0x4B, + 0xE8, 0x49, 0x4A, 0xE9, 0x3B, 0x4C, 0xE8, 0x33, 0xF6, 0x75, 0x3, + 0xE9, 0xE4, 0xEE, 0x73, 0x3, 0xE9, 0xCC, 0x50, 0xE8, 0x4E, 0x16, + 0x72, 0x3, 0xE9, 0xDB, 0x0, 0x3C, 0x20, 0x73, 0x3, 0xE9, 0x7F, + 0xF6, 0xCD, 0x9F, 0xFE, 0xC0, 0x75, 0x3, 0xE9, 0x6A, 0x1, 0xFE, + 0xC8, 0x3C, 0xE9, 0x74, 0xD5, 0x3C, 0xEA, 0x75, 0x3, 0xE9, 0xAF, + 0x0, 0x3C, 0x22, 0x75, 0x3, 0xE9, 0x2D, 0xD, 0x3C, 0xD3, 0x75, + 0x3, 0xE9, 0xEC, 0x1, 0x3C, 0x26, 0x75, 0x3, 0xE9, 0xD1, 0x0, + 0x3C, 0xD5, 0x75, 0xC, 0xE8, 0xE8, 0xF5, 0xA0, 0x28, 0x0, 0x53, + 0xE8, 0x43, 0x2, 0x5B, 0xC3, 0x3C, 0xD4, 0x75, 0xD, 0xE8, 0xD8, + 0xF5, 0x53, 0x8B, 0x1E, 0x47, 0x3, 0xE8, 0xF7, 0x4A, 0x5B, 0xC3, + 0x3C, 0xDA, 0x75, 0x2E, 0xE8, 0xC7, 0xF5, 0xE8, 0x9B, 0x14, 0x28, + 0x3C, 0x23, 0x75, 0xD, 0xE8, 0xB8, 0x5, 0x53, 0xE8, 0x40, 0x26, + 0x87, 0xDA, 0x5B, 0xE9, 0x3, 0x0, 0xE8, 0xF9, 0x1E, 0xE8, 0x83, + 0x14, 0x29, 0x53, 0x87, 0xDA, 0xB, 0xDB, 0x75, 0x3, 0xE9, 0xDD, + 0xF6, 0xE8, 0x8D, 0x4B, 0x5B, 0xC3, 0x3C, 0xD0, 0x75, 0x3, 0xE9, + 0x0, 0x2, 0x3C, 0xD8, 0x75, 0x3, 0xE9, 0x8B, 0x10, 0x3C, 0xC8, + 0x75, 0x3, 0xE9, 0xD0, 0x3B, 0x3C, 0xDC, 0x75, 0x3, 0xE9, 0x4C, + 0x2E, 0x3C, 0xDE, 0x75, 0x3, 0xE9, 0xF9, 0x12, 0x3C, 0xD6, 0x75, + 0x3, 0xE9, 0x70, 0xF, 0x3C, 0x85, 0x75, 0x3, 0xE9, 0x38, 0x2A, + 0x3C, 0xDB, 0x75, 0x3, 0xE9, 0xA4, 0x3B, 0x3C, 0xD1, 0x75, 0x3, + 0xE9, 0x7E, 0x2, 0xE8, 0x60, 0xFD, 0xE8, 0x2E, 0x14, 0x29, 0xC3, + 0xB6, 0x7D, 0xE8, 0x5D, 0xFD, 0x8B, 0x1E, 0x52, 0x3, 0x53, 0xE8, + 0xD6, 0x63, 0x5B, 0xC3, 0xE8, 0x94, 0x1D, 0x53, 0x87, 0xDA, 0x89, + 0x1E, 0xA3, 0x4, 0xE8, 0x41, 0x1, 0x74, 0x3, 0xE8, 0xAF, 0x4A, + 0x5B, 0xC3, 0x8A, 0x7, 0x3C, 0x61, 0x72, 0xF9, 0x3C, 0x7B, 0x73, + 0xF5, 0x24, 0x5F, 0xC3, 0x3C, 0x26, 0x74, 0x3, 0xE9, 0x6C, 0xF6, + 0xBA, 0x0, 0x0, 0xE8, 0x18, 0xF5, 0xE8, 0xE5, 0xFF, 0x3C, 0x4F, + 0x74, 0x39, 0x3C, 0x48, 0x75, 0x34, 0xB5, 0x5, 0x43, 0x8A, 0x7, + 0xE8, 0xD5, 0xFF, 0xE8, 0x2A, 0x15, 0x87, 0xDA, 0x73, 0xA, 0x3C, + 0x3A, 0x73, 0x4D, 0x2C, 0x30, 0x72, 0x49, 0xEB, 0x6, 0x3C, 0x47, + 0x73, 0x43, 0x2C, 0x37, 0x3, 0xDB, 0x3, 0xDB, 0x3, 0xDB, 0x3, + 0xDB, 0xA, 0xC3, 0x8A, 0xD8, 0x87, 0xDA, 0xFE, 0xCD, 0x75, 0xD1, + 0xE9, 0x8C, 0xED, 0x4B, 0xE8, 0xD5, 0xF4, 0x87, 0xDA, 0x73, 0x24, + 0x3C, 0x38, 0x72, 0x3, 0xE9, 0x6B, 0xED, 0xB9, 0xD0, 0x7, 0x51, + 0x3, 0xDB, 0x72, 0x9C, 0x3, 0xDB, 0x72, 0x98, 0x3, 0xDB, 0x72, + 0x94, 0x59, 0xB5, 0x0, 0x2C, 0x30, 0x8A, 0xC8, 0x3, 0xD9, 0x87, + 0xDA, 0xEB, 0xD5, 0xE8, 0x99, 0x4A, 0x87, 0xDA, 0xC3, 0x43, 0x8A, + 0x7, 0x2C, 0x81, 0x3C, 0x7, 0x75, 0xE, 0x53, 0xE8, 0x9A, 0xF4, + 0x3C, 0x28, 0x5B, 0x74, 0x3, 0xE9, 0xE0, 0x49, 0xB0, 0x7, 0xB5, + 0x0, 0xD0, 0xC0, 0x8A, 0xC8, 0x51, 0xE8, 0x86, 0xF4, 0x8A, 0xC1, + 0x3C, 0x5, 0x73, 0x22, 0xE8, 0x83, 0xFC, 0xE8, 0x51, 0x13, 0x2C, + 0xE8, 0x94, 0x49, 0x87, 0xDA, 0x8B, 0x1E, 0xA3, 0x4, 0x5E, 0x87, + 0xDE, 0x56, 0x53, 0x87, 0xDA, 0xE8, 0x65, 0x4, 0x87, 0xDA, 0x5E, + 0x87, 0xDE, 0x56, 0xEB, 0x21, 0xE8, 0xFE, 0xFE, 0x5E, 0x87, 0xDE, + 0x56, 0x8A, 0xC3, 0x3C, 0xC, 0x72, 0xB, 0x3C, 0x1B, 0xCD, 0xA1, + 0x53, 0x73, 0x3, 0xE8, 0x7B, 0x50, 0x5B, 0xBA, 0xD5, 0x19, 0x52, + 0xB0, 0x1, 0xA2, 0xA8, 0x4, 0xB9, 0xB9, 0x0, 0xCD, 0xA0, 0x3, + 0xD9, 0x2E, 0xFF, 0x27, 0xFE, 0xCE, 0x3C, 0xEA, 0x74, 0x85, 0x3C, + 0x2D, 0x74, 0x81, 0xFE, 0xC6, 0x3C, 0x2B, 0x75, 0x1, 0xC3, 0x3C, + 0xE9, 0x74, 0xFB, 0x9F, 0x4B, 0x9E, 0xC3, 0xFE, 0xC0, 0x12, 0xC0, + 0x59, 0x22, 0xC5, 0x4, 0xFF, 0x1A, 0xC0, 0xE8, 0xF8, 0x49, 0xEB, + 0xF, 0xB6, 0x5A, 0xE8, 0x12, 0xFC, 0xE8, 0x92, 0x50, 0xF7, 0xD3, + 0x89, 0x1E, 0xA3, 0x4, 0x59, 0xE9, 0x19, 0xFC, 0xA0, 0xFB, 0x2, + 0x3C, 0x8, 0xFE, 0xC8, 0xFE, 0xC8, 0xFE, 0xC8, 0xC3, 0x8A, 0xC5, + 0x50, 0xE8, 0x76, 0x50, 0x58, 0x5A, 0x3C, 0x7A, 0x75, 0x3, 0xE9, + 0x89, 0x4A, 0x3C, 0x7B, 0x75, 0x3, 0xE9, 0x66, 0x48, 0xB9, 0xC, + 0x65, 0x51, 0x3C, 0x46, 0x75, 0x3, 0xB, 0xDA, 0xC3, 0x3C, 0x50, + 0x75, 0x3, 0x23, 0xDA, 0xC3, 0x3C, 0x3C, 0x75, 0x3, 0x33, 0xDA, + 0xC3, 0x3C, 0x32, 0x75, 0x5, 0x33, 0xDA, 0xF7, 0xD3, 0xC3, 0xF7, + 0xD3, 0x23, 0xDA, 0xF7, 0xD3, 0xC3, 0x2B, 0xDA, 0xE9, 0xCF, 0x48, + 0xA0, 0x63, 0x0, 0xEB, 0x3, 0xE8, 0xAF, 0x33, 0xFE, 0xC0, 0x8A, + 0xD8, 0x32, 0xC0, 0x8A, 0xF8, 0xE9, 0x84, 0x49, 0xE8, 0x2E, 0x0, + 0x52, 0xE8, 0x31, 0xFE, 0x5E, 0x87, 0xDE, 0x56, 0x8B, 0x17, 0x80, + 0xFA, 0xFF, 0x75, 0x3, 0xE9, 0xBC, 0xF4, 0xE, 0xBB, 0x7, 0x65, + 0x53, 0xFF, 0x36, 0x50, 0x3, 0x52, 0xA0, 0xFB, 0x2, 0x50, 0x3C, + 0x3, 0x75, 0x3, 0xE8, 0xF7, 0xC, 0x58, 0x87, 0xDA, 0xBB, 0xA3, + 0x4, 0xCB, 0xE8, 0x61, 0xF3, 0xB9, 0x0, 0x0, 0x3C, 0x1B, 0x73, + 0x10, 0x3C, 0x11, 0x72, 0xC, 0xE8, 0x53, 0xF3, 0xA0, 0x2, 0x3, + 0xA, 0xC0, 0xD0, 0xD0, 0x8A, 0xC8, 0x87, 0xDA, 0xBB, 0x12, 0x0, + 0x3, 0xD9, 0x87, 0xDA, 0xC3, 0xE8, 0xD9, 0xFF, 0x52, 0xE8, 0x10, + 0x12, 0xE7, 0xE8, 0xC2, 0x6, 0x5E, 0x87, 0xDE, 0x56, 0x89, 0x17, + 0x5B, 0xC3, 0x3C, 0xD0, 0x74, 0xE9, 0x3C, 0xD1, 0x74, 0x1C, 0xE8, + 0xF9, 0x11, 0x53, 0xE8, 0xF5, 0x11, 0x45, 0xE8, 0xF1, 0x11, 0x47, + 0x8C, 0xDA, 0x74, 0x7, 0xE8, 0xE9, 0x11, 0xE7, 0xE8, 0x9B, 0x6, + 0x89, 0x16, 0x50, 0x3, 0xC3, 0xE8, 0xF3, 0x1, 0xE8, 0xE0, 0x1, + 0x87, 0xDA, 0x89, 0x17, 0x87, 0xDA, 0x8A, 0x7, 0x3C, 0x28, 0x74, + 0x3, 0xE9, 0x32, 0xF5, 0xE8, 0xF1, 0xF2, 0xE8, 0x3F, 0x1B, 0x8A, + 0x7, 0x3C, 0x29, 0x75, 0x3, 0xE9, 0x23, 0xF5, 0xE8, 0xB9, 0x11, + 0x2C, 0xEB, 0xEE, 0xE8, 0xC9, 0x1, 0xA0, 0xFB, 0x2, 0xA, 0xC0, + 0x50, 0x89, 0x1E, 0x52, 0x3, 0x87, 0xDA, 0x8B, 0x1F, 0xB, 0xDB, + 0x75, 0x3, 0xE9, 0x74, 0xEB, 0x8A, 0x7, 0x3C, 0x28, 0x74, 0x3, + 0xE9, 0xCE, 0x0, 0xE8, 0xBB, 0xF2, 0x89, 0x1E, 0x31, 0x3, 0x87, + 0xDA, 0x8B, 0x1E, 0x52, 0x3, 0xE8, 0x85, 0x11, 0x28, 0x32, 0xC0, + 0x50, 0x53, 0x87, 0xDA, 0xB0, 0x80, 0xA2, 0x39, 0x3, 0xE8, 0xF0, + 0x1A, 0x87, 0xDA, 0x5E, 0x87, 0xDE, 0x56, 0xA0, 0xFB, 0x2, 0x50, + 0x52, 0xE8, 0x9B, 0xFA, 0x89, 0x1E, 0x52, 0x3, 0x5B, 0x89, 0x1E, + 0x31, 0x3, 0x58, 0xE8, 0x41, 0x1, 0xB1, 0x4, 0xE8, 0x37, 0x10, + 0xBB, 0xF8, 0xFF, 0x3, 0xDC, 0x8B, 0xE3, 0xE8, 0xF9, 0x47, 0xA0, + 0xFB, 0x2, 0x50, 0x8B, 0x1E, 0x52, 0x3, 0x8A, 0x7, 0x3C, 0x29, + 0x74, 0x13, 0xE8, 0x3B, 0x11, 0x2C, 0x53, 0x8B, 0x1E, 0x31, 0x3, + 0xE8, 0x32, 0x11, 0x2C, 0xEB, 0xB1, 0x58, 0xA2, 0xE4, 0x3, 0x58, + 0xA, 0xC0, 0x74, 0x4E, 0xA2, 0xFB, 0x2, 0xBB, 0x0, 0x0, 0x3, + 0xDC, 0xE8, 0xBF, 0x47, 0xBB, 0x8, 0x0, 0x3, 0xDC, 0x8B, 0xE3, + 0x5A, 0xB3, 0x3, 0xFE, 0xC3, 0x4A, 0x8B, 0xF2, 0xAC, 0xA, 0xC0, + 0x78, 0xF6, 0x4A, 0x4A, 0x4A, 0xA0, 0xFB, 0x2, 0x2, 0xC3, 0x8A, + 0xE8, 0xA0, 0xE4, 0x3, 0x8A, 0xC8, 0x2, 0xC5, 0x3C, 0x64, 0x72, + 0x3, 0xE9, 0x54, 0xF3, 0x50, 0x8A, 0xC3, 0xB5, 0x0, 0xBB, 0xE6, + 0x3, 0x3, 0xD9, 0x8A, 0xC8, 0xE8, 0xDF, 0x0, 0xB9, 0xC5, 0x1C, + 0x51, 0x51, 0xE9, 0x99, 0xF4, 0x8B, 0x1E, 0x52, 0x3, 0xE8, 0xFA, + 0xF1, 0x53, 0x8B, 0x1E, 0x31, 0x3, 0xE8, 0xC9, 0x10, 0x29, 0xB0, + 0x52, 0x89, 0x1E, 0x31, 0x3, 0xA0, 0x7C, 0x3, 0x4, 0x4, 0x50, + 0xD0, 0xC8, 0x8A, 0xC8, 0xE8, 0x96, 0xF, 0x58, 0x8A, 0xC8, 0xF6, + 0xD0, 0xFE, 0xC0, 0x8A, 0xD8, 0xB7, 0xFF, 0x3, 0xDC, 0x8B, 0xE3, + 0x53, 0xBA, 0x7A, 0x3, 0xE8, 0x9E, 0x0, 0x5B, 0x89, 0x1E, 0x7A, + 0x3, 0x8B, 0x1E, 0xE4, 0x3, 0x89, 0x1E, 0x7C, 0x3, 0x8B, 0xCB, + 0xBB, 0x7E, 0x3, 0xBA, 0xE6, 0x3, 0xE8, 0x86, 0x0, 0x8A, 0xF8, + 0x8A, 0xD8, 0x89, 0x1E, 0xE4, 0x3, 0x8B, 0x1E, 0x50, 0x4, 0x43, + 0x89, 0x1E, 0x50, 0x4, 0x8A, 0xC7, 0xA, 0xC3, 0xA2, 0x4D, 0x4, + 0x8B, 0x1E, 0x31, 0x3, 0xE8, 0x90, 0xF9, 0x4B, 0xE8, 0x8D, 0xF1, + 0x74, 0x3, 0xE9, 0x29, 0xEA, 0xE8, 0x8D, 0xFD, 0x75, 0x11, 0xBA, + 0x2C, 0x3, 0x8B, 0x1E, 0xA3, 0x4, 0x3B, 0xDA, 0x72, 0x6, 0xE8, + 0x7C, 0x8, 0xE8, 0xE6, 0x8, 0x8B, 0x1E, 0x7A, 0x3, 0x8A, 0xF7, + 0x8A, 0xD3, 0x43, 0x43, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x41, 0x41, + 0x41, 0x41, 0xBB, 0x7A, 0x3, 0xE8, 0x2F, 0x0, 0x87, 0xDA, 0x8B, + 0xE3, 0x8B, 0x1E, 0x50, 0x4, 0x4B, 0x89, 0x1E, 0x50, 0x4, 0x8A, + 0xC7, 0xA, 0xC3, 0xA2, 0x4D, 0x4, 0x5B, 0x58, 0x53, 0x24, 0x7, + 0xBB, 0x8C, 0x3, 0x8A, 0xC8, 0xB5, 0x0, 0x3, 0xD9, 0xE8, 0xFC, + 0xFC, 0x5B, 0xC3, 0x8B, 0xF2, 0xAC, 0x88, 0x7, 0x43, 0x42, 0x49, + 0x8A, 0xC5, 0xA, 0xC1, 0x75, 0xF2, 0xC3, 0x53, 0x8B, 0x1E, 0x2E, + 0x0, 0x43, 0xB, 0xDB, 0x5B, 0x75, 0xF4, 0xB2, 0xC, 0xE9, 0xCE, + 0xE9, 0xE8, 0xE7, 0xF, 0xD1, 0xB0, 0x80, 0xA2, 0x39, 0x3, 0xA, + 0x7, 0x8A, 0xC8, 0xE9, 0x5B, 0x19, 0x3C, 0x7E, 0x74, 0x3, 0xE9, + 0x9D, 0xE9, 0x43, 0x8A, 0x7, 0x43, 0x3C, 0x83, 0x75, 0x3, 0xE9, + 0xA4, 0xC, 0x3C, 0xA0, 0x75, 0x3, 0xE9, 0xAF, 0x37, 0x3C, 0xA2, + 0x75, 0x3, 0xE9, 0xC0, 0x38, 0xE9, 0x81, 0xE9, 0xE8, 0x75, 0x4, + 0x87, 0xDA, 0xEC, 0xE9, 0x39, 0xFD, 0xE8, 0x61, 0x4, 0x52, 0xE8, + 0xA7, 0xF, 0x2C, 0xE8, 0xCB, 0x0, 0x5A, 0xC3, 0xE8, 0xF0, 0xFF, + 0xEE, 0xC3, 0xE8, 0xEB, 0xFF, 0x52, 0x50, 0xB2, 0x0, 0x4B, 0xE8, + 0xBA, 0xF0, 0x74, 0x7, 0xE8, 0x8C, 0xF, 0x2C, 0xE8, 0xB0, 0x0, + 0x58, 0x8A, 0xF0, 0x5E, 0x87, 0xDE, 0x56, 0xA0, 0x5E, 0x0, 0xA, + 0xC0, 0x75, 0xB, 0x87, 0xDA, 0xEC, 0x87, 0xDA, 0x32, 0xC2, 0x22, + 0xC6, 0x74, 0xEE, 0x5B, 0xC3, 0xE9, 0x34, 0xE9, 0x3C, 0x23, 0x74, + 0x3C, 0xE8, 0x96, 0xF8, 0xE8, 0x91, 0xFC, 0x75, 0x58, 0xE8, 0x7D, + 0x20, 0x8A, 0xC6, 0xB6, 0x0, 0xF6, 0xD0, 0xA, 0xC0, 0x79, 0x3, + 0xE9, 0xB3, 0xF1, 0x8A, 0xD0, 0x52, 0xE8, 0x48, 0xF, 0x2C, 0xE8, + 0x6C, 0x0, 0x5A, 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x53, 0x52, + 0x8A, 0xC2, 0x2, 0xC0, 0x8A, 0xD0, 0xB0, 0x14, 0x9F, 0x86, 0xC4, + 0x50, 0x86, 0xC4, 0xE9, 0x8, 0x20, 0xE8, 0x50, 0xF0, 0xE8, 0x4C, + 0x0, 0x50, 0xE8, 0x20, 0xF, 0x2C, 0xE8, 0x44, 0x0, 0x58, 0x53, + 0x52, 0xE8, 0xC7, 0x20, 0xE8, 0x32, 0x3A, 0xA, 0xC0, 0x79, 0x3, + 0xE9, 0x71, 0xF1, 0x43, 0x5A, 0x88, 0x17, 0x5B, 0xC3, 0xE8, 0x2E, + 0x0, 0xE8, 0xB8, 0x33, 0xA2, 0x29, 0x0, 0x2C, 0xE, 0x73, 0xFC, + 0x4, 0x1C, 0xF6, 0xD0, 0xFE, 0xC0, 0x2, 0xC2, 0xA2, 0x2A, 0x0, + 0xC3, 0xE8, 0x13, 0xF0, 0xE8, 0x1A, 0xF8, 0x53, 0xE8, 0x9C, 0x4C, + 0x87, 0xDA, 0x5B, 0x8A, 0xC6, 0xA, 0xC0, 0xC3, 0xE8, 0x1, 0xF0, + 0xE8, 0x8, 0xF8, 0xE8, 0xEB, 0xFF, 0x74, 0x3, 0xE9, 0x32, 0xF1, + 0x4B, 0xE8, 0xF2, 0xEF, 0x8A, 0xC2, 0xC3, 0xE8, 0x7F, 0xF5, 0x4B, + 0xE8, 0xE8, 0xEF, 0xCD, 0xA2, 0x59, 0xE8, 0xF2, 0xEA, 0x51, 0xE8, + 0x19, 0x28, 0x8B, 0x1E, 0x3B, 0x3, 0x4B, 0xE8, 0xD6, 0xEF, 0x74, + 0xE, 0xE8, 0xA8, 0xE, 0x2C, 0xE8, 0xC3, 0x1F, 0xB2, 0x2, 0x32, + 0xC0, 0xE8, 0x96, 0x21, 0xBB, 0xFF, 0xFF, 0x89, 0x1E, 0x2E, 0x0, + 0xE8, 0x75, 0x10, 0x75, 0x5, 0xB0, 0x1, 0xA2, 0x6F, 0x0, 0x5B, + 0x5A, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x43, 0x8A, 0xC5, 0xA, 0xC1, + 0x75, 0x3, 0xE9, 0x3D, 0xE9, 0xE8, 0x90, 0xE0, 0x75, 0x3, 0xE8, + 0x7, 0xD, 0x51, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x43, 0x51, 0x5E, + 0x87, 0xDE, 0x56, 0x87, 0xDA, 0x3B, 0xDA, 0x59, 0x73, 0x3, 0xE9, + 0x1E, 0xE9, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0x51, 0x87, 0xDA, 0x89, + 0x1E, 0x49, 0x3, 0xE8, 0xAA, 0x45, 0x5B, 0x8A, 0x7, 0x3C, 0x9, + 0x74, 0x5, 0xB0, 0x20, 0xE8, 0xF3, 0xB, 0xE8, 0x18, 0x0, 0xBB, + 0xF7, 0x1, 0xE8, 0x5, 0x0, 0xE8, 0xB3, 0xC, 0xEB, 0x97, 0x8A, + 0x7, 0xA, 0xC0, 0x75, 0x1, 0xC3, 0xE8, 0x69, 0x17, 0x43, 0xEB, + 0xF3, 0xB9, 0xF7, 0x1, 0xB6, 0xFF, 0x32, 0xC0, 0xA2, 0xFC, 0x2, + 0x32, 0xC0, 0xA2, 0x5E, 0x4, 0xE8, 0x79, 0x27, 0xEB, 0x6, 0x41, + 0x43, 0xFE, 0xCE, 0x74, 0xDF, 0x8A, 0x7, 0xA, 0xC0, 0x8B, 0xF9, + 0xAA, 0x74, 0xD6, 0x3C, 0xB, 0x72, 0x28, 0x3C, 0x20, 0x8A, 0xD0, + 0x72, 0x38, 0x3C, 0x22, 0x75, 0xA, 0xA0, 0xFC, 0x2, 0x34, 0x1, + 0xA2, 0xFC, 0x2, 0xB0, 0x22, 0x3C, 0x3A, 0x75, 0x10, 0xA0, 0xFC, + 0x2, 0xD0, 0xD8, 0x72, 0x7, 0xD0, 0xD0, 0x24, 0xFD, 0xA2, 0xFC, + 0x2, 0xB0, 0x3A, 0xA, 0xC0, 0x79, 0x3, 0xE9, 0x3C, 0x0, 0x8A, + 0xD0, 0x3C, 0x2E, 0x74, 0x9, 0xE8, 0x57, 0x1, 0x73, 0x4, 0x32, + 0xC0, 0xEB, 0x18, 0xA0, 0x5E, 0x4, 0xA, 0xC0, 0x74, 0xF, 0xFE, + 0xC0, 0x75, 0xB, 0xB0, 0x20, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, + 0x75, 0x1, 0xC3, 0xB0, 0x1, 0xA2, 0x5E, 0x4, 0x8A, 0xC2, 0x3C, + 0xB, 0x72, 0x7, 0x3C, 0x20, 0x73, 0x3, 0xE9, 0x37, 0x1, 0x8B, + 0xF9, 0xAA, 0xEB, 0x82, 0xA0, 0xFC, 0x2, 0xD0, 0xD8, 0x72, 0x43, + 0xD0, 0xD8, 0xD0, 0xD8, 0x73, 0x52, 0x8A, 0x7, 0x3C, 0xD9, 0x53, + 0x51, 0xBB, 0xA5, 0x20, 0x53, 0x75, 0xCF, 0x49, 0x8B, 0xF1, 0xAC, + 0x3C, 0x4D, 0x75, 0xC7, 0x49, 0x8B, 0xF1, 0xAC, 0x3C, 0x45, 0x75, + 0xBF, 0x49, 0x8B, 0xF1, 0xAC, 0x3C, 0x52, 0x75, 0xB7, 0x49, 0x8B, + 0xF1, 0xAC, 0x3C, 0x3A, 0x75, 0xAF, 0x58, 0x58, 0x5B, 0xFE, 0xC6, + 0xFE, 0xC6, 0xFE, 0xC6, 0xFE, 0xC6, 0xEB, 0x2D, 0x59, 0x5B, 0x8A, + 0x7, 0xE9, 0x35, 0xFF, 0xA0, 0xFC, 0x2, 0xC, 0x2, 0xA2, 0xFC, + 0x2, 0x32, 0xC0, 0xC3, 0xA0, 0xFC, 0x2, 0xC, 0x4, 0xEB, 0xF3, + 0xD0, 0xD0, 0x72, 0xE7, 0x8A, 0x7, 0x3C, 0x84, 0x75, 0x3, 0xE8, + 0xE1, 0xFF, 0x3C, 0x8F, 0x75, 0x3, 0xE8, 0xE5, 0xFF, 0x8A, 0x7, + 0xFE, 0xC0, 0x8A, 0x7, 0x75, 0x5, 0x43, 0x8A, 0x7, 0x24, 0x7F, + 0x43, 0x3C, 0xA1, 0x75, 0x3, 0xE8, 0xF8, 0x43, 0x3C, 0xB1, 0x75, + 0xA, 0x8A, 0x7, 0x43, 0x3C, 0xE9, 0xB0, 0xB1, 0x74, 0x1, 0x4B, + 0x53, 0x51, 0x52, 0xCD, 0xA3, 0xBB, 0x36, 0x1, 0x8A, 0xE8, 0xB1, + 0x40, 0xFE, 0xC1, 0x43, 0x8A, 0xF7, 0x8A, 0xD3, 0x2E, 0x8A, 0x7, + 0xA, 0xC0, 0x74, 0xF2, 0x9F, 0x43, 0x9E, 0x79, 0xF4, 0x2E, 0x8A, + 0x7, 0x3A, 0xC5, 0x75, 0xE8, 0x87, 0xDA, 0x3C, 0xD0, 0x74, 0x2, + 0x3C, 0xD1, 0x8A, 0xC1, 0x5A, 0x59, 0x8A, 0xD0, 0x75, 0xC, 0xA0, + 0x5E, 0x4, 0xA, 0xC0, 0xB0, 0x0, 0xA2, 0x5E, 0x4, 0xEB, 0x15, + 0x3C, 0x5B, 0x75, 0x7, 0x32, 0xC0, 0xA2, 0x5E, 0x4, 0xEB, 0x1D, + 0xA0, 0x5E, 0x4, 0xA, 0xC0, 0xB0, 0xFF, 0xA2, 0x5E, 0x4, 0x74, + 0xD, 0xB0, 0x20, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, 0x75, 0x3, + 0xE9, 0xA4, 0x5, 0x8A, 0xC2, 0xEB, 0x6, 0x2E, 0x8A, 0x7, 0x43, + 0x8A, 0xD0, 0x24, 0x7F, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, 0x75, + 0x3, 0xE9, 0x8D, 0x5, 0xA, 0xC2, 0x79, 0xE9, 0x3C, 0xA8, 0x75, + 0x5, 0x32, 0xC0, 0xA2, 0x5E, 0x4, 0x5B, 0xE9, 0x64, 0xFE, 0xE8, + 0xBF, 0xD, 0x72, 0x1, 0xC3, 0x3C, 0x30, 0x72, 0xFB, 0x3C, 0x3A, + 0xF5, 0xC3, 0x4B, 0xE8, 0x88, 0xED, 0x52, 0x51, 0x50, 0xE8, 0x21, + 0xEE, 0x58, 0xB9, 0xB5, 0x21, 0x51, 0x3C, 0xB, 0x75, 0x3, 0xE9, + 0x60, 0x42, 0x3C, 0xC, 0x75, 0x3, 0xE9, 0x63, 0x42, 0x8B, 0x1E, + 0x2, 0x3, 0xE9, 0x13, 0x4F, 0x59, 0x5A, 0xA0, 0x0, 0x3, 0xB2, + 0x4F, 0x3C, 0xB, 0x74, 0x6, 0x3C, 0xC, 0xB2, 0x48, 0x75, 0x14, + 0xB0, 0x26, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, 0x74, 0xC0, 0x8A, + 0xC2, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, 0x74, 0xB6, 0xA0, 0x1, + 0x3, 0x3C, 0x4, 0xB2, 0x0, 0x72, 0x6, 0xB2, 0x21, 0x74, 0x2, + 0xB2, 0x23, 0x8A, 0x7, 0x3C, 0x20, 0x75, 0x3, 0xE8, 0x52, 0x43, + 0x8A, 0x7, 0x43, 0xA, 0xC0, 0x74, 0x2A, 0x8B, 0xF9, 0xAA, 0x41, + 0xFE, 0xCE, 0x74, 0x8F, 0xA0, 0x1, 0x3, 0x3C, 0x4, 0x72, 0xEA, + 0x9F, 0x49, 0x9E, 0x8B, 0xF1, 0xAC, 0x9F, 0x41, 0x9E, 0x75, 0x4, + 0x3C, 0x2E, 0x74, 0x8, 0x3C, 0x44, 0x74, 0x4, 0x3C, 0x45, 0x75, + 0xD3, 0xB2, 0x0, 0xEB, 0xCF, 0x8A, 0xC2, 0xA, 0xC0, 0x74, 0x9, + 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, 0x75, 0x1, 0xC3, 0x8B, 0x1E, + 0xFE, 0x2, 0xE9, 0xAE, 0xFD, 0xE8, 0xF1, 0xE7, 0x51, 0xE8, 0xF5, + 0x1, 0x59, 0x5A, 0x51, 0x51, 0xE8, 0x20, 0xE8, 0x73, 0xB, 0x8A, + 0xF7, 0x8A, 0xD3, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0x3B, 0xDA, 0x72, + 0x3, 0xE9, 0x0, 0xEE, 0xBB, 0x2D, 0x7, 0xE8, 0xF6, 0x58, 0x59, + 0xBB, 0xDD, 0x9, 0x5E, 0x87, 0xDE, 0x56, 0x87, 0xDA, 0x8B, 0x1E, + 0x58, 0x3, 0x8B, 0xF2, 0xAC, 0x8B, 0xF9, 0xAA, 0x41, 0x42, 0x3B, + 0xDA, 0x75, 0xF4, 0x8B, 0xD9, 0x89, 0x1E, 0x58, 0x3, 0xC3, 0xE8, + 0x32, 0x0, 0xE8, 0xC3, 0x24, 0x1E, 0x8E, 0x1E, 0x50, 0x3, 0x8A, + 0x7, 0x1F, 0xE9, 0xEE, 0xF8, 0xE8, 0x16, 0x0, 0x52, 0xE8, 0xB1, + 0x24, 0xE8, 0x59, 0xB, 0x2C, 0xE8, 0x7D, 0xFC, 0x5A, 0x6, 0x8E, + 0x6, 0x50, 0x3, 0x8B, 0xFA, 0xAA, 0x7, 0xC3, 0xE8, 0x7A, 0xF4, + 0x53, 0xE8, 0x4, 0x0, 0x87, 0xDA, 0x5B, 0xC3, 0xB9, 0xAD, 0x6B, + 0x51, 0xE8, 0x69, 0xF8, 0x78, 0xF6, 0xCD, 0xA4, 0xA0, 0xA6, 0x4, + 0x3C, 0x90, 0x75, 0xED, 0xE8, 0xAB, 0x58, 0x78, 0xE8, 0xE8, 0x82, + 0x48, 0xB9, 0x80, 0x91, 0xBA, 0x0, 0x0, 0xE9, 0x3A, 0x40, 0xB9, + 0xA, 0x0, 0x51, 0x8A, 0xF5, 0x8A, 0xD5, 0x74, 0x35, 0x3C, 0x2C, + 0x74, 0xB, 0x52, 0xE8, 0x74, 0xED, 0x8A, 0xEE, 0x8A, 0xCA, 0x5A, + 0x74, 0x26, 0xE8, 0x0, 0xB, 0x2C, 0xE8, 0x66, 0xED, 0x74, 0x1D, + 0x58, 0xE8, 0xF6, 0xA, 0x2C, 0x52, 0xE8, 0x68, 0xED, 0x74, 0x3, + 0xE9, 0xB6, 0xE4, 0xB, 0xD2, 0x75, 0x3, 0xE9, 0x4A, 0xED, 0x87, + 0xDA, 0x5E, 0x87, 0xDE, 0x56, 0x87, 0xDA, 0x51, 0xE8, 0x4C, 0xE7, + 0x5A, 0x52, 0x51, 0xE8, 0x46, 0xE7, 0x8B, 0xD9, 0x5A, 0x3B, 0xDA, + 0x87, 0xDA, 0x73, 0x3, 0xE9, 0x2C, 0xED, 0x5A, 0x59, 0x58, 0x53, + 0x52, 0xEB, 0x15, 0x3, 0xD9, 0x73, 0x3, 0xE9, 0x1E, 0xED, 0x87, + 0xDA, 0x53, 0xBB, 0xF9, 0xFF, 0x3B, 0xDA, 0x5B, 0x73, 0x3, 0xE9, + 0x10, 0xED, 0x52, 0x8B, 0x17, 0xB, 0xD2, 0x87, 0xDA, 0x5A, 0x74, + 0xC, 0x8A, 0x7, 0x43, 0xA, 0x7, 0x9F, 0x4B, 0x9E, 0x87, 0xDA, + 0x75, 0xD5, 0x51, 0xE8, 0x24, 0x0, 0x59, 0x5A, 0x5B, 0x52, 0x8B, + 0x17, 0x43, 0xB, 0xD2, 0x74, 0x14, 0x87, 0xDA, 0x5E, 0x87, 0xDE, + 0x56, 0x87, 0xDA, 0x43, 0x89, 0x17, 0x87, 0xDA, 0x3, 0xD9, 0x87, + 0xDA, 0x5B, 0xEB, 0xE4, 0xB9, 0xB5, 0x8, 0x51, 0x3C, 0xD, 0x32, + 0xC0, 0xA2, 0x3D, 0x3, 0x8B, 0x1E, 0x30, 0x0, 0x4B, 0x43, 0x8A, + 0x7, 0x43, 0xA, 0x7, 0x75, 0x1, 0xC3, 0x43, 0x8B, 0x17, 0x43, + 0xE8, 0x7B, 0xEB, 0xA, 0xC0, 0x74, 0xEC, 0x8A, 0xC8, 0xA0, 0x3D, + 0x3, 0xA, 0xC0, 0x8A, 0xC1, 0x74, 0x5B, 0xCD, 0xA5, 0x3C, 0xA7, + 0x75, 0x18, 0xE8, 0x63, 0xEB, 0x3C, 0x89, 0x75, 0xE4, 0xE8, 0x5C, + 0xEB, 0x3C, 0xE, 0x75, 0xDD, 0x52, 0xE8, 0xAC, 0xEC, 0xB, 0xD2, + 0x75, 0xA, 0xEB, 0x29, 0x3C, 0xE, 0x75, 0xCC, 0x52, 0xE8, 0x9E, + 0xEC, 0x53, 0xE8, 0x8C, 0xE6, 0x9F, 0x49, 0x9E, 0xB0, 0xD, 0x72, + 0x3F, 0xE8, 0x78, 0x8, 0xBB, 0xFC, 0x23, 0x52, 0xE8, 0x69, 0x57, + 0x5B, 0xE8, 0x60, 0x41, 0x59, 0x5B, 0x53, 0x51, 0xE8, 0x51, 0x41, + 0x5B, 0x5A, 0x4B, 0xEB, 0xA3, 0x55, 0x6E, 0x64, 0x65, 0x66, 0x69, + 0x6E, 0x65, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x0, 0x3C, + 0xD, 0x75, 0xEA, 0x52, 0xE8, 0x61, 0xEC, 0x53, 0x87, 0xDA, 0x43, + 0x43, 0x43, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0xB0, 0xE, 0xBB, 0xF7, + 0x23, 0x53, 0x8B, 0x1E, 0xFE, 0x2, 0x53, 0x4B, 0x88, 0x2F, 0x4B, + 0x88, 0xF, 0x4B, 0x88, 0x7, 0x5B, 0xC3, 0xA0, 0x3D, 0x3, 0xA, + 0xC0, 0x74, 0xF8, 0xE9, 0x49, 0xFF, 0xE8, 0xB2, 0x9, 0x42, 0xE8, + 0xAE, 0x9, 0x41, 0xE8, 0xAA, 0x9, 0x53, 0xE8, 0xA6, 0x9, 0x45, + 0xA0, 0x5D, 0x4, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0x6E, 0xE3, 0x53, + 0x8B, 0x1E, 0x5A, 0x3, 0x87, 0xDA, 0x8B, 0x1E, 0x5C, 0x3, 0x3B, + 0xDA, 0x74, 0x3, 0xE9, 0x5C, 0xE3, 0x5B, 0x8A, 0x7, 0x2C, 0x30, + 0x73, 0x3, 0xE9, 0x49, 0xE3, 0x3C, 0x2, 0x72, 0x3, 0xE9, 0x42, + 0xE3, 0xA2, 0x5C, 0x4, 0xFE, 0xC0, 0xA2, 0x5D, 0x4, 0xE8, 0x96, + 0xEA, 0xC3, 0x2E, 0x8A, 0x7, 0xA, 0xC0, 0x74, 0xF8, 0xE8, 0x3, + 0x0, 0x43, 0xEB, 0xF3, 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0xE9, + 0x19, 0x7, 0x74, 0x9, 0xE8, 0x84, 0xF2, 0x53, 0xE8, 0x6, 0x47, + 0xEB, 0x20, 0x53, 0xBB, 0xD2, 0x24, 0xE8, 0xA5, 0x56, 0xE8, 0xE1, + 0xC, 0x5A, 0x73, 0x3, 0xE9, 0x8F, 0x9, 0x52, 0x43, 0x8A, 0x7, + 0xE8, 0x0, 0x45, 0x8A, 0x7, 0xA, 0xC0, 0x75, 0xE4, 0xE8, 0xE4, + 0x46, 0x89, 0x1E, 0xC, 0x0, 0xE8, 0x9E, 0x3F, 0x5B, 0xC3, 0x52, + 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, + 0x72, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x28, 0x2D, 0x33, 0x32, + 0x37, 0x36, 0x38, 0x20, 0x74, 0x6F, 0x20, 0x33, 0x32, 0x37, 0x36, + 0x37, 0x29, 0x0, 0xB1, 0x1D, 0xEB, 0x2, 0xB1, 0x1A, 0xB5, 0x0, + 0x87, 0xDA, 0x8B, 0x1E, 0x2E, 0x0, 0x89, 0x1E, 0x5A, 0x4, 0x87, + 0xDA, 0xFE, 0xC5, 0x4B, 0xE8, 0xC, 0xEA, 0x74, 0x17, 0x3C, 0x22, + 0x75, 0xB, 0xE8, 0x3, 0xEA, 0xA, 0xC0, 0x74, 0xC, 0x3C, 0x22, + 0x75, 0xF5, 0x3C, 0xA1, 0x74, 0x1D, 0x3C, 0xCD, 0x75, 0xE4, 0xA, + 0xC0, 0x75, 0x15, 0x43, 0x8A, 0x7, 0x43, 0xA, 0x7, 0x8A, 0xD1, + 0x75, 0x3, 0xE9, 0x9D, 0xE2, 0x43, 0x8B, 0x17, 0x43, 0x89, 0x16, + 0x5A, 0x4, 0xE8, 0xD7, 0xE9, 0x3C, 0x8F, 0x75, 0x7, 0x51, 0xE8, + 0x11, 0xEC, 0x59, 0xEB, 0xD9, 0x3C, 0x84, 0x75, 0x7, 0x51, 0xE8, + 0x2, 0xEC, 0x59, 0xEB, 0xCE, 0x8A, 0xC1, 0x3C, 0x1A, 0x8A, 0x7, + 0x74, 0xD, 0x3C, 0xB1, 0x74, 0xA3, 0x3C, 0xB2, 0x75, 0xA1, 0xFE, + 0xCD, 0x75, 0x9D, 0xC3, 0x3C, 0x82, 0x74, 0x96, 0x3C, 0x83, 0x75, + 0x94, 0xFE, 0xCD, 0x74, 0xF3, 0xE8, 0x9D, 0xE9, 0x74, 0xA8, 0x87, + 0xDA, 0x8B, 0x1E, 0x2E, 0x0, 0x53, 0x8B, 0x1E, 0x5A, 0x4, 0x89, + 0x1E, 0x2E, 0x0, 0x87, 0xDA, 0x51, 0xE8, 0xD7, 0x11, 0x59, 0x4B, + 0xE8, 0x81, 0xE9, 0xBA, 0x2A, 0x25, 0x74, 0x8, 0xE8, 0x50, 0x8, + 0x2C, 0x4B, 0xBA, 0x79, 0x25, 0x5E, 0x87, 0xDE, 0x56, 0x89, 0x1E, + 0x2E, 0x0, 0x5B, 0x52, 0xC3, 0x9F, 0x50, 0xA0, 0xA8, 0x4, 0xA2, + 0xA9, 0x4, 0x58, 0x9E, 0x9F, 0x50, 0x32, 0xC0, 0xA2, 0xA8, 0x4, + 0x58, 0x9E, 0xC3, 0xE8, 0xDB, 0x2, 0x8A, 0x7, 0x43, 0x8A, 0xF, + 0x43, 0x8A, 0x2F, 0x5A, 0x51, 0x50, 0xE8, 0xD6, 0x2, 0x58, 0x8A, + 0xF0, 0x8A, 0x17, 0x43, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x5B, 0x8A, + 0xC2, 0xA, 0xC6, 0x75, 0x1, 0xC3, 0x8A, 0xC6, 0x2C, 0x1, 0x72, + 0xF9, 0x32, 0xC0, 0x3A, 0xC2, 0xFE, 0xC0, 0x73, 0xF1, 0xFE, 0xCE, + 0xFE, 0xCA, 0x8B, 0xF1, 0xAC, 0x41, 0x3A, 0x7, 0x9F, 0x43, 0x9E, + 0x74, 0xDC, 0xF5, 0xE9, 0x72, 0x3F, 0xE8, 0xF7, 0x3D, 0xEB, 0x8, + 0xE8, 0xFC, 0x3D, 0xEB, 0x3, 0xE8, 0xAE, 0x4A, 0xE8, 0x2F, 0x0, + 0xE8, 0x89, 0x2, 0xB9, 0x17, 0x29, 0x51, 0x8A, 0x7, 0x43, 0x53, + 0xE8, 0xAB, 0x0, 0x5B, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0xE8, 0xD, + 0x0, 0x53, 0x8A, 0xD8, 0xE8, 0x5B, 0x2, 0x5A, 0xC3, 0xB0, 0x1, + 0xE8, 0x95, 0x0, 0xBB, 0x2C, 0x3, 0x53, 0x88, 0x7, 0x43, 0x89, + 0x17, 0x5B, 0xC3, 0x4B, 0xB5, 0x22, 0x8A, 0xF5, 0x53, 0xB1, 0xFF, + 0x43, 0x8A, 0x7, 0xFE, 0xC1, 0xA, 0xC0, 0x74, 0x8, 0x3A, 0xC6, + 0x74, 0x4, 0x3A, 0xC5, 0x75, 0xEF, 0x3C, 0x22, 0x75, 0x3, 0xE8, + 0xB1, 0xE8, 0x53, 0x8A, 0xC5, 0x3C, 0x2C, 0x75, 0xD, 0xFE, 0xC1, + 0xFE, 0xC9, 0x74, 0x7, 0x4B, 0x8A, 0x7, 0x3C, 0x20, 0x74, 0xF5, + 0x5B, 0x5E, 0x87, 0xDE, 0x56, 0x43, 0x87, 0xDA, 0x8A, 0xC1, 0xE8, + 0xB4, 0xFF, 0xBA, 0x2C, 0x3, 0xB0, 0x52, 0x8B, 0x1E, 0xC, 0x3, + 0x89, 0x1E, 0xA3, 0x4, 0xB0, 0x3, 0xA2, 0xFB, 0x2, 0xE8, 0x17, + 0x3E, 0xBA, 0x2F, 0x3, 0x3B, 0xDA, 0x89, 0x1E, 0xC, 0x3, 0x5B, + 0x8A, 0x7, 0x75, 0x9B, 0xBA, 0x10, 0x0, 0xE9, 0x22, 0xE1, 0x43, + 0xE8, 0x92, 0xFF, 0xE8, 0xEC, 0x1, 0xE8, 0x7C, 0x3E, 0xFE, 0xC6, + 0xFE, 0xCE, 0x74, 0x85, 0x8B, 0xF1, 0xAC, 0xE8, 0xD9, 0x4, 0x3C, + 0xD, 0x75, 0x3, 0xE8, 0xA5, 0x5, 0x41, 0xEB, 0xEC, 0xA, 0xC0, + 0xEB, 0x2, 0x58, 0x9E, 0x9F, 0x50, 0x8B, 0x1E, 0x5C, 0x3, 0x87, + 0xDA, 0x8B, 0x1E, 0x2F, 0x3, 0xF6, 0xD0, 0x8A, 0xC8, 0xB5, 0xFF, + 0x3, 0xD9, 0x43, 0x3B, 0xDA, 0x72, 0xF, 0x89, 0x1E, 0x2F, 0x3, + 0x43, 0x87, 0xDA, 0x58, 0x9E, 0xC3, 0x58, 0x86, 0xC4, 0x9E, 0xC3, + 0x58, 0x9E, 0xBA, 0xE, 0x0, 0x75, 0x3, 0xE9, 0xCA, 0xE0, 0x3A, + 0xC0, 0x9F, 0x50, 0xB9, 0xDA, 0x26, 0x51, 0x8B, 0x1E, 0xA, 0x3, + 0x89, 0x1E, 0x2F, 0x3, 0xBB, 0x0, 0x0, 0x53, 0x8B, 0x1E, 0x5C, + 0x3, 0x53, 0xBB, 0xE, 0x3, 0x8B, 0x16, 0xC, 0x3, 0x3B, 0xDA, + 0xB9, 0x2A, 0x27, 0x74, 0x3, 0xE9, 0x9C, 0x0, 0xBB, 0xE2, 0x3, + 0x89, 0x1E, 0x4E, 0x4, 0x8B, 0x1E, 0x5A, 0x3, 0x89, 0x1E, 0x4B, + 0x4, 0x8B, 0x1E, 0x58, 0x3, 0x8B, 0x16, 0x4B, 0x4, 0x3B, 0xDA, + 0x74, 0x1B, 0x8A, 0x7, 0x43, 0x43, 0x43, 0x50, 0xE8, 0x45, 0x13, + 0x58, 0x3C, 0x3, 0x75, 0x5, 0xE8, 0x71, 0x0, 0x32, 0xC0, 0x8A, + 0xD0, 0xB6, 0x0, 0x3, 0xDA, 0xEB, 0xDD, 0x8B, 0x1E, 0x4E, 0x4, + 0x8B, 0x17, 0xB, 0xD2, 0x8B, 0x1E, 0x5A, 0x3, 0x74, 0x19, 0x87, + 0xDA, 0x89, 0x1E, 0x4E, 0x4, 0x43, 0x43, 0x8B, 0x17, 0x43, 0x43, + 0x87, 0xDA, 0x3, 0xDA, 0x89, 0x1E, 0x4B, 0x4, 0x87, 0xDA, 0xEB, + 0xB7, 0x59, 0x8B, 0x16, 0x5C, 0x3, 0x3B, 0xDA, 0x75, 0x3, 0xE9, + 0x6C, 0x0, 0x8A, 0x7, 0x43, 0x50, 0x43, 0x43, 0xE8, 0xF8, 0x12, + 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x43, 0x58, 0x53, 0x3, 0xD9, 0x3C, + 0x3, 0x75, 0xDD, 0x89, 0x1E, 0x33, 0x3, 0x5B, 0x8A, 0xF, 0xB5, + 0x0, 0x3, 0xD9, 0x3, 0xD9, 0x43, 0x87, 0xDA, 0x8B, 0x1E, 0x33, + 0x3, 0x87, 0xDA, 0x3B, 0xDA, 0x74, 0xC4, 0xB9, 0xC5, 0x27, 0x51, + 0x32, 0xC0, 0xA, 0x7, 0x9F, 0x43, 0x9E, 0x8A, 0x17, 0x9F, 0x43, + 0x9E, 0x8A, 0x37, 0x9F, 0x43, 0x9E, 0x75, 0x1, 0xC3, 0x8B, 0xCB, + 0x8B, 0x1E, 0x2F, 0x3, 0x3B, 0xDA, 0x8B, 0xD9, 0x72, 0xF3, 0x5B, + 0x5E, 0x87, 0xDE, 0x56, 0x3B, 0xDA, 0x5E, 0x87, 0xDE, 0x56, 0x53, + 0x8B, 0xD9, 0x73, 0xE3, 0x59, 0x58, 0x58, 0x53, 0x52, 0x51, 0xC3, + 0x5A, 0x5B, 0xB, 0xDB, 0x74, 0xF9, 0x4B, 0x8A, 0x2F, 0x4B, 0x8A, + 0xF, 0x53, 0x4B, 0x8A, 0x1F, 0xB7, 0x0, 0x3, 0xD9, 0x8A, 0xF5, + 0x8A, 0xD1, 0x4B, 0x8B, 0xCB, 0x8B, 0x1E, 0x2F, 0x3, 0xE8, 0xA0, + 0x3C, 0x5B, 0x88, 0xF, 0x43, 0x88, 0x2F, 0x8B, 0xD9, 0x4B, 0xE9, + 0xE0, 0xFE, 0x51, 0x53, 0x8B, 0x1E, 0xA3, 0x4, 0x5E, 0x87, 0xDE, + 0x56, 0xE8, 0xA0, 0xF0, 0x5E, 0x87, 0xDE, 0x56, 0xE8, 0xED, 0x3B, + 0x8A, 0x7, 0x53, 0x8B, 0x1E, 0xA3, 0x4, 0x53, 0x2, 0x7, 0xBA, + 0xF, 0x0, 0x73, 0x3, 0xE9, 0x78, 0xDF, 0xE8, 0xDB, 0xFD, 0x5A, + 0xE8, 0x48, 0x0, 0x5E, 0x87, 0xDE, 0x56, 0xE8, 0x3F, 0x0, 0x53, + 0x8B, 0x1E, 0x2D, 0x3, 0x87, 0xDA, 0xE8, 0xE, 0x0, 0xE8, 0xB, + 0x0, 0xBB, 0x3A, 0x17, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0xE9, 0x7, + 0xFE, 0x5B, 0x5E, 0x87, 0xDE, 0x56, 0x8A, 0x7, 0x43, 0x8A, 0xF, + 0x43, 0x8A, 0x2F, 0x8A, 0xD8, 0xFE, 0xC3, 0xFE, 0xCB, 0x75, 0x1, + 0xC3, 0x8B, 0xF1, 0xAC, 0x8B, 0xFA, 0xAA, 0x41, 0x42, 0xEB, 0xF1, + 0xE8, 0x92, 0x3B, 0x8B, 0x1E, 0xA3, 0x4, 0x87, 0xDA, 0xE8, 0x20, + 0x0, 0x87, 0xDA, 0x75, 0xE5, 0x52, 0x8A, 0xF5, 0x8A, 0xD1, 0x4A, + 0x8A, 0xF, 0x8B, 0x1E, 0x2F, 0x3, 0x3B, 0xDA, 0x75, 0xA, 0x32, + 0xC0, 0x8A, 0xE8, 0x3, 0xD9, 0x89, 0x1E, 0x2F, 0x3, 0x5B, 0xC3, + 0xCD, 0xEE, 0x8B, 0x1E, 0xC, 0x3, 0x4B, 0x8A, 0x2F, 0x4B, 0x8A, + 0xF, 0x4B, 0x3B, 0xDA, 0x75, 0xEE, 0x89, 0x1E, 0xC, 0x3, 0xC3, + 0xB9, 0x7F, 0x1B, 0x51, 0xE8, 0xB7, 0xFF, 0x32, 0xC0, 0x8A, 0xF0, + 0x8A, 0x7, 0xA, 0xC0, 0xC3, 0xB9, 0x7F, 0x1B, 0x51, 0xE8, 0xED, + 0xFF, 0x75, 0x3, 0xE9, 0x55, 0xE7, 0x43, 0x8B, 0x17, 0x8B, 0xF2, + 0xAC, 0xC3, 0xE8, 0x2E, 0xFD, 0xE8, 0xE, 0xF6, 0x8B, 0x1E, 0x2D, + 0x3, 0x88, 0x17, 0x59, 0xE9, 0x72, 0xFD, 0xE8, 0xFF, 0xE5, 0xE8, + 0xD3, 0x4, 0x28, 0xE8, 0xF7, 0xF5, 0x52, 0xE8, 0xCB, 0x4, 0x2C, + 0xE8, 0xFA, 0xED, 0xE8, 0xC4, 0x4, 0x29, 0x5E, 0x87, 0xDE, 0x56, + 0x53, 0xE8, 0xEC, 0xF1, 0x74, 0x5, 0xE8, 0xE1, 0xF5, 0xEB, 0x3, + 0xE8, 0xB9, 0xFF, 0x5A, 0xE8, 0x5, 0x0, 0xE8, 0xD5, 0xF5, 0xB0, + 0x20, 0x50, 0x8A, 0xC2, 0xE8, 0xEC, 0xFC, 0x8A, 0xE8, 0x58, 0xFE, + 0xC5, 0xFE, 0xCD, 0x74, 0xBC, 0x8B, 0x1E, 0x2D, 0x3, 0x88, 0x7, + 0x43, 0xFE, 0xCD, 0x75, 0xF9, 0xEB, 0xAF, 0xE8, 0xA3, 0x0, 0x32, + 0xC0, 0x5E, 0x87, 0xDE, 0x56, 0x8A, 0xC8, 0xB0, 0x53, 0x53, 0x8A, + 0x7, 0x3A, 0xC5, 0x72, 0x3, 0x8A, 0xC5, 0xBA, 0xB1, 0x0, 0x51, + 0xE8, 0x51, 0xFD, 0x59, 0x5B, 0x53, 0x43, 0x8A, 0x2F, 0x43, 0x8A, + 0x3F, 0x8A, 0xDD, 0xB5, 0x0, 0x3, 0xD9, 0x8B, 0xCB, 0xE8, 0xA8, + 0xFC, 0x8A, 0xD8, 0xE8, 0xF7, 0xFE, 0x5A, 0xE8, 0xD, 0xFF, 0xE9, + 0xE8, 0xFC, 0xE8, 0x66, 0x0, 0x5A, 0x52, 0x8B, 0xF2, 0xAC, 0x2A, + 0xC5, 0xEB, 0xBC, 0x87, 0xDA, 0x8A, 0x7, 0xE8, 0x5C, 0x0, 0xFE, + 0xC5, 0xFE, 0xCD, 0x75, 0x3, 0xE9, 0x98, 0xE6, 0x51, 0xE8, 0xB5, + 0x1, 0x58, 0x86, 0xC4, 0x9E, 0x5E, 0x87, 0xDE, 0x56, 0xB9, 0x75, + 0x29, 0x51, 0xFE, 0xC8, 0x3A, 0x7, 0xB5, 0x0, 0x72, 0x1, 0xC3, + 0x8A, 0xC8, 0x8A, 0x7, 0x2A, 0xC1, 0x3A, 0xC2, 0x8A, 0xE8, 0x72, + 0xF3, 0x8A, 0xEA, 0xC3, 0xE8, 0x0, 0xFF, 0x75, 0x3, 0xE9, 0x8E, + 0xF1, 0x8A, 0xD0, 0x43, 0x8B, 0x1F, 0x53, 0x3, 0xDA, 0x8A, 0x2F, + 0x88, 0x37, 0x5E, 0x87, 0xDE, 0x56, 0x51, 0x4B, 0xE8, 0x17, 0xE5, + 0xE8, 0xBE, 0x3F, 0x59, 0x5B, 0x88, 0x2F, 0xC3, 0x87, 0xDA, 0xE8, + 0xE1, 0x3, 0x29, 0x59, 0x5A, 0x51, 0x8A, 0xEA, 0xC3, 0xE8, 0x0, + 0xE5, 0xE8, 0x3, 0xED, 0xE8, 0x2, 0xF1, 0xB0, 0x1, 0x50, 0x74, + 0x16, 0x58, 0xE8, 0xF3, 0xF4, 0xA, 0xC0, 0x75, 0x3, 0xE9, 0x26, + 0xE6, 0x50, 0xE8, 0xBD, 0x3, 0x2C, 0xE8, 0xEC, 0xEC, 0xE8, 0xFD, + 0x39, 0xE8, 0xB3, 0x3, 0x2C, 0x53, 0x8B, 0x1E, 0xA3, 0x4, 0x5E, + 0x87, 0xDE, 0x56, 0xE8, 0xD9, 0xEC, 0xE8, 0xA3, 0x3, 0x29, 0x53, + 0xE8, 0x50, 0xFE, 0x87, 0xDA, 0x59, 0x5B, 0x58, 0x51, 0xB9, 0x7, + 0x65, 0x51, 0xB9, 0x7F, 0x1B, 0x51, 0x50, 0x52, 0xE8, 0x44, 0xFE, + 0x5A, 0x58, 0x8A, 0xE8, 0xFE, 0xC8, 0x8A, 0xC8, 0x3A, 0x7, 0xB0, + 0x0, 0x73, 0xA2, 0x8B, 0xF2, 0xAC, 0xA, 0xC0, 0x8A, 0xC5, 0x74, + 0x99, 0x8A, 0x7, 0x43, 0x8A, 0x2F, 0x43, 0x8A, 0x3F, 0x8A, 0xDD, + 0xB5, 0x0, 0x3, 0xD9, 0x2A, 0xC1, 0x8A, 0xE8, 0x51, 0x52, 0x5E, + 0x87, 0xDE, 0x56, 0x8A, 0xF, 0x43, 0x8B, 0x17, 0x5B, 0x53, 0x52, + 0x51, 0x8B, 0xF2, 0xAC, 0x3A, 0x7, 0x75, 0x1E, 0x42, 0xFE, 0xC9, + 0x74, 0xC, 0x43, 0xFE, 0xCD, 0x75, 0xEF, 0x5A, 0x5A, 0x59, 0x5A, + 0x32, 0xC0, 0xC3, 0x5B, 0x5A, 0x5A, 0x59, 0x8A, 0xC5, 0x2A, 0xC7, + 0x2, 0xC1, 0xFE, 0xC0, 0xC3, 0x59, 0x5A, 0x5B, 0x43, 0xFE, 0xCD, + 0x75, 0xD0, 0xEB, 0xE5, 0xE8, 0x21, 0x3, 0x28, 0xE8, 0x97, 0xC, + 0xE8, 0x61, 0x39, 0x53, 0x52, 0x87, 0xDA, 0x43, 0x8B, 0x17, 0x8B, + 0x1E, 0x5C, 0x3, 0x3B, 0xDA, 0x72, 0x12, 0x8B, 0x1E, 0x30, 0x0, + 0x3B, 0xDA, 0x73, 0xA, 0x5B, 0x53, 0xE8, 0x2E, 0xFB, 0x5B, 0x53, + 0xE8, 0xBE, 0x39, 0x5B, 0x5E, 0x87, 0xDE, 0x56, 0xE8, 0xF1, 0x2, + 0x2C, 0xE8, 0x15, 0xF4, 0xA, 0xC0, 0x75, 0x3, 0xE9, 0x4B, 0xE5, + 0x50, 0x8A, 0x7, 0xE8, 0x66, 0x0, 0x52, 0xE8, 0x4, 0xEC, 0x53, + 0xE8, 0x8A, 0xFD, 0x87, 0xDA, 0x5B, 0x59, 0x58, 0x8A, 0xE8, 0x5E, + 0x87, 0xDE, 0x56, 0x53, 0xBB, 0x7, 0x65, 0x5E, 0x87, 0xDE, 0x56, + 0x8A, 0xC1, 0xA, 0xC0, 0x74, 0x90, 0x8A, 0x7, 0x2A, 0xC5, 0x73, + 0x3, 0xE9, 0x1B, 0xE5, 0xFE, 0xC0, 0x3A, 0xC1, 0x72, 0x2, 0x8A, + 0xC1, 0x8A, 0xCD, 0xFE, 0xC9, 0xB5, 0x0, 0x52, 0x43, 0x8A, 0x17, + 0x43, 0x8A, 0x3F, 0x8A, 0xDA, 0x3, 0xD9, 0x8A, 0xE8, 0x5A, 0x87, + 0xDA, 0x8A, 0xF, 0x43, 0x8B, 0x1F, 0x87, 0xDA, 0x8A, 0xC1, 0xA, + 0xC0, 0x75, 0x1, 0xC3, 0x8B, 0xF2, 0xAC, 0x88, 0x7, 0x42, 0x43, + 0xFE, 0xC9, 0x74, 0xF4, 0xFE, 0xCD, 0x75, 0xF1, 0xC3, 0xB2, 0xFF, + 0x3C, 0x29, 0x74, 0x7, 0xE8, 0x71, 0x2, 0x2C, 0xE8, 0x95, 0xF3, + 0xE8, 0x6A, 0x2, 0x29, 0xC3, 0xE8, 0x96, 0xEF, 0x74, 0x3, 0xE9, + 0x6, 0x0, 0xE8, 0x12, 0xFD, 0xE8, 0x7C, 0xFB, 0x8B, 0x16, 0x5C, + 0x3, 0x8B, 0x1E, 0x2F, 0x3, 0xE9, 0xCB, 0xEF, 0xCD, 0xB4, 0x9F, + 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x53, 0xE8, 0x25, 0x4, 0x74, 0x3, + 0xE9, 0xDD, 0x17, 0x5B, 0x58, 0x86, 0xC4, 0x9E, 0x51, 0x9F, 0x50, + 0xEB, 0x12, 0x32, 0xC0, 0xA2, 0x4F, 0x3, 0xE9, 0x93, 0xE5, 0x19, + 0xFE, 0xC8, 0xE8, 0x63, 0x23, 0xB0, 0x8, 0xEB, 0x38, 0x3C, 0x9, + 0x75, 0x10, 0xB0, 0x20, 0xE8, 0xCA, 0xFF, 0xE8, 0x4E, 0x23, 0x24, + 0x7, 0x75, 0xF4, 0x58, 0x9E, 0x59, 0xC3, 0x3C, 0x20, 0x72, 0x20, + 0xA0, 0x29, 0x0, 0x8A, 0xE8, 0xE8, 0x3A, 0x23, 0xFE, 0xC5, 0x74, + 0xB, 0xFE, 0xCD, 0x3A, 0xC5, 0x75, 0x3, 0xE8, 0x72, 0x0, 0x74, + 0x9, 0x3C, 0xFF, 0x74, 0x5, 0xFE, 0xC0, 0xE8, 0x27, 0x23, 0x58, + 0x9E, 0x59, 0x9F, 0x50, 0x58, 0x9E, 0xE8, 0x7C, 0x22, 0xC3, 0xCD, + 0xB5, 0xE8, 0xBC, 0x3, 0x74, 0x3D, 0xE8, 0xB6, 0x17, 0x73, 0xF3, + 0x51, 0x52, 0x53, 0xA0, 0x36, 0x5, 0x24, 0xC8, 0xA2, 0x36, 0x5, + 0xE8, 0xCC, 0x18, 0x5B, 0x5A, 0x59, 0xA0, 0x6B, 0x4, 0xA, 0xC0, + 0x74, 0x3, 0xE9, 0xA, 0x31, 0xA0, 0xEF, 0x4, 0xA, 0xC0, 0x74, + 0x7, 0xBB, 0xE8, 0xE, 0x53, 0xE9, 0xED, 0x0, 0x53, 0x51, 0x52, + 0xBB, 0x2D, 0x7, 0xE8, 0x2, 0x4F, 0x5A, 0x59, 0xB0, 0xD, 0x5B, + 0xC3, 0xE8, 0x12, 0x21, 0xC3, 0xE8, 0xCC, 0x22, 0xA, 0xC0, 0x74, + 0xF8, 0xEB, 0xB, 0xC6, 0x7, 0x0, 0xE8, 0x6A, 0x3, 0xBB, 0xF6, + 0x1, 0x75, 0x7, 0xCD, 0xB6, 0xB0, 0xD, 0xE8, 0x2D, 0xFF, 0xE8, + 0x5B, 0x3, 0x74, 0x3, 0x32, 0xC0, 0xC3, 0x32, 0xC0, 0xE8, 0xAC, + 0x22, 0x32, 0xC0, 0xC3, 0xCD, 0xB7, 0xA0, 0x5E, 0x0, 0xA, 0xC0, + 0x75, 0x1, 0xC3, 0xE8, 0xC4, 0xFF, 0x75, 0x3, 0xE8, 0xDC, 0x1, + 0xE9, 0x90, 0x1, 0xE8, 0xEF, 0x32, 0x53, 0xE8, 0xAF, 0x20, 0x74, + 0x21, 0xE8, 0xB0, 0xFF, 0xA, 0xC0, 0x75, 0x10, 0x50, 0xB0, 0x2, + 0xE8, 0x8B, 0xF9, 0x8B, 0x1E, 0x2D, 0x3, 0x5A, 0x89, 0x17, 0xE9, + 0xD0, 0xF9, 0x50, 0xE8, 0x7B, 0xF9, 0x58, 0x8A, 0xD0, 0xE8, 0x4A, + 0xFC, 0xBB, 0x6, 0x0, 0x89, 0x1E, 0xA3, 0x4, 0xB0, 0x3, 0xA2, + 0xFB, 0x2, 0x5B, 0xC3, 0x53, 0x8B, 0x1E, 0xA, 0x3, 0xB5, 0x0, + 0x3, 0xD9, 0x3, 0xD9, 0xB0, 0x26, 0x2A, 0xC3, 0x8A, 0xD8, 0xB0, + 0xFF, 0x1A, 0xC7, 0x8A, 0xF8, 0x72, 0x6, 0x3, 0xDC, 0x5B, 0x73, + 0x1, 0xC3, 0x8B, 0x1E, 0x2C, 0x0, 0x4B, 0x4B, 0x89, 0x1E, 0x45, + 0x3, 0xBA, 0x7, 0x0, 0xE9, 0xD4, 0xDA, 0x39, 0x1E, 0x2F, 0x3, + 0x73, 0xE9, 0x51, 0x52, 0x53, 0xE8, 0x6, 0xFA, 0x5B, 0x5A, 0x59, + 0x39, 0x1E, 0x2F, 0x3, 0x73, 0xDA, 0xEB, 0xE3, 0x75, 0xD6, 0x8B, + 0x1E, 0x30, 0x0, 0xE8, 0x79, 0x1, 0xA2, 0x64, 0x4, 0xA2, 0x3E, + 0x3, 0xA2, 0x3D, 0x3, 0x88, 0x7, 0x43, 0x88, 0x7, 0x43, 0x89, + 0x1E, 0x58, 0x3, 0xCD, 0xAE, 0x8B, 0x1E, 0x30, 0x0, 0x4B, 0xCD, + 0xAF, 0x89, 0x1E, 0x3B, 0x3, 0xA0, 0x65, 0x4, 0xA, 0xC0, 0x75, + 0x17, 0x32, 0xC0, 0xA2, 0x5D, 0x4, 0xA2, 0x5C, 0x4, 0xB5, 0x1A, + 0xBB, 0x60, 0x3, 0xCD, 0xB0, 0xC6, 0x7, 0x4, 0x43, 0xFE, 0xCD, + 0x75, 0xF8, 0xBA, 0x7, 0x0, 0xBB, 0xB, 0x0, 0xE8, 0xC6, 0x37, + 0x32, 0xC0, 0xA2, 0x4F, 0x3, 0x8A, 0xD8, 0x8A, 0xF8, 0x89, 0x1E, + 0x4D, 0x3, 0x89, 0x1E, 0x56, 0x3, 0x8B, 0x1E, 0xA, 0x3, 0xA0, + 0x6B, 0x4, 0xA, 0xC0, 0x75, 0x4, 0x89, 0x1E, 0x2F, 0x3, 0x32, + 0xC0, 0xE8, 0x7C, 0x0, 0x8B, 0x1E, 0x58, 0x3, 0x89, 0x1E, 0x5A, + 0x3, 0x89, 0x1E, 0x5C, 0x3, 0xA0, 0x65, 0x4, 0xA, 0xC0, 0x75, + 0x3, 0xE8, 0xB4, 0x15, 0xA0, 0x36, 0x5, 0x24, 0x1, 0x75, 0x3, + 0xA2, 0x36, 0x5, 0x59, 0x8B, 0x1E, 0x2C, 0x0, 0x4B, 0x4B, 0x89, + 0x1E, 0x45, 0x3, 0x43, 0x43, 0xCD, 0xB1, 0x8B, 0xE3, 0xBB, 0xE, + 0x3, 0x89, 0x1E, 0xC, 0x3, 0xE8, 0xF3, 0xF7, 0xE8, 0xCA, 0xE6, + 0x32, 0xC0, 0x8A, 0xF8, 0x8A, 0xD8, 0x89, 0x1E, 0x7C, 0x3, 0xA2, + 0x4D, 0x4, 0x89, 0x1E, 0xE4, 0x3, 0x89, 0x1E, 0x50, 0x4, 0x89, + 0x1E, 0x7A, 0x3, 0xA2, 0x39, 0x3, 0x53, 0x51, 0x8B, 0x1E, 0x3B, + 0x3, 0xC3, 0x3B, 0xDA, 0xC3, 0x5E, 0x8B, 0xFB, 0xFC, 0x2E, 0xA6, + 0x56, 0x8B, 0xDF, 0x75, 0xA, 0x8A, 0x7, 0x3C, 0x3A, 0x72, 0x1, + 0xC3, 0xE9, 0x1C, 0xE1, 0xE9, 0xB2, 0xD9, 0x87, 0xDA, 0x8B, 0x1E, + 0x30, 0x0, 0x74, 0x11, 0x87, 0xDA, 0xE8, 0x52, 0xE2, 0x53, 0xE8, + 0x4A, 0xDC, 0x8B, 0xD9, 0x5A, 0x72, 0x3, 0xE9, 0xB, 0xE3, 0x4B, + 0x89, 0x1E, 0x5E, 0x3, 0x87, 0xDA, 0xC3, 0x75, 0xFD, 0xFE, 0xC0, + 0xEB, 0x9, 0x75, 0xF7, 0x9C, 0x75, 0x3, 0xE8, 0x9F, 0xA, 0x9D, + 0x89, 0x1E, 0x43, 0x3, 0xBB, 0xE, 0x3, 0x89, 0x1E, 0xC, 0x3, + 0xBB, 0xC, 0xFF, 0x59, 0x8B, 0x1E, 0x2E, 0x0, 0x53, 0x9C, 0x8A, + 0xC3, 0x22, 0xC7, 0xFE, 0xC0, 0x74, 0xC, 0x89, 0x1E, 0x54, 0x3, + 0x8B, 0x1E, 0x43, 0x3, 0x89, 0x1E, 0x56, 0x3, 0xE8, 0xF5, 0xFD, + 0x9D, 0xBB, 0x32, 0x7, 0x74, 0x3, 0xE9, 0x14, 0xDA, 0xE9, 0x41, + 0xDA, 0xB0, 0xF, 0x50, 0xB0, 0x5E, 0xE8, 0x29, 0xFD, 0x58, 0x4, + 0x40, 0xE8, 0x23, 0xFD, 0xE9, 0xEC, 0xFD, 0x8B, 0x1E, 0x56, 0x3, + 0xB, 0xDB, 0xBA, 0x11, 0x0, 0x75, 0x3, 0xE9, 0x45, 0xD9, 0x8B, + 0x16, 0x54, 0x3, 0x89, 0x16, 0x2E, 0x0, 0xC3, 0xB8, 0x32, 0xC0, + 0xA2, 0x76, 0x4, 0xC3, 0xE8, 0xC8, 0x8, 0x52, 0x53, 0xBB, 0x6E, + 0x4, 0xE8, 0xB, 0x36, 0x8B, 0x1E, 0x5A, 0x3, 0x5E, 0x87, 0xDE, + 0x56, 0xE8, 0x6C, 0xEC, 0x50, 0xE8, 0x37, 0xFF, 0x2C, 0xE8, 0xAD, + 0x8, 0x58, 0x8A, 0xE8, 0xE8, 0x5E, 0xEC, 0x3A, 0xC5, 0x74, 0x3, + 0xE9, 0x8, 0xD9, 0x5E, 0x87, 0xDE, 0x56, 0x87, 0xDA, 0x53, 0x8B, + 0x1E, 0x5A, 0x3, 0x3B, 0xDA, 0x75, 0x13, 0x5A, 0x5B, 0x5E, 0x87, + 0xDE, 0x56, 0x52, 0xE8, 0xD2, 0x35, 0x5B, 0xBA, 0x6E, 0x4, 0xE8, + 0xCB, 0x35, 0x5B, 0xC3, 0xE9, 0x66, 0xE1, 0xB0, 0x1, 0xA2, 0x39, + 0x3, 0xE8, 0x73, 0x8, 0x75, 0xF3, 0x53, 0xA2, 0x39, 0x3, 0x8A, + 0xFD, 0x8A, 0xD9, 0x49, 0x49, 0x49, 0x8B, 0xF1, 0xAC, 0x49, 0xA, + 0xC0, 0x78, 0xF8, 0x49, 0x49, 0x3, 0xDA, 0x87, 0xDA, 0x8B, 0x1E, + 0x5C, 0x3, 0x3B, 0xDA, 0x8B, 0xF2, 0xAC, 0x8B, 0xF9, 0xAA, 0x9F, + 0x42, 0x9E, 0x9F, 0x41, 0x9E, 0x75, 0xF0, 0x49, 0x8B, 0xD9, 0x89, + 0x1E, 0x5C, 0x3, 0x5B, 0x8A, 0x7, 0x3C, 0x2C, 0x75, 0xB7, 0xE8, + 0xE2, 0xDF, 0xEB, 0xB6, 0x58, 0x86, 0xC4, 0x9E, 0x5B, 0xC3, 0x8A, + 0x7, 0x3C, 0x41, 0x72, 0xF9, 0x3C, 0x5B, 0xF5, 0xC3, 0xE9, 0xEE, + 0xFD, 0x74, 0xFB, 0x3C, 0x2C, 0x74, 0x9, 0xE8, 0xFB, 0xE0, 0x4B, + 0xE8, 0xC0, 0xDF, 0x74, 0xEE, 0xE8, 0x92, 0xFE, 0x2C, 0x74, 0xE8, + 0x8B, 0x16, 0x2C, 0x0, 0x3C, 0x2C, 0x74, 0x3, 0xE8, 0x47, 0x0, + 0x4B, 0xE8, 0xA9, 0xDF, 0x52, 0x74, 0x4E, 0xE8, 0x7A, 0xFE, 0x2C, + 0x74, 0x48, 0xE8, 0x37, 0x0, 0x4B, 0xE8, 0x99, 0xDF, 0x74, 0x3, + 0xE9, 0x35, 0xD8, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0xBB, 0xEE, 0x0, + 0x3B, 0xDA, 0x73, 0x2D, 0x5B, 0xE8, 0x36, 0x0, 0x72, 0x27, 0x53, + 0x8B, 0x1E, 0x58, 0x3, 0xB9, 0x14, 0x0, 0x3, 0xD9, 0x3B, 0xDA, + 0x73, 0x19, 0x87, 0xDA, 0x89, 0x1E, 0xA, 0x3, 0x5B, 0x89, 0x1E, + 0x2C, 0x0, 0x5B, 0xEB, 0x96, 0xE8, 0xF0, 0xF2, 0xB, 0xD2, 0x75, + 0x3, 0xE9, 0x98, 0xE0, 0xC3, 0xE9, 0x2F, 0xFD, 0x8B, 0x16, 0x2C, + 0x0, 0x2B, 0x16, 0xA, 0x3, 0xEB, 0xBA, 0x8B, 0xC3, 0x2B, 0xC2, + 0x8B, 0xD0, 0xC3, 0xCD, 0xB2, 0x53, 0x8B, 0x1E, 0xE9, 0x4, 0xB, + 0xDB, 0x5B, 0xC3, 0x1, 0x30, 0x4E, 0x30, 0xE1, 0x30, 0xFD, 0x2F, + 0xF1, 0x2F, 0x5B, 0x30, 0x30, 0x30, 0x1B, 0x30, 0x8B, 0x1E, 0x56, + 0x0, 0xE8, 0x4A, 0x0, 0x74, 0x1, 0xC3, 0xEB, 0x4, 0xB0, 0x1, + 0xEB, 0x2, 0xB0, 0xFF, 0xA2, 0x70, 0x0, 0xFE, 0xC0, 0xE8, 0x65, + 0x1, 0xB7, 0x1, 0xE8, 0xB, 0x0, 0x75, 0xE8, 0xE8, 0xB, 0x1F, + 0xE8, 0x5E, 0x0, 0x32, 0xC0, 0xC3, 0xA0, 0x5C, 0x0, 0x3A, 0xC3, + 0x74, 0xF8, 0x73, 0x7, 0x8A, 0xD8, 0x32, 0xC0, 0xE9, 0xF5, 0x1E, + 0xFE, 0xC3, 0xE9, 0xF0, 0x1E, 0xA0, 0x5B, 0x0, 0x3A, 0xC3, 0x74, + 0xE3, 0xB0, 0x1, 0x3A, 0xC3, 0x74, 0xDD, 0xFE, 0xCB, 0xE9, 0xDE, + 0x1E, 0xA0, 0x29, 0x0, 0x3A, 0xC7, 0x74, 0xD1, 0xFE, 0xC7, 0xE9, + 0xD2, 0x1E, 0x8B, 0x1E, 0x5B, 0x0, 0xB7, 0x1, 0x89, 0x1E, 0x58, + 0x0, 0xE9, 0xC5, 0x1E, 0x8B, 0x1E, 0x56, 0x0, 0xE8, 0x9, 0x0, + 0x75, 0xB6, 0xA0, 0x29, 0x0, 0x8A, 0xF8, 0xEB, 0xC5, 0xB0, 0x1, + 0x3A, 0xC7, 0x74, 0xA9, 0xFE, 0xCF, 0xE9, 0xAA, 0x1E, 0xA0, 0x5B, + 0x0, 0x8A, 0xF8, 0xA0, 0x5C, 0x0, 0x8A, 0xD8, 0x2A, 0xC7, 0x72, + 0x96, 0xFE, 0xC0, 0x50, 0xE8, 0x99, 0x0, 0xA0, 0x58, 0x0, 0xFE, + 0xC3, 0x3A, 0xC3, 0xFE, 0xCB, 0x73, 0xD, 0x3A, 0xC7, 0x72, 0x9, + 0x75, 0x2, 0xB0, 0x1, 0xFE, 0xC8, 0xA2, 0x58, 0x0, 0x58, 0xFE, + 0xC8, 0x75, 0x3, 0xE9, 0x3, 0x0, 0xE8, 0xDE, 0x1E, 0xC3, 0xA0, + 0x5B, 0x0, 0x8A, 0xD8, 0xA0, 0x5C, 0x0, 0x8A, 0xF8, 0x2A, 0xC3, + 0x72, 0xF1, 0xFE, 0xC0, 0x50, 0xE8, 0x7F, 0x0, 0xA0, 0x58, 0x0, + 0x3A, 0xC3, 0x72, 0x10, 0x3A, 0xC7, 0x78, 0x3, 0xE9, 0x9, 0x0, + 0x75, 0x2, 0xB0, 0xFF, 0xFE, 0xC0, 0xA2, 0x58, 0x0, 0x58, 0xFE, + 0xC8, 0x74, 0xCF, 0xE9, 0xBB, 0x1E, 0x8B, 0x1E, 0x5B, 0x0, 0xA0, + 0x5D, 0x0, 0x8A, 0xE8, 0x8A, 0xC5, 0x3A, 0xC3, 0x73, 0x2, 0x8A, + 0xD8, 0x3A, 0xC7, 0x73, 0x2, 0x8A, 0xF8, 0x8A, 0xC7, 0xB7, 0x0, + 0x2A, 0xC3, 0xFE, 0xC0, 0xBA, 0x72, 0x0, 0x50, 0x87, 0xDA, 0x3, + 0xDA, 0x88, 0x7, 0x43, 0x88, 0x7, 0x43, 0xFE, 0xC8, 0x75, 0xF9, + 0x87, 0xDA, 0x58, 0x32, 0xC0, 0xA2, 0x58, 0x0, 0xA2, 0x59, 0x0, + 0xA2, 0x5A, 0x0, 0xE9, 0x2B, 0xFF, 0x50, 0xE8, 0x37, 0x0, 0xB5, + 0x1, 0x8A, 0xC8, 0x8A, 0xC5, 0x8B, 0xFA, 0xAA, 0x4A, 0x8B, 0xF2, + 0xAC, 0x8A, 0xE9, 0x8A, 0xC8, 0x58, 0xFE, 0xC8, 0x75, 0x1, 0xC3, + 0x50, 0xEB, 0xEA, 0x50, 0xB5, 0x1, 0xE8, 0x17, 0x0, 0x8A, 0xC8, + 0x8A, 0xC5, 0x8B, 0xFA, 0xAA, 0x42, 0x8B, 0xF2, 0xAC, 0x8A, 0xE9, + 0x8A, 0xC8, 0x58, 0xFE, 0xC8, 0x74, 0xE2, 0x50, 0xEB, 0xEB, 0x53, + 0xBA, 0x74, 0x0, 0xB7, 0x0, 0xFE, 0xCB, 0x3, 0xDA, 0x8A, 0x7, + 0x87, 0xDA, 0x5B, 0x22, 0xC0, 0xC3, 0x53, 0xBA, 0x74, 0x0, 0xB7, + 0x0, 0xFE, 0xCB, 0x3, 0xDA, 0x88, 0x7, 0x87, 0xDA, 0x5B, 0xC3, + 0xCD, 0xA6, 0xE8, 0x41, 0x1, 0x8B, 0x1E, 0x56, 0x0, 0x89, 0x1E, + 0x58, 0x0, 0xA0, 0x29, 0x0, 0xFE, 0xC0, 0xEB, 0x1E, 0xB0, 0x3F, + 0xE8, 0xC, 0xFA, 0xB0, 0x20, 0xE8, 0x7, 0xFA, 0x32, 0xC0, 0xA2, + 0x27, 0x0, 0xCD, 0xA7, 0xE8, 0x1E, 0x1, 0x8B, 0x1E, 0x56, 0x0, + 0x89, 0x1E, 0x58, 0x0, 0x8A, 0xC7, 0xA2, 0x5A, 0x0, 0xE8, 0xE1, + 0x4, 0xFE, 0xCB, 0x74, 0x5, 0xB0, 0x1, 0xE8, 0xAF, 0xFF, 0xE8, + 0xC, 0x23, 0xE8, 0x41, 0x23, 0xE8, 0xA4, 0x1B, 0xE8, 0x8, 0x23, + 0xE8, 0x38, 0x23, 0xA, 0xC0, 0x75, 0x3, 0xE8, 0x77, 0x1C, 0x50, + 0x8B, 0x1E, 0x56, 0x0, 0x8A, 0x26, 0x29, 0x0, 0xFE, 0xC4, 0x3A, + 0x1E, 0x58, 0x0, 0x75, 0x12, 0x3A, 0x3E, 0x59, 0x0, 0x73, 0x4, + 0x88, 0x3E, 0x59, 0x0, 0x3A, 0x3E, 0x5A, 0x0, 0x76, 0x6, 0x8A, + 0xE7, 0x88, 0x26, 0x5A, 0x0, 0x58, 0xE8, 0x2F, 0x0, 0x72, 0x10, + 0x74, 0xBB, 0xE8, 0x3, 0x2, 0xE8, 0x99, 0xF9, 0xEB, 0xB3, 0x1, + 0xE8, 0x93, 0xF9, 0xEB, 0xAD, 0x3C, 0x3, 0xF9, 0x74, 0x1, 0xF5, + 0xBB, 0xF6, 0x1, 0xC3, 0x3C, 0x3B, 0x75, 0xFB, 0xE9, 0xF8, 0xDC, + 0x4B, 0x43, 0xFE, 0xC9, 0x78, 0xF2, 0x2E, 0x3A, 0x7, 0x75, 0xF6, + 0xC3, 0xBB, 0x94, 0x32, 0xB1, 0xE, 0xE8, 0xEC, 0xFF, 0x79, 0x3, + 0xE9, 0x7, 0x0, 0x50, 0x32, 0xC0, 0xA2, 0x72, 0x0, 0x58, 0xBB, + 0xA2, 0x32, 0xB1, 0xC, 0xE8, 0xD8, 0xFF, 0x79, 0x3, 0xE9, 0x20, + 0x0, 0x50, 0x8A, 0xC1, 0xA, 0xC0, 0xD0, 0xC0, 0x8A, 0xC8, 0x32, + 0xC0, 0x8A, 0xE8, 0xBB, 0xAE, 0x32, 0x3, 0xD9, 0x2E, 0x8A, 0x17, + 0x43, 0x2E, 0x8A, 0x37, 0x58, 0x52, 0x8B, 0x1E, 0x56, 0x0, 0xC3, + 0xA, 0xC0, 0xC3, 0x3, 0x22, 0xC0, 0xC3, 0x8B, 0x1E, 0x56, 0x0, + 0x80, 0xFF, 0x1, 0x75, 0xB, 0xFE, 0xCB, 0xE8, 0xD7, 0xFE, 0x75, + 0x7, 0x8A, 0x3E, 0x29, 0x0, 0xE8, 0x90, 0x1C, 0xE9, 0xDE, 0xF9, + 0xC3, 0xD, 0x2, 0x6, 0x5, 0x3, 0xB, 0xC, 0x1C, 0x1D, 0x1E, + 0x1F, 0xE, 0x7F, 0x1B, 0x9, 0xA, 0x8, 0x12, 0x2, 0x6, 0x5, + 0x3, 0xD, 0xE, 0x7F, 0x1B, 0xFF, 0x34, 0x56, 0x34, 0xCA, 0x34, + 0x39, 0x33, 0xAF, 0x33, 0x7, 0x35, 0x25, 0x35, 0x4D, 0x35, 0x1, + 0x34, 0x77, 0x34, 0xF3, 0x32, 0xC1, 0x33, 0xE8, 0xD, 0xFD, 0x74, + 0xC8, 0x58, 0xB5, 0xFE, 0xBB, 0xF7, 0x1, 0xE8, 0x41, 0xF9, 0x88, + 0x7, 0x3C, 0xD, 0x74, 0x11, 0x3C, 0xA, 0x75, 0x6, 0x8A, 0xC5, + 0x3C, 0xFE, 0x74, 0xED, 0x43, 0xFE, 0xCD, 0x75, 0xE8, 0xFE, 0xCD, + 0x32, 0xC0, 0x88, 0x7, 0xBB, 0xF6, 0x1, 0xC3, 0xA0, 0x72, 0x0, + 0xA, 0xC0, 0x74, 0x3A, 0xE8, 0x61, 0xFE, 0x50, 0x87, 0xDA, 0xC6, + 0x7, 0x0, 0x87, 0xDA, 0xFE, 0xC3, 0xE8, 0x29, 0x3, 0xA0, 0x29, + 0x0, 0x2A, 0xC7, 0x74, 0xB, 0xFE, 0xC0, 0x50, 0xE8, 0xF5, 0x0, + 0x58, 0xFE, 0xC8, 0x75, 0xF7, 0x8B, 0x1E, 0x56, 0x0, 0xE8, 0x3B, + 0xFE, 0x58, 0x8A, 0xC8, 0x32, 0xC0, 0x8B, 0xFA, 0xAA, 0x42, 0x8A, + 0xC1, 0x8B, 0xFA, 0xAA, 0x32, 0xC0, 0xC3, 0xB0, 0xA, 0xA, 0xC0, + 0xC3, 0xE8, 0x5A, 0x2, 0xBA, 0xF7, 0x1, 0xB5, 0xFE, 0xA0, 0x58, + 0x0, 0x3A, 0xC3, 0xB7, 0x1, 0xA0, 0x29, 0x0, 0x75, 0x13, 0x8B, + 0x1E, 0x58, 0x0, 0x52, 0xE8, 0x9, 0xFE, 0x5A, 0xA0, 0x29, 0x0, + 0x74, 0x5, 0xA0, 0x5A, 0x0, 0xFE, 0xC8, 0xA2, 0x5A, 0x0, 0xE8, + 0x3C, 0x2, 0x8A, 0xC5, 0x22, 0xC0, 0x74, 0x10, 0x52, 0xE8, 0xEE, + 0xFD, 0x5A, 0x75, 0x9, 0xB7, 0x1, 0xFE, 0xC3, 0xA0, 0x29, 0x0, + 0xEB, 0xE4, 0x87, 0xDA, 0xB0, 0xFE, 0x2A, 0xC6, 0x8A, 0xF0, 0x4B, + 0x8A, 0x7, 0x3C, 0x20, 0x74, 0x8, 0xA, 0xC0, 0x75, 0x7, 0xFE, + 0xCE, 0x74, 0x3, 0x4B, 0xEB, 0xEF, 0x43, 0xC6, 0x7, 0x0, 0x87, + 0xDA, 0xB0, 0xD, 0x50, 0xB7, 0x1, 0xE8, 0x7C, 0x1B, 0xB0, 0xD, + 0xE8, 0xFC, 0xF7, 0xBB, 0xF6, 0x1, 0x58, 0xF9, 0xC3, 0x32, 0xC0, + 0xA2, 0xF7, 0x1, 0xE8, 0xA7, 0xFD, 0x75, 0x4, 0xFE, 0xC3, 0xEB, + 0xF7, 0xB0, 0x3, 0xEB, 0xDD, 0x8A, 0xC7, 0xFE, 0xC8, 0x24, 0xF8, + 0x4, 0x8, 0xFE, 0xC0, 0x8A, 0xE8, 0xA0, 0x29, 0x0, 0x3A, 0xC5, + 0x73, 0x2, 0x8A, 0xE8, 0x8A, 0xC5, 0xA0, 0x72, 0x0, 0xA, 0xC0, + 0x8A, 0xC5, 0x75, 0xC, 0x3A, 0xC7, 0x74, 0x5, 0x8A, 0xF8, 0xE8, + 0x36, 0x1B, 0x32, 0xC0, 0xC3, 0x2A, 0xC7, 0x74, 0xFB, 0x50, 0xA0, + 0x50, 0x0, 0xE8, 0x14, 0x0, 0xE8, 0xAA, 0xF7, 0x58, 0xFE, 0xC8, + 0x75, 0xF1, 0xC3, 0xA0, 0x72, 0x0, 0xF6, 0xD0, 0xA2, 0x72, 0x0, + 0x32, 0xC0, 0xC3, 0x53, 0x8B, 0x1E, 0x56, 0x0, 0x50, 0xA0, 0x72, + 0x0, 0xA, 0xC0, 0x74, 0x3, 0xE8, 0x3, 0x0, 0x58, 0x5B, 0xC3, + 0xA0, 0x58, 0x0, 0x3A, 0xC3, 0x75, 0x10, 0x53, 0xBB, 0x5A, 0x0, + 0xFE, 0x7, 0xA0, 0x29, 0x0, 0x3A, 0x7, 0x73, 0x2, 0x88, 0x7, + 0x5B, 0xA0, 0x50, 0x0, 0x8A, 0xC8, 0xE8, 0x8F, 0x1, 0x72, 0x10, + 0x74, 0xDC, 0x50, 0x32, 0xC0, 0xE8, 0x28, 0xFD, 0xFE, 0xC3, 0xE8, + 0xE6, 0x1, 0x58, 0xFE, 0xCB, 0xFE, 0xC3, 0xB7, 0x1, 0xEB, 0xE3, + 0x53, 0xA0, 0x29, 0x0, 0x3A, 0xC7, 0x75, 0xB, 0xB7, 0x0, 0xA0, + 0x5D, 0x0, 0x3A, 0xC3, 0x75, 0x0, 0xFE, 0xC3, 0xFE, 0xC7, 0xE8, + 0x9, 0x0, 0x5B, 0x53, 0xE8, 0xAD, 0x1A, 0x32, 0xC0, 0x5B, 0xC3, + 0xB0, 0x1, 0x3A, 0xC7, 0x74, 0x4, 0xFE, 0xCF, 0xEB, 0x14, 0x53, + 0xFE, 0xCB, 0x74, 0xE, 0xA0, 0x29, 0x0, 0x8A, 0xF8, 0xE8, 0xD0, + 0xFC, 0x75, 0x4, 0x5E, 0x87, 0xDE, 0x56, 0x5B, 0xE8, 0x88, 0x1A, + 0xA0, 0x58, 0x0, 0x3A, 0xC3, 0x75, 0xA, 0xA0, 0x5A, 0x0, 0xFE, + 0xC8, 0x74, 0x3, 0xA2, 0x5A, 0x0, 0xE8, 0x42, 0x1, 0x53, 0xE8, + 0xAE, 0xFC, 0x75, 0x11, 0xFE, 0xC3, 0xB7, 0x1, 0xE8, 0x5, 0x2, + 0x5E, 0x87, 0xDE, 0x56, 0xE8, 0xFB, 0x1, 0x5B, 0xEB, 0xE6, 0x5B, + 0xE8, 0x55, 0x1A, 0x32, 0xC0, 0xC3, 0xE8, 0x91, 0xFC, 0x75, 0xB, + 0xA0, 0x5B, 0x0, 0x3A, 0xC3, 0x74, 0x4, 0xFE, 0xC3, 0xEB, 0xF0, + 0xA0, 0x29, 0x0, 0x8A, 0xF8, 0xA0, 0x50, 0x0, 0x8A, 0xC8, 0x51, + 0xE8, 0x22, 0x1A, 0x59, 0xA, 0xC0, 0x74, 0xC, 0x3A, 0xC1, 0x74, + 0x8, 0xFE, 0xC7, 0xE8, 0x2A, 0x1A, 0x32, 0xC0, 0xC3, 0xFE, 0xCF, + 0x74, 0xF4, 0xEB, 0xE5, 0xE8, 0x94, 0x0, 0xB7, 0x1, 0xE8, 0x19, + 0x1A, 0x53, 0xA0, 0x50, 0x0, 0xE8, 0xAD, 0x1, 0x5B, 0xFE, 0xC7, + 0xA0, 0x29, 0x0, 0xFE, 0xC0, 0x3A, 0xC7, 0x75, 0xED, 0xE8, 0x41, + 0xFC, 0x75, 0xA5, 0xB7, 0x1, 0xFE, 0xC3, 0xEB, 0xE2, 0xC6, 0x6, + 0x70, 0x0, 0x0, 0xEB, 0x8, 0xE8, 0xE5, 0x19, 0xE8, 0x4A, 0x1, + 0x72, 0xF, 0xE8, 0x40, 0x0, 0x74, 0x13, 0xEB, 0xF1, 0xE8, 0xD6, + 0x19, 0xE8, 0x3B, 0x1, 0x73, 0x7, 0xE8, 0x31, 0x0, 0x74, 0x4, + 0xEB, 0xF1, 0x32, 0xC0, 0xC3, 0x32, 0xC0, 0xA2, 0x70, 0x0, 0xEB, + 0x8, 0xE8, 0xBD, 0x19, 0xE8, 0x22, 0x1, 0x73, 0xF, 0xE8, 0x26, + 0x0, 0x74, 0xEB, 0xEB, 0xF1, 0xE8, 0xAE, 0x19, 0xE8, 0x13, 0x1, + 0x72, 0x7, 0xE8, 0x17, 0x0, 0x74, 0xDC, 0xEB, 0xF1, 0xE8, 0x2, + 0x0, 0xEB, 0xD3, 0x8B, 0x1E, 0x56, 0x0, 0xE8, 0xC4, 0xFA, 0x75, + 0xCC, 0xB7, 0x1, 0xE9, 0x96, 0xFA, 0x8B, 0x1E, 0x56, 0x0, 0xE8, + 0xDF, 0xFA, 0x75, 0xBE, 0xA0, 0x29, 0x0, 0x8A, 0xF8, 0xE9, 0x9A, + 0xFA, 0xFE, 0xCB, 0x74, 0x5, 0xE8, 0xC1, 0xFB, 0x74, 0xF7, 0xFE, + 0xC3, 0xC3, 0x51, 0xA0, 0x5A, 0x0, 0x3A, 0xC7, 0x72, 0x1A, 0xE8, + 0x67, 0x19, 0xE8, 0x16, 0x0, 0x8B, 0xFA, 0xAA, 0x42, 0x5E, 0x87, + 0xDE, 0x56, 0xFE, 0xCF, 0x5E, 0x87, 0xDE, 0x56, 0x74, 0x4, 0xFE, + 0xC7, 0xEB, 0xDF, 0x59, 0xC3, 0xA, 0xC0, 0x75, 0x2, 0xB0, 0x20, + 0xC3, 0xE8, 0x45, 0x0, 0x50, 0xE8, 0x8A, 0xFB, 0x74, 0x15, 0x58, + 0x22, 0xC0, 0x74, 0xF1, 0x3C, 0x20, 0x74, 0xED, 0xA0, 0x50, 0x0, + 0x3A, 0xC1, 0x74, 0xE6, 0x8A, 0xC1, 0x22, 0xC0, 0xC3, 0x58, 0xF9, + 0xC3, 0xA0, 0x29, 0x0, 0x3A, 0xC7, 0x74, 0x19, 0xFE, 0xC7, 0xE8, + 0xC4, 0x0, 0x53, 0xFE, 0xCF, 0xE8, 0xBB, 0x0, 0x5B, 0xFE, 0xC7, + 0xA0, 0x29, 0x0, 0xFE, 0xC0, 0x3A, 0xC7, 0x75, 0xEB, 0xFE, 0xCF, + 0xA0, 0x50, 0x0, 0xE8, 0xA7, 0x0, 0xC3, 0x53, 0x51, 0xE8, 0xA4, + 0x0, 0x59, 0x50, 0x8A, 0xC1, 0xE8, 0x9A, 0x0, 0x58, 0x8A, 0xC8, + 0xA0, 0x29, 0x0, 0xFE, 0xC0, 0xFE, 0xC7, 0x3A, 0xC7, 0x75, 0xE7, + 0x8A, 0xC1, 0x5B, 0xC3, 0x53, 0xA0, 0x5C, 0x0, 0x2A, 0xC3, 0x72, + 0x2F, 0x74, 0x22, 0x8B, 0x1E, 0x5B, 0x0, 0x5E, 0x87, 0xDE, 0x56, + 0x53, 0x8A, 0xC3, 0xA2, 0x5B, 0x0, 0xA0, 0x5D, 0x0, 0xA2, 0x5C, + 0x0, 0xE8, 0x5A, 0xFA, 0x5B, 0x5E, 0x87, 0xDE, 0x56, 0x89, 0x1E, + 0x5B, 0x0, 0x5B, 0x53, 0xB7, 0x1, 0xE8, 0xF9, 0x18, 0x5B, 0xB0, + 0x1, 0xE9, 0x6, 0xFB, 0x8B, 0x1E, 0x56, 0x0, 0xFE, 0xCB, 0x74, + 0x3, 0xE8, 0xAB, 0x18, 0xE8, 0xFE, 0xF9, 0x5B, 0xFE, 0xCB, 0xC3, + 0x3C, 0x30, 0x72, 0xFB, 0x3C, 0x3A, 0x72, 0x12, 0x3C, 0x41, 0x72, + 0xF3, 0x3C, 0x5B, 0x72, 0xA, 0x3C, 0x61, 0x72, 0xEB, 0x3C, 0x7B, + 0x72, 0x2, 0xF9, 0xC3, 0x22, 0xC0, 0xC3, 0x53, 0xB7, 0x1, 0xA0, + 0x29, 0x0, 0x8A, 0xE8, 0x51, 0xE8, 0x65, 0x18, 0x59, 0x3C, 0xFF, + 0x74, 0x8, 0xFE, 0xC7, 0xFE, 0xCD, 0x75, 0xF1, 0x5B, 0xC3, 0x5B, + 0x53, 0xB7, 0x1, 0xE8, 0xA4, 0x18, 0x5B, 0xC3, 0xE9, 0x43, 0x18, + 0xE9, 0x49, 0x18, 0xA2, 0x28, 0x0, 0x8B, 0x1E, 0x47, 0x3, 0xA, + 0xC7, 0x22, 0xC3, 0xFE, 0xC0, 0x87, 0xDA, 0x74, 0xE8, 0xEB, 0x13, + 0xBB, 0xF6, 0x1, 0x74, 0xE1, 0xF9, 0x9C, 0x43, 0xE9, 0x75, 0xD2, + 0xE8, 0x7C, 0xD9, 0x74, 0x3, 0xE9, 0x72, 0xD9, 0x5B, 0x89, 0x16, + 0x49, 0x3, 0xE8, 0x78, 0xD3, 0x72, 0x3, 0xE9, 0x3C, 0xDA, 0x8B, + 0xD9, 0x43, 0x43, 0x8B, 0x17, 0x43, 0x43, 0x53, 0x87, 0xDA, 0xE8, + 0x4E, 0x2E, 0x5B, 0x8A, 0x7, 0x3C, 0x9, 0x74, 0x5, 0xB0, 0x20, + 0xE8, 0x97, 0xF4, 0xE8, 0xBC, 0xE8, 0xBB, 0xF7, 0x1, 0xE8, 0xA9, + 0xE8, 0xE8, 0x5F, 0xFB, 0x8B, 0x1E, 0x56, 0x0, 0xFE, 0xCB, 0x74, + 0x9, 0xFE, 0xCB, 0x74, 0x5, 0xE8, 0x35, 0xFA, 0x74, 0xF7, 0xFE, + 0xC3, 0xE8, 0xF0, 0x17, 0xE9, 0xA0, 0xD1, 0x3C, 0xA, 0x74, 0x3, + 0xE9, 0x6B, 0xF4, 0x53, 0x8B, 0x1E, 0xE9, 0x4, 0x8A, 0xC7, 0xA, + 0xC3, 0x5B, 0xB0, 0xA, 0x75, 0x8, 0x50, 0xB0, 0xD, 0xE8, 0x57, + 0xF4, 0x58, 0xC3, 0xE8, 0x52, 0xF4, 0xB0, 0xD, 0xE8, 0x4D, 0xF4, + 0xB0, 0xA, 0xC3, 0x4B, 0xE8, 0xBE, 0xD7, 0x75, 0x1, 0xC3, 0xE8, + 0x8F, 0xF6, 0x2C, 0xB9, 0x5B, 0x37, 0x51, 0xB0, 0xC8, 0xEB, 0x2, + 0x32, 0xC0, 0xA2, 0xFA, 0x2, 0x8A, 0xF, 0xCD, 0xB3, 0xE8, 0xC9, + 0xF7, 0x73, 0x3, 0xE9, 0x3F, 0xD0, 0x32, 0xC0, 0x8A, 0xE8, 0xA2, + 0x8E, 0x0, 0x43, 0x8A, 0x7, 0x3C, 0x2E, 0x72, 0x42, 0x74, 0xD, + 0x3C, 0x3A, 0x73, 0x4, 0x3C, 0x30, 0x73, 0x5, 0xE8, 0xAB, 0xF7, + 0x72, 0x33, 0x8A, 0xE8, 0x51, 0xB5, 0xFF, 0xBA, 0x8E, 0x0, 0xC, + 0x80, 0xFE, 0xC5, 0x8B, 0xFA, 0xAA, 0x42, 0x43, 0x8A, 0x7, 0x3C, + 0x3A, 0x73, 0x4, 0x3C, 0x30, 0x73, 0xED, 0xE8, 0x8B, 0xF7, 0x73, + 0xE8, 0x3C, 0x2E, 0x74, 0xE4, 0x8A, 0xC5, 0x3C, 0x27, 0x72, 0x3, + 0xE9, 0xF5, 0xCF, 0x59, 0xA2, 0x8E, 0x0, 0x8A, 0x7, 0x3C, 0x26, + 0x73, 0x1E, 0xBA, 0x3, 0x38, 0x52, 0xB6, 0x2, 0x3C, 0x25, 0x74, + 0x84, 0xFE, 0xC6, 0x3C, 0x24, 0x75, 0x1, 0xC3, 0xFE, 0xC6, 0x3C, + 0x21, 0x74, 0xF9, 0xB6, 0x8, 0x3C, 0x23, 0x74, 0xF3, 0x58, 0x8A, + 0xC1, 0x24, 0x7F, 0x8A, 0xD0, 0xB6, 0x0, 0x53, 0xBB, 0x1F, 0x3, + 0x3, 0xDA, 0x8A, 0x37, 0x5B, 0x4B, 0x8A, 0xC6, 0xA2, 0xFB, 0x2, + 0xE8, 0x12, 0xD7, 0xA0, 0x39, 0x3, 0xFE, 0xC8, 0x75, 0x3, 0xE9, + 0x7A, 0x1, 0x78, 0x3, 0xE9, 0x10, 0x0, 0x8A, 0x7, 0x2C, 0x28, + 0x75, 0x3, 0xE9, 0xCD, 0x0, 0x2C, 0x33, 0x75, 0x3, 0xE9, 0xC6, + 0x0, 0x32, 0xC0, 0xA2, 0x39, 0x3, 0x53, 0xA0, 0x4D, 0x4, 0xA, + 0xC0, 0xA2, 0x4A, 0x4, 0x74, 0x1E, 0x8B, 0x1E, 0x7C, 0x3, 0xBA, + 0x7E, 0x3, 0x3, 0xDA, 0x89, 0x1E, 0x4B, 0x4, 0x87, 0xDA, 0xE9, + 0xF7, 0x2D, 0xA0, 0x4A, 0x4, 0xA, 0xC0, 0x74, 0x24, 0x32, 0xC0, + 0xA2, 0x4A, 0x4, 0x8B, 0x1E, 0x5A, 0x3, 0x89, 0x1E, 0x4B, 0x4, + 0x8B, 0x1E, 0x58, 0x3, 0xE9, 0xDC, 0x2D, 0xE8, 0x4, 0xFF, 0xC3, + 0x32, 0xC0, 0x8A, 0xF0, 0x8A, 0xD0, 0x59, 0x5E, 0x87, 0xDE, 0x56, + 0xC3, 0x5B, 0x5E, 0x87, 0xDE, 0x56, 0x52, 0xBA, 0x6A, 0x38, 0x3B, + 0xDA, 0x74, 0xE7, 0xBA, 0xDA, 0x19, 0x3B, 0xDA, 0x5A, 0x74, 0x49, + 0x5E, 0x87, 0xDE, 0x56, 0x53, 0x51, 0xA0, 0xFB, 0x2, 0x8A, 0xE8, + 0xA0, 0x8E, 0x0, 0x2, 0xC5, 0xFE, 0xC0, 0x8A, 0xC8, 0x51, 0xB5, + 0x0, 0x41, 0x41, 0x41, 0x8B, 0x1E, 0x5C, 0x3, 0x53, 0x3, 0xD9, + 0x59, 0x53, 0xE8, 0x19, 0x2C, 0x5B, 0x89, 0x1E, 0x5C, 0x3, 0x8B, + 0xD9, 0x89, 0x1E, 0x5A, 0x3, 0x4B, 0xC6, 0x7, 0x0, 0x3B, 0xDA, + 0x75, 0xF8, 0x5A, 0x88, 0x37, 0x43, 0x5A, 0x89, 0x17, 0x43, 0xE8, + 0xDD, 0x1, 0x87, 0xDA, 0x42, 0x5B, 0xC3, 0xE8, 0x86, 0x42, 0xEB, + 0x8, 0xC6, 0x6, 0x4F, 0x3, 0x0, 0xE9, 0x78, 0xA, 0xE8, 0x40, + 0xE2, 0x75, 0x7, 0xBB, 0x6, 0x0, 0x89, 0x1E, 0xA3, 0x4, 0x5B, + 0xC3, 0x53, 0x8B, 0x1E, 0xFA, 0x2, 0x5E, 0x87, 0xDE, 0x56, 0x8A, + 0xF0, 0x52, 0x51, 0xBA, 0x8E, 0x0, 0x8B, 0xF2, 0xAC, 0xA, 0xC0, + 0x74, 0x3D, 0x87, 0xDA, 0x4, 0x2, 0xD0, 0xD8, 0x8A, 0xC8, 0xE8, + 0xC3, 0xF3, 0x8A, 0xC1, 0x8A, 0xF, 0x43, 0x8A, 0x2F, 0x43, 0x51, + 0xFE, 0xC8, 0x75, 0xF5, 0x53, 0xA0, 0x8E, 0x0, 0x50, 0x87, 0xDA, + 0xE8, 0x28, 0xD7, 0x58, 0x89, 0x1E, 0xB5, 0x0, 0x5B, 0x4, 0x2, + 0xD0, 0xD8, 0x59, 0x4B, 0x88, 0x2F, 0x4B, 0x88, 0xF, 0xFE, 0xC8, + 0x75, 0xF5, 0x8B, 0x1E, 0xB5, 0x0, 0xEB, 0x8, 0xE8, 0xA, 0xD7, + 0x32, 0xC0, 0xA2, 0x8E, 0x0, 0xA0, 0x5C, 0x4, 0xA, 0xC0, 0x74, + 0x8, 0xB, 0xD2, 0x75, 0x3, 0xE9, 0x5F, 0x0, 0x4A, 0x59, 0x58, + 0x86, 0xC4, 0x9E, 0x87, 0xDA, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0x87, + 0xDA, 0xFE, 0xC0, 0x8A, 0xF0, 0x8A, 0x7, 0x3C, 0x2C, 0x74, 0x88, + 0x3C, 0x29, 0x74, 0x7, 0x3C, 0x5D, 0x74, 0x3, 0xE9, 0x40, 0xCE, + 0xE8, 0x9C, 0xD5, 0x89, 0x1E, 0x52, 0x3, 0x5B, 0x89, 0x1E, 0xFA, + 0x2, 0xB2, 0x0, 0x52, 0xEB, 0x7, 0x53, 0x9F, 0x86, 0xC4, 0x50, + 0x86, 0xC4, 0x8B, 0x1E, 0x5A, 0x3, 0xE9, 0xAF, 0x2C, 0xA0, 0xFA, + 0x2, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0x20, 0xCE, 0x58, 0x86, 0xC4, + 0x9E, 0x8B, 0xCB, 0x75, 0x3, 0xE9, 0x55, 0x2B, 0x2A, 0x7, 0x75, + 0x3, 0xE9, 0x98, 0x0, 0xBA, 0x9, 0x0, 0xE9, 0x19, 0xCE, 0xA0, + 0xFB, 0x2, 0x88, 0x7, 0x43, 0x8A, 0xD0, 0xB6, 0x0, 0x58, 0x86, + 0xC4, 0x9E, 0x75, 0x3, 0xE9, 0xCA, 0x0, 0x88, 0xF, 0x43, 0x88, + 0x2F, 0xE8, 0xD3, 0x0, 0x43, 0x8A, 0xC8, 0xE8, 0xF5, 0xF2, 0x43, + 0x43, 0x89, 0x1E, 0x31, 0x3, 0x88, 0xF, 0x43, 0xA0, 0xFA, 0x2, + 0xD0, 0xD0, 0x8A, 0xC1, 0x72, 0xF, 0x9F, 0x50, 0xA0, 0x5C, 0x4, + 0x34, 0xB, 0x8A, 0xC8, 0xB5, 0x0, 0x58, 0x9E, 0x73, 0x4, 0x59, + 0x9F, 0x41, 0x9E, 0x88, 0xF, 0x9F, 0x50, 0x43, 0x88, 0x2F, 0x43, + 0xE8, 0x7A, 0x2A, 0x58, 0x9E, 0xFE, 0xC8, 0x75, 0xDA, 0x9F, 0x50, + 0x8A, 0xEE, 0x8A, 0xCA, 0x87, 0xDA, 0x3, 0xDA, 0x73, 0x3, 0xE9, + 0xCF, 0xF2, 0xE8, 0xDC, 0xF2, 0x89, 0x1E, 0x5C, 0x3, 0x4B, 0xC6, + 0x7, 0x0, 0x3B, 0xDA, 0x75, 0xF8, 0x32, 0xC0, 0x41, 0x8A, 0xF0, + 0x8B, 0x1E, 0x31, 0x3, 0x8A, 0x17, 0x87, 0xDA, 0x3, 0xDB, 0x3, + 0xD9, 0x87, 0xDA, 0x4B, 0x4B, 0x89, 0x17, 0x43, 0x43, 0x58, 0x9E, + 0x72, 0x46, 0x8A, 0xE8, 0x8A, 0xC8, 0x8A, 0x7, 0x43, 0xB6, 0x5B, + 0x8B, 0x17, 0x43, 0x43, 0x5E, 0x87, 0xDE, 0x56, 0x50, 0x3B, 0xDA, + 0x72, 0x3, 0xE9, 0x4F, 0xFF, 0xE8, 0x1D, 0x2A, 0x3, 0xDA, 0x58, + 0xFE, 0xC8, 0x8B, 0xCB, 0x75, 0xE3, 0xA0, 0xFB, 0x2, 0x8B, 0xCB, + 0x3, 0xDB, 0x2C, 0x4, 0x72, 0x8, 0x3, 0xDB, 0xA, 0xC0, 0x74, + 0xB, 0x3, 0xDB, 0xA, 0xC0, 0x7A, 0x3, 0xE9, 0x2, 0x0, 0x3, + 0xD9, 0x59, 0x3, 0xD9, 0x87, 0xDA, 0x8B, 0x1E, 0x52, 0x3, 0xC3, + 0xF9, 0x1A, 0xC0, 0x5B, 0xC3, 0x8A, 0x7, 0x43, 0x51, 0xB5, 0x0, + 0x8A, 0xC8, 0x3, 0xD9, 0x59, 0xC3, 0x51, 0x52, 0x9F, 0x50, 0xBA, + 0x8E, 0x0, 0x8B, 0xF2, 0xAC, 0x8A, 0xE8, 0xFE, 0xC5, 0x8B, 0xF2, + 0xAC, 0x42, 0x43, 0x88, 0x7, 0xFE, 0xCD, 0x75, 0xF5, 0x58, 0x9E, + 0x5A, 0x59, 0xC3, 0xE8, 0x5A, 0xDC, 0xE8, 0x6A, 0x29, 0xE8, 0x20, + 0xF3, 0x3B, 0x87, 0xDA, 0x8B, 0x1E, 0xA3, 0x4, 0xEB, 0xA, 0xA0, + 0x3A, 0x3, 0xA, 0xC0, 0x74, 0x11, 0x5A, 0x87, 0xDA, 0x53, 0x32, + 0xC0, 0xA2, 0x3A, 0x3, 0xFE, 0xC0, 0x9C, 0x52, 0x8A, 0x2F, 0xA, + 0xED, 0x75, 0x3, 0xE9, 0x5F, 0xD5, 0x43, 0x8B, 0x1F, 0xEB, 0x24, + 0x8A, 0xD5, 0x53, 0xB1, 0x2, 0x8A, 0x7, 0x43, 0x3C, 0x5C, 0x75, + 0x3, 0xE9, 0x9D, 0x1, 0x3C, 0x20, 0x75, 0x6, 0xFE, 0xC1, 0xFE, + 0xCD, 0x75, 0xEC, 0x5B, 0x8A, 0xEA, 0xB0, 0x5C, 0xE8, 0xD6, 0x1, + 0xE8, 0x82, 0xF0, 0x32, 0xC0, 0x8A, 0xD0, 0x8A, 0xF0, 0xE8, 0xCA, + 0x1, 0x8A, 0xF0, 0x8A, 0x7, 0x43, 0x3C, 0x21, 0x75, 0x3, 0xE9, + 0x6F, 0x1, 0x3C, 0x23, 0x74, 0x52, 0x3C, 0x26, 0x75, 0x3, 0xE9, + 0x60, 0x1, 0xFE, 0xCD, 0x75, 0x3, 0xE9, 0x2E, 0x1, 0x3C, 0x2B, + 0xB0, 0x8, 0x74, 0xD9, 0x4B, 0x8A, 0x7, 0x43, 0x3C, 0x2E, 0x74, + 0x55, 0x3C, 0x5F, 0x75, 0x3, 0xE9, 0x37, 0x1, 0x3C, 0x5C, 0x74, + 0x9C, 0x3A, 0x7, 0x75, 0xB6, 0x3C, 0x24, 0x74, 0x18, 0x3C, 0x2A, + 0x75, 0xAE, 0x8A, 0xC5, 0x43, 0x3C, 0x2, 0x72, 0x4, 0x8A, 0x7, + 0x3C, 0x24, 0xB0, 0x20, 0x75, 0xA, 0xFE, 0xCD, 0xFE, 0xC2, 0xBE, + 0x32, 0xC0, 0x4, 0x10, 0x43, 0xFE, 0xC2, 0x2, 0xC6, 0x8A, 0xF0, + 0xFE, 0xC2, 0xB1, 0x0, 0xFE, 0xCD, 0x74, 0x61, 0x8A, 0x7, 0x43, + 0x3C, 0x2E, 0x74, 0x1E, 0x3C, 0x23, 0x74, 0xED, 0x3C, 0x2C, 0x75, + 0x23, 0x8A, 0xC6, 0xC, 0x40, 0x8A, 0xF0, 0xEB, 0xE1, 0x8A, 0x7, + 0x3C, 0x23, 0xB0, 0x2E, 0x74, 0x3, 0xE9, 0x65, 0xFF, 0xB1, 0x1, + 0x43, 0xFE, 0xC1, 0xFE, 0xCD, 0x74, 0x36, 0x8A, 0x7, 0x43, 0x3C, + 0x23, 0x74, 0xF3, 0x52, 0xBA, 0xF4, 0x3B, 0x52, 0x8A, 0xF7, 0x8A, + 0xD3, 0x3C, 0x5E, 0x74, 0x1, 0xC3, 0x3A, 0x7, 0x75, 0xFB, 0x43, + 0x3A, 0x7, 0x75, 0xF6, 0x43, 0x3A, 0x7, 0x75, 0xF1, 0x43, 0x8A, + 0xC5, 0x2C, 0x4, 0x72, 0xEA, 0x5A, 0x5A, 0x8A, 0xE8, 0xFE, 0xC6, + 0x43, 0xEB, 0x3, 0x87, 0xDA, 0x5A, 0x8A, 0xC6, 0x4B, 0xFE, 0xC2, + 0x24, 0x8, 0x75, 0x1C, 0xFE, 0xCA, 0x8A, 0xC5, 0xA, 0xC0, 0x74, + 0x14, 0x8A, 0x7, 0x2C, 0x2D, 0x74, 0x6, 0x3C, 0xFE, 0x75, 0xA, + 0xB0, 0x8, 0x4, 0x4, 0x2, 0xC6, 0x8A, 0xF0, 0xFE, 0xCD, 0x5B, + 0x9D, 0x74, 0x65, 0x51, 0x52, 0xE8, 0x2, 0xDB, 0x5A, 0x59, 0x51, + 0x53, 0x8A, 0xEA, 0x8A, 0xC5, 0x2, 0xC1, 0x3C, 0x19, 0x72, 0x3, + 0xE9, 0x23, 0xD4, 0x8A, 0xC6, 0xC, 0x80, 0xE8, 0x5C, 0x3B, 0xE8, + 0x77, 0xEA, 0x5B, 0x4B, 0xE8, 0xD8, 0xD2, 0xF9, 0x74, 0x11, 0xA2, + 0x3A, 0x3, 0x3C, 0x3B, 0x74, 0x7, 0x3C, 0x2C, 0x74, 0x3, 0xE9, + 0x68, 0xCB, 0xE8, 0xC4, 0xD2, 0x59, 0x87, 0xDA, 0x5B, 0x53, 0x9C, + 0x52, 0x8A, 0x7, 0x2A, 0xC5, 0x43, 0xB6, 0x0, 0x8A, 0xD0, 0x8B, + 0x1F, 0x3, 0xDA, 0x8A, 0xC5, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0xAD, + 0xFE, 0xEB, 0x6, 0xE8, 0x7B, 0x0, 0xE8, 0x27, 0xEF, 0x5B, 0x9D, + 0x74, 0x3, 0xE9, 0x58, 0xFE, 0x73, 0x3, 0xE8, 0xE7, 0xEF, 0x5E, + 0x87, 0xDE, 0x56, 0xE8, 0x1C, 0xEC, 0x5B, 0xE9, 0x3, 0xD8, 0xC3, + 0xE8, 0x5D, 0x0, 0xFE, 0xCD, 0x8A, 0x7, 0x43, 0xE8, 0x4, 0xEF, + 0xEB, 0xCA, 0xB1, 0x0, 0xEB, 0x5, 0xB1, 0x1, 0xEB, 0x1, 0x58, + 0xFE, 0xCD, 0xE8, 0x45, 0x0, 0x5B, 0x9D, 0x74, 0xD0, 0x51, 0xE8, + 0x6E, 0xDA, 0xE8, 0x7F, 0x27, 0x59, 0x51, 0x53, 0x8B, 0x1E, 0xA3, + 0x4, 0x8A, 0xE9, 0xB1, 0x0, 0x8A, 0xC5, 0x50, 0x8A, 0xC5, 0xA, + 0xC0, 0x74, 0x3, 0xE8, 0xA1, 0xEC, 0xE8, 0xE4, 0xE9, 0x8B, 0x1E, + 0xA3, 0x4, 0x58, 0xA, 0xC0, 0x75, 0x3, 0xE9, 0x5E, 0xFF, 0x2A, + 0x7, 0x8A, 0xE8, 0xB0, 0x20, 0xFE, 0xC5, 0xFE, 0xCD, 0x75, 0x3, + 0xE9, 0x4F, 0xFF, 0xE8, 0xB1, 0xEE, 0xEB, 0xF4, 0x50, 0x8A, 0xC6, + 0xA, 0xC0, 0xB0, 0x2B, 0x74, 0x3, 0xE8, 0xA3, 0xEE, 0x58, 0xC3, + 0x89, 0x1E, 0x35, 0x3, 0xE8, 0xEC, 0xE7, 0xE8, 0xF, 0xD2, 0x87, + 0xDA, 0xE8, 0x66, 0x0, 0x9F, 0x44, 0x9E, 0x9F, 0x44, 0x9E, 0x75, + 0x8, 0x3, 0xD9, 0x8B, 0xE3, 0x89, 0x1E, 0x45, 0x3, 0x8B, 0x1E, + 0x2E, 0x0, 0x53, 0x8B, 0x1E, 0x35, 0x3, 0x53, 0x52, 0xEB, 0x28, + 0x74, 0x3, 0xE9, 0x89, 0xCA, 0x87, 0xDA, 0xE8, 0x3F, 0x0, 0x75, + 0x67, 0x8B, 0xE3, 0x89, 0x1E, 0x45, 0x3, 0x8B, 0x16, 0x2E, 0x0, + 0x89, 0x16, 0x5A, 0x4, 0x43, 0x43, 0x8B, 0x17, 0x43, 0x43, 0x8B, + 0x1F, 0x89, 0x1E, 0x2E, 0x0, 0x87, 0xDA, 0xE8, 0xCC, 0xD9, 0x53, + 0xE8, 0x84, 0x27, 0x5B, 0x74, 0x9, 0xB9, 0xB1, 0x0, 0x8A, 0xE9, + 0x51, 0xE9, 0x7D, 0xD1, 0x8B, 0x1E, 0x5A, 0x4, 0x89, 0x1E, 0x2E, + 0x0, 0x5B, 0x59, 0x59, 0xE9, 0x6F, 0xD1, 0xBB, 0x4, 0x0, 0x3, + 0xDC, 0x43, 0x8A, 0x7, 0x43, 0xB9, 0x82, 0x0, 0x3A, 0xC1, 0x75, + 0x7, 0xB9, 0x12, 0x0, 0x3, 0xD9, 0xEB, 0xEE, 0xB9, 0xB1, 0x0, + 0x3A, 0xC1, 0x74, 0x1, 0xC3, 0x39, 0x17, 0xB9, 0x6, 0x0, 0x74, + 0xF8, 0x3, 0xD9, 0xEB, 0xDB, 0xBA, 0x1E, 0x0, 0xE9, 0x2F, 0xCA, + 0xE8, 0x3A, 0x7, 0x4B, 0xE8, 0x6D, 0xD1, 0x74, 0x55, 0xE8, 0x72, + 0xD9, 0x53, 0xE8, 0x6C, 0xDD, 0x74, 0x3D, 0xE8, 0xA, 0x33, 0xE8, + 0x8B, 0xE8, 0x8B, 0x1E, 0xA3, 0x4, 0x43, 0x8A, 0x17, 0x43, 0x8A, + 0x37, 0x8B, 0xF2, 0xAC, 0x3C, 0x20, 0x75, 0x9, 0x42, 0x88, 0x37, + 0x4B, 0x88, 0x17, 0x4B, 0xFE, 0xF, 0xE8, 0xDC, 0xE8, 0x5B, 0x4B, + 0xE8, 0x3A, 0xD1, 0x74, 0x22, 0x3C, 0x3B, 0x74, 0x5, 0xE8, 0x8, + 0xF0, 0x2C, 0x4B, 0xE8, 0x2C, 0xD1, 0xB0, 0x2C, 0xE8, 0xAF, 0xED, + 0xEB, 0xBA, 0xB0, 0x22, 0xE8, 0xA8, 0xED, 0xE8, 0xBA, 0xE8, 0xB0, + 0x22, 0xE8, 0xA0, 0xED, 0xEB, 0xD7, 0xE8, 0x67, 0xEE, 0xE9, 0x8B, + 0xD6, 0xCD, 0xA8, 0x53, 0x8A, 0xF2, 0xE8, 0x87, 0x1, 0x74, 0x9, + 0x3C, 0x3A, 0x74, 0xF, 0xE8, 0x7E, 0x1, 0x79, 0xF7, 0x8A, 0xD6, + 0x5B, 0x32, 0xC0, 0xB0, 0xFC, 0xCD, 0xAB, 0xC3, 0x8A, 0xC6, 0x2A, + 0xC2, 0xFE, 0xC8, 0x3C, 0x2, 0x73, 0x5, 0xCD, 0xAC, 0xE9, 0x61, + 0xC9, 0x3C, 0x5, 0x72, 0x3, 0xE9, 0x5A, 0xC9, 0x59, 0x52, 0x51, + 0x8A, 0xC8, 0x8A, 0xE8, 0xBA, 0x9C, 0x3E, 0x5E, 0x87, 0xDE, 0x56, + 0x53, 0x8A, 0x7, 0x3C, 0x61, 0x72, 0x6, 0x3C, 0x7B, 0x73, 0x2, + 0x2C, 0x20, 0x51, 0x8A, 0xE8, 0x8B, 0xF2, 0x2E, 0xAC, 0x43, 0x42, + 0x3A, 0xC5, 0x59, 0x75, 0x15, 0xFE, 0xC9, 0x75, 0xE2, 0x8B, 0xF2, + 0x2E, 0xAC, 0xA, 0xC0, 0x78, 0x3, 0xE9, 0x6, 0x0, 0x5B, 0x5B, + 0x5A, 0xA, 0xC0, 0xC3, 0xA, 0xC0, 0x78, 0xEB, 0x8B, 0xF2, 0x2E, + 0xAC, 0xA, 0xC0, 0x9F, 0x42, 0x9E, 0x79, 0xF5, 0x8A, 0xCD, 0x5B, + 0x53, 0x8B, 0xF2, 0x2E, 0xAC, 0xA, 0xC0, 0x75, 0xB6, 0xE9, 0xFE, + 0xC8, 0x4B, 0x59, 0x42, 0x44, 0xFF, 0x53, 0x43, 0x52, 0x4E, 0xFE, + 0x4C, 0x50, 0x54, 0x31, 0xFD, 0x43, 0x41, 0x53, 0x31, 0xFC, 0x0, + 0x7B, 0x58, 0x91, 0x58, 0xA7, 0x58, 0xBD, 0x58, 0xCD, 0xA9, 0x53, + 0x52, 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0xBA, 0x2E, 0x0, 0x3, + 0xDA, 0xB0, 0xFF, 0x2A, 0x7, 0x2, 0xC0, 0x8A, 0xD0, 0xCD, 0xAA, + 0xB6, 0x0, 0xBB, 0xB1, 0x3E, 0x3, 0xDA, 0x2E, 0x8A, 0x17, 0x43, + 0x2E, 0x8A, 0x37, 0x58, 0x86, 0xC4, 0x9E, 0x8A, 0xD8, 0xB7, 0x0, + 0x3, 0xDA, 0x2E, 0x8A, 0x17, 0x43, 0x2E, 0x8A, 0x37, 0x87, 0xDA, + 0x5A, 0x5E, 0x87, 0xDE, 0x56, 0xC3, 0x47, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE8, + 0x11, 0xD8, 0x53, 0xE8, 0x8C, 0xE9, 0x8A, 0x7, 0xA, 0xC0, 0x74, + 0x4F, 0x43, 0x8A, 0x17, 0x43, 0x8A, 0x3F, 0x8A, 0xDA, 0x8A, 0xD0, + 0x32, 0xC0, 0xA2, 0xFF, 0x6, 0xE8, 0xDB, 0xFE, 0x9F, 0x86, 0xC4, + 0x50, 0x86, 0xC4, 0xB9, 0xF0, 0x4, 0xB6, 0xB, 0xFE, 0xC2, 0xFE, + 0xCA, 0x74, 0x4D, 0x8A, 0x7, 0x3C, 0x20, 0x72, 0x26, 0x3C, 0x2E, + 0x74, 0x28, 0x8B, 0xF9, 0xAA, 0x41, 0x43, 0xFE, 0xCE, 0x75, 0xE9, + 0x58, 0x86, 0xC4, 0x9E, 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x8A, + 0xF0, 0xA0, 0xF0, 0x4, 0xFE, 0xC0, 0x74, 0x6, 0x58, 0x86, 0xC4, + 0x9E, 0x5B, 0xC3, 0xE9, 0x28, 0xC8, 0x43, 0xEB, 0xCA, 0xB0, 0x1, + 0xA2, 0xFF, 0x6, 0x8A, 0xC6, 0x3C, 0xB, 0x74, 0xEF, 0x3C, 0x3, + 0x72, 0xEB, 0x74, 0xEC, 0xB0, 0x20, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, + 0xCE, 0xEB, 0xEA, 0xB0, 0x20, 0x8B, 0xF9, 0xAA, 0x41, 0xFE, 0xCE, + 0x75, 0xF6, 0xEB, 0xBA, 0x8A, 0x7, 0x43, 0xFE, 0xCA, 0xC3, 0xE8, + 0x7A, 0xDF, 0x8A, 0xD8, 0xA0, 0xDF, 0x4, 0x3A, 0xC3, 0x73, 0x3, + 0xE9, 0xE9, 0xC7, 0xB7, 0x0, 0x3, 0xDB, 0x87, 0xDA, 0x8B, 0x1E, + 0xE0, 0x4, 0x3, 0xDA, 0x8B, 0x1F, 0xA0, 0x36, 0x5, 0xFE, 0xC0, + 0x74, 0xDB, 0x8A, 0x7, 0xA, 0xC0, 0x74, 0xD5, 0x53, 0xBA, 0x2E, + 0x0, 0x3, 0xDA, 0x8A, 0x7, 0x3C, 0x9, 0x73, 0x5, 0xCD, 0xDC, + 0xE9, 0xC0, 0xC7, 0x5B, 0x8A, 0x7, 0xA, 0xC0, 0xF9, 0xC3, 0x4B, + 0xE8, 0x35, 0xCF, 0x3C, 0x23, 0x75, 0x3, 0xE8, 0x2E, 0xCF, 0xE8, + 0x2A, 0xDF, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0xE8, 0xAB, 0xFF, 0x75, + 0x3, 0xE9, 0x9B, 0xC7, 0x89 +}; + +#ifdef MEGA + const uint8_t BASICH[16384] PROGMEM = { +#else + const uint8_t BASICH[16384] = { +#endif + 0x1E, 0xE9, 0x4, 0xC3, 0xB9, 0x98, 0x14, 0x51, 0xE8, 0x1C, 0xD7, + 0x8A, 0x7, 0x3C, 0x2C, 0x75, 0x59, 0x53, 0xE8, 0x91, 0xE8, 0x8A, + 0x7, 0xA, 0xC0, 0x75, 0x3, 0xE9, 0x7C, 0xC7, 0x43, 0x8B, 0x1F, + 0x8A, 0x7, 0x24, 0xDF, 0xB2, 0x1, 0x3C, 0x49, 0x74, 0x15, 0xB2, + 0x2, 0x3C, 0x4F, 0x74, 0xF, 0xB2, 0x4, 0x3C, 0x52, 0x74, 0x9, + 0xB2, 0x8, 0x3C, 0x41, 0x74, 0x3, 0xE9, 0x54, 0xC7, 0x5B, 0x52, + 0xE8, 0xAF, 0xED, 0x2C, 0x3C, 0x23, 0x75, 0x3, 0xE8, 0xD0, 0xCE, + 0xE8, 0xCC, 0xDE, 0xE8, 0xA1, 0xED, 0x2C, 0x8A, 0xC2, 0xA, 0xC0, + 0x75, 0x3, 0xE9, 0x3D, 0xC7, 0x50, 0xE8, 0xB2, 0xFE, 0x58, 0x59, + 0x8A, 0xD1, 0xCD, 0xDD, 0xE9, 0x83, 0x0, 0xE8, 0xA9, 0xFE, 0x8A, + 0x7, 0x3C, 0x82, 0xB2, 0x4, 0x75, 0x59, 0xE8, 0xA5, 0xCE, 0x3C, + 0x85, 0xB2, 0x1, 0x74, 0x4D, 0x3C, 0x4F, 0x74, 0x20, 0x3C, 0x49, + 0x74, 0x37, 0xE8, 0x6B, 0xED, 0x41, 0xE8, 0x67, 0xED, 0x50, 0xE8, + 0x63, 0xED, 0x50, 0xE8, 0x5F, 0xED, 0x45, 0xE8, 0x5B, 0xED, 0x4E, + 0xE8, 0x57, 0xED, 0x44, 0xB2, 0x8, 0xEB, 0x2C, 0xE8, 0x78, 0xCE, + 0xE8, 0x4C, 0xED, 0x55, 0xE8, 0x48, 0xED, 0x54, 0xE8, 0x44, 0xED, + 0x50, 0xE8, 0x40, 0xED, 0x55, 0xE8, 0x3C, 0xED, 0x54, 0xB2, 0x2, + 0xEB, 0x11, 0xE8, 0x5D, 0xCE, 0xE8, 0x31, 0xED, 0x42, 0xE8, 0x2D, + 0xED, 0x4D, 0xB2, 0x20, 0x4B, 0xE8, 0x4F, 0xCE, 0xE8, 0x23, 0xED, + 0x41, 0xE8, 0x1F, 0xED, 0x53, 0x52, 0x8A, 0x7, 0x3C, 0x23, 0x75, + 0x3, 0xE8, 0x3D, 0xCE, 0xE8, 0x39, 0xDE, 0xA, 0xC0, 0x75, 0x3, + 0xE9, 0xB0, 0xC6, 0xCD, 0xDE, 0xB4, 0x52, 0x4B, 0x8A, 0xD0, 0xE8, + 0x29, 0xCE, 0x74, 0x3, 0xE9, 0xC5, 0xC6, 0x5E, 0x87, 0xDE, 0x56, + 0x8A, 0xC2, 0x9F, 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x53, 0xE8, 0x9C, + 0xFE, 0x74, 0x3, 0xE9, 0x95, 0xC6, 0x5A, 0x8A, 0xC6, 0x3C, 0x9, + 0xCD, 0xDF, 0x73, 0x3, 0xE9, 0x83, 0xC6, 0x53, 0xB9, 0x2E, 0x0, + 0x3, 0xD9, 0x88, 0x37, 0xB0, 0x0, 0x5B, 0xE9, 0x91, 0xFD, 0x53, + 0xA, 0xC0, 0x75, 0xA, 0xA0, 0x36, 0x5, 0x24, 0x1, 0x74, 0x3, + 0xE9, 0x46, 0x3, 0xE8, 0x6B, 0xFE, 0x74, 0x15, 0x89, 0x1E, 0xE9, + 0x4, 0x53, 0xB0, 0x2, 0x73, 0x3, 0xE9, 0x71, 0xFD, 0xCD, 0xE0, + 0xE9, 0x50, 0xC6, 0xE8, 0x24, 0x3, 0x5B, 0x53, 0xBA, 0x31, 0x0, + 0x3, 0xDA, 0x88, 0x7, 0x8A, 0xF8, 0x8A, 0xD8, 0x89, 0x1E, 0xE9, + 0x4, 0x5B, 0x2, 0x7, 0xC6, 0x7, 0x0, 0x5B, 0xC3, 0xF9, 0xEB, + 0x3, 0xD, 0x32, 0xC0, 0x9F, 0x50, 0xE8, 0x9F, 0xFD, 0xCD, 0xE9, + 0x58, 0x9E, 0x9F, 0x50, 0x74, 0x14, 0x8A, 0x7, 0x2C, 0x2C, 0xA, + 0xC0, 0x75, 0xC, 0xE8, 0x96, 0xCD, 0xE8, 0x6A, 0xEC, 0x52, 0x58, + 0x9E, 0xF9, 0x9F, 0x50, 0x9F, 0x50, 0x32, 0xC0, 0xB2, 0x1, 0xE8, + 0x54, 0xFF, 0x8B, 0x1E, 0xE9, 0x4, 0xB9, 0x31, 0x0, 0x3, 0xD9, + 0x58, 0x9E, 0x1A, 0xC0, 0x24, 0x80, 0xC, 0x1, 0xA2, 0x36, 0x5, + 0x58, 0x9E, 0x9F, 0x50, 0x1A, 0xC0, 0xA2, 0xEF, 0x4, 0x8A, 0x7, + 0xA, 0xC0, 0x79, 0x3, 0xE9, 0xD8, 0x0, 0x58, 0x9E, 0x74, 0x3, + 0xE8, 0x57, 0xEB, 0x32, 0xC0, 0xE8, 0x2C, 0xFE, 0xE9, 0x5, 0xC7, + 0xE8, 0x42, 0xFD, 0xCD, 0xEA, 0x4B, 0xE8, 0x46, 0xCD, 0xB2, 0x80, + 0xF9, 0x75, 0x3, 0xE8, 0x79, 0x5, 0x74, 0x18, 0xE8, 0x10, 0xEC, + 0x2C, 0x3C, 0x50, 0xB2, 0x92, 0x75, 0x6, 0xE8, 0x2F, 0xCD, 0xF9, + 0xEB, 0x8, 0xE8, 0x0, 0xEC, 0x41, 0xA, 0xC0, 0xB2, 0x2, 0x9F, + 0x50, 0x8A, 0xC2, 0x24, 0x10, 0xA2, 0x62, 0x4, 0x58, 0x9E, 0x9F, + 0x50, 0xFE, 0xC0, 0xA2, 0x5F, 0x0, 0x32, 0xC0, 0xE8, 0xDD, 0xFE, + 0x58, 0x9E, 0x53, 0x8B, 0x1E, 0xE9, 0x4, 0x8A, 0x7, 0x5B, 0x24, + 0x80, 0x75, 0x3, 0xE9, 0x14, 0xDD, 0x53, 0xE8, 0x63, 0xE1, 0xA0, + 0x62, 0x4, 0xA, 0xC0, 0x74, 0x3, 0xE8, 0x79, 0x4, 0x8B, 0x1E, + 0x58, 0x3, 0x89, 0x1E, 0x4, 0x7, 0x8B, 0x1E, 0x30, 0x0, 0x53, + 0x8B, 0x1E, 0xE9, 0x4, 0xE8, 0xC6, 0x0, 0xA, 0xC0, 0x79, 0x3, + 0xE9, 0x16, 0x0, 0xE9, 0x4D, 0xC5, 0xA0, 0x62, 0x4, 0xA, 0xC0, + 0x74, 0x3, 0xE8, 0xA2, 0x4, 0x5B, 0x32, 0xC0, 0xA2, 0x62, 0x4, + 0xE9, 0xC8, 0xFE, 0x5B, 0xE8, 0x2, 0x0, 0xEB, 0xE7, 0xE8, 0xA0, + 0x0, 0x3C, 0xFC, 0x75, 0x3, 0xE9, 0xD, 0x1A, 0xCD, 0xEB, 0xE9, + 0x1F, 0xC5, 0x8B, 0x1E, 0x30, 0x0, 0xA, 0xC0, 0xE8, 0x3, 0x0, + 0xE9, 0x46, 0x0, 0x9F, 0x50, 0xE8, 0x83, 0x0, 0x3C, 0xFC, 0x75, + 0x3, 0xE9, 0x36, 0x1A, 0x58, 0x9E, 0xCD, 0xEC, 0xE9, 0x0, 0xC5, + 0x58, 0x9E, 0xC3, 0x24, 0x20, 0xA2, 0x63, 0x4, 0x58, 0x9E, 0x75, + 0x3, 0xE9, 0xF1, 0xC4, 0xE8, 0x77, 0xEA, 0xA0, 0x63, 0x4, 0xA2, + 0x64, 0x4, 0xE8, 0xAB, 0x0, 0x32, 0xC0, 0xE8, 0xF1, 0xFC, 0xC6, + 0x7, 0x80, 0x89, 0x1E, 0xE9, 0x4, 0xE8, 0x4B, 0x0, 0xA, 0xC0, + 0x78, 0xB3, 0xCD, 0xED, 0xE9, 0xD3, 0xC4, 0xA0, 0x64, 0x4, 0xA, + 0xC0, 0x74, 0x3, 0xE8, 0x28, 0x4, 0xE8, 0x27, 0xC7, 0x43, 0x43, + 0x89, 0x1E, 0x58, 0x3, 0xE8, 0x5A, 0xEA, 0x32, 0xC0, 0xA2, 0x36, + 0x5, 0xE8, 0x43, 0xFE, 0xA0, 0xEF, 0x4, 0xA, 0xC0, 0x74, 0x3, + 0xE9, 0xF9, 0xCB, 0xE9, 0xC4, 0xC5, 0x87, 0xDA, 0x8B, 0x1E, 0x2F, + 0x3, 0x87, 0xDA, 0x3B, 0xDA, 0x72, 0x98, 0xE8, 0x1C, 0xEA, 0x32, + 0xC0, 0xA2, 0x36, 0x5, 0xE9, 0xEB, 0xE9, 0x53, 0x52, 0x8B, 0x1E, + 0xE9, 0x4, 0xBA, 0x2E, 0x0, 0x3, 0xDA, 0x8A, 0x7, 0x5A, 0x5B, + 0xC3, 0x75, 0x1E, 0x53, 0x51, 0x50, 0xBA, 0x26, 0x43, 0x52, 0x51, + 0xA, 0xC0, 0xC3, 0x58, 0x59, 0xFE, 0xC8, 0x79, 0xF0, 0x5B, 0xC3, + 0x59, 0x5B, 0x8A, 0x7, 0x3C, 0x2C, 0x75, 0xF7, 0xE8, 0xE4, 0xCB, + 0x51, 0x8A, 0x7, 0x3C, 0x23, 0x75, 0x3, 0xE8, 0xDA, 0xCB, 0xE8, + 0xD6, 0xDB, 0x5E, 0x87, 0xDE, 0x56, 0x53, 0xBA, 0x2E, 0x43, 0x52, + 0xF9, 0xFF, 0xE3, 0xB9, 0x28, 0x41, 0xA0, 0xDF, 0x4, 0xEB, 0xBF, + 0xA0, 0x36, 0x5, 0xA, 0xC0, 0x78, 0xCC, 0xB9, 0x28, 0x41, 0x32, + 0xC0, 0xA0, 0xDF, 0x4, 0xEB, 0xAE, 0x32, 0xC0, 0x8A, 0xE8, 0x8A, + 0xC5, 0xE8, 0x31, 0xFC, 0xC6, 0x7, 0x0, 0xA0, 0xDF, 0x4, 0xFE, + 0xC5, 0x2A, 0xC5, 0x73, 0xEF, 0x32, 0xC0, 0xA2, 0x36, 0x5, 0xE8, + 0x95, 0xE9, 0x8B, 0x1E, 0x30, 0x0, 0x4B, 0xC6, 0x7, 0x0, 0xE9, + 0xDB, 0xC3, 0x5B, 0x58, 0x86, 0xC4, 0x9E, 0x53, 0x52, 0x51, 0x9F, + 0x86, 0xC4, 0x50, 0x86, 0xC4, 0x8B, 0x1E, 0xE9, 0x4, 0xB0, 0x6, + 0xE8, 0x5, 0x0, 0xCD, 0xE3, 0xE9, 0xEB, 0xC3, 0x9F, 0x86, 0xC4, + 0x50, 0x86, 0xC4, 0x52, 0x87, 0xDA, 0xBB, 0x2E, 0x0, 0x3, 0xDA, + 0x8A, 0x7, 0x87, 0xDA, 0x5A, 0x3C, 0x9, 0x73, 0x3, 0xE9, 0xCA, + 0x0, 0x58, 0x86, 0xC4, 0x9E, 0x5E, 0x87, 0xDE, 0x56, 0x5B, 0xE9, + 0xE4, 0xFA, 0x51, 0x53, 0x52, 0x8B, 0x1E, 0xE9, 0x4, 0xB0, 0x8, + 0xE8, 0xCE, 0xFF, 0xCD, 0xE4, 0xE9, 0xB4, 0xC3, 0x5A, 0x5B, 0x59, + 0xC3, 0xE8, 0x30, 0xCB, 0xE8, 0x4, 0xEA, 0x24, 0xE8, 0x0, 0xEA, + 0x28, 0x53, 0x8B, 0x1E, 0xE9, 0x4, 0x53, 0xBB, 0x0, 0x0, 0x89, + 0x1E, 0xE9, 0x4, 0x5B, 0x5E, 0x87, 0xDE, 0x56, 0xE8, 0x12, 0xDB, + 0x52, 0x8A, 0x7, 0x3C, 0x2C, 0x75, 0xB, 0xE8, 0x9, 0xCB, 0xE8, + 0xCD, 0xFB, 0x5B, 0x32, 0xC0, 0x8A, 0x7, 0x9F, 0x50, 0xE8, 0xD3, + 0xE9, 0x29, 0x58, 0x9E, 0x5E, 0x87, 0xDE, 0x56, 0x9F, 0x50, 0x8A, + 0xC3, 0xA, 0xC0, 0x75, 0x3, 0xE9, 0x26, 0xCC, 0x53, 0xE8, 0x7, + 0xE2, 0x87, 0xDA, 0x59, 0x58, 0x9E, 0x9F, 0x50, 0x74, 0x28, 0xE8, + 0x16, 0xE8, 0x3C, 0x3, 0x74, 0x13, 0x88, 0x7, 0x43, 0xFE, 0xC9, + 0x75, 0xEC, 0x58, 0x9E, 0x59, 0x5B, 0x89, 0x1E, 0xE9, 0x4, 0x51, + 0xE9, 0x33, 0xE2, 0x58, 0x9E, 0x8B, 0x1E, 0x2E, 0x0, 0x89, 0x1E, + 0x47, 0x3, 0x5B, 0xE9, 0x6, 0xC3, 0xE8, 0x6A, 0xFF, 0x73, 0x3, + 0xE9, 0x30, 0xC3, 0xEB, 0xD5, 0xCD, 0xE5, 0xE8, 0x12, 0x0, 0x53, + 0xB5, 0x1, 0xE8, 0x2, 0x0, 0x5B, 0xC3, 0x32, 0xC0, 0x88, 0x7, + 0x43, 0xFE, 0xCD, 0x75, 0xF9, 0xC3, 0x8B, 0x1E, 0xE9, 0x4, 0xBA, + 0x33, 0x0, 0x3, 0xDA, 0xC3, 0x58, 0x86, 0xC4, 0x9E, 0xC3, 0xE8, + 0x7, 0xFB, 0x75, 0x3, 0xE9, 0xFA, 0xC2, 0xB0, 0xA, 0x73, 0x3, + 0xE9, 0x12, 0xFA, 0xCD, 0xE6, 0xE9, 0xEE, 0xC2, 0xE8, 0xF3, 0xFA, + 0x75, 0x3, 0xE9, 0xE6, 0xC2, 0xB0, 0xC, 0x73, 0x3, 0xE9, 0xFE, + 0xF9, 0xCD, 0xE7, 0xE9, 0xDA, 0xC2, 0xE8, 0xDF, 0xFA, 0x75, 0x3, + 0xE9, 0xD2, 0xC2, 0xB0, 0xE, 0x73, 0x3, 0xE9, 0xEA, 0xF9, 0xCD, + 0xE8, 0xE9, 0xC6, 0xC2, 0xE8, 0xFF, 0xEA, 0x75, 0x3, 0xE9, 0x1F, + 0xCA, 0x32, 0xC0, 0xE8, 0x47, 0xFC, 0xB2, 0x42, 0xE9, 0xF2, 0xC2, + 0x3C, 0x23, 0x75, 0xAD, 0xE8, 0x2C, 0xDA, 0xE8, 0x4, 0xE9, 0x2C, + 0x8A, 0xC2, 0x53, 0xE8, 0x0, 0xFB, 0x5B, 0x8A, 0x7, 0xC3, 0xB9, + 0xEC, 0x2D, 0x51, 0x32, 0xC0, 0xE9, 0x24, 0xFC, 0xE8, 0x1E, 0xD6, + 0xB9, 0x9B, 0x16, 0xBA, 0x20, 0x2C, 0x75, 0x1B, 0x8A, 0xD6, 0xEB, + 0x17, 0xB9, 0x98, 0x14, 0x51, 0xE8, 0xCC, 0xFF, 0xE8, 0x51, 0xF2, + 0xE8, 0x1B, 0x1F, 0x52, 0xB9, 0x8A, 0x11, 0x32, 0xC0, 0x8A, 0xF0, + 0x8A, 0xD0, 0x50, 0x51, 0x53, 0xE8, 0xA5, 0xFE, 0x73, 0x3, 0xE9, + 0x6B, 0xC2, 0x3C, 0x20, 0x75, 0x6, 0xFE, 0xC6, 0xFE, 0xCE, 0x75, + 0xEE, 0x3C, 0x22, 0x75, 0x13, 0x8A, 0xE8, 0x8A, 0xC2, 0x3C, 0x2C, + 0x8A, 0xC5, 0x75, 0x9, 0x8A, 0xF5, 0x8A, 0xD5, 0xE8, 0x81, 0xFE, + 0x72, 0x53, 0xBB, 0xF7, 0x1, 0xB5, 0xFF, 0x8A, 0xC8, 0x8A, 0xC6, + 0x3C, 0x22, 0x8A, 0xC1, 0x74, 0x2E, 0x3C, 0xD, 0x53, 0x74, 0x59, + 0x5B, 0x3C, 0xA, 0x75, 0x24, 0x8A, 0xC8, 0x8A, 0xC2, 0x3C, 0x2C, + 0x8A, 0xC1, 0x74, 0x3, 0xE8, 0x89, 0x0, 0x53, 0xE8, 0x55, 0xFE, + 0x5B, 0x72, 0x26, 0x3C, 0xD, 0x75, 0xC, 0x8A, 0xC2, 0x3C, 0x20, + 0x74, 0x15, 0x3C, 0x2C, 0xB0, 0xD, 0x74, 0xF, 0xA, 0xC0, 0x74, + 0xB, 0x3A, 0xC6, 0x74, 0xE, 0x3A, 0xC2, 0x74, 0xA, 0xE8, 0x63, + 0x0, 0x53, 0xE8, 0x2F, 0xFE, 0x5B, 0x73, 0xB2, 0x53, 0x3C, 0x22, + 0x74, 0x4, 0x3C, 0x20, 0x75, 0x25, 0xE8, 0x20, 0xFE, 0x72, 0x20, + 0x3C, 0x20, 0x74, 0xF7, 0x3C, 0x2C, 0x74, 0x18, 0x3C, 0xD, 0x75, + 0x4, 0xCD, 0xE1, 0x74, 0x10, 0x8B, 0x1E, 0xE9, 0x4, 0x8A, 0xC8, + 0xB0, 0x12, 0xE8, 0xDD, 0xFD, 0xCD, 0xE2, 0xE9, 0xC3, 0xC1, 0x5B, + 0xC6, 0x7, 0x0, 0xBB, 0xF6, 0x1, 0x8A, 0xC2, 0x2C, 0x20, 0x74, + 0x7, 0xB5, 0x0, 0xE8, 0x66, 0xE0, 0x5B, 0xC3, 0xE8, 0x37, 0xD5, + 0x9F, 0x50, 0xE8, 0x2A, 0xC9, 0x58, 0x9E, 0x9F, 0x50, 0x73, 0x3, + 0xE8, 0xC4, 0x23, 0x58, 0x9E, 0x72, 0x3, 0xE8, 0xC4, 0x23, 0x5B, + 0xC3, 0xA, 0xC0, 0x74, 0xFB, 0x88, 0x7, 0x43, 0xFE, 0xCD, 0x75, + 0xF4, 0x59, 0xEB, 0xC5, 0xE8, 0x46, 0x0, 0xA2, 0x60, 0x0, 0xFE, + 0xC0, 0x74, 0x3, 0xE9, 0x9E, 0xC1, 0x53, 0x51, 0xB2, 0x2, 0xE8, + 0xC6, 0xFA, 0x5B, 0xE8, 0x3B, 0xFC, 0x32, 0xC0, 0xA2, 0x60, 0x0, + 0xE9, 0x1A, 0xFC, 0xE8, 0x26, 0x0, 0xA, 0xC0, 0x74, 0x7, 0xFE, + 0xC0, 0x75, 0x3, 0xE9, 0x7D, 0xC1, 0xFE, 0xC8, 0xA2, 0x60, 0x0, + 0x53, 0x51, 0x32, 0xC0, 0xB2, 0x1, 0xE8, 0x9E, 0xFA, 0x5B, 0xE8, + 0x2E, 0xFC, 0x32, 0xC0, 0xA2, 0x60, 0x0, 0x5B, 0xE9, 0xCC, 0xFA, + 0xE8, 0xB4, 0xF8, 0x52, 0x4B, 0xE8, 0xB9, 0xC8, 0x5A, 0x75, 0x3, + 0xB0, 0x1, 0xC3, 0x52, 0xE8, 0x86, 0xE7, 0x2C, 0xE8, 0x2B, 0x0, + 0x52, 0x4B, 0xE8, 0xA6, 0xC8, 0x75, 0x5, 0x59, 0x5A, 0x32, 0xC0, + 0xC3, 0xE8, 0x73, 0xE7, 0x2C, 0xE8, 0x18, 0x0, 0x59, 0x87, 0xDA, + 0x3, 0xD9, 0x89, 0x1E, 0x4, 0x7, 0x87, 0xDA, 0x4B, 0xE8, 0x89, + 0xC8, 0x74, 0x3, 0xE9, 0x25, 0xC1, 0x5A, 0xB0, 0xFF, 0xC3, 0xE8, + 0x87, 0xD0, 0x53, 0xE8, 0x11, 0xDC, 0x5A, 0x87, 0xDA, 0xC3, 0xB9, + 0xB, 0xD, 0x8B, 0x1E, 0x30, 0x0, 0x87, 0xDA, 0x8B, 0x1E, 0x58, + 0x3, 0x3B, 0xDA, 0x75, 0x1, 0xC3, 0xBB, 0x17, 0x62, 0x8A, 0xC3, + 0x2, 0xC1, 0x8A, 0xD8, 0x8A, 0xC7, 0x14, 0x0, 0x8A, 0xF8, 0x8B, + 0xF2, 0xAC, 0x2A, 0xC5, 0x2E, 0x32, 0x7, 0x50, 0xBB, 0x76, 0x61, + 0x8A, 0xC3, 0x2, 0xC5, 0x8A, 0xD8, 0x8A, 0xC7, 0x14, 0x0, 0x8A, + 0xF8, 0x58, 0x2E, 0x32, 0x7, 0x2, 0xC1, 0x8B, 0xFA, 0xAA, 0x42, + 0xFE, 0xC9, 0x75, 0x2, 0xB1, 0xB, 0xFE, 0xCD, 0x75, 0xBC, 0xB5, + 0xD, 0xEB, 0xB8, 0xB9, 0xB, 0xD, 0x8B, 0x1E, 0x30, 0x0, 0x87, + 0xDA, 0x8B, 0x1E, 0x58, 0x3, 0x3B, 0xDA, 0x74, 0xAF, 0xBB, 0x76, + 0x61, 0x8A, 0xC3, 0x2, 0xC5, 0x8A, 0xD8, 0x8A, 0xC7, 0x14, 0x0, + 0x8A, 0xF8, 0x8B, 0xF2, 0xAC, 0x2A, 0xC1, 0x2E, 0x32, 0x7, 0x50, + 0xBB, 0x17, 0x62, 0x8A, 0xC3, 0x2, 0xC1, 0x8A, 0xD8, 0x8A, 0xC7, + 0x14, 0x0, 0x8A, 0xF8, 0x58, 0x2E, 0x32, 0x7, 0x2, 0xC5, 0x8B, + 0xFA, 0xAA, 0x42, 0xFE, 0xC9, 0x75, 0x2, 0xB1, 0xB, 0xFE, 0xCD, + 0x75, 0xBD, 0xB5, 0xD, 0xEB, 0xB9, 0x53, 0x8B, 0x1E, 0x2E, 0x0, + 0x8A, 0xC7, 0x22, 0xC3, 0x5B, 0xFE, 0xC0, 0x74, 0x1, 0xC3, 0x9F, + 0x50, 0xA0, 0x64, 0x4, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0xF5, 0xC8, + 0x58, 0x9E, 0xC3, 0x8A, 0x7, 0x3C, 0x40, 0x75, 0x3, 0xE8, 0xAD, + 0xC7, 0xB9, 0x0, 0x0, 0x8A, 0xF5, 0x8A, 0xD1, 0x3C, 0xEA, 0x74, + 0x1F, 0x8A, 0x7, 0x3C, 0xCF, 0x9C, 0x75, 0x3, 0xE8, 0x98, 0xC7, + 0xE8, 0x6C, 0xE6, 0x28, 0xE8, 0x7E, 0xD7, 0x52, 0xE8, 0x64, 0xE6, + 0x2C, 0xE8, 0x76, 0xD7, 0xE8, 0x5D, 0xE6, 0x29, 0x59, 0x9D, 0x53, + 0x8B, 0x1E, 0x3D, 0x5, 0x74, 0x3, 0xBB, 0x0, 0x0, 0x9F, 0x3, + 0xD9, 0xD1, 0xDE, 0x9E, 0xD1, 0xD6, 0x89, 0x1E, 0x3D, 0x5, 0x89, + 0x1E, 0x37, 0x5, 0x8B, 0xCB, 0x8B, 0x1E, 0x3B, 0x5, 0x74, 0x3, + 0xBB, 0x0, 0x0, 0x3, 0xDA, 0x89, 0x1E, 0x3B, 0x5, 0x89, 0x1E, + 0x39, 0x5, 0x87, 0xDA, 0x5B, 0xC3, 0x32, 0xC0, 0xEB, 0x2, 0xB0, + 0x3, 0x50, 0xE8, 0xA4, 0xFF, 0x58, 0xE8, 0x2E, 0x0, 0x53, 0xE8, + 0x28, 0x3, 0x73, 0x6, 0xE8, 0x7F, 0x2, 0xE8, 0x55, 0x2, 0x5B, + 0xC3, 0xE8, 0x31, 0xC7, 0xE8, 0x8C, 0xFF, 0x53, 0xE8, 0x14, 0x3, + 0xBB, 0xFF, 0xFF, 0x73, 0xA, 0xE8, 0x68, 0x2, 0xE8, 0x1B, 0x2, + 0x8A, 0xD8, 0xB7, 0x0, 0xE8, 0x7, 0x1D, 0x5B, 0xC3, 0xB0, 0x3, + 0x51, 0x52, 0x8A, 0xD0, 0x4B, 0xE8, 0xC, 0xC7, 0x74, 0xB, 0xE8, + 0xDE, 0xE5, 0x2C, 0x3C, 0x2C, 0x74, 0x3, 0xE8, 0xFE, 0xD6, 0x8A, + 0xC2, 0x53, 0xE8, 0xC1, 0x2, 0x73, 0x3, 0xE9, 0x30, 0xC8, 0x5B, + 0x5A, 0x59, 0xE9, 0xEF, 0xC6, 0x8B, 0x1E, 0x37, 0x5, 0x8A, 0xC3, + 0x2A, 0xC1, 0x8A, 0xD8, 0x8A, 0xC7, 0x1A, 0xC5, 0x8A, 0xF8, 0x73, + 0xC5, 0x32, 0xC0, 0x2A, 0xC3, 0x8A, 0xD8, 0x1A, 0xC7, 0x2A, 0xC3, + 0x8A, 0xF8, 0xF9, 0xC3, 0x8B, 0x1E, 0x39, 0x5, 0x8A, 0xC3, 0x2A, + 0xC2, 0x8A, 0xD8, 0x8A, 0xC7, 0x1A, 0xC6, 0x8A, 0xF8, 0xEB, 0xDE, + 0x53, 0x8B, 0x1E, 0x39, 0x5, 0x87, 0xDA, 0x89, 0x1E, 0x39, 0x5, + 0x5B, 0xC3, 0xE8, 0xF0, 0xFF, 0x53, 0x51, 0x8B, 0x1E, 0x37, 0x5, + 0x5E, 0x87, 0xDE, 0x56, 0x89, 0x1E, 0x37, 0x5, 0x59, 0x5B, 0xC3, + 0xE8, 0xE2, 0xFE, 0x51, 0x52, 0xE8, 0x6A, 0xE5, 0xEA, 0xE8, 0xED, + 0xFE, 0xE8, 0x76, 0xFF, 0x5A, 0x59, 0x74, 0x53, 0xE8, 0x5C, 0xE5, + 0x2C, 0xE8, 0x58, 0xE5, 0x42, 0x75, 0x3, 0xE9, 0x60, 0x0, 0xE8, + 0x4F, 0xE5, 0x46, 0x53, 0xE8, 0x5D, 0x2, 0xE8, 0xC1, 0xFF, 0xE8, + 0x57, 0x2, 0xE8, 0x9C, 0xFF, 0x73, 0x3, 0xE8, 0xA9, 0xFF, 0x43, + 0x53, 0xE8, 0x72, 0xFF, 0x73, 0x3, 0xE8, 0xAF, 0xFF, 0x43, 0x53, + 0xE8, 0x9C, 0x1, 0x5A, 0x59, 0x52, 0x51, 0xE8, 0xDB, 0x0, 0x50, + 0x53, 0x87, 0xDA, 0xE8, 0x69, 0x2, 0x5B, 0x58, 0xE8, 0xD7, 0x0, + 0xE8, 0xF8, 0x0, 0x59, 0x5A, 0x49, 0x8A, 0xC5, 0xA, 0xC1, 0x75, + 0xE3, 0x5B, 0xC3, 0x51, 0x52, 0x53, 0xE8, 0x45, 0x0, 0x8B, 0x1E, + 0x3D, 0x5, 0x89, 0x1E, 0x37, 0x5, 0x8B, 0x1E, 0x3B, 0x5, 0x89, + 0x1E, 0x39, 0x5, 0x5B, 0x5A, 0x59, 0xC3, 0x53, 0x8B, 0x1E, 0x39, + 0x5, 0x53, 0x52, 0x87, 0xDA, 0xE8, 0xDA, 0xFF, 0x5B, 0x89, 0x1E, + 0x39, 0x5, 0x87, 0xDA, 0xE8, 0xD0, 0xFF, 0x5B, 0x89, 0x1E, 0x39, + 0x5, 0x8B, 0x1E, 0x37, 0x5, 0x51, 0x8B, 0xCB, 0xE8, 0xC1, 0xFF, + 0x5B, 0x89, 0x1E, 0x37, 0x5, 0x8B, 0xCB, 0xE8, 0xB7, 0xFF, 0x5B, + 0xC3, 0xCD, 0xB8, 0xE8, 0xCF, 0x1, 0xE8, 0x33, 0xFF, 0xE8, 0xC9, + 0x1, 0xE8, 0xE, 0xFF, 0x73, 0x3, 0xE8, 0x28, 0xFF, 0x52, 0x53, + 0xE8, 0xE4, 0xFE, 0x87, 0xDA, 0xBB, 0xF1, 0x49, 0x73, 0x3, 0xBB, + 0x5, 0x4A, 0x5E, 0x87, 0xDE, 0x56, 0x3B, 0xDA, 0x73, 0x14, 0x89, + 0x1E, 0xFD, 0x6, 0x5B, 0x89, 0x1E, 0xF7, 0x6, 0xBB, 0xD5, 0x49, + 0x89, 0x1E, 0xF9, 0x6, 0x87, 0xDA, 0xEB, 0x16, 0x5E, 0x87, 0xDE, + 0x56, 0x89, 0x1E, 0xF9, 0x6, 0xBB, 0xD5, 0x49, 0x89, 0x1E, 0xF7, + 0x6, 0x87, 0xDA, 0x89, 0x1E, 0xFD, 0x6, 0x5B, 0x5A, 0x53, 0x89, + 0x1E, 0xFB, 0x6, 0xE8, 0xD3, 0x0, 0x5A, 0x52, 0xE8, 0x5, 0x0, + 0x59, 0x41, 0xE9, 0x20, 0x2, 0x8A, 0xC6, 0xA, 0xC0, 0xD0, 0xD8, + 0x8A, 0xF0, 0x8A, 0xC2, 0xD0, 0xD8, 0x8A, 0xD0, 0xC3, 0x8B, 0x1E, + 0xF3, 0x6, 0xA0, 0xF5, 0x6, 0xC3, 0x89, 0x1E, 0xF3, 0x6, 0xA2, + 0xF5, 0x6, 0xC3, 0x8B, 0x1E, 0xF3, 0x6, 0x81, 0xFB, 0x0, 0x20, + 0x72, 0x9, 0x81, 0xEB, 0x0, 0x20, 0x89, 0x1E, 0xF3, 0x6, 0xC3, + 0x81, 0xC3, 0x50, 0x20, 0x89, 0x1E, 0xF3, 0x6, 0xC3, 0x8B, 0x1E, + 0xF3, 0x6, 0x81, 0xFB, 0x0, 0x20, 0x72, 0x9, 0x81, 0xEB, 0xB0, + 0x1F, 0x89, 0x1E, 0xF3, 0x6, 0xC3, 0x81, 0xC3, 0x0, 0x20, 0x89, + 0x1E, 0xF3, 0x6, 0xC3, 0x8A, 0xC1, 0x8A, 0xE, 0x55, 0x0, 0xD2, + 0xE, 0xF5, 0x6, 0x8A, 0xC8, 0x72, 0x1, 0xC3, 0xFF, 0x6, 0xF3, + 0x6, 0xC3, 0x8A, 0xC1, 0x8A, 0xE, 0x55, 0x0, 0xD2, 0x6, 0xF5, + 0x6, 0x8A, 0xC8, 0x72, 0x1, 0xC3, 0xFF, 0xE, 0xF3, 0x6, 0xC3, + 0x8C, 0xC6, 0xBF, 0x0, 0xB8, 0x8E, 0xC7, 0x8B, 0x1E, 0xF3, 0x6, + 0x26, 0x8A, 0x7, 0x8A, 0x16, 0xF5, 0x6, 0x22, 0xC2, 0x8A, 0xE, + 0x55, 0x0, 0xD2, 0xEA, 0x72, 0x4, 0xD2, 0xE8, 0xEB, 0xF8, 0x8E, + 0xC6, 0xC3, 0x8C, 0xC6, 0xBF, 0x0, 0xB8, 0x8E, 0xC7, 0x8B, 0x1E, + 0xF3, 0x6, 0x8B, 0xE9, 0xA0, 0xF5, 0x6, 0xF6, 0xD0, 0x26, 0x22, + 0x7, 0x8A, 0xE, 0xF6, 0x6, 0x22, 0xE, 0xF5, 0x6, 0xA, 0xC1, + 0x26, 0x88, 0x7, 0x8B, 0xCD, 0x8E, 0xC6, 0xC3, 0x8B, 0xE9, 0xD1, + 0xEA, 0x9F, 0x8B, 0xDA, 0xB1, 0x2, 0xD3, 0xE2, 0x3, 0xD3, 0xB1, + 0x4, 0xD3, 0xE2, 0x9E, 0x73, 0x4, 0x81, 0xC2, 0x0, 0x20, 0x89, + 0x16, 0xF3, 0x6, 0x8B, 0xD5, 0x8A, 0xCA, 0xF6, 0x6, 0x55, 0x0, + 0x1, 0x74, 0x14, 0xB0, 0x7, 0x22, 0xC8, 0xB0, 0x80, 0xD2, 0xE8, + 0xA2, 0xF5, 0x6, 0xB1, 0x3, 0xD3, 0xEA, 0x1, 0x16, 0xF3, 0x6, + 0xC3, 0xB0, 0x3, 0x22, 0xC8, 0x2, 0xC9, 0xB0, 0xC0, 0xD2, 0xE8, + 0xA2, 0xF5, 0x6, 0xB1, 0x2, 0xD3, 0xEA, 0x1, 0x16, 0xF3, 0x6, + 0xC3, 0xA0, 0x48, 0x0, 0xC7, 0x6, 0x3B, 0x5, 0x64, 0x0, 0x3C, + 0x6, 0x74, 0x12, 0x73, 0x1C, 0x3C, 0x4, 0x72, 0x18, 0xC6, 0x6, + 0x55, 0x0, 0x2, 0xC7, 0x6, 0x3D, 0x5, 0xA0, 0x0, 0xC3, 0xC6, + 0x6, 0x55, 0x0, 0x1, 0xC7, 0x6, 0x3D, 0x5, 0x40, 0x1, 0xC3, + 0xC6, 0x6, 0x55, 0x0, 0x0, 0xC3, 0x3C, 0x4, 0x73, 0xF, 0xF6, + 0x6, 0x55, 0x0, 0x1, 0x74, 0xC, 0x24, 0x1, 0xF6, 0xD8, 0xA2, + 0xF6, 0x6, 0xF8, 0xC3, 0xE9, 0x5D, 0xC5, 0x24, 0x3, 0xB1, 0x55, + 0xF6, 0xE1, 0xA2, 0xF6, 0x6, 0xF8, 0xC3, 0xA0, 0x55, 0x0, 0xA, + 0xC0, 0x74, 0xEB, 0xA, 0xED, 0x78, 0x27, 0xBB, 0x80, 0x2, 0x84, + 0x6, 0x1, 0x0, 0x74, 0x3, 0xBB, 0x40, 0x1, 0x3B, 0xCB, 0x9F, + 0x72, 0x3, 0x4B, 0x8B, 0xCB, 0xA, 0xF6, 0x78, 0xC, 0x81, 0xFA, + 0xC8, 0x0, 0x72, 0x4, 0xBA, 0xC7, 0x0, 0xC3, 0x9E, 0xC3, 0x33, + 0xD2, 0xC3, 0x33, 0xC9, 0x9F, 0xEB, 0xE8, 0x8C, 0xC6, 0xBF, 0x0, + 0xB8, 0x8E, 0xC7, 0x8B, 0xD3, 0xB, 0xD2, 0x74, 0x6C, 0x8B, 0x1E, + 0xF3, 0x6, 0x26, 0x8A, 0x2F, 0xA0, 0xF5, 0x6, 0x8A, 0xE0, 0xF6, + 0xD0, 0x8A, 0xE, 0x55, 0x0, 0x8A, 0x1E, 0xF6, 0x6, 0x22, 0xE8, + 0x8A, 0xFC, 0x22, 0xFB, 0xA, 0xEF, 0x4A, 0x74, 0x40, 0xD2, 0xC8, + 0xD2, 0xCC, 0x73, 0xEF, 0x8B, 0x1E, 0xF3, 0x6, 0x26, 0x88, 0x2F, + 0xFF, 0x6, 0xF3, 0x6, 0x88, 0x26, 0xF5, 0x6, 0x8B, 0xCA, 0xD1, + 0xE9, 0xD1, 0xE9, 0xF6, 0x6, 0x55, 0x0, 0x1, 0x75, 0x6, 0x81, + 0xE2, 0x3, 0x0, 0xEB, 0x6, 0x81, 0xE2, 0x7, 0x0, 0xD1, 0xE9, + 0xE3, 0xAB, 0xFC, 0xA0, 0xF6, 0x6, 0x8B, 0x3E, 0xF3, 0x6, 0xF3, + 0xAA, 0x89, 0x3E, 0xF3, 0x6, 0xEB, 0x9B, 0x8B, 0x1E, 0xF3, 0x6, + 0x26, 0x88, 0x2F, 0x88, 0x26, 0xF5, 0x6, 0x8E, 0xC6, 0xC3, 0xE8, + 0x7F, 0xFE, 0x3, 0x16, 0xFD, 0x6, 0x3B, 0x16, 0xFB, 0x6, 0x72, + 0x9, 0x2B, 0x16, 0xFB, 0x6, 0x3E, 0xFF, 0x16, 0xF9, 0x6, 0x3E, + 0xFF, 0x16, 0xF7, 0x6, 0xE2, 0xE3, 0xC3, 0x53, 0xE8, 0xA3, 0xCF, + 0x5B, 0xC3, 0x53, 0xE8, 0x27, 0x19, 0x5B, 0xC3, 0xF6, 0x80, 0x3E, + 0x71, 0x0, 0x0, 0x74, 0x3, 0xE9, 0xF9, 0x4, 0xC3, 0xA0, 0x29, + 0x0, 0x8A, 0xD0, 0xE8, 0xFF, 0xD2, 0xE9, 0xED, 0x4, 0x0, 0x0, + 0x0, 0xB4, 0xF, 0xCD, 0x10, 0xA2, 0x48, 0x0, 0xB4, 0x28, 0x3C, + 0x2, 0x72, 0xD, 0xB4, 0x50, 0x3C, 0x7, 0x75, 0x7, 0xB9, 0xC, + 0xB, 0x89, 0xE, 0x68, 0x0, 0x88, 0x26, 0x29, 0x0, 0xFA, 0x8C, + 0xDB, 0x89, 0x1E, 0x50, 0x3, 0x1E, 0xBA, 0x0, 0x0, 0x8E, 0xDA, + 0x89, 0x1E, 0x10, 0x5, 0xBB, 0x34, 0x4D, 0x89, 0x1E, 0x6C, 0x0, + 0xBB, 0x44, 0x57, 0x89, 0x1E, 0x70, 0x0, 0x8C, 0xE, 0x6E, 0x0, + 0x8C, 0xE, 0x72, 0x0, 0x1F, 0xE8, 0x32, 0x0, 0xBB, 0x18, 0x2, + 0xB9, 0x0, 0x0, 0x8E, 0xC1, 0xB9, 0x7A, 0x0, 0x26, 0x8C, 0x8F, + 0x2, 0x0, 0x26, 0xC7, 0x7, 0x94, 0x4C, 0x83, 0xC3, 0x4, 0xE0, + 0xF1, 0x8C, 0xDB, 0x8E, 0xC3, 0xE8, 0x48, 0xE1, 0xFB, 0xB4, 0x1, + 0xCD, 0x17, 0xE8, 0x77, 0x6, 0xBB, 0x9B, 0x4C, 0xE8, 0xDF, 0x2E, + 0xE9, 0x63, 0x32, 0xBE, 0xED, 0x4C, 0xBB, 0x53, 0x6, 0xB9, 0xA, + 0x0, 0x53, 0xFC, 0x2E, 0xAC, 0x88, 0x7, 0x43, 0xA, 0xC0, 0x75, + 0xF6, 0x5B, 0x83, 0xC3, 0x10, 0xE0, 0xEF, 0xC3, 0xCF, 0x3E, 0xFF, + 0x2E, 0x0, 0x7, 0xCB, 0x54, 0x68, 0x65, 0x20, 0x49, 0x42, 0x4D, + 0x20, 0x50, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x43, + 0x6F, 0x6D, 0x70, 0x75, 0x74, 0x65, 0x72, 0x20, 0x42, 0x61, 0x73, + 0x69, 0x63, 0xFF, 0xD, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x20, 0x43, 0x31, 0x2E, 0x31, 0x30, 0x20, 0x43, 0x6F, 0x70, 0x79, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x49, 0x42, 0x4D, 0x20, 0x43, + 0x6F, 0x72, 0x70, 0x20, 0x31, 0x39, 0x38, 0x31, 0xFF, 0xD, 0x0, + 0x32, 0x35, 0x2D, 0x41, 0x70, 0x72, 0x2D, 0x38, 0x31, 0x4C, 0x49, + 0x53, 0x54, 0x20, 0x0, 0x52, 0x55, 0x4E, 0xD, 0x0, 0x4C, 0x4F, + 0x41, 0x44, 0x22, 0x0, 0x53, 0x41, 0x56, 0x45, 0x22, 0x0, 0x43, + 0x4F, 0x4E, 0x54, 0xD, 0x0, 0x2C, 0x22, 0x4C, 0x50, 0x54, 0x31, + 0x3A, 0x22, 0xD, 0x0, 0x54, 0x52, 0x4F, 0x4E, 0xD, 0x0, 0x54, + 0x52, 0x4F, 0x46, 0x46, 0xD, 0x0, 0x4B, 0x45, 0x59, 0x20, 0x0, + 0x53, 0x43, 0x52, 0x45, 0x45, 0x4E, 0x20, 0x30, 0x2C, 0x30, 0x2C, + 0x30, 0xD, 0x0, 0x9C, 0x50, 0x1E, 0x52, 0xBA, 0x0, 0x0, 0x8E, + 0xDA, 0x8E, 0x1E, 0x10, 0x5, 0xE8, 0x3A, 0xA, 0x88, 0x16, 0x6A, + 0x0, 0xFE, 0xCA, 0x88, 0x16, 0x5E, 0x0, 0x5A, 0x1F, 0x58, 0x9D, + 0xCF, 0x56, 0xA0, 0x5E, 0x0, 0xA, 0xC0, 0x75, 0x11, 0xA0, 0x6A, + 0x0, 0xA, 0xC0, 0x75, 0xA, 0xB4, 0x1, 0xCD, 0x16, 0xB0, 0x0, + 0x74, 0x2, 0xFE, 0xC8, 0x5E, 0xC3, 0xA0, 0x5E, 0x0, 0xA, 0xC0, + 0x74, 0x8, 0x32, 0xC0, 0xA2, 0x5E, 0x0, 0xB0, 0x3, 0xC3, 0x56, + 0x57, 0xA0, 0x6A, 0x0, 0xA, 0xC0, 0x75, 0x74, 0xB4, 0x0, 0xCD, + 0x16, 0xA, 0xC0, 0x74, 0x3, 0x5F, 0x5E, 0xC3, 0x53, 0x80, 0xFC, + 0x3B, 0x72, 0x5, 0x80, 0xFC, 0x45, 0x72, 0x3C, 0x8B, 0x1E, 0x2E, + 0x0, 0x43, 0xB, 0xDB, 0x75, 0x13, 0xBB, 0x34, 0x4E, 0xB1, 0x1A, + 0x2E, 0x3A, 0x27, 0x74, 0xC, 0x43, 0xFE, 0xC0, 0xFE, 0xC9, 0x75, + 0xF4, 0x32, 0xC0, 0x5B, 0xEB, 0xD3, 0x32, 0xE4, 0xD0, 0xE0, 0x8B, + 0xD8, 0x2E, 0x8B, 0x9F, 0x3, 0x1, 0x89, 0x1E, 0x6B, 0x0, 0xFE, + 0xE, 0x6A, 0x0, 0xD0, 0xE8, 0x4, 0x41, 0x8C, 0xE, 0x6D, 0x0, + 0xEB, 0xE0, 0x50, 0x86, 0xC4, 0x2C, 0x3B, 0xB3, 0x10, 0xF6, 0xE3, + 0xBB, 0x53, 0x6, 0x3, 0xD8, 0xF6, 0x7, 0xFF, 0x58, 0x74, 0xCC, + 0x89, 0x1E, 0x6B, 0x0, 0x8C, 0x1E, 0x6D, 0x0, 0xFE, 0xE, 0x6A, + 0x0, 0xEB, 0xC, 0x53, 0xFE, 0xC8, 0x75, 0x7, 0xA2, 0x6A, 0x0, + 0xB0, 0x20, 0xEB, 0xB2, 0x1E, 0xC5, 0x1E, 0x6B, 0x0, 0x8A, 0x7, + 0x1F, 0xFF, 0x6, 0x6B, 0x0, 0xA, 0xC0, 0x74, 0x2, 0x79, 0xA0, + 0x32, 0xE4, 0x8C, 0xCB, 0x8A, 0x1E, 0x6E, 0x0, 0x3A, 0xDF, 0x72, + 0x4, 0xFE, 0xC4, 0x24, 0x7F, 0x88, 0x26, 0x6A, 0x0, 0xA, 0xC0, + 0x75, 0x88, 0x5B, 0xE9, 0x77, 0x11, 0x1E, 0x30, 0x2E, 0x20, 0x12, + 0x21, 0x22, 0x23, 0x17, 0x24, 0x25, 0x26, 0x32, 0x31, 0x18, 0x19, + 0x10, 0x13, 0x1F, 0x14, 0x16, 0x2F, 0x11, 0x2D, 0x15, 0x2C, 0x53, + 0x51, 0x56, 0xBE, 0x6C, 0x4E, 0xB1, 0xE, 0xFC, 0x2E, 0xAC, 0x3A, + 0xE0, 0x74, 0x9, 0x46, 0xFE, 0xC9, 0x75, 0xF4, 0x32, 0xC0, 0xEB, + 0x2, 0x2E, 0xAC, 0x5E, 0x59, 0x5B, 0xC3, 0x47, 0xB, 0x48, 0x1E, + 0x4B, 0x1D, 0x4D, 0x1C, 0x50, 0x1F, 0x1C, 0xA, 0x74, 0x6, 0x73, + 0x2, 0x76, 0x1, 0x52, 0x12, 0x53, 0x7F, 0x4F, 0xE, 0x75, 0x5, + 0x77, 0xC, 0x1F, 0x1E, 0x1D, 0x1C, 0xD, 0xC, 0xB, 0xA, 0x9C, + 0x53, 0x51, 0x52, 0x50, 0x3C, 0x7, 0x74, 0x4D, 0x3C, 0xD, 0x75, + 0xA, 0xF6, 0x6, 0x6F, 0x0, 0xFF, 0x74, 0x3, 0xE8, 0x8B, 0x0, + 0xE8, 0x2C, 0x2, 0x74, 0x4, 0x3C, 0xFF, 0x74, 0x39, 0x3C, 0xC, + 0x74, 0x22, 0xBB, 0x87, 0x4E, 0xB9, 0x8, 0x0, 0x43, 0xFE, 0xC9, + 0x78, 0x1C, 0x2E, 0x3A, 0x7, 0x75, 0xF6, 0xD0, 0xE1, 0x8B, 0xD9, + 0xB9, 0xE9, 0x4E, 0x51, 0x2E, 0xFF, 0xB7, 0xE1, 0x2F, 0x8B, 0x1E, + 0x56, 0x0, 0xC3, 0xE8, 0xE, 0x4, 0xEB, 0xE, 0xE8, 0x3E, 0x0, + 0xE8, 0xE, 0x0, 0xE8, 0xD, 0xE1, 0xEB, 0x3, 0xE8, 0x24, 0x9, + 0x58, 0x5A, 0x59, 0x5B, 0x9D, 0xC3, 0x50, 0x8A, 0x3E, 0x49, 0x0, + 0x8A, 0x1E, 0x4E, 0x0, 0xB9, 0x1, 0x0, 0xB4, 0x9, 0xCD, 0x10, + 0x58, 0xC3, 0x53, 0xE8, 0x71, 0x0, 0xE8, 0xE7, 0xFF, 0x5B, 0xC3, + 0x53, 0xE8, 0x68, 0x0, 0xB4, 0x8, 0xCD, 0x10, 0x5B, 0xC3, 0xE8, + 0xF3, 0xFF, 0x8A, 0xE8, 0x8A, 0xCC, 0xC3, 0x8B, 0x1E, 0x56, 0x0, + 0x89, 0x1E, 0x56, 0x0, 0x9C, 0x53, 0xE8, 0x4D, 0x0, 0x5B, 0x9D, + 0xC3, 0xA0, 0x57, 0x0, 0xFE, 0xC8, 0xC3, 0x50, 0x8A, 0xE, 0x29, + 0x0, 0x2A, 0xE, 0x57, 0x0, 0xFE, 0xC1, 0xB5, 0x0, 0x8A, 0x3E, + 0x49, 0x0, 0x8A, 0x1E, 0x4F, 0x0, 0xB0, 0x20, 0xB4, 0x9, 0xCD, + 0x10, 0x8B, 0x16, 0x56, 0x0, 0x86, 0xF2, 0xFE, 0xCE, 0xFE, 0xCA, + 0xB4, 0x2, 0xCD, 0x10, 0x58, 0xC3, 0x53, 0xE8, 0x15, 0x0, 0x8A, + 0x3E, 0x49, 0x0, 0x8A, 0x1E, 0x4F, 0x0, 0x8A, 0xE, 0x29, 0x0, + 0xB5, 0x0, 0xB0, 0x20, 0xB4, 0x9, 0xCD, 0x10, 0x5B, 0x50, 0x52, + 0x8B, 0xD3, 0x86, 0xF2, 0xFE, 0xCE, 0xFE, 0xCA, 0x8A, 0x3E, 0x49, + 0x0, 0xB4, 0x2, 0xCD, 0x10, 0x5A, 0x58, 0xC3, 0x53, 0x52, 0xB1, + 0x0, 0x8A, 0xEF, 0x8A, 0xF3, 0xE8, 0x1B, 0x0, 0xB4, 0x6, 0xCD, + 0x10, 0xEB, 0xF, 0x53, 0x52, 0xB1, 0x0, 0x8A, 0xEB, 0x8A, 0xF7, + 0xE8, 0xA, 0x0, 0xB4, 0x7, 0xCD, 0x10, 0xE8, 0x1C, 0x0, 0x5A, + 0x5B, 0xC3, 0xE8, 0x11, 0x0, 0x8A, 0x16, 0x29, 0x0, 0xFE, 0xCA, + 0xFE, 0xCE, 0xFE, 0xCD, 0xB0, 0x1, 0x8A, 0x3E, 0x4F, 0x0, 0xC3, + 0xA0, 0x49, 0x0, 0xEB, 0x3, 0xA0, 0x4A, 0x0, 0xE8, 0x6, 0x1, + 0x75, 0x20, 0x8A, 0x26, 0x48, 0x0, 0x80, 0xFC, 0x7, 0x74, 0x17, + 0x52, 0xBA, 0x0, 0x8, 0x80, 0xFC, 0x2, 0x72, 0x2, 0xD0, 0xE6, + 0x32, 0xE4, 0xF7, 0xE2, 0x1E, 0x8E, 0xDA, 0xA3, 0x4E, 0x4, 0x1F, + 0x5A, 0xC3, 0x9C, 0x53, 0x52, 0x50, 0xBA, 0x0, 0x0, 0xB4, 0x0, + 0xCD, 0x17, 0x8A, 0xC4, 0x80, 0xE4, 0x28, 0x80, 0xFC, 0x28, 0x74, + 0xD, 0xF6, 0xC4, 0x8, 0x75, 0xC, 0xA8, 0x1, 0x74, 0xD, 0xB2, + 0x18, 0xEB, 0x6, 0xB2, 0x1B, 0xEB, 0x2, 0xB2, 0x19, 0xE9, 0xBA, + 0xB7, 0x58, 0x50, 0x3C, 0xD, 0xE9, 0x5D, 0xF, 0x58, 0x5A, 0x5B, + 0x9D, 0xC3, 0x3C, 0x93, 0x74, 0x60, 0x3C, 0x95, 0x74, 0x46, 0x3C, + 0xDD, 0x74, 0x46, 0xE8, 0xE3, 0xCE, 0xA, 0xC0, 0x74, 0x38, 0xFE, + 0xC8, 0x3C, 0xA, 0x73, 0x32, 0xBA, 0x10, 0x0, 0xF6, 0xE2, 0x8A, + 0xD0, 0x81, 0xC2, 0x53, 0x6, 0x52, 0xE8, 0xA2, 0xDD, 0x2C, 0xE8, + 0xD1, 0xC6, 0x53, 0xE8, 0x4C, 0xD8, 0x8A, 0xF, 0x80, 0xF9, 0xF, + 0x72, 0x2, 0xB1, 0xF, 0x43, 0x8B, 0x37, 0x5B, 0x5F, 0x53, 0xB5, + 0x0, 0xFC, 0xF3, 0xA4, 0x88, 0x2D, 0xE8, 0x72, 0xFB, 0x5B, 0xC3, + 0xE9, 0xE1, 0xBF, 0xB0, 0xFF, 0xEB, 0x2, 0xB0, 0x0, 0x3A, 0x6, + 0x71, 0x0, 0xA2, 0x71, 0x0, 0x74, 0x3, 0xE8, 0x5E, 0x0, 0xE8, + 0x90, 0xBE, 0xC3, 0x53, 0xBE, 0x53, 0x6, 0xB9, 0xA, 0x0, 0xFE, + 0xC5, 0x56, 0xB0, 0x46, 0xE8, 0x8, 0xDB, 0x51, 0x8A, 0xDD, 0xB7, + 0x0, 0xE8, 0xAB, 0x14, 0xB0, 0x20, 0xE8, 0xFB, 0xDA, 0x59, 0x5E, + 0x56, 0x51, 0xFC, 0xAC, 0xA, 0xC0, 0x74, 0x5, 0xE8, 0x13, 0x0, + 0xEB, 0xF5, 0xB0, 0xD, 0xE8, 0xE7, 0xDA, 0x59, 0x5E, 0x83, 0xC6, + 0x10, 0xFE, 0xC9, 0x75, 0xCE, 0x5B, 0xEB, 0xC0, 0x56, 0x3C, 0xD, + 0x75, 0x2, 0xB0, 0x1B, 0xE8, 0xD1, 0xDA, 0x5E, 0xC3, 0x50, 0xA0, + 0x48, 0x0, 0x3C, 0x7, 0x74, 0x4, 0x3C, 0x4, 0x73, 0x2, 0x32, + 0xC0, 0xA, 0xC0, 0x58, 0xC3, 0x53, 0xCD, 0xAD, 0xB6, 0x18, 0xB2, + 0x0, 0x8A, 0x3E, 0x49, 0x0, 0xB4, 0x2, 0xCD, 0x10, 0xA0, 0x71, + 0x0, 0xA, 0xC0, 0x75, 0x13, 0x8A, 0x1E, 0x4F, 0x0, 0x8A, 0xE, + 0x29, 0x0, 0xB5, 0x0, 0xB4, 0x9, 0xCD, 0x10, 0xE8, 0xD, 0xFE, + 0x5B, 0xC3, 0xB3, 0x7, 0xE8, 0xC0, 0xFF, 0x75, 0x9, 0xA0, 0x4C, + 0x0, 0xA, 0xC0, 0x75, 0x2, 0xB3, 0x70, 0xBE, 0x53, 0x6, 0xB5, + 0x5, 0xA0, 0x29, 0x0, 0x3C, 0x28, 0xB0, 0x31, 0x74, 0x2, 0xB5, + 0xA, 0x50, 0x53, 0x8A, 0x1E, 0x4E, 0x0, 0xE8, 0x37, 0x0, 0x5B, + 0x56, 0xB1, 0x6, 0x51, 0xFC, 0xAC, 0xA, 0xC0, 0x9C, 0x56, 0x75, + 0x2, 0x32, 0xC0, 0xE8, 0x25, 0x0, 0x5E, 0x9D, 0x75, 0x1, 0x4E, + 0x59, 0xFE, 0xC9, 0x75, 0xE8, 0xE8, 0x16, 0x0, 0x5E, 0x83, 0xC6, + 0x10, 0x58, 0xFE, 0xC0, 0x3C, 0x3A, 0x72, 0x2, 0xB0, 0x30, 0xFE, + 0xCD, 0x75, 0xC7, 0xE8, 0xAF, 0xFD, 0x5B, 0xC3, 0x32, 0xC0, 0x53, + 0xA, 0xC0, 0x75, 0x6, 0xB0, 0x20, 0x8A, 0x1E, 0x4F, 0x0, 0x3C, + 0xD, 0x75, 0x2, 0xB0, 0x1B, 0x51, 0xB9, 0x1, 0x0, 0xB4, 0x9, + 0xCD, 0x10, 0xFE, 0xC2, 0xB4, 0x2, 0xCD, 0x10, 0x59, 0x5B, 0xC3, + 0x8A, 0xE, 0x49, 0x0, 0xB5, 0x0, 0x8A, 0x26, 0x48, 0x0, 0xF6, + 0xC4, 0x1, 0x74, 0x3, 0x80, 0xCD, 0x80, 0x80, 0xFC, 0x4, 0x72, + 0x9, 0xFE, 0xC5, 0x80, 0xFC, 0x6, 0x72, 0x2, 0xFE, 0xC5, 0x51, + 0x3C, 0x2C, 0x74, 0xC, 0xE8, 0x61, 0xCD, 0x59, 0x8A, 0xE8, 0x51, + 0xE8, 0x5C, 0xBD, 0x74, 0x40, 0xE8, 0x2D, 0xDC, 0x2C, 0x3C, 0x2C, + 0x74, 0x15, 0xE8, 0x4D, 0xCD, 0xA, 0xC0, 0x74, 0x2, 0xB0, 0x80, + 0x59, 0x80, 0xE5, 0x3, 0xA, 0xE8, 0x51, 0xE8, 0x3F, 0xBD, 0x74, + 0x23, 0xE8, 0x10, 0xDC, 0x2C, 0x3C, 0x2C, 0x74, 0xC, 0xE8, 0x30, + 0xCD, 0x59, 0x8A, 0xC8, 0x51, 0xE8, 0x2B, 0xBD, 0x74, 0xF, 0xE8, + 0xFC, 0xDB, 0x2C, 0xE8, 0x20, 0xCD, 0x8A, 0xF0, 0x59, 0xEB, 0x6, + 0xE9, 0x55, 0xBE, 0x59, 0x8A, 0xF1, 0x8A, 0x26, 0x29, 0x0, 0x8A, + 0xC5, 0x24, 0x7F, 0xA, 0xC0, 0x74, 0xA, 0x32, 0xD2, 0xA, 0xD6, + 0xA, 0xD1, 0x75, 0xE6, 0xEB, 0x1B, 0x80, 0xFC, 0x28, 0x74, 0xC, + 0x80, 0xFE, 0x4, 0x73, 0xDA, 0x80, 0xF9, 0x4, 0x72, 0xC, 0xEB, + 0xD3, 0x80, 0xFE, 0x8, 0x73, 0xCE, 0x80, 0xF9, 0x8, 0x73, 0xC9, + 0x8A, 0xD1, 0xA, 0xC0, 0x74, 0x20, 0x80, 0x3E, 0x48, 0x0, 0x7, + 0x74, 0x5C, 0xB1, 0x6, 0x3C, 0x2, 0xB4, 0x50, 0x74, 0x2A, 0xB4, + 0x28, 0xFE, 0xC9, 0xFE, 0xC8, 0x75, 0xAC, 0xF6, 0xC5, 0x80, 0x75, + 0x1D, 0xFE, 0xC9, 0xEB, 0x19, 0xB1, 0x2, 0x80, 0xFC, 0x28, 0x74, + 0x9, 0xF6, 0xC5, 0x80, 0x74, 0xD, 0xFE, 0xC1, 0xEB, 0x9, 0xFE, + 0xC9, 0xF6, 0xC5, 0x80, 0x75, 0x2, 0xFE, 0xC9, 0x88, 0x26, 0x29, + 0x0, 0xA1, 0x48, 0x0, 0x88, 0xE, 0x48, 0x0, 0x89, 0x16, 0x49, + 0x0, 0x3A, 0xC1, 0x74, 0x1A, 0xB8, 0x7, 0x0, 0xA3, 0x4B, 0x0, + 0x86, 0xC4, 0xA3, 0x4D, 0x0, 0x88, 0x26, 0x4F, 0x0, 0xE8, 0x3A, + 0xFE, 0x74, 0x3, 0xA2, 0x4F, 0x0, 0xE8, 0x6E, 0x0, 0xA0, 0x4A, + 0x0, 0xB4, 0x5, 0xCD, 0x10, 0xC3, 0x3A, 0x6, 0x29, 0x0, 0x74, + 0x34, 0x8A, 0x26, 0x48, 0x0, 0x3C, 0x50, 0x74, 0x7, 0x3C, 0x28, + 0x74, 0x3, 0xE9, 0x98, 0xBD, 0x80, 0xFC, 0x7, 0x75, 0x4, 0xB0, + 0x50, 0xEB, 0x1C, 0x80, 0xF4, 0x2, 0x80, 0xFC, 0x7, 0x75, 0x2, + 0xFE, 0xCC, 0x50, 0xA2, 0x29, 0x0, 0x88, 0x26, 0x48, 0x0, 0xC7, + 0x6, 0x49, 0x0, 0x0, 0x0, 0xE8, 0x2D, 0x0, 0x58, 0xC3, 0x53, + 0xE8, 0xDA, 0xFC, 0xB2, 0x27, 0x80, 0x3E, 0x29, 0x0, 0x28, 0x74, + 0x2, 0xB2, 0x4F, 0xB6, 0x18, 0x8A, 0x3E, 0x4F, 0x0, 0xB9, 0x0, + 0x0, 0x8A, 0xC1, 0xB4, 0x6, 0xCD, 0x10, 0xBA, 0x0, 0x0, 0x8A, + 0x3E, 0x49, 0x0, 0xB4, 0x2, 0xCD, 0x10, 0xEB, 0xF, 0x53, 0xB9, + 0x0, 0x0, 0x89, 0xE, 0x49, 0x0, 0xA0, 0x48, 0x0, 0xB4, 0x0, + 0xCD, 0x10, 0xE8, 0xBD, 0xDD, 0xE8, 0xC9, 0xF8, 0xE8, 0x8A, 0xF7, + 0xE8, 0x9D, 0xFC, 0x5B, 0xC3, 0xE8, 0xA4, 0xFD, 0x74, 0x5B, 0xB1, + 0x0, 0xBE, 0x51, 0x0, 0x80, 0x3E, 0x48, 0x0, 0x6, 0x75, 0x3, + 0xE9, 0x16, 0xBD, 0x8A, 0x2C, 0x56, 0x51, 0xE8, 0xD4, 0xBB, 0x74, + 0x40, 0x3C, 0x2C, 0x74, 0x7, 0xE8, 0xC9, 0xCB, 0x59, 0x8A, 0xE8, + 0x51, 0x59, 0x51, 0x53, 0x8A, 0xF9, 0x8A, 0xDD, 0x80, 0xFF, 0x0, + 0x75, 0x8, 0x80, 0xFB, 0x8, 0x72, 0x3, 0x80, 0xCB, 0x10, 0xB4, + 0xB, 0xCD, 0x10, 0x5B, 0xE8, 0xAB, 0xBB, 0x74, 0x3, 0xE8, 0xA5, + 0xBB, 0x59, 0x5E, 0x88, 0x2C, 0x74, 0x8, 0x46, 0xFE, 0xC1, 0x80, + 0xF9, 0x4, 0x72, 0xBD, 0xC6, 0x6, 0x4F, 0x0, 0x0, 0xC3, 0x59, + 0x5E, 0xC3, 0xFF, 0x36, 0x4D, 0x0, 0xFF, 0x36, 0x4B, 0x0, 0x3C, + 0x2C, 0x74, 0x10, 0xE8, 0x7E, 0xCB, 0x3C, 0x20, 0x73, 0x18, 0x59, + 0x8A, 0xC8, 0x51, 0xE8, 0x75, 0xBB, 0x74, 0x2C, 0xE8, 0x46, 0xDA, + 0x2C, 0x3C, 0x2C, 0x74, 0x13, 0xE8, 0x66, 0xCB, 0x3C, 0x10, 0x72, + 0x3, 0xE9, 0x9C, 0xBC, 0x59, 0x8A, 0xE8, 0x51, 0xE8, 0x5A, 0xBB, + 0x74, 0x11, 0xE8, 0x2B, 0xDA, 0x2C, 0xE8, 0x4F, 0xCB, 0x3C, 0x10, + 0x73, 0xE9, 0x59, 0x5A, 0x8A, 0xD0, 0x52, 0x51, 0x59, 0x5A, 0x8A, + 0xF1, 0x80, 0xE6, 0xF, 0x89, 0xE, 0x4B, 0x0, 0x8A, 0xC5, 0xD0, + 0xE0, 0x24, 0x10, 0xA, 0xC2, 0x80, 0xE5, 0x7, 0xD0, 0xE5, 0xD0, + 0xE5, 0xD0, 0xE5, 0xD0, 0xE5, 0xF6, 0xC1, 0x10, 0x74, 0x3, 0x80, + 0xCD, 0x80, 0xA, 0xEE, 0x53, 0x8A, 0xD8, 0xB7, 0x0, 0x24, 0xF, + 0xA2, 0x4D, 0x0, 0x88, 0x2E, 0x4E, 0x0, 0x88, 0x2E, 0x4F, 0x0, + 0xB4, 0xB, 0xCD, 0x10, 0x5B, 0xC3, 0xFF, 0x36, 0x56, 0x0, 0x3C, + 0x2C, 0x74, 0x20, 0xE8, 0xFA, 0xCA, 0xA, 0xC0, 0x74, 0x5B, 0x3C, + 0x1A, 0x73, 0x57, 0x8A, 0x26, 0x71, 0x0, 0xA, 0xE4, 0x74, 0x4, + 0x3C, 0x19, 0x73, 0x4B, 0x5A, 0x8A, 0xD0, 0x52, 0xE8, 0xE1, 0xBA, + 0x74, 0x7B, 0xE8, 0xB2, 0xD9, 0x2C, 0x3C, 0x2C, 0x74, 0x18, 0xE8, + 0xD2, 0xCA, 0xA, 0xC0, 0x74, 0x33, 0x8A, 0x26, 0x29, 0x0, 0x3A, + 0xE0, 0x72, 0x2B, 0x5A, 0x8A, 0xF0, 0x52, 0xE8, 0xC1, 0xBA, 0x74, + 0x5B, 0xFF, 0x36, 0x68, 0x0, 0xE8, 0x8E, 0xD9, 0x2C, 0x3C, 0x2C, + 0x74, 0x19, 0xE8, 0xAE, 0xCA, 0xA, 0xC0, 0xB0, 0x0, 0x75, 0x2, + 0xB0, 0x20, 0x59, 0xA, 0xE8, 0x51, 0xE8, 0xA1, 0xBA, 0x74, 0x2D, + 0xEB, 0x3, 0xE9, 0xD5, 0xBB, 0xE8, 0x6D, 0xD9, 0x2C, 0xE8, 0x91, + 0xCA, 0x3C, 0x20, 0x73, 0xF2, 0x59, 0x80, 0xE5, 0x20, 0xA, 0xE8, + 0x8A, 0xC8, 0x51, 0xE8, 0x83, 0xBA, 0x74, 0xF, 0xE8, 0x54, 0xD9, + 0x2C, 0xE8, 0x78, 0xCA, 0x3C, 0x20, 0x73, 0xD9, 0x59, 0x8A, 0xC8, + 0x51, 0x59, 0x51, 0x80, 0xE5, 0xF, 0x89, 0xE, 0x68, 0x0, 0x59, + 0xB4, 0x1, 0xCD, 0x10, 0x5A, 0x89, 0x16, 0x56, 0x0, 0x86, 0xF2, + 0xFE, 0xCE, 0xFE, 0xCA, 0x53, 0x8A, 0x3E, 0x49, 0x0, 0xB4, 0x2, + 0xCD, 0x10, 0x5B, 0xC3, 0x50, 0xB0, 0x0, 0xEB, 0x3, 0x50, 0xB0, + 0x20, 0x9C, 0x51, 0x53, 0x50, 0xE8, 0x3D, 0xFA, 0x58, 0x5B, 0x8B, + 0xE, 0x68, 0x0, 0xF6, 0x6, 0x72, 0x0, 0xFF, 0x74, 0x2, 0xB5, + 0x4, 0xA, 0xE8, 0xB4, 0x1, 0xCD, 0x10, 0x59, 0x9D, 0x58, 0xC3, + 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x9C, 0xE8, 0xC9, 0xFB, 0x74, + 0x4B, 0x53, 0x51, 0x52, 0x8C, 0xC6, 0xBF, 0x0, 0x0, 0x8E, 0xC7, + 0x26, 0xFF, 0x36, 0x7C, 0x0, 0x26, 0xFF, 0x36, 0x7E, 0x0, 0x26, + 0xC7, 0x6, 0x7C, 0x0, 0xF8, 0x54, 0x26, 0x8C, 0xE, 0x7E, 0x0, + 0x8E, 0xC6, 0xB0, 0x81, 0x2, 0x6, 0x72, 0x0, 0xB3, 0x83, 0x8A, + 0x3E, 0x49, 0x0, 0xB9, 0x1, 0x0, 0xB4, 0x9, 0xCD, 0x10, 0x8C, + 0xC6, 0xBF, 0x0, 0x0, 0x8E, 0xC7, 0x26, 0x8F, 0x6, 0x7E, 0x0, + 0x26, 0x8F, 0x6, 0x7C, 0x0, 0x8E, 0xC6, 0x5A, 0x59, 0x5B, 0x9D, + 0x58, 0xC3, 0xE8, 0xBD, 0xB9, 0xA0, 0x56, 0x0, 0xE9, 0x72, 0xF6, + 0xE8, 0xB4, 0xB9, 0xE8, 0x65, 0x0, 0xA, 0xEE, 0x75, 0x56, 0xA, + 0xEA, 0xA, 0xE9, 0x74, 0x50, 0x8A, 0x26, 0x29, 0x0, 0x3A, 0xE2, + 0x72, 0x48, 0x80, 0xF9, 0x1A, 0x73, 0x43, 0xA0, 0x71, 0x0, 0xA, + 0xC0, 0x74, 0x5, 0x80, 0xF9, 0x19, 0x73, 0x37, 0x53, 0x8A, 0xF1, + 0xFE, 0xCE, 0xFE, 0xCA, 0x8A, 0x3E, 0x49, 0x0, 0xB4, 0x2, 0xCD, + 0x10, 0xB4, 0x8, 0xCD, 0x10, 0x5B, 0x50, 0xE8, 0x77, 0xB9, 0x3C, + 0x2C, 0x74, 0x4, 0xB0, 0x0, 0xEB, 0x7, 0xE8, 0x42, 0xD8, 0x2C, + 0xE8, 0x66, 0xC9, 0x50, 0xE8, 0x3A, 0xD8, 0x29, 0x58, 0xA, 0xC0, + 0x58, 0x74, 0x2, 0x8A, 0xC4, 0xE9, 0x12, 0xF6, 0xE9, 0x90, 0xBA, + 0xE8, 0x5, 0x0, 0xE8, 0x25, 0xD8, 0x29, 0xC3, 0xE8, 0x20, 0xD8, + 0x28, 0xE8, 0x32, 0xC9, 0x52, 0xE8, 0x18, 0xD8, 0x2C, 0xE8, 0x2A, + 0xC9, 0x59, 0xC3, 0xE8, 0x38, 0xB9, 0x3C, 0x95, 0x74, 0x8, 0xE8, + 0x8, 0xD8, 0xDD, 0x32, 0xC0, 0xEB, 0x5, 0xE8, 0x29, 0xB9, 0xB0, + 0xFF, 0xA2, 0x34, 0x0, 0xC3, 0xA0, 0x34, 0x0, 0xA, 0xC0, 0x74, + 0x30, 0xE8, 0x1B, 0xC9, 0x3C, 0xA, 0x73, 0x29, 0x53, 0x56, 0xBA, + 0x1A, 0x56, 0x52, 0x32, 0xE4, 0xD1, 0xE0, 0x8B, 0xF0, 0x2E, 0xFF, + 0xB4, 0x1D, 0x56, 0xC3, 0x5E, 0x5B, 0xC3, 0x34, 0x56, 0x3F, 0x56, + 0x46, 0x56, 0x4C, 0x56, 0x6B, 0x56, 0x72, 0x56, 0x78, 0x56, 0x80, + 0x56, 0x88, 0x56, 0x90, 0x56, 0xE9, 0x25, 0xBA, 0xBB, 0x35, 0x0, + 0x8A, 0x7, 0xC6, 0x7, 0x0, 0xE9, 0x9F, 0xF5, 0x8B, 0x1E, 0x37, + 0x0, 0xE9, 0xC6, 0xE, 0xA0, 0x39, 0x0, 0xE9, 0x8C, 0xF5, 0xB4, + 0x4, 0xCD, 0x10, 0x50, 0xA, 0xE4, 0x74, 0xC, 0x89, 0x1E, 0x3A, + 0x0, 0x88, 0x2E, 0x3C, 0x0, 0x89, 0x16, 0x3F, 0x0, 0x58, 0x8A, + 0xC4, 0xFE, 0xC8, 0xF6, 0xD0, 0xE9, 0x73, 0xF5, 0x8B, 0x1E, 0x3A, + 0x0, 0xE9, 0x9A, 0xE, 0xA0, 0x3C, 0x0, 0xE9, 0x60, 0xF5, 0xA0, + 0x3E, 0x0, 0xFE, 0xC0, 0xE9, 0x58, 0xF5, 0xA0, 0x3D, 0x0, 0xFE, + 0xC0, 0xE9, 0x50, 0xF5, 0xA0, 0x40, 0x0, 0xFE, 0xC0, 0xE9, 0x48, + 0xF5, 0xA0, 0x3F, 0x0, 0xFE, 0xC0, 0xE9, 0x40, 0xF5, 0xE8, 0x84, + 0xC8, 0xA, 0xC0, 0x74, 0x12, 0x3C, 0x4, 0x73, 0x54, 0xB4, 0x0, + 0x53, 0xBB, 0x41, 0x0, 0x3, 0xD8, 0x8A, 0x7, 0x5B, 0xE9, 0x27, + 0xF5, 0x53, 0xBA, 0x1, 0x2, 0xB9, 0x1, 0x1, 0xBB, 0xF, 0x0, + 0xFA, 0xEE, 0xEC, 0x24, 0xF, 0x3A, 0xC3, 0xE1, 0xF9, 0xE3, 0xB, + 0x32, 0xC3, 0x8A, 0xE1, 0x50, 0xFE, 0xC7, 0x32, 0xD8, 0xEB, 0xEC, + 0xA, 0xFF, 0x74, 0x1A, 0x8A, 0xD7, 0xBB, 0x41, 0x0, 0xB9, 0x4, + 0x0, 0x58, 0xF6, 0xD4, 0x2, 0xE2, 0xD0, 0xE8, 0x73, 0x2, 0x88, + 0x27, 0x43, 0xE2, 0xF7, 0xFE, 0xCA, 0x75, 0xE8, 0xFB, 0x5B, 0xA0, + 0x41, 0x0, 0xE9, 0xE1, 0xF4, 0xE9, 0x5F, 0xB9, 0xE8, 0x20, 0xB8, + 0x3C, 0x95, 0x74, 0x8, 0xE8, 0xF0, 0xD6, 0xDD, 0x32, 0xC0, 0xEB, + 0x5, 0xE8, 0x11, 0xB8, 0xB0, 0xFF, 0xA2, 0x45, 0x0, 0xC3, 0xA0, + 0x45, 0x0, 0xA, 0xC0, 0x74, 0xDE, 0xE8, 0x3, 0xC8, 0x3C, 0x4, + 0x73, 0xD7, 0xA8, 0x1, 0x74, 0xE, 0xB4, 0x10, 0xFE, 0xC8, 0x74, + 0x2, 0xB4, 0x40, 0xE8, 0xD0, 0x0, 0xE9, 0xAC, 0xF4, 0x53, 0xBB, + 0x46, 0x0, 0xA, 0xC0, 0x74, 0x1, 0x43, 0x8A, 0x7, 0xC6, 0x7, + 0x0, 0x5B, 0xE9, 0x9A, 0xF4, 0x9C, 0x50, 0x55, 0x56, 0x57, 0x1E, + 0xBA, 0x0, 0x0, 0x8E, 0xDA, 0x8E, 0x1E, 0x10, 0x5, 0xA1, 0x66, + 0x0, 0xA, 0xC4, 0x74, 0x9, 0xFF, 0xE, 0x66, 0x0, 0x75, 0x3, + 0xE8, 0x27, 0x0, 0xA0, 0x34, 0x0, 0xA, 0xC0, 0x74, 0x3, 0xE8, + 0x36, 0x0, 0xA0, 0x45, 0x0, 0xA, 0xC0, 0x74, 0x3, 0xE8, 0x69, + 0x0, 0x1F, 0x5F, 0x5E, 0x5D, 0x58, 0x9D, 0xCF, 0xC6, 0x6, 0x65, + 0x0, 0x0, 0xA1, 0x66, 0x0, 0xB, 0xC0, 0x74, 0x18, 0x52, 0xFA, + 0xF6, 0x6, 0x65, 0x0, 0xFF, 0x75, 0x7, 0xBA, 0x61, 0x0, 0xEC, + 0x24, 0xFC, 0xEE, 0xC7, 0x6, 0x66, 0x0, 0x0, 0x0, 0xFB, 0x5A, + 0xC3, 0x53, 0x51, 0x52, 0xB4, 0x4, 0xCD, 0x10, 0x50, 0xA, 0xE4, + 0x74, 0xC, 0x89, 0x1E, 0x3A, 0x0, 0x88, 0x2E, 0x3C, 0x0, 0x89, + 0x16, 0x3F, 0x0, 0x58, 0xA0, 0x36, 0x0, 0x32, 0xC4, 0x74, 0x19, + 0xA, 0xE4, 0x88, 0x26, 0x36, 0x0, 0x74, 0x11, 0x89, 0x1E, 0x37, + 0x0, 0x88, 0x2E, 0x39, 0x0, 0x89, 0x16, 0x3D, 0x0, 0xB0, 0xFF, + 0xA2, 0x35, 0x0, 0x5A, 0x59, 0x5B, 0xC3, 0x53, 0xBB, 0x46, 0x0, + 0x80, 0x3F, 0x0, 0x75, 0x7, 0xB4, 0x10, 0xE8, 0x11, 0x0, 0x88, + 0x7, 0x43, 0x80, 0x3F, 0x0, 0x75, 0x7, 0xB4, 0x40, 0xE8, 0x4, + 0x0, 0x88, 0x7, 0x5B, 0xC3, 0x52, 0xBA, 0x1, 0x2, 0xEC, 0x22, + 0xC4, 0xFE, 0xC8, 0x98, 0x8A, 0xC4, 0x5A, 0xC3, 0xE8, 0x9, 0x0, + 0xB8, 0xD3, 0x5, 0xBA, 0x4, 0x0, 0x52, 0xEB, 0x38, 0x8B, 0x16, + 0x66, 0x0, 0xA, 0xF2, 0x74, 0x7, 0xC6, 0x6, 0x65, 0x0, 0xFF, + 0xEB, 0xF1, 0xC3, 0xE8, 0xDE, 0xC6, 0x83, 0xFA, 0x25, 0x72, 0x12, + 0x52, 0xE8, 0xBF, 0xD5, 0x2C, 0xE8, 0x71, 0xCA, 0x59, 0x52, 0xB, + 0xD2, 0x75, 0x7, 0x5A, 0xE9, 0x3B, 0xFF, 0xE9, 0x13, 0xB8, 0xE8, + 0xD0, 0xFF, 0xBA, 0x12, 0x0, 0xB8, 0xDC, 0x34, 0xF7, 0xF1, 0xF6, + 0x6, 0x65, 0x0, 0xFF, 0x75, 0x8, 0x50, 0xBA, 0x43, 0x0, 0xB0, + 0xB6, 0xEE, 0x58, 0xBA, 0x42, 0x0, 0xEE, 0x8A, 0xC4, 0xEE, 0x75, + 0x7, 0xBA, 0x61, 0x0, 0xEC, 0xC, 0x3, 0xEE, 0x5A, 0x89, 0x16, + 0x66, 0x0, 0xC6, 0x6, 0x65, 0x0, 0x0, 0xC3, 0xA, 0x5A, 0x4D, + 0x41, 0x59, 0x10, 0x59, 0x10, 0x19, 0x5A, 0x59, 0x10, 0x59, 0x10, + 0x59, 0x10, 0x59, 0x10, 0x2D, 0x5A, 0x59, 0x10, 0x34, 0x5A, 0x4D, + 0x41, 0x59, 0x10, 0x45, 0x5A, 0x59, 0x10, 0x59, 0x10, 0x59, 0x10, + 0x59, 0x10, 0x59, 0x10, 0x59, 0x10, 0x5D, 0x5A, 0x63, 0x5A, 0x4D, + 0x41, 0x59, 0x10, 0x7C, 0x5A, 0x59, 0x10, 0x59, 0x10, 0x59, 0x10, + 0x59, 0x10, 0x59, 0x10, 0x59, 0x10, 0xAA, 0x5A, 0xB1, 0x5A, 0x6E, + 0x5B, 0x59, 0x10, 0xAB, 0x5B, 0xF0, 0x5B, 0x59, 0x10, 0x59, 0x10, + 0x6C, 0x5C, 0x59, 0x10, 0x76, 0x5C, 0x59, 0x10, 0x22, 0xC2, 0x75, + 0x22, 0x9C, 0x50, 0x53, 0x89, 0x1E, 0xE9, 0x4, 0x88, 0x17, 0x83, + 0xC3, 0x2D, 0xC6, 0x7, 0x0, 0x43, 0x43, 0x88, 0x2F, 0x43, 0xC6, + 0x7, 0x0, 0x43, 0x88, 0xF, 0x43, 0xC6, 0x7, 0x0, 0x5B, 0x58, + 0x9D, 0xC3, 0xE9, 0x98, 0xAE, 0x58, 0x5B, 0xC3, 0x80, 0xFA, 0x80, + 0x75, 0x2, 0xB2, 0x2, 0xC3, 0x58, 0x86, 0xC4, 0x9E, 0x59, 0x5A, + 0x5B, 0xC3, 0x5A, 0x5B, 0x59, 0xC3, 0x83, 0xC3, 0x2E, 0x8A, 0x7, + 0xF6, 0xD0, 0xC3, 0x8B, 0x1E, 0xE9, 0x4, 0x83, 0xC3, 0x2B, 0xC3, + 0x8B, 0x1E, 0xE9, 0x4, 0x83, 0xC3, 0x32, 0xC3, 0x8B, 0x1E, 0xE9, + 0x4, 0x8A, 0x87, 0x2F, 0x0, 0xC3, 0x56, 0x57, 0x51, 0xC6, 0x6, + 0x3F, 0x5, 0xA5, 0xBE, 0xF0, 0x4, 0xBF, 0x40, 0x5, 0xB9, 0x8, + 0x0, 0xFC, 0xA4, 0xE2, 0xFD, 0x59, 0x5F, 0x5E, 0xC3, 0x53, 0x51, + 0xBB, 0x40, 0x5, 0xB1, 0x8, 0x80, 0x3F, 0x20, 0x75, 0xD, 0x43, + 0xFE, 0xC9, 0x75, 0xF6, 0xBE, 0x5C, 0x5, 0xBF, 0x48, 0x5, 0xEB, + 0x10, 0xBE, 0x54, 0x5, 0xBF, 0x40, 0x5, 0xB1, 0x8, 0xFC, 0xA6, + 0x75, 0x27, 0xFE, 0xC9, 0x75, 0xF9, 0x8A, 0x5, 0x3A, 0x4, 0x74, + 0x9, 0xA, 0xC0, 0x75, 0x19, 0xF6, 0x4, 0x1, 0x75, 0x14, 0x8A, + 0x4, 0x8B, 0x1E, 0xE9, 0x4, 0x88, 0x87, 0x31, 0x0, 0xBB, 0xF4, + 0x59, 0xE8, 0xE, 0x0, 0x32, 0xC0, 0xEB, 0x7, 0xBB, 0xFE, 0x59, + 0xE8, 0x4, 0x0, 0xF9, 0x59, 0x5B, 0xC3, 0x53, 0x8B, 0x1E, 0x2E, + 0x0, 0x43, 0xB, 0xDB, 0x74, 0x2, 0x5B, 0xC3, 0xBB, 0x53, 0x5, + 0x53, 0x43, 0xB1, 0x8, 0x8A, 0x7, 0xE8, 0xD5, 0xF4, 0x43, 0xFE, + 0xC9, 0x75, 0xF6, 0xB0, 0x2E, 0xE8, 0xCB, 0xF4, 0x5B, 0x83, 0xC3, + 0x9, 0xB0, 0x44, 0xF6, 0x7, 0xE1, 0x74, 0x17, 0xB0, 0x50, 0xF6, + 0x7, 0x20, 0x75, 0x10, 0xB0, 0x42, 0xF6, 0x7, 0x80, 0x75, 0x9, + 0xB0, 0x41, 0xF6, 0x7, 0x40, 0x75, 0x2, 0xB0, 0x4D, 0x5B, 0xE8, + 0xA5, 0xF4, 0x2E, 0x8A, 0x7, 0x43, 0xA, 0xC0, 0x75, 0xF5, 0xC3, + 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xFF, 0xD, 0x0, 0x20, + 0x53, 0x6B, 0x69, 0x70, 0x70, 0x65, 0x64, 0x2E, 0xFF, 0xD, 0x0, + 0xB9, 0x0, 0x0, 0x88, 0xE, 0x52, 0x5, 0xB0, 0xEA, 0xE8, 0xBD, + 0xFE, 0xE9, 0xE3, 0xFE, 0xBB, 0x52, 0x5, 0x8A, 0x7, 0xC6, 0x7, + 0x0, 0xA, 0xC0, 0x75, 0x5, 0xE8, 0x46, 0xF3, 0xA, 0xC0, 0xE9, + 0xE2, 0xFE, 0x88, 0xE, 0x52, 0x5, 0xE9, 0xA3, 0xEB, 0xE8, 0xC8, + 0xFE, 0x8A, 0x2E, 0x29, 0x0, 0xB1, 0x0, 0xB0, 0xED, 0xE8, 0x91, + 0xFE, 0xE9, 0xB7, 0xFE, 0x58, 0x50, 0x86, 0xC4, 0xE8, 0x44, 0xF4, + 0x8A, 0xE, 0x57, 0x0, 0xFE, 0xC9, 0x8B, 0x1E, 0xE9, 0x4, 0x88, + 0x8F, 0x32, 0x0, 0xE9, 0xAA, 0xFE, 0x58, 0x86, 0xC4, 0xE9, 0x49, + 0xF8, 0x8A, 0x2E, 0x62, 0x0, 0xB1, 0x0, 0xE8, 0x93, 0xFE, 0xB0, + 0x6D, 0xE8, 0x62, 0xFE, 0xE8, 0xAF, 0xFE, 0xA0, 0x63, 0x0, 0x88, + 0x7, 0xE9, 0x80, 0xFE, 0x58, 0x50, 0x86, 0xC4, 0xE8, 0x3, 0x0, + 0xE9, 0x81, 0xFE, 0xE8, 0x6A, 0xF5, 0xBB, 0x63, 0x0, 0x3C, 0xD, + 0x75, 0x3, 0xE9, 0xE4, 0x4, 0x3C, 0x20, 0x73, 0x1, 0xC3, 0xFE, + 0x7, 0x53, 0xE8, 0x8D, 0xFE, 0x5B, 0xFE, 0xC0, 0x74, 0xF4, 0xFE, + 0xC8, 0x38, 0x7, 0xE9, 0xC5, 0x4, 0x58, 0x86, 0xC4, 0xA2, 0x62, + 0x0, 0xC3, 0xA0, 0x61, 0x0, 0xA, 0xC0, 0x74, 0x3, 0xE9, 0xE8, + 0xAC, 0x80, 0xE2, 0xFB, 0x75, 0x2, 0xB2, 0x1, 0xA2, 0x51, 0x5, + 0xFE, 0xC0, 0xA2, 0x50, 0x5, 0x8A, 0xCA, 0x80, 0xE1, 0x80, 0x80, + 0xE9, 0x1, 0xF5, 0x1A, 0xC9, 0x80, 0xE1, 0x80, 0xF6, 0xC2, 0x10, + 0x74, 0x3, 0x80, 0xC9, 0x20, 0xA0, 0x60, 0x0, 0xA, 0xC0, 0x74, + 0x2, 0xB1, 0x1, 0xA, 0xC9, 0x75, 0x9, 0xF6, 0x6, 0x5F, 0x0, + 0xFF, 0x74, 0x2, 0xB1, 0x40, 0x88, 0xE, 0x48, 0x5, 0xB5, 0xFF, + 0xB0, 0x68, 0xE8, 0xD2, 0xFD, 0x8A, 0x27, 0xE8, 0x2E, 0xFE, 0xF6, + 0xC4, 0x1, 0x75, 0xC, 0xF6, 0xC1, 0x81, 0x75, 0x3, 0xE8, 0x2F, + 0x0, 0xB0, 0xFF, 0xEB, 0x1F, 0xE8, 0x33, 0x0, 0xE8, 0x30, 0xFE, + 0x72, 0xF8, 0x8B, 0x1E, 0xE9, 0x4, 0xF6, 0x87, 0x31, 0x0, 0x81, + 0x75, 0xA, 0xE8, 0x11, 0x1, 0x73, 0x5, 0xC6, 0x6, 0x50, 0x5, + 0x0, 0xB0, 0x1, 0xA2, 0x61, 0x0, 0xE8, 0xE7, 0xFD, 0xC6, 0x7, + 0x1, 0xE9, 0xBA, 0xFD, 0xBB, 0x3F, 0x5, 0xB9, 0x11, 0x0, 0xB4, + 0x3, 0xCD, 0x15, 0xC3, 0xBB, 0x53, 0x5, 0xB9, 0x11, 0x0, 0x53, + 0xB4, 0x2, 0xCD, 0x15, 0x73, 0x3, 0xE9, 0x2, 0x1, 0x5B, 0xA0, + 0x5E, 0x0, 0xA, 0xC0, 0x75, 0x6, 0x80, 0x3F, 0xA5, 0x75, 0xE6, + 0xC3, 0xE9, 0x29, 0xAC, 0xA0, 0x61, 0x0, 0xFE, 0xC0, 0x74, 0xB, + 0x32, 0xC0, 0xA2, 0x61, 0x0, 0xA2, 0x60, 0x0, 0xE9, 0xCD, 0xE5, + 0x8B, 0x1E, 0xE9, 0x4, 0xF6, 0x87, 0x31, 0x0, 0x81, 0x75, 0xEA, + 0xE8, 0x3B, 0x0, 0xE8, 0x1F, 0x1, 0xEB, 0xE2, 0x53, 0xBB, 0x61, + 0x0, 0x38, 0x27, 0x75, 0xD, 0x8B, 0x1E, 0xE9, 0x4, 0xF6, 0x87, + 0x31, 0x0, 0x81, 0x5B, 0x75, 0x1, 0xC3, 0xE9, 0xE9, 0xAB, 0xB4, + 0xFF, 0xE8, 0xE3, 0xFF, 0x58, 0x50, 0x86, 0xC4, 0xE8, 0x3, 0x0, + 0xE9, 0x4D, 0xFD, 0xE8, 0x26, 0x0, 0x88, 0x7, 0xFE, 0xC1, 0x74, + 0xB, 0xE8, 0x5D, 0xFD, 0x88, 0xF, 0xC3, 0xE8, 0x57, 0xFD, 0x8A, + 0xF, 0xBB, 0x53, 0x5, 0xB5, 0x0, 0xFE, 0xC9, 0x41, 0x88, 0xF, + 0xB4, 0x3, 0xCD, 0x15, 0xE8, 0x44, 0xFD, 0xC6, 0x7, 0x1, 0xC3, + 0xE8, 0x3D, 0xFD, 0x8A, 0xF, 0xB5, 0x0, 0xBB, 0x53, 0x5, 0x3, + 0xD9, 0xC3, 0xB4, 0x1, 0xE8, 0x9E, 0xFF, 0xE8, 0x3, 0x0, 0xE9, + 0x14, 0xFD, 0xA0, 0x50, 0x5, 0x2C, 0x1, 0x73, 0x1, 0xC3, 0xBB, + 0x51, 0x5, 0x8A, 0x7, 0xC6, 0x7, 0x0, 0xA, 0xC0, 0x74, 0x1, + 0xC3, 0xE8, 0xA, 0x0, 0x73, 0x7, 0xC6, 0x6, 0x50, 0x5, 0x0, + 0xA, 0xC0, 0xC3, 0xE8, 0xC3, 0xFF, 0x8A, 0x7, 0xFE, 0xC1, 0xE8, + 0xFC, 0xFC, 0x88, 0xF, 0xE8, 0xEF, 0xFC, 0x3A, 0xF, 0x74, 0x3, + 0xA, 0xC0, 0xC3, 0x80, 0x3F, 0x0, 0x75, 0xDD, 0x50, 0xE8, 0x2, + 0x0, 0x58, 0xC3, 0xBB, 0x53, 0x5, 0xB9, 0x0, 0x1, 0xB4, 0x2, + 0xCD, 0x15, 0x72, 0x15, 0xA0, 0x53, 0x5, 0xE8, 0xCB, 0xFC, 0x88, + 0x7, 0xE8, 0xCE, 0xFC, 0xC6, 0x7, 0x1, 0xFE, 0xC8, 0xF9, 0x74, + 0x1, 0xF8, 0xC3, 0x80, 0xFC, 0x4, 0x75, 0x5, 0xB2, 0x18, 0xE9, + 0x6F, 0xAB, 0xE9, 0x25, 0xAB, 0xA0, 0x50, 0x5, 0x2C, 0x1, 0x1A, + 0xC0, 0xE9, 0x93, 0x8, 0x88, 0xE, 0x51, 0x5, 0xE9, 0x5A, 0xE9, + 0xC6, 0x6, 0x5F, 0x0, 0x0, 0x53, 0x89, 0x1E, 0x4D, 0x5, 0x8B, + 0x16, 0x50, 0x3, 0x89, 0x16, 0x4B, 0x5, 0x8B, 0xE, 0x4, 0x7, + 0x2B, 0xCB, 0x89, 0xE, 0x49, 0x5, 0x51, 0x52, 0xE8, 0xA4, 0xFE, + 0x5A, 0x59, 0x5B, 0xA0, 0x60, 0x0, 0xA, 0xC0, 0x6, 0x74, 0x2, + 0x8E, 0xC2, 0xB4, 0x3, 0xCD, 0x15, 0x7, 0xE8, 0x89, 0x0, 0xBA, + 0x5, 0x0, 0xB9, 0x0, 0x0, 0x49, 0x75, 0xFD, 0x4A, 0x75, 0xFA, + 0xE8, 0x76, 0x0, 0xC3, 0xBE, 0x53, 0x5, 0x8B, 0x8C, 0xA, 0x0, + 0xA0, 0x60, 0x0, 0xA, 0xC0, 0x9C, 0x51, 0x75, 0xD, 0x50, 0x53, + 0x51, 0x56, 0x3, 0xD9, 0xE8, 0x16, 0xE6, 0x5E, 0x59, 0x5B, 0x58, + 0x3C, 0x1, 0x75, 0x4, 0x8B, 0x9C, 0xE, 0x0, 0x6, 0xA, 0xC0, + 0x74, 0xE, 0x8B, 0x94, 0xC, 0x0, 0xFE, 0xC8, 0x74, 0x4, 0x8B, + 0x16, 0x50, 0x3, 0x8E, 0xC2, 0xB4, 0x2, 0xCD, 0x15, 0x7, 0x72, + 0x12, 0x59, 0x9D, 0x75, 0xB, 0x8B, 0x1E, 0x30, 0x0, 0x3, 0xD9, + 0x43, 0x89, 0x1E, 0x58, 0x3, 0xE9, 0x80, 0xE5, 0x50, 0xE8, 0x5, + 0xD0, 0x58, 0x80, 0xFC, 0x4, 0x75, 0x5, 0xB2, 0x18, 0xE9, 0xB5, + 0xAA, 0xE9, 0x6B, 0xAA, 0x4B, 0xE8, 0xF3, 0xB1, 0x75, 0x5, 0xA0, + 0x64, 0x0, 0xEB, 0x3, 0xE8, 0xE8, 0xC1, 0xA, 0xC0, 0x75, 0x4, + 0xB0, 0x1, 0xEB, 0x2, 0xB0, 0x0, 0xA2, 0x64, 0x0, 0x8A, 0xE0, + 0xCD, 0x15, 0xC3, 0xCD, 0xDB, 0xF9, 0xEB, 0x1, 0xF8, 0x8B, 0xF3, + 0x9C, 0x8B, 0xE, 0xA5, 0x4, 0x8A, 0xC3, 0x32, 0xC1, 0xA2, 0xA7, + 0x4, 0x8A, 0xC7, 0x32, 0xE4, 0x8A, 0xDD, 0x32, 0xFF, 0x9D, 0x73, + 0x7, 0x3, 0xC3, 0x2D, 0x1, 0x1, 0xEB, 0x2, 0x2B, 0xC3, 0xA, + 0xE4, 0x78, 0xD, 0x3D, 0x80, 0x0, 0x72, 0x15, 0x8B, 0xDE, 0x83, + 0xC4, 0x2, 0xE9, 0x5D, 0x17, 0x5, 0x80, 0x0, 0x79, 0xB, 0x8B, + 0xDE, 0x83, 0xC4, 0x2, 0xE9, 0xDF, 0x1D, 0x5, 0x80, 0x0, 0xA2, + 0xA6, 0x4, 0xBB, 0xA5, 0x4, 0x80, 0xF, 0x80, 0x8B, 0xDE, 0x32, + 0xFF, 0x80, 0xCB, 0x80, 0xC3, 0xC6, 0x6, 0x39, 0x3, 0x80, 0xE8, + 0xC6, 0xD9, 0x53, 0x8B, 0xDA, 0xE8, 0xEA, 0x6, 0xE8, 0x4, 0xC5, + 0x89, 0x1E, 0x5E, 0x4, 0xB1, 0x20, 0xE8, 0x1B, 0xCF, 0x5B, 0xE8, + 0x60, 0xB1, 0x74, 0x17, 0xE8, 0x31, 0xD0, 0x28, 0xE8, 0xA7, 0xD9, + 0x52, 0x8A, 0x7, 0x3C, 0x2C, 0x75, 0x5, 0xE8, 0x4C, 0xB1, 0xEB, + 0xF1, 0xE8, 0x1E, 0xD0, 0x29, 0x89, 0x1E, 0x3B, 0x3, 0xE, 0xB8, + 0xE9, 0x5D, 0x50, 0xFF, 0x36, 0x50, 0x3, 0xFF, 0x36, 0x5E, 0x4, + 0xCB, 0x8B, 0x1E, 0x3B, 0x3, 0xC3, 0x53, 0xE8, 0xE, 0x5, 0x3C, + 0x6C, 0x74, 0xA, 0x3C, 0x4C, 0x74, 0x6, 0x3C, 0x71, 0x74, 0x2, + 0x3C, 0x51, 0x5B, 0xC3, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x25, 0x25, 0x25, 0x24, + 0x24, 0x24, 0x23, 0x23, 0x23, 0x22, 0x22, 0x22, 0x22, 0x21, 0x21, + 0x21, 0x20, 0x20, 0x20, 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, + 0x1D, 0x1D, 0x1D, 0x1D, 0x1C, 0x1C, 0x1C, 0x1B, 0x1B, 0x1B, 0x1A, + 0x1A, 0x1A, 0x19, 0x19, 0x19, 0x19, 0x18, 0x18, 0x18, 0x17, 0x17, + 0x17, 0x17, 0x16, 0x16, 0x16, 0x16, 0x15, 0x15, 0x15, 0x14, 0x14, + 0x14, 0x13, 0x13, 0x13, 0x13, 0x12, 0x12, 0x12, 0x11, 0x11, 0x11, + 0x10, 0x10, 0x10, 0x10, 0xF, 0xF, 0xF, 0xE, 0xE, 0xE, 0xD, + 0xD, 0xD, 0xD, 0xC, 0xC, 0xC, 0xB, 0xB, 0xB, 0xA, 0xA, + 0xA, 0xA, 0x9, 0x9, 0x9, 0x8, 0x8, 0x8, 0x7, 0x7, 0x7, + 0x6, 0x6, 0x6, 0x6, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x3, + 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFD, 0xFD, 0xFD, + 0xFD, 0xFC, 0xFC, 0xFC, 0xFB, 0xFB, 0xFB, 0xFA, 0xFA, 0xFA, 0xFA, + 0xF9, 0xF9, 0xF9, 0xF8, 0xF8, 0xF8, 0xF7, 0xF7, 0xF7, 0xF7, 0xF6, + 0xF6, 0xF6, 0xF5, 0xF5, 0xF5, 0xF4, 0xF4, 0xF4, 0xF4, 0xF3, 0xF3, + 0xF3, 0xF2, 0xF2, 0xF2, 0xF1, 0xF1, 0xF1, 0xF1, 0xF0, 0xF0, 0xF0, + 0xEF, 0xEF, 0xEF, 0xEE, 0xEE, 0xEE, 0xEE, 0xED, 0xED, 0xED, 0xEC, + 0xEC, 0xEC, 0xEB, 0xEB, 0xEB, 0xEB, 0xEA, 0xEA, 0xEA, 0xE9, 0xE9, + 0xE9, 0xE8, 0xE8, 0xE8, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, 0xE6, 0xE6, + 0xE5, 0xE5, 0xE5, 0xE4, 0xE4, 0xE4, 0xE4, 0xE3, 0xE3, 0xE3, 0xE2, + 0xE2, 0xE2, 0xE1, 0xE1, 0xE1, 0xE1, 0xE0, 0xB, 0xF6, 0x79, 0x2, + 0xF7, 0xDA, 0x2B, 0xD7, 0x70, 0x3D, 0x74, 0x3A, 0x53, 0xE8, 0x90, + 0x1C, 0x9C, 0x73, 0x3, 0xE8, 0x6A, 0xC, 0xB, 0xD2, 0x78, 0xF, + 0x83, 0xFA, 0x27, 0x72, 0x1D, 0x9D, 0x73, 0x3, 0xE8, 0x3D, 0xC, + 0x5B, 0xE9, 0xB1, 0x15, 0x83, 0xFA, 0xDA, 0x7D, 0xE, 0x83, 0xC2, + 0x26, 0x83, 0xFA, 0xDA, 0x7C, 0x11, 0xE8, 0x13, 0x0, 0xBA, 0xDA, + 0xFF, 0xE8, 0xD, 0x0, 0x9D, 0x73, 0x3, 0xE8, 0x1D, 0xC, 0x5B, + 0xC3, 0xE8, 0x1F, 0x1C, 0xEB, 0xF3, 0xB, 0xD2, 0x9C, 0x79, 0x2, + 0xF7, 0xDA, 0xB9, 0x3, 0x0, 0xD3, 0xE2, 0x81, 0xC2, 0x32, 0x60, + 0x87, 0xDA, 0xE8, 0x25, 0x1D, 0x9D, 0x78, 0x3, 0xE9, 0xEC, 0xC, + 0xE8, 0xEC, 0x1C, 0xE9, 0xD4, 0x8, 0x72, 0x9, 0xB0, 0xD, 0x90, + 0xE9, 0xF, 0xFB, 0xC6, 0x7, 0x0, 0x8A, 0x7, 0xE8, 0xA4, 0xF9, + 0x88, 0x7, 0xC3, 0x75, 0x6, 0xB0, 0xA, 0x90, 0xE8, 0x69, 0xF0, + 0x58, 0x5A, 0x5B, 0x9D, 0xC3, 0x80, 0x3E, 0x6A, 0x0, 0x0, 0x74, + 0x12, 0x1E, 0x53, 0xC5, 0x1E, 0x6B, 0x0, 0x80, 0x3F, 0x0, 0x5B, + 0x1F, 0x75, 0x5, 0xC6, 0x6, 0x6A, 0x0, 0x0, 0xE9, 0x72, 0xAF, + 0x5F, 0x5E, 0xE9, 0xBE, 0xED, 0x75, 0x10, 0x5B, 0x88, 0x36, 0xA7, + 0x4, 0xBB, 0x0, 0x10, 0xC6, 0x6, 0xFB, 0x2, 0x4, 0xE9, 0x28, + 0x15, 0xC7, 0x6, 0xA5, 0x4, 0x0, 0x0, 0xC3, 0x10, 0x5B, 0x88, + 0x36, 0xA7, 0x4, 0xBB, 0x0, 0x10, 0xC6, 0x6, 0xFB, 0x2, 0x4, + 0xE9, 0x10, 0x15, 0xC7, 0x6, 0xA5, 0x4, 0x0, 0x0, 0xC3, 0x5C, + 0xD6, 0xED, 0xBD, 0xCE, 0xFE, 0xE6, 0x5B, 0x5F, 0xA6, 0xB4, 0x36, + 0x41, 0x5F, 0x70, 0x9, 0x63, 0xCF, 0x61, 0x84, 0x11, 0x77, 0xCC, + 0x2B, 0x66, 0x43, 0x7A, 0xE5, 0xD5, 0x94, 0xBF, 0x56, 0x69, 0x6A, + 0x6C, 0xAF, 0x5, 0xBD, 0x37, 0x6, 0x6D, 0x85, 0x47, 0x1B, 0x47, + 0xAC, 0xC5, 0x27, 0x70, 0x66, 0x19, 0xE2, 0x58, 0x17, 0xB7, 0x51, + 0x73, 0xE0, 0x4F, 0x8D, 0x97, 0x6E, 0x12, 0x3, 0x77, 0xD8, 0xA3, + 0x70, 0x3D, 0xA, 0xD7, 0x23, 0x7A, 0xCD, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0x4C, 0x7D, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x81, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x84, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x48, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x7A, 0x8A, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x1C, 0x8E, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x50, 0x43, 0x91, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x24, 0x74, 0x94, 0x0, 0x0, 0x0, 0x0, 0x80, 0x96, 0x18, + 0x98, 0x0, 0x0, 0x0, 0x0, 0x20, 0xBC, 0x3E, 0x9B, 0x0, 0x0, + 0x0, 0x0, 0x28, 0x6B, 0x6E, 0x9E, 0x0, 0x0, 0x0, 0x0, 0xF9, + 0x2, 0x15, 0xA2, 0x0, 0x0, 0x0, 0x40, 0xB7, 0x43, 0x3A, 0xA5, + 0x0, 0x0, 0x0, 0x10, 0xA5, 0xD4, 0x68, 0xA8, 0x0, 0x0, 0x0, + 0x2A, 0xE7, 0x84, 0x11, 0xAC, 0x0, 0x0, 0x80, 0xF4, 0x20, 0xE6, + 0x35, 0xAF, 0x0, 0x0, 0xA0, 0x31, 0xA9, 0x5F, 0x63, 0xB2, 0x0, + 0x0, 0x4, 0xBF, 0xC9, 0x1B, 0xE, 0xB6, 0x0, 0x0, 0xC5, 0x2E, + 0xBC, 0xA2, 0x31, 0xB9, 0x0, 0x40, 0x76, 0x3A, 0x6B, 0xB, 0x5E, + 0xBC, 0x0, 0xE8, 0x89, 0x4, 0x23, 0xC7, 0xA, 0xC0, 0x0, 0x62, + 0xAC, 0xC5, 0xEB, 0x78, 0x2D, 0xC3, 0x80, 0x7A, 0x17, 0xB7, 0x26, + 0xD7, 0x58, 0xC6, 0x90, 0xAC, 0x6E, 0x32, 0x78, 0x86, 0x7, 0xCA, + 0xB5, 0x57, 0xA, 0x3F, 0x16, 0x68, 0x29, 0xCD, 0xA2, 0xED, 0xCC, + 0xCE, 0x1B, 0xC2, 0x53, 0xD0, 0x85, 0x14, 0x40, 0x61, 0x51, 0x59, + 0x4, 0xD4, 0xA6, 0x19, 0x90, 0xB9, 0xA5, 0x6F, 0x25, 0xD7, 0x10, + 0x20, 0xF4, 0x27, 0x8F, 0xCB, 0x4E, 0xDA, 0xA, 0x94, 0xF8, 0x78, + 0x39, 0x3F, 0x1, 0xDE, 0xC, 0xB9, 0x36, 0xD7, 0x7, 0x8F, 0x21, + 0xE1, 0x4F, 0x67, 0x4, 0xCD, 0xC9, 0xF2, 0x49, 0xE4, 0x23, 0x81, + 0x45, 0x40, 0x7C, 0x6F, 0x7C, 0xE7, 0xB6, 0x70, 0x2B, 0xA8, 0xAD, + 0xC5, 0x1D, 0xEB, 0xE4, 0x4C, 0x36, 0x12, 0x19, 0x37, 0x45, 0xEE, + 0x1C, 0xE0, 0xC3, 0x56, 0xDF, 0x84, 0x76, 0xF1, 0x12, 0x6C, 0x3A, + 0x96, 0xB, 0x13, 0x1A, 0xF5, 0x16, 0x7, 0xC9, 0x7B, 0xCE, 0x97, + 0x40, 0xF8, 0xDC, 0x48, 0xBB, 0x1A, 0xC2, 0xBD, 0x70, 0xFB, 0x89, + 0xD, 0xB5, 0x50, 0x99, 0x76, 0x16, 0xFF, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x80, 0xF1, 0x4, 0x35, 0x80, 0x4, 0x9A, 0xF7, + 0x19, 0x83, 0x24, 0x63, 0x43, 0x83, 0x75, 0xCD, 0x8D, 0x84, 0xA9, + 0x7F, 0x83, 0x82, 0x4, 0x0, 0x0, 0x0, 0x81, 0xE2, 0xB0, 0x4D, + 0x83, 0xA, 0x72, 0x11, 0x83, 0xF4, 0x4, 0x35, 0x7F, 0x18, 0x72, + 0x31, 0x80, 0x2E, 0x65, 0x45, 0x25, 0x23, 0x21, 0x44, 0x64, 0x2C, + 0x30, 0x0, 0x80, 0xC6, 0xA4, 0x7E, 0x8D, 0x3, 0x0, 0x40, 0x7A, + 0x10, 0xF3, 0x5A, 0x0, 0x0, 0xA0, 0x72, 0x4E, 0x18, 0x9, 0x0, + 0x0, 0x10, 0xA5, 0xD4, 0xE8, 0x0, 0x0, 0x0, 0xE8, 0x76, 0x48, + 0x17, 0x0, 0x0, 0x0, 0xE4, 0xB, 0x54, 0x2, 0x0, 0x0, 0x0, + 0xCA, 0x9A, 0x3B, 0x0, 0x0, 0x0, 0x0, 0xE1, 0xF5, 0x5, 0x0, + 0x0, 0x0, 0x80, 0x96, 0x98, 0x0, 0x0, 0x0, 0x0, 0x40, 0x42, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x40, 0x42, 0xF, 0xA0, 0x86, 0x1, + 0x10, 0x27, 0x0, 0x10, 0x27, 0xE8, 0x3, 0x64, 0x0, 0xA, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x80, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3B, 0xAA, 0x38, 0x81, 0x7, 0x7C, 0x88, 0x59, 0x74, 0xE0, 0x97, + 0x26, 0x77, 0xC4, 0x1D, 0x1E, 0x7A, 0x5E, 0x50, 0x63, 0x7C, 0x1A, + 0xFE, 0x75, 0x7E, 0x18, 0x72, 0x31, 0x80, 0x0, 0x0, 0x0, 0x81, + 0x5, 0xFB, 0xD7, 0x1E, 0x86, 0x65, 0x26, 0x99, 0x87, 0x58, 0x34, + 0x23, 0x87, 0xE1, 0x5D, 0xA5, 0x86, 0xDB, 0xF, 0x49, 0x83, 0x2, + 0xD7, 0xB3, 0x5D, 0x81, 0x0, 0x0, 0x80, 0x81, 0x4, 0x62, 0x35, + 0x83, 0x7E, 0x50, 0x24, 0x4C, 0x7E, 0x79, 0xA9, 0xAA, 0x7F, 0x0, + 0x0, 0x0, 0x81, 0xB, 0x44, 0x4E, 0x6E, 0x83, 0xF9, 0x22, 0x7E, + 0xFD, 0x43, 0x3, 0xC3, 0x9E, 0x26, 0x1, 0x0, 0x0, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0xBA, 0x3B, 0xAA, 0xBB, 0x38, 0x81, 0xE8, 0x72, + 0xA, 0xA0, 0xA6, 0x4, 0x3C, 0x88, 0x73, 0x3C, 0x3C, 0x68, 0x72, + 0x4B, 0xFF, 0x36, 0xA3, 0x4, 0xFF, 0x36, 0xA5, 0x4, 0xE8, 0x60, + 0x10, 0x8A, 0xE2, 0x80, 0xC4, 0x81, 0x74, 0x23, 0x50, 0xF6, 0x6, + 0xA7, 0x4, 0x80, 0xE8, 0x43, 0x10, 0x32, 0xE4, 0xE8, 0xE6, 0x11, + 0x58, 0x5B, 0x5A, 0x50, 0xE8, 0xA8, 0x4, 0xBB, 0x17, 0x62, 0xE8, + 0x8D, 0x12, 0x5B, 0x33, 0xD2, 0x8A, 0xDA, 0xE9, 0x32, 0xA, 0x83, + 0xC4, 0x4, 0x80, 0x26, 0xA5, 0x4, 0x80, 0x74, 0x3, 0xE9, 0x91, + 0x18, 0x32, 0xE4, 0x88, 0x26, 0xA7, 0x4, 0xE9, 0xF9, 0x11, 0xBF, + 0xA3, 0x4, 0x90, 0x33, 0xC0, 0xFC, 0xAB, 0xC7, 0x5, 0x0, 0x81, + 0xC3, 0xE8, 0xAF, 0x18, 0x75, 0x3, 0xE9, 0xDE, 0xA4, 0xC3, 0xFC, + 0xAB, 0xC7, 0x5, 0x0, 0x81, 0xC3, 0xE9, 0x1A, 0xAC, 0xCD, 0xB9, + 0x80, 0x36, 0xA5, 0x4, 0x80, 0x80, 0x36, 0xB1, 0x4, 0x80, 0xE9, + 0x8A, 0x3, 0xCD, 0xBA, 0x87, 0xD9, 0xE9, 0x5A, 0x4, 0xCD, 0xBB, + 0x87, 0xD9, 0xE9, 0x47, 0x4, 0xCD, 0xBC, 0xE8, 0x33, 0x19, 0xE9, + 0x1B, 0x5, 0x87, 0xD9, 0xE9, 0xB1, 0x5, 0xCD, 0xBD, 0x89, 0x1E, + 0xA3, 0x4, 0xE9, 0x6B, 0x8, 0xCD, 0xBE, 0x52, 0x98, 0x8B, 0xD0, + 0xE8, 0xEE, 0x8, 0x5A, 0xC3, 0xCD, 0xBF, 0x87, 0xD9, 0xE9, 0xB7, + 0x9, 0xCD, 0xC0, 0x87, 0xD9, 0xE9, 0xED, 0xD, 0x81, 0xFB, 0x0, + 0x80, 0x75, 0x13, 0xCD, 0xC1, 0xE8, 0xD3, 0x8, 0x33, 0xD2, 0xBB, + 0x80, 0x90, 0xE8, 0x5, 0x4, 0xE8, 0x4B, 0x1A, 0xE9, 0x45, 0x8, + 0xF7, 0xDB, 0x53, 0x3, 0xDA, 0x70, 0x4, 0x58, 0xE9, 0x99, 0x1, + 0xCD, 0xC2, 0xE8, 0xB5, 0x8, 0x5A, 0xFF, 0x36, 0xA3, 0x4, 0xFF, + 0x36, 0xA5, 0x4, 0xE8, 0xA9, 0x8, 0x5B, 0x5A, 0xE9, 0xEA, 0x3, + 0x8B, 0xC3, 0x52, 0xF7, 0xEA, 0x5A, 0x72, 0x5, 0x8B, 0xD8, 0xE9, + 0x76, 0x1, 0xCD, 0xC3, 0x53, 0xE8, 0x91, 0x8, 0x5A, 0xFF, 0x36, + 0xA3, 0x4, 0xFF, 0x36, 0xA5, 0x4, 0xE8, 0x85, 0x8, 0x5B, 0x5A, + 0xE9, 0x52, 0x9, 0xB, 0xDB, 0x75, 0xC, 0x88, 0x36, 0xA7, 0x4, + 0xC6, 0x6, 0xFB, 0x2, 0x4, 0xE9, 0x2D, 0x11, 0x89, 0x1E, 0xA3, + 0x4, 0xB8, 0x0, 0x0, 0xA3, 0xA5, 0x4, 0x92, 0xB, 0xC0, 0x79, + 0x3, 0xBA, 0xFF, 0xFF, 0xB, 0xDB, 0x79, 0x6, 0xC7, 0x6, 0xA5, + 0x4, 0xFF, 0xFF, 0xF7, 0x3E, 0xA3, 0x4, 0x8B, 0xD8, 0xE9, 0x2A, + 0x1, 0x87, 0xD9, 0xE8, 0xD7, 0x18, 0x87, 0xD9, 0xC3, 0x53, 0xE8, + 0x45, 0x1A, 0x5B, 0x83, 0xC3, 0x4, 0xC3, 0x8B, 0x16, 0xA3, 0x4, + 0x8B, 0xE, 0xA5, 0x4, 0xC3, 0x9C, 0x53, 0xE8, 0x19, 0x1A, 0x5B, + 0x83, 0xC3, 0x4, 0x9D, 0xC3, 0xE8, 0xAB, 0xBE, 0x89, 0x1E, 0xA3, + 0x4, 0xE9, 0x67, 0xA, 0xE8, 0xA1, 0xBE, 0x89, 0x1E, 0xA3, 0x4, + 0xE9, 0x65, 0xA, 0xCD, 0xC4, 0x8B, 0x17, 0x8B, 0x9F, 0x2, 0x0, + 0xE9, 0x4D, 0x3, 0x5E, 0xFF, 0x36, 0xA3, 0x4, 0xFF, 0x36, 0xA5, + 0x4, 0xFF, 0xE6, 0xCD, 0xC5, 0x87, 0xD9, 0xE8, 0xA0, 0x18, 0x87, + 0xD9, 0xC3, 0xE8, 0x64, 0x17, 0x74, 0x3, 0xE9, 0x93, 0xA3, 0xC3, + 0x87, 0xDA, 0xE8, 0xCD, 0x0, 0x32, 0xC0, 0xB5, 0x98, 0xCD, 0xC6, + 0xBB, 0xA6, 0x4, 0x8A, 0xC8, 0x88, 0x2F, 0xB5, 0x0, 0x43, 0x88, + 0x2F, 0xD0, 0xD0, 0xCD, 0xC7, 0x73, 0x3, 0xE8, 0x20, 0x1, 0x8A, + 0xE5, 0x8A, 0xD9, 0xE9, 0x33, 0x10, 0xE8, 0x92, 0xFE, 0x53, 0x33, + 0xDB, 0x89, 0x1E, 0xA3, 0x4, 0xB7, 0x81, 0x89, 0x1E, 0xA5, 0x4, + 0xC6, 0x6, 0xFB, 0x2, 0x4, 0xE8, 0x4, 0x14, 0x5B, 0xC6, 0x6, + 0xFB, 0x2, 0x4, 0xC3, 0x8B, 0xC1, 0xF7, 0xE2, 0x92, 0x73, 0x3, + 0xE9, 0x25, 0xD5, 0xC3, 0xBB, 0xAB, 0x4, 0xBA, 0xB7, 0x64, 0xE9, + 0x6, 0x0, 0xBB, 0xAB, 0x4, 0xBA, 0xB9, 0x64, 0x52, 0xBA, 0xA3, + 0x4, 0xE8, 0xF7, 0x16, 0x72, 0x3, 0xBA, 0x9F, 0x4, 0xC3, 0x8A, + 0xCD, 0x32, 0xED, 0xEB, 0x8, 0x87, 0xDA, 0xA0, 0xFB, 0x2, 0x98, + 0x8B, 0xC8, 0xFC, 0x8B, 0xF2, 0x8B, 0xFB, 0xF3, 0xA4, 0x8B, 0xD6, + 0x8B, 0xDF, 0xC3, 0xE8, 0x36, 0xC8, 0x8B, 0xF1, 0x8B, 0xFB, 0xFD, + 0x2B, 0xCA, 0x41, 0xF3, 0xA4, 0x8B, 0xDA, 0x8B, 0xCF, 0x41, 0xFC, + 0xC3, 0x9C, 0x49, 0x9D, 0xC3, 0xE8, 0xBC, 0x16, 0x75, 0x3, 0xE9, + 0xEB, 0xA2, 0xCD, 0xC8, 0x78, 0x3, 0xE9, 0x83, 0x16, 0xA1, 0xA3, + 0x4, 0xB, 0xC0, 0x74, 0x6, 0xB0, 0x1, 0x79, 0x2, 0xB0, 0xFF, + 0xC3, 0x33, 0xC0, 0xB, 0xDB, 0x75, 0xF3, 0xC3, 0x5B, 0xC3, 0x98, + 0x8B, 0xD8, 0xC6, 0x6, 0xFB, 0x2, 0x2, 0x89, 0x1E, 0xA3, 0x4, + 0xC3, 0xC6, 0x6, 0xFB, 0x2, 0x4, 0xC3, 0xE8, 0xC4, 0xFF, 0xE9, + 0xE7, 0xFF, 0xCD, 0xC9, 0x5B, 0x5A, 0xE9, 0xB5, 0x3, 0xE8, 0x25, + 0x6, 0x5B, 0x5A, 0xE9, 0xB, 0xC, 0xB9, 0x4, 0x0, 0xE9, 0x88, + 0xFF, 0x9C, 0x8A, 0x17, 0x43, 0x9D, 0x9C, 0x8A, 0x37, 0x43, 0x8B, + 0xF, 0x43, 0x9D, 0x9C, 0x43, 0x9D, 0xC3, 0x53, 0xBB, 0x28, 0x7, + 0xE8, 0x6, 0x16, 0x5B, 0xB9, 0xB6, 0x26, 0x51, 0xE8, 0xB5, 0xFF, + 0x32, 0xC0, 0xCD, 0xCA, 0xA2, 0x31, 0x3, 0xBB, 0xB4, 0x4, 0xC6, + 0x7, 0x20, 0xA, 0x7, 0x43, 0xC6, 0x7, 0x30, 0xE9, 0x6A, 0xB, + 0xCD, 0xCB, 0xA0, 0xA5, 0x4, 0xEB, 0x9, 0xCD, 0xCC, 0xE8, 0xE5, + 0x17, 0x74, 0x8, 0xF6, 0xD0, 0xD0, 0xE0, 0x1A, 0xC0, 0x74, 0x3D, + 0xC3, 0xCD, 0xCD, 0x80, 0x36, 0xA7, 0x4, 0x80, 0x33, 0xDB, 0xF6, + 0xDD, 0x8B, 0xC3, 0x1B, 0xC2, 0x8B, 0xD0, 0x8A, 0xC3, 0x1A, 0xC1, + 0x8A, 0xC8, 0xC3, 0xE8, 0x3, 0x16, 0x78, 0xFA, 0xCD, 0xCE, 0xE8, + 0xCF, 0x15, 0x78, 0x3, 0xE9, 0xD5, 0x18, 0xE8, 0x2, 0x18, 0xE8, + 0xCF, 0x18, 0xE9, 0xFC, 0x17, 0x8B, 0xC3, 0x2B, 0xC2, 0x74, 0xE, + 0x70, 0x7, 0x78, 0x7, 0x32, 0xC0, 0xFE, 0xC0, 0xC3, 0x78, 0xF9, + 0xF9, 0x1A, 0xC0, 0xC3, 0x3B, 0xDA, 0x75, 0x5, 0x33, 0xDB, 0xE9, + 0x26, 0x0, 0x8B, 0xC2, 0x89, 0x1E, 0xA3, 0x4, 0xB, 0xDB, 0xE8, + 0xD3, 0xF9, 0x90, 0x90, 0x90, 0x79, 0x6, 0xC7, 0x6, 0xA5, 0x4, + 0xFF, 0xFF, 0xB, 0xC0, 0xBA, 0x0, 0x0, 0x79, 0x3, 0xBA, 0xFF, + 0xFF, 0xF7, 0x3E, 0xA3, 0x4, 0x8B, 0xDA, 0x89, 0x1E, 0xA3, 0x4, + 0xC3, 0xAD, 0x3A, 0xE1, 0x74, 0x11, 0x46, 0x2, 0x4, 0xFE, 0xC0, + 0x98, 0x3, 0xF0, 0x3B, 0xF5, 0x75, 0xEF, 0x8B, 0xD6, 0xE9, 0x39, + 0xD2, 0x3A, 0x6, 0xFB, 0x2, 0x75, 0xE9, 0x3A, 0x2C, 0x75, 0xE5, + 0x46, 0x8A, 0xD0, 0xAC, 0x3A, 0x6, 0x8E, 0x0, 0x74, 0x4, 0x2, + 0xC2, 0xEB, 0xDC, 0xA, 0xC0, 0x74, 0x10, 0x98, 0x91, 0xBF, 0x8F, + 0x0, 0xF3, 0xA6, 0x91, 0x74, 0x6, 0x3, 0xF0, 0x8A, 0xC2, 0xEB, + 0xC8, 0x8B, 0xD6, 0x5B, 0xC3, 0x8B, 0xF3, 0x8B, 0x2E, 0x4B, 0x4, + 0xFC, 0xEB, 0xBE, 0x8B, 0xF3, 0x8B, 0x2E, 0x5C, 0x3, 0xFC, 0xE9, + 0xD, 0x0, 0xAD, 0x3A, 0xE1, 0x74, 0x11, 0x46, 0xAC, 0x98, 0x3, + 0xF0, 0xAD, 0x3, 0xF0, 0x3B, 0xEE, 0x75, 0xEF, 0x8B, 0xDE, 0xE9, + 0x53, 0xD3, 0x3A, 0x6, 0xFB, 0x2, 0x75, 0xE9, 0x3A, 0x2C, 0x75, + 0xE5, 0x46, 0xAC, 0x3A, 0x6, 0x8E, 0x0, 0x75, 0xDF, 0xA, 0xC0, + 0x74, 0xE, 0x98, 0x91, 0xBF, 0x8F, 0x0, 0xF3, 0xA6, 0x91, 0x74, + 0x4, 0x3, 0xF0, 0xEB, 0xD0, 0xAD, 0x8B, 0xD0, 0x8B, 0xDE, 0xE9, + 0x5, 0xD3, 0xE8, 0x18, 0x16, 0xC3, 0xA1, 0xA5, 0x4, 0xA, 0xE4, + 0x74, 0xF5, 0x80, 0x36, 0xA5, 0x4, 0x80, 0xCD, 0xD7, 0xB0, 0x0, + 0xA2, 0x9E, 0x4, 0xA2, 0xAA, 0x4, 0xA0, 0xB2, 0x4, 0xA, 0xC0, + 0x74, 0xE2, 0xA1, 0xA5, 0x4, 0xA, 0xE4, 0x74, 0xD8, 0x8B, 0x1E, + 0xB1, 0x4, 0x80, 0xE, 0xA5, 0x4, 0x80, 0x80, 0xE, 0xB1, 0x4, + 0x80, 0x8A, 0xCC, 0x2A, 0xCF, 0xA2, 0xA7, 0x4, 0x74, 0x22, 0x73, + 0x12, 0x86, 0xC3, 0xF6, 0xD9, 0xA2, 0xA7, 0x4, 0x88, 0x3E, 0xA6, + 0x4, 0x50, 0x51, 0xE8, 0x6F, 0x15, 0x59, 0x58, 0x80, 0xF9, 0x39, + 0x73, 0x5F, 0x53, 0xF8, 0xE8, 0x21, 0x15, 0xA0, 0xA7, 0x4, 0x5B, + 0x32, 0xC3, 0xBB, 0x9E, 0x4, 0xBE, 0xAA, 0x4, 0xB9, 0x4, 0x0, + 0xF8, 0xFC, 0x78, 0x1E, 0xAD, 0x11, 0x7, 0x43, 0x43, 0xE2, 0xF9, + 0x73, 0x12, 0xBB, 0xA6, 0x4, 0xFE, 0x7, 0x74, 0x34, 0x4B, 0x4B, + 0xB9, 0x4, 0x0, 0xD1, 0x1F, 0x4B, 0x4B, 0xE2, 0xFA, 0xE9, 0xE9, + 0x11, 0xAD, 0x19, 0x7, 0x43, 0x43, 0xE2, 0xF9, 0x73, 0x1A, 0xF6, + 0x97, 0x1, 0x0, 0xB9, 0x4, 0x0, 0x4B, 0x4B, 0xF7, 0x17, 0xE2, + 0xFA, 0xB9, 0x4, 0x0, 0xFF, 0x7, 0x75, 0x6, 0x43, 0x43, 0xE2, + 0xF8, 0x74, 0xC8, 0xE9, 0xF4, 0xC, 0xE9, 0x8D, 0xD, 0xA0, 0xA7, + 0x4, 0x24, 0x80, 0x80, 0x26, 0xA5, 0x4, 0x7F, 0x8, 0x6, 0xA5, + 0x4, 0xC3, 0x89, 0x1E, 0xA5, 0x4, 0x89, 0x16, 0xA3, 0x4, 0xC3, + 0xA1, 0xA5, 0x4, 0xA, 0xE4, 0x74, 0xF0, 0x80, 0x36, 0xA5, 0x4, + 0x80, 0xA, 0xFF, 0x74, 0xEF, 0xA1, 0xA5, 0x4, 0xA, 0xE4, 0x74, + 0xE0, 0x33, 0xC9, 0x8B, 0x36, 0xA3, 0x4, 0xA2, 0xA7, 0x4, 0x8A, + 0xCC, 0x2A, 0xCF, 0x73, 0xD, 0xF6, 0xD9, 0x86, 0xDF, 0x89, 0x1E, + 0xA6, 0x4, 0x86, 0xDF, 0x93, 0x87, 0xD6, 0x8A, 0xE0, 0x32, 0xE3, + 0x9C, 0xB4, 0x80, 0xA, 0xC4, 0xA, 0xDC, 0x32, 0xE4, 0x8A, 0xFC, + 0xB, 0xC9, 0x74, 0x46, 0x83, 0xF9, 0x19, 0x72, 0x12, 0x9D, 0x89, + 0x36, 0xA3, 0x4, 0x8A, 0x26, 0xA7, 0x4, 0x25, 0x7F, 0x80, 0xA, + 0xC4, 0xA2, 0xA5, 0x4, 0xC3, 0x80, 0xF9, 0x8, 0x72, 0x1C, 0xE9, + 0x5, 0x3, 0x90, 0x8A, 0xF3, 0x32, 0xDB, 0x80, 0xE9, 0x8, 0xF6, + 0xC4, 0x1F, 0x74, 0xD0, 0x80, 0xCC, 0x20, 0xEB, 0xCB, 0x80, 0xCC, + 0x20, 0xE2, 0x3, 0xEB, 0xE, 0xF8, 0xD0, 0xDB, 0xD1, 0xDA, 0xD0, + 0xDC, 0xF6, 0xC4, 0x10, 0x75, 0xED, 0xE2, 0xF3, 0x9D, 0x79, 0x25, + 0x2A, 0xCC, 0x8A, 0xE1, 0x1B, 0xF2, 0x8B, 0xD6, 0x1A, 0xC3, 0x8A, + 0xD8, 0x73, 0x2F, 0xF6, 0x16, 0xA7, 0x4, 0xF6, 0xD4, 0xF7, 0xD2, + 0xF6, 0xD3, 0xFE, 0xC4, 0x75, 0x21, 0x42, 0x75, 0x1E, 0xFE, 0xC3, + 0x75, 0x1A, 0xEB, 0x6, 0x3, 0xD6, 0x12, 0xD8, 0x73, 0xC, 0xFE, + 0x6, 0xA6, 0x4, 0x74, 0x9, 0xD0, 0xDB, 0xD1, 0xDA, 0xD0, 0xDC, + 0xE9, 0x24, 0x11, 0xE9, 0xA9, 0xC, 0xE9, 0x68, 0xC, 0xE8, 0x25, + 0x13, 0xC3, 0xA0, 0xB1, 0x4, 0xA2, 0xA7, 0x4, 0xE9, 0xA7, 0xC, + 0xF6, 0x6, 0xA6, 0x4, 0xFF, 0x74, 0xF0, 0xF6, 0x6, 0xB2, 0x4, + 0xFF, 0x74, 0xE5, 0x8B, 0x1E, 0xB1, 0x4, 0xE8, 0xF3, 0xF4, 0x89, + 0x1E, 0xB1, 0x4, 0xBB, 0xA4, 0x4, 0xF8, 0xE8, 0xA1, 0x13, 0xBB, + 0xB0, 0x4, 0xF8, 0xE8, 0x9A, 0x13, 0xFF, 0x36, 0xA6, 0x4, 0xE8, + 0x5E, 0x15, 0x8F, 0x6, 0xA6, 0x4, 0xB9, 0x40, 0x0, 0x51, 0xEB, + 0x8, 0x51, 0xF8, 0xBB, 0xAA, 0x4, 0xE8, 0x77, 0x13, 0x8B, 0xFC, + 0x83, 0xEC, 0x8, 0x83, 0xEF, 0x2, 0xBE, 0xB0, 0x4, 0xB9, 0x4, + 0x0, 0xFD, 0xF3, 0xA5, 0xBE, 0x78, 0x4, 0xB9, 0x4, 0x0, 0xBB, + 0xAA, 0x4, 0xF8, 0xFC, 0xAD, 0x19, 0x7, 0x43, 0x43, 0xE2, 0xF9, + 0x73, 0x10, 0xB9, 0x4, 0x0, 0x8B, 0xF4, 0xBF, 0xAA, 0x4, 0xFC, + 0xF3, 0xA5, 0x8B, 0xE6, 0xF8, 0xEB, 0x4, 0x83, 0xC4, 0x8, 0xF9, + 0xBB, 0x9E, 0x4, 0xE8, 0x38, 0x13, 0x59, 0xE2, 0xB6, 0xF6, 0x6, + 0xA5, 0x4, 0x80, 0x74, 0x9, 0xFF, 0x6, 0xA6, 0x4, 0x75, 0x9, + 0xE9, 0x7, 0xC, 0xBB, 0x9E, 0x4, 0xE8, 0x1F, 0x13, 0xE9, 0x31, + 0x10, 0xE8, 0x94, 0x12, 0x75, 0x7, 0x88, 0x1E, 0xA7, 0x4, 0xE9, + 0x0, 0xC, 0xA, 0xFF, 0x75, 0x3, 0xE9, 0x7A, 0x12, 0xE8, 0x57, + 0xF4, 0x8B, 0xFA, 0x33, 0xD2, 0x8A, 0xFE, 0x8B, 0xF3, 0x8A, 0xDF, + 0xB9, 0x20, 0x0, 0x55, 0x8B, 0x2E, 0xA3, 0x4, 0xA0, 0xA5, 0x4, + 0x8A, 0xE7, 0xEB, 0x5, 0xF8, 0xD1, 0xD7, 0xD1, 0xD6, 0x56, 0x57, + 0x2B, 0xFD, 0x1B, 0xF0, 0x73, 0x4, 0x5F, 0x5E, 0xEB, 0x4, 0x83, + 0xC4, 0x4, 0xF8, 0xF5, 0xD1, 0xD2, 0xD1, 0xD3, 0xE2, 0xE4, 0xB, + 0xDB, 0x79, 0xA, 0xFE, 0x6, 0xA6, 0x4, 0x75, 0x8, 0x5D, 0xE9, + 0xA5, 0xB, 0xD1, 0xD2, 0xD1, 0xD3, 0x8A, 0xE2, 0x8A, 0xD6, 0x8A, + 0xF3, 0x8A, 0xDF, 0x5D, 0xE9, 0xD, 0x10, 0x13, 0xF9, 0x53, 0x57, + 0x51, 0x2C, 0x30, 0x50, 0xE8, 0x50, 0x12, 0x58, 0x98, 0x79, 0x1E, + 0x8B, 0x1E, 0xA3, 0x4, 0x81, 0xFB, 0xCD, 0xC, 0x73, 0x19, 0x8B, + 0xCB, 0xD1, 0xE3, 0xD1, 0xE3, 0x3, 0xD9, 0xD1, 0xE3, 0x3, 0xD8, + 0x78, 0xB, 0x89, 0x1E, 0xA3, 0x4, 0xEB, 0x48, 0x50, 0x72, 0x8, + 0xEB, 0x33, 0x50, 0xE8, 0x24, 0x2, 0xEB, 0x14, 0xC7, 0x6, 0x7C, + 0x4, 0x0, 0x24, 0xC7, 0x6, 0x7E, 0x4, 0x74, 0x94, 0xBB, 0x7E, + 0x4, 0xE8, 0x83, 0x13, 0x79, 0x16, 0xE8, 0x3C, 0x12, 0x5A, 0xFF, + 0x36, 0xA3, 0x4, 0xFF, 0x36, 0xA5, 0x4, 0xE8, 0x8B, 0x2, 0x5B, + 0x5A, 0xE8, 0xCC, 0xFD, 0xEB, 0x13, 0xE8, 0xE7, 0x1, 0xE8, 0x23, + 0x12, 0xE8, 0xEE, 0x12, 0x5A, 0xE8, 0x77, 0x2, 0xE8, 0xDA, 0x1, + 0xE8, 0xEE, 0xFC, 0x59, 0x5F, 0x5B, 0xC3, 0xCD, 0xD9, 0x32, 0xC0, + 0xE9, 0x9, 0x0, 0xCD, 0xDA, 0xB0, 0x1, 0xC6, 0x6, 0xFB, 0x2, + 0x8, 0xC6, 0x6, 0xA8, 0x4, 0x1, 0xBE, 0xB4, 0x25, 0x56, 0x33, + 0xFF, 0x8B, 0xCF, 0x8B, 0xF7, 0xF7, 0xD1, 0x50, 0xE8, 0x86, 0x11, + 0x58, 0xA, 0xC0, 0x75, 0x5, 0xC6, 0x6, 0xFB, 0x2, 0x2, 0x8A, + 0x7, 0x3C, 0x26, 0x75, 0x3, 0xE9, 0x7, 0xB0, 0x3C, 0x2D, 0x9C, + 0x74, 0x5, 0x3C, 0x2B, 0x74, 0x1, 0x4B, 0xE8, 0xFB, 0xF8, 0x73, + 0x6, 0xE8, 0x3D, 0xFF, 0xE9, 0xF5, 0xFF, 0xBD, 0xA3, 0x61, 0x33, + 0xD2, 0x8B, 0xF2, 0x2E, 0x3A, 0x86, 0x0, 0x0, 0x74, 0xA, 0x81, + 0xFD, 0x9C, 0x61, 0x74, 0x24, 0x4D, 0xE9, 0xEF, 0xFF, 0x81, 0xED, + 0x9C, 0x61, 0xD1, 0xE5, 0x2E, 0xFF, 0xA6, 0x30, 0x6A, 0x4B, 0x6A, + 0x5F, 0x6A, 0x5F, 0x6A, 0x67, 0x6A, 0x6D, 0x6A, 0x73, 0x6A, 0x40, + 0x6A, 0x40, 0x6A, 0x32, 0xC0, 0xE8, 0x9C, 0x0, 0xE8, 0x41, 0x0, + 0xE9, 0x2D, 0x0, 0x41, 0x75, 0xF7, 0xE8, 0x51, 0x11, 0x79, 0xAF, + 0x51, 0x53, 0x57, 0xE8, 0x48, 0x1, 0x5F, 0x5B, 0x59, 0xE9, 0xA3, + 0xFF, 0xE8, 0x8C, 0xF3, 0x74, 0xE1, 0xE9, 0xDB, 0xFF, 0x43, 0xEB, + 0xDB, 0xE9, 0xB, 0x0, 0xE8, 0xBC, 0x0, 0xE9, 0x5, 0x0, 0x32, + 0xC0, 0xE8, 0xB6, 0x0, 0x9D, 0x75, 0xD, 0xE8, 0x2D, 0x13, 0xE8, + 0x21, 0x11, 0x7A, 0x5, 0x53, 0xE8, 0xED, 0x12, 0x5B, 0xC3, 0xE9, + 0x76, 0xF4, 0xC6, 0x6, 0x55, 0x4, 0xFF, 0xE8, 0x89, 0xA4, 0x8B, + 0xD4, 0xE9, 0xE3, 0x8, 0xA, 0xFF, 0x75, 0x5, 0xE8, 0xE8, 0x10, + 0xF9, 0xC3, 0xA0, 0xA6, 0x4, 0xA, 0xC0, 0x75, 0x8, 0x8A, 0xC3, + 0xF6, 0xD0, 0xE8, 0xE4, 0x10, 0xF9, 0xC3, 0xE8, 0xE4, 0xFF, 0x5D, + 0x72, 0x14, 0xEB, 0x10, 0x53, 0x8B, 0x1F, 0xE8, 0xD9, 0xFF, 0x5B, + 0x5D, 0x72, 0x8, 0x53, 0x57, 0xBF, 0xA5, 0x4, 0x90, 0x55, 0xC3, + 0xFE, 0xC0, 0x2C, 0x1, 0xC3, 0xF6, 0xC4, 0xFF, 0x8A, 0xE2, 0x74, + 0x3, 0x80, 0xCC, 0x20, 0x8A, 0xD6, 0xE9, 0xED, 0xFC, 0x10, 0x9F, + 0x80, 0x3E, 0xFB, 0x2, 0x8, 0x75, 0x4, 0x9E, 0xE9, 0x8, 0x0, + 0x9E, 0x53, 0x57, 0xE8, 0x5C, 0x0, 0x5F, 0x5B, 0x33, 0xF6, 0x8B, + 0xD6, 0xE8, 0x4, 0xF8, 0x72, 0x13, 0x3C, 0x2D, 0x75, 0x4, 0xF7, + 0xD6, 0xEB, 0x5, 0x3C, 0x2B, 0x74, 0x1, 0xC3, 0xE8, 0xF2, 0xF7, + 0x72, 0x1, 0xC3, 0x81, 0xFA, 0xCC, 0xC, 0x72, 0x5, 0xBA, 0xFF, + 0x7F, 0xEB, 0xEF, 0x50, 0xB8, 0xA, 0x0, 0xF7, 0xE2, 0x5A, 0x80, + 0xEA, 0x30, 0x32, 0xF6, 0x3, 0xD0, 0xEB, 0xDF, 0xC, 0x1, 0x53, + 0x57, 0x75, 0x7, 0xE8, 0x1C, 0x0, 0xEB, 0x5, 0x90, 0x90, 0xE8, + 0x46, 0x0, 0x5F, 0x5B, 0x33, 0xF6, 0x8B, 0xD6, 0xE8, 0xBD, 0xF3, + 0x43, 0xC3, 0xE8, 0x58, 0x10, 0x78, 0xF9, 0xE9, 0x6F, 0x9C, 0x74, + 0x31, 0xE8, 0x4E, 0x10, 0x7B, 0x56, 0x75, 0x3, 0xE9, 0x7B, 0x9C, + 0xCD, 0xCF, 0x79, 0x5, 0xE8, 0x3F, 0x0, 0xEB, 0x48, 0xB0, 0x4, + 0xA2, 0xFB, 0x2, 0x8A, 0x1E, 0xA5, 0x4, 0x88, 0x1E, 0xA7, 0x4, + 0x8B, 0x16, 0xA3, 0x4, 0x8A, 0x26, 0xA2, 0x4, 0x80, 0xCC, 0x40, + 0x80, 0xCB, 0x80, 0xE9, 0xD5, 0xD, 0xE8, 0x1D, 0x10, 0x73, 0x25, + 0x75, 0x3, 0xE9, 0x4A, 0x9C, 0xCD, 0xD0, 0x79, 0x3, 0xE8, 0xE, + 0x0, 0xB0, 0x8, 0xA2, 0xFB, 0x2, 0x33, 0xC0, 0xA3, 0x9F, 0x4, + 0xA3, 0xA1, 0x4, 0xC3, 0x52, 0x56, 0x8B, 0x16, 0xA3, 0x4, 0xE8, + 0x83, 0x0, 0x5E, 0x5A, 0xC3, 0xE8, 0xF2, 0xF, 0x79, 0x5, 0x8B, + 0x1E, 0xA3, 0x4, 0xC3, 0xCD, 0xD1, 0x75, 0x3, 0xE9, 0x18, 0x9C, + 0xA0, 0xA6, 0x4, 0x3C, 0x90, 0x72, 0x31, 0x74, 0x3, 0xE9, 0x6, + 0x9C, 0xA0, 0xA5, 0x4, 0xA, 0xC0, 0x78, 0x3, 0xE9, 0xFC, 0x9B, + 0xBA, 0x0, 0x0, 0xBB, 0x0, 0x80, 0xE8, 0x8A, 0xFB, 0xE8, 0xCB, + 0x6, 0xE8, 0xCD, 0x11, 0xBA, 0x0, 0x0, 0xBB, 0x80, 0x90, 0xE8, + 0xEC, 0x10, 0x74, 0x3, 0xE9, 0xDF, 0x9B, 0xBB, 0x0, 0x80, 0xEB, + 0x2D, 0xA0, 0xA5, 0x4, 0xA, 0xC0, 0x9C, 0x79, 0x5, 0x24, 0x7F, + 0xA2, 0xA5, 0x4, 0xBA, 0x0, 0x0, 0xBB, 0x0, 0x80, 0xE8, 0x67, + 0xFB, 0xA0, 0xA6, 0x4, 0x3C, 0x90, 0x75, 0x6, 0x9D, 0x78, 0xDB, + 0xE9, 0xB7, 0x9B, 0xE8, 0xE7, 0x6, 0x8B, 0xDA, 0x9D, 0x79, 0x2, + 0xF7, 0xDB, 0x89, 0x1E, 0xA3, 0x4, 0xC6, 0x6, 0xFB, 0x2, 0x2, + 0xC3, 0x33, 0xDB, 0x32, 0xE4, 0xBE, 0xA7, 0x4, 0xC6, 0x84, 0xFF, + 0xFF, 0x90, 0xC6, 0x4, 0x0, 0xB, 0xD2, 0x79, 0x5, 0xF7, 0xDA, + 0xC6, 0x4, 0x80, 0x8A, 0xDE, 0x8A, 0xF2, 0x8A, 0xD7, 0xC6, 0x6, + 0xFB, 0x2, 0x4, 0xE9, 0x4B, 0x8, 0xCD, 0xD6, 0xA0, 0xA6, 0x4, + 0xA, 0xC0, 0x74, 0xA, 0xA0, 0xB2, 0x4, 0xA, 0xC0, 0x75, 0x4, + 0xE9, 0xF8, 0xE, 0xC3, 0x8B, 0x1E, 0xB1, 0x4, 0xE8, 0xDA, 0xF0, + 0xFF, 0x36, 0xA6, 0x4, 0x89, 0x1E, 0xB1, 0x4, 0xE8, 0x56, 0x11, + 0x8B, 0xF0, 0xA3, 0xA6, 0x4, 0xBB, 0x78, 0x4, 0xA3, 0xB2, 0x4, + 0xBD, 0xAB, 0x4, 0x8B, 0x0, 0xB, 0xC0, 0x74, 0x2C, 0xBF, 0x0, + 0x0, 0x8B, 0xCF, 0x8B, 0x0, 0xF7, 0x23, 0x53, 0x8B, 0xDE, 0x3, + 0xDF, 0x81, 0xC3, 0x97, 0x4, 0x3, 0x7, 0x73, 0x1, 0x42, 0x3, + 0xC1, 0x73, 0x1, 0x42, 0x89, 0x7, 0x8B, 0xCA, 0x5B, 0x83, 0xFF, + 0x6, 0x74, 0x4, 0x47, 0x47, 0xEB, 0xDB, 0x8B, 0xC1, 0x53, 0xBB, + 0x9F, 0x4, 0x89, 0x0, 0x5B, 0x83, 0xFE, 0x6, 0x74, 0x4, 0x46, + 0x46, 0xEB, 0xBE, 0xBE, 0x9D, 0x4, 0xFD, 0xB9, 0x7, 0x0, 0xAC, + 0xA, 0xC0, 0xE1, 0xFB, 0x74, 0x5, 0x80, 0xE, 0x9E, 0x4, 0x20, + 0xA0, 0xA5, 0x4, 0xA, 0xC0, 0x8F, 0x6, 0xA6, 0x4, 0x78, 0xF, + 0xBB, 0x9E, 0x4, 0xB9, 0x4, 0x0, 0xD1, 0x17, 0x43, 0x43, 0xE2, + 0xFA, 0xE9, 0x19, 0xC, 0xFE, 0x6, 0xA6, 0x4, 0x75, 0xF7, 0xE9, + 0xDD, 0x7, 0xE8, 0x73, 0xE, 0x74, 0x4, 0xA, 0xFF, 0x75, 0x3, + 0xE9, 0x60, 0xE, 0xE8, 0x3A, 0xF0, 0x8B, 0xE, 0xA5, 0x4, 0x32, + 0xED, 0xA1, 0xA3, 0x4, 0x8A, 0xFD, 0x53, 0x51, 0x52, 0x51, 0x50, + 0xF7, 0xE2, 0x8B, 0xCA, 0x58, 0xF7, 0xE3, 0x3, 0xC8, 0x73, 0x1, + 0x42, 0x8B, 0xDA, 0x5A, 0x58, 0xF7, 0xE2, 0x3, 0xC8, 0x73, 0x1, + 0x42, 0x3, 0xDA, 0x5A, 0x58, 0xF6, 0xE2, 0x3, 0xD8, 0x73, 0xD, + 0xD1, 0xDB, 0xD1, 0xD9, 0xFE, 0x6, 0xA6, 0x4, 0x75, 0x3, 0xE9, + 0x90, 0x7, 0xA, 0xFF, 0x79, 0x9, 0xFE, 0x6, 0xA6, 0x4, 0x75, + 0x7, 0xE9, 0x83, 0x7, 0xD1, 0xD1, 0xD1, 0xD3, 0x8A, 0xD5, 0x8A, + 0xF3, 0x8A, 0xDF, 0x8A, 0xE1, 0xE9, 0xEC, 0xB, 0xC3, 0x53, 0xB0, + 0x8, 0x72, 0x2, 0xB0, 0x11, 0x8A, 0xE8, 0x8A, 0xC8, 0x51, 0x9C, + 0xE8, 0x48, 0x2, 0xA, 0xC0, 0x74, 0x2, 0x79, 0xC, 0x9D, 0x59, + 0x50, 0x7B, 0xB, 0x4, 0x10, 0x58, 0x79, 0x1A, 0xEB, 0x9, 0x9D, + 0x59, 0xEB, 0x26, 0x4, 0x7, 0x58, 0x79, 0xF, 0x50, 0xE8, 0xF6, + 0xB, 0x58, 0x8A, 0xE0, 0x2, 0xE1, 0x7E, 0x16, 0x2, 0xE8, 0xEB, + 0xC, 0x2, 0xC5, 0xFE, 0xC5, 0x3A, 0xE8, 0xB5, 0x3, 0x72, 0xC, + 0x8A, 0xE8, 0xFE, 0xC5, 0xB0, 0x2, 0xEB, 0x4, 0x2, 0xC5, 0xB5, + 0x3, 0xFE, 0xC8, 0xFE, 0xC8, 0x5B, 0x50, 0x9C, 0x32, 0xC9, 0xE8, + 0x4D, 0x0, 0xC6, 0x7, 0x30, 0x75, 0x1, 0x43, 0xE8, 0xE8, 0x0, + 0x4B, 0x80, 0x3F, 0x30, 0x74, 0xFA, 0x80, 0x3F, 0x2E, 0x74, 0x1, + 0x43, 0x9D, 0x58, 0x74, 0x2B, 0x9C, 0x50, 0xE8, 0xBF, 0xD, 0xB4, + 0x45, 0x7B, 0x2, 0xB4, 0x44, 0x88, 0x27, 0x43, 0x58, 0x9D, 0xC6, + 0x7, 0x2B, 0x79, 0x5, 0xC6, 0x7, 0x2D, 0xF6, 0xD8, 0xB4, 0x2F, + 0xFE, 0xC4, 0x2C, 0xA, 0x73, 0xFA, 0x4, 0x3A, 0x43, 0x86, 0xC4, + 0x89, 0x7, 0x43, 0x43, 0xC6, 0x7, 0x0, 0x87, 0xD9, 0xBB, 0xB4, + 0x4, 0xC3, 0xFE, 0xCD, 0x79, 0x16, 0x89, 0x1E, 0x52, 0x3, 0xC6, + 0x7, 0x2E, 0x43, 0xC6, 0x7, 0x30, 0xFE, 0xC5, 0x75, 0xF8, 0x43, + 0x33, 0xC9, 0xEB, 0x1A, 0xFE, 0xCD, 0x75, 0xC, 0xC6, 0x7, 0x2E, + 0x89, 0x1E, 0x52, 0x3, 0x43, 0x33, 0xC9, 0xEB, 0xA, 0xFE, 0xC9, + 0x75, 0x6, 0xC6, 0x7, 0x2C, 0x43, 0xB1, 0x3, 0x89, 0xE, 0x81, + 0x4, 0xC3, 0xB4, 0x5, 0xBD, 0xF5, 0x61, 0xE8, 0xD9, 0xFF, 0x2E, + 0x8B, 0x96, 0x0, 0x0, 0x45, 0x45, 0x8B, 0x36, 0xA3, 0x4, 0xB0, + 0x2F, 0xFE, 0xC0, 0x2B, 0xF2, 0x73, 0xFA, 0x3, 0xF2, 0x88, 0x7, + 0x43, 0x89, 0x36, 0xA3, 0x4, 0xFE, 0xCC, 0x75, 0xDD, 0xE8, 0xB6, + 0xFF, 0xC6, 0x7, 0x0, 0xC3, 0xB9, 0x1, 0x3, 0xBE, 0x6, 0x0, + 0xEB, 0x6, 0xB9, 0x4, 0x4, 0xBE, 0x4, 0x0, 0xBF, 0xB3, 0x4, + 0xFC, 0xBB, 0x74, 0x62, 0x8B, 0x16, 0xA3, 0x4, 0x56, 0x8A, 0xC6, + 0x32, 0xE4, 0xD3, 0xE0, 0x86, 0xE0, 0x2E, 0xD7, 0xAA, 0xD3, 0xE2, + 0x8A, 0xCD, 0x4E, 0x75, 0xEE, 0xC6, 0x5, 0x0, 0xBB, 0xB3, 0x4, + 0x59, 0xFE, 0xC9, 0x80, 0x3F, 0x30, 0x75, 0x3, 0x43, 0xE2, 0xF8, + 0xC3, 0xE8, 0xE9, 0xC, 0x7B, 0x77, 0x51, 0x53, 0xBE, 0x9F, 0x4, + 0xBF, 0xAB, 0x4, 0xB9, 0x4, 0x0, 0xFC, 0xF3, 0xA5, 0xE8, 0x75, + 0x3, 0x53, 0xBB, 0xB1, 0x4, 0xE8, 0xFD, 0xD, 0x5B, 0xBE, 0xAB, + 0x4, 0xBF, 0x9F, 0x4, 0xB9, 0x4, 0x0, 0xFC, 0xF3, 0xA5, 0x74, + 0x3, 0xE8, 0xCE, 0xC, 0x8A, 0xE, 0xA6, 0x4, 0x80, 0xE9, 0xB8, + 0xF6, 0xD9, 0xF8, 0xE8, 0x5A, 0x3, 0x5B, 0x59, 0xBE, 0xA6, 0x61, + 0xB0, 0x9, 0xE8, 0x2E, 0xFF, 0x50, 0xB0, 0x2F, 0x50, 0x58, 0xFE, + 0xC0, 0x50, 0xE8, 0x94, 0x0, 0x73, 0xF7, 0xE8, 0xA3, 0x0, 0x58, + 0xEB, 0xB, 0x75, 0x9, 0xC6, 0x7, 0x31, 0x43, 0xC6, 0x7, 0x30, + 0xEB, 0x2, 0x88, 0x7, 0x43, 0x58, 0xFE, 0xC8, 0x75, 0xD7, 0x51, + 0xBE, 0x9F, 0x4, 0xBF, 0xA3, 0x4, 0xB9, 0x2, 0x0, 0xFC, 0xF3, + 0xA5, 0x59, 0xEB, 0x29, 0x53, 0x51, 0xE8, 0x18, 0xF, 0xE8, 0x71, + 0x3, 0x5A, 0x5B, 0xE8, 0x99, 0xD, 0x74, 0xB, 0x89, 0x1E, 0xA5, + 0x4, 0x89, 0x16, 0xA3, 0x4, 0xE8, 0x73, 0xC, 0xB0, 0x1, 0xE8, + 0xB2, 0x3, 0x89, 0x1E, 0xA5, 0x4, 0x89, 0x16, 0xA3, 0x4, 0x59, + 0x5B, 0xB0, 0x3, 0xBA, 0xEC, 0x61, 0xE8, 0xC7, 0xFE, 0x50, 0x53, + 0x52, 0xE8, 0x5E, 0xD, 0x5D, 0xB0, 0x2F, 0x50, 0x58, 0xFE, 0xC0, + 0x50, 0xE8, 0x17, 0xE, 0x73, 0xF7, 0x2E, 0x3, 0x96, 0x0, 0x0, + 0x2E, 0x12, 0x9E, 0x2, 0x0, 0x45, 0x45, 0x45, 0xE8, 0x38, 0xD, + 0x58, 0x87, 0xD5, 0x5B, 0x88, 0x7, 0x43, 0x58, 0xFE, 0xC8, 0x75, + 0xCE, 0x42, 0x42, 0x8B, 0xEA, 0xB4, 0x4, 0xE9, 0xB3, 0xFE, 0x51, + 0x56, 0xB9, 0x7, 0x0, 0xBF, 0x9F, 0x4, 0xF8, 0xFC, 0x2E, 0xAC, + 0x18, 0x5, 0x47, 0xE2, 0xF9, 0x5E, 0x59, 0xC3, 0x51, 0xB9, 0x7, + 0x0, 0xBF, 0x9F, 0x4, 0xF8, 0xFC, 0x2E, 0xAC, 0x10, 0x5, 0x47, + 0xE2, 0xF9, 0x59, 0xC3, 0x53, 0x51, 0x33, 0xFF, 0x57, 0xBB, 0x2, + 0x5E, 0xA0, 0xA6, 0x4, 0x2E, 0xD7, 0xA, 0xC0, 0x74, 0xC, 0x5F, + 0x98, 0x2B, 0xF8, 0x57, 0x8B, 0xD0, 0xE8, 0x32, 0xEF, 0xEB, 0xE8, + 0xBB, 0x66, 0x60, 0xE8, 0x88, 0xC, 0xE8, 0x2D, 0xD, 0x73, 0x6, + 0xE8, 0xE6, 0xB, 0x5F, 0x4F, 0x57, 0xE8, 0xB0, 0xB, 0x72, 0x1F, + 0xBB, 0x7A, 0x60, 0xE8, 0x8E, 0xC, 0xE8, 0x58, 0xFC, 0x58, 0x2C, + 0x9, 0x50, 0xBB, 0xF6, 0x7F, 0xE8, 0x6D, 0xC, 0xE8, 0x57, 0xD, + 0x76, 0x7, 0xE8, 0xB9, 0xB, 0x58, 0xFE, 0xC0, 0x50, 0x58, 0x59, + 0x5B, 0xA, 0xC0, 0xC3, 0x58, 0x59, 0x5B, 0xA, 0xC0, 0xC3, 0xBB, + 0xB4, 0x4, 0x8A, 0x2F, 0xB1, 0x20, 0x8A, 0x26, 0x83, 0x4, 0xF6, + 0xC4, 0x20, 0x74, 0xD, 0x3A, 0xE9, 0xB1, 0x2A, 0x75, 0x7, 0xF6, + 0xC4, 0x4, 0x75, 0x2, 0x8A, 0xE9, 0x88, 0xF, 0xE8, 0xBF, 0xF2, + 0x74, 0x32, 0xBD, 0xA5, 0x61, 0x2E, 0x3A, 0x86, 0x0, 0x0, 0x74, + 0x9, 0x81, 0xFD, 0x9C, 0x61, 0x74, 0x26, 0x4D, 0xEB, 0xF0, 0x81, + 0xED, 0x9C, 0x61, 0xD1, 0xE5, 0x2E, 0xFF, 0xA6, 0x61, 0x70, 0x75, + 0x70, 0x75, 0x70, 0x79, 0x70, 0x79, 0x70, 0x79, 0x70, 0x79, 0x70, + 0x75, 0x70, 0x79, 0x70, 0x3C, 0x70, 0x3C, 0x70, 0x4B, 0xC6, 0x7, + 0x30, 0x8A, 0x26, 0x83, 0x4, 0xF6, 0xC4, 0x10, 0x74, 0x4, 0x4B, + 0xC6, 0x7, 0x24, 0xF6, 0xC4, 0x4, 0x75, 0x5, 0x4B, 0x88, 0x2F, + 0x32, 0xED, 0xC3, 0xA, 0xC0, 0xEB, 0x6, 0xC6, 0x7, 0x30, 0x43, + 0xFE, 0xC8, 0x75, 0xF8, 0xC3, 0xE8, 0x89, 0xFD, 0xC6, 0x7, 0x30, + 0x43, 0xFE, 0xC8, 0x75, 0xF5, 0xC3, 0xBB, 0xB4, 0x4, 0xC6, 0x7, + 0x20, 0x53, 0xE8, 0xC1, 0xA, 0x5B, 0x9C, 0x79, 0xA, 0xC6, 0x7, + 0x2D, 0x53, 0xE8, 0xEC, 0xC, 0x5B, 0xC, 0x1, 0x43, 0xC6, 0x7, + 0x30, 0x9D, 0xC3, 0xCD, 0xD8, 0xE8, 0xDD, 0xFF, 0x75, 0x8, 0x43, + 0xC6, 0x7, 0x0, 0xBB, 0xB4, 0x4, 0xC3, 0xE8, 0xC8, 0xA, 0x79, + 0x12, 0xB9, 0x0, 0x7, 0x33, 0xC0, 0xA3, 0x83, 0x4, 0x89, 0xE, + 0x81, 0x4, 0xE8, 0x5E, 0xFD, 0xE9, 0x31, 0xFF, 0xE9, 0x78, 0xFC, + 0xE8, 0x81, 0xA, 0x79, 0x3, 0xE9, 0x60, 0x9F, 0x75, 0x1, 0xC3, + 0xA0, 0xA6, 0x4, 0xD0, 0xE8, 0x50, 0xC6, 0x6, 0xA6, 0x4, 0x40, + 0xD0, 0x16, 0xA6, 0x4, 0xBB, 0xAB, 0x4, 0xE8, 0x9, 0xD, 0xB9, + 0x4, 0x0, 0x51, 0xE8, 0x37, 0xD, 0x8B, 0x16, 0xAB, 0x4, 0x8B, + 0x1E, 0xAD, 0x4, 0xE8, 0xBB, 0xF7, 0x5A, 0x5B, 0xE8, 0x4B, 0xF6, + 0xFE, 0xE, 0xA6, 0x4, 0x59, 0x74, 0xA, 0xE2, 0xE3, 0x58, 0x4, + 0xC0, 0x0, 0x6, 0xA6, 0x4, 0xC3, 0xE9, 0x2F, 0xA, 0xBF, 0xBE, + 0x25, 0x57, 0xBF, 0xA8, 0x4, 0xC6, 0x5, 0x1, 0xE8, 0x2C, 0xA, + 0x75, 0x3, 0xE9, 0x36, 0xF1, 0x79, 0x7, 0xA, 0xFF, 0x75, 0xA, + 0xE9, 0x93, 0x3, 0xA, 0xFF, 0x75, 0x3, 0xE9, 0xD, 0xA, 0xA, + 0xDB, 0x79, 0x26, 0x80, 0x3E, 0xA6, 0x4, 0x99, 0x72, 0x3, 0xE9, + 0xED, 0x9E, 0x52, 0x53, 0xFF, 0x36, 0xA3, 0x4, 0xFF, 0x36, 0xA5, + 0x4, 0xE8, 0x32, 0x1, 0x5B, 0x5A, 0xE8, 0x5A, 0xB, 0xE8, 0x3D, + 0xB, 0x5B, 0x5A, 0x74, 0x3, 0xE9, 0xD1, 0x9E, 0xA0, 0xA5, 0x4, + 0xA, 0xC0, 0x79, 0x9, 0xBF, 0xC4, 0x71, 0x57, 0x24, 0x7F, 0xA2, + 0xA5, 0x4, 0x53, 0x52, 0x80, 0xCB, 0x7F, 0x9C, 0xFF, 0x36, 0xA5, + 0x4, 0xFF, 0x36, 0xA3, 0x4, 0xE8, 0x2, 0x1, 0x5A, 0x5B, 0xE8, + 0x2A, 0xB, 0x75, 0x1C, 0x52, 0x53, 0x33, 0xD2, 0xBB, 0x0, 0x90, + 0xE8, 0x1E, 0xB, 0x5B, 0x5A, 0x79, 0xE, 0x9D, 0x5A, 0x5B, 0xEB, + 0x3C, 0x90, 0x33, 0xD2, 0xBB, 0x0, 0x81, 0xE9, 0x12, 0xF7, 0x9D, + 0x79, 0xE, 0x53, 0x52, 0xE8, 0x2F, 0x1, 0x8A, 0xC2, 0xE8, 0xC5, + 0x2, 0x5A, 0x5B, 0xD0, 0xD8, 0x8F, 0x6, 0xA3, 0x4, 0x8F, 0x6, + 0xA5, 0x4, 0x9F, 0x80, 0x26, 0xA5, 0x4, 0x7F, 0x9E, 0x73, 0x4, + 0xBF, 0xB0, 0x7D, 0x57, 0x53, 0x52, 0xE8, 0x15, 0x1, 0x5A, 0x5B, + 0xE8, 0x3, 0xFB, 0xE9, 0x85, 0xF0, 0x53, 0x52, 0xE8, 0xFF, 0x0, + 0x89, 0x16, 0xB2, 0x4, 0xC7, 0x6, 0xA3, 0x4, 0x0, 0x0, 0xC7, + 0x6, 0xA5, 0x4, 0x0, 0x81, 0xD1, 0x2E, 0xB2, 0x4, 0x73, 0x7, + 0x5A, 0x5B, 0x53, 0x52, 0xE8, 0xDE, 0xFA, 0xF7, 0x6, 0xB2, 0x4, + 0xFF, 0xFF, 0x74, 0x15, 0x5A, 0x5B, 0xE8, 0x21, 0xC, 0xE8, 0x8D, + 0xA, 0xE8, 0xCB, 0xFA, 0x5A, 0x5B, 0xE8, 0x16, 0xC, 0xE8, 0x82, + 0xA, 0xEB, 0xD6, 0x5A, 0x5B, 0xC3, 0x8A, 0xE, 0xA6, 0x4, 0x80, + 0xE9, 0xB8, 0x73, 0x39, 0xF6, 0xD9, 0x9C, 0xBB, 0xA4, 0x4, 0x8A, + 0x87, 0x1, 0x0, 0x88, 0x87, 0x3, 0x0, 0xA, 0xC0, 0x9C, 0xC, + 0x80, 0x88, 0x87, 0x1, 0x0, 0xC6, 0x87, 0x2, 0x0, 0xB8, 0x9D, + 0x9C, 0x79, 0x3, 0xE8, 0x22, 0x0, 0x32, 0xED, 0xE8, 0x12, 0x0, + 0x9D, 0x79, 0x3, 0xE8, 0x26, 0x0, 0xC6, 0x6, 0x9E, 0x4, 0x0, + 0x9D, 0x73, 0x3, 0xE9, 0xBD, 0x1, 0xC3, 0x51, 0x53, 0xF8, 0xE8, + 0x7A, 0x9, 0x5B, 0x59, 0xE2, 0xF6, 0xC3, 0x53, 0xBB, 0x9F, 0x4, + 0x83, 0x2F, 0x1, 0x73, 0x4, 0x43, 0x43, 0xEB, 0xF7, 0x5B, 0xC3, + 0x53, 0xBB, 0x9F, 0x4, 0xFE, 0x7, 0x75, 0x3, 0x43, 0xEB, 0xF9, + 0x5B, 0xC3, 0x8A, 0xE, 0xA6, 0x4, 0x80, 0xE9, 0x98, 0x73, 0x41, + 0xF6, 0xD9, 0x9C, 0x8B, 0x16, 0xA3, 0x4, 0x8B, 0x1E, 0xA5, 0x4, + 0xA, 0xDB, 0x9C, 0x88, 0x1E, 0xA7, 0x4, 0xC6, 0x6, 0xA6, 0x4, + 0x98, 0x80, 0xCB, 0x80, 0x9D, 0x9C, 0x79, 0x6, 0x83, 0xEA, 0x1, + 0x80, 0xDB, 0x0, 0x32, 0xED, 0xA, 0xC9, 0x74, 0x6, 0xD0, 0xEB, + 0xD1, 0xDA, 0xE2, 0xFA, 0x9D, 0x9F, 0x79, 0x5, 0x42, 0x75, 0x2, + 0xFE, 0xC3, 0x9D, 0x73, 0x5, 0x32, 0xE4, 0xE9, 0xA9, 0x1, 0x9E, + 0x79, 0xA, 0xF7, 0xD2, 0xF6, 0xD3, 0x83, 0xC2, 0x1, 0x80, 0xD3, + 0x0, 0xC3, 0xB1, 0x98, 0x2A, 0xE, 0xA6, 0x4, 0xF8, 0xEB, 0xAA, + 0xE8, 0x66, 0x8, 0x7E, 0x51, 0xBA, 0x0, 0x0, 0xBB, 0x0, 0x81, + 0xE8, 0xBE, 0x9, 0x75, 0x9, 0x89, 0x16, 0xA3, 0x4, 0x89, 0x16, + 0xA5, 0x4, 0xC3, 0xA0, 0xA6, 0x4, 0x2C, 0x80, 0x98, 0x50, 0xC6, + 0x6, 0xA6, 0x4, 0x80, 0xE8, 0x1B, 0xB, 0xBB, 0x76, 0x61, 0xE8, + 0x18, 0x2, 0x5A, 0x5B, 0xE8, 0x10, 0xB, 0xE8, 0x7C, 0x9, 0xBB, + 0x87, 0x61, 0xE8, 0xA, 0x2, 0x5A, 0x5B, 0xE8, 0x91, 0xF5, 0x5A, + 0xE8, 0xFE, 0xA, 0xE8, 0xD9, 0xF8, 0x5A, 0x5B, 0xE8, 0x1A, 0xF4, + 0xBB, 0x31, 0x80, 0xBA, 0x18, 0x72, 0xE9, 0x9D, 0xF9, 0xE9, 0xF4, + 0x9C, 0xE9, 0x5C, 0x94, 0x9F, 0x86, 0xE0, 0x50, 0xB0, 0x1, 0xEB, + 0x2, 0x32, 0xC0, 0xA2, 0x55, 0x4, 0x58, 0x86, 0xC4, 0x9E, 0xBA, + 0x0, 0x0, 0x89, 0x1E, 0x53, 0x4, 0x74, 0x3, 0xE8, 0xE9, 0xC3, + 0x89, 0x1E, 0x3B, 0x3, 0xE8, 0xAC, 0x93, 0x75, 0xD7, 0x8B, 0xE3, + 0x8B, 0x36, 0x53, 0x4, 0x39, 0x37, 0x75, 0xCD, 0x52, 0x8A, 0xA7, + 0x2, 0x0, 0x50, 0x52, 0x83, 0xC3, 0x4, 0xF6, 0x87, 0xFF, 0xFF, + 0x80, 0x78, 0x41, 0xB9, 0x2, 0x0, 0xFC, 0x8B, 0xF3, 0xBF, 0xA3, + 0x4, 0xF3, 0xA5, 0x5B, 0x56, 0x53, 0xF6, 0x6, 0x55, 0x4, 0xFF, + 0x75, 0xF, 0xBE, 0x56, 0x4, 0x83, 0xEF, 0x4, 0xB9, 0x2, 0x0, + 0xF3, 0xA5, 0x32, 0xC0, 0x74, 0x3, 0xE8, 0x4B, 0xF0, 0x5F, 0xBE, + 0xA3, 0x4, 0xB9, 0x2, 0x0, 0xFC, 0xF3, 0xA5, 0x5E, 0x8B, 0x14, + 0x8B, 0x8C, 0x2, 0x0, 0x83, 0xC6, 0x4, 0x56, 0xE8, 0x49, 0xF0, + 0xEB, 0x27, 0x83, 0xC3, 0x4, 0x8B, 0xF, 0x43, 0x43, 0x5E, 0x8B, + 0x14, 0xF6, 0x6, 0x55, 0x4, 0xFF, 0x75, 0x6, 0x8B, 0x16, 0x56, + 0x4, 0xEB, 0x4, 0x3, 0xD1, 0x70, 0x35, 0x89, 0x14, 0x52, 0x8B, + 0x17, 0x43, 0x43, 0x58, 0x53, 0xE8, 0xA5, 0xF1, 0x5B, 0x59, 0x2A, + 0xC5, 0xE8, 0x1F, 0xF1, 0x74, 0xB, 0x89, 0x16, 0x2E, 0x0, 0x8B, + 0xD1, 0x87, 0xD3, 0xE9, 0x7C, 0x9A, 0x8B, 0xE3, 0x89, 0x1E, 0x45, + 0x3, 0x8B, 0x1E, 0x3B, 0x3, 0x80, 0x3F, 0x2C, 0x75, 0x9, 0xE8, + 0x55, 0xF6, 0xE8, 0x42, 0xFF, 0xE9, 0x93, 0x93, 0xE9, 0xA8, 0x9A, + 0x51, 0x53, 0x56, 0x57, 0x52, 0xB2, 0x39, 0xBB, 0x9E, 0x4, 0xBF, + 0xA5, 0x4, 0xBE, 0xA6, 0x4, 0xEB, 0x19, 0x53, 0xB9, 0x4, 0x0, + 0xF8, 0xD1, 0x17, 0x43, 0x43, 0xE2, 0xFA, 0x5B, 0xF6, 0x7, 0x40, + 0x75, 0x29, 0xFE, 0xC, 0x74, 0x2A, 0xFE, 0xCA, 0x74, 0x26, 0xF6, + 0x5, 0xFF, 0x78, 0x21, 0x75, 0xE0, 0x80, 0x2C, 0x8, 0x76, 0x1A, + 0x80, 0xEA, 0x8, 0x76, 0x15, 0xBE, 0xA4, 0x4, 0xB9, 0x7, 0x0, + 0xFD, 0xF3, 0xA4, 0x80, 0x26, 0x9E, 0x4, 0x20, 0xEB, 0xBE, 0x80, + 0xF, 0x20, 0xEB, 0xD2, 0x5A, 0x5F, 0x5E, 0x5B, 0x59, 0x76, 0x3, + 0xE9, 0x74, 0x4, 0xE9, 0xC0, 0x6, 0x8A, 0x3E, 0xA6, 0x4, 0xB9, + 0x4, 0x0, 0xA, 0xDB, 0x78, 0x21, 0x75, 0x11, 0x80, 0xEF, 0x8, + 0x72, 0x17, 0x8A, 0xDE, 0x8A, 0xF2, 0x8A, 0xD4, 0x32, 0xE4, 0xE2, + 0xEB, 0x74, 0xB, 0xF8, 0xD0, 0xD4, 0xD1, 0xD2, 0xD0, 0xD3, 0xFE, + 0xCF, 0x75, 0xDE, 0xE9, 0xA1, 0x6, 0x88, 0x3E, 0xA6, 0x4, 0xE9, + 0x83, 0x4, 0xCC, 0x20, 0xEB, 0xF4, 0x88, 0x3E, 0xA6, 0x4, 0xE9, + 0x78, 0x4, 0x53, 0xE8, 0x2, 0x0, 0x5B, 0xC3, 0xE8, 0x2D, 0x0, + 0xBB, 0xA, 0x4, 0xEB, 0xC, 0x53, 0xE8, 0x2, 0x0, 0x5B, 0xC3, + 0xE8, 0x1F, 0x0, 0xBB, 0x63, 0x4, 0x80, 0x3E, 0xA8, 0x4, 0x1, + 0x78, 0x7, 0x75, 0x12, 0xC6, 0x6, 0xA8, 0x4, 0x2, 0xE8, 0x81, + 0xAF, 0xB0, 0xD, 0xE8, 0x89, 0xAF, 0xB0, 0xA, 0xE8, 0x84, 0xAF, + 0xC3, 0xFC, 0xA, 0xFF, 0xBE, 0x3, 0x62, 0x74, 0xA, 0xF6, 0x6, + 0xA7, 0x4, 0x80, 0x79, 0x3, 0xBE, 0xB, 0x62, 0xE8, 0x7B, 0x6, + 0x72, 0x8, 0xBF, 0x9F, 0x4, 0xB9, 0x4, 0x0, 0xEB, 0x9, 0x83, + 0xC6, 0x4, 0xBF, 0xA3, 0x4, 0xB9, 0x2, 0x0, 0x2E, 0xA5, 0xE2, + 0xFC, 0xC3, 0xE8, 0xD, 0x9, 0x53, 0xE8, 0x81, 0x7, 0xE8, 0xB6, + 0xF7, 0x5B, 0xE8, 0x5, 0x0, 0x5A, 0x5B, 0xE9, 0xAD, 0xF7, 0x2E, + 0x8A, 0x7, 0x98, 0xE8, 0xF6, 0x8, 0x50, 0x43, 0x2E, 0x8B, 0x7, + 0xA3, 0xA3, 0x4, 0x83, 0xC3, 0x2, 0x2E, 0x8B, 0x7, 0xA3, 0xA5, + 0x4, 0x83, 0xC3, 0x2, 0x58, 0x5A, 0x59, 0x48, 0x74, 0x1C, 0x51, + 0x52, 0x50, 0x53, 0x87, 0xD9, 0xE8, 0x83, 0xF7, 0x5B, 0x53, 0x2E, + 0x8B, 0x17, 0x2E, 0x8B, 0x9F, 0x2, 0x0, 0xE8, 0xEA, 0xF1, 0x5B, + 0x83, 0xC3, 0x4, 0xEB, 0xDE, 0xC3, 0x53, 0xD0, 0xE8, 0x73, 0x3, + 0xE9, 0x9, 0x1, 0xBB, 0xB2, 0x60, 0xE8, 0xD6, 0x6, 0xE8, 0x2F, + 0x7, 0x72, 0x9, 0x5B, 0xE8, 0x23, 0xFB, 0x4B, 0xC6, 0x7, 0x25, + 0xC3, 0xE8, 0xF3, 0x5, 0xB5, 0x10, 0x73, 0x2, 0xB5, 0x7, 0xE8, + 0xBD, 0x5, 0x74, 0x3, 0xE8, 0x4, 0xFA, 0x5B, 0x78, 0x3F, 0x8A, + 0xD0, 0x2, 0xC5, 0x2A, 0x6, 0x82, 0x4, 0x79, 0x5, 0xF6, 0xD8, + 0xE8, 0xC2, 0xFA, 0x32, 0xC9, 0xE8, 0xB1, 0x0, 0xFF, 0x36, 0x81, + 0x4, 0x52, 0xE8, 0xDA, 0xF8, 0x5A, 0x8F, 0x6, 0x81, 0x4, 0xFF, + 0x36, 0x81, 0x4, 0x32, 0xC0, 0xA, 0xC2, 0x74, 0x6, 0xE8, 0xB3, + 0xFA, 0xE8, 0x39, 0xF8, 0x8F, 0x6, 0x81, 0x4, 0xFF, 0x36, 0x81, + 0x4, 0xA0, 0x81, 0x4, 0xE9, 0x72, 0x2, 0x8A, 0xD0, 0xA0, 0x81, + 0x4, 0xA, 0xC0, 0x74, 0x2, 0xFE, 0xC8, 0x8A, 0xF0, 0x2, 0xC2, + 0x8A, 0xC8, 0x78, 0x4, 0x32, 0xC0, 0x8A, 0xC8, 0x79, 0x11, 0x50, + 0x51, 0x52, 0x53, 0xE8, 0xA9, 0x5, 0x5B, 0x5A, 0x59, 0x58, 0xFE, + 0xC0, 0x78, 0xF1, 0x8A, 0xE1, 0x8A, 0xC2, 0x2A, 0xC1, 0x2, 0xC5, + 0x79, 0x17, 0xA0, 0x82, 0x4, 0xE8, 0x5A, 0xFA, 0xC6, 0x7, 0x2E, + 0x89, 0x1E, 0x52, 0x3, 0x43, 0x32, 0xC9, 0x8A, 0xC6, 0x2A, 0xC5, + 0xE9, 0xA1, 0x9, 0xA0, 0x82, 0x4, 0x52, 0xFF, 0x36, 0x81, 0x4, + 0x2A, 0xC5, 0x2A, 0xC2, 0x2, 0xC1, 0x78, 0x3, 0xE8, 0x36, 0xFA, + 0xE8, 0x27, 0x0, 0xFF, 0x36, 0x81, 0x4, 0xE8, 0x51, 0xF8, 0xA0, + 0x82, 0x4, 0x8F, 0x6, 0x81, 0x4, 0xA, 0xC0, 0x58, 0x5A, 0x75, + 0x7, 0x8B, 0x1E, 0x52, 0x3, 0xE9, 0x67, 0x1, 0x2, 0xC2, 0xFE, + 0xC8, 0x78, 0x3, 0xE8, 0xF, 0xFA, 0xE9, 0x5B, 0x1, 0x8A, 0xC5, + 0x2, 0xC2, 0x2A, 0xC1, 0xFE, 0xC0, 0x8A, 0xE8, 0x2C, 0x3, 0x7F, + 0xFC, 0x4, 0x3, 0x8A, 0xC8, 0xA0, 0x83, 0x4, 0x24, 0x40, 0x75, + 0x2, 0x8A, 0xC8, 0xC3, 0xE8, 0xFE, 0x4, 0xB4, 0x7, 0x72, 0x2, + 0xB4, 0x10, 0xE8, 0xC8, 0x4, 0x5B, 0xF9, 0x74, 0x9, 0x53, 0x50, + 0xE8, 0xB, 0xF9, 0x5A, 0x5B, 0x8A, 0xE6, 0x9C, 0x50, 0x8B, 0x16, + 0x81, 0x4, 0xA, 0xF6, 0x9C, 0xA, 0xD2, 0x74, 0x2, 0xFE, 0xCA, + 0x2, 0xF2, 0x9D, 0x74, 0x9, 0xF6, 0x6, 0x83, 0x4, 0x4, 0x75, + 0x2, 0xFE, 0xCE, 0x2A, 0xF4, 0x8A, 0xE6, 0x50, 0x78, 0x3, 0xE9, + 0x4E, 0x0, 0x53, 0x50, 0x50, 0xE8, 0xE1, 0x4, 0x58, 0xFE, 0xC4, + 0x75, 0xF7, 0xE8, 0xBF, 0x4, 0xE8, 0x8E, 0x7, 0x58, 0x50, 0xB9, + 0x3, 0x0, 0xD2, 0xE4, 0xE8, 0xA6, 0x4, 0x72, 0x10, 0x8A, 0xC4, + 0x98, 0xBB, 0xB2, 0x60, 0x3, 0xD8, 0xE8, 0x6B, 0x5, 0xE8, 0x55, + 0x6, 0xEB, 0xE, 0xBB, 0x6E, 0x60, 0x8A, 0xC4, 0x98, 0x3, 0xD8, + 0xE8, 0x53, 0x5, 0xE8, 0xF8, 0x5, 0x58, 0x5B, 0x78, 0x11, 0x58, + 0x59, 0xFE, 0xC1, 0x51, 0x50, 0x53, 0x50, 0xE8, 0x9D, 0x4, 0x58, + 0x5B, 0xEB, 0x2, 0x32, 0xE4, 0xF6, 0xDC, 0xA0, 0x82, 0x4, 0x2, + 0xE0, 0xFE, 0xC4, 0xA, 0xC0, 0x74, 0x9, 0xF6, 0x6, 0x83, 0x4, + 0x4, 0x75, 0x2, 0xFE, 0xCC, 0x8A, 0xEC, 0x32, 0xC9, 0x58, 0xFF, + 0x36, 0x81, 0x4, 0x50, 0x88, 0x2E, 0x82, 0x4, 0xE8, 0x5E, 0xF7, + 0x58, 0xA, 0xE4, 0x7E, 0x5, 0x8A, 0xC4, 0xE8, 0x3F, 0xF9, 0x58, + 0xA3, 0x81, 0x4, 0xA, 0xC0, 0x75, 0xC, 0x4B, 0x8A, 0x7, 0x3C, + 0x2E, 0x74, 0x1, 0x43, 0x89, 0x1E, 0x52, 0x3, 0x58, 0x9D, 0x72, + 0x15, 0x2, 0xC4, 0x8A, 0x26, 0x82, 0x4, 0x2A, 0xC4, 0xA, 0xE4, + 0x74, 0x9, 0xF6, 0x6, 0x83, 0x4, 0x4, 0x75, 0x2, 0xFE, 0xC0, + 0xA, 0xC0, 0xE8, 0x4A, 0xF6, 0x8B, 0xD9, 0xE9, 0x47, 0x0, 0x8A, + 0xE0, 0xF6, 0xC4, 0x40, 0xB4, 0x3, 0x75, 0x2, 0x32, 0xE4, 0xA3, + 0x83, 0x4, 0x89, 0xE, 0x81, 0x4, 0x8A, 0xE0, 0xBB, 0xB4, 0x4, + 0xC6, 0x7, 0x20, 0xF6, 0xC4, 0x8, 0x74, 0x3, 0xC6, 0x7, 0x2B, + 0x53, 0xE8, 0xB6, 0x3, 0x5B, 0x79, 0x8, 0xC6, 0x7, 0x2D, 0x53, + 0xE8, 0xE2, 0x5, 0x5B, 0x43, 0xC6, 0x7, 0x30, 0xE8, 0xD1, 0x3, + 0xA1, 0x83, 0x4, 0x8B, 0xE, 0x81, 0x4, 0x78, 0x3, 0xE9, 0xB3, + 0xFD, 0xE9, 0x68, 0x0, 0x53, 0xE8, 0x3B, 0xF8, 0x5B, 0x74, 0x3, + 0x88, 0x2F, 0x43, 0xC6, 0x7, 0x0, 0xBB, 0xB3, 0x4, 0x43, 0x8B, + 0x3E, 0x52, 0x3, 0x8B, 0x16, 0x81, 0x4, 0xA0, 0x82, 0x4, 0x32, + 0xE4, 0x2B, 0xFB, 0x2B, 0xF8, 0x74, 0x43, 0x8A, 0x7, 0x3C, 0x20, + 0x74, 0xE6, 0x3C, 0x2A, 0x74, 0xE2, 0xB4, 0x1, 0x4B, 0x53, 0x50, + 0xE8, 0xEA, 0xEA, 0x32, 0xE4, 0x3C, 0x2D, 0x74, 0xF6, 0x3C, 0x2B, + 0x74, 0xF2, 0x3C, 0x24, 0x74, 0xEE, 0x3C, 0x30, 0x75, 0x16, 0x43, + 0xE8, 0xD4, 0xEA, 0x73, 0x10, 0x4B, 0xEB, 0x3, 0x4B, 0x88, 0x7, + 0x58, 0xA, 0xE4, 0x74, 0xF8, 0x83, 0xC4, 0x2, 0xEB, 0xB3, 0x58, + 0xA, 0xE4, 0x74, 0xFB, 0x5B, 0xC6, 0x7, 0x25, 0xC3, 0xA1, 0x83, + 0x4, 0x8A, 0xCC, 0xB5, 0x6, 0xD0, 0xE8, 0x8B, 0x16, 0x81, 0x4, + 0x73, 0xB, 0x53, 0x52, 0xE8, 0x45, 0xF3, 0x32, 0xC0, 0x5A, 0xE9, + 0x3F, 0xFE, 0x8A, 0xC6, 0x2C, 0x5, 0x78, 0x3, 0xE8, 0x26, 0xF8, + 0x52, 0xE8, 0xDA, 0xF5, 0x58, 0x50, 0xA, 0xC0, 0x75, 0x1, 0x4B, + 0xFE, 0xC8, 0x78, 0x6, 0xE8, 0x14, 0xF8, 0xC6, 0x7, 0x0, 0x8F, + 0x6, 0x81, 0x4, 0xE9, 0x59, 0xFF, 0xE8, 0xEB, 0x2, 0x74, 0x6D, + 0x79, 0xC, 0xA1, 0xA3, 0x4, 0xA3, 0xB, 0x0, 0xA0, 0xA5, 0x4, + 0xA2, 0xD, 0x0, 0xA1, 0xB, 0x0, 0x2E, 0xF7, 0x26, 0x6B, 0x62, + 0x8B, 0xF8, 0x8A, 0xCA, 0x2E, 0xA0, 0x6D, 0x62, 0xF6, 0x26, 0xB, + 0x0, 0x2, 0xC8, 0x2E, 0xA0, 0xD, 0x0, 0x2E, 0xF6, 0x26, 0x6B, + 0x62, 0x2, 0xC8, 0x32, 0xC0, 0x2E, 0x8B, 0x16, 0x6E, 0x62, 0x3, + 0xD7, 0x2E, 0x8A, 0x1E, 0x70, 0x62, 0x12, 0xD9, 0xA2, 0xA7, 0x4, + 0xB0, 0x80, 0xA2, 0xA6, 0x4, 0x89, 0x16, 0xB, 0x0, 0x88, 0x1E, + 0xD, 0x0, 0xB0, 0x4, 0xA2, 0xFB, 0x2, 0xE9, 0xBB, 0xFB, 0x0, + 0x0, 0x0, 0xBB, 0xB3, 0x4, 0xB9, 0x20, 0x0, 0x3, 0x7, 0x43, + 0x43, 0xE2, 0xFA, 0x24, 0xFE, 0xA3, 0xB, 0x0, 0xEB, 0xA1, 0x8B, + 0x16, 0xB, 0x0, 0x8A, 0x1E, 0xD, 0x0, 0x33, 0xC0, 0xB0, 0x80, + 0xA2, 0xA6, 0x4, 0x88, 0x26, 0xA7, 0x4, 0xE9, 0x8F, 0xFB, 0x53, + 0x51, 0xBB, 0x9E, 0x4, 0x81, 0x7, 0x80, 0x0, 0xB9, 0x3, 0x0, + 0x73, 0xE, 0x43, 0x43, 0xFF, 0x7, 0x75, 0x8, 0xE2, 0xF8, 0xFE, + 0x6, 0xA6, 0x4, 0xD1, 0x1F, 0x59, 0x74, 0x20, 0xF6, 0x6, 0x9E, + 0x4, 0xFF, 0x75, 0x5, 0x80, 0x26, 0x9F, 0x4, 0xFE, 0xBB, 0xA5, + 0x4, 0x8A, 0x7, 0x8A, 0xA7, 0x2, 0x0, 0x24, 0x7F, 0x80, 0xE4, + 0x80, 0xA, 0xE0, 0x88, 0x27, 0x5B, 0xC3, 0x90, 0x90, 0x90, 0xE9, + 0x88, 0xFB, 0x80, 0xE4, 0xE0, 0x80, 0xC4, 0x80, 0x73, 0x1C, 0x9C, + 0x42, 0x75, 0x12, 0x9D, 0xFE, 0xC3, 0x75, 0x13, 0xF9, 0xD0, 0xDB, + 0xFE, 0x6, 0xA6, 0x4, 0x75, 0xA, 0x90, 0xE9, 0x6A, 0xFB, 0x9D, + 0x75, 0x3, 0x80, 0xE2, 0xFE, 0x56, 0xBE, 0xA3, 0x4, 0x89, 0x14, + 0x46, 0x46, 0x8A, 0x3E, 0xA7, 0x4, 0x81, 0xE3, 0x7F, 0x80, 0xA, + 0xDF, 0x88, 0x1C, 0x5E, 0xC3, 0x8B, 0xF1, 0xE8, 0xB4, 0x4, 0x8B, + 0xCE, 0x51, 0xE8, 0x9, 0x2, 0x72, 0x9, 0x80, 0x3E, 0xA6, 0x4, + 0xB8, 0x79, 0xF, 0xEB, 0x7, 0x80, 0x3E, 0xA6, 0x4, 0x98, 0x79, + 0x6, 0xE8, 0x0, 0x2, 0xE8, 0xCF, 0x4, 0xBB, 0x86, 0x4, 0xE8, + 0x51, 0x4, 0x59, 0x51, 0xBF, 0x8E, 0x4, 0xBB, 0x86, 0x4, 0xE8, + 0x35, 0x4, 0xBB, 0x86, 0x4, 0xE8, 0x5D, 0x4, 0xE8, 0xFD, 0x1, + 0xE8, 0xB2, 0x4, 0xBB, 0x86, 0x4, 0xE8, 0x34, 0x4, 0xE8, 0xFB, + 0x1, 0xBB, 0x94, 0x4, 0xE8, 0xC5, 0x1, 0x73, 0x3, 0x83, 0xEB, + 0x4, 0xE8, 0x57, 0x4, 0x59, 0x75, 0x4, 0xFE, 0xC1, 0xEB, 0xCC, + 0x8B, 0xE9, 0xE8, 0x75, 0x4, 0x8B, 0xCD, 0xC3, 0x80, 0x26, 0xA5, + 0x4, 0x7F, 0xE8, 0x86, 0x0, 0xE8, 0xA5, 0x0, 0xC6, 0x6, 0xB2, + 0x4, 0x7F, 0xE8, 0xA3, 0xEC, 0xE8, 0x84, 0x0, 0xEB, 0x1B, 0x65, + 0xED, 0xA1, 0xA5, 0x4, 0x80, 0xFC, 0x77, 0x73, 0x1, 0xC3, 0xA, + 0xC0, 0x79, 0x9, 0x24, 0x7F, 0xA2, 0xA5, 0x4, 0xB8, 0xB0, 0x7D, + 0x50, 0xE8, 0x5B, 0x0, 0xA0, 0xA6, 0x4, 0xA, 0xC0, 0x74, 0x5, + 0x80, 0x6, 0xA6, 0x4, 0x2, 0xE8, 0x61, 0x0, 0xA1, 0xB1, 0x4, + 0x80, 0xFC, 0x82, 0x9C, 0xF6, 0xC4, 0x1, 0x75, 0x2, 0xA8, 0x40, + 0x9C, 0xE8, 0x49, 0x0, 0x9D, 0x74, 0x9, 0xBB, 0x32, 0x60, 0xE8, + 0x37, 0x2, 0xE8, 0x48, 0xEC, 0x80, 0x2E, 0xA6, 0x4, 0x2, 0x73, + 0x3, 0xE8, 0x0, 0x1, 0xE8, 0x3, 0xF1, 0xA0, 0xA6, 0x4, 0x3C, + 0x74, 0x73, 0xB, 0xBA, 0xDB, 0xF, 0xBB, 0x49, 0x83, 0xE8, 0x8E, + 0xF2, 0xEB, 0x6, 0xBB, 0x34, 0x62, 0xE8, 0xC6, 0xFA, 0x9D, 0x75, + 0x5, 0x80, 0x36, 0xA5, 0x4, 0x80, 0xC3, 0xBB, 0x63, 0x62, 0xE8, + 0x0, 0x2, 0xE8, 0x8, 0xF1, 0xE8, 0xC7, 0xF1, 0xE8, 0x6, 0x0, + 0xE8, 0x8, 0xEC, 0xE9, 0x19, 0x3, 0xE8, 0xAD, 0x3, 0xE8, 0xA4, + 0xF7, 0xE8, 0x0, 0x2, 0xE8, 0xC3, 0x3, 0xC3, 0xBB, 0x32, 0x60, + 0xE9, 0xDE, 0x1, 0xB8, 0xF0, 0xC3, 0xFF, 0x36, 0xA5, 0x4, 0xFF, + 0x36, 0xA3, 0x4, 0xE8, 0x56, 0xFF, 0x5A, 0x5B, 0xFF, 0x36, 0xA3, + 0x4, 0xFF, 0x36, 0xA5, 0x4, 0xE8, 0xF9, 0x1, 0xE8, 0x2C, 0xFF, + 0x5B, 0x5A, 0xE9, 0x11, 0xEE, 0xA1, 0xA5, 0x4, 0xA, 0xC0, 0x79, + 0x9, 0xBF, 0xB0, 0x7D, 0x57, 0x24, 0x7F, 0xA2, 0xA5, 0x4, 0x80, + 0xFC, 0x81, 0x72, 0xC, 0xBF, 0x39, 0x7B, 0x57, 0x33, 0xD2, 0xBB, + 0x0, 0x81, 0xE8, 0xF0, 0xED, 0xBA, 0xA2, 0x30, 0xBB, 0x9, 0x7F, + 0xE8, 0xE1, 0x1, 0x78, 0x3A, 0xBF, 0x42, 0x7B, 0x57, 0xFF, 0x36, + 0xA3, 0x4, 0xFF, 0x36, 0xA5, 0x4, 0xBA, 0xD7, 0xB3, 0xBB, 0x5D, + 0x81, 0xE8, 0x65, 0xEC, 0x5B, 0x5A, 0xFF, 0x36, 0xA3, 0x4, 0xFF, + 0x36, 0xA5, 0x4, 0xE8, 0xA3, 0x1, 0xBB, 0x49, 0x62, 0xE8, 0x31, + 0xFA, 0x5B, 0x5A, 0xFF, 0x36, 0xA3, 0x4, 0xFF, 0x36, 0xA5, 0x4, + 0xE8, 0x90, 0x1, 0x5B, 0x5A, 0xE8, 0xAB, 0xED, 0xBB, 0x52, 0x62, + 0xE9, 0x6, 0xFA, 0xBA, 0xDB, 0xF, 0xBB, 0x49, 0x81, 0xE9, 0x25, + 0xEC, 0xBA, 0x92, 0xA, 0xBB, 0x6, 0x80, 0xE9, 0x28, 0xEC, 0xE8, + 0x57, 0xB0, 0x3C, 0xD, 0x75, 0x3, 0xE8, 0x23, 0xB1, 0x2E, 0x8A, + 0x7, 0x43, 0xA, 0xC0, 0x75, 0xEE, 0xC3, 0xBF, 0x9F, 0x4, 0xB9, + 0x4, 0x0, 0xB8, 0x0, 0x0, 0xFC, 0xF3, 0xAB, 0xC3, 0xB8, 0x0, + 0x0, 0xA3, 0xA3, 0x4, 0xA3, 0xA5, 0x4, 0xC3, 0xE8, 0x78, 0xE7, + 0x79, 0xE, 0xA1, 0xA3, 0x4, 0xB, 0xC0, 0x74, 0x20, 0xB0, 0x1, + 0x79, 0x1C, 0xF6, 0xD8, 0xC3, 0xCD, 0xD4, 0xA0, 0xA6, 0x4, 0xA, + 0xC0, 0x74, 0x10, 0xA0, 0xA5, 0x4, 0xA, 0xC0, 0x74, 0x7, 0xB0, + 0x1, 0x79, 0x5, 0xF6, 0xD8, 0xC3, 0xC, 0x1, 0xC3, 0xA0, 0xFB, + 0x2, 0x3C, 0x8, 0xFE, 0xC8, 0xFE, 0xC8, 0xFE, 0xC8, 0xC3, 0xE8, + 0xF1, 0xFF, 0x72, 0xC, 0x53, 0xBB, 0x6A, 0x61, 0xE8, 0xCE, 0x0, + 0xE8, 0xED, 0xEA, 0x5B, 0xC3, 0x33, 0xD2, 0xBB, 0x0, 0x80, 0xE8, + 0xAC, 0xEB, 0xC3, 0xE8, 0xD7, 0xFF, 0xBB, 0x2A, 0x60, 0x72, 0x11, + 0xEB, 0x8, 0xE8, 0xCD, 0xFF, 0xBB, 0x3A, 0x60, 0x72, 0x7, 0xE8, + 0xAB, 0x0, 0xE8, 0x75, 0xF0, 0xC3, 0xFF, 0x36, 0xA5, 0x4, 0xFF, + 0x36, 0xA3, 0x4, 0xC6, 0x6, 0xFB, 0x2, 0x8, 0xE8, 0x9C, 0x0, + 0xE8, 0x70, 0xEF, 0x5A, 0x5B, 0xE8, 0x6, 0xF1, 0xC3, 0xB9, 0x4, + 0x0, 0xD1, 0x17, 0x43, 0x43, 0xE2, 0xFA, 0xC3, 0xB9, 0x4, 0x0, + 0xD1, 0x1F, 0x4B, 0x4B, 0xE2, 0xFA, 0xC3, 0x80, 0x8F, 0x2, 0x0, + 0x20, 0xE2, 0x1, 0xC3, 0xBB, 0xB0, 0x4, 0x80, 0xF9, 0x8, 0x72, + 0x26, 0x51, 0xB9, 0x7, 0x0, 0xBB, 0xAA, 0x4, 0x8A, 0x27, 0x8A, + 0x87, 0x1, 0x0, 0x88, 0x7, 0x43, 0xE2, 0xF7, 0x32, 0xC0, 0x88, + 0x7, 0x59, 0x80, 0xE9, 0x8, 0x80, 0xE4, 0x20, 0x74, 0xD9, 0x8, + 0x26, 0xAA, 0x4, 0xE9, 0xD2, 0xFF, 0xA, 0xC9, 0x74, 0xF, 0x51, + 0xF8, 0xE8, 0xB7, 0xFF, 0x59, 0xF6, 0x87, 0x2, 0x0, 0x10, 0x75, + 0xB9, 0xE2, 0xBF, 0xC3, 0xBE, 0x9F, 0x4, 0xBF, 0xAB, 0x4, 0xFC, + 0xB9, 0x4, 0x0, 0x8B, 0x5, 0xA5, 0x89, 0x84, 0xFE, 0xFF, 0xE2, + 0xF7, 0xC3, 0xBF, 0x7C, 0x4, 0xB9, 0x2, 0x0, 0xEB, 0x6, 0xBF, + 0x78, 0x4, 0xB9, 0x4, 0x0, 0xFC, 0x2E, 0x8B, 0x7, 0xAB, 0x43, + 0x43, 0xE2, 0xF8, 0x8B, 0xDF, 0x4B, 0x4B, 0xC3, 0xBF, 0xAB, 0x4, + 0xEB, 0xEA, 0xBF, 0x9F, 0x4, 0xEB, 0xE5, 0xBF, 0xAB, 0x4, 0xB9, + 0x4, 0x0, 0x87, 0xDE, 0xFC, 0xF3, 0xA5, 0x87, 0xDE, 0xC3, 0x51, + 0x53, 0x57, 0xBB, 0x9F, 0x4, 0xBF, 0xAB, 0x4, 0xB9, 0x4, 0x0, + 0xE8, 0xE9, 0xFF, 0x5F, 0x5B, 0x59, 0xC3, 0x51, 0x53, 0x57, 0xBB, + 0xAB, 0x4, 0xBF, 0x9F, 0x4, 0xEB, 0xEB, 0x89, 0x16, 0xA3, 0x4, + 0x89, 0x1E, 0xA5, 0x4, 0xC3, 0x8B, 0x16, 0xA3, 0x4, 0x8B, 0x1E, + 0xA5, 0x4, 0xC3, 0xE8, 0xCF, 0xFE, 0x72, 0x3F, 0xE9, 0x89, 0x0, + 0xE8, 0xD7, 0xED, 0x53, 0x57, 0x8A, 0xC3, 0x32, 0x6, 0xA5, 0x4, + 0x78, 0x3C, 0xA, 0xDB, 0x78, 0x10, 0xA1, 0xA5, 0x4, 0x2B, 0xC3, + 0x72, 0x3F, 0x75, 0x37, 0xA1, 0xA3, 0x4, 0x2B, 0xC2, 0xEB, 0x10, + 0x8B, 0xC3, 0x2B, 0x6, 0xA5, 0x4, 0x72, 0x2E, 0x75, 0x26, 0x8B, + 0xC2, 0x2B, 0x6, 0xA3, 0x4, 0x72, 0x24, 0x75, 0x1C, 0x32, 0xC0, + 0xEB, 0x4A, 0xC0, 0xEB, 0x47, 0xE8, 0xA3, 0xED, 0x90, 0x90, 0x8B, + 0x7, 0x32, 0x6, 0xA5, 0x4, 0x79, 0x13, 0x8A, 0x26, 0xA5, 0x4, + 0xA, 0xE4, 0x78, 0x6, 0xB0, 0x1, 0xA, 0xC0, 0xEB, 0x2C, 0xB0, + 0xFF, 0xF9, 0xEB, 0x27, 0x51, 0xB9, 0x2, 0x0, 0x87, 0xDE, 0xA0, + 0xA5, 0x4, 0xA, 0xC0, 0x79, 0x2, 0x87, 0xF7, 0xFD, 0xA7, 0x75, + 0x6, 0xE2, 0xFB, 0xB0, 0x0, 0xEB, 0xD, 0x73, 0x6, 0xB0, 0x1, + 0xA, 0xC0, 0xEB, 0x5, 0xB0, 0xFF, 0xA, 0xC0, 0xF9, 0x59, 0x5F, + 0x5B, 0xC3, 0xBB, 0xB1, 0x4, 0xE8, 0x56, 0xED, 0x90, 0x90, 0x8A, + 0x5, 0x32, 0x7, 0x79, 0x2, 0xEB, 0xB3, 0x51, 0xB9, 0x4, 0x0, + 0xEB, 0xC4, 0xBB, 0xFF, 0x61, 0xE8, 0xF2, 0xFE, 0xE8, 0x97, 0xFF, + 0x75, 0xB, 0xC6, 0x6, 0xFB, 0x2, 0x2, 0xC7, 0x6, 0xA3, 0x4, + 0x0, 0x80, 0xC3, 0x2E, 0x2B, 0x96, 0x0, 0x0, 0x2E, 0x1A, 0x9E, + 0x2, 0x0, 0xC3, 0xE8, 0x9, 0xFE, 0x78, 0x8, 0xA0, 0xA5, 0x4, + 0xA, 0xC0, 0x78, 0xE, 0xC3, 0xA1, 0xA3, 0x4, 0xB, 0xC0, 0x78, + 0x11, 0xC3, 0xE8, 0xF4, 0xFD, 0x78, 0x8, 0xCD, 0xD2, 0x80, 0x36, + 0xA5, 0x4, 0x80, 0xC3, 0xA1, 0xA3, 0x4, 0x3D, 0x0, 0x80, 0x75, + 0xA, 0xCD, 0xD3, 0x53, 0xE8, 0xDB, 0xED, 0x5B, 0xE9, 0xE6, 0xFF, + 0xF7, 0x1E, 0xA3, 0x4, 0xC3, 0xBB, 0x79, 0x4, 0xE8, 0x33, 0x0, + 0xBF, 0x97, 0x4, 0xB9, 0x8, 0x0, 0xB8, 0x0, 0x0, 0xFC, 0xF3, + 0xAB, 0xA2, 0x78, 0x4, 0xA2, 0xAA, 0x4, 0xC3, 0xE8, 0xB7, 0xFD, + 0x72, 0x3, 0xE9, 0xA2, 0xFE, 0x8B, 0x17, 0x8B, 0x9F, 0x2, 0x0, + 0xC3, 0xB9, 0x4, 0x0, 0xE8, 0xA5, 0xFD, 0x72, 0x3, 0xE9, 0x96, + 0xFE, 0xB9, 0x2, 0x0, 0xE9, 0x90, 0xFE, 0xB9, 0x4, 0x0, 0x87, + 0xFB, 0xBB, 0x9F, 0x4, 0xE8, 0x8F, 0xFD, 0x72, 0x3, 0xE9, 0x80, + 0xFE, 0x87, 0xDF, 0xB9, 0x2, 0x0, 0xBF, 0xA3, 0x4, 0x87, 0xFB, + 0xE9, 0x73, 0xFE, 0xB9, 0x4, 0x0, 0xBF, 0x9F, 0x4, 0xE8, 0x74, + 0xFD, 0x72, 0x3, 0xE9, 0x65, 0xFE, 0xB9, 0x2, 0x0, 0xBF, 0xA3, + 0x4, 0xE9, 0x5C, 0xFE, 0xE8, 0x63, 0xFD, 0x72, 0x3, 0xE9, 0x1D, + 0xFF, 0xE9, 0xCD, 0xFE, 0xE8, 0x58, 0xFD, 0xB9, 0x4, 0x0, 0x73, + 0x3, 0xB9, 0x2, 0x0, 0x5D, 0xBF, 0xA5, 0x4, 0xFF, 0x35, 0x4F, + 0x4F, 0xE2, 0xFA, 0x55, 0xC3, 0xBF, 0xAB, 0x4, 0xB9, 0x4, 0x0, + 0xEB, 0x11, 0xE8, 0x39, 0xFD, 0xBF, 0x9F, 0x4, 0xB9, 0x4, 0x0, + 0x73, 0x6, 0xBF, 0xA3, 0x4, 0xB9, 0x2, 0x0, 0x58, 0x8F, 0x5, + 0x47, 0x47, 0xE2, 0xFA, 0x50, 0xC3, 0xE8, 0x1F, 0xFD, 0x79, 0x1, + 0xC3, 0xCD, 0xD5, 0x72, 0x3, 0xE9, 0xB4, 0xF3, 0xE9, 0x1B, 0xF4, + 0x0, 0x0, 0xFA, 0xBA, 0x60, 0x0, 0x8E, 0xDA, 0x8E, 0xC2, 0x8E, + 0xD2, 0x32, 0xC0, 0xA2, 0x64, 0x4, 0xB5, 0x91, 0xBB, 0x0, 0x0, + 0xBA, 0x9A, 0x6, 0x8B, 0xF2, 0x2E, 0xAC, 0x88, 0x7, 0x43, 0x42, + 0xFE, 0xCD, 0x75, 0xF4, 0xBC, 0xE, 0x7, 0xCD, 0x12, 0xFA, 0xBB, + 0x40, 0x0, 0xF7, 0xE3, 0x8C, 0xDB, 0x2B, 0xC3, 0xBB, 0x0, 0x0, + 0xF6, 0xC4, 0xF0, 0x75, 0x6, 0xB1, 0x4, 0xD3, 0xE0, 0x8B, 0xD8, + 0x4B, 0x89, 0x1E, 0x2C, 0x0, 0x8B, 0xE3, 0xE9, 0x22, 0xCD, 0xB0, + 0x2C, 0xA2, 0xF6, 0x1, 0xBB, 0xB7, 0x0, 0xC6, 0x7, 0x3A, 0x32, + 0xC0, 0xA2, 0xF9, 0x2, 0xA2, 0x6, 0x0, 0xA2, 0x6B, 0x4, 0xA2, + 0x65, 0x4, 0xA2, 0x28, 0x0, 0xBB, 0xE, 0x3, 0x89, 0x1E, 0xC, + 0x3, 0xBB, 0x7A, 0x3, 0x89, 0x1E, 0xE2, 0x3, 0x8B, 0x1E, 0x2C, + 0x0, 0x4B, 0x89, 0x1E, 0xA, 0x3, 0x4B, 0x53, 0xBB, 0xE, 0x7, + 0xB0, 0x4, 0xA2, 0xDF, 0x4, 0x53, 0x89, 0x1E, 0xE0, 0x4, 0xA0, + 0xDF, 0x4, 0xFE, 0xC0, 0x2, 0xC0, 0x8A, 0xD0, 0xB6, 0x0, 0x3, + 0xDA, 0x5A, 0x87, 0xDA, 0x8B, 0x1E, 0xE0, 0x4, 0x88, 0x17, 0x43, + 0x88, 0x37, 0x43, 0xA0, 0xDF, 0x4, 0xB9, 0x34, 0x0, 0xA, 0xC0, + 0x74, 0xE, 0x87, 0xDA, 0x3, 0xD9, 0x87, 0xDA, 0x89, 0x17, 0x43, + 0x43, 0xFE, 0xC8, 0x75, 0xF2, 0x87, 0xDA, 0x3, 0xD9, 0x43, 0x53, + 0xFE, 0xC8, 0xA2, 0x36, 0x5, 0x8B, 0x1E, 0xE0, 0x4, 0x8B, 0x17, + 0xBB, 0x33, 0x0, 0x3, 0xDA, 0x89, 0x1E, 0xE4, 0x4, 0x5B, 0x43, + 0x89, 0x1E, 0x30, 0x0, 0x89, 0x1E, 0x45, 0x3, 0x5A, 0x8A, 0xC2, + 0x24, 0xFE, 0x8A, 0xD0, 0x8A, 0xC2, 0x2A, 0xC3, 0x8A, 0xD8, 0x8A, + 0xC6, 0x1A, 0xC7, 0x8A, 0xF8, 0x73, 0x3, 0xE9, 0x68, 0xAD, 0xB1, + 0x3, 0xD3, 0xEB, 0x8A, 0xC7, 0x3C, 0x2, 0x72, 0x3, 0xBB, 0x0, + 0x2, 0x8A, 0xC2, 0x2A, 0xC3, 0x8A, 0xD8, 0x8A, 0xC6, 0x1A, 0xC7, + 0x8A, 0xF8, 0x73, 0x3, 0xE9, 0x4A, 0xAD, 0x89, 0x1E, 0xA, 0x3, + 0x87, 0xDA, 0x89, 0x1E, 0x2C, 0x0, 0x89, 0x1E, 0x2F, 0x3, 0x8B, + 0xE3, 0x89, 0x1E, 0x45, 0x3, 0x8B, 0x1E, 0x30, 0x0, 0x87, 0xDA, + 0xE8, 0x3D, 0xAD, 0x2B, 0xDA, 0x4B, 0x4B, 0x53, 0x5B, 0xE8, 0x80, + 0xE5, 0xBB, 0xDC, 0x7F, 0xE8, 0x7F, 0xFB, 0xE8, 0x98, 0xAC, 0xE9, + 0x8F, 0xC3, 0x20, 0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, + 0x65, 0x65, 0x0, 0x14, 0xE8, 0xA5, 0xF0, 0x33, 0xC9, 0x52, 0xFF, + 0x36, 0x81, 0x4, 0xE9, 0x68, 0xF6, 0xFD, 0xFF, 0x3, 0xBF, 0xC9, + 0x1B, 0xE, 0xB6, 0x0, 0x0 +}; +#endif + diff --git a/MCUME_teensy/teensy8086/teensy8086.ino b/MCUME_teensy/teensy8086/teensy8086.ino new file mode 100644 index 0000000..3ac31e9 --- /dev/null +++ b/MCUME_teensy/teensy8086/teensy8086.ino @@ -0,0 +1,279 @@ +#include "iopins.h" +#include "emuapi.h" + +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +#include "test.h" + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index= 0x20200000u) arm_dcache_flush(_pfbtft, CBALLOC); + //col++; + uint16_t bClick = emu_DebounceLocalKeys(); + emu_Input(bClick); + } + } +} + +#ifdef HAS_SND + +#include +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); + +void emu_sndInit() { + Serial.println("sound init"); + + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensy8086/test.cpp b/MCUME_teensy/teensy8086/test.cpp new file mode 100644 index 0000000..1005306 --- /dev/null +++ b/MCUME_teensy/teensy8086/test.cpp @@ -0,0 +1,638 @@ +#include +#include +#include "emuapi.h" +#include "emu.h" +#include "ps2.h" + +static uint8_t LOMEM[NATIVE_RAM]; +uint8_t * RAM; +uint8_t * LORAM; + +#define PALMULT8(x) ((x)<<5) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) + +struct i8253_s { + uint16_t chandata[3]; + uint8_t accessmode[3]; + uint8_t bytetoggle[3]; + uint32_t effectivedata[3]; + float chanfreq[3]; + uint8_t active[3]; + uint16_t counter[3]; +}; + +extern struct i8253_s i8253; + +void doirq(uint8_t irqnum); +void write86(uint32_t addr32, uint8_t value); +uint8_t read86(uint32_t addr32); + +uint8_t curkey = 0; + + + +uint8_t VRAM[16384]; + + +uint32_t updateaddrs[64]; +uint8_t updatepos = 0; + +void VRAM_write(uint32_t addr32, uint8_t value) { + + if (addr32 < 16384) { + VRAM[addr32] = value; + +//printf("%d %d\n",addr32,value); + } +} + +uint8_t VRAM_read(uint32_t addr32) { + + if (addr32 < 16384) return VRAM[addr32]; + return 0; +} + +uint8_t ansicolor[16] = { 0, 4, 2, 6, 1, 5, 3, 7, 0, 4, 2, 6, 1, 5, 3, 7 }; +uint16_t palettecga[16], palettevga[256]; + + +void installPalette(void) { + palettecga[0] = RGBVAL16(0, 0, 0); + palettecga[1] = RGBVAL16(0, 0, 0xAA); + palettecga[2] = RGBVAL16(0, 0xAA, 0); + palettecga[3] = RGBVAL16(0, 0xAA, 0xAA); + palettecga[4] = RGBVAL16(0xAA, 0, 0); + palettecga[5] = RGBVAL16(0xAA, 0, 0xAA); + palettecga[6] = RGBVAL16(0xAA, 0x55, 0); + palettecga[7] = RGBVAL16(0xAA, 0xAA, 0xAA); + palettecga[8] = RGBVAL16(0x55, 0x55, 0x55); + palettecga[9] = RGBVAL16(0x55, 0x55, 0xFF); + palettecga[10] = RGBVAL16(0x55, 0xFF, 0x55); + palettecga[11] = RGBVAL16(0x55, 0xFF, 0xFF); + palettecga[12] = RGBVAL16(0xFF, 0x55, 0x55); + palettecga[13] = RGBVAL16(0xFF, 0x55, 0xFF); + palettecga[14] = RGBVAL16(0xFF, 0xFF, 0x55); + palettecga[15] = RGBVAL16(0xFF, 0xFF, 0xFF); + palettevga[0] = RGBVAL16(0, 0, 0); + palettevga[1] = RGBVAL16(0, 0, 169); + palettevga[2] = RGBVAL16(0, 169, 0); + palettevga[3] = RGBVAL16(0, 169, 169); + palettevga[4] = RGBVAL16(169, 0, 0); + palettevga[5] = RGBVAL16(169, 0, 169); + palettevga[6] = RGBVAL16(169, 169, 0); + palettevga[7] = RGBVAL16(169, 169, 169); + palettevga[8] = RGBVAL16(0, 0, 84); + palettevga[9] = RGBVAL16(0, 0, 255); + palettevga[10] = RGBVAL16(0, 169, 84); + palettevga[11] = RGBVAL16(0, 169, 255); + palettevga[12] = RGBVAL16(169, 0, 84); + palettevga[13] = RGBVAL16(169, 0, 255); + palettevga[14] = RGBVAL16(169, 169, 84); + palettevga[15] = RGBVAL16(169, 169, 255); + palettevga[16] = RGBVAL16(0, 84, 0); + palettevga[17] = RGBVAL16(0, 84, 169); + palettevga[18] = RGBVAL16(0, 255, 0); + palettevga[19] = RGBVAL16(0, 255, 169); + palettevga[20] = RGBVAL16(169, 84, 0); + palettevga[21] = RGBVAL16(169, 84, 169); + palettevga[22] = RGBVAL16(169, 255, 0); + palettevga[23] = RGBVAL16(169, 255, 169); + palettevga[24] = RGBVAL16(0, 84, 84); + palettevga[25] = RGBVAL16(0, 84, 255); + palettevga[26] = RGBVAL16(0, 255, 84); + palettevga[27] = RGBVAL16(0, 255, 255); + palettevga[28] = RGBVAL16(169, 84, 84); + palettevga[29] = RGBVAL16(169, 84, 255); + palettevga[30] = RGBVAL16(169, 255, 84); + palettevga[31] = RGBVAL16(169, 255, 255); + palettevga[32] = RGBVAL16(84, 0, 0); + palettevga[33] = RGBVAL16(84, 0, 169); + palettevga[34] = RGBVAL16(84, 169, 0); + palettevga[35] = RGBVAL16(84, 169, 169); + palettevga[36] = RGBVAL16(255, 0, 0); + palettevga[37] = RGBVAL16(255, 0, 169); + palettevga[38] = RGBVAL16(255, 169, 0); + palettevga[39] = RGBVAL16(255, 169, 169); + palettevga[40] = RGBVAL16(84, 0, 84); + palettevga[41] = RGBVAL16(84, 0, 255); + palettevga[42] = RGBVAL16(84, 169, 84); + palettevga[43] = RGBVAL16(84, 169, 255); + palettevga[44] = RGBVAL16(255, 0, 84); + palettevga[45] = RGBVAL16(255, 0, 255); + palettevga[46] = RGBVAL16(255, 169, 84); + palettevga[47] = RGBVAL16(255, 169, 255); + palettevga[48] = RGBVAL16(84, 84, 0); + palettevga[49] = RGBVAL16(84, 84, 169); + palettevga[50] = RGBVAL16(84, 255, 0); + palettevga[51] = RGBVAL16(84, 255, 169); + palettevga[52] = RGBVAL16(255, 84, 0); + palettevga[53] = RGBVAL16(255, 84, 169); + palettevga[54] = RGBVAL16(255, 255, 0); + palettevga[55] = RGBVAL16(255, 255, 169); + palettevga[56] = RGBVAL16(84, 84, 84); + palettevga[57] = RGBVAL16(84, 84, 255); + palettevga[58] = RGBVAL16(84, 255, 84); + palettevga[59] = RGBVAL16(84, 255, 255); + palettevga[60] = RGBVAL16(255, 84, 84); + palettevga[61] = RGBVAL16(255, 84, 255); + palettevga[62] = RGBVAL16(255, 255, 84); + palettevga[63] = RGBVAL16(255, 255, 255); + palettevga[64] = RGBVAL16(255, 125, 125); + palettevga[65] = RGBVAL16(255, 157, 125); + palettevga[66] = RGBVAL16(255, 190, 125); + palettevga[67] = RGBVAL16(255, 222, 125); + palettevga[68] = RGBVAL16(255, 255, 125); + palettevga[69] = RGBVAL16(222, 255, 125); + palettevga[70] = RGBVAL16(190, 255, 125); + palettevga[71] = RGBVAL16(157, 255, 125); + palettevga[72] = RGBVAL16(125, 255, 125); + palettevga[73] = RGBVAL16(125, 255, 157); + palettevga[74] = RGBVAL16(125, 255, 190); + palettevga[75] = RGBVAL16(125, 255, 222); + palettevga[76] = RGBVAL16(125, 255, 255); + palettevga[77] = RGBVAL16(125, 222, 255); + palettevga[78] = RGBVAL16(125, 190, 255); + palettevga[79] = RGBVAL16(125, 157, 255); + palettevga[80] = RGBVAL16(182, 182, 255); + palettevga[81] = RGBVAL16(198, 182, 255); + palettevga[82] = RGBVAL16(218, 182, 255); + palettevga[83] = RGBVAL16(234, 182, 255); + palettevga[84] = RGBVAL16(255, 182, 255); + palettevga[85] = RGBVAL16(255, 182, 234); + palettevga[86] = RGBVAL16(255, 182, 218); + palettevga[87] = RGBVAL16(255, 182, 198); + palettevga[88] = RGBVAL16(255, 182, 182); + palettevga[89] = RGBVAL16(255, 198, 182); + palettevga[90] = RGBVAL16(255, 218, 182); + palettevga[91] = RGBVAL16(255, 234, 182); + palettevga[92] = RGBVAL16(255, 255, 182); + palettevga[93] = RGBVAL16(234, 255, 182); + palettevga[94] = RGBVAL16(218, 255, 182); + palettevga[95] = RGBVAL16(198, 255, 182); + palettevga[96] = RGBVAL16(182, 255, 182); + palettevga[97] = RGBVAL16(182, 255, 198); + palettevga[98] = RGBVAL16(182, 255, 218); + palettevga[99] = RGBVAL16(182, 255, 234); + palettevga[100] = RGBVAL16(182, 255, 255); + palettevga[101] = RGBVAL16(182, 234, 255); + palettevga[102] = RGBVAL16(182, 218, 255); + palettevga[103] = RGBVAL16(182, 198, 255); + palettevga[104] = RGBVAL16(0, 0, 113); + palettevga[105] = RGBVAL16(28, 0, 113); + palettevga[106] = RGBVAL16(56, 0, 113); + palettevga[107] = RGBVAL16(84, 0, 113); + palettevga[108] = RGBVAL16(113, 0, 113); + palettevga[109] = RGBVAL16(113, 0, 84); + palettevga[110] = RGBVAL16(113, 0, 56); + palettevga[111] = RGBVAL16(113, 0, 28); + palettevga[112] = RGBVAL16(113, 0, 0); + palettevga[113] = RGBVAL16(113, 28, 0); + palettevga[114] = RGBVAL16(113, 56, 0); + palettevga[115] = RGBVAL16(113, 84, 0); + palettevga[116] = RGBVAL16(113, 113, 0); + palettevga[117] = RGBVAL16(84, 113, 0); + palettevga[118] = RGBVAL16(56, 113, 0); + palettevga[119] = RGBVAL16(28, 113, 0); + palettevga[120] = RGBVAL16(0, 113, 0); + palettevga[121] = RGBVAL16(0, 113, 28); + palettevga[122] = RGBVAL16(0, 113, 56); + palettevga[123] = RGBVAL16(0, 113, 84); + palettevga[124] = RGBVAL16(0, 113, 113); + palettevga[125] = RGBVAL16(0, 84, 113); + palettevga[126] = RGBVAL16(0, 56, 113); + palettevga[127] = RGBVAL16(0, 28, 113); + palettevga[128] = RGBVAL16(56, 56, 113); + palettevga[129] = RGBVAL16(68, 56, 113); + palettevga[130] = RGBVAL16(84, 56, 113); + palettevga[131] = RGBVAL16(97, 56, 113); + palettevga[132] = RGBVAL16(113, 56, 113); + palettevga[133] = RGBVAL16(113, 56, 97); + palettevga[134] = RGBVAL16(113, 56, 84); + palettevga[135] = RGBVAL16(113, 56, 68); + palettevga[136] = RGBVAL16(113, 56, 56); + palettevga[137] = RGBVAL16(113, 68, 56); + palettevga[138] = RGBVAL16(113, 84, 56); + palettevga[139] = RGBVAL16(113, 97, 56); + palettevga[140] = RGBVAL16(113, 113, 56); + palettevga[141] = RGBVAL16(97, 113, 56); + palettevga[142] = RGBVAL16(84, 113, 56); + palettevga[143] = RGBVAL16(68, 113, 56); + palettevga[144] = RGBVAL16(56, 113, 56); + palettevga[145] = RGBVAL16(56, 113, 68); + palettevga[146] = RGBVAL16(56, 113, 84); + palettevga[147] = RGBVAL16(56, 113, 97); + palettevga[148] = RGBVAL16(56, 113, 113); + palettevga[149] = RGBVAL16(56, 97, 113); + palettevga[150] = RGBVAL16(56, 84, 113); + palettevga[151] = RGBVAL16(56, 68, 113); + palettevga[152] = RGBVAL16(80, 80, 113); + palettevga[153] = RGBVAL16(89, 80, 113); + palettevga[154] = RGBVAL16(97, 80, 113); + palettevga[155] = RGBVAL16(105, 80, 113); + palettevga[156] = RGBVAL16(113, 80, 113); + palettevga[157] = RGBVAL16(113, 80, 105); + palettevga[158] = RGBVAL16(113, 80, 97); + palettevga[159] = RGBVAL16(113, 80, 89); + palettevga[160] = RGBVAL16(113, 80, 80); + palettevga[161] = RGBVAL16(113, 89, 80); + palettevga[162] = RGBVAL16(113, 97, 80); + palettevga[163] = RGBVAL16(113, 105, 80); + palettevga[164] = RGBVAL16(113, 113, 80); + palettevga[165] = RGBVAL16(105, 113, 80); + palettevga[166] = RGBVAL16(97, 113, 80); + palettevga[167] = RGBVAL16(89, 113, 80); + palettevga[168] = RGBVAL16(80, 113, 80); + palettevga[169] = RGBVAL16(80, 113, 89); + palettevga[170] = RGBVAL16(80, 113, 97); + palettevga[171] = RGBVAL16(80, 113, 105); + palettevga[172] = RGBVAL16(80, 113, 113); + palettevga[173] = RGBVAL16(80, 105, 113); + palettevga[174] = RGBVAL16(80, 97, 113); + palettevga[175] = RGBVAL16(80, 89, 113); + palettevga[176] = RGBVAL16(0, 0, 64); + palettevga[177] = RGBVAL16(16, 0, 64); + palettevga[178] = RGBVAL16(32, 0, 64); + palettevga[179] = RGBVAL16(48, 0, 64); + palettevga[180] = RGBVAL16(64, 0, 64); + palettevga[181] = RGBVAL16(64, 0, 48); + palettevga[182] = RGBVAL16(64, 0, 32); + palettevga[183] = RGBVAL16(64, 0, 16); + palettevga[184] = RGBVAL16(64, 0, 0); + palettevga[185] = RGBVAL16(64, 16, 0); + palettevga[186] = RGBVAL16(64, 32, 0); + palettevga[187] = RGBVAL16(64, 48, 0); + palettevga[188] = RGBVAL16(64, 64, 0); + palettevga[189] = RGBVAL16(48, 64, 0); + palettevga[190] = RGBVAL16(32, 64, 0); + palettevga[191] = RGBVAL16(16, 64, 0); + palettevga[192] = RGBVAL16(0, 64, 0); + palettevga[193] = RGBVAL16(0, 64, 16); + palettevga[194] = RGBVAL16(0, 64, 32); + palettevga[195] = RGBVAL16(0, 64, 48); + palettevga[196] = RGBVAL16(0, 64, 64); + palettevga[197] = RGBVAL16(0, 48, 64); + palettevga[198] = RGBVAL16(0, 32, 64); + palettevga[199] = RGBVAL16(0, 16, 64); + palettevga[200] = RGBVAL16(32, 32, 64); + palettevga[201] = RGBVAL16(40, 32, 64); + palettevga[202] = RGBVAL16(48, 32, 64); + palettevga[203] = RGBVAL16(56, 32, 64); + palettevga[204] = RGBVAL16(64, 32, 64); + palettevga[205] = RGBVAL16(64, 32, 56); + palettevga[206] = RGBVAL16(64, 32, 48); + palettevga[207] = RGBVAL16(64, 32, 40); + palettevga[208] = RGBVAL16(64, 32, 32); + palettevga[209] = RGBVAL16(64, 40, 32); + palettevga[210] = RGBVAL16(64, 48, 32); + palettevga[211] = RGBVAL16(64, 56, 32); + palettevga[212] = RGBVAL16(64, 64, 32); + palettevga[213] = RGBVAL16(56, 64, 32); + palettevga[214] = RGBVAL16(48, 64, 32); + palettevga[215] = RGBVAL16(40, 64, 32); + palettevga[216] = RGBVAL16(32, 64, 32); + palettevga[217] = RGBVAL16(32, 64, 40); + palettevga[218] = RGBVAL16(32, 64, 48); + palettevga[219] = RGBVAL16(32, 64, 56); + palettevga[220] = RGBVAL16(32, 64, 64); + palettevga[221] = RGBVAL16(32, 56, 64); + palettevga[222] = RGBVAL16(32, 48, 64); + palettevga[223] = RGBVAL16(32, 40, 64); + palettevga[224] = RGBVAL16(44, 44, 64); + palettevga[225] = RGBVAL16(48, 44, 64); + palettevga[226] = RGBVAL16(52, 44, 64); + palettevga[227] = RGBVAL16(60, 44, 64); + palettevga[228] = RGBVAL16(64, 44, 64); + palettevga[229] = RGBVAL16(64, 44, 60); + palettevga[230] = RGBVAL16(64, 44, 52); + palettevga[231] = RGBVAL16(64, 44, 48); + palettevga[232] = RGBVAL16(64, 44, 44); + palettevga[233] = RGBVAL16(64, 48, 44); + palettevga[234] = RGBVAL16(64, 52, 44); + palettevga[235] = RGBVAL16(64, 60, 44); + palettevga[236] = RGBVAL16(64, 64, 44); + palettevga[237] = RGBVAL16(60, 64, 44); + palettevga[238] = RGBVAL16(52, 64, 44); + palettevga[239] = RGBVAL16(48, 64, 44); + palettevga[240] = RGBVAL16(44, 64, 44); + palettevga[241] = RGBVAL16(44, 64, 48); + palettevga[242] = RGBVAL16(44, 64, 52); + palettevga[243] = RGBVAL16(44, 64, 60); + palettevga[244] = RGBVAL16(44, 64, 64); + palettevga[245] = RGBVAL16(44, 60, 64); + palettevga[246] = RGBVAL16(44, 52, 64); + palettevga[247] = RGBVAL16(44, 48, 64); + palettevga[248] = RGBVAL16(0, 0, 0); + palettevga[249] = RGBVAL16(0, 0, 0); + palettevga[250] = RGBVAL16(0, 0, 0); + palettevga[251] = RGBVAL16(0, 0, 0); + palettevga[252] = RGBVAL16(0, 0, 0); + palettevga[253] = RGBVAL16(0, 0, 0); + palettevga[254] = RGBVAL16(0, 0, 0); + palettevga[255] = RGBVAL16(0, 0, 0); +} + +extern uint8_t vidmode, portram[0x400]; + +#define XRES 320 +#define YRES 200 + +#include "font.h" + + +static unsigned short line[XRES]; + + +void drawscreentext80(void) { + uint16_t row, col, y, x, xpos; + uint16_t fontdata; + + for (y=0; y<(25*8); y++) + { + row = y>>3; + uint8_t * vrampt=&VRAM[160*row]; + xpos = 0; + for (col=0; col<80; col++) + { + uint8_t bold, attrib, cc, bg, fg; + cc = *vrampt++; + attrib = *vrampt++; + bg = (attrib >> 4) & 7; + fg = attrib & 0x0F; + //if (y == 0) {printf("0x%02X",cc);} + fontdata = ROM_READ(font, ((uint32_t)cc << 3) + (y&0x7)); + for (x=0; x<4; x++) + { + if (fontdata & 1) { + line[xpos++] = palettecga[fg]; + } else { + line[xpos++] = palettecga[bg]; + } + fontdata >>= 2; + } + } + + emu_DrawLine16(&line[0], XRES, YRES, y); + } +} + +void drawscreenlorescga(void) { + //uint16_t row; + uint16_t y, x, xpos; + uint8_t intensity, usepal; + uint16_t color; + usepal = (portram[0x3D9]>>5) & 1; + intensity = ( (portram[0x3D9]>>4) & 1) << 3; + + for (y=0; y<(25*8); y++) + { + //row = y>>3; + //uint8_t * vrampt=&VRAM[160*row]; + xpos = 0; + for (x=0; x> 1; + int xchar = x;// >> 1; + uint8_t curchar = VRAM[((ychar & 1) * 8192 + (ychar >> 1) * 80 + (xchar >> 2))]; + switch (xchar & 3) { + case 3: color = curchar & 3; break; + case 2: color = (curchar >> 2) & 3; break; + case 1: color = (curchar >> 4) & 3; break; + case 0: color = (curchar >> 6) & 3; break; + } + color = (color << 1) + usepal + intensity; + if (color == (usepal + intensity)) color = 0; + line[xpos++] = palettecga[color]; + } + + emu_DrawLine16(&line[0], XRES, YRES, y); + } +} + + +void drawscreenhirescga(void) { + uint16_t y, x, xpos; + uint16_t color; + for (y=0; y<(25*8); y++) + { + xpos = 0; + for (x=0; x> 1; + int xchar = x; + uint8_t curchar = VRAM[((ychar & 1) * 8192 + (ychar >> 1) * 80 + (xchar >> 3))]; + color = ((curchar >> (7-(x&7))) & 1) ? 15 : 0; + line[xpos++] = palettecga[color]; + } + + emu_DrawLine16(&line[0], XRES, YRES, y); + } +} + + +void updatescreen() { + switch (vidmode & 0x7F) { + case 0: + case 1: + //drawtext40(origaddr, value); + break; + case 2: + case 3: + //case 7: + drawscreentext80(); + break; + case 4: + drawscreenlorescga(); + break; + case 5: + drawscreenlorescga(); //change to BW function later + break; + case 6: + drawscreenhirescga(); + break; + } +//printf("%d\n",vidmode & 0x7F); +} + +static uint8_t nbkeys=0; +static uint8_t kcnt=0; +static int toggle=1; + +//static char * seq="DIR\r"; +//static char * seq="CAT.EXE\r"; +static char * seq="PRINCE.BAT\r"; + +static int mouse_x = 160; +static int mouse_y = 100; +static int prev_key = 0; +static int prev_j = 0; +static int prev_mouseb = 0; +static bool isMouse = true; +static int joynum = 1; +static int hk = 0; +static int prev_hk = 0; +static int k = 0; + +static void keyevent(int keysym, int isdown) +{ + uint8_t scancode = translatescancode(keysym); + if (scancode != 0xFF) { + portram[0x60] = scancode; + if (!isdown) portram[0x60] |= 0x80; + portram[0x64] |= 2; + doirq(1); + //vTaskDelay(50 / portTICK_PERIOD_MS); + } +} + +extern void apc_Input(int bClick) { + hk = emu_ReadI2CKeyboard(); + k = emu_ReadKeys(); + + if (nbkeys == 0) { + if (bClick & MASK_JOY2_BTN) { + nbkeys = strlen(seq); + kcnt=0; + } + } + else { + char k = seq[kcnt]; + if (k == 13) keyevent(0xFF0D,toggle); + else keyevent(k,toggle); + //setKey(ascii2scan[k],toggle); + if (!toggle) { + kcnt++; + nbkeys--; + toggle = true; + } + else { + toggle = false; + } + } +} + +static void do_events(void) +{ + if (hk != prev_hk) { + prev_hk == hk; + if ( (hk != 0) && (hk != prev_key) ) { + prev_key = hk; + keyevent ( hk, 0 ); + if (hk == 68) { + if (isMouse) isMouse = false; + else isMouse = true; + } + } + } + if ( (hk == 0) && (prev_key) ) { + keyevent ( prev_key, 1 ); + prev_key = 0; + } + + + if (!isMouse) + { + int j = 0; + if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) { + j |= 0x08; + } + if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) { + j |= 0x04; + } + if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) { + j |= 0x01; + } + if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) { + j |= 0x02; + } + if ( k & MASK_JOY2_BTN) { + j |= 0x80; + } + if (j != prev_j) { + //IkbdJoystickChange(joynum,j); + prev_j = j; + } + } + else { + if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) { + if ( mouse_x < XRES ) { + mouse_x += 1; + //Serial.print("r"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + else if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) { + if ( mouse_x > 1 ) { + mouse_x -= 1; + //Serial.print("l"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + else if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) { + if ( mouse_y > 1 ) { + mouse_y -= 1; + //Serial.print("u"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + else if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) { + if ( mouse_y < YRES ) { + mouse_y += 1; + //Serial.print("d"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + + int mouseb=0; + if ( ( k & MASK_JOY2_BTN) ){ + mouseb=1; + } + if ( (mouseb != prev_mouseb) ){ + //if (mouseb) IkbdMousePress(2); + //else IkbdMouseRelease(2); + //Serial.println("btoggle"); + //IkbdLoop(); + prev_mouseb = mouseb; + } + } +} + +void apc_Step(void) +{ + exec86(8000); + updatescreen(); + do_events(); + emu_DrawVsync(); +} + + + +void apc_Init(void) +{ + RAM = (uint8_t*) malloc(RAM_SIZE); + if (!RAM) emu_printf("SPI RAM malloc failed"); + LORAM = &LOMEM[0]; + //LORAM = (uint8_t*)malloc(NATIVE_RAM); + //if (!LORAM) emu_printf("LORAM malloc failed"); + + installPalette(); + init8253(); + reset86(); + init8259(); +} + +void apc_Start(char * filename) +{ + emu_printf("init started"); + initDisk(filename); + emu_printf("init done"); +} + + + + + + diff --git a/MCUME_teensy/teensy8086/test.h b/MCUME_teensy/teensy8086/test.h new file mode 100644 index 0000000..2b13c4a --- /dev/null +++ b/MCUME_teensy/teensy8086/test.h @@ -0,0 +1,5 @@ +extern void apc_Init(void); +extern void apc_Step(void); +extern void apc_Start(char * filename); +extern void apc_Input(int click); + diff --git a/MCUME_teensy/teensy8086/tft_t_dma.cpp b/MCUME_teensy/teensy8086/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensy8086/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 200 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensy8086/tft_t_dma_config.h b/MCUME_teensy/teensy8086/tft_t_dma_config.h new file mode 100644 index 0000000..9f12cd5 --- /dev/null +++ b/MCUME_teensy/teensy8086/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +//#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensy81/.DS_Store b/MCUME_teensy/teensy81/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensy81/.DS_Store differ diff --git a/MCUME_teensy/teensy81/AY8910.c b/MCUME_teensy/teensy81/AY8910.c new file mode 100644 index 0000000..189e358 --- /dev/null +++ b/MCUME_teensy/teensy81/AY8910.c @@ -0,0 +1,316 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.c **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.h for declarations. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "AY8910.h" +#include "emuapi.h" +#include + +static const unsigned char Envelopes[16][32] = +{ + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } +}; + +static const int Volumes[16] = +{ 0,1,2,4,6,8,11,16,23,32,45,64,90,128,180,255 }; +//{ 0,16,33,50,67,84,101,118,135,152,169,186,203,220,237,254 }; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First) +{ + static byte RegInit[16] = + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00 + }; + int J; + + /* Reset state */ + memcpy(D->R,RegInit,sizeof(D->R)); + D->EPhase = 0; + D->Clock = ClockHz>>4; + D->First = First; + D->Sync = AY8910_ASYNC; + D->Changed = 0x00; + D->EPeriod = 0; + D->ECount = 0; + D->Latch = 0x00; + + /* Set sound types */ + //SetSound(0+First,SND_MELODIC); + //SetSound(1+First,SND_MELODIC); + //SetSound(2+First,SND_MELODIC); + //SetSound(3+First,SND_NOISE); + //SetSound(4+First,SND_NOISE); + //SetSound(5+First,SND_NOISE); + + /* Silence all channels */ + for(J=0;JFreq[J]=D->Volume[J]=0; +#if HAS_SND + emu_sndPlaySound(J+First, 0, 0); +#endif + //Sound(J+First,0,0); + } +} + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V) +{ + D->Latch=V&0x0F; +} + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V) +{ + Write8910(D,D->Latch,V); +} + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D) +{ + return(D->R[D->Latch]); +} + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V) +{ + register int J,I; + + switch(R) + { + case 1: + case 3: + case 5: + V&=0x0F; + /* Fall through */ + case 0: + case 2: + case 4: + /* Write value */ + D->R[R]=V; + /* Exit if the channel is silenced */ + if(D->R[7]&(1<<(R>>1))) return; + /* Go to the first register in the pair */ + R&=0xFE; + /* Compute frequency */ + J=((int)(D->R[R+1]&0x0F)<<8)+D->R[R]; + /* Compute channel number */ + R>>=1; + /* Assign frequency */ + D->Freq[R]=D->Clock/(J? J:0x1000); + /* Compute changed channels mask */ + D->Changed|=1<R[6]=V&=0x1F; + /* Exit if noise channels are silenced */ + if(!(~D->R[7]&0x38)) return; + /* Compute and assign noise frequency */ + /* Shouldn't do <<2, but need to keep frequency down */ + J=D->Clock/((V&0x1F? (V&0x1F):0x20)<<2); + if(!(D->R[7]&0x08)) D->Freq[3]=J; + if(!(D->R[7]&0x10)) D->Freq[4]=J; + if(!(D->R[7]&0x20)) D->Freq[5]=J; + /* Compute changed channels mask */ + D->Changed|=0x38&~D->R[7]; + break; + + case 7: + /* Find changed channels */ + R=(V^D->R[7])&0x3F; + D->Changed|=R; + /* Write value */ + D->R[7]=V; + /* Update frequencies */ + for(J=0;R&&(J>=1,V>>=1) + if(R&1) + { + if(V&1) D->Freq[J]=0; + else if(J<3) + { + I=((int)(D->R[J*2+1]&0x0F)<<8)+D->R[J*2]; + D->Freq[J]=D->Clock/(I? I:0x1000); + } + else + { + /* Shouldn't do <<2, but need to keep frequency down */ + I=D->R[6]&0x1F; + D->Freq[J]=D->Clock/((I? I:0x20)<<2); + } + } + break; + + case 8: + case 9: + case 10: + /* Write value */ + D->R[R]=V&=0x1F; + /* Compute channel number */ + R-=8; + /* Compute and assign new volume */ + J=Volumes[V&0x10? Envelopes[D->R[13]&0x0F][D->EPhase]:(V&0x0F)]; + D->Volume[R]=J; + D->Volume[R+3]=(J+1)>>1; + /* Compute changed channels mask */ + D->Changed|=(0x09<R[7]; + break; + + case 11: + case 12: + /* Write value */ + D->R[R]=V; + /* Compute envelope period (why not <<4?) */ + J=((int)D->R[12]<<8)+D->R[11]; + D->EPeriod=1000*(J? J:0x10000)/D->Clock; + /* No channels changed */ + return; + + case 13: + /* Write value */ + D->R[R]=V&=0x0F; + /* Reset envelope */ + D->ECount = 0; + D->EPhase = 0; + for(J=0;JR[J+8]&0x10) + { + I = Volumes[Envelopes[V][0]]; + D->Volume[J] = I; + D->Volume[J+3] = (I+1)>>1; + D->Changed |= (0x09<R[7]; + } + break; + + case 14: + case 15: + /* Write value */ + D->R[R]=V; + /* No channels changed */ + return; + + default: + /* Wrong register, do nothing */ + return; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS) +{ + register int J,I; + + /* Exit if no envelope running */ + if(!D->EPeriod) return; + + /* Count milliseconds */ + D->ECount += mS; + if(D->ECountEPeriod) return; + + /* Count steps */ + J = D->ECount/D->EPeriod; + D->ECount -= J*D->EPeriod; + + /* Count phases */ + D->EPhase += J; + if(D->EPhase>31) + D->EPhase = (D->R[13]&0x09)==0x08? (D->EPhase&0x1F):31; + + /* Set envelope volumes for relevant channels */ + for(I=0;I<3;++I) + if(D->R[I+8]&0x10) + { + J = Volumes[Envelopes[D->R[13]&0x0F][D->EPhase]]; + D->Volume[I] = J; + D->Volume[I+3] = (J+1)>>1; + D->Changed |= (0x09<R[7]; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync) +{ + register int J,I; + + /* Hit MIDI drums for noise channels, if requested */ + if(Sync&AY8910_DRUMS) + { + Sync&=~AY8910_DRUMS; + J = (D->Freq[3]? D->Volume[3]:0) + + (D->Freq[4]? D->Volume[4]:0) + + (D->Freq[5]? D->Volume[5]:0); + if(J) { + //Drum(DRM_MIDI|28,(J+2)/3); + } + } + + if(Sync!=AY8910_FLUSH) D->Sync=Sync; + + for(J=0,I=D->Changed;I&&(J>=1) + if(I&1) { +#if HAS_SND + emu_sndPlaySound(J+D->First, D->Volume[J], D->Freq[J]); +#endif + //Sound(J+D->First,D->Freq[J],D->Volume[J]); + } + + D->Changed=0x00; +} + diff --git a/MCUME_teensy/teensy81/AY8910.h b/MCUME_teensy/teensy81/AY8910.h new file mode 100644 index 0000000..3c8e7fb --- /dev/null +++ b/MCUME_teensy/teensy81/AY8910.h @@ -0,0 +1,98 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.h **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.c for the actual code. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef AY8910_H +#define AY8910_H +#ifdef __cplusplus +extern "C" { +#endif + +#define AY8910_CHANNELS 6 /* 3 melodic + 3 noise chanls */ + +#define AY8910_ASYNC 0 /* Asynchronous emulation */ +#define AY8910_SYNC 1 /* Synchronous emulation */ +#define AY8910_FLUSH 2 /* Flush buffers only */ +#define AY8910_DRUMS 0x80 /* Hit drums for noise chnls */ + +#ifndef BYTE_TYPE_DEFINED +#define BYTE_TYPE_DEFINED +typedef unsigned char byte; +#endif + +/** AY8910 ***************************************************/ +/** This data structure stores AY8910 state. **/ +/*************************************************************/ +typedef struct +{ + byte R[16]; /* PSG registers contents */ + int Freq[AY8910_CHANNELS]; /* Frequencies (0 for off) */ + int Volume[AY8910_CHANNELS]; /* Volumes (0..255) */ + int Clock; /* Base clock used by PSG */ + int First; /* First used Sound() channel */ + byte Changed; /* Bitmap of changed channels */ + byte Sync; /* AY8910_SYNC/AY8910_ASYNC */ + byte Latch; /* Latch for the register num */ + int EPeriod; /* Envelope step in msecs */ + int ECount; /* Envelope step counter */ + int EPhase; /* Envelope phase */ +} AY8910; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First); + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V); + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V); + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V); + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D); + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync); + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS); + +#ifdef __cplusplus +} +#endif +#endif /* AY8910_H */ + diff --git a/MCUME_teensy/teensy81/AudioPlaySystem.cpp b/MCUME_teensy/teensy81/AudioPlaySystem.cpp new file mode 100644 index 0000000..8fea18d --- /dev/null +++ b/MCUME_teensy/teensy81/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensy81/AudioPlaySystem.h b/MCUME_teensy/teensy81/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensy81/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensy81/Z80.c b/MCUME_teensy/teensy81/Z80.c new file mode 100644 index 0000000..130a2ce --- /dev/null +++ b/MCUME_teensy/teensy81/Z80.c @@ -0,0 +1,462 @@ +/* Emulation of the Z80 CPU with hooks into the other parts of z81. + * Copyright (C) 1994 Ian Collier. + * z81 changes (C) 1995-2001 Russell Marks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include /* for memset/memcpy */ +#include "z80.h" + +#define parity(a) (partable[a]) + +unsigned char partable[256]={ + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, + 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4 + }; + + +unsigned long tstates=0,tsmax=65000,frames=0; + +/* odd place to have this, but the display does work in an odd way :-) */ +unsigned char scrnbmp_new[ZX_VID_FULLWIDTH*ZX_VID_FULLHEIGHT/8]; /* written */ + +/* checked against for diffs */ +int liney=0, lineyi=0; +int vsy=0; +unsigned long linestart=0; +int vsync_toggle=0,vsync_lasttoggle=0; + +static int linestate=0, linex=0, nrmvideo=1; + +#define LINEX ((tstates-linestart)>>2) + + + +/* for vsync off -> on */ +void vsync_raise(void) +{ + /* save current pos */ + vsy=liney; +} + + +/* for vsync on -> off */ +void vsync_lower(void) +{ + int ny=liney,y; + + vsync_toggle++; + + /* we don't emulate this stuff by default; if nothing else, + * it can be fscking annoying when you're typing in a program. + */ + if(!vsync_visuals) + return; + + /* even when we do emulate it, we don't bother with x timing, + * just the y. It gives reasonable results without being too + * complicated, I think. + */ + if(vsy<0) vsy=0; + if(vsy>=ZX_VID_FULLHEIGHT) vsy=ZX_VID_FULLHEIGHT-1; + if(ny<0) ny=0; + if(ny>=ZX_VID_FULLHEIGHT) ny=ZX_VID_FULLHEIGHT-1; + + /* XXX both of these could/should be made into single memset calls */ + if(ny=1) { + if (op&64) { + linestate = 0; + linex = ZX_VID_FULLWIDTH/8; + if (ramsize>=4 && !zx80) { + liney++; + lineyi=1; + } + } else { + linestate++; + linex++; + } + } + + if (!nrmvideo) ulacharline = 0; + + if((pc&0x8000) && !(op&64)) + { + int x,y,v; + + /* do the ULA's char-generating stuff */ + x=linex; + y=liney; + /* printf("ULA %3d,%3d = %02X\n",x,y,op);*/ + if(y>=0 && y=0 && x=tsmax) + { + retval=1; + tstates-=tsmax; + linestart-=tsmax; + nextlinetime-=tsmax; + lastvsyncpend-=tsmax; + vsync_lasttoggle=vsync_toggle; + vsync_toggle=0; + + frames++; + frame_pause(); + } + + /* the vsync length test is pretty arbitrary, because + * the timing isn't very accurate (more or less an instruction + * count) - but it's good enough in practice. + * + * the vsync_toggle test is fairly arbitrary too; + * there has to have been `not too many' for a TV to get + * confused. In practice, more than one would screw it up, + * but since we could be looking at over a frames' worth + * given where vsync_toggle is zeroed, we play it safe. + * also, we use a copy of the previous chunk's worth, + * since we need a full frame(-plus) to decide this. + */ + if(vsynclen && !vsync) + { + if(vsynclen>=10) + { + if(vsync_lasttoggle<=2) + { + vsyncpend=1; /* start of frame */ + /* FAST mode screws up without this, but it's a bit + * unpleasant... :-/ + */ + tstates=nextlinetime; + } + } + else + { + /* independent timing for this would be awkward, so + * anywhere on the line is good enough. Also, + * don't count it as a toggle. + */ + vsync_toggle--; + hsyncskip=1; + } + } + + /* should do this all the time vsync is set */ + if(vsync) + { + ulacharline=0; + vsynclen++; + } + else { + vsynclen=0; + } + + if(tstates>=nextlinetime) /* new line */ + { + /* generate fake sync if we haven't had one for a while; + * but if we just loaded/saved, wait for the first real frame instead + * to avoid jumpiness. + */ + if(!vsync && tstates-lastvsyncpend>=tsmax && !framewait) + vsyncpend=1; + + /* but that won't ever happen if we always have vsync on - + * i.e., if we're grinding away in FAST mode. So for that + * case, we check for vsync being held for a full frame. + */ + if(vsync_visuals && vsynclen>=tsmax) + { + vsyncpend=1; + vsynclen=1; + goto postcopy; /* skip the usual copying */ + } + + if(!vsyncpend) + { + if (!lineyi) liney++; + + if(hsyncgen && !hsyncskip) + { + ulacharline++; + ulacharline&=7; + } + } + else + { + bitbufBlit(scrnbmp_new); + postcopy: + memset(scrnbmp_new,0,sizeof(scrnbmp_new)); + lastvsyncpend=tstates; + vsyncpend=0; + framewait=0; + liney=-1; /* XXX might be something up here */ + } + + if(nmigen) + nmipend=1; + + hsyncskip=0; + linestart=nextlinetime; + nextlinetime+=linegap; + } + + if(intsample && nmipend) + { + nmipend=0; + + if(nmigen) + { + iff2=iff1; + iff1=0; + /* hardware syncs tstates to falling of NMI pulse (?), + * so a slight kludge here... + */ + if(fetch(pc&0x7fff)==0x76) + { + pc++; + tstates=linestart; + } + else + { + /* this seems curiously long, but equally, seems + * to be just about right. :-) + */ + tstates+=27; + } + push2(pc); + pc=0x66; + } + } + + if(intsample && intpend) + { + intpend=0; + if(iff1) + { + if(fetch(pc&0x7fff)==0x76)pc++; + iff1=iff2=0; + tstates+=5; /* accompanied by an input from the data bus */ + switch(im) + { + case 0: /* IM 0 */ + case 1: /* undocumented */ + case 2: /* IM 1 */ + /* there is little to distinguish between these cases */ + tstates+=9; /* perhaps */ + push2(pc); + pc=0x38; + break; + case 3: /* IM 2 */ + /* (seems unlikely it'd ever be used on the '81, but...) */ + tstates+=13; /* perhaps */ + { + int addr=fetch2((i<<8)|0xff); + push2(pc); + pc=addr; + } + } + } + } + + /* this isn't used for any sort of Z80 interrupts, + * purely for the emulator's UI. + */ + if(interrupted) + { + if(interrupted==1) + { + do_interrupt(); /* also zeroes it */ + } + else /* must be 2 */ + { + /* a kludge to let us do a reset */ + interrupted=0; + a=f=b=c=d=e=h=l=a1=f1=b1=c1=d1=e1=h1=l1=i=iff1=iff2=im=r=0; + ixoriy=new_ixoriy=0; + ix=iy=sp=pc=0; + tstates=radjust=0; + nextlinetime=linegap; + vsyncpend=vsynclen=0; + hsyncskip=0; + } + } + + if (retval) break; + } + +} + +void ResetZ80(void) +{ + a=f=b=c=d=e=h=l=a1=f1=b1=c1=d1=e1=h1=l1=i=iff1=iff2=im=r=0; + ixoriy=new_ixoriy=0; + ix=iy=sp=pc=0; + tstates=radjust=0; + nextlinetime=linegap; + tstates=0; + frames=0; + liney=0; + vsy=0; + linestart=0; + vsync_toggle=0; + vsync_lasttoggle=0; + + /* we load a snapshot, in effect.This does the registers. + */ + if(autoload) + { + if (zx80) { + /* Registers (common values) */ + a = 0x00; f = 0x44; b = 0x00; c = 0x00; + d = 0x07; e = 0xae; h = 0x40; l = 0x2a; + pc = 0x0283; + ix = 0x0000; iy = 0x4000; i = 0x0e; r = 0xdd; + a1 = 0x00; f1 = 0x00; b1 = 0x00; c1 = 0x21; + d1 = 0xd8; e1 = 0xf0; h1 = 0xd8; l1 = 0xf0; + iff1 = 0x00; iff2 = 0x00; im = 0x02; + radjust = 0x6a; + /* Machine Stack (common values) */ + if (ramsize >= 16) { + sp = 0x8000 - 4; + } else { + sp = 0x4000 - 4 + ramsize * 1024; + } + mem[sp + 0] = 0x47; + mem[sp + 1] = 0x04; + mem[sp + 2] = 0xba; + mem[sp + 3] = 0x3f; + /* Now override if RAM configuration changes things + * (there's a possibility these changes are unimportant) */ + if (ramsize == 16) { + mem[sp + 2] = 0x22; + } + } else { + static unsigned char bit1[9]={0xFF,0x80,0xFC,0x7F,0x00,0x80,0x00,0xFE,0xFF}; + static unsigned char bit2[4]={0x76,0x06,0x00,0x3e}; + + /* memory will already be zeroed at this point */ + + memcpy(mem+0x4000,bit1,9); + memcpy(mem+0x7ffc,bit2,4); + + a=0x0B; f=0x85; b=0x00; c=0xFF; + d=0x43; e=0x99; h=0xC3; l=0x99; + a1=0xE2; f1=0xA1; b1=0x81; c1=0x02; + d1=0x00; e1=0x2B; h1=0x00; l1=0x00; + i=0x1E; iff1=iff2=0; + im=2; + r=0xDD; radjust=0xCA; + ix=0x281; iy=0x4000; + sp=0x7FFC; + pc=0x207; + } + + + /* finally, load. It'll reset (via reset81) if it fails. */ + load_p(32768); + + /* wait for a real frame, to avoid an annoying frame `jump'. */ + framewait=1; + } +} + + diff --git a/MCUME_teensy/teensy81/Z80.h b/MCUME_teensy/teensy81/Z80.h new file mode 100644 index 0000000..5a20dd8 --- /dev/null +++ b/MCUME_teensy/teensy81/Z80.h @@ -0,0 +1,79 @@ +/* z81/xz81, Linux console and X ZX81/ZX80 emulators. + * Copyright (C) 1994 Ian Collier. z81 changes (C) 1995-2001 Russell Marks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "common.h" + +#define Z80_quit 1 +#define Z80_NMI 2 +#define Z80_reset 3 +#define Z80_load 4 +#define Z80_save 5 +#define Z80_log 6 + +extern int interrupted; +extern unsigned long tstates,tsmax,frames; + +extern void setzx80mode(void); +extern void vsync_raise(void); +extern void vsync_lower(void); +extern void ResetZ80(void); +extern void ExecZ80(void); + +#define fetch(x) (memptr[(unsigned short)(x)>>10][(x)&1023]) +#define fetch2(x) ((fetch((x)+1)<<8)|fetch(x)) + + +#define store(x,y) do {\ + unsigned short off=(x)&1023;\ + unsigned char page=(unsigned short)(x)>>10;\ + int attr=memattr[page];\ + if(attr){\ + memptr[page][off]=(y);\ + }\ + } while(0) + +#define store2b(x,hi,lo) do {\ + unsigned short off=(x)&1023;\ + unsigned char page=(unsigned short)(x)>>10;\ + int attr=memattr[page];\ + if(attr) { \ + memptr[page][off]=(lo);\ + memptr[page][off+1]=(hi);\ + }\ + } while(0) + +#define store2(x,y) store2b(x,(y)>>8,(y)&255) + +#ifdef __GNUC__ +static void inline storefunc(unsigned short ad,unsigned char b){ + store(ad,b); +} +#undef store +#define store(x,y) storefunc(x,y) + +static void inline store2func(unsigned short ad,unsigned char b1,unsigned char b2){ + store2b(ad,b1,b2); +} +#undef store2b +#define store2b(x,hi,lo) store2func(x,hi,lo) +#endif + +#define bc ((b<<8)|c) +#define de ((d<<8)|e) +#define hl ((h<<8)|l) + diff --git a/MCUME_teensy/teensy81/bmpjoy.h b/MCUME_teensy/teensy81/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensy81/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensy81/bmptft.h b/MCUME_teensy/teensy81/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensy81/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy81/bmpvbar.h b/MCUME_teensy/teensy81/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensy81/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy81/bmpvga.h b/MCUME_teensy/teensy81/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensy81/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensy81/cbops.h b/MCUME_teensy/teensy81/cbops.h new file mode 100644 index 0000000..b5148ba --- /dev/null +++ b/MCUME_teensy/teensy81/cbops.h @@ -0,0 +1,177 @@ +/* Emulations of the CB operations of the Z80 instruction set. + * Copyright (C) 1994 Ian Collier. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define var_t unsigned char t +#define rlc(x) (x=(x<<1)|(x>>7),rflags(x,x&1)) +#define rrc(x) do{var_t=x&1;x=(x>>1)|(t<<7);rflags(x,t);}while(0) +#define rl(x) do{var_t=x>>7;x=(x<<1)|(f&1);rflags(x,t);}while(0) +#define rr(x) do{var_t=x&1;x=(x>>1)|(f<<7);rflags(x,t);}while(0) +#define sla(x) do{var_t=x>>7;x<<=1;rflags(x,t);}while(0) +#define sra(x) do{var_t=x&1;x=((signed char)x)>>1;rflags(x,t);}while(0) +#define sll(x) do{var_t=x>>7;x=(x<<1)|1;rflags(x,t);}while(0) +#define srl(x) do{var_t=x&1;x>>=1;rflags(x,t);}while(0) + +#define rflags(x,c) (f=(c)|(x&0xa8)|((!x)<<6)|parity(x)) + +#define bit(n,x) (f=(f&1)|((x&(1<>3)&7; + switch(op&0xc7){ + case 0x40: bit(n,b); break; + case 0x41: bit(n,c); break; + case 0x42: bit(n,d); break; + case 0x43: bit(n,e); break; + case 0x44: bit(n,h); break; + case 0x45: bit(n,l); break; + case 0x46: tstates+=4;val=fetch(addr);bit(n,val);store(addr,val);break; + case 0x47: bit(n,a); break; + case 0x80: res(n,b); break; + case 0x81: res(n,c); break; + case 0x82: res(n,d); break; + case 0x83: res(n,e); break; + case 0x84: res(n,h); break; + case 0x85: res(n,l); break; + case 0x86: tstates+=4;val=fetch(addr);res(n,val);store(addr,val);break; + case 0x87: res(n,a); break; + case 0xc0: set(n,b); break; + case 0xc1: set(n,c); break; + case 0xc2: set(n,d); break; + case 0xc3: set(n,e); break; + case 0xc4: set(n,h); break; + case 0xc5: set(n,l); break; + case 0xc6: tstates+=4;val=fetch(addr);set(n,val);store(addr,val);break; + case 0xc7: set(n,a); break; + } + } + if(ixoriy)switch(reg){ + case 0:b=val; break; + case 1:c=val; break; + case 2:d=val; break; + case 3:e=val; break; + case 4:h=val; break; + case 5:l=val; break; + case 7:a=val; break; + } +} + +#undef var_t +#undef rlc +#undef rrc +#undef rl +#undef rr +#undef sla +#undef sra +#undef sll +#undef srl +#undef rflags +#undef bit +#undef set +#undef res + diff --git a/MCUME_teensy/teensy81/common.h b/MCUME_teensy/teensy81/common.h new file mode 100644 index 0000000..1fd420d --- /dev/null +++ b/MCUME_teensy/teensy81/common.h @@ -0,0 +1,46 @@ + +typedef unsigned char byte; +//typedef unsigned short word; + +#define WIDTH 320 +#define HEIGHT 192 +#define BORDER 32 + +#define CYCLES_PER_FRAME 65000//3500000/50 + + +/* full internal image with overscan (but not hsync/vsync areas) */ +#define ZX_VID_MARGIN 55 +#define ZX_VID_HMARGIN (8*8) +#define ZX_VID_FULLWIDTH (2*ZX_VID_HMARGIN+32*8) /* sic */ +#define ZX_VID_FULLHEIGHT (2*ZX_VID_MARGIN+192) + + +/* AY board types */ +#define AY_TYPE_NONE 0 +#define AY_TYPE_QUICKSILVA 1 +#define AY_TYPE_ZONX 2 + + +extern unsigned char * mem; +extern unsigned char *memptr[64]; +extern int memattr[64]; +extern unsigned long tstates,tsmax; +extern int vsync_visuals; +extern int ramsize; +extern int interrupted; +extern int nmigen,hsyncgen,vsync; +extern int autoload; +extern int zx80; + +extern void sighandler(int a); +extern unsigned int in(int h,int l); +extern unsigned int out(int h,int l,int a); +extern void do_interrupt(); +extern void save_p(int a); +extern void load_p(int a); +extern void do_interrupt(); +extern void reset81(); +extern void frame_pause(void); +extern void bitbufBlit(unsigned char * buf); + diff --git a/MCUME_teensy/teensy81/edops.h b/MCUME_teensy/teensy81/edops.h new file mode 100644 index 0000000..c68237e --- /dev/null +++ b/MCUME_teensy/teensy81/edops.h @@ -0,0 +1,545 @@ +/* Emulations of the ED operations of the Z80 instruction set. + * Copyright (C) 1994 Ian Collier. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define input(var) { unsigned short u;\ + var=u=in(b,c);\ + tstates+=u>>8;\ + f=(f&1)|(var&0xa8)|((!var)<<6)|parity(var);\ + } +#define sbchl(x) { unsigned short z=(x);\ + unsigned long t=(hl-z-cy)&0x1ffff;\ + f=((t>>8)&0xa8)|(t>>16)|2|\ + (((hl&0xfff)<(z&0xfff)+cy)<<4)|\ + (((hl^z)&(hl^t)&0x8000)>>13)|\ + ((!(t&0xffff))<<6)|2;\ + l=t;\ + h=t>>8;\ + } + +#define adchl(x) { unsigned short z=(x);\ + unsigned long t=hl+z+cy;\ + f=((t>>8)&0xa8)|(t>>16)|\ + (((hl&0xfff)+(z&0xfff)+cy>0xfff)<<4)|\ + (((~hl^z)&(hl^t)&0x8000)>>13)|\ + ((!(t&0xffff))<<6)|2;\ + l=t;\ + h=t>>8;\ + } + +#define neg (a=-a,\ + f=(a&0xa8)|((!a)<<6)|(((a&15)>0)<<4)|((a==128)<<2)|2|(a>0)) + +{ + unsigned char op=fetch(pc&0x7fff); + pc++; + radjust++; + switch(op){ +instr(0x40,8); + input(b); +endinstr; + +instr(0x41,8); + tstates+=out(b,c,b); +endinstr; + +instr(0x42,11); + sbchl(bc); +endinstr; + +instr(0x43,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2b(addr,b,c); + } +endinstr; + +instr(0x44,4); + neg; +endinstr; + +instr(0x45,4); + iff1=iff2; + ret; +endinstr; + +instr(0x46,4); + im=0; +endinstr; + +instr(0x47,5); + i=a; +endinstr; + +instr(0x48,8); + input(c); +endinstr; + +instr(0x49,8); + tstates+=out(b,c,c); +endinstr; + +instr(0x4a,11); + adchl(bc); +endinstr; + +instr(0x4b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + c=fetch(addr); + b=fetch(addr+1); + } +endinstr; + +instr(0x4c,4); + neg; +endinstr; + +instr(0x4d,4); + ret; +endinstr; + +instr(0x4e,4); + im=1; +endinstr; + +instr(0x4f,5); + r=a; + radjust=r; +endinstr; + +instr(0x50,8); + input(d); +endinstr; + +instr(0x51,8); + tstates+=out(b,c,d); +endinstr; + +instr(0x52,11); + sbchl(de); +endinstr; + +instr(0x53,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2b(addr,d,e); + } +endinstr; + +instr(0x54,4); + neg; +endinstr; + +instr(0x55,4); + ret; +endinstr; + +instr(0x56,4); + im=2; +endinstr; + +instr(0x57,5); + a=i; + f=(f&1)|(a&0xa8)|((!a)<<6)|(iff2<<2); +endinstr; + +instr(0x58,8); + input(e); +endinstr; + +instr(0x59,8); + tstates+=out(b,c,e); +endinstr; + +instr(0x5a,11); + adchl(de); +endinstr; + +instr(0x5b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + e=fetch(addr); + d=fetch(addr+1); + } +endinstr; + +instr(0x5c,4); + neg; +endinstr; + +instr(0x5d,4); + ret; +endinstr; + +instr(0x5e,4); + im=3; +endinstr; + +instr(0x5f,5); + r=(r&0x80)|(radjust&0x7f); + a=r; + f=(f&1)|(a&0xa8)|((!a)<<6)|(iff2<<2); +endinstr; + +instr(0x60,8); + input(h); +endinstr; + +instr(0x61,8); + tstates+=out(b,c,h); +endinstr; + +instr(0x62,11); + sbchl(hl); +endinstr; + +instr(0x63,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2b(addr,h,l); + } +endinstr; + +instr(0x64,4); + neg; +endinstr; + +instr(0x65,4); + ret; +endinstr; + +instr(0x66,4); + im=0; +endinstr; + +instr(0x67,14); + {unsigned char t=fetch(hl); + unsigned char u=(a<<4)|(t>>4); + a=(a&0xf0)|(t&0x0f); + store(hl,u); + f=(f&1)|(a&0xa8)|((!a)<<6)|parity(a); + } +endinstr; + +instr(0x68,8); + input(l); +endinstr; + +instr(0x69,8); + tstates+=out(b,c,l); +endinstr; + +instr(0x6a,11); + adchl(hl); +endinstr; + +instr(0x6b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + l=fetch(addr); + h=fetch(addr+1); + } +endinstr; + +instr(0x6c,4); + neg; +endinstr; + +instr(0x6d,4); + ret; +endinstr; + +instr(0x6e,4); + im=1; +endinstr; + +instr(0x6f,5); + {unsigned char t=fetch(hl); + unsigned char u=(a&0x0f)|(t<<4); + a=(a&0xf0)|(t>>4); + store(hl,u); + f=(f&1)|(a&0xa8)|((!a)<<6)|parity(a); + } +endinstr; + +instr(0x70,8); + {unsigned char x;input(x);} +endinstr; + +instr(0x71,8); + tstates+=out(b,c,0); +endinstr; + +instr(0x72,11); + sbchl(sp); +endinstr; + +instr(0x73,16); + {unsigned short addr=fetch2(pc); + pc+=2; + store2(addr,sp); + } +endinstr; + +instr(0x74,4); + neg; +endinstr; + +instr(0x75,4); + ret; +endinstr; + +instr(0x76,4); + im=2; +endinstr; + +instr(0x78,8); + input(a); +endinstr; + +instr(0x79,8); + tstates+=out(b,c,a); +endinstr; + +instr(0x7a,11); + adchl(sp); +endinstr; + +instr(0x7b,16); + {unsigned short addr=fetch2(pc); + pc+=2; + sp=fetch2(addr); + } +endinstr; + +instr(0x7c,4); + neg; +endinstr; + +instr(0x7d,4); + ret; +endinstr; + +instr(0x7e,4); + im=3; +endinstr; + +instr(0xa0,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!++l)h++; + if(!++e)d++; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + } +endinstr; + +instr(0xa1,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!++l)h++; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + } +endinstr; + +instr(0xa2,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!++l)h++; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c)&4); + } +endinstr; + +instr(0xa3,12); /* I can't determine the correct flags outcome for the + block OUT instructions. Spec says that the carry + flag is left unchanged and N is set to 1, but that + doesn't seem to be the case... */ + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!++l)h++; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + } +endinstr; + +instr(0xa8,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!l--)h--; + if(!e--)d--; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + } +endinstr; + +instr(0xa9,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!l--)h--; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + } +endinstr; + +instr(0xaa,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!l--)h--; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c^4)&4); + } +endinstr; + +instr(0xab,12); + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!l--)h--; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + } +endinstr; + +/* Note: the Z80 implements "*R" as "*" followed by JR -2. No reason + to change this... */ + +instr(0xb0,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!++l)h++; + if(!++e)d++; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + if(b|c)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb1,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!++l)h++; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + if((f&0x44)==4)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb2,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!++l)h++; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c)&4); + if(b)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb3,12); + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!++l)h++; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + if(b)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb8,12); + {unsigned char x=fetch(hl); + store(de,x); + if(!l--)h--; + if(!e--)d--; + if(!c--)b--; + f=(f&0xc1)|(x&0x28)|(((b|c)>0)<<2); + if(b|c)pc-=2,tstates+=5; + } +endinstr; + +instr(0xb9,12); + {unsigned char carry=cy; + cpa(fetch(hl)); + if(!l--)h--; + if(!c--)b--; + f=(f&0xfa)|carry|(((b|c)>0)<<2); + if((f&0x44)==4)pc-=2,tstates+=5; + } +endinstr; + +instr(0xba,12); + {unsigned short t=in(b,c); + store(hl,t); + tstates+=t>>8; + if(!l--)h--; + b--; + f=(b&0xa8)|((b>0)<<6)|2|((parity(b)^c^4)&4); + if(b)pc-=2,tstates+=5; + } +endinstr; + +instr(0xbb,12); + {unsigned char x=fetch(hl); + tstates+=out(b,c,x); + if(!l--)h--; + b--; + f=(f&1)|0x12|(b&0xa8)|((b==0)<<6); + if(b)pc-=2,tstates+=5; + } +endinstr; + +/* save/load patches */ + +instr(0xfc,4); +#ifdef SZ81 /* Added by Thunor */ + if(!zx80 && hl < 0x8000) + { + sdl_load_file(hl,LOAD_FILE_METHOD_NAMEDLOAD); + } + else /* if((!zx80 && hl >= 0x8000) || zx80) */ + { + sdl_load_file(hl,LOAD_FILE_METHOD_SELECTLOAD); + } +#else + load_p(hl); +#endif + framewait=1; +endinstr; + +instr(0xfd,4); +#ifdef SZ81 /* Added by Thunor */ + if(zx80) + { + sdl_save_file(hl,SAVE_FILE_METHOD_UNNAMEDSAVE); + } + else + { + sdl_save_file(hl,SAVE_FILE_METHOD_NAMEDSAVE); + } +#else + save_p(hl); +#endif + framewait=1; +endinstr; + +default: tstates+=4; + +}} + diff --git a/MCUME_teensy/teensy81/emuapi.cpp b/MCUME_teensy/teensy81/emuapi.cpp new file mode 100644 index 0000000..1c5de49 --- /dev/null +++ b/MCUME_teensy/teensy81/emuapi.cpp @@ -0,0 +1,1052 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logozx80kbd.h" +#include "logozx81kbd.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; +static const uint16_t * logo = logozx80kbd; +static const unsigned short * keysw = keyswzx80; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + logo = logozx81kbd; + keysw = keyswzx81; + } + else { + logo = logozx80kbd; + keysw = keyswzx80; + } +} + + + diff --git a/MCUME_teensy/teensy81/emuapi.h b/MCUME_teensy/teensy81/emuapi.h new file mode 100644 index 0000000..a24a29b --- /dev/null +++ b/MCUME_teensy/teensy81/emuapi.h @@ -0,0 +1,142 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " ZX81/ZX80 Emulator " +#define ROMSDIR "z81" + +#define emu_Init(ROM) {z81_Start(ROM); z81_Init(); } +#define emu_Step(x) {z81_Step();} +#define emu_Input(x) {} + +#define PALETTE_SIZE 2 +#define VID_FRAME_SKIP 0x3 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 10 +#define KEYBOARD_Y 8 +#define KEYBOARD_KEY_H 40 +#define KEYBOARD_KEY_W 30 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keyswzx80[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y+16, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H-6, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_END}; + +const unsigned short keyswzx81[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_END}; + +const unsigned short keys[] = { + 30,31,32,33,34,35,36,37,38,39, + 20,26, 8,21,23,28,25,12,18,19, + 4, 9, 7,22, 4,11,13,14,15,40, + 25, 6,27,29,224,5,17,16,225,44 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + + diff --git a/MCUME_teensy/teensy81/font8x8.h b/MCUME_teensy/teensy81/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensy81/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensy81/iopins.h b/MCUME_teensy/teensy81/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensy81/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensy81/keyboard_osd.h b/MCUME_teensy/teensy81/keyboard_osd.h new file mode 100644 index 0000000..081bcdd --- /dev/null +++ b/MCUME_teensy/teensy81/keyboard_osd.h @@ -0,0 +1,21 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + + diff --git a/MCUME_teensy/teensy81/logozx80kbd.h b/MCUME_teensy/teensy81/logozx80kbd.h new file mode 100644 index 0000000..1405415 --- /dev/null +++ b/MCUME_teensy/teensy81/logozx80kbd.h @@ -0,0 +1,172 @@ +const uint16_t PROGMEM logozx80kbd[] = { +0x0140,0x00aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xdefb,0xe73c,0xbdf7,0x10a2,0xce79,0xef7d,0x9492,0x0000,0x39c7,0xdedb,0xdefb,0xe73c,0xbdf7,0x10a2,0xce79,0xe71c,0xef7d,0xbdf7,0x10a2,0xce79,0xef7d,0x9492,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xd69a,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xce79,0xe71c,0xef7d,0xbdf7,0x18c3,0xd69a,0x5acb,0x9492,0xbdf7,0x18c3,0xce79,0xef7d,0x9492,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x39c7,0xdedb,0xdefb,0xe73c,0xbdf7,0x18e3,0xdedb,0xdefb,0xe73c,0xc618,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x0000,0x0000,0xbdd7,0xf7be,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0xc4e0,0x9bc0,0x0000,0x3140,0xd520,0x5a20,0x9380,0xbc80,0x18a0,0xcd00,0xedc1,0x9380,0x0000,0x0840,0x0000,0xc4a0,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0xbc80,0xf5e1,0xbc80,0x18a0,0xdd41,0xdd61,0xe581,0xbca0,0x1080,0xcd00,0xedc1,0x9380,0x0000,0x0840,0x0000,0xc4a0,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3140,0xdd61,0xdd61,0xe581,0xbca0,0x1080,0xd520,0x6aa0,0x0000,0x0000,0x0000,0x0000,0xc4a0,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3140,0xd520,0x5a20,0x9380,0xbca0,0x0000,0x0000,0xbc80,0xf5e1,0xbc80,0x1080,0xcd00,0xedc1,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xad75,0xffff,0xef7d,0x8c71,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x18c3,0xad75,0xffff,0xef7d,0x8c71,0x3186,0xffff,0xce79,0xb596,0x94b2,0x3186,0xffff,0xce79,0xb596,0x94b2,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x10a2,0xa534,0xb596,0xb596,0x8c71,0x3186,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xce79,0xb596,0x94b2,0x3186,0xffff,0x6b6d,0xb596,0xe73c,0x2104,0xffff,0xd6ba,0xb596,0x8c71,0x10a2,0xa534,0xbdd7,0xc618,0x9cd3,0x10a2,0xad75,0xffff,0xef7d,0x8c71,0x10a2,0xad75,0xffff,0xef7d,0x9492,0x1082,0xa534,0xbdd7,0xbdd7,0x8c51,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x18c3,0xb596,0xb596,0xbdd7,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0xa400,0xbc80,0xbca0,0x93a0,0x3120,0xfe61,0x5a40,0xac20,0xe5a1,0x20c0,0xfe41,0xcd00,0xb460,0x9bc0,0x0000,0x0000,0xe581,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0xb460,0xb460,0xbc80,0x9bc0,0x1080,0xac20,0xfe21,0xedc1,0x8b60,0x3120,0xfe41,0xcd00,0xb460,0x9bc0,0x0000,0x0000,0xe581,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0xac20,0xfe21,0xedc1,0x8b60,0x3120,0xfe61,0x8340,0x0000,0x0020,0x0000,0x0000,0xe581,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe61,0x6aa0,0xb460,0xeda1,0x0000,0xb440,0xb460,0xbc80,0x93a0,0x3120,0xfe41,0xcd00,0xb460,0x9bc0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xe71c,0xb596,0x0000,0x39e7,0xffff,0x528a,0xad75,0xf79e,0x0000,0x0000,0xe71c,0xb596,0x0000,0x39e7,0xffdf,0xad55,0x1082,0x0000,0x39e7,0xffdf,0x9cd3,0xad75,0xc618,0x2945,0xffff,0x528a,0xad75,0xef5d,0x2104,0xffff,0x9cd3,0xce59,0xef5d,0x18e3,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffdf,0xad55,0x1082,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffff,0x528a,0xad75,0xef5d,0x2104,0xffff,0x630c,0x8c51,0xce59,0x0000,0x0000,0xe71c,0xb596,0x0000,0x0000,0x0000,0xe71c,0xb596,0x0000,0x4208,0xffff,0x5acb,0xad75,0xef5d,0x18e3,0xffff,0x528a,0xad75,0xef7d,0x0861,0xdefb,0x9cf3,0x0861,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe61,0x6260,0x8b60,0xc4c0,0x20e0,0xfe01,0xa400,0xcce0,0xdd61,0x20c0,0xfe21,0x9bc0,0xac40,0xc4c0,0x0000,0x72c0,0xe5a1,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0xdd61,0x9bc0,0x0840,0x0000,0x0000,0x0000,0xe581,0xb440,0x0000,0x3980,0xfe21,0x9bc0,0xac40,0xc4c0,0x0000,0x72c0,0xe5a1,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0xe581,0xb440,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x18a0,0x72c0,0xe5a1,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x6aa0,0xac40,0xdd81,0x1080,0xdd61,0x9bc0,0x0840,0x0000,0x3980,0xfe21,0x9bc0,0xac40,0xc4c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x39e7,0xf7be,0xffff,0xad55,0x0000,0x39e7,0xf7be,0xffff,0xad75,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x18e3,0xf7be,0xffff,0xffff,0xd69a,0x2104,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xffff,0xad55,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffff,0x8410,0x0000,0x18e3,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xdefb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x3960,0xf5e1,0xfe41,0xfe61,0xd520,0x18c0,0xf5e1,0xfe81,0xac40,0x0000,0x3960,0xede1,0xfe81,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xdd61,0xbca0,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3960,0xf5e1,0xfe81,0xac40,0x0000,0x3960,0xf5e1,0xfe81,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x3960,0xf5e1,0xfe81,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x6a80,0xac40,0xe581,0x0000,0x0000,0xdd61,0xbca0,0x0000,0x3960,0xf601,0xfe81,0xac40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x39e7,0xffdf,0x8430,0x0000,0x0000,0x39e7,0xffdf,0x7bef,0xad75,0xd6ba,0x2104,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x7bcf,0xb5b6,0xdefb,0x2104,0xffff,0x7bcf,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffdf,0x8c92,0x0000,0x0000,0x39e7,0xffff,0x5aeb,0xad55,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xdf1c,0x2104,0xffff,0x632c,0xa534,0xe71c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x4208,0xffff,0x630c,0xad75,0xe73c,0x18e3,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x6260,0xa400,0xdd61,0x20c0,0xfe21,0x7b00,0xb460,0xdd61,0x20c0,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0xd540,0xfea1,0xd520,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0xbc80,0xdd81,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0xd540,0xfea1,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe21,0x72e0,0x0000,0x0000,0x0820,0x0000,0xd540,0xfea1,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x5a40,0xa420,0xe581,0x0000,0x0000,0x0000,0xbc80,0xdd61,0x20c0,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xffff,0xffff,0xb5b6,0x2945,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x0000,0xef7d,0xc618,0x0000,0x39e7,0xffff,0xf79e,0xe73c,0xbdd7,0x2945,0xffff,0x6b4d,0xb5b6,0xef7d,0x2104,0xffff,0x738e,0xb5b6,0xef5d,0x2104,0xffff,0x6b4d,0xb596,0xef5d,0x2104,0xffff,0xf79e,0xef5d,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xffff,0x8410,0x0000,0x0000,0x39e7,0xffff,0xef7d,0xffff,0xdefb,0x2104,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x6b6d,0xd6ba,0xc618,0x5aeb,0x0000,0x0000,0xef7d,0xc618,0x0000,0x31a6,0xdedb,0xffff,0xffff,0xbdd7,0x0000,0x6b6d,0xd6ba,0xbdf7,0x4a69,0x39c7,0xffff,0x738e,0xb5b6,0xef5d,0x0861,0xdedb,0xef5d,0xbdd7,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x6aa0,0xd520,0xc4c0,0x5220,0x3960,0xfe61,0x6a80,0xb460,0xedc1,0x20c0,0xfe61,0x6a80,0xb460,0xedc1,0x0000,0xd520,0xfe81,0xd520,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0xdd41,0xedc1,0xbc80,0x6240,0x0000,0x0000,0xedc1,0xc4c0,0x0000,0x3980,0xfe61,0x6a80,0xb460,0xedc1,0x0000,0xd520,0xfe81,0xd520,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xedc1,0xc4c0,0x0000,0x3980,0xfe41,0xf5e1,0xeda1,0xbc80,0x18a0,0xd520,0xfe81,0xd520,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0xede1,0xfe41,0xdd81,0x0840,0xdd40,0xedc1,0xbc80,0x5220,0x3960,0xfe61,0x6a80,0xb460,0xf5e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0xb596,0xb596,0xbdd7,0x9cd3,0x1082,0xad55,0x4a49,0x73ae,0x9cd3,0x0000,0x0000,0x9cd3,0x7bef,0x0000,0x2945,0xa534,0xbdd7,0xc618,0x9cd3,0x1082,0xad55,0x4a49,0x73ae,0x9cd3,0x10a2,0xad55,0x4a49,0x73ae,0x9cd3,0x10a2,0xad55,0x4a49,0x73ae,0x9cd3,0x10a2,0xa534,0xbdd7,0xc618,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xad55,0x5acb,0x0000,0x0000,0x2945,0xa534,0xbdd7,0xbdd7,0x8c71,0x10a2,0xad55,0x4a49,0x73ae,0x9cd3,0x0000,0x0000,0xa514,0x7bef,0x0000,0x0841,0x0000,0x9cd3,0x7bef,0x0000,0x2965,0xb596,0xb596,0xbdd7,0x9cf3,0x0000,0x0000,0xa514,0x7bef,0x0000,0x2945,0xad55,0x4a49,0x73ae,0x9cd3,0x18c3,0xb596,0xc638,0x73ae,0x0000,0x0841,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x93a0,0x72e0,0x0000,0x2900,0x9be0,0x2900,0x6260,0x8b80,0x1080,0x9be0,0x2900,0x6260,0x8b60,0x1880,0xa400,0xbc80,0x6260,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x2900,0xb460,0xbca0,0x6aa0,0x0000,0x0820,0x0000,0x8b80,0x72e0,0x0000,0x20e0,0x9be0,0x20e0,0x6aa0,0x9bc0,0x1080,0xa400,0xac40,0x5220,0x0000,0x0860,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x8b60,0x72e0,0x0000,0x20e0,0x9bc0,0xac20,0xbc80,0x9bc0,0x1060,0xa400,0xac40,0x6260,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x2900,0xa400,0xac40,0xb460,0x8b80,0x1080,0xa400,0xbc80,0x6aa0,0x0000,0x2900,0xac20,0x3140,0x6260,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0000,0x0000,0x1082,0x0000,0x0861,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x72e0,0x4180,0x0000,0x1880,0x5a40,0x7b00,0x7b00,0x5200,0x0820,0x5a40,0x7b00,0x7b00,0x5200,0x0840,0x6260,0x0000,0x41a0,0x6ac0,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x5200,0x49c0,0x0000,0x0000,0x0000,0x5a40,0x49c0,0x0000,0x1880,0x5a40,0x8320,0x41a0,0x0000,0x18a0,0x5a40,0x6a80,0x7b00,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x72e0,0x4180,0x0000,0x1880,0x5a40,0x72c0,0x2900,0x0000,0x18a0,0x5a40,0x6ac0,0x41a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x5a20,0x3140,0x0000,0x18a0,0x5a40,0x6ac0,0x41a0,0x0000,0x0000,0x0000,0x6260,0x8320,0x5220,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe41,0xfe41,0xcd00,0x20c0,0xfe21,0xfe41,0xfe41,0xcd00,0x20e0,0xfe41,0x6aa0,0xb460,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18c0,0xe581,0xbca0,0x0000,0x0000,0x18c0,0xe581,0xbca0,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe41,0xfe41,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x18c0,0xe581,0xbca0,0x0000,0x3960,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x20c0,0xd540,0xfe81,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x5a40,0xac40,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xede1,0x72e0,0xb460,0xdd61,0x18a0,0xede1,0x72e0,0xac40,0xd520,0x20e0,0xfe21,0x7b00,0xac40,0xd520,0x20e0,0xfe21,0x8340,0x0000,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xfe21,0x7b00,0xac40,0xd520,0x20e0,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6aa0,0xac20,0xd540,0x20e0,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xf601,0x8320,0x0000,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf5e1,0xb460,0x5a20,0x3140,0xf601,0xf601,0x9380,0x0000,0x3980,0xf601,0xf601,0x9380,0x0000,0x3980,0xf601,0xf601,0xac40,0x3980,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x7ae0,0x2900,0x5220,0x3960,0xfe41,0x6280,0xac40,0xe581,0x20c0,0xfe21,0x6260,0xac40,0xe581,0x18c0,0xf601,0xf601,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf5e1,0xac40,0x3980,0x3960,0xfe21,0x6260,0xac40,0xe581,0x20c0,0xfe21,0x6260,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xedc1,0xfe01,0xd540,0x18c0,0xf601,0xf5e1,0xac40,0x41a0,0x1080,0x72e0,0xd540,0x9380,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xdd41,0x6aa0,0x0000,0x3980,0xf601,0xd520,0x6260,0x0000,0x3980,0xf601,0xd520,0x6260,0x0000,0x3980,0xf601,0xd520,0xac40,0x8340,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe61,0x6aa0,0x6260,0x93a0,0x3140,0xfe61,0x5a40,0xac20,0xe5a1,0x18c0,0xfe21,0x5a20,0xac40,0xe5a1,0x18a0,0xf601,0xd520,0x6260,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xd520,0xac40,0x7b00,0x3120,0xfe21,0x6aa0,0xac40,0xdd61,0x20c0,0xfe21,0x5a20,0xac40,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xcd00,0xe581,0xd540,0x20c0,0xf601,0xcce0,0xac40,0x9380,0x0000,0x0000,0x8340,0xc4a0,0x9bc0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x72c0,0x0000,0x0000,0x3980,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe41,0x5200,0xac40,0xf5e1,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0xd520,0x93a0,0xbca0,0xc4c0,0x1080,0xd500,0x93a0,0xb460,0xb460,0x2900,0xfe21,0xac20,0xac40,0xb460,0x2900,0xfe21,0xa400,0x6aa0,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5200,0xac40,0xedc1,0x18a0,0xfe41,0x6aa0,0xac40,0xe581,0x20c0,0xfe21,0xac20,0xac40,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5220,0xa400,0xe581,0x20c0,0xfe21,0x9bc0,0xac40,0xc4e0,0x0000,0x7b00,0x6260,0xbc80,0xc4e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x7b00,0x0000,0x0000,0x3960,0xeda1,0xfe21,0xfe61,0xcd00,0x18a0,0xeda1,0xfe21,0xfe61,0xcd00,0x18a0,0xf5e1,0x6280,0xa400,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd61,0xb460,0x0000,0x0000,0x0000,0xdd61,0xb460,0x0000,0x3960,0xeda1,0xfe81,0xa400,0x0000,0x3960,0xeda1,0xfe21,0xfe61,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6280,0xa400,0xd540,0x18c0,0xf5e1,0x6280,0xa400,0xd540,0x18c0,0xeda1,0xfe81,0xa400,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6280,0xa400,0xd540,0x18c0,0xeda1,0xfe81,0xa400,0x0000,0x3960,0xf5e1,0xfe81,0xa400,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x18c0,0x0000,0x0000,0x0840,0x3960,0x3980,0x3980,0x3120,0x0020,0x3960,0x3980,0x3980,0x3120,0x0020,0x3960,0x18a0,0x2900,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0x2900,0x0000,0x0000,0x0000,0x3140,0x2900,0x0000,0x0840,0x3960,0x4180,0x2900,0x0000,0x0840,0x3960,0x3980,0x3980,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x18a0,0x2900,0x3140,0x0020,0x3960,0x18a0,0x2900,0x3140,0x0020,0x3960,0x4180,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x18a0,0x2900,0x3140,0x0020,0x3960,0x4180,0x2900,0x0000,0x0840,0x3960,0x4180,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0840,0x0020,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0840,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0840,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0x7b00,0x8340,0x3140,0x0000,0x0000,0x0000,0x7b20,0x3960,0x0000,0x3980,0x8340,0x7b00,0x8340,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x3960,0x7b20,0x0000,0x0000,0x5200,0x8340,0x7b00,0x0000,0x0000,0x5200,0x8340,0x7b00,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x7b00,0x7b00,0x8320,0x6aa0,0x0840,0x7ae0,0x3140,0x5200,0x6aa0,0x0860,0x72e0,0x8320,0x8340,0x6aa0,0x0840,0x72e0,0x8340,0x5200,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x7b00,0x7b00,0x8320,0x6aa0,0x0000,0x0000,0x72c0,0x5a20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5200,0x8b60,0x7b00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6280,0x8320,0x8320,0x8320,0x8320,0x8320,0x5200,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0x7b20,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x5200,0x8b60,0x7b00,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x7ae0,0x3140,0x5200,0x6aa0,0x0000,0x0000,0x72c0,0x5a20,0x0000,0x18c0,0x72e0,0x7b00,0x7b20,0x6260,0x0860,0x72e0,0x8320,0x8340,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x8340,0x5200,0x0000,0x18c0,0x7ae0,0x3140,0x5200,0x6aa0,0x0860,0x72e0,0x8340,0x5200,0x0000,0x0000,0x0000,0x72c0,0x5a20,0x0000,0x18c0,0x7ae0,0x3140,0x5200,0x6aa0,0x1060,0x7b00,0x7b00,0x8320,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7b00,0xfe81,0xfe41,0x8340,0x0000,0x0000,0x5220,0xfe01,0x8b60,0x0000,0x72e0,0xfe41,0xfe61,0xfe81,0xac20,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8b60,0xf601,0x5220,0x0000,0xb460,0xfea1,0xf5e1,0x5220,0x0000,0xb460,0xfea1,0xf5e1,0x5220,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xede1,0xfe61,0xfe81,0xcd00,0x20e0,0xfe41,0x6aa0,0xb460,0xe5a1,0x20c0,0xfe21,0xfe41,0xfe41,0xcd00,0x20c0,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xede1,0xfe61,0xfe81,0xd520,0x0000,0x18a0,0xe581,0xbca0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x3960,0x0020,0xb460,0xfe81,0xf5e1,0x5220,0x3120,0x3980,0x3980,0x3960,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd61,0xfe81,0xfe21,0xfe21,0xfe21,0xfea1,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3140,0x20c0,0x8b60,0xf601,0x5220,0x3140,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2900,0x3980,0x3980,0x3980,0x0000,0xb460,0xfe81,0xf5e1,0x5220,0x3140,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x6aa0,0xb460,0xeda1,0x0000,0x18a0,0xe581,0xbca0,0x0000,0x3960,0xfe21,0xfe81,0xfea1,0xd540,0x20c0,0xfe21,0xfe41,0xfe41,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe81,0xb460,0x0000,0x3980,0xfe41,0x6aa0,0xb460,0xe5a1,0x20c0,0xfe21,0xfe81,0xb460,0x0000,0x0000,0x18c0,0xe581,0xbca0,0x0000,0x3980,0xfe41,0x6aa0,0xb460,0xe5a1,0x18a0,0xede1,0xfe61,0xfe81,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe21,0x49c0,0xdd40,0xa400,0x6280,0xf5e1,0x41a0,0xdd40,0xac40,0x0000,0x5a20,0xfe21,0x8b80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb440,0xd540,0x2920,0xf5e1,0x6260,0xac40,0xe581,0x41a0,0xf5e1,0x6260,0xac40,0xe581,0x41a0,0xf5e1,0x7b00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x20c0,0xe5a1,0xbca0,0x0000,0x3960,0xfe21,0x5a40,0xa420,0xe581,0x20c0,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x20c0,0xe5a1,0xbca0,0x0000,0x3960,0xede1,0x72e0,0xac40,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x20c0,0xf5e1,0xfe81,0xb460,0x0000,0x5220,0xf5e1,0xfe41,0xfe21,0xfe21,0xeda1,0x3960,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xe5a1,0xc4c0,0x0000,0x3960,0x20c0,0xedc1,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xd520,0xfe81,0xd520,0x41a0,0xf5e1,0xfe81,0xa400,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa400,0xfe41,0xfe21,0xfe21,0xfe61,0xb460,0x0000,0x5220,0xf5e1,0xfe81,0xa400,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x5a40,0xa420,0xe581,0x18a0,0xede1,0x72e0,0xac40,0xd520,0x20c0,0xf5e1,0xfe41,0xfe61,0xd520,0x20c0,0xfe21,0x8340,0x0000,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x72c0,0xac40,0xdd61,0x20c0,0xfe21,0x6aa0,0xac40,0xdd81,0x20c0,0xfe21,0x72c0,0xac40,0xdd61,0x18a0,0xede1,0x72e0,0xac40,0xd520,0x20e0,0xfe21,0x6aa0,0xac40,0xe581,0x0000,0x18a0,0xe5a1,0xbca0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe21,0x0000,0xe581,0xac40,0x6aa0,0xfe21,0x0020,0xe581,0xbca0,0x0000,0x3120,0xfe21,0x7b00,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb460,0xfe61,0xe581,0xfe61,0x6280,0xac40,0xdd61,0x0820,0xfe21,0x6aa0,0xac40,0xdd61,0x0820,0xfe21,0x8320,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xb460,0x0000,0x3980,0xf601,0xedc1,0xfe01,0xd520,0x18c0,0xf601,0xf601,0x9380,0x0000,0x3980,0xfe21,0x6260,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xb460,0x0000,0x3980,0xfe41,0x6280,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9bc0,0xf5e1,0xdd61,0x72e0,0x6aa0,0x41a0,0x0000,0x0000,0x6280,0x6aa0,0x5a20,0xa400,0xfe21,0x3980,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6aa0,0xedc1,0xeda1,0x93a0,0x0000,0x0000,0x0000,0x0000,0x2920,0xb440,0xedc1,0xdd40,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6aa0,0xedc1,0xeda1,0x9380,0x72c0,0x6a80,0x0000,0x7b00,0x6260,0xac40,0xedc1,0xdd40,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbc80,0xede1,0x5a40,0x6a80,0x72c0,0x41a0,0x0000,0x0000,0x6280,0x5a40,0xac40,0xedc1,0xdd40,0x3140,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xedc1,0xfe01,0xd520,0x20c0,0xfe41,0x6280,0xac40,0xe581,0x18c0,0xf5e1,0xfe81,0xfea1,0xd520,0x18c0,0xf601,0xf601,0x9380,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf5e1,0xac40,0x3980,0x3960,0xfe21,0x6aa0,0xac40,0xdd61,0x18c0,0xf601,0xf5e1,0xac40,0x3980,0x3960,0xfe41,0x6280,0xac40,0xe581,0x20c0,0xfe21,0x6aa0,0xac40,0xe581,0x0000,0x0000,0xe581,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe21,0x20c0,0xdd61,0xac20,0x72c0,0xfe41,0x0000,0xe581,0xbca0,0x0000,0x3980,0xfe21,0x8320,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb460,0xfe01,0xbc80,0xfe41,0x6280,0xac40,0xdd61,0x20c0,0xfe21,0x6aa0,0xac40,0xdd61,0x0000,0xfe41,0x8340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3960,0xf601,0xcd00,0xe581,0xd540,0x20c0,0xf601,0xd520,0x6260,0x0000,0x3980,0xfe21,0x6aa0,0xac40,0xe581,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe581,0xbc80,0x0000,0x3980,0xfe61,0x5a40,0xac20,0xedc1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7b00,0xc4c0,0xbc80,0xac40,0xb460,0x6aa0,0x0000,0x0000,0xa400,0xac40,0xa400,0xcd00,0xfe41,0x3980,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5a20,0xbca0,0xbc80,0xac40,0xbc80,0x93a0,0x0000,0xb440,0xb460,0xb460,0xbca0,0xb440,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5a20,0xbca0,0xbc80,0xb440,0x5220,0x0000,0x0000,0x0000,0x7b00,0xb460,0xbca0,0xb440,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbc80,0xfe41,0xa400,0xac40,0xb460,0x6aa0,0x0000,0x0000,0xa400,0xac40,0xb460,0xbca0,0xb440,0x2900,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xcd00,0xe581,0xd540,0x20e0,0xfe61,0x5a40,0xac20,0xe5a1,0x18a0,0xf601,0xc4c0,0xdd61,0xdd40,0x20c0,0xf601,0xd520,0x6260,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xd520,0xac40,0x7b00,0x3120,0xfe21,0x5a40,0xa400,0xe581,0x20c0,0xf601,0xcce0,0xac40,0x8b60,0x3140,0xfe61,0x5a40,0xac20,0xe5a1,0x18c0,0xfe21,0x5a40,0xa400,0xe581,0x0000,0x0000,0xe581,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8320,0xfe41,0x20c0,0xe581,0xb460,0x49e0,0xd540,0x8320,0xcce0,0x93a0,0x0000,0x3980,0xfe41,0x8320,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbca0,0xdd61,0x0000,0xfe21,0x6aa0,0xac40,0xe581,0x20c0,0xfe41,0x6aa0,0xac20,0xf5e1,0x8320,0xd540,0x6a80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x3980,0xfe41,0x5220,0xa400,0xe581,0x20c0,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe41,0x6aa0,0xac40,0xe5a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x3140,0xd520,0x93a0,0xb460,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0xdd40,0xedc1,0xb480,0x72c0,0x8b60,0xdd61,0xe5a1,0xe581,0xe581,0xcd00,0x3120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xbc80,0xf5e1,0xcce0,0x8320,0xdd61,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0xedc1,0xdd61,0x6aa0,0x8320,0x72e0,0xfe21,0xbc80,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9380,0xe581,0xe581,0xe581,0xedc1,0xb480,0x72c0,0x8b60,0xdd61,0xf5e1,0x9380,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5220,0xa400,0xe5a1,0x0820,0xd500,0x93a0,0xb460,0xb460,0x2900,0xfe41,0x5220,0xa400,0xe581,0x20c0,0xfe21,0xa400,0x6aa0,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe41,0x5200,0xac40,0xedc1,0x18a0,0xfe21,0xa400,0xcd00,0xdd61,0x20c0,0xfe21,0x9bc0,0xac40,0xc4c0,0x1080,0xd520,0x93a0,0xb460,0xb460,0x2900,0xfe21,0xa400,0xcd00,0xe581,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7b00,0xf5e0,0x20c0,0xd540,0xb460,0x0000,0x20c0,0xf600,0x72e0,0x0000,0x0000,0x3960,0xf5e0,0x7b00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb440,0xd540,0x18c0,0xf5e0,0x6280,0xa400,0xd540,0x18c0,0xf5e0,0x6280,0x9bc0,0xfe60,0xf5e0,0x18c0,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd40,0xb440,0x0000,0x3960,0xf5e0,0x6280,0xa400,0xd540,0x18a0,0xeda0,0xfe20,0xfe60,0xcd00,0x18a0,0xf5e0,0x6280,0xa400,0xdd40,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdd40,0xb440,0x0000,0x0000,0x0000,0xdd60,0xb460,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa400,0xfe80,0xede0,0x20c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x72e0,0xf600,0x20c0,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xcd00,0xfe40,0xfe20,0xfe20,0xfe20,0xfe40,0xa400,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0xa400,0xfe80,0xede0,0x20c0,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e0,0x6280,0xa400,0xdd40,0x0000,0x0000,0xdd60,0xb440,0x0000,0x3960,0xf5e0,0x6280,0xa400,0xd540,0x18a0,0xeda0,0xfe20,0xfe60,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf5e1,0x6280,0xa400,0xd540,0x18a0,0xeda0,0xfe20,0xfe40,0xcce0,0x18a0,0xeda0,0xfe80,0xa400,0x0000,0x0000,0x0000,0xdd60,0xb440,0x0000,0x3960,0xeda0,0xfe20,0xfe40,0xcd00,0x0000,0x0000,0xdd40,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1840,0x3920,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3940,0x1820,0x0000,0x0000,0x0800,0x3920,0x1840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x28c0,0x3100,0x0000,0x3920,0x1800,0x28a0,0x3100,0x0000,0x3920,0x1800,0x2080,0x4140,0x3920,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3920,0x1800,0x28a0,0x3100,0x0000,0x3920,0x3940,0x3940,0x30e0,0x0000,0x3920,0x1800,0x28a0,0x3100,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x28a0,0x4160,0x3920,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x3940,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x30e0,0x3940,0x3940,0x3940,0x3940,0x3940,0x28a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x28a0,0x4160,0x3920,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x3920,0x1800,0x28a0,0x3100,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3920,0x1800,0x28a0,0x3100,0x0000,0x3920,0x3940,0x3940,0x3100,0x0000,0x0000,0x0000,0x0000,0x0001,0x0840,0x3960,0x18a1,0x28c0,0x3100,0x0000,0x3920,0x3940,0x3940,0x30e0,0x0000,0x3920,0x4160,0x28a0,0x0000,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0800,0x3920,0x3940,0x3940,0x30e0,0x0000,0x0000,0x3100,0x28e0,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x02f4,0x0314,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02d4,0x02d4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x0314,0x02f4,0x02f4,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0001,0x0001,0x0000,0x01cd,0x0315,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x02f4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02f4,0x02f4,0x1314,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0315,0x01cd,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0318,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0318,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x02f7,0x0317,0x0317,0x0317,0x0317,0x0317,0x0317,0x0318,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x02f7,0x0317,0x0317,0x0317,0x0317,0x0317,0x0317,0x0318,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x02f7,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x02f7,0x0317,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0378,0xb63c,0xbe7d,0x74fa,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe5c,0xbe7c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe7c,0xbe5c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0378,0xb63c,0xbe7d,0x74fa,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x959b,0xbe7c,0xbe7c,0xbe7c,0xbe7c,0xbe5c,0xbe7c,0xbe7d,0xb63c,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe5c,0xbe7c,0xc69d,0x9dbb,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x9dbb,0xc69d,0xbe5c,0xbe5c,0xbe5c,0xbe7c,0xbe7c,0xbe5c,0xa5fc,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe7c,0xbe7c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x74fa,0xc69d,0xbe7c,0xbe7c,0xbe7c,0xc69d,0x9dbb,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x4c39,0xbe9d,0xbe7c,0xc69d,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0x8d7b,0xdf3e,0xffff,0xbe5c,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x649a,0xbe7c,0xef7e,0xe75e,0xe75e,0xe75e,0xef7e,0xcedd,0x6cda,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x649a,0xbe7c,0xef7e,0xe75e,0xe75e,0xe75e,0xe75e,0xcedd,0x74fa,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x33f9,0x8d7b,0xdf3e,0xffff,0xbe5c,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xe75e,0xffff,0xdf3e,0xe73e,0xe73e,0xe73e,0xdf3e,0xe75e,0xdf1e,0x3bf9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c79,0xb65c,0xe77e,0xe73e,0xe73e,0xe73e,0xef7e,0xbe7d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc69d,0xef9f,0xe75e,0xe75e,0xe75e,0xe75e,0xdf3e,0xf7bf,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x649a,0xbe5c,0xe77e,0xe73e,0xe73e,0xe73e,0xe75e,0xcedd,0x74fa,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c79,0xbe5c,0xef9f,0xe75e,0xe75e,0xe75e,0xef7e,0xcedd,0x6cda,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x4c39,0xa5fc,0xef7e,0xe75e,0xef7e,0xbe7d,0x5c99,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xf7df,0x0378,0xdf3e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xb63c,0x0297,0x0358,0x0358,0x0358,0x02b7,0x7d1a,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xb63c,0x0297,0x0358,0x0338,0x13b8,0x0378,0x855b,0xffdf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0378,0x8d7b,0xf7df,0x0378,0xdf3e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xbe7d,0x0338,0x23d8,0x23d8,0x23d8,0x2bd8,0x13b8,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xef7e,0xc69d,0x0338,0x23d8,0x23d8,0x23d8,0x23d8,0x1bb8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0338,0x853a,0xf7bf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe75e,0xbe5c,0x0338,0x23d8,0x23d8,0x23d8,0x0378,0x855b,0xffdf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xef9f,0xbe7c,0x0297,0x0358,0x0358,0x0358,0x02b7,0x7d1a,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0378,0xbe9d,0xdf3e,0x02f7,0x0358,0x0297,0xb63c,0xe75e,0x23b8,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x3c19,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3c19,0x1bb8,0x0338,0x0358,0x0358,0x0358,0x02b7,0x7d1a,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bf9,0x2bd9,0x0398,0x0b98,0x0358,0xd6fd,0xffff,0xd6fe,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xb63c,0xe75e,0x23b8,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xdf3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x02b7,0xb63c,0xe75e,0x23b8,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xae1c,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fe,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xef9f,0xbe7c,0x0297,0x0358,0x0358,0x0358,0x02d7,0x7d1a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xdf1e,0xbe7c,0x0378,0x0398,0x0b98,0x0398,0x0378,0x8d7b,0xf7bf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0277,0x8d7b,0xf79f,0xe75e,0xe75e,0xe75e,0xef7e,0xcedd,0x6cda,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x0338,0x1bb8,0x0b98,0x0398,0x6cda,0x853a,0x9ddb,0xcedd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xbe7d,0xb65c,0x4419,0x02b7,0x0297,0xe75e,0xb63c,0x0257,0x0318,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5459,0x74fa,0x853b,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xe73e,0xd6fd,0x74fa,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x02b7,0xc69d,0xc6bd,0x5c99,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xb65c,0xb65c,0x7d1a,0x853a,0x853a,0x853a,0x7d1a,0x9ddb,0xcedd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c79,0xbe5c,0xef9f,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0xf7df,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xf7bf,0xbe7c,0x0237,0x13b8,0x0b98,0x1bb8,0x02b7,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x02d7,0xe75e,0xb63c,0x02b7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x959b,0xb63c,0xae1c,0xae1c,0xae1c,0xae1c,0xb65c,0x8d5b,0x0297,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0xa5fc,0x853a,0x02d7,0x0338,0x0338,0x02d7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xef9f,0xa5fc,0xbe7c,0xb65c,0xf7bf,0xe75e,0xb65c,0xb63c,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x9ddb,0x6cda,0x0257,0x02b7,0x02b7,0x02b7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xb65c,0x01d6,0x02b7,0x02b7,0x02b7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0xa5fc,0xc69d,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xf7bf,0xbe7c,0x01b6,0x02b7,0x02b7,0x02b7,0x01f6,0x74fa,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x6cda,0xb65c,0xae1c,0xae1c,0xae1c,0xa5fc,0xcedd,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x959b,0xc69d,0x9dbb,0x02f7,0x0338,0x02d7,0x7d1a,0xc69d,0xa5fc,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0x855b,0x7d1a,0xef9f,0xd71e,0x5c79,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xd71e,0x5479,0x6cda,0x6cda,0x6cda,0x6cda,0x74fa,0x7d1a,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc6bd,0xc69d,0x74fa,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xb63c,0xe75e,0xe75e,0xe75e,0xe75e,0xffff,0xf7df,0xe75e,0xdf1e,0x3bf9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc6bd,0xc69d,0x74fa,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xbe7c,0xbe5c,0x7d1a,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0xffff,0x7d1a,0x02d7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xbe7c,0xbe5c,0x7d1a,0x853a,0x853a,0x853a,0x7d1a,0xa5db,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4c39,0x74fa,0x6cda,0x6cda,0x6cda,0x649a,0x959b,0xd6fd,0x33f9,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0297,0x9dbb,0xdf1e,0x7d1a,0x853a,0x74fa,0xc69d,0xc69d,0x02b7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x7d1a,0xffff,0xffff,0xf7df,0xffff,0xd6fe,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xcedd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x0358,0x0358,0x0358,0x02f7,0xdf1e,0xae1c,0x02b7,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0xf7bf,0x7d1a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x02b7,0xa5fc,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0317,0xae1c,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x02f7,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x02f7,0x6cda,0xffff,0xffff,0xffff,0xa5fc,0x02b7,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x4419,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x33f9,0x4419,0x3c19,0x3c19,0x3c19,0x3c19,0x3c19,0x4419,0x3c19,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bf9,0x2bd9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x3c19,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x4419,0x3c19,0x4419,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0378,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x5acb,0x9492,0xbdf7,0x18c3,0xd69a,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xd69a,0x6b6d,0x0000,0x0841,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xbdd7,0xf7be,0xbe18,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xd69a,0x5acb,0x9492,0xbdf7,0x18c3,0xce79,0xe71c,0xef7d,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xbdf7,0x18c3,0xd69a,0x5acb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x0000,0x0000,0xce59,0x9cf3,0x0000,0x31a6,0xce79,0xef7d,0x9492,0x0000,0x39c7,0xdedb,0xdefb,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x5acb,0x8430,0xe71c,0xd6ba,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xdefb,0xe73c,0xbdf7,0x10a2,0xce79,0xe71c,0xef7d,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xef5d,0xd6ba,0xef5d,0x5aeb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xbdf7,0x18c3,0xd69a,0x52aa,0x9492,0xef5d,0xd6ba,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xef5d,0xd6ba,0xef5d,0x5aeb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x9cf3,0xef5d,0xd6ba,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xb5b6,0xb596,0x2965,0xb5b6,0xffff,0xad55,0xbdf7,0x31a6,0xbdd7,0xe73c,0x0000,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8430,0x0000,0x0000,0x2945,0xa534,0xbdd7,0xbdd7,0x8c71,0x10a2,0xa534,0xb596,0xb596,0x8c71,0x3186,0xffff,0xd6ba,0xb596,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0xb596,0xb596,0xbdd7,0x9cd3,0x1082,0xa534,0xb596,0xb596,0x8c71,0x3186,0xffff,0x6b6d,0xb596,0xe73c,0x2104,0xffff,0xce79,0xb596,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xbdd7,0xe75d,0x2104,0xffff,0x6b6d,0xad75,0xffff,0xb5b6,0xb596,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xa534,0xbdd7,0xc618,0x9cd3,0x1082,0xa534,0xbdd7,0xbdd7,0x8c51,0x3186,0xffff,0xd6ba,0xb596,0x8c71,0x18c3,0xad75,0xffff,0xef7d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xb596,0xffff,0xad55,0xbdf7,0x31a6,0xad75,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xad75,0xffff,0xef7d,0x8c71,0x3186,0xffff,0xce79,0xb596,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdedb,0xffff,0xc638,0x2965,0xb596,0xffff,0xb5b6,0xb596,0x2965,0xb5b6,0xffff,0xad55,0xbdf7,0x31a6,0xbdd7,0xe75d,0x2104,0xffff,0x7bcf,0x630c,0xdedb,0xffff,0xc638,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xb596,0xffff,0xad55,0xbdf7,0x4a49,0x6b6d,0xdedb,0xffff,0xc638,0x2965,0xb596,0xffff,0xb5b6,0xb596,0x4208,0x6b6d,0xdedb,0xffff,0xc638,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdedb,0x0000,0xffff,0x738e,0xad55,0xef7d,0x5acb,0x0000,0x0000,0xb5b6,0xef7d,0x7bef,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8410,0x0000,0x0000,0x4208,0xffff,0x5acb,0xad75,0xef5d,0x2104,0xffff,0x9cd3,0xce59,0xef5d,0x18e3,0xffff,0x528a,0xad75,0xef7d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdefb,0x9cf3,0x0861,0x0000,0x4208,0xffff,0x9cd3,0xce59,0xef5d,0x18e3,0xffdf,0x632c,0xad55,0xe71c,0x2104,0xffdf,0xad55,0x1082,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xdefb,0x52aa,0xb596,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xdedb,0x0000,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xffff,0x630c,0x8c51,0xc638,0x2965,0xffff,0x5acb,0xad75,0xef5d,0x18e3,0xffff,0x528a,0xad75,0xf79e,0x0000,0x0000,0xe71c,0xb596,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xdefb,0x52aa,0xad75,0xef7d,0x5acb,0x0000,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xe71c,0xb596,0x0000,0x39e7,0xffdf,0xad55,0x1082,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x738e,0xffdf,0x0000,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x738e,0xad55,0xef5d,0x6b6d,0xe71c,0x5acb,0xb596,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x738e,0xffdf,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xe71c,0x5acb,0xad75,0xef5d,0x6b6d,0xdefb,0x738e,0x0000,0x738e,0xffdf,0x0000,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x8c51,0x0000,0x738e,0xffdf,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xa514,0xffff,0xf79e,0x39c7,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8410,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x18e3,0xf7be,0xffff,0xffff,0xd69a,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xdefb,0xbdf7,0x0000,0x39c7,0xf7be,0xffff,0xffff,0xd69a,0x2104,0xffdf,0x7bcf,0xb5b6,0xdefb,0x18e3,0xf7be,0xffff,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0xbdd7,0xe71c,0x18e3,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x8410,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0xad75,0xffff,0xf79e,0x39c7,0x0000,0xad75,0xffff,0xf7be,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39e7,0xf7be,0xffff,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xa514,0xffff,0xf79e,0x18e3,0x0000,0xbdd7,0xdf1c,0x18e3,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x18e3,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0x0000,0xb596,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x7bcf,0x0000,0x0000,0x4208,0xffff,0x630c,0xad75,0xe73c,0x18e3,0xffdf,0x7bcf,0xb5b6,0xdefb,0x2104,0xffff,0x5aeb,0xad75,0xef5d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0x2104,0xffdf,0x7bcf,0xb5b6,0xdefb,0x2104,0xffff,0xffdf,0xffff,0xdedb,0x18e3,0xffdf,0x8430,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x632c,0xad75,0xdefb,0x0000,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x632c,0xa534,0xdefb,0x2124,0xffff,0x630c,0xad75,0xe73c,0x18e3,0xffdf,0x6b4d,0xad75,0xe73c,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xffff,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x39e7,0xffdf,0x8c92,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x73ae,0xffdf,0x2104,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xad75,0xe73c,0x18e3,0x0020,0x0000,0xbdd7,0xdefb,0x0000,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x18e3,0x0020,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x7bef,0x0000,0x73ae,0xffdf,0x2104,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x8410,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x2104,0xffff,0x738e,0xad75,0xffff,0xdefb,0xef5d,0x632c,0x2124,0xb596,0xffff,0x8c71,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xf79e,0xef5d,0xbdf7,0x0000,0x6b6d,0xd6ba,0xbdf7,0x4a69,0x39c7,0xffff,0x6b4d,0xb596,0xef5d,0x2104,0xffff,0xffdf,0xb5b6,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xef5d,0xbdd7,0x52aa,0x39c7,0xffff,0x6b4d,0xb596,0xef7d,0x0000,0x6b4d,0xffdf,0xdedb,0x4228,0x39c7,0xffff,0xf79e,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x738e,0xad55,0xffff,0xe73c,0xffff,0x6b4d,0xb5b6,0xef5d,0x2104,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x6b6d,0xd6ba,0xc618,0x5aeb,0x0861,0x6b6d,0xd6ba,0xbdf7,0x4a69,0x39c7,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x0000,0xef7d,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x738e,0xad75,0xffff,0xdefb,0xef5d,0x528a,0xbdd7,0xef5d,0x0841,0xffff,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xdedb,0xffff,0xffff,0xb5b6,0x2945,0xffff,0x8410,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xffdf,0xffff,0xef7d,0x4a69,0xbdd7,0xef5d,0x2104,0xffff,0x738e,0xb5b6,0xef7d,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xe73c,0xffff,0x8410,0x0000,0x8430,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef7d,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x7bcf,0x8430,0xffdf,0xffff,0xef7d,0x4a69,0xbdd7,0xef5d,0x2104,0xffff,0x8430,0x0000,0x8430,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xbdf6,0x5aa9,0x0000,0x41e6,0xad54,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x28e0,0xa513,0xbdb6,0xc5f7,0x9cd2,0x0000,0x0000,0xa513,0x7bce,0x0000,0x2900,0xad54,0x4a07,0x738d,0x9cb1,0x1000,0xa513,0xc5f7,0x738d,0x0000,0x0800,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x2901,0xb575,0xc617,0x738d,0x0000,0x2900,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x9cb1,0x738d,0x0000,0x2900,0xa513,0xbdb6,0xc5f7,0x9cd2,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xb595,0x41e6,0x738d,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0xa513,0x7bce,0x0000,0x0000,0x0000,0xa513,0x7bce,0x0000,0x2900,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x9cd2,0x7bce,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xbdf6,0x4a27,0x738d,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2901,0xb575,0xb575,0xbdb6,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x7bef,0xbdf6,0xad54,0xbdd6,0x4a27,0x738d,0x9cb2,0x1000,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xb595,0x5268,0x0000,0x5a89,0xad54,0x28e0,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x7bef,0x9cb2,0x0000,0x0000,0x0000,0x7bce,0x9cb2,0x1000,0xad54,0x4206,0x738d,0xbdf6,0xad54,0xbdd6,0x4a27,0x738d,0x9cb2,0x1000,0xad54,0x5a89,0x0000,0x5a89,0xad54,0x28e0,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0008,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x014a,0x11ec,0x014a,0x0008,0x01ab,0x09cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x09cc,0x01ab,0x0008,0x0007,0x0007,0x0049,0x09cc,0x09cc,0x0008,0x00c9,0x11ec,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x0007,0x00ea,0x11cc,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x09cc,0x01ab,0x0008,0x0007,0x00ea,0x11ec,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x09cc,0x0008,0x00c9,0x11ec,0x01ab,0x0008,0x0007,0x0007,0x0049,0x09cc,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0008,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x014a,0x11cc,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x09cc,0x0008,0x00c9,0x11cc,0x01ab,0x09cc,0x0008,0x00c9,0x11ec,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x09cc,0x0008,0x00c9,0x11cc,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0008,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x014a,0x11cc,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x09cc,0x01ab,0x0008,0x0007,0x0007,0x0069,0x01ab,0x0008,0x014a,0x11cc,0x01ab,0x01ab,0x01ab,0x01ab,0x09cb,0x01ac,0x018c,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x1000,0x0004,0x0008,0x0008,0x0007,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x01ab,0x11cc,0x00ea,0x0007,0x0008,0x0007,0x014a,0x19ec,0x014b,0x0008,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x1000,0x0004,0x0009,0x09cc,0x01ab,0x11cc,0x00c9,0x0009,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x014a,0x19ec,0x014b,0x0008,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x09cb,0x01ac,0x018c,0x01ab,0x018c,0x01cc,0x0927,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x33f8,0x0bb9,0x3bf8,0x23fa,0x0292,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0399,0x0379,0x0b98,0x0379,0x0398,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xee07,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0359,0x7475,0xfe24,0x3bd7,0x0399,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8494,0xf624,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xddab,0x0399,0xf625,0x8494,0x0379,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddab,0xd5ac,0xd5ab,0xd5ab,0xddab,0x6c35,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xbd4f,0x23b8,0xd58c,0x6c55,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x033a,0x6c55,0xfe60,0xede7,0x6c55,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xcd8d,0x7475,0x23b8,0x0398,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0x8cb3,0xd5ab,0x6c55,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0x94d2,0xd58c,0x7c74,0x2bb8,0x03b9,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xede7,0xb530,0xbd2f,0xbd2f,0xbd2f,0xbd2f,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xede7,0xb530,0xbd2f,0xb530,0xf605,0xfe60,0xfe60,0xfe60,0xfe80,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xede7,0xb530,0xbd2f,0xbd2f,0xbd2f,0xbd2f,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xc56e,0xee07,0x23b8,0xfe60,0x8c93,0x037a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7474,0xd5ab,0xfe22,0xbd2f,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xc54e,0xede8,0x033a,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x23b8,0xfe40,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x6c55,0xd58c,0xfe40,0xbd2f,0x53f6,0x0399,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x0359,0x0359,0x0359,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x031a,0xd58c,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x0359,0x0359,0x0359,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xbd4f,0x23b8,0xd58c,0x6c55,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x94d2,0xf605,0xf624,0x7c74,0x2bb8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xbd4f,0xe5e9,0x0359,0x0398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x33d7,0xfe41,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x94d2,0xf605,0xfe40,0xede8,0x6c55,0x039a,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8494,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb510,0xddca,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0b98,0x5c16,0xf606,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8494,0xf606,0x43f7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x0379,0x0379,0x0379,0x0359,0x23b8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe60,0xfe60,0xfe60,0xfe60,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xddab,0xfe80,0xfe60,0xfe40,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x033a,0x0b98,0x0379,0x0398,0x0399,0x0359,0x43d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe22,0x5c16,0x0398,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xfe24,0x5c16,0x0b98,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb530,0xddca,0x43f7,0xfe24,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xf605,0xd58c,0xd5ab,0xd5ab,0xd5ab,0xd5ab,0xd5ac,0xddab,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xd58c,0x6c55,0x7c74,0x7c74,0x3bd7,0x0398,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0398,0x6c35,0x7c74,0x7475,0x8c93,0xfe41,0x8474,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe40,0xb530,0x0379,0xddca,0x4bf7,0x94b3,0xc56e,0x0379,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x8493,0x7475,0x0398,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x3bd7,0x8494,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x43f7,0x7c74,0x0b98,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0398,0x7c74,0x43f7,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0358,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x1398,0x0379,0xd5ac,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0358,0x1398,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x0359,0x0398,0x1398,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x1398,0x0379,0x0359,0x0359,0x1bb8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0358,0x1398,0x0379,0xddaa,0xe5c9,0xad11,0xbd2f,0xad10,0xb52f,0xb530,0xad10,0xbd4e,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0379,0x0359,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0358,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0358,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0379,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe40,0x7475,0x0359,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0379,0xd5ab,0xfe60,0xfe41,0xfe41,0xfe41,0xfe41,0xfe41,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0379,0xe5c9,0xb52f,0x033a,0x0399,0x0398,0x0398,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0398,0x0398,0x0398,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x853b,0x853a,0x853a,0x7d1a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0379,0xe5ca,0xc54e,0x8494,0xddca,0x6c35,0xcd6d,0xad11,0x8494,0xe5e9,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x853a,0x3c19,0x0378,0x1398,0x0b98,0x1398,0x0358,0x5c79,0x74fa,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x6cda,0x855b,0x853a,0x7d1a,0x853a,0x8d5b,0x5c79,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23b8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x8c93,0x1bb8,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0338,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0379,0xd5ac,0xfe80,0xddab,0x33d7,0xfe40,0x7455,0xb530,0xe5e9,0x33d8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x8d7b,0x0378,0x0398,0x0b98,0x0398,0x0378,0xbe7d,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xd6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xae1c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23b8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0379,0xddab,0xfe80,0xfe40,0xfe40,0xfe60,0xfe41,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0379,0xddab,0xfe80,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe40,0xfe60,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x855b,0x0358,0x23d8,0x23d8,0x23b8,0x3bf9,0x4419,0x33f9,0x0398,0x0379,0xddca,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0379,0xddca,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x4419,0x1bb8,0x8d7b,0xffff,0x5c79,0x33f9,0x4419,0x33f9,0x0398,0x0379,0xddab,0xfe80,0xfe40,0xfe23,0xfe40,0xfe22,0xfe40,0xfe40,0xfe23,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xb63c,0x0297,0x0358,0x02f7,0xdf3e,0xbe9d,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x33f9,0x23b8,0x8d7b,0xffff,0x5c79,0x33f9,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x0317,0x0358,0x02d7,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0398,0x6c35,0x7c74,0x7c74,0x7c74,0x7c74,0x8474,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0378,0x0317,0x0398,0x0317,0xbe5c,0xe75e,0x0358,0x0398,0x6c35,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xdf3e,0xe73e,0xe75e,0xe77e,0x6cba,0x0318,0x0378,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0378,0x02f7,0x7d1a,0xffff,0x33f9,0x0358,0x0378,0x0378,0x0b98,0x0398,0x6c35,0x7c74,0x7c74,0x8494,0x7c74,0x8494,0x7c74,0x7c74,0x8494,0x7c74,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x5c99,0xbe7d,0xe77e,0xd71e,0xe77e,0xa5fc,0x4c39,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0378,0x02f7,0x7d1a,0xffff,0x33f9,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x02f7,0x6499,0xb65c,0x0378,0x02d7,0xbe7c,0xe75e,0x0358,0x0b98,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853b,0x02b7,0x4c59,0xb65c,0x0378,0x02d7,0xbe7c,0xe75e,0x0358,0x0b98,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe5c,0xbe7c,0xbe7d,0x5c79,0x0378,0x0b98,0x0b98,0x1398,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe7c,0xbe5c,0xae1c,0xb65c,0xbe7c,0x959b,0x0378,0x1398,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0359,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x02f7,0x6cda,0xdf3e,0xffff,0xc6bd,0x4439,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe7c,0xbe7c,0xbe7c,0xbe7c,0xbe5c,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x0297,0x6cda,0xe75e,0x8d5b,0x0358,0xb65c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x2bd8,0xae1c,0xe75e,0x8d7b,0x0358,0xb65c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x0358,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xe75e,0xe75e,0xe77e,0xffff,0xffdf,0x8d5b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x02d7,0x74fa,0xffff,0x0398,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0378,0x02f7,0x7d1a,0xffff,0x33f9,0x0358,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d3a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xbe7c,0xe77e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23d8,0x2bd8,0x4c39,0xffff,0x853a,0xae1c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x74fa,0xb65c,0xdf1e,0x0378,0xf7df,0x7d1a,0xae3c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x3c19,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02d7,0x0318,0x23d8,0xf7bf,0x853a,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x853a,0xffff,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x33f9,0x23b8,0x8d7b,0xffff,0x5c79,0x33f9,0x2bd8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0x8d5b,0x23b8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02d7,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xbe7d,0x0378,0x0b98,0x23d8,0xe75e,0xbe7d,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0398,0x1398,0x23d8,0xe75e,0xb65c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x855b,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x855b,0xffff,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xd6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xae1c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xd71e,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x7d1a,0x855b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x74fa,0x5c79,0x0358,0x0b98,0x0358,0x74fa,0x5c79,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0358,0x74fa,0x6499,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0x7d1a,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x4419,0x7d1a,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0398,0x6cda,0x855b,0x853a,0x7d1a,0x853a,0x8d5b,0x5c79,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0358,0x6cda,0x855b,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13d9,0x0379,0x0358,0x0359,0x0358,0x0359,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0399,0x13d9,0x0bb9,0x13b9,0x0379,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0358,0x0358,0x0358,0x0359,0x0358,0x0358,0x0358,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x13b9,0x0379,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0359,0x03b9,0x13b9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0359,0x03b9,0x13b9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x13b9,0x0379,0x0358,0x0358,0x0358,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0841,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x5acb,0x0000,0x0000,0x0000,0x6b6d,0x8410,0x7bef,0x7bef,0x18e3,0x0000,0x528a,0x8c51,0x7bef,0x1082,0x6b4d,0x8410,0x7bef,0x7bef,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x528a,0x8c51,0x7bef,0x1082,0x6b4d,0x8410,0x7bef,0x7bef,0x18e3,0x0000,0x5acb,0x738e,0x0000,0x0000,0x632c,0x8430,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x8430,0x7bef,0x0000,0x0000,0x5acb,0x8430,0x7bcf,0x8430,0x31a6,0x4a69,0x8410,0x7bcf,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x8410,0x8410,0x8430,0x39e7,0x0000,0x39c7,0x7bef,0x0000,0x0000,0x528a,0x8430,0x7bef,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x5aeb,0x0000,0x0000,0x0000,0x738e,0x5acb,0x0000,0x18e3,0x7bef,0x7bef,0x8410,0x6b6d,0x0000,0x0000,0x738e,0x5acb,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x0000,0x0000,0x738e,0x5acb,0x0000,0x18e3,0x7bcf,0x3186,0x52aa,0x6b6d,0x0861,0x73ae,0x8410,0x8430,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x0000,0x0000,0x738e,0x5acb,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x18e3,0x73ae,0x8451,0x52aa,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x6b6d,0x0000,0x0000,0x0000,0x528a,0x8410,0x8410,0x8430,0x3186,0x528a,0x8430,0x7bcf,0x8430,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a0,0x72e0,0x8320,0x8340,0x6aa0,0x0840,0x72e0,0x8340,0x5200,0x0000,0x18c0,0x7b00,0x7b00,0x8320,0x6aa0,0x1060,0x7b00,0x7b00,0x8320,0x6aa0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xef5d,0xbdf7,0x0000,0x0000,0x0000,0xd69a,0xffff,0xffff,0xf79e,0x39c7,0x0000,0xb596,0xffff,0xf79e,0x18e3,0xce79,0xffff,0xffff,0xf79e,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xf79e,0x18e3,0xce79,0xffff,0xffff,0xf79e,0x39c7,0x0000,0xbdf7,0xe71c,0x18e3,0x0000,0xdefb,0xffff,0xd6ba,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xf79e,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0x630c,0xa534,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xffdf,0xffff,0x73cf,0x0000,0x8c71,0xffdf,0x52aa,0x0000,0xb596,0xffff,0xf79e,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x18e3,0xe73c,0xb5b6,0x0000,0x0861,0x18e3,0xe71c,0xbdf7,0x0000,0x39c7,0xf79e,0xffff,0xffff,0xd69a,0x0000,0x18e3,0xe71c,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x0000,0x18e3,0xe71c,0xbdf7,0x0000,0x39e7,0xffff,0x6b6d,0xb596,0xe73c,0x2104,0xffdf,0xffff,0xffff,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x0000,0x18e3,0xe71c,0xbdf7,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x39e7,0xffff,0xffff,0xb596,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xef5d,0x0000,0x0000,0x0000,0xb596,0xffff,0xffdf,0xffff,0x630c,0x9cf3,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xfe41,0xfe41,0xcd00,0x20c0,0xfe21,0xfe81,0xb460,0x0000,0x3960,0xf5e1,0xfe61,0xfe81,0xcd00,0x18c0,0xede1,0xfe61,0xfe81,0xd520,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0x18e3,0x0000,0xe71c,0xbdd7,0x0000,0x39c7,0x0841,0x0000,0xc618,0xe73c,0x18e3,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x39c7,0x0841,0x0000,0xc618,0xe73c,0x18e3,0x0000,0xdedb,0xad75,0x73ae,0xf79e,0x18e3,0xe71c,0xb596,0x6b6d,0xffdf,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x4228,0xf79e,0x7bcf,0x0000,0x8c71,0xffff,0x5acb,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x39e7,0x0000,0xad96,0xdedb,0x4228,0xf79e,0x632c,0xad75,0xe71c,0x2965,0xffdf,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0xf79e,0x8c71,0x0000,0x0000,0x39c7,0xf79e,0x73ae,0xad75,0xdedb,0x0000,0x18e3,0xe73c,0xc618,0x0000,0x39c7,0xf79e,0x73ae,0xad75,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x738e,0xad75,0xdefb,0x18e3,0xf79e,0x73ae,0xad75,0xd6ba,0x2124,0xffff,0x5aeb,0xad75,0xe73c,0x18e3,0xffdf,0x8430,0x0000,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x738e,0xad75,0xdefb,0x18e3,0xf79e,0x6b6d,0xad55,0xd6ba,0x2104,0xffdf,0x7bef,0xad75,0xd6ba,0x2104,0xffdf,0x7bef,0xad75,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x39e7,0x18c3,0x0000,0x8c71,0xffff,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0x8340,0x0000,0x20e0,0x3960,0xfe21,0x7b00,0xac40,0xdd40,0x0000,0x18c0,0xe5a1,0xbca0,0x0000,0x0000,0x20c0,0xe5a1,0xbca0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0020,0x0000,0xb5b6,0xe71c,0x0000,0x0000,0x630c,0xc618,0xbdf7,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xc618,0xbdf7,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0x0000,0x0000,0xe73c,0xad75,0x632c,0xffff,0x2104,0xd6ba,0xffff,0xce59,0x73ae,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0x0841,0xffff,0x8410,0x0000,0x7bef,0xffff,0x3186,0x0000,0xad75,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xd6ba,0x2124,0x0000,0xbdf7,0xe71c,0x0000,0xffff,0x6b6d,0xa514,0xffff,0xd6ba,0x7bcf,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x6b6d,0x8c51,0xbdd7,0x2945,0xffff,0x632c,0xad75,0xe73c,0x0000,0x0000,0xe71c,0xb5b6,0x0000,0x39e7,0xffff,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xf79e,0xb5b6,0x5acb,0x31a6,0xffff,0x632c,0xad75,0xe71c,0x18e3,0xf7be,0xf7be,0xad75,0x3186,0x39c7,0xf7be,0xf7be,0x9492,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xf7be,0xad75,0x39e7,0x39c7,0xffdf,0xef5d,0xffdf,0xdedb,0x2104,0xffdf,0x632c,0xad75,0xe71c,0x2104,0xffdf,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0xb596,0xffff,0xd6ba,0x2124,0x0000,0x0000,0x7bef,0xffdf,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xf601,0x9380,0x0000,0x3980,0xfe21,0x6260,0xac40,0xe5a1,0x0000,0x0000,0xe581,0xb460,0x0000,0x0000,0x0000,0xe581,0xb460,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0x0000,0x0000,0x0000,0x630c,0xbdf7,0xb596,0x2965,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x630c,0xbdf7,0xb596,0x2965,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0xef7d,0xad75,0x5aeb,0xffff,0x2124,0xdedb,0xef7d,0x8c71,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x8430,0x0000,0x73ae,0xffdf,0x18c3,0x0000,0xb5b6,0xf7be,0xb596,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xad75,0x2945,0x0000,0xc618,0xe73c,0x0000,0xffff,0x738e,0xa534,0xffdf,0xb596,0xa534,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x5aeb,0xb596,0xf79e,0x18e3,0xffff,0x5aeb,0xad75,0xef7d,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x39e7,0xffff,0x5aeb,0xad75,0xef7d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xdedb,0x6b6d,0x0000,0x4208,0xffff,0x5b0c,0xad75,0xef5d,0x18e3,0xf7be,0xd6ba,0xad75,0x7bef,0x3186,0xffdf,0xd69a,0x630c,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf7be,0xd6ba,0xad75,0x7bef,0x3186,0xf7be,0xce79,0xe73c,0xdedb,0x2104,0xffdf,0x6b4d,0xad75,0xe71c,0x2104,0xffff,0x5acb,0xad75,0xef7d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0000,0xb5b6,0xffdf,0xa514,0x0000,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xf601,0xd520,0x6260,0x0000,0x3980,0xfe21,0x5a20,0xac40,0xedc1,0x0000,0x0000,0xe581,0xb460,0x0000,0x0020,0x0000,0xe581,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xe71c,0xd6ba,0x738e,0x7bef,0x1082,0x52aa,0xd6ba,0xf79e,0x738e,0x0861,0x6b6d,0x738e,0x94b2,0xdefb,0x31a6,0x0000,0xbdf7,0xe73c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x738e,0x94b2,0xdefb,0x31a6,0x0000,0xbdf7,0xe73c,0x0000,0x0000,0xbdd7,0xb596,0x9cd3,0xd69a,0x0841,0xe73c,0xb596,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xf79e,0x8410,0xd6ba,0x630c,0x3186,0xb5b6,0xffff,0x9492,0x0000,0xbdd7,0xdefb,0x0000,0xffff,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe71c,0x0000,0x0000,0x0000,0x9cd3,0xce59,0x8430,0xd6ba,0x4a69,0xb5b6,0xdefb,0x0000,0xffff,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xd69a,0x9cd3,0xb596,0xb5b6,0x18c3,0xd69a,0x9cd3,0xb596,0xbdd7,0x0000,0x0000,0xe73c,0xbdf7,0x0000,0x3186,0xd69a,0x9cd3,0xb596,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x738e,0x0000,0x0000,0x3186,0xd69a,0x9cd3,0xb596,0xb5b6,0x2945,0xffff,0x52aa,0xb596,0xef7d,0x18e3,0xffff,0xa514,0x6b6d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x52aa,0xb596,0xef7d,0x18e3,0xffff,0x52aa,0xa534,0xe73c,0x2104,0xffff,0x6b6d,0xb596,0xe71c,0x2104,0xffff,0xad55,0xb596,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xf79e,0x7bcf,0x8430,0x0000,0xb5b6,0xef7d,0x630c,0x8410,0x39e7,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3980,0xfe21,0xa400,0x6aa0,0x6280,0x3140,0xfe21,0xac20,0xac40,0xbc80,0x0000,0x72c0,0xede1,0xd520,0x5a20,0x0000,0x0000,0xe5a1,0xbc80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0xffff,0xffff,0xf79e,0x18e3,0xd69a,0xffff,0xffdf,0xf79e,0x18e3,0xce79,0xffff,0xd69a,0x0000,0x0000,0x0000,0xb596,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0xffff,0xd69a,0x0000,0x0000,0x0000,0xb596,0xdedb,0x0000,0x0000,0x0000,0xb596,0xdefb,0x0000,0x0000,0xdedb,0xb596,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xffff,0xf79e,0x18e3,0x0000,0xad75,0xffff,0xf7be,0xffff,0x632c,0xa534,0xd6ba,0x18e3,0xf79e,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdedb,0x0000,0x0000,0x0841,0x0000,0x73ae,0xffdf,0x2104,0x0000,0xb596,0xd6ba,0x18e3,0xf79e,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x0000,0x0000,0xdedb,0xb596,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0xf79e,0x7bef,0x0000,0x0000,0x0000,0x0000,0xdefb,0xb596,0x0000,0x39c7,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xef5d,0xffff,0xffff,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xf79e,0x632c,0xa534,0xd6ba,0x18e3,0xef5d,0xffff,0xa534,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xffff,0xffff,0xffff,0x630c,0x9cd3,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x7bef,0xf79e,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3960,0xeda0,0xfe20,0xfe60,0xcd00,0x18a0,0xeda0,0xfe80,0xa400,0x0000,0x3960,0xf5e0,0xfe00,0xfe40,0xd520,0x0000,0x0000,0xdd40,0xb440,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3163,0x39c5,0x39c5,0x39a5,0x0000,0x3163,0x39c5,0x39a5,0x39a5,0x0000,0x3143,0x41e6,0x3163,0x0000,0x0000,0x0000,0x2922,0x3164,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3164,0x41e6,0x3163,0x0000,0x0000,0x0000,0x2922,0x3164,0x0000,0x0000,0x0000,0x2922,0x3184,0x0000,0x0000,0x3164,0x2922,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x2901,0x41c6,0x39a5,0x0800,0x0000,0x2901,0x39c6,0x39a5,0x39c5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x1880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x2922,0x3164,0x0000,0x0000,0x0000,0x0000,0x1880,0x39a5,0x0800,0x0000,0x2922,0x3164,0x0000,0x39a5,0x1880,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0000,0x0000,0x3164,0x2922,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x39a5,0x1880,0x0000,0x0000,0x0000,0x0000,0x3184,0x2922,0x0000,0x0800,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x39c5,0x39c6,0x3164,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x1840,0x2901,0x3164,0x0000,0x39a5,0x41c6,0x2901,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x2901,0x39c6,0x39a5,0x39c5,0x1840,0x20e0,0x39c6,0x39a5,0x39c5,0x1880,0x0000,0x1880,0x39a5,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0800,0x3920,0x3940,0x3940,0x30e0,0x0000,0x3920,0x4160,0x28a0,0x0000,0x0800,0x3920,0x3940,0x3940,0x3100,0x0000,0x0000,0x3100,0x28c0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02d4,0x02d4,0x02d4,0x02d4,0x0b14,0x02d4,0x02d4,0x02d4,0x02d4,0x0b14,0x02d4,0x02b4,0x02d4,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02d4,0x02b4,0x02d4,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02d4,0x0b14,0x1314,0x02f4,0x02d4,0x02d4,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x0b14,0x1314,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b14,0x02d4,0x02f4,0x1314,0x0b14,0x02d4,0x0b14,0x02b5,0x0295,0x0314,0x0275,0x02b4,0x0294,0x0295,0x0b14,0x02b6,0x0316,0x11ec,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02f4,0x02f4,0x02d4,0x0b14,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x02f4,0x02d4,0x02d4,0x02d4,0x02f4,0x02f4,0x02d4,0x02d4,0x02d4,0x02f4,0x1314,0x02f4,0x02d4,0x0b14,0x0b14,0x1314,0x02f5,0x02b6,0x0314,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x02f4,0x02d4,0x02f4,0x1314,0x0b14,0x02f4,0x02d4,0x02d4,0x02f4,0x0b14,0x0b14,0x02f4,0x02f4,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x039a,0x8cb4,0x9cf3,0x039a,0xb551,0x5417,0x8495,0x9cf3,0x039a,0xb551,0x6457,0x0316,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0399,0x5c37,0xad32,0x2bd9,0x03da,0x0b36,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x0399,0x039a,0x039a,0x039a,0x03da,0x1335,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x13d9,0x0399,0x0358,0x0359,0x03b9,0x13d9,0x0399,0x0358,0x0359,0x0358,0x03b9,0x0399,0x0379,0x0bb9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b36,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6c35,0x7c74,0x7c74,0x8494,0x7c74,0x8494,0x7c74,0x7c74,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x7c74,0x7c74,0x7c74,0x7c74,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6435,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x6c35,0x7c74,0x7c74,0x8494,0x7c74,0x8494,0x7c74,0x7c74,0x8494,0x7c74,0x3bd7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x9cf2,0xd58c,0x7c74,0xddca,0x5c16,0x94d2,0xd58c,0x7c74,0xddca,0x7455,0x03ba,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0399,0x0399,0x0399,0x0398,0x13da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x8494,0xfe60,0x33d7,0x0379,0x13da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x8493,0x8494,0x8494,0x43d7,0x03da,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0378,0x5479,0x855b,0x7d1a,0x0b98,0x0358,0x5479,0x853b,0x853a,0x855b,0x33f9,0x5479,0x6cda,0x13b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe80,0xfe40,0xfe23,0xfe40,0xfe22,0xfe40,0xfe40,0xfe23,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xfe60,0xfe23,0xfe23,0xfe23,0xfe40,0xfe60,0xfe40,0xfe40,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xfe60,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe23,0xfe22,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe80,0xfe40,0xfe23,0xfe40,0xfe22,0xfe40,0xfe40,0xfe23,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8c93,0xfe40,0x4bf7,0x0398,0x0379,0x8c93,0xfe40,0x4bf7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bb8,0x43f7,0x3bd7,0x43d7,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xfe23,0x5c16,0x0b98,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe23,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x02f7,0xb63c,0xffff,0xf7bf,0x5c79,0x02f7,0xb63c,0xffff,0xffff,0xffff,0x649a,0xb63c,0xe77e,0x23d8,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe80,0xddab,0x33d7,0xfe40,0x7455,0xb530,0xe5e9,0x33d8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x23b8,0xddab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xc54e,0x0b98,0x3bd7,0x3bd7,0x3bd7,0x3bd7,0x33d7,0x5c16,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe80,0xddab,0x33d7,0xfe40,0x7455,0xb530,0xe5e9,0x33d8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe40,0xfe40,0x6436,0x9cf2,0xfe60,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe23,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1bb8,0x23b8,0x23b8,0x23b8,0x13b8,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe5c,0xe75e,0x4439,0xf7bf,0x64ba,0xae3c,0xe75e,0x0378,0x3c19,0x0338,0xbe5c,0xdf3e,0x0378,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5ca,0xc54e,0x8494,0xddca,0x6c35,0xcd6d,0xad11,0x8494,0xe5e9,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0399,0x0359,0xd5ac,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0399,0x0398,0x0398,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb52f,0x033a,0x0398,0x0399,0x0399,0x0399,0x0379,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5ca,0xc54e,0x8494,0xddca,0x6c35,0xcd6d,0xad11,0x8494,0xe5e9,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x33d7,0xad11,0xfe60,0x7c74,0x1bb8,0x2bb8,0xad11,0xfe60,0x7c74,0x2bb8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x8493,0x8494,0x8494,0x43d7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x4bf7,0xb530,0xfe22,0x94b3,0x3bd7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0x9cd2,0xede8,0xddca,0xe5e9,0x6c55,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xdf3e,0x1398,0xffff,0x6cda,0xa5fc,0xffff,0xd6fe,0x2bd8,0x02d7,0xb63c,0xffff,0xdf1e,0xffff,0x7d1a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xe5c9,0xa4f1,0xad10,0xad10,0xad10,0xad10,0xad11,0xb530,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x033a,0xddab,0xfe80,0xfe60,0xfe60,0xfe60,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x031a,0x0379,0x0359,0x0398,0x1398,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x1398,0x0379,0x0359,0x0359,0x1bb8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddaa,0xe5c9,0xad11,0xbd2f,0xad10,0xb52f,0xb530,0xad10,0xbd4e,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7475,0xb530,0xad10,0xb530,0x43f7,0x6c55,0xb530,0xad10,0xb530,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0359,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x033a,0x7c74,0xfe40,0x23b8,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xc54e,0xbd2f,0xbd4f,0x5c16,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe73e,0x23d8,0xffff,0x6cda,0xadfc,0xffdf,0xa5db,0x0378,0x02b7,0xb65c,0xffff,0xffff,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe21,0xc54e,0x7455,0xddca,0x8c93,0xad10,0xcd6d,0x7455,0xfe22,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xd58c,0x6c55,0x7c74,0x7455,0xc54e,0xddab,0xd5ac,0xddab,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddca,0xd58c,0x6c55,0x7c74,0x7c74,0x3bd7,0x0398,0x0398,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0398,0x6c35,0x7c74,0x7475,0x8c93,0xfe21,0x8474,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xddab,0xfe40,0xb530,0x0379,0xddca,0x4bf7,0x94b3,0xc56e,0x0379,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xa4f1,0xc56e,0x0379,0xddca,0x6436,0x9cd2,0xc56e,0x0379,0xddca,0x7455,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x6c55,0xd58c,0x33d7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0379,0x0359,0x0359,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0317,0xbe7d,0xe75e,0x23d8,0xffff,0x6cda,0xae1c,0xef9f,0x649a,0x853b,0x23b8,0x8d5b,0xef9f,0xffff,0xe73e,0x64ba,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb510,0x6c55,0xf624,0x33d7,0xddca,0xad10,0x6c35,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe60,0xfe60,0xfe40,0xfe60,0x7475,0x033a,0x0359,0x23b8,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xd5ac,0xfe60,0xfe60,0xfe40,0xfe60,0x7c74,0x0379,0x0398,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xddab,0xfe80,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0xe5c9,0xb530,0x033a,0x0b98,0x0379,0x0398,0x0399,0x0359,0x43d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x0379,0x0b98,0x0379,0x0398,0x0399,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0318,0xb63c,0xd71e,0x23b8,0xf7bf,0x6cba,0x9dbb,0xffff,0xffff,0xffff,0x7d1a,0x0297,0x74fa,0xf7bf,0x23b8,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0358,0x0338,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xcd8c,0x33d7,0xf624,0x7455,0xad10,0xddca,0x33d7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0358,0x0338,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0398,0x13b8,0x0b98,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x0379,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0358,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0379,0xd5ab,0xfe60,0xfe40,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0379,0xe5c9,0xbd2f,0x0359,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x3bd7,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0358,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x1398,0x0358,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0398,0x2bd8,0x33f9,0x1398,0x3c19,0x1bb8,0x2bd8,0x4419,0x3c19,0x4419,0x23b8,0x0398,0x23b8,0x3c19,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02b7,0xbe7c,0xef9f,0xe75e,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0379,0xe5ca,0xc56e,0x8474,0xcd8c,0x6c55,0xc54e,0xa4f1,0x8494,0xddab,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02b7,0xbe7c,0xef9f,0xe75e,0xe75e,0xe75e,0xef9f,0x9dbb,0x0338,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xef7e,0x5c79,0x02f7,0x13b8,0x0b98,0x0379,0xd5ab,0xfe60,0xfe41,0xfe40,0xfe60,0x6c55,0x031a,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0xc69d,0x0358,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x031a,0xd58c,0xfe60,0xfe41,0xfe40,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0297,0x959b,0xef9f,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0379,0xe5c9,0xb530,0x02fa,0x0359,0x0359,0x0359,0x0359,0x033a,0x0b98,0xfe23,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0338,0x9dbb,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0358,0xc69d,0x9dbb,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x1398,0x0398,0x02b7,0xc6bd,0xa5fc,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0338,0x0338,0x0398,0x0b98,0x0378,0x0318,0x0358,0x0358,0x02d7,0x02d7,0x0378,0x1bb8,0x0378,0x02d7,0x0317,0x02f7,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd8,0xa5fc,0xbe5c,0xbe7c,0xbe7c,0xbe5c,0xbe7c,0xbe7c,0xbe7c,0x959b,0x0378,0x0379,0xe5c9,0xe5c9,0xc56e,0xfe80,0xb510,0xfe41,0xe5c9,0xc54e,0xfe80,0xfe80,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd9,0xb63c,0xb63c,0xae1c,0xae1c,0xae1c,0xae1c,0xb65c,0x74fa,0x0358,0x0b98,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xd71e,0xb63c,0xbe5c,0xbe7c,0xbe5c,0xc69d,0x74fa,0x02f7,0x1398,0x0379,0xddca,0xfe80,0xfe60,0xfe60,0xfe60,0xd58c,0xb530,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xcedd,0xa5fc,0xae1c,0xae1c,0xae1c,0xb65c,0xc69d,0x9dbb,0x0378,0x0379,0xe5c9,0xede7,0xb510,0xbd2f,0xb530,0xf605,0xfe60,0xfe60,0xfe60,0xfe80,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0x9dbb,0xc69d,0xbe5c,0xbe5c,0xbe5c,0xbe5c,0xc69d,0x9dbb,0x0378,0x0379,0xe5c9,0xede7,0xb510,0xbd2f,0xbd2f,0xbd2f,0xbd2f,0xb52f,0xc54e,0xfe60,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02b7,0x0338,0x0338,0x0338,0x0277,0xbe7c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0xef9f,0xc69d,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02b7,0x0318,0x0398,0xb63c,0xc6bd,0x7d3a,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x9dbb,0x7d3a,0x0358,0x0b98,0x0378,0x9dbb,0x74fa,0x4439,0xb63c,0xbe7d,0x4c39,0x02f7,0x5479,0xb63c,0xbe5c,0xc69d,0x7d3a,0x0358,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x74fa,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe5c,0xf79f,0x0338,0x0379,0xb530,0xe5c9,0xe5ca,0xd5ab,0xe5c9,0xddab,0xddaa,0xe5ca,0xd5ac,0xddab,0x6c35,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3bf9,0xdf3e,0x9dbb,0x649a,0x6cda,0x6cda,0x6cda,0x74fa,0x4439,0x0358,0x0b98,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x0277,0x0317,0x0317,0x02b7,0xc69d,0xc69d,0x5c79,0x0398,0x0379,0xb530,0xddca,0xd5ab,0xd5ab,0xd5ac,0xddca,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xa5fc,0x5c99,0x6cda,0x6cda,0x74da,0x0398,0x02d7,0x0338,0x13b8,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddab,0xd5ac,0xd5ab,0xd5ab,0xddab,0x6c35,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x6cda,0xdf1e,0x9dbb,0x0277,0x0317,0x02d7,0x0237,0x9dbb,0xcebd,0x0358,0x0379,0xb530,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xe5c9,0xddaa,0x6435,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xb63c,0x74fa,0x853a,0x853a,0x853a,0x74fa,0xd6fd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0358,0xe75e,0xbe5c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xb63c,0x74fa,0x7d3a,0x8d7b,0xe75e,0x5c99,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0338,0xef9f,0xc69d,0x02f7,0x0b98,0x0338,0xef9f,0xb65c,0x6cda,0xffff,0xef9f,0xa5db,0x2bd8,0x7d1a,0xffff,0xe75e,0xef9f,0x9dbb,0x0338,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x3c19,0x3c19,0x3c19,0x0b98,0xc69d,0xe75e,0x0358,0x0b98,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0xd6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x1398,0x02b7,0xbe5c,0xef9f,0x0338,0x0b98,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0x7d1a,0x0338,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02f7,0x1398,0x13b8,0x3c19,0x4419,0x33f9,0x1bb8,0x0b98,0x1398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x23b8,0x0398,0x0b98,0x0b98,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xf7bf,0x4c39,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xe75e,0xbe7c,0x0317,0x0b98,0x0358,0xe75e,0xae1c,0x6cda,0xffff,0x0378,0xe75e,0xb63c,0x6cda,0xffff,0x4c39,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x2bd8,0x4419,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x1398,0x02b7,0xbe5c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x3c19,0x3c19,0x4419,0x23b8,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02f7,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xcedd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x3c19,0x3c19,0x3c19,0x0b98,0xc69d,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x74fa,0x02f7,0x13b8,0x0b98,0x0358,0xe75e,0xbe5c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x23b8,0x33f9,0x5c79,0xffdf,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xe75e,0xbe5c,0x0317,0x0b98,0x0358,0xe75e,0xae1c,0x6cda,0xffff,0x23d8,0xe75e,0xae1c,0x64ba,0xffff,0xffff,0x7d1a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xb63c,0x74fa,0x853a,0x853a,0x853a,0x74fa,0xd6fd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3bf9,0xe75e,0x5c99,0x0257,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x0277,0x0317,0x0317,0x02b7,0xc69d,0xc69d,0x5c79,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02f7,0x0378,0x0378,0x0378,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x6cda,0xdf1e,0x9dbb,0x0257,0x0338,0x64ba,0x5479,0xd71e,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02f7,0x0378,0x0378,0x0378,0x02d7,0xb65c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0xdf3e,0x9dbb,0x0277,0x0317,0x0297,0xef9f,0xc69d,0x02f7,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0x02f7,0x0378,0x0b98,0x74fa,0xdf3e,0x9dbb,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x0277,0x0317,0x0317,0x0317,0x0317,0x02f7,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0xe75e,0xb63c,0x0257,0x0317,0x0338,0xe75e,0xae1c,0x6cda,0xffff,0x23d8,0xe73e,0xae1c,0x6cda,0xffff,0x853a,0x0378,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x7d1a,0x02b7,0x0338,0x0338,0x0338,0x0277,0xbe7c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd8,0xb63c,0xbe7d,0xbe5c,0xbe5c,0xbe7c,0xbe5c,0xbe7c,0xbe5c,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xd6fe,0xb63c,0xbe5c,0xbe7c,0xbe5c,0xc69d,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0x9dbb,0xc69d,0xbe7c,0xbe5c,0xae3c,0xae1c,0xb63c,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xc69d,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0x9dbb,0xc69d,0xbe5c,0xbe5c,0xbe7c,0xbe5c,0x74fa,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x1398,0x0398,0x02f7,0x9dbb,0xc6bd,0x9dbb,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xd6fe,0xb63c,0xbe7c,0xbe7c,0xbe7c,0xbe7c,0xc69d,0x9dbb,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0338,0xe75e,0xef9f,0xb65c,0xb63c,0x0398,0xef7e,0xb63c,0x74da,0xffff,0x23d8,0xe77e,0xb63c,0x6cda,0xffff,0xb65c,0xbe7d,0x853a,0x0358,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0338,0x9dbb,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x1398,0x0398,0x02b7,0xbe7c,0xef9f,0xe75e,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xef7f,0x5c79,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x13b8,0x0297,0x959b,0xef9f,0xe75e,0xe75e,0xef9f,0x959b,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x0b98,0x0338,0x9dbb,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x13b8,0x0297,0x959b,0xef9f,0xe75e,0xef9f,0x5c79,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xd6fd,0x6cda,0x0358,0x0b98,0x0b98,0x13b8,0x0297,0x9dbb,0xcedd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0378,0x33f9,0xcedd,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xe75e,0xef9f,0xc69d,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0358,0xb63c,0xe75e,0xef7e,0xdf1e,0x23b8,0xbe7d,0x959b,0x5c79,0xd6fd,0x23b8,0xbe7d,0x959b,0x5479,0xdf3e,0xe75e,0xef9f,0x9dbb,0x0338,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x1398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0358,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0398,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x13b8,0x0398,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x0358,0x0358,0x0b98,0x0358,0x0378,0x0398,0x0358,0x0b98,0x0358,0x0378,0x0398,0x0358,0x0358,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0841,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x630c,0xe71c,0x0000,0x0000,0x9cf3,0xbdf7,0x0000,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x738e,0x0000,0x630c,0xe71c,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x630c,0xe71c,0x0000,0x0000,0x9cf3,0xbdf7,0x0000,0x0000,0x1082,0x0000,0x5acb,0xef5d,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x5aeb,0xe71c,0x31a6,0x0000,0x0000,0x630c,0xe71c,0x0000,0x0000,0x0000,0x5acb,0xef5d,0xef5d,0x5acb,0x9492,0xbdf7,0x18c3,0xd69a,0x5acb,0x8430,0xe73c,0xdedb,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0x0000,0x0000,0x9492,0xe73c,0xe73c,0xef5d,0x5acb,0x9492,0xef5d,0xd6ba,0xef5d,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xce79,0xef7d,0x9492,0x0000,0x31a6,0xce79,0xe71c,0xef7d,0xbdf7,0x18c3,0xd69a,0x5acb,0x9492,0xbdf7,0x2104,0xdedb,0xdefb,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a0e,0x0b56,0x0b15,0x0000,0x0000,0x0a0e,0x0b56,0x0b15,0x0000,0x0000,0x0a0e,0x0b36,0x0b36,0x0b56,0x018a,0x0000,0x0149,0x0b35,0x0000,0x0000,0x0a2f,0x0ab2,0x0062,0x0af4,0x018a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xbdd7,0xbdd7,0xbdf7,0x31a6,0xbdd7,0xef5d,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x4a49,0x6b6d,0xb5b6,0xad75,0xb596,0x2965,0xb5b6,0xffff,0xad55,0xbdf7,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xbdd7,0xbdd7,0xbdf7,0x31a6,0xbdd7,0xef7d,0x0000,0x0000,0x0000,0x7bef,0xbdf7,0xad75,0xbdf7,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xbdd7,0xb596,0x0000,0x0000,0x73ae,0xbdd7,0xbdd7,0xb596,0x4208,0x73ae,0xbdf7,0xad75,0xbdf7,0x31a6,0xbdd7,0xe73c,0x2104,0xffff,0x6b6d,0xad75,0xffff,0xad55,0xbdf7,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xffff,0xad55,0xbdf7,0x31a6,0xb596,0xffff,0xad55,0xbdf7,0x4a49,0x6b6d,0xdedb,0xffff,0xc638,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0xd6ba,0xb596,0x8c51,0x3186,0xffff,0xce79,0xb596,0x94b2,0x31a6,0xffff,0x630c,0xb596,0xf79e,0x0000,0xad75,0xffff,0xef7d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab2,0x0b98,0x0a70,0x0ab2,0x00c5,0x0a91,0x0b98,0x0a70,0x0ab2,0x00c5,0x0a91,0x0b98,0x0a70,0x0ab2,0x0107,0x018a,0x0a91,0x0a70,0x0a91,0x00a4,0x0ab2,0x0b36,0x0000,0x0bd9,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0x0000,0xdedb,0x5acb,0xb596,0xe73c,0x0000,0x0000,0x0000,0xb5b6,0xef7d,0x5acb,0x0000,0x0000,0xc618,0xf79e,0x738e,0xffff,0x738e,0xad55,0xef5d,0x6b6d,0xdefb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0x0000,0xdedb,0x5acb,0xb596,0xe73c,0x0000,0x0000,0x0000,0xa514,0xd6ba,0x5acb,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0000,0x73ae,0x0000,0xc618,0xe73c,0x0000,0xffff,0x73ae,0x94b2,0xd6ba,0x5acb,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffdf,0x6b4d,0xad55,0xef5d,0x6b6d,0xdefb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0x6b6d,0xdefb,0x52aa,0xad75,0xef7d,0x5acb,0x0000,0x0000,0x0000,0x738e,0xffdf,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x528a,0xad75,0xef7d,0x18e3,0xffdf,0xad55,0x1082,0x0000,0x31a6,0xce79,0x94b2,0xb596,0xb5b6,0x0000,0x0000,0xe71c,0xb596,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a91,0x0b56,0x018a,0x0b35,0x0128,0x0a70,0x0b56,0x018a,0x0b35,0x0128,0x0a70,0x0b56,0x0148,0x0000,0x0000,0x0ab2,0x0b77,0x018a,0x0bb9,0x018a,0x0a70,0x0b57,0x01cc,0x0af4,0x016a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x18e3,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x39c7,0x0000,0xad75,0xffff,0xffff,0xffff,0x632c,0xa514,0xffff,0xf79e,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x18e3,0x0000,0xbdd7,0xe71c,0x0000,0x0000,0x0861,0x0000,0x73ae,0xffdf,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x2104,0xffff,0x6b6d,0xad75,0xe71c,0x18e3,0xffff,0x8410,0x0000,0x73ae,0xffdf,0x5acb,0x0000,0xbdd7,0xdf1c,0x18e3,0xffdf,0x6b4d,0xa514,0xffff,0xf79e,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xf79e,0x4228,0x0000,0xad75,0xffff,0xf79e,0x39c7,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x18e3,0xf7be,0xffff,0xad55,0x0000,0x0000,0x0000,0xe71c,0xbdd7,0x0000,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a70,0x0bda,0x0b77,0x00e6,0x0000,0x0a70,0x0bda,0x0b77,0x00e6,0x0000,0x0a70,0x0bda,0x0b77,0x00c5,0x0000,0x0a70,0x0bd9,0x0b98,0x0bb9,0x0169,0x0a4f,0x0bda,0x0b77,0x00e6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0x0000,0xf7be,0x6b4d,0xad75,0xe71c,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xffff,0x6b4d,0xad75,0xe71c,0x4228,0xf79e,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0x0000,0xf7be,0x6b4d,0xad75,0xe71c,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xffdf,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0x0000,0xffff,0x6b6d,0xb596,0xe73c,0x0000,0xffff,0x8430,0x0000,0x0000,0x4228,0xffdf,0x6b4d,0xad75,0xdefb,0x0000,0xffdf,0x6b4d,0xad75,0xe71c,0x2965,0xffdf,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0x4228,0xf79e,0x632c,0xad75,0xe73c,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xffff,0x6b4d,0xad75,0xe71c,0x2104,0xffdf,0x8430,0x0000,0x0000,0x39c7,0xf79e,0x73ae,0xad75,0xdedb,0x0000,0x0000,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a91,0x0b35,0x00a4,0x0b98,0x016a,0x0a70,0x0b36,0x00e6,0x0b77,0x0169,0x0a70,0x0b36,0x0000,0x0000,0x0000,0x0a91,0x0b35,0x0106,0x0b98,0x018a,0x0a70,0x0b36,0x00e6,0x0b77,0x01ab,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xa534,0xe71c,0x8c71,0x0000,0xb5b6,0xffff,0xe71c,0xef5d,0x528a,0xad75,0xffff,0xdefb,0xef5d,0x528a,0xbdd7,0xef5d,0x0841,0xffff,0x738e,0xb5b6,0xef5d,0x0861,0xffff,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xa534,0xe71c,0x8c71,0x0000,0xb5b6,0xffff,0xe71c,0xef5d,0x5acb,0x9492,0xef7d,0xdedb,0x8c71,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0xa534,0xe71c,0x8c51,0x2945,0x4208,0xa534,0xe71c,0x8c51,0x0000,0x9cd3,0xef7d,0xdedb,0x8c71,0x0000,0xb5b6,0xffff,0xe73c,0xffff,0x6b4d,0xad75,0xffff,0xdedb,0x8c71,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0x0861,0xffff,0x738e,0xad75,0xffff,0xdefb,0xef5d,0x6b6d,0x0000,0x8430,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xffff,0x738e,0xb5b6,0xef5d,0x2104,0xffff,0xf79e,0xe73c,0xbdd7,0x2965,0xffff,0x6b4d,0xb5b6,0xf79e,0x0000,0x0000,0xef7d,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0a91,0x0bda,0x0b14,0x0a0d,0x0000,0x0ab2,0x0b56,0x0021,0x0bd9,0x018b,0x0a70,0x0bd9,0x0b35,0x0b56,0x0127,0x0a91,0x0b56,0x0000,0x0bb9,0x018a,0x0a91,0x0b56,0x0021,0x0bd9,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0882,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xbdf6,0x4a27,0x6b2b,0xbdb6,0xbdb6,0xbdf6,0x4a27,0x738d,0x9cb1,0x1000,0xad54,0x4a07,0x738d,0x9cb1,0x1000,0xad54,0x5a89,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xbdf6,0x4a06,0x738d,0xc617,0xb575,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0882,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x0000,0x4a27,0xb5b5,0x0000,0x0000,0x7bce,0xc617,0xb575,0x0000,0x0000,0x738d,0xbdb6,0xbdb6,0xb595,0x41e6,0x6b4c,0xbdd6,0xb575,0x0000,0x0000,0x0800,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bce,0x9cb1,0x1000,0xad54,0x4a07,0x6b4c,0xbdb6,0xbdb6,0xbdf6,0x5aa9,0x0000,0x5a89,0xad54,0x28e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x28e0,0xad54,0x4a07,0x738d,0x9cb1,0x1000,0xa513,0xbdb6,0xc5f7,0x9cb2,0x1000,0xad54,0x4a07,0x738d,0x9cd2,0x0000,0x0000,0x9cd2,0x7bce,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x018a,0x0a70,0x0a4f,0x0000,0x0000,0x018a,0x01ed,0x0000,0x0a2f,0x00a4,0x0148,0x0a70,0x0a70,0x0a91,0x00a4,0x0169,0x01ed,0x0000,0x0a2f,0x00a4,0x0169,0x01ed,0x0000,0x0a2f,0x00e6,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0927,0x016b,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x0007,0x016b,0x010a,0x0007,0x0008,0x0007,0x016b,0x00ea,0x0008,0x01ab,0x0008,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x016b,0x0927,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x11cc,0x014a,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x0007,0x016b,0x010a,0x0007,0x0008,0x01ab,0x09cb,0x01ac,0x018c,0x018c,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0927,0x016b,0x0008,0x01ab,0x09cc,0x11cc,0x014a,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x01ab,0x11ec,0x00ea,0x0007,0x0008,0x0007,0x016b,0x010a,0x0007,0x0008,0x016c,0x01cc,0x0927,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x11cc,0x00c9,0x0009,0x01ab,0x0008,0x016b,0x010a,0x0007,0x0008,0x0007,0x014a,0x19ec,0x014b,0x0008,0x01ab,0x09cb,0x01ac,0x018c,0x018c,0x01ab,0x09cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x09cc,0x01ab,0x0008,0x016b,0x00ea,0x0009,0x01ab,0x0008,0x0007,0x0007,0x0069,0x01ab,0x0008,0x016b,0x00ea,0x0008,0x09cc,0x09cc,0x0008,0x00c9,0x11cc,0x01ab,0x018c,0x01cc,0x0927,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x09cb,0x01ac,0x018c,0x09cb,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x0107,0x01cc,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01ab,0x01cc,0x0107,0x0000,0x0000,0x0000,0x0000,0x00e6,0x016a,0x0169,0x01ab,0x01cc,0x018a,0x016a,0x01ab,0x0169,0x01ab,0x018a,0x0169,0x0169,0x0169,0x01ab,0x018a,0x016a,0x01ab,0x0169,0x09ab,0x018b,0x014a,0x018c,0x0169,0x09ab,0x0127,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x43f8,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x3bf8,0x23fa,0x0292,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x23d9,0x3bf8,0x13b9,0x03b9,0x2bd8,0x43f8,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x13b9,0x3bf8,0x23fa,0x0292,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x3bf8,0x03b9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0ab1,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x03b9,0x2bd8,0x43f8,0x3bf8,0x13b9,0x0bda,0x0ab2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b8,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b8,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xad11,0xfe60,0xf607,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0xf606,0x7c74,0x0379,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0359,0x7475,0xf624,0x23b8,0x033a,0xa4f1,0xfe40,0xf606,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x23b8,0xf624,0x8494,0x0379,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xddca,0x035a,0x0398,0x13b8,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb8,0x0af3,0x0000,0x0000,0x0af3,0x0bb8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x033a,0xa4f1,0xfe60,0xf607,0x23b8,0x0379,0x13b8,0x0af3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7455,0xe5ca,0x3bd7,0x0398,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7455,0xe5ca,0x3bd7,0x0398,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c16,0x7c74,0x7475,0xe5c9,0x7455,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x1398,0xfe60,0x8c93,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x9cd2,0xcd6d,0x8494,0xd5ab,0x5416,0xb510,0xede7,0x6c55,0xe5c9,0x7455,0x039a,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0359,0x5c36,0xe5c9,0x8cb3,0x3bd7,0x03b9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x4bf7,0xad11,0xddca,0x0398,0x0379,0x13d9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bd9,0x0b15,0x0000,0x0000,0x0b15,0x0bd9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x033a,0xb52f,0xb510,0x6436,0x8cb3,0xe5c9,0x7455,0x039a,0x0b15,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x5c16,0xad11,0x2bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x5c16,0xad11,0x2bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x43d7,0xb530,0xbd4f,0x5c16,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x5416,0xb530,0xb530,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xc54e,0xe5c9,0x0379,0xfe40,0x7455,0xa4f1,0xf624,0xad11,0xb530,0x5416,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7c74,0xc54e,0xa4f1,0x0399,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x43d7,0xb530,0xbd4f,0x5c16,0x0399,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x2bb8,0xad10,0xfe22,0xede8,0x7c74,0x0379,0xb530,0x5c36,0x0399,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x0399,0x0398,0x0398,0x0398,0x0b98,0x0398,0x0398,0x0398,0x0398,0x0b98,0x0398,0x0399,0x0399,0x0398,0x0b98,0x0398,0x0399,0x0399,0x0398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0x6c55,0x1bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x2bb8,0x6c55,0x1bb8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x7455,0xddab,0x0398,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x8494,0xfe60,0x1398,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xbd4f,0xe5ca,0x0b98,0xfe41,0x6c55,0xa4f1,0xfe40,0xddab,0x7455,0x2bb8,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xa4f1,0xd5ac,0x5c16,0x0398,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0399,0x23b8,0x7c74,0xe5c9,0x7455,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x3bd7,0x8494,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x33d7,0xd5ac,0xfe23,0xfe24,0xbd2f,0x0359,0x033a,0x0379,0x13d9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x1398,0x3bd7,0x43f7,0x2bb8,0x1bb8,0x3bd7,0x1398,0x33d7,0x2bb8,0x1bb8,0x3bd7,0x1398,0x33d7,0x43d7,0x43d7,0x3bd7,0x1398,0x33d7,0x43d7,0x3bd7,0x3bd7,0x13b8,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8474,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf606,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb510,0xddab,0x43f7,0xf606,0x6436,0xad10,0xddca,0x0398,0xfe40,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0359,0x7455,0xfe24,0x5c16,0x0b98,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf625,0x23b8,0x0379,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0xe5c9,0xbd4f,0x0379,0x43d7,0x43d7,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x13b9,0x0379,0x23b8,0xf606,0xfe60,0x9cf2,0x6435,0xf606,0x23b8,0xd5ab,0xa4f1,0x6435,0xf606,0x23b8,0xcd6d,0xfe40,0xfe40,0xf606,0x23b8,0xcd8c,0xfe40,0xfe24,0xf606,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x3bd7,0x13b8,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0379,0x8474,0xf624,0x3bd7,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x8cb3,0xfe24,0x5c16,0x0359,0xbd4f,0xe5e9,0x23b8,0xfe40,0x8494,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x0398,0x5c16,0xfe24,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0359,0xb52f,0xe5c9,0x23b8,0x1398,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x3bd7,0xee07,0xfe60,0xfe40,0xfe23,0xfe23,0xfe40,0x7c74,0x039a,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x039a,0x7455,0xe5c9,0x7475,0x7c74,0x43f7,0x7c74,0xfe22,0x0379,0xddca,0xb510,0x6c55,0xfe41,0x23b8,0xddca,0xcd8d,0x6436,0x7c74,0x13b8,0x5c16,0xd5ac,0xee07,0x7455,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x43f7,0x8474,0x23b8,0x0398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x3bd7,0x8474,0x0b98,0x0379,0x5c16,0x6c55,0x13b8,0x7c74,0x43d7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0b98,0x7c74,0x43f7,0x03b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0399,0x5c36,0x7455,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0398,0x23b8,0x7c74,0x7c74,0x7c74,0x8494,0x8494,0x8494,0x43d7,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0399,0x5c16,0xbd4f,0xb530,0x23b8,0x02fa,0x8494,0xfe40,0xbd4f,0xfe24,0xa4f1,0x6c55,0xfe23,0x23b8,0xddab,0xede8,0x8494,0x0359,0x0b98,0x031a,0xb530,0xe5ca,0x033a,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x1398,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b8,0x0379,0x0379,0x0b98,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x13b8,0x0358,0x0358,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x1398,0x0398,0x0379,0x0379,0x0379,0x0379,0x0379,0x0359,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x13d9,0x0379,0x0379,0xddab,0xad11,0x33d7,0x7475,0xfe40,0xe5c9,0xfe40,0xa4f1,0x6c55,0xfe23,0x23b8,0xd5ac,0xfe40,0xbd4f,0x0379,0x0b98,0x0359,0xbd2f,0xe5c9,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x853b,0x853a,0x853a,0x853a,0x853a,0x7d1a,0x853b,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x853a,0x3c19,0x0378,0x1398,0x0b98,0x0358,0x74fa,0x6499,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x0358,0x5479,0x8d5b,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x74fa,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x23b8,0x7d1a,0x33f9,0x0378,0x1398,0x0b98,0x1398,0x0358,0x5479,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x13b9,0x0398,0x0378,0x0378,0x0398,0x0398,0x0378,0x0378,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0b98,0x0b98,0x1398,0x0398,0x0378,0x0b98,0x1398,0x0398,0x0378,0x0378,0x0378,0x0398,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x03b9,0x23b8,0x3bd7,0x0398,0xe5ca,0xad11,0x6c55,0xfe23,0x0398,0xddca,0xad10,0x6c55,0xfe23,0x23b8,0xe5ca,0xb530,0x033a,0x1398,0x0b98,0x0359,0xbd2f,0xe5c9,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x8d7b,0x0378,0x0398,0x1398,0x23d8,0xe75e,0xb65c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x0378,0xb63c,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x02f7,0xbe7d,0xef7e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x959b,0x0378,0x0398,0x0b98,0x0398,0x0378,0xc6bd,0xef7e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x03b9,0x23b8,0x4419,0x4419,0x1bb8,0x2bd8,0x4419,0x3c19,0x13b8,0x0b98,0x0398,0x23b8,0x3c19,0x13b8,0x0b98,0x0398,0x23b8,0x3c19,0x13b8,0x0398,0x2bd8,0x4419,0x3c19,0x4419,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x039a,0x7c74,0xfe40,0xfe40,0x8c93,0x0359,0x8494,0xfe40,0x23b8,0xe5e9,0xb530,0x6c55,0xfe40,0x23b8,0xe5e9,0xbd4f,0x0359,0x0b98,0x0b98,0x0359,0xbd4f,0xede8,0x0379,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x4419,0x3c19,0x4419,0x3c19,0x0378,0xef7e,0xc6bd,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xb63c,0x0277,0x23d8,0xf7df,0x8d7b,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0xdf3e,0xbe7d,0x0b98,0x3c19,0x3c19,0x0b98,0xbe7d,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0b98,0x0b98,0x0b98,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x855b,0x0358,0x23d8,0x23d8,0x23d8,0x0338,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x7d1a,0xb65c,0xdf3e,0x02f7,0x0398,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xa5fc,0x02b7,0x0b98,0x02f7,0xd6fd,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x1314,0x0318,0x6cda,0xffff,0xffff,0x64ba,0x9dbb,0xffff,0xf7bf,0x23b8,0x0358,0x0317,0x74fa,0xffdf,0x23d8,0x0358,0x0317,0x74fa,0xffdf,0x23d8,0x02d7,0xa5fc,0xffff,0xffff,0xffff,0x7d1a,0x0359,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x03b9,0x43d7,0x8494,0x8494,0x33d7,0x0379,0x43d7,0x7c74,0x13b8,0x6c55,0x5416,0x33d7,0x7c74,0x13b8,0x6c55,0x5c16,0x0398,0x0b98,0x0b98,0x0398,0x5c16,0x6c55,0x0398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0378,0x0378,0x0338,0x0358,0xdf1e,0xa5fc,0x4439,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x649a,0xb63c,0xdf3e,0xd6fd,0x8d7b,0x33f9,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0xa5fc,0x4c39,0x0358,0x0378,0x0378,0x0358,0x5c79,0x74fa,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x74fa,0x02d7,0x13b8,0x0b98,0x13b8,0x0277,0xbe7c,0xef9f,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xef9f,0xdf3e,0xe73e,0xe73e,0xe73e,0xe77e,0xb63c,0x4c39,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x74fa,0x2bd8,0xae1c,0xdf3e,0x0378,0x02b7,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0xa5fc,0xbe7c,0xbe9d,0x0338,0xdf3e,0x9dbb,0xcedd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0274,0xa5fc,0xd6fe,0x64ba,0x853b,0x0398,0xb65c,0xef9f,0x6cda,0xe75e,0x649a,0x8d7b,0xc6bd,0x74da,0xd71e,0x5c79,0x8d7b,0xcedd,0x855b,0xe75e,0x5c79,0xb63c,0xef9f,0x649a,0x853b,0x4419,0x0399,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x13b9,0x0398,0x0359,0x0359,0x0398,0x13b8,0x0398,0x0379,0x0b98,0x0379,0x0379,0x0398,0x0379,0x0b98,0x0379,0x0379,0x13b8,0x0b98,0x0b98,0x13b8,0x0379,0x0379,0x1398,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x13b8,0x0338,0x4c39,0xbe9d,0xbe9d,0x4c39,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x13b8,0x0217,0xae1c,0xffff,0xffff,0x0358,0x0338,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x74fa,0x0297,0x1bb8,0x0b98,0x0b98,0x1bb8,0x0338,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0398,0x2bd8,0xa5fc,0xc69d,0x74fa,0x02f7,0x0b98,0x02f7,0x9dbb,0xc69d,0x959b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7df,0xd6fd,0xb65c,0xbe7c,0xbe7c,0xbe7c,0xbe7d,0xb63c,0x855b,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853b,0x02b7,0x4c39,0xbe9d,0xbe9d,0x1bb8,0xae1c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cba,0x64ba,0xc69d,0xbe7c,0xbe9d,0x1bb8,0xae1c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x13b8,0x0378,0x0338,0x0338,0x0378,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x02b4,0x855b,0xc69d,0xa5fc,0x0317,0x02b7,0xb65c,0xffdf,0xae1c,0xbe7d,0x3bf9,0xb63c,0xffff,0xb63c,0xffff,0x6cda,0xb65c,0xe77e,0x0318,0xae1c,0x3bf9,0xae1c,0xffdf,0xa5db,0x0378,0x0378,0x13d9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0378,0x0358,0x4439,0xa5fc,0xdf1e,0x0358,0x0338,0x0378,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0358,0x649a,0xb63c,0xdf3e,0xd6fd,0x8d7b,0x33f9,0x0378,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x33f9,0xd6fd,0xa5fc,0x4c39,0x0358,0x0378,0x0378,0x0358,0x5c79,0x74fa,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02b7,0xc69d,0xc6bd,0x5c99,0x0378,0x74fa,0xdf3e,0x9dbb,0x0297,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x6cda,0x0237,0x02d7,0x02d7,0x02d7,0x01f6,0xbe7c,0xf7bf,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0358,0x0378,0xdf3e,0x9dbb,0xcedd,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853b,0x0277,0x649a,0xe75e,0x0378,0x02b7,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0x7d3a,0x7d3a,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x1314,0x02f8,0x5479,0xe75e,0x8d7b,0x0378,0xae1c,0xffff,0xdf1e,0x0378,0x02b7,0xb63c,0xffff,0xe75e,0xffff,0x64ba,0xb63c,0xe75e,0x0338,0x6cba,0x0378,0xae1c,0xffff,0xd6fe,0x2bd8,0x0378,0x13b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x3c19,0x0398,0xc6bd,0xef7e,0x0378,0x3c19,0x4419,0x4419,0x33f9,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x13b8,0x23d8,0xe75e,0xb63c,0x0277,0x23d8,0xf7df,0x8d7b,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x1398,0x0398,0x02f7,0xdf3e,0xbe7d,0x0b98,0x3c19,0x3c19,0x0b98,0xbe7d,0xe73e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x1398,0x02b7,0xb63c,0xe75e,0x4c39,0xffdf,0x74fa,0x02f7,0x13b8,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x8d7b,0x1bb8,0x3c19,0x3c19,0x3c19,0x13b8,0xbe5c,0xdf1e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x1398,0x0398,0x02f7,0xd6fd,0xffff,0xd71e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffff,0x853a,0x0338,0x0398,0x0358,0x0398,0x0317,0xbe7c,0xe75e,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x7d3a,0xffff,0xffff,0x7d3a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x02f4,0x2bf9,0x33f9,0x4439,0xffdf,0x6cba,0xae3c,0xe75e,0x02f7,0x0398,0x0317,0xbe7c,0xdf3e,0x0378,0xffff,0x6cda,0xa5fc,0xdf1e,0x4c39,0xffdf,0x6cba,0xae1c,0xe75e,0x0378,0x3c19,0x23b8,0x03b9,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6fd,0x0358,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x3c19,0xffdf,0x8d7b,0x0378,0x0398,0x1398,0x23d8,0xe75e,0xb65c,0x0317,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0398,0x0378,0xb63c,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0398,0x0378,0x8d7b,0xffdf,0x5c79,0x0398,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb63c,0x0378,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0398,0x0378,0xc6bd,0xef7e,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0378,0x4419,0xffff,0x855b,0x0338,0x0b98,0x0b98,0x0b98,0x02f7,0xbe7d,0xef7e,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0b14,0x0bb9,0x0b98,0x0b98,0x0b98,0x0b98,0x0338,0x7d3a,0xffff,0xffff,0x7d3a,0x0338,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bb9,0x0b14,0x0000,0x0000,0x0253,0xae3d,0xffff,0xf7bf,0x5c79,0x02f7,0xbe7d,0xef7e,0x0338,0x0b98,0x02f7,0xbe7d,0xe77e,0x23d8,0xffff,0x853b,0x0317,0x8d7b,0xffdf,0x5c79,0x02f7,0xb63c,0xffff,0xffff,0xffff,0x7d1a,0x0359,0x0b14,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x853b,0x7d3a,0x7d1a,0x853a,0x853a,0x853a,0x855b,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x853a,0x3c19,0x0378,0x1398,0x0b98,0x0358,0x74fa,0x6499,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x1398,0x0358,0x5479,0x8d5b,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x1398,0x0378,0x3c19,0x853a,0x0b98,0x0398,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x74fa,0x853a,0x853a,0x853a,0x853a,0x853a,0x8d5b,0x5479,0x0358,0x1398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x1398,0x0358,0x5479,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0398,0x23b8,0x7d1a,0x4419,0x0378,0x0b98,0x0b98,0x0b98,0x0378,0x5c79,0x6cda,0x0398,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0b35,0x0bda,0x0b98,0x0b98,0x0b98,0x0b98,0x0378,0x3c19,0x7d3a,0x7d3a,0x3c19,0x0378,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0b98,0x0bda,0x0b35,0x0000,0x0000,0x0315,0x5cbb,0x8d5b,0x7d1a,0x0b98,0x0358,0x5c79,0x6cda,0x0398,0x0b98,0x0378,0x5c79,0x6cda,0x13b8,0x7d1a,0x4419,0x0358,0x3c19,0x853a,0x0b98,0x0358,0x5479,0x853b,0x853a,0x855b,0x4419,0x03ba,0x0b35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0358,0x0359,0x0358,0x0358,0x0359,0x0359,0x0358,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x13d9,0x0379,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x13d9,0x0399,0x0358,0x0358,0x0359,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0359,0x03b9,0x13b9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0358,0x0359,0x0359,0x0359,0x0359,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x13da,0x03b9,0x0359,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0379,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x01ed,0x0b35,0x0bda,0x0bb9,0x0bb9,0x0bb9,0x13d9,0x0399,0x0358,0x0358,0x0399,0x13d9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bb9,0x0bda,0x0b35,0x01ed,0x0000,0x0000,0x11ed,0x02f5,0x0359,0x0359,0x03b9,0x13d9,0x0399,0x0379,0x13d9,0x0bb9,0x13d9,0x0399,0x0379,0x0bb9,0x0359,0x0399,0x1bd9,0x0399,0x0359,0x03b9,0x13d9,0x0399,0x0358,0x0359,0x0358,0x03ba,0x1336,0x01ed,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0021,0x0000,0x01ed,0x0b35,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b14,0x0b35,0x01ed,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; + diff --git a/MCUME_teensy/teensy81/logozx81kbd.h b/MCUME_teensy/teensy81/logozx81kbd.h new file mode 100644 index 0000000..e9b2deb --- /dev/null +++ b/MCUME_teensy/teensy81/logozx81kbd.h @@ -0,0 +1,174 @@ +const uint16_t PROGMEM logozx81kbd[] = { +0x0140,0x00ac,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020, +0x0000,0x9cf3,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x9cf3,0x0000, +0x0000,0xc638,0xc618,0x8c71,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x8c71,0xc618,0xc638,0x0000, +0x0000,0xc638,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x3186,0x94b2,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x94b2,0x94b2,0x94f3,0x94d3,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x9492,0x94b2,0x94f3,0x94d3,0x94d3,0x9cd3,0x4a49,0x0000,0x0861,0x0000,0x0000,0x738e,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x8430,0x0000,0x0000,0x0861,0x0000,0x2104,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x94b2,0x94b2,0x94d3,0x9492,0x94d3,0x94b2,0x94b2,0x94f3,0x94d3,0x94f3,0x9492,0x94b2,0x94f3,0x94d3,0x9492,0x9cd3,0x52aa,0x0000,0x0841,0x0020,0x0000,0x6b4d,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94b2,0x9492,0x8c51,0x0000,0x0000,0x0861,0x0000,0x0841,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x630c,0x0000,0x0841,0x0841,0x0000,0x630c,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94f3,0x94d3,0x94d3,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x8c71,0x0020,0x0000,0x0861,0x0000,0x0000,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x6b4d,0x0000,0x0020,0x0841,0x0000,0x52aa,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x2104,0x0000,0x0861,0x0000,0x0000,0x8430,0x9492,0x94b2,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x94d3,0x9492,0x94f3,0x73cf,0x0000,0x0000,0x0861,0x0000,0x4a49,0x9cd3,0x94d3,0x94f3,0x94b2,0x9492,0x94b2,0x94d3,0x9492,0x94d3,0x94b2,0x9492,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x9492,0x94d3,0x9492,0x9492,0x94b2,0x94d3,0x9492,0x94f3,0x31c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xe73c,0xe71c,0xe71c,0xe73c,0xe6db,0xe5f7,0xe5f7,0xe5d7,0xe6ba,0xe6db,0xe5f7,0xe5f7,0xe71c,0xe75c,0xe69a,0xe5d7,0xe618,0xe5d7,0xe6fb,0xe69a,0xe5d7,0xe618,0xe5f7,0xef1c,0xa534,0x39e7,0x0000,0x0861,0x52aa,0xc638,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe75d,0xe659,0xe659,0xe75d,0xe71c,0xe638,0xe5d7,0xe69a,0xe75d,0xe71c,0xe618,0xe5d7,0xe69a,0xe75d,0xd6ba,0x6b6d,0x2124,0x0000,0x3186,0x8c51,0xe73c,0xe71c,0xe71c,0xe73c,0xe6db,0xe5d7,0xe618,0xe5d7,0xe6ba,0xe6db,0xe618,0xe71c,0xe638,0xe6ba,0xe6db,0xe5f7,0xe5f7,0xe5d7,0xe6db,0xe6ba,0xe5d7,0xe618,0xe71c,0xef7d,0xad75,0x4208,0x0000,0x0000,0x4a69,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe638,0xe5f7,0xe5f7,0xe638,0xe71c,0xe75d,0xe639,0xe679,0xe75d,0xdefb,0x73ae,0x2945,0x0000,0x2965,0x8410,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe5f7,0xe5d7,0xe6ba,0xe75d,0xe73c,0xe73c,0xe73c,0xef5d,0xb5b6,0x4228,0x0000,0x0000,0x4228,0xb5b6,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe659,0xe5f7,0xe5f7,0xe5f7,0xe5f7,0xe5f7,0xe6ba,0xe73c,0xe73c,0xe71c,0x8410,0x2965,0x0000,0x2945,0x73ae,0xdefb,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe638,0xe69a,0xe75d,0xe73c,0xe71c,0xe71c,0xef5d,0xbdf7,0x4a69,0x0000,0x0000,0x4208,0xad75,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe75d,0xe69a,0xe5d7,0xe618,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0x8c51,0x3186,0x0000,0x2124,0x6b6d,0xd6ba,0xe75d,0xe69a,0xe618,0xe73c,0xe73c,0xe659,0xe5d7,0xe659,0xe75d,0xe71c,0xe75d,0xe659,0xe659,0xe75d,0xe71c,0xe638,0xe5d7,0xe69a,0xe75d,0xe71c,0xe618,0xe6fb,0xeebb,0xc534,0x52cb,0x0861,0x0000,0x39e7,0xa534,0xef3c,0xe5f8,0xe5d7,0xe6db,0xe75d,0xe6db,0xe618,0xe71c,0xe638,0xe69a,0xe6db,0xe5f7,0xe5f7,0xe6fb,0xe73c,0xe73c,0xe6fb,0xe5f7,0xe71c,0xe73c,0xe69a,0xe638,0xe71c,0xe638,0x9430,0x31c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd000,0xd084,0xd000,0xdd96,0xd555,0xd000,0xd105,0xddf7,0xdf1c,0xd4f3,0xd000,0xd000,0xd000,0xde38,0xd4d3,0xd000,0xd000,0xd002,0xd618,0xe75d,0xad55,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd36e,0xd36e,0xdedb,0xdeba,0xd146,0xd000,0xd431,0xdefb,0xde9a,0xd002,0xd000,0xd492,0xdedb,0xdedb,0xe71c,0x52aa,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd000,0xd000,0xd000,0xd534,0xdd96,0xd002,0xdedb,0xd146,0xd534,0xd575,0xd000,0xd0a4,0xd000,0xddf7,0xd4f3,0xd000,0xd1a7,0xde38,0xdedb,0xe73c,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2cb,0xd000,0xd000,0xd2cb,0xdedb,0xdeba,0xd2ec,0xd3cf,0xdedb,0xdedb,0xe73c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xde9a,0xddf7,0xd0e5,0xd000,0xd4f3,0xdeba,0xde79,0xde79,0xde79,0xdeba,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ab,0xd000,0xd0c4,0xd084,0xd084,0xd000,0xd4f4,0xdf1c,0xdedb,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xde9a,0xd26a,0xd451,0xdeba,0xde79,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xde79,0xde79,0xdeba,0xd492,0xd000,0xd187,0xde38,0xde79,0xde9a,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x52aa,0xe71c,0xdedb,0xdedb,0xd451,0xd2ab,0xdefb,0xdefb,0xd2ab,0xd000,0xd36e,0xdeba,0xdedb,0xdedb,0xd36e,0xd36e,0xdedb,0xdeba,0xd146,0xd000,0xd431,0xdefb,0xde9a,0xd000,0xddf8,0xd410,0xdaec,0xd6db,0x18c3,0x0000,0xad55,0xe77d,0xd5f7,0xd000,0xd000,0xd534,0xdf1c,0xddb6,0xd000,0xdeba,0xd209,0xd4b2,0xddd7,0xd000,0xd002,0xddb7,0xdedb,0xdedb,0xddb6,0xd0a4,0xddf7,0xdf1c,0xd451,0xd209,0xdeba,0xd000,0xe638,0x94f3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd105,0xdeba,0xdeba,0xdefb,0xd4f3,0xd1c7,0xde9a,0xd1a7,0xdd75,0xdf3c,0xdd76,0xd003,0xde59,0xdedb,0xdefb,0xd534,0xd105,0xde7a,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd229,0xd555,0xd555,0xd249,0xdedb,0xd125,0xdd76,0xd4d3,0xd2ec,0xdeba,0xd043,0xddd7,0xd451,0xd32d,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xd003,0xdd76,0xdf3c,0xd555,0xd126,0xdefb,0xd1e8,0xd555,0xd555,0xd1a7,0xdedb,0xde9a,0xdf1c,0xd472,0xd26a,0xde9a,0xd146,0xddb7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd34d,0xd34d,0xdefb,0xdeba,0xd1c7,0xdd96,0xd4d3,0xd2ab,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xd472,0xd000,0xd1e8,0xde9a,0xdefb,0xd3ef,0xd000,0xd002,0xd002,0xd000,0xd596,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xd229,0xd430,0xdefb,0xde9a,0xdeba,0xd105,0xd4f3,0xdf3c,0xdefb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xddf7,0xd000,0xd000,0xddf7,0xd492,0xd000,0xd209,0xdedb,0xdefb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd535,0xd000,0xd002,0xd002,0xd000,0xd451,0xdefb,0xde59,0xd166,0xd000,0xd4f3,0xdf3c,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd32d,0xd3f0,0xdefb,0xdefb,0xdefb,0xd249,0xd4d3,0xddb6,0xd146,0xdedb,0xd249,0xd555,0xd555,0xd249,0xdedb,0xd125,0xddb6,0xd4d3,0xd28b,0xdeba,0xd003,0xde38,0xd471,0xdb2c,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd001,0xde79,0xd32d,0xd451,0xde18,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd125,0xdeba,0xd1e8,0xd555,0xd575,0xd229,0xde9a,0xd1a7,0xddd7,0xd4d3,0xd28a,0xdeba,0xd023,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd575,0xd000,0xd209,0xde38,0xdf3c,0xd4f3,0xd1e8,0xdedb,0xd0e5,0xd555,0xdf5d,0xddb7,0xd003,0xde9a,0xdefb,0xdf1c,0xd555,0xd105,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd249,0xd105,0xd105,0xd26a,0xdedb,0xd125,0xddb7,0xd4d3,0xd26a,0xdeba,0xd023,0xde18,0xd451,0xd2cb,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd003,0xddb7,0xdf5d,0xd575,0xd000,0xd209,0xd000,0xdd75,0xdd75,0xd000,0xd26a,0xde79,0xdf3c,0xd472,0xd28a,0xdedb,0xd001,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd38e,0xd38e,0xdf3c,0xdeba,0xd0a4,0xddb6,0xd4d3,0xd229,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd2ab,0xd125,0xd4b2,0xde79,0xde39,0xdedb,0xdefb,0xde79,0xde18,0xde38,0xde18,0xd003,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd1a7,0xd1a7,0xd555,0xdefb,0xdf3c,0xdedb,0xdf3c,0xdeba,0xd410,0xd0c4,0xd34d,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd410,0xd0c4,0xd36e,0xde59,0xddd7,0xdeba,0xde59,0xddf7,0xddd7,0xd229,0xd125,0xd555,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4f3,0xd125,0xde38,0xde38,0xde18,0xde79,0xdefb,0xdedb,0xde38,0xde79,0xd471,0xd0e5,0xd2ec,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd2cb,0xd431,0xde59,0xd2ec,0xdebb,0xd30c,0xd000,0xd3ef,0xde79,0xdedb,0xd249,0xd105,0xd105,0xd26a,0xdedb,0xd1e8,0xd043,0xd431,0xde59,0xde9a,0xd125,0xd187,0xd001,0xdbae,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd166,0xd534,0xdedb,0xddb7,0xd023,0xdeba,0xd28a,0xd4d3,0xddd7,0xd000,0xd209,0xd596,0xdefb,0xd4f3,0xd1a7,0xdedb,0xd0e5,0xddb6,0xd4d3,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd001,0xd4f3,0xdedb,0xdf5c,0xd4d3,0xd208,0xdf1c,0xd001,0xd534,0xdf7d,0xddf7,0xd023,0xdedb,0xdefb,0xdf1c,0xd555,0xd105,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd229,0xd36e,0xd36e,0xd249,0xdedb,0xd125,0xddb6,0xd4d3,0xd28a,0xdeba,0xd003,0xde59,0xd451,0xd26a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd003,0xddb6,0xdf3c,0xd575,0xd000,0xd4b2,0xd023,0xd575,0xd555,0xd023,0xd514,0xdedb,0xdf3c,0xd471,0xd28a,0xdeba,0xd043,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd36e,0xd36e,0xdf3c,0xdeba,0xd000,0xddd7,0xd4d3,0xd1a7,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd4d3,0xd4b2,0xd451,0xd3ef,0xd492,0xdefb,0xdf5d,0xd575,0xd3cf,0xd410,0xd410,0xd000,0xd555,0xdf5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd492,0xd4b2,0xd431,0xd38e,0xd514,0xdefb,0xd3cf,0xd3ef,0xd472,0xd492,0xd514,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd575,0xd472,0xd492,0xd4b3,0xdf1c,0xdf3c,0xdf5d,0xde79,0xd451,0xd4b2,0xd472,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4f3,0xd000,0xd410,0xd410,0xd3af,0xdd96,0xdf5d,0xdefb,0xd451,0xd3f0,0xd471,0xd492,0xd4f3,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd26a,0xd451,0xde38,0xd000,0xdeba,0xd2ec,0xd2cb,0xd4b3,0xd4d3,0xdedb,0xd229,0xd36e,0xd36e,0xd249,0xdedb,0xd1a7,0xd32d,0xddf7,0xdf3c,0xde7a,0xd0c4,0xd410,0xd2ab,0xdb6e,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd451,0xd471,0xddf7,0xddd7,0xd063,0xdefb,0xd2ab,0xd4d3,0xddb7,0xd001,0xd4f4,0xd410,0xde38,0xd4f3,0xd146,0xdf1c,0xd001,0xdd96,0xd4d3,0xd2ab,0xdefb,0xd063,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd000,0xd575,0xd514,0xde79,0xd514,0xd000,0xd534,0xd3ae,0xde18,0xde79,0xd410,0xd000,0xd4d3,0xde79,0xdf3c,0xd535,0xd003,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd125,0xd575,0xdd75,0xd166,0xdedb,0xd063,0xddb6,0xd4b3,0xd249,0xdeba,0xd001,0xd451,0xd451,0xd4b3,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd000,0xdd96,0xdf5d,0xd535,0xd0a4,0xdf1c,0xd1a7,0xd534,0xd555,0xd002,0xdd96,0xd514,0xdeba,0xd472,0xd249,0xdeba,0xd000,0xdd96,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd34d,0xd34d,0xdf1c,0xdeba,0xd410,0xd4b3,0xd471,0xd492,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf5d,0xd555,0xd28a,0xd36e,0xd514,0xd555,0xd410,0xd2ec,0xd32d,0xd32d,0xd34d,0xddf7,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf3c,0xd471,0xd2ab,0xd3f0,0xd514,0xd32d,0xd2ab,0xddd7,0xdf5d,0xdf1c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf5d,0xddd7,0xd000,0xd4d3,0xd534,0xd555,0xd3ae,0xd000,0xdefb,0xdf3c,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd34d,0xd32d,0xd32d,0xd2ec,0xd430,0xd555,0xd514,0xd34d,0xd28a,0xdd96,0xdf5d,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdefb,0xd4b3,0xd431,0xd4d3,0xd3ef,0xdedb,0xd209,0xd514,0xddd7,0xd000,0xdedb,0xd166,0xdd76,0xdd75,0xd166,0xdedb,0xd003,0xdd96,0xdf3c,0xdedb,0xde79,0xd000,0xde59,0xd471,0xdaec,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xddf7,0xd000,0xdedb,0xd2ab,0xd3cf,0xde18,0xd000,0xd514,0xd0e5,0xd4d3,0xddb6,0xd000,0xdd76,0xd34d,0xddb7,0xddf7,0xd3af,0xd514,0xd3ae,0xde59,0xd4b3,0xd0e5,0xd514,0xd000,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xd5b6,0xd166,0xd166,0xd001,0xdd96,0xddb7,0xd105,0xd1a7,0xde9a,0xdf5d,0xdcf3,0xd063,0xd249,0xd0e5,0xddf7,0xdf3c,0xdd96,0xd2ab,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ec,0xd596,0xdd96,0xd30c,0xdedb,0xd2cb,0xddf7,0xdd34,0xdb8e,0xdeba,0xd2cb,0xd000,0xdd34,0xdf5d,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd26a,0xddd7,0xdf3c,0xd596,0xd2ab,0xdedb,0xd30c,0xdd96,0xddd7,0xd166,0xd186,0xd023,0xddf7,0xdd35,0xd38e,0xdeba,0xd26a,0xddd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdc30,0xdc30,0xdf1c,0xdedb,0xdf5d,0xd38e,0xdc72,0xdf5d,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdeba,0xd1c7,0xd000,0xdd96,0xdf7d,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf5d,0xddb6,0xd209,0xdf1c,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd1c8,0xd187,0xd166,0xd166,0xd166,0xd32d,0xdeba,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdf7d,0xdd34,0xd000,0xd249,0xdedb,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdf5d,0xd4f3,0xd2ec,0xdf3c,0xdefb,0xd34d,0xd534,0xddd7,0xd2ab,0xdedb,0xd30c,0xdd96,0xdd96,0xd30c,0xdedb,0xd2ab,0xdd96,0xdefb,0xdedb,0xde9a,0xd26a,0xde38,0xd4b3,0xdbef,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd229,0xde9a,0xd3ef,0xd4b3,0xde38,0xd1a7,0xd166,0xd125,0xd575,0xddf8,0xd166,0xd125,0xde59,0xdf1c,0xdf1c,0xde59,0xd166,0xde9a,0xdf5c,0xd514,0xd125,0xd166,0xd1c7,0xe659,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x8430,0x39c7,0x4a69,0x4a69,0x4a69,0x39c7,0x3186,0x31a6,0x31c7,0x4228,0xc638,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0x4228,0x31c7,0x31a6,0x31a6,0x39e7,0x4a69,0x4a69,0x4a69,0x39c7,0x8430,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0xbdf7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x528a,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x7bef,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x9cd3,0x31a6,0x4a69,0x4a69,0x4a8a,0x39e7,0x3186,0x3186,0x31a6,0x31a6,0xb5b6,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x5aeb,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x738e,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0xa534,0x31a6,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x31a6,0xad75,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x632c,0x3186,0x3186,0x31a6,0x31c7,0x4a49,0x4a69,0x4a69,0x4228,0x632c,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xe73c,0xc618,0x5aeb,0x73ae,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x8c51,0xad55,0xad55,0x94b2,0x0000,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xdefb,0x73ae,0x632c,0x6b4d,0x630c,0x7bef,0xe71c,0xdefb,0xdedb,0xdefb,0xbdf7,0x0000,0x94b2,0xad55,0xad55,0x8c51,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xe73c,0xb596,0x5acb,0x6b4d,0x6b4d,0x5acb,0xb596,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x4228,0xad75,0xa534,0xa534,0xa534,0xa534,0xa534,0x9cf3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xb596,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x9492,0xad55,0xa534,0xa534,0xa534,0xa534,0xad75,0x632c,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xa534,0x6b4d,0x632c,0x6b4d,0x6b4d,0x6b4d,0x5aeb,0x8c51,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xad75,0xa534,0xa514,0x0000,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe73c,0x8430,0x630c,0x6b4d,0x632c,0x6b6d,0xce79,0xdedb,0xdedb,0xdedb,0xce79,0x0000,0x8430,0xad55,0xa534,0xa534,0xa534,0xa534,0xad75,0x738e,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0xa534,0x5acb,0x6b4d,0x6b4d,0x6b4d,0x632c,0x6b4d,0x8c71,0xdedb,0xdedb,0xe71c,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xe73c,0x8c71,0x5aeb,0x6b4d,0x632c,0x632c,0xd69a,0xe71c,0xdedb,0xdedb,0xd6ba,0x2124,0x7bef,0xad55,0xa534,0x9cf3,0x0861,0x0000,0x0000,0x0000,0x39c7,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x5aeb,0x6b4d,0x6b4d,0x5acb,0x9cd3,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xe73c,0x9cd3,0x5aeb,0x6b4d,0x6b4d,0x738e,0xce79,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdefb,0xbdd7,0x8c51,0x6b6d,0x0000,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0xe73c,0xd69a,0x0841,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xce59,0x9492,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x9cf3,0xce79,0xdedb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xef5d,0xc618,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xad75,0x8430,0x7bcf,0x7bcf,0x8410,0x8410,0x8c51,0xad75,0xdefb,0xdedb,0xe71c,0x738e,0x73ae,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xb5b6,0x4a49,0x4a49,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0xc638,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0x94b2,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x2104,0x8c51,0x8430,0x8430,0x8430,0x7bcf,0x94b2,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0xa514,0x8c51,0x8410,0x8430,0x8410,0x8430,0xd69a,0xdedb,0xdedb,0xdedb,0xd69a,0x10a2,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xad55,0x738e,0x7bcf,0x7bcf,0x7bcf,0x8c51,0x4a69,0x2104,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd6ba,0x9cf3,0x8430,0x8410,0x8430,0x8430,0x8410,0x8c71,0xc618,0xdefb,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe73c,0xdedb,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdefb,0xc618,0x9492,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8430,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0xad55,0x8430,0x73ae,0x7bef,0x7bef,0x0000,0x7bcf,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe71c,0x8c71,0x8410,0xdedb,0x0841,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdd7,0x4a69,0xdefb,0xe73c,0xe73c,0xef5d,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x73ae,0x94b2,0xef7d,0xe71c,0xc638,0xce79,0x8430,0x7bef,0xdefb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xc638,0x73ae,0x0000,0x630c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x630c,0xce79,0xc638,0xc638,0xc618,0xd6ba,0xe73c,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xad75,0xce59,0xc638,0xc638,0xc638,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xbdd7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xd6ba,0xdefb,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x9cd3,0x738e,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x52aa,0xad55,0xce59,0xc638,0xc638,0xc638,0x5aeb,0xad55,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8430,0x39e7,0xef5d,0xe73c,0xe73c,0xef7d,0xb596,0x0000,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x0000,0xad75,0xef7d,0xdefb,0xbdf7,0x6b4d,0x0000,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x2945,0x2945,0x0841,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdefb,0xd69a,0xd69a,0xd69a,0xd6ba,0xc618,0x2945,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdefb,0xbdd7,0x0841,0x2945,0x2945,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xd69a,0x31a6,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xd69a,0x2965,0xbdd7,0x9cf3,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0841,0xbdd7,0xdedb,0xd69a,0xd6ba,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8430,0x0000,0x0861,0x1082,0x1082,0x0000,0x8c51,0xdefb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x1082,0x1082,0x0000,0x2104,0xc618,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xb596,0xdedb,0xd69a,0xd69a,0xd69a,0xd69a,0xdedb,0x9cd3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x6b6d,0x73ae,0xe73c,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x1082,0x0861,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x94b2,0x52aa,0xdedb,0xd69a,0xd69a,0xdedb,0xa534,0x2965,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xb596,0x2104,0xdedb,0x52aa,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x630c,0x7bcf,0xd6ba,0xce79,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x39e7,0x0861,0x18e3,0x0020,0x4a49,0xce59,0xdedb,0xdedb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xd6ba,0xce79,0xce79,0xd6ba,0x7bcf,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xce79,0xd6ba,0x8410,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x7bef,0x18e3,0x39c7,0x31a6,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x39c7,0xc638,0xef5d,0x94b2,0x528a,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x2965,0x39c7,0x2124,0x632c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xce79,0xce79,0xce79,0xd6ba,0x8c71,0x630c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0841,0xb5b6,0xd69a,0xce79,0xce79,0xce59,0x4228,0xad75,0xe71c,0xdedb,0xd69a,0x2965,0x2124,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x0861,0x528a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x4a49,0x94b2,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x4a49,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x39c7,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x4208,0xb575,0xd69a,0xce79,0xce79,0xce79,0x528a,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xad75,0x0000,0x18e3,0x18e3,0x2104,0x0000,0x4208,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xbdf7,0xa514,0x4a69,0xd6ba,0xdefb,0x528a,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe73c,0xd69a,0x0841,0xce59,0xef5d,0xdefb,0xdedb,0xdedb,0xe71c,0x630c,0x8410,0xe73c,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc618,0x6b4d,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xe73c,0xdedb,0xdedb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xe73c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x7bef,0x9cd3,0xef5d,0xe71c,0xe73c,0xf79e,0x7bef,0x4a49,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x6b6d,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0x528a,0x5aeb,0x39c7,0x18e3,0x52aa,0x4a49,0xbdf7,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8c51,0x9492,0xef7d,0xe73c,0xe73c,0xf79e,0x9492,0x2965,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xce59,0xef7d,0xe73c,0xe73c,0xe71c,0x0000,0xa534,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x6b4d,0xa514,0xce79,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x528a,0xe71c,0xdefb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0x39e7,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xbdf7,0xef7d,0xe73c,0xe73c,0xef5d,0x18c3,0x94b2,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xd6ba,0xbdf7,0xbdf7,0xbdf7,0xc638,0x8c71,0x0000,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x18c3,0x31a6,0x94b2,0xce79,0xe73c,0xef5d,0x4208,0x8430,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdefb,0xb596,0x8410,0x7bcf,0x0000,0x73ae,0x8410,0xad55,0xdefb,0xdedb,0xe71c,0x5aeb,0x8430,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0x0841,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0x8c51,0x9492,0x9492,0x9492,0x8c71,0x8430,0xce59,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xa534,0x8410,0x8430,0x8430,0x8430,0x8430,0x8c51,0xad75,0xdefb,0xdedb,0xe71c,0x738e,0x73ae,0xef5d,0xe71c,0xef5d,0x73ae,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x94b2,0x8c71,0x9492,0x52aa,0x18c3,0x8c71,0x8430,0xce59,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xe71c,0xe71c,0xef5d,0x94b2,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xad75,0x8410,0x8430,0x8430,0x8430,0x8430,0x8c51,0xad55,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0x94b2,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c71,0xc638,0xdefb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0x0000,0xc638,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x528a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0x4208,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd6ba,0x9cf3,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c71,0xc618,0xdefb,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe71c,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x8c71,0x9492,0x9492,0x9492,0x8c71,0x9cf3,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0xa534,0x1082,0x4208,0x94b2,0x8430,0x8430,0x8c51,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xe71c,0x9cf3,0x4a49,0x5aeb,0x6b6d,0x5aeb,0x4a49,0x94b2,0xe71c,0xdedb,0xe71c,0x630c,0x5aeb,0xb5b6,0xad75,0xad75,0xad75,0xad75,0xb596,0xa514,0x0000,0xbdf7,0xef5d,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdefb,0xc618,0x632c,0x5aeb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0xc638,0xdefb,0xdefb,0xbdf7,0x0000,0xa514,0xb596,0xad75,0xad75,0xad75,0xad75,0xb5b6,0x5aeb,0x630c,0xe71c,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdedb,0xef5d,0xb596,0x4a49,0x5aeb,0x5aeb,0x4a49,0xb596,0xef5d,0xdedb,0xdedb,0xe71c,0x738e,0x4a69,0xb5b6,0xad75,0xb5b6,0x52aa,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xb596,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xef5d,0xad75,0x8430,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x39e7,0xad75,0xad75,0xb5b6,0x6b6d,0x528a,0xdefb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xe73c,0xbdd7,0x4a49,0x5aeb,0x5aeb,0x4a49,0xa534,0xef5d,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x8410,0xb5b6,0xad75,0xad55,0x0000,0xad55,0xef5d,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xe73c,0x7bef,0x528a,0x5aeb,0x5acb,0x630c,0xd6ba,0xdefb,0xdedb,0xdedb,0xd69a,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x6b6d,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x2965,0xb596,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0x10a2,0x9cf3,0xef5d,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xe73c,0x8430,0x4a69,0x5aeb,0x5acb,0x5acb,0xd69a,0xe71c,0xdedb,0xdedb,0xd6ba,0x2945,0x8430,0xb5b6,0xb596,0xa534,0x10a2,0x0000,0x0000,0x0000,0x39c7,0xd6ba,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x528a,0x5acb,0x5aeb,0x4a69,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x18c3,0x0000,0xa534,0xe73c,0xdedb,0xdedb,0xe73c,0x9cf3,0x5acb,0x5acb,0x5acb,0x528a,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x18c3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c7,0xc638,0xdefb,0x9cd3,0x0000,0x18c3,0xbdf7,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdefb,0xc638,0x39c7,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x8410,0xdefb,0xce79,0x4a69,0x0000,0x73ae,0xd6ba,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x18c3,0x2124,0x2945,0x2124,0x39c7,0x4208,0x4208,0x4208,0x3186,0xbdf7,0xdefb,0xa514,0x0000,0x0000,0xb5b6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x4228,0x39e7,0x4208,0x4208,0x39e7,0x2945,0x2945,0x2124,0x18e3,0x73ae,0xdefb,0xd69a,0x5aeb,0x0000,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x94b2,0x2104,0x4208,0x4208,0x4208,0x3186,0x2124,0x2945,0x2945,0x2124,0xb5b6,0xe71c,0xad75,0x0000,0x0000,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x528a,0x39c7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3186,0x6b4d,0xdedb,0xd6ba,0x6b4d,0x0000,0x5aeb,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x18c3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x18e3,0xad75,0xe71c,0xb5b6,0x0000,0x0000,0xa514,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x5aeb,0x2124,0x2124,0x2945,0x2945,0x39e7,0x4208,0x4208,0x31a6,0x5aeb,0xd6ba,0xdedb,0x73ae,0x0000,0x4a69,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xbdf7,0x18c3,0x0000,0x9cd3,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x8430,0x0000,0x0000,0x0000,0x0000,0xb596,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xdefb,0xce79,0x2945,0x0000,0x0000,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0xad55,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x39e7,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x4a69,0x0000,0x0000,0x0000,0x39e7,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x5aeb,0x0000,0x0000,0x0000,0x2945,0xce79,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0x8430,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x3186,0x0000,0x0020,0x0000,0x0000,0x4228,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x528a,0x0000,0x0000,0x0020,0x0000,0x18c3,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x31a6,0x0000,0x0000,0x0000,0x0000,0x4208,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x52aa,0x0000,0x0000,0x0020,0x0000,0x1082,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x39c7,0x0000,0x0000,0x0000,0x0000,0x39e7,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x52aa,0x1082,0x0000,0x0020,0x0000,0x0000,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x4208,0x0000,0x0000,0x0000,0x0000,0x31a6,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x18c3,0x0000,0x0020,0x0000,0x0000,0x528a,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x4228,0x0000,0x0000,0x0020,0x0000,0x3186,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xa534,0x9cf3,0x0000,0x0000,0x73ae,0x8430,0x0000,0x0000,0x0861,0x0000,0x5aeb,0x9cd3,0x0000,0x0000,0x8430,0xa534,0x9cf3,0x9cf3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x1082,0x9492,0xad75,0x630c,0x0000,0x3186,0x9cd3,0xad75,0x52aa,0x0000,0x4208,0x9cd3,0x3186,0x0000,0x0000,0x39e7,0xa514,0x0000,0x0000,0x73ae,0xad55,0x9cd3,0xa534,0x4208,0x0000,0x5acb,0xa534,0xa514,0x1082,0x0000,0x632c,0xa534,0xa534,0xad55,0x39e7,0x632c,0xa514,0x9cd3,0x9cf3,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xad75,0x7bcf,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x1082,0x9492,0xad75,0x630c,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0xa514,0xa534,0x2945,0x0000,0x0000,0x2965,0xa534,0x10a2,0x0000,0x632c,0xa534,0x9cf3,0x0000,0x0000,0x6b6d,0xad55,0x9cd3,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xad55,0x8410,0x0000,0x0000,0x8c51,0xad55,0x7bcf,0x2965,0xa534,0x9cd3,0xa514,0xa534,0x8410,0x1082,0x9cd3,0x39e7,0x632c,0xad55,0x9cd3,0x0000,0x0000,0x73ae,0xad55,0x9492,0x0000,0x0000,0x0020,0x0000,0x4a69,0xad55,0x9cd3,0xad55,0x632c,0x4208,0xa514,0xa534,0xad75,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xa534,0x9cf3,0x9cf3,0x10a2,0x8410,0xad55,0x8410,0x0000,0x0000,0x8c51,0xad75,0x7bcf,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x10a2,0x9cf3,0x9cf3,0xa534,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9cf3,0xad55,0x4a49,0x0000,0x0000,0x0000,0xa514,0x39e7,0x0000,0x52aa,0x94b2,0x0020,0x9492,0x52aa,0x528a,0xa514,0xa534,0xad55,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xad55,0x9492,0x0000,0x0000,0x7bef,0xad55,0x8c51,0x0000,0x0000,0x8c71,0xa514,0x9cf3,0x9cd3,0x0841,0x8430,0xad75,0x7bcf,0x0000,0x10a2,0x9cd3,0x9cf3,0xa514,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xe73c,0xad75,0x8410,0x0000,0xad55,0xc618,0x0000,0x0000,0x0000,0x4a69,0x9cd3,0xb5b6,0x738e,0x0000,0x9492,0xd6ba,0xdefb,0xb596,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdedb,0xce79,0x9cd3,0x4a49,0x4208,0xe71c,0xc638,0x94b2,0x4a49,0x52aa,0xe71c,0x4a49,0x0000,0x4228,0x8c71,0xbdd7,0x7bef,0x0861,0x7bef,0xd69a,0xe71c,0xbdf7,0x4228,0x0000,0x8c51,0xe73c,0xb596,0x8430,0x1082,0x9492,0xe71c,0xb596,0xbdf7,0x39c7,0x9cd3,0xef7d,0xe71c,0xe73c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0xd69a,0x9cf3,0x632c,0x10a2,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdedb,0xce79,0x9cd3,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xe73c,0xb5b6,0x8c51,0x39c7,0x31a6,0x8430,0xb5b6,0x8410,0x0000,0x9492,0xe73c,0xb5b6,0x7bef,0x0000,0xa514,0xe71c,0xad75,0x73ae,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xd6ba,0xa514,0x6b4d,0x0000,0xce79,0xd6ba,0x7bef,0x31a6,0xbdf7,0xe71c,0xc638,0xd69a,0xc618,0x18c3,0xdefb,0x5acb,0x9cd3,0xe71c,0xad55,0x7bef,0x0000,0xad75,0xe71c,0xad55,0x738e,0x2104,0x0000,0x0000,0x52aa,0xc618,0xe71c,0xce79,0x632c,0x6b6d,0xe73c,0xb5b6,0xc618,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xd6ba,0xdefb,0xb596,0x0000,0xc618,0xdedb,0xa534,0x630c,0x0000,0xce79,0xd69a,0x9cf3,0x632c,0x10a2,0xdedb,0x6b6d,0x9492,0xce59,0x0000,0xb596,0xdefb,0xd6ba,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe73c,0xbdf7,0x9492,0x4a49,0x2124,0x7bef,0xbdd7,0x8c71,0x2945,0x7bcf,0xdedb,0x0000,0xd6ba,0x8410,0x7bcf,0xe73c,0xb5b6,0xc618,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdefb,0xad55,0x73ae,0x0000,0xbdd7,0xdedb,0xa534,0x738e,0x0000,0x9cd3,0xdedb,0xdefb,0xad55,0x0000,0xce79,0xd6ba,0xa514,0x5aeb,0x1082,0xad55,0xdefb,0xdedb,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x31a6,0xce79,0x528a,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0xb5b6,0xad55,0x2965,0xe71c,0x4a49,0x0000,0x9492,0xc618,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x4208,0x9cf3,0xbdf7,0x2945,0xdedb,0x528a,0xad55,0xa514,0x4208,0xdedb,0x4228,0x0000,0x9cf3,0xc638,0x0000,0xdefb,0x6b6d,0x0000,0x6b6d,0xd69a,0x0000,0x0000,0x0000,0x8c51,0xce79,0x3186,0xce59,0x630c,0x8c51,0xc638,0x1082,0x0000,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x8410,0x7bef,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x4208,0x9cf3,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x3186,0xc638,0x738e,0x8410,0xd69a,0x3186,0xdedb,0x6b6d,0x8c51,0xbdf7,0x0000,0xdefb,0x5acb,0x9cd3,0xb596,0x0841,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9492,0x6b6d,0xce59,0x0000,0xce59,0x9492,0x0000,0x0000,0x0000,0xd69a,0x5aeb,0x8430,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x4208,0xd69a,0x39e7,0xad55,0xa534,0x3186,0xe71c,0x4a49,0x0000,0x0841,0x0000,0x0020,0xd6ba,0x5aeb,0x0000,0x7bcf,0xd69a,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9492,0xc618,0x0000,0x0000,0xc638,0x8410,0x630c,0xdedb,0x0841,0xce59,0x8410,0x7bef,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc618,0x9492,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x4228,0xb596,0x94b2,0x5acb,0xdefb,0x0000,0xc638,0x9492,0x632c,0xd69a,0x4a49,0xbdf7,0x6b6d,0x7bef,0xce79,0x2124,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xad75,0x4a69,0xd69a,0x2945,0xb5b6,0xa514,0x5aeb,0xce79,0x3186,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0xce79,0x6b6d,0x73ae,0xd6ba,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xd69a,0x31a6,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x94b2,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2945,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0x4228,0x0000,0x94b2,0xc618,0x18c3,0xd6ba,0x6b4d,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8410,0xe71c,0xd6ba,0x4228,0x0000,0x8c71,0xe73c,0xd69a,0x3186,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9492,0xe73c,0xce59,0x18c3,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0000,0x0000,0x3186,0xd6ba,0x6b4d,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x73ae,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xd6ba,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xce59,0x4228,0x0000,0x0000,0xa534,0xb5b6,0x0000,0x0000,0x0000,0xbdd7,0xad75,0x2945,0xe71c,0x4a49,0x0000,0x94b2,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x5acb,0x8410,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x7bcf,0x18e3,0x0000,0x5acb,0xdedb,0x2945,0x0000,0x9cf3,0xc638,0x0000,0xdefb,0x6b6d,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8430,0xce79,0x52aa,0xbdf7,0x52aa,0x8c71,0xce59,0x2945,0x0000,0x0000,0xa514,0xbdf7,0x5aeb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x9492,0x8410,0xb596,0x0861,0xd69a,0x5acb,0x8410,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x52aa,0xbdd7,0x6b4d,0x7bcf,0xce79,0x52aa,0xd6ba,0x632c,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cf3,0xb596,0x0000,0xe71c,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x7bcf,0xbdd7,0x0000,0xce59,0x94b2,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xd6ba,0x52aa,0x9cd3,0xc618,0x5acb,0xc618,0x31a6,0xad55,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0841,0x0000,0x0000,0xd6ba,0x5acb,0x0000,0x7bcf,0xd6ba,0x5acb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8c71,0xc618,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x9cf3,0x2124,0x0000,0x18c3,0xd69a,0x5acb,0x8410,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x738e,0x18c3,0x0000,0x6b6d,0xdefb,0x0000,0xc638,0x9492,0x632c,0xd6ba,0x52aa,0xbdd7,0x6b4d,0x7bef,0xce79,0x31a6,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xbdd7,0x31a6,0x0000,0x0000,0xbdd7,0xad55,0x6b6d,0xbdf7,0x2965,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xce59,0x0000,0x0000,0x0000,0xa534,0xdefb,0xad75,0xb5b6,0x39e7,0x528a,0x9cd3,0xad75,0x7bcf,0x2124,0x0000,0x9cf3,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xc618,0xce79,0xc618,0x18c3,0xdefb,0x5acb,0xa514,0xbdf7,0x2965,0xe71c,0x528a,0x0000,0x0000,0x5acb,0xe71c,0xc618,0x528a,0x39e7,0x9492,0xb596,0x8430,0x31a6,0x0000,0x7bef,0xdedb,0x18c3,0x0000,0x0000,0x8c71,0xd69a,0x0000,0xdefb,0x738e,0x8c51,0xe71c,0xad55,0xb5b6,0x31a6,0xa534,0xbdf7,0x18c3,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bcf,0x7bef,0xdedb,0x0020,0xd6ba,0xc618,0xce79,0xc618,0x18c3,0xdefb,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd6ba,0x8410,0x7bef,0xd69a,0x0000,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdefb,0x5acb,0x9cd3,0xe71c,0xad55,0x8410,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c71,0x6b4d,0xdefb,0x0841,0xce79,0xce79,0x7bef,0x0000,0x18c3,0xdedb,0x6b6d,0x8c51,0xe71c,0xb596,0xe73c,0x52aa,0xa514,0xbdf7,0x18e3,0xe73c,0x4228,0xb596,0xb596,0x4228,0xe71c,0x4a49,0x0000,0x0000,0x528a,0xbdd7,0xe71c,0xc638,0x630c,0x738e,0xdedb,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd69a,0xdefb,0xad55,0x0000,0xce59,0x9492,0x6b6d,0xdedb,0x0841,0xd69a,0x8c51,0x0000,0x0000,0x18c3,0xd6ba,0xc618,0xce79,0xc638,0x0000,0x0000,0xce79,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe71c,0x39e7,0x0000,0x0000,0x31a6,0x8430,0xb596,0x9492,0x31a6,0x7bcf,0xdedb,0x0000,0xd6ba,0x8410,0x7bcf,0xe71c,0xad55,0xb5b6,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xb5b6,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x528a,0xe73c,0x2124,0x8c71,0xd6ba,0xdedb,0xa514,0x0000,0xd69a,0x7bef,0x7bef,0xd6ba,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x9492,0x0000,0x0000,0x0000,0x6b4d,0xa534,0xad55,0xad55,0x31a6,0x0000,0x52aa,0x9cd3,0x0000,0x0000,0x0000,0x632c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1082,0x94b2,0xad55,0xa534,0x7bef,0x0000,0x9cd3,0x2965,0x6b4d,0x8410,0x0000,0x9cd3,0x3186,0x0000,0x0000,0x2965,0x9cf3,0xad75,0x528a,0x0000,0x3186,0xa534,0x0000,0x0000,0x0000,0x4a69,0x94b2,0x1082,0x0000,0x0000,0x632c,0x94b2,0x0000,0x94b2,0x4208,0x52aa,0xa534,0xa534,0xad55,0x3186,0x6b4d,0x8410,0x0000,0x9cd3,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x9cd3,0x52aa,0x4a69,0x9492,0x0000,0x8c71,0xa534,0xa534,0x7bef,0x0000,0x9cd3,0x2965,0x6b4d,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x9cf3,0x0000,0x9492,0x528a,0x528a,0x9492,0x0000,0x94b2,0x4208,0x5aeb,0x8c51,0x0000,0x9cd3,0x2965,0x630c,0xad55,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x94b2,0x630c,0x39e7,0x94b2,0x0000,0x8430,0xad75,0x7bef,0x0000,0x0000,0x94b2,0x4208,0x52aa,0xa534,0xa534,0xa514,0x2945,0x6b4d,0x8410,0x0000,0x9cd3,0x18c3,0x73ae,0x73ae,0x18c3,0x9cd3,0x3186,0x0000,0x0000,0x528a,0xb596,0x9cf3,0xad75,0x5aeb,0x39e7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c71,0xad55,0x9cf3,0xa514,0x0000,0x8c51,0x5aeb,0x4208,0x94b2,0x0000,0x9492,0x5acb,0x0000,0x0000,0x0000,0x8c71,0xa534,0xa534,0x8410,0x0000,0x0000,0x8c51,0x632c,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4208,0xa514,0x2104,0x0000,0x0000,0x0000,0x0000,0xa534,0x3186,0x0000,0x528a,0x94b2,0x0000,0x9492,0x528a,0x4228,0xa534,0xa534,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8430,0x8410,0x0000,0x0000,0x0000,0x8430,0x6b4d,0x2965,0x9cd3,0x0000,0x8c51,0xa534,0xa514,0x9cd3,0x0000,0x9492,0x528a,0x528a,0x9492,0x0000,0x0000,0x8430,0x738e,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x5acb,0x5acb,0x4a69,0x39e7,0x4208,0x4208,0x52aa,0x5acb,0x4a69,0x4228,0x5acb,0x5acb,0x5acb,0x4a69,0x4249,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x3186,0x0000,0x0020,0x0000,0x0000,0x2124,0x4228,0x4a49,0x52aa,0x4208,0x52aa,0x4a69,0x4a49,0x52aa,0x4208,0x52aa,0x5acb,0x5acb,0x52aa,0x4208,0x39e7,0x52aa,0x5aeb,0x528a,0x4208,0x52cb,0x5aeb,0x5acb,0x528a,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x4208,0x528a,0x4a69,0x39e7,0x4208,0x4228,0x52cb,0x4a69,0x4a49,0x52cb,0x4228,0x52cb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x31a6,0x0000,0x0020,0x0020,0x0000,0x31a6,0x52aa,0x4228,0x5acb,0x4228,0x4208,0x4208,0x4a49,0x52aa,0x4208,0x52aa,0x4a69,0x4228,0x5acb,0x5acb,0x5acb,0x5aaa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x52aa,0x0000,0x0000,0x0861,0x0000,0x0000,0x52aa,0x4228,0x528a,0x528a,0x4228,0x5acb,0x4208,0x528a,0x4a69,0x4228,0x52aa,0x4208,0x52aa,0x4a69,0x39e7,0x4228,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x39e7,0x0000,0x0000,0x0841,0x0000,0x2965,0x52aa,0x4208,0x5acb,0x4228,0x39e7,0x4a49,0x5acb,0x52aa,0x4208,0x528a,0x4a69,0x39e7,0x4208,0x4208,0x52ca,0x4a69,0x4a28,0x52aa,0x4208,0x52aa,0x4a49,0x4a49,0x52aa,0x4208,0x0000,0x0000,0x0861,0x0000,0x0000,0x39e7,0x4208,0x4a69,0x528a,0x4208,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x4208,0x0000,0x0000,0x0861,0x0000,0x0000,0x4228,0x4208,0x52aa,0x4228,0x4a69,0x528a,0x4208,0x5acb,0x4228,0x4a69,0x5acb,0x5acb,0x52aa,0x4228,0x4208,0x4208,0x4228,0x5acb,0x5acb,0x4228,0x4a69,0x5aeb,0x5acb,0x5acb,0x18c3,0x0000,0x0861,0x0000,0x0000,0x4a69,0x5acb,0x5acb,0x5acb,0x52aa,0x4208,0x528a,0x5acb,0x528a,0x4208,0x5acb,0x4228,0x528a,0x528a,0x39e7,0x4208,0x39e7,0x528a,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x4228,0x0000,0x0000,0x0861,0x0000,0x1082,0x5aeb,0x5acb,0x5acb,0x4228,0x4a69,0x52aa,0x4208,0x52aa,0x4a49,0x4208,0x4208,0x4228,0x5acb,0x4228,0x528a,0x528a,0x4228,0x5acb,0x5acb,0x4249,0x4a69,0x5acb,0x5acb,0x5acb,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xe73c,0x8430,0x0000,0x0000,0x0000,0x0000,0xb596,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdeba,0xdedb,0xdf1c,0xce79,0x2945,0x0000,0x0000,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdeba,0xdedb,0xdedb,0xdebb,0xdedb,0xdeba,0xdedb,0xdedb,0xdebb,0xdedb,0xdebb,0xdedb,0xdedb,0xdeba,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0xad55,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd69a,0x39e7,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xe73c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0x4a69,0x0000,0x0000,0x0000,0x39e7,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0x5aeb,0x0000,0x0000,0x0000,0x2945,0xce79,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0x8430,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdcd3,0xd32d,0xdeba,0xd208,0xde38,0xd4b2,0xd3af,0xde9a,0xd1c8,0xde38,0xdefb,0x9cd3,0x0000,0x18c3,0xbdf7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5c,0xd34d,0xd451,0xdf5d,0xde9a,0xd26a,0xd000,0xdd14,0xdf5d,0xdeba,0xce79,0x4a69,0x0000,0x73ae,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xd1e8,0xd000,0xdd34,0xddf7,0xd000,0xd1c8,0xd000,0xdd96,0xddb6,0xd083,0xd0e5,0xd000,0xddd7,0xdd55,0xd000,0xd1c8,0xdedb,0xdefb,0xdedb,0xa514,0x0000,0x0000,0xb5b6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xdd35,0xd229,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdedb,0xd69a,0x5aeb,0x0000,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd249,0xdd55,0xdd55,0xd249,0xdf1c,0xdedb,0xdedb,0xdedb,0xad75,0x0000,0x0000,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ab,0xdcd3,0xdf5d,0xdedb,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdefb,0xdedb,0xd6ba,0x6b4d,0x0000,0x5aeb,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd1c8,0xde59,0xdf1c,0xdedb,0xb5b6,0x0000,0x0000,0xa514,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd451,0xd32d,0xdf1c,0xdedb,0xd6ba,0x73ae,0x0000,0x4a69,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd126,0xddf7,0xdf3c,0xdedb,0xbdf7,0x18c3,0x0000,0x9cd3,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xdcb2,0xde38,0xd208,0xde9a,0xdedb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd430,0xd187,0xdeba,0xd000,0xddf7,0xd3f0,0xd28a,0xde9a,0xd000,0xddf7,0xe75d,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd3cf,0xd4f3,0xd472,0xd451,0xdeba,0xd001,0xd4f4,0xd451,0xd410,0xdf1c,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd2cb,0xddb6,0xdd75,0xde39,0xde9a,0xd4d3,0xd000,0xd492,0xdeba,0xd514,0xd0a4,0xddd7,0xd575,0xdeba,0xd492,0xd187,0xddd7,0xd2cb,0xddf7,0xe75d,0xb596,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd4b2,0xd36e,0xddf7,0xdeba,0xd36e,0xd28a,0xd24a,0xd410,0xdefb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdeba,0xd2cb,0xd4d3,0xde79,0xde79,0xd4d3,0xd2cb,0xdeba,0xdefb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddf7,0xd3af,0xd451,0xdf5d,0xdedb,0xd3af,0xd26a,0xd26a,0xd3af,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde9a,0xd000,0xd187,0xd596,0xdf3c,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd431,0xd431,0xde18,0xdedb,0xdedb,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xdd96,0xd38e,0xd555,0xdf3c,0xce79,0x18c3,0x0000,0xa534,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd229,0xd3f0,0xddf7,0xd000,0xde79,0xe75d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddb6,0xd4f4,0xdeba,0xd492,0xde79,0xdd96,0xd534,0xdeba,0xd492,0xde79,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd000,0xddd7,0xd4d3,0xd1e8,0xdeba,0xd0e5,0xd3cf,0xd492,0xd555,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd410,0xd472,0xdeba,0xdf1c,0xdefb,0xde9a,0xd001,0xde38,0xdf5d,0xd4f4,0xd002,0xd4d3,0xdedb,0xdf3c,0xd492,0xd0e5,0xd4d3,0xd410,0xde38,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd4d3,0xd410,0xdd96,0xdf3c,0xdeba,0xd4d3,0xd451,0xd451,0xd514,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd410,0xd471,0xdeba,0xdefb,0xdefb,0xdeba,0xd471,0xd410,0xde18,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xddd7,0xd410,0xd4b2,0xdedb,0xd4f4,0xd451,0xd451,0xd4f3,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd3af,0xd000,0xd3af,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd1a7,0xd472,0xdf5d,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd1e8,0xd431,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd514,0xdd96,0xde79,0xd492,0xdeba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdedb,0xdf1c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd083,0xddb7,0xd4d3,0xd249,0xdeba,0xd125,0xd126,0xd4b2,0xde79,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xd30c,0xd4d3,0xde59,0xdefb,0xde59,0xd001,0xddf8,0xdf3c,0xd514,0xd000,0xd2ec,0xde7a,0xdf3c,0xd4b2,0xd000,0xd30c,0xdefb,0xdefb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd34d,0xd492,0xde7a,0xdefb,0xdedb,0xde18,0xddf7,0xddd7,0xde38,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddb6,0xd2ab,0xddd7,0xdeba,0xdedb,0xdedb,0xdeba,0xddd7,0xd2ab,0xd5b6,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd4d3,0xd30c,0xdeba,0xde38,0xddf7,0xddf7,0xde18,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd1e8,0xd000,0xd534,0xde9a,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd209,0xd472,0xdf3c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd229,0xd471,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd229,0xdd76,0xd4b3,0xd32d,0xdeba,0xd002,0xde39,0xd451,0xd28a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xdedb,0xd28a,0xd492,0xdf3c,0xde59,0xd000,0xddf7,0xdf3c,0xd4f3,0xd1a7,0xdeba,0xde79,0xdefb,0xd472,0xd26a,0xdf3c,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5c,0xd3cf,0xd34d,0xdedb,0xdeba,0xd229,0xd000,0xd000,0xd32d,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd0a4,0xddb6,0xdedb,0xdedb,0xddb6,0xd0a4,0xde7a,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd3cf,0xd34d,0xdf3c,0xdedb,0xd2ab,0xd000,0xd000,0xd2ab,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde38,0xd002,0xd000,0xd534,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ec,0xd471,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd2cb,0xd4b3,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ec,0xd3ef,0xdf1c,0xde9a,0xd000,0xde18,0xd431,0xd2ab,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd000,0xd000,0xdd96,0xdefb,0xdefb,0xde39,0xd000,0xddf7,0xdf5c,0xd514,0xd000,0xd002,0xd000,0xddd7,0xd4b3,0xd208,0xdefb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd4b3,0xd1e8,0xdedb,0xdeba,0xde9a,0xde9a,0xdeba,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd1a7,0xd555,0xd555,0xd1a7,0xdeba,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd26a,0xd451,0xdefb,0xdedb,0xdedb,0xde9a,0xde9a,0xde9a,0xde9a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd576,0xd000,0xd000,0xddd7,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd3cf,0xd30c,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd0a4,0xdd76,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe73c,0xe679,0xe69a,0xe73c,0xe71c,0xe639,0xe6fb,0xe6ba,0xde59,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xddd7,0xddb7,0xde9a,0xdedb,0xdedb,0xdeba,0xddf7,0xd69a,0xdf1c,0xe6db,0xe638,0xe638,0xe618,0xe6fb,0xe6ba,0xe659,0xe73c,0xe71c,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe73c,0xe6bb,0xe639,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe73c,0xe659,0xe6db,0xe6db,0xe659,0xe73c,0xe71c,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe659,0xe6ba,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xddb7,0xddd7,0xdeba,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xde18,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xddd7,0xde9a,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xa534,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8430,0x8c51,0x8430,0x8430,0x8430,0xce79,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x8430,0x8430,0x8c71,0x8c71,0x8410,0x7bcf,0x7c30,0x7bcf,0x7c10,0xa575,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xdefb,0xdedb,0xdefb,0xdefb,0xad55,0x8410,0x8c92,0x8c92,0x8c92,0x8c51,0x8c71,0x8c71,0x8430,0x8410,0xc638,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x8c51,0x8430,0x8430,0x8c71,0x8c92,0x8430,0x8430,0x8430,0x8410,0x9cf3,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdefb,0xb596,0x7bcf,0x7bcf,0x7bcf,0x7c10,0x8430,0x8c71,0x8c92,0x8430,0x8410,0xc618,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xd6ba,0x8c71,0x8471,0x8c71,0x8c30,0x8430,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x9cd3,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe71c,0xc618,0x9cf3,0xa534,0xa534,0xa514,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0x630c,0x0861,0x6b6d,0x6b4d,0x6b6d,0x0861,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xce79,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdefb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0861,0x6b6d,0x6b4d,0x6b6d,0x0861,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xbdd7,0xa534,0xa534,0xa534,0xa534,0xa534,0xa514,0xb5b6,0xdefb,0xdedb,0xe71c,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xd69a,0xad55,0xa534,0xa534,0xa534,0xa514,0xad55,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xbdd7,0xa514,0xa534,0xa534,0xad55,0xa534,0xa534,0xa514,0xad55,0xd6ba,0xe73c,0x8410,0x0000,0x6b6d,0x6b4d,0x6b6d,0x2945,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0xa534,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xb5b6,0xbdd7,0xdefb,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0x6b4d,0x6b6d,0x31a6,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xbdf7,0xb5b6,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xb596,0xa514,0xa534,0xad55,0xa534,0xa514,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0xa514,0xa534,0xa534,0xa514,0xbdd7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xb596,0xa534,0xa534,0xa534,0xa534,0xa514,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xd69a,0x8430,0x1082,0x31a6,0x31a6,0x10a2,0x9cd3,0xd6ba,0xdedb,0xdedb,0xe71c,0x5aeb,0x8430,0xef7d,0xe71c,0xe73c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0xce79,0xdedb,0xdedb,0xdefb,0xc638,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe73c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x632c,0x0000,0x39e7,0x31a6,0x31a6,0x31a6,0x10a2,0x7bef,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0x2945,0x31a6,0x31a6,0x2965,0x4228,0xbdf7,0xd6ba,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8c51,0x0841,0x31a6,0x3186,0x0000,0x18c3,0x31a6,0x2945,0x4a49,0xd69a,0xe73c,0x8410,0x632c,0xef5d,0xe71c,0xef5d,0x8430,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x31a6,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xce79,0x630c,0x8c51,0xe73c,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xdefb,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x528a,0xe71c,0xdedb,0xdedb,0xe71c,0x9cd3,0x2104,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x738e,0x2104,0x18c3,0x0000,0x3186,0x0841,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xd6ba,0xad55,0x2104,0x3186,0x31a6,0x18c3,0x738e,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2124,0x0000,0x31a6,0x31a6,0x3186,0x2124,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x8c71,0xe73c,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x5aeb,0x8430,0xef7d,0xe71c,0xe73c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe73c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x39c7,0x31a6,0x31a6,0x0861,0xa514,0xe71c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x0000,0xb596,0xe71c,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x632c,0xef5d,0xe71c,0xef7d,0x7bef,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xd69a,0x6b6d,0x8c51,0xd6ba,0x3186,0xb5b6,0xd6ba,0xdedb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x3186,0xdefb,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c71,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2124,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe71c,0xe71c,0xef5d,0x4208,0x8430,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9cd3,0xc618,0x738e,0xe71c,0xe73c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x6b6d,0x39c7,0x7bef,0x7bcf,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xce79,0xe71c,0xe71c,0xe71c,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x39c7,0x7bef,0x7bcf,0x7bef,0x39c7,0x6b6d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x6b4d,0x5aeb,0xad75,0xa534,0xa534,0xa514,0xc618,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x8c51,0xb596,0xad75,0xa534,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x5aeb,0x6b4d,0x632c,0x6b4d,0x7bef,0xa534,0xce79,0xdedb,0xdefb,0xce59,0x1082,0x94b2,0xad75,0xad75,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x18e3,0x7bef,0x7bcf,0x73ae,0x9cd3,0xad75,0xad75,0xad55,0x1082,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x8c71,0x7bef,0xa534,0xd6ba,0xdefb,0xdedb,0xdedb,0xd69a,0x2104,0x8c71,0xb596,0xad75,0xa534,0x7bcf,0x7bcf,0x7bef,0x528a,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0x4a49,0x6b6d,0x6b4d,0x6b4d,0x632c,0x94b2,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4208,0x94b2,0xd69a,0x7bef,0x9cf3,0xdefb,0x738e,0x6b4d,0xe71c,0xdedb,0xe71c,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0xdedb,0xad75,0x8c51,0xb5b6,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x5aeb,0x8c51,0xf79e,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xe73c,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x738e,0x7bef,0x8410,0x5acb,0x0000,0xdefb,0xdefb,0xdedb,0xdefb,0xce59,0x0000,0xc638,0xe73c,0xe73c,0xce59,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0xa514,0x2124,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x10a2,0xbdf7,0xef5d,0xe73c,0xd69a,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x5acb,0xe73c,0xdefb,0xdefb,0xef5d,0x9cf3,0x2945,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe73c,0xad75,0x2965,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c51,0x4228,0xe73c,0xdefb,0xdefb,0xe73c,0xad75,0x0020,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0x5acb,0x7bef,0x7bcf,0x7bcf,0x73ae,0xce79,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x7bef,0x8c71,0xc638,0xb5b6,0x0000,0xad55,0x8430,0x9492,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdf7,0x5aeb,0xbdd7,0x738e,0x2965,0x7bcf,0xb5b6,0x5aeb,0xc638,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x6b4d,0xc618,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xc638,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xef5d,0xc638,0x5aeb,0xb596,0xd69a,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe71c,0xe71c,0xc618,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2104,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xdefb,0xdedb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xbdd7,0xe71c,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x9cd3,0x73ae,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0x94b2,0x738e,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xc618,0xbdf7,0x9492,0x18c3,0xbdd7,0xbdd7,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0xa534,0x6b6d,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0x9cf3,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2104,0xb596,0xef5d,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x10a2,0x2945,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x2104,0xbdd7,0xef7d,0xad75,0x3186,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x7bcf,0x0000,0x0861,0x1082,0x1082,0x1082,0x0000,0x73ae,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad55,0xdedb,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x2945,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x2104,0xb5b6,0xdefb,0xdefb,0xce59,0x0020,0xbdd7,0xd6ba,0xdedb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa514,0xdedb,0xd6ba,0xd69a,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x4a49,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xb596,0xdedb,0xd6ba,0xc618,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xe71c,0xb5b6,0x0000,0x1082,0x1082,0x0000,0x8430,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x18e3,0x2945,0x1082,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x1082,0x1082,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xef7d,0xad55,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xe71c,0x52aa,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xe71c,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0841,0x2104,0x2104,0x18c3,0x0000,0xb5b6,0xef5d,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x2104,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0xe73c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x2104,0x18e3,0x0000,0xad55,0xef5d,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x1082,0x0000,0x2104,0x2104,0x18c3,0x0000,0x0000,0x0000,0x0000,0x4228,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe73c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x52aa,0xe71c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xce79,0xbdf7,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xe73c,0xa534,0x39e7,0x0000,0x0861,0x52aa,0xc638,0xef5d,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xdefb,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xbdf7,0xce79,0xdedb,0x6b6d,0x2124,0x0000,0x3186,0x8c51,0xe73c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0xce79,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xe71c,0xad75,0x4208,0x0000,0x0000,0x4a69,0xbdf7,0xef5d,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xdefb,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xce79,0xdefb,0x73ae,0x2945,0x0000,0x2965,0x8410,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xe71c,0xb5b6,0x4228,0x0000,0x0000,0x4228,0xb5b6,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xc638,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xce59,0xe71c,0x8410,0x2965,0x0000,0x2945,0x73ae,0xdefb,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xbdf7,0x4a69,0x0000,0x0000,0x4208,0xad75,0xef5d,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0x8c51,0x3186,0x0000,0x2124,0x6b6d,0xd6ba,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xc638,0x52aa,0x0861,0x0000,0x39e7,0xa534,0xef5d,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0x9492,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x2945,0x8c51,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x8430,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x4a49,0x0000,0x0861,0x0000,0x0000,0x632c,0x9492,0x9492,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x8430,0x0000,0x0000,0x1082,0x0000,0x0000,0x8c51,0x8430,0x8c71,0x9492,0x8c71,0x8430,0x9492,0x9492,0x8c51,0x8430,0x8430,0x9492,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x52aa,0x0000,0x0841,0x0020,0x0000,0x5acb,0x8c71,0x8c51,0x9492,0x8430,0x8430,0x8c51,0x9492,0x9492,0x8430,0x8430,0x8430,0x8c51,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x8c51,0x0000,0x0000,0x1082,0x0000,0x0000,0x8410,0x9492,0x9492,0x8c71,0x8430,0x8430,0x9492,0x9492,0x8c71,0x8430,0x8430,0x9492,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x5aeb,0x0000,0x0841,0x0841,0x0000,0x52aa,0x8c71,0x8430,0x9492,0x8c51,0x8430,0x8430,0x8c51,0x9492,0x8430,0x8430,0x8c51,0x9492,0x9492,0x9cd3,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x8c71,0x0000,0x0000,0x0861,0x0000,0x0000,0x7bef,0x9492,0x9492,0x8c71,0x8430,0x9492,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x9492,0x9492,0x9492,0x8c71,0x8430,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x6b4d,0x0000,0x0020,0x0841,0x0000,0x4a69,0x9492,0x9492,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x8430,0x8430,0x8430,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x2104,0x0000,0x1082,0x0000,0x0000,0x7bcf,0x9492,0x9492,0x8c71,0x8430,0x8430,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x8430,0x8c71,0x8c71,0x8430,0x9492,0x8430,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x738e,0x0000,0x0000,0x1082,0x0000,0x31a6,0x8c71,0x8430,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2104,0x632c,0x632c,0x0000,0x3186,0x632c,0x5aeb,0x632c,0x0000,0x31a6,0x632c,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x52aa,0x39c7,0x0000,0x0000,0x0000,0x52aa,0x3186,0x0000,0x0000,0x0000,0x528a,0x6b4d,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x73ae,0x5acb,0x632c,0x18c3,0x0000,0x0000,0x630c,0x0000,0x0000,0x3186,0x632c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x6b4d,0x6b4d,0x630c,0x52aa,0x0000,0x528a,0x6b4d,0x31a6,0x0000,0x0000,0x5aeb,0x5aeb,0x632c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x39c7,0x738e,0x632c,0x0000,0x0000,0x2104,0x630c,0x630c,0x0000,0x0000,0x2945,0x632c,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0020,0x0000,0x4208,0x6b4d,0x5acb,0x0000,0x52aa,0x630c,0x630c,0x52aa,0x0000,0x528a,0x6b4d,0x31a6,0x0000,0x0000,0x0000,0x528a,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x630c,0x0000,0x0000,0x18c3,0x52aa,0x0000,0x528a,0x18c3,0x0861,0x630c,0x630c,0x0000,0x0000,0x0000,0x0000,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0020,0x0000,0x4208,0x528a,0x0000,0x0000,0x0000,0x39e7,0x4a69,0x0000,0x0000,0x4a69,0x6b4d,0x39e7,0x0000,0x0000,0x528a,0x630c,0x632c,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0x6b6d,0x6b4d,0x0000,0x0000,0x0000,0x5aeb,0x630c,0x6b4d,0x2124,0x0000,0x630c,0x630c,0x6b4d,0x18c3,0x18c3,0x528a,0x0000,0x52aa,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x738e,0x5aeb,0x630c,0x0000,0x0000,0x3186,0x52aa,0x0000,0x0000,0x4a49,0x6b4d,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x73ae,0xdedb,0xdedb,0x4a69,0x8c51,0xe71c,0xe71c,0xd6ba,0x39c7,0xa534,0xef5d,0xbdf7,0x39c7,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2104,0xbdd7,0xa534,0x1082,0x0000,0x2965,0xc618,0x9cf3,0x0000,0x0020,0x39c7,0xbdf7,0xe71c,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdefb,0xe71c,0xdefb,0x6b6d,0x0000,0x7bcf,0xd69a,0x528a,0x0000,0x9cf3,0xef5d,0xc638,0x4228,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0xe71c,0xbdd7,0x0841,0xd69a,0xe73c,0x9cf3,0x0000,0x2965,0xce59,0xe71c,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xe73c,0xd6ba,0x6b4d,0x0000,0x8430,0xef5d,0xd69a,0x5aeb,0x0000,0x9492,0xef5d,0xce59,0x528a,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0xdefb,0xc618,0x0020,0xbdd7,0xe71c,0xe71c,0xbdd7,0x0841,0xd69a,0xe71c,0x9cf3,0x10a2,0x0000,0x0000,0xce59,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x528a,0xd69a,0x7bcf,0x0000,0x7bcf,0xdedb,0x0000,0xd69a,0x7bef,0x73ae,0xef5d,0xd69a,0x5aeb,0x0861,0x0000,0x6b4d,0xdefb,0x52aa,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xc618,0x2965,0x0000,0x0861,0xa534,0xbdd7,0x18e3,0x0000,0xce59,0xe73c,0xa534,0x0861,0x18c3,0xd69a,0xdedb,0xdedb,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe71c,0xdefb,0x7bef,0x0000,0x632c,0xe73c,0xd6ba,0xdefb,0x7bef,0x632c,0xe73c,0xd69a,0xdefb,0x6b6d,0x8410,0xd69a,0x0000,0xdedb,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe71c,0xe71c,0xd69a,0x39e7,0x0000,0x9cf3,0xc618,0x2965,0x0000,0xc618,0xe73c,0xad75,0x2124,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x0000,0x18e3,0x0861,0x0000,0x7bef,0xd69a,0x2945,0x0000,0xad75,0xad75,0x4a49,0xd6ba,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce79,0x6b4d,0x8c71,0xc618,0x18c3,0xd69a,0x5acb,0x9cd3,0xb596,0x2965,0xdedb,0x5acb,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xdedb,0x4a69,0x0000,0x9492,0xbdf7,0x18e3,0xd69a,0x528a,0x9cd3,0xbdd7,0x39c7,0xd6ba,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd69a,0x6b6d,0x8c71,0xc618,0x0000,0x0000,0xc638,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0861,0xce59,0x7bcf,0x7bcf,0xce59,0x2104,0xce79,0x632c,0x8c51,0xc618,0x2945,0xd69a,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xd69a,0x2945,0xc618,0x8c51,0x6b4d,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce59,0x0861,0xd69a,0x7bcf,0x0000,0x5aeb,0xdefb,0xdefb,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0x9cd3,0x5aeb,0xd6ba,0x18c3,0xbdf7,0x8c71,0x6b4d,0xce79,0x0020,0xce59,0x7bef,0x7bef,0xc638,0x0841,0xd69a,0x7bcf,0x0000,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x3186,0xb5b6,0x9cd3,0x52aa,0xd6ba,0x3186,0x0861,0x0000,0x7bcf,0xd69a,0x18e3,0x10a2,0x0000,0x8c51,0xce59,0x0000,0xd6ba,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xce79,0x10a2,0x0000,0xb5b6,0x9cd3,0x52aa,0xd69a,0x18c3,0xc618,0x8c71,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x8430,0xc638,0x0000,0x0000,0x0000,0x73ae,0xd69a,0x0861,0x0000,0xb596,0xad55,0x39e7,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x73ae,0x0000,0x39c7,0x3186,0xdedb,0x528a,0x9cd3,0xbdd7,0x0000,0x52aa,0xc618,0x6b6d,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x4208,0x0000,0x9492,0xe71c,0xce59,0xdefb,0x528a,0x9cd3,0xb5b6,0x2945,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xad75,0x0000,0x18c3,0xd69a,0x632c,0x8c51,0xc638,0x0000,0x0000,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xdefb,0xce59,0x6b4d,0x0000,0x8430,0xce59,0x0000,0xd69a,0x6b4d,0x8c51,0xc618,0x0861,0xd6ba,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xad55,0xa534,0x0000,0x0000,0x0000,0xad75,0xad75,0x0000,0x18c3,0xce59,0xdedb,0x9cd3,0x10a2,0x2945,0xc618,0xe71c,0x9cd3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdedb,0x2945,0x31a6,0x0000,0x738e,0xdefb,0xce59,0xdefb,0x738e,0x738e,0xe71c,0xc638,0x5aeb,0x0000,0x8410,0xdedb,0xd69a,0x52aa,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xa514,0x0000,0x4228,0x0000,0xc638,0x8c51,0x632c,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x0020,0xce59,0xdedb,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xd69a,0x8c51,0x1082,0x630c,0xdefb,0xce79,0x5acb,0x0000,0x738e,0xdefb,0xce59,0x4a49,0x0000,0x8410,0xe71c,0xce59,0x5aeb,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8430,0xce59,0x0000,0x0000,0xb596,0xdedb,0xce79,0xd69a,0x18c3,0xb5b6,0xdefb,0xa534,0x2965,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x8430,0xad75,0x528a,0x0000,0x6b6d,0xd69a,0x0000,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b4d,0x5acb,0x94b2,0x2124,0xdefb,0x4228,0x9cd3,0xc638,0x0000,0x0000,0x632c,0xad55,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x9492,0xd69a,0x8c71,0xdedb,0x528a,0x9cd3,0xb5b6,0x2965,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xad75,0xad75,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdedb,0x8c71,0x9cf3,0x4a49,0x8410,0xce59,0x0841,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xdefb,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0x9cd3,0xa534,0x10a2,0x0000,0xb596,0xb596,0x0000,0x18c3,0xce79,0xad55,0x9492,0x8430,0x0000,0x738e,0xce59,0xce59,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xdefb,0x0000,0x9492,0x632c,0x6b4d,0xdedb,0x8c51,0xd6ba,0x73ae,0x73ae,0xd6ba,0x8c51,0x9cf3,0x4a49,0x39e7,0x9cf3,0xdedb,0xad75,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x10a2,0xa534,0x0000,0xce59,0x8c51,0x5aeb,0xdedb,0x0841,0xce59,0x6b6d,0x73ae,0xd69a,0x0000,0xce79,0xad55,0x4208,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x9cf3,0x39c7,0x0000,0x6b4d,0xdedb,0x8c51,0x10a2,0x0000,0x7bcf,0xdedb,0x8410,0x0000,0x0000,0x8430,0xd6ba,0x8c51,0x9cf3,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0000,0x0000,0xb5b6,0xbdf7,0x9cf3,0xd69a,0x18c3,0xbdf7,0xb596,0x8430,0x9cf3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x8430,0x7bcf,0xb596,0x4a49,0x4a49,0xad75,0xdedb,0x8c51,0x0000,0xb596,0xad75,0x4208,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0x9492,0x9cf3,0x9cd3,0x1082,0xa514,0x8c71,0x9cf3,0x8430,0x1082,0x8430,0x73ae,0xa534,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x4228,0x0000,0x9cd3,0xc618,0x0000,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xce59,0xce59,0x6b4d,0x10a2,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x0000,0xce59,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xd6ba,0x0000,0xd6ba,0x8430,0x7bef,0xce79,0x0841,0xd6ba,0x6b4d,0x8c51,0xd6ba,0x8410,0xad55,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x7bef,0x8c71,0xad55,0x10a2,0x0000,0xb5b6,0xb5b6,0x0000,0x18c3,0xd6ba,0x5acb,0x8c71,0xd69a,0x0000,0x6b4d,0xce79,0xd69a,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xad55,0x8430,0xb596,0x6b4d,0x738e,0xd6ba,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0000,0xdefb,0x7bef,0x2124,0x9cf3,0xdefb,0xbdd7,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cf3,0x9492,0xad75,0x18c3,0x8c71,0x9cd3,0x9492,0x9cf3,0x0000,0xce59,0xb596,0x9492,0x94b2,0x1082,0xd69a,0xa514,0x7bcf,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x2965,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0x8430,0x4228,0x738e,0xdefb,0x7bcf,0x8430,0x31a6,0x8430,0xce79,0x0000,0xdefb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd69a,0x0000,0x0000,0xc618,0x9cd3,0x4228,0xdedb,0x18c3,0xc618,0xb596,0x8430,0xad55,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xdedb,0xc638,0x0000,0x0000,0x9492,0xd69a,0xc638,0xce79,0x39e7,0x9cd3,0x9cd3,0x39c7,0xc618,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0x94b2,0x0000,0x0000,0x0000,0xb5b6,0x8430,0x0000,0x4208,0xce59,0xdedb,0x6b6d,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xc618,0x39e7,0x0000,0x8430,0xad75,0x10a2,0xc618,0x4a69,0x8c51,0xa534,0x2945,0xc618,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xce59,0xce59,0xb5b6,0x0000,0xbdf7,0x5aeb,0x7bef,0xb596,0x0000,0x0000,0xb596,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xbdf7,0x0020,0xb5b6,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x5aeb,0x738e,0xd69a,0xc638,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xdedb,0xa514,0x0000,0x0000,0x0000,0x9cf3,0x9cf3,0x0000,0x10a2,0xbdf7,0x5aeb,0x7bef,0xad75,0x18c3,0xc638,0xd69a,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xce59,0x52aa,0x0000,0x6b6d,0xbdf7,0x0020,0xb5b6,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x5aeb,0x7bef,0xd6ba,0xbdd7,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8430,0xb5b6,0x0000,0x0000,0x0000,0x94b2,0xad75,0x0000,0x0000,0xad75,0xd6ba,0x94b2,0x0000,0x18c3,0xb5b6,0xce79,0xd6ba,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xc618,0x39e7,0x0000,0x0000,0x5acb,0xce59,0xce79,0xd6ba,0x7bcf,0x52aa,0xce59,0xce79,0xd6ba,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xb5b6,0x0000,0x0000,0xad55,0x8c51,0x4a69,0xc618,0x18c3,0xa514,0xd6ba,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0x6b4d,0x632c,0x0000,0x0000,0x4228,0x6b4d,0x6b4d,0x6b4d,0x18e3,0x4a69,0x4a69,0x18e3,0x630c,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x738e,0x5acb,0x0000,0x0000,0x5aeb,0x4228,0x0000,0x2104,0x630c,0x18e3,0x4a69,0x4a69,0x18e3,0x632c,0x6b4d,0x6b6d,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x6b4d,0x632c,0x1082,0x0000,0x4228,0x6b6d,0x630c,0x6b4d,0x2124,0x4208,0x6b4d,0x632c,0x632c,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x6b4d,0x6b4d,0x5aeb,0x0000,0x0000,0x5acb,0x4a69,0x0000,0x10a2,0x5aeb,0x6b6d,0x4208,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x6b4d,0x2945,0x0000,0x0000,0x2104,0x6b4d,0x10a2,0x0000,0x4228,0x6b6d,0x630c,0x6b4d,0x3186,0x0000,0x31a6,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x5acb,0x0000,0x0000,0x0000,0x528a,0x528a,0x0000,0x0000,0x0000,0x528a,0x738e,0x52aa,0x0841,0x630c,0x2124,0x4228,0x528a,0x10a2,0x630c,0x6b6d,0x39c7,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x3186,0x630c,0x10a2,0x0000,0x0020,0x0000,0x10a2,0x6b4d,0x2104,0x0000,0x0000,0x2104,0x6b4d,0x10a2,0x0000,0x4208,0x6b4d,0x632c,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x4a49,0x0000,0x0000,0x0000,0x5acb,0x6b4d,0x632c,0x630c,0x0861,0x0000,0x4a69,0x6b6d,0x5aeb,0x0000,0x630c,0x632c,0x6b4d,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630c,0x2104,0x0000,0x0000,0x2965,0x632c,0x6b4d,0x6b6d,0x39e7,0x2965,0x6b4d,0x630c,0x6b6d,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xce79,0x4228,0x0000,0x9cf3,0xe73c,0xd6ba,0xdedb,0x39c7,0xad75,0xad75,0x4208,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xb596,0xe73c,0xb5b6,0x0000,0x10a2,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0x4208,0xad75,0xad75,0x39e7,0xe71c,0xdedb,0xdefb,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xef5d,0xd69a,0x52aa,0x0000,0x8c51,0xe71c,0xdefb,0xdefb,0x4a69,0x94b2,0xef5d,0xdefb,0xe71c,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xbdf7,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xd6ba,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x52aa,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x8c51,0xe71c,0xdefb,0xdefb,0x630c,0x0000,0x8410,0xd69a,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x0000,0x0000,0xb596,0xe73c,0xb596,0x18e3,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdefb,0xe71c,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x3186,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x632c,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x9492,0xef5d,0xce79,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xad55,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0xe71c,0xc638,0x18c3,0x0000,0xa534,0xe71c,0xbdf7,0x0020,0xc638,0xe71c,0xe71c,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x4228,0x0000,0x0000,0x632c,0xe71c,0xd6ba,0xe71c,0x8410,0x5aeb,0xdefb,0xdefb,0xe71c,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x31a6,0xce79,0x528a,0x9cf3,0xbdd7,0x0000,0x3186,0x0000,0xb596,0xa534,0x3186,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce79,0x7bcf,0x0000,0x2104,0x2965,0xce79,0x52aa,0x94b2,0xad75,0x2965,0xdedb,0x4208,0xad55,0xad55,0x4208,0xdedb,0x4a49,0x18e3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x3186,0xce59,0x738e,0x0000,0x73ae,0xd6ba,0x4a49,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c51,0x0000,0x2945,0x18c3,0xce59,0x6b6d,0x8c71,0xbdd7,0x18e3,0xd6ba,0x5acb,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0x39c7,0x0000,0x0000,0x8410,0xc638,0x3186,0xce59,0x738e,0x0000,0x73ae,0xd6ba,0x4a49,0x0000,0x9cf3,0xb596,0x4208,0xd69a,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0x9cd3,0x0000,0x0000,0x0000,0xc618,0x7bef,0x7bef,0xc618,0x0841,0xce79,0x7bcf,0x0000,0x2104,0x3186,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x4a49,0xad55,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x73ae,0xce59,0x3186,0xc638,0x73ae,0x73ae,0xc618,0x18c3,0xce59,0x630c,0x8c51,0xc638,0x31a6,0xce79,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0xad55,0xbdf7,0x0000,0x0000,0xce59,0x8c51,0x0000,0x2965,0x0000,0x0000,0xbdf7,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x6b4d,0xd6ba,0x39c7,0x2124,0x18e3,0x0000,0x52aa,0xdedb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x0020,0xdedb,0x52aa,0x9492,0xdefb,0xb596,0x0000,0x0000,0xa534,0xd6ba,0xbdf7,0xd6ba,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x5acb,0xb5b6,0x8430,0x0000,0x31a6,0xd6ba,0xce59,0xd6ba,0xad75,0x2965,0xdedb,0x2124,0xa534,0xad55,0x39e7,0xdedb,0xce79,0x630c,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xd69a,0x7bcf,0x0000,0x632c,0xd6ba,0x2945,0x0000,0x9cd3,0xe73c,0xe71c,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xdedb,0x8c71,0x0000,0x18c3,0xd6ba,0x632c,0x8c51,0xc638,0x18c3,0xd69a,0xd69a,0x9492,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xad75,0x632c,0x8410,0xce79,0x0000,0xd69a,0x7bcf,0x0000,0x632c,0xd6ba,0x2945,0x0000,0xa534,0xb5b6,0x2124,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c71,0x4a69,0xb596,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x52aa,0xb5b6,0x8430,0x0000,0x31a6,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2945,0xd6ba,0xce79,0x8c51,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xce79,0x7bef,0x73ae,0xe71c,0xc618,0xe71c,0x632c,0x8c51,0xc618,0x0020,0xdedb,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0xa514,0xbdd7,0x0000,0x0000,0x528a,0xb596,0x9492,0x0000,0x0020,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x632c,0xdefb,0xce59,0x52aa,0x0000,0x0000,0x39e7,0xdedb,0x528a,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x18c3,0xd6ba,0x52aa,0x94b2,0xce79,0x7bcf,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x630c,0xa514,0x8c51,0x2124,0xd69a,0xa534,0xc618,0xb596,0x3186,0xdefb,0xa534,0xce79,0xad55,0x39e7,0xdedb,0x9cf3,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xdedb,0x7bef,0x0000,0x5aeb,0xd6ba,0x0841,0x0000,0x9cf3,0xce59,0x9492,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xbdf7,0x6b4d,0x0000,0x18c3,0xdedb,0x630c,0x8c51,0xce59,0x10a2,0xd69a,0xad75,0x94b2,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd6ba,0x8430,0x7bef,0xd69a,0x0000,0xdedb,0x7bef,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0xad55,0xbdd7,0x0000,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c51,0x632c,0xe71c,0x0841,0xd69a,0x73ae,0x73ae,0xd6ba,0x0000,0x0000,0x630c,0xa514,0x8c51,0x2124,0xd6ba,0x4228,0x94b2,0xb5b6,0x2965,0xd6ba,0x9cf3,0x9cd3,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0861,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd69a,0x8410,0x73ae,0xd6ba,0x94b2,0xdedb,0x632c,0x8c71,0xbdf7,0x0000,0xdefb,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x5acb,0xa514,0x94b2,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x3186,0x0000,0x0000,0x6b4d,0xdedb,0x94b2,0x2124,0x0000,0x0000,0x4228,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xc638,0x18c3,0xdedb,0x52aa,0x9cd3,0xce59,0x630c,0x7bcf,0x1082,0x7bef,0xce59,0xdedb,0xad55,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x738e,0x6b4d,0x9cd3,0xa514,0x2104,0xdedb,0x4208,0x94b2,0xbdf7,0x1082,0xad55,0xe71c,0xce79,0x73ae,0x4a49,0xdefb,0x7bef,0x73ae,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd6ba,0x7bcf,0xad75,0x52aa,0x31a6,0x9cf3,0xdedb,0x8430,0x0000,0xa534,0xb5b6,0x0000,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x8410,0x0000,0x0000,0x10a2,0xa534,0x8c71,0x94b2,0x94b2,0x2124,0xdedb,0x4208,0x9cf3,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xad75,0x7bcf,0xad75,0x5aeb,0x5aeb,0xad75,0x7bcf,0xad75,0x5aeb,0x0000,0x6b4d,0xdedb,0x3186,0x0000,0x7bef,0xa534,0x7bef,0xad75,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0x94b2,0x8c71,0xa534,0x0020,0x9cf3,0x9492,0x9492,0x9cf3,0x0000,0x738e,0x6b4d,0x9cd3,0xa514,0x2104,0xdedb,0x9492,0xbdd7,0xb5b6,0x2965,0xdefb,0x8410,0xa514,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0x7bef,0x4208,0x52aa,0xad75,0x7bcf,0xad75,0x5acb,0x8410,0xce79,0x0000,0xd6ba,0x6b4d,0x8c51,0xd69a,0x7bcf,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xbdf7,0x738e,0x73ae,0x0861,0x5acb,0xbdf7,0xce59,0x632c,0x0000,0x6b6d,0x6b6d,0x9492,0xad75,0x0000,0x0000,0xbdf7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x8c51,0x7bef,0x4228,0x630c,0xdefb,0x73ae,0x7bcf,0x528a,0x0000,0x4228,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xb596,0x1082,0xc638,0x4a69,0x8410,0xd69a,0xd69a,0xd69a,0x528a,0x0000,0x73ae,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xc618,0xdefb,0x8c71,0x0000,0x2965,0xc638,0x4a69,0x8c71,0xad75,0x0000,0x0000,0xbdd7,0x73ae,0x0000,0x4a69,0xce59,0xd69a,0xdedb,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xd6ba,0xce79,0x2124,0x0000,0x8c51,0xdedb,0xce59,0xd6ba,0x4a69,0x8c71,0xad55,0x2124,0xc638,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0x7bef,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x2965,0xc638,0x4a69,0x8c71,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xd69a,0x4208,0x0000,0x0000,0x4208,0xd69a,0x2945,0x0000,0x0000,0x5aeb,0xc638,0x2945,0x0000,0x0000,0x6b4d,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9cd3,0xb596,0x0000,0x0000,0x0000,0xa534,0xa534,0x0000,0x10a2,0xc618,0xdefb,0x8c71,0x0000,0x2965,0xbdf7,0xd69a,0xd6ba,0x9cf3,0x2124,0xc638,0xdedb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xce79,0xd69a,0xdedb,0x8c51,0x0000,0x2945,0xd69a,0x4208,0x0000,0x7bef,0xbdd7,0x0000,0xc618,0x5aeb,0x73ae,0xd6ba,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xd6ba,0xd6ba,0xce59,0x1082,0xad75,0xd69a,0xce79,0xc618,0x0000,0xbdd7,0xdefb,0x9cd3,0x0000,0x0000,0x0000,0xad75,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xce59,0xd69a,0xdedb,0x8c51,0x4228,0xce79,0xd69a,0xdedb,0x8430,0x0000,0x39e7,0xc638,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0841,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0841,0x0020,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4228,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc679,0xc638,0xc638,0xc679,0xc679,0xc679,0xc638,0xc618,0xc638,0xc679,0xc618,0xc618,0xc659,0xc679,0xc679,0xc618,0xce79,0x6b4d,0x0000,0x0861,0x0000,0x0000,0x9514,0xce9a,0xc618,0xc618,0xc659,0xc679,0xc638,0xc618,0xc638,0xc679,0xc679,0xc638,0xc618,0xc638,0xc659,0xc618,0xc659,0xc679,0xc659,0xc618,0xc618,0xc659,0xc679,0xc69a,0xb5f7,0x0000,0x0000,0x1082,0x0000,0x3186,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc679,0xc638,0xc638,0xc679,0xc618,0xc618,0xc618,0xc618,0xc638,0xc679,0xc638,0xc618,0xc659,0xc659,0xc618,0xc679,0xce79,0x73ae,0x0000,0x0861,0x0020,0x0000,0x8c71,0xce79,0xc618,0xc618,0xc618,0xc659,0xc679,0xc679,0xc679,0xc618,0xc618,0xc659,0xc659,0xc618,0xc618,0xc618,0xc659,0xc679,0xc659,0xc618,0xc679,0xc679,0xc679,0xc679,0xbdd7,0x0000,0x0000,0x1082,0x0000,0x18e3,0xbdf7,0xc679,0xc638,0xc618,0xc618,0xc618,0xc679,0xc638,0xc618,0xc618,0xc618,0xc679,0xc679,0xc679,0xc659,0xc618,0xc618,0xc659,0xc679,0xc659,0xc638,0xc679,0xc679,0xceba,0x8451,0x0000,0x0841,0x0841,0x0000,0x8410,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc638,0xc638,0xc679,0xc618,0xc659,0xc638,0xc638,0xc679,0xc618,0x18e3,0x0000,0x1082,0x0000,0x0000,0xbdd7,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xce79,0x8c71,0x0000,0x0020,0x0861,0x0000,0x738e,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc659,0xc618,0xc638,0x31a6,0x0000,0x1082,0x0000,0x0000,0xb596,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xce59,0x9cd3,0x0000,0x0000,0x0861,0x0000,0x6b2c,0xce79,0xc679,0xc679,0xc679,0xc659,0xc638,0xc679,0xc618,0xc659,0xc638,0xc638,0xc679,0xc679,0xc638,0xc618,0xc618,0xc638,0xc679,0xc638,0xc618,0xc638,0xc679,0xc679,0xce59,0x4a49,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xbdf7,0xe71c,0xdefb,0xdefb,0xdefb,0xdf3c,0xdefb,0xdbcf,0xdb2d,0xde18,0xde18,0xdb6d,0xdc10,0xdb6e,0xde18,0xdf7d,0xde79,0xdbaf,0xdf1c,0xdf5d,0xdd96,0xdb6e,0xdc31,0xdf3c,0xe73c,0xc618,0x7bcf,0x0000,0x10a2,0x94f3,0xcc51,0xe596,0xdf3c,0xdedb,0xdc71,0xdb2d,0xddd7,0xdf7d,0xde9a,0xdc31,0xdb4d,0xde18,0xdf7d,0xde79,0xdc30,0xdedb,0xdd55,0xdb4d,0xdcb3,0xdf5d,0xdf1c,0xdc92,0xdbaf,0xdbf0,0xd3cf,0xad34,0x3a08,0x0000,0x5aeb,0xbdd7,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdf1c,0xdbf0,0xdb2d,0xddd7,0xde59,0xdc51,0xdefb,0xdefb,0xdefb,0xdf3c,0xdeba,0xdbaf,0xdefb,0xdf5d,0xdd96,0xdcb3,0xdefb,0xdc31,0xe679,0xc679,0x8410,0x0000,0x0000,0x8c71,0xce79,0xe71c,0xdefb,0xdefb,0xdf1c,0xdd34,0xdbae,0xdb8e,0xdbf0,0xdeba,0xdf7d,0xdd55,0xdcb3,0xdf7d,0xdefb,0xdf7d,0xdd55,0xdb0c,0xdc72,0xdefb,0xdc30,0xdbcf,0xdbaf,0xdcb2,0xdefb,0xad75,0x4a49,0x0000,0x52aa,0xb5b6,0xdefb,0xdc92,0xddd7,0xdf1c,0xdefb,0xdefb,0xdc51,0xde18,0xdf1c,0xdefb,0xdedb,0xdbf0,0xdbf0,0xdb8e,0xdcd3,0xdf3c,0xdf5d,0xdc72,0xdb0c,0xdd55,0xdeba,0xdb8e,0xdc10,0xdbaf,0xcc92,0x8c92,0x0000,0x0000,0x8c51,0xce59,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdc51,0xddd7,0xde79,0xdbef,0xdefb,0xdc10,0xde38,0xde38,0xdc10,0xdefb,0xb5b6,0x52aa,0x0000,0x4a49,0xad75,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce79,0x8c71,0x0000,0x0000,0x8410,0xc638,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf3c,0xdd55,0xdcf3,0xdf1c,0xdefb,0xbdd7,0x5aeb,0x0000,0x39e7,0xad55,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xe73c,0xd679,0x94b2,0x10a2,0x0000,0x7bcf,0xc658,0xe6ba,0xdc10,0xdbaf,0xdb2d,0xdd96,0xde9a,0xdc31,0xdefb,0xdcb3,0xddd7,0xde79,0xdbcf,0xdb8e,0xdeba,0xdf3c,0xdf3c,0xdeba,0xdbaf,0xdefb,0xdf5d,0xddd7,0xdb8e,0xdbf0,0xe71c,0xbe18,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd492,0xd3ef,0xd34d,0xddf7,0xde18,0xd28a,0xd000,0xd2ec,0xde18,0xde59,0xd492,0xd38e,0xd4d3,0xdedb,0xd410,0xd000,0xd430,0xd4d3,0xd679,0xef5d,0xad75,0x0000,0x18c3,0xd6db,0xdaec,0xd3af,0xdf3c,0xde79,0xd000,0xd2cb,0xd451,0xddb6,0xde59,0xd000,0xd32d,0xd471,0xddf7,0xde18,0xd000,0xde9a,0xd32d,0xd023,0xd410,0xd535,0xdedb,0xd4d3,0xd0e4,0xd000,0xdc51,0xe71c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b2,0xd3f0,0xd32d,0xddd7,0xd575,0xd000,0xdeba,0xdedb,0xdefb,0xde38,0xd492,0xd38e,0xd4b3,0xdeba,0xd471,0xd209,0xdedb,0xd000,0xd596,0xe77d,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd2cb,0xd125,0xd3f0,0xd3cf,0xdeba,0xddb6,0xd431,0xd410,0xd555,0xdedb,0xd555,0xd430,0xd36e,0xd451,0xdedb,0xd431,0xd000,0xd0e4,0xd4b3,0xdefb,0xe73c,0x6b4d,0x0000,0x7bcf,0xef5d,0xdedb,0xd0a4,0xd4b3,0xdf1c,0xdedb,0xdeba,0xd000,0xd534,0xdf1c,0xdedb,0xde9a,0xd3f0,0xd000,0xd146,0xd514,0xdeba,0xd4f3,0xd410,0xd34d,0xd534,0xde9a,0xd36e,0xd000,0xd1e8,0xe5d7,0xc659,0x0000,0x0000,0xc618,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd4b2,0xd471,0xd4b2,0xd431,0xdedb,0xd472,0xd492,0xd492,0xd471,0xdedb,0xef5d,0x7bcf,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd3cf,0xd28a,0xdf3c,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b3,0xd4d3,0xd492,0xd5f7,0xdf3c,0xd69a,0x18c3,0x0000,0xad75,0xef7d,0xd5f7,0xd000,0xd36e,0xd36d,0xdd96,0xddd7,0xd000,0xdeba,0xd1e8,0xd4b2,0xddb6,0xd000,0xd36e,0xd4b2,0xde59,0xde59,0xd492,0xd38e,0xd492,0xde9a,0xd492,0xd000,0xd3cf,0xd4d3,0xeefb,0x94d2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd596,0xd229,0xde38,0xdf1c,0xdefb,0xdf1c,0xde59,0xd001,0xde9a,0xdf5d,0xd430,0xd229,0xdefb,0xd000,0xddf7,0xd471,0xd2cb,0xde18,0xd1c8,0xde18,0xe73c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd3f0,0xdf3c,0xde9a,0xd063,0xdd96,0xd451,0xd3cf,0xde9a,0xd001,0xddd7,0xd3f0,0xd451,0xde59,0xd001,0xde9a,0xd30c,0xd492,0xde38,0xd000,0xde79,0xdf7d,0xd431,0xd30c,0xdf5d,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd1e8,0xddf8,0xdf1c,0xdf5c,0xd555,0xd105,0xdeba,0xdedb,0xdf1c,0xd4b3,0xd125,0xdf1c,0xd000,0xdd96,0xd4f3,0xd208,0xddf7,0xd002,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd30c,0xd38e,0xdedb,0xdf1c,0xdefb,0xd1c7,0xd431,0xd514,0xd000,0xdedb,0xd2ec,0xd4b2,0xdedb,0xdf3c,0xdedb,0xdf5d,0xd30c,0xd431,0xdf5d,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd4f3,0xdf1c,0xdedb,0xdeba,0xd105,0xd555,0xdf1c,0xdedb,0xdedb,0xdf5c,0xd26a,0xd4b2,0xdf7d,0xde59,0xd1e8,0xdd96,0xdefb,0xdf1c,0xdedb,0xdf1b,0xd125,0xdd96,0xe77d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd34d,0xd209,0xde9a,0xdedb,0xdeba,0xd2ab,0xd2ab,0xdeba,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xddd7,0xddf7,0xddd7,0xde79,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd36d,0xd26a,0xde59,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd187,0xd208,0xd105,0xd514,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd000,0xddb6,0xdefb,0xdf3c,0xd5b6,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd146,0xdf1c,0xd125,0xd514,0xd514,0xd105,0xdf1c,0xd28b,0xddd7,0xd4b3,0xd2ab,0xdefb,0xd000,0xe5f7,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd002,0xddd7,0xdefb,0xdefb,0xddf8,0xd001,0xde59,0xdf3c,0xd472,0xd28a,0xdeba,0xd023,0xde18,0xd4b2,0xd000,0xd208,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd3f0,0xdf3c,0xde9a,0xd146,0xd000,0xd4d3,0xdf5d,0xde59,0xd023,0xd000,0xd514,0xdf3c,0xddf8,0xd001,0xde9a,0xd32d,0xd451,0xde18,0xd003,0xde9a,0xdf3c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd083,0xdd96,0xdf3c,0xd555,0xd105,0xdeba,0xdedb,0xdf1c,0xd4f3,0xd1c8,0xdedb,0xd125,0xddb6,0xd514,0xd000,0xd000,0xd000,0xddd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd000,0xd30c,0xdefb,0xdefb,0xd30c,0xd000,0xd000,0xd1e8,0xdeba,0xdf3c,0xd38e,0xd36d,0xdefb,0xdedb,0xdf1c,0xd2ec,0xd3f0,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd4f3,0xdf1c,0xdedb,0xdeba,0xd105,0xd555,0xdf1c,0xdedb,0xdedb,0xdefb,0xd24a,0xd472,0xdf1c,0xdedb,0xdefb,0xd1e8,0xd4d3,0xdefb,0xdedb,0xdeba,0xd105,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd000,0xd000,0xd208,0xdedb,0xd2ab,0xd000,0xd000,0xd28a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdd75,0xd000,0xd001,0xd000,0xd534,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd000,0xd000,0xd208,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd000,0xdd75,0xdf3c,0xddb6,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd125,0xdedb,0xd1e8,0xd555,0xd555,0xd1a7,0xdedb,0xdedb,0xdf1c,0xd472,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdeba,0xd208,0xd514,0xdf3c,0xddf8,0xd001,0xde59,0xdf3c,0xd451,0xd229,0xdefb,0xd000,0xddf7,0xd451,0xd28a,0xdeba,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb0c,0xd430,0xdf5d,0xde79,0xd063,0xd535,0xdedb,0xdefb,0xde59,0xd001,0xddd7,0xd3ef,0xd451,0xde59,0xd001,0xde9a,0xd32d,0xd451,0xde18,0xd003,0xde9a,0xdf3c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdedb,0xd28a,0xd4f3,0xddb6,0xd125,0xdefb,0xdf1c,0xdf3c,0xd4b3,0xd146,0xdf1c,0xd002,0xdd96,0xd4f3,0xd000,0xd000,0xd000,0xddb6,0xe75c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd2ec,0xd38e,0xdeba,0xdedb,0xdefb,0xd26a,0xd472,0xd555,0xd125,0xdeba,0xdf1c,0xdf1c,0xd4d3,0xd229,0xdedb,0xdf1c,0xd2ec,0xd3f0,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd514,0xdf5d,0xdf1c,0xdeba,0xd0e5,0xd596,0xdf5d,0xdefb,0xdedb,0xdf3c,0xd26a,0xd4b2,0xdf5d,0xdedb,0xdf1c,0xdefb,0xd38e,0xd3af,0xdf1c,0xdeba,0xd105,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd38e,0xd26a,0xdefb,0xdedb,0xdefb,0xd30c,0xd30c,0xdefb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xde59,0xde59,0xde9a,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd3af,0xd2ab,0xdeba,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd001,0xd0e5,0xd000,0xd4d3,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd000,0xddd7,0xdedb,0xdf1c,0xddb6,0xd063,0xdefb,0xd2ab,0xd4d3,0xddb6,0xd125,0xdedb,0xd1e8,0xd555,0xd534,0xd146,0xdf1c,0xd1c8,0xddb7,0xd4d3,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd249,0xd2ec,0xd4f3,0xde59,0xdf1c,0xddf7,0xd000,0xde38,0xdf1c,0xde59,0xd4d3,0xd2cb,0xd555,0xdefb,0xd3cf,0xd26a,0xdf3c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd000,0xd451,0xdeba,0xd000,0xddb6,0xdf1c,0xdefb,0xde38,0xd000,0xde79,0xd34d,0xd34d,0xde59,0xd000,0xde9a,0xd2ab,0xd410,0xddf7,0xd000,0xde79,0xdf3c,0xd3af,0xd26a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddf8,0xd26a,0xd2cb,0xd4d3,0xde9a,0xd575,0xd000,0xd2ab,0xd249,0xdd96,0xdeba,0xd4f4,0xd2cb,0xd534,0xde9a,0xde7a,0xd471,0xd000,0xd535,0xde9a,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd24a,0xd3cf,0xdf3c,0xdedb,0xdefb,0xd187,0xd4b3,0xddb6,0xd000,0xdeba,0xd3cf,0xd249,0xd3f0,0xddd7,0xdedb,0xdf1c,0xd26a,0xd3af,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd187,0xd0e5,0xd2ab,0xd3cf,0xdeba,0xd0a4,0xd166,0xd28a,0xd430,0xdeba,0xd34d,0xd000,0xd001,0xd4b2,0xde9a,0xd2ec,0xd28a,0xd472,0xde18,0xdefb,0xdeba,0xd000,0xd534,0xdf5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd3f0,0xd472,0xd4f3,0xd36e,0xdedb,0xd3af,0xd4b2,0xd4b2,0xd3af,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd3af,0xd26a,0xdf3c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd555,0xd575,0xd555,0xde38,0xdf1b,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf7,0xd000,0xde59,0xdefb,0xdf1c,0xddb6,0xd000,0xd2ab,0xd000,0xd4d3,0xdd96,0xd000,0xdedb,0xd0c4,0xd4d3,0xdeba,0xd4f4,0xd2cb,0xd514,0xdedb,0xd451,0xd1e8,0xdeba,0xd000,0xe5f7,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd3ef,0xd410,0xde9a,0xdefb,0xdedb,0xde79,0xd492,0xde9a,0xdefb,0xe75d,0xde9a,0xdc92,0xe71c,0xe75d,0xddb7,0xdd75,0xe73c,0xe71c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce79,0xdd76,0xd3f0,0xd4f3,0xdeba,0xd492,0xde38,0xdefb,0xdedb,0xde9a,0xd492,0xde9a,0xd575,0xd575,0xde9a,0xdcd3,0xe6fb,0xdd75,0xddf7,0xdeba,0xdcd3,0xdedb,0xe73c,0xddd7,0xdd55,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd3f0,0xd3f0,0xde79,0xdf3c,0xde18,0xd451,0xd430,0xd3cf,0xddf8,0xe77d,0xdedb,0xdc72,0xdefb,0xe73c,0xe73c,0xdeba,0xdcd3,0xe71c,0xdefb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xd514,0xd576,0xdefb,0xdedb,0xdedb,0xd4f3,0xddd7,0xde38,0xdcb3,0xdefb,0xdd14,0xdc10,0xddb6,0xe77d,0xe6fb,0xe73c,0xdd75,0xddd7,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd4f4,0xd430,0xd3f0,0xd4b3,0xdedb,0xd4d3,0xd430,0xd3ef,0xd4f3,0xdeba,0xd451,0xd451,0xdc51,0xdd75,0xdefb,0xdc92,0xdc30,0xde59,0xe75d,0xdf1c,0xdefb,0xdcf4,0xde38,0xdf1c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdcf3,0xde38,0xde9a,0xdc92,0xe6fb,0xdcd3,0xde79,0xde79,0xdcb2,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdd76,0xd514,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xde79,0xd492,0xde9a,0xdedb,0xdefb,0xde59,0xd451,0xd430,0xd430,0xddf7,0xde38,0xd4b2,0xdedb,0xd4d3,0xddd7,0xdf3c,0xde9a,0xd430,0xdeba,0xdf1c,0xddb6,0xd4f4,0xdeba,0xd492,0xe69a,0x8c92,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xc618,0xb596,0xb5d7,0xb5f7,0xb5b6,0xb596,0xb5d7,0xb5f7,0xb596,0xb5b6,0xd69a,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdf1c,0xdf3c,0xdf1c,0xdedb,0xdf3c,0xdefb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xd6ba,0xb618,0xb5b6,0xb5f7,0xb5d7,0xb5b6,0xb5f7,0xb5b6,0xb596,0xb5d7,0xc659,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdf3c,0xdefb,0xdeba,0xdefb,0xdf1c,0xdf1c,0xdf3c,0xc659,0xb596,0xb5b6,0xb5f7,0xb596,0xb596,0xb596,0xb5b6,0xb5f7,0xb5b6,0xd69a,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdf1c,0xdf1c,0xdedb,0xdefb,0xdedb,0xdf1c,0xdefb,0xdefb,0xd6fb,0xb5b6,0xb5d7,0xb618,0xb5f7,0xb596,0xb5b6,0xb596,0xb5f7,0xb5d7,0xbdf7,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdedb,0xdf3c,0xdf3c,0xdf3c,0xdf1b,0xdedb,0xdf1c,0xdf3c,0xc69a,0xb5d7,0xb5b6,0xb618,0xb618,0xb5d7,0xb5b6,0xb5b6,0xb5b6,0xb5f7,0xce9a,0xe71c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xbdd7,0xb5f7,0xb5d7,0xb5d7,0xb5f7,0xb5b6,0xb5f7,0xb5d7,0xb5d7,0xbe38,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdf1c,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xdf1c,0xdefb,0xdeba,0xdedb,0xdf1c,0xdedb,0xdeba,0xdefb,0xdf1c,0xdedb,0xdf1c,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x2104,0x0000,0x10a2,0x0000,0x0000,0x18c3,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x1082,0x0000,0x0000,0x2104,0x0000,0x10a2,0x0000,0x6b4d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x7bcf,0x0000,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0000,0x1082,0x0000,0x0000,0x18c3,0x0000,0x18e3,0x0000,0x0000,0x5acb,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xef5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xce79,0x1082,0x0000,0x0000,0x0000,0x18e3,0x0000,0x18c3,0x0000,0x0000,0x4a49,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x1082,0x1082,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x630c,0xd6ba,0x0000,0xbdf7,0x8430,0x630c,0xd69a,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x31a6,0x0000,0x1082,0x0000,0x4228,0xd6ba,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xbdd7,0x94b2,0x4a69,0xd6ba,0x0000,0xbdf7,0x8c51,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x7bcf,0x0000,0x0861,0x1082,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x6b6d,0xdedb,0xd69a,0xd69a,0xd69a,0xd69a,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xce59,0x73ae,0x73ae,0xce59,0x0000,0xce79,0x738e,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x1082,0x1082,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x2945,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xc618,0x8430,0x630c,0xce79,0x0000,0xce59,0x8410,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x4a49,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x3186,0xb5b6,0xdefb,0xdefb,0xce79,0x10a2,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x94b2,0x5acb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x7bef,0x8c71,0xc618,0xbdd7,0xbdd7,0xc618,0x7bef,0x9492,0xe71c,0xdedb,0xe71c,0x630c,0x7bef,0xbdd7,0x528a,0xc638,0x6b6d,0x9cd3,0xb596,0x31a6,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdd7,0x4a49,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0xbdf7,0x7bcf,0x8c71,0xb5b6,0x528a,0xc638,0x7bcf,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x6b4d,0xc618,0xbdd7,0xbdf7,0x5acb,0xa534,0xef5d,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xb5b6,0xce59,0xc638,0xc638,0xc638,0xbdd7,0xd69a,0xdedb,0xdefb,0xce59,0x10a2,0x2965,0xad55,0xa534,0x630c,0xc638,0x5acb,0xb596,0x8c71,0x528a,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x9492,0x7bef,0xc618,0xbdd7,0xbdd7,0xc618,0x8430,0x6b6d,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xef5d,0xe71c,0xe73c,0xe71c,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x2965,0x2104,0xa514,0xad75,0x5acb,0xc638,0x630c,0xa534,0x9cd3,0x4208,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x0000,0xbdf7,0xf79e,0xbdd7,0x4a49,0xb5b6,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c71,0x4a49,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc638,0x5acb,0x31a6,0xbdf7,0xef5d,0xbdf7,0x528a,0x4a49,0x2965,0xad55,0xbdf7,0x6b4d,0xdedb,0x738e,0xb5b6,0xb5b6,0x6b6d,0xdedb,0xdedb,0xe71c,0xad55,0x4208,0x5acb,0xdedb,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x39e7,0x94b2,0xf79e,0xe73c,0xe73c,0xf79e,0x73ae,0x6b4d,0xe71c,0xdedb,0xe71c,0x6b4d,0x4208,0x9492,0xa514,0x8430,0x9cf3,0x9492,0x8c71,0x94b2,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xce59,0x9492,0x8430,0x8430,0x8430,0x8410,0x9492,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x7bcf,0x94b2,0x8c71,0x8430,0x94b2,0x8430,0x9cd3,0x528a,0x6b4d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8430,0xef5d,0xdefb,0xe71c,0xad55,0x8410,0xa514,0xdefb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xe71c,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x7bcf,0x8430,0x8430,0x8410,0x8c71,0xdedb,0xdefb,0xdedb,0xdefb,0xce59,0x1082,0x8c71,0x9cd3,0x94b2,0x9cf3,0x9492,0xa514,0x9cf3,0x52aa,0x5acb,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b6d,0xef5d,0xdefb,0xe73c,0xef7d,0xc638,0xad55,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x10a2,0x6b4d,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2124,0x8c51,0x94b2,0x8c71,0xa514,0x8430,0x9cf3,0x94b2,0x52aa,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2945,0x632c,0x7bcf,0x8430,0xad75,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0000,0x8c51,0x8430,0xbdd7,0xbdd7,0x0000,0x9cd3,0x94b2,0xc638,0xad75,0x18c3,0xe71c,0x31a6,0xa534,0xa534,0x2945,0xdedb,0xdedb,0xe71c,0x9492,0x0020,0x9cd3,0x8430,0xd69a,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x5acb,0x6b4d,0xad75,0xa534,0xa534,0xad75,0x4a69,0x73ae,0xe71c,0xdedb,0xe71c,0x6b6d,0x2945,0x8c51,0xad75,0x738e,0xa534,0x9492,0x8430,0xa534,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xe71c,0x73ae,0x632c,0x6b4d,0x632c,0x738e,0xad55,0xd69a,0xdedb,0xdefb,0xc618,0x0000,0x528a,0xce79,0xb596,0x8430,0xe71c,0x6b6d,0xd69a,0x9492,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xef7d,0x7bef,0x4228,0xe71c,0xdedb,0xe71c,0x738e,0x7bcf,0xdefb,0xa534,0xdedb,0xb5b6,0xc618,0xd6ba,0x9cd3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x5aeb,0x6b4d,0x6b4d,0x632c,0x738e,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0861,0xad55,0x5acb,0x5acb,0xad55,0x0000,0xad75,0x5acb,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xd6ba,0xad75,0xa514,0xad55,0xc618,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x10a2,0x8410,0x1082,0x630c,0x630c,0x1082,0x8410,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x10a2,0x5acb,0x6b4d,0x6b4d,0x6b4d,0x632c,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2104,0x9cd3,0x9492,0x8430,0xad75,0x738e,0xad55,0x9492,0x4208,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xbdf7,0xb5b6,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2945,0x528a,0x632c,0x8410,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0841,0xdedb,0x630c,0x8410,0xc618,0x0000,0xa534,0xdedb,0xe73c,0xad55,0x10a2,0xad55,0x2945,0xad75,0xad55,0x39e7,0xdedb,0xdedb,0xe71c,0x8c71,0x5acb,0xdefb,0x0000,0xbdf7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x630c,0x0000,0x31a6,0x31a6,0x31a6,0x31a6,0x0000,0x7bef,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xbdd7,0x39e7,0xce79,0x630c,0x9cd3,0xb5b6,0x1082,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xd69a,0xc638,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xdefb,0xdefb,0xe71c,0xdedb,0xe71c,0xe73c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xd69a,0x8410,0x7bcf,0xdefb,0xdedb,0xe71c,0x73ae,0x6b4d,0xbdd7,0x39c7,0xbdf7,0x6b6d,0x8430,0xb5b6,0x2124,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe73c,0xd6ba,0x5acb,0x3186,0x0000,0x528a,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x6b4d,0xce79,0x632c,0xad55,0xad55,0x632c,0xce79,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xe73c,0xe71c,0xe71c,0xdefb,0x2965,0xad55,0xe71c,0xdedb,0xd69a,0x2965,0x0000,0xa514,0xb596,0x4228,0xce79,0x52aa,0xa534,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x73ae,0x528a,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x10a2,0xbdf7,0xf79e,0xb5b6,0x39e7,0xc618,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x528a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x2104,0xbdf7,0xe73c,0xad75,0x0000,0x0000,0x0000,0xb596,0xad55,0x39e7,0xdefb,0xdedb,0xe71c,0x9492,0x52aa,0xd6ba,0x18c3,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0841,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc5f7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x5acb,0xdedb,0x2965,0xb5b6,0x9cd3,0x52aa,0xd6ba,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc5f7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xe71c,0x8410,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x8c51,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd69a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0x0000,0xb596,0xad55,0x39e7,0xdedb,0xdedb,0xe71c,0x9492,0x52aa,0xd6ba,0x18c3,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x39e7,0x8c51,0xe73c,0xdedb,0xdedb,0xe73c,0x632c,0x632c,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xbdf7,0x528a,0xce79,0x6b6d,0x9cf3,0xbdd7,0x31a6,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xd6ba,0xbdf7,0x4228,0x2965,0x31a6,0x2945,0x528a,0xc618,0xd6ba,0xdedb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x632c,0x0000,0x39c7,0x3186,0x2124,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xc638,0x4a69,0xce59,0x7bcf,0x9492,0xbdf7,0x4208,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0x9cd3,0x10a2,0x31a6,0x31a6,0x18c3,0x8430,0xd69a,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x6b4d,0xce79,0x632c,0xad55,0xad55,0x632c,0xce79,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xbdf7,0xdefb,0xdedb,0xdedb,0xd6ba,0x0000,0xa534,0xe71c,0xdedb,0xd69a,0x2965,0x2104,0xa534,0xb596,0x5acb,0xce79,0x632c,0xad75,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xd6ba,0xa514,0x18c3,0x31a6,0x31a6,0x10a2,0x7bef,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xb596,0xdefb,0xdedb,0xdedb,0xc638,0x4a49,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x0000,0x31a6,0x31a6,0x31a6,0x31a6,0x2124,0x52aa,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0000,0xd69a,0x5acb,0x8430,0xc618,0x0000,0x3186,0x0841,0xa514,0xdefb,0xb5b6,0x0000,0xad55,0xe71c,0xa514,0x0000,0x31a6,0x10a2,0xbdf7,0x94b2,0x4228,0xd6ba,0x0000,0xbdf7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xef5d,0xdedb,0xdedb,0xb596,0xc618,0xdefb,0xdedb,0xdedb,0xdefb,0xbdd7,0xbdd7,0xdefb,0xdedb,0xe71c,0x630c,0x2945,0x5aeb,0x0000,0x6b6d,0x0000,0x4208,0x5acb,0x0000,0x0000,0xbdf7,0xef7d,0xad75,0x0000,0x18c3,0xd69a,0xe71c,0xdedb,0xdedb,0xdedb,0xad55,0xa514,0xa534,0xa514,0xad75,0xdefb,0xdedb,0xdedb,0xdefb,0xbdf7,0x0000,0x5aeb,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x0861,0x630c,0xe71c,0xe73c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xbdd7,0xa534,0xa534,0xa534,0xa514,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0861,0x632c,0x0000,0x6b4d,0x0000,0x3186,0x630c,0x0000,0x0000,0xb5b6,0xef7d,0xbdd7,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xef5d,0x6b4d,0x0000,0x7bcf,0xef5d,0xdedb,0xdedb,0xdefb,0xce59,0x9cf3,0xa534,0xa534,0x9cf3,0xc618,0xe71c,0xdedb,0xdedb,0xe71c,0x8430,0x0000,0x0000,0x738e,0x0000,0x4a69,0x4a69,0x0000,0x738e,0x0000,0xad55,0xef7d,0xc618,0x0000,0x0000,0xc618,0xe73c,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xad75,0xce59,0xdedb,0xdedb,0xce79,0x0000,0x0000,0x4a49,0x52aa,0x0000,0x738e,0x0000,0x4a69,0x4a49,0x31a6,0xdedb,0xef5d,0x7bcf,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdefb,0xce79,0xa514,0xa534,0xa534,0xa514,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xbdd7,0xe73c,0xdedb,0xd6ba,0xad55,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xad75,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe73c,0xdedb,0xdefb,0xc638,0xa534,0xa534,0xa534,0xa534,0xa534,0xa514,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xd69a,0x18c3,0x0000,0xad75,0xef5d,0xce79,0xad55,0xd6ba,0xbdd7,0xc618,0xd69a,0xad55,0xa534,0xa514,0xc618,0xdefb,0xd6ba,0xad55,0xd6ba,0xdefb,0xc638,0xa534,0xa534,0xa514,0xce79,0xc638,0xb596,0xd6ba,0xad55,0xdefb,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xb5b6,0xe71c,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe73c,0xdefb,0xdefb,0xe71c,0xad75,0x8410,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8430,0x9492,0x8c71,0xd6ba,0xc618,0x738e,0x0000,0x1082,0x8c71,0xce79,0xe71c,0xdefb,0xdefb,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xdefb,0xdefb,0xdefb,0xe71c,0xd69a,0x8c71,0x8430,0x8410,0x8430,0x8430,0x8430,0x8430,0x8410,0x8430,0xad75,0xdefb,0xa514,0x39c7,0x0000,0x5acb,0xb596,0xe71c,0xdefb,0xe73c,0xef5d,0xe73c,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xb596,0x8410,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8430,0x9492,0x8c71,0xd69a,0xc638,0x7bcf,0x0000,0x0000,0x8430,0xce59,0xe71c,0xe71c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xd6ba,0x9492,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x8c51,0xad55,0xdefb,0xa534,0x4228,0x0000,0x4a69,0xad75,0xdefb,0xdefb,0xdefb,0xe71c,0xef5d,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xdefb,0xdefb,0xe73c,0xbdd7,0x8c51,0x8c71,0x8430,0x8c71,0x8c51,0x8c51,0x8c71,0x8430,0x8c51,0xce79,0xce79,0x8410,0x0000,0x0000,0x8410,0xc638,0xe71c,0xe71c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe71c,0xdefb,0xe71c,0xdedb,0x94b2,0x8c71,0x8c51,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8410,0xa514,0xdefb,0xad75,0x4a69,0x0000,0x4228,0xa534,0xdedb,0xe71c,0xdefb,0xe71c,0xef5d,0xe73c,0xe73c,0xef5d,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce59,0x8430,0x0000,0x0000,0x7bcf,0xc618,0xe71c,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xb596,0x5acb,0x0000,0x39e7,0xa514,0xdedb,0xe71c,0xe71c,0xef5d,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce79,0x8c71,0x1082,0x0000,0x738e,0xbdf7,0xe73c,0xe73c,0xdefb,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xe71c,0xe73c,0xe71c,0xdefb,0xe71c,0xef5d,0xe73c,0xef5d,0xe71c,0xe71c,0xe73c,0xdefb,0xef5d,0xbdd7,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0xc638,0x630c,0x0000,0x0861,0x0000,0x0000,0x9492,0xc618,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xad75,0x0000,0x0000,0x1082,0x0000,0x2965,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc618,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0x738e,0x0000,0x0861,0x0020,0x0000,0x8430,0xc618,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xc638,0xb5b6,0x0000,0x0000,0x1082,0x0000,0x10a2,0xb5b6,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xc618,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0x7bef,0x0000,0x0841,0x0841,0x0000,0x7bef,0xc618,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xc638,0xbdd7,0x10a2,0x0000,0x1082,0x0000,0x0000,0xb5b6,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0x8c51,0x0000,0x0020,0x0861,0x0000,0x6b6d,0xc638,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0x3186,0x0000,0x1082,0x0000,0x0000,0xad75,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0x94b2,0x0000,0x0000,0x0861,0x0000,0x630c,0xc638,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0x4228,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x10a2,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x10a2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x2124,0x1082,0x0000,0x0000,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x10a2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x5aeb,0xd69a,0x1082,0x0000,0x9492,0xdefb,0xc638,0x0000,0x0000,0x0000,0x7bef,0xc638,0x0000,0x0000,0x0000,0x8430,0xe71c,0xce79,0x18c3,0xad55,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0x9cf3,0x0000,0x2965,0xc638,0xdefb,0x8430,0x0000,0x0000,0x0000,0xc638,0x7bef,0x0000,0x0000,0x0000,0xce79,0x6b6d,0x0000,0x0000,0x0861,0xce79,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xd6ba,0x3186,0x0000,0x8430,0xdedb,0xce79,0x0861,0x0000,0x0000,0x6b6d,0xce79,0x0000,0x0000,0xa514,0xdedb,0xd69a,0xd69a,0x2945,0xa514,0xdefb,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe71c,0xbdf7,0x0000,0x0000,0xb5b6,0xa514,0x0000,0x2965,0xc638,0xdefb,0x8430,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0xd6ba,0x4a49,0x0000,0x7bcf,0xdedb,0xd69a,0x2965,0x0000,0x0000,0x52aa,0xdedb,0xdedb,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9492,0xe71c,0xc638,0x18c3,0x0000,0xad55,0xad55,0x0000,0x10a2,0xbdf7,0xe71c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xce59,0x10a2,0xb5b6,0x8c71,0x0000,0x3186,0xd6ba,0x4a49,0x0000,0x8410,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x0000,0x0000,0xad75,0xd6ba,0xdedb,0xc638,0x0000,0xb5b6,0xe71c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0xce79,0x2945,0xad75,0x9cf3,0x0000,0x0861,0xce59,0xe71c,0x7bef,0x5acb,0xd6ba,0xd6ba,0x4228,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xad55,0x5aeb,0xb5b6,0x39e7,0x9cf3,0xc618,0x630c,0xc618,0x39e7,0x8c51,0xa514,0x7bef,0xc618,0x2945,0xa514,0xa514,0x52aa,0x6b4d,0x0000,0xc618,0xad75,0x8410,0xad75,0x10a2,0x0000,0x0000,0x0000,0x0000,0x10a2,0xad75,0x7bcf,0x8c71,0x9cf3,0x2104,0xd6ba,0x7bef,0x9cd3,0xa514,0x2104,0xb5b6,0x7bcf,0xad55,0x94b2,0x3186,0xb5b6,0x738e,0xb596,0x8430,0x4a49,0xc618,0x632c,0x6b6d,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xb575,0x5aeb,0xb596,0x4a69,0x8c71,0xce79,0x5aeb,0xc618,0x4a69,0x7bef,0xad55,0x73ae,0xc618,0x4228,0x39c7,0xad55,0xd69a,0x6b4d,0x0000,0xbdd7,0xb5b6,0x7bcf,0xb596,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x8c71,0x5acb,0x630c,0x1082,0xad75,0x9492,0x31a6,0x0000,0x31a6,0xd6ba,0x8c71,0x9cd3,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xb596,0x5aeb,0xad75,0x5aeb,0x7bef,0xd69a,0x5acb,0xbdf7,0x5acb,0x7bcf,0xb5b6,0x52aa,0x738e,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0x9cd3,0x5acb,0x632c,0x0000,0xa534,0x8c71,0x8c71,0xa534,0x0861,0xd69a,0x8c51,0x9492,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdedb,0x18c3,0xc638,0x9492,0x4a69,0xb596,0x5aeb,0xad75,0x5aeb,0x8410,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xa534,0x0000,0x0000,0x0000,0xc638,0xad55,0x52aa,0x632c,0x0000,0xce59,0xa514,0x8c51,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2965,0xbdd7,0x9cf3,0x4228,0xc618,0x632c,0x6b6d,0x3186,0x73ae,0xdedb,0x5aeb,0xbdd7,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xdedb,0x9cd3,0xe71c,0x52aa,0x94b2,0xd69a,0x9492,0x9492,0x0841,0xb596,0xad75,0x0000,0x9492,0x18e3,0x7bcf,0xa534,0x7bcf,0x0000,0x0000,0xc638,0x8430,0x630c,0xdedb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xad75,0xbdf7,0xc618,0x10a2,0xd69a,0xad75,0x94b2,0x6b6d,0x39e7,0xe71c,0x4208,0x632c,0x6b6d,0x528a,0xdefb,0x2124,0x738e,0x632c,0x39c7,0x9cf3,0x9cf3,0x18c3,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x8c51,0xdefb,0x94b2,0xe71c,0x6b4d,0x8430,0xd6ba,0x9492,0x94b2,0x18e3,0xa534,0xbdf7,0x0000,0x9492,0x39e7,0x0000,0x8410,0xce59,0x0000,0x0000,0xbdf7,0x94b2,0x4a69,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xa514,0x632c,0x0000,0x18e3,0xdedb,0x6b4d,0x4a69,0x8430,0x2124,0xd6ba,0x4228,0x9cf3,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xe71c,0x94b2,0xdefb,0x7bcf,0x73ae,0xdedb,0x94b2,0x94b2,0x39e7,0x5aeb,0xa514,0x8c71,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xa534,0x738e,0x0000,0x0000,0xd6ba,0x6b6d,0x6b6d,0xd69a,0x0020,0xce79,0xb596,0x9492,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xbdf7,0x8c51,0x6b4d,0xe71c,0x94b2,0xdefb,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0xbdf7,0xc638,0x6b6d,0x0000,0x0000,0xce79,0x738e,0x73ae,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2965,0xb5b6,0x9cf3,0x2945,0x9cf3,0x9cf3,0x18c3,0x0000,0x7bcf,0xdedb,0x9cd3,0x94b2,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xdefb,0xbdf7,0xdefb,0x528a,0x9492,0xdefb,0xb596,0x5aeb,0x0000,0xb596,0xad75,0x0000,0x630c,0x2124,0x0000,0x738e,0xb5b6,0x6b4d,0x0000,0xc618,0x8c51,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce59,0xce59,0xd69a,0xbdd7,0x18c3,0xd69a,0xce79,0x9492,0x2965,0x4208,0xdefb,0x4a69,0x39e7,0x4208,0x52aa,0xdefb,0x39c7,0x4a49,0x4a69,0x0000,0x0000,0xb5b6,0x9492,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdefb,0xbdf7,0xdefb,0x630c,0x8410,0xdefb,0xb5b6,0x632c,0x0000,0xa534,0xbdd7,0x0000,0x630c,0x2945,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdd7,0x9cd3,0x52aa,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8c51,0xad75,0x5aeb,0x10a2,0xd6ba,0x630c,0x9492,0xce79,0x10a2,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdefb,0xbdf7,0xdefb,0x738e,0x738e,0xdefb,0xb5b6,0x738e,0x3186,0x0000,0x39e7,0xbdd7,0x7bef,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x7bef,0xb596,0x632c,0x0000,0xce59,0x9cf3,0x9cf3,0xc638,0x0020,0xce59,0xd69a,0x94b2,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x738e,0xce79,0x8c51,0x630c,0xdefb,0xbdf7,0xdefb,0x738e,0x7bcf,0xce59,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0xbdf7,0xd6ba,0x9492,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2104,0xb5b6,0xa534,0x0000,0x0000,0xb5b6,0x9492,0x2965,0x6b6d,0xdefb,0xc618,0x73ae,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xbdf7,0x0000,0xd6ba,0x52aa,0x9cf3,0xb596,0x0861,0xe71c,0x4a49,0x9cf3,0xa534,0x5aeb,0xd69a,0x4208,0x2945,0x2104,0x6b6d,0xd69a,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x5aeb,0x8430,0xc618,0x18c3,0xd6ba,0x4228,0x9cf3,0xbdf7,0x2124,0xce59,0x5acb,0xad75,0xa534,0x39c7,0xce59,0x4a69,0xb5b6,0x9cf3,0x0000,0x4208,0x1082,0xc618,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xdefb,0x5aeb,0x8c71,0xb596,0x528a,0xd69a,0x52aa,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdd7,0x9cd3,0x52aa,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x0861,0x8c51,0xc638,0x0000,0xc618,0x73ae,0x8c71,0xb5b6,0x18e3,0xd6ba,0x52aa,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce79,0x2945,0xce79,0x73ae,0x0000,0x31a6,0x39e7,0xd69a,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x18c3,0x7bcf,0xce79,0x0841,0xb596,0xdefb,0xe73c,0xbdf7,0x0841,0xd69a,0x5aeb,0x8c51,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xd69a,0xe71c,0xdedb,0x73ae,0x6b4d,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce79,0x39c7,0x4208,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad75,0x2124,0x39e7,0x0000,0xc638,0x9cd3,0x0000,0x39c7,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x528a,0xbdf7,0xa514,0x0000,0x4208,0x1082,0xc618,0x8430,0x6b4d,0xd69a,0x0000,0xd69a,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xc638,0x18c3,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdedb,0x5acb,0x0000,0x8c51,0xce79,0x10a2,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xc638,0x8c71,0x6b4d,0xd6ba,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x6b4d,0x8c71,0xc638,0x18c3,0xdedb,0x52aa,0x9cf3,0xbdf7,0x0000,0x1082,0xce79,0x8c51,0x0000,0x0000,0x2945,0xd69a,0x7bef,0x0000,0x630c,0xdefb,0xdefb,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0020,0xd6ba,0x6b4d,0x8c71,0xc638,0x18c3,0xdedb,0x6b4d,0x0000,0x7bef,0xd69a,0x2945,0x0000,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdf7,0x9cf3,0x52aa,0xdedb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xdedb,0x52aa,0x9cf3,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x7bef,0x738e,0xe73c,0xd6ba,0x4a69,0x0000,0x8c71,0xe73c,0xd69a,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xb596,0x0000,0x0000,0x0000,0xad55,0xef5d,0xc618,0x0841,0xd6ba,0x6b4d,0x8c71,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xdedb,0x738e,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x7bef,0x738e,0xe73c,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xce79,0x18c3,0xbdd7,0xe71c,0xdedb,0xce59,0x0020,0xce79,0x7bef,0x7bef,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xdedb,0xe73c,0x9492,0x4a69,0xdefb,0xdefb,0x6b4d,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x4a69,0x0841,0x52aa,0x2104,0x39e7,0x4a49,0x1082,0x5acb,0x2124,0x0000,0x31a6,0x52aa,0x0000,0x0000,0x4a49,0x630c,0x4a69,0x0000,0x0000,0x528a,0x39c7,0x2945,0x52aa,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x52aa,0x2945,0x39c7,0x4a69,0x0841,0x52aa,0x2104,0x39e7,0x4a69,0x0000,0x0000,0x52aa,0x31a6,0x0000,0x0000,0x0000,0x5acb,0x2965,0x0000,0x2945,0x5aeb,0x5aeb,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x31a6,0x528a,0x0000,0x52aa,0x2945,0x39c7,0x4a69,0x0841,0x52aa,0x2945,0x0000,0x2965,0x5acb,0x0000,0x0000,0x0000,0x31a6,0x528a,0x0000,0x0000,0x4a69,0x39e7,0x2104,0x52aa,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x630c,0x4228,0x0000,0x0000,0x0000,0x4a69,0x4208,0x0000,0x10a2,0x52aa,0x2104,0x39e7,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x52aa,0x0000,0x528a,0x3186,0x2965,0x5aeb,0x5acb,0x1082,0x0000,0x39e7,0x630c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x630c,0x4a49,0x0000,0x0000,0x0000,0x4208,0x5aeb,0x4a69,0x0000,0x52aa,0x2945,0x39c7,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x2124,0x0000,0x3186,0x52aa,0x0000,0x528a,0x3186,0x2965,0x5aeb,0x5acb,0x5aeb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x5aeb,0x5aeb,0x5acb,0x0841,0x4a49,0x5aeb,0x5aeb,0x52aa,0x0000,0x528a,0x3186,0x3186,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x5acb,0x5aeb,0x5aeb,0x39c7,0x2104,0x5aeb,0x5aeb,0x2124,0x0000,0x3186,0x52aa,0x0000,0x528a,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x10a2,0x0861,0x0000,0x0841,0x10a2,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0020,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0861,0x10a2,0x10a2,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x10a2,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x0841,0x0000,0x0841,0x10a2,0x10a2,0x10a2,0x0841,0x0861,0x10a2,0x0000,0x10a2,0x0841,0x0861,0x10a2,0x10a2,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0861,0x0861,0x10a2,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x10a2,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x1082,0x10a2,0x10a2,0x10a2,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0841,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x0000,0x0000,0xbdf7,0x8c51,0x0000,0x4208,0xc638,0xdedb,0x738e,0x0000,0x528a,0xce59,0x2945,0xad55,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0xd69a,0x2945,0x0000,0x8c71,0xb5b6,0x0000,0x0000,0x0000,0x8c71,0xd6ba,0xd69a,0xd69a,0x528a,0x0000,0x7bcf,0xc638,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0xa534,0xa534,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x2965,0xc618,0xdefb,0x8410,0x0000,0x4208,0xce79,0xce59,0xd6ba,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xd69a,0x4208,0x0000,0x7bef,0xbdf7,0x0000,0x0000,0x0861,0x0000,0x528a,0xd6ba,0xd6ba,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x8c71,0xdefb,0xc618,0x18c3,0x0000,0xa534,0xa534,0x0000,0x18c3,0xbdd7,0xdefb,0x8c71,0x0000,0x0000,0x0000,0xbdf7,0x8c51,0x0000,0x4208,0xce59,0x528a,0x0000,0x7bef,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xce79,0xd6ba,0x528a,0x0000,0x6b4d,0xd69a,0xd69a,0xdedb,0x6b6d,0x738e,0xbdd7,0x0020,0xc618,0x5aeb,0x7bef,0xdedb,0xce59,0xd6ba,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0x0000,0x9cd3,0xb596,0x0000,0x0000,0xbdf7,0x738e,0x738e,0xbdf7,0x0000,0x0000,0xa534,0xe71c,0xb596,0x10a2,0xc618,0xd69a,0xdedb,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xdedb,0xbdd7,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0xad55,0xd69a,0xd6ba,0xc618,0x18c3,0x0000,0xa534,0xa534,0x0000,0x18c3,0xc618,0x630c,0x8410,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0xa534,0x8c51,0x9cf3,0xa514,0x1082,0xad55,0x8430,0x9cf3,0x8c71,0x31a6,0xdefb,0x8410,0xa514,0x8c51,0x4a69,0xe73c,0x0000,0xbdf7,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xad75,0x7bcf,0xbdd7,0x528a,0x9492,0xce59,0x0000,0x0000,0x0000,0xa534,0xce59,0x630c,0x7bcf,0x1082,0x8430,0x9cf3,0x73ae,0xad75,0x10a2,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0x9492,0x94b2,0xad55,0x0000,0xa534,0x8c71,0x94b2,0x94b2,0x2124,0xdedb,0x94b2,0x9cd3,0x8c71,0x0000,0x73ae,0xd6ba,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xad75,0x7bcf,0xbdb6,0x630c,0x8410,0xce79,0x0000,0x0000,0x0000,0x7bef,0xb596,0x632c,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0x9cd3,0x6b4d,0x738e,0x0000,0x9cf3,0x9492,0x94b2,0xad55,0x0861,0xd69a,0x94b2,0x9492,0xa514,0x1082,0xad55,0x8430,0x9cf3,0x8c71,0x39c7,0xdefb,0x5acb,0x0000,0x8c51,0xd69a,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0xad55,0x632c,0x6b6d,0xdedb,0x6b6d,0x7bcf,0x2945,0x8c71,0xd6ba,0x0000,0xdefb,0x7bef,0x2945,0x9cf3,0xdedb,0x8430,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x18c3,0x94b2,0x8c71,0x8410,0xa534,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0000,0xb596,0x8c51,0x6b6d,0x632c,0x2945,0xdedb,0x9492,0x6b6d,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xbdf7,0x738e,0xbdd7,0x18e3,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x0841,0xc618,0xad75,0x632c,0x738e,0x0000,0xa514,0x8430,0x8430,0x9cf3,0x1082,0xd6ba,0x5acb,0x8c71,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b4d,0x528a,0x8c51,0x2945,0xdefb,0x4a49,0x9cd3,0xbdf7,0x2945,0xd6ba,0x9cd3,0x9cf3,0x7bcf,0x2945,0x9cd3,0x8c71,0x9cf3,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xd69a,0x0000,0x94b2,0x4208,0x9492,0xc638,0x0000,0x0000,0x0000,0x9cf3,0xce79,0x73ae,0x0000,0x0000,0xb596,0xce59,0x94b2,0xdefb,0x3186,0xb596,0xc618,0x8c51,0x94b2,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bef,0x39e7,0x9492,0x1082,0xdedb,0x630c,0x8c51,0xce59,0x18c3,0xd6ba,0x4208,0x9cf3,0xc618,0x0000,0x0000,0xce59,0x8410,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0x8c71,0x528a,0x8410,0xce79,0x0000,0x0000,0x0000,0x6b6d,0xad55,0x8410,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xa514,0x630c,0x0000,0x0000,0xd6ba,0x7bef,0x39e7,0x9492,0x1082,0xce79,0xad55,0x9492,0x8410,0x2945,0xdefb,0x4a49,0x9cd3,0xbdf7,0x2945,0xdedb,0x5acb,0x0000,0x8c51,0xce79,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xc638,0x9492,0x630c,0xdedb,0x8c71,0x1082,0x0000,0x52aa,0x9cd3,0x94b2,0x94b2,0x4a69,0x0000,0x5aeb,0xd6ba,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xbdf7,0x8c51,0x9cf3,0x0000,0xc638,0xbdd7,0xa534,0xd6ba,0x0841,0xce59,0x7bcf,0x7bcf,0xce59,0x0000,0x9cd3,0x9cf3,0x4a69,0x0000,0x31a6,0xd69a,0xad55,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad55,0xc638,0x8430,0x9cd3,0x0000,0xb596,0xc618,0x8c51,0x94b2,0x0000,0xbdf7,0xbdf7,0x630c,0x0000,0x0000,0xce79,0xb596,0xb596,0xce79,0x0000,0xce79,0xb596,0x9492,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x73ae,0x1082,0x4228,0x2965,0xdedb,0x528a,0x9cd3,0xbdd7,0x2945,0xd6ba,0xd69a,0x632c,0x0000,0x0000,0x0000,0xdedb,0x738e,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0000,0x4a69,0x0000,0x94b2,0xc618,0x0000,0x0000,0x0000,0x9cd3,0xdefb,0xb596,0x0000,0x0000,0xa534,0xdedb,0xce59,0xd6ba,0x2945,0xad75,0xdefb,0xad75,0x4208,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8430,0x0000,0x4a69,0x18c3,0xd6ba,0x632c,0x8c51,0xc638,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x0000,0x4a49,0x0020,0x8430,0xce59,0x0000,0x0000,0x0020,0x0000,0x4228,0xc618,0x738e,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8430,0xb5b6,0x52aa,0x0000,0xce79,0x8430,0x0000,0x4a69,0x10a2,0xce59,0xd6ba,0x94b2,0x2124,0x2965,0xdedb,0x528a,0x9cd3,0xbdd7,0x2965,0xdedb,0x528a,0x0000,0x8c51,0xce59,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x630c,0xdefb,0xc638,0x4228,0x0000,0x2104,0x738e,0xc638,0x632c,0x18e3,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdefb,0xa514,0x0000,0x0000,0xbdd7,0xd69a,0xce79,0xce59,0x0020,0xce59,0x73ae,0x73ae,0xce79,0x0000,0x0000,0x9cf3,0xad55,0x4228,0x2965,0xd69a,0xd69a,0x7bcf,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xdefb,0xb596,0x528a,0x0000,0xb596,0xdefb,0xad75,0x4208,0x0000,0xbdd7,0xdedb,0x9cd3,0x0000,0x0000,0xc618,0xd69a,0xd69a,0xc618,0x0020,0xce59,0xd6ba,0x94b2,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce59,0x6b6d,0x9492,0xbdf7,0x10a2,0xce79,0x630c,0x9cd3,0xad75,0x3186,0xdedb,0x4a69,0x0000,0x0841,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xc638,0x3186,0xd69a,0x632c,0x8c51,0xc638,0x18e3,0x3186,0x0000,0xa514,0xbdf7,0x0000,0x3186,0x0000,0xb596,0xa534,0x3186,0xdedb,0x2965,0xb5b6,0x94b2,0x4a69,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x7bef,0x8410,0xc638,0x0020,0xce59,0x6b6d,0x8c71,0xbdd7,0x18e3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0x3186,0xce59,0x7bcf,0x7bcf,0xce79,0x2945,0x3186,0x10a2,0x18e3,0x2124,0x39c7,0xd6ba,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x0000,0x7bcf,0xce79,0x0841,0xc618,0x7bef,0x8410,0xc638,0x0841,0xd69a,0x5aeb,0x8c51,0xc638,0x10a2,0xce79,0x630c,0x9cd3,0xad75,0x2965,0xdedb,0x632c,0x0000,0x8430,0xce79,0x2945,0x0841,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x2124,0x2945,0x0000,0x8c51,0xce79,0x0000,0xd6ba,0x7bef,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0xc638,0x8430,0x630c,0xd69a,0x0841,0xce59,0x8410,0x8410,0xce59,0x0000,0x2965,0x0000,0x94b2,0xbdf7,0x18c3,0xd6ba,0x6b6d,0x0000,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xad55,0x4228,0xd6ba,0x2965,0xb5b6,0x94b2,0x4a69,0xdefb,0x18e3,0xc618,0x9cd3,0x0000,0x2965,0x0000,0xce79,0x73ae,0x73ae,0xce59,0x0841,0xd69a,0x5aeb,0x8c51,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x18c3,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x9492,0xe73c,0xd6ba,0xdefb,0x4a69,0x94b2,0xe73c,0xd6ba,0xdedb,0x39c7,0xad75,0xad75,0x4208,0xdefb,0x2965,0xbdd7,0x9cf3,0x52aa,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xdefb,0x52aa,0x9cf3,0xbdf7,0x0000,0x0000,0xd69a,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x632c,0x0000,0x8410,0xe73c,0xd6ba,0xdefb,0x5aeb,0x8410,0xe71c,0xce79,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xe73c,0xb596,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x10a2,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0xe71c,0x6b6d,0x73ae,0xef5d,0xd69a,0x4208,0x0000,0x0000,0x6b6d,0xdefb,0x18c3,0xc638,0x8c71,0x632c,0xe73c,0xd6ba,0xdefb,0x6b6d,0x7bef,0xce79,0x0020,0xd6ba,0x7bef,0x0000,0x6b6d,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0xce59,0x8c71,0x6b4d,0xd6ba,0x0841,0xc638,0xdefb,0xdefb,0xc638,0x0000,0xc638,0xe71c,0x9cf3,0x0000,0x3186,0xd6ba,0xdedb,0xdefb,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xc618,0x2945,0x0000,0xbdf7,0x9cf3,0x52aa,0xdefb,0x18c3,0xbdd7,0xe71c,0xdedb,0xc638,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0841,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x4a49,0x2965,0x0000,0x0000,0x0000,0x4228,0x2124,0x0000,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x52aa,0x0000,0x0000,0x18e3,0x52aa,0x52aa,0x52aa,0x0000,0x18e3,0x52aa,0x52aa,0x52aa,0x0000,0x3186,0x3186,0x0000,0x4a69,0x0000,0x39c7,0x2945,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x4228,0x31a6,0x0000,0x0000,0x0000,0x4208,0x3186,0x0000,0x0000,0x4a69,0x0000,0x2945,0x39e7,0x0000,0x0000,0x4228,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0841,0x52aa,0x0000,0x0000,0x1082,0x52aa,0x52aa,0x5acb,0x0000,0x18c3,0x5acb,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x632c,0x31a6,0x0000,0x0000,0x0000,0x39c7,0x39c7,0x0000,0x0000,0x4a49,0x0000,0x18e3,0x4208,0x0000,0x0000,0x4228,0x2124,0x0000,0x0000,0x4a69,0x5acb,0x0000,0x0000,0x52aa,0x528a,0x18c3,0x0000,0x0000,0x3186,0x630c,0x0000,0x4208,0x18e3,0x0000,0x52aa,0x52aa,0x5acb,0x0000,0x0020,0x4228,0x0000,0x4a49,0x0020,0x0000,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x52aa,0x39e7,0x0000,0x0000,0x0000,0x4208,0x18e3,0x0000,0x4a49,0x0000,0x4208,0x52aa,0x52aa,0x4208,0x0000,0x4a49,0x5aeb,0x2945,0x0000,0x0000,0x4a49,0x52aa,0x5acb,0x39c7,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x4a69,0x632c,0x4228,0x0000,0x0000,0x39e7,0x2945,0x0000,0x4a69,0x0000,0x39c7,0x52aa,0x52aa,0x4a49,0x0000,0x4228,0x0841,0x0841,0x4228,0x0000,0x4a49,0x0000,0x18e3,0x4208,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x31a6,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x4a69,0x0000,0x0861,0x0000,0x0000,0x6b6d,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c71,0x0000,0x0000,0x0861,0x0000,0x18e3,0x9492,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0xa514,0x5acb,0x0000,0x0861,0x0020,0x0000,0x632c,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x94b2,0x9492,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9d14,0x9d34,0x9d14,0x9cd3,0x9492,0x0000,0x0000,0x0861,0x0000,0x0000,0x8c71,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x9492,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9d34,0xa534,0x632c,0x0000,0x0841,0x0861,0x0000,0x52aa,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x94b2,0x9492,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x94d3,0x94d3,0x94d3,0x94d3,0x8c71,0x0000,0x0000,0x1082,0x0000,0x0000,0x9492,0x94b2,0x94b2,0x9cd3,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x9492,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9d34,0xa534,0x6b6d,0x0000,0x0020,0x1082,0x0000,0x528a,0xa514,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x9492,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x94d3,0x94b2,0x9492,0x9cd3,0x9cf3,0x2104,0x0000,0x0861,0x0000,0x0000,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x7bcf,0x0000,0x0000,0x1082,0x0000,0x39e7,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x9492,0x94b2,0x94b2,0x9492,0x9cd3,0x9492,0x9cf3,0x9514,0x94d3,0x9cd3,0x9cf3,0x31a6,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9cd3,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xad55,0x4a49,0x0000,0x0861,0x630c,0xc638,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xd6ba,0x7bcf,0x2945,0x0000,0x39c7,0x9492,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xef5d,0xb596,0x4a69,0x0000,0x0000,0x5acb,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xe575,0xe679,0xe75d,0xdefb,0x8410,0x2965,0x0000,0x31a6,0x8c51,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xeefb,0xbdf7,0x528a,0x0000,0x0000,0x528a,0xbdd7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xe6ba,0xe6ba,0xe5d7,0xe71c,0x8c51,0x31a6,0x0000,0x2965,0x8410,0xdefb,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe5d7,0xeeba,0xbe18,0x5acb,0x0000,0x0000,0x4a69,0xb596,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe5f7,0xe679,0xe75d,0xe71c,0xe73c,0x9492,0x39c7,0x0000,0x2945,0x7bcf,0xd6ba,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xc638,0x630c,0x0861,0x0000,0x4a49,0xad55,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe75d,0xe638,0xe575,0xe618,0xe75d,0xe73c,0x9cd3,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xad75,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xde9a,0xdedb,0xdedb,0xe71c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xdeba,0xdedb,0xe73c,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd26a,0xd000,0xd430,0xdeba,0xdedb,0xe73c,0x6b4d,0x0000,0x73ae,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd000,0xd534,0xe77d,0xc618,0x0000,0x0000,0xc618,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd26a,0xd4f4,0xd4f4,0xd26a,0xdedb,0xef5d,0x73ae,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xd208,0xd514,0xe75d,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2cb,0xd430,0xdeba,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd38e,0xd000,0xd30c,0xde79,0xdeba,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd24a,0xd472,0xdf1c,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd5b6,0xd023,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xdf1c,0xd472,0xd24a,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd0c4,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd38e,0xdf1c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd001,0xddf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd146,0xd555,0xdf3c,0xd596,0xd043,0xde9a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xde9a,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd3cf,0xde79,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd26a,0xddb6,0xdeba,0xdf1c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd32d,0xd000,0xd000,0xd34d,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdd76,0xd208,0xde59,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd514,0xd229,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd166,0xd000,0xd000,0xd4d3,0xdefb,0xde18,0xdeba,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdf1b,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xdefb,0xdefb,0xdedb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd451,0xd555,0xdefb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde59,0xd3af,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddb6,0xde18,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde38,0xd000,0xde59,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddf7,0xd209,0xd209,0xddf7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b2,0xd38e,0xde9a,0xdf1c,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd575,0xd3ae,0xd555,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xd38e,0xde18,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd555,0xd0a4,0xd3f0,0xde59,0xdf5c,0xdf3c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdf1c,0xdd75,0xd492,0xd596,0xdeba,0xd514,0xde9a,0xddb6,0xddb6,0xde9a,0xd514,0xdeba,0xddb6,0xd4d3,0xd4b3,0xd4f4,0xdeba,0xd575,0xd4d3,0xd4f3,0xd514,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd431,0xd555,0xdefb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf8,0xd431,0xd3cf,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdd96,0xddd7,0xdefb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd472,0xd410,0xde79,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdd96,0xd451,0xd451,0xdd96,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdeba,0xd3ae,0xd451,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdd75,0xd3af,0xd4d3,0xdf3c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd492,0xd36e,0xde18,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd514,0xd000,0xd3f0,0xd535,0xd4b3,0xd4f4,0xdeba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdeba,0xde18,0xd34d,0xd043,0xd431,0xde79,0xd000,0xde59,0xd36e,0xd36e,0xde59,0xd000,0xde9a,0xd34d,0xd000,0xd1e8,0xd26a,0xdeba,0xd3cf,0xd000,0xd000,0xd2ec,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4b3,0xd34d,0xdf3c,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1b,0xd38e,0xd451,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd514,0xd2cb,0xdf3c,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ab,0xddb6,0xddb6,0xd2ab,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd2cb,0xd514,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd514,0xdf5d,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd209,0xdedb,0xdefb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd1a7,0xd28a,0xd229,0xd1c8,0xd1a7,0xd26a,0xde9a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xde9a,0xd063,0xddb6,0xdf1c,0xdefb,0xde59,0xd001,0xde38,0xd3ae,0xd3cf,0xde59,0xd001,0xde9a,0xd32d,0xd3f0,0xdf1c,0xdefb,0xdedb,0xdf3c,0xd410,0xd2ec,0xdf3c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xde9a,0xd26a,0xd4d3,0xdf7d,0xde59,0xd003,0xd063,0xd000,0xd431,0xde59,0xd001,0xde9a,0xd3af,0xd000,0xd34d,0xdefb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdf3c,0xde59,0xd3f0,0xd451,0xde79,0xd002,0xd514,0xd2cb,0xd3ef,0xde59,0xd001,0xde9a,0xd34d,0xd2cb,0xde18,0xdedb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc618,0x528a,0x5acb,0x5aeb,0x5acb,0x630c,0x6b6d,0x5acb,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x8410,0x9cf3,0xef5d,0xdedb,0xdedb,0xef5d,0x9cf3,0x8410,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdefb,0xe71c,0x738e,0x52aa,0x5aeb,0x52aa,0x6b4d,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0x94b2,0x94b2,0xdefb,0xdedb,0xdedb,0xdefb,0xad55,0x8430,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xce79,0x738e,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0xd6ba,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0x9cf3,0x9492,0xe73c,0xdedb,0xdedb,0xdefb,0xb596,0x7bef,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x738e,0xce59,0xe71c,0xd6ba,0xdedb,0xe73c,0x8410,0xb596,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xe71c,0xe71c,0xdedb,0xdefb,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xdeba,0xd472,0xd492,0xd430,0xd535,0xde79,0xd000,0xde9a,0xd3af,0xd36e,0xde59,0xd000,0xde9a,0xd2cb,0xd3f0,0xdf5d,0xdedb,0xdedb,0xdf1c,0xd3cf,0xd28a,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc638,0x8410,0x8430,0x8430,0x9492,0x6b4d,0x0000,0x8410,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xa514,0x7bcf,0xa534,0xe71c,0xe71c,0xa534,0x7bcf,0xa514,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x94b2,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b4d,0xe71c,0xdedb,0xdedb,0xe71c,0x8c51,0x39e7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0x7bef,0x94b2,0x9492,0x9492,0x9492,0x8430,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x9cf3,0xdefb,0xdedb,0xe71c,0x9cd3,0x2124,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0x632c,0xc618,0xef5d,0xd6ba,0x8c71,0x0000,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xd69a,0x8c51,0x8430,0xce59,0xc618,0x8c51,0x9492,0xdedb,0xdedb,0xe71c,0xc638,0x9492,0xdefb,0xdedb,0xe71c,0xbdf7,0x94b2,0xe71c,0xdefb,0xad75,0x8c51,0x8c51,0x9492,0xd6ba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xde9a,0xd2ec,0xd187,0xd575,0xdf5d,0xde79,0xd32d,0xde79,0xd4b3,0xd4b3,0xde79,0xd32d,0xde9a,0xd471,0xd4d3,0xdf1c,0xdedb,0xdedb,0xdf1c,0xd4d3,0xd431,0xdefb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xef5d,0xd6ba,0x9cf3,0x73ae,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xef5d,0xad55,0x630c,0xbdd7,0xbdd7,0x630c,0xad55,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x5acb,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0861,0xa534,0xc618,0xbdf7,0xbdf7,0xbdf7,0x5aeb,0xb5b6,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x632c,0xb575,0xd6ba,0xe73c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2965,0x3186,0x8c71,0xbdd7,0xad55,0x5acb,0x0000,0xa514,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad55,0xd6ba,0xa514,0x5acb,0x4228,0xc618,0x9cd3,0x0000,0x632c,0xad55,0xd6ba,0xce79,0x94b2,0x630c,0xb596,0xd6ba,0xce59,0x8c71,0x630c,0xb5b6,0xdefb,0x630c,0x0000,0x5aeb,0x630c,0xd69a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0xdf1c,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdefb,0xdefb,0xdedb,0xdefb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x7bcf,0x6b6d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x18c3,0x1082,0x2104,0x18e3,0x18c3,0x2945,0xc638,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x6b6d,0xdedb,0x2104,0xb5b6,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x10a2,0xc638,0x9cf3,0x0000,0x4a69,0xdefb,0x4228,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad75,0xad55,0x4228,0xd6ba,0xdefb,0xe73c,0x9492,0x528a,0xd69a,0x2945,0xc618,0x8430,0x5aeb,0xce79,0x0000,0xce59,0x738e,0x73ae,0xd69a,0x2104,0xd69a,0x6b4d,0x7bef,0xe71c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x52aa,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b6d,0xe73c,0xdedb,0xdedb,0xe73c,0x9492,0x4228,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0841,0xbdd7,0xd6ba,0xd69a,0xd6ba,0xd69a,0x39c7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xd6ba,0x39e7,0xad75,0xad75,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xd69a,0xd6ba,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdd7,0x10a2,0xce79,0xef5d,0x9cd3,0x0000,0x31a6,0xce59,0xe71c,0x8c71,0x0000,0x0861,0x0000,0xce79,0x7bcf,0x738e,0xe71c,0xd6ba,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xdefb,0x632c,0xad55,0xdedb,0xe73c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xef5d,0xa534,0x5aeb,0xc618,0xc618,0x5aeb,0xa534,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x4a69,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xce79,0x8c71,0x632c,0xe73c,0xef5d,0x7bef,0x7bcf,0xce59,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xef5d,0xe73c,0xe73c,0xe71c,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xc638,0x7bef,0x0000,0x528a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xe71c,0xdedb,0xdedb,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x6b4d,0x4a49,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa514,0xe73c,0xe71c,0xc618,0x4a69,0xbdf7,0x9cf3,0x39e7,0xc618,0xdedb,0xe73c,0x8430,0x52aa,0xb596,0x0000,0xce59,0x6b6d,0x73ae,0xdedb,0x4a69,0xd69a,0x6b4d,0x738e,0xd6ba,0xe71c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc638,0x6b6d,0x0000,0x6b4d,0x8430,0x7bcf,0x7bcf,0x7bcf,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x9cd3,0x7bcf,0xad75,0xe71c,0xe71c,0xad75,0x7bcf,0x9cd3,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x9cf3,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x9492,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0xc638,0x8c51,0x7bcf,0x7bcf,0x8430,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0x632c,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x94b2,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x528a,0xe71c,0xdedb,0xe71c,0xbdf7,0x5acb,0x31a6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xdedb,0x2104,0x9cd3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x0000,0x0000,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad75,0xc618,0x738e,0x8430,0x8c71,0xd69a,0x8c71,0x4208,0xe73c,0xdedb,0xe71c,0x7bcf,0x630c,0xd6ba,0x0000,0xc618,0xbdf7,0x8c51,0x7bcf,0x9cd3,0xdedb,0x630c,0x31a6,0x8430,0x8410,0xd69a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdefb,0xc618,0x630c,0x7bcf,0x6b6d,0x632c,0x6b4d,0x632c,0x632c,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdefb,0x8c51,0xa514,0xef5d,0xdedb,0xdedb,0xef5d,0xa514,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xb596,0x0000,0x0000,0xc638,0xe71c,0xdedb,0xdefb,0xe71c,0x7bef,0x630c,0x6b4d,0x632c,0x73ae,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xe71c,0xd69a,0x632c,0x5acb,0xc618,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xce79,0x7bef,0x6b4d,0x632c,0x6b4d,0x632c,0x6b6d,0xd6ba,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdefb,0xa534,0x94b2,0xdefb,0xdedb,0xdedb,0xe73c,0xbdf7,0x8430,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xd69a,0x7bcf,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0x8430,0xb5b6,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x8410,0x6b4d,0xb596,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x18c3,0x0000,0xb596,0xc618,0x5acb,0x6b6d,0xd6ba,0xe73c,0xad55,0x8c71,0xdefb,0xdedb,0xdefb,0xa534,0x94b2,0xd6ba,0x7bcf,0xce59,0xef5d,0xb5b6,0x7bcf,0xe73c,0xdefb,0x9cf3,0x6b4d,0x630c,0x738e,0xd69a,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x94b2,0x0000,0x10a2,0xb5b6,0xd6ba,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce59,0x4a69,0x0000,0x73ae,0xd69a,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x9cf3,0x0000,0x0000,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x5acb,0x0000,0x632c,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xa534,0x0000,0x0000,0xa534,0xd6ba,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x632c,0x0000,0x5acb,0xce79,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xad75,0x0000,0x0000,0x9cf3,0xd6ba,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x73ae,0x0000,0x4a69,0xce59,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xb5b6,0x10a2,0x0000,0x9492,0xdedb,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xd69a,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x4208,0x0000,0x0000,0x0000,0x3186,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0x0000,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x2945,0x0000,0x0020,0x0000,0x0000,0x3186,0x528a,0x4a69,0x4a49,0x31a6,0x3186,0x4208,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x0000,0x0000,0x0861,0x0000,0x0000,0x31a6,0x3186,0x4228,0x4208,0x39c7,0x4a49,0x31a6,0x4a49,0x4208,0x3186,0x31a6,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x528a,0x2965,0x0000,0x0000,0x0000,0x0000,0x2104,0x4208,0x4a69,0x4a49,0x31a6,0x3186,0x3186,0x39c7,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x0020,0x0000,0x0000,0x0000,0x1082,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x31a6,0x0000,0x0000,0x0841,0x0000,0x2124,0x4a49,0x3186,0x3186,0x4a49,0x4a69,0x4208,0x31a6,0x4a69,0x31a6,0x4228,0x4208,0x3186,0x31a6,0x3186,0x4a49,0x4208,0x39c7,0x4a49,0x31a6,0x4a49,0x4a69,0x4208,0x31a6,0x4a49,0x1082,0x0000,0x0861,0x0000,0x0000,0x2965,0x4228,0x4a69,0x4a69,0x4a49,0x31a6,0x4a49,0x4a69,0x4208,0x3186,0x31a6,0x3186,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x39e7,0x4a69,0x4a69,0x39c7,0x3186,0x3186,0x31a6,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x18c3,0x0000,0x0000,0x0000,0x0000,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x39e7,0x0000,0x0000,0x0000,0x0000,0x2945,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x10a2,0xa534,0x5acb,0x0000,0x0000,0x0861,0x9cf3,0xbdd7,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xb596,0xb596,0xb5b6,0x4a49,0x632c,0x9492,0x0000,0xa514,0x31a6,0x6b4d,0xb5b6,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0020,0x0000,0x8c51,0x8c51,0x0000,0x0000,0xa534,0xad55,0xb575,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x9cd3,0x6b4d,0x39e7,0xad75,0xb596,0x18c3,0x0000,0x632c,0x9cd3,0x0000,0x9cf3,0x4228,0x5aeb,0xb596,0xb596,0xb5b6,0x39c7,0x738e,0x8c51,0x0000,0xa534,0x39c7,0x0000,0x632c,0x9cd3,0x0000,0x0000,0x0841,0x0000,0x4a69,0xb575,0xb5b6,0x31a6,0x0000,0x0000,0x0000,0xb596,0x2104,0x0000,0x632c,0xb5b6,0xa534,0xb5b6,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c51,0xbdd7,0x9492,0x0000,0x0000,0x94b2,0xad75,0xad55,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x7bef,0x0000,0x0000,0x3186,0xdedb,0xbdf7,0x9cd3,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xe71c,0xa514,0xad75,0x4208,0x9cd3,0xce79,0x0000,0xe73c,0x5aeb,0x9cd3,0xdedb,0x9cd3,0x9492,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0x9cf3,0x9cf3,0x73ae,0x0861,0x9cd3,0xdedb,0xd69a,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x9492,0x632c,0xe73c,0xad55,0x9492,0x3186,0x8c51,0xd69a,0x0000,0xdefb,0x738e,0x8c51,0xdefb,0x9cf3,0xad75,0x2965,0xad55,0xc618,0x18c3,0xe73c,0x5aeb,0x0000,0x8430,0xe71c,0x8c71,0x2945,0x0000,0x0000,0x6b4d,0xe73c,0xad75,0x94b2,0x4a69,0x39c7,0x9492,0xad55,0x94b2,0x39e7,0x5acb,0xbdf7,0xe71c,0xb5b6,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xd69a,0x9cd3,0x8c51,0x0020,0x8c51,0xd69a,0xdedb,0x9cd3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x3186,0xd6ba,0x39e7,0x9cf3,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xd69a,0x4228,0x0000,0x0000,0x8410,0xad75,0x632c,0xbdd7,0x4208,0x9cf3,0xbdf7,0x52aa,0xc638,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x9492,0x9492,0xd6ba,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0000,0xd69a,0x8410,0x73ae,0xd69a,0x630c,0xb5b6,0x528a,0x8c71,0xce59,0x39e7,0x0000,0x0000,0x8c71,0xad55,0x632c,0xbdf7,0x4228,0x2945,0x9cf3,0xdefb,0xc618,0x39e7,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xc638,0x9492,0x6b6d,0xdedb,0x0000,0xd69a,0x9492,0x0000,0x4208,0xdedb,0x2945,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad55,0x6b4d,0xc638,0x2965,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x3186,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xe71c,0xd6ba,0x4208,0x0000,0x0000,0x6b4d,0xd6ba,0x31a6,0x0000,0x9cd3,0xe73c,0xc638,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x738e,0xe71c,0xd6ba,0x4228,0x0000,0x8c71,0xe73c,0xce79,0x3186,0x0000,0x0000,0x73ae,0xd6ba,0x0000,0x0000,0xa514,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0020,0xce59,0x8c51,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xb5b6,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x738e,0x0000,0x0000,0x3186,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x10a2,0x0000,0x0000,0x8c71,0xbdd7,0x39e7,0xce59,0x4a69,0x9cd3,0xbdf7,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x8430,0x8430,0xce59,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x39c7,0xce59,0x630c,0x8c71,0xc638,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8430,0xe71c,0xd69a,0x4208,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b6d,0xd6ba,0x0000,0xce79,0x8c71,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad55,0x0000,0x0000,0x0020,0x0000,0xa514,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xd69a,0xc638,0xa514,0x2104,0xe71c,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xe73c,0xbdf7,0xc638,0x528a,0x94b2,0xce79,0x0000,0xe71c,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bef,0x7bef,0xd6ba,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x9492,0x6b6d,0xdedb,0x0841,0xd69a,0x8410,0x8410,0xd69a,0x0000,0xdefb,0x6b6d,0x8c51,0xe73c,0xbdf7,0xc638,0x5acb,0x0000,0x7bef,0xdefb,0x18c3,0x0000,0x8c71,0xdedb,0xd6ba,0x6b4d,0x2104,0x0000,0x0000,0x6b6d,0xe71c,0x18c3,0xce59,0x9cd3,0x0000,0x7bcf,0xc618,0x8410,0x31a6,0x0000,0x5aeb,0xe71c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xad55,0x0000,0x0000,0x0000,0xa514,0xdedb,0xdefb,0xb596,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x8430,0x9cd3,0xa514,0x8410,0x0861,0x8c71,0x39c7,0x6b4d,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x9cd3,0x9cd3,0xa514,0x4228,0x5aeb,0x8410,0x1082,0x8c71,0x39c7,0x6b4d,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x528a,0x528a,0x8c51,0x0000,0x0000,0x7bef,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x5aeb,0x4228,0x8c71,0x0020,0x8430,0x528a,0x528a,0x8430,0x0020,0x8c71,0x4228,0x52aa,0x9cd3,0x9cd3,0x9cf3,0x4228,0x0000,0x528a,0x8c71,0x1082,0x0000,0x73ae,0xa514,0x7bef,0x0000,0x0000,0x0020,0x0000,0x4228,0x8c71,0x1082,0x8410,0x632c,0x0000,0x1082,0x9cd3,0x2945,0x0000,0x0000,0x39c7,0x9492,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0x6b6d,0x0000,0x0000,0x0000,0x8430,0x9cd3,0x94b2,0x9492,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0x0000, +0x0000,0xc638,0xc618,0x8c71,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x8c71,0xc618,0xc638,0x0000, +0x0000,0x9cf3,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x9cf3,0x0000, +0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020}; + diff --git a/MCUME_teensy/teensy81/teensy81.ino b/MCUME_teensy/teensy81/teensy81.ino new file mode 100644 index 0000000..8366e95 --- /dev/null +++ b/MCUME_teensy/teensy81/teensy81.ino @@ -0,0 +1,276 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "zx81.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif + + + diff --git a/MCUME_teensy/teensy81/tft_t_dma.cpp b/MCUME_teensy/teensy81/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensy81/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 192 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensy81/tft_t_dma_config.h b/MCUME_teensy/teensy81/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensy81/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensy81/z80ops.h b/MCUME_teensy/teensy81/z80ops.h new file mode 100644 index 0000000..c6f0fe3 --- /dev/null +++ b/MCUME_teensy/teensy81/z80ops.h @@ -0,0 +1,1306 @@ +/* Emulations of the Z80 CPU instruction set - part of xz80. + * Copyright (C) 1994 Ian Collier. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define instr(opcode,cycles) case opcode: {tstates+=cycles +#define HLinstr(opcode,cycles,morecycles) \ + case opcode: {unsigned short addr; \ + tstates+=cycles; \ + if(ixoriy==0)addr=hl; \ + else tstates+=morecycles, \ + addr=(ixoriy==1?ix:iy)+ \ + (signed char)fetch(pc),\ + pc++ +#define endinstr }; break + +#define cy (f&1) + +#define xh (ixoriy==0?h:ixoriy==1?(ix>>8):(iy>>8)) +#define xl (ixoriy==0?l:ixoriy==1?(ix&0xff):(iy&0xff)) + +#define setxh(x) (ixoriy==0?(h=(x)):ixoriy==1?(ix=(ix&0xff)|((x)<<8)):\ + (iy=(iy&0xff)|((x)<<8))) +#define setxl(x) (ixoriy==0?(l=(x)):ixoriy==1?(ix=(ix&0xff00)|(x)):\ + (iy=(iy&0xff00)|(x))) + +#define inc(var) /* 8-bit increment */ ( var++,\ + f=(f&1)|(var&0xa8)|\ + ((!(var&15))<<4)|((!var)<<6)|\ + ((var==128)<<2)\ + ) +#define dec(var) /* 8-bit decrement */ ( f=(f&1)|((!(var&15))<<4)|2,\ + --var,\ + f|=(var&0xa8)|((var==127)<<2)|\ + ((!var)<<6)\ + ) +#define swap(x,y) {unsigned char t=x; x=y; y=t;} +#define addhl(hi,lo) /* 16-bit add */ if(!ixoriy){\ + unsigned short t;\ + l=t=l+(lo);\ + f=(f&0xc4)|(((t>>=8)+(h&0x0f)+((hi)&0x0f)>15)<<4);\ + h=t+=h+(hi);\ + f|=(h&0x28)|(t>>8);\ + }\ + else do{unsigned long t=(ixoriy==1?ix:iy);\ + f=(f&0xc4)|(((t&0xfff)+((hi<<8)|lo)>0xfff)<<4);\ + t+=(hi<<8)|lo;\ + if(ixoriy==1)ix=t; else iy=t;\ + f|=((t>>8)&0x28)|(t>>16);\ + } while(0) +#define adda(x,c) /* 8-bit add */ do{unsigned short y;\ + unsigned char z=(x);\ + y=a+z+(c);\ + f=(y&0xa8)|(y>>8)|(((a&0x0f)+(z&0x0f)+(c)>15)<<4)|\ + (((~a^z)&0x80&(y^a))>>5);\ + f|=(!(a=y))<<6;\ + } while(0) +#define suba(x,c) /* 8-bit subtract */ do{unsigned short y;\ + unsigned char z=(x);\ + y=(a-z-(c))&0x1ff;\ + f=(y&0xa8)|(y>>8)|(((a&0x0f)<(z&0x0f)+(c))<<4)|\ + (((a^z)&0x80&(y^a))>>5)|2;\ + f|=(!(a=y))<<6;\ + } while(0) +#define cpa(x) /* 8-bit compare */ do{unsigned short y;\ + unsigned char z=(x);\ + y=(a-z)&0x1ff;\ + f=(y&0xa8)|(y>>8)|(((a&0x0f)<(z&0x0f))<<4)|\ + (((a^z)&0x80&(y^a))>>5)|2|((!y)<<6);\ + } while(0) +#define anda(x) /* logical and */ do{\ + a&=(x);\ + f=(a&0xa8)|((!a)<<6)|0x10|parity(a);\ + } while(0) +#define xora(x) /* logical xor */ do{\ + a^=(x);\ + f=(a&0xa8)|((!a)<<6)|parity(a);\ + } while(0) +#define ora(x) /* logical or */ do{\ + a|=(x);\ + f=(a&0xa8)|((!a)<<6)|parity(a);\ + } while(0) + +#define jr /* execute relative jump */ do{int j=(signed char)fetch(pc);\ + pc+=j+1;\ + tstates+=5;\ + } while(0) +#define jp /* execute jump */ (pc=fetch2(pc)) +#define call /* execute call */ do{\ + tstates+=7;\ + push2(pc+2);\ + jp;\ + } while(0) +#define ret /* execute return */ do{\ + tstates+=6;\ + pop2(pc);\ + } while(0) +#define pop2(var) /* pop 16-bit register */ (var=fetch2(sp),sp+=2) +#define pop1(v1,v2) /* pop register pair */ (v2=fetch(sp),\ + v1=fetch(sp+1),sp+=2) +#define push2(val) /* push 16-bit register */ do{sp-=2;store2(sp,(val));}\ + while(0) +#define push1(v1,v2) /* push register pair */ do{sp-=2;\ + store2b(sp,v1,v2);\ + }while(0) + +instr(0,4); + /* nop */ +endinstr; + +instr(1,10); + c=fetch(pc),pc++; + b=fetch(pc),pc++; +endinstr; + +instr(2,7); + store(bc,a); +endinstr; + +instr(3,6); + if(!++c)b++; +endinstr; + +instr(4,4); + inc(b); +endinstr; + +instr(5,4); + dec(b); +endinstr; + +instr(6,7); + b=fetch(pc),pc++; +endinstr; + +instr(7,4); + a=(a<<1)|(a>>7); + f=(f&0xc4)|(a&0x29); +endinstr; + +instr(8,4); + swap(a,a1); + swap(f,f1); +endinstr; + +instr(9,11); + addhl(b,c); +endinstr; + +instr(10,7); + a=fetch(bc); +endinstr; + +instr(11,6); + if(!c--)b--; +endinstr; + +instr(12,4); + inc(c); +endinstr; + +instr(13,4); + dec(c); +endinstr; + +instr(14,4); + c=fetch(pc),pc++; +endinstr; + +instr(15,4); + f=(f&0xc4)|(a&1); + a=(a>>1)|(a<<7); + f|=a&0x28; +endinstr; + +instr(16,8); + if(!--b)pc++; + else jr; +endinstr; + +instr(17,10); + e=fetch(pc),pc++; + d=fetch(pc),pc++; +endinstr; + +instr(18,7); + store(de,a); +endinstr; + +instr(19,6); + if(!++e)d++; +endinstr; + +instr(20,4); + inc(d); +endinstr; + +instr(21,4); + dec(d); +endinstr; + +instr(22,7); + d=fetch(pc),pc++; +endinstr; + +instr(23,4); + {int t=a>>7; + a=(a<<1)|(f&1); + f=(f&0xc4)|(a&0x28)|t; + } +endinstr; + +instr(24,7); + jr; +endinstr; + +instr(25,11); + addhl(d,e); +endinstr; + +instr(26,7); + a=fetch(de); +endinstr; + +instr(27,6); + if(!e--)d--; +endinstr; + +instr(28,4); + inc(e); +endinstr; + +instr(29,4); + dec(e); +endinstr; + +instr(30,4); + e=fetch(pc),pc++; +endinstr; + +instr(31,4); + {int t=a&1; + a=(a>>1)|(f<<7); + f=(f&0xc4)|(a&0x28)|t; + } +endinstr; + +instr(32,7); + if(f&0x40)pc++; + else jr; +endinstr; + +instr(33,10); + if(!ixoriy){ + l=fetch(pc),pc++; + h=fetch(pc),pc++; + } + else { + if(ixoriy==1) + ix=fetch2(pc); + else iy=fetch2(pc); + pc+=2; + } +endinstr; + +instr(34,16); + {unsigned short addr=fetch2(pc); + pc+=2; + if(!ixoriy)store2b(addr,h,l); + else if(ixoriy==1)store2(addr,ix); + else store2(addr,iy); + } +endinstr; + +instr(35,6); + if(!ixoriy){if(!++l)h++;} + else if(ixoriy==1)ix++; + else iy++; +endinstr; + +instr(36,4); + if(ixoriy==0)inc(h); + else{unsigned char t; + t=(ixoriy==1?ix:iy)>>8; + inc(t); + if(ixoriy==1)ix=(ix&0xff)|(t<<8); + else iy=(iy&0xff)|(t<<8); + } +endinstr; + +instr(37,4); + if(ixoriy==0)dec(h); + else{unsigned char t; + t=(ixoriy==1?ix:iy)>>8; + dec(t); + if(ixoriy==1)ix=(ix&0xff)|(t<<8); + else iy=(iy&0xff)|(t<<8); + } +endinstr; + +instr(38,7); + setxh(fetch(pc)); + pc++; +endinstr; + +instr(39,4); + { + unsigned char incr=0, carry=cy; + if((f&0x10) || (a&0x0f)>9) incr=6; + if((f&1) || (a>>4)>9) incr|=0x60; + if(f&2)suba(incr,0); + else { + if(a>0x90 && (a&15)>9)incr|=0x60; + adda(incr,0); + } + f=((f|carry)&0xfb)|parity(a); + } +endinstr; + +instr(40,7); + if(f&0x40)jr; + else pc++; +endinstr; + +instr(41,11); + if(!ixoriy)addhl(h,l); + else if(ixoriy==1)addhl((ix>>8),(ix&0xff)); + else addhl((iy>>8),(iy&0xff)); +endinstr; + +instr(42,16); + {unsigned short addr=fetch2(pc); + pc+=2; + if(!ixoriy){ + l=fetch(addr); + h=fetch(addr+1); + } + else if(ixoriy==1)ix=fetch2(addr); + else iy=fetch2(addr); + } +endinstr; + +instr(43,6); + if(!ixoriy){if(!l--)h--;} + else if(ixoriy==1)ix--; + else iy--; +endinstr; + +instr(44,4); + if(!ixoriy)inc(l); + else {unsigned char t; + t=(ixoriy==1?ix:iy); + inc(t); + if(ixoriy==1)ix=(ix&0xff00)|t; + else iy=(iy&0xff00)|t; + } +endinstr; + +instr(45,4); + if(!ixoriy)dec(l); + else {unsigned char t; + t=(ixoriy==1?ix:iy); + dec(t); + if(ixoriy==1)ix=(ix&0xff00)|t; + else iy=(iy&0xff00)|t; + } +endinstr; + +instr(46,4); + setxl(fetch(pc)); + pc++; +endinstr; + +instr(47,4); + a=~a; + f=(f&0xc5)|(a&0x28)|0x12; +endinstr; + +instr(48,7); + if(f&1)pc++; + else jr; +endinstr; + +instr(49,10); + sp=fetch2(pc); + pc+=2; +endinstr; + +instr(50,13); + {unsigned short addr=fetch2(pc); + pc+=2; + store(addr,a); + } +endinstr; + +instr(51,6); + sp++; +endinstr; + +HLinstr(52,11,8); + {unsigned char t=fetch(addr); + inc(t); + store(addr,t); + } +endinstr; + +HLinstr(53,11,8); + {unsigned char t=fetch(addr); + dec(t); + store(addr,t); + } +endinstr; + +HLinstr(54,10,5); + store(addr,fetch(pc)); + pc++; +endinstr; + +instr(55,4); + f=(f&0xc4)|1|(a&0x28); +endinstr; + +instr(56,7); + if(f&1)jr; + else pc++; +endinstr; + +instr(57,11); + addhl((sp>>8),(sp&0xff)); +endinstr; + +instr(58,13); + {unsigned short addr=fetch2(pc); + pc+=2; + a=fetch(addr); + } +endinstr; + +instr(59,6); + sp--; +endinstr; + +instr(60,4); + inc(a); +endinstr; + +instr(61,4); + dec(a); +endinstr; + +instr(62,4); + a=fetch(pc),pc++; +endinstr; + +instr(63,4); + f=(f&0xc4)|(cy^1)|(cy<<4)|(a&0x28); +endinstr; + +instr(0x40,4); + /* ld b,b */ +endinstr; + +instr(0x41,4); + b=c; +endinstr; + +instr(0x42,4); + b=d; +endinstr; + +instr(0x43,4); + b=e; +endinstr; + +instr(0x44,4); + b=xh; +endinstr; + +instr(0x45,4); + b=xl; +endinstr; + +HLinstr(0x46,7,8); + b=fetch(addr); +endinstr; + +instr(0x47,4); + b=a; +endinstr; + +instr(0x48,4); + c=b; +endinstr; + +instr(0x49,4); + /* ld c,c */ +endinstr; + +instr(0x4a,4); + c=d; +endinstr; + +instr(0x4b,4); + c=e; +endinstr; + +instr(0x4c,4); + c=xh; +endinstr; + +instr(0x4d,4); + c=xl; +endinstr; + +HLinstr(0x4e,7,8); + c=fetch(addr); +endinstr; + +instr(0x4f,4); + c=a; +endinstr; + +instr(0x50,4); + d=b; +endinstr; + +instr(0x51,4); + d=c; +endinstr; + +instr(0x52,4); + /* ld d,d */ +endinstr; + +instr(0x53,4); + d=e; +endinstr; + +instr(0x54,4); + d=xh; +endinstr; + +instr(0x55,4); + d=xl; +endinstr; + +HLinstr(0x56,7,8); + d=fetch(addr); +endinstr; + +instr(0x57,4); + d=a; +endinstr; + +instr(0x58,4); + e=b; +endinstr; + +instr(0x59,4); + e=c; +endinstr; + +instr(0x5a,4); + e=d; +endinstr; + +instr(0x5b,4); + /* ld e,e */ +endinstr; + +instr(0x5c,4); + e=xh; +endinstr; + +instr(0x5d,4); + e=xl; +endinstr; + +HLinstr(0x5e,7,8); + e=fetch(addr); +endinstr; + +instr(0x5f,4); + e=a; +endinstr; + +instr(0x60,4); + setxh(b); +endinstr; + +instr(0x61,4); + setxh(c); +endinstr; + +instr(0x62,4); + setxh(d); +endinstr; + +instr(0x63,4); + setxh(e); +endinstr; + +instr(0x64,4); + /* ld h,h */ +endinstr; + +instr(0x65,4); + setxh(xl); +endinstr; + +HLinstr(0x66,7,8); + h=fetch(addr); +endinstr; + +instr(0x67,4); + setxh(a); +endinstr; + +instr(0x68,4); + setxl(b); +endinstr; + +instr(0x69,4); + setxl(c); +endinstr; + +instr(0x6a,4); + setxl(d); +endinstr; + +instr(0x6b,4); + setxl(e); +endinstr; + +instr(0x6c,4); + setxl(xh); +endinstr; + +instr(0x6d,4); + /* ld l,l */ +endinstr; + +HLinstr(0x6e,7,8); + l=fetch(addr); +endinstr; + +instr(0x6f,4); + setxl(a); +endinstr; + +HLinstr(0x70,7,8); + store(addr,b); +endinstr; + +HLinstr(0x71,7,8); + store(addr,c); +endinstr; + +HLinstr(0x72,7,8); + store(addr,d); +endinstr; + +HLinstr(0x73,7,8); + store(addr,e); +endinstr; + +HLinstr(0x74,7,8); + store(addr,h); +endinstr; + +HLinstr(0x75,7,8); + store(addr,l); +endinstr; + +instr(0x76,4); +pc--; /* keep nopping until int */ +endinstr; + +HLinstr(0x77,7,8); + store(addr,a); +endinstr; + +instr(0x78,4); + a=b; +endinstr; + +instr(0x79,4); + a=c; +endinstr; + +instr(0x7a,4); + a=d; +endinstr; + +instr(0x7b,4); + a=e; +endinstr; + +instr(0x7c,4); + a=xh; +endinstr; + +instr(0x7d,4); + a=xl; +endinstr; + +HLinstr(0x7e,7,8); + a=fetch(addr); +endinstr; + +instr(0x7f,4); + /* ld a,a */ +endinstr; + +instr(0x80,4); + adda(b,0); +endinstr; + +instr(0x81,4); + adda(c,0); +endinstr; + +instr(0x82,4); + adda(d,0); +endinstr; + +instr(0x83,4); + adda(e,0); +endinstr; + +instr(0x84,4); + adda(xh,0); +endinstr; + +instr(0x85,4); + adda(xl,0); +endinstr; + +HLinstr(0x86,7,8); + adda(fetch(addr),0); +endinstr; + +instr(0x87,4); + adda(a,0); +endinstr; + +instr(0x88,4); + adda(b,cy); +endinstr; + +instr(0x89,4); + adda(c,cy); +endinstr; + +instr(0x8a,4); + adda(d,cy); +endinstr; + +instr(0x8b,4); + adda(e,cy); +endinstr; + +instr(0x8c,4); + adda(xh,cy); +endinstr; + +instr(0x8d,4); + adda(xl,cy); +endinstr; + +HLinstr(0x8e,7,8); + adda(fetch(addr),cy); +endinstr; + +instr(0x8f,4); + adda(a,cy); +endinstr; + +instr(0x90,4); + suba(b,0); +endinstr; + +instr(0x91,4); + suba(c,0); +endinstr; + +instr(0x92,4); + suba(d,0); +endinstr; + +instr(0x93,4); + suba(e,0); +endinstr; + +instr(0x94,4); + suba(xh,0); +endinstr; + +instr(0x95,4); + suba(xl,0); +endinstr; + +HLinstr(0x96,7,8); + suba(fetch(addr),0); +endinstr; + +instr(0x97,4); + suba(a,0); +endinstr; + +instr(0x98,4); + suba(b,cy); +endinstr; + +instr(0x99,4); + suba(c,cy); +endinstr; + +instr(0x9a,4); + suba(d,cy); +endinstr; + +instr(0x9b,4); + suba(e,cy); +endinstr; + +instr(0x9c,4); + suba(xh,cy); +endinstr; + +instr(0x9d,4); + suba(xl,cy); +endinstr; + +HLinstr(0x9e,7,8); + suba(fetch(addr),cy); +endinstr; + +instr(0x9f,4); + suba(a,cy); +endinstr; + +instr(0xa0,4); + anda(b); +endinstr; + +instr(0xa1,4); + anda(c); +endinstr; + +instr(0xa2,4); + anda(d); +endinstr; + +instr(0xa3,4); + anda(e); +endinstr; + +instr(0xa4,4); + anda(xh); +endinstr; + +instr(0xa5,4); + anda(xl); +endinstr; + +HLinstr(0xa6,7,8); + anda(fetch(addr)); +endinstr; + +instr(0xa7,4); + anda(a); +endinstr; + +instr(0xa8,4); + xora(b); +endinstr; + +instr(0xa9,4); + xora(c); +endinstr; + +instr(0xaa,4); + xora(d); +endinstr; + +instr(0xab,4); + xora(e); +endinstr; + +instr(0xac,4); + xora(xh); +endinstr; + +instr(0xad,4); + xora(xl); +endinstr; + +HLinstr(0xae,7,8); + xora(fetch(addr)); +endinstr; + +instr(0xaf,4); + xora(a); +endinstr; + +instr(0xb0,4); + ora(b); +endinstr; + +instr(0xb1,4); + ora(c); +endinstr; + +instr(0xb2,4); + ora(d); +endinstr; + +instr(0xb3,4); + ora(e); +endinstr; + +instr(0xb4,4); + ora(xh); +endinstr; + +instr(0xb5,4); + ora(xl); +endinstr; + +HLinstr(0xb6,7,8); + ora(fetch(addr)); +endinstr; + +instr(0xb7,4); + ora(a); +endinstr; + +instr(0xb8,4); + cpa(b); +endinstr; + +instr(0xb9,4); + cpa(c); +endinstr; + +instr(0xba,4); + cpa(d); +endinstr; + +instr(0xbb,4); + cpa(e); +endinstr; + +instr(0xbc,4); + cpa(xh); +endinstr; + +instr(0xbd,4); + cpa(xl); +endinstr; + +HLinstr(0xbe,7,8); + cpa(fetch(addr)); +endinstr; + +instr(0xbf,4); + cpa(a); +endinstr; + +instr(0xc0,5); + if(!(f&0x40))ret; +endinstr; + +instr(0xc1,10); + pop1(b,c); +endinstr; + +instr(0xc2,10); + if(!(f&0x40))jp; + else pc+=2; +endinstr; + +instr(0xc3,10); + jp; +endinstr; + +instr(0xc4,10); + if(!(f&0x40))call; + else pc+=2; +endinstr; + +instr(0xc5,11); + push1(b,c); +endinstr; + +instr(0xc6,7); + adda(fetch(pc),0); + pc++; +endinstr; + +instr(0xc7,11); + push2(pc); + pc=0; +endinstr; + +instr(0xc8,5); + if(f&0x40)ret; +endinstr; + +instr(0xc9,4); + ret; +endinstr; + +instr(0xca,10); + if(f&0x40)jp; + else pc+=2; +endinstr; + +instr(0xcb,4); +#include "cbops.h" +endinstr; + +instr(0xcc,10); + if(f&0x40)call; + else pc+=2; +endinstr; + +instr(0xcd,10); + call; +endinstr; + +instr(0xce,7); + adda(fetch(pc),cy); + pc++; +endinstr; + +instr(0xcf,11); + push2(pc); + pc=8; +endinstr; + +instr(0xd0,5); + if(!cy)ret; +endinstr; + +instr(0xd1,10); + pop1(d,e); +endinstr; + +instr(0xd2,10); + if(!cy)jp; + else pc+=2; +endinstr; + +instr(0xd3,11); + tstates+=out(a,fetch(pc),a); + pc++; +endinstr; + +instr(0xd4,10); + if(!cy)call; + else pc+=2; +endinstr; + +instr(0xd5,11); + push1(d,e); +endinstr; + +instr(0xd6,7); + suba(fetch(pc),0); + pc++; +endinstr; + +instr(0xd7,11); + push2(pc); + pc=16; +endinstr; + +instr(0xd8,5); + if(cy)ret; +endinstr; + +instr(0xd9,4); + swap(b,b1); + swap(c,c1); + swap(d,d1); + swap(e,e1); + swap(h,h1); + swap(l,l1); +endinstr; + +instr(0xda,10); + if(cy)jp; + else pc+=2; +endinstr; + +instr(0xdb,11); + {unsigned short t; + a=t=in(a,fetch(pc)); + tstates+=t>>8; + pc++; + } +endinstr; + +instr(0xdc,10); + if(cy)call; + else pc+=2; +endinstr; + +instr(0xdd,4); + new_ixoriy=1; + intsample=0; +endinstr; + +instr(0xde,7); + suba(fetch(pc),cy); + pc++; +endinstr; + +instr(0xdf,11); + push2(pc); + pc=24; +endinstr; + +instr(0xe0,5); + if(!(f&4))ret; +endinstr; + +instr(0xe1,10); + if(!ixoriy)pop1(h,l); + else if(ixoriy==1)pop2(ix); + else pop2(iy); +endinstr; + +instr(0xe2,10); + if(!(f&4))jp; + else pc+=2; +endinstr; + +instr(0xe3,19); + if(!ixoriy){ + unsigned short t=fetch2(sp); + store2b(sp,h,l); + l=t; + h=t>>8; + } + else if(ixoriy==1){ + unsigned short t=fetch2(sp); + store2(sp,ix); + ix=t; + } + else{ + unsigned short t=fetch2(sp); + store2(sp,iy); + iy=t; + } +endinstr; + +instr(0xe4,10); + if(!(f&4))call; + else pc+=2; +endinstr; + +instr(0xe5,11); + if(!ixoriy)push1(h,l); + else if(ixoriy==1)push2(ix); + else push2(iy); +endinstr; + +instr(0xe6,7); + anda(fetch(pc)); + pc++; +endinstr; + +instr(0xe7,11); + push2(pc); + pc=32; +endinstr; + +instr(0xe8,5); + if(f&4)ret; +endinstr; + +instr(0xe9,4); + pc=!ixoriy?hl:ixoriy==1?ix:iy; +endinstr; + +instr(0xea,10); + if(f&4)jp; + else pc+=2; +endinstr; + +instr(0xeb,4); + swap(h,d); + swap(e,l); +endinstr; + +instr(0xec,10); + if(f&4)call; + else pc+=2; +endinstr; + +instr(0xed,4); +#include"edops.h" +endinstr; + +instr(0xee,7); + xora(fetch(pc)); + pc++; +endinstr; + +instr(0xef,11); + push2(pc); + pc=40; +endinstr; + +instr(0xf0,5); + if(!(f&0x80))ret; +endinstr; + +instr(0xf1,10); + pop1(a,f); +endinstr; + +instr(0xf2,10); + if(!(f&0x80))jp; + else pc+=2; +endinstr; + +instr(0xf3,4); + iff1=iff2=0; + intsample=0; +endinstr; + +instr(0xf4,10); + if(!(f&0x80))call; + else pc+=2; +endinstr; + +instr(0xf5,11); + push1(a,f); +endinstr; + +instr(0xf6,7); + ora(fetch(pc)); + pc++; +endinstr; + +instr(0xf7,11); + push2(pc); + pc=48; +endinstr; + +instr(0xf8,5); + if(f&0x80)ret; +endinstr; + +instr(0xf9,6); + sp=!ixoriy?hl:ixoriy==1?ix:iy; +endinstr; + +instr(0xfa,10); + if(f&0x80)jp; + else pc+=2; +endinstr; + +instr(0xfb,4); + iff1=iff2=1; + intsample=0; +endinstr; + +instr(0xfc,10); + if(f&0x80)call; + else pc+=2; +endinstr; + +instr(0xfd,4); + new_ixoriy=2; + intsample=0; +endinstr; + +instr(0xfe,7); + cpa(fetch(pc)); + pc++; +endinstr; + +instr(0xff,11); + push2(pc); + pc=56; +endinstr; + + diff --git a/MCUME_teensy/teensy81/zx80rom.h b/MCUME_teensy/teensy81/zx80rom.h new file mode 100644 index 0000000..7b35247 --- /dev/null +++ b/MCUME_teensy/teensy81/zx80rom.h @@ -0,0 +1,259 @@ +const unsigned char PROGMEM zx80rom[] = { + 0x21, 0xff, 0x7f, 0x3e, 0x3f, 0xc3, 0x61, 0x02, 0xe1, 0x6e, 0xfd, 0xcb, 0x00, 0x7e, 0x18, 0x03, + 0xc3, 0x60, 0x05, 0xc8, 0xfd, 0x75, 0x00, 0xc9, 0x18, 0x38, 0x2a, 0x26, 0x40, 0x7e, 0xa7, 0xc0, + 0xcd, 0x52, 0x00, 0x18, 0xf9, 0xcd, 0x55, 0x00, 0xcd, 0x1a, 0x00, 0x06, 0x00, 0xc3, 0xe1, 0x09, + 0xcd, 0x4f, 0x09, 0xd0, 0xc5, 0xc3, 0xf3, 0x0c, 0x0d, 0xc2, 0x45, 0x00, 0xe1, 0x05, 0xc8, 0xcb, + 0xd9, 0xed, 0x4f, 0xfb, 0xe9, 0xd1, 0xc8, 0x18, 0xf8, 0xcd, 0x25, 0x00, 0x7e, 0xfe, 0xd9, 0xc2, + 0xae, 0x08, 0x2a, 0x26, 0x40, 0x23, 0x22, 0x26, 0x40, 0x7e, 0xfe, 0xb0, 0xc0, 0x22, 0x04, 0x40, + 0xfd, 0xcb, 0x19, 0x7e, 0x28, 0xef, 0xfd, 0xcb, 0x01, 0xd6, 0x18, 0xe9, 0x3f, 0x3d, 0x28, 0x3b, + 0x26, 0x38, 0x29, 0x2b, 0x2c, 0x36, 0x3c, 0x2a, 0x37, 0x39, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x1c, + 0x25, 0x24, 0x23, 0x22, 0x35, 0x34, 0x2e, 0x3a, 0x3e, 0x76, 0x31, 0x30, 0x2f, 0x2d, 0x00, 0x1b, + 0x32, 0x33, 0x27, 0x0e, 0xd7, 0x0f, 0xdf, 0x09, 0x08, 0x06, 0x07, 0x0b, 0x02, 0x03, 0x04, 0x05, + 0x0a, 0xdb, 0xe0, 0xd5, 0xd6, 0x72, 0x77, 0x74, 0x73, 0x70, 0x71, 0xde, 0xd9, 0xda, 0x0d, 0x01, + 0x75, 0xe3, 0xdd, 0xdc, 0xe2, 0x0c, 0xd8, 0xe4, 0xe5, 0xe1, 0xd4, 0x8f, 0x81, 0x39, 0x2d, 0x2a, + 0xb3, 0x39, 0xb4, 0x99, 0x9a, 0x91, 0x90, 0x33, 0x34, 0xb9, 0x92, 0x93, 0x94, 0x95, 0x26, 0x33, + 0xa9, 0x34, 0xb7, 0x14, 0x94, 0x96, 0x97, 0x98, 0x31, 0x2e, 0x38, 0xb9, 0x37, 0x2a, 0x39, 0x3a, + 0x37, 0xb3, 0x28, 0x31, 0xb8, 0x29, 0x2e, 0xb2, 0x38, 0x26, 0x3b, 0xaa, 0x2b, 0x34, 0xb7, 0x2c, + 0x34, 0x00, 0x39, 0xb4, 0x35, 0x34, 0x30, 0xaa, 0x2e, 0x33, 0x35, 0x3a, 0xb9, 0x37, 0x26, 0x33, + 0x29, 0x34, 0x32, 0x2e, 0x38, 0xaa, 0x31, 0x2a, 0xb9, 0x8f, 0x8f, 0x33, 0x2a, 0x3d, 0xb9, 0x35, + 0x37, 0x2e, 0x33, 0xb9, 0x8f, 0x33, 0x2a, 0xbc, 0x37, 0x3a, 0xb3, 0x38, 0x39, 0x34, 0xb5, 0x28, + 0x34, 0x33, 0x39, 0x2e, 0x33, 0x3a, 0xaa, 0x2e, 0xab, 0x2c, 0x34, 0x00, 0x38, 0x3a, 0xa7, 0x31, + 0x34, 0x26, 0xa9, 0x28, 0x31, 0x2a, 0x26, 0xb7, 0x37, 0x2a, 0xb2, 0x8f, 0xcd, 0xad, 0x01, 0x06, + 0x08, 0x10, 0xfe, 0x2a, 0x1e, 0x40, 0x23, 0x22, 0x1e, 0x40, 0x21, 0xff, 0xff, 0x06, 0xfe, 0x48, + 0xed, 0x78, 0xf6, 0x01, 0xf6, 0xe0, 0x57, 0x2f, 0xfe, 0x01, 0x9f, 0xb0, 0xa5, 0x6f, 0x7c, 0xa2, + 0x67, 0xcb, 0x00, 0xed, 0x78, 0x38, 0xed, 0x1f, 0xcb, 0x14, 0x17, 0x17, 0x17, 0x9f, 0xe6, 0x18, + 0xc6, 0x20, 0x32, 0x23, 0x40, 0xed, 0x4b, 0x26, 0x40, 0x22, 0x26, 0x40, 0x78, 0xc6, 0x02, 0xed, + 0x42, 0xeb, 0x21, 0x22, 0x40, 0x7e, 0xb2, 0xb3, 0xc8, 0x78, 0xfe, 0xfe, 0x9f, 0x06, 0x1f, 0xb6, + 0xa0, 0x1f, 0x77, 0x05, 0x10, 0xfe, 0xd3, 0xff, 0x3e, 0xec, 0x06, 0x19, 0x2a, 0x0c, 0x40, 0xcb, + 0xfc, 0xcd, 0xad, 0x01, 0x3e, 0xf3, 0x04, 0x2b, 0xfd, 0x35, 0x23, 0x18, 0x8f, 0xfd, 0x4e, 0x23, + 0xed, 0x4f, 0x3e, 0xdd, 0xfb, 0xe9, 0xd1, 0x11, 0xcb, 0x12, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x30, + 0x42, 0x10, 0xfe, 0x1b, 0x7a, 0xb3, 0x20, 0xf2, 0x21, 0x00, 0x40, 0x11, 0x08, 0xf8, 0xcb, 0x06, + 0x9f, 0xe6, 0x05, 0xc6, 0x04, 0x4f, 0xd3, 0xff, 0x06, 0x24, 0x10, 0xfe, 0x3e, 0x7f, 0xdb, 0xfe, + 0x06, 0x23, 0x10, 0xfe, 0x0d, 0x20, 0xef, 0x42, 0x00, 0x10, 0xfd, 0x16, 0xfe, 0x1d, 0x20, 0xde, + 0x1f, 0x30, 0x10, 0xcd, 0xf8, 0x01, 0x18, 0xd3, 0x23, 0xeb, 0x2a, 0x0a, 0x40, 0x37, 0xed, 0x52, + 0xeb, 0xd0, 0xe1, 0xc3, 0x83, 0x02, 0xd1, 0x11, 0x12, 0x57, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x30, + 0xf2, 0x17, 0x17, 0x38, 0xf2, 0x1b, 0x7a, 0xb3, 0x20, 0xf0, 0xfd, 0x34, 0x0b, 0x21, 0x00, 0x40, + 0x1e, 0x08, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x30, 0x24, 0x17, 0x17, 0x30, 0xf5, 0x0e, 0x94, 0x06, + 0x1a, 0x0d, 0xdb, 0xfe, 0x17, 0xcb, 0x79, 0x79, 0x38, 0xf5, 0x10, 0xf5, 0x20, 0x04, 0xfe, 0x56, + 0x30, 0xe0, 0x3f, 0xcb, 0x16, 0x1d, 0x20, 0xda, 0xcd, 0xf8, 0x01, 0x18, 0xd3, 0x15, 0xf2, 0x00, + 0x00, 0xfd, 0x35, 0x0b, 0x18, 0xad, 0xcb, 0xb8, 0xcb, 0xb0, 0xed, 0x43, 0x06, 0x40, 0xc1, 0x18, + 0x22, 0x36, 0x01, 0x2b, 0xbc, 0x20, 0xfa, 0x23, 0x35, 0x28, 0xfc, 0xf9, 0xf5, 0x3e, 0x0e, 0xed, + 0x47, 0xed, 0x56, 0xfd, 0x21, 0x00, 0x40, 0x21, 0x28, 0x40, 0x22, 0x08, 0x40, 0x36, 0x80, 0x23, + 0x22, 0x0a, 0x40, 0x2a, 0x0a, 0x40, 0x36, 0xb0, 0x23, 0x36, 0x76, 0x23, 0x22, 0x0c, 0x40, 0xfd, + 0x36, 0x12, 0x02, 0xcd, 0x47, 0x07, 0xeb, 0x78, 0xfd, 0x96, 0x12, 0x38, 0x5a, 0x3c, 0x47, 0xd9, + 0x2a, 0x06, 0x40, 0xed, 0x5b, 0x13, 0x40, 0xed, 0x52, 0xeb, 0x30, 0x04, 0x19, 0x22, 0x13, 0x40, + 0xcd, 0x0a, 0x06, 0x1e, 0x00, 0xcd, 0xf7, 0x04, 0x38, 0xfb, 0x1d, 0x20, 0x33, 0xe5, 0x2a, 0x06, + 0x40, 0xcd, 0x0a, 0x06, 0xe1, 0xa7, 0xed, 0x52, 0x21, 0x13, 0x40, 0x30, 0x0b, 0xeb, 0x7e, 0x23, + 0xed, 0xa0, 0x12, 0x18, 0xbe, 0x21, 0x06, 0x40, 0x5e, 0x23, 0x56, 0xe5, 0xeb, 0x23, 0xcd, 0x0a, + 0x06, 0xcd, 0xc2, 0x03, 0xe1, 0xfd, 0xcb, 0x19, 0x6e, 0x20, 0x0c, 0x72, 0x2b, 0x73, 0x18, 0xa3, + 0xcd, 0xc2, 0x05, 0xed, 0x53, 0x0e, 0x40, 0xfd, 0x36, 0x01, 0x01, 0x2a, 0x0a, 0x40, 0xcd, 0xbe, + 0x07, 0xed, 0x5b, 0x0e, 0x40, 0xfd, 0x46, 0x12, 0x0e, 0x01, 0xd9, 0x2a, 0x0a, 0x40, 0xcd, 0x12, + 0x05, 0x38, 0x0a, 0x21, 0x12, 0x40, 0x34, 0x3e, 0x18, 0xbe, 0x30, 0xb7, 0x77, 0xcd, 0xc2, 0x05, + 0xcd, 0x3f, 0x01, 0xcb, 0x28, 0x9f, 0xf6, 0x26, 0x2e, 0x05, 0x95, 0x85, 0x37, 0xcb, 0x19, 0x38, + 0xfa, 0x0c, 0x20, 0xc3, 0x48, 0x2d, 0x2e, 0x01, 0x20, 0xf1, 0x21, 0x6b, 0x00, 0x5f, 0x19, 0x7e, + 0xfd, 0xcb, 0x01, 0x56, 0x28, 0x07, 0xc6, 0xc0, 0xfe, 0xe6, 0x30, 0x01, 0x7e, 0xfe, 0xc0, 0xea, + 0x5e, 0x03, 0x2a, 0x04, 0x40, 0x01, 0x01, 0x00, 0xcd, 0xd5, 0x05, 0x12, 0x18, 0x99, 0x5f, 0x21, + 0x92, 0x02, 0x19, 0x19, 0x4e, 0x23, 0x46, 0xc5, 0x2a, 0x04, 0x40, 0xc9, 0x01, 0x01, 0x00, 0xc3, + 0x66, 0x06, 0xa9, 0x03, 0xd5, 0x02, 0x82, 0x03, 0x87, 0x03, 0xb9, 0x03, 0xcb, 0x03, 0x08, 0x04, + 0x95, 0x03, 0xcd, 0x9e, 0x03, 0x2b, 0x2b, 0x23, 0x7e, 0xfe, 0x76, 0x28, 0x1a, 0x36, 0xb0, 0x2a, + 0x04, 0x40, 0x77, 0x18, 0xc7, 0xcd, 0x9e, 0x03, 0x2b, 0xcd, 0x6c, 0x03, 0x18, 0xbe, 0xed, 0x5b, + 0x0a, 0x40, 0x1a, 0xfe, 0xb0, 0xc0, 0xd1, 0x18, 0xb3, 0x2a, 0x06, 0x40, 0xcd, 0x0a, 0x06, 0xeb, + 0xcd, 0xc2, 0x03, 0x21, 0x07, 0x40, 0xc3, 0xe5, 0x02, 0x11, 0x00, 0x00, 0x18, 0xf5, 0xeb, 0x11, + 0xba, 0x03, 0x7e, 0xe6, 0xc0, 0x20, 0xf7, 0x56, 0x23, 0x5e, 0xc9, 0x0e, 0x00, 0xed, 0x5b, 0x0a, + 0x40, 0xd9, 0x2a, 0x06, 0x40, 0xcd, 0x0a, 0x06, 0xcd, 0xc2, 0x03, 0x7a, 0xb3, 0xca, 0x83, 0x02, + 0x2b, 0xcd, 0xbf, 0x06, 0x2b, 0xcd, 0x24, 0x06, 0x23, 0x23, 0x0b, 0x0b, 0xd9, 0xd5, 0xd9, 0xd1, + 0x3e, 0xb0, 0x12, 0x13, 0xe5, 0x21, 0x22, 0x00, 0x19, 0x09, 0xed, 0x72, 0x30, 0xa9, 0xe1, 0xed, + 0xb0, 0xed, 0x53, 0x0c, 0x40, 0xc3, 0x93, 0x02, 0x2a, 0x15, 0x40, 0x7c, 0xb5, 0x20, 0x98, 0x2a, + 0x04, 0x40, 0xcd, 0x6c, 0x03, 0x2a, 0x0a, 0x40, 0x22, 0x26, 0x40, 0xcd, 0x1a, 0x00, 0xfd, 0xcb, + 0x19, 0x6e, 0x20, 0x18, 0xcd, 0x79, 0x06, 0xd9, 0x7c, 0xb5, 0xc2, 0xba, 0x04, 0x2b, 0x2b, 0x22, + 0x02, 0x40, 0xcd, 0x47, 0x07, 0xd9, 0x7e, 0xfe, 0x76, 0xca, 0x83, 0x02, 0xfd, 0x36, 0x00, 0xff, + 0xfd, 0x36, 0x01, 0x88, 0xcd, 0xbe, 0x07, 0xcd, 0x0a, 0x0d, 0xed, 0x5b, 0x02, 0x40, 0x21, 0x19, + 0x40, 0xcb, 0x6e, 0x28, 0x03, 0xcb, 0xae, 0x13, 0xfd, 0xcb, 0x00, 0x7e, 0x28, 0x2a, 0x21, 0x01, + 0x40, 0xcb, 0x5e, 0xcb, 0x9e, 0x2a, 0x26, 0x40, 0x23, 0x28, 0x09, 0xeb, 0x7c, 0xe6, 0xc0, 0x20, + 0x17, 0xcd, 0x0a, 0x06, 0x7e, 0xe6, 0xc0, 0x20, 0x0f, 0x56, 0x23, 0x5e, 0xed, 0x53, 0x02, 0x40, + 0x23, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0x38, 0xbc, 0xcd, 0xe0, 0x06, 0xcd, 0xc2, 0x05, 0x01, 0x20, + 0x01, 0xd9, 0x3a, 0x00, 0x40, 0xed, 0x4b, 0x02, 0x40, 0x3c, 0x28, 0x0c, 0xfe, 0x09, 0x20, 0x01, + 0x03, 0xed, 0x43, 0x17, 0x40, 0x20, 0x01, 0x0b, 0xcd, 0x56, 0x05, 0x3e, 0x15, 0xd7, 0xcd, 0xa1, + 0x06, 0xcd, 0xc2, 0x05, 0xcd, 0x3f, 0x01, 0xc3, 0x83, 0x02, 0x22, 0x06, 0x40, 0xd9, 0xeb, 0xcd, + 0x47, 0x07, 0xed, 0x52, 0xd9, 0xcd, 0x0a, 0x06, 0xe5, 0x20, 0x06, 0xcd, 0x24, 0x06, 0xcd, 0x66, + 0x06, 0xd9, 0x23, 0x44, 0x4d, 0x7d, 0xd6, 0x03, 0xb4, 0xc4, 0x4f, 0x09, 0xe1, 0x30, 0x15, 0xc5, + 0x2b, 0xcd, 0xd5, 0x05, 0x13, 0x2a, 0x0c, 0x40, 0x2b, 0xc1, 0x0b, 0xed, 0xb8, 0x2a, 0x06, 0x40, + 0xeb, 0x72, 0x23, 0x73, 0xc3, 0x83, 0x02, 0xed, 0x4b, 0x06, 0x40, 0xcd, 0x1c, 0x06, 0x16, 0x97, + 0x28, 0x05, 0x11, 0x00, 0x00, 0xcb, 0x13, 0x7e, 0xfe, 0x40, 0xdc, 0xbf, 0x06, 0xd0, 0x23, 0x7a, + 0xd7, 0xd0, 0xfd, 0xcb, 0x01, 0xc6, 0xed, 0x4b, 0x15, 0x40, 0xa7, 0xed, 0x42, 0x20, 0x04, 0x3e, + 0xb8, 0xd7, 0xc8, 0x09, 0x7e, 0x23, 0xfe, 0xb0, 0x28, 0x12, 0xfe, 0xc0, 0xea, 0x59, 0x05, 0x38, + 0x05, 0xcd, 0x84, 0x05, 0x18, 0x03, 0xcd, 0x59, 0x05, 0xd0, 0x18, 0xda, 0xfd, 0xcb, 0x01, 0x56, + 0x20, 0x01, 0x3c, 0xd7, 0x18, 0xf3, 0x7b, 0x07, 0x0f, 0xd8, 0x18, 0x10, 0xaf, 0x09, 0x3c, 0x38, + 0xfc, 0xed, 0x42, 0x3d, 0x28, 0xf0, 0x1e, 0x1c, 0x83, 0xa7, 0x28, 0x04, 0xfd, 0xcb, 0x01, 0x86, + 0xd9, 0x67, 0x17, 0x17, 0x0d, 0x30, 0x02, 0x0e, 0x00, 0xfa, 0x74, 0x05, 0x38, 0x0e, 0x20, 0x0c, + 0x3e, 0x76, 0x12, 0x13, 0x38, 0x02, 0x0e, 0x20, 0xa7, 0x05, 0x28, 0x06, 0x68, 0xcd, 0x58, 0x09, + 0x12, 0x13, 0xd9, 0xc9, 0xcd, 0xa8, 0x05, 0x30, 0x09, 0xfd, 0xcb, 0x01, 0x46, 0x20, 0x03, 0xaf, + 0xd7, 0xd0, 0x0a, 0xe6, 0x3f, 0xcd, 0x59, 0x05, 0xd0, 0x0a, 0x03, 0x87, 0x30, 0xf4, 0xfe, 0x38, + 0xd8, 0xaf, 0xfd, 0xcb, 0x01, 0xc6, 0x18, 0xb8, 0xe5, 0x21, 0xba, 0x00, 0x96, 0x23, 0x38, 0x09, + 0x3c, 0x47, 0xcb, 0x7e, 0x23, 0x28, 0xfb, 0x10, 0xf9, 0x44, 0x4d, 0xe1, 0x0a, 0xe6, 0x3f, 0xc6, + 0xe4, 0xc9, 0xd9, 0xaf, 0xb8, 0x28, 0x09, 0xb9, 0x3e, 0x76, 0x28, 0x02, 0x12, 0x13, 0x10, 0xfc, + 0xed, 0x53, 0x10, 0x40, 0xc9, 0xcd, 0xdf, 0x05, 0x2a, 0x10, 0x40, 0xeb, 0xed, 0xb8, 0xc9, 0xf5, + 0xe5, 0x21, 0x08, 0x40, 0x3e, 0x05, 0x5e, 0x23, 0x56, 0xe3, 0xa7, 0xed, 0x52, 0x19, 0xe3, 0x30, + 0x09, 0xd5, 0xeb, 0x09, 0xeb, 0x72, 0x2b, 0x73, 0x23, 0xd1, 0x23, 0x3d, 0x20, 0xe8, 0xeb, 0xd1, + 0xf1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x03, 0x19, 0xeb, 0xc9, 0xe5, 0x21, 0x28, 0x40, 0x54, 0x5d, + 0xc1, 0xeb, 0xcd, 0x1c, 0x06, 0xd0, 0xc5, 0xcd, 0x24, 0x06, 0x18, 0xf4, 0x7e, 0xb8, 0xc0, 0x23, + 0x7e, 0x2b, 0xb9, 0xc9, 0xe5, 0x7e, 0x87, 0xfa, 0x35, 0x06, 0x38, 0x17, 0x23, 0x3e, 0x76, 0x23, + 0x47, 0xed, 0xb1, 0x18, 0x1d, 0x01, 0x02, 0x00, 0x38, 0x01, 0x48, 0x17, 0x17, 0x23, 0x7e, 0x30, + 0xfb, 0x18, 0x0c, 0xe6, 0x40, 0x3e, 0x01, 0x28, 0xe6, 0x23, 0x7e, 0x23, 0x06, 0x00, 0x4f, 0x03, + 0x09, 0x09, 0xd1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x19, 0xeb, 0xc9, 0x2a, 0x0a, 0x40, 0x2b, 0xed, + 0x5b, 0x08, 0x40, 0xcd, 0x53, 0x06, 0xc5, 0x78, 0x2f, 0x47, 0x79, 0x2f, 0x4f, 0x03, 0xcd, 0xdf, + 0x05, 0xeb, 0xe1, 0x19, 0xd5, 0xed, 0xb0, 0xe1, 0xc9, 0x7e, 0xd9, 0x21, 0x00, 0x00, 0x44, 0xd6, + 0x1c, 0x38, 0x17, 0xfe, 0x0a, 0x30, 0x13, 0x4f, 0x3e, 0x0d, 0xbc, 0x30, 0x01, 0x67, 0x54, 0x5d, + 0x29, 0x29, 0x19, 0x29, 0x09, 0xd9, 0xdf, 0xd9, 0x18, 0xe5, 0x7c, 0x22, 0x22, 0x40, 0xd9, 0x17, + 0xc9, 0xd5, 0xe5, 0x60, 0x69, 0xcb, 0x78, 0x28, 0x0c, 0x3e, 0x12, 0xcd, 0x59, 0x05, 0x30, 0x2d, + 0x21, 0x01, 0x00, 0xed, 0x42, 0x1e, 0xff, 0x01, 0xf0, 0xd8, 0xcd, 0x4c, 0x05, 0x18, 0x09, 0xd5, + 0x56, 0x23, 0x5e, 0xe5, 0xeb, 0x1e, 0x00, 0x37, 0x01, 0x18, 0xfc, 0xdc, 0x4c, 0x05, 0x01, 0x9c, + 0xff, 0xdc, 0x4c, 0x05, 0x0e, 0xf6, 0xdc, 0x4c, 0x05, 0x7d, 0xdc, 0x56, 0x05, 0xe1, 0xd1, 0xc9, + 0xfd, 0xcb, 0x01, 0x7e, 0xe1, 0xc8, 0xd9, 0xed, 0x5b, 0x0e, 0x40, 0xed, 0x4b, 0x24, 0x40, 0xd9, + 0xe9, 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0xcd, 0xe0, 0x06, 0x2a, 0x22, 0x40, 0xfd, 0xcb, 0x01, 0x76, + 0x28, 0x0a, 0x44, 0x4d, 0xcd, 0xa1, 0x06, 0x18, 0x1a, 0xd7, 0x30, 0x19, 0x7e, 0x23, 0xfe, 0x01, + 0x28, 0x28, 0xcb, 0x77, 0x28, 0xf3, 0xcd, 0x84, 0x05, 0x18, 0xef, 0xcd, 0xe0, 0x06, 0x3e, 0x76, + 0xcd, 0x59, 0x05, 0x38, 0x15, 0xcf, 0x04, 0xcd, 0xe0, 0x06, 0xfd, 0xcb, 0x01, 0xc6, 0xaf, 0xd7, + 0x30, 0xf3, 0xd9, 0x79, 0xd9, 0x3d, 0xe6, 0x07, 0x20, 0xf4, 0xd9, 0xeb, 0xed, 0x43, 0x24, 0x40, + 0x22, 0x0e, 0x40, 0x22, 0x10, 0x40, 0xc9, 0x2a, 0x0c, 0x40, 0x36, 0x76, 0x23, 0x01, 0x21, 0x17, + 0x18, 0xea, 0x4f, 0x2c, 0x64, 0x3f, 0x59, 0x2b, 0x17, 0x4b, 0x36, 0x4e, 0x10, 0x5e, 0x5d, 0x2a, + 0x2d, 0x5a, 0x61, 0x3b, 0x18, 0x4d, 0x0d, 0x11, 0x44, 0x4c, 0x31, 0x50, 0x01, 0xe3, 0x02, 0x06, + 0x00, 0x34, 0x09, 0x06, 0xd5, 0x05, 0xb9, 0x08, 0x06, 0x00, 0x43, 0x09, 0x00, 0x2e, 0x09, 0x00, + 0x65, 0x09, 0x04, 0xe3, 0x06, 0xd6, 0x05, 0xc4, 0x08, 0x04, 0x00, 0xf9, 0x08, 0x05, 0x72, 0x09, + 0x01, 0x00, 0x9a, 0x09, 0x04, 0xda, 0x06, 0xd9, 0x00, 0xd3, 0x0c, 0x05, 0x4a, 0x08, 0x03, 0x3d, + 0x09, 0x03, 0x56, 0x02, 0x06, 0xd8, 0x05, 0xd1, 0x09, 0x03, 0x23, 0x09, 0x00, 0x06, 0x02, 0x00, + 0xb6, 0x01, 0x00, 0x30, 0x09, 0x00, 0x5b, 0x06, 0x00, 0x47, 0x07, 0x05, 0x44, 0x08, 0x2b, 0x22, + 0x26, 0x40, 0x21, 0x00, 0x00, 0x00, 0x22, 0x15, 0x40, 0x21, 0x19, 0x40, 0xcb, 0x6e, 0x28, 0x07, + 0xcb, 0xbe, 0x46, 0xdf, 0xc3, 0x89, 0x08, 0xcb, 0xfe, 0xe7, 0xcd, 0x79, 0x06, 0x38, 0x06, 0xd9, + 0x11, 0xf0, 0xd8, 0x19, 0xd9, 0xdc, 0xae, 0x08, 0xcd, 0x1a, 0x00, 0xfd, 0xcb, 0x19, 0xbe, 0x01, + 0x00, 0x00, 0xed, 0x43, 0x22, 0x40, 0xfe, 0x76, 0xc8, 0x4f, 0xe7, 0x79, 0xd6, 0xe6, 0x38, 0xe5, + 0x4f, 0x21, 0x52, 0x07, 0x09, 0x4e, 0x09, 0x18, 0x03, 0x2a, 0x1a, 0x40, 0x7e, 0x23, 0x22, 0x1a, + 0x40, 0x01, 0x09, 0x08, 0xc5, 0x4f, 0x17, 0x38, 0x0d, 0x21, 0x36, 0x08, 0x06, 0x00, 0x09, 0x4e, + 0x09, 0xe5, 0xcd, 0x1a, 0x00, 0xc9, 0xcd, 0x1a, 0x00, 0xfe, 0xd5, 0x20, 0x04, 0xfd, 0xcb, 0x19, + 0xfe, 0xb9, 0x20, 0x7a, 0xe7, 0xc9, 0x1f, 0x33, 0x4d, 0x17, 0x64, 0x1b, 0x6c, 0xfd, 0xcb, 0x01, + 0x7e, 0xc0, 0xc1, 0x7e, 0xfe, 0x76, 0xc4, 0xae, 0x08, 0x7e, 0xfe, 0x76, 0xc8, 0xe7, 0x18, 0xfa, + 0xfe, 0x76, 0xc4, 0xa8, 0x08, 0xbf, 0xc1, 0xcc, 0x3d, 0x08, 0xeb, 0x2a, 0x1a, 0x40, 0x4e, 0x23, + 0x46, 0xeb, 0xc5, 0xed, 0x4b, 0x22, 0x40, 0x78, 0xb1, 0xc9, 0xcd, 0x14, 0x0d, 0x30, 0x3f, 0xfd, + 0xcb, 0x01, 0x7e, 0xca, 0xad, 0x0a, 0x22, 0x20, 0x40, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0xad, 0x0a, + 0xfd, 0xcb, 0x01, 0xfe, 0xc9, 0xc1, 0xfd, 0x46, 0x01, 0xc5, 0xef, 0xd1, 0x01, 0x3d, 0x0c, 0x3a, + 0x01, 0x40, 0xcb, 0x7f, 0x20, 0xcc, 0xaa, 0xe6, 0x40, 0xc4, 0xae, 0x08, 0x18, 0xa5, 0x22, 0x20, + 0x40, 0xcd, 0x14, 0x0d, 0x30, 0x08, 0xdf, 0xc9, 0xef, 0xfd, 0xcb, 0x01, 0x76, 0xc0, 0x3a, 0x15, + 0x40, 0xfd, 0xb6, 0x16, 0xc0, 0x22, 0x15, 0x40, 0xc9, 0x20, 0x06, 0xfd, 0xcb, 0x01, 0x7e, 0x20, + 0x89, 0xc3, 0xe8, 0x07, 0xc5, 0xcd, 0xa8, 0x08, 0xc1, 0xcd, 0x3d, 0x08, 0x2a, 0x22, 0x40, 0xe5, + 0xcd, 0x3d, 0x0c, 0xc1, 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0xc5, 0x2b, 0xcb, 0x7e, 0xcb, 0xfe, 0x23, + 0x23, 0x20, 0x07, 0x01, 0x04, 0x00, 0x23, 0xcd, 0xd5, 0x05, 0x23, 0xd1, 0x73, 0x23, 0x72, 0x23, + 0xed, 0x5b, 0x02, 0x40, 0x13, 0x73, 0x23, 0x72, 0xc9, 0x2a, 0x20, 0x40, 0xcd, 0x3b, 0x0b, 0xfd, + 0xcb, 0x00, 0x7e, 0xc8, 0xeb, 0x2b, 0x2b, 0xcb, 0x7e, 0x28, 0x16, 0x13, 0x23, 0x73, 0x23, 0x72, + 0x23, 0x4e, 0x23, 0x46, 0xc5, 0xe3, 0xcd, 0xcd, 0x0d, 0xe1, 0xd8, 0x23, 0x4e, 0x23, 0x46, 0x18, + 0x13, 0xcf, 0x00, 0x20, 0x04, 0xed, 0x4b, 0x1e, 0x40, 0xed, 0x43, 0x1c, 0x40, 0xc9, 0xcf, 0x08, + 0xed, 0x4b, 0x17, 0x40, 0xed, 0x43, 0x02, 0x40, 0xfd, 0xcb, 0x01, 0xde, 0xc9, 0xcd, 0x34, 0x09, + 0xc3, 0x5b, 0x06, 0x2a, 0x02, 0x40, 0x23, 0xe3, 0xe5, 0xcd, 0x34, 0x09, 0x01, 0x06, 0x00, 0x2a, + 0x10, 0x40, 0x09, 0xeb, 0x2a, 0x25, 0x40, 0x67, 0x3e, 0x13, 0x85, 0x6f, 0x7c, 0x26, 0x00, 0x19, + 0xed, 0x72, 0xd8, 0xcf, 0x03, 0xe1, 0xc1, 0xe5, 0x78, 0xfe, 0x3f, 0x20, 0xc7, 0xe1, 0xc5, 0xe5, + 0xcf, 0x06, 0x7e, 0xfe, 0x76, 0xca, 0x1b, 0x07, 0xd6, 0xd8, 0xce, 0x00, 0x28, 0x13, 0xef, 0xcd, + 0xf1, 0x06, 0xcd, 0x1a, 0x00, 0xd6, 0xd8, 0xce, 0x00, 0x28, 0x06, 0xcd, 0x3d, 0x08, 0xc3, 0x1b, + 0x07, 0xd4, 0x27, 0x07, 0xe7, 0xfe, 0x76, 0xc8, 0x18, 0xde, 0xfd, 0xcb, 0x03, 0x7e, 0x20, 0x2f, + 0xe1, 0x21, 0x19, 0x40, 0xcb, 0xee, 0xcb, 0xb6, 0x3a, 0x01, 0x40, 0xe6, 0x40, 0x01, 0x02, 0x00, + 0x20, 0x02, 0x0e, 0x04, 0xb6, 0x77, 0xf7, 0xd0, 0x36, 0x76, 0x79, 0x0f, 0x0f, 0x38, 0x03, 0x12, + 0x2b, 0x77, 0x2b, 0x36, 0xb0, 0x3a, 0x25, 0x40, 0x3c, 0x32, 0x12, 0x40, 0xc3, 0xf7, 0x02, 0xcf, + 0x07, 0xc5, 0xef, 0xd1, 0xcd, 0x3d, 0x08, 0x3a, 0x22, 0x40, 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0x12, + 0xc9, 0x48, 0xc5, 0xcd, 0x18, 0x0d, 0x38, 0x3c, 0x01, 0x00, 0x09, 0x51, 0x59, 0xd6, 0xdc, 0x28, + 0x26, 0x1b, 0x06, 0x04, 0x3c, 0x28, 0x20, 0x3c, 0x28, 0x22, 0xfe, 0x27, 0x20, 0x10, 0xfd, 0xcb, + 0x01, 0xb6, 0x23, 0x22, 0x22, 0x40, 0xdf, 0x3d, 0x28, 0x17, 0xfe, 0x75, 0x20, 0xf8, 0xcd, 0xae, + 0x08, 0xd9, 0x01, 0x00, 0x00, 0x18, 0x35, 0xd5, 0xc5, 0xe7, 0x18, 0xc7, 0xcd, 0x49, 0x00, 0x18, + 0x16, 0xdf, 0x18, 0x13, 0xfe, 0x26, 0x38, 0x05, 0xcd, 0xad, 0x0a, 0x18, 0x0a, 0xcd, 0x79, 0x06, + 0xdc, 0xae, 0x08, 0xfd, 0xcb, 0x01, 0xf6, 0xcd, 0x1a, 0x00, 0xd9, 0x01, 0x00, 0x00, 0xd6, 0xdc, + 0x38, 0x0a, 0xfe, 0x0a, 0x30, 0x06, 0x4f, 0x21, 0xa3, 0x0a, 0x09, 0x46, 0xd1, 0x7a, 0xb8, 0x38, + 0x37, 0xa7, 0xd9, 0xc8, 0xd9, 0xfd, 0xcb, 0x01, 0x7e, 0x28, 0x14, 0x16, 0x00, 0x21, 0x1f, 0x0d, + 0x19, 0x19, 0x5e, 0x23, 0x56, 0x21, 0x7f, 0x0a, 0xe3, 0xd5, 0xed, 0x5b, 0x22, 0x40, 0xc9, 0x7b, + 0xfe, 0x0a, 0x1f, 0x1f, 0xfd, 0xae, 0x01, 0xe6, 0x40, 0xd9, 0xc4, 0xae, 0x08, 0xd9, 0xe1, 0x22, + 0x22, 0x40, 0xfd, 0xcb, 0x01, 0xf6, 0x18, 0xc4, 0xd5, 0x79, 0xfd, 0xcb, 0x01, 0x76, 0x20, 0x0a, + 0xc6, 0x03, 0x4f, 0xfe, 0x0a, 0xd9, 0xdc, 0xae, 0x08, 0xd9, 0x2a, 0x22, 0x40, 0xe5, 0xc5, 0xd9, + 0xc3, 0x19, 0x0a, 0x06, 0x06, 0x08, 0x07, 0x03, 0x02, 0x0a, 0x05, 0x05, 0x05, 0xe5, 0x21, 0x01, + 0x40, 0xcb, 0xae, 0xcb, 0xf6, 0xdf, 0xfe, 0x0d, 0xca, 0x30, 0x0b, 0xfe, 0xda, 0xca, 0x2b, 0x0b, + 0xcd, 0x18, 0x0d, 0x30, 0x03, 0xdf, 0x18, 0xf8, 0xfe, 0xda, 0x28, 0x0a, 0xfe, 0x0d, 0xc2, 0x35, + 0x0b, 0xdf, 0xfe, 0xda, 0x20, 0x51, 0x11, 0xbf, 0x0b, 0xe1, 0xe5, 0x4e, 0xcd, 0x55, 0x00, 0x13, + 0x1a, 0xb9, 0x28, 0xf7, 0xe6, 0x3f, 0xb9, 0x20, 0x05, 0x3e, 0xda, 0xbe, 0x28, 0x0b, 0x1a, 0xa7, + 0x28, 0x35, 0x13, 0x17, 0x30, 0xf8, 0x13, 0x18, 0xe0, 0xd5, 0xcd, 0x49, 0x00, 0xd1, 0xe3, 0x21, + 0x01, 0x40, 0x1a, 0xae, 0xe6, 0x40, 0x20, 0x1f, 0xcb, 0xee, 0xcb, 0xf6, 0x1a, 0xe6, 0x3f, 0xfe, + 0x0d, 0x20, 0x02, 0xcb, 0xb6, 0xcb, 0x7e, 0xe1, 0xc8, 0x21, 0xba, 0x0b, 0xe5, 0xeb, 0x23, 0x5e, + 0x23, 0x56, 0xd5, 0x2a, 0x22, 0x40, 0xc9, 0xe1, 0xc3, 0xae, 0x08, 0xcd, 0x49, 0x00, 0x18, 0x05, + 0xfd, 0xcb, 0x01, 0xb6, 0xdf, 0xe1, 0xfd, 0xcb, 0x01, 0x7e, 0xc8, 0x4e, 0x23, 0x7e, 0xe5, 0xfe, + 0xda, 0x20, 0x19, 0xc5, 0xed, 0x4b, 0x26, 0x40, 0xc5, 0xcd, 0x25, 0x00, 0xe1, 0x22, 0x26, 0x40, + 0xc1, 0x21, 0x00, 0x40, 0xcb, 0x7e, 0x20, 0x13, 0x36, 0x02, 0xe1, 0xc9, 0xcb, 0xa9, 0xfe, 0x0d, + 0x28, 0x09, 0xcb, 0xf1, 0xcd, 0x18, 0x0d, 0x38, 0x02, 0xcb, 0xe9, 0x2a, 0x08, 0x40, 0x7e, 0xe6, + 0x7f, 0xca, 0xd0, 0x0c, 0xb9, 0x20, 0x1c, 0x17, 0x87, 0xfa, 0xa4, 0x0b, 0x30, 0x3a, 0xd1, 0xd5, + 0xe5, 0x23, 0x1a, 0x13, 0xbe, 0x28, 0xfa, 0xf6, 0x80, 0xbe, 0x20, 0x06, 0x1a, 0xcd, 0x18, 0x0d, + 0x30, 0x09, 0xe1, 0xc5, 0xcd, 0x24, 0x06, 0xeb, 0xc1, 0x18, 0xd3, 0xd1, 0xd1, 0x23, 0x5e, 0x23, + 0x56, 0xeb, 0x18, 0x16, 0x38, 0xf6, 0xe3, 0x2a, 0x22, 0x40, 0xcb, 0x04, 0xd1, 0x20, 0x0f, 0x13, + 0x1a, 0xbd, 0x38, 0x0a, 0x29, 0x19, 0x18, 0xe5, 0xd1, 0x23, 0x22, 0x22, 0x40, 0xc9, 0xcf, 0x02, + 0x35, 0x2a, 0x2a, 0xf0, 0x24, 0x0c, 0x28, 0x2d, 0x37, 0xcd, 0x28, 0x0c, 0x28, 0x34, 0x29, 0xaa, + 0x24, 0x0c, 0x37, 0x33, 0xe9, 0xed, 0x0b, 0x39, 0x31, 0x8d, 0x38, 0x0c, 0x3a, 0x38, 0xf7, 0xf0, + 0x06, 0x38, 0x39, 0x37, 0xcd, 0x10, 0x0c, 0x26, 0x27, 0xf8, 0xf2, 0x0d, 0x00, 0xe5, 0x2a, 0x1c, + 0x40, 0x11, 0x4d, 0x00, 0x7c, 0xb5, 0x28, 0x0b, 0xcd, 0x55, 0x0d, 0xa7, 0xed, 0x42, 0x30, 0x05, + 0x23, 0x18, 0x02, 0xed, 0x52, 0x22, 0x1c, 0x40, 0xd1, 0xcd, 0x55, 0x0d, 0x60, 0x69, 0x23, 0xc9, + 0xd9, 0x01, 0x07, 0x00, 0xf7, 0x30, 0x1d, 0xd5, 0xd9, 0x44, 0x4d, 0xcd, 0xa1, 0x06, 0xd9, 0x3e, + 0x01, 0x12, 0xe1, 0xc9, 0x6e, 0x26, 0x00, 0xc9, 0x01, 0x02, 0x00, 0x7d, 0xf7, 0x30, 0x05, 0x36, + 0x01, 0x2b, 0x77, 0xc9, 0x21, 0x30, 0x0c, 0xc9, 0x7e, 0x3d, 0xc8, 0x23, 0xc9, 0xfd, 0xcb, 0x00, + 0x7e, 0xc8, 0xc5, 0x2a, 0x20, 0x40, 0xcd, 0x3b, 0x0b, 0x21, 0x00, 0x40, 0x7e, 0xfe, 0x02, 0x28, + 0xd1, 0x17, 0xfd, 0xcb, 0x01, 0x76, 0x38, 0x3b, 0x36, 0xff, 0x28, 0x47, 0x2a, 0x20, 0x40, 0x01, + 0x02, 0x00, 0x03, 0x23, 0x7e, 0xcd, 0x18, 0x0d, 0x38, 0xf8, 0xfe, 0xda, 0x28, 0x62, 0xf7, 0x30, + 0xb1, 0xd5, 0x2a, 0x20, 0x40, 0x0b, 0x0b, 0x0b, 0x1b, 0x78, 0xb1, 0x3e, 0x40, 0x28, 0x08, 0xed, + 0xb0, 0x7e, 0xf6, 0x80, 0x12, 0x3e, 0x60, 0xe1, 0xcd, 0xb9, 0x0c, 0xeb, 0x1b, 0xe1, 0xeb, 0x72, + 0x2b, 0x73, 0xc9, 0x20, 0xf8, 0xe1, 0xcd, 0xa4, 0x0c, 0x2a, 0x22, 0x40, 0x2b, 0xcd, 0x24, 0x06, + 0xc3, 0x66, 0x06, 0xe1, 0x3e, 0x01, 0x01, 0x01, 0x00, 0xbe, 0x23, 0x03, 0x20, 0xfb, 0xe5, 0xf7, + 0xeb, 0xe1, 0xd0, 0xed, 0xb8, 0xeb, 0x23, 0x3e, 0xa0, 0xeb, 0x2a, 0x20, 0x40, 0xae, 0xeb, 0xf5, + 0xcd, 0x0d, 0x0d, 0xf1, 0x2b, 0x77, 0x2a, 0x0c, 0x40, 0x22, 0x0a, 0x40, 0x2b, 0x36, 0x80, 0xc9, + 0xe1, 0xcf, 0x01, 0xa0, 0xc2, 0xbe, 0x0b, 0xc5, 0x60, 0x69, 0x23, 0x23, 0x29, 0x44, 0x4d, 0xf7, + 0xd2, 0x22, 0x0c, 0x2b, 0x54, 0x5d, 0x1b, 0x0b, 0x0b, 0x36, 0x00, 0xed, 0xb8, 0xc1, 0x71, 0x3e, + 0x80, 0x18, 0xc6, 0x2a, 0x0a, 0x40, 0xe5, 0x2a, 0x0c, 0x40, 0x2b, 0xcd, 0xd5, 0x05, 0x23, 0x23, + 0xc1, 0xed, 0x43, 0x0a, 0x40, 0xc1, 0xeb, 0x23, 0x37, 0xc9, 0x2a, 0x0c, 0x40, 0xed, 0x5b, 0x0a, + 0x40, 0xc3, 0x63, 0x06, 0xfe, 0x26, 0x18, 0x02, 0xfe, 0x1c, 0x3f, 0xd0, 0xfe, 0x40, 0xc9, 0x39, + 0x0d, 0x3e, 0x0d, 0x44, 0x0d, 0x90, 0x0d, 0xb5, 0x0d, 0xbc, 0x0d, 0x70, 0x0d, 0xc3, 0x0d, 0xcc, + 0x0d, 0xcd, 0x0d, 0xd9, 0x0d, 0xdf, 0x0d, 0xde, 0x0d, 0xa7, 0xed, 0x52, 0x18, 0x03, 0xa7, 0xed, + 0x5a, 0xe0, 0xcf, 0x05, 0xcd, 0xed, 0x0d, 0xc5, 0x08, 0xcd, 0x55, 0x0d, 0x20, 0x3f, 0xc1, 0x08, + 0x1f, 0xd0, 0xc3, 0xf6, 0x0d, 0x44, 0x4d, 0x3e, 0x10, 0x21, 0x00, 0x00, 0x29, 0xcb, 0x11, 0xcb, + 0x10, 0x30, 0x04, 0x19, 0x30, 0x01, 0x03, 0x3d, 0x20, 0xf2, 0x7c, 0xe6, 0x80, 0xb0, 0xb1, 0xc9, + 0xcb, 0x7a, 0x20, 0xce, 0xaf, 0xcd, 0xf2, 0x0d, 0xa3, 0x08, 0xc5, 0x42, 0x4b, 0xeb, 0x21, 0x01, + 0x00, 0x0b, 0xcb, 0x78, 0x20, 0xc8, 0xc5, 0xcd, 0x55, 0x0d, 0xc1, 0x28, 0xf4, 0xc1, 0x18, 0xb2, + 0x7a, 0xb3, 0x28, 0xae, 0xcd, 0xed, 0x0d, 0xc5, 0x1f, 0xed, 0x6a, 0x7c, 0x4d, 0x21, 0x00, 0x00, + 0x06, 0x10, 0xed, 0x6a, 0xed, 0x52, 0x30, 0x01, 0x19, 0xcb, 0x11, 0x17, 0x10, 0xf4, 0x67, 0x69, + 0x23, 0xc1, 0xd8, 0x18, 0x41, 0x7c, 0xa2, 0x67, 0x7d, 0xa3, 0x6f, 0xc9, 0x7c, 0xb2, 0x67, 0x7d, + 0xb3, 0x6f, 0xc9, 0xa7, 0xed, 0x52, 0x21, 0xff, 0xff, 0xc8, 0x23, 0xc9, 0xeb, 0xa7, 0xed, 0x52, + 0x7c, 0x17, 0xe2, 0xd6, 0x0d, 0x3f, 0xed, 0x62, 0xc9, 0xcd, 0xe4, 0x0d, 0x18, 0xe8, 0xeb, 0xcd, + 0xe4, 0x0d, 0x18, 0xf2, 0x1a, 0xbe, 0xc0, 0x3d, 0xc8, 0x13, 0x23, 0x18, 0xf7, 0xaf, 0xcd, 0xf1, + 0x0d, 0xeb, 0xcb, 0x7c, 0xc8, 0x3c, 0x08, 0x7c, 0x2f, 0x67, 0x7d, 0x2f, 0x6f, 0x23, 0x08, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, + 0x00, 0x00, 0x00, 0x00, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x21, 0x78, 0x20, 0x20, 0x7f, 0x00, 0x00, 0x08, 0x3e, 0x48, 0x3e, 0x09, 0x3e, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3e, 0x41, 0x06, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x2a, 0x1c, 0x08, 0x1c, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, + 0x00, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, + 0x00, 0x1c, 0x22, 0x41, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x0c, 0x14, 0x04, 0x04, 0x04, 0x1e, 0x00, + 0x00, 0x3e, 0x41, 0x01, 0x3e, 0x40, 0x7f, 0x00, 0x00, 0x3e, 0x41, 0x06, 0x01, 0x41, 0x3e, 0x00, + 0x00, 0x0c, 0x14, 0x24, 0x44, 0x7f, 0x04, 0x00, 0x00, 0x7f, 0x40, 0x7e, 0x01, 0x41, 0x3e, 0x00, + 0x00, 0x3e, 0x40, 0x7e, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x7f, 0x01, 0x02, 0x04, 0x08, 0x08, 0x00, + 0x00, 0x3e, 0x41, 0x3e, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x3e, 0x41, 0x41, 0x3f, 0x01, 0x3e, 0x00, + 0x00, 0x3e, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x00, 0x00, 0x7e, 0x41, 0x7e, 0x41, 0x41, 0x7e, 0x00, + 0x00, 0x1e, 0x21, 0x40, 0x40, 0x21, 0x1e, 0x00, 0x00, 0x7c, 0x42, 0x41, 0x41, 0x42, 0x7c, 0x00, + 0x00, 0x7f, 0x40, 0x7c, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x1e, 0x21, 0x40, 0x47, 0x21, 0x1e, 0x00, 0x00, 0x41, 0x41, 0x7f, 0x41, 0x41, 0x41, 0x00, + 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x02, 0x02, 0x02, 0x42, 0x22, 0x1c, 0x00, + 0x00, 0x42, 0x44, 0x78, 0x44, 0x42, 0x41, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, + 0x00, 0x41, 0x63, 0x55, 0x49, 0x41, 0x41, 0x00, 0x00, 0x61, 0x51, 0x49, 0x45, 0x43, 0x41, 0x00, + 0x00, 0x3e, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x7e, 0x41, 0x41, 0x7e, 0x40, 0x40, 0x00, + 0x00, 0x3e, 0x41, 0x41, 0x49, 0x45, 0x3e, 0x00, 0x00, 0x7e, 0x41, 0x41, 0x7e, 0x44, 0x42, 0x00, + 0x00, 0x3e, 0x40, 0x3e, 0x01, 0x41, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00, 0x41, 0x41, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x49, 0x55, 0x22, 0x00, 0x00, 0x21, 0x12, 0x0c, 0x0c, 0x12, 0x21, 0x00, + 0x00, 0x41, 0x22, 0x1c, 0x08, 0x08, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x04, 0x08, 0x10, 0x7f, 0x00, +}; + diff --git a/MCUME_teensy/teensy81/zx81.c b/MCUME_teensy/teensy81/zx81.c new file mode 100644 index 0000000..0e3ba48 --- /dev/null +++ b/MCUME_teensy/teensy81/zx81.c @@ -0,0 +1,561 @@ + +#include "z80.h" +#include "Arduino.h" +#include "zx80rom.h" +#include "zx81rom.h" +#include "emuapi.h" +#include "common.h" +#include "AY8910.h" + +#define MEMORYRAM_SIZE 0x10000 + +static AY8910 ay; +//byte memo[ MEMORYRAM_SIZE ]; +byte * mem = 0; +unsigned char *memptr[64]; +int memattr[64]; +int unexpanded=0; +int nmigen=0,hsyncgen=0,vsync=0; +int vsync_visuals=0; +int signal_int_flag=0; +int interrupted=0; +int ramsize=32; //32; + +/* the keyboard state and other */ +static byte keyboard[ 9 ] = {0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff};; +static byte * XBuf=0; +int zx80=0; +int autoload=1; + + +struct { unsigned char R,G,B; } Palette[16] = { + { 0, 0, 0}, + { 255, 255, 255} +}; + +const byte map_qw[8][5] = { + {224,29,27,6,25}, // vcxz + {10,22, 7, 9, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +}; + +static char tapename[64]={0}; +static const int kBuf[]={13,25,19,25,19,40}; //,21,40}; // LOAD "" (J shift p shift p, R ENTER) +static const int tBuf[]={2,0,2,0,2,2};//200!,2,2}; +static int kcount=0; +static int timeout=100; + + + +unsigned int in(int h, int l) +{ + + int ts=0; /* additional cycles*256 */ + int tapezeromask=0x80; /* = 0x80 if no tape noise (?) */ + + if(!(l&4)) l=0xfb; + if(!(l&1)) l=0xfe; + + switch(l) + { + //case 0xfb: + // return(printer_inout(0,0)); + + case 0xfe: + /* also disables hsync/vsync if nmi off + * (yes, vsync requires nmi off too, Flight Simulation confirms this) + */ + if(!nmigen) + { + hsyncgen=0; + + /* if vsync was on before, record position */ + if(!vsync) + vsync_raise(); + vsync=1; + + } + + switch(h) + { + case 0xfe: return(ts|(keyboard[0]^tapezeromask)); + case 0xfd: return(ts|(keyboard[1]^tapezeromask)); + case 0xfb: return(ts|(keyboard[2]^tapezeromask)); + case 0xf7: return(ts|(keyboard[3]^tapezeromask)); + case 0xef: return(ts|(keyboard[4]^tapezeromask)); + case 0xdf: return(ts|(keyboard[5]^tapezeromask)); + case 0xbf: return(ts|(keyboard[6]^tapezeromask)); + case 0x7f: return(ts|(keyboard[7]^tapezeromask)); + default: + { + int i,mask,retval=0xff; + + /* some games (e.g. ZX Galaxians) do smart-arse things + * like zero more than one bit. What we have to do to + * support this is AND together any for which the corresponding + * bit is zero. + */ + for(i=0,mask=1;i<8;i++,mask<<=1) + if(!(h&mask)) + retval&=keyboard[i]; + return(ts|(retval^tapezeromask)); + } + } + break; + } + + return(ts|255); +} + +unsigned int out(int h,int l,int a) + +{ + /* either in from fe or out to ff takes one extra cycle; + * experimentation strongly suggests not only that out to + * ff takes one extra, but that *all* outs do. + */ + int ts=1; /* additional cycles */ + + + + /* the examples in the manual (using DF/0F) and the + * documented ports (CF/0F) don't match, so decode is + * important for that. + */ + if(!(l&0xf0)) /* not sure how many needed, so assume all 4 */ + l=0x0f; + else + if(!(l&0x20)) /* bit 5 low is common to DF and CF */ + l=0xdf; + + + if(!(l&4)) l=0xfb; + if(!(l&2)) l=0xfd; + if(!(l&1)) l=0xfe; + + + switch(l) + { + case 0x0f: /* Zon X data */ + WrData8910(&ay,a); + break; + case 0xdf: /* Zon X reg. select */ + WrCtrl8910(&ay,(a &0x0F)); + break; + + case 0xfb: + return(ts/*|printer_inout(1,a)*/); + case 0xfd: + nmigen=0; + if(vsync) + vsync_lower(); + vsync=0; + hsyncgen=1; + break; + case 0xfe: + if(!zx80) + { + nmigen=1; + break; + } + /* falls through, if zx80 */ + case 0xff: /* XXX should *any* out turn off vsync? */ + /* fill screen gap since last raising of vsync */ + if(vsync) + vsync_lower(); + vsync=0; + hsyncgen=1; + break; + } + + return(ts); +} + + + +void sighandler(int a) +{ + signal_int_flag=1; +} + +void frame_pause(void) +{ + signal_int_flag=0; + + if(interrupted<2) + interrupted=1; +} + +void do_interrupt() +{ + /* being careful here not to screw up any pending reset... */ + if(interrupted==1) + interrupted=0; +} + +void bitbufBlit(unsigned char * buf) +{ + memset( XBuf, 1, WIDTH*8 ); + buf = buf + (ZX_VID_MARGIN*(ZX_VID_FULLWIDTH/8)); + int y,x,i; + byte d; + for(y=0;y<192;y++) + { + byte * src = buf + 4; + for(x=0;x<32;x++) + { + byte * dst=&XBuf[(x<<3)+BORDER]; + d = *src++; + for (i=0;i<8;i++) + { + if ( d & 128 ) + { + *dst++=0; + } + else + { + *dst++=1; + } + d <<= 1; + } + } + emu_DrawLine(&XBuf[0], WIDTH, HEIGHT, y); + buf += (ZX_VID_FULLWIDTH/8); + } +} + +static void updateKeyboard (void) +{ + int nb_keys=0; + int k = emu_GetPad(); + int hk = emu_ReadI2CKeyboard(); + if ( (k == 0) && (hk == 0) ) { + memset(keyboard, 0xff, sizeof(keyboard)); + } + else { + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) || (hk == map_qw[j][i]) ) { + keyboard[j] &= ~ (1<<(4-i)); + nb_keys++; + } + } + } + } +} + +static void handleKeyBuf(void) +{ + if (timeout) { + timeout--; + if (timeout==0) { + memset(keyboard, 0xff, sizeof(keyboard)); + emu_printf("key up"); + } + } + else { + if (!(kcount == (sizeof(kBuf)/sizeof(int)))) { + emu_printf("key dw"); + timeout=tBuf[kcount]; + int k=kBuf[kcount++]; + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) ) { + keyboard[j] &= ~ (1<<(4-i)); + } + } + } + if (timeout == 0) { + timeout=tBuf[kcount]; + int k=kBuf[kcount++]; + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) ) { + keyboard[j] &= ~ (1<<(4-i)); + } + } + } + } + } + } +} + +/* despite the name, this also works for the ZX80 :-) */ +void reset81() +{ + interrupted=2; /* will cause a reset */ + memset(mem+0x4000,0,0xc000); +} + +void load_p(int a) +{ + emu_printf("loading..."); +/* + int got_ascii_already=0; + if(zx80) { + } + else + { + if(a>=32768) + { + got_ascii_already=1; + emu_printf("got ascii"); + } + if(!got_ascii_already) + { + } + } +*/ + emu_printf(tapename); + int size = emu_FileSize(tapename); + if ( !emu_FileOpen(tapename) ) { + /* the partial snap will crash without a file, so reset */ + if(autoload) + reset81(),autoload=0; + return; + + } + + autoload=0; + emu_FileRead(mem + (zx80?0x4000:0x4009), size); + emu_FileClose(); + + if(zx80) + store(0x400b,fetch(0x400b)+1); +} + +void save_p(int a) +{ + +} + + + +void zx81hacks() +{ + /* patch save routine */ + mem[0x2fc]=0xed; mem[0x2fd]=0xfd; + mem[0x2fe]=0xc3; mem[0x2ff]=0x07; mem[0x300]=0x02; + + /* patch load routine */ + mem[0x347]=0xeb; + mem[0x348]=0xed; mem[0x349]=0xfc; + mem[0x34a]=0xc3; mem[0x34b]=0x07; mem[0x34c]=0x02; +} + +void zx80hacks() +{ + /* patch save routine */ + mem[0x1b6]=0xed; mem[0x1b7]=0xfd; + mem[0x1b8]=0xc3; mem[0x1b9]=0x83; mem[0x1ba]=0x02; + + /* patch load routine */ + mem[0x206]=0xed; mem[0x207]=0xfc; + mem[0x208]=0xc3; mem[0x209]=0x83; mem[0x20a]=0x02; +} + +static void initmem() +{ + int f; + int count; + + if(zx80) + { + memset(mem+0x1000,0,0xf000); + } + else + { + memset(mem+0x2000,0,0xe000); + } + + + /* ROM setup */ + count=0; + for(f=0;f<16;f++) + { + memattr[f]=memattr[32+f]=0; + memptr[f]=memptr[32+f]=mem+1024*count; + count++; + if(count>=(zx80?4:8)) count=0; + } + + /* RAM setup */ + if(unexpanded) + ramsize=1; + count=0; + for(f=16;f<32;f++) + { + memattr[f]=memattr[32+f]=1; + memptr[f]=memptr[32+f]=mem+1024*(16+count); + count++; + if(count>=ramsize) count=0; + } + + +/* z81's ROM and RAM initialisation code is OK for <= 16K RAM but beyond + * that it requires a little tweaking. + * + * The following diagram shows the ZX81 + 8K ROM. The ZX80 version is + * the same except that each 8K ROM region will contain two copies of + * the 4K ROM. + * + * RAM less than 16K is mirrored throughout the 16K region. + * + * The ROM will only detect up to 8000h when setting RAMTOP, therefore + * having more than 16K RAM will require RAMTOP to be set by the user + * (or user program) to either 49152 for 32K or 65535 for 48/56K. + * + * 1K to 16K 32K 48K 56K Extra Info. + * + * 65535 +----------+ +----------+ +----------+ +----------+ + * (FFFFh) | 16K RAM | | 16K RAM | | 16K RAM | | 16K RAM | DFILE can be + * | mirrored | | mirrored | | | | | wholly here. + * | | | | | | | | + * | | | | | | | | BASIC variables + * | | | | | | | | can go here. + * 49152 +----------+ +----------+ +----------+ +----------+ + * (C000h) | 8K ROM | | 16K RAM | | 16K RAM | | 16K RAM | BASIC program + * | mirrored | | | | | | | is restricted + * 40960 +----------+ | | | | | | to here. + * (A000h) | 8K ROM | | | | | | | + * | mirrored | | | | | | | + * 32768 +----------+ +----------+ +----------+ +----------+ + * (8000h) | 16K RAM | | 16K RAM | | 16K RAM | | 16K RAM | No machine code + * | | | | | | | | beyond here. + * | | | | | | | | + * | | | | | | | | DFILE can be + * | | | | | | | | wholly here. + * 16384 +----------+ +----------+ +----------+ +----------+ + * (4000h) | 8K ROM | | 8K ROM | | 8K ROM | | 8K RAM | + * | mirrored | | mirrored | | mirrored | | | + * 8192 +----------+ +----------+ +----------+ +----------+ + * (2000h) | 8K ROM | | 8K ROM | | 8K ROM | | 8K ROM | + * | | | | | | | | + * 0 +----------+ +----------+ +----------+ +----------+ + */ + + switch(ramsize) + { + case 56: + for(f=8;f<16;f++) + { + memattr[f]=1; /* It's now writable */ + memptr[f]=mem+1024*f; + } + case 48: + for(f=48;f<64;f++) + { + memattr[f]=1; + memptr[f]=mem+1024*f; + } + case 32: + for(f=32;f<48;f++) + { + memattr[f]=1; + memptr[f]=mem+1024*f; + } + break; + } + + if(zx80) + zx80hacks(); + else + zx81hacks(); +} + + +void z81_Init(void) +{ +#if HAS_SND + emu_sndInit(); +#endif + + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH*8); + /* Set up the palette */ + int J; + for(J=0;J<2;J++) + emu_SetPaletteEntry(Palette[J].R,Palette[J].G,Palette[J].B, J); + + emu_printf("Allocating RAM"); + if (mem == 0) mem = emu_Malloc(MEMORYRAM_SIZE); + + Reset8910(&ay,3500000,0); + + /* load rom with ghosting at 0x2000 */ + int siz=(zx80?4096:8192); + if(zx80) + { + memcpy( mem + 0x0000, zx80rom, siz ); + } + else + { + memcpy( mem + 0x0000, zx81rom, siz ); + } + memcpy(mem+siz,mem,siz); + if(zx80) + memcpy(mem+siz*2,mem,siz*2); + + initmem(); + + /* reset the keyboard state */ + memset( keyboard, 255, sizeof( keyboard ) ); + + ResetZ80(); + } + + +void z81_Step(void) +{ + ExecZ80(); + sighandler(0); + //if (strlen(tapename)) handleKeyBuf(); + emu_DrawVsync(); + updateKeyboard(); + Loop8910(&ay,20); +} + +static int endsWith(const char * s, const char * suffix) +{ + int retval = 0; + int len = strlen(s); + int slen = strlen(suffix); + if (len > slen ) { + if (!strcmp(&s[len-slen], suffix)) { + retval = 1; + } + } + return (retval); +} + +void z81_Start(char * filename) +{ + char c; + strncpy(tapename,filename,64); + if ( emu_FileOpen(tapename) ) { + int fsize = emu_FileRead(&c, 1); + if ( fsize == 0) { + autoload = 0; + emu_printf("no autoload"); + } + emu_FileClose(); + } + + emu_setKeymap(1); + if ( (endsWith(filename, ".80")) || (endsWith(filename, ".o")) || (endsWith(filename, ".O"))) { + zx80=1; + ramsize=48; + emu_setKeymap(0); + } + else if (endsWith(filename, ".56") ) { + ramsize = 56; + } +} + diff --git a/MCUME_teensy/teensy81/zx81.h b/MCUME_teensy/teensy81/zx81.h new file mode 100644 index 0000000..df383f5 --- /dev/null +++ b/MCUME_teensy/teensy81/zx81.h @@ -0,0 +1,4 @@ +extern void z81_Init(void); +extern void z81_Step(void); +extern void z81_Start(char * filename); + diff --git a/MCUME_teensy/teensy81/zx81rom.h b/MCUME_teensy/teensy81/zx81rom.h new file mode 100644 index 0000000..49ac42c --- /dev/null +++ b/MCUME_teensy/teensy81/zx81rom.h @@ -0,0 +1,515 @@ +const unsigned char PROGMEM zx81rom[] = { + 0xd3, 0xfd, 0x01, 0xff, 0x7f, 0xc3, 0xcb, 0x03, 0x2a, 0x16, 0x40, 0x22, 0x18, 0x40, 0x18, 0x46, + 0xa7, 0xc2, 0xf1, 0x07, 0xc3, 0xf5, 0x07, 0xff, 0x2a, 0x16, 0x40, 0x7e, 0xa7, 0xc0, 0x00, 0x00, + 0xcd, 0x49, 0x00, 0x18, 0xf7, 0xff, 0xff, 0xff, 0xc3, 0x9d, 0x19, 0xf1, 0xd9, 0xe3, 0xd9, 0xc9, + 0xc5, 0x2a, 0x14, 0x40, 0xe5, 0xc3, 0x88, 0x14, 0x0d, 0xc2, 0x45, 0x00, 0xe1, 0x05, 0xc8, 0xcb, + 0xd9, 0xed, 0x4f, 0xfb, 0xe9, 0xd1, 0xc8, 0x18, 0xf8, 0x2a, 0x16, 0x40, 0x23, 0x22, 0x16, 0x40, + 0x7e, 0xfe, 0x7f, 0xc0, 0x18, 0xf6, 0xe1, 0x6e, 0xfd, 0x75, 0x00, 0xed, 0x7b, 0x02, 0x40, 0xcd, + 0x07, 0x02, 0xc3, 0xbc, 0x14, 0xff, 0x08, 0x3c, 0xfa, 0x6d, 0x00, 0x28, 0x02, 0x08, 0xc9, 0x08, + 0xf5, 0xc5, 0xd5, 0xe5, 0x2a, 0x0c, 0x40, 0xcb, 0xfc, 0x76, 0xd3, 0xfd, 0xdd, 0xe9, 0x3f, 0x3d, + 0x28, 0x3b, 0x26, 0x38, 0x29, 0x2b, 0x2c, 0x36, 0x3c, 0x2a, 0x37, 0x39, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x1c, 0x25, 0x24, 0x23, 0x22, 0x35, 0x34, 0x2e, 0x3a, 0x3e, 0x76, 0x31, 0x30, 0x2f, 0x2d, + 0x00, 0x1b, 0x32, 0x33, 0x27, 0x0e, 0x19, 0x0f, 0x18, 0xe3, 0xe1, 0xe4, 0xe5, 0xe2, 0xc0, 0xd9, + 0xe0, 0xdb, 0xdd, 0x75, 0xda, 0xde, 0xdf, 0x72, 0x77, 0x74, 0x73, 0x70, 0x71, 0x0b, 0x11, 0x10, + 0x0d, 0xdc, 0x79, 0x14, 0x15, 0x16, 0xd8, 0x0c, 0x1a, 0x12, 0x13, 0x17, 0xcd, 0xce, 0xc1, 0x78, + 0xca, 0xcb, 0xcc, 0xd1, 0xd2, 0xc7, 0xc8, 0xc9, 0xcf, 0x40, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0xc2, 0xd3, 0xc4, 0xd6, 0xd5, 0x78, 0xd4, 0xc6, 0xc5, 0xd0, 0x78, 0x78, + 0x42, 0xd7, 0x41, 0x08, 0x0a, 0x09, 0x8a, 0x89, 0x81, 0x82, 0x07, 0x84, 0x06, 0x01, 0x02, 0x87, + 0x04, 0x05, 0x77, 0x78, 0x85, 0x03, 0x83, 0x8b, 0x91, 0x90, 0x8d, 0x86, 0x78, 0x92, 0x95, 0x96, + 0x88, 0x8f, 0x0b, 0x8b, 0x26, 0xb9, 0x39, 0x26, 0xa7, 0x8f, 0x28, 0x34, 0x29, 0xaa, 0x3b, 0x26, + 0xb1, 0x31, 0x2a, 0xb3, 0x38, 0x2e, 0xb3, 0x28, 0x34, 0xb8, 0x39, 0x26, 0xb3, 0x26, 0x38, 0xb3, + 0x26, 0x28, 0xb8, 0x26, 0x39, 0xb3, 0x31, 0xb3, 0x2a, 0x3d, 0xb5, 0x2e, 0x33, 0xb9, 0x38, 0x36, + 0xb7, 0x38, 0x2c, 0xb3, 0x26, 0x27, 0xb8, 0x35, 0x2a, 0x2a, 0xb0, 0x3a, 0x38, 0xb7, 0x38, 0x39, + 0x37, 0x8d, 0x28, 0x2d, 0x37, 0x8d, 0x33, 0x34, 0xb9, 0x17, 0x97, 0x34, 0xb7, 0x26, 0x33, 0xa9, + 0x13, 0x94, 0x12, 0x94, 0x13, 0x92, 0x39, 0x2d, 0x2a, 0xb3, 0x39, 0xb4, 0x38, 0x39, 0x2a, 0xb5, + 0x31, 0x35, 0x37, 0x2e, 0x33, 0xb9, 0x31, 0x31, 0x2e, 0x38, 0xb9, 0x38, 0x39, 0x34, 0xb5, 0x38, + 0x31, 0x34, 0xbc, 0x2b, 0x26, 0x38, 0xb9, 0x33, 0x2a, 0xbc, 0x38, 0x28, 0x37, 0x34, 0x31, 0xb1, + 0x28, 0x34, 0x33, 0xb9, 0x29, 0x2e, 0xb2, 0x37, 0x2a, 0xb2, 0x2b, 0x34, 0xb7, 0x2c, 0x34, 0x39, + 0xb4, 0x2c, 0x34, 0x38, 0x3a, 0xa7, 0x2e, 0x33, 0x35, 0x3a, 0xb9, 0x31, 0x34, 0x26, 0xa9, 0x31, + 0x2e, 0x38, 0xb9, 0x31, 0x2a, 0xb9, 0x35, 0x26, 0x3a, 0x38, 0xaa, 0x33, 0x2a, 0x3d, 0xb9, 0x35, + 0x34, 0x30, 0xaa, 0x35, 0x37, 0x2e, 0x33, 0xb9, 0x35, 0x31, 0x34, 0xb9, 0x37, 0x3a, 0xb3, 0x38, + 0x26, 0x3b, 0xaa, 0x37, 0x26, 0x33, 0xa9, 0x2e, 0xab, 0x28, 0x31, 0xb8, 0x3a, 0x33, 0x35, 0x31, + 0x34, 0xb9, 0x28, 0x31, 0x2a, 0x26, 0xb7, 0x37, 0x2a, 0x39, 0x3a, 0x37, 0xb3, 0x28, 0x34, 0x35, + 0xbe, 0x37, 0x33, 0xa9, 0x2e, 0x33, 0x30, 0x2a, 0x3e, 0x8d, 0x35, 0xae, 0x23, 0xeb, 0x2a, 0x14, + 0x40, 0x37, 0xed, 0x52, 0xeb, 0xd0, 0xe1, 0x21, 0x3b, 0x40, 0x7e, 0x17, 0xae, 0x17, 0xd0, 0x3e, + 0x7f, 0x08, 0x06, 0x11, 0xd3, 0xfe, 0x10, 0xfe, 0xd3, 0xfd, 0x08, 0x17, 0x30, 0x08, 0xcb, 0xfe, + 0xf5, 0xc5, 0xd5, 0xe5, 0x18, 0x03, 0xcb, 0xb6, 0xc9, 0x2a, 0x34, 0x40, 0x2b, 0x3e, 0x7f, 0xa4, + 0xb5, 0x7c, 0x20, 0x03, 0x17, 0x18, 0x02, 0x46, 0x37, 0x67, 0x22, 0x34, 0x40, 0xd0, 0xcd, 0xbb, + 0x02, 0xed, 0x4b, 0x25, 0x40, 0x22, 0x25, 0x40, 0x78, 0xc6, 0x02, 0xed, 0x42, 0x3a, 0x27, 0x40, + 0xb4, 0xb5, 0x58, 0x06, 0x0b, 0x21, 0x3b, 0x40, 0xcb, 0x86, 0x20, 0x08, 0xcb, 0x7e, 0xcb, 0xc6, + 0xc8, 0x05, 0x00, 0x37, 0x21, 0x27, 0x40, 0x3f, 0xcb, 0x10, 0x10, 0xfe, 0x46, 0x7b, 0xfe, 0xfe, + 0x9f, 0x06, 0x1f, 0xb6, 0xa0, 0x1f, 0x77, 0xd3, 0xff, 0x2a, 0x0c, 0x40, 0xcb, 0xfc, 0xcd, 0x92, + 0x02, 0xed, 0x5f, 0x01, 0x01, 0x19, 0x3e, 0xf5, 0xcd, 0xb5, 0x02, 0x2b, 0xcd, 0x92, 0x02, 0xc3, + 0x29, 0x02, 0xdd, 0xe1, 0xfd, 0x4e, 0x28, 0xfd, 0xcb, 0x3b, 0x7e, 0x28, 0x0c, 0x79, 0xed, 0x44, + 0x3c, 0x08, 0xd3, 0xfe, 0xe1, 0xd1, 0xc1, 0xf1, 0xc9, 0x3e, 0xfc, 0x06, 0x01, 0xcd, 0xb5, 0x02, + 0x2b, 0xe3, 0xe3, 0xdd, 0xe9, 0xed, 0x4f, 0x3e, 0xdd, 0xfb, 0xe9, 0x21, 0xff, 0xff, 0x01, 0xfe, + 0xfe, 0xed, 0x78, 0xf6, 0x01, 0xf6, 0xe0, 0x57, 0x2f, 0xfe, 0x01, 0x9f, 0xb0, 0xa5, 0x6f, 0x7c, + 0xa2, 0x67, 0xcb, 0x00, 0xed, 0x78, 0x38, 0xed, 0x1f, 0xcb, 0x14, 0x17, 0x17, 0x17, 0x9f, 0xe6, + 0x18, 0xc6, 0x1f, 0x32, 0x28, 0x40, 0xc9, 0xfd, 0xcb, 0x3b, 0x7e, 0xc8, 0x76, 0xd3, 0xfd, 0xfd, + 0xcb, 0x3b, 0xbe, 0xc9, 0xcf, 0x0e, 0xcd, 0xa8, 0x03, 0x38, 0xf9, 0xeb, 0x11, 0xcb, 0x12, 0xcd, + 0x46, 0x0f, 0x30, 0x2e, 0x10, 0xfe, 0x1b, 0x7a, 0xb3, 0x20, 0xf4, 0xcd, 0x1e, 0x03, 0xcb, 0x7e, + 0x23, 0x28, 0xf8, 0x21, 0x09, 0x40, 0xcd, 0x1e, 0x03, 0xcd, 0xfc, 0x01, 0x18, 0xf8, 0x5e, 0x37, + 0xcb, 0x13, 0xc8, 0x9f, 0xe6, 0x05, 0xc6, 0x04, 0x4f, 0xd3, 0xff, 0x06, 0x23, 0x10, 0xfe, 0xcd, + 0x46, 0x0f, 0x30, 0x72, 0x06, 0x1e, 0x10, 0xfe, 0x0d, 0x20, 0xee, 0xa7, 0x10, 0xfd, 0x18, 0xe0, + 0xcd, 0xa8, 0x03, 0xcb, 0x12, 0xcb, 0x0a, 0xcd, 0x4c, 0x03, 0x18, 0xfb, 0x0e, 0x01, 0x06, 0x00, + 0x3e, 0x7f, 0xdb, 0xfe, 0xd3, 0xff, 0x1f, 0x30, 0x49, 0x17, 0x17, 0x38, 0x28, 0x10, 0xf1, 0xf1, + 0xba, 0xd2, 0xe5, 0x03, 0x62, 0x6b, 0xcd, 0x4c, 0x03, 0xcb, 0x7a, 0x79, 0x20, 0x03, 0xbe, 0x20, + 0xd6, 0x23, 0x17, 0x30, 0xf1, 0xfd, 0x34, 0x15, 0x21, 0x09, 0x40, 0x50, 0xcd, 0x4c, 0x03, 0x71, + 0xcd, 0xfc, 0x01, 0x18, 0xf6, 0xd5, 0x1e, 0x94, 0x06, 0x1a, 0x1d, 0xdb, 0xfe, 0x17, 0xcb, 0x7b, + 0x7b, 0x38, 0xf5, 0x10, 0xf5, 0xd1, 0x20, 0x04, 0xfe, 0x56, 0x30, 0xb2, 0x3f, 0xcb, 0x11, 0x30, + 0xad, 0xc9, 0x7a, 0xa7, 0x28, 0xbb, 0xcf, 0x0c, 0xcd, 0x55, 0x0f, 0x3a, 0x01, 0x40, 0x87, 0xfa, + 0x9a, 0x0d, 0xe1, 0xd0, 0xe5, 0xcd, 0xe7, 0x02, 0xcd, 0xf8, 0x13, 0x62, 0x6b, 0x0d, 0xf8, 0x09, + 0xcb, 0xfe, 0xc9, 0xcd, 0xe7, 0x02, 0xed, 0x4b, 0x04, 0x40, 0x0b, 0x60, 0x69, 0x3e, 0x3f, 0x36, + 0x02, 0x2b, 0xbc, 0x20, 0xfa, 0xa7, 0xed, 0x42, 0x09, 0x23, 0x30, 0x06, 0x35, 0x28, 0x03, 0x35, + 0x28, 0xf3, 0x22, 0x04, 0x40, 0x2a, 0x04, 0x40, 0x2b, 0x36, 0x3e, 0x2b, 0xf9, 0x2b, 0x2b, 0x22, + 0x02, 0x40, 0x3e, 0x1e, 0xed, 0x47, 0xed, 0x56, 0xfd, 0x21, 0x00, 0x40, 0xfd, 0x36, 0x3b, 0x40, + 0x21, 0x7d, 0x40, 0x22, 0x0c, 0x40, 0x06, 0x19, 0x36, 0x76, 0x23, 0x10, 0xfb, 0x22, 0x10, 0x40, + 0xcd, 0x9a, 0x14, 0xcd, 0xad, 0x14, 0xcd, 0x07, 0x02, 0xcd, 0x2a, 0x0a, 0x2a, 0x0a, 0x40, 0xed, + 0x5b, 0x23, 0x40, 0xa7, 0xed, 0x52, 0xeb, 0x30, 0x04, 0x19, 0x22, 0x23, 0x40, 0xcd, 0xd8, 0x09, + 0x28, 0x01, 0xeb, 0xcd, 0x3e, 0x07, 0xfd, 0x35, 0x1e, 0x20, 0x37, 0x2a, 0x0a, 0x40, 0xcd, 0xd8, + 0x09, 0x2a, 0x16, 0x40, 0x37, 0xed, 0x52, 0x21, 0x23, 0x40, 0x30, 0x0b, 0xeb, 0x7e, 0x23, 0xed, + 0xa0, 0x12, 0x18, 0xc5, 0x21, 0x0a, 0x40, 0x5e, 0x23, 0x56, 0xe5, 0xeb, 0x23, 0xcd, 0xd8, 0x09, + 0xcd, 0xbb, 0x05, 0xe1, 0xfd, 0xcb, 0x2d, 0x6e, 0x20, 0x08, 0x72, 0x2b, 0x73, 0x18, 0xaa, 0xcd, + 0xad, 0x14, 0x2a, 0x14, 0x40, 0x7e, 0xfe, 0x7e, 0x20, 0x08, 0x01, 0x06, 0x00, 0xcd, 0x60, 0x0a, + 0x18, 0xf3, 0xfe, 0x76, 0x23, 0x20, 0xee, 0xcd, 0x37, 0x05, 0xcd, 0x1f, 0x0a, 0x2a, 0x14, 0x40, + 0xfd, 0x36, 0x00, 0xff, 0xcd, 0x66, 0x07, 0xfd, 0xcb, 0x00, 0x7e, 0x20, 0x24, 0x3a, 0x22, 0x40, + 0xfe, 0x18, 0x30, 0x1d, 0x3c, 0x32, 0x22, 0x40, 0x47, 0x0e, 0x01, 0xcd, 0x18, 0x09, 0x54, 0x5d, + 0x7e, 0x2b, 0xbe, 0x20, 0xfc, 0x23, 0xeb, 0x3a, 0x05, 0x40, 0xfe, 0x4d, 0xdc, 0x5d, 0x0a, 0x18, + 0xc9, 0x21, 0x00, 0x00, 0x22, 0x18, 0x40, 0x21, 0x3b, 0x40, 0xcb, 0x7e, 0xcc, 0x29, 0x02, 0xcb, + 0x46, 0x28, 0xfc, 0xed, 0x4b, 0x25, 0x40, 0xcd, 0x4b, 0x0f, 0xcd, 0xbd, 0x07, 0x30, 0x93, 0x3a, + 0x06, 0x40, 0x3d, 0xfa, 0x08, 0x05, 0x20, 0x0f, 0x32, 0x06, 0x40, 0x1d, 0x7b, 0xd6, 0x27, 0x38, + 0x01, 0x5f, 0x21, 0xcc, 0x00, 0x18, 0x0e, 0x7e, 0xfe, 0x76, 0x28, 0x2f, 0xfe, 0x40, 0xcb, 0xff, + 0x38, 0x19, 0x21, 0xc7, 0x00, 0x19, 0x18, 0x0d, 0x7e, 0xfd, 0xcb, 0x01, 0x56, 0x20, 0x07, 0xc6, + 0xc0, 0xfe, 0xe6, 0x30, 0x01, 0x7e, 0xfe, 0xf0, 0xea, 0x2d, 0x05, 0x5f, 0xcd, 0x37, 0x05, 0x7b, + 0xcd, 0x26, 0x05, 0xc3, 0x72, 0x04, 0xcd, 0x9b, 0x09, 0x12, 0xc9, 0x3e, 0x78, 0x5f, 0x21, 0x82, + 0x04, 0x19, 0x19, 0x4e, 0x23, 0x46, 0xc5, 0x2a, 0x14, 0x40, 0xfd, 0xcb, 0x2d, 0x6e, 0x20, 0x16, + 0xfd, 0xcb, 0x01, 0x96, 0x7e, 0xfe, 0x7f, 0xc8, 0x23, 0xcd, 0xb4, 0x07, 0x28, 0xf6, 0xfe, 0x26, + 0x38, 0xf2, 0xfe, 0xde, 0x28, 0xea, 0xfd, 0xcb, 0x01, 0xd6, 0x18, 0xe8, 0x01, 0x01, 0x00, 0xc3, + 0x60, 0x0a, 0x9f, 0x05, 0x54, 0x04, 0x76, 0x05, 0x7f, 0x05, 0xaf, 0x05, 0xc4, 0x05, 0x0c, 0x06, + 0x8b, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xcd, 0x93, 0x05, 0x7e, 0x36, 0x7f, 0x23, 0x18, 0x09, 0x23, + 0x7e, 0xfe, 0x76, 0x28, 0x18, 0x36, 0x7f, 0x2b, 0x77, 0x18, 0x98, 0xcd, 0x93, 0x05, 0xcd, 0x5c, + 0x05, 0x18, 0xf6, 0x2b, 0xed, 0x5b, 0x14, 0x40, 0x1a, 0xfe, 0x7f, 0xc0, 0xd1, 0x18, 0xea, 0x2a, + 0x0a, 0x40, 0xcd, 0xd8, 0x09, 0xeb, 0xcd, 0xbb, 0x05, 0x21, 0x0b, 0x40, 0xc3, 0x64, 0x04, 0x7b, + 0xe6, 0x07, 0x32, 0x06, 0x40, 0x18, 0xe6, 0xeb, 0x11, 0xc2, 0x04, 0x7e, 0xe6, 0xc0, 0x20, 0xf7, + 0x56, 0x23, 0x5e, 0xc9, 0xcd, 0x1f, 0x0a, 0x21, 0x6f, 0x04, 0xe5, 0xfd, 0xcb, 0x2d, 0x6e, 0xc0, + 0x2a, 0x14, 0x40, 0x22, 0x0e, 0x40, 0x21, 0x21, 0x18, 0x22, 0x39, 0x40, 0x2a, 0x0a, 0x40, 0xcd, + 0xd8, 0x09, 0xcd, 0xbb, 0x05, 0x7a, 0xb3, 0xc8, 0x2b, 0xcd, 0xa5, 0x0a, 0x23, 0x4e, 0x23, 0x46, + 0x23, 0xed, 0x5b, 0x0e, 0x40, 0x3e, 0x7f, 0x12, 0x13, 0xe5, 0x21, 0x1d, 0x00, 0x19, 0x09, 0xed, + 0x72, 0xe1, 0xd0, 0xed, 0xb0, 0xeb, 0xd1, 0xcd, 0xa6, 0x14, 0x18, 0x91, 0xcd, 0x1f, 0x0a, 0x21, + 0x72, 0x04, 0xfd, 0xcb, 0x2d, 0x6e, 0x20, 0x11, 0x2a, 0x14, 0x40, 0x7e, 0xfe, 0xff, 0x28, 0x06, + 0xcd, 0xe2, 0x08, 0xcd, 0x2a, 0x0a, 0x21, 0x19, 0x04, 0xe5, 0xcd, 0xba, 0x0c, 0xe1, 0xcd, 0x37, + 0x05, 0xcd, 0x5c, 0x05, 0xcd, 0x73, 0x0a, 0x20, 0x15, 0x78, 0xb1, 0xc2, 0xe0, 0x06, 0x0b, 0x0b, + 0xed, 0x43, 0x07, 0x40, 0xfd, 0x36, 0x22, 0x02, 0xed, 0x5b, 0x0c, 0x40, 0x18, 0x13, 0xfe, 0x76, + 0x28, 0x12, 0xed, 0x4b, 0x30, 0x40, 0xcd, 0x18, 0x09, 0xed, 0x5b, 0x29, 0x40, 0xfd, 0x36, 0x22, + 0x02, 0xdf, 0xfe, 0x76, 0xca, 0x13, 0x04, 0xfd, 0x36, 0x01, 0x80, 0xeb, 0x22, 0x29, 0x40, 0xeb, + 0xcd, 0x4d, 0x00, 0xcd, 0xc1, 0x0c, 0xfd, 0xcb, 0x01, 0x8e, 0x3e, 0xc0, 0xfd, 0x77, 0x19, 0xcd, + 0xa3, 0x14, 0xfd, 0xcb, 0x2d, 0xae, 0xfd, 0xcb, 0x00, 0x7e, 0x28, 0x22, 0x2a, 0x29, 0x40, 0xa6, + 0x20, 0x1c, 0x56, 0x23, 0x5e, 0xed, 0x53, 0x07, 0x40, 0x23, 0x5e, 0x23, 0x56, 0x23, 0xeb, 0x19, + 0xcd, 0x46, 0x0f, 0x38, 0xc7, 0x21, 0x00, 0x40, 0xcb, 0x7e, 0x28, 0x02, 0x36, 0x0c, 0xfd, 0xcb, + 0x38, 0x7e, 0xcc, 0x71, 0x08, 0x01, 0x21, 0x01, 0xcd, 0x18, 0x09, 0x3a, 0x00, 0x40, 0xed, 0x4b, + 0x07, 0x40, 0x3c, 0x28, 0x0c, 0xfe, 0x09, 0x20, 0x01, 0x03, 0xed, 0x43, 0x2b, 0x40, 0x20, 0x01, + 0x0b, 0xcd, 0xeb, 0x07, 0x3e, 0x18, 0xd7, 0xcd, 0x98, 0x0a, 0xcd, 0xad, 0x14, 0xc3, 0xc1, 0x04, + 0xed, 0x43, 0x0a, 0x40, 0x2a, 0x16, 0x40, 0xeb, 0x21, 0x13, 0x04, 0xe5, 0x2a, 0x1a, 0x40, 0xed, + 0x52, 0xe5, 0xc5, 0xcd, 0xe7, 0x02, 0xcd, 0x2a, 0x0a, 0xe1, 0xcd, 0xd8, 0x09, 0x20, 0x06, 0xcd, + 0xf2, 0x09, 0xcd, 0x60, 0x0a, 0xc1, 0x79, 0x3d, 0xb0, 0xc8, 0xc5, 0x03, 0x03, 0x03, 0x03, 0x2b, + 0xcd, 0x9e, 0x09, 0xcd, 0x07, 0x02, 0xc1, 0xc5, 0x13, 0x2a, 0x1a, 0x40, 0x2b, 0xed, 0xb8, 0x2a, + 0x0a, 0x40, 0xeb, 0xc1, 0x70, 0x2b, 0x71, 0x2b, 0x73, 0x2b, 0x72, 0xc9, 0xfd, 0xcb, 0x01, 0xce, + 0xcd, 0xa7, 0x0e, 0x78, 0xe6, 0x3f, 0x67, 0x69, 0x22, 0x0a, 0x40, 0xcd, 0xd8, 0x09, 0x1e, 0x00, + 0xcd, 0x45, 0x07, 0x18, 0xfb, 0xed, 0x4b, 0x0a, 0x40, 0xcd, 0xea, 0x09, 0x16, 0x92, 0x28, 0x05, + 0x11, 0x00, 0x00, 0xcb, 0x13, 0xfd, 0x73, 0x1e, 0x7e, 0xfe, 0x40, 0xc1, 0xd0, 0xc5, 0xcd, 0xa5, + 0x0a, 0x23, 0x7a, 0xd7, 0x23, 0x23, 0x22, 0x16, 0x40, 0xfd, 0xcb, 0x01, 0xc6, 0xed, 0x4b, 0x18, + 0x40, 0x2a, 0x16, 0x40, 0xa7, 0xed, 0x42, 0x20, 0x03, 0x3e, 0xb8, 0xd7, 0x2a, 0x16, 0x40, 0x7e, + 0x23, 0xcd, 0xb4, 0x07, 0x22, 0x16, 0x40, 0x28, 0xe4, 0xfe, 0x7f, 0x28, 0x10, 0xfe, 0x76, 0x28, + 0x5d, 0xcb, 0x77, 0x28, 0x05, 0xcd, 0x4b, 0x09, 0x18, 0xd3, 0xd7, 0x18, 0xd0, 0x3a, 0x06, 0x40, + 0x06, 0xab, 0xa7, 0x20, 0x05, 0x3a, 0x01, 0x40, 0x06, 0xb0, 0x1f, 0x1f, 0xe6, 0x01, 0x80, 0xcd, + 0xf5, 0x07, 0x18, 0xb9, 0xfe, 0x7e, 0xc0, 0x23, 0x23, 0x23, 0x23, 0x23, 0xc9, 0x16, 0x00, 0xcb, + 0x28, 0x9f, 0xf6, 0x26, 0x2e, 0x05, 0x95, 0x85, 0x37, 0xcb, 0x19, 0x38, 0xfa, 0x0c, 0xc0, 0x48, + 0x2d, 0x2e, 0x01, 0x20, 0xf2, 0x21, 0x7d, 0x00, 0x5f, 0x19, 0x37, 0xc9, 0x7b, 0xa7, 0xf8, 0x18, + 0x10, 0xaf, 0x09, 0x3c, 0x38, 0xfc, 0xed, 0x42, 0x3d, 0x28, 0xf1, 0x1e, 0x1c, 0x83, 0xa7, 0x28, + 0x04, 0xfd, 0xcb, 0x01, 0x86, 0xd9, 0xe5, 0xfd, 0xcb, 0x01, 0x4e, 0x20, 0x05, 0xcd, 0x08, 0x08, + 0x18, 0x03, 0xcd, 0x51, 0x08, 0xe1, 0xd9, 0xc9, 0x57, 0xed, 0x4b, 0x39, 0x40, 0x79, 0xfe, 0x21, + 0x28, 0x1a, 0x3e, 0x76, 0xba, 0x28, 0x30, 0x2a, 0x0e, 0x40, 0xbe, 0x7a, 0x20, 0x20, 0x0d, 0x20, + 0x19, 0x23, 0x22, 0x0e, 0x40, 0x0e, 0x21, 0x05, 0xed, 0x43, 0x39, 0x40, 0x78, 0xfd, 0xbe, 0x22, + 0x28, 0x03, 0xa7, 0x20, 0xdd, 0x2e, 0x04, 0xc3, 0x58, 0x00, 0xcd, 0x9b, 0x09, 0xeb, 0x77, 0x23, + 0x22, 0x0e, 0x40, 0xfd, 0x35, 0x39, 0xc9, 0x0e, 0x21, 0x05, 0xfd, 0xcb, 0x01, 0xc6, 0xc3, 0x18, + 0x09, 0xfe, 0x76, 0x28, 0x1c, 0x4f, 0x3a, 0x38, 0x40, 0xe6, 0x7f, 0xfe, 0x5c, 0x6f, 0x26, 0x40, + 0xcc, 0x71, 0x08, 0x71, 0x2c, 0xfd, 0x75, 0x38, 0xc9, 0x16, 0x16, 0x2a, 0x0c, 0x40, 0x23, 0x18, + 0x05, 0x16, 0x01, 0x21, 0x3c, 0x40, 0xcd, 0xe7, 0x02, 0xc5, 0xe5, 0xaf, 0x5f, 0xd3, 0xfb, 0xe1, + 0xcd, 0x46, 0x0f, 0x38, 0x05, 0x1f, 0xd3, 0xfb, 0xcf, 0x0c, 0xdb, 0xfb, 0x87, 0xfa, 0xde, 0x08, + 0x30, 0xee, 0xe5, 0xd5, 0x7a, 0xfe, 0x02, 0x9f, 0xa3, 0x07, 0xa3, 0x57, 0x4e, 0x79, 0x23, 0xfe, + 0x76, 0x28, 0x24, 0xe5, 0xcb, 0x27, 0x87, 0x87, 0x26, 0x0f, 0xcb, 0x14, 0x83, 0x6f, 0xcb, 0x11, + 0x9f, 0xae, 0x4f, 0x06, 0x08, 0x7a, 0xcb, 0x01, 0x1f, 0x67, 0xdb, 0xfb, 0x1f, 0x30, 0xfb, 0x7c, + 0xd3, 0xfb, 0x10, 0xf1, 0xe1, 0x18, 0xd5, 0xdb, 0xfb, 0x1f, 0x30, 0xfb, 0x7a, 0x0f, 0xd3, 0xfb, + 0xd1, 0x1c, 0xcb, 0x5b, 0x28, 0xa7, 0xc1, 0x15, 0x20, 0xa0, 0x3e, 0x04, 0xd3, 0xfb, 0xcd, 0x07, + 0x02, 0xc1, 0x21, 0x5c, 0x40, 0x36, 0x76, 0x06, 0x20, 0x2b, 0x36, 0x00, 0x10, 0xfb, 0x7d, 0xcb, + 0xff, 0x32, 0x38, 0x40, 0xc9, 0x3e, 0x17, 0x90, 0x38, 0x0b, 0xfd, 0xbe, 0x22, 0xda, 0x35, 0x08, + 0x3c, 0x47, 0x3e, 0x1f, 0x91, 0xda, 0xad, 0x0e, 0xc6, 0x02, 0x4f, 0xfd, 0xcb, 0x01, 0x4e, 0x28, + 0x07, 0x3e, 0x5d, 0x91, 0x32, 0x38, 0x40, 0xc9, 0xed, 0x43, 0x39, 0x40, 0x2a, 0x10, 0x40, 0x51, + 0x3e, 0x22, 0x91, 0x4f, 0x3e, 0x76, 0x04, 0x2b, 0xbe, 0x20, 0xfc, 0x10, 0xfa, 0x23, 0xed, 0xb1, + 0x2b, 0x22, 0x0e, 0x40, 0x37, 0xe0, 0x15, 0xc8, 0xc5, 0xcd, 0x9e, 0x09, 0xc1, 0x41, 0x62, 0x6b, + 0x36, 0x00, 0x2b, 0x10, 0xfb, 0xeb, 0x23, 0x22, 0x0e, 0x40, 0xc9, 0xf5, 0xcd, 0x75, 0x09, 0x30, + 0x08, 0xfd, 0xcb, 0x01, 0x46, 0x20, 0x02, 0xaf, 0xd7, 0x0a, 0xe6, 0x3f, 0xd7, 0x0a, 0x03, 0x87, + 0x30, 0xf7, 0xc1, 0xcb, 0x78, 0xc8, 0xfe, 0x1a, 0x28, 0x03, 0xfe, 0x38, 0xd8, 0xaf, 0xfd, 0xcb, + 0x01, 0xc6, 0xc3, 0xf5, 0x07, 0xe5, 0x21, 0x11, 0x01, 0xcb, 0x7f, 0x28, 0x02, 0xe6, 0x3f, 0xfe, + 0x43, 0x30, 0x10, 0x47, 0x04, 0xcb, 0x7e, 0x23, 0x28, 0xfb, 0x10, 0xf9, 0xcb, 0x77, 0x20, 0x02, + 0xfe, 0x18, 0x3f, 0x44, 0x4d, 0xe1, 0xd0, 0x0a, 0xc6, 0xe4, 0xc9, 0x01, 0x01, 0x00, 0xe5, 0xcd, + 0xc5, 0x0e, 0xe1, 0xcd, 0xad, 0x09, 0x2a, 0x1c, 0x40, 0xeb, 0xed, 0xb8, 0xc9, 0xf5, 0xe5, 0x21, + 0x0c, 0x40, 0x3e, 0x09, 0x5e, 0x23, 0x56, 0xe3, 0xa7, 0xed, 0x52, 0x19, 0xe3, 0x30, 0x09, 0xd5, + 0xeb, 0x09, 0xeb, 0x72, 0x2b, 0x73, 0x23, 0xd1, 0x23, 0x3d, 0x20, 0xe8, 0xeb, 0xd1, 0xf1, 0xa7, + 0xed, 0x52, 0x44, 0x4d, 0x03, 0x19, 0xeb, 0xc9, 0xe5, 0x21, 0x7d, 0x40, 0x54, 0x5d, 0xc1, 0xcd, + 0xea, 0x09, 0xd0, 0xc5, 0xcd, 0xf2, 0x09, 0xeb, 0x18, 0xf4, 0x7e, 0xb8, 0xc0, 0x23, 0x7e, 0x2b, + 0xb9, 0xc9, 0xe5, 0x7e, 0xfe, 0x40, 0x38, 0x17, 0xcb, 0x6f, 0x28, 0x14, 0x87, 0xfa, 0x01, 0x0a, + 0x3f, 0x01, 0x05, 0x00, 0x30, 0x02, 0x0e, 0x11, 0x17, 0x23, 0x7e, 0x30, 0xfb, 0x18, 0x06, 0x23, + 0x23, 0x4e, 0x23, 0x46, 0x23, 0x09, 0xd1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x19, 0xeb, 0xc9, 0xfd, + 0x46, 0x22, 0xc5, 0xcd, 0x2c, 0x0a, 0xc1, 0x05, 0x18, 0x02, 0x06, 0x18, 0xfd, 0xcb, 0x01, 0x8e, + 0x0e, 0x21, 0xc5, 0xcd, 0x18, 0x09, 0xc1, 0x3a, 0x05, 0x40, 0xfe, 0x4d, 0x38, 0x14, 0xfd, 0xcb, + 0x3a, 0xfe, 0xaf, 0xcd, 0xf5, 0x07, 0x2a, 0x39, 0x40, 0x7d, 0xb4, 0xe6, 0x7e, 0x20, 0xf3, 0xc3, + 0x18, 0x09, 0x54, 0x5d, 0x2b, 0x48, 0x06, 0x00, 0xed, 0xb0, 0x2a, 0x10, 0x40, 0xcd, 0x17, 0x0a, + 0xc5, 0x78, 0x2f, 0x47, 0x79, 0x2f, 0x4f, 0x03, 0xcd, 0xad, 0x09, 0xeb, 0xe1, 0x19, 0xd5, 0xed, + 0xb0, 0xe1, 0xc9, 0x2a, 0x14, 0x40, 0xcd, 0x4d, 0x00, 0xdf, 0xfd, 0xcb, 0x2d, 0x6e, 0xc0, 0x21, + 0x5d, 0x40, 0x22, 0x1c, 0x40, 0xcd, 0x48, 0x15, 0xcd, 0x8a, 0x15, 0x38, 0x04, 0x21, 0xf0, 0xd8, + 0x09, 0xda, 0x9a, 0x0d, 0xbf, 0xc3, 0xbc, 0x14, 0xd5, 0xe5, 0xaf, 0xcb, 0x78, 0x20, 0x20, 0x60, + 0x69, 0x1e, 0xff, 0x18, 0x08, 0xd5, 0x56, 0x23, 0x5e, 0xe5, 0xeb, 0x1e, 0x00, 0x01, 0x18, 0xfc, + 0xcd, 0xe1, 0x07, 0x01, 0x9c, 0xff, 0xcd, 0xe1, 0x07, 0x0e, 0xf6, 0xcd, 0xe1, 0x07, 0x7d, 0xcd, + 0xeb, 0x07, 0xe1, 0xd1, 0xc9, 0xcd, 0xa6, 0x0d, 0xe1, 0xc8, 0xe9, 0xfd, 0xcb, 0x01, 0xce, 0x7e, + 0xfe, 0x76, 0xca, 0x84, 0x0b, 0xd6, 0x1a, 0xce, 0x00, 0x28, 0x69, 0xfe, 0xa7, 0x20, 0x1b, 0xe7, + 0xcd, 0x92, 0x0d, 0xfe, 0x1a, 0xc2, 0x9a, 0x0d, 0xe7, 0xcd, 0x92, 0x0d, 0xcd, 0x4e, 0x0b, 0xef, + 0x01, 0x34, 0xcd, 0xf5, 0x0b, 0xcd, 0xf5, 0x08, 0x18, 0x3d, 0xfe, 0xa8, 0x20, 0x33, 0xe7, 0xcd, + 0x92, 0x0d, 0xcd, 0x4e, 0x0b, 0xcd, 0x02, 0x0c, 0xc2, 0xad, 0x0e, 0xe6, 0x1f, 0x4f, 0xfd, 0xcb, + 0x01, 0x4e, 0x28, 0x0a, 0xfd, 0x96, 0x38, 0xcb, 0xff, 0xc6, 0x3c, 0xd4, 0x71, 0x08, 0xfd, 0x86, + 0x39, 0xfe, 0x21, 0x3a, 0x3a, 0x40, 0xde, 0x01, 0xcd, 0xfa, 0x08, 0xfd, 0xcb, 0x01, 0xc6, 0x18, + 0x06, 0xcd, 0x55, 0x0f, 0xcd, 0x55, 0x0b, 0xdf, 0xd6, 0x1a, 0xce, 0x00, 0x28, 0x06, 0xcd, 0x1d, + 0x0d, 0xc3, 0x84, 0x0b, 0xd4, 0x8b, 0x0b, 0xe7, 0xfe, 0x76, 0xc8, 0xc3, 0xd5, 0x0a, 0xcd, 0xa6, + 0x0d, 0xc0, 0xe1, 0x18, 0xe2, 0xcd, 0xc5, 0x0a, 0xfd, 0xcb, 0x01, 0x76, 0xcc, 0xf8, 0x13, 0x28, + 0x0a, 0xc3, 0xdb, 0x15, 0x3e, 0x0b, 0xd7, 0xed, 0x5b, 0x18, 0x40, 0x78, 0xb1, 0x0b, 0xc8, 0x1a, + 0x13, 0xed, 0x53, 0x18, 0x40, 0xcb, 0x77, 0x28, 0xed, 0xfe, 0xc0, 0x28, 0xe7, 0xc5, 0xcd, 0x4b, + 0x09, 0xc1, 0x18, 0xe3, 0xcd, 0xc5, 0x0a, 0x3e, 0x76, 0xd7, 0xc9, 0xcd, 0xc5, 0x0a, 0xfd, 0xcb, + 0x01, 0xc6, 0xaf, 0xd7, 0xed, 0x4b, 0x39, 0x40, 0x79, 0xfd, 0xcb, 0x01, 0x4e, 0x28, 0x05, 0x3e, + 0x5d, 0xfd, 0x96, 0x38, 0x0e, 0x11, 0xb9, 0x30, 0x02, 0x0e, 0x01, 0xcd, 0x0b, 0x09, 0xc9, 0xcd, + 0xf5, 0x0b, 0xed, 0x43, 0x36, 0x40, 0x3e, 0x2b, 0x90, 0xda, 0xad, 0x0e, 0x47, 0x3e, 0x01, 0xcb, + 0x28, 0x30, 0x02, 0x3e, 0x04, 0xcb, 0x29, 0x30, 0x01, 0x07, 0xf5, 0xcd, 0xf5, 0x08, 0x7e, 0x07, + 0xfe, 0x10, 0x30, 0x06, 0x0f, 0x30, 0x02, 0xee, 0x8f, 0x47, 0x11, 0x9e, 0x0c, 0x3a, 0x30, 0x40, + 0x93, 0xfa, 0xe9, 0x0b, 0xf1, 0x2f, 0xa0, 0x18, 0x02, 0xf1, 0xb0, 0xfe, 0x08, 0x38, 0x02, 0xee, + 0x8f, 0xd9, 0xd7, 0xd9, 0xc9, 0xcd, 0x02, 0x0c, 0x47, 0xc5, 0xcd, 0x02, 0x0c, 0x59, 0xc1, 0x51, + 0x4f, 0xc9, 0xcd, 0xcd, 0x15, 0xda, 0xad, 0x0e, 0x0e, 0x01, 0xc8, 0x0e, 0xff, 0xc9, 0xfd, 0x46, + 0x22, 0x0e, 0x21, 0xcd, 0x18, 0x09, 0xcd, 0x9b, 0x09, 0x7e, 0x12, 0xfd, 0x34, 0x3a, 0x2a, 0x0c, + 0x40, 0x23, 0x54, 0x5d, 0xed, 0xb1, 0xc3, 0x5d, 0x0a, 0x8b, 0x8d, 0x2d, 0x7f, 0x81, 0x49, 0x75, + 0x5f, 0x40, 0x42, 0x2b, 0x17, 0x1f, 0x37, 0x52, 0x45, 0x0f, 0x6d, 0x2b, 0x44, 0x2d, 0x5a, 0x3b, + 0x4c, 0x45, 0x0d, 0x52, 0x5a, 0x4d, 0x15, 0x6a, 0x01, 0x14, 0x02, 0x06, 0x00, 0x81, 0x0e, 0x06, + 0xde, 0x05, 0xab, 0x0d, 0x06, 0x00, 0xb5, 0x0e, 0x00, 0xdc, 0x0c, 0x00, 0xd8, 0x0e, 0x04, 0x14, + 0x06, 0xdf, 0x06, 0x05, 0xb9, 0x0d, 0x04, 0x00, 0x2e, 0x0e, 0x05, 0xcf, 0x0a, 0x01, 0x00, 0xe9, + 0x0e, 0x05, 0x09, 0x14, 0x05, 0x6a, 0x0d, 0x00, 0xc3, 0x03, 0x03, 0xaf, 0x0e, 0x03, 0x30, 0x07, + 0x06, 0x1a, 0x06, 0x00, 0x92, 0x0e, 0x03, 0x6c, 0x0e, 0x05, 0x40, 0x03, 0x05, 0xf6, 0x02, 0x00, + 0x7c, 0x0e, 0x00, 0x9a, 0x14, 0x00, 0x2a, 0x0a, 0x06, 0x1a, 0x06, 0x00, 0xaf, 0x0b, 0x06, 0x1a, + 0x06, 0x00, 0xaf, 0x0b, 0x00, 0x0e, 0x0c, 0x06, 0x00, 0x32, 0x0f, 0x00, 0x2b, 0x0f, 0x00, 0x23, + 0x0f, 0x00, 0x69, 0x08, 0x05, 0xcb, 0x0a, 0x03, 0x2c, 0x07, 0xfd, 0x36, 0x01, 0x01, 0xcd, 0x73, + 0x0a, 0xcd, 0xbc, 0x14, 0x21, 0x00, 0x40, 0x36, 0xff, 0x21, 0x2d, 0x40, 0xcb, 0x6e, 0x28, 0x0e, + 0xfe, 0xe3, 0x7e, 0xc2, 0x6f, 0x0d, 0xcd, 0xa6, 0x0d, 0xc8, 0xcf, 0x0c, 0xcf, 0x08, 0xdf, 0x06, + 0x00, 0xfe, 0x76, 0xc8, 0x4f, 0xe7, 0x79, 0xd6, 0xe1, 0x38, 0x3b, 0x4f, 0x21, 0x29, 0x0c, 0x09, + 0x4e, 0x09, 0x18, 0x03, 0x2a, 0x30, 0x40, 0x7e, 0x23, 0x22, 0x30, 0x40, 0x01, 0xf4, 0x0c, 0xc5, + 0x4f, 0xfe, 0x0b, 0x30, 0x0b, 0x21, 0x16, 0x0d, 0x06, 0x00, 0x09, 0x4e, 0x09, 0xe5, 0xdf, 0xc9, + 0xdf, 0xb9, 0x20, 0x12, 0xe7, 0xc9, 0x17, 0x25, 0x53, 0x0f, 0x6b, 0x13, 0x76, 0xcd, 0xa6, 0x0d, + 0xc0, 0xc1, 0x7e, 0xfe, 0x76, 0xc8, 0x18, 0x72, 0xfe, 0x76, 0xcd, 0x9c, 0x0d, 0xbf, 0xc1, 0xcc, + 0x1d, 0x0d, 0xeb, 0x2a, 0x30, 0x40, 0x4e, 0x23, 0x46, 0xeb, 0xc5, 0xc9, 0xcd, 0x1c, 0x11, 0xfd, + 0x36, 0x2d, 0x00, 0x30, 0x08, 0xfd, 0xcb, 0x2d, 0xce, 0x20, 0x18, 0xcf, 0x01, 0xcc, 0xa7, 0x11, + 0xfd, 0xcb, 0x01, 0x76, 0x20, 0x0d, 0xaf, 0xcd, 0xa6, 0x0d, 0xc4, 0xf8, 0x13, 0x21, 0x2d, 0x40, + 0xb6, 0x77, 0xeb, 0xed, 0x43, 0x2e, 0x40, 0x22, 0x12, 0x40, 0xc9, 0xc1, 0x3a, 0x01, 0x40, 0xf5, + 0xcd, 0x55, 0x0f, 0xf1, 0x01, 0x21, 0x13, 0xfd, 0x56, 0x01, 0xaa, 0xe6, 0x40, 0x20, 0x1b, 0xcb, + 0x7a, 0x20, 0xb7, 0x18, 0x9d, 0xcd, 0x1c, 0x11, 0xf5, 0x79, 0xf6, 0x9f, 0x3c, 0x20, 0x0b, 0xf1, + 0x18, 0xad, 0xcd, 0x55, 0x0f, 0xfd, 0xcb, 0x01, 0x76, 0xc0, 0xcf, 0x0b, 0x20, 0xf4, 0xcd, 0xa6, + 0x0d, 0xc8, 0xef, 0xa0, 0x34, 0xc9, 0xfd, 0xcb, 0x01, 0x7e, 0xc9, 0xcd, 0xa6, 0x0d, 0x28, 0x06, + 0xef, 0x02, 0x34, 0x1a, 0xa7, 0xc8, 0xc3, 0xde, 0x0c, 0xfe, 0xe0, 0x20, 0x09, 0xe7, 0xcd, 0x92, + 0x0d, 0xcd, 0x1d, 0x0d, 0x18, 0x06, 0xcd, 0x1d, 0x0d, 0xef, 0xa1, 0x34, 0xef, 0xc0, 0x02, 0x01, + 0xe0, 0x01, 0x34, 0xcd, 0x21, 0x13, 0x22, 0x1f, 0x40, 0x2b, 0x7e, 0xcb, 0xfe, 0x01, 0x06, 0x00, + 0x09, 0x07, 0x38, 0x06, 0xcb, 0x21, 0xcd, 0x9e, 0x09, 0x23, 0xe5, 0xef, 0x02, 0x02, 0x34, 0xe1, + 0xeb, 0x0e, 0x0a, 0xed, 0xb0, 0x2a, 0x07, 0x40, 0xeb, 0x13, 0x73, 0x23, 0x72, 0xcd, 0x5a, 0x0e, + 0xd0, 0xfd, 0xcb, 0x08, 0x7e, 0xc0, 0xfd, 0x46, 0x2e, 0xcb, 0xb0, 0x2a, 0x29, 0x40, 0x7e, 0xe6, + 0xc0, 0x20, 0x17, 0xc5, 0xcd, 0xf2, 0x09, 0xc1, 0x23, 0x23, 0x23, 0xcd, 0x4c, 0x00, 0xdf, 0xfe, + 0xf3, 0xeb, 0x20, 0xea, 0xeb, 0xe7, 0xeb, 0xb8, 0x20, 0xe4, 0x22, 0x29, 0x40, 0xc9, 0xfd, 0xcb, + 0x2d, 0x4e, 0xc2, 0x4b, 0x0d, 0x2a, 0x12, 0x40, 0xcb, 0x7e, 0x28, 0x1c, 0x23, 0x22, 0x1f, 0x40, + 0xef, 0xe0, 0xe2, 0x0f, 0xc0, 0x02, 0x34, 0xcd, 0x5a, 0x0e, 0xd8, 0x2a, 0x1f, 0x40, 0x11, 0x0f, + 0x00, 0x19, 0x5e, 0x23, 0x56, 0xeb, 0x18, 0x2e, 0xcf, 0x00, 0xef, 0xe1, 0xe0, 0xe2, 0x32, 0x00, + 0x02, 0x01, 0x03, 0x33, 0x00, 0x04, 0x34, 0xa7, 0xc9, 0x34, 0x37, 0xc9, 0xcd, 0xa7, 0x0e, 0x78, + 0xb1, 0x20, 0x04, 0xed, 0x4b, 0x34, 0x40, 0xed, 0x43, 0x32, 0x40, 0xc9, 0x2a, 0x2b, 0x40, 0x18, + 0x05, 0xcd, 0xa7, 0x0e, 0x60, 0x69, 0x7c, 0xfe, 0xf0, 0x30, 0x22, 0xcd, 0xd8, 0x09, 0x22, 0x29, + 0x40, 0xc9, 0xcd, 0xcd, 0x15, 0x38, 0x16, 0x28, 0x02, 0xed, 0x44, 0xf5, 0xcd, 0xa7, 0x0e, 0xf1, + 0xfd, 0xcb, 0x00, 0x7e, 0xc8, 0x02, 0xc9, 0xcd, 0x8a, 0x15, 0x38, 0x01, 0xc8, 0xcf, 0x0a, 0xcd, + 0x81, 0x0e, 0xc3, 0x9a, 0x14, 0x2a, 0x07, 0x40, 0x23, 0xe3, 0xe5, 0xed, 0x73, 0x02, 0x40, 0xcd, + 0x81, 0x0e, 0x01, 0x06, 0x00, 0x2a, 0x1c, 0x40, 0x09, 0x38, 0x08, 0xeb, 0x21, 0x24, 0x00, 0x19, + 0xed, 0x72, 0xd8, 0x2e, 0x03, 0xc3, 0x58, 0x00, 0xe1, 0xe3, 0x7c, 0xfe, 0x3e, 0x28, 0x06, 0xed, + 0x73, 0x02, 0x40, 0x18, 0xa1, 0xe3, 0xe5, 0xcf, 0x06, 0xfd, 0xcb, 0x08, 0x7e, 0x20, 0x32, 0xcd, + 0xa3, 0x14, 0x21, 0x2d, 0x40, 0xcb, 0xee, 0xcb, 0xb6, 0x3a, 0x01, 0x40, 0xe6, 0x40, 0x01, 0x02, + 0x00, 0x20, 0x02, 0x0e, 0x04, 0xb6, 0x77, 0xf7, 0x36, 0x76, 0x79, 0x0f, 0x0f, 0x38, 0x05, 0x3e, + 0x0b, 0x12, 0x2b, 0x77, 0x2b, 0x36, 0x7f, 0x2a, 0x39, 0x40, 0x22, 0x30, 0x40, 0xe1, 0xc3, 0x72, + 0x04, 0xcf, 0x07, 0xcd, 0xe7, 0x02, 0xfd, 0xcb, 0x3b, 0xb6, 0xc9, 0xfd, 0xcb, 0x3b, 0xf6, 0xc3, + 0x07, 0x02, 0xcd, 0xa7, 0x0e, 0xcd, 0xe7, 0x02, 0x60, 0x69, 0xcd, 0x2d, 0x02, 0xfd, 0x36, 0x35, + 0xff, 0xcd, 0x07, 0x02, 0x18, 0x05, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0xfd, 0xcb, 0x3b, 0x86, 0x3e, + 0xff, 0x32, 0x27, 0x40, 0xc9, 0xdf, 0x06, 0x00, 0xc5, 0xfe, 0x40, 0x20, 0x2f, 0xcd, 0xa6, 0x0d, + 0x28, 0x28, 0xed, 0x4b, 0x32, 0x40, 0xcd, 0x20, 0x15, 0xef, 0xa1, 0x0f, 0x30, 0x37, 0x16, 0x04, + 0x30, 0x80, 0x41, 0x00, 0x00, 0x80, 0x2e, 0x02, 0xa1, 0x03, 0x2d, 0x34, 0xcd, 0x8a, 0x15, 0xed, + 0x43, 0x32, 0x40, 0x7e, 0xa7, 0x28, 0x03, 0xd6, 0x10, 0x77, 0x18, 0x0d, 0xfe, 0x42, 0x20, 0x0d, + 0xcd, 0xa6, 0x0d, 0x28, 0x04, 0xef, 0xa3, 0x34, 0x34, 0xe7, 0xc3, 0x83, 0x10, 0xfe, 0x41, 0x20, + 0x11, 0xcd, 0xbb, 0x02, 0x44, 0x4d, 0x51, 0x14, 0xc4, 0xbd, 0x07, 0x7a, 0x8a, 0x42, 0x4f, 0xeb, + 0x18, 0x3b, 0xcd, 0xd2, 0x14, 0x38, 0x6e, 0xfe, 0x1b, 0xca, 0x47, 0x10, 0x01, 0xd8, 0x09, 0xfe, + 0x16, 0x28, 0x5d, 0xfe, 0x10, 0x20, 0x0f, 0xcd, 0x49, 0x00, 0xcd, 0x55, 0x0f, 0xfe, 0x11, 0x20, + 0x2e, 0xcd, 0x49, 0x00, 0x18, 0x22, 0xfe, 0x0b, 0x20, 0x28, 0xcd, 0x49, 0x00, 0xe5, 0x18, 0x03, + 0xcd, 0x49, 0x00, 0xfe, 0x0b, 0x20, 0x14, 0xd1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x21, 0x01, 0x40, + 0xcb, 0xb6, 0xcb, 0x7e, 0xc4, 0xc3, 0x12, 0xe7, 0xc3, 0x88, 0x10, 0xfe, 0x76, 0x20, 0xe1, 0xc3, + 0x9a, 0x0d, 0xd6, 0xc4, 0x38, 0xf9, 0x01, 0xec, 0x04, 0xfe, 0x13, 0x28, 0x13, 0x30, 0xf0, 0x06, + 0x10, 0xc6, 0xd9, 0x4f, 0xfe, 0xdc, 0x30, 0x02, 0xcb, 0xb1, 0xfe, 0xea, 0x38, 0x02, 0xcb, 0xb9, + 0xc5, 0xe7, 0xc3, 0x59, 0x0f, 0xfe, 0x26, 0x38, 0x1e, 0xcd, 0x1c, 0x11, 0xda, 0x4b, 0x0d, 0xcc, + 0xa7, 0x11, 0x3a, 0x01, 0x40, 0xfe, 0xc0, 0x38, 0x4e, 0x23, 0xed, 0x5b, 0x1c, 0x40, 0xcd, 0xf6, + 0x19, 0xeb, 0x22, 0x1c, 0x40, 0x18, 0x40, 0xcd, 0xa6, 0x0d, 0x20, 0x23, 0xcd, 0xd9, 0x14, 0xdf, + 0x01, 0x06, 0x00, 0xcd, 0x9e, 0x09, 0x23, 0x36, 0x7e, 0x23, 0xeb, 0x2a, 0x1c, 0x40, 0x0e, 0x05, + 0xa7, 0xed, 0x42, 0x22, 0x1c, 0x40, 0xed, 0xb0, 0xeb, 0x2b, 0xcd, 0x4c, 0x00, 0x18, 0x14, 0xe7, + 0xfe, 0x7e, 0x20, 0xfb, 0x23, 0xed, 0x5b, 0x1c, 0x40, 0xcd, 0xf6, 0x19, 0xed, 0x53, 0x1c, 0x40, + 0x22, 0x16, 0x40, 0xfd, 0xcb, 0x01, 0xf6, 0xdf, 0xfe, 0x10, 0x20, 0x0c, 0xfd, 0xcb, 0x01, 0x76, + 0x20, 0x2a, 0xcd, 0x63, 0x12, 0xe7, 0x18, 0xf0, 0x01, 0xc3, 0x00, 0xfe, 0x12, 0x38, 0x1d, 0xd6, + 0x16, 0x30, 0x04, 0xc6, 0x0d, 0x18, 0x0e, 0xfe, 0x03, 0x38, 0x0a, 0xd6, 0xc2, 0x38, 0x0d, 0xfe, + 0x06, 0x30, 0x09, 0xc6, 0x03, 0x81, 0x4f, 0x21, 0x4c, 0x10, 0x09, 0x46, 0xd1, 0x7a, 0xb8, 0x38, + 0x2c, 0xa7, 0xca, 0x18, 0x00, 0xc5, 0xd5, 0xcd, 0xa6, 0x0d, 0x28, 0x09, 0x7b, 0xe6, 0x3f, 0x47, + 0xef, 0x37, 0x34, 0x18, 0x09, 0x7b, 0xfd, 0xae, 0x01, 0xe6, 0x40, 0xc2, 0x9a, 0x0d, 0xd1, 0x21, + 0x01, 0x40, 0xcb, 0xf6, 0xcb, 0x7b, 0x20, 0x02, 0xcb, 0xb6, 0xc1, 0x18, 0xcf, 0xd5, 0x79, 0xfd, + 0xcb, 0x01, 0x76, 0x20, 0x15, 0xe6, 0x3f, 0xc6, 0x08, 0x4f, 0xfe, 0x10, 0x20, 0x04, 0xcb, 0xf1, + 0x18, 0x08, 0x38, 0xd7, 0xfe, 0x17, 0x28, 0x02, 0xcb, 0xf9, 0xc5, 0xe7, 0xc3, 0x59, 0x0f, 0x06, + 0x08, 0x08, 0x0a, 0x02, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0xfd, 0xcb, 0x01, 0xf6, + 0xdf, 0xcd, 0xce, 0x14, 0xd2, 0x9a, 0x0d, 0xe5, 0x4f, 0xe7, 0xe5, 0xcb, 0xa9, 0xfe, 0x10, 0x28, + 0x17, 0xcb, 0xf1, 0xfe, 0x0d, 0x28, 0x0c, 0xcb, 0xe9, 0xcd, 0xd2, 0x14, 0x30, 0x0a, 0xcb, 0xb1, + 0xe7, 0x18, 0xf6, 0xe7, 0xfd, 0xcb, 0x01, 0xb6, 0x41, 0xcd, 0xa6, 0x0d, 0x20, 0x08, 0x79, 0xe6, + 0xe0, 0xcb, 0xff, 0x4f, 0x18, 0x34, 0x2a, 0x10, 0x40, 0x7e, 0xe6, 0x7f, 0x28, 0x2a, 0xb9, 0x20, + 0x1f, 0x17, 0x87, 0xf2, 0x95, 0x11, 0x38, 0x2d, 0xd1, 0xd5, 0xe5, 0x23, 0x1a, 0x13, 0xa7, 0x28, + 0xfb, 0xbe, 0x28, 0xf7, 0xf6, 0x80, 0xbe, 0x20, 0x06, 0x1a, 0xcd, 0xd2, 0x14, 0x30, 0x15, 0xe1, + 0xc5, 0xcd, 0xf2, 0x09, 0xeb, 0xc1, 0x18, 0xd1, 0xcb, 0xf8, 0xd1, 0xdf, 0xfe, 0x10, 0x28, 0x09, + 0xcb, 0xe8, 0x18, 0x0d, 0xd1, 0xd1, 0xd1, 0xe5, 0xdf, 0xcd, 0xd2, 0x14, 0x30, 0x03, 0xe7, 0x18, + 0xf8, 0xe1, 0xcb, 0x10, 0xcb, 0x70, 0xc9, 0xaf, 0x47, 0xcb, 0x79, 0x20, 0x4b, 0xcb, 0x7e, 0x20, + 0x0e, 0x3c, 0x23, 0x4e, 0x23, 0x46, 0x23, 0xeb, 0xcd, 0xc3, 0x12, 0xdf, 0xc3, 0x5a, 0x12, 0x23, + 0x23, 0x23, 0x46, 0xcb, 0x71, 0x28, 0x0a, 0x05, 0x28, 0xe8, 0xeb, 0xdf, 0xfe, 0x10, 0x20, 0x61, + 0xeb, 0xeb, 0x18, 0x24, 0xe5, 0xdf, 0xe1, 0xfe, 0x1a, 0x28, 0x20, 0xcb, 0x79, 0x28, 0x52, 0xcb, + 0x71, 0x20, 0x06, 0xfe, 0x11, 0x20, 0x3c, 0xe7, 0xc9, 0xfe, 0x11, 0x28, 0x6c, 0xfe, 0xdf, 0x20, + 0x32, 0xdf, 0x2b, 0x22, 0x16, 0x40, 0x18, 0x5e, 0x21, 0x00, 0x00, 0xe5, 0xe7, 0xe1, 0x79, 0xfe, + 0xc0, 0x20, 0x09, 0xdf, 0xfe, 0x11, 0x28, 0x51, 0xfe, 0xdf, 0x28, 0xe5, 0xc5, 0xe5, 0xcd, 0xff, + 0x12, 0xe3, 0xeb, 0xcd, 0xdd, 0x12, 0x38, 0x19, 0x0b, 0xcd, 0x05, 0x13, 0x09, 0xd1, 0xc1, 0x10, + 0xb3, 0xcb, 0x79, 0x20, 0x66, 0xe5, 0xcb, 0x71, 0x20, 0x13, 0x42, 0x4b, 0xdf, 0xfe, 0x11, 0x28, + 0x02, 0xcf, 0x02, 0xe7, 0xe1, 0x11, 0x05, 0x00, 0xcd, 0x05, 0x13, 0x09, 0xc9, 0xcd, 0xff, 0x12, + 0xe3, 0xcd, 0x05, 0x13, 0xc1, 0x09, 0x23, 0x42, 0x4b, 0xeb, 0xcd, 0xc2, 0x12, 0xdf, 0xfe, 0x11, + 0x28, 0x07, 0xfe, 0x1a, 0x20, 0xdb, 0xcd, 0x63, 0x12, 0xe7, 0xfe, 0x10, 0x28, 0xf8, 0xfd, 0xcb, + 0x01, 0xb6, 0xc9, 0xcd, 0xa6, 0x0d, 0xc4, 0xf8, 0x13, 0xe7, 0xfe, 0x11, 0x28, 0x50, 0xd5, 0xaf, + 0xf5, 0xc5, 0x11, 0x01, 0x00, 0xdf, 0xe1, 0xfe, 0xdf, 0x28, 0x17, 0xf1, 0xcd, 0xde, 0x12, 0xf5, + 0x50, 0x59, 0xe5, 0xdf, 0xe1, 0xfe, 0xdf, 0x28, 0x09, 0xfe, 0x11, 0xc2, 0x9a, 0x0d, 0x62, 0x6b, + 0x18, 0x13, 0xe5, 0xe7, 0xe1, 0xfe, 0x11, 0x28, 0x0c, 0xf1, 0xcd, 0xde, 0x12, 0xf5, 0xdf, 0x60, + 0x69, 0xfe, 0x11, 0x20, 0xe6, 0xf1, 0xe3, 0x19, 0x2b, 0xe3, 0xa7, 0xed, 0x52, 0x01, 0x00, 0x00, + 0x38, 0x07, 0x23, 0xa7, 0xfa, 0x31, 0x12, 0x44, 0x4d, 0xd1, 0xfd, 0xcb, 0x01, 0xb6, 0xcd, 0xa6, + 0x0d, 0xc8, 0xaf, 0xc5, 0xcd, 0xeb, 0x19, 0xc1, 0x2a, 0x1c, 0x40, 0x77, 0x23, 0x73, 0x23, 0x72, + 0x23, 0x71, 0x23, 0x70, 0x23, 0x22, 0x1c, 0x40, 0xfd, 0xcb, 0x01, 0xb6, 0xc9, 0xaf, 0xd5, 0xe5, + 0xf5, 0xcd, 0x92, 0x0d, 0xf1, 0xcd, 0xa6, 0x0d, 0x28, 0x12, 0xf5, 0xcd, 0xa7, 0x0e, 0xd1, 0x78, + 0xb1, 0x37, 0x28, 0x05, 0xe1, 0xe5, 0xa7, 0xed, 0x42, 0x7a, 0xde, 0x00, 0xe1, 0xd1, 0xc9, 0xeb, + 0x23, 0x5e, 0x23, 0x56, 0xc9, 0xcd, 0xa6, 0x0d, 0xc8, 0xc5, 0x06, 0x10, 0x7c, 0x4d, 0x21, 0x00, + 0x00, 0x29, 0x38, 0x06, 0xcb, 0x11, 0x17, 0x30, 0x04, 0x19, 0xda, 0xd3, 0x0e, 0x10, 0xf2, 0xc1, + 0xc9, 0x2a, 0x12, 0x40, 0xfd, 0xcb, 0x2d, 0x4e, 0x28, 0x44, 0x01, 0x05, 0x00, 0x03, 0x23, 0x7e, + 0xa7, 0x28, 0xfb, 0xcd, 0xd2, 0x14, 0x38, 0xf5, 0xfe, 0x0d, 0xca, 0xc8, 0x13, 0xf7, 0xd5, 0x2a, + 0x12, 0x40, 0x1b, 0x79, 0xd6, 0x06, 0x47, 0x3e, 0x40, 0x28, 0x0e, 0x23, 0x7e, 0xa7, 0x28, 0xfb, + 0x13, 0x12, 0x10, 0xf7, 0xf6, 0x80, 0x12, 0x3e, 0x80, 0x2a, 0x12, 0x40, 0xae, 0xe1, 0xcd, 0xe7, + 0x13, 0xe5, 0xef, 0x02, 0x34, 0xe1, 0x01, 0x05, 0x00, 0xa7, 0xed, 0x42, 0x18, 0x40, 0xfd, 0xcb, + 0x01, 0x76, 0x28, 0x06, 0x11, 0x06, 0x00, 0x19, 0x18, 0xe7, 0x2a, 0x12, 0x40, 0xed, 0x4b, 0x2e, + 0x40, 0xfd, 0xcb, 0x2d, 0x46, 0x20, 0x30, 0x78, 0xb1, 0xc8, 0xe5, 0xf7, 0xd5, 0xc5, 0x54, 0x5d, + 0x23, 0x36, 0x00, 0xed, 0xb8, 0xe5, 0xcd, 0xf8, 0x13, 0xe1, 0xe3, 0xa7, 0xed, 0x42, 0x09, 0x30, + 0x02, 0x44, 0x4d, 0xe3, 0xeb, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, 0xd1, 0xe1, 0xeb, 0x78, + 0xb1, 0xc8, 0xd5, 0xed, 0xb0, 0xe1, 0xc9, 0x2b, 0x2b, 0x2b, 0x7e, 0xe5, 0xc5, 0xcd, 0xce, 0x13, + 0xc1, 0xe1, 0x03, 0x03, 0x03, 0xc3, 0x60, 0x0a, 0x3e, 0x60, 0x2a, 0x12, 0x40, 0xae, 0xf5, 0xcd, + 0xf8, 0x13, 0xeb, 0x09, 0xe5, 0x03, 0x03, 0x03, 0xf7, 0xeb, 0xe1, 0x0b, 0x0b, 0xc5, 0xed, 0xb8, + 0xeb, 0xc1, 0x0b, 0x70, 0x2b, 0x71, 0xf1, 0xf5, 0xcd, 0xc7, 0x14, 0xf1, 0x2b, 0x77, 0x2a, 0x1a, + 0x40, 0x22, 0x14, 0x40, 0x2b, 0x36, 0x80, 0xc9, 0x2a, 0x1c, 0x40, 0x2b, 0x46, 0x2b, 0x4e, 0x2b, + 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x22, 0x1c, 0x40, 0xc9, 0xcd, 0x1c, 0x11, 0xc2, 0x9a, 0x0d, 0xcd, + 0xa6, 0x0d, 0x20, 0x08, 0xcb, 0xb1, 0xcd, 0xa7, 0x11, 0xcd, 0x1d, 0x0d, 0x38, 0x08, 0xc5, 0xcd, + 0xf2, 0x09, 0xcd, 0x60, 0x0a, 0xc1, 0xcb, 0xf9, 0x06, 0x00, 0xc5, 0x21, 0x01, 0x00, 0xcb, 0x71, + 0x20, 0x02, 0x2e, 0x05, 0xeb, 0xe7, 0x26, 0x40, 0xcd, 0xdd, 0x12, 0xda, 0x31, 0x12, 0xe1, 0xc5, + 0x24, 0xe5, 0x60, 0x69, 0xcd, 0x05, 0x13, 0xeb, 0xdf, 0xfe, 0x1a, 0x28, 0xe8, 0xfe, 0x11, 0x20, + 0xbb, 0xe7, 0xc1, 0x79, 0x68, 0x26, 0x00, 0x23, 0x23, 0x29, 0x19, 0xda, 0xd3, 0x0e, 0xd5, 0xc5, + 0xe5, 0x44, 0x4d, 0x2a, 0x14, 0x40, 0x2b, 0xcd, 0x9e, 0x09, 0x23, 0x77, 0xc1, 0x0b, 0x0b, 0x0b, + 0x23, 0x71, 0x23, 0x70, 0xf1, 0x23, 0x77, 0x62, 0x6b, 0x1b, 0x36, 0x00, 0xc1, 0xed, 0xb8, 0xc1, + 0x70, 0x2b, 0x71, 0x2b, 0x3d, 0x20, 0xf8, 0xc9, 0x2a, 0x1a, 0x40, 0x2b, 0xcd, 0x9e, 0x09, 0x23, + 0x23, 0xc1, 0xed, 0x43, 0x14, 0x40, 0xc1, 0xeb, 0x23, 0xc9, 0x2a, 0x10, 0x40, 0x36, 0x80, 0x23, + 0x22, 0x14, 0x40, 0x2a, 0x14, 0x40, 0x22, 0x1a, 0x40, 0x22, 0x1c, 0x40, 0xc9, 0x2a, 0x14, 0x40, + 0x36, 0x7f, 0x23, 0x36, 0x76, 0x23, 0xfd, 0x36, 0x22, 0x02, 0x18, 0xea, 0x21, 0x5d, 0x40, 0x22, + 0x1f, 0x40, 0x2a, 0x1a, 0x40, 0x18, 0xe2, 0xed, 0x5b, 0x14, 0x40, 0xc3, 0x5d, 0x0a, 0xfe, 0x26, + 0x18, 0x02, 0xfe, 0x1c, 0x3f, 0xd0, 0xfe, 0x40, 0xc9, 0xcd, 0x48, 0x15, 0xfe, 0x1b, 0x20, 0x15, + 0xef, 0xa1, 0xc0, 0x02, 0x34, 0xe7, 0xcd, 0x14, 0x15, 0x38, 0x0a, 0xef, 0xe0, 0xa4, 0x05, 0xc0, + 0x04, 0x0f, 0x34, 0x18, 0xf0, 0xfe, 0x2a, 0xc0, 0xfd, 0x36, 0x5d, 0xff, 0xe7, 0xfe, 0x15, 0x28, + 0x07, 0xfe, 0x16, 0x20, 0x04, 0xfd, 0x34, 0x5d, 0xe7, 0xcd, 0x48, 0x15, 0xef, 0xe0, 0x00, 0x02, + 0x18, 0x38, 0x34, 0xc9, 0xfe, 0x1c, 0xd8, 0xfe, 0x26, 0x3f, 0xd8, 0xd6, 0x1c, 0x4f, 0x06, 0x00, + 0xfd, 0x21, 0x00, 0x40, 0xc5, 0xef, 0xa0, 0x34, 0xc1, 0x36, 0x91, 0x78, 0xa7, 0x20, 0x07, 0x77, + 0xb1, 0xc8, 0x41, 0x4e, 0x36, 0x89, 0x35, 0xcb, 0x21, 0xcb, 0x10, 0x30, 0xf9, 0xcb, 0x38, 0xcb, + 0x19, 0x23, 0x70, 0x23, 0x71, 0x2b, 0x2b, 0xc9, 0xf5, 0xef, 0xa0, 0x34, 0xf1, 0xcd, 0x14, 0x15, + 0xd8, 0xef, 0x01, 0xa4, 0x04, 0x0f, 0x34, 0xe7, 0x18, 0xf3, 0xef, 0x2d, 0x32, 0xc0, 0x02, 0x27, + 0xa1, 0x03, 0x2d, 0x32, 0x00, 0x22, 0x2d, 0x30, 0x33, 0x40, 0x03, 0x2d, 0x32, 0x00, 0x0c, 0x01, + 0x02, 0x01, 0x30, 0x80, 0x48, 0x18, 0x96, 0x80, 0x2f, 0x04, 0x02, 0x01, 0xa4, 0xe0, 0x00, 0x04, + 0x04, 0x2f, 0x02, 0x05, 0x01, 0x2f, 0xda, 0x02, 0x34, 0xc9, 0xcd, 0xf8, 0x13, 0xa7, 0x20, 0x05, + 0x47, 0x4f, 0xf5, 0x18, 0x31, 0x43, 0x59, 0x4a, 0xd6, 0x91, 0x3f, 0xcb, 0x78, 0xf5, 0xcb, 0xf8, + 0x38, 0x24, 0x3c, 0xed, 0x44, 0xfe, 0x08, 0x38, 0x06, 0x59, 0x48, 0x06, 0x00, 0xd6, 0x08, 0xa7, + 0x57, 0x7b, 0x07, 0x28, 0x07, 0xcb, 0x38, 0xcb, 0x19, 0x15, 0x20, 0xf9, 0x30, 0x08, 0x03, 0x78, + 0xb1, 0x20, 0x03, 0xf1, 0x37, 0xf5, 0xc5, 0xef, 0x34, 0xc1, 0xf1, 0x79, 0xc9, 0xcd, 0x8a, 0x15, + 0xd8, 0xf5, 0x05, 0x04, 0x28, 0x03, 0xf1, 0x37, 0xc9, 0xf1, 0xc9, 0xef, 0x2d, 0x32, 0x00, 0x0b, + 0x2d, 0x33, 0x00, 0x0d, 0x02, 0x34, 0x3e, 0x1c, 0xd7, 0xc9, 0x27, 0x34, 0x3e, 0x16, 0xd7, 0xef, + 0x34, 0x7e, 0xcd, 0x1d, 0x15, 0xef, 0x30, 0x78, 0x00, 0x80, 0x03, 0x30, 0xef, 0x1a, 0x20, 0x9a, + 0x85, 0x04, 0x24, 0xc1, 0x30, 0x34, 0x00, 0x03, 0x18, 0x38, 0xa2, 0x0f, 0x24, 0x34, 0x21, 0x6b, + 0x40, 0x36, 0x90, 0x06, 0x0a, 0x23, 0xe5, 0xc5, 0xef, 0xa4, 0x2e, 0x01, 0x34, 0xcd, 0xcd, 0x15, + 0xf6, 0x90, 0xc1, 0xe1, 0x77, 0x10, 0xee, 0x23, 0x01, 0x08, 0x00, 0xe5, 0x2b, 0x7e, 0xfe, 0x90, + 0x28, 0xfa, 0xed, 0x42, 0xe5, 0x7e, 0xc6, 0x6b, 0xf5, 0xf1, 0x23, 0x7e, 0xce, 0x00, 0x27, 0xf5, + 0xe6, 0x0f, 0x77, 0xcb, 0xfe, 0x28, 0xf2, 0xf1, 0xe1, 0x06, 0x06, 0x36, 0x80, 0x2b, 0x10, 0xfb, + 0xef, 0x02, 0xe1, 0x34, 0xcd, 0xcd, 0x15, 0x28, 0x02, 0xed, 0x44, 0x5f, 0x1c, 0x1c, 0xe1, 0x2b, + 0x1d, 0x7e, 0xe6, 0x0f, 0x28, 0xf9, 0x7b, 0xd6, 0x05, 0xfe, 0x08, 0xf2, 0x82, 0x16, 0xfe, 0xf6, + 0xfa, 0x82, 0x16, 0xc6, 0x06, 0x28, 0x48, 0xfa, 0xb2, 0x16, 0x47, 0xcd, 0xd0, 0x16, 0x10, 0xfb, + 0x18, 0x40, 0x43, 0xcd, 0xd0, 0x16, 0xcd, 0xc2, 0x16, 0x3e, 0x2a, 0xd7, 0x78, 0xa7, 0xf2, 0x98, + 0x16, 0xed, 0x44, 0x47, 0x3e, 0x16, 0x18, 0x02, 0x3e, 0x15, 0xd7, 0x78, 0x06, 0xff, 0x04, 0xd6, + 0x0a, 0x30, 0xfb, 0xc6, 0x0a, 0x4f, 0x78, 0xa7, 0x28, 0x03, 0xcd, 0xeb, 0x07, 0x79, 0xcd, 0xeb, + 0x07, 0xc9, 0xed, 0x44, 0x47, 0x3e, 0x1b, 0xd7, 0x3e, 0x1c, 0xd7, 0x10, 0xfd, 0x18, 0x09, 0x3e, + 0x1c, 0xd7, 0x35, 0x34, 0xe8, 0x3e, 0x1b, 0xd7, 0x35, 0x34, 0xe8, 0xcd, 0xd0, 0x16, 0x18, 0xf8, + 0x7e, 0xe6, 0x0f, 0xcd, 0xeb, 0x07, 0x2b, 0xc9, 0x7e, 0x36, 0x00, 0xa7, 0xc8, 0x23, 0xcb, 0x7e, + 0xcb, 0xfe, 0x2b, 0xc8, 0xc5, 0x01, 0x05, 0x00, 0x09, 0x41, 0x4f, 0x37, 0x2b, 0x7e, 0x2f, 0xce, + 0x00, 0x77, 0x10, 0xf8, 0x79, 0xc1, 0xc9, 0xe5, 0xf5, 0x4e, 0x23, 0x46, 0x77, 0x23, 0x79, 0x4e, + 0xc5, 0x23, 0x4e, 0x23, 0x46, 0xeb, 0x57, 0x5e, 0xd5, 0x23, 0x56, 0x23, 0x5e, 0xd5, 0xd9, 0xd1, + 0xe1, 0xc1, 0xd9, 0x23, 0x56, 0x23, 0x5e, 0xf1, 0xe1, 0xc9, 0xa7, 0xc8, 0xfe, 0x21, 0x30, 0x16, + 0xc5, 0x47, 0xd9, 0xcb, 0x2d, 0xcb, 0x1a, 0xcb, 0x1b, 0xd9, 0xcb, 0x1a, 0xcb, 0x1b, 0x10, 0xf2, + 0xc1, 0xd0, 0xcd, 0x41, 0x17, 0xc0, 0xd9, 0xaf, 0x2e, 0x00, 0x57, 0x5d, 0xd9, 0x11, 0x00, 0x00, + 0xc9, 0x1c, 0xc0, 0x14, 0xc0, 0xd9, 0x1c, 0x20, 0x01, 0x14, 0xd9, 0xc9, 0x1a, 0xa7, 0xc8, 0x13, + 0x1a, 0xee, 0x80, 0x12, 0x1b, 0xd9, 0xe5, 0xd9, 0xd5, 0xe5, 0xcd, 0xd8, 0x16, 0x47, 0xeb, 0xcd, + 0xd8, 0x16, 0x4f, 0xb8, 0x30, 0x03, 0x78, 0x41, 0xeb, 0xf5, 0x90, 0xcd, 0xf7, 0x16, 0xcd, 0x1a, + 0x17, 0xf1, 0xe1, 0x77, 0xe5, 0x68, 0x61, 0x19, 0xd9, 0xeb, 0xed, 0x4a, 0xeb, 0x7c, 0x8d, 0x6f, + 0x1f, 0xad, 0xd9, 0xeb, 0xe1, 0x1f, 0x30, 0x08, 0x3e, 0x01, 0xcd, 0x1a, 0x17, 0x34, 0x28, 0x23, + 0xd9, 0x7d, 0xe6, 0x80, 0xd9, 0x23, 0x77, 0x2b, 0x28, 0x1f, 0x7b, 0xed, 0x44, 0x3f, 0x5f, 0x7a, + 0x2f, 0xce, 0x00, 0x57, 0xd9, 0x7b, 0x2f, 0xce, 0x00, 0x5f, 0x7a, 0x2f, 0xce, 0x00, 0x30, 0x07, + 0x1f, 0xd9, 0x34, 0xca, 0x80, 0x18, 0xd9, 0x57, 0xd9, 0xaf, 0x18, 0x6c, 0x37, 0x35, 0x34, 0xc8, + 0x23, 0xae, 0xcb, 0xfe, 0x2b, 0xc9, 0xaf, 0xcd, 0xbc, 0x17, 0xd8, 0xd9, 0xe5, 0xd9, 0xd5, 0xeb, + 0xcd, 0xbc, 0x17, 0xeb, 0x38, 0x5a, 0xe5, 0xcd, 0xf7, 0x16, 0x78, 0xa7, 0xed, 0x62, 0xd9, 0xe5, + 0xed, 0x62, 0xd9, 0x06, 0x21, 0x18, 0x11, 0x30, 0x05, 0x19, 0xd9, 0xed, 0x5a, 0xd9, 0xd9, 0xcb, + 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x18, 0xcb, 0x19, 0xd9, 0xcb, 0x19, + 0x1f, 0x10, 0xe4, 0xeb, 0xd9, 0xeb, 0xd9, 0xc1, 0xe1, 0x78, 0x81, 0x20, 0x01, 0xa7, 0x3d, 0x3f, + 0x17, 0x3f, 0x1f, 0xf2, 0x19, 0x18, 0x30, 0x68, 0xa7, 0x3c, 0x20, 0x08, 0x38, 0x06, 0xd9, 0xcb, + 0x7a, 0xd9, 0x20, 0x5c, 0x77, 0xd9, 0x78, 0xd9, 0x30, 0x15, 0x7e, 0xa7, 0x3e, 0x80, 0x28, 0x01, + 0xaf, 0xd9, 0xa2, 0xcd, 0x38, 0x17, 0x07, 0x77, 0x38, 0x2e, 0x23, 0x77, 0x2b, 0x18, 0x29, 0x06, + 0x20, 0xd9, 0xcb, 0x7a, 0xd9, 0x20, 0x12, 0x07, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0xcb, 0x13, 0xcb, + 0x12, 0xd9, 0x35, 0x28, 0xd7, 0x10, 0xea, 0x18, 0xd7, 0x17, 0x30, 0x0c, 0xcd, 0x41, 0x17, 0x20, + 0x07, 0xd9, 0x16, 0x80, 0xd9, 0x34, 0x28, 0x18, 0xe5, 0x23, 0xd9, 0xd5, 0xd9, 0xc1, 0x78, 0x17, + 0xcb, 0x16, 0x1f, 0x77, 0x23, 0x71, 0x23, 0x72, 0x23, 0x73, 0xe1, 0xd1, 0xd9, 0xe1, 0xd9, 0xc9, + 0xcf, 0x05, 0xeb, 0xaf, 0xcd, 0xbc, 0x17, 0x38, 0xf7, 0xeb, 0xcd, 0xbc, 0x17, 0xd8, 0xd9, 0xe5, + 0xd9, 0xd5, 0xe5, 0xcd, 0xf7, 0x16, 0xd9, 0xe5, 0x60, 0x69, 0xd9, 0x61, 0x68, 0xaf, 0x06, 0xdf, + 0x18, 0x10, 0x17, 0xcb, 0x11, 0xd9, 0xcb, 0x11, 0xcb, 0x10, 0xd9, 0x29, 0xd9, 0xed, 0x6a, 0xd9, + 0x38, 0x10, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xd9, 0x30, 0x0f, 0x19, 0xd9, 0xed, 0x5a, 0xd9, 0xa7, + 0x18, 0x08, 0xa7, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xd9, 0x37, 0x04, 0xfa, 0xa2, 0x18, 0xf5, 0x28, + 0xe1, 0x5f, 0x51, 0xd9, 0x59, 0x50, 0xf1, 0xcb, 0x18, 0xf1, 0xcb, 0x18, 0xd9, 0xc1, 0xe1, 0x78, + 0x91, 0xc3, 0x10, 0x18, 0x7e, 0xfe, 0x81, 0x30, 0x06, 0x36, 0x00, 0x3e, 0x20, 0x18, 0x05, 0xd6, + 0xa0, 0xf0, 0xed, 0x44, 0xd5, 0xeb, 0x2b, 0x47, 0xcb, 0x38, 0xcb, 0x38, 0xcb, 0x38, 0x28, 0x05, + 0x36, 0x00, 0x2b, 0x10, 0xfb, 0xe6, 0x07, 0x28, 0x09, 0x47, 0x3e, 0xff, 0xcb, 0x27, 0x10, 0xfc, + 0xa6, 0x77, 0xeb, 0xd1, 0xc9, 0x00, 0xb0, 0x00, 0x31, 0x00, 0x30, 0x00, 0xf1, 0x49, 0x0f, 0xda, + 0xa2, 0x34, 0x20, 0x2f, 0x1c, 0x72, 0x1a, 0xe3, 0x19, 0x4c, 0x17, 0xc6, 0x17, 0x82, 0x18, 0xe2, + 0x1d, 0xed, 0x1a, 0xf3, 0x1a, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, + 0x1b, 0x55, 0x17, 0xf8, 0x1a, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, 0x1b, 0x03, + 0x1b, 0x62, 0x1b, 0xa0, 0x1a, 0x06, 0x1c, 0xa4, 0x1b, 0x11, 0x1c, 0x49, 0x1d, 0x3e, 0x1d, 0x6e, + 0x1d, 0xc4, 0x1d, 0xd4, 0x1d, 0x76, 0x1d, 0xa9, 0x1c, 0x5b, 0x1c, 0x46, 0x1c, 0xdb, 0x1d, 0xaf, + 0x1a, 0xaa, 0x1a, 0xbe, 0x1a, 0xc5, 0x1a, 0xd5, 0x1b, 0x8f, 0x1b, 0xd5, 0x1a, 0xf6, 0x19, 0x37, + 0x1c, 0x23, 0x1c, 0xfc, 0x19, 0x17, 0x1c, 0xdb, 0x1a, 0xce, 0x1a, 0x2b, 0x00, 0x18, 0x1d, 0xe4, + 0x18, 0xe4, 0x19, 0x5a, 0x15, 0x7f, 0x1a, 0x51, 0x1a, 0x63, 0x1a, 0x45, 0x1a, 0xcd, 0x85, 0x1b, + 0x78, 0x32, 0x1e, 0x40, 0xd9, 0xe3, 0xd9, 0xed, 0x53, 0x1c, 0x40, 0xd9, 0x7e, 0x23, 0xe5, 0xa7, + 0xf2, 0xc2, 0x19, 0x57, 0xe6, 0x60, 0x0f, 0x0f, 0x0f, 0x0f, 0xc6, 0x72, 0x6f, 0x7a, 0xe6, 0x1f, + 0x18, 0x0e, 0xfe, 0x18, 0x30, 0x08, 0xd9, 0x01, 0xfb, 0xff, 0x54, 0x5d, 0x09, 0xd9, 0x07, 0x6f, + 0x11, 0x23, 0x19, 0x26, 0x00, 0x19, 0x5e, 0x23, 0x56, 0x21, 0xa7, 0x19, 0xe3, 0xd5, 0xd9, 0xed, + 0x4b, 0x1d, 0x40, 0xc9, 0xf1, 0x3a, 0x1e, 0x40, 0xd9, 0x18, 0xc3, 0xd5, 0xe5, 0x01, 0x05, 0x00, + 0xcd, 0xc5, 0x0e, 0xe1, 0xd1, 0xc9, 0xcd, 0xeb, 0x19, 0xed, 0xb0, 0xc9, 0x62, 0x6b, 0xcd, 0xeb, + 0x19, 0xd9, 0xe5, 0xd9, 0xe3, 0xc5, 0x7e, 0xe6, 0xc0, 0x07, 0x07, 0x4f, 0x0c, 0x7e, 0xe6, 0x3f, + 0x20, 0x02, 0x23, 0x7e, 0xc6, 0x50, 0x12, 0x3e, 0x05, 0x91, 0x23, 0x13, 0x06, 0x00, 0xed, 0xb0, + 0xc1, 0xe3, 0xd9, 0xe1, 0xd9, 0x47, 0xaf, 0x05, 0xc8, 0x12, 0x13, 0x18, 0xfa, 0xa7, 0xc8, 0xf5, + 0xd5, 0x11, 0x00, 0x00, 0xcd, 0xfe, 0x19, 0xd1, 0xf1, 0x3d, 0x18, 0xf2, 0x4f, 0x07, 0x07, 0x81, + 0x4f, 0x06, 0x00, 0x09, 0xc9, 0xd5, 0x2a, 0x1f, 0x40, 0xcd, 0x3c, 0x1a, 0xcd, 0xf6, 0x19, 0xe1, + 0xc9, 0x62, 0x6b, 0xd9, 0xe5, 0x21, 0x15, 0x19, 0xd9, 0xcd, 0x2d, 0x1a, 0xcd, 0xfe, 0x19, 0xd9, + 0xe1, 0xd9, 0xc9, 0xe5, 0xeb, 0x2a, 0x1f, 0x40, 0xcd, 0x3c, 0x1a, 0xeb, 0xcd, 0xf6, 0x19, 0xeb, + 0xe1, 0xc9, 0x06, 0x05, 0x1a, 0x4e, 0xeb, 0x12, 0x71, 0x23, 0x13, 0x10, 0xf7, 0xeb, 0xc9, 0x47, + 0xcd, 0xa0, 0x19, 0x2d, 0x0f, 0xc0, 0x02, 0xa0, 0xc2, 0x2d, 0xe0, 0x04, 0xe2, 0xc1, 0x03, 0x34, + 0xcd, 0xfc, 0x19, 0xcd, 0xa4, 0x19, 0x0f, 0x01, 0xc2, 0x02, 0x31, 0xee, 0xe1, 0x03, 0x34, 0xc9, + 0x7e, 0xa7, 0xc8, 0x23, 0x7e, 0xee, 0x80, 0x77, 0x2b, 0xc9, 0x23, 0xcb, 0xbe, 0x2b, 0xc9, 0x23, + 0x7e, 0x2b, 0x35, 0x34, 0x37, 0xc4, 0xe0, 0x1a, 0x23, 0x07, 0xcb, 0x1e, 0x2b, 0xc9, 0xcd, 0xa7, + 0x0e, 0x0a, 0xc3, 0x1d, 0x15, 0xcd, 0xa7, 0x0e, 0x21, 0x20, 0x15, 0xe5, 0xc5, 0xc9, 0x7e, 0xa7, + 0xc8, 0x3e, 0xff, 0x18, 0x07, 0x7e, 0xed, 0x44, 0x3f, 0x18, 0x05, 0xaf, 0x23, 0xae, 0x2b, 0x07, + 0xe5, 0x06, 0x05, 0x36, 0x00, 0x23, 0x10, 0xfb, 0xe1, 0xd0, 0x36, 0x81, 0xc9, 0x1a, 0xa7, 0xc8, + 0x37, 0x18, 0xed, 0x1a, 0xa7, 0xc0, 0x18, 0xe8, 0x1a, 0xa7, 0xc0, 0xd5, 0x1b, 0xaf, 0x12, 0x1b, + 0x12, 0xd1, 0xc9, 0x78, 0xd6, 0x08, 0xcb, 0x57, 0x20, 0x01, 0x3d, 0x0f, 0x30, 0x08, 0xf5, 0xe5, + 0xcd, 0x72, 0x1a, 0xd1, 0xeb, 0xf1, 0xcb, 0x57, 0x20, 0x07, 0x0f, 0xf5, 0xcd, 0x4c, 0x17, 0x18, + 0x33, 0x0f, 0xf5, 0xcd, 0xf8, 0x13, 0xd5, 0xc5, 0xcd, 0xf8, 0x13, 0xe1, 0x7c, 0xb5, 0xe3, 0x78, + 0x20, 0x0b, 0xb1, 0xc1, 0x28, 0x04, 0xf1, 0x3f, 0x18, 0x16, 0xf1, 0x18, 0x13, 0xb1, 0x28, 0x0d, + 0x1a, 0x96, 0x38, 0x09, 0x20, 0xed, 0x0b, 0x13, 0x23, 0xe3, 0x2b, 0x18, 0xdf, 0xc1, 0xf1, 0xa7, + 0xf5, 0xef, 0xa0, 0x34, 0xf1, 0xf5, 0xdc, 0xd5, 0x1a, 0xcd, 0xce, 0x1a, 0xf1, 0x0f, 0xd4, 0xd5, + 0x1a, 0xc9, 0xcd, 0xf8, 0x13, 0xd5, 0xc5, 0xcd, 0xf8, 0x13, 0xe1, 0xe5, 0xd5, 0xc5, 0x09, 0x44, + 0x4d, 0xf7, 0xcd, 0xc3, 0x12, 0xc1, 0xe1, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, 0xe1, 0x78, + 0xb1, 0x28, 0x02, 0xed, 0xb0, 0x2a, 0x1c, 0x40, 0x11, 0xfb, 0xff, 0xe5, 0x19, 0xd1, 0xc9, 0xcd, + 0xcd, 0x15, 0x38, 0x0e, 0x20, 0x0c, 0xf5, 0x01, 0x01, 0x00, 0xf7, 0xf1, 0x12, 0xcd, 0xc3, 0x12, + 0xeb, 0xc9, 0xcf, 0x0a, 0x2a, 0x16, 0x40, 0xe5, 0xcd, 0xf8, 0x13, 0xd5, 0x03, 0xf7, 0xe1, 0xed, + 0x53, 0x16, 0x40, 0xd5, 0xed, 0xb0, 0xeb, 0x2b, 0x36, 0x76, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0x92, + 0x0d, 0xcd, 0x22, 0x0d, 0xe1, 0x22, 0x16, 0x40, 0xfd, 0xcb, 0x01, 0xfe, 0xcd, 0x55, 0x0f, 0xe1, + 0x22, 0x16, 0x40, 0x18, 0xb0, 0x01, 0x01, 0x00, 0xf7, 0x36, 0x76, 0x2a, 0x39, 0x40, 0xe5, 0x2e, + 0xff, 0x22, 0x39, 0x40, 0x2a, 0x0e, 0x40, 0xe5, 0xed, 0x53, 0x0e, 0x40, 0xd5, 0xcd, 0xdb, 0x15, + 0xd1, 0x2a, 0x0e, 0x40, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0xe1, 0x22, 0x0e, 0x40, 0xe1, 0x22, 0x39, + 0x40, 0xcd, 0xc3, 0x12, 0xeb, 0xc9, 0xcd, 0xf8, 0x13, 0x78, 0xb1, 0x28, 0x01, 0x1a, 0xc3, 0x1d, + 0x15, 0xcd, 0xf8, 0x13, 0xc3, 0x20, 0x15, 0xd9, 0xe5, 0x21, 0x1e, 0x40, 0x35, 0xe1, 0x20, 0x04, + 0x23, 0xd9, 0xc9, 0xd9, 0x5e, 0xaf, 0xcb, 0x7b, 0x28, 0x01, 0x2f, 0x57, 0x19, 0xd9, 0xc9, 0x1a, + 0xa7, 0x20, 0xf0, 0xd9, 0x23, 0xd9, 0xc9, 0xef, 0xc0, 0x02, 0x2d, 0xe0, 0x05, 0x24, 0xe0, 0x01, + 0xc0, 0x04, 0x03, 0xe0, 0x34, 0xc9, 0xef, 0x2d, 0x32, 0x00, 0x04, 0x36, 0x34, 0xc9, 0x2d, 0x36, + 0xc0, 0x03, 0xe0, 0x01, 0x2c, 0x00, 0x03, 0xa1, 0x03, 0x34, 0xc9, 0xef, 0x30, 0xf1, 0x38, 0xaa, + 0x3b, 0x29, 0x04, 0x2d, 0x24, 0xc3, 0x03, 0x2d, 0x0f, 0xa1, 0x03, 0x88, 0x13, 0x36, 0x58, 0x65, + 0x66, 0x9d, 0x78, 0x65, 0x40, 0xa2, 0x60, 0x32, 0xc9, 0xe7, 0x21, 0xf7, 0xaf, 0x24, 0xeb, 0x2f, + 0xb0, 0xb0, 0x14, 0xee, 0x7e, 0xbb, 0x94, 0x58, 0xf1, 0x3a, 0x7e, 0xf8, 0xcf, 0xe3, 0x34, 0xcd, + 0xcd, 0x15, 0x20, 0x07, 0x38, 0x03, 0x86, 0x30, 0x09, 0xcf, 0x05, 0x38, 0x07, 0x96, 0x30, 0x04, + 0xed, 0x44, 0x77, 0xc9, 0xef, 0x02, 0xa0, 0x34, 0xc9, 0xef, 0x2d, 0x33, 0x00, 0x04, 0x34, 0xcf, + 0x09, 0xa0, 0x02, 0x34, 0x7e, 0x36, 0x80, 0xcd, 0x1d, 0x15, 0xef, 0x30, 0x38, 0x00, 0x03, 0x01, + 0x2d, 0x30, 0xf0, 0x4c, 0xcc, 0xcc, 0xcd, 0x03, 0x33, 0x00, 0x08, 0x01, 0xa1, 0x03, 0x01, 0x34, + 0x34, 0xef, 0x01, 0x30, 0xf0, 0x31, 0x72, 0x17, 0xf8, 0x04, 0x01, 0xa2, 0x03, 0xa2, 0x03, 0x2d, + 0x30, 0x32, 0x20, 0x04, 0xa2, 0x03, 0x8c, 0x11, 0xac, 0x14, 0x09, 0x56, 0xda, 0xa5, 0x59, 0x30, + 0xc5, 0x5c, 0x90, 0xaa, 0x9e, 0x70, 0x6f, 0x61, 0xa1, 0xcb, 0xda, 0x96, 0xa4, 0x31, 0x9f, 0xb4, + 0xe7, 0xa0, 0xfe, 0x5c, 0xfc, 0xea, 0x1b, 0x43, 0xca, 0x36, 0xed, 0xa7, 0x9c, 0x7e, 0x5e, 0xf0, + 0x6e, 0x23, 0x80, 0x93, 0x04, 0x0f, 0x34, 0xc9, 0xef, 0x30, 0xee, 0x22, 0xf9, 0x83, 0x6e, 0x04, + 0x2d, 0xa2, 0x0f, 0x24, 0x03, 0x2d, 0x0f, 0x2d, 0x0f, 0x2d, 0x27, 0xa1, 0x03, 0x2d, 0x33, 0xc0, + 0x00, 0x04, 0x02, 0x34, 0xc9, 0xa1, 0x03, 0x01, 0x32, 0x00, 0x02, 0x18, 0x34, 0xc9, 0xef, 0x35, + 0x27, 0xa1, 0x03, 0xe0, 0x00, 0x06, 0x18, 0x2f, 0x03, 0xef, 0x35, 0x2d, 0x2d, 0x04, 0x2d, 0x0f, + 0xa1, 0x03, 0x86, 0x14, 0xe6, 0x5c, 0x1f, 0x0b, 0xa3, 0x8f, 0x38, 0xee, 0xe9, 0x15, 0x63, 0xbb, + 0x23, 0xee, 0x92, 0x0d, 0xcd, 0xed, 0xf1, 0x23, 0x5d, 0x1b, 0xea, 0x04, 0x34, 0xc9, 0xef, 0x2d, + 0x1c, 0x01, 0x1d, 0x05, 0x34, 0xc9, 0x7e, 0xfe, 0x81, 0x38, 0x0e, 0xef, 0xa1, 0x18, 0x01, 0x05, + 0x2d, 0x32, 0xa3, 0x01, 0x00, 0x06, 0x18, 0x2f, 0x03, 0xef, 0xa0, 0x01, 0x2d, 0x2d, 0x04, 0x2d, + 0x0f, 0xa1, 0x03, 0x8c, 0x10, 0xb2, 0x13, 0x0e, 0x55, 0xe4, 0x8d, 0x58, 0x39, 0xbc, 0x5b, 0x98, + 0xfd, 0x9e, 0x00, 0x36, 0x75, 0xa0, 0xdb, 0xe8, 0xb4, 0x63, 0x42, 0xc4, 0xe6, 0xb5, 0x09, 0x36, + 0xbe, 0xe9, 0x36, 0x73, 0x1b, 0x5d, 0xec, 0xd8, 0xde, 0x63, 0xbe, 0xf0, 0x61, 0xa1, 0xb3, 0x0c, + 0x04, 0x0f, 0x34, 0xc9, 0xef, 0x2d, 0x2d, 0x04, 0xa1, 0x03, 0x18, 0x25, 0xa1, 0x0f, 0x05, 0x21, + 0x2d, 0x0f, 0x34, 0xc9, 0xef, 0x1f, 0xa3, 0x03, 0x18, 0x34, 0xc9, 0xef, 0x2d, 0x2c, 0x00, 0x1e, + 0xa2, 0x34, 0xef, 0x01, 0x2d, 0x2c, 0x00, 0x07, 0x22, 0x04, 0x34, 0xc3, 0x5b, 0x1c, 0x02, 0x2d, + 0x2c, 0x00, 0x09, 0xa0, 0x01, 0x33, 0x00, 0x06, 0xa1, 0x01, 0x05, 0x02, 0xa1, 0x34, 0xc9, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x55, 0xaa, 0x55, + 0xaa, 0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x7e, 0x00, 0x00, 0x08, 0x3e, 0x28, 0x3e, 0x0a, 0x3e, 0x08, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3c, 0x42, 0x04, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00, + 0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x00, + 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x3c, 0x46, 0x4a, 0x52, 0x62, 0x3c, 0x00, 0x00, 0x18, 0x28, 0x08, 0x08, 0x08, 0x3e, 0x00, + 0x00, 0x3c, 0x42, 0x02, 0x3c, 0x40, 0x7e, 0x00, 0x00, 0x3c, 0x42, 0x0c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0x08, 0x18, 0x28, 0x48, 0x7e, 0x08, 0x00, 0x00, 0x7e, 0x40, 0x7c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0x3c, 0x40, 0x7c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7e, 0x02, 0x04, 0x08, 0x10, 0x10, 0x00, + 0x00, 0x3c, 0x42, 0x3c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x3e, 0x02, 0x3c, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x00, 0x00, 0x7c, 0x42, 0x7c, 0x42, 0x42, 0x7c, 0x00, + 0x00, 0x3c, 0x42, 0x40, 0x40, 0x42, 0x3c, 0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x44, 0x78, 0x00, + 0x00, 0x7e, 0x40, 0x7c, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x7e, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x3c, 0x42, 0x40, 0x4e, 0x42, 0x3c, 0x00, 0x00, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x00, + 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x02, 0x02, 0x02, 0x42, 0x42, 0x3c, 0x00, + 0x00, 0x44, 0x48, 0x70, 0x48, 0x44, 0x42, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7e, 0x00, + 0x00, 0x42, 0x66, 0x5a, 0x42, 0x42, 0x42, 0x00, 0x00, 0x42, 0x62, 0x52, 0x4a, 0x46, 0x42, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, 0x7c, 0x40, 0x40, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x52, 0x4a, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, 0x7c, 0x44, 0x42, 0x00, + 0x00, 0x3c, 0x40, 0x3c, 0x02, 0x42, 0x3c, 0x00, 0x00, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, + 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x24, 0x00, 0x00, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x00, + 0x00, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00, 0x00, 0x7e, 0x04, 0x08, 0x10, 0x20, 0x7e, 0x00, +}; + diff --git a/MCUME_teensy/teensycastaway/.DS_Store b/MCUME_teensy/teensycastaway/.DS_Store new file mode 100644 index 0000000..5143867 Binary files /dev/null and b/MCUME_teensy/teensycastaway/.DS_Store differ diff --git a/MCUME_teensy/teensycastaway/AudioPlaySystem.cpp b/MCUME_teensy/teensycastaway/AudioPlaySystem.cpp new file mode 100644 index 0000000..cdcd71b --- /dev/null +++ b/MCUME_teensy/teensycastaway/AudioPlaySystem.cpp @@ -0,0 +1,196 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +PROGMEM static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +void SND_Process(void *sndbuffer, int sndn); +#endif + +PROGMEM static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +PROGMEM void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +PROGMEM void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +PROGMEM void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +PROGMEM void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +PROGMEM void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +PROGMEM bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +PROGMEM void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +PROGMEM void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +PROGMEM void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensycastaway/AudioPlaySystem.h b/MCUME_teensy/teensycastaway/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensycastaway/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensycastaway/_unused/.DS_Store b/MCUME_teensy/teensycastaway/_unused/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensycastaway/_unused/.DS_Store differ diff --git a/MCUME_teensy/teensycastaway/_unused/dis.h b/MCUME_teensy/teensycastaway/_unused/dis.h new file mode 100644 index 0000000..db1f474 --- /dev/null +++ b/MCUME_teensy/teensycastaway/_unused/dis.h @@ -0,0 +1,1043 @@ + +static char *disass_cc(unsigned char cc) +{ + switch(cc) { + case 0: + return "T "; + case 1: + return "F "; + case 2: + return "HI"; + case 3: + return "LS"; + case 4: + return "CC"; + case 5: + return "CS"; + case 6: + return "NE"; + case 7: + return "EQ"; + case 8: + return "VC"; + case 9: + return "VS"; + case 0xa: + return "PL"; + case 0xb: + return "MI"; + case 0xc: + return "GE"; + case 0xd: + return "LT"; + case 0xe: + return "GT"; + case 0xf: + return "LE"; + default: + return "??"; + } +} + +static char *disass_areg(unsigned char spec) +{ + switch (spec) { + case 0: return "A0"; + case 1: return "A1"; + case 2: return "A2"; + case 3: return "A3"; + case 4: return "A4"; + case 5: return "A5"; + case 6: return "A6"; + case 7: return "A7"; + default: return "??"; + } +} + +static char *disass_dreg(unsigned char spec) +{ + switch (spec) { + case 0: return "D0"; + case 1: return "D1"; + case 2: return "D2"; + case 3: return "D3"; + case 4: return "D4"; + case 5: return "D5"; + case 6: return "D6"; + case 7: return "D7"; + default: return "??"; + } +} + +static char *disass_reg(unsigned char spec) +{ + if (spec >= 8) return disass_areg(spec & 0x7); + else return disass_dreg(spec); +} + +static void disass_reglist(char *buf, unsigned short reglist, int predecrement) +{ + int index = 0, len; + *buf = 0; + if (!predecrement) { + while (reglist) { + if (reglist & 0x1) { + strcat(buf, disass_reg(index)); + strcat(buf, "/"); + } + index++; + reglist = reglist >> 1; + } + } else { + while (reglist) { + if (reglist & 0x8000) { + strcat(buf, disass_reg(index)); + strcat(buf, "/"); + } + index++; + reglist = reglist << 1; + } + } + /* remove trailing / */ + len = strlen(buf); + if (len > 0) *(buf + len - 1) = 0; +} + +static int disass_count(unsigned char spec) +{ + if (spec == 0) return 8; + else return spec; +} + +/* +* return # of extension words used for addressing +*/ +static int disass_displacement(char *buf, unsigned short *inst_stream, char displacement) +{ + if (displacement == 0) { + sprintf(buf, "%04x", inst_stream[1]); + return 1; + } else if (displacement == -1) { + sprintf(buf, "%04x%04x", inst_stream[1], inst_stream[2]); + return 2; + } else { + sprintf(buf, "%02x", displacement); + return 0; + } +} + +/* +* return # of extension words used for addressing +*/ +static int disass_ea(char *buf, unsigned short *inst_stream, unsigned char mode, unsigned char spec, unsigned char size) +{ + switch(mode) { + case 0: + strcpy(buf, disass_dreg(spec)); + return 0; + case 1: + strcpy(buf, disass_areg(spec)); + return 0; + case 2: + sprintf(buf, "(%s)", disass_areg(spec)); + return 0; + case 3: + sprintf(buf, "(%s)+", disass_areg(spec)); + return 0; + case 4: + sprintf(buf, "-(%s)", disass_areg(spec)); + return 0; + case 5: + sprintf(buf, "%04x(%s)", inst_stream[1], disass_areg(spec)); + return 1; + case 6: // TODO: 680x0 full extension format + sprintf(buf, "(%02x(%s,%s.%c*%x)", + (char) inst_stream[1], disass_areg(spec), + disass_reg(inst_stream[1] >> 12), + (inst_stream[1] & 0x0800)?'L':'W', + 1 << ((inst_stream[1] & 0x0600) >> 9)); + return 1; + case 7: + switch(spec) { + case 0: + sprintf(buf, "%04x", inst_stream[1]); + return 1; + case 1: + sprintf(buf, "%04x%04x", inst_stream[1], inst_stream[2]); + return 2; + case 2: + sprintf(buf, "%04x(PC)", inst_stream[1]); + return 1; + case 3: // TODO: 680x0 full extension format + sprintf(buf, "(%02x(PC,%s.%c*%x)", + (char) inst_stream[1], + disass_reg(inst_stream[1] >> 12), + (inst_stream[1] & 0x0800)?'L':'W', + 1 << ((inst_stream[1] & 0x0600) >> 9)); + return 1; + case 4: + switch(size) { + case 0: + case 1: + sprintf(buf, "#%04x", inst_stream[1]); + return 1; + case 2: + sprintf(buf, "#%04x%04x", inst_stream[1], inst_stream[2]); + return 2; + case 3: + sprintf(buf, "???"); + return 0; + } + } + } + sprintf (buf, "???"); + return 0; +} + +void disassemble68k(char *buf, unsigned short *inst_stream) +{ + char src_ea_buf[80]; + char tgt_ea_buf[80]; + unsigned char src_mode = (inst_stream[0] & 0x0038) >> 3; + unsigned char src_spec = (inst_stream[0] & 0x0007); + unsigned char src_size = (inst_stream[0] & 0x00c0) >> 6; + unsigned char tgt_mode = (inst_stream[0] & 0x01c0) >> 6; + unsigned char tgt_spec = (inst_stream[0] & 0x0e00) >> 9; + unsigned char condition = (inst_stream[0] & 0x0f00) >> 8; + int wc; + switch (inst_stream[0] & 0xf000) { + case 0x0000: + // TODO: CAS2, CAS + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0]) { + case 0x003c: + sprintf(buf, "ORI.B #%02x,CCR", (char) inst_stream[1]); + return; + case 0x007c: + sprintf(buf, "ORI.W #%04x,SR", inst_stream[1]); + return; + case 0x013c: + sprintf(buf, "ANDI.B #%02x,CCR", (char) inst_stream[1]); + return; + case 0x017c: + sprintf(buf, "ANDI.W #%04x,SR", inst_stream[1]); + return; + case 0x0a3c: + sprintf(buf, "EORI.B #%02x,CCR", (char) inst_stream[1]); + return; + case 0x0a7c: + sprintf(buf, "EORI.W #%04x,SR", inst_stream[1]); + return; + } + switch (inst_stream[0] & 0x0fc0) { + case 0x0000: + sprintf(buf, "ORI.B #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0040: + sprintf(buf, "ORI.W #%04x,%s", inst_stream[1], src_ea_buf); + return; + case 0x0080: + sprintf(buf, "ORI.L #%04x%04x,%s", inst_stream[1], inst_stream[2], src_ea_buf); + return; + case 0x0200: + sprintf(buf, "ANDI.B #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0240: + sprintf(buf, "ANDI.W #%04x,%s", inst_stream[1], src_ea_buf); + return; + case 0x0280: + sprintf(buf, "ANDI.L #%04x%04x,%s", inst_stream[1], inst_stream[2], src_ea_buf); + return; + case 0x0400: + sprintf(buf, "SUBI.B #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0440: + sprintf(buf, "SUBI.W #%04x,%s", inst_stream[1], src_ea_buf); + return; + case 0x0480: + sprintf(buf, "SUBI.L #%04x%04x,%s", inst_stream[1], inst_stream[2], src_ea_buf); + return; + case 0x0600: + sprintf(buf, "ADDI.B #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0640: + sprintf(buf, "ADDI.W #%04x,%s", inst_stream[1], src_ea_buf); + return; + case 0x0680: + sprintf(buf, "ADDI.L #%04x%04x,%s", inst_stream[1], inst_stream[2], src_ea_buf); + return; + case 0x0800: + sprintf(buf, "BTST #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0840: + sprintf(buf, "BCHG #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0880: + sprintf(buf, "BCLR #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x08c0: + sprintf(buf, "BSET #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0a00: + sprintf(buf, "EORI.B #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0a40: + sprintf(buf, "EORI.W #%04x,%s", inst_stream[1], src_ea_buf); + return; + case 0x0a80: + sprintf(buf, "EORI.L #%04x%04x,%s", inst_stream[1], inst_stream[2], src_ea_buf); + return; + case 0x0c00: + sprintf(buf, "CMPI.B #%02x,%s", (char) inst_stream[1], src_ea_buf); + return; + case 0x0c40: + sprintf(buf, "CMPI.W #%04x,%s", inst_stream[1], src_ea_buf); + return; + case 0x0c80: + sprintf(buf, "CMPI.L #%04x%04x,%s", inst_stream[1], inst_stream[2], src_ea_buf); + return; + case 0x0e00: + switch (inst_stream[1] & 0x0800) { + case 0x0000: sprintf(buf, "MOVES.B %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + case 0x0800: sprintf(buf, "MOVES.B %s,%s", disass_reg((inst_stream[1] >> 12) & 0xf), src_ea_buf); + return; + } + case 0x0e40: + switch (inst_stream[1] & 0x0800) { + case 0x0000: sprintf(buf, "MOVES.W %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + case 0x0800: sprintf(buf, "MOVES.W %s,%s", disass_reg((inst_stream[1] >> 12) & 0xf), src_ea_buf); + return; + } + case 0x0e80: + switch (inst_stream[1] & 0x0800) { + case 0x0000: sprintf(buf, "MOVES.L %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + case 0x0800: sprintf(buf, "MOVES.L %s,%s", disass_reg((inst_stream[1] >> 12) & 0xf), src_ea_buf); + return; + } + case 0x06c0: + switch (inst_stream[0] & 0x0030) { + case 0x0000: sprintf(buf, "RTM %s", disass_reg(inst_stream[0] & 0xf)); + return; + case 0x0030: sprintf(buf, "CALLM %s", src_ea_buf); + return; + } + case 0x00c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 0); + switch (inst_stream[1] & 0x0800) { + case 0x0000: sprintf(buf, "CMP2.B %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + case 0x0800: sprintf(buf, "CHK2.B %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + } + case 0x02c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + switch (inst_stream[1] & 0x0800) { + case 0x0000: sprintf(buf, "CMP2.W %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + case 0x0800: sprintf(buf, "CHK2.W %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + } + case 0x04c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 2); + switch (inst_stream[1] & 0x0800) { + case 0x0000: sprintf(buf, "CMP2.L %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + case 0x0800: sprintf(buf, "CHK2.L %s,%s", src_ea_buf, disass_reg((inst_stream[1] >> 12) & 0xf)); + return; + } + } + if (inst_stream[0] & 0x0100) { + if (src_mode == 1) { + switch (tgt_mode) { + case 0x0100: sprintf(buf, "MOVEP.W #%04x(%s),%s", inst_stream[1], disass_areg(src_spec), disass_dreg(tgt_spec)); + return; + case 0x0140: sprintf(buf, "MOVEP.L #%04x(%s),%s", inst_stream[1], disass_areg(src_spec), disass_dreg(tgt_spec)); + return; + case 0x0180: sprintf(buf, "MOVEP.W %s,#%04x(%s)", disass_dreg(tgt_spec), inst_stream[1], disass_areg(src_spec)); + return; + case 0x01c0: sprintf(buf, "MOVEP.L %s,#%04x(%s)", disass_dreg(tgt_spec), inst_stream[1], disass_areg(src_spec)); + return; + } + } + switch (inst_stream[0] & 0x0030) { + case 0x0000: sprintf(buf, "BTST %s,%s", disass_dreg(tgt_spec), src_ea_buf); + return; + case 0x0010: sprintf(buf, "BCHG %s,%s", disass_dreg(tgt_spec), src_ea_buf); + return; + case 0x0020: sprintf(buf, "BCLR %s,%s", disass_dreg(tgt_spec), src_ea_buf); + return; + case 0x0030: sprintf(buf, "BSET %s,%s", disass_dreg(tgt_spec), src_ea_buf); + return; + } + } + case 0x1000: /* Move Byte */ + wc = disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 0); + disass_ea(tgt_ea_buf, inst_stream + wc, tgt_mode, tgt_spec, 0); + sprintf(buf, "MOVE.B %s,%s", src_ea_buf, tgt_ea_buf); + return; + case 0x2000: /* Move Long */ + wc = disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 2); + disass_ea(tgt_ea_buf, inst_stream + wc, tgt_mode, tgt_spec, 2); + sprintf(buf, "MOVE.L %s,%s", src_ea_buf, tgt_ea_buf); + return; + case 0x3000: /* Move Word */ + wc = disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + disass_ea(tgt_ea_buf, inst_stream + wc, tgt_mode, tgt_spec, 1); + sprintf(buf, "MOVE.W %s,%s", src_ea_buf, tgt_ea_buf); + return; + case 0x4000: /* Miscellaneous */ + // TODO: MULU.L, MULS.L, DIVU.L, DIVS.L, EXTB.L + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0xffc0) { + case 0x4000: + sprintf(buf, "NEGX.B %s", src_ea_buf); + return; + case 0x4040: + sprintf(buf, "NEGX.W %s", src_ea_buf); + return; + case 0x4080: + sprintf(buf, "NEGX.L %s", src_ea_buf); + return; + case 0x40c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "MOVE.W SR,%s", src_ea_buf); + return; + case 0x4200: + sprintf(buf, "CLR.B %s", src_ea_buf); + return; + case 0x4240: + sprintf(buf, "CLR.W %s", src_ea_buf); + return; + case 0x4280: + sprintf(buf, "CLR.L %s", src_ea_buf); + return; + case 0x42c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "MOVE.W CCR,%s", src_ea_buf); + return; + case 0x4400: + sprintf(buf, "NEG.B %s", src_ea_buf); + return; + case 0x4440: + sprintf(buf, "NEG.W %s", src_ea_buf); + return; + case 0x4480: + sprintf(buf, "NEG.L %s", src_ea_buf); + return; + case 0x44c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "MOVE.W %s,CCR", src_ea_buf); + return; + case 0x4600: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "NOT.B %s", src_ea_buf); + return; + case 0x4640: + sprintf(buf, "NOT.W %s", src_ea_buf); + return; + case 0x4680: + sprintf(buf, "NOT.L %s", src_ea_buf); + return; + case 0x46c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "MOVE.W %s,SR", src_ea_buf); + return; + case 0x4800: + if (src_mode == 1) { + sprintf(buf, "LINK.L #%04x%04x,%s", + inst_stream[1], inst_stream[2], disass_areg(src_spec)); + } else { + sprintf(buf, "NBCD %s", src_ea_buf); + } + return; + case 0x4840: + if (src_mode == 0) { + sprintf(buf, "SWAP.W %s", disass_dreg(src_spec)); + } else if (src_mode == 1) { + sprintf(buf, "BKPT #%x", src_spec); + } else { + sprintf(buf, "PEA %s", src_ea_buf); + } + return; + case 0x4880: + if (src_mode == 0) { + sprintf(buf, "EXT.W %s", disass_dreg(src_spec)); + } else { + disass_reglist(tgt_ea_buf, inst_stream[1], src_mode == 6); + disass_ea(src_ea_buf, inst_stream + 1, src_mode, src_spec, src_size); + sprintf(buf, "MOVEM.W %s,%s", tgt_ea_buf, src_ea_buf); + } + return; + case 0x48c0: + if (src_mode == 0) { + sprintf(buf, "EXT.L %s", disass_dreg(src_spec)); + } else { + disass_reglist(tgt_ea_buf, inst_stream[1], src_mode == 6); + disass_ea(src_ea_buf, inst_stream + 1, src_mode, src_spec, src_size); + sprintf(buf, "MOVEM.L %s,%s", tgt_ea_buf, src_ea_buf); + } + return; + case 0x4a00: + sprintf(buf, "TST.B %s", src_ea_buf); + return; + case 0x4a40: + sprintf(buf, "TST.W %s", src_ea_buf); + return; + case 0x4a80: + sprintf(buf, "TST.L %s", src_ea_buf); + return; + case 0x4ac0: + switch (inst_stream[0] & 0x003f) { + case 0x003a: + sprintf(buf, "BGND "); + return; + case 0x003c: + sprintf(buf, "ILLEGAL"); + return; + default: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 0); + sprintf(buf, "TAS %s", src_ea_buf); + return; + } + case 0x4c80: + if (src_mode == 0) { + } else { + disass_reglist(tgt_ea_buf, inst_stream[1], src_mode == 6); + disass_ea(src_ea_buf, inst_stream + 1, src_mode, src_spec, src_size); + sprintf(buf, "MOVEM.W %s,%s", src_ea_buf, tgt_ea_buf); + } + return; + case 0x4cc0: + if (src_mode == 0) { + } else { + disass_reglist(tgt_ea_buf, inst_stream[1], src_mode == 6); + disass_ea(src_ea_buf, inst_stream + 1, src_mode, src_spec, 2); + sprintf(buf, "MOVEM.L %s,%s", src_ea_buf, tgt_ea_buf); + } + return; + case 0x4e40: + switch(src_mode) { + case 0: + case 1: + sprintf(buf, "TRAP #%x", inst_stream[0] & 0xf); + return; + case 2: + sprintf(buf, "LINK #%4x,%s", inst_stream[1], disass_areg(src_spec)); + return; + case 3: + sprintf(buf, "UNLK %s", disass_areg(src_spec)); + return; + case 4: + sprintf(buf, "MOVE.L %s,USP", disass_areg(src_spec)); + return; + case 5: + sprintf(buf, "MOVE.L USP,%s", disass_areg(src_spec)); + return; + case 6: + switch(inst_stream[0]) { + case 0x4e70: + sprintf(buf, "RESET "); + return; + case 0x4e71: + sprintf(buf, "NOP "); + return; + case 0x4e72: + sprintf(buf, "STOP "); + return; + case 0x4e73: + sprintf(buf, "RTE "); + return; + case 0x4e74: + sprintf(buf, "RTD "); + return; + case 0x4e75: + sprintf(buf, "RTS "); + return; + case 0x4e76: + sprintf(buf, "TRAPV "); + return; + case 0x4e77: + sprintf(buf, "RTR "); + return; + } + case 7: + switch(inst_stream[0]) { + case 0x4e7a: + sprintf(buf, "MOVEC #%04x,%s", inst_stream[1] & 0xfff, disass_reg(inst_stream[1] >> 12)); + return; + case 0x4e7b: + sprintf(buf, "MOVEC #%s,%04x", disass_reg(inst_stream[1] >> 12), inst_stream[1] & 0xfff); + return; + } + } + sprintf(buf, "??? "); + return; + case 0x4e80: + sprintf(buf, "JSR %s", src_ea_buf); + return; + case 0x4ec0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 2); + sprintf(buf, "JMP %s", src_ea_buf); + return; + } + switch (tgt_mode) { + case 4: + sprintf(buf, "CHK.L %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 6: + sprintf(buf, "CHK.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 7: + sprintf(buf, "LEA %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + } + case 0x5000: /* ADDQ/SUBQ/Scc/DBcc/TRAPcc */ + // TODO: TRAPcc + wc = disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x00c0) { + case 0x0000: + if (inst_stream[0] & 0x0100) { + sprintf(buf, "SUBQ.B #%x,%s", disass_count(tgt_spec), src_ea_buf); + } else { + sprintf(buf, "ADDQ.B #%x,%s", disass_count(tgt_spec), src_ea_buf); + } + return; + case 0x0040: + if (inst_stream[0] & 0x0100) { + sprintf(buf, "SUBQ.W #%x,%s", disass_count(tgt_spec), src_ea_buf); + } else { + sprintf(buf, "ADDQ.W #%x,%s", disass_count(tgt_spec), src_ea_buf); + } + return; + case 0x0080: + if (inst_stream[0] & 0x0100) { + sprintf(buf, "SUBQ.L #%x,%s", disass_count(tgt_spec), src_ea_buf); + } else { + sprintf(buf, "ADDQ.L #%x,%s", disass_count(tgt_spec), src_ea_buf); + } + return; + case 0x00c0: + if (src_mode == 1) { + disass_displacement(tgt_ea_buf, inst_stream + wc, 0); + sprintf(buf, "DB%s %s,%s", disass_cc(condition), tgt_ea_buf, disass_dreg(src_spec)); + } else { + sprintf(buf, "S%s %s", disass_cc(condition), src_ea_buf); + } + return; + } + case 0x6000: /* Bcc/BSR/BRA */ + disass_displacement(tgt_ea_buf, inst_stream, inst_stream[0]); + if ((inst_stream[0] & 0xff00) == 0x6000) { + sprintf(buf, "BRA %s", tgt_ea_buf); + } else if ((inst_stream[0] & 0xff00) == 0x6100) { + sprintf(buf, "BSR %s", tgt_ea_buf); + } else { + sprintf(buf, "B%s %s",disass_cc(condition), tgt_ea_buf); + } + return; + case 0x7000: /* MOVEQ */ + sprintf(buf, "MOVEQ.L #%02x,%s", (char) inst_stream[0], disass_dreg(tgt_spec)); + return; + case 0x8000: /* OR/DIV/SBCD */ + // TODO: PACK, UNPK + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x01c0) { + case 0x0000: + sprintf(buf, "OR.B %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0040: + sprintf(buf, "OR.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0080: + sprintf(buf, "OR.L %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x00c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "DIVU.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0100: + if (src_mode == 0) { + sprintf(buf, "SBCD %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "SBCD -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "OR.B %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0140: + sprintf(buf, "OR.W %s,%s", disass_reg(tgt_spec), src_ea_buf); + return; + case 0x0180: + sprintf(buf, "OR.L %s,%s", disass_reg(tgt_spec), src_ea_buf); + return; + case 0x01c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "DIVS.W %s,%s", src_ea_buf, disass_reg(tgt_spec)); + return; + } + case 0x9000: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x01c0) { + case 0x0000: + sprintf(buf, "SUB.B %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0040: + sprintf(buf, "SUB.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0080: + sprintf(buf, "SUB.L %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x00c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "SUBA.W %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + case 0x0100: + if (src_mode == 0) { + sprintf(buf, "SUBX.B %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "SUBX.B -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "SUB.B %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0140: + if (src_mode == 0) { + sprintf(buf, "SUBX.W %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "SUBX.W -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "SUB.W %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0180: + if (src_mode == 0) { + sprintf(buf, "SUBX.L %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "SUBX.L -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "SUB.L %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x01c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 2); + sprintf(buf, "SUBA.L %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + } + case 0xb000: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x01c0) { + case 0x0000: + sprintf(buf, "CMP.B %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0040: + sprintf(buf, "CMP.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0080: + sprintf(buf, "CMP.L %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x00c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "CMPA.W %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + case 0x0100: + if (src_mode == 1) { + sprintf(buf, "CMPM.B (%s)+,(%s)+", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "EOR.B %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0140: + if (src_mode == 1) { + sprintf(buf, "CMPM.W (%s)+,(%s)+", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "EOR.W %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0180: + if (src_mode == 1) { + sprintf(buf, "CMPM.L (%s)+,(%s)+", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "EOR.L %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x01c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 2); + sprintf(buf, "CMPA.L %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + } + case 0xc000: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x01c0) { + case 0x0000: + sprintf(buf, "AND.B %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0040: + sprintf(buf, "AND.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0080: + sprintf(buf, "AND.L %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x00c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "MULU.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0100: + if (src_mode == 0) { + sprintf(buf, "ABCD %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "ABCD -(%s),-(%s)", disass_areg(src_spec), disass_reg(tgt_spec)); + } else { + sprintf(buf, "AND.B %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0140: + if (src_mode == 0) { + sprintf(buf, "EXG %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "EXG %s,%s", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "AND.W %s,%s", disass_reg(tgt_spec), src_ea_buf); + } + return; + case 0x0180: + if (src_mode == 1) { + sprintf(buf, "EXG %s,%s", disass_dreg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "AND.L %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x01c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "MULS.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + } + case 0xd000: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x01c0) { + case 0x0000: + sprintf(buf, "ADD.B %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0040: + sprintf(buf, "ADD.W %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x0080: + sprintf(buf, "ADD.L %s,%s", src_ea_buf, disass_dreg(tgt_spec)); + return; + case 0x00c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 1); + sprintf(buf, "ADDA.W %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + case 0x0100: + if (src_mode == 0) { + sprintf(buf, "ADDX.B %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 0x0008) { + sprintf(buf, "ADDX.B -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "ADD.B %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0140: + if (src_mode == 0) { + sprintf(buf, "ADDX.W %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "ADDX.W -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "ADD.W %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x0180: + if (src_mode == 0) { + sprintf(buf, "ADDX.L %s,%s", disass_dreg(src_spec), disass_dreg(tgt_spec)); + } else if (src_mode == 1) { + sprintf(buf, "ADDX.L -(%s),-(%s)", disass_areg(src_spec), disass_areg(tgt_spec)); + } else { + sprintf(buf, "ADD.L %s,%s", disass_dreg(tgt_spec), src_ea_buf); + } + return; + case 0x01c0: + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, 2); + sprintf(buf, "ADDA.L %s,%s", src_ea_buf, disass_areg(tgt_spec)); + return; + } + case 0xe000: + // TODO: BFTST, BFEXTU, BFCHG, BFEXTS, BFCLR, BFFFO, BFSET, BFINS + disass_ea(src_ea_buf, inst_stream, src_mode, src_spec, src_size); + switch (inst_stream[0] & 0x07c0) { + case 0x00c0: + sprintf(buf, "ASR.B #1,%s", src_ea_buf); + return; + case 0x01c0: + sprintf(buf, "ASL.B #1,%s", src_ea_buf); + return; + case 0x02c0: + sprintf(buf, "LSR.B #1,%s", src_ea_buf); + return; + case 0x03c0: + sprintf(buf, "LSL.B #1,%s", src_ea_buf); + return; + case 0x04c0: + sprintf(buf, "ROXR.B #1,%s", src_ea_buf); + return; + case 0x05c0: + sprintf(buf, "ROXL.B #1,%s", src_ea_buf); + return; + case 0x06c0: + sprintf(buf, "ROR.B #1,%s", src_ea_buf); + return; + case 0x07c0: + sprintf(buf, "ROL.B #1,%s", src_ea_buf); + return; + } + switch (inst_stream[0] & 0x01f8) { + case 0x0000: + sprintf(buf, "ASR.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0008: + sprintf(buf, "LSR.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0010: + sprintf(buf, "ROXR.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0018: + sprintf(buf, "ROR.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0020: + sprintf(buf, "ASR.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0028: + sprintf(buf, "LSR.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0030: + sprintf(buf, "ROXR.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0038: + sprintf(buf, "ROR.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0040: + sprintf(buf, "ASR.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0048: + sprintf(buf, "LSR.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0050: + sprintf(buf, "ROXR.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0058: + sprintf(buf, "ROR.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0060: + sprintf(buf, "ASR.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0068: + sprintf(buf, "LSR.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0070: + sprintf(buf, "ROXR.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0078: + sprintf(buf, "ROR.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0080: + sprintf(buf, "ASR.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0088: + sprintf(buf, "LSR.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0090: + sprintf(buf, "ROXR.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0098: + sprintf(buf, "ROR.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x00a0: + sprintf(buf, "ASR.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x00a8: + sprintf(buf, "LSR.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x00b0: + sprintf(buf, "ROXR.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x00b8: + sprintf(buf, "ROR.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0100: + sprintf(buf, "ASL.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0108: + sprintf(buf, "LSL.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0110: + sprintf(buf, "ROXL.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0118: + sprintf(buf, "ROL.B #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0120: + sprintf(buf, "ASL.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0128: + sprintf(buf, "LSL.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0130: + sprintf(buf, "ROXL.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0138: + sprintf(buf, "ROL.B #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0140: + sprintf(buf, "ASL.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0148: + sprintf(buf, "LSL.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0150: + sprintf(buf, "ROXL.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0158: + sprintf(buf, "ROL.W #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0160: + sprintf(buf, "ASL.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0168: + sprintf(buf, "LSL.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0170: + sprintf(buf, "ROXL.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0178: + sprintf(buf, "ROL.W #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0180: + sprintf(buf, "ASL.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0188: + sprintf(buf, "LSL.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0190: + sprintf(buf, "ROXL.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x0198: + sprintf(buf, "ROL.L #%x,%s", disass_count(tgt_spec), disass_dreg(src_spec)); + return; + case 0x01a0: + sprintf(buf, "ASL.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x01a8: + sprintf(buf, "LSL.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x01b0: + sprintf(buf, "ROXL.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + case 0x01b8: + sprintf(buf, "ROL.L #%s,%s", disass_dreg(tgt_spec), disass_dreg(src_spec)); + return; + } + } +} + + diff --git a/MCUME_teensy/teensycastaway/_unused/fdc.cpp_ b/MCUME_teensy/teensycastaway/_unused/fdc.cpp_ new file mode 100644 index 0000000..0991581 --- /dev/null +++ b/MCUME_teensy/teensycastaway/_unused/fdc.cpp_ @@ -0,0 +1,465 @@ +/* +* Castaway +* (C) 1994 - 2002 Martin Doering, Joachim Hoenig +* +* fdc.c - wd1772/dma emulation +* +* This file is distributed under the GPL, version 2 or at your +* option any later version. See doc/license.txt for details. +* +* revision history +* 23.05.2002 0.02.00 JH FAST1.0.1 code import: KR -> ANSI, restructuring +* 09.06.2002 0.02.00 JH Renamed io.c to st.c again (io.h conflicts with system headers) +*/ +static char sccsid[] = "$Id: fdc.c,v 1.2 2002/06/08 23:31:58 jhoenig Exp $"; +#include +#include +#include +#include "dcastaway.h" +#include "st.h" + +#include "emuapi.h" + +//#define MEMDISC 1 +#define DISK 1 + +#define DISKNULL \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0" + +int fdc_commands_executed=0; + + +/* +* FDC Registers +*/ +extern int readdsk; +unsigned char fdc_data, fdc_track, fdc_sector, fdc_status, fdc_command, fdc_motor; +unsigned char fdc_int = 0; +char fdcdir=1; +unsigned char disk_ejected[2]={0,1}; +unsigned char disk_changed[2]; +struct Disk disk[2] = { + { NULL, DISKNULL, 0, SIDES, TRACKS, SECTORS, SECSIZE }, + { NULL, DISKNULL, 0, SIDES, TRACKS, SECTORS, SECSIZE }, +}; + +typedef struct { + uint16 ID; // Word ID marker, should be $0E0F + uint16 SectorsPerTrack; // Word Sectors per track + uint16 Sides; // Word Sides (0 or 1; add 1 to this to get correct number of sides) + uint16 StartingTrack; // Word Starting track (0-based) + uint16 EndingTrack; // Word Ending track (0-based) +} MSAHEADERSTRUCT; +#define STMemory_Swap68000Int(val) ((val<<8)|(val>>8)) + + +unsigned char *msabuff; +unsigned char *disc[2]; + +int discpos[2]; + +int discread(unsigned char *buf,int a,int len,int discn) +{ + int i; + uint8 val1,val2,*dbuf; + dbuf=buf; +#ifdef MEMDISC + for (i=0;i(1050*1024)){ + return -1; + } + discpos[discn]=pos; +#ifdef MEMDISC +#else + if (disk[discn].file) emu_FileSeek(pos); +#endif + return 0; +} + + + +int FDCInit(int i) +{ + unsigned char *buf; +#ifdef MEMDISC + memset((void *)&disc[i][0],0,MAX_DISC_SIZE); +#else + memset((void *)&disc[i][0],0,256); +#endif + int len,len2,calcsides,calcsectors,calctracks,badbootsector; + discpos[i]=0; + + len = emu_FileSize(disk[i].name); + disk[i].file = emu_FileOpen(disk[i].name); + buf=&disc[i][0]; + //disk[i].file=fopen (disk[i].name, "rb"); + //fseek(disk[i].file,0,SEEK_END); + //len=ftell(disk[i].file); + disk[i].disksize = len; + //fseek(disk[i].file,0,SEEK_SET); + +#ifdef MEMDISC + //fread(buf,1,len,disk[i].file); + //fclose(disk[i].file); +#else + if (disk[i].file) { + emu_FileRead(buf, 256); + emu_FileSeek(0); + //fread(buf,1,256,disk[i].file); + //fseek(disk[i].file,0,SEEK_SET) + } +#endif + + disk[i].head = 0; + disk[i].sides = (int) *(buf + 26); + disk[i].sectors = (int) *(buf + 24); + disk[i].secsize = 512; //(int) ((*(buf + 12) << 8) | *(buf + 11)); + if (disk[i].sectors * disk[i].sides) + disk[i].tracks = (int) ((*(buf + 20) << 8) | *(buf + 19)) / + (disk[i].sectors * disk[i].sides); + + // Second Check more precise + if (len> (500*1024)) calcsides = 2; + else calcsides = 1; + if (!(((len/calcsides)/512)%9)&&(((len/calcsides)/512)/9)<86) calcsectors=9; + else if (!(((len/calcsides)/512)%10)&&(((len/calcsides)/512)/10)<86) calcsectors=10; + else if (!(((len/calcsides)/512)%11)&&(((len/calcsides)/512)/11)<86) calcsectors=11; + else if (!(((len/calcsides)/512)%12)) calcsectors=12; + calctracks =((len/calcsides)/512)/calcsectors; + + if (disk[i].sides!=calcsides||disk[i].sectors!=calcsectors||disk[i].tracks!=calctracks){ + if (disk[i].sides==calcsides&&disk[i].sectors==calcsectors){ + disk[i].tracks=calctracks; + badbootsector=0; + }else{ + disk[i].sides=calcsides; + disk[i].tracks=calctracks; + disk[i].sectors=calcsectors; + badbootsector=(i<<24)|(calcsides<<16)|(calctracks<<8)|(calcsectors); + } + + }else{ + badbootsector=0; + } + disk_ejected[i]=0; + disk_changed[i]=1; + fdc_status |= 0x40; + disk[i].head = 0; + fdc_track = 0; + + return badbootsector; +} + + +void FDCchange(int i){ + disk[(i>>24)&0xff].sides=(i>>16)&0xff; + disk[(i>>24)&0xff].tracks=(i>>8)&0xff; + disk[(i>>24)&0xff].sectors=i&0xff; +} + +void FDCeject(int num){ + int i; + +#ifdef MEMDISC + for (i=0;i<1050*1024;i++) disc[num][i]=0; +#endif + disk[num].file = NULL; + sprintf(disk[num].name,"disk%01d",num); + disk[num].sides = SIDES; + disk[num].tracks = TRACKS; + disk[num].sectors = SECTORS; + disk[num].secsize = 512; + disk_ejected[num]=1; + fdc_status |= 0x40; +} + +void FDCCommand(void) +{ + static char motor = 1; + int sides, drives; + long address; /* dma target/source address */ + long offset; /* offset in disk file */ + unsigned long count; /* number of byte to transfer */ + char *buffer; + int n; + + if (fdc_commands_executed<64) + fdc_commands_executed++; + /* DMA target/source address */ + address = (dma_adrh << 16) + (dma_adrm << 8) + dma_adrl; + + buffer = (char *)(membase + address); + /* status of side select and drive select lines */ + sides = (~psg[14]) & 0x1; + drives = (~psg[14]) & 0x6; + if (disk_ejected[drives>>2]==1) drives=2; + switch (drives) { + case 2: /* Drive A */ + drives = 0; + break; + case 4: /* Drive B */ + drives = 1; + break; + case 6: /* both, error */ + case 0: /* no drive selected */ + drives = -1; + break; + } + fdc_status = 0; /* clear fdc status */ + +#if DISK + if (fdc_command < 0x80) { /* TYPE-I fdc commands */ + if (drives >= 0) { /* drive selected */ + switch (fdc_command & 0xf0) { + case 0x00: /* RESTORE */ + disk[drives].head = 0; + fdc_track = 0; + break; + case 0x10: /* SEEK */ + disk[drives].head += (fdc_data - fdc_track); + fdc_track = fdc_data; + if (disk[drives].head < 0 + || disk[drives].head >= disk[drives].tracks) + disk[drives].head = 0; + break; + case 0x30: /* STEP */ + fdc_track += fdcdir; + case 0x20: + disk[drives].head += fdcdir; + break; + case 0x50: /* STEP-IN */ + fdc_track++; + case 0x40: + if (disk[drives].head < disk[drives].tracks) + disk[drives].head++; + fdcdir = 1; + break; + case 0x70: /* STEP-OUT */ + fdc_track--; + case 0x60: + if (disk[drives].head > 0) + disk[drives].head--; + fdcdir = -1; + break; + } + if (disk[drives].head == 0) { + fdc_status |= 0x4; + } + if (disk[drives].head != fdc_track && fdc_command & 0x4) { /* Verify? */ + fdc_status |= 0x10; + } + if (motor) { + fdc_status |= 0x20; /* spin-up flag */ + } + } else { /* no drive selected */ + fdc_status |= 0x10; + } + } else if ((fdc_command & 0xf0) == 0xd0) { /* FORCE INTERRUPT */ + if (fdc_command == 0xd8) { + fdc_int = 1; + } else if (fdc_command == 0xd0) { + fdc_int = 0; + } + } else { /* OTHERS */ + if (drives >= 0) { /* drive selected */ + /* offset within floppy-file */ + offset = disk[drives].secsize * + (((disk[drives].sectors * disk[drives].sides * disk[drives].head)) + + (disk[drives].sectors * sides) + (fdc_sector - 1)); + switch (fdc_command & 0xf0) { + case 0x80: /* READ SECTOR */ + count = 512; + if (!discseek (drives, offset, 0)) { + if (address> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + break; + } + }else{ + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + mfp_gpip |= 0x20; + fdc_status |= 0x1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0x90: /* READ SECTOR multiple */ + count = dma_scr * 512; + if (count+(fdc_sector-1)*512>disk[drives].sectors*512) count=disk[drives].sectors*512-(fdc_sector-1)*512; + if (!discseek (drives, offset, 0)) { + if (address> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + fdc_sector += count/disk[drives].secsize; + break; + } + }else{ + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + mfp_gpip |= 0x20; + fdc_status |= 0x1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xa0: /* WRITE SECTOR */ + count = dma_scr * 512; + if (!discseek (drives, offset, 0)) { + if (count == discwrite ((unsigned char *)buffer, 1, count, drives)) { + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xb0: /* WRITE SECTOR multiple */ + count = dma_scr * 512; + if (!discseek (drives, offset, 0)) { + if (count == discwrite ((unsigned char *)buffer, 1, count, drives)) { + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + fdc_sector += dma_scr * (512 / disk[drives].secsize); + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xc0: /* READ ADDRESS */ + fdc_status |= 0x10; + break; + case 0xe0: /* READ TRACK */ + count = disk[drives].sectors * 512; + offset = disk[drives].secsize * + (((disk[drives].sectors * disk[drives].sides * disk[drives].head)) + + (disk[drives].sectors * sides)); + if (!discseek (drives, offset, 0)) { + if (address> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + break; + } + }else{ + address += 302; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + mfp_gpip |= 0x20; + fdc_status |= 0x1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xf0: /* WRITE TRACK */ + fdc_status |= 0x10; + break; + } + if (disk[drives].head != fdc_track) { + fdc_status |= 0x10; + } + } else { + fdc_status |= 0x10; /* no drive selected */ + } + } +#endif + if (motor) { + fdc_status |= 0x80; /* motor on flag */ + fdc_motor=1; + } + if (!(fdc_status & 0x01)) { /* not busy */ + mfp_iprb |= (0x80 & mfp_ierb); /* Request Interrupt */ + mfp_gpip &= ~0x20; + } +} diff --git a/MCUME_teensy/teensycastaway/_unused/ikbd.cpp_ b/MCUME_teensy/teensycastaway/_unused/ikbd.cpp_ new file mode 100644 index 0000000..7dff097 --- /dev/null +++ b/MCUME_teensy/teensycastaway/_unused/ikbd.cpp_ @@ -0,0 +1,814 @@ +/* + * Castaway + * (C) 1994 - 2002 Martin Doering, Joachim Hoenig + * + * ikbd.c - ST keyboard processor emulator (german keymap) + * + * This file is distributed under the GPL, version 2 or at your + * option any later version. See doc/license.txt for details. + * + * revision history + * 23.05.2002 JH FAST1.0.1 code import: KR -> ANSI, restructuring + * 09.06.2002 JH Renamed io.c to st.c again (io.h conflicts with system headers) + * 16.06.2002 JH New function: IkbdQueryBuffer(). X11 keysym conversion removed. + * 29.10.2002 JH Added joystick interrogation mode and Joystick functions. + */ +static char sccsid[] = "$Id: ikbd.c,v 1.5 2003/03/07 20:24:15 mdoering Exp $"; +#include +#ifndef DREAMCAST +#include +#else +#include +#endif +#include "dcastaway.h" +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" + +#define max(A,B) ((A>B)?A:B) + + +void IkbdMouse(void); + +struct _mouse mouse; +struct _joystick joystick; +unsigned char inbuff[IBS]; +unsigned char outbuff[OBS]; +int inbuffi = 0; +int outbuffi = 0; + +static unsigned char prevbut=0x2|0x8; + +int ikbd_pulling=0; +int ikbd_direct=0; +static unsigned ikbd_writed=6; +static int ikbd_pause = 0; +static int mouse_xabs=0; +static int mouse_yabs=0; +static int mouse_dx=0; +static int mouse_dy=0; + +void IkbdRecv(unsigned char inchar) +{ +#ifdef DEBUG_IKBD + printf ("IkbdRecv: 0x%X (inbuffi=%i)\n", inchar, inbuffi); fflush(stdout); +#endif + ikbd_pulling=0; + if (inbuffi == IBS) { +#ifdef DEBUG_IKBD + printf ("IkbdRecv: Input buffer overrun!\n"); fflush(stdout); +#endif + inbuffi = 0; + } + inbuff[inbuffi++] = inchar; + switch (inbuff[0]) { + case 0x07: /* set mouse button action */ + if (inbuffi == 2) { + inbuffi = 0; + mouse.button_action = inbuff[1]; + } + break; + case 0x08: /* set relative mouse position reporting */ + inbuffi = 0; + mouse.mode = 1; + break; + case 0x09: /* set absolute mouse positioning */ + if (inbuffi == 5) { + mouse.mode = 2; + mouse.xmax = (inbuff[1] << 8) | inbuff[2]; + mouse.ymax = (inbuff[3] << 8) | inbuff[4]; + inbuffi = 0; + } + break; + case 0x0a: /* set mouse keycode mode */ + if (inbuffi == 3) { + mouse.mode = 3; + mouse.xkcm = inbuff[1]; + mouse.ykcm = inbuff[2]; + inbuffi = 0; + } + break; + case 0x0b: /* set mouse threshold */ + if (inbuffi == 3) { + mouse.xth = inbuff[1]; + mouse.yth = inbuff[2]; + inbuffi = 0; + } + break; + case 0x0c: /* set mouse scale */ + if (inbuffi == 3) { + mouse.xscale = inbuff[1]; + mouse.yscale = inbuff[2]; + inbuffi = 0; + } + break; + case 0x0d: /* interrogate mouse position */ + inbuffi=0; + if ((outbuffi+6) > (OBS - 1)) + break; + + if (mouse_xabs>mouse.xmax) mouse_xabs=mouse.xmax; + else if (mouse_xabs<0) mouse_xabs=0; + if (mouse_yabs>mouse.ymax) mouse_yabs=mouse.ymax; + else if (mouse_yabs<0) mouse_yabs=0; + + if (ikbd_writed>=6) + { + ikbd_writed=0; + unsigned char but=0,tmprev; + if(mouse.buttons&1) + but|=1; + else + but|=2; + if (mouse.buttons&2) + but|=4; + else + but|=8; + + tmprev=prevbut; + prevbut = but; + but &= ~tmprev; + + IkbdSend (0xf7); + IkbdSend (but); + IkbdSend ((mouse_xabs >> 8)&0xff); + IkbdSend (mouse_xabs&0xff); + IkbdSend ((mouse_yabs >> 8)&0xff); + IkbdSend ((mouse_yabs)&0xff); + mouse.flag = 1; + } + break; + case 0x0e: /* load mouse position */ + if (inbuffi == 6) { + inbuffi = 0; + mouse.x = (inbuff[2] << 8) | inbuff[3]; + mouse.y = (inbuff[4] << 8) | inbuff[5]; + } + break; + case 0x0f: /* set Y=0 at bottom */ + inbuffi = 0; + mouse.yinv = 1; + break; + case 0x10: /* set Y=0 at top */ + inbuffi = 0; + mouse.yinv = 0; + break; + case 0x11: /* resume */ + inbuffi = 0; +/* + ikbd_pause = 0; +*/ + break; +#if 0 + case 0x00: /* ??? */ + inbuffi = 0; + ikbd_direct = 0; + break; +#endif + case 0x12: /* disable mouse */ + inbuffi = 0; +#if 0 + if (!ikbd_direct) + mouse.mode = 0; + else + mouse.mode = 2; +#else + mouse.mode = 0; + ikbd_direct = 1; +#endif + break; + case 0x13: /* ikbd_pause output */ + inbuffi = 0; +/* + ikbd_pause = 1; +*/ + break; + case 0x14: /* set joystick event reporting */ + inbuffi = 0; + ikbd_direct = 1; + joystick.mode = inbuff[0]; + break; + case 0x15: /* set joystick interrogation mode */ + inbuffi = 0; + ikbd_direct = 0; + joystick.mode = inbuff[0]; + break; + case 0x16: /* joystick interrogation */ + inbuffi = 0; + IkbdSend(0xfd); + IkbdSend(joystick.state1); + IkbdSend(joystick.state0); + ikbd_pulling=1; + break; + case 0x17: /* set joystick monitoring */ + if (inbuffi == 2) { + inbuffi = 0; + joystick.rate = inbuff[1]; + joystick.mode = inbuff[0]; + } + break; + case 0x18: /* set fire button monitoring */ + inbuffi = 0; + joystick.mode = inbuff[0]; + break; + case 0x19: /* set joystick keycode mode */ + if (inbuffi == 7) { + inbuffi = 0; + joystick.mode = inbuff[0]; + } + break; + case 0x1a: /* disable joysticks */ + if (!mouse.mode) + mouse.mode=2; + inbuffi = 0; + joystick.mode = inbuff[0]; + ikbd_direct = 1; + break; + case 0x1b: /* time-of-day clock set */ + if (inbuffi == 7) { + inbuffi = 0; + } + break; + case 0x1c: /* interrogate time-of-day clock */ + inbuffi = 0; + IkbdSend (0xfc); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + break; + case 0x20: /* memory load */ + if (inbuffi == 4) { + inbuffi = 0; + } + break; + case 0x21: /* memory read */ + if (inbuffi == 3) { + inbuffi = 0; + } + break; + case 0x22: /* controller execute */ + if (inbuffi == 3) { + inbuffi = 0; + } + break; + case 0x80: /* reset */ + if (inbuffi == 2) + { + IkbdSend (0xf0); + inbuffi = 0; + ikbd_direct = 0; + mouse.buttons = 0; + mouse.stbuttons = 0; + switch (vid_shiftmode) { + case 0: + mouse.stx = 160; + mouse.sty = 100; + break; + case 1: + mouse.stx = 320; + mouse.sty = 100; + break; + case 2: + mouse.stx = 320; + mouse.sty = 200; + break; + } + } + break; + case 0x87: /* request button action */ + inbuffi = 0; + IkbdSend (0x07); + IkbdSend (mouse.button_action); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 0x88: /* request mouse mode */ + case 0x89: + case 0x8a: + switch (mouse.mode) { + case 1: + IkbdSend (0x08); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 2: + IkbdSend (0x09); + IkbdSend (mouse.xmax >> 8); + IkbdSend (mouse.xmax); + IkbdSend (mouse.ymax >> 8); + IkbdSend (mouse.ymax); + IkbdSend (0); + IkbdSend (0); + break; + case 3: + IkbdSend (0x09); + IkbdSend (mouse.xkcm); + IkbdSend (mouse.ykcm); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + } + inbuffi = 0; + mouse.mode = 1; + break; + case 0x8b: /* request mouse threshold */ + IkbdSend (0x0b); + IkbdSend (mouse.xth); + IkbdSend (mouse.yth); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x8c: /* request mouse scale */ + IkbdSend (0x0b); + IkbdSend (mouse.xscale); + IkbdSend (mouse.yscale); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x8f: /* request mouse vertical coordinates */ + case 0x90: + if (mouse.yinv) + IkbdSend (0x0f); + else + IkbdSend (0x10); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x92: /* disable mouse */ + if (mouse.mode) + IkbdSend (0); + else + IkbdSend (0x12); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x94: /* request joystick mode */ + case 0x95: + case 0x99: /* set joystick keycode mode */ + switch (joystick.mode) { + case 0x14: + case 0x15: + IkbdSend (joystick.mode); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 0x19: + IkbdSend (0x19); + IkbdSend (joystick.rx); + IkbdSend (joystick.ry); + IkbdSend (joystick.tx); + IkbdSend (joystick.ty); + IkbdSend (joystick.vx); + IkbdSend (joystick.vy); + break; + } + inbuffi = 0; + break; + case 0x9a: /* request joystick availability */ + if (joystick.mode != 0x1a) + IkbdSend (0); + else + IkbdSend (0x1a); + IkbdSend (joystick.rx); + IkbdSend (joystick.ry); + IkbdSend (joystick.tx); + IkbdSend (joystick.ty); + IkbdSend (joystick.vx); + IkbdSend (joystick.vy); + inbuffi = 0; + break; + default: + inbuffi = 0; + } +} + +void IkbdSend (unsigned char outchar) +{ +#ifdef DEBUG_IKBD + printf("IkbdSend(0x%X)\n",outchar); fflush(stdout); +#endif + if (outbuffi < (OBS - 1)) + outbuff[outbuffi++] = outchar; +} + + + +/* + * This function tests if there is still + * Ikbd Output waiting to be written + */ +int IkbdQueryBuffer(void) +{ + return ((mouse.flag || outbuffi > 0) && !ikbd_pause); +} + +void IkbdWriteBuffer(void) +{ + if (mouse.flag && (outbuffi < (OBS / 2))) { + IkbdMouse (); + } + + if (outbuffi > 0 && !ikbd_pause && (acia1_sr & 0x1) == 0) { + ikbd_writed++; + acia1_sr |= 1; + if (acia1_cr & 0x80) { /* receiver interrupt enabled? */ + acia1_sr |= 0x80; + mfp_gpip &= (~0x10); + } + acia1_dr = outbuff[0]; + memcpy (&outbuff[0], &outbuff[1], (OBS - 1)); + outbuffi--; + } + +} + +void IkbdKeyPress (unsigned short keysym) +{ +#ifdef DEBUG_IKBD + printf("IkbdKeyPress(%X)\n",keysym); fflush(stdout); +#endif + IkbdSend (keysym); +} + +void IkbdKeyRelease (unsigned short keysym) +{ +#ifdef DEBUG_IKBD + printf("IkbdKeyRelease(%X)\n",keysym); fflush(stdout); +#endif + IkbdSend (0x80 | keysym); +} + +void IkbdMouse(void) +{ + int dx,dy; + mouse.flag = 0; + switch (mouse.mode) { + + case 1: + dx = mouse.x - mouse.stx; + dy = mouse.y - mouse.sty; + if (dx > 127) { + dx = 127; + mouse.flag = 1; + } + if (dx < -127) { + dx = -127; + mouse.flag = 1; + } + if (dy > 127) { + dy = 127; + mouse.flag = 1; + } + if (dy < -127) { + dy = -127; + mouse.flag = 1; + } + if (mouse.stbuttons != mouse.buttons + || max (dx, -dx) > mouse.xth || max (dy, -dy) > mouse.yth) { + mouse.stbuttons = mouse.buttons; + mouse.stx = mouse.stx + dx; + mouse.sty = mouse.sty + dy; + if (mouse.stx <= 0) { + mouse.stx = 0; + dx = -127; + } + if (mouse.sty <= 0) { + mouse.sty = 0; + dy = -127; + } + switch (vid_shiftmode) { + case 0: + if (mouse.stx >= 319) { + mouse.stx = 319; + dx = 127; + } + if (mouse.sty >= 199) { + mouse.sty = 199; + dy = 127; + } + break; + case 1: + if (mouse.stx >= 639) { + mouse.stx = 639; + dx = 127; + } + if (mouse.sty >= 199) { + mouse.sty = 199; + dy = 127; + } + break; + case 2: + if (mouse.stx >= 639) { + mouse.stx = 639; + dx = 127; + } + if (mouse.sty >= 399) { + mouse.sty = 399; + dy = 127; + } + break; + } + IkbdSend (0xf8 | mouse.buttons); + IkbdSend (dx); + IkbdSend (dy); + } +#ifdef DEBUG_IKBD + printf ("Mouse1: x %d, y %d, dx %d, dy %d, but %d\n", mouse.stx, mouse.sty, dx, dy, mouse.buttons); fflush(stdout); +#endif + break; + + case 2: +//if (mouse.x>mouse.xmax) mouse.x=mouse.xmax; +//if (mouse.y>mouse.ymax) mouse.y=mouse.ymax; +#ifdef DEBUG_IKBD + puts("MOUSE MODE NOT SUPPORTED YET"); fflush(stdout); +#endif +// break; + +//case 0: + case 3: + if ((mouse.stbuttons&0x3) != (mouse.buttons&0x3)) + { + if ((mouse.stbuttons&0x1) != (mouse.buttons&0x1)) + { + if (mouse.stbuttons&0x1) + { + IkbdSend(0xF5); + IkbdSend(0xF5); + } + else + { + IkbdSend(0x75); + IkbdSend(0x75); + } + } + else + if ((mouse.stbuttons&0x2) != (mouse.buttons&02)) + { + if (mouse.stbuttons&0x2) + { + IkbdSend(0xF4); + IkbdSend(0xF4); + } + else + { + IkbdSend(0x74); + IkbdSend(0x74); + } + } + mouse.stbuttons = mouse.buttons; + } + { + int i; + dx = mouse_dx; + dy = mouse_dy; + for(i=0;i<10;i++) + { + if (dx<0) + { + IkbdSend(75); + IkbdSend(75|0x80); + dx++; + } + else if (dx>0) + { + IkbdSend(77); + IkbdSend(77|0x80); + dx--; + } + if (dy<0) + { + IkbdSend(72); + IkbdSend(72|0x80); + dy++; + } + else if (dy>0) + { + IkbdSend(80); + IkbdSend(80|0x80); + dy--; + } + } + } + mouse_dx = mouse_dy = 0; +#ifdef DEBUG_IKBD + printf ("Mouse0: x %d, y %d, dx %d, dy %d, but %d\n", mouse.stx, mouse.sty, dx, dy, mouse.buttons); fflush(stdout); +#endif + break; +#ifdef DEBUG_IKBD + default: + puts("MOUSE MODE ERROR"); fflush(stdout); +#endif + } +} + +void IkbdMouseMotion (int x, int y, int dx, int dy) +{ + static int xant=0, yant=0; + + mouse_xabs=x; + mouse_yabs=y; + mouse_dx=dx; + mouse_dy=dy; + switch (vid_shiftmode) { + case 1: + mouse.x += (x-xant); + if (mouse.x < 0) + mouse.x = 0; + else + if (mouse.x > 640) + mouse.x = 639; + mouse.y += (y-yant); + if (mouse.y < 0) + mouse.y = 0; + else + if (mouse.y>200) + mouse.y=199; + break; + case 0: + mouse.x += (x-xant); + if (mouse.x < 0) + mouse.x = 0; + else + if (mouse.x > 320) + mouse.x = 319; + mouse.y += (y-yant); + if (mouse.y < 0) + mouse.y = 0; + else + if (mouse.y>200) + mouse.y=199; + break; + case 2: + mouse.x += (x-xant); + if (mouse.x < 0) + mouse.x = 0; + else + if (mouse.x > 640) + mouse.x = 639; + mouse.y += (y-yant); + if (mouse.y < 0) + mouse.y = 0; + else + if (mouse.y>400) + mouse.y=399; + break; + } + mouse.flag = 1; + xant=x; + yant=y; +} + +void IkbdMousePress (int code) +{ +#ifdef DEBUG_IKBD + printf("IkbdMousePress(%X)\n",code); fflush(stdout); +#endif + mouse.buttons |= code; + IkbdMouse(); +} + +void IkbdMouseRelease (int code) +{ +#ifdef DEBUG_IKBD + printf("IkbdMouseRelease(%X)\n",code); fflush(stdout); +#endif + mouse.buttons &= ~code; + IkbdMouse(); +} + +void IkbdJoystickChange(int number, uint8 state) +{ + static uint8 joyold0=0; + static uint8 joyold1=0; +#ifdef DEBUG_IKBD + printf("IkbdJoystickChange(%i,0x%X)\n",number,state); fflush(stdout); +#endif + if (number == 0 && joystick.state0 != state) { + joystick.state0 = state; + /* TODO: only if joystick event reporting selected */ + if (!ikbd_pulling) + { + if (!ikbd_direct) + { + if ((state&0x80)!=joyold0) + { + IkbdSend(0xf8|(state>>7)); + IkbdSend(state&0x7f); + IkbdSend(0); + joyold0=state&0x80; + } + else + { + IkbdSend(0xff); + IkbdSend(state&0x7f); + } + } + else + { + IkbdSend(0xff); + IkbdSend(state); + } + } + } + if (number == 1 && joystick.state1 != state) { + joystick.state1 = state; + /* TODO: only if joystick event reporting selected */ + if (!ikbd_pulling) + { + if (!ikbd_direct) + { + if ((state&0x80)!=joyold1) + { + IkbdSend(0xfa|(state>>7)); + IkbdSend(state&0x7f); + IkbdSend(0); + joyold1=state&0x80; + } + else + { + IkbdSend(0xfe); + IkbdSend(state&0x7f); + } + } + else + { + IkbdSend(0xfe); + IkbdSend(state); + } + } + } +} + + +void Ikbd_Reset(void) +{ + //SDL_Event event; + //SDL_Delay(333); + //while(SDL_PollEvent(&event)) + // SDL_Delay(20); + IkbdSend(0x80); + IkbdSend(0xff); + IkbdSend(0x80); + acia1_cr=150; + acia1_sr=0; + acia1_dr=240; + acia2_cr=149; + acia2_sr=0; + acia2_dr=0; + inbuffi = 0; + outbuffi = 0; + ikbd_pause = 0; + ikbd_pulling=0; + ikbd_direct=0; + mouse.mode = 1; + prevbut=0x2|0x8; + ikbd_writed=6; +} + +void IkbdReset(void) +{ + Ikbd_Reset(); +} + +void IkbdLoop(void) +{ +} + +void IkbdMouseMotion(int x, int y) +{ + IkbdMouseMotion(x,y,1,1); +} + diff --git a/MCUME_teensy/teensycastaway/blitter.cpp b/MCUME_teensy/teensycastaway/blitter.cpp new file mode 100644 index 0000000..a21eb0a --- /dev/null +++ b/MCUME_teensy/teensycastaway/blitter.cpp @@ -0,0 +1,213 @@ +/* +* Castaway +* (C) 1994 - 2002 Martin Doering, Joachim Hoenig +* +* blitter.c - ST blitter chip emulation +* +* This file is distributed under the GPL, version 2 or at your +* option any later version. See doc/license.txt for details. +* +* revision history +* 23.05.2002 JH FAST1.0.1 code import: KR -> ANSI, restructuring +* 09.06.2002 JH Renamed io.c to st.c again (io.h conflicts with system headers) +* 02.10.2002 JH use uint16 etc. +*/ +static char sccsid[] = "$Id: blitter.c,v 1.3 2002/10/02 22:44:51 jhoenig Exp $"; +#include +#include "dcastaway.h" +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" + +#include + +#define FXSR 0x80 +#define NFSR 0x40 +#define SKEW 0x0f +#define BUSY 0x80 +#define HOG 0x40 +#define SMUDGE 0x20 +#define LINENO 0x0f + +PROGMEM void bitblt(void) +{ + uint32 blt_src_in; + uint16 blt_src_out, blt_hop_out, blt_dst_in, blt_dst_out, mask_out; + int xc, yc, lineno, last, first; +#if (VERBOSE & 0x8) + DBG_OUT ("bitblt: Start\n"); + DBG_OUT ("HALFT[] 0x%04x-%04x-%04x-%04x\n", (uint16) blt_halftone[0], blt_halftone[1], blt_halftone[2], blt_halftone[3]); + DBG_OUT ("Y COUNT 0x%04x\n", (uint16) blt_y_cnt); + DBG_OUT ("X COUNT 0x%04x\n", (uint16) blt_x_cnt); + DBG_OUT ("X S INC 0x%04x\n", (uint16) blt_src_x_inc); + DBG_OUT ("Y S INC 0x%04x\n", (uint16) blt_src_y_inc); + DBG_OUT ("X D INC 0x%04x\n", (uint16) blt_dst_x_inc); + DBG_OUT ("Y D INC 0x%04x\n", (uint16) blt_dst_y_inc); + DBG_OUT ("ENDMASK 0x%04x-%04x-%04x\n", (uint16) blt_end_1, (uint16) blt_end_2, (uint16) blt_end_3); + DBG_OUT ("S_ADDR 0x%08lx\n", blt_src_addr); + DBG_OUT ("D_ADDR 0x%08lx\n", blt_dst_addr); + DBG_OUT ("HOP=%01d, OP=%02d\n", blt_hop & 0x3, blt_op & 0xf); + DBG_OUT ("HOPline=%02d\n", blt_status & 0xf); + DBG_OUT ("NFSR=%d, FXSR=%d, SKEW=%02d\n", (blt_skew & NFSR) != 0, + (blt_skew & FXSR) != 0, + (blt_skew & SKEW)); +#endif + yc = (blt_y_cnt == 0) ? 65536 : blt_y_cnt; + while (yc-- > 0) { + xc = (blt_x_cnt == 0) ? 65536 : blt_x_cnt; + first = 1; + blt_src_in = 0; + /* next line to get rid of obnoxious compiler warnings */ + blt_src_out = blt_hop_out = blt_dst_out = 0; + while (xc-- > 0) { + last = (xc == 0); + if ((blt_hop & 0x03) >= 2) { + /* read source into blt_src_in */ + if (blt_src_x_inc >= 0) { + if (first && (blt_skew & FXSR)) { + blt_src_in = (GetMemW (blt_src_addr) << 16); + blt_src_addr += blt_src_x_inc; + } else { + blt_src_in <<= 16; + } + if (last && (blt_skew & NFSR)) { + blt_src_addr -= blt_src_x_inc; + } else { + blt_src_in |= (uint16) GetMemW (blt_src_addr); + if (!last) { + blt_src_addr += blt_src_x_inc; + } + } + } else { + if (first && (blt_skew & FXSR)) { + blt_src_in = (uint16) GetMemW (blt_src_addr); + blt_src_addr +=blt_src_x_inc; + } else { + blt_src_in >>= 16; + } + if (last && (blt_skew & NFSR)) { + blt_src_addr -= blt_src_x_inc; + } else { + blt_src_in |= (GetMemW (blt_src_addr) << 16); + if (!last) { + blt_src_addr += blt_src_x_inc; + } + } + } + /* shift blt_skew times into blt_src_out */ + blt_src_out = blt_src_in >> (blt_skew & SKEW); +#if (VERBOSE & 0x8) + DBG_OUT ("%04x ", blt_src_out); +#endif + } + /* halftone OP */ + lineno = ((blt_status & SMUDGE) ? blt_src_out : blt_status) & LINENO; + switch (blt_hop & 0x3) { + case 0: + blt_hop_out = 0xffff; + break; + case 1: + blt_hop_out = blt_halftone[lineno]; + break; + case 2: + blt_hop_out = blt_src_out; + break; + case 3: + blt_hop_out = blt_src_out & blt_halftone[lineno]; + break; + } + /* read destination into blt_dst_in */ + blt_dst_in = GetMemW (blt_dst_addr); + /* op into blt_dst_out */ + switch (blt_op & 0xf) { + case 0: + blt_dst_out = 0; + break; + case 1: + blt_dst_out = blt_hop_out & blt_dst_in; + break; + case 2: + blt_dst_out = blt_hop_out & ~blt_dst_in; + break; + case 3: + blt_dst_out = blt_hop_out; + break; + case 4: + blt_dst_out = ~blt_hop_out & blt_dst_in; + break; + case 5: + blt_dst_out = blt_dst_in; + break; + case 6: + blt_dst_out = blt_hop_out ^ blt_dst_in; + break; + case 7: + blt_dst_out = blt_hop_out | blt_dst_in; + break; + case 8: + blt_dst_out = ~blt_hop_out & ~blt_dst_in; + break; + case 9: + blt_dst_out = ~blt_hop_out ^ blt_dst_in; + break; + case 0xa: + blt_dst_out = ~blt_dst_in; + break; + case 0xb: + blt_dst_out = blt_hop_out | ~blt_dst_in; + break; + case 0xc: + blt_dst_out = ~blt_hop_out; + break; + case 0xd: + blt_dst_out = ~blt_hop_out | blt_dst_in; + break; + case 0xe: + blt_dst_out = ~blt_hop_out | ~blt_dst_in; + break; + case 0xf: + blt_dst_out = 0xffff; + break; + } + /* and endmask */ + if (first) { + mask_out = (blt_dst_out & blt_end_1) | (blt_dst_in & ~blt_end_1); + } else if (last) { + mask_out = (blt_dst_out & blt_end_3) | (blt_dst_in & ~blt_end_3); + } else { + mask_out = (blt_dst_out & blt_end_2) | (blt_dst_in & ~blt_end_2); + } + SetMemW (blt_dst_addr, mask_out); + if (!last) { + blt_dst_addr += blt_dst_x_inc; + } + first = 0; + } +#if (VERBOSE & 0x8) + DBG_OUT ("\n"); +#endif + blt_status = (blt_status + ((blt_dst_y_inc >= 0) ? 1 : 15)) & 0xef; + blt_src_addr += blt_src_y_inc; + blt_dst_addr += blt_dst_y_inc; + } + /* blt_status &= ~BUSY; */ + blt_y_cnt = 0; +#if (VERBOSE & 0x8) + DBG_OUT ("bitblt: End\n"); + DBG_OUT ("HALFT[] 0x%04x-%04x-%04x-%04x\n", (uint16) blt_halftone[0], blt_halftone[1], blt_halftone[2], blt_halftone[3]); + DBG_OUT ("Y COUNT 0x%04x\n", (uint16) blt_y_cnt); + DBG_OUT ("X COUNT 0x%04x\n", (uint16) blt_x_cnt); + DBG_OUT ("X S INC 0x%04x\n", (uint16) blt_src_x_inc); + DBG_OUT ("Y S INC 0x%04x\n", (uint16) blt_src_y_inc); + DBG_OUT ("X D INC 0x%04x\n", (uint16) blt_dst_x_inc); + DBG_OUT ("Y D INC 0x%04x\n", (uint16) blt_dst_y_inc); + DBG_OUT ("ENDMASK 0x%04x-%04x-%04x\n", (uint16) blt_end_1, (uint16) blt_end_2, (uint16) blt_end_3); + DBG_OUT ("S_ADDR 0x%08lx\n", blt_src_addr); + DBG_OUT ("D_ADDR 0x%08lx\n", blt_dst_addr); + DBG_OUT ("HOP=%01d, OP=%02d\n", blt_hop & 0x3, blt_op & 0xf); + DBG_OUT ("HOPline=%02d\n", blt_status & 0xf); + DBG_OUT ("NFSR=%d, FXSR=%d, SKEW=%02d\n", (blt_skew & NFSR) != 0, + (blt_skew & FXSR) != 0, + (blt_skew & SKEW)); +#endif +} diff --git a/MCUME_teensy/teensycastaway/bmpjoy.h b/MCUME_teensy/teensycastaway/bmpjoy.h new file mode 100644 index 0000000..e1c6299 --- /dev/null +++ b/MCUME_teensy/teensycastaway/bmpjoy.h @@ -0,0 +1,41 @@ +PROGMEM const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensycastaway/bmptft.h b/MCUME_teensy/teensycastaway/bmptft.h new file mode 100644 index 0000000..5ba5346 --- /dev/null +++ b/MCUME_teensy/teensycastaway/bmptft.h @@ -0,0 +1,40 @@ +PROGMEM const uint16_t bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensycastaway/bmpvbar.h b/MCUME_teensy/teensycastaway/bmpvbar.h new file mode 100644 index 0000000..9de7f9a --- /dev/null +++ b/MCUME_teensy/teensycastaway/bmpvbar.h @@ -0,0 +1,152 @@ +PROGMEM const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensycastaway/bmpvga.h b/MCUME_teensy/teensycastaway/bmpvga.h new file mode 100644 index 0000000..b1dbed4 --- /dev/null +++ b/MCUME_teensy/teensycastaway/bmpvga.h @@ -0,0 +1,40 @@ +PROGMEM const uint16_t bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensycastaway/dcastaway.h b/MCUME_teensy/teensycastaway/dcastaway.h new file mode 100644 index 0000000..ac32bb7 --- /dev/null +++ b/MCUME_teensy/teensycastaway/dcastaway.h @@ -0,0 +1,149 @@ +#define USE_FAME_CORE_C 1 +#define USE_FAME_CORE 1 +#define FAME_GLOBAL_CONTEXT 1 +//#define NO_SOUND 1 + + +#ifndef CONFIGH +#define CONFIGH + + +/* + * Environment Configuration + */ +#if !defined(USE_BIG_ENDIAN) && !defined(USE_LITTLE_ENDIAN) +#define USE_LITTLE_ENDIAN +#endif + +#ifndef INLINE +#define INLINE static __inline__ +#endif + + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +/* + * compiler representation of M68000 .B .W .L operands + */ +#ifndef __cplusplus +typedef signed char bool; +#endif +#ifndef DREAMCAST +typedef signed char int8; +typedef signed short int16; +typedef signed long int32; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned long uint32; +#else +#include +#endif + +/* + * Atari ST emulator defaults + */ +#define MEMBASE 0x00000000L +#ifndef MEMSIZE +//#define MEMSIZE 0x00100000L /* default memsize 1 Mb */ +//#define MEMSIZE 0x00080000L /* default memsize 512 Kb */ +#define MEMSIZE 0x00080000L /* default memsize 512 Kb split */ +//#define MEM1SIZE 0x0007F800L +#define MEM1SIZE 0x00078000L +#endif +#define CARBASE 0x00fa0000L +#define CARSIZE 0x00020000L /* 128k cartridge */ +#define ROMBASE 0x00fc0000L +#define ROMBASE2 0x00e00000L +#define ROMSIZE 0x00030000L /* 192k */ +#define ROMSIZE2 0x00040000L /* 256k */ +#define IOBASE 0x00ff8000L +#define IOSIZE 0x00008000L /* 32k */ +#define SVADDR 0x00000800L + + +#define MONITOR 2 /* 0=color 320x200 or 2=monochrome 640x400 */ +#define SIDES 2 /* disk sides */ +#define TRACKS 80 /* tracks on disk */ +#define SECTORS 9 /* sectors per track */ +#define SECSIZE 512 /* byte per sector */ +#define TIMER 0 /* 0=normal (200Hz), 2=slow (100Hz) */ +#define NO_BLITTER +#define NO_RTC /* Do not emulate Real-Time-Clock */ +//#define CHKADDRESSERR /* if set, unaligned access will raise an address +// error (slower, but expected behaviour) */ +//#define CHKTRACE /* if set, the trace bit works (slower). */ +//#define NATFEAT /* if set, native features are supported */ + +#undef DEBUG /* Debug */ + +#ifndef USE_BIG_ENDIAN +#define BYTES_SWAP 1 +#endif + +#undef DISASS +#undef DBGTRACE +#undef DETECT_PREFETCH + +/* + * Debug options + */ +#ifdef DEBUG +#ifndef CHKADDRESSERR +#define CHKADDRESSERR /* force address error checking */ +#endif +#define VERBOSE 0x1 /* ~INT, IO, ~BLITTER */ +#define TRACEBACK 2000 /* 68k traceback buffer size */ +#undef INTERNALTRACE /* trace 68k operation internal execution */ +#define DBG_OUT if (verb_on) printf +#define DBG_STOP if (stop_on) Stop +#define NO_TIMER +/* special DEBUG action on traps */ +#define ON_TRAP(number) if (number == 33) {stop_on++;}; +/* special DEBUG action on R/W access to an unmapped address */ +#define ON_UNMAPPED(address, value) +/* special DEBUG action on unmapped I/O access */ +#define ON_NOIO(offset, value) +/* special DEBUG action on write access */ +#define ON_WRITE(address, value) +extern int trace_on; +extern int stop_on; +extern int verb_on; +extern void SaveState(unsigned short inst); +extern void Stop(void); +#else /* not DEBUG */ +#define ON_TRAP(number) +#define ON_UNMAPPED(address, value) +#define ON_NOIO(address, value) +#define ON_WRITE(address, value) +// # define ON_TRAP(number) if (number == 33 && GetMemW(areg[7]) == 0x4c) { TraceStop(); } +#endif +#endif + +#ifdef DEBUG_FAME_FFLUSH +#undef DEBUG_FAME_FFLUSH +#define DEBUG_FAME_FFLUSH fflush(stdout) +#else +#define DEBUG_FAME_FFLUSH +#endif + +#include +#include +#include + + + +extern int emulating; +extern int nScreenRefreshRate; +extern int draw_border, maybe_border; +extern unsigned screen_pitch, screen_width, screen_height; +extern unsigned cyclenext; +extern unsigned vid_adr_cycleyet; +extern unsigned char *vid_cycle; + + diff --git a/MCUME_teensy/teensycastaway/emuapi.cpp b/MCUME_teensy/teensycastaway/emuapi.cpp new file mode 100644 index 0000000..f8e270c --- /dev/null +++ b/MCUME_teensy/teensycastaway/emuapi.cpp @@ -0,0 +1,1045 @@ +#define KEYMAP_PRESENT 1 + +//extern "C" { + #include "emuapi.h" + #include "iopins.h" +//} + +#include "tft_t_dma.h" +//#include "logo.h" +#//include "bmpjoy.h" +#//include "bmpvbar.h" +//#include "bmpvga.h" +//#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +const uint16_t deflogo[] = { + 0x0000,0x0000 +}; +static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +//#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +//#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + //tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + //tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + //tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + //tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensycastaway/emuapi.h b/MCUME_teensy/teensycastaway/emuapi.h new file mode 100644 index 0000000..7f4e1cd --- /dev/null +++ b/MCUME_teensy/teensycastaway/emuapi.h @@ -0,0 +1,141 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +//#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define CUSTOM_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " AtariST Emulator " +#define ROMSDIR "/st" + +#define emu_Init(ROM) {ast_Init(); ast_Start(ROM);} +#define emu_Step(x) {ast_Step();} +#define emu_Input(x) {ast_Input(x);} + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 16 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[]= +{ TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + //TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_END}; + +const unsigned short keys[]={ + +59, 60, 61, 62, 63, 64, 65, 66, 67, 68, +109,110,111,112,106,107,108,17,18,19, +20,21,22,23,24,25,26,27,28,29, +30,31,32,33,34,35,36,37,38,57 }; + + + + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401 }; + //0X0580,0X0540,0X0520,0X0510,0X0508,0X0504,0X0502,0X0501,0X0680,0X0640 }; +#endif + +#endif + + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensycastaway/fame.h b/MCUME_teensy/teensycastaway/fame.h new file mode 100644 index 0000000..849b520 --- /dev/null +++ b/MCUME_teensy/teensycastaway/fame.h @@ -0,0 +1,190 @@ +/******************************************************************************/ +/* FAME Fast and Accurate Motorola 68000 Emulation Core */ +/* (c) 2002 Oscar Orallo Pelaez / Daniel Lancha Garcia */ +/* Version: 2.1 */ +/* Date: 11-26-2006 */ +/* See FAME.HTML for documentation and license information */ +/******************************************************************************/ + +#ifndef __FAME_H__ +#define __FAME_H__ + +#if defined(__cplusplus) && !defined(USE_FAME_CORE_C) +extern "C" { +#endif + +/************************************/ +/* General library defines */ +/************************************/ + +#ifndef M68K_OK + #define M68K_OK 0 +#endif + +#ifndef M68K_RUNNING + #define M68K_RUNNING 1 +#endif + +#ifndef M68K_NO_SUP_ADDR_SPACE + #define M68K_NO_SUP_ADDR_SPACE 2 +#endif + +#ifndef M68K_INV_REG + #define M68K_INV_REG -1 +#endif + +/* Hardware interrupt state */ + +#ifndef M68K_IRQ_LEVEL_ERROR + #define M68K_IRQ_LEVEL_ERROR -1 +#endif + +#ifndef M68K_IRQ_INV_PARAMS + #define M68K_IRQ_INV_PARAMS -2 +#endif + +/* Defines to specify hardware interrupt type */ + +#ifndef M68K_AUTOVECTORED_IRQ + #define M68K_AUTOVECTORED_IRQ -1 +#endif + +#ifndef M68K_SPURIOUS_IRQ + #define M68K_SPURIOUS_IRQ -2 +#endif + +/* Defines to specify address space */ + +#ifndef M68K_SUP_ADDR_SPACE + #define M68K_SUP_ADDR_SPACE 0 +#endif + +#ifndef M68K_USER_ADDR_SPACE + #define M68K_USER_ADDR_SPACE 2 +#endif + +#ifndef M68K_PROG_ADDR_SPACE + #define M68K_PROG_ADDR_SPACE 0 +#endif + +#ifndef M68K_DATA_ADDR_SPACE + #define M68K_DATA_ADDR_SPACE 1 +#endif + + +/*******************/ +/* Data definition */ +/*******************/ + +/* M68K registers */ +typedef enum +{ + M68K_REG_D0=0, + M68K_REG_D1, + M68K_REG_D2, + M68K_REG_D3, + M68K_REG_D4, + M68K_REG_D5, + M68K_REG_D6, + M68K_REG_D7, + M68K_REG_A0, + M68K_REG_A1, + M68K_REG_A2, + M68K_REG_A3, + M68K_REG_A4, + M68K_REG_A5, + M68K_REG_A6, + M68K_REG_A7, + M68K_REG_ASP, + M68K_REG_PC, + M68K_REG_SR +} m68k_register; + +/* The memory blocks must be in native (Motorola) format */ +typedef struct +{ + unsigned low_addr; + unsigned high_addr; + unsigned offset; +} M68K_PROGRAM; + +/* The memory blocks must be in native (Motorola) format */ +typedef struct +{ + unsigned low_addr; + unsigned high_addr; + void *mem_handler; + void *data; +} M68K_DATA; + +/* M68K CPU CONTEXT */ +typedef struct +{ + M68K_PROGRAM *fetch; + M68K_DATA *read_byte; + M68K_DATA *read_word; + M68K_DATA *write_byte; + M68K_DATA *write_word; + M68K_PROGRAM *sv_fetch; + M68K_DATA *sv_read_byte; + M68K_DATA *sv_read_word; + M68K_DATA *sv_write_byte; + M68K_DATA *sv_write_word; + M68K_PROGRAM *user_fetch; + M68K_DATA *user_read_byte; + M68K_DATA *user_read_word; + M68K_DATA *user_write_byte; + M68K_DATA *user_write_word; + void (*reset_handler)(void); + void (*iack_handler)(unsigned level); + unsigned * icust_handler; + unsigned dreg[8]; + unsigned areg[8]; + unsigned asp; + unsigned pc; + unsigned cycles_counter; + unsigned char interrupts[8]; + unsigned short sr; + unsigned short execinfo; +} M68K_CONTEXT; + + +/************************/ +/* Function definition */ +/************************/ + +/* General purpose functions */ +void m68k_init(void); +unsigned m68k_reset(void); +void m68k_emulate(int n); +unsigned m68k_get_pc(void); +unsigned m68k_get_cpu_state(void); +int m68k_fetch(unsigned address, unsigned memory_space); + +/* Interrupt handling functions */ +int m68k_raise_irq(int level, int vector); +int m68k_lower_irq(int level); +int m68k_get_irq_vector(int level); +int m68k_change_irq_vector(int level, int vector); + +/* CPU context handling functions */ +int m68k_get_context_size(void); +void m68k_get_context(void *context); +void m68k_set_context(void *context); +int m68k_get_register(m68k_register reg); +int m68k_set_register(m68k_register reg, unsigned value); + +/* Timing functions */ +unsigned m68k_get_cycles_counter(void); +unsigned m68k_trip_cycles_counter(void); +unsigned m68k_control_cycles_counter(int n); +void m68k_release_timeslice(void); +void m68k_stop_emulating(void); +void m68k_add_cycles(int cycles); +void m68k_release_cycles(int cycles); + +#if defined(__cplusplus) && !defined(USE_FAME_CORE_C) +} +#endif + +#endif diff --git a/MCUME_teensy/teensycastaway/famec.cpp b/MCUME_teensy/teensycastaway/famec.cpp new file mode 100644 index 0000000..6fc7b63 --- /dev/null +++ b/MCUME_teensy/teensycastaway/famec.cpp @@ -0,0 +1,2051 @@ +/****************************************************************************/ +/* FAME (Fast and Accurate Motorola 68000 Emulation Library) */ +/* Emulador de 68000 en C */ +/* Autor: Oscar Orallo Pelaez */ +/* Fecha de comienzo: 03-10-2006 */ +/* Ultima actualizacion: 28-10-2009 */ +/* Based on the excellent FAMEC emulator by Stephane Dallongueville */ +/****************************************************************************/ + +#include +#include +#include +#include + +#include "dcastaway.h" + +#ifdef _MSC_VER +/* Ignore unary minus applied to unsigned type */ +#pragma warning( disable : 4146 ) +#endif + +/* Options */ +/* + Do not use the following lines to enable/disable features + They are here as a reference only + Define them in your project as you need instead +*/ +/* #define FAME_INLINE_LOOP */ +/* #define FAME_IRQ_CLOCKING */ +/* #define FAME_CHECK_BRANCHES */ +/* #define FAME_DIRECT_MAPPING */ +/* #define FAME_EXTRA_INLINE */ +/* #define FAME_EMULATE_TRACE */ +/* #define FAME_BYPASS_TAS_WRITEBACK */ +/* #define FAME_ACCURATE_TIMING */ +/* #define FAME_GLOBAL_CONTEXT */ +/* #define FAME_DEBUG */ +/* #define FAME_GOTOS */ +/* #define FAME_BIG_ENDIAN */ + +#define FAME_SECURE_ALL_BANKS + +#ifndef FAME_ADDR_BITS +#define FAME_ADDR_BITS 24 +#endif + +#ifndef FAME_PC_BITS +#define FAME_PC_BITS 24 +#endif + +#ifndef FAME_FETCHBITS +#define FAME_FETCHBITS 12 +#endif + +#ifndef FAME_DATABITS +#define FAME_DATABITS 12 +#endif + +#ifndef FAME_PREFIX +#define FAME_PREFIX m68k +#endif + +/* Options */ + +#define CONCAT(P1,P2) P1##P2 +#define FAME_FNT(P,F) CONCAT(P,_##F) +#define FAME_DT(P,D) CONCAT(P,D) +#define FAME_API(F) FAME_FNT(FAME_PREFIX,F) +#define FAME_CONTEXT FAME_DT(FAME_PREFIX,context) + + +#ifndef INLINE +#define INLINE +#endif + +#ifndef FAME_EXTRA_INLINE +#define EXTRA_INLINE +#else +#define EXTRA_INLINE INLINE +#endif + +/* Return codes */ +#define M68K_OK 0 +#define M68K_RUNNING 1 +#define M68K_NO_SUP_ADDR_SPACE 2 +#define M68K_INV_REG -1 + +/* Hardware interrupt state */ +#define M68K_IRQ_LEVEL_ERROR -1 +#define M68K_IRQ_INV_PARAMS -2 + +/* Defines to specify hardware interrupt type */ +#define M68K_AUTOVECTORED_IRQ -1 +#define M68K_SPURIOUS_IRQ -2 + +/* Defines to specify address space */ +#define M68K_SUP_ADDR_SPACE 0 +#define M68K_USER_ADDR_SPACE 2 +#define M68K_PROG_ADDR_SPACE 0 +#define M68K_DATA_ADDR_SPACE 1 + +/******************************/ +/* 68K core types definitions */ +/******************************/ + +#if FAME_ADDR_BITS < 32 +#define M68K_ADDR_MASK ((1 << FAME_ADDR_BITS)-1) +#else +#define M68K_ADDR_MASK 0xFFFFFFFF +#endif + +#define M68K_FETCHSFT (FAME_ADDR_BITS - FAME_FETCHBITS) +#define M68K_FETCHBANK (1 << FAME_FETCHBITS) +#define M68K_FETCHMASK (M68K_FETCHBANK - 1) + +#define M68K_DATASFT (FAME_ADDR_BITS - FAME_DATABITS) +#define M68K_DATABANK (1 << FAME_DATABITS) +#define M68K_DATAMASK (M68K_DATABANK - 1) + +#define M68K_SR_C_SFT 8 +#define M68K_SR_V_SFT 7 +#define M68K_SR_Z_SFT 0 +#define M68K_SR_N_SFT 7 +#define M68K_SR_X_SFT 8 + +#define M68K_SR_S_SFT 13 +#define M68K_SR_T_SFT 15 + +#define M68K_SR_C (1 << M68K_SR_C_SFT) +#define M68K_SR_V (1 << M68K_SR_V_SFT) +#define M68K_SR_Z 0 +#define M68K_SR_N (1 << M68K_SR_N_SFT) +#define M68K_SR_X (1 << M68K_SR_X_SFT) + +#define M68K_SR_S (1 << M68K_SR_S_SFT) +#define M68K_SR_T (1 << M68K_SR_T_SFT) + +#define M68K_CCR_MASK 0x1F + +#ifdef FAME_IRQ_CLOCKING +#define INT_TIMING 44 +#else +#define INT_TIMING 0 +#endif + +#ifdef FAME_EMULATE_TRACE +#define M68K_SR_MASK (M68K_SR_T | M68K_SR_S | 0x0700 | M68K_CCR_MASK) +#else +#define M68K_SR_MASK (M68K_SR_S | 0x0700 | M68K_CCR_MASK) +#endif + +/* exception defines taken from musashi core */ +#define M68K_RESET_EX 1 +#define M68K_BUS_ERROR_EX 2 +#define M68K_ADDRESS_ERROR_EX 3 +#define M68K_ILLEGAL_INSTRUCTION_EX 4 +#define M68K_ZERO_DIVIDE_EX 5 +#define M68K_CHK_EX 6 +#define M68K_TRAPV_EX 7 +#define M68K_PRIVILEGE_VIOLATION_EX 8 +#define M68K_TRACE_EX 9 +#define M68K_1010_EX 10 +#define M68K_1111_EX 11 +#define M68K_FORMAT_ERROR_EX 14 +#define M68K_UNINITIALIZED_INTERRUPT_EX 15 +#define M68K_SPURIOUS_INTERRUPT_EX 24 +#define M68K_INTERRUPT_AUTOVECTOR_EX 24 +#define M68K_TRAP_BASE_EX 32 + +#define M68K_INT_ACK_AUTOVECTOR -1 + +/*#define M68K_RUNNING 0x01 */ +#define M68K_HALTED 0x80 +#define M68K_WAITING 0x04 +#define M68K_DISABLE 0x20 +/* #define M68K_FAULTED 0x40 */ +#define M68K_EMULATE_GROUP_0 0x02 +#define M68K_EMULATE_TRACE 0x08 +#define M68K_DO_TRACE 0x10 + +#ifdef FAME_LITTLE_ENDIAN +#ifdef FAME_BIG_ENDIAN +#undef FAME_BIG_ENDIAN +#endif +#else +#ifndef FAME_BIG_ENDIAN +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MISPEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \ + defined(__sparc__) +#define FAME_BIG_ENDIAN +#else +#define FAME_LITTLE_ENDIAN +#endif +#endif +#endif + + +/* + internals core macros +*/ + +#define DREG(X) (FAME_CONTEXT.dreg[(X)].D) +#define DREGu32(X) (FAME_CONTEXT.dreg[(X)].D) +#define DREGs32(X) (FAME_CONTEXT.dreg[(X)].SD) +#define DREGu16(X) (FAME_CONTEXT.dreg[(X)].w.W) +#define DREGs16(X) (FAME_CONTEXT.dreg[(X)].sw.SW) +#define DREGu8(X) (FAME_CONTEXT.dreg[(X)].b.B) +#define DREGs8(X) (FAME_CONTEXT.dreg[(X)].sb.SB) + +#define AREG(X) (FAME_CONTEXT.areg[(X)].D) +#define AREGu32(X) (FAME_CONTEXT.areg[(X)].D) +#define AREGs32(X) (FAME_CONTEXT.areg[(X)].SD) +#define AREGu16(X) (FAME_CONTEXT.areg[(X)].w.W) +#define AREGs16(X) (FAME_CONTEXT.areg[(X)].sw.SW) + +#define ASP (FAME_CONTEXT.asp) + +#define LSL(A, C) ((A) << (C)) +#define LSR(A, C) ((A) >> (C)) + +#define LSR_32(A, C) ((C) < 32 ? (A) >> (C) : 0) +#define LSL_32(A, C) ((C) < 32 ? (A) << (C) : 0) + +#define ROL_8(A, C) (LSL(A, C) | LSR(A, 8-(C))) +#define ROL_9(A, C) (LSL(A, C) | LSR(A, 9-(C))) +#define ROL_16(A, C) (LSL(A, C) | LSR(A, 16-(C))) +#define ROL_17(A, C) (LSL(A, C) | LSR(A, 17-(C))) +#define ROL_32(A, C) (LSL_32(A, C) | LSR_32(A, 32-(C))) +#define ROL_33(A, C) (LSL_32(A, C) | LSR_32(A, 33-(C))) + +#define ROR_8(A, C) (LSR(A, C) | LSL(A, 8-(C))) +#define ROR_9(A, C) (LSR(A, C) | LSL(A, 9-(C))) +#define ROR_16(A, C) (LSR(A, C) | LSL(A, 16-(C))) +#define ROR_17(A, C) (LSR(A, C) | LSL(A, 17-(C))) +#define ROR_32(A, C) (LSR_32(A, C) | LSL_32(A, 32-(C))) +#define ROR_33(A, C) (LSR_32(A, C) | LSL_32(A, 33-(C))) + +/* Flag setup */ +#define SET_FLAGS_Z_VC0 \ + flag_C = 0; \ + flag_V = 0; \ + flag_NotZ = res; + +#define SET_FLAGS_NZ_VC0 \ + SET_FLAGS_Z_VC0 \ + flag_N = res; + +#define SET_FLAGS_DIV_ZERO \ + flag_V = 0; \ + flag_C = 0; + +#define SET_FLAGS_DIV_OVERFLOW \ + flag_C = 0; \ + flag_V = M68K_SR_V; \ + flag_N = M68K_SR_N; \ + /* Z flag is undefined on division overflow */ \ + /* but is set here to match FAME versions */ \ + flag_NotZ = 1; \ + + +#ifdef FAME_DEBUG +#define DEBUG_OPCODE(OP) printf(":Opcode %.4X\n",Opcode); +#else +#define DEBUG_OPCODE(OP) +#endif + +#ifdef FAME_GOTOS +#define NEXT \ + FETCH_WORD(Opcode); \ + DEBUG_OPCODE(Opcode) \ + goto *JumpTable[Opcode]; + +#ifdef FAME_INLINE_LOOP +#define RET(A) \ + io_cycle_counter -= (A); \ + if (io_cycle_counter <= 0) goto famec_Exec_End; \ + NEXT +#else +#define RET(A) \ + io_cycle_counter -= (A); \ + if (io_cycle_counter <= 0) goto famec_Exec_End; \ + goto famec_Exec; +#endif + +#define RET_STOP(C) \ + io_cycle_counter -= (C); \ + if (io_cycle_counter > 0) io_cycle_counter = 0; \ + goto famec_Exec_End; + +#else +//printf("%8x",PC); +//printf("=>%8x\n",Opcode); + +#define NEXT \ + do { \ + FETCH_WORD(Opcode); \ + DEBUG_OPCODE(Opcode) \ + JumpTable[Opcode](); \ + } while(io_cycle_counter>0); + +#ifdef FAME_INLINE_LOOP +#define RET(A) \ + io_cycle_counter -= (A); \ + if (io_cycle_counter > 0) \ + { \ + FETCH_WORD(Opcode); \ + DEBUG_OPCODE(Opcode) \ + JumpTable[Opcode](); \ + } \ + return; + +#else + +#define RET(A) \ + io_cycle_counter -= (A); \ + return; + +#endif + +#define RET_STOP(C) \ + io_cycle_counter -= (C); \ + if (io_cycle_counter > 0) io_cycle_counter = 0; \ + return; + +#endif + +#define M68K_PPL (FAME_CONTEXT.sr >> 8) & 7 + +#if FAME_PC_BITS == 32 + +#define UNBASED_PC PC + +#define READ_BASED_PC BasePC[(PC & M68K_ADDR_MASK) >> 1] + +#define READ_BASED_PC_IDX(IDX) BasePC[((PC & M68K_ADDR_MASK) >> 1) + IDX] + +#define SET_PC(A) \ + BasePC = (u16 *)Fetch[(((A) & M68K_ADDR_MASK) >> M68K_FETCHSFT) & M68K_FETCHMASK]; \ + PC = A; + +#define INC_PC(I) (PC += I) + +#else + +#define UNBASED_PC ((u32)PC - BasePC) + +#define READ_BASED_PC (*PC) + +#define READ_BASED_PC_IDX(IDX) PC[IDX] + +#define SET_PC(A) \ + BasePC = Fetch[((A) >> M68K_FETCHSFT) & M68K_FETCHMASK]; \ + PC = (u16*)(((A) & M68K_ADDR_MASK) + BasePC); + +#define INC_PC(I) (PC += (I) >> 1) + +#endif + +#define READ_BYTE_F(A, D) \ + D = Read_Byte(A) & 0xFF; + +#define READ_WORD_F(A, D) \ + D = Read_Word(A) & 0xFFFF; + +#define READ_LONG_F(A, D) \ + D = Read_Word((A)) << 16; \ + D |= Read_Word((A) + 2) & 0xFFFF; + +#define READ_LONG_DEC_F(A, D) \ + D = Read_Word((A) + 2) & 0xFFFF; \ + D |= Read_Word((A)) << 16; + +#define READSX_LONG_F(A, D) \ + D = Read_Word((A)) << 16; \ + D |= Read_Word((A) + 2) & 0xFFFF; + +#define WRITE_LONG_F(A, D) \ + Write_Word((A), (D) >> 16); \ + Write_Word((A) + 2, (D) & 0xFFFF); + +#define WRITE_LONG_DEC_F(A, D) \ + Write_Word((A) + 2, (D) & 0xFFFF); \ + Write_Word((A), (D) >> 16); + +#define FETCH_LONG(A) \ + (A) = READ_BASED_PC_IDX(1) | (READ_BASED_PC_IDX(0) << 16); \ + INC_PC(4); + +#define PUSH_32_F(D) \ + AREG(7) -= 4; \ + Write_Word(AREG(7), (D) >> 16); \ + Write_Word(AREG(7) + 2, (D) & 0xFFFF); + +#define POP_32_F(D) \ + D = Read_Word(AREG(7)) << 16; \ + D |= Read_Word(AREG(7) + 2) & 0xFFFF; \ + AREG(7) += 4; + +#define GET_SWORD \ + ((s16)READ_BASED_PC) + +#define FETCH_BYTE(A) \ + (A) = READ_BASED_PC & 0xFF; INC_PC(2); + +#define FETCH_SBYTE(A) \ + (A) = (s8)((READ_BASED_PC) & 0xFF); INC_PC(2); + +#define FETCH_WORD(A) \ + (A) = READ_BASED_PC; INC_PC(2); + +#define FETCH_SWORD(A) \ + (A) = (s16)READ_BASED_PC; INC_PC(2); + +#define DECODE_EXT_WORD \ + { \ + u32 ext = READ_BASED_PC; INC_PC(2); \ + adr += (s8)(ext); \ + if (ext & 0x0800) adr += DREGs32(ext >> 12); \ + else adr += DREGs16(ext >> 12); \ + } + +#define READSX_BYTE_F(A, D) \ + D = (s8)Read_Byte(A); + +#define READSX_WORD_F(A, D) \ + D = (s16)Read_Word(A); + + +#define WRITE_BYTE_F(A, D) \ + Write_Byte(A, D); + +#define WRITE_WORD_F(A, D) \ + Write_Word(A, D); + +#define PUSH_16_F(D) \ + Write_Word(AREG(7) -= 2, D); \ + +#define POP_16_F(D) \ + D = (u16)Read_Word(AREG(7)); \ + AREG(7) += 2; + +#define GET_CCR \ + (((flag_C >> (M68K_SR_C_SFT - 0)) & 1) | \ + ((flag_V >> (M68K_SR_V_SFT - 1)) & 2) | \ + (((!flag_NotZ) & 1) << 2) | \ + ((flag_N >> (M68K_SR_N_SFT - 3)) & 8) | \ + ((flag_X >> (M68K_SR_X_SFT - 4)) & 0x10)) + +#ifdef FAME_EMULATE_TRACE +#define GET_SR \ + ((flag_S << 0) | \ + (flag_I << 8) | \ + (flag_T ) | \ + GET_CCR) +#else +#define GET_SR \ + ((flag_S << 0) | \ + (flag_I << 8) | \ + GET_CCR) +#endif + +#define SET_CCR(A) \ + flag_C = (A) << (M68K_SR_C_SFT - 0); \ + flag_V = (A) << (M68K_SR_V_SFT - 1); \ + flag_NotZ = ~(A) & 4; \ + flag_N = (A) << (M68K_SR_N_SFT - 3); \ + flag_X = (A) << (M68K_SR_X_SFT - 4); + + +#ifdef FAME_EMULATE_TRACE +#define SET_SR(A) \ + SET_CCR(A) \ + flag_T = (A) & M68K_SR_T; \ + flag_S = (A) & M68K_SR_S; \ + flag_I = ((A) >> 8) & 7; +#else +#define SET_SR(A) \ + SET_CCR(A) \ + flag_S = (A) & M68K_SR_S; \ + flag_I = ((A) >> 8) & 7; +#endif + +#define CHECK_INT_TO_JUMP(CLK) \ + if (interrupt_chk()) \ + { \ + /* \ + si los ciclos restantes son menores o iguales \ + que los de la instruccion en curso, \ + no proceder a fijar el contador, pues cycles_needed \ + sera negativo, haciendo que el calculo de ciclos \ + ejecutados al final de emulate sea incorrecto \ + */ \ + if(io_cycle_counter > (CLK)) \ + { \ + cycles_needed=io_cycle_counter-(CLK); \ + io_cycle_counter=0; \ + } \ + } + +#define BANKEND_TAG ((u32)-1) + +#define SETUP_FETCH_BANK(FNT, BANK) \ + { \ + u32 i = 0; \ + while (BANK[i].low_addr != BANKEND_TAG) \ + { \ + FNT(BANK[i].low_addr, BANK[i].high_addr, BANK[i].offset); \ + i++; \ + } \ + } + +#define SETUP_DATA_BANK(FNT, BANK) \ + { \ + u32 i = 0; \ + while (BANK[i].low_addr != BANKEND_TAG) \ + { \ + FNT(BANK[i].low_addr, BANK[i].high_addr, BANK[i].mem_handler, BANK[i].data); \ + i++; \ + } \ + } + + +#ifdef FAME_CHECK_BRANCHES + +#ifdef FAME_GOTOS +#define CHECK_BRANCH_EXCEPTION_GOTO_END goto famec_Exec_End; +#else +#define CHECK_BRANCH_EXCEPTION_GOTO_END io_cycle_counter=0; return; +#endif + +#define CHECK_BRANCH_EXCEPTION(_PC_) \ + if ((_PC_)&1) \ + { \ + u32 pr_PC=UNBASED_PC; \ + FAME_CONTEXT.execinfo |= M68K_EMULATE_GROUP_0; \ + execute_exception_group_0(M68K_ADDRESS_ERROR_EX, 0, pr_PC, 0x12 ); \ + CHECK_BRANCH_EXCEPTION_GOTO_END \ + } +#else +#define CHECK_BRANCH_EXCEPTION(_PC_) +#endif + + + +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef signed short s16; +typedef unsigned int u32; +typedef signed int s32; + +#ifdef FAME_EMULATE_TRACE +static u32 flag_T; +#endif +static u32 flag_C; +static u32 flag_V; +static u32 flag_NotZ; +static u32 flag_N; +static u32 flag_X; /* 16 bytes aligned */ +static u32 flag_S; +static u32 flag_I; + +typedef union +{ +#ifndef FAME_BIG_ENDIAN + struct + { + u8 B,B1,B2,B3; + } b; + struct + { + s8 SB,SB1,SB2,SB3; + } sb; + struct + { + u16 W,W1; + } w; + struct + { + s16 SW,SW1; + } sw; +#else + struct + { + u8 B3,B2,B1,B; + } b; + struct + { + s8 SB3,SB2,SB1,SB; + } sb; + struct + { + u16 W1,W; + } w; + struct + { + s16 SW1,SW; + } sw; +#endif + u32 D; + s32 SD; +} famec_union32; + +/* M68K registers */ +typedef enum +{ + M68K_REG_D0=0, + M68K_REG_D1, + M68K_REG_D2, + M68K_REG_D3, + M68K_REG_D4, + M68K_REG_D5, + M68K_REG_D6, + M68K_REG_D7, + M68K_REG_A0, + M68K_REG_A1, + M68K_REG_A2, + M68K_REG_A3, + M68K_REG_A4, + M68K_REG_A5, + M68K_REG_A6, + M68K_REG_A7, + M68K_REG_ASP, + M68K_REG_PC, + M68K_REG_SR +} m68k_register; + + +/* The memory blocks must be in native (Motorola) format */ +typedef struct +{ + u32 low_addr; + u32 high_addr; + u32 offset; +} M68K_PROGRAM; + +/* The memory blocks must be in native (Motorola) format */ +typedef struct +{ + u32 low_addr; + u32 high_addr; + void *mem_handler; + void *data; +} M68K_DATA; + +/* M68K CPU CONTEXT */ +typedef struct +{ + M68K_PROGRAM *fetch; + M68K_DATA *read_byte; + M68K_DATA *read_word; + M68K_DATA *write_byte; + M68K_DATA *write_word; + M68K_PROGRAM *sv_fetch; + M68K_DATA *sv_read_byte; + M68K_DATA *sv_read_word; + M68K_DATA *sv_write_byte; + M68K_DATA *sv_write_word; + M68K_PROGRAM *user_fetch; + M68K_DATA *user_read_byte; + M68K_DATA *user_read_word; + M68K_DATA *user_write_byte; + M68K_DATA *user_write_word; + void (*reset_handler)(void); + void (*iack_handler)(u32 level); + u32 *icust_handler; + famec_union32 dreg[8]; + famec_union32 areg[8]; + u32 asp; + u32 pc; + u32 cycles_counter; + u8 interrupts[8]; + u16 sr; + u16 execinfo; +} M68K_CONTEXT; + + +/* Custom function handler */ +typedef void (*icust_handler_func)(u32 vector); + +/* + global variable +*/ + +/* Main CPU context */ +#ifdef FAME_GLOBAL_CONTEXT +M68K_CONTEXT FAME_CONTEXT; +s32 io_cycle_counter; +#else +static M68K_CONTEXT FAME_CONTEXT; +static s32 io_cycle_counter; +#endif + +static s32 cycles_needed=0; +static s32 cycles_to_do=0; +#if FAME_PC_BITS == 32 +static u32 PC; +static u16* BasePC; +#else +static u16 *PC; +static u32 BasePC; +#endif +static u32 Fetch[M68K_FETCHBANK]; + + +#include +/* Lookup IRQ level to attend */ +/* Indexed by interrupts[0] */ +PROGMEM static const u8 irq_level_lookup[256] = +{ + 0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 +}; + +typedef u8 (*mem8_handler_func)(s32 address); +typedef u16 (*mem16_handler_func)(s32 address); +typedef u32 (*mem32_handler_func)(s32 address); +typedef void (*memw_handler_func)(s32 address, s32 data); + +#ifdef FAME_SECURE_ALL_BANKS +static unsigned char dummy_fetch[(1<> M68K_FETCHSFT) & M68K_FETCHMASK; + j = (0xFFFFFFFF >> M68K_FETCHSFT) & M68K_FETCHMASK; + while (i <= j) + { + Fetch[i] = ((u32)&dummy_fetch)-(i*(1<> M68K_FETCHSFT) & M68K_FETCHMASK; + j = (high_adr >> M68K_FETCHSFT) & M68K_FETCHMASK; + + while (i <= j) + Fetch[i++] = fetch_adr; +} + +#ifdef FAME_DIRECT_MAPPING + +static void famec_SetDummyData(void) +{ +#ifdef FAME_SECURE_ALL_BANKS + u32 i, j; + + i = (0 >> M68K_DATASFT) & M68K_DATAMASK; + j = (0xFFFFFFFF >> M68K_DATASFT) & M68K_DATAMASK; + + while (i <= j) + { + DataRB[i].mem_handler = DataRW[i].mem_handler = (void *)&dummy_read; + DataWB[i].mem_handler = DataWW[i].mem_handler = (void *)&dummy_write; + DataRB[i].data = DataRW[i].data = DataWB[i].data = DataWW[i].data = NULL; + i++; + } +#endif +} + +static void famec_SetDataRB(u32 low_adr, u32 high_adr, void *mh, void *dt) +{ + u32 i, j; + + i = (low_adr >> M68K_DATASFT) & M68K_DATAMASK; + j = (high_adr >> M68K_DATASFT) & M68K_DATAMASK; + + while (i <= j) + { + DataRB[i].mem_handler = mh; + DataRB[i++].data = dt; + } +} + +static void famec_SetDataRW(u32 low_adr, u32 high_adr, void *mh, void *dt) +{ + u32 i, j; + + i = (low_adr >> M68K_DATASFT) & M68K_DATAMASK; + j = (high_adr >> M68K_DATASFT) & M68K_DATAMASK; + + while (i <= j) + { + DataRW[i].mem_handler = mh; + DataRW[i++].data = dt; + } +} + +static void famec_SetDataWB(u32 low_adr, u32 high_adr, void *mh, void *dt) +{ + u32 i, j; + + i = (low_adr >> M68K_DATASFT) & M68K_DATAMASK; + j = (high_adr >> M68K_DATASFT) & M68K_DATAMASK; + + while (i <= j) + { + DataWB[i].mem_handler = mh; + DataWB[i++].data = dt; + } +} + +static void famec_SetDataWW(u32 low_adr, u32 high_adr, void *mh, void *dt) +{ + u32 i, j; + + i = (low_adr >> M68K_DATASFT) & M68K_DATAMASK; + j = (high_adr >> M68K_DATASFT) & M68K_DATAMASK; + + while (i <= j) + { + DataWW[i].mem_handler = mh; + DataWW[i++].data = dt; + } +} +#endif + +static void famec_SetBanks(void) +{ + famec_SetDummyFetch(); + + SETUP_FETCH_BANK(famec_SetFetch, FAME_CONTEXT.fetch) + +#ifdef FAME_DIRECT_MAPPING + famec_SetDummyData(); + + SETUP_DATA_BANK(famec_SetDataRB, FAME_CONTEXT.read_byte) + SETUP_DATA_BANK(famec_SetDataRW, FAME_CONTEXT.read_word) + SETUP_DATA_BANK(famec_SetDataWB, FAME_CONTEXT.write_byte) + SETUP_DATA_BANK(famec_SetDataWW, FAME_CONTEXT.write_word) +#endif +} + +#ifdef FAME_ACCURATE_TIMING +/* + Functions used to compute accurate opcode timing (MUL/DIV) +*/ + +static EXTRA_INLINE u8 bitset_count(u32 data) +{ + unsigned int const MASK1 = 0x55555555; + unsigned int const MASK2 = 0x33333333; + unsigned int const MASK4 = 0x0f0f0f0f; + unsigned int const MASK6 = 0x0000003f; + + unsigned int const w = (data & MASK1) + ((data >> 1) & MASK1); + unsigned int const x = (w & MASK2) + ((w >> 2) & MASK2); + unsigned int const y = ((x + (x >> 4)) & MASK4); + unsigned int const z = (y + (y >> 8)); + unsigned int const c = (z + (z >> 16)) & MASK6; + + return c; +} + +/* + DIVU + Unsigned division +*/ +static u32 getDivu68kCycles(u32 dividend, u16 divisor) +{ + u32 mcycles; + u32 hdivisor; + int i; + + if ( (u16) divisor == 0) + return 0; + + /* Overflow */ + if ( (dividend >> 16) >= divisor) + return (mcycles = 5) * 2; + + mcycles = 38; + hdivisor = ((u32) divisor) << 16; + + for ( i = 0; i < 15; i++) + { + u32 temp; + temp = dividend; + + dividend <<= 1; + + /* If carry from shift */ + if ( (int) temp < 0) + { + dividend -= hdivisor; + } + + else + { + mcycles += 2; + if ( dividend >= hdivisor) + { + dividend -= hdivisor; + mcycles--; + } + } + } + + return mcycles * 2; +} + +/* + DIVS + Signed division +*/ +static u32 getDivs68kCycles(s32 dividend, s16 divisor) +{ + u32 mcycles; + u32 aquot; + int i; + + if ( (s16) divisor == 0) + return 0; + + mcycles = 6; + + if ( dividend < 0) + mcycles++; + + /* Check for absolute overflow */ + if ( ((u32) abs( dividend) >> 16) >= (u16) abs( divisor)) + { + return (mcycles + 2) * 2; + } + + /* Absolute quotient */ + aquot = (u32) abs( dividend) / (u16) abs( divisor); + + mcycles += 55; + + if ( divisor >= 0) + { + if ( dividend >= 0) + mcycles--; + else + mcycles++; + } + + /* Count 15 msbits in absolute of quotient */ + + for ( i = 0; i < 15; i++) + { + if ( (s16) aquot >= 0) + mcycles++; + aquot <<= 1; + } + + return mcycles * 2; +} +#endif + +/* + Read / Write functions +*/ + +static EXTRA_INLINE u32 Read_Byte(u32 addr) +{ + u32 i=0; + s32 val; + + addr&=M68K_ADDR_MASK; +#ifdef FAME_DEBUG + printf("Reading byte from addr = 0x%08X\n",addr); +#endif + +#ifndef FAME_DIRECT_MAPPING + while ( ((FAME_CONTEXT.read_byte[i].low_addr > addr) || (FAME_CONTEXT.read_byte[i].high_addr < addr)) && (FAME_CONTEXT.read_byte[i].low_addr != BANKEND_TAG) ) + i++; + + if (FAME_CONTEXT.read_byte[i].low_addr == BANKEND_TAG) + return (u32)-1; +#else + i=addr>>M68K_DATASFT; +#endif + + if (DataRB[i].mem_handler) + val= (*((mem8_handler_func *)&DataRB[i].mem_handler))(addr); + else +#ifndef FAME_BIG_ENDIAN + val = *((u8 *)(((u32)DataRB[i].data) + (addr^1))); +#else + val = *((u8 *)(((u32)DataRB[i].data) + (addr))); +#endif + +#ifdef FAME_DEBUG + printf("Reading 0x%08X = 0x%04X...\n",addr,val); +#endif + + return val; +} + +static EXTRA_INLINE u32 Read_Word(u32 addr) +{ + u32 i=0; + s32 val; + + addr&=M68K_ADDR_MASK; +#ifdef FAME_DEBUG + printf("Reading from addr = 0x%08X\n",addr); +#endif + +#ifndef FAME_DIRECT_MAPPING + while ( ((FAME_CONTEXT.read_word[i].low_addr > addr) || (FAME_CONTEXT.read_word[i].high_addr < addr)) && (FAME_CONTEXT.read_word[i].low_addr != BANKEND_TAG) ) + i++; + + if (FAME_CONTEXT.read_word[i].low_addr == BANKEND_TAG) + return (u32)-1; +#else + i=addr>>M68K_DATASFT; +#endif + + if (DataRW[i].mem_handler) + val= (*((mem16_handler_func *)&DataRW[i].mem_handler))(addr); + else + val = *((u16 *)(((u32)DataRW[i].data) + addr)); + +#ifdef FAME_DEBUG + printf("Reading 0x%08X = 0x%04X...\n",addr,val); +#endif + + return val; +} + +static EXTRA_INLINE void Write_Byte(u32 addr, u32 data) +{ + u32 i=0; + + addr&=M68K_ADDR_MASK; +#ifdef FAME_DEBUG + printf("Writing byte 0x%08X = 0x%04X...\n",addr,data); +#endif + +#ifndef FAME_DIRECT_MAPPING + while ( ((FAME_CONTEXT.write_byte[i].low_addr > addr) || (FAME_CONTEXT.write_byte[i].high_addr < addr)) && (FAME_CONTEXT.write_byte[i].low_addr != BANKEND_TAG) ) + i++; + if (FAME_CONTEXT.write_byte[i].low_addr == BANKEND_TAG) + return; +#else + i=addr>>M68K_DATASFT; +#endif + + if (DataWB[i].mem_handler != NULL) + (*((memw_handler_func *)&DataWB[i].mem_handler))(addr,data); + else +#ifndef FAME_BIG_ENDIAN + *((u8 *)(((u32)DataWB[i].data)+ (addr^1))) = data; +#else + *((u8 *)(((u32)DataWB[i].data)+ (addr))) = data; +#endif +} + + +static EXTRA_INLINE void Write_Word(u32 addr, u32 data) +{ + u32 i=0; + + addr&=M68K_ADDR_MASK; +#ifdef FAME_DEBUG + printf("Writing 0x%08X = 0x%04X...\n",addr,data); +#endif + +#ifndef FAME_DIRECT_MAPPING + while ( ((FAME_CONTEXT.write_word[i].low_addr > addr) || (FAME_CONTEXT.write_word[i].high_addr < addr)) && (FAME_CONTEXT.write_word[i].low_addr != BANKEND_TAG) ) + i++; + if (FAME_CONTEXT.write_word[i].low_addr == BANKEND_TAG) + return; +#else + i=addr>>M68K_DATASFT; +#endif + + if (DataWW[i].mem_handler != NULL) + (*((memw_handler_func *)&DataWW[i].mem_handler))(addr,data); + else + *((u16 *)(((u32)DataWW[i].data) + addr)) = data; +} + +static u32 Opcode; + +/* + Chequea las interrupciones y las inicia +*/ +static EXTRA_INLINE s32 interrupt_chk(void) +{ + /* Bit 0 MUST be zero at all times */ + assert((FAME_CONTEXT.interrupts[0] & 1) == 0); + + if (FAME_CONTEXT.interrupts[0]) + { + /* There is a pending IRQ */ + const u8 irql = irq_level_lookup[FAME_CONTEXT.interrupts[0]]; + + if (irql == 7) /* NMI */ + return irql; + else if (irql > flag_I) + return irql; + } + +#ifdef FAME_EMULATE_TRACE + if (flag_T) + { + /* + FAME_CONTEXT.execinfo |= M68K_EMULATE_TRACE; + cycles_needed= io_cycle_counter; + io_cycle_counter=0; + */ + return -1; + } +#endif + return 0; +} + + +static EXTRA_INLINE void execute_exception(s32 vect) +{ + /* comprobar si hay tabla funciones manejadoras */ + if (FAME_CONTEXT.icust_handler && FAME_CONTEXT.icust_handler[vect]) + { + FAME_CONTEXT.sr = GET_SR; + FAME_CONTEXT.pc = UNBASED_PC; + (*(icust_handler_func*)&FAME_CONTEXT.icust_handler[vect])(vect); + } + else + { + u32 newPC; + u32 oldPC; + u32 oldSR = GET_SR; + + READ_LONG_F(vect * 4, newPC) + + /* swap A7 and USP */ + if (!flag_S) + { + u32 tmpSP; + + tmpSP = ASP; + ASP = AREG(7); + AREG(7) = tmpSP; + } + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + PUSH_16_F(oldSR) + + /* adjust SR */ + flag_S = M68K_SR_S; + + SET_PC(newPC) + } + + io_cycle_counter -= exception_cycle_table[vect]; +} + +static EXTRA_INLINE void interrupt_attend(s32 line) +{ + /* al atender la IRQ, la CPU sale del estado parado */ + FAME_CONTEXT.execinfo &= ~M68K_HALTED; + + /* Desactivar interrupcion */ + FAME_CONTEXT.interrupts[0] &= ~(1 << ((u32)line)); + + execute_exception(FAME_CONTEXT.interrupts[(u32)line]); + + /* comprobar si hay rutina de acknowledge */ + if (FAME_CONTEXT.iack_handler != NULL) + FAME_CONTEXT.iack_handler(line); + + flag_I = (u32)line; +} + +/* Group 0 exceptions are not handled actually */ +static EXTRA_INLINE void execute_exception_group_0(s32 vect, u16 inst_reg, s32 addr, u16 spec_info) +{ + execute_exception(vect); + if (!(FAME_CONTEXT.icust_handler && FAME_CONTEXT.icust_handler[vect])) + { + PUSH_16_F(inst_reg); + PUSH_32_F(addr); + PUSH_16_F(spec_info); + } +} + +/* Performs the required actions to finish the emulate call */ +static EXTRA_INLINE void finish_emulate(const s32 cycles_to_add) +{ + FAME_CONTEXT.sr = GET_SR; + FAME_CONTEXT.pc = UNBASED_PC; + + FAME_CONTEXT.execinfo &= ~M68K_RUNNING; + + /* Actualizar contador de ciclos */ + FAME_CONTEXT.cycles_counter += cycles_to_add; + +#ifdef FAME_DEBUG + printf("<-PC=0x%08X (%p-%p)\n",UNBASED_PC,PC,BasePC); +#endif +} + +#ifndef FAME_GOTOS + +#define OPCODE(N_OP) static void OP_##N_OP(void) +#define CAST_OP(N_OP) (opcode_func)&OP_##N_OP +#include "famec_opcodes.h" +#else +#define OPCODE(N_OP) OP_##N_OP: +#define CAST_OP(N_OP) (opcode_func)&&OP_##N_OP +#endif + +//static opcode_func JumpTable[0x10000]; +#include "jumptable.h" + +/***********************/ +/* core main functions */ +/***********************/ + +/***************************************************************************/ +/* m68k_init() */ +/* Debe ser llamado para inicializar la tabla de saltos de instruccion */ +/* No recibe parametros y no devuelve nada */ +/***************************************************************************/ +void FAME_API(init)(void) +{ +#ifdef FAME_DEBUG + puts("Initializing FAME..."); +#endif + +#ifndef FAME_GOTOS + //BUILD_OPCODE_TABLE + initialised = 1; +#endif + +#ifdef FAME_DEBUG + puts("FAME initialized."); +#endif +} + +/******************************************************************************/ +/* m68k_reset() */ +/* Parametros: Ninguno */ +/* Retorno: Exito de la operacion */ +/* M68K_OK (0): La funcion se ha ejecutado satisfactoriamente */ +/* M68K_RUNNING (1): No se puede resetear porque la CPU esta en ejecucion */ +/* M68K_NO_SUP_ADDR_SPACE (2): No se puede resetear porque no hay mapa */ +/* de memoria supervisor de extraccion de opcodes */ +/******************************************************************************/ +u32 FAME_API(reset)(void) +{ +#ifndef FAME_GOTOS + assert(initialised); +#endif + + /* Si la CPU esta en ejecucion, salir con M68K_RUNNING */ + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + return M68K_RUNNING; + + /* Si no hay mapa de memoria supervisor, salir con M68K_NO_SUP_ADDR_SPACE */ + if (!FAME_CONTEXT.sv_fetch) + return M68K_NO_SUP_ADDR_SPACE; + + FAME_CONTEXT.fetch = FAME_CONTEXT.sv_fetch; + FAME_CONTEXT.read_byte = FAME_CONTEXT.sv_read_byte; + FAME_CONTEXT.read_word = FAME_CONTEXT.sv_read_word; + FAME_CONTEXT.write_byte = FAME_CONTEXT.sv_write_byte; + FAME_CONTEXT.write_word = FAME_CONTEXT.sv_write_word; + + /* Resetear registros */ + memset(&FAME_CONTEXT.dreg[0], 0, 16*4); + + /* Resetear interrupts, execinfo y ASP */ + memset(&FAME_CONTEXT.interrupts[0], 0, 8); + FAME_CONTEXT.execinfo = 0; + ASP = 0; + + /* Fijar registro de estado */ + FAME_CONTEXT.sr = 0x2700; + + /* Obtener puntero de pila inicial y PC */ + READ_LONG_F(0, AREG(7)); + READ_LONG_F(4, FAME_CONTEXT.pc); + +#ifdef FAME_DEBUG + puts("Reset 68k done!\n"); + printf("PC = 0x%08X\n",FAME_CONTEXT.pc); +#endif + + return M68K_OK; +} + + +/******************************************************************************/ +/* m68k_raise_irq(level,vector) */ +/* Parametros: level = nivel de interrupcion */ +/* vector = puntero a la direccion de la rutina de atencion */ +/* -1 auto, -2 interrupcion espuria */ +/* Retorno: Exito de la operacion */ +/* 0 La interrupcion se ha habilitado satisfactoriamente */ +/* -1 No se ha podido habilitar porque ya existe otra interrupcion */ +/* en ese nivel. */ +/* -2 No se ha podido habilitar porque el vector no es valido o */ +/* el nivel es igual a 0. */ +/******************************************************************************/ +s32 FAME_API(raise_irq)(s32 level, s32 vector) +{ + /* Enmascarar nivel de interrupcion */ + level &=7; + + /* Nivel de interrupcion = 0 no es valido */ + if (!level) return M68K_IRQ_INV_PARAMS; + + /* Comprobar si existe una interrupcion activada en ese nivel */ + if (FAME_CONTEXT.interrupts[0] & (1 << level)) + return M68K_IRQ_LEVEL_ERROR; + + /* El vector de interrupcion no puede ser > 255 ni menor que -2 */ + if ((vector > 255) || (vector < M68K_SPURIOUS_IRQ)) + { + return M68K_IRQ_INV_PARAMS; + } + + /* Dar de alta la interrupcion en interrupts */ + FAME_CONTEXT.interrupts[0] |= (1 << level); + + switch (vector) + { + case M68K_SPURIOUS_IRQ: + FAME_CONTEXT.interrupts[level] = 0x18; + break; + case M68K_AUTOVECTORED_IRQ: + FAME_CONTEXT.interrupts[level] = level + 0x18; + break; + default: + FAME_CONTEXT.interrupts[level] = vector; + break; + } +#ifdef FAME_DEBUG + printf("RAISE interrupts[%i]=0x%X\n",level,FAME_CONTEXT.interrupts[level]); +#endif + + /* Testear si la CPU esta detenida (mediante STOP) */ + if (FAME_CONTEXT.execinfo & M68K_HALTED) + { + /* Si la IRQ es NMI o si supera la mascara de interrupcion, */ + /* salir de estado parado */ + if ((level == 7) || (level > ((FAME_CONTEXT.sr >> 8) & 0x7))) + { + FAME_CONTEXT.execinfo &= ~M68K_HALTED; + } + } + + return M68K_OK; +} + + +/******************************************************************************/ +/* m68k_lower_irq(level) */ +/* Parametros: Nivel de la interrupcion a retirar */ +/* Retorno: Exito de la operacion */ +/* 0 La interrupcion se ha retirado satisfactoriamente */ +/* -1 No se ha podido retirar porque esa interrupcion */ +/* no esta habilitada. */ +/* -2 No se ha podido retirar porque el nivel es 0 o mayor */ +/* o igual que 7 (no se puede retirar la NMI) */ +/******************************************************************************/ +s32 FAME_API(lower_irq)(s32 level) +{ + /* Enmascarar nivel de interrupcion */ + level &=7; + + /* Nivel de interrupcion = 0 no es valido */ + if (!level) return M68K_IRQ_INV_PARAMS; + + /* La interrupcion de nivel 7 (NMI) no se puede bajar */ + if (level > 6) + { + return M68K_IRQ_INV_PARAMS; + } + + /* Comprobar que la interrupcion este activada */ + if (FAME_CONTEXT.interrupts[0] & (1 << level)) + { + /* Dar de baja la interrupcion */ + FAME_CONTEXT.interrupts[0] &= ~(1 << level); + } + else + { + return M68K_IRQ_LEVEL_ERROR; + } + + return M68K_OK; +} + +/******************************************************************************/ +/* m68k_get_context_size */ +/* No recibe parametros */ +/* Retorno: Tamano del contexto en bytes */ +/******************************************************************************/ +s32 FAME_API(get_context_size)(void) +{ + return sizeof(M68K_CONTEXT); +} + +/***************************************************************************/ +/* m68k_get_context(address) */ +/* Parametro: Direccion del contexto */ +/* No retorna ningun valor */ +/***************************************************************************/ +void FAME_API(get_context)(void *context) +{ + memcpy(context,&FAME_CONTEXT,sizeof(M68K_CONTEXT)); +} + +/***************************************************************************/ +/* m68k_set_context(address) */ +/* Parametro: Direccion del contexto */ +/* No retorna ningun valor */ +/***************************************************************************/ +void FAME_API(set_context)(void *context) +{ + memcpy(&FAME_CONTEXT,context,sizeof(M68K_CONTEXT)); + famec_SetBanks(); +} + +/****************************************************************************/ +/* m68k_get_pc() */ +/* No recibe parametros */ +/* Retorna 68k PC */ +/****************************************************************************/ +u32 FAME_API(get_pc)(void) +{ + return (FAME_CONTEXT.execinfo & M68K_RUNNING) ? UNBASED_PC : FAME_CONTEXT.pc; +} + +/***************************************************************************/ +/* m68k_get_register(register) */ +/* Parametro: Registro a obtener valor (indice) */ +/* Retorno: Valor del registro requerido */ +/* Observacion: En caso de que el indice no sea correcto */ +/* la funcion devolvera -1 */ +/***************************************************************************/ +s32 FAME_API(get_register)(m68k_register reg) +{ + switch (reg) + { + case M68K_REG_D0: + case M68K_REG_D1: + case M68K_REG_D2: + case M68K_REG_D3: + case M68K_REG_D4: + case M68K_REG_D5: + case M68K_REG_D6: + case M68K_REG_D7: + return DREG(reg - M68K_REG_D0); + + case M68K_REG_A0: + case M68K_REG_A1: + case M68K_REG_A2: + case M68K_REG_A3: + case M68K_REG_A4: + case M68K_REG_A5: + case M68K_REG_A6: + case M68K_REG_A7: + return AREG(reg - M68K_REG_A0); + + case M68K_REG_ASP: + return ASP; + + case M68K_REG_PC: + return FAME_API(get_pc)(); + + case M68K_REG_SR: + return (FAME_CONTEXT.execinfo & M68K_RUNNING) ? GET_SR : FAME_CONTEXT.sr; + + default: + return M68K_INV_REG; + } +} + +/***********************************************************************/ +/* m68k_set_register(register,value) */ +/* Parametros: Registro (indice) y valor a asignar */ +/* Retorno: Exito de la operacion */ +/* 0 La operacion se ha realizado satisfactoriamente */ +/* 1 El indice del registro no es valido (fuera de limites) */ +/***********************************************************************/ +s32 FAME_API(set_register)(m68k_register reg, u32 value) +{ + switch (reg) + { + case M68K_REG_D0: + case M68K_REG_D1: + case M68K_REG_D2: + case M68K_REG_D3: + case M68K_REG_D4: + case M68K_REG_D5: + case M68K_REG_D6: + case M68K_REG_D7: + DREG(reg - M68K_REG_D0) = value; + break; + + case M68K_REG_A0: + case M68K_REG_A1: + case M68K_REG_A2: + case M68K_REG_A3: + case M68K_REG_A4: + case M68K_REG_A5: + case M68K_REG_A6: + case M68K_REG_A7: + AREG(reg - M68K_REG_A0) = value; + break; + + case M68K_REG_ASP: + ASP = value; + break; + + case M68K_REG_PC: + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + SET_PC(value); + } + else + { + FAME_CONTEXT.pc = value; + } + break; + + case M68K_REG_SR: + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + SET_SR(value); + } + else + { + FAME_CONTEXT.sr = value & 0xFFFF; + } + break; + + default: + return M68K_INV_REG; + } + + return M68K_OK; +} + +/*********************************************************/ +/* m68k_fetch(address,access_type) */ +/* Lee una palabra del espacio de memoria del 68k */ +/* Parametro: Direccion de la palabra y tipo de acceso */ +/* Retorno: La palabra o -1 en caso de dir. no valida */ +/*********************************************************/ +s32 FAME_API(fetch)(u32 addr, u32 memory_space) +{ + u32 i=0; + s32 val; + M68K_DATA *ds = NULL; + M68K_PROGRAM *ps = NULL; + + switch (memory_space & 2) + { + case M68K_SUP_ADDR_SPACE: + if ((memory_space & 1) == M68K_PROG_ADDR_SPACE) + ps = FAME_CONTEXT.sv_fetch; + else + ds = FAME_CONTEXT.sv_read_word; + break; + + case M68K_USER_ADDR_SPACE: + if ((memory_space & 1) == M68K_PROG_ADDR_SPACE) + ps = FAME_CONTEXT.user_fetch; + else + ds = FAME_CONTEXT.user_read_word; + break; + } + + if (ps == NULL) + { + while ( ((ds[i].low_addr > addr) || (ds[i].high_addr < addr)) && (ds[i].low_addr != BANKEND_TAG) ) + { +#ifdef FAME_DEBUG + printf("RW not found in %d region... 0x%08X - 0x%08X --> 0x%08X\n",i,ds[i].low_addr,ds[i].high_addr,addr); +#endif + + i++; + } + + if (ds[i].low_addr == BANKEND_TAG) + { + /* Error de BUS */ +#ifdef FAME_DEBUG + printf("ERROR de BUS en region %d...\n",i); +#endif + return -1; + } + else + { + if (ds[i].mem_handler != NULL) + { +#ifdef FAME_DEBUG + puts("Handled...\n"); +#endif + val= (*((mem16_handler_func *)&ds[i].mem_handler))(addr); + } + else + { +#ifdef FAME_DEBUG + printf("Ptr en region %d... addr: %p\n",i,ds[i].data); +#endif + val = *((u16 *)(((u32)ds[i].data) + addr)); +#ifdef FAME_DEBUG + puts("read"); +#endif + } + } + +#ifdef FAME_DEBUG + printf("Reading 0x%08X = 0x%04X...\n",addr,val); +#endif + } + else + { + u32 tmp=Fetch[((addr) >> M68K_FETCHSFT) & M68K_FETCHMASK]; + u16 *p= (u16*)(((addr) & M68K_ADDR_MASK) + (tmp)); + val = *p; +#ifdef FAME_DEBUG + printf("@%08X *%p=%04X\n",addr,p,val); +#endif + } + + return val; +} + +/******************************************************/ +/* m68k_get_cycles_counter() */ +/* Retorna el cycles_counter */ +/* Parametro: Ninguno */ +/* Retorno: cycles_counter */ +/******************************************************/ +u32 FAME_API(get_cycles_counter)(void) +{ + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + return (cycles_to_do - io_cycle_counter) + FAME_CONTEXT.cycles_counter; + else + return FAME_CONTEXT.cycles_counter; +} + +/******************************************************/ +/* m68k_trip_cycles_counter() */ +/* Retorna el cycles_counter y lo reinicializa */ +/* Parametro: Ninguno */ +/* Retorno: cycles_counter */ +/******************************************************/ +u32 FAME_API(trip_cycles_counter)(void) +{ + s32 ret=FAME_CONTEXT.cycles_counter; + + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + cycles_to_do-=io_cycle_counter; + io_cycle_counter=0; + } + io_cycle_counter=FAME_CONTEXT.cycles_counter=0; + return ret; +} + +/**********************************************************/ +/* m68k_control_cycles_counter(n) */ +/* Retorna el cycles_counter y lo reinicializa si */ +/* cycles_counter = n */ +/* Parametro: ciclos = n */ +/* Retorno: cycles_counter */ +/**********************************************************/ +u32 FAME_API(control_cycles_counter)(s32 cycles) +{ + return (cycles)?FAME_API(trip_cycles_counter)():FAME_API(get_cycles_counter)(); +} + +/******************************************************/ +/* m68k_release_timeslice() */ +/* Finaliza la ejecucion del micro */ +/* los ciclos sin ejecutar quedan en cycles_counter */ +/* Parametro: Ninguno */ +/* Retorno: Ninguno */ +/******************************************************/ +void FAME_API(release_timeslice)(void) +{ + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + io_cycle_counter = 0; + } +} + +/******************************************************/ +/* m68k_stop_emulating() */ +/* Finaliza la ejecucion del micro si esta en */ +/* ejecucion. los ciclos ejecutados seran menos */ +/* de lo normal reflejando asi la salida */ +/* Parametro: Ninguno */ +/* Retorno: Ninguno */ +/******************************************************/ +void FAME_API(stop_emulating)(void) +{ + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + /* + es necesario quitar los ciclos de cycles_counter + para que no sean vistos como ejecutados al final + de emulate, ya que stop_emulating incrementa + el contador con los ejecutados realmente, no los + ciclos requeridos por la llamada a emulate + */ + FAME_CONTEXT.cycles_counter -= io_cycle_counter; + io_cycle_counter = 0; + } +} + +/******************************************************/ +/* m68k_add_cycles() */ +/* Incrementa los ciclos de reloj a ejecutar por la */ +/* CPU en las llamadas a emulate */ +/* Parametro: Ninguno */ +/* Retorno: Ninguno */ +/******************************************************/ +void FAME_API(add_cycles)(s32 cycles) +{ + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + /* + when the CPU is running, io_cycle_counter stores the remaining cycles to be run + therefore, we have to substract in order to "increment" the clock counter + */ + io_cycle_counter -= cycles; + } + else + { + FAME_CONTEXT.cycles_counter += cycles; + } +} + + +/******************************************************/ +/* m68k_release_cycles() */ +/* Decrementa los ciclos de reloj a ejecutar por la */ +/* CPU en las llamadas a emulate */ +/* Parametro: Ninguno */ +/* Retorno: Ninguno */ +/******************************************************/ +void FAME_API(release_cycles)(s32 cycles) +{ + if (FAME_CONTEXT.execinfo & M68K_RUNNING) + { + /* + when the CPU is running, io_cycle_counter stores the remaining cycles to be run + therefore, we have to add in order to "decrement" the clock counter + */ + io_cycle_counter += cycles; + } + else + { + FAME_CONTEXT.cycles_counter -= cycles; + } +} + +/*****************************************************************************/ +/* m68k_get_cpu_state() */ +/* No recibe parametros */ +/* Retorna el estado de la CPU */ +/*****************************************************************************/ +u32 FAME_API(get_cpu_state)(void) +{ + return FAME_CONTEXT.execinfo; +} + + +/* + main exec function +*/ + +/* + m68k_emulate() + Parametros: Numero de ciclos a ejecutar + Retorno: Exito de la operacion + 0 La operacion se ha realizado satisfactoriamente + -1 La CPU esta detenida debido a un ERROR DE BUS DOBLE (linea) + El PC ha salido de los limites (bucle no en linea) +*/ +u32 FAME_API(emulate)(s32 cycles) +{ +#ifdef FAME_GOTOS + if (!initialised) + { + //BUILD_OPCODE_TABLE + initialised = 1; + } +#else + assert(initialised); +#endif + +#ifdef FAME_DEBUG + printf("m68k_emulate(%d)\n",cycles); +#endif + +#if 0 + /* El bit M68K_FAULTED no esta actualmente en uso */ + /* Comprobar si la CPU esta detenida debido a un doble error de bus */ + if (FAME_CONTEXT.execinfo & M68K_FAULTED) return (u32)-1; +#endif + + /* Poner la CPU en estado de ejecucion */ + FAME_CONTEXT.execinfo |= M68K_RUNNING; + + /* Cache SR */ + SET_SR(FAME_CONTEXT.sr) + + /* Cache PPL */ + flag_I = M68K_PPL; + + /* Fijar PC */ + SET_PC(FAME_CONTEXT.pc) + +#ifdef FAME_DEBUG + printf("->PC=0x%08X (%p-%p)\n",UNBASED_PC,PC,BasePC); +#endif + + /* guardar ciclos de ejecucion solicitados */ + io_cycle_counter = cycles_to_do = cycles; + cycles_needed = 0; + +#ifdef FAME_EMULATE_TRACE + if (!(FAME_CONTEXT.execinfo & M68K_EMULATE_TRACE)) +#endif + { + s32 line = interrupt_chk(); + if (line > 0) + { + interrupt_attend(line); + +#ifdef FAME_IRQ_CLOCKING + if(io_cycle_counter <= 0) + { + finish_emulate(cycles_to_do - io_cycle_counter); + return M68K_OK; + } +#endif + } +#ifdef FAME_EMULATE_TRACE + else if (flag_T) + { + /* al atender la excepcion de traza, la CPU sale del estado parado */ + FAME_CONTEXT.execinfo &= ~M68K_HALTED; + + FAME_CONTEXT.execinfo |= M68K_EMULATE_TRACE; + cycles_needed= io_cycle_counter; + io_cycle_counter=0; + } +#endif + } + + /* Comprobar si la CPU esta parada */ + if (FAME_CONTEXT.execinfo & M68K_HALTED) + { + /* La CPU esta detenida mediante la instruccion STOP */ + /* Agregar ciclos de reloj requeridos */ + finish_emulate(cycles_to_do); + return M68K_OK; + } + +#ifdef FAME_GOTOS +famec_Exec: +#endif + +#ifdef FAME_DEBUG + printf("Antes de NEXT... PC = 0x%08X\n",UNBASED_PC); +#endif + + NEXT + +#ifdef FAME_GOTOS +#include "famec_opcodes.h" + +famec_Exec_End: +#endif + +#ifdef FAME_EMULATE_TRACE + if (FAME_CONTEXT.execinfo & M68K_EMULATE_TRACE) + { + io_cycle_counter= cycles_needed; + cycles_needed=0; + FAME_CONTEXT.execinfo &= ~M68K_EMULATE_TRACE; + FAME_CONTEXT.execinfo |= M68K_DO_TRACE; + execute_exception(M68K_TRACE_EX); + flag_T=0; + if (io_cycle_counter > 0) + { + NEXT + } + } + else +#endif + if (cycles_needed>0) + { + s32 line=interrupt_chk(); + io_cycle_counter= cycles_needed; + cycles_needed=0; + if (line>0) + { + interrupt_attend(line); + } +#ifdef FAME_EMULATE_TRACE + else + if (!(flag_T)) +#endif + if (io_cycle_counter > 0) + { + NEXT + } + } + + finish_emulate(cycles_to_do - io_cycle_counter); + return M68K_OK; +} diff --git a/MCUME_teensy/teensycastaway/famec_opcodes.h b/MCUME_teensy/teensycastaway/famec_opcodes.h new file mode 100644 index 0000000..50d11cf --- /dev/null +++ b/MCUME_teensy/teensycastaway/famec_opcodes.h @@ -0,0 +1,33591 @@ +/* ORI */ +OPCODE(0x0000) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + res = DREGu8((Opcode >> 0) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ORI */ +OPCODE(0x0010) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ORI */ +OPCODE(0x0018) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ORI */ +OPCODE(0x0020) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ORI */ +OPCODE(0x0028) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ORI */ +OPCODE(0x0030) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* ORI */ +OPCODE(0x0038) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ORI */ +OPCODE(0x0039) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* ORI */ +OPCODE(0x001F) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ORI */ +OPCODE(0x0027) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ORI */ +OPCODE(0x0040) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 0) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ORI */ +OPCODE(0x0050) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ORI */ +OPCODE(0x0058) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ORI */ +OPCODE(0x0060) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ORI */ +OPCODE(0x0068) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ORI */ +OPCODE(0x0070) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(22) +} + +/* ORI */ +OPCODE(0x0078) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ORI */ +OPCODE(0x0079) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_LONG(adr); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(24) +} + +/* ORI */ +OPCODE(0x005F) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ORI */ +OPCODE(0x0067) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ORI */ +OPCODE(0x0080) +{ + u32 res; + u32 src; + + FETCH_LONG(src); + res = DREGu32((Opcode >> 0) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(16) +} + +/* ORI */ +OPCODE(0x0090) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ORI */ +OPCODE(0x0098) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ORI */ +OPCODE(0x00A0) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ORI */ +OPCODE(0x00A8) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* ORI */ +OPCODE(0x00B0) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(34) +} + +/* ORI */ +OPCODE(0x00B8) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* ORI */ +OPCODE(0x00B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_LONG(adr); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(36) +} + +/* ORI */ +OPCODE(0x009F) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ORI */ +OPCODE(0x00A7) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ORICCR */ +OPCODE(0x003C) +{ + u32 res; + + FETCH_BYTE(res); + res &= M68K_CCR_MASK; + res |= GET_CCR; + SET_CCR(res) + RET(20) +} + +/* ORISR */ +OPCODE(0x007C) +{ + + if (flag_S) + { + u32 res; + FETCH_WORD(res); + res &= M68K_SR_MASK; + res |= GET_SR; + SET_SR(res) + CHECK_INT_TO_JUMP(20) + } + else + { + u32 newPC = UNBASED_PC; + SET_PC(newPC-2); + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(20) +} + +/* ANDI */ +OPCODE(0x0200) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + res = DREGu8((Opcode >> 0) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ANDI */ +OPCODE(0x0210) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ANDI */ +OPCODE(0x0218) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ANDI */ +OPCODE(0x0220) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ANDI */ +OPCODE(0x0228) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ANDI */ +OPCODE(0x0230) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* ANDI */ +OPCODE(0x0238) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ANDI */ +OPCODE(0x0239) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* ANDI */ +OPCODE(0x021F) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ANDI */ +OPCODE(0x0227) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ANDI */ +OPCODE(0x0240) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 0) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ANDI */ +OPCODE(0x0250) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ANDI */ +OPCODE(0x0258) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ANDI */ +OPCODE(0x0260) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ANDI */ +OPCODE(0x0268) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ANDI */ +OPCODE(0x0270) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(22) +} + +/* ANDI */ +OPCODE(0x0278) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ANDI */ +OPCODE(0x0279) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_LONG(adr); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(24) +} + +/* ANDI */ +OPCODE(0x025F) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ANDI */ +OPCODE(0x0267) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ANDI */ +OPCODE(0x0280) +{ + u32 res; + u32 src; + + FETCH_LONG(src); + res = DREGu32((Opcode >> 0) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(14) +} + +/* ANDI */ +OPCODE(0x0290) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ANDI */ +OPCODE(0x0298) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ANDI */ +OPCODE(0x02A0) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ANDI */ +OPCODE(0x02A8) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* ANDI */ +OPCODE(0x02B0) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(34) +} + +/* ANDI */ +OPCODE(0x02B8) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* ANDI */ +OPCODE(0x02B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_LONG(adr); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(36) +} + +/* ANDI */ +OPCODE(0x029F) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ANDI */ +OPCODE(0x02A7) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ANDICCR */ +OPCODE(0x023C) +{ + u32 res; + + FETCH_BYTE(res); + res &= M68K_CCR_MASK; + res &= GET_CCR; + SET_CCR(res) + RET(20) +} + +/* ANDISR */ +OPCODE(0x027C) +{ + u32 res; + + if (flag_S) + { + FETCH_WORD(res); + res &= M68K_SR_MASK; + res &= GET_SR; + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(20) + } + else + { + u32 newPC = UNBASED_PC; + SET_PC(newPC-2); + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(20) +} + +/* EORI */ +OPCODE(0x0A00) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + res = DREGu8((Opcode >> 0) & 7); + res ^= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 0) & 7) = res; + RET(8) +} + +/* EORI */ +OPCODE(0x0A10) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* EORI */ +OPCODE(0x0A18) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* EORI */ +OPCODE(0x0A20) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* EORI */ +OPCODE(0x0A28) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* EORI */ +OPCODE(0x0A30) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* EORI */ +OPCODE(0x0A38) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* EORI */ +OPCODE(0x0A39) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* EORI */ +OPCODE(0x0A1F) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* EORI */ +OPCODE(0x0A27) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* EORI */ +OPCODE(0x0A40) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 0) & 7); + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 0) & 7) = res; + RET(8) +} + +/* EORI */ +OPCODE(0x0A50) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* EORI */ +OPCODE(0x0A58) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* EORI */ +OPCODE(0x0A60) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* EORI */ +OPCODE(0x0A68) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* EORI */ +OPCODE(0x0A70) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(22) +} + +/* EORI */ +OPCODE(0x0A78) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* EORI */ +OPCODE(0x0A79) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + FETCH_LONG(adr); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(24) +} + +/* EORI */ +OPCODE(0x0A5F) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* EORI */ +OPCODE(0x0A67) +{ + u32 adr, res; + u32 src; + + FETCH_WORD(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* EORI */ +OPCODE(0x0A80) +{ + u32 res; + u32 src; + + FETCH_LONG(src); + res = DREGu32((Opcode >> 0) & 7); + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(16) +} + +/* EORI */ +OPCODE(0x0A90) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* EORI */ +OPCODE(0x0A98) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* EORI */ +OPCODE(0x0AA0) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* EORI */ +OPCODE(0x0AA8) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* EORI */ +OPCODE(0x0AB0) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(34) +} + +/* EORI */ +OPCODE(0x0AB8) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* EORI */ +OPCODE(0x0AB9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + FETCH_LONG(adr); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(36) +} + +/* EORI */ +OPCODE(0x0A9F) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* EORI */ +OPCODE(0x0AA7) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(src); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* EORICCR */ +OPCODE(0x0A3C) +{ + u32 res; + + FETCH_BYTE(res); + res &= M68K_CCR_MASK; + res ^= GET_CCR; + SET_CCR(res) + RET(20) +} + +/* EORISR */ +OPCODE(0x0A7C) +{ + u32 res; + + if (flag_S) + { + FETCH_WORD(res); + res &= M68K_SR_MASK; + res ^= GET_SR; + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(20) + } + else + { + u32 newPC = UNBASED_PC; + SET_PC(newPC-2); + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(20) +} + +/* SUBI */ +OPCODE(0x0400) +{ + u32 res; + u32 src, dst; + + FETCH_BYTE(src); + dst = DREGu8((Opcode >> 0) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(8) +} + +/* SUBI */ +OPCODE(0x0410) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBI */ +OPCODE(0x0418) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBI */ +OPCODE(0x0420) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBI */ +OPCODE(0x0428) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* SUBI */ +OPCODE(0x0430) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* SUBI */ +OPCODE(0x0438) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* SUBI */ +OPCODE(0x0439) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* SUBI */ +OPCODE(0x041F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBI */ +OPCODE(0x0427) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBI */ +OPCODE(0x0440) +{ + u32 res; + u32 src, dst; + + FETCH_WORD(src); + dst = DREGu16((Opcode >> 0) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(8) +} + +/* SUBI */ +OPCODE(0x0450) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBI */ +OPCODE(0x0458) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBI */ +OPCODE(0x0460) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBI */ +OPCODE(0x0468) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* SUBI */ +OPCODE(0x0470) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(22) +} + +/* SUBI */ +OPCODE(0x0478) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* SUBI */ +OPCODE(0x0479) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(24) +} + +/* SUBI */ +OPCODE(0x045F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBI */ +OPCODE(0x0467) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBI */ +OPCODE(0x0480) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = DREGu32((Opcode >> 0) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(16) +} + +/* SUBI */ +OPCODE(0x0490) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* SUBI */ +OPCODE(0x0498) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* SUBI */ +OPCODE(0x04A0) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* SUBI */ +OPCODE(0x04A8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* SUBI */ +OPCODE(0x04B0) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(34) +} + +/* SUBI */ +OPCODE(0x04B8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* SUBI */ +OPCODE(0x04B9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(36) +} + +/* SUBI */ +OPCODE(0x049F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* SUBI */ +OPCODE(0x04A7) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ADDI */ +OPCODE(0x0600) +{ + u32 res; + u32 src, dst; + + FETCH_BYTE(src); + dst = DREGu8((Opcode >> 0) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ADDI */ +OPCODE(0x0610) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDI */ +OPCODE(0x0618) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDI */ +OPCODE(0x0620) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDI */ +OPCODE(0x0628) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ADDI */ +OPCODE(0x0630) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* ADDI */ +OPCODE(0x0638) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ADDI */ +OPCODE(0x0639) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* ADDI */ +OPCODE(0x061F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDI */ +OPCODE(0x0627) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDI */ +OPCODE(0x0640) +{ + u32 res; + u32 src, dst; + + FETCH_WORD(src); + dst = DREGu16((Opcode >> 0) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ADDI */ +OPCODE(0x0650) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDI */ +OPCODE(0x0658) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDI */ +OPCODE(0x0660) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDI */ +OPCODE(0x0668) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ADDI */ +OPCODE(0x0670) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(22) +} + +/* ADDI */ +OPCODE(0x0678) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ADDI */ +OPCODE(0x0679) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(24) +} + +/* ADDI */ +OPCODE(0x065F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDI */ +OPCODE(0x0667) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDI */ +OPCODE(0x0680) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = DREGu32((Opcode >> 0) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(16) +} + +/* ADDI */ +OPCODE(0x0690) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ADDI */ +OPCODE(0x0698) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ADDI */ +OPCODE(0x06A0) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ADDI */ +OPCODE(0x06A8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* ADDI */ +OPCODE(0x06B0) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(34) +} + +/* ADDI */ +OPCODE(0x06B8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(32) +} + +/* ADDI */ +OPCODE(0x06B9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(36) +} + +/* ADDI */ +OPCODE(0x069F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ADDI */ +OPCODE(0x06A7) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* CMPI */ +OPCODE(0x0C00) +{ + u32 res; + u32 src, dst; + + FETCH_BYTE(src); + dst = DREGu8((Opcode >> 0) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(8) +} + +/* CMPI */ +OPCODE(0x0C10) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMPI */ +OPCODE(0x0C18) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMPI */ +OPCODE(0x0C20) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(14) +} + +/* CMPI */ +OPCODE(0x0C28) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(16) +} + +/* CMPI */ +OPCODE(0x0C30) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(18) +} + +/* CMPI */ +OPCODE(0x0C38) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(16) +} + +/* CMPI */ +OPCODE(0x0C39) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(20) +} + +/* CMPI */ +OPCODE(0x0C1F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMPI */ +OPCODE(0x0C27) +{ + u32 adr, res; + u32 src, dst; + + FETCH_BYTE(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(14) +} + +/* CMPI */ +OPCODE(0x0C40) +{ + u32 res; + u32 src, dst; + + FETCH_WORD(src); + dst = DREGu16((Opcode >> 0) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(8) +} + +/* CMPI */ +OPCODE(0x0C50) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMPI */ +OPCODE(0x0C58) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMPI */ +OPCODE(0x0C60) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(14) +} + +/* CMPI */ +OPCODE(0x0C68) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(16) +} + +/* CMPI */ +OPCODE(0x0C70) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(18) +} + +/* CMPI */ +OPCODE(0x0C78) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(16) +} + +/* CMPI */ +OPCODE(0x0C79) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(20) +} + +/* CMPI */ +OPCODE(0x0C5F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMPI */ +OPCODE(0x0C67) +{ + u32 adr, res; + u32 src, dst; + + FETCH_WORD(src); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(14) +} + +/* CMPI */ +OPCODE(0x0C80) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = DREGu32((Opcode >> 0) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPI */ +OPCODE(0x0C90) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMPI */ +OPCODE(0x0C98) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMPI */ +OPCODE(0x0CA0) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(22) +} + +/* CMPI */ +OPCODE(0x0CA8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(24) +} + +/* CMPI */ +OPCODE(0x0CB0) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(26) +} + +/* CMPI */ +OPCODE(0x0CB8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(24) +} + +/* CMPI */ +OPCODE(0x0CB9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(28) +} + +/* CMPI */ +OPCODE(0x0C9F) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMPI */ +OPCODE(0x0CA7) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(src); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(22) +} + +/* BTSTn */ +OPCODE(0x0800) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + RET(10) +} + +/* BTSTn */ +OPCODE(0x0810) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(12) +} + +/* BTSTn */ +OPCODE(0x0818) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(12) +} + +/* BTSTn */ +OPCODE(0x0820) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(14) +} + +/* BTSTn */ +OPCODE(0x0828) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(16) +} + +/* BTSTn */ +OPCODE(0x0830) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(18) +} + +/* BTSTn */ +OPCODE(0x0838) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(16) +} + +/* BTSTn */ +OPCODE(0x0839) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(20) +} + +/* BTSTn */ +OPCODE(0x083A) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(16) +} + +/* BTSTn */ +OPCODE(0x083B) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(18) +} + +/* BTSTn */ +OPCODE(0x081F) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(12) +} + +/* BTSTn */ +OPCODE(0x0827) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(14) +} + +/* BCHGn */ +OPCODE(0x0840) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + res ^= src; + DREGu32((Opcode >> 0) & 7) = res; + RET(12) +} + +/* BCHGn */ +OPCODE(0x0850) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCHGn */ +OPCODE(0x0858) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCHGn */ +OPCODE(0x0860) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BCHGn */ +OPCODE(0x0868) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BCHGn */ +OPCODE(0x0870) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* BCHGn */ +OPCODE(0x0878) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BCHGn */ +OPCODE(0x0879) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* BCHGn */ +OPCODE(0x085F) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCHGn */ +OPCODE(0x0867) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BCLRn */ +OPCODE(0x0880) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + res &= ~src; + DREGu32((Opcode >> 0) & 7) = res; + RET(14) +} + +/* BCLRn */ +OPCODE(0x0890) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCLRn */ +OPCODE(0x0898) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCLRn */ +OPCODE(0x08A0) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BCLRn */ +OPCODE(0x08A8) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BCLRn */ +OPCODE(0x08B0) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* BCLRn */ +OPCODE(0x08B8) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BCLRn */ +OPCODE(0x08B9) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* BCLRn */ +OPCODE(0x089F) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCLRn */ +OPCODE(0x08A7) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BSETn */ +OPCODE(0x08C0) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + res |= src; + DREGu32((Opcode >> 0) & 7) = res; + RET(12) +} + +/* BSETn */ +OPCODE(0x08D0) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BSETn */ +OPCODE(0x08D8) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BSETn */ +OPCODE(0x08E0) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BSETn */ +OPCODE(0x08E8) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BSETn */ +OPCODE(0x08F0) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* BSETn */ +OPCODE(0x08F8) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BSETn */ +OPCODE(0x08F9) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* BSETn */ +OPCODE(0x08DF) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BSETn */ +OPCODE(0x08E7) +{ + u32 adr, res; + u32 src; + + FETCH_BYTE(src); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BTST */ +OPCODE(0x0100) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + RET(6) +} + +/* BTST */ +OPCODE(0x0110) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(8) +} + +/* BTST */ +OPCODE(0x0118) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(8) +} + +/* BTST */ +OPCODE(0x0120) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(10) +} + +/* BTST */ +OPCODE(0x0128) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(12) +} + +/* BTST */ +OPCODE(0x0130) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(14) +} + +/* BTST */ +OPCODE(0x0138) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(12) +} + +/* BTST */ +OPCODE(0x0139) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(16) +} + +/* BTST */ +OPCODE(0x013A) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(12) +} + +/* BTST */ +OPCODE(0x013B) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(14) +} + +/* BTST */ +OPCODE(0x013C) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_BYTE(res); + flag_NotZ = res & src; + RET(8) +} + +/* BTST */ +OPCODE(0x011F) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(8) +} + +/* BTST */ +OPCODE(0x0127) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + RET(10) +} + +/* BCHG */ +OPCODE(0x0140) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + res ^= src; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* BCHG */ +OPCODE(0x0150) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BCHG */ +OPCODE(0x0158) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BCHG */ +OPCODE(0x0160) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* BCHG */ +OPCODE(0x0168) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCHG */ +OPCODE(0x0170) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BCHG */ +OPCODE(0x0178) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCHG */ +OPCODE(0x0179) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BCHG */ +OPCODE(0x015F) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BCHG */ +OPCODE(0x0167) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* BCLR */ +OPCODE(0x0180) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + res &= ~src; + DREGu32((Opcode >> 0) & 7) = res; + RET(10) +} + +/* BCLR */ +OPCODE(0x0190) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BCLR */ +OPCODE(0x0198) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BCLR */ +OPCODE(0x01A0) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* BCLR */ +OPCODE(0x01A8) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCLR */ +OPCODE(0x01B0) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BCLR */ +OPCODE(0x01B8) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BCLR */ +OPCODE(0x01B9) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BCLR */ +OPCODE(0x019F) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BCLR */ +OPCODE(0x01A7) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* BSET */ +OPCODE(0x01C0) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + src = 1 << (src & 31); + res = DREGu32((Opcode >> 0) & 7); + flag_NotZ = res & src; + res |= src; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* BSET */ +OPCODE(0x01D0) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BSET */ +OPCODE(0x01D8) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BSET */ +OPCODE(0x01E0) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* BSET */ +OPCODE(0x01E8) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BSET */ +OPCODE(0x01F0) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* BSET */ +OPCODE(0x01F8) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* BSET */ +OPCODE(0x01F9) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* BSET */ +OPCODE(0x01DF) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* BSET */ +OPCODE(0x01E7) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + src = 1 << (src & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + flag_NotZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEPWaD */ +OPCODE(0x0108) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr + 0, res) + READ_BYTE_F(adr + 2, src) + DREGu16((Opcode >> 9) & 7) = (res << 8) | src; + RET(16) +} + +/* MOVEPLaD */ +OPCODE(0x0148) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res <<= 24; + adr += 2; + READ_BYTE_F(adr, src) + res |= src << 16; + adr += 2; + READ_BYTE_F(adr, src) + res |= src << 8; + adr += 2; + READ_BYTE_F(adr, src) + DREG((Opcode >> 9) & 7) = res | src; + RET(24) +} + +/* MOVEPWDa */ +OPCODE(0x0188) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + WRITE_BYTE_F(adr + 0, res >> 8) + WRITE_BYTE_F(adr + 2, res >> 0) + RET(16) +} + +/* MOVEPLDa */ +OPCODE(0x01C8) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + WRITE_BYTE_F(adr, res >> 24) + adr += 2; + WRITE_BYTE_F(adr, res >> 16) + adr += 2; + WRITE_BYTE_F(adr, res >> 8) + adr += 2; + WRITE_BYTE_F(adr, res >> 0) + RET(24) +} + +/* MOVEB */ +OPCODE(0x1000) +{ + u32 res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEB */ +OPCODE(0x1080) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(8) +} + +/* MOVEB */ +OPCODE(0x10C0) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(8) +} + +/* MOVEB */ +OPCODE(0x1100) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(8) +} + +/* MOVEB */ +OPCODE(0x1140) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1180) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x11C0) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x13C0) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1EC0) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(8) +} + +/* MOVEB */ +OPCODE(0x1F00) +{ + u32 adr, res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(8) +} + +/* MOVEB */ +OPCODE(0x1008) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + */ +#endif + RET(4) +} + +/* MOVEB */ +OPCODE(0x1088) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + */ +#endif + RET(8) +} + +/* MOVEB */ +OPCODE(0x10C8) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + */ +#endif + RET(8) +} + +/* MOVEB */ +OPCODE(0x1108) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + */ +#endif + RET(8) +} + +/* MOVEB */ +OPCODE(0x1148) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + */ +#endif + RET(12) +} + +/* MOVEB */ +OPCODE(0x1188) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + */ +#endif + RET(14) +} + +/* MOVEB */ +OPCODE(0x11C8) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + */ +#endif + RET(12) +} + +/* MOVEB */ +OPCODE(0x13C8) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + */ +#endif + RET(16) +} + +/* MOVEB */ +OPCODE(0x1EC8) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + */ +#endif + RET(8) +} + +/* MOVEB */ +OPCODE(0x1F08) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + */ +#endif + RET(8) +} + +/* MOVEB */ +OPCODE(0x1010) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEB */ +OPCODE(0x1090) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x10D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1110) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1150) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1190) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x11D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x13D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1ED0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1F10) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1018) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEB */ +OPCODE(0x1098) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x10D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1118) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1158) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1198) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x11D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x13D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1ED8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1F18) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1020) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* MOVEB */ +OPCODE(0x10A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x10E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1120) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1160) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x11A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x11E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x13E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x1EE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1F20) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1028) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEB */ +OPCODE(0x10A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x10E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1128) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1168) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x11A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x11E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x13E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x1EE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1F28) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1030) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEB */ +OPCODE(0x10B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x10F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x1130) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x1170) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x11B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x11F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x13F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(26) +} + +/* MOVEB */ +OPCODE(0x1EF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x1F30) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x1038) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEB */ +OPCODE(0x10B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x10F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1138) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1178) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x11B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x11F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x13F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x1EF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1F38) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1039) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEB */ +OPCODE(0x10B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x10F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1139) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1179) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x11B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(26) +} + +/* MOVEB */ +OPCODE(0x11F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x13F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(28) +} + +/* MOVEB */ +OPCODE(0x1EF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1F39) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x103A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEB */ +OPCODE(0x10BA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x10FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x113A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x117A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x11BA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x11FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x13FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x1EFA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x1F3A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x103B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEB */ +OPCODE(0x10BB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x10FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x113B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x117B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x11BB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(24) +} + +/* MOVEB */ +OPCODE(0x11FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x13FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(26) +} + +/* MOVEB */ +OPCODE(0x1EFB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x1F3B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x103C) +{ + u32 res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEB */ +OPCODE(0x10BC) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x10FC) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x113C) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x117C) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x11BC) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x11FC) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x13FC) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1EFC) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1F3C) +{ + u32 adr, res; + + FETCH_BYTE(res); + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x101F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEB */ +OPCODE(0x109F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x10DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x111F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x115F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x119F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x11DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* MOVEB */ +OPCODE(0x13DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x1EDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1F1F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* MOVEB */ +OPCODE(0x1027) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* MOVEB */ +OPCODE(0x10A7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x10E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1127) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1167) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x11A7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* MOVEB */ +OPCODE(0x11E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_SWORD(adr); + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MOVEB */ +OPCODE(0x13E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + FETCH_LONG(adr); + WRITE_BYTE_F(adr, res) + RET(22) +} + +/* MOVEB */ +OPCODE(0x1EE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7); + AREG(7) += 2; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEB */ +OPCODE(0x1F27) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* MOVEL */ +OPCODE(0x2000) +{ + u32 res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEL */ +OPCODE(0x2080) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x20C0) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2100) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2140) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(16) +} + +/* MOVEL */ +OPCODE(0x2180) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(18) +} + +/* MOVEL */ +OPCODE(0x21C0) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(16) +} + +/* MOVEL */ +OPCODE(0x23C0) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2EC0) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2F00) +{ + u32 adr, res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2008) +{ + u32 res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEL */ +OPCODE(0x2088) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x20C8) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2108) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2148) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(16) +} + +/* MOVEL */ +OPCODE(0x2188) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(18) +} + +/* MOVEL */ +OPCODE(0x21C8) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(16) +} + +/* MOVEL */ +OPCODE(0x23C8) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2EC8) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2F08) +{ + u32 adr, res; + + res = AREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(12) +} + +/* MOVEL */ +OPCODE(0x2010) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEL */ +OPCODE(0x2090) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x20D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2110) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2150) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2190) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x21D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x23D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2ED0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2F10) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2018) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEL */ +OPCODE(0x2098) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x20D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2118) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2158) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2198) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x21D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x23D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2ED8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2F18) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2020) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEL */ +OPCODE(0x20A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x20E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2120) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2160) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x21A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x21E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x23E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x2EE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2F20) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2028) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEL */ +OPCODE(0x20A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x20E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2128) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2168) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x21A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x21E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x23E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x2EE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2F28) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2030) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* MOVEL */ +OPCODE(0x20B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x20F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x2130) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x2170) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x21B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x21F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x23F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(34) +} + +/* MOVEL */ +OPCODE(0x2EF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x2F30) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x2038) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEL */ +OPCODE(0x20B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x20F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2138) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2178) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x21B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x21F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x23F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x2EF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2F38) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2039) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* MOVEL */ +OPCODE(0x20B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x20F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2139) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2179) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x21B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(34) +} + +/* MOVEL */ +OPCODE(0x21F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x23F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(36) +} + +/* MOVEL */ +OPCODE(0x2EF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2F39) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x203A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEL */ +OPCODE(0x20BA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x20FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x213A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x217A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x21BA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x21FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x23FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x2EFA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x2F3A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x203B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* MOVEL */ +OPCODE(0x20BB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x20FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x213B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x217B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x21BB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(32) +} + +/* MOVEL */ +OPCODE(0x21FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x23FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(34) +} + +/* MOVEL */ +OPCODE(0x2EFB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x2F3B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x203C) +{ + u32 res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEL */ +OPCODE(0x20BC) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x20FC) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x213C) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x217C) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x21BC) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x21FC) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x23FC) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2EFC) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2F3C) +{ + u32 adr, res; + + FETCH_LONG(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x201F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEL */ +OPCODE(0x209F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x20DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x211F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x215F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x219F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x21DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(24) +} + +/* MOVEL */ +OPCODE(0x23DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x2EDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2F1F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(20) +} + +/* MOVEL */ +OPCODE(0x2027) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEL */ +OPCODE(0x20A7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x20E7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2127) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2167) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x21A7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_LONG_F(adr, res) + RET(28) +} + +/* MOVEL */ +OPCODE(0x21E7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_SWORD(adr); + WRITE_LONG_F(adr, res) + RET(26) +} + +/* MOVEL */ +OPCODE(0x23E7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + FETCH_LONG(adr); + WRITE_LONG_F(adr, res) + RET(30) +} + +/* MOVEL */ +OPCODE(0x2EE7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7); + AREG(7) += 4; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVEL */ +OPCODE(0x2F27) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + adr = AREG(7) - 4; + AREG(7) = adr; + WRITE_LONG_DEC_F(adr, res) + RET(22) +} + +/* MOVEAL */ +OPCODE(0x2040) +{ + u32 res; + + res = (s32)DREGs32((Opcode >> 0) & 7); + AREG((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEAL */ +OPCODE(0x2048) +{ + u32 res; + + res = (s32)AREGs32((Opcode >> 0) & 7); + AREG((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEAL */ +OPCODE(0x2050) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAL */ +OPCODE(0x2058) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAL */ +OPCODE(0x2060) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEAL */ +OPCODE(0x2068) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEAL */ +OPCODE(0x2070) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* MOVEAL */ +OPCODE(0x2078) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEAL */ +OPCODE(0x2079) +{ + u32 adr, res; + + FETCH_LONG(adr); + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* MOVEAL */ +OPCODE(0x207A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEAL */ +OPCODE(0x207B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* MOVEAL */ +OPCODE(0x207C) +{ + u32 res; + + FETCH_LONG(res); + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAL */ +OPCODE(0x205F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAL */ +OPCODE(0x2067) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READSX_LONG_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEW */ +OPCODE(0x3000) +{ + u32 res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEW */ +OPCODE(0x3080) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x30C0) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3100) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3140) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3180) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x31C0) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x33C0) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3EC0) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3F00) +{ + u32 adr, res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3008) +{ + u32 res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEW */ +OPCODE(0x3088) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x30C8) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3108) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3148) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3188) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x31C8) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x33C8) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3EC8) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3F08) +{ + u32 adr, res; + + res = AREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(8) +} + +/* MOVEW */ +OPCODE(0x3010) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEW */ +OPCODE(0x3090) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x30D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3110) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3150) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3190) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x31D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x33D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3ED0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3F10) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3018) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEW */ +OPCODE(0x3098) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x30D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3118) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3158) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3198) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x31D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x33D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3ED8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3F18) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3020) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* MOVEW */ +OPCODE(0x30A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x30E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3120) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3160) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x31A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x31E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x33E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x3EE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3F20) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3028) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEW */ +OPCODE(0x30A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x30E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3128) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3168) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x31A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x31E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x33E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x3EE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3F28) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3030) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEW */ +OPCODE(0x30B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x30F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x3130) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x3170) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x31B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x31F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x33F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(26) +} + +/* MOVEW */ +OPCODE(0x3EF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x3F30) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x3038) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEW */ +OPCODE(0x30B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x30F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3138) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3178) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x31B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x31F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x33F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x3EF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3F38) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3039) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEW */ +OPCODE(0x30B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x30F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3139) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3179) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x31B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(26) +} + +/* MOVEW */ +OPCODE(0x31F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x33F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(28) +} + +/* MOVEW */ +OPCODE(0x3EF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3F39) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x303A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEW */ +OPCODE(0x30BA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x30FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x313A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x317A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x31BA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x31FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x33FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x3EFA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x3F3A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x303B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEW */ +OPCODE(0x30BB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x30FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x313B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x317B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x31BB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(24) +} + +/* MOVEW */ +OPCODE(0x31FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x33FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(26) +} + +/* MOVEW */ +OPCODE(0x3EFB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x3F3B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x303C) +{ + u32 res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEW */ +OPCODE(0x30BC) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x30FC) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x313C) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x317C) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x31BC) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x31FC) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x33FC) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3EFC) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3F3C) +{ + u32 adr, res; + + FETCH_WORD(res); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x301F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEW */ +OPCODE(0x309F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x30DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x311F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x315F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x319F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x31DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVEW */ +OPCODE(0x33DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x3EDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3F1F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVEW */ +OPCODE(0x3027) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* MOVEW */ +OPCODE(0x30A7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x30E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3127) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3167) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 9) & 7); + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x31A7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG((Opcode >> 9) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVEW */ +OPCODE(0x31E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVEW */ +OPCODE(0x33E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(22) +} + +/* MOVEW */ +OPCODE(0x3EE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEW */ +OPCODE(0x3F27) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEAW */ +OPCODE(0x3040) +{ + u32 res; + + res = (s32)DREGs16((Opcode >> 0) & 7); + AREG((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEAW */ +OPCODE(0x3048) +{ + u32 res; + + res = (s32)AREGs16((Opcode >> 0) & 7); + AREG((Opcode >> 9) & 7) = res; + RET(4) +} + +/* MOVEAW */ +OPCODE(0x3050) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEAW */ +OPCODE(0x3058) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEAW */ +OPCODE(0x3060) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(10) +} + +/* MOVEAW */ +OPCODE(0x3068) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAW */ +OPCODE(0x3070) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEAW */ +OPCODE(0x3078) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAW */ +OPCODE(0x3079) +{ + u32 adr, res; + + FETCH_LONG(adr); + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* MOVEAW */ +OPCODE(0x307A) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* MOVEAW */ +OPCODE(0x307B) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* MOVEAW */ +OPCODE(0x307C) +{ + u32 res; + + FETCH_SWORD(res); + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEAW */ +OPCODE(0x305F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* MOVEAW */ +OPCODE(0x3067) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READSX_WORD_F(adr, res) + AREG((Opcode >> 9) & 7) = res; + RET(10) +} + +/* NEGX */ +OPCODE(0x4000) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 0) & 7); + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* NEGX */ +OPCODE(0x4010) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NEGX */ +OPCODE(0x4018) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NEGX */ +OPCODE(0x4020) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* NEGX */ +OPCODE(0x4028) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* NEGX */ +OPCODE(0x4030) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* NEGX */ +OPCODE(0x4038) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* NEGX */ +OPCODE(0x4039) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* NEGX */ +OPCODE(0x401F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NEGX */ +OPCODE(0x4027) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* NEGX */ +OPCODE(0x4040) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* NEGX */ +OPCODE(0x4050) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NEGX */ +OPCODE(0x4058) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NEGX */ +OPCODE(0x4060) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* NEGX */ +OPCODE(0x4068) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* NEGX */ +OPCODE(0x4070) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* NEGX */ +OPCODE(0x4078) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* NEGX */ +OPCODE(0x4079) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* NEGX */ +OPCODE(0x405F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NEGX */ +OPCODE(0x4067) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* NEGX */ +OPCODE(0x4080) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 0) & 7); + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(6) +} + +/* NEGX */ +OPCODE(0x4090) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) | (src >> 1) | (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NEGX */ +OPCODE(0x4098) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NEGX */ +OPCODE(0x40A0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* NEGX */ +OPCODE(0x40A8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* NEGX */ +OPCODE(0x40B0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* NEGX */ +OPCODE(0x40B8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* NEGX */ +OPCODE(0x40B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* NEGX */ +OPCODE(0x409F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NEGX */ +OPCODE(0x40A7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + res = -src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_V = (res & src) >> 24; + flag_X = flag_C = (res?1:0)<<8; + /* flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; */ + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* CLR */ +OPCODE(0x4200) +{ + u32 res; + + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* CLR */ +OPCODE(0x4210) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4218) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4220) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* CLR */ +OPCODE(0x4228) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* CLR */ +OPCODE(0x4230) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* CLR */ +OPCODE(0x4238) +{ + u32 adr, res; + + FETCH_SWORD(adr); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* CLR */ +OPCODE(0x4239) +{ + u32 adr, res; + + FETCH_LONG(adr); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* CLR */ +OPCODE(0x421F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4227) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* CLR */ +OPCODE(0x4240) +{ + u32 res; + + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* CLR */ +OPCODE(0x4250) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4258) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4260) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* CLR */ +OPCODE(0x4268) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* CLR */ +OPCODE(0x4270) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* CLR */ +OPCODE(0x4278) +{ + u32 adr, res; + + FETCH_SWORD(adr); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* CLR */ +OPCODE(0x4279) +{ + u32 adr, res; + + FETCH_LONG(adr); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* CLR */ +OPCODE(0x425F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4267) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* CLR */ +OPCODE(0x4280) +{ + u32 res; + + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + DREGu32((Opcode >> 0) & 7) = res; + RET(6) +} + +/* CLR */ +OPCODE(0x4290) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x4298) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x42A0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x42A8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x42B0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x42B8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x42B9) +{ + u32 adr, res; + + FETCH_LONG(adr); + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x429F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* CLR */ +OPCODE(0x42A7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + res = 0; + flag_N = flag_NotZ = flag_V = flag_C = 0; + WRITE_LONG_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4400) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 0) & 7); + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* NEG */ +OPCODE(0x4410) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4418) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4420) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* NEG */ +OPCODE(0x4428) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* NEG */ +OPCODE(0x4430) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* NEG */ +OPCODE(0x4438) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* NEG */ +OPCODE(0x4439) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* NEG */ +OPCODE(0x441F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4427) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + res = -src; + flag_V = res & src; + flag_N = flag_X = flag_C = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* NEG */ +OPCODE(0x4440) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* NEG */ +OPCODE(0x4450) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4458) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4460) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* NEG */ +OPCODE(0x4468) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* NEG */ +OPCODE(0x4470) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* NEG */ +OPCODE(0x4478) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* NEG */ +OPCODE(0x4479) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* NEG */ +OPCODE(0x445F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NEG */ +OPCODE(0x4467) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = -src; + flag_V = (res & src) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* NEG */ +OPCODE(0x4480) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 0) & 7); + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(6) +} + +/* NEG */ +OPCODE(0x4490) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NEG */ +OPCODE(0x4498) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NEG */ +OPCODE(0x44A0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* NEG */ +OPCODE(0x44A8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* NEG */ +OPCODE(0x44B0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* NEG */ +OPCODE(0x44B8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* NEG */ +OPCODE(0x44B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* NEG */ +OPCODE(0x449F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NEG */ +OPCODE(0x44A7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + res = -src; + flag_NotZ = res; + flag_V = (res & src) >> 24; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* NOT */ +OPCODE(0x4600) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 0) & 7); + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* NOT */ +OPCODE(0x4610) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NOT */ +OPCODE(0x4618) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NOT */ +OPCODE(0x4620) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* NOT */ +OPCODE(0x4628) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* NOT */ +OPCODE(0x4630) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* NOT */ +OPCODE(0x4638) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* NOT */ +OPCODE(0x4639) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* NOT */ +OPCODE(0x461F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* NOT */ +OPCODE(0x4627) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_N = res; + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* NOT */ +OPCODE(0x4640) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* NOT */ +OPCODE(0x4650) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NOT */ +OPCODE(0x4658) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NOT */ +OPCODE(0x4660) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* NOT */ +OPCODE(0x4668) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* NOT */ +OPCODE(0x4670) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* NOT */ +OPCODE(0x4678) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* NOT */ +OPCODE(0x4679) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* NOT */ +OPCODE(0x465F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* NOT */ +OPCODE(0x4667) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = ~src; + flag_C = 0; + flag_V = 0; + flag_NotZ = res & 0xFFFF; + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* NOT */ +OPCODE(0x4680) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 0) & 7); + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(6) +} + +/* NOT */ +OPCODE(0x4690) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NOT */ +OPCODE(0x4698) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NOT */ +OPCODE(0x46A0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* NOT */ +OPCODE(0x46A8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* NOT */ +OPCODE(0x46B0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* NOT */ +OPCODE(0x46B8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* NOT */ +OPCODE(0x46B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* NOT */ +OPCODE(0x469F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* NOT */ +OPCODE(0x46A7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + res = ~src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* MOVESRa */ +OPCODE(0x40C0) +{ + u32 res; + + res = GET_SR; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* MOVESRa */ +OPCODE(0x40D0) +{ + u32 adr, res; + + res = GET_SR; + adr = AREG((Opcode >> 0) & 7); + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVESRa */ +OPCODE(0x40D8) +{ + u32 adr, res; + + res = GET_SR; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVESRa */ +OPCODE(0x40E0) +{ + u32 adr, res; + + res = GET_SR; + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVESRa */ +OPCODE(0x40E8) +{ + u32 adr, res; + + res = GET_SR; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVESRa */ +OPCODE(0x40F0) +{ + u32 adr, res; + + res = GET_SR; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + WRITE_WORD_F(adr, res) + RET(18) +} + +/* MOVESRa */ +OPCODE(0x40F8) +{ + u32 adr, res; + + res = GET_SR; + FETCH_SWORD(adr); + WRITE_WORD_F(adr, res) + RET(16) +} + +/* MOVESRa */ +OPCODE(0x40F9) +{ + u32 adr, res; + + res = GET_SR; + FETCH_LONG(adr); + WRITE_WORD_F(adr, res) + RET(20) +} + +/* MOVESRa */ +OPCODE(0x40DF) +{ + u32 adr, res; + + res = GET_SR; + adr = AREG(7); + AREG(7) += 2; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* MOVESRa */ +OPCODE(0x40E7) +{ + u32 adr, res; + + res = GET_SR; + adr = AREG(7) - 2; + AREG(7) = adr; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* MOVEaCCR */ +OPCODE(0x44C0) +{ + u32 res; + + res = DREGu16((Opcode >> 0) & 7); + SET_CCR(res) + RET(12) +} + +/* MOVEaCCR */ +OPCODE(0x44D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_CCR(res) + RET(16) +} + +/* MOVEaCCR */ +OPCODE(0x44D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_CCR(res) + RET(16) +} + +/* MOVEaCCR */ +OPCODE(0x44E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_CCR(res) + RET(18) +} + +/* MOVEaCCR */ +OPCODE(0x44E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_CCR(res) + RET(20) +} + +/* MOVEaCCR */ +OPCODE(0x44F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_CCR(res) + RET(22) +} + +/* MOVEaCCR */ +OPCODE(0x44F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_CCR(res) + RET(20) +} + +/* MOVEaCCR */ +OPCODE(0x44F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_CCR(res) + RET(24) +} + +/* MOVEaCCR */ +OPCODE(0x44FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_CCR(res) + RET(20) +} + +/* MOVEaCCR */ +OPCODE(0x44FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_CCR(res) + RET(22) +} + +/* MOVEaCCR */ +OPCODE(0x44FC) +{ + u32 res; + + FETCH_WORD(res); + SET_CCR(res) + RET(16) +} + +/* MOVEaCCR */ +OPCODE(0x44DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_CCR(res) + RET(16) +} + +/* MOVEaCCR */ +OPCODE(0x44E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_CCR(res) + RET(18) +} + +/* MOVEaSR */ +OPCODE(0x46C0) +{ + u32 res; + + if (flag_S) + { + res = DREGu16((Opcode >> 0) & 7); + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(12) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(12) +} + +/* MOVEaSR */ +OPCODE(0x46D0) +{ + u32 adr, res; + + if (flag_S) + { + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(16) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(16) +} + +/* MOVEaSR */ +OPCODE(0x46D8) +{ + u32 adr, res; + + if (flag_S) + { + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(16) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(16) +} + +/* MOVEaSR */ +OPCODE(0x46E0) +{ + u32 adr, res; + + if (flag_S) + { + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(18) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(18) +} + +/* MOVEaSR */ +OPCODE(0x46E8) +{ + u32 adr, res; + + if (flag_S) + { + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(20) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(20) +} + +/* MOVEaSR */ +OPCODE(0x46F0) +{ + u32 adr, res; + + if (flag_S) + { + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(22) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(22) +} + + +/* MOVEaSR */ +OPCODE(0x46F8) +{ + u32 adr, res; + + if (flag_S) + { + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(20) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(20) +} + +/* MOVEaSR */ +OPCODE(0x46F9) +{ + u32 adr, res; + + if (flag_S) + { + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(24) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(24) +} + +/* MOVEaSR */ +OPCODE(0x46FA) +{ + u32 adr, res; + + if (flag_S) + { + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(24) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(20) +} + +/* MOVEaSR */ +OPCODE(0x46FB) +{ + u32 adr, res; + + if (flag_S) + { + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(22) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(22) +} + +/* MOVEaSR */ +OPCODE(0x46FC) +{ + u32 res; + + if (flag_S) + { + FETCH_WORD(res); + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(16) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(16) +} + +/* MOVEaSR */ +OPCODE(0x46DF) +{ + u32 adr, res; + + if (flag_S) + { + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(16) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(16) +} + +/* MOVEaSR */ +OPCODE(0x46E7) +{ + u32 adr, res; + + if (flag_S) + { + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + CHECK_INT_TO_JUMP(18) + } + else + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + RET(18) +} + +/* NBCD */ +OPCODE(0x4800) +{ + u32 res; + + res = DREGu8((Opcode >> 0) & 7); + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(6) +} + +/* NBCD */ +OPCODE(0x4810) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(12) +} + +/* NBCD */ +OPCODE(0x4818) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(12) +} + +/* NBCD */ +OPCODE(0x4820) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(14) +} + +/* NBCD */ +OPCODE(0x4828) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(16) +} + +/* NBCD */ +OPCODE(0x4830) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(18) +} + +/* NBCD */ +OPCODE(0x4838) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(16) +} + +/* NBCD */ +OPCODE(0x4839) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(20) +} + +/* NBCD */ +OPCODE(0x481F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(12) +} + +/* NBCD */ +OPCODE(0x4827) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res = 0x9a - res - ((flag_X >> M68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + flag_NotZ |= res; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_N = res; + RET(14) +} + +/* PEA */ +OPCODE(0x4850) +{ + u32 adr; + + adr = AREG((Opcode >> 0) & 7); + PUSH_32_F(adr) + RET(12) +} + +/* PEA */ +OPCODE(0x4868) +{ + u32 adr; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + PUSH_32_F(adr) + RET(16) +} + +/* PEA */ +OPCODE(0x4870) +{ + u32 adr; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + PUSH_32_F(adr) + RET(20) +} + +/* PEA */ +OPCODE(0x4878) +{ + u32 adr; + + FETCH_SWORD(adr); + PUSH_32_F(adr) + RET(16) +} + +/* PEA */ +OPCODE(0x4879) +{ + u32 adr; + + FETCH_LONG(adr); + PUSH_32_F(adr) + RET(20) +} + +/* PEA */ +OPCODE(0x487A) +{ + u32 adr; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + PUSH_32_F(adr) + RET(16) +} + +/* PEA */ +OPCODE(0x487B) +{ + u32 adr; + + adr = UNBASED_PC; + DECODE_EXT_WORD + PUSH_32_F(adr) + RET(20) +} + +/* SWAP */ +OPCODE(0x4840) +{ + u32 res; + + res = DREGu32((Opcode >> 0) & 7); + res = (res >> 16) | (res << 16); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(4) +} + +/* MOVEMRa */ +OPCODE(0x4890) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(8) +} + +/* MOVEMRa */ +OPCODE(0x48A0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &AREGu32(7); + dst = adr; + do + { + if (res & 1) + { + adr -= 2; + WRITE_WORD_F(adr, *psrc) + } + psrc--; + } + while (res >>= 1); + AREG((Opcode >> 0) & 7) = adr; + io_cycle_counter -= (dst - adr) * 2; + RET(8) +} + +/* MOVEMRa */ +OPCODE(0x48A8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMRa */ +OPCODE(0x48B0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(14) +} + +/* MOVEMRa */ +OPCODE(0x48B8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMRa */ +OPCODE(0x48B9) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_LONG(adr); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMRa */ +OPCODE(0x48A7) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG(7); + psrc = &AREGu32(7); + dst = adr; + do + { + if (res & 1) + { + adr -= 2; + WRITE_WORD_F(adr, *psrc) + } + psrc--; + } + while (res >>= 1); + AREG(7) = adr; + io_cycle_counter -= (dst - adr) * 2; + RET(8) +} + +/* MOVEMRa */ +OPCODE(0x48D0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(8) +} + +/* MOVEMRa */ +OPCODE(0x48E0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &AREGu32(7); + dst = adr; + do + { + if (res & 1) + { + adr -= 4; + WRITE_LONG_DEC_F(adr, *psrc) + } + psrc--; + } + while (res >>= 1); + AREG((Opcode >> 0) & 7) = adr; + io_cycle_counter -= (dst - adr) * 2; + RET(8) +} + +/* MOVEMRa */ +OPCODE(0x48E8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMRa */ +OPCODE(0x48F0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(14) +} + +/* MOVEMRa */ +OPCODE(0x48F8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMRa */ +OPCODE(0x48F9) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_LONG(adr); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + WRITE_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMRa */ +OPCODE(0x48E7) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG(7); + psrc = &AREGu32(7); + dst = adr; + do + { + if (res & 1) + { + adr -= 4; + WRITE_LONG_DEC_F(adr, *psrc) + } + psrc--; + } + while (res >>= 1); + AREG(7) = adr; + io_cycle_counter -= (dst - adr) * 2; + RET(8) +} + +/* EXT */ +OPCODE(0x4880) +{ + u32 res; + + res = (s32)DREGs8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* EXT */ +OPCODE(0x48C0) +{ + u32 res; + + res = (s32)DREGs16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu32((Opcode >> 0) & 7) = res; + RET(4) +} + +/* TST */ +OPCODE(0x4A00) +{ + u32 res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + RET(4) +} + +/* TST */ +OPCODE(0x4A10) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(8) +} + +/* TST */ +OPCODE(0x4A18) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(8) +} + +/* TST */ +OPCODE(0x4A20) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(10) +} + +/* TST */ +OPCODE(0x4A28) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(12) +} + +/* TST */ +OPCODE(0x4A30) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(14) +} + +/* TST */ +OPCODE(0x4A38) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(12) +} + +/* TST */ +OPCODE(0x4A39) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(16) +} + +/* TST */ +OPCODE(0x4A1F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(8) +} + +/* TST */ +OPCODE(0x4A27) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 + RET(10) +} + +/* TST */ +OPCODE(0x4A40) +{ + u32 res; + + res = DREGu16((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(4) +} + +/* TST */ +OPCODE(0x4A50) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(8) +} + +/* TST */ +OPCODE(0x4A58) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(8) +} + +/* TST */ +OPCODE(0x4A60) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(10) +} + +/* TST */ +OPCODE(0x4A68) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(12) +} + +/* TST */ +OPCODE(0x4A70) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(14) +} + +/* TST */ +OPCODE(0x4A78) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(12) +} + +/* TST */ +OPCODE(0x4A79) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(16) +} + +/* TST */ +OPCODE(0x4A5F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(8) +} + +/* TST */ +OPCODE(0x4A67) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + RET(10) +} + +/* TST */ +OPCODE(0x4A80) +{ + u32 res; + + res = DREGu32((Opcode >> 0) & 7); + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(4) +} + +/* TST */ +OPCODE(0x4A90) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(12) +} + +/* TST */ +OPCODE(0x4A98) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(12) +} + +/* TST */ +OPCODE(0x4AA0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(14) +} + +/* TST */ +OPCODE(0x4AA8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(16) +} + +/* TST */ +OPCODE(0x4AB0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(18) +} + +/* TST */ +OPCODE(0x4AB8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(16) +} + +/* TST */ +OPCODE(0x4AB9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(20) +} + +/* TST */ +OPCODE(0x4A9F) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(12) +} + +/* TST */ +OPCODE(0x4AA7) +{ + u32 adr, res; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + RET(14) +} + +/* TAS */ +OPCODE(0x4AC0) +{ + u32 res; + + res = DREGu8((Opcode >> 0) & 7); + SET_FLAGS_NZ_VC0 + res |= 0x80; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* TAS */ +OPCODE(0x4AD0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(18) +} + +/* TAS */ +OPCODE(0x4AD8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(18) +} + +/* TAS */ +OPCODE(0x4AE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(20) +} + +/* TAS */ +OPCODE(0x4AE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(22) +} + +/* TAS */ +OPCODE(0x4AF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(24) +} + +/* TAS */ +OPCODE(0x4AF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(22) +} + +/* TAS */ +OPCODE(0x4AF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(26) +} + +/* TAS */ +OPCODE(0x4ADF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(18) +} + +/* TAS */ +OPCODE(0x4AE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + SET_FLAGS_NZ_VC0 +#ifndef FAME_BYPASS_TAS_WRITEBACK + WRITE_BYTE_F(adr, res|0x80) +#endif + RET(20) +} + +/* ILLEGAL */ +OPCODE(0x4AFC) +{ + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_ILLEGAL_INSTRUCTION_EX); + RET(0) +} + +/* ILLEGAL A000-AFFF */ +OPCODE(0xA000) +{ + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_1010_EX); + RET(0) +} + +/* ILLEGAL F000-FFFF */ +OPCODE(0xF000) +{ + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_1111_EX); + RET(0) +} + +/* MOVEMaR */ +OPCODE(0x4C90) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMaR */ +OPCODE(0x4C98) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + AREG((Opcode >> 0) & 7) = adr; + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMaR */ +OPCODE(0x4CA8) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMaR */ +OPCODE(0x4CB0) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(18) +} + +/* MOVEMaR */ +OPCODE(0x4CB8) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMaR */ +OPCODE(0x4CB9) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + FETCH_LONG(adr); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(20) +} + +/* MOVEMaR */ +OPCODE(0x4CBA) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMaR */ +OPCODE(0x4CBB) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + adr = UNBASED_PC; + DECODE_EXT_WORD + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(18) +} + +/* MOVEMaR */ +OPCODE(0x4C9F) +{ + u32 adr, res; + u32 dst; + + s32 *psrc; + + FETCH_WORD(res); + adr = AREG(7); + psrc = &DREGs32(0); + dst = adr; + do + { + if (res & 1) + { + READSX_WORD_F(adr, *psrc) + adr += 2; + } + psrc++; + } + while (res >>= 1); + AREG(7) = adr; + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMaR */ +OPCODE(0x4CD0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMaR */ +OPCODE(0x4CD8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + AREG((Opcode >> 0) & 7) = adr; + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* MOVEMaR */ +OPCODE(0x4CE8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMaR */ +OPCODE(0x4CF0) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(18) +} + +/* MOVEMaR */ +OPCODE(0x4CF8) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_SWORD(adr); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMaR */ +OPCODE(0x4CF9) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + FETCH_LONG(adr); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(20) +} + +/* MOVEMaR */ +OPCODE(0x4CFA) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(16) +} + +/* MOVEMaR */ +OPCODE(0x4CFB) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = UNBASED_PC; + DECODE_EXT_WORD + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + io_cycle_counter -= (adr - dst) * 2; + RET(18) +} + +/* MOVEMaR */ +OPCODE(0x4CDF) +{ + u32 adr, res; + u32 dst; + + u32 *psrc; + + FETCH_WORD(res); + adr = AREG(7); + psrc = &DREGu32(0); + dst = adr; + do + { + if (res & 1) + { + READ_LONG_F(adr, *psrc) + adr += 4; + } + psrc++; + } + while (res >>= 1); + AREG(7) = adr; + io_cycle_counter -= (adr - dst) * 2; + RET(12) +} + +/* TRAP */ +OPCODE(0x4E40) +{ + execute_exception(M68K_TRAP_BASE_EX + (Opcode & 0xF)); + RET(4) +} + +/* LINK */ +OPCODE(0x4E50) +{ + u32 res; + + res = AREGu32((Opcode >> 0) & 7); + PUSH_32_F(res) + res = AREG(7); + AREG((Opcode >> 0) & 7) = res; + FETCH_SWORD(res); + AREG(7) += res; + RET(16) +} + +/* LINKA7 */ +OPCODE(0x4E57) +{ + u32 res; + + AREG(7) -= 4; + WRITE_LONG_DEC_F(AREG(7), AREG(7)) + FETCH_SWORD(res); + AREG(7) += res; + RET(16) +} + +/* ULNK */ +OPCODE(0x4E58) +{ + u32 res; + u32 src; + + src = AREGu32((Opcode >> 0) & 7); + AREG(7) = src + 4; + READ_LONG_F(src, res) + AREG((Opcode >> 0) & 7) = res; + RET(12) +} + +/* ULNKA7 */ +OPCODE(0x4E5F) +{ + + READ_LONG_F(AREG(7), AREG(7)) + RET(12) +} + +/* MOVEAUSP */ +OPCODE(0x4E60) +{ + u32 res; + + if (!flag_S) + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + res = AREGu32((Opcode >> 0) & 7); + ASP = res; + RET(4) +} + +/* MOVEUSPA */ +OPCODE(0x4E68) +{ + u32 res; + + if (!flag_S) + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + res = ASP; + AREG((Opcode >> 0) & 7) = res; + RET(4) +} + +/* RESET */ +OPCODE(0x4E70) +{ + + if (!flag_S) + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + if (FAME_CONTEXT.reset_handler) + (*FAME_CONTEXT.reset_handler)(); + /* CPU->Reset_CallBack(); */ + RET(132) +} + +/* NOP */ +OPCODE(0x4E71) +{ + + RET(4) +} + +/* STOP */ +OPCODE(0x4E72) +{ + u32 res; + + if (!flag_S) + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + FETCH_WORD(res); + res &= M68K_SR_MASK; + SET_SR(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + FAME_CONTEXT.execinfo |= M68K_HALTED; + CHECK_INT_TO_JUMP(4) + RET_STOP(4) +} + +/* RTE */ +OPCODE(0x4E73) +{ + u32 res; + + if (!flag_S) + { + u32 oldPC=UNBASED_PC; + SET_PC(oldPC-2) + execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + RET(4) + } + POP_16_F(res) + SET_SR(res) + POP_32_F(res) + SET_PC(res) + if (!flag_S) + { + res = AREG(7); + AREG(7) = ASP; + ASP = res; + } + FAME_CONTEXT.execinfo &= ~(M68K_EMULATE_GROUP_0|M68K_EMULATE_TRACE|M68K_DO_TRACE); + CHECK_INT_TO_JUMP(20) + RET(20) +} + +/* RTS */ +OPCODE(0x4E75) +{ + u32 res; + + POP_32_F(res) + SET_PC(res) + CHECK_BRANCH_EXCEPTION(res) + RET(16) +} + +/* TRAPV */ +OPCODE(0x4E76) +{ + if (flag_V & 0x80) + execute_exception(M68K_TRAPV_EX); + RET(4) +} + +/* RTR */ +OPCODE(0x4E77) +{ + u32 res; + + POP_16_F(res) + SET_CCR(res) + POP_32_F(res) + SET_PC(res) + CHECK_BRANCH_EXCEPTION(res) + RET(20) +} + +/* JSR */ +OPCODE(0x4E90) +{ + u32 adr; + + adr = AREG((Opcode >> 0) & 7); + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(16) +} + +/* JSR */ +OPCODE(0x4EA8) +{ + u32 adr; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(18) +} + +/* JSR */ +OPCODE(0x4EB0) +{ + u32 adr; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(22) +} + +/* JSR */ +OPCODE(0x4EB8) +{ + u32 adr; + + FETCH_SWORD(adr); + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(18) +} + +/* JSR */ +OPCODE(0x4EB9) +{ + u32 adr; + + FETCH_LONG(adr); + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(20) +} + +/* JSR */ +OPCODE(0x4EBA) +{ + u32 adr; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(18) +} + +/* JSR */ +OPCODE(0x4EBB) +{ + u32 adr; + + adr = UNBASED_PC; + DECODE_EXT_WORD + { + u32 oldPC; + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) + } + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(22) +} + +/* JMP */ +OPCODE(0x4ED0) +{ + u32 adr; + + adr = AREG((Opcode >> 0) & 7); + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(8) +} + +/* JMP */ +OPCODE(0x4EE8) +{ + u32 adr; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(10) +} + +/* JMP */ +OPCODE(0x4EF0) +{ + u32 adr; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(14) +} + +/* JMP */ +OPCODE(0x4EF8) +{ + u32 adr; + + FETCH_SWORD(adr); + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(10) +} + +/* JMP */ +OPCODE(0x4EF9) +{ + u32 adr; + + FETCH_LONG(adr); + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(12) +} + +/* JMP */ +OPCODE(0x4EFA) +{ + u32 adr; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(10) +} + +/* JMP */ +OPCODE(0x4EFB) +{ + u32 adr; + + adr = UNBASED_PC; + DECODE_EXT_WORD + SET_PC(adr) + CHECK_BRANCH_EXCEPTION(adr) + RET(14) +} + +/* CHK */ +OPCODE(0x4180) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(10) +} + +/* CHK */ +OPCODE(0x4190) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(14) +} + +/* CHK */ +OPCODE(0x4198) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(14) +} + +/* CHK */ +OPCODE(0x41A0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(16) +} + +/* CHK */ +OPCODE(0x41A8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(18) +} + +/* CHK */ +OPCODE(0x41B0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(20) +} + +/* CHK */ +OPCODE(0x41B8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(18) +} + +/* CHK */ +OPCODE(0x41B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(22) +} + +/* CHK */ +OPCODE(0x41BA) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(18) +} + +/* CHK */ +OPCODE(0x41BB) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(20) +} + +/* CHK */ +OPCODE(0x41BC) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(14) +} + +/* CHK */ +OPCODE(0x419F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(14) +} + +/* CHK */ +OPCODE(0x41A7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + if (((s32)res < 0) || (res > src)) + { + flag_N = res >> 8; + execute_exception(M68K_CHK_EX); + } + RET(16) +} + +/* LEA */ +OPCODE(0x41D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(4) +} + +/* LEA */ +OPCODE(0x41E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* LEA */ +OPCODE(0x41F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* LEA */ +OPCODE(0x41F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* LEA */ +OPCODE(0x41F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* LEA */ +OPCODE(0x41FA) +{ + u32 adr, res; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* LEA */ +OPCODE(0x41FB) +{ + u32 adr, res; + + adr = UNBASED_PC; + DECODE_EXT_WORD + res = adr; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* STCC */ +OPCODE(0x50C0) +{ + u32 res; + + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* STCC */ +OPCODE(0x51C0) +{ + u32 res; + + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x52C0) +{ + u32 res; + + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x53C0) +{ + u32 res; + + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x54C0) +{ + u32 res; + + if (!(flag_C & 0x100)) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x55C0) +{ + u32 res; + + if (flag_C & 0x100) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x56C0) +{ + u32 res; + + if (flag_NotZ) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x57C0) +{ + u32 res; + + if (!flag_NotZ) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x58C0) +{ + u32 res; + + if (!(flag_V & 0x80)) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x59C0) +{ + u32 res; + + if (flag_V & 0x80) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x5AC0) +{ + u32 res; + + if (!(flag_N & 0x80)) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x5BC0) +{ + u32 res; + + if (flag_N & 0x80) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x5CC0) +{ + u32 res; + + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x5DC0) +{ + u32 res; + + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x5EC0) +{ + u32 res; + + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x5FC0) +{ + u32 res; + + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* STCC */ +OPCODE(0x50D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x51D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x52D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x53D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x54D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x55D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x56D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x57D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x58D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x59D0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5AD0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5BD0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5CD0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5DD0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5ED0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5FD0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x50D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x51D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x52D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x53D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x54D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x55D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x56D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x57D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x58D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x59D8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5AD8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5BD8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5CD8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5DD8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5ED8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5FD8) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x50E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x51E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x52E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x53E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x54E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x55E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x56E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x57E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x58E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x59E0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5AE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5BE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5CE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5DE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5EE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5FE0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x50E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x51E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x52E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x53E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x54E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x55E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x56E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x57E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x58E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x59E8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5AE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5BE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5CE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5DE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5EE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5FE8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x50F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x51F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x52F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x53F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x54F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x55F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x56F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x57F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x58F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x59F0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x5AF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x5BF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x5CF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x5DF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x5EF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x5FF0) +{ + u32 adr, res; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* STCC */ +OPCODE(0x50F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x51F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x52F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x53F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x54F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x55F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x56F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x57F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x58F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x59F8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5AF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5BF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5CF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5DF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5EF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x5FF8) +{ + u32 adr, res; + + FETCH_SWORD(adr); + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* STCC */ +OPCODE(0x50F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x51F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x52F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x53F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x54F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x55F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x56F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x57F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x58F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x59F9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x5AF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x5BF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x5CF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x5DF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x5EF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x5FF9) +{ + u32 adr, res; + + FETCH_LONG(adr); + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* STCC */ +OPCODE(0x50DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x51DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x52DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x53DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x54DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x55DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x56DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x57DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x58DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x59DF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5ADF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5BDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5CDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5DDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5EDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x5FDF) +{ + u32 adr, res; + + adr = AREG(7); + AREG(7) += 2; + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* STCC */ +OPCODE(0x50E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x51E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x52E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x53E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x54E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (!(flag_C & 0x100)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x55E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (flag_C & 0x100) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x56E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x57E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (!flag_NotZ) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x58E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (!(flag_V & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x59E7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (flag_V & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5AE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (!(flag_N & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5BE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (flag_N & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5CE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (!((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5DE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if ((flag_N ^ flag_V) & 0x80) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5EE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* STCC */ +OPCODE(0x5FE7) +{ + u32 adr, res; + + adr = AREG(7) - 2; + AREG(7) = adr; + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* DBCC */ +OPCODE(0x50C8) +{ + + INC_PC(2); + RET(12) +} + +/* DBCC */ +OPCODE(0x51C8) +{ + u32 res; + + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x52C8) +{ + u32 res; + + if ((!flag_NotZ) || (flag_C & 0x100)) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x53C8) +{ + u32 res; + + if (flag_NotZ && (!(flag_C & 0x100))) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x54C8) +{ + u32 res; + + if (flag_C & 0x100) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x55C8) +{ + u32 res; + + if (!(flag_C & 0x100)) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x56C8) +{ + u32 res; + + if (!flag_NotZ) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x57C8) +{ + u32 res; + + if (flag_NotZ) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x58C8) +{ + u32 res; + + if (flag_V & 0x80) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x59C8) +{ + u32 res; + + if (!(flag_V & 0x80)) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x5AC8) +{ + u32 res; + + if (flag_N & 0x80) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x5BC8) +{ + u32 res; + + if (!(flag_N & 0x80)) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x5CC8) +{ + u32 res; + + if ((flag_N ^ flag_V) & 0x80) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x5DC8) +{ + u32 res; + + if (!((flag_N ^ flag_V) & 0x80)) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x5EC8) +{ + u32 res; + + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* DBCC */ +OPCODE(0x5FC8) +{ + u32 res; + + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + res = DREGu16((Opcode >> 0) & 7); + res--; + DREGu16((Opcode >> 0) & 7) = res; + if ((s32)res != -1) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + } + else + { + INC_PC(2); + RET(12) + } + INC_PC(2); + RET(14) +} + +/* ADDQ */ +OPCODE(0x5000) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = DREGu8((Opcode >> 0) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* ADDQ */ +OPCODE(0x5010) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ADDQ */ +OPCODE(0x5018) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ADDQ */ +OPCODE(0x5020) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ADDQ */ +OPCODE(0x5028) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDQ */ +OPCODE(0x5030) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDQ */ +OPCODE(0x5038) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDQ */ +OPCODE(0x5039) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ADDQ */ +OPCODE(0x501F) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ADDQ */ +OPCODE(0x5027) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ADDQ */ +OPCODE(0x5040) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = DREGu16((Opcode >> 0) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* ADDQ */ +OPCODE(0x5048) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = AREGu32((Opcode >> 0) & 7); + res = dst + src; + AREG((Opcode >> 0) & 7) = res; + RET(4) +} + +/* ADDQ */ +OPCODE(0x5050) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ADDQ */ +OPCODE(0x5058) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ADDQ */ +OPCODE(0x5060) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ADDQ */ +OPCODE(0x5068) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDQ */ +OPCODE(0x5070) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDQ */ +OPCODE(0x5078) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDQ */ +OPCODE(0x5079) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ADDQ */ +OPCODE(0x505F) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ADDQ */ +OPCODE(0x5067) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ADDQ */ +OPCODE(0x5080) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = DREGu32((Opcode >> 0) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ADDQ */ +OPCODE(0x5088) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = AREGu32((Opcode >> 0) & 7); + res = dst + src; + AREG((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ADDQ */ +OPCODE(0x5090) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ADDQ */ +OPCODE(0x5098) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ADDQ */ +OPCODE(0x50A0) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* ADDQ */ +OPCODE(0x50A8) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ADDQ */ +OPCODE(0x50B0) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* ADDQ */ +OPCODE(0x50B8) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ADDQ */ +OPCODE(0x50B9) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ADDQ */ +OPCODE(0x509F) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ADDQ */ +OPCODE(0x50A7) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* SUBQ */ +OPCODE(0x5100) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = DREGu8((Opcode >> 0) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* SUBQ */ +OPCODE(0x5110) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* SUBQ */ +OPCODE(0x5118) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* SUBQ */ +OPCODE(0x5120) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* SUBQ */ +OPCODE(0x5128) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBQ */ +OPCODE(0x5130) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBQ */ +OPCODE(0x5138) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBQ */ +OPCODE(0x5139) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* SUBQ */ +OPCODE(0x511F) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* SUBQ */ +OPCODE(0x5127) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* SUBQ */ +OPCODE(0x5140) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = DREGu16((Opcode >> 0) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* SUBQ */ +OPCODE(0x5148) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = AREGu32((Opcode >> 0) & 7); + res = dst - src; + AREG((Opcode >> 0) & 7) = res; + RET(8) +} + +/* SUBQ */ +OPCODE(0x5150) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* SUBQ */ +OPCODE(0x5158) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* SUBQ */ +OPCODE(0x5160) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* SUBQ */ +OPCODE(0x5168) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBQ */ +OPCODE(0x5170) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBQ */ +OPCODE(0x5178) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBQ */ +OPCODE(0x5179) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* SUBQ */ +OPCODE(0x515F) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* SUBQ */ +OPCODE(0x5167) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* SUBQ */ +OPCODE(0x5180) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = DREGu32((Opcode >> 0) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* SUBQ */ +OPCODE(0x5188) +{ + u32 res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = AREGu32((Opcode >> 0) & 7); + res = dst - src; + AREG((Opcode >> 0) & 7) = res; + RET(8) +} + +/* SUBQ */ +OPCODE(0x5190) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* SUBQ */ +OPCODE(0x5198) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* SUBQ */ +OPCODE(0x51A0) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* SUBQ */ +OPCODE(0x51A8) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* SUBQ */ +OPCODE(0x51B0) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* SUBQ */ +OPCODE(0x51B8) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* SUBQ */ +OPCODE(0x51B9) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* SUBQ */ +OPCODE(0x519F) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* SUBQ */ +OPCODE(0x51A7) +{ + u32 adr, res; + u32 src, dst; + + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* BCC */ +OPCODE(0x6201) +{ + + if (flag_NotZ && (!(flag_C & 0x100))) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6301) +{ + + if ((!flag_NotZ) || (flag_C & 0x100)) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6401) +{ + + if (!(flag_C & 0x100)) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6501) +{ + + if (flag_C & 0x100) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6601) +{ + + if (flag_NotZ) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6701) +{ + + if (!flag_NotZ) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6801) +{ + + if (!(flag_V & 0x80)) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6901) +{ + + if (flag_V & 0x80) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6A01) +{ + + if (!(flag_N & 0x80)) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6B01) +{ + + if (flag_N & 0x80) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6C01) +{ + + if (!((flag_N ^ flag_V) & 0x80)) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6D01) +{ + + if ((flag_N ^ flag_V) & 0x80) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6E01) +{ + + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC */ +OPCODE(0x6F01) +{ + + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + INC_PC((s8)(Opcode & 0xFE)); + io_cycle_counter -= 2; + } + RET(8) +} + +/* BCC16 */ +OPCODE(0x6200) +{ + + if (flag_NotZ && (!(flag_C & 0x100))) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6300) +{ + + if ((!flag_NotZ) || (flag_C & 0x100)) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6400) +{ + + if (!(flag_C & 0x100)) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6500) +{ + + if (flag_C & 0x100) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6600) +{ + + if (flag_NotZ) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6700) +{ + + if (!flag_NotZ) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6800) +{ + + if (!(flag_V & 0x80)) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6900) +{ + + if (flag_V & 0x80) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6A00) +{ + + if (!(flag_N & 0x80)) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6B00) +{ + + if (flag_N & 0x80) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6C00) +{ + + if (!((flag_N ^ flag_V) & 0x80)) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6D00) +{ + + if ((flag_N ^ flag_V) & 0x80) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6E00) +{ + + if (flag_NotZ && (!((flag_N ^ flag_V) & 0x80))) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BCC16 */ +OPCODE(0x6F00) +{ + + if ((!flag_NotZ) || ((flag_N ^ flag_V) & 0x80)) + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + RET(10) + } + INC_PC(2); + RET(12) +} + +/* BRA */ +OPCODE(0x6001) +{ +#ifdef FAME_CHECK_BRANCHES + u32 newPC = UNBASED_PC; + s8 offs=Opcode; + newPC += offs; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(offs) +#else + INC_PC((s8)(Opcode & 0xFE)); +#endif + RET(10) +} + +/* BRA16 */ +OPCODE(0x6000) +{ + + { + u32 newPC; + + newPC = UNBASED_PC; + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + } + RET(10) +} + +/* BSR */ +OPCODE(0x6101) +{ + u32 oldPC; + + + oldPC = UNBASED_PC; + PUSH_32_F(oldPC) +#ifdef FAME_CHECK_BRANCHES + { + s8 offs; + offs = Opcode; + oldPC += offs; + SET_PC(oldPC); + CHECK_BRANCH_EXCEPTION(offs) + } +#else + INC_PC((s8)(Opcode & 0xFE)); +#endif + RET(18) +} + +/* BSR16 */ +OPCODE(0x6100) +{ + + { + u32 oldPC, newPC; + + newPC = UNBASED_PC; + oldPC = newPC + 2; + PUSH_32_F(oldPC) + newPC += GET_SWORD; + SET_PC(newPC); + CHECK_BRANCH_EXCEPTION(newPC) + } + RET(18) +} + +/* MOVEQ */ +OPCODE(0x7000) +{ + u32 res; + + res = (s32)(s8)Opcode; + flag_C = flag_V = 0; + flag_N = flag_NotZ = res; + DREGu32((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ORaD */ +OPCODE(0x8000) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 0) & 7); + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ORaD */ +OPCODE(0x8010) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8018) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8020) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ORaD */ +OPCODE(0x8028) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ORaD */ +OPCODE(0x8030) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x8038) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ORaD */ +OPCODE(0x8039) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ORaD */ +OPCODE(0x803A) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ORaD */ +OPCODE(0x803B) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x803C) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x801F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8027) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ORaD */ +OPCODE(0x8040) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ORaD */ +OPCODE(0x8050) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8058) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8060) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ORaD */ +OPCODE(0x8068) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ORaD */ +OPCODE(0x8070) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x8078) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ORaD */ +OPCODE(0x8079) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ORaD */ +OPCODE(0x807A) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ORaD */ +OPCODE(0x807B) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x807C) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x805F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8067) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ORaD */ +OPCODE(0x8080) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 0) & 7); + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ORaD */ +OPCODE(0x8090) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x8098) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x80A0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ORaD */ +OPCODE(0x80A8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ORaD */ +OPCODE(0x80B0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ORaD */ +OPCODE(0x80B8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ORaD */ +OPCODE(0x80B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(22) +} + +/* ORaD */ +OPCODE(0x80BA) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ORaD */ +OPCODE(0x80BB) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ORaD */ +OPCODE(0x80BC) +{ + u32 res; + u32 src; + + FETCH_LONG(src); + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ORaD */ +OPCODE(0x809F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ORaD */ +OPCODE(0x80A7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ORDa */ +OPCODE(0x8110) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ORDa */ +OPCODE(0x8118) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ORDa */ +OPCODE(0x8120) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ORDa */ +OPCODE(0x8128) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ORDa */ +OPCODE(0x8130) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ORDa */ +OPCODE(0x8138) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ORDa */ +OPCODE(0x8139) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ORDa */ +OPCODE(0x811F) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ORDa */ +OPCODE(0x8127) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res |= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ORDa */ +OPCODE(0x8150) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ORDa */ +OPCODE(0x8158) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ORDa */ +OPCODE(0x8160) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ORDa */ +OPCODE(0x8168) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ORDa */ +OPCODE(0x8170) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ORDa */ +OPCODE(0x8178) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ORDa */ +OPCODE(0x8179) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ORDa */ +OPCODE(0x815F) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ORDa */ +OPCODE(0x8167) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ORDa */ +OPCODE(0x8190) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ORDa */ +OPCODE(0x8198) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ORDa */ +OPCODE(0x81A0) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* ORDa */ +OPCODE(0x81A8) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ORDa */ +OPCODE(0x81B0) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* ORDa */ +OPCODE(0x81B8) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ORDa */ +OPCODE(0x81B9) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ORDa */ +OPCODE(0x819F) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ORDa */ +OPCODE(0x81A7) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + res |= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* SBCD */ +OPCODE(0x8100) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + DREGu8((Opcode >> 9) & 7) = res; + RET(6) +} + +/* SBCDM */ +OPCODE(0x8108) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SBCD7M */ +OPCODE(0x810F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SBCDM7 */ +OPCODE(0x8F08) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SBCD7M7 */ +OPCODE(0x8F0F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* DIVU */ +OPCODE(0x80C0) +{ + u32 res; + u32 src, dst; + const u32 main_ea_cycles = 0; + + src = DREGu16((Opcode >> 0) & 7); + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(106) +#endif +} + +/* DIVU */ +OPCODE(0x80D0) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(110) +#endif +} + +/* DIVU */ +OPCODE(0x80D8) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(110) +#endif +} + +/* DIVU */ +OPCODE(0x80E0) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 6; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(112) +#endif +} + +/* DIVU */ +OPCODE(0x80E8) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 8; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(114) +#endif +} + +/* DIVU */ +OPCODE(0x80F0) +{ + u32 adr, res; + u32 src, dst; + u32 main_ea_cycles = 10; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(116) +#endif +} + +/* DIVU */ +OPCODE(0x80F8) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 8; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(114) +#endif +} + +/* DIVU */ +OPCODE(0x80F9) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 12; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(118) +#endif +} + +/* DIVU */ +OPCODE(0x80FA) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 8; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(114) +#endif +} + +/* DIVU */ +OPCODE(0x80FB) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 10; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(116) +#endif +} + +/* DIVU */ +OPCODE(0x80FC) +{ + u32 res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + FETCH_WORD(src); + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(110) +#endif +} + +/* DIVU */ +OPCODE(0x80DF) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(110) +#endif +} + +/* DIVU */ +OPCODE(0x80E7) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 6; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + SET_FLAGS_DIV_OVERFLOW + RET(main_ea_cycles + 10) + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivu68kCycles(dst, src)) +#else + RET(112) +#endif +} + +/* DIVS */ +OPCODE(0x81C0) +{ + u32 res; + u32 src, dst; + const u32 main_ea_cycles = 0; + + src = (s32)DREGs16((Opcode >> 0) & 7); + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(50) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(139) +#endif +} + +/* DIVS */ +OPCODE(0x81D0) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + adr = AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(54) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(143) +#endif +} + +/* DIVS */ +OPCODE(0x81D8) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(54) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(143) +#endif +} + +/* DIVS */ +OPCODE(0x81E0) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 6; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(56) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(145) +#endif +} + +/* DIVS */ +OPCODE(0x81E8) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 8; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(getDivs68kCycles(dst, src)) +#else + RET(58) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(147) +#endif +} + +/* DIVS */ +OPCODE(0x81F0) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 10; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(60) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(149) +#endif +} + +/* DIVS */ +OPCODE(0x81F8) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 8; + + FETCH_SWORD(adr); + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(58) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(147) +#endif +} + +/* DIVS */ +OPCODE(0x81F9) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 12; + + FETCH_LONG(adr); + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(62) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(151) +#endif +} + +/* DIVS */ +OPCODE(0x81FA) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 8; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(58) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(147) +#endif +} + +/* DIVS */ +OPCODE(0x81FB) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 10; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(60) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(149) +#endif +} + +/* DIVS */ +OPCODE(0x81FC) +{ + u32 res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + FETCH_SWORD(src); + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(54) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(143) +#endif +} + +/* DIVS */ +OPCODE(0x81DF) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 4; + + adr = AREG(7); + AREG(7) += 2; + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(54) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(143) +#endif +} + +/* DIVS */ +OPCODE(0x81E7) +{ + u32 adr, res; + u32 src, dst; + const u32 main_ea_cycles = 6; + + adr = AREG(7) - 2; + AREG(7) = adr; + READSX_WORD_F(adr, src) + if (src == 0) + { + SET_FLAGS_DIV_ZERO + execute_exception(M68K_ZERO_DIVIDE_EX); + RET(main_ea_cycles) + } + dst = DREGu32((Opcode >> 9) & 7); + if ((dst == 0x80000000) && (src == (u32)-1)) + { + flag_NotZ = flag_N = 0; + flag_V = flag_C = 0; + res = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(56) +#endif + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + SET_FLAGS_DIV_OVERFLOW +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + 16 + ((dst & 0x80000000)?2:0)) +#else + RET(main_ea_cycles + 17) +#endif + } + q &= 0x0000FFFF; + flag_NotZ = q; + flag_N = q >> 8; + flag_V = flag_C = 0; + res = q | (r << 16); + DREGu32((Opcode >> 9) & 7) = res; + } +#ifdef FAME_ACCURATE_TIMING + RET(main_ea_cycles + getDivs68kCycles(dst, src)) +#else + RET(145) +#endif +} + +/* SUBaD */ +OPCODE(0x9000) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* SUBaD */ +OPCODE(0x9008) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + */ +#endif + RET(4) +} + +/* SUBaD */ +OPCODE(0x9010) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9018) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9020) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* SUBaD */ +OPCODE(0x9028) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBaD */ +OPCODE(0x9030) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x9038) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBaD */ +OPCODE(0x9039) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBaD */ +OPCODE(0x903A) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBaD */ +OPCODE(0x903B) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x903C) +{ + u32 res; + u32 src, dst; + + FETCH_BYTE(src); + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x901F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9027) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* SUBaD */ +OPCODE(0x9040) +{ + u32 res; + u32 src, dst; + + src = DREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* SUBaD */ +OPCODE(0x9048) +{ + u32 res; + u32 src, dst; + + src = AREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* SUBaD */ +OPCODE(0x9050) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9058) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9060) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* SUBaD */ +OPCODE(0x9068) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBaD */ +OPCODE(0x9070) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x9078) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBaD */ +OPCODE(0x9079) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBaD */ +OPCODE(0x907A) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBaD */ +OPCODE(0x907B) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x907C) +{ + u32 res; + u32 src, dst; + + FETCH_WORD(src); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x905F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9067) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* SUBaD */ +OPCODE(0x9080) +{ + u32 res; + u32 src, dst; + + src = DREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9088) +{ + u32 res; + u32 src, dst; + + src = AREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBaD */ +OPCODE(0x9090) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x9098) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x90A0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBaD */ +OPCODE(0x90A8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBaD */ +OPCODE(0x90B0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* SUBaD */ +OPCODE(0x90B8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBaD */ +OPCODE(0x90B9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(22) +} + +/* SUBaD */ +OPCODE(0x90BA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBaD */ +OPCODE(0x90BB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* SUBaD */ +OPCODE(0x90BC) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBaD */ +OPCODE(0x909F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBaD */ +OPCODE(0x90A7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBDa */ +OPCODE(0x9110) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* SUBDa */ +OPCODE(0x9118) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* SUBDa */ +OPCODE(0x9120) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* SUBDa */ +OPCODE(0x9128) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBDa */ +OPCODE(0x9130) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBDa */ +OPCODE(0x9138) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* SUBDa */ +OPCODE(0x9139) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* SUBDa */ +OPCODE(0x911F) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* SUBDa */ +OPCODE(0x9127) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* SUBDa */ +OPCODE(0x9150) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* SUBDa */ +OPCODE(0x9158) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* SUBDa */ +OPCODE(0x9160) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* SUBDa */ +OPCODE(0x9168) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBDa */ +OPCODE(0x9170) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBDa */ +OPCODE(0x9178) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* SUBDa */ +OPCODE(0x9179) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* SUBDa */ +OPCODE(0x915F) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* SUBDa */ +OPCODE(0x9167) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* SUBDa */ +OPCODE(0x9190) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* SUBDa */ +OPCODE(0x9198) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* SUBDa */ +OPCODE(0x91A0) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* SUBDa */ +OPCODE(0x91A8) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* SUBDa */ +OPCODE(0x91B0) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* SUBDa */ +OPCODE(0x91B8) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* SUBDa */ +OPCODE(0x91B9) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* SUBDa */ +OPCODE(0x919F) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* SUBDa */ +OPCODE(0x91A7) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* SUBX */ +OPCODE(0x9100) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src - ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ |= res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* SUBX */ +OPCODE(0x9140) +{ + u32 res; + u32 src, dst; + + src = DREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src - ((flag_X >> 8) & 1); + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* SUBX */ +OPCODE(0x9180) +{ + u32 res; + u32 src, dst; + + src = DREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBXM */ +OPCODE(0x9108) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBXM */ +OPCODE(0x9148) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBXM */ +OPCODE(0x9188) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* SUBX7M */ +OPCODE(0x910F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBX7M */ +OPCODE(0x914F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBX7M */ +OPCODE(0x918F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* SUBXM7 */ +OPCODE(0x9F08) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBXM7 */ +OPCODE(0x9F48) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBXM7 */ +OPCODE(0x9F88) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* SUBX7M7 */ +OPCODE(0x9F0F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* SUBX7M7 */ +OPCODE(0x9F4F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* SUBX7M7 */ +OPCODE(0x9F8F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst - src - ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* SUBA */ +OPCODE(0x90C0) +{ + u32 res; + u32 src, dst; + + src = (s32)DREGs16((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBA */ +OPCODE(0x90C8) +{ + u32 res; + u32 src, dst; + + src = (s32)AREGs16((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBA */ +OPCODE(0x90D0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBA */ +OPCODE(0x90D8) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBA */ +OPCODE(0x90E0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBA */ +OPCODE(0x90E8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBA */ +OPCODE(0x90F0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBA */ +OPCODE(0x90F8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBA */ +OPCODE(0x90F9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* SUBA */ +OPCODE(0x90FA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBA */ +OPCODE(0x90FB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBA */ +OPCODE(0x90FC) +{ + u32 res; + u32 src, dst; + + FETCH_SWORD(src); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBA */ +OPCODE(0x90DF) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* SUBA */ +OPCODE(0x90E7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBA */ +OPCODE(0x91C0) +{ + u32 res; + u32 src, dst; + + src = (s32)DREGs32((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBA */ +OPCODE(0x91C8) +{ + u32 res; + u32 src, dst; + + src = (s32)AREGs32((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* SUBA */ +OPCODE(0x91D0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBA */ +OPCODE(0x91D8) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBA */ +OPCODE(0x91E0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBA */ +OPCODE(0x91E8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBA */ +OPCODE(0x91F0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* SUBA */ +OPCODE(0x91F8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBA */ +OPCODE(0x91F9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(22) +} + +/* SUBA */ +OPCODE(0x91FA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* SUBA */ +OPCODE(0x91FB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* SUBA */ +OPCODE(0x91FC) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* SUBA */ +OPCODE(0x91DF) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* SUBA */ +OPCODE(0x91E7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* CMP */ +OPCODE(0xB000) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(4) +} + +/* CMP */ +OPCODE(0xB008) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + */ +#endif + RET(4) +} + +/* CMP */ +OPCODE(0xB010) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB018) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB020) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(10) +} + +/* CMP */ +OPCODE(0xB028) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMP */ +OPCODE(0xB030) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(14) +} + +/* CMP */ +OPCODE(0xB038) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMP */ +OPCODE(0xB039) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(16) +} + +/* CMP */ +OPCODE(0xB03A) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMP */ +OPCODE(0xB03B) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(14) +} + +/* CMP */ +OPCODE(0xB03C) +{ + u32 res; + u32 src, dst; + + FETCH_BYTE(src); + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB01F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB027) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(10) +} + +/* CMP */ +OPCODE(0xB040) +{ + u32 res; + u32 src, dst; + + src = DREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(4) +} + +/* CMP */ +OPCODE(0xB048) +{ + u32 res; + u32 src, dst; + + src = AREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(4) +} + +/* CMP */ +OPCODE(0xB050) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB058) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB060) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(10) +} + +/* CMP */ +OPCODE(0xB068) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMP */ +OPCODE(0xB070) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(14) +} + +/* CMP */ +OPCODE(0xB078) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMP */ +OPCODE(0xB079) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(16) +} + +/* CMP */ +OPCODE(0xB07A) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMP */ +OPCODE(0xB07B) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(14) +} + +/* CMP */ +OPCODE(0xB07C) +{ + u32 res; + u32 src, dst; + + FETCH_WORD(src); + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB05F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(8) +} + +/* CMP */ +OPCODE(0xB067) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(10) +} + +/* CMP */ +OPCODE(0xB080) +{ + u32 res; + u32 src, dst; + + src = DREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(6) +} + +/* CMP */ +OPCODE(0xB088) +{ + u32 res; + u32 src, dst; + + src = AREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(6) +} + +/* CMP */ +OPCODE(0xB090) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMP */ +OPCODE(0xB098) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMP */ +OPCODE(0xB0A0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(16) +} + +/* CMP */ +OPCODE(0xB0A8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMP */ +OPCODE(0xB0B0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMP */ +OPCODE(0xB0B8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMP */ +OPCODE(0xB0B9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(22) +} + +/* CMP */ +OPCODE(0xB0BA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMP */ +OPCODE(0xB0BB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMP */ +OPCODE(0xB0BC) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMP */ +OPCODE(0xB09F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMP */ +OPCODE(0xB0A7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(16) +} + +/* CMPM */ +OPCODE(0xB108) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMPM */ +OPCODE(0xB148) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMPM */ +OPCODE(0xB188) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMP7M */ +OPCODE(0xB10F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMP7M */ +OPCODE(0xB14F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMP7M */ +OPCODE(0xB18F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + adr = AREG((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMPM7 */ +OPCODE(0xBF08) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMPM7 */ +OPCODE(0xBF48) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMPM7 */ +OPCODE(0xBF88) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMP7M7 */ +OPCODE(0xBF0F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst - src; + flag_N = flag_C = res; + flag_V = (src ^ dst) & (res ^ dst); + flag_NotZ = res & 0xFF; + RET(12) +} + +/* CMP7M7 */ +OPCODE(0xBF4F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst - src; + flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + flag_N = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + RET(12) +} + +/* CMP7M7 */ +OPCODE(0xBF8F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* EORDa */ +OPCODE(0xB100) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + res = DREGu8((Opcode >> 0) & 7); + res ^= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 0) & 7) = res; + RET(4) +} + +/* EORDa */ +OPCODE(0xB110) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* EORDa */ +OPCODE(0xB118) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* EORDa */ +OPCODE(0xB120) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* EORDa */ +OPCODE(0xB128) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* EORDa */ +OPCODE(0xB130) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* EORDa */ +OPCODE(0xB138) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* EORDa */ +OPCODE(0xB139) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* EORDa */ +OPCODE(0xB11F) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* EORDa */ +OPCODE(0xB127) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res ^= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* EORDa */ +OPCODE(0xB140) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + res = DREGu16((Opcode >> 0) & 7); + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 0) & 7) = res; + RET(4) +} + +/* EORDa */ +OPCODE(0xB150) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* EORDa */ +OPCODE(0xB158) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* EORDa */ +OPCODE(0xB160) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* EORDa */ +OPCODE(0xB168) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* EORDa */ +OPCODE(0xB170) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* EORDa */ +OPCODE(0xB178) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* EORDa */ +OPCODE(0xB179) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* EORDa */ +OPCODE(0xB15F) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* EORDa */ +OPCODE(0xB167) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* EORDa */ +OPCODE(0xB180) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + res = DREGu32((Opcode >> 0) & 7); + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* EORDa */ +OPCODE(0xB190) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* EORDa */ +OPCODE(0xB198) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* EORDa */ +OPCODE(0xB1A0) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* EORDa */ +OPCODE(0xB1A8) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* EORDa */ +OPCODE(0xB1B0) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* EORDa */ +OPCODE(0xB1B8) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* EORDa */ +OPCODE(0xB1B9) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* EORDa */ +OPCODE(0xB19F) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* EORDa */ +OPCODE(0xB1A7) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + res ^= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* CMPA */ +OPCODE(0xB0C0) +{ + u32 res; + u32 src, dst; + + src = (s32)DREGs16((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(6) +} + +/* CMPA */ +OPCODE(0xB0C8) +{ + u32 res; + u32 src, dst; + + src = (s32)AREGs16((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(6) +} + +/* CMPA */ +OPCODE(0xB0D0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(10) +} + +/* CMPA */ +OPCODE(0xB0D8) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(10) +} + +/* CMPA */ +OPCODE(0xB0E0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(12) +} + +/* CMPA */ +OPCODE(0xB0E8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB0F0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(16) +} + +/* CMPA */ +OPCODE(0xB0F8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB0F9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMPA */ +OPCODE(0xB0FA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB0FB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(16) +} + +/* CMPA */ +OPCODE(0xB0FC) +{ + u32 res; + u32 src, dst; + + FETCH_SWORD(src); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(10) +} + +/* CMPA */ +OPCODE(0xB0DF) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(10) +} + +/* CMPA */ +OPCODE(0xB0E7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(12) +} + +/* CMPA */ +OPCODE(0xB1C0) +{ + u32 res; + u32 src, dst; + + src = (s32)DREGs32((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(6) +} + +/* CMPA */ +OPCODE(0xB1C8) +{ + u32 res; + u32 src, dst; + + src = (s32)AREGs32((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(6) +} + +/* CMPA */ +OPCODE(0xB1D0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB1D8) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB1E0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(16) +} + +/* CMPA */ +OPCODE(0xB1E8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMPA */ +OPCODE(0xB1F0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMPA */ +OPCODE(0xB1F8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMPA */ +OPCODE(0xB1F9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(22) +} + +/* CMPA */ +OPCODE(0xB1FA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(18) +} + +/* CMPA */ +OPCODE(0xB1FB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(20) +} + +/* CMPA */ +OPCODE(0xB1FC) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB1DF) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(14) +} + +/* CMPA */ +OPCODE(0xB1E7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst - src; + flag_NotZ = res; + flag_C = ((src & res & 1) + (src >> 1) + (res >> 1)) >> 23; + flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + flag_N = res >> 24; + RET(16) +} + +/* ANDaD */ +OPCODE(0xC000) +{ + u32 res; + u32 src; + + src = DREGu8((Opcode >> 0) & 7); + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ANDaD */ +OPCODE(0xC010) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC018) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC020) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ANDaD */ +OPCODE(0xC028) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ANDaD */ +OPCODE(0xC030) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC038) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ANDaD */ +OPCODE(0xC039) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ANDaD */ +OPCODE(0xC03A) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ANDaD */ +OPCODE(0xC03B) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC03C) +{ + u32 res; + u32 src; + + FETCH_BYTE(src); + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC01F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC027) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + res = DREGu8((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_NZ_VC0 + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ANDaD */ +OPCODE(0xC040) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ANDaD */ +OPCODE(0xC050) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC058) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC060) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ANDaD */ +OPCODE(0xC068) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ANDaD */ +OPCODE(0xC070) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC078) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ANDaD */ +OPCODE(0xC079) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ANDaD */ +OPCODE(0xC07A) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ANDaD */ +OPCODE(0xC07B) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC07C) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC05F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC067) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ANDaD */ +OPCODE(0xC080) +{ + u32 res; + u32 src; + + src = DREGu32((Opcode >> 0) & 7); + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ANDaD */ +OPCODE(0xC090) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC098) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC0A0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ANDaD */ +OPCODE(0xC0A8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ANDaD */ +OPCODE(0xC0B0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ANDaD */ +OPCODE(0xC0B8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ANDaD */ +OPCODE(0xC0B9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(22) +} + +/* ANDaD */ +OPCODE(0xC0BA) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ANDaD */ +OPCODE(0xC0BB) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ANDaD */ +OPCODE(0xC0BC) +{ + u32 res; + u32 src; + + FETCH_LONG(src); + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ANDaD */ +OPCODE(0xC09F) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ANDaD */ +OPCODE(0xC0A7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + res = DREGu32((Opcode >> 9) & 7); + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ANDDa */ +OPCODE(0xC110) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ANDDa */ +OPCODE(0xC118) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ANDDa */ +OPCODE(0xC120) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ANDDa */ +OPCODE(0xC128) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ANDDa */ +OPCODE(0xC130) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ANDDa */ +OPCODE(0xC138) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ANDDa */ +OPCODE(0xC139) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ANDDa */ +OPCODE(0xC11F) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ANDDa */ +OPCODE(0xC127) +{ + u32 adr, res; + u32 src; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, res) + res &= src; + SET_FLAGS_NZ_VC0 + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ANDDa */ +OPCODE(0xC150) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ANDDa */ +OPCODE(0xC158) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ANDDa */ +OPCODE(0xC160) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ANDDa */ +OPCODE(0xC168) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ANDDa */ +OPCODE(0xC170) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ANDDa */ +OPCODE(0xC178) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ANDDa */ +OPCODE(0xC179) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ANDDa */ +OPCODE(0xC15F) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ANDDa */ +OPCODE(0xC167) +{ + u32 adr, res; + u32 src; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 8; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ANDDa */ +OPCODE(0xC190) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ANDDa */ +OPCODE(0xC198) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ANDDa */ +OPCODE(0xC1A0) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* ANDDa */ +OPCODE(0xC1A8) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ANDDa */ +OPCODE(0xC1B0) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* ANDDa */ +OPCODE(0xC1B8) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ANDDa */ +OPCODE(0xC1B9) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ANDDa */ +OPCODE(0xC19F) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ANDDa */ +OPCODE(0xC1A7) +{ + u32 adr, res; + u32 src; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, res) + res &= src; + SET_FLAGS_Z_VC0 + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* ABCD */ +OPCODE(0xC100) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + DREGu8((Opcode >> 9) & 7) = res; + RET(6) +} + +/* ABCDM */ +OPCODE(0xC108) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ABCD7M */ +OPCODE(0xC10F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ABCDM7 */ +OPCODE(0xCF08) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ABCD7M7 */ +OPCODE(0xCF0F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((flag_X >> M68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + flag_X = flag_C = M68K_SR_C; + } + else flag_X = flag_C = 0; + flag_NotZ |= res & 0xFF; + flag_N = res; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* MULU */ +OPCODE(0xC0C0) +{ + u32 res; + u32 src; + + src = DREGu16((Opcode >> 0) & 7); + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(38) +#else + RET(16 + 38) +#endif +} + +/* MULU */ +OPCODE(0xC0D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(42) +#else + RET(16 + 42) +#endif +} + +/* MULU */ +OPCODE(0xC0D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(42) +#else + RET(16 + 42) +#endif +} + +/* MULU */ +OPCODE(0xC0E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(44) +#else + RET(16 + 44) +#endif +} + +/* MULU */ +OPCODE(0xC0E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(46) +#else + RET(16 + 46) +#endif +} + +/* MULU */ +OPCODE(0xC0F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(48) +#else + RET(16 + 48) +#endif +} + +/* MULU */ +OPCODE(0xC0F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(46) +#else + RET(16 + 46) +#endif +} + +/* MULU */ +OPCODE(0xC0F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(50) +#else + RET(16 + 50) +#endif +} + +/* MULU */ +OPCODE(0xC0FA) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(46) +#else + RET(16 + 46) +#endif +} + +/* MULU */ +OPCODE(0xC0FB) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(48) +#else + RET(16 + 48) +#endif +} + +/* MULU */ +OPCODE(0xC0FC) +{ + u32 res; + u32 src; + + FETCH_WORD(src); + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(42) +#else + RET(16 + 42) +#endif +} + +/* MULU */ +OPCODE(0xC0DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(42) +#else + RET(16 + 42) +#endif +} + +/* MULU */ +OPCODE(0xC0E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + res = DREGu16((Opcode >> 9) & 7); + res *= src; + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src & 0xFFFF) * 2; + RET(44) +#else + RET(16 + 44) +#endif +} + +/* MULS */ +OPCODE(0xC1C0) +{ + u32 res; + u32 src; + + src = (s32)DREGs16((Opcode >> 0) & 7); + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(38) +#else + RET(8 + 38) +#endif +} + +/* MULS */ +OPCODE(0xC1D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(42) +#else + RET(8 + 42) +#endif +} + +/* MULS */ +OPCODE(0xC1D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(42) +#else + RET(8 + 42) +#endif +} + +/* MULS */ +OPCODE(0xC1E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(44) +#else + RET(8 + 44) +#endif +} + +/* MULS */ +OPCODE(0xC1E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(46) +#else + RET(8 + 46) +#endif +} + +/* MULS */ +OPCODE(0xC1F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(48) +#else + RET(8 + 48) +#endif +} + +/* MULS */ +OPCODE(0xC1F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(46) +#else + RET(8 + 46) +#endif +} + +/* MULS */ +OPCODE(0xC1F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(50) +#else + RET(8 + 50) +#endif +} + +/* MULS */ +OPCODE(0xC1FA) +{ + u32 adr, res; + u32 src; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(46) +#else + RET(8 + 46) +#endif +} + +/* MULS */ +OPCODE(0xC1FB) +{ + u32 adr, res; + u32 src; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(48) +#else + RET(8 + 48) +#endif +} + +/* MULS */ +OPCODE(0xC1FC) +{ + u32 res; + u32 src; + + FETCH_SWORD(src); + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(42) +#else + RET(8 + 42) +#endif +} + +/* MULS */ +OPCODE(0xC1DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(42) +#else + RET(8 + 42) +#endif +} + +/* MULS */ +OPCODE(0xC1E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READSX_WORD_F(adr, src) + res = (s32)DREGs16((Opcode >> 9) & 7); + res = ((s32)res) * ((s32)src); + flag_N = res >> 24; + flag_NotZ = res; + flag_V = flag_C = 0; + DREGu32((Opcode >> 9) & 7) = res; +#ifdef FAME_ACCURATE_TIMING + /* count bits set in the memory operand */ + io_cycle_counter -= bitset_count(src ^ (src << 1)) * 2; + RET(44) +#else + RET(8 + 44) +#endif +} + +/* EXGDD */ +OPCODE(0xC140) +{ + u32 res; + u32 src; + + res = DREGu32((Opcode >> 0) & 7); + src = DREGu32((Opcode >> 9) & 7); + DREGu32((Opcode >> 9) & 7) = res; + res = src; + DREGu32((Opcode >> 0) & 7) = res; + RET(6) +} + +/* EXGAA */ +OPCODE(0xC148) +{ + u32 res; + u32 src; + + res = AREGu32((Opcode >> 0) & 7); + src = AREGu32((Opcode >> 9) & 7); + AREG((Opcode >> 9) & 7) = res; + res = src; + AREG((Opcode >> 0) & 7) = res; + RET(6) +} + +/* EXGAD */ +OPCODE(0xC188) +{ + u32 res; + u32 src; + + res = AREGu32((Opcode >> 0) & 7); + src = DREGu32((Opcode >> 9) & 7); + DREGu32((Opcode >> 9) & 7) = res; + res = src; + AREG((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ADDaD */ +OPCODE(0xD000) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ADDaD */ +OPCODE(0xD008) +{ +#if 0 + /* can't read byte from Ax registers ! */ + m68kcontext.execinfo |= M68K_FAULTED; + io_cycle_counter = 0; + /* + goto famec_Exec_End; + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + */ +#endif + RET(4) +} + +/* ADDaD */ +OPCODE(0xD010) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD018) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD020) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ADDaD */ +OPCODE(0xD028) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDaD */ +OPCODE(0xD030) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD038) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDaD */ +OPCODE(0xD039) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDaD */ +OPCODE(0xD03A) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDaD */ +OPCODE(0xD03B) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD03C) +{ + u32 res; + u32 src, dst; + + FETCH_BYTE(src); + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD01F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD027) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ADDaD */ +OPCODE(0xD040) +{ + u32 res; + u32 src, dst; + + src = DREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ADDaD */ +OPCODE(0xD048) +{ + u32 res; + u32 src, dst; + + src = AREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ADDaD */ +OPCODE(0xD050) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD058) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD060) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ADDaD */ +OPCODE(0xD068) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDaD */ +OPCODE(0xD070) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD078) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDaD */ +OPCODE(0xD079) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDaD */ +OPCODE(0xD07A) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDaD */ +OPCODE(0xD07B) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD07C) +{ + u32 res; + u32 src, dst; + + FETCH_WORD(src); + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD05F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD067) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(10) +} + +/* ADDaD */ +OPCODE(0xD080) +{ + u32 res; + u32 src, dst; + + src = DREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD088) +{ + u32 res; + u32 src, dst; + + src = AREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDaD */ +OPCODE(0xD090) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD098) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD0A0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDaD */ +OPCODE(0xD0A8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDaD */ +OPCODE(0xD0B0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ADDaD */ +OPCODE(0xD0B8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDaD */ +OPCODE(0xD0B9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(22) +} + +/* ADDaD */ +OPCODE(0xD0BA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDaD */ +OPCODE(0xD0BB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ADDaD */ +OPCODE(0xD0BC) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDaD */ +OPCODE(0xD09F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDaD */ +OPCODE(0xD0A7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDDa */ +OPCODE(0xD110) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ADDDa */ +OPCODE(0xD118) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 1; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ADDDa */ +OPCODE(0xD120) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ADDDa */ +OPCODE(0xD128) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDDa */ +OPCODE(0xD130) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDDa */ +OPCODE(0xD138) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(16) +} + +/* ADDDa */ +OPCODE(0xD139) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(20) +} + +/* ADDDa */ +OPCODE(0xD11F) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(12) +} + +/* ADDDa */ +OPCODE(0xD127) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu8((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src; + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ = res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(14) +} + +/* ADDDa */ +OPCODE(0xD150) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ADDDa */ +OPCODE(0xD158) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ADDDa */ +OPCODE(0xD160) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ADDDa */ +OPCODE(0xD168) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDDa */ +OPCODE(0xD170) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDDa */ +OPCODE(0xD178) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ADDDa */ +OPCODE(0xD179) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ADDDa */ +OPCODE(0xD15F) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ADDDa */ +OPCODE(0xD167) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu16((Opcode >> 9) & 7); + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst + src; + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ADDDa */ +OPCODE(0xD190) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ADDDa */ +OPCODE(0xD198) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ADDDa */ +OPCODE(0xD1A0) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* ADDDa */ +OPCODE(0xD1A8) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ADDDa */ +OPCODE(0xD1B0) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(26) +} + +/* ADDDa */ +OPCODE(0xD1B8) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_SWORD(adr); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(24) +} + +/* ADDDa */ +OPCODE(0xD1B9) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + FETCH_LONG(adr); + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(28) +} + +/* ADDDa */ +OPCODE(0xD19F) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7); + AREG(7) += 4; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(20) +} + +/* ADDDa */ +OPCODE(0xD1A7) +{ + u32 adr, res; + u32 src, dst; + + src = DREGu32((Opcode >> 9) & 7); + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst + src; + flag_NotZ = res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(22) +} + +/* ADDX */ +OPCODE(0xD100) +{ + u32 res; + u32 src, dst; + + src = DREGu8((Opcode >> 0) & 7); + dst = DREGu8((Opcode >> 9) & 7); + res = dst + src + ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ |= res & 0xFF; + DREGu8((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ADDX */ +OPCODE(0xD140) +{ + u32 res; + u32 src, dst; + + src = DREGu16((Opcode >> 0) & 7); + dst = DREGu16((Opcode >> 9) & 7); + res = dst + src + ((flag_X >> 8) & 1); + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + DREGu16((Opcode >> 9) & 7) = res; + RET(4) +} + +/* ADDX */ +OPCODE(0xD180) +{ + u32 res; + u32 src, dst; + + src = DREGu32((Opcode >> 0) & 7); + dst = DREGu32((Opcode >> 9) & 7); + res = dst + src + ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + DREGu32((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDXM */ +OPCODE(0xD108) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDXM */ +OPCODE(0xD148) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDXM */ +OPCODE(0xD188) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ADDX7M */ +OPCODE(0xD10F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 1; + AREG((Opcode >> 9) & 7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDX7M */ +OPCODE(0xD14F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 2; + AREG((Opcode >> 9) & 7) = adr; + READ_WORD_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDX7M */ +OPCODE(0xD18F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + adr = AREG((Opcode >> 9) & 7) - 4; + AREG((Opcode >> 9) & 7) = adr; + READ_LONG_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ADDXM7 */ +OPCODE(0xDF08) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 1; + AREG((Opcode >> 0) & 7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDXM7 */ +OPCODE(0xDF48) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDXM7 */ +OPCODE(0xDF88) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READ_LONG_F(adr, src) + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ADDX7M7 */ +OPCODE(0xDF0F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_BYTE_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_N = flag_X = flag_C = res; + flag_V = (src ^ res) & (dst ^ res); + flag_NotZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) + RET(18) +} + +/* ADDX7M7 */ +OPCODE(0xDF4F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_V = ((src ^ res) & (dst ^ res)) >> 8; + flag_N = flag_X = flag_C = res >> 8; + flag_NotZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ADDX7M7 */ +OPCODE(0xDF8F) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, src) + adr = AREG(7) - 4; + AREG(7) = adr; + READ_LONG_F(adr, dst) + res = dst + src + ((flag_X >> 8) & 1); + flag_NotZ |= res; + flag_X = flag_C = ((src & dst & 1) + (src >> 1) + (dst >> 1)) >> 23; + flag_V = ((src ^ res) & (dst ^ res)) >> 24; + flag_N = res >> 24; + WRITE_LONG_F(adr, res) + RET(30) +} + +/* ADDA */ +OPCODE(0xD0C0) +{ + u32 res; + u32 src, dst; + + src = (s32)DREGs16((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDA */ +OPCODE(0xD0C8) +{ + u32 res; + u32 src, dst; + + src = (s32)AREGs16((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDA */ +OPCODE(0xD0D0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDA */ +OPCODE(0xD0D8) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDA */ +OPCODE(0xD0E0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDA */ +OPCODE(0xD0E8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDA */ +OPCODE(0xD0F0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDA */ +OPCODE(0xD0F8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDA */ +OPCODE(0xD0F9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ADDA */ +OPCODE(0xD0FA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDA */ +OPCODE(0xD0FB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDA */ +OPCODE(0xD0FC) +{ + u32 res; + u32 src, dst; + + FETCH_SWORD(src); + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDA */ +OPCODE(0xD0DF) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 2; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(12) +} + +/* ADDA */ +OPCODE(0xD0E7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 2; + AREG(7) = adr; + READSX_WORD_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDA */ +OPCODE(0xD1C0) +{ + u32 res; + u32 src, dst; + + src = (s32)DREGs32((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDA */ +OPCODE(0xD1C8) +{ + u32 res; + u32 src, dst; + + src = (s32)AREGs32((Opcode >> 0) & 7); + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(8) +} + +/* ADDA */ +OPCODE(0xD1D0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDA */ +OPCODE(0xD1D8) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 4; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDA */ +OPCODE(0xD1E0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7) - 4; + AREG((Opcode >> 0) & 7) = adr; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDA */ +OPCODE(0xD1E8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDA */ +OPCODE(0xD1F0) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ADDA */ +OPCODE(0xD1F8) +{ + u32 adr, res; + u32 src, dst; + + FETCH_SWORD(adr); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDA */ +OPCODE(0xD1F9) +{ + u32 adr, res; + u32 src, dst; + + FETCH_LONG(adr); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(22) +} + +/* ADDA */ +OPCODE(0xD1FA) +{ + u32 adr, res; + u32 src, dst; + + adr = GET_SWORD + UNBASED_PC; + INC_PC(2); + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(18) +} + +/* ADDA */ +OPCODE(0xD1FB) +{ + u32 adr, res; + u32 src, dst; + + adr = UNBASED_PC; + DECODE_EXT_WORD + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(20) +} + +/* ADDA */ +OPCODE(0xD1FC) +{ + u32 res; + u32 src, dst; + + FETCH_LONG(src); + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ADDA */ +OPCODE(0xD1DF) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7); + AREG(7) += 4; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(14) +} + +/* ADDA */ +OPCODE(0xD1E7) +{ + u32 adr, res; + u32 src, dst; + + adr = AREG(7) - 4; + AREG(7) = adr; + READSX_LONG_F(adr, src) + dst = AREGu32((Opcode >> 9) & 7); + res = dst + src; + AREG((Opcode >> 9) & 7) = res; + RET(16) +} + +/* ASRk */ +OPCODE(0xE000) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = (s32)DREGs8((Opcode >> 0) & 7); + flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + flag_N = res >> 0; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ASRk */ +OPCODE(0xE040) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = (s32)DREGs16((Opcode >> 0) & 7); + flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + flag_N = res >> 8; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ASRk */ +OPCODE(0xE080) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = (s32)DREGs32((Opcode >> 0) & 7); + flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* LSRk */ +OPCODE(0xE008) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + flag_N = flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = src >> sft; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* LSRk */ +OPCODE(0xE048) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + flag_N = flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = src >> sft; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* LSRk */ +OPCODE(0xE088) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_N = flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = src >> sft; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ROXRk */ +OPCODE(0xE010) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + src |= (flag_X & M68K_SR_X) << 0; + res = (src >> sft) | (src << (9 - sft)); + flag_X = flag_C = res >> 0; + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ROXRk */ +OPCODE(0xE050) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + src |= (flag_X & M68K_SR_X) << 8; + res = (src >> sft) | (src << (17 - sft)); + flag_X = flag_C = res >> 8; + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ROXRk */ +OPCODE(0xE090) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + if (sft == 1) res = (src >> 1) | ((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + 1))); + else res = (src >> sft) | (src << (33 - sft)) | ((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + sft))); + flag_X = flag_C; + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* RORk */ +OPCODE(0xE018) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + flag_V = 0; + flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = (src >> sft) | (src << (8 - sft)); + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* RORk */ +OPCODE(0xE058) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + flag_V = 0; + flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = (src >> sft) | (src << (16 - sft)); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* RORk */ +OPCODE(0xE098) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_V = 0; + flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = (src >> sft) | (src << (32 - sft)); + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ASLk */ +OPCODE(0xE100) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + if (sft < 8) + { + flag_X = flag_C = src << (0 + sft); + res = src << sft; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + flag_V = 0; + if ((sft > 7) && (src)) flag_V = M68K_SR_V; + else + { + u32 msk = (((s32)0x80000000) >> (sft + 24)) & 0x000000FF; + src &= msk; + if ((src) && (src != msk)) flag_V = M68K_SR_V; + } + RET(6) + } + + if (src) flag_V = M68K_SR_V; + else flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + flag_N = 0; + flag_NotZ = 0; + RET(6) +} + +/* ASLk */ +OPCODE(0xE140) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + flag_X = flag_C = src >> (8 - sft); + res = src << sft; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 16)) & 0x0000FFFF; + src &= msk; + if ((src) && (src != msk)) flag_V = M68K_SR_V; + } + RET(6) +} + +/* ASLk */ +OPCODE(0xE180) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_X = flag_C = src >> (24 - sft); + res = src << sft; + flag_N = res >> 24; + flag_NotZ = res & 0xFFFFFFFF; + DREGu32((Opcode >> 0) & 7) = res; + flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 0)) & 0xFFFFFFFF; + src &= msk; + if ((src) && (src != msk)) flag_V = M68K_SR_V; + } + RET(8) +} + +/* LSLk */ +OPCODE(0xE108) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + flag_V = 0; + flag_X = flag_C = src << (0 + sft); + res = src << sft; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* LSLk */ +OPCODE(0xE148) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + flag_V = 0; + flag_X = flag_C = src >> (8 - sft); + res = src << sft; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* LSLk */ +OPCODE(0xE188) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_V = 0; + flag_X = flag_C = src >> (24 - sft); + res = src << sft; + flag_N = res >> 24; + flag_NotZ = res & 0xFFFFFFFF; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ROXLk */ +OPCODE(0xE110) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + src |= (flag_X & M68K_SR_X) << 0; + res = (src << sft) | (src >> (9 - sft)); + flag_X = flag_C = res >> 0; + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ROXLk */ +OPCODE(0xE150) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + src |= (flag_X & M68K_SR_X) << 8; + res = (src << sft) | (src >> (17 - sft)); + flag_X = flag_C = res >> 8; + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ROXLk */ +OPCODE(0xE190) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_C = src >> ((32 - M68K_SR_C_SFT) - sft); + if (sft == 1) res = (src << 1) | ((flag_X & M68K_SR_X) >> ((M68K_SR_X_SFT + 1) - 1)); + else res = (src << sft) | (src >> (33 - sft)) | ((flag_X & M68K_SR_X) >> ((M68K_SR_X_SFT + 1) - sft)); + flag_X = flag_C; + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ROLk */ +OPCODE(0xE118) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu8((Opcode >> 0) & 7); + flag_V = 0; + flag_C = src << (0 + sft); + res = (src << sft) | (src >> (8 - sft)); + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ROLk */ +OPCODE(0xE158) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu16((Opcode >> 0) & 7); + flag_V = 0; + flag_C = src >> (8 - sft); + res = (src << sft) | (src >> (16 - sft)); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) +} + +/* ROLk */ +OPCODE(0xE198) +{ + u32 res; + u32 src; + + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + io_cycle_counter -= sft * 2; + src = DREGu32((Opcode >> 0) & 7); + flag_V = 0; + flag_C = src >> (24 - sft); + res = (src << sft) | (src >> (32 - sft)); + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) +} + +/* ASRD */ +OPCODE(0xE020) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = (s32)DREGs8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 8) + { + flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + flag_N = res >> 0; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + if (src & (1 << 7)) + { + flag_N = M68K_SR_N; + flag_NotZ = 1; + flag_V = 0; + flag_C = M68K_SR_C; + flag_X = M68K_SR_X; + res = 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + flag_C = 0; + flag_X = 0; + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* ASRD */ +OPCODE(0xE060) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = (s32)DREGs16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 16) + { + flag_V = 0; + flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT; + res = ((s32)src) >> sft; + flag_N = res >> 8; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + if (src & (1 << 15)) + { + flag_N = M68K_SR_N; + flag_NotZ = 1; + flag_V = 0; + flag_C = M68K_SR_C; + flag_X = M68K_SR_X; + res = 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + flag_C = 0; + flag_X = 0; + res = 0; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* ASRD */ +OPCODE(0xE0A0) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = (s32)DREGs32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 32) + { + flag_V = 0; + flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT; + res = ((s32)src) >> sft; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + if (src & (1 << 31)) + { + flag_N = M68K_SR_N; + flag_NotZ = 1; + flag_V = 0; + flag_C = M68K_SR_C; + flag_X = M68K_SR_X; + res = 0xFFFFFFFF; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + flag_C = 0; + flag_X = 0; + res = 0; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* LSRD */ +OPCODE(0xE028) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft <= 8) + { + flag_N = flag_V = 0; + flag_X = flag_C = src << ((M68K_SR_C_SFT + 1) - sft); + res = src >> sft; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_X = flag_C = 0; + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* LSRD */ +OPCODE(0xE068) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft <= 16) + { + flag_N = flag_V = 0; + flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT; + res = src >> sft; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_X = flag_C = 0; + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + res = 0; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* LSRD */ +OPCODE(0xE0A8) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 32) + { + flag_N = flag_V = 0; + flag_X = flag_C = (src >> (sft - 1)) << M68K_SR_C_SFT; + res = src >> sft; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + if (sft == 32) flag_C = src >> (31 - M68K_SR_C_SFT); + else flag_C = 0; + flag_X = flag_C; + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + res = 0; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* ROXRD */ +OPCODE(0xE030) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft %= 9; + + src |= (flag_X & M68K_SR_X) << 0; + res = (src >> sft) | (src << (9 - sft)); + flag_X = flag_C = res >> 0; + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = flag_X; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* ROXRD */ +OPCODE(0xE070) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft %= 17; + + src |= (flag_X & M68K_SR_X) << 8; + res = (src >> sft) | (src << (17 - sft)); + flag_X = flag_C = res >> 8; + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = flag_X; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* ROXRD */ +OPCODE(0xE0B0) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft %= 33; + + if (sft != 0) + { + if (sft == 1) + res = (src >> 1) | ((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + 1))); + else + res = (src >> sft) | (src << (33 - sft)) | (((flag_X & M68K_SR_X) << (32 - (M68K_SR_X_SFT + 1))) >> (sft - 1)); + + flag_X = ((src >> (sft - 1)) & 1) << M68K_SR_X_SFT; + } + else res = src; + flag_C = flag_X; + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = flag_X; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* RORD */ +OPCODE(0xE038) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft &= 0x07; + + flag_C = src << (M68K_SR_C_SFT - ((sft - 1) & 7)); + res = (src >> sft) | (src << (8 - sft)); + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* RORD */ +OPCODE(0xE078) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft &= 0x0F; + + flag_C = (src >> ((sft - 1) & 15)) << M68K_SR_C_SFT; + res = (src >> sft) | (src << (16 - sft)); + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* RORD */ +OPCODE(0xE0B8) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft &= 0x1F; + + flag_C = (src >> ((sft - 1) & 31)) << M68K_SR_C_SFT; + res = (src >> sft) | (src << (32 - sft)); + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* ASLD */ +OPCODE(0xE120) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 8) + { + flag_X = flag_C = (src << sft) >> 0; + res = (src << sft) & 0x000000FF; + flag_N = res >> 0; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 24)) & 0x000000FF; + src &= msk; + if ((src) && (src != msk)) flag_V = M68K_SR_V; + } + RET(6) + } + + if (sft == 256) flag_C = src << M68K_SR_C_SFT; + else flag_C = 0; + flag_X = flag_C; + if (src) flag_V = M68K_SR_V; + else flag_V = 0; + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + flag_N = 0; + flag_NotZ = 0; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* ASLD */ +OPCODE(0xE160) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 16) + { + flag_X = flag_C = (src << sft) >> 8; + res = (src << sft) & 0x0000FFFF; + flag_N = res >> 8; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 16)) & 0x0000FFFF; + src &= msk; + if ((src) && (src != msk)) flag_V = M68K_SR_V; + } + RET(6) + } + + if (sft == 65536) flag_C = src << M68K_SR_C_SFT; + else flag_C = 0; + flag_X = flag_C; + if (src) flag_V = M68K_SR_V; + else flag_V = 0; + res = 0; + DREGu16((Opcode >> 0) & 7) = res; + flag_N = 0; + flag_NotZ = 0; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* ASLD */ +OPCODE(0xE1A0) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 32) + { + flag_X = flag_C = (src >> (32 - sft)) << M68K_SR_C_SFT; + res = src << sft; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 0)) & 0xFFFFFFFF; + src &= msk; + if ((src) && (src != msk)) flag_V = M68K_SR_V; + } + RET(8) + } + + if (sft == 0) flag_C = src << M68K_SR_C_SFT; + else flag_C = 0; + flag_X = flag_C; + if (src) flag_V = M68K_SR_V; + else flag_V = 0; + res = 0; + DREGu32((Opcode >> 0) & 7) = res; + flag_N = 0; + flag_NotZ = 0; + RET(8) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* LSLD */ +OPCODE(0xE128) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft <= 8) + { + flag_X = flag_C = (src << sft) >> 0; + res = (src << sft) & 0x000000FF; + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_X = flag_C = 0; + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + res = 0; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* LSLD */ +OPCODE(0xE168) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft <= 16) + { + flag_X = flag_C = (src << sft) >> 8; + res = (src << sft) & 0x0000FFFF; + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_X = flag_C = 0; + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + res = 0; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* LSLD */ +OPCODE(0xE1A8) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft < 32) + { + flag_X = flag_C = (src >> (32 - sft)) << M68K_SR_C_SFT; + res = src << sft; + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + if (sft == 32) flag_C = src << M68K_SR_C_SFT; + else flag_C = 0; + flag_X = flag_C; + flag_N = 0; + flag_NotZ = 0; + flag_V = 0; + res = 0; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* ROXLD */ +OPCODE(0xE130) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft %= 9; + + src |= (flag_X & M68K_SR_X) << 0; + res = (src << sft) | (src >> (9 - sft)); + flag_X = flag_C = res >> 0; + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res & 0x000000FF; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = flag_X; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* ROXLD */ +OPCODE(0xE170) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft %= 17; + + src |= (flag_X & M68K_SR_X) << 8; + res = (src << sft) | (src >> (17 - sft)); + flag_X = flag_C = res >> 8; + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = flag_X; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* ROXLD */ +OPCODE(0xE1B0) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + sft %= 33; + + if (sft != 0) + { + if (sft == 1) res = (src << 1) | ((flag_X >> ((M68K_SR_X_SFT + 1) - 1)) & 1); + else res = (src << sft) | (src >> (33 - sft)) | (((flag_X >> ((M68K_SR_X_SFT + 1) - 1)) & 1) << (sft - 1)); + flag_X = (src >> (32 - sft)) << M68K_SR_X_SFT; + } + else res = src; + flag_C = flag_X; + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = flag_X; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* ROLD */ +OPCODE(0xE138) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu8((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft &= 0x07) + { + flag_C = (src << sft) >> 0; + res = ((src << sft) | (src >> (8 - sft))) & 0x000000FF; + flag_V = 0; + flag_N = res >> 0; + flag_NotZ = res; + DREGu8((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 0; + flag_NotZ = src; + RET(6) +} + +/* ROLD */ +OPCODE(0xE178) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu16((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft &= 0x0F) + { + flag_C = (src << sft) >> 8; + res = ((src << sft) | (src >> (16 - sft))) & 0x0000FFFF; + flag_V = 0; + flag_N = res >> 8; + flag_NotZ = res; + DREGu16((Opcode >> 0) & 7) = res; + RET(6) + } + + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 8; + flag_NotZ = src; + RET(6) +} + +/* ROLD */ +OPCODE(0xE1B8) +{ + u32 res; + u32 src; + + u32 sft; + + sft = DREG((Opcode >> 9) & 7) & 0x3F; + src = DREGu32((Opcode >> 0) & 7); + if (sft) + { + io_cycle_counter -= sft * 2; + if (sft &= 0x1F) + { + flag_C = (src >> (32 - sft)) << M68K_SR_C_SFT; + res = (src << sft) | (src >> (32 - sft)); + flag_V = 0; + flag_N = res >> 24; + flag_NotZ = res; + DREGu32((Opcode >> 0) & 7) = res; + RET(8) + } + + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) + } + + flag_V = 0; + flag_C = 0; + flag_N = src >> 24; + flag_NotZ = src; + RET(8) +} + +/* ASR */ +OPCODE(0xE0D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ASR */ +OPCODE(0xE0D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ASR */ +OPCODE(0xE0E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ASR */ +OPCODE(0xE0E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ASR */ +OPCODE(0xE0F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ASR */ +OPCODE(0xE0F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ASR */ +OPCODE(0xE0F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ASR */ +OPCODE(0xE0DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ASR */ +OPCODE(0xE0E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* LSR */ +OPCODE(0xE2D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* LSR */ +OPCODE(0xE2D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* LSR */ +OPCODE(0xE2E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* LSR */ +OPCODE(0xE2E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* LSR */ +OPCODE(0xE2F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* LSR */ +OPCODE(0xE2F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* LSR */ +OPCODE(0xE2F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* LSR */ +OPCODE(0xE2DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* LSR */ +OPCODE(0xE2E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_N = flag_V = 0; + flag_X = flag_C = src << M68K_SR_C_SFT; + res = src >> 1; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROXR */ +OPCODE(0xE4D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROXR */ +OPCODE(0xE4D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROXR */ +OPCODE(0xE4E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROXR */ +OPCODE(0xE4E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROXR */ +OPCODE(0xE4F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ROXR */ +OPCODE(0xE4F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROXR */ +OPCODE(0xE4F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ROXR */ +OPCODE(0xE4DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROXR */ +OPCODE(0xE4E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src >> 1) | ((flag_X & M68K_SR_X) << 7); + flag_C = flag_X = src << M68K_SR_C_SFT; + flag_N = res >> 8; + flag_NotZ = res; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROR */ +OPCODE(0xE6D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROR */ +OPCODE(0xE6D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROR */ +OPCODE(0xE6E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROR */ +OPCODE(0xE6E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROR */ +OPCODE(0xE6F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ROR */ +OPCODE(0xE6F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROR */ +OPCODE(0xE6F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ROR */ +OPCODE(0xE6DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROR */ +OPCODE(0xE6E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src << M68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ASL */ +OPCODE(0xE1D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ASL */ +OPCODE(0xE1D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ASL */ +OPCODE(0xE1E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ASL */ +OPCODE(0xE1E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ASL */ +OPCODE(0xE1F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ASL */ +OPCODE(0xE1F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ASL */ +OPCODE(0xE1F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ASL */ +OPCODE(0xE1DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ASL */ +OPCODE(0xE1E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_X = flag_C = src >> 7; + res = src << 1; + flag_V = (src ^ res) >> 8; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* LSL */ +OPCODE(0xE3D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* LSL */ +OPCODE(0xE3D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* LSL */ +OPCODE(0xE3E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* LSL */ +OPCODE(0xE3E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* LSL */ +OPCODE(0xE3F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* LSL */ +OPCODE(0xE3F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* LSL */ +OPCODE(0xE3F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* LSL */ +OPCODE(0xE3DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* LSL */ +OPCODE(0xE3E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_X = flag_C = src >> 7; + res = src << 1; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROXL */ +OPCODE(0xE5D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROXL */ +OPCODE(0xE5D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROXL */ +OPCODE(0xE5E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROXL */ +OPCODE(0xE5E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROXL */ +OPCODE(0xE5F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ROXL */ +OPCODE(0xE5F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROXL */ +OPCODE(0xE5F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ROXL */ +OPCODE(0xE5DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROXL */ +OPCODE(0xE5E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + res = (src << 1) | ((flag_X & M68K_SR_X) >> 8); + flag_X = flag_C = src >> 7; + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROL */ +OPCODE(0xE7D0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROL */ +OPCODE(0xE7D8) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + AREG((Opcode >> 0) & 7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROL */ +OPCODE(0xE7E0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7) - 2; + AREG((Opcode >> 0) & 7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} + +/* ROL */ +OPCODE(0xE7E8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + adr += AREG((Opcode >> 0) & 7); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROL */ +OPCODE(0xE7F0) +{ + u32 adr, res; + u32 src; + + adr = AREG((Opcode >> 0) & 7); + DECODE_EXT_WORD + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(18) +} + +/* ROL */ +OPCODE(0xE7F8) +{ + u32 adr, res; + u32 src; + + FETCH_SWORD(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(16) +} + +/* ROL */ +OPCODE(0xE7F9) +{ + u32 adr, res; + u32 src; + + FETCH_LONG(adr); + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(20) +} + +/* ROL */ +OPCODE(0xE7DF) +{ + u32 adr, res; + u32 src; + + adr = AREG(7); + AREG(7) += 2; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(12) +} + +/* ROL */ +OPCODE(0xE7E7) +{ + u32 adr, res; + u32 src; + + adr = AREG(7) - 2; + AREG(7) = adr; + READ_WORD_F(adr, src) + flag_V = 0; + flag_C = src >> 7; + res = (src << 1) | (src >> 15); + flag_N = res >> 8; + flag_NotZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) + RET(14) +} diff --git a/MCUME_teensy/teensycastaway/fdc.cpp b/MCUME_teensy/teensycastaway/fdc.cpp new file mode 100644 index 0000000..71a5b5a --- /dev/null +++ b/MCUME_teensy/teensycastaway/fdc.cpp @@ -0,0 +1,533 @@ +/* +* Castaway +* (C) 1994 - 2002 Martin Doering, Joachim Hoenig +* +* fdc.c - wd1772/dma emulation +* +* This file is distributed under the GPL, version 2 or at your +* option any later version. See doc/license.txt for details. +* +* revision history +* 23.05.2002 0.02.00 JH FAST1.0.1 code import: KR -> ANSI, restructuring +* 09.06.2002 0.02.00 JH Renamed io.c to st.c again (io.h conflicts with system headers) +*/ +static char sccsid[] = "$Id: fdc.c,v 1.2 2002/06/08 23:31:58 jhoenig Exp $"; +#include +#include +#include +#include +#include "dcastaway.h" +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" + +#include "emuapi.h" + + +//#define MEMDISC 1 +#define DISK 1 + +#define DISKNULL \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0\0" \ + "\0\0\0\0\0\0\0\0\0" + +int fdc_commands_executed=0; + + +/* +* FDC Registers +*/ +extern int readdsk; +unsigned char fdc_data, fdc_track, fdc_sector, fdc_status, fdc_command, fdc_motor; +unsigned char fdc_int = 0; +char fdcdir=1; +unsigned char disk_ejected[2]={0,1}; +unsigned char disk_changed[2]; +struct Disk disk[2] = { + { NULL, DISKNULL, 0, SIDES, TRACKS, SECTORS, SECSIZE }, + { NULL, DISKNULL, 0, SIDES, TRACKS, SECTORS, SECSIZE }, +}; + +typedef struct { + uint16 ID; // Word ID marker, should be $0E0F + uint16 SectorsPerTrack; // Word Sectors per track + uint16 Sides; // Word Sides (0 or 1; add 1 to this to get correct number of sides) + uint16 StartingTrack; // Word Starting track (0-based) + uint16 EndingTrack; // Word Ending track (0-based) +} MSAHEADERSTRUCT; +#define STMemory_Swap68000Int(val) ((val<<8)|(val>>8)) + + +unsigned char *disc[2]; + +int discpos[2]; + +//#define LOGGING 1 + +#ifdef LOGGING +//static FILE * log=NULL; +//#define LOG(format,val) if (!log) { \ +// log = fopen("log2.txt","wb"); \ +// } \ +// fprintf(log, "%s %d\n", format, val); +#define LOG(format,val) Serial.print(format); \ + Serial.println(val); +#else +#define LOG(format,va) +#endif + +PROGMEM static void SetMemBBB (unsigned long address, unsigned char value) { + address &= MEMADDRMASK; + if (address=256) { + //fread(buf,1,256,disk[discn].file); + emu_FileRead(buf,256); + LOG("b read: ",buf[0]); + totlen -= 256; + for (i=0; i<256; i++) { + SetMemBBB(address, buf[i]); + address++; + } + } + if (totlen) { + //fread(buf,1,totlen,disk[discn].file); + emu_FileRead(buf,totlen); + LOG("b: ",buf[0]); + for (i=0; i(1050*1024)){ + return -1; + } + discpos[discn]=pos; +#ifdef MEMDISC +#else + if (disk[discn].file) emu_FileSeek(pos); //fseek(disk[discn].file,pos,SEEK_SET); +#endif + return 0; +} + + + + + +PROGMEM int FDCInit(int i) +{ + unsigned char *buf; +#ifdef MEMDISC + memset((void *)&disc[i][0],0,MAX_DISC_SIZE); +#else + memset((void *)&disc[i][0],0,256); +#endif + int len,len2,calcsides,calcsectors,calctracks,badbootsector; + discpos[i]=0; + + //if (NULL != (disk[i].file = fopen (disk[i].name, "rb"))) { + //buf=&disc[i][0]; + //disk[i].file=fopen (disk[i].name, "rb"); + //fseek(disk[i].file,0,SEEK_END); + //len=ftell(disk[i].file); + //disk[i].disksize = len; + //fseek(disk[i].file,0,SEEK_SET); + len = emu_FileSize(disk[i].name); + disk[i].file = emu_FileOpen(disk[i].name); + buf=&disc[i][0]; + disk[i].disksize = len; +#ifdef MEMDISC + //fread(buf,1,len,disk[i].file); + //fclose(disk[i].file); +#else + if (disk[i].file) { + //fread(buf,1,256,disk[i].file); + //fseek(disk[i].file,0,SEEK_SET); + emu_FileRead(buf, 256); + emu_FileSeek(0); + } +#endif + + disk[i].head = 0; + disk[i].sides = (int) *(buf + 26); + disk[i].sectors = (int) *(buf + 24); + disk[i].secsize = 512; //(int) ((*(buf + 12) << 8) | *(buf + 11)); + if (disk[i].sectors * disk[i].sides) + disk[i].tracks = (int) ((*(buf + 20) << 8) | *(buf + 19)) / + (disk[i].sectors * disk[i].sides); + + // Second Check more precise + if (len> (500*1024)) calcsides = 2; + else calcsides = 1; + if (!(((len/calcsides)/512)%9)&&(((len/calcsides)/512)/9)<86) calcsectors=9; + else if (!(((len/calcsides)/512)%10)&&(((len/calcsides)/512)/10)<86) calcsectors=10; + else if (!(((len/calcsides)/512)%11)&&(((len/calcsides)/512)/11)<86) calcsectors=11; + else if (!(((len/calcsides)/512)%12)) calcsectors=12; + calctracks =((len/calcsides)/512)/calcsectors; + + if (disk[i].sides!=calcsides||disk[i].sectors!=calcsectors||disk[i].tracks!=calctracks){ + if (disk[i].sides==calcsides&&disk[i].sectors==calcsectors){ + disk[i].tracks=calctracks; + badbootsector=0; + }else{ + disk[i].sides=calcsides; + disk[i].tracks=calctracks; + disk[i].sectors=calcsectors; + badbootsector=(i<<24)|(calcsides<<16)|(calctracks<<8)|(calcsectors); + } + + }else{ + badbootsector=0; + } + disk_ejected[i]=0; + disk_changed[i]=1; + fdc_status |= 0x40; + disk[i].head = 0; + fdc_track = 0; + //} + + //dcastaway_disc_initsave(i); + + return badbootsector; +} + +PROGMEM void FDCchange(int i){ + disk[(i>>24)&0xff].sides=(i>>16)&0xff; + disk[(i>>24)&0xff].tracks=(i>>8)&0xff; + disk[(i>>24)&0xff].sectors=i&0xff; +} + +PROGMEM void FDCeject(int num){ + int i; + +#ifdef MEMDISC + for (i=0;i<1050*1024;i++) disc[num][i]=0; +#endif + disk[num].file = NULL; + sprintf(disk[num].name,"disk%01d",num); + disk[num].sides = SIDES; + disk[num].tracks = TRACKS; + disk[num].sectors = SECTORS; + disk[num].secsize = 512; + disk_ejected[num]=1; + fdc_status |= 0x40; +} + +PROGMEM void FDCCommand(void) +{ + static char motor = 1; + int sides, drives; + long address; /* dma target/source address */ + long offset; /* offset in disk file */ + unsigned long count; /* number of byte to transfer */ + char *buffer; + int n; + + if (fdc_commands_executed<64) + fdc_commands_executed++; + /* DMA target/source address */ + address = (dma_adrh << 16) + (dma_adrm << 8) + dma_adrl; + /* if (address>MEMSIZE){ + #ifdef DISASS + StartDisass(); + exit(1); + #endif + fdc_status |= 0x10; + return; + + + + } + */ + buffer = (char *)(membase + address); + /* status of side select and drive select lines */ + sides = (~psg[14]) & 0x1; + drives = (~psg[14]) & 0x6; + if (disk_ejected[drives>>2]==1) drives=2; + switch (drives) { + case 2: /* Drive A */ + drives = 0; + break; + case 4: /* Drive B */ + drives = 1; + break; + case 6: /* both, error */ + case 0: /* no drive selected */ + drives = -1; + break; + } + fdc_status = 0; /* clear fdc status */ + +#if DISK + + if (fdc_command < 0x80) { /* TYPE-I fdc commands */ + if (drives >= 0) { /* drive selected */ + switch (fdc_command & 0xf0) { + case 0x00: /* RESTORE */ + disk[drives].head = 0; + fdc_track = 0; + break; + case 0x10: /* SEEK */ + disk[drives].head += (fdc_data - fdc_track); + fdc_track = fdc_data; + if (disk[drives].head < 0 + || disk[drives].head >= disk[drives].tracks) + disk[drives].head = 0; + break; + case 0x30: /* STEP */ + fdc_track += fdcdir; + case 0x20: + disk[drives].head += fdcdir; + break; + case 0x50: /* STEP-IN */ + fdc_track++; + case 0x40: + if (disk[drives].head < disk[drives].tracks) + disk[drives].head++; + fdcdir = 1; + break; + case 0x70: /* STEP-OUT */ + fdc_track--; + case 0x60: + if (disk[drives].head > 0) + disk[drives].head--; + fdcdir = -1; + break; + } + if (disk[drives].head == 0) { + fdc_status |= 0x4; + } + if (disk[drives].head != fdc_track && fdc_command & 0x4) { /* Verify? */ + fdc_status |= 0x10; + } + if (motor) { + fdc_status |= 0x20; /* spin-up flag */ + } + } else { /* no drive selected */ + fdc_status |= 0x10; + } + } else if ((fdc_command & 0xf0) == 0xd0) { /* FORCE INTERRUPT */ + if (fdc_command == 0xd8) { + fdc_int = 1; + } else if (fdc_command == 0xd0) { + fdc_int = 0; + } + } else { /* OTHERS */ + if (drives >= 0) { /* drive selected */ + /* offset within floppy-file */ + offset = disk[drives].secsize * + (((disk[drives].sectors * disk[drives].sides * disk[drives].head)) + + (disk[drives].sectors * sides) + (fdc_sector - 1)); + switch (fdc_command & 0xf0) { + case 0x80: /* READ SECTOR */ + count = 512; + if (!discseek (drives, offset, 0)) { + if (address> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + break; + } + }else{ + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + mfp_gpip |= 0x20; + fdc_status |= 0x1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0x90: /* READ SECTOR multiple */ + count = dma_scr * 512; + if (count+(fdc_sector-1)*512>disk[drives].sectors*512) count=disk[drives].sectors*512-(fdc_sector-1)*512; + if (!discseek (drives, offset, 0)) { + if (address> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + fdc_sector += count/disk[drives].secsize; + break; + } + }else{ + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + mfp_gpip |= 0x20; + fdc_status |= 0x1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xa0: /* WRITE SECTOR */ + count = dma_scr * 512; + if (!discseek (drives, offset, 0)) { + if (count == discwrite ((unsigned char *)buffer, 1, count, drives)) { + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xb0: /* WRITE SECTOR multiple */ + count = dma_scr * 512; + if (!discseek (drives, offset, 0)) { + if (count == discwrite ((unsigned char *)buffer, 1, count, drives)) { + address += count; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + fdc_sector += dma_scr * (512 / disk[drives].secsize); + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xc0: /* READ ADDRESS */ + fdc_status |= 0x10; + break; + case 0xe0: /* READ TRACK */ + count = disk[drives].sectors * 512; + offset = disk[drives].secsize * + (((disk[drives].sectors * disk[drives].sides * disk[drives].head)) + + (disk[drives].sectors * sides)); + if (!discseek (drives, offset, 0)) { + if (address> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + break; + } + }else{ + address += 302; + dma_adrl = address & 0xff; + dma_adrm = (address >> 8) & 0xff; + dma_adrh = (address >> 16) & 0xff; + dma_scr = 0; + dma_sr = 1; + mfp_gpip |= 0x20; + fdc_status |= 0x1; + break; + } + } + fdc_status |= 0x10; + dma_sr = 1; + break; + case 0xf0: /* WRITE TRACK */ + fdc_status |= 0x10; + break; + } + if (disk[drives].head != fdc_track) { + fdc_status |= 0x10; + } + } else { + fdc_status |= 0x10; /* no drive selected */ + } + } +#endif + if (motor) { + fdc_status |= 0x80; /* motor on flag */ + fdc_motor=1; + } + if (!(fdc_status & 0x01)) { /* not busy */ + mfp_iprb |= (0x80 & mfp_ierb); /* Request Interrupt */ + mfp_gpip &= ~0x20; + } +} diff --git a/MCUME_teensy/teensycastaway/font8x8.h b/MCUME_teensy/teensycastaway/font8x8.h new file mode 100644 index 0000000..2b2ab25 --- /dev/null +++ b/MCUME_teensy/teensycastaway/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +PROGMEM const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensycastaway/ikbd.cpp b/MCUME_teensy/teensycastaway/ikbd.cpp new file mode 100644 index 0000000..0868059 --- /dev/null +++ b/MCUME_teensy/teensycastaway/ikbd.cpp @@ -0,0 +1,524 @@ +/* +* Castaway +* (C) 1994 - 2002 Martin Doering, Joachim Hoenig +* +* ikbd.c - ST keyboard processor emulator (german keymap) +* +* This file is distributed under the GPL, version 2 or at your +* option any later version. See doc/license.txt for details. +* +* revision history +* 23.05.2002 0.02.00 JH FAST1.0.1 code import: KR -> ANSI, restructuring +* 09.06.2002 0.02.00 JH Renamed io.c to st.c again (io.h conflicts with system headers) +* 16.06.2002 0.02.00 JH New function: IkbdQueryBuffer(). X11 keysym conversion removed. +*/ +static char sccsid[] = "$Id: ikbd.c,v 1.3 2002/06/16 23:16:09 jhoenig Exp $"; +//#include "winbase.h" +#include +#include +#include +#include "dcastaway.h" +#include "st.h" +#define IBS 10 /* Ikbd input buffer size */ +#define OBS 20 /* Ikbd output buffer size */ + + +//extern char Msg[400]; +extern FILE* logfile; +extern int exmousex,exmousey; +int pause = 0; +struct _mouse mouse; +struct _joystick joystick; + +extern unsigned char joynum; +unsigned char inbuff[IBS]; +unsigned char outbuff[OBS]; +int inbuffi = 0; +int outbuffi = 0; +int oldjoystate =0; +int joytick=0; +unsigned char Buttons; +//SYSTEMTIME SystemTime; +unsigned char TempButtons=0x0a; +unsigned char PrevButtons; + +unsigned char Misc_ConvertToBCD(unsigned short int Value) +{ + return( ((Value&0xf0)>>4)*10 + (Value&0x0f) ); +} + +PROGMEM void IkbdRecv(unsigned char inchar) +{ + if (inbuffi == IBS) { + inbuffi = 0; + } + inbuff[inbuffi++] = inchar; + //Serial.print("d "); + //Serial.println(inbuff[0]); + switch (inbuff[0]) { + case 0x07: /* set mouse button action */ + if (inbuffi == 2) { + inbuffi = 0; + mouse.button_action = inbuff[1]; + } + break; + case 0x08: /* set relative mouse position reporting */ + inbuffi = 0; + mouse.mode = 1; + break; + case 0x09: /* set absolute mouse positioning */ + if (inbuffi == 5) { + mouse.mode = 2; + mouse.xmax = (inbuff[1] << 8) | inbuff[2]; + mouse.ymax = (inbuff[3] << 8) | inbuff[4]; + mouse.x=mouse.xmax/2; + mouse.y=mouse.ymax/2; + inbuffi = 0; + } + break; + case 0x0a: /* set mouse keycode mode */ + if (inbuffi == 3) { + mouse.mode = 3; + mouse.xkcm = inbuff[1]; + mouse.ykcm = inbuff[2]; + inbuffi = 0; + } + break; + case 0x0b: /* set mouse threshold */ + if (inbuffi == 3) { + mouse.xth = inbuff[1]; + mouse.yth = inbuff[2]; + inbuffi = 0; + } + break; + case 0x0c: /* set mouse scale */ + if (inbuffi == 3) { + mouse.xscale = inbuff[1]; + mouse.yscale = inbuff[2]; + inbuffi = 0; + } + break; + case 0x0d: /* interrogate mouse position */ + + if (outbuffi < (OBS -6)){ + inbuffi = 0; + /* Test buttons */ + Buttons = 0; + /* Set buttons to show if up/down */ + if (mouse.stbuttons&1) Buttons |= 0x01; else Buttons |= 0x02; + if (mouse.stbuttons&2) Buttons |= 0x04; else Buttons |= 0x08; + + /* Mask off it didn't send last time */ + PrevButtons = TempButtons; + TempButtons = Buttons; + Buttons &= ~PrevButtons; + + IkbdSend (0xf7); + IkbdSend (Buttons); + IkbdSend (mouse.stx >> 8); + IkbdSend (mouse.stx); + IkbdSend (mouse.sty >> 8); + IkbdSend (mouse.sty); + } + break; + + case 0x0e: /* load mouse position */ + if (inbuffi == 6) { + inbuffi = 0; + mouse.x = exmousex = mouse.stx = (inbuff[2] << 8) | inbuff[3]; + mouse.y = exmousey = mouse.sty = (inbuff[4] << 8) | inbuff[5]; + } + break; + case 0x0f: /* set Y=0 at bottom */ + inbuffi = 0; + mouse.yinv = 1; + break; + case 0x10: /* set Y=0 at top */ + inbuffi = 0; + mouse.yinv = 0; + break; + case 0x11: /* resume */ + inbuffi = 0; + pause = 0; + break; + case 0x12: /* disable mouse */ + inbuffi = 0; + //mouse.mode = 0; + break; + case 0x13: /* pause output */ + inbuffi = 0; + //pause = 1; + break; + case 0x14: /* set joystick event reporting */ + inbuffi = 0; + joystick.mode = 1; + break; + case 0x15: /* set joystick interrogation mode */ + inbuffi = 0; + joystick.mode = 2; + break; + case 0x16: /* joystick interrogation */ + inbuffi = 0; + IkbdSend (0xfd); + IkbdSend (0); + IkbdSend (oldjoystate); + break; + case 0x17: /* set joystick monitoring */ + if (inbuffi == 2) { + inbuffi = 0; + joystick.rate = inbuff[1]; + joystick.mode = 4; + } + break; + case 0x18: /* set fire button monitoring */ + inbuffi = 0; + joystick.mode = 5; + break; + case 0x19: /* set joystick keycode mode */ + if (inbuffi == 7) { + inbuffi = 0; + joystick.mode = 3; + } + break; + case 0x1a: /* disable joysticks */ + inbuffi = 0; + // joystick.mode = 0; + break; + case 0x1b: /* time-of-day clock set */ + if (inbuffi == 7) { + inbuffi = 0; + } + break; + case 0x1c: /* interrogate time-of-day clock */ + inbuffi = 0; + IkbdSend (0xfc); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + IkbdSend (0x0); + break; + case 0x20: /* memory load */ + case 0x21: /* memory read */ + case 0x22: /* controller execute */ + inbuffi = 0; + break; + case 0x80: /* reset */ + if (inbuffi == 2) { + IkbdSend (0xf0); + inbuffi = 0; + mouse.buttons = mouse.stbuttons = 0; + switch (vid_shiftmode) { + case 0: + mouse.x = exmousex = mouse.stx = 160; + mouse.y = exmousey = mouse.sty = 100; + break; + case 1: + mouse.x = exmousex = mouse.stx = 320; + mouse.y = exmousey = mouse.sty = 100; + break; + case 2: + mouse.x = exmousex = mouse.stx = 320; + mouse.y = exmousey = mouse.sty = 200; + break; + } + } + break; + case 0x87: /* request button action */ + IkbdSend (0x07); + IkbdSend (mouse.button_action); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 0x88: /* request mouse mode */ + case 0x89: + case 0x8a: + switch (mouse.mode) { + case 1: + IkbdSend (0x08); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 2: + IkbdSend (0x09); + IkbdSend (mouse.xmax >> 8); + IkbdSend (mouse.xmax); + IkbdSend (mouse.ymax >> 8); + IkbdSend (mouse.ymax); + IkbdSend (0); + IkbdSend (0); + break; + case 3: + IkbdSend (0x09); + IkbdSend (mouse.xkcm); + IkbdSend (mouse.ykcm); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + } + inbuffi = 0; + mouse.mode = 1; + break; + case 0x8b: /* request mouse threshold */ + IkbdSend (0x0b); + IkbdSend (mouse.xth); + IkbdSend (mouse.yth); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x8c: /* request mouse scale */ + IkbdSend (0x0b); + IkbdSend (mouse.xscale); + IkbdSend (mouse.yscale); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x8f: /* request mouse vertical coordinates */ + case 0x90: + if (mouse.yinv) + IkbdSend (0x0f); + else + IkbdSend (0x10); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x92: /* disable mouse */ + if (mouse.mode) + IkbdSend (0); + else + IkbdSend (0x12); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + inbuffi = 0; + break; + case 0x94: /* request joystick mode */ + case 0x95: + case 0x99: /* set joystick keycode mode */ + inbuffi = 0; + switch (joystick.mode) { + case 1: + IkbdSend (0x14); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 2: + IkbdSend (0x15); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + IkbdSend (0); + break; + case 3: + IkbdSend (0x19); + IkbdSend (joystick.rx); + IkbdSend (joystick.ry); + IkbdSend (joystick.tx); + IkbdSend (joystick.ty); + IkbdSend (joystick.vx); + IkbdSend (joystick.vy); + break; + } + inbuffi = 0; + break; + case 0x9a: /* request joystick availability */ + if (joystick.mode) + IkbdSend (0); + else + IkbdSend (0x1a); + IkbdSend (joystick.rx); + IkbdSend (joystick.ry); + IkbdSend (joystick.tx); + IkbdSend (joystick.ty); + IkbdSend (joystick.vx); + IkbdSend (joystick.vy); + inbuffi = 0; + break; + } +} + +void IkbdSend (unsigned char outchar) +{ + if (outbuffi < (OBS - 1)) { + //Serial.print("q "); + //Serial.println(outchar); + outbuff[outbuffi++] = outchar; + } +} + +PROGMEM void IkbdWriteBuffer(void) +{ +/* +if (mouse.flag && (outbuffi < (OBS / 2))) { +IkbdMouse (); +} +if (joystick.mode==4) IkbdJoystick(); + */ + if (outbuffi>0) + { + if ((acia1_sr & 0x1) == 0) + { + //Serial.println("KW"); + acia1_sr |= 1; + if (acia1_cr & 0x80) { /* receiver interrupt enabled? */ + acia1_sr |= 0x80; + mfp_gpip &= (~0x10); + } + acia1_dr = outbuff[0]; + memcpy (&outbuff[0], &outbuff[1], (OBS - 1)); + outbuffi--; + } + } +} + +PROGMEM void IkbdKeyPress (unsigned short keysym) { + IkbdSend (keysym); +} + +PROGMEM void IkbdKeyRelease (unsigned short keysym) { + IkbdSend (0x80 | keysym); +} + +PROGMEM void IkbdMouseMotion (int x, int y) +{ + if (vid_shiftmode==1) {x+=x;} + if (vid_shiftmode==2) {x+=x; y+=y;} + mouse.x=x; mouse.y=y; +} + +PROGMEM void IkbdMousePress (int code) { + mouse.buttons |= code; +} + +PROGMEM void IkbdMouseRelease (int code) { + mouse.buttons &= ~code; +} + +PROGMEM void joystickevent (int joystate) +{ + //Has joystick moved? + if (joystate==oldjoystate) return; + oldjoystate=joystate; + //send fire button to mouse as well + if (mouse.mode==1 || mouse.mode==0) { + if (joystate&0x80) { + IkbdSend (0xf9); + IkbdSend (0); + IkbdSend (0); + } + else { + IkbdSend (0xf8); + IkbdSend (0); + IkbdSend (0); + } + } + //In event mode send the joystick event immediately + if (joystick.mode==1) { + IkbdSend (0xff); + IkbdSend (joystate); + } +} + +PROGMEM void IkbdLoop() +{ + int dx, dy; + if (mouse.mode==1) { + dx=mouse.x-mouse.stx; if (dx>127) dx=127; else if (dx<-127) dx=-127; + dy=mouse.y-mouse.sty; if (dy>127) dy=127; else if (dy<-127) dy=-127; + if (mouse.stbuttons!=mouse.buttons || dx>mouse.xth || dy>mouse.yth || -dx>mouse.xth || -dy>mouse.yth) { + if (outbuffi= 319) {mouse.stx = 319; dx = 127;} + if (mouse.sty >= 199) {mouse.sty = 199; dy = 127;} + break; + case 1: + if (mouse.stx >= 639) {mouse.stx = 639; dx = 127;} + if (mouse.sty >= 199) {mouse.sty = 199; dy = 127;} + break; + case 2: + if (mouse.stx >= 639) {mouse.stx = 639; dx = 127;} + if (mouse.sty >= 399) {mouse.sty = 399; dy = 127;} + break; + } + IkbdSend (0xf8 | (mouse.stbuttons&3)); + IkbdSend (dx); + IkbdSend (dy); + } + } + } + else { + if (mouse.x>mouse.xmax) mouse.x=mouse.xmax; + if (mouse.y>mouse.ymax) mouse.y=mouse.ymax; + mouse.stx=mouse.x; + mouse.sty=mouse.y; + mouse.stbuttons=mouse.buttons; + + } + if (joystick.mode==4) { + //Called at 200hz when joystick is in mode 4 + joytick+=2; + if (joytick>7); + IkbdSend (oldjoystate&15); + } +} + +PROGMEM void IkbdReset (void) +{ + joystick.mode=1; + mouse.mode=1; + IkbdSend(0x80); + IkbdSend(0xff); + IkbdSend(0x80); + acia1_cr=150; + acia1_sr=0; + acia1_dr=240; + acia2_cr=149; + acia2_sr=0; + acia2_dr=0; + inbuffi = 0; + outbuffi = 0; +} + + +PROGMEM void IkbdJoystickChange(int number, uint8 state) +{ + joystickevent(state); +} diff --git a/MCUME_teensy/teensycastaway/iopins.h b/MCUME_teensy/teensycastaway/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensycastaway/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensycastaway/jumptable.h b/MCUME_teensy/teensycastaway/jumptable.h new file mode 100644 index 0000000..70f6674 --- /dev/null +++ b/MCUME_teensy/teensycastaway/jumptable.h @@ -0,0 +1,4099 @@ +#include +PROGMEM static const opcode_func JumpTable[0x10000] = { +CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x0000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0010),CAST_OP(0x0018),CAST_OP(0x0018),CAST_OP(0x0018),CAST_OP(0x0018),CAST_OP(0x0018),CAST_OP(0x0018),CAST_OP(0x0018),CAST_OP(0x001F), +CAST_OP(0x0020),CAST_OP(0x0020),CAST_OP(0x0020),CAST_OP(0x0020),CAST_OP(0x0020),CAST_OP(0x0020),CAST_OP(0x0020),CAST_OP(0x0027),CAST_OP(0x0028),CAST_OP(0x0028),CAST_OP(0x0028),CAST_OP(0x0028),CAST_OP(0x0028),CAST_OP(0x0028),CAST_OP(0x0028),CAST_OP(0x0028), +CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0030),CAST_OP(0x0038),CAST_OP(0x0039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x003C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x0040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0050),CAST_OP(0x0058),CAST_OP(0x0058),CAST_OP(0x0058),CAST_OP(0x0058),CAST_OP(0x0058),CAST_OP(0x0058),CAST_OP(0x0058),CAST_OP(0x005F), +CAST_OP(0x0060),CAST_OP(0x0060),CAST_OP(0x0060),CAST_OP(0x0060),CAST_OP(0x0060),CAST_OP(0x0060),CAST_OP(0x0060),CAST_OP(0x0067),CAST_OP(0x0068),CAST_OP(0x0068),CAST_OP(0x0068),CAST_OP(0x0068),CAST_OP(0x0068),CAST_OP(0x0068),CAST_OP(0x0068),CAST_OP(0x0068), +CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0070),CAST_OP(0x0078),CAST_OP(0x0079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x007C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x0080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0090),CAST_OP(0x0098),CAST_OP(0x0098),CAST_OP(0x0098),CAST_OP(0x0098),CAST_OP(0x0098),CAST_OP(0x0098),CAST_OP(0x0098),CAST_OP(0x009F), +CAST_OP(0x00A0),CAST_OP(0x00A0),CAST_OP(0x00A0),CAST_OP(0x00A0),CAST_OP(0x00A0),CAST_OP(0x00A0),CAST_OP(0x00A0),CAST_OP(0x00A7),CAST_OP(0x00A8),CAST_OP(0x00A8),CAST_OP(0x00A8),CAST_OP(0x00A8),CAST_OP(0x00A8),CAST_OP(0x00A8),CAST_OP(0x00A8),CAST_OP(0x00A8), +CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B0),CAST_OP(0x00B8),CAST_OP(0x00B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x0200),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0210),CAST_OP(0x0218),CAST_OP(0x0218),CAST_OP(0x0218),CAST_OP(0x0218),CAST_OP(0x0218),CAST_OP(0x0218),CAST_OP(0x0218),CAST_OP(0x021F), +CAST_OP(0x0220),CAST_OP(0x0220),CAST_OP(0x0220),CAST_OP(0x0220),CAST_OP(0x0220),CAST_OP(0x0220),CAST_OP(0x0220),CAST_OP(0x0227),CAST_OP(0x0228),CAST_OP(0x0228),CAST_OP(0x0228),CAST_OP(0x0228),CAST_OP(0x0228),CAST_OP(0x0228),CAST_OP(0x0228),CAST_OP(0x0228), +CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0230),CAST_OP(0x0238),CAST_OP(0x0239),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x023C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x0240),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0250),CAST_OP(0x0258),CAST_OP(0x0258),CAST_OP(0x0258),CAST_OP(0x0258),CAST_OP(0x0258),CAST_OP(0x0258),CAST_OP(0x0258),CAST_OP(0x025F), +CAST_OP(0x0260),CAST_OP(0x0260),CAST_OP(0x0260),CAST_OP(0x0260),CAST_OP(0x0260),CAST_OP(0x0260),CAST_OP(0x0260),CAST_OP(0x0267),CAST_OP(0x0268),CAST_OP(0x0268),CAST_OP(0x0268),CAST_OP(0x0268),CAST_OP(0x0268),CAST_OP(0x0268),CAST_OP(0x0268),CAST_OP(0x0268), +CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0270),CAST_OP(0x0278),CAST_OP(0x0279),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x027C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x0280),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0290),CAST_OP(0x0298),CAST_OP(0x0298),CAST_OP(0x0298),CAST_OP(0x0298),CAST_OP(0x0298),CAST_OP(0x0298),CAST_OP(0x0298),CAST_OP(0x029F), +CAST_OP(0x02A0),CAST_OP(0x02A0),CAST_OP(0x02A0),CAST_OP(0x02A0),CAST_OP(0x02A0),CAST_OP(0x02A0),CAST_OP(0x02A0),CAST_OP(0x02A7),CAST_OP(0x02A8),CAST_OP(0x02A8),CAST_OP(0x02A8),CAST_OP(0x02A8),CAST_OP(0x02A8),CAST_OP(0x02A8),CAST_OP(0x02A8),CAST_OP(0x02A8), +CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B0),CAST_OP(0x02B8),CAST_OP(0x02B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x0400),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0410),CAST_OP(0x0418),CAST_OP(0x0418),CAST_OP(0x0418),CAST_OP(0x0418),CAST_OP(0x0418),CAST_OP(0x0418),CAST_OP(0x0418),CAST_OP(0x041F), +CAST_OP(0x0420),CAST_OP(0x0420),CAST_OP(0x0420),CAST_OP(0x0420),CAST_OP(0x0420),CAST_OP(0x0420),CAST_OP(0x0420),CAST_OP(0x0427),CAST_OP(0x0428),CAST_OP(0x0428),CAST_OP(0x0428),CAST_OP(0x0428),CAST_OP(0x0428),CAST_OP(0x0428),CAST_OP(0x0428),CAST_OP(0x0428), +CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0430),CAST_OP(0x0438),CAST_OP(0x0439),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x0440),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0450),CAST_OP(0x0458),CAST_OP(0x0458),CAST_OP(0x0458),CAST_OP(0x0458),CAST_OP(0x0458),CAST_OP(0x0458),CAST_OP(0x0458),CAST_OP(0x045F), +CAST_OP(0x0460),CAST_OP(0x0460),CAST_OP(0x0460),CAST_OP(0x0460),CAST_OP(0x0460),CAST_OP(0x0460),CAST_OP(0x0460),CAST_OP(0x0467),CAST_OP(0x0468),CAST_OP(0x0468),CAST_OP(0x0468),CAST_OP(0x0468),CAST_OP(0x0468),CAST_OP(0x0468),CAST_OP(0x0468),CAST_OP(0x0468), +CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0470),CAST_OP(0x0478),CAST_OP(0x0479),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x0480),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0490),CAST_OP(0x0498),CAST_OP(0x0498),CAST_OP(0x0498),CAST_OP(0x0498),CAST_OP(0x0498),CAST_OP(0x0498),CAST_OP(0x0498),CAST_OP(0x049F), +CAST_OP(0x04A0),CAST_OP(0x04A0),CAST_OP(0x04A0),CAST_OP(0x04A0),CAST_OP(0x04A0),CAST_OP(0x04A0),CAST_OP(0x04A0),CAST_OP(0x04A7),CAST_OP(0x04A8),CAST_OP(0x04A8),CAST_OP(0x04A8),CAST_OP(0x04A8),CAST_OP(0x04A8),CAST_OP(0x04A8),CAST_OP(0x04A8),CAST_OP(0x04A8), +CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B0),CAST_OP(0x04B8),CAST_OP(0x04B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x0600),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0610),CAST_OP(0x0618),CAST_OP(0x0618),CAST_OP(0x0618),CAST_OP(0x0618),CAST_OP(0x0618),CAST_OP(0x0618),CAST_OP(0x0618),CAST_OP(0x061F), +CAST_OP(0x0620),CAST_OP(0x0620),CAST_OP(0x0620),CAST_OP(0x0620),CAST_OP(0x0620),CAST_OP(0x0620),CAST_OP(0x0620),CAST_OP(0x0627),CAST_OP(0x0628),CAST_OP(0x0628),CAST_OP(0x0628),CAST_OP(0x0628),CAST_OP(0x0628),CAST_OP(0x0628),CAST_OP(0x0628),CAST_OP(0x0628), +CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0630),CAST_OP(0x0638),CAST_OP(0x0639),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x0640),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0650),CAST_OP(0x0658),CAST_OP(0x0658),CAST_OP(0x0658),CAST_OP(0x0658),CAST_OP(0x0658),CAST_OP(0x0658),CAST_OP(0x0658),CAST_OP(0x065F), +CAST_OP(0x0660),CAST_OP(0x0660),CAST_OP(0x0660),CAST_OP(0x0660),CAST_OP(0x0660),CAST_OP(0x0660),CAST_OP(0x0660),CAST_OP(0x0667),CAST_OP(0x0668),CAST_OP(0x0668),CAST_OP(0x0668),CAST_OP(0x0668),CAST_OP(0x0668),CAST_OP(0x0668),CAST_OP(0x0668),CAST_OP(0x0668), +CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0670),CAST_OP(0x0678),CAST_OP(0x0679),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x0680),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0690),CAST_OP(0x0698),CAST_OP(0x0698),CAST_OP(0x0698),CAST_OP(0x0698),CAST_OP(0x0698),CAST_OP(0x0698),CAST_OP(0x0698),CAST_OP(0x069F), +CAST_OP(0x06A0),CAST_OP(0x06A0),CAST_OP(0x06A0),CAST_OP(0x06A0),CAST_OP(0x06A0),CAST_OP(0x06A0),CAST_OP(0x06A0),CAST_OP(0x06A7),CAST_OP(0x06A8),CAST_OP(0x06A8),CAST_OP(0x06A8),CAST_OP(0x06A8),CAST_OP(0x06A8),CAST_OP(0x06A8),CAST_OP(0x06A8),CAST_OP(0x06A8), +CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B0),CAST_OP(0x06B8),CAST_OP(0x06B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x0800),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0810),CAST_OP(0x0818),CAST_OP(0x0818),CAST_OP(0x0818),CAST_OP(0x0818),CAST_OP(0x0818),CAST_OP(0x0818),CAST_OP(0x0818),CAST_OP(0x081F), +CAST_OP(0x0820),CAST_OP(0x0820),CAST_OP(0x0820),CAST_OP(0x0820),CAST_OP(0x0820),CAST_OP(0x0820),CAST_OP(0x0820),CAST_OP(0x0827),CAST_OP(0x0828),CAST_OP(0x0828),CAST_OP(0x0828),CAST_OP(0x0828),CAST_OP(0x0828),CAST_OP(0x0828),CAST_OP(0x0828),CAST_OP(0x0828), +CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0830),CAST_OP(0x0838),CAST_OP(0x0839),CAST_OP(0x083A),CAST_OP(0x083B),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x0840),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0850),CAST_OP(0x0858),CAST_OP(0x0858),CAST_OP(0x0858),CAST_OP(0x0858),CAST_OP(0x0858),CAST_OP(0x0858),CAST_OP(0x0858),CAST_OP(0x085F), +CAST_OP(0x0860),CAST_OP(0x0860),CAST_OP(0x0860),CAST_OP(0x0860),CAST_OP(0x0860),CAST_OP(0x0860),CAST_OP(0x0860),CAST_OP(0x0867),CAST_OP(0x0868),CAST_OP(0x0868),CAST_OP(0x0868),CAST_OP(0x0868),CAST_OP(0x0868),CAST_OP(0x0868),CAST_OP(0x0868),CAST_OP(0x0868), +CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0870),CAST_OP(0x0878),CAST_OP(0x0879),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x0880),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0890),CAST_OP(0x0898),CAST_OP(0x0898),CAST_OP(0x0898),CAST_OP(0x0898),CAST_OP(0x0898),CAST_OP(0x0898),CAST_OP(0x0898),CAST_OP(0x089F), +CAST_OP(0x08A0),CAST_OP(0x08A0),CAST_OP(0x08A0),CAST_OP(0x08A0),CAST_OP(0x08A0),CAST_OP(0x08A0),CAST_OP(0x08A0),CAST_OP(0x08A7),CAST_OP(0x08A8),CAST_OP(0x08A8),CAST_OP(0x08A8),CAST_OP(0x08A8),CAST_OP(0x08A8),CAST_OP(0x08A8),CAST_OP(0x08A8),CAST_OP(0x08A8), +CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B0),CAST_OP(0x08B8),CAST_OP(0x08B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x08C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D0),CAST_OP(0x08D8),CAST_OP(0x08D8),CAST_OP(0x08D8),CAST_OP(0x08D8),CAST_OP(0x08D8),CAST_OP(0x08D8),CAST_OP(0x08D8),CAST_OP(0x08DF), +CAST_OP(0x08E0),CAST_OP(0x08E0),CAST_OP(0x08E0),CAST_OP(0x08E0),CAST_OP(0x08E0),CAST_OP(0x08E0),CAST_OP(0x08E0),CAST_OP(0x08E7),CAST_OP(0x08E8),CAST_OP(0x08E8),CAST_OP(0x08E8),CAST_OP(0x08E8),CAST_OP(0x08E8),CAST_OP(0x08E8),CAST_OP(0x08E8),CAST_OP(0x08E8), +CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F0),CAST_OP(0x08F8),CAST_OP(0x08F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x0A00),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A10),CAST_OP(0x0A18),CAST_OP(0x0A18),CAST_OP(0x0A18),CAST_OP(0x0A18),CAST_OP(0x0A18),CAST_OP(0x0A18),CAST_OP(0x0A18),CAST_OP(0x0A1F), +CAST_OP(0x0A20),CAST_OP(0x0A20),CAST_OP(0x0A20),CAST_OP(0x0A20),CAST_OP(0x0A20),CAST_OP(0x0A20),CAST_OP(0x0A20),CAST_OP(0x0A27),CAST_OP(0x0A28),CAST_OP(0x0A28),CAST_OP(0x0A28),CAST_OP(0x0A28),CAST_OP(0x0A28),CAST_OP(0x0A28),CAST_OP(0x0A28),CAST_OP(0x0A28), +CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A30),CAST_OP(0x0A38),CAST_OP(0x0A39),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x0A3C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x0A40),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A50),CAST_OP(0x0A58),CAST_OP(0x0A58),CAST_OP(0x0A58),CAST_OP(0x0A58),CAST_OP(0x0A58),CAST_OP(0x0A58),CAST_OP(0x0A58),CAST_OP(0x0A5F), +CAST_OP(0x0A60),CAST_OP(0x0A60),CAST_OP(0x0A60),CAST_OP(0x0A60),CAST_OP(0x0A60),CAST_OP(0x0A60),CAST_OP(0x0A60),CAST_OP(0x0A67),CAST_OP(0x0A68),CAST_OP(0x0A68),CAST_OP(0x0A68),CAST_OP(0x0A68),CAST_OP(0x0A68),CAST_OP(0x0A68),CAST_OP(0x0A68),CAST_OP(0x0A68), +CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A70),CAST_OP(0x0A78),CAST_OP(0x0A79),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x0A7C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x0A80),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A90),CAST_OP(0x0A98),CAST_OP(0x0A98),CAST_OP(0x0A98),CAST_OP(0x0A98),CAST_OP(0x0A98),CAST_OP(0x0A98),CAST_OP(0x0A98),CAST_OP(0x0A9F), +CAST_OP(0x0AA0),CAST_OP(0x0AA0),CAST_OP(0x0AA0),CAST_OP(0x0AA0),CAST_OP(0x0AA0),CAST_OP(0x0AA0),CAST_OP(0x0AA0),CAST_OP(0x0AA7),CAST_OP(0x0AA8),CAST_OP(0x0AA8),CAST_OP(0x0AA8),CAST_OP(0x0AA8),CAST_OP(0x0AA8),CAST_OP(0x0AA8),CAST_OP(0x0AA8),CAST_OP(0x0AA8), +CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB0),CAST_OP(0x0AB8),CAST_OP(0x0AB9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x0C00),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C10),CAST_OP(0x0C18),CAST_OP(0x0C18),CAST_OP(0x0C18),CAST_OP(0x0C18),CAST_OP(0x0C18),CAST_OP(0x0C18),CAST_OP(0x0C18),CAST_OP(0x0C1F), +CAST_OP(0x0C20),CAST_OP(0x0C20),CAST_OP(0x0C20),CAST_OP(0x0C20),CAST_OP(0x0C20),CAST_OP(0x0C20),CAST_OP(0x0C20),CAST_OP(0x0C27),CAST_OP(0x0C28),CAST_OP(0x0C28),CAST_OP(0x0C28),CAST_OP(0x0C28),CAST_OP(0x0C28),CAST_OP(0x0C28),CAST_OP(0x0C28),CAST_OP(0x0C28), +CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C30),CAST_OP(0x0C38),CAST_OP(0x0C39),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x0C40),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C50),CAST_OP(0x0C58),CAST_OP(0x0C58),CAST_OP(0x0C58),CAST_OP(0x0C58),CAST_OP(0x0C58),CAST_OP(0x0C58),CAST_OP(0x0C58),CAST_OP(0x0C5F), +CAST_OP(0x0C60),CAST_OP(0x0C60),CAST_OP(0x0C60),CAST_OP(0x0C60),CAST_OP(0x0C60),CAST_OP(0x0C60),CAST_OP(0x0C60),CAST_OP(0x0C67),CAST_OP(0x0C68),CAST_OP(0x0C68),CAST_OP(0x0C68),CAST_OP(0x0C68),CAST_OP(0x0C68),CAST_OP(0x0C68),CAST_OP(0x0C68),CAST_OP(0x0C68), +CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C70),CAST_OP(0x0C78),CAST_OP(0x0C79),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x0C80),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C90),CAST_OP(0x0C98),CAST_OP(0x0C98),CAST_OP(0x0C98),CAST_OP(0x0C98),CAST_OP(0x0C98),CAST_OP(0x0C98),CAST_OP(0x0C98),CAST_OP(0x0C9F), +CAST_OP(0x0CA0),CAST_OP(0x0CA0),CAST_OP(0x0CA0),CAST_OP(0x0CA0),CAST_OP(0x0CA0),CAST_OP(0x0CA0),CAST_OP(0x0CA0),CAST_OP(0x0CA7),CAST_OP(0x0CA8),CAST_OP(0x0CA8),CAST_OP(0x0CA8),CAST_OP(0x0CA8),CAST_OP(0x0CA8),CAST_OP(0x0CA8),CAST_OP(0x0CA8),CAST_OP(0x0CA8), +CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB0),CAST_OP(0x0CB8),CAST_OP(0x0CB9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0100),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108),CAST_OP(0x0108), +CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0110),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x0118),CAST_OP(0x011F), +CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0120),CAST_OP(0x0127),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128),CAST_OP(0x0128), +CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0130),CAST_OP(0x0138),CAST_OP(0x0139),CAST_OP(0x013A),CAST_OP(0x013B),CAST_OP(0x013C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0140),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148),CAST_OP(0x0148), +CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0150),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x0158),CAST_OP(0x015F), +CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0160),CAST_OP(0x0167),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168),CAST_OP(0x0168), +CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0170),CAST_OP(0x0178),CAST_OP(0x0179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0180),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188),CAST_OP(0x0188), +CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0190),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x0198),CAST_OP(0x019F), +CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A0),CAST_OP(0x01A7),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8),CAST_OP(0x01A8), +CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B0),CAST_OP(0x01B8),CAST_OP(0x01B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C0),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8),CAST_OP(0x01C8), +CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D0),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01D8),CAST_OP(0x01DF), +CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E0),CAST_OP(0x01E7),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8),CAST_OP(0x01E8), +CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F0),CAST_OP(0x01F8),CAST_OP(0x01F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C0),CAST_OP(0x11C8),CAST_OP(0x11C8),CAST_OP(0x11C8),CAST_OP(0x11C8),CAST_OP(0x11C8),CAST_OP(0x11C8),CAST_OP(0x11C8),CAST_OP(0x11C8), +CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D0),CAST_OP(0x11D8),CAST_OP(0x11D8),CAST_OP(0x11D8),CAST_OP(0x11D8),CAST_OP(0x11D8),CAST_OP(0x11D8),CAST_OP(0x11D8),CAST_OP(0x11DF), +CAST_OP(0x11E0),CAST_OP(0x11E0),CAST_OP(0x11E0),CAST_OP(0x11E0),CAST_OP(0x11E0),CAST_OP(0x11E0),CAST_OP(0x11E0),CAST_OP(0x11E7),CAST_OP(0x11E8),CAST_OP(0x11E8),CAST_OP(0x11E8),CAST_OP(0x11E8),CAST_OP(0x11E8),CAST_OP(0x11E8),CAST_OP(0x11E8),CAST_OP(0x11E8), +CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F0),CAST_OP(0x11F8),CAST_OP(0x11F9),CAST_OP(0x11FA),CAST_OP(0x11FB),CAST_OP(0x11FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C0),CAST_OP(0x13C8),CAST_OP(0x13C8),CAST_OP(0x13C8),CAST_OP(0x13C8),CAST_OP(0x13C8),CAST_OP(0x13C8),CAST_OP(0x13C8),CAST_OP(0x13C8), +CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D0),CAST_OP(0x13D8),CAST_OP(0x13D8),CAST_OP(0x13D8),CAST_OP(0x13D8),CAST_OP(0x13D8),CAST_OP(0x13D8),CAST_OP(0x13D8),CAST_OP(0x13DF), +CAST_OP(0x13E0),CAST_OP(0x13E0),CAST_OP(0x13E0),CAST_OP(0x13E0),CAST_OP(0x13E0),CAST_OP(0x13E0),CAST_OP(0x13E0),CAST_OP(0x13E7),CAST_OP(0x13E8),CAST_OP(0x13E8),CAST_OP(0x13E8),CAST_OP(0x13E8),CAST_OP(0x13E8),CAST_OP(0x13E8),CAST_OP(0x13E8),CAST_OP(0x13E8), +CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F0),CAST_OP(0x13F8),CAST_OP(0x13F9),CAST_OP(0x13FA),CAST_OP(0x13FB),CAST_OP(0x13FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C0),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8),CAST_OP(0x10C8), +CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D0),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10D8),CAST_OP(0x10DF), +CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E0),CAST_OP(0x10E7),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8),CAST_OP(0x10E8), +CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F0),CAST_OP(0x10F8),CAST_OP(0x10F9),CAST_OP(0x10FA),CAST_OP(0x10FB),CAST_OP(0x10FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1100),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108),CAST_OP(0x1108), +CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1110),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x1118),CAST_OP(0x111F), +CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1120),CAST_OP(0x1127),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128),CAST_OP(0x1128), +CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1130),CAST_OP(0x1138),CAST_OP(0x1139),CAST_OP(0x113A),CAST_OP(0x113B),CAST_OP(0x113C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1000),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008),CAST_OP(0x1008), +CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1010),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x1018),CAST_OP(0x101F), +CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1020),CAST_OP(0x1027),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028),CAST_OP(0x1028), +CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1030),CAST_OP(0x1038),CAST_OP(0x1039),CAST_OP(0x103A),CAST_OP(0x103B),CAST_OP(0x103C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1080),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088),CAST_OP(0x1088), +CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1090),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x1098),CAST_OP(0x109F), +CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A0),CAST_OP(0x10A7),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8),CAST_OP(0x10A8), +CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B0),CAST_OP(0x10B8),CAST_OP(0x10B9),CAST_OP(0x10BA),CAST_OP(0x10BB),CAST_OP(0x10BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC0),CAST_OP(0x1EC8),CAST_OP(0x1EC8),CAST_OP(0x1EC8),CAST_OP(0x1EC8),CAST_OP(0x1EC8),CAST_OP(0x1EC8),CAST_OP(0x1EC8),CAST_OP(0x1EC8), +CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED0),CAST_OP(0x1ED8),CAST_OP(0x1ED8),CAST_OP(0x1ED8),CAST_OP(0x1ED8),CAST_OP(0x1ED8),CAST_OP(0x1ED8),CAST_OP(0x1ED8),CAST_OP(0x1EDF), +CAST_OP(0x1EE0),CAST_OP(0x1EE0),CAST_OP(0x1EE0),CAST_OP(0x1EE0),CAST_OP(0x1EE0),CAST_OP(0x1EE0),CAST_OP(0x1EE0),CAST_OP(0x1EE7),CAST_OP(0x1EE8),CAST_OP(0x1EE8),CAST_OP(0x1EE8),CAST_OP(0x1EE8),CAST_OP(0x1EE8),CAST_OP(0x1EE8),CAST_OP(0x1EE8),CAST_OP(0x1EE8), +CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF0),CAST_OP(0x1EF8),CAST_OP(0x1EF9),CAST_OP(0x1EFA),CAST_OP(0x1EFB),CAST_OP(0x1EFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F00),CAST_OP(0x1F08),CAST_OP(0x1F08),CAST_OP(0x1F08),CAST_OP(0x1F08),CAST_OP(0x1F08),CAST_OP(0x1F08),CAST_OP(0x1F08),CAST_OP(0x1F08), +CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F10),CAST_OP(0x1F18),CAST_OP(0x1F18),CAST_OP(0x1F18),CAST_OP(0x1F18),CAST_OP(0x1F18),CAST_OP(0x1F18),CAST_OP(0x1F18),CAST_OP(0x1F1F), +CAST_OP(0x1F20),CAST_OP(0x1F20),CAST_OP(0x1F20),CAST_OP(0x1F20),CAST_OP(0x1F20),CAST_OP(0x1F20),CAST_OP(0x1F20),CAST_OP(0x1F27),CAST_OP(0x1F28),CAST_OP(0x1F28),CAST_OP(0x1F28),CAST_OP(0x1F28),CAST_OP(0x1F28),CAST_OP(0x1F28),CAST_OP(0x1F28),CAST_OP(0x1F28), +CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F30),CAST_OP(0x1F38),CAST_OP(0x1F39),CAST_OP(0x1F3A),CAST_OP(0x1F3B),CAST_OP(0x1F3C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1140),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148),CAST_OP(0x1148), +CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1150),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x1158),CAST_OP(0x115F), +CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1160),CAST_OP(0x1167),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168),CAST_OP(0x1168), +CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1170),CAST_OP(0x1178),CAST_OP(0x1179),CAST_OP(0x117A),CAST_OP(0x117B),CAST_OP(0x117C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1180),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188),CAST_OP(0x1188), +CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1190),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x1198),CAST_OP(0x119F), +CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A0),CAST_OP(0x11A7),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8),CAST_OP(0x11A8), +CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B0),CAST_OP(0x11B8),CAST_OP(0x11B9),CAST_OP(0x11BA),CAST_OP(0x11BB),CAST_OP(0x11BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C0),CAST_OP(0x21C8),CAST_OP(0x21C8),CAST_OP(0x21C8),CAST_OP(0x21C8),CAST_OP(0x21C8),CAST_OP(0x21C8),CAST_OP(0x21C8),CAST_OP(0x21C8), +CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D0),CAST_OP(0x21D8),CAST_OP(0x21D8),CAST_OP(0x21D8),CAST_OP(0x21D8),CAST_OP(0x21D8),CAST_OP(0x21D8),CAST_OP(0x21D8),CAST_OP(0x21DF), +CAST_OP(0x21E0),CAST_OP(0x21E0),CAST_OP(0x21E0),CAST_OP(0x21E0),CAST_OP(0x21E0),CAST_OP(0x21E0),CAST_OP(0x21E0),CAST_OP(0x21E7),CAST_OP(0x21E8),CAST_OP(0x21E8),CAST_OP(0x21E8),CAST_OP(0x21E8),CAST_OP(0x21E8),CAST_OP(0x21E8),CAST_OP(0x21E8),CAST_OP(0x21E8), +CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F0),CAST_OP(0x21F8),CAST_OP(0x21F9),CAST_OP(0x21FA),CAST_OP(0x21FB),CAST_OP(0x21FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C0),CAST_OP(0x23C8),CAST_OP(0x23C8),CAST_OP(0x23C8),CAST_OP(0x23C8),CAST_OP(0x23C8),CAST_OP(0x23C8),CAST_OP(0x23C8),CAST_OP(0x23C8), +CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D0),CAST_OP(0x23D8),CAST_OP(0x23D8),CAST_OP(0x23D8),CAST_OP(0x23D8),CAST_OP(0x23D8),CAST_OP(0x23D8),CAST_OP(0x23D8),CAST_OP(0x23DF), +CAST_OP(0x23E0),CAST_OP(0x23E0),CAST_OP(0x23E0),CAST_OP(0x23E0),CAST_OP(0x23E0),CAST_OP(0x23E0),CAST_OP(0x23E0),CAST_OP(0x23E7),CAST_OP(0x23E8),CAST_OP(0x23E8),CAST_OP(0x23E8),CAST_OP(0x23E8),CAST_OP(0x23E8),CAST_OP(0x23E8),CAST_OP(0x23E8),CAST_OP(0x23E8), +CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F0),CAST_OP(0x23F8),CAST_OP(0x23F9),CAST_OP(0x23FA),CAST_OP(0x23FB),CAST_OP(0x23FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C0),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8),CAST_OP(0x20C8), +CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D0),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20D8),CAST_OP(0x20DF), +CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E0),CAST_OP(0x20E7),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8),CAST_OP(0x20E8), +CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F0),CAST_OP(0x20F8),CAST_OP(0x20F9),CAST_OP(0x20FA),CAST_OP(0x20FB),CAST_OP(0x20FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2100),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108),CAST_OP(0x2108), +CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2110),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x2118),CAST_OP(0x211F), +CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2120),CAST_OP(0x2127),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128),CAST_OP(0x2128), +CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2130),CAST_OP(0x2138),CAST_OP(0x2139),CAST_OP(0x213A),CAST_OP(0x213B),CAST_OP(0x213C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2000),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008),CAST_OP(0x2008), +CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2010),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x2018),CAST_OP(0x201F), +CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2020),CAST_OP(0x2027),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028),CAST_OP(0x2028), +CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2030),CAST_OP(0x2038),CAST_OP(0x2039),CAST_OP(0x203A),CAST_OP(0x203B),CAST_OP(0x203C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2040),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048),CAST_OP(0x2048), +CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2050),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x2058),CAST_OP(0x205F), +CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2060),CAST_OP(0x2067),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068),CAST_OP(0x2068), +CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2070),CAST_OP(0x2078),CAST_OP(0x2079),CAST_OP(0x207A),CAST_OP(0x207B),CAST_OP(0x207C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2080),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088),CAST_OP(0x2088), +CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2090),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x2098),CAST_OP(0x209F), +CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A0),CAST_OP(0x20A7),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8),CAST_OP(0x20A8), +CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B0),CAST_OP(0x20B8),CAST_OP(0x20B9),CAST_OP(0x20BA),CAST_OP(0x20BB),CAST_OP(0x20BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC0),CAST_OP(0x2EC8),CAST_OP(0x2EC8),CAST_OP(0x2EC8),CAST_OP(0x2EC8),CAST_OP(0x2EC8),CAST_OP(0x2EC8),CAST_OP(0x2EC8),CAST_OP(0x2EC8), +CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED0),CAST_OP(0x2ED8),CAST_OP(0x2ED8),CAST_OP(0x2ED8),CAST_OP(0x2ED8),CAST_OP(0x2ED8),CAST_OP(0x2ED8),CAST_OP(0x2ED8),CAST_OP(0x2EDF), +CAST_OP(0x2EE0),CAST_OP(0x2EE0),CAST_OP(0x2EE0),CAST_OP(0x2EE0),CAST_OP(0x2EE0),CAST_OP(0x2EE0),CAST_OP(0x2EE0),CAST_OP(0x2EE7),CAST_OP(0x2EE8),CAST_OP(0x2EE8),CAST_OP(0x2EE8),CAST_OP(0x2EE8),CAST_OP(0x2EE8),CAST_OP(0x2EE8),CAST_OP(0x2EE8),CAST_OP(0x2EE8), +CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF0),CAST_OP(0x2EF8),CAST_OP(0x2EF9),CAST_OP(0x2EFA),CAST_OP(0x2EFB),CAST_OP(0x2EFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F00),CAST_OP(0x2F08),CAST_OP(0x2F08),CAST_OP(0x2F08),CAST_OP(0x2F08),CAST_OP(0x2F08),CAST_OP(0x2F08),CAST_OP(0x2F08),CAST_OP(0x2F08), +CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F10),CAST_OP(0x2F18),CAST_OP(0x2F18),CAST_OP(0x2F18),CAST_OP(0x2F18),CAST_OP(0x2F18),CAST_OP(0x2F18),CAST_OP(0x2F18),CAST_OP(0x2F1F), +CAST_OP(0x2F20),CAST_OP(0x2F20),CAST_OP(0x2F20),CAST_OP(0x2F20),CAST_OP(0x2F20),CAST_OP(0x2F20),CAST_OP(0x2F20),CAST_OP(0x2F27),CAST_OP(0x2F28),CAST_OP(0x2F28),CAST_OP(0x2F28),CAST_OP(0x2F28),CAST_OP(0x2F28),CAST_OP(0x2F28),CAST_OP(0x2F28),CAST_OP(0x2F28), +CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F30),CAST_OP(0x2F38),CAST_OP(0x2F39),CAST_OP(0x2F3A),CAST_OP(0x2F3B),CAST_OP(0x2F3C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2140),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148),CAST_OP(0x2148), +CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2150),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x2158),CAST_OP(0x215F), +CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2160),CAST_OP(0x2167),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168),CAST_OP(0x2168), +CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2170),CAST_OP(0x2178),CAST_OP(0x2179),CAST_OP(0x217A),CAST_OP(0x217B),CAST_OP(0x217C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2180),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188),CAST_OP(0x2188), +CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2190),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x2198),CAST_OP(0x219F), +CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A0),CAST_OP(0x21A7),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8),CAST_OP(0x21A8), +CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B0),CAST_OP(0x21B8),CAST_OP(0x21B9),CAST_OP(0x21BA),CAST_OP(0x21BB),CAST_OP(0x21BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C0),CAST_OP(0x31C8),CAST_OP(0x31C8),CAST_OP(0x31C8),CAST_OP(0x31C8),CAST_OP(0x31C8),CAST_OP(0x31C8),CAST_OP(0x31C8),CAST_OP(0x31C8), +CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D0),CAST_OP(0x31D8),CAST_OP(0x31D8),CAST_OP(0x31D8),CAST_OP(0x31D8),CAST_OP(0x31D8),CAST_OP(0x31D8),CAST_OP(0x31D8),CAST_OP(0x31DF), +CAST_OP(0x31E0),CAST_OP(0x31E0),CAST_OP(0x31E0),CAST_OP(0x31E0),CAST_OP(0x31E0),CAST_OP(0x31E0),CAST_OP(0x31E0),CAST_OP(0x31E7),CAST_OP(0x31E8),CAST_OP(0x31E8),CAST_OP(0x31E8),CAST_OP(0x31E8),CAST_OP(0x31E8),CAST_OP(0x31E8),CAST_OP(0x31E8),CAST_OP(0x31E8), +CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F0),CAST_OP(0x31F8),CAST_OP(0x31F9),CAST_OP(0x31FA),CAST_OP(0x31FB),CAST_OP(0x31FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C0),CAST_OP(0x33C8),CAST_OP(0x33C8),CAST_OP(0x33C8),CAST_OP(0x33C8),CAST_OP(0x33C8),CAST_OP(0x33C8),CAST_OP(0x33C8),CAST_OP(0x33C8), +CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D0),CAST_OP(0x33D8),CAST_OP(0x33D8),CAST_OP(0x33D8),CAST_OP(0x33D8),CAST_OP(0x33D8),CAST_OP(0x33D8),CAST_OP(0x33D8),CAST_OP(0x33DF), +CAST_OP(0x33E0),CAST_OP(0x33E0),CAST_OP(0x33E0),CAST_OP(0x33E0),CAST_OP(0x33E0),CAST_OP(0x33E0),CAST_OP(0x33E0),CAST_OP(0x33E7),CAST_OP(0x33E8),CAST_OP(0x33E8),CAST_OP(0x33E8),CAST_OP(0x33E8),CAST_OP(0x33E8),CAST_OP(0x33E8),CAST_OP(0x33E8),CAST_OP(0x33E8), +CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F0),CAST_OP(0x33F8),CAST_OP(0x33F9),CAST_OP(0x33FA),CAST_OP(0x33FB),CAST_OP(0x33FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C0),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8),CAST_OP(0x30C8), +CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D0),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30D8),CAST_OP(0x30DF), +CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E0),CAST_OP(0x30E7),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8),CAST_OP(0x30E8), +CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F0),CAST_OP(0x30F8),CAST_OP(0x30F9),CAST_OP(0x30FA),CAST_OP(0x30FB),CAST_OP(0x30FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3100),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108),CAST_OP(0x3108), +CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3110),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x3118),CAST_OP(0x311F), +CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3120),CAST_OP(0x3127),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128),CAST_OP(0x3128), +CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3130),CAST_OP(0x3138),CAST_OP(0x3139),CAST_OP(0x313A),CAST_OP(0x313B),CAST_OP(0x313C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3000),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008),CAST_OP(0x3008), +CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3010),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x3018),CAST_OP(0x301F), +CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3020),CAST_OP(0x3027),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028),CAST_OP(0x3028), +CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3030),CAST_OP(0x3038),CAST_OP(0x3039),CAST_OP(0x303A),CAST_OP(0x303B),CAST_OP(0x303C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3040),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048),CAST_OP(0x3048), +CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3050),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x3058),CAST_OP(0x305F), +CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3060),CAST_OP(0x3067),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068),CAST_OP(0x3068), +CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3070),CAST_OP(0x3078),CAST_OP(0x3079),CAST_OP(0x307A),CAST_OP(0x307B),CAST_OP(0x307C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3080),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088),CAST_OP(0x3088), +CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3090),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x3098),CAST_OP(0x309F), +CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A0),CAST_OP(0x30A7),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8),CAST_OP(0x30A8), +CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B0),CAST_OP(0x30B8),CAST_OP(0x30B9),CAST_OP(0x30BA),CAST_OP(0x30BB),CAST_OP(0x30BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC0),CAST_OP(0x3EC8),CAST_OP(0x3EC8),CAST_OP(0x3EC8),CAST_OP(0x3EC8),CAST_OP(0x3EC8),CAST_OP(0x3EC8),CAST_OP(0x3EC8),CAST_OP(0x3EC8), +CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED0),CAST_OP(0x3ED8),CAST_OP(0x3ED8),CAST_OP(0x3ED8),CAST_OP(0x3ED8),CAST_OP(0x3ED8),CAST_OP(0x3ED8),CAST_OP(0x3ED8),CAST_OP(0x3EDF), +CAST_OP(0x3EE0),CAST_OP(0x3EE0),CAST_OP(0x3EE0),CAST_OP(0x3EE0),CAST_OP(0x3EE0),CAST_OP(0x3EE0),CAST_OP(0x3EE0),CAST_OP(0x3EE7),CAST_OP(0x3EE8),CAST_OP(0x3EE8),CAST_OP(0x3EE8),CAST_OP(0x3EE8),CAST_OP(0x3EE8),CAST_OP(0x3EE8),CAST_OP(0x3EE8),CAST_OP(0x3EE8), +CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF0),CAST_OP(0x3EF8),CAST_OP(0x3EF9),CAST_OP(0x3EFA),CAST_OP(0x3EFB),CAST_OP(0x3EFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F00),CAST_OP(0x3F08),CAST_OP(0x3F08),CAST_OP(0x3F08),CAST_OP(0x3F08),CAST_OP(0x3F08),CAST_OP(0x3F08),CAST_OP(0x3F08),CAST_OP(0x3F08), +CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F10),CAST_OP(0x3F18),CAST_OP(0x3F18),CAST_OP(0x3F18),CAST_OP(0x3F18),CAST_OP(0x3F18),CAST_OP(0x3F18),CAST_OP(0x3F18),CAST_OP(0x3F1F), +CAST_OP(0x3F20),CAST_OP(0x3F20),CAST_OP(0x3F20),CAST_OP(0x3F20),CAST_OP(0x3F20),CAST_OP(0x3F20),CAST_OP(0x3F20),CAST_OP(0x3F27),CAST_OP(0x3F28),CAST_OP(0x3F28),CAST_OP(0x3F28),CAST_OP(0x3F28),CAST_OP(0x3F28),CAST_OP(0x3F28),CAST_OP(0x3F28),CAST_OP(0x3F28), +CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F30),CAST_OP(0x3F38),CAST_OP(0x3F39),CAST_OP(0x3F3A),CAST_OP(0x3F3B),CAST_OP(0x3F3C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3140),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148),CAST_OP(0x3148), +CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3150),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x3158),CAST_OP(0x315F), +CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3160),CAST_OP(0x3167),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168),CAST_OP(0x3168), +CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3170),CAST_OP(0x3178),CAST_OP(0x3179),CAST_OP(0x317A),CAST_OP(0x317B),CAST_OP(0x317C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3180),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188),CAST_OP(0x3188), +CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3190),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x3198),CAST_OP(0x319F), +CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A0),CAST_OP(0x31A7),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8),CAST_OP(0x31A8), +CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B0),CAST_OP(0x31B8),CAST_OP(0x31B9),CAST_OP(0x31BA),CAST_OP(0x31BB),CAST_OP(0x31BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4010),CAST_OP(0x4018),CAST_OP(0x4018),CAST_OP(0x4018),CAST_OP(0x4018),CAST_OP(0x4018),CAST_OP(0x4018),CAST_OP(0x4018),CAST_OP(0x401F), +CAST_OP(0x4020),CAST_OP(0x4020),CAST_OP(0x4020),CAST_OP(0x4020),CAST_OP(0x4020),CAST_OP(0x4020),CAST_OP(0x4020),CAST_OP(0x4027),CAST_OP(0x4028),CAST_OP(0x4028),CAST_OP(0x4028),CAST_OP(0x4028),CAST_OP(0x4028),CAST_OP(0x4028),CAST_OP(0x4028),CAST_OP(0x4028), +CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4030),CAST_OP(0x4038),CAST_OP(0x4039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4050),CAST_OP(0x4058),CAST_OP(0x4058),CAST_OP(0x4058),CAST_OP(0x4058),CAST_OP(0x4058),CAST_OP(0x4058),CAST_OP(0x4058),CAST_OP(0x405F), +CAST_OP(0x4060),CAST_OP(0x4060),CAST_OP(0x4060),CAST_OP(0x4060),CAST_OP(0x4060),CAST_OP(0x4060),CAST_OP(0x4060),CAST_OP(0x4067),CAST_OP(0x4068),CAST_OP(0x4068),CAST_OP(0x4068),CAST_OP(0x4068),CAST_OP(0x4068),CAST_OP(0x4068),CAST_OP(0x4068),CAST_OP(0x4068), +CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4070),CAST_OP(0x4078),CAST_OP(0x4079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4090),CAST_OP(0x4098),CAST_OP(0x4098),CAST_OP(0x4098),CAST_OP(0x4098),CAST_OP(0x4098),CAST_OP(0x4098),CAST_OP(0x4098),CAST_OP(0x409F), +CAST_OP(0x40A0),CAST_OP(0x40A0),CAST_OP(0x40A0),CAST_OP(0x40A0),CAST_OP(0x40A0),CAST_OP(0x40A0),CAST_OP(0x40A0),CAST_OP(0x40A7),CAST_OP(0x40A8),CAST_OP(0x40A8),CAST_OP(0x40A8),CAST_OP(0x40A8),CAST_OP(0x40A8),CAST_OP(0x40A8),CAST_OP(0x40A8),CAST_OP(0x40A8), +CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B0),CAST_OP(0x40B8),CAST_OP(0x40B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x40C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D0),CAST_OP(0x40D8),CAST_OP(0x40D8),CAST_OP(0x40D8),CAST_OP(0x40D8),CAST_OP(0x40D8),CAST_OP(0x40D8),CAST_OP(0x40D8),CAST_OP(0x40DF), +CAST_OP(0x40E0),CAST_OP(0x40E0),CAST_OP(0x40E0),CAST_OP(0x40E0),CAST_OP(0x40E0),CAST_OP(0x40E0),CAST_OP(0x40E0),CAST_OP(0x40E7),CAST_OP(0x40E8),CAST_OP(0x40E8),CAST_OP(0x40E8),CAST_OP(0x40E8),CAST_OP(0x40E8),CAST_OP(0x40E8),CAST_OP(0x40E8),CAST_OP(0x40E8), +CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F0),CAST_OP(0x40F8),CAST_OP(0x40F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4200),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4210),CAST_OP(0x4218),CAST_OP(0x4218),CAST_OP(0x4218),CAST_OP(0x4218),CAST_OP(0x4218),CAST_OP(0x4218),CAST_OP(0x4218),CAST_OP(0x421F), +CAST_OP(0x4220),CAST_OP(0x4220),CAST_OP(0x4220),CAST_OP(0x4220),CAST_OP(0x4220),CAST_OP(0x4220),CAST_OP(0x4220),CAST_OP(0x4227),CAST_OP(0x4228),CAST_OP(0x4228),CAST_OP(0x4228),CAST_OP(0x4228),CAST_OP(0x4228),CAST_OP(0x4228),CAST_OP(0x4228),CAST_OP(0x4228), +CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4230),CAST_OP(0x4238),CAST_OP(0x4239),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4240),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4250),CAST_OP(0x4258),CAST_OP(0x4258),CAST_OP(0x4258),CAST_OP(0x4258),CAST_OP(0x4258),CAST_OP(0x4258),CAST_OP(0x4258),CAST_OP(0x425F), +CAST_OP(0x4260),CAST_OP(0x4260),CAST_OP(0x4260),CAST_OP(0x4260),CAST_OP(0x4260),CAST_OP(0x4260),CAST_OP(0x4260),CAST_OP(0x4267),CAST_OP(0x4268),CAST_OP(0x4268),CAST_OP(0x4268),CAST_OP(0x4268),CAST_OP(0x4268),CAST_OP(0x4268),CAST_OP(0x4268),CAST_OP(0x4268), +CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4270),CAST_OP(0x4278),CAST_OP(0x4279),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4280),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4290),CAST_OP(0x4298),CAST_OP(0x4298),CAST_OP(0x4298),CAST_OP(0x4298),CAST_OP(0x4298),CAST_OP(0x4298),CAST_OP(0x4298),CAST_OP(0x429F), +CAST_OP(0x42A0),CAST_OP(0x42A0),CAST_OP(0x42A0),CAST_OP(0x42A0),CAST_OP(0x42A0),CAST_OP(0x42A0),CAST_OP(0x42A0),CAST_OP(0x42A7),CAST_OP(0x42A8),CAST_OP(0x42A8),CAST_OP(0x42A8),CAST_OP(0x42A8),CAST_OP(0x42A8),CAST_OP(0x42A8),CAST_OP(0x42A8),CAST_OP(0x42A8), +CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B0),CAST_OP(0x42B8),CAST_OP(0x42B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4400),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4410),CAST_OP(0x4418),CAST_OP(0x4418),CAST_OP(0x4418),CAST_OP(0x4418),CAST_OP(0x4418),CAST_OP(0x4418),CAST_OP(0x4418),CAST_OP(0x441F), +CAST_OP(0x4420),CAST_OP(0x4420),CAST_OP(0x4420),CAST_OP(0x4420),CAST_OP(0x4420),CAST_OP(0x4420),CAST_OP(0x4420),CAST_OP(0x4427),CAST_OP(0x4428),CAST_OP(0x4428),CAST_OP(0x4428),CAST_OP(0x4428),CAST_OP(0x4428),CAST_OP(0x4428),CAST_OP(0x4428),CAST_OP(0x4428), +CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4430),CAST_OP(0x4438),CAST_OP(0x4439),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4440),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4450),CAST_OP(0x4458),CAST_OP(0x4458),CAST_OP(0x4458),CAST_OP(0x4458),CAST_OP(0x4458),CAST_OP(0x4458),CAST_OP(0x4458),CAST_OP(0x445F), +CAST_OP(0x4460),CAST_OP(0x4460),CAST_OP(0x4460),CAST_OP(0x4460),CAST_OP(0x4460),CAST_OP(0x4460),CAST_OP(0x4460),CAST_OP(0x4467),CAST_OP(0x4468),CAST_OP(0x4468),CAST_OP(0x4468),CAST_OP(0x4468),CAST_OP(0x4468),CAST_OP(0x4468),CAST_OP(0x4468),CAST_OP(0x4468), +CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4470),CAST_OP(0x4478),CAST_OP(0x4479),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4480),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4490),CAST_OP(0x4498),CAST_OP(0x4498),CAST_OP(0x4498),CAST_OP(0x4498),CAST_OP(0x4498),CAST_OP(0x4498),CAST_OP(0x4498),CAST_OP(0x449F), +CAST_OP(0x44A0),CAST_OP(0x44A0),CAST_OP(0x44A0),CAST_OP(0x44A0),CAST_OP(0x44A0),CAST_OP(0x44A0),CAST_OP(0x44A0),CAST_OP(0x44A7),CAST_OP(0x44A8),CAST_OP(0x44A8),CAST_OP(0x44A8),CAST_OP(0x44A8),CAST_OP(0x44A8),CAST_OP(0x44A8),CAST_OP(0x44A8),CAST_OP(0x44A8), +CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B0),CAST_OP(0x44B8),CAST_OP(0x44B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x44C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D0),CAST_OP(0x44D8),CAST_OP(0x44D8),CAST_OP(0x44D8),CAST_OP(0x44D8),CAST_OP(0x44D8),CAST_OP(0x44D8),CAST_OP(0x44D8),CAST_OP(0x44DF), +CAST_OP(0x44E0),CAST_OP(0x44E0),CAST_OP(0x44E0),CAST_OP(0x44E0),CAST_OP(0x44E0),CAST_OP(0x44E0),CAST_OP(0x44E0),CAST_OP(0x44E7),CAST_OP(0x44E8),CAST_OP(0x44E8),CAST_OP(0x44E8),CAST_OP(0x44E8),CAST_OP(0x44E8),CAST_OP(0x44E8),CAST_OP(0x44E8),CAST_OP(0x44E8), +CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F0),CAST_OP(0x44F8),CAST_OP(0x44F9),CAST_OP(0x44FA),CAST_OP(0x44FB),CAST_OP(0x44FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4600),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4610),CAST_OP(0x4618),CAST_OP(0x4618),CAST_OP(0x4618),CAST_OP(0x4618),CAST_OP(0x4618),CAST_OP(0x4618),CAST_OP(0x4618),CAST_OP(0x461F), +CAST_OP(0x4620),CAST_OP(0x4620),CAST_OP(0x4620),CAST_OP(0x4620),CAST_OP(0x4620),CAST_OP(0x4620),CAST_OP(0x4620),CAST_OP(0x4627),CAST_OP(0x4628),CAST_OP(0x4628),CAST_OP(0x4628),CAST_OP(0x4628),CAST_OP(0x4628),CAST_OP(0x4628),CAST_OP(0x4628),CAST_OP(0x4628), +CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4630),CAST_OP(0x4638),CAST_OP(0x4639),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4640),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4650),CAST_OP(0x4658),CAST_OP(0x4658),CAST_OP(0x4658),CAST_OP(0x4658),CAST_OP(0x4658),CAST_OP(0x4658),CAST_OP(0x4658),CAST_OP(0x465F), +CAST_OP(0x4660),CAST_OP(0x4660),CAST_OP(0x4660),CAST_OP(0x4660),CAST_OP(0x4660),CAST_OP(0x4660),CAST_OP(0x4660),CAST_OP(0x4667),CAST_OP(0x4668),CAST_OP(0x4668),CAST_OP(0x4668),CAST_OP(0x4668),CAST_OP(0x4668),CAST_OP(0x4668),CAST_OP(0x4668),CAST_OP(0x4668), +CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4670),CAST_OP(0x4678),CAST_OP(0x4679),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4680),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4690),CAST_OP(0x4698),CAST_OP(0x4698),CAST_OP(0x4698),CAST_OP(0x4698),CAST_OP(0x4698),CAST_OP(0x4698),CAST_OP(0x4698),CAST_OP(0x469F), +CAST_OP(0x46A0),CAST_OP(0x46A0),CAST_OP(0x46A0),CAST_OP(0x46A0),CAST_OP(0x46A0),CAST_OP(0x46A0),CAST_OP(0x46A0),CAST_OP(0x46A7),CAST_OP(0x46A8),CAST_OP(0x46A8),CAST_OP(0x46A8),CAST_OP(0x46A8),CAST_OP(0x46A8),CAST_OP(0x46A8),CAST_OP(0x46A8),CAST_OP(0x46A8), +CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B0),CAST_OP(0x46B8),CAST_OP(0x46B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x46C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D0),CAST_OP(0x46D8),CAST_OP(0x46D8),CAST_OP(0x46D8),CAST_OP(0x46D8),CAST_OP(0x46D8),CAST_OP(0x46D8),CAST_OP(0x46D8),CAST_OP(0x46DF), +CAST_OP(0x46E0),CAST_OP(0x46E0),CAST_OP(0x46E0),CAST_OP(0x46E0),CAST_OP(0x46E0),CAST_OP(0x46E0),CAST_OP(0x46E0),CAST_OP(0x46E7),CAST_OP(0x46E8),CAST_OP(0x46E8),CAST_OP(0x46E8),CAST_OP(0x46E8),CAST_OP(0x46E8),CAST_OP(0x46E8),CAST_OP(0x46E8),CAST_OP(0x46E8), +CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F0),CAST_OP(0x46F8),CAST_OP(0x46F9),CAST_OP(0x46FA),CAST_OP(0x46FB),CAST_OP(0x46FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4800),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4810),CAST_OP(0x4818),CAST_OP(0x4818),CAST_OP(0x4818),CAST_OP(0x4818),CAST_OP(0x4818),CAST_OP(0x4818),CAST_OP(0x4818),CAST_OP(0x481F), +CAST_OP(0x4820),CAST_OP(0x4820),CAST_OP(0x4820),CAST_OP(0x4820),CAST_OP(0x4820),CAST_OP(0x4820),CAST_OP(0x4820),CAST_OP(0x4827),CAST_OP(0x4828),CAST_OP(0x4828),CAST_OP(0x4828),CAST_OP(0x4828),CAST_OP(0x4828),CAST_OP(0x4828),CAST_OP(0x4828),CAST_OP(0x4828), +CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4830),CAST_OP(0x4838),CAST_OP(0x4839),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4840),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4850),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4868),CAST_OP(0x4868),CAST_OP(0x4868),CAST_OP(0x4868),CAST_OP(0x4868),CAST_OP(0x4868),CAST_OP(0x4868),CAST_OP(0x4868), +CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4870),CAST_OP(0x4878),CAST_OP(0x4879),CAST_OP(0x487A),CAST_OP(0x487B),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4880),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4890),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x48A0),CAST_OP(0x48A0),CAST_OP(0x48A0),CAST_OP(0x48A0),CAST_OP(0x48A0),CAST_OP(0x48A0),CAST_OP(0x48A0),CAST_OP(0x48A7),CAST_OP(0x48A8),CAST_OP(0x48A8),CAST_OP(0x48A8),CAST_OP(0x48A8),CAST_OP(0x48A8),CAST_OP(0x48A8),CAST_OP(0x48A8),CAST_OP(0x48A8), +CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B0),CAST_OP(0x48B8),CAST_OP(0x48B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x48C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x48D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x48E0),CAST_OP(0x48E0),CAST_OP(0x48E0),CAST_OP(0x48E0),CAST_OP(0x48E0),CAST_OP(0x48E0),CAST_OP(0x48E0),CAST_OP(0x48E7),CAST_OP(0x48E8),CAST_OP(0x48E8),CAST_OP(0x48E8),CAST_OP(0x48E8),CAST_OP(0x48E8),CAST_OP(0x48E8),CAST_OP(0x48E8),CAST_OP(0x48E8), +CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F0),CAST_OP(0x48F8),CAST_OP(0x48F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4A00),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A10),CAST_OP(0x4A18),CAST_OP(0x4A18),CAST_OP(0x4A18),CAST_OP(0x4A18),CAST_OP(0x4A18),CAST_OP(0x4A18),CAST_OP(0x4A18),CAST_OP(0x4A1F), +CAST_OP(0x4A20),CAST_OP(0x4A20),CAST_OP(0x4A20),CAST_OP(0x4A20),CAST_OP(0x4A20),CAST_OP(0x4A20),CAST_OP(0x4A20),CAST_OP(0x4A27),CAST_OP(0x4A28),CAST_OP(0x4A28),CAST_OP(0x4A28),CAST_OP(0x4A28),CAST_OP(0x4A28),CAST_OP(0x4A28),CAST_OP(0x4A28),CAST_OP(0x4A28), +CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A30),CAST_OP(0x4A38),CAST_OP(0x4A39),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4A40),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A50),CAST_OP(0x4A58),CAST_OP(0x4A58),CAST_OP(0x4A58),CAST_OP(0x4A58),CAST_OP(0x4A58),CAST_OP(0x4A58),CAST_OP(0x4A58),CAST_OP(0x4A5F), +CAST_OP(0x4A60),CAST_OP(0x4A60),CAST_OP(0x4A60),CAST_OP(0x4A60),CAST_OP(0x4A60),CAST_OP(0x4A60),CAST_OP(0x4A60),CAST_OP(0x4A67),CAST_OP(0x4A68),CAST_OP(0x4A68),CAST_OP(0x4A68),CAST_OP(0x4A68),CAST_OP(0x4A68),CAST_OP(0x4A68),CAST_OP(0x4A68),CAST_OP(0x4A68), +CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A70),CAST_OP(0x4A78),CAST_OP(0x4A79),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4A80),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A90),CAST_OP(0x4A98),CAST_OP(0x4A98),CAST_OP(0x4A98),CAST_OP(0x4A98),CAST_OP(0x4A98),CAST_OP(0x4A98),CAST_OP(0x4A98),CAST_OP(0x4A9F), +CAST_OP(0x4AA0),CAST_OP(0x4AA0),CAST_OP(0x4AA0),CAST_OP(0x4AA0),CAST_OP(0x4AA0),CAST_OP(0x4AA0),CAST_OP(0x4AA0),CAST_OP(0x4AA7),CAST_OP(0x4AA8),CAST_OP(0x4AA8),CAST_OP(0x4AA8),CAST_OP(0x4AA8),CAST_OP(0x4AA8),CAST_OP(0x4AA8),CAST_OP(0x4AA8),CAST_OP(0x4AA8), +CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB0),CAST_OP(0x4AB8),CAST_OP(0x4AB9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AC0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD0),CAST_OP(0x4AD8),CAST_OP(0x4AD8),CAST_OP(0x4AD8),CAST_OP(0x4AD8),CAST_OP(0x4AD8),CAST_OP(0x4AD8),CAST_OP(0x4AD8),CAST_OP(0x4ADF), +CAST_OP(0x4AE0),CAST_OP(0x4AE0),CAST_OP(0x4AE0),CAST_OP(0x4AE0),CAST_OP(0x4AE0),CAST_OP(0x4AE0),CAST_OP(0x4AE0),CAST_OP(0x4AE7),CAST_OP(0x4AE8),CAST_OP(0x4AE8),CAST_OP(0x4AE8),CAST_OP(0x4AE8),CAST_OP(0x4AE8),CAST_OP(0x4AE8),CAST_OP(0x4AE8),CAST_OP(0x4AE8), +CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF0),CAST_OP(0x4AF8),CAST_OP(0x4AF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C90),CAST_OP(0x4C98),CAST_OP(0x4C98),CAST_OP(0x4C98),CAST_OP(0x4C98),CAST_OP(0x4C98),CAST_OP(0x4C98),CAST_OP(0x4C98),CAST_OP(0x4C9F), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4CA8),CAST_OP(0x4CA8),CAST_OP(0x4CA8),CAST_OP(0x4CA8),CAST_OP(0x4CA8),CAST_OP(0x4CA8),CAST_OP(0x4CA8),CAST_OP(0x4CA8), +CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB0),CAST_OP(0x4CB8),CAST_OP(0x4CB9),CAST_OP(0x4CBA),CAST_OP(0x4CBB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD0),CAST_OP(0x4CD8),CAST_OP(0x4CD8),CAST_OP(0x4CD8),CAST_OP(0x4CD8),CAST_OP(0x4CD8),CAST_OP(0x4CD8),CAST_OP(0x4CD8),CAST_OP(0x4CDF), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4CE8),CAST_OP(0x4CE8),CAST_OP(0x4CE8),CAST_OP(0x4CE8),CAST_OP(0x4CE8),CAST_OP(0x4CE8),CAST_OP(0x4CE8),CAST_OP(0x4CE8), +CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF0),CAST_OP(0x4CF8),CAST_OP(0x4CF9),CAST_OP(0x4CFA),CAST_OP(0x4CFB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40),CAST_OP(0x4E40), +CAST_OP(0x4E50),CAST_OP(0x4E50),CAST_OP(0x4E50),CAST_OP(0x4E50),CAST_OP(0x4E50),CAST_OP(0x4E50),CAST_OP(0x4E50),CAST_OP(0x4E57),CAST_OP(0x4E58),CAST_OP(0x4E58),CAST_OP(0x4E58),CAST_OP(0x4E58),CAST_OP(0x4E58),CAST_OP(0x4E58),CAST_OP(0x4E58),CAST_OP(0x4E5F), +CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E60),CAST_OP(0x4E68),CAST_OP(0x4E68),CAST_OP(0x4E68),CAST_OP(0x4E68),CAST_OP(0x4E68),CAST_OP(0x4E68),CAST_OP(0x4E68),CAST_OP(0x4E68), +CAST_OP(0x4E70),CAST_OP(0x4E71),CAST_OP(0x4E72),CAST_OP(0x4E73),CAST_OP(0x4AFC),CAST_OP(0x4E75),CAST_OP(0x4E76),CAST_OP(0x4E77),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4E90),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4EA8),CAST_OP(0x4EA8),CAST_OP(0x4EA8),CAST_OP(0x4EA8),CAST_OP(0x4EA8),CAST_OP(0x4EA8),CAST_OP(0x4EA8),CAST_OP(0x4EA8), +CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB0),CAST_OP(0x4EB8),CAST_OP(0x4EB9),CAST_OP(0x4EBA),CAST_OP(0x4EBB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4ED0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4EE8),CAST_OP(0x4EE8),CAST_OP(0x4EE8),CAST_OP(0x4EE8),CAST_OP(0x4EE8),CAST_OP(0x4EE8),CAST_OP(0x4EE8),CAST_OP(0x4EE8), +CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF0),CAST_OP(0x4EF8),CAST_OP(0x4EF9),CAST_OP(0x4EFA),CAST_OP(0x4EFB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4180),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4190),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x4198),CAST_OP(0x419F), +CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A0),CAST_OP(0x41A7),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8),CAST_OP(0x41A8), +CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B0),CAST_OP(0x41B8),CAST_OP(0x41B9),CAST_OP(0x41BA),CAST_OP(0x41BB),CAST_OP(0x41BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x41D0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8),CAST_OP(0x41E8), +CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F0),CAST_OP(0x41F8),CAST_OP(0x41F9),CAST_OP(0x41FA),CAST_OP(0x41FB),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C0),CAST_OP(0x50C8),CAST_OP(0x50C8),CAST_OP(0x50C8),CAST_OP(0x50C8),CAST_OP(0x50C8),CAST_OP(0x50C8),CAST_OP(0x50C8),CAST_OP(0x50C8), +CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D0),CAST_OP(0x50D8),CAST_OP(0x50D8),CAST_OP(0x50D8),CAST_OP(0x50D8),CAST_OP(0x50D8),CAST_OP(0x50D8),CAST_OP(0x50D8),CAST_OP(0x50DF), +CAST_OP(0x50E0),CAST_OP(0x50E0),CAST_OP(0x50E0),CAST_OP(0x50E0),CAST_OP(0x50E0),CAST_OP(0x50E0),CAST_OP(0x50E0),CAST_OP(0x50E7),CAST_OP(0x50E8),CAST_OP(0x50E8),CAST_OP(0x50E8),CAST_OP(0x50E8),CAST_OP(0x50E8),CAST_OP(0x50E8),CAST_OP(0x50E8),CAST_OP(0x50E8), +CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F0),CAST_OP(0x50F8),CAST_OP(0x50F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C0),CAST_OP(0x51C8),CAST_OP(0x51C8),CAST_OP(0x51C8),CAST_OP(0x51C8),CAST_OP(0x51C8),CAST_OP(0x51C8),CAST_OP(0x51C8),CAST_OP(0x51C8), +CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D0),CAST_OP(0x51D8),CAST_OP(0x51D8),CAST_OP(0x51D8),CAST_OP(0x51D8),CAST_OP(0x51D8),CAST_OP(0x51D8),CAST_OP(0x51D8),CAST_OP(0x51DF), +CAST_OP(0x51E0),CAST_OP(0x51E0),CAST_OP(0x51E0),CAST_OP(0x51E0),CAST_OP(0x51E0),CAST_OP(0x51E0),CAST_OP(0x51E0),CAST_OP(0x51E7),CAST_OP(0x51E8),CAST_OP(0x51E8),CAST_OP(0x51E8),CAST_OP(0x51E8),CAST_OP(0x51E8),CAST_OP(0x51E8),CAST_OP(0x51E8),CAST_OP(0x51E8), +CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F0),CAST_OP(0x51F8),CAST_OP(0x51F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C0),CAST_OP(0x52C8),CAST_OP(0x52C8),CAST_OP(0x52C8),CAST_OP(0x52C8),CAST_OP(0x52C8),CAST_OP(0x52C8),CAST_OP(0x52C8),CAST_OP(0x52C8), +CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D0),CAST_OP(0x52D8),CAST_OP(0x52D8),CAST_OP(0x52D8),CAST_OP(0x52D8),CAST_OP(0x52D8),CAST_OP(0x52D8),CAST_OP(0x52D8),CAST_OP(0x52DF), +CAST_OP(0x52E0),CAST_OP(0x52E0),CAST_OP(0x52E0),CAST_OP(0x52E0),CAST_OP(0x52E0),CAST_OP(0x52E0),CAST_OP(0x52E0),CAST_OP(0x52E7),CAST_OP(0x52E8),CAST_OP(0x52E8),CAST_OP(0x52E8),CAST_OP(0x52E8),CAST_OP(0x52E8),CAST_OP(0x52E8),CAST_OP(0x52E8),CAST_OP(0x52E8), +CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F0),CAST_OP(0x52F8),CAST_OP(0x52F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C0),CAST_OP(0x53C8),CAST_OP(0x53C8),CAST_OP(0x53C8),CAST_OP(0x53C8),CAST_OP(0x53C8),CAST_OP(0x53C8),CAST_OP(0x53C8),CAST_OP(0x53C8), +CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D0),CAST_OP(0x53D8),CAST_OP(0x53D8),CAST_OP(0x53D8),CAST_OP(0x53D8),CAST_OP(0x53D8),CAST_OP(0x53D8),CAST_OP(0x53D8),CAST_OP(0x53DF), +CAST_OP(0x53E0),CAST_OP(0x53E0),CAST_OP(0x53E0),CAST_OP(0x53E0),CAST_OP(0x53E0),CAST_OP(0x53E0),CAST_OP(0x53E0),CAST_OP(0x53E7),CAST_OP(0x53E8),CAST_OP(0x53E8),CAST_OP(0x53E8),CAST_OP(0x53E8),CAST_OP(0x53E8),CAST_OP(0x53E8),CAST_OP(0x53E8),CAST_OP(0x53E8), +CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F0),CAST_OP(0x53F8),CAST_OP(0x53F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C0),CAST_OP(0x54C8),CAST_OP(0x54C8),CAST_OP(0x54C8),CAST_OP(0x54C8),CAST_OP(0x54C8),CAST_OP(0x54C8),CAST_OP(0x54C8),CAST_OP(0x54C8), +CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D0),CAST_OP(0x54D8),CAST_OP(0x54D8),CAST_OP(0x54D8),CAST_OP(0x54D8),CAST_OP(0x54D8),CAST_OP(0x54D8),CAST_OP(0x54D8),CAST_OP(0x54DF), +CAST_OP(0x54E0),CAST_OP(0x54E0),CAST_OP(0x54E0),CAST_OP(0x54E0),CAST_OP(0x54E0),CAST_OP(0x54E0),CAST_OP(0x54E0),CAST_OP(0x54E7),CAST_OP(0x54E8),CAST_OP(0x54E8),CAST_OP(0x54E8),CAST_OP(0x54E8),CAST_OP(0x54E8),CAST_OP(0x54E8),CAST_OP(0x54E8),CAST_OP(0x54E8), +CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F0),CAST_OP(0x54F8),CAST_OP(0x54F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C0),CAST_OP(0x55C8),CAST_OP(0x55C8),CAST_OP(0x55C8),CAST_OP(0x55C8),CAST_OP(0x55C8),CAST_OP(0x55C8),CAST_OP(0x55C8),CAST_OP(0x55C8), +CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D0),CAST_OP(0x55D8),CAST_OP(0x55D8),CAST_OP(0x55D8),CAST_OP(0x55D8),CAST_OP(0x55D8),CAST_OP(0x55D8),CAST_OP(0x55D8),CAST_OP(0x55DF), +CAST_OP(0x55E0),CAST_OP(0x55E0),CAST_OP(0x55E0),CAST_OP(0x55E0),CAST_OP(0x55E0),CAST_OP(0x55E0),CAST_OP(0x55E0),CAST_OP(0x55E7),CAST_OP(0x55E8),CAST_OP(0x55E8),CAST_OP(0x55E8),CAST_OP(0x55E8),CAST_OP(0x55E8),CAST_OP(0x55E8),CAST_OP(0x55E8),CAST_OP(0x55E8), +CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F0),CAST_OP(0x55F8),CAST_OP(0x55F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C0),CAST_OP(0x56C8),CAST_OP(0x56C8),CAST_OP(0x56C8),CAST_OP(0x56C8),CAST_OP(0x56C8),CAST_OP(0x56C8),CAST_OP(0x56C8),CAST_OP(0x56C8), +CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D0),CAST_OP(0x56D8),CAST_OP(0x56D8),CAST_OP(0x56D8),CAST_OP(0x56D8),CAST_OP(0x56D8),CAST_OP(0x56D8),CAST_OP(0x56D8),CAST_OP(0x56DF), +CAST_OP(0x56E0),CAST_OP(0x56E0),CAST_OP(0x56E0),CAST_OP(0x56E0),CAST_OP(0x56E0),CAST_OP(0x56E0),CAST_OP(0x56E0),CAST_OP(0x56E7),CAST_OP(0x56E8),CAST_OP(0x56E8),CAST_OP(0x56E8),CAST_OP(0x56E8),CAST_OP(0x56E8),CAST_OP(0x56E8),CAST_OP(0x56E8),CAST_OP(0x56E8), +CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F0),CAST_OP(0x56F8),CAST_OP(0x56F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C0),CAST_OP(0x57C8),CAST_OP(0x57C8),CAST_OP(0x57C8),CAST_OP(0x57C8),CAST_OP(0x57C8),CAST_OP(0x57C8),CAST_OP(0x57C8),CAST_OP(0x57C8), +CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D0),CAST_OP(0x57D8),CAST_OP(0x57D8),CAST_OP(0x57D8),CAST_OP(0x57D8),CAST_OP(0x57D8),CAST_OP(0x57D8),CAST_OP(0x57D8),CAST_OP(0x57DF), +CAST_OP(0x57E0),CAST_OP(0x57E0),CAST_OP(0x57E0),CAST_OP(0x57E0),CAST_OP(0x57E0),CAST_OP(0x57E0),CAST_OP(0x57E0),CAST_OP(0x57E7),CAST_OP(0x57E8),CAST_OP(0x57E8),CAST_OP(0x57E8),CAST_OP(0x57E8),CAST_OP(0x57E8),CAST_OP(0x57E8),CAST_OP(0x57E8),CAST_OP(0x57E8), +CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F0),CAST_OP(0x57F8),CAST_OP(0x57F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C0),CAST_OP(0x58C8),CAST_OP(0x58C8),CAST_OP(0x58C8),CAST_OP(0x58C8),CAST_OP(0x58C8),CAST_OP(0x58C8),CAST_OP(0x58C8),CAST_OP(0x58C8), +CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D0),CAST_OP(0x58D8),CAST_OP(0x58D8),CAST_OP(0x58D8),CAST_OP(0x58D8),CAST_OP(0x58D8),CAST_OP(0x58D8),CAST_OP(0x58D8),CAST_OP(0x58DF), +CAST_OP(0x58E0),CAST_OP(0x58E0),CAST_OP(0x58E0),CAST_OP(0x58E0),CAST_OP(0x58E0),CAST_OP(0x58E0),CAST_OP(0x58E0),CAST_OP(0x58E7),CAST_OP(0x58E8),CAST_OP(0x58E8),CAST_OP(0x58E8),CAST_OP(0x58E8),CAST_OP(0x58E8),CAST_OP(0x58E8),CAST_OP(0x58E8),CAST_OP(0x58E8), +CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F0),CAST_OP(0x58F8),CAST_OP(0x58F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C0),CAST_OP(0x59C8),CAST_OP(0x59C8),CAST_OP(0x59C8),CAST_OP(0x59C8),CAST_OP(0x59C8),CAST_OP(0x59C8),CAST_OP(0x59C8),CAST_OP(0x59C8), +CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D0),CAST_OP(0x59D8),CAST_OP(0x59D8),CAST_OP(0x59D8),CAST_OP(0x59D8),CAST_OP(0x59D8),CAST_OP(0x59D8),CAST_OP(0x59D8),CAST_OP(0x59DF), +CAST_OP(0x59E0),CAST_OP(0x59E0),CAST_OP(0x59E0),CAST_OP(0x59E0),CAST_OP(0x59E0),CAST_OP(0x59E0),CAST_OP(0x59E0),CAST_OP(0x59E7),CAST_OP(0x59E8),CAST_OP(0x59E8),CAST_OP(0x59E8),CAST_OP(0x59E8),CAST_OP(0x59E8),CAST_OP(0x59E8),CAST_OP(0x59E8),CAST_OP(0x59E8), +CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F0),CAST_OP(0x59F8),CAST_OP(0x59F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC0),CAST_OP(0x5AC8),CAST_OP(0x5AC8),CAST_OP(0x5AC8),CAST_OP(0x5AC8),CAST_OP(0x5AC8),CAST_OP(0x5AC8),CAST_OP(0x5AC8),CAST_OP(0x5AC8), +CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD0),CAST_OP(0x5AD8),CAST_OP(0x5AD8),CAST_OP(0x5AD8),CAST_OP(0x5AD8),CAST_OP(0x5AD8),CAST_OP(0x5AD8),CAST_OP(0x5AD8),CAST_OP(0x5ADF), +CAST_OP(0x5AE0),CAST_OP(0x5AE0),CAST_OP(0x5AE0),CAST_OP(0x5AE0),CAST_OP(0x5AE0),CAST_OP(0x5AE0),CAST_OP(0x5AE0),CAST_OP(0x5AE7),CAST_OP(0x5AE8),CAST_OP(0x5AE8),CAST_OP(0x5AE8),CAST_OP(0x5AE8),CAST_OP(0x5AE8),CAST_OP(0x5AE8),CAST_OP(0x5AE8),CAST_OP(0x5AE8), +CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF0),CAST_OP(0x5AF8),CAST_OP(0x5AF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC0),CAST_OP(0x5BC8),CAST_OP(0x5BC8),CAST_OP(0x5BC8),CAST_OP(0x5BC8),CAST_OP(0x5BC8),CAST_OP(0x5BC8),CAST_OP(0x5BC8),CAST_OP(0x5BC8), +CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD0),CAST_OP(0x5BD8),CAST_OP(0x5BD8),CAST_OP(0x5BD8),CAST_OP(0x5BD8),CAST_OP(0x5BD8),CAST_OP(0x5BD8),CAST_OP(0x5BD8),CAST_OP(0x5BDF), +CAST_OP(0x5BE0),CAST_OP(0x5BE0),CAST_OP(0x5BE0),CAST_OP(0x5BE0),CAST_OP(0x5BE0),CAST_OP(0x5BE0),CAST_OP(0x5BE0),CAST_OP(0x5BE7),CAST_OP(0x5BE8),CAST_OP(0x5BE8),CAST_OP(0x5BE8),CAST_OP(0x5BE8),CAST_OP(0x5BE8),CAST_OP(0x5BE8),CAST_OP(0x5BE8),CAST_OP(0x5BE8), +CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF0),CAST_OP(0x5BF8),CAST_OP(0x5BF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC0),CAST_OP(0x5CC8),CAST_OP(0x5CC8),CAST_OP(0x5CC8),CAST_OP(0x5CC8),CAST_OP(0x5CC8),CAST_OP(0x5CC8),CAST_OP(0x5CC8),CAST_OP(0x5CC8), +CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD0),CAST_OP(0x5CD8),CAST_OP(0x5CD8),CAST_OP(0x5CD8),CAST_OP(0x5CD8),CAST_OP(0x5CD8),CAST_OP(0x5CD8),CAST_OP(0x5CD8),CAST_OP(0x5CDF), +CAST_OP(0x5CE0),CAST_OP(0x5CE0),CAST_OP(0x5CE0),CAST_OP(0x5CE0),CAST_OP(0x5CE0),CAST_OP(0x5CE0),CAST_OP(0x5CE0),CAST_OP(0x5CE7),CAST_OP(0x5CE8),CAST_OP(0x5CE8),CAST_OP(0x5CE8),CAST_OP(0x5CE8),CAST_OP(0x5CE8),CAST_OP(0x5CE8),CAST_OP(0x5CE8),CAST_OP(0x5CE8), +CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF0),CAST_OP(0x5CF8),CAST_OP(0x5CF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC0),CAST_OP(0x5DC8),CAST_OP(0x5DC8),CAST_OP(0x5DC8),CAST_OP(0x5DC8),CAST_OP(0x5DC8),CAST_OP(0x5DC8),CAST_OP(0x5DC8),CAST_OP(0x5DC8), +CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD0),CAST_OP(0x5DD8),CAST_OP(0x5DD8),CAST_OP(0x5DD8),CAST_OP(0x5DD8),CAST_OP(0x5DD8),CAST_OP(0x5DD8),CAST_OP(0x5DD8),CAST_OP(0x5DDF), +CAST_OP(0x5DE0),CAST_OP(0x5DE0),CAST_OP(0x5DE0),CAST_OP(0x5DE0),CAST_OP(0x5DE0),CAST_OP(0x5DE0),CAST_OP(0x5DE0),CAST_OP(0x5DE7),CAST_OP(0x5DE8),CAST_OP(0x5DE8),CAST_OP(0x5DE8),CAST_OP(0x5DE8),CAST_OP(0x5DE8),CAST_OP(0x5DE8),CAST_OP(0x5DE8),CAST_OP(0x5DE8), +CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF0),CAST_OP(0x5DF8),CAST_OP(0x5DF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x5000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5010),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x5018),CAST_OP(0x501F), +CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5020),CAST_OP(0x5027),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028),CAST_OP(0x5028), +CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5030),CAST_OP(0x5038),CAST_OP(0x5039),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5040),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048),CAST_OP(0x5048), +CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5050),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x5058),CAST_OP(0x505F), +CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5060),CAST_OP(0x5067),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068),CAST_OP(0x5068), +CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5070),CAST_OP(0x5078),CAST_OP(0x5079),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5080),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088),CAST_OP(0x5088), +CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5090),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x5098),CAST_OP(0x509F), +CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A0),CAST_OP(0x50A7),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8),CAST_OP(0x50A8), +CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B0),CAST_OP(0x50B8),CAST_OP(0x50B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC0),CAST_OP(0x5EC8),CAST_OP(0x5EC8),CAST_OP(0x5EC8),CAST_OP(0x5EC8),CAST_OP(0x5EC8),CAST_OP(0x5EC8),CAST_OP(0x5EC8),CAST_OP(0x5EC8), +CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED0),CAST_OP(0x5ED8),CAST_OP(0x5ED8),CAST_OP(0x5ED8),CAST_OP(0x5ED8),CAST_OP(0x5ED8),CAST_OP(0x5ED8),CAST_OP(0x5ED8),CAST_OP(0x5EDF), +CAST_OP(0x5EE0),CAST_OP(0x5EE0),CAST_OP(0x5EE0),CAST_OP(0x5EE0),CAST_OP(0x5EE0),CAST_OP(0x5EE0),CAST_OP(0x5EE0),CAST_OP(0x5EE7),CAST_OP(0x5EE8),CAST_OP(0x5EE8),CAST_OP(0x5EE8),CAST_OP(0x5EE8),CAST_OP(0x5EE8),CAST_OP(0x5EE8),CAST_OP(0x5EE8),CAST_OP(0x5EE8), +CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF0),CAST_OP(0x5EF8),CAST_OP(0x5EF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x5100),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5110),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x5118),CAST_OP(0x511F), +CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5120),CAST_OP(0x5127),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128),CAST_OP(0x5128), +CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5130),CAST_OP(0x5138),CAST_OP(0x5139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5140),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148),CAST_OP(0x5148), +CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5150),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x5158),CAST_OP(0x515F), +CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5160),CAST_OP(0x5167),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168),CAST_OP(0x5168), +CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5170),CAST_OP(0x5178),CAST_OP(0x5179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5180),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188),CAST_OP(0x5188), +CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5190),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x5198),CAST_OP(0x519F), +CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A0),CAST_OP(0x51A7),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8),CAST_OP(0x51A8), +CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B0),CAST_OP(0x51B8),CAST_OP(0x51B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC0),CAST_OP(0x5FC8),CAST_OP(0x5FC8),CAST_OP(0x5FC8),CAST_OP(0x5FC8),CAST_OP(0x5FC8),CAST_OP(0x5FC8),CAST_OP(0x5FC8),CAST_OP(0x5FC8), +CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD0),CAST_OP(0x5FD8),CAST_OP(0x5FD8),CAST_OP(0x5FD8),CAST_OP(0x5FD8),CAST_OP(0x5FD8),CAST_OP(0x5FD8),CAST_OP(0x5FD8),CAST_OP(0x5FDF), +CAST_OP(0x5FE0),CAST_OP(0x5FE0),CAST_OP(0x5FE0),CAST_OP(0x5FE0),CAST_OP(0x5FE0),CAST_OP(0x5FE0),CAST_OP(0x5FE0),CAST_OP(0x5FE7),CAST_OP(0x5FE8),CAST_OP(0x5FE8),CAST_OP(0x5FE8),CAST_OP(0x5FE8),CAST_OP(0x5FE8),CAST_OP(0x5FE8),CAST_OP(0x5FE8),CAST_OP(0x5FE8), +CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF0),CAST_OP(0x5FF8),CAST_OP(0x5FF9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x6000),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001),CAST_OP(0x6001), +CAST_OP(0x6100),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101),CAST_OP(0x6101), +CAST_OP(0x6200),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201),CAST_OP(0x6201), +CAST_OP(0x6300),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301),CAST_OP(0x6301), +CAST_OP(0x6400),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401),CAST_OP(0x6401), +CAST_OP(0x6500),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501),CAST_OP(0x6501), +CAST_OP(0x6600),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601),CAST_OP(0x6601), +CAST_OP(0x6700),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701),CAST_OP(0x6701), +CAST_OP(0x6800),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801),CAST_OP(0x6801), +CAST_OP(0x6900),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901),CAST_OP(0x6901), +CAST_OP(0x6A00),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01),CAST_OP(0x6A01), +CAST_OP(0x6B00),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01),CAST_OP(0x6B01), +CAST_OP(0x6C00),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01),CAST_OP(0x6C01), +CAST_OP(0x6D00),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01),CAST_OP(0x6D01), +CAST_OP(0x6E00),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01),CAST_OP(0x6E01), +CAST_OP(0x6F00),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01),CAST_OP(0x6F01), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000),CAST_OP(0x7000), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x8108),CAST_OP(0x810F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x8000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8010),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x8018),CAST_OP(0x801F), +CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8020),CAST_OP(0x8027),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028),CAST_OP(0x8028), +CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8030),CAST_OP(0x8038),CAST_OP(0x8039),CAST_OP(0x803A),CAST_OP(0x803B),CAST_OP(0x803C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x8040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8050),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x8058),CAST_OP(0x805F), +CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8060),CAST_OP(0x8067),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068),CAST_OP(0x8068), +CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8070),CAST_OP(0x8078),CAST_OP(0x8079),CAST_OP(0x807A),CAST_OP(0x807B),CAST_OP(0x807C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x8080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8090),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x8098),CAST_OP(0x809F), +CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A0),CAST_OP(0x80A7),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8),CAST_OP(0x80A8), +CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B0),CAST_OP(0x80B8),CAST_OP(0x80B9),CAST_OP(0x80BA),CAST_OP(0x80BB),CAST_OP(0x80BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x80C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D0),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80D8),CAST_OP(0x80DF), +CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E0),CAST_OP(0x80E7),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8),CAST_OP(0x80E8), +CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F0),CAST_OP(0x80F8),CAST_OP(0x80F9),CAST_OP(0x80FA),CAST_OP(0x80FB),CAST_OP(0x80FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8100),CAST_OP(0x8F08),CAST_OP(0x8F08),CAST_OP(0x8F08),CAST_OP(0x8F08),CAST_OP(0x8F08),CAST_OP(0x8F08),CAST_OP(0x8F08),CAST_OP(0x8F0F), +CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8110),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x8118),CAST_OP(0x811F), +CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8120),CAST_OP(0x8127),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128),CAST_OP(0x8128), +CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8130),CAST_OP(0x8138),CAST_OP(0x8139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8150),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x8158),CAST_OP(0x815F), +CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8160),CAST_OP(0x8167),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168),CAST_OP(0x8168), +CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8170),CAST_OP(0x8178),CAST_OP(0x8179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8190),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x8198),CAST_OP(0x819F), +CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A0),CAST_OP(0x81A7),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8),CAST_OP(0x81A8), +CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B0),CAST_OP(0x81B8),CAST_OP(0x81B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x81C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D0),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81D8),CAST_OP(0x81DF), +CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E0),CAST_OP(0x81E7),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8),CAST_OP(0x81E8), +CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F0),CAST_OP(0x81F8),CAST_OP(0x81F9),CAST_OP(0x81FA),CAST_OP(0x81FB),CAST_OP(0x81FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x9108),CAST_OP(0x910F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x9148),CAST_OP(0x914F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x9188),CAST_OP(0x918F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9000),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008),CAST_OP(0x9008), +CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9010),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x9018),CAST_OP(0x901F), +CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9020),CAST_OP(0x9027),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028),CAST_OP(0x9028), +CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9030),CAST_OP(0x9038),CAST_OP(0x9039),CAST_OP(0x903A),CAST_OP(0x903B),CAST_OP(0x903C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9040),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048),CAST_OP(0x9048), +CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9050),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x9058),CAST_OP(0x905F), +CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9060),CAST_OP(0x9067),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068),CAST_OP(0x9068), +CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9070),CAST_OP(0x9078),CAST_OP(0x9079),CAST_OP(0x907A),CAST_OP(0x907B),CAST_OP(0x907C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9080),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088),CAST_OP(0x9088), +CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9090),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x9098),CAST_OP(0x909F), +CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A0),CAST_OP(0x90A7),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8),CAST_OP(0x90A8), +CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B0),CAST_OP(0x90B8),CAST_OP(0x90B9),CAST_OP(0x90BA),CAST_OP(0x90BB),CAST_OP(0x90BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C0),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8),CAST_OP(0x90C8), +CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D0),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90D8),CAST_OP(0x90DF), +CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E0),CAST_OP(0x90E7),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8),CAST_OP(0x90E8), +CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F0),CAST_OP(0x90F8),CAST_OP(0x90F9),CAST_OP(0x90FA),CAST_OP(0x90FB),CAST_OP(0x90FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9100),CAST_OP(0x9F08),CAST_OP(0x9F08),CAST_OP(0x9F08),CAST_OP(0x9F08),CAST_OP(0x9F08),CAST_OP(0x9F08),CAST_OP(0x9F08),CAST_OP(0x9F0F), +CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9110),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x9118),CAST_OP(0x911F), +CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9120),CAST_OP(0x9127),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128),CAST_OP(0x9128), +CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9130),CAST_OP(0x9138),CAST_OP(0x9139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9140),CAST_OP(0x9F48),CAST_OP(0x9F48),CAST_OP(0x9F48),CAST_OP(0x9F48),CAST_OP(0x9F48),CAST_OP(0x9F48),CAST_OP(0x9F48),CAST_OP(0x9F4F), +CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9150),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x9158),CAST_OP(0x915F), +CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9160),CAST_OP(0x9167),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168),CAST_OP(0x9168), +CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9170),CAST_OP(0x9178),CAST_OP(0x9179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9180),CAST_OP(0x9F88),CAST_OP(0x9F88),CAST_OP(0x9F88),CAST_OP(0x9F88),CAST_OP(0x9F88),CAST_OP(0x9F88),CAST_OP(0x9F88),CAST_OP(0x9F8F), +CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9190),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x9198),CAST_OP(0x919F), +CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A0),CAST_OP(0x91A7),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8),CAST_OP(0x91A8), +CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B0),CAST_OP(0x91B8),CAST_OP(0x91B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C0),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8),CAST_OP(0x91C8), +CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D0),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91D8),CAST_OP(0x91DF), +CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E0),CAST_OP(0x91E7),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8),CAST_OP(0x91E8), +CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F0),CAST_OP(0x91F8),CAST_OP(0x91F9),CAST_OP(0x91FA),CAST_OP(0x91FB),CAST_OP(0x91FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000),CAST_OP(0xA000), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB108),CAST_OP(0xB10F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB148),CAST_OP(0xB14F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB188),CAST_OP(0xB18F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB000),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008),CAST_OP(0xB008), +CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB010),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB018),CAST_OP(0xB01F), +CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB020),CAST_OP(0xB027),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028),CAST_OP(0xB028), +CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB030),CAST_OP(0xB038),CAST_OP(0xB039),CAST_OP(0xB03A),CAST_OP(0xB03B),CAST_OP(0xB03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB040),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048),CAST_OP(0xB048), +CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB050),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB058),CAST_OP(0xB05F), +CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB060),CAST_OP(0xB067),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068),CAST_OP(0xB068), +CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB070),CAST_OP(0xB078),CAST_OP(0xB079),CAST_OP(0xB07A),CAST_OP(0xB07B),CAST_OP(0xB07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB080),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088),CAST_OP(0xB088), +CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB090),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB098),CAST_OP(0xB09F), +CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A0),CAST_OP(0xB0A7),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8),CAST_OP(0xB0A8), +CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B0),CAST_OP(0xB0B8),CAST_OP(0xB0B9),CAST_OP(0xB0BA),CAST_OP(0xB0BB),CAST_OP(0xB0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C0),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8),CAST_OP(0xB0C8), +CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D0),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0D8),CAST_OP(0xB0DF), +CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E0),CAST_OP(0xB0E7),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8),CAST_OP(0xB0E8), +CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F0),CAST_OP(0xB0F8),CAST_OP(0xB0F9),CAST_OP(0xB0FA),CAST_OP(0xB0FB),CAST_OP(0xB0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xB100),CAST_OP(0xBF08),CAST_OP(0xBF08),CAST_OP(0xBF08),CAST_OP(0xBF08),CAST_OP(0xBF08),CAST_OP(0xBF08),CAST_OP(0xBF08),CAST_OP(0xBF0F), +CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB110),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB118),CAST_OP(0xB11F), +CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB120),CAST_OP(0xB127),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128),CAST_OP(0xB128), +CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB130),CAST_OP(0xB138),CAST_OP(0xB139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xB140),CAST_OP(0xBF48),CAST_OP(0xBF48),CAST_OP(0xBF48),CAST_OP(0xBF48),CAST_OP(0xBF48),CAST_OP(0xBF48),CAST_OP(0xBF48),CAST_OP(0xBF4F), +CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB150),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB158),CAST_OP(0xB15F), +CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB160),CAST_OP(0xB167),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168),CAST_OP(0xB168), +CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB170),CAST_OP(0xB178),CAST_OP(0xB179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xB180),CAST_OP(0xBF88),CAST_OP(0xBF88),CAST_OP(0xBF88),CAST_OP(0xBF88),CAST_OP(0xBF88),CAST_OP(0xBF88),CAST_OP(0xBF88),CAST_OP(0xBF8F), +CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB190),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB198),CAST_OP(0xB19F), +CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A0),CAST_OP(0xB1A7),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8),CAST_OP(0xB1A8), +CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B0),CAST_OP(0xB1B8),CAST_OP(0xB1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C0),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8),CAST_OP(0xB1C8), +CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D0),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1D8),CAST_OP(0xB1DF), +CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E0),CAST_OP(0xB1E7),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8),CAST_OP(0xB1E8), +CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F0),CAST_OP(0xB1F8),CAST_OP(0xB1F9),CAST_OP(0xB1FA),CAST_OP(0xB1FB),CAST_OP(0xB1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC108),CAST_OP(0xC10F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0xC000),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC010),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC018),CAST_OP(0xC01F), +CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC020),CAST_OP(0xC027),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028),CAST_OP(0xC028), +CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC030),CAST_OP(0xC038),CAST_OP(0xC039),CAST_OP(0xC03A),CAST_OP(0xC03B),CAST_OP(0xC03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0xC040),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC050),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC058),CAST_OP(0xC05F), +CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC060),CAST_OP(0xC067),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068),CAST_OP(0xC068), +CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC070),CAST_OP(0xC078),CAST_OP(0xC079),CAST_OP(0xC07A),CAST_OP(0xC07B),CAST_OP(0xC07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0xC080),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC090),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC098),CAST_OP(0xC09F), +CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A0),CAST_OP(0xC0A7),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8),CAST_OP(0xC0A8), +CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B0),CAST_OP(0xC0B8),CAST_OP(0xC0B9),CAST_OP(0xC0BA),CAST_OP(0xC0BB),CAST_OP(0xC0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0xC0C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D0),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0D8),CAST_OP(0xC0DF), +CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E0),CAST_OP(0xC0E7),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8),CAST_OP(0xC0E8), +CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F0),CAST_OP(0xC0F8),CAST_OP(0xC0F9),CAST_OP(0xC0FA),CAST_OP(0xC0FB),CAST_OP(0xC0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xC100),CAST_OP(0xCF08),CAST_OP(0xCF08),CAST_OP(0xCF08),CAST_OP(0xCF08),CAST_OP(0xCF08),CAST_OP(0xCF08),CAST_OP(0xCF08),CAST_OP(0xCF0F), +CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC110),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC118),CAST_OP(0xC11F), +CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC120),CAST_OP(0xC127),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128),CAST_OP(0xC128), +CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC130),CAST_OP(0xC138),CAST_OP(0xC139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC140),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148),CAST_OP(0xC148), +CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC150),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC158),CAST_OP(0xC15F), +CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC160),CAST_OP(0xC167),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168),CAST_OP(0xC168), +CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC170),CAST_OP(0xC178),CAST_OP(0xC179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188),CAST_OP(0xC188), +CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC190),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC198),CAST_OP(0xC19F), +CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A0),CAST_OP(0xC1A7),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8),CAST_OP(0xC1A8), +CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B0),CAST_OP(0xC1B8),CAST_OP(0xC1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0xC1C0),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D0),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1D8),CAST_OP(0xC1DF), +CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E0),CAST_OP(0xC1E7),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8),CAST_OP(0xC1E8), +CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F0),CAST_OP(0xC1F8),CAST_OP(0xC1F9),CAST_OP(0xC1FA),CAST_OP(0xC1FB),CAST_OP(0xC1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD108),CAST_OP(0xD10F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD148),CAST_OP(0xD14F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD188),CAST_OP(0xD18F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD000),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008),CAST_OP(0xD008), +CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD010),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD018),CAST_OP(0xD01F), +CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD020),CAST_OP(0xD027),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028),CAST_OP(0xD028), +CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD030),CAST_OP(0xD038),CAST_OP(0xD039),CAST_OP(0xD03A),CAST_OP(0xD03B),CAST_OP(0xD03C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD040),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048),CAST_OP(0xD048), +CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD050),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD058),CAST_OP(0xD05F), +CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD060),CAST_OP(0xD067),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068),CAST_OP(0xD068), +CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD070),CAST_OP(0xD078),CAST_OP(0xD079),CAST_OP(0xD07A),CAST_OP(0xD07B),CAST_OP(0xD07C),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD080),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088),CAST_OP(0xD088), +CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD090),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD098),CAST_OP(0xD09F), +CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A0),CAST_OP(0xD0A7),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8),CAST_OP(0xD0A8), +CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B0),CAST_OP(0xD0B8),CAST_OP(0xD0B9),CAST_OP(0xD0BA),CAST_OP(0xD0BB),CAST_OP(0xD0BC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C0),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8),CAST_OP(0xD0C8), +CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D0),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0D8),CAST_OP(0xD0DF), +CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E0),CAST_OP(0xD0E7),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8),CAST_OP(0xD0E8), +CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F0),CAST_OP(0xD0F8),CAST_OP(0xD0F9),CAST_OP(0xD0FA),CAST_OP(0xD0FB),CAST_OP(0xD0FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xD100),CAST_OP(0xDF08),CAST_OP(0xDF08),CAST_OP(0xDF08),CAST_OP(0xDF08),CAST_OP(0xDF08),CAST_OP(0xDF08),CAST_OP(0xDF08),CAST_OP(0xDF0F), +CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD110),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD118),CAST_OP(0xD11F), +CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD120),CAST_OP(0xD127),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128),CAST_OP(0xD128), +CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD130),CAST_OP(0xD138),CAST_OP(0xD139),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xD140),CAST_OP(0xDF48),CAST_OP(0xDF48),CAST_OP(0xDF48),CAST_OP(0xDF48),CAST_OP(0xDF48),CAST_OP(0xDF48),CAST_OP(0xDF48),CAST_OP(0xDF4F), +CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD150),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD158),CAST_OP(0xD15F), +CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD160),CAST_OP(0xD167),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168),CAST_OP(0xD168), +CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD170),CAST_OP(0xD178),CAST_OP(0xD179),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xD180),CAST_OP(0xDF88),CAST_OP(0xDF88),CAST_OP(0xDF88),CAST_OP(0xDF88),CAST_OP(0xDF88),CAST_OP(0xDF88),CAST_OP(0xDF88),CAST_OP(0xDF8F), +CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD190),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD198),CAST_OP(0xD19F), +CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A0),CAST_OP(0xD1A7),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8),CAST_OP(0xD1A8), +CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B0),CAST_OP(0xD1B8),CAST_OP(0xD1B9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C0),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8),CAST_OP(0xD1C8), +CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D0),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1D8),CAST_OP(0xD1DF), +CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E0),CAST_OP(0xD1E7),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8),CAST_OP(0xD1E8), +CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F0),CAST_OP(0xD1F8),CAST_OP(0xD1F9),CAST_OP(0xD1FA),CAST_OP(0xD1FB),CAST_OP(0xD1FC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D0),CAST_OP(0xE0D8),CAST_OP(0xE0D8),CAST_OP(0xE0D8),CAST_OP(0xE0D8),CAST_OP(0xE0D8),CAST_OP(0xE0D8),CAST_OP(0xE0D8),CAST_OP(0xE0DF), +CAST_OP(0xE0E0),CAST_OP(0xE0E0),CAST_OP(0xE0E0),CAST_OP(0xE0E0),CAST_OP(0xE0E0),CAST_OP(0xE0E0),CAST_OP(0xE0E0),CAST_OP(0xE0E7),CAST_OP(0xE0E8),CAST_OP(0xE0E8),CAST_OP(0xE0E8),CAST_OP(0xE0E8),CAST_OP(0xE0E8),CAST_OP(0xE0E8),CAST_OP(0xE0E8),CAST_OP(0xE0E8), +CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F0),CAST_OP(0xE0F8),CAST_OP(0xE0F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D0),CAST_OP(0xE1D8),CAST_OP(0xE1D8),CAST_OP(0xE1D8),CAST_OP(0xE1D8),CAST_OP(0xE1D8),CAST_OP(0xE1D8),CAST_OP(0xE1D8),CAST_OP(0xE1DF), +CAST_OP(0xE1E0),CAST_OP(0xE1E0),CAST_OP(0xE1E0),CAST_OP(0xE1E0),CAST_OP(0xE1E0),CAST_OP(0xE1E0),CAST_OP(0xE1E0),CAST_OP(0xE1E7),CAST_OP(0xE1E8),CAST_OP(0xE1E8),CAST_OP(0xE1E8),CAST_OP(0xE1E8),CAST_OP(0xE1E8),CAST_OP(0xE1E8),CAST_OP(0xE1E8),CAST_OP(0xE1E8), +CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F0),CAST_OP(0xE1F8),CAST_OP(0xE1F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D0),CAST_OP(0xE2D8),CAST_OP(0xE2D8),CAST_OP(0xE2D8),CAST_OP(0xE2D8),CAST_OP(0xE2D8),CAST_OP(0xE2D8),CAST_OP(0xE2D8),CAST_OP(0xE2DF), +CAST_OP(0xE2E0),CAST_OP(0xE2E0),CAST_OP(0xE2E0),CAST_OP(0xE2E0),CAST_OP(0xE2E0),CAST_OP(0xE2E0),CAST_OP(0xE2E0),CAST_OP(0xE2E7),CAST_OP(0xE2E8),CAST_OP(0xE2E8),CAST_OP(0xE2E8),CAST_OP(0xE2E8),CAST_OP(0xE2E8),CAST_OP(0xE2E8),CAST_OP(0xE2E8),CAST_OP(0xE2E8), +CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F0),CAST_OP(0xE2F8),CAST_OP(0xE2F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D0),CAST_OP(0xE3D8),CAST_OP(0xE3D8),CAST_OP(0xE3D8),CAST_OP(0xE3D8),CAST_OP(0xE3D8),CAST_OP(0xE3D8),CAST_OP(0xE3D8),CAST_OP(0xE3DF), +CAST_OP(0xE3E0),CAST_OP(0xE3E0),CAST_OP(0xE3E0),CAST_OP(0xE3E0),CAST_OP(0xE3E0),CAST_OP(0xE3E0),CAST_OP(0xE3E0),CAST_OP(0xE3E7),CAST_OP(0xE3E8),CAST_OP(0xE3E8),CAST_OP(0xE3E8),CAST_OP(0xE3E8),CAST_OP(0xE3E8),CAST_OP(0xE3E8),CAST_OP(0xE3E8),CAST_OP(0xE3E8), +CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F0),CAST_OP(0xE3F8),CAST_OP(0xE3F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D0),CAST_OP(0xE4D8),CAST_OP(0xE4D8),CAST_OP(0xE4D8),CAST_OP(0xE4D8),CAST_OP(0xE4D8),CAST_OP(0xE4D8),CAST_OP(0xE4D8),CAST_OP(0xE4DF), +CAST_OP(0xE4E0),CAST_OP(0xE4E0),CAST_OP(0xE4E0),CAST_OP(0xE4E0),CAST_OP(0xE4E0),CAST_OP(0xE4E0),CAST_OP(0xE4E0),CAST_OP(0xE4E7),CAST_OP(0xE4E8),CAST_OP(0xE4E8),CAST_OP(0xE4E8),CAST_OP(0xE4E8),CAST_OP(0xE4E8),CAST_OP(0xE4E8),CAST_OP(0xE4E8),CAST_OP(0xE4E8), +CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F0),CAST_OP(0xE4F8),CAST_OP(0xE4F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D0),CAST_OP(0xE5D8),CAST_OP(0xE5D8),CAST_OP(0xE5D8),CAST_OP(0xE5D8),CAST_OP(0xE5D8),CAST_OP(0xE5D8),CAST_OP(0xE5D8),CAST_OP(0xE5DF), +CAST_OP(0xE5E0),CAST_OP(0xE5E0),CAST_OP(0xE5E0),CAST_OP(0xE5E0),CAST_OP(0xE5E0),CAST_OP(0xE5E0),CAST_OP(0xE5E0),CAST_OP(0xE5E7),CAST_OP(0xE5E8),CAST_OP(0xE5E8),CAST_OP(0xE5E8),CAST_OP(0xE5E8),CAST_OP(0xE5E8),CAST_OP(0xE5E8),CAST_OP(0xE5E8),CAST_OP(0xE5E8), +CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F0),CAST_OP(0xE5F8),CAST_OP(0xE5F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D0),CAST_OP(0xE6D8),CAST_OP(0xE6D8),CAST_OP(0xE6D8),CAST_OP(0xE6D8),CAST_OP(0xE6D8),CAST_OP(0xE6D8),CAST_OP(0xE6D8),CAST_OP(0xE6DF), +CAST_OP(0xE6E0),CAST_OP(0xE6E0),CAST_OP(0xE6E0),CAST_OP(0xE6E0),CAST_OP(0xE6E0),CAST_OP(0xE6E0),CAST_OP(0xE6E0),CAST_OP(0xE6E7),CAST_OP(0xE6E8),CAST_OP(0xE6E8),CAST_OP(0xE6E8),CAST_OP(0xE6E8),CAST_OP(0xE6E8),CAST_OP(0xE6E8),CAST_OP(0xE6E8),CAST_OP(0xE6E8), +CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F0),CAST_OP(0xE6F8),CAST_OP(0xE6F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D0),CAST_OP(0xE7D8),CAST_OP(0xE7D8),CAST_OP(0xE7D8),CAST_OP(0xE7D8),CAST_OP(0xE7D8),CAST_OP(0xE7D8),CAST_OP(0xE7D8),CAST_OP(0xE7DF), +CAST_OP(0xE7E0),CAST_OP(0xE7E0),CAST_OP(0xE7E0),CAST_OP(0xE7E0),CAST_OP(0xE7E0),CAST_OP(0xE7E0),CAST_OP(0xE7E0),CAST_OP(0xE7E7),CAST_OP(0xE7E8),CAST_OP(0xE7E8),CAST_OP(0xE7E8),CAST_OP(0xE7E8),CAST_OP(0xE7E8),CAST_OP(0xE7E8),CAST_OP(0xE7E8),CAST_OP(0xE7E8), +CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F0),CAST_OP(0xE7F8),CAST_OP(0xE7F9),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE000),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008),CAST_OP(0xE008), +CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE010),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018),CAST_OP(0xE018), +CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE020),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028),CAST_OP(0xE028), +CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE030),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038),CAST_OP(0xE038), +CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE040),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048),CAST_OP(0xE048), +CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE050),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058),CAST_OP(0xE058), +CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE060),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068),CAST_OP(0xE068), +CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE070),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078),CAST_OP(0xE078), +CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE080),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088),CAST_OP(0xE088), +CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE090),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098),CAST_OP(0xE098), +CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A0),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8),CAST_OP(0xE0A8), +CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B0),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8),CAST_OP(0xE0B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE100),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108),CAST_OP(0xE108), +CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE110),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118),CAST_OP(0xE118), +CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE120),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128),CAST_OP(0xE128), +CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE130),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138),CAST_OP(0xE138), +CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE140),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148),CAST_OP(0xE148), +CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE150),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158),CAST_OP(0xE158), +CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE160),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168),CAST_OP(0xE168), +CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE170),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178),CAST_OP(0xE178), +CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE180),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188),CAST_OP(0xE188), +CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE190),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198),CAST_OP(0xE198), +CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A0),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8),CAST_OP(0xE1A8), +CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B0),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8),CAST_OP(0xE1B8), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC),CAST_OP(0x4AFC), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000),CAST_OP(0xF000), +}; diff --git a/MCUME_teensy/teensycastaway/keyboard_osd.h b/MCUME_teensy/teensycastaway/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensycastaway/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensycastaway/logo.h b/MCUME_teensy/teensycastaway/logo.h new file mode 100644 index 0000000..692a06c --- /dev/null +++ b/MCUME_teensy/teensycastaway/logo.h @@ -0,0 +1,241 @@ +PROGMEM const uint16_t logo[] = { +0x0140,0x00f0,0x9533,0x5b0b,0x3a07,0x39e7,0x31e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39a7,0x39a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x39c7,0x39c6,0x31a6,0x31a6,0x3186,0x3165,0x3165,0x3986,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3a07,0x39c7,0x31a6,0x3186,0x3185,0x3186,0x3986,0x4207,0x31c7,0x31c6,0x2986,0x2985,0x31a6,0x3186,0x39e7,0x39e7,0x31a6,0x2985,0x2986,0x3186,0x3186,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x2966,0x2985,0x39c6,0x39c7,0x31a6,0x2986,0x2965,0x2986,0x3186,0x39c7,0x39e7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x39e7,0x39e7,0x39c7,0x3165,0x2965,0x3186,0x3186,0x4207,0x4207,0x39c7,0x3186,0x2986,0x2985,0x3186,0x39e7,0x39e7,0x39e7,0x31a6,0x2986,0x3186,0x3185,0x3a07,0x4207,0x3a07,0x31c6,0x2965,0x3186,0x2986,0x39c7,0x4208,0x39e7,0x31a6,0x2965,0x2985,0x2985,0x39c7,0x39c7,0x39e7,0x31a6,0x3185,0x2965,0x2965,0x31c6,0x3a07,0x39e7,0x31c6,0x2985,0x2965,0x2965,0x39c6,0x4227,0x4248,0x39e7,0x2965,0x3186,0x3185,0x31a6,0x4228,0x4208,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x39e7,0x4207,0x39e7,0x3186,0x2986,0x2986,0x3186,0x4207,0x4208,0x39e7,0x31a6,0x3185,0x3185,0x3186,0x39e7,0x4227,0x3a07,0x31a6,0x2986,0x2985,0x29a6,0x31e7,0x3a07,0x3a07,0x31a6,0x2965,0x3186,0x3186,0x39c7,0x4228,0x4228,0x31a6,0x3185,0x3185,0x3185,0x39c6,0x39e7,0x39e7,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x39c6,0x39e7,0x31c6,0x3185,0x31a6,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x3185,0x3186,0x3186,0x39c6,0x39e7,0x2986,0x3186,0x2986,0x2985,0x3185,0x31a6,0x39e7,0x3185,0x3186,0x2986,0x2986,0x2985,0x39c6,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x3186,0x2985,0x2985,0x2985,0x3186,0x31a7,0x2945,0x3186,0x2985,0x3186,0x3185,0x3186,0x31c6,0x2965,0x2985,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x2985,0x2985,0x3186,0x3186,0x31a6,0x39e7,0x2965,0x3186,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x3185,0x2965,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x3166,0x3166,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x3206,0x9d53, +0x532b,0x00a0,0x2965,0x2945,0x2145,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2965,0x2965,0x2966,0x2965,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2125,0x2945,0x39c7,0x31a6,0x2144,0x2145,0x2144,0x2144,0x2965,0x39c6,0x39c6,0x2144,0x1944,0x2145,0x2124,0x3185,0x3a07,0x31c6,0x2144,0x2144,0x2144,0x2124,0x3165,0x4228,0x39e7,0x2164,0x2144,0x2145,0x2145,0x2965,0x39e7,0x3a07,0x2965,0x2124,0x2145,0x2125,0x2945,0x39e7,0x39e7,0x2986,0x2145,0x2945,0x2124,0x2944,0x31a6,0x39c7,0x2965,0x2124,0x2145,0x2145,0x2945,0x39e7,0x39e7,0x3185,0x2124,0x2125,0x2124,0x2144,0x39c6,0x39e7,0x31a6,0x2144,0x2144,0x2124,0x2945,0x39c6,0x39e7,0x31c6,0x2144,0x2145,0x2144,0x2144,0x39c6,0x39e7,0x39a6,0x2945,0x2945,0x2945,0x2144,0x39e6,0x4207,0x39e7,0x2165,0x2144,0x2145,0x2124,0x39c7,0x4a28,0x39e7,0x2965,0x2125,0x2144,0x2124,0x31a6,0x4227,0x3a06,0x2985,0x2124,0x2944,0x2124,0x31a6,0x4227,0x39e7,0x2985,0x2145,0x2145,0x2124,0x3185,0x5288,0x5288,0x31c6,0x2944,0x2945,0x2944,0x2965,0x4248,0x4228,0x39c6,0x2945,0x2945,0x2945,0x2945,0x31c6,0x4227,0x31c6,0x2945,0x2945,0x2945,0x2945,0x39e7,0x4207,0x31c6,0x2945,0x2945,0x2944,0x2944,0x39c6,0x3a07,0x31c6,0x2965,0x2945,0x2945,0x2144,0x39c6,0x4207,0x31a6,0x2945,0x2945,0x2945,0x2124,0x31a6,0x4228,0x39e6,0x2965,0x2964,0x2945,0x2124,0x31a5,0x4207,0x39c6,0x2965,0x2965,0x2145,0x2145,0x2985,0x4207,0x39c6,0x2945,0x2965,0x2965,0x2145,0x2965,0x3a07,0x39c6,0x2944,0x2965,0x2944,0x2144,0x2965,0x39e7,0x39c7,0x2124,0x2945,0x2144,0x2945,0x2944,0x31a6,0x39e7,0x2124,0x2124,0x2144,0x2145,0x2124,0x39c6,0x31a6,0x20e3,0x2945,0x2945,0x2144,0x2124,0x2965,0x31a6,0x2104,0x2144,0x2124,0x2144,0x2144,0x2986,0x31a6,0x18e3,0x2124,0x2124,0x2144,0x2124,0x3186,0x31a6,0x18e3,0x2144,0x2144,0x2144,0x2124,0x2985,0x39e7,0x1903,0x1904,0x2145,0x2145,0x2144,0x2985,0x39c6,0x18e3,0x2104,0x2945,0x2124,0x2124,0x2966,0x39c7,0x18e3,0x2103,0x2944,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2145,0x2125,0x2125,0x2925,0x2945,0x2945,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2985,0x0000,0x52ea, +0x2165,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2103,0x1904,0x1924,0x2104,0x2945,0x39c7,0x2985,0x1904,0x2124,0x2124,0x2104,0x2944,0x39a5,0x2964,0x1903,0x1924,0x2124,0x2104,0x3185,0x4227,0x39e6,0x2124,0x2124,0x2104,0x2104,0x3185,0x4227,0x31e6,0x2124,0x2124,0x2124,0x2103,0x2965,0x3a07,0x39e6,0x2124,0x2124,0x2124,0x2104,0x2944,0x4207,0x39c6,0x2124,0x2104,0x2104,0x2104,0x2944,0x39e7,0x39c7,0x2945,0x2104,0x2104,0x2104,0x2944,0x4207,0x39e7,0x2965,0x1904,0x2104,0x2104,0x2124,0x41e7,0x4207,0x2965,0x1904,0x2124,0x2104,0x2125,0x41e7,0x4207,0x3185,0x2124,0x2124,0x2124,0x2104,0x39e7,0x4228,0x31a6,0x2103,0x2124,0x2944,0x4aa8,0x2985,0x39c6,0x39e7,0x31a6,0x31a6,0x31a5,0x31a6,0x4228,0x4a48,0x4228,0x39c7,0x31a6,0x31a6,0x3186,0x39e7,0x4228,0x39e7,0x3185,0x2144,0x2124,0x18e3,0x2944,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2104,0x2945,0x39c6,0x39c6,0x31a6,0x2965,0x2985,0x2965,0x3185,0x4207,0x39e7,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x4207,0x4228,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x4207,0x4228,0x39c7,0x31a6,0x3185,0x3185,0x2965,0x31a6,0x39e7,0x39c7,0x3186,0x31a6,0x3186,0x2965,0x39e7,0x4208,0x39c7,0x3186,0x3186,0x3186,0x2965,0x39c6,0x4a48,0x4268,0x4247,0x4227,0x4247,0x4248,0x4aa9,0x52ea,0x52e9,0x52e9,0x52ea,0x4ac9,0x52c8,0x5b2a,0x636b,0x634b,0x5b2a,0x5b0a,0x636c,0x6309,0x3183,0x4228,0x39e7,0x2945,0x2124,0x2124,0x2124,0x2124,0x39e7,0x4207,0x2944,0x2104,0x2124,0x2124,0x2104,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2124,0x1904,0x31a6,0x39e7,0x2924,0x2104,0x2104,0x2124,0x1924,0x2965,0x39e7,0x2124,0x18e3,0x2104,0x2124,0x1903,0x2986,0x39e7,0x2104,0x18e3,0x2104,0x2104,0x1904,0x2985,0x39c6,0x2103,0x2103,0x2124,0x2124,0x18e3,0x2965,0x39e7,0x2124,0x18e3,0x2124,0x2104,0x1903,0x2944,0x39e7,0x2104,0x18c3,0x2124,0x2124,0x2104,0x2965,0x3a07,0x2124,0x10a2,0x2104,0x2104,0x2104,0x2945,0x39c7,0x18e3,0x18c2,0x2104,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1924,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2123,0x2124,0x2124,0x2124,0x2144, +0x1924,0x1903,0x1903,0x1903,0x18e3,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1903,0x1904,0x1903,0x2104,0x2104,0x1903,0x2104,0x1903,0x1903,0x1903,0x2104,0x1903,0x18e3,0x1903,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x20e3,0x3185,0x39e6,0x2144,0x18e3,0x2104,0x2104,0x20e3,0x3186,0x39c6,0x2944,0x18e3,0x1903,0x2103,0x20e3,0x3185,0x4207,0x2985,0x18e3,0x1904,0x18e4,0x20e3,0x3185,0x4227,0x2985,0x1903,0x1904,0x18e4,0x18e3,0x3185,0x4207,0x31a5,0x1903,0x1903,0x1904,0x18e3,0x2965,0x4207,0x31c6,0x1904,0x18e4,0x18e4,0x18e3,0x2944,0x4207,0x31c6,0x1904,0x1904,0x18e3,0x18c3,0x2945,0x4228,0x39c6,0x2124,0x10e3,0x18e3,0x18e3,0x2924,0x41e7,0x39c7,0x2124,0x18e3,0x1904,0x18e4,0x2124,0x4207,0x4206,0x2965,0x18e3,0x18e4,0x2104,0x2104,0x39e7,0x4207,0x2965,0x18e3,0x1904,0x2124,0x4246,0x1903,0x2104,0x2965,0x31c6,0x39e7,0x39e6,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x41e7,0x4207,0x4207,0x4207,0x39e7,0x39c6,0x3186,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c6,0x31a6,0x31a6,0x39c7,0x39c6,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39c6,0x31a5,0x31a6,0x39e6,0x39e7,0x39e7,0x4208,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x4228,0x4a48,0x4a48,0x4a48,0x4a68,0x4a69,0x4a68,0x4a89,0x5289,0x52aa,0x52a9,0x4a88,0x4a88,0x4a68,0x4a68,0x52a8,0x4a88,0x4a68,0x5b2b,0x8c2c,0x41c2,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2104,0x1903,0x39e7,0x4207,0x2124,0x18e3,0x1904,0x1904,0x18e3,0x39c6,0x4207,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x3186,0x4207,0x2924,0x18e3,0x1904,0x1903,0x18e3,0x2985,0x39e7,0x2124,0x18c3,0x1904,0x1903,0x10e3,0x2945,0x39e7,0x2944,0x10a2,0x1904,0x18e3,0x18e3,0x2944,0x39e7,0x2944,0x10a2,0x18e4,0x18e3,0x18e3,0x2124,0x41e7,0x2965,0x1082,0x2103,0x2124,0x2124,0x2123,0x31c6,0x2144,0x1082,0x2104,0x1904,0x18e3,0x2104,0x39e7,0x2965,0x0862,0x18e3,0x1903,0x18e3,0x2104,0x39c6,0x2924,0x0861,0x1903,0x2124,0x2124,0x2104,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x2104,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2104,0x1904,0x2124, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x39c6,0x39c6,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39e7,0x2124,0x10e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39c6,0x2124,0x18c3,0x18e3,0x18e4,0x18e3,0x39a6,0x3a07,0x2964,0x10c2,0x18e3,0x18e3,0x18e3,0x31a6,0x39e6,0x2965,0x18e3,0x10e3,0x18c3,0x18c3,0x3165,0x39e7,0x2985,0x18c3,0x10c3,0x18e3,0x18c2,0x2965,0x39c6,0x2965,0x10c3,0x10c3,0x18c3,0x18c3,0x2944,0x39e7,0x31a6,0x18e3,0x10c2,0x18c3,0x18c3,0x2104,0x39e6,0x39c6,0x1903,0x10c3,0x18e3,0x18c3,0x2104,0x39e6,0x39c6,0x2124,0x18c3,0x18e3,0x18e3,0x2104,0x39e7,0x39e7,0x2945,0x18e3,0x18e3,0x2103,0x4a67,0x18c2,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x39e7,0x4207,0x4208,0x4208,0x4208,0x4208,0x41e7,0x4207,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x31a6,0x2965,0x2945,0x2944,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x2124,0x2945,0x2965,0x3186,0x3186,0x2965,0x2965,0x2985,0x3165,0x3186,0x3186,0x31a7,0x39c7,0x39c6,0x39e7,0x4208,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x4207,0x4208,0x4207,0x41e7,0x39e7,0x39c6,0x3185,0x3185,0x31a6,0x39c6,0x39c7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c7,0x39e7,0x4207,0x39e7,0x39c7,0x41e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4207,0x4207,0x4208,0x4208,0x4208,0x4207,0x39e7,0x39c6,0x39c6,0x39c6,0x2985,0x2944,0x39c6,0x7bc9,0x41e2,0x39c7,0x39e7,0x2124,0x18e3,0x1904,0x1903,0x18e3,0x31a6,0x39e6,0x2124,0x18c3,0x18e3,0x1903,0x18c3,0x3185,0x41e7,0x2944,0x18c3,0x18e3,0x18e3,0x10c2,0x2965,0x3a07,0x2944,0x10a2,0x18e3,0x18e3,0x10c3,0x2945,0x39e7,0x2945,0x10c3,0x18e3,0x18c3,0x10a2,0x2123,0x39e6,0x2965,0x1082,0x18e3,0x18e3,0x18c3,0x2104,0x39e7,0x2985,0x1082,0x18c3,0x10c3,0x18e3,0x18e3,0x39c6,0x3185,0x1082,0x18c3,0x2104,0x2964,0x2103,0x31a6,0x2965,0x0861,0x2104,0x2124,0x2144,0x2104,0x39c7,0x3186,0x0861,0x18c3,0x18c3,0x10c3,0x10c2,0x31a6,0x31a6,0x0861,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x10c2,0x10c3,0x10c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0x3185,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x3186,0x31a6,0x10e3,0x10c2,0x10c3,0x10c2,0x2104,0x39c6,0x31a6,0x2103,0x10c3,0x18c3,0x18c3,0x18e3,0x39a6,0x39c6,0x2124,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x31a6,0x2124,0x10c2,0x10c3,0x10c2,0x18c3,0x3185,0x39e7,0x2965,0x10c2,0x10a2,0x10c2,0x10c2,0x2965,0x31c6,0x2144,0x10c2,0x10c2,0x10a2,0x10a2,0x2945,0x39c6,0x2965,0x10c3,0x10a2,0x10c3,0x10a2,0x2124,0x39c6,0x3185,0x18e3,0x10a2,0x18c3,0x10a2,0x2104,0x39c6,0x3185,0x18e3,0x18c3,0x18c3,0x18a2,0x20e3,0x39e7,0x31c6,0x2124,0x10a2,0x18e3,0x18e3,0x52c8,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x41e7,0x39e7,0x4207,0x4208,0x4207,0x3a07,0x39e7,0x31a6,0x2965,0x2124,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2124,0x2944,0x3186,0x31a6,0x31a6,0x39c7,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4a48,0x4a48,0x4227,0x4207,0x39e7,0x3185,0x31a5,0x39c6,0x39e7,0x4208,0x4208,0x4208,0x39e7,0x39c6,0x39e7,0x41e8,0x4208,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4a29,0x4229,0x4229,0x4229,0x4208,0x4207,0x4207,0x4207,0x4207,0x41e7,0x39e7,0x39c6,0x31a6,0x3185,0x2124,0x18e3,0x18e3,0x2944,0x6b27,0x41e2,0x39c6,0x39c7,0x2104,0x18c3,0x18e3,0x18e3,0x18c2,0x2985,0x39e6,0x2944,0x10c2,0x18e3,0x18e3,0x18c2,0x2965,0x39e7,0x2945,0x10a2,0x18e3,0x18c3,0x10a2,0x2964,0x39e7,0x2965,0x1082,0x18c3,0x10c3,0x10c2,0x2124,0x39c7,0x2965,0x10a2,0x10c2,0x10c2,0x1082,0x18e3,0x31c5,0x3185,0x1082,0x10c3,0x18c3,0x10c2,0x10c3,0x31a6,0x2965,0x0861,0x10a3,0x10c3,0x10c2,0x10c2,0x31a6,0x31a6,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x31a6,0x3186,0x0861,0x1903,0x2124,0x2965,0x2965,0x31a6,0x39a6,0x1081,0x10a2,0x10c3,0x10c2,0x10a2,0x2965,0x31a6,0x10a2,0x10a2,0x18e3,0x10e3,0x10c3,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x10c3, +0x10a3,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x3185,0x2944,0x10a2,0x10a2,0x10c2,0x10a2,0x2104,0x2986,0x2145,0x10c3,0x10a2,0x10a2,0x10a2,0x1904,0x31a6,0x3185,0x18e3,0x10a2,0x10a3,0x10a2,0x18e3,0x39a6,0x31a6,0x18e3,0x10a2,0x10a2,0x10c2,0x18e3,0x31a6,0x3185,0x18e3,0x10a2,0x10c2,0x10a2,0x10c2,0x31a5,0x39e6,0x2144,0x10a2,0x10c3,0x10c3,0x10a2,0x3185,0x31a6,0x2104,0x08a2,0x10a2,0x10a2,0x10a2,0x2965,0x39c6,0x2965,0x10a2,0x10a2,0x10a2,0x1082,0x2144,0x39c6,0x2965,0x18c2,0x10a2,0x10a3,0x10a2,0x2104,0x31a6,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x1903,0x39c6,0x2965,0x18e3,0x10c2,0x10c3,0x18e3,0x4a87,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1903,0x2924,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2104,0x2104,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2964,0x2985,0x3185,0x3185,0x3185,0x3185,0x31a5,0x3185,0x31a6,0x31a6,0x31a6,0x31a6,0x31a5,0x3185,0x2964,0x3185,0x31a5,0x31a6,0x39c6,0x39c7,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e6,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4207,0x4207,0x3a07,0x39e6,0x3185,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2944,0x7389,0x5263,0x31a6,0x31a6,0x2104,0x10a2,0x18e3,0x18e3,0x10a2,0x2985,0x31c6,0x2124,0x10c3,0x18e3,0x18e3,0x10a2,0x2165,0x31c6,0x2944,0x1082,0x10c2,0x18c3,0x10a2,0x2124,0x3a07,0x3185,0x1082,0x10c3,0x10c3,0x10a2,0x2103,0x31a6,0x2985,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x31a6,0x2965,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x2985,0x2103,0x0861,0x10a2,0x10c2,0x10a2,0x10a2,0x31a5,0x31a6,0x10a2,0x1082,0x10a3,0x10a3,0x10a2,0x3185,0x3185,0x1082,0x10a2,0x18e3,0x18e3,0x18e3,0x2965,0x39a6,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x2124,0x31a5,0x18c2,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3, +0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2985,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x3186,0x2945,0x10c2,0x1082,0x10a2,0x10a2,0x20e3,0x31a6,0x3186,0x18c3,0x1082,0x10a2,0x10a2,0x18e3,0x31a6,0x2985,0x18e3,0x0882,0x10a2,0x10a2,0x10c2,0x31a5,0x3185,0x1903,0x1082,0x10a2,0x10a3,0x10a2,0x2965,0x2985,0x1903,0x1082,0x1082,0x10a2,0x10a2,0x3185,0x39c6,0x2924,0x1082,0x1082,0x10a2,0x1082,0x2924,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2965,0x18c3,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x10c3,0x10c2,0x3a06,0x10a2,0x18c2,0x18c3,0x18c3,0x20e3,0x18c3,0x18a2,0x18a3,0x18c3,0x2124,0x18e3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x10a2,0x10c2,0x18c3,0x10a2,0x18c3,0x10c2,0x18c2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x2103,0x2103,0x2103,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2104,0x2103,0x2103,0x2123,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2103,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2124,0x7bcb,0x62c3,0x2965,0x31a6,0x2124,0x10a2,0x18e3,0x18c3,0x10a2,0x2965,0x31a6,0x2104,0x10c3,0x10e3,0x10e3,0x10a2,0x2145,0x31a6,0x2124,0x10a2,0x10c2,0x10c3,0x10c2,0x2103,0x39c6,0x2965,0x10a2,0x10c2,0x10c3,0x10a2,0x18e3,0x31a6,0x3185,0x1081,0x10a2,0x10a2,0x10a2,0x10c2,0x3185,0x2965,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x2965,0x2104,0x1062,0x10a2,0x10c2,0x10a2,0x1082,0x2985,0x39c6,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x2964,0x3185,0x10a2,0x0861,0x10a2,0x10a2,0x0861,0x2965,0x31a6,0x18c3,0x1081,0x10a2,0x10a2,0x0882,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2, +0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x18e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2124,0x2985,0x2124,0x10a2,0x10c2,0x10a2,0x10a2,0x2104,0x3165,0x2945,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x31a6,0x2945,0x18a2,0x1082,0x10a2,0x10a2,0x18e3,0x3185,0x2964,0x10c2,0x08a2,0x10a2,0x10a2,0x10e3,0x31a5,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x10c2,0x2144,0x2964,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x2965,0x3185,0x2104,0x1082,0x10a2,0x10a2,0x10a2,0x2944,0x3185,0x2124,0x08a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2944,0x10c2,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x18c3,0x10c2,0x31a5,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x18c3,0x10a2,0x18c3,0x18c3,0x2104,0x2103,0x10a2,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18e3,0x18c3,0x18c3,0x2124,0x18e3,0x20e3,0x18c3,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x20e3,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18c2,0x18c3,0x18c3,0x2104,0x6327,0x5ac3,0x3186,0x31c6,0x2103,0x10a2,0x18c3,0x18e3,0x18c3,0x2945,0x31a6,0x2104,0x10a2,0x18c3,0x18c3,0x10c2,0x2124,0x31a6,0x2944,0x10a2,0x10c3,0x18c3,0x10c2,0x2123,0x31c6,0x2965,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x31a6,0x3186,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x31a6,0x2985,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x2965,0x2965,0x10a2,0x10a2,0x10c2,0x10c2,0x1082,0x2965,0x39e7,0x1904,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x0882,0x2144,0x31a6,0x1903,0x0861,0x10a2,0x10a2,0x0882,0x1903,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2, +0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x08a2,0x0882,0x0882,0x1082,0x1082,0x0881,0x0881,0x1082,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2124,0x10e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2144,0x3185,0x1903,0x10a2,0x10a2,0x10a2,0x10a2,0x2103,0x3165,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x20e4,0x3186,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x39c6,0x2944,0x10a2,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x3185,0x1903,0x10a2,0x10a2,0x10c2,0x10a2,0x2945,0x2965,0x10c2,0x10a2,0x10c3,0x10a2,0x10a2,0x2965,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x2124,0x10a2,0x10a2,0x18c3,0x18a2,0x2924,0x3185,0x2124,0x18c3,0x10a2,0x18c3,0x10a2,0x1904,0x3186,0x2145,0x18c3,0x10a2,0x18c2,0x18c2,0x2123,0x18c2,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x2103,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18a2,0x18a2,0x18e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c2,0x10a2,0x18c2,0x2104,0x18e3,0x18e3,0x18c3,0x2124,0x18c3,0x2124,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x10a2,0x18c2,0x18e3,0x18a2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x62e6,0x5aa3,0x2965,0x2985,0x2123,0x10c2,0x18e3,0x18e4,0x18c3,0x2124,0x3186,0x2104,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x10a2,0x18c3,0x18e3,0x18c3,0x2104,0x31a6,0x2965,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x3186,0x2945,0x1082,0x10a2,0x10c3,0x10c3,0x10c2,0x31a6,0x3185,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e3,0x1081,0x10c2,0x10c3,0x10a2,0x2964,0x31a6,0x18e3,0x1082,0x10a3,0x10a3,0x10a3,0x2104,0x2965,0x18e3,0x0881,0x10a2,0x18c3,0x10a2,0x2103,0x3185,0x2103,0x0861,0x10a2,0x10a3,0x10a2,0x18e3,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e4,0x2104,0x18c3,0x10c2,0x10c3,0x10c2,0x10a2,0x2944,0x3185,0x2104,0x1082,0x10c2,0x10c3,0x10a2,0x2124,0x3185,0x2104,0x10a2,0x10c3,0x18c3,0x18a2,0x20e4,0x2945,0x1904,0x10a2,0x18c3,0x10c3,0x10c3,0x2124,0x39c6,0x2124,0x18c3,0x18c3,0x18c3,0x18a2,0x2103,0x3185,0x2985,0x2103,0x10a2,0x18c3,0x18e3,0x18e3,0x2944,0x2965,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x2965,0x2965,0x2103,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x2965,0x1903,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2124,0x18e3,0x18e3,0x1903,0x18c3,0x1903,0x2945,0x2144,0x18e3,0x18c3,0x18e3,0x18e3,0x18e2,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x18c2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x18e3,0x18c2,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x18c3,0x10a2,0x1082,0x18a2,0x18c3,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c3,0x2104,0x2104,0x10a2,0x18c2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x6328,0x6b24,0x2144,0x31a6,0x2144,0x18e3,0x2104,0x2104,0x1904,0x2124,0x2986,0x2124,0x10c2,0x2124,0x2124,0x2103,0x2124,0x3186,0x2944,0x10a2,0x1903,0x2104,0x18e3,0x2124,0x3186,0x2124,0x10a2,0x18e3,0x1903,0x18e3,0x18c3,0x2965,0x2966,0x10a2,0x10c3,0x18e3,0x10e3,0x10c2,0x2965,0x2965,0x10c2,0x10a2,0x1903,0x18e3,0x10c2,0x2124,0x2986,0x18e3,0x10a2,0x18e3,0x1904,0x10c2,0x2964,0x3185,0x18e3,0x1082,0x18c3,0x18e4,0x18c3,0x2104,0x2985,0x20e3,0x0882,0x18c3,0x18e3,0x10c3,0x2103,0x31a5,0x2124,0x0861,0x10a3,0x18c3,0x10a3,0x18e3,0x2965,0x18e3,0x0881,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x18e3,0x18c3,0x10c3,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c3,0x10c2,0x10c2,0x18e3, +0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x10c2,0x10c3,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2124,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x2124,0x2965,0x18e4,0x10a3,0x18e3,0x18e3,0x10a2,0x2124,0x3165,0x2104,0x10c3,0x18e3,0x18e3,0x18c3,0x2124,0x3186,0x1904,0x18c3,0x1904,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x1903,0x2125,0x2104,0x18e3,0x2104,0x3185,0x2965,0x18e3,0x18e3,0x2104,0x1904,0x18e3,0x2144,0x2965,0x18e3,0x18c3,0x2124,0x2104,0x18c3,0x3185,0x39e7,0x2924,0x2104,0x2104,0x2104,0x18e4,0x2145,0x2985,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2965,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2124,0x1903,0x1904,0x2104,0x18e3,0x18e1,0x18c3,0x18c3,0x10a2,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0861,0x10a2,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x18a2,0x18e3,0x2104,0x18e3,0x10a2,0x1082,0x0861,0x18c3,0x2104,0x2924,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2103,0x18a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x18e3,0x2104,0x18a2,0x18c3,0x0861,0x0861,0x18c3,0x18e3,0x20e3,0x20e3,0x20e4,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x10a2,0x10a2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x20e3,0x5ac7,0x7ba4,0x2144,0x29a6,0x2124,0x1903,0x2145,0x2145,0x2144,0x2124,0x2986,0x2124,0x10c3,0x2965,0x2965,0x1904,0x2124,0x2965,0x2124,0x18c3,0x2144,0x2144,0x2104,0x2104,0x2965,0x2965,0x18e3,0x1904,0x2124,0x2124,0x2104,0x2965,0x2965,0x18c3,0x18e3,0x2124,0x1904,0x18e3,0x2965,0x2965,0x10c2,0x10c3,0x2124,0x1904,0x18e3,0x2124,0x2985,0x18e3,0x18c3,0x1904,0x2104,0x18e3,0x2965,0x31a6,0x18e3,0x10a2,0x18e3,0x1904,0x18e3,0x2104,0x2985,0x2104,0x1082,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2124,0x0862,0x18e3,0x18e4,0x18c3,0x18e3,0x2965,0x2104,0x1082,0x18e3,0x2104,0x18e3,0x18c3,0x18e3,0x10c3,0x10a2,0x10a2,0x18e3,0x18e3,0x10c3,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x10c2,0x10c3,0x18e3,0x18c3,0x10c2,0x18c3,0x18e3,0x18c3,0x10c3,0x18e3, +0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18e3,0x18c3,0x10a2,0x10c3,0x18c3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x2124,0x2124,0x18e3,0x2945,0x2124,0x18e3,0x18e3,0x2945,0x2965,0x2104,0x2104,0x2124,0x2104,0x18c3,0x2944,0x31a6,0x2144,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2945,0x18e3,0x18e3,0x2124,0x2124,0x1904,0x2124,0x31a6,0x2145,0x2104,0x2945,0x2945,0x2945,0x2104,0x3186,0x2965,0x2144,0x2965,0x2965,0x2145,0x18e3,0x2944,0x2985,0x2104,0x2144,0x2965,0x2986,0x2104,0x3185,0x41e6,0x3185,0x2945,0x29a6,0x2165,0x2124,0x2145,0x3185,0x2124,0x2985,0x31a6,0x2986,0x2965,0x2124,0x3185,0x2124,0x2945,0x3186,0x2966,0x3186,0x2124,0x2965,0x2945,0x2104,0x2966,0x2965,0x2945,0x18e2,0x18a3,0x18a2,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x1082,0x0861,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18a2,0x18e3,0x2124,0x18e3,0x18c2,0x1081,0x1082,0x18e3,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x2124,0x18a3,0x18c3,0x0841,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2945,0x2944,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2945,0x2124,0x18c3,0x18c2,0x18e3,0x18e3,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4225,0x6b24,0x2965,0x3186,0x2104,0x2124,0x31c6,0x31a6,0x2965,0x2144,0x31a6,0x2145,0x1904,0x2965,0x2965,0x2986,0x2124,0x3186,0x2145,0x2104,0x3186,0x2965,0x2965,0x2124,0x3186,0x3186,0x1903,0x2144,0x2145,0x2945,0x2945,0x2965,0x2965,0x18e3,0x2145,0x2145,0x2945,0x2124,0x2945,0x3186,0x18c3,0x1904,0x2965,0x2945,0x2124,0x2965,0x31a6,0x18e3,0x2104,0x2124,0x2965,0x2104,0x2945,0x31c7,0x2104,0x18e3,0x2144,0x2145,0x2144,0x2124,0x3186,0x2104,0x10a2,0x2124,0x2965,0x2124,0x2124,0x31a6,0x2145,0x10a3,0x2125,0x2125,0x2124,0x2104,0x2965,0x2124,0x1082,0x2124,0x2124,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x1903,0x2104,0x2104,0x1904,0x18e3,0x1904,0x1903,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x18e3, +0x18e3,0x18e3,0x18c3,0x18e3,0x18e4,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x2124,0x1903,0x1903,0x2104,0x1904,0x2104,0x2104,0x2124,0x1904,0x2144,0x2144,0x1904,0x1903,0x2104,0x2104,0x2124,0x2125,0x1903,0x2965,0x2965,0x1904,0x2124,0x2945,0x2144,0x18e3,0x2965,0x2985,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x31a6,0x2145,0x1904,0x2165,0x2965,0x2104,0x2104,0x2945,0x2124,0x2124,0x2965,0x2965,0x2145,0x2124,0x2986,0x2145,0x2144,0x2965,0x2965,0x2986,0x2124,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2104,0x2124,0x2965,0x2124,0x2965,0x31a6,0x31c6,0x2124,0x3185,0x39a6,0x2965,0x31a6,0x29a6,0x29a6,0x2165,0x2965,0x3186,0x2945,0x3186,0x39c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2966,0x39c7,0x31a7,0x2966,0x2104,0x3186,0x2965,0x2945,0x31a6,0x2986,0x39e7,0x18e2,0x18c3,0x18a2,0x18a3,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x18e3,0x2104,0x20e4,0x18e4,0x2104,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x10a2,0x18c2,0x10a2,0x18c3,0x2124,0x18c3,0x10c2,0x1082,0x1082,0x18e3,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2944,0x18e3,0x2103,0x2103,0x18e3,0x10a2,0x18e3,0x18e3,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3186,0x3186,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4206,0x62e6,0x2945,0x3186,0x2104,0x2145,0x3186,0x2965,0x2945,0x2945,0x31c6,0x2945,0x2104,0x2985,0x2965,0x3186,0x2965,0x3186,0x2945,0x2124,0x2965,0x2985,0x2965,0x2144,0x31a6,0x31a6,0x2944,0x2944,0x2965,0x2965,0x2924,0x2965,0x3186,0x2104,0x2945,0x2145,0x2145,0x2124,0x2965,0x3186,0x2104,0x2124,0x2965,0x3186,0x2945,0x2124,0x31a6,0x2124,0x2124,0x2965,0x2965,0x2124,0x2945,0x39c7,0x2124,0x2104,0x2965,0x2945,0x2124,0x2124,0x3186,0x2124,0x18e3,0x2945,0x2945,0x2945,0x2124,0x31a6,0x2965,0x18c3,0x2145,0x2945,0x2965,0x2104,0x2965,0x2945,0x18e3,0x2144,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2144,0x2124,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x1924,0x1903,0x2145,0x2124,0x1904,0x1904,0x2124,0x1904,0x1904,0x1903,0x2104,0x18e3,0x2104,0x2124,0x1904,0x1903,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x2104,0x1903,0x1903,0x18e3,0x18e3,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2145,0x1904,0x1904,0x2104,0x2124,0x2145,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2965,0x29a6,0x2145,0x2124,0x2965,0x2124,0x2165,0x2985,0x2185,0x2124,0x2124,0x2945,0x2124,0x2944,0x2985,0x2985,0x2165,0x2124,0x2965,0x2145,0x2144,0x2965,0x2965,0x2965,0x2125,0x2945,0x2965,0x2965,0x2986,0x2986,0x3186,0x2945,0x2124,0x2965,0x2124,0x2965,0x2965,0x2985,0x2124,0x2124,0x2945,0x2144,0x2986,0x2986,0x2986,0x2145,0x2124,0x2965,0x2124,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2985,0x2144,0x2965,0x31a6,0x2986,0x2966,0x2144,0x2145,0x2945,0x2986,0x31a6,0x2985,0x3186,0x18c2,0x18a2,0x18a3,0x10a2,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x1082,0x1082,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1924,0x1924,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x18e3,0x2104,0x3164,0x2944,0x2104,0x3144,0x2924,0x2124,0x2104,0x2124,0x2924,0x3164,0x2945,0x2124,0x2103,0x2104,0x2104,0x18e3,0x10a2,0x18e3,0x20e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3185,0x3165,0x2945,0x2924,0x2124,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x20e3,0x18e3,0x2103,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4207,0x62c9,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2144,0x3186,0x2986,0x2965,0x2965,0x2965,0x2945,0x31a6,0x2945,0x3185,0x2965,0x2124,0x2145,0x2986,0x2145,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2124,0x2124,0x2945,0x2965,0x2144,0x2104,0x2945,0x2145,0x2945,0x2144,0x2945,0x2965,0x2945,0x2965,0x2124,0x2965,0x2945,0x2144,0x2965,0x2124,0x2965,0x2124,0x2124,0x2144,0x2145,0x2945,0x2124,0x2145,0x2124,0x18e3,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x1904,0x2124,0x2124,0x2124,0x2104,0x1903,0x2104,0x2104,0x2965,0x2145,0x2144,0x2145,0x2144,0x2145,0x2124,0x1924,0x10e3,0x2165,0x2124,0x1903,0x1904,0x1904,0x1904,0x18e3,0x2104,0x1903,0x2104,0x2124,0x2945,0x1904,0x1904,0x2124,0x1903,0x1904,0x1904,0x1903,0x2104, +0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1904,0x18e3,0x2104,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2965,0x2985,0x2144,0x1924,0x2124,0x2124,0x1904,0x2124,0x2965,0x3186,0x2124,0x2125,0x2125,0x2124,0x2945,0x2965,0x2965,0x2124,0x1904,0x1904,0x1904,0x2125,0x2966,0x2986,0x2965,0x2145,0x2124,0x2945,0x2985,0x2985,0x2986,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2144,0x2145,0x2985,0x2945,0x2965,0x2965,0x2966,0x3186,0x2945,0x2966,0x31a6,0x2986,0x2985,0x2965,0x2124,0x2965,0x2986,0x2986,0x2144,0x2965,0x2144,0x2145,0x2966,0x2166,0x2165,0x2965,0x2165,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x29a6,0x31c7,0x31a6,0x31c7,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x2965,0x2145,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x1944,0x21a6,0x2144,0x21a6,0x21a6,0x2145,0x21a6,0x21a6,0x2145,0x21a6,0x21c6,0x2145,0x2185,0x1944,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x39a4,0x6b04,0x62c3,0x4a04,0x62e4,0x5a64,0x41c4,0x41e4,0x4a05,0x5264,0x6ae4,0x41c4,0x41e4,0x4a03,0x2123,0x2104,0x18e3,0x10a2,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3965,0x5185,0x3944,0x3145,0x4965,0x3145,0x4145,0x4165,0x2945,0x3965,0x3965,0x3965,0x4165,0x28e3,0x2103,0x20e3,0x18a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c3,0x3985,0x6227,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x2145,0x31a6,0x2965,0x2145,0x2124,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2945,0x2145,0x2145,0x2965,0x2965,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2965,0x2945,0x2945,0x2945,0x2124,0x2124,0x2986,0x2145,0x2144,0x2145,0x2965,0x2145,0x2965,0x2145,0x2945,0x2965,0x2945,0x2124,0x2124,0x2144,0x2124,0x2945,0x2145,0x2124,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2104,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2144,0x1924,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x1903,0x1903,0x18e3,0x1904,0x18e4, +0x18c3,0x18e3,0x2124,0x2104,0x1903,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2144,0x2124,0x1904,0x2124,0x2145,0x2125,0x2125,0x2124,0x1904,0x18e3,0x1904,0x1904,0x2124,0x1904,0x2145,0x2965,0x2145,0x2125,0x2945,0x2966,0x2965,0x2965,0x3185,0x2165,0x2124,0x2145,0x2125,0x2125,0x2945,0x2945,0x2966,0x2966,0x2165,0x2965,0x2986,0x2965,0x2986,0x2985,0x2145,0x2165,0x2145,0x29a6,0x29a6,0x31a6,0x2145,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x31c7,0x2965,0x2986,0x31a6,0x3186,0x2165,0x2986,0x2965,0x2165,0x31a6,0x2986,0x2145,0x2985,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2145,0x2165,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2985,0x2966,0x31c7,0x3186,0x31a6,0x39e7,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x31e7,0x31a6,0x2986,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x1924,0x21c6,0x2145,0x2186,0x21a6,0x2165,0x21e7,0x2207,0x21a5,0x21e7,0x21e7,0x2165,0x2185,0x1964,0x18e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18a2,0x0861,0x1082,0x18c3,0x5264,0x83c3,0x7ba3,0x6304,0x7b84,0x83a4,0x62c4,0x5aa4,0x6b25,0x6b04,0x83a3,0x4a04,0x7b64,0x5a62,0x2103,0x2104,0x18e3,0x10a2,0x18c3,0x18c2,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x5965,0x7185,0x5165,0x5185,0x6985,0x4165,0x6185,0x5965,0x4165,0x69a6,0x51a6,0x4985,0x6185,0x2903,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6184,0x31a7,0x2966,0x2965,0x2986,0x3186,0x2945,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2966,0x2966,0x2986,0x31a6,0x3186,0x2945,0x3186,0x31a6,0x2965,0x3186,0x2965,0x1924,0x2986,0x2986,0x2124,0x2124,0x2124,0x2145,0x2165,0x2986,0x2986,0x2145,0x2945,0x2945,0x2945,0x2165,0x2165,0x2966,0x2124,0x1904,0x2125,0x2125,0x2945,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2965,0x2144,0x2965,0x2965,0x2165,0x1924,0x1904,0x2145,0x2144,0x2965,0x2986,0x2124,0x2965,0x2145,0x2125,0x2125,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2945,0x18c3,0x18e3,0x18e3,0x2104,0x1903,0x1904,0x2124,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x1903,0x2124,0x2124,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x18e3,0x1903,0x2104,0x2124,0x1903,0x2124,0x2124,0x10c3,0x10c3,0x18e3,0x2104, +0x1904,0x18e3,0x18e3,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x1904,0x2145,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2125,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2145,0x2125,0x2145,0x2145,0x2144,0x2124,0x2165,0x2965,0x2124,0x2124,0x2124,0x2144,0x2145,0x2125,0x2986,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2145,0x2985,0x2965,0x2986,0x2145,0x2965,0x31a6,0x2945,0x2125,0x2145,0x2945,0x2945,0x2125,0x2966,0x3186,0x2966,0x2945,0x2986,0x2986,0x31a6,0x31a6,0x2966,0x2965,0x2145,0x2966,0x2965,0x2165,0x2124,0x2144,0x2966,0x2966,0x2965,0x31a6,0x2985,0x2165,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x2966,0x2986,0x31c7,0x2986,0x2966,0x2986,0x31a6,0x2966,0x4228,0x39e7,0x2965,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x18c2,0x18a2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x2124,0x21e6,0x2165,0x2145,0x2185,0x2165,0x21c6,0x21c6,0x21a5,0x21c6,0x29a6,0x2165,0x2164,0x1944,0x20e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2104,0x18e3,0x18c2,0x0861,0x1082,0x18c3,0x5aa4,0x6b44,0x4223,0x6324,0x6b24,0x7bc5,0x6304,0x7b63,0x7ba4,0x62c3,0x83e3,0x62c3,0x83c3,0x5a82,0x2103,0x18e3,0x2103,0x18c2,0x18c3,0x18c3,0x2124,0x18c3,0x18e3,0x0841,0x18e3,0x2124,0x5985,0x6185,0x6185,0x6185,0x7185,0x4165,0x5165,0x7185,0x5985,0x79e6,0x59c6,0x4986,0x6985,0x2903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6164,0x3186,0x2986,0x2966,0x2966,0x3186,0x2966,0x2966,0x31a6,0x2986,0x2986,0x29a6,0x2966,0x2145,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x2945,0x2965,0x2965,0x2925,0x2124,0x2945,0x2945,0x31a6,0x2145,0x2125,0x2986,0x39c7,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x3186,0x2965,0x2145,0x2965,0x3186,0x2985,0x2986,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2145,0x2986,0x2144,0x2124,0x2124,0x2965,0x2145,0x2125,0x2125,0x2125,0x2965,0x2124,0x2145,0x2945,0x2965,0x2124,0x2965,0x2985,0x1904,0x2104,0x18e4,0x2945,0x2945,0x18e3,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x1904,0x1904,0x1903,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x1903,0x1904,0x2145,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x2104,0x2104, +0x1903,0x1903,0x1903,0x2104,0x2104,0x2124,0x18e3,0x1904,0x1903,0x1904,0x18e3,0x1904,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x2965,0x2986,0x2125,0x2965,0x2124,0x2145,0x2124,0x2124,0x2145,0x2965,0x2124,0x2124,0x2985,0x2965,0x2125,0x2966,0x2986,0x2104,0x2945,0x2965,0x3186,0x3186,0x2965,0x2124,0x2966,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2966,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2966,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2145,0x2966,0x2986,0x2966,0x2966,0x2966,0x2145,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x31a6,0x2986,0x2985,0x2145,0x2965,0x29a6,0x2145,0x2966,0x3186,0x2986,0x3186,0x2965,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x2986,0x2966,0x31a6,0x31e7,0x31a6,0x2985,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1924,0x2165,0x2124,0x2104,0x1924,0x2124,0x2145,0x2144,0x2144,0x2145,0x2145,0x2145,0x2144,0x1904,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18c2,0x0861,0x10a2,0x18e3,0x39c4,0x4204,0x2944,0x4225,0x4204,0x4a65,0x4204,0x6304,0x5ac4,0x4224,0x6304,0x4203,0x4a64,0x5263,0x2923,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x2124,0x18e3,0x18c3,0x0841,0x18e3,0x2124,0x4165,0x4165,0x4965,0x4145,0x5985,0x4145,0x4965,0x6185,0x4165,0x59a6,0x51a6,0x3986,0x5185,0x20e3,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x6164,0x2986,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2125,0x2945,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2945,0x2145,0x2965,0x31c6,0x2945,0x31c7,0x31c6,0x2985,0x2965,0x2144,0x2965,0x2965,0x2985,0x2945,0x2124,0x2104,0x2965,0x2945,0x2945,0x2965,0x2124,0x2124,0x2144,0x2124,0x2965,0x2125,0x2945,0x2966,0x2124,0x3186,0x2945,0x2145,0x2945,0x2985,0x2945,0x2145,0x2144,0x2124,0x2985,0x2145,0x2145,0x2124,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2145,0x2124,0x1903,0x2124,0x2145,0x2124,0x2965,0x2965,0x2124,0x2125,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2986,0x2124,0x1903,0x1904,0x1924,0x2165,0x1924,0x1924,0x2144,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x2104,0x20e4, +0x18e3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x1903,0x2124,0x1903,0x1904,0x1903,0x18e3,0x1904,0x1904,0x1903,0x1904,0x1904,0x1904,0x2125,0x1904,0x1904,0x2104,0x1904,0x18e3,0x1904,0x2124,0x2125,0x2965,0x2125,0x2124,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2945,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2124,0x2965,0x31a6,0x2945,0x2104,0x2145,0x2145,0x2124,0x2124,0x2965,0x2945,0x2966,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2125,0x2965,0x2986,0x2966,0x2965,0x31a6,0x2145,0x2125,0x31a6,0x31c7,0x2986,0x2986,0x2124,0x2965,0x2965,0x2145,0x29a6,0x31c7,0x2165,0x2145,0x2165,0x29a6,0x29a6,0x2965,0x2985,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x31a7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2145,0x2986,0x31a7,0x31a6,0x2986,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2125,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x20e3,0x2944,0x2965,0x2944,0x2965,0x2944,0x2964,0x2944,0x31a4,0x3184,0x2964,0x3184,0x2944,0x2944,0x2943,0x2103,0x2103,0x18e3,0x18c2,0x18c3,0x18c3,0x2144,0x2104,0x18c3,0x0841,0x18e3,0x2124,0x3145,0x2945,0x2945,0x2924,0x3145,0x2925,0x3145,0x3145,0x2924,0x3145,0x3185,0x3165,0x3165,0x20e3,0x2103,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2965,0x2986,0x2966,0x2986,0x2985,0x2985,0x2965,0x2986,0x2965,0x2124,0x2945,0x3186,0x3186,0x2966,0x2125,0x3186,0x3186,0x31c6,0x31c6,0x29a6,0x2985,0x2985,0x2124,0x2965,0x2986,0x31a6,0x2124,0x2945,0x2145,0x2165,0x2165,0x2124,0x2986,0x2985,0x2124,0x2945,0x2965,0x2965,0x2966,0x2966,0x2125,0x2986,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2144,0x1904,0x2104,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x2124,0x2965,0x2145,0x2104,0x2124,0x2124,0x2124,0x2124,0x1903,0x2124,0x1904,0x2124,0x2945,0x2144,0x2104,0x2104,0x2124,0x2145,0x1924,0x2124,0x2145,0x2124,0x1904,0x1904,0x2124,0x2124,0x1924,0x2124,0x1904,0x1904,0x18e4,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x18e3,0x2144,0x2945,0x18e3, +0x1903,0x1904,0x2104,0x1903,0x2104,0x2104,0x1904,0x1903,0x1903,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x1903,0x18e3,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x2124,0x2125,0x2124,0x2965,0x2145,0x2124,0x2144,0x2965,0x2985,0x2124,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2144,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2986,0x2145,0x2145,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2165,0x2165,0x2985,0x2986,0x2965,0x2945,0x2945,0x2945,0x3186,0x3186,0x29a6,0x2986,0x2965,0x31a7,0x2966,0x2986,0x31a6,0x2985,0x2986,0x2945,0x2945,0x2966,0x2165,0x2165,0x2966,0x2966,0x2966,0x2986,0x31c7,0x31c6,0x29a6,0x2965,0x3186,0x2966,0x31a7,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2985,0x2965,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x1082,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1061,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2944,0x2124,0x18e3,0x2103,0x18e3,0x10a2,0x10a2,0x18a2,0x18c3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x2103,0x2944,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2103,0x18e3,0x18c2,0x18c3,0x18c2,0x2944,0x18e3,0x20e3,0x0841,0x18c3,0x2124,0x2944,0x2965,0x2965,0x2944,0x2945,0x2925,0x2924,0x2124,0x2124,0x2945,0x2945,0x2965,0x2965,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x3186,0x2965,0x2965,0x2986,0x2145,0x31a6,0x29a6,0x31c6,0x31c7,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2986,0x29a6,0x29a6,0x2165,0x29a6,0x2185,0x2144,0x29a6,0x2986,0x2945,0x2965,0x2145,0x2945,0x2945,0x2165,0x2165,0x2145,0x2165,0x2144,0x2986,0x2965,0x2104,0x2925,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2145,0x2986,0x2965,0x2965,0x2124,0x2985,0x2945,0x2124,0x2965,0x2124,0x1924,0x2124,0x2145,0x2965,0x2124,0x2165,0x2145,0x2124,0x2145,0x2124,0x2965,0x2104,0x2124,0x2104,0x2945,0x2145,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e4,0x2104,0x2145,0x1904,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2125,0x2125,0x2104,0x18e3,0x1903,0x2124,0x2104,0x2104,0x2124,0x2104,0x18e3, +0x2104,0x2104,0x2124,0x2104,0x2104,0x1903,0x2104,0x2124,0x1904,0x1904,0x1903,0x18e3,0x18e3,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2145,0x31a6,0x2125,0x2145,0x2145,0x2124,0x2104,0x2104,0x1904,0x2104,0x1904,0x2104,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2124,0x2945,0x2945,0x2125,0x2125,0x2965,0x2965,0x2945,0x2125,0x2945,0x2986,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2145,0x2966,0x2965,0x2165,0x2985,0x2985,0x2944,0x2965,0x2965,0x2965,0x3186,0x39c7,0x2966,0x29a6,0x29a6,0x2966,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x2124,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2986,0x2986,0x31c7,0x31e7,0x31a6,0x2986,0x31a6,0x2966,0x31a7,0x2986,0x2966,0x2145,0x2986,0x31e7,0x31c7,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x2965,0x31a6,0x31e7,0x29a6,0x31a6,0x2966,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x18c3,0x18c3,0x0861,0x0861,0x10a2,0x2103,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x2104,0x2103,0x2103,0x2124,0x2124,0x2103,0x2104,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x2124,0x18c3,0x20e3,0x0841,0x10a2,0x2104,0x2124,0x2945,0x2944,0x2124,0x2124,0x2924,0x2924,0x2124,0x2124,0x2924,0x2945,0x2965,0x2965,0x2124,0x2124,0x2924,0x2104,0x10a2,0x10a2,0x18e3,0x18e3,0x20e3,0x18c3,0x18c2,0x18c3,0x18c3,0x2903,0x5164,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2165,0x2986,0x2986,0x2965,0x2965,0x31a7,0x2145,0x2986,0x31a6,0x2145,0x2985,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2144,0x2165,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2985,0x2144,0x2144,0x2145,0x2145,0x2145,0x2965,0x2124,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2985,0x2965,0x2965,0x2944,0x2145,0x2145,0x2124,0x2145,0x2945,0x2145,0x2145,0x29a6,0x2985,0x2165,0x2145,0x2125,0x2945,0x2945,0x2125,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x1904,0x2124,0x2124,0x2125,0x2125,0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1924,0x1904,0x2125,0x2925,0x1904,0x2104,0x2124,0x2104,0x18e4,0x1904,0x2145,0x2125,0x1904, +0x18e3,0x1904,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x1904,0x1924,0x1924,0x1903,0x18e3,0x1904,0x2145,0x1904,0x18e3,0x2144,0x2124,0x2125,0x1904,0x1924,0x2145,0x2965,0x2145,0x2965,0x2124,0x2124,0x1903,0x2124,0x2104,0x2124,0x2145,0x2145,0x1904,0x2124,0x2144,0x2965,0x39e7,0x2985,0x2165,0x2145,0x2144,0x2145,0x2124,0x2104,0x2124,0x2945,0x2945,0x2966,0x31a7,0x2145,0x2125,0x2145,0x2165,0x2965,0x31a6,0x2986,0x31c7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2144,0x31a6,0x31a6,0x2965,0x3186,0x2986,0x3186,0x31a7,0x2966,0x2965,0x2965,0x2165,0x2145,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2986,0x2966,0x2945,0x2966,0x2966,0x2965,0x2986,0x31e7,0x39e7,0x4248,0x31c6,0x3186,0x2966,0x2965,0x2945,0x2966,0x2986,0x2986,0x31e7,0x29a6,0x2965,0x31a6,0x3186,0x2965,0x39e7,0x3186,0x2986,0x29a6,0x31c7,0x3a08,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x2104,0x18c3,0x18c3,0x0861,0x0841,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x18c3,0x18c3,0x0841,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18a2,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x2966,0x2945,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x2124,0x3165,0x2965,0x2965,0x2965,0x2125,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2945,0x2965,0x2965,0x2144,0x2144,0x2165,0x2145,0x2965,0x2985,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x2945,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2985,0x2144,0x1945,0x2165,0x2145,0x2145,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2145,0x2165,0x2165,0x2145,0x2145,0x2124,0x2965,0x1904,0x2145,0x2985,0x1904,0x2125,0x2104,0x2125,0x2966,0x2145,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x2104,0x2144,0x2124,0x1904,0x18e3,0x1903,0x1924,0x1924,0x1904,0x2945,0x2945,0x2104,0x2125,0x2125,0x2104,0x2104,0x18e3,0x1904,0x1904,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x18e3,0x18e3,0x2104,0x2125,0x2124,0x1924,0x2124,0x1904,0x2145,0x2145,0x1904,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2145,0x2144,0x2124,0x2124,0x2965,0x2965,0x2144,0x2144,0x2124,0x2104,0x2124,0x2965,0x2986,0x2144,0x2986,0x2965,0x2145,0x2145,0x2965,0x2165,0x2965,0x2965,0x29a6,0x2145,0x2125,0x2986,0x2985,0x2965,0x2986,0x2145,0x2985,0x2965,0x2124,0x2986,0x2986,0x2986,0x3186,0x2965,0x2945,0x2966,0x2986,0x2966,0x2986,0x2985,0x2145,0x2945,0x2145,0x2965,0x3186,0x3186,0x2985,0x3186,0x3186,0x2986,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x31c7,0x31a6,0x3186,0x2986,0x39c7,0x3186,0x2965,0x2986,0x2145,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31a6,0x2966,0x39e8,0x39c7,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a2,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18a3,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2985,0x31c7,0x2124,0x2965,0x2986,0x2945,0x3186,0x3186,0x2945,0x2124,0x2965,0x2985,0x2986,0x2965,0x31c6,0x2985,0x2985,0x2985,0x2985,0x2986,0x2145,0x2986,0x2965,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2165,0x2986,0x2124,0x2965,0x2945,0x2965,0x2124,0x2945,0x2144,0x2125,0x2145,0x2145,0x2965,0x3186,0x2144,0x2985,0x31a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2145,0x2124,0x2124,0x2145,0x2125,0x2125,0x2145,0x2125,0x2124,0x2145,0x1904,0x1924,0x1924,0x2124,0x2945,0x2104,0x2145,0x2124,0x2124,0x2125,0x2124,0x1904,0x1904,0x2144,0x2144,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x1904,0x1904,0x2986, +0x1903,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x1904,0x1903,0x1904,0x1904,0x2104,0x2124,0x2144,0x1924,0x1924,0x2124,0x2145,0x2125,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2945,0x2965,0x2124,0x2965,0x2965,0x2965,0x2124,0x2124,0x2145,0x2145,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2145,0x2124,0x2145,0x2165,0x2144,0x2965,0x2965,0x2966,0x3186,0x2965,0x2945,0x2966,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2985,0x2165,0x29a6,0x2965,0x2145,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x3186,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c7,0x2986,0x39c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a6,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x2945,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18c3,0x2104,0x5164,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x2966,0x3186,0x2985,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2145,0x2965,0x2985,0x2945,0x2985,0x2185,0x29a6,0x2985,0x31c7,0x31a6,0x31c7,0x2145,0x2965,0x2986,0x2945,0x2104,0x2124,0x2144,0x2124,0x2144,0x2145,0x2945,0x4208,0x2965,0x2144,0x2965,0x2966,0x2145,0x2124,0x2165,0x2145,0x29a6,0x31c6,0x2145,0x2965,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2124,0x2145,0x3186,0x2124,0x2945,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2945,0x2145,0x18e4,0x2124,0x2124,0x18e4,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145, +0x18e3,0x2124,0x2124,0x18e3,0x1904,0x18e4,0x1904,0x2124,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x2945,0x2965,0x2144,0x2144,0x2145,0x2965,0x2124,0x2124,0x2145,0x2145,0x2945,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2965,0x2124,0x2144,0x2965,0x2965,0x2985,0x2185,0x2125,0x2945,0x2986,0x2966,0x2125,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x3186,0x2986,0x2986,0x2945,0x2145,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2966,0x31a6,0x2986,0x31a7,0x2966,0x2165,0x2965,0x2966,0x2986,0x31a6,0x3186,0x39c7,0x2966,0x3186,0x31c7,0x31a7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x2104,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18e3,0x2965,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18a3,0x2103,0x4964,0x31c6,0x2965,0x2986,0x2985,0x2965,0x2945,0x2966,0x3186,0x3186,0x31a6,0x31c7,0x2945,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2965,0x2965,0x2144,0x2145,0x2965,0x2985,0x2986,0x2986,0x2145,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2945,0x2124,0x2145,0x2965,0x2145,0x2145,0x2124,0x2145,0x3186,0x2145,0x2145,0x2145,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2124,0x2145,0x2965,0x2965,0x2965,0x2945,0x2144,0x2945,0x2124,0x2965,0x2965,0x2965,0x2965,0x2124,0x2145,0x2986,0x2986,0x2124,0x2945,0x2144,0x2145,0x2145,0x2125,0x2124,0x18e4,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2986,0x2104,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2124,0x2145,0x2125,0x2945,0x2145,0x2124,0x2104, +0x2104,0x1903,0x1903,0x1904,0x1904,0x18e4,0x2104,0x2145,0x2104,0x18e3,0x1904,0x1904,0x2145,0x2124,0x1904,0x2124,0x2124,0x1904,0x2145,0x2945,0x2104,0x2124,0x2125,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2985,0x2985,0x2985,0x31e7,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2145,0x2145,0x2965,0x2965,0x2986,0x31c7,0x31a6,0x2966,0x31a6,0x29a6,0x2986,0x2966,0x2965,0x2965,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2945,0x2986,0x3186,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x31a7,0x3186,0x2965,0x3186,0x39c7,0x31a7,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18a3,0x10a2,0x18a2,0x2945,0x2945,0x18c3,0x18e3,0x10a2,0x18c2,0x18a2,0x20e3,0x4944,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2985,0x3186,0x2986,0x2986,0x2985,0x2145,0x2165,0x2965,0x29a6,0x2145,0x2145,0x2986,0x2986,0x2965,0x2966,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2144,0x2965,0x2965,0x2965,0x2945,0x2986,0x3186,0x3186,0x2965,0x2985,0x2945,0x2965,0x2945,0x2985,0x2965,0x2145,0x2145,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2985,0x2965,0x2144,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x31a6,0x2145,0x2986,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2945,0x2124,0x2125,0x2966,0x2145,0x2125,0x1904,0x2124,0x2125,0x2986,0x2124,0x2124,0x2165,0x2145,0x2145,0x2165,0x2124,0x2124,0x1904,0x2104,0x2124,0x2125,0x2145,0x2125,0x2124,0x2125,0x2104,0x1904,0x2125,0x2145,0x2124,0x1903,0x2124, +0x1904,0x1904,0x1903,0x1904,0x1903,0x1904,0x2124,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2144,0x2945,0x2145,0x2124,0x2145,0x2124,0x2124,0x1904,0x1904,0x2145,0x2144,0x2145,0x2124,0x2965,0x2145,0x2124,0x2124,0x2145,0x2165,0x2165,0x2145,0x1924,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2125,0x2965,0x2965,0x2965,0x3a08,0x31c7,0x2145,0x2145,0x2985,0x2985,0x2986,0x2986,0x2945,0x2945,0x2965,0x3186,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x2966,0x2125,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x2965,0x2966,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2986,0x2966,0x2965,0x3186,0x39c7,0x3186,0x2966,0x2986,0x2986,0x2986,0x3186,0x39c7,0x31a7,0x3186,0x39e7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2104,0x10c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2966,0x18e3,0x18c3,0x10a2,0x18c2,0x18c2,0x20e3,0x4964,0x31a6,0x2965,0x31a6,0x2986,0x2966,0x2986,0x2965,0x2945,0x2965,0x2945,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x2965,0x2966,0x2986,0x2965,0x2145,0x2965,0x2945,0x2965,0x2145,0x2945,0x2965,0x3186,0x2945,0x3186,0x3186,0x2945,0x2965,0x2144,0x2124,0x2124,0x2945,0x2986,0x2965,0x2144,0x2965,0x2965,0x2985,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2986,0x2965,0x2124,0x2965,0x2986,0x31a6,0x2965,0x3186,0x31a6,0x2145,0x2965,0x2965,0x2965,0x2945,0x2945,0x2985,0x2965,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1904,0x2104,0x2125,0x2124,0x2104,0x1904,0x2124,0x2145,0x2104,0x2125,0x2124,0x18e4,0x1904,0x2145,0x2124,0x2125,0x2125,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2124, +0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2125,0x2124,0x1924,0x2124,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2144,0x2144,0x2144,0x2965,0x2965,0x2145,0x2165,0x2145,0x2124,0x2124,0x2145,0x2124,0x2965,0x2145,0x2965,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2145,0x2145,0x1924,0x2144,0x2145,0x2144,0x2965,0x2145,0x2125,0x2145,0x2145,0x2966,0x2965,0x2124,0x3186,0x31a6,0x2986,0x2986,0x2165,0x2144,0x2965,0x2965,0x2145,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2145,0x2966,0x2966,0x2966,0x2965,0x2165,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x3186,0x39e7,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x39e7,0x2985,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x31a6,0x31c7,0x2965,0x3186,0x3a08,0x31e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x18a3,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x2104,0x2925,0x18c3,0x10a2,0x18c2,0x18c3,0x20e3,0x4964,0x31a6,0x2985,0x31c7,0x2986,0x2966,0x2986,0x2966,0x2965,0x2965,0x2144,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2965,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2966,0x2145,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2945,0x2965,0x2945,0x2965,0x2144,0x2144,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2144,0x2965,0x2965,0x2986,0x2145,0x2986,0x2986,0x2945,0x2144,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x2965,0x2145,0x2945,0x2965,0x2945,0x39a7,0x2966,0x2124,0x2145,0x2965,0x2965,0x2965,0x2144,0x2945,0x2124,0x2124,0x2124,0x2145,0x2124,0x2945,0x2125,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2945,0x2104,0x1904,0x2124,0x2125,0x2124,0x18e4,0x2124,0x2125,0x2124,0x1904,0x2104,0x2124,0x2124,0x2124,0x2104, +0x1904,0x18e3,0x1903,0x1904,0x1903,0x1903,0x18e4,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2104,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2145,0x2124,0x2144,0x2965,0x2145,0x2124,0x2104,0x2145,0x2145,0x2124,0x2145,0x2986,0x2986,0x2986,0x2145,0x2124,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2985,0x2965,0x2124,0x2145,0x2965,0x2145,0x2965,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x2986,0x31c7,0x2986,0x31a7,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2165,0x29a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2986,0x29a6,0x31c7,0x2986,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2124,0x2104,0x2124,0x2945,0x2965,0x2124,0x2124,0x2924,0x2124,0x2124,0x2125,0x2945,0x2124,0x2104,0x2104,0x2124,0x2125,0x2125,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x20e3,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2945,0x20e3,0x10a2,0x18a3,0x18c3,0x20e3,0x4964,0x2986,0x2985,0x2966,0x2965,0x2986,0x2966,0x31a7,0x2986,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x31a7,0x31a7,0x2965,0x2965,0x2986,0x2945,0x2145,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2144,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2965,0x2145,0x2144,0x2124,0x2965,0x2145,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2125,0x2124,0x2124,0x2945,0x2125,0x2945,0x2125,0x2104,0x2104,0x1904,0x2124,0x2124,0x2104,0x1904,0x2124,0x2125,0x2145,0x1904,0x1904,0x2125,0x1904,0x2124,0x1903,0x2124, +0x2104,0x2104,0x2104,0x1924,0x1924,0x1924,0x2104,0x18e3,0x18e4,0x1904,0x18e3,0x1904,0x1904,0x2124,0x2124,0x2124,0x2144,0x2944,0x2145,0x2124,0x2125,0x2145,0x2965,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2965,0x2965,0x2144,0x2124,0x2965,0x2965,0x2945,0x2125,0x2945,0x2945,0x2965,0x2965,0x2145,0x2986,0x2986,0x2966,0x2986,0x2145,0x2965,0x2985,0x2144,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2966,0x31a7,0x31a6,0x2965,0x3186,0x2945,0x2965,0x3186,0x2965,0x2985,0x2965,0x2945,0x31a6,0x2985,0x2165,0x2965,0x2965,0x2965,0x2985,0x2145,0x2145,0x2985,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x2966,0x2965,0x2145,0x39e7,0x31a7,0x2966,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x1903,0x2104,0x2124,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2945,0x2104,0x2124,0x2924,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e3,0x2103,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2944,0x2945,0x2925,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2925,0x2945,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x10a2,0x18c3,0x18a3,0x20e3,0x4165,0x2965,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3166,0x2966,0x2966,0x2965,0x2145,0x2145,0x2965,0x2145,0x2986,0x2986,0x2965,0x3185,0x2965,0x2145,0x2945,0x2985,0x31a6,0x3186,0x2965,0x2986,0x2966,0x2965,0x2985,0x2145,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2985,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x31a6,0x2985,0x3186,0x2986,0x2124,0x2965,0x2965,0x2144,0x2124,0x2145,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2144,0x2125,0x2965,0x2104,0x2124,0x2145,0x2104,0x2125,0x2104,0x2124,0x2145,0x2945,0x2986,0x2124,0x2104,0x1904,0x2145,0x2124,0x2124,0x1904,0x1904,0x2104,0x2125,0x2124,0x1924,0x2124, +0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x20e4,0x20e4,0x2104,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2125,0x2945,0x2124,0x2124,0x2125,0x2125,0x2145,0x2145,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2986,0x2145,0x2145,0x2965,0x2144,0x2124,0x2965,0x3186,0x2124,0x2965,0x2145,0x2124,0x2966,0x31c7,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2985,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2986,0x2985,0x2985,0x2985,0x2965,0x2145,0x2986,0x2965,0x2145,0x2985,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x31c7,0x3186,0x2966,0x31a7,0x3186,0x31a7,0x31a7,0x31a6,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x39e7,0x39c7,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x2103,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18a2,0x10a2,0x18c3,0x18a3,0x20e3,0x4144,0x3186,0x3186,0x2966,0x2945,0x2965,0x2145,0x2965,0x2966,0x2966,0x2986,0x2165,0x2145,0x2965,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x3186,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2145,0x2965,0x2965,0x2966,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x2145,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2985,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2965,0x2145,0x2145,0x2965,0x2145,0x2124,0x2945,0x2965,0x2986,0x2145,0x2145,0x2965,0x3186,0x2965,0x3186,0x2145,0x2124,0x2145,0x2124,0x2145,0x2124,0x2124,0x2945,0x2145,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2125,0x2125,0x1904,0x2124,0x2145,0x2145,0x2124,0x2945,0x2945,0x31c6,0x2945,0x2124,0x1904,0x2124,0x2145,0x2124,0x2145,0x2124,0x2104,0x2145,0x2124,0x1924,0x2144, +0x2104,0x1904,0x2104,0x1903,0x2104,0x2125,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1904,0x2104,0x2125,0x2125,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2125,0x2145,0x2124,0x2124,0x2124,0x2924,0x2945,0x2145,0x2124,0x2144,0x2144,0x2145,0x2124,0x2145,0x2145,0x2124,0x2945,0x2145,0x2165,0x2144,0x2124,0x2965,0x2965,0x2945,0x2124,0x2144,0x2144,0x2124,0x2965,0x3186,0x2145,0x2985,0x2965,0x2965,0x2966,0x2985,0x2165,0x2165,0x2966,0x2966,0x2945,0x2125,0x2965,0x2965,0x31a6,0x39c6,0x39c6,0x3186,0x29a6,0x2986,0x2965,0x2965,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2985,0x29a6,0x3186,0x31a6,0x29a6,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x31a7,0x2966,0x31a6,0x31c7,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x18a2,0x18a3,0x20e3,0x3944,0x2966,0x2145,0x2986,0x2966,0x2966,0x2145,0x2966,0x2986,0x2145,0x2165,0x2965,0x2986,0x2985,0x2965,0x29a6,0x2985,0x2985,0x29a6,0x2145,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x31a6,0x2145,0x3186,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2985,0x2145,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31c6,0x2986,0x2965,0x2945,0x2145,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2145,0x2945,0x2985,0x2945,0x2144,0x2145,0x2145,0x2965,0x2966,0x2986,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2145,0x2124,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2124,0x2125,0x2104,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x1904,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x18e3,0x1904,0x1903,0x1924, +0x2144,0x2104,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2124,0x2144,0x2124,0x18e4,0x2104,0x2124,0x2945,0x2144,0x2965,0x2965,0x2145,0x2144,0x2125,0x2104,0x2125,0x2925,0x2945,0x2945,0x2945,0x2965,0x2965,0x2145,0x2945,0x2945,0x2945,0x2145,0x2945,0x31a6,0x2165,0x1924,0x2144,0x2944,0x2985,0x2965,0x2145,0x2145,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2965,0x3186,0x2965,0x2965,0x3186,0x2985,0x2165,0x2985,0x2165,0x2165,0x2145,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x2986,0x2965,0x39c7,0x39c7,0x2965,0x2985,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2966,0x3186,0x39c7,0x39e7,0x31a6,0x3186,0x31a7,0x31c7,0x31a6,0x31a6,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2924,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3944,0x2986,0x2965,0x2145,0x2186,0x2986,0x2186,0x2186,0x2986,0x29a6,0x2165,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2965,0x2965,0x2945,0x2986,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2165,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2965,0x2145,0x2965,0x2986,0x2185,0x2165,0x2965,0x2965,0x2986,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2965,0x2986,0x2145,0x2986,0x2965,0x2145,0x2986,0x2985,0x2165,0x2145,0x2965,0x2145,0x2965,0x2965,0x2145,0x2965,0x2124,0x2145,0x2965,0x2124,0x2945,0x2965,0x2104,0x2965,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2965,0x2104,0x2145,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x2104,0x18e4, +0x2144,0x2145,0x2124,0x18e3,0x1904,0x2104,0x2104,0x2104,0x1904,0x1903,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2945,0x2965,0x2104,0x2144,0x2145,0x2144,0x2145,0x2945,0x2124,0x2124,0x2124,0x2945,0x2145,0x2125,0x2145,0x2945,0x2945,0x2965,0x2125,0x2125,0x2966,0x2145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2985,0x2165,0x1924,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2966,0x2966,0x2145,0x2145,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2165,0x2986,0x29a6,0x31a6,0x2986,0x2145,0x2986,0x2965,0x3186,0x2965,0x2985,0x2986,0x3186,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x3186,0x2965,0x2965,0x2965,0x31a6,0x2986,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3166,0x31a6,0x31a6,0x39a6,0x39c6,0x39c7,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x3166,0x2925,0x2924,0x2925,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3924,0x2966,0x2986,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2966,0x2965,0x2145,0x31a6,0x2965,0x31a6,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2966,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2945,0x2965,0x31c6,0x3186,0x3186,0x2965,0x2965,0x2145,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2165,0x2986,0x2986,0x2965,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2165,0x2965,0x2965,0x2985,0x2986,0x2965,0x2144,0x2965,0x2144,0x2965,0x2985,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2965,0x2965,0x2124,0x2124,0x2104,0x2945,0x2965,0x2145,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2145,0x1903,0x2124,0x2124,0x1924,0x2145,0x2125,0x2104,0x2104, +0x2104,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145,0x2124,0x2145,0x1904,0x2124,0x2125,0x2125,0x2945,0x2945,0x2124,0x2965,0x2144,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2965,0x2966,0x2125,0x2145,0x2945,0x2925,0x2125,0x2965,0x2945,0x2945,0x2966,0x2986,0x2965,0x2145,0x2966,0x2985,0x2145,0x2145,0x2145,0x2965,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x2144,0x2945,0x2966,0x3186,0x3186,0x2966,0x2986,0x2965,0x2986,0x3186,0x3186,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2165,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2965,0x3186,0x2965,0x2945,0x2985,0x3186,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c7,0x31c7,0x31c6,0x31c6,0x3a07,0x39e7,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2945,0x2945,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x3186,0x3165,0x2925,0x18e4,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x3124,0x2966,0x39e7,0x31a6,0x2965,0x3186,0x2965,0x2986,0x3186,0x2965,0x2986,0x3186,0x2144,0x2965,0x31c7,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x3186,0x2965,0x3186,0x31a6,0x2985,0x3186,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x39e7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2125,0x2965,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x3186,0x2945,0x2145,0x2986,0x2965,0x2945,0x2145,0x2985,0x3186,0x3186,0x31a6,0x2124,0x31a6,0x2965,0x2124,0x2124,0x2965,0x2965,0x1924,0x2165,0x2165,0x2945,0x2145,0x2145,0x2124,0x2104,0x2145,0x2124,0x2124,0x2945,0x2144,0x1903,0x2124,0x2124,0x2124,0x2145,0x2104,0x2104,0x2104, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2125,0x2945,0x2145,0x2124,0x2124,0x1904,0x2124,0x2125,0x2945,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2985,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2125,0x2945,0x2125,0x2145,0x2165,0x2145,0x2165,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2965,0x2985,0x2965,0x3186,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2165,0x2945,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2965,0x2986,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2966,0x2966,0x2985,0x2165,0x2986,0x31a6,0x39c7,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x39e7,0x39e7,0x31a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x18a3,0x2124,0x2965,0x3186,0x3186,0x3186,0x2965,0x2944,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2145,0x2986,0x31a6,0x31c6,0x39c6,0x31a6,0x3186,0x20e4,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x3944,0x3186,0x3186,0x3166,0x3186,0x3186,0x2145,0x2966,0x3186,0x3186,0x2965,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x3186,0x3186,0x2986,0x2985,0x2145,0x2986,0x31c6,0x2965,0x2986,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2945,0x2144,0x2965,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2145,0x2145,0x2945,0x2965,0x2986,0x2165,0x2965,0x31a6,0x2986,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2945,0x2966,0x3186,0x2945,0x2125,0x2966,0x2985,0x2145,0x2965,0x2965,0x2145,0x2945,0x2965,0x2945,0x2965,0x2145,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x2965,0x2945,0x2104,0x2124,0x2124,0x2104,0x2104,0x2965,0x2986,0x2144,0x1904,0x1904,0x2124,0x1904,0x1904,0x2145,0x2145,0x2124,0x2124, +0x2104,0x2945,0x2945,0x2125,0x1904,0x2104,0x2104,0x2124,0x2124,0x2104,0x2965,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2965,0x2144,0x2965,0x2965,0x2125,0x2165,0x2145,0x2124,0x2124,0x2945,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2144,0x2145,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x3186,0x2985,0x2965,0x3186,0x2965,0x2145,0x2145,0x2145,0x2145,0x2945,0x2945,0x2986,0x2965,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2985,0x2986,0x2985,0x31a6,0x39e7,0x2965,0x2986,0x2965,0x2986,0x31c7,0x31a6,0x2965,0x2144,0x2165,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2986,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x18c3,0x2944,0x2965,0x3186,0x3185,0x2965,0x2104,0x18c3,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10c2,0x1903,0x2944,0x31a6,0x31a6,0x39c6,0x3185,0x18a3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x3124,0x31a6,0x2965,0x2965,0x2966,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2945,0x3186,0x39e7,0x31c6,0x2965,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2165,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2145,0x2125,0x2145,0x2965,0x2145,0x2165,0x2965,0x3186,0x31a7,0x2966,0x2945,0x2945,0x2986,0x2986,0x2145,0x2986,0x2985,0x2985,0x2985,0x2965,0x29a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2165,0x2965,0x2165,0x2145,0x2145,0x2965,0x2945,0x2144,0x2945,0x2144,0x2965,0x2124,0x2124,0x2945,0x2104,0x2124,0x1903,0x2124,0x2145,0x1904,0x2124,0x2124,0x2124,0x2144,0x1904,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x2124, +0x2124,0x1904,0x2104,0x2145,0x1904,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2125,0x2145,0x2104,0x2124,0x2125,0x2124,0x2945,0x2145,0x2145,0x2965,0x2144,0x2124,0x2145,0x2124,0x2125,0x2165,0x2145,0x2124,0x2945,0x2945,0x2945,0x2145,0x2124,0x2144,0x2965,0x2986,0x2965,0x2124,0x2986,0x2986,0x2965,0x2945,0x2945,0x2124,0x2124,0x2145,0x2165,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2165,0x2185,0x2165,0x2185,0x2985,0x2985,0x2165,0x2945,0x2985,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2965,0x2966,0x3186,0x3186,0x2966,0x3186,0x31c7,0x2986,0x2965,0x2965,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x2986,0x31c7,0x31a7,0x31a7,0x2966,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x1082,0x0861,0x0861,0x0841,0x0861,0x1062,0x18e3,0x2944,0x2965,0x2965,0x2965,0x2104,0x10c2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x10a2,0x2103,0x2965,0x31a6,0x31a6,0x2965,0x2104,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x3124,0x31a6,0x31a6,0x31a7,0x2986,0x3186,0x3186,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2965,0x3186,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2945,0x2985,0x3186,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2986,0x2986,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2965,0x2145,0x2165,0x2965,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2124,0x2145,0x2986,0x2965,0x2145,0x2986,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2124,0x2124,0x2145,0x2144,0x2965,0x2965,0x2124,0x2985,0x2965,0x2145,0x2145,0x2145,0x3186,0x2145,0x2945,0x2965,0x2124,0x2124,0x2144,0x2945,0x2145,0x2144,0x2124,0x2124,0x2144,0x2986,0x2965,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2145,0x2124,0x18e3, +0x1904,0x1904,0x2124,0x2145,0x2124,0x1904,0x2104,0x2104,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2145,0x2145,0x2125,0x1924,0x2145,0x2165,0x2145,0x2145,0x2124,0x2945,0x2965,0x2125,0x2145,0x2986,0x2986,0x2966,0x2124,0x2945,0x2145,0x2124,0x2124,0x2165,0x2965,0x2965,0x2985,0x2145,0x2985,0x2986,0x2965,0x2965,0x2125,0x2965,0x2144,0x2965,0x2165,0x2965,0x2965,0x2965,0x3186,0x3186,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2145,0x2985,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x29a6,0x2986,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x31c6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x3186,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x20e4,0x31a6,0x2945,0x2944,0x2944,0x18e3,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x2124,0x3185,0x3185,0x3165,0x20e3,0x1082,0x0861,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x4185,0x31a6,0x2966,0x39c7,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2145,0x29a6,0x31a6,0x2966,0x3186,0x2965,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x2965,0x2986,0x3186,0x3186,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2985,0x3186,0x2986,0x2965,0x2966,0x2966,0x2965,0x31a6,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2985,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2965,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2966,0x31a7,0x2946,0x2966,0x2966,0x2945,0x2965,0x2145,0x2945,0x2945,0x2945,0x2965,0x2985,0x2945,0x2124,0x2145,0x2165,0x2144,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2945,0x2124,0x2945,0x2965,0x2124,0x2144,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x2104,0x18e4, +0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e4,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2125,0x2145,0x2145,0x1924,0x2165,0x2165,0x2124,0x2144,0x2144,0x2945,0x2965,0x2945,0x31c7,0x31a6,0x2965,0x2945,0x2965,0x2945,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2165,0x1924,0x2145,0x2965,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2124,0x2124,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2986,0x2966,0x2145,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2145,0x2985,0x2985,0x2985,0x3186,0x2965,0x2965,0x2966,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2965,0x2985,0x39e7,0x3186,0x31c6,0x3186,0x2986,0x2986,0x3186,0x2965,0x2985,0x3186,0x2965,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x29a6,0x39e7,0x31a6,0x2965,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x18a2,0x2945,0x31a6,0x2924,0x2124,0x18c3,0x1061,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x20e3,0x2124,0x2124,0x2924,0x2965,0x2945,0x2103,0x18c2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x10a2,0x2124,0x2965,0x2965,0x2945,0x18c3,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51c6,0x31c7,0x29a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31c6,0x2986,0x2965,0x2986,0x31a6,0x2965,0x2986,0x2986,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x2144,0x2985,0x2986,0x2966,0x2966,0x2965,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2966,0x2966,0x2145,0x2946,0x2946,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2144,0x2945,0x2965,0x2945,0x2124,0x2965,0x2945,0x2145,0x3186,0x3186,0x2124,0x2145,0x2124,0x2965,0x2144,0x2144,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2985,0x2986,0x2145,0x2124,0x2145,0x2124,0x2104,0x2104,0x2125,0x1904, +0x2124,0x2145,0x2125,0x1904,0x1904,0x2104,0x2104,0x2124,0x2945,0x2124,0x2145,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2945,0x2945,0x2124,0x2145,0x2145,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2145,0x2945,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2965,0x2144,0x2965,0x2145,0x2124,0x2144,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2965,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2986,0x2965,0x2985,0x2986,0x2986,0x2986,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2966,0x2986,0x3186,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31e7,0x31e7,0x2965,0x2145,0x2104,0x10c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x2104,0x2124,0x2104,0x18c3,0x0861,0x1083,0x3167,0x39a7,0x2124,0x18c3,0x18c3,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x2103,0x18e3,0x10a2,0x10a2,0x18c3,0x18c4,0x1083,0x0861,0x10a2,0x2124,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51a5,0x2145,0x4228,0x39e7,0x3186,0x2986,0x2986,0x29a6,0x31e7,0x2985,0x2986,0x2986,0x2965,0x2945,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2986,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2966,0x39c7,0x31c7,0x2165,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2966,0x31a6,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x2145,0x2165,0x2986,0x2965,0x2945,0x2124,0x3186,0x2945,0x2945,0x2965,0x2945,0x2945,0x2144,0x2965,0x2965,0x3186,0x2966,0x2104,0x2124,0x2144,0x2124,0x2945,0x2945,0x2145,0x2965,0x2124,0x2945,0x2144,0x2104,0x2104,0x2965,0x2145,0x2144,0x2124,0x1904,0x2145,0x2145,0x2104,0x2124, +0x2124,0x2124,0x2124,0x2124,0x1904,0x18e3,0x2104,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x1904,0x2125,0x2965,0x2145,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2985,0x2145,0x2145,0x2144,0x2965,0x2165,0x2986,0x2145,0x2145,0x2965,0x31c7,0x2965,0x2125,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2965,0x2945,0x2945,0x2145,0x2145,0x2145,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2124,0x2986,0x31a6,0x2945,0x2965,0x2986,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2966,0x3186,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x29a6,0x31c6,0x2985,0x3186,0x2966,0x3186,0x2986,0x39e7,0x31a6,0x2165,0x2965,0x2986,0x31a6,0x31a6,0x31c6,0x2966,0x31a6,0x2966,0x2966,0x31a6,0x2124,0x0000,0x0000,0x0000,0x0020,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0861,0x41ca,0x9cb4,0x5249,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2924,0x2924,0x2965,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x2967,0x420a,0x20e5,0x0861,0x10a2,0x2104,0x2924,0x2924,0x2104,0x1082,0x0861,0x0861,0x0861,0x10a2,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x51a5,0x0000,0x1082,0x4208,0x4208,0x3186,0x31a6,0x31c6,0x29a6,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2965,0x2966,0x31c7,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2986,0x2965,0x3186,0x3186,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x3186,0x2965,0x3186,0x2965,0x2985,0x2986,0x2986,0x2986,0x2966,0x31a7,0x2965,0x2985,0x2965,0x2985,0x2986,0x2945,0x3186,0x2966,0x2945,0x2985,0x31a6,0x2986,0x2965,0x2144,0x2145,0x2165,0x2144,0x2145,0x2985,0x2986,0x2144,0x1924,0x2145,0x2165,0x1924,0x2145,0x2145,0x2965,0x2966,0x2125,0x2965,0x2965,0x2965,0x2986,0x2945,0x2124,0x2144,0x2965,0x2945,0x2145,0x2104,0x2124,0x2104,0x2124,0x2965,0x2124,0x2124,0x2965,0x2965,0x2104,0x1903, +0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2144,0x2144,0x2986,0x2965,0x2145,0x2124,0x1904,0x2124,0x2945,0x2145,0x2965,0x2144,0x2145,0x2145,0x2165,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2966,0x2965,0x2965,0x2965,0x2945,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3186,0x2986,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2165,0x2985,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2985,0x29a6,0x2985,0x31a6,0x2985,0x2985,0x2165,0x2165,0x2986,0x2965,0x2985,0x31c6,0x31c6,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2966,0x31c7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x1904,0x0020,0x0861,0x0861,0x0041,0x0841,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x1082,0x52cd,0x94d2,0x3986,0x2945,0x20e3,0x18c3,0x2103,0x2124,0x2104,0x2124,0x2924,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18a3,0x2946,0x8c94,0x6b4e,0x0841,0x0861,0x18c3,0x2104,0x2104,0x2944,0x20e3,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x49c5,0x1082,0x0000,0x3186,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2945,0x3186,0x39e7,0x3186,0x2145,0x2966,0x2986,0x2986,0x2966,0x2945,0x2986,0x2986,0x2966,0x2986,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2165,0x29a6,0x31a6,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x2145,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2965,0x2165,0x2986,0x3186,0x2145,0x31a6,0x31a6,0x2945,0x3186,0x2145,0x2145,0x2986,0x2145,0x2985,0x31c7,0x2965,0x2145,0x2145,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2125,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2124,0x2144,0x2144,0x2124,0x2945,0x2945,0x2125,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904, +0x2104,0x2965,0x2125,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x29a6,0x2165,0x2145,0x2965,0x2965,0x2965,0x2145,0x2945,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x2145,0x2125,0x2945,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2185,0x2165,0x2165,0x2965,0x2125,0x2125,0x2125,0x2145,0x2965,0x2985,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2145,0x2165,0x2165,0x2165,0x2945,0x2986,0x29a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2945,0x2945,0x2966,0x2986,0x3186,0x2986,0x2165,0x2145,0x3186,0x3186,0x2985,0x2986,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x31c7,0x2966,0x2145,0x2966,0x2986,0x2986,0x3186,0x31c7,0x3186,0x3186,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x18e3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x0861,0x18c3,0x3a08,0x39e7,0x4208,0x39c6,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2104,0x2104,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x2945,0x2945,0x636d,0x6bae,0x10a2,0x0841,0x1082,0x18e3,0x18e3,0x39c6,0x39a6,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x18a3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x5288,0x1082,0x1082,0x18a2,0x3186,0x31a6,0x3186,0x3186,0x2986,0x31c7,0x2965,0x31a6,0x31c7,0x31a6,0x2145,0x2986,0x3186,0x31a6,0x2165,0x2965,0x2165,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x2985,0x2985,0x2986,0x2986,0x2965,0x3186,0x2965,0x2966,0x2986,0x2986,0x2985,0x2985,0x2165,0x2965,0x29a6,0x2965,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x3186,0x2966,0x2945,0x2966,0x2966,0x2985,0x31c6,0x2165,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2966,0x3186,0x3166,0x2945,0x2925,0x2125,0x2945,0x2945,0x2124,0x2145,0x2145,0x2965,0x2986,0x2945,0x2965,0x3186,0x2145,0x2124,0x2124,0x2124,0x2125,0x2945,0x2965,0x2144,0x2124,0x2965,0x2104,0x2124,0x2965,0x2965,0x3186,0x1903,0x2124, +0x2124,0x2125,0x2104,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x2124,0x2145,0x2145,0x2145,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2945,0x2145,0x2124,0x2965,0x2145,0x2966,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2165,0x2965,0x2965,0x2145,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2945,0x2945,0x2965,0x2985,0x2965,0x2965,0x2985,0x2185,0x2165,0x2965,0x3186,0x2985,0x2965,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2966,0x2966,0x2966,0x2965,0x2986,0x3186,0x2986,0x2965,0x2986,0x31c7,0x2986,0x2986,0x3186,0x2966,0x2965,0x2965,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x3187,0x2986,0x2986,0x2986,0x2966,0x3186,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x2103,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x0841,0x0861,0x18e3,0x2104,0x18c3,0x31c6,0x2944,0x2965,0x18c3,0x18c3,0x18e3,0x2944,0x2945,0x2924,0x2103,0x18c3,0x10a2,0x18a2,0x20e3,0x2124,0x39e7,0x2124,0x31e8,0x2125,0x0861,0x0861,0x18c2,0x18c2,0x2965,0x3186,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x6b2c,0x10a2,0x10a2,0x18e4,0x39a7,0x2986,0x3186,0x2965,0x2986,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2945,0x29a6,0x31c6,0x2965,0x2985,0x2986,0x31c6,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2986,0x2965,0x2985,0x2986,0x3186,0x2965,0x2965,0x2986,0x2965,0x2986,0x31c6,0x2165,0x2965,0x31a6,0x2945,0x2965,0x2165,0x29a6,0x2966,0x2945,0x2986,0x2986,0x2965,0x2965,0x39c7,0x31a6,0x2965,0x2165,0x2986,0x2986,0x2965,0x2965,0x2986,0x2145,0x2945,0x2966,0x3186,0x2966,0x2965,0x31a6,0x29a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2145,0x2965,0x2986,0x2966,0x2965,0x3186,0x2986,0x2945,0x2965,0x2944,0x2965,0x2965,0x2945,0x2986,0x2965,0x2965,0x2965,0x3186,0x2145,0x2124,0x2124,0x2125,0x2104,0x2965,0x2944,0x2124,0x2145,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124, +0x2124,0x2124,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2104,0x2124,0x1904,0x2124,0x2144,0x2124,0x2124,0x2965,0x2986,0x2124,0x2145,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2985,0x31c7,0x31a6,0x2124,0x2965,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2985,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x2965,0x2965,0x2124,0x39e7,0x3a07,0x2144,0x2965,0x2965,0x2945,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x2985,0x2165,0x2165,0x2965,0x2986,0x31c7,0x2986,0x2986,0x2965,0x2965,0x2986,0x2966,0x31c7,0x3186,0x2986,0x2986,0x2965,0x2945,0x3186,0x2986,0x2966,0x2965,0x2986,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2966,0x2986,0x2965,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x18c3,0x10c2,0x18c2,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x18c3,0x2944,0x2944,0x2124,0x18e3,0x18c3,0x18e3,0x18c3,0x2944,0x1903,0x2124,0x10a2,0x18e4,0x2987,0x1082,0x0841,0x1082,0x10a2,0x18c3,0x20e3,0x18e3,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x630c,0x18e3,0x1082,0x2124,0x39c7,0x2986,0x31c7,0x2165,0x2986,0x3186,0x2965,0x2165,0x2986,0x2966,0x2966,0x3186,0x39e7,0x2985,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x31a6,0x2965,0x31c7,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x29a6,0x2966,0x2965,0x31a6,0x2985,0x2965,0x2985,0x31a6,0x31a7,0x2966,0x2145,0x29a6,0x2965,0x2985,0x31a6,0x2986,0x3186,0x3186,0x2965,0x2945,0x2945,0x2965,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2945,0x2965,0x2965,0x2965,0x2165,0x2145,0x2165,0x2965,0x2965,0x2986,0x2985,0x2945,0x2965,0x2965,0x2985,0x2124,0x2145,0x2985,0x2965,0x31a6,0x2125,0x2124,0x2124,0x2124,0x2945,0x2945,0x2965,0x2945,0x2124,0x2965,0x2145,0x1904,0x2124,0x2124,0x2124,0x2145, +0x2125,0x2124,0x2145,0x2124,0x1903,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x2145,0x2124,0x2145,0x2965,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2985,0x2965,0x2165,0x2145,0x2145,0x2965,0x2966,0x2965,0x2165,0x2145,0x2986,0x2145,0x2965,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2125,0x2986,0x2986,0x2145,0x2986,0x2965,0x2986,0x29a6,0x2165,0x2986,0x29a6,0x3186,0x2985,0x2965,0x2965,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2965,0x2965,0x3186,0x2966,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31e7,0x2986,0x31a6,0x31c6,0x3a07,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x1924,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0841,0x2945,0x39e6,0x10a2,0x1082,0x0861,0x0841,0x0841,0x0861,0x18c3,0x1082,0x18c3,0x1082,0x18e3,0x18e3,0x2124,0x20e3,0x2103,0x20e3,0x2944,0x2104,0x18c3,0x18c3,0x18e3,0x2144,0x18c3,0x18e3,0x1082,0x18c3,0x10a2,0x2986,0x10c3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x4a8a,0x18e3,0x0020,0x18e3,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x2966,0x2986,0x29a6,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2985,0x2985,0x2965,0x2986,0x2165,0x2986,0x2145,0x2145,0x2966,0x2986,0x2965,0x2986,0x2966,0x3186,0x2985,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x2986,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2985,0x2965,0x2966,0x2966,0x2986,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2966,0x2165,0x2965,0x2965,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x2145,0x2985,0x2945,0x2965,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2945,0x3186,0x2945,0x2145,0x2144,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2145,0x2145,0x2165,0x2124,0x2965,0x2965,0x2124,0x2145,0x2144,0x2144,0x2124,0x2104,0x2945,0x2945,0x2124,0x2144,0x2124,0x2124, +0x2145,0x1904,0x1904,0x2104,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2125,0x2145,0x2145,0x2945,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2124,0x2945,0x2965,0x2165,0x2165,0x2165,0x2945,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2966,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2965,0x2986,0x2145,0x31a6,0x2986,0x2145,0x2986,0x2965,0x2986,0x2986,0x2165,0x2165,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2985,0x3186,0x2965,0x2966,0x3186,0x2986,0x3186,0x2986,0x2945,0x2965,0x3186,0x2966,0x3186,0x3186,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x0881,0x0881,0x18e3,0x18c3,0x10c3,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a3,0x39c7,0x4226,0x1082,0x1082,0x0861,0x0841,0x0841,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x2924,0x2104,0x2124,0x3165,0x2944,0x18e3,0x20e3,0x20e3,0x18e3,0x1082,0x10a3,0x1082,0x18c3,0x1082,0x1904,0x10a2,0x0841,0x0861,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x4208,0x10c2,0x0020,0x10c2,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2966,0x2965,0x29a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x31a6,0x2985,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x2965,0x2966,0x2965,0x2986,0x2966,0x2986,0x3186,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x31e7,0x2165,0x2986,0x2965,0x2985,0x31a6,0x3186,0x3186,0x2986,0x2965,0x29a6,0x31a6,0x31a6,0x29a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2145,0x31a6,0x31a6,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x3186,0x3186,0x3186,0x2145,0x2145,0x2986,0x2945,0x2945,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2124,0x31a6,0x3186,0x2945,0x2145,0x2965,0x2124,0x2165,0x2165,0x2125,0x2165,0x2986,0x2144,0x2945,0x2965,0x2104,0x2145,0x2965,0x2124,0x2145,0x2945,0x2145,0x2124,0x1904,0x2124, +0x2124,0x2104,0x2104,0x2104,0x2104,0x2125,0x2124,0x2145,0x2124,0x1904,0x2124,0x2145,0x2125,0x2124,0x2124,0x2145,0x2145,0x2965,0x2145,0x2145,0x2945,0x2965,0x2124,0x2945,0x2144,0x2124,0x2965,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2965,0x2965,0x2145,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x3186,0x2965,0x2165,0x2985,0x2965,0x2965,0x2965,0x29a6,0x31a6,0x2965,0x2144,0x3186,0x31a6,0x2986,0x2965,0x2966,0x2966,0x2145,0x2145,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x2965,0x2986,0x2965,0x2986,0x31c7,0x2966,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2986,0x3186,0x2986,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x3186,0x18c3,0x0841,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x2104,0x2945,0x2104,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x18a2,0x18a2,0x18e3,0x2104,0x2945,0x3185,0x2944,0x2103,0x18c3,0x18e3,0x1082,0x10a2,0x1082,0x1082,0x18c2,0x1082,0x18a2,0x1082,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0841,0x0861,0x0861,0x0861,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x39c7,0x10a2,0x0040,0x10a2,0x3186,0x3186,0x2985,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2965,0x2965,0x3186,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2986,0x2965,0x2965,0x2145,0x2965,0x31a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x2986,0x2985,0x2965,0x31c6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2124,0x2945,0x2965,0x2965,0x2145,0x31c6,0x31a6,0x2965,0x2985,0x31a6,0x29a6,0x2965,0x2945,0x2945,0x31c7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2986,0x2986,0x2965,0x2124,0x2145,0x2145,0x2145,0x2966,0x2125,0x2966,0x2965,0x2145,0x2965,0x2965,0x2124,0x2145,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2145,0x1904, +0x2124,0x2124,0x2124,0x2125,0x2145,0x2125,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2145,0x1924,0x2124,0x2145,0x2966,0x2145,0x2145,0x2965,0x2945,0x2124,0x2124,0x2145,0x2145,0x31a6,0x2985,0x2124,0x2945,0x2165,0x2144,0x2145,0x2965,0x2965,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x3186,0x2985,0x2965,0x2144,0x2145,0x2965,0x2965,0x2985,0x2965,0x31c6,0x39e7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2966,0x2986,0x2145,0x2145,0x2165,0x2165,0x2165,0x2985,0x2965,0x2165,0x2985,0x29a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2145,0x2986,0x31c7,0x2966,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2965,0x31a6,0x18c3,0x0020,0x10a2,0x2104,0x18e3,0x10c2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x18e3,0x20e4,0x18c3,0x18a3,0x10a3,0x18a3,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x2103,0x2104,0x2944,0x20e3,0x18c3,0x18c3,0x18e3,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0020,0x0841,0x0861,0x0861,0x1081,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x31a6,0x1082,0x0840,0x18c3,0x3186,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2985,0x2165,0x2965,0x2986,0x2986,0x2986,0x2965,0x2165,0x2965,0x2965,0x31c6,0x31c6,0x2965,0x3186,0x39c7,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2965,0x2945,0x2965,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x29a6,0x2986,0x2145,0x29a6,0x2986,0x31a6,0x2985,0x2965,0x2965,0x31a6,0x31c6,0x31c6,0x29a6,0x2986,0x2965,0x2986,0x31a7,0x2966,0x2985,0x31a6,0x2986,0x2165,0x3186,0x3186,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x29a6,0x2986,0x2965,0x2145,0x2965,0x31c6,0x3186,0x2986,0x2985,0x2965,0x2124,0x2945,0x2144,0x2965,0x2986,0x2965,0x2145,0x2145,0x2145,0x2966,0x2965,0x2145,0x2125,0x2145,0x2125,0x2124,0x2124,0x2985,0x2145,0x2104,0x2124,0x2144,0x2124,0x2124,0x1904,0x2145, +0x2124,0x2124,0x2145,0x2144,0x2144,0x2124,0x1904,0x2124,0x2125,0x2124,0x2124,0x1904,0x2124,0x2125,0x2145,0x2145,0x2124,0x2124,0x2145,0x2945,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x31a6,0x2124,0x2145,0x2145,0x2144,0x2145,0x2965,0x2986,0x2986,0x2145,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x3186,0x2965,0x2145,0x2965,0x2986,0x2965,0x2945,0x2145,0x2945,0x2965,0x2985,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2966,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2985,0x31c6,0x29a6,0x10a2,0x0020,0x0861,0x18e3,0x1904,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x18e3,0x18e4,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x18a2,0x2103,0x2924,0x2924,0x20e3,0x2104,0x18e3,0x18c3,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x1082,0x10a2,0x1082,0x1082,0x18c3,0x10a2,0x0020,0x0020,0x0841,0x1082,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x2944,0x0861,0x0000,0x10c3,0x31c6,0x3186,0x2985,0x3186,0x31c6,0x3186,0x2965,0x2165,0x2986,0x2985,0x2965,0x2966,0x2965,0x2965,0x3186,0x3186,0x31c7,0x2985,0x29a6,0x2986,0x2965,0x29a6,0x2965,0x2986,0x3186,0x2965,0x2986,0x2986,0x2965,0x3186,0x2986,0x3186,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2986,0x2145,0x2986,0x2986,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2165,0x2165,0x2986,0x2185,0x2165,0x2965,0x2965,0x2145,0x2986,0x3186,0x2965,0x2965,0x2965,0x2124,0x2986,0x2965,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2125,0x2125,0x2124,0x2144,0x2985,0x2965,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2144,0x2124, +0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2945,0x2145,0x2145,0x2125,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x2965,0x2965,0x2145,0x2945,0x2124,0x2925,0x2144,0x2124,0x2124,0x2965,0x2945,0x2965,0x2145,0x2945,0x2985,0x2965,0x2145,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2144,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2985,0x29a6,0x29a6,0x0882,0x0020,0x0841,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x1082,0x18c3,0x10a2,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x2145,0x10a2,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e3,0x2944,0x20e3,0x18e3,0x2944,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x3186,0x18e3,0x0020,0x0020,0x0020,0x0861,0x1082,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x2103,0x0861,0x0000,0x18e3,0x4208,0x39c7,0x3186,0x31a7,0x3186,0x3186,0x2986,0x2966,0x29a6,0x2986,0x2965,0x2966,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x39e7,0x2985,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2986,0x31a6,0x31c6,0x2965,0x2945,0x4a69,0x39e7,0x2986,0x31a7,0x2966,0x2986,0x2945,0x2986,0x3186,0x2965,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2986,0x2965,0x2945,0x2986,0x31a6,0x2965,0x2965,0x2145,0x2965,0x29a6,0x29a6,0x2165,0x2165,0x2145,0x2165,0x2965,0x2945,0x2986,0x2986,0x2145,0x2965,0x3186,0x2965,0x2965,0x2985,0x2145,0x2144,0x2145,0x2145,0x2965,0x2965,0x2945,0x2124,0x2145,0x2965,0x3186,0x2124,0x2144,0x2945,0x2965,0x2965,0x2965,0x2124,0x2965,0x2124,0x2145, +0x2124,0x2945,0x2145,0x2145,0x2125,0x2124,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2125,0x2125,0x2145,0x2145,0x2125,0x2124,0x2145,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2945,0x2945,0x2145,0x2144,0x2124,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2965,0x2985,0x2145,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2945,0x2945,0x3186,0x3186,0x2985,0x2965,0x2945,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2985,0x2945,0x2986,0x2986,0x2986,0x2966,0x2985,0x2986,0x2965,0x2966,0x2965,0x2986,0x31a6,0x2986,0x31c6,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2965,0x2966,0x39e7,0x31a6,0x2965,0x31a6,0x3186,0x1082,0x0020,0x0040,0x1082,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2103,0x10a2,0x1082,0x18a2,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0020,0x0020,0x0861,0x18e4,0x10a3,0x1082,0x0861,0x18e3,0x2944,0x2104,0x10a3,0x18c3,0x2966,0x2104,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x18a2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1062,0x1082,0x0841,0x0861,0x18e3,0x10a2,0x1082,0x31a6,0x5289,0x2104,0x1082,0x0020,0x0020,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18a2,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18e3,0x0841,0x0000,0x18c3,0x31c7,0x31a6,0x31c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x31c6,0x29a6,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x2985,0x29a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2945,0x2965,0x2966,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x3a08,0x4228,0x31a7,0x2986,0x2986,0x2986,0x31a6,0x39c7,0x2986,0x2986,0x39e7,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x2145,0x2965,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2966,0x2945,0x31a6,0x2145,0x2145,0x2965,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2986,0x2124,0x31c6,0x31c7,0x2965,0x2965,0x2965,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x31a6,0x2965,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x31a6,0x2144,0x2104, +0x2124,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2145,0x2145,0x2145,0x2144,0x2145,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2165,0x2144,0x2144,0x2145,0x2965,0x2124,0x2945,0x2945,0x2965,0x2145,0x2124,0x2945,0x2145,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2165,0x2145,0x2965,0x2965,0x2985,0x2985,0x2165,0x2165,0x2985,0x2986,0x2965,0x2966,0x2965,0x2945,0x2945,0x2986,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x2165,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x2985,0x2145,0x2965,0x31a6,0x2965,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2966,0x3186,0x2965,0x31a7,0x31a7,0x3186,0x39c7,0x2965,0x0861,0x0000,0x0020,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2124,0x18c3,0x1082,0x10a2,0x18a2,0x18a2,0x1081,0x0861,0x0861,0x0841,0x0020,0x0841,0x18e3,0x18e3,0x1082,0x0861,0x0841,0x2104,0x2965,0x2124,0x18e3,0x2104,0x2966,0x2986,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1081,0x1082,0x1062,0x0841,0x1082,0x1904,0x10a3,0x10a2,0x2124,0x4207,0x20e3,0x10a2,0x0861,0x0020,0x0020,0x0841,0x1082,0x0861,0x10a2,0x18e3,0x18a2,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x18c2,0x0841,0x0020,0x10a2,0x31a6,0x29a6,0x31c7,0x31a7,0x3186,0x3187,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2986,0x3186,0x31a6,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2965,0x2985,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2945,0x2145,0x2965,0x3186,0x31a7,0x2986,0x2985,0x2965,0x39e7,0x3186,0x3186,0x2966,0x3186,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x2986,0x3186,0x2945,0x2965,0x2966,0x2145,0x2965,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2165,0x2965,0x2965,0x2945,0x2145,0x2165,0x2985,0x2965,0x3186,0x31a6,0x2985,0x2986,0x2145,0x2945,0x2144,0x2945,0x2124,0x2145,0x2945,0x2144,0x2965,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x2986,0x2965,0x2144, +0x2124,0x2945,0x2145,0x2945,0x2144,0x2945,0x2145,0x2145,0x2145,0x2145,0x2144,0x2124,0x2945,0x2965,0x2145,0x2145,0x2124,0x2145,0x2965,0x1904,0x2124,0x2144,0x2145,0x2965,0x2945,0x2144,0x2145,0x2145,0x2965,0x2144,0x2124,0x2124,0x2144,0x2965,0x2165,0x2965,0x2985,0x2145,0x2145,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2985,0x2986,0x2966,0x2966,0x2965,0x2985,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2985,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2965,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31a6,0x3185,0x2985,0x2986,0x2165,0x2165,0x29a6,0x2966,0x2966,0x3186,0x2985,0x2965,0x2945,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x2985,0x0861,0x0020,0x0040,0x0861,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2965,0x2965,0x3165,0x2965,0x2966,0x39e8,0x2104,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x18c3,0x18e4,0x18c3,0x10a2,0x18e3,0x2965,0x18a2,0x18c2,0x18a2,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x10a2,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0020,0x0000,0x10a2,0x31c6,0x29c6,0x2986,0x31a6,0x3186,0x3186,0x31c7,0x2966,0x3186,0x2986,0x2986,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2985,0x2965,0x31c7,0x29a6,0x2145,0x2985,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2965,0x2966,0x31a7,0x31c7,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a7,0x2945,0x3186,0x2966,0x2145,0x2965,0x2985,0x2965,0x2965,0x2165,0x2145,0x2945,0x2965,0x2986,0x2985,0x2965,0x2124,0x2965,0x2985,0x1903,0x2965,0x2986,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x2986,0x2144,0x2124,0x2945,0x2124,0x2965,0x2945,0x2124, +0x2104,0x2124,0x2104,0x2124,0x2124,0x2144,0x2145,0x2144,0x2124,0x2144,0x2144,0x2986,0x2145,0x2145,0x2145,0x2965,0x2144,0x2144,0x2144,0x2124,0x2144,0x2986,0x2966,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2965,0x2985,0x2165,0x2985,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2985,0x3186,0x31a7,0x2965,0x2965,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2986,0x2966,0x2965,0x2986,0x29a6,0x29a6,0x2986,0x2985,0x2985,0x2986,0x2986,0x2985,0x2965,0x2986,0x31a6,0x3186,0x29a6,0x29a6,0x2186,0x2185,0x29a6,0x2986,0x2966,0x2965,0x2985,0x2985,0x2985,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2986,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x0881,0x0020,0x0841,0x0861,0x10a2,0x18e3,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2104,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0020,0x0841,0x2104,0x18c3,0x1082,0x0841,0x0020,0x0841,0x2944,0x2965,0x39c7,0x5248,0x39c7,0x2986,0x4229,0x528a,0x18a2,0x0841,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x10a3,0x2945,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x0861,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18e3,0x18c2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x18c3,0x18a2,0x0841,0x0020,0x1082,0x2986,0x31c6,0x31c7,0x2985,0x31c6,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x2986,0x2986,0x2165,0x31c7,0x2986,0x2986,0x31a6,0x3186,0x2985,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2986,0x39c7,0x3186,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3186,0x31a7,0x3186,0x2965,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2985,0x2965,0x2144,0x2965,0x2965,0x2945,0x2965,0x2165,0x2965,0x2144,0x2965,0x29a6,0x2145,0x2965,0x2986,0x2145,0x2125,0x2965,0x2965,0x2145,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2144,0x2124,0x2985,0x2945, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x1904,0x2144,0x2965,0x2124,0x2125,0x2145,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x31a6,0x2966,0x2125,0x2165,0x2124,0x2125,0x2145,0x2145,0x2145,0x2945,0x2966,0x2966,0x2945,0x2965,0x2965,0x2965,0x2966,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x31a7,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2966,0x2966,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2165,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2966,0x2986,0x2986,0x2185,0x2185,0x2986,0x2966,0x2986,0x2986,0x3186,0x2985,0x2965,0x2986,0x2966,0x3186,0x3186,0x2986,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x29a6,0x2986,0x0882,0x0020,0x0841,0x1082,0x18c3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2124,0x10a2,0x0862,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0020,0x1082,0x2944,0x2945,0x4207,0x5289,0x5289,0x39c7,0x4208,0x6b6d,0x4207,0x1061,0x0861,0x1082,0x18a2,0x18a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x1082,0x0841,0x1082,0x31a7,0x3186,0x2104,0x20e4,0x2104,0x2945,0x2945,0x0841,0x0861,0x18c3,0x18a3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x10a2,0x0841,0x0020,0x10a2,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x31c7,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x3186,0x2965,0x29a6,0x31a6,0x31a6,0x31a7,0x2966,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x2986,0x3186,0x2986,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x2985,0x31a6,0x3186,0x2966,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x3186,0x2986,0x2986,0x29a6,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x2965,0x2966,0x2165,0x2965,0x2945,0x2144,0x2986,0x2985,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x2145,0x31c6,0x31a6,0x2945,0x2966,0x2966,0x2965,0x2145,0x2144,0x2985,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965, +0x2124,0x2124,0x1924,0x1924,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2945,0x2945,0x2965,0x31a6,0x2145,0x2125,0x2125,0x2125,0x2125,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2125,0x2125,0x2945,0x2966,0x2945,0x2986,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2965,0x31a6,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2965,0x3166,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2986,0x2986,0x3186,0x2986,0x3166,0x31a6,0x31a6,0x2985,0x2945,0x2966,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2986,0x2965,0x29a6,0x29a6,0x29a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2985,0x2986,0x31a6,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x0861,0x0020,0x0841,0x1082,0x18e3,0x2104,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x0841,0x0020,0x0841,0x18e4,0x18c3,0x1082,0x0841,0x0020,0x0821,0x18c3,0x2944,0x2965,0x39c6,0x4207,0x5aea,0x4208,0x39e8,0x4a6a,0x5aeb,0x2945,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0861,0x2986,0x4229,0x3186,0x2946,0x2945,0x2945,0x31a6,0x2924,0x0020,0x0841,0x1082,0x18c3,0x1061,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c3,0x18e3,0x18c3,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0841,0x0000,0x18c3,0x39c7,0x2966,0x31a7,0x39e8,0x2966,0x31a7,0x3a08,0x2986,0x2966,0x2986,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x3186,0x3186,0x3186,0x3186,0x39e7,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2965,0x31a6,0x31c6,0x2986,0x2165,0x31a6,0x3186,0x3186,0x2965,0x3186,0x2986,0x2985,0x31a6,0x3186,0x2965,0x2966,0x2966,0x31a7,0x3186,0x2945,0x2965,0x3186,0x2945,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x3186,0x2144,0x2965,0x2986,0x2985,0x31a6,0x2966,0x2145,0x2144,0x2165,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2945,0x2985,0x2965,0x2124,0x2965,0x2965,0x2945,0x2145,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2124,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2124, +0x2945,0x2124,0x2124,0x2124,0x2945,0x2124,0x2145,0x2144,0x2144,0x31a6,0x2985,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2125,0x2124,0x2145,0x2145,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2945,0x2165,0x2965,0x2945,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2966,0x2965,0x2965,0x2985,0x2985,0x2965,0x2965,0x2986,0x3186,0x2966,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2165,0x29a6,0x31e7,0x2985,0x2986,0x29a6,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x2965,0x2986,0x2985,0x2985,0x3186,0x3186,0x31a7,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x31a6,0x1082,0x0020,0x0841,0x0861,0x18c3,0x2104,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0861,0x0841,0x0020,0x0861,0x2104,0x10a2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2124,0x3185,0x39a6,0x3185,0x4a48,0x4a48,0x4a28,0x39a7,0x4208,0x3a08,0x18e3,0x0861,0x0841,0x1061,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x1062,0x0861,0x0861,0x2104,0x39e8,0x39e8,0x31a7,0x31a7,0x31a7,0x31a6,0x39c6,0x2103,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18a3,0x18a2,0x18c3,0x18c3,0x0841,0x0020,0x10a2,0x4228,0x31a7,0x31a7,0x39e7,0x31a7,0x31c7,0x31c7,0x2986,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x31a6,0x31a7,0x31a7,0x3186,0x3186,0x31c6,0x2986,0x31c7,0x3186,0x2986,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2965,0x2985,0x2986,0x2965,0x2165,0x31a6,0x2985,0x2965,0x2986,0x3186,0x3186,0x3186,0x2965,0x31a6,0x31c7,0x31a6,0x2966,0x31a6,0x31a7,0x2966,0x2986,0x2986,0x2966,0x31c7,0x31c7,0x2965,0x2966,0x3186,0x2966,0x2965,0x31a6,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2145,0x2144,0x2985,0x2965,0x2965,0x2145,0x2965,0x2144,0x2145,0x2144,0x2144,0x2124,0x2104, +0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2145,0x2125,0x1924,0x2165,0x2145,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2124,0x2145,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2965,0x2144,0x2985,0x2986,0x2165,0x2165,0x2165,0x2985,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x31a6,0x2986,0x2966,0x2965,0x2965,0x2965,0x2165,0x2985,0x2965,0x31a6,0x31c7,0x3186,0x3186,0x2986,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2985,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2985,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a6,0x31a7,0x31a6,0x31a7,0x31a6,0x2965,0x1082,0x0020,0x0841,0x0841,0x10a2,0x2944,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0861,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x0861,0x0020,0x0020,0x18c3,0x2104,0x2124,0x3185,0x31a5,0x2965,0x31a6,0x4a48,0x5289,0x31a6,0x2925,0x2966,0x2945,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x18e3,0x2145,0x2966,0x31a6,0x39c7,0x4208,0x39e7,0x39e7,0x39a6,0x18e3,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c2,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0020,0x10a2,0x3a08,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a7,0x31a6,0x2965,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x2965,0x31a7,0x3186,0x3186,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2966,0x2965,0x2986,0x29a6,0x31c7,0x31a6,0x2985,0x2985,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x31c6,0x2986,0x2965,0x2965,0x3186,0x2986,0x3186,0x2966,0x2966,0x2986,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x39c7,0x3186,0x2965,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31c7,0x31a6,0x31c7,0x2985,0x3186,0x31a7,0x2966,0x2966,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2945,0x2965,0x3186,0x2945,0x2986,0x2145,0x2145,0x2965,0x2965,0x2145,0x3186,0x3186,0x2945,0x2945,0x31a6,0x2985,0x2144,0x2165,0x2145,0x2124,0x2124,0x2124,0x2965,0x2144,0x1904, +0x2124,0x2124,0x2145,0x2124,0x2124,0x2965,0x2985,0x2965,0x2165,0x2144,0x1904,0x2144,0x2945,0x2145,0x2145,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x3186,0x2965,0x2145,0x2124,0x2145,0x2124,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2965,0x2986,0x2985,0x2185,0x2165,0x2186,0x31c7,0x2986,0x2965,0x2965,0x2945,0x2966,0x2965,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2986,0x2965,0x2966,0x2965,0x31a6,0x39c7,0x2986,0x3186,0x31a7,0x2986,0x2966,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0841,0x18e3,0x10c2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2104,0x2924,0x3186,0x31a5,0x2945,0x3186,0x4a28,0x4a48,0x3186,0x2104,0x20e4,0x2104,0x18e3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1904,0x2104,0x2125,0x2966,0x39e8,0x630b,0x4a27,0x39e7,0x31a6,0x18e3,0x0020,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0881,0x0020,0x10c2,0x31c7,0x2986,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x2965,0x31a7,0x31a6,0x31c6,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2986,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2986,0x2986,0x3186,0x3186,0x2986,0x2966,0x2945,0x2945,0x3186,0x2986,0x3186,0x2986,0x29a6,0x29a6,0x2966,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2965,0x3186,0x3186,0x2965,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x2986,0x2966,0x3186,0x2966,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2945,0x2965,0x2965,0x2945,0x3186,0x31c7,0x2165,0x2986,0x2145,0x2145,0x2966,0x2966,0x3186,0x2965,0x2104,0x2986,0x2145,0x2145,0x2945,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124, +0x2145,0x2124,0x2145,0x2144,0x2145,0x2145,0x2145,0x2165,0x2144,0x2145,0x2165,0x2145,0x2965,0x2965,0x2145,0x2965,0x2144,0x2165,0x2965,0x2165,0x2965,0x2986,0x2945,0x2145,0x2965,0x2145,0x2144,0x2945,0x2945,0x2986,0x2965,0x2945,0x2965,0x2966,0x2985,0x2965,0x2165,0x2165,0x2986,0x31a6,0x2986,0x2965,0x2966,0x2965,0x2966,0x2985,0x2985,0x2986,0x2986,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2965,0x2986,0x2966,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2986,0x29a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x29a6,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18c3,0x0861,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0861,0x20e4,0x10a2,0x1082,0x0841,0x0020,0x1082,0x2104,0x20e4,0x2945,0x39a6,0x3185,0x2965,0x3185,0x4207,0x31a6,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e4,0x18e4,0x2104,0x2945,0x39e8,0x62ea,0x4207,0x39c6,0x3185,0x18e3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18e3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0882,0x0020,0x10a2,0x4208,0x39c7,0x31a7,0x39c7,0x31c6,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x39e7,0x31c7,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x39c6,0x3186,0x31a6,0x39e7,0x31a7,0x31a7,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x3186,0x31a6,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2986,0x29a6,0x2966,0x3186,0x31c7,0x31c7,0x2145,0x31c7,0x31c7,0x2965,0x29a6,0x29a6,0x2966,0x2986,0x31c7,0x2966,0x2966,0x31a6,0x2965,0x2965,0x3186,0x2986,0x2965,0x2965,0x2986,0x2965,0x2144,0x31a6,0x2985,0x2945,0x2945,0x2965,0x31a6,0x2965,0x2986,0x3186,0x39c7,0x3186,0x2986,0x31a6,0x2145,0x2145,0x2985,0x2165,0x2965,0x2945,0x2945,0x2124,0x2965,0x2124,0x2144,0x1924, +0x2144,0x2144,0x2144,0x2144,0x2165,0x2145,0x2124,0x2165,0x2145,0x2144,0x2165,0x2145,0x2945,0x2145,0x2124,0x2145,0x2965,0x2165,0x2165,0x2145,0x2144,0x2145,0x2165,0x2145,0x2145,0x2144,0x2965,0x2945,0x2945,0x2986,0x2986,0x2986,0x2965,0x2966,0x2985,0x2986,0x2965,0x2965,0x2966,0x3186,0x2986,0x2965,0x3186,0x2985,0x31a6,0x2986,0x2165,0x2965,0x2985,0x2986,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x2965,0x2145,0x31a6,0x3186,0x2965,0x2985,0x39e7,0x3186,0x2985,0x31a6,0x2985,0x29a6,0x2965,0x2986,0x3186,0x31c7,0x29a6,0x2986,0x3186,0x2966,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x29a6,0x2986,0x2966,0x3186,0x2966,0x2986,0x31a7,0x31c7,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x0882,0x0040,0x0861,0x0861,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x1082,0x2104,0x10a2,0x0861,0x0020,0x0841,0x18e3,0x2104,0x18e3,0x2965,0x39c6,0x3165,0x2965,0x2965,0x3185,0x2944,0x2104,0x39c6,0x3165,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e4,0x18e4,0x2104,0x2966,0x4249,0x5289,0x41c6,0x39c6,0x2944,0x18c3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18e3,0x1082,0x0020,0x0882,0x4228,0x31c7,0x2986,0x4208,0x31c6,0x2986,0x31c7,0x31a7,0x29a6,0x31c7,0x31c7,0x31a7,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31c7,0x39c7,0x39c7,0x29a6,0x31a6,0x3186,0x3186,0x31a7,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x2986,0x31a6,0x2985,0x2986,0x31c7,0x39e7,0x31c7,0x31a7,0x3186,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x3186,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x2986,0x2966,0x31a6,0x3186,0x2986,0x2986,0x2966,0x2145,0x2965,0x2965,0x2945,0x2986,0x2986,0x2965,0x2945,0x2985,0x2985,0x2144,0x2986,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2144,0x2945,0x2965,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145, +0x2144,0x2144,0x2124,0x2145,0x2145,0x2144,0x2145,0x2145,0x2145,0x2144,0x2124,0x2965,0x2124,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2165,0x2145,0x2144,0x2965,0x2965,0x2965,0x2165,0x2965,0x2945,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2986,0x2145,0x2965,0x2986,0x2986,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x3186,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2985,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x31c6,0x31a6,0x31a6,0x2985,0x2986,0x31c6,0x29a6,0x2965,0x3186,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x29a6,0x0882,0x0040,0x0861,0x10a2,0x10a2,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x10a3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2104,0x18e3,0x2124,0x2985,0x2965,0x2945,0x2965,0x2945,0x2124,0x18e3,0x4a47,0x3185,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e4,0x2124,0x3186,0x4228,0x4a69,0x41e7,0x31a6,0x20e3,0x18c3,0x1082,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x10a2,0x0861,0x0861,0x31c6,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x29a6,0x39e7,0x31a7,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x39c7,0x39e8,0x3186,0x39e7,0x39c7,0x2986,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x2965,0x31a7,0x3186,0x3186,0x39c7,0x39e7,0x31c7,0x31a7,0x2986,0x29a6,0x31a6,0x31c6,0x31c6,0x2986,0x31a7,0x31a7,0x39c7,0x2966,0x3186,0x3186,0x3a07,0x31e7,0x31c7,0x31a6,0x2966,0x31a7,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x31a7,0x2986,0x2986,0x2966,0x2125,0x2966,0x2986,0x2965,0x2965,0x2986,0x2145,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2165,0x2145,0x3186,0x31a7,0x2945,0x2965,0x2986,0x2985,0x2945,0x2965,0x2144,0x2986,0x2145,0x2124,0x2145,0x2145,0x2144,0x2965, +0x2145,0x2124,0x2124,0x2145,0x2945,0x2945,0x2124,0x2145,0x2965,0x2965,0x2945,0x2144,0x2965,0x2985,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2966,0x2966,0x2965,0x2145,0x2145,0x2985,0x2986,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c6,0x3186,0x2986,0x2985,0x2965,0x3186,0x3186,0x2986,0x2986,0x2145,0x2145,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2966,0x2986,0x3186,0x31a7,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c7,0x2986,0x31a6,0x10a2,0x0040,0x0861,0x18c3,0x18c3,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x18c2,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2944,0x2104,0x18e3,0x2104,0x2944,0x2945,0x2944,0x2964,0x2944,0x2104,0x2103,0x4227,0x2123,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x3186,0x39c7,0x4a48,0x39e7,0x2965,0x10a2,0x18c3,0x18a2,0x0020,0x0020,0x0841,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x39e7,0x39e8,0x31a6,0x39e8,0x31c7,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31c7,0x31a7,0x4228,0x31c6,0x3186,0x31c7,0x31c7,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2966,0x3186,0x31a6,0x39c7,0x31c7,0x31c7,0x31c7,0x31c7,0x2986,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x3186,0x2986,0x31a6,0x39e8,0x31a6,0x2985,0x31c6,0x2965,0x4228,0x39c7,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x3186,0x2965,0x2145,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2966,0x3186,0x2986,0x2945,0x2144,0x2965,0x2945,0x2965,0x2145,0x2165,0x2986,0x2945,0x2145,0x2144,0x2965,0x2945, +0x1904,0x2144,0x2124,0x2145,0x2945,0x2945,0x2144,0x2145,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2144,0x2965,0x2986,0x2986,0x2966,0x2966,0x3186,0x2965,0x2965,0x2966,0x3186,0x39e7,0x2986,0x2985,0x2986,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2145,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x29a6,0x31e7,0x2986,0x31a6,0x31c6,0x31a6,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2985,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a7,0x31a7,0x31a6,0x31c7,0x29a6,0x29a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x3186,0x10a2,0x0841,0x10a2,0x18c3,0x18e4,0x29c7,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e4,0x2104,0x10a2,0x0861,0x0020,0x0861,0x2945,0x2104,0x18e3,0x2104,0x2944,0x2944,0x2124,0x2944,0x2944,0x2103,0x2104,0x39c6,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1081,0x10a2,0x18c3,0x1082,0x18e3,0x3186,0x3185,0x18c3,0x2124,0x2124,0x3185,0x2923,0x18c3,0x2104,0x2124,0x2945,0x3186,0x39c7,0x4207,0x3186,0x2104,0x10a2,0x18c3,0x18c3,0x0841,0x0020,0x0020,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a3,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18c3,0x18e3,0x2103,0x18e3,0x1082,0x0861,0x39c7,0x39c7,0x3186,0x39c7,0x3186,0x31a7,0x39a7,0x39a7,0x3186,0x3186,0x39a7,0x4208,0x31a6,0x2985,0x2986,0x29a7,0x31c7,0x2986,0x29a7,0x3186,0x39a7,0x3186,0x2966,0x31a7,0x31a6,0x3186,0x2986,0x3186,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2986,0x39c7,0x31a7,0x31a7,0x31a7,0x31a7,0x2966,0x31a7,0x2965,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x39c7,0x31a6,0x31c7,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2165,0x2986,0x2986,0x2986,0x2145,0x31c6,0x4228,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2165,0x2124,0x2965,0x2144,0x2145,0x2124,0x2965,0x2965, +0x2144,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2144,0x2144,0x2965,0x2145,0x2145,0x2145,0x2965,0x2966,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2985,0x2985,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x3186,0x2986,0x2986,0x2966,0x31e7,0x39e7,0x39e7,0x2965,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x39c7,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x3186,0x29a6,0x31a6,0x2965,0x2985,0x29a6,0x2985,0x31a6,0x2986,0x29a7,0x29a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x31a7,0x31c7,0x31a6,0x1082,0x0861,0x10a2,0x18e3,0x10c2,0x21a5,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0020,0x18e4,0x2104,0x1082,0x0841,0x0841,0x0861,0x2965,0x2104,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2924,0x2924,0x18e3,0x2104,0x3185,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x18c3,0x2124,0x10a2,0x2104,0x4207,0x4a27,0x2924,0x2944,0x2124,0x39a5,0x2923,0x18c3,0x2104,0x2125,0x2965,0x3186,0x39c6,0x39a6,0x2945,0x18e3,0x1082,0x18c3,0x18e3,0x0841,0x0020,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a2,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x20e3,0x1904,0x10a2,0x0861,0x31c7,0x4208,0x31a7,0x31a7,0x4208,0x31a7,0x31a7,0x39e8,0x39e8,0x39e8,0x31a7,0x39e8,0x31a6,0x31a7,0x31a7,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x39c7,0x2986,0x2986,0x31a7,0x31a7,0x2966,0x3186,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x39a7,0x31a6,0x31c7,0x2986,0x29a6,0x31a7,0x39e7,0x31a6,0x31a6,0x2965,0x31c7,0x31e7,0x31e7,0x39e7,0x31a6,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x3187,0x2986,0x2946,0x31c7,0x2966,0x2966,0x3186,0x31c6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x31c7,0x31a6,0x2945,0x31c6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x2945,0x31a6,0x39c7,0x2966,0x3186,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2145,0x2985,0x2986,0x2144,0x2124,0x1904,0x2965,0x2144, +0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2145,0x2145,0x2945,0x2145,0x2165,0x2165,0x2144,0x2144,0x2145,0x2144,0x2144,0x2986,0x2985,0x29a6,0x2165,0x2145,0x2965,0x2965,0x3186,0x2986,0x2965,0x2986,0x2985,0x2145,0x2945,0x2966,0x2966,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2986,0x2165,0x2145,0x2986,0x2986,0x2986,0x29a6,0x2966,0x2985,0x31a6,0x3a07,0x2986,0x2985,0x31a6,0x31a6,0x2165,0x31a6,0x31a7,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x29a6,0x29a6,0x2165,0x2965,0x2986,0x29a6,0x29a6,0x2165,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31e7,0x10c3,0x0041,0x10c2,0x18e3,0x18c3,0x2985,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2104,0x1082,0x0841,0x0841,0x0861,0x2945,0x2104,0x18e3,0x18e3,0x2124,0x2104,0x2103,0x2104,0x2124,0x18c3,0x2103,0x2944,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2124,0x18a2,0x18a3,0x2104,0x2944,0x18e3,0x18c3,0x18e3,0x2965,0x18e2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x31a6,0x2944,0x2104,0x18e3,0x1082,0x18e4,0x2104,0x0841,0x0841,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18c3,0x18c3,0x20e4,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2104,0x10a2,0x0881,0x39e7,0x39e7,0x31e7,0x31a7,0x39e8,0x2986,0x2986,0x31c7,0x39e8,0x3a08,0x2986,0x3186,0x3186,0x31a7,0x39c7,0x31c7,0x31a6,0x2986,0x29a6,0x29a6,0x31c6,0x31a6,0x31c7,0x31c7,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x3a08,0x31c7,0x3186,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x2986,0x2986,0x31a6,0x39e8,0x2986,0x3186,0x31c7,0x31e7,0x31a6,0x2965,0x3186,0x31a6,0x31a7,0x2986,0x2986,0x2985,0x29a6,0x31c6,0x39e7,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2965,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x2945,0x2145,0x29a6,0x2985,0x2986,0x3186,0x2124,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2986,0x2965,0x2145,0x2145,0x2144, +0x2945,0x2144,0x2144,0x2144,0x2125,0x2966,0x2965,0x2125,0x2145,0x2145,0x2945,0x2986,0x2965,0x2985,0x2145,0x2165,0x2165,0x2144,0x2144,0x2965,0x2165,0x2985,0x2985,0x2144,0x2145,0x2945,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x3186,0x2986,0x2986,0x31a6,0x3165,0x3165,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x29a6,0x2966,0x2986,0x31c7,0x2186,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2985,0x2985,0x2986,0x2966,0x2965,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x3186,0x2986,0x2985,0x2985,0x2986,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31c7,0x29a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2986,0x29a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x3207,0x10c3,0x0882,0x18c3,0x2104,0x18e4,0x29a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2124,0x1082,0x0861,0x0841,0x0841,0x2945,0x2124,0x18e3,0x18c3,0x2103,0x18e3,0x18e3,0x20e3,0x2104,0x18c3,0x20e3,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x2124,0x10a2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x2965,0x18e3,0x20e3,0x18e3,0x1082,0x2104,0x2124,0x0841,0x0041,0x0841,0x1082,0x18e4,0x10a3,0x0020,0x0041,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2124,0x1081,0x10a2,0x4208,0x31c7,0x4228,0x31a7,0x2987,0x31c7,0x31c7,0x31a7,0x29a6,0x31a6,0x31a7,0x3186,0x3186,0x31a7,0x31e7,0x31a7,0x31a7,0x31a6,0x31c7,0x31a6,0x31a6,0x39c7,0x31a6,0x2986,0x29a6,0x31a6,0x31a7,0x39c7,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x31a6,0x3a08,0x39c7,0x39c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31a7,0x31a7,0x3186,0x31a6,0x31c7,0x31a6,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x29a6,0x31a6,0x2986,0x2966,0x2966,0x3186,0x39c7,0x31a6,0x2986,0x2985,0x31a6,0x3186,0x31a6,0x31a7,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2966,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2985,0x31a6,0x3186,0x2965,0x2965,0x29a6,0x31e7,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x31c7,0x31a6,0x2124,0x2124, +0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2124,0x2165,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2985,0x3186,0x3186,0x2966,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2966,0x2966,0x2966,0x2986,0x2965,0x2985,0x3186,0x3186,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2985,0x31a6,0x2986,0x2965,0x2945,0x3186,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x39e7,0x3186,0x2985,0x3186,0x3186,0x2986,0x2985,0x31a6,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x3186,0x31a7,0x39e8,0x39e8,0x31c7,0x29a6,0x0861,0x1904,0x2924,0x2944,0x18e3,0x21a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e3,0x2945,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2945,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e3,0x18c2,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2965,0x2124,0x18c3,0x20e4,0x18c3,0x10a2,0x2145,0x2124,0x0841,0x0840,0x0841,0x1082,0x2104,0x10a2,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x18c3,0x18e3,0x2104,0x2965,0x18e3,0x1082,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e8,0x39c8,0x31a7,0x31a7,0x2986,0x39e7,0x31e7,0x3a08,0x39e7,0x31c7,0x29a6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2145,0x31a6,0x31c7,0x2986,0x3186,0x39c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a7,0x39c7,0x31c7,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31c7,0x31a7,0x31a6,0x39e7,0x4228,0x39c7,0x31a6,0x31c7,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31c7,0x3186,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2965,0x3166,0x3186,0x2966,0x31a6,0x3186,0x2965,0x3186,0x3186,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x31a6,0x2965,0x2965,0x2945,0x2965,0x2965,0x31a7,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2144,0x2965,0x2985,0x2986,0x2145,0x31a6,0x2986,0x3186,0x2124, +0x2124,0x2124,0x2145,0x2144,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2165,0x2165,0x2965,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2986,0x2966,0x2966,0x31a6,0x31c6,0x2986,0x2986,0x3186,0x31c6,0x2965,0x2965,0x2986,0x2985,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x2986,0x2965,0x39e7,0x2985,0x2945,0x2965,0x2986,0x29a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31c6,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31a6,0x10c2,0x2124,0x2965,0x3165,0x2965,0x10e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2945,0x18c3,0x0861,0x0841,0x0020,0x2104,0x2945,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x2124,0x18e3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x2124,0x18e3,0x18c3,0x2104,0x18a2,0x18c3,0x2965,0x2103,0x0820,0x0020,0x0841,0x10a2,0x2124,0x1082,0x0020,0x0841,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c2,0x18c2,0x18e3,0x2104,0x39c7,0x2104,0x1082,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e8,0x31c8,0x3a08,0x31c7,0x39e7,0x31e7,0x31a6,0x29a6,0x31a7,0x31a7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31c7,0x31a7,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x4208,0x39c7,0x31a6,0x31a6,0x39c7,0x31a6,0x31c7,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31a7,0x31a6,0x3186,0x39e7,0x31a6,0x2965,0x39e7,0x31a6,0x39c7,0x3186,0x31a6,0x29a6,0x2986,0x31a6,0x2986,0x31c7,0x31c6,0x31a6,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2965,0x3186,0x2966,0x3186,0x31a6,0x2986,0x2985,0x2985,0x2966,0x2945,0x2965,0x2966,0x2965,0x2986,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x3186,0x2985,0x2965,0x2145,0x2145,0x2145,0x2145,0x2985, +0x2125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2945,0x2986,0x2965,0x2945,0x2945,0x3186,0x2965,0x2145,0x2124,0x2965,0x2965,0x2985,0x2965,0x2986,0x2165,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2966,0x2966,0x2966,0x2985,0x29a6,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31a6,0x3186,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2985,0x31c7,0x31a6,0x2965,0x2965,0x31a6,0x29a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x29a6,0x31c7,0x31a6,0x2966,0x3186,0x31a7,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x3187,0x3186,0x3186,0x31a7,0x31a6,0x3186,0x31a7,0x39c7,0x4208,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x18e3,0x1904,0x18e3,0x2145,0x2104,0x18a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x1082,0x2945,0x18e3,0x0861,0x0841,0x0020,0x10a3,0x2965,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x10a2,0x2124,0x2965,0x18c2,0x0020,0x0020,0x0841,0x18c3,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2103,0x31a6,0x1904,0x10a2,0x4228,0x3a07,0x3a08,0x39e8,0x31c7,0x31c6,0x3a07,0x31a7,0x31a7,0x39c8,0x39e8,0x4249,0x31c7,0x31a7,0x39e7,0x39e7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x39e7,0x39c7,0x2986,0x3186,0x31c7,0x39e7,0x3186,0x39e8,0x3a08,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x2985,0x31a6,0x39e7,0x39c7,0x39c7,0x31a6,0x31c7,0x31a6,0x2966,0x2966,0x2966,0x2966,0x31c7,0x31a6,0x31a6,0x31e7,0x31a6,0x2965,0x2986,0x2966,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x3186,0x2945,0x31a6,0x31c7,0x31a6,0x3186,0x2986,0x2945,0x2965,0x39c7,0x31a6,0x31a6,0x2986,0x2965,0x31a6,0x2965,0x31c7,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31c7,0x2145,0x31a6,0x31c6,0x2965,0x2945,0x2986,0x2985,0x2965,0x2144,0x2145,0x2124,0x31a6, +0x2124,0x2145,0x2145,0x2145,0x2145,0x2145,0x2966,0x2966,0x2945,0x2945,0x2985,0x3186,0x2945,0x2144,0x2945,0x3186,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2165,0x2145,0x2165,0x2966,0x2966,0x31a6,0x3186,0x2966,0x2946,0x2966,0x3186,0x2965,0x2985,0x29a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2965,0x31a6,0x31c6,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x31c6,0x39e7,0x31a6,0x2986,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x29a6,0x2986,0x2966,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a7,0x3186,0x3186,0x39e8,0x39c7,0x31a6,0x31a7,0x39c7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x4208,0x39e8,0x10c3,0x18c3,0x10c3,0x2124,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x0841,0x2945,0x2124,0x1082,0x0841,0x0020,0x0861,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x18a2,0x2103,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1081,0x18c3,0x18c3,0x18c3,0x20e4,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x2986,0x2965,0x1061,0x0020,0x0841,0x0861,0x2104,0x2104,0x0841,0x0020,0x0841,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x18e3,0x10a2,0x0882,0x39e7,0x39e7,0x39c7,0x31c7,0x31a6,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x3a08,0x39e7,0x31c7,0x39c7,0x39c6,0x3185,0x31a6,0x39e7,0x31a6,0x31c7,0x31a6,0x31c7,0x39c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a7,0x39c7,0x31c7,0x3186,0x3186,0x3186,0x39e7,0x2986,0x31a6,0x31c7,0x31a6,0x31c6,0x31a6,0x39e7,0x31c7,0x31c7,0x31c7,0x3186,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x31a7,0x31a7,0x31a6,0x31c7,0x31e7,0x31c7,0x3a08,0x3186,0x31a6,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31a6,0x3a08,0x2986,0x2965,0x3186,0x2986,0x2986,0x3186,0x2986,0x31a6,0x2986,0x3186,0x2986,0x31c7,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2124,0x2124,0x3186,0x31a6,0x2965,0x2965,0x2145,0x3186,0x3186, +0x2945,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2965,0x2945,0x2965,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2145,0x2945,0x2145,0x2965,0x2986,0x2145,0x2946,0x2966,0x3186,0x3186,0x2965,0x2165,0x2965,0x2986,0x2985,0x2985,0x2985,0x2965,0x3186,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x2986,0x2986,0x39e7,0x31a6,0x3186,0x31a6,0x31c6,0x3186,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x3186,0x31c7,0x29a6,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x2986,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a6,0x29a6,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a6,0x31c7,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x2124,0x0041,0x10a2,0x18c3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x0020,0x0020,0x2104,0x2965,0x10a2,0x0841,0x0841,0x0841,0x2104,0x2965,0x2124,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x0861,0x0861,0x0861,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1081,0x1081,0x1081,0x1081,0x1082,0x10a2,0x18c3,0x1082,0x1081,0x10a2,0x18c2,0x18c3,0x20e3,0x2104,0x18c3,0x18e3,0x18a2,0x2104,0x31a6,0x2124,0x0841,0x0020,0x0841,0x10a2,0x2945,0x18e3,0x0821,0x0841,0x0841,0x0861,0x1061,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x20e4,0x20e3,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x0881,0x0040,0x2124,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x39e7,0x31a6,0x39e7,0x4228,0x31a6,0x31c7,0x31c7,0x39c7,0x39c7,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x31c6,0x3a07,0x31c7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x3186,0x3186,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x31c7,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x4208,0x31c7,0x39c7,0x39e8,0x31c7,0x31a7,0x31c7,0x31c7,0x29a6,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x2986,0x31c7,0x39e7,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x2985,0x2986,0x2966,0x39e7,0x31a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2145,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2145,0x2945,0x2985,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145, +0x2124,0x2124,0x2165,0x2165,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2165,0x2165,0x2965,0x2966,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2965,0x2965,0x2145,0x2966,0x2986,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2985,0x2965,0x31a6,0x2986,0x2986,0x2985,0x2985,0x2986,0x29a6,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31c7,0x31a6,0x29a6,0x29a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x29a6,0x31a7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x31a6,0x39c7,0x31c7,0x39e7,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c7,0x31a7,0x39a7,0x31a7,0x31a7,0x31a7,0x39e7,0x31e6,0x3a07,0x3a07,0x31c7,0x3a28,0x31c7,0x10a2,0x0020,0x0020,0x0841,0x0841,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x0841,0x0020,0x18c3,0x2985,0x18e3,0x0861,0x0841,0x0020,0x10a2,0x2945,0x2965,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1081,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1082,0x1082,0x18c2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x18c2,0x18c3,0x10a2,0x3186,0x3186,0x18a2,0x0020,0x0841,0x0841,0x18e3,0x2966,0x10a2,0x0841,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x0881,0x2104,0x31a6,0x3a07,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x3a28,0x3a08,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x31c7,0x31a6,0x39c7,0x3a08,0x3186,0x39e8,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x31c6,0x31c7,0x31a6,0x2986,0x29a6,0x2965,0x2986,0x39e7,0x3186,0x4228,0x39c7,0x31a6,0x31a7,0x31a7,0x29a6,0x29a6,0x31c7,0x2986,0x31a6,0x31c7,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x2986,0x39c7,0x3186,0x2966,0x31a7,0x3186,0x31a6,0x31c6,0x2965,0x31c7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x39c7,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2986,0x2985,0x2145,0x2965, +0x2986,0x2986,0x2124,0x2145,0x2965,0x3186,0x2965,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2945,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x3186,0x2985,0x3186,0x31a7,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x2985,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31c6,0x31c6,0x31c6,0x31c6,0x29a6,0x31a6,0x31c7,0x31a6,0x31c7,0x3186,0x31a6,0x31a6,0x31c6,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x31c7,0x31a7,0x31c7,0x31c6,0x31e7,0x31c7,0x31c7,0x31a6,0x31a7,0x39c7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x31c7,0x31a6,0x2965,0x2925,0x2125,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x0861,0x1082,0x0861,0x0020,0x0861,0x2965,0x2945,0x1082,0x0841,0x0020,0x0841,0x2104,0x3186,0x2144,0x18a3,0x18c3,0x18c2,0x1082,0x1081,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x18a2,0x18a2,0x18c3,0x18c3,0x20e3,0x18e3,0x1082,0x2945,0x39e7,0x2944,0x0841,0x0020,0x0841,0x1082,0x2945,0x2945,0x0861,0x0020,0x0861,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x31c6,0x39e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e7,0x39c8,0x39e8,0x4229,0x39e8,0x31e7,0x3a08,0x39e8,0x31c7,0x39e7,0x3a07,0x31a6,0x3a08,0x3a08,0x31c7,0x31c7,0x2986,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x3186,0x31a7,0x31c7,0x31c7,0x3186,0x31a7,0x39e7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x39e7,0x31a6,0x3a08,0x2986,0x3a08,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x31a6,0x29a6,0x2986,0x2966,0x39e8,0x31a7,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x31e7,0x2965,0x31a6,0x2965,0x31c7,0x39e7,0x31a6,0x3186,0x2986,0x31a6,0x39e8,0x39e7,0x2986,0x31c7,0x31c7,0x3186,0x2966,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x3186,0x31a6,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2965,0x2145,0x31a6,0x3207,0x31c7,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2165,0x2965, +0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2965,0x2165,0x2145,0x2965,0x3186,0x2986,0x2965,0x2966,0x2986,0x2145,0x2965,0x31a6,0x2985,0x31c7,0x2985,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31c6,0x2986,0x31a6,0x2985,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31c7,0x31e7,0x31c7,0x2986,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x31a6,0x31a6,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c7,0x39e8,0x31a7,0x2986,0x3186,0x31c6,0x39e7,0x39e7,0x31a7,0x39c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c6,0x29a6,0x31a7,0x31c7,0x31a6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x31c6,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31c7,0x39e7,0x3a08,0x31e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0020,0x2104,0x3186,0x18e3,0x0861,0x0841,0x0021,0x10a2,0x2945,0x2985,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c2,0x0861,0x1082,0x10a2,0x18a2,0x18c3,0x18c3,0x2103,0x18c3,0x18e4,0x4208,0x31a6,0x18c2,0x0020,0x0841,0x0861,0x18e3,0x3186,0x18e4,0x0020,0x0841,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x31c7,0x39e8,0x3a08,0x39e8,0x39e8,0x31e8,0x3a08,0x39c7,0x31c7,0x4208,0x39e7,0x31e6,0x31c6,0x3a08,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x31c6,0x31c7,0x31c7,0x2986,0x31a6,0x3a08,0x39e8,0x3187,0x2986,0x2986,0x31a6,0x2985,0x31c6,0x31a6,0x2986,0x31a6,0x2986,0x39e7,0x39e7,0x2986,0x39e7,0x31a6,0x31c7,0x31a6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x29a6,0x31a7,0x39e8,0x39c7,0x3186,0x39e8,0x3a08,0x31c7,0x31c6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x39c7,0x31a6,0x31a6,0x2965,0x39c7,0x39c7,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3186,0x2986,0x2965,0x2965,0x2986,0x3186,0x2965,0x2124,0x2145,0x2986,0x29a6,0x39e7,0x31a6,0x31a6,0x2945,0x2125,0x2945,0x2986,0x2145,0x2965,0x2965,0x2124,0x2965,0x2145,0x2145, +0x2145,0x2945,0x2985,0x3186,0x2965,0x2145,0x2145,0x2144,0x2145,0x2165,0x2145,0x2165,0x2966,0x2165,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2986,0x3186,0x2966,0x2965,0x2986,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6,0x31c7,0x3186,0x31a6,0x31c6,0x31a6,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x3186,0x31a6,0x2986,0x3186,0x39c7,0x31a6,0x31a6,0x31c7,0x39c7,0x31c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a6,0x31a6,0x39e7,0x31c7,0x31a7,0x39c7,0x31a6,0x3186,0x31c7,0x39e7,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x39c7,0x39e7,0x31c7,0x39e8,0x39c8,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x3186,0x31a6,0x31e7,0x31c7,0x31a6,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a3,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x0020,0x1082,0x2965,0x2945,0x10a2,0x1082,0x0841,0x0841,0x18e3,0x2965,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x18c3,0x0861,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x31a7,0x39e7,0x2104,0x0841,0x0020,0x0841,0x1082,0x2965,0x3186,0x1082,0x0020,0x0861,0x1082,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18e3,0x18c3,0x20e3,0x2104,0x31c7,0x39e7,0x3a08,0x31c7,0x31c7,0x39e8,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x3a28,0x39e7,0x4228,0x3a07,0x31c7,0x31c7,0x31a7,0x31c7,0x39e7,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x39c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31c7,0x3186,0x39e7,0x31a6,0x2986,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x3186,0x39c7,0x39c7,0x31c7,0x31a7,0x39e7,0x31c7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0x31a6,0x31a7,0x39e8,0x3186,0x2965,0x39c7,0x3a07,0x31a6,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31e7,0x29a6,0x2966,0x3186,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x2945,0x2965,0x39c7,0x3186,0x2124,0x2986,0x3186,0x2965,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965, +0x2945,0x2124,0x2965,0x31a6,0x2985,0x2145,0x2144,0x2945,0x2165,0x2986,0x2966,0x2945,0x2986,0x2165,0x2165,0x2145,0x2966,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2985,0x2986,0x29a6,0x2165,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2986,0x3186,0x2966,0x2965,0x2986,0x2966,0x2986,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x2986,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e8,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31c7,0x31a6,0x31c7,0x31c7,0x31e7,0x39e7,0x31a7,0x31c7,0x3a08,0x39c7,0x39c7,0x31a7,0x3186,0x31c7,0x31c7,0x31c8,0x31c8,0x39e7,0x31e7,0x3187,0x39c7,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31a6,0x31a6,0x2986,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x18e3,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x10a2,0x0841,0x0020,0x20e4,0x3186,0x2104,0x18a3,0x1082,0x0841,0x0861,0x2104,0x2945,0x2124,0x18c3,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x10a2,0x10a2,0x18c3,0x18a2,0x10a2,0x18c3,0x3186,0x3a08,0x2945,0x1081,0x0020,0x0861,0x1082,0x2104,0x31a7,0x2104,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x31a7,0x31e7,0x31e7,0x39e8,0x31a7,0x39e8,0x3a08,0x3a28,0x39e7,0x4228,0x39e7,0x3a08,0x31c7,0x31c7,0x39c8,0x39c7,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x31a7,0x31c7,0x31c7,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x39c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x31a6,0x3186,0x31a6,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x31a6,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x2986,0x31a6,0x31a7,0x31a7,0x4208,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a6,0x2985,0x31c7,0x3186,0x3186,0x3186,0x2965,0x2985,0x31a6,0x29a6,0x2986,0x2985,0x2945,0x31a6,0x2965,0x2945,0x3186,0x39c7,0x2945,0x2966,0x2945,0x31a7,0x39c7,0x2966,0x2965,0x2945,0x2965,0x2965,0x2986,0x2986,0x2124,0x2945,0x2966,0x2945, +0x2124,0x2945,0x2985,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2966,0x2945,0x2965,0x2965,0x2966,0x2965,0x2965,0x2986,0x2966,0x2986,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2945,0x2965,0x31a6,0x31c7,0x2965,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31c7,0x39c7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2986,0x2986,0x39c7,0x31c7,0x3186,0x2986,0x31c7,0x29a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x31c7,0x31c7,0x39e8,0x31c8,0x39e8,0x39e7,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x31c7,0x39e8,0x31c8,0x31a7,0x31a7,0x39e8,0x39a7,0x31c7,0x31a6,0x31a6,0x39e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x2104,0x18e3,0x1082,0x10a2,0x10a2,0x0020,0x0862,0x2925,0x2966,0x2104,0x18c3,0x1082,0x0841,0x1062,0x2104,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2965,0x39a7,0x2945,0x1082,0x0841,0x1082,0x18a3,0x2104,0x31a6,0x2965,0x0862,0x0020,0x0861,0x1082,0x1082,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x2104,0x20e4,0x2125,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x39e7,0x31c7,0x31e7,0x3a08,0x31c7,0x39e8,0x39e8,0x3a08,0x3a08,0x39e7,0x31c7,0x3a28,0x31e7,0x31c7,0x31c7,0x39e8,0x31c7,0x29a7,0x31c7,0x39e8,0x31c7,0x3186,0x31c7,0x31a6,0x31c7,0x39e8,0x39e7,0x3186,0x31a6,0x31a7,0x31e7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x31c7,0x31c7,0x31a6,0x31a6,0x39e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31c7,0x31c7,0x39c7,0x31c7,0x3186,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x2966,0x2965,0x31c7,0x39e7,0x2945,0x2986,0x4208,0x39c7,0x31c6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2986,0x3186,0x2966,0x2965,0x2965,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x3186,0x3186,0x3186,0x2966,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x31a7, +0x2945,0x2965,0x2965,0x2985,0x2985,0x2145,0x2145,0x2144,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2965,0x2986,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2985,0x2985,0x2986,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x29a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x31a6,0x31c6,0x29a6,0x2986,0x2986,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x31c6,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x31e7,0x31e7,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x31c7,0x29c6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x31c7,0x39e7,0x3a07,0x3a08,0x39c7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2124,0x18c3,0x10a3,0x18c3,0x18c3,0x10a2,0x18e4,0x2945,0x10a2,0x1082,0x18c3,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2104,0x18c3,0x1082,0x0841,0x1082,0x18e3,0x2944,0x2945,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x2965,0x3186,0x2124,0x1082,0x0841,0x1082,0x18e3,0x2104,0x31a6,0x39a7,0x18c3,0x0020,0x0841,0x1082,0x1082,0x1082,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x20e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3a08,0x31c7,0x31e7,0x31c7,0x39e7,0x4208,0x39c7,0x31a6,0x39e7,0x3a07,0x39e7,0x3207,0x31e7,0x31e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x39c7,0x2986,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a7,0x31e7,0x31e7,0x29a6,0x31a6,0x31c7,0x31c7,0x2985,0x31c6,0x31a6,0x31c6,0x31e7,0x31c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31a7,0x2966,0x31a6,0x39e7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31a6,0x3186,0x31a6,0x29a6,0x2986,0x2965,0x29a6,0x31a6,0x31c6,0x39c7,0x2986,0x3186,0x31c7,0x2986,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31c7,0x29a6,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x2986,0x29a6,0x2965,0x2145,0x2945,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x2945,0x2965, +0x2945,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2986,0x2986,0x31c7,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2985,0x2986,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2165,0x29a6,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31c6,0x31c7,0x31c6,0x31e7,0x31c6,0x31c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x31c6,0x29a6,0x31c7,0x31e7,0x31a6,0x31a7,0x31c7,0x31a7,0x39a7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x3a08,0x39c7,0x31c7,0x31c7,0x31c6,0x3a07,0x39e7,0x31e7,0x3a08,0x3a08,0x39e8,0x39e8,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a28,0x3a08,0x39e7,0x3a08,0x3a28,0x3a28,0x3a28,0x3a08,0x31c7,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x10a3,0x18c3,0x18c3,0x10a2,0x18c3,0x2966,0x2945,0x1082,0x18c2,0x10a2,0x0841,0x0841,0x18e3,0x2966,0x2945,0x20e3,0x18c3,0x10a2,0x0861,0x1082,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x18c2,0x18c3,0x18e4,0x2125,0x2965,0x2965,0x2124,0x1082,0x0861,0x1082,0x18e3,0x2104,0x3186,0x39c7,0x2924,0x0861,0x0841,0x1061,0x1082,0x1082,0x18e3,0x2125,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2925,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x3a08,0x3a08,0x39e8,0x39e7,0x4208,0x4208,0x39e8,0x39c7,0x4208,0x4228,0x4228,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x4a6a,0x4229,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x39e7,0x3a08,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x39e8,0x39e7,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x31e7,0x31c7,0x31a6,0x31c7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a7,0x39e7,0x4208,0x39e7,0x31c7,0x39e7,0x31c7,0x31c7,0x31a6,0x31a7,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x31c7,0x31a6,0x4228,0x39c7,0x31a7,0x3186,0x39e7,0x29a6,0x2985,0x31a6,0x31a6,0x39c7,0x3186,0x2945,0x2966,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x2145,0x31a7,0x31a6,0x2986,0x2966,0x2945,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2124,0x2124,0x2145,0x3186,0x2925,0x2966,0x31a6,0x31a6,0x2986,0x31a6,0x3186,0x2945,0x2125, +0x3186,0x3186,0x2945,0x2124,0x2945,0x2945,0x3166,0x2965,0x3186,0x2986,0x2986,0x2986,0x2986,0x3186,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c6,0x31a6,0x31c7,0x29a6,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x3186,0x2986,0x2986,0x3186,0x39c7,0x3186,0x3186,0x2986,0x2986,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2986,0x31a7,0x2966,0x2986,0x2946,0x2986,0x2986,0x2966,0x2966,0x3186,0x3186,0x3186,0x3166,0x3167,0x3167,0x31a7,0x2966,0x2966,0x3187,0x3166,0x3187,0x3187,0x2945,0x3166,0x3166,0x3187,0x3166,0x3186,0x3187,0x2966,0x3187,0x2946,0x2946,0x2966,0x2946,0x2966,0x39e8,0x39c8,0x2966,0x2946,0x3146,0x3966,0x3126,0x2926,0x2946,0x2966,0x2946,0x2906,0x2926,0x20c5,0x2905,0x2905,0x2946,0x2105,0x20e5,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x2124,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x2104,0x39c7,0x18c3,0x1082,0x18a2,0x1082,0x0841,0x0861,0x2104,0x2965,0x2945,0x2103,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e4,0x2104,0x2945,0x2965,0x2945,0x2103,0x10a2,0x1062,0x10a2,0x18e3,0x2104,0x3186,0x39e7,0x2965,0x1082,0x0861,0x0861,0x10a2,0x1082,0x10a2,0x2966,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2125,0x2945,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x20e4,0x2105,0x2966,0x20c4,0x2105,0x2926,0x2105,0x2946,0x2946,0x3166,0x3187,0x2947,0x3167,0x39a7,0x31c7,0x2987,0x31c7,0x39e8,0x3187,0x2966,0x31a7,0x3187,0x2986,0x31c7,0x31a7,0x3186,0x39a6,0x3186,0x39e8,0x31a7,0x31a7,0x3186,0x2966,0x3166,0x3186,0x3186,0x2966,0x2966,0x31a7,0x39c7,0x31a7,0x39c7,0x3187,0x31a7,0x31a7,0x39a7,0x39a7,0x39a7,0x31a7,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x39c7,0x39c8,0x39c7,0x31c7,0x39c8,0x39e8,0x31c7,0x31a7,0x31a7,0x39a7,0x39c7,0x39c7,0x39c7,0x39a7,0x4a6a,0x3a08,0x39e8,0x31a6,0x39c7,0x39c7,0x39e7,0x39a6,0x39a6,0x39c7,0x39e8,0x39e7,0x39e8,0x4228,0x4228,0x4208,0x41e8,0x41e7,0x41e7,0x39e7,0x41e8,0x4208,0x3a07,0x4208,0x4249,0x4228,0x4208,0x39e7,0x4208,0x39e7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39c7, +0x3186,0x3186,0x2945,0x2945,0x2985,0x2945,0x3165,0x3165,0x3166,0x2945,0x2945,0x3166,0x2965,0x3166,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39a6,0x39a6,0x31a6,0x3186,0x3186,0x3166,0x3186,0x3186,0x31a6,0x39c6,0x31a6,0x31a7,0x3186,0x3187,0x39a7,0x39a7,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x39c7,0x39c7,0x31a7,0x39a7,0x39a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x41e7,0x4207,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4a29,0x4a49,0x528a,0x528a,0x4a6a,0x526a,0x528b,0x528a,0x528a,0x528a,0x526a,0x52ab,0x5aab,0x52ab,0x5aab,0x5acb,0x5acb,0x5acb,0x5acc,0x5aec,0x630d,0x630d,0x632d,0x632d,0x5b0c,0x5b0d,0x5b0c,0x632d,0x632d,0x632d,0x636e,0x634e,0x634e,0x634e,0x632e,0x6b8e,0x6b8e,0x738f,0x6b8f,0x73b0,0x6b6e,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2966,0x2985,0x10a2,0x10a2,0x18c3,0x1082,0x0841,0x1082,0x2124,0x2965,0x2124,0x20e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2925,0x2945,0x2945,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x3186,0x39e8,0x3186,0x10a2,0x0841,0x1081,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x2965,0x2945,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2965,0x94b3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8472,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x8472,0x7c32,0x7c31,0x8452,0x8451,0x8c72,0x8451,0x8431,0x8431,0x8451,0x8c92,0x8c93,0x8472,0x8c92,0x8c72,0x8452,0x8472,0x8452,0x7c11,0x7c51,0x7c51,0x7c31,0x8451,0x7c31,0x8471,0x8471,0x8451,0x8c92,0x8cb3,0x8c92,0x8c92,0x8451,0x8451,0x8431,0x8451,0x8431,0x7bf0,0x7c10,0x7c10,0x8451,0x7c51,0x73ef,0x8451,0x8431,0x7c30,0x7c30,0x73ef,0x6baf,0x73cf,0x7c10,0x7bf0,0x7c10,0x7c10,0x6baf,0x6baf,0x73af,0x6b8e,0x73cf,0x73ef,0x6baf,0x6bae,0x7c0f,0x7c0f,0x73cf,0x73af,0x73cf,0x7bef,0x73ef,0x7c10,0x73ef,0x73ef,0x73ef,0x7bf0,0x7bef,0x6bae,0x6b8e,0x6baf,0x6b8e,0x6b6e,0x73d0,0x73cf,0x634d,0x636d,0x634d,0x634c,0x5b2c,0x632c,0x634d,0x632d,0x632c,0x5b0c,0x5b4d,0x634d,0x5b2c,0x5b0c,0x630c,0x5acb,0x5acb,0x5b0c,0x5aeb, +0x4a69,0x5289,0x5aca,0x5aca,0x52aa,0x528a,0x5acb,0x5aeb,0x630c,0x632c,0x630c,0x632c,0x6b4d,0x632c,0x630c,0x632c,0x634c,0x634c,0x632c,0x630c,0x6b4d,0x6b4d,0x634c,0x634d,0x632d,0x6b4d,0x6b6d,0x6b4d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x8430,0x8451,0x8451,0x7c10,0x7bef,0x6bae,0x6b8e,0x73ae,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6d,0x6b6d,0x6b8e,0x738e,0x73ae,0x7bf0,0x7bf0,0x7c10,0x8410,0x8430,0x8450,0x8410,0x7c10,0x7c10,0x7c30,0x7c10,0x7c10,0x7c10,0x7bf0,0x7c10,0x8450,0x8451,0x8451,0x8cb2,0x94b3,0x8c92,0x8c92,0x8cb3,0x8cb3,0x94f4,0x9d34,0x9d34,0x9d54,0xa575,0xa555,0x9d34,0x9d34,0x9d14,0x94f3,0x9d14,0x9d14,0xa555,0xb5d7,0xa576,0xad97,0xadb7,0xadd8,0xadf8,0xa596,0xadb6,0xa5b6,0xa576,0xadf8,0xadd7,0xadd7,0xa5d7,0xadd8,0xadd8,0xadd8,0xb618,0xb638,0xb618,0xb5f8,0xb619,0xadd7,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18e3,0x2124,0x2945,0x18e3,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x3186,0x2124,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x1082,0x2124,0x2945,0x2124,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2965,0x2945,0x2924,0x2104,0x2104,0x2104,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2965,0x2965,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x39c7,0x3186,0x18c3,0x0841,0x0861,0x10a2,0x20e3,0x18c3,0x2945,0x39e8,0x2945,0x18e4,0x18e3,0x18c3,0x2104,0x2965,0x3186,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x3186,0xadf8,0xb619,0xb619,0xb639,0xb618,0xadd7,0xadb7,0xadd7,0xadd8,0xadd8,0xa576,0x9535,0x8cf4,0x8d14,0x9515,0x9535,0x9515,0x9514,0x94f4,0x9514,0x94f4,0xa596,0xa597,0x9d35,0x9d56,0x9d35,0x94f4,0x94f4,0x9515,0x8cd4,0x8cb3,0x8cd3,0x8cd3,0x8cf4,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x8492,0x8cd3,0x8cb2,0x8472,0x8cd3,0x94d3,0x8452,0x7c31,0x7c31,0x7431,0x8472,0x94f4,0x8cb3,0x8cd3,0x8cd3,0x8492,0x7c51,0x73ef,0x73ef,0x7c31,0x8472,0x7c31,0x73f0,0x73d0,0x6bd0,0x6bcf,0x73ef,0x73f0,0x73f0,0x6bcf,0x6baf,0x73d0,0x7c31,0x7c51,0x7410,0x7c10,0x73f0,0x73cf,0x73f0,0x73ef,0x7410,0x73f0,0x73f0,0x73d0,0x73cf,0x6b8f,0x6bcf,0x6b8e,0x638e,0x8431,0x6baf,0x5b2d,0x5b0d,0x5b2c,0x636d,0x636d,0x5b4d,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52cb,0x5b2c,0x5b2d,0x5b0c,0x5aed,0x5aec,0x5aec,0x52cb,0x4acb,0x52eb, +0x630c,0x5aeb,0x630c,0x6b4c,0x630c,0x630b,0x6b2c,0x6b4d,0x7bef,0x73ce,0x6b8d,0x73cf,0x7bef,0x73cf,0x6bae,0x6bae,0x73ef,0x6bce,0x6b8e,0x6b8e,0x73cf,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x73af,0x73cf,0x7bf0,0x7c10,0x7c0f,0x7bef,0x7bf0,0x7c10,0x73cf,0x73cf,0x73cf,0x7c10,0x8451,0x8471,0x8cd3,0x8471,0x7c51,0x7410,0x6baf,0x73af,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x7c10,0x7c11,0x7c11,0x7c32,0x8452,0x8452,0x8451,0x8452,0x8452,0x8451,0x7c11,0x7c11,0x8432,0x8472,0x8452,0x7c11,0x7c11,0x7c31,0x8452,0x8452,0x8c92,0x94d4,0x8cd3,0x8472,0x8cb3,0x8cd4,0x94f4,0x9d14,0x9d55,0xa576,0xa597,0xadd7,0x9d56,0x9515,0x9d35,0x9d15,0x9d35,0x9d35,0xad97,0xbe19,0xa577,0xadb7,0xb5f8,0xadb7,0xa597,0x9d76,0xad97,0xadd8,0x9d56,0xa597,0xad97,0xa597,0xa597,0xadb8,0xadd8,0xbe39,0xb619,0xb5f9,0xb5f9,0xadd8,0xb5f8,0xadd8,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a3,0x18e3,0x2104,0x2966,0x2924,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x10a2,0x2104,0x2945,0x2124,0x18e4,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x2104,0x2965,0x3186,0x3185,0x3186,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x2924,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2966,0x31a6,0x2965,0x18c2,0x0841,0x0861,0x1082,0x18e3,0x18e3,0x2125,0x4208,0x31a7,0x2124,0x1904,0x18e3,0x18e3,0x2125,0x3186,0x2965,0x2124,0x2104,0x2104,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d77,0xadd9,0xa5b8,0xa598,0xa597,0x9d35,0xa576,0xa597,0xa556,0xadb7,0xb5f8,0x9d55,0x8493,0x8cb3,0x9515,0x9515,0x84b3,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x9d35,0x9d56,0x9d36,0xa577,0xa556,0x9d15,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8c93,0x8492,0x8c93,0x8473,0x8c93,0x94d4,0x8cb3,0x8c93,0x8493,0x7411,0x8472,0x8cb3,0x8c72,0x8c93,0x8cb3,0x8452,0x7c31,0x73f1,0x7c11,0x7c11,0x8492,0x8cb3,0x8c92,0x8472,0x7c52,0x7411,0x73f0,0x7c11,0x7410,0x7c31,0x73f1,0x73d0,0x6bd0,0x73f1,0x73f0,0x6baf,0x73cf,0x6baf,0x638f,0x6baf,0x6bd0,0x7c11,0x7c10,0x73f0,0x7c10,0x7bf0,0x73af,0x73cf,0x7c10,0x8c72,0x7c10,0x73af,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73af,0x8431,0x73ef,0x636e,0x636e,0x634d,0x5b2d,0x632d,0x634e,0x634e,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x5aec,0x5aec,0x5aed,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x52cb, +0x630c,0x630c,0x6b4d,0x632c,0x5aeb,0x62ec,0x6b2d,0x632c,0x73ce,0x73ae,0x738e,0x738e,0x73af,0x738e,0x6b6d,0x738e,0x73cf,0x73af,0x6b8e,0x73ae,0x73cf,0x73af,0x738e,0x738e,0x738e,0x6b8e,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x73cf,0x73af,0x738f,0x6b8e,0x73af,0x73cf,0x73cf,0x8451,0x8c72,0x8c72,0x8451,0x7bf0,0x6bae,0x73ae,0x73ae,0x6b6e,0x632d,0x6b6e,0x73af,0x7c10,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7bf0,0x7c11,0x7c11,0x8431,0x8431,0x8432,0x8431,0x7c31,0x7c11,0x7c31,0x8451,0x7c11,0x8431,0x7c31,0x7c31,0x8451,0x8472,0x8472,0x8472,0x8cd3,0x94d4,0x94d4,0x94f4,0x8cb3,0x94d4,0x94d4,0x9cf4,0xa556,0xa556,0xad97,0xa576,0x9d35,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xadb7,0xa597,0xb5d8,0xadd8,0xa556,0xa556,0xad77,0xadb7,0xa597,0xa597,0xa597,0xadb7,0xadd8,0xadd8,0xadd8,0xbe19,0xc67a,0xce9a,0xce9b,0xcebb,0xc67b,0xbe19,0xb5d8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2125,0x2965,0x2104,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x2104,0x2124,0x10a2,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2124,0x2124,0x18e4,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x2945,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x3186,0x3185,0x3186,0x3185,0x3185,0x3185,0x3165,0x2944,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2124,0x2965,0x3186,0x2945,0x10a2,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x2104,0x39c7,0x39c7,0x2925,0x2104,0x18e4,0x2104,0x2104,0x2966,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadd8,0xadd8,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xa597,0xad97,0x94f4,0x8493,0x9535,0x94f5,0x9515,0x94f4,0x9d35,0x94f4,0x94f4,0x8cd4,0x9d35,0x9d15,0x94d4,0xa576,0x9d35,0x9d35,0x9d35,0x94f4,0x9d15,0x9d55,0x9515,0x8cb3,0x8cb3,0x8cb3,0x94d4,0x94f4,0x8cb3,0x94d4,0x8cd4,0x8493,0x8452,0x8c93,0x8cb3,0x8cb3,0x9514,0x7c31,0x7c31,0x8451,0x8451,0x8472,0x7c31,0x7c11,0x7c31,0x7c72,0x7c52,0x7c52,0x7c11,0x73f0,0x73f0,0x73f0,0x73f0,0x7411,0x7410,0x7411,0x7c11,0x6bcf,0x6bcf,0x6bcf,0x6baf,0x6bae,0x6bae,0x73f0,0x7410,0x7430,0x7c10,0x8431,0x6b8f,0x6baf,0x73f0,0x7c30,0x7c10,0x73cf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x8431,0x73af,0x636e,0x6b6f,0x6b6e,0x634d,0x5b0d,0x5b0d,0x5b2d,0x5b0d,0x5b2d,0x636d,0x636e,0x634d,0x5b0c,0x52ab,0x52cb,0x5aeb,0x5b0b,0x632c,0x52cb,0x52aa,0x5aeb,0x5aec, +0x634d,0x738e,0x6b8d,0x632c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x6b4d,0x738e,0x7baf,0x738e,0x736e,0x6b6e,0x738f,0x73b0,0x73cf,0x7bd0,0x7bcf,0x8430,0x8451,0x7c10,0x7bcf,0x738f,0x738e,0x73af,0x7bf0,0x73cf,0x6bae,0x6baf,0x73ef,0x6baf,0x6b8f,0x73d0,0x8411,0x8451,0x8451,0x8c71,0x8c72,0x8451,0x8c72,0x8430,0x7bef,0x73ef,0x73af,0x6b6e,0x636e,0x636e,0x73d0,0x6baf,0x6baf,0x6baf,0x73cf,0x73f0,0x7bf0,0x7c11,0x7bf0,0x7c11,0x8432,0x8452,0x7c31,0x7c10,0x7c31,0x8451,0x8451,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8472,0x8452,0x8431,0x8c72,0x8452,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x9d35,0x9d35,0x9d35,0xa576,0xa556,0xad76,0xa576,0xa576,0x9d56,0x9d35,0x9d36,0xa576,0xad97,0xadd8,0xad97,0xa556,0xa576,0xa597,0xadd8,0xadd7,0xa576,0xad97,0xa5b7,0xa5b7,0xadd8,0xadd8,0xb5f9,0xc65a,0xc67a,0xcebb,0xd6fb,0xd6fb,0xd6dc,0xc67a,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2945,0x2965,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2124,0x2924,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2945,0x2965,0x2965,0x2124,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x18a2,0x18e3,0x3186,0x31a6,0x2945,0x2124,0x2104,0x20e4,0x2104,0x2945,0x31a6,0x2965,0x2124,0x2124,0x20e3,0x2104,0x2104,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadf8,0xadd8,0xa577,0x9d76,0x9d56,0x9d36,0xa576,0xa5b7,0x9515,0x94f4,0x8cf4,0x9d36,0x8cb4,0x8cb4,0x9d56,0xadb7,0x94f4,0x9d36,0x9d15,0x9d35,0x8cb3,0x9d15,0x94f4,0x94d4,0x8cd4,0x9d15,0x9d15,0x94f4,0x9d35,0x9d55,0x9d15,0x94f4,0x8cd3,0x94f4,0x9514,0x9d35,0x94f5,0x9d15,0x8cd4,0x8cb3,0x8c93,0x8c93,0x8cb3,0x94f4,0x8c93,0x8cb3,0x8472,0x8c92,0x8c92,0x8451,0x7c31,0x7c31,0x7c52,0x8493,0x8cb3,0x7c31,0x6bcf,0x8493,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x73f0,0x6bd0,0x6baf,0x6baf,0x6baf,0x73af,0x73ef,0x7410,0x73f0,0x73ef,0x7c50,0x7c30,0x73f0,0x6baf,0x73cf,0x73f0,0x7c10,0x73cf,0x6baf,0x6b8e,0x73af,0x8c92,0x7bf0,0x632d,0x6b8e,0x6b8e,0x634e,0x5b0d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x634d,0x632d,0x5b0c,0x5aec,0x52cb,0x52ab,0x52aa,0x52eb,0x6bae,0x5aeb,0x52ab,0x5aec,0x630c, +0x6b4d,0x73ae,0x738e,0x630c,0x632c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x738f,0x6baf,0x73af,0x8411,0x8451,0x94d2,0x8471,0x7c10,0x7bf0,0x6b8e,0x6b8e,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73cf,0x73af,0x738e,0x8431,0x8c92,0x8451,0x8451,0x8c72,0x8472,0x8451,0x8471,0x8470,0x7c10,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x6baf,0x73b0,0x73d0,0x73d0,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x8431,0x8431,0x8431,0x8431,0x8431,0x8451,0x8451,0x8431,0x8431,0x7c11,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x8452,0x8c72,0x8c93,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x9d35,0xa596,0xa556,0x9d35,0x9d56,0xa576,0xa556,0x9d56,0x9d35,0x9d35,0xa556,0xa576,0xa576,0xa576,0x9d56,0x9d56,0xa576,0xad97,0xadb7,0xad97,0xa556,0xadb7,0xa597,0xa597,0xadd8,0xb5d8,0xbe5a,0xc67b,0xc65a,0xce9b,0xd6dc,0xc67a,0xd6db,0xdf1c,0xbe39,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x2945,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18a2,0x18c2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x2124,0x2124,0x2104,0x18e4,0x20e3,0x18e3,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2124,0x2945,0x2945,0x2124,0x2103,0x18a2,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x18c3,0x2945,0x3166,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x39a7,0x31a6,0x2924,0x2124,0x2104,0x18e3,0x2104,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xadd8,0xadf9,0xadd8,0xa597,0x9d56,0x9536,0x9515,0x9d16,0x9515,0x9d56,0xa597,0x9d35,0x8cf4,0x9d56,0x9515,0x8cf4,0xadb7,0xadb7,0x9cf4,0x9d15,0x8cd3,0x8cb3,0x8cf4,0xa597,0x8cb3,0x8493,0x8cb3,0x9514,0x9514,0x9514,0x9515,0x9515,0x9515,0x9535,0x9515,0x9d35,0x9515,0x9d15,0x9d35,0x9d15,0x8cb3,0x8cb4,0x94f4,0x94d4,0x94d4,0x9d15,0x9d15,0x9d15,0x94d4,0x8452,0x8452,0x8472,0x8452,0x8c93,0x8472,0x8cb3,0x8cb3,0x8432,0x73f0,0x73f0,0x73f0,0x6bcf,0x6baf,0x6bd0,0x73f0,0x7410,0x73f0,0x6baf,0x6bcf,0x73d0,0x7c10,0x7c10,0x73ef,0x73cf,0x7c11,0x8431,0x73f0,0x73f0,0x6baf,0x6baf,0x73d0,0x73f0,0x7bf0,0x73cf,0x73cf,0x8c51,0x7c11,0x73af,0x6b6e,0x6b6e,0x73af,0x6b6e,0x634d,0x634d,0x5b2c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x73cf,0x6b6d,0x52ab,0x630c,0x5acb, +0x632c,0x6b4c,0x6b4d,0x630c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x634d,0x6b6e,0x738e,0x738e,0x6baf,0x73af,0x7bd0,0x8410,0x8c91,0x73ef,0x73af,0x738f,0x6b8e,0x6b8e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x8c72,0x8c72,0x8471,0x8451,0x8451,0x8471,0x8471,0x8451,0x7c0f,0x7bef,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73d0,0x73f0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c31,0x8431,0x8472,0x8451,0x8451,0x8451,0x8431,0x7c31,0x7c31,0x7c31,0x7411,0x7c11,0x8452,0x8452,0x8472,0x8c72,0x8c93,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x9515,0x9d35,0x94f5,0x9d36,0x9d56,0xa556,0xad97,0x9d36,0x9d56,0xa556,0x9d56,0x9d56,0xa576,0xad97,0x9d56,0x9d35,0xa576,0xa556,0xa556,0xa576,0xa597,0xadd8,0xa597,0xa597,0xbdf9,0xbe3a,0xb639,0xc65b,0xcebb,0xc67b,0xc65a,0xd6fc,0xdf1c,0xc67a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x2124,0x3186,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x18c2,0x10a2,0x1082,0x1081,0x1081,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2945,0x2944,0x2124,0x20e3,0x10a2,0x10a2,0x18a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x2124,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x3186,0x39c7,0x2945,0x2124,0x2124,0x2104,0x2104,0x1904,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xb619,0xb619,0xa597,0x9d56,0x9515,0x9536,0x94f5,0x9d15,0x8cd4,0x94f5,0xa576,0xa577,0x9535,0x9535,0x9d36,0xa597,0xb619,0xa576,0x9d36,0x94f4,0x8cb3,0x8cb3,0x9d55,0x9d76,0x8473,0x8472,0x8cb3,0x8cb3,0x8492,0x8cb3,0x9515,0x9d15,0x9515,0x9535,0x9515,0x9d35,0xa556,0xa576,0xa576,0xb5b8,0xad97,0x8cd4,0x9d56,0x9d35,0x94d4,0xa535,0x8cb3,0x94d4,0x94f4,0x8cb3,0x8472,0x8472,0x8472,0x94d3,0x8cb3,0x8c93,0x8cd4,0x8452,0x7bf1,0x73d0,0x73d0,0x73f0,0x6bd0,0x7410,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x73d0,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7c11,0x7c11,0x73f0,0x73d0,0x6b8f,0x6baf,0x73d0,0x73d0,0x73cf,0x73ef,0x8471,0x7c31,0x6baf,0x6baf,0x6baf,0x6bae,0x6baf,0x6b8e,0x6bae,0x636d,0x5b4d,0x52ec,0x5b0c,0x5aec,0x52ab,0x52cb,0x5b0c,0x52ec,0x4aab,0x52cb,0x52cb,0x5aeb,0x6b6d,0x73cf,0x52eb,0x5b0c,0x52aa, +0x632c,0x6b2c,0x632c,0x630c,0x5aeb,0x630c,0x630c,0x5b0b,0x634d,0x630c,0x630c,0x632d,0x632c,0x632d,0x6b4d,0x738e,0x6baf,0x7bf0,0x7bf0,0x7bef,0x7c10,0x73ef,0x738e,0x736e,0x738e,0x738e,0x6b6e,0x73af,0x7bcf,0x73cf,0x73ae,0x6b8e,0x73af,0x8431,0x8c92,0x94b3,0x8c92,0x8451,0x8451,0x8c92,0x7c31,0x73f0,0x7c10,0x7c10,0x6baf,0x6b8e,0x6baf,0x73af,0x738f,0x6b8f,0x6b8f,0x73cf,0x73f0,0x7c10,0x73ef,0x7c10,0x7c10,0x73f0,0x8451,0x8452,0x8472,0x8cb3,0x8472,0x8471,0x8451,0x7c10,0x7c10,0x8431,0x7c31,0x7c31,0x8452,0x8432,0x8452,0x8493,0x8492,0x8472,0x8c93,0x8493,0x8493,0x8493,0x7c52,0x7c73,0x8493,0x8cd4,0x9d36,0x9d56,0x9d36,0xb5d8,0xa597,0xa556,0x9d35,0x9d35,0xa556,0xa576,0xa597,0x9d56,0x9d35,0x9d56,0x9d15,0x9515,0xa556,0xb5d7,0xb5d8,0xa577,0xa557,0xb5d8,0xb5f8,0xadb8,0xb5f9,0xc67b,0xc67a,0xc67a,0xd6db,0xd6db,0xc65a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2965,0x2965,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18c2,0x2104,0x2104,0x2924,0x2944,0x2124,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2925,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x18a2,0x18c3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2125,0x3186,0x31a7,0x2965,0x2124,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xadb8,0xadb8,0xa597,0x9d56,0x9d35,0x9d15,0x9d15,0x94f5,0x94d4,0x9515,0x9d35,0xa577,0xa597,0x9d56,0x9d36,0xadb7,0xadb8,0x94f5,0xa577,0x9d56,0x94f4,0x8cd3,0x9d35,0x94d4,0x8452,0x8452,0x8cb3,0x8472,0x8472,0x8472,0x8cf4,0x9514,0x9d15,0x9cf4,0x94f4,0xa556,0xa596,0xa597,0xad97,0xb5f8,0xb5f8,0xa576,0x9515,0x9d15,0x94f4,0x9d14,0x94f4,0x8492,0x8cb3,0x8492,0x8472,0x8cb3,0x8492,0x94f3,0x8cd3,0x8452,0x8cb4,0x8473,0x73d0,0x73f0,0x73f0,0x6bcf,0x6bcf,0x7410,0x73d0,0x73d0,0x73d0,0x6bcf,0x6baf,0x6b8f,0x7c10,0x7c31,0x73cf,0x7bf0,0x73cf,0x7410,0x7410,0x73f0,0x6baf,0x73d0,0x73f0,0x6bae,0x7c10,0x8472,0x73f0,0x73f0,0x73f1,0x6baf,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x5b4d,0x530c,0x5b0c,0x52eb,0x52cb,0x5b0c,0x5b2d,0x52eb,0x4acb,0x52cb,0x52ab,0x52cb,0x6b6d,0x73ae,0x632d,0x52ab,0x52ab, +0x6b4c,0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x62ec,0x5aec,0x5aec,0x632d,0x632c,0x632c,0x6b6d,0x6b4d,0x738f,0x7bf0,0x7bef,0x7c10,0x7bef,0x73ef,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x7bcf,0x7bcf,0x738e,0x6b6e,0x6b6e,0x7bf0,0x94b3,0x9cf4,0x94d3,0x8471,0x8c71,0x8471,0x7c30,0x73cf,0x73af,0x7bf0,0x7c10,0x6baf,0x6baf,0x73af,0x7bf0,0x73af,0x6baf,0x6baf,0x73f0,0x7c10,0x73f0,0x73ef,0x73f0,0x73f0,0x73f0,0x8452,0x8c93,0x7c52,0x8472,0x7c51,0x7c51,0x8451,0x7c51,0x8451,0x7c31,0x7c31,0x8472,0x8c93,0x8452,0x8472,0x84b3,0x7c51,0x7c52,0x8452,0x8452,0x8452,0x8493,0x8473,0x7c52,0x7c52,0x84b3,0x94f5,0x94f5,0x9d36,0xadb7,0xb5f9,0x94d4,0x9d15,0x9d35,0x9d56,0xa556,0x9d35,0xa576,0x9d35,0x9d35,0x9d35,0x9d36,0xa556,0xadb7,0xb5d8,0xad97,0xad77,0xb5d8,0xb5f8,0xb5d8,0xadd8,0xb5f9,0xbe3a,0xc65a,0xc67a,0xc67a,0xbe19,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x3186,0x3166,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18c2,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2925,0x2124,0x2104,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2104,0x2966,0x39c7,0x2966,0x2124,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x3186,0xa597,0x9d76,0x9d56,0xa577,0xa576,0x9515,0x94f5,0x94f4,0x9515,0x94f4,0x94f4,0x9535,0x9d56,0xa5b7,0x9515,0xb5f8,0x9d36,0x8494,0x9d77,0xadb8,0x94f4,0x9d15,0x94d4,0x8c93,0x8c93,0x8472,0x94d4,0x8472,0x7c32,0x8cd4,0x84b3,0x94f4,0x9d15,0x9d35,0xa556,0xad76,0xad96,0xa576,0xad97,0xa597,0xa597,0xadb7,0x9d36,0x9d35,0x9d56,0x94f4,0x8cb3,0x8c92,0x94f4,0x8c93,0x8cb3,0x8cd3,0x8cb3,0x94f3,0x94f4,0x8cb3,0x7c51,0x73f0,0x73f0,0x7411,0x73f0,0x6baf,0x6bcf,0x73f0,0x73d0,0x73d0,0x73af,0x73d0,0x73f0,0x73af,0x7c10,0x8c72,0x7c31,0x7c10,0x7410,0x7c30,0x7c30,0x73f0,0x63ae,0x73ef,0x6bcf,0x6baf,0x7c31,0x7c10,0x73ef,0x7bf0,0x73d0,0x73af,0x6baf,0x636e,0x634d,0x6b8e,0x6b8e,0x636d,0x5b2c,0x5b2c,0x5b2d,0x5b0c,0x530c,0x52eb,0x52cb,0x52cb,0x4a8a,0x52aa,0x52cb,0x5b0c,0x5b0c,0x6b6d,0x6b6d,0x632c,0x6b4d, +0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x62eb,0x62eb,0x632c,0x5b0c,0x5aec,0x630d,0x6b2d,0x6b4d,0x6b4d,0x6b4d,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73ae,0x6b4d,0x6b6e,0x6b8e,0x6b6e,0x738f,0x7bef,0x7bcf,0x738e,0x73af,0x7bf0,0x8c72,0x94b3,0x9cf4,0x94d3,0x8c92,0x8c72,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x73f0,0x73f0,0x73d0,0x7bf0,0x73cf,0x8411,0x73cf,0x73cf,0x73f0,0x73f0,0x7c10,0x73f0,0x73f0,0x73cf,0x73cf,0x7bf0,0x7bf0,0x7c31,0x8472,0x8452,0x8431,0x8431,0x8452,0x8451,0x8451,0x8451,0x8471,0x8472,0x8431,0x8452,0x8472,0x8472,0x7c31,0x7c52,0x8452,0x8452,0x8452,0x8452,0x8493,0x8493,0x8493,0x94f5,0x8cd4,0x94f5,0x9d35,0xa556,0xadd8,0x94f4,0x94f5,0x94f4,0x9d56,0x9d56,0x9d56,0xa556,0x9d56,0x9d15,0xa556,0xa576,0xa576,0xad97,0xadb7,0xad97,0xadd8,0xb5d8,0xb5d8,0xb5f9,0xb5f8,0xadd8,0xb5d9,0xbe3a,0xc67a,0xc65a,0xb5f9,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x2103,0x2925,0x2965,0x2965,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18a2,0x18a2,0x18c3,0x2103,0x2124,0x2945,0x3165,0x31a6,0x31a6,0x31a6,0x31a6,0x3185,0x3185,0x3165,0x2944,0x2924,0x2104,0x18c3,0x18c3,0x18a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2124,0x31a6,0x31a7,0x2124,0x2104,0x2104,0x2124,0x2104,0x20e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d56,0x9d56,0x9515,0x9d16,0x9d36,0x9d15,0x9d35,0x9515,0x9514,0x9514,0x9d35,0x9d56,0x94f5,0xa577,0xa596,0xb5f8,0x8cd4,0x8cd4,0x9535,0xa576,0x9d35,0x9d55,0x8493,0x8cb3,0x8cd4,0x8472,0x8cd3,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x9514,0x9d55,0xa576,0xad97,0xadb7,0xb5d8,0xa576,0xa556,0xa576,0xa597,0xa597,0x9d35,0x9d35,0x94f5,0x94f4,0x94d4,0x9d15,0x94f4,0x8cb3,0x8cb3,0x8492,0x8cb3,0x94f4,0x94d3,0x8472,0x73f0,0x73d0,0x6bd0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73d0,0x6bcf,0x73b0,0x7410,0x7410,0x7c10,0x8451,0x7c51,0x8cb3,0x8c72,0x7c10,0x7c10,0x7c30,0x73f0,0x73f0,0x7410,0x73f0,0x7c31,0x73d0,0x7c31,0x7c31,0x8431,0x7c10,0x73af,0x73cf,0x73cf,0x6bae,0x638e,0x6baf,0x636e,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x634d,0x634d,0x634d,0x5aec,0x5aec,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x634d,0x73ae,0x7c10, +0x5aeb,0x5aeb,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0x632c,0x630c,0x630c,0x630d,0x736e,0x6b2d,0x6b6e,0x738e,0x738e,0x7bf0,0x7bef,0x7c10,0x7c10,0x738e,0x6b4d,0x634d,0x636d,0x73af,0x7bf0,0x73cf,0x73af,0x7bd0,0x8411,0x8452,0x8c72,0x8cb3,0x94f4,0x8472,0x8451,0x7c10,0x73cf,0x73ae,0x6b8e,0x6baf,0x73cf,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x7410,0x7410,0x73f0,0x73cf,0x73cf,0x73cf,0x73cf,0x73d0,0x73d0,0x7bf0,0x8431,0x8452,0x8452,0x8452,0x8452,0x8452,0x8452,0x8472,0x8492,0x8492,0x8452,0x8452,0x8452,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x7c32,0x8493,0x8472,0x8493,0x94f4,0x8cb4,0x94d4,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0xa597,0xad97,0xa576,0xa556,0xa576,0xa556,0xa576,0xadb7,0xa597,0xadb7,0xadd8,0xadd8,0xb5f8,0xadd8,0xadb8,0xadf8,0xadf8,0xadd8,0xadf9,0xadf9,0xb619,0xbe3a,0xadb8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x2124,0x2965,0x3185,0x2965,0x20e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x2104,0x2945,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x20e3,0x20e3,0x18c3,0x10a2,0x18a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2125,0x2965,0x3186,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a3,0x18e3,0x18e3,0x20e3,0x3186,0x94f5,0x94f5,0x9515,0x9516,0x9d56,0x9d56,0x9d36,0x9d35,0x9d35,0xa596,0xa597,0x9d36,0x94f5,0x94f5,0xb618,0xadd7,0x8cf4,0x9535,0x9515,0x9d35,0xb5d8,0x94f4,0x8452,0x8c93,0x8c93,0x7c31,0x8c93,0x94f4,0x8452,0x7c52,0x8492,0x7c52,0x94f4,0x9514,0x9d15,0xad97,0xa576,0xb5f8,0xadb7,0xa556,0xa576,0xa576,0xadb7,0xa576,0x8cb4,0x94f5,0x9d15,0x8cd4,0x8cd4,0x8472,0x7c31,0x8492,0x8472,0x8cb3,0x8cb3,0x8472,0x7c31,0x7c11,0x7c31,0x73cf,0x73cf,0x6baf,0x73ef,0x73f0,0x6baf,0x6b8f,0x6b8f,0x73b0,0x73d0,0x7c10,0x7c31,0x73ef,0x7c10,0x8c92,0x8431,0x7bf0,0x7c10,0x73d0,0x73d0,0x8451,0x8c92,0x6b6e,0x636e,0x6baf,0x7c10,0x7bf0,0x7c10,0x7bf0,0x6baf,0x6baf,0x6baf,0x636e,0x6bae,0x6b8e,0x5b4d,0x5b2d,0x5b2c,0x5b0c,0x632c,0x5b0c,0x6b6e,0x5b2c,0x6b8e,0x636e,0x5b2d,0x5b0d,0x5b0d,0x5aec,0x52ab,0x5aec,0x5b2c, +0x5acb,0x5aeb,0x5b0b,0x5b0b,0x5acb,0x6b2c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x5b0c,0x632d,0x6b4d,0x6b6e,0x6b8e,0x7c10,0x94b2,0x7c10,0x7c30,0x7bef,0x73ae,0x6b4d,0x632d,0x6b4e,0x7bcf,0x73ef,0x73ef,0x7c30,0x7c10,0x7bd0,0x7bd0,0x8472,0x94d3,0x8cb3,0x8451,0x7c10,0x7bf0,0x73ef,0x73cf,0x73af,0x6baf,0x73af,0x6b8e,0x73cf,0x73cf,0x6b8e,0x6b8f,0x73d0,0x73cf,0x73cf,0x6baf,0x6baf,0x6bae,0x6bae,0x73ef,0x73cf,0x7bf0,0x73d0,0x73d0,0x7c10,0x8431,0x7c31,0x8451,0x7c31,0x8472,0x8472,0x8cb3,0x8472,0x8492,0x8cb3,0x8cb3,0x8c93,0x8c72,0x8452,0x8c93,0x8c93,0x8472,0x8452,0x8452,0x8452,0x8432,0x8451,0x94d4,0x8cb4,0x94f4,0x9d15,0x94f5,0x9d35,0xa556,0xa556,0x9d35,0x9d35,0xa597,0xa576,0xa556,0xa576,0x9d56,0x9d56,0xa597,0x9d36,0x9d36,0xa597,0xa597,0xadb7,0xadb7,0xa597,0xadd8,0xb619,0xadf9,0xadf9,0xadf8,0xb619,0xadd8,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18e3,0x2925,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2125,0x2965,0x2965,0x2945,0x2925,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9516,0x8cf5,0x8cf5,0x9d56,0xa5b7,0xa597,0x9535,0x9d55,0x9d56,0xa596,0xa556,0xa576,0x9d36,0x9d35,0xb5f8,0x9d35,0x9515,0x9d76,0x9515,0x9d35,0xadb8,0x94f4,0x8493,0x8c93,0x8493,0x7411,0x8452,0x8cb4,0x8c73,0x8493,0x7c51,0x7c51,0x8cb3,0x9d35,0x9d35,0xa556,0xad96,0xa576,0xadb7,0xa576,0xa576,0xa597,0xadd8,0xa577,0x8cb3,0x9d15,0x9d15,0x8cd3,0x8cd3,0x8472,0x8472,0x8472,0x7c52,0x94f4,0x8493,0x7c52,0x73f0,0x73f1,0x73f0,0x73cf,0x73f0,0x73cf,0x7410,0x73f0,0x73d0,0x73f0,0x7c10,0x73f0,0x73d0,0x73d0,0x7bf0,0x7c31,0x7410,0x7c31,0x7c31,0x7bf0,0x7c30,0x6baf,0x7c31,0x8c92,0x8c72,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x6baf,0x6baf,0x636e,0x636e,0x6b6e,0x636e,0x636e,0x6b8e,0x634d,0x5b0c,0x5b2d,0x634d,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x634d,0x636d,0x636d,0x5b0c,0x5b0c,0x5b0c,0x5b2c, +0x5aeb,0x5acb,0x52ca,0x528a,0x52aa,0x5acb,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x630c,0x630c,0x632c,0x632c,0x6b6e,0x8471,0x8472,0x7c10,0x7bf0,0x73f0,0x73f0,0x634d,0x632d,0x736e,0x7bcf,0x7c10,0x7c30,0x7c10,0x738e,0x6b6e,0x73af,0x8c92,0x8cb3,0x8451,0x8451,0x7c10,0x73ef,0x6b8e,0x6b8e,0x6b6e,0x738f,0x73af,0x6baf,0x73ef,0x73ef,0x73cf,0x6bae,0x6baf,0x6baf,0x6baf,0x6bae,0x73af,0x6b8e,0x6bae,0x6bcf,0x73f0,0x7c11,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73cf,0x73f0,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x8452,0x8cd3,0x9d35,0x9d15,0x94d4,0x8c93,0x8472,0x8452,0x7c31,0x7c31,0x8c93,0x8473,0x8452,0x7c52,0x9d55,0xa576,0x94f4,0x9d15,0x9d15,0xa555,0x9d35,0x9d35,0x9d15,0x9d15,0x9d35,0xa556,0xa576,0xa597,0xa556,0xa576,0xa597,0xa597,0xa576,0x9d76,0x9d76,0xa596,0xa597,0xa576,0xadb8,0xb61a,0xadf9,0xadd8,0xb639,0xb639,0xadf9,0xadd8,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a3,0x18c3,0x18a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0x9d36,0x9515,0x9515,0x9d56,0x9d56,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d36,0xa597,0xa5b7,0xa597,0xadd8,0x9d36,0x9515,0x9d36,0x9515,0x9535,0x9d35,0x8cd4,0x8cb3,0x8493,0x8cd4,0x7c72,0x8493,0x8cd3,0x8c93,0x8473,0x8472,0x7c11,0x8452,0x94f4,0x9d35,0x9d55,0xa596,0x9d55,0xa556,0xadd8,0xa576,0xadd7,0xa5b7,0x9d56,0x8cd4,0x9514,0x9d55,0x8cb3,0x8472,0x8472,0x8c93,0x8472,0x8493,0x8c93,0x7c72,0x7411,0x73f1,0x73f1,0x73d0,0x6baf,0x6baf,0x73d0,0x7411,0x73d0,0x73cf,0x73cf,0x8472,0x7c11,0x73f0,0x6bd0,0x6bf0,0x7411,0x7411,0x6baf,0x6bb0,0x6bcf,0x73cf,0x7c31,0x7c31,0x73d0,0x73f0,0x6b8f,0x6b8e,0x73cf,0x73ef,0x73ef,0x6baf,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x5b4d,0x6b6e,0x7bf0,0x634d,0x52ec,0x5b0d,0x5b2d,0x5b4d,0x530c,0x530c,0x634d,0x73ce,0x73cf,0x634d,0x634e,0x5b0c,0x5b2d, +0x5acb,0x52aa,0x52aa,0x5aaa,0x5acb,0x5acb,0x630c,0x632c,0x632c,0x632c,0x630c,0x62ec,0x632c,0x6b6d,0x7bef,0x8451,0x8c92,0x8451,0x8431,0x7c10,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73cf,0x8410,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x736e,0x8431,0x94b3,0x8451,0x7c31,0x7c30,0x7bf0,0x73af,0x6b6e,0x6b4e,0x6b4e,0x738f,0x73af,0x6baf,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x6bcf,0x73ef,0x6bcf,0x6bcf,0x6bcf,0x73af,0x6baf,0x6bcf,0x73f0,0x73d0,0x7bd0,0x73d0,0x7bf0,0x73f0,0x6baf,0x6baf,0x7c11,0x8452,0x8c93,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x8472,0x8cb3,0x8472,0x8473,0x8472,0x8452,0x8472,0x8cd4,0x8473,0x8473,0x8493,0x8472,0xadd7,0xa576,0x94f4,0x9d35,0x9d35,0x94d3,0x9d15,0xa556,0x9d15,0xa576,0xad97,0xa597,0xadb7,0xa597,0xa556,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0xa576,0xa596,0xad97,0xb5d9,0xb619,0xadf8,0xadf8,0xb5f9,0xadd8,0xadd9,0xa577,0x1082,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x2124,0x2965,0x3186,0x2965,0x2104,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x2124,0x2966,0x2965,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xa597,0x9d56,0x9d36,0x9d15,0x9536,0x9d36,0x9d56,0x9d76,0xa597,0x9d56,0x9d35,0xa577,0xadb7,0xa576,0xadb7,0xadb7,0x9535,0x94f4,0x9d76,0x9d56,0x94f4,0x8cb4,0x8493,0x9535,0x94f4,0x8c93,0x8493,0x9d35,0x8cb3,0x8472,0x8472,0x8452,0x7c11,0x8472,0x9515,0x8cf4,0x8cd4,0x9d15,0x94d4,0xa577,0xadb7,0xadd7,0xa556,0x94f5,0x9514,0x94f4,0x94f4,0x8cb3,0x8493,0x7c31,0x7c52,0x7c52,0x8452,0x7c31,0x7410,0x7411,0x73f1,0x73d0,0x73f0,0x73cf,0x6baf,0x6bcf,0x7410,0x73f0,0x6baf,0x6baf,0x7c10,0x7c11,0x73f0,0x6bcf,0x6bcf,0x6bd0,0x6baf,0x6b8f,0x6b8f,0x6baf,0x8451,0x7c10,0x636e,0x6b8e,0x73d0,0x6baf,0x636e,0x6bae,0x8430,0x8c72,0x7c10,0x73af,0x73d0,0x73f0,0x6baf,0x6b6e,0x6baf,0x6baf,0x634d,0x636e,0x5b2d,0x52ec,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b2d,0x634e,0x634d,0x6b6d,0x73af,0x6b6e,0x632d,0x5b0c,0x5b0c, +0x52ca,0x5acb,0x5acb,0x62cb,0x62eb,0x62eb,0x630c,0x6b2d,0x630c,0x630c,0x632c,0x6b4d,0x6b8e,0x6b6e,0x73cf,0x8c72,0x7c11,0x7c10,0x8430,0x8410,0x7bef,0x73ef,0x73cf,0x73ae,0x73cf,0x7c10,0x738e,0x6b6d,0x73af,0x7bcf,0x7bf0,0x8c92,0x8451,0x6bcf,0x7c10,0x73cf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x73af,0x73ce,0x73cf,0x6b8e,0x6baf,0x73cf,0x73ef,0x73cf,0x6baf,0x6b8e,0x6baf,0x6bcf,0x6baf,0x8431,0x7c31,0x73cf,0x7bf0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x8452,0x8c93,0x8452,0x7c31,0x8452,0x8452,0x8452,0x8472,0x8493,0x8492,0x8452,0x7c32,0x8472,0x8493,0x8493,0x8473,0x8473,0x8473,0x8c93,0xa556,0xb5f8,0x94d4,0x8cb3,0x94d4,0x8cd4,0x9515,0x9d35,0x9d36,0xa576,0xa576,0xad97,0xadb7,0xadb7,0xadb8,0xadd8,0xa597,0x9d56,0x9d56,0xa597,0xadb7,0xb5d8,0xadb7,0xbe19,0xb619,0xb619,0xbe3a,0xb5f9,0xb5f9,0xb5f9,0xa597,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x2965,0x2965,0x2925,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9d56,0x9d56,0x9d56,0x9d35,0x9515,0x9d35,0x9d36,0x9d56,0xadb8,0x9d76,0xa556,0xa577,0xb619,0xa576,0xa576,0xa597,0xa576,0x8cb3,0x9535,0x9d56,0x94d4,0xa556,0x9515,0x9d35,0x9d35,0x94f4,0x8cb3,0x94f4,0x8cd3,0x8cb2,0x8cb3,0x8492,0x8452,0x8452,0x8493,0x8493,0x8cb4,0x9515,0x94d4,0x8cb3,0xad77,0xb5b8,0x9d15,0x9d15,0xa555,0x94f4,0x8451,0x8cb3,0x94f4,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7c11,0x7c31,0x7c10,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x7c10,0x7c11,0x6baf,0x6baf,0x6bd0,0x73d0,0x73f0,0x73f0,0x6baf,0x6bcf,0x6baf,0x6baf,0x6b8e,0x73f0,0x8c92,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x6bcf,0x636e,0x636e,0x73cf,0x7c10,0x7c10,0x73f0,0x73d0,0x7c11,0x73d0,0x6b8f,0x6baf,0x634e,0x6b6e,0x634d,0x5b2c,0x5b2d,0x5b0c,0x52ec,0x5b0c,0x5b0c,0x5b2c,0x634d,0x634d,0x632d,0x632d,0x634d,0x5b2c,0x5b0b,0x5b2c, +0x52ca,0x5acb,0x630c,0x630c,0x62ec,0x630c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x6b4d,0x6b4d,0x632d,0x7bd0,0x8c72,0x7bf0,0x7c10,0x7bf0,0x7bf0,0x7bef,0x73cf,0x6b8e,0x6b8e,0x73af,0x73ef,0x73ae,0x73af,0x7bf0,0x7bf0,0x7c10,0x8451,0x7410,0x6baf,0x6baf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x6baf,0x73cf,0x7c10,0x73f0,0x6baf,0x6baf,0x6baf,0x73cf,0x6bcf,0x8451,0x8451,0x73af,0x73d0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x7c11,0x8431,0x8c92,0x8c93,0x8452,0x7c31,0x7c11,0x8452,0x8472,0x7c52,0x8452,0x8492,0x7c52,0x7c11,0x8452,0x8473,0x8473,0x8493,0x8c93,0x8c93,0x94f4,0x9d15,0xa576,0x9515,0x9514,0x9d35,0x9515,0x9514,0x9d35,0x9d35,0x9d15,0x9d36,0xad97,0xad97,0xadb8,0xa577,0xa577,0x9d36,0x9d15,0x9d56,0xa576,0xad97,0xadb7,0xb5f9,0xbe3a,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xb5f8,0xbe39,0xadb7,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x3186,0x2945,0x2124,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x18a2,0x2104,0x2945,0x3186,0x2945,0x2104,0x2104,0x20e4,0x20e3,0x20e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xa598,0x9d56,0x9d56,0xa576,0xa556,0x9d36,0x9d15,0x9d36,0xa577,0x9d56,0xa576,0xb5f8,0xb639,0xadd8,0xa577,0xa597,0x9d35,0x8493,0xa577,0x9d15,0x8cd4,0x9d15,0x9d15,0x9d15,0x9d56,0x9d35,0x9515,0x94d4,0x8c93,0x7c31,0x8cb3,0x94f4,0x8c72,0x8472,0x7c51,0x8493,0x8cb3,0x94f4,0x9d15,0x94d4,0x94f5,0x9d36,0x94f4,0x94f4,0x9d35,0x8cb3,0x8472,0x8452,0x8452,0x7c31,0x7410,0x7c31,0x8472,0x7c31,0x7c11,0x7c11,0x7410,0x73f0,0x73d0,0x73d0,0x73d0,0x73cf,0x73f0,0x7c11,0x6b8f,0x6bd0,0x6bcf,0x6bf0,0x73f0,0x7bf0,0x73af,0x73cf,0x6bcf,0x6bae,0x6baf,0x7c31,0x8451,0x6b8e,0x6b8e,0x6b8e,0x636e,0x636e,0x6bae,0x636e,0x73cf,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x6b8f,0x73b0,0x6b6f,0x6b6f,0x6b8f,0x5b2d,0x530c,0x6bae,0x5b2c,0x4acb,0x52eb,0x5b4d,0x52ec,0x73ef,0x6b8e,0x5b2c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb, +0x5aaa,0x5acb,0x630c,0x630c,0x632c,0x630c,0x632c,0x632c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x738e,0x8c71,0x7c10,0x73cf,0x6baf,0x73af,0x7bf0,0x7c10,0x73cf,0x6b4d,0x738e,0x7bcf,0x73ef,0x73ef,0x73cf,0x7bef,0x73ef,0x7bf0,0x7c10,0x6bcf,0x6b8e,0x6b8e,0x6b8f,0x738f,0x738f,0x6b8e,0x6bae,0x6baf,0x6baf,0x6bae,0x6b8e,0x6b8e,0x73af,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x7bf0,0x7c31,0x8c72,0x8c92,0x8c72,0x8451,0x7c31,0x8472,0x8472,0x7c52,0x7c31,0x8472,0x8493,0x7c52,0x8452,0x8472,0x8cb3,0x8cb3,0x8493,0x94f4,0x94d4,0x94d4,0x8cb3,0x9515,0xadb7,0xadb7,0x9514,0x9d15,0x94f4,0x94f4,0x8cd4,0x9d15,0xa577,0xadb7,0xadb8,0x9d56,0xa577,0xad97,0x9d15,0x9d36,0xa576,0xa576,0xa576,0xb5f8,0xadb8,0xb5f9,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xbe39,0xb5d8,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x2103,0x3186,0xa577,0x9d56,0x9d76,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xb5d8,0xb5d8,0xadd8,0xadb8,0xa577,0x9535,0x9d35,0xa597,0x8cb3,0x8cd4,0x94d4,0x9d15,0x9d35,0x8cf4,0x8cf4,0x9515,0x8cb4,0x8452,0x8432,0x8472,0x9d14,0x9cf4,0x8492,0x7c31,0x84b3,0x8452,0x8472,0x94f4,0x9515,0x9514,0x9d35,0x9515,0x8cb4,0x8473,0x8493,0x8472,0x7c52,0x7c31,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x7c52,0x7c11,0x7c51,0x7410,0x73d0,0x73d0,0x73d0,0x73f0,0x73f0,0x8471,0x7c51,0x73f0,0x6bd0,0x73f0,0x7411,0x7bf0,0x73af,0x6bcf,0x73d0,0x6bcf,0x73f0,0x8472,0x7c11,0x6baf,0x6b8e,0x6bae,0x6b8e,0x6b6e,0x73af,0x6b8e,0x73ef,0x73ef,0x73cf,0x73cf,0x73f0,0x73cf,0x73cf,0x73af,0x6b6e,0x6b8f,0x634d,0x634d,0x5b0c,0x6b8e,0x632d,0x52ec,0x52cb,0x5b0c,0x634d,0x6b8e,0x634d,0x5aec,0x52cb,0x52cb,0x52cb,0x52eb,0x4acb, +0x5acb,0x630c,0x6b2c,0x632c,0x632c,0x630c,0x5aeb,0x5b0b,0x630c,0x630c,0x5aeb,0x62ec,0x6b0c,0x8430,0x8c91,0x8450,0x73ef,0x634d,0x6b4d,0x738e,0x73cf,0x73af,0x6b8e,0x73af,0x7bcf,0x73ef,0x73cf,0x73cf,0x7bd0,0x73af,0x73cf,0x7bf0,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x738e,0x73af,0x6baf,0x6baf,0x73af,0x73cf,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x6b8e,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7c10,0x6bcf,0x73cf,0x6b8e,0x6baf,0x73ef,0x73cf,0x73cf,0x73cf,0x73f0,0x7c31,0x7c31,0x8472,0x8c92,0x8431,0x8452,0x8472,0x8452,0x7c72,0x7c32,0x8473,0x8493,0x8c93,0x8c93,0x8c93,0x8cd3,0x8cd4,0x8493,0x8cb4,0x94f4,0x8cd4,0x8c93,0x94d4,0x9d35,0xadb7,0xa556,0xa556,0xa577,0xa556,0x9d15,0x9d36,0xb5d8,0xadd8,0xa576,0x9d56,0x9d35,0xa577,0xa556,0x9d36,0xa556,0xadb7,0xadd8,0xb5f9,0xadd8,0xadd9,0xadf9,0xbe3a,0xbe3a,0xc67a,0xc65a,0xb5f9,0x10a2,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x18a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x20e4,0x2924,0x2965,0x2944,0x2124,0x2104,0x2104,0x2104,0x20e4,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e4,0x18e3,0x2104,0x3186,0xadb8,0x9d57,0xa577,0x9d56,0x9d36,0xa576,0xa597,0xa597,0xa597,0xa597,0xadd8,0xad97,0xa577,0x9d56,0x9d76,0xadd8,0xa597,0xa597,0xa576,0x94f4,0x94f4,0x8cb4,0x94d4,0x9514,0x8493,0x8cd4,0x8cf4,0x8cb3,0x8472,0x8cb3,0x8472,0x7c31,0x8c92,0x8cd4,0x7c72,0x7431,0x8473,0x8c93,0x94f4,0x9d55,0x8cf4,0x94f4,0x9d15,0x8cb4,0x8473,0x8cb3,0x8472,0x7c31,0x7c11,0x7c52,0x7c31,0x7410,0x7c31,0x7c32,0x7c52,0x7411,0x8cb3,0xb5d7,0x9d14,0x8c92,0x8472,0x6baf,0x7431,0x8472,0x7c31,0x7410,0x6bcf,0x6baf,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x73f0,0x73cf,0x73f0,0x6baf,0x73d0,0x6baf,0x6b8e,0x6baf,0x638e,0x6baf,0x6b8e,0x6bae,0x6bcf,0x73cf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x6baf,0x73af,0x6b6e,0x5b2d,0x636e,0x636d,0x636e,0x5b0d,0x5aec,0x632d,0x6b6d,0x634d,0x530c,0x530c,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb, +0x5aeb,0x634c,0x6b8d,0x632c,0x634c,0x634c,0x6b4d,0x630c,0x630c,0x5b0b,0x630c,0x630c,0x738e,0x8c92,0x7c30,0x7c0f,0x634d,0x630c,0x632d,0x6b4d,0x73ae,0x7bef,0x7bef,0x7bf0,0x7bf0,0x73af,0x636e,0x73af,0x7bf0,0x6b8f,0x6b6e,0x73ae,0x73ae,0x6b6d,0x632d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x7c10,0x7c10,0x73d0,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x73f0,0x7c31,0x8452,0x8452,0x7c31,0x7c31,0x7c11,0x8452,0x8472,0x8472,0x8452,0x8c93,0x8c92,0x94d3,0x8c93,0x8472,0x8c93,0x8cb3,0x8493,0x8493,0x8cb3,0x8cd4,0x8cb3,0x94b4,0x9d15,0x9d15,0xa556,0xa556,0x9d56,0xa556,0xa597,0xadb7,0xadd8,0xa577,0xa576,0x9515,0x94f5,0xa556,0xa577,0x9d15,0xa556,0xadb8,0xadb8,0xadd8,0xadd8,0xadd9,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xad97,0x10a2,0x1082,0x10a2,0x18c3,0x18a3,0x18c3,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e4,0x2103,0x2104,0x31a6,0xadd8,0x9d36,0x9d56,0x9d76,0xa597,0xadb7,0xad97,0xa5b8,0xa5b8,0x9d56,0x9d56,0x9d56,0x9d56,0xa576,0x9d56,0xad97,0xadb7,0xa556,0xa556,0x9d35,0x9515,0x8cf4,0x8cd4,0x9515,0x8cd4,0x84b3,0x8c93,0x94f4,0x8cb3,0x8cb3,0x8c93,0x8452,0x7c11,0x8472,0x84b3,0x7c51,0x8cb3,0x9d34,0x94d3,0x94f4,0x8c93,0x8cd3,0x9d15,0x8cb3,0x94f4,0x8cb3,0x7c31,0x7411,0x7411,0x7c11,0x7c11,0x7c31,0x7c32,0x7411,0x7c32,0x7c52,0x8452,0x9d14,0x9cf4,0x7c52,0x8472,0x6bd0,0x6bd0,0x7410,0x6bd0,0x6bcf,0x6baf,0x7c11,0x73f0,0x73f0,0x6bef,0x7410,0x7c10,0x6bcf,0x73d0,0x73af,0x73af,0x6b8f,0x6b8e,0x6b8e,0x6baf,0x6b8f,0x636e,0x636e,0x6b6e,0x6baf,0x6baf,0x638e,0x638e,0x6b8e,0x638e,0x638e,0x634e,0x636e,0x6b8e,0x636e,0x634e,0x6bd0,0x73f0,0x6baf,0x634d,0x632d,0x630d,0x5b0c,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb, +0x5aeb,0x6b6d,0x6b6d,0x632c,0x632c,0x632c,0x6b4d,0x632c,0x630c,0x630b,0x630c,0x6b2d,0x8c31,0x94b2,0x7c50,0x73cf,0x632d,0x6b4d,0x738e,0x73ae,0x73cf,0x7bef,0x8450,0x8451,0x73cf,0x6b8e,0x6b8e,0x7bf0,0x8430,0x73ef,0x6b6d,0x6b8e,0x73cf,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x73f0,0x73d0,0x73cf,0x73f0,0x7410,0x73f0,0x73d0,0x73cf,0x73ef,0x7410,0x7c10,0x73f0,0x73d0,0x7bf0,0x73f0,0x7c11,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8451,0x8431,0x8452,0x8472,0x8472,0x8c93,0x94d4,0x9514,0x94f4,0x8c93,0x8cb3,0x94f4,0x8cd4,0x8472,0x7c52,0x8493,0x8cb3,0x8cd4,0x94d4,0x94f5,0x94f5,0x9d15,0xa556,0x9d56,0xa577,0xadb7,0xadb7,0xa597,0xa576,0x9d35,0x9515,0x9515,0x9d35,0xa576,0xa556,0xa597,0xadb7,0xa597,0xadb8,0xadd8,0xa597,0xa5b8,0xadd8,0xadb8,0xadd8,0xb5d8,0xa556,0x10a2,0x1082,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x18a2,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e4,0x2104,0x2945,0x2965,0x2104,0x2124,0x2924,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e4,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x31a6,0xadb8,0x9d36,0x9d56,0xadd8,0xb5d8,0xadd8,0xadb7,0xa597,0xa598,0x9d36,0x8cf4,0x9515,0xa597,0xa577,0x9d35,0x9d36,0xadb7,0x9d36,0x94f5,0x94f4,0x9515,0x94f5,0x8cd4,0x9d15,0x9d36,0x8493,0x8493,0x94d4,0x8cd3,0x8c93,0x8c93,0x8452,0x7c11,0x7c11,0x8c93,0x8cb3,0x8cb3,0x9514,0x9d35,0x8492,0x8cb3,0x8cd3,0x8cd3,0x8472,0x7410,0x7c51,0x7c51,0x7410,0x7410,0x7c51,0x7c31,0x8472,0x8452,0x7411,0x7c31,0x7c52,0x7c11,0x73af,0x73d0,0x73f0,0x7410,0x73f0,0x6bcf,0x7410,0x7411,0x73f0,0x73f0,0x7c52,0x7410,0x7410,0x7410,0x7410,0x73f0,0x73d0,0x6b8f,0x6b6f,0x6b8f,0x636e,0x6b8f,0x6baf,0x636e,0x638e,0x638e,0x6b8e,0x636e,0x6baf,0x6bae,0x636e,0x638e,0x636e,0x6b8e,0x6b8f,0x634e,0x634e,0x6baf,0x73d0,0x636f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x634e,0x632d,0x5b4d,0x5b0c,0x5b2d,0x5b2d,0x5b2c,0x52ec,0x52cb,0x52eb, +0x630c,0x6b6d,0x6b6d,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x736e,0x8c31,0x8c72,0x7c10,0x634d,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x73af,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73af,0x7c10,0x7c10,0x73cf,0x6b8e,0x6b8e,0x73cf,0x636e,0x636e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73cf,0x7bcf,0x73cf,0x73cf,0x73ef,0x6bcf,0x73cf,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x7c10,0x73f0,0x73ef,0x73cf,0x73f0,0x73f0,0x7c11,0x7c11,0x7c10,0x73f0,0x7c51,0x8452,0x8452,0x8452,0x8451,0x8451,0x8451,0x8452,0x8472,0x8452,0x8472,0x8cb3,0x94f3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cb4,0x8c93,0x8493,0x8cb4,0x8cd4,0x94d4,0x94d4,0x94d4,0x94f5,0x9d15,0x9d35,0xa556,0xadb7,0xa576,0xa577,0xadb7,0xa597,0x9d56,0x9d35,0x9515,0x9d56,0x9d56,0xa576,0xb5f8,0xadd7,0xad97,0xb5d8,0xb5f9,0xadd8,0xadd8,0xadb8,0xb5d8,0xb5d8,0xbe18,0xc618,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2945,0x2945,0x2945,0x2104,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x20e3,0x20e3,0x2103,0x2104,0x2124,0x2125,0x2945,0x2124,0x2945,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x31a6,0xa577,0x9d36,0xa576,0xadb7,0xb5f8,0xadf8,0xb639,0xa597,0x9d56,0x94f5,0x9515,0x94f4,0x94f5,0x9d15,0x9d15,0x9d56,0xa576,0x9d35,0x9d36,0x9d15,0x94f4,0x8cb4,0x8472,0x8c93,0x8cb4,0x8493,0x8cd4,0x8c93,0x8cb3,0x8c93,0x8473,0x8472,0x7c11,0x7c11,0x8431,0x8c93,0x8c93,0x8493,0x8493,0x8493,0x84b3,0x8493,0x8472,0x7c31,0x73f0,0x7c31,0x8472,0x7c52,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7bf0,0x7bf0,0x7c31,0x7c11,0x73f1,0x73f1,0x73f1,0x73f0,0x6bcf,0x6b8f,0x6bef,0x7c31,0x73d0,0x73f0,0x73f0,0x73f0,0x7410,0x7411,0x73f0,0x6bd0,0x73f1,0x6b8f,0x636f,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x636e,0x5b6e,0x5b4d,0x636e,0x636e,0x6bcf,0x6bae,0x73ef,0x73f0,0x6b8f,0x6b6e,0x73cf,0x6b6e,0x6baf,0x73ef,0x6baf,0x634e,0x634e,0x636e,0x638e,0x6b8f,0x634e,0x634e,0x5b4e,0x636e,0x5b0d,0x632d,0x5b0d,0x52cb,0x5b0c,0x636e, +0x632d,0x6b6d,0x6b4c,0x6b4c,0x632c,0x630c,0x632c,0x5aec,0x5b0c,0x632c,0x632c,0x7baf,0x8410,0x7bcf,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x634d,0x630d,0x634e,0x6b6e,0x6b8e,0x6bae,0x6b6e,0x6b8e,0x7bf0,0x73ef,0x6bae,0x634d,0x6bae,0x73cf,0x6b6e,0x6b6e,0x6baf,0x6b6d,0x6b8e,0x73cf,0x7c10,0x7bcf,0x73af,0x73cf,0x7c10,0x7bf0,0x73cf,0x6baf,0x6bcf,0x73f0,0x7bf1,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73ef,0x7bf0,0x73cf,0x73f0,0x7bf1,0x8451,0x8c92,0x8452,0x7c31,0x7c31,0x7c31,0x8452,0x8c92,0x8472,0x7c31,0x8472,0x8492,0x8452,0x8472,0x8472,0x8cb3,0x9d35,0x94d3,0x94f4,0x8cb3,0x8c93,0x8c72,0x94b3,0x94d4,0x94f5,0x94f4,0x94d4,0x94d4,0x94f4,0x9d35,0x9d36,0xa556,0xa577,0xa556,0x9d35,0x9d56,0xa596,0xa597,0xa577,0x9d35,0x9d35,0x9d56,0x9d76,0xa576,0xbdf8,0xd6fb,0xce99,0xc638,0xcebb,0xb5f8,0xadd7,0xadb7,0xbe39,0xc659,0xce9a,0xce9a,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2125,0x2144,0x2945,0x2124,0x2124,0x2945,0x2945,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2925,0x2945,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x20e4,0x20e3,0x18c3,0x18c3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2103,0x2103,0x3186,0xad97,0xa576,0xa5b7,0xa597,0xadb7,0xadb7,0xbe79,0xadd7,0x9d35,0x9535,0x9535,0x9535,0x9515,0x9515,0x9d56,0x9d56,0x94f5,0x9d15,0xa577,0x94f4,0x94f4,0x94d4,0x8493,0x7c53,0x8453,0x8452,0x8c93,0x8c93,0x8cb4,0x8cb3,0x8493,0x8472,0x7c52,0x7c52,0x7c52,0x8452,0x8cb3,0x8472,0x8493,0x8cd4,0x8cb3,0x8472,0x7c52,0x7c52,0x7411,0x7c52,0x8472,0x7c32,0x73f1,0x73f1,0x7c11,0x73f0,0x73f0,0x7c11,0x7c11,0x7c31,0x7c11,0x7411,0x73f1,0x73d0,0x6b8f,0x73d0,0x6b8f,0x6baf,0x6bf0,0x6bcf,0x73f0,0x73f0,0x6bf0,0x6bcf,0x7c31,0x7410,0x73f0,0x73f0,0x634e,0x6baf,0x6bd0,0x638f,0x636e,0x636e,0x638e,0x634e,0x636e,0x6b8e,0x6b8e,0x7c10,0x73cf,0x73f0,0x7c10,0x6b8f,0x636e,0x73af,0x634d,0x636e,0x73f0,0x6baf,0x5b4d,0x5b6d,0x5b4d,0x6baf,0x73f0,0x6b8f,0x636e,0x636e,0x636e,0x5b2d,0x634e,0x5b0d,0x52ec,0x52ec,0x52ec, +0x632c,0x634c,0x634c,0x6b6d,0x632c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x738e,0x73af,0x73ae,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x632c,0x630c,0x632d,0x632d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x6b6e,0x6baf,0x6b8e,0x6b8e,0x73cf,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73d0,0x73d0,0x73cf,0x6bae,0x73ef,0x73f0,0x73f0,0x73f0,0x7c10,0x7c30,0x7c10,0x73cf,0x7c10,0x7c10,0x73f0,0x7c11,0x8452,0x94b3,0x94b3,0x8431,0x7c31,0x7c31,0x7c31,0x8472,0x8431,0x8431,0x8c92,0x8472,0x8472,0x8cb3,0x8cb3,0x8cb3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x9cf4,0x9d35,0x9d15,0x8cd4,0x8cd4,0x8cb3,0x94f4,0x9d15,0x9d35,0x9d56,0x9515,0x9d35,0xa555,0x9d35,0xa576,0xa597,0x9d35,0x9515,0x9d15,0xa577,0xa556,0xad97,0xad76,0xc659,0xc679,0xadb6,0xadb7,0xad97,0xadb7,0xb5f8,0xb618,0xadb8,0xad97,0x9d35,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb7,0xa5b7,0xadf8,0xa597,0xadb7,0xa597,0xb5f8,0xadb7,0x9d56,0xa577,0x9d56,0x9d56,0x9536,0x9d56,0xa577,0x9515,0x94f4,0x9d36,0x9d35,0x9515,0x8cf4,0x8493,0x8493,0x8493,0x8473,0x8472,0x8472,0x8452,0x8c93,0x94d4,0x8cb3,0x8493,0x8473,0x7c32,0x8472,0x7c52,0x8472,0x8472,0x8493,0x9515,0x8473,0x7c31,0x7c52,0x7c31,0x8452,0x8472,0x7c32,0x7c32,0x73f0,0x7c11,0x7c31,0x7c11,0x7bf0,0x8431,0x7c11,0x7c11,0x7c11,0x73f1,0x73f0,0x73f0,0x638f,0x6bd0,0x6bd0,0x6b8f,0x6bd0,0x6bcf,0x6baf,0x6bcf,0x6bef,0x6bef,0x6bef,0x73ef,0x6bcf,0x636e,0x638e,0x6bcf,0x636e,0x632e,0x634e,0x636e,0x636e,0x634e,0x6b8f,0x6b8e,0x6baf,0x7c10,0x73cf,0x6baf,0x73f0,0x6baf,0x6b6e,0x634e,0x634e,0x530c,0x6bcf,0x638e,0x530c,0x5b2c,0x5b4d,0x636e,0x636e,0x634e,0x636e,0x636e,0x5b2d,0x5b2e,0x5b4e,0x52ec,0x52cb,0x52cb,0x4a8a, +0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x630c,0x5aeb,0x5aeb,0x630c,0x5aec,0x634d,0x738e,0x738e,0x6b4d,0x6b4d,0x6b6d,0x632d,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x632d,0x634d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x632d,0x6b2d,0x6b4d,0x738e,0x6b8e,0x6b8e,0x73cf,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73ef,0x7c10,0x7c10,0x73f0,0x7c30,0x7c30,0x73ef,0x73cf,0x73f0,0x73f0,0x73af,0x7bd0,0x8451,0x8452,0x8c92,0x94b3,0x7c10,0x7410,0x7c31,0x7c11,0x7c11,0x8431,0x8452,0x8472,0x8472,0x8472,0x8472,0x8cb3,0x8cf3,0x8cd3,0x94f4,0x8cb3,0x94f4,0x9cf4,0x9d15,0x9d15,0x8cb3,0x8cb3,0x8cd4,0x8493,0x8cd4,0x9515,0x94f4,0x8cd4,0x94d4,0x9d35,0xad96,0xad96,0xa576,0x9d36,0x9515,0x94f5,0x9514,0xadb7,0x9d35,0xa576,0xad76,0xa536,0xa597,0xa597,0xadb7,0xadb7,0xadd8,0xbe39,0xb619,0xadf8,0xadd8,0xad97,0x1082,0x1082,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x18e3,0x18e4,0x20e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e4,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x3186,0xadd8,0xadd8,0xa597,0xa597,0xadd8,0xadd8,0xb619,0xb5d8,0xa556,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xadb7,0x9515,0x9d36,0x94f5,0x94d4,0x8cf4,0x9515,0x8cb3,0x8cb4,0x8493,0x8492,0x7c31,0xadb7,0xb5b7,0x8452,0x8cd4,0x94f4,0x8cb4,0x8473,0x8452,0x8472,0x8472,0x7c31,0x8472,0x84b3,0x8493,0x8c93,0x7c32,0x7c52,0x7c52,0x8473,0x8472,0x7c52,0x8452,0x7c11,0x7c11,0x7c31,0x7c31,0x7c11,0x8431,0x7c11,0x7c11,0x7c31,0x7c31,0x7411,0x73f0,0x6bf0,0x73f1,0x6bf0,0x6bcf,0x7410,0x6bf0,0x73d0,0x7410,0x6bcf,0x73ef,0x73ef,0x6bcf,0x6baf,0x636e,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x6b6e,0x6b8e,0x636e,0x638e,0x73ef,0x73cf,0x6baf,0x73f0,0x73af,0x6b8e,0x634e,0x634e,0x5b4e,0x636e,0x6bae,0x6b8e,0x5b2d,0x5b4d,0x5b2c,0x5b2d,0x636e,0x634d,0x5b4d,0x530d,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x52ec,0x4aab, +0x6b6d,0x6b4d,0x5aec,0x5aec,0x5aec,0x5aeb,0x630c,0x630c,0x632c,0x634c,0x630c,0x630c,0x738e,0x6b8e,0x6b6d,0x634d,0x5b2c,0x5b2c,0x5b0c,0x630c,0x5b2c,0x632c,0x632c,0x632d,0x6b6d,0x634d,0x634c,0x632c,0x632c,0x632c,0x634d,0x634d,0x634d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x636e,0x6b6e,0x6b8f,0x6b8e,0x73af,0x73af,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73af,0x73af,0x7bf0,0x73cf,0x6bcf,0x73ef,0x73af,0x7bcf,0x8431,0x7bf0,0x7c10,0x73d0,0x8452,0x8452,0x7c51,0x7410,0x7c11,0x7c31,0x8452,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x94f4,0x9d14,0x9d14,0x9514,0x8cb3,0x8493,0x94d4,0x9d15,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x9535,0x9d55,0x9535,0x9515,0x94f5,0x94f5,0x94f4,0x8cf4,0xa556,0x9d35,0xa556,0xadb7,0xad97,0xad97,0xa577,0xa577,0xadb7,0xb5f8,0xadb7,0xadd8,0xb5f9,0xadb8,0xa577,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x2104,0x18e3,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0xb5f9,0xadd8,0xadb7,0xa597,0xa596,0xa597,0xb5f9,0xb5d8,0xa556,0xadb7,0xa576,0xa576,0xadd8,0xb5f8,0xa597,0xa577,0x9515,0x8493,0x8cb3,0x8cd4,0x94f4,0x94f4,0x84b3,0x8493,0x8473,0x8472,0x8472,0x8cb4,0x8cb3,0x8cb3,0x94f5,0x94f4,0x8452,0x8452,0x7c32,0x7c31,0x7411,0x7c11,0x8472,0x7c52,0x8493,0x8493,0x7c52,0x8452,0x8493,0x8cb3,0x7c51,0x7c52,0x8431,0x7c11,0x8431,0x8431,0x8452,0x7c11,0x7c11,0x73f0,0x7411,0x7c32,0x7c31,0x7c31,0x7411,0x73f1,0x73f0,0x73f0,0x7431,0x7431,0x73f0,0x7410,0x6baf,0x6baf,0x73cf,0x6bcf,0x6baf,0x638e,0x73f0,0x63af,0x636e,0x6baf,0x73d0,0x6baf,0x6b8f,0x636e,0x6b8f,0x6b6e,0x636e,0x73cf,0x73cf,0x6baf,0x73d0,0x6bcf,0x638e,0x636e,0x5b4d,0x5b6e,0x5b4d,0x638e,0x6b8e,0x7bcf,0x6b8e,0x5aec,0x52ec,0x634d,0x5b4d,0x5b4d,0x530c,0x5b2d,0x6b8e,0x632d,0x5b2c,0x530c,0x52ec, +0x6b4d,0x630c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x6b6d,0x73ae,0x634d,0x632c,0x632c,0x634c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632d,0x6b6e,0x634d,0x632c,0x632c,0x632c,0x6b4d,0x6b2d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x634e,0x6b4e,0x634d,0x636e,0x634d,0x6b6e,0x6b8f,0x73af,0x73cf,0x73cf,0x73cf,0x7bef,0x73ef,0x73cf,0x73af,0x73af,0x7bd0,0x7bf0,0x73ef,0x73ef,0x73cf,0x7bf0,0x8451,0x73cf,0x73f0,0x73f0,0x73f0,0x8452,0x8492,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x8452,0x7c32,0x8452,0x8c73,0x8cb3,0x8cb3,0x94d4,0x94f4,0x9515,0x9d15,0x9d35,0x9514,0x8cb3,0x8cd4,0xa576,0xa577,0x8cf4,0x94f4,0x94d4,0x9514,0x94f4,0x8cd4,0x9515,0x9515,0x8d15,0x9515,0x94f5,0x9536,0x94f5,0x94f4,0x9d36,0x9d36,0x9d56,0xadd7,0xb5f8,0xa597,0xa576,0xa556,0xb619,0xb5f8,0xadd8,0xadd8,0xadd8,0xadb8,0xad97,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2104,0x2104,0x2124,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x20e4,0x18c3,0x18e4,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x20e3,0x20e3,0x18c3,0x20e4,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2103,0x31a6,0xbe3a,0xb619,0xb5f9,0xa577,0x9d35,0x9d56,0xa576,0xadd8,0xadd8,0xadb7,0xadb8,0xadd8,0xadd8,0xadb7,0xa577,0xa597,0x8cd4,0x8493,0x8cb3,0x8cb4,0x94d4,0x94d4,0x8cb3,0x8493,0x7c72,0x8452,0x7c11,0x7c32,0x8472,0x8cb3,0x94f4,0x9514,0x8cd4,0x8493,0x8473,0x7c11,0x7410,0x7c31,0x7c31,0x7c31,0x8472,0x8472,0x8472,0x8493,0x8492,0x8cb3,0x8452,0x7c11,0x7c11,0x7c31,0x8451,0x7410,0x8472,0x8472,0x73f0,0x7410,0x6bd0,0x7c31,0x7c31,0x7c31,0x7c11,0x73f0,0x73d0,0x7410,0x7c31,0x7411,0x7c11,0x73f1,0x6b8f,0x6baf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x73f0,0x6baf,0x638e,0x638f,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8e,0x634e,0x636f,0x6bcf,0x6bcf,0x6baf,0x73d0,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530d,0x6b8e,0x6b6e,0x73af,0x7bf0,0x632d,0x5b2c,0x5b0c,0x530c,0x5b2d,0x5b4d,0x634d,0x6b8e,0x6b8e,0x5b2d,0x52ec,0x52cc, +0x634c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x630c,0x6b4d,0x6b6e,0x6b6e,0x630c,0x630c,0x632c,0x5b2c,0x630c,0x630c,0x632c,0x632d,0x630c,0x5b0c,0x632d,0x636d,0x5b2c,0x630c,0x634c,0x632c,0x632d,0x632d,0x5b0c,0x632d,0x6b4d,0x632d,0x6b4e,0x634e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x73cf,0x73cf,0x7bcf,0x73f0,0x73ef,0x7c30,0x7c31,0x73f0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x73f0,0x73cf,0x6baf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73f0,0x7410,0x7c30,0x8451,0x8452,0x8452,0x7c51,0x8451,0x8472,0x8472,0x8c73,0x8c93,0x94d4,0x8cd3,0x94f4,0x94f4,0x9d15,0x9d15,0x9d15,0x9d15,0x8cd4,0x9d35,0xad97,0x9515,0x8cd3,0x94d4,0x8cd4,0x8cd4,0x8cd4,0x94f4,0x9515,0x9515,0x9515,0x9535,0x94f4,0x9515,0x9515,0x9515,0x9d35,0x9d15,0x9d56,0xa576,0xadb7,0xadb7,0x9d56,0xadd8,0xb619,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xb5d8,0x18c3,0x2124,0x31a6,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2124,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2925,0x2945,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2965,0x2104,0x2104,0x2125,0x2124,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2124,0x2125,0x2945,0x2945,0x2965,0x2945,0x3186,0x3165,0x2965,0x2945,0x2945,0x2124,0x2945,0x2945,0x2125,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x3166,0x2104,0x2104,0x31a6,0xb619,0xb5f9,0xbe3a,0xadd8,0x9d36,0x9d76,0xa576,0xb5f8,0xb5f8,0xa597,0xadd8,0xadd8,0xadf8,0xa597,0xa577,0x94d4,0x94f4,0x8cb4,0x8cb4,0x8cb4,0x94f4,0x8cb3,0x8cd4,0x8cd4,0x8473,0x8472,0x7c32,0x7c52,0x8473,0x8493,0x8cd4,0x8cd4,0x8493,0x84b3,0x7c31,0x7c31,0x7c11,0x7411,0x7411,0x7c11,0x7c11,0x8472,0x9d15,0x7c52,0x8472,0x8c93,0x8452,0x7411,0x7c11,0x7c31,0x7c31,0x7c31,0x7c31,0x8472,0x7410,0x73f0,0x73f0,0x7c11,0x73f0,0x73f0,0x7c11,0x73f0,0x6bd0,0x6bd0,0x7411,0x7411,0x7c11,0x73f0,0x73af,0x73f0,0x7c11,0x73cf,0x6b8f,0x73af,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x636e,0x6bcf,0x6baf,0x638e,0x6baf,0x638e,0x638e,0x6baf,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530c,0x636e,0x73cf,0x6b8e,0x73d0,0x636e,0x5b2d,0x5b2d,0x5aeb,0x52eb,0x5b0c,0x634d,0x636e,0x6b6e,0x634e,0x5aec,0x52ab, +0x632c,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aec,0x632d,0x6b6e,0x630c,0x5aec,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632d,0x632d,0x630c,0x5b0c,0x634d,0x636d,0x634d,0x632c,0x632c,0x5b2c,0x5b2c,0x5b2d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8f,0x6b8e,0x6baf,0x73cf,0x73cf,0x73cf,0x73cf,0x73f0,0x7c30,0x7c31,0x7411,0x7c11,0x7c11,0x7c11,0x7c11,0x73f0,0x73d0,0x73d0,0x73cf,0x6baf,0x73cf,0x73ef,0x73cf,0x73ef,0x73ef,0x73f0,0x7410,0x7c10,0x8431,0x8452,0x8cd3,0x8471,0x8451,0x8c93,0x8c73,0x8452,0x8c93,0x9514,0x9514,0x94f4,0xa555,0x9d35,0x9d15,0x9d15,0x9d15,0xa576,0x9d15,0x8cd4,0x8cd4,0x94f4,0x9515,0x94d4,0x8cb4,0x8cd4,0x94d4,0x9d15,0x9d35,0x9514,0x8cf4,0x9515,0x9d35,0x9d56,0x9d56,0x9d56,0xa556,0xad97,0xadd8,0xa597,0xa576,0xa597,0xa597,0xadb7,0xadd8,0xb5f8,0xb619,0xbe5a,0xb5d8,0x4a6a,0x632d,0x738d,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52cb,0x52ab,0x52ab,0x52ab,0x52cb,0x5acb,0x52aa,0x528a,0x526a,0x4a69,0x5269,0x5269,0x526a,0x528a,0x526a,0x528a,0x528a,0x5aaa,0x5aaa,0x528a,0x528a,0x528a,0x528a,0x5aab,0x5269,0x4a69,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a29,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x528a,0x526a,0x528a,0x528a,0x5acb,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4229,0x4229,0x4229,0x4208,0x4229,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x39e8,0x39e7,0x4208,0x4249,0x634d,0x6baf,0xb619,0xb619,0xb63a,0xadd8,0xa597,0xa5b7,0xa597,0xb5f8,0xadd8,0x9d36,0xa577,0xa5b7,0xa597,0xa5b7,0x9d56,0x8cb4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x94f4,0x84d4,0x84d3,0x9515,0x8cb4,0x8c93,0x8493,0x8472,0x8493,0x8cb4,0x8cb4,0x8cb4,0x8493,0x84b3,0x7c52,0x73f0,0x73f0,0x73f0,0x7c11,0x73d0,0x73f0,0x94b3,0x8c72,0x7c11,0x8493,0x8cb4,0x8452,0x7c31,0x7c52,0x7c52,0x8452,0x7c32,0x7411,0x7c11,0x7c11,0x7bf0,0x7c31,0x7c31,0x7411,0x6bd0,0x73f0,0x73f0,0x73d0,0x6bb0,0x6bd0,0x7c31,0x7c11,0x73ef,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x73d0,0x6b8f,0x6b8f,0x73af,0x634e,0x5b4d,0x636e,0x636d,0x6bcf,0x73ef,0x638e,0x638e,0x638e,0x638e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x634e,0x5b2d,0x636d,0x6b8e,0x6bae,0x636e,0x636e,0x5b0c,0x5b2c,0x5aeb,0x5acb,0x52cb,0x5b0c,0x636e,0x52ec,0x5aec,0x5b0c,0x52cb, +0x630c,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aec,0x632d,0x630c,0x62eb,0x630c,0x630c,0x632c,0x5b0c,0x52eb,0x5b0c,0x630c,0x634c,0x634c,0x632c,0x632d,0x634d,0x634d,0x634d,0x632c,0x5b2c,0x632c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x636d,0x6b8e,0x73af,0x6b8f,0x6b8e,0x6baf,0x6baf,0x6baf,0x73af,0x7bd0,0x73d0,0x73f0,0x73d0,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x7c11,0x73f0,0x7410,0x73f0,0x6bcf,0x6baf,0x73cf,0x73cf,0x73cf,0x7bf0,0x73cf,0x73f0,0x73f0,0x7c11,0x8432,0x8452,0x94f4,0x8c93,0x8c93,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x9515,0xa576,0xa596,0x9d35,0x9d15,0x9d56,0xa576,0x9515,0x8cd4,0x8cb3,0x8cb4,0x9515,0x9515,0x94d4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x8cf4,0x9515,0x9d56,0x9d35,0x9d35,0x9d76,0x9d55,0xa577,0xadb8,0xadb8,0xa597,0xa576,0xa577,0xa597,0xadb7,0xb5d8,0xadb7,0xb5f8,0xbe3a,0xbe39,0x52ab,0x8412,0x844f,0x4a89,0x4a49,0x4229,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e7,0x41e7,0x41e7,0x39c7,0x41c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41c7,0x41c7,0x39c7,0x39a7,0x39a7,0x39a6,0x39a7,0x3186,0x3166,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2925,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x3166,0x2966,0x3165,0x3166,0x31a6,0x3166,0x3186,0x3186,0x3186,0x3186,0x39a7,0x39c7,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e7,0x41e8,0x41e7,0x41e7,0x39c7,0x41e7,0x41e7,0x39c7,0x39c7,0x41e8,0x4208,0x41e7,0x4228,0x4207,0x4a28,0x4a28,0x4208,0x41e7,0x39c7,0x39c7,0x41e7,0x52aa,0x9d36,0x9d56,0xa5b8,0xb5f9,0xadb8,0xa577,0xadb8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d56,0x9d77,0xa577,0x9d56,0x9d36,0x94f4,0x9515,0x9535,0x8cb3,0x8cd4,0x9515,0x8cf4,0x8cb3,0x8cb3,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x8493,0x94f4,0x8cd4,0x8c93,0x8493,0x7c52,0x8472,0x8cd4,0x7c31,0x7410,0x7c31,0x7410,0x7411,0x7c31,0x7c31,0x7c32,0x8472,0x8493,0x8472,0x8492,0x8492,0x8452,0x8472,0x7c72,0x7c31,0x7410,0x7c31,0x73f0,0x7410,0x7c31,0x7c31,0x73f0,0x7c31,0x73f0,0x6bd0,0x6bcf,0x7410,0x7c52,0x7411,0x7410,0x73f0,0x73cf,0x73ef,0x7c30,0x7c31,0x73f0,0x6bcf,0x6b8e,0x636e,0x6baf,0x6b8e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x634d,0x636d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b2d,0x5b2c,0x52eb,0x5aeb,0x5aec,0x52ec,0x5b4d,0x530c,0x5b0c,0x5b2c,0x52eb, +0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52aa,0x52cb,0x5aeb,0x5aec,0x630c,0x630c,0x630c,0x5aec,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x632c,0x634d,0x634d,0x632c,0x632c,0x5b0c,0x632d,0x632d,0x636d,0x634d,0x634d,0x634d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738f,0x738e,0x73af,0x73af,0x73cf,0x73d0,0x73d0,0x8431,0x8c52,0x7c11,0x7c11,0x8452,0x8452,0x8451,0x8451,0x8451,0x8451,0x8451,0x7c31,0x7c10,0x73d0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c11,0x7c32,0x8c73,0x94d4,0x8472,0x8cd4,0x8cb3,0x8452,0x8493,0x8cb4,0x94d4,0x9d35,0xa576,0x9d56,0x9d35,0x9514,0x9d55,0x9d56,0x8cd3,0x8cd4,0x8cb3,0x9515,0x94f4,0x8cd4,0x8cb4,0x8cb3,0x94f4,0x94f5,0x8cd4,0x94f5,0x9515,0x94f5,0x8cd4,0x94f4,0x9d35,0x9d35,0x9d76,0xa576,0xa577,0xa597,0xa576,0xa576,0xad97,0xa597,0xadb7,0xadb7,0xb5d8,0xbe3a,0xc65a,0xc69b,0x630d,0x9cd5,0x94b1,0x52ab,0x4a4a,0x4229,0x4229,0x4209,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x4208,0x526a,0x528a,0x526a,0x4a49,0x526a,0x4a69,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x39e7,0x39a7,0x39e8,0x3186,0x3186,0x31a6,0x39a7,0x31a6,0x39c7,0x39a6,0x2945,0x2965,0x3186,0x31a6,0x39c7,0x39c7,0x31a6,0x39c7,0x4208,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x41e8,0x4a29,0x4a29,0x4a4a,0x524a,0x526a,0x528a,0x528a,0x5aab,0x5aab,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5a8b,0x5a8a,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5aab,0x5acb,0x62eb,0x62eb,0x62eb,0x6b0c,0x630b,0x62eb,0x5aab,0x62cb,0x6b2c,0x736e,0xa577,0xa598,0xa5b8,0xadd8,0xadb8,0x9d36,0xa577,0xadf8,0xadb8,0xadf8,0xa576,0xa597,0xa5b7,0xadb7,0xa577,0x9d35,0x8cd4,0x9515,0x9515,0x8493,0x84b3,0x8cf4,0x8493,0x8cb3,0x8cd4,0x8cb3,0x8c93,0x8cd4,0x8473,0x7c32,0x7c52,0x8cb3,0x8493,0x8452,0x7c32,0x8472,0x7c72,0x8493,0x7c31,0x7c31,0x7c31,0x7410,0x73f0,0x7431,0x7c72,0x8472,0x8492,0x8472,0x7c72,0x8472,0x8493,0x8452,0x7c11,0x7c31,0x8432,0x7c11,0x7c31,0x7c11,0x7c11,0x7c51,0x8471,0x73f0,0x73f0,0x7410,0x73f0,0x73f0,0x73f0,0x7411,0x7411,0x7411,0x7410,0x73ef,0x73ef,0x7c30,0x7410,0x73d0,0x6bcf,0x6b8f,0x6baf,0x6baf,0x638e,0x6bae,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x6b6e,0x636e,0x6b8f,0x6baf,0x6b6e,0x636e,0x636e,0x6baf,0x6baf,0x636e,0x634d,0x6b8e,0x6b6e,0x73af,0x6b8e,0x5b0c,0x5b0c,0x5b2c,0x52ec,0x52eb,0x5b0c,0x636e,0x5b4d,0x530c,0x52eb,0x52cb, +0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aaa,0x5aeb,0x630c,0x5b0c,0x5b0c,0x6b6d,0x6b4d,0x630c,0x630c,0x632c,0x630c,0x5b0c,0x5b0c,0x632c,0x634d,0x632c,0x632c,0x630c,0x632c,0x632d,0x634d,0x634d,0x632d,0x632d,0x634d,0x636d,0x6b8e,0x6b8e,0x8411,0x94b3,0x94b2,0x9492,0x8430,0x73ef,0x73cf,0x73cf,0x73af,0x7bef,0x9492,0x94b3,0x9cf3,0x9492,0x9cf4,0x9cf4,0x9d14,0xa514,0x9cf4,0x94b2,0x94d3,0x94d3,0x7c30,0x7c10,0x8c72,0x9cf4,0xa535,0xa555,0x9cf4,0x94d3,0x9cf4,0x94b3,0x7c31,0x8452,0x94d4,0x8472,0x8c73,0x8cb3,0x8472,0x8472,0x8cb4,0x94d4,0x9d15,0xa576,0x9d56,0x9515,0x9d35,0x9d35,0x9d35,0x94f4,0x8cd4,0x8cd4,0x94f4,0x9d15,0x8cd4,0x8493,0x8cb4,0x8cf4,0x94f4,0x9515,0x94f5,0x8cf4,0x94f4,0x94f4,0x8cb3,0x94f4,0x9515,0x9515,0xa556,0x9d56,0xa597,0xa597,0xa577,0xadb8,0xb5d8,0xa597,0xa577,0xadb8,0xb5f9,0xbe19,0xbe5a,0xbe5a,0x630e,0x9cf6,0x8c70,0x528a,0x4a49,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x630d,0x7baf,0x6b2d,0x5acb,0x738e,0x6b4c,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a29,0x52aa,0x4a69,0x4a6a,0x5acb,0x41e8,0x39c7,0x4229,0x528a,0x4a69,0x4229,0x52aa,0x3165,0x39c7,0x4a49,0x4208,0x4a49,0x526a,0x39c7,0x5acb,0x5acb,0x4a29,0x39c7,0x39c7,0x39e8,0x39e8,0x4208,0x4a4a,0x62ec,0x5aab,0x5aab,0x6b2d,0x5aab,0x62ec,0x62ec,0x62ec,0x6b2d,0x62cb,0x5a8a,0x5aab,0x62ec,0x62cc,0x62ec,0x6b2d,0x62ec,0x5aab,0x5aab,0x6b2d,0x632c,0x62ec,0x62ec,0x736e,0x6b0c,0x62cb,0x62eb,0x630c,0x738d,0x6b4d,0x734d,0x7bce,0x8410,0xa597,0xa597,0xa597,0xa597,0xadd8,0xa597,0xa576,0xadb7,0xadd8,0xa596,0x9d36,0xa597,0xa597,0x9d55,0x9d35,0x9d35,0x94f4,0x94f4,0x9515,0x8493,0x8493,0x94f4,0x8493,0x7c72,0x84b3,0x8cd4,0x94d4,0x8cd4,0x8cd4,0x8493,0x8493,0x8cd4,0x7c52,0x7c52,0x8452,0x7c52,0x7431,0x84b3,0x7c51,0x7c11,0x7c31,0x7c31,0x7c11,0x7c31,0x8472,0x8492,0x7c52,0x8cb3,0x8472,0x8493,0x8cb3,0x8472,0x7c31,0x7c31,0x7c11,0x7c11,0x7410,0x7c31,0x7c31,0x7c51,0x8472,0x73f0,0x6bf0,0x73f0,0x7411,0x73f0,0x73f0,0x7411,0x73f0,0x73d0,0x7410,0x7410,0x7410,0x7c11,0x73d0,0x73d0,0x73cf,0x6bcf,0x6baf,0x636e,0x636e,0x6b8e,0x6baf,0x6b8f,0x6b8e,0x636e,0x6b8e,0x6baf,0x73d0,0x636e,0x6b6e,0x636e,0x634d,0x636d,0x638e,0x6b8e,0x73cf,0x6b8e,0x73cf,0x6b8e,0x634d,0x634d,0x5aec,0x52cc,0x632d,0x5aec,0x5acb,0x632d,0x6b8e,0x52ec,0x52eb,0x5aec,0x52cb, +0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632d,0x6b4d,0x632c,0x738e,0x73ae,0x6b6d,0x630c,0x5aec,0x630c,0x630c,0x5aec,0x5aec,0x630c,0x632d,0x632d,0x634d,0x632c,0x632c,0x636d,0x634d,0x632c,0x632d,0x634d,0x632d,0x6b6e,0x738e,0x7bcf,0x9cb3,0xa4f3,0xa4f3,0x9cd3,0x9d14,0x8471,0x73ef,0x7bf0,0x7bd0,0x9472,0x8c71,0x94d3,0xad75,0x94b2,0x9492,0x9cd3,0xa4f3,0x9492,0xa514,0x9cd3,0x9472,0xadb6,0x9d55,0x8471,0x8c72,0x9cd3,0x9cd3,0xa535,0xb5d7,0x94d3,0xa575,0xadb6,0x8451,0x8c92,0x94f4,0x8431,0x8cb3,0x8cb3,0x8cb3,0x8473,0x8493,0x9d35,0x9d56,0x9d56,0x9d35,0x9d15,0x94d4,0x9515,0x9d56,0x94f4,0x94f4,0x9d15,0x9d56,0xa556,0x94f4,0x8cb3,0x94d4,0x8cf4,0x8cd4,0x9d15,0x9d15,0x8cb4,0x8cd4,0x8cb4,0x8cb3,0x9d14,0x94f4,0x94f4,0xa576,0xad97,0xad97,0xa576,0xadb7,0xad97,0xa577,0xa577,0xad97,0xad98,0xadd9,0xb5f9,0xb5f9,0xb5f9,0x630e,0xa516,0x844f,0x528a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x7390,0x8c72,0x736e,0x62ed,0x8c51,0x7bce,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x5acb,0x526a,0x4a29,0x630c,0x528a,0x5acb,0x4a4a,0x528b,0x52ac,0x5acb,0x39c7,0x632d,0x39a7,0x526b,0x62ec,0x5acb,0x62ec,0x5acb,0x5aab,0x738e,0x632d,0x4a49,0x39a7,0x39a7,0x39a7,0x39c8,0x4208,0x52ab,0x73af,0x6b2d,0x62ec,0x6b4e,0x5acc,0x7baf,0x738e,0x5aab,0x73af,0x736d,0x5acb,0x738f,0x736e,0x5aab,0x5aab,0x6b2d,0x738e,0x5aab,0x62ec,0x83d0,0x736e,0x5aab,0x5aab,0x738f,0x7bae,0x5aab,0x5a8b,0x5aab,0x630c,0x6b0c,0x6b0c,0x734d,0x83ef,0xadb8,0xadb7,0xa576,0x9d56,0xa597,0xb5f8,0xa536,0xad97,0xb5d8,0xadb7,0xa577,0xa597,0x9d56,0xa576,0x9d35,0x8cb3,0x9d15,0x94f4,0x9d35,0x9d15,0x8cf4,0x9515,0x8cd4,0x8473,0x8472,0x8cb3,0x94d3,0x8cb3,0x9514,0x9514,0x94f4,0x9515,0x8472,0x7c31,0x7c52,0x7c72,0x7431,0xa576,0x94f4,0x73d0,0x7411,0x7c31,0x7c11,0x7c31,0x94d3,0x94d4,0x8492,0x8452,0x8473,0x8493,0x8472,0x8472,0x8472,0x7c51,0x7c11,0x7c11,0x7411,0x7c31,0x7c11,0x73d0,0x7c11,0x73f0,0x6bf0,0x7410,0x7c51,0x7410,0x73cf,0x7c10,0x73f0,0x73d0,0x7410,0x73f0,0x73f0,0x7c31,0x73f0,0x6baf,0x73af,0x73af,0x6baf,0x6b8f,0x73d0,0x73f0,0x6b8f,0x73d0,0x6baf,0x63ae,0x6baf,0x73cf,0x73cf,0x634e,0x6b8e,0x636d,0x6b8e,0x638e,0x636d,0x636e,0x638e,0x6baf,0x73f0,0x636e,0x5b2d,0x5b2d,0x530c,0x5b0c,0x634e,0x5b2d,0x5aec,0x5b0c,0x636d,0x5aec,0x52cb,0x52cb,0x52cb, +0x630c,0x630c,0x5aeb,0x630c,0x5aec,0x5b0c,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x634d,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x632c,0x6b4d,0x6b4d,0x632d,0x632c,0x634d,0x636e,0x6b8e,0x636d,0x634c,0x6b6d,0x6b8e,0x6b8e,0x7bf0,0x8c51,0x9451,0x8c30,0x9c92,0x8c31,0xb5b6,0x9d54,0x7c31,0x8410,0x8410,0xa514,0x9491,0x94b1,0xa513,0xa513,0x9471,0x9492,0xb5b6,0xa534,0x9cf3,0x9471,0x9471,0xa514,0xbe18,0x8cb3,0x8c71,0xa534,0x94d2,0x8c71,0xad34,0x8c71,0xa534,0xb5d7,0x8452,0x9d35,0x8c93,0x8451,0x8472,0x8493,0x8492,0x8452,0x8cb3,0x9d15,0x9d55,0x9d35,0x9d15,0x94f4,0x8cb3,0x94f4,0x8cd4,0x8cb3,0x94d4,0x9cf5,0x9d36,0xa576,0x94f4,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x8cd4,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x9515,0x94f4,0x94f5,0xad97,0xb5d8,0xadd8,0xadd7,0xa5b7,0x9d36,0x9d36,0xa597,0xadd8,0xadd8,0xb619,0xbe3a,0xbe59,0xb5f8,0x632e,0xa516,0x842f,0x4a8a,0x4229,0x39e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x738f,0x8c31,0x6b4d,0x630d,0x8c92,0x73ce,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e8,0x630c,0x5acc,0x62cc,0x632d,0x39e8,0x6b6e,0x5aac,0x526a,0x528b,0x5aab,0x526a,0x62ed,0x4a49,0x5acc,0x6b2d,0x632d,0x62ec,0x5acc,0x6b4e,0x738f,0x630d,0x4a49,0x3186,0x3186,0x3186,0x3187,0x39c7,0x630c,0x73af,0x6b6e,0x630c,0x630d,0x5aab,0x6b4e,0x630c,0x526a,0x7bf0,0x7bcf,0x630d,0x9472,0x732d,0x5249,0x524a,0x528a,0x738e,0x6b0c,0x738e,0x9452,0x62cc,0x5a6a,0x526a,0x5acc,0x7bcf,0x6b0c,0x5a8b,0x5a6a,0x526a,0x62cb,0x62cb,0x62eb,0x736e,0xa577,0xadd8,0xadd8,0xa577,0x9d56,0xadd8,0xad97,0x9d56,0xadd7,0xb5d8,0xb5f8,0xa577,0x94f5,0xa576,0xa577,0x94d4,0x9d56,0x9d15,0x94d4,0x94f4,0x94f5,0x9515,0x8cd4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x8cb3,0x8cd3,0x9d14,0x9d35,0x94d4,0x8cb3,0x8493,0x7c52,0x7c72,0x73f0,0x9d36,0xa556,0x7c11,0x7411,0x7410,0x73f0,0x7411,0x8cd3,0x9d35,0x9514,0x8c93,0x8cb4,0x8c93,0x8492,0x8492,0x7c52,0x8452,0x7c11,0x73f1,0x73d0,0x73f0,0x7c11,0x73f0,0x73f0,0x73f0,0x6baf,0x6baf,0x6bcf,0x73ef,0x73cf,0x73f0,0x7410,0x73d0,0x73d0,0x73cf,0x73f0,0x73f0,0x73d0,0x73af,0x73d0,0x6baf,0x6bb0,0x73f0,0x73d0,0x6baf,0x6b8f,0x6baf,0x6bcf,0x6bcf,0x6baf,0x73cf,0x6bcf,0x73f0,0x6b8e,0x634e,0x6bae,0x638e,0x5b2c,0x634d,0x636d,0x6bae,0x6bcf,0x638e,0x638e,0x5b2d,0x5b0c,0x5b0d,0x634d,0x5b2c,0x636d,0x634d,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52ab, +0x5aeb,0x62ec,0x630c,0x62eb,0x630c,0x632c,0x6b8e,0x6b8e,0x6b6d,0x738e,0x6b8e,0x634d,0x632c,0x634c,0x634d,0x632c,0x630c,0x632c,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x634d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x73cf,0x8c52,0x9472,0x9471,0x9471,0x9cb2,0x9451,0xbdf8,0xadb6,0x8471,0x8431,0x94b3,0x9cd2,0x9450,0x9491,0x9cb2,0xb5b6,0x9d14,0x9472,0xb5b6,0xbe17,0x8471,0x8c71,0x9491,0x9492,0xbe18,0x9d14,0x8430,0xc618,0xad95,0x8c51,0xa4f4,0x9492,0xa534,0xadb6,0x7c31,0x9d15,0x8473,0x8472,0x8452,0x8472,0x8472,0x8452,0x94f4,0x9514,0x9d35,0x9d15,0x94f4,0x94d3,0x8cb2,0x9d34,0x8cf3,0x8493,0x8cb3,0x94b4,0x94d4,0x94f5,0x94f5,0x8cd4,0x8cb4,0x94f5,0x8cd4,0x8c93,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x8cd4,0x94f4,0x94f4,0x9515,0xad97,0xadb7,0xadd7,0xadd7,0xa597,0xa577,0xa577,0xa556,0xadb7,0xb639,0xc6bb,0xbe59,0xb618,0xbe19,0x6b2e,0xa536,0x840f,0x4a6a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x41e8,0x738f,0x8411,0x6b4d,0x630e,0x94b3,0x7bcf,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a49,0x5aec,0x6b6f,0x7bd0,0x5aec,0x4229,0x6b6e,0x5aec,0x4a6a,0x5acb,0x528b,0x8411,0x5acc,0x5aab,0x630d,0x62ec,0x4a6a,0x4a4a,0x630d,0x5aac,0x6b6e,0x62ec,0x4a49,0x3186,0x3186,0x3186,0x3166,0x3186,0x5aab,0x6b2d,0x630c,0x5acc,0x738e,0x62cb,0x524a,0x524a,0x5acb,0x8c52,0x83af,0x6b4d,0x9451,0x5a6a,0x4a29,0x4a09,0x4a09,0x6b6e,0x738e,0x73cf,0x8411,0x5a6a,0x524a,0x4a4a,0x4a6a,0x6b6e,0x6b4d,0x5a8a,0x5a8a,0x5a8a,0x5aab,0x62ab,0x62cb,0x6b2d,0x9d56,0xa5b8,0xa5b8,0x9d77,0x9d56,0xadb7,0xadb7,0x9d77,0xadd8,0xb5f8,0xa597,0x9d56,0x9d56,0xadb8,0xad97,0x9515,0xa576,0xa596,0x9d76,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x94d4,0x94d4,0x8472,0x8cb3,0x9d35,0x94f4,0x8cb3,0x8473,0x7c52,0x8452,0x7c11,0x94f5,0x8c93,0x7c52,0x7c31,0x7c52,0x7431,0x7431,0x7c72,0x8cd3,0x8cd3,0x8492,0x8472,0x8493,0x8473,0x8472,0x8472,0x7c11,0x73d0,0x7bf1,0x7bf1,0x73f0,0x7bf0,0x7c11,0x7bf0,0x73f0,0x73f0,0x6bcf,0x6baf,0x73cf,0x7410,0x7c31,0x7bf0,0x73d0,0x73f0,0x73d0,0x73d0,0x73d0,0x7bf0,0x73af,0x6b8f,0x6baf,0x73b0,0x73d0,0x6baf,0x638e,0x636e,0x6b8f,0x73cf,0x73cf,0x73cf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x636e,0x636e,0x5b4d,0x634d,0x636d,0x73ef,0x6bcf,0x6baf,0x634e,0x5b2d,0x5b0d,0x632d,0x632d,0x5b2d,0x5b2c,0x636d,0x6b8e,0x5b0c,0x52ec,0x5aeb,0x52eb, +0x5aeb,0x62ec,0x5aeb,0x62eb,0x632c,0x6b6d,0x738e,0x6b4d,0x73ae,0x73ce,0x636d,0x632c,0x634c,0x634c,0x5b0c,0x5b0c,0x630c,0x632c,0x630c,0x632c,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x634d,0x634d,0x6b6e,0x7bd0,0x8c51,0x8c51,0x8c30,0x8c10,0x9cd2,0x9451,0xb5b6,0xb5f7,0x8cb2,0x8472,0x9cd3,0x9471,0x9cb1,0xa4f3,0x8c30,0xb5b6,0xa575,0x7bd0,0xa515,0xbe18,0x73ef,0x94b2,0xad34,0x8c30,0xbdf7,0xa575,0x8430,0xa554,0x94b2,0x9491,0xb576,0x9492,0xa554,0xb5d7,0x7c52,0x8cb3,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb4,0x9d35,0x94f4,0x8c93,0x8c93,0x8cb3,0x8cb3,0x94f4,0x9535,0x8cd3,0x7c52,0x8c92,0x94b3,0x94d4,0x94f4,0x94d4,0x94f4,0x8cb4,0x84b3,0x8493,0x8493,0x8cb4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x94f5,0xa576,0xadd8,0xad97,0xa556,0xa556,0xa556,0xa577,0xa556,0xa556,0xc67a,0xb5f8,0xadd8,0xa577,0xa597,0xb5d9,0x632e,0xa537,0x840f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4a29,0x738f,0x8411,0x6b4d,0x630d,0x8c72,0x7bcf,0x4228,0x41e7,0x39c7,0x41c7,0x39c7,0x41c7,0x41c7,0x39c7,0x5aab,0x526a,0x52ac,0x5aec,0x4a6a,0x52ab,0x6b2d,0x5acc,0x52ab,0x5acb,0x4209,0x632d,0x4229,0x62ec,0x632d,0x5aab,0x528a,0x4a4a,0x630c,0x41e9,0x6b2d,0x5aec,0x4a49,0x3986,0x3986,0x3186,0x3186,0x3186,0x4a6a,0x5aab,0x4a49,0x4a4a,0x7bcf,0x6b0d,0x4a28,0x5aab,0x7baf,0x7bb0,0x62ab,0x632d,0x8410,0x5249,0x4a08,0x4a08,0x4a29,0x7baf,0x738e,0x6b4e,0x7baf,0x5a4a,0x524a,0x524a,0x528b,0x7bd0,0x736e,0x5a8b,0x5a8a,0x5aab,0x5acb,0x5a8a,0x628b,0x6b4e,0xa598,0xa5b8,0xa5b8,0xa5b8,0x9d77,0xadb8,0xadb8,0xadb8,0xadd8,0xb5f8,0xa576,0x9d35,0xa556,0xadb7,0xad97,0x9d56,0x9d55,0xadf8,0x9d76,0x8cd4,0x94f5,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x94d4,0x84b3,0x7c72,0x9515,0x8cd4,0x8c93,0x8cb3,0x8473,0x7c31,0x7c52,0x9d15,0x8452,0x7431,0x7411,0x7411,0x7c32,0x7c31,0x7c31,0x94b3,0x8c93,0x8472,0x7c51,0x7c31,0x8452,0x8473,0x8472,0x7411,0x7411,0x73f1,0x7c31,0x7c31,0x7c31,0x7c10,0x7c10,0x7bf0,0x73d0,0x6baf,0x6baf,0x73f0,0x7c31,0x7c31,0x7c10,0x73f0,0x7c11,0x73f0,0x73d0,0x73f0,0x7c11,0x8452,0x73d0,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8f,0x6baf,0x73cf,0x73d0,0x7c10,0x73ef,0x73f0,0x6baf,0x6b8f,0x6bae,0x6bae,0x6b6e,0x6b8e,0x6b8e,0x634d,0x636e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0c,0x5b0c,0x634d,0x636d,0x636d,0x5aec,0x5b0c, +0x630c,0x630c,0x630c,0x5aeb,0x632c,0x632c,0x6b4d,0x6b6d,0x6b8d,0x634d,0x634c,0x634c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x634d,0x6b6d,0x6b8e,0x632d,0x5b0d,0x6b4e,0x738f,0x7bf0,0x8c51,0x8410,0xa4f3,0x8c30,0x9cf3,0x9491,0xa4f3,0xbdf7,0x9d54,0x94d3,0x8c92,0x9471,0xa4f2,0xa513,0x9451,0xad34,0xad96,0x73af,0xad35,0xbdd7,0x7bef,0x9cb2,0x9cd3,0x8c10,0xb576,0xad96,0x8430,0x94b2,0x9492,0xad75,0xbdf7,0x8431,0xa555,0xb5f7,0x8452,0x8452,0x8432,0x8472,0x7c51,0x7c31,0x8472,0x94f4,0x9d15,0x8c93,0x8473,0x8452,0x8c93,0x8cb4,0x8cd4,0x8cb3,0x8cb3,0x7c31,0x8472,0x8cd3,0x8cd4,0x8cd4,0x8492,0x8cd4,0x8cb3,0x7c72,0x8472,0x8493,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x9cf5,0xa536,0xadb7,0xa5b7,0xadb7,0xa576,0x9d56,0x9d36,0x9d56,0xa576,0xbe39,0xbe39,0xa597,0xa597,0xadb8,0xb5f9,0xb5f9,0x632e,0xa537,0x7c0f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x5aab,0x6b4e,0x8432,0x6b2d,0x630d,0x9492,0x73af,0x5269,0x41c7,0x39c7,0x39e7,0x39c7,0x39e7,0x41e7,0x39c8,0x632d,0x528a,0x4229,0x4209,0x4a6a,0x630c,0x6b2d,0x5acc,0x630d,0x52ab,0x4a4a,0x39c7,0x39e8,0x5acc,0x6b4e,0x5aab,0x630d,0x526b,0x62ec,0x4a4a,0x630c,0x5aec,0x4a49,0x3986,0x3987,0x3186,0x3186,0x39c7,0x5aec,0x630c,0x4a29,0x4a4a,0x7bf0,0x6b2d,0x5aab,0x736e,0x83d0,0x5aab,0x4a49,0x528a,0x6b6e,0x62cb,0x5249,0x4a49,0x5acb,0x8c31,0x6b2d,0x5aec,0x7bf0,0x62cb,0x526a,0x526a,0x630d,0x9493,0x732d,0x5a8b,0x5a8b,0x62cb,0x62cb,0x5a8a,0x5a8a,0x6b2d,0xad98,0xa598,0xa5b8,0xadd8,0xa597,0xa597,0xadb7,0xb5f9,0xb5f9,0x9d56,0x9515,0x9d56,0x9d56,0xad97,0xbe19,0xadd8,0x9d15,0x9d36,0x8cd4,0x8cd4,0x9515,0x94f4,0x8c93,0x8cb3,0x8c93,0x8493,0x84b3,0x84b3,0x8cf4,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8472,0x7c32,0x7c32,0x94f4,0x8492,0x7410,0x73f0,0x7c11,0x8452,0x7c51,0x7411,0x8c93,0x8cd3,0x8492,0x7c11,0x7c11,0x7c52,0x8472,0x8472,0x7c31,0x73f0,0x8452,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x7bf0,0x7c11,0x73d0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x7411,0x6bf0,0x7410,0x7c31,0x73f0,0x73f0,0x7431,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x73b0,0x73d0,0x73cf,0x73cf,0x7410,0x6bcf,0x6baf,0x6baf,0x73cf,0x73cf,0x6b8e,0x6b8e,0x636d,0x638e,0x636e,0x73af,0x6b6e,0x632e,0x630d,0x5b0d,0x5b2d,0x52ec,0x6b8e,0x73ae,0x5aec,0x630c,0x634c,0x73cf,0x634d,0x5b0c, +0x5aeb,0x634d,0x632c,0x5aeb,0x630c,0x630c,0x634c,0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x634c,0x6b8e,0x634d,0x630d,0x6b6e,0x7bcf,0x9471,0x9451,0x9471,0xb5b6,0x840f,0xa534,0x9cf3,0x8c10,0xad75,0xadb6,0x9d54,0x8c91,0x9471,0x9cb2,0x9cd2,0x9cb2,0xa4f3,0xad95,0x7bce,0xb575,0xb595,0x840f,0x9cd2,0x8c72,0x8c51,0x9cd3,0xb596,0x8410,0xa4f4,0x9492,0xad75,0xbdf7,0x8410,0xad55,0xbe18,0x8472,0x7c31,0x7c11,0x8452,0x8452,0x7c31,0x8432,0x8c93,0x94d4,0x8cb3,0x8452,0x8c72,0x8c93,0x8c93,0x8473,0x8473,0x8472,0x8492,0x8c93,0x8c93,0x8492,0x8472,0x8472,0x8492,0x8cb4,0x8493,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x8cb4,0x94f4,0x94d4,0x9d15,0xa576,0xa597,0xa576,0x9d56,0xa576,0x9d36,0x9d56,0xad97,0xc67a,0xbe5a,0xa597,0xadd8,0xad97,0xadd8,0xb619,0xbe19,0x632e,0xa537,0x7bef,0x4a6a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x4208,0x4208,0x4208,0x4209,0x632d,0x6b2e,0x8c32,0x630d,0x630e,0x9cf4,0x738e,0x5aab,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41e8,0x5acc,0x5acb,0x4208,0x39e8,0x528b,0x5acc,0x5aec,0x528b,0x5aec,0x526a,0x5aab,0x3166,0x4229,0x528b,0x632d,0x5aab,0x5acc,0x4a29,0x52ab,0x5aec,0x5aab,0x5aec,0x4a29,0x3986,0x39a6,0x3186,0x3186,0x39a7,0x528a,0x630c,0x5aab,0x5a8b,0x7bb0,0x62cc,0x62cc,0x62ec,0x62cc,0x5a8b,0x630c,0x4a09,0x526a,0x5aeb,0x5aaa,0x5aaa,0x630d,0x736e,0x5a8b,0x526a,0x6b2d,0x6b2d,0x5aab,0x5aab,0x6b4e,0x83f0,0x62cc,0x5a8b,0x5a8b,0x62cc,0x62ec,0x5aab,0x5a8b,0x6b2e,0xadd8,0xadb8,0xa5b8,0xadb8,0xadb8,0xa597,0xbe19,0xbe39,0xc65a,0x9d35,0x94f5,0x94f4,0xa556,0xa556,0xbe19,0xb5f9,0xadd8,0x9515,0x9515,0x9d35,0x9d35,0x94f5,0x8c93,0x94f4,0x8cd4,0x8cb3,0x8493,0x8c93,0x8c93,0x94d4,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x7c52,0x7c31,0x8472,0x8c92,0x8472,0x7c31,0x7c31,0x8452,0x7c31,0x7411,0x8472,0x8472,0x7411,0x7c31,0x7411,0x7c32,0x8452,0x7c52,0x7c52,0x7c52,0x7c31,0x7431,0x6bf0,0x6bf0,0x7410,0x7c31,0x73f0,0x7c31,0x73d0,0x73f0,0x6baf,0x73f0,0x7410,0x6bf0,0x6bcf,0x73f0,0x7c11,0x7410,0x73f0,0x7410,0x6bcf,0x6baf,0x6baf,0x638e,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73cf,0x73d0,0x73d0,0x6baf,0x73f0,0x7c10,0x6bae,0x636e,0x636e,0x6b8e,0x6b8e,0x73af,0x6b6e,0x5b2d,0x5b2d,0x5b0d,0x632d,0x6b8e,0x6b8e,0x6b8e,0x5b0d,0x632c,0x5b0c,0x636d,0x5b4d,0x5b0c, +0x632c,0x630c,0x5b0b,0x5aeb,0x630c,0x630c,0x634c,0x632c,0x5aeb,0x630c,0x5b0b,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x632c,0x630c,0x5aeb,0x630c,0x6b4d,0x632c,0x630c,0x630c,0x6b8e,0x6b6d,0x6b4e,0x738f,0x8c10,0x9451,0x8c30,0xad55,0xad75,0x7bcf,0xa514,0xad75,0x8c31,0x9492,0x9d13,0xa595,0x94b2,0x9471,0xad34,0xad54,0x94b1,0x94b1,0xad54,0x8c30,0xa513,0xa513,0x8c71,0xad95,0xa555,0x8c91,0x8c51,0x9cd3,0x8410,0xb5b6,0x9cf4,0x8c92,0xad76,0x9451,0xad14,0xbdd7,0x8472,0x8451,0x8431,0x7c31,0x7c31,0x8431,0x7c11,0x8451,0x8c93,0x8c93,0x8452,0x8472,0x8472,0x8452,0x8c93,0x7c31,0x7c52,0x8493,0x8c73,0x8c72,0x8452,0x8452,0x8472,0x8452,0x8c93,0x94f4,0x8cd3,0x8c93,0x8c93,0x8cb3,0x94f4,0x94d4,0x94f4,0x9d56,0x9d35,0xa576,0x9d35,0x9d15,0xa535,0xa535,0xbe19,0xc69b,0xbe19,0xad98,0xa598,0xadb8,0xadb8,0xb5d8,0xbdf8,0xc67a,0x630e,0xa557,0x7bee,0x4a8a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x5acb,0x5aec,0x630e,0x738f,0x6b2d,0x630e,0x83f1,0x738e,0x5aab,0x4a49,0x41e7,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x4229,0x4209,0x39c7,0x31a7,0x41e8,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x3166,0x39e8,0x4208,0x4208,0x41e8,0x4209,0x39a7,0x41e8,0x4a29,0x4208,0x4a2a,0x41e8,0x39a7,0x39a7,0x3186,0x3186,0x3186,0x39a7,0x4a49,0x4a49,0x526a,0x5aab,0x522a,0x524a,0x4a29,0x4a09,0x524a,0x62cb,0x4a08,0x4a08,0x5249,0x5249,0x526a,0x5a8b,0x526a,0x5229,0x4a29,0x526a,0x5aab,0x5aab,0x5aab,0x62cc,0x62ec,0x5a8b,0x5a8b,0x5aab,0x62ec,0x62ec,0x62ec,0x62ab,0x6b4d,0xb5f9,0xa5b8,0xa597,0xadb8,0xad97,0xa597,0xb5d8,0xb5d8,0xbe39,0xad97,0x9d36,0xa556,0xad97,0xa576,0xa556,0xadd8,0xadd8,0xa576,0x94f4,0x9515,0x9d36,0x94f4,0x94f4,0x9d35,0x8cf4,0x8cf4,0x8cf4,0x8cb3,0x8473,0x8493,0x8493,0x8cb3,0x8cb4,0x7c32,0x8473,0x8473,0x7c32,0x7c52,0x8452,0x8472,0x7c52,0x73f1,0x7c31,0x7c11,0x7411,0x7c52,0x7411,0x7c11,0x7410,0x7c31,0x8472,0x8473,0x7c52,0x8473,0x8493,0x7411,0x7411,0x73f0,0x73f0,0x73ef,0x7c30,0x7410,0x7410,0x73f0,0x6bcf,0x73cf,0x7c31,0x7410,0x73f0,0x73f0,0x7bf0,0x7c11,0x7410,0x6bef,0x7410,0x7c30,0x73cf,0x6b8e,0x636e,0x6baf,0x73cf,0x6b8f,0x6baf,0x6b8f,0x73af,0x73af,0x73cf,0x73b0,0x73d0,0x73d0,0x73f0,0x6baf,0x6b8f,0x6b8f,0x6b6e,0x6b6e,0x73af,0x73af,0x6baf,0x6b8e,0x636d,0x636e,0x5b2d,0x636d,0x7bf0,0x5b0d,0x5b2d,0x634e,0x5b0d,0x5b0c,0x530c,0x52eb,0x5b0c, +0x5aeb,0x5aeb,0x5b0c,0x5aec,0x5aeb,0x5aeb,0x630c,0x632c,0x5aeb,0x5aeb,0x62ec,0x630c,0x5b0c,0x634d,0x5b0c,0x5aec,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x632c,0x634d,0x6b4d,0x6b6e,0x7bcf,0x8c31,0x9cd2,0xa534,0xa535,0x8cb2,0x8c31,0xad34,0xad75,0x94b2,0x8c71,0x8c71,0xad54,0x9cd3,0x9492,0xad96,0xa575,0x94d3,0x9491,0x9cd2,0x9492,0x9cd3,0x9cf3,0xa534,0xb5d6,0x94d2,0x94b2,0x94b2,0x94d2,0x94d3,0xb5f7,0xa555,0x8c72,0x9cf4,0x9c93,0xad76,0xadb7,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x7c32,0x7c51,0x7c31,0x7c31,0x8472,0x8431,0x8451,0x8492,0x8493,0x8472,0x8492,0x8472,0x7c51,0x8472,0x8c92,0x8472,0x8472,0x8493,0x84b3,0x9535,0x8cf4,0x8472,0x8493,0x8473,0x8493,0x8cb3,0x94f4,0x9d55,0x9d55,0x9d76,0xa576,0xa576,0x9d35,0xad96,0xce9a,0xce9a,0xb619,0xb5f9,0xa5b7,0xadd8,0xadf8,0xbe3a,0xc65a,0xbe19,0xc67a,0x630e,0xad57,0x7bee,0x4a8a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4a49,0x528a,0x5acb,0x52ab,0x526a,0x630d,0x6b4d,0x6b2e,0x62ec,0x630d,0x5aab,0x526a,0x4a28,0x41e8,0x41e7,0x39c7,0x39c7,0x4a09,0x528a,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x41e8,0x41e8,0x39c7,0x39a6,0x39a7,0x39c7,0x39a7,0x39a7,0x39c7,0x39c7,0x41e8,0x4208,0x41e8,0x41e8,0x39c7,0x41e8,0x41e8,0x41e8,0x4a29,0x4a29,0x4a49,0x4a49,0x4a29,0x5249,0x4a29,0x4a29,0x4a29,0x5249,0x4a49,0x5249,0x4a29,0x5249,0x5269,0x5269,0x5249,0x5269,0x526a,0x528a,0x5a8a,0x5a8a,0x5aab,0x5a8b,0x62cb,0x62cc,0x5a8b,0x62ab,0x62ec,0x62ec,0x62ec,0x62cb,0x6b2d,0xadd8,0xadd8,0xa597,0xa5b8,0xadf8,0xadd8,0xa597,0xa597,0xb5f8,0xadb7,0xa576,0xb5f8,0xadb7,0xadb7,0xa597,0xa576,0xa576,0xa597,0x9d36,0x9515,0x8cf5,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x84b3,0x8493,0x8cb4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x7c32,0x8473,0x8472,0x8493,0x7c72,0x7c52,0x7c32,0x7c31,0x7c52,0x7c52,0x7411,0x6bf0,0x73f1,0x73f0,0x7c11,0x7c32,0x84b4,0x84b4,0x7c52,0x8493,0x7c52,0x7411,0x7411,0x6bb0,0x6bb0,0x6bd0,0x6bb0,0x6bd0,0x6bd0,0x63af,0x636f,0x6bb0,0x6c11,0x6bd0,0x6bf0,0x6bd0,0x636f,0x63b0,0x6bd0,0x5b8f,0x6bd0,0x6b90,0x5b4f,0x5b4e,0x5b4e,0x638f,0x63af,0x5b4e,0x4aed,0x530d,0x6bcf,0x5b6e,0x5b4d,0x5b4e,0x5b4e,0x5b6e,0x63af,0x5b8e,0x532d,0x532d,0x532c,0x5b6d,0x638d,0x5b6d,0x534d,0x4b2c,0x534c,0x536d,0x536d,0x4b0b,0x42eb,0x4b0b,0x430b,0x4b2b,0x4b2c,0x4b2b,0x430a,0x4b2b,0x4b2b, +0x5aaa,0x5aca,0x62eb,0x5aca,0x5aea,0x5aeb,0x630c,0x630c,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632c,0x630c,0x62ec,0x630c,0x62eb,0x62eb,0x630c,0x630c,0x62eb,0x62eb,0x62cb,0x62ec,0x6b2d,0x632d,0x632d,0x73af,0x8431,0x9cd3,0x8c92,0x7c10,0x7bf0,0x9472,0x9cb3,0x8451,0x7c10,0x8451,0x8c51,0x9492,0x94b3,0x9cd3,0x94b3,0x8c72,0x8c71,0x9cd3,0xa534,0x9cf3,0x9d13,0x9d13,0x9cf3,0x94b3,0x8431,0x8c72,0x9cd4,0xa515,0xa535,0x9cf3,0x8c72,0x9492,0x9cb3,0x9492,0x8cb2,0x8492,0x8431,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8431,0x8410,0x8431,0x8c31,0x8410,0x8410,0x8c52,0x94b3,0x8431,0xa514,0x94b3,0x8431,0x8c51,0x8410,0x8c31,0x8c10,0x8c31,0x8c51,0x9492,0x8c92,0x8c51,0x8c51,0x9472,0x9472,0x9473,0x94b3,0x9cf4,0x9cf4,0x9cd3,0xa4d3,0xa4d4,0xb535,0xd65a,0xce3a,0xb597,0xad76,0xad77,0xad56,0xb597,0xbdb8,0xc5f9,0xc5f9,0xc5f9,0xbdd8,0x630f,0xad78,0x7bce,0x528a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x4209,0x630d,0x52aa,0x528a,0x528a,0x526a,0x41e8,0x630d,0x6b6d,0x6b2e,0x5a8a,0x4a49,0x528a,0x526a,0x4a49,0x4229,0x4a49,0x39c7,0x39a7,0x528b,0x7bcf,0x5a68,0x6247,0x6226,0x6206,0x61e6,0x59c6,0x59c6,0x59c6,0x59c6,0x6207,0x6207,0x61e7,0x59c6,0x59c6,0x59c6,0x59c7,0x59e8,0x59c7,0x59c7,0x51e7,0x5208,0x5a49,0x5229,0x4a08,0x41e8,0x4208,0x4208,0x4209,0x4a29,0x4a4a,0x4a29,0x4a4a,0x4a4a,0x526a,0x4a4a,0x4209,0x4209,0x4209,0x4229,0x4a28,0x4228,0x4a28,0x4a48,0x4248,0x4a48,0x4a68,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5a89,0x6b2d,0x6b2d,0x5a8b,0x62cb,0x62ec,0x630c,0x62ec,0x5a8b,0x5aac,0x7c54,0x7c34,0x7434,0x7c34,0x84b5,0x8474,0x7c33,0x7c13,0x7c53,0x7c33,0x7c33,0x73f2,0x7413,0x7413,0x7c54,0x7413,0x6bb2,0x63b2,0x63b2,0x6391,0x5b51,0x6391,0x5b71,0x5330,0x5b50,0x5b71,0x5330,0x5b50,0x5b30,0x5310,0x5b10,0x530f,0x52ef,0x5b30,0x428e,0x42cf,0x4aef,0x4aef,0x42ce,0x42ce,0x42ae,0x428d,0x42ce,0x3aae,0x3a6d,0x3a6d,0x3a6d,0x3a8e,0x3a8e,0x3a6e,0x42cf,0x3a8e,0x324d,0x3a8e,0x428e,0x324d,0x3a8d,0x326d,0x2a6d,0x2a4d,0x2a6d,0x2a6d,0x222c,0x222c,0x224d,0x2a6d,0x32ce,0x2a8d,0x224c,0x224c,0x224c,0x2a6d,0x226d,0x226c,0x2a8d,0x224d,0x224c,0x1a2b,0x222b,0x224b,0x2a8b,0x328b,0x224a,0x2a8a,0x2aab,0x2aab,0x2aab,0x22aa,0x2aaa,0x2aca,0x2ac9,0x32c9,0x32ea,0x2ac9,0x2ac9,0x32c9,0x32e9,0x32e9,0x32e9,0x3309,0x3309,0x3309,0x32e8,0x32e8,0x32e8,0x32e8,0x2ac8,0x2ae8,0x32e8,0x32e8,0x3308,0x3308,0x32e8, +0x7b66,0x7b87,0x7b87,0x7b87,0x7b86,0x7b87,0x7b88,0x7b88,0x7b67,0x7b47,0x7b47,0x8368,0x8348,0x8347,0x8348,0x7b27,0x7b27,0x7b27,0x7b27,0x8327,0x8327,0x8327,0x8307,0x8327,0x8307,0x8328,0x8328,0x8308,0x8b49,0x8b6a,0x8b49,0x8b6a,0x8b6b,0x936a,0x936b,0x936b,0x8b4a,0x938b,0x93ac,0x938c,0x938c,0x938b,0x938c,0x936c,0x9b8c,0x9b8c,0x9b8c,0x9b8d,0x9b6c,0x9b6d,0x9b4c,0x932b,0x92ea,0x9b2b,0x9b2b,0x9b2b,0x9b2b,0x930b,0x92ea,0x9b0a,0x92ea,0x92ea,0x9aeb,0x92aa,0x92aa,0x9aca,0x9aea,0x9ac9,0x9ac9,0x9aea,0x9aea,0x9aa9,0x9aaa,0x9aa9,0x9aa9,0x9aa9,0x9aa9,0xa2ca,0x9aaa,0x9a89,0xab0b,0xaaeb,0x9a89,0x9a89,0x9a89,0x9a89,0xa269,0xa269,0xa248,0xa248,0xa269,0xa269,0xa249,0xa249,0xa249,0xa249,0xa269,0xa26a,0xa26a,0xa269,0x9a08,0xb30c,0xc3ae,0xaaec,0xaa6b,0xa26a,0xa26a,0xa24a,0xa26a,0xaaab,0xaa8b,0xaa4a,0xaa6b,0xaaac,0xaa8b,0x62ce,0xad98,0x7bce,0x528a,0x4249,0x4209,0x4208,0x4208,0x41e8,0x41e8,0x4a2a,0x7bd0,0x526a,0x4a29,0x4a29,0x41e8,0x39c8,0x62ed,0x6b6e,0x630d,0x5269,0x41e7,0x4229,0x4a49,0x4a29,0x4229,0x6b2d,0x39c7,0x39a7,0x5aac,0x9471,0x7b06,0x8a43,0x8a03,0x89e3,0x91a3,0x8982,0x89a3,0x8983,0x8983,0x9183,0x91a3,0x9183,0x9163,0x9164,0x8964,0x8964,0x89a5,0x8184,0x7964,0x7165,0x7165,0x71a6,0x5986,0x3945,0x2945,0x2925,0x2946,0x2946,0x2967,0x3188,0x2968,0x2989,0x2989,0x29a9,0x2989,0x2988,0x2988,0x2987,0x29a6,0x29c6,0x29c6,0x29e6,0x29e6,0x2a06,0x3206,0x3225,0x3245,0x3a45,0x3a66,0x4286,0x4ac6,0x5b07,0x73ad,0x736e,0x5a8b,0x62cb,0x736e,0x6b4d,0x62cc,0x5a6a,0x5aab,0x52d0,0x4ad1,0x52d1,0x4ab0,0x4ad0,0x4ab0,0x4a90,0x4a90,0x4a8f,0x52d0,0x4ab0,0x42b0,0x4ad0,0x52f0,0x4ad0,0x4ab0,0x4ab0,0x428f,0x3a6f,0x3a6e,0x42af,0x3a6f,0x324e,0x42af,0x4acf,0x42af,0x42af,0x42cf,0x42af,0x3a8f,0x42af,0x42af,0x3a8e,0x324e,0x42af,0x42af,0x3a8e,0x42cf,0x3aae,0x42ae,0x3a8d,0x324d,0x326d,0x3a8e,0x3aae,0x326e,0x3aae,0x3aae,0x42ae,0x42ce,0x42ce,0x3aae,0x3acf,0x3aae,0x328d,0x42ce,0x42ee,0x326c,0x3aad,0x3acd,0x3acd,0x3acd,0x430e,0x430e,0x4b0e,0x42ee,0x3aad,0x3acd,0x430e,0x3aad,0x3aad,0x3acd,0x42ee,0x42ed,0x4b0d,0x4b0d,0x42ed,0x42cc,0x42cc,0x42cc,0x4b0d,0x42ec,0x42cb,0x4b0c,0x4b2c,0x4b4d,0x4b4d,0x4b0c,0x4b2c,0x534c,0x532c,0x534c,0x5b6c,0x5b6c,0x534b,0x534c,0x534c,0x536c,0x534b,0x532b,0x5b6b,0x534b,0x534a,0x4b2a,0x534b,0x4b0a,0x532b,0x532b,0x4b0b,0x534b,0x534b,0x534b,0x530a, +0x8c23,0x8c23,0x8c03,0x8c03,0x9404,0x8be5,0x8be4,0x8bc3,0x8bc3,0x93c3,0x93a4,0x93a4,0x93a4,0x9384,0x8b84,0x8b64,0x8b64,0x8b64,0x8b63,0x9364,0x9364,0x9364,0x9363,0x9364,0x9364,0x9364,0x9364,0x9364,0x9b44,0x9b65,0x9b66,0x9b66,0x9b66,0x9b46,0x9b46,0x9b66,0x9b66,0x9b66,0x9b67,0x9b67,0x9b47,0x9b46,0x9b26,0x9b46,0x9b46,0x9b46,0xa326,0xa305,0x9ac5,0x9ae6,0x9ac6,0x9ae6,0xa2e6,0x9ac6,0x9aa5,0x9a85,0x9ac6,0x9ae7,0x9ac6,0x9aa6,0xa2a6,0xa2c7,0x9aa6,0x9a86,0x9aa7,0x9aa7,0x9aa7,0x9aa7,0xa2a7,0xa2a6,0x9a65,0x9a86,0x9a86,0x9aa7,0x9aa7,0x9a87,0x9aa7,0xa2c7,0xa2c7,0x9a87,0x9a86,0xa286,0xa287,0xa287,0xa2a7,0x9a65,0x9a66,0xa2a8,0xa2c8,0xa2a8,0xa2c9,0xa2a8,0xa2a8,0xa2a8,0xa288,0xa288,0xa2a9,0xa2c9,0xa2ca,0xa268,0xcc91,0xccd1,0x9b6c,0xa32c,0xa32c,0xab4c,0xa34c,0xa32c,0xab8d,0xab8d,0xa36d,0xb3af,0xb3ef,0xb3ef,0xb3ef,0x62ce,0xad78,0x73ae,0x528a,0x4a49,0x4229,0x4208,0x4208,0x41e8,0x41e8,0x4209,0x5acb,0x4208,0x41e8,0x41c8,0x41c7,0x39e7,0x526b,0x5aab,0x526a,0x4208,0x39c7,0x39e7,0x41e8,0x41e8,0x4209,0x5aab,0x39c7,0x39a7,0x526b,0x7bcf,0x7b06,0x8a42,0x8a02,0x91c2,0x91a2,0x9182,0x91a2,0x9182,0x9162,0x9142,0x9162,0x9142,0x9142,0x9142,0x9122,0x9143,0x8943,0x8943,0x8123,0x7923,0x7124,0x6944,0x5104,0x30e3,0x20c3,0x18c4,0x18e4,0x18e5,0x18e5,0x1906,0x2107,0x1927,0x1928,0x1928,0x2148,0x2148,0x2168,0x2167,0x2186,0x21a5,0x21a5,0x21c5,0x21e5,0x2a05,0x2a25,0x2a44,0x3264,0x3264,0x3a85,0x42a5,0x5305,0x6385,0x7bcc,0x7b8f,0x62cc,0x6b2d,0x736e,0x736e,0x62cb,0x5a8a,0x6b4d,0x9d56,0x9536,0x9535,0x9515,0x9515,0x9d56,0x9536,0x8cd4,0x8cd4,0x9535,0xa597,0x9d56,0x9515,0xa556,0x9d56,0x9515,0x9d56,0x9515,0x8473,0x8494,0x7c73,0x8493,0x84b4,0x84d3,0x8cf4,0x8cf4,0x7432,0x7c32,0x7c73,0x7c52,0x8493,0x8493,0x7c72,0x7c32,0x8473,0x8cb4,0x7c73,0x7c52,0x7c72,0x8493,0x8493,0x7c51,0x7431,0x7431,0x7c72,0x7c51,0x8cd3,0x94f4,0xa576,0x94f4,0x7c52,0x7c52,0x73f0,0x73f0,0x7410,0x7411,0x7411,0x63b0,0x6bf1,0x7c31,0x7430,0x7c31,0x8cd3,0x7c72,0x8472,0x7c51,0x73cf,0x6bd0,0x7410,0x6bf0,0x6c10,0x7410,0x7430,0x73f0,0x73f0,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x73f0,0x638f,0x638f,0x6b8f,0x638e,0x638e,0x6baf,0x638e,0x636e,0x6baf,0x638f,0x6b6e,0x6b8e,0x73cf,0x73cf,0x6bae,0x6bae,0x73cf,0x8451,0x6b6e,0x636e,0x634d,0x5b2c,0x638e,0x638d,0x634d,0x634d,0x632d,0x632d,0x5b0c,0x634d,0x5b0c,0x5b0c, +0x7368,0x7348,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7b69,0x7b69,0x7b68,0x7b68,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7349,0x7b49,0x7349,0x7328,0x7308,0x7309,0x7309,0x7309,0x7b29,0x7b4a,0x838a,0x7b6a,0x7b6a,0x838b,0x8bcd,0x8bed,0x940e,0x8c0e,0x8bed,0x940e,0x944f,0x942f,0x8c0e,0x8c0e,0x8bee,0x942f,0x9c6f,0x942f,0x8c0e,0x8c0d,0x93ee,0x9c4f,0x9c90,0x8c2e,0x8bed,0x8bed,0x8bee,0x8bee,0x8c2e,0x946f,0x8c4f,0x8c0f,0x83cd,0x83ad,0x8bad,0x8bad,0x83ce,0x83ae,0x83ce,0x83ee,0x83cd,0x83cd,0x8bee,0x8bee,0x942f,0x9470,0x9450,0x8c50,0x8c0f,0x8c0f,0x8c0f,0x8c0f,0x8c2f,0x840f,0x83ef,0x8bef,0x8bef,0x8bef,0x83ef,0x9cb1,0x9cf2,0x8c50,0x8c50,0x9471,0x9471,0x9471,0x8c71,0x8c71,0x9471,0x94b2,0x94b2,0x9cb2,0x9c92,0xad35,0xde9a,0xbdf8,0xbe18,0xb5b6,0xa534,0xa555,0xad75,0xa575,0xb5d7,0xad96,0xad76,0xbdf8,0xbe38,0xbe39,0xbe39,0x5aee,0xad77,0x73ad,0x52ab,0x4a6a,0x4a29,0x4209,0x4208,0x4208,0x41e8,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41c7,0x41e7,0x41e8,0x41e8,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c8,0x41e8,0x39c7,0x39c7,0x4208,0x526a,0x5226,0x51c4,0x51a4,0x5184,0x5985,0x5985,0x5985,0x5984,0x5984,0x5964,0x5964,0x5964,0x5964,0x5944,0x5944,0x5965,0x5985,0x5985,0x5965,0x5985,0x5185,0x5185,0x4145,0x3145,0x3145,0x2945,0x3186,0x3186,0x3146,0x3167,0x3167,0x3187,0x3187,0x3188,0x3188,0x31a8,0x31a8,0x31a7,0x31a7,0x39c6,0x39e6,0x39e6,0x31e6,0x3a06,0x3a06,0x3a26,0x3a46,0x4246,0x4246,0x4266,0x4aa6,0x5ae7,0x6b4c,0x734e,0x62ec,0x6b4d,0x630c,0x734e,0x734d,0x734d,0x736e,0xadd9,0xa597,0x9d76,0x9d96,0xa596,0xa577,0x9d36,0x9d35,0x9d55,0xadb7,0xbe39,0xc69a,0xadf7,0xadd7,0xadb7,0xa556,0xadb7,0xa556,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cf4,0x8cf4,0x9535,0x8493,0x84b3,0x8cb4,0x84b3,0x8cb4,0x8493,0x8452,0x8452,0x8cb4,0x8452,0x8452,0x8493,0x8473,0x84b3,0x84b3,0x8493,0x8472,0x7c52,0x8452,0x8472,0x9514,0xa575,0x9d55,0x8cb3,0x8452,0x8452,0x73f0,0x73f0,0x7c31,0x7410,0x7411,0x6bf0,0x7410,0x7c51,0x7c51,0x7c11,0x73f0,0x73f0,0x8451,0x8492,0x8472,0x73d0,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x7c30,0x73f0,0x73f0,0x7bf0,0x73d0,0x73af,0x73d0,0x73d0,0x6baf,0x638f,0x6bcf,0x6bcf,0x6b8e,0x636e,0x6bcf,0x636e,0x6baf,0x638e,0x6b8f,0x73d0,0x6b8f,0x7bf0,0x7c10,0x73f0,0x7bf0,0x73f0,0x636e,0x634e,0x634e,0x5b0d,0x634d,0x6b8e,0x5b4d,0x634d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x52cb, +0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x6b2c,0x630c,0x6b4c,0x6b4d,0x632c,0x6b6d,0x6b8d,0x634d,0x632c,0x632d,0x630c,0x5b0c,0x630c,0x5b2c,0x530c,0x5aec,0x5aeb,0x5aeb,0x5aec,0x62ec,0x630c,0x6b6e,0x6b4d,0x6b4d,0x83ef,0x94b2,0x9cd2,0xa513,0x9cf3,0x9cf3,0x94b2,0x9cf3,0xa534,0x9d34,0x94d2,0x94b2,0x94b2,0x9d13,0xa555,0x94f3,0x7c30,0x8c71,0x9492,0xa534,0xa555,0x94b2,0x8431,0x8431,0x8c72,0x94d3,0x9d14,0xa534,0xad75,0x9cf3,0x8c91,0x8451,0x7c31,0x7c11,0x7c31,0x73f0,0x8451,0x94f3,0x94f3,0x8cb2,0x8cb3,0x94d3,0x9d14,0xad75,0xb5d7,0x9d55,0x8c92,0x8471,0x7c31,0x7410,0x8471,0x8c72,0x8c72,0x8c92,0x8c93,0x8452,0x9d35,0xa556,0x94d4,0x94d4,0x94b3,0x8c93,0x8c93,0x8493,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0xb5b8,0xb5b7,0x9d15,0x9d15,0x9d56,0xa576,0xa577,0xa576,0xa556,0xa577,0xa577,0xbdf9,0xbe19,0xb5d8,0xb5f8,0xb619,0x52ad,0x9493,0x632c,0x528a,0x52aa,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39a7,0x3186,0x3186,0x3186,0x3986,0x3986,0x39a6,0x3986,0x3986,0x39a6,0x41e7,0x41e7,0x41e7,0x41a7,0x3986,0x39a6,0x41a7,0x41a7,0x41a6,0x39a6,0x39a6,0x41c7,0x41a7,0x41c7,0x39c7,0x39a7,0x4a08,0x526a,0x4a29,0x4a29,0x41e8,0x41e7,0x41e7,0x41e8,0x41e8,0x41e8,0x41e8,0x4a08,0x4a29,0x4a28,0x4a49,0x5269,0x4a48,0x4a49,0x4a28,0x4208,0x4a49,0x5aaa,0x4a28,0x4a28,0x5249,0x5269,0x62ec,0x6b2d,0x6b0c,0x736d,0x6b2d,0x6b0d,0x7bcf,0x8c51,0x7baf,0x9d57,0x9d57,0x9d56,0x9d56,0xa577,0xa576,0x9515,0x8cf4,0x9d35,0xa556,0xadd8,0xbe59,0xadb7,0xbe39,0xadd7,0xa556,0xadb7,0x9d36,0x8cb4,0x9d15,0x94f5,0x8cb4,0x8473,0x8cd4,0x8cb4,0x8493,0x8cb4,0x8cd4,0x8cf4,0x94f5,0x84b4,0x8493,0x8473,0x8473,0x8cd4,0x8473,0x9515,0x8cd4,0x8472,0x8493,0x8472,0x8493,0x8452,0x8452,0x7c52,0x7c51,0x94f4,0x9d35,0x94f4,0x8cb3,0x7c31,0x7c52,0x7410,0x73f0,0x7c11,0x7c10,0x7c31,0x7c31,0x7410,0x7c11,0x7411,0x73f0,0x73f0,0x7c31,0x8472,0x7c51,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x6bcf,0x6baf,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x6baf,0x6baf,0x6bcf,0x6bcf,0x6bd0,0x638f,0x6baf,0x638e,0x73ef,0x7bd0,0x634e,0x634e,0x634d,0x638e,0x73cf,0x73cf,0x73af,0x6b8e,0x7bf0,0x73f0,0x6baf,0x636e,0x634e,0x636e,0x634e,0x73af,0x6b8e,0x632d,0x5b2d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0d,0x52ec, +0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x634d,0x6b4d,0x630c,0x5aeb,0x632c,0x632c,0x6b6d,0x73ae,0x634c,0x636d,0x636d,0x5b2c,0x632c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aec,0x5b0c,0x632c,0x6b6e,0x6b4d,0x7bae,0x8c51,0x9cb2,0x9492,0x8c51,0x9492,0x9cd3,0xa4d3,0x9cb2,0x8c30,0xa514,0xad55,0x9492,0xa514,0x94b3,0x94d2,0xb5d6,0x9d13,0x8c50,0xa513,0x94b2,0x9cb2,0xb5b6,0x9cf3,0x8451,0x9472,0x9cf3,0xa534,0x94b2,0xa554,0xbdf7,0x9d13,0x94d3,0xa555,0xad76,0x94f4,0x8c93,0x9492,0xad55,0xbdf7,0xb5d7,0x94b3,0xa555,0xbdb7,0xa513,0xad55,0xad96,0xa535,0xad96,0x94d3,0x8cb2,0xad95,0xad75,0xa554,0xbe38,0xb5f7,0xa555,0xad96,0xb5d7,0xb5d7,0xbdf8,0xb5b6,0xb5b7,0xbdf7,0xb5d7,0xb5f7,0xad76,0xb5f8,0xadd7,0x94f4,0x94d4,0x9d35,0xb5f8,0xa576,0x9d15,0x9d56,0xa577,0xadb8,0xad97,0xa597,0xadb7,0xadb8,0xb5f8,0xadd8,0xad97,0xadb8,0xb639,0x4a6b,0x4229,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2965,0x3165,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2925,0x2945,0x2945,0x2925,0x2925,0x2945,0x2965,0x3185,0x2965,0x2945,0x2965,0x2965,0x2945,0x2924,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x39a6,0x39a7,0x3186,0x3166,0x3166,0x3186,0x3166,0x3165,0x2945,0x3165,0x39a6,0x3166,0x3186,0x3186,0x3166,0x31a6,0x4208,0x39c7,0x39e7,0x39a6,0x3186,0x39a6,0x39a6,0x3186,0x39a6,0x39a6,0x39c7,0x41e8,0x41e8,0x4228,0x4228,0x4208,0x4228,0x41e7,0x39a7,0x4208,0x526a,0x41e8,0x4a08,0x4a29,0x4a49,0x528a,0x5acb,0x62eb,0x62eb,0x5acb,0x528a,0x630c,0x736e,0x6b6e,0x9d76,0xa597,0xa576,0x9d56,0xa576,0xadb7,0xa597,0x9535,0x9515,0x9515,0xad97,0xb5d8,0xa576,0xb5f8,0xb5d8,0xad97,0xad97,0x9d56,0x8cf5,0x8cd4,0x9d35,0x94f5,0x8cb4,0x8cb4,0x8493,0x8493,0x8493,0x8493,0x9515,0x9515,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8493,0x8cd4,0x9515,0x8cd4,0x8cd4,0x8cd4,0x8c93,0x8cb3,0x8452,0x7c31,0x7c52,0x7c31,0x8493,0x8cb3,0x9514,0x8cd3,0x8cb3,0x8493,0x7c51,0x7c31,0x8452,0x8431,0x7c31,0x7c11,0x73f0,0x7bf1,0x73f0,0x7c11,0x7c31,0x7c11,0x7c52,0x7c11,0x73f0,0x73f0,0x73d0,0x73d0,0x6bd0,0x73f0,0x73f0,0x6bd0,0x6baf,0x6baf,0x73d0,0x73d0,0x73d0,0x73d0,0x6bcf,0x73f0,0x73f0,0x6baf,0x6baf,0x6bce,0x8471,0x73ef,0x6b8f,0x636e,0x6baf,0x6b8e,0x638e,0x634d,0x8c71,0x8431,0x73af,0x6b8e,0x6b8e,0x636d,0x6b8e,0x636d,0x636d,0x73af,0x6b8e,0x632d,0x5b0d,0x5b0c,0x5b4d,0x638e,0x5b4d,0x52ec,0x530c, +0x5aeb,0x5aeb,0x5aeb,0x62eb,0x632c,0x632c,0x630c,0x62ec,0x62ec,0x632d,0x6b4e,0x630c,0x632c,0x6b6d,0x634d,0x5aeb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x630c,0x5b0d,0x5b0d,0x6b6e,0x6b6e,0x6b8f,0x8432,0x9cf3,0xa514,0x8c51,0x9cd2,0x9491,0xb595,0xa533,0x842f,0x9cb2,0xacf3,0x9cd3,0xc638,0x9cf3,0x8410,0xb575,0xad14,0x9cd3,0xc679,0x94f4,0x8410,0xad76,0xbe18,0x8cb2,0x8c92,0xb5d7,0xbe17,0x94b2,0x8c71,0xad54,0x94b2,0xa534,0x9492,0xb596,0xad75,0x94d3,0xbdd6,0xa4f3,0xa4f3,0xce59,0x9492,0xb5b7,0xc639,0xa555,0xad54,0xad55,0x9d14,0xc639,0xadb6,0xa535,0xbe18,0xb5b7,0xbdf8,0xb596,0xad76,0xbdf8,0xb596,0xbdf8,0xce79,0xce59,0xbdd7,0xce59,0xc659,0xbe18,0xce59,0xbdf8,0xdefb,0xceba,0xadb7,0xa596,0xd6da,0xdf1c,0xb5f8,0x9d36,0xa577,0xa597,0xadb8,0xad97,0xb619,0xadf8,0xb5f9,0xb5f8,0xadb7,0xa597,0xa5b7,0xb619,0x52aa,0x18c3,0x18a3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18a3,0x18a3,0x18c3,0x2104,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x2104,0x20e3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2925,0x2124,0x2104,0x2924,0x2945,0x2925,0x2945,0x2965,0x3166,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3186,0x39a6,0x4229,0xa597,0xa597,0xa556,0xa556,0xa556,0xad96,0xadd8,0xadd8,0x9d76,0x9d76,0xa576,0xa556,0xa576,0xbe19,0xadb7,0xad97,0xa576,0x9d35,0x8cf4,0x8cd4,0x9d35,0x9515,0x94f4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8493,0x8cd4,0x8cf4,0x8cd4,0x8493,0x94f4,0x94f4,0x9514,0x8cf4,0x9515,0x94d4,0x8c93,0x8c93,0x8493,0x8452,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x94d4,0x8c93,0x7411,0x7c11,0x7c31,0x7410,0x7c10,0x7411,0x73f1,0x73f1,0x7c11,0x7c51,0x7c51,0x7c11,0x7c32,0x73f1,0x73f0,0x7bd0,0x7bf0,0x7c11,0x7410,0x6bcf,0x7c11,0x7c31,0x73f0,0x7c11,0x7c11,0x73b0,0x73d0,0x73d0,0x73f0,0x7410,0x6b8f,0x73cf,0x73ce,0x8472,0x6baf,0x73ef,0x73d0,0x636e,0x73f0,0x73f0,0x73ef,0x6b8e,0x8430,0x7bf0,0x738f,0x6b8e,0x638e,0x6b8e,0x6bae,0x7c30,0x8c92,0x632d,0x73af,0x73af,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b0c,0x52ec, +0x5acb,0x630c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x6b4d,0x5b0c,0x632c,0x632d,0x632d,0x5b0c,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x5b0c,0x630c,0x6b4d,0x6b4d,0x6b4e,0x7bb0,0x9452,0x9c92,0x9471,0xbdb6,0x8c70,0x9491,0x9cb2,0x8c30,0xad55,0x9472,0xb596,0xc638,0x8c91,0x840f,0xad34,0xa4f3,0xad96,0xc659,0x8451,0x8c11,0xa514,0xce9a,0x9cf3,0x9493,0x9cd3,0xa4f4,0x9cd3,0xad75,0xb596,0x94b2,0xb5b6,0x9472,0xad35,0x9cd3,0xbdf7,0xc6ba,0x9514,0x9452,0xc638,0xad96,0x9492,0xad35,0xb5d7,0xbe18,0xb5d7,0x9d14,0xa535,0xa514,0xbdd7,0xc659,0x9d14,0xc638,0xbdf8,0xb5b7,0xc639,0xb5b7,0xad56,0xdf1c,0xc639,0xa535,0xce3a,0xc639,0xbdf8,0xbdf8,0xbdf8,0xc659,0xdefb,0xc659,0xb5d7,0xce79,0xdefc,0xc67a,0x9d56,0x9d77,0xa577,0xa577,0xad97,0xadb8,0xb619,0xb619,0xb5f9,0xadb8,0xadb7,0xadb7,0xbe5a,0x5aeb,0x20e3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18a3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a2,0x18a2,0x18a3,0x18c3,0x10a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x20e4,0x18e3,0x18c3,0x18e3,0x3186,0xadd8,0xa597,0x9d56,0xa576,0xa556,0xa576,0xa5b7,0xa597,0xadb7,0xa596,0xa576,0x9d35,0x9d56,0xbdf9,0xad97,0x9d15,0x94f4,0x9d36,0x94d4,0x94f4,0x9d35,0x9514,0x94f4,0x8cd4,0x8cb3,0x8cd4,0x9d36,0x8cd4,0x8473,0x8493,0x8493,0x8cd4,0x94f4,0x94f4,0x94d3,0x9d14,0x9535,0x9d55,0x8cb3,0x9d14,0x94f4,0x8452,0x8cb4,0x8cd4,0x8473,0x7c52,0x8493,0x7c52,0x8cd4,0x8493,0x8cb3,0x9514,0x8cd3,0x8cd3,0x7c51,0x7c10,0x7c31,0x7c11,0x7411,0x7411,0x7c31,0x7c51,0x8452,0x7c31,0x7c31,0x7431,0x8452,0x7c11,0x7bf0,0x7bf0,0x7c10,0x6baf,0x6baf,0x6bd0,0x7c31,0x73d0,0x73af,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x6baf,0x6bae,0x6b8e,0x73af,0x6b8f,0x73af,0x7c11,0x73d0,0x6b6e,0x73cf,0x7c30,0x8c92,0x73cf,0x6b8e,0x73af,0x6baf,0x6bae,0x8451,0x6baf,0x73cf,0x8c72,0x73cf,0x632d,0x634d,0x636e,0x5b2d,0x5b2d,0x5b0c,0x5b2c,0x634d,0x5b0c, +0x5aeb,0x5b0b,0x630c,0x630c,0x632c,0x634d,0x630c,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6d,0x630c,0x630c,0x634d,0x632d,0x630c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5acb,0x5aec,0x5b0c,0x634d,0x6b6e,0x6b6e,0x6b6e,0x7bd0,0x8c52,0x8c51,0xb596,0xb5b6,0x840f,0x9471,0x9cb2,0x83ef,0xad34,0x8c51,0xbdd6,0xc638,0x8c71,0x840f,0xa514,0x9c92,0xb5b7,0xc679,0x8c92,0x8c51,0x9cf4,0xc679,0x8cb2,0x9492,0xa514,0xad55,0xad96,0xad96,0xa514,0x94b2,0x9cd3,0x9472,0xc5f8,0x9492,0xce5a,0xbe59,0x8493,0x8c32,0xbdb7,0xc659,0xa535,0x9cf4,0x9cf3,0x9d14,0xbe59,0xad96,0x94d3,0xa515,0xd69a,0xbdf8,0xa535,0xa534,0xad96,0xbdf7,0xce7a,0xb5d7,0xa534,0xe77d,0xc659,0x9d15,0xc639,0xc638,0xc618,0xc639,0xbdf8,0xbdd7,0xce7a,0xce39,0xc5f7,0xbdd7,0xdedb,0xc67a,0x9d76,0xa577,0x9d56,0xa577,0xb5f8,0xb619,0xb639,0xadf9,0xa5b8,0xa5b8,0xadb8,0xadb8,0xb619,0x5aab,0x20e3,0x2124,0x31a7,0x2944,0x18c2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18a2,0x10a2,0x10a2,0x18c3,0x3186,0xa597,0xadb7,0xa577,0xadb7,0xa5b7,0xa576,0xadb7,0xadb7,0xa5b7,0xadd8,0xa576,0x94f5,0xa556,0xb5f8,0x94f5,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9535,0x8cd4,0x9514,0x94f4,0x8493,0x8cd4,0x9535,0x84b4,0x84b4,0x8cb3,0x8472,0x8cb3,0x9d35,0x9d35,0x94f4,0x9514,0x9534,0x9515,0x8cb3,0x9d14,0x9d56,0x8452,0x8472,0x8493,0x7c72,0x7c72,0x7c72,0x7c51,0x8cb3,0x8cf4,0x8cd3,0x9d35,0x8cd4,0x8cb3,0x8493,0x7c11,0x7c32,0x73f0,0x73f0,0x7410,0x7410,0x7c31,0x8472,0x7c31,0x7c31,0x7411,0x73f0,0x6b8f,0x6baf,0x7c10,0x73cf,0x73cf,0x6baf,0x6bd0,0x7c31,0x7c11,0x73d0,0x73f0,0x6bd0,0x73f0,0x6baf,0x6baf,0x6b8e,0x8471,0x7c10,0x634e,0x6b8f,0x6b8f,0x73af,0x738f,0x8431,0x8c92,0x73cf,0x73cf,0x6bcf,0x6baf,0x6b8e,0x6b8e,0x73af,0x73ef,0x7c10,0x73af,0x6b4d,0x6b6d,0x636d,0x632d,0x634d,0x634d,0x5b0c,0x5b0c,0x5b2d,0x5b0c,0x52ec, +0x632c,0x630c,0x5acb,0x5aeb,0x5b0c,0x630c,0x632c,0x734d,0x738e,0x636d,0x6b6d,0x6b6e,0x5aeb,0x5aeb,0x630c,0x632c,0x634d,0x630c,0x5b0b,0x5aeb,0x52cb,0x5aeb,0x5b0c,0x5aeb,0x5b0c,0x632c,0x6b8e,0x6b8e,0x6b8e,0x7bcf,0x8c31,0x9492,0xbdd7,0x9c92,0x8c30,0xbdd6,0xad75,0x8c51,0x9471,0x9cb2,0xad54,0xc638,0x9cf3,0x8c50,0xad54,0x9cd3,0xa535,0xce7a,0x9513,0x8451,0xa514,0xb5f8,0x8451,0x9492,0xbdd7,0xadb6,0x8492,0x94d3,0x9cf3,0xa534,0xbdd7,0x8c51,0xb596,0x9cd3,0xbdf7,0xc679,0x9d14,0x8c51,0xb5b6,0xad35,0xbe18,0xbe18,0xa555,0x8c51,0xbe38,0xb5f8,0x9d14,0xb5b7,0xce9a,0x9d14,0xbe17,0xbe18,0x9cf4,0x94d3,0xd6db,0xbe18,0x9cf4,0xdf1c,0xbdf8,0x9cf5,0xc67a,0xbe38,0xbdf7,0xbe18,0xb5b7,0xc618,0xc5f8,0xc639,0xd69a,0xbdd8,0xd6bb,0xbe5a,0xa5b7,0xa577,0xa557,0xa597,0xb5f8,0xadf8,0xb5f9,0xb5f8,0xadd8,0xadd9,0xadd8,0xadb8,0xadb8,0x526a,0x20e3,0x2945,0x4229,0x4a6a,0x39e7,0x2124,0x10a2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x1082,0x18c3,0x2124,0x3165,0x3186,0x3a08,0xad98,0xadb8,0xa556,0xa597,0xadb8,0xa597,0xadd8,0xb5f9,0xa597,0xa5b7,0xa576,0x94f4,0x9d36,0xadd7,0x94f4,0x8cd4,0x9515,0x94f4,0x8cf4,0x94f4,0x9515,0x94d4,0x94d4,0x94f4,0x8cf4,0x94f4,0x9d35,0x8cb3,0x8493,0x8493,0x8c93,0x8c93,0x8cb3,0x9514,0x8cd3,0x8cf3,0x9534,0x8cd3,0x8cd4,0x8cb3,0x9d15,0x8cb3,0x7c31,0x8493,0x8473,0x8493,0x8472,0x8472,0x8cb3,0x8cb3,0x94d3,0x94f4,0x8c93,0x7c31,0x7c52,0x7c51,0x7c31,0x73f0,0x73f0,0x7c31,0x7431,0x8472,0x7c52,0x6baf,0x7411,0x7411,0x73d0,0x6baf,0x7c10,0x8451,0x73cf,0x73d0,0x6bd0,0x6bf0,0x7411,0x7c31,0x7c11,0x73f0,0x6bf0,0x6bef,0x6bcf,0x6baf,0x6b6e,0x8c92,0x7c10,0x6b6e,0x73d0,0x73cf,0x6b8e,0x636e,0x7c10,0x9cf4,0x73f0,0x73cf,0x6b8e,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b6d,0x73af,0x7bf0,0x6b6e,0x632d,0x636d,0x636d,0x632d,0x5b2c,0x632d,0x5b0c,0x5aec,0x5aec,0x5aec, +0x632c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x6b4d,0x632c,0x736e,0x73af,0x630c,0x62eb,0x632c,0x738e,0x738e,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x630c,0x634c,0x6b6d,0x738e,0x7bcf,0x7bcf,0x8410,0x8431,0xa535,0xad96,0x8c71,0x8c71,0xa513,0x9cf2,0x8c50,0xad75,0xa534,0x9471,0xb575,0x9d13,0x94b2,0xad95,0x8c92,0x9493,0xb576,0x9d34,0x94d3,0xb5f8,0x9d56,0x8cb3,0x9492,0xb5d7,0x9d15,0x73f1,0x94b3,0x94b3,0xad96,0xb5b7,0x8452,0xad76,0xad55,0x9492,0xb596,0xa534,0xa534,0xbe18,0x94b3,0xa555,0xad75,0x9cf3,0xa535,0xb5d7,0x9d35,0x94d4,0xb5b7,0xbe39,0x8cd4,0xadb7,0xbdf7,0xb597,0xb597,0xce9a,0xadb7,0xa535,0xd6dc,0xb5d8,0xa556,0xce9b,0xc639,0xbe18,0xbdf7,0xbdf8,0xdedb,0xbdd8,0xce9a,0xd6db,0xbdf8,0xd6fc,0xbe59,0xa596,0xa556,0xa557,0xa597,0xa597,0xb5f8,0xb5d8,0xa577,0xb5d8,0xb5f9,0xb5f9,0xadd8,0xb5f9,0x4229,0x2104,0x2945,0x422a,0x632d,0x634d,0x5aeb,0x41e7,0x20e3,0x18e3,0x18c3,0x18a3,0x10a2,0x18a2,0x10c2,0x18a3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1061,0x1081,0x1081,0x0861,0x1082,0x0841,0x0020,0x0020,0x0841,0x0020,0x0841,0x0841,0x0841,0x0841,0x0020,0x0841,0x0861,0x1081,0x1082,0x1082,0x1061,0x0861,0x1081,0x0861,0x0861,0x1081,0x1081,0x1081,0x0881,0x1081,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x1082,0x1062,0x1061,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2964,0x4a27,0x5aa9,0x5289,0x4229,0x4a6a,0xad98,0xa597,0xadb7,0x9d56,0xa577,0xa597,0xad97,0xadb8,0xad97,0x9d56,0x9d56,0xa576,0x9d55,0xa576,0x94f4,0x94f4,0x94f4,0x94f4,0x9515,0x94f4,0x9d35,0x9d56,0x8cd4,0x8cb3,0x8cb3,0x8cb3,0x9d15,0x8cb3,0x8cd4,0x8cb3,0x8cb3,0x94f4,0x8cb3,0x8cd3,0x84b3,0x8cb3,0x8cd3,0x94f4,0x94f4,0x94d3,0x8cb3,0x8493,0x7c52,0x8473,0x84b3,0x8cb3,0x7c52,0x8493,0x7c52,0x8cb3,0x8cb3,0x8c93,0x94d4,0x7c31,0x7c52,0x7c31,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x94f4,0x7c31,0x73f0,0x73d0,0x7410,0x73f0,0x73cf,0x7410,0x7c10,0x73d0,0x73d0,0x73f0,0x73f0,0x73f0,0x7bf0,0x73d0,0x73f0,0x73f0,0x6bcf,0x73f0,0x6baf,0x73cf,0x6baf,0x638e,0x6baf,0x636e,0x73d0,0x6b8e,0x6baf,0x6baf,0x6b6f,0x73d0,0x73cf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73cf,0x6b6e,0x634d,0x636e,0x6b8e,0x634d,0x632d,0x5b2d,0x52ec,0x52ec,0x52ec, +0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x6b4d,0x6b6d,0x8410,0x73ae,0x630c,0x6b2d,0x6b4d,0x6b6e,0x73af,0x736e,0x6b6e,0x6b4d,0x6b6d,0x630c,0x5b0c,0x632c,0x6b6d,0x6b6e,0x738e,0x73af,0x7c10,0x8410,0x8c51,0xa535,0x94b3,0x8451,0x8c71,0x8c71,0x9cf2,0xa554,0x9cf3,0x8471,0x8431,0x8c71,0x9d14,0xa535,0x8c72,0x73d0,0x8411,0x8431,0x9d35,0xa576,0x94f4,0x7c52,0x7bf0,0x8431,0x9d14,0x8452,0x73d0,0x7c11,0x8431,0x94b3,0x8c92,0x8452,0x8c93,0x8c72,0x7bf0,0x8432,0x9cf4,0x9d35,0x8c93,0x8452,0x8452,0x8c93,0xa536,0x9d36,0x8c93,0x7c11,0x8431,0xa535,0x94d4,0x8452,0x8c73,0x9493,0xa556,0xad96,0x9d35,0x8cd4,0x94d4,0xad97,0x9cf5,0x9cf4,0xad76,0xb5b7,0xb5b7,0xb5b7,0xad76,0xbe19,0xa556,0xad97,0xb5f8,0x9d35,0xb619,0xad97,0xa556,0xa556,0x9d56,0xadb7,0xadb7,0xb5f9,0xadd8,0xa597,0xadb7,0xb619,0xb5f8,0xb619,0xbe3a,0x4208,0x2104,0x2125,0x422a,0x6b6f,0x73d0,0x8452,0x7bae,0x3185,0x3165,0x2124,0x2104,0x2104,0x2104,0x2124,0x2925,0x2104,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18e3,0x18e3,0x20e3,0x20e4,0x20e3,0x2104,0x2104,0x2124,0x2944,0x2924,0x2945,0x2965,0x3165,0x3165,0x3185,0x2945,0x2965,0x5268,0x734c,0x8c4f,0x630c,0x4a4a,0x4a8b,0xa577,0xadd8,0xadb7,0xa597,0xa597,0xadb8,0xadb8,0xa557,0xa556,0x9d56,0x9d56,0xadb7,0xa576,0x9d15,0x94d4,0x94d4,0x94f4,0x9d15,0x9d15,0x8cd4,0x9d56,0x9d56,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x94d4,0x8cb3,0x84b3,0x94f4,0x8cd4,0x94f4,0x94f4,0x8cb3,0x8c93,0x8c73,0x9d15,0x94d4,0x8c93,0x8cb3,0x8472,0x8473,0x8493,0x8cd3,0x8cd3,0x8493,0x7c11,0x8452,0x7c52,0x8c93,0x9d15,0x8c93,0x7c52,0x7c31,0x7c52,0x7411,0x73d0,0x7c11,0x73f0,0x7c31,0x7c31,0x94d4,0x7c31,0x73b0,0x73b0,0x73d0,0x73f0,0x73d0,0x73d0,0x7c10,0x6baf,0x73d0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73af,0x73af,0x73d0,0x73d0,0x6baf,0x6baf,0x6bcf,0x7411,0x6b8f,0x636e,0x634d,0x7c31,0x6b8e,0x6baf,0x6b8f,0x6b6e,0x6baf,0x73cf,0x6baf,0x6bcf,0x6baf,0x6bae,0x73af,0x73af,0x73cf,0x73af,0x6bae,0x638e,0x6b8e,0x636e,0x636e,0x634e,0x634e,0x5b2d,0x52ec,0x52cb,0x52cb, +0x5aeb,0x630c,0x630c,0x630c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x73cf,0x7c30,0x634c,0x5aeb,0x630c,0x632d,0x630d,0x6b4e,0x6b8e,0x6b6e,0x73ae,0x73ae,0x6b6d,0x636d,0x636d,0x634d,0x632d,0x6b6e,0x73ae,0x73cf,0x73cf,0x7c10,0x8451,0x7bf0,0x73cf,0x7bd0,0x8431,0x8451,0x73f0,0x634e,0x6b6e,0x6b6f,0x738f,0x7bd0,0x738f,0x6b6e,0x738f,0x738f,0x73d0,0x7c11,0x73f1,0x6bb0,0x73f0,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x7bf0,0x7bf0,0x7bd0,0x7c11,0x7c11,0x73f0,0x73f0,0x7c11,0x7c32,0x7c11,0x7c11,0x73f1,0x7c11,0x8452,0x7c11,0x7411,0x7c52,0x7c11,0x8451,0x8472,0x8472,0x8472,0x8472,0x8472,0x8473,0x8c73,0x8cb3,0x94f4,0x8cf4,0x8493,0x8493,0x8cb4,0x8c93,0x8452,0x8cb4,0x94f5,0x8c93,0x8cb4,0x94f5,0x8cb4,0x8cb4,0x94d4,0x9515,0x9515,0x94f5,0x9d36,0xa597,0xadb7,0xa597,0xadd8,0xadb8,0xa577,0xadb8,0xadd8,0xadf8,0xb619,0xbe39,0x4208,0x2124,0x2945,0x424a,0x6b90,0x73f1,0x9cf6,0x9cd2,0x39a6,0x2945,0x2104,0x20e4,0x20e3,0x18e3,0x2104,0x2124,0x20e4,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x2104,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x20e3,0x20e4,0x2104,0x20e3,0x18e3,0x18c3,0x18c3,0x1082,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0861,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2945,0x3165,0x3165,0x2965,0x3185,0x3185,0x3186,0x3186,0x3165,0x31a6,0x4a28,0x83ef,0xb595,0x6b2d,0x4a6a,0x52ab,0xadd8,0xb619,0xadd8,0xadd8,0xa597,0x9d77,0xa556,0xa597,0xa576,0x9d35,0x9d15,0x9d15,0x9d36,0x9d15,0x8cd4,0x8cf4,0x94d4,0x94f4,0x9d15,0x94d4,0x8cb4,0x9515,0x94d4,0x8cb4,0x8c93,0x8cd4,0x8cb4,0x84b3,0x8493,0x8493,0x94d4,0x94f4,0x94f4,0x94f4,0x8c93,0x8c93,0x8493,0x7c52,0x8452,0x8472,0x8473,0x84b3,0x7c52,0x94f4,0x8472,0x8452,0x7c11,0x8473,0x8452,0x7c31,0x9515,0x8cd4,0x7411,0x73f0,0x7431,0x7c52,0x7c11,0x73f1,0x7411,0x7c31,0x7411,0x8492,0x7c11,0x8472,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x7c31,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x6baf,0x7c10,0x73d0,0x6baf,0x73d0,0x7c11,0x73f0,0x73d0,0x73f0,0x6b8f,0x634d,0x638e,0x9d34,0x7c30,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73cf,0x73f0,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x6baf,0x73cf,0x6bcf,0x638e,0x636e,0x6b8e,0x632d,0x630d,0x6b6e,0x5b0c,0x52eb,0x52eb,0x52eb, +0x5aeb,0x630c,0x630c,0x62ec,0x6b0d,0x6b4d,0x6b4e,0x6b4d,0x6b6d,0x7bef,0x6b8e,0x5b2c,0x5b0c,0x5aeb,0x5acb,0x5acc,0x630d,0x6b6d,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b8e,0x6b4d,0x6b6d,0x738e,0x73ae,0x738e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x6baf,0x6baf,0x73d0,0x6bcf,0x6b8e,0x6b6e,0x634d,0x634e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x73af,0x73af,0x738f,0x6baf,0x6bb0,0x73f0,0x7430,0x73f0,0x7bf0,0x8451,0x7c31,0x7c10,0x7bf0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c31,0x7c31,0x8452,0x7c51,0x7411,0x7c31,0x7c11,0x7c31,0x7c52,0x7c52,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x8472,0x8472,0x8c93,0x94d4,0x94d4,0x84b3,0x8472,0x8473,0x8493,0x8472,0x8473,0x8cb3,0x8cd4,0x84b3,0x8cd4,0x94f5,0x8cd4,0x8cb4,0x9515,0x9515,0x94d4,0x94f5,0xa556,0xad97,0x9d56,0xa597,0xa577,0x9d36,0xa556,0xadb7,0xadd8,0xb619,0xbe39,0xc69b,0x4208,0x2104,0x2946,0x4a6b,0x6b6f,0x7c11,0xad78,0xa534,0x3185,0x20e4,0x18c3,0x18c3,0x18a3,0x18a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2124,0x18c3,0x20e3,0x18e3,0x20e4,0x2924,0x39a6,0x9cd3,0xce39,0x632d,0x4a6b,0x52cc,0xadd8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0x9d56,0x9d56,0x9d15,0x9d36,0x9d36,0x9d15,0xa576,0x94f4,0x9535,0x9535,0x94f4,0x94f5,0x94f5,0x8c93,0x8493,0x8cb4,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x94f4,0x8493,0x8452,0x8473,0x8473,0x8493,0x8cb3,0x8cb3,0x8452,0x8492,0x8472,0x8c92,0x8cd3,0x8cb3,0x8493,0x7c32,0x8cb3,0xa556,0x8431,0x7c11,0x8c93,0x8472,0x7c11,0x7c32,0x8472,0x7c31,0x7c11,0x7c52,0x7c72,0x7c52,0x73f0,0x7411,0x73f0,0x7410,0x8472,0x7c52,0x8cd4,0x6bb0,0x73f0,0x6bcf,0x7410,0x7c31,0x7411,0x73f0,0x7410,0x73f0,0x73f0,0x73cf,0x73f0,0x7c51,0x73f0,0x6baf,0x73d0,0x7c31,0x73f0,0x6b8f,0x6b8f,0x6b8f,0x6bae,0x6bae,0x6baf,0x6b8e,0x73d0,0x6baf,0x6bcf,0x6b8f,0x73cf,0x73d0,0x73f0,0x636d,0x6b8e,0x6baf,0x6bcf,0x6bcf,0x73cf,0x73cf,0x6b8e,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x5b0c,0x52ec,0x52ec,0x52ec, +0x630c,0x5aeb,0x62ec,0x630c,0x6b4d,0x736e,0x6b4d,0x634d,0x7bef,0x6b8e,0x5b0c,0x632d,0x632d,0x5aec,0x5aeb,0x62ec,0x6b6e,0x6b4d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x6b8e,0x6b6d,0x6b6e,0x738e,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x6baf,0x6b8e,0x6bae,0x73cf,0x6baf,0x6b6e,0x6b6e,0x634e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x73af,0x73af,0x6b8f,0x73af,0x73af,0x73af,0x7bf0,0x8471,0x7c31,0x7c10,0x7c11,0x7c10,0x73f0,0x73f0,0x7bf0,0x8431,0x8472,0x7c31,0x7c31,0x8432,0x8452,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x7c31,0x7c52,0x7c52,0x7c31,0x7c31,0x8472,0x8493,0x8c93,0x8452,0x8452,0x8472,0x8472,0x8c93,0x94b4,0x94d4,0x8cd4,0x84b3,0x8472,0x7c72,0x8472,0x94d4,0x8cb3,0x8cd4,0x8cf4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x94f4,0x94d4,0x9d15,0x9d56,0xadb8,0xa597,0xa556,0x9d36,0xa557,0xadb8,0xadd8,0xb5f8,0xbe3a,0xce9b,0xbe3a,0x39e8,0x2104,0x2945,0x4a6b,0x634f,0x8433,0xbdfa,0xad54,0x3185,0x20e3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x3186,0xad75,0xce59,0x62ed,0x4a8b,0x5aec,0xadb8,0xadb8,0xb5f9,0xadd8,0xa597,0x9d56,0xa577,0x9d36,0x9d36,0xa556,0xa556,0x9d15,0x9515,0x9d35,0x9d35,0x9535,0x9d36,0x9d16,0x94d5,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8cb4,0x8493,0x8cb3,0x8cf4,0x94f4,0x94d4,0x8c93,0x73f1,0x7c32,0x8cb3,0x8493,0x8493,0x8493,0x8493,0x8472,0x8473,0x8472,0x8492,0x7c52,0x8472,0x8452,0x9d35,0x94f4,0x7c11,0x7c31,0x7c52,0x7c31,0x7c31,0x7c31,0x7c11,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x73f0,0x7c31,0x7c11,0x8c72,0x8c93,0x8452,0x6bb0,0x6bb0,0x6baf,0x73f0,0x7410,0x73f0,0x6baf,0x73f0,0x73cf,0x7c31,0x73f0,0x6baf,0x7411,0x7410,0x73cf,0x73f0,0x73f0,0x73af,0x6b8f,0x6b8f,0x6b8e,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x73f0,0x6bd0,0x73d0,0x6baf,0x6baf,0x73f0,0x73f0,0x6b8e,0x634d,0x73cf,0x6baf,0x6bcf,0x6baf,0x73f0,0x73af,0x6b4e,0x634d,0x636e,0x634d,0x634d,0x5b0d,0x5aec,0x52ec,0x52cb, +0x5b0c,0x630c,0x632c,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x7bef,0x7bcf,0x632d,0x630c,0x632d,0x632c,0x630c,0x632c,0x6b6d,0x7c10,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x738e,0x7bef,0x73cf,0x6bae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6b6d,0x6b8e,0x6b8f,0x6baf,0x6b8e,0x6b6e,0x636e,0x636e,0x636e,0x636e,0x6bae,0x73af,0x6b6e,0x6baf,0x73cf,0x73af,0x738e,0x7bcf,0x8411,0x7c10,0x7c11,0x7c11,0x7c11,0x7c31,0x7c10,0x7bf0,0x7c31,0x8432,0x7c11,0x8431,0x8432,0x8452,0x7c31,0x7c11,0x8452,0x8452,0x8452,0x8452,0x8473,0x8493,0x8493,0x8493,0x8452,0x8493,0x8cb3,0x8493,0x8472,0x8492,0x8c93,0x8cb3,0x8cb4,0x9cd4,0x9515,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x8cd4,0x94d4,0x94f4,0x8cd4,0x8cd4,0x9d35,0x9515,0x8cd4,0x9515,0x94f5,0x9d15,0xa576,0xadb7,0xad97,0xa556,0x9d36,0xad98,0xadd8,0xb5f8,0xb5f9,0xcebb,0xbe39,0xadb8,0x39c7,0x2124,0x2105,0x4a6b,0x6b70,0x8c94,0xd6bc,0xad34,0x2965,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x3186,0xb596,0xc5f8,0x5aac,0x52cc,0x5b2d,0xadb7,0xadd8,0xadd8,0xadb7,0xa576,0xa597,0xadd8,0xa576,0xa576,0xa576,0x9d35,0x9d15,0x94f4,0x9d35,0xa576,0xa556,0xa577,0xa557,0x94f5,0x94f4,0x94d4,0x94f5,0x8cb4,0x8473,0x8473,0x8473,0x8493,0x8cb4,0x94d4,0x8c93,0x7c11,0x7c52,0x8cd4,0x8cb3,0x7c52,0x8493,0x8cd4,0x8473,0x7bf1,0x8452,0x7c32,0x7c72,0x7c72,0x8472,0x7c52,0x8c93,0x7c31,0x7411,0x7411,0x7c31,0x7411,0x7411,0x7411,0x8472,0x7c31,0x73f0,0x73f0,0x6bd0,0x73f0,0x7c31,0x7410,0x8451,0x8cb3,0x73d0,0x73f0,0x73d0,0x6baf,0x73f0,0x7410,0x73d0,0x6baf,0x6bd0,0x6baf,0x7411,0x73f1,0x6baf,0x73d0,0x7411,0x6bd0,0x6bcf,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6b8e,0x73f0,0x6bf0,0x6bcf,0x6bcf,0x73f0,0x73d0,0x6baf,0x636e,0x6b8f,0x6baf,0x636e,0x5b0c,0x6bcf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x636e,0x634d,0x634d,0x5b0c,0x5b0c,0x52cb,0x52cc,0x52ab,0x5aec, +0x630c,0x632c,0x6b4d,0x6b4d,0x632c,0x6b8d,0x7c0f,0x7bef,0x6b4d,0x5b0c,0x632c,0x630c,0x632c,0x632d,0x632d,0x6b4e,0x8430,0x73ae,0x5aec,0x632c,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x7bf0,0x7bf0,0x73af,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x636d,0x6b6e,0x6b8f,0x73af,0x638e,0x636d,0x634d,0x6b6d,0x6b8e,0x6b6e,0x6bae,0x73cf,0x6baf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x8431,0x8451,0x7c31,0x7c51,0x7c51,0x7c10,0x8411,0x73b0,0x73d0,0x7c31,0x7c11,0x7c31,0x7c32,0x7c31,0x7c32,0x8493,0x8452,0x8472,0x8c73,0x8472,0x8c93,0x8c93,0x8cb3,0x8473,0x8cb3,0x8cb3,0x8cb3,0x8473,0x94d4,0x94f4,0x8cd3,0x94f4,0x94f4,0x94f4,0x8cb3,0x8493,0x8cd4,0x9535,0x9d76,0x9515,0x8cb4,0x94f5,0x94f4,0x94f4,0x9d76,0x9d15,0x8cd4,0x9d36,0x94f5,0x9d15,0xadb7,0xa576,0xadb7,0xad97,0xa597,0xa597,0xb5d8,0xadb7,0xc67a,0xbe5a,0xadd8,0xb5f9,0x39e8,0x2924,0x2104,0x528c,0x6b90,0x9d16,0xef7e,0xa534,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x3186,0xad55,0xbdb7,0x5acc,0x5b0d,0x632d,0xa597,0xa5b8,0xadb8,0xadd8,0xa5b7,0xadd8,0xa597,0x9d76,0xadb8,0x9d56,0x9d36,0xa576,0x9d35,0x9d55,0xa576,0xad97,0xb5d8,0xa5b7,0x9d56,0x8cf4,0x8cb4,0x8cb4,0x8cb4,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x8c93,0x8c93,0x8473,0x8cb4,0x8cd4,0x8493,0x7c52,0x7c52,0x8492,0x8cb3,0x8c92,0x8c92,0x7c72,0x7c52,0x7c52,0x7c31,0x7c11,0x7412,0x7411,0x7411,0x73f0,0x7411,0x73f1,0x6bd0,0x7411,0x7c11,0x73d0,0x73f0,0x7410,0x73f0,0x7410,0x7410,0x7410,0x7c31,0x7c51,0x6baf,0x7410,0x7410,0x73d0,0x73f0,0x73d0,0x73f0,0x73cf,0x73f0,0x7411,0x7c31,0x7c31,0x7411,0x7c11,0x7411,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x73d0,0x73f0,0x6bd0,0x73d0,0x73f1,0x7c11,0x73f0,0x6bcf,0x6baf,0x638f,0x6baf,0x6bcf,0x6baf,0x7c10,0x73cf,0x73ef,0x6baf,0x73cf,0x6baf,0x6b8f,0x6b8e,0x634e,0x632d,0x5b0c,0x5aec,0x5b0c,0x632d, +0x632c,0x632c,0x632c,0x630c,0x6b4d,0x73cf,0x73cf,0x6b6d,0x632c,0x5b0c,0x632c,0x5b0c,0x632c,0x630c,0x632d,0x6b4d,0x8c51,0x738e,0x630c,0x630c,0x630c,0x632d,0x632c,0x632c,0x6b4d,0x738e,0x73cf,0x73cf,0x73af,0x73af,0x736e,0x738f,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x632d,0x6b6e,0x6b6e,0x6b6e,0x73ce,0x73cf,0x6bcf,0x6bcf,0x6baf,0x6baf,0x73cf,0x73af,0x73d0,0x7c51,0x7c51,0x7410,0x7c31,0x7410,0x7c10,0x7bf0,0xa534,0xb5b6,0x8471,0x73f0,0x8c93,0x94f4,0x8472,0x7c72,0x8492,0x7c72,0x8493,0x8cd4,0x8493,0x8492,0x8cb3,0x8cb3,0x8c73,0x8cb3,0x94d4,0x8cb3,0x8c73,0x9cf5,0x9d15,0x8cb3,0x9514,0x9d15,0x9514,0xa576,0x9d55,0xa576,0xadb7,0x9d35,0x8c93,0x8cb3,0x94d4,0x94f4,0x8cf4,0x9515,0x8cd4,0x9d15,0x9515,0x8cd4,0x9d15,0xa5b7,0xa596,0xadd7,0xa597,0xadb7,0xadd8,0xadd8,0xbe5a,0xc67a,0xadd8,0xb5f9,0xb61a,0x39c8,0x2924,0x2104,0x52ac,0x73b1,0xad78,0xffdf,0xa513,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18e3,0x39a6,0xa514,0xb576,0x630d,0x634e,0x6b6e,0xadd8,0xb5f8,0xb619,0xadd8,0xb5f8,0xadd7,0xadd8,0xadd8,0xa5b7,0xadb7,0xa597,0xadb7,0xadd7,0xad97,0xb5d7,0xadb7,0xadb8,0xad97,0xadb7,0x9515,0x9d35,0x9515,0x9515,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x8493,0x8c93,0x94f4,0x9d15,0x94d4,0x8cb4,0x8cb4,0x94f5,0x94f5,0x9515,0x8cb4,0x8cd4,0x8473,0x8452,0x8c93,0x8452,0x7c32,0x8451,0x8451,0x7c31,0x7c31,0x8451,0x8452,0x8451,0x8451,0x8431,0x7c31,0x8451,0x8472,0x8451,0x7bf0,0x7c11,0x73f0,0x7c31,0x7c11,0x73f0,0x73d0,0x73d0,0x7bf0,0x8411,0x7bf0,0x73cf,0x73cf,0x73cf,0x7c11,0x7bf0,0x6baf,0x73d0,0x6b8f,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6f,0x6b8f,0x6b8e,0x6b8f,0x636e,0x634e,0x634e,0x634d,0x634d,0x634d,0x634d,0x5b2d,0x5b2d,0x5aed,0x5b0d,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x4a8a,0x4a8a,0x4a8a, +0x6b6e,0x6b6d,0x634d,0x6b2d,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x6b6d,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b4d,0x6b6e,0x8431,0x6b6e,0x5aec,0x630c,0x632c,0x634d,0x632c,0x632d,0x6b6e,0x6b6e,0x7bf0,0x73cf,0x6bae,0x73af,0x6b8e,0x6b8e,0x6b8e,0x636d,0x636e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x634d,0x6b6e,0x6b6e,0x73af,0x73cf,0x73ef,0x73cf,0x73cf,0x73cf,0x73cf,0x6b8e,0x73cf,0x7c11,0x7c31,0x7c31,0x7411,0x7c11,0x7c10,0x7c11,0x7bd0,0xad96,0xad75,0x8471,0x8cb3,0x8452,0x8452,0x7c31,0x7c52,0x8472,0x8473,0x8473,0x8493,0x8493,0x8452,0x8c93,0x8c73,0x8c72,0x8c93,0x8c73,0x8472,0x8452,0x8c73,0x8c73,0x8c93,0x94d4,0x94f4,0x9d35,0xa576,0x9d14,0x94d3,0x94f4,0x94d3,0x94f4,0x94f4,0x94f4,0x8cf4,0x8cd4,0x94f4,0x9d15,0x9cf5,0x94d4,0x94f5,0x9d15,0xa556,0x9d56,0xa576,0xad77,0xadb8,0xad97,0xb5b8,0xc63a,0xadb8,0xadb8,0xadd8,0xadb8,0x31a7,0x2124,0x18e4,0x52ac,0x7bf2,0xbdfa,0xffff,0x9cd2,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x2104,0x39e7,0x9492,0xa4d4,0x630d,0x6b8f,0x738f,0x8432,0x7bf1,0x8432,0x7bf1,0x7bf1,0x7bd1,0x73b0,0x73b0,0x6b6f,0x6b90,0x73b0,0x7390,0x73b0,0x738f,0x7370,0x7390,0x7370,0x634f,0x6b4e,0x6b6e,0x6b6e,0x634e,0x6b6f,0x634e,0x5b2e,0x5b2d,0x5b0d,0x632d,0x632d,0x5aed,0x5aed,0x5aec,0x5aed,0x52cc,0x52cc,0x52ac,0x5acd,0x5acd,0x4a8c,0x4aac,0x4a8b,0x4aac,0x52ac,0x52ac,0x4a8b,0x4a6b,0x424a,0x4a6a,0x424a,0x4229,0x4249,0x424a,0x4a6a,0x424a,0x424a,0x424a,0x4229,0x424a,0x4a2a,0x4a2a,0x4209,0x39c8,0x4229,0x4209,0x39c8,0x31a8,0x39c8,0x39c8,0x39c9,0x39c8,0x39c8,0x31a8,0x31a8,0x2967,0x39c8,0x39c8,0x31a7,0x39c8,0x3187,0x3187,0x3187,0x3187,0x3167,0x39a7,0x3166,0x31a7,0x2124,0x2986,0x2125,0x2945,0x2945,0x2925,0x2945,0x3187,0x2105,0x3167,0x2146,0x2125,0x2966,0x39c7,0x2966,0x18c3,0x3186,0x2946,0x31c7,0x2946,0x2125,0x2966,0x31a7,0x2945,0x31a6,0x39c7,0x3166, +0x4a6a,0x4a6a,0x4a4a,0x4a49,0x4a49,0x4249,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4249,0x528a,0x4a6a,0x4229,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x4229,0x4a4a,0x4a4a,0x4a4a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4229,0x3a09,0x424a,0x4a4a,0x4a4a,0x424a,0x424a,0x4a6b,0x4a6a,0x4249,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x52ab,0x52ab,0x4a8b,0x52cb,0x52cc,0x52ab,0x4a8b,0x4a8b,0x528b,0x52ab,0x52ab,0x52ac,0x526c,0x422a,0x528b,0x52ac,0x4a6b,0x4a8c,0x52ac,0x52ac,0x52ac,0x52ac,0x4a8b,0x52ac,0x4a8b,0x528b,0x4a8b,0x4a8b,0x4a8b,0x4aab,0x528b,0x4a8b,0x528c,0x528c,0x4a8b,0x52ac,0x52ac,0x52ac,0x52ac,0x528c,0x4a6b,0x528c,0x52ad,0x5acd,0x52cc,0x4a8c,0x52cd,0x52ac,0x4a6b,0x4a6b,0x526b,0x4a4b,0x424b,0x4a6c,0x526c,0x4a4b,0x4a6c,0x526c,0x528c,0x524c,0x4a2b,0x528c,0x526c,0x526c,0x4a4c,0x524c,0x4a0c,0x2945,0x2944,0x18c3,0x52ac,0x8412,0xce3b,0xffff,0x9490,0x2964,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x18a3,0x18e3,0x2104,0x39c7,0x8410,0x9431,0x5aec,0x738f,0x6b6e,0x2947,0x3187,0x39c8,0x3187,0x1927,0x2147,0x3188,0x3188,0x2926,0x2126,0x2967,0x2967,0x3168,0x2967,0x2946,0x3187,0x2966,0x2966,0x31a8,0x3a09,0x3187,0x2966,0x39e8,0x39e8,0x4a6a,0x4229,0x4249,0x3a08,0x31a6,0x39c7,0x39e8,0x3a08,0x2987,0x31a8,0x31a7,0x3a08,0x3a08,0x31c7,0x31e8,0x3208,0x3a28,0x4228,0x4208,0x4229,0x4229,0x4208,0x39c7,0x39e8,0x39c7,0x39e7,0x4228,0x39e7,0x3a07,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4208,0x4a69,0x4a8a,0x31c7,0x3a08,0x4229,0x4249,0x4208,0x4208,0x4208,0x4228,0x4228,0x4229,0x4228,0x4249,0x39c8,0x39e8,0x4229,0x39c7,0x4249,0x3a08,0x39e8,0x4228,0x4207,0x4208,0x4209,0x39e8,0x4228,0x3a07,0x4228,0x3a08,0x39e8,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x3a08,0x3a07,0x31c7,0x4228,0x4208,0x39e7,0x31c7,0x39e7,0x4208,0x3a08,0x31e7,0x31e7,0x31c7,0x4269,0x4269,0x4a49,0x39a7,0x39c7, +0x2165,0x2166,0x2146,0x2966,0x3187,0x3187,0x2966,0x3187,0x2966,0x2146,0x31a7,0x2986,0x2145,0x2986,0x39e8,0x31c7,0x39e8,0x2966,0x2986,0x2986,0x2986,0x2966,0x31c7,0x39c8,0x2986,0x3a08,0x2986,0x29a7,0x3a08,0x2987,0x39c8,0x31a7,0x31c8,0x3a08,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x31e8,0x31c7,0x31a7,0x31c8,0x31c8,0x3a08,0x31a7,0x2986,0x31a7,0x31c8,0x31e8,0x3a29,0x3a49,0x3a08,0x39e8,0x39c8,0x31c7,0x31a7,0x39c8,0x39e8,0x4209,0x4a4a,0x4229,0x39e8,0x31a7,0x31c8,0x4229,0x3a09,0x39c7,0x4229,0x4209,0x3a08,0x31e8,0x3a08,0x4209,0x4209,0x4229,0x4249,0x4a6a,0x4a6a,0x4229,0x4229,0x4a4a,0x4208,0x528a,0x4a49,0x4a49,0x4a29,0x4229,0x4a49,0x4229,0x4a49,0x528a,0x4249,0x3a09,0x4a6a,0x4a6a,0x4208,0x39c7,0x41e9,0x4a49,0x4249,0x39e8,0x39c8,0x4a29,0x4a6a,0x4a6a,0x4229,0x4229,0x4229,0x4208,0x4249,0x4a6a,0x4a4a,0x4a4a,0x526a,0x2125,0x2945,0x18c3,0x52ac,0x8412,0xce5b,0xffff,0x8c2e,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x31a6,0x7bcf,0x8c10,0x5aec,0x738f,0x6b6e,0x4a69,0x528a,0x4228,0x4228,0x4228,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4229,0x4249,0x4208,0x3a08,0x4207,0x4248,0x4248,0x4249,0x4229,0x4208,0x4249,0x4a6a,0x4208,0x4a6a,0x4249,0x3a08,0x4a49,0x3a08,0x39e8,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x4228,0x3a08,0x3a08,0x3a28,0x3a09,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4a49,0x3a08,0x39c7,0x4208,0x4269,0x4228,0x4208,0x4a49,0x3a08,0x39e7,0x39e7,0x39e7,0x4229,0x4208,0x39e7,0x3a07,0x4228,0x39e8,0x31a7,0x39e8,0x39c7,0x4228,0x4228,0x39e8,0x39c7,0x3a08,0x31c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x31c7,0x3a28,0x3a07,0x3a07,0x39e8,0x39e8,0x31c7,0x31c7,0x39c7,0x3186,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x31c6,0x4a69,0x39e7,0x3186, +0x29a6,0x29a6,0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x39e7,0x29a6,0x29a6,0x31c7,0x31c7,0x31a6,0x31a6,0x3186,0x39c7,0x39e8,0x39e8,0x4249,0x3a28,0x29a6,0x31c7,0x4229,0x3a28,0x39e7,0x3a07,0x4248,0x4248,0x4a69,0x3a08,0x4249,0x3a08,0x3a08,0x4228,0x39e8,0x39c7,0x31c7,0x39e7,0x3a07,0x4228,0x39e7,0x39e8,0x4229,0x4228,0x31c7,0x31c7,0x3a08,0x39e8,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x4249,0x3a08,0x31c7,0x39e7,0x4248,0x4248,0x4249,0x4228,0x3a28,0x39e8,0x3a08,0x3a07,0x4228,0x4a49,0x4a49,0x3a28,0x39e8,0x4229,0x4229,0x4249,0x52aa,0x4269,0x4249,0x4a8a,0x4249,0x4228,0x4229,0x3a08,0x4208,0x4a49,0x4a49,0x5acb,0x4249,0x3a08,0x4a69,0x4a69,0x3a08,0x4229,0x4229,0x3a28,0x3a28,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4229,0x528a,0x528a,0x52ab,0x4a6a,0x4a49,0x4a49,0x4228,0x528a,0x4a8a,0x4a6a,0x526a,0x4a69,0x2124,0x2945,0x18a3,0x52ac,0x8c33,0xde9c,0xffff,0x842e,0x2944,0x2124,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a2,0x18a3,0x18a3,0x18c3,0x18e3,0x2103,0x2124,0x3186,0x7bcf,0x83f0,0x5aec,0x738f,0x6b4d,0x4a49,0x3a08,0x3a08,0x4a69,0x4228,0x4249,0x4228,0x31c7,0x39e8,0x4229,0x3a29,0x3a08,0x39e7,0x3a07,0x3a28,0x4a69,0x4208,0x39e8,0x39e8,0x4209,0x39e8,0x4229,0x3a28,0x3a08,0x4229,0x39c7,0x4249,0x4228,0x39e7,0x4208,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31c8,0x31e8,0x3a09,0x3a09,0x39e9,0x31a7,0x39e8,0x3a28,0x3a08,0x3a07,0x3a08,0x4228,0x4229,0x3a08,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x4208,0x3a28,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x4229,0x39e8,0x3a08,0x4228,0x4249,0x39e8,0x39e7,0x39e8,0x3a08,0x4249,0x3a08,0x31a6,0x39e8,0x31a7,0x39c7,0x39c6,0x39c7,0x39e7,0x31c7,0x3a07,0x31c7,0x39e8,0x3a08,0x39e8,0x4228,0x39e7,0x39c7,0x39e8,0x31a6,0x31c7,0x39e7,0x31c7,0x31e7,0x31c7,0x4249,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39c7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x3186,0x39c7,0x39e7,0x39c7,0x39e7, +0x3186,0x31a6,0x31a6,0x2966,0x2986,0x2986,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x29a6,0x31c7,0x31a6,0x3186,0x4a49,0x4208,0x3a08,0x4228,0x3a28,0x3207,0x39e7,0x3a08,0x31a6,0x39e7,0x3a28,0x3a08,0x31c7,0x4249,0x4229,0x4269,0x4a8a,0x31c7,0x4228,0x3a08,0x31c6,0x31a6,0x4249,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39e7,0x31c7,0x3a08,0x4a69,0x3a08,0x3a07,0x3a08,0x31e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4228,0x4208,0x4249,0x4229,0x4249,0x4228,0x4228,0x4a69,0x3a08,0x3a28,0x3a28,0x4228,0x3a08,0x4209,0x4229,0x4a49,0x4229,0x4a69,0x4a69,0x4228,0x4229,0x4a69,0x4228,0x39e8,0x39e8,0x4269,0x4249,0x4249,0x4a8a,0x5289,0x4a69,0x4a8a,0x528a,0x4a6a,0x4a8a,0x4249,0x4aaa,0x4269,0x4a8a,0x4289,0x3a28,0x4249,0x52cb,0x52ab,0x52ab,0x4a8b,0x2104,0x2945,0x18a3,0x52cd,0x8c54,0xdedc,0xffff,0x840d,0x2944,0x2945,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a3,0x18c3,0x20e3,0x2103,0x2124,0x3186,0x7bcf,0x8c10,0x5aec,0x738f,0x6b4d,0x4229,0x4208,0x4a6a,0x4228,0x39e7,0x31c7,0x31e7,0x31e7,0x3a08,0x4249,0x4229,0x4228,0x3a28,0x3a08,0x4249,0x4a8a,0x39e8,0x3a08,0x4249,0x39e8,0x4208,0x31e7,0x39e7,0x4229,0x4a49,0x4208,0x3a08,0x4a8a,0x4229,0x39e8,0x4208,0x39e8,0x39e8,0x39e7,0x39c7,0x4249,0x31c7,0x39e8,0x4a49,0x3a08,0x3a08,0x31a7,0x3a08,0x4249,0x4228,0x3a08,0x31c7,0x4a69,0x3a08,0x31e7,0x31a6,0x4249,0x4249,0x4228,0x31e7,0x4a69,0x4248,0x3a08,0x4228,0x4a69,0x52aa,0x3a08,0x4228,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x31e7,0x3a08,0x3a08,0x39e7,0x39c7,0x31a7,0x4228,0x39e7,0x31a7,0x39e7,0x3a07,0x4228,0x4248,0x3a08,0x39e8,0x31c7,0x39c7,0x39e7,0x4228,0x31a7,0x39e7,0x39e7,0x31c7,0x4228,0x3a07,0x3a08,0x4249,0x31a7,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x31c7,0x4208, +0x2945,0x29a6,0x31c7,0x31c8,0x31c7,0x31c7,0x31c7,0x31a6,0x39e8,0x39c7,0x31c7,0x3a08,0x39e7,0x31a6,0x4208,0x4249,0x31e7,0x39e7,0x31c7,0x3a08,0x4229,0x4208,0x4229,0x31a7,0x39e7,0x4228,0x31a7,0x39c8,0x4209,0x4228,0x4a49,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x31c7,0x39e7,0x39e7,0x4249,0x4249,0x3a08,0x31e7,0x39e8,0x3a08,0x39e8,0x39e8,0x4a6a,0x4a69,0x4249,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e7,0x4208,0x4229,0x3a08,0x4228,0x4228,0x4229,0x4228,0x4208,0x3a28,0x4269,0x4249,0x4a8a,0x4249,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4248,0x4a69,0x52aa,0x4a69,0x4228,0x4208,0x4208,0x4249,0x4a6a,0x4249,0x3a08,0x4a8a,0x4208,0x4aaa,0x52aa,0x4228,0x4228,0x4a69,0x528a,0x4269,0x4a8a,0x52ab,0x4229,0x4249,0x528a,0x528a,0x4208,0x4a6a,0x426a,0x2104,0x2925,0x18a3,0x5aed,0x9494,0xdedc,0xffff,0x7bed,0x2124,0x2124,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x3165,0x8410,0x9451,0x632d,0x7bf0,0x6b4d,0x3a08,0x4a8a,0x4a69,0x3a07,0x31e7,0x3a08,0x3a08,0x4228,0x3a08,0x4208,0x39e8,0x4208,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x4a69,0x3a08,0x3a08,0x4249,0x39e7,0x39e8,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4229,0x39e7,0x39e8,0x39a7,0x31a6,0x31e7,0x3a28,0x3208,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x3a07,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4248,0x4a49,0x39e7,0x3a08,0x4208,0x39e7,0x4248,0x3a08,0x39e7,0x3a08,0x3a07,0x39e7,0x4228,0x31c7,0x3a07,0x4228,0x31a6,0x3a08,0x4228,0x4208,0x4208,0x39e8,0x4228,0x39e7,0x31c7,0x4229,0x3a08,0x39c7,0x39e7,0x4208,0x4208,0x3a28,0x3a08,0x39e8,0x4208,0x3a08,0x31c6,0x39e8,0x39c8,0x3a08,0x39c7,0x4208,0x4208,0x39e8,0x4209,0x31e7,0x3a07,0x4228,0x3a07,0x4208,0x4208,0x31a6,0x39e7,0x3186, +0x39e7,0x29a6,0x2166,0x31c7,0x31a6,0x31c6,0x31a7,0x31c7,0x31a7,0x31c8,0x31c7,0x29a6,0x29a6,0x39c7,0x4208,0x4228,0x29a6,0x31a7,0x31c7,0x31a7,0x41e8,0x4a29,0x31a7,0x3186,0x39e7,0x4228,0x39e7,0x39c7,0x39e8,0x4a29,0x4209,0x4209,0x4a6a,0x39e7,0x39e7,0x31c7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x4228,0x4228,0x31e8,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x3a28,0x3a08,0x39e7,0x4228,0x39e8,0x4229,0x4229,0x39e7,0x4229,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a49,0x3a28,0x3a07,0x39e7,0x4228,0x4229,0x3a28,0x39e7,0x3a28,0x4228,0x4208,0x39e7,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x4229,0x3a08,0x4a69,0x4229,0x4208,0x4228,0x4249,0x4249,0x39e8,0x4249,0x528a,0x4249,0x4249,0x4249,0x39e8,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4a49,0x4a6a,0x528a,0x528a,0x52aa,0x4a49,0x4a29,0x4229,0x4a6a,0x528a,0x4228,0x4a6a,0x4a49,0x2104,0x2945,0x18a3,0x630e,0x9cd5,0xdebc,0xffff,0x7bcc,0x2103,0x2104,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x18c3,0x20e3,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x2104,0x2104,0x3165,0x8c51,0x9451,0x738f,0x8c52,0x736e,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x3a28,0x3a28,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x3a08,0x39e8,0x3a08,0x39e8,0x4249,0x4228,0x31c7,0x3a08,0x3a08,0x39e7,0x4208,0x4a49,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x4208,0x39c7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a28,0x3a28,0x31e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x4249,0x39e7,0x3a08,0x3a08,0x4228,0x31e7,0x4249,0x4a49,0x39c7,0x4208,0x4208,0x39e7,0x4a69,0x39e7,0x31a6,0x3a07,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4208,0x3a08,0x31c7,0x31e7,0x3a28,0x4248,0x3a08,0x31a6,0x39e7,0x3a07,0x3186,0x31a6,0x3a07,0x4228,0x39e7,0x31a7,0x31a7,0x39c7,0x31c7,0x31c7,0x3a08,0x3a08,0x3a08,0x31a7,0x31c7,0x39e8,0x31e8,0x31c7,0x31c7,0x3a07,0x3a07,0x4228,0x39e8,0x39e8,0x39e7,0x31c6,0x39e7,0x31a6,0x3a08,0x31c7,0x3a07,0x31c6,0x4228,0x3a08,0x39e7,0x3186,0x31c7,0x4228, +0x39c7,0x31c7,0x2946,0x3186,0x3a07,0x2986,0x2986,0x39e8,0x39e8,0x31a7,0x39c7,0x31a6,0x31e7,0x31a7,0x39e8,0x3186,0x3186,0x39c7,0x39e8,0x39e8,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a07,0x31a7,0x31c7,0x4229,0x4a6a,0x4209,0x4a49,0x4229,0x3a08,0x31c7,0x31c7,0x4229,0x3a08,0x39e8,0x3a09,0x3a08,0x4248,0x4228,0x31e7,0x31e7,0x31e7,0x4249,0x3a08,0x3a28,0x31e7,0x39e8,0x4208,0x4249,0x3a08,0x3a08,0x4269,0x3a08,0x4249,0x4a69,0x4a49,0x4249,0x4a49,0x3a08,0x4228,0x4269,0x39e7,0x4229,0x3a08,0x4229,0x4228,0x39e7,0x3a28,0x3a08,0x3a08,0x39e7,0x39e8,0x39e7,0x39e7,0x4228,0x31c7,0x4209,0x4229,0x4249,0x4228,0x4a6a,0x4229,0x4208,0x4229,0x3a08,0x4229,0x3a28,0x3a29,0x4249,0x4208,0x4a69,0x4249,0x3a08,0x4a49,0x4229,0x4229,0x4249,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x3a28,0x4a69,0x3a28,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a49,0x2104,0x2945,0x18a3,0x7390,0xad36,0xde9c,0xffbe,0x736c,0x2104,0x2104,0x18c3,0x18a2,0x2945,0x2944,0x2124,0x2103,0x2103,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x10a2,0x2124,0x3165,0x2944,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2103,0x18e3,0x18c3,0x1082,0x18e3,0x3186,0x2924,0x2103,0x18c3,0x18c2,0x18c2,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2944,0x2124,0x18e3,0x18c3,0x20e3,0x2104,0x3186,0x9492,0x8c31,0x8410,0x9c93,0x738e,0x4229,0x3a08,0x4a49,0x4a49,0x4228,0x4a69,0x4228,0x4228,0x3a28,0x39e7,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4228,0x4249,0x39e7,0x3a08,0x39e8,0x4249,0x4228,0x4a6a,0x4a69,0x3a08,0x39e8,0x39e8,0x4a69,0x39e7,0x4229,0x4228,0x3a08,0x4249,0x4229,0x39c7,0x31a7,0x3a08,0x3a08,0x3a08,0x31a6,0x39e7,0x3a08,0x31c7,0x3a07,0x39e7,0x4208,0x3a08,0x3a07,0x3a07,0x3a28,0x31c6,0x39e7,0x39e7,0x4249,0x3a08,0x4a49,0x39c7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x31c6,0x39e7,0x39c7,0x4228,0x31e7,0x3a08,0x3a28,0x39e7,0x3a08,0x39c7,0x31c7,0x39e7,0x39e7,0x39c7,0x3a08,0x3186,0x4a69,0x4228,0x39e7,0x39c7,0x4208,0x31a6,0x39e7,0x39e8,0x3a08,0x39e8,0x39c7,0x31a7,0x3a08,0x31c7,0x4248,0x4228,0x4248,0x39e7,0x4208,0x3a08,0x4248,0x39e7,0x39c7,0x39e8,0x31a7,0x31a6,0x4228,0x4a8a,0x3186,0x4208,0x31c7,0x39e7,0x31a6,0x39e7, +0x31a7,0x31a6,0x2966,0x39c7,0x31e7,0x2986,0x2145,0x41e8,0x4a4a,0x39e7,0x2965,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39c7,0x4a49,0x4228,0x31a6,0x3a07,0x4249,0x31e7,0x31e7,0x39e7,0x3a08,0x39e8,0x31c7,0x4a8a,0x4249,0x39e7,0x4208,0x39c7,0x39c7,0x31a7,0x4249,0x4249,0x31c7,0x39e8,0x39c8,0x31c7,0x4228,0x4208,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4229,0x4228,0x4249,0x3a08,0x3a07,0x4248,0x4249,0x4228,0x4249,0x4a8a,0x39e8,0x39e7,0x31e7,0x3a28,0x3a28,0x4249,0x39e8,0x4a69,0x52aa,0x4a69,0x39e7,0x4228,0x4a49,0x4249,0x52aa,0x4a6a,0x3a09,0x4208,0x4208,0x4228,0x4269,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4a6a,0x4208,0x4a49,0x4229,0x4229,0x4a69,0x4a69,0x4248,0x528a,0x52cb,0x52ab,0x426a,0x3a28,0x4a8a,0x4249,0x4a8a,0x4a69,0x4a49,0x4228,0x4a69,0x20e3,0x2965,0x18c4,0x7bd1,0xb576,0xd67b,0xef3c,0x632b,0x2104,0x2104,0x18c3,0x18a3,0x2965,0x2945,0x3165,0x2944,0x2944,0x3165,0x3185,0x2965,0x2944,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2944,0x2965,0x2924,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x2945,0x31a6,0x3186,0x2965,0x18e3,0x20e3,0x2124,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2924,0x2944,0x2945,0x2965,0x3165,0x3165,0x2104,0x18e3,0x1082,0x2104,0x41e8,0x3186,0x31a6,0x3165,0x2944,0x2945,0x2945,0x2965,0x3165,0x3185,0x2965,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x3186,0x39a6,0x2945,0x18e3,0x18c3,0x18e3,0x20e3,0x3186,0x9492,0x83f0,0x8c51,0x9cd3,0x630d,0x4229,0x52ab,0x4a49,0x4229,0x39e8,0x3a08,0x4249,0x4228,0x4249,0x4249,0x4249,0x4228,0x3a08,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x4a8a,0x4228,0x4208,0x4228,0x39e7,0x4249,0x4228,0x3a08,0x3a08,0x4229,0x4249,0x31e7,0x39e7,0x39c7,0x4208,0x39e8,0x31a7,0x31c7,0x3a08,0x39c7,0x3a08,0x31e7,0x31c7,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x4208,0x39e7,0x4228,0x3a28,0x39e7,0x39e7,0x39e7,0x4228,0x39e7,0x31c7,0x39c6,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x3a07,0x39c7,0x4228,0x3a07,0x31e7,0x39e7,0x52aa,0x39e7,0x3a08,0x39e7,0x3187,0x4a49,0x4228,0x31c6,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x31c7,0x3a08,0x4228,0x3a08,0x31a6,0x31a6,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39c7,0x4249,0x31a6,0x4228,0x39e7,0x39e7, +0x3186,0x2965,0x3186,0x39e8,0x29a6,0x2186,0x29a7,0x39c7,0x39e8,0x3a08,0x3a07,0x3a07,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x39e8,0x39e7,0x31e7,0x4249,0x31a6,0x31c6,0x39e8,0x39e8,0x3a28,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x39e8,0x39c7,0x39e8,0x31c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31a7,0x39a7,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4229,0x4228,0x3a08,0x4249,0x3a29,0x3a08,0x4249,0x4229,0x4249,0x4249,0x4249,0x39e7,0x39e8,0x3a28,0x3a28,0x3a49,0x4249,0x4208,0x4228,0x4a6a,0x39e8,0x39e8,0x4208,0x4a8a,0x4a49,0x4229,0x3a08,0x4249,0x4249,0x4a49,0x4249,0x4a69,0x3a08,0x3a08,0x3a08,0x3a07,0x4228,0x4229,0x4249,0x4229,0x4249,0x426a,0x4229,0x4249,0x4228,0x4a49,0x528a,0x4249,0x4249,0x4a8a,0x4249,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a8a,0x18e3,0x2945,0x18c4,0x7bd2,0xb596,0xce3a,0xd679,0x5aca,0x2104,0x1903,0x18c3,0x18a3,0x2965,0x20e4,0x2104,0x10a2,0x2104,0x3165,0x2945,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2124,0x2124,0x2104,0x18c3,0x1082,0x2945,0x3166,0x2945,0x18e3,0x18c3,0x2124,0x2924,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x3165,0x3186,0x2924,0x2924,0x2945,0x2104,0x18e3,0x1082,0x2104,0x39e8,0x2965,0x2965,0x2944,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x3165,0x41e7,0x39c6,0x31a6,0x3186,0x3185,0x3165,0x2124,0x2924,0x3165,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2965,0x8431,0x738f,0x8c51,0x9cb3,0x4a29,0x4228,0x4a69,0x4249,0x4249,0x3a08,0x3a29,0x4249,0x4249,0x3a29,0x3a29,0x31e7,0x3a08,0x39e7,0x3a08,0x31c7,0x39e8,0x4249,0x39e7,0x39c7,0x3a08,0x4a69,0x3a08,0x4229,0x4a69,0x39e7,0x3a08,0x4228,0x4208,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39e7,0x4a69,0x3a08,0x3a08,0x4249,0x4208,0x39c7,0x3a08,0x4208,0x3a08,0x4208,0x4a49,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a07,0x4248,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x31c7,0x39e8,0x4208,0x39e8,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a28,0x3a07,0x4269,0x52eb,0x31e7,0x3a07,0x39e7,0x31e7,0x4a69,0x4a49,0x2986,0x3a08,0x4249,0x31c7,0x39e7,0x31c7,0x31c7,0x31c6,0x3a28,0x4269,0x3a08,0x39e7,0x4228,0x3207,0x29a7,0x31c7,0x39e8,0x39e8,0x39c7,0x39e7,0x39e7,0x31c7,0x31c7, +0x2986,0x2965,0x31a6,0x29a7,0x29c7,0x29a7,0x31e7,0x31c7,0x31a6,0x3a08,0x3a08,0x31a6,0x31a7,0x3a08,0x3a08,0x31c7,0x2986,0x39c8,0x3a08,0x31c7,0x31c7,0x4a6a,0x4a8a,0x4249,0x39e8,0x39e8,0x31e7,0x3a28,0x3a28,0x3a08,0x3a07,0x39e7,0x31c7,0x31a7,0x4208,0x4208,0x39e7,0x31a7,0x31a7,0x39c7,0x39e7,0x39c7,0x31c7,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x39e8,0x4208,0x4208,0x4228,0x4a8a,0x4228,0x4a69,0x4249,0x3a08,0x4208,0x4229,0x4249,0x4248,0x4249,0x4269,0x4a8a,0x4aaa,0x4269,0x4a8a,0x4228,0x39e7,0x3a08,0x4228,0x3a28,0x3a28,0x4249,0x39e7,0x4249,0x3a28,0x39e7,0x39e8,0x3a28,0x4249,0x4249,0x31e7,0x4aaa,0x4249,0x3a28,0x4228,0x4229,0x4249,0x39e8,0x39e7,0x4228,0x3a28,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x4208,0x5acb,0x4a49,0x4208,0x39e8,0x4228,0x4229,0x4229,0x4228,0x4a49,0x4a69,0x4a69,0x4249,0x4a69,0x4a6a,0x4a69,0x426a,0x18e3,0x2925,0x18c4,0x7bb1,0xb596,0xbdb7,0xb596,0x52aa,0x2103,0x18e3,0x18c3,0x18a3,0x2965,0x10a2,0x0861,0x0861,0x2944,0x2945,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x20e4,0x20e3,0x18e3,0x18e3,0x2104,0x2945,0x2104,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x2925,0x2104,0x1082,0x0861,0x18e3,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2124,0x2104,0x2104,0x2124,0x2965,0x2945,0x18a2,0x18c3,0x18e3,0x18c3,0x1082,0x20e4,0x3186,0x18a3,0x10a2,0x2104,0x2924,0x2104,0x2104,0x2104,0x2124,0x2104,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x3185,0x2924,0x1082,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x3186,0x7bcf,0x632e,0x8411,0x8411,0x39a7,0x3a07,0x4249,0x4a69,0x4249,0x4249,0x4229,0x3a29,0x3a08,0x3a29,0x3a28,0x39e7,0x3a08,0x3a08,0x4228,0x31c7,0x4228,0x4228,0x4249,0x4228,0x39c7,0x3a08,0x4249,0x4208,0x3a08,0x39e8,0x4249,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a49,0x4228,0x4229,0x3a08,0x3a07,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c6,0x3a08,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4228,0x4228,0x4208,0x4249,0x39c7,0x31a6,0x39c7,0x4249,0x4249,0x3a08,0x31c7,0x4228,0x31a6,0x52aa,0x4208,0x31a6,0x3a08,0x31c7,0x3a07,0x4228,0x3a08,0x4a69,0x39e8,0x4229,0x4208,0x3a08,0x4228,0x4228,0x39c7,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x4249,0x3a07,0x39e7,0x39e7,0x31e7,0x4249,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x4249,0x31c7,0x31e7,0x3a28,0x3a08,0x4208,0x39e8,0x41e8,0x3a08,0x31e7,0x31c7,0x31a7,0x3186,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7, +0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x2986,0x31a7,0x31a7,0x3186,0x31c7,0x31a7,0x2966,0x39c7,0x3a08,0x31a6,0x31a6,0x39c7,0x39e8,0x3a28,0x3a08,0x31c7,0x39c8,0x4229,0x4208,0x31a7,0x39e8,0x3a08,0x3a08,0x39e7,0x31e7,0x3a28,0x39c7,0x31a7,0x31a6,0x39c7,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e7,0x4249,0x39e8,0x31c7,0x39e7,0x31e7,0x31e7,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x4249,0x39e7,0x4a49,0x4228,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4a69,0x4249,0x4a8a,0x4249,0x4249,0x31c7,0x3a08,0x4249,0x4249,0x4228,0x4228,0x4a49,0x4a69,0x3a08,0x3a28,0x4249,0x3a07,0x3a08,0x3a28,0x3a08,0x4249,0x4269,0x4248,0x4249,0x4228,0x4229,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4229,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4208,0x4a49,0x4249,0x4229,0x4249,0x3a08,0x4228,0x4a49,0x4208,0x4208,0x4249,0x4229,0x4a6a,0x4249,0x4a6a,0x4a8a,0x18c3,0x2104,0x18c4,0x7391,0xbdb7,0xad35,0x9cf4,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2945,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2944,0x2144,0x2925,0x2945,0x2945,0x2924,0x2124,0x2124,0x2945,0x2965,0x3185,0x0861,0x0841,0x18c3,0x18a2,0x1082,0x2124,0x10a2,0x0020,0x0841,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2924,0x2925,0x2925,0x2124,0x2124,0x2124,0x2965,0x31a6,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x20e3,0x2124,0x0841,0x0861,0x2945,0x2124,0x2124,0x2924,0x2924,0x2945,0x2925,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3186,0x3186,0x1062,0x0861,0x1082,0x20e4,0x18c3,0x18c3,0x2104,0x39c7,0x6b4e,0x630d,0x73af,0x738e,0x3186,0x39e8,0x4a69,0x4a8a,0x52aa,0x4a49,0x3a08,0x3a08,0x31e7,0x3a28,0x4248,0x4249,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x3a08,0x4229,0x39c7,0x3a08,0x3a08,0x4249,0x4228,0x39c7,0x4208,0x3a08,0x4a8a,0x3a28,0x4228,0x3a08,0x4228,0x4208,0x4208,0x4a49,0x39e8,0x3a08,0x4228,0x31c7,0x4228,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x4a69,0x4a69,0x3a28,0x4269,0x31c7,0x3a08,0x3a08,0x3a08,0x39e8,0x39c7,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x31a7,0x4229,0x39e8,0x39e7,0x3a07,0x4208,0x39e7,0x31c6,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e8,0x39e8,0x39e8,0x31c7,0x31a7,0x39e7,0x39e7,0x4249,0x4a49,0x31c7,0x4228,0x3a08,0x31c7,0x2986,0x3a08,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x4228,0x31c7,0x39e8,0x39e8,0x39c7,0x3a08,0x29a6,0x31e7,0x4269,0x3a08,0x2986,0x31a6,0x3a08,0x39e8,0x31a7,0x3166, +0x31a7,0x31c7,0x31a6,0x31a7,0x29a6,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x39c7,0x39c7,0x39c8,0x4229,0x3a28,0x3a28,0x3a07,0x3a07,0x31e7,0x31c7,0x31a7,0x31a7,0x39e8,0x39e8,0x31e7,0x31c7,0x4208,0x39e7,0x39e8,0x4208,0x39e8,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x4208,0x4208,0x4249,0x3a08,0x31e7,0x3a28,0x3a08,0x3a08,0x3a28,0x3a08,0x4a6a,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x3207,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x4a69,0x4269,0x4249,0x3a28,0x3a28,0x4248,0x4269,0x4a69,0x4208,0x4249,0x4a8a,0x4208,0x41e8,0x4a49,0x3a08,0x39e8,0x4228,0x4a69,0x4a49,0x4249,0x4228,0x4a69,0x4a69,0x4aaa,0x4249,0x4228,0x4a69,0x4228,0x528a,0x4a49,0x3a08,0x4229,0x4a6a,0x4249,0x4a49,0x39e8,0x4229,0x3a08,0x3a29,0x4208,0x4229,0x4249,0x4269,0x4229,0x4229,0x4249,0x4249,0x426a,0x4249,0x4a8b,0x52cb,0x18c3,0x2104,0x18c4,0x7371,0xc5f8,0xa535,0x94b3,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2124,0x0861,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x4a05,0x39c5,0x2965,0x2965,0x2945,0x2965,0x3166,0x3186,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x41e5,0x4a25,0x4205,0x3185,0x2965,0x2965,0x2965,0x2965,0x31a6,0x10a2,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x20e3,0x0020,0x1081,0x2965,0x2945,0x2965,0x2965,0x3186,0x3186,0x41e5,0x4a25,0x4205,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0841,0x0861,0x18e3,0x18a2,0x18c3,0x2104,0x31a7,0x5aec,0x5acc,0x6b6e,0x630d,0x2965,0x4229,0x4209,0x4249,0x52aa,0x4a69,0x4229,0x39e8,0x4a69,0x4a69,0x4269,0x4228,0x3a08,0x4229,0x4229,0x39e8,0x4249,0x3a08,0x4228,0x3a08,0x4249,0x3a08,0x3a07,0x4228,0x39e7,0x4a49,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x3a08,0x4228,0x39e7,0x4228,0x4229,0x31c7,0x4208,0x39e8,0x39a7,0x39e7,0x4248,0x3a07,0x39e7,0x39e7,0x31a6,0x39c7,0x4208,0x4249,0x4a69,0x3a08,0x31c7,0x31c7,0x4249,0x4228,0x39e8,0x3a08,0x4228,0x4249,0x3a08,0x3a08,0x31c7,0x31e7,0x31e7,0x31c7,0x3a28,0x4208,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x3a07,0x31a6,0x4a6a,0x39e7,0x31c7,0x3a08,0x4a6a,0x39e8,0x4208,0x3a08,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x31c7,0x4249,0x4a69,0x31c7,0x3a08,0x31e7,0x31c7,0x4249,0x4249,0x31e7,0x31e7,0x3a08,0x29a6,0x2985,0x4228,0x39e8,0x31c7,0x3a08, +0x39c7,0x39c7,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x426a,0x426a,0x31c7,0x4228,0x31c7,0x3a08,0x31c7,0x29a6,0x3a28,0x3a28,0x31c7,0x31c7,0x3a08,0x4229,0x4229,0x3a08,0x31a6,0x31e7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c7,0x39e8,0x4229,0x4a6a,0x3a08,0x31a6,0x4228,0x4249,0x3a08,0x3a08,0x4229,0x52ab,0x3a08,0x3a49,0x4249,0x4228,0x4208,0x4a8a,0x4249,0x3a08,0x4a69,0x3a08,0x3a08,0x4a49,0x39e8,0x3a08,0x3a08,0x4a49,0x4228,0x4a69,0x4a8a,0x4228,0x4269,0x3a08,0x4229,0x3a08,0x4208,0x4228,0x4228,0x4228,0x41e8,0x39e7,0x39e8,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4228,0x4248,0x4249,0x31e7,0x39e7,0x4208,0x4a89,0x4a49,0x39e8,0x4229,0x39e8,0x39e8,0x3a09,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x4a69,0x4249,0x4229,0x4a69,0x4249,0x4228,0x4249,0x4249,0x4249,0x52aa,0x528a,0x4a6a,0x18c3,0x2124,0x18a3,0x6b30,0xd659,0xad35,0x8c72,0x4a69,0x20e3,0x18c3,0x18c3,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4a45,0x8385,0x5264,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x0861,0x0020,0x10a2,0x1082,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x4a25,0x7b65,0x7324,0x7b65,0x5a64,0x3165,0x3166,0x2966,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18e3,0x0020,0x1082,0x2965,0x2965,0x3186,0x3186,0x3186,0x4226,0x7b65,0x7b65,0x8385,0x5246,0x3186,0x3186,0x3186,0x31a7,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x18a2,0x18c3,0x20e4,0x2945,0x52ab,0x52ab,0x6b6e,0x5aec,0x2945,0x4a6a,0x4229,0x4229,0x4a69,0x4228,0x3a08,0x3a08,0x4a69,0x4a89,0x4a8a,0x3a08,0x3a08,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x4228,0x4249,0x39e7,0x4228,0x4248,0x4249,0x4228,0x4249,0x4a69,0x3a08,0x4208,0x4229,0x4229,0x4a69,0x4228,0x4a8a,0x4229,0x4229,0x4229,0x4208,0x4208,0x31a7,0x31c6,0x4228,0x39c7,0x31a6,0x4228,0x39e8,0x39c7,0x4208,0x4229,0x3a08,0x3a08,0x39e7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x4229,0x4249,0x31c7,0x3a08,0x39e7,0x4a69,0x39e7,0x31a7,0x39e8,0x4208,0x39c7,0x4208,0x4249,0x39e7,0x39e7,0x3a08,0x3a08,0x31c7,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31a7,0x4a69,0x3a08,0x31c7,0x4a69,0x4249,0x39e8,0x4a49,0x4208,0x39c7,0x31a6,0x39e7,0x4248,0x39e7,0x39e7,0x4228,0x31c7,0x39e7,0x4208,0x39e8,0x3a08,0x3a08,0x31a6,0x4228,0x52aa,0x31a7,0x3186,0x3186,0x31a6,0x2986,0x3a08,0x31a7,0x39e8,0x39c7, +0x3186,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31a7,0x31c7,0x31e7,0x31a7,0x29a6,0x2986,0x31c7,0x31a7,0x31e8,0x31c8,0x31a7,0x31c7,0x39c7,0x4208,0x4228,0x39e7,0x31e7,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x31a6,0x39e7,0x31c7,0x31c7,0x31c8,0x3a08,0x4228,0x39e7,0x4269,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x39e8,0x4228,0x39e7,0x39c7,0x4a69,0x3a08,0x3208,0x4249,0x4208,0x31e7,0x4229,0x4229,0x4a49,0x4a49,0x41e8,0x4208,0x4a49,0x4249,0x4229,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x39c7,0x39e8,0x4229,0x4249,0x3a08,0x3a08,0x3a08,0x4249,0x4249,0x4228,0x4228,0x3a08,0x4a69,0x39e7,0x4a69,0x3a08,0x39e8,0x4228,0x4208,0x39e8,0x3a08,0x4249,0x4228,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a69,0x4228,0x4a49,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x52aa,0x4a8a,0x3a08,0x18c3,0x2124,0x18c3,0x6b30,0xdeba,0xb575,0x8c51,0x4a49,0x20e3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2945,0x4a46,0x7b45,0xa465,0x62a4,0x2945,0x2965,0x2965,0x2965,0x3186,0x2965,0x0861,0x0020,0x1082,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x7325,0x8bc5,0x5a64,0x8bc5,0x8384,0x3165,0x2966,0x3166,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x2966,0x2966,0x3186,0x3186,0x5ac6,0x8bc5,0x6ae5,0x9405,0x7305,0x3186,0x3186,0x3186,0x3187,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a3,0x18e3,0x2124,0x4a6a,0x528b,0x632d,0x5acc,0x2965,0x4a6a,0x4229,0x4229,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x3a08,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4a49,0x4a49,0x4269,0x4229,0x4249,0x3a08,0x4229,0x4a49,0x4248,0x3a08,0x39e7,0x3a07,0x4228,0x4a69,0x3a08,0x3a08,0x3a08,0x4a49,0x52aa,0x4249,0x4228,0x4228,0x3a08,0x4248,0x39e7,0x3a07,0x4208,0x4248,0x4229,0x31c7,0x4249,0x3a08,0x31a6,0x4249,0x3a08,0x39c7,0x4208,0x39e7,0x31e7,0x39e7,0x4228,0x4249,0x4249,0x39e7,0x39c7,0x39e7,0x39e8,0x39e8,0x31a7,0x39c7,0x39c8,0x31a6,0x39e7,0x4a49,0x4228,0x39e7,0x4249,0x4208,0x3a08,0x39c7,0x31a6,0x31c7,0x31e7,0x39e7,0x4229,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x4208,0x39e8,0x3a08,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x31a7,0x31c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39e7, +0x2966,0x2966,0x39e7,0x3186,0x2986,0x31a7,0x3186,0x3186,0x31c7,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e8,0x3a08,0x31a6,0x39e8,0x39e8,0x39e7,0x3a08,0x4229,0x39c7,0x3a07,0x4248,0x3a29,0x3a08,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x39e7,0x4248,0x4228,0x39e8,0x4249,0x3a08,0x41e7,0x39c7,0x3a08,0x3a08,0x3a08,0x31c7,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x4209,0x4229,0x39e8,0x4229,0x3a08,0x39e8,0x4229,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4229,0x39e8,0x39e9,0x4249,0x4249,0x4249,0x4a6a,0x39e8,0x4208,0x4208,0x4229,0x4208,0x4229,0x3a08,0x3a08,0x3a28,0x39e7,0x3a08,0x4a49,0x4208,0x39e7,0x4208,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x4a49,0x528a,0x3a08,0x4a69,0x4228,0x39e7,0x4229,0x4249,0x4208,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4229,0x4228,0x4249,0x4a49,0x4248,0x3a08,0x18a3,0x2104,0x18c3,0x62ef,0xe6fb,0xb595,0x8c51,0x4a49,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x4206,0x5a85,0x9425,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x62c6,0x5a85,0x39a5,0x83a5,0x83a4,0x3165,0x2965,0x3166,0x3186,0x3186,0x10a2,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3166,0x3166,0x3186,0x4a46,0x5a85,0x5a65,0x9405,0x7305,0x3165,0x3186,0x3186,0x3186,0x31a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a2,0x18c3,0x2104,0x4229,0x528b,0x630d,0x528b,0x2945,0x4249,0x4269,0x4a8a,0x4229,0x3a08,0x4a69,0x4a69,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x4a69,0x4a8a,0x4208,0x4228,0x4a89,0x4a69,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x4229,0x39e8,0x39c7,0x4249,0x3a08,0x3a08,0x39e8,0x39c7,0x39e7,0x3a08,0x31e7,0x3a08,0x4248,0x3a08,0x3a08,0x4228,0x4249,0x3a08,0x39e8,0x4228,0x4208,0x39e7,0x4208,0x4249,0x4269,0x39e8,0x39e7,0x4a49,0x39e8,0x39e7,0x4208,0x4208,0x4249,0x31e7,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x39c7,0x4249,0x4228,0x39e7,0x39e7,0x39e8,0x4229,0x4208,0x4208,0x39e8,0x39c7,0x3a08,0x31a6,0x29a6,0x31c7,0x39e7,0x3a07,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x29a6,0x4248,0x3a28,0x31e7,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x3a08,0x31e7,0x4229,0x4208,0x39e8,0x4249,0x31a6,0x2965,0x2965,0x39c6,0x39e7, +0x31a6,0x31c7,0x31c6,0x2986,0x2986,0x2986,0x3186,0x31c6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x31c7,0x3a07,0x39e7,0x29a6,0x39e8,0x4229,0x3a08,0x31c8,0x31c8,0x3a09,0x4209,0x4208,0x3a08,0x3a07,0x3a08,0x3a49,0x4229,0x31c7,0x4a69,0x4228,0x3a08,0x39e7,0x31c7,0x3a28,0x4a69,0x4228,0x39e7,0x4249,0x4248,0x39e7,0x3a08,0x3a07,0x3a07,0x4228,0x4208,0x4208,0x4228,0x4208,0x39e7,0x4249,0x4a8a,0x3a08,0x39e8,0x4208,0x4229,0x4a6a,0x39e8,0x4208,0x4228,0x4228,0x4a69,0x4a49,0x39c7,0x4a8a,0x4aaa,0x3a08,0x31a7,0x3a09,0x39e8,0x31c8,0x3a09,0x39e8,0x39e8,0x4a48,0x4a49,0x4249,0x4208,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a08,0x4249,0x4249,0x52aa,0x4249,0x4229,0x3a08,0x4a6a,0x4a69,0x4269,0x4249,0x39e7,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4229,0x4229,0x4228,0x4a8a,0x4a69,0x4249,0x4a49,0x528a,0x4a69,0x4a8a,0x4249,0x18a3,0x18e3,0x18a3,0x5aae,0xe6fc,0xbd96,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x3185,0x3185,0x8be6,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x39c6,0x41e5,0x62c5,0x8bc5,0x5a84,0x2965,0x2965,0x2965,0x3165,0x3186,0x1082,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x3166,0x3186,0x39a6,0x39c5,0x62e5,0x9c45,0x6ae4,0x3165,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0820,0x0861,0x18a3,0x10a2,0x18c3,0x18c3,0x2104,0x3a08,0x4a6a,0x5aec,0x4a29,0x2124,0x4249,0x4249,0x4229,0x4229,0x4a8a,0x3a08,0x4249,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a89,0x528a,0x4a49,0x4228,0x4208,0x31a7,0x4229,0x4a49,0x3a08,0x39e8,0x39c8,0x41e8,0x4208,0x4a49,0x4a69,0x4228,0x4228,0x4249,0x4a49,0x4229,0x41e8,0x4208,0x39e8,0x39e7,0x3a08,0x3a28,0x4228,0x4a69,0x3a08,0x31c7,0x4228,0x4248,0x39e7,0x39e7,0x3a08,0x4249,0x39e8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e8,0x4208,0x4208,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3186,0x39e7,0x3186,0x39e8,0x4208,0x31a7,0x39e8,0x4208,0x39e8,0x4208,0x4a49,0x4208,0x4208,0x39e8,0x31c7,0x31e7,0x3a28,0x31e7,0x3a07,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x31a7,0x39e7,0x4228,0x39e7,0x39e8,0x39c7,0x39c7,0x4228,0x4a69,0x4249,0x31e7,0x39e7,0x4249,0x4229,0x31a7,0x3a08,0x39e8,0x39e8,0x31a7,0x4208,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7, +0x31c6,0x39e7,0x31a6,0x2986,0x2965,0x2986,0x4208,0x39c7,0x2986,0x31c7,0x39c8,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c7,0x3a08,0x31e8,0x29a7,0x31c8,0x3a09,0x4229,0x4a49,0x4228,0x39c7,0x31e7,0x31e7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a08,0x4249,0x4208,0x4248,0x39c7,0x39e8,0x4a69,0x4a69,0x4a49,0x4248,0x39e7,0x3a08,0x4a49,0x4a49,0x4208,0x4228,0x3a08,0x39e8,0x4a69,0x4249,0x528a,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4208,0x4228,0x39e7,0x4228,0x39e8,0x4a49,0x4249,0x3a07,0x4a69,0x3a07,0x3a08,0x3a08,0x4209,0x4229,0x4208,0x39e7,0x39e8,0x39e8,0x4228,0x4228,0x39e7,0x4208,0x4249,0x4a49,0x4228,0x4249,0x4249,0x4228,0x4229,0x4a6a,0x4229,0x4229,0x3a08,0x4a69,0x4a69,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4208,0x4228,0x4a69,0x4249,0x4249,0x4a6a,0x4229,0x4249,0x4a6a,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4229,0x18a3,0x18e3,0x10a3,0x528d,0xdebb,0xb595,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x8bc6,0x62c4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2966,0x2965,0x2965,0x39c5,0x6b25,0x8bc5,0x6ae4,0x39c5,0x2965,0x2965,0x2965,0x2965,0x3186,0x1082,0x0841,0x1082,0x18c2,0x1082,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x2965,0x3165,0x4a45,0x5245,0x5245,0x8be5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1061,0x18a3,0x10a2,0x18c3,0x18e3,0x2104,0x39e8,0x4a4a,0x52ab,0x41e8,0x2124,0x3a28,0x4a8a,0x4228,0x4a8a,0x52aa,0x4228,0x4a49,0x4208,0x4a49,0x4a49,0x4229,0x4a69,0x4249,0x4249,0x4a49,0x4249,0x3a08,0x4a6a,0x39e8,0x4208,0x4a8a,0x4229,0x4a49,0x39e7,0x39e8,0x4208,0x4229,0x4228,0x3a07,0x4228,0x4208,0x4229,0x4208,0x4a29,0x41e8,0x4208,0x39c7,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x31a6,0x4a69,0x4249,0x31a6,0x31a6,0x3a08,0x4269,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x4208,0x4229,0x31a7,0x3a28,0x3a28,0x3a28,0x4229,0x39e8,0x39e8,0x3a08,0x39e7,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x3a08,0x4a8a,0x3a08,0x31c7,0x3207,0x31c6,0x39e8,0x4a69,0x3a07,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x39e7,0x31c7,0x4248,0x4249,0x3a08,0x31a7,0x31a7,0x39e8,0x39e8,0x2986,0x31a6,0x4228,0x4228,0x31a6,0x29a6,0x4228, +0x31c6,0x31a6,0x2986,0x2966,0x2986,0x2966,0x39c7,0x39c7,0x31c7,0x39e8,0x4208,0x31a7,0x31a7,0x31c7,0x31a6,0x39c7,0x39e8,0x39e8,0x39e8,0x31a7,0x31c7,0x31c8,0x31e8,0x31c7,0x31c7,0x4208,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e7,0x31a7,0x39c7,0x4228,0x4208,0x31c8,0x39e8,0x4249,0x4208,0x41e8,0x4208,0x4208,0x4208,0x4208,0x4a6a,0x3a08,0x4228,0x31a7,0x3a08,0x4a8a,0x4228,0x4228,0x52aa,0x4a69,0x52aa,0x4249,0x4228,0x39e7,0x3a28,0x3a28,0x4228,0x4249,0x39e8,0x4229,0x4a6a,0x4a49,0x3a07,0x4249,0x39e8,0x3a08,0x4249,0x4249,0x4208,0x4208,0x4229,0x4228,0x4228,0x4249,0x4249,0x4208,0x39e8,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x3a08,0x39e7,0x4229,0x4229,0x4229,0x3a49,0x3a28,0x39e8,0x4208,0x4228,0x4228,0x4a6a,0x4a69,0x3a08,0x3a08,0x52aa,0x4249,0x4228,0x4a49,0x4a6a,0x4249,0x3a29,0x4229,0x4208,0x18a3,0x2104,0x18c3,0x4a4c,0xce39,0xa534,0x7c10,0x4228,0x18e3,0x18e3,0x18c3,0x18a3,0x2104,0x0861,0x0841,0x1082,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x83a6,0x62a4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x3165,0x2965,0x2965,0x2945,0x5aa5,0x9c45,0x8bc4,0x62c4,0x5245,0x2965,0x2965,0x2965,0x2965,0x3185,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x18c2,0x0020,0x1082,0x2965,0x3186,0x3186,0x3186,0x3165,0x62e5,0x8385,0x5a64,0x83c5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x39c7,0x4229,0x4a6a,0x39c8,0x2104,0x4aaa,0x3a28,0x4228,0x4249,0x4249,0x4a8a,0x4a49,0x4a69,0x4a49,0x4a69,0x5acb,0x4a8a,0x3a08,0x4229,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4228,0x3a08,0x3a28,0x3a28,0x4249,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x39e7,0x3a07,0x4a49,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4a89,0x31c7,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x39c7,0x39c6,0x4a69,0x4228,0x3a08,0x4227,0x31a7,0x3a08,0x3a08,0x4249,0x39e8,0x39e8,0x31a6,0x39e8,0x4208,0x31c6,0x3207,0x31c7,0x39e7,0x4208,0x4228,0x31c7,0x39e8,0x39e7,0x31c7,0x31a6,0x31e7,0x3a08,0x31c7,0x4208,0x4a69,0x31a6,0x39e8,0x31c7,0x3a08,0x39e7,0x4249,0x4229,0x4228,0x4228,0x3a08,0x3a07,0x39e7,0x31a6,0x31a6,0x31c7,0x39e7,0x39e7,0x31e7,0x31c7,0x39e7,0x3a08,0x31a6,0x31c6,0x3a08,0x4229,0x31c7,0x4228,0x4228,0x31e7,0x29a6,0x31e7,0x39e7,0x31c6,0x31a7,0x31c7,0x39e8, +0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39c7,0x39e8,0x31a6,0x39e7,0x39e8,0x4228,0x4208,0x3187,0x2987,0x31c7,0x3a08,0x31e8,0x31c7,0x31c7,0x3a28,0x39e7,0x4229,0x4229,0x31c7,0x3a08,0x39e8,0x39e7,0x3a08,0x39e7,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4228,0x39e8,0x3a08,0x3a09,0x39c7,0x4249,0x4249,0x3a08,0x4229,0x3a08,0x3a28,0x52aa,0x3a08,0x39e7,0x4228,0x4228,0x4269,0x39e7,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x39e8,0x4a49,0x4a49,0x39e7,0x39e8,0x4229,0x4249,0x31e8,0x3a08,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4228,0x4248,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x39c7,0x39e7,0x3a07,0x4249,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x3a08,0x4229,0x4229,0x4228,0x4228,0x4208,0x4228,0x4249,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4228,0x4228,0x4a6a,0x4249,0x3a08,0x4a6a,0x4249,0x18c3,0x2945,0x18e3,0x41ea,0xbdb7,0x9cd3,0x7bcf,0x4208,0x18e3,0x18e3,0x18c3,0x18a3,0x2124,0x10a2,0x1081,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x62e6,0x4a25,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x0861,0x0861,0x18c2,0x1082,0x1082,0x2104,0x10a2,0x0861,0x0861,0x2945,0x3165,0x2965,0x2945,0x2945,0x62e5,0x83c5,0x7b45,0x7325,0x62c5,0x3165,0x2965,0x2965,0x2965,0x2965,0x1082,0x0861,0x10a2,0x18c3,0x10a2,0x18e3,0x18c3,0x0861,0x1082,0x2965,0x3166,0x3186,0x3186,0x3186,0x4a46,0x7b66,0x7b45,0x7b65,0x5a65,0x3185,0x3186,0x3186,0x3186,0x2965,0x1082,0x0841,0x10a2,0x18c3,0x10a2,0x18c3,0x18e3,0x2124,0x31a7,0x4208,0x4a49,0x31a7,0x2104,0x4249,0x4249,0x4228,0x4228,0x4a69,0x4a49,0x4a49,0x4a49,0x39e7,0x39e7,0x52aa,0x4a69,0x4228,0x4a6a,0x4228,0x4249,0x4a8a,0x4228,0x4228,0x4208,0x4a49,0x4248,0x3a28,0x3a28,0x4249,0x4a69,0x39c8,0x39e8,0x4229,0x4229,0x4208,0x39e7,0x4a49,0x4a69,0x4228,0x39e7,0x4249,0x4249,0x3a28,0x4a49,0x4228,0x4228,0x4249,0x4249,0x4229,0x4228,0x39e7,0x4208,0x39e8,0x39e8,0x39e7,0x4248,0x4228,0x4a69,0x39e8,0x4229,0x4208,0x4228,0x31a7,0x39c7,0x39c7,0x39e7,0x4249,0x39e7,0x3a07,0x3a08,0x39c7,0x39c7,0x39e7,0x4229,0x31a6,0x31c6,0x31e7,0x39e7,0x39c7,0x4208,0x4249,0x39e8,0x39e7,0x31c6,0x4228,0x39e7,0x4209,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x4208,0x4249,0x31a6,0x31a7,0x31a7,0x31c7,0x3a08,0x39e8,0x3a08,0x4249,0x31c7,0x39e7,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x31a6,0x31a6,0x39c7,0x39c7,0x3186,0x2986,0x3186, +0x2965,0x2966,0x31a6,0x39c7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x31e8,0x3208,0x3a49,0x3a08,0x31c7,0x31a7,0x39e7,0x4228,0x39e7,0x31e7,0x31e7,0x3a07,0x31c7,0x4249,0x52ab,0x31c7,0x3a08,0x4228,0x31a6,0x4a8a,0x4229,0x2986,0x31c7,0x39e8,0x4249,0x4269,0x4228,0x3a08,0x4228,0x4a69,0x4228,0x31c7,0x3a08,0x4229,0x4228,0x3a08,0x39e7,0x4229,0x4228,0x3a08,0x4229,0x4249,0x3a28,0x4229,0x3a28,0x4249,0x4a69,0x39e8,0x4208,0x4a69,0x4249,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a6a,0x31c7,0x3a08,0x4228,0x4248,0x4248,0x4228,0x31e7,0x4269,0x4a8a,0x4228,0x4a49,0x4a49,0x4228,0x3a08,0x4a8a,0x4249,0x4228,0x4228,0x39e7,0x4a69,0x4a89,0x4248,0x4228,0x4249,0x4209,0x3a08,0x4249,0x4228,0x4248,0x4a69,0x4228,0x39e7,0x3a08,0x4a69,0x4a49,0x4a6a,0x4229,0x528a,0x4a69,0x4229,0x4a49,0x4249,0x4249,0x52cb,0x4a69,0x18a3,0x2125,0x18e3,0x3188,0xa535,0x8c71,0x738e,0x3a07,0x18e3,0x18e3,0x18e3,0x18c3,0x2925,0x2104,0x2104,0x18e3,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x39c5,0x31a5,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x2103,0x18e3,0x2924,0x2965,0x3165,0x2965,0x2945,0x41e5,0x4a25,0x4a25,0x4a25,0x4205,0x3165,0x2965,0x3185,0x3185,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18e3,0x2124,0x2104,0x18e3,0x2925,0x3166,0x3186,0x3186,0x3186,0x31a6,0x4a26,0x5266,0x4a26,0x39a6,0x3186,0x31a6,0x3186,0x3186,0x2945,0x18c2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x3187,0x39e8,0x4209,0x3186,0x2124,0x3a08,0x4249,0x4a8a,0x4228,0x4a8a,0x4249,0x4249,0x52aa,0x4228,0x4a48,0x4a48,0x3a08,0x4249,0x4a49,0x3a07,0x4228,0x4229,0x4249,0x4228,0x4208,0x4a49,0x4228,0x39e7,0x3a08,0x4a69,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4228,0x4249,0x4228,0x4228,0x528a,0x4208,0x4229,0x4228,0x3a08,0x4228,0x3a08,0x39e8,0x4229,0x4228,0x39e7,0x31c7,0x3a08,0x4a69,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x31c7,0x31c7,0x4228,0x3a08,0x39e7,0x3a08,0x39e8,0x4249,0x3a08,0x528a,0x39e8,0x4249,0x4228,0x4a49,0x39e7,0x39c7,0x4228,0x4228,0x39c7,0x39e7,0x4a49,0x29a6,0x31c7,0x3a07,0x3a28,0x3a08,0x39e7,0x3a07,0x39c7,0x31a6,0x4208,0x31a6,0x52ab,0x52ab,0x39e7,0x31c7,0x3a08,0x31c7,0x39c7,0x31c7,0x4249,0x39c7,0x31a7,0x3a08,0x39e8,0x31c6,0x4228,0x4229,0x31c7,0x39e8,0x2986,0x31a7,0x39e7,0x31c7,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31c7, +0x2986,0x3186,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x31c7,0x31e7,0x3208,0x3a08,0x4a8a,0x4229,0x39c7,0x39e7,0x39c7,0x39e8,0x4208,0x3a08,0x39e7,0x4a69,0x39e7,0x3a08,0x39e7,0x3a08,0x4a8a,0x4228,0x39e8,0x3a08,0x31c7,0x3a08,0x39e8,0x31a7,0x39e8,0x3a08,0x4228,0x39c7,0x39e8,0x3a08,0x39e7,0x3a08,0x4249,0x4249,0x4a8a,0x3a08,0x39e7,0x4a6a,0x3a08,0x39e7,0x4228,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4249,0x3a08,0x4208,0x4208,0x4a49,0x4229,0x4a49,0x4229,0x4208,0x3a28,0x4249,0x4249,0x3a08,0x39e8,0x4a49,0x4a69,0x3a07,0x4248,0x4228,0x3a08,0x39e8,0x4229,0x4229,0x5aab,0x4228,0x3a08,0x3a08,0x3a08,0x4229,0x4a49,0x4209,0x4249,0x4249,0x4249,0x4228,0x4229,0x3a08,0x3a09,0x4229,0x4229,0x4a69,0x52aa,0x3a08,0x3a08,0x4249,0x4aaa,0x4aaa,0x4269,0x3a28,0x4269,0x4229,0x4229,0x4a69,0x4a8a,0x52ca,0x4a8a,0x4228,0x18a2,0x18c3,0x18c3,0x2967,0x9493,0x8410,0x6b6e,0x39e7,0x18e3,0x18e3,0x18e3,0x18c3,0x2945,0x2965,0x2965,0x2924,0x2945,0x2945,0x2924,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2965,0x3165,0x31a6,0x3165,0x2965,0x2944,0x2103,0x1082,0x1082,0x2124,0x2965,0x31a6,0x3185,0x2965,0x3165,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x3186,0x3186,0x3185,0x3165,0x3165,0x20e4,0x18a2,0x1082,0x18e3,0x2965,0x3186,0x2945,0x2945,0x31a6,0x3186,0x3186,0x3166,0x2965,0x3186,0x3186,0x3165,0x39a6,0x31a6,0x39c7,0x31a6,0x3186,0x2924,0x2924,0x2124,0x2104,0x18c3,0x10a2,0x18e3,0x18e3,0x2104,0x3186,0x39e8,0x39e8,0x2966,0x2124,0x3a08,0x4a49,0x4a49,0x4249,0x4a69,0x4228,0x4a6a,0x52aa,0x4a49,0x4a89,0x52aa,0x4a69,0x4249,0x4228,0x4269,0x4249,0x4249,0x4229,0x4228,0x528a,0x4228,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4248,0x3a28,0x4228,0x4228,0x39e8,0x4249,0x4a6a,0x4208,0x4229,0x3a08,0x39e8,0x3a08,0x4208,0x4a69,0x4249,0x3a09,0x3a09,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x31c7,0x4a69,0x3a07,0x31a6,0x39e7,0x3a08,0x3a08,0x39e7,0x39e7,0x4a6a,0x4229,0x4208,0x39c7,0x4208,0x3a08,0x4a49,0x3a08,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x41e8,0x31a7,0x4208,0x4a49,0x3a08,0x4249,0x4228,0x31c6,0x4228,0x4228,0x4a69,0x31c7,0x3a08,0x4249,0x39e8,0x4209,0x39e8,0x39e7,0x4228,0x39e7,0x4229,0x39c7,0x4208,0x4229,0x4249,0x4a89,0x4228,0x3a08,0x31a7,0x3a08,0x31a7,0x31c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c6,0x31c7,0x3a08,0x31c6, +0x2986,0x3186,0x31a7,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x31a7,0x31c7,0x39e8,0x31c7,0x3a08,0x4229,0x31c7,0x31a7,0x31c7,0x4a69,0x39e8,0x31e8,0x3a08,0x4249,0x39e8,0x3a08,0x39e8,0x39c8,0x31a7,0x4229,0x528a,0x3a08,0x3a08,0x39e7,0x31c7,0x3a08,0x39e8,0x31c7,0x31c7,0x31e7,0x4228,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e8,0x4228,0x4249,0x4249,0x4a8a,0x4269,0x3a08,0x3a28,0x4249,0x4249,0x4249,0x4208,0x4a49,0x3a08,0x4a69,0x4248,0x4228,0x4a49,0x4a6a,0x4a49,0x4a49,0x4249,0x3a08,0x3a08,0x4209,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4208,0x4208,0x39e8,0x4208,0x4a6a,0x4228,0x3a28,0x4249,0x4a69,0x4228,0x4228,0x4a8a,0x4249,0x3a29,0x4229,0x4249,0x4229,0x4249,0x3a28,0x4269,0x3a08,0x3a08,0x39e8,0x4208,0x4249,0x4208,0x4229,0x4aaa,0x4a69,0x4249,0x4249,0x3208,0x4249,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4228,0x18a2,0x18c3,0x18a3,0x2926,0x83f1,0x73cf,0x634d,0x39c7,0x18c3,0x18c3,0x18c3,0x18c3,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2924,0x2124,0x2124,0x2944,0x2104,0x10a2,0x1082,0x2124,0x3185,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x3165,0x2104,0x18a2,0x1082,0x20e4,0x3166,0x3165,0x2925,0x2924,0x2965,0x2945,0x2945,0x2104,0x20e4,0x2104,0x2924,0x2124,0x2945,0x2965,0x3165,0x2944,0x2104,0x20e4,0x2124,0x2124,0x2124,0x18c3,0x1082,0x18e3,0x20e3,0x2104,0x3186,0x39c7,0x31a7,0x2945,0x2924,0x4a69,0x528a,0x41e7,0x4248,0x4228,0x4249,0x4249,0x4a6a,0x4a69,0x4249,0x4a49,0x4a69,0x4249,0x39e8,0x4249,0x4a69,0x4a49,0x4a69,0x4a8a,0x4228,0x4228,0x4a69,0x3a08,0x4229,0x4208,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x4249,0x3a08,0x4229,0x4208,0x4208,0x4228,0x4228,0x4248,0x3a08,0x31e7,0x4208,0x4229,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4229,0x39c7,0x4208,0x39e7,0x4a69,0x3a08,0x39e7,0x3a07,0x4228,0x4229,0x39c8,0x4208,0x4208,0x39c7,0x31c7,0x4249,0x39e7,0x3a08,0x39e7,0x4a69,0x4228,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x3a08,0x3a07,0x31c6,0x39e7,0x4249,0x4a69,0x31c7,0x31c7,0x3a08,0x39e8,0x4249,0x39e8,0x3a08,0x4228,0x39e7,0x3186,0x4208,0x4228,0x4229,0x4229,0x4208,0x4228,0x39e8,0x39c7,0x3a08,0x39e7,0x31e7,0x31c7,0x39e7,0x31a6,0x31a6,0x3a07,0x39e7,0x4208,0x39e7, +0x2987,0x2966,0x39e7,0x31a6,0x2145,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x31e7,0x39e8,0x3a08,0x4249,0x39e8,0x31c7,0x39e8,0x31e8,0x39e8,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x4249,0x3a08,0x3a07,0x3a28,0x39e7,0x39c7,0x31c7,0x31a7,0x31e8,0x3a28,0x39e7,0x31c7,0x39e7,0x3a28,0x4249,0x4249,0x3a08,0x39e7,0x3a28,0x4a69,0x4228,0x4249,0x3a08,0x3a08,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x4a6a,0x4228,0x4249,0x4228,0x4208,0x4a49,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4229,0x4a49,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4269,0x4249,0x4a49,0x4249,0x4a89,0x4a69,0x3a08,0x4248,0x4a69,0x4228,0x4249,0x4a69,0x31c7,0x4249,0x4269,0x3a28,0x428a,0x4249,0x4229,0x3a08,0x4a69,0x4a69,0x4229,0x4a69,0x4a29,0x4229,0x4a6a,0x4229,0x426a,0x4229,0x4249,0x4a49,0x5acb,0x4a6a,0x4a6a,0x18c3,0x18a2,0x18c3,0x2125,0x738f,0x738e,0x5b0c,0x39c6,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x20e3,0x10a2,0x1082,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c2,0x18c3,0x18a3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x2104,0x18a2,0x1082,0x18e3,0x2925,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x18c3,0x10a2,0x20e4,0x20e4,0x2104,0x2966,0x31a7,0x3187,0x2945,0x2945,0x4a69,0x4a49,0x528a,0x5aab,0x52aa,0x4269,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4a6a,0x52cb,0x4a8a,0x4269,0x4249,0x4269,0x4a8a,0x4249,0x3a28,0x3a28,0x4228,0x3a08,0x4249,0x4249,0x4248,0x4a49,0x4228,0x4228,0x39c7,0x39e8,0x4229,0x31c7,0x4228,0x4249,0x3a08,0x31e7,0x3a07,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x3a08,0x3a08,0x4a49,0x3a08,0x3a08,0x4228,0x3a08,0x4229,0x39e7,0x39c7,0x39e8,0x4a49,0x39e7,0x4a69,0x4228,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x41e8,0x39e7,0x4a69,0x4a69,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3a08,0x3a07,0x3a08,0x39e7,0x31c7,0x3a08,0x39e7,0x4228,0x39e7,0x3a07,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4a8a,0x4269,0x31a6,0x3a08,0x39e7,0x31c7,0x39e8,0x41e8,0x4229,0x31a7,0x3a08,0x39e8,0x4228,0x4208,0x31c7,0x31e7,0x4228,0x4248,0x31e7,0x4228,0x3a07,0x39c7,0x3186,0x3186,0x3a08, +0x31a7,0x2986,0x31a7,0x2965,0x31c7,0x31c7,0x29a6,0x2986,0x39c7,0x39e8,0x2986,0x31c7,0x31c7,0x31a7,0x3a08,0x31e7,0x31c7,0x3187,0x31a7,0x31a7,0x4208,0x4249,0x31c6,0x4229,0x4208,0x39c7,0x39e7,0x39c7,0x3a08,0x39e8,0x3a08,0x4228,0x3a08,0x39e7,0x39c7,0x31c7,0x3a29,0x3a28,0x3a07,0x3a08,0x31c7,0x3a08,0x31e8,0x3a08,0x52ab,0x3a28,0x3a08,0x4249,0x4249,0x3a28,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x4249,0x4228,0x4249,0x4229,0x4229,0x3a09,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4a49,0x4a6a,0x4228,0x4269,0x4249,0x39e8,0x4249,0x4228,0x4228,0x39e8,0x4228,0x4249,0x39e8,0x4a8a,0x5b0c,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x4249,0x4228,0x4a69,0x4a69,0x39e7,0x4a8a,0x4a8a,0x3a08,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x52aa,0x4249,0x4208,0x4a8a,0x4229,0x4228,0x4a8a,0x52ab,0x4249,0x4228,0x18a3,0x18a2,0x18e3,0x2105,0x632e,0x632d,0x5acb,0x31a6,0x18c3,0x18c3,0x18a3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x18a2,0x2104,0x20e4,0x18e3,0x2945,0x3186,0x3166,0x2945,0x2965,0x4a49,0x4a49,0x52aa,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a69,0x4249,0x4a69,0x4a69,0x4269,0x4a8a,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4249,0x3a28,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x39e7,0x4208,0x4208,0x3a08,0x4228,0x4a49,0x3a08,0x4249,0x39c7,0x39c7,0x4208,0x31c7,0x4249,0x4249,0x3a08,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4249,0x3a08,0x3a08,0x4228,0x4a69,0x4228,0x3a08,0x4249,0x4248,0x3a08,0x3a08,0x31c7,0x4208,0x4229,0x4269,0x3a28,0x4228,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x2986,0x4229,0x4228,0x39e8,0x39e8,0x4208,0x4208,0x39e7,0x4249,0x3a07,0x39c7,0x4208,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39e7,0x4208,0x29a6,0x31c7,0x39e8,0x3a08,0x31a6,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x3a07,0x31a6,0x31a6,0x2966,0x31a6,0x3186, +0x2966,0x2966,0x31a6,0x31c7,0x31e7,0x31e7,0x3a08,0x3186,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x31c7,0x39e8,0x3a08,0x4a29,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4208,0x39c7,0x39c7,0x39e7,0x39e8,0x4229,0x4249,0x3a08,0x31c6,0x4228,0x4249,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x31e8,0x4a8a,0x4229,0x31e8,0x4a6a,0x4a6a,0x31e7,0x4249,0x4269,0x3a28,0x4249,0x3a28,0x4228,0x4249,0x4249,0x4229,0x4229,0x4229,0x4228,0x4228,0x4229,0x4269,0x4a8a,0x3a08,0x4229,0x4249,0x3a08,0x39e7,0x4228,0x4a69,0x4269,0x4aaa,0x4228,0x4228,0x4228,0x4209,0x4208,0x4228,0x4249,0x4229,0x4249,0x4a69,0x4228,0x3a08,0x3a29,0x4a6a,0x4229,0x4a49,0x52aa,0x528a,0x4228,0x39e7,0x3a08,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4208,0x4228,0x4a8a,0x4a49,0x4a8a,0x4249,0x4249,0x4208,0x10a2,0x10a2,0x18c3,0x2104,0x5aec,0x630c,0x528b,0x31a6,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x20e3,0x18e3,0x2125,0x2965,0x2945,0x2124,0x3166,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4249,0x52aa,0x4aaa,0x4a69,0x4269,0x4aaa,0x4a8a,0x4249,0x4a49,0x4208,0x4a69,0x4a69,0x39c7,0x4a8a,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4248,0x3a28,0x4228,0x5289,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4228,0x4a69,0x4208,0x4228,0x3a08,0x4228,0x3a08,0x4a69,0x39e7,0x3a07,0x39e8,0x39c7,0x39e7,0x4228,0x3a08,0x4249,0x4228,0x39e8,0x31c7,0x39e7,0x39c7,0x4228,0x4a49,0x39c7,0x4a49,0x39e8,0x39e7,0x3a28,0x39e7,0x4208,0x39e8,0x31e8,0x4228,0x4228,0x4248,0x39e7,0x31a6,0x4208,0x4249,0x4a49,0x39e7,0x4208,0x3a08,0x39c7,0x4a49,0x39c7,0x31a7,0x3a08,0x4229,0x31a6,0x39e7,0x3a08,0x39c7,0x4208,0x31a7,0x3187,0x31c7,0x31a6,0x3a07,0x31a6,0x39c7,0x39c7,0x2965, +0x31a7,0x39c7,0x4228,0x39c7,0x31a7,0x39e7,0x39e8,0x31a7,0x39e8,0x31a7,0x2986,0x39e8,0x3a08,0x4249,0x4249,0x39e8,0x31a6,0x31e8,0x31c7,0x39c7,0x4229,0x4208,0x3a08,0x31c8,0x31e8,0x31e7,0x39e7,0x4228,0x3a08,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e7,0x4208,0x39e8,0x39e7,0x39e7,0x3a28,0x4249,0x4249,0x39e8,0x3a08,0x4229,0x4229,0x3a08,0x4a4a,0x3a08,0x4249,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x4249,0x4a8a,0x52aa,0x4a6a,0x4229,0x3a08,0x39e7,0x4a8a,0x3a28,0x4269,0x4a8a,0x4208,0x4229,0x4269,0x3a08,0x4249,0x4a49,0x4248,0x4269,0x4a69,0x39e7,0x39e7,0x4229,0x4a6a,0x3a08,0x3a08,0x4229,0x52ab,0x4249,0x4a69,0x4a6a,0x4249,0x4249,0x526a,0x4a8a,0x4249,0x4249,0x4248,0x3a08,0x3a08,0x4269,0x4249,0x4229,0x4a49,0x52aa,0x4a8a,0x4228,0x4269,0x4249,0x4249,0x39e8,0x4208,0x4208,0x4a49,0x4a69,0x4229,0x4228,0x4249,0x4a6a,0x4208,0x10a2,0x10a2,0x18c3,0x18e4,0x52ac,0x5aec,0x4a6a,0x3186,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x20e3,0x18e3,0x2124,0x2945,0x2925,0x2104,0x2945,0x4a69,0x4a8a,0x4a69,0x4a49,0x4a49,0x528a,0x4249,0x4249,0x4269,0x4249,0x4a6a,0x4249,0x4229,0x4228,0x4228,0x4208,0x528a,0x528a,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x4a49,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4a8a,0x39e8,0x4249,0x4208,0x4228,0x39e7,0x39c7,0x39e7,0x4228,0x3a28,0x31e7,0x4228,0x39e7,0x3a08,0x4249,0x4229,0x3a07,0x39e7,0x39e7,0x4248,0x4a69,0x39e7,0x39e8,0x4249,0x39e7,0x3a08,0x4249,0x3a08,0x4228,0x3a08,0x39e7,0x31c6,0x39e7,0x3a28,0x4249,0x4208,0x39e7,0x3a08,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x3a08,0x3a07,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x3187,0x39e8,0x31c7,0x4229,0x39c7,0x3a07,0x4208,0x3a08,0x3a07,0x4229,0x4229,0x39e8,0x39e8,0x39e8,0x39c7,0x4229,0x4249,0x39e8,0x39e7,0x39e8,0x31a6,0x31e7,0x39e7,0x39e7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x4a49,0x39e7,0x31a6,0x39c7,0x31a6, +0x3a08,0x39e8,0x2986,0x31a6,0x31a6,0x39c7,0x31a7,0x39c7,0x3a08,0x31c7,0x31a7,0x31a7,0x31c7,0x4208,0x4229,0x31e7,0x31c7,0x3a08,0x29c7,0x31c7,0x39e8,0x39a7,0x31c8,0x31e8,0x31e7,0x3a28,0x4249,0x3a07,0x3a28,0x3a07,0x4207,0x4228,0x39e7,0x4249,0x4a49,0x4208,0x39e7,0x39e8,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x3a29,0x4228,0x4269,0x4249,0x4229,0x4a49,0x4228,0x5b0c,0x4a8a,0x3a08,0x3a28,0x52ab,0x4a49,0x4a49,0x4a69,0x4248,0x3a28,0x4269,0x4249,0x3a28,0x4249,0x4a49,0x41e8,0x4208,0x4229,0x4228,0x4a49,0x4228,0x4a69,0x4a6a,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4a6a,0x4a6a,0x528a,0x528a,0x4a49,0x4249,0x52cb,0x4a8a,0x4249,0x4228,0x4248,0x4248,0x4a8a,0x4228,0x4249,0x4a89,0x4228,0x4228,0x4208,0x4208,0x52ab,0x4208,0x4249,0x4249,0x4229,0x4249,0x4208,0x4229,0x4a49,0x4a69,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x18c3,0x10a2,0x18c3,0x20e4,0x528b,0x5acb,0x4a49,0x3185,0x18c3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x2124,0x20e3,0x18c3,0x2104,0x2125,0x2104,0x20e4,0x2124,0x4249,0x4a69,0x52aa,0x4229,0x4a6a,0x4a49,0x4249,0x4249,0x4229,0x4a69,0x4a8a,0x4a69,0x4a49,0x52cb,0x4a69,0x4a89,0x4248,0x4aaa,0x4248,0x39e7,0x4229,0x4228,0x3a08,0x4228,0x4228,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a69,0x4249,0x39e7,0x4228,0x4a8a,0x4a89,0x4228,0x3a07,0x3a08,0x31c7,0x4208,0x4a6a,0x3a08,0x39e7,0x3a08,0x3a08,0x528a,0x4a49,0x39e8,0x3a08,0x4229,0x39c7,0x39c7,0x4208,0x4229,0x4228,0x3a08,0x4249,0x31c6,0x3a08,0x31c7,0x52ab,0x4208,0x39e8,0x4208,0x31a6,0x3a08,0x3a08,0x39e7,0x4229,0x3a08,0x4228,0x31a6,0x31a6,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x4228,0x4208,0x4208,0x4208,0x3a08,0x31c7,0x3a08,0x4228,0x4229,0x39c7,0x4208,0x31a7,0x39e8,0x4249,0x3a08,0x31a7,0x31a7,0x31c7,0x39e7,0x31a6,0x31c7,0x39e7,0x4208,0x3a08,0x39e7,0x39e8,0x31a6,0x31a6,0x3186,0x2945,0x31c6, +0x39c7,0x31c6,0x2145,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c8,0x31a7,0x2986,0x2986,0x39e8,0x3a08,0x31c7,0x3a08,0x3208,0x29a6,0x31a7,0x39c7,0x39e8,0x31c7,0x4208,0x4249,0x31e8,0x29a6,0x31c7,0x39e8,0x4229,0x4228,0x4249,0x4a69,0x39c7,0x3a07,0x4228,0x3a28,0x3a28,0x31e7,0x4249,0x4269,0x4249,0x3a08,0x3a28,0x4249,0x4a8a,0x3a08,0x4a49,0x4a49,0x4228,0x52aa,0x4249,0x3a08,0x4249,0x4249,0x4a69,0x5289,0x4a69,0x39e7,0x4228,0x4a69,0x4249,0x52cb,0x4249,0x4249,0x4229,0x4249,0x4228,0x4a89,0x4248,0x4a69,0x4249,0x4249,0x4a8a,0x52cb,0x3a08,0x4248,0x4249,0x4249,0x4a69,0x52ab,0x4a8a,0x4a8a,0x52ab,0x4a49,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4aaa,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4249,0x3a08,0x4a8a,0x4a8a,0x4a69,0x39e7,0x4249,0x4229,0x528a,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x3a08,0x4a69,0x4228,0x4228,0x18c3,0x10a2,0x18e3,0x18e4,0x4a4a,0x528a,0x4249,0x3186,0x18c3,0x18e3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x18e3,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x2104,0x4228,0x4a69,0x52aa,0x4248,0x4a49,0x4a49,0x4249,0x4a69,0x4269,0x4a69,0x52aa,0x52ab,0x4249,0x4a6a,0x4a8a,0x4269,0x4a89,0x4248,0x4228,0x39e7,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x3a07,0x4249,0x39c7,0x39e7,0x4208,0x4a49,0x4208,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4229,0x39e8,0x4a6a,0x4228,0x3a08,0x39e7,0x4208,0x4a49,0x4208,0x4248,0x4249,0x39e7,0x31e7,0x3a08,0x4249,0x4208,0x4208,0x3a08,0x4228,0x3a07,0x3a08,0x4249,0x39c7,0x4a49,0x4228,0x39c7,0x4208,0x31e7,0x39e8,0x39e7,0x3a08,0x3a28,0x31e7,0x39c7,0x31a6,0x4249,0x3a08,0x31c7,0x39e7,0x31c7,0x31c7,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x31c7,0x3a07,0x4228,0x4208,0x3a08,0x39e8,0x4208,0x4a6a,0x31a7,0x39c7,0x39e8,0x3a08,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x31a6,0x31a6, +0x2965,0x2986,0x2986,0x31c7,0x3a08,0x31e7,0x31e7,0x31a6,0x39c7,0x39c7,0x31a7,0x31c7,0x31e8,0x31e8,0x31a7,0x3a08,0x39c7,0x4228,0x4229,0x3a08,0x31e7,0x31a7,0x39c7,0x31a7,0x4208,0x31a7,0x31a7,0x31c7,0x4a6a,0x3a08,0x39e8,0x39e8,0x4249,0x4209,0x3a07,0x4248,0x4249,0x3a28,0x4249,0x3a08,0x39c7,0x4208,0x41e8,0x4a49,0x4a49,0x5b0b,0x4a89,0x3a07,0x3a08,0x4a69,0x528a,0x39e7,0x4229,0x4a49,0x4a49,0x4a49,0x528a,0x4249,0x5acb,0x4229,0x4208,0x4a69,0x4229,0x4a69,0x4249,0x4229,0x4a69,0x4228,0x4a8a,0x4248,0x4a69,0x4a69,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4269,0x4249,0x4a69,0x4a8a,0x3a28,0x4249,0x4a6a,0x4a49,0x5acb,0x52aa,0x5acb,0x630c,0x4a69,0x4229,0x4a6a,0x4a69,0x4249,0x4269,0x4249,0x4249,0x3a08,0x4249,0x428a,0x3a08,0x4249,0x3a08,0x4208,0x4a69,0x4a49,0x4a49,0x4249,0x4a8a,0x426a,0x3a08,0x3a08,0x3a08,0x4249,0x4248,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x4229,0x4a6a,0x4229,0x3186,0x18c3,0x20e3,0x18c3,0x18c2,0x18c2,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x2104,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a49,0x4249,0x4a69,0x4aaa,0x4229,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4249,0x4249,0x528a,0x4a49,0x3a08,0x4229,0x4228,0x528a,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x39c7,0x4a6a,0x31e7,0x3a08,0x3a08,0x4208,0x39e7,0x39e7,0x3a07,0x4a69,0x52aa,0x3a07,0x31a7,0x4249,0x4228,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x3a08,0x4228,0x31c7,0x4248,0x4249,0x4249,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x31a7,0x4249,0x4248,0x31c7,0x3a08,0x3a08,0x4248,0x39c7,0x31e7,0x31c6,0x3a07,0x31a6,0x31c7,0x3a08,0x31a6,0x4228,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x4249,0x4208,0x39e7,0x39c7,0x4207,0x4228,0x4229,0x4209,0x39e8,0x3186,0x39c7,0x3a08,0x3207,0x29a6,0x31c7,0x31a6,0x31a7,0x31c7,0x31e7,0x39e7,0x39e7,0x4228,0x4208,0x31a6,0x39e7,0x39e7, +0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x39c7,0x31a7,0x31a6,0x31c7,0x39e8,0x3a28,0x3208,0x2985,0x31c7,0x31c7,0x3a08,0x31a7,0x3a08,0x39e7,0x3a07,0x31c6,0x4208,0x4208,0x39e7,0x3a08,0x3a28,0x4249,0x3a09,0x4229,0x4208,0x4229,0x4a49,0x4228,0x4228,0x4a8a,0x4249,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x4229,0x4229,0x4a49,0x4228,0x4229,0x4249,0x4228,0x4a8a,0x4a6a,0x4228,0x528a,0x4229,0x4a69,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x52aa,0x4a6a,0x4a8a,0x39e7,0x4a8a,0x4a49,0x4a69,0x4a6a,0x4249,0x4a8a,0x4a6a,0x52cb,0x4229,0x4a49,0x4aaa,0x4a8a,0x52aa,0x4a49,0x632c,0x5aec,0x4a6a,0x4249,0x4249,0x4249,0x4a8a,0x4a8a,0x4249,0x4208,0x4228,0x4229,0x4249,0x4208,0x4a49,0x4228,0x4a69,0x4269,0x4a8a,0x4a6a,0x4a49,0x4a8a,0x4a69,0x3a08,0x3a08,0x4269,0x4269,0x4a8a,0x4229,0x18a2,0x10a2,0x20e4,0x18c3,0x4208,0x4a29,0x4208,0x3186,0x18e3,0x20e3,0x18e3,0x18c3,0x18e3,0x2104,0x20e3,0x20e3,0x20e3,0x20e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x18a2,0x18a2,0x18c2,0x18a2,0x18c3,0x18c2,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2103,0x20e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x2103,0x18c3,0x10a2,0x18a2,0x2104,0x1082,0x20e4,0x2104,0x18e4,0x18e3,0x18e4,0x2124,0x3a08,0x4a8a,0x4a49,0x4a89,0x5acb,0x528a,0x4228,0x4a8a,0x52cb,0x4249,0x3a08,0x4a49,0x4a8a,0x528a,0x4249,0x4249,0x4a69,0x4228,0x4228,0x528a,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x4a49,0x4a8a,0x39e7,0x4228,0x3a08,0x39e8,0x4228,0x4229,0x3a08,0x31e7,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4269,0x4228,0x4228,0x39e7,0x4a69,0x4249,0x4228,0x3a07,0x4208,0x4248,0x4248,0x4249,0x4228,0x4207,0x4a48,0x4208,0x4208,0x4208,0x4228,0x4228,0x4249,0x4208,0x39e7,0x4a49,0x4208,0x39e8,0x4228,0x3a08,0x4228,0x39e7,0x4249,0x3a28,0x39e7,0x39e7,0x39c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31c7,0x31a6,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x31a7,0x3a08,0x31c7,0x39e7,0x3a08,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x3a07,0x39c7,0x31a6,0x39e7,0x3a08, +0x31a6,0x29a6,0x31c6,0x31a6,0x2966,0x29a6,0x29a6,0x31c7,0x31a7,0x39c7,0x4228,0x31c7,0x39e8,0x31e7,0x31c6,0x29a6,0x31a7,0x4208,0x39e7,0x39c7,0x4228,0x4248,0x4228,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x4209,0x3a08,0x4249,0x4249,0x3a08,0x31c7,0x31e7,0x4269,0x3a29,0x3a08,0x3a08,0x39e8,0x4a8a,0x4228,0x4228,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a6a,0x4248,0x4a49,0x4249,0x4a69,0x3a29,0x4a8a,0x52aa,0x4a69,0x4228,0x4229,0x4a49,0x4229,0x528a,0x4a49,0x4228,0x528a,0x52aa,0x4228,0x4a6a,0x52cb,0x4a8a,0x4208,0x52ab,0x5aeb,0x4a89,0x4a69,0x4229,0x52ab,0x4208,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4229,0x4249,0x4a69,0x4228,0x4a49,0x4229,0x4a69,0x52aa,0x4a69,0x4a8a,0x4a8a,0x3a09,0x4a6a,0x4229,0x4a69,0x4a49,0x3a28,0x4229,0x426a,0x4aab,0x4a6a,0x18a3,0x10a2,0x2104,0x18c3,0x39e8,0x4209,0x39e8,0x31a6,0x2103,0x18e3,0x18e3,0x18c3,0x2104,0x2945,0x2945,0x2944,0x2944,0x3165,0x2965,0x3165,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2945,0x2944,0x2103,0x2124,0x2924,0x2924,0x2124,0x18c3,0x1082,0x1082,0x20e3,0x2965,0x3185,0x2965,0x2965,0x3185,0x3165,0x3186,0x3165,0x2965,0x2965,0x2944,0x2965,0x2965,0x2944,0x2924,0x2124,0x2924,0x2924,0x2944,0x2924,0x18c3,0x1082,0x1082,0x18c3,0x2965,0x39c6,0x31a6,0x3165,0x2965,0x3165,0x3185,0x3185,0x3185,0x2945,0x2965,0x2945,0x2965,0x3165,0x2945,0x3165,0x2945,0x2924,0x2945,0x3165,0x20e3,0x10a2,0x18a2,0x20e3,0x10a2,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x2945,0x4248,0x4a69,0x4a8a,0x4a49,0x4a8a,0x4a49,0x4208,0x4a69,0x4a89,0x3a28,0x4249,0x4249,0x4a69,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4a69,0x4a6a,0x4a49,0x52ab,0x4228,0x39e7,0x39e7,0x4228,0x4249,0x3a08,0x4228,0x3a07,0x4249,0x4228,0x3a08,0x4a89,0x4228,0x4228,0x4a69,0x4a69,0x3a08,0x39e7,0x4228,0x3a08,0x3a08,0x3a07,0x4a49,0x4a49,0x4228,0x39e7,0x4a49,0x4208,0x4208,0x4249,0x4a69,0x4a69,0x4228,0x4208,0x39e8,0x39e8,0x4a49,0x4228,0x39e7,0x4207,0x4208,0x4249,0x4229,0x3a08,0x3a08,0x3a08,0x39e8,0x31a7,0x39e8,0x39e7,0x39e7,0x39c7,0x39e8,0x31a7,0x39e7,0x39c7,0x39e7,0x31a6,0x31e7,0x3a08,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x3a08,0x39e7,0x4208,0x39e7,0x4208,0x4208,0x31a6,0x31c7,0x31e7,0x4228,0x39e7,0x39c7,0x39c7,0x31c7,0x31c7,0x3a08,0x4208,0x4208,0x39e7,0x3a08,0x31c7,0x31a6,0x31c7,0x39e7,0x31a6,0x31c6, +0x31c6,0x3a08,0x2986,0x2165,0x2145,0x31c7,0x31e7,0x3a08,0x39e7,0x39e8,0x31c7,0x3186,0x39c7,0x4208,0x39e7,0x3186,0x39c7,0x3a08,0x3a29,0x31e7,0x31c7,0x31a6,0x39e7,0x3a08,0x4228,0x39e8,0x31c7,0x39e8,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4228,0x424a,0x3a08,0x3a08,0x4a6a,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x39e8,0x4208,0x4229,0x41e8,0x4208,0x4229,0x4249,0x4229,0x4208,0x4249,0x39e8,0x4208,0x4a49,0x4208,0x4228,0x4269,0x4269,0x4249,0x4249,0x4249,0x52cb,0x4a8a,0x4249,0x4249,0x4a8a,0x3a28,0x4269,0x52aa,0x4a69,0x52ab,0x52aa,0x4a8a,0x4a89,0x4249,0x4249,0x52cb,0x5acb,0x5aec,0x52eb,0x4aaa,0x52aa,0x52cb,0x52ab,0x4208,0x4a6a,0x52aa,0x4229,0x4229,0x4229,0x4269,0x4249,0x4a89,0x4a8a,0x4228,0x4aaa,0x4a8a,0x4228,0x4a69,0x4229,0x4249,0x4249,0x3a08,0x4229,0x4249,0x4229,0x4249,0x426a,0x4a8a,0x4a69,0x4249,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x39c7,0x41e8,0x39e7,0x31a6,0x2103,0x18c3,0x18e3,0x18c3,0x2104,0x2124,0x2124,0x18e3,0x2924,0x3165,0x2965,0x2945,0x2945,0x2945,0x2944,0x2965,0x2944,0x2945,0x2945,0x2965,0x2944,0x2924,0x20e3,0x2945,0x2124,0x18c3,0x1082,0x1082,0x18e3,0x2945,0x2965,0x2103,0x2944,0x3185,0x2965,0x3186,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2924,0x2103,0x2945,0x2944,0x18c3,0x1082,0x1082,0x18c3,0x2945,0x39c6,0x2945,0x2944,0x3165,0x3165,0x3185,0x39a6,0x3186,0x2965,0x3185,0x3186,0x3186,0x39a6,0x3186,0x3186,0x3185,0x2104,0x2945,0x2945,0x20e3,0x10a2,0x10a2,0x18e3,0x18a2,0x2945,0x2124,0x18e3,0x18e3,0x18c3,0x2945,0x4a8a,0x4228,0x4a69,0x4a6a,0x528a,0x4a49,0x4228,0x4a69,0x4228,0x3a28,0x4269,0x3a28,0x4228,0x4a49,0x39e8,0x4249,0x4a89,0x4a89,0x4228,0x4a49,0x4249,0x4229,0x3a28,0x3a08,0x4228,0x4249,0x31c7,0x3a28,0x3a28,0x3a28,0x3a08,0x4228,0x52aa,0x4a89,0x3a07,0x4a69,0x4a49,0x3a07,0x3a08,0x39c7,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x3a07,0x4248,0x4a49,0x4229,0x4a49,0x39e7,0x4a89,0x4a69,0x3a08,0x4a6a,0x4229,0x4208,0x39e8,0x3a07,0x39c6,0x4228,0x4228,0x4249,0x4249,0x4249,0x4228,0x4208,0x4a49,0x4229,0x39c7,0x31a7,0x39e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x3a08,0x39e7,0x31c7,0x39e7,0x3a07,0x39e7,0x4a69,0x39e7,0x31c6,0x3a08,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x39e7,0x4249,0x39e8,0x39e8,0x39e7,0x31c7,0x39c7,0x31a6,0x39e7,0x4228,0x31a6,0x39e7,0x4a69,0x39e7,0x39e7,0x31c7,0x2986,0x39e7,0x31c7,0x39e7, +0x31c7,0x3186,0x2965,0x31c6,0x31a6,0x31c7,0x39e7,0x39e7,0x39e8,0x31a7,0x31a7,0x31a7,0x39c7,0x4228,0x39e8,0x31c6,0x3a07,0x3a28,0x29a7,0x31e8,0x31c7,0x3a08,0x4228,0x3a08,0x3a28,0x3a08,0x31c7,0x31e7,0x3a08,0x3a08,0x4229,0x39e8,0x52ab,0x4269,0x3a29,0x3a08,0x4229,0x4a4a,0x39e8,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x31e7,0x4269,0x4249,0x3a08,0x5acb,0x4a49,0x31e7,0x3a08,0x4229,0x4208,0x4a49,0x4a8a,0x4249,0x4249,0x4249,0x4229,0x4a8a,0x5b0c,0x4a69,0x528a,0x4a6a,0x4a69,0x4a69,0x4aaa,0x4a6a,0x4a8a,0x4aaa,0x4a8a,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x52cb,0x52ec,0x4a8a,0x4249,0x4a6a,0x4a8a,0x4229,0x424a,0x424a,0x4a4a,0x4229,0x4248,0x4a89,0x4a69,0x52aa,0x4a6a,0x4aaa,0x4249,0x3a08,0x4a49,0x52aa,0x528a,0x4a69,0x4a49,0x4a49,0x4249,0x4228,0x4a49,0x4229,0x528a,0x528a,0x4a8a,0x18c3,0x1082,0x18c3,0x18c3,0x31a7,0x39c7,0x39c7,0x3185,0x18e3,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x1082,0x0861,0x2945,0x2945,0x2944,0x2924,0x2124,0x2124,0x2924,0x2945,0x2104,0x2124,0x2924,0x2944,0x2945,0x2965,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x18c3,0x18e3,0x18c3,0x1082,0x2124,0x2945,0x2924,0x2945,0x2924,0x2124,0x2124,0x2924,0x2924,0x2924,0x2944,0x2924,0x2945,0x2945,0x18c3,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x2104,0x20e3,0x18c3,0x2944,0x2944,0x2944,0x2945,0x2945,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x3165,0x3186,0x18a2,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2945,0x20e4,0x18e4,0x18e3,0x18c3,0x2925,0x4229,0x4208,0x4208,0x4a49,0x4a6a,0x4a8a,0x3a08,0x4a69,0x4228,0x4228,0x4a89,0x4a69,0x4a69,0x4249,0x3a08,0x4228,0x4a49,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x4a49,0x3a08,0x4229,0x52aa,0x4208,0x4a49,0x4a69,0x4228,0x31c7,0x4229,0x528a,0x39e8,0x3a08,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x4228,0x4a8a,0x4228,0x3a08,0x4228,0x4a69,0x3a08,0x4249,0x4228,0x4248,0x31c7,0x4228,0x4249,0x4249,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x39e7,0x3a08,0x4228,0x3a08,0x4249,0x4a69,0x4248,0x4249,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x4249,0x4208,0x39c7,0x39e7,0x31a7,0x39c7,0x39e7,0x39e7,0x4229,0x4228,0x3a08,0x31c7,0x3a08,0x31e7,0x31c7,0x31e8,0x31e7,0x3a28,0x3a08,0x39e8,0x31a7,0x39a7,0x3186,0x31c7,0x3a08,0x3186,0x31c7,0x31c7,0x31a7,0x39e8,0x4209,0x3187,0x39c7,0x3a07,0x2985,0x39e7,0x31a6,0x3186, +0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x2986,0x31c7,0x31a7,0x2986,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4a89,0x3a08,0x31c7,0x3a29,0x3a08,0x4229,0x3a08,0x39e8,0x31c8,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x39e8,0x39c7,0x4208,0x3a08,0x39e8,0x4228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x3a08,0x4228,0x52ab,0x528a,0x4229,0x3a08,0x4a69,0x4a8a,0x3a08,0x528a,0x4a6a,0x3a28,0x3a08,0x4a49,0x4228,0x4208,0x4249,0x4228,0x4229,0x4229,0x4228,0x4249,0x5acb,0x4228,0x4a49,0x5aeb,0x4a8a,0x52cb,0x4269,0x3a08,0x52cb,0x4a8a,0x4a6a,0x4249,0x4a69,0x52cb,0x4249,0x4a8a,0x426a,0x426a,0x52ab,0x4a8a,0x4aab,0x4269,0x4a69,0x4229,0x4a6a,0x4a6a,0x4249,0x3a08,0x4a8a,0x52ca,0x4249,0x4a8a,0x4249,0x4249,0x4a6a,0x4229,0x4a29,0x4a49,0x4a49,0x528a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x4a49,0x526a,0x4a6a,0x52ab,0x4a8a,0x18c3,0x10a2,0x18c3,0x18c3,0x3166,0x39c7,0x31a7,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2965,0x2965,0x2965,0x3185,0x3165,0x1082,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0841,0x10a2,0x2965,0x2945,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x3165,0x2103,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x10a2,0x0861,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2924,0x2944,0x2925,0x2924,0x2925,0x2925,0x2945,0x31a6,0x18c3,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2924,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x4249,0x4228,0x4a49,0x4208,0x4a8a,0x4a8a,0x4229,0x52aa,0x4a6a,0x4229,0x4249,0x4a49,0x4228,0x4249,0x4228,0x4249,0x4208,0x4228,0x4229,0x4229,0x3a08,0x4208,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a69,0x4228,0x4228,0x4249,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x3a08,0x4249,0x4248,0x4208,0x4228,0x4228,0x4249,0x4228,0x4249,0x4aaa,0x4a6a,0x31c6,0x4249,0x4249,0x3a08,0x3a08,0x39e7,0x31e7,0x4228,0x4208,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x39e8,0x39e8,0x4228,0x3a08,0x31a6,0x39c7,0x3a08,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x31c7,0x39e8,0x3a07,0x31e7,0x4208,0x4208,0x4208,0x39e8,0x39c7,0x29a6,0x39e7,0x31c7,0x31a6,0x4228,0x4229,0x39e8,0x4208,0x39e8,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a6, +0x39e7,0x3a08,0x31a7,0x2986,0x2986,0x2966,0x39e8,0x31c7,0x3a28,0x4248,0x4228,0x31a7,0x31c7,0x31c7,0x3a08,0x4228,0x39e7,0x31c7,0x31c7,0x31e7,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x4229,0x39e8,0x4a6a,0x4248,0x31c6,0x39e8,0x4229,0x31c7,0x39e7,0x4208,0x4208,0x4208,0x31c7,0x4228,0x4208,0x39e8,0x4228,0x3a08,0x4249,0x4a8a,0x4a69,0x4228,0x39e8,0x3a08,0x4249,0x39e7,0x4269,0x4249,0x4228,0x4a69,0x4a49,0x4229,0x3a28,0x4a69,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x52aa,0x4a69,0x4a49,0x52aa,0x4a8a,0x4a8a,0x52cb,0x3a28,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4aaa,0x4a6a,0x4a8a,0x4a69,0x52aa,0x52eb,0x4a8a,0x4249,0x4249,0x4a8a,0x4a69,0x4208,0x4a8a,0x4249,0x426a,0x4a8a,0x4a69,0x4208,0x4229,0x52aa,0x4228,0x4a69,0x4a49,0x4a8a,0x4249,0x4aaa,0x52aa,0x4a6a,0x4a49,0x4a69,0x4249,0x4a8a,0x52cb,0x18c3,0x10a2,0x18c3,0x18c3,0x2965,0x31a6,0x3186,0x2924,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x3165,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39a5,0x41e5,0x3185,0x2965,0x2965,0x2965,0x2965,0x3186,0x1061,0x0841,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2945,0x2965,0x3166,0x3185,0x41e5,0x41e5,0x39c5,0x3185,0x2965,0x2965,0x2965,0x2965,0x2124,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4205,0x41e5,0x39a5,0x2945,0x2945,0x2945,0x2965,0x3186,0x20e3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x18a3,0x18c3,0x18c3,0x18e3,0x18e3,0x4228,0x4248,0x4249,0x4a49,0x528a,0x4249,0x3a08,0x4a8a,0x4249,0x4a49,0x4228,0x4a49,0x3a08,0x4228,0x4248,0x4249,0x4249,0x3a28,0x4229,0x4228,0x3a07,0x4228,0x4a69,0x4a49,0x4208,0x39e8,0x4a49,0x4228,0x4229,0x4249,0x3a28,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4229,0x4208,0x4249,0x4249,0x4228,0x39e7,0x4a49,0x4208,0x4229,0x4a69,0x3a28,0x4a8a,0x4a49,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x39e7,0x3a08,0x4249,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4249,0x4228,0x4248,0x4248,0x39e7,0x4209,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x3a08,0x4228,0x31c7,0x4249,0x3a08,0x31c7,0x31a6,0x39e7,0x31e7,0x3207,0x31e7,0x3a08,0x4228,0x39c7,0x39e7,0x4249,0x31a6,0x39e7,0x4228,0x39c7,0x3a28,0x39e8,0x41e8,0x3a08,0x3a08,0x39e8,0x3a08,0x3a08,0x4228,0x4208,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6, +0x31c7,0x3a08,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31c7,0x39e7,0x39e7,0x4248,0x4248,0x39e7,0x31c7,0x39e7,0x31c7,0x39e7,0x3a08,0x31c7,0x39e7,0x4249,0x31c7,0x3a08,0x4a49,0x4208,0x4208,0x4228,0x4249,0x4229,0x3a09,0x3a07,0x4228,0x3a08,0x31c8,0x31c8,0x3a08,0x4229,0x39e8,0x4208,0x4208,0x39c7,0x4249,0x4228,0x4249,0x4249,0x31c7,0x39e7,0x39e7,0x3a08,0x4228,0x39e8,0x39c7,0x39c7,0x4a69,0x3a08,0x3a08,0x4228,0x4228,0x4249,0x4249,0x4a69,0x4229,0x4249,0x4a8a,0x4249,0x4289,0x4249,0x4229,0x4a6a,0x4a6a,0x4249,0x4228,0x4a8a,0x52cb,0x52aa,0x52ab,0x4a6a,0x52cb,0x4a69,0x4a8a,0x52eb,0x4a89,0x52aa,0x52cb,0x4a6a,0x3a08,0x52aa,0x5aeb,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4249,0x4249,0x4209,0x4a49,0x528a,0x528a,0x3a08,0x4249,0x528a,0x528a,0x4228,0x4a69,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x5b0c,0x52eb,0x4229,0x5acb,0x52aa,0x18c3,0x10a2,0x18c3,0x18c3,0x2945,0x3186,0x2966,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x62e5,0x7b65,0x39c4,0x2965,0x2965,0x2965,0x2965,0x3165,0x0861,0x0020,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3166,0x4205,0x7345,0x6b04,0x6b05,0x41c4,0x2965,0x2965,0x2965,0x3165,0x2944,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2965,0x3166,0x2965,0x2965,0x31a5,0x62c5,0x7b45,0x7b45,0x62c4,0x3165,0x2965,0x2965,0x3165,0x3166,0x18c3,0x0020,0x0841,0x1082,0x1082,0x10a2,0x18a3,0x18e3,0x20e4,0x10a2,0x18c3,0x18c3,0x20e3,0x18e3,0x4208,0x4a49,0x3a08,0x4249,0x4249,0x4249,0x4a6a,0x52aa,0x4269,0x4207,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4229,0x4249,0x4249,0x3a07,0x3a28,0x3a08,0x3a07,0x4248,0x4a49,0x39c7,0x4228,0x4a69,0x3a08,0x3a08,0x4a69,0x4249,0x4228,0x4a49,0x4a6a,0x3a08,0x31c7,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4a69,0x4228,0x4a49,0x4229,0x4a6a,0x3a08,0x4249,0x4a69,0x4229,0x4249,0x3a08,0x39c7,0x4208,0x4a8a,0x3a08,0x39e7,0x3a07,0x4249,0x3a08,0x4a89,0x4208,0x3a07,0x4228,0x4208,0x4a69,0x39e7,0x4249,0x3a08,0x39e7,0x31c7,0x29a6,0x3a08,0x39e7,0x39e8,0x4208,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3186,0x39e8,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x39c7,0x39e7,0x4208,0x39c7,0x39e7,0x4248,0x4249,0x3a08,0x3a08,0x39c7,0x4228,0x4229,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x4208,0x4208,0x31a7,0x39e7,0x31c6,0x31a6,0x2986,0x29a7, +0x2986,0x2986,0x31a7,0x31a7,0x39c7,0x39e7,0x31a6,0x31a7,0x31c7,0x4a69,0x3a07,0x39e7,0x39c7,0x31a7,0x4208,0x39c7,0x31c7,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x4269,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x4249,0x4a49,0x39c7,0x39c8,0x3a09,0x4249,0x3a28,0x4228,0x4208,0x4208,0x4a6a,0x3a08,0x39e8,0x4249,0x31a7,0x31c7,0x4249,0x4208,0x3a08,0x39e7,0x4208,0x4208,0x4249,0x4249,0x4a8a,0x4248,0x4248,0x4229,0x4a6a,0x4a6a,0x3a08,0x4249,0x4269,0x3a28,0x4a69,0x4aaa,0x3a28,0x4249,0x528a,0x52cb,0x4249,0x4a69,0x52aa,0x4a69,0x528a,0x4a69,0x52cb,0x4a8a,0x52ab,0x5b0c,0x5b0b,0x52aa,0x5acb,0x4a6a,0x4a8a,0x52ab,0x4229,0x4229,0x52ab,0x5aeb,0x4a69,0x4a69,0x4a69,0x52aa,0x4a69,0x4249,0x4229,0x3a08,0x4a49,0x4a6a,0x4a6a,0x4a6a,0x3a08,0x4208,0x4a8a,0x4a4a,0x39e8,0x4249,0x4a8a,0x4a6a,0x5acb,0x528b,0x424a,0x52aa,0x18c3,0x1082,0x18c3,0x10a2,0x2124,0x2966,0x2945,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x5245,0x8bc4,0x9c24,0x41e4,0x2965,0x2965,0x2945,0x2965,0x3186,0x1061,0x0020,0x1082,0x1082,0x1082,0x18a3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x5285,0x93e4,0x6ae4,0x62c5,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3166,0x3166,0x2965,0x2965,0x4205,0x9405,0x7b24,0x7b45,0x7b45,0x3985,0x2945,0x2945,0x2965,0x3165,0x18c3,0x0021,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x4229,0x4228,0x52cb,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a49,0x3a08,0x4228,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4248,0x4249,0x39e8,0x4249,0x4289,0x3a28,0x3a28,0x4249,0x4248,0x4208,0x4228,0x4a69,0x4229,0x39e8,0x4a6a,0x4249,0x4228,0x4248,0x4a69,0x4a8a,0x4a69,0x4a69,0x4249,0x39e8,0x39e8,0x39c7,0x41e8,0x4a49,0x4208,0x39e8,0x3a08,0x3a08,0x4aaa,0x4a8a,0x4229,0x39c8,0x3a08,0x4249,0x5aeb,0x3a07,0x3a28,0x3a28,0x4249,0x4269,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x3a28,0x39e8,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x39c7,0x39c7,0x39e7,0x4229,0x39e7,0x2986,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x4208,0x39e7,0x3a08,0x39e7,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x31c7,0x4249,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x31a6,0x3a08,0x31a6,0x31e7,0x2986,0x29a6, +0x2986,0x2986,0x2966,0x31c7,0x3186,0x39e7,0x39e8,0x3a28,0x31c7,0x3a08,0x31c6,0x39e7,0x3186,0x3186,0x39e8,0x4228,0x31c7,0x39e7,0x3a08,0x4229,0x3a08,0x3a08,0x31c7,0x39e7,0x39e7,0x3a08,0x39e8,0x4249,0x4229,0x4229,0x4209,0x39e8,0x39e7,0x4208,0x4229,0x31c7,0x4228,0x4249,0x3a07,0x3a08,0x3a08,0x4229,0x4208,0x4228,0x4228,0x4249,0x4a69,0x3a08,0x4228,0x4249,0x4a69,0x4229,0x4228,0x4248,0x4249,0x4248,0x3a28,0x3a08,0x4249,0x4a8a,0x52eb,0x4a8a,0x3a49,0x4229,0x4229,0x4248,0x4269,0x4249,0x4a6a,0x528a,0x4a69,0x52ab,0x4a8a,0x52cb,0x528a,0x4a69,0x4a89,0x52aa,0x4249,0x3a08,0x5acb,0x528a,0x4229,0x4249,0x528a,0x52aa,0x52aa,0x5aca,0x4a8a,0x4a8a,0x4a49,0x4229,0x4249,0x52ca,0x4a8a,0x4249,0x3a08,0x4a49,0x4a8a,0x52ab,0x528a,0x4228,0x4a6a,0x4228,0x4248,0x52aa,0x4a69,0x4a8a,0x4aaa,0x4aaa,0x4229,0x528a,0x4a6a,0x4a6a,0x632c,0x18c3,0x1082,0x18a2,0x10a2,0x2124,0x2945,0x2945,0x2104,0x18c3,0x18e3,0x18a2,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x39a5,0x7b45,0x7304,0x9405,0x41e4,0x2945,0x2965,0x2945,0x2945,0x3186,0x1082,0x0020,0x1082,0x1082,0x1082,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62e5,0x93e4,0x6ae4,0x62a4,0x3985,0x2965,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c2,0x0861,0x0841,0x2104,0x3166,0x3166,0x3165,0x2965,0x5aa5,0xa465,0x7b24,0x7b65,0x6ae5,0x3165,0x2945,0x2965,0x2965,0x3165,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x10a2,0x18a3,0x18e3,0x2945,0x4208,0x4a69,0x528a,0x52ab,0x4229,0x4a69,0x4228,0x4228,0x4248,0x52aa,0x4249,0x4228,0x4a8a,0x4249,0x52aa,0x4228,0x4248,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x3a48,0x4248,0x3a08,0x4208,0x4228,0x4208,0x39e7,0x4228,0x4a69,0x4a49,0x4228,0x4249,0x31c7,0x3a07,0x4a69,0x31c7,0x4a69,0x4208,0x3a08,0x4208,0x41e8,0x4208,0x4a49,0x4249,0x4a69,0x4208,0x4228,0x4a49,0x39e7,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4a69,0x4248,0x4aaa,0x3a28,0x4228,0x4229,0x3a08,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x31e7,0x39e7,0x39c7,0x31a7,0x39e8,0x31e8,0x39e8,0x39e7,0x31a6,0x31c7,0x39e8,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c6,0x4228,0x31c7,0x31c7,0x31c7,0x39e7,0x4a8a,0x4208,0x39c7,0x39e8,0x3a08,0x3a08,0x31a7,0x39e7,0x3186,0x31a7,0x4228,0x39e8,0x3a08,0x3186,0x31c7,0x31c7, +0x31c7,0x2986,0x39e7,0x39e7,0x31c6,0x4a49,0x31a6,0x39e7,0x3a08,0x31a6,0x39e7,0x3a08,0x4249,0x31e8,0x31c7,0x31a7,0x31c7,0x3a08,0x39e8,0x39e8,0x29a7,0x39e8,0x39e7,0x39c7,0x4228,0x39e7,0x4a89,0x4249,0x39e7,0x4228,0x4208,0x39e8,0x39e8,0x4249,0x4228,0x31c7,0x39c7,0x39c7,0x39e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x4a69,0x4a69,0x3a08,0x4228,0x4229,0x3a09,0x39e8,0x4249,0x4228,0x4208,0x4208,0x4229,0x4228,0x4249,0x4a8a,0x4249,0x4269,0x4aaa,0x4249,0x4249,0x4269,0x4249,0x4a89,0x4a69,0x4229,0x4249,0x426a,0x3a29,0x426a,0x4249,0x4a69,0x528a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4a6a,0x4a49,0x4a49,0x4a69,0x4a8a,0x52aa,0x4a6a,0x4269,0x4a8a,0x428a,0x4aaa,0x4a69,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x52cb,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x528a,0x5acb,0x5acb,0x4a6a,0x4228,0x4a8a,0x4a8a,0x4a8b,0x632c,0x18c3,0x1082,0x18a2,0x18a2,0x2124,0x2945,0x2125,0x2104,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2965,0x2965,0x2945,0x2965,0x62c5,0x8364,0x5a64,0x9425,0x4a03,0x2945,0x2965,0x2945,0x2945,0x3186,0x1061,0x0020,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62c6,0x8365,0x6ae5,0x83a5,0x4a24,0x2945,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x3165,0x3165,0x2965,0x2965,0x62e5,0xa465,0x7324,0x83a5,0x8385,0x3184,0x2945,0x2945,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x1082,0x10a2,0x18a3,0x18e3,0x2125,0x4a49,0x4a69,0x5269,0x528a,0x4a8a,0x4a8a,0x4249,0x4228,0x4248,0x4228,0x4228,0x3a08,0x4249,0x4a8a,0x4269,0x4249,0x3a07,0x4228,0x4a49,0x4228,0x4208,0x39c7,0x39e7,0x4a29,0x4a49,0x4208,0x4228,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x39e7,0x3a07,0x4228,0x4a49,0x4249,0x4248,0x39e7,0x3a28,0x4228,0x4248,0x4228,0x4a49,0x528a,0x4208,0x39c7,0x4a49,0x4248,0x3a28,0x3a28,0x39e7,0x4228,0x4a89,0x3a08,0x4249,0x3a07,0x4228,0x4229,0x528a,0x4249,0x4248,0x4a69,0x31e7,0x4a69,0x4249,0x4208,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x31c7,0x39e7,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x31e7,0x31c7,0x39e8,0x31c7,0x3a08,0x3a08,0x4208,0x31c7,0x4208,0x3a07,0x39e7,0x31c7,0x3a08,0x3a08,0x4a69,0x4228,0x39c7,0x39c7,0x31c7,0x29a6,0x4208,0x4a69,0x31c7,0x4208,0x31c7,0x3a08,0x31c7,0x31c7,0x31a7,0x31c7,0x39e8, +0x2966,0x31a7,0x39e8,0x31c7,0x31a6,0x31a6,0x31c7,0x39e8,0x39e8,0x29a6,0x3186,0x39e7,0x39e8,0x31c7,0x2986,0x31c7,0x4269,0x4249,0x39e8,0x39e8,0x3a08,0x31c7,0x31a6,0x39e7,0x3a08,0x39e7,0x4248,0x39e7,0x4208,0x4248,0x39e7,0x39e7,0x39e7,0x3a28,0x39e7,0x39e8,0x3a28,0x31c7,0x31c7,0x4228,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4208,0x4a8a,0x3a08,0x3a29,0x4249,0x31e8,0x3a08,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x4229,0x3a28,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x39e8,0x4229,0x4a8a,0x4a69,0x4228,0x4249,0x4a8a,0x4a8a,0x4249,0x4a49,0x4228,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4a4a,0x4a49,0x4a69,0x528a,0x528a,0x4a49,0x4229,0x4a8a,0x4a69,0x4a69,0x528a,0x4a8a,0x52eb,0x4a8a,0x4228,0x4a6a,0x5aeb,0x4a49,0x52aa,0x5acb,0x52aa,0x4249,0x3a28,0x426a,0x4a6a,0x4a6a,0x52aa,0x4a4a,0x528a,0x4a69,0x4a8a,0x4a6a,0x52ab,0x52cb,0x5b0c,0x18c3,0x1082,0x10a2,0x18a2,0x2104,0x2945,0x2125,0x2104,0x18e3,0x18c2,0x10a2,0x10a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2965,0x2965,0x2945,0x3985,0x8385,0x7b44,0x6ae4,0x9c44,0x5a84,0x2945,0x2965,0x2945,0x2965,0x3186,0x0861,0x0041,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x5a65,0x4a05,0x9405,0x6ac4,0x2945,0x2945,0x2945,0x3165,0x3185,0x1081,0x0841,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3165,0x2965,0x2965,0x2945,0x62c5,0x9c45,0x5244,0x6ae5,0x9c25,0x39a4,0x2965,0x2965,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2965,0x4228,0x4228,0x52aa,0x4a6a,0x52cb,0x4a8a,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4228,0x4a49,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4a89,0x4a69,0x4208,0x4a69,0x4228,0x31c7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x4a69,0x4248,0x3a07,0x4208,0x4228,0x4208,0x4228,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x3207,0x3208,0x3a28,0x4229,0x39e8,0x4208,0x4229,0x4a49,0x39e8,0x3a08,0x3a08,0x39c7,0x39e7,0x4229,0x4228,0x39e7,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x3a08,0x4228,0x31c7,0x3a08,0x41e8,0x4229,0x4208,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x31a7,0x39e7,0x31c7,0x4228,0x39e7,0x39c7,0x31a6,0x39e7,0x31e7,0x4249,0x4a6a,0x3a08,0x4249,0x29a6,0x31c7,0x31c7,0x39c7,0x4208,0x39e8,0x4208,0x39e7,0x39e7,0x31a7,0x2966,0x31a7,0x2986,0x4a69, +0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a7,0x31e7,0x31c7,0x31a7,0x31c7,0x39e7,0x31c7,0x31a7,0x2986,0x31e7,0x31e8,0x31c8,0x31c7,0x4208,0x4229,0x29a6,0x29a6,0x31e7,0x3a08,0x3a08,0x39e8,0x3a09,0x4a6a,0x4229,0x31e7,0x39e7,0x39e8,0x3a08,0x39e8,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x4228,0x4228,0x3a28,0x3a08,0x3a08,0x4229,0x31c7,0x39e8,0x39e7,0x39e7,0x4a69,0x4249,0x39e8,0x4208,0x4208,0x4208,0x3a28,0x4229,0x52aa,0x5acb,0x4a6a,0x4228,0x3a08,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x4269,0x4249,0x4a8a,0x52aa,0x4249,0x4a49,0x4a6a,0x528a,0x4a69,0x4229,0x4a6a,0x4229,0x52aa,0x528a,0x4249,0x4a69,0x4a49,0x5269,0x528a,0x62ec,0x528a,0x52aa,0x52ab,0x52ab,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4a69,0x4229,0x4229,0x52ab,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x52aa,0x4a89,0x4a8a,0x4a8a,0x52ab,0x52cb,0x4a69,0x52ab,0x52eb,0x18c2,0x1082,0x10a2,0x10a2,0x18e3,0x2945,0x2125,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x18c2,0x0841,0x0841,0x1082,0x2945,0x2965,0x3165,0x2965,0x3185,0x62a5,0x5a85,0x62c5,0x9c24,0x5a64,0x2945,0x2945,0x2965,0x2965,0x3186,0x0861,0x0841,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3185,0x7326,0x62a4,0x5244,0x8bc5,0x5a84,0x3165,0x2965,0x2945,0x2965,0x3165,0x1081,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0861,0x2124,0x3165,0x2965,0x2965,0x2965,0x5245,0x93e5,0x5a84,0x6b25,0x8ba5,0x3984,0x2965,0x2965,0x3165,0x3186,0x18a3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2965,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a8a,0x4a69,0x4a8a,0x4249,0x3a08,0x4228,0x3a08,0x4228,0x4208,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x4229,0x4a49,0x4208,0x39e8,0x4208,0x4228,0x3a28,0x4269,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4a69,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x4aaa,0x4249,0x4249,0x3a08,0x31e7,0x4209,0x4a6a,0x39c7,0x4a69,0x39e7,0x39e7,0x4a69,0x39e7,0x39e8,0x39e8,0x4228,0x4a49,0x4208,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x39e7,0x39c7,0x31a7,0x39c7,0x3a08,0x3a07,0x3a08,0x4228,0x31a7,0x39e8,0x4a69,0x31c7,0x4249,0x4229,0x39e7,0x3a08,0x39e7,0x3a08,0x31c7,0x4249,0x39e7,0x4228,0x31c7,0x31c7,0x31a7,0x39c7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x39e8,0x31a6,0x39e7, +0x31c6,0x39e7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x29a6,0x31a7,0x39c7,0x31a6,0x31c7,0x3a08,0x3a28,0x31c7,0x39e8,0x31e8,0x31a7,0x4229,0x4249,0x39e7,0x31e7,0x31a7,0x31c7,0x3a08,0x31e7,0x31c7,0x31e7,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x3a08,0x4229,0x4228,0x4a8a,0x39e7,0x3a07,0x4248,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x39e7,0x4248,0x4a69,0x3a08,0x4249,0x4229,0x4208,0x4248,0x4249,0x3a28,0x4269,0x4208,0x4a49,0x4229,0x4209,0x4229,0x4229,0x4a6a,0x52ab,0x4aab,0x3a29,0x3a28,0x4aaa,0x4269,0x4269,0x4228,0x52ab,0x52cb,0x4aaa,0x3a08,0x4269,0x4a69,0x4228,0x4a69,0x52eb,0x52ab,0x4a8a,0x52ab,0x52aa,0x52aa,0x52ab,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x528a,0x4a49,0x4a49,0x4a69,0x52aa,0x4249,0x52ca,0x52aa,0x4a69,0x5aeb,0x6b6d,0x4a89,0x4229,0x4a8a,0x52ca,0x4a49,0x632d,0x6b6d,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2125,0x2104,0x2104,0x18e3,0x18a2,0x10a2,0x10a2,0x18c2,0x0861,0x0861,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x39a5,0x3985,0x41e5,0x7b45,0x41c4,0x2965,0x2965,0x2965,0x3186,0x3165,0x1082,0x0861,0x1082,0x1082,0x1062,0x18c3,0x10a2,0x0861,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x7325,0x7304,0x7305,0x41c4,0x3165,0x2965,0x2965,0x2965,0x2924,0x1061,0x1061,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0861,0x2104,0x2965,0x2965,0x2965,0x2965,0x39a5,0x6ae5,0x7325,0x7325,0x6285,0x3165,0x2965,0x2965,0x3165,0x3165,0x10a2,0x0841,0x0861,0x10a2,0x1082,0x1082,0x18a2,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x52ab,0x4a49,0x4a49,0x4249,0x4a69,0x4a49,0x4228,0x41e7,0x4208,0x4a49,0x4a69,0x4a69,0x4269,0x3a28,0x4a8a,0x4249,0x3a08,0x4a6a,0x4249,0x4249,0x4a89,0x4269,0x4248,0x4228,0x4249,0x39e7,0x39e7,0x4229,0x4229,0x39e8,0x39e8,0x4229,0x4a6a,0x4249,0x4249,0x4a8a,0x4249,0x52aa,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x4a69,0x4249,0x4248,0x4a69,0x4208,0x39e8,0x31e7,0x4228,0x39e7,0x3a08,0x4a69,0x4a69,0x4228,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x4248,0x4228,0x4248,0x4228,0x4208,0x39e8,0x4229,0x4228,0x4a49,0x4249,0x31c7,0x39e8,0x39c8,0x4229,0x3a08,0x31c6,0x31c7,0x31a6,0x4a48,0x39e7,0x3a07,0x4228,0x31c7,0x31c7,0x31c7,0x3a08,0x4249,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x3a08,0x31e7,0x3a08,0x4208,0x4229,0x4208,0x31a7,0x39c7,0x39e8,0x39e7,0x4248,0x39c7,0x39c7,0x31c7,0x31e7,0x31c6,0x39e7,0x39c6,0x31a6, +0x31a7,0x31a6,0x2965,0x2986,0x31c7,0x31c7,0x31a7,0x39c8,0x31a7,0x39c8,0x4a69,0x39e8,0x3a08,0x3a28,0x31a7,0x3a08,0x39c7,0x39e8,0x3a08,0x4228,0x3a07,0x3a28,0x3a28,0x3a08,0x31e7,0x39e8,0x31c7,0x3a08,0x3a08,0x31e7,0x3a28,0x31e7,0x39e8,0x39c7,0x39e7,0x31c7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x4269,0x4229,0x39e8,0x4208,0x39e7,0x3a08,0x4249,0x3a07,0x39e7,0x4208,0x4209,0x4209,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x4228,0x4a69,0x4229,0x3a09,0x424a,0x4229,0x4a6a,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x528a,0x528a,0x528a,0x526a,0x4a8a,0x4a8a,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4a49,0x4a8a,0x4a8a,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4a69,0x4a89,0x4269,0x4a6a,0x4229,0x4a69,0x4a6a,0x4a8a,0x4a49,0x4a69,0x52aa,0x52cb,0x52ab,0x5acc,0x632c,0x52aa,0x4a6a,0x52ab,0x5aeb,0x528a,0x5aec,0x630c,0x18c2,0x1082,0x1082,0x10a2,0x20e4,0x2125,0x2104,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x2103,0x20e3,0x2945,0x2965,0x2965,0x2945,0x2965,0x3165,0x2945,0x3185,0x4a05,0x3185,0x3165,0x3165,0x3185,0x3186,0x2944,0x18e3,0x10a2,0x10a2,0x1062,0x1061,0x18c3,0x20e4,0x20e3,0x18e3,0x2945,0x2965,0x2965,0x2965,0x2945,0x39a5,0x4a26,0x5245,0x41e5,0x3165,0x3165,0x3165,0x3166,0x3165,0x2104,0x18c2,0x18c2,0x18a3,0x1082,0x1082,0x18e3,0x2104,0x20e3,0x2103,0x2945,0x2965,0x2945,0x2945,0x3165,0x39c5,0x4a25,0x4a05,0x3985,0x2965,0x2945,0x2945,0x3165,0x3165,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2925,0x4a6a,0x4a6a,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4a69,0x4228,0x4a6a,0x4a69,0x3a28,0x4a69,0x528a,0x4a49,0x3a28,0x4249,0x4249,0x4228,0x3a08,0x3a07,0x39e7,0x3a08,0x4249,0x3a28,0x31e7,0x39e8,0x4228,0x3a08,0x4a6a,0x4249,0x4249,0x4249,0x31c6,0x4249,0x4249,0x4a69,0x52ca,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4208,0x3a08,0x3a28,0x3a08,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x4229,0x4208,0x4228,0x4208,0x4228,0x39e7,0x4228,0x39e7,0x31c7,0x3a07,0x39e7,0x31a7,0x31c7,0x31c7,0x4208,0x4228,0x31a6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x39e8,0x4229,0x39c8,0x39c8,0x4208,0x4208,0x3a08,0x3a08,0x39e7,0x39e7,0x2145,0x2986,0x31c7,0x4249, +0x31a7,0x31a6,0x31a6,0x29a6,0x31c6,0x31c7,0x2986,0x31a7,0x39c7,0x4208,0x4a69,0x39c7,0x39e7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x4209,0x4229,0x3a08,0x4228,0x4228,0x4269,0x4249,0x39e8,0x31c8,0x31c7,0x39e8,0x39e8,0x4229,0x4249,0x4249,0x4a49,0x4a49,0x4228,0x31c7,0x4248,0x4228,0x4228,0x4a49,0x3a08,0x3a08,0x4a89,0x3a08,0x4208,0x4a49,0x39e7,0x4228,0x4249,0x3a28,0x4228,0x39e8,0x39e8,0x39e8,0x39e8,0x4249,0x3a28,0x3a08,0x4228,0x528a,0x4a69,0x426a,0x4a6a,0x4229,0x4228,0x4249,0x4a49,0x528a,0x4229,0x5acb,0x4229,0x4a49,0x4a69,0x4229,0x528a,0x52aa,0x4249,0x52aa,0x52aa,0x4a49,0x4a6a,0x4229,0x4a69,0x5aec,0x4249,0x4209,0x4249,0x4229,0x4a8b,0x52ec,0x4aaa,0x4a8a,0x4a69,0x4a89,0x4248,0x52aa,0x4269,0x4a49,0x5aeb,0x4a8a,0x4269,0x52cb,0x5aec,0x52cb,0x4aab,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x528a,0x5aeb,0x6b6d,0x52eb,0x5b0b,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18e4,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x18e3,0x2925,0x3186,0x3185,0x3165,0x2965,0x2945,0x2945,0x3165,0x3165,0x3165,0x3165,0x3165,0x3185,0x3165,0x3165,0x31a6,0x3186,0x3165,0x3165,0x2124,0x10a2,0x1062,0x1062,0x18c3,0x2965,0x31a6,0x2964,0x2944,0x2965,0x2965,0x2945,0x2945,0x2945,0x3165,0x3165,0x3145,0x2945,0x2945,0x3166,0x3186,0x3186,0x2965,0x2944,0x2924,0x18a3,0x1082,0x1082,0x2104,0x3186,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2945,0x2945,0x3165,0x3165,0x2924,0x2924,0x20e3,0x18c2,0x1082,0x1082,0x1082,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2925,0x4a49,0x4a69,0x4249,0x4269,0x3a28,0x4208,0x4a69,0x4228,0x3a28,0x4a69,0x528a,0x4a69,0x528a,0x4229,0x4a6a,0x4a69,0x4249,0x3a28,0x4a69,0x528a,0x4a49,0x4208,0x4249,0x4a69,0x4a49,0x4228,0x4208,0x39e7,0x4248,0x4269,0x4269,0x4a49,0x4249,0x39e7,0x4269,0x4a49,0x4249,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4a89,0x4a89,0x4228,0x4228,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4208,0x4a49,0x4a6a,0x4228,0x31c7,0x3207,0x3a07,0x4228,0x4269,0x4a69,0x31c7,0x4249,0x3a08,0x39e8,0x39c7,0x3a08,0x4a49,0x39e7,0x3a07,0x3a28,0x4249,0x4228,0x3a08,0x39c7,0x31c7,0x39e8,0x39e8,0x39e7,0x4a49,0x39c7,0x4229,0x4249,0x31a7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x31a7,0x4249,0x39e7,0x31c6,0x31e7,0x39e7,0x39e7,0x39e7,0x31a6,0x4228,0x39e8,0x39e8,0x3a08,0x4208,0x39e7,0x31c7,0x3a08,0x31a6,0x2145,0x2986,0x29a6,0x31a6, +0x31a7,0x39e7,0x39c7,0x31a6,0x39c7,0x4228,0x31a6,0x39e7,0x3a08,0x4208,0x39a7,0x31a7,0x3a08,0x39e7,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x3a08,0x4228,0x4228,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4228,0x39c7,0x39e7,0x39e7,0x4a8a,0x4249,0x4208,0x4209,0x4a29,0x4208,0x4aaa,0x4289,0x4248,0x52aa,0x4228,0x39e8,0x39e8,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x3a29,0x3a08,0x4229,0x4208,0x4228,0x4207,0x4208,0x52aa,0x4229,0x4a49,0x4a49,0x4a89,0x4249,0x4229,0x4249,0x4a8a,0x4a69,0x3a08,0x3a28,0x4269,0x4228,0x528a,0x4229,0x52aa,0x4269,0x4269,0x4aaa,0x42aa,0x3a28,0x4249,0x5acb,0x3a08,0x4249,0x4a69,0x52aa,0x52aa,0x52cb,0x4a8a,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a6a,0x4249,0x4a69,0x4aaa,0x4a89,0x4269,0x52aa,0x6b4d,0x4a8a,0x4a8a,0x6b4d,0x630d,0x528b,0x4a8a,0x5b0c,0x4a8a,0x52ab,0x4a69,0x5aec,0x52cb,0x5b0c,0x632c,0x634c,0x18c2,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x20e4,0x18c3,0x10a2,0x1082,0x1082,0x2104,0x2945,0x3185,0x2965,0x2924,0x2104,0x18e3,0x20e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x3165,0x2944,0x18a2,0x1062,0x1061,0x18e3,0x3166,0x3186,0x3165,0x2945,0x2924,0x2924,0x2104,0x2104,0x2104,0x2125,0x2124,0x2924,0x2104,0x2104,0x2924,0x2944,0x2945,0x2965,0x2945,0x2945,0x18c3,0x1082,0x1082,0x2104,0x31a6,0x39a6,0x3165,0x2924,0x2924,0x2924,0x2945,0x2124,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2924,0x2945,0x2945,0x2124,0x2124,0x2945,0x2924,0x18c3,0x1082,0x1082,0x1082,0x2104,0x18a3,0x1082,0x10a2,0x18a3,0x18e3,0x2124,0x4228,0x4a49,0x526a,0x52cb,0x3a29,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x4228,0x52aa,0x4a8a,0x4a69,0x4a6a,0x4a69,0x4a69,0x4a6a,0x52ca,0x52aa,0x52cb,0x4a89,0x4a69,0x4228,0x4208,0x4a69,0x4a49,0x4208,0x4208,0x4a69,0x3a28,0x3a28,0x4228,0x4249,0x3a28,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4228,0x52aa,0x4208,0x4a49,0x4a89,0x4228,0x4249,0x4a69,0x4249,0x4249,0x3a28,0x4229,0x4a6a,0x4208,0x3a08,0x3a07,0x39e8,0x3a08,0x3a28,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e7,0x3a07,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x3a08,0x31c7,0x31c7,0x39e7,0x39c7,0x4208,0x31c7,0x39e7,0x39e7,0x31c7,0x39c7,0x3a08,0x3a08,0x29a6,0x31c7,0x3a08,0x39c7,0x4228,0x31a7,0x3a08,0x4229,0x3a08,0x4208,0x31a6,0x31c6,0x39e7,0x31a6,0x2966,0x31a6,0x31c7,0x2965, +0x39e7,0x39e7,0x31c6,0x39c6,0x31a6,0x3186,0x39c7,0x4208,0x39a7,0x3187,0x31c7,0x31a7,0x31c7,0x31a7,0x39e8,0x39c8,0x39e7,0x39e7,0x3a08,0x4229,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x39e8,0x4a6a,0x4a8a,0x4229,0x39e7,0x4228,0x4228,0x3a08,0x39c7,0x4208,0x4229,0x4229,0x4249,0x4228,0x39c7,0x39e7,0x4208,0x39e8,0x4209,0x4229,0x39c8,0x39c7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x4208,0x4249,0x4208,0x4a49,0x52aa,0x4228,0x4249,0x4a6a,0x4a49,0x4a49,0x4249,0x4229,0x3a08,0x4a6a,0x4228,0x4a69,0x4a8a,0x4a69,0x4a69,0x4aaa,0x4269,0x4289,0x4248,0x4a6a,0x528a,0x4229,0x5aeb,0x5289,0x52aa,0x4a69,0x52cb,0x52cb,0x426a,0x424a,0x4aa9,0x52a9,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5aeb,0x4aaa,0x4269,0x52ab,0x5aeb,0x4a6a,0x5aec,0x5acb,0x630c,0x5aeb,0x52aa,0x738e,0x4a6a,0x5aeb,0x52ab,0x6b4d,0x5acb,0x52cb,0x528a,0x5acb,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x18e4,0x18c3,0x10a2,0x1082,0x1082,0x20e4,0x2104,0x20e3,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x18a3,0x18a3,0x18c3,0x18e3,0x20e3,0x18c3,0x1062,0x1062,0x18e3,0x2104,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x18c3,0x20e3,0x18c3,0x1082,0x1082,0x18e3,0x2924,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2104,0x18c3,0x1082,0x1082,0x1082,0x20e3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4249,0x52ab,0x4a49,0x4a49,0x4a6a,0x4a8a,0x3a08,0x52cb,0x4aaa,0x3a08,0x52cb,0x52cb,0x4269,0x4a6a,0x4229,0x528a,0x52cb,0x528a,0x52aa,0x4a49,0x39e7,0x4a69,0x4a69,0x4228,0x52cb,0x52aa,0x4208,0x4228,0x4249,0x4228,0x3a28,0x3a07,0x4248,0x4a49,0x3a28,0x4a89,0x4a89,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4229,0x4208,0x4228,0x528a,0x4a69,0x3208,0x3a28,0x3a08,0x4228,0x39e7,0x3a07,0x3a07,0x39e8,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4a49,0x39e7,0x3a07,0x4a49,0x4a69,0x3a08,0x4269,0x4228,0x3a28,0x4228,0x39c7,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x39e7,0x31a6,0x39e7,0x31c7,0x39e8,0x39e7,0x31a6,0x39e7,0x39c7,0x39e7,0x39e7,0x39c7,0x31c6,0x39c7,0x39e7,0x4249,0x4249,0x3187,0x39e8,0x31a7,0x31e7,0x3a08,0x39e7,0x4249,0x4228,0x4249,0x31e7,0x31e7,0x3a08,0x31c6,0x39e7,0x31a6,0x2145,0x31c7,0x31c7, +0x31a7,0x2986,0x31c7,0x31c7,0x31a6,0x2986,0x3186,0x31a7,0x3187,0x31a6,0x31c7,0x2986,0x2966,0x39c8,0x3a08,0x4208,0x39e7,0x4228,0x4249,0x31c7,0x31e7,0x31e7,0x31c7,0x39e7,0x4208,0x4208,0x4229,0x3a08,0x3a08,0x31c7,0x4228,0x31c7,0x39e7,0x39c7,0x3a28,0x3a08,0x39e7,0x4208,0x39e7,0x39e7,0x2986,0x31a7,0x39e8,0x31a7,0x39e8,0x4208,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3a08,0x4229,0x4229,0x4228,0x4a89,0x52ca,0x3a07,0x4228,0x4a69,0x4a6a,0x3a08,0x3a28,0x4229,0x4229,0x4a49,0x39e7,0x4249,0x4249,0x3a08,0x4229,0x4208,0x4229,0x4249,0x4249,0x4228,0x39c8,0x4a6a,0x4a69,0x528a,0x5aca,0x4a89,0x4a8a,0x4a6a,0x4a8a,0x4aab,0x4a8a,0x4a69,0x52aa,0x52ab,0x4aaa,0x5b0b,0x52aa,0x4249,0x4269,0x52aa,0x52aa,0x52aa,0x5aeb,0x4a89,0x528a,0x5acb,0x6b4d,0x52aa,0x526a,0x528a,0x52cb,0x5aeb,0x528a,0x630c,0x528a,0x528b,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e3,0x18e4,0x18c2,0x1082,0x1082,0x1082,0x18a3,0x10a2,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x1062,0x0861,0x10a2,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4228,0x4a8a,0x4229,0x4208,0x4a6a,0x4a6a,0x4a69,0x52aa,0x4a49,0x4249,0x4aaa,0x4269,0x4249,0x528a,0x4229,0x4a49,0x4a49,0x4228,0x39e8,0x4228,0x39e8,0x4a29,0x4a69,0x4208,0x528a,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4269,0x4228,0x4a49,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4208,0x3a08,0x4208,0x4208,0x4a69,0x4a4a,0x3a08,0x3a08,0x4248,0x4a69,0x3a08,0x4249,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4229,0x4a49,0x4228,0x4249,0x4228,0x31c6,0x4228,0x4249,0x4229,0x39e7,0x4228,0x4248,0x3a08,0x39e7,0x4249,0x4208,0x4228,0x31c7,0x39e7,0x4228,0x31a6,0x31c7,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x4a6a,0x5b0c,0x31c7,0x39c7,0x4229,0x3a07,0x4208,0x3a08,0x4228,0x31c7,0x3a07,0x4228,0x4209,0x3187,0x39c7,0x4249,0x31c7,0x31a6,0x31a6,0x39c7, +0x2966,0x2966,0x3a08,0x31a7,0x31a7,0x39e8,0x31a7,0x31a7,0x39c7,0x39c7,0x39e7,0x3a08,0x3a08,0x39e8,0x39e7,0x3a08,0x39e8,0x39c8,0x39e8,0x39e7,0x3a28,0x31c7,0x31c7,0x3a08,0x31a6,0x39c7,0x39c7,0x3a07,0x3a08,0x31c7,0x31e8,0x39c8,0x3186,0x3a08,0x52cb,0x31c7,0x3a07,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x39e8,0x39e7,0x39c7,0x4228,0x4228,0x39e7,0x4229,0x4229,0x39e9,0x39e8,0x31c7,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x4a49,0x4249,0x4249,0x528a,0x4248,0x4a8a,0x4249,0x4248,0x4249,0x4a8a,0x4249,0x4229,0x4249,0x4a49,0x4229,0x4229,0x4a69,0x4249,0x4269,0x4a8a,0x4228,0x4228,0x4a49,0x528a,0x52cb,0x4a69,0x4a8a,0x52ab,0x4aaa,0x52eb,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a6a,0x52ab,0x5acb,0x5aeb,0x3a08,0x4a69,0x5aec,0x4229,0x528a,0x6b4d,0x4a69,0x6b6d,0x52cb,0x634d,0x528b,0x4a6a,0x630c,0x5aeb,0x52aa,0x528a,0x5aeb,0x4a49,0x5aec,0x18c3,0x1082,0x1082,0x10a2,0x18a3,0x18e4,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1061,0x1061,0x1061,0x0861,0x0861,0x1082,0x1061,0x0861,0x1061,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1062,0x1062,0x1082,0x1082,0x1082,0x1062,0x1062,0x1062,0x1061,0x0861,0x1061,0x1062,0x1062,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x4a6a,0x4a6a,0x4229,0x4a69,0x4249,0x4a8a,0x52cb,0x4a8a,0x4249,0x4a69,0x4a8a,0x4249,0x4249,0x4229,0x4a49,0x4208,0x4208,0x4a69,0x4228,0x4a8a,0x4228,0x4a6a,0x52aa,0x4228,0x528a,0x4228,0x4a49,0x4a69,0x39e7,0x4249,0x4229,0x4228,0x4228,0x4228,0x4269,0x4269,0x4a49,0x528a,0x4a69,0x4229,0x4249,0x4248,0x4248,0x4249,0x52aa,0x4229,0x39e8,0x4a49,0x4a29,0x4a49,0x4229,0x4208,0x4248,0x3a08,0x4228,0x4228,0x3a07,0x4249,0x4249,0x39c7,0x4228,0x4a49,0x4249,0x4228,0x4229,0x39e7,0x4a69,0x3a07,0x4208,0x39e8,0x31c7,0x3a08,0x4228,0x31c7,0x39e8,0x4229,0x39e8,0x4208,0x39e7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x31a6,0x39e7,0x4248,0x39e7,0x31c7,0x39e8,0x4249,0x3a07,0x3a08,0x52ab,0x39e7,0x4228,0x31c7,0x31c7,0x3a08,0x4249,0x4229,0x4209,0x3187,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x31c7, +0x2986,0x2986,0x31a6,0x31a6,0x31a7,0x4228,0x39e8,0x39e7,0x31a7,0x39c7,0x39e8,0x39e7,0x3a08,0x29a6,0x31e7,0x4229,0x31a7,0x39e8,0x4a4a,0x39e8,0x4a69,0x39e7,0x39c7,0x4208,0x39c7,0x31a7,0x3a08,0x4a69,0x39e7,0x3a08,0x4229,0x4209,0x2987,0x4229,0x4a8a,0x31e7,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e7,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x424a,0x39e8,0x31e8,0x3a28,0x3a08,0x3a08,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a8a,0x4aaa,0x4a69,0x4249,0x4249,0x4a6a,0x39e7,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4249,0x4269,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52ab,0x4aaa,0x52cb,0x4249,0x4249,0x4a49,0x4a49,0x4a6a,0x52ab,0x4a8a,0x52cb,0x4249,0x4249,0x4269,0x4a8a,0x5aec,0x5acb,0x5acb,0x6b8d,0x52aa,0x4a8a,0x5aed,0x4a8b,0x4a6a,0x5b0c,0x5acb,0x5aec,0x528a,0x52eb,0x5b0c,0x18c2,0x1082,0x1082,0x18a2,0x18a3,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1061,0x1062,0x1082,0x1082,0x1081,0x0861,0x1061,0x1061,0x1082,0x1062,0x1061,0x1061,0x1062,0x1061,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x1062,0x1082,0x1082,0x1062,0x1062,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1062,0x1082,0x10a2,0x10a2,0x2124,0x4a49,0x4a6a,0x4208,0x528a,0x4a8a,0x52aa,0x52aa,0x4249,0x4a69,0x5aeb,0x4269,0x4249,0x4a8a,0x4a29,0x4a6a,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4a69,0x52ab,0x39e8,0x4a49,0x4a69,0x39e7,0x4aaa,0x4a69,0x4a49,0x4a49,0x4248,0x4228,0x4a49,0x4a49,0x4a29,0x39e7,0x3a08,0x39e8,0x39e7,0x4249,0x4a6a,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x4249,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x39e7,0x4229,0x39e7,0x31c7,0x31c7,0x39e8,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x4249,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39c7,0x31a6,0x39c7,0x31a7,0x31c7,0x3a07,0x4228,0x31c7,0x31c7,0x39e7,0x31a7,0x3a08,0x3a08,0x31c7,0x4229,0x39e9,0x4249,0x4229,0x2986,0x39e7,0x4249,0x4228,0x39e7,0x39e7, +0x3186,0x2986,0x31c7,0x3207,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x39c7,0x31c7,0x3a07,0x31c7,0x31e7,0x31e7,0x3a08,0x39e8,0x3a08,0x3a08,0x39c7,0x39c7,0x39a7,0x4208,0x39e7,0x31c6,0x39c7,0x39e8,0x3a07,0x3a08,0x39c7,0x4208,0x4229,0x31a7,0x39c8,0x31c7,0x31e7,0x4228,0x3a28,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x39e7,0x31c7,0x3a08,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x3a08,0x39c7,0x39e7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4a6a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a6a,0x39e8,0x4229,0x4229,0x52ab,0x52ab,0x4a69,0x4a69,0x4269,0x4a8a,0x4a8a,0x52ab,0x4a69,0x4a69,0x52ab,0x4a6a,0x528b,0x4a4a,0x528a,0x528a,0x4229,0x4229,0x52ab,0x5b2c,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x4229,0x4aaa,0x52ab,0x528a,0x5aec,0x5aeb,0x52cb,0x52cb,0x632d,0x4a6a,0x4a8a,0x5aec,0x5b0c,0x5aec,0x4a8a,0x6b8e,0x634d,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x1082,0x1082,0x0861,0x1061,0x1061,0x1062,0x1061,0x1062,0x1062,0x1061,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x1082,0x2104,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x2104,0x528a,0x5acb,0x4249,0x52ca,0x5aeb,0x528a,0x528a,0x528a,0x4a6a,0x52aa,0x4a8a,0x4249,0x4a49,0x4a29,0x39e8,0x4249,0x4a8a,0x52aa,0x4228,0x4229,0x4a6a,0x528a,0x528a,0x4228,0x4249,0x4a69,0x4208,0x4a69,0x4a69,0x4a49,0x4a49,0x4229,0x4a49,0x4208,0x4228,0x4a49,0x4249,0x4229,0x4269,0x5aeb,0x4a8a,0x4249,0x4229,0x39e7,0x4249,0x52cb,0x4248,0x4a8a,0x528a,0x4229,0x4228,0x4a49,0x4208,0x39c7,0x39e8,0x4249,0x4228,0x4229,0x4208,0x3a08,0x39e8,0x29a7,0x31e7,0x3a29,0x31e8,0x4228,0x39e7,0x39e7,0x39e7,0x4249,0x4228,0x4249,0x39e8,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x4209,0x4229,0x4208,0x39e7,0x31a6,0x4228,0x4228,0x39e7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x31a7,0x2966,0x3a08,0x39e8,0x31c7,0x39c7,0x31c7,0x31a6,0x39e8,0x4229,0x39c7,0x39c7,0x4208,0x41e8,0x39e8,0x4249,0x31c7,0x4208,0x39e8,0x39c7,0x39c7,0x31c7, +0x39c7,0x31a6,0x31c7,0x31e7,0x31c6,0x29a6,0x2986,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39c7,0x31c7,0x3a08,0x4a6a,0x39e8,0x3a08,0x4a49,0x39e7,0x39e7,0x39e8,0x39e7,0x4a89,0x4207,0x31a6,0x39e8,0x39c7,0x31a7,0x39e8,0x3a08,0x31a7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x3a07,0x3a07,0x4228,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x39e7,0x41e8,0x39e8,0x39e7,0x39e8,0x3a08,0x39e8,0x4208,0x4228,0x4208,0x4229,0x4229,0x4249,0x4228,0x4249,0x4a69,0x4a6a,0x4a6a,0x4a69,0x4a69,0x3a08,0x4208,0x4229,0x526a,0x526a,0x4a29,0x528a,0x528a,0x4208,0x4a29,0x52ab,0x4a29,0x4a6a,0x4a49,0x4229,0x5acc,0x528a,0x4a69,0x4a69,0x4a69,0x526a,0x4a49,0x528a,0x528a,0x4229,0x4a69,0x52ab,0x4a6a,0x52aa,0x52aa,0x4a69,0x4a6a,0x5aec,0x5acb,0x52aa,0x52aa,0x5aeb,0x5b0c,0x6b6d,0x52cb,0x5aec,0x528a,0x5acb,0x52ab,0x528a,0x18c2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10c3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1062,0x0861,0x0861,0x1061,0x1061,0x0861,0x1061,0x1062,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x10a2,0x2104,0x1082,0x0881,0x1082,0x18c3,0x10a2,0x2124,0x5acb,0x5acb,0x4a69,0x52ca,0x52aa,0x52ca,0x528a,0x5acb,0x528a,0x4249,0x5b0c,0x4249,0x4a49,0x4a6a,0x4a69,0x4a69,0x4249,0x4249,0x4229,0x3a08,0x4a6a,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4249,0x4a69,0x4228,0x4228,0x4208,0x4a8a,0x52aa,0x3a07,0x4208,0x4a49,0x4a89,0x4a8a,0x31e7,0x52cb,0x4a8a,0x4a6a,0x4a49,0x39e8,0x4229,0x528a,0x4a69,0x52aa,0x4a69,0x4229,0x4228,0x4a49,0x4a89,0x4249,0x4228,0x4228,0x31e7,0x3a08,0x3a28,0x3a28,0x4a89,0x4249,0x3a07,0x4249,0x4249,0x2985,0x39e7,0x4248,0x31c6,0x4228,0x4248,0x4249,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x31c7,0x31c7,0x4229,0x39e8,0x39c7,0x39c7,0x3a08,0x39e7,0x4228,0x39e7,0x39c7,0x3186,0x4228,0x39e7,0x31a7,0x39c7,0x4229,0x39e8,0x31a7,0x39a7,0x2945,0x39c7,0x4208,0x39e7,0x39c7,0x31a6,0x31c7,0x4208,0x31c6,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4228,0x31a6, +0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x39e7,0x3a08,0x39e8,0x31c7,0x31a7,0x41e8,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39c7,0x4228,0x4a8a,0x4269,0x4269,0x39e8,0x31c7,0x4208,0x39c7,0x31a6,0x4228,0x3a07,0x39c7,0x3a07,0x31c7,0x31a6,0x3a07,0x4248,0x3a08,0x31a7,0x31a7,0x31a8,0x31c7,0x39e8,0x4208,0x4207,0x4208,0x39e7,0x4228,0x3207,0x3a08,0x3a08,0x39e7,0x39e8,0x4208,0x3a08,0x4a69,0x39e8,0x4229,0x3a09,0x3a08,0x3a28,0x4228,0x4228,0x4249,0x4a69,0x4aaa,0x52cb,0x4228,0x4228,0x4228,0x3a08,0x4a8a,0x3a28,0x3a08,0x4a49,0x4a49,0x4229,0x4228,0x528a,0x4a89,0x52aa,0x4249,0x4a69,0x4229,0x4aab,0x4269,0x4269,0x52cb,0x4a89,0x5b0c,0x4a69,0x4208,0x4249,0x4a69,0x4249,0x52aa,0x3a08,0x4a8a,0x52cb,0x3a08,0x52aa,0x52aa,0x5acb,0x528a,0x5b0c,0x52aa,0x5acb,0x5b0c,0x52aa,0x5b0b,0x52aa,0x630c,0x5acc,0x4229,0x526a,0x5acb,0x5aeb,0x18c2,0x1081,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1061,0x0861,0x0861,0x0861,0x1081,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1061,0x1061,0x1082,0x10a2,0x2924,0x1082,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x52aa,0x5aeb,0x4a89,0x4248,0x52ca,0x52ca,0x52cb,0x4a8a,0x5aec,0x5aab,0x528a,0x5aeb,0x5b0c,0x528a,0x4a69,0x4a8a,0x3a28,0x4a8a,0x52ab,0x4229,0x4229,0x5269,0x4a49,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4a69,0x52aa,0x4269,0x4a8a,0x4a69,0x4aaa,0x3a28,0x4a69,0x3a28,0x4a69,0x3a28,0x4a8a,0x4249,0x4a6a,0x4208,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4229,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e8,0x31a7,0x31a7,0x4a49,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4207,0x3a08,0x39e7,0x4228,0x31c6,0x39c7,0x4208,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x39e7,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4a89,0x3a08,0x4a8a,0x39e8,0x31a7,0x31a7,0x3a08,0x4249,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x4228,0x39e7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x4a69,0x39c7, +0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x39c7,0x39e8,0x31e7,0x31c7,0x31c7,0x3a08,0x39e8,0x31a7,0x39c8,0x4208,0x39c7,0x39e8,0x39e7,0x31a6,0x3186,0x39e8,0x39e7,0x2986,0x31a7,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x3a28,0x4248,0x31e7,0x31e7,0x39e8,0x39c7,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31e7,0x4228,0x4248,0x39e7,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x31c8,0x31c7,0x39e7,0x4a69,0x4a69,0x4249,0x4228,0x4a6a,0x4249,0x3a08,0x4208,0x3a08,0x4a49,0x4a6a,0x4228,0x39e8,0x4208,0x4208,0x4249,0x4a8a,0x4a49,0x52aa,0x4249,0x52aa,0x4228,0x4a89,0x3a49,0x4229,0x4a8a,0x3a08,0x4a8a,0x4aaa,0x4228,0x4248,0x4269,0x52cb,0x52ab,0x5aec,0x4a8a,0x5b0c,0x4269,0x4248,0x528a,0x52aa,0x5289,0x52aa,0x6b6e,0x5aec,0x4a49,0x52cb,0x4a8a,0x4a89,0x528a,0x632c,0x528a,0x4a69,0x5aeb,0x52ab,0x4a8a,0x18c2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x18e3,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2103,0x1082,0x1061,0x1062,0x18a2,0x2944,0x1082,0x0861,0x1082,0x18e3,0x18e3,0x2924,0x4a49,0x4a49,0x4a69,0x52aa,0x52ca,0x5b0c,0x52eb,0x52aa,0x52aa,0x52aa,0x4208,0x6b6e,0x528b,0x4208,0x4a49,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x52aa,0x5aeb,0x4248,0x4a69,0x4249,0x4269,0x4228,0x52aa,0x52ca,0x4a69,0x4aaa,0x4a6a,0x4a69,0x3a08,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x528a,0x4208,0x39c7,0x4208,0x4228,0x4228,0x4208,0x4208,0x4248,0x3a07,0x39e7,0x4249,0x3a08,0x31c7,0x3a08,0x4229,0x39e8,0x39e8,0x39e8,0x4249,0x39e7,0x39c7,0x4208,0x4228,0x4208,0x4a49,0x4228,0x4208,0x39e8,0x4208,0x4a69,0x39e7,0x4228,0x3a07,0x4228,0x528a,0x39e8,0x4228,0x39e7,0x39e7,0x4a49,0x3a07,0x4a69,0x39e7,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x4a49,0x4208,0x39e7,0x3a07,0x39e8,0x4209,0x31a7,0x39e7,0x4228,0x31e7,0x31c7,0x3186,0x4a69,0x31a7,0x31c7,0x39c7,0x39e7,0x31a6,0x3a08,0x39e7,0x31a7, +0x29a6,0x31c7,0x31c7,0x2965,0x2986,0x2986,0x39e7,0x3a08,0x3a08,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x39e7,0x3a08,0x39e7,0x31a7,0x31a7,0x39e8,0x31a7,0x39e7,0x4228,0x4228,0x4208,0x31a6,0x39e7,0x4208,0x4249,0x31c7,0x31a6,0x31e7,0x3a08,0x2987,0x31a7,0x39c8,0x3a08,0x31e7,0x31e7,0x39e8,0x3a08,0x3a08,0x4228,0x4228,0x4269,0x3a28,0x3a28,0x52aa,0x4208,0x4208,0x39e7,0x39c7,0x39e8,0x4249,0x4249,0x31c7,0x31e7,0x3a08,0x3a07,0x4249,0x3a08,0x3a08,0x39e8,0x4229,0x4a69,0x4248,0x4249,0x3a29,0x4249,0x4229,0x4249,0x4208,0x4a69,0x4208,0x3a08,0x4249,0x4249,0x4a8a,0x4a49,0x4a49,0x4a8a,0x4a6a,0x4229,0x4209,0x4249,0x4249,0x4228,0x4229,0x5aec,0x5acb,0x52ab,0x4a6a,0x4249,0x4a8a,0x4a8a,0x4a89,0x4a8a,0x4248,0x4228,0x528a,0x5aeb,0x7bef,0x52cb,0x5acb,0x4a8a,0x4aaa,0x4a8a,0x52aa,0x4a69,0x528a,0x528a,0x5aab,0x5aec,0x528b,0x630c,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1062,0x1082,0x1081,0x18c3,0x2124,0x2944,0x3165,0x2944,0x2944,0x2944,0x2944,0x2103,0x2124,0x2124,0x2103,0x2103,0x2103,0x2104,0x2924,0x2124,0x2124,0x2924,0x3165,0x2103,0x10a2,0x0861,0x0861,0x10a2,0x2945,0x39c6,0x2123,0x20e3,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x18c2,0x1082,0x0861,0x0861,0x18c3,0x2965,0x3185,0x2924,0x2124,0x2924,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2924,0x2924,0x2924,0x2965,0x2965,0x2965,0x3185,0x3185,0x2104,0x1082,0x0861,0x0861,0x18c2,0x3164,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x528a,0x4a69,0x5aeb,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x5289,0x4228,0x4a6a,0x4229,0x4209,0x4a49,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4a8a,0x4a6a,0x4a49,0x52aa,0x4248,0x52aa,0x4a8a,0x4a8a,0x4249,0x4208,0x52aa,0x3a08,0x4228,0x4228,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a69,0x4a49,0x4a6a,0x4a69,0x4a49,0x4a6a,0x4249,0x4228,0x4a89,0x4a69,0x4269,0x4a69,0x4229,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x3a08,0x3a28,0x3a07,0x3a07,0x3a28,0x3a08,0x4208,0x4228,0x3a08,0x4249,0x3a08,0x3a08,0x39e8,0x4228,0x3a07,0x3a08,0x4208,0x39e7,0x39c7,0x3a08,0x4229,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c7,0x3a08,0x39e7,0x3a08,0x4248,0x4208,0x4208,0x4207,0x528a,0x422a,0x39c8,0x31a7,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x4a49,0x31c7,0x31a7,0x39e8,0x3a07,0x4208,0x3a08,0x39e8,0x31c7, +0x31c7,0x31a6,0x2986,0x2986,0x2986,0x31c7,0x3a08,0x39e7,0x39e7,0x39e7,0x31a7,0x31a7,0x3186,0x39c7,0x39c7,0x3a08,0x3a08,0x31e7,0x3a08,0x3a28,0x3207,0x39e7,0x3a08,0x3a08,0x39c7,0x31c7,0x39c7,0x39e8,0x4229,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x31e8,0x3208,0x3a08,0x31a7,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3208,0x426a,0x426a,0x3a08,0x3a48,0x4269,0x31c7,0x3a08,0x4a6a,0x4a8a,0x3a28,0x3a28,0x3a28,0x4248,0x4228,0x4229,0x4249,0x4229,0x4228,0x4a69,0x4a89,0x4249,0x4249,0x4269,0x39e8,0x52cb,0x4a8a,0x4a69,0x4208,0x4aaa,0x52cb,0x3a08,0x4229,0x4229,0x4a49,0x4249,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a08,0x4a8a,0x4a6a,0x4a49,0x528a,0x4a69,0x528a,0x528a,0x4a8a,0x52cb,0x52ca,0x4aaa,0x4a8a,0x5acb,0x526a,0x528a,0x634d,0x5aeb,0x5acb,0x52aa,0x4a89,0x52cb,0x632c,0x4228,0x528b,0x6b4d,0x5acc,0x4a8a,0x528a,0x528a,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18c3,0x18a2,0x1062,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2904,0x2944,0x2965,0x3165,0x3165,0x2924,0x2944,0x2944,0x2944,0x2944,0x2945,0x2945,0x3165,0x3165,0x2944,0x2103,0x2944,0x2103,0x10a2,0x0861,0x0861,0x18a3,0x2945,0x3186,0x18e3,0x2124,0x2945,0x2944,0x2944,0x2924,0x2924,0x2124,0x2924,0x2944,0x2124,0x2124,0x2124,0x2924,0x2103,0x18c2,0x20e3,0x18c3,0x1082,0x0861,0x0861,0x18e3,0x2965,0x2965,0x2104,0x2944,0x2945,0x3165,0x3165,0x3185,0x3185,0x3186,0x3165,0x2965,0x2945,0x2965,0x2965,0x3185,0x2104,0x2104,0x2944,0x18e3,0x1082,0x0861,0x0861,0x18c3,0x2944,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2924,0x5acb,0x5aec,0x5aeb,0x4a49,0x52ab,0x52aa,0x4aaa,0x52eb,0x4248,0x4a69,0x52ca,0x528a,0x4a49,0x4a8a,0x4249,0x4269,0x4269,0x4a8a,0x4a69,0x4a8a,0x4229,0x4a6a,0x5acb,0x4249,0x4228,0x4a69,0x4249,0x4a49,0x39e8,0x39e8,0x4269,0x52cb,0x4a69,0x4228,0x4a49,0x4229,0x4a49,0x5aec,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x4208,0x3a08,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x31c7,0x4249,0x4249,0x4228,0x39e7,0x4248,0x39e7,0x4208,0x4269,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x3a08,0x4228,0x4208,0x39e7,0x39e7,0x31a7,0x4249,0x4269,0x3a07,0x31a6,0x3a08,0x4248,0x39c7,0x3a08,0x4228,0x31c6,0x31c7,0x31c7,0x3a08,0x3a28,0x31e7,0x2985,0x528a,0x52aa,0x39e7,0x4249,0x39e8,0x39c8,0x39c7,0x39e8,0x4208,0x31a6,0x4248,0x3a08,0x39e7,0x39e8,0x31c7,0x39c7,0x4208,0x4a69,0x4228,0x2966,0x31c7, +0x39e7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31a6,0x39e7,0x31a6,0x31a7,0x39c7,0x39e7,0x39c7,0x4228,0x3a08,0x39e8,0x31c7,0x39e7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e8,0x39e7,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c7,0x31a7,0x39e7,0x31e7,0x31a6,0x31c7,0x31a7,0x39c8,0x39e8,0x3a09,0x3a08,0x39e8,0x3a08,0x4248,0x4268,0x4aaa,0x3a08,0x4249,0x4208,0x4a49,0x4249,0x4249,0x39e7,0x4229,0x4229,0x4a49,0x4249,0x39e8,0x4229,0x4249,0x4249,0x4249,0x4228,0x3a08,0x4249,0x5acb,0x4a6a,0x4249,0x4249,0x52cb,0x4a8a,0x4208,0x4a49,0x4229,0x4a6a,0x4a49,0x4269,0x4aaa,0x4a8a,0x4a69,0x634c,0x52aa,0x4a8a,0x4249,0x4a8a,0x4228,0x4a49,0x52aa,0x4a8a,0x4a69,0x52cb,0x52cb,0x4a8a,0x4a8b,0x4a6a,0x52ab,0x528a,0x630c,0x630c,0x52aa,0x5b0b,0x4a8a,0x52cb,0x5aec,0x52ab,0x52ab,0x5b0c,0x52ec,0x4a69,0x52cb,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x1082,0x1082,0x2924,0x2944,0x2945,0x2945,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3165,0x2103,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x18a2,0x18a2,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2124,0x2944,0x2944,0x2944,0x2124,0x2124,0x2945,0x3165,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18c3,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2924,0x2945,0x2945,0x3186,0x2104,0x1082,0x18c2,0x10a2,0x1082,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x10a2,0x18c3,0x18c3,0x2924,0x4a49,0x4a8a,0x4a6a,0x4229,0x4a6a,0x528b,0x4a8a,0x52cb,0x4a49,0x4249,0x4a69,0x52aa,0x52cb,0x4a69,0x4a89,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x528a,0x4249,0x4a69,0x52aa,0x39e7,0x4228,0x4249,0x52aa,0x4228,0x4249,0x4a49,0x4249,0x4228,0x528a,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x39e8,0x4a6a,0x4249,0x39e7,0x4249,0x39e8,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x3a28,0x4228,0x4248,0x39e7,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x39e7,0x39e8,0x4249,0x4228,0x39e7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e7,0x31c7,0x4208,0x39c7,0x39e7,0x4228,0x31c7,0x4228,0x4228,0x3a08,0x4228,0x4249,0x31c7,0x4228,0x4228,0x3a07,0x4249,0x528a,0x39c7,0x39e7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x39c6,0x4248,0x39e7,0x39e7,0x4a6a,0x31a6,0x39e7,0x31a7,0x3a08, +0x31c7,0x31a7,0x3186,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x39e7,0x31c7,0x31a6,0x31a7,0x39c7,0x31a7,0x39c7,0x31c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x2986,0x31c7,0x3a08,0x39e8,0x3a09,0x3a09,0x3a08,0x29c7,0x31c7,0x31e7,0x3a07,0x39e7,0x31c7,0x2986,0x29a6,0x31a6,0x31e7,0x31a7,0x31c7,0x31c7,0x31e8,0x39e8,0x39e8,0x424a,0x4a8a,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x4208,0x4208,0x39e8,0x39e8,0x31c7,0x39e8,0x526a,0x4a49,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4228,0x4249,0x4a6a,0x4249,0x4249,0x4a8a,0x4229,0x4208,0x4a49,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a6a,0x4a49,0x4a6a,0x4a49,0x52cb,0x4aaa,0x4269,0x4a69,0x52cb,0x52cb,0x4a8a,0x4228,0x52aa,0x52cb,0x4a6a,0x632d,0x5acb,0x4a49,0x52ab,0x5acb,0x5aca,0x4a69,0x52ab,0x4a69,0x52cb,0x52cb,0x4a8a,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x18a2,0x0861,0x0841,0x0861,0x2924,0x2924,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2944,0x0861,0x0861,0x1082,0x0861,0x0861,0x10a2,0x1082,0x0841,0x18c3,0x2944,0x2924,0x2925,0x2945,0x2924,0x2944,0x2964,0x3164,0x2944,0x2944,0x2924,0x2944,0x2945,0x3165,0x18c2,0x0841,0x1082,0x1082,0x0861,0x1082,0x10a2,0x1061,0x0861,0x2104,0x2124,0x2924,0x2924,0x2945,0x2945,0x2945,0x2964,0x2944,0x2944,0x2925,0x2945,0x2925,0x2965,0x2945,0x0841,0x0841,0x1082,0x1062,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x18a3,0x18c3,0x18c3,0x2124,0x4a69,0x5aeb,0x4a6a,0x52aa,0x528a,0x528a,0x4a49,0x52ab,0x4249,0x4228,0x3a08,0x52eb,0x52aa,0x4a69,0x5acb,0x4a69,0x4a49,0x4228,0x4a49,0x4208,0x4a6a,0x4a6a,0x3a08,0x4a8a,0x52aa,0x4249,0x4a69,0x4a49,0x4a49,0x4a69,0x3a08,0x4a49,0x39e7,0x4a69,0x4a89,0x52aa,0x4248,0x4a49,0x4248,0x4228,0x4a49,0x52aa,0x4a69,0x52aa,0x4a69,0x4228,0x528a,0x4a6a,0x4229,0x4229,0x39e7,0x528a,0x4a69,0x39e7,0x4249,0x4229,0x3a08,0x3a08,0x31a6,0x4249,0x4249,0x39c7,0x3a08,0x4248,0x3a08,0x4a89,0x4228,0x4208,0x3a07,0x39e7,0x39c7,0x39e8,0x4a49,0x528a,0x39e8,0x39e8,0x39c8,0x31c7,0x31a6,0x3a08,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e8,0x4a69,0x4228,0x4a69,0x31a6,0x3186,0x39e7,0x39e7,0x39e7,0x4229,0x4a6a,0x4228,0x39e7,0x4248,0x4248,0x4228,0x4249,0x4228,0x39e7,0x3a08,0x31e7,0x39e7,0x39c7,0x29a6,0x31c7, +0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x39e7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a6,0x31c7,0x31a7,0x4249,0x4249,0x2986,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x31c7,0x39c7,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x3a08,0x31e7,0x29a6,0x31e7,0x39e7,0x4228,0x39e7,0x4249,0x4229,0x3a08,0x4229,0x3a08,0x3a08,0x4269,0x4229,0x31e8,0x3a08,0x3a08,0x4229,0x528a,0x528a,0x4228,0x31a7,0x4228,0x3a08,0x3a08,0x4a49,0x4a69,0x4228,0x4249,0x4229,0x4228,0x5acb,0x3a08,0x428a,0x428a,0x3a29,0x3a28,0x4249,0x52aa,0x4a89,0x4a89,0x4a69,0x4a6a,0x4a6a,0x4249,0x4a49,0x4a4a,0x5aeb,0x4a69,0x4a49,0x4a6a,0x5acc,0x52ab,0x52ab,0x4a49,0x4a6a,0x4249,0x5aec,0x5aeb,0x528a,0x5aeb,0x632c,0x5acb,0x4a69,0x52ab,0x4a6a,0x424a,0x4a8a,0x52ca,0x52cb,0x5b2c,0x4a8a,0x5b0c,0x630c,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0020,0x0861,0x2124,0x2124,0x2945,0x2945,0x2925,0x2945,0x3185,0x39a4,0x39a4,0x39a5,0x3165,0x2945,0x2945,0x2965,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0020,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c4,0x5a64,0x5a84,0x4204,0x2944,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1061,0x1082,0x1082,0x0841,0x0861,0x2104,0x2925,0x2945,0x2945,0x2945,0x3185,0x4a25,0x5244,0x4204,0x3185,0x2945,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0841,0x18c3,0x2904,0x0861,0x0861,0x10a2,0x18c3,0x18c2,0x2944,0x528a,0x4a49,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4a6a,0x4228,0x5289,0x4a89,0x4a69,0x4229,0x4a69,0x4a49,0x52aa,0x4228,0x4a49,0x4a8a,0x3a28,0x3a28,0x4a8a,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a49,0x4249,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4228,0x4a8a,0x4a8a,0x3a08,0x5aeb,0x528a,0x4208,0x4a49,0x4a49,0x4a6a,0x4208,0x4229,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x39e7,0x4229,0x3a08,0x39e7,0x3a08,0x4228,0x4208,0x39c7,0x31e7,0x31c7,0x3a08,0x4a69,0x4a69,0x31a6,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e8,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x39c7,0x4208,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x4208,0x39c7,0x39e8,0x31c7,0x31c7,0x4228,0x39e7,0x31a7,0x39c7,0x31c7,0x3186,0x39c8,0x31e7,0x3a08,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31e7,0x39e7,0x39e8,0x2966,0x2986, +0x2966,0x2986,0x31a7,0x31c7,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x39e8,0x3a08,0x39e7,0x31a6,0x31c7,0x4228,0x4a89,0x4228,0x39e7,0x39e7,0x3186,0x31a7,0x39e8,0x4249,0x39e7,0x31a6,0x31a6,0x3a28,0x31e7,0x3a08,0x4a49,0x528a,0x31c7,0x3a29,0x39e8,0x3a08,0x4a69,0x4229,0x4208,0x4229,0x4a49,0x4229,0x3a08,0x3a08,0x4249,0x52aa,0x4a48,0x4228,0x39e8,0x39e8,0x31e8,0x31e8,0x4229,0x528a,0x41e8,0x39e8,0x4208,0x4a6a,0x4a6a,0x4248,0x4229,0x4249,0x4249,0x4a4a,0x4249,0x52cb,0x4a4a,0x4a6a,0x4229,0x634d,0x52cb,0x4249,0x52ab,0x52aa,0x4a69,0x3a28,0x4a8a,0x4209,0x3a09,0x4a6a,0x4a6a,0x4a49,0x5aeb,0x5b0c,0x634c,0x5269,0x5acb,0x634d,0x4a8a,0x52ab,0x528a,0x4a4a,0x528a,0x52ab,0x52cb,0x5aeb,0x632d,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2925,0x2925,0x2925,0x3165,0x5265,0x5a64,0x62c4,0x6b04,0x39c4,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2945,0x2945,0x2964,0x7324,0x7303,0x7304,0x7b64,0x3984,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x0861,0x2104,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b24,0x6ae4,0x7344,0x5244,0x2965,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0861,0x18c3,0x2104,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x2944,0x528b,0x4a29,0x4228,0x5289,0x528a,0x4a69,0x4228,0x4a69,0x528a,0x52aa,0x4248,0x4a29,0x4229,0x4a29,0x4229,0x528a,0x4229,0x4249,0x4a69,0x4a69,0x3a07,0x52cb,0x4a49,0x528a,0x4a8a,0x4228,0x4a89,0x4248,0x4228,0x4249,0x4a49,0x4a69,0x4a49,0x3a07,0x4228,0x4a69,0x4a8a,0x3a08,0x4249,0x4a8a,0x4a69,0x52aa,0x4a6a,0x4209,0x528a,0x528a,0x4a49,0x4249,0x4249,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x4228,0x3a08,0x31e7,0x3a08,0x3a08,0x4a49,0x4a29,0x31a7,0x3a08,0x31e7,0x4a69,0x3a08,0x3a08,0x39c7,0x3186,0x39e7,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x31a7,0x39c7,0x31a7,0x39e8,0x39c7,0x39e8,0x31a7,0x39e7,0x31a6,0x4228,0x2985,0x4208,0x4208,0x39e8,0x3a08,0x31c7,0x39e7,0x31c7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x2986,0x39e7,0x31a6,0x31c7,0x3a28,0x39e8,0x31a7,0x3187,0x31a7,0x3a08,0x4228,0x31c7,0x31a7,0x2966,0x2986, +0x2966,0x2965,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x31c7,0x31c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x39e7,0x39e7,0x31c7,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x31a7,0x4209,0x39c8,0x39e8,0x3186,0x39c7,0x4208,0x3a28,0x39e7,0x4228,0x4228,0x39e8,0x39e8,0x3a08,0x3a08,0x4208,0x4a49,0x4249,0x41e8,0x4249,0x4a6a,0x3a08,0x4a8a,0x4a8a,0x3a08,0x4269,0x4249,0x4a49,0x4208,0x39e8,0x31a7,0x39e8,0x3a08,0x39e8,0x39e8,0x4209,0x4208,0x4a49,0x4a29,0x528a,0x4a6a,0x4a49,0x5acb,0x5aeb,0x3a28,0x4a8a,0x4229,0x4249,0x4a8a,0x4249,0x3a28,0x4a6a,0x5aeb,0x4a8a,0x4269,0x52ca,0x4a8a,0x4249,0x3a28,0x4249,0x4a49,0x4229,0x5acb,0x52aa,0x52aa,0x4208,0x5b0c,0x632c,0x31e8,0x528a,0x5acb,0x4a4a,0x5aec,0x5aeb,0x52aa,0x52cb,0x52ab,0x52aa,0x4a89,0x4249,0x5aec,0x4229,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2924,0x2925,0x2925,0x3165,0x5245,0x5a64,0x8384,0x7b63,0x39a4,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2925,0x2925,0x3184,0x8be4,0x7b23,0x7304,0x9404,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7b65,0x8344,0x5224,0x83a5,0x7304,0x3145,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x2104,0x0861,0x0861,0x10a2,0x18c3,0x20e3,0x2924,0x4a49,0x4a69,0x4208,0x4249,0x4249,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4228,0x4a69,0x4229,0x4208,0x39c7,0x4a69,0x4228,0x4a6a,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x3a08,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4269,0x4229,0x39e8,0x3a08,0x528a,0x4228,0x4228,0x4a69,0x4229,0x4208,0x4a6a,0x4229,0x4249,0x4a69,0x4a69,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x31a6,0x31a6,0x31c6,0x4228,0x4a8a,0x39e8,0x4249,0x4249,0x4249,0x4249,0x4208,0x4208,0x31a6,0x31a6,0x39e8,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x39c7,0x39c7,0x31a7,0x39c8,0x39e8,0x31a6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x39c7,0x31a7,0x39e7,0x31a7,0x2966,0x31a6,0x29a6,0x31c7,0x31c7,0x2966,0x31a6,0x31a6,0x39c7,0x31c6,0x31e7,0x31e7,0x39e7,0x39c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a7, +0x2965,0x2965,0x2986,0x29a6,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31e7,0x39e7,0x31c7,0x31a6,0x31a6,0x31c7,0x31a7,0x31c7,0x31a7,0x39c7,0x39e7,0x4228,0x39e7,0x31a6,0x29a6,0x31c7,0x31c7,0x39c7,0x39e8,0x2986,0x2986,0x31c7,0x29a7,0x2986,0x2986,0x39e7,0x39c7,0x39e7,0x39e8,0x3a08,0x4249,0x4a6a,0x4229,0x4a69,0x31c7,0x39e7,0x39c8,0x4229,0x31a7,0x31a7,0x4249,0x4249,0x3a08,0x52cb,0x4249,0x3a08,0x31c8,0x4a6a,0x39e8,0x4208,0x3a08,0x31a7,0x31e7,0x3a08,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4229,0x4249,0x4229,0x4229,0x4a8a,0x4249,0x31c7,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x3a08,0x4249,0x52ab,0x4a6a,0x4228,0x4a8a,0x5aeb,0x4a49,0x428a,0x426a,0x4229,0x4a6a,0x4a6a,0x4a8a,0x4249,0x52cb,0x528a,0x4a6a,0x630c,0x4208,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a49,0x4a49,0x528a,0x52ab,0x4a69,0x4a49,0x528a,0x4a4a,0x18a3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2124,0x2924,0x2945,0x2925,0x2945,0x3165,0x5244,0x8384,0x5223,0x3164,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x3184,0x8bc4,0x8363,0x7b44,0x93e4,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7325,0x8364,0x5244,0x8bc4,0x8364,0x3144,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x2103,0x20e3,0x0861,0x1061,0x10a2,0x18c3,0x18e3,0x2924,0x4249,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4228,0x4229,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x39e8,0x3a28,0x3a28,0x3a08,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x4249,0x3a08,0x4249,0x4208,0x4a69,0x528a,0x528a,0x4a69,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4a69,0x4a6a,0x39e8,0x31a7,0x39e8,0x31c6,0x3a07,0x4229,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x3a08,0x31a6,0x3186,0x39c7,0x4208,0x3a07,0x39e7,0x4208,0x4a49,0x4a69,0x39c7,0x4249,0x4229,0x4229,0x3a08,0x39c8,0x4229,0x39c7,0x31a7,0x4228,0x39c7,0x39c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e8,0x31a6,0x31a6,0x31c7,0x31c6,0x31c7,0x3a08,0x31a7,0x2966,0x31a7,0x39c7,0x31a7,0x4208,0x31a6,0x29a6,0x2986,0x3186,0x31a6,0x3185,0x39a6,0x2966,0x31c7,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x3186,0x2986,0x31c6,0x31a6,0x31c7,0x3186, +0x2986,0x31c7,0x2986,0x2965,0x2986,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x31c7,0x39c7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x39c8,0x39e8,0x39c7,0x31a7,0x31c7,0x31a7,0x31a7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x39e8,0x3a08,0x4229,0x39e8,0x39e8,0x4208,0x39e8,0x4249,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x4208,0x39c7,0x39e8,0x4249,0x39e7,0x31c7,0x31c8,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3a08,0x3a28,0x3a28,0x39e8,0x3a28,0x4269,0x4269,0x4269,0x4249,0x3a08,0x4229,0x4a6a,0x4229,0x5acc,0x4249,0x4229,0x4249,0x39e8,0x4a49,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4208,0x4a29,0x4a49,0x4229,0x4249,0x3a08,0x3a08,0x4229,0x3a08,0x4249,0x4a6a,0x528a,0x4a69,0x4a49,0x4229,0x4249,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2924,0x2944,0x2924,0x2945,0x2945,0x3164,0x7344,0x7303,0x3164,0x2944,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0881,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x39c4,0x93e5,0x6ac3,0x62a4,0x9c04,0x4a03,0x2925,0x2945,0x2945,0x2965,0x18c3,0x0020,0x0861,0x1082,0x0861,0x1082,0x1082,0x0020,0x1081,0x2124,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b44,0x6ac3,0x9404,0x7b24,0x2944,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x18e3,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x2124,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x4208,0x4229,0x4229,0x39e8,0x4208,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x4208,0x39c7,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39e8,0x4a29,0x4a49,0x4229,0x2986,0x31a7,0x4208,0x4208,0x39e8,0x31c7,0x2986,0x29a6,0x31c7,0x39e8,0x39c7,0x31a7,0x52aa,0x4a69,0x4228,0x3a28,0x4229,0x3a08,0x39c7,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x41e7,0x3186,0x2945,0x2965,0x2125,0x2145,0x2145,0x2966,0x2965,0x2966,0x2125,0x2125,0x2104,0x2125,0x2945,0x2104,0x2124,0x2124,0x2104,0x2124,0x1904,0x2125,0x2125,0x2125,0x18e4,0x4228,0x4228,0x3186,0x31c7,0x31a6,0x2966,0x2966,0x2965,0x3186,0x2966,0x2966,0x2966,0x2965,0x2966,0x2986,0x3186,0x2965,0x2945,0x3186,0x2986,0x3186,0x2966,0x2945,0x2965,0x2965,0x2124,0x2945,0x2145,0x2145,0x2165,0x2986,0x2965, +0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a7,0x2966,0x39e8,0x39c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31a7,0x39c7,0x3a08,0x39e8,0x4209,0x39c8,0x39c8,0x4208,0x39e8,0x39e8,0x39c7,0x31a7,0x29a6,0x31c6,0x31e7,0x39e7,0x4228,0x39c7,0x39c8,0x39c8,0x39c8,0x41e8,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x31c7,0x4229,0x4208,0x39e7,0x4208,0x39c7,0x4209,0x4209,0x4a8a,0x4229,0x4a6a,0x4229,0x4249,0x4249,0x4a6a,0x4a49,0x4209,0x4209,0x39e8,0x41e8,0x4a4a,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4229,0x39e8,0x4208,0x4a49,0x4229,0x4208,0x41e8,0x4208,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2944,0x2924,0x2924,0x2924,0x2124,0x41e4,0x93e4,0x5223,0x2924,0x2944,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18e3,0x2945,0x2945,0x2925,0x2124,0x41e5,0x93e5,0x6283,0x5264,0x93e4,0x4a03,0x2925,0x2925,0x2925,0x2965,0x18c3,0x0020,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x1082,0x2124,0x2945,0x2945,0x2945,0x2945,0x4a45,0x7324,0x62c4,0x93e4,0x6284,0x2945,0x2945,0x2945,0x2945,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18c3,0x18e3,0x2944,0x39e7,0x4228,0x4228,0x29a6,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x4207,0x31c6,0x39e7,0x4228,0x39e7,0x4228,0x4a48,0x4248,0x39e7,0x0842,0x0000,0x1904,0x18e3,0x18c3,0x10c3,0x1083,0x1082,0x18c3,0x10a3,0x18e4,0x2104,0x2104,0x18e4,0x18c4,0x10c3,0x2145,0x2125,0x1904,0x1924,0x1904,0x1904,0x18e3,0x1924,0x634c,0x636c,0x52aa,0x4a8a,0x5289,0x4228,0x4208,0x39e7,0x39e7,0x39c7,0x31a6,0x4208,0x4208,0x41e8,0x2945,0x1082,0x1083,0x1083,0x10a2,0x18e3,0x10a2,0x18c3,0x18e4,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x2124,0x1903,0x1904,0x18c3,0x18c3,0x18c3,0x2104,0x2125,0x2986,0x3a07,0x4a89,0x29a6,0x29a6,0x2965,0x2145,0x2124,0x2124,0x2144,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2104,0x2125,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1904,0x18e3,0x2125,0x2965,0x3a08,0x4248,0x4aaa,0x4a8a, +0x2945,0x2145,0x2144,0x2945,0x2965,0x2945,0x2966,0x2965,0x2986,0x2986,0x2945,0x3186,0x39c7,0x31a6,0x3186,0x2985,0x3186,0x2985,0x2965,0x3186,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3a07,0x39c6,0x31a6,0x3186,0x31a6,0x3186,0x2104,0x2104,0x18e4,0x18c3,0x10c4,0x10a3,0x10a3,0x18e4,0x18a3,0x18c3,0x20e4,0x18c3,0x18a3,0x1082,0x18c3,0x18c4,0x18c4,0x18c4,0x10a3,0x18e4,0x10a3,0x18e4,0x18c3,0x1083,0x2104,0x5aeb,0x4a8a,0x31c7,0x39e7,0x31a6,0x3186,0x39e8,0x3a08,0x31c7,0x31c7,0x4208,0x4208,0x3a08,0x52aa,0x4a49,0x0000,0x18c3,0x18a3,0x18a2,0x18a3,0x1083,0x18a3,0x1083,0x18c4,0x1083,0x18c4,0x1083,0x2105,0x20e4,0x10a3,0x0842,0x0862,0x0021,0x1063,0x1063,0x1083,0x18c4,0x0862,0x31a7,0x52aa,0x3a08,0x39e7,0x2986,0x31c6,0x31c7,0x31a6,0x39e7,0x39c7,0x2985,0x39c6,0x39e7,0x39c6,0x39e6,0x39e7,0x39e7,0x4228,0x4228,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x2104,0x2924,0x2124,0x2124,0x2124,0x2124,0x5245,0x8384,0x3983,0x2924,0x2924,0x2924,0x2925,0x2945,0x2124,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0841,0x18c3,0x2925,0x2945,0x2925,0x2924,0x3185,0x6ae5,0x6ac4,0x62a4,0x7304,0x3984,0x2924,0x2924,0x2925,0x2945,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x0861,0x1082,0x2124,0x2925,0x2925,0x2924,0x2944,0x4a25,0x7325,0x6ae4,0x7b24,0x41c4,0x2945,0x2945,0x2945,0x2945,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x2965,0x5b4c,0x5b4c,0x5b4c,0x8450,0x73ce,0x73ce,0x7c30,0x8450,0x73ee,0x5b0b,0x632c,0x8450,0x6bae,0x6bce,0x6bae,0x632b,0x5b0b,0x634c,0x5b0c,0x4229,0x5aec,0x2965,0x4a89,0x52ca,0x52eb,0x4268,0x52eb,0x5b0b,0x52ea,0x5b0b,0x4aaa,0x4a89,0x4228,0x4228,0x29a7,0x4269,0x4249,0x31e7,0x4249,0x4269,0x4aaa,0x638d,0x31e7,0x4a69,0x4229,0x4249,0x4248,0x4228,0x4208,0x4228,0x39e8,0x4249,0x3a08,0x4269,0x5aec,0x52aa,0x4a69,0x3a07,0x2124,0x2925,0x2104,0x2945,0x31a7,0x2965,0x10a3,0x0001,0x1904,0x10c2,0x1904,0x10c3,0x18e3,0x2124,0x2985,0x2165,0x0882,0x2965,0x2145,0x2124,0x2124,0x2945,0x39c7,0x2965,0x5aeb,0x4a6a,0x2166,0x10e4,0x1904,0x1904,0x10c3,0x18e3,0x18e3,0x18c3,0x2104,0x18e3,0x10c3,0x18e3,0x1904,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x2165,0x4248,0x4a8a,0x4a4a, +0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2125,0x2124,0x2945,0x2966,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2944,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2125,0x4a69,0x632c,0x0882,0x2124,0x18e3,0x1903,0x18e3,0x10a3,0x18e4,0x18e4,0x10c3,0x18e4,0x2125,0x2124,0x2165,0x2945,0x2124,0x2144,0x2945,0x2925,0x2124,0x2124,0x2104,0x1904,0x18e4,0x2104,0x4208,0x39e8,0x2145,0x2965,0x2965,0x2986,0x31a7,0x31a7,0x31a7,0x31c7,0x31e7,0x31e8,0x39e8,0x4269,0x31e7,0x39e6,0x4228,0x39e7,0x31a6,0x2165,0x2985,0x31c6,0x31e7,0x31c7,0x29c6,0x29c6,0x3207,0x3a07,0x4248,0x3a08,0x4a8a,0x52ab,0x4aab,0x4269,0x428a,0x4a89,0x39e7,0x1904,0x4228,0x5aeb,0x4a8a,0x52ca,0x636d,0x73ef,0x638e,0x7bf0,0x73ce,0x634c,0x7c0f,0x8450,0x8450,0x94d2,0x9d33,0x8491,0x8cd3,0x8cd2,0x9534,0x18e3,0x1082,0x1081,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2924,0x2124,0x2924,0x2924,0x2124,0x41e5,0x5244,0x2944,0x2924,0x2124,0x2924,0x2945,0x2945,0x2103,0x10a2,0x1081,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c2,0x2104,0x2125,0x2124,0x2124,0x2924,0x39c4,0x4a24,0x4a04,0x41c4,0x2944,0x2124,0x2124,0x2924,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c2,0x18c3,0x2104,0x2945,0x2925,0x2924,0x2925,0x39a5,0x5245,0x5245,0x4a05,0x3165,0x2945,0x2945,0x2965,0x2965,0x2104,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x3186,0x84b3,0x7c51,0x8471,0xa575,0x9d14,0x8472,0x94f4,0x9d55,0xa595,0x9513,0x8cd3,0x94f4,0x7c52,0x8492,0x8c92,0x6b8e,0x632e,0x636e,0x52cb,0x4a69,0x5b0b,0x31c7,0x4a6a,0x4a8b,0x4a6a,0x4aaa,0x52eb,0x4a8a,0x4aaa,0x4a8a,0x4249,0x39e7,0x3a08,0x29a7,0x4269,0x29c7,0x31e7,0x3a08,0x31e8,0x31e7,0x4aab,0x8472,0x3a08,0x634d,0x52aa,0x31c8,0x31a7,0x39c8,0x3a08,0x29a7,0x3208,0x3a08,0x29a6,0x52aa,0x634d,0x528a,0x4a8a,0x4249,0x2124,0x2924,0x2104,0x2145,0x2965,0x10c3,0x4269,0x5b4c,0x3a08,0x5b0c,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x634c,0x52eb,0x6bae,0x2986,0x2144,0x2965,0x2144,0x2124,0x39c7,0x31c6,0x5aec,0x52ab,0x39c8,0x10a3,0x18e3,0x1904,0x10e3,0x10c3,0x10c3,0x10a3,0x2104,0x18e3,0x10e3,0x10c3,0x18e4,0x1904,0x18e3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3,0x10c3,0x18c3,0x10a2,0x2986,0x4229,0x18e4, +0x18e3,0x18e3,0x2124,0x2124,0x1904,0x1904,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x2104,0x1904,0x10e3,0x18e4,0x10c3,0x18e4,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x0001,0x630c,0x840f,0x0000,0x2965,0x18e3,0x1904,0x18e3,0x2965,0x1903,0x2104,0x31a6,0x1944,0x2985,0x2103,0x2944,0x2986,0x31c6,0x3a07,0x31c6,0x3a07,0x1924,0x2985,0x2124,0x1904,0x2145,0x2104,0x18e4,0x18e5,0x18e4,0x18e4,0x1904,0x2125,0x18e4,0x18c4,0x31a7,0x3a08,0x29c7,0x31c8,0x29a7,0x52ab,0x4a8a,0x52cb,0x4aaa,0x3a29,0x31e7,0x31c7,0x2166,0x29a6,0x39e8,0x31c7,0x3a49,0x3a69,0x3a28,0x4249,0x4269,0x4269,0x4a8a,0x4a8a,0x52ec,0x4acb,0x4aab,0x4aab,0x3a29,0x31a6,0x3a08,0x4a8a,0x5b0d,0x6bcf,0x7410,0x73f0,0x6bd0,0x73f0,0x73d0,0x7c0f,0x7c10,0x8452,0x8431,0x8c93,0xadf8,0x9535,0x8493,0x8cd4,0x9d55,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x2124,0x2124,0x2945,0x2945,0x2924,0x2945,0x2944,0x3164,0x3164,0x2924,0x2945,0x2925,0x2925,0x2945,0x2945,0x2924,0x2924,0x18c3,0x1081,0x0861,0x0861,0x10a2,0x2104,0x2964,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2944,0x18c2,0x1081,0x1082,0x1082,0x18e3,0x2944,0x2964,0x2945,0x3165,0x2945,0x2945,0x2945,0x2944,0x3165,0x39a5,0x3185,0x3165,0x3165,0x2965,0x3165,0x3185,0x2965,0x2924,0x20e3,0x10a2,0x0861,0x0861,0x0841,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x18a2,0x18e3,0x3186,0x8472,0x8493,0x8473,0x8c92,0x94f4,0x7c31,0x8c93,0x8473,0x9515,0x9d35,0x84b3,0x7411,0x6bb0,0x7bf1,0x94f4,0x73af,0x4a8c,0x52cd,0x426a,0x31c7,0x4228,0x4249,0x4a8a,0x4a6a,0x6b8e,0x7c10,0x6b6d,0x8430,0x6b8d,0x6b8d,0x634c,0x8c70,0x4a89,0x636c,0x6bae,0x636d,0x6b8e,0x73cf,0x1925,0x31a7,0x31a8,0x52ed,0x3a29,0x6b6f,0x424a,0x29a7,0x2966,0x2966,0x31a7,0x31a7,0x31c7,0x29a7,0x08c3,0x5aeb,0x7bef,0x4a8a,0x4229,0x2986,0x2945,0x2124,0x1904,0x18e4,0x39e7,0x2164,0x73ce,0x73ee,0x6bae,0x8470,0x52ca,0x7c0f,0x52eb,0x8430,0x634d,0x4a8a,0x8430,0x0040,0x31a6,0x2985,0x2144,0x2145,0x31c7,0x31c6,0x5acb,0x4a8a,0x3a08,0x0882,0x10c3,0x10e3,0x1904,0x10e3,0x10c3,0x10a3,0x18e3,0x1904,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x10c3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e3,0x18e4,0x10a3,0x10c3,0x10e4,0x2966,0x18e4, +0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x18e4,0x1083,0x528a,0x52aa,0x2144,0x2985,0x18e3,0x0800,0x52cb,0x5b4c,0x3248,0x530b,0x634d,0x52cb,0x4a89,0x52ca,0x636c,0x42a9,0x73ef,0x5b0b,0x6b8d,0x636c,0x530b,0x10e3,0x2145,0x1924,0x2124,0x2104,0x2104,0x1904,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x2125,0x3a09,0x29c8,0x29c7,0x29c7,0x4a8a,0x4228,0x52ec,0x426a,0x3208,0x31e7,0x2165,0x5b2c,0x6bae,0x4269,0x636d,0x5aeb,0x5b0c,0x5b2c,0x632c,0x6bae,0x73ce,0x6bae,0x8492,0x5b0d,0x424a,0x52ec,0x428b,0x3a09,0x31a7,0x39c8,0x422a,0x5b0d,0x636f,0x73f0,0x73f0,0x6bd0,0x6b8f,0x8431,0x8cb3,0x7c32,0x7411,0x8c94,0x7c53,0x8cb5,0x73f2,0x6bd1,0x8473,0x8cb4,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x1062,0x1061,0x10a2,0x2124,0x3165,0x2965,0x2924,0x2945,0x2924,0x2104,0x2104,0x2124,0x2104,0x2104,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x3165,0x2104,0x1082,0x0861,0x0861,0x18c3,0x2945,0x3185,0x2944,0x2104,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2924,0x39a5,0x39a6,0x2103,0x1081,0x0862,0x1082,0x18e3,0x3185,0x3185,0x2945,0x2945,0x2124,0x2924,0x2104,0x2104,0x2924,0x3165,0x3186,0x3165,0x3165,0x2925,0x2924,0x3165,0x3165,0x3165,0x2945,0x18c3,0x1061,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x1082,0x18a2,0x20e3,0x3186,0x8472,0x7412,0x7412,0x73f1,0x7c31,0xad97,0x7c32,0x8473,0x8cb4,0x8c94,0x6bb0,0x7c31,0x7c11,0x7c11,0x8452,0x634e,0x52cc,0x52cc,0x4a6b,0x31a7,0x39e7,0x4228,0x52eb,0x4a8a,0x6baf,0x7c10,0x73cf,0x8c71,0x7bf0,0x8451,0x5aeb,0x8cb2,0x634e,0x7c31,0x0064,0x4209,0x6b4e,0x738e,0x0001,0x39e8,0x2167,0x634e,0x4a6a,0x528b,0x4229,0x29a7,0x29a7,0x2966,0x3187,0x39e8,0x39e8,0x2966,0x10e3,0x52ca,0x7c10,0x632d,0x4249,0x31c7,0x2965,0x2945,0x18c3,0x2144,0x2985,0x2985,0x73ae,0x94d2,0x6b6d,0x8451,0x52ca,0x5289,0x738e,0x8c71,0x6b4d,0x4249,0x8431,0x0000,0x2966,0x3186,0x2986,0x2125,0x2965,0x39c7,0x5b0c,0x4249,0x39e8,0x3186,0x18e4,0x10e3,0x1904,0x18e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e4,0x1924,0x1904,0x10e3,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e4,0x1904,0x10a3,0x10c3,0x10e3,0x08a3,0x10c3, +0x10a2,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x10e3,0x10c3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x10c3,0x10e3,0x1904,0x18e4,0x18e3,0x10c3,0x31a7,0x2985,0x2965,0x2965,0x18e4,0x0000,0x6b8e,0x6baf,0x636d,0x5b0c,0x0000,0x6b6e,0x6b8d,0x73ef,0x740f,0x6b8e,0x7c0f,0x5b0c,0x73ef,0x7c2f,0x636c,0x0081,0x2145,0x2124,0x2104,0x2124,0x2125,0x1904,0x10e3,0x1903,0x18e3,0x18a3,0x18c3,0x18c3,0x10a3,0x2986,0x29c7,0x29c7,0x2987,0x4249,0x39e8,0x4aab,0x424a,0x31e8,0x31c7,0x0882,0x7c30,0x8471,0x638d,0x8491,0x6bad,0x73ee,0x73ae,0x7c0f,0x8c91,0x73ee,0x8c92,0x8472,0x4aab,0x4aab,0x4acc,0x428b,0x39e8,0x31a7,0x39e8,0x422a,0x73d0,0x8c93,0x7411,0x7410,0x73f0,0x73cf,0x6bd0,0x7411,0x73f1,0x6bd0,0x8cb3,0x7411,0x6bb0,0x7c31,0x94d3,0x7c51,0x7c33,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c3,0x1082,0x1062,0x0861,0x18c3,0x2104,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x18a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18e3,0x2104,0x20e4,0x1082,0x0861,0x0861,0x18c3,0x2124,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x3165,0x3185,0x2924,0x1082,0x0861,0x1082,0x20e3,0x2944,0x2924,0x20e3,0x18c3,0x18a2,0x18a3,0x18a2,0x18a3,0x18c3,0x2104,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x20e3,0x2104,0x2924,0x2124,0x18e3,0x1062,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18a2,0x20e3,0x39a6,0x9d35,0x4aee,0x6391,0x530e,0x8cd3,0xb5d7,0x6bd0,0x7c31,0x7411,0x73f1,0x73b0,0x73d0,0x73d0,0x6baf,0x6b8f,0x632e,0x4aab,0x4aab,0x422a,0x31a7,0x4208,0x4228,0x52eb,0x4aab,0x5b0d,0x73f0,0x8430,0x8430,0x6b8e,0x8450,0x5b0c,0x8451,0x634d,0x73af,0x632d,0x634e,0x5b0c,0x6b6e,0x0062,0x31e8,0x2186,0x5b2c,0x3a08,0x52aa,0x4a8a,0x29a6,0x31c8,0x2967,0x31a7,0x31c7,0x29a6,0x2965,0x2145,0x1944,0x632d,0x8451,0x31e8,0x31e8,0x2945,0x2104,0x10c2,0x2124,0x2145,0x10a2,0x52cb,0x632d,0x52ab,0x6b4e,0x5aec,0x5aeb,0x632c,0x5b0c,0x632d,0x31a7,0x5acb,0x10a3,0x2104,0x2945,0x2966,0x2965,0x2986,0x2965,0x52aa,0x4a6a,0x39e8,0x2946,0x18e4,0x18e3,0x1903,0x1904,0x10c3,0x18e3,0x18e3,0x10c2,0x1904,0x1924,0x2124,0x1904,0x10a3,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x1904,0x2124,0x10c3,0x10c3,0x10c3,0x1904,0x2125, +0x10c2,0x18c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x10c3,0x10c3,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18e4,0x18e3,0x10c3,0x10c3,0x1903,0x1903,0x18e3,0x10c3,0x3186,0x31a6,0x2924,0x2125,0x18e4,0x0042,0x6b6e,0x5aeb,0x39c7,0x632d,0x5aeb,0x6b8e,0x634d,0x7c10,0x7bcf,0x73ae,0x6bcf,0x5b2d,0x73cf,0x7bef,0x4248,0x1904,0x2124,0x2104,0x2104,0x2125,0x2145,0x29a7,0x10e3,0x1924,0x1903,0x18c2,0x39c6,0x2945,0x10a3,0x2986,0x29a6,0x2186,0x2987,0x426a,0x39e7,0x39e8,0x3a09,0x31a8,0x39c8,0x1023,0x8c51,0x73cf,0x634d,0x7c30,0x8430,0x8430,0x73ae,0x7c30,0x73ae,0x8430,0x8c92,0x73f0,0x428a,0x426a,0x3a49,0x3a08,0x31c7,0x31a6,0x4229,0x4a4a,0x6b8f,0x8493,0x6bf1,0x7411,0x6baf,0x6bb0,0x5b2f,0x52ee,0x5b2e,0x636f,0x6b6f,0x634f,0x5b2e,0x73af,0xa576,0x73f1,0x7c11,0x18c3,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x18c3,0x18a3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x1082,0x1062,0x0861,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a3,0x10a2,0x1061,0x1061,0x1061,0x18e3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x3186,0x8c93,0x6390,0x6bf2,0x6bd0,0x8451,0x8452,0x8493,0x7411,0x6bd0,0x636e,0x73d0,0x73d0,0x6baf,0x8452,0x8472,0x7410,0x4aec,0x4aac,0x422a,0x31a7,0x4208,0x3a08,0x426a,0x426a,0x4a8b,0x6b6e,0x52ab,0x5b0d,0x4a8b,0x52cb,0x4a8b,0x5acc,0x52ab,0x3a08,0x5b0c,0x426a,0x3a08,0x39e8,0x2146,0x31c7,0x29c7,0x4249,0x31a7,0x528b,0x424a,0x31e7,0x3a08,0x2166,0x2987,0x2986,0x2966,0x2986,0x31a7,0x2986,0x4249,0x6b6f,0x31e9,0x31c8,0x2125,0x2145,0x10e3,0x1904,0x1904,0x2125,0x1905,0x08a4,0x18c4,0x1084,0x18e4,0x2105,0x18e4,0x1063,0x18c5,0x20e5,0x0842,0x2125,0x2104,0x2104,0x2125,0x3186,0x31c7,0x0882,0x4208,0x4a49,0x31a7,0x1904,0x18e3,0x10c2,0x10e3,0x2145,0x18e3,0x2145,0x1904,0x10a2,0x18e3,0x2124,0x2124,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x10c3,0x18e3,0x2145,0x2966, +0x18c3,0x10c2,0x10c2,0x10c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x18e4,0x2145,0x2124,0x1904,0x18e3,0x10c3,0x18e3,0x18e3,0x10c3,0x18c3,0x2965,0x2965,0x1904,0x2124,0x18c3,0x18e4,0x31c7,0x18e4,0x18c4,0x4a29,0x630c,0x31c7,0x31c8,0x41e8,0x41e9,0x3187,0x424a,0x4a6a,0x31c8,0x2987,0x31c7,0x1904,0x2124,0x1903,0x1903,0x18e4,0x2146,0x2145,0x1904,0x2124,0x1924,0x3186,0x39c6,0x2104,0x2965,0x31c7,0x29a7,0x2986,0x31a7,0x4a6a,0x31a6,0x29a7,0x31e8,0x29c7,0x31c8,0x2966,0x5aed,0x31a8,0x52cc,0x3a09,0x52ac,0x5aed,0x73af,0x5b0c,0x632d,0x73af,0x632d,0x6baf,0x4a8a,0x428a,0x4249,0x3a08,0x31c7,0x2966,0x39e8,0x4a6b,0x4a8b,0x52ed,0x52ed,0x5b0e,0x6b8f,0x52ed,0x4acd,0x428c,0x634e,0x73d0,0x4aac,0x5b2d,0x5b6e,0x6baf,0x6bb0,0x636f,0x73d0,0x18e3,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x0861,0x0882,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1062,0x0861,0x0861,0x1061,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1081,0x0861,0x0861,0x1061,0x0861,0x1061,0x0861,0x0861,0x1062,0x1062,0x1061,0x0861,0x1061,0x1082,0x18c3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x2945,0x634f,0x636f,0x5b0e,0x5b2e,0x5b2e,0x6b6f,0x8473,0x73d0,0x5b0e,0x52ed,0x636f,0x6b8f,0x7c11,0x8452,0x8c73,0x7c11,0x5b2e,0x428b,0x424a,0x2966,0x4228,0x4229,0x424a,0x424b,0x422b,0x3a0a,0x4a6b,0x3a0a,0x424a,0x422a,0x3a09,0x31e9,0x3a09,0x52ec,0x4a8a,0x4209,0x5aec,0x52cb,0x2986,0x31c8,0x29a7,0x4a6a,0x31c8,0x4229,0x31c8,0x2986,0x2986,0x2966,0x2145,0x2145,0x2145,0x2966,0x2966,0x2966,0x2125,0x2947,0x39e8,0x2987,0x2124,0x1904,0x18e3,0x1904,0x2145,0x2104,0x1904,0x1904,0x18e4,0x18c3,0x10e3,0x2125,0x1905,0x18e4,0x18a3,0x10a3,0x18c3,0x10a3,0x18c3,0x2104,0x2125,0x18e3,0x10c2,0x31a6,0x52aa,0x39c7,0x2945,0x2125,0x2125,0x1904,0x1904,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x3186,0x2986,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965, +0x18c3,0x10c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x10c3,0x10a3,0x10c3,0x10c3,0x10a3,0x18e4,0x18e4,0x2104,0x2145,0x2124,0x2124,0x1904,0x18e3,0x18e4,0x1904,0x18e3,0x18e3,0x31c7,0x2965,0x18e3,0x2124,0x18e3,0x18e4,0x18c3,0x2104,0x2104,0x18c3,0x0000,0x2125,0x2945,0x20e4,0x2105,0x2946,0x2125,0x18e3,0x1904,0x2125,0x2124,0x2144,0x2124,0x2104,0x18e3,0x2125,0x2966,0x2125,0x1904,0x2104,0x2945,0x2965,0x3165,0x2965,0x31a6,0x31c7,0x2986,0x2986,0x31a7,0x4a6a,0x31a6,0x31c7,0x3a08,0x3208,0x3a28,0x31e8,0x2167,0x31a8,0x31a8,0x31a8,0x2987,0x2967,0x31c8,0x3a2a,0x422a,0x39e9,0x4a6b,0x4a6b,0x4249,0x4aaa,0x4a8a,0x4249,0x3a08,0x2124,0x4a6a,0x6baf,0x4aec,0x428b,0x4a6b,0x52cd,0x6bd0,0x5b2d,0x52ec,0x634e,0x638e,0x6baf,0x5b4d,0x73f0,0x6baf,0x5b4d,0x5b4e,0x5b0e,0x5b2e,0x18c3,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a2,0x18a2,0x20e3,0x2924,0x4209,0x4209,0x3a09,0x31c8,0x39c9,0x39c9,0x420a,0x420a,0x528c,0x4a4a,0x4209,0x422a,0x422a,0x4a6b,0x632e,0x738e,0x630c,0x52aa,0x4228,0x2945,0x2125,0x2125,0x2946,0x2967,0x2147,0x2146,0x2966,0x2966,0x2966,0x2986,0x2125,0x2125,0x2125,0x2966,0x2966,0x2125,0x2945,0x2986,0x1904,0x1904,0x2145,0x10e4,0x18e4,0x632d,0x52ab,0x4208,0x4208,0x39e7,0x3a07,0x3a08,0x31a6,0x39c7,0x39e7,0x4228,0x4228,0x39e8,0x4a69,0x39e7,0x18e3,0x18c2,0x2124,0x2965,0x2986,0x2145,0x18e3,0x10c3,0x18c3,0x2104,0x1904,0x18e3,0x2104,0x18e3,0x2144,0x2144,0x2945,0x2124,0x2144,0x2945,0x2966,0x2104,0x1903,0x31c6,0x4249,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x2985,0x31c6,0x2985,0x2985,0x31c6,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x2986,0x31a6,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x3186,0x3186, +0x1904,0x1904,0x1904,0x1904,0x1903,0x18e3,0x1904,0x1904,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18e4,0x10c3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x29a6,0x2965,0x10e3,0x10a2,0x10a2,0x18e3,0x10c2,0x10a2,0x10a3,0x18c3,0x18e4,0x18e3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e3,0x18c2,0x10a2,0x10c3,0x1081,0x18c2,0x18c3,0x10a2,0x2124,0x2165,0x2965,0x2165,0x2945,0x2945,0x2124,0x2145,0x31a6,0x39e7,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x2145,0x2965,0x3186,0x2986,0x2966,0x2146,0x2966,0x2125,0x2125,0x2125,0x2145,0x1905,0x2125,0x2987,0x2987,0x2987,0x31a7,0x3187,0x2946,0x3187,0x3187,0x2125,0x2125,0x2104,0x4a29,0x5acc,0x4a8a,0x5aec,0x4229,0x4229,0x3a09,0x3a09,0x3a2a,0x424a,0x3a09,0x424a,0x4a6b,0x424b,0x31e9,0x29c9,0x39ea,0x39e9,0x4209,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0862,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x0861,0x1082,0x18a2,0x18c2,0x20e3,0x2924,0x528a,0x4a8a,0x4a49,0x4a6a,0x424a,0x424a,0x424a,0x426a,0x4a6a,0x4249,0x4229,0x4249,0x4a49,0x4228,0x5aeb,0x5aec,0x52ab,0x4a8b,0x4a8a,0x3186,0x39c6,0x31c6,0x31c6,0x2124,0x39e7,0x31a6,0x4208,0x39e7,0x39c7,0x39c7,0x31e7,0x3207,0x31e7,0x31c6,0x31c7,0x29a6,0x29a6,0x3a08,0x3a07,0x31c6,0x29a6,0x2986,0x31a7,0x39e7,0x4208,0x39e7,0x39c7,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31e6,0x3a28,0x3a07,0x39e7,0x31e6,0x3a07,0x4269,0x31e7,0x29a6,0x31c6,0x31e7,0x31e7,0x31c6,0x31c6,0x39e7,0x31e6,0x3a07,0x39e7,0x2986,0x39e7,0x39c7,0x31a7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c6,0x31a6,0x29a6,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x31c7,0x2986,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x3186,0x2986,0x2145,0x31c7,0x3186,0x2985, +0x2985,0x2986,0x2965,0x2965,0x2145,0x2965,0x2986,0x2165,0x2165,0x2124,0x2144,0x2945,0x2945,0x2965,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2144,0x2986,0x2144,0x2965,0x2965,0x2145,0x2124,0x2145,0x2965,0x2945,0x31a6,0x31a6,0x2985,0x2124,0x2145,0x2165,0x2144,0x2144,0x2945,0x2145,0x2144,0x2144,0x2124,0x18c3,0x2125,0x2165,0x2986,0x2165,0x2945,0x2965,0x2165,0x2144,0x31a5,0x2123,0x2124,0x29a6,0x29a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31e7,0x31c7,0x3a08,0x31c7,0x31e7,0x31e7,0x31a7,0x2145,0x2965,0x2985,0x2144,0x2965,0x2124,0x2144,0x31c6,0x2985,0x2965,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a6,0x4228,0x3a07,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x4208,0x4a6a,0x4a8a,0x528b,0x4a8a,0x4269,0x4249,0x4229,0x4249,0x4a69,0x426a,0x424a,0x4a4a,0x4a6a,0x4a8a,0x426a,0x426a,0x52aa,0x4a69,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a3,0x18c2,0x20e3,0x2104,0x4249,0x4228,0x4a28,0x4228,0x3a08,0x4229,0x39e8,0x4a49,0x4a69,0x3a08,0x4228,0x4249,0x4a49,0x4229,0x3a09,0x3a09,0x39e8,0x4229,0x4229,0x52cb,0x4249,0x4248,0x4249,0x39e7,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x4a49,0x3a07,0x3a28,0x3a49,0x3a08,0x4228,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4208,0x4208,0x3a08,0x39c7,0x31c7,0x31c7,0x39e8,0x4228,0x4228,0x31c7,0x4269,0x4208,0x528a,0x4249,0x4248,0x3a28,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31e7,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2985,0x2965,0x2986,0x2985,0x31a6,0x31a7,0x3186,0x3186,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3a07,0x29a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a7,0x31a7,0x2986,0x2986, +0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2985,0x29a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x39c7,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x3186,0x39e7,0x31a6,0x3186,0x31a6,0x39c7,0x3a07,0x3a27,0x4248,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x4228,0x39e7,0x4289,0x3207,0x3a27,0x4269,0x4228,0x4a69,0x4207,0x4248,0x4228,0x4a49,0x4248,0x4a89,0x3a28,0x31e7,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x39e7,0x4229,0x4228,0x31a6,0x31e7,0x3a08,0x31c7,0x29c7,0x31c7,0x31a6,0x31c6,0x4a68,0x4227,0x31e6,0x4248,0x3a28,0x3a28,0x4248,0x3a08,0x4248,0x4a69,0x4249,0x4249,0x52aa,0x4a8a,0x3a28,0x4249,0x52cb,0x528a,0x4249,0x4228,0x4249,0x52cb,0x4a69,0x4a69,0x4a8a,0x4229,0x4209,0x4a69,0x52ca,0x52aa,0x4269,0x4a8a,0x52cb,0x5aeb,0x5aeb,0x4a8a,0x52ca,0x52aa,0x18c2,0x1082,0x1081,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x18a3,0x18c2,0x20e3,0x2104,0x4a6a,0x4a6a,0x4249,0x4229,0x4a49,0x4229,0x4229,0x528a,0x528a,0x4249,0x4249,0x4a6a,0x528a,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4a8a,0x4a69,0x4a69,0x4a8a,0x4248,0x4248,0x4228,0x4228,0x4208,0x4229,0x3a08,0x4228,0x3a08,0x3a29,0x3a09,0x39e8,0x3a08,0x3a27,0x39e7,0x3a08,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x4208,0x39e7,0x31c7,0x4228,0x39e7,0x31c7,0x4228,0x39e8,0x4229,0x39e7,0x3a08,0x39e8,0x39e8,0x4208,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x31c7,0x3a28,0x31c7,0x39e7,0x39e8,0x4228,0x31e7,0x31a6,0x39e7,0x39e7,0x3a08,0x39e8,0x31c7,0x39e8,0x31a7,0x31a6,0x3a07,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x31a7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x39c7,0x31a6,0x39e7,0x39c7,0x3186,0x2966,0x31c7,0x4228,0x31a6,0x39e7,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x29a6,0x31c7,0x31a7,0x29a6,0x31a6,0x31c7, +0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c7,0x31a7,0x31a6,0x29a6,0x29a6,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31c7,0x31a6,0x2966,0x2966,0x31a6,0x31a6,0x31c7,0x39e7,0x31e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x31a7,0x39e8,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x39e7,0x39e7,0x31a6,0x3a07,0x3a08,0x31c6,0x3a08,0x52aa,0x31a6,0x4269,0x4269,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x3a08,0x4a69,0x52ab,0x4228,0x4a8a,0x4248,0x31e7,0x31c7,0x3a07,0x3a08,0x31c7,0x39e7,0x3a08,0x39e8,0x4a49,0x4229,0x4228,0x4228,0x3a08,0x3a08,0x31c7,0x31a7,0x31a7,0x39c7,0x4a69,0x52aa,0x3a08,0x4a49,0x4208,0x3a08,0x3a08,0x3a08,0x4228,0x4a89,0x4249,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4a8a,0x4a49,0x5acb,0x5acb,0x632d,0x5aec,0x52aa,0x52cb,0x4249,0x52aa,0x632d,0x4a8a,0x52cb,0x4a6a,0x424a,0x4a49,0x4a8a,0x528a,0x4a6a,0x4a49,0x528a,0x5aec,0x18c2,0x1082,0x1081,0x1061,0x1062,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1081,0x1081,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18e3,0x18e3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x18a2,0x10a2,0x18c2,0x18e3,0x2104,0x52aa,0x5aeb,0x4229,0x4a8a,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a49,0x4228,0x4228,0x4a69,0x4269,0x4a69,0x52cb,0x52ab,0x528a,0x4a6a,0x4a69,0x39e7,0x4a49,0x4a49,0x39e7,0x4a49,0x39e7,0x39e7,0x4208,0x39e7,0x3a08,0x4229,0x31c7,0x4228,0x3a08,0x39e7,0x31c7,0x39e8,0x39e8,0x39e7,0x3a07,0x3a07,0x4208,0x3a08,0x3a07,0x39e8,0x4228,0x3a08,0x39c7,0x4228,0x39e8,0x39e7,0x3a08,0x31e7,0x31c7,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x31c8,0x3a08,0x39e7,0x39c7,0x3a08,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31a7,0x31c7,0x39e7,0x39e8,0x31a7,0x31c7,0x39e7,0x31c7,0x31a6,0x39c7,0x39c7,0x39e8,0x31a7,0x31c7,0x39e8,0x31c7,0x39c7,0x31a7,0x3187,0x31c7,0x39c7,0x31a6,0x31a6,0x39a7,0x39c7,0x528a,0x2986,0x29a6,0x2986,0x29a6,0x31a6,0x39e7,0x3186,0x31a6,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x2986, +0x2985,0x2986,0x2965,0x2966,0x2966,0x2986,0x2986,0x2986,0x31c7,0x2985,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x4249,0x31c7,0x2145,0x2986,0x31c7,0x31c7,0x3a08,0x31e8,0x2986,0x31a7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x2986,0x31a7,0x31a7,0x2986,0x39e8,0x39e7,0x3186,0x39e8,0x39c7,0x39c7,0x39c7,0x3a08,0x3a08,0x4248,0x39e7,0x39e7,0x4249,0x4a8a,0x39e8,0x31e8,0x39e8,0x39e8,0x4249,0x4208,0x4a69,0x4228,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x3a28,0x31e7,0x3a08,0x3a28,0x4229,0x3a08,0x39e8,0x4a69,0x4a49,0x4a69,0x4aaa,0x31c7,0x39e8,0x39e7,0x39e8,0x4229,0x3a29,0x424a,0x4a8b,0x3a29,0x3a29,0x39e8,0x4249,0x4a6a,0x4a69,0x4248,0x4249,0x4208,0x4a49,0x52ab,0x4a49,0x4a6a,0x5aeb,0x5acb,0x52ab,0x630c,0x4a69,0x528a,0x5aeb,0x4a69,0x5b0c,0x73cf,0x52cb,0x52eb,0x4a69,0x4a49,0x52aa,0x528a,0x4a8a,0x5acb,0x5aec,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1061,0x1062,0x1062,0x1082,0x10a2,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x18c2,0x18c3,0x2103,0x2103,0x2103,0x2123,0x2103,0x20e3,0x20e3,0x18e3,0x18c2,0x18c2,0x18c3,0x18e3,0x20e3,0x18e3,0x2103,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e3,0x2103,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18e3,0x2103,0x18c2,0x0861,0x0861,0x0861,0x18c3,0x2965,0x2924,0x2103,0x2103,0x2123,0x2924,0x2924,0x2124,0x2104,0x2924,0x2944,0x2944,0x2944,0x2944,0x2964,0x2965,0x2944,0x3164,0x2104,0x10a2,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x2104,0x4a89,0x4a8a,0x4a49,0x4a49,0x52cb,0x52eb,0x4a8a,0x4228,0x4a49,0x4208,0x4208,0x4a49,0x4228,0x4228,0x4a69,0x4248,0x4228,0x5acb,0x4a8a,0x3a08,0x4229,0x4228,0x4208,0x4a69,0x4208,0x4249,0x4a49,0x3a07,0x4249,0x4a49,0x4208,0x39e7,0x39c7,0x4228,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4208,0x4229,0x31c7,0x4a69,0x39e7,0x31c7,0x3207,0x31c7,0x39e7,0x4229,0x39e8,0x4208,0x39e8,0x39c7,0x31c8,0x31c8,0x31c7,0x39c7,0x4228,0x31e7,0x4228,0x3a08,0x31a7,0x39e7,0x4248,0x39c7,0x39c8,0x39c7,0x31e7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x39e8,0x39e7,0x31c7,0x31a7,0x31a6,0x31e7,0x31c7,0x31a6,0x31a7,0x31c7,0x39e7,0x39e7,0x29a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3186,0x31c7,0x31a7,0x39e7,0x39c7,0x39c7,0x31a7,0x39c7,0x31c7,0x2986,0x31c7,0x31a6,0x31c7,0x31a6,0x3186,0x39e7,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x2985, +0x39c7,0x39e7,0x3186,0x2966,0x2966,0x2966,0x29a7,0x29a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31e7,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x29a6,0x31a6,0x39c7,0x31a7,0x39e8,0x31c7,0x3186,0x31a6,0x31a7,0x39c7,0x31a7,0x31e7,0x31c7,0x31a6,0x2986,0x31c7,0x4a49,0x31a7,0x31c7,0x4228,0x4269,0x31c7,0x31c7,0x3a09,0x3a09,0x31c8,0x31c7,0x31c7,0x31c7,0x3a08,0x4208,0x4249,0x4228,0x3a07,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4269,0x4208,0x4208,0x4228,0x3a28,0x39e7,0x39e7,0x4229,0x3a09,0x31e8,0x4249,0x426a,0x3a29,0x4249,0x3a08,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x52aa,0x4229,0x4229,0x4a8a,0x4249,0x630c,0x528a,0x4229,0x4a49,0x4a49,0x4a49,0x52aa,0x4a49,0x5acb,0x528a,0x52aa,0x52ca,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x528a,0x630d,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x10a2,0x2103,0x2944,0x2944,0x2944,0x2964,0x2944,0x2924,0x2944,0x2124,0x2103,0x2124,0x2124,0x2944,0x2944,0x20e3,0x2924,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e4,0x2103,0x18c3,0x2104,0x2124,0x2104,0x2924,0x2124,0x2103,0x2103,0x2103,0x2124,0x2124,0x2124,0x2104,0x2944,0x2103,0x18c3,0x2104,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x3165,0x2124,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2944,0x2944,0x2965,0x3165,0x3185,0x3185,0x39a6,0x3185,0x2103,0x2944,0x2104,0x10a2,0x0861,0x0861,0x1082,0x1082,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x52cb,0x4a4a,0x5aec,0x52aa,0x52aa,0x52aa,0x52aa,0x4a6a,0x4249,0x4a49,0x3a08,0x4269,0x5aeb,0x4228,0x4248,0x528a,0x4a8a,0x4249,0x4249,0x4a8a,0x4269,0x4228,0x4249,0x4a8a,0x4228,0x3a28,0x4249,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4248,0x4249,0x3a08,0x3a08,0x3a08,0x39c7,0x3a07,0x39e7,0x39e8,0x39c7,0x39e8,0x39e8,0x31a7,0x3a08,0x39e8,0x4208,0x4208,0x39c7,0x39e7,0x31c7,0x31c7,0x31c8,0x31c7,0x39e7,0x39e8,0x39c7,0x31c7,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x39c7,0x3a08,0x39e7,0x39c7,0x31c7,0x31c7,0x31a6,0x4228,0x3a08,0x31c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e7,0x39c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x39e7,0x31a6,0x39e7,0x39c7,0x31c7,0x3186,0x4228,0x4208,0x2986,0x31a7,0x2986,0x31c7,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x2965,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x2966,0x2966,0x2965, +0x31a7,0x31a7,0x3186,0x2986,0x3166,0x2965,0x31c7,0x31e7,0x31c7,0x3186,0x31a6,0x31c7,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x31a6,0x2986,0x31a6,0x2966,0x31a6,0x39e7,0x31a6,0x3186,0x3186,0x2966,0x31c7,0x29a7,0x31a6,0x39e7,0x31a6,0x31a6,0x2986,0x31e7,0x31c7,0x3a07,0x31e7,0x39e7,0x4208,0x31c7,0x31e7,0x31c7,0x31a7,0x31a7,0x3187,0x39e8,0x39e8,0x31c7,0x39c7,0x4228,0x39e7,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x39e7,0x3a08,0x31c7,0x3a28,0x3a08,0x39e8,0x39e8,0x4208,0x39c7,0x3a08,0x4249,0x3a28,0x3a28,0x39e8,0x3a08,0x4249,0x39e7,0x4228,0x4249,0x4229,0x4228,0x3a08,0x4228,0x4229,0x4229,0x528a,0x528a,0x4249,0x4a8a,0x4a69,0x3a08,0x528a,0x4208,0x528a,0x526a,0x4a49,0x528a,0x4229,0x4a8a,0x4a49,0x4229,0x4a8a,0x4229,0x4a4a,0x4229,0x4a69,0x52aa,0x4a6a,0x528b,0x4aab,0x4a8a,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x0861,0x2103,0x2924,0x2924,0x2924,0x2924,0x2124,0x2924,0x2924,0x2124,0x2103,0x2124,0x2924,0x2924,0x2944,0x2103,0x18a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x2924,0x1082,0x18c3,0x18c3,0x1061,0x0861,0x0861,0x18a3,0x18e3,0x18c3,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2944,0x2965,0x3165,0x3186,0x3186,0x18c2,0x18a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x1082,0x18a2,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x4a8a,0x52ab,0x4249,0x4a6a,0x4a8a,0x4249,0x4a8a,0x4a8a,0x4228,0x4248,0x4269,0x4aaa,0x4aaa,0x4a69,0x52aa,0x4a69,0x4a69,0x5acb,0x528a,0x4a8a,0x4a69,0x4a69,0x4249,0x4a6a,0x4a69,0x4249,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4249,0x39e8,0x4229,0x4228,0x39e7,0x4248,0x39e7,0x39e7,0x3a08,0x39c8,0x31c7,0x4208,0x39c7,0x4208,0x39c7,0x39e8,0x4229,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x4a69,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x4208,0x4229,0x39e8,0x4228,0x4249,0x39c7,0x3186,0x39c7,0x39e7,0x39e7,0x3a28,0x2986,0x31a7,0x31c7,0x3a08,0x3a07,0x3a08,0x4249,0x39e7,0x31c7,0x4208,0x31a7,0x31a6,0x3a08,0x31a7,0x31a6,0x31a6,0x31c6,0x4248,0x31a6,0x31a6,0x31c7,0x31c7,0x31a6,0x39e7,0x3186,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x29a6,0x2986,0x3a08,0x31a7,0x2986,0x2965, +0x2986,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31c7,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x39c7,0x39a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31c7,0x39c7,0x31a6,0x31a6,0x31e7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x31e7,0x39e7,0x39e8,0x4208,0x31c7,0x39c7,0x3a08,0x31a6,0x31c7,0x4228,0x3a08,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x4208,0x3a28,0x39e7,0x3a08,0x4229,0x39e8,0x41e8,0x4209,0x4209,0x4249,0x3a08,0x39c7,0x4229,0x3a08,0x39c7,0x3a08,0x3a08,0x31e8,0x39e8,0x39c8,0x4209,0x39e8,0x3a08,0x4a6a,0x4a49,0x4208,0x4a49,0x4a49,0x4249,0x4a49,0x4229,0x4a6a,0x52ab,0x4a49,0x4249,0x4a69,0x4a6a,0x4a8a,0x4228,0x52aa,0x528a,0x4229,0x4a49,0x4249,0x4a69,0x4208,0x4a69,0x3a48,0x4229,0x4229,0x4229,0x4a29,0x4a69,0x4a6a,0x4a6a,0x4a69,0x3a08,0x10a2,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x0841,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2104,0x2924,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0821,0x18a2,0x2103,0x2104,0x2104,0x2104,0x2104,0x2123,0x2963,0x2943,0x2103,0x2104,0x2104,0x2104,0x2124,0x2924,0x0861,0x1082,0x10a2,0x0861,0x0861,0x1061,0x1082,0x0861,0x1082,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x3165,0x18a2,0x0841,0x1062,0x1062,0x0861,0x1082,0x1082,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x4a6a,0x4a8a,0x52ab,0x52cb,0x4249,0x4a8a,0x634d,0x4228,0x4a69,0x4269,0x4aaa,0x4aaa,0x4a6a,0x528a,0x5b0c,0x4a69,0x4a8a,0x52cb,0x4a49,0x4a69,0x4229,0x4229,0x4249,0x4229,0x4a49,0x4229,0x4208,0x4228,0x4228,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x4229,0x4228,0x4228,0x4228,0x4229,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4249,0x3a08,0x39c7,0x3a28,0x4249,0x3a08,0x3a08,0x3a28,0x4249,0x3a08,0x4249,0x39e8,0x4228,0x4a6a,0x4208,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x2986,0x4208,0x3a08,0x31a6,0x4208,0x3a08,0x31c7,0x3a07,0x39e7,0x31a7,0x2986,0x31c7,0x39e7,0x39e7,0x4249,0x31c6,0x31c6,0x4228,0x39e7,0x4208,0x39e7,0x31e7,0x3a07,0x31c7,0x31a6,0x3a28,0x31a7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x39c7,0x31c7,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x2986,0x2945,0x3186, +0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x31a7,0x31c7,0x2966,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31c6,0x31c6,0x2986,0x31a6,0x31c7,0x3186,0x31c7,0x31e7,0x31c7,0x31e7,0x3a28,0x31a7,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a08,0x4228,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4269,0x4228,0x39c7,0x41e8,0x4208,0x4228,0x4249,0x3a08,0x31c7,0x31c7,0x39e8,0x3a08,0x4208,0x4229,0x31c7,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x39c7,0x4228,0x39e8,0x39e8,0x3a08,0x31a7,0x4249,0x3a08,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4249,0x4249,0x4249,0x3a09,0x426a,0x3a28,0x3a08,0x4249,0x4aaa,0x4269,0x4228,0x4249,0x424a,0x4a8a,0x4249,0x4249,0x52aa,0x4a69,0x52ab,0x4229,0x4249,0x4a69,0x4a49,0x4a69,0x528a,0x4a49,0x4228,0x4a49,0x4228,0x10a2,0x1081,0x1061,0x1081,0x1081,0x0861,0x0861,0x10a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0020,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2944,0x2124,0x2104,0x2104,0x2104,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x4203,0x5a63,0x5263,0x39a3,0x2124,0x2124,0x2104,0x2124,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x1062,0x0041,0x1082,0x2104,0x2124,0x2124,0x2104,0x2124,0x2924,0x41e5,0x2964,0x4205,0x3184,0x2945,0x2945,0x2945,0x2945,0x18a2,0x0841,0x0841,0x0861,0x0861,0x1062,0x1062,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2924,0x52aa,0x52ab,0x5acb,0x52cb,0x52cb,0x4a8a,0x4a6a,0x4229,0x4a8a,0x4a8a,0x52cb,0x52aa,0x52cb,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4229,0x4a8a,0x52aa,0x4229,0x3a08,0x4a6a,0x4228,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4a49,0x4229,0x4228,0x4a69,0x4a6a,0x4249,0x4229,0x424a,0x4249,0x4a6a,0x4229,0x39e7,0x3a07,0x3a28,0x3a08,0x39e8,0x4249,0x3a28,0x3207,0x31e7,0x3a08,0x31c7,0x4229,0x4a49,0x4228,0x39e8,0x4249,0x4228,0x3a08,0x4249,0x3a08,0x31a7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x3a07,0x31c7,0x31c7,0x31e7,0x29a7,0x31c7,0x31c7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x3a07,0x3a28,0x39e7,0x39e7,0x31a6,0x39e7,0x39c7,0x31a7,0x31a6,0x31a6,0x31a7,0x2966,0x31a6,0x3a08,0x31a7,0x31a7,0x31c7,0x29a6,0x2986,0x31a7,0x39c7,0x31a7,0x2166,0x3186,0x2946,0x2965, +0x2966,0x2986,0x31c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2965,0x39c7,0x31c6,0x2986,0x2986,0x31a7,0x31a7,0x2986,0x3186,0x3186,0x2986,0x2966,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x31c7,0x31e7,0x31a6,0x31a6,0x2986,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3a07,0x3a07,0x31a6,0x31a7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x31a7,0x31c7,0x39c7,0x39e7,0x39e7,0x4a49,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x3a08,0x4208,0x4a8a,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4229,0x39c7,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x39e7,0x3a08,0x3a28,0x3a48,0x4228,0x3a08,0x31c7,0x39e8,0x4229,0x39e7,0x4228,0x52ca,0x4249,0x3a28,0x3a08,0x4269,0x4a8a,0x4269,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4249,0x4a8a,0x52ca,0x52aa,0x4a49,0x4229,0x4a69,0x5b0b,0x4228,0x4249,0x4228,0x4a49,0x52aa,0x4229,0x4229,0x10a2,0x1061,0x1061,0x1061,0x1081,0x0861,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x5244,0x3163,0x2944,0x2124,0x2124,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x31a4,0x7343,0x6ac3,0x7303,0x62c3,0x2923,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x6ae5,0x41e3,0x6ae5,0x41e4,0x2944,0x2945,0x2945,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18c3,0x20e3,0x20e3,0x2924,0x5acb,0x528a,0x4a49,0x4a8a,0x52aa,0x52aa,0x4a69,0x4229,0x4a69,0x52ab,0x5acb,0x4a49,0x4249,0x4228,0x4a8a,0x4229,0x4249,0x4a69,0x4249,0x3a08,0x5acb,0x4a49,0x4229,0x4a8a,0x4a49,0x4249,0x39c7,0x4208,0x4229,0x39c7,0x4269,0x4248,0x39e7,0x39e7,0x39c8,0x39e8,0x4229,0x4a69,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x4208,0x4208,0x4228,0x4249,0x4229,0x4208,0x4208,0x528a,0x4228,0x31c7,0x3a08,0x4208,0x4228,0x4228,0x4a49,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x39e8,0x31c7,0x3a08,0x31a6,0x39e7,0x39e7,0x39c7,0x4a49,0x4208,0x31a6,0x31a6,0x31c7,0x4249,0x31e7,0x31c7,0x3187,0x2986,0x3a08,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x39e8,0x31a6,0x2965,0x39e8,0x39e7,0x39c7,0x3186,0x3186,0x4229,0x3186,0x39c7,0x31a7,0x31a7,0x2966,0x31c7,0x39e8,0x31a6,0x2966,0x39e7,0x3186,0x2966,0x2145,0x2965, +0x31a7,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x4208,0x39a6,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x31c6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x31a6,0x29a6,0x3a08,0x31e7,0x31a6,0x31a7,0x3187,0x31c7,0x39e7,0x31a6,0x31c6,0x39e8,0x31e7,0x31c7,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x4aaa,0x3a28,0x2965,0x31c7,0x2986,0x31c6,0x3a28,0x4228,0x39c7,0x4249,0x3a08,0x39e8,0x3a08,0x31c7,0x39e7,0x4228,0x3a08,0x3a08,0x39e8,0x4a6a,0x4229,0x39e7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x39c7,0x39e8,0x31e7,0x3a08,0x4269,0x3a28,0x4249,0x4228,0x4228,0x4228,0x4249,0x3a08,0x52aa,0x4a89,0x4249,0x3a08,0x4a69,0x4a8a,0x4209,0x4208,0x4249,0x4249,0x4a49,0x4249,0x4249,0x4249,0x52eb,0x5aeb,0x4a49,0x4a49,0x4a49,0x528a,0x4a89,0x3a08,0x4249,0x4229,0x528a,0x4a8a,0x4228,0x4229,0x10a2,0x1061,0x1061,0x1081,0x1081,0x1081,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2944,0x4a24,0x4a03,0x7b44,0x5223,0x5244,0x2944,0x2124,0x2124,0x2924,0x2104,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x5244,0x8ba3,0x41c3,0x5a84,0x8ba3,0x3143,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2104,0x2124,0x2124,0x4a24,0x8384,0x6283,0x8384,0x5224,0x2924,0x2944,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18a2,0x20e3,0x20e3,0x2924,0x4a8a,0x4a8a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x4208,0x4a49,0x52ab,0x4a6a,0x4229,0x4249,0x4a69,0x528a,0x4a69,0x4228,0x4a8a,0x4229,0x528a,0x4a6a,0x4208,0x4228,0x4249,0x4229,0x39e8,0x3a08,0x3a08,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x39a8,0x39e8,0x4228,0x4a69,0x4249,0x31c7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x31c7,0x39e8,0x4208,0x4208,0x4a49,0x39e8,0x4228,0x39e7,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39e7,0x3a07,0x31a6,0x39e7,0x31a6,0x39e8,0x2986,0x31c7,0x31a7,0x39e8,0x39e7,0x31a6,0x31a7,0x31a7,0x3186,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x31a7,0x31a7,0x39c8,0x39c8,0x39e8,0x31c8,0x31a7,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x2966,0x2965,0x31a6,0x2966,0x2966,0x31a6,0x2986,0x2945,0x3186,0x2986,0x2945,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945, +0x2965,0x29a6,0x29a6,0x31c7,0x31c6,0x2965,0x2945,0x31a6,0x39c7,0x3186,0x2966,0x2986,0x2986,0x29a6,0x2986,0x3186,0x31a6,0x2985,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x31e7,0x2986,0x2986,0x2966,0x2987,0x39e8,0x3a08,0x2986,0x29a6,0x29a6,0x2986,0x39e7,0x31c6,0x31e7,0x31c7,0x39c7,0x39c7,0x3a08,0x31c7,0x3a08,0x31e7,0x31e8,0x3a08,0x4228,0x31c7,0x39e8,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x31c6,0x39e8,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x4209,0x4229,0x39e8,0x3a08,0x39e7,0x3a08,0x3a08,0x39e8,0x39c7,0x4208,0x39c7,0x3a08,0x4228,0x39e8,0x3a08,0x4249,0x4249,0x4269,0x3a28,0x4a69,0x3a28,0x4228,0x4228,0x4249,0x4a8a,0x4aaa,0x4249,0x31e7,0x4249,0x4249,0x3a08,0x39e8,0x4209,0x4a49,0x52aa,0x4249,0x4249,0x4249,0x426a,0x4228,0x4a6a,0x4a49,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4249,0x4228,0x4249,0x4228,0x4a69,0x10a2,0x1061,0x0861,0x0861,0x1081,0x1082,0x1081,0x10a2,0x18c3,0x1082,0x1062,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x3164,0x62a4,0x7303,0x8bc3,0x7b43,0x6ae3,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x62a4,0x8383,0x2923,0x49e4,0x93c4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2124,0x2144,0x5a84,0x8bc4,0x6ac3,0x8ba4,0x5204,0x2924,0x2124,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x1082,0x18a2,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4a8a,0x4269,0x3a08,0x4229,0x426a,0x4229,0x4229,0x4249,0x4a69,0x4229,0x4a49,0x4a8a,0x4208,0x39c7,0x4228,0x4a69,0x31c7,0x39e8,0x4249,0x3a08,0x39e8,0x4228,0x4249,0x4229,0x31c7,0x39e8,0x4208,0x31a7,0x31c7,0x39e8,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x31a7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x31e7,0x39e7,0x39e8,0x31a6,0x39c7,0x39c7,0x31c7,0x39e7,0x31c7,0x2986,0x31c7,0x31c6,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x2986,0x2946,0x2966,0x31a7,0x2966,0x2945,0x2966,0x31a7,0x31c7,0x2986,0x2125,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2946,0x2966,0x2966,0x2966,0x2125,0x2145,0x2145,0x2145,0x2965,0x2125,0x2966,0x2965,0x2145,0x2966,0x2124,0x2145,0x2965,0x2125,0x2145,0x2945,0x2125,0x2124,0x2124,0x2124,0x2124, +0x2165,0x2985,0x29a6,0x31c6,0x2985,0x2145,0x2145,0x2966,0x2986,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x2966,0x31a6,0x2966,0x2966,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2966,0x2986,0x31a7,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a7,0x31a7,0x3187,0x2986,0x3186,0x31a7,0x3186,0x3187,0x3187,0x31a7,0x3186,0x31c6,0x3186,0x3186,0x2966,0x3186,0x31a6,0x39c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c7,0x2986,0x39a7,0x39a7,0x31c7,0x29c7,0x31a7,0x39c8,0x39e8,0x31c7,0x3186,0x31a7,0x39c7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x4208,0x3a08,0x39e8,0x4229,0x3a08,0x39e8,0x31e8,0x31c7,0x31c7,0x3a08,0x3a08,0x4208,0x4a49,0x3a08,0x4229,0x4a8a,0x31e8,0x39e8,0x39e8,0x4229,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x3a28,0x10a2,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1062,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2924,0x3164,0x6ac4,0x8363,0x8bc3,0x8383,0x6ae3,0x3164,0x2124,0x2124,0x2925,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2124,0x2104,0x2104,0x2104,0x5a84,0x8363,0x2923,0x4a04,0x8bc4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2104,0x2944,0x62c4,0x8384,0x6ae3,0x8b84,0x41c4,0x2924,0x2124,0x2924,0x2924,0x1082,0x0020,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4229,0x39e8,0x31e7,0x31c7,0x3a28,0x39e7,0x31c7,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x3187,0x3187,0x3187,0x3186,0x31a6,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x3186,0x2986,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x2966,0x2966,0x2986,0x31a7,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x2965,0x2945,0x2966,0x2986,0x31a6,0x2986,0x2145,0x2965,0x2986,0x2965,0x2965,0x2144,0x3186,0x39c7,0x31a7,0x2945,0x2945,0x2945,0x3186,0x2965,0x2945,0x3186,0x31a6,0x2965,0x2145,0x2125,0x2945,0x2125,0x2945,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2104,0x2124,0x2945,0x2125,0x2125,0x2105,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x18e3,0x18e3, +0x2945,0x2124,0x2945,0x2124,0x2145,0x2145,0x2125,0x2945,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2124,0x2144,0x2965,0x2145,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2946,0x2966,0x2986,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2966,0x2986,0x3186,0x2945,0x2945,0x2946,0x2946,0x2966,0x2965,0x2965,0x2945,0x2946,0x2945,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2946,0x2946,0x2966,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x31a6,0x2965,0x2965,0x31a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x3186,0x3186,0x31a7,0x2966,0x31c7,0x2986,0x2966,0x3187,0x39e8,0x3186,0x39c8,0x39c8,0x31c7,0x31a7,0x3186,0x39c7,0x4228,0x31c7,0x39c7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39a7,0x31a6,0x31c7,0x31a7,0x31c7,0x2966,0x10a2,0x1081,0x1081,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x1082,0x0861,0x1062,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2924,0x2124,0x3164,0x62a5,0x72e4,0x8ba4,0x6ac3,0x62a4,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18e3,0x2124,0x2124,0x2104,0x2104,0x4a24,0x8364,0x41c3,0x5aa4,0x7b43,0x3143,0x2124,0x2104,0x2104,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0041,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2924,0x62a5,0x7304,0x62a4,0x7304,0x3184,0x2124,0x2924,0x2924,0x2924,0x1082,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2104,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x31a7,0x31a7,0x31a6,0x2986,0x31a7,0x2986,0x2986,0x31a7,0x2986,0x2986,0x3186,0x31a7,0x2945,0x2945,0x2966,0x2945,0x2945,0x2145,0x2146,0x2146,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2124,0x2165,0x2145,0x2125,0x2125,0x2104,0x2125,0x2945,0x2145,0x2965,0x2125,0x2124,0x2104,0x2104,0x2125,0x2124,0x2124,0x2124,0x1924,0x2124,0x2144,0x2124,0x2145,0x2945,0x2124,0x2125,0x2945,0x2145,0x2125,0x18e4,0x2104,0x2124,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2125,0x2104,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x2945,0x2144,0x2104,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3, +0x2124,0x1904,0x2104,0x1904,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2125,0x18e4,0x2125,0x2986,0x18e3,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2104,0x2104,0x2104,0x2125,0x2145,0x2124,0x2124,0x2125,0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2125,0x1904,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2124,0x2104,0x2105,0x2125,0x2125,0x2124,0x2124,0x2945,0x2945,0x2125,0x2104,0x2124,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2966,0x2125,0x1904,0x2966,0x2965,0x2965,0x2124,0x2125,0x2986,0x2987,0x2987,0x2145,0x2145,0x2966,0x2945,0x2946,0x2946,0x2946,0x2145,0x2986,0x2946,0x2966,0x2945,0x2966,0x2965,0x2945,0x2966,0x2945,0x2125,0x2125,0x2125,0x1082,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0841,0x0861,0x2104,0x2124,0x2924,0x2124,0x2944,0x4a05,0x49e4,0x7305,0x49e3,0x41c4,0x2944,0x2124,0x2124,0x2124,0x20e3,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x18c3,0x2124,0x2104,0x2104,0x2104,0x3984,0x6ae4,0x5a83,0x6ae4,0x5a43,0x2924,0x2124,0x2124,0x2104,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x1062,0x1082,0x0841,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x4a25,0x5224,0x41e4,0x4a04,0x2944,0x2124,0x2124,0x2124,0x2924,0x1082,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x2103,0x2925,0x2125,0x31a6,0x2966,0x2945,0x2145,0x2105,0x2125,0x2966,0x2945,0x2125,0x2125,0x2125,0x2124,0x2945,0x2124,0x2965,0x1904,0x1904,0x1904,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x1904,0x2124,0x1904,0x1904,0x1924,0x2125,0x1924,0x1904,0x2124,0x2125,0x2104,0x1904,0x1904,0x18e4,0x2104,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x1903,0x10c3,0x10c3,0x1903,0x1904,0x18e4,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x18e4,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e4,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e4,0x2124,0x1904,0x18c3,0x18c3,0x1904,0x10e3,0x18e3,0x18e3,0x18e4,0x18e3,0x10a3,0x10c3,0x10a3,0x10a2,0x10c3,0x18e3,0x10a2,0x10a2,0x10c3,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3, +0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x18c3,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x1904,0x18c3,0x18c3,0x1904,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x18e3,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x18e3,0x18e4,0x18e4,0x18e3,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2124,0x18e4,0x1904,0x2104,0x2145,0x2965,0x1904,0x2124,0x2125,0x1904,0x1904,0x18e3,0x1904,0x2145,0x1904,0x2104,0x2104,0x2104,0x1904,0x2125,0x2125,0x1904,0x2124,0x2965,0x2124,0x2945,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1081,0x1081,0x0861,0x1081,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x2124,0x2124,0x2124,0x2124,0x2944,0x3144,0x49e5,0x3144,0x2924,0x2124,0x2124,0x2124,0x2124,0x18c3,0x1081,0x1082,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x18c2,0x2103,0x2104,0x2104,0x2104,0x2924,0x41c4,0x4a04,0x4a04,0x3164,0x2104,0x2104,0x2104,0x2104,0x20e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x20e3,0x2104,0x2104,0x2104,0x2104,0x3164,0x3164,0x2944,0x3164,0x2124,0x2124,0x2124,0x2924,0x2924,0x18c2,0x10a2,0x0861,0x0861,0x0841,0x0841,0x0861,0x18a3,0x10a2,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x20e3,0x1904,0x1904,0x2104,0x18e3,0x18e4,0x18e4,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x18e3,0x18e3,0x2125,0x2104,0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a2,0x18e3,0x18e3,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a2,0x10c2,0x10c3,0x10c2,0x10e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x10c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10a3,0x10c3,0x10c3,0x10c2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x08a2,0x10c3,0x1924,0x18e3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2, +0x18c3,0x18c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x10a2,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18e4,0x18c3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18e3,0x10c3,0x18e3,0x1904,0x18c3,0x18e3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1903,0x18c3,0x18e3,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x1081,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x18c3,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2124,0x2124,0x2924,0x2924,0x20e3,0x20e3,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x20e3,0x2103,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2944,0x2124,0x20e3,0x2103,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2924,0x2104,0x2104,0x2924,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x1082,0x1082,0x18c2,0x20e3,0x20e3,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10a2,0x10a3,0x10a2,0x10a3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c2,0x18e3,0x18e3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1082,0x10a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a3,0x10c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10c2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a1,0x1062,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2924,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2124,0x2924,0x2104,0x2104,0x2924,0x2924,0x2104,0x2944,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x2924,0x2924,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x2924,0x2124,0x18a2,0x0861,0x0861,0x1082,0x2104,0x3165,0x2924,0x2924,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x20e3,0x20e3,0x20e3,0x2103,0x20e3,0x20e4,0x2104,0x2924,0x3165,0x3165,0x2103,0x1062,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x0862,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082, +0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0882,0x1082,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1081,0x1062,0x10a2,0x2104,0x2103,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x20e3,0x2104,0x18e3,0x1061,0x0841,0x0841,0x18c3,0x2104,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x18c3,0x0861,0x0861,0x1082,0x20e4,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x2104,0x2924,0x20e3,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x10a2,0x18c2,0x20e3,0x20e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1082,0x1082,0x0882,0x10a2,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x0861,0x0881,0x0881,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x0882,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0881,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0861,0x0861,0x0882,0x1082,0x1082, +0x1082,0x0882,0x1082,0x0861,0x0881,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x0882,0x0881,0x0882,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0881,0x0881,0x0881,0x0882,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x0882,0x0881,0x0881,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x1082,0x0882,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x0881,0x0882,0x0882,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x1082,0x1082,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x0861,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x18a2,0x18a3,0x1082,0x0861,0x0861,0x0862,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x1082,0x0882,0x0882,0x0882,0x0882,0x0881,0x1082,0x1082,0x0881,0x0861,0x0882,0x0882,0x1082,0x1082,0x0881,0x0861,0x0881,0x0882,0x0882,0x1082,0x0882,0x0881,0x0882,0x1082,0x0882,0x1082,0x0881,0x0882,0x0861,0x0882,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0882,0x1082,0x0881,0x0882,0x0882,0x0882,0x0882,0x0882,0x0882,0x0861,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x0882, +0x0882,0x1082,0x0882,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x1082,0x0881,0x0861,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0881,0x0881,0x1082,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0861,0x0882,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0861,0x0882,0x0861,0x0861,0x0861,0x0882,0x0861,0x0861,0x0882,0x0881,0x0881,0x0881,0x0861,0x0881,0x0882,0x0861,0x0861,0x0881,0x0861,0x0861,0x0882,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x0881,0x0881,0x0881,0x0861,0x0881,0x0881,0x1082,0x0881,0x0861,0x0882,0x0882,0x0882,0x0861,0x0881,0x0882,0x0882,0x0861,0x18c2,0x1061,0x0861,0x1061,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x1082,0x0862,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1082,0x0861,0x0841,0x1081,0x18e3,0x1082,0x10a2,0x1082,0x18c3,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x0881,0x0882,0x0881,0x1082,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x10a2,0x0882,0x08a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0882,0x08a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x0861,0x0881,0x0882,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0861,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0881,0x0882,0x0881,0x0881,0x0881,0x0881,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x0861,0x0882,0x0881,0x0882,0x0881,0x0881,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x1082,0x0882,0x0861,0x0882,0x1082,0x0881,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0881,0x0861,0x0882,0x0882,0x0882,0x0881,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0882,0x1082,0x1082,0x0881,0x2102,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10c3,0x10a2,0x10c2,0x10c2,0x10c3, +0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0881,0x0882,0x0882,0x1082,0x1082,0x1082,0x10a2,0x1082,0x2943,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18c3,0x18c2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10a2,0x10c3,0x18c3,0x10a2,0x10c3,0x10a2,0x18c3,0x10c3,0x10c2,0x10c2,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x3164,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1904,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x1904,0x1904,0x18e3,0x1904,0x1904,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2104,0x2104,0x2103,0x1903,0x1903,0x1904,0x1904,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x2144,0x2144,0x2945,0x2124,0x2124,0x2124, +0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x3184,0x1081,0x1061,0x1061,0x0861,0x1061,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x18c2,0x20e3,0x2104,0x2124,0x1904,0x2124,0x2104,0x2103,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2165,0x2144,0x2145,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2986,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2986,0x31a6,0x29a6,0x2985, +0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x1924,0x1924,0x1924,0x2124,0x2124,0x2104,0x2124,0x1924,0x1924,0x1904,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1924,0x2124,0x1904,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x2144,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x1081,0x1081,0x1081,0x1081,0x1081,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x10a2,0x10a2,0x18c2,0x18e3,0x18c2,0x2103,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2165,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x29a6,0x29a6,0x3186,0x3186,0x2986,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x29a6,0x29c6,0x31c6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29c6,0x31c7,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x39e7,0x3a08,0x4208,0x41e7,0x4207,0x4207, +0x2985,0x2965,0x2986,0x2986,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x2985,0x3185,0x3185,0x2985,0x2986,0x2985,0x2965,0x2985,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2986,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2986,0x2985,0x2986,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2985,0x29a6,0x29a5,0x2985,0x3185,0x3185,0x31a6,0x31a6,0x31a5,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29c6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x29a6,0x2986,0x31a6,0x2986,0x29a6,0x2986,0x3186,0x2985,0x2986,0x31a6,0x29a6,0x2985,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x31a6,0x2985,0x29a6,0x31a6,0x31a6,0x3186,0x39a4,0x1081,0x1081,0x1082,0x1082,0x10a2,0x1061,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x10a2,0x2103,0x1082,0x18a2,0x1082,0x18c2,0x18e3,0x18c2,0x2104,0x39c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4208,0x41e7,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4249,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4228,0x4a28,0x4228,0x4208,0x3a28,0x3a28,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x39e7,0x4207,0x4208,0x4208,0x39e7,0x4208,0x39e7,0x41e8,0x4207,0x4207,0x39c7,0x39e7,0x39e7,0x41e7,0x41e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31a6,0x39a6,0x39a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3165,0x3186,0x3186,0x3165,0x3165,0x2945,0x2944,0x2944,0x3144,0x3145,0x2904,0x20e3,0x2924,0x2944,0x2944,0x2944,0x3145,0x2924,0x2924,0x2924}; diff --git a/MCUME_teensy/teensycastaway/m68k_intrf.cpp b/MCUME_teensy/teensycastaway/m68k_intrf.cpp new file mode 100644 index 0000000..037604c --- /dev/null +++ b/MCUME_teensy/teensycastaway/m68k_intrf.cpp @@ -0,0 +1,378 @@ +#include +#include +#include + +#include + +#include "dcastaway.h" +#include "mem.h" +#include "st.h" + +#include "m68k_intrf.h" + +#ifdef DEBUG_FAME +FILE *fame_debug_file=stdout; +unsigned fame_debug_count=0; +#ifdef DEBUG_FAME_START +int fame_debug_output=0; +#else +int fame_debug_output=1; +#endif +#endif + +#ifdef DEBUG_FAME +#include "dis.h" +#endif + +char GetMemB(unsigned long address); +short GetMemW(unsigned long address); +long GetMemL(unsigned long address); +void SetMemB(unsigned long address, unsigned char value); +void SetMemW(unsigned long address, unsigned short value); +void SetMemL(unsigned long address, unsigned long value); + + +static void SetMemWW(unsigned long address, unsigned short value) +{ + address &= MEMADDRMASK; + if (address= ROMBASE2) + program[i].offset= (((unsigned)rombase)+ROMBASE2)-program[i].low_addr; + //else + // program[i].offset= ((unsigned)membase) - (i*MEMSIZE); + } + program[0].offset= ((unsigned)membase) ; + program[1].offset= ((unsigned)membase2 - MEM1SIZE) ; + + +#ifndef FAME_SINGLE_MEMORY +// read8[0].data=read16[0].data=write8[0].data=write16[0].data=(void *)((unsigned)membase); + read8[2].data=read16[2].data=(void *)((unsigned)rombase); +// read8[0].data=read16[0].data=write8[0].data=write16[0].data=(void *)((unsigned)membase); +// read8[1].data=read16[1].data=write8[1].data=write16[1].data=(void *)((unsigned)membase2-MEM1SIZE); +// read8[3].data=read16[3].data=(void *)((unsigned)rombase); + +#endif + + m68k_init(); + m68k_set_context(&context); + m68k_reset(); +} diff --git a/MCUME_teensy/teensycastaway/m68k_intrf.h b/MCUME_teensy/teensycastaway/m68k_intrf.h new file mode 100644 index 0000000..98aecc5 --- /dev/null +++ b/MCUME_teensy/teensycastaway/m68k_intrf.h @@ -0,0 +1,231 @@ +#include +#include +#include "dcastaway.h" + +extern int waitstate; + +#ifndef USE_FAME_CORE + +#include "castaway/68000.h" +#include "castaway/op68k.h" + +extern unsigned IO_CYCLE; + +static __inline__ unsigned long cpu_loop(unsigned slice) { + +extern unsigned long (*jmp_table[8192])(operin); + +#define initialize_memmap() + //printf("%8x =>%8x\n",pc,myinst); + +#define cpuinst \ + address = pc&MEMADDRMASK; \ + if (address=ROMBASE2) myinst=biginst=ReadSL(myrombase+address); \ + else { HWReset(); return slice-IO_CYCLE; } \ + pc+=2; \ + IO_CYCLE-=(*jmp_table[(myinst<<16)>>19])(reg); + + register unsigned long *p_reg=(unsigned long *)®[0]; + register unsigned long address; + register int8 *mymembase=membase; + register int8 *myrombase=rombase; + register uint32 myinst; + IO_CYCLE=slice; + //Execute 10 instructions + cpuinst + cpuinst + cpuinst + cpuinst + cpuinst + cpuinst + cpuinst + cpuinst + cpuinst + cpuinst + return slice-IO_CYCLE; +#undef cpuinst +} + + +#else + +#include "fame.h" + + +#if defined(DREAMCAST) || defined(USE_FAME_CORE_C) +#define M68KCONTEXT m68kcontext +#define IO_CYCLE io_cycle_counter +#else +#define M68KCONTEXT _m68kcontext +#define IO_CYCLE __io_cycle_counter +#endif + +extern unsigned IO_CYCLE; + +//extern struct M68K_CONTEXT M68KCONTEXT; +extern M68K_CONTEXT M68KCONTEXT; +extern int recalc_int; +extern void SetMemW(unsigned long address, unsigned short value); +extern void HWReset(void); + +#define GetS() ((M68KCONTEXT.sr >> 13) & 1) +#define GetFC2() GetS() +#define GetI() ((M68KCONTEXT.sr >> 8) & 7) +#ifdef DEBUG_FAME +#define Interrupt(NUM,LEV) \ +{ \ + extern int fame_debug_output; \ + extern FILE *fame_debug_file; \ + if (fame_debug_output) \ + { fprintf(fame_debug_file,"Interrupt(%i,%i)\n",(NUM),(LEV)); DEBUG_FAME_FFLUSH; } \ + m68k_lower_irq((LEV)); \ + m68k_raise_irq((LEV),(NUM)); \ +} +#else +#define Interrupt(NUM,LEV) \ +{ \ + M68KCONTEXT.interrupts[0] |= (1 << (LEV)); \ + M68KCONTEXT.interrupts[(LEV)]=(NUM); \ + M68KCONTEXT.execinfo &= 0x7F; \ +} +#endif + +#define ClearInterrupt(LEV) M68KCONTEXT.interrupts[0] &= ~(1 << (LEV)) + + +#define MEMADDRMASK 0x00ffffffl +#define MEMADDRMASKS 0x00fffffel +#define MEMIDXSHIFT 11 +#define MEMADDRSIZE (MEMADDRMASK + 1) +#define AUTOINT2 26 +#define AUTOINT4 28 +#define BUSERR 2 +#define ADDRESSERR 3 + +char GetMemB(unsigned long address); +short GetMemW(unsigned long address); +void initialize_memmap(void); +void ExceptionGroup0( int, unsigned long, int); +void ExceptionGroup0_execute(void); + + +#ifdef DEBUG_FAME +static char dis_msg[96]; +static unsigned short dis_buf[10]; +void disassemble68k(char *buf, unsigned short *inst_stream); +static __inline__ unsigned long cpu_loop(unsigned slice) +{ + unsigned i; + extern int number_exg0_fame; + extern int in_fame_core; + extern unsigned fame_debug_count; + extern int fame_debug_output; + extern FILE *fame_debug_file; + +#ifdef DEBUG_FAME_START + if (fame_debug_count>=((unsigned)(DEBUG_FAME_START))) + fame_debug_output=1; + else { + unsigned long cycles_actual=M68KCONTEXT.cycles_counter; + short lastint=M68KCONTEXT.sr&0x700; + + in_fame_core=1; + m68k_emulate(slice); + in_fame_core=0; + + fprintf(fame_debug_file,"SLICE(%u) %u (%u) ret=%u (%x %x)\n",slice,fame_debug_count,slice,M68KCONTEXT.cycles_counter-cycles_actual,M68KCONTEXT.execinfo&0x80,M68KCONTEXT.interrupts[0]); + fame_debug_count++; + + if (number_exg0_fame) + ExceptionGroup0_execute(); + + if ((M68KCONTEXT.execinfo&0x80)&&(lastint!=(M68KCONTEXT.sr&0x700))) + M68KCONTEXT.execinfo&=0x7f; + + return (M68KCONTEXT.cycles_counter-cycles_actual); + } + + if (fame_debug_output) + fprintf(fame_debug_file,"SLICE(%u) %u (%u)\n",slice,fame_debug_count,slice); +#endif + + in_fame_core=1; + unsigned long cycles_actual=M68KCONTEXT.cycles_counter; + short lastint=M68KCONTEXT.sr&0x700; + while(M68KCONTEXT.cycles_counter-cycles_actual((unsigned)(DEBUG_FAME_STOP))) + { +#ifdef DEBUG_FAME_FILE + extern FILE *fame_debug_file; + if (fame_debug_file) + fclose(fame_debug_file); + fame_debug_file=NULL; +#endif + free(malloc(24*1024*1024)); exit(0); } +#endif + if (number_exg0_fame) + { + ExceptionGroup0_execute(); + number_exg0_fame=0; + } + if ((M68KCONTEXT.execinfo&0x80)&&(lastint!=(M68KCONTEXT.sr&0x700))) + M68KCONTEXT.execinfo&=0x7f; + return (M68KCONTEXT.cycles_counter-cycles_actual); +} + +#else +static __inline__ unsigned long cpu_loop(unsigned slice) +{ + extern int in_fame_core; + extern int number_exg0_fame; + + unsigned long cycles_actual=M68KCONTEXT.cycles_counter; + short lastint=M68KCONTEXT.sr&0x700; + + in_fame_core=1; + m68k_emulate(slice); + in_fame_core=0; + + if (number_exg0_fame) + ExceptionGroup0_execute(); + + if ((M68KCONTEXT.execinfo&0x80)&&(lastint!=(M68KCONTEXT.sr&0x700))) + M68KCONTEXT.execinfo&=0x7f; + + return (M68KCONTEXT.cycles_counter-cycles_actual); +} +#endif + + +#endif diff --git a/MCUME_teensy/teensycastaway/mem.cpp b/MCUME_teensy/teensycastaway/mem.cpp new file mode 100644 index 0000000..b590fd3 --- /dev/null +++ b/MCUME_teensy/teensycastaway/mem.cpp @@ -0,0 +1,486 @@ +/* +* Castaway +* (C) 1994 - 2002 Martin Doering, Joachim Hoenig +* +* $File$ - memory read/write +* +* This file is distributed under the GPL, version 2 or at your +* option any later version. See doc/license.txt for details. +* +* revision history +* 23.05.2002 JH FAST1.0.1 code import: KR -> ANSI, restructuring +* 30.05.2002 JH Discontinued using mmap and mprotect, now using +* Martin's memory access jump table. +* 12.06.2002 JH Correct bus error/address error exception stack frame +* 14.06.2002 JH LowRamSetX() functions improved. +* 09.07.2002 JH Now loads any 192k ROM file +* 10.07.2002 MAD Now loads any ROM file +* 16.09.2002 JH Bugfix: Word access on unmapped I/O address stacked +* two bus error stack frames. Fault address corrected. +* 08.10.2002 JH Fixed integer types. +* 27.10.2002 AG Trashed everything for more speed! mwuhahaha! +*/ + +#include +#include +#include +#ifndef DREAMCAST +#else +#include +#endif + +#include "dcastaway.h" +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" + +#include + +static unsigned rombase_pos=0; + +char rom[80]; // = ROM; +#ifdef DREAMCAST +void reinit_sdcard(void); +char rom_sd[24] = ROM_SD; +#endif +static int samvol[16]={0,0,0,1,1,1,2,3,5,7,11,17,25,38,57,85}; +extern uint32 psg[26]; +#define lastpsg psg[25] +#define sampos psg[24] + + + +PROGMEM char GetMemB(unsigned long address) +{ + address &= MEMADDRMASK; + if (address=IOBASE && address=IOBASE && address= vid_mem) && (address < (vid_mem+32768) ) ) { + printf("vwlmem\n"); + WriteL(&videobuf[address-vid_mem], value); + } + else +#endif + WriteL(address + membase, value); + return; + } + if (address>=IOBASE && address>8)&15; + uint32 value1=value&255; + psg[psgctrl1]=value1; + if (psgctrl1==lastpsg) sample[sampos++]=samvol[psg[8]]+samvol[psg[9]]+samvol[value1]; + else if (psgctrl1==13 || psgctrl1==12) psg_epos=0; + return; +} +address &= MEMADDRMASK; +if (address>=IOBASE && address>8)); + DoIOWB(address+2, (int8)value); + return; +} +if (address>8)); + WriteB(address+2, (int8)value); + return; +} +} + +void SetMemPL(unsigned long address, unsigned long value) +{// int8 psgctrl1,psgctrl2,value1,value2; + +if (address&0xffff03==0xff8800) { + uint32 psgctrl1=(value>>24)&15; + uint32 value1=(value>>16)&255; + psg[psgctrl1]=value1; + if (psgctrl1==lastpsg) sample[sampos++]=samvol[psg[8]]+samvol[psg[9]]+samvol[value1]; + else if (psgctrl1==13 || psgctrl1==12) psg_epos=0; + psgctrl1=(value>>8)&15; + value1=value&255; + if (psgctrl1==lastpsg) sample[sampos++]=samvol[psg[8]]+samvol[psg[9]]+samvol[value1]; + else if (psgctrl1==13 || psgctrl1==12) psg_epos=0; + return; +} +address &= MEMADDRMASK; +if (address>=IOBASE && address>24)); + DoIOWB(address+2, (int8)(value>>16)); + DoIOWB(address+4, (int8)(value>>8)); + DoIOWB(address+6, (int8)value); + return; +} +if (address>24)); + WriteB(address+2, (int8)(value>>16)); + WriteB(address+4, (int8)(value>>8)); + WriteB(address+6, (int8)value); + return; +} +} + + + +static void *__rombase=NULL, *__membase=NULL; + +void MemQuit(void) +{ + if (__membase) + free(__membase); + __membase=NULL; + if (__rombase) + free(__rombase); + __rombase=NULL; +} + +static void _set_dword(void *buf,unsigned dat) +{ + unsigned short *b=(unsigned short *)buf; + *b++=dat&0xffff; + *b=dat>>16; +} + +void MemClean(void) +{ + membase=(int8*)__membase; + memset(membase,0,MEMSIZE); + //savestate_init(); + memcpy (membase, ((int8*)__rombase)+rombase_pos, 8); + + _set_dword(membase+0x420,0x752019f3); + _set_dword(membase+0x43a,0x237698aa); + _set_dword(membase+0x51a,0x5555aaaa); +#if MEMSIZE==0x00080000 + _set_dword(membase+0x436,0x80000-0x8000); + _set_dword(membase+0x42e,0x80000); + WriteB(membase+0x425,1); + WriteB(rombase+0xff8000,1); + memconf=1; +#else +#if MEMSIZE==0x00100000 + _set_dword(membase+0x436,0x100000-0x8000); + _set_dword(membase+0x42e,0x100000); + WriteB(membase+0x425,5); + WriteB(rombase+0xff8000,5); + memconf=5; +#else +#if MEMSIZE==0x00200000 + _set_dword(membase+0x436,0x200000-0x8000); + _set_dword(membase+0x42e,0x200000); + WriteB(membase+0x425,2); + WriteB(rombase+0xff8000,2); + memconf=2; +#else +#if MEMSIZE==0x00400000 + _set_dword(membase+0x436,0x400000-0x8000); + _set_dword(membase+0x42e,0x400000); + WriteB(membase+0x425,0xA); + WriteB(rombase+0xff8000,0xA); + memconf=0xA; +#else +#error DCaSTaway ERROR: MEMSIZE incorrect. +#endif +#endif +#endif +#endif + _set_dword(membase+0x4c2,3); + WriteW(membase+0x4a6,2); + + //if (TosCountry) + // vid_syncmode=2; + //else + // vid_syncmode=0; +} + + +static unsigned actual_rom_crc=0; + +static unsigned rom_checksum(void) +{ + int n; + unsigned crc=0; + for(n=ROMBASE2;n(MEMADDRSIZE-ROMBASE2)) + len=(MEMADDRSIZE-ROMBASE2); + if (len<=(192*1024)) + rombase_pos=ROMBASE-ROMBASE2; + else + rombase_pos=0; + + if (!__rombase) + __rombase = calloc(1,MEMADDRSIZE-ROMBASE2); + rombase=(int8*)__rombase; + for(n=0;n<(MEMADDRSIZE-ROMBASE2);n+=2) + { + rombase[n]=0x4e; + rombase[n+1]=0x71; + } + if (len != fread(rombase+rombase_pos,1,len,roms)) + { + fclose(roms); + return 2; + } + fclose (roms); +#ifdef BYTES_SWAP + for (n=0; n<(MEMADDRSIZE-ROMBASE2); n+=2) { + val1 = rombase[n]; + val2 = rombase[n+1]; + rombase[n] = val2; + rombase[n+1] =val1; + } +#endif + /* precalculate rombase - now just address-adding happens later */ + if (rombase_pos) + { + rombase -= ROMBASE2+rombase_pos-(ROMBASE-ROMBASE2); + memcpy(rombase+ROMBASE2,rombase+ROMBASE,(MEMADDRSIZE-ROMBASE)); + } + else + { + rombase -= ROMBASE2; + memcpy(rombase+ROMBASE,rombase+ROMBASE2,(MEMADDRSIZE-ROMBASE)); + } + + TOS_FixRom((uint8 *)(((int8*)__rombase)+rombase_pos)); + + //Allocate and clear RAM + if (!__membase) + __membase = (int8*)calloc(1,MEMSIZE+0x10); + MemClean(); + actual_rom_crc=rom_checksum(); + initialize_memmap(); + return 0; +} +#endif diff --git a/MCUME_teensy/teensycastaway/mem.h b/MCUME_teensy/teensycastaway/mem.h new file mode 100755 index 0000000..ee7fa07 --- /dev/null +++ b/MCUME_teensy/teensycastaway/mem.h @@ -0,0 +1,34 @@ +/* + * Read/Write memory macros - little endian + */ +#ifdef BYTES_SWAP +#define ReadB(address) *(uint8*)((uint32)(address)^1) +#define WriteB(address,value) *(uint8*)((uint32)(address)^1)=value +#define ReadW(addr) *(uint16*)(addr) +#define WriteW(addr,value) *(uint16*)(addr)=value +#define ReadL(address) ((*(uint16*)(address))<<16)|(*(uint16*)(address+2)) +#define WriteL(address,value) WriteW(address + 2, value); WriteW(address, value>> 16) +#define ReadSL(addr) (*(uint16*)(addr))|((*(uint16*)(addr+2))<<16) +#else +#define ReadB(address) *((int8 *) (address)) +#define WriteB(address,value) *((int8 *) (address)) = (value) +//#define ReadW(addr) ((*(uint16 *)(addr) << 8) | (*(uint16 *)(addr) >> 8)) +//#define WriteW(addr,value) *((int16 *)(addr)) = ((((uint16)(value)) << 8) | (((uint16)(value)) >> 8)) +#define ReadW(addr) *(uint16*)(addr) +#define WriteW(addr,value) *(uint16*)(addr)=value +//#define ReadL(address) ((uint16) ReadW(address) << 16) | (uint16) ReadW((address) + 2) +//#define WriteL(address,value) WriteW((address) + 2, value); WriteW(address, (value) >> 16) +#define ReadL(addr) *(uint32*)(addr) +#define WriteL(addr,value) *(uint32*)(addr)=value +//#define ReadSL(addr) ((uint16)ReadW(addr))|((((uint16)ReadW(addr+2)))<<16) +#define ReadSL(addr) ((uint16)ReadW(addr+2))|((((uint16)ReadW(addr)))<<16) +#endif + +int MemInit(void); +void MemQuit(void); +void MemClean(void); +void MemReInit(void); + +extern unsigned short int TosVersion; +extern short TosCountry; +void TOS_FixRom(uint8 *TosAddress); diff --git a/MCUME_teensy/teensycastaway/sound.cpp b/MCUME_teensy/teensycastaway/sound.cpp new file mode 100644 index 0000000..6c74a3b --- /dev/null +++ b/MCUME_teensy/teensycastaway/sound.cpp @@ -0,0 +1,495 @@ +#include "dcastaway.h" + +#ifndef NO_SOUND + +#include +#include +#include + +#include + +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" +#include "sound.h" + +#define LONGLONG long long + +#define ENVELOPE_PERIOD(Fine,Coarse) (((unsigned long)Coarse)<<8) + (unsigned long)Fine +#define NOISE_PERIOD(Freq) ((((unsigned long)Freq)&0x1f)<<11) +#define TONE_PERIOD(Fine,Coarse) ((((unsigned long)Coarse)&0x0f)<<8) + (unsigned long)Fine +#define MIXTABLE_SIZE (256*8) /* Large table, so don't overflow */ +#define TONEFREQ_SHIFT 28 /* 4.28 fixed point */ +#define NOISEFREQ_SHIFT 28 /* 4.28 fixed point */ +#define ENVFREQ_SHIFT 16 /* 16.16 fixed */ + +#define SAMPLES_BUFFER_SIZE 1024 +/* Number of generated samples per frame (eg. 44Khz=882) : */ +#define SAMPLES_PER_FRAME ((SOUND_FREQ*2)/50) //((SOUND_FREQ+35)/50) +/* Frequency of generated samples: */ +#define SAMPLES_FREQ (SOUND_FREQ) +#define YM_FREQ (2000000/SAMPLES_FREQ) /* YM Frequency 2Mhz */ + +/* Original wave samples */ +/* Shape x Length(repeat 3rd/4th entries) */ +#include "tab_EnvelopeShapeValues.h" +//static const int EnvelopeShapeValues[16*1024] = { 1,2 }; +/* Use table to convert from (A+B+C) to clipped 'unsigned char' for sound buffer */ +/* -ve and +ve range */ +#include "tab_MixTable.h" +//static const char MixTable[MIXTABLE_SIZE] = { 1,2 }; +static const char *pMixTable = &MixTable[MIXTABLE_SIZE/2]; /* Signed index into above */ +/* LogTable */ +#include "tab_LogTable.h" +//static const int LogTable[256] = { 1,2 }; +#include "tab_LogTable16.h" +//static const int LogTable16[16] = { 1,2 }; +static const int *pEnvelopeLogTable = &LogTable[128]; + +/* Current sample for this time period */ +static int Envelope[SAMPLES_BUFFER_SIZE]; +static int Noise[SAMPLES_BUFFER_SIZE]; +char MixBuffer[MIXBUFFER_SIZE]; + + + +/* Frequency and time period samples */ +static unsigned long ChannelFreq[3], EnvelopeFreq, NoiseFreq; /* Current frequency of each channel A,B,C,Envelope and Noise */ +static int ChannelAmpDecayTime[3]; /* Store counter to show if amplitude is changed to generate 'samples' */ +/* Output channel data */ +static int Channel_A_Buffer[SAMPLES_BUFFER_SIZE],Channel_B_Buffer[SAMPLES_BUFFER_SIZE],Channel_C_Buffer[SAMPLES_BUFFER_SIZE]; +static int ActiveSndBufIdx; /* Current working index into above mix buffer */ +static int nSamplesToGenerate; /* How many samples are needed for this time-frame */ + +/* global values */ +bool bWriteEnvelopeFreq; /* Did write to register '13' - causes frequency reset */ +bool bWriteChannelAAmp, bWriteChannelBAmp, bWriteChannelCAmp; /* Did write to amplitude registers? */ +bool bEnvelopeFreqFlag; /* As above, but cleared each frame for YM saving */ +/* Buffer to store circular samples */ +int nGeneratedSamples; /* Generated samples since audio buffer update */ +int SoundCycles; + + +/*-----------------------------------------------------------------------*/ +/* Envelope shape table */ +typedef struct +{ + int WaveStart[4], WaveDelta[4]; +} ENVSHAPE; + + +/* Square wave look up table */ +PROGMEM static const int SquareWave[16] = { 127,127,127,127,127,127,127,127, -128,-128,-128,-128,-128,-128,-128,-128 }; + + +static long RandomNum; + +static __inline__ long Misc_NextLongRand(long Seed) +{ + unsigned long Lo, Hi; + + Lo = 16807 * (long)(Seed & 0xffff); + Hi = 16807 * (long)((unsigned long)Seed >> 16); + Lo += (Hi & 0x7fff) << 16; + if (Lo > 2147483647L) { + Lo &= 2147483647L; + ++Lo; + } + Lo += Hi >> 15; + if (Lo > 2147483647L) { + Lo &= 2147483647L; + ++Lo; + } + return((long)Lo); +} + +static __inline__ long Misc_GetRandom(void) +{ + RandomNum = Misc_NextLongRand(RandomNum); + if (!RandomNum) + { + RandomNum++; + return 0; + } + return(RandomNum); +} + + +/*-----------------------------------------------------------------------*/ +/* + Init sound tables and envelopes +*/ +void Sound_Init(void) +{ + Sound_Reset(); +} + + +/*-----------------------------------------------------------------------*/ +/* + Reset the sound emulation +*/ +void Sound_Reset(void) +{ + int i; + + Sound_ClearMixBuffer(); /* Clear buffer */ + + /* Clear cycle counts, buffer index and register '13' flags */ + SoundCycles = 0; + bEnvelopeFreqFlag = FALSE; + bWriteEnvelopeFreq = FALSE; + bWriteChannelAAmp = bWriteChannelBAmp = bWriteChannelCAmp = FALSE; + + /* Lock audio system before accessing variables that are also use by the callback function! */ + Audio_Lock(); + CompleteSndBufIdx = 0; + ActiveSndBufIdx = (SOUND_BUFFER_SIZE + SAMPLES_PER_FRAME) % MIXBUFFER_SIZE; + nGeneratedSamples = 0; + Audio_Unlock(); + + /* Clear frequency counter */ + for(i=0; i<3; i++) + { + ChannelFreq[i] = + ChannelAmpDecayTime[i] = 0; + } + EnvelopeFreq = NoiseFreq = 0; +} + + +/*-----------------------------------------------------------------------*/ +/* + Clear mixer buffer, where samples are stored ready to pass to sound player +*/ +void Sound_ClearMixBuffer(void) +{ + Audio_Lock(); + + Memory_Clear(MixBuffer, MIXBUFFER_SIZE); /* Clear buffer */ + + Audio_Unlock(); +} + + +/*-----------------------------------------------------------------------*/ +/* + Find how many samples to generate and store in 'nSamplesToGenerate' + Also update 'SoundCycles' to store how many we actually did so generates set amount each frame +*/ +PROGMEM static void Sound_SetSamplesPassed(void) +{ + int nSampleCycles; + int nSamplesPerFrame; + int Dec=1; + + /* Check how many cycles have passed, as we use this to help find out if we are playing sample data */ + + /* First, add decay to channel amplitude variables */ + if (SoundCycles>(CYCLES_PER_FRAME/4)) + Dec = 16; /* Been long time between sound writes, must be normal tone sound */ + + if (!bWriteChannelAAmp) /* Not written to amplitude, decay value */ + { + ChannelAmpDecayTime[0]-=Dec; + if (ChannelAmpDecayTime[0]<0) ChannelAmpDecayTime[0] = 0; + } + if (!bWriteChannelBAmp) + { + ChannelAmpDecayTime[1]-=Dec; + if (ChannelAmpDecayTime[1]<0) ChannelAmpDecayTime[1] = 0; + } + if (!bWriteChannelCAmp) + { + ChannelAmpDecayTime[2]-=Dec; + if (ChannelAmpDecayTime[2]<0) ChannelAmpDecayTime[2] = 0; + } + + /* 160256 cycles per VBL, 44Khz = 882 samples per VBL */ + /* 882/160256 samples per clock cycle */ + nSamplesPerFrame = SAMPLES_PER_FRAME; +#if 0 /* Use floats for calculation */ + nSamplesToGenerate = (int)( (float)SoundCycles * ((float)nSamplesPerFrame/(float)CYCLES_PER_FRAME) ); + if (nSamplesToGenerate > nSamplesPerFrame) + nSamplesToGenerate = nSamplesPerFrame; + + nSampleCycles = (int)( (float)nSamplesToGenerate / ((float)nSamplesPerFrame/(float)CYCLES_PER_FRAME) ); + SoundCycles -= nSampleCycles; +#else /* Use integers for calculation - both of these calculations should fit into 32-bit int */ + nSamplesToGenerate = SoundCycles * nSamplesPerFrame / CYCLES_PER_FRAME; +//printf("nSamplesToGenerate=%i , SoundCycles=%i\n",nSamplesToGenerate,SoundCycles); + if (nSamplesToGenerate > nSamplesPerFrame) + nSamplesToGenerate = nSamplesPerFrame; + + nSampleCycles = nSamplesToGenerate * CYCLES_PER_FRAME / nSamplesPerFrame; + SoundCycles -= nSampleCycles; +#endif +} + + +/*-----------------------------------------------------------------------*/ +/* + Generate envelope wave for this time-frame +*/ +static void Sound_GenerateEnvelope(unsigned char EnvShape, unsigned char Fine, unsigned char Coarse) +{ + const int *pEnvelopeValues; + unsigned long EnvelopePeriod,EnvelopeFreqDelta; + int i; + + /* Find envelope details */ + if (bWriteEnvelopeFreq) + EnvelopeFreq = 0; + pEnvelopeValues = &EnvelopeShapeValues[ (EnvShape&0x0f)*1024 ]; /* Envelope shape values */ + EnvelopePeriod = ENVELOPE_PERIOD((unsigned long)Fine,(unsigned long)Coarse); + + if (EnvelopePeriod==0) /* Handle div by zero */ + EnvelopeFreqDelta = 0; + else + EnvelopeFreqDelta = ((LONGLONG)YM_FREQ<>ENVFREQ_SHIFT]; /* Store envelope wave, already applied 'log' function */ + EnvelopeFreq += EnvelopeFreqDelta; + if (EnvelopeFreq&0xfe000000) + EnvelopeFreq = 0x02000000 | (EnvelopeFreq&0x01ffffff); /* Keep in range 512-1024 once past 511! */ + } +} + + +/*-----------------------------------------------------------------------*/ +/* + Generate nosie for this time-frame +*/ +static void Sound_GenerateNoise(unsigned char MixerControl, unsigned char NoiseGen) +{ + int NoiseValue; + unsigned long NoisePeriod,NoiseFreqDelta; + int i; + + NoisePeriod = NOISE_PERIOD((unsigned long)NoiseGen); + + if (NoisePeriod==0) /* Handle div by zero */ + NoiseFreqDelta = 0; + else + NoiseFreqDelta = (((LONGLONG)YM_FREQ)<>NOISEFREQ_SHIFT]<=0) /* Add to square wave at given frequency */ + NoiseValue = -NoiseValue; + + Noise[i] = NoiseValue; + NoiseFreq += NoiseFreqDelta; + } +} + + +/*-----------------------------------------------------------------------*/ +/* + Generate channel of samples for this time-frame +*/ +static void Sound_GenerateChannel(int *pBuffer, unsigned char ToneFine, unsigned char ToneCoarse,unsigned char Amplitude,unsigned char MixerControl,unsigned long *pChannelFreq,int MixMask) +{ + int *pNoise = Noise, *pEnvelope = Envelope; + unsigned long ToneFreq=*pChannelFreq; + unsigned long TonePeriod; + unsigned long ToneFreqDelta; + int i,Amp,Mix; + int ToneOutput,NoiseOutput,MixerOutput,EnvelopeOutput,AmplitudeOutput; + + TonePeriod = TONE_PERIOD((unsigned long)ToneFine,(unsigned long)ToneCoarse); + /* Find frequency of channel */ + if (TonePeriod==0) + ToneFreqDelta = 0; /* Handle div by zero */ + else + ToneFreqDelta = (((LONGLONG)YM_FREQ)<>MixMask)&9; /* Read I/O Mixer */ + + /* Check if we are trying to play a 'sample' - we need to up the volume on these as they tend to be rather quiet */ + if ((Amplitude&0x10)==0) /* Fixed level amplitude? */ + { + ChannelAmpDecayTime[MixMask]++; /* Increment counter to find out if we are playing samples... */ + if (ChannelAmpDecayTime[MixMask]>16) + ChannelAmpDecayTime[MixMask] = 16; /* And limit */ + } + + for(i=0; i>TONEFREQ_SHIFT]; + + /* Output from Noise Generator(0-255) */ + NoiseOutput = *pNoise++; + /* Output from Mixer(combines Tone+Noise) */ + switch (Mix) { + case 0: /* Has Noise and Tone */ + MixerOutput = NoiseOutput+ToneOutput; + break; + case 1: /* Has Noise */ + MixerOutput = NoiseOutput; + break; + case 8: /* Has Tone */ + MixerOutput = ToneOutput; + break; + + default: /* This is used to emulate samples - should give no output, but ST gives set tone!!?? */ + /* MixerControl gets set to give a continuous tone and then then Amplitude */ + /* of channels A,B and C get changed with all other registers in the PSG */ + /* staying as zero's. This produces the sounds from Quartet, Speech, NoiseTracker etc...! */ + MixerOutput = 127; + } + + EnvelopeOutput = pEnvelopeLogTable[*pEnvelope++]; + + if ((Amplitude&0x10)==0) + { + AmplitudeOutput = Amp; /* Fixed level amplitude */ + + /* As with most emulators, sample playback is always 'quiet'. We check to see if */ + /* the amplitude of a channel is repeatedly changing and when this is detected we */ + /* scale the volume accordingly */ + if (ChannelAmpDecayTime[MixMask]>8) + AmplitudeOutput <<= 1; /* Scale up by a factor of 2 */ + } + else + AmplitudeOutput = EnvelopeOutput; + + *pBuffer++ = (MixerOutput*AmplitudeOutput)>>8; + + ToneFreq+=ToneFreqDelta; + } + + /* Store back incremented frequency, for next call */ + *pChannelFreq = ToneFreq; +} + + +/*-----------------------------------------------------------------------*/ +/* + Generate samples for all channels during this time-frame +*/ +static void Sound_GenerateSamples(void) +{ + int *pChannelA=Channel_A_Buffer, *pChannelB=Channel_B_Buffer, *pChannelC=Channel_C_Buffer; + int i; + + /* Anything to do? */ + if (nSamplesToGenerate>0) + { + /* Generate envelope/noise samples for this time */ + Sound_GenerateEnvelope(psg[PSG_REG_ENV_SHAPE],psg[PSG_REG_ENV_FINE],psg[PSG_REG_ENV_COARSE]); + Sound_GenerateNoise(psg[PSG_REG_MIXER_CONTROL],psg[PSG_REG_NOISE_GENERATOR]); + + /* Generate 3 channels, store to separate buffer so can mix/clip */ + Sound_GenerateChannel(pChannelA,psg[PSG_REG_CHANNEL_A_FINE],psg[PSG_REG_CHANNEL_A_COARSE],psg[PSG_REG_CHANNEL_A_AMP],psg[PSG_REG_MIXER_CONTROL],&ChannelFreq[0],0); + Sound_GenerateChannel(pChannelB,psg[PSG_REG_CHANNEL_B_FINE],psg[PSG_REG_CHANNEL_B_COARSE],psg[PSG_REG_CHANNEL_B_AMP],psg[PSG_REG_MIXER_CONTROL],&ChannelFreq[1],1); + Sound_GenerateChannel(pChannelC,psg[PSG_REG_CHANNEL_C_FINE],psg[PSG_REG_CHANNEL_C_COARSE],psg[PSG_REG_CHANNEL_C_AMP],psg[PSG_REG_MIXER_CONTROL],&ChannelFreq[2],2); + + /* Mix channels together, using table to clip and also convert to 'unsigned char' */ + for(i=0; i= SOUND_BUFFER_SIZE) + return; + + nSamplesToGenerate = SOUND_BUFFER_SIZE - nGeneratedSamples; + + Sound_GenerateSamples(); +} + +void Sound_UpdateFromCallBack16(short *pBuffer, int len) +{ + int *pChannelA=Channel_A_Buffer, *pChannelB=Channel_B_Buffer, *pChannelC=Channel_C_Buffer; + int i; + nSamplesToGenerate = len; + + /* Generate envelope/noise samples for this time */ + Sound_GenerateEnvelope(psg[PSG_REG_ENV_SHAPE],psg[PSG_REG_ENV_FINE],psg[PSG_REG_ENV_COARSE]); + Sound_GenerateNoise(psg[PSG_REG_MIXER_CONTROL],psg[PSG_REG_NOISE_GENERATOR]); + + /* Generate 3 channels, store to separate buffer so can mix/clip */ + Sound_GenerateChannel(pChannelA,psg[PSG_REG_CHANNEL_A_FINE],psg[PSG_REG_CHANNEL_A_COARSE],psg[PSG_REG_CHANNEL_A_AMP],psg[PSG_REG_MIXER_CONTROL],&ChannelFreq[0],0); + Sound_GenerateChannel(pChannelB,psg[PSG_REG_CHANNEL_B_FINE],psg[PSG_REG_CHANNEL_B_COARSE],psg[PSG_REG_CHANNEL_B_AMP],psg[PSG_REG_MIXER_CONTROL],&ChannelFreq[1],1); + Sound_GenerateChannel(pChannelC,psg[PSG_REG_CHANNEL_C_FINE],psg[PSG_REG_CHANNEL_C_COARSE],psg[PSG_REG_CHANNEL_C_AMP],psg[PSG_REG_MIXER_CONTROL],&ChannelFreq[2],2); + + /* Mix channels together, using table to clip and also convert to 'unsigned char' */ + for(i=0; i +#include +#include + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#define MUSIC_VOLUME 64 +#ifdef DINGOO +#define SOUND_FREQ 16000 +#else +#define SOUND_FREQ 11025 //22050 //11025 //22050 +#endif + +#define SOUND_BUFFER_SIZE 1024 + +void Sound_Reset(void); +void Sound_ClearMixBuffer(void); +void Audio_EnableAudio(bool bEnable); + +enum +{ + FREQ_11Khz, + FREQ_22Khz, + FREQ_44Khz +}; + +#define MIXBUFFER_SIZE 8192 +#define SCREEN_START_CYCLE 96 /* Cycle first normal pixel appears on */ +#define SCANLINES_PER_FRAME 313 /* Number of scan lines per frame */ +#define CYCLES_PER_LINE 512 /* Cycles per horiztonal line scan */ +#define CYCLES_VBL_IN (SCREEN_START_HBL*CYCLES_PER_LINE) /* ((28+64)*CYCLES_PER_LINE) */ +#define CYCLES_PER_FRAME (SCANLINES_PER_FRAME*CYCLES_PER_LINE) /* Cycles per VBL @ 50fps = 160256 */ +#define CYCLES_PER_SEC (CYCLES_PER_FRAME*50) /* Cycles per second */ +#define CYCLES_ENDLINE (64+320+88+40) /* DE(Display Enable) */ +#define CYCLES_HBL (CYCLES_PER_LINE+96) /* Cycles for first HBL - very inaccurate on ST */ +#define CYCLES_DEBUGGER 3000 /* Check debugger every 'x' cycles */ + +enum { + PSG_REG_CHANNEL_A_FINE, // 0x0000 + PSG_REG_CHANNEL_A_COARSE, // 0x0001 + PSG_REG_CHANNEL_B_FINE, // 0x0010 + PSG_REG_CHANNEL_B_COARSE, // 0x0011 + PSG_REG_CHANNEL_C_FINE, // 0x0100 + PSG_REG_CHANNEL_C_COARSE, // 0x0101 + PSG_REG_NOISE_GENERATOR, // 0x0110 + PSG_REG_MIXER_CONTROL, // 0x0111 + PSG_REG_CHANNEL_A_AMP, // 0x1000 + PSG_REG_CHANNEL_B_AMP, // 0x1001 + PSG_REG_CHANNEL_C_AMP, // 0x1010 + PSG_REG_ENV_FINE, // 0x1011 + PSG_REG_ENV_COARSE, // 0x1100 + PSG_REG_ENV_SHAPE, // 0x1101 + PSG_REG_IO_PORTA, // 0x1110 + PSG_REG_IO_PORTB // 0x1111 +}; + +#define NUM_PSG_SOUND_REGISTERS 14 // Number of register, not including IO ports + +extern bool bSoundWorking; /* Is sound OK */ +extern volatile bool bPlayingBuffer; /* Is playing buffer? */ +extern int OutputAudioFreqIndex; /* Playback rate (11Khz,22Khz or 44Khz) */ +extern int SoundBufferSize; /* Size of sound buffer */ +extern int CompleteSndBufIdx; /* Replay-index into MixBuffer */ + +extern int SoundPlayBackFrequencies[]; + + +extern bool bWriteEnvelopeFreq,bWriteChannelAAmp,bWriteChannelBAmp,bWriteChannelCAmp; +extern bool bEnvelopeFreqFlag; +extern char MixBuffer[MIXBUFFER_SIZE]; +extern int SoundCycles; +extern int nGeneratedSamples; + +static __inline__ int Misc_LimitInt(int Value, int MinRange, int MaxRange) +{ + if (ValueMaxRange) + Value = MaxRange; + + return(Value); +} + +#define Memory_Clear(A,B) (memset(A,0,B)) + + +#define Audio_Lock() +#define Audio_Unlock() + +void Sound_UpdateFromCallBack16(short *pBuffer, int len); + +void Sound_Update_VBL(void); +void Sound_UpdateFromAudioCallBack(void); +void Sound_Init(void); +void Sound_Update(void); +void audio_init(void); +void audio_stop(void); +void audio_init_music(void); +void audio_play_wait(void); +void audio_play_click(void); +void audio_play_file(void); +void audio_play_main(void); +void audio_play_error(void); +void audio_play_goodbye(void); +void audio_play_save(void); + +#else +/* NO SOUND */ +#define Sound_Update_VBL() +#define Sound_Update() +#define audio_init_music() +#define audio_play_wait() +#define audio_play_click() +#define audio_play_file() +#define audio_play_main() +#define audio_play_error() +#define audio_play_goodbye() +#define audio_play_save() +#define audio_init() +#define audio_stop() + +#endif + +#endif diff --git a/MCUME_teensy/teensycastaway/st.cpp b/MCUME_teensy/teensycastaway/st.cpp new file mode 100644 index 0000000..0139db4 --- /dev/null +++ b/MCUME_teensy/teensycastaway/st.cpp @@ -0,0 +1,619 @@ +/* +* Castaway +* (C) 1994 - 2002 Martin Doering, Joachim Hoenig +* +* IO.c - ST hardware emulation +* +* This file is distributed under the GPL, version 2 or at your +* option any later version. See doc/license.txt for details. +* +* revision history +* 23.05.2002 JH FAST1.0.1 code import: KR -> ANSI, restructuring +* 09.06.2002 JH Renamed io.c to st.c again (io.h conflicts with system headers) +* 12.06.2002 JH Correct bus error/address error exception stack frame +* 14.06.2002 JH Implemented STOP, shutdown CPU after multiple bus errors. +* Removed inst parameter from CPU opcode functions. +* 20.08.2002 JH Fixed sign bug in DoIORW() and DoIORL() +* 10.09.2002 JH Bugfix: MOVE.L 0xfffa00,d0 and the like should not raise bus error +* 16.09.2002 JH Bugfix: Word access on unmapped I/O address stacked +* two bus error stack frames. Fault address corrected. +* Merged some code from JH_TOS206_patches branch. +* 02.10.2002 JH Eliminated a lot of silly bugs introduced recently. Shame on me. +No more CPU bus errors from blitter.c::bitblt(). +* 10.10.2002 JH Compatibility improvements. +*/ +static char sccsid[] = "$Id: st.c,v 1.14 2002/10/10 19:41:27 jhoenig Exp $"; +#include +#include "dcastaway.h" +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" +#ifndef NO_SOUND +#include "sound.h" +#endif + + +#ifdef DEBUG +#include +#endif + +#include + +#define VALUE_OPEN 0xff +/* +* startup display mode +*/ +int display_mode = COL4; + +/* +* I/O Registers +*/ +uint8 memconf; + +//Video shifter +uint32 vid_adr; +uint8 vid_baseh, vid_basem; +uint32 vid_mem=0x10000; +uint8 vid_syncmode=2, vid_shiftmode; +int16 vid_col[16]; +int vid_flag; + +uint16 dma_car, dma_scr, dma_sr, dma_mode; +uint8 dma_adrh, dma_adrm, dma_adrl; +uint8 mfp_gpip, mfp_aer, mfp_ddr, mfp_iera, mfp_ierb, mfp_ipra, +mfp_iprb, mfp_isra, mfp_isrb, mfp_imra, mfp_imrb, mfp_ivr, +mfp_tacr, mfp_tbcr, mfp_tcdcr, mfp_scr, mfp_ucr, mfp_rsr, mfp_tsr, mfp_udr; + + +//Mfp delay timer variables +int32 mfp_reg[12]; +#define mfp_tadr mfp_reg[0] +#define mfp_tbdr mfp_reg[1] +#define mfp_tcdr mfp_reg[2] +#define mfp_tddr mfp_reg[3] +#define mfp_acount mfp_reg[4] +#define mfp_bcount mfp_reg[5] +#define mfp_ccount mfp_reg[6] +#define mfp_dcount mfp_reg[7] +#define mfp_ascale mfp_reg[8] +#define mfp_bscale mfp_reg[9] +#define mfp_cscale mfp_reg[10] +#define mfp_dscale mfp_reg[11] + +uint8 acia1_cr, acia1_sr, acia1_dr, acia2_cr, acia2_sr, acia2_dr; + +uint16 blt_halftone[16]; +int16 blt_src_x_inc, blt_src_y_inc; +uint32 blt_src_addr; +int16 blt_end_1, blt_end_2, blt_end_3; +int16 blt_dst_x_inc, blt_dst_y_inc; +uint32 blt_dst_addr; +uint16 blt_x_cnt, blt_y_cnt; +int8 blt_hop, blt_op, blt_status, blt_skew; +int8 blt_ready; + +uint32 psg[26]; +//unsigned char sample[10000]; +#define phase0 psg[16] +#define phase1 psg[17] +#define phase2 psg[18] +#define phase3 psg[19] +#define psg_epos psg[20] +#define psgcontrol psg[21] +#define phase4 psg[22] +#define nrand psg[23] +#define sampos psg[24] +#define lastpsg psg[25] + +PROGMEM static const int samvol[16]={0,0,0,1,1,1,2,3,5,7,11,17,25,38,57,85}; +static int samvol2[4096]; + +const int32 mfpcycletab[16] = {0,80402,32161,20100,6432,5025,3216,1608,1,0,0,0,0,0,0,0}; + +PROGMEM void IOInit(void) +{ + int n,a,b,c; + //Create sample lookup table (4096 entries) + for (a=0; a<16; a++) { + for (b=0; b<16; b++) { + for (c=0; c<16; c++) { + samvol2[(a<<8)+(b<<4)+c]=samvol[a]+samvol[b]+samvol[c]; + } + } + } + //Reset mfp variables + mfp_tadr=256<<20; mfp_tbdr=256<<20; mfp_tcdr=256<<20; mfp_tddr=256<<20; + mfp_tacr=0; mfp_tbcr=0; mfp_tcdcr=0; + mfp_acount=256<<20; mfp_bcount=256<<20; mfp_ccount=256<<20; mfp_dcount=256<<20; + mfp_ascale=0; mfp_bscale=0; mfp_cscale=0; mfp_dscale=0; + for (n=0; n<24; n++) psg[n]=0; + nrand=1; + //Other stuff + vid_baseh = 0; + vid_basem = 0; + vid_shiftmode = display_mode; + dma_sr = 1; /* DMA status ready */ + if (display_mode == MONO) { + mfp_gpip = 0x39; /* no lpr, no blt, no interrupt, monochrome */ + } else { + mfp_gpip = 0xb9; /* no lpr, no blt, no interrupt, color */ + } +#ifdef sun + act.sa_handler = Sigbus; + (void) sigaction (SIGBUS, &act, &oldsigbus); +#endif +#ifdef USE_MMAP + act.sa_handler = Sigsegv; + (void) sigaction (SIGSEGV, &act, &oldsigsegv); +#endif +} + +PROGMEM static void update_psg(uint8 value) { +#ifndef NO_SOUND + Sound_Update(); +#endif + //Update psg register + psg[psgcontrol]=value; + + switch(psgcontrol) + { + case 13: +#ifndef NO_SOUND + bEnvelopeFreqFlag = 1; + bWriteEnvelopeFreq = 1; +#endif + break; + case 12: + psg_epos=0; + break; + case 8: +#ifndef NO_SOUND + bWriteChannelAAmp= 1; +#endif + break; + case 9: +#ifndef NO_SOUND + bWriteChannelBAmp= 1; +#endif + break; + case 10: +#ifndef NO_SOUND + bWriteChannelCAmp= 1; +#endif + break; + } +} + +PROGMEM void DoIOWB(uint32 address, uint8 value) +{ + address&=0x7fff; + + //Video and dma emu + if (address<0x800) { + switch (address) { + case MEM_CONF&0x7fff: + memconf = value; + break; + case VID_BASEH&0x7fff: + vid_baseh = value; + vid_mem = (vid_baseh<<16)+(vid_basem<<8); + break; + case VID_BASEM&0x7fff: + vid_basem = value; + vid_mem = (vid_baseh<<16)+(vid_basem<<8); + break; + case VID_SYNCMODE&0x7fff: + vid_syncmode = value; + maybe_border++; + break; + case VID_SHIFTMODE&0x7fff: + vid_shiftmode = value; + vid_flag=1; + break; + case DMA_ADRH&0x7fff: + dma_adrh = value; + break; + case DMA_ADRM&0x7fff: + dma_adrm = value; + break; + case DMA_ADRL&0x7fff: + dma_adrl = value; + break; + } + return; + } + + //Sound emu + if (address<0x900) { +#if defined(USE_FAME_CORE) && defined(USE_MOVEM_FAME_PATCH) + static unsigned back_cycles=0; + static unsigned back_value=0; + static unsigned back_ctrl=0; + static unsigned new_value=0; +#endif + if (address<0x804) + waitstate+=1; + address&=3; + if (address==0) { + psgcontrol=value; //&15; +#if defined(USE_FAME_CORE) && defined(USE_MOVEM_FAME_PATCH) + if ((M68KCONTEXT.cycles_counter+IO_CYCLE)==back_cycles) { + psg[back_ctrl]=back_value; + update_psg(new_value); + } +#endif + }else if (address==2 && psgcontrol<16) { +#if defined(USE_FAME_CORE) && defined(USE_MOVEM_FAME_PATCH) + back_ctrl=psgcontrol; + back_value=psg[psgcontrol]; + new_value=value; +#endif + update_psg(value); + } +#if defined(USE_FAME_CORE) && defined(USE_MOVEM_FAME_PATCH) + back_cycles=IO_CYCLE+M68KCONTEXT.cycles_counter; +#endif + return; + } + + //Bus error? + if (address<0xb00) { + ExceptionGroup0(BUSERR, address|0xff8000, 0); + return; + } + + //MFP emu + if (address<0x7c00) { + waitstate+=4; + switch(address) { + case MFP_AER&0x7fff: + mfp_aer = value; + break; + case MFP_DDR&0x7fff: + mfp_ddr = value; + break; + case MFP_IERA&0x7fff: + mfp_iera = value; + mfp_ipra &= mfp_iera; + break; + case MFP_IERB&0x7fff: + mfp_ierb = value; + mfp_iprb &= mfp_ierb; + break; + case MFP_IPRA&0x7fff: + mfp_ipra &= value; + break; + case MFP_IPRB&0x7fff: + mfp_iprb &= value; + break; + case MFP_ISRA&0x7fff: + mfp_isra &= value; +#ifndef USE_FAME_CORE + recalc_int = 1; +#endif + break; + case MFP_ISRB&0x7fff: + mfp_isrb &= value; +#ifndef USE_FAME_CORE + recalc_int = 1; +#endif + break; + case MFP_IMRA&0x7fff: + mfp_imra = value; +#ifndef USE_FAME_CORE + recalc_int = 1; +#endif + break; + case MFP_IMRB&0x7fff: + mfp_imrb = value; +#ifndef USE_FAME_CORE + recalc_int = 1; +#endif + break; + case MFP_IVR&0x7fff: + mfp_ivr = value; + break; + case MFP_TACR&0x7fff: + mfp_tacr = value&15; +#if defined(USE_FAME_CORE) && defined(USE_SHORT_SLICE) + if (mfp_ascale) + m68k_stop_emulating(); +#endif + mfp_ascale = mfpcycletab[mfp_tacr]; + break; + case MFP_TBCR&0x7fff: + mfp_tbcr = value&15; +#if defined(USE_FAME_CORE) && defined(USE_SHORT_SLICE) + if (mfp_bscale) + m68k_stop_emulating(); +#endif + mfp_bscale = mfpcycletab[mfp_tbcr]; + break; + case MFP_TCDCR&0x7fff: + mfp_tcdcr = value&0x77; +#if defined(USE_FAME_CORE) && defined(USE_SHORT_SLICE) + if (mfp_cscale || mfp_dscale) + m68k_stop_emulating(); +#endif + mfp_cscale = mfpcycletab[mfp_tcdcr>>4]; + mfp_dscale = mfpcycletab[mfp_tcdcr&7]; + break; + case MFP_TADR&0x7fff: + if (value==0) mfp_tadr=256<<20; else mfp_tadr=value<<20; + if (mfp_ascale==0) mfp_acount=mfp_tadr; + break; + case MFP_TBDR&0x7fff: + if (value==0) mfp_tbdr=256<<20; else mfp_tbdr=value<<20; + if (mfp_bscale==0) mfp_bcount=mfp_tbdr; + break; + case MFP_TCDR&0x7fff: + if (value==0) mfp_tcdr=256<<20; else mfp_tcdr=value<<20; + if (mfp_cscale==0) mfp_ccount=mfp_tcdr; + break; + case MFP_TDDR&0x7fff: + if (value==0) mfp_tddr=256<<20; else mfp_tddr=value<<20; + if (mfp_dscale==0) mfp_dcount=mfp_tddr; + break; + case MFP_SCR&0x7fff: + mfp_scr = value; + break; + case MFP_UCR&0x7fff: + mfp_ucr = value; + break; + case MFP_RSR&0x7fff: + mfp_rsr = value; + break; + case MFP_TSR&0x7fff: + mfp_tsr = value; + break; + case MFP_UDR&0x7fff: + mfp_udr = value; + break; + } + return; + } + + switch(address) { + case ACIA1_SR&0x7fff: + waitstate+=8; + acia1_cr = value; + break; + case ACIA1_DR&0x7fff: + waitstate+=8; + IkbdRecv (value); + break; + case ACIA2_SR&0x7fff: + waitstate+=8; + acia2_cr = value; + break; + case ACIA2_DR&0x7fff: + waitstate+=8; + break; + } + +} + +PROGMEM void DoIOWW(uint32 address, uint16 value) +{ + if (address >= VID_COL0 && address <= VID_COL15) { + vid_col[(address & 0x1f) >> 1] = value&0x777; + vid_flag = 1; + return; + } + else + switch (address) { + case DMA_MODE: + dma_mode = value; + break; + case DMA_CAR: + waitstate+=4; + if (dma_mode & 0x10) dma_scr = value; + else if (dma_mode & 0x8) dma_car = value; + else { + switch (dma_mode & 0x6) { + case 0: + fdc_command = value; + FDCCommand (); + break; + case 2: + fdc_track = value; + break; + case 4: + fdc_sector = value; + break; + case 6: + fdc_data = value; + break; + } + } + break; + default: + DoIOWB(address, value>>8); + DoIOWB(address+1, value); + break; + } +} + +PROGMEM void DoIOWL(uint32 address, uint32 value) +{ + DoIOWW(address, value>>16); + DoIOWW(address+2, value); +} + +static __inline__ void calculate_vid_adr(void) +{ + unsigned yet=(vid_cycle[cyclenext-IO_CYCLE]-vid_adr_cycleyet)&(~3); + vid_adr+=yet; + vid_adr_cycleyet+=yet; +} + +PROGMEM uint8 DoIORB(uint32 address) +{ + address&=0x7fff; + + //Video and dma emu + if (address<0x800) { + switch (address) { + case MEM_CONF&0x7fff: + return memconf; + case VID_BASEH&0x7fff: + return vid_baseh; + case VID_BASEM&0x7fff: + return vid_basem; + case VID_ADRH&0x7fff: + calculate_vid_adr(); + return (unsigned char)(vid_adr>>16); + case VID_ADRM&0x7fff: + calculate_vid_adr(); + return (unsigned char)(vid_adr>>8); + case VID_ADRL&0x7fff: + calculate_vid_adr(); + return (unsigned char)(vid_adr); + case VID_SYNCMODE&0x7fff: + return vid_syncmode; + case VID_LINEWIDTH&0x7fff: + return 0xff; + case VID_SHIFTMODE&0x7fff: + return vid_shiftmode; + case DMA_ADRH&0x7fff: + return dma_adrh; + case DMA_ADRM&0x7fff: + return dma_adrm; + case DMA_ADRL&0x7fff: + return dma_adrl; + } + return VALUE_OPEN; + } + + //Sound emu + if (address<0x900) { + address&=3; + if (!address) + { + waitstate+=4; + if (psgcontrol>=16) return 0xff; + return psg[psgcontrol]; + } + else if (address<4) + waitstate++; + return VALUE_OPEN; + } + + //Bus error? + if (address<0xb00) { + ExceptionGroup0(BUSERR, address|0xff8000, 0); + return VALUE_OPEN; + } + + //MFP emu + if (address<0x7c00) { + waitstate+=4; + switch(address) { + case MFP_GPIP&0x7fff: + return mfp_gpip; + case MFP_AER&0x7fff: + return mfp_aer; + case MFP_DDR&0x7fff: + return mfp_ddr; + case MFP_IERA&0x7fff: + return mfp_iera; + case MFP_IERB&0x7fff: + return mfp_ierb; + case MFP_IPRA&0x7fff: + return mfp_ipra; + case MFP_IPRB&0x7fff: + return mfp_iprb; + case MFP_ISRA&0x7fff: + return mfp_isra; + case MFP_ISRB&0x7fff: + return mfp_isrb; + case MFP_IMRA&0x7fff: + return mfp_imra; + case MFP_IMRB&0x7fff: + return mfp_imrb; + case MFP_IVR&0x7fff: + return mfp_ivr; + case MFP_TACR&0x7fff: + return mfp_tacr; + case MFP_TBCR&0x7fff: + return mfp_tbcr; + case MFP_TCDCR&0x7fff: + return mfp_tcdcr; + case MFP_TADR&0x7fff: + return (mfp_acount+0xfffff)>>20; + case MFP_TBDR&0x7fff: + return (mfp_bcount+0xfffff)>>20; + case MFP_TCDR&0x7fff: + return (mfp_ccount+0xfffff)>>20; + case MFP_TDDR&0x7fff: + return (mfp_dcount+0xfffff)>>20; + case MFP_SCR&0x7fff: + return mfp_scr; + case MFP_UCR&0x7fff: + return mfp_ucr; + case MFP_RSR&0x7fff: + return mfp_rsr; + case MFP_TSR&0x7fff: + return mfp_tsr; + case MFP_UDR&0x7fff: + return mfp_udr; + } + return VALUE_OPEN; + } + + //Acia emu + switch(address) { + case ACIA1_SR&0x7fff: + waitstate+=8; + return 2 | acia1_sr; + case ACIA1_DR&0x7fff: + waitstate+=8; + if (!(acia1_cr & 0x20)) {acia1_sr&=0x7e; mfp_gpip|=0x10;} + return acia1_dr; + case ACIA2_SR&0x7fff: + waitstate+=8; + return 2; + case ACIA2_DR&0x7fff: + waitstate+=8; + return 1; + } + return VALUE_OPEN; + +} + +PROGMEM uint16 DoIORW(uint32 address) +{ + if (address >= VID_COL0 && address <= VID_COL15) { + return vid_col[(address & 0x1f) >> 1]; + } + switch (address) { + case DMA_SR: + return dma_sr; + case DMA_CAR: + waitstate+=4; + if (dma_mode & 0x10) return dma_scr; + else if (dma_mode & 0x8) return dma_car; + else { + switch (dma_mode & 0x6) { + case 0: + if (!fdc_int) mfp_gpip |= 0x20; + return fdc_status; + case 2: + return fdc_track; + case 4: + return fdc_sector; + case 6: + return fdc_data; + } + return 0; + } + default: + return (((uint32)DoIORB(address))<<8)+DoIORB(address+1); + } +} + +PROGMEM uint32 DoIORL(uint32 address) +{ + return (((uint32)DoIORW(address))<<16)+DoIORW(address+2); +} + diff --git a/MCUME_teensy/teensycastaway/st.h b/MCUME_teensy/teensycastaway/st.h new file mode 100644 index 0000000..8c5c2b2 --- /dev/null +++ b/MCUME_teensy/teensycastaway/st.h @@ -0,0 +1,307 @@ + /* + * Castaway + * (C) 1994 - 2002 Martin Doering, Joachim Hoenig + * + * This file is distributed under the GPL, version 2 or at your + * option any later version. See doc/license.txt for details. + */ +#ifndef STH +#define STH + +#define MAX_DISC_SIZE 1050*1024 + + +/* + * I/O register addresses + */ +#define MEM_CONF 0xff8001 + +#define VID_BASEH 0xff8201 +#define VID_BASEM 0xff8203 +#define VID_ADRH 0xff8205 +#define VID_ADRM 0xff8207 +#define VID_ADRL 0xff8209 +#define VID_SYNCMODE 0xff820a +#define VID_BASEL 0xff820d +#define VID_LINEWIDTH 0xff820f +#define VID_COL0 0xff8240 +#define VID_COL1 0xff8242 +#define VID_COL2 0xff8244 +#define VID_COL3 0xff8246 +#define VID_COL4 0xff8248 +#define VID_COL5 0xff824a +#define VID_COL6 0xff824c +#define VID_COL7 0xff824e +#define VID_COL8 0xff8250 +#define VID_COL9 0xff8252 +#define VID_COL10 0xff8254 +#define VID_COL11 0xff8256 +#define VID_COL12 0xff8258 +#define VID_COL13 0xff825a +#define VID_COL14 0xff825c +#define VID_COL15 0xff825e +#define VID_SHIFTMODE 0xff8260 + +#define DMA_CAR 0xff8604 +#define DMA_SCR 0xff8604 +#define DMA_SR 0xff8606 +#define DMA_MODE 0xff8606 +#define DMA_ADRH 0xff8609 +#define DMA_ADRM 0xff860b +#define DMA_ADRL 0xff860d + +#define SND_RS 0xff8800 +#define SND_WD 0xff8802 + +#define BLT_HFT 0xff8a00 +#define BLT_SXINC 0xff8a20 +#define BLT_SYINC 0xff8a22 +#define BLT_SADR 0xff8a24 +#define BLT_END1 0xff8a28 +#define BLT_END2 0xff8a2a +#define BLT_END3 0xff8a2c +#define BLT_DXINC 0xff8a2e +#define BLT_DYINC 0xff8a30 +#define BLT_DADR 0xff8a32 +#define BLT_XCNT 0xff8a36 +#define BLT_YCNT 0xff8a38 +#define BLT_HOP 0xff8a3a +#define BLT_OP 0xff8a3b +#define BLT_STAT 0xff8a3c +#define BLT_SKEW 0xff8a3d + +#define MFP_GPIP 0xfffa01 +#define MFP_AER 0xfffa03 +#define MFP_DDR 0xfffa05 +#define MFP_IERA 0xfffa07 +#define MFP_IERB 0xfffa09 +#define MFP_IPRA 0xfffa0b +#define MFP_IPRB 0xfffa0d +#define MFP_ISRA 0xfffa0f +#define MFP_ISRB 0xfffa11 +#define MFP_IMRA 0xfffa13 +#define MFP_IMRB 0xfffa15 +#define MFP_IVR 0xfffa17 +#define MFP_TACR 0xfffa19 +#define MFP_TBCR 0xfffa1b +#define MFP_TCDCR 0xfffa1d +#define MFP_TADR 0xfffa1f +#define MFP_TBDR 0xfffa21 +#define MFP_TCDR 0xfffa23 +#define MFP_TDDR 0xfffa25 +#define MFP_SCR 0xfffa27 +#define MFP_UCR 0xfffa29 +#define MFP_RSR 0xfffa2b +#define MFP_TSR 0xfffa2d +#define MFP_UDR 0xfffa2f + +#define ACIA1_SR 0xfffc00 +#define ACIA1_DR 0xfffc02 + +#define ACIA2_SR 0xfffc04 +#define ACIA2_DR 0xfffc06 + +#define RTC_SECL 0xfffc21 +#define RTC_SECH 0xfffc23 +#define RTC_MINL 0xfffc25 +#define RTC_MINH 0xfffc27 +#define RTC_HRSL 0xfffc29 +#define RTC_HRSH 0xfffc2b +#define RTC_DAY 0xfffc2d +#define RTC_DAYL 0xfffc2f +#define RTC_DAYH 0xfffc31 +#define RTC_MONL 0xfffc33 +#define RTC_MONH 0xfffc35 +#define RTC_YRL 0xfffc37 +#define RTC_YRH 0xfffc39 +#define RTC_RES1 0xfffc3b +#define RTC_RES2 0xfffc3d +#define RTC_RES3 0xfffc3f + +#define IBS 32 +#define OBS 64 + +/* + * ROM/Cartridge file names + */ +extern char cartridge[80], rom[80]; +/* + * I/O register values + */ +extern int8 *membase; +extern int8 *membase2; +extern int8 *rombase; +extern uint8 memconf; +extern uint8 mfp_gpip, mfp_aer, mfp_ddr, mfp_iera, mfp_ierb, mfp_ipra, mfp_iprb, + mfp_isra, mfp_isrb, mfp_imra, mfp_imrb, mfp_ivr, mfp_tacr, + mfp_tbcr, mfp_tcdcr, mfp_scr, mfp_ucr, mfp_rsr, mfp_tsr, mfp_udr; + +//Mfp delay timer variables +extern int32 mfp_reg[12]; +#define mfp_tadr mfp_reg[0] +#define mfp_tbdr mfp_reg[1] +#define mfp_tcdr mfp_reg[2] +#define mfp_tddr mfp_reg[3] +#define mfp_acount mfp_reg[4] +#define mfp_bcount mfp_reg[5] +#define mfp_ccount mfp_reg[6] +#define mfp_dcount mfp_reg[7] +#define mfp_ascale mfp_reg[8] +#define mfp_bscale mfp_reg[9] +#define mfp_cscale mfp_reg[10] +#define mfp_dscale mfp_reg[11] + +extern uint8 acia1_cr, acia1_sr, acia1_dr, acia2_cr, acia2_sr, + acia2_dr; + +extern int checkedsample; +extern int checkedsound; +//Video shifter +extern uint32 vid_adr; +extern uint8 vid_baseh, vid_basem; +extern uint32 vid_mem; +extern uint8 vid_syncmode, vid_shiftmode; +extern int16 vid_col[]; +extern int vid_flag; + + +extern uint16 dma_car, dma_scr, dma_sr, dma_mode; +extern uint8 dma_adrh, dma_adrm, dma_adrl; +extern const int32 mfpcycletab[16]; + +extern uint32 psg[26]; +//extern unsigned char sample[10000]; +#define phase0 psg[16] +#define phase1 psg[17] +#define phase2 psg[18] +#define phase3 psg[19] +#define psg_epos psg[20] +#define psgcontrol psg[21] +#define phase4 psg[22] +#define nrand psg[23] +#define samppos psg[24] +#define lastpsg psg[25] + +/* ikbd.c */ +extern void IkbdLoop(void); +extern void IkbdRecv(uint8); +extern void IkbdSend(uint8); +extern void IkbdWriteBuffer(void); /* write byte IKBD -> ST */ +extern void IkbdKeyPress(unsigned short keysym); /* key press */ +extern void IkbdKeyRelease(unsigned short keysym); /* key release */ +extern void IkbdMousePress(int); /* mouse button press */ +extern void IkbdMouseRelease(int); /* mouse button release */ +extern void IkbdMouseMotion(int x, int y); /* mouse movement */ +//extern void IkbdMouseMotion(int x, int y, int dx, int dy); /* mouse movement */ +extern void joystickevent(int joystate); +extern void IkbdReset(void); + + +/* fdc.c */ +extern unsigned char fdc_data, fdc_track, fdc_sector, + fdc_status, fdc_command, fdc_int; +extern unsigned char disk_ejected[2]; +extern unsigned char disk_changed[2]; +struct Disk { + int file; + char name[80]; + int head; + int sides; + int tracks; + int sectors; + int secsize; + int disksize; +}; +extern struct Disk disk[2]; +extern int FDCInit(int i); +extern void FDCCommand(void); +void FDCeject(int num); +int unzipdisk(unsigned char *RomPath,unsigned char *buf); + +/* blitter.c */ +extern uint16 blt_halftone[16]; +extern int16 blt_src_x_inc, blt_src_y_inc; +extern uint32 blt_src_addr; +extern int16 blt_end_1, blt_end_2, blt_end_3; +extern int16 blt_dst_x_inc, blt_dst_y_inc; +extern uint32 blt_dst_addr; +extern uint16 blt_x_cnt, blt_y_cnt; +extern int8 blt_hop, blt_op, blt_status, blt_skew; + +extern void bitblt(void); + +/* init.c */ +extern int Init(); + +/* main.c */ +extern unsigned ips; + +/* mem.c */ +extern int MemInit(void); +extern void MemTableSet(uint32 base, uint32 size, + void (*setbyte)(uint32, uint8), + void (*setword)(uint32, uint16), + void (*setlong)(uint32, uint32 ), + uint8 (*getbyte)(uint32), + uint16 (*getword)(uint32), + uint32 (*getlong)(uint32) ); + +extern void RamSetB(uint32, uint8); +extern void RamSetW(uint32, uint16); +extern void RamSetL(uint32, uint32 ); +extern uint8 RamGetB(uint32); +extern uint16 RamGetW(uint32); +extern uint32 RamGetL(uint32); +/* + * Video shift modes + */ +#define COL4 0 +#define COL2 1 +#define MONO 2 +extern int display_mode; + +/* + * Read/Write IO Registers (return value != 0 if bus error) + */ +uint8 DoIORB(uint32 address); +uint16 DoIORW(uint32 address); +uint32 DoIORL(uint32 address); +void DoIOWB(uint32 address, uint8 value); +void DoIOWW(uint32 address, uint16 value); +void DoIOWL(uint32 address, uint32 value); + +void IOInit(void); +struct _mouse { + char buttons; /* real buttons */ + char stbuttons; /* buttons as known to st */ + int xscale, yscale; + int xmax, ymax; + int xkcm, ykcm; + int xth, yth; + int x, y; /* real mouse position */ + int stx, sty; /* mouse position st */ + int button_action; + int mode; + int yinv; + int flag; +}; + + +struct _joystick { + int mode; + int rate; + int state0; /* joystick 0 state */ + int state1; /* joystick 1 state */ + int rx, ry, tx, ty, vx, vy; +}; + + +extern struct _mouse mouse; +extern struct _joystick joystick; + +void Ikbd_Reset(void); +void IkbdJoystickChange(int number, uint8 state); +int unzipdisk(unsigned char *RomPath,unsigned char *buf); +void reset_st_video(void); + +#endif diff --git a/MCUME_teensy/teensycastaway/tab_EnvelopeShapeValues.h b/MCUME_teensy/teensycastaway/tab_EnvelopeShapeValues.h new file mode 100644 index 0000000..f4132f2 --- /dev/null +++ b/MCUME_teensy/teensycastaway/tab_EnvelopeShapeValues.h @@ -0,0 +1,1026 @@ +PROGMEM static const int EnvelopeShapeValues[16384] = { +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112, +111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96, +95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80, +79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64, +63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48, +47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32, +31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16, +15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0, +-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16, +-17,-18,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32, +-33,-34,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48, +-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64, +-65,-66,-67,-68,-69,-70,-71,-72,-73,-74,-75,-76,-77,-78,-79,-80, +-81,-82,-83,-84,-85,-86,-87,-88,-89,-90,-91,-92,-93,-94,-95,-96, +-97,-98,-99,-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,-110,-111,-112, +-113,-114,-115,-116,-117,-118,-119,-120,-121,-122,-123,-124,-125,-126,-127,-128, +-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113, +-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97, +-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81, +-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65, +-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49, +-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33, +-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17, +-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, +32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, +48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, +64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, +80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128, +-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128 +}; diff --git a/MCUME_teensy/teensycastaway/tab_LogTable.h b/MCUME_teensy/teensycastaway/tab_LogTable.h new file mode 100644 index 0000000..31e6930 --- /dev/null +++ b/MCUME_teensy/teensycastaway/tab_LogTable.h @@ -0,0 +1,18 @@ +PROGMEM static const int LogTable[256] = { +0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2, +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4, +4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5, +5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7, +7,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10, +10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14, +15,15,15,15,16,16,16,17,17,17,18,18,19,19,19,20, +20,21,21,21,22,22,23,23,24,24,25,25,26,26,27,27, +28,28,29,30,30,31,31,32,33,33,34,35,35,36,37,38, +38,39,40,41,42,42,43,44,45,46,47,48,49,50,51,52, +53,54,55,56,57,58,60,61,62,63,65,66,67,69,70,71, +73,74,76,77,79,80,82,84,85,87,89,91,92,94,96,98, +100,102,104,106,108,111,113,115,117,120,122,125,127,130,132,135, +138,140,143,146,149,152,155,158,161,164,168,171,175,178,182,185, +189,193,197,201,205,209,213,217,221,226,230,235,240,245,250,255 +}; diff --git a/MCUME_teensy/teensycastaway/tab_LogTable16.h b/MCUME_teensy/teensycastaway/tab_LogTable16.h new file mode 100644 index 0000000..9509313 --- /dev/null +++ b/MCUME_teensy/teensycastaway/tab_LogTable16.h @@ -0,0 +1,3 @@ +PROGMEM static const int LogTable16[16] = { +0,0,1,1,2,4,6,9,14,22,33,50,75,113,170,255 +}; diff --git a/MCUME_teensy/teensycastaway/tab_MixTable.h b/MCUME_teensy/teensycastaway/tab_MixTable.h new file mode 100644 index 0000000..4b7f94a --- /dev/null +++ b/MCUME_teensy/teensycastaway/tab_MixTable.h @@ -0,0 +1,130 @@ +PROGMEM static const char MixTable[2048] = { +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x83,0x83,0x83, +0x84,0x84,0x84,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x88, +0x88,0x89,0x89,0x89,0x8A,0x8A,0x8A,0x8B,0x8B,0x8B,0x8B,0x8C,0x8C,0x8C,0x8D,0x8D, +0x8D,0x8E,0x8E,0x8E,0x8E,0x8F,0x8F,0x8F,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x92, +0x92,0x92,0x93,0x93,0x93,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x96,0x96,0x96,0x97, +0x97,0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x9A,0x9A,0x9A,0x9A,0x9B,0x9B,0x9B, +0x9C,0x9C,0x9C,0x9D,0x9D,0x9D,0x9D,0x9E,0x9E,0x9E,0x9F,0x9F,0x9F,0xA0,0xA0,0xA0, +0xA0,0xA1,0xA1,0xA1,0xA2,0xA2,0xA2,0xA3,0xA3,0xA3,0xA3,0xA4,0xA4,0xA4,0xA5,0xA5, +0xA5,0xA6,0xA6,0xA6,0xA6,0xA7,0xA7,0xA7,0xA8,0xA8,0xA8,0xA9,0xA9,0xA9,0xA9,0xAA, +0xAA,0xAA,0xAB,0xAB,0xAB,0xAC,0xAC,0xAC,0xAC,0xAD,0xAD,0xAD,0xAE,0xAE,0xAE,0xAF, +0xAF,0xAF,0xAF,0xB0,0xB0,0xB0,0xB1,0xB1,0xB1,0xB2,0xB2,0xB2,0xB2,0xB3,0xB3,0xB3, +0xB4,0xB4,0xB4,0xB5,0xB5,0xB5,0xB5,0xB6,0xB6,0xB6,0xB7,0xB7,0xB7,0xB8,0xB8,0xB8, +0xB8,0xB9,0xB9,0xB9,0xBA,0xBA,0xBA,0xBB,0xBB,0xBB,0xBB,0xBC,0xBC,0xBC,0xBD,0xBD, +0xBD,0xBE,0xBE,0xBE,0xBE,0xBF,0xBF,0xBF,0xC0,0xC0,0xC0,0xC1,0xC1,0xC1,0xC1,0xC2, +0xC2,0xC2,0xC3,0xC3,0xC3,0xC4,0xC4,0xC4,0xC4,0xC5,0xC5,0xC5,0xC6,0xC6,0xC6,0xC7, +0xC7,0xC7,0xC7,0xC8,0xC8,0xC8,0xC9,0xC9,0xC9,0xCA,0xCA,0xCA,0xCA,0xCB,0xCB,0xCB, +0xCC,0xCC,0xCC,0xCD,0xCD,0xCD,0xCD,0xCE,0xCE,0xCE,0xCF,0xCF,0xCF,0xD0,0xD0,0xD0, +0xD0,0xD1,0xD1,0xD1,0xD2,0xD2,0xD2,0xD3,0xD3,0xD3,0xD3,0xD4,0xD4,0xD4,0xD5,0xD5, +0xD5,0xD6,0xD6,0xD6,0xD6,0xD7,0xD7,0xD7,0xD8,0xD8,0xD8,0xD9,0xD9,0xD9,0xD9,0xDA, +0xDA,0xDA,0xDB,0xDB,0xDB,0xDC,0xDC,0xDC,0xDC,0xDD,0xDD,0xDD,0xDE,0xDE,0xDE,0xDF, +0xDF,0xDF,0xDF,0xE0,0xE0,0xE0,0xE1,0xE1,0xE1,0xE2,0xE2,0xE2,0xE2,0xE3,0xE3,0xE3, +0xE4,0xE4,0xE4,0xE5,0xE5,0xE5,0xE5,0xE6,0xE6,0xE6,0xE7,0xE7,0xE7,0xE8,0xE8,0xE8, +0xE8,0xE9,0xE9,0xE9,0xEA,0xEA,0xEA,0xEB,0xEB,0xEB,0xEB,0xEC,0xEC,0xEC,0xED,0xED, +0xED,0xEE,0xEE,0xEE,0xEE,0xEF,0xEF,0xEF,0xF0,0xF0,0xF0,0xF1,0xF1,0xF1,0xF1,0xF2, +0xF2,0xF2,0xF3,0xF3,0xF3,0xF4,0xF4,0xF4,0xF4,0xF5,0xF5,0xF5,0xF6,0xF6,0xF6,0xF7, +0xF7,0xF7,0xF7,0xF8,0xF8,0xF8,0xF9,0xF9,0xF9,0xFA,0xFA,0xFA,0xFA,0xFB,0xFB,0xFB, +0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x06,0x06,0x07,0x07,0x07,0x08,0x08,0x08,0x09,0x09, +0x09,0x09,0x0A,0x0A,0x0A,0x0B,0x0B,0x0B,0x0C,0x0C,0x0C,0x0C,0x0D,0x0D,0x0D,0x0E, +0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x10,0x10,0x10,0x11,0x11,0x11,0x12,0x12,0x12,0x12, +0x13,0x13,0x13,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x17, +0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B,0x1B,0x1B,0x1B,0x1C,0x1C, +0x1C,0x1D,0x1D,0x1D,0x1E,0x1E,0x1E,0x1E,0x1F,0x1F,0x1F,0x20,0x20,0x20,0x21,0x21, +0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26, +0x26,0x26,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x2A, +0x2B,0x2B,0x2B,0x2C,0x2C,0x2C,0x2D,0x2D,0x2D,0x2D,0x2E,0x2E,0x2E,0x2F,0x2F,0x2F, +0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,0x34, +0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x39,0x39, +0x39,0x39,0x3A,0x3A,0x3A,0x3B,0x3B,0x3B,0x3C,0x3C,0x3C,0x3C,0x3D,0x3D,0x3D,0x3E, +0x3E,0x3E,0x3F,0x3F,0x3F,0x3F,0x40,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,0x42, +0x43,0x43,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x47, +0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x4A,0x4A,0x4A,0x4B,0x4B,0x4B,0x4B,0x4C,0x4C, +0x4C,0x4D,0x4D,0x4D,0x4E,0x4E,0x4E,0x4E,0x4F,0x4F,0x4F,0x50,0x50,0x50,0x51,0x51, +0x51,0x51,0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x56, +0x56,0x56,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x59,0x59,0x59,0x5A,0x5A,0x5A,0x5A, +0x5B,0x5B,0x5B,0x5C,0x5C,0x5C,0x5D,0x5D,0x5D,0x5D,0x5E,0x5E,0x5E,0x5F,0x5F,0x5F, +0x60,0x60,0x60,0x60,0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x64,0x64, +0x64,0x65,0x65,0x65,0x66,0x66,0x66,0x66,0x67,0x67,0x67,0x68,0x68,0x68,0x69,0x69, +0x69,0x69,0x6A,0x6A,0x6A,0x6B,0x6B,0x6B,0x6C,0x6C,0x6C,0x6C,0x6D,0x6D,0x6D,0x6E, +0x6E,0x6E,0x6F,0x6F,0x6F,0x6F,0x70,0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x72,0x72, +0x73,0x73,0x73,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x76,0x76,0x76,0x77,0x77,0x77, +0x78,0x78,0x78,0x78,0x79,0x79,0x79,0x7A,0x7A,0x7A,0x7B,0x7B,0x7B,0x7B,0x7C,0x7C, +0x7C,0x7D,0x7D,0x7D,0x7E,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, +0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F +}; diff --git a/MCUME_teensy/teensycastaway/teensycastaway.ino b/MCUME_teensy/teensycastaway/teensycastaway.ino new file mode 100644 index 0000000..763892a --- /dev/null +++ b/MCUME_teensy/teensycastaway/teensycastaway.ino @@ -0,0 +1,278 @@ +#include "iopins.h" +#include "emuapi.h" + +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +#include "test.h" + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensycastaway/test.cpp b/MCUME_teensy/teensycastaway/test.cpp new file mode 100644 index 0000000..6f6d900 --- /dev/null +++ b/MCUME_teensy/teensycastaway/test.cpp @@ -0,0 +1,532 @@ +#include + +#include "emuapi.h" +#include "tft_t_dma.h" + +#include "dcastaway.h" +#include "st.h" +#include "mem.h" +#include "m68k_intrf.h" + +#ifndef NO_SOUND +#include "sound.h" +#endif + +#include "tossw12.h" + +int8 *membase; +int8 *membasemax; +int8 *membase2; +int8 *rombase; + +int hbl = 0; +int end_visible_screen = 264; +int hsync = 0; +int vsyncpend = 0, hsyncpend = 0; + +int exmousex=160,exmousey=100,MouseRelease1=0,MouseRelease2=0; +int CompleteSndBufIdx; + + +int waitstate=0; +int dcastaway_disc_writed[2] = { 0 , 0 }; +int dcastaway_disc_for_write[2] = { 0 , 0 }; +int draw_border=0, maybe_border=0; +unsigned cyclenext=512; +unsigned vid_adr_cycleyet=0; +static unsigned char vid_cycles_pal[1024]; +static unsigned char vid_cycles_ntsc[1024]; +unsigned char *vid_cycle=(unsigned char *)&vid_cycles_pal; +int readdsk=1; +extern unsigned char fdc_motor; + +#define XRES 320 +#define YRES 200 + +static unsigned short line[XRES]; + +#define PALMULT8(x) ((x)<<5) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) + + +void Redraw16 ( int row, int vid_adr ) { + + static unsigned short palmap [ 16 ]; + //Source address + register unsigned short *line_i; + if (vid_adr<(MEMBASE+MEM1SIZE)) + line_i = (unsigned short *)(&membase[vid_adr]); + else + line_i = (unsigned short *)(&membase2[vid_adr-MEM1SIZE]); + register unsigned short *line_o= &line[0]; + + //Build paletter + if (vid_flag) { + unsigned char i, r, g, b; + for (i = 0; i < 16; i++) { + b = PALMULT8 ( (vid_col[i] & 0x7) ); + g = PALMULT8 ( ((vid_col[i] >> 4) & 0x7) ); + r = PALMULT8 ( ((vid_col[i] >> 8) & 0x7) ); + palmap [ i ] = RGBVAL16(r,g,b); + } + vid_flag=0; + } + + register int col; + register int bit; + for (col=0; col<20; col++) { + if(line_i==membasemax) line_i=(unsigned short *)membase2; + register unsigned short pl0=*line_i++,pl1=*line_i++,pl2=*line_i++,pl3=*line_i++; + for (bit=15;bit>=0;bit--) { + int ind = (pl0 >> bit) & 0x1; + ind += ((pl1 >> bit) & 0x1)<<1; + ind += ((pl2 >> bit) & 0x1)<<2; + ind += ((pl3 >> bit) & 0x1)<<3; + *line_o++ = palmap [ ind ]; + } + } + + emu_DrawLine16(&line[0], XRES, YRES, row); +} + +void Redraw16_med ( int row, int vid_adr ) { + static unsigned short palmap [ 4 ]; + //Source address + register unsigned short *line_i; + if (vid_adr<(MEMBASE+MEM1SIZE)) + line_i = (unsigned short *)(&membase[vid_adr]); + else + line_i = (unsigned short *)(&membase2[vid_adr-MEM1SIZE]); + register unsigned short *line_o= &line[0]; + + //Build paletter + if (vid_flag) { + unsigned char i, r, g, b; + for (i = 0; i < 4; i++) { + b = PALMULT8 ( (vid_col[i] & 0x7) ); + g = PALMULT8 ( ((vid_col[i] >> 4) & 0x7) ); + r = PALMULT8 ( ((vid_col[i] >> 8) & 0x7) ); + palmap [ i ] = RGBVAL16(r,g,b); + } + //palmap [ 0 ] = RGBVAL16(0xff,0xff,0xff); + vid_flag=0; + } + + register int col; + register int bit; + for (col=0; col<40; col++) { + if(line_i==membasemax) line_i=(unsigned short *)membase2; + register unsigned short pl0=*line_i++,pl1=*line_i++; + for (bit=15;bit>=0;bit--) { + int ind = (pl0 >> bit) & 0x1; + ind += ((pl1 >> bit) & 0x1)<<1; + if (bit & 0x01) + *line_o++ = palmap [ ind ]; + } + } + + emu_DrawLine16(&line[0], XRES, YRES, row); +} +static uint8 disk0[256]; +static uint8 disk1[256]; +static uint8 membis[MEMSIZE-MEM1SIZE]; + +void ast_Init(void) +{ + emu_printf("Allocating RAM"); + membase = (int8*) malloc(MEM1SIZE); + if (!membase) emu_printf("malloc failed\n"); + membasemax = &membase[MEM1SIZE]; + //Serial.println((unsigned long)membase); + //membase = 0x20200000; + for (int i=0; i 1 ) { + mouse_x -= 1; + //Serial.print("l"); + IkbdMouseMotion ( mouse_x, mouse_y ); + IkbdLoop(); + } + } + else if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) { + if ( mouse_y > 1 ) { + mouse_y -= 1; + //Serial.print("u"); + IkbdMouseMotion ( mouse_x, mouse_y ); + IkbdLoop(); + } + } + else if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) { + if ( mouse_y < YRES ) { + mouse_y += 1; + //Serial.print("d"); + IkbdMouseMotion ( mouse_x, mouse_y ); + IkbdLoop(); + } + } + + int mouseb=0; + if ( ( k & MASK_JOY2_BTN) ){ + mouseb=1; + } + if ( (mouseb != prev_mouseb) ){ + if (mouseb) IkbdMousePress(2); + else IkbdMouseRelease(2); + //Serial.println("btoggle"); + IkbdLoop(); + prev_mouseb = mouseb; + } + } +} + +void ast_Step(void) +{ + int delay_fdc_motor=0; + unsigned long cycleco=0; + unsigned long oldpend,newpend; + hsync=0; + hbl=0; + vsyncpend=0; + hsyncpend=0; + + int running = 1; + /* Event loop */ + while (running) + { + cycleco=cpu_loop(cyclenext); + cycleco+=waitstate; + waitstate=0; +#ifndef NO_SOUND + SoundCycles+=cycleco; +#endif + //MFP timer A delay mode + if (mfp_ascale>1) { + mfp_acount-=mfp_ascale*cycleco; + if (mfp_acount<=0) { + do {mfp_acount+=mfp_tadr;} while (mfp_acount<=0); + oldpend=mfp_ipra; newpend=(oldpend|0x20)&mfp_iera; + if (newpend!=oldpend) {mfp_ipra=newpend; + + } + } + #ifdef USE_SHORT_SLICE + cyclenext=4+(mfp_acount/mfp_ascale); + #endif + } + #ifdef USE_SHORT_SLICE + else + cyclenext=512; + #endif + //MFP timer B delay mode + if (mfp_bscale>1) { + mfp_bcount-=mfp_bscale*cycleco; + if (mfp_bcount<=0) { + do {mfp_bcount+=mfp_tbdr;} while (mfp_bcount<=0); + oldpend=mfp_ipra; newpend=(oldpend|0x1)&mfp_iera; + if (newpend!=oldpend) {mfp_ipra=newpend; + } + } + #ifdef USE_SHORT_SLICE + { + int n=4+(mfp_bcount/mfp_bscale); + if (n1) { + mfp_ccount-=mfp_cscale*cycleco; + if (mfp_ccount<=0) { + do {mfp_ccount+=mfp_tcdr;} while (mfp_ccount<=0); + oldpend=mfp_iprb; newpend=(oldpend|0x20)&mfp_ierb; + if (newpend!=oldpend) {mfp_iprb=newpend; + } + } + #ifdef USE_SHORT_SLICE + { + int n=4+(mfp_ccount/mfp_cscale); + if (n1) { + mfp_dcount-=mfp_dscale*cycleco; + if (mfp_dcount<=0) { + do {mfp_dcount+=mfp_tddr;} while (mfp_dcount<=0); + oldpend=mfp_iprb; newpend=(oldpend|0x10)&mfp_ierb; + if (newpend!=oldpend) {mfp_iprb=newpend; + } + } + #ifdef USE_SHORT_SLICE + { + int n=4+(mfp_dcount/mfp_dscale); + if (n=313) + { + delay(15); + //emu_DrawVsync(); + do_events(); +#ifndef NO_SOUND + Sound_Update_VBL(); +#endif + running=0; + + + hbl=0; + //Generate vsync interrupt + Interrupt(AUTOINT4, 4); + //Do fdc spinup + if (fdc_motor){ + if (delay_fdc_motor>150) { + fdc_status &= ~0x80; + delay_fdc_motor=0; + fdc_motor=0; + } + else delay_fdc_motor++; + } + } + } + + + //Recalculate interrupts? + { + int mfp_int; + mfp_int=0; + if (6>GetI()) { + //Mfp interrupt + { + int n, number; + uint16 imr, ipr, isr, irr; + int in_request; + //Find in_request and in_service + imr = (mfp_imra<<8)+mfp_imrb; + ipr = (mfp_ipra<<8)+mfp_iprb; + irr = imr & ipr; + isr = (mfp_isra<<8) + mfp_isrb; + //in_request higher than in_service? + if (irr>isr) { + //Find highest set bit + for (in_request = 15; in_request > 0; in_request--) { + if (irr & 0x8000) break; + irr <<= 1; + } + isr = 1 << in_request; + //Set interrupt in service bits in MFP + if (mfp_ivr & 0x8) { + mfp_isra |= isr >> 8; + mfp_isrb |= isr; + }else{ + mfp_isra &= (~isr) >> 8; + mfp_isrb &= ~isr; + } + //Clear interrupt pending bits in MFP + mfp_ipra &= ~(isr >> 8); + mfp_iprb &= ~isr; + //Pass interrupt to cpu + number = in_request | (mfp_ivr & 0xf0); + Interrupt(number, 6); + mfp_int=1; + } + } + } + } + } +} + + + +void ast_Start(char * filename) +{ + emu_printf("init started"); + strncpy (disk[0].name, filename, sizeof(disk[0].name)); + + initialize_memmap(); + FDCInit(0); + //FDCeject(0); + FDCeject(1); + IkbdReset(); + IOInit(); +#ifdef HAS_SND + emu_sndInit(); +#endif +#ifndef NO_SOUND + Sound_Init(); +#endif + HWReset(); /* CPU Reset */ + + emu_printf("init done"); +} + +void SND_Process(void *stream, int len) { +#ifndef NO_SOUND + Sound_UpdateFromCallBack16((short *)stream, len); +#endif +} + + + + diff --git a/MCUME_teensy/teensycastaway/test.h b/MCUME_teensy/teensycastaway/test.h new file mode 100644 index 0000000..99e76da --- /dev/null +++ b/MCUME_teensy/teensycastaway/test.h @@ -0,0 +1,5 @@ +extern void ast_Init(void); +extern void ast_Step(void); +extern void ast_Start(char * filename); +extern void ast_Input(int click); + diff --git a/MCUME_teensy/teensycastaway/tft_t_dma.cpp b/MCUME_teensy/teensycastaway/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensycastaway/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 200 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensycastaway/tft_t_dma_config.h b/MCUME_teensy/teensycastaway/tft_t_dma_config.h new file mode 100644 index 0000000..9f12cd5 --- /dev/null +++ b/MCUME_teensy/teensycastaway/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +//#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensycastaway/tossw12.h b/MCUME_teensy/teensycastaway/tossw12.h new file mode 100644 index 0000000..a04787e --- /dev/null +++ b/MCUME_teensy/teensycastaway/tossw12.h @@ -0,0 +1,12291 @@ +#include +PROGMEM const unsigned char tos[196608] = { +0x2E,0x60,0x02,0x01,0xFC,0x00,0x30,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x89, +0xFC,0x00,0x30,0x00,0xFE,0x00,0xF4,0xFF,0x22,0x04,0x87,0x19,0x03,0x00,0x96,0x0E, +0x00,0x00,0x9C,0x7E,0x00,0x00,0x61,0x0E,0x00,0x00,0xCE,0x87,0x00,0x00,0x00,0x00, +0xFC,0x46,0x00,0x27,0x70,0x4E,0xB9,0x0C,0x52,0xFA,0x5F,0x23,0xFA,0x00,0x00,0x00, +0x0A,0x66,0xFA,0x4D,0x08,0x00,0xF9,0x4E,0xFA,0x00,0x04,0x00,0xFA,0x4D,0x06,0x00, +0x00,0x60,0x36,0x06,0x0A,0x66,0xF9,0x13,0x00,0x00,0x24,0x04,0xFF,0xFF,0x01,0x80, +0xCD,0x9B,0xAD,0x0C,0x41,0x31,0x26,0x59,0x26,0x04,0x18,0x66,0x2D,0x20,0x2A,0x04, +0x2D,0x4A,0x2A,0x04,0x0E,0x66,0x00,0x08,0x00,0x00,0x08,0x66,0x40,0x20,0xFA,0x4D, +0xE0,0xFF,0xD0,0x4E,0xF9,0x41,0xFF,0xFF,0x00,0x88,0xBC,0x10,0x07,0x00,0x7C,0x11, +0xC0,0x00,0x02,0x00,0xBC,0x10,0x0E,0x00,0x7C,0x11,0x07,0x00,0x02,0x00,0x3A,0x08, +0x00,0x00,0x7B,0xFF,0x10,0x67,0xFA,0x4D,0x06,0x00,0x00,0x60,0x6E,0x0D,0xFC,0x13, +0x02,0x00,0xFF,0xFF,0x0A,0x82,0xF9,0x43,0xFF,0xFF,0x40,0x82,0x3C,0x30,0x0F,0x00, +0xFA,0x41,0xE6,0x05,0xD8,0x32,0xC8,0x51,0xFC,0xFF,0xFC,0x13,0x01,0x00,0xFF,0xFF, +0x01,0x82,0xFC,0x13,0x00,0x00,0xFF,0xFF,0x03,0x82,0xCD,0x9B,0x2D,0x1C,0x24,0x04, +0x2D,0x2A,0x2E,0x04,0xFA,0x4D,0x06,0x00,0x00,0x60,0x9E,0x05,0x00,0x67,0x18,0x01, +0x46,0x42,0xFC,0x13,0x0A,0x00,0xFF,0xFF,0x01,0x80,0x7C,0x30,0x08,0x00,0xF9,0x43, +0x20,0x00,0x08,0x00,0x40,0x42,0xC0,0x30,0xC0,0x32,0x7C,0xD0,0x54,0xFA,0xFC,0xB1, +0x00,0x00,0x00,0x02,0xF0,0x66,0x3C,0x22,0x20,0x00,0x00,0x00,0x4E,0xE4,0x7C,0x30, +0x08,0x02,0xFA,0x4B,0x06,0x00,0x00,0x60,0x4A,0x05,0x20,0x67,0x7C,0x30,0x08,0x04, +0xFA,0x4B,0x06,0x00,0x00,0x60,0x3C,0x05,0x10,0x67,0x7C,0x30,0x08,0x00,0xFA,0x4B, +0x06,0x00,0x00,0x60,0x2E,0x05,0x04,0x66,0x46,0x58,0x46,0x58,0xBC,0x92,0x20,0x00, +0x00,0x00,0xC8,0x67,0xC6,0x13,0xFF,0xFF,0x01,0x80,0xF9,0x4F,0x00,0x00,0x00,0x80, +0x79,0x28,0x00,0x00,0x08,0x00,0xFA,0x41,0x36,0x00,0xC8,0x23,0x00,0x00,0x08,0x00, +0x3C,0x36,0x55,0xFB,0x3C,0x2E,0x02,0x00,0x00,0x00,0x47,0x20,0x48,0x22,0x00,0x34, +0x2A,0x72,0x02,0x33,0x43,0xD4,0xC9,0x51,0xFA,0xFF,0x48,0x22,0x2A,0x72,0x61,0xB0, +0x0C,0x66,0x51,0x42,0x43,0xD0,0xC9,0x51,0xF6,0xFF,0xC7,0xD1,0xDE,0x60,0xC7,0x91, +0x08,0x2A,0xCC,0x23,0x00,0x00,0x08,0x00,0x05,0x20,0xBC,0x90,0x00,0x00,0x00,0x80, +0x48,0xE0,0xC0,0x13,0xFF,0xFF,0x03,0x82,0x40,0x48,0xC0,0x13,0xFF,0xFF,0x01,0x82, +0x45,0x20,0x3C,0x28,0x00,0x00,0x00,0x04,0x00,0x70,0x00,0x72,0x00,0x74,0x00,0x76, +0xE0,0x48,0x00,0xF0,0xE0,0x48,0x00,0xF0,0xE0,0x48,0x00,0xF0,0xE0,0x48,0x00,0xF0, +0xC4,0xB1,0xEC,0x66,0xCD,0x9B,0x46,0x1B,0x24,0x04,0x45,0x2B,0x2E,0x04,0x7C,0x2B, +0x20,0x75,0xF3,0x19,0x20,0x04,0x7C,0x2B,0x76,0x23,0xAA,0x98,0x3A,0x04,0x7C,0x2B, +0x55,0x55,0xAA,0xAA,0x1A,0x05,0xCD,0x9B,0x7C,0x20,0x00,0x00,0x80,0x09,0x7C,0x22, +0x01,0x00,0x00,0x00,0x00,0x70,0xC0,0x30,0xC8,0xB3,0xFA,0x66,0x6D,0x20,0x2E,0x04, +0xFC,0x91,0x00,0x00,0x00,0x80,0x48,0x2B,0x4E,0x04,0xED,0x13,0x4F,0x04,0xFF,0xFF, +0x01,0x82,0xED,0x13,0x50,0x04,0xFF,0xFF,0x03,0x82,0x3C,0x32,0xFF,0x07,0xC0,0x20, +0xC0,0x20,0xC0,0x20,0xC0,0x20,0xC9,0x51,0xF6,0xFF,0x7A,0x20,0xC8,0xFD,0x90,0x0C, +0x65,0x87,0x21,0x43,0x04,0x67,0xFA,0x41,0xB0,0xFD,0xE8,0x23,0x04,0x00,0x00,0x00, +0xFA,0x04,0xE8,0x23,0x08,0x00,0x00,0x00,0xFE,0x04,0x7C,0x2B,0xFC,0x00,0x44,0x0F, +0x6A,0x04,0x7C,0x2B,0xFC,0x00,0xB6,0x12,0x76,0x04,0x7C,0x2B,0xFC,0x00,0xCA,0x0F, +0x72,0x04,0x7C,0x2B,0xFC,0x00,0x7A,0x11,0x7E,0x04,0x7C,0x2B,0xFC,0x00,0x60,0x15, +0x7A,0x04,0x7C,0x2B,0xFC,0x00,0x24,0x21,0x06,0x05,0x7C,0x2B,0xFC,0x00,0x90,0x20, +0x0A,0x05,0x7C,0x2B,0xFC,0x00,0x9A,0x21,0x0E,0x05,0x7C,0x2B,0xFC,0x00,0xB4,0x21, +0x12,0x05,0x7C,0x2B,0xFC,0x00,0x62,0x0D,0x02,0x05,0x6D,0x2B,0x4E,0x04,0x36,0x04, +0x6D,0x2B,0xFA,0x04,0x32,0x04,0xF9,0x4F,0x00,0x00,0x5A,0x75,0x7C,0x3B,0x08,0x00, +0x54,0x04,0xED,0x50,0x44,0x04,0x7C,0x3B,0x03,0x00,0x40,0x04,0x7C,0x2B,0x00,0x00, +0xDA,0x16,0xC6,0x04,0x7C,0x3B,0xFF,0xFF,0xEE,0x04,0x7C,0x2B,0xFC,0x00,0x00,0x00, +0xF2,0x04,0x7C,0x2B,0x00,0x00,0x3A,0x09,0xA2,0x04,0x7C,0x2B,0xFC,0x00,0x70,0x06, +0x6E,0x04,0xB9,0x42,0x00,0x00,0xC2,0x04,0x00,0x61,0xB0,0x0B,0xFA,0x47,0xC0,0x04, +0xFA,0x49,0x5E,0x03,0xB9,0x0C,0x52,0xFA,0x5F,0x23,0xFA,0x00,0x00,0x00,0x26,0x67, +0xFA,0x43,0x2E,0x08,0xFC,0xD3,0x00,0x02,0x00,0x00,0xF9,0x41,0x00,0x00,0x08,0x00, +0x3C,0x30,0x3D,0x00,0xC9,0x20,0xFC,0xD3,0x00,0x01,0x00,0x00,0xC8,0x51,0xF6,0xFF, +0xCB,0x23,0x00,0x00,0x14,0x00,0x06,0x70,0xED,0x43,0x64,0x00,0xFC,0x22,0xFC,0x00, +0xCE,0x07,0xC8,0x51,0xF8,0xFF,0x7C,0x2B,0xFC,0x00,0xDE,0x06,0x70,0x00,0x7C,0x2B, +0xFC,0x00,0xC8,0x06,0x68,0x00,0x4B,0x2B,0x88,0x00,0x7C,0x2B,0xFC,0x00,0xF8,0x07, +0xB4,0x00,0x7C,0x2B,0xFC,0x00,0xF2,0x07,0xB8,0x00,0x7C,0x2B,0xFC,0x00,0x66,0x9F, +0x28,0x00,0x4C,0x2B,0x00,0x04,0x7C,0x2B,0xFC,0x00,0xEE,0x07,0x04,0x04,0x4C,0x2B, +0x08,0x04,0xED,0x41,0xCE,0x04,0x48,0x2B,0x56,0x04,0x3C,0x30,0x07,0x00,0x98,0x42, +0xC8,0x51,0xFC,0xFF,0xF9,0x41,0xFC,0x00,0xAE,0x09,0x7C,0x32,0x1E,0x05,0x1F,0x70, +0xD8,0x22,0xC8,0x51,0xFC,0xFF,0x00,0x61,0x50,0x20,0x3C,0x2F,0xFC,0x00,0x3A,0x05, +0x3C,0x3F,0x01,0x00,0xB9,0x4E,0xFC,0x00,0x12,0x22,0x8F,0x5C,0x3C,0x20,0x00,0x00, +0xFF,0x7F,0x00,0x61,0x82,0x01,0xC8,0x51,0xFA,0xFF,0x02,0x70,0x00,0x61,0x68,0x02, +0x39,0x10,0xFF,0xFF,0x60,0x82,0x3C,0xC0,0x03,0x00,0x3C,0xB0,0x03,0x00,0x02,0x66, +0x02,0x70,0xC0,0x13,0x00,0x00,0x4C,0x04,0x39,0x10,0xFF,0xFF,0x01,0xFA,0x18,0x6B, +0xFA,0x4D,0x06,0x00,0x00,0x60,0x14,0x0A,0xFC,0x13,0x02,0x00,0xFF,0xFF,0x60,0x82, +0xFC,0x13,0x02,0x00,0x00,0x00,0x4C,0x04,0x00,0x61,0x00,0x0B,0xB9,0x4E,0xFC,0x00, +0xF8,0xA9,0xB9,0x4E,0xFC,0x00,0x6E,0xA9,0x39,0x0C,0x01,0x00,0x00,0x00,0x4C,0x04, +0x0A,0x66,0xF9,0x33,0xFF,0xFF,0x5E,0x82,0xFF,0xFF,0x46,0x82,0x7C,0x2B,0xFC,0x00, +0x30,0x00,0x6E,0x04,0xFC,0x33,0x01,0x00,0x00,0x00,0x52,0x04,0x40,0x42,0x00,0x61, +0xF6,0x01,0xFC,0x46,0x00,0x23,0x01,0x70,0x00,0x61,0xEC,0x01,0x00,0x61,0x9A,0x46, +0xF9,0x33,0xFC,0x00,0x1E,0x00,0x00,0x00,0x40,0x88,0x00,0x61,0xD6,0x47,0x00,0x61, +0xCC,0x00,0x00,0x61,0xE4,0x00,0x00,0x61,0xDE,0x09,0x79,0x4A,0x00,0x00,0x82,0x04, +0x1E,0x67,0x00,0x61,0xC6,0x07,0xFC,0x23,0xFC,0x00,0x00,0x00,0x00,0x00,0xF2,0x04, +0x7A,0x48,0xA5,0x00,0x7A,0x48,0xA1,0x00,0x7A,0x48,0x8A,0x00,0x67,0x42,0x68,0x60, +0x00,0x61,0xA8,0x07,0xFC,0x23,0xFC,0x00,0x00,0x00,0x00,0x00,0xF2,0x04,0xFA,0x41, +0x68,0x00,0x7C,0x22,0x00,0x00,0x40,0x08,0x10,0x0C,0x23,0x00,0x02,0x66,0x49,0x24, +0xD8,0x12,0xF4,0x6A,0x39,0x10,0x00,0x00,0x46,0x04,0x3C,0xD0,0x41,0x00,0x80,0x14, +0x79,0x48,0x00,0x00,0x40,0x08,0x79,0x48,0xFC,0x00,0x37,0x05,0x7A,0x48,0x59,0x00, +0x3C,0x3F,0x05,0x00,0x3C,0x3F,0x4B,0x00,0x41,0x4E,0xFC,0xDE,0x0E,0x00,0x40,0x20, +0x79,0x21,0x00,0x00,0xFE,0x04,0x08,0x00,0x79,0x48,0x00,0x00,0x40,0x08,0x08,0x2F, +0x7A,0x48,0x35,0x00,0x3C,0x3F,0x04,0x00,0x3C,0x3F,0x4B,0x00,0x41,0x4E,0xFC,0xDE, +0x0E,0x00,0xF9,0x4E,0xFC,0x00,0x30,0x00,0x41,0x50,0x48,0x54,0x00,0x3D,0x3A,0x23, +0x00,0x5C,0xFF,0x00,0x4F,0x43,0x4D,0x4D,0x4E,0x41,0x2E,0x44,0x52,0x50,0x00,0x47, +0x45,0x47,0x2E,0x4D,0x52,0x50,0x00,0x47,0x00,0x00,0x01,0x80,0x03,0x70,0x00,0x61, +0x06,0x01,0x79,0x20,0x00,0x00,0x7A,0x04,0x90,0x4E,0x40,0x4A,0x08,0x66,0xF9,0x41, +0x00,0x00,0xDA,0x16,0x90,0x4E,0x75,0x4E,0x00,0x7E,0x2A,0x61,0x20,0x66,0x79,0x20, +0x00,0x00,0xC6,0x04,0x3C,0x32,0xFF,0x00,0x00,0x70,0x58,0xD0,0xC9,0x51,0xFC,0xFF, +0x7C,0xB0,0x34,0x12,0x08,0x66,0x79,0x20,0x00,0x00,0xC6,0x04,0x90,0x4E,0x3C,0xDE, +0x20,0x00,0xD6,0x66,0x75,0x4E,0xF9,0x4D,0xFF,0xFF,0x06,0x86,0xF9,0x4B,0xFF,0xFF, +0x04,0x86,0xF9,0x50,0x00,0x00,0x3E,0x04,0x39,0x2F,0x00,0x00,0xC6,0x04,0xEF,0x13, +0x03,0x00,0xFF,0xFF,0x0D,0x86,0xEF,0x13,0x02,0x00,0xFF,0xFF,0x0B,0x86,0xEF,0x13, +0x01,0x00,0xFF,0xFF,0x09,0x86,0x4F,0x58,0xBC,0x3C,0x98,0x00,0xBC,0x3C,0x98,0x01, +0xBC,0x3C,0x98,0x00,0xBC,0x3A,0x01,0x00,0xBC,0x3C,0x88,0x00,0x07,0x10,0x3C,0x80, +0x08,0x00,0x40,0x48,0x3C,0x30,0x8A,0x00,0x4C,0x61,0x2A,0x66,0x03,0x7C,0xFA,0x41, +0x36,0x00,0x18,0x20,0x40,0x61,0x1E,0x66,0xCE,0x51,0xF8,0xFF,0xBC,0x2A,0x00,0x00, +0x0A,0x00,0x3C,0x32,0x90,0x01,0x32,0x61,0x0C,0x66,0xBC,0x3C,0x8A,0x00,0x15,0x30, +0x7C,0xC0,0xFF,0x00,0x02,0x67,0xFF,0x70,0xBC,0x3C,0x80,0x00,0x00,0x4A,0xF9,0x51, +0x00,0x00,0x3E,0x04,0x75,0x4E,0x00,0x00,0x8A,0x00,0x00,0x00,0x8A,0x00,0x00,0x00, +0x8A,0x00,0x01,0x00,0x8A,0x00,0x80,0x2A,0x0A,0x72,0xB9,0xD2,0x00,0x00,0xBA,0x04, +0x39,0x08,0x05,0x00,0xFF,0xFF,0x01,0xFA,0x0A,0x67,0xB9,0xB2,0x00,0x00,0xBA,0x04, +0xEE,0x66,0xFF,0x72,0x75,0x4E,0xF9,0x41,0xFA,0x00,0x00,0x00,0x98,0x0C,0xCD,0xAB, +0x42,0xEF,0x1A,0x66,0x28,0x01,0x04,0x00,0x0E,0x67,0xE7,0x48,0xFE,0xFF,0x68,0x20, +0x04,0x00,0x90,0x4E,0xDF,0x4C,0xFF,0x7F,0x90,0x4A,0x50,0x20,0xE6,0x66,0x75,0x4E, +0x75,0x4E,0xC1,0xD1,0x40,0x42,0xE8,0x43,0xF8,0x01,0x58,0xB0,0x08,0x66,0x7C,0xD0, +0x54,0xFA,0xC8,0xB3,0xF4,0x66,0xD5,0x4E,0xCD,0x9B,0xAD,0x0C,0x20,0x75,0xF3,0x19, +0x20,0x04,0x12,0x66,0xAD,0x0C,0x76,0x23,0xAA,0x98,0x3A,0x04,0x08,0x66,0xAD,0x0C, +0x55,0x55,0xAA,0xAA,0x1A,0x05,0xD6,0x4E,0x77,0x07,0x00,0x07,0x70,0x00,0x70,0x07, +0x07,0x00,0x07,0x07,0x77,0x00,0x55,0x05,0x33,0x03,0x33,0x07,0x73,0x03,0x73,0x07, +0x37,0x03,0x37,0x07,0x77,0x03,0x00,0x00,0x00,0x3F,0x2F,0x30,0x02,0x00,0x7C,0xC0, +0x00,0x07,0x06,0x66,0x6F,0x00,0x00,0x03,0x02,0x00,0x1F,0x30,0x73,0x4E,0xB9,0x52, +0x00,0x00,0x66,0x04,0x79,0x53,0x00,0x00,0x52,0x04,0x00,0x6B,0xDC,0x00,0xE7,0x48, +0xFE,0xFF,0xB9,0x52,0x00,0x00,0x62,0x04,0xCD,0x9B,0x39,0x10,0xFF,0xFF,0x60,0x82, +0x3C,0xC0,0x03,0x00,0x3C,0xB0,0x02,0x00,0x18,0x6C,0x39,0x08,0x07,0x00,0xFF,0xFF, +0x01,0xFA,0x34,0x66,0x3C,0x30,0xD0,0x07,0xC8,0x51,0xFE,0xFF,0x3C,0x10,0x02,0x00, +0x16,0x60,0x39,0x08,0x07,0x00,0xFF,0xFF,0x01,0xFA,0x1C,0x67,0x2D,0x10,0x4A,0x04, +0x3C,0xB0,0x02,0x00,0x02,0x6D,0x00,0x42,0x40,0x1B,0x4C,0x04,0xC0,0x13,0xFF,0xFF, +0x60,0x82,0x6D,0x20,0x6E,0x04,0x90,0x4E,0x00,0x61,0x76,0x3F,0xCD,0x9B,0xAD,0x4A, +0x5A,0x04,0x18,0x67,0x6D,0x20,0x5A,0x04,0xF9,0x43,0xFF,0xFF,0x40,0x82,0x3C,0x30, +0x0F,0x00,0xD8,0x32,0xC8,0x51,0xFC,0xFF,0xAD,0x42,0x5A,0x04,0xAD,0x4A,0x5E,0x04, +0x1A,0x67,0x6D,0x2B,0x5E,0x04,0x4E,0x04,0x2D,0x20,0x4E,0x04,0x88,0xE0,0xC0,0x13, +0xFF,0xFF,0x03,0x82,0x48,0xE0,0xC0,0x13,0xFF,0xFF,0x01,0x82,0x00,0x61,0x36,0x14, +0x39,0x3E,0x00,0x00,0x54,0x04,0x20,0x67,0x87,0x53,0x79,0x20,0x00,0x00,0x56,0x04, +0x58,0x22,0xFC,0xB3,0x00,0x00,0x00,0x00,0x0A,0x67,0xE7,0x48,0x80,0x01,0x91,0x4E, +0xDF,0x4C,0x80,0x01,0xCF,0x51,0xEA,0xFF,0xCD,0x9B,0x6D,0x4A,0xEE,0x04,0x04,0x66, +0x00,0x61,0x8E,0x05,0xDF,0x4C,0xFF,0x7F,0x79,0x52,0x00,0x00,0x52,0x04,0x73,0x4E, +0xE7,0x40,0x7C,0x02,0xFF,0xF8,0x39,0x20,0x00,0x00,0x66,0x04,0xB9,0xB0,0x00,0x00, +0x66,0x04,0xF8,0x67,0xDF,0x46,0x75,0x4E,0x39,0x2F,0x00,0x00,0x04,0x04,0xFF,0x70, +0x75,0x4E,0xFA,0x41,0x84,0x00,0x04,0x60,0xFA,0x41,0x4C,0x00,0x79,0x22,0x00,0x00, +0xA2,0x04,0x1F,0x30,0x00,0x33,0x1F,0x23,0xE1,0x48,0x1F,0x1F,0xC9,0x23,0x00,0x00, +0xA2,0x04,0x00,0x08,0x0D,0x00,0x02,0x66,0x6F,0x4E,0x1F,0x30,0x58,0xB0,0x10,0x6C, +0x48,0xE5,0x30,0x20,0x00,0x00,0x40,0x20,0x02,0x6A,0x50,0x20,0xCD,0x9B,0x90,0x4E, +0x79,0x22,0x00,0x00,0xA2,0x04,0xD9,0x4C,0xF8,0xF8,0x19,0x2F,0x19,0x3F,0xC9,0x23, +0x00,0x00,0xA2,0x04,0x73,0x4E,0x0C,0x00,0xFC,0x00,0x46,0x0A,0xFC,0x00,0x84,0x09, +0xFC,0x00,0x8C,0x09,0xFC,0x00,0x9C,0x09,0x00,0x80,0x76,0x04,0xFC,0x00,0x72,0x0A, +0xFC,0x00,0x8A,0x0A,0x00,0x80,0x72,0x04,0xFC,0x00,0x94,0x09,0x00,0x80,0x7E,0x04, +0xFC,0x00,0x2E,0x0A,0xFC,0x00,0x34,0x0A,0x41,0x00,0xFC,0x00,0x82,0x2F,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x92,0x0A,0xFC,0x00,0xA6,0x0A,0xFC,0x00,0xAC,0x0A,0xFC,0x00, +0xB8,0x0A,0xFC,0x00,0x06,0x0B,0xFC,0x00,0x0E,0x0B,0xFC,0x00,0x82,0x17,0xFC,0x00, +0x58,0x18,0xFC,0x00,0x16,0x19,0xFC,0x00,0xC0,0x0F,0xFC,0x00,0x30,0x20,0xFC,0x00, +0x58,0x26,0xFC,0x00,0xF6,0x28,0xFC,0x00,0x0E,0x29,0xFC,0x00,0x88,0x30,0xFC,0x00, +0x10,0x15,0xFC,0x00,0xF8,0x15,0xFC,0x00,0xE2,0x1A,0xFC,0x00,0x50,0x0D,0xFC,0x00, +0xF2,0x46,0xFC,0x00,0xA4,0x0E,0xFC,0x00,0x96,0x0E,0xFC,0x00,0xB4,0x30,0xFC,0x00, +0x12,0x22,0xFC,0x00,0x82,0x26,0xFC,0x00,0xBC,0x26,0xFC,0x00,0xFE,0x2E,0xFC,0x00, +0x5C,0x2F,0xFC,0x00,0x36,0x2F,0xFC,0x00,0x4C,0x30,0xFC,0x00,0xCE,0x30,0xFC,0x00, +0xE2,0x30,0xFC,0x00,0x16,0x31,0xFC,0x00,0xF4,0x30,0xFC,0x00,0x54,0x32,0xFC,0x00, +0xD0,0x07,0xFC,0x00,0x7E,0x09,0xFC,0x00,0x34,0x0B,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0xF6,0x0E,0x6F,0x20, +0x04,0x00,0xD0,0x4E,0xF9,0x41,0x00,0x00,0x1E,0x05,0x16,0x60,0xF9,0x41,0x00,0x00, +0x3E,0x05,0x0E,0x60,0xF9,0x41,0x00,0x00,0x5E,0x05,0x06,0x60,0xF9,0x41,0x00,0x00, +0x7E,0x05,0x2F,0x30,0x04,0x00,0x48,0xE5,0x70,0x20,0x00,0x00,0xD0,0x4E,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x38,0x21,0xFC,0x00,0x26,0x22,0xFC,0x00,0x44,0x20,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x04,0x21,0xFC,0x00,0x50,0x21,0xFC,0x00,0x3C,0x22,0xFC,0x00,0x60,0x20,0xFC,0x00, +0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x24,0x21,0xFC,0x00,0x9A,0x21,0xFC,0x00,0x6C,0x22,0xFC,0x00,0xDC,0x21,0xFC,0x00, +0x04,0x20,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0xFC,0x00, +0x90,0x20,0xFC,0x00,0xB4,0x21,0xFC,0x00,0x4C,0x43,0xFC,0x00,0x16,0x20,0xFC,0x00, +0xEE,0x21,0xFC,0x00,0x40,0x43,0xFC,0x00,0x70,0x06,0xFC,0x00,0x70,0x06,0x2D,0x20, +0xC2,0x04,0x75,0x4E,0x00,0x70,0x2D,0x10,0x61,0x0E,0x2F,0x32,0x04,0x00,0x04,0x6B, +0x41,0x1B,0x61,0x0E,0x75,0x4E,0x6F,0x20,0x04,0x00,0xED,0x43,0x8E,0x04,0x89,0x20, +0xA8,0x42,0x04,0x00,0x49,0x21,0x08,0x00,0x91,0x42,0x6D,0x23,0x32,0x04,0x04,0x00, +0x2D,0x20,0x36,0x04,0xAD,0x90,0x32,0x04,0x40,0x23,0x08,0x00,0xA9,0x42,0x0C,0x00, +0x75,0x4E,0x2F,0x30,0x04,0x00,0x48,0xE5,0xC8,0x91,0xF0,0x41,0x00,0x00,0x10,0x20, +0x2F,0x22,0x06,0x00,0x02,0x6B,0x81,0x20,0x75,0x4E,0x80,0x42,0x2D,0x30,0x42,0x04, +0x75,0x4E,0x00,0x70,0x39,0x10,0xFF,0xFF,0x01,0x82,0x48,0xE1,0x39,0x10,0xFF,0xFF, +0x03,0x82,0x88,0xE1,0x75,0x4E,0x2D,0x20,0x4E,0x04,0x75,0x4E,0x00,0x70,0x2D,0x10, +0x60,0x82,0x3C,0xC0,0x03,0x00,0x75,0x4E,0xAF,0x4A,0x04,0x00,0x06,0x6B,0x6F,0x2B, +0x04,0x00,0x4E,0x04,0xAF,0x4A,0x08,0x00,0x10,0x6B,0xEF,0x13,0x09,0x00,0xFF,0xFF, +0x01,0x82,0xEF,0x13,0x0A,0x00,0xFF,0xFF,0x03,0x82,0x6F,0x4A,0x0C,0x00,0x24,0x6B, +0x6F,0x1B,0x0D,0x00,0x4C,0x04,0x00,0x61,0xE8,0xFC,0xED,0x13,0x4C,0x04,0xFF,0xFF, +0x60,0x82,0x6D,0x42,0x52,0x04,0xB9,0x4E,0xFC,0x00,0x6E,0xA9,0xFC,0x33,0x01,0x00, +0x00,0x00,0x52,0x04,0x75,0x4E,0x6F,0x2B,0x04,0x00,0x5A,0x04,0x75,0x4E,0x2F,0x32, +0x04,0x00,0x41,0xD2,0x7C,0xC2,0x1F,0x00,0xF9,0x41,0xFF,0xFF,0x40,0x82,0x30,0x30, +0x00,0x10,0x7C,0xC0,0x77,0x07,0x6F,0x4A,0x06,0x00,0x06,0x6B,0xAF,0x31,0x06,0x00, +0x00,0x10,0x75,0x4E,0x7A,0x20,0xDE,0xF4,0x90,0x0C,0x65,0x87,0x21,0x43,0x0E,0x66, +0xF9,0xB1,0x00,0x00,0x2E,0x04,0x06,0x6C,0x90,0x42,0x00,0x60,0xE4,0xF4,0x75,0x4E, +0x02,0x61,0x71,0x4E,0xDF,0x23,0x00,0x00,0xC4,0x03,0xF9,0x48,0xFF,0xFF,0x00,0x00, +0x84,0x03,0x68,0x4E,0xC8,0x23,0x00,0x00,0xC8,0x03,0x0F,0x70,0xF9,0x41,0x00,0x00, +0xCC,0x03,0x4F,0x22,0xD9,0x30,0xC8,0x51,0xFC,0xFF,0xFC,0x23,0x34,0x12,0x78,0x56, +0x00,0x00,0x80,0x03,0x00,0x72,0x39,0x12,0x00,0x00,0xC4,0x03,0x41,0x53,0x16,0x61, +0xFC,0x23,0x00,0x00,0x3A,0x09,0x00,0x00,0xA2,0x04,0x3C,0x3F,0x01,0x00,0xA7,0x42, +0x41,0x4E,0x00,0x60,0x8C,0xF4,0x39,0x1E,0xFF,0xFF,0x60,0x82,0x7C,0xCE,0x03,0x00, +0x47,0xDE,0x80,0x42,0x39,0x10,0xFF,0xFF,0x01,0x82,0x48,0xE1,0x39,0x10,0xFF,0xFF, +0x03,0x82,0x88,0xE1,0x40,0x20,0xFB,0xD0,0x2C,0x70,0xF9,0x43,0xFC,0x00,0xFA,0x0D, +0x3C,0x3C,0x0F,0x00,0x01,0x34,0x48,0x24,0x3B,0x3A,0x22,0x70,0xD1,0x30,0xCD,0x51, +0xFC,0xFF,0xCA,0x51,0xF4,0xFF,0x49,0x54,0xFB,0xD4,0x1A,0x70,0x4A,0x20,0xCE,0x51, +0xE4,0xFF,0x75,0x4E,0x80,0x3E,0x80,0x3E,0x80,0x3E,0x80,0x3E,0x03,0x00,0x01,0x00, +0x00,0x00,0x00,0x00,0xA0,0x00,0xA0,0x00,0x50,0x00,0x50,0x00,0x6F,0x20,0x04,0x00, +0x6F,0x22,0x08,0x00,0x3C,0x30,0x3F,0x00,0xD8,0x12,0xD8,0x12,0xD8,0x12,0xD8,0x12, +0xD8,0x12,0xD8,0x12,0xD8,0x12,0xD8,0x12,0xC8,0x51,0xEE,0xFF,0x75,0x4E,0x39,0x2F, +0x00,0x00,0x6A,0x04,0x75,0x4E,0x41,0x5C,0x54,0x55,0x5C,0x4F,0x2E,0x2A,0x52,0x50, +0x00,0x47,0x34,0x12,0x78,0x56,0xBC,0x9A,0xF0,0xDE,0xFA,0x41,0xEA,0xFF,0xFA,0x43, +0xEC,0xFF,0xDF,0x23,0x00,0x00,0x80,0x09,0xCD,0x9B,0x48,0x2B,0x84,0x09,0x49,0x2B, +0x88,0x09,0x2D,0x20,0xC2,0x04,0x39,0x32,0x00,0x00,0x46,0x04,0x00,0x03,0x36,0x67, +0xFA,0x41,0xC5,0xF8,0x08,0x2F,0x08,0x2F,0x08,0x2F,0x3C,0x3F,0x05,0x00,0x3C,0x3F, +0x4B,0x00,0x41,0x4E,0xFC,0xDE,0x10,0x00,0x40,0x20,0x7C,0x21,0xFC,0x00,0xAE,0x0C, +0x08,0x00,0x0B,0x2F,0x00,0x2F,0x0B,0x2F,0x3C,0x3F,0x04,0x00,0x3C,0x3F,0x4B,0x00, +0x41,0x4E,0xFC,0xDE,0x10,0x00,0x39,0x2F,0x00,0x00,0x80,0x09,0x75,0x4E,0xA7,0x42, +0x3C,0x3F,0x20,0x00,0x41,0x4E,0x4F,0x5C,0x40,0x28,0x6F,0x2A,0x04,0x00,0xED,0x4F, +0x00,0x01,0x3C,0x2F,0x00,0x00,0x00,0x01,0x0D,0x2F,0x67,0x42,0x3C,0x3F,0x4A,0x00, +0x41,0x4E,0x4F,0x5C,0x40,0x4A,0x6A,0x66,0x3C,0x3F,0x07,0x00,0x39,0x2F,0x00,0x00, +0x84,0x09,0x3C,0x3F,0x4E,0x00,0x08,0x7E,0x79,0x48,0x00,0x00,0x8C,0x09,0x3C,0x3F, +0x1A,0x00,0x41,0x4E,0x4F,0x5C,0x41,0x4E,0xC7,0xDE,0x40,0x4A,0x44,0x66,0x79,0x20, +0x00,0x00,0x84,0x09,0x79,0x24,0x00,0x00,0x88,0x09,0xF9,0x43,0x00,0x00,0xB8,0x09, +0xD8,0x12,0xC8,0xB5,0xFA,0x66,0xF9,0x41,0x00,0x00,0xAA,0x09,0xD8,0x12,0xFC,0x66, +0x7A,0x48,0x15,0xF8,0x7A,0x48,0x11,0xF8,0x79,0x48,0x00,0x00,0xB8,0x09,0x67,0x42, +0x3C,0x3F,0x4B,0x00,0x41,0x4E,0xFC,0xDE,0x10,0x00,0x02,0x7E,0x3C,0x3F,0x4F,0x00, +0xA6,0x60,0xF9,0x4F,0x00,0x00,0x5A,0x75,0x39,0x2F,0x00,0x00,0x80,0x09,0x75,0x4E, +0x79,0x20,0x00,0x00,0x02,0x05,0x90,0x4E,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04, +0x75,0x4E,0xCD,0x9B,0x6D,0x2B,0x4E,0x04,0xD8,0x09,0x6D,0x42,0xDC,0x09,0x40,0x42, +0x2D,0x10,0x4C,0x04,0x40,0x3B,0xE6,0x09,0x40,0xD0,0xFA,0x41,0x6A,0x00,0x70,0x3B, +0x00,0x00,0xDE,0x09,0x70,0x3B,0x06,0x00,0xE0,0x09,0x6D,0x42,0xE2,0x09,0x6D,0x42, +0xE4,0x09,0x7C,0x2B,0xFF,0x00,0x40,0x82,0xEA,0x09,0x6D,0x42,0xF2,0x09,0x2D,0x32, +0x90,0x0E,0x49,0xE6,0x7C,0xC2,0x01,0x00,0x41,0x3B,0xE8,0x09,0x2D,0x32,0x90,0x0E, +0x01,0x30,0x48,0xE8,0x7C,0xC0,0x01,0x00,0x40,0x3B,0xF0,0x09,0x7C,0xC2,0x07,0x00, +0x3B,0x10,0x30,0x10,0xC0,0x33,0x00,0x00,0xEE,0x09,0x6D,0x48,0xD8,0x09,0xFC,0x33, +0x01,0x00,0x00,0x00,0xEE,0x04,0x00,0x61,0x7C,0x24,0xFC,0x33,0xFF,0xFF,0x00,0x00, +0xEE,0x04,0x4F,0x58,0x75,0x4E,0x40,0x01,0x80,0x02,0x80,0x02,0xC8,0x00,0xC8,0x00, +0x90,0x01,0x02,0x00,0xFF,0x01,0xFF,0x03,0xFF,0xFF,0x00,0x06,0x00,0x29,0x80,0x00, +0x40,0x48,0xF0,0x11,0xF0,0x01,0xFC,0x07,0xFE,0x0F,0xFE,0x0D,0xFF,0x1F,0xEF,0x1F, +0xEE,0x0F,0xDE,0x0F,0xFC,0x07,0xF8,0x03,0xE0,0x00,0xF9,0x41,0xFF,0xFF,0x21,0xFA, +0xF9,0x43,0xFF,0xFF,0x1B,0xFA,0xBC,0x12,0x10,0x00,0x01,0x78,0xBC,0x12,0x00,0x00, +0xBC,0x10,0xF0,0x00,0xFC,0x13,0x08,0x00,0xFF,0xFF,0x1B,0xFA,0x10,0x10,0x04,0xB0, +0xFA,0x66,0x10,0x18,0x3C,0x36,0x67,0x02,0x10,0xB8,0xF6,0x66,0xCB,0x51,0xFA,0xFF, +0xBC,0x12,0x10,0x00,0xD6,0x4E,0x79,0x20,0x00,0x00,0x2E,0x04,0xFC,0x90,0x00,0x02, +0xFC,0xB1,0x00,0x00,0x00,0x04,0x2C,0x67,0x90,0x0C,0x12,0x12,0x56,0x34,0xEC,0x66, +0xE8,0xB1,0x04,0x00,0xE6,0x66,0x40,0x42,0x48,0x22,0x3C,0x32,0xFF,0x00,0x59,0xD0, +0xC9,0x51,0xFC,0xFF,0x7C,0xB0,0x78,0x56,0xD2,0x66,0x08,0x2F,0xA8,0x4E,0x08,0x00, +0x5F,0x20,0xC8,0x60,0x75,0x4E,0xF9,0x47,0xFC,0x00,0x9E,0x4C,0xF9,0x49,0xFC,0x00, +0x52,0x1F,0x0C,0x60,0xF9,0x47,0xFC,0x00,0x5C,0x4D,0xF9,0x49,0xFC,0x00,0x6C,0x1F, +0x00,0x61,0xB4,0x3D,0x02,0x64,0x4C,0x26,0xD3,0x4E,0xFA,0x41,0x44,0xF1,0xF9,0x43, +0x00,0x00,0x40,0x09,0x2F,0x70,0xB0,0x13,0x00,0x00,0x00,0x00,0xC8,0x51,0xF8,0xFF, +0x7A,0x33,0x1C,0x00,0xFA,0xFF,0x69,0x23,0x04,0x00,0xFC,0xFF,0xBA,0x32,0x16,0x00, +0x69,0x33,0x1E,0x00,0x1C,0x00,0xC9,0x23,0x00,0x00,0xF2,0x04,0x75,0x4E,0xF9,0x4E, +0x00,0x00,0x00,0x00,0xF8,0x60,0x22,0x61,0x00,0x38,0x00,0x3A,0x4D,0xE2,0x7C,0x8A, +0xFE,0xFF,0x00,0x61,0x5C,0x3F,0x00,0x36,0x2F,0x30,0x04,0x00,0x08,0x6B,0x45,0xC0, +0x44,0x80,0x00,0x61,0x24,0x3F,0x03,0x30,0x75,0x4E,0xC1,0x40,0x3C,0x30,0x00,0x00, +0xC8,0x91,0x4F,0x24,0x7C,0x00,0x00,0x07,0x68,0x22,0x08,0x00,0x7C,0x21,0xFC,0x00, +0x3A,0x0F,0x08,0x00,0x68,0x4A,0x00,0x8A,0x02,0x70,0x49,0x21,0x08,0x00,0xC1,0x46, +0x4A,0x2E,0x75,0x4E,0x56,0x4E,0xF0,0xFF,0xFC,0x23,0x00,0x00,0x2C,0x01,0x00,0x00, +0x46,0x2A,0x40,0x42,0xC0,0x33,0x00,0x00,0xA6,0x04,0xC0,0x33,0x00,0x00,0xC4,0x7D, +0x40,0x3D,0xFE,0xFF,0x4E,0x60,0x7C,0x20,0x00,0x00,0x5A,0x75,0x6E,0x32,0xFE,0xFF, +0xC9,0xD1,0x10,0x42,0x57,0x42,0x67,0x42,0x67,0x42,0x2E,0x3F,0xFE,0xFF,0xA7,0x42, +0xA7,0x42,0xB9,0x4E,0xFC,0x00,0x3A,0x17,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x00,0x3F, +0x6E,0x30,0xFE,0xFF,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x62,0x80,0x9F,0x30,0x10,0x66, +0x79,0x52,0x00,0x00,0xA6,0x04,0xB9,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xC2,0x04, +0x6E,0x52,0xFE,0xFF,0x6E,0x0C,0x02,0x00,0xFE,0xFF,0xAA,0x6D,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0x80,0x42,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF4,0xFF,0xE7,0x48, +0x0C,0x07,0x6E,0x0C,0x02,0x00,0x08,0x00,0x06,0x6D,0x80,0x42,0x00,0x60,0x92,0x01, +0x2E,0x30,0x08,0x00,0x40,0xEB,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x70,0x75, +0x4D,0x28,0xBC,0x3E,0x01,0x00,0x67,0x42,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x3F, +0x08,0x00,0xA7,0x42,0x3C,0x2F,0x00,0x00,0xDA,0x16,0xB9,0x4E,0xFC,0x00,0x82,0x17, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x40,0x2D,0xF4,0xFF,0xAE,0x4A,0xF4,0xFF,0x16,0x6C, +0xAE,0x3E,0x08,0x00,0x2E,0x20,0xF4,0xFF,0x00,0x3F,0xB9,0x4E,0xFC,0x00,0xE8,0x07, +0x8F,0x54,0x40,0x2D,0xF4,0xFF,0x2E,0x20,0xF4,0xFF,0xBC,0xB0,0x01,0x00,0x00,0x00, +0xB0,0x67,0xAE,0x4A,0xF4,0xFF,0x06,0x6C,0x80,0x42,0x00,0x60,0x24,0x01,0xBC,0x2E, +0x00,0x00,0xE5,0x16,0x00,0x61,0xBE,0x06,0x00,0x3E,0x0E,0x6F,0x39,0x1C,0x00,0x00, +0xE7,0x16,0x86,0x48,0x7C,0xCC,0xFF,0x00,0x06,0x6E,0x80,0x42,0x00,0x60,0x02,0x01, +0x87,0x38,0x46,0x39,0x02,0x00,0xBC,0x2E,0x00,0x00,0xF0,0x16,0x00,0x61,0x96,0x06, +0x40,0x39,0x08,0x00,0x2C,0x30,0x08,0x00,0x40,0x52,0x40,0x39,0x0A,0x00,0x14,0x30, +0xEC,0xC1,0x02,0x00,0x40,0x39,0x04,0x00,0xBC,0x2E,0x00,0x00,0xEB,0x16,0x00,0x61, +0x74,0x06,0x40,0xEB,0xC0,0x48,0xD4,0x81,0x40,0x39,0x06,0x00,0x2C,0x30,0x0A,0x00, +0x6C,0xD0,0x06,0x00,0x6C,0xD0,0x08,0x00,0x40,0x39,0x0C,0x00,0xBC,0x2E,0x00,0x00, +0xED,0x16,0x00,0x61,0x50,0x06,0x6C,0x90,0x0C,0x00,0xC0,0x48,0xEC,0x81,0x02,0x00, +0x40,0x39,0x0E,0x00,0xBC,0x2E,0x00,0x00,0xF4,0x16,0x00,0x61,0x38,0x06,0x40,0x3B, +0x14,0x00,0xBC,0x2E,0x00,0x00,0xF2,0x16,0x00,0x61,0x2A,0x06,0x40,0x3B,0x18,0x00, +0x2D,0x30,0x14,0x00,0xED,0xC1,0x18,0x00,0x40,0x3B,0x16,0x00,0xBC,0x2E,0x00,0x00, +0xF6,0x16,0x00,0x61,0x10,0x06,0x40,0x3B,0x1A,0x00,0xBC,0x2E,0x00,0x00,0xED,0x16, +0x00,0x61,0x02,0x06,0xC0,0x48,0xED,0x81,0x16,0x00,0x40,0x3B,0x12,0x00,0x47,0x42, +0x16,0x60,0x4D,0x20,0x47,0x32,0xC9,0xD1,0x47,0x32,0xFC,0xD3,0x00,0x00,0xDA,0x16, +0x69,0x11,0x08,0x00,0x1C,0x00,0x47,0x52,0x7C,0xBE,0x03,0x00,0xE4,0x6D,0x7C,0x20, +0x00,0x00,0xFA,0x09,0x6E,0x32,0x08,0x00,0xC9,0xD1,0x7C,0x22,0x00,0x00,0xF8,0x09, +0x6E,0x34,0x08,0x00,0xCA,0xD3,0x91,0x10,0x04,0x67,0x01,0x70,0x02,0x60,0x40,0x42, +0x7C,0x22,0x00,0x00,0x5A,0x75,0x6E,0x34,0x08,0x00,0xCA,0xD3,0x80,0x12,0x0D,0x20, +0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x03,0x6E,0x0C,0x02,0x00,0x08,0x00,0x04,0x6D,0xF1,0x70,0x4C,0x60,0x2E,0x3E, +0x08,0x00,0x47,0x3A,0xFC,0xDB,0x00,0x00,0x5A,0x75,0x15,0x0C,0x02,0x00,0x04,0x66, +0x02,0x70,0x36,0x60,0x7C,0x20,0x00,0x00,0xFA,0x09,0x30,0x4A,0x00,0x70,0x04,0x67, +0xBC,0x1A,0x01,0x00,0x39,0x20,0x00,0x00,0xBA,0x04,0x47,0x32,0xC9,0xD3,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0xFC,0x09,0x11,0x22,0x81,0x90,0xB9,0xB0,0x00,0x00,0x46,0x2A, +0x04,0x6C,0x40,0x42,0x04,0x60,0x15,0x10,0x80,0x48,0x9F,0x4A,0xDF,0x4C,0x80,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F,0x2E,0x3C,0x08,0x00, +0x06,0x30,0x40,0xEB,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x70,0x75,0x86,0x3E, +0x00,0x61,0x78,0xFF,0x00,0x3E,0x7C,0xBE,0x02,0x00,0x0A,0x66,0x07,0x30,0x00,0x60, +0x9C,0x00,0x00,0x60,0x96,0x00,0x7C,0xBE,0x01,0x00,0x00,0x66,0x8E,0x00,0xBC,0x3E, +0x01,0x00,0x67,0x42,0x67,0x42,0x3C,0x3F,0x01,0x00,0x06,0x3F,0xA7,0x42,0x3C,0x2F, +0x00,0x00,0xDA,0x16,0xB9,0x4E,0xFC,0x00,0x82,0x17,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x00,0x2A,0x85,0x4A,0x10,0x6C,0x86,0x3E,0x05,0x20,0x00,0x3F,0xB9,0x4E,0xFC,0x00, +0xE8,0x07,0x8F,0x54,0x00,0x2A,0xBC,0xBA,0x01,0x00,0x00,0x00,0xC0,0x67,0x85,0x4A, +0x04,0x6C,0x05,0x20,0x46,0x60,0x47,0x42,0x1C,0x60,0x7C,0x20,0x00,0x00,0xDA,0x16, +0x30,0x10,0x08,0x70,0x80,0x48,0x35,0x12,0x1C,0x70,0x81,0x48,0x41,0xB0,0x04,0x67, +0x02,0x70,0x28,0x60,0x47,0x52,0x7C,0xBE,0x03,0x00,0xDE,0x6D,0x46,0x30,0xFC,0xD1, +0x00,0x00,0xFA,0x09,0x46,0x32,0xFC,0xD3,0x00,0x00,0xF8,0x09,0x91,0x10,0x0A,0x66, +0x46,0x30,0xFC,0xD1,0x00,0x00,0x5A,0x75,0x10,0x42,0x40,0x42,0x9F,0x4A,0xDF,0x4C, +0xE0,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3E, +0x12,0x00,0x07,0x30,0x7C,0xB0,0x02,0x00,0x06,0x6D,0xF1,0x70,0x00,0x60,0x68,0x00, +0x79,0x4A,0x00,0x00,0xA6,0x04,0x04,0x66,0xFE,0x70,0x5A,0x60,0xAE,0x4A,0x0A,0x00, +0x16,0x66,0x2E,0x30,0x0E,0x00,0x7C,0x22,0x00,0x00,0x5A,0x75,0x6E,0x34,0x12,0x00, +0xCA,0xD3,0x80,0x12,0x80,0x42,0x3E,0x60,0x6E,0x0C,0x02,0x00,0x08,0x00,0x1C,0x6C, +0x87,0x3E,0x00,0x61,0xE0,0xFE,0xC0,0x48,0x00,0x2C,0x86,0x4A,0x0E,0x67,0xBC,0xBC, +0x00,0x00,0x02,0x00,0x02,0x66,0xF2,0x7C,0x06,0x20,0x1A,0x60,0xAE,0x3E,0x0E,0x00, +0x07,0x3F,0x2E,0x3F,0x10,0x00,0x2E,0x2F,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x10,0x61, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x04,0x3F,0x2E,0x30,0x10,0x00,0x40,0xEB,0xC0,0x48, +0x40,0x2A,0xFC,0xDB,0x00,0x00,0x70,0x75,0x2E,0x08,0x00,0x00,0x0D,0x00,0x04,0x66, +0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFE,0xFF,0x6D,0x4A,0x16,0x00,0x0A,0x66, +0x09,0x70,0x40,0x3B,0x16,0x00,0x40,0x3B,0x18,0x00,0x00,0x60,0x80,0x01,0x6E,0x4A, +0xFE,0xFF,0x08,0x67,0x3C,0x20,0x00,0x00,0xDA,0x16,0x04,0x60,0x2E,0x20,0x0A,0x00, +0x40,0x2D,0xFA,0xFF,0x2E,0x3C,0x0E,0x00,0xC6,0x48,0xED,0x8D,0x16,0x00,0x2E,0x38, +0x0E,0x00,0xC4,0x48,0xED,0x89,0x16,0x00,0x44,0x48,0x6D,0xB8,0x18,0x00,0x04,0x6C, +0x45,0x42,0x06,0x60,0x01,0x7A,0x6D,0x98,0x18,0x00,0x6E,0x4A,0xFE,0xFF,0x04,0x67, +0x01,0x76,0x18,0x60,0x2D,0x30,0x18,0x00,0x44,0x90,0x6E,0xB0,0x12,0x00,0x08,0x6C, +0x2D,0x36,0x18,0x00,0x44,0x96,0x04,0x60,0x2E,0x36,0x12,0x00,0x44,0x52,0x2E,0x08, +0x00,0x00,0x09,0x00,0x00,0x67,0x80,0x00,0x2E,0x20,0xFA,0xFF,0xAE,0xB0,0x0A,0x00, +0x10,0x67,0xAE,0x2E,0xFA,0xFF,0x2E,0x2F,0x0A,0x00,0xB9,0x4E,0xFC,0x00,0x0C,0x0C, +0x8F,0x58,0x83,0x3E,0x05,0x3F,0x06,0x3F,0x04,0x3F,0x2E,0x3F,0x10,0x00,0xA7,0x42, +0x2E,0x2F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0x58,0x18,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x00,0x2E,0x87,0x4A,0x3E,0x66,0x79,0x4A,0x00,0x00,0x44,0x04,0x36,0x67,0x83,0x3E, +0x05,0x3F,0x06,0x3F,0x04,0x3F,0x2E,0x3F,0x10,0x00,0xA7,0x42,0x3C,0x2F,0x00,0x00, +0xDA,0x16,0xB9,0x4E,0xFC,0x00,0xE2,0x1A,0xFC,0xDF,0x00,0x00,0x10,0x00,0x00,0x2E, +0x87,0x4A,0x10,0x66,0xBC,0x2E,0x00,0x00,0xDA,0x16,0x00,0x61,0xB8,0x02,0x40,0x4A, +0x02,0x67,0xF0,0x7E,0x3A,0x60,0x83,0x3E,0x05,0x3F,0x06,0x3F,0x04,0x3F,0x2E,0x3F, +0x10,0x00,0xA7,0x42,0x2E,0x2F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0x82,0x17,0xFC,0xDF, +0x00,0x00,0x10,0x00,0x00,0x2E,0x2E,0x20,0xFA,0xFF,0xAE,0xB0,0x0A,0x00,0x10,0x67, +0xAE,0x2E,0x0A,0x00,0x2E,0x2F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0x0C,0x0C,0x8F,0x58, +0x87,0x4A,0x32,0x6C,0xAE,0x3E,0x10,0x00,0x07,0x20,0x00,0x3F,0xB9,0x4E,0xFC,0x00, +0xE8,0x07,0x8F,0x54,0x00,0x2E,0x6E,0x0C,0x02,0x00,0x08,0x00,0x18,0x6C,0xBC,0xBE, +0x01,0x00,0x00,0x00,0x10,0x66,0xAE,0x3E,0x10,0x00,0x00,0x61,0x18,0xFD,0x7C,0xB0, +0x02,0x00,0x02,0x66,0xF2,0x7E,0xBC,0xBE,0x01,0x00,0x00,0x00,0x00,0x67,0x00,0xFF, +0x87,0x4A,0x04,0x6C,0x07,0x20,0x1E,0x60,0x03,0x30,0xC0,0x48,0x09,0x72,0xA0,0xE3, +0xAE,0xD1,0x0A,0x00,0x6E,0xD7,0x0E,0x00,0x6E,0x97,0x12,0x00,0x6E,0x4A,0x12,0x00, +0x00,0x66,0x7C,0xFE,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xF8,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0xB9,0x4A,0x00,0x00,0x4A,0x2A,0x16,0x66,0x39,0x20,0x00,0x00, +0xBA,0x04,0x10,0x72,0xA0,0xE3,0xB9,0x80,0x00,0x00,0xBA,0x04,0xC0,0x23,0x00,0x00, +0x4A,0x2A,0x3C,0x2F,0x40,0xBB,0x2D,0xE6,0x39,0x2F,0x00,0x00,0x4A,0x2A,0xB9,0x4E, +0xFC,0x00,0x82,0x4B,0x8F,0x50,0x80,0x52,0xC0,0x23,0x00,0x00,0x4A,0x2A,0x39,0x20, +0x00,0x00,0x4A,0x2A,0x80,0xE0,0xBC,0xC0,0xFF,0x00,0xFF,0xFF,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0xB9,0x4E,0xFC,0x00,0x2E,0x0C,0x79,0x4A, +0x00,0x00,0xA6,0x04,0x04,0x67,0x01,0x70,0x02,0x60,0x02,0x70,0x00,0x3E,0x79,0x4A, +0x00,0x00,0xA6,0x04,0x44,0x67,0x79,0x0C,0x02,0x00,0x00,0x00,0x46,0x04,0x3A,0x6C, +0xBC,0x3E,0x01,0x00,0x67,0x42,0x67,0x42,0x3C,0x3F,0x01,0x00,0x39,0x3F,0x00,0x00, +0x46,0x04,0xA7,0x42,0x3C,0x2F,0x00,0x00,0xDA,0x16,0xB9,0x4E,0xFC,0x00,0x82,0x17, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x80,0x4A,0x04,0x66,0x47,0x42,0x0C,0x60,0x39,0x4A, +0x00,0x00,0xF8,0x09,0x04,0x66,0x03,0x70,0x24,0x60,0x47,0x4A,0x04,0x67,0x07,0x30, +0x1C,0x60,0xBC,0x3E,0x00,0x01,0x3C,0x2F,0x00,0x00,0xDA,0x16,0x00,0x61,0x06,0x01, +0x8F,0x58,0x7C,0xB0,0x34,0x12,0x04,0x66,0x40,0x42,0x02,0x60,0x04,0x70,0x9F,0x4A, +0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x04,0x07, +0x6E,0x4A,0x12,0x00,0x1E,0x6C,0xBC,0x3E,0x00,0x01,0x2E,0x2F,0x08,0x00,0x00,0x61, +0xD4,0x00,0x8F,0x58,0x7C,0xB0,0x34,0x12,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70, +0x40,0x3D,0x12,0x00,0xAE,0x4A,0x0C,0x00,0x3E,0x6D,0x2E,0x20,0x0C,0x00,0xBC,0xB0, +0xFF,0x00,0xFF,0xFF,0x08,0x6F,0x00,0x61,0xD8,0xFE,0x40,0x2D,0x0C,0x00,0x47,0x42, +0x20,0x60,0x2E,0x20,0x0C,0x00,0xBC,0xC0,0x00,0x00,0xFF,0x00,0x47,0x32,0xEE,0xD3, +0x08,0x00,0x40,0x13,0x08,0x00,0x2E,0x20,0x0C,0x00,0x80,0xE0,0x40,0x2D,0x0C,0x00, +0x47,0x52,0x7C,0xBE,0x03,0x00,0xDA,0x6D,0x6E,0x4A,0x10,0x00,0x28,0x6D,0x2E,0x3C, +0x10,0x00,0xFC,0xCD,0x13,0x00,0x47,0x42,0x16,0x60,0x47,0x30,0xEE,0xD1,0x08,0x00, +0x46,0x32,0xFC,0xD3,0xFD,0x00,0x8C,0x2F,0x51,0x11,0x0B,0x00,0x46,0x52,0x47,0x52, +0x7C,0xBE,0x13,0x00,0xE4,0x6D,0x6E,0x42,0xFA,0xFF,0x6E,0x2D,0x08,0x00,0xFC,0xFF, +0x0E,0x60,0x6E,0x20,0xFC,0xFF,0x10,0x30,0x6E,0xD1,0xFA,0xFF,0xAE,0x54,0xFC,0xFF, +0x2E,0x20,0x08,0x00,0xBC,0xD0,0x00,0x00,0xFE,0x01,0xAE,0xB0,0xFC,0xFF,0xE2,0x62, +0x3C,0x30,0x34,0x12,0x6E,0x90,0xFA,0xFF,0x6E,0x22,0xFC,0xFF,0x80,0x32,0x6E,0x4A, +0x12,0x00,0x06,0x66,0x6E,0x20,0xFC,0xFF,0x50,0x52,0x9F,0x4A,0xDF,0x4C,0xC0,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x47,0x42,0x0C,0x60, +0x6E,0x20,0x08,0x00,0x10,0x30,0x40,0xDE,0xAE,0x54,0x08,0x00,0x2E,0x30,0x0C,0x00, +0x6E,0x53,0x0C,0x00,0x40,0x4A,0xE8,0x66,0x07,0x30,0x9F,0x4A,0xDF,0x4C,0x80,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x6E,0x20,0x08,0x00,0x28,0x10,0x01,0x00, +0x80,0x48,0x7C,0xC0,0xFF,0x00,0x40,0xE1,0x6E,0x22,0x08,0x00,0x11,0x12,0x81,0x48, +0x7C,0xC2,0xFF,0x00,0x41,0x80,0x5E,0x4E,0x75,0x4E,0xF9,0x43,0x00,0x00,0x4C,0x0A, +0x6F,0x4A,0x0C,0x00,0x06,0x67,0xF9,0x43,0x00,0x00,0x50,0x0A,0x79,0x33,0x00,0x00, +0x40,0x04,0x02,0x00,0xFF,0x70,0x69,0x42,0x00,0x00,0x00,0x61,0xEC,0x04,0x00,0x61, +0xB4,0x06,0x7C,0x33,0x00,0xFF,0x00,0x00,0x00,0x61,0x36,0x06,0x0C,0x67,0x0A,0x7E, +0x00,0x61,0xBC,0x05,0x08,0x66,0x00,0x61,0x28,0x06,0x00,0x67,0x5E,0x05,0x00,0x60, +0x4C,0x05,0x00,0x61,0x3A,0x07,0xF5,0x70,0x00,0x61,0xBE,0x04,0x00,0x61,0x86,0x06, +0x00,0x61,0xE8,0x05,0x00,0x66,0x88,0x00,0xFC,0x33,0xFF,0xFF,0x00,0x00,0x26,0x0A, +0xBC,0x3C,0x90,0x00,0xBC,0x3C,0x90,0x01,0xBC,0x3C,0x90,0x00,0xFC,0x33,0x01,0x00, +0xFF,0xFF,0x04,0x86,0xBC,0x3C,0x80,0x00,0x3C,0x3E,0x80,0x00,0x00,0x61,0xD2,0x06, +0x3C,0x2E,0x04,0x00,0x00,0x00,0x39,0x08,0x05,0x00,0xFF,0xFF,0x01,0xFA,0x10,0x67, +0x87,0x53,0xF2,0x66,0x7C,0x3B,0xFE,0xFF,0x26,0x0A,0x00,0x61,0x1E,0x06,0x3E,0x60, +0xBC,0x3C,0x90,0x00,0x16,0x30,0x00,0x08,0x00,0x00,0x32,0x67,0xBC,0x3C,0x80,0x00, +0x00,0x61,0xB2,0x06,0x3C,0xC0,0x1C,0x00,0x22,0x66,0x7C,0x3B,0x02,0x00,0xF6,0x09, +0x6D,0x52,0x0C,0x0A,0xAD,0x06,0x00,0x00,0x00,0x02,0x12,0x0A,0x6D,0x53,0x10,0x0A, +0x00,0x67,0xC8,0x04,0x00,0x61,0x26,0x06,0x00,0x60,0x7E,0xFF,0x18,0x61,0x6D,0x0C, +0x01,0x00,0xF6,0x09,0x04,0x66,0x00,0x61,0x1E,0x05,0x6D,0x53,0xF6,0x09,0x00,0x6A, +0x5C,0xFF,0x00,0x60,0x98,0x04,0xF3,0x72,0x00,0x08,0x06,0x00,0x14,0x66,0xF8,0x72, +0x00,0x08,0x04,0x00,0x0C,0x66,0xFC,0x72,0x00,0x08,0x03,0x00,0x04,0x66,0x2D,0x32, +0x24,0x0A,0x41,0x3B,0x26,0x0A,0x75,0x4E,0x00,0x61,0x64,0x06,0xF6,0x70,0x00,0x61, +0xE8,0x03,0x2D,0x30,0x0C,0x0A,0x40,0x53,0x6D,0x80,0x0A,0x0A,0x6D,0x80,0x0E,0x0A, +0x06,0x66,0x02,0x70,0x00,0x61,0x80,0x06,0x00,0x61,0x9A,0x05,0x00,0x61,0xFC,0x04, +0x00,0x66,0x84,0x00,0x7C,0x3B,0xFF,0xFF,0x26,0x0A,0xBC,0x3C,0x90,0x01,0xBC,0x3C, +0x90,0x00,0xBC,0x3C,0x90,0x01,0x3C,0x3E,0x01,0x00,0x00,0x61,0xF4,0x05,0xBC,0x3C, +0x80,0x01,0x3C,0x3E,0xA0,0x00,0x00,0x61,0xE8,0x05,0x3C,0x2E,0x04,0x00,0x00,0x00, +0x39,0x08,0x05,0x00,0xFF,0xFF,0x01,0xFA,0x0A,0x67,0x87,0x53,0xF2,0x66,0x00,0x61, +0x3A,0x05,0x3A,0x60,0xBC,0x3C,0x80,0x01,0x00,0x61,0xDA,0x05,0x00,0x61,0x68,0xFF, +0x00,0x08,0x06,0x00,0x00,0x66,0xF6,0x03,0x3C,0xC0,0x5C,0x00,0x20,0x66,0x7C,0x3B, +0x02,0x00,0xF6,0x09,0x6D,0x52,0x0C,0x0A,0xAD,0x06,0x00,0x00,0x00,0x02,0x12,0x0A, +0x6D,0x53,0x10,0x0A,0x00,0x67,0xE4,0x03,0x00,0x61,0x42,0x05,0x86,0x60,0x6D,0x0C, +0x01,0x00,0xF6,0x09,0x04,0x66,0x00,0x61,0x3E,0x04,0x6D,0x53,0xF6,0x09,0x00,0x6A, +0x68,0xFF,0x00,0x60,0xB8,0x03,0xAF,0x0C,0x65,0x87,0x21,0x43,0x16,0x00,0x00,0x66, +0xAC,0x03,0x00,0x61,0x9A,0x05,0xFF,0x70,0x00,0x61,0x1E,0x03,0x00,0x61,0xE6,0x04, +0x6F,0x3B,0x0E,0x00,0x16,0x0A,0x6F,0x3B,0x14,0x00,0x18,0x0A,0x6F,0x3B,0x1A,0x00, +0x1A,0x0A,0x6F,0x2B,0x08,0x00,0x1C,0x0A,0x02,0x70,0x00,0x61,0xAA,0x05,0x00,0x61, +0xD8,0x03,0x00,0x66,0x78,0x03,0x6D,0x33,0x0A,0x0A,0x00,0x00,0x7C,0x3B,0xFF,0xFF, +0x26,0x0A,0x28,0x61,0x00,0x66,0x66,0x03,0x6D,0x3B,0x16,0x0A,0x10,0x0A,0x7C,0x3B, +0x01,0x00,0x0C,0x0A,0x00,0x61,0x88,0x01,0x6D,0x24,0x12,0x0A,0x52,0x4A,0x00,0x67, +0x5A,0x03,0x7C,0x3B,0xF0,0xFF,0x26,0x0A,0x00,0x60,0x42,0x03,0x7C,0x3B,0xF6,0xFF, +0x24,0x0A,0x6D,0x24,0x12,0x0A,0x6D,0x26,0x1C,0x0A,0x3C,0x32,0x3B,0x00,0x3C,0x10, +0x4E,0x00,0x00,0x61,0x36,0x01,0x43,0x42,0x6D,0x4A,0x18,0x0A,0x00,0x6B,0xFA,0x00, +0x3C,0x36,0x01,0x00,0x03,0x38,0x3C,0x32,0x0B,0x00,0x00,0x42,0x00,0x61,0x1C,0x01, +0x3C,0x32,0x02,0x00,0x3C,0x10,0xF5,0x00,0x00,0x61,0x10,0x01,0xFC,0x14,0xFE,0x00, +0xF9,0x14,0x00,0x00,0x0B,0x0A,0xF9,0x14,0x00,0x00,0x0F,0x0A,0xC4,0x14,0xFC,0x14, +0x02,0x00,0xFC,0x14,0xF7,0x00,0x3C,0x32,0x15,0x00,0x3C,0x10,0x4E,0x00,0x00,0x61, +0xEA,0x00,0x3C,0x32,0x0B,0x00,0x00,0x42,0x00,0x61,0xE0,0x00,0x3C,0x32,0x02,0x00, +0x3C,0x10,0xF5,0x00,0x00,0x61,0xD4,0x00,0xFC,0x14,0xFB,0x00,0x3C,0x32,0xFF,0x00, +0xED,0x14,0x1A,0x0A,0xED,0x14,0x1B,0x0A,0xC9,0x51,0xF6,0xFF,0xFC,0x14,0xF7,0x00, +0x3C,0x32,0x27,0x00,0x3C,0x10,0x4E,0x00,0x00,0x61,0xB0,0x00,0x6D,0x4A,0x18,0x0A, +0x76,0x6B,0x6D,0xD8,0x18,0x0A,0x6D,0xB8,0x16,0x0A,0x00,0x6F,0x7A,0xFF,0x43,0x52, +0x6D,0xB6,0x18,0x0A,0x00,0x6F,0x6E,0xFF,0x3C,0x32,0x78,0x05,0x3C,0x10,0x4E,0x00, +0x00,0x61,0x88,0x00,0xED,0x13,0x15,0x0A,0xFF,0xFF,0x0D,0x86,0xED,0x13,0x14,0x0A, +0xFF,0xFF,0x0B,0x86,0xED,0x13,0x13,0x0A,0xFF,0xFF,0x09,0x86,0xBC,0x3C,0x90,0x01, +0xBC,0x3C,0x90,0x00,0xBC,0x3C,0x90,0x01,0x3C,0x3E,0x1F,0x00,0x00,0x61,0x12,0x04, +0xBC,0x3C,0x80,0x01,0x3C,0x3E,0xF0,0x00,0x00,0x61,0x06,0x04,0x3C,0x2E,0x04,0x00, +0x00,0x00,0x39,0x08,0x05,0x00,0xFF,0xFF,0x01,0xFA,0x20,0x67,0x87,0x53,0xF2,0x66, +0x00,0x61,0x58,0x03,0x01,0x7E,0x75,0x4E,0x6D,0xB6,0x16,0x0A,0x9A,0x67,0x03,0x3C, +0x46,0xDC,0x33,0x38,0x00,0x60,0x43,0x52,0x00,0x60,0xFC,0xFE,0xBC,0x3C,0x90,0x01, +0x16,0x30,0x00,0x08,0x00,0x00,0xDC,0x67,0xBC,0x3C,0x80,0x01,0x00,0x61,0xD6,0x03, +0x00,0x61,0x64,0xFD,0x3C,0xC0,0x44,0x00,0x75,0x4E,0xC0,0x14,0xC9,0x51,0xFC,0xFF, +0x75,0x4E,0x00,0x61,0xDA,0x03,0xF5,0x70,0x00,0x61,0x5E,0x01,0x00,0x61,0x26,0x03, +0x00,0x61,0x88,0x02,0x00,0x66,0xD6,0x01,0x04,0x61,0x00,0x60,0xDE,0x01,0x7C,0x3B, +0xF5,0xFF,0x24,0x0A,0x6D,0x24,0x12,0x0A,0xAD,0x06,0x00,0x00,0x00,0x02,0x12,0x0A, +0x7C,0x3B,0x02,0x00,0xF6,0x09,0xBC,0x3C,0x84,0x00,0x2D,0x3E,0x0C,0x0A,0x00,0x61, +0x70,0x03,0xED,0x13,0x15,0x0A,0xFF,0xFF,0x0D,0x86,0xED,0x13,0x14,0x0A,0xFF,0xFF, +0x0B,0x86,0xED,0x13,0x13,0x0A,0xFF,0xFF,0x09,0x86,0xBC,0x3C,0x90,0x00,0xBC,0x3C, +0x90,0x01,0xBC,0x3C,0x90,0x00,0x3C,0x3E,0x01,0x00,0x00,0x61,0x44,0x03,0xBC,0x3C, +0x80,0x00,0x3C,0x3E,0x80,0x00,0x00,0x61,0x38,0x03,0x3C,0x2E,0x04,0x00,0x00,0x00, +0x39,0x08,0x05,0x00,0xFF,0xFF,0x01,0xFA,0x0A,0x67,0x87,0x53,0xF2,0x66,0x00,0x61, +0x8A,0x02,0x36,0x60,0xBC,0x3C,0x90,0x00,0x16,0x30,0x00,0x08,0x00,0x00,0x2A,0x67, +0xBC,0x3C,0x80,0x00,0x00,0x61,0x1E,0x03,0x00,0x61,0xAC,0xFC,0x3C,0xC0,0x1C,0x00, +0x18,0x66,0x6D,0x52,0x0C,0x0A,0x6D,0x53,0x10,0x0A,0x00,0x66,0x74,0xFF,0xAD,0x04, +0x00,0x00,0x00,0x02,0x12,0x0A,0x52,0x42,0x75,0x4E,0x6D,0x0C,0x01,0x00,0xF6,0x09, +0x04,0x66,0x00,0x61,0x92,0x01,0x6D,0x53,0xF6,0x09,0x00,0x6A,0x66,0xFF,0xED,0x34, +0x0C,0x0A,0xCE,0x60,0xCD,0x9B,0xF9,0x4D,0xFF,0xFF,0x06,0x86,0xED,0x50,0x04,0x0A, +0x6D,0x4A,0x3E,0x04,0x70,0x66,0x39,0x20,0x00,0x00,0x66,0x04,0x00,0x12,0x3C,0xC2, +0x07,0x00,0x38,0x66,0xBC,0x3C,0x80,0x00,0x08,0xE6,0x7C,0xC0,0x01,0x00,0xED,0x41, +0xF8,0x09,0xC0,0xD0,0x79,0xB0,0x00,0x00,0xA6,0x04,0x02,0x66,0x40,0x42,0x00,0x52, +0x08,0xE3,0x00,0x0A,0x07,0x00,0x00,0x61,0x58,0x02,0x39,0x30,0xFF,0xFF,0x04,0x86, +0x00,0x08,0x06,0x00,0xD0,0x56,0x02,0x10,0x00,0x61,0x46,0x02,0x2D,0x30,0xF8,0x09, +0x6D,0x81,0xFA,0x09,0x6D,0x4A,0x06,0x0A,0x18,0x66,0x00,0x61,0x78,0x02,0x00,0x08, +0x07,0x00,0x12,0x66,0x3C,0x10,0x07,0x00,0x00,0x61,0x26,0x02,0x7C,0x3B,0x01,0x00, +0x06,0x0A,0x6D,0x42,0x04,0x0A,0x75,0x4E,0xF9,0x48,0xF8,0x78,0x00,0x00,0x28,0x0A, +0xCD,0x9B,0xF9,0x4D,0xFF,0xFF,0x06,0x86,0xF9,0x50,0x00,0x00,0x04,0x0A,0x40,0x3B, +0x24,0x0A,0x40,0x3B,0x26,0x0A,0x7C,0x3B,0x01,0x00,0x3E,0x04,0x6F,0x2B,0x08,0x00, +0x12,0x0A,0x6F,0x3B,0x10,0x00,0x08,0x0A,0x6F,0x3B,0x12,0x00,0x0C,0x0A,0x6F,0x3B, +0x14,0x00,0x0A,0x0A,0x6F,0x3B,0x16,0x00,0x0E,0x0A,0x6F,0x3B,0x18,0x00,0x10,0x0A, +0x7C,0x3B,0x02,0x00,0xF6,0x09,0xED,0x43,0x4C,0x0A,0x6D,0x4A,0x08,0x0A,0x04,0x67, +0xED,0x43,0x50,0x0A,0x69,0x4A,0x00,0x00,0x20,0x6A,0x00,0x61,0x68,0x01,0x69,0x42, +0x00,0x00,0x00,0x61,0xEC,0x00,0x12,0x67,0x0A,0x7E,0x72,0x61,0x06,0x66,0x00,0x61, +0xE0,0x00,0x06,0x67,0x7C,0x33,0x00,0xFF,0x00,0x00,0x75,0x4E,0x01,0x70,0x00,0x61, +0x26,0x02,0x2D,0x30,0x26,0x0A,0xC0,0x48,0x02,0x60,0x80,0x42,0x00,0x2F,0xBC,0x3C, +0x86,0x00,0x29,0x3E,0x00,0x00,0x00,0x61,0xA8,0x01,0x3C,0x3C,0x10,0x00,0x00,0x61, +0xC6,0x00,0x39,0x30,0x00,0x00,0x08,0x0A,0x48,0xE5,0xF9,0x41,0x00,0x00,0xFC,0x09, +0xAD,0x21,0xBA,0x04,0x00,0x00,0x79,0x0C,0x01,0x00,0x00,0x00,0xA6,0x04,0x06,0x66, +0x6D,0x21,0xBA,0x04,0x04,0x00,0x1F,0x20,0xF9,0x4C,0xF8,0x78,0x00,0x00,0x28,0x0A, +0x79,0x42,0x00,0x00,0x3E,0x04,0x75,0x4E,0x39,0x3E,0x00,0x00,0x0A,0x0A,0xFC,0x33, +0xFA,0xFF,0x00,0x00,0x26,0x0A,0xBC,0x3C,0x86,0x00,0x00,0x61,0x54,0x01,0x3C,0x3C, +0x10,0x00,0x00,0x60,0x72,0x00,0xFC,0x33,0xFA,0xFF,0x00,0x00,0x26,0x0A,0x50,0x61, +0x4C,0x66,0x69,0x42,0x00,0x00,0xBC,0x3C,0x82,0x00,0x47,0x42,0x00,0x61,0x32,0x01, +0xBC,0x3C,0x86,0x00,0x3C,0x3E,0x05,0x00,0x00,0x61,0x26,0x01,0x3C,0x3C,0x10,0x00, +0x44,0x61,0x2A,0x66,0x7C,0x33,0x05,0x00,0x00,0x00,0xFC,0x33,0xFA,0xFF,0x00,0x00, +0x26,0x0A,0xBC,0x3C,0x86,0x00,0x2D,0x3E,0x0A,0x0A,0x00,0x61,0x04,0x01,0x14,0x7C, +0x24,0x61,0x0A,0x66,0x6D,0x33,0x0A,0x0A,0x00,0x00,0x3C,0xCE,0x18,0x00,0x75,0x4E, +0x46,0x42,0x12,0x61,0x0E,0x66,0x07,0x08,0x02,0x00,0x3C,0x0A,0x04,0x00,0x04,0x66, +0x69,0x42,0x00,0x00,0x75,0x4E,0x29,0x30,0x02,0x00,0x3C,0xC0,0x03,0x00,0x00,0x8C, +0x3C,0x2E,0x04,0x00,0x00,0x00,0xBC,0x3C,0x80,0x00,0x00,0x61,0xD8,0x00,0x00,0x08, +0x07,0x00,0x06,0x66,0x3C,0x2E,0x06,0x00,0x00,0x00,0x00,0x61,0xAA,0x00,0x87,0x53, +0x12,0x67,0x39,0x08,0x05,0x00,0xFF,0xFF,0x01,0xFA,0xF2,0x66,0x00,0x61,0xAC,0x00, +0x46,0x42,0x75,0x4E,0x04,0x61,0x01,0x7C,0x75,0x4E,0xBC,0x3C,0x80,0x00,0x3C,0x3E, +0xD0,0x00,0x00,0x61,0x8C,0x00,0x3C,0x3E,0x0F,0x00,0xCF,0x51,0xFE,0xFF,0x00,0x61, +0x8A,0x00,0x75,0x4E,0x6D,0x42,0x06,0x0A,0x2D,0x30,0x08,0x0A,0x00,0x52,0x08,0xE3, +0x6D,0x80,0x0E,0x0A,0x00,0x0A,0x07,0x00,0x3C,0xC0,0x07,0x00,0x32,0x61,0xBC,0x3C, +0x82,0x00,0x29,0x3E,0x00,0x00,0x58,0x61,0x2D,0x42,0x20,0x0A,0xBC,0x3C,0x84,0x00, +0x2D,0x3E,0x0C,0x0A,0x4A,0x61,0xED,0x13,0x15,0x0A,0xFF,0xFF,0x0D,0x86,0xED,0x13, +0x14,0x0A,0xFF,0xFF,0x0B,0x86,0xED,0x13,0x13,0x0A,0xFF,0xFF,0x09,0x86,0x75,0x4E, +0xE7,0x40,0x7C,0x00,0x00,0x07,0xFC,0x13,0x0E,0x00,0xFF,0xFF,0x00,0x88,0x39,0x12, +0xFF,0xFF,0x00,0x88,0x01,0x14,0x3C,0xC2,0xF8,0x00,0x00,0x82,0xC1,0x13,0xFF,0xFF, +0x02,0x88,0xDF,0x46,0x75,0x4E,0x24,0x61,0xC6,0x33,0xFF,0xFF,0x04,0x86,0x1C,0x60, +0x1A,0x61,0xC7,0x33,0xFF,0xFF,0x04,0x86,0x12,0x60,0x10,0x61,0x39,0x3E,0xFF,0xFF, +0x04,0x86,0x08,0x60,0x06,0x61,0x39,0x30,0xFF,0xFF,0x04,0x86,0xE7,0x40,0x07,0x3F, +0x3C,0x3E,0x20,0x00,0xCF,0x51,0xFE,0xFF,0x1F,0x3E,0xDF,0x46,0x75,0x4E,0x79,0x0C, +0x01,0x00,0x00,0x00,0xA6,0x04,0x2C,0x66,0x2F,0x30,0x10,0x00,0x79,0xB0,0x00,0x00, +0xC4,0x7D,0x1C,0x67,0x00,0x3F,0x3C,0x3F,0xEF,0xFF,0x00,0x61,0x0C,0xE9,0x4F,0x58, +0xFC,0x33,0xFF,0xFF,0x00,0x00,0xFA,0x09,0xEF,0x33,0x10,0x00,0x00,0x00,0xC4,0x7D, +0x6F,0x42,0x10,0x00,0x75,0x4E,0xF9,0x41,0x00,0x00,0x5A,0x75,0x00,0x1F,0x2D,0x30, +0x08,0x0A,0x9F,0x11,0x00,0x00,0x75,0x4E,0xF9,0x4B,0x00,0x00,0x00,0x00,0xED,0x41, +0x47,0x0E,0x00,0x61,0xDA,0x00,0x00,0x04,0x50,0x00,0x00,0x14,0x82,0xE9,0x00,0x61, +0xCE,0x00,0x00,0xD4,0x82,0xEB,0x00,0x61,0xC6,0x00,0x00,0xD4,0x82,0xEB,0x00,0x61, +0xBE,0x00,0x00,0xD4,0x82,0xED,0x00,0x61,0xB6,0x00,0x00,0xD4,0x82,0xEB,0x00,0x61, +0xAE,0x00,0x08,0xE2,0x00,0xD4,0x42,0x2B,0x50,0x0E,0x7C,0x1B,0x00,0x00,0x92,0x0E, +0x75,0x4E,0x7C,0x1B,0xFF,0xFF,0x92,0x0E,0x3C,0x12,0x1C,0x00,0x00,0x61,0x94,0x02, +0x2D,0x4A,0x92,0x0E,0xFA,0x66,0x2D,0x20,0x50,0x0E,0x75,0x4E,0x6F,0x2B,0x04,0x00, +0x54,0x0E,0xF9,0x41,0x00,0x00,0x5E,0x0E,0x2D,0x24,0x54,0x0E,0x02,0x10,0x00,0x02, +0x1F,0x00,0x00,0xE3,0x54,0x61,0x8A,0xEA,0x02,0x10,0x00,0x02,0x3F,0x00,0x4A,0x61, +0x8A,0xEC,0x02,0x10,0x00,0x02,0x1F,0x00,0x40,0x61,0x8A,0xEA,0x02,0x10,0x00,0x02, +0x1F,0x00,0x36,0x61,0x8A,0xEA,0x02,0x10,0x00,0x02,0x0F,0x00,0x2C,0x61,0x8A,0xE8, +0x02,0x10,0x00,0x02,0x7F,0x00,0x22,0x61,0x10,0x06,0x80,0x00,0x3C,0x12,0x1B,0x00, +0x00,0x61,0x30,0x02,0x05,0x76,0xF9,0x45,0x00,0x00,0x58,0x0E,0x00,0x61,0x4E,0x02, +0x3C,0x12,0x1C,0x00,0x00,0x61,0x1C,0x02,0x75,0x4E,0x00,0x72,0x00,0x12,0xFC,0x83, +0x0A,0x00,0x41,0xE9,0x01,0x30,0x41,0x48,0x41,0xD0,0x00,0x11,0x75,0x4E,0x18,0x10, +0x00,0x12,0x7C,0xC0,0x0F,0x00,0x7C,0xC2,0xF0,0x00,0x41,0xE8,0xFC,0xC2,0x0A,0x00, +0x41,0xD0,0x75,0x4E,0xFF,0x70,0x39,0x14,0xFF,0xFF,0x04,0xFC,0x02,0x08,0x01,0x00, +0x02,0x66,0x00,0x70,0x75,0x4E,0x2F,0x32,0x06,0x00,0xF9,0x43,0xFF,0xFF,0x04,0xFC, +0x29,0x14,0x00,0x00,0x02,0x08,0x01,0x00,0xF6,0x67,0x41,0x13,0x02,0x00,0x75,0x4E, +0x00,0x76,0x2F,0x36,0x04,0x00,0x6F,0x24,0x06,0x00,0x1A,0x12,0xDC,0x61,0xCB,0x51, +0xFA,0xFF,0x75,0x4E,0xED,0x41,0x84,0x0D,0xF9,0x43,0xFF,0xFF,0x04,0xFC,0xFF,0x70, +0xE8,0x45,0x06,0x00,0xE8,0x47,0x08,0x00,0x4B,0xB5,0x02,0x66,0x00,0x70,0x75,0x4E, +0xE2,0x61,0x40,0x4A,0xFA,0x67,0xE7,0x40,0x7C,0x00,0x00,0x07,0x28,0x32,0x06,0x00, +0x68,0xB2,0x08,0x00,0x16,0x67,0x41,0x52,0x68,0xB2,0x04,0x00,0x02,0x65,0x00,0x72, +0x68,0x22,0x00,0x00,0x31,0x10,0x00,0x10,0x41,0x31,0x06,0x00,0xDF,0x46,0x75,0x4E, +0x2D,0x08,0x04,0x00,0x90,0x0E,0x00,0x66,0x1C,0x01,0x2D,0x24,0xBA,0x04,0xAD,0x94, +0x84,0x0E,0x82,0x0C,0x00,0x00,0xE8,0x03,0x18,0x65,0x2D,0x24,0xBA,0x04,0x74,0x61, +0x40,0x4A,0x18,0x66,0x2D,0x26,0xBA,0x04,0x82,0x96,0x83,0x0C,0x00,0x00,0x70,0x17, +0xEC,0x6D,0x00,0x70,0x6D,0x2B,0xBA,0x04,0x84,0x0E,0x75,0x4E,0xC3,0x40,0x7C,0x00, +0x00,0x07,0x07,0x72,0x00,0x61,0x30,0x0E,0x00,0x00,0x80,0x00,0x87,0x72,0x00,0x61, +0x26,0x0E,0xC3,0x46,0x2F,0x30,0x06,0x00,0x8F,0x72,0x00,0x61,0x1A,0x0E,0x0E,0x61, +0x0C,0x61,0x04,0x61,0xFF,0x70,0x75,0x4E,0x20,0x74,0x00,0x60,0x40,0x0E,0xDF,0x74, +0x00,0x60,0x60,0x0E,0x07,0x72,0x00,0x61,0xFE,0x0D,0x00,0x02,0x7F,0x00,0x87,0x72, +0x00,0x61,0xF4,0x0D,0xE2,0x61,0x0C,0x61,0x40,0x4A,0xFA,0x66,0xE0,0x61,0x0F,0x72, +0x00,0x60,0xE4,0x0D,0xF9,0x41,0xFF,0xFF,0x01,0xFA,0xFF,0x70,0x28,0x08,0x00,0x00, +0x00,0x00,0x02,0x67,0x00,0x70,0x75,0x4E,0xF9,0x41,0x00,0x00,0x54,0x0C,0xFF,0x70, +0xE8,0x43,0x06,0x00,0xE8,0x41,0x08,0x00,0x48,0xB3,0x02,0x66,0x00,0x70,0x75,0x4E, +0xF9,0x41,0x00,0x00,0x54,0x0C,0x00,0x61,0x3A,0x07,0x00,0x3F,0x28,0x4A,0x20,0x00, +0x34,0x67,0x28,0x30,0x08,0x00,0x68,0x90,0x06,0x00,0x04,0x6A,0x68,0xD0,0x04,0x00, +0x68,0xB0,0x0A,0x00,0x20,0x6E,0x28,0x4A,0x1E,0x00,0x1A,0x67,0x28,0x42,0x1E,0x00, +0x28,0x08,0x00,0x00,0x20,0x00,0x06,0x66,0x00,0x61,0x24,0x07,0x08,0x60,0x7C,0x11, +0x11,0x00,0x21,0x00,0x2C,0x61,0x1F,0x30,0x75,0x4E,0xF9,0x41,0x00,0x00,0x62,0x0C, +0x28,0x32,0x08,0x00,0x00,0x61,0x44,0x07,0xFF,0x70,0x68,0xB2,0x06,0x00,0x02,0x66, +0x00,0x70,0x75,0x4E,0x2F,0x30,0x06,0x00,0xF9,0x41,0x00,0x00,0x62,0x0C,0x00,0x61, +0xB8,0x06,0xF9,0x45,0xFF,0xFF,0x01,0xFA,0x2A,0x4A,0x2C,0x00,0x0C,0x6A,0xE7,0x40, +0x7C,0x00,0x00,0x07,0x00,0x61,0x60,0x06,0xDF,0x46,0x75,0x4E,0xFF,0x70,0x39,0x14, +0xFF,0xFF,0x00,0xFC,0x02,0x08,0x01,0x00,0x02,0x66,0x00,0x70,0x75,0x4E,0x2F,0x32, +0x06,0x00,0xF9,0x43,0xFF,0xFF,0x00,0xFC,0x29,0x14,0x00,0x00,0x02,0x08,0x01,0x00, +0xF6,0x67,0x3C,0x34,0xB6,0x03,0x08,0x61,0xCA,0x51,0xFC,0xFF,0x41,0x13,0x02,0x00, +0x75,0x4E,0x00,0x76,0x2F,0x36,0x04,0x00,0x6F,0x24,0x06,0x00,0x1A,0x12,0xD2,0x61, +0xCB,0x51,0xFA,0xFF,0x75,0x4E,0xED,0x41,0x76,0x0C,0xFF,0x70,0xE8,0x45,0x06,0x00, +0xE8,0x47,0x08,0x00,0x4B,0xB5,0x02,0x66,0x00,0x70,0x75,0x4E,0xE8,0x61,0x40,0x4A, +0xFA,0x67,0xE7,0x40,0x7C,0x00,0x00,0x07,0x28,0x32,0x06,0x00,0x68,0xB2,0x08,0x00, +0x16,0x67,0x41,0x58,0x68,0xB2,0x04,0x00,0x02,0x65,0x00,0x72,0x68,0x22,0x00,0x00, +0x31,0x20,0x00,0x10,0x41,0x31,0x06,0x00,0xDF,0x46,0x75,0x4E,0xFF,0x70,0x75,0x4E, +0x2D,0x08,0x02,0x00,0x84,0x04,0x0E,0x67,0x7C,0x2B,0xFC,0x00,0x1C,0x32,0x8A,0x0E, +0x7C,0x1B,0x00,0x00,0x8E,0x0E,0x75,0x4E,0x1B,0x00,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x27,0x9E,0x09,0x08,0x77,0x71,0x72,0x65,0x7A,0x74,0x69,0x75, +0x70,0x6F,0x2B,0x81,0x00,0x0D,0x73,0x61,0x66,0x64,0x68,0x67,0x6B,0x6A,0x94,0x6C, +0x23,0x84,0x7E,0x00,0x78,0x79,0x76,0x63,0x6E,0x62,0x2C,0x6D,0x2D,0x2E,0x00,0x00, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2B,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x28,0x00,0x2F,0x29,0x37,0x2A, +0x39,0x38,0x35,0x34,0x31,0x36,0x33,0x32,0x2E,0x30,0x00,0x0D,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x22,0x21,0x24,0xDD,0x26,0x25, +0x28,0x2F,0x3D,0x29,0x60,0x3F,0x09,0x08,0x57,0x51,0x52,0x45,0x5A,0x54,0x49,0x55, +0x50,0x4F,0x2A,0x9A,0x00,0x0D,0x53,0x41,0x46,0x44,0x48,0x47,0x4B,0x4A,0x99,0x4C, +0x5E,0x8E,0x7C,0x00,0x58,0x59,0x56,0x43,0x4E,0x42,0x3B,0x4D,0x5F,0x3A,0x00,0x00, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x00, +0x00,0x38,0x34,0x2D,0x36,0x00,0x00,0x2B,0x00,0x32,0x7F,0x30,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x28,0x00,0x2F,0x29,0x37,0x2A, +0x39,0x38,0x35,0x34,0x31,0x36,0x33,0x32,0x2E,0x30,0x00,0x0D,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x27,0x9E,0x09,0x08,0x57,0x51,0x52,0x45,0x5A,0x54,0x49,0x55, +0x50,0x4F,0x2B,0x9A,0x00,0x0D,0x53,0x41,0x46,0x44,0x48,0x47,0x4B,0x4A,0x99,0x4C, +0x23,0x8E,0x7E,0x00,0x58,0x59,0x56,0x43,0x4E,0x42,0x2C,0x4D,0x2D,0x2E,0x00,0x00, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x2D,0x00,0x00,0x00,0x2B,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x28,0x00,0x2F,0x29,0x37,0x2A, +0x39,0x38,0x35,0x34,0x31,0x36,0x33,0x32,0x2E,0x30,0x00,0x0D,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF9,0x41,0xFF,0xFF,0x01,0xFA,0x00,0x70, +0xC8,0x01,0x00,0x00,0xC8,0x01,0x08,0x00,0xC8,0x01,0x10,0x00,0x7C,0x11,0x48,0x00, +0x16,0x00,0xE8,0x08,0x02,0x00,0x02,0x00,0x7C,0x3B,0x11,0x11,0x88,0x0E,0x7C,0x3B, +0x14,0x00,0x42,0x04,0x02,0x70,0x50,0x72,0x3C,0x34,0xC0,0x00,0x00,0x61,0x72,0x01, +0xF9,0x45,0xFC,0x00,0x1E,0x31,0x05,0x70,0x00,0x61,0x1C,0x02,0x03,0x70,0x01,0x72, +0x02,0x74,0x00,0x61,0x5C,0x01,0x3C,0x20,0x88,0x00,0x01,0x01,0xC8,0x01,0x26,0x00, +0x00,0x61,0xD0,0x0A,0x00,0x61,0x48,0x04,0xED,0x41,0x54,0x0C,0xF9,0x43,0xFC,0x00, +0x7E,0x25,0x21,0x70,0x00,0x61,0xE4,0x00,0xED,0x41,0x84,0x0D,0xF9,0x43,0xFC,0x00, +0x70,0x25,0x0D,0x70,0x00,0x61,0xD4,0x00,0x3C,0x20,0xFC,0x00,0x40,0x2A,0x40,0x2B, +0x16,0x0E,0x40,0x2B,0x1A,0x0E,0x7C,0x2B,0xFC,0x00,0x94,0x2E,0x12,0x0E,0x7C,0x2B, +0xFC,0x00,0xFC,0x29,0x2E,0x0E,0x7C,0x2B,0xFC,0x00,0x0C,0x2A,0x32,0x0E,0xFC,0x13, +0x03,0x00,0xFF,0xFF,0x04,0xFC,0xFC,0x13,0x95,0x00,0xFF,0xFF,0x04,0xFC,0x7C,0x1B, +0x07,0x00,0x84,0x04,0x7C,0x2B,0xFC,0x00,0x08,0x1F,0x26,0x0E,0x3C,0x20,0xFC,0x00, +0x58,0x25,0x40,0x2B,0x1E,0x0E,0x40,0x2B,0x22,0x0E,0x40,0x2B,0x2A,0x0E,0x00,0x70, +0x40,0x2B,0x8A,0x0E,0x40,0x1B,0x8E,0x0E,0x40,0x1B,0x8F,0x0E,0x40,0x2B,0x84,0x0E, +0x00,0x61,0x06,0xFC,0x7C,0x1B,0x0F,0x00,0x82,0x0E,0x7C,0x1B,0x02,0x00,0x83,0x0E, +0xED,0x41,0x76,0x0C,0xF9,0x43,0xFC,0x00,0x62,0x25,0x0D,0x70,0x4C,0x61,0x00,0x61, +0xA4,0x0B,0xFC,0x13,0x03,0x00,0xFF,0xFF,0x00,0xFC,0xFC,0x13,0x96,0x00,0xFF,0xFF, +0x00,0xFC,0x7C,0x26,0xFC,0x00,0xA0,0x25,0x03,0x72,0x01,0x24,0x01,0x20,0x00,0x06, +0x09,0x00,0x82,0xE5,0x73,0x24,0x00,0x20,0x00,0x61,0x2C,0x01,0xC9,0x51,0xEC,0xFF, +0xF9,0x45,0xFC,0x00,0xCE,0x29,0x06,0x70,0x00,0x61,0x1C,0x01,0xF9,0x45,0xFC,0x00, +0xAE,0x27,0x02,0x70,0x00,0x61,0x10,0x01,0x75,0x4E,0xD9,0x10,0xC8,0x51,0xFC,0xFF, +0x75,0x4E,0x00,0x00,0x84,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x40,0x00,0xC0,0x00, +0x00,0x00,0x92,0x0D,0x80,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00, +0x54,0x0A,0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0xC0,0x00,0x00,0x00,0x54,0x0B, +0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0xFC,0x00,0x1C,0x28,0xFC,0x00,0x94,0x27,0xFC,0x00,0xFA,0x27,0xFC,0x00,0xF6,0x26, +0xE7,0x48,0xF0,0xF8,0x7C,0x20,0xFF,0xFF,0x01,0xFA,0x7C,0x26,0xFC,0x00,0x44,0x26, +0x7C,0x24,0xFC,0x00,0x48,0x26,0x5A,0x61,0x7C,0x26,0xFC,0x00,0x38,0x26,0x7C,0x24, +0xFC,0x00,0x48,0x26,0x4C,0x61,0x7C,0x26,0xFC,0x00,0x3C,0x26,0x7C,0x24,0xFC,0x00, +0x48,0x26,0x3E,0x61,0x7C,0x26,0xFC,0x00,0x40,0x26,0x7C,0x24,0xFC,0x00,0x48,0x26, +0x30,0x61,0x7C,0x26,0xFC,0x00,0x4C,0x26,0x7C,0x24,0xFC,0x00,0x50,0x26,0x22,0x61, +0x49,0xC7,0xF9,0x47,0xFC,0x00,0x54,0x26,0x00,0x76,0x33,0x16,0x00,0x00,0x82,0x11, +0x00,0x30,0x30,0xB4,0x00,0x30,0xF6,0x66,0x49,0xC7,0x13,0x83,0xDF,0x4C,0x1F,0x0F, +0x75,0x4E,0x06,0x61,0x12,0x16,0x13,0xC7,0x75,0x4E,0x00,0x76,0xC0,0xD6,0x13,0x16, +0x88,0xD6,0x43,0x26,0xC0,0xD4,0x75,0x4E,0x06,0x06,0x08,0x08,0x0A,0x0A,0x0C,0x0C, +0x0E,0x0E,0x10,0x10,0x12,0x12,0x14,0x14,0xFE,0xDF,0xEF,0xDF,0x1A,0x18,0x1C,0x1C, +0x00,0x00,0xF8,0x8F,0x20,0x1E,0x24,0x22,0x2F,0x30,0x04,0x00,0x6F,0x24,0x06,0x00, +0x80,0x02,0x00,0x00,0x0F,0x00,0xE7,0x48,0xE0,0xE0,0x20,0x61,0x00,0x24,0x42,0xE5, +0x82,0x06,0x00,0x00,0x00,0x01,0x42,0x22,0x8A,0x22,0x4A,0x61,0xDF,0x4C,0x07,0x07, +0x75,0x4E,0x2F,0x30,0x04,0x00,0x80,0x02,0x00,0x00,0x0F,0x00,0xE7,0x48,0xC0,0xC0, +0xF9,0x41,0xFF,0xFF,0x01,0xFA,0xE8,0x43,0x12,0x00,0x4A,0x61,0x91,0x03,0xE8,0x43, +0x06,0x00,0x42,0x61,0x91,0x03,0xE8,0x43,0x0A,0x00,0x3A,0x61,0x91,0x03,0xE8,0x43, +0x0E,0x00,0x32,0x61,0x91,0x03,0xDF,0x4C,0x03,0x03,0x75,0x4E,0x2F,0x30,0x04,0x00, +0x80,0x02,0x00,0x00,0x0F,0x00,0xE7,0x48,0xC0,0xC0,0xF9,0x41,0xFF,0xFF,0x01,0xFA, +0xE8,0x43,0x06,0x00,0x10,0x61,0xD1,0x03,0xE8,0x43,0x12,0x00,0x08,0x61,0xD1,0x03, +0xDF,0x4C,0x03,0x03,0x75,0x4E,0x00,0x12,0x01,0x0C,0x08,0x00,0x04,0x6D,0x41,0x51, +0x75,0x4E,0x89,0x54,0x75,0x4E,0xE7,0x48,0xE0,0xC0,0xF9,0x41,0x00,0x00,0x54,0x0C, +0xF9,0x45,0xFF,0xFF,0x01,0xFA,0x6A,0x11,0x2A,0x00,0x1C,0x00,0x2A,0x10,0x2E,0x00, +0x28,0x08,0x00,0x00,0x20,0x00,0x1A,0x67,0x00,0x0C,0x13,0x00,0x08,0x66,0x7C,0x11, +0xFF,0xFF,0x1F,0x00,0x62,0x60,0x00,0x0C,0x11,0x00,0x06,0x66,0x28,0x42,0x1F,0x00, +0x4C,0x60,0x28,0x32,0x08,0x00,0x00,0x61,0xB2,0x01,0x68,0xB2,0x06,0x00,0x48,0x67, +0x00,0x61,0x36,0x01,0x28,0x4A,0x20,0x00,0x3E,0x67,0x28,0x30,0x08,0x00,0x68,0x90, +0x06,0x00,0x04,0x6A,0x68,0xD0,0x04,0x00,0x68,0xB0,0x0C,0x00,0x2A,0x6D,0x28,0x4A, +0x1E,0x00,0x24,0x66,0x7C,0x11,0xFF,0xFF,0x1E,0x00,0x28,0x08,0x00,0x00,0x20,0x00, +0x06,0x66,0x00,0x61,0x58,0x01,0x10,0x60,0x7C,0x11,0x13,0x00,0x21,0x00,0x2A,0x4A, +0x2C,0x00,0x04,0x6A,0x00,0x61,0xB0,0x00,0xAA,0x08,0x04,0x00,0x0E,0x00,0xDF,0x4C, +0x03,0x07,0x73,0x4E,0xE7,0x48,0xE0,0xC0,0xF9,0x45,0xFF,0xFF,0x01,0xFA,0x00,0x61, +0x96,0x00,0xAA,0x08,0x02,0x00,0x0E,0x00,0xDF,0x4C,0x03,0x07,0x73,0x4E,0xE7,0x48, +0xE0,0xC0,0xF9,0x41,0x00,0x00,0x54,0x0C,0xF9,0x45,0xFF,0xFF,0x01,0xFA,0x28,0x08, +0x01,0x00,0x20,0x00,0x28,0x67,0x2A,0x08,0x02,0x00,0x00,0x00,0x14,0x66,0x28,0x42, +0x1F,0x00,0xEA,0x08,0x02,0x00,0x02,0x00,0x2A,0x4A,0x2C,0x00,0x10,0x6A,0x56,0x61, +0x0C,0x60,0x7C,0x11,0xFF,0xFF,0x1F,0x00,0xAA,0x08,0x02,0x00,0x02,0x00,0xAA,0x08, +0x02,0x00,0x10,0x00,0xDF,0x4C,0x03,0x07,0x73,0x4E,0xE7,0x48,0x80,0x80,0xF9,0x41, +0xFF,0xFF,0x01,0xFA,0xE8,0x13,0x2A,0x00,0x00,0x00,0x70,0x0C,0x28,0x10,0x2E,0x00, +0xA8,0x08,0x03,0x00,0x0E,0x00,0xDF,0x4C,0x01,0x01,0x73,0x4E,0x08,0x2F,0xF9,0x41, +0xFF,0xFF,0x01,0xFA,0xE8,0x13,0x2C,0x00,0x00,0x00,0x71,0x0C,0xA8,0x08,0x01,0x00, +0x0E,0x00,0x5F,0x20,0x73,0x4E,0xF9,0x41,0x00,0x00,0x54,0x0C,0x28,0x10,0x20,0x00, +0x28,0xC0,0x1F,0x00,0x30,0x66,0x28,0x10,0x21,0x00,0x06,0x67,0x28,0x42,0x21,0x00, +0x12,0x60,0xF9,0x41,0x00,0x00,0x62,0x0C,0x28,0x30,0x06,0x00,0x68,0xB0,0x08,0x00, +0x14,0x67,0x2E,0x61,0x2A,0x4A,0x2C,0x00,0xFA,0x6A,0xEA,0x13,0x2C,0x00,0x00,0x00, +0x71,0x0C,0x40,0x15,0x2E,0x00,0x75,0x4E,0x28,0x32,0x08,0x00,0x6C,0x61,0x68,0xB2, +0x06,0x00,0xFA,0x67,0x68,0x22,0x00,0x00,0x80,0x13,0x00,0x10,0x41,0x31,0x08,0x00, +0x75,0x4E,0x28,0x32,0x06,0x00,0x68,0xB2,0x08,0x00,0xF6,0x67,0x4C,0x61,0x68,0x22, +0x00,0x00,0x00,0x70,0x31,0x10,0x00,0x10,0x41,0x31,0x06,0x00,0x75,0x4E,0xF9,0x43, +0xFF,0xFF,0x00,0x88,0xE7,0x40,0x7C,0x00,0x00,0x07,0xBC,0x12,0x0E,0x00,0x11,0x12, +0x3C,0xC2,0xF7,0x00,0x41,0x13,0x02,0x00,0xDF,0x46,0x75,0x4E,0xF9,0x43,0xFF,0xFF, +0x00,0x88,0xE7,0x40,0x7C,0x00,0x00,0x07,0xBC,0x12,0x0E,0x00,0x11,0x12,0x01,0x00, +0x08,0x00,0x41,0x13,0x02,0x00,0xDF,0x46,0x75,0x4E,0x41,0x52,0x68,0xB2,0x04,0x00, +0x02,0x65,0x00,0x72,0x75,0x4E,0x2F,0x32,0x04,0x00,0x81,0xE5,0x3B,0x20,0x04,0x10, +0x75,0x4E,0x00,0x00,0x54,0x0C,0x00,0x00,0x76,0x0C,0x00,0x00,0x84,0x0D,0x7C,0x00, +0x00,0x07,0xF9,0x41,0x00,0x00,0x54,0x0C,0xF9,0x43,0xFF,0xFF,0x01,0xFA,0x49,0x0F, +0x28,0x00,0x6F,0x4A,0x06,0x00,0x18,0x6B,0x6F,0x11,0x07,0x00,0x20,0x00,0x28,0x10, +0x20,0x00,0x0C,0x67,0x3C,0xC0,0xFD,0x00,0x06,0x67,0x7C,0x11,0x01,0x00,0x20,0x00, +0x6F,0x4A,0x04,0x00,0x34,0x6B,0x00,0x70,0x40,0x13,0x2A,0x00,0x40,0x13,0x2C,0x00, +0x2F,0x32,0x04,0x00,0xF9,0x45,0xFC,0x00,0xAE,0x29,0x32,0x10,0x00,0x10,0xF9,0x45, +0xFC,0x00,0xBE,0x29,0x32,0x14,0x00,0x10,0x00,0x22,0x03,0x70,0x00,0x61,0x42,0xFC, +0x01,0x70,0x40,0x13,0x2A,0x00,0x40,0x13,0x2C,0x00,0x6F,0x4A,0x08,0x00,0x06,0x6B, +0x6F,0x13,0x09,0x00,0x28,0x00,0x6F,0x4A,0x0A,0x00,0x06,0x6B,0x6F,0x13,0x0B,0x00, +0x2A,0x00,0x6F,0x4A,0x0C,0x00,0x06,0x6B,0x6F,0x13,0x0D,0x00,0x2C,0x00,0x6F,0x4A, +0x0E,0x00,0x06,0x6B,0x6F,0x13,0x0F,0x00,0x26,0x00,0x07,0x20,0x75,0x4E,0x01,0x01, +0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01, +0x05,0x04,0x0A,0x08,0x10,0x0B,0x40,0x20,0x80,0x60,0xAF,0x8F,0x60,0x40,0xE7,0x48, +0xF4,0xF0,0xF9,0x4B,0x00,0x00,0x00,0x00,0x6D,0x24,0x2E,0x0E,0x92,0x4E,0x6D,0x24, +0x32,0x0E,0x92,0x4E,0x39,0x08,0x04,0x00,0xFF,0xFF,0x01,0xFA,0xEA,0x67,0xB9,0x08, +0x06,0x00,0xFF,0xFF,0x11,0xFA,0xDF,0x4C,0x0F,0x2F,0x73,0x4E,0xED,0x41,0x84,0x0D, +0xF9,0x43,0xFF,0xFF,0x04,0xFC,0x6D,0x24,0x1A,0x0E,0x0E,0x60,0xED,0x41,0x76,0x0C, +0xF9,0x43,0xFF,0xFF,0x00,0xFC,0x6D,0x24,0x16,0x0E,0x29,0x14,0x00,0x00,0x02,0x08, +0x07,0x00,0x1C,0x67,0x02,0x08,0x00,0x00,0x0A,0x67,0xE7,0x48,0xE0,0x20,0x12,0x61, +0xDF,0x4C,0x04,0x07,0x02,0x02,0x20,0x00,0x06,0x67,0x29,0x10,0x02,0x00,0xD2,0x4E, +0x75,0x4E,0x29,0x10,0x02,0x00,0xFC,0xB1,0x00,0x00,0x76,0x0C,0x00,0x66,0x40,0x04, +0x2D,0x4A,0x36,0x0E,0x60,0x66,0x00,0x0C,0xF6,0x00,0x00,0x65,0x00,0x01,0x00,0x04, +0xF6,0x00,0x80,0x02,0x00,0x00,0xFF,0x00,0xF9,0x47,0xFC,0x00,0xA2,0x2A,0x73,0x1B, +0x00,0x00,0x36,0x0E,0xF9,0x47,0xFC,0x00,0xAC,0x2A,0x73,0x1B,0x00,0x00,0x37,0x0E, +0x40,0x06,0xF6,0x00,0x00,0x0C,0xF8,0x00,0x0C,0x6D,0x00,0x0C,0xFB,0x00,0x06,0x6E, +0x40,0x1B,0x44,0x0E,0x75,0x4E,0x00,0x0C,0xFD,0x00,0x04,0x6D,0x40,0x1B,0x4D,0x0E, +0x75,0x4E,0x02,0x01,0x03,0x03,0x03,0x03,0x05,0x04,0x07,0x06,0x05,0x07,0x02,0x02, +0x02,0x02,0x02,0x06,0x01,0x01,0x2D,0x0C,0x06,0x00,0x36,0x0E,0x00,0x64,0x84,0x00, +0xF9,0x45,0xFC,0x00,0x06,0x2B,0x00,0x74,0x2D,0x14,0x36,0x0E,0x02,0x53,0x42,0xE3, +0x2D,0xD4,0x36,0x0E,0x02,0x53,0x42,0xE5,0x72,0x20,0x00,0x20,0x72,0x22,0x04,0x20, +0x72,0x24,0x08,0x20,0x52,0x24,0x00,0x74,0x2D,0x14,0x37,0x0E,0xC2,0x93,0x80,0x12, +0x2D,0x53,0x37,0x0E,0x2D,0x4A,0x37,0x0E,0x0A,0x66,0x08,0x2F,0x92,0x4E,0x4F,0x58, +0x2D,0x42,0x36,0x0E,0x75,0x4E,0x00,0x00,0x38,0x0E,0x00,0x00,0x3F,0x0E,0x00,0x00, +0x1E,0x0E,0x00,0x00,0x3F,0x0E,0x00,0x00,0x44,0x0E,0x00,0x00,0x22,0x0E,0x00,0x00, +0x44,0x0E,0x00,0x00,0x47,0x0E,0x00,0x00,0x22,0x0E,0x00,0x00,0x47,0x0E,0x00,0x00, +0x4D,0x0E,0x00,0x00,0x26,0x0E,0x00,0x00,0x4D,0x0E,0x00,0x00,0x4F,0x0E,0x00,0x00, +0x2A,0x0E,0x3C,0x22,0x00,0x00,0x4E,0x0E,0x2D,0xD2,0x36,0x0E,0x01,0x5D,0x41,0x24, +0x80,0x14,0x6D,0x24,0x2A,0x0E,0xED,0x41,0x4D,0x0E,0x9E,0x60,0x2D,0x12,0x61,0x0E, +0x00,0x0C,0x2A,0x00,0x06,0x66,0xC1,0x08,0x01,0x00,0x74,0x60,0x00,0x0C,0xAA,0x00, +0x06,0x66,0x81,0x08,0x01,0x00,0x68,0x60,0x00,0x0C,0x36,0x00,0x06,0x66,0xC1,0x08, +0x00,0x00,0x5C,0x60,0x00,0x0C,0xB6,0x00,0x06,0x66,0x81,0x08,0x00,0x00,0x50,0x60, +0x00,0x0C,0x1D,0x00,0x06,0x66,0xC1,0x08,0x02,0x00,0x44,0x60,0x00,0x0C,0x9D,0x00, +0x06,0x66,0x81,0x08,0x02,0x00,0x38,0x60,0x00,0x0C,0x38,0x00,0x06,0x66,0xC1,0x08, +0x03,0x00,0x2C,0x60,0x00,0x0C,0xB8,0x00,0x06,0x66,0x81,0x08,0x03,0x00,0x20,0x60, +0x00,0x0C,0x3A,0x00,0x20,0x66,0x2D,0x08,0x00,0x00,0x84,0x04,0x0E,0x67,0x7C,0x2B, +0xFC,0x00,0x3A,0x32,0x8A,0x0E,0x7C,0x1B,0x00,0x00,0x8E,0x0E,0x41,0x08,0x04,0x00, +0x41,0x1B,0x61,0x0E,0x75,0x4E,0x00,0x08,0x07,0x00,0x2A,0x66,0x2D,0x4A,0x7F,0x0E, +0x16,0x66,0x40,0x1B,0x7F,0x0E,0x79,0x1B,0x00,0x00,0x82,0x0E,0x80,0x0E,0x79,0x1B, +0x00,0x00,0x83,0x0E,0x81,0x0E,0x3A,0x60,0x7C,0x1B,0x00,0x00,0x80,0x0E,0x7C,0x1B, +0x00,0x00,0x81,0x0E,0x2C,0x60,0x2D,0x4A,0x7F,0x0E,0x0E,0x67,0x00,0x72,0x41,0x1B, +0x7F,0x0E,0x41,0x1B,0x80,0x0E,0x41,0x1B,0x81,0x0E,0x00,0x0C,0xC7,0x00,0x08,0x67, +0x00,0x0C,0xD2,0x00,0x00,0x66,0x56,0x02,0x2D,0x08,0x03,0x00,0x61,0x0E,0x00,0x67, +0x4C,0x02,0x2D,0x08,0x00,0x00,0x84,0x04,0x0E,0x67,0x7C,0x2B,0xFC,0x00,0x3A,0x32, +0x8A,0x0E,0x7C,0x1B,0x00,0x00,0x8E,0x0E,0x08,0x2F,0x00,0x72,0x00,0x12,0x6D,0x20, +0x62,0x0E,0x40,0x02,0x7F,0x00,0x2D,0x08,0x04,0x00,0x61,0x0E,0x04,0x67,0x6D,0x20, +0x6A,0x0E,0x2D,0x08,0x00,0x00,0x61,0x0E,0x08,0x66,0x2D,0x08,0x01,0x00,0x61,0x0E, +0x1A,0x67,0x00,0x0C,0x3B,0x00,0x10,0x65,0x00,0x0C,0x44,0x00,0x0A,0x62,0x41,0x06, +0x19,0x00,0x00,0x70,0x00,0x60,0xB2,0x01,0x6D,0x20,0x66,0x0E,0x30,0x10,0x00,0x00, +0x2D,0x08,0x02,0x00,0x61,0x0E,0x60,0x67,0x00,0x0C,0x0D,0x00,0x04,0x66,0x0A,0x70, +0x2A,0x67,0x01,0x0C,0x47,0x00,0x08,0x66,0x41,0x06,0x30,0x00,0x00,0x60,0x8A,0x01, +0x01,0x0C,0x4B,0x00,0x08,0x66,0x73,0x72,0x00,0x70,0x00,0x60,0x7C,0x01,0x01,0x0C, +0x4D,0x00,0x08,0x66,0x74,0x72,0x00,0x70,0x00,0x60,0x6E,0x01,0x00,0x0C,0x32,0x00, +0x06,0x66,0x00,0x70,0x00,0x60,0x62,0x01,0x00,0x0C,0x36,0x00,0x06,0x66,0x1E,0x70, +0x00,0x60,0x56,0x01,0x00,0x0C,0x2D,0x00,0x06,0x66,0x1F,0x70,0x00,0x60,0x4A,0x01, +0x40,0x02,0x1F,0x00,0x00,0x60,0x42,0x01,0x2D,0x08,0x03,0x00,0x61,0x0E,0x00,0x67, +0x38,0x01,0x01,0x0C,0x1A,0x00,0x18,0x66,0x3C,0x10,0x40,0x00,0x2D,0x14,0x61,0x0E, +0x02,0x02,0x03,0x00,0x00,0x67,0x22,0x01,0x3C,0x10,0x5C,0x00,0x00,0x60,0x1A,0x01, +0x01,0x0C,0x27,0x00,0x18,0x66,0x3C,0x10,0x5B,0x00,0x2D,0x14,0x61,0x0E,0x02,0x02, +0x03,0x00,0x00,0x67,0x04,0x01,0x3C,0x10,0x7B,0x00,0x00,0x60,0xFC,0x00,0x01,0x0C, +0x28,0x00,0x18,0x66,0x3C,0x10,0x5D,0x00,0x2D,0x14,0x61,0x0E,0x02,0x02,0x03,0x00, +0x00,0x67,0xE6,0x00,0x3C,0x10,0x7D,0x00,0x00,0x60,0xDE,0x00,0x01,0x0C,0x62,0x00, +0x0A,0x66,0x6D,0x52,0xEE,0x04,0x5F,0x20,0x00,0x60,0x12,0x01,0xF9,0x45,0xFC,0x00, +0xFA,0x2E,0x03,0x74,0x32,0xB2,0x00,0x20,0x00,0x67,0x2C,0x01,0xCA,0x51,0xF6,0xFF, +0x01,0x0C,0x48,0x00,0x1C,0x66,0x3C,0x12,0x00,0x00,0x3C,0x14,0xF8,0xFF,0x2D,0x10, +0x61,0x0E,0x00,0x02,0x03,0x00,0x00,0x67,0x2C,0x01,0x3C,0x14,0xFF,0xFF,0x00,0x60, +0x24,0x01,0x01,0x0C,0x4B,0x00,0x1C,0x66,0x3C,0x14,0x00,0x00,0x3C,0x12,0xF8,0xFF, +0x2D,0x10,0x61,0x0E,0x00,0x02,0x03,0x00,0x00,0x67,0x0A,0x01,0x3C,0x12,0xFF,0xFF, +0x00,0x60,0x02,0x01,0x01,0x0C,0x4D,0x00,0x1C,0x66,0x3C,0x12,0x08,0x00,0x3C,0x14, +0x00,0x00,0x2D,0x10,0x61,0x0E,0x00,0x02,0x03,0x00,0x00,0x67,0xE8,0x00,0x3C,0x12, +0x01,0x00,0x00,0x60,0xE0,0x00,0x01,0x0C,0x50,0x00,0x1C,0x66,0x3C,0x12,0x00,0x00, +0x3C,0x14,0x08,0x00,0x2D,0x10,0x61,0x0E,0x00,0x02,0x03,0x00,0x00,0x67,0xC6,0x00, +0x3C,0x14,0x01,0x00,0x00,0x60,0xBE,0x00,0x01,0x0C,0x02,0x00,0x0C,0x65,0x01,0x0C, +0x0D,0x00,0x06,0x62,0x01,0x06,0x76,0x00,0x0C,0x60,0x00,0x0C,0x41,0x00,0x0A,0x65, +0x00,0x0C,0x5A,0x00,0x04,0x62,0x00,0x70,0x0E,0x60,0x00,0x0C,0x61,0x00,0x08,0x65, +0x00,0x0C,0x7A,0x00,0x02,0x62,0xEE,0x60,0x41,0xE1,0x41,0xD0,0x5F,0x20,0x28,0x32, +0x08,0x00,0x41,0x58,0x68,0xB2,0x04,0x00,0x02,0x65,0x00,0x72,0x68,0xB2,0x06,0x00, +0x2A,0x67,0x68,0x24,0x00,0x00,0x40,0x48,0x3C,0x30,0x00,0x00,0x2D,0x10,0x61,0x0E, +0x40,0x48,0x88,0xE1,0x48,0xE0,0x2D,0x08,0x03,0x00,0x84,0x04,0x06,0x66,0x80,0x02, +0xFF,0x00,0xFF,0xFF,0x80,0x25,0x00,0x10,0x41,0x31,0x08,0x00,0x75,0x4E,0x6D,0x24, +0x12,0x0E,0xD2,0x4E,0x28,0x32,0x08,0x00,0x41,0x52,0x68,0xB2,0x04,0x00,0x02,0x65, +0x00,0x72,0x68,0xB2,0x06,0x00,0x0C,0x67,0x68,0x24,0x00,0x00,0x80,0x15,0x00,0x10, +0x41,0x31,0x08,0x00,0x75,0x4E,0x05,0x76,0x01,0x08,0x04,0x00,0x02,0x67,0x06,0x76, +0x01,0x08,0x07,0x00,0x06,0x67,0xAD,0x07,0x61,0x0E,0x04,0x60,0xED,0x07,0x61,0x0E, +0x00,0x72,0x00,0x74,0xED,0x41,0x5E,0x0E,0x6D,0x24,0x22,0x0E,0x80,0x42,0x2D,0x10, +0x61,0x0E,0x08,0xEA,0x00,0x06,0xF8,0x00,0x40,0x11,0x00,0x00,0x41,0x11,0x01,0x00, +0x42,0x11,0x02,0x00,0x92,0x4E,0x5F,0x20,0x75,0x4E,0xC7,0x47,0xD2,0x52,0x2F,0x30, +0x04,0x00,0x2F,0x32,0x06,0x00,0xE7,0x40,0x7C,0x00,0x00,0x07,0xE7,0x48,0x80,0x60, +0xF9,0x41,0xFF,0xFF,0x00,0x88,0x01,0x14,0x01,0x02,0x0F,0x00,0x81,0x10,0x02,0xE3, +0x04,0x64,0x40,0x11,0x02,0x00,0x00,0x70,0x10,0x10,0xDF,0x4C,0x06,0x01,0xDF,0x46, +0x75,0x4E,0xEF,0x74,0x2C,0x60,0x00,0x74,0x2F,0x34,0x04,0x00,0xE7,0x48,0x00,0xE0, +0xE7,0x40,0x7C,0x00,0x00,0x07,0x0E,0x72,0x02,0x2F,0xBA,0x61,0x1F,0x24,0x02,0x80, +0x8E,0x72,0xB2,0x61,0xDF,0x46,0xDF,0x4C,0x07,0x00,0x75,0x4E,0x00,0x74,0x2F,0x34, +0x04,0x00,0xE7,0x48,0x00,0xE0,0xE7,0x40,0x7C,0x00,0x00,0x07,0x0E,0x72,0x02,0x2F, +0x94,0x61,0x1F,0x24,0x02,0xC0,0x8E,0x72,0x8C,0x61,0xDF,0x46,0xDF,0x4C,0x07,0x00, +0x75,0x4E,0x6F,0x4A,0x04,0x00,0x26,0x67,0x6F,0x2B,0x0A,0x00,0x22,0x0E,0x6F,0x26, +0x06,0x00,0x6F,0x0C,0x01,0x00,0x04,0x00,0x24,0x67,0x6F,0x0C,0x02,0x00,0x04,0x00, +0x36,0x67,0x6F,0x0C,0x04,0x00,0x04,0x00,0x70,0x67,0x00,0x70,0x75,0x4E,0x12,0x72, +0x00,0x61,0x40,0xF2,0x7C,0x2B,0xFC,0x00,0x82,0x30,0x22,0x0E,0x70,0x60,0xED,0x45, +0x6E,0x0E,0xFC,0x14,0x08,0x00,0xFC,0x14,0x0B,0x00,0x66,0x61,0x06,0x76,0xED,0x45, +0x6E,0x0E,0x00,0x61,0x48,0xF2,0x56,0x60,0xED,0x45,0x6E,0x0E,0xFC,0x14,0x09,0x00, +0xEB,0x14,0x04,0x00,0xEB,0x14,0x05,0x00,0xEB,0x14,0x06,0x00,0xEB,0x14,0x07,0x00, +0xFC,0x14,0x0C,0x00,0x3C,0x61,0xFC,0x14,0x0E,0x00,0xFC,0x14,0x00,0x00,0xEB,0x14, +0x08,0x00,0xEB,0x14,0x09,0x00,0xEB,0x14,0x0A,0x00,0xEB,0x14,0x0B,0x00,0x10,0x76, +0xED,0x45,0x6E,0x0E,0x00,0x61,0x06,0xF2,0x14,0x60,0xED,0x45,0x6E,0x0E,0xFC,0x14, +0x0A,0x00,0x0E,0x61,0x05,0x76,0xED,0x45,0x6E,0x0E,0x00,0x61,0xF0,0xF1,0xFF,0x70, +0x75,0x4E,0xEB,0x14,0x02,0x00,0xEB,0x14,0x03,0x00,0x10,0x72,0x2B,0x92,0x00,0x00, +0xC1,0x14,0xFC,0x14,0x07,0x00,0xEB,0x14,0x01,0x00,0x75,0x4E,0x00,0x70,0x00,0x72, +0x00,0x74,0x2F,0x30,0x04,0x00,0x2F,0x32,0x06,0x00,0x2F,0x34,0x08,0x00,0x00,0x61, +0x50,0xF5,0xAF,0x4A,0x0A,0x00,0x1A,0x6B,0x6F,0x24,0x0A,0x00,0x00,0x72,0xF9,0x43, +0xFC,0x00,0x84,0x30,0x80,0x02,0x00,0x00,0xFF,0x00,0x31,0x10,0x00,0x00,0x00,0x61, +0xE6,0xF5,0x75,0x4E,0x08,0x0D,0x04,0x05,0xAF,0x4A,0x04,0x00,0x06,0x6B,0x6F,0x2B, +0x04,0x00,0x62,0x0E,0xAF,0x4A,0x08,0x00,0x06,0x6B,0x6F,0x2B,0x08,0x00,0x66,0x0E, +0xAF,0x4A,0x0C,0x00,0x06,0x6B,0x6F,0x2B,0x0C,0x00,0x6A,0x0E,0x3C,0x20,0x00,0x00, +0x62,0x0E,0x75,0x4E,0x7C,0x2B,0xFC,0x00,0x88,0x22,0x62,0x0E,0x7C,0x2B,0xFC,0x00, +0x08,0x23,0x66,0x0E,0x7C,0x2B,0xFC,0x00,0x88,0x23,0x6A,0x0E,0x75,0x4E,0x2D,0x20, +0x8A,0x0E,0x2F,0x22,0x04,0x00,0x08,0x6B,0x41,0x2B,0x8A,0x0E,0x2D,0x42,0x8E,0x0E, +0x75,0x4E,0x2D,0x30,0x90,0x0E,0x6F,0x4A,0x04,0x00,0x06,0x6B,0x6F,0x3B,0x04,0x00, +0x90,0x0E,0x75,0x4E,0x2D,0x30,0x82,0x0E,0x6F,0x4A,0x04,0x00,0x16,0x6B,0x2F,0x32, +0x04,0x00,0x41,0x1B,0x82,0x0E,0x6F,0x4A,0x06,0x00,0x08,0x6B,0x2F,0x32,0x06,0x00, +0x41,0x1B,0x83,0x0E,0x75,0x4E,0x3C,0x20,0x00,0x00,0x12,0x0E,0x75,0x4E,0xB9,0x52, +0x00,0x00,0xBA,0x04,0xF9,0xE7,0x00,0x00,0x88,0x0E,0x4E,0x6A,0xE7,0x48,0xFE,0xFF, +0xF9,0x4B,0x00,0x00,0x00,0x00,0x4C,0x61,0x2D,0x08,0x01,0x00,0x84,0x04,0x2A,0x67, +0x2D,0x4A,0x7F,0x0E,0x24,0x67,0x2D,0x4A,0x80,0x0E,0x06,0x67,0x2D,0x53,0x80,0x0E, +0x18,0x66,0x2D,0x53,0x81,0x0E,0x12,0x66,0x6D,0x1B,0x83,0x0E,0x81,0x0E,0x2D,0x10, +0x7F,0x0E,0xED,0x41,0x76,0x0C,0x00,0x61,0xDA,0xFA,0x2D,0x3F,0x42,0x04,0x6D,0x20, +0x00,0x04,0x90,0x4E,0x4F,0x54,0xDF,0x4C,0xFF,0x7F,0xB9,0x08,0x05,0x00,0xFF,0xFF, +0x11,0xFA,0x73,0x4E,0xE7,0x48,0x80,0xC0,0x2D,0x20,0x8A,0x0E,0x00,0x67,0x88,0x00, +0x40,0x20,0x2D,0x10,0x8E,0x0E,0x08,0x67,0x00,0x53,0x40,0x1B,0x8E,0x0E,0x76,0x60, +0x18,0x10,0x2E,0x6B,0xC0,0x13,0xFF,0xFF,0x00,0x88,0x00,0x0C,0x07,0x00,0x1A,0x66, +0x18,0x12,0x01,0x02,0x3F,0x00,0x39,0x10,0xFF,0xFF,0x00,0x88,0x00,0x02,0xC0,0x00, +0x01,0x80,0xC0,0x13,0xFF,0xFF,0x02,0x88,0xD6,0x60,0xD8,0x13,0xFF,0xFF,0x02,0x88, +0xCE,0x60,0x00,0x52,0x32,0x6A,0x00,0x0C,0x81,0x00,0x06,0x66,0x58,0x1B,0x8F,0x0E, +0xBE,0x60,0x00,0x0C,0x82,0x00,0x20,0x66,0xD8,0x13,0xFF,0xFF,0x00,0x88,0x18,0x10, +0x2D,0xD1,0x8F,0x0E,0x18,0x10,0xED,0x13,0x8F,0x0E,0xFF,0xFF,0x02,0x88,0x2D,0xB0, +0x8F,0x0E,0x0E,0x67,0x48,0x59,0x0A,0x60,0x58,0x1B,0x8E,0x0E,0x04,0x66,0x7C,0x30, +0x00,0x00,0x48,0x2B,0x8A,0x0E,0xDF,0x4C,0x03,0x01,0x75,0x4E,0x34,0x00,0x00,0x01, +0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x05,0x00,0x06,0xFE,0x07,0x10,0x08,0x00,0x09, +0x00,0x0A,0x00,0x0B,0x10,0x0C,0x09,0x0D,0x00,0xFF,0x3B,0x00,0x00,0x01,0x00,0x02, +0x00,0x03,0x00,0x04,0x00,0x05,0x00,0x06,0xFE,0x07,0x10,0x08,0x03,0x0D,0x80,0x0B, +0x01,0x0C,0x00,0xFF,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x6E,0x2A,0x08,0x00, +0x7C,0x28,0x00,0x00,0x50,0x2A,0x1E,0x7E,0x04,0x60,0xDD,0x18,0x47,0x53,0x47,0x4A, +0xF8,0x6E,0x79,0x0C,0x01,0x00,0x00,0x00,0x68,0x2A,0x0E,0x63,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x6C,0x0F,0x79,0x4A,0x00,0x00,0x68,0x2A, +0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13,0x00,0x00,0x4E,0x2A,0x79,0x4A, +0x00,0x00,0x58,0x2A,0x54,0x66,0x32,0x60,0x79,0x0C,0x01,0x00,0x00,0x00,0xEE,0x04, +0x3A,0x66,0x79,0x20,0x00,0x00,0x50,0x2A,0x10,0x10,0x80,0x48,0x80,0x3E,0x00,0x61, +0x3E,0x0F,0xB9,0x52,0x00,0x00,0x50,0x2A,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x1C,0x0F,0x40,0x42,0x39,0x30,0x00,0x00, +0x56,0x2A,0x79,0x53,0x00,0x00,0x56,0x2A,0x40,0x4A,0xBC,0x66,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0x40,0x42,0x00,0x60,0xFC,0x0E,0x79,0x0C,0x03,0x00,0x00,0x00, +0x66,0x2A,0x0E,0x63,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60, +0xE4,0x0E,0x79,0x0C,0x01,0x00,0x00,0x00,0x60,0x2A,0x0E,0x63,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0xCC,0x0E,0x79,0x0C,0x02,0x00,0x00,0x00, +0x5E,0x2A,0x0E,0x63,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60, +0xB4,0x0E,0x79,0x0C,0x07,0x00,0x00,0x00,0x54,0x2A,0x0E,0x63,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x9C,0x0E,0x79,0x4A,0x00,0x00,0x5E,0x2A, +0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13,0x00,0x00,0x3C,0x88,0x79,0x0C, +0x01,0x00,0x00,0x00,0x5E,0x2A,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13, +0x00,0x00,0x86,0x87,0x79,0x0C,0x02,0x00,0x00,0x00,0x5E,0x2A,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0xC0,0x13,0x00,0x00,0x88,0x87,0x79,0x4A,0x00,0x00,0x60,0x2A, +0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13,0x00,0x00,0xA0,0x87,0x79,0x0C, +0x01,0x00,0x00,0x00,0x66,0x2A,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13, +0x00,0x00,0x00,0x7F,0x79,0x0C,0x02,0x00,0x00,0x00,0x66,0x2A,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0xC0,0x13,0x00,0x00,0x3E,0x88,0x79,0x0C,0x03,0x00,0x00,0x00, +0x66,0x2A,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13,0x00,0x00,0x22,0x7F, +0x39,0x4A,0x00,0x00,0x3E,0x88,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04, +0xFF,0x70,0x00,0x60,0xF0,0x0D,0x39,0x4A,0x00,0x00,0x22,0x7F,0x0C,0x67,0x39,0x4A, +0x00,0x00,0xA0,0x87,0x04,0x66,0x01,0x70,0x08,0x60,0x39,0x10,0x00,0x00,0xA0,0x87, +0x80,0x48,0xC0,0x13,0x00,0x00,0xA0,0x87,0x39,0x4A,0x00,0x00,0x3C,0x88,0x26,0x67, +0x79,0x0C,0x40,0x01,0x00,0x00,0x56,0x2A,0x1C,0x63,0x40,0x42,0x39,0x30,0x00,0x00, +0x56,0x2A,0x7C,0xD0,0xC0,0xFE,0x79,0xD1,0x00,0x00,0x5C,0x2A,0xFC,0x33,0x40,0x01, +0x00,0x00,0x56,0x2A,0x24,0x60,0x79,0x0C,0x80,0x02,0x00,0x00,0x56,0x2A,0x1A,0x63, +0x40,0x42,0x39,0x30,0x00,0x00,0x56,0x2A,0x7C,0xD0,0x80,0xFD,0x79,0xD1,0x00,0x00, +0x5C,0x2A,0xFC,0x33,0x80,0x02,0x00,0x00,0x56,0x2A,0xB9,0x4A,0x00,0x00,0x6A,0x2A, +0x14,0x66,0xFC,0x23,0xFD,0x00,0xD8,0x2F,0x00,0x00,0x6A,0x2A,0xFC,0x13,0x01,0x00, +0x00,0x00,0x5C,0x75,0x06,0x60,0x39,0x42,0x00,0x00,0x5C,0x75,0x39,0x4A,0x00,0x00, +0x88,0x87,0x18,0x67,0x79,0x20,0x00,0x00,0x62,0x2A,0x40,0x42,0x10,0x30,0x7C,0xC0, +0x01,0x00,0xC0,0x33,0x00,0x00,0x2E,0x88,0x00,0x60,0x90,0x02,0x47,0x42,0x00,0x60, +0x82,0x02,0x79,0x20,0x00,0x00,0x62,0x2A,0x40,0x42,0x10,0x30,0x7C,0xC0,0x77,0x07, +0xC0,0x33,0x00,0x00,0xEC,0x7E,0xB9,0x54,0x00,0x00,0x62,0x2A,0x79,0x0C,0x77,0x07, +0x00,0x00,0xEC,0x7E,0x00,0x67,0x30,0x02,0x39,0x30,0x00,0x00,0xEC,0x7E,0x7C,0xC0, +0x07,0x00,0xC0,0x33,0x00,0x00,0xF2,0x68,0x39,0x30,0x00,0x00,0xEC,0x7E,0x40,0xE8, +0x7C,0xC0,0x07,0x00,0xC0,0x33,0x00,0x00,0x8A,0x87,0x39,0x30,0x00,0x00,0xEC,0x7E, +0x40,0xE0,0x7C,0xC0,0x07,0x00,0xC0,0x33,0x00,0x00,0xC6,0x7D,0x39,0x4A,0x00,0x00, +0x00,0x7F,0x00,0x67,0xA0,0x01,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x02,0x7F, +0xB9,0x30,0x00,0x00,0xC6,0x7D,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x02,0x7F, +0x30,0x30,0x00,0x98,0x79,0xB0,0x00,0x00,0x8A,0x87,0x08,0x6C,0x39,0x30,0x00,0x00, +0x8A,0x87,0x0E,0x60,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x02,0x7F,0x30,0x30, +0x00,0x98,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x02,0x7F,0x80,0x32,0x47,0x30, +0xC8,0xD1,0x7C,0x22,0x00,0x00,0x02,0x7F,0x30,0x30,0x00,0x98,0x79,0xB0,0x00,0x00, +0xF2,0x68,0x08,0x6C,0x39,0x30,0x00,0x00,0xF2,0x68,0x0E,0x60,0x47,0x30,0xC8,0xD1, +0x7C,0x22,0x00,0x00,0x02,0x7F,0x30,0x30,0x00,0x98,0x47,0x32,0xC9,0xD3,0xFC,0xD3, +0x00,0x00,0x02,0x7F,0x80,0x32,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x02,0x7F, +0x50,0x52,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xA4,0x87,0xB9,0x30,0x00,0x00, +0xC6,0x7D,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0xA4,0x87,0x30,0x30,0x00,0x98, +0x79,0xB0,0x00,0x00,0x8A,0x87,0x08,0x6F,0x39,0x30,0x00,0x00,0x8A,0x87,0x0E,0x60, +0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0xA4,0x87,0x30,0x30,0x00,0x98,0x47,0x32, +0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xA4,0x87,0x80,0x32,0x47,0x30,0xC8,0xD1,0x7C,0x22, +0x00,0x00,0xA4,0x87,0x30,0x30,0x00,0x98,0x79,0xB0,0x00,0x00,0xF2,0x68,0x08,0x6F, +0x39,0x30,0x00,0x00,0xF2,0x68,0x0E,0x60,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00, +0xA4,0x87,0x30,0x30,0x00,0x98,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xA4,0x87, +0x80,0x32,0x39,0x30,0x00,0x00,0xC6,0x7D,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00, +0xA4,0x87,0x11,0x32,0x41,0x52,0x41,0x90,0x04,0x6E,0x40,0x42,0x02,0x60,0x01,0x70, +0xC0,0x33,0x00,0x00,0xC6,0x7D,0x39,0x30,0x00,0x00,0x8A,0x87,0x47,0x32,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0xA4,0x87,0x11,0x32,0x41,0x52,0x41,0x90,0x04,0x6E,0x40,0x42, +0x02,0x60,0x01,0x70,0xC0,0x33,0x00,0x00,0x8A,0x87,0x39,0x30,0x00,0x00,0xF2,0x68, +0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xA4,0x87,0x11,0x32,0x41,0x52,0x41,0x90, +0x04,0x6E,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x33,0x00,0x00,0xF2,0x68,0x39,0x30, +0x00,0x00,0xC6,0x7D,0x40,0xE5,0x39,0x32,0x00,0x00,0x8A,0x87,0x41,0xE3,0x41,0xD0, +0x79,0xD0,0x00,0x00,0xF2,0x68,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xCA,0x7D, +0x80,0x32,0x50,0x60,0x39,0x30,0x00,0x00,0xC6,0x7D,0xFC,0xC1,0x1E,0x00,0x39,0x32, +0x00,0x00,0x8A,0x87,0xFC,0xC3,0x3B,0x00,0x41,0xD0,0x39,0x32,0x00,0x00,0xF2,0x68, +0xFC,0xC3,0x0B,0x00,0x41,0xD0,0xC0,0x48,0xFC,0x81,0x64,0x00,0x47,0x32,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0xA4,0x87,0x80,0x32,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xCA,0x7D,0xBC,0x30,0x07,0x00,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x02,0x7F, +0xBC,0x30,0x08,0x00,0x2A,0x60,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xA4,0x87, +0xBC,0x30,0x08,0x00,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xCA,0x7D,0xBC,0x30, +0x07,0x00,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x02,0x7F,0xBC,0x30,0x08,0x00, +0x47,0x52,0x7C,0xBE,0x10,0x00,0x00,0x6D,0x7A,0xFD,0x39,0x4A,0x00,0x00,0x3C,0x88, +0x16,0x67,0x04,0x70,0xC0,0x33,0x00,0x00,0xC4,0x87,0xC0,0x33,0x00,0x00,0x9A,0x87, +0xC0,0x33,0x00,0x00,0x9A,0x7E,0x38,0x60,0x39,0x4A,0x00,0x00,0x86,0x87,0x18,0x67, +0x02,0x70,0xC0,0x33,0x00,0x00,0xC4,0x87,0xC0,0x33,0x00,0x00,0x9A,0x7E,0xFC,0x33, +0x04,0x00,0x00,0x00,0x9A,0x87,0x18,0x60,0xFC,0x33,0x01,0x00,0x00,0x00,0x9A,0x7E, +0xFC,0x33,0x08,0x00,0x00,0x00,0x9A,0x87,0xFC,0x33,0x02,0x00,0x00,0x00,0xC4,0x87, +0x39,0x4A,0x00,0x00,0x22,0x7F,0x06,0x67,0x3C,0x3F,0x02,0x00,0x04,0x60,0x3C,0x3F, +0x01,0x00,0x39,0x30,0x00,0x00,0xC4,0x87,0xC0,0x48,0xDF,0x81,0xC0,0x33,0x00,0x00, +0xC4,0x87,0x40,0x42,0x39,0x30,0x00,0x00,0x5A,0x2A,0x79,0xD0,0x00,0x00,0x56,0x2A, +0x79,0xD0,0x00,0x00,0x5C,0x2A,0xF9,0xC0,0x00,0x00,0x9A,0x7E,0x48,0xE8,0xC0,0x33, +0x00,0x00,0xC8,0x7D,0x39,0x30,0x00,0x00,0xC8,0x7D,0xF9,0xC1,0x00,0x00,0x9A,0x87, +0xC0,0x33,0x00,0x00,0xB2,0x75,0x39,0x20,0x00,0x00,0x50,0x2A,0xBC,0xC0,0xFF,0xFF, +0xFE,0xFF,0xC0,0x23,0x00,0x00,0xEA,0x7D,0x39,0x20,0x00,0x00,0x50,0x2A,0xB9,0xB0, +0x00,0x00,0xEA,0x7D,0x0A,0x66,0x40,0x42,0x39,0x30,0x00,0x00,0x54,0x2A,0x0A,0x60, +0x40,0x42,0x39,0x30,0x00,0x00,0x54,0x2A,0x40,0x50,0xC0,0x33,0x00,0x00,0xEE,0x7E, +0xFC,0x13,0x01,0x00,0x00,0x00,0x42,0x88,0x79,0x42,0x00,0x00,0x08,0x17,0x00,0x60, +0x76,0x09,0x79,0x0C,0x01,0x00,0x00,0x00,0xEE,0x04,0x00,0x66,0x7C,0x09,0x39,0x4A, +0x00,0x00,0x5C,0x75,0x00,0x67,0x8E,0x01,0xFC,0x13,0x01,0x00,0x00,0x00,0x58,0x69, +0x40,0x42,0x39,0x30,0x00,0x00,0x56,0x2A,0xF9,0xC0,0x00,0x00,0x9A,0x7E,0x48,0xE8, +0x79,0x90,0x00,0x00,0x9A,0x7E,0x48,0xE3,0x40,0x48,0x40,0x42,0x40,0x48,0xB9,0xD0, +0x00,0x00,0xEA,0x7D,0xC0,0x23,0x00,0x00,0x8C,0x87,0x0F,0x70,0x41,0x42,0x39,0x32, +0x00,0x00,0x56,0x2A,0x7C,0xC2,0x0F,0x00,0x41,0x90,0xC0,0x33,0x00,0x00,0xCA,0x87, +0xF9,0x33,0x00,0x00,0x56,0x2A,0x00,0x00,0x5E,0x75,0x00,0x60,0x2C,0x01,0x40,0x42, +0x39,0x30,0x00,0x00,0x58,0x2A,0x79,0x90,0x00,0x00,0x08,0x17,0x40,0x48,0x40,0x42, +0x40,0x48,0xF9,0x80,0x00,0x00,0x9A,0x87,0x08,0x67,0x39,0x30,0x00,0x00,0x9A,0x87, +0x0E,0x60,0x40,0x42,0x39,0x30,0x00,0x00,0x58,0x2A,0x79,0x90,0x00,0x00,0x08,0x17, +0xC0,0x33,0x00,0x00,0x82,0x87,0xF9,0x23,0x00,0x00,0x8C,0x87,0x00,0x00,0x8E,0x80, +0x47,0x42,0x00,0x60,0xA6,0x00,0x79,0x42,0x00,0x00,0xD2,0x87,0xFC,0x33,0x01,0x00, +0x00,0x00,0xC6,0x87,0xF9,0x23,0x00,0x00,0x8E,0x80,0x00,0x00,0xF0,0x7E,0x46,0x42, +0x30,0x60,0x79,0x20,0x00,0x00,0xF0,0x7E,0x10,0x30,0x0F,0x72,0x79,0x92,0x00,0x00, +0xCA,0x87,0x60,0xE2,0x7C,0xC0,0x01,0x00,0xF9,0xC1,0x00,0x00,0xC6,0x87,0x79,0xD1, +0x00,0x00,0xD2,0x87,0xB9,0x54,0x00,0x00,0xF0,0x7E,0xF9,0xE1,0x00,0x00,0xC6,0x87, +0x46,0x52,0x79,0xBC,0x00,0x00,0x9A,0x7E,0xC8,0x6D,0x39,0x4A,0x00,0x00,0x88,0x87, +0x1A,0x67,0x39,0x30,0x00,0x00,0xD2,0x87,0x39,0x32,0x00,0x00,0x2E,0x88,0x40,0xB3, +0x08,0x66,0x39,0x42,0x00,0x00,0x58,0x69,0x3A,0x60,0x1C,0x60,0x79,0x30,0x00,0x00, +0xD2,0x87,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xA4,0x87,0x50,0x0C,0x08,0x00,0x08,0x67, +0x39,0x42,0x00,0x00,0x58,0x69,0x1C,0x60,0x39,0x30,0x00,0x00,0xC8,0x7D,0x40,0xE3, +0xC0,0x48,0xB9,0xD1,0x00,0x00,0x8E,0x80,0x47,0x52,0x79,0xBE,0x00,0x00,0x82,0x87, +0x00,0x6D,0x54,0xFF,0x39,0x4A,0x00,0x00,0x58,0x69,0x36,0x67,0x79,0x53,0x00,0x00, +0xCA,0x87,0x79,0x4A,0x00,0x00,0xCA,0x87,0x18,0x6C,0x39,0x30,0x00,0x00,0x9A,0x7E, +0x40,0xE3,0xC0,0x48,0xB9,0x91,0x00,0x00,0x8C,0x87,0xFC,0x33,0x0F,0x00,0x00,0x00, +0xCA,0x87,0x79,0x53,0x00,0x00,0x5E,0x75,0x79,0x4A,0x00,0x00,0x5E,0x75,0x00,0x6E, +0xCE,0xFE,0x0A,0x60,0xF9,0x33,0x00,0x00,0x56,0x2A,0x00,0x00,0x5E,0x75,0x39,0x3E, +0x00,0x00,0x5E,0x75,0xF9,0xCF,0x00,0x00,0xC4,0x87,0x39,0x4A,0x00,0x00,0x22,0x7F, +0x0A,0x67,0x07,0x30,0xC0,0x48,0xFC,0x81,0x02,0x00,0x02,0x60,0x40,0x42,0x40,0xDE, +0x07,0x30,0xC0,0x48,0xFC,0x81,0x00,0x01,0x40,0x48,0xC0,0x13,0x00,0x00,0xB8,0x75, +0x07,0x30,0xC0,0x48,0xFC,0x81,0x00,0x01,0xC0,0x13,0x00,0x00,0xBA,0x75,0x79,0x42, +0x00,0x00,0x24,0x7F,0x00,0x60,0x56,0x06,0x79,0x42,0x00,0x00,0x44,0x88,0x00,0x60, +0xF0,0x05,0x39,0x4A,0x00,0x00,0x00,0x7F,0x00,0x67,0x76,0x00,0x39,0x4A,0x00,0x00, +0x88,0x87,0x00,0x66,0x6C,0x00,0x79,0x4A,0x00,0x00,0x44,0x88,0x1E,0x66,0xBC,0x2E, +0xFD,0x00,0xEA,0x2F,0x00,0x61,0xE4,0x07,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x7C,0x07,0x44,0x60,0x79,0x0C,0x01,0x00, +0x00,0x00,0x44,0x88,0x1E,0x66,0xBC,0x2E,0xFD,0x00,0xEF,0x2F,0x00,0x61,0xBC,0x07, +0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60, +0x54,0x07,0x1C,0x60,0xBC,0x2E,0xFD,0x00,0xF4,0x2F,0x00,0x61,0x9E,0x07,0x40,0x4A, +0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x36,0x07, +0x39,0x4A,0x00,0x00,0x22,0x7F,0x08,0x67,0xBC,0x2E,0xFD,0x00,0xF9,0x2F,0x06,0x60, +0xBC,0x2E,0xFD,0x00,0xFD,0x2F,0x00,0x61,0x72,0x07,0x40,0x4A,0x0E,0x67,0xFC,0x33, +0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x0A,0x07,0x39,0x10,0x00,0x00, +0xB8,0x75,0x80,0x48,0x80,0x3E,0x00,0x61,0x06,0x07,0x40,0x4A,0x0E,0x67,0xFC,0x33, +0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0xEA,0x06,0x39,0x10,0x00,0x00, +0xBA,0x75,0x80,0x48,0x80,0x3E,0x00,0x61,0xE6,0x06,0x40,0x4A,0x0E,0x67,0xFC,0x33, +0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0xCA,0x06,0xFC,0x13,0x01,0x00, +0x00,0x00,0xA2,0x87,0xF9,0x23,0x00,0x00,0xEA,0x7D,0x00,0x00,0x8C,0x87,0xF9,0x33, +0x00,0x00,0xEE,0x7E,0x00,0x00,0xCA,0x87,0x79,0x42,0x00,0x00,0x06,0x17,0x00,0x60, +0xB0,0x04,0x47,0x42,0x0C,0x60,0x47,0x30,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x10,0x42, +0x47,0x52,0x7C,0xBE,0x08,0x00,0xEE,0x6D,0x47,0x42,0x1E,0x60,0x47,0x30,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xBC,0x75,0xBC,0x30,0x07,0x00,0x47,0x30,0xC8,0xD1,0xFC,0xD1, +0x00,0x00,0x90,0x87,0xBC,0x30,0x08,0x00,0x47,0x52,0x7C,0xBE,0x04,0x00,0xDC,0x6D, +0x40,0x42,0x39,0x30,0x00,0x00,0x58,0x2A,0x79,0x90,0x00,0x00,0x08,0x17,0x40,0x48, +0x40,0x42,0x40,0x48,0xF9,0x80,0x00,0x00,0x9A,0x87,0x08,0x67,0x39,0x30,0x00,0x00, +0x9A,0x87,0x0E,0x60,0x40,0x42,0x39,0x30,0x00,0x00,0x58,0x2A,0x79,0x90,0x00,0x00, +0x08,0x17,0xC0,0x33,0x00,0x00,0x82,0x87,0x40,0x42,0x39,0x30,0x00,0x00,0x58,0x2A, +0x79,0x90,0x00,0x00,0x08,0x17,0x40,0x48,0x40,0x42,0x40,0x48,0xF9,0x80,0x00,0x00, +0x9A,0x87,0x0C,0x67,0xF9,0x33,0x00,0x00,0x9A,0x87,0x00,0x00,0x82,0x87,0x1A,0x60, +0x40,0x42,0x39,0x30,0x00,0x00,0x58,0x2A,0x79,0x90,0x00,0x00,0x08,0x17,0xC0,0x33, +0x00,0x00,0x82,0x87,0x39,0x42,0x00,0x00,0x42,0x88,0xF9,0x23,0x00,0x00,0x8C,0x87, +0x00,0x00,0x8E,0x80,0x47,0x42,0x00,0x60,0x1C,0x01,0x79,0x42,0x00,0x00,0xD2,0x87, +0xFC,0x33,0x01,0x00,0x00,0x00,0xC6,0x87,0xF9,0x23,0x00,0x00,0x8E,0x80,0x00,0x00, +0xF0,0x7E,0x46,0x42,0x30,0x60,0x79,0x20,0x00,0x00,0xF0,0x7E,0x10,0x30,0x0F,0x72, +0x79,0x92,0x00,0x00,0xCA,0x87,0x60,0xE2,0x7C,0xC0,0x01,0x00,0xF9,0xC1,0x00,0x00, +0xC6,0x87,0x79,0xD1,0x00,0x00,0xD2,0x87,0xB9,0x54,0x00,0x00,0xF0,0x7E,0xF9,0xE1, +0x00,0x00,0xC6,0x87,0x46,0x52,0x79,0xBC,0x00,0x00,0x9A,0x7E,0xC8,0x6D,0x39,0x4A, +0x00,0x00,0x88,0x87,0x2C,0x67,0x39,0x30,0x00,0x00,0xD2,0x87,0x39,0x32,0x00,0x00, +0x2E,0x88,0x40,0xB3,0x0C,0x66,0x79,0x20,0x00,0x00,0x6A,0x2A,0x10,0x10,0x80,0x48, +0x02,0x60,0x40,0x42,0x47,0x32,0xFC,0xD3,0x00,0x00,0x26,0x7F,0x80,0x12,0x00,0x60, +0x82,0x00,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x79,0x32,0x00,0x00, +0xD2,0x87,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xA4,0x87,0x51,0x32,0xC9,0xD2,0xF9,0xD3, +0x00,0x00,0x6A,0x2A,0x91,0x10,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F, +0x79,0x32,0x00,0x00,0xD2,0x87,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xA4,0x87,0x51,0x32, +0xC9,0xD2,0xF9,0xD3,0x00,0x00,0x6A,0x2A,0x69,0x11,0x01,0x00,0x01,0x00,0x47,0x30, +0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xBC,0x75,0x79,0x32,0x00,0x00,0xD2,0x87,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0xCA,0x7D,0x91,0x30,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0x90,0x87,0x79,0x32,0x00,0x00,0xD2,0x87,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x02,0x7F, +0x91,0x30,0x39,0x30,0x00,0x00,0xC8,0x7D,0x40,0xE3,0xC0,0x48,0xB9,0xD1,0x00,0x00, +0x8E,0x80,0x47,0x52,0x79,0xBE,0x00,0x00,0x82,0x87,0x00,0x6D,0xDE,0xFE,0x39,0x4A, +0x00,0x00,0x00,0x7F,0x00,0x67,0xBE,0x01,0x39,0x4A,0x00,0x00,0x88,0x87,0x00,0x66, +0xB4,0x01,0x47,0x42,0x00,0x60,0xA4,0x01,0x39,0x42,0x00,0x00,0x98,0x87,0x79,0x4A, +0x00,0x00,0x44,0x88,0x26,0x66,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0xBC,0x75, +0x30,0x30,0x00,0x98,0xC0,0x48,0xFC,0x81,0x02,0x00,0x40,0x48,0x40,0x4A,0x08,0x67, +0xFC,0x13,0x01,0x00,0x00,0x00,0x98,0x87,0x00,0x60,0xF0,0x00,0x79,0x0C,0x01,0x00, +0x00,0x00,0x44,0x88,0x00,0x66,0x8C,0x00,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xBC,0x75,0x50,0x0C,0x06,0x00,0x30,0x66,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0x90,0x87,0x50,0x0C,0x08,0x00,0x20,0x6C,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00, +0x26,0x7F,0x10,0x02,0x01,0x00,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F, +0x28,0x02,0x04,0x00,0x01,0x00,0x48,0x60,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xBC,0x75,0x50,0x0C,0x02,0x00,0x30,0x67,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xBC,0x75,0x50,0x0C,0x03,0x00,0x20,0x67,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xBC,0x75,0x50,0x0C,0x06,0x00,0x10,0x67,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xBC,0x75,0x50,0x0C,0x07,0x00,0x08,0x66,0xFC,0x13,0x01,0x00,0x00,0x00,0x98,0x87, +0x58,0x60,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xBC,0x75,0x50,0x0C,0x06,0x00, +0x30,0x66,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x90,0x87,0x50,0x0C,0x08,0x00, +0x20,0x6C,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x10,0x02,0x04,0x00, +0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x28,0x02,0x01,0x00,0x01,0x00, +0x18,0x60,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xBC,0x75,0x50,0x0C,0x03,0x00, +0x08,0x6F,0xFC,0x13,0x01,0x00,0x00,0x00,0x98,0x87,0x39,0x4A,0x00,0x00,0x98,0x87, +0x1A,0x67,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x10,0x42,0x47,0x30, +0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x28,0x42,0x01,0x00,0x79,0x20,0x00,0x00, +0x6A,0x2A,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x90,0x87,0x51,0x32,0xC9,0xD2, +0x30,0x10,0x00,0x90,0x80,0x48,0x00,0x3F,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00, +0x26,0x7F,0x10,0x10,0x5F,0x80,0x80,0x10,0x79,0x20,0x00,0x00,0x6A,0x2A,0x47,0x32, +0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x90,0x87,0x51,0x32,0xC9,0xD2,0x30,0x10,0x01,0x90, +0x80,0x48,0x00,0x3F,0x47,0x30,0xC8,0xD0,0xFC,0xD1,0x00,0x00,0x26,0x7F,0x28,0x10, +0x01,0x00,0x5F,0x80,0x40,0x11,0x01,0x00,0x47,0x52,0x79,0xBE,0x00,0x00,0x82,0x87, +0x00,0x6D,0x56,0xFE,0x04,0x7E,0x00,0x60,0x8E,0x00,0x39,0x42,0x00,0x00,0xEE,0x68, +0xFC,0x33,0x80,0x00,0x00,0x00,0xC8,0x87,0x46,0x42,0x3E,0x60,0x7C,0x20,0x00,0x00, +0x26,0x7F,0x30,0x10,0x00,0x60,0x80,0x48,0x07,0x72,0x47,0x92,0x60,0xE2,0x7C,0xC0, +0x01,0x00,0xF9,0xC1,0x00,0x00,0xC8,0x87,0x39,0x12,0x00,0x00,0xEE,0x68,0x00,0xD2, +0xC1,0x13,0x00,0x00,0xEE,0x68,0x39,0x30,0x00,0x00,0xC8,0x87,0xC0,0x48,0xFC,0x81, +0x02,0x00,0xC0,0x33,0x00,0x00,0xC8,0x87,0x46,0x52,0x7C,0xBC,0x08,0x00,0xBC,0x6D, +0x39,0x10,0x00,0x00,0xEE,0x68,0x80,0x48,0x80,0x3E,0x00,0x61,0x92,0x02,0x40,0x4A, +0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x76,0x02, +0x39,0x4A,0x00,0x00,0xA2,0x87,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x13, +0x00,0x00,0xA2,0x87,0x47,0x52,0x39,0x30,0x00,0x00,0xC4,0x87,0x40,0x58,0x40,0xBE, +0x00,0x6D,0x68,0xFF,0x39,0x4A,0x00,0x00,0x22,0x7F,0x28,0x67,0x39,0x4A,0x00,0x00, +0xA2,0x87,0x20,0x67,0x39,0x10,0x00,0x00,0xEE,0x68,0x80,0x48,0x80,0x3E,0x00,0x61, +0x3E,0x02,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70, +0x00,0x60,0x22,0x02,0x79,0x52,0x00,0x00,0xCA,0x87,0x79,0x0C,0x0F,0x00,0x00,0x00, +0xCA,0x87,0x16,0x6F,0x39,0x30,0x00,0x00,0x9A,0x7E,0x40,0xE3,0xC0,0x48,0xB9,0xD1, +0x00,0x00,0x8C,0x87,0x79,0x42,0x00,0x00,0xCA,0x87,0x79,0x52,0x00,0x00,0x06,0x17, +0x39,0x30,0x00,0x00,0x06,0x17,0x79,0xB0,0x00,0x00,0x5E,0x75,0x00,0x6D,0x44,0xFB, +0xBC,0x3E,0x0D,0x00,0x00,0x61,0xE8,0x01,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0xCC,0x01,0x79,0x52,0x00,0x00,0x44,0x88, +0x39,0x4A,0x00,0x00,0x00,0x7F,0x0C,0x67,0x39,0x4A,0x00,0x00,0x88,0x87,0x04,0x66, +0x03,0x70,0x02,0x60,0x01,0x70,0x79,0xB0,0x00,0x00,0x44,0x88,0x00,0x6E,0xF4,0xF9, +0xBC,0x2E,0xFD,0x00,0x01,0x30,0x00,0x61,0xF2,0x01,0x40,0x4A,0x0E,0x67,0xFC,0x33, +0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x8A,0x01,0xBC,0x3E,0x0A,0x00, +0x00,0x61,0x8C,0x01,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04, +0xFF,0x70,0x00,0x60,0x70,0x01,0x79,0x52,0x00,0x00,0x24,0x7F,0x39,0x4A,0x00,0x00, +0xA0,0x87,0x04,0x67,0x01,0x70,0x02,0x60,0x02,0x70,0x79,0xB0,0x00,0x00,0x24,0x7F, +0x00,0x6E,0x96,0xF9,0x39,0x4A,0x00,0x00,0xA0,0x87,0x4E,0x67,0x47,0x42,0x38,0x60, +0xBC,0x2E,0xFD,0x00,0x06,0x30,0x00,0x61,0x92,0x01,0x40,0x4A,0x0E,0x67,0xFC,0x33, +0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x2A,0x01,0xBC,0x3E,0x0A,0x00, +0x00,0x61,0x2C,0x01,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04, +0xFF,0x70,0x00,0x60,0x10,0x01,0x47,0x52,0x39,0x4A,0x00,0x00,0x22,0x7F,0x04,0x67, +0x02,0x70,0x02,0x60,0x01,0x70,0x40,0xBE,0xB6,0x6D,0x39,0x4A,0x00,0x00,0x42,0x88, +0x38,0x67,0xBC,0x2E,0xFD,0x00,0x0B,0x30,0x00,0x61,0x40,0x01,0x40,0x4A,0x0E,0x67, +0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0xD8,0x00,0xBC,0x3E, +0x0A,0x00,0x00,0x61,0xDA,0x00,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00, +0xEE,0x04,0xFF,0x70,0x00,0x60,0xBE,0x00,0x60,0x60,0x47,0x42,0x38,0x60,0xBC,0x2E, +0xFD,0x00,0x0F,0x30,0x00,0x61,0x04,0x01,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xEE,0x04,0xFF,0x70,0x00,0x60,0x9C,0x00,0xBC,0x3E,0x0A,0x00,0x00,0x61, +0x9E,0x00,0x40,0x4A,0x0E,0x67,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xEE,0x04,0xFF,0x70, +0x00,0x60,0x82,0x00,0x47,0x52,0x39,0x4A,0x00,0x00,0x22,0x7F,0x0E,0x67,0x39,0x30, +0x00,0x00,0x82,0x87,0xFC,0xC1,0x06,0x00,0x40,0x57,0x0A,0x60,0x39,0x30,0x00,0x00, +0x82,0x87,0x40,0xE5,0x40,0x55,0x40,0xBE,0xA4,0x6D,0x39,0x30,0x00,0x00,0xB2,0x75, +0x40,0xE3,0xC0,0x48,0xB9,0xD1,0x00,0x00,0xEA,0x7D,0x39,0x30,0x00,0x00,0x9A,0x87, +0x79,0xD1,0x00,0x00,0x08,0x17,0x40,0x42,0x39,0x30,0x00,0x00,0x58,0x2A,0x79,0xB0, +0x00,0x00,0x08,0x17,0x00,0x62,0x7C,0xF6,0xBC,0x2E,0xFD,0x00,0x14,0x30,0x00,0x61, +0x7A,0x00,0x39,0x4A,0x00,0x00,0x00,0x7F,0x10,0x67,0x39,0x4A,0x00,0x00,0x88,0x87, +0x08,0x66,0xBC,0x2E,0xFD,0x00,0x18,0x30,0x60,0x61,0xFC,0x33,0xFF,0xFF,0x00,0x00, +0xEE,0x04,0x40,0x42,0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0x39,0x4A,0x00,0x00,0x4E,0x2A,0x22,0x67,0x2E,0x10,0x09,0x00,0x80,0x48, +0x80,0x3E,0x2E,0x10,0x09,0x00,0x80,0x48,0x00,0x3F,0xB9,0x4E,0xFC,0x00,0x8A,0x42, +0x8F,0x54,0x40,0x4A,0x04,0x66,0xFF,0x70,0x1C,0x60,0x18,0x60,0x2E,0x10,0x09,0x00, +0x80,0x48,0x80,0x3E,0x2E,0x10,0x09,0x00,0x80,0x48,0x00,0x3F,0xB9,0x4E,0xFC,0x00, +0xB8,0x42,0x8F,0x54,0x40,0x42,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x18,0x60, +0x6E,0x20,0x08,0x00,0x10,0x10,0x80,0x48,0x80,0x3E,0xA2,0x61,0xAE,0x52,0x08,0x00, +0x40,0x4A,0x04,0x67,0xFF,0x70,0x0C,0x60,0x6E,0x20,0x08,0x00,0x10,0x0C,0xFF,0x00, +0xDE,0x66,0x40,0x42,0x5E,0x4E,0x75,0x4E,0xE7,0x48,0x1E,0x1F,0xCD,0x9B,0x6D,0x20, +0x06,0x05,0x90,0x4E,0xDF,0x4C,0xF8,0x78,0x75,0x4E,0x2F,0x30,0x06,0x00,0xE7,0x48, +0x1E,0x1F,0x00,0x3F,0x00,0x3F,0xCD,0x9B,0x6D,0x20,0x0A,0x05,0x90,0x4E,0x4F,0x58, +0xDF,0x4C,0xF8,0x78,0x75,0x4E,0xE7,0x48,0x1E,0x1F,0xCD,0x9B,0x6D,0x20,0x0E,0x05, +0x90,0x4E,0xDF,0x4C,0xF8,0x78,0x75,0x4E,0x2F,0x30,0x06,0x00,0xE7,0x48,0x1E,0x1F, +0x00,0x3F,0x00,0x3F,0xCD,0x9B,0x6D,0x20,0x12,0x05,0x90,0x4E,0x4F,0x58,0xDF,0x4C, +0xF8,0x78,0x75,0x4E,0xF9,0x49,0x00,0x00,0x94,0x29,0x6C,0x20,0x0A,0x00,0x28,0x30, +0x0A,0x00,0x7C,0xB0,0x13,0x00,0x32,0x62,0x40,0xD0,0x3B,0x30,0x06,0x00,0xFB,0x4E, +0x02,0x00,0xB6,0x01,0x96,0x01,0xC8,0x01,0xC2,0x01,0xD0,0x01,0xE0,0x01,0xF4,0x01, +0x08,0x02,0x18,0x02,0x20,0x02,0x32,0x02,0x44,0x02,0x56,0x02,0x78,0x02,0x7E,0x02, +0x84,0x02,0xA4,0x02,0xB8,0x01,0xB6,0x02,0xC2,0x02,0x7C,0xB0,0x65,0x00,0x0A,0x67, +0x7C,0xB0,0x66,0x00,0x00,0x67,0x76,0x07,0x75,0x4E,0x00,0x61,0x0C,0x03,0x6C,0x20, +0x0E,0x00,0x10,0x30,0xEC,0xC0,0x08,0x00,0x40,0x39,0xE8,0xFF,0x00,0x60,0xCA,0x02, +0x2F,0x32,0x06,0x00,0x7C,0xC2,0xFF,0x00,0x00,0x60,0x00,0x04,0x2F,0x32,0x06,0x00, +0xF9,0x49,0x00,0x00,0x94,0x29,0x7C,0xC2,0xFF,0x00,0x79,0x20,0x00,0x00,0xA8,0x04, +0xD0,0x4E,0x7C,0xB2,0x20,0x00,0x00,0x6C,0xE2,0x03,0x3C,0xB2,0x1B,0x00,0x06,0x66, +0xFA,0x41,0x3C,0x00,0x54,0x60,0x41,0x5F,0x56,0x6B,0x7C,0xB2,0x06,0x00,0x50,0x6E, +0x41,0xD2,0x3B,0x32,0x06,0x10,0xFB,0x4E,0x02,0x10,0x0E,0x00,0x70,0x01,0x12,0x00, +0x1E,0x03,0x1E,0x03,0x1E,0x03,0x14,0x03,0x00,0x60,0xD6,0xDE,0x2C,0x30,0xEA,0xFF, +0x40,0x02,0xF8,0xFF,0x40,0x50,0x2C,0x32,0xEC,0xFF,0x00,0x60,0xAA,0x06,0xFA,0x41, +0xB2,0xFF,0x16,0x61,0x7C,0x92,0x41,0x00,0x16,0x6B,0x7C,0xB2,0x0C,0x00,0x6E,0x6F, +0x7C,0xB2,0x18,0x00,0x5A,0x66,0xFA,0x41,0x0A,0x00,0xC8,0x23,0x00,0x00,0xA8,0x04, +0x75,0x4E,0x7C,0x92,0x20,0x00,0xC1,0x33,0x00,0x00,0xAC,0x04,0xFA,0x41,0x04,0x00, +0xE8,0x60,0x7C,0x92,0x20,0x00,0x01,0x30,0x39,0x32,0x00,0x00,0xAC,0x04,0x00,0x61, +0x66,0x06,0xFA,0x41,0x6E,0xFF,0xD2,0x60,0xFA,0x41,0x04,0x00,0xCC,0x60,0x7C,0x92, +0x20,0x00,0x41,0x39,0xE2,0xFF,0xFA,0x41,0x5A,0xFF,0xBE,0x60,0xFA,0x41,0x04,0x00, +0xB8,0x60,0x7C,0x92,0x20,0x00,0x41,0x39,0xE0,0xFF,0xFA,0x41,0x46,0xFF,0xAA,0x60, +0x7C,0x92,0x21,0x00,0xA4,0x6B,0x7C,0xB2,0x15,0x00,0x0C,0x6F,0x75,0x4E,0x41,0xD2, +0x3B,0x32,0x10,0x10,0xFB,0x4E,0x0C,0x10,0x41,0xD2,0x3B,0x32,0x20,0x10,0xFB,0x4E, +0x1C,0x10,0x80,0x00,0x90,0x00,0xA4,0x00,0xB8,0x00,0x7C,0x00,0x8E,0xFF,0x8E,0xFF, +0xC8,0x00,0x78,0x01,0xD0,0x00,0xE2,0x00,0x8A,0x01,0xA0,0x01,0x9C,0xFF,0xB0,0xFF, +0x92,0x01,0xBC,0x01,0xD6,0x01,0x74,0xFF,0x74,0xFF,0x74,0xFF,0xEE,0x01,0xFA,0x01, +0x0E,0x02,0x74,0xFF,0x74,0xFF,0x20,0x02,0x0E,0x01,0x14,0x01,0x74,0xFF,0x74,0xFF, +0x74,0xFF,0x74,0xFF,0x36,0x02,0x3C,0x02,0x6C,0x20,0x0A,0x00,0x7C,0x31,0x02,0x00, +0x08,0x00,0x6C,0x20,0x16,0x00,0x2C,0x30,0xDA,0xFF,0x40,0x52,0x40,0x31,0x02,0x00, +0x2C,0x30,0xDC,0xFF,0x40,0x52,0x80,0x30,0x75,0x4E,0x3C,0x3F,0x14,0x00,0x4E,0x4E, +0x8F,0x54,0x75,0x4E,0x08,0x61,0x00,0x60,0x60,0x01,0x00,0x61,0x7C,0x01,0x4A,0x61, +0x50,0x60,0x2C,0x32,0xEC,0xFF,0xE0,0x67,0x41,0x53,0x2C,0x30,0xEA,0xFF,0x00,0x60, +0x86,0x05,0x2C,0x32,0xEC,0xFF,0x6C,0xB2,0xDC,0xFF,0xCC,0x67,0x41,0x52,0x2C,0x30, +0xEA,0xFF,0x00,0x60,0x72,0x05,0x2C,0x30,0xEA,0xFF,0x6C,0xB0,0xDA,0xFF,0xB8,0x67, +0x40,0x52,0x2C,0x32,0xEC,0xFF,0x00,0x60,0x5E,0x05,0x2C,0x30,0xEA,0xFF,0xA8,0x67, +0x40,0x53,0x2C,0x32,0xEC,0xFF,0x00,0x60,0x4E,0x05,0x40,0x42,0x41,0x42,0x00,0x60, +0x46,0x05,0x10,0x61,0x2C,0x36,0xDC,0xFF,0x43,0xB2,0x8C,0x67,0x40,0x42,0x41,0x52, +0x00,0x60,0x66,0x01,0x2C,0x30,0xEA,0xFF,0x2C,0x32,0xEC,0xFF,0x2C,0x34,0xDA,0xFF, +0x01,0x36,0x00,0x60,0x54,0x01,0x6C,0x20,0x0E,0x00,0x10,0x32,0x41,0x53,0x28,0x30, +0x02,0x00,0x40,0x53,0x00,0x60,0x10,0x05,0x6C,0x20,0x0A,0x00,0x28,0x30,0x06,0x00, +0x6C,0x20,0x0E,0x00,0x0E,0x60,0x18,0x32,0xE7,0x48,0x80,0x80,0x00,0x61,0xF2,0xFD, +0xDF,0x4C,0x01,0x01,0xC8,0x51,0xF0,0xFF,0x75,0x4E,0xD4,0x08,0x04,0x00,0x75,0x4E, +0x94,0x08,0x04,0x00,0x75,0x4E,0x6C,0x20,0x0A,0x00,0x7C,0x31,0x02,0x00,0x08,0x00, +0x6C,0x20,0x16,0x00,0x2C,0x30,0xEC,0xFF,0x40,0x52,0xC0,0x30,0x2C,0x30,0xEA,0xFF, +0x40,0x52,0x80,0x30,0x75,0x4E,0x01,0x70,0x6C,0x20,0x0A,0x00,0x40,0x31,0x08,0x00, +0x6C,0x20,0x16,0x00,0x80,0x30,0x75,0x4E,0x6C,0x20,0x0E,0x00,0x50,0x42,0xF9,0x4E, +0xFC,0x00,0x7A,0xB1,0xF9,0x4E,0xFC,0x00,0xA2,0xB1,0x2C,0x32,0xEC,0xFF,0x00,0x66, +0x08,0xFF,0x00,0x61,0x74,0x00,0x00,0x61,0x42,0x03,0x3C,0x60,0x6A,0x61,0x2C,0x32, +0xEC,0xFF,0x00,0x61,0x36,0x03,0x40,0x42,0x2C,0x32,0xEC,0xFF,0x00,0x61,0x78,0x04, +0x26,0x60,0x54,0x61,0x2C,0x32,0xEC,0xFF,0x00,0x61,0xBC,0x02,0xE8,0x60,0x2C,0x36, +0xEC,0xFF,0x00,0x67,0x88,0x00,0x40,0x42,0x41,0x42,0x2C,0x34,0xDA,0xFF,0x43,0x53, +0x00,0x61,0x86,0x00,0x00,0x60,0x76,0x00,0x2C,0x30,0xAC,0xFE,0x08,0x67,0x40,0x53, +0x12,0x67,0x40,0x39,0xAC,0xFE,0x75,0x4E,0xF9,0x49,0x00,0x00,0x94,0x29,0x6C,0x4A, +0xAC,0xFE,0x30,0x67,0x7C,0x39,0x01,0x00,0xAC,0xFE,0x6C,0x22,0xE4,0xFF,0x00,0x60, +0xC4,0x01,0xF9,0x49,0x00,0x00,0x94,0x29,0x6C,0x52,0xAC,0xFE,0x94,0x08,0x01,0x00, +0x12,0x67,0x6C,0x22,0xE4,0xFF,0x00,0x60,0x30,0x04,0xD4,0x08,0x05,0x00,0x6C,0x29, +0xEA,0xFF,0xB8,0xFE,0x75,0x4E,0x94,0x08,0x05,0x00,0x00,0x67,0xAE,0xFE,0x2C,0x30, +0xB8,0xFE,0x2C,0x32,0xBA,0xFE,0x00,0x60,0xEE,0x03,0x40,0x42,0x2C,0x32,0xEC,0xFF, +0x2C,0x34,0xDA,0xFF,0x01,0x36,0x10,0x61,0x00,0x60,0xDC,0x03,0x40,0x42,0x2C,0x32, +0xEC,0xFF,0x2C,0x34,0xEA,0xFF,0x01,0x36,0xAE,0x61,0x00,0x61,0xFE,0x02,0x00,0x60, +0x78,0xFF,0xD4,0x08,0x03,0x00,0x75,0x4E,0x94,0x08,0x03,0x00,0x75,0x4E,0x40,0x42, +0x2C,0x32,0xEC,0xFF,0x00,0x60,0xB0,0x03,0x2C,0x32,0xEC,0xFF,0x6C,0xB2,0xDC,0xFF, +0x00,0x66,0x2A,0xFE,0x82,0x61,0x41,0x42,0x00,0x61,0xEC,0x01,0x00,0x60,0x4A,0xFF, +0xF9,0x49,0x00,0x00,0x94,0x29,0x6C,0x4A,0xAC,0xFE,0x24,0x66,0x2C,0x53,0xEF,0xFF, +0x1E,0x66,0x6C,0x19,0xEE,0xFF,0xEF,0xFF,0x14,0x08,0x00,0x00,0x0C,0x67,0x54,0x08, +0x01,0x00,0x6C,0x22,0xE4,0xFF,0x00,0x60,0x90,0x03,0xD4,0x08,0x01,0x00,0xF2,0x67, +0x75,0x4E,0xF9,0x49,0x00,0x00,0x94,0x29,0x2F,0x30,0x04,0x00,0x7C,0xB0,0x07,0x00, +0xEE,0x62,0x40,0xD0,0x3B,0x30,0x06,0x00,0xFB,0x4E,0x02,0x00,0x26,0xFF,0x0C,0xFF, +0x10,0x00,0x16,0x00,0x1C,0x00,0x24,0x00,0x2C,0x00,0x36,0x00,0xD4,0x08,0x00,0x00, +0x75,0x4E,0x94,0x08,0x00,0x00,0x75,0x4E,0x6F,0x19,0x07,0x00,0xEE,0xFF,0x75,0x4E, +0x00,0x70,0x2C,0x10,0xEE,0xFF,0x75,0x4E,0x2F,0x10,0x07,0x00,0x40,0x19,0x01,0x00, +0x75,0x4E,0x00,0x70,0x2C,0x10,0x01,0x00,0x75,0x4E,0xF9,0x49,0x00,0x00,0x94,0x29, +0x6C,0xB2,0xF6,0xFF,0x00,0x65,0xC0,0x00,0x6C,0xB2,0xF4,0xFF,0x00,0x62,0xB8,0x00, +0x6C,0x20,0xFC,0xFF,0x41,0xD2,0x30,0x32,0x00,0x10,0x49,0xE6,0x6C,0x20,0xF0,0xFF, +0xC1,0xD0,0x6C,0x22,0xE4,0xFF,0x2C,0x3C,0xE2,0xFF,0x2C,0x3E,0xE0,0xFF,0x14,0x08, +0x04,0x00,0x02,0x67,0x47,0xCD,0x6C,0x52,0xAC,0xFE,0x94,0x08,0x01,0x00,0x6C,0x2A, +0x80,0x00,0x95,0x4E,0x2C,0x30,0xEA,0xFF,0x2C,0x32,0xEC,0xFF,0x6C,0xB0,0xDA,0xFF, +0x32,0x6D,0x14,0x08,0x03,0x00,0x4C,0x67,0x40,0x42,0x2C,0x34,0xDE,0xFF,0x79,0x22, +0x00,0x00,0x4E,0x04,0x6C,0xB2,0xDC,0xFF,0x12,0x6D,0x41,0x39,0xEC,0xFF,0xC2,0xC2, +0xC1,0xD3,0x41,0x42,0x7A,0x48,0x26,0x00,0x00,0x60,0xDC,0x00,0x41,0x52,0xC1,0xC4, +0xC2,0xD3,0x14,0x60,0x49,0x52,0x40,0x52,0x00,0x08,0x00,0x00,0x0A,0x66,0x2C,0x34, +0x06,0x00,0x42,0xD4,0xF1,0x43,0xFE,0x20,0x41,0x39,0xEC,0xFF,0x40,0x39,0xEA,0xFF, +0x49,0x29,0xE4,0xFF,0x2C,0x1C,0x01,0x00,0x14,0x66,0x2C,0x3E,0xAC,0xFE,0x47,0x53, +0x10,0x66,0x00,0x61,0x74,0x02,0xD4,0x08,0x01,0x00,0x2C,0x1C,0xEE,0xFF,0x46,0x19, +0xEF,0xFF,0x6C,0x53,0xAC,0xFE,0x75,0x4E,0xF9,0x4B,0xFF,0x00,0x3C,0x8A,0x49,0x24, +0x01,0x74,0x42,0x3B,0xFA,0xFF,0x08,0x30,0x09,0x32,0x42,0xC0,0x49,0xE2,0x40,0xD1, +0x40,0xD0,0x7B,0x3B,0x52,0x00,0xEC,0xFF,0x7B,0x3B,0x54,0x00,0xE4,0xFF,0x3B,0x30, +0x56,0x00,0x6C,0x3B,0xF8,0xFF,0xE6,0xFF,0x6C,0x3B,0x08,0x00,0xF4,0xFF,0x2C,0x32, +0xD8,0xFF,0x2C,0x34,0x06,0x00,0x42,0x53,0x07,0x78,0x48,0x2B,0xE8,0xFF,0x4A,0x2B, +0xF6,0xFF,0x41,0x3B,0xFC,0xFF,0x43,0x42,0x4E,0xE2,0x43,0xD7,0x4F,0xE2,0x43,0xD7, +0x43,0xD6,0x7B,0x3B,0x2A,0x30,0xFE,0xFF,0x80,0x3A,0x8A,0x54,0x55,0x4A,0xFC,0x6B, +0xCA,0x51,0xD8,0xFF,0x75,0x4E,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xC0,0x08,0xC0,0x08,0xC0,0x00,0xC0,0x00,0x02, +0x0C,0x02,0x03,0x02,0x0F,0x02,0x6C,0x2A,0x84,0x00,0xD5,0x4E,0xF9,0x4B,0xFF,0x00, +0x20,0x8A,0x02,0x7C,0xC6,0x3A,0xC6,0x3A,0x2C,0x3A,0xDE,0xFF,0x05,0x38,0xC1,0xC8, +0x79,0x24,0x00,0x00,0x4E,0x04,0xC4,0xD5,0xF2,0x47,0x00,0x50,0xCB,0x2A,0xFF,0x7E, +0xC7,0x2A,0xC7,0x3A,0xC6,0x3A,0xC6,0x3A,0xCA,0x2A,0x45,0xE2,0x2C,0x36,0xDC,0xFF, +0x03,0x34,0x41,0x94,0x18,0x6F,0xC5,0x3A,0x4D,0x26,0xC2,0x3A,0xFC,0x3A,0x03,0x02, +0x3C,0x34,0x00,0x80,0x82,0x3A,0x07,0x78,0xD5,0x09,0x71,0x4E,0xFA,0x66,0x40,0x42, +0x2C,0x34,0xDA,0xFF,0x03,0x32,0x00,0x60,0x82,0x00,0x6C,0x2A,0x88,0x00,0xD5,0x4E, +0xF9,0x4B,0xFF,0x00,0x20,0x8A,0xFE,0x7C,0xC6,0x3A,0x5D,0x42,0x2C,0x3A,0xDE,0xFF, +0x05,0x38,0x2C,0x36,0xDC,0xFF,0xC3,0xC8,0x79,0x26,0x00,0x00,0x4E,0x04,0xF3,0x47, +0xFE,0x48,0xCB,0x2A,0xFF,0x7E,0xC7,0x2A,0xC7,0x3A,0xC6,0x3A,0xC6,0x3A,0xF3,0x45, +0x00,0x50,0xCA,0x2A,0x45,0xE2,0x41,0x96,0x16,0x6F,0xC5,0x3A,0x4D,0x26,0xC3,0x3A, +0xFC,0x3A,0x03,0x02,0xBC,0x3A,0x80,0x80,0x07,0x74,0xD5,0x05,0x71,0x4E,0xFA,0x66, +0x40,0x42,0x2C,0x34,0xDA,0xFF,0x01,0x36,0x20,0x60,0x00,0x00,0x00,0xFF,0x00,0xFF, +0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF, +0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x6C,0x2A,0x8C,0x00,0xD5,0x4E, +0xF9,0x4B,0xFF,0x00,0x28,0x8A,0x00,0x38,0x02,0x3A,0x46,0x42,0x4C,0xE2,0x46,0xDD, +0x4D,0xE2,0x46,0xDD,0x44,0x9A,0xC7,0x56,0x07,0xDE,0x56,0xE7,0x3B,0x2E,0xBC,0x60, +0xC7,0x3A,0xFC,0x3A,0xFF,0xFF,0x47,0x48,0xC7,0x3A,0x2C,0x3E,0xDE,0xFF,0xC1,0xCE, +0x79,0x24,0x00,0x00,0x4E,0x04,0xC7,0xD5,0x2C,0x3C,0x06,0x00,0x06,0x3E,0x47,0xDE, +0xC7,0x3A,0xC7,0xC8,0xC4,0xD4,0x05,0x38,0xC7,0xC8,0x44,0x44,0x6C,0xD8,0x08,0x00, +0xC4,0x3A,0xCA,0x2A,0x45,0x52,0xC5,0x3A,0x4D,0x26,0x8D,0x58,0x03,0x38,0x41,0x98, +0x44,0x52,0xEC,0xC8,0xD8,0xFF,0x3C,0x36,0x00,0x80,0x46,0x53,0x2C,0x3E,0xE0,0xFF, +0x4A,0x2B,0xF6,0xFF,0x84,0x36,0x4F,0xE2,0xED,0x55,0xFF,0xFF,0x83,0x3A,0x07,0x7A, +0xD5,0x0B,0x71,0x4E,0xFA,0x66,0x8A,0x54,0xCE,0x51,0xE6,0xFF,0x75,0x4E,0x2C,0x34, +0xDA,0xFF,0x40,0xB4,0x02,0x6A,0x02,0x30,0x2C,0x34,0xDC,0xFF,0x41,0xB4,0x02,0x6A, +0x02,0x32,0x01,0x36,0xEC,0xC6,0xDE,0xFF,0x00,0x34,0x82,0x08,0x00,0x00,0xC4,0x56, +0xEC,0xC4,0x06,0x00,0x04,0xD8,0x83,0xD5,0x79,0x22,0x00,0x00,0x4E,0x04,0xEC,0xD2, +0xE8,0xFF,0xC2,0xD3,0x75,0x4E,0x6C,0x52,0xAC,0xFE,0x94,0x08,0x01,0x00,0x06,0x67, +0x6C,0x22,0xE4,0xFF,0x12,0x61,0xB6,0x61,0x40,0x39,0xEA,0xFF,0x41,0x39,0xEC,0xFF, +0x49,0x29,0xE4,0xFF,0x00,0x60,0x7E,0xFD,0x2C,0x38,0x08,0x00,0x2C,0x3A,0xD8,0xFF, +0x45,0x53,0x2C,0x3E,0x06,0x00,0x47,0x53,0x49,0x24,0x05,0x3C,0x12,0x46,0xC4,0xD4, +0xCE,0x51,0xFA,0xFF,0x49,0x54,0xCF,0x51,0xF0,0xFF,0x75,0x4E,0x6C,0x20,0x0E,0x00, +0x50,0x20,0xF9,0x49,0x00,0x00,0x94,0x29,0x28,0x30,0x52,0x00,0x40,0x39,0xD8,0xFF, +0x2C,0x32,0x08,0x00,0xC0,0xC2,0x41,0x39,0xDE,0xFF,0x00,0x72,0x2C,0x32,0x02,0x00, +0xC0,0x82,0x41,0x53,0x41,0x39,0xDC,0xFF,0x00,0x72,0x2C,0x32,0xFA,0xFF,0xE8,0x82, +0x34,0x00,0x41,0x53,0x41,0x39,0xDA,0xFF,0x68,0x39,0x50,0x00,0xF8,0xFF,0x68,0x39, +0x24,0x00,0xF6,0xFF,0x68,0x39,0x26,0x00,0xF4,0xFF,0x68,0x29,0x4C,0x00,0xF0,0xFF, +0x68,0x29,0x48,0x00,0xFC,0xFF,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xFC,0x23,0x00,0x00, +0x5A,0x88,0x00,0x00,0x46,0x88,0xFC,0x23,0x00,0x00,0x82,0x88,0x00,0x00,0x6E,0x88, +0xFC,0x33,0xFF,0xFF,0x00,0x00,0x4A,0x88,0xFC,0x33,0xFF,0xFF,0x00,0x00,0x5E,0x88, +0xFC,0x33,0xFF,0xFF,0x00,0x00,0x72,0x88,0xFC,0x33,0xFF,0xFF,0x00,0x00,0x86,0x88, +0xFC,0x23,0x00,0x00,0xC4,0x75,0x00,0x00,0x56,0x88,0xFC,0x23,0x00,0x00,0xC4,0x77, +0x00,0x00,0x6A,0x88,0xFC,0x23,0x00,0x00,0xC4,0x79,0x00,0x00,0x7E,0x88,0xFC,0x23, +0x00,0x00,0xC4,0x7B,0x00,0x00,0x92,0x88,0xFC,0x23,0x00,0x00,0x46,0x88,0x00,0x00, +0xB2,0x04,0xFC,0x23,0x00,0x00,0x6E,0x88,0x00,0x00,0xB6,0x04,0xB9,0x4E,0xFC,0x00, +0xB8,0x4E,0xB9,0x3E,0x00,0x00,0x46,0x04,0xB9,0x4E,0xFC,0x00,0x1A,0x6D,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x42,0x42,0xAE,0x4A,0x08,0x00,0x06,0x6C,0xAE,0x44, +0x08,0x00,0x42,0x52,0xAE,0x4A,0x0C,0x00,0x06,0x6C,0xAE,0x44,0x0C,0x00,0x42,0x52, +0x2E,0x30,0x0A,0x00,0xEE,0xC0,0x0E,0x00,0x40,0x2D,0xFC,0xFF,0x2E,0x30,0x08,0x00, +0xEE,0xC0,0x0E,0x00,0x2E,0x32,0x0C,0x00,0xEE,0xC2,0x0A,0x00,0x41,0xD0,0x6E,0xD0, +0xFC,0xFF,0x40,0x3D,0xFC,0xFF,0x2E,0x20,0xFC,0xFF,0x02,0x08,0x00,0x00,0x02,0x67, +0x80,0x44,0x5E,0x4E,0x75,0x4E,0x6F,0x20,0x04,0x00,0x6F,0x22,0x08,0x00,0xE7,0x48, +0x10,0x1F,0x00,0x72,0x00,0x74,0x00,0x76,0x00,0x78,0x00,0x7A,0x00,0x7C,0x00,0x7E, +0x47,0x36,0x08,0x20,0x00,0x08,0x00,0x00,0x02,0x67,0xC1,0x10,0x09,0x20,0x88,0x90, +0xBC,0xC0,0xFF,0xFF,0x00,0xFF,0x2C,0x67,0xF0,0x41,0x00,0x08,0x48,0x24,0x88,0xE0, +0xE2,0x48,0x10,0x7F,0xE2,0x48,0x10,0x7F,0xE2,0x48,0x10,0x7F,0xE2,0x48,0x10,0x7F, +0xE2,0x48,0x10,0x7F,0xE2,0x48,0x10,0x7F,0xE2,0x48,0x10,0x7F,0xE2,0x48,0x10,0x7F, +0x80,0x53,0xDC,0x66,0xC8,0xB3,0x04,0x67,0xC1,0x10,0xF8,0x60,0xDF,0x4C,0xF8,0x08, +0x75,0x4E,0x22,0x61,0x1C,0x65,0x56,0x61,0xBC,0xB0,0xFF,0xFF,0xFF,0xFF,0x12,0x67, +0xC0,0x33,0x00,0x00,0xB0,0x75,0x40,0x48,0xC0,0x33,0x00,0x00,0x40,0x88,0x00,0x70, +0x75,0x4E,0xFF,0x70,0x75,0x4E,0x7C,0x30,0x20,0xFC,0x7C,0x11,0x09,0x00,0x1B,0x00, +0x3C,0x30,0x05,0x0A,0x88,0x01,0x05,0x00,0x08,0x03,0x05,0x00,0x7C,0xC2,0x0F,0x0F, +0x40,0xB2,0x14,0x66,0x7C,0x11,0x01,0x00,0x01,0x00,0x7C,0x11,0x08,0x00,0x1B,0x00, +0x7C,0x11,0x00,0x00,0x1D,0x00,0x75,0x4E,0x3C,0x00,0x01,0x00,0x75,0x4E,0xC6,0x61, +0x00,0x65,0xB6,0x00,0xF9,0x43,0x00,0x00,0x94,0x0E,0xF9,0x45,0x00,0x00,0xA1,0x0E, +0x00,0x61,0x8E,0x00,0x4A,0xC3,0x00,0x61,0x88,0x00,0x0C,0x70,0x31,0x12,0x00,0x00, +0x32,0xB2,0x00,0x00,0xEE,0x66,0xC8,0x51,0xF4,0xFF,0x00,0x70,0x29,0x10,0x0B,0x00, +0xFC,0xC0,0x0A,0x00,0x29,0xD0,0x0C,0x00,0x40,0xE2,0x00,0x32,0x00,0x70,0x29,0x10, +0x09,0x00,0xFC,0xC0,0x0A,0x00,0x29,0xD0,0x0A,0x00,0x40,0xEB,0x40,0xD2,0x00,0x70, +0x29,0x10,0x07,0x00,0xFC,0xC0,0x0A,0x00,0x29,0xD0,0x08,0x00,0x40,0xE1,0x40,0xE7, +0x40,0xD2,0x41,0x48,0x00,0x70,0x29,0x10,0x04,0x00,0xFC,0xC0,0x0A,0x00,0x29,0xD0, +0x05,0x00,0x00,0x32,0x00,0x70,0x29,0x10,0x02,0x00,0xFC,0xC0,0x0A,0x00,0x29,0xD0, +0x03,0x00,0x40,0xEB,0x40,0xD2,0x00,0x70,0x29,0x10,0x00,0x00,0xFC,0xC0,0x0A,0x00, +0x29,0xD0,0x01,0x00,0x40,0xE1,0x40,0xE3,0x40,0xD2,0x41,0x48,0x01,0x20,0x75,0x4E, +0x0C,0x70,0x01,0x72,0x30,0x14,0x00,0x10,0x3C,0xC4,0x0F,0x00,0x82,0x13,0x00,0x00, +0x41,0x54,0xC8,0x51,0xF0,0xFF,0x75,0x4E,0xFF,0x70,0x75,0x4E,0x00,0x61,0x08,0xFF, +0x00,0x65,0xD2,0x00,0xF9,0x43,0x00,0x00,0x94,0x0E,0x2F,0x32,0x06,0x00,0x01,0x30, +0xBC,0xC0,0x00,0x00,0x1F,0x00,0x40,0xD0,0xFC,0x80,0x0A,0x00,0x40,0x13,0x0B,0x00, +0x40,0x48,0x40,0x13,0x0C,0x00,0x01,0x30,0x48,0xEA,0xBC,0xC0,0x00,0x00,0x3F,0x00, +0xFC,0x80,0x0A,0x00,0x40,0x13,0x09,0x00,0x40,0x48,0x40,0x13,0x0A,0x00,0x49,0xE0, +0x49,0xE6,0xC1,0x48,0xFC,0x82,0x0A,0x00,0x41,0x13,0x07,0x00,0x41,0x48,0x41,0x13, +0x08,0x00,0x2F,0x32,0x04,0x00,0x01,0x30,0xBC,0xC0,0x00,0x00,0x1F,0x00,0xFC,0x80, +0x0A,0x00,0x40,0x13,0x04,0x00,0x40,0x48,0x40,0x13,0x05,0x00,0x01,0x30,0x48,0xEA, +0xBC,0xC0,0x00,0x00,0x0F,0x00,0xFC,0x80,0x0A,0x00,0x40,0x13,0x02,0x00,0x40,0x48, +0x40,0x13,0x03,0x00,0x49,0xE2,0x49,0xE0,0xC1,0x48,0x01,0x24,0xFC,0x82,0x0A,0x00, +0x41,0x13,0x00,0x00,0x41,0x48,0x41,0x13,0x01,0x00,0xFC,0x84,0x04,0x00,0x42,0x48, +0x29,0x42,0x06,0x00,0x7C,0x11,0x02,0x00,0x1F,0x00,0x7C,0x11,0x09,0x00,0x1B,0x00, +0x7C,0x11,0x01,0x00,0x15,0x00,0x42,0x11,0x17,0x00,0x7C,0x11,0x08,0x00,0x1B,0x00, +0x0C,0x70,0x01,0x72,0xB1,0x11,0x00,0x00,0x00,0x10,0x41,0x54,0xC8,0x51,0xF6,0xFF, +0x00,0x70,0x75,0x4E,0xFF,0x70,0x75,0x4E,0xC0,0x33,0x00,0x00,0x44,0x2A,0x79,0x20, +0x00,0x00,0x40,0x2A,0x00,0x08,0x00,0x00,0x06,0x67,0x79,0x20,0x00,0x00,0x3C,0x2A, +0xF9,0x43,0x00,0x00,0x14,0x2A,0x09,0x70,0xD8,0x22,0xC8,0x51,0xFC,0xFF,0x75,0x4E, +0x39,0x30,0x00,0x00,0x44,0x2A,0x75,0x4E,0xFC,0x00,0x18,0x48,0xFC,0x00,0xAC,0x48, +0xFC,0x00,0x10,0x49,0xFC,0x00,0x90,0x49,0xFD,0x00,0xCE,0x06,0xFC,0x00,0x18,0xFA, +0xFC,0x00,0x26,0xFD,0xFC,0x00,0x64,0xA2,0xFC,0x00,0x24,0xA6,0xFC,0x00,0xC0,0xEE, +0xFD,0x00,0x76,0x14,0xFD,0x00,0xF4,0x14,0xFD,0x00,0x38,0x15,0xFD,0x00,0x9C,0x15, +0xFD,0x00,0x92,0x10,0xFD,0x00,0x1E,0x1D,0xFD,0x00,0x70,0x1B,0xFD,0x00,0x36,0x1A, +0xFD,0x00,0x3A,0x1B,0xFD,0x00,0x50,0x1E,0xFC,0x23,0xFC,0x00,0xC8,0x4F,0x00,0x00, +0x84,0x00,0xF9,0x23,0x00,0x00,0x88,0x00,0x00,0x00,0xD6,0x16,0xFC,0x23,0xFC,0x00, +0x16,0x4F,0x00,0x00,0x88,0x00,0xF9,0x40,0x00,0x00,0xB8,0x0E,0x7C,0x00,0x00,0x07, +0x3C,0x2F,0xFC,0x00,0x50,0x4F,0x3C,0x3F,0x00,0x01,0x3C,0x3F,0x05,0x00,0x4D,0x4E, +0x8F,0x50,0xC0,0x23,0x00,0x00,0xD2,0x16,0xF9,0x46,0x00,0x00,0xB8,0x0E,0xB9,0x4E, +0xFC,0x00,0xB0,0x93,0x75,0x4E,0xDF,0x23,0x00,0x00,0xB0,0x0E,0x4D,0x4E,0x39,0x2F, +0x00,0x00,0xB0,0x0E,0x75,0x4E,0x40,0x4A,0x24,0x67,0x7C,0xB0,0x73,0x00,0x08,0x66, +0xB9,0x4E,0xFC,0x00,0xF8,0x9F,0x73,0x4E,0x7C,0xB0,0xFF,0xFF,0x08,0x66,0x3C,0x20, +0xFC,0x00,0xF8,0x9F,0x73,0x4E,0x39,0x2F,0x00,0x00,0xD6,0x16,0x75,0x4E,0x79,0x2E, +0xFD,0x00,0x1E,0x30,0x67,0x42,0xB9,0x4E,0xFC,0x00,0x82,0x80,0xFC,0x4A,0x73,0x4E, +0x2F,0x3F,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x1A,0x9D,0x8F,0x54,0x39,0x2F,0x00,0x00, +0xD2,0x16,0x75,0x4E,0x2F,0x2F,0x04,0x00,0x75,0x4E,0x56,0x4E,0x00,0x00,0x6E,0x20, +0x08,0x00,0x10,0x30,0x58,0xE0,0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0x6E,0x20,0x08,0x00,0x10,0x20,0x58,0xE0,0x40,0x48,0x58,0xE0,0x80,0x20,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0x6E,0x20,0x08,0x00,0xEE,0x20,0x00,0x00,0xEE,0x43, +0x08,0x00,0xC9,0x20,0xAE,0x20,0x04,0x00,0x80,0x42,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0x00,0x00,0x2E,0x20,0x0C,0x00,0x80,0x4A,0x02,0x66,0x01,0x70,0x6E,0x20,0x08,0x00, +0x58,0x2C,0x58,0x2E,0x10,0x2F,0x75,0x4E,0x17,0x08,0x05,0x00,0x0C,0x66,0x68,0x4E, +0x50,0x0C,0x20,0x00,0x00,0x67,0xA0,0x00,0x0A,0x60,0x6F,0x0C,0x20,0x00,0x06,0x00, +0x00,0x67,0xB2,0x00,0x0E,0x2F,0x79,0x2C,0x00,0x00,0xCE,0x87,0xEE,0x48,0x01,0x38, +0x68,0x00,0x5F,0x2D,0x78,0x00,0x1F,0x30,0x5F,0x28,0x00,0x08,0x0D,0x00,0x1E,0x66, +0x6D,0x4E,0xE5,0x48,0xE0,0x7F,0x0C,0x2B,0x00,0x3B,0x4F,0x20,0x08,0x2B,0x4D,0x2D, +0x7C,0x00,0x7C,0x2E,0x00,0x00,0xCE,0x16,0xED,0x41,0x32,0x00,0x1A,0x60,0xE7,0x48, +0xE0,0x7F,0x0C,0x2F,0x00,0x3F,0x68,0x4E,0x08,0x2F,0x4F,0x2D,0x7C,0x00,0xEF,0x41, +0x32,0x00,0x7C,0x2E,0x00,0x00,0xCE,0x16,0x08,0x2F,0xB9,0x4E,0xFC,0x00,0x3E,0x95, +0x8F,0x58,0x79,0x2A,0x00,0x00,0xCE,0x87,0x40,0x2B,0x68,0x00,0x6D,0x2C,0x7C,0x00, +0x5E,0x28,0x1E,0x30,0x5E,0x26,0xDE,0x4C,0xFE,0x07,0x00,0x08,0x0D,0x00,0x10,0x66, +0x4C,0x2E,0x66,0x4E,0x0B,0x2F,0x00,0x3F,0xED,0x4C,0x01,0x78,0x68,0x00,0x73,0x4E, +0x4E,0x2E,0x64,0x4E,0xEE,0x60,0x28,0x22,0x02,0x00,0x08,0x67,0x81,0x53,0x44,0x67, +0x68,0x20,0x02,0x00,0x1F,0x30,0x1F,0x21,0x40,0x00,0x00,0x20,0x00,0x31,0x0F,0x20, +0x48,0x2E,0x73,0x4E,0x2F,0x22,0x08,0x00,0x1E,0x67,0x81,0x53,0x26,0x67,0x6F,0x22, +0x08,0x00,0x1F,0x30,0x1F,0x23,0x00,0x33,0x68,0x4E,0xC8,0xBF,0x06,0x67,0x1F,0x21, +0x49,0x2E,0x08,0x60,0x49,0x2E,0x06,0x60,0x4F,0x20,0x88,0x5C,0x60,0x4E,0x57,0x02, +0xFF,0xDF,0x73,0x4E,0x3C,0x20,0x00,0x00,0x00,0x20,0x57,0xC0,0x02,0x67,0xFF,0x70, +0x73,0x4E,0x56,0x4E,0x00,0x00,0x08,0x2F,0xEE,0x41,0x08,0x00,0x08,0x2F,0xB9,0x4E, +0xFC,0x00,0x3E,0x95,0x8F,0x58,0x5F,0x20,0x5E,0x4E,0x75,0x4E,0x00,0x61,0x78,0xFB, +0x1A,0x65,0x00,0x61,0xAA,0xFB,0xC1,0x40,0x7C,0x00,0x00,0x07,0xC0,0x33,0x00,0x00, +0xB0,0x75,0x40,0x48,0xC0,0x33,0x00,0x00,0x40,0x88,0xC1,0x46,0x75,0x4E,0x39,0x3F, +0x00,0x00,0xB0,0x75,0x39,0x3F,0x00,0x00,0x40,0x88,0x3C,0x3F,0x16,0x00,0x4E,0x4E, +0x4F,0x5C,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x1E,0x09,0x00, +0x3C,0xBE,0x61,0x00,0x10,0x6D,0x3C,0xBE,0x7A,0x00,0x0A,0x6E,0x07,0x10,0x80,0x48, +0x7C,0xC0,0x5F,0x00,0x04,0x60,0x07,0x10,0x80,0x48,0x9F,0x4A,0xDF,0x4C,0x80,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0xBC,0x3E,0x03,0x00, +0xB9,0x4E,0xFC,0x00,0x74,0x7F,0x40,0x2A,0x6E,0x30,0x08,0x00,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0x80,0x83,0x8D,0x20,0x5A,0x67,0xBC,0x3E,0x04,0x00,0xB9,0x4E, +0xFC,0x00,0x74,0x7F,0x40,0x2B,0x24,0x00,0x42,0x67,0xBC,0x3E,0x04,0x00,0xB9,0x4E, +0xFC,0x00,0x74,0x7F,0x00,0x2F,0x6D,0x20,0x24,0x00,0x5F,0x21,0x14,0x00,0x22,0x67, +0xBC,0x3E,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x74,0x7F,0x40,0x2B,0x1C,0x00,0x04,0x67, +0x0D,0x20,0x22,0x60,0x6D,0x20,0x24,0x00,0xA8,0x2E,0x14,0x00,0xB9,0x4E,0xFC,0x00, +0xF6,0x7F,0xAD,0x2E,0x24,0x00,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x8D,0x2E,0xB9,0x4E, +0xFC,0x00,0xF6,0x7F,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x08,0x00,0x7C,0xBE,0x06,0x00, +0x06,0x6D,0x07,0x30,0x40,0x5D,0x18,0x60,0x79,0x20,0x00,0x00,0xCE,0x87,0x30,0x10, +0x30,0x70,0x80,0x48,0x00,0x3E,0x06,0x6F,0x07,0x30,0x40,0x5D,0x02,0x60,0x07,0x30, +0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xAE,0x3E, +0x08,0x00,0xBC,0x61,0xFC,0xC1,0x0A,0x00,0x40,0x20,0x7C,0x22,0x00,0x00,0x92,0x80, +0x30,0x20,0x00,0x98,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x2E,0x30,0x0A,0x00, +0x6E,0x22,0x0C,0x00,0x6E,0x34,0x08,0x00,0xCA,0xD3,0x40,0x13,0x40,0x00,0x6E,0x30, +0x0A,0x00,0x7C,0x22,0x00,0x00,0x66,0x80,0x30,0x10,0x00,0x98,0x80,0x48,0x7C,0x22, +0x00,0x00,0x66,0x80,0x6E,0x34,0x0A,0x00,0xCA,0xD3,0x11,0x52,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3C,0x08,0x00,0x46,0x4A,0x06,0x6D, +0x7C,0xBC,0x06,0x00,0x06,0x6D,0xDB,0x70,0x00,0x60,0xA4,0x00,0x47,0x42,0x16,0x60, +0x07,0x30,0xFC,0xC1,0x0A,0x00,0x40,0x20,0x7C,0x22,0x00,0x00,0x92,0x80,0xB0,0x4A, +0x04,0x98,0x08,0x67,0x47,0x52,0x7C,0xBE,0x4B,0x00,0xE4,0x6D,0x7C,0xBE,0x4B,0x00, +0x06,0x66,0xDD,0x70,0x00,0x60,0x78,0x00,0x07,0x30,0xFC,0xC1,0x0A,0x00,0xBC,0xD0, +0x00,0x00,0x92,0x80,0x40,0x20,0x79,0x21,0x00,0x00,0xCE,0x87,0x04,0x00,0x79,0x20, +0x00,0x00,0xCE,0x87,0x30,0x10,0x30,0x60,0x80,0x48,0x00,0x3C,0x22,0x6F,0x07,0x30, +0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x06,0x32,0x41,0x5D, +0xFC,0xC3,0x0A,0x00,0xBC,0xD2,0x00,0x00,0x92,0x80,0x41,0x22,0x91,0x20,0x14,0x60, +0x06,0x30,0xC0,0x48,0x07,0x32,0xFC,0xC3,0x0A,0x00,0xBC,0xD2,0x00,0x00,0x92,0x80, +0x41,0x22,0x80,0x22,0x07,0x30,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80, +0x40,0x20,0x7C,0x31,0x01,0x00,0x08,0x00,0x07,0x30,0x40,0x5C,0xC0,0x48,0x9F,0x4A, +0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xB9,0x2E,0x00,0x00, +0xCE,0x87,0x2E,0x3F,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x06,0x61,0x8F,0x58,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F,0x6E,0x2A,0x0C,0x00,0x2E,0x3C, +0x0A,0x00,0x2E,0x3A,0x08,0x00,0x45,0x4A,0x06,0x6D,0x7C,0xBA,0x06,0x00,0x06,0x6D, +0xDB,0x70,0x00,0x60,0x76,0x00,0x46,0x4A,0x0E,0x6C,0x06,0x30,0x4D,0x22,0x45,0x34, +0xCA,0xD3,0x40,0x13,0x30,0x00,0x60,0x60,0x7C,0xBC,0x06,0x00,0x04,0x6C,0xDB,0x70, +0x58,0x60,0x06,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80, +0x40,0x20,0x10,0x2E,0x0E,0x6C,0x07,0x20,0x4D,0x22,0x45,0x34,0xCA,0xD3,0x40,0x13, +0x30,0x00,0x34,0x60,0x06,0x30,0x4D,0x22,0x45,0x34,0xCA,0xD3,0x40,0x13,0x30,0x00, +0x06,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0x40,0x20,0x7C,0x22,0x00,0x00,0x92,0x80, +0x30,0x30,0x08,0x98,0x06,0x32,0x41,0x5D,0xFC,0xC3,0x0A,0x00,0xBC,0xD2,0x00,0x00, +0x92,0x80,0x41,0x22,0x69,0x52,0x08,0x00,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xE0,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3C,0x08,0x00, +0x47,0x42,0x04,0x60,0x46,0xE2,0x47,0x52,0x46,0x4A,0xF8,0x66,0x07,0x30,0x40,0x53, +0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xDC,0xFF,0x6E,0x20, +0x08,0x00,0x50,0x3D,0xEA,0xFF,0x6E,0x20,0x08,0x00,0x68,0x3D,0x02,0x00,0xE8,0xFF, +0x6E,0x20,0x08,0x00,0x68,0x3D,0x06,0x00,0xE6,0xFF,0x6E,0x20,0x08,0x00,0x68,0x3D, +0x08,0x00,0xE4,0xFF,0xAE,0x3E,0x0C,0x00,0x00,0x61,0x0A,0xFD,0x40,0x2D,0xEC,0xFF, +0x06,0x66,0xD9,0x70,0x00,0x60,0xE6,0x01,0x6E,0x20,0xEC,0xFF,0x68,0x2D,0x24,0x00, +0xF0,0xFF,0x6E,0x20,0xEC,0xFF,0x6E,0x31,0xE4,0xFF,0x08,0x00,0x6E,0x20,0xF0,0xFF, +0x68,0x2D,0x14,0x00,0xF4,0xFF,0x6E,0x20,0xEC,0xFF,0x6E,0x31,0x0C,0x00,0x06,0x00, +0x6E,0x20,0xF4,0xFF,0x6E,0x21,0xEC,0xFF,0x10,0x00,0x6E,0x20,0xF0,0xFF,0x6E,0x21, +0xEC,0xFF,0x24,0x00,0x6E,0x20,0xF0,0xFF,0x10,0x42,0x6E,0x20,0x08,0x00,0x28,0x30, +0x10,0x00,0x7C,0xC0,0x01,0x00,0x6E,0x22,0xEC,0xFF,0x40,0x33,0x28,0x00,0x6E,0x20, +0xEC,0xFF,0x6E,0x31,0xE8,0xFF,0x0A,0x00,0x6E,0x20,0xEC,0xFF,0x6E,0x22,0x08,0x00, +0x69,0x31,0x04,0x00,0x0C,0x00,0x6E,0x20,0xEC,0xFF,0x6E,0x31,0xEA,0xFF,0x0E,0x00, +0x6E,0x20,0xEC,0xFF,0x6E,0x22,0x08,0x00,0x69,0x31,0x0E,0x00,0x10,0x00,0xAE,0x3E, +0xE8,0xFF,0x00,0x61,0x10,0xFF,0x00,0x3F,0x6E,0x20,0xEC,0xFF,0x5F,0x31,0x12,0x00, +0x6E,0x20,0xEC,0xFF,0x6E,0x22,0xEC,0xFF,0x69,0x32,0x12,0x00,0xC9,0xD3,0xFC,0xD3, +0xFD,0x00,0x22,0x30,0x51,0x31,0x14,0x00,0xAE,0x3E,0xEA,0xFF,0x00,0x61,0xE6,0xFE, +0x00,0x3F,0x6E,0x20,0xEC,0xFF,0x5F,0x31,0x16,0x00,0x6E,0x20,0xEC,0xFF,0x6E,0x22, +0xEC,0xFF,0x69,0x32,0x16,0x00,0xC9,0xD3,0xFC,0xD3,0xFD,0x00,0x22,0x30,0x51,0x31, +0x18,0x00,0x6E,0x20,0xEC,0xFF,0xA8,0x3E,0x0C,0x00,0x00,0x61,0xB8,0xFE,0x00,0x3F, +0x6E,0x20,0xEC,0xFF,0x5F,0x31,0x1A,0x00,0x2E,0x30,0xE6,0xFF,0xEE,0xC1,0xEA,0xFF, +0x6E,0x22,0xF4,0xFF,0x40,0x23,0x0C,0x00,0x2E,0x30,0xE6,0xFF,0x6E,0xD0,0xE8,0xFF, +0x40,0x53,0xC0,0x48,0xEE,0x81,0xE8,0xFF,0x40,0x3D,0xE2,0xFF,0xFF,0x70,0x6E,0x90, +0xE2,0xFF,0x6E,0x22,0xF4,0xFF,0x40,0x33,0x0A,0x00,0x6E,0x22,0xF0,0xFF,0x40,0x33, +0x0E,0x00,0x2E,0x30,0xE4,0xFF,0x6E,0xD0,0xE8,0xFF,0x40,0x53,0xC0,0x48,0xEE,0x81, +0xE8,0xFF,0x40,0x3D,0xE0,0xFF,0x6E,0x20,0xEC,0xFF,0x68,0x2D,0x1C,0x00,0xF8,0xFF, +0x6E,0x20,0xF0,0xFF,0x28,0x30,0x0E,0x00,0x6E,0x90,0xE0,0xFF,0x6E,0x22,0xF8,0xFF, +0x40,0x33,0x0A,0x00,0x6E,0x20,0xF8,0xFF,0x6E,0x21,0xEC,0xFF,0x10,0x00,0x6E,0x20, +0x08,0x00,0x28,0x30,0x0A,0x00,0x6E,0x22,0xF8,0xFF,0x29,0x32,0x0A,0x00,0xEE,0xC3, +0xE8,0xFF,0x41,0x90,0x6E,0x22,0xEC,0xFF,0x80,0x32,0x6E,0x20,0x08,0x00,0x28,0x30, +0x0A,0x00,0x6E,0xD0,0xE4,0xFF,0x6E,0x22,0xF0,0xFF,0x29,0x32,0x0E,0x00,0xEE,0xC3, +0xE8,0xFF,0x41,0x90,0x6E,0x22,0xEC,0xFF,0x40,0x33,0x02,0x00,0x6E,0x20,0x08,0x00, +0x28,0x30,0x0C,0x00,0x2E,0x32,0xE8,0xFF,0x41,0xE3,0x41,0x90,0x6E,0x22,0xEC,0xFF, +0x40,0x33,0x04,0x00,0x6E,0x20,0xF8,0xFF,0x7C,0x21,0x00,0x00,0x03,0x00,0x20,0x00, +0x6E,0x20,0xF8,0xFF,0x7C,0x31,0x03,0x00,0x28,0x00,0x2E,0x30,0xE4,0xFF,0xEE,0xC1, +0xEA,0xFF,0x6E,0x22,0xF8,0xFF,0x40,0x23,0x0C,0x00,0x80,0x42,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0x6E,0x20,0x0A,0x00,0x28,0x30,0x0A,0x00,0xEE,0xC1,0x08,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x12,0x60,0x6E,0x20,0x0E,0x00,0x6E,0x22, +0x0A,0x00,0x91,0x10,0xAE,0x52,0x0A,0x00,0xAE,0x52,0x0E,0x00,0x2E,0x30,0x08,0x00, +0x6E,0x53,0x08,0x00,0x40,0x4A,0xE2,0x66,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x12,0x60,0x6E,0x20,0x0A,0x00,0x6E,0x22,0x0E,0x00,0x91,0x10,0xAE,0x52,0x0E,0x00, +0xAE,0x52,0x0A,0x00,0x2E,0x30,0x08,0x00,0x6E,0x53,0x08,0x00,0x40,0x4A,0xE2,0x66, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x12,0x60,0x6E,0x20,0x0E,0x00,0x6E,0x22, +0x0A,0x00,0x91,0x10,0xAE,0x52,0x0A,0x00,0xAE,0x52,0x0E,0x00,0x2E,0x30,0x08,0x00, +0x6E,0x53,0x08,0x00,0x40,0x4A,0xE2,0x66,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x03,0x47,0x42,0x36,0x60,0x6E,0x20,0x0C,0x00,0x10,0x10,0x80,0x48, +0x80,0x3E,0x00,0x61,0x40,0xFA,0x00,0x3F,0x6E,0x20,0x08,0x00,0x10,0x10,0x80,0x48, +0x00,0x3F,0x00,0x61,0x30,0xFA,0x8F,0x54,0x5F,0xB0,0xC0,0x40,0xAE,0x52,0x0C,0x00, +0xAE,0x52,0x08,0x00,0xC0,0x44,0x04,0x67,0x40,0x42,0x0A,0x60,0x47,0x52,0x7C,0xBE, +0x0B,0x00,0xC4,0x6D,0x01,0x70,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F,0x2E,0x3E,0x08,0x00,0x47,0x4A,0x06,0x6C, +0x80,0x42,0x00,0x60,0x0A,0x01,0x07,0x3C,0x06,0x30,0x7C,0xB0,0x06,0x00,0x26,0x6C, +0x79,0x20,0x00,0x00,0xCE,0x87,0x30,0x10,0x30,0x70,0x80,0x48,0x00,0x3E,0x46,0x30, +0xF9,0xD1,0x00,0x00,0xCE,0x87,0x28,0x42,0x30,0x00,0x47,0x4A,0x06,0x6C,0x80,0x42, +0x00,0x60,0xDC,0x00,0x5E,0x60,0x07,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0, +0x00,0x00,0x92,0x80,0x40,0x20,0x90,0x4A,0x4A,0x6C,0x07,0x30,0x40,0x5D,0xFC,0xC1, +0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x68,0x53,0x08,0x00,0x2E,0x66, +0x07,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20, +0xBC,0x20,0x00,0x00,0x00,0x00,0x07,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0, +0x00,0x00,0x92,0x80,0x40,0x20,0x7C,0x21,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x42, +0x00,0x60,0x7C,0x00,0x87,0x3E,0x00,0x61,0x52,0xFA,0x40,0x2A,0x0D,0x20,0x04,0x66, +0xDB,0x70,0x6A,0x60,0x57,0x42,0x0D,0x2F,0x6E,0x61,0x8F,0x58,0x00,0x2A,0x07,0x30, +0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x68,0x53, +0x08,0x00,0x48,0x66,0x07,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0x40,0x20,0x7C,0x22, +0x00,0x00,0x92,0x80,0xB0,0x2E,0x00,0x98,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x07,0x30, +0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0xBC,0x20, +0x00,0x00,0x00,0x00,0x07,0x30,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00, +0x92,0x80,0x40,0x20,0x7C,0x21,0x00,0x00,0x00,0x00,0x04,0x00,0x05,0x20,0x9F,0x4A, +0xDF,0x4C,0xE0,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF4,0xFF,0xE7,0x48,0x1C,0x07, +0x6E,0x2A,0x08,0x00,0x6D,0x2D,0x10,0x00,0xFC,0xFF,0x2D,0x08,0x00,0x00,0x05,0x00, +0x00,0x67,0x90,0x00,0xAD,0x2E,0x1C,0x00,0x97,0x06,0x00,0x00,0x16,0x00,0x2D,0x2F, +0x18,0x00,0x00,0x61,0x10,0x25,0x8F,0x58,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00, +0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0C,0x00,0xB9,0x4E, +0xFC,0x00,0x7C,0x4F,0x2E,0x08,0x01,0x00,0x0D,0x00,0x26,0x67,0x6D,0x2D,0x0C,0x00, +0xF8,0xFF,0xAD,0x42,0x0C,0x00,0x8D,0x2E,0x97,0x5C,0x3C,0x2F,0x00,0x00,0x0A,0x00, +0x2D,0x2F,0x18,0x00,0x00,0x61,0xC0,0x06,0x8F,0x50,0x6E,0x2B,0xF8,0xFF,0x0C,0x00, +0x14,0x60,0x8D,0x2E,0x97,0x5C,0x3C,0x2F,0x00,0x00,0x0A,0x00,0x2D,0x2F,0x18,0x00, +0x00,0x61,0xA4,0x06,0x8F,0x50,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0xB9,0x4E, +0xFC,0x00,0x6A,0x4F,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0C,0x00,0xB9,0x4E,0xFC,0x00, +0x7C,0x4F,0x6E,0x4A,0x0C,0x00,0x08,0x67,0x2E,0x08,0x02,0x00,0x0D,0x00,0x26,0x67, +0x6D,0x26,0x14,0x00,0xFC,0xD7,0x00,0x00,0x34,0x00,0x53,0x28,0x08,0x60,0xCD,0xB9, +0x08,0x67,0x4C,0x26,0x53,0x28,0x0C,0x20,0xF4,0x66,0x0C,0x20,0x04,0x67,0x94,0x26, +0x04,0x60,0xBF,0x70,0x34,0x60,0x46,0x42,0x28,0x60,0x46,0x30,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xB2,0x04,0x50,0x2D,0xF4,0xFF,0x0E,0x60,0xAE,0x2E,0xF4,0xFF, +0x22,0x61,0x6E,0x20,0xF4,0xFF,0x50,0x2D,0xF4,0xFF,0xAE,0x4A,0xF4,0xFF,0xEC,0x66, +0x46,0x52,0x7C,0xBC,0x02,0x00,0xD2,0x6D,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xC0,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x6E,0x28,0x08,0x00, +0x6C,0x0C,0xFF,0xFF,0x04,0x00,0x06,0x67,0x6C,0x4A,0x0A,0x00,0x0A,0x66,0x7C,0x39, +0xFF,0xFF,0x04,0x00,0x00,0x60,0xBC,0x00,0x6C,0x2A,0x0C,0x00,0x2C,0x3E,0x06,0x00, +0x2C,0x3C,0x04,0x00,0x7C,0x39,0xFF,0xFF,0x04,0x00,0x86,0x3E,0x47,0x30,0xC8,0xD1, +0x35,0x3F,0x00,0x88,0x2C,0x30,0x08,0x00,0x57,0xD1,0x3C,0x3F,0x01,0x00,0x2C,0x2F, +0x10,0x00,0x3C,0x3F,0x01,0x00,0x3C,0x3F,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0xC0,0x23,0x00,0x00,0xB4,0x75,0x1A,0x67,0xC6,0x33, +0x00,0x00,0xCC,0x87,0xB9,0x2E,0x00,0x00,0xB4,0x75,0x3C,0x2F,0x00,0x00,0xF4,0x7E, +0xB9,0x4E,0xFC,0x00,0xAE,0x4F,0x8F,0x58,0x47,0x4A,0x4E,0x66,0x86,0x3E,0x2C,0x3F, +0x08,0x00,0x15,0x30,0x57,0xD1,0x2D,0x30,0x08,0x00,0x57,0x91,0x3C,0x3F,0x01,0x00, +0x2C,0x2F,0x10,0x00,0x3C,0x3F,0x01,0x00,0x3C,0x3F,0x04,0x00,0xB9,0x4E,0xFC,0x00, +0x06,0x4F,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xC0,0x23,0x00,0x00,0xB4,0x75,0x1A,0x67, +0xC6,0x33,0x00,0x00,0xCC,0x87,0xB9,0x2E,0x00,0x00,0xB4,0x75,0x3C,0x2F,0x00,0x00, +0xF4,0x7E,0xB9,0x4E,0xFC,0x00,0xAE,0x4F,0x8F,0x58,0x46,0x39,0x04,0x00,0x6C,0x42, +0x0A,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xB6,0x04,0x2E,0x60,0x6E,0x20,0x12,0x00, +0x28,0x30,0x06,0x00,0x6D,0xB0,0x04,0x00,0x1E,0x66,0x2D,0x30,0x08,0x00,0x6E,0xB0, +0x0C,0x00,0x14,0x6D,0x2E,0x30,0x0C,0x00,0x6E,0xD0,0x0A,0x00,0x6D,0xB0,0x08,0x00, +0x06,0x6F,0x8D,0x2E,0x00,0x61,0xDE,0xFE,0x55,0x2A,0x0D,0x20,0xCE,0x66,0x6E,0x20, +0x12,0x00,0xA8,0x3E,0x06,0x00,0x6E,0x20,0x12,0x00,0x28,0x3F,0x04,0x00,0x2E,0x30, +0x0C,0x00,0x57,0xD1,0x2E,0x3F,0x0A,0x00,0x2E,0x2F,0x0E,0x00,0x2E,0x3F,0x08,0x00, +0x3C,0x3F,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0xC0,0x23,0x00,0x00,0xB4,0x75,0x20,0x67,0x6E,0x20,0x12,0x00,0xE8,0x33,0x06,0x00, +0x00,0x00,0xCC,0x87,0xB9,0x2E,0x00,0x00,0xB4,0x75,0x3C,0x2F,0x00,0x00,0xF4,0x7E, +0xB9,0x4E,0xFC,0x00,0xAE,0x4F,0x8F,0x58,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x0C,0x0F,0x6E,0x2A,0x0A,0x00,0x2E,0x3C, +0x08,0x00,0x2D,0x30,0x12,0x00,0x66,0xE0,0x6D,0x20,0x24,0x00,0x68,0xBC,0x0E,0x00, +0x04,0x6C,0x47,0x42,0x0C,0x60,0x6E,0x4A,0x08,0x00,0x04,0x6C,0x01,0x7E,0x02,0x60, +0x02,0x7E,0xAE,0x42,0xF8,0xFF,0x47,0x4A,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70, +0x40,0xE5,0xC0,0x48,0xBC,0xD0,0x00,0x00,0xB2,0x04,0x40,0x2D,0xF0,0xFF,0x6E,0x20, +0xF0,0xFF,0x48,0x2D,0xF4,0xFF,0x50,0x28,0x28,0x60,0x2C,0x30,0x04,0x00,0x6D,0xB0, +0x06,0x00,0x0A,0x66,0x2C,0x30,0x08,0x00,0x6E,0xB0,0x08,0x00,0x18,0x67,0x6C,0x0C, +0xFF,0xFF,0x04,0x00,0x04,0x66,0x4C,0x2D,0xF8,0xFF,0x4C,0x20,0x48,0x2D,0xF4,0xFF, +0x50,0x28,0x0C,0x20,0xD4,0x66,0x0C,0x20,0x00,0x66,0xA8,0x00,0xAE,0x4A,0xF8,0xFF, +0x04,0x67,0x6E,0x28,0xF8,0xFF,0x6E,0x20,0xF0,0xFF,0x48,0x2D,0xF4,0xFF,0x50,0x2D, +0xFC,0xFF,0x12,0x60,0xEE,0xB9,0xFC,0xFF,0x14,0x67,0x6E,0x20,0xFC,0xFF,0x48,0x2D, +0xF4,0xFF,0x50,0x2D,0xFC,0xFF,0x6E,0x20,0xFC,0xFF,0x90,0x4A,0xE6,0x66,0x6E,0x28, +0xFC,0xFF,0x8C,0x2E,0x00,0x61,0xAE,0xFD,0xAD,0x3E,0x06,0x00,0x47,0x30,0xC8,0xD1, +0x35,0x3F,0x00,0x88,0x2E,0x30,0x08,0x00,0x57,0xD1,0x3C,0x3F,0x01,0x00,0x2C,0x2F, +0x10,0x00,0x67,0x42,0x3C,0x3F,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0xC0,0x23,0x00,0x00,0xB4,0x75,0x1C,0x67,0xED,0x33,0x06,0x00, +0x00,0x00,0xCC,0x87,0xB9,0x2E,0x00,0x00,0xB4,0x75,0x3C,0x2F,0x00,0x00,0xF4,0x7E, +0xB9,0x4E,0xFC,0x00,0xAE,0x4F,0x8F,0x58,0x6E,0x39,0x08,0x00,0x08,0x00,0x6C,0x42, +0x0A,0x00,0x47,0x39,0x06,0x00,0x6D,0x39,0x06,0x00,0x04,0x00,0x4D,0x29,0x0C,0x00, +0x48,0x60,0xAC,0x3E,0x04,0x00,0x3C,0x3F,0x09,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F, +0x8F,0x54,0x00,0x3A,0x34,0x67,0x7C,0xBA,0x01,0x00,0x00,0x67,0x4A,0xFF,0x7C,0xBA, +0x02,0x00,0x26,0x66,0xEC,0x33,0x04,0x00,0x00,0x00,0xCC,0x87,0xFC,0x23,0xFF,0xFF, +0xF2,0xFF,0x00,0x00,0xB4,0x75,0xB9,0x2E,0x00,0x00,0xB4,0x75,0x3C,0x2F,0x00,0x00, +0xF4,0x7E,0xB9,0x4E,0xFC,0x00,0xAE,0x4F,0x8F,0x58,0x6E,0x20,0xF4,0xFF,0x94,0x20, +0x6E,0x20,0xF0,0xFF,0x90,0x28,0x6E,0x20,0xF0,0xFF,0x8C,0x20,0x6E,0x4A,0x0E,0x00, +0x06,0x67,0x7C,0x39,0x01,0x00,0x0A,0x00,0x2C,0x20,0x10,0x00,0x9F,0x4A,0xDF,0x4C, +0xE0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x28, +0x08,0x00,0xBC,0x3E,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x74,0x7F,0x40,0x2A,0x0D,0x20, +0x04,0x66,0x80,0x42,0x34,0x60,0x6C,0x3B,0x0E,0x00,0x0A,0x00,0x7C,0x2B,0xFF,0x7F, +0xFF,0xFF,0x0C,0x00,0x6C,0x2B,0x28,0x00,0x18,0x00,0x6C,0x2B,0x18,0x00,0x14,0x00, +0x6C,0x2B,0x2C,0x00,0x1C,0x00,0x6C,0x3B,0x12,0x00,0x08,0x00,0x6C,0x3B,0x10,0x00, +0x06,0x00,0x6C,0x2B,0x24,0x00,0x10,0x00,0x0D,0x20,0x9F,0x4A,0xDF,0x4C,0x00,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x6E,0x2A,0x08,0x00, +0x6E,0x28,0x0C,0x00,0x14,0x0C,0xE5,0x00,0x18,0x66,0x15,0x0C,0x3F,0x00,0x08,0x66, +0x40,0x42,0x00,0x60,0x64,0x00,0x0A,0x60,0x15,0x0C,0xE5,0x00,0x04,0x66,0x01,0x70, +0x56,0x60,0x47,0x42,0x2C,0x60,0x15,0x0C,0x3F,0x00,0x20,0x67,0x14,0x10,0x80,0x48, +0x80,0x3E,0x00,0x61,0xF0,0xF3,0x00,0x3F,0x15,0x10,0x80,0x48,0x00,0x3F,0x00,0x61, +0xE4,0xF3,0x8F,0x54,0x5F,0xB0,0x04,0x67,0x40,0x42,0x2C,0x60,0x47,0x52,0x8D,0x52, +0x8C,0x52,0x7C,0xBE,0x0B,0x00,0xCE,0x6D,0x15,0x0C,0x08,0x00,0x08,0x67,0x14,0x4A, +0x04,0x66,0x01,0x70,0x12,0x60,0x15,0x10,0x80,0x48,0x14,0x12,0x81,0x48,0x41,0xC0, +0x04,0x67,0x01,0x70,0x02,0x60,0x40,0x42,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x6E,0x2A,0x08,0x00,0x6E,0x28, +0x0C,0x00,0x47,0x42,0x0E,0x60,0x1D,0x10,0x80,0x48,0x80,0x3E,0x00,0x61,0x86,0xF3, +0xC0,0x18,0x47,0x52,0x7C,0xBE,0x08,0x00,0x1C,0x6C,0x15,0x4A,0x18,0x67,0x15,0x0C, +0x2A,0x00,0x12,0x67,0x15,0x0C,0x5C,0x00,0x0C,0x67,0x15,0x0C,0x2E,0x00,0x06,0x67, +0x15,0x0C,0x20,0x00,0xD0,0x66,0x7C,0xBE,0x08,0x00,0x14,0x66,0x02,0x60,0x8D,0x52, +0x15,0x4A,0x0C,0x67,0x15,0x0C,0x2E,0x00,0x06,0x67,0x15,0x0C,0x5C,0x00,0xEE,0x66, +0x15,0x0C,0x2A,0x00,0x04,0x66,0x3F,0x70,0x02,0x60,0x20,0x70,0x00,0x1C,0x15,0x0C, +0x2A,0x00,0x02,0x66,0x8D,0x52,0x15,0x0C,0x2E,0x00,0x02,0x66,0x8D,0x52,0x04,0x60, +0xC6,0x18,0x47,0x52,0x7C,0xBE,0x08,0x00,0xF6,0x6D,0x47,0x42,0x0E,0x60,0x1D,0x10, +0x80,0x48,0x80,0x3E,0x00,0x61,0x0E,0xF3,0xC0,0x18,0x47,0x52,0x7C,0xBE,0x03,0x00, +0x1C,0x6C,0x15,0x4A,0x18,0x67,0x15,0x0C,0x2A,0x00,0x12,0x67,0x15,0x0C,0x5C,0x00, +0x0C,0x67,0x15,0x0C,0x2E,0x00,0x06,0x67,0x15,0x0C,0x20,0x00,0xD0,0x66,0x15,0x0C, +0x2A,0x00,0x04,0x66,0x3F,0x70,0x02,0x60,0x20,0x70,0x00,0x1C,0x04,0x60,0xC6,0x18, +0x47,0x52,0x7C,0xBE,0x03,0x00,0xF6,0x6D,0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x07,0x6E,0x2A,0x08,0x00,0x6E,0x28, +0x0C,0x00,0x47,0x42,0x4D,0x26,0x0A,0x60,0x13,0x0C,0x5C,0x00,0x08,0x67,0x8B,0x52, +0x47,0x52,0x13,0x4A,0xF2,0x66,0x13,0x4A,0x06,0x66,0x6E,0x4A,0x10,0x00,0x28,0x67, +0x13,0x10,0x80,0x48,0x80,0x3E,0x0D,0x2F,0x00,0x61,0x12,0x20,0x8F,0x58,0x00,0x3C, +0x04,0x6C,0x06,0x30,0x14,0x60,0x47,0x4A,0x0A,0x67,0x8C,0x2E,0x0D,0x2F,0x00,0x61, +0xD2,0xFE,0x8F,0x58,0x07,0x30,0x02,0x60,0x40,0x42,0x9F,0x4A,0xDF,0x4C,0xC0,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0xAE,0x3E,0x08,0x00, +0x00,0x61,0x48,0xF3,0x40,0x2A,0x0D,0x20,0x10,0x67,0xAE,0x2E,0x0E,0x00,0x2E,0x2F, +0x0A,0x00,0x0D,0x2F,0x10,0x61,0x8F,0x50,0x02,0x60,0xDB,0x70,0x9F,0x4A,0xDF,0x4C, +0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x6E,0x2A, +0x08,0x00,0x2E,0x2E,0x0C,0x00,0x6E,0x28,0x10,0x00,0x2D,0x2C,0x0C,0x00,0xAD,0x9C, +0x20,0x00,0x06,0x20,0x80,0xBE,0x02,0x6F,0x06,0x2E,0x87,0x4A,0x1A,0x6F,0xBC,0x2E, +0xFC,0x00,0x54,0x56,0x0C,0x2F,0x07,0x2F,0x0D,0x2F,0x67,0x42,0x00,0x61,0x44,0x03, +0xFC,0xDF,0x00,0x00,0x0E,0x00,0x02,0x60,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xC0,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0xAE,0x3E,0x08,0x00, +0x00,0x61,0xC8,0xF2,0x40,0x2A,0x0D,0x20,0x10,0x67,0xAE,0x2E,0x0E,0x00,0x2E,0x2F, +0x0A,0x00,0x0D,0x2F,0x10,0x61,0x8F,0x50,0x02,0x60,0xDB,0x70,0x9F,0x4A,0xDF,0x4C, +0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xBC,0x2E,0xFC,0x00,0x7C,0x56, +0x2E,0x2F,0x10,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x3C,0x3F,0x01,0x00, +0x00,0x61,0xE0,0x02,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0xE7,0x48,0x04,0x07,0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0C,0x00,0x6D,0x4A, +0x28,0x00,0x3A,0x67,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0xB9,0x4E,0xFC,0x00, +0x6A,0x4F,0x07,0x3C,0xC6,0x48,0x86,0xE3,0x86,0x2E,0x2D,0x2F,0x1C,0x00,0x00,0x61, +0xB4,0x1D,0x8F,0x58,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x3C,0x2F,0x00,0x00, +0x02,0x00,0x2D,0x2F,0x1C,0x00,0x8E,0x61,0x8F,0x50,0x00,0x60,0x9C,0x00,0x07,0x30, +0x07,0x32,0x41,0xE2,0x41,0xD0,0xC0,0x48,0x00,0x2C,0x2E,0x30,0x0A,0x00,0x7C,0xC0, +0xFF,0x0F,0x40,0x3D,0x0A,0x00,0x07,0x08,0x00,0x00,0x12,0x67,0x2E,0x30,0x0A,0x00, +0x40,0xE9,0x40,0x3D,0x0A,0x00,0x7C,0x3D,0x0F,0x00,0xFC,0xFF,0x06,0x60,0x7C,0x3D, +0x00,0xF0,0xFC,0xFF,0x86,0x2E,0x2D,0x2F,0x1C,0x00,0x00,0x61,0x58,0x1D,0x8F,0x58, +0x8E,0x2E,0x97,0x55,0x3C,0x2F,0x00,0x00,0x02,0x00,0x2D,0x2F,0x1C,0x00,0x00,0x61, +0xB6,0xFE,0x8F,0x50,0x8E,0x2E,0x97,0x55,0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0x2E,0x30, +0xFE,0xFF,0x6E,0xC0,0xFC,0xFF,0x6E,0x80,0x0A,0x00,0x40,0x3D,0xFE,0xFF,0x8E,0x2E, +0x97,0x55,0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0x86,0x2E,0x2D,0x2F,0x1C,0x00,0x00,0x61, +0x14,0x1D,0x8F,0x58,0x8E,0x2E,0x97,0x55,0x3C,0x2F,0x00,0x00,0x02,0x00,0x2D,0x2F, +0x1C,0x00,0x00,0x61,0xF2,0xFE,0x8F,0x50,0x9F,0x4A,0xDF,0x4C,0xC0,0x20,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x04,0x03,0x2E,0x3E,0x08,0x00,0x6E,0x2A, +0x0A,0x00,0x47,0x4A,0x08,0x6C,0x07,0x30,0x40,0x52,0x00,0x60,0x96,0x00,0x6D,0x4A, +0x28,0x00,0x38,0x67,0x07,0x30,0xC0,0x48,0x80,0xE3,0x80,0x2E,0x2D,0x2F,0x1C,0x00, +0x00,0x61,0xC2,0x1C,0x8F,0x58,0x8E,0x2E,0x97,0x55,0x3C,0x2F,0x00,0x00,0x02,0x00, +0x2D,0x2F,0x1C,0x00,0x00,0x61,0x20,0xFE,0x8F,0x50,0x8E,0x2E,0x97,0x55,0xB9,0x4E, +0xFC,0x00,0x6A,0x4F,0x40,0x42,0x2E,0x30,0xFE,0xFF,0x56,0x60,0x07,0x30,0x07,0x32, +0x41,0xE2,0x41,0xD0,0xC0,0x48,0x80,0x2E,0x2D,0x2F,0x1C,0x00,0x00,0x61,0x86,0x1C, +0x8F,0x58,0x8E,0x2E,0x97,0x55,0x3C,0x2F,0x00,0x00,0x02,0x00,0x2D,0x2F,0x1C,0x00, +0x00,0x61,0xE4,0xFD,0x8F,0x50,0x8E,0x2E,0x97,0x55,0xB9,0x4E,0xFC,0x00,0x6A,0x4F, +0x07,0x08,0x00,0x00,0x08,0x67,0x2E,0x3E,0xFE,0xFF,0x47,0xE8,0x08,0x60,0x2E,0x3E, +0xFE,0xFF,0x7C,0xCE,0xFF,0x0F,0x7C,0xBE,0xFF,0x0F,0x04,0x66,0xFF,0x70,0x02,0x60, +0x07,0x30,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x1F,0x6E,0x28,0x08,0x00,0x2C,0x3C,0x24,0x00,0x6C,0x2A,0x10,0x00, +0x46,0x4A,0x08,0x6C,0x06,0x3A,0x45,0x52,0x00,0x60,0xA4,0x00,0x46,0x4A,0x0C,0x6F, +0x8D,0x2E,0x06,0x3F,0x00,0x61,0x1C,0xFF,0x8F,0x54,0x00,0x3A,0x46,0x4A,0x10,0x66, +0x6C,0x4A,0x0A,0x00,0x06,0x67,0x2C,0x30,0x0A,0x00,0x02,0x60,0xFF,0x70,0x00,0x3A, +0x6E,0x4A,0x0C,0x00,0x00,0x67,0x6E,0x00,0x7C,0xBA,0xFF,0xFF,0x66,0x66,0x06,0x38, +0x02,0x7E,0x22,0x60,0x7C,0xB8,0x02,0x00,0x02,0x6C,0x02,0x78,0x8D,0x2E,0x04,0x3F, +0x00,0x61,0xE0,0xFE,0x8F,0x54,0x00,0x3A,0x12,0x67,0x44,0x52,0xC4,0x48,0xED,0x89, +0x10,0x00,0x44,0x48,0x47,0x52,0x6D,0xBE,0x10,0x00,0xD8,0x6D,0x04,0x3A,0x6D,0xBE, +0x10,0x00,0x2C,0x6C,0x8D,0x2E,0x3C,0x3F,0xFF,0xFF,0x05,0x3F,0x00,0x61,0xC0,0xFD, +0x8F,0x58,0x46,0x4A,0x0E,0x67,0x8D,0x2E,0x05,0x3F,0x06,0x3F,0x00,0x61,0xB0,0xFD, +0x8F,0x58,0x0A,0x60,0x45,0x39,0x0A,0x00,0x6C,0x00,0x01,0x00,0x04,0x00,0x04,0x60, +0xFF,0x70,0x22,0x60,0x7C,0xBA,0xFF,0xFF,0x04,0x66,0xFF,0x70,0x18,0x60,0x45,0x39, +0x24,0x00,0x8D,0x2E,0x05,0x3F,0x00,0x61,0x28,0xF4,0x8F,0x54,0x40,0x39,0x26,0x00, +0x6C,0x42,0x28,0x00,0x00,0x70,0x9F,0x4A,0xDF,0x4C,0xF0,0x30,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00,0x2E,0x20,0x0C,0x00, +0xAD,0xD1,0x20,0x00,0x6E,0x4A,0x10,0x00,0x08,0x67,0x2E,0x20,0x0C,0x00,0x6D,0xD1, +0x28,0x00,0x2D,0x20,0x20,0x00,0xAD,0xB0,0x0C,0x00,0x0C,0x6F,0x6D,0x2B,0x20,0x00, +0x0C,0x00,0x6D,0x00,0x01,0x00,0x04,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xCA,0xFF,0xE7,0x48,0x0C,0x01,0x6E,0x28,0x0A,0x00,0x6C,0x2A, +0x10,0x00,0x6D,0x3D,0x0E,0x00,0xF6,0xFF,0x6D,0x3D,0x0A,0x00,0xF2,0xFF,0x6D,0x3D, +0x0C,0x00,0xF0,0xFF,0x6C,0x2D,0x20,0x00,0xD2,0xFF,0x6C,0x3D,0x24,0x00,0xEE,0xFF, +0xAD,0x3E,0x16,0x00,0x6C,0x30,0x28,0x00,0x08,0x2F,0x0E,0x2F,0x97,0x5D,0x00,0x61, +0xCE,0x1B,0x8F,0x50,0x40,0x3D,0xF8,0xFF,0x2C,0x30,0x26,0x00,0x6E,0xD1,0xF8,0xFF, +0x6E,0x4A,0xFA,0xFF,0x00,0x67,0xA2,0x00,0x2E,0x30,0xF6,0xFF,0x6E,0x90,0xFA,0xFF, +0xC0,0x48,0x2E,0x22,0x0E,0x00,0x81,0xB0,0x06,0x6F,0x2E,0x20,0x0E,0x00,0x0A,0x60, +0x2E,0x30,0xF6,0xFF,0x6E,0x90,0xFA,0xFF,0xC0,0x48,0x40,0x3D,0xF4,0xFF,0xAE,0x3E, +0x08,0x00,0x0D,0x2F,0x2E,0x3F,0xF8,0xFF,0x00,0x61,0xF8,0xF7,0x8F,0x5C,0x40,0x2D, +0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x6E,0x30,0xF4,0xFF,0x08,0x2F,0x0C,0x2F,0x00,0x61, +0x20,0xFF,0x8F,0x50,0x2E,0x30,0xF4,0xFF,0xC0,0x48,0xAE,0x91,0x0E,0x00,0x6E,0x52, +0xF8,0xFF,0xAE,0x4A,0x12,0x00,0x14,0x66,0x2E,0x20,0xFC,0xFF,0x2E,0x32,0xFA,0xFF, +0xC1,0x48,0x81,0xD0,0x40,0x2D,0xD6,0xFF,0x00,0x60,0xB4,0x02,0x2E,0x2F,0x12,0x00, +0x2E,0x20,0xFC,0xFF,0x2E,0x32,0xFA,0xFF,0xC1,0x48,0x81,0xD0,0x00,0x2F,0x2E,0x3F, +0xF4,0xFF,0x6E,0x20,0x16,0x00,0x90,0x4E,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x30, +0xF4,0xFF,0xC0,0x48,0xAE,0xD1,0x12,0x00,0x2D,0x30,0x18,0x00,0xC0,0x48,0xAE,0xC0, +0x0E,0x00,0x40,0x3D,0xEC,0xFF,0x2E,0x20,0x0E,0x00,0x2E,0x32,0xEC,0xFF,0xC1,0x48, +0x81,0x90,0x40,0x2D,0xCA,0xFF,0x00,0x67,0xC0,0x01,0x2D,0x30,0x14,0x00,0x6E,0xC0, +0xF8,0xFF,0x40,0x3D,0xE8,0xFF,0x6E,0x4A,0xE8,0xFF,0x4C,0x67,0x8D,0x2E,0x2E,0x2F, +0x12,0x00,0x2E,0x3F,0xF8,0xFF,0x2E,0x3F,0xE8,0xFF,0x2E,0x3F,0x08,0x00,0x00,0x61, +0x9C,0xF6,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x30,0xE8,0xFF,0x2D,0x32,0x16,0x00, +0x60,0xE3,0x40,0x3D,0xE6,0xFF,0xC0,0x48,0xAE,0xD1,0x12,0x00,0x2E,0x30,0xE6,0xFF, +0xC0,0x48,0xAE,0x91,0xCA,0xFF,0xBC,0x3E,0x01,0x00,0x6E,0x30,0xE6,0xFF,0x08,0x2F, +0x0C,0x2F,0x00,0x61,0x4C,0xFE,0x8F,0x50,0x2E,0x20,0xCA,0xFF,0x2D,0x32,0x16,0x00, +0xA0,0xE2,0x40,0x2D,0xCE,0xFF,0xAD,0x3E,0x12,0x00,0x2E,0x2F,0xCE,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xE4,0xFF,0x00,0x61,0x76,0x1A,0x8F,0x50,0x40,0x3D,0xEA,0xFF, +0x40,0x42,0x40,0x3D,0xDE,0xFF,0xC0,0x48,0x40,0x2D,0xDA,0xFF,0x40,0x3D,0xE0,0xFF, +0x40,0x3D,0xE2,0xFF,0x00,0x60,0xB6,0x00,0xAE,0x3E,0x08,0x00,0x0C,0x2F,0x00,0x61, +0x1C,0xFD,0x8F,0x58,0xC0,0x48,0x40,0x2D,0xD6,0xFF,0xAE,0x4A,0xD6,0xFF,0x2A,0x66, +0x2E,0x30,0xE2,0xFF,0x6E,0xD0,0xE0,0xFF,0x6C,0xB0,0x26,0x00,0x1C,0x66,0x2E,0x30, +0xF2,0xFF,0x6E,0xD1,0xE0,0xFF,0x2E,0x30,0xF0,0xFF,0xC0,0x48,0xAE,0xD1,0xDA,0xFF, +0x6E,0x4A,0xEA,0xFF,0x10,0x67,0x00,0x60,0x74,0x00,0x6E,0x4A,0xEA,0xFF,0x06,0x66, +0x7C,0x3D,0x01,0x00,0xDE,0xFF,0x6E,0x4A,0xE0,0xFF,0x1C,0x67,0x8D,0x2E,0x2E,0x2F, +0x12,0x00,0x2E,0x3F,0xE2,0xFF,0x2E,0x3F,0xE0,0xFF,0x2E,0x3F,0x08,0x00,0x00,0x61, +0xBC,0xF5,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x20,0xDA,0xFF,0xAE,0xD1,0x12,0x00, +0x57,0x42,0x2E,0x2F,0xDA,0xFF,0x0C,0x2F,0x00,0x61,0x86,0xFD,0x8F,0x50,0xAE,0x4A, +0xD6,0xFF,0x00,0x66,0x2E,0x01,0x6C,0x3D,0x26,0x00,0xE2,0xFF,0x6E,0x3D,0xF2,0xFF, +0xE0,0xFF,0x6E,0x30,0xF0,0xFF,0x48,0x2D,0xDA,0xFF,0x6E,0x4A,0xEA,0xFF,0x0C,0x66, +0x6E,0x4A,0xDE,0xFF,0x06,0x67,0x6E,0x42,0xDE,0xFF,0x9A,0x60,0x2E,0x30,0xEA,0xFF, +0x6E,0x53,0xEA,0xFF,0x40,0x4A,0x00,0x66,0x40,0xFF,0x6E,0x4A,0xE4,0xFF,0x58,0x67, +0xAE,0x3E,0x08,0x00,0x0C,0x2F,0x00,0x61,0x54,0xFC,0x8F,0x58,0x40,0x4A,0x00,0x66, +0xE2,0x00,0x2E,0x30,0xE4,0xFF,0x2D,0x32,0x16,0x00,0x60,0xE3,0x40,0x3D,0xE6,0xFF, +0xBC,0x3E,0x01,0x00,0x6E,0x30,0xE6,0xFF,0x08,0x2F,0x0C,0x2F,0x00,0x61,0x12,0xFD, +0x8F,0x50,0x8D,0x2E,0x2E,0x2F,0x12,0x00,0x2C,0x3F,0x26,0x00,0x2E,0x3F,0xE4,0xFF, +0x2E,0x3F,0x08,0x00,0x00,0x61,0x16,0xF5,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x30, +0xE6,0xFF,0xC0,0x48,0xAE,0xD1,0x12,0x00,0x6E,0x4A,0xEC,0xFF,0x00,0x67,0x94,0x00, +0xAD,0x3E,0x16,0x00,0x6C,0x30,0x28,0x00,0x08,0x2F,0x0E,0x2F,0x97,0x5D,0x00,0x61, +0x1E,0x19,0x8F,0x50,0x40,0x3D,0xF8,0xFF,0x6E,0x4A,0xF8,0xFF,0x0A,0x67,0x2E,0x30, +0xF8,0xFF,0x6E,0xB0,0xF2,0xFF,0x14,0x66,0xAE,0x3E,0x08,0x00,0x0C,0x2F,0x00,0x61, +0xCC,0xFB,0x8F,0x58,0x40,0x4A,0x5A,0x66,0x6E,0x42,0xF8,0xFF,0xAE,0x3E,0x08,0x00, +0x0D,0x2F,0x2C,0x3F,0x26,0x00,0x2E,0x30,0xF8,0xFF,0x57,0xD1,0x00,0x61,0x54,0xF5, +0x8F,0x5C,0x40,0x2D,0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x6E,0x30,0xEC,0xFF,0x08,0x2F, +0x0C,0x2F,0x00,0x61,0x7C,0xFC,0x8F,0x50,0xAE,0x4A,0x12,0x00,0x08,0x66,0x6E,0x2D, +0xFC,0xFF,0xD6,0xFF,0x28,0x60,0x2E,0x3F,0x08,0x00,0x2E,0x2F,0x12,0x00,0x2E,0x2F, +0xFC,0xFF,0x2E,0x3F,0xEC,0xFF,0x6E,0x20,0x16,0x00,0x90,0x4E,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x2C,0x20,0x20,0x00,0xAE,0x90,0xD2,0xFF,0x40,0x2D,0xD6,0xFF,0x2E,0x20, +0xD6,0xFF,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x6D,0x2D,0x14,0x00, +0xFC,0xFF,0xBC,0x3E,0x04,0x00,0xB9,0x4E,0xFC,0x00,0x74,0x7F,0x40,0x26,0x0B,0x20, +0x04,0x66,0x80,0x42,0x66,0x60,0xAD,0x4A,0x1C,0x00,0x06,0x67,0x6D,0x27,0x1C,0x00, +0x20,0x00,0x4B,0x2B,0x1C,0x00,0x4D,0x27,0x18,0x00,0xAB,0x42,0x14,0x00,0x6C,0x37, +0x1A,0x00,0x0E,0x00,0x8B,0x2E,0x97,0x06,0x00,0x00,0x0E,0x00,0xB9,0x4E,0xFC,0x00, +0x6A,0x4F,0x6D,0x27,0x24,0x00,0x24,0x00,0x6E,0x27,0xFC,0xFF,0x28,0x00,0x6E,0x20, +0xFC,0xFF,0x28,0x20,0x20,0x00,0xBC,0xD0,0xFF,0xFF,0xE0,0xFF,0x40,0x27,0x2C,0x00, +0x6C,0x37,0x16,0x00,0x10,0x00,0x6C,0x37,0x18,0x00,0x12,0x00,0x8B,0x2E,0x0C,0x2F, +0x3C,0x3F,0x0B,0x00,0x00,0x61,0x1E,0xF0,0x8F,0x5C,0x0B,0x20,0x9F,0x4A,0xDF,0x4C, +0x00,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xE8,0xFF,0xE7,0x48,0x1C,0x01,0x6E,0x2A, +0x08,0x00,0x6E,0x42,0xFA,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x2E,0x2F, +0x0C,0x00,0x00,0x61,0xCE,0xF6,0x8F,0x58,0x2E,0x30,0x10,0x00,0x40,0x1D,0xF3,0xFF, +0x6D,0x28,0x14,0x00,0x0C,0x20,0x14,0x66,0x8D,0x2E,0x00,0x61,0xCA,0xF5,0x40,0x28, +0x4C,0x2B,0x14,0x00,0x06,0x66,0x80,0x42,0x00,0x60,0x54,0x01,0x6E,0x20,0x12,0x00, +0x10,0x20,0x40,0x2D,0xF4,0xFF,0xBC,0xB0,0xFF,0xFF,0xFF,0xFF,0x06,0x66,0x6D,0x2D, +0x30,0x00,0xF4,0xFF,0xAE,0x2E,0xF4,0xFF,0x0C,0x2F,0x00,0x61,0x88,0x16,0x8F,0x58, +0x6E,0x42,0xF8,0xFF,0x6D,0x2D,0x1C,0x00,0xFC,0xFF,0x22,0x60,0xAE,0x2E,0xFC,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x00,0x61,0xB2,0xEF,0x8F,0x58,0x40,0x3D, +0xF8,0xFF,0x10,0x66,0x6E,0x20,0xFC,0xFF,0x68,0x2D,0x20,0x00,0xFC,0xFF,0xAE,0x4A, +0xFC,0xFF,0xD8,0x66,0x00,0x60,0x6E,0x00,0x2C,0x20,0x20,0x00,0xAD,0xB0,0x30,0x00, +0x4C,0x6F,0x2C,0x08,0x01,0x00,0x05,0x00,0x44,0x66,0x13,0x0C,0x2E,0x00,0x3E,0x67, +0x2B,0x08,0x04,0x00,0x0B,0x00,0x36,0x67,0x13,0x0C,0xE5,0x00,0x30,0x67,0x8B,0x2E, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x00,0x61,0x62,0xEF,0x8F,0x58,0x40,0x4A, +0x06,0x67,0x6E,0x4A,0xF8,0xFF,0x16,0x66,0x8B,0x2E,0x0D,0x2F,0x00,0x61,0x7E,0xFE, +0x8F,0x58,0x40,0x2D,0xFC,0xFF,0x06,0x66,0x80,0x42,0x00,0x60,0xA2,0x00,0x8B,0x2E, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x00,0x61,0x5A,0xF5,0x8F,0x58,0x40,0x3D, +0xFA,0xFF,0x1C,0x66,0x97,0x42,0x3C,0x2F,0x00,0x00,0x20,0x00,0x0C,0x2F,0x00,0x61, +0x46,0xF7,0x8F,0x50,0x40,0x26,0x0B,0x20,0x06,0x67,0x13,0x4A,0x00,0x66,0x7A,0xFF, +0x6E,0x20,0x12,0x00,0x90,0x0C,0xFF,0xFF,0xFF,0xFF,0x12,0x66,0x2C,0x20,0x20,0x00, +0xAD,0xB0,0x30,0x00,0x06,0x6F,0x6C,0x2B,0x20,0x00,0x30,0x00,0x08,0x60,0x6E,0x20, +0x12,0x00,0xAC,0x20,0x20,0x00,0x6E,0x4A,0xFA,0xFF,0x1C,0x66,0x0B,0x20,0x0E,0x67, +0x6E,0x20,0x0C,0x00,0x10,0x0C,0xE5,0x00,0x04,0x66,0x0B,0x20,0x30,0x60,0x6C,0x00, +0x02,0x00,0x04,0x00,0x80,0x42,0x26,0x60,0x6E,0x20,0x12,0x00,0x90,0x0C,0xFF,0xFF, +0xFF,0xFF,0x18,0x66,0xAC,0x2E,0x20,0x00,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x0C,0x2F, +0x00,0x61,0x62,0x15,0x8F,0x58,0x2E,0x20,0xFC,0xFF,0x02,0x60,0x0B,0x20,0x9F,0x4A, +0xDF,0x4C,0x00,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07, +0x01,0x7E,0x2E,0x30,0x08,0x00,0x67,0xE1,0x07,0x30,0x79,0xC0,0x00,0x00,0x84,0x87, +0x38,0x66,0xAE,0x3E,0x08,0x00,0x3C,0x3F,0x07,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F, +0x8F,0x54,0x40,0x2A,0x0D,0x20,0x06,0x66,0xFF,0x70,0x00,0x60,0xC0,0x00,0xAE,0x3E, +0x08,0x00,0x0D,0x2F,0x00,0x61,0xA4,0xEB,0x8F,0x58,0x80,0x4A,0x06,0x67,0xD9,0x70, +0x00,0x60,0xAA,0x00,0x79,0x8F,0x00,0x00,0x84,0x87,0x6E,0x30,0x08,0x00,0x79,0x22, +0x00,0x00,0xCE,0x87,0x30,0x4A,0x40,0x98,0x22,0x67,0x6E,0x30,0x08,0x00,0x79,0x22, +0x00,0x00,0xCE,0x87,0x30,0x10,0x40,0x98,0x80,0x48,0x40,0x30,0xC8,0xD1,0xC8,0xD1, +0x7C,0x22,0x00,0x00,0xEE,0x7D,0xB0,0x4A,0x00,0x98,0x6A,0x66,0x01,0x7C,0x0E,0x60, +0x7C,0x20,0x00,0x00,0x66,0x80,0x30,0x4A,0x00,0x60,0x08,0x67,0x46,0x52,0x7C,0xBC, +0x28,0x00,0xEC,0x6D,0x7C,0xBC,0x28,0x00,0x04,0x66,0xFF,0x70,0x4E,0x60,0x7C,0x20, +0x00,0x00,0x66,0x80,0x30,0x10,0x00,0x60,0x80,0x48,0x46,0x32,0xFC,0xD3,0x00,0x00, +0x66,0x80,0x11,0x52,0x46,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xEE,0x7D, +0x6E,0x32,0x08,0x00,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x80,0x83,0x51,0x22, +0xA9,0x20,0x24,0x00,0x06,0x30,0x79,0x22,0x00,0x00,0xCE,0x87,0x6E,0x34,0x08,0x00, +0xCA,0xD3,0x40,0x13,0x40,0x00,0x2E,0x30,0x08,0x00,0xC0,0x48,0x9F,0x4A,0xDF,0x4C, +0xC0,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x6E,0x20, +0x08,0x00,0x50,0x2A,0x2D,0x0C,0x3A,0x00,0x01,0x00,0x14,0x66,0x15,0x10,0x80,0x48, +0x80,0x3E,0x00,0x61,0xD0,0xE7,0x00,0x3E,0x7C,0xDE,0xBF,0xFF,0x8D,0x54,0x0E,0x60, +0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x37,0x00,0x80,0x48,0x00,0x3E,0x87,0x3E, +0x00,0x61,0xC6,0xFE,0x80,0x4A,0x04,0x6C,0x80,0x42,0x40,0x60,0x15,0x0C,0x5C,0x00, +0x18,0x66,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x80,0x83,0x70,0x20, +0x00,0x98,0x68,0x28,0x24,0x00,0x8D,0x52,0x1A,0x60,0x79,0x20,0x00,0x00,0xCE,0x87, +0x30,0x10,0x40,0x70,0x80,0x48,0x40,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xEE,0x7D,0x50,0x28,0x6E,0x20,0x08,0x00,0x8D,0x20,0x0C,0x20,0x9F,0x4A,0xDF,0x4C, +0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xE8,0xFF,0xE7,0x48,0x0C,0x03,0x6E,0x2D, +0x08,0x00,0xFC,0xFF,0x8E,0x2E,0x97,0x59,0x00,0x61,0x5C,0xFF,0x40,0x2A,0x0D,0x20, +0x06,0x66,0x0D,0x20,0x00,0x60,0xE8,0x00,0xAE,0x3E,0x10,0x00,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xE8,0xFF,0x2E,0x2F,0xFC,0xFF,0x00,0x61,0x68,0xF4,0x8F,0x50,0x00,0x3E, +0x00,0x67,0xC2,0x00,0x47,0x4A,0x14,0x6C,0x7C,0xBE,0xFE,0xFF,0x04,0x66,0x6D,0x2A, +0x18,0x00,0x07,0x30,0x40,0x44,0x00,0x3E,0x00,0x60,0x8A,0x00,0x6D,0x2D,0x1C,0x00, +0xF8,0xFF,0x1E,0x66,0xBC,0x2E,0xFD,0x00,0x42,0x30,0x3C,0x3F,0x10,0x00,0x2E,0x2F, +0xFC,0xFF,0x0D,0x2F,0x00,0x61,0x60,0xFC,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2D, +0xF8,0xFF,0x4D,0x28,0x6E,0x2A,0xF8,0xFF,0x0D,0x20,0x00,0x67,0x78,0x00,0x3C,0x60, +0x6D,0x2D,0x20,0x00,0xF8,0xFF,0x30,0x66,0xCD,0x9B,0x0C,0x20,0x28,0x67,0x6C,0x20, +0x14,0x00,0x28,0x08,0x01,0x00,0x05,0x00,0x1C,0x66,0xBC,0x2E,0xFD,0x00,0x42,0x30, +0x3C,0x3F,0x10,0x00,0x2E,0x2F,0xFC,0xFF,0x0C,0x2F,0x00,0x61,0x1A,0xFC,0xFC,0xDF, +0x00,0x00,0x0A,0x00,0x40,0x2A,0x04,0x60,0x6E,0x2A,0xF8,0xFF,0x0D,0x20,0x14,0x67, +0x8D,0x2E,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x00,0x61,0x30,0xEC,0x8F,0x58, +0x40,0x4A,0xAC,0x67,0x47,0x30,0xEE,0xD1,0xFC,0xFF,0x48,0x2D,0xFC,0xFF,0x10,0x4A, +0x06,0x67,0xAE,0x52,0xFC,0xFF,0x02,0x60,0x0A,0x60,0x0D,0x20,0x06,0x67,0x47,0x4A, +0x00,0x66,0x26,0xFF,0x6E,0x20,0x0C,0x00,0xAE,0x20,0xFC,0xFF,0x0D,0x20,0x9F,0x4A, +0xDF,0x4C,0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x00,0x0F, +0x6E,0x20,0x08,0x00,0x28,0x0C,0x3A,0x00,0x01,0x00,0x1A,0x66,0x6E,0x20,0x08,0x00, +0x10,0x10,0x80,0x48,0x80,0x3E,0x00,0x61,0x2C,0xE6,0x00,0x3A,0x7C,0xDA,0xBF,0xFF, +0xAE,0x54,0x08,0x00,0x0E,0x60,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x37,0x00, +0x80,0x48,0x00,0x3A,0x85,0x3E,0x00,0x61,0x20,0xFD,0x40,0x2D,0xFC,0xFF,0x08,0x6C, +0x2E,0x20,0xFC,0xFF,0x00,0x60,0x90,0x00,0x79,0x20,0x00,0x00,0xCE,0x87,0x30,0x10, +0x40,0x50,0x80,0x48,0x00,0x3E,0x0A,0x67,0x47,0x30,0xFC,0xD1,0x00,0x00,0x66,0x80, +0x10,0x53,0x01,0x7E,0x0E,0x60,0x7C,0x20,0x00,0x00,0x66,0x80,0x30,0x4A,0x00,0x70, +0x08,0x67,0x47,0x52,0x7C,0xBE,0x28,0x00,0xEC,0x6D,0x7C,0xBE,0x28,0x00,0x04,0x6D, +0xDE,0x70,0x52,0x60,0xBC,0x3E,0x01,0x00,0x0E,0x2F,0x97,0x51,0x2E,0x2F,0x08,0x00, +0x00,0x61,0x54,0xFE,0x8F,0x50,0x40,0x2D,0xFC,0xFF,0x04,0x66,0xDE,0x70,0x36,0x60, +0x7C,0x20,0x00,0x00,0x66,0x80,0x30,0x10,0x00,0x70,0x80,0x48,0x47,0x32,0xFC,0xD3, +0x00,0x00,0x66,0x80,0x11,0x52,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xEE,0x7D,0xAE,0x20,0xFC,0xFF,0x07,0x30,0x45,0x32,0xF9,0xD3,0x00,0x00,0xCE,0x87, +0x40,0x13,0x40,0x00,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xE0,0x00,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x03,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00, +0x15,0x4A,0x4A,0x67,0x4D,0x26,0x47,0x42,0x04,0x60,0xDD,0x18,0x47,0x52,0x7C,0xBE, +0x08,0x00,0x0A,0x6C,0x15,0x4A,0x06,0x67,0x15,0x0C,0x20,0x00,0xEC,0x66,0x13,0x0C, +0x2E,0x00,0x2A,0x67,0xEB,0x4B,0x08,0x00,0x15,0x0C,0x20,0x00,0x06,0x67,0xFC,0x18, +0x2E,0x00,0x02,0x60,0x18,0x60,0x47,0x42,0x04,0x60,0xDD,0x18,0x47,0x52,0x7C,0xBE, +0x03,0x00,0x0A,0x6C,0x15,0x4A,0x06,0x67,0x15,0x0C,0x20,0x00,0xEC,0x66,0x14,0x42, +0x0C,0x20,0x9F,0x4A,0xDF,0x4C,0x80,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x6E,0x20,0x08,0x00,0xA8,0x4A,0x18,0x00,0x14,0x67,0xAE,0x2E,0x0C,0x00,0x6E,0x20, +0x08,0x00,0x28,0x2F,0x18,0x00,0xE4,0x61,0x8F,0x58,0x40,0x2D,0x0C,0x00,0xAE,0x2E, +0x0C,0x00,0x2E,0x2F,0x08,0x00,0x00,0x61,0x68,0xFF,0x8F,0x58,0x40,0x2D,0x0C,0x00, +0x6E,0x20,0x0C,0x00,0xBC,0x10,0x5C,0x00,0xAE,0x52,0x0C,0x00,0x2E,0x20,0x0C,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x4A,0x0C,0x00, +0x08,0x67,0x2E,0x30,0x0C,0x00,0x40,0x53,0x0C,0x60,0x79,0x20,0x00,0x00,0xCE,0x87, +0x28,0x10,0x37,0x00,0x80,0x48,0x40,0x3D,0x0C,0x00,0xAE,0x3E,0x0C,0x00,0x00,0x61, +0x98,0xFB,0x80,0x4A,0x0A,0x6C,0x6E,0x20,0x08,0x00,0x10,0x42,0xD2,0x70,0x3A,0x60, +0x6E,0x30,0x0C,0x00,0x79,0x22,0x00,0x00,0xCE,0x87,0x30,0x10,0x40,0x98,0x80,0x48, +0x40,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xEE,0x7D,0x50,0x2A,0xAE,0x2E, +0x08,0x00,0x0D,0x2F,0x00,0x61,0x56,0xFF,0x8F,0x58,0x40,0x2D,0x08,0x00,0xAE,0x53, +0x08,0x00,0x6E,0x20,0x08,0x00,0x10,0x42,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0x00,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x20, +0x20,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0xCE,0x87, +0x6E,0x21,0x08,0x00,0x20,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x2E,0x30, +0x08,0x00,0x79,0x22,0x00,0x00,0xCE,0x87,0x40,0x13,0x37,0x00,0xBC,0x3E,0x0A,0x00, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20, +0x00,0x00,0xCE,0x87,0x28,0x10,0x37,0x00,0x80,0x48,0xC0,0x48,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0xCE,0x87,0xA8,0x2E,0x20,0x00,0x2E,0x3F, +0x0C,0x00,0x2E,0x2F,0x08,0x00,0x06,0x61,0x8F,0x5C,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xE8,0xFF,0xE7,0x48,0x04,0x01,0x6E,0x0C,0x08,0x00,0x0C,0x00,0x06,0x67,0x6E,0x00, +0x21,0x00,0x0C,0x00,0x57,0x42,0x0E,0x2F,0x97,0x59,0x2E,0x2F,0x08,0x00,0x00,0x61, +0x36,0xFC,0x8F,0x50,0x40,0x2D,0xEC,0xFF,0x06,0x66,0xDF,0x70,0x00,0x60,0xA6,0x00, +0xAE,0x42,0xE8,0xFF,0xAE,0x4A,0xEC,0xFF,0x2C,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xE8,0xFF,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0xFC,0xFF,0x2E,0x2F,0xEC,0xFF,0x00,0x61, +0xD6,0xF8,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2A,0x0D,0x20,0x06,0x66,0xDF,0x70, +0x00,0x60,0x72,0x00,0x04,0x60,0xDF,0x70,0x6A,0x60,0xAE,0x4A,0x0E,0x00,0x62,0x67, +0xAE,0x2E,0x0E,0x00,0x2E,0x2F,0xFC,0xFF,0x3C,0x3F,0x0C,0x00,0x00,0x61,0xB6,0xE8, +0x8F,0x5C,0x2E,0x30,0x0C,0x00,0x6E,0x22,0x0E,0x00,0x40,0x13,0x0C,0x00,0xAE,0x2E, +0x0E,0x00,0x97,0x06,0x00,0x00,0x0D,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF, +0x3C,0x3F,0x04,0x00,0x00,0x61,0x8E,0xE8,0x8F,0x5C,0xAE,0x2E,0x0E,0x00,0x97,0x06, +0x00,0x00,0x11,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x3C,0x3F,0x04,0x00, +0x00,0x61,0x72,0xE8,0x8F,0x5C,0xAE,0x2E,0x0E,0x00,0x0D,0x2F,0x00,0x61,0xD8,0x00, +0x8F,0x58,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xF6,0xFF,0xE7,0x48,0x04,0x01,0x8E,0x2E,0x97,0x59,0x79,0x20,0x00,0x00,0xCE,0x87, +0x28,0x2F,0x20,0x00,0x97,0x06,0x00,0x00,0x11,0x00,0x3C,0x3F,0x04,0x00,0x00,0x61, +0x34,0xE8,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x79,0x20,0x00,0x00, +0xCE,0x87,0x28,0x2F,0x20,0x00,0x97,0x06,0x00,0x00,0x0D,0x00,0x3C,0x3F,0x04,0x00, +0x00,0x61,0x12,0xE8,0x8F,0x5C,0x79,0x20,0x00,0x00,0xCE,0x87,0x68,0x20,0x20,0x00, +0x68,0x1D,0x0C,0x00,0xFA,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x2E,0x10, +0xFA,0xFF,0x80,0x48,0x00,0x3F,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x2F,0x20,0x00, +0x2E,0x2F,0xFC,0xFF,0x00,0x61,0xD0,0xF7,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2A, +0x0D,0x20,0x04,0x66,0xCF,0x70,0x34,0x60,0x79,0x20,0x00,0x00,0xCE,0x87,0xA8,0x2E, +0x20,0x00,0x97,0x06,0x00,0x00,0x0D,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF, +0x3C,0x3F,0x04,0x00,0x00,0x61,0xAE,0xE7,0x8F,0x5C,0x79,0x20,0x00,0x00,0xCE,0x87, +0xA8,0x2E,0x20,0x00,0x0D,0x2F,0x0E,0x61,0x8F,0x58,0x80,0x42,0x9F,0x4A,0xDF,0x4C, +0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x6E,0x20, +0x0C,0x00,0x6E,0x22,0x08,0x00,0x69,0x11,0x0B,0x00,0x15,0x00,0xAE,0x2E,0x0C,0x00, +0x97,0x06,0x00,0x00,0x16,0x00,0x2E,0x2F,0x08,0x00,0x97,0x06,0x00,0x00,0x16,0x00, +0x3C,0x3F,0x04,0x00,0x00,0x61,0x5E,0xE7,0x8F,0x5C,0xAE,0x2E,0x0C,0x00,0x97,0x06, +0x00,0x00,0x16,0x00,0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0xAE,0x2E,0x0C,0x00,0x97,0x06, +0x00,0x00,0x18,0x00,0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0xAE,0x2E,0x0C,0x00,0x97,0x06, +0x00,0x00,0x1A,0x00,0x2E,0x2F,0x08,0x00,0x97,0x06,0x00,0x00,0x1C,0x00,0x3C,0x3F, +0x04,0x00,0x00,0x61,0x20,0xE7,0x8F,0x5C,0xAE,0x2E,0x0C,0x00,0x97,0x06,0x00,0x00, +0x1A,0x00,0xB9,0x4E,0xFC,0x00,0x7C,0x4F,0xAE,0x2E,0x0C,0x00,0x97,0x06,0x00,0x00, +0x1E,0x00,0x2E,0x2F,0x08,0x00,0x00,0x61,0x18,0xFC,0x8F,0x58,0x9F,0x4A,0xDF,0x4C, +0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x47,0x42, +0x16,0x60,0x07,0x30,0xFC,0xC1,0x0A,0x00,0x40,0x20,0x7C,0x22,0x00,0x00,0x92,0x80, +0xB0,0x4A,0x04,0x98,0x08,0x67,0x47,0x52,0x7C,0xBE,0x4B,0x00,0xE4,0x6D,0x7C,0xBE, +0x4B,0x00,0x04,0x66,0xDD,0x70,0x44,0x60,0x07,0x30,0xFC,0xC1,0x0A,0x00,0xBC,0xD0, +0x00,0x00,0x92,0x80,0x40,0x20,0x79,0x21,0x00,0x00,0xCE,0x87,0x04,0x00,0x07,0x30, +0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x7C,0x31,0x01,0x00, +0x08,0x00,0x07,0x3C,0x46,0x5C,0xAE,0x3E,0x10,0x00,0x06,0x3F,0x2E,0x2F,0x0C,0x00, +0x2E,0x2F,0x08,0x00,0x10,0x61,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x9F,0x4A,0xDF,0x4C, +0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x1C,0x01,0x6E,0x2A, +0x08,0x00,0x6E,0x20,0x0C,0x00,0x68,0x26,0x24,0x00,0xBC,0x3E,0x04,0x00,0xB9,0x4E, +0xFC,0x00,0x74,0x7F,0x40,0x28,0x0C,0x20,0x06,0x66,0xD9,0x70,0x00,0x60,0xE8,0x00, +0x6E,0x39,0x12,0x00,0x30,0x00,0x4B,0x29,0x10,0x00,0x2E,0x30,0x10,0x00,0x40,0x5D, +0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x8C,0x20,0x6C,0x42, +0x2A,0x00,0x6C,0x42,0x24,0x00,0x6C,0x42,0x28,0x00,0x6E,0x29,0x0C,0x00,0x14,0x00, +0x6E,0x20,0x0C,0x00,0x68,0x29,0x14,0x00,0x18,0x00,0x6E,0x20,0x0C,0x00,0x68,0x20, +0x14,0x00,0x28,0x20,0x20,0x00,0xBC,0xD0,0xFF,0xFF,0xE0,0xFF,0x40,0x29,0x1C,0x00, +0x6E,0x20,0x0C,0x00,0x68,0x2D,0x34,0x00,0xFC,0xFF,0x16,0x60,0x6E,0x20,0xFC,0xFF, +0x28,0x20,0x1C,0x00,0xAC,0xB0,0x1C,0x00,0x0E,0x67,0x6E,0x20,0xFC,0xFF,0x50,0x2D, +0xFC,0xFF,0xAE,0x4A,0xFC,0xFF,0xE4,0x66,0x6E,0x20,0x0C,0x00,0xA8,0x28,0x34,0x00, +0x6E,0x20,0x0C,0x00,0x4C,0x21,0x34,0x00,0xAE,0x4A,0xFC,0xFF,0x1E,0x67,0x8C,0x2E, +0x97,0x5C,0x2E,0x2F,0xFC,0xFF,0x97,0x5C,0x3C,0x3F,0x0C,0x00,0x00,0x61,0xA6,0xE5, +0x8F,0x5C,0x6E,0x20,0xFC,0xFF,0x4C,0x21,0x2C,0x00,0x34,0x60,0x6D,0x39,0x1A,0x00, +0x0A,0x00,0x8C,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0xB9,0x4E,0xFC,0x00,0x6A,0x4F, +0x6D,0x29,0x1C,0x00,0x0C,0x00,0x8C,0x2E,0x97,0x06,0x00,0x00,0x0C,0x00,0xB9,0x4E, +0xFC,0x00,0x7C,0x4F,0x6D,0x39,0x18,0x00,0x08,0x00,0x6D,0x39,0x16,0x00,0x06,0x00, +0x2E,0x30,0x10,0x00,0xC0,0x48,0x9F,0x4A,0xDF,0x4C,0x00,0x38,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xF2,0xFF,0xE7,0x48,0x04,0x07,0x6E,0x20,0x08,0x00,0x68,0x2A,0x14,0x00, +0x6D,0x20,0x10,0x00,0x48,0x2D,0xF6,0xFF,0x68,0x3D,0x0E,0x00,0xFE,0xFF,0x01,0x7C, +0x36,0x60,0xBC,0x3E,0x01,0x00,0x6E,0x20,0x08,0x00,0x28,0x2F,0x24,0x00,0x06,0x3F, +0x2D,0x30,0x26,0x00,0x57,0xD1,0x00,0x61,0x6A,0xE9,0x8F,0x5C,0x40,0x2D,0xFA,0xFF, +0x47,0x42,0x0C,0x60,0x6E,0x20,0xFA,0xFF,0x10,0x42,0xAE,0x52,0xFA,0xFF,0x47,0x52, +0x6E,0xBE,0xFE,0xFF,0xEE,0x6D,0x46,0x52,0x6E,0x20,0xF6,0xFF,0x68,0xBC,0x0A,0x00, +0xC0,0x6D,0xBC,0x3E,0x01,0x00,0x6E,0x20,0x08,0x00,0x28,0x2F,0x24,0x00,0x2D,0x3F, +0x26,0x00,0x00,0x61,0x2E,0xE9,0x8F,0x5C,0x40,0x2D,0xFA,0xFF,0x40,0x2D,0xF2,0xFF, +0x47,0x42,0x0C,0x60,0x6E,0x20,0xFA,0xFF,0x10,0x42,0xAE,0x52,0xFA,0xFF,0x47,0x52, +0x6E,0xBE,0xFE,0xFF,0xEE,0x6D,0x2E,0x20,0xF2,0xFF,0x9F,0x4A,0xDF,0x4C,0xC0,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x2E,0x10,0x0D,0x00,0x80,0x48,0x80,0x3E, +0x57,0x02,0xEF,0x00,0x2E,0x2F,0x08,0x00,0x06,0x61,0x8F,0x58,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xDC,0xFF,0xE7,0x48,0x1C,0x01,0x7C,0x1D,0xE5,0x00,0xF6,0xFF,0x2E,0x42, +0xF7,0xFF,0x57,0x42,0x0E,0x2F,0x97,0x59,0x2E,0x2F,0x08,0x00,0x00,0x61,0x98,0xF7, +0x8F,0x50,0x40,0x2A,0x0D,0x20,0x06,0x66,0xDE,0x70,0x00,0x60,0xE2,0x01,0x57,0x42, +0x2E,0x2F,0xFC,0xFF,0x00,0x61,0x66,0x0C,0x8F,0x58,0x40,0x4A,0x06,0x67,0xDE,0x70, +0x00,0x60,0xCC,0x01,0x6D,0x26,0x14,0x00,0x0B,0x20,0x14,0x66,0x8D,0x2E,0x00,0x61, +0x36,0xEA,0x40,0x26,0x4B,0x2B,0x14,0x00,0x06,0x66,0xD9,0x70,0x00,0x60,0xB0,0x01, +0xAE,0x42,0xE0,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x3C,0x3F,0xFF,0xFF, +0x2E,0x2F,0xFC,0xFF,0x0D,0x2F,0x00,0x61,0x0E,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00, +0x40,0x28,0x0C,0x20,0x2A,0x67,0x2C,0x10,0x0B,0x00,0x80,0x48,0x7C,0xC0,0x11,0x00, +0x06,0x67,0xDC,0x70,0x00,0x60,0x78,0x01,0xAE,0x04,0x00,0x00,0x20,0x00,0xE0,0xFF, +0xAE,0x2E,0xE0,0xFF,0x0C,0x2F,0x0D,0x2F,0x00,0x61,0xC4,0x05,0x8F,0x50,0x04,0x60, +0xAE,0x42,0xE0,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x3C,0x3F,0xFF,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x0D,0x2F,0x00,0x61,0xBA,0xF3,0xFC,0xDF, +0x00,0x00,0x0A,0x00,0x40,0x28,0x0C,0x20,0x2E,0x66,0x6B,0x4A,0x24,0x00,0x06,0x6C, +0xDC,0x70,0x00,0x60,0x2A,0x01,0xBC,0x3E,0x01,0x00,0x0B,0x2F,0x00,0x61,0x4E,0xEE, +0x8F,0x58,0x40,0x4A,0x06,0x67,0xDC,0x70,0x00,0x60,0x14,0x01,0x8D,0x2E,0x00,0x61, +0x40,0xFE,0xAE,0x42,0xE0,0xFF,0xAC,0x60,0xAE,0x04,0x00,0x00,0x20,0x00,0xE0,0xFF, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEA,0xFF,0x2E,0x2F,0xFC,0xFF,0x00,0x61,0x54,0xEA, +0x8F,0x58,0x6E,0x19,0x0D,0x00,0x0B,0x00,0x6E,0x42,0xE8,0xFF,0x10,0x60,0x4C,0x20, +0x6E,0x32,0xE8,0xFF,0xC9,0xD1,0x28,0x42,0x0C,0x00,0x6E,0x52,0xE8,0xFF,0x6E,0x0C, +0x0A,0x00,0xE8,0xFF,0xE8,0x6D,0x79,0x39,0x00,0x00,0xB0,0x75,0x16,0x00,0x8C,0x2E, +0x97,0x06,0x00,0x00,0x16,0x00,0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0x79,0x39,0x00,0x00, +0x40,0x88,0x18,0x00,0x8C,0x2E,0x97,0x06,0x00,0x00,0x18,0x00,0xB9,0x4E,0xFC,0x00, +0x6A,0x4F,0x6C,0x42,0x1A,0x00,0xAC,0x42,0x1C,0x00,0xAE,0x2E,0xE0,0xFF,0x0B,0x2F, +0x00,0x61,0xF2,0x09,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEA,0xFF,0x3C,0x2F, +0x00,0x00,0x0B,0x00,0x0B,0x2F,0x00,0x61,0xCE,0xEB,0x8F,0x50,0xBC,0x3E,0x02,0x00, +0x0B,0x2F,0x00,0x61,0x94,0xE4,0x8F,0x58,0xAE,0x2E,0xE0,0xFF,0x0B,0x2F,0x00,0x61, +0xC4,0x09,0x8F,0x58,0x97,0x42,0x3C,0x2F,0x00,0x00,0x20,0x00,0x0B,0x2F,0x00,0x61, +0x26,0xEB,0x8F,0x50,0x40,0x2D,0xFC,0xFF,0x2C,0x08,0x00,0x00,0x0B,0x00,0x04,0x67, +0x57,0x42,0x04,0x60,0xBC,0x3E,0x02,0x00,0x0D,0x2F,0x2E,0x2F,0xFC,0xFF,0x00,0x61, +0xC6,0xFB,0x8F,0x50,0x40,0x2D,0xDC,0xFF,0x40,0x3D,0xE4,0xFF,0xAE,0x4A,0xDC,0xFF, +0x06,0x6C,0x2E,0x20,0xDC,0xFF,0x16,0x60,0xAE,0x3E,0xE4,0xFF,0x00,0x61,0x0C,0xDE, +0x40,0x20,0x68,0x00,0x01,0x00,0x04,0x00,0x2E,0x30,0xE4,0xFF,0xC0,0x48,0x9F,0x4A, +0xDF,0x4C,0x00,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xE4,0xFF,0xE7,0x48,0x04,0x01, +0xBC,0x3E,0x10,0x00,0x2E,0x2F,0x08,0x00,0x00,0x61,0xD6,0xFD,0x8F,0x58,0x40,0x2D, +0xF8,0xFF,0x40,0x3D,0xFE,0xFF,0x08,0x6C,0x2E,0x20,0xF8,0xFF,0x00,0x60,0xF4,0x01, +0xAE,0x3E,0xFE,0xFF,0x00,0x61,0xC4,0xDD,0x40,0x2D,0xF4,0xFF,0x6E,0x20,0xF4,0xFF, +0x68,0x2D,0x18,0x00,0xF0,0xFF,0x6E,0x20,0xF4,0xFF,0xA8,0x2E,0x1C,0x00,0x2E,0x2F, +0xF0,0xFF,0x00,0x61,0x10,0x09,0x8F,0x58,0x97,0x42,0x3C,0x2F,0x00,0x00,0x20,0x00, +0x2E,0x2F,0xF0,0xFF,0x00,0x61,0x70,0xEA,0x8F,0x50,0x40,0x2D,0xE8,0xFF,0xAE,0x2E, +0xE8,0xFF,0x6E,0x20,0xF4,0xFF,0x28,0x2F,0x14,0x00,0x00,0x61,0x60,0xF1,0x8F,0x58, +0x40,0x2D,0xE4,0xFF,0x06,0x66,0xD9,0x70,0x00,0x60,0x98,0x01,0xAE,0x2E,0xE4,0xFF, +0x00,0x61,0xE4,0xE7,0x40,0x2D,0xEC,0xFF,0x00,0x2F,0x6E,0x20,0xE4,0xFF,0x5F,0x21, +0x14,0x00,0x06,0x66,0xD9,0x70,0x00,0x60,0x7A,0x01,0xBC,0x3E,0x01,0x00,0x2E,0x2F, +0xEC,0xFF,0x00,0x61,0x78,0xEC,0x8F,0x58,0x40,0x4A,0x54,0x67,0xBC,0x3E,0x06,0x00, +0x2E,0x2F,0xF4,0xFF,0x00,0x61,0x62,0xE3,0x8F,0x58,0xAE,0x2E,0xF4,0xFF,0xB9,0x4E, +0xFC,0x00,0xF6,0x7F,0x2E,0x30,0xFE,0xFF,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0, +0x00,0x00,0x92,0x80,0x40,0x20,0x00,0x70,0xC0,0x48,0x80,0x20,0x2E,0x32,0xFE,0xFF, +0x41,0x5D,0xFC,0xC3,0x0A,0x00,0xBC,0xD2,0x00,0x00,0x92,0x80,0x41,0x22,0x40,0x23, +0x04,0x00,0xAE,0x2E,0x08,0x00,0x00,0x61,0x5C,0x04,0xDC,0x70,0x00,0x60,0x14,0x01, +0xAE,0x2E,0xE4,0xFF,0x00,0x61,0x1A,0xFC,0x40,0x2A,0x8D,0x2E,0x3C,0x2F,0xFD,0x00, +0x46,0x30,0x3C,0x3F,0x16,0x00,0x00,0x61,0x5C,0xE1,0x8F,0x5C,0x7C,0x1B,0x10,0x00, +0x0B,0x00,0x79,0x3B,0x00,0x00,0xB0,0x75,0x16,0x00,0x79,0x3B,0x00,0x00,0x40,0x88, +0x18,0x00,0x6E,0x20,0xEC,0xFF,0x68,0x3D,0x0A,0x00,0xFC,0xFF,0x8E,0x2E,0x97,0x59, +0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0x6E,0x3B,0xFC,0xFF,0x1A,0x00,0xAD,0x42,0x1C,0x00, +0xFC,0xDB,0x00,0x00,0x20,0x00,0x8D,0x2E,0x3C,0x2F,0xFD,0x00,0x5C,0x30,0x3C,0x3F, +0x16,0x00,0x00,0x61,0x10,0xE1,0x8F,0x5C,0x7C,0x1B,0x10,0x00,0x0B,0x00,0x79,0x3B, +0x00,0x00,0xB0,0x75,0x16,0x00,0x79,0x3B,0x00,0x00,0x40,0x88,0x18,0x00,0x6E,0x20, +0xF4,0xFF,0x68,0x20,0x18,0x00,0x68,0x3D,0x0A,0x00,0xFC,0xFF,0x6E,0x4A,0xFC,0xFF, +0x04,0x6C,0x6E,0x42,0xFC,0xFF,0x8E,0x2E,0x97,0x59,0xB9,0x4E,0xFC,0x00,0x6A,0x4F, +0x6E,0x3B,0xFC,0xFF,0x1A,0x00,0xAD,0x42,0x1C,0x00,0xAE,0x2E,0xF4,0xFF,0x2E,0x2F, +0xEC,0xFF,0x3C,0x3F,0x32,0x00,0x00,0x61,0xBC,0xE0,0x8F,0x5C,0x6E,0x20,0xF4,0xFF, +0x68,0x00,0x01,0x00,0x04,0x00,0xBC,0x3E,0x06,0x00,0x2E,0x2F,0xF4,0xFF,0x00,0x61, +0x48,0xE2,0x8F,0x58,0xAE,0x2E,0xF4,0xFF,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x2E,0x30, +0xFE,0xFF,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20, +0x7C,0x21,0x00,0x00,0x00,0x00,0x04,0x00,0x2E,0x30,0xFE,0xFF,0x40,0x5D,0xFC,0xC1, +0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0xBC,0x20,0x00,0x00,0x00,0x00, +0x80,0x42,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0xAE,0x3E,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x06,0x61,0x8F,0x58,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x0C,0x01,0x57,0x42,0x0E,0x2F,0x97,0x59,0x2E,0x2F, +0x08,0x00,0x00,0x61,0x52,0xF3,0x8F,0x50,0x40,0x28,0x0C,0x20,0x04,0x66,0xDF,0x70, +0x46,0x60,0xAE,0x42,0xF8,0xFF,0x8E,0x2E,0x97,0x51,0x3C,0x3F,0x27,0x00,0x2E,0x2F, +0xFC,0xFF,0x0C,0x2F,0x00,0x61,0x00,0xF0,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2A, +0x0D,0x20,0x04,0x66,0xDF,0x70,0x20,0x60,0x2D,0x08,0x00,0x00,0x0B,0x00,0x0A,0x67, +0x6E,0x4A,0x0C,0x00,0x04,0x67,0xDC,0x70,0x0E,0x60,0xAE,0x3E,0x0C,0x00,0x0C,0x2F, +0x0D,0x2F,0x00,0x61,0xF2,0xF8,0x8F,0x50,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x1C,0x01,0x57,0x42,0x0E,0x2F,0x97,0x59, +0x2E,0x2F,0x08,0x00,0x00,0x61,0xE0,0xF2,0x8F,0x50,0x40,0x28,0x0C,0x20,0x06,0x66, +0xDE,0x70,0x00,0x60,0x8A,0x00,0xAE,0x42,0xF8,0xFF,0x8E,0x2E,0x97,0x51,0x3C,0x3F, +0x27,0x00,0x2E,0x2F,0xFC,0xFF,0x0C,0x2F,0x00,0x61,0x8C,0xEF,0xFC,0xDF,0x00,0x00, +0x0A,0x00,0x40,0x26,0x0B,0x20,0x04,0x66,0xDF,0x70,0x62,0x60,0xAE,0x04,0x00,0x00, +0x15,0x00,0xF8,0xFF,0x6C,0x2A,0x14,0x00,0xAE,0x2E,0xF8,0xFF,0x0D,0x2F,0x00,0x61, +0x54,0x06,0x8F,0x58,0x6E,0x4A,0x0C,0x00,0x16,0x66,0x8E,0x2E,0x97,0x06,0x00,0x00, +0x0F,0x00,0x3C,0x2F,0x00,0x00,0x01,0x00,0x0D,0x2F,0x00,0x61,0xAA,0xE7,0x8F,0x50, +0x6E,0x4A,0x0C,0x00,0x22,0x67,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0F,0x00,0x3C,0x2F, +0x00,0x00,0x01,0x00,0x0D,0x2F,0x00,0x61,0x0E,0xE8,0x8F,0x50,0xBC,0x3E,0x02,0x00, +0x0D,0x2F,0x00,0x61,0xD4,0xE0,0x8F,0x58,0x2E,0x10,0x0F,0x00,0x80,0x48,0x9F,0x4A, +0xDF,0x4C,0x00,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0xAE,0x3E,0x0C,0x00,0x00,0x61,0x84,0xDA,0x40,0x2A,0x6D,0x28,0x18,0x00,0xAD,0x2E, +0x1C,0x00,0x97,0x06,0x00,0x00,0x16,0x00,0x0C,0x2F,0x00,0x61,0xD8,0x05,0x8F,0x58, +0x6E,0x4A,0x0E,0x00,0x12,0x66,0xAE,0x2E,0x08,0x00,0x3C,0x2F,0x00,0x00,0x04,0x00, +0x0C,0x2F,0x00,0x61,0x32,0xE7,0x8F,0x50,0xAE,0x2E,0x08,0x00,0xB9,0x4E,0xFC,0x00, +0x6A,0x4F,0xAE,0x2E,0x08,0x00,0x97,0x54,0xB9,0x4E,0xFC,0x00,0x6A,0x4F,0x6E,0x4A, +0x0E,0x00,0x1E,0x67,0xAE,0x2E,0x08,0x00,0x3C,0x2F,0x00,0x00,0x04,0x00,0x0C,0x2F, +0x00,0x61,0x84,0xE7,0x8F,0x50,0xBC,0x3E,0x02,0x00,0x0C,0x2F,0x00,0x61,0x4A,0xE0, +0x8F,0x58,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF8,0xFF, +0xE7,0x48,0x0C,0x01,0x57,0x42,0x0E,0x2F,0x97,0x59,0x2E,0x2F,0x08,0x00,0x00,0x61, +0xA6,0xF1,0x8F,0x50,0x40,0x2A,0x0D,0x20,0x04,0x66,0xDF,0x70,0x46,0x60,0xAE,0x42, +0xF8,0xFF,0x8E,0x2E,0x97,0x51,0x3C,0x3F,0x27,0x00,0x2E,0x2F,0xFC,0xFF,0x0D,0x2F, +0x00,0x61,0x54,0xEE,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x28,0x0C,0x20,0x04,0x66, +0xDF,0x70,0x20,0x60,0x2C,0x08,0x00,0x00,0x0B,0x00,0x04,0x67,0xDC,0x70,0x14,0x60, +0xAE,0x04,0x00,0x00,0x20,0x00,0xF8,0xFF,0xAE,0x2E,0xF8,0xFF,0x0C,0x2F,0x0D,0x2F, +0x0C,0x61,0x8F,0x50,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0xE7,0x48,0x0C,0x03,0x6E,0x20,0x08,0x00,0x68,0x28,0x34,0x00,0x60,0x60, +0x2C,0x20,0x1C,0x00,0xAE,0xB0,0x10,0x00,0x54,0x66,0x6E,0x42,0xFE,0xFF,0x46,0x60, +0x2E,0x30,0xFE,0xFF,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20, +0xD0,0xB9,0x2E,0x66,0x2E,0x30,0xFE,0xFF,0xFC,0xC1,0x0A,0x00,0x40,0x20,0x7C,0x22, +0x00,0x00,0x92,0x80,0x30,0x20,0x04,0x98,0xB9,0xB0,0x00,0x00,0xCE,0x87,0x0C,0x66, +0x57,0x42,0x0C,0x2F,0x00,0x61,0x72,0xDF,0x8F,0x58,0x06,0x60,0xDC,0x70,0x00,0x60, +0x9A,0x00,0x6E,0x52,0xFE,0xFF,0x6E,0x0C,0x4B,0x00,0xFE,0xFF,0xB2,0x6D,0x54,0x28, +0x0C,0x20,0x9C,0x66,0x6E,0x20,0x08,0x00,0x68,0x2A,0x24,0x00,0x6E,0x20,0x0C,0x00, +0x68,0x3D,0x1A,0x00,0xFE,0xFF,0x8E,0x2E,0x97,0x55,0xB9,0x4E,0xFC,0x00,0x6A,0x4F, +0x20,0x60,0x8D,0x2E,0x2E,0x3F,0xFE,0xFF,0x00,0x61,0x78,0xE7,0x8F,0x54,0x00,0x3E, +0x8D,0x2E,0x67,0x42,0x2E,0x3F,0xFE,0xFF,0x00,0x61,0x74,0xE6,0x8F,0x58,0x47,0x3D, +0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x08,0x67,0x6E,0x0C,0xFF,0xFF,0xFE,0xFF,0xD2,0x66, +0x6E,0x20,0x08,0x00,0x68,0x28,0x14,0x00,0xAE,0x2E,0x10,0x00,0x0C,0x2F,0x00,0x61, +0x34,0x04,0x8F,0x58,0x7C,0x1D,0xE5,0x00,0xFC,0xFF,0x8E,0x2E,0x97,0x59,0x3C,0x2F, +0x00,0x00,0x01,0x00,0x0C,0x2F,0x00,0x61,0x0E,0xE6,0x8F,0x50,0xBC,0x3E,0x02,0x00, +0x0C,0x2F,0x00,0x61,0xD4,0xDE,0x8F,0x58,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0x80,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xE4,0xFF,0xE7,0x48,0x0C,0x03,0xBC,0x3E,0x01,0x00, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE4,0xFF,0x2E,0x2F,0x08,0x00,0x00,0x61,0x28,0xF0, +0x8F,0x50,0x40,0x2A,0x0D,0x20,0x06,0x66,0xDE,0x70,0x00,0x60,0x0C,0x01,0x6D,0x2D, +0x14,0x00,0xF4,0xFF,0x12,0x66,0x8D,0x2E,0x00,0x61,0xDC,0xE2,0x40,0x2D,0xF4,0xFF, +0x06,0x66,0xD9,0x70,0x00,0x60,0xF2,0x00,0xBC,0x2E,0x00,0x00,0x40,0x00,0x2E,0x2F, +0xF4,0xFF,0x00,0x61,0xB0,0x03,0x8F,0x58,0x97,0x42,0x3C,0x2F,0x00,0x00,0x20,0x00, +0x2E,0x2F,0xF4,0xFF,0x00,0x61,0x10,0xE5,0x8F,0x50,0x40,0x28,0x0C,0x20,0x06,0x67, +0x14,0x0C,0xE5,0x00,0xE2,0x67,0x0C,0x20,0x0A,0x67,0x14,0x4A,0x06,0x67,0xDC,0x70, +0x00,0x60,0xB6,0x00,0x6D,0x20,0x18,0x00,0xFC,0xD1,0x00,0x00,0x1C,0x00,0x48,0x2D, +0xF8,0xFF,0x50,0x2D,0xFC,0xFF,0x12,0x60,0x6E,0x20,0xFC,0xFF,0xFC,0xD1,0x00,0x00, +0x20,0x00,0x48,0x2D,0xF8,0xFF,0x50,0x2D,0xFC,0xFF,0xEE,0xBB,0xFC,0xFF,0xE8,0x66, +0xEE,0xBB,0xFC,0xFF,0x06,0x67,0xBF,0x70,0x00,0x60,0x7E,0x00,0xAD,0x4A,0x34,0x00, +0x06,0x67,0xBF,0x70,0x00,0x60,0x72,0x00,0xAD,0x4A,0x1C,0x00,0x04,0x67,0xBF,0x70, +0x66,0x60,0x6E,0x20,0xF8,0xFF,0xAD,0x20,0x20,0x00,0xAD,0x4A,0x14,0x00,0x0A,0x67, +0xAD,0x2E,0x14,0x00,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x6D,0x2D,0x18,0x00,0xFC,0xFF, +0x8D,0x2E,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x6E,0x20,0xF4,0xFF,0x28,0x2E,0x1C,0x00, +0x87,0x2E,0x6E,0x20,0xF4,0xFF,0x28,0x20,0x18,0x00,0x40,0x2D,0xF0,0xFF,0x00,0x2F, +0x00,0x61,0xF2,0x02,0x8F,0x58,0x97,0x42,0x3C,0x2F,0x00,0x00,0x20,0x00,0x2E,0x2F, +0xF0,0xFF,0x00,0x61,0x52,0xE4,0x8F,0x50,0x40,0x28,0x87,0x2E,0x0C,0x2F,0x2E,0x2F, +0xFC,0xFF,0x00,0x61,0xCA,0xFD,0x8F,0x50,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x6E,0x28,0x08,0x00,0x6E,0x4A, +0x0C,0x00,0x08,0x67,0x2E,0x30,0x0C,0x00,0x40,0x53,0x0C,0x60,0x79,0x20,0x00,0x00, +0xCE,0x87,0x28,0x10,0x37,0x00,0x80,0x48,0x40,0x3D,0x0C,0x00,0xAE,0x3E,0x0C,0x00, +0x00,0x61,0x46,0xED,0x00,0x3E,0x04,0x6C,0xFF,0x70,0x44,0x60,0x47,0x30,0xC8,0xD1, +0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x80,0x83,0x50,0x2A,0x46,0x42,0x02,0x7E,0x12,0x60, +0x8D,0x2E,0x07,0x3F,0x00,0x61,0x7C,0xE5,0x8F,0x54,0x40,0x4A,0x02,0x66,0x46,0x52, +0x47,0x52,0x6D,0xBE,0x10,0x00,0xE8,0x6D,0x46,0x30,0xC8,0x28,0x6D,0x30,0x10,0x00, +0xC8,0x28,0x6D,0x30,0x0E,0x00,0xC8,0x28,0x6D,0x30,0x0A,0x00,0xC8,0x28,0x80,0x42, +0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xDC,0xFF,0xE7,0x48, +0x1C,0x07,0x97,0x42,0x67,0x42,0x2E,0x2F,0x0E,0x00,0x00,0x61,0x12,0xF2,0x8F,0x5C, +0x80,0x4A,0x06,0x66,0xDC,0x70,0x00,0x60,0xB6,0x01,0x57,0x42,0x0E,0x2F,0x97,0x59, +0x2E,0x2F,0x0A,0x00,0x00,0x61,0x50,0xEE,0x8F,0x50,0x40,0x2D,0xE0,0xFF,0x06,0x66, +0xDE,0x70,0x00,0x60,0x9A,0x01,0x57,0x42,0x0E,0x2F,0x97,0x51,0x2E,0x2F,0x0E,0x00, +0x00,0x61,0x34,0xEE,0x8F,0x50,0x40,0x2D,0xDC,0xFF,0x06,0x66,0xDE,0x70,0x00,0x60, +0x7E,0x01,0x6E,0x20,0xE0,0xFF,0x68,0x20,0x24,0x00,0x28,0x30,0x06,0x00,0x6E,0x22, +0xDC,0xFF,0x69,0x22,0x24,0x00,0x29,0x32,0x06,0x00,0x41,0xB0,0x06,0x67,0xD0,0x70, +0x00,0x60,0x5C,0x01,0xBC,0x3E,0x02,0x00,0x2E,0x2F,0x0A,0x00,0x00,0x61,0x7E,0xFA, +0x8F,0x58,0x00,0x2C,0x06,0x6C,0x06,0x20,0x00,0x60,0x44,0x01,0x06,0x20,0x80,0x3E, +0x00,0x61,0x38,0xD6,0x40,0x2A,0x6D,0x28,0x18,0x00,0x7C,0x1D,0xE5,0x00,0xEC,0xFF, +0xAD,0x2E,0x1C,0x00,0x0C,0x2F,0x00,0x61,0x8C,0x01,0x8F,0x58,0x2E,0x20,0xE0,0xFF, +0xAE,0xB0,0xDC,0xFF,0x00,0x67,0xD4,0x00,0x97,0x42,0x3C,0x2F,0x00,0x00,0x20,0x00, +0x0C,0x2F,0x00,0x61,0xE2,0xE2,0x8F,0x50,0x40,0x2D,0xE4,0xFF,0x6E,0x20,0xE4,0xFF, +0x28,0x10,0x0B,0x00,0x80,0x48,0x40,0x3D,0xE8,0xFF,0xAD,0x2E,0x1C,0x00,0x0C,0x2F, +0x00,0x61,0x52,0x01,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x3C,0x2F, +0x00,0x00,0x01,0x00,0x0C,0x2F,0x00,0x61,0x2E,0xE3,0x8F,0x50,0xAD,0x2E,0x1C,0x00, +0x97,0x06,0x00,0x00,0x16,0x00,0x0C,0x2F,0x00,0x61,0x2A,0x01,0x8F,0x58,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x3C,0x2F,0x00,0x00,0x0A,0x00,0x0C,0x2F,0x00,0x61, +0x86,0xE2,0x8F,0x50,0xAE,0x3E,0xE8,0xFF,0x2E,0x2F,0x0E,0x00,0x00,0x61,0x76,0xF5, +0x8F,0x58,0x40,0x3D,0xEA,0xFF,0xAE,0x3E,0xEA,0xFF,0x00,0x61,0x8E,0xD5,0x40,0x26, +0xAB,0x2E,0x1C,0x00,0x97,0x06,0x00,0x00,0x16,0x00,0x2B,0x2F,0x18,0x00,0x00,0x61, +0xE4,0x00,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x3C,0x2F,0x00,0x00, +0x0A,0x00,0x2B,0x2F,0x18,0x00,0x00,0x61,0xBE,0xE2,0x8F,0x50,0x6B,0x02,0xFE,0xFF, +0x04,0x00,0xAE,0x3E,0xEA,0xFF,0x00,0x61,0x58,0xDA,0xBC,0x3E,0x02,0x00,0x2B,0x2F, +0x18,0x00,0x00,0x61,0x74,0xDB,0x8F,0x58,0x28,0x60,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xEC,0xFF,0x2E,0x2F,0xF8,0xFF,0x00,0x61,0x9A,0xE0,0x8F,0x58,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xEC,0xFF,0x3C,0x2F,0x00,0x00,0x0B,0x00,0x0C,0x2F,0x00,0x61,0x78,0xE2, +0x8F,0x50,0x06,0x20,0x80,0x3E,0x00,0x61,0x18,0xDA,0x00,0x2E,0x04,0x6C,0x07,0x20, +0x0C,0x60,0xBC,0x3E,0x02,0x00,0x0C,0x2F,0x00,0x61,0x2E,0xDB,0x8F,0x58,0x9F,0x4A, +0xDF,0x4C,0xC0,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01, +0xAE,0x3E,0x0C,0x00,0x00,0x61,0xE4,0xD4,0x40,0x2A,0x0D,0x20,0x04,0x66,0xDB,0x70, +0x38,0x60,0x6E,0x0C,0x02,0x00,0x0E,0x00,0x0A,0x66,0x2D,0x20,0x0C,0x00,0xAE,0xD1, +0x08,0x00,0x1C,0x60,0x6E,0x0C,0x01,0x00,0x0E,0x00,0x0A,0x66,0x2D,0x20,0x20,0x00, +0xAE,0xD1,0x08,0x00,0x0A,0x60,0x6E,0x4A,0x0E,0x00,0x04,0x67,0xE0,0x70,0x0A,0x60, +0xAE,0x2E,0x08,0x00,0x0D,0x2F,0x0C,0x61,0x8F,0x58,0x9F,0x4A,0xDF,0x4C,0x00,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x0C,0x0F,0x6E,0x28,0x08,0x00, +0x2C,0x20,0x0C,0x00,0xAE,0xB0,0x0C,0x00,0x06,0x6C,0xC0,0x70,0x00,0x60,0xD6,0x00, +0xAE,0x4A,0x0C,0x00,0x06,0x6C,0xC0,0x70,0x00,0x60,0xCA,0x00,0x6C,0x2A,0x10,0x00, +0xAE,0x4A,0x0C,0x00,0x0A,0x66,0x46,0x42,0x6C,0x42,0x28,0x00,0x00,0x60,0x9A,0x00, +0x6C,0x4A,0x28,0x00,0x0E,0x67,0x2C,0x30,0x28,0x00,0x6D,0xB0,0x0C,0x00,0x04,0x67, +0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFA,0xFF,0xAD,0x3E,0x1A,0x00,0x2E,0x2F, +0x0C,0x00,0x0C,0x2F,0x97,0x06,0x00,0x00,0x28,0x00,0x00,0x61,0x92,0x00,0x8F,0x50, +0x00,0x3E,0x6C,0x4A,0x24,0x00,0x26,0x67,0x2C,0x20,0x20,0x00,0xAE,0xB0,0x0C,0x00, +0x1C,0x6E,0x2C,0x20,0x20,0x00,0x2D,0x32,0x1A,0x00,0xA0,0xE2,0x40,0x3D,0xFE,0xFF, +0x6E,0x9E,0xFE,0xFF,0x6E,0xDE,0xFA,0xFF,0x2C,0x3C,0x24,0x00,0x04,0x60,0x2C,0x3C, +0x0A,0x00,0x01,0x7A,0x18,0x60,0x8D,0x2E,0x06,0x3F,0x00,0x61,0x66,0xE2,0x8F,0x54, +0x00,0x3C,0x7C,0xBC,0xFF,0xFF,0x04,0x66,0xFF,0x70,0x38,0x60,0x45,0x52,0x47,0xBA, +0xE4,0x6D,0x6C,0x4A,0x28,0x00,0x10,0x67,0x47,0x4A,0x0C,0x67,0x8D,0x2E,0x06,0x3F, +0x00,0x61,0x40,0xE2,0x8F,0x54,0x00,0x3C,0x46,0x39,0x24,0x00,0x8D,0x2E,0x06,0x3F, +0x00,0x61,0xDE,0xD7,0x8F,0x54,0x40,0x39,0x26,0x00,0x6E,0x29,0x0C,0x00,0x20,0x00, +0x2E,0x20,0x0C,0x00,0x9F,0x4A,0xDF,0x4C,0xE0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0x6E,0x30,0x10,0x00,0xC8,0xD1,0x7C,0x22,0xFD,0x00,0x22,0x30,0x30,0x30, +0x00,0x98,0xC0,0x48,0xAE,0xC0,0x0C,0x00,0x6E,0x22,0x08,0x00,0x80,0x32,0x2E,0x20, +0x0C,0x00,0x2E,0x32,0x10,0x00,0xA0,0xE2,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00,0x15,0x4A,0x04,0x66,0x01,0x70,0x24,0x60, +0x47,0x42,0x14,0x60,0x1D,0x0C,0x2E,0x00,0x18,0x66,0x15,0x10,0x80,0x48,0x2E,0xB0, +0x0D,0x00,0x04,0x66,0x07,0x30,0x0C,0x60,0x47,0x53,0x07,0x30,0x7C,0xB0,0xFD,0xFF, +0xE2,0x6E,0x40,0x42,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0x24,0x60,0x6E,0x20,0x0A,0x00,0x10,0x10,0x80,0x48,0x6E,0x22,0x0E,0x00, +0x11,0x12,0x81,0x48,0x41,0xB0,0xC0,0x40,0xAE,0x52,0x0E,0x00,0xAE,0x52,0x0A,0x00, +0xC0,0x44,0x04,0x67,0x40,0x42,0x0E,0x60,0x2E,0x30,0x08,0x00,0x6E,0x53,0x08,0x00, +0x40,0x4A,0xD0,0x66,0x01,0x70,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x01,0x2E,0x30,0x08,0x00,0x79,0xB0,0x00,0x00,0x80,0x87,0x04,0x6F,0x80,0x42, +0x28,0x60,0x2E,0x30,0x08,0x00,0x79,0x91,0x00,0x00,0x80,0x87,0x39,0x30,0x00,0x00, +0xF0,0x68,0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x6E,0x2A,0x2E,0x30, +0x08,0x00,0x79,0xD1,0x00,0x00,0xF0,0x68,0x0D,0x20,0x9F,0x4A,0xDF,0x4C,0x00,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xEE,0xFF,0x2E,0x30,0x08,0x00,0x40,0xE7,0x40,0x3D, +0xFE,0xFF,0x6E,0x30,0x08,0x00,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x9C,0x7E, +0x48,0x2D,0xF2,0xFF,0x90,0x4A,0x14,0x67,0x6E,0x20,0xF2,0xFF,0x50,0x2D,0xFA,0xFF, +0x6E,0x20,0xF2,0xFF,0x6E,0x22,0xFA,0xFF,0x91,0x20,0x1C,0x60,0xAE,0x3E,0xFE,0xFF, +0x57,0x52,0x00,0x61,0x76,0xFF,0x40,0x2D,0xFA,0xFF,0x0C,0x67,0x6E,0x20,0xFA,0xFF, +0xAE,0x30,0x08,0x00,0xAE,0x54,0xFA,0xFF,0x6E,0x2D,0xFA,0xFF,0xF6,0xFF,0x1E,0x67, +0x6E,0x42,0x08,0x00,0x0E,0x60,0x6E,0x20,0xF6,0xFF,0x50,0x42,0xAE,0x54,0xF6,0xFF, +0x6E,0x52,0x08,0x00,0x2E,0x30,0x08,0x00,0x6E,0xB0,0xFE,0xFF,0xE8,0x6D,0x2E,0x20, +0xFA,0xFF,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x6E,0x20, +0x08,0x00,0x28,0x3E,0xFE,0xFF,0x6E,0x20,0x08,0x00,0x47,0x32,0xC9,0xD3,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0x9C,0x7E,0x91,0x20,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1, +0x00,0x00,0x9C,0x7E,0xAE,0x20,0x08,0x00,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0xAE,0x2E,0x08,0x00,0x39,0x2F, +0x00,0x00,0xCE,0x87,0x67,0x42,0x00,0x61,0x6C,0x09,0x8F,0x5C,0x7C,0x28,0x00,0x00, +0x92,0x7E,0x54,0x2A,0x18,0x60,0x2D,0x20,0x0C,0x00,0xB9,0xB0,0x00,0x00,0xCE,0x87, +0x08,0x66,0x95,0x28,0x8D,0x2E,0x8E,0x61,0x02,0x60,0x4D,0x28,0x54,0x2A,0x0D,0x20, +0xE4,0x66,0xAE,0x3E,0x0C,0x00,0x0A,0x61,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0xBC,0x2E,0xFF,0xFF,0xFF,0xFF, +0x3C,0x3F,0x02,0x01,0x3C,0x3F,0x05,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x58, +0x80,0x2E,0xB9,0x4E,0xFC,0x00,0x64,0x4F,0xB9,0x4E,0xFC,0x00,0xEC,0x50,0x79,0x2A, +0x00,0x00,0xCE,0x87,0xED,0x23,0x24,0x00,0x00,0x00,0xCE,0x87,0x8D,0x2E,0x2C,0x61, +0x79,0x20,0x00,0x00,0xCE,0x87,0x80,0x42,0x2E,0x30,0x08,0x00,0x40,0x21,0x68,0x00, +0xB9,0x4E,0xFC,0x00,0x42,0x50,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0x57,0x42,0x9A,0x61,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x07,0x6E,0x2A,0x08,0x00,0x46,0x42,0x14,0x60,0x35,0x10,0x30,0x60, +0x80,0x48,0x00,0x3E,0x08,0x6F,0x87,0x3E,0xB9,0x4E,0xFC,0x00,0x20,0x57,0x46,0x52, +0x7C,0xBC,0x06,0x00,0xE6,0x6D,0x46,0x42,0x20,0x60,0x06,0x30,0xFC,0xC1,0x0A,0x00, +0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0xE8,0xBB,0x04,0x00,0x0A,0x66,0x86,0x3E, +0x57,0x5C,0xB9,0x4E,0xFC,0x00,0x20,0x57,0x46,0x52,0x7C,0xBC,0x4B,0x00,0xDA,0x6D, +0x46,0x42,0x16,0x60,0x35,0x10,0x40,0x60,0x80,0x48,0x00,0x3E,0x0A,0x67,0x47,0x30, +0xFC,0xD1,0x00,0x00,0x66,0x80,0x10,0x53,0x46,0x52,0x7C,0xBC,0x10,0x00,0xE4,0x6D, +0x7C,0x26,0x00,0x00,0x92,0x7E,0x53,0x28,0x1C,0x60,0xEC,0xBB,0x0C,0x00,0x12,0x66, +0x94,0x26,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x0C,0x2F,0x00,0x61,0xBA,0x08,0x8F,0x58, +0x02,0x60,0x4C,0x26,0x53,0x28,0x0C,0x20,0xE0,0x66,0x9F,0x4A,0xDF,0x4C,0xC0,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x47,0x42,0x06,0x60, +0x47,0x52,0xAE,0x52,0x08,0x00,0x6E,0x20,0x08,0x00,0x10,0x4A,0x0A,0x67,0x6E,0x20, +0x08,0x00,0x10,0x0C,0x20,0x00,0xE8,0x66,0x6E,0x20,0x0C,0x00,0x6E,0x22,0x08,0x00, +0x91,0x10,0x6E,0x20,0x08,0x00,0x10,0x42,0x07,0x30,0x9F,0x4A,0xDF,0x4C,0x80,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xD0,0xFF,0x6E,0x4A,0x08,0x00,0x16,0x67,0x6E,0x0C, +0x03,0x00,0x08,0x00,0x08,0x6D,0x6E,0x0C,0x05,0x00,0x08,0x00,0x06,0x6F,0xE0,0x70, +0x00,0x60,0x3A,0x04,0x6E,0x4A,0x08,0x00,0x08,0x67,0x6E,0x0C,0x03,0x00,0x08,0x00, +0x1A,0x66,0x97,0x42,0x67,0x42,0x2E,0x2F,0x0A,0x00,0xB9,0x4E,0xFC,0x00,0x6E,0x6D, +0x8F,0x5C,0x40,0x4A,0x06,0x67,0xDF,0x70,0x00,0x60,0x12,0x04,0xBC,0x2E,0x00,0x00, +0x60,0x75,0x3C,0x2F,0x00,0x00,0xF4,0x7E,0x3C,0x3F,0x0C,0x00,0xB9,0x4E,0xFC,0x00, +0xA4,0x56,0x8F,0x5C,0xBC,0x2E,0x00,0x00,0xF4,0x7E,0xB9,0x4E,0xFC,0x00,0x92,0x4F, +0x40,0x2D,0xE8,0xFF,0x56,0x67,0xAE,0x0C,0xFF,0xFF,0xF2,0xFF,0xE8,0xFF,0x12,0x67, +0xAE,0x2E,0xE8,0xFF,0x3C,0x2F,0x00,0x00,0x60,0x75,0xB9,0x4E,0xFC,0x00,0xAE,0x4F, +0x8F,0x58,0x6E,0x0C,0x04,0x00,0x08,0x00,0x20,0x67,0xBC,0x2E,0x00,0x00,0x8E,0x7E, +0x2E,0x2F,0xE0,0xFF,0x00,0x61,0xC0,0x07,0x8F,0x58,0xBC,0x2E,0x00,0x00,0x8E,0x7E, +0x2E,0x2F,0xDC,0xFF,0x00,0x61,0xB0,0x07,0x8F,0x58,0xAE,0x2E,0xE8,0xFF,0x3C,0x2F, +0x00,0x00,0x60,0x75,0xB9,0x4E,0xFC,0x00,0xAE,0x4F,0x8F,0x58,0x6E,0x0C,0x04,0x00, +0x08,0x00,0x00,0x67,0x70,0x02,0xAE,0x4A,0x12,0x00,0x0C,0x66,0x79,0x20,0x00,0x00, +0xCE,0x87,0x68,0x2D,0x2C,0x00,0x12,0x00,0x6E,0x2D,0x12,0x00,0xF4,0xFF,0x6E,0x42, +0xF2,0xFF,0x6E,0x20,0xF4,0xFF,0x10,0x10,0x80,0x48,0xAE,0x52,0xF4,0xFF,0x00,0x4A, +0x14,0x66,0x6E,0x20,0xF4,0xFF,0x10,0x10,0x80,0x48,0xAE,0x52,0xF4,0xFF,0x00,0x4A, +0x0A,0x67,0x6E,0x52,0xF2,0xFF,0x6E,0x52,0xF2,0xFF,0xD6,0x60,0x6E,0x54,0xF2,0xFF, +0x2E,0x08,0x00,0x00,0xF3,0xFF,0x04,0x67,0x6E,0x52,0xF2,0xFF,0xBC,0x2E,0x00,0x00, +0x8E,0x7E,0x6E,0x30,0xF2,0xFF,0x08,0x2F,0x00,0x61,0xBA,0x05,0x8F,0x58,0x40,0x2D, +0xDC,0xFF,0x06,0x66,0xD9,0x70,0x00,0x60,0x14,0x03,0x6E,0x20,0xDC,0xFF,0x68,0x2D, +0x04,0x00,0xF4,0xFF,0x12,0x60,0x6E,0x20,0xF4,0xFF,0x6E,0x22,0x12,0x00,0x91,0x10, +0xAE,0x52,0x12,0x00,0xAE,0x52,0xF4,0xFF,0x2E,0x30,0xF2,0xFF,0x6E,0x53,0xF2,0xFF, +0x40,0x4A,0xE2,0x66,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x3C,0x2F,0xFF,0xFF,0xFF,0xFF, +0x00,0x61,0x72,0x05,0x8F,0x58,0x40,0x2D,0xE4,0xFF,0xBC,0xB0,0x00,0x00,0x00,0x01, +0x16,0x6C,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x2E,0x2F,0xDC,0xFF,0x00,0x61,0xC8,0x06, +0x8F,0x58,0xD9,0x70,0x00,0x60,0xB6,0x02,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x2E,0x2F, +0xE4,0xFF,0x00,0x61,0x40,0x05,0x8F,0x58,0x40,0x2D,0xE0,0xFF,0x6E,0x20,0xE0,0xFF, +0x68,0x2D,0x04,0x00,0xFC,0xFF,0x6E,0x4A,0x08,0x00,0x08,0x67,0x6E,0x0C,0x04,0x00, +0x08,0x00,0x06,0x66,0x2E,0x20,0xFC,0xFF,0x06,0x60,0x39,0x20,0x00,0x00,0xCE,0x87, +0x6E,0x22,0xDC,0xFF,0x40,0x23,0x0C,0x00,0x6E,0x22,0xE0,0xFF,0x40,0x23,0x0C,0x00, +0x6E,0x20,0xE0,0xFF,0x68,0x2D,0x08,0x00,0xE4,0xFF,0x6E,0x20,0xFC,0xFF,0xAE,0x20, +0xFC,0xFF,0x2E,0x20,0xFC,0xFF,0xAE,0xD0,0xE4,0xFF,0x6E,0x22,0xFC,0xFF,0x40,0x23, +0x04,0x00,0x6E,0x42,0xF2,0xFF,0x2E,0x20,0xFC,0xFF,0x80,0x50,0x40,0x2D,0xF8,0xFF, +0x0E,0x60,0x6E,0x20,0xF8,0xFF,0x10,0x42,0xAE,0x52,0xF8,0xFF,0x6E,0x52,0xF2,0xFF, +0x6E,0x0C,0x00,0x01,0xF2,0xFF,0xEA,0x6D,0x2E,0x20,0xFC,0xFF,0xBC,0xD0,0x00,0x00, +0x80,0x00,0x6E,0x22,0xFC,0xFF,0x40,0x23,0x20,0x00,0x6E,0x20,0xFC,0xFF,0x6E,0x22, +0xDC,0xFF,0x69,0x21,0x04,0x00,0x2C,0x00,0x6E,0x42,0xF2,0xFF,0x50,0x60,0x6E,0x30, +0xF2,0xFF,0x79,0x22,0x00,0x00,0xCE,0x87,0x30,0x10,0x30,0x98,0x80,0x48,0x40,0x3D, +0xF0,0xFF,0x24,0x6F,0xAE,0x2E,0xFC,0xFF,0x6E,0x30,0xF2,0xFF,0x79,0x22,0x00,0x00, +0xCE,0x87,0x30,0x10,0x30,0x98,0x80,0x48,0x00,0x3F,0x2E,0x3F,0xF2,0xFF,0xB9,0x4E, +0xFC,0x00,0x52,0x53,0x8F,0x58,0x12,0x60,0x2E,0x30,0xF0,0xFF,0x6E,0x22,0xFC,0xFF, +0x6E,0x34,0xF2,0xFF,0xCA,0xD3,0x40,0x13,0x30,0x00,0x6E,0x52,0xF2,0xFF,0x6E,0x0C, +0x06,0x00,0xF2,0xFF,0xA8,0x6D,0x6E,0x42,0xF2,0xFF,0x26,0x60,0xAE,0x2E,0xFC,0xFF, +0x6E,0x30,0xF2,0xFF,0x79,0x22,0x00,0x00,0xCE,0x87,0x30,0x10,0x40,0x98,0x80,0x48, +0x00,0x3F,0x2E,0x3F,0xF2,0xFF,0xB9,0x4E,0xFC,0x00,0x38,0x52,0x8F,0x58,0x6E,0x52, +0xF2,0xFF,0x6E,0x0C,0x10,0x00,0xF2,0xFF,0xD2,0x6D,0x6E,0x20,0xFC,0xFF,0x79,0x22, +0x00,0x00,0xCE,0x87,0x69,0x11,0x37,0x00,0x37,0x00,0x2E,0x20,0xFC,0xFF,0xBC,0xD0, +0x00,0x00,0x80,0x00,0x40,0x2D,0xF8,0xFF,0x6E,0x42,0xF2,0xFF,0x16,0x60,0x6E,0x20, +0xF8,0xFF,0x6E,0x22,0x0E,0x00,0x91,0x10,0xAE,0x52,0x0E,0x00,0xAE,0x52,0xF8,0xFF, +0x6E,0x52,0xF2,0xFF,0x6E,0x0C,0x7D,0x00,0xF2,0xFF,0x08,0x6C,0x6E,0x20,0x0E,0x00, +0x10,0x4A,0xDA,0x66,0x6E,0x20,0xF8,0xFF,0x10,0x42,0xAE,0x52,0xF8,0xFF,0x6E,0x2D, +0xFC,0xFF,0x0E,0x00,0x6E,0x4A,0x08,0x00,0x08,0x67,0x6E,0x0C,0x03,0x00,0x08,0x00, +0x26,0x66,0xAE,0x2E,0x0E,0x00,0x2E,0x2F,0x0A,0x00,0x00,0x61,0x18,0x01,0x8F,0x58, +0xC0,0x48,0x40,0x2D,0xE8,0xFF,0x10,0x67,0xAE,0x2E,0x0E,0x00,0x00,0x61,0xAE,0xFB, +0x2E,0x20,0xE8,0xFF,0x00,0x60,0xE6,0x00,0x6E,0x4A,0x08,0x00,0x0A,0x67,0x6E,0x0C, +0x04,0x00,0x08,0x00,0x00,0x66,0xD2,0x00,0x6E,0x2D,0x0E,0x00,0xFC,0xFF,0x6E,0x20, +0xFC,0xFF,0x79,0x21,0x00,0x00,0xCE,0x87,0x24,0x00,0x6E,0x20,0xFC,0xFF,0x68,0x2D, +0x04,0x00,0xD8,0xFF,0xAE,0x59,0xD8,0xFF,0x6E,0x20,0xD8,0xFF,0xAE,0x20,0xFC,0xFF, +0xAE,0x59,0xD8,0xFF,0x6E,0x20,0xD8,0xFF,0xBC,0x20,0x00,0x00,0x00,0x00,0x6E,0x42, +0xF2,0xFF,0x12,0x60,0xAE,0x59,0xD8,0xFF,0x6E,0x20,0xD8,0xFF,0xBC,0x20,0x00,0x00, +0x00,0x00,0x6E,0x52,0xF2,0xFF,0x6E,0x0C,0x0A,0x00,0xF2,0xFF,0xE6,0x6D,0xAE,0x59, +0xD8,0xFF,0x6E,0x20,0xD8,0xFF,0x6E,0x22,0xFC,0xFF,0xA9,0x20,0x08,0x00,0x6E,0x2D, +0xD8,0xFF,0xD4,0xFF,0xAE,0x55,0xD4,0xFF,0x6E,0x20,0xD4,0xFF,0x50,0x42,0x6E,0x2D, +0xD4,0xFF,0xD8,0xFF,0xAE,0x59,0xD8,0xFF,0x6E,0x20,0xD8,0xFF,0xBC,0x20,0x00,0x00, +0x5A,0x75,0x6E,0x20,0xFC,0xFF,0x2E,0x20,0xD8,0xFF,0x40,0x21,0x7C,0x00,0x6E,0x22, +0xFC,0xFF,0x40,0x23,0x78,0x00,0x6E,0x20,0xFC,0xFF,0x6E,0x22,0xFC,0xFF,0x69,0x21, +0x10,0x00,0x74,0x00,0x6E,0x20,0xFC,0xFF,0x6E,0x22,0xFC,0xFF,0x69,0x21,0x18,0x00, +0x70,0x00,0xEE,0x23,0xFC,0xFF,0x00,0x00,0xCE,0x87,0x6E,0x0C,0x05,0x00,0x08,0x00, +0x06,0x67,0xB9,0x4E,0xFC,0x00,0x42,0x50,0x2E,0x20,0x0E,0x00,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0xAE,0x59,0x08,0x00,0x6E,0x20,0x08,0x00,0xAE,0x20,0x0C,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xBE,0xFF,0xE7,0x48,0x04,0x0F,0xAE,0x2E,0x08,0x00, +0xB9,0x4E,0xFC,0x00,0x4C,0x76,0xC0,0x48,0x40,0x2D,0xE2,0xFF,0x40,0x3D,0xFA,0xFF, +0x08,0x6C,0x2E,0x20,0xE2,0xFF,0x00,0x60,0x52,0x02,0x8E,0x2E,0x97,0x51,0x3C,0x2F, +0x00,0x00,0x02,0x00,0x2E,0x3F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E,0x8F,0x5C, +0x6E,0x0C,0x1A,0x60,0xF8,0xFF,0x06,0x67,0xBE,0x70,0x00,0x60,0x2E,0x02,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xBE,0xFF,0x3C,0x2F,0x00,0x00,0x10,0x00,0x2E,0x3F,0xFA,0xFF, +0xB9,0x4E,0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE2,0xFF, +0x3C,0x2F,0x00,0x00,0x04,0x00,0x2E,0x3F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E, +0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE2,0xFF,0x3C,0x2F,0x00,0x00,0x04,0x00, +0x2E,0x3F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xF6,0xFF,0x3C,0x2F,0x00,0x00,0x02,0x00,0x2E,0x3F,0xFA,0xFF,0xB9,0x4E, +0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0x2E,0x20,0xC2,0xFF,0xAE,0xD0,0xBE,0xFF,0x40,0x2D, +0xE6,0xFF,0x2E,0x20,0x0C,0x00,0x80,0x50,0x40,0x2D,0xF2,0xFF,0x6E,0x20,0x0C,0x00, +0x28,0x20,0x04,0x00,0x6E,0x22,0x0C,0x00,0x11,0x22,0x81,0x90,0xBC,0xD0,0xFF,0xFF, +0x00,0xFF,0x40,0x2D,0xCE,0xFF,0xAE,0x06,0x00,0x00,0x00,0x01,0x0C,0x00,0x2E,0x20, +0x0C,0x00,0x40,0x2D,0xEA,0xFF,0x40,0x2D,0xEE,0xFF,0x6E,0x2D,0xEE,0xFF,0xDE,0xFF, +0x2E,0x20,0xEE,0xFF,0xAE,0xD0,0xE6,0xFF,0x40,0x2D,0xFC,0xFF,0x2E,0x20,0xCE,0xFF, +0xAE,0x90,0xE6,0xFF,0x40,0x2D,0xD2,0xFF,0x2E,0x20,0xC6,0xFF,0xAE,0xB0,0xD2,0xFF, +0x06,0x6F,0xD9,0x70,0x00,0x60,0x54,0x01,0x85,0x42,0x36,0x60,0x6E,0x20,0xF2,0xFF, +0xAE,0x20,0xEA,0xFF,0xAE,0x58,0xF2,0xFF,0x6E,0x20,0xF2,0xFF,0x4E,0x22,0x45,0x24, +0xCA,0xD5,0xCA,0xD5,0xCA,0xD3,0xA9,0x20,0xBE,0xFF,0xAE,0x58,0xF2,0xFF,0x4E,0x20, +0x45,0x22,0xC9,0xD3,0xC9,0xD3,0xC9,0xD1,0x28,0x20,0xBE,0xFF,0xAE,0xD1,0xEA,0xFF, +0x85,0x52,0xBC,0xBA,0x00,0x00,0x03,0x00,0xC2,0x6D,0xAE,0x2E,0xEE,0xFF,0x2E,0x2F, +0xE6,0xFF,0x2E,0x3F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0x6E,0x4A, +0xF6,0xFF,0x06,0x67,0x00,0x70,0x00,0x60,0xF2,0x00,0x57,0x42,0x2E,0x3F,0xFA,0xFF, +0x2E,0x20,0xCA,0xFF,0xAE,0xD0,0xE6,0xFF,0x00,0x2F,0x97,0x06,0x00,0x00,0x1C,0x00, +0xB9,0x4E,0xFC,0x00,0x28,0x7D,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDA,0xFF, +0x3C,0x2F,0x00,0x00,0x04,0x00,0x2E,0x3F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E, +0x8F,0x5C,0xAE,0x4A,0xDA,0xFF,0x00,0x67,0x90,0x00,0x2E,0x2C,0xDE,0xFF,0xAE,0xDC, +0xDA,0xFF,0xAE,0xBC,0xDE,0xFF,0x06,0x6D,0xAE,0xBC,0xFC,0xFF,0x06,0x65,0xBE,0x70, +0x00,0x60,0x98,0x00,0x2E,0x20,0xDE,0xFF,0x46,0x22,0x91,0xD1,0xAE,0xBC,0xDE,0xFF, +0x06,0x6D,0xAE,0xBC,0xFC,0xFF,0x06,0x65,0xBE,0x70,0x00,0x60,0x7E,0x00,0xAE,0x2E, +0xFC,0xFF,0x2E,0x2F,0xD2,0xFF,0x2E,0x3F,0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E, +0x8F,0x5C,0xC0,0x48,0x40,0x2D,0xD6,0xFF,0x2E,0x2A,0xD6,0xFF,0x6E,0x2A,0xFC,0xFF, +0x28,0x60,0x1D,0x1E,0x87,0x48,0x30,0x67,0x7C,0xCE,0xFF,0x00,0x7C,0xBE,0x01,0x00, +0x08,0x66,0xBC,0xDC,0x00,0x00,0xFE,0x00,0x0E,0x60,0x07,0x30,0xC0,0x48,0x80,0xDC, +0x2E,0x20,0xDE,0xFF,0x46,0x22,0x91,0xD1,0x85,0x53,0x85,0x4A,0xD4,0x66,0x2E,0x20, +0xD6,0xFF,0xAE,0xB0,0xD2,0xFF,0x94,0x67,0x2E,0x20,0xFC,0xFF,0xAE,0xD0,0xD2,0xFF, +0x80,0x2E,0x2E,0x2F,0xFC,0xFF,0xB9,0x4E,0xFC,0x00,0xD6,0x4B,0x8F,0x58,0xAE,0x3E, +0xFA,0xFF,0xB9,0x4E,0xFC,0x00,0x20,0x57,0x00,0x70,0x9F,0x4A,0xDF,0x4C,0xE0,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x1C,0x07,0x6E,0x20,0x0C,0x00, +0x68,0x28,0x08,0x00,0x86,0x42,0x0C,0x20,0x06,0x66,0x80,0x42,0x00,0x60,0xCC,0x00, +0xAE,0x0C,0xFF,0xFF,0xFF,0xFF,0x08,0x00,0x04,0x66,0x01,0x7E,0x02,0x60,0x47,0x42, +0x54,0x2A,0x0D,0x20,0x06,0x66,0x6E,0x28,0x0C,0x00,0x54,0x2A,0x47,0x4A,0x00,0x66, +0x84,0x00,0x2D,0x20,0x08,0x00,0xAE,0xB0,0x08,0x00,0x00,0x6D,0x78,0x00,0x2D,0x20, +0x08,0x00,0xAE,0xB0,0x08,0x00,0x04,0x66,0x95,0x28,0x36,0x60,0xBC,0x3E,0x01,0x00, +0x00,0x61,0x52,0xF6,0x40,0x26,0x0B,0x20,0x06,0x66,0x80,0x42,0x00,0x60,0x7C,0x00, +0x2D,0x20,0x08,0x00,0xAE,0x90,0x08,0x00,0x40,0x27,0x08,0x00,0x2D,0x20,0x04,0x00, +0xAE,0xD0,0x08,0x00,0x40,0x27,0x04,0x00,0x95,0x26,0x6E,0x2B,0x08,0x00,0x08,0x00, +0x8B,0x28,0x6E,0x20,0x0C,0x00,0xA8,0x2A,0x04,0x00,0x6E,0x20,0x0C,0x00,0x4D,0x21, +0x04,0x00,0x79,0x2B,0x00,0x00,0xCE,0x87,0x0C,0x00,0xEE,0xB9,0x0C,0x00,0x04,0x66, +0x14,0x20,0x02,0x60,0x0C,0x20,0x6E,0x22,0x0C,0x00,0x40,0x23,0x08,0x00,0x0D,0x20, +0x28,0x60,0x0A,0x60,0xAD,0xBC,0x08,0x00,0x04,0x6C,0x2D,0x2C,0x08,0x00,0x4D,0x28, +0x54,0x2A,0x6E,0x20,0x0C,0x00,0xE8,0xB9,0x08,0x00,0x00,0x66,0x56,0xFF,0x47,0x4A, +0x06,0x67,0x06,0x20,0x04,0x60,0x02,0x60,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xC0,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x79,0x28,0x00,0x00, +0x92,0x7E,0x0C,0x60,0x2C,0x20,0x04,0x00,0xAE,0xB0,0x0A,0x00,0x06,0x67,0x54,0x28, +0x0C,0x20,0xF0,0x66,0x0C,0x20,0x04,0x66,0xD8,0x70,0x50,0x60,0x2C,0x20,0x08,0x00, +0xAE,0xB0,0x0E,0x00,0x04,0x6C,0xBD,0x70,0x42,0x60,0x2E,0x08,0x00,0x00,0x11,0x00, +0x04,0x67,0xAE,0x52,0x0E,0x00,0xBC,0x3E,0x01,0x00,0x00,0x61,0x78,0xF5,0x40,0x2A, +0x2C,0x20,0x04,0x00,0xAE,0xD0,0x0E,0x00,0x40,0x2B,0x04,0x00,0x2C,0x20,0x08,0x00, +0xAE,0x90,0x0E,0x00,0x40,0x2B,0x08,0x00,0x6E,0x29,0x0E,0x00,0x08,0x00,0xBC,0x2E, +0x00,0x00,0x8E,0x7E,0x0D,0x2F,0x0E,0x61,0x8F,0x58,0x80,0x42,0x9F,0x4A,0xDF,0x4C, +0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x26, +0x0C,0x00,0xCC,0x99,0x53,0x2A,0x12,0x60,0x6E,0x20,0x08,0x00,0x28,0x20,0x04,0x00, +0xAD,0xB0,0x04,0x00,0x08,0x6F,0x4D,0x28,0x54,0x2A,0x0D,0x20,0xEA,0x66,0x6E,0x20, +0x08,0x00,0x8D,0x20,0x0C,0x20,0x06,0x67,0xAE,0x28,0x08,0x00,0x04,0x60,0xAE,0x26, +0x08,0x00,0xAB,0x4A,0x08,0x00,0x06,0x66,0x6E,0x27,0x08,0x00,0x08,0x00,0x0D,0x20, +0x3C,0x67,0x6E,0x20,0x08,0x00,0x28,0x20,0x04,0x00,0x6E,0x22,0x08,0x00,0x29,0x22, +0x08,0x00,0x81,0xD0,0xAD,0xB0,0x04,0x00,0x24,0x66,0x2D,0x20,0x08,0x00,0x6E,0x22, +0x08,0x00,0xA9,0xD1,0x08,0x00,0x6E,0x20,0x08,0x00,0x95,0x20,0xEB,0xBB,0x08,0x00, +0x06,0x66,0x6E,0x27,0x08,0x00,0x08,0x00,0x8D,0x2E,0x00,0x61,0x3A,0xF5,0x0C,0x20, +0x3C,0x67,0x2C,0x20,0x04,0x00,0xAC,0xD0,0x08,0x00,0x6E,0x22,0x08,0x00,0x29,0x22, +0x04,0x00,0x81,0xB0,0x28,0x66,0x6E,0x20,0x08,0x00,0x28,0x20,0x08,0x00,0xAC,0xD1, +0x08,0x00,0x6E,0x20,0x08,0x00,0x90,0x28,0x2B,0x20,0x08,0x00,0xAE,0xB0,0x08,0x00, +0x04,0x66,0x4C,0x27,0x08,0x00,0xAE,0x2E,0x08,0x00,0x00,0x61,0xFA,0xF4,0x9F,0x4A, +0xDF,0x4C,0x00,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03, +0x2E,0x2E,0x08,0x00,0xBC,0xBE,0xFF,0xFF,0xFF,0xFF,0x08,0x67,0x07,0x08,0x00,0x00, +0x02,0x67,0x87,0x52,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x07,0x2F,0x00,0x61,0x96,0xFD, +0x8F,0x58,0x40,0x2A,0x0D,0x20,0x04,0x66,0x80,0x42,0x10,0x60,0xBC,0xBE,0xFF,0xFF, +0xFF,0xFF,0x04,0x66,0x0D,0x20,0x04,0x60,0x2D,0x20,0x04,0x00,0x9F,0x4A,0xDF,0x4C, +0x80,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x7C,0x28, +0x00,0x00,0x92,0x7E,0x54,0x2A,0x0E,0x60,0x2D,0x20,0x04,0x00,0xAE,0xB0,0x08,0x00, +0x08,0x67,0x4D,0x28,0x54,0x2A,0x0D,0x20,0xEE,0x66,0x0D,0x20,0x04,0x66,0xD8,0x70, +0x12,0x60,0x95,0x28,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x0D,0x2F,0x00,0x61,0xA8,0xFE, +0x8F,0x58,0x80,0x42,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0x6E,0x30,0x08,0x00,0x7C,0x22,0x00,0x00,0x6C,0x75,0x30,0x4A,0x00,0x98, +0x04,0x67,0xFF,0x70,0x10,0x60,0xAE,0x3E,0x08,0x00,0x3C,0x3F,0x01,0x00,0xB9,0x4E, +0xFC,0x00,0x06,0x4F,0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20, +0x00,0x00,0xCE,0x87,0x28,0x10,0x30,0x00,0x80,0x48,0x80,0x3E,0x57,0x56,0xBE,0x61, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10, +0x31,0x00,0x80,0x48,0x80,0x3E,0x57,0x56,0x3C,0x3F,0x08,0x00,0xB9,0x4E,0xFC,0x00, +0x06,0x4F,0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00, +0xCE,0x87,0x28,0x10,0x33,0x00,0x80,0x48,0x80,0x3E,0x57,0x56,0x3C,0x3F,0x08,0x00, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x32,0x00,0x80,0x48,0x80,0x3E,0x57,0x56, +0x00,0x61,0x5C,0xFF,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00, +0xCE,0x87,0x28,0x10,0x32,0x00,0x80,0x48,0x80,0x3E,0x57,0x56,0x3C,0x3F,0x08,0x00, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x0F,0x46,0x42,0xAE,0x3E,0x08,0x00,0x3C,0x3F,0x01,0x00,0xB9,0x4E, +0xFC,0x00,0x06,0x4F,0x8F,0x54,0x80,0x4A,0x00,0x67,0x14,0x01,0xAE,0x3E,0x08,0x00, +0x3C,0x3F,0x02,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x54,0x00,0x2E,0x07,0x20, +0xBC,0xC0,0x00,0x00,0xFF,0x00,0x00,0x3A,0x7C,0xBA,0x03,0x00,0x16,0x66,0xAE,0x3E, +0x08,0x00,0x00,0x61,0xF4,0x00,0xBC,0x3E,0xE0,0xFF,0xB9,0x4E,0xFC,0x00,0x82,0x80, +0x00,0x60,0xDC,0x00,0x7C,0xBA,0x13,0x00,0x06,0x66,0x01,0x7C,0x00,0x60,0xCA,0x00, +0x7C,0xBA,0x11,0x00,0x06,0x66,0x46,0x42,0x00,0x60,0xBE,0x00,0x7C,0xBA,0x18,0x00, +0x4C,0x66,0xAE,0x3E,0x08,0x00,0x00,0x61,0xC0,0x00,0x6E,0x30,0x08,0x00,0xC8,0xD1, +0xC8,0xD1,0x7C,0x22,0x00,0x00,0x96,0x88,0x70,0x20,0x00,0x98,0x87,0x20,0x6E,0x32, +0x08,0x00,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x96,0x88,0x91,0x58,0x6E,0x30, +0x08,0x00,0x7C,0x22,0x00,0x00,0x6C,0x75,0x30,0x10,0x00,0x98,0x80,0x48,0x7C,0x22, +0x00,0x00,0x6C,0x75,0x6E,0x34,0x08,0x00,0xCA,0xD3,0x11,0x52,0x6A,0x60,0x7C,0x20, +0x00,0x00,0x6C,0x75,0x6E,0x32,0x08,0x00,0xC9,0xD1,0x10,0x0C,0x50,0x00,0x44,0x6C, +0x6E,0x30,0x08,0x00,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x96,0x88,0x70,0x20, +0x00,0x98,0x87,0x20,0x6E,0x32,0x08,0x00,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3,0x00,0x00, +0x96,0x88,0x91,0x58,0x6E,0x30,0x08,0x00,0x7C,0x22,0x00,0x00,0x6C,0x75,0x30,0x10, +0x00,0x98,0x80,0x48,0x7C,0x22,0x00,0x00,0x6C,0x75,0x6E,0x34,0x08,0x00,0xCA,0xD3, +0x11,0x52,0x14,0x60,0xBC,0x3E,0x07,0x00,0x2E,0x3F,0x08,0x00,0x3C,0x3F,0x03,0x00, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x58,0x46,0x4A,0x00,0x66,0xF0,0xFE,0x9F,0x4A, +0xDF,0x4C,0xE0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03, +0x2E,0x3E,0x08,0x00,0x47,0x30,0xFC,0xD1,0x00,0x00,0x6C,0x75,0x10,0x42,0x07,0x30, +0xFC,0xC1,0x40,0x01,0xBC,0xD0,0x00,0x00,0xC0,0x83,0x47,0x32,0xC9,0xD3,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0x96,0x88,0x80,0x22,0x47,0x32,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3, +0x00,0x00,0x30,0x88,0x80,0x22,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00, +0x87,0x3E,0x00,0x61,0x68,0xFE,0x86,0x3E,0x07,0x3F,0x3C,0x3F,0x03,0x00,0xB9,0x4E, +0xFC,0x00,0x06,0x4F,0x8F,0x58,0x7C,0xBC,0x20,0x00,0x1C,0x6D,0x47,0x30,0xC8,0xD1, +0x7C,0x22,0x00,0x00,0xF4,0x68,0x30,0x30,0x00,0x98,0x47,0x32,0xC9,0xD3,0xFC,0xD3, +0x00,0x00,0xF4,0x68,0x51,0x52,0x34,0x60,0x7C,0xBC,0x0D,0x00,0x0E,0x66,0x47,0x30, +0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xF4,0x68,0x50,0x42,0x20,0x60,0x7C,0xBC,0x08,0x00, +0x1A,0x66,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0xF4,0x68,0x30,0x30,0x00,0x98, +0x47,0x32,0xC9,0xD3,0xFC,0xD3,0x00,0x00,0xF4,0x68,0x51,0x53,0x9F,0x4A,0xDF,0x4C, +0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xAE,0x3E,0x08,0x00,0x79,0x20, +0x00,0x00,0xCE,0x87,0x28,0x10,0x31,0x00,0x80,0x48,0x00,0x3F,0x57,0x56,0x06,0x61, +0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3E, +0x08,0x00,0x2E,0x3C,0x0A,0x00,0x7C,0xBC,0x09,0x00,0x22,0x66,0xBC,0x3E,0x20,0x00, +0x07,0x3F,0x00,0x61,0x3C,0xFF,0x8F,0x54,0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00, +0xF4,0x68,0x30,0x30,0x00,0x98,0x7C,0xC0,0x07,0x00,0xE0,0x66,0x0A,0x60,0x86,0x3E, +0x07,0x3F,0x00,0x61,0x1C,0xFF,0x8F,0x54,0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3E,0x08,0x00,0x2E,0x3C, +0x0A,0x00,0x7C,0xBC,0x09,0x00,0x0A,0x66,0x86,0x3E,0x07,0x3F,0x98,0x61,0x8F,0x54, +0x20,0x60,0x7C,0xBC,0x20,0x00,0x10,0x6C,0xBC,0x3E,0x5E,0x00,0x07,0x3F,0x00,0x61, +0xE0,0xFE,0x8F,0x54,0x7C,0x8C,0x40,0x00,0x86,0x3E,0x07,0x3F,0x00,0x61,0xD2,0xFE, +0x8F,0x54,0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0xAE,0x3E,0x08,0x00,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x32,0x00,0x80,0x48, +0x00,0x3F,0x57,0x56,0x3C,0x3F,0x03,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x58, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xAE,0x3E,0x08,0x00,0x79,0x20,0x00,0x00, +0xCE,0x87,0x28,0x10,0x33,0x00,0x80,0x48,0x00,0x3F,0x57,0x56,0x3C,0x3F,0x03,0x00, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x58,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x07,0x2E,0x3E,0x08,0x00,0x7C,0x20,0x00,0x00,0x6C,0x75,0x30,0x4A, +0x00,0x70,0x58,0x67,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x30,0x88, +0x70,0x20,0x00,0x98,0x10,0x2C,0x47,0x32,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3,0x00,0x00, +0x30,0x88,0x91,0x58,0x47,0x30,0xFC,0xD1,0x00,0x00,0x6C,0x75,0x10,0x53,0x28,0x66, +0x07,0x30,0xFC,0xC1,0x40,0x01,0xBC,0xD0,0x00,0x00,0xC0,0x83,0x47,0x32,0xC9,0xD3, +0xC9,0xD3,0xFC,0xD3,0x00,0x00,0x96,0x88,0x80,0x22,0x47,0x32,0xC9,0xD3,0xC9,0xD3, +0xFC,0xD3,0x00,0x00,0x30,0x88,0x80,0x22,0x06,0x20,0x0E,0x60,0x87,0x3E,0x3C,0x3F, +0x02,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x54,0x9F,0x4A,0xDF,0x4C,0xC0,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10, +0x30,0x00,0x80,0x48,0x80,0x3E,0x57,0x56,0x00,0x61,0x62,0xFF,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3E,0x08,0x00,0x87,0x3E,0x00,0x61, +0x4C,0xFF,0x00,0x2C,0x06,0x20,0x80,0x3E,0x07,0x3F,0x00,0x61,0xB4,0xFD,0x8F,0x54, +0x06,0x20,0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x30,0x00,0x80,0x48,0x80,0x3E,0x57,0x56, +0xBE,0x61,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x79,0x20, +0x00,0x00,0xCE,0x87,0x28,0x10,0x30,0x00,0x80,0x48,0x00,0x3E,0x47,0x56,0x87,0x3E, +0x00,0x61,0xFA,0xFE,0x00,0x2C,0x87,0x3E,0x00,0x61,0xE2,0xFB,0x06,0x20,0x9F,0x4A, +0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00, +0xCE,0x87,0x28,0x10,0x32,0x00,0x80,0x48,0x80,0x3E,0x57,0x56,0x3C,0x3F,0x02,0x00, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x07,0x2E,0x3E,0x08,0x00,0x7C,0xBE,0xFF,0x00,0x26,0x66,0x79,0x20, +0x00,0x00,0xCE,0x87,0x28,0x10,0x30,0x00,0x80,0x48,0x00,0x3C,0x46,0x56,0x86,0x3E, +0x00,0x61,0xBC,0xFA,0x80,0x4A,0x08,0x67,0x86,0x3E,0x00,0x61,0x90,0xFE,0x02,0x60, +0x80,0x42,0x1E,0x60,0x87,0x3E,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x31,0x00, +0x80,0x48,0x00,0x3F,0x57,0x56,0x3C,0x3F,0x03,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F, +0x8F,0x58,0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0xAE,0x2E,0x08,0x00,0x79,0x20,0x00,0x00,0xCE,0x87,0x28,0x10,0x31,0x00,0x80,0x48, +0x00,0x3F,0x57,0x56,0x06,0x61,0x8F,0x54,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x18,0x60,0x6E,0x20,0x0A,0x00,0x10,0x10,0x80,0x48,0x80,0x3E,0x2E,0x3F,0x08,0x00, +0x00,0x61,0x44,0xFD,0x8F,0x54,0xAE,0x52,0x0A,0x00,0x6E,0x20,0x0A,0x00,0x10,0x4A, +0xE0,0x66,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3C, +0x08,0x00,0x2E,0x3E,0x0A,0x00,0xBC,0x3E,0x0D,0x00,0x06,0x3F,0x00,0x61,0x72,0xFC, +0x8F,0x54,0xBC,0x3E,0x0A,0x00,0x06,0x3F,0x00,0x61,0x66,0xFC,0x8F,0x54,0x0E,0x60, +0xBC,0x3E,0x20,0x00,0x06,0x3F,0x00,0x61,0x58,0xFC,0x8F,0x54,0x47,0x53,0x47,0x4A, +0xEE,0x66,0x9F,0x4A,0xDF,0x4C,0xC0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x07,0x6E,0x4A,0x0E,0x00,0x04,0x67,0x6E,0x53,0x0E,0x00,0x2E,0x3C, +0x0E,0x00,0x6E,0x2A,0x0A,0x00,0x24,0x60,0x1D,0x1E,0x3C,0xBE,0x09,0x00,0x0C,0x66, +0x6E,0x50,0x10,0x00,0x6E,0x02,0xF8,0xFF,0x10,0x00,0x10,0x60,0x3C,0xBE,0x20,0x00, +0x06,0x6C,0x6E,0x54,0x10,0x00,0x04,0x60,0x6E,0x52,0x10,0x00,0x06,0x30,0x46,0x53, +0x40,0x4A,0xD4,0x66,0x2A,0x60,0xBC,0x3E,0x08,0x00,0x2E,0x3F,0x08,0x00,0x00,0x61, +0xF0,0xFB,0x8F,0x54,0xBC,0x3E,0x20,0x00,0x2E,0x3F,0x08,0x00,0x00,0x61,0xE2,0xFB, +0x8F,0x54,0xBC,0x3E,0x08,0x00,0x2E,0x3F,0x08,0x00,0x00,0x61,0xD4,0xFB,0x8F,0x54, +0x6E,0x30,0x08,0x00,0xC8,0xD1,0x7C,0x22,0x00,0x00,0xF4,0x68,0x30,0x30,0x00,0x98, +0x6E,0xB0,0x10,0x00,0xC0,0x6E,0x2E,0x30,0x0E,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00, +0x8D,0x2E,0x97,0x54,0x15,0x10,0x80,0x48,0x00,0x3F,0x57,0x02,0xFF,0x00,0x79,0x20, +0x00,0x00,0xCE,0x87,0x28,0x10,0x30,0x00,0x80,0x48,0x00,0x3F,0x57,0x56,0x10,0x61, +0x8F,0x58,0x40,0x1B,0x01,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x0F,0x2E,0x3E,0x08,0x00,0x47,0x30,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xF4,0x68,0x10,0x3C,0x45,0x42,0x00,0x60,0xE8,0x00,0x87,0x3E, +0x00,0x61,0xDA,0xFC,0x40,0x1D,0xFE,0xFF,0x00,0x60,0xC4,0x00,0xBC,0x3E,0x0D,0x00, +0x07,0x3F,0x00,0x61,0x3C,0xFB,0x8F,0x54,0x00,0x60,0xD2,0x00,0x86,0x3E,0x05,0x3F, +0x2E,0x2F,0x0C,0x00,0x07,0x3F,0x00,0x61,0xE4,0xFE,0x8F,0x50,0x00,0x3A,0x00,0x60, +0xB4,0x00,0xBC,0x3E,0xE0,0xFF,0xB9,0x4E,0xFC,0x00,0x82,0x80,0x86,0x3E,0x05,0x3F, +0x2E,0x2F,0x0C,0x00,0x07,0x3F,0x00,0x61,0xC4,0xFE,0x8F,0x50,0x00,0x3A,0x45,0x4A, +0xEA,0x66,0x00,0x60,0x90,0x00,0xBC,0x3E,0x23,0x00,0x07,0x3F,0x00,0x61,0xF2,0xFA, +0x8F,0x54,0x86,0x3E,0x07,0x3F,0x00,0x61,0x5E,0xFE,0x8F,0x54,0x45,0x42,0x00,0x60, +0x74,0x00,0xBC,0x3E,0x23,0x00,0x07,0x3F,0x00,0x61,0xD6,0xFA,0x8F,0x54,0x86,0x3E, +0x07,0x3F,0x00,0x61,0x42,0xFE,0x8F,0x54,0x6E,0x42,0xFC,0xFF,0x1C,0x60,0x6E,0x30, +0xFC,0xFF,0x6E,0x22,0x0C,0x00,0x30,0x10,0x00,0x98,0x80,0x48,0x80,0x3E,0x07,0x3F, +0x00,0x61,0xA0,0xFB,0x8F,0x54,0x6E,0x52,0xFC,0xFF,0x6E,0xBA,0xFC,0xFF,0xDE,0x6E, +0x32,0x60,0x2E,0x10,0xFE,0xFF,0x80,0x48,0x45,0x32,0xEE,0xD3,0x0C,0x00,0x80,0x12, +0x80,0x3E,0x07,0x3F,0x00,0x61,0x7C,0xFB,0x8F,0x54,0x45,0x52,0x16,0x60,0xC0,0x48, +0x7C,0x20,0xFD,0x00,0x72,0x30,0x08,0x72,0x98,0xB0,0xC9,0x57,0xFC,0xFF,0x68,0x20, +0x20,0x00,0xD0,0x4E,0x6E,0xBA,0x0A,0x00,0x00,0x6D,0x14,0xFF,0x05,0x30,0x9F,0x4A, +0xDF,0x4C,0xE0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xE0,0x70,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x3C,0x20,0x00,0x00,0x00,0x13,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0xBC,0x2E,0x00,0x00,0x8E,0x7E,0x67,0x42, +0xB9,0x4E,0xFC,0x00,0x06,0x4F,0x8F,0x54,0xFC,0x33,0x40,0x1F,0x00,0x00,0x80,0x87, +0xBC,0x3E,0x10,0x00,0xB9,0x4E,0xFC,0x00,0x74,0x7F,0xC0,0x23,0x00,0x00,0xCE,0x87, +0x40,0x2A,0x7C,0x1B,0xFF,0xFF,0x30,0x00,0x7C,0x1B,0xFF,0xFF,0x31,0x00,0x7C,0x1B, +0xFE,0xFF,0x32,0x00,0x7C,0x1B,0xFD,0xFF,0x33,0x00,0x40,0x42,0xC0,0x13,0x00,0x00, +0x6E,0x75,0xC0,0x13,0x00,0x00,0x6D,0x75,0xC0,0x13,0x00,0x00,0x6C,0x75,0x3C,0x20, +0x00,0x00,0xC0,0x83,0xC0,0x23,0x00,0x00,0x96,0x88,0xC0,0x23,0x00,0x00,0x30,0x88, +0x3C,0x20,0x00,0x00,0x00,0x85,0xC0,0x23,0x00,0x00,0x9A,0x88,0xC0,0x23,0x00,0x00, +0x34,0x88,0x3C,0x20,0x00,0x00,0x40,0x86,0xC0,0x23,0x00,0x00,0x9E,0x88,0xC0,0x23, +0x00,0x00,0x38,0x88,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00,0xAD,0x4A,0x1C,0x00,0x06,0x67, +0xAD,0x2E,0x1C,0x00,0xE8,0x61,0xAD,0x4A,0x20,0x00,0x06,0x67,0xAD,0x2E,0x20,0x00, +0xDC,0x61,0xAD,0x4A,0x14,0x00,0x0A,0x67,0xAD,0x2E,0x14,0x00,0xB9,0x4E,0xFC,0x00, +0xF6,0x7F,0x47,0x42,0x24,0x60,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xEE,0x7D,0xD0,0xBB,0x12,0x66,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xEE,0x7D,0xBC,0x20,0x00,0x00,0x00,0x00,0x47,0x52,0x7C,0xBE,0x28,0x00,0xD6,0x6D, +0x8D,0x2E,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x47,0x42,0x60,0x60,0x07,0x30, +0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x50,0x2A,0x0D,0x20, +0x4A,0x6F,0xED,0xB9,0x10,0x00,0x44,0x66,0x8D,0x2E,0xB9,0x4E,0xFC,0x00,0xF6,0x7F, +0x07,0x30,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0xBC,0x20, +0x00,0x00,0x00,0x00,0x07,0x30,0xFC,0xC1,0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80, +0x40,0x20,0x7C,0x21,0x00,0x00,0x00,0x00,0x04,0x00,0x07,0x30,0xFC,0xC1,0x0A,0x00, +0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x68,0x42,0x08,0x00,0x47,0x52,0x7C,0xBE, +0x4B,0x00,0x9A,0x6D,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xCA,0xFF,0x79,0x42,0x00,0x00,0xFA,0x68,0x79,0x52,0x00,0x00,0xFA,0x68,0x6E,0x20, +0x08,0x00,0x50,0x3D,0xDE,0xFF,0x6E,0x0C,0x57,0x00,0xDE,0xFF,0x06,0x6F,0xE0,0x70, +0x00,0x60,0xB4,0x07,0xBC,0x2E,0x00,0x00,0xF4,0x7E,0xB9,0x4E,0xFC,0x00,0x92,0x4F, +0x40,0x2D,0xD6,0xFF,0x00,0x67,0x22,0x02,0xAE,0x0C,0xFF,0xFF,0xF2,0xFF,0xD6,0xFF, +0x00,0x66,0xC0,0x01,0x79,0x30,0x00,0x00,0xCC,0x87,0xC8,0xD1,0xC8,0xD1,0x7C,0x22, +0x00,0x00,0x80,0x83,0x70,0x20,0x00,0x98,0x68,0x2D,0x24,0x00,0xE6,0xFF,0x79,0x30, +0x00,0x00,0xCC,0x87,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x80,0x83,0xB0,0x2E, +0x00,0x98,0x00,0x61,0x0E,0xFF,0x79,0x30,0x00,0x00,0xCC,0x87,0xC8,0xD1,0xC8,0xD1, +0x7C,0x22,0x00,0x00,0x80,0x83,0x70,0x20,0x00,0x98,0xA8,0x4A,0x1C,0x00,0x1E,0x67, +0x79,0x30,0x00,0x00,0xCC,0x87,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x80,0x83, +0x70,0x20,0x00,0x98,0xA8,0x2E,0x1C,0x00,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x6E,0x42, +0xE0,0xFF,0x58,0x60,0x6E,0x30,0xE0,0xFF,0x7C,0x22,0x00,0x00,0x66,0x80,0x30,0x4A, +0x00,0x98,0x44,0x67,0x6E,0x30,0xE0,0xFF,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00, +0xEE,0x7D,0x70,0x20,0x00,0x98,0x28,0x20,0x24,0x00,0x6E,0x22,0xE6,0xFF,0x29,0x22, +0x24,0x00,0x81,0xB0,0x22,0x66,0x7C,0x20,0x00,0x00,0x66,0x80,0x6E,0x32,0xE0,0xFF, +0xC9,0xD1,0x10,0x42,0x6E,0x30,0xE0,0xFF,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xEE,0x7D,0xBC,0x20,0x00,0x00,0x00,0x00,0x6E,0x52,0xE0,0xFF,0x6E,0x0C,0x28,0x00, +0xE0,0xFF,0xA0,0x6D,0x79,0x30,0x00,0x00,0xCC,0x87,0xC8,0xD1,0xC8,0xD1,0x7C,0x22, +0x00,0x00,0x80,0x83,0xB0,0x2E,0x00,0x98,0xB9,0x4E,0xFC,0x00,0xF6,0x7F,0x79,0x30, +0x00,0x00,0xCC,0x87,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x80,0x83,0xBC,0x20, +0x00,0x00,0x00,0x00,0xAE,0x4A,0xE6,0xFF,0x08,0x67,0xAE,0x2E,0xE6,0xFF,0x00,0x61, +0xBE,0xFD,0x6E,0x42,0xE0,0xFF,0x40,0x60,0x6E,0x30,0xE0,0xFF,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xB2,0x04,0x50,0x2D,0xEA,0xFF,0x22,0x60,0x6E,0x20,0xEA,0xFF, +0x28,0x30,0x04,0x00,0x79,0xB0,0x00,0x00,0xCC,0x87,0x0A,0x66,0x6E,0x20,0xEA,0xFF, +0x7C,0x31,0xFF,0xFF,0x04,0x00,0x6E,0x20,0xEA,0xFF,0x50,0x2D,0xEA,0xFF,0xAE,0x4A, +0xEA,0xFF,0xD8,0x66,0x6E,0x52,0xE0,0xFF,0x6E,0x0C,0x02,0x00,0xE0,0xFF,0xB8,0x6D, +0xB9,0x3E,0x00,0x00,0xCC,0x87,0x3C,0x3F,0x07,0x00,0xB9,0x4E,0xFC,0x00,0x06,0x4F, +0x8F,0x54,0x40,0x2D,0xEE,0xFF,0xAE,0x4A,0xEE,0xFF,0x1A,0x66,0x01,0x70,0x39,0x32, +0x00,0x00,0xCC,0x87,0x60,0xE3,0x40,0x46,0x79,0xC1,0x00,0x00,0x84,0x87,0x2E,0x20, +0xD6,0xFF,0x00,0x60,0x02,0x06,0xB9,0x3E,0x00,0x00,0xCC,0x87,0x2E,0x2F,0xEE,0xFF, +0xB9,0x4E,0xFC,0x00,0x1A,0x54,0x8F,0x58,0x80,0x4A,0x06,0x67,0xD9,0x70,0x00,0x60, +0xE6,0x05,0x79,0x42,0x00,0x00,0xB4,0x75,0x79,0x42,0x00,0x00,0xCC,0x87,0x00,0x60, +0x08,0xFE,0x6E,0x42,0xE0,0xFF,0x40,0x60,0x6E,0x30,0xE0,0xFF,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xB2,0x04,0x50,0x2D,0xEA,0xFF,0x22,0x60,0x6E,0x20,0xEA,0xFF, +0x28,0x30,0x04,0x00,0x79,0xB0,0x00,0x00,0xCC,0x87,0x0A,0x66,0x6E,0x20,0xEA,0xFF, +0x7C,0x31,0xFF,0xFF,0x04,0x00,0x6E,0x20,0xEA,0xFF,0x50,0x2D,0xEA,0xFF,0xAE,0x4A, +0xEA,0xFF,0xD8,0x66,0x6E,0x52,0xE0,0xFF,0x6E,0x0C,0x02,0x00,0xE0,0xFF,0xB8,0x6D, +0x2E,0x20,0xD6,0xFF,0x00,0x60,0x80,0x05,0x2E,0x30,0xDE,0xFF,0xFC,0xC1,0x06,0x00, +0xBC,0xD0,0xFD,0x00,0xD4,0x30,0x40,0x2D,0xCE,0xFF,0x6E,0x20,0xCE,0xFF,0x68,0x3D, +0x04,0x00,0xE4,0xFF,0x6E,0x4A,0xE4,0xFF,0x00,0x67,0xBA,0x01,0x6E,0x4A,0xDE,0xFF, +0x00,0x67,0xB2,0x01,0x6E,0x0C,0x0C,0x00,0xDE,0xFF,0x14,0x6D,0x6E,0x0C,0x10,0x00, +0xDE,0xFF,0x00,0x6D,0xA0,0x01,0x6E,0x0C,0x13,0x00,0xDE,0xFF,0x00,0x6E,0x96,0x01, +0x79,0x20,0x00,0x00,0xCE,0x87,0x2E,0x32,0xE4,0xFF,0x7C,0xC2,0x7F,0x00,0x30,0x10, +0x30,0x10,0x80,0x48,0x40,0x3D,0xE2,0xFF,0x00,0x6F,0x5E,0x01,0x2E,0x30,0xDE,0xFF, +0x00,0x60,0x40,0x01,0x6E,0x20,0x08,0x00,0x68,0x0C,0xFF,0x00,0x02,0x00,0x26,0x66, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x3C,0x2F,0x00,0x00,0x01,0x00,0x2E,0x3F, +0xE2,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0x2E,0x10,0xF2,0xFF,0x80,0x48, +0xC0,0x48,0x00,0x60,0xE2,0x04,0x6E,0x20,0x08,0x00,0xA8,0x3E,0x02,0x00,0x3C,0x2F, +0x00,0x00,0x01,0x00,0x2E,0x3F,0xE2,0xFF,0xB9,0x4E,0xFC,0x00,0x44,0x5F,0x8F,0x5C, +0x00,0x60,0xC4,0x04,0x6E,0x20,0x08,0x00,0x68,0x2D,0x02,0x00,0xF8,0xFF,0x1A,0x60, +0xAE,0x2E,0xF8,0xFF,0x3C,0x2F,0x00,0x00,0x01,0x00,0x2E,0x3F,0xE2,0xFF,0xB9,0x4E, +0xFC,0x00,0x44,0x5F,0x8F,0x5C,0xAE,0x52,0xF8,0xFF,0x6E,0x20,0xF8,0xFF,0x10,0x4A, +0xDE,0x66,0x00,0x60,0x92,0x04,0x6E,0x20,0x08,0x00,0x68,0x2D,0x02,0x00,0xF8,0xFF, +0x6E,0x20,0xF8,0xFF,0x10,0x10,0x80,0x48,0x40,0x3D,0xDA,0xFF,0xAE,0x52,0xF8,0xFF, +0x2E,0x20,0xF8,0xFF,0x80,0x52,0x40,0x2D,0xF4,0xFF,0x6E,0x42,0xE0,0xFF,0x6A,0x60, +0xAE,0x2E,0xF4,0xFF,0x3C,0x2F,0x00,0x00,0x01,0x00,0x2E,0x3F,0xE2,0xFF,0xB9,0x4E, +0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0xBC,0xB0,0x00,0x00,0x01,0x00,0x42,0x66,0xAE,0x2E, +0xF4,0xFF,0x3C,0x2F,0x00,0x00,0x01,0x00,0x3C,0x3F,0x01,0x00,0x3C,0x3F,0x40,0x00, +0xB9,0x4E,0xFC,0x00,0xD2,0x50,0x8F,0x50,0x6E,0x20,0xF4,0xFF,0x10,0x0C,0x0D,0x00, +0x1C,0x66,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x3C,0x2F,0x00,0x00,0x01,0x00, +0x2E,0x3F,0xE2,0xFF,0xB9,0x4E,0xFC,0x00,0xC4,0x5E,0x8F,0x5C,0x18,0x60,0x02,0x60, +0x14,0x60,0x6E,0x52,0xE0,0xFF,0xAE,0x52,0xF4,0xFF,0x2E,0x30,0xDA,0xFF,0x6E,0x53, +0xDA,0xFF,0x40,0x4A,0x8A,0x66,0x2E,0x30,0xE0,0xFF,0x6E,0x22,0xF8,0xFF,0x80,0x12, +0x80,0x42,0x00,0x60,0xE2,0x03,0x3C,0x20,0x00,0x00,0xFF,0x00,0x00,0x60,0xD8,0x03, +0x16,0x60,0x40,0x53,0x7C,0xB0,0x12,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1, +0xFD,0x00,0xE4,0x32,0x50,0x20,0xD0,0x4E,0x6E,0x0C,0x0A,0x00,0xDE,0xFF,0x08,0x67, +0x6E,0x0C,0x09,0x00,0xDE,0xFF,0x08,0x66,0x7C,0x3D,0x01,0x00,0xE4,0xFF,0x04,0x60, +0x6E,0x42,0xE4,0xFF,0x2E,0x08,0x07,0x00,0xE5,0xFF,0x00,0x67,0xA4,0x01,0x6E,0x0C, +0x81,0x00,0xE4,0xFF,0x0C,0x66,0x6E,0x20,0x08,0x00,0x68,0x3D,0x06,0x00,0xE2,0xFF, +0x0A,0x60,0x6E,0x20,0x08,0x00,0x68,0x3D,0x02,0x00,0xE2,0xFF,0x6E,0x0C,0x06,0x00, +0xE2,0xFF,0x18,0x6D,0x2E,0x30,0xE2,0xFF,0x40,0x5D,0xFC,0xC1,0x0A,0x00,0xBC,0xD0, +0x00,0x00,0x92,0x80,0x40,0x20,0x50,0x2D,0xD2,0xFF,0x46,0x60,0x6E,0x4A,0xE2,0xFF, +0x38,0x6D,0x6E,0x30,0xE2,0xFF,0x79,0x22,0x00,0x00,0xCE,0x87,0x30,0x10,0x30,0x98, +0x80,0x48,0x40,0x3D,0xE2,0xFF,0x18,0x6F,0x2E,0x30,0xE2,0xFF,0x40,0x5D,0xFC,0xC1, +0x0A,0x00,0xBC,0xD0,0x00,0x00,0x92,0x80,0x40,0x20,0x50,0x2D,0xD2,0xFF,0x08,0x60, +0x6E,0x30,0xE2,0xFF,0x48,0x2D,0xD2,0xFF,0x08,0x60,0x6E,0x30,0xE2,0xFF,0x48,0x2D, +0xD2,0xFF,0xAE,0x4A,0xD2,0xFF,0x06,0x66,0xDB,0x70,0x00,0x60,0x0A,0x03,0xAE,0x4A, +0xD2,0xFF,0x00,0x6C,0x0C,0x01,0x2E,0x20,0xD2,0xFF,0x40,0x3D,0xDC,0xFF,0x2E,0x20, +0x08,0x00,0x80,0x50,0x40,0x2D,0xFC,0xFF,0x6E,0x0C,0x3F,0x00,0xDE,0xFF,0x5C,0x66, +0x6E,0x20,0x08,0x00,0x68,0x4A,0x04,0x00,0x06,0x67,0x80,0x42,0x00,0x60,0xD8,0x02, +0x6E,0x20,0x08,0x00,0x68,0x0C,0x01,0x00,0x06,0x00,0x1E,0x66,0x6E,0x20,0xFC,0xFF, +0x10,0x2F,0x2E,0x3F,0xDC,0xFF,0x57,0x56,0xB9,0x4E,0xFC,0x00,0x20,0x90,0x8F,0x54, +0x5F,0x20,0x80,0x10,0x01,0x70,0x00,0x60,0xAE,0x02,0x6E,0x20,0xFC,0xFF,0x90,0x2E, +0x6E,0x20,0x08,0x00,0x28,0x3F,0x06,0x00,0x2E,0x3F,0xDC,0xFF,0x57,0x56,0xB9,0x4E, +0xFC,0x00,0x80,0x92,0x8F,0x58,0xC0,0x48,0x00,0x60,0x8C,0x02,0x6E,0x0C,0x40,0x00, +0xDE,0xFF,0x00,0x66,0x86,0x00,0x6E,0x20,0x08,0x00,0x68,0x4A,0x04,0x00,0x06,0x67, +0x80,0x42,0x00,0x60,0x72,0x02,0x6E,0x20,0xFC,0xFF,0x50,0x2D,0xF8,0xFF,0x6E,0x56, +0xDC,0xFF,0x6E,0x42,0xE0,0xFF,0x46,0x60,0x6E,0x0C,0x02,0x00,0xDC,0xFF,0x1C,0x66, +0x6E,0x20,0xF8,0xFF,0x10,0x10,0x80,0x48,0x80,0x3E,0x2E,0x3F,0xDC,0xFF,0xB9,0x4E, +0xFC,0x00,0x96,0x8E,0x8F,0x54,0xAE,0x52,0xF8,0xFF,0x1E,0x60,0x6E,0x20,0xF8,0xFF, +0x10,0x10,0x80,0x48,0x80,0x3E,0x2E,0x3F,0xDC,0xFF,0x3C,0x3F,0x03,0x00,0xB9,0x4E, +0xFC,0x00,0x06,0x4F,0x8F,0x58,0xAE,0x52,0xF8,0xFF,0x6E,0x52,0xE0,0xFF,0x6E,0x20, +0x08,0x00,0x28,0x30,0x06,0x00,0x6E,0xB0,0xE0,0xFF,0xAC,0x6E,0x6E,0x20,0x08,0x00, +0x28,0x30,0x06,0x00,0xC0,0x48,0x00,0x60,0xFE,0x01,0x80,0x42,0x00,0x60,0xF8,0x01, +0xAE,0x42,0xD6,0xFF,0x6E,0x0C,0x3D,0x00,0xDE,0xFF,0x0A,0x67,0x6E,0x0C,0x3C,0x00, +0xDE,0xFF,0x00,0x66,0xC6,0x00,0x6E,0x20,0x08,0x00,0x68,0x2D,0x02,0x00,0xF4,0xFF, +0xBC,0x2E,0xFD,0x00,0x30,0x33,0x2E,0x2F,0xF4,0xFF,0x3C,0x3F,0x05,0x00,0xB9,0x4E, +0xFC,0x00,0xEE,0x7E,0x8F,0x5C,0x40,0x4A,0x1A,0x66,0xBC,0x2E,0xFD,0x00,0x35,0x33, +0x2E,0x2F,0xF4,0xFF,0x3C,0x3F,0x05,0x00,0xB9,0x4E,0xFC,0x00,0xEE,0x7E,0x8F,0x5C, +0x40,0x4A,0x0C,0x67,0x7C,0x2D,0x00,0x00,0xFF,0xFF,0xD6,0xFF,0x00,0x60,0x7C,0x00, +0xBC,0x2E,0xFD,0x00,0x3A,0x33,0x2E,0x2F,0xF4,0xFF,0x3C,0x3F,0x05,0x00,0xB9,0x4E, +0xFC,0x00,0xEE,0x7E,0x8F,0x5C,0x40,0x4A,0x1A,0x66,0xBC,0x2E,0xFD,0x00,0x3F,0x33, +0x2E,0x2F,0xF4,0xFF,0x3C,0x3F,0x05,0x00,0xB9,0x4E,0xFC,0x00,0xEE,0x7E,0x8F,0x5C, +0x40,0x4A,0x0A,0x67,0x7C,0x2D,0x00,0x00,0xFE,0xFF,0xD6,0xFF,0x3C,0x60,0xBC,0x2E, +0xFD,0x00,0x44,0x33,0x2E,0x2F,0xF4,0xFF,0x3C,0x3F,0x05,0x00,0xB9,0x4E,0xFC,0x00, +0xEE,0x7E,0x8F,0x5C,0x40,0x4A,0x1A,0x66,0xBC,0x2E,0xFD,0x00,0x49,0x33,0x2E,0x2F, +0xF4,0xFF,0x3C,0x3F,0x05,0x00,0xB9,0x4E,0xFC,0x00,0xEE,0x7E,0x8F,0x5C,0x40,0x4A, +0x08,0x67,0x7C,0x2D,0x00,0x00,0xFD,0xFF,0xD6,0xFF,0xAE,0x4A,0xD6,0xFF,0x00,0x66, +0x12,0x01,0x6E,0x02,0x7F,0x00,0xE4,0xFF,0x2E,0x30,0xE4,0xFF,0x00,0x60,0xE8,0x00, +0x6E,0x20,0x08,0x00,0x28,0x3F,0x04,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x02,0x00, +0x6E,0x20,0xCE,0xFF,0x50,0x20,0x90,0x4E,0x8F,0x58,0x40,0x2D,0xD6,0xFF,0x00,0x60, +0xE2,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x08,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F, +0x06,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x04,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F, +0x02,0x00,0x6E,0x20,0xCE,0xFF,0x50,0x20,0x90,0x4E,0x8F,0x50,0x40,0x2D,0xD6,0xFF, +0x00,0x60,0xB0,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x0C,0x00,0x6E,0x20,0x08,0x00, +0x28,0x3F,0x0A,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x08,0x00,0x6E,0x20,0x08,0x00, +0x28,0x3F,0x06,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x04,0x00,0x6E,0x20,0x08,0x00, +0x28,0x3F,0x02,0x00,0x6E,0x20,0xCE,0xFF,0x50,0x20,0x90,0x4E,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x40,0x2D,0xD6,0xFF,0x6A,0x60,0x6E,0x20,0x08,0x00,0x28,0x3F,0x0E,0x00, +0x6E,0x20,0x08,0x00,0x28,0x3F,0x0C,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x0A,0x00, +0x6E,0x20,0x08,0x00,0x28,0x3F,0x08,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x06,0x00, +0x6E,0x20,0x08,0x00,0x28,0x3F,0x04,0x00,0x6E,0x20,0x08,0x00,0x28,0x3F,0x02,0x00, +0x6E,0x20,0xCE,0xFF,0x50,0x20,0x90,0x4E,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x40,0x2D, +0xD6,0xFF,0x1E,0x60,0x1C,0x60,0x40,0x4A,0x00,0x67,0x16,0xFF,0x7C,0xB0,0x01,0x00, +0x00,0x67,0x30,0xFF,0x7C,0xB0,0x02,0x00,0x00,0x67,0x5A,0xFF,0x7C,0xB0,0x03,0x00, +0x96,0x67,0x2E,0x20,0xD6,0xFF,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x00,0x03,0x2E,0x30,0x08,0x00,0xC0,0x48,0xB9,0xD1,0x00,0x00,0x9C,0x87,0x2E,0x30, +0x08,0x00,0x79,0xD1,0x00,0x00,0xFC,0x68,0x79,0x0C,0xD0,0x07,0x00,0x00,0xFC,0x68, +0x00,0x6D,0x28,0x01,0x79,0x04,0xD0,0x07,0x00,0x00,0xFC,0x68,0x79,0x52,0x00,0x00, +0xB0,0x75,0x40,0x42,0x39,0x30,0x00,0x00,0xB0,0x75,0x7C,0xC0,0x1F,0x00,0x7C,0xB0, +0x1E,0x00,0x00,0x66,0x06,0x01,0x79,0x02,0xE0,0xFF,0x00,0x00,0xB0,0x75,0x79,0x06, +0x20,0x00,0x00,0x00,0xB0,0x75,0x40,0x42,0x39,0x30,0x00,0x00,0xB0,0x75,0x7C,0xC0, +0xE0,0x07,0x7C,0xB0,0x80,0x07,0x00,0x66,0xE2,0x00,0x79,0x02,0x1F,0xF8,0x00,0x00, +0xB0,0x75,0x79,0x06,0x00,0x08,0x00,0x00,0xB0,0x75,0x40,0x42,0x39,0x30,0x00,0x00, +0xB0,0x75,0x7C,0xC0,0x00,0xF8,0x40,0x48,0x40,0x42,0x40,0x48,0xBC,0xB0,0x00,0x00, +0x00,0xC0,0x00,0x66,0xB6,0x00,0x79,0x42,0x00,0x00,0xB0,0x75,0x40,0x42,0x39,0x30, +0x00,0x00,0x40,0x88,0x7C,0xC0,0x1F,0x00,0x7C,0xB0,0x1F,0x00,0x6A,0x67,0x79,0x52, +0x00,0x00,0x40,0x88,0x40,0x42,0x39,0x30,0x00,0x00,0x40,0x88,0x7C,0xC0,0x1F,0x00, +0x7C,0xB0,0x1C,0x00,0x00,0x63,0x84,0x00,0x39,0x3E,0x00,0x00,0x40,0x88,0x47,0xEA, +0x7C,0xCE,0x0F,0x00,0x7C,0xBE,0x02,0x00,0x22,0x66,0x40,0x42,0x39,0x30,0x00,0x00, +0x40,0x88,0x7C,0xC0,0x00,0x06,0x14,0x66,0x40,0x42,0x39,0x30,0x00,0x00,0x40,0x88, +0x7C,0xC0,0x1F,0x00,0x7C,0xB0,0x1D,0x00,0x50,0x63,0x1C,0x60,0x40,0x42,0x39,0x30, +0x00,0x00,0x40,0x88,0x7C,0xC0,0x1F,0x00,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0xFD,0x00, +0xBA,0x30,0x11,0x32,0x41,0xB0,0x32,0x63,0x79,0x02,0xE0,0xFF,0x00,0x00,0x40,0x88, +0x79,0x06,0x21,0x00,0x00,0x00,0x40,0x88,0x40,0x42,0x39,0x30,0x00,0x00,0x40,0x88, +0x7C,0xC0,0xE0,0x01,0x7C,0xB0,0x80,0x01,0x10,0x63,0x79,0x02,0x00,0xFE,0x00,0x00, +0x40,0x88,0x79,0x06,0x21,0x02,0x00,0x00,0x40,0x88,0x9F,0x4A,0xDF,0x4C,0x80,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x39,0x30,0x00,0x00,0x40,0x88,0xC0,0x48, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F,0x2E,0x3A,0x08,0x00, +0x05,0x3E,0x47,0xEA,0x7C,0xCE,0x0F,0x00,0x05,0x3C,0x7C,0xCC,0x1F,0x00,0x05,0x30, +0x09,0x72,0x60,0xE2,0x7C,0xB0,0x77,0x00,0x04,0x6F,0xFF,0x70,0x44,0x60,0x7C,0xBE, +0x0C,0x00,0x04,0x6F,0xFF,0x70,0x3A,0x60,0x7C,0xBE,0x02,0x00,0x14,0x66,0x05,0x30, +0x7C,0xC0,0x00,0x06,0x0C,0x66,0x7C,0xBC,0x1D,0x00,0x04,0x6F,0xFF,0x70,0x22,0x60, +0x12,0x60,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0xBA,0x30,0x50,0xBC,0x04,0x6F, +0xFF,0x70,0x0E,0x60,0xC5,0x33,0x00,0x00,0x40,0x88,0xB9,0x4E,0xFC,0x00,0x0E,0x51, +0x80,0x42,0x9F,0x4A,0xDF,0x4C,0xE0,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x39,0x30,0x00,0x00,0xB0,0x75,0xC0,0x48,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x03,0x2E,0x3E,0x08,0x00,0x07,0x30,0x7C,0xC0,0x1F,0x00,0x7C,0xB0, +0x1E,0x00,0x04,0x6D,0xFF,0x70,0x34,0x60,0x07,0x30,0x7C,0xC0,0xE0,0x07,0x7C,0xB0, +0x80,0x07,0x04,0x6D,0xFF,0x70,0x24,0x60,0x07,0x30,0x7C,0xC0,0x00,0xF8,0xC0,0x48, +0x3C,0x22,0x00,0x00,0x00,0xC0,0x81,0xB0,0x04,0x6D,0xFF,0x70,0x0E,0x60,0xC7,0x33, +0x00,0x00,0xB0,0x75,0xB9,0x4E,0xFC,0x00,0x0E,0x51,0x80,0x42,0x9F,0x4A,0xDF,0x4C, +0x80,0x00,0x5E,0x4E,0x75,0x4E,0x6F,0x22,0x02,0x00,0x11,0x34,0x7C,0xC4,0xFF,0x0F, +0x89,0x54,0x49,0x2F,0x02,0x00,0x7C,0xB4,0x0F,0x00,0x10,0x62,0x4A,0xE5,0x7B,0x22, +0x24,0x20,0xE7,0x48,0x1C,0x1F,0x91,0x4E,0xDF,0x4C,0xF8,0x38,0x73,0x4E,0xF9,0x41, +0x00,0x00,0x9A,0x29,0x08,0x20,0xF9,0x43,0xFC,0x00,0xE4,0x9F,0xF9,0x45,0xFC,0x00, +0xA4,0x9F,0x75,0x4E,0xFC,0x00,0x8E,0x9F,0xFC,0x00,0x28,0xFB,0xFC,0x00,0x70,0xFB, +0xFC,0x00,0x44,0xA2,0xFC,0x00,0xD8,0xA5,0xFC,0x00,0xB0,0xFC,0xFC,0x00,0xB8,0xA0, +0xFD,0x00,0x56,0x06,0xFC,0x00,0xAE,0xEE,0xFC,0x00,0x7A,0xB1,0xFD,0x00,0xAE,0x02, +0xFD,0x00,0x24,0x03,0xFD,0x00,0xDE,0x01,0xFD,0x00,0x0A,0x00,0xFD,0x00,0xA0,0x03, +0xFD,0x00,0x4E,0x09,0xFD,0x00,0x50,0x3A,0xFD,0x00,0x2C,0x41,0xFD,0x00,0x88,0x5B, +0x00,0x00,0x00,0x00,0x00,0x70,0x75,0x4E,0xE7,0x48,0xFE,0x7F,0x41,0x20,0xF9,0x43, +0x00,0x00,0x9E,0x29,0xF9,0x47,0x00,0x00,0xDA,0x19,0x58,0x24,0xCA,0x22,0xD8,0x22, +0x58,0x28,0xCB,0x22,0xD8,0x22,0xD8,0x22,0x2A,0x30,0x02,0x00,0x00,0x3F,0x1A,0x67, +0x40,0xD0,0x3C,0x32,0x00,0x04,0x41,0xB0,0x0C,0x63,0x01,0x30,0x7C,0x35,0x00,0x02, +0x02,0x00,0x02,0x60,0xDC,0x36,0xC8,0x51,0xFC,0xFF,0xB9,0x4E,0xFC,0x00,0x50,0xAA, +0x79,0x20,0x00,0x00,0x9E,0x29,0x5F,0x31,0x02,0x00,0xDF,0x4C,0xFE,0x7F,0x39,0x30, +0x00,0x00,0x1E,0x17,0x75,0x4E,0x2F,0x30,0x04,0x00,0xC0,0xC1,0x2F,0x32,0x06,0x00, +0xC1,0xC3,0x80,0xD2,0x50,0x67,0x01,0x20,0x00,0x74,0xBC,0xB2,0x01,0x00,0x00,0x00, +0x04,0x65,0x41,0x48,0x10,0x74,0x7C,0xB2,0x01,0x00,0x06,0x67,0x42,0x52,0x49,0xE2, +0xF4,0x60,0x42,0xE2,0x01,0x76,0x63,0xE5,0x03,0x34,0x42,0xD4,0x02,0x66,0x42,0x53, +0x02,0x32,0x43,0x92,0x7C,0xB2,0x01,0x00,0x1A,0x67,0x41,0xE2,0x43,0xD2,0x01,0x38, +0xC1,0xC2,0x80,0xB2,0x06,0x62,0x08,0x65,0x04,0x30,0x75,0x4E,0x04,0x34,0xE0,0x60, +0x04,0x36,0xDC,0x60,0x03,0x30,0x75,0x4E,0x79,0x20,0x00,0x00,0x9E,0x29,0x28,0x30, +0x02,0x00,0x40,0x53,0x79,0x20,0x00,0x00,0xA6,0x29,0xF9,0x43,0x00,0x00,0xDA,0x16, +0x79,0x42,0x00,0x00,0x1E,0x26,0x28,0x32,0x06,0x00,0x28,0x34,0x02,0x00,0x42,0x92, +0x3E,0x67,0x39,0x36,0x00,0x00,0xC2,0x29,0x03,0x38,0x42,0x98,0x68,0x96,0x06,0x00, +0x04,0x34,0x42,0xB7,0x2A,0x6A,0x28,0x34,0x04,0x00,0x68,0x94,0x00,0x00,0x42,0xD4, +0xC2,0xC9,0xC1,0x89,0x0A,0x6A,0x44,0x44,0x44,0x52,0x44,0xE2,0x44,0x44,0x04,0x60, +0x44,0x52,0x44,0xE2,0x68,0xD8,0x00,0x00,0xC4,0x32,0x79,0x52,0x00,0x00,0x1E,0x26, +0xE8,0x41,0x04,0x00,0xC8,0x51,0xB0,0xFF,0x39,0x30,0x00,0x00,0x1E,0x26,0x02,0x66, +0x75,0x4E,0xF9,0x41,0x00,0x00,0xDA,0x16,0x00,0x61,0x84,0x00,0x39,0x30,0x00,0x00, +0x1E,0x26,0x40,0xE2,0x40,0x53,0x79,0x4A,0x00,0x00,0xD0,0x29,0x1E,0x66,0xD9,0x33, +0x00,0x00,0xC0,0x29,0xD9,0x33,0x00,0x00,0xC4,0x29,0x00,0x3F,0x09,0x2F,0x00,0x61, +0x78,0x04,0x5F,0x22,0x1F,0x30,0xC8,0x51,0xE6,0xFF,0x75,0x4E,0xD9,0x33,0x00,0x00, +0xC0,0x29,0xD9,0x33,0x00,0x00,0xC4,0x29,0x39,0x32,0x00,0x00,0xD2,0x29,0x39,0x34, +0x00,0x00,0xC0,0x29,0x39,0x36,0x00,0x00,0xC4,0x29,0x41,0xB4,0x0A,0x6C,0x41,0xB6, +0x26,0x6D,0xC1,0x33,0x00,0x00,0xC0,0x29,0x39,0x32,0x00,0x00,0xD6,0x29,0x41,0xB6, +0x0A,0x6F,0x41,0xB4,0x12,0x6E,0xC1,0x33,0x00,0x00,0xC4,0x29,0x00,0x3F,0x09,0x2F, +0x00,0x61,0x26,0x04,0x5F,0x22,0x1F,0x30,0xC8,0x51,0xB2,0xFF,0x75,0x4E,0x40,0x55, +0x1C,0x65,0x00,0x32,0x48,0x22,0x01,0x30,0x49,0x20,0x18,0x34,0x50,0xB4,0x06,0x6F, +0x50,0x31,0xFE,0xFF,0x82,0x30,0xC8,0x51,0xF2,0xFF,0xC9,0x51,0xEA,0xFF,0x75,0x4E, +0x01,0x72,0x2F,0x30,0x06,0x00,0xEF,0xC1,0x04,0x00,0x02,0x6C,0x41,0x44,0x2F,0x34, +0x08,0x00,0xC2,0x81,0x42,0x4A,0x04,0x6C,0x41,0x44,0x42,0x44,0x03,0x2F,0x00,0x26, +0x02,0x6C,0x83,0x44,0x43,0x48,0x43,0xD6,0x42,0xB6,0x02,0x6D,0x41,0xD0,0x1F,0x26, +0x75,0x4E,0x02,0x3F,0x03,0x3F,0xF9,0xC3,0x00,0x00,0x98,0x29,0x39,0x36,0x00,0x00, +0x9A,0x29,0x3B,0x16,0x17,0x30,0x00,0x34,0xC2,0x48,0x7C,0xC4,0xF0,0xFF,0x62,0xE6, +0x82,0xD2,0x7C,0xC0,0x0F,0x00,0x1F,0x36,0x1F,0x34,0x75,0x4E,0x02,0x03,0x01,0x00, +0x00,0x00,0x00,0x00,0xF9,0x49,0x00,0x00,0x9A,0x29,0x02,0x70,0xAC,0x4C,0xF0,0x00, +0x26,0x00,0x45,0xBE,0x00,0x67,0xE4,0x00,0x44,0xBC,0x00,0x66,0x1E,0x01,0x6C,0x2A, +0x96,0x00,0xD5,0x4E,0xF9,0x4B,0xFF,0x00,0x3C,0x8A,0x44,0x46,0x7C,0xC8,0x0F,0x00, +0x40,0x42,0xC0,0x09,0x40,0x3B,0xEC,0xFF,0x2C,0x30,0x00,0x00,0x00,0x32,0x41,0xD2, +0x40,0x53,0x79,0x22,0x00,0x00,0x4E,0x04,0x46,0xE8,0xC6,0xC3,0xC1,0xD3,0x2C,0x34, +0xFE,0xFF,0xC5,0xC5,0xC2,0xD3,0x07,0x74,0x2C,0x32,0x02,0x00,0xEC,0x47,0x22,0x00, +0x13,0x36,0x45,0x9E,0x1E,0x6C,0x47,0x44,0x41,0x44,0xED,0x41,0xE4,0xFF,0x43,0xD6, +0x44,0x99,0x04,0x31,0x43,0xD6,0x44,0x99,0x04,0x31,0xCA,0x51,0xF2,0xFF,0x3C,0x34, +0x00,0x8F,0x18,0x60,0xED,0x41,0xC4,0xFF,0x43,0xD6,0x44,0x99,0xC4,0x30,0x43,0xD6, +0x44,0x99,0xC4,0x30,0xCA,0x51,0xF2,0xFF,0x3C,0x34,0x00,0x80,0x41,0x3B,0xF4,0xFF, +0x47,0x52,0xF9,0x45,0xFC,0x00,0xA6,0xA5,0x2C,0x32,0x24,0x00,0x49,0xE5,0xC1,0xD4, +0x41,0x51,0x08,0x66,0x6C,0x4A,0x20,0x00,0x02,0x66,0x47,0x53,0x07,0x32,0x13,0x36, +0x7C,0xC2,0x0F,0x00,0x7B,0xE3,0x83,0x36,0xEC,0x47,0x18,0x00,0x02,0x78,0x7C,0x3B, +0x01,0x00,0xFA,0xFF,0x49,0x2B,0xF6,0xFF,0x47,0x3B,0xFC,0xFF,0x5B,0x4A,0xC3,0x56, +0x44,0xC6,0x72,0x3B,0x00,0x30,0xFE,0xFF,0x82,0x3A,0x07,0x72,0xD5,0x03,0x71,0x4E, +0xFA,0x66,0x49,0x54,0xC8,0x51,0xDE,0xFF,0x75,0x4E,0x6C,0xB0,0x24,0x00,0x14,0x66, +0x6C,0x4A,0x20,0x00,0x0E,0x66,0x44,0xBC,0x0A,0x67,0x02,0x6D,0x46,0x55,0x46,0x52, +0x46,0x39,0x2A,0x00,0x44,0xBC,0x02,0x6C,0x46,0xC9,0x06,0x32,0x44,0x92,0x41,0x52, +0x7C,0xC2,0x0F,0x00,0xEC,0x41,0x22,0x00,0x40,0x42,0x01,0x3F,0x00,0x61,0x8E,0x02, +0x1F,0x32,0x10,0x30,0x78,0xE3,0x80,0x30,0x75,0x4E,0xEF,0x4F,0xEC,0xFF,0x2C,0x36, +0x00,0x00,0x7C,0xB6,0x08,0x00,0x00,0x62,0xA0,0x00,0x6C,0xB0,0x24,0x00,0x06,0x67, +0x4F,0x24,0x00,0x61,0xBA,0x00,0x44,0xBC,0x04,0x6C,0x46,0xC9,0x47,0xCB,0x44,0x9C, +0x00,0x72,0x41,0x2A,0x04,0x30,0x40,0x46,0x7C,0xC0,0x0F,0x00,0xC1,0x01,0x79,0x20, +0x00,0x00,0x4E,0x04,0x2C,0x36,0x00,0x00,0x43,0xD6,0x2C,0x34,0xFE,0xFF,0xC5,0xC5, +0xC2,0xD1,0x44,0xE8,0xC3,0xC9,0xC4,0xD1,0x2C,0x30,0x02,0x00,0x45,0x9E,0x04,0x6C, +0x47,0x44,0x40,0x44,0x40,0x32,0x46,0xBE,0x06,0x6E,0x47,0xCD,0xED,0x4B,0x10,0x00, +0x06,0x38,0x44,0xD8,0x04,0x3A,0x47,0x98,0x04,0x3C,0x47,0x9C,0x2C,0x30,0x24,0x00, +0x48,0xE5,0xC0,0xDA,0x40,0x51,0x08,0x66,0x6C,0x4A,0x20,0x00,0x02,0x66,0x47,0x53, +0xEC,0x47,0x22,0x00,0x13,0x30,0x07,0x34,0x42,0x52,0x7C,0xC4,0x0F,0x00,0x78,0xE5, +0x13,0x34,0x80,0x36,0x01,0x30,0x40,0x46,0xFB,0x4B,0x14,0xD0,0x4D,0x26,0xDD,0xD6, +0x4B,0x28,0xC3,0x98,0xD5,0xDA,0x95,0x4E,0xEF,0x4F,0x14,0x00,0x75,0x4E,0x68,0x00, +0x4A,0x00,0x8C,0x00,0x82,0x00,0xBE,0x00,0xA4,0x00,0x84,0x00,0x78,0x00,0xEE,0x00, +0xD0,0x00,0x12,0x01,0x08,0x01,0x44,0x01,0x2A,0x01,0x0A,0x01,0xFE,0x00,0x43,0x53, +0xBA,0x4C,0x07,0x00,0x20,0x00,0x4A,0x20,0xEC,0x43,0x18,0x00,0x59,0x4A,0x0A,0x66, +0xC0,0x30,0xCB,0x51,0xF8,0xFF,0xC2,0x30,0x75,0x4E,0xC1,0x30,0xCB,0x51,0xEE,0xFF, +0xC2,0x30,0x75,0x4E,0x5D,0xC1,0x5D,0x83,0xD3,0x4E,0x5A,0xE3,0x04,0x64,0x48,0x2A, +0xD2,0x4E,0x48,0x2A,0xD4,0x4E,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1, +0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0xC9,0xD0,0x44,0x4A,0x10,0x6B,0x58,0xE2,0x59,0xE2, +0x02,0x64,0xC3,0xD0,0x46,0xD8,0xCF,0x51,0xD2,0xFF,0x75,0x4E,0x45,0xD8,0xCF,0x51, +0xCA,0xFF,0x75,0x4E,0x42,0x46,0x5A,0xE3,0x04,0x64,0x48,0x2A,0xD2,0x4E,0xC9,0xD0, +0x44,0x4A,0x10,0x6B,0x58,0xE2,0x59,0xE2,0x02,0x64,0xC3,0xD0,0x46,0xD8,0xCF,0x51, +0xE6,0xFF,0x75,0x4E,0x45,0xD8,0xCF,0x51,0xDE,0xFF,0x75,0x4E,0x5A,0xE3,0x14,0x64, +0x48,0x2A,0xD4,0x4E,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3, +0x5D,0xB3,0x5D,0xB3,0xC9,0xD0,0x44,0x4A,0x0E,0x6B,0x59,0xE2,0x02,0x64,0xC3,0xD0, +0x46,0xD8,0xCF,0x51,0xD8,0xFF,0x75,0x4E,0x45,0xD8,0xCF,0x51,0xD0,0xFF,0x75,0x4E, +0x5A,0xE3,0x04,0x64,0x48,0x2A,0xD2,0x4E,0x48,0x2A,0xD4,0x4E,0x5D,0xC1,0x5D,0xC1, +0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x58,0xE2,0x59,0xE2, +0x02,0x64,0xC3,0xD0,0x44,0x4A,0x0A,0x6B,0x46,0xD8,0xC9,0xD0,0xCF,0x51,0xD2,0xFF, +0x75,0x4E,0x45,0xD8,0xCF,0x51,0xCA,0xFF,0x75,0x4E,0x42,0x46,0x5A,0xE3,0x04,0x64, +0x48,0x2A,0xD2,0x4E,0x58,0xE2,0x59,0xE2,0x02,0x64,0xC3,0xD0,0x44,0x4A,0x0A,0x6B, +0x46,0xD8,0xC9,0xD0,0xCF,0x51,0xE6,0xFF,0x75,0x4E,0x45,0xD8,0xCF,0x51,0xDE,0xFF, +0x75,0x4E,0x5A,0xE3,0x14,0x64,0x48,0x2A,0xD4,0x4E,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3, +0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x59,0xE2,0x02,0x64,0xC3,0xD0, +0x44,0x4A,0x0A,0x6B,0x46,0xD8,0xC9,0xD0,0xCF,0x51,0xD8,0xFF,0x75,0x4E,0x45,0xD8, +0xCF,0x51,0xD0,0xFF,0x75,0x4E,0x00,0x01,0x03,0x01,0x04,0x01,0x07,0x01,0x06,0x01, +0x06,0x01,0x01,0x01,0x0D,0x01,0xFF,0xFF,0xFF,0x7F,0xFF,0x3F,0xFF,0x1F,0xFF,0x0F, +0xFF,0x07,0xFF,0x03,0xFF,0x01,0xFF,0x00,0x7F,0x00,0x3F,0x00,0x1F,0x00,0x0F,0x00, +0x07,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0xF9,0x49,0x00,0x00,0x9A,0x29,0xAC,0x4C, +0x70,0x00,0x26,0x00,0x05,0x30,0x6C,0xC0,0x32,0x00,0x40,0xD0,0x6C,0x20,0x2E,0x00, +0xC0,0xD0,0x6C,0x4A,0x34,0x00,0xC0,0x56,0x7C,0xC0,0x20,0x00,0x04,0x32,0x41,0xE8, +0x06,0x34,0x42,0xE8,0x0F,0x76,0x43,0xC8,0x44,0xD8,0x3B,0x38,0xAA,0x40,0x43,0xCC, +0x46,0xDC,0x3B,0x3C,0xA4,0x60,0x46,0x46,0x41,0x94,0x02,0x66,0x46,0xC8,0x6C,0x2A, +0x9A,0x00,0xD5,0x4E,0xF9,0x4B,0xFF,0x00,0x3C,0x8A,0x6D,0x42,0xE4,0xFF,0x42,0x52, +0x42,0x3B,0xFA,0xFF,0xED,0x47,0xEC,0xFF,0xC4,0x36,0xFC,0x36,0xFF,0xFF,0xC6,0x36, +0x14,0x34,0x02,0x3E,0x47,0x53,0x42,0xD4,0xC2,0x36,0x79,0x22,0x00,0x00,0x4E,0x04, +0xEC,0xCB,0xFE,0xFF,0xC5,0xD3,0xC2,0xC3,0xC1,0xD3,0xED,0x45,0xC4,0xFF,0xEC,0x47, +0x18,0x00,0x2C,0x34,0x24,0x00,0x42,0xD4,0x42,0xD4,0xFA,0x49,0x3A,0xFF,0xC2,0xD8, +0x02,0x76,0x3C,0x38,0x00,0x80,0x01,0x7C,0x90,0x34,0xC0,0xD0,0x49,0x2B,0xF6,0xFF, +0x46,0x3B,0xFC,0xFF,0x5B,0x4A,0xC2,0x56,0x43,0xC4,0x74,0x3B,0x00,0x20,0xFE,0xFF, +0x84,0x3A,0x07,0x7A,0xD5,0x0B,0x71,0x4E,0xFA,0x66,0x89,0x54,0xCF,0x51,0xDA,0xFF, +0x75,0x4E,0x39,0x10,0x00,0x00,0x61,0x0E,0x40,0x02,0x0F,0x00,0x75,0x4E,0x39,0x2F, +0x00,0x00,0x4E,0x04,0x97,0x06,0x00,0x00,0x00,0x7D,0x39,0x2F,0x00,0x00,0x4E,0x04, +0xB9,0x4E,0xFC,0x00,0xD6,0x4B,0x8F,0x50,0x75,0x4E,0xFC,0x23,0xFC,0x00,0xAC,0xA6, +0x00,0x00,0x58,0x29,0xE7,0x40,0x7C,0x00,0x00,0x07,0x79,0x48,0xFC,0x00,0xE4,0xA7, +0x3C,0x3F,0x00,0x01,0x3C,0x3F,0x05,0x00,0x4D,0x4E,0x8F,0x50,0xC0,0x23,0x00,0x00, +0x5C,0x29,0xDF,0x46,0x00,0x61,0x5C,0x01,0x00,0x61,0x38,0x9F,0xB0,0x60,0x79,0x20, +0x00,0x00,0x9E,0x29,0xE7,0x40,0x7C,0x00,0x00,0x07,0x79,0x21,0x00,0x00,0x58,0x29, +0x12,0x00,0xE8,0x23,0x0E,0x00,0x00,0x00,0x58,0x29,0xDF,0x46,0x3C,0x3F,0x06,0x00, +0x4D,0x4E,0x8F,0x54,0x79,0x20,0x00,0x00,0xAA,0x29,0x80,0x30,0x75,0x4E,0x3C,0x3F, +0x04,0x00,0x4E,0x4E,0x8F,0x54,0x00,0x14,0x3C,0xB4,0x02,0x00,0x6C,0x67,0x79,0x20, +0x00,0x00,0xA2,0x29,0x10,0x30,0x7C,0xB0,0x01,0x00,0x06,0x66,0x02,0x4A,0x1E,0x67, +0x46,0x60,0x7C,0xB0,0x03,0x00,0x28,0x67,0x02,0x4A,0x12,0x67,0x67,0x42,0xFF,0x70, +0x00,0x2F,0x00,0x2F,0x3C,0x3F,0x05,0x00,0x4E,0x4E,0xEF,0x4F,0x0C,0x00,0x79,0x48, +0xFC,0x00,0xC4,0xA7,0x3C,0x3F,0x06,0x00,0x4E,0x4E,0x8F,0x5C,0x01,0x70,0x75,0x4E, +0x01,0x70,0x00,0xB4,0x12,0x67,0x00,0x3F,0xFF,0x70,0x00,0x2F,0x00,0x2F,0x3C,0x3F, +0x05,0x00,0x4E,0x4E,0xEF,0x4F,0x0C,0x00,0x79,0x48,0xFC,0x00,0xBC,0xA7,0x3C,0x3F, +0x06,0x00,0x4E,0x4E,0x8F,0x5C,0x02,0x70,0x75,0x4E,0x79,0x48,0xFC,0x00,0xBC,0xA7, +0x3C,0x3F,0x06,0x00,0x4E,0x4E,0x8F,0x5C,0x03,0x70,0x75,0x4E,0x77,0x07,0x00,0x07, +0x70,0x00,0x00,0x00,0x77,0x07,0x00,0x07,0x70,0x00,0x70,0x07,0x07,0x00,0x07,0x07, +0x77,0x00,0x55,0x05,0x33,0x03,0x33,0x07,0x73,0x03,0x73,0x07,0x37,0x03,0x37,0x07, +0x77,0x03,0x00,0x00,0xE7,0x48,0xFE,0xFF,0x79,0x20,0x00,0x00,0x58,0x29,0x90,0x4E, +0xDF,0x4C,0xFF,0x7F,0x39,0x2F,0x00,0x00,0x5C,0x29,0x75,0x4E,0x39,0x2F,0x00,0x00, +0x5C,0x29,0x3C,0x3F,0x00,0x01,0x3C,0x3F,0x05,0x00,0x4D,0x4E,0x8F,0x50,0x00,0x61, +0xBC,0x00,0x00,0x61,0x9A,0xFE,0x00,0x60,0x00,0x9E,0xFC,0x33,0x01,0x00,0x00,0x00, +0xC6,0x27,0x75,0x4E,0x3C,0x3F,0x02,0x00,0x3C,0x3F,0x01,0x00,0x4D,0x4E,0x40,0x4A, +0x1A,0x67,0xBC,0x3E,0x02,0x00,0x4D,0x4E,0x8F,0x58,0x00,0x22,0x41,0x48,0x49,0xE1, +0x41,0x80,0xC0,0x33,0x00,0x00,0xC6,0x27,0x01,0x70,0x75,0x4E,0x8F,0x58,0x00,0x70, +0x75,0x4E,0xF9,0x41,0xFC,0x00,0xCA,0xA8,0xC8,0x23,0x00,0x00,0x60,0x29,0xC8,0x23, +0x00,0x00,0x68,0x29,0xFC,0x23,0xFC,0x00,0x64,0xFF,0x00,0x00,0x64,0x29,0xF9,0x41, +0x00,0x00,0xA2,0x29,0x10,0x2F,0xBC,0x20,0xFD,0x00,0x06,0x3A,0x00,0x61,0xA6,0x5A, +0xDF,0x23,0x00,0x00,0xA2,0x29,0x00,0x70,0xC0,0x33,0x00,0x00,0x46,0x27,0xC0,0x13, +0x00,0x00,0x3E,0x28,0xC0,0x13,0x00,0x00,0x47,0x28,0xF9,0x41,0x00,0x00,0x42,0x28, +0xC0,0x30,0xC0,0x30,0x80,0x10,0x79,0x20,0x00,0x00,0x56,0x04,0xBC,0x20,0xFC,0x00, +0x84,0xFF,0x79,0x48,0xFC,0x00,0x82,0xFE,0x79,0x48,0xFD,0x00,0x02,0x3A,0x3C,0x3F, +0x01,0x00,0x67,0x42,0x4E,0x4E,0xEF,0x4F,0x0C,0x00,0x75,0x4E,0x79,0x20,0x00,0x00, +0x56,0x04,0x90,0x42,0xFF,0x70,0x00,0x2F,0x00,0x2F,0xA7,0x42,0x4E,0x4E,0xEF,0x4F, +0x0C,0x00,0x75,0x4E,0x39,0x10,0x00,0x00,0x3E,0x28,0x00,0x12,0x00,0x02,0xC0,0x00, +0x28,0x67,0x01,0x10,0x00,0x08,0x06,0x00,0x0A,0x67,0xFC,0x33,0x20,0x00,0x00,0x00, +0xC6,0x27,0x08,0x60,0xFC,0x33,0x21,0x00,0x00,0x00,0xC6,0x27,0x00,0x02,0x23,0x00, +0xC0,0x13,0x00,0x00,0x3E,0x28,0x01,0x70,0x75,0x4E,0x3C,0x3F,0x02,0x00,0x3C,0x3F, +0x01,0x00,0x4D,0x4E,0x40,0x4A,0x04,0x66,0x8F,0x58,0x1A,0x60,0xBC,0x3E,0x02,0x00, +0x4D,0x4E,0x8F,0x58,0x00,0x22,0x41,0x48,0x49,0xE1,0x41,0x80,0xC0,0x33,0x00,0x00, +0xC6,0x27,0x01,0x70,0x75,0x4E,0x81,0x08,0x05,0x00,0x1E,0x67,0xC1,0x13,0x00,0x00, +0x3E,0x28,0xF9,0x33,0x00,0x00,0x40,0x27,0x00,0x00,0xC0,0x29,0xF9,0x33,0x00,0x00, +0x42,0x27,0x00,0x00,0xC2,0x29,0x02,0x70,0x75,0x4E,0x00,0x70,0x75,0x4E,0x39,0x10, +0x00,0x00,0x4C,0x04,0x03,0x72,0x41,0xC0,0x41,0xB0,0x02,0x66,0x02,0x70,0x00,0x3F, +0x00,0x61,0x90,0x00,0xF9,0x41,0xFD,0x00,0x2C,0x41,0x1F,0x30,0x7C,0xB0,0x02,0x00, +0x06,0x66,0xF9,0x41,0xFD,0x00,0x88,0x5B,0x00,0x61,0x08,0xA1,0x40,0x42,0xC0,0x33, +0x00,0x00,0x74,0x29,0xC0,0x33,0x00,0x00,0x7E,0x29,0xC0,0x33,0x00,0x00,0x80,0x29, +0xC0,0x33,0x00,0x00,0x7C,0x29,0xC0,0x13,0x00,0x00,0x95,0x29,0x40,0x46,0xC0,0x33, +0x00,0x00,0x76,0x29,0xF9,0x23,0x00,0x00,0x4E,0x04,0x00,0x00,0x78,0x29,0x01,0x70, +0xC0,0x13,0x00,0x00,0x94,0x29,0xC0,0x33,0x00,0x00,0x40,0x28,0x1E,0x70,0xC0,0x13, +0x00,0x00,0x83,0x29,0xC0,0x13,0x00,0x00,0x82,0x29,0xFC,0x23,0xFC,0x00,0x62,0x43, +0x00,0x00,0xA8,0x04,0x00,0x60,0xB8,0xFC,0xFC,0x23,0xFC,0x00,0x90,0x4E,0x00,0x00, +0x40,0x2A,0xFC,0x23,0xFC,0x00,0x68,0x4E,0x00,0x00,0x3C,0x2A,0xF9,0x4E,0xFC,0x00, +0x38,0x4E,0x48,0xE7,0xFB,0x41,0x22,0x00,0xD8,0x33,0x00,0x00,0x9A,0x29,0xD0,0x33, +0x00,0x00,0x9C,0x29,0xD8,0x33,0x00,0x00,0x98,0x29,0xD8,0x33,0x00,0x00,0x96,0x29, +0xD0,0x33,0x00,0x00,0x8E,0x29,0x75,0x4E,0x04,0x00,0xA0,0x00,0xC8,0x00,0x40,0x01, +0x02,0x00,0xA0,0x00,0xC8,0x00,0x80,0x02,0x01,0x00,0x50,0x00,0x90,0x01,0x80,0x02, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x79,0x2A,0x00,0x00,0x9E,0x29,0x2D,0x3C, +0x0C,0x00,0x15,0x3E,0x6D,0x42,0x04,0x00,0x6D,0x42,0x08,0x00,0x79,0x42,0x00,0x00, +0x1E,0x17,0x7C,0xBE,0x01,0x00,0x00,0x67,0xFC,0x00,0x7C,0xBE,0x64,0x00,0x00,0x67, +0xF4,0x00,0x7C,0x28,0x00,0x00,0x2E,0x7F,0x6C,0xBC,0x28,0x00,0x0C,0x67,0x6C,0x28, +0x40,0x00,0x0C,0x20,0xF2,0x66,0x00,0x60,0x20,0x01,0xCC,0x23,0x00,0x00,0xCA,0x27, +0x2C,0x30,0x02,0x00,0xC0,0x33,0x00,0x00,0xD0,0x29,0xC0,0x33,0x00,0x00,0xB2,0x26, +0xEC,0x33,0x2C,0x01,0x00,0x00,0xD2,0x29,0xEC,0x33,0x30,0x01,0x00,0x00,0xD4,0x29, +0xEC,0x33,0x2E,0x01,0x00,0x00,0xD6,0x29,0xEC,0x33,0x32,0x01,0x00,0x00,0xD8,0x29, +0xEC,0x33,0x28,0x01,0x00,0x00,0xBE,0x29,0xEC,0x23,0x0E,0x00,0x00,0x00,0xC8,0x29, +0xEC,0x33,0x0C,0x00,0x00,0x00,0xCC,0x29,0x6C,0x0C,0x04,0x00,0x24,0x00,0x0A,0x66, +0xEC,0x33,0x0A,0x00,0x00,0x00,0xCE,0x29,0x06,0x60,0x79,0x42,0x00,0x00,0xCE,0x29, +0xEC,0x23,0x34,0x00,0x00,0x00,0xDA,0x27,0xEC,0x33,0x44,0x00,0x00,0x00,0xFA,0x26, +0xEC,0x33,0x08,0x00,0x00,0x00,0xDC,0x29,0xEC,0x33,0x1C,0x00,0x00,0x00,0xDE,0x29, +0xEC,0x33,0x46,0x00,0x00,0x00,0x00,0x2A,0xEC,0x23,0x04,0x00,0x00,0x00,0x10,0x26, +0x79,0x20,0x00,0x00,0x10,0x26,0x40,0x42,0x28,0x30,0x42,0x00,0x7C,0xC0,0x08,0x00, +0xC0,0x33,0x00,0x00,0xE0,0x29,0xEC,0x33,0x18,0x00,0x00,0x00,0x0A,0x2A,0xEC,0x23, +0x14,0x00,0x00,0x00,0x06,0x2A,0xEC,0x33,0x1A,0x00,0x00,0x00,0xF4,0x29,0xEC,0x33, +0x26,0x00,0x00,0x00,0x02,0x17,0xEC,0x33,0x26,0x01,0x00,0x00,0x04,0x17,0xD4,0x33, +0x00,0x00,0x02,0x2A,0x7C,0xBE,0x01,0x00,0x1C,0x6D,0x7C,0xBE,0x27,0x00,0x16,0x6E, +0x47,0x53,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0xFD,0x00,0x86,0x37,0x70,0x20, +0x00,0x98,0x90,0x4E,0x22,0x60,0x7C,0xBE,0x64,0x00,0x1C,0x6D,0x7C,0xBE,0x83,0x00, +0x16,0x6E,0x7C,0x9E,0x64,0x00,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0xFD,0x00, +0x22,0x38,0x70,0x20,0x00,0x98,0x90,0x4E,0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xF2,0xFF,0x06,0x60,0x6E,0x04,0x10,0x0E,0x08,0x00,0x6E,0x0C, +0x10,0x0E,0x08,0x00,0xF2,0x6E,0x2E,0x30,0x08,0x00,0xC0,0x48,0xFC,0x81,0x84,0x03, +0x40,0x3D,0xF6,0xFF,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x2E,0x30,0xF6,0xFF,0x30,0x60, +0x42,0x60,0x3C,0x30,0x08,0x07,0x6E,0x90,0x08,0x00,0x40,0x3D,0x08,0x00,0x34,0x60, +0x6E,0x04,0x08,0x07,0x08,0x00,0x2C,0x60,0x3C,0x30,0x10,0x0E,0x6E,0x90,0x08,0x00, +0x40,0x3D,0x08,0x00,0x1E,0x60,0x6E,0x04,0x10,0x0E,0x08,0x00,0x16,0x60,0x14,0x60, +0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFD,0x00,0x5A,0x39, +0x50,0x20,0xD0,0x4E,0x2E,0x30,0x08,0x00,0xC0,0x48,0xFC,0x81,0x0A,0x00,0x40,0x3D, +0xFC,0xFF,0x2E,0x30,0x08,0x00,0xC0,0x48,0xFC,0x81,0x0A,0x00,0x40,0x48,0x40,0x3D, +0xFA,0xFF,0x6E,0x30,0xFC,0xFF,0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0xA2,0x38,0x50,0x3D, +0xF8,0xFF,0x6E,0x4A,0xFA,0xFF,0x24,0x67,0x6E,0x30,0xFC,0xFF,0x48,0x52,0xC8,0xD1, +0x7C,0x22,0xFD,0x00,0xA2,0x38,0x30,0x30,0x00,0x98,0x6E,0x90,0xF8,0xFF,0xEE,0xC1, +0xFA,0xFF,0xC0,0x48,0xFC,0x81,0x0A,0x00,0x6E,0xD1,0xF8,0xFF,0x6E,0x0C,0x01,0x00, +0xF6,0xFF,0x0A,0x6F,0x2E,0x30,0xF8,0xFF,0x40,0x44,0x40,0x3D,0xF8,0xFF,0x2E,0x30, +0xF8,0xFF,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x2E,0x30,0x08,0x00,0x7C,0xD0, +0x84,0x03,0x40,0x3D,0x08,0x00,0x6E,0x0C,0x10,0x0E,0x08,0x00,0x06,0x6F,0x6E,0x04, +0x10,0x0E,0x08,0x00,0xAE,0x3E,0x08,0x00,0x00,0x61,0xF8,0xFE,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31, +0x01,0x00,0x08,0x00,0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E,0x47,0x53,0x7C,0xBE, +0x07,0x00,0x04,0x6C,0x47,0x4A,0x02,0x6C,0x47,0x42,0x79,0x20,0x00,0x00,0xCA,0x27, +0x07,0x30,0x40,0x31,0x30,0x00,0x40,0x52,0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32, +0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x03,0x79,0x20,0x00,0x00,0xA6,0x29,0x10,0x3E,0x7C,0xBE,0x01,0x00,0x04,0x6C, +0x01,0x7E,0x0E,0x60,0x79,0xBE,0x00,0x00,0xB4,0x27,0x06,0x6F,0x39,0x3E,0x00,0x00, +0xB4,0x27,0x47,0x53,0xC7,0x48,0xFC,0x8F,0x02,0x00,0x47,0xE3,0x47,0x52,0x79,0x20, +0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x04,0x00,0x79,0x2A,0x00,0x00,0xAE,0x29, +0x79,0x20,0x00,0x00,0xCA,0x27,0x07,0x30,0x40,0x31,0x32,0x00,0xC0,0x3A,0x55,0x42, +0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x0C,0x07,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x02,0x00,0x08,0x00,0x79,0x2A, +0x00,0x00,0xA2,0x29,0x1D,0x3E,0x47,0x4A,0x06,0x6D,0x7C,0xBE,0x02,0x00,0x02,0x6F, +0x47,0x42,0x15,0x3C,0x46,0x4A,0x06,0x6D,0x7C,0xBC,0x02,0x00,0x02,0x6F,0x46,0x42, +0x79,0x2A,0x00,0x00,0xAA,0x29,0x79,0x28,0x00,0x00,0xCA,0x27,0x07,0x30,0x40,0x39, +0x2A,0x00,0xC0,0x3A,0x06,0x30,0x40,0x39,0x2E,0x00,0x80,0x3A,0x9F,0x4A,0xDF,0x4C, +0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x79,0x20, +0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x79,0x20,0x00,0x00,0xA2,0x29, +0x10,0x3E,0x79,0xBE,0x00,0x00,0x00,0x27,0x04,0x6C,0x47,0x4A,0x02,0x6C,0x01,0x7E, +0x79,0x20,0x00,0x00,0xAA,0x29,0x87,0x30,0x79,0x20,0x00,0x00,0xCA,0x27,0x47,0x32, +0xC9,0xD3,0xFC,0xD3,0xFD,0x00,0x46,0x37,0x51,0x31,0x2C,0x00,0x9F,0x4A,0xDF,0x4C, +0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x79,0x20, +0x00,0x00,0xA6,0x29,0x28,0x3E,0x02,0x00,0x79,0xBE,0x00,0x00,0xBA,0x27,0x08,0x6C, +0x39,0x3E,0x00,0x00,0xBA,0x27,0x0E,0x60,0x79,0xBE,0x00,0x00,0xBE,0x27,0x06,0x6F, +0x39,0x3E,0x00,0x00,0xBE,0x27,0x79,0x28,0x00,0x00,0xCA,0x27,0x47,0x39,0x3A,0x00, +0x39,0x30,0x00,0x00,0xBA,0x27,0xC0,0x48,0xFC,0x81,0x02,0x00,0x40,0xDE,0xC7,0x48, +0xF9,0x8F,0x00,0x00,0xBA,0x27,0x47,0x39,0x3E,0x00,0x79,0x20,0x00,0x00,0x9E,0x29, +0x7C,0x31,0x01,0x00,0x04,0x00,0x79,0x2A,0x00,0x00,0xAE,0x29,0x07,0x30,0xF9,0xC1, +0x00,0x00,0xB8,0x27,0xC0,0x3A,0x07,0x30,0xF9,0xC1,0x00,0x00,0xBA,0x27,0x80,0x3A, +0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x79,0x20,0x00,0x00,0xA2,0x29, +0x10,0x3E,0x47,0x53,0x7C,0xBE,0x06,0x00,0x04,0x6C,0x47,0x4A,0x04,0x6C,0x02,0x70, +0x02,0x60,0x07,0x30,0x00,0x3E,0x79,0x20,0x00,0x00,0xCA,0x27,0x07,0x30,0x40,0x31, +0x3C,0x00,0x40,0x52,0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32,0x79,0x20,0x00,0x00, +0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x79,0x20,0x00,0x00,0xA2,0x29, +0x10,0x3E,0x79,0xBE,0x00,0x00,0x00,0x27,0x04,0x6C,0x47,0x4A,0x04,0x6C,0x01,0x70, +0x02,0x60,0x07,0x30,0x00,0x3E,0x79,0x20,0x00,0x00,0xAA,0x29,0x87,0x30,0x79,0x20, +0x00,0x00,0xCA,0x27,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0xFD,0x00,0x46,0x37,0x51,0x31, +0x38,0x00,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x9F,0x4A, +0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03, +0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x79,0x20,0x00,0x00, +0xA2,0x29,0x10,0x3E,0x7C,0xBE,0x04,0x00,0x04,0x6E,0x47,0x4A,0x02,0x6C,0x47,0x42, +0x79,0x20,0x00,0x00,0xCA,0x27,0x07,0x30,0x40,0x31,0x24,0x00,0x79,0x22,0x00,0x00, +0xAA,0x29,0x80,0x32,0xB9,0x4E,0xFC,0x00,0x00,0xCA,0x9F,0x4A,0xDF,0x4C,0x80,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0x79,0x20,0x00,0x00, +0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E, +0x79,0x2A,0x00,0x00,0xCA,0x27,0x6D,0x0C,0x02,0x00,0x24,0x00,0x10,0x66,0x7C,0xBE, +0x18,0x00,0x06,0x6E,0x7C,0xBE,0x01,0x00,0x02,0x6C,0x01,0x7E,0x0E,0x60,0x7C,0xBE, +0x0C,0x00,0x06,0x6E,0x7C,0xBE,0x01,0x00,0x02,0x6C,0x01,0x7E,0x79,0x20,0x00,0x00, +0xAA,0x29,0x07,0x30,0x80,0x30,0x40,0x53,0x40,0x3B,0x20,0x00,0xB9,0x4E,0xFC,0x00, +0x00,0xCA,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x03,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00, +0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E,0x79,0xBE,0x00,0x00,0x00,0x27,0x04,0x6C, +0x47,0x4A,0x02,0x6C,0x01,0x7E,0x79,0x20,0x00,0x00,0xAA,0x29,0x87,0x30,0x79,0x20, +0x00,0x00,0xCA,0x27,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0xFD,0x00,0x46,0x37,0x51,0x31, +0x1E,0x00,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFE,0xFF, +0xE7,0x48,0x04,0x01,0x79,0x20,0x00,0x00,0xA2,0x29,0xBC,0x30,0x01,0x00,0x79,0x2A, +0x00,0x00,0xA6,0x29,0xDD,0x33,0x00,0x00,0x40,0x27,0xD5,0x33,0x00,0x00,0x42,0x27, +0x79,0x4A,0x00,0x00,0xE6,0x27,0x5E,0x66,0xFC,0x33,0x01,0x00,0x00,0x00,0x44,0x27, +0xB9,0x4E,0xFD,0x00,0xE0,0x02,0xB9,0x4E,0xFC,0x00,0xE4,0xA8,0x40,0x3D,0xFE,0xFF, +0x7C,0xB0,0x01,0x00,0xF0,0x66,0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x01,0x00, +0x08,0x00,0x7C,0x3B,0x01,0x00,0x04,0x00,0x39,0x30,0x00,0x00,0xC6,0x27,0x7C,0xC0, +0xFF,0x00,0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32,0x79,0x2A,0x00,0x00,0xAE,0x29, +0xF9,0x3A,0x00,0x00,0xC0,0x29,0xB9,0x3A,0x00,0x00,0xC2,0x29,0xB9,0x4E,0xFD,0x00, +0xAE,0x02,0x00,0x60,0x8C,0x00,0xB9,0x4E,0xFC,0x00,0xE4,0xA8,0x40,0x3D,0xFE,0xFF, +0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x01,0x00,0x04,0x00,0x6D,0x42,0x08,0x00, +0x2E,0x30,0xFE,0xFF,0x54,0x60,0x6D,0x42,0x04,0x00,0x64,0x60,0x6D,0x42,0x04,0x00, +0x7C,0x3B,0x01,0x00,0x08,0x00,0x39,0x30,0x00,0x00,0xC6,0x27,0x7C,0xC0,0xFF,0x00, +0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32,0x46,0x60,0x79,0x2A,0x00,0x00,0xAE,0x29, +0xF9,0x3A,0x00,0x00,0xC0,0x29,0xB9,0x3A,0x00,0x00,0xC2,0x29,0x32,0x60,0x7C,0x3B, +0x01,0x00,0x08,0x00,0x79,0x2A,0x00,0x00,0xAE,0x29,0xF9,0x3A,0x00,0x00,0xC0,0x29, +0xB9,0x3A,0x00,0x00,0xC2,0x29,0x18,0x60,0x16,0x60,0x40,0x4A,0xA8,0x67,0x7C,0xB0, +0x01,0x00,0xA8,0x67,0x7C,0xB0,0x02,0x00,0xC0,0x67,0x7C,0xB0,0x03,0x00,0xCE,0x67, +0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20, +0x00,0x00,0xA2,0x29,0x50,0x4A,0x10,0x66,0x79,0x4A,0x00,0x00,0x44,0x27,0x08,0x67, +0xFC,0x33,0x01,0x00,0x00,0x00,0x44,0x27,0xB9,0x4E,0xFD,0x00,0xE0,0x02,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xB9,0x4E,0xFD,0x00,0xAE,0x02,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x20,0x00,0x00,0xAA,0x29,0xB9,0x30, +0x00,0x00,0x46,0x27,0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x01,0x00,0x08,0x00, +0x7C,0x3B,0x01,0x00,0x04,0x00,0x79,0x2A,0x00,0x00,0xAE,0x29,0xF9,0x3A,0x00,0x00, +0x40,0x27,0xB9,0x3A,0x00,0x00,0x42,0x27,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0x79,0x4A, +0x00,0x00,0xC8,0x27,0x2C,0x66,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00, +0x08,0x00,0xB9,0x4E,0xFC,0x00,0x1A,0xA8,0x7C,0xB0,0x01,0x00,0xF4,0x66,0x39,0x30, +0x00,0x00,0xC6,0x27,0x7C,0xC0,0xFF,0x00,0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32, +0x4E,0x60,0xB9,0x4E,0xFC,0x00,0x1A,0xA8,0x40,0x3D,0xFE,0xFF,0x79,0x20,0x00,0x00, +0x9E,0x29,0x6E,0x31,0xFE,0xFF,0x08,0x00,0x6E,0x0C,0x01,0x00,0xFE,0xFF,0x14,0x66, +0x39,0x30,0x00,0x00,0xC6,0x27,0x7C,0xC0,0xFF,0x00,0x79,0x22,0x00,0x00,0xAA,0x29, +0x80,0x32,0x1C,0x60,0x6E,0x0C,0x02,0x00,0xFE,0xFF,0x14,0x66,0x39,0x30,0x00,0x00, +0xC6,0x27,0x7C,0xC0,0xFF,0x00,0x79,0x22,0x00,0x00,0xAA,0x29,0x40,0x33,0x02,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF4,0xFF,0x7C,0x3D,0xFF,0x00,0xF8,0xFF,0x79,0x20, +0x00,0x00,0xA2,0x29,0x50,0x3D,0xFC,0xFF,0x6E,0x4A,0xFC,0xFF,0x10,0x6C,0x2E,0x30, +0xFC,0xFF,0x40,0x44,0x40,0x3D,0xFC,0xFF,0x7C,0x3D,0xFF,0xFF,0xF8,0xFF,0x79,0x4A, +0x00,0x00,0x3A,0x28,0x68,0x66,0x79,0x42,0x00,0x00,0xC6,0x27,0x6E,0x42,0xFE,0xFF, +0x2C,0x60,0xB9,0x4E,0xFC,0x00,0x24,0xA8,0x40,0x4A,0xF6,0x67,0x39,0x30,0x00,0x00, +0xC6,0x27,0x6E,0xC0,0xF8,0xFF,0xC0,0x33,0x00,0x00,0xC6,0x27,0x6E,0x32,0xFE,0xFF, +0xC9,0xD3,0xF9,0xD3,0x00,0x00,0xAA,0x29,0x80,0x32,0x6E,0x52,0xFE,0xFF,0x2E,0x30, +0xFE,0xFF,0x6E,0xB0,0xFC,0xFF,0x0A,0x6C,0x79,0x0C,0x0D,0x00,0x00,0x00,0xC6,0x27, +0xC0,0x66,0x79,0x0C,0x0D,0x00,0x00,0x00,0xC6,0x27,0x04,0x66,0x6E,0x53,0xFE,0xFF, +0x79,0x20,0x00,0x00,0x9E,0x29,0x6E,0x31,0xFE,0xFF,0x08,0x00,0x42,0x60,0x6E,0x42, +0xFE,0xFF,0x1C,0x60,0x39,0x30,0x00,0x00,0xC6,0x27,0x6E,0xC0,0xF8,0xFF,0x6E,0x32, +0xFE,0xFF,0xC9,0xD3,0xF9,0xD3,0x00,0x00,0xAA,0x29,0x80,0x32,0x6E,0x52,0xFE,0xFF, +0x2E,0x30,0xFE,0xFF,0x6E,0xB0,0xFC,0xFF,0x0A,0x6C,0xB9,0x4E,0xFC,0x00,0x24,0xA8, +0x40,0x4A,0xD0,0x66,0x79,0x20,0x00,0x00,0x9E,0x29,0x6E,0x31,0xFE,0xFF,0x08,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31, +0x01,0x00,0x08,0x00,0xB9,0x4E,0xFC,0x00,0xA2,0xA6,0x00,0x3F,0x79,0x20,0x00,0x00, +0xAA,0x29,0x9F,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03, +0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x79,0x20,0x00,0x00, +0xA2,0x29,0x10,0x3E,0x47,0x53,0x7C,0xBE,0x03,0x00,0x04,0x6E,0x40,0x42,0x02,0x60, +0x01,0x70,0x47,0x4A,0x04,0x6D,0x41,0x42,0x02,0x60,0x01,0x72,0x41,0x80,0x02,0x67, +0x47,0x42,0x79,0x20,0x00,0x00,0xCA,0x27,0x07,0x30,0x40,0x31,0x28,0x01,0x40,0x52, +0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0x79,0x20,0x00,0x00,0x9E,0x29, +0x7C,0x31,0x01,0x00,0x08,0x00,0x79,0x2A,0x00,0x00,0xA2,0x29,0x2D,0x3E,0x02,0x00, +0x79,0x20,0x00,0x00,0xAA,0x29,0x87,0x30,0x47,0x53,0x15,0x30,0x24,0x60,0x36,0x60, +0xC7,0x33,0x00,0x00,0xE6,0x27,0x2E,0x60,0xC7,0x33,0x00,0x00,0x3C,0x28,0x26,0x60, +0xC7,0x33,0x00,0x00,0xC8,0x27,0x1E,0x60,0xC7,0x33,0x00,0x00,0x3A,0x28,0x16,0x60, +0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFD,0x00, +0x6E,0x39,0x50,0x20,0xD0,0x4E,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31, +0x01,0x00,0x08,0x00,0x79,0x2A,0x00,0x00,0xAA,0x29,0x79,0x20,0x00,0x00,0xA2,0x29, +0x10,0x30,0x24,0x60,0x36,0x60,0xB9,0x3A,0x00,0x00,0xE6,0x27,0x2E,0x60,0xB9,0x3A, +0x00,0x00,0x3C,0x28,0x26,0x60,0xB9,0x3A,0x00,0x00,0xC8,0x27,0x1E,0x60,0xB9,0x3A, +0x00,0x00,0x3A,0x28,0x16,0x60,0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5, +0x40,0x30,0xFC,0xD1,0xFD,0x00,0x82,0x39,0x50,0x20,0xD0,0x4E,0x9F,0x4A,0xDF,0x4C, +0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x79,0x28, +0x00,0x00,0xCA,0x27,0x79,0x2A,0x00,0x00,0xAA,0x29,0x79,0x20,0x00,0x00,0xA2,0x29, +0x50,0x4A,0x08,0x66,0x55,0x42,0x6C,0x42,0x22,0x00,0x0A,0x60,0xBC,0x3A,0x01,0x00, +0x7C,0x39,0x01,0x00,0x22,0x00,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00, +0x08,0x00,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x79,0x20,0x00,0x00,0xCA,0x27,0x79,0x22,0x00,0x00,0xA2,0x29,0x51,0x31,0xA4,0x00, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x79,0x28,0x00,0x00, +0xCA,0x27,0x79,0x20,0x00,0x00,0xA2,0x29,0x50,0x39,0x02,0x00,0x64,0x67,0x79,0x2A, +0x00,0x00,0xA6,0x29,0xBC,0x3E,0x01,0x00,0x0D,0x2F,0x00,0x61,0x7C,0x00,0x8F,0x58, +0x1D,0x3C,0x46,0x4A,0x04,0x6C,0x40,0x42,0x02,0x60,0x06,0x30,0x40,0x39,0x2C,0x01, +0x1D,0x3C,0x46,0x4A,0x04,0x6C,0x40,0x42,0x02,0x60,0x06,0x30,0x40,0x39,0x30,0x01, +0x1D,0x3C,0x79,0xBC,0x00,0x00,0xE6,0x26,0x08,0x6F,0x39,0x30,0x00,0x00,0xE6,0x26, +0x02,0x60,0x06,0x30,0x40,0x39,0x2E,0x01,0x15,0x3C,0x79,0xBC,0x00,0x00,0xE8,0x26, +0x08,0x6F,0x39,0x30,0x00,0x00,0xE8,0x26,0x02,0x60,0x06,0x30,0x40,0x39,0x32,0x01, +0x1C,0x60,0x6C,0x42,0x02,0x00,0x6C,0x42,0x2C,0x01,0x6C,0x42,0x30,0x01,0x79,0x39, +0x00,0x00,0xE6,0x26,0x2E,0x01,0x79,0x39,0x00,0x00,0xE8,0x26,0x32,0x01,0x9F,0x4A, +0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x08,0x00,0x8C,0x58,0x15,0x30,0x54,0xB0,0x06,0x6F, +0x15,0x3E,0x94,0x3A,0x87,0x38,0x8D,0x54,0x8C,0x54,0x2E,0x3C,0x0C,0x00,0x46,0x4A, +0x06,0x66,0x15,0x30,0x54,0xB0,0x0C,0x6D,0x7C,0xBC,0x01,0x00,0x0C,0x66,0x15,0x30, +0x54,0xB0,0x06,0x6F,0x15,0x3E,0x94,0x3A,0x87,0x38,0x9F,0x4A,0xDF,0x4C,0xC0,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x39,0x2F,0x00,0x00, +0xA6,0x29,0xA4,0x61,0x8F,0x58,0xBC,0x3E,0x01,0x00,0x39,0x2F,0x00,0x00,0xA6,0x29, +0x97,0x50,0x94,0x61,0x8F,0x58,0x79,0x42,0x00,0x00,0x0E,0x2A,0xB9,0x4E,0xFD,0x00, +0xA0,0x03,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x39,0x2F, +0x00,0x00,0xA6,0x29,0x00,0x61,0x72,0xFF,0x8F,0x58,0xBC,0x3E,0x01,0x00,0x39,0x2F, +0x00,0x00,0xA6,0x29,0x97,0x50,0x00,0x61,0x60,0xFF,0x8F,0x58,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0x0E,0x2A,0xB9,0x4E,0xFD,0x00,0xA0,0x03,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x03,0xBC,0x3E,0x01,0x00,0x39,0x2F,0x00,0x00,0xA6,0x29, +0x00,0x61,0x36,0xFF,0x8F,0x58,0x79,0x20,0x00,0x00,0xCA,0x27,0x28,0x3E,0x1E,0x00, +0x07,0x30,0x7C,0xC0,0x01,0x00,0xC0,0x33,0x00,0x00,0xB2,0x29,0x07,0x30,0x7C,0xC0, +0x02,0x00,0xC0,0x33,0x00,0x00,0xB4,0x29,0x07,0x30,0x7C,0xC0,0x04,0x00,0xC0,0x33, +0x00,0x00,0xB6,0x29,0x07,0x30,0x7C,0xC0,0x08,0x00,0xC0,0x33,0x00,0x00,0xB8,0x29, +0x79,0x2A,0x00,0x00,0xA6,0x29,0xDD,0x33,0x00,0x00,0xC0,0x29,0xDD,0x33,0x00,0x00, +0xC2,0x29,0xDD,0x33,0x00,0x00,0xC4,0x29,0xD5,0x33,0x00,0x00,0xC6,0x29,0xB9,0x4E, +0xFC,0x00,0xB0,0xFC,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xD8,0xFF,0xE7,0x48,0x0C,0x03,0x7C,0x2A,0xFD,0x00,0xF2,0x35,0x7C,0x28,0x00,0x00, +0xE6,0x26,0x47,0x42,0x04,0x60,0xDD,0x38,0x47,0x52,0x7C,0xBE,0x2D,0x00,0xF6,0x6D, +0x7C,0x2A,0xFD,0x00,0x64,0x36,0x7C,0x28,0x00,0x00,0x8C,0x26,0x47,0x42,0x04,0x60, +0xDD,0x38,0x47,0x52,0x7C,0xBE,0x2D,0x00,0xF6,0x6D,0xF9,0x33,0xFD,0x00,0x4E,0x33, +0x00,0x00,0xA8,0x26,0x7C,0x2A,0xFD,0x00,0x4C,0x36,0x7C,0x28,0x00,0x00,0xA8,0x27, +0x47,0x42,0x04,0x60,0xDD,0x38,0x47,0x52,0x7C,0xBE,0x0C,0x00,0xF6,0x6D,0x7C,0x22, +0xFD,0x00,0x2C,0x41,0x7C,0x20,0x00,0x00,0xFE,0x68,0x2C,0x70,0xD9,0x30,0xC8,0x51, +0xFC,0xFF,0x7C,0x22,0xFD,0x00,0x88,0x5B,0x7C,0x20,0x00,0x00,0xD4,0x87,0x2C,0x70, +0xD9,0x30,0xC8,0x51,0xFC,0xFF,0xFC,0x23,0x00,0x00,0xFE,0x68,0x00,0x00,0xD6,0x27, +0xB9,0x4E,0xFC,0x00,0x2E,0xA7,0x40,0x3D,0xD8,0xFF,0x6E,0x0C,0x02,0x00,0xD8,0xFF, +0x22,0x66,0xFC,0x33,0x7F,0x02,0x00,0x00,0xE6,0x26,0xFC,0x33,0xA9,0x00,0x00,0x00, +0xEC,0x26,0xFC,0x33,0x04,0x00,0x00,0x00,0x00,0x27,0xFC,0x33,0x02,0x00,0x00,0x00, +0x94,0x26,0x6C,0x60,0x6E,0x0C,0x03,0x00,0xD8,0xFF,0x64,0x66,0xFC,0x33,0x7F,0x02, +0x00,0x00,0xE6,0x26,0xFC,0x33,0x8F,0x01,0x00,0x00,0xE8,0x26,0xFC,0x33,0x74,0x01, +0x00,0x00,0xEC,0x26,0xFC,0x33,0x02,0x00,0x00,0x00,0x00,0x27,0x79,0x42,0x00,0x00, +0x2C,0x27,0xFC,0x33,0x02,0x00,0x00,0x00,0x34,0x27,0xFC,0x33,0x01,0x00,0x00,0x00, +0x8E,0x26,0xFC,0x33,0x01,0x00,0x00,0x00,0x94,0x26,0x79,0x42,0x00,0x00,0x96,0x26, +0xFC,0x33,0x09,0x00,0x00,0x00,0x00,0x69,0xFC,0x33,0x0A,0x00,0x00,0x00,0xD6,0x87, +0x79,0x0A,0x01,0x00,0x00,0x00,0x40,0x69,0x79,0x00,0x01,0x00,0x00,0x00,0x16,0x88, +0x01,0x70,0xC0,0x33,0x00,0x00,0x56,0x7F,0x79,0x22,0x00,0x00,0x9E,0x29,0x40,0x33, +0x0C,0x00,0xFC,0x23,0x00,0x00,0x2E,0x7F,0x00,0x00,0xCA,0x27,0xB9,0x42,0x00,0x00, +0x6E,0x7F,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xE4,0x27,0xB9,0x4E,0xFC,0x00,0xF6,0xDE, +0xB9,0x4E,0xFC,0x00,0x5C,0xD4,0x79,0x42,0x00,0x00,0xE6,0x27,0x79,0x42,0x00,0x00, +0x3C,0x28,0x79,0x42,0x00,0x00,0xC8,0x27,0x79,0x42,0x00,0x00,0x3A,0x28,0xFC,0x33, +0x01,0x00,0x00,0x00,0x44,0x27,0x39,0x30,0x00,0x00,0xE6,0x26,0xC0,0x48,0xFC,0x81, +0x02,0x00,0xC0,0x33,0x00,0x00,0x40,0x27,0x39,0x30,0x00,0x00,0xE8,0x26,0xC0,0x48, +0xFC,0x81,0x02,0x00,0xC0,0x33,0x00,0x00,0x42,0x27,0xB9,0x4E,0xFC,0x00,0xCA,0xA6, +0x79,0x2D,0x00,0x00,0xA2,0x29,0xFC,0xFF,0x79,0x2D,0x00,0x00,0xAA,0x29,0xF8,0xFF, +0x79,0x2D,0x00,0x00,0x9E,0x29,0xF4,0xFF,0xEE,0x41,0xE6,0xFF,0xC8,0x23,0x00,0x00, +0x9E,0x29,0xEE,0x41,0xE2,0xFF,0xC8,0x23,0x00,0x00,0xA2,0x29,0xEE,0x41,0xDA,0xFF, +0xC8,0x23,0x00,0x00,0xAA,0x29,0x7C,0x3D,0x01,0x00,0xE4,0xFF,0x7C,0x28,0x00,0x00, +0x48,0x27,0xEE,0x4B,0xDC,0xFF,0x47,0x42,0x16,0x60,0x47,0x3D,0xE2,0xFF,0xB9,0x4E, +0xFD,0x00,0xDE,0x2E,0xD5,0x38,0xED,0x38,0x02,0x00,0xED,0x38,0x04,0x00,0x47,0x52, +0x79,0xBE,0x00,0x00,0x00,0x27,0xE2,0x6D,0xEE,0x23,0xF4,0xFF,0x00,0x00,0x9E,0x29, +0xEE,0x23,0xFC,0xFF,0x00,0x00,0xA2,0x29,0xEE,0x23,0xF8,0xFF,0x00,0x00,0xAA,0x29, +0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x0C,0x03,0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x06,0x00,0x04,0x00,0x7C,0x3B, +0x2D,0x00,0x08,0x00,0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x79,0x2A,0x00,0x00, +0xAE,0x29,0x79,0x20,0x00,0x00,0xA2,0x29,0x50,0x4A,0x1C,0x66,0x7C,0x28,0x00,0x00, +0xA8,0x27,0x47,0x42,0x04,0x60,0xDC,0x3A,0x47,0x52,0x7C,0xBE,0x0C,0x00,0xF6,0x6D, +0x7C,0x28,0x00,0x00,0xE6,0x26,0x2C,0x60,0xF9,0x3A,0x00,0x00,0xD2,0x29,0xF9,0x3A, +0x00,0x00,0xD4,0x29,0xF9,0x3A,0x00,0x00,0xD6,0x29,0xF9,0x3A,0x00,0x00,0xD8,0x29, +0x04,0x7E,0x04,0x60,0x5D,0x42,0x47,0x52,0x7C,0xBE,0x0C,0x00,0xF6,0x6D,0x7C,0x28, +0x00,0x00,0x8C,0x26,0x79,0x2A,0x00,0x00,0xAA,0x29,0x47,0x42,0x04,0x60,0xDC,0x3A, +0x47,0x52,0x7C,0xBE,0x2D,0x00,0xF6,0x6D,0x79,0x20,0x00,0x00,0xA2,0x29,0x50,0x4A, +0x26,0x67,0xB9,0x4E,0xFC,0x00,0x60,0x4E,0x7C,0xC0,0x01,0x00,0x0E,0x67,0x79,0x20, +0x00,0x00,0xAA,0x29,0x7C,0x31,0x88,0x13,0x0C,0x00,0x0C,0x60,0x79,0x20,0x00,0x00, +0xAA,0x29,0x7C,0x31,0xE8,0x03,0x0C,0x00,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xF8,0xFF,0xB9,0x4A,0x00,0x00,0x6E,0x7F,0x32,0x67,0xF9,0x23, +0x00,0x00,0x6E,0x7F,0x00,0x00,0xCA,0x27,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x2D, +0x40,0x00,0xFC,0xFF,0xB9,0x2E,0x00,0x00,0xCA,0x27,0x3C,0x3F,0x49,0x00,0xB9,0x4E, +0xFC,0x00,0xF6,0xFA,0x8F,0x54,0xEE,0x23,0xFC,0xFF,0x00,0x00,0xCA,0x27,0xD8,0x66, +0xB9,0x4E,0xFC,0x00,0xFC,0xA7,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x03,0x79,0x2A,0x00,0x00,0xCA,0x27,0x2D,0x3E,0x30,0x00,0x7C,0xBE,0x06,0x00, +0x10,0x6C,0x47,0x30,0xC8,0xD1,0x7C,0x22,0xFD,0x00,0x50,0x33,0x30,0x30,0x00,0x98, +0x04,0x60,0x2D,0x30,0xA4,0x00,0xC0,0x33,0x00,0x00,0xBC,0x29,0x2D,0x3E,0x2C,0x00, +0x07,0x30,0x7C,0xC0,0x01,0x00,0xC0,0x33,0x00,0x00,0xB2,0x29,0x07,0x30,0x7C,0xC0, +0x02,0x00,0xC0,0x33,0x00,0x00,0xB4,0x29,0x07,0x30,0x7C,0xC0,0x04,0x00,0xC0,0x33, +0x00,0x00,0xB6,0x29,0x07,0x30,0x7C,0xC0,0x08,0x00,0xC0,0x33,0x00,0x00,0xB8,0x29, +0x6D,0x0C,0x01,0x00,0x32,0x00,0x1E,0x66,0x00,0x61,0x3C,0x04,0x79,0x2A,0x00,0x00, +0xCA,0x27,0x2D,0x30,0x2A,0x00,0x6D,0x80,0x2E,0x00,0x7C,0xC0,0x01,0x00,0x04,0x67, +0x00,0x61,0x92,0x16,0x04,0x60,0x00,0x61,0x32,0x11,0x9F,0x4A,0xDF,0x4C,0x80,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xC4,0xFF,0xE7,0x48,0x1C,0x03,0x79,0x26,0x00,0x00, +0xCA,0x27,0x6B,0x3D,0x30,0x00,0xDE,0xFF,0x6B,0x3D,0x2C,0x00,0xDC,0xFF,0x6B,0x3D, +0x32,0x00,0xDA,0xFF,0x6B,0x3D,0x2A,0x00,0xD8,0xFF,0x6B,0x3D,0x2E,0x00,0xD6,0xFF, +0x6B,0x42,0x30,0x00,0x6B,0x37,0x38,0x00,0x2C,0x00,0x7C,0x37,0x01,0x00,0x32,0x00, +0x6B,0x42,0x2A,0x00,0x6B,0x42,0x2E,0x00,0xFC,0x33,0x01,0x00,0x00,0x00,0xD0,0x29, +0x6B,0x3D,0x3E,0x00,0xCA,0xFF,0x79,0x20,0x00,0x00,0x9E,0x29,0x68,0x3D,0x02,0x00, +0xF8,0xFF,0x39,0x20,0x00,0x00,0xA6,0x29,0x40,0x2D,0xCC,0xFF,0x40,0x2D,0xC4,0xFF, +0xEE,0x41,0xE0,0xFF,0xC8,0x23,0x00,0x00,0xA6,0x29,0x6E,0x42,0xFE,0xFF,0x00,0x60, +0x88,0x00,0x6E,0x2A,0xC4,0xFF,0x5D,0x3D,0xF6,0xFF,0x5D,0x3D,0xF4,0xFF,0x4D,0x2D, +0xC4,0xFF,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x30,0x3C,0x00,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0xFD,0x00,0x96,0x39,0x50,0x28,0x5C,0x3D,0xFA,0xFF,0x6E,0x42,0xFC,0xFF, +0x48,0x60,0x79,0x20,0x00,0x00,0x9E,0x29,0x1C,0x30,0x40,0x31,0x02,0x00,0x40,0x3D, +0xC8,0xFF,0xEE,0x4B,0xE0,0xFF,0x47,0x42,0x1A,0x60,0x1C,0x30,0xEE,0xC1,0xCA,0xFF, +0x6E,0xD0,0xF6,0xFF,0xC0,0x3A,0x1C,0x30,0xEE,0xC1,0xCA,0xFF,0x6E,0xD0,0xF4,0xFF, +0xC0,0x3A,0x47,0x52,0x6E,0xBE,0xC8,0xFF,0xE0,0x6D,0x4C,0x2D,0xD0,0xFF,0x00,0x61, +0x7A,0xFE,0x6E,0x28,0xD0,0xFF,0x6E,0x52,0xFC,0xFF,0x2E,0x30,0xFC,0xFF,0x6E,0xB0, +0xFA,0xFF,0xAE,0x6D,0x6E,0x52,0xFE,0xFF,0x2E,0x30,0xFE,0xFF,0x6E,0xB0,0xF8,0xFF, +0x00,0x6D,0x70,0xFF,0xEE,0x23,0xCC,0xFF,0x00,0x00,0xA6,0x29,0x79,0x26,0x00,0x00, +0xCA,0x27,0x6E,0x37,0xDE,0xFF,0x30,0x00,0x6E,0x37,0xDC,0xFF,0x2C,0x00,0x6E,0x37, +0xDA,0xFF,0x32,0x00,0x6E,0x37,0xD8,0xFF,0x2A,0x00,0x6E,0x37,0xD6,0xFF,0x2E,0x00, +0x9F,0x4A,0xDF,0x4C,0x80,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x00,0x61, +0x24,0x05,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x0C,0x01,0x79,0x20, +0x00,0x00,0x9E,0x29,0x68,0x3D,0x0A,0x00,0xFE,0xFF,0x79,0x2A,0x00,0x00,0xA6,0x29, +0x79,0x28,0x00,0x00,0xCA,0x27,0x6E,0x4A,0xFE,0xFF,0x00,0x6F,0x82,0x01,0x6E,0x0C, +0x0B,0x00,0xFE,0xFF,0x00,0x6C,0x78,0x01,0x6E,0x53,0xFE,0xFF,0x2E,0x30,0xFE,0xFF, +0x00,0x60,0x58,0x01,0xB9,0x4E,0xFC,0x00,0x6E,0xB6,0x79,0x20,0x00,0x00,0xCA,0x27, +0x68,0x0C,0x01,0x00,0x22,0x00,0x46,0x66,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xBC,0x29, +0x79,0x2A,0x00,0x00,0xA6,0x29,0x2D,0x30,0x06,0x00,0x40,0x3B,0x0E,0x00,0x40,0x3B, +0x0A,0x00,0x2D,0x30,0x02,0x00,0x40,0x3B,0x12,0x00,0x40,0x3B,0x06,0x00,0x6D,0x3B, +0x04,0x00,0x08,0x00,0x15,0x30,0x40,0x3B,0x10,0x00,0x40,0x3B,0x0C,0x00,0x79,0x20, +0x00,0x00,0x9E,0x29,0x7C,0x31,0x05,0x00,0x02,0x00,0x00,0x61,0x2A,0x02,0x00,0x60, +0x0E,0x01,0x00,0x61,0xC4,0x09,0x00,0x60,0x06,0x01,0xD5,0x33,0x00,0x00,0x38,0x26, +0xED,0x33,0x02,0x00,0x00,0x00,0x3E,0x26,0xED,0x33,0x08,0x00,0x00,0x00,0x3A,0x26, +0xB9,0x3E,0x00,0x00,0xEE,0x26,0x39,0x3F,0x00,0x00,0xEC,0x26,0x39,0x3F,0x00,0x00, +0x3A,0x26,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0xC0,0x33,0x00,0x00,0x40,0x26, +0xFC,0x33,0x10,0x0E,0x00,0x00,0x14,0x26,0x79,0x42,0x00,0x00,0x0E,0x26,0xFC,0x33, +0x10,0x0E,0x00,0x00,0x1C,0x26,0x00,0x61,0xF6,0x09,0x00,0x61,0xDC,0x0A,0x00,0x60, +0xAE,0x00,0xD5,0x33,0x00,0x00,0x38,0x26,0xED,0x33,0x02,0x00,0x00,0x00,0x3E,0x26, +0xED,0x33,0x04,0x00,0x00,0x00,0x3A,0x26,0xED,0x33,0x06,0x00,0x00,0x00,0x40,0x26, +0x6C,0x0C,0x02,0x00,0x2A,0x01,0x12,0x6C,0x39,0x30,0x00,0x00,0xE8,0x26,0x79,0x90, +0x00,0x00,0x40,0x26,0xC0,0x33,0x00,0x00,0x40,0x26,0xFC,0x33,0x10,0x0E,0x00,0x00, +0x14,0x26,0x79,0x42,0x00,0x00,0x0E,0x26,0x79,0x42,0x00,0x00,0x1C,0x26,0x00,0x61, +0x9E,0x09,0x00,0x61,0x84,0x0A,0x56,0x60,0x00,0x61,0xF4,0x09,0x50,0x60,0x6C,0x3D, +0x2A,0x00,0xFC,0xFF,0x6C,0x42,0x2A,0x00,0x6C,0x3D,0x2E,0x00,0xFA,0xFF,0x6C,0x42, +0x2E,0x00,0x00,0x61,0x4A,0x05,0x79,0x28,0x00,0x00,0xCA,0x27,0x6E,0x39,0xFC,0xFF, +0x2A,0x00,0x6E,0x39,0xFA,0xFF,0x2E,0x00,0x24,0x60,0x00,0x61,0x32,0x05,0x1E,0x60, +0xB9,0x4E,0xFC,0x00,0x42,0xEA,0x16,0x60,0x14,0x60,0x7C,0xB0,0x09,0x00,0x0E,0x62, +0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFD,0x00,0xAE,0x39,0x50,0x20,0xD0,0x4E,0x9F,0x4A, +0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0x79,0x2A,0x00,0x00,0xAA,0x29,0x79,0x28,0x00,0x00,0xCA,0x27,0x2C,0x30,0x30,0x00, +0x40,0x52,0xC0,0x3A,0x6C,0x30,0x2C,0x00,0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0x66,0x37, +0xD0,0x3A,0x39,0x30,0x00,0x00,0xBE,0x29,0x40,0x52,0x80,0x3A,0x79,0x2A,0x00,0x00, +0xAE,0x29,0xEC,0x3A,0x32,0x00,0x55,0x42,0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B, +0x01,0x00,0x04,0x00,0x7C,0x3B,0x03,0x00,0x08,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x79,0x2A,0x00,0x00, +0xAA,0x29,0x79,0x28,0x00,0x00,0xCA,0x27,0xEC,0x3A,0x3C,0x00,0x6C,0x30,0x38,0x00, +0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0x66,0x37,0xD0,0x3A,0x39,0x30,0x00,0x00,0xBE,0x29, +0x40,0x52,0x80,0x3A,0x79,0x2A,0x00,0x00,0xAE,0x29,0x5D,0x42,0xAC,0x3A,0x3A,0x00, +0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x03,0x00,0x08,0x00,0x7C,0x3B,0x01,0x00, +0x04,0x00,0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0x00,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x79,0x2A,0x00,0x00, +0xAA,0x29,0x79,0x28,0x00,0x00,0xCA,0x27,0xEC,0x3A,0x24,0x00,0x6C,0x30,0x1E,0x00, +0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0x66,0x37,0xD0,0x3A,0x2C,0x30,0x20,0x00,0x40,0x52, +0xC0,0x3A,0x39,0x30,0x00,0x00,0xBE,0x29,0x40,0x52,0xC0,0x3A,0xAC,0x3A,0x22,0x00, +0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x05,0x00,0x08,0x00,0x9F,0x4A,0xDF,0x4C, +0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x04,0x01,0x79,0x42, +0x00,0x00,0xBA,0x29,0x79,0x2D,0x00,0x00,0xA6,0x29,0xFA,0xFF,0x79,0x20,0x00,0x00, +0x9E,0x29,0x28,0x30,0x02,0x00,0x40,0x53,0x40,0x3D,0xFE,0xFF,0x52,0x60,0x6E,0x0C, +0x01,0x00,0xFE,0xFF,0x08,0x66,0xFC,0x33,0x01,0x00,0x00,0x00,0xBA,0x29,0x6E,0x2A, +0xFA,0xFF,0xDD,0x33,0x00,0x00,0xC0,0x29,0xDD,0x33,0x00,0x00,0xC2,0x29,0xD5,0x33, +0x00,0x00,0xC4,0x29,0xED,0x33,0x02,0x00,0x00,0x00,0xC6,0x29,0x4D,0x2D,0xFA,0xFF, +0x79,0x4A,0x00,0x00,0xD0,0x29,0x0E,0x67,0x26,0x61,0x40,0x4A,0x06,0x67,0xB9,0x4E, +0xFC,0x00,0x44,0xA2,0x06,0x60,0xB9,0x4E,0xFC,0x00,0x44,0xA2,0x6E,0x53,0xFE,0xFF, +0x6E,0x4A,0xFE,0xFF,0xA8,0x6E,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x0C,0x01,0x00,0x60,0x36,0x01,0x2E,0x30,0xFA,0xFF, +0x6E,0xC0,0xF8,0xFF,0x06,0x67,0x40,0x42,0x00,0x60,0x58,0x01,0x6E,0x4A,0xFA,0xFF, +0x14,0x67,0x6E,0x3D,0xFA,0xFF,0xF6,0xFF,0x7C,0x2A,0x00,0x00,0xC0,0x29,0x7C,0x28, +0x00,0x00,0xC2,0x29,0x12,0x60,0x6E,0x3D,0xF8,0xFF,0xF6,0xFF,0x7C,0x2A,0x00,0x00, +0xC4,0x29,0x7C,0x28,0x00,0x00,0xC6,0x29,0x39,0x30,0x00,0x00,0xC4,0x29,0x79,0x90, +0x00,0x00,0xC0,0x29,0x40,0x3D,0xFE,0xFF,0x39,0x30,0x00,0x00,0xC6,0x29,0x79,0x90, +0x00,0x00,0xC2,0x29,0x40,0x3D,0xFC,0xFF,0x2E,0x08,0x00,0x00,0xF7,0xFF,0x30,0x67, +0xAE,0x3E,0xFE,0xFF,0x39,0x3F,0x00,0x00,0xD2,0x29,0x39,0x30,0x00,0x00,0xC0,0x29, +0x57,0x91,0x2E,0x3F,0xFC,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x79,0xD0, +0x00,0x00,0xC2,0x29,0x80,0x38,0xB9,0x3A,0x00,0x00,0xD2,0x29,0x00,0x60,0xA2,0x00, +0x2E,0x08,0x01,0x00,0xF7,0xFF,0x2E,0x67,0xAE,0x3E,0xFE,0xFF,0x39,0x3F,0x00,0x00, +0xD6,0x29,0x39,0x30,0x00,0x00,0xC0,0x29,0x57,0x91,0x2E,0x3F,0xFC,0xFF,0xB9,0x4E, +0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x79,0xD0,0x00,0x00,0xC2,0x29,0x80,0x38,0xB9,0x3A, +0x00,0x00,0xD6,0x29,0x6A,0x60,0x2E,0x08,0x02,0x00,0xF7,0xFF,0x2E,0x67,0xAE,0x3E, +0xFC,0xFF,0x39,0x3F,0x00,0x00,0xD4,0x29,0x39,0x30,0x00,0x00,0xC2,0x29,0x57,0x91, +0x2E,0x3F,0xFE,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x79,0xD0,0x00,0x00, +0xC0,0x29,0x80,0x3A,0xB9,0x38,0x00,0x00,0xD4,0x29,0x34,0x60,0x2E,0x08,0x03,0x00, +0xF7,0xFF,0x2C,0x67,0xAE,0x3E,0xFC,0xFF,0x39,0x3F,0x00,0x00,0xD8,0x29,0x39,0x30, +0x00,0x00,0xC2,0x29,0x57,0x91,0x2E,0x3F,0xFE,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1, +0x8F,0x58,0x79,0xD0,0x00,0x00,0xC0,0x29,0x80,0x3A,0xB9,0x38,0x00,0x00,0xD8,0x29, +0xB9,0x3E,0x00,0x00,0xC6,0x29,0x39,0x3F,0x00,0x00,0xC4,0x29,0x2E,0x61,0x8F,0x54, +0x40,0x3D,0xF8,0xFF,0x00,0x3F,0x39,0x3F,0x00,0x00,0xC2,0x29,0x39,0x3F,0x00,0x00, +0xC0,0x29,0x18,0x61,0x8F,0x58,0x40,0x3D,0xFA,0xFF,0x5F,0x80,0x00,0x66,0x9E,0xFE, +0x01,0x70,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF, +0x6E,0x42,0xFE,0xFF,0x2E,0x30,0x08,0x00,0x79,0xB0,0x00,0x00,0xD2,0x29,0x08,0x6C, +0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x12,0x60,0x2E,0x30,0x08,0x00,0x79,0xB0,0x00,0x00, +0xD6,0x29,0x06,0x6F,0x7C,0x3D,0x02,0x00,0xFE,0xFF,0x2E,0x30,0x0A,0x00,0x79,0xB0, +0x00,0x00,0xD4,0x29,0x06,0x6C,0x6E,0x58,0xFE,0xFF,0x10,0x60,0x2E,0x30,0x0A,0x00, +0x79,0xB0,0x00,0x00,0xD8,0x29,0x04,0x6F,0x6E,0x50,0xFE,0xFF,0x2E,0x30,0xFE,0xFF, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x04,0x0F,0x79,0x20,0x00,0x00, +0xCA,0x27,0x28,0x3E,0x1E,0x00,0x07,0x30,0x7C,0xC0,0x01,0x00,0xC0,0x33,0x00,0x00, +0xB2,0x29,0x07,0x30,0x7C,0xC0,0x02,0x00,0xC0,0x33,0x00,0x00,0xB4,0x29,0x07,0x30, +0x7C,0xC0,0x04,0x00,0xC0,0x33,0x00,0x00,0xB6,0x29,0x07,0x30,0x7C,0xC0,0x08,0x00, +0xC0,0x33,0x00,0x00,0xB8,0x29,0x79,0x42,0x00,0x00,0xBA,0x29,0x79,0x2A,0x00,0x00, +0xA6,0x29,0x8D,0x54,0x1D,0x30,0xC0,0x33,0x00,0x00,0x22,0x26,0xC0,0x33,0x00,0x00, +0x20,0x26,0x8D,0x54,0x79,0x20,0x00,0x00,0x9E,0x29,0x28,0x3E,0x02,0x00,0x47,0x53, +0x24,0x60,0x1D,0x3C,0x8D,0x54,0x79,0xBC,0x00,0x00,0x22,0x26,0x08,0x6C,0xC6,0x33, +0x00,0x00,0x22,0x26,0x0E,0x60,0x79,0xBC,0x00,0x00,0x20,0x26,0x06,0x6F,0xC6,0x33, +0x00,0x00,0x20,0x26,0x47,0x53,0x47,0x4A,0xD8,0x6E,0x79,0x4A,0x00,0x00,0xD0,0x29, +0x6E,0x67,0x39,0x30,0x00,0x00,0x22,0x26,0x79,0xB0,0x00,0x00,0xD4,0x29,0x34,0x6C, +0x39,0x30,0x00,0x00,0x20,0x26,0x79,0xB0,0x00,0x00,0xD4,0x29,0x22,0x6D,0x39,0x30, +0x00,0x00,0xD4,0x29,0x40,0x53,0xC0,0x33,0x00,0x00,0x22,0x26,0x79,0x0C,0x01,0x00, +0x00,0x00,0x22,0x26,0x08,0x6C,0xFC,0x33,0x01,0x00,0x00,0x00,0x22,0x26,0x04,0x60, +0x00,0x60,0xB2,0x00,0x39,0x30,0x00,0x00,0x20,0x26,0x79,0xB0,0x00,0x00,0xD8,0x29, +0x1E,0x6F,0x39,0x30,0x00,0x00,0x22,0x26,0x79,0xB0,0x00,0x00,0xD8,0x29,0x0C,0x6E, +0xF9,0x33,0x00,0x00,0xD8,0x29,0x00,0x00,0x20,0x26,0x04,0x60,0x00,0x60,0x86,0x00, +0x79,0x20,0x00,0x00,0x9E,0x29,0x28,0x3C,0x02,0x00,0x46,0xE3,0x79,0x2A,0x00,0x00, +0xA6,0x29,0x4D,0x20,0x46,0x32,0xC9,0xD3,0xC9,0xD1,0x95,0x30,0x4D,0x20,0x46,0x32, +0xC9,0xD3,0xC9,0xD1,0x6D,0x31,0x02,0x00,0x02,0x00,0xF9,0x33,0x00,0x00,0x20,0x26, +0x00,0x00,0xC2,0x29,0x12,0x60,0x79,0x42,0x00,0x00,0x1E,0x26,0xB9,0x4E,0xFC,0x00, +0xB8,0xA0,0x79,0x53,0x00,0x00,0xC2,0x29,0x39,0x30,0x00,0x00,0xC2,0x29,0x79,0xB0, +0x00,0x00,0x22,0x26,0xE0,0x6E,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x0C,0x01,0x00, +0x22,0x00,0x20,0x66,0xFC,0x33,0xFF,0xFF,0x00,0x00,0xBC,0x29,0x79,0x20,0x00,0x00, +0x9E,0x29,0x28,0x30,0x02,0x00,0x79,0x22,0x00,0x00,0x9E,0x29,0x69,0x52,0x02,0x00, +0x00,0x61,0x14,0xFC,0x9F,0x4A,0xDF,0x4C,0xE0,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0xE7,0x48,0x0C,0x07,0x57,0x42,0x0D,0x2F,0xB9,0x4E,0xFC,0x00,0xB8,0xB5, +0x8F,0x58,0x79,0x2A,0x00,0x00,0xA6,0x29,0xDD,0x33,0x00,0x00,0xC0,0x29,0xDD,0x33, +0x00,0x00,0xC2,0x29,0xDD,0x33,0x00,0x00,0xC4,0x29,0xD5,0x33,0x00,0x00,0xC6,0x29, +0x39,0x30,0x00,0x00,0xC4,0x29,0x79,0x90,0x00,0x00,0xC0,0x29,0xC0,0x48,0xFC,0x81, +0x02,0x00,0x40,0x3D,0xFE,0xFF,0x39,0x30,0x00,0x00,0xC2,0x29,0x79,0x90,0x00,0x00, +0xC6,0x29,0xC0,0x48,0xFC,0x81,0x02,0x00,0x40,0x3D,0xFC,0xFF,0x39,0x30,0x00,0x00, +0xE6,0x26,0x40,0xEC,0xC0,0x33,0x00,0x00,0x3A,0x26,0x39,0x30,0x00,0x00,0x3A,0x26, +0x6E,0xB0,0xFE,0xFF,0x08,0x6F,0xEE,0x33,0xFE,0xFF,0x00,0x00,0x3A,0x26,0xB9,0x3E, +0x00,0x00,0xEE,0x26,0x39,0x3F,0x00,0x00,0xEC,0x26,0x39,0x3F,0x00,0x00,0x3A,0x26, +0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0xC0,0x33,0x00,0x00,0x40,0x26,0x39,0x30, +0x00,0x00,0x40,0x26,0x6E,0xB0,0xFC,0xFF,0x08,0x6F,0xEE,0x33,0xFC,0xFF,0x00,0x00, +0x40,0x26,0x79,0x2A,0x00,0x00,0xA6,0x29,0x5D,0x42,0xF9,0x3A,0x00,0x00,0x40,0x26, +0xBC,0x3E,0xFF,0x7F,0x39,0x3F,0x00,0x00,0x3A,0x26,0x3C,0x3F,0xA3,0x02,0xB9,0x4E, +0xFC,0x00,0xA6,0xAC,0x8F,0x54,0x00,0x3F,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58, +0xC0,0x3A,0xBC,0x3E,0xFF,0x7F,0x39,0x3F,0x00,0x00,0x40,0x26,0x3C,0x3F,0xA3,0x02, +0xB9,0x4E,0xFC,0x00,0xC2,0xAB,0x8F,0x54,0x00,0x3F,0xB9,0x4E,0xFC,0x00,0xE0,0xA1, +0x8F,0x58,0xC0,0x3A,0xBC,0x3E,0xFF,0x7F,0x39,0x3F,0x00,0x00,0x3A,0x26,0x3C,0x3F, +0xC2,0x01,0xB9,0x4E,0xFC,0x00,0xA6,0xAC,0x8F,0x54,0x00,0x3F,0xB9,0x4E,0xFC,0x00, +0xE0,0xA1,0x8F,0x58,0xC0,0x3A,0xBC,0x3E,0xFF,0x7F,0x39,0x3F,0x00,0x00,0x40,0x26, +0x3C,0x3F,0xC2,0x01,0xB9,0x4E,0xFC,0x00,0xC2,0xAB,0x8F,0x54,0x00,0x3F,0xB9,0x4E, +0xFC,0x00,0xE0,0xA1,0x8F,0x58,0xC0,0x3A,0xBC,0x3E,0xFF,0x7F,0x39,0x3F,0x00,0x00, +0x3A,0x26,0x3C,0x3F,0xE1,0x00,0xB9,0x4E,0xFC,0x00,0xA6,0xAC,0x8F,0x54,0x00,0x3F, +0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0xC0,0x3A,0xBC,0x3E,0xFF,0x7F,0x39,0x3F, +0x00,0x00,0x40,0x26,0x3C,0x3F,0xE1,0x00,0xB9,0x4E,0xFC,0x00,0xC2,0xAB,0x8F,0x54, +0x00,0x3F,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0xC0,0x3A,0xF9,0x3A,0x00,0x00, +0x3A,0x26,0x55,0x42,0x79,0x2A,0x00,0x00,0xA6,0x29,0x39,0x30,0x00,0x00,0xC4,0x29, +0x79,0x90,0x00,0x00,0x3A,0x26,0xC0,0x33,0x00,0x00,0x38,0x26,0x39,0x30,0x00,0x00, +0xC2,0x29,0x79,0x90,0x00,0x00,0x40,0x26,0xC0,0x33,0x00,0x00,0x3E,0x26,0x0A,0x7C, +0x09,0x7E,0x38,0x60,0x47,0x30,0xC8,0xD1,0x35,0x30,0x00,0x88,0x79,0xD0,0x00,0x00, +0x3E,0x26,0x4D,0x22,0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x40,0x33,0x02,0x00,0x47,0x53, +0x47,0x30,0xC8,0xD1,0x35,0x30,0x00,0x88,0x79,0xD0,0x00,0x00,0x38,0x26,0x4D,0x22, +0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32,0x46,0x54,0x47,0x53,0x47,0x4A,0xC4,0x6C, +0x39,0x30,0x00,0x00,0xC0,0x29,0x79,0xD0,0x00,0x00,0x3A,0x26,0xC0,0x33,0x00,0x00, +0x38,0x26,0x14,0x7C,0x47,0x42,0x3A,0x60,0x39,0x30,0x00,0x00,0x38,0x26,0x47,0x32, +0xC9,0xD3,0x35,0x32,0x00,0x98,0x41,0x90,0x4D,0x22,0x46,0x34,0xCA,0xD5,0xCA,0xD3, +0x80,0x32,0x47,0x52,0x46,0x52,0x47,0x30,0xC8,0xD1,0x35,0x30,0x00,0x88,0x79,0xD0, +0x00,0x00,0x3E,0x26,0x4D,0x22,0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32,0x46,0x52, +0x47,0x52,0x7C,0xBE,0x0A,0x00,0xC0,0x6D,0x39,0x30,0x00,0x00,0xC6,0x29,0x79,0xD0, +0x00,0x00,0x40,0x26,0xC0,0x33,0x00,0x00,0x3E,0x26,0x1E,0x7C,0x09,0x7E,0x3C,0x60, +0x39,0x30,0x00,0x00,0x3E,0x26,0x47,0x32,0xC9,0xD3,0x35,0x32,0x00,0x98,0x41,0x90, +0x4D,0x22,0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x40,0x33,0x02,0x00,0x47,0x53,0x39,0x30, +0x00,0x00,0x38,0x26,0x47,0x32,0xC9,0xD3,0x35,0x32,0x00,0x98,0x41,0x90,0x4D,0x22, +0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32,0x46,0x54,0x47,0x53,0x47,0x4A,0xC0,0x6C, +0x39,0x30,0x00,0x00,0xC4,0x29,0x79,0x90,0x00,0x00,0x3A,0x26,0xC0,0x33,0x00,0x00, +0x38,0x26,0x46,0x42,0x47,0x42,0x3A,0x60,0x47,0x30,0xC8,0xD1,0x35,0x30,0x00,0x88, +0x79,0xD0,0x00,0x00,0x38,0x26,0x4D,0x22,0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32, +0x47,0x52,0x46,0x52,0x39,0x30,0x00,0x00,0x3E,0x26,0x47,0x32,0xC9,0xD3,0x35,0x32, +0x00,0x98,0x41,0x90,0x4D,0x22,0x46,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32,0x46,0x52, +0x47,0x52,0x7C,0xBE,0x0A,0x00,0xC0,0x6D,0x55,0x3B,0x50,0x00,0x6D,0x3B,0x02,0x00, +0x52,0x00,0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x15,0x00,0x02,0x00,0x6D,0x0C, +0x08,0x00,0x0A,0x00,0x00,0x66,0x74,0x00,0x79,0x28,0x00,0x00,0xCA,0x27,0x2C,0x3E, +0x30,0x00,0x7C,0xBE,0x06,0x00,0x10,0x6C,0x47,0x30,0xC8,0xD1,0x7C,0x22,0xFD,0x00, +0x50,0x33,0x30,0x30,0x00,0x98,0x04,0x60,0x2C,0x30,0xA4,0x00,0xC0,0x33,0x00,0x00, +0xBC,0x29,0x2C,0x3E,0x2C,0x00,0x07,0x30,0x7C,0xC0,0x01,0x00,0xC0,0x33,0x00,0x00, +0xB2,0x29,0x07,0x30,0x7C,0xC0,0x02,0x00,0xC0,0x33,0x00,0x00,0xB4,0x29,0x07,0x30, +0x7C,0xC0,0x04,0x00,0xC0,0x33,0x00,0x00,0xB6,0x29,0x07,0x30,0x7C,0xC0,0x08,0x00, +0xC0,0x33,0x00,0x00,0xB8,0x29,0x6C,0x0C,0x01,0x00,0x32,0x00,0x06,0x66,0x00,0x61, +0x76,0xF8,0x04,0x60,0x00,0x61,0x84,0x05,0x04,0x60,0x00,0x61,0xC8,0xFA,0x9F,0x4A, +0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01, +0x79,0x2A,0x00,0x00,0xA2,0x29,0xDD,0x33,0x00,0x00,0x0E,0x26,0xD5,0x33,0x00,0x00, +0x1C,0x26,0x39,0x30,0x00,0x00,0x1C,0x26,0x79,0x90,0x00,0x00,0x0E,0x26,0xC0,0x33, +0x00,0x00,0x14,0x26,0x79,0x4A,0x00,0x00,0x14,0x26,0x08,0x6C,0x79,0x06,0x10,0x0E, +0x00,0x00,0x14,0x26,0x79,0x2A,0x00,0x00,0xA6,0x29,0xED,0x33,0x0C,0x00,0x00,0x00, +0x3A,0x26,0xB9,0x3E,0x00,0x00,0xEE,0x26,0x39,0x3F,0x00,0x00,0xEC,0x26,0x39,0x3F, +0x00,0x00,0x3A,0x26,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0xC0,0x33,0x00,0x00, +0x40,0x26,0x1A,0x61,0xDD,0x33,0x00,0x00,0x38,0x26,0xD5,0x33,0x00,0x00,0x3E,0x26, +0x00,0x61,0xF6,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0x39,0x30,0x00,0x00,0x3A,0x26,0x79,0xB0,0x00,0x00,0x40,0x26,0x0C,0x6F, +0xF9,0x33,0x00,0x00,0x3A,0x26,0x00,0x00,0x24,0x26,0x0A,0x60,0xF9,0x33,0x00,0x00, +0x40,0x26,0x00,0x00,0x24,0x26,0x39,0x30,0x00,0x00,0x24,0x26,0x40,0xE4,0xC0,0x33, +0x00,0x00,0x24,0x26,0x79,0x0C,0x20,0x00,0x00,0x00,0x24,0x26,0x0A,0x6C,0xFC,0x33, +0x20,0x00,0x00,0x00,0x24,0x26,0x12,0x60,0x79,0x0C,0x80,0x00,0x00,0x00,0x24,0x26, +0x08,0x6F,0xFC,0x33,0x80,0x00,0x00,0x00,0x24,0x26,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xA2,0x29,0xDD,0x33,0x00,0x00, +0x0E,0x26,0xD5,0x33,0x00,0x00,0x1C,0x26,0x39,0x30,0x00,0x00,0x1C,0x26,0x79,0x90, +0x00,0x00,0x0E,0x26,0xC0,0x33,0x00,0x00,0x14,0x26,0x79,0x4A,0x00,0x00,0x14,0x26, +0x08,0x6C,0x79,0x06,0x10,0x0E,0x00,0x00,0x14,0x26,0x79,0x2A,0x00,0x00,0xA6,0x29, +0xDD,0x33,0x00,0x00,0x38,0x26,0xDD,0x33,0x00,0x00,0x3E,0x26,0xDD,0x33,0x00,0x00, +0x3A,0x26,0xD5,0x33,0x00,0x00,0x40,0x26,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x0C, +0x02,0x00,0x2A,0x01,0x12,0x6C,0x39,0x30,0x00,0x00,0xE8,0x26,0x79,0x90,0x00,0x00, +0x40,0x26,0xC0,0x33,0x00,0x00,0x40,0x26,0x00,0x61,0x24,0xFF,0x0A,0x61,0x9F,0x4A, +0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x0C,0x01, +0x79,0x4A,0x00,0x00,0xD0,0x29,0x58,0x67,0x39,0x30,0x00,0x00,0x38,0x26,0x79,0xD0, +0x00,0x00,0x3A,0x26,0x79,0xB0,0x00,0x00,0xD2,0x29,0x00,0x6D,0x48,0x01,0x39,0x30, +0x00,0x00,0x38,0x26,0x79,0x90,0x00,0x00,0x3A,0x26,0x79,0xB0,0x00,0x00,0xD6,0x29, +0x00,0x6E,0x32,0x01,0x39,0x30,0x00,0x00,0x3E,0x26,0x79,0xD0,0x00,0x00,0x40,0x26, +0x79,0xB0,0x00,0x00,0xD4,0x29,0x00,0x6D,0x1C,0x01,0x39,0x30,0x00,0x00,0x3E,0x26, +0x79,0x90,0x00,0x00,0x40,0x26,0x79,0xB0,0x00,0x00,0xD8,0x29,0x00,0x6E,0x06,0x01, +0x39,0x30,0x00,0x00,0x0E,0x26,0xC0,0x33,0x00,0x00,0x0C,0x26,0xC0,0x33,0x00,0x00, +0x36,0x26,0x40,0x42,0x40,0x3D,0xFC,0xFF,0x40,0x3D,0xFE,0xFF,0xAE,0x3E,0xFC,0xFF, +0x00,0x61,0xEC,0x00,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x34,0x60,0x6E,0x54,0xFC,0xFF, +0xB9,0x3E,0x00,0x00,0x24,0x26,0x2E,0x3F,0xFE,0xFF,0x39,0x3F,0x00,0x00,0x14,0x26, +0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x79,0xD0,0x00,0x00,0x36,0x26,0xC0,0x33, +0x00,0x00,0x0C,0x26,0xAE,0x3E,0xFC,0xFF,0x00,0x61,0xB4,0x00,0x6E,0x52,0xFE,0xFF, +0x2E,0x30,0xFE,0xFF,0x79,0xB0,0x00,0x00,0x24,0x26,0xC0,0x6D,0x6E,0x54,0xFC,0xFF, +0x79,0x3D,0x00,0x00,0x24,0x26,0xFE,0xFF,0xF9,0x33,0x00,0x00,0x1C,0x26,0x00,0x00, +0x0C,0x26,0xAE,0x3E,0xFC,0xFF,0x00,0x61,0x86,0x00,0x79,0x2A,0x00,0x00,0x9E,0x29, +0x79,0x28,0x00,0x00,0xA6,0x29,0x39,0x30,0x00,0x00,0x24,0x26,0x40,0x52,0x40,0x3B, +0x02,0x00,0x6D,0x0C,0x03,0x00,0x0A,0x00,0x08,0x67,0x6D,0x0C,0x07,0x00,0x0A,0x00, +0x38,0x66,0x79,0x52,0x00,0x00,0x24,0x26,0x6E,0x54,0xFC,0xFF,0x4C,0x20,0x6E,0x32, +0xFC,0xFF,0xC9,0xD3,0xC9,0xD1,0xB9,0x30,0x00,0x00,0x38,0x26,0x4C,0x20,0x6E,0x32, +0xFC,0xFF,0xC9,0xD3,0xC9,0xD1,0x79,0x31,0x00,0x00,0x3E,0x26,0x02,0x00,0x39,0x30, +0x00,0x00,0x24,0x26,0x40,0x52,0x40,0x3B,0x02,0x00,0x6D,0x0C,0x02,0x00,0x0A,0x00, +0x08,0x67,0x6D,0x0C,0x06,0x00,0x0A,0x00,0x06,0x66,0x00,0x61,0xDE,0xF0,0x04,0x60, +0x00,0x61,0xE2,0xF7,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0xFE,0xFF,0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xA6,0x29,0xBC,0x3E,0xFF,0x7F, +0x39,0x3F,0x00,0x00,0x3A,0x26,0x39,0x3F,0x00,0x00,0x0C,0x26,0xB9,0x4E,0xFC,0x00, +0xA6,0xAC,0x8F,0x54,0x00,0x3F,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x79,0xD0, +0x00,0x00,0x38,0x26,0x40,0x3D,0xFE,0xFF,0x4D,0x20,0x6E,0x32,0x08,0x00,0xC9,0xD3, +0xC9,0xD1,0xAE,0x30,0xFE,0xFF,0xBC,0x3E,0xFF,0x7F,0x39,0x3F,0x00,0x00,0x40,0x26, +0x39,0x3F,0x00,0x00,0x0C,0x26,0xB9,0x4E,0xFC,0x00,0xC2,0xAB,0x8F,0x54,0x00,0x3F, +0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x00,0x3F,0x39,0x30,0x00,0x00,0x3E,0x26, +0x5F,0x90,0x40,0x3D,0xFE,0xFF,0x4D,0x20,0x6E,0x32,0x08,0x00,0xC9,0xD3,0xC9,0xD1, +0x6E,0x31,0xFE,0xFF,0x02,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x79,0x28,0x00,0x00,0xCA,0x27,0x2C,0x3E, +0x20,0x00,0x46,0x42,0x2C,0x30,0x24,0x00,0x00,0x60,0xA0,0x00,0x7C,0x2A,0xFD,0x00, +0xE6,0x35,0x00,0x60,0xAA,0x00,0x7C,0x2A,0xFD,0x00,0xE8,0x35,0x00,0x60,0xA0,0x00, +0x7C,0xBE,0x08,0x00,0x1C,0x6C,0x39,0x3C,0xFD,0x00,0x80,0x34,0x07,0x30,0x06,0x32, +0x41,0x52,0xC1,0xC1,0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0xFD,0x00,0x82,0x34, +0x1C,0x60,0x39,0x3C,0xFD,0x00,0x7E,0x33,0x07,0x30,0x40,0x51,0x06,0x32,0x41,0x52, +0xC1,0xC1,0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0xFD,0x00,0x80,0x33,0x5E,0x60, +0x7C,0xBE,0x06,0x00,0x1C,0x6C,0x39,0x3C,0xFD,0x00,0xC2,0x34,0x07,0x30,0x06,0x32, +0x41,0x52,0xC1,0xC1,0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0xFD,0x00,0xC4,0x34, +0x1C,0x60,0x39,0x3C,0xFD,0x00,0x24,0x35,0x07,0x30,0x40,0x5D,0x06,0x32,0x41,0x52, +0xC1,0xC1,0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0xFD,0x00,0x26,0x35,0x1E,0x60, +0x0F,0x7C,0xEC,0x4B,0xA6,0x00,0x16,0x60,0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62, +0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFD,0x00,0xD6,0x39,0x50,0x20,0xD0,0x4E,0x4D,0x29, +0x0E,0x00,0x46,0x39,0x0C,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x0C,0x0F,0x79,0x20,0x00,0x00,0xCA,0x27,0x28,0x3A, +0x32,0x00,0x05,0x30,0xF9,0xC1,0x00,0x00,0xEC,0x26,0xC0,0x48,0xF9,0x81,0x00,0x00, +0xEE,0x26,0xC0,0x48,0xFC,0x81,0x02,0x00,0x40,0x52,0xC0,0x33,0x00,0x00,0xE8,0x27, +0xC5,0x33,0x00,0x00,0xE4,0x27,0x05,0x3C,0x46,0x52,0xC6,0x48,0xFC,0x8D,0x02,0x00, +0x47,0x42,0x03,0x7A,0x06,0x30,0x40,0xE3,0x40,0x9A,0x07,0x30,0x40,0xE3,0xC0,0x48, +0x40,0x2A,0xFC,0xDB,0x00,0x00,0xEA,0x27,0x06,0x30,0x40,0xE3,0xC0,0x48,0x40,0x28, +0xFC,0xD9,0x00,0x00,0xEA,0x27,0x26,0x60,0x87,0x38,0x86,0x3A,0x45,0x4A,0x0A,0x6C, +0x07,0x30,0x40,0xE5,0x40,0xDA,0x45,0x5C,0x10,0x60,0x07,0x30,0x46,0x90,0x40,0xE5, +0x40,0xDA,0x7C,0xDA,0x0A,0x00,0x8C,0x55,0x46,0x53,0x8D,0x54,0x47,0x52,0x46,0xBE, +0xD6,0x6D,0x46,0xBE,0x0C,0x66,0x47,0x30,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xEA,0x27, +0x87,0x30,0x47,0x42,0x7C,0x28,0x00,0x00,0xEA,0x27,0x6E,0x42,0xFA,0xFF,0x54,0x60, +0x2E,0x3C,0xFA,0xFF,0x46,0xE3,0x46,0x52,0xF9,0xCD,0x00,0x00,0xEE,0x26,0xC6,0x48, +0xF9,0x8D,0x00,0x00,0xEC,0x26,0xC6,0x48,0xFC,0x8D,0x02,0x00,0x45,0x42,0x07,0x30, +0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0xEA,0x27,0x47,0x3D,0xF8,0xFF, +0x06,0x60,0x5D,0xDA,0x6E,0x52,0xF8,0xFF,0x6E,0xBC,0xF8,0xFF,0xF4,0x6C,0x05,0x30, +0xC0,0x48,0x06,0x32,0x47,0x92,0x41,0x52,0xC1,0x81,0xC0,0x38,0x06,0x3E,0x47,0x52, +0x6E,0x52,0xFA,0xFF,0x2E,0x30,0xFA,0xFF,0x79,0xB0,0x00,0x00,0xE8,0x27,0xA0,0x6D, +0x9F,0x4A,0xDF,0x4C,0xE0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xD0,0xFF,0xE7,0x48, +0x0C,0x1F,0x79,0x20,0x00,0x00,0x9E,0x29,0x28,0x30,0x02,0x00,0x40,0x3D,0xE6,0xFF, +0x7C,0xB0,0x02,0x00,0x00,0x6D,0xCC,0x01,0x79,0x28,0x00,0x00,0xCA,0x27,0x2C,0x30, +0x32,0x00,0x79,0xB0,0x00,0x00,0xE4,0x27,0x04,0x67,0x00,0x61,0xB4,0xFE,0x2C,0x30, +0x2A,0x00,0x6C,0x80,0x2E,0x00,0x7C,0xC0,0x01,0x00,0x04,0x67,0x00,0x61,0x16,0x05, +0x00,0x61,0x6E,0x04,0x79,0x2A,0x00,0x00,0xA6,0x29,0x4D,0x2D,0xD4,0xFF,0x5D,0x3D, +0xE4,0xFF,0x5D,0x3D,0xE2,0xFF,0x4D,0x2D,0xD0,0xFF,0x79,0x4A,0x00,0x00,0x28,0x26, +0x0E,0x67,0xAE,0x3E,0xE2,0xFF,0x2E,0x3F,0xE4,0xFF,0x00,0x61,0x3C,0x03,0x8F,0x54, +0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x00,0x60,0x5A,0x01,0x6E,0x2A,0xD0,0xFF,0x5D,0x3D, +0xE0,0xFF,0x5D,0x3D,0xDE,0xFF,0x4D,0x2D,0xD0,0xFF,0x2E,0x30,0xE0,0xFF,0x6E,0x90, +0xE4,0xFF,0x40,0x3D,0xDC,0xFF,0x2E,0x30,0xDE,0xFF,0x6E,0x90,0xE2,0xFF,0x40,0x3D, +0xDA,0xFF,0x6E,0x4A,0xDC,0xFF,0x08,0x66,0x6E,0x4A,0xDA,0xFF,0x00,0x67,0x20,0x01, +0x6E,0x4A,0xDC,0xFF,0x0E,0x66,0x79,0x3D,0x00,0x00,0xEA,0x27,0xDC,0xFF,0x6E,0x42, +0xDA,0xFF,0x70,0x60,0x6E,0x4A,0xDA,0xFF,0x12,0x66,0x6E,0x42,0xDC,0xFF,0x39,0x30, +0x00,0x00,0xE8,0x27,0x40,0x53,0x40,0x3D,0xDA,0xFF,0x58,0x60,0xB9,0x3E,0x00,0x00, +0xEC,0x26,0x39,0x3F,0x00,0x00,0xEE,0x26,0x2E,0x30,0xDA,0xFF,0x40,0x44,0x00,0x3F, +0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x40,0x3D,0xFC,0xFF,0xB9,0x3E,0x00,0x00, +0xEE,0x26,0x39,0x3F,0x00,0x00,0xEC,0x26,0x2E,0x3F,0xDC,0xFF,0xB9,0x4E,0xFC,0x00, +0xE0,0xA1,0x8F,0x58,0x40,0x3D,0xDA,0xFF,0x6E,0x3D,0xFC,0xFF,0xDC,0xFF,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xDA,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x00,0x61, +0xBC,0x00,0x8F,0x58,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x04,0x00,0x02,0x00, +0xEE,0x4B,0xE8,0xFF,0x0D,0x20,0xC0,0x23,0x00,0x00,0xA6,0x29,0x2E,0x3E,0xE4,0xFF, +0x2E,0x3C,0xE2,0xFF,0x2E,0x3A,0xDC,0xFF,0x2E,0x38,0xDA,0xFF,0x07,0x30,0x45,0xD0, +0xC0,0x3A,0x06,0x30,0x44,0xD0,0xC0,0x3A,0x07,0x30,0x45,0x90,0xC0,0x3A,0x06,0x30, +0x44,0x90,0xC0,0x3A,0x2E,0x3E,0xE0,0xFF,0x2E,0x3C,0xDE,0xFF,0x07,0x30,0x45,0x90, +0xC0,0x3A,0x06,0x30,0x44,0x90,0xC0,0x3A,0x07,0x30,0x45,0xD0,0xC0,0x3A,0x06,0x30, +0x44,0xD0,0x80,0x3A,0x00,0x61,0xAE,0xF3,0xEE,0x23,0xD4,0xFF,0x00,0x00,0xA6,0x29, +0x2E,0x30,0xE6,0xFF,0x40,0x53,0x6E,0xB0,0xFE,0xFF,0x08,0x6E,0x79,0x4A,0x00,0x00, +0x2A,0x26,0x0E,0x67,0xAE,0x3E,0xDE,0xFF,0x2E,0x3F,0xE0,0xFF,0x00,0x61,0xEA,0x01, +0x8F,0x54,0x6E,0x3D,0xE0,0xFF,0xE4,0xFF,0x6E,0x3D,0xDE,0xFF,0xE2,0xFF,0x6E,0x52, +0xFE,0xFF,0x2E,0x30,0xFE,0xFF,0x6E,0xB0,0xE6,0xFF,0x00,0x6D,0x9E,0xFE,0x00,0x61, +0x3C,0x03,0x9F,0x4A,0xDF,0x4C,0xF0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF0,0xFF, +0xE7,0x48,0x1C,0x07,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x7C,0x26,0x00,0x00, +0xEA,0x27,0x55,0x4A,0x10,0x6D,0x54,0x4A,0x04,0x6D,0x01,0x70,0x02,0x60,0x04,0x70, +0x40,0x3D,0xF8,0xFF,0x0E,0x60,0x54,0x4A,0x04,0x6D,0x02,0x70,0x02,0x60,0x03,0x70, +0x40,0x3D,0xF8,0xFF,0x8E,0x2E,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x14,0x3F,0x15,0x3F, +0x2E,0x3F,0xF8,0xFF,0x00,0x61,0xFA,0x00,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x7C,0x3D, +0xFF,0x7F,0xF4,0xFF,0x13,0x3E,0x46,0x42,0x07,0x30,0xEE,0xC1,0xFA,0xFF,0x06,0x32, +0xEE,0xC3,0xFC,0xFF,0x41,0x90,0x10,0x6D,0x07,0x30,0xEE,0xC1,0xFA,0xFF,0x06,0x32, +0xEE,0xC3,0xFC,0xFF,0x41,0x90,0x10,0x60,0x07,0x30,0xEE,0xC1,0xFA,0xFF,0x06,0x32, +0xEE,0xC3,0xFC,0xFF,0x41,0x90,0x40,0x44,0x40,0x3D,0xF6,0xFF,0x6E,0xB0,0xF4,0xFF, +0x3E,0x6D,0x2E,0x30,0xF6,0xFF,0x6E,0xB0,0xF4,0xFF,0x44,0x66,0x07,0x30,0x46,0x90, +0x06,0x6D,0x07,0x30,0x46,0x90,0x06,0x60,0x07,0x30,0x46,0x90,0x40,0x44,0x2E,0x32, +0xF2,0xFF,0x6E,0x92,0xF0,0xFF,0x0A,0x6D,0x2E,0x32,0xF2,0xFF,0x6E,0x92,0xF0,0xFF, +0x0A,0x60,0x2E,0x32,0xF2,0xFF,0x6E,0x92,0xF0,0xFF,0x41,0x44,0x41,0xB0,0x10,0x6C, +0x6E,0x3D,0xF6,0xFF,0xF4,0xFF,0x47,0x3D,0xF2,0xFF,0x46,0x3D,0xF0,0xFF,0x02,0x60, +0x3C,0x60,0x39,0x30,0x00,0x00,0xE8,0x27,0x40,0x53,0x40,0xBC,0x0A,0x66,0x7C,0xBE, +0x01,0x00,0x2A,0x67,0x47,0x53,0x22,0x60,0x46,0x30,0x48,0x52,0xC8,0xD1,0x33,0x30, +0x00,0x88,0x07,0x32,0x41,0x53,0x41,0xB0,0x0E,0x6D,0x46,0x52,0x4B,0x20,0x46,0x32, +0xC9,0xD3,0xC9,0xD1,0x10,0x3E,0x02,0x60,0x47,0x53,0x00,0x60,0x3C,0xFF,0x8C,0x2E, +0x0D,0x2F,0x2E,0x3F,0xF0,0xFF,0x2E,0x3F,0xF2,0xFF,0x2E,0x3F,0xF8,0xFF,0x10,0x61, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x38,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xFC,0xFF,0x2E,0x30,0x08,0x00,0x1A,0x60,0x6E,0x20,0x0E,0x00,0xAE,0x30, +0x0A,0x00,0x28,0x60,0x2E,0x30,0x0A,0x00,0x40,0x44,0x6E,0x22,0x0E,0x00,0x80,0x32, +0x1A,0x60,0x18,0x60,0x7C,0xB0,0x01,0x00,0xE0,0x67,0x7C,0xB0,0x02,0x00,0xE4,0x67, +0x7C,0xB0,0x03,0x00,0xDE,0x67,0x7C,0xB0,0x04,0x00,0xCE,0x67,0x2E,0x30,0x08,0x00, +0x1A,0x60,0x6E,0x20,0x12,0x00,0xAE,0x30,0x0C,0x00,0x28,0x60,0x2E,0x30,0x0C,0x00, +0x40,0x44,0x6E,0x22,0x12,0x00,0x80,0x32,0x1A,0x60,0x18,0x60,0x7C,0xB0,0x01,0x00, +0xE0,0x67,0x7C,0xB0,0x02,0x00,0xDA,0x67,0x7C,0xB0,0x03,0x00,0xDE,0x67,0x7C,0xB0, +0x04,0x00,0xD8,0x67,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x04,0x01, +0x79,0x4A,0x00,0x00,0xE8,0x27,0x00,0x6F,0xEE,0x00,0x7C,0x2A,0x00,0x00,0xEA,0x27, +0x2E,0x30,0x08,0x00,0x55,0x90,0xC0,0x33,0x00,0x00,0xC0,0x29,0x15,0x30,0x6E,0xD0, +0x08,0x00,0xC0,0x33,0x00,0x00,0xC4,0x29,0x2E,0x30,0x0A,0x00,0xC0,0x33,0x00,0x00, +0xC6,0x29,0xC0,0x33,0x00,0x00,0xC2,0x29,0x00,0x61,0x86,0xEF,0x40,0x4A,0x06,0x67, +0xB9,0x4E,0xFC,0x00,0x44,0xA2,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x00,0x60,0x9A,0x00, +0x2E,0x30,0xFE,0xFF,0x40,0xE3,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0xEA,0x27, +0x2E,0x30,0x08,0x00,0x55,0x90,0xC0,0x33,0x00,0x00,0xC0,0x29,0x15,0x30,0x6E,0xD0, +0x08,0x00,0xC0,0x33,0x00,0x00,0xC4,0x29,0x2E,0x30,0x0A,0x00,0x6E,0x90,0xFE,0xFF, +0xC0,0x33,0x00,0x00,0xC6,0x29,0xC0,0x33,0x00,0x00,0xC2,0x29,0x00,0x61,0x32,0xEF, +0x40,0x4A,0x16,0x67,0xB9,0x4E,0xFC,0x00,0x44,0xA2,0x2E,0x30,0xFE,0xFF,0x40,0xE3, +0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0xEA,0x27,0x2E,0x30,0x08,0x00,0x55,0x90, +0xC0,0x33,0x00,0x00,0xC0,0x29,0x15,0x30,0x6E,0xD0,0x08,0x00,0xC0,0x33,0x00,0x00, +0xC4,0x29,0x2E,0x30,0x0A,0x00,0x6E,0xD0,0xFE,0xFF,0xC0,0x33,0x00,0x00,0xC6,0x29, +0xC0,0x33,0x00,0x00,0xC2,0x29,0x00,0x61,0xE8,0xEE,0x40,0x4A,0x06,0x67,0xB9,0x4E, +0xFC,0x00,0x44,0xA2,0x6E,0x52,0xFE,0xFF,0x2E,0x30,0xFE,0xFF,0x79,0xB0,0x00,0x00, +0xE8,0x27,0x00,0x6D,0x5C,0xFF,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xCA,0x27,0xF9,0x33, +0xFD,0x00,0x50,0x33,0x00,0x00,0xBC,0x29,0xED,0x33,0x1E,0x00,0x00,0x00,0x2C,0x26, +0x6D,0x3B,0x2C,0x00,0x1E,0x00,0xED,0x33,0x22,0x00,0x00,0x00,0x2E,0x26,0x7C,0x3B, +0x01,0x00,0x22,0x00,0xFC,0x23,0xFD,0x00,0xE8,0x35,0x00,0x00,0xC8,0x29,0x79,0x42, +0x00,0x00,0xCC,0x29,0x79,0x42,0x00,0x00,0xCE,0x29,0xED,0x33,0x2A,0x00,0x00,0x00, +0x28,0x26,0xED,0x33,0x2E,0x00,0x00,0x00,0x2A,0x26,0x6D,0x42,0x2A,0x00,0x6D,0x42, +0x2E,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xCA,0x27,0x79,0x3B,0x00,0x00,0x2C,0x26, +0x1E,0x00,0x79,0x3B,0x00,0x00,0x2E,0x26,0x22,0x00,0x79,0x3B,0x00,0x00,0x28,0x26, +0x2A,0x00,0x79,0x3B,0x00,0x00,0x2A,0x26,0x2E,0x00,0x9F,0x4A,0xDF,0x4C,0x00,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x04,0x01,0x00,0x61,0x52,0xFF, +0x79,0x2A,0x00,0x00,0xA6,0x29,0x15,0x30,0x40,0x3D,0xFE,0xFF,0x40,0x3D,0xFA,0xFF, +0x2D,0x30,0x02,0x00,0x40,0x3D,0xFC,0xFF,0x40,0x3D,0xF8,0xFF,0x39,0x08,0x00,0x00, +0x00,0x00,0x29,0x26,0x1A,0x67,0xBC,0x3E,0x02,0x00,0x0D,0x2F,0x62,0x61,0x8F,0x58, +0x79,0x2A,0x00,0x00,0xA6,0x29,0x55,0x3D,0xFA,0xFF,0x6D,0x3D,0x02,0x00,0xF8,0xFF, +0x39,0x08,0x00,0x00,0x00,0x00,0x2B,0x26,0x38,0x67,0xAE,0x3A,0xFE,0xFF,0x6E,0x3B, +0xFC,0xFF,0x02,0x00,0xBC,0x3E,0xFE,0xFF,0x0D,0x20,0x79,0x22,0x00,0x00,0x9E,0x29, +0x29,0x32,0x02,0x00,0x41,0xE5,0xC1,0x48,0x81,0xD0,0x00,0x2F,0x97,0x59,0x20,0x61, +0x8F,0x58,0x79,0x2A,0x00,0x00,0xA6,0x29,0xAE,0x3A,0xFA,0xFF,0x6E,0x3B,0xF8,0xFF, +0x02,0x00,0x00,0x61,0x38,0xFF,0x9F,0x4A,0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xD4,0xFF,0xE7,0x48,0x0C,0x07,0x79,0x20,0x00,0x00,0xCA,0x27,0x28,0x3E, +0x32,0x00,0x7C,0xBE,0x01,0x00,0x04,0x66,0x08,0x70,0x08,0x60,0x07,0x30,0xFC,0xC1, +0x03,0x00,0x40,0x53,0x40,0x3D,0xFE,0xFF,0xC0,0x48,0xFC,0x81,0x02,0x00,0x40,0x3D, +0xFC,0xFF,0x6E,0x28,0x08,0x00,0x4C,0x2A,0x4D,0x2D,0xF6,0xFF,0x79,0x20,0x00,0x00, +0x9E,0x29,0x28,0x3E,0x02,0x00,0x01,0x7C,0x70,0x60,0x2E,0x30,0x0C,0x00,0x40,0xE3, +0xC0,0x48,0xC0,0xDB,0x14,0x30,0x55,0x90,0x40,0x3D,0xE2,0xFF,0xB9,0x3E,0x00,0x00, +0xEC,0x26,0x39,0x3F,0x00,0x00,0xEE,0x26,0x2C,0x3F,0x02,0x00,0x2D,0x30,0x02,0x00, +0x57,0x91,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x40,0x3D,0xE0,0xFF,0x6E,0x4A, +0xE0,0xFF,0x06,0x6D,0xAE,0x3E,0xE0,0xFF,0x08,0x60,0x2E,0x30,0xE0,0xFF,0x40,0x44, +0x80,0x3E,0x6E,0x4A,0xE2,0xFF,0x06,0x6D,0x2E,0x3F,0xE2,0xFF,0x08,0x60,0x2E,0x30, +0xE2,0xFF,0x40,0x44,0x00,0x3F,0xB9,0x4E,0xFC,0x00,0x56,0xA0,0x8F,0x54,0x40,0x3D, +0xFA,0xFF,0x6E,0xB0,0xFE,0xFF,0x06,0x6C,0x46,0x52,0x47,0xBC,0x8C,0x6D,0x4D,0x2D, +0xF6,0xFF,0x2E,0x30,0xFA,0xFF,0x6E,0xB0,0xFE,0xFF,0x00,0x6D,0x96,0x01,0xBC,0x3E, +0xE8,0x03,0x2E,0x3F,0xFA,0xFF,0x3C,0x3F,0xE8,0x03,0x2E,0x3F,0xE2,0xFF,0xB9,0x4E, +0xFC,0x00,0xE0,0xA1,0x8F,0x5C,0x00,0x3F,0x2E,0x3F,0xFE,0xFF,0xB9,0x4E,0xFC,0x00, +0xE0,0xA1,0x8F,0x58,0x40,0x3D,0xDA,0xFF,0xBC,0x3E,0xE8,0x03,0x2E,0x3F,0xFA,0xFF, +0x3C,0x3F,0xE8,0x03,0x2E,0x3F,0xE0,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x5C, +0x00,0x3F,0x2E,0x3F,0xFE,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x40,0x3D, +0xD8,0xFF,0xBC,0x3E,0xE8,0x03,0x2E,0x3F,0xFA,0xFF,0x3C,0x3F,0x18,0xFC,0x2E,0x3F, +0xE0,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x5C,0x00,0x3F,0x2E,0x3F,0xFC,0xFF, +0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x40,0x3D,0xDE,0xFF,0xBC,0x3E,0xE8,0x03, +0x2E,0x3F,0xFA,0xFF,0x3C,0x3F,0xE8,0x03,0x2E,0x3F,0xE2,0xFF,0xB9,0x4E,0xFC,0x00, +0xE0,0xA1,0x8F,0x5C,0x00,0x3F,0x2E,0x3F,0xFC,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1, +0x8F,0x58,0x40,0x3D,0xDC,0xFF,0xB9,0x3E,0x00,0x00,0xEE,0x26,0x39,0x3F,0x00,0x00, +0xEC,0x26,0x2E,0x3F,0xD8,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x40,0x3D, +0xD8,0xFF,0xB9,0x3E,0x00,0x00,0xEE,0x26,0x39,0x3F,0x00,0x00,0xEC,0x26,0x2E,0x3F, +0xDC,0xFF,0xB9,0x4E,0xFC,0x00,0xE0,0xA1,0x8F,0x58,0x40,0x3D,0xDC,0xFF,0x79,0x2A, +0x00,0x00,0x9E,0x29,0x6D,0x3D,0x02,0x00,0xF4,0xFF,0x7C,0x3B,0x03,0x00,0x02,0x00, +0xEE,0x4B,0xE4,0xFF,0x6E,0x28,0x08,0x00,0x14,0x30,0x6E,0xD0,0xDE,0xFF,0x6E,0x90, +0xDA,0xFF,0x80,0x3A,0x2C,0x30,0x02,0x00,0x6E,0xD0,0xDC,0xFF,0x6E,0x90,0xD8,0xFF, +0x40,0x3B,0x02,0x00,0x14,0x30,0x6E,0x90,0xDE,0xFF,0x6E,0x90,0xDA,0xFF,0x40,0x3B, +0x04,0x00,0x2C,0x30,0x02,0x00,0x6E,0x90,0xDC,0xFF,0x6E,0x90,0xD8,0xFF,0x40,0x3B, +0x06,0x00,0x54,0x3B,0x08,0x00,0x6C,0x3B,0x02,0x00,0x0A,0x00,0x79,0x2D,0x00,0x00, +0xA6,0x29,0xD4,0xFF,0xCD,0x23,0x00,0x00,0xA6,0x29,0x00,0x61,0x38,0xED,0xEE,0x23, +0xD4,0xFF,0x00,0x00,0xA6,0x29,0x79,0x20,0x00,0x00,0x9E,0x29,0x6E,0x31,0xF4,0xFF, +0x02,0x00,0x6E,0x2A,0x08,0x00,0x6E,0x28,0xF6,0xFF,0x2E,0x30,0xDA,0xFF,0x55,0x91, +0x2E,0x30,0xD8,0xFF,0x6D,0x91,0x02,0x00,0x2E,0x3E,0x0C,0x00,0x08,0x60,0x95,0x38, +0x6D,0x39,0x02,0x00,0x02,0x00,0x07,0x30,0x40,0xE3,0xC0,0x48,0xC0,0x99,0xCC,0xBB, +0xEC,0x66,0x9F,0x4A,0xDF,0x4C,0xC0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x03,0x79,0x2A,0x00,0x00,0xA2,0x29,0x8D,0x54,0x79,0x26,0x00,0x00, +0xCA,0x27,0x1D,0x3E,0x7C,0xBE,0x07,0x00,0x04,0x6E,0x47,0x4A,0x04,0x6C,0x40,0x42, +0x04,0x60,0x07,0x30,0x40,0x53,0x40,0x37,0x30,0x00,0x1D,0x3E,0x79,0xBE,0x00,0x00, +0x00,0x27,0x04,0x6C,0x47,0x4A,0x02,0x6C,0x01,0x7E,0x47,0x30,0xC8,0xD1,0xFC,0xD1, +0xFD,0x00,0x46,0x37,0x50,0x37,0x2C,0x00,0x1D,0x3E,0x47,0x53,0x7C,0xBE,0x06,0x00, +0x04,0x6C,0x47,0x4A,0x04,0x6C,0x02,0x70,0x02,0x60,0x07,0x30,0x40,0x37,0x3C,0x00, +0x1D,0x3E,0x79,0xBE,0x00,0x00,0x00,0x27,0x04,0x6C,0x47,0x4A,0x02,0x6C,0x01,0x7E, +0x47,0x30,0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0x46,0x37,0x50,0x37,0x38,0x00,0x8D,0x54, +0x1D,0x3E,0x79,0xBE,0x00,0x00,0x00,0x27,0x04,0x6C,0x47,0x4A,0x02,0x6C,0x01,0x7E, +0x47,0x30,0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0x46,0x37,0x50,0x37,0xA2,0x00,0x79,0x37, +0x00,0x00,0xBA,0x27,0x3A,0x00,0x7C,0x37,0x01,0x00,0x3E,0x00,0x1D,0x3E,0x7C,0xBE, +0x04,0x00,0x04,0x6E,0x47,0x4A,0x04,0x6C,0x40,0x42,0x02,0x60,0x07,0x30,0x40,0x37, +0x24,0x00,0x1D,0x3E,0x6B,0x0C,0x02,0x00,0x24,0x00,0x16,0x66,0x7C,0xBE,0x18,0x00, +0x06,0x6E,0x7C,0xBE,0x01,0x00,0x04,0x6C,0x01,0x70,0x02,0x60,0x07,0x30,0x00,0x3E, +0x14,0x60,0x7C,0xBE,0x0C,0x00,0x06,0x6E,0x7C,0xBE,0x01,0x00,0x04,0x6C,0x01,0x70, +0x02,0x60,0x07,0x30,0x00,0x3E,0x47,0x37,0x20,0x00,0x1D,0x3E,0x79,0xBE,0x00,0x00, +0x00,0x27,0x04,0x6C,0x47,0x4A,0x02,0x6C,0x01,0x7E,0x47,0x30,0xC8,0xD1,0xFC,0xD1, +0xFD,0x00,0x46,0x37,0x50,0x37,0x1E,0x00,0x55,0x37,0x2A,0x01,0x00,0x61,0x82,0xF4, +0x6B,0x42,0x28,0x01,0x79,0x37,0x00,0x00,0xB0,0x27,0x32,0x00,0x6B,0x42,0x2A,0x00, +0x6B,0x42,0x2E,0x00,0x7C,0x37,0x01,0x00,0x22,0x00,0x6B,0x42,0x2C,0x01,0x6B,0x42, +0x30,0x01,0x79,0x37,0x00,0x00,0xE6,0x26,0x2E,0x01,0x79,0x37,0x00,0x00,0xE8,0x26, +0x32,0x01,0x6B,0x42,0x02,0x00,0x79,0x27,0x00,0x00,0xCE,0x27,0x04,0x00,0xAB,0x42, +0x34,0x00,0x79,0x37,0xFC,0x00,0x28,0xEE,0x18,0x00,0x7C,0x27,0x00,0x00,0xC6,0x17, +0x14,0x00,0x79,0x37,0x00,0x00,0xE2,0x27,0x44,0x00,0x6B,0x42,0x1A,0x00,0x6B,0x42, +0x46,0x00,0x6B,0x42,0x26,0x00,0x6B,0x42,0x26,0x01,0x53,0x42,0x6B,0x42,0x12,0x00, +0x7C,0x28,0xFD,0x00,0x5E,0x33,0xEB,0x4B,0xA6,0x00,0x47,0x42,0x04,0x60,0xDC,0x3A, +0x47,0x52,0x7C,0xBE,0x10,0x00,0xF6,0x6D,0x6B,0x42,0x0A,0x00,0x79,0x37,0xFD,0x00, +0x50,0x33,0xA4,0x00,0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x06,0x00,0x04,0x00, +0x7C,0x3B,0x2D,0x00,0x08,0x00,0x79,0x2A,0x00,0x00,0xAA,0x29,0x7C,0x28,0x00,0x00, +0xE6,0x26,0x47,0x42,0x04,0x60,0xDC,0x3A,0x47,0x52,0x7C,0xBE,0x2D,0x00,0xF6,0x6D, +0x79,0x2A,0x00,0x00,0xAE,0x29,0x7C,0x28,0x00,0x00,0xA8,0x27,0x47,0x42,0x04,0x60, +0xDC,0x3A,0x47,0x52,0x7C,0xBE,0x0C,0x00,0xF6,0x6D,0xFC,0x33,0x01,0x00,0x00,0x00, +0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0x80,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x03,0xBC,0x2E,0x00,0x00,0x34,0x01,0x3C,0x3F,0x48,0x00,0xB9,0x4E, +0xFC,0x00,0xF6,0xFA,0x8F,0x54,0x40,0x2A,0x0D,0x20,0x0C,0x66,0x79,0x20,0x00,0x00, +0x9E,0x29,0x68,0x42,0x0C,0x00,0x5C,0x60,0x01,0x7E,0x7C,0x28,0x00,0x00,0x2E,0x7F, +0x0C,0x60,0x47,0x52,0xAC,0x4A,0x40,0x00,0x0A,0x67,0x6C,0x28,0x40,0x00,0x6C,0xBE, +0x28,0x00,0xEE,0x67,0xAC,0x4A,0x40,0x00,0x12,0x66,0x0D,0x20,0x40,0x29,0x40,0x00, +0xC0,0x23,0x00,0x00,0xCA,0x27,0xAD,0x42,0x40,0x00,0x14,0x60,0x6C,0x26,0x40,0x00, +0x0D,0x20,0x40,0x29,0x40,0x00,0xC0,0x23,0x00,0x00,0xCA,0x27,0x4B,0x2B,0x40,0x00, +0x79,0x20,0x00,0x00,0x9E,0x29,0x07,0x30,0x40,0x31,0x0C,0x00,0x40,0x3B,0x28,0x00, +0x00,0x61,0x6A,0xFD,0x9F,0x4A,0xDF,0x4C,0x80,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x03,0x79,0x20,0x00,0x00,0xCA,0x27,0x28,0x3E,0x28,0x00, +0x7C,0xBE,0x01,0x00,0x34,0x67,0x7C,0x2A,0x00,0x00,0x2E,0x7F,0x04,0x60,0x6D,0x2A, +0x40,0x00,0x6D,0x20,0x40,0x00,0x68,0xBE,0x28,0x00,0xF2,0x66,0x79,0x20,0x00,0x00, +0xCA,0x27,0x68,0x2B,0x40,0x00,0x40,0x00,0xB9,0x2E,0x00,0x00,0xCA,0x27,0x3C,0x3F, +0x49,0x00,0xB9,0x4E,0xFC,0x00,0xF6,0xFA,0x8F,0x54,0x9F,0x4A,0xDF,0x4C,0x80,0x20, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x07,0x79,0x26,0x00,0x00, +0xCA,0x27,0x79,0x20,0x00,0x00,0x9E,0x29,0x28,0x3C,0x06,0x00,0x7C,0xBC,0x10,0x00, +0x06,0x66,0x6B,0x42,0x0A,0x00,0x18,0x60,0x39,0x30,0x00,0x00,0x94,0x26,0x40,0xE9, +0x40,0xBC,0x08,0x66,0x7C,0x37,0x01,0x00,0x0A,0x00,0x04,0x60,0x40,0x42,0x16,0x60, +0x79,0x2A,0x00,0x00,0xA2,0x29,0xEB,0x49,0xA6,0x00,0x47,0x42,0x04,0x60,0xDD,0x38, +0x47,0x52,0x46,0xBE,0xF8,0x6D,0x9F,0x4A,0xDF,0x4C,0xC0,0x38,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0xC4,0xFF,0xE7,0x48,0x0C,0x01,0x79,0x20,0x00,0x00,0x9E,0x29,0x68,0x3D, +0x06,0x00,0xFC,0xFF,0x00,0x6F,0x26,0x07,0x79,0x2A,0x00,0x00,0x10,0x26,0x79,0x20, +0x00,0x00,0x9E,0x29,0x50,0x0C,0x0B,0x00,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70, +0x40,0x3D,0xC6,0xFF,0x08,0x67,0x7C,0x3D,0xFF,0xFF,0xFE,0xFF,0x08,0x60,0x79,0x3D, +0x00,0x00,0xF4,0x29,0xFE,0xFF,0x39,0x08,0x00,0x00,0x00,0x00,0xF5,0x29,0x08,0x67, +0xED,0x33,0x3A,0x00,0x00,0x00,0xFA,0x29,0x39,0x08,0x01,0x00,0x00,0x00,0xF5,0x29, +0x08,0x67,0xED,0x33,0x3E,0x00,0x00,0x00,0xF6,0x29,0x39,0x08,0x02,0x00,0x00,0x00, +0xF5,0x29,0x1A,0x67,0xED,0x33,0x36,0x00,0x00,0x00,0xFE,0x29,0xED,0x33,0x38,0x00, +0x00,0x00,0xFC,0x29,0xED,0x33,0x40,0x00,0x00,0x00,0xF8,0x29,0x0C,0x60,0x79,0x42, +0x00,0x00,0xFE,0x29,0x79,0x42,0x00,0x00,0xFC,0x29,0x39,0x08,0x04,0x00,0x00,0x00, +0xF5,0x29,0x08,0x67,0x7C,0x3D,0x01,0x00,0xEE,0xFF,0x04,0x60,0x6E,0x42,0xEE,0xFF, +0x55,0x0C,0x01,0x00,0x2C,0x66,0x40,0x42,0x2D,0x30,0x30,0x00,0x6D,0xB0,0x3C,0x00, +0x20,0x62,0x79,0x4A,0x00,0x00,0x00,0x2A,0x12,0x67,0x79,0x0C,0xFF,0xFF,0x00,0x00, +0xDC,0x29,0x08,0x66,0x7C,0x3D,0xFF,0xFF,0xEC,0xFF,0x04,0x60,0x6E,0x42,0xEC,0xFF, +0x06,0x60,0x7C,0x3D,0x01,0x00,0xEC,0xFF,0xED,0x23,0x4C,0x00,0x00,0x00,0xEE,0x29, +0xED,0x33,0x50,0x00,0x00,0x00,0xF2,0x29,0x39,0x30,0x00,0x00,0x02,0x17,0x6E,0x81, +0xFE,0xFF,0x39,0x30,0x00,0x00,0x02,0x17,0x00,0x60,0x92,0x00,0x6E,0x42,0xE2,0xFF, +0x00,0x60,0x9E,0x00,0x6E,0x4A,0xC6,0xFF,0x28,0x66,0x79,0x2D,0x00,0x00,0xAE,0x29, +0xC8,0xFF,0xEE,0x41,0xCC,0xFF,0xC8,0x23,0x00,0x00,0xAE,0x29,0x00,0x61,0xA6,0x0D, +0xEE,0x23,0xC8,0xFF,0x00,0x00,0xAE,0x29,0x79,0x20,0x00,0x00,0x9E,0x29,0x68,0x42, +0x04,0x00,0x39,0x30,0x00,0x00,0x06,0x17,0xC0,0x48,0xFC,0x81,0x02,0x00,0x6E,0x90, +0xEE,0xFF,0x40,0x3D,0xE2,0xFF,0x58,0x60,0x6E,0x4A,0xC6,0xFF,0x28,0x66,0x79,0x2D, +0x00,0x00,0xAE,0x29,0xC8,0xFF,0xEE,0x41,0xCC,0xFF,0xC8,0x23,0x00,0x00,0xAE,0x29, +0x00,0x61,0x62,0x0D,0xEE,0x23,0xC8,0xFF,0x00,0x00,0xAE,0x29,0x79,0x20,0x00,0x00, +0x9E,0x29,0x68,0x42,0x04,0x00,0x39,0x30,0x00,0x00,0x06,0x17,0x2E,0x32,0xEE,0xFF, +0x41,0xE3,0x41,0x90,0x40,0x3D,0xE2,0xFF,0x16,0x60,0x14,0x60,0x40,0x4A,0x00,0x67, +0x6C,0xFF,0x7C,0xB0,0x01,0x00,0x00,0x67,0x6C,0xFF,0x7C,0xB0,0x02,0x00,0xA8,0x67, +0x39,0x08,0x02,0x00,0x00,0x00,0xF5,0x29,0x0E,0x67,0x6D,0x3D,0x36,0x00,0xDE,0xFF, +0x6D,0x3D,0x38,0x00,0xDC,0xFF,0x08,0x60,0x6E,0x42,0xDE,0xFF,0x6E,0x42,0xDC,0xFF, +0x39,0x30,0x00,0x00,0x04,0x17,0x00,0x60,0xB2,0x00,0x6D,0x3D,0x28,0x00,0xE0,0xFF, +0x2E,0x30,0xDE,0xFF,0x6E,0xD1,0xE2,0xFF,0x00,0x60,0xB4,0x00,0x40,0x42,0x2D,0x30, +0x28,0x00,0x6D,0x90,0x2C,0x00,0x40,0x3D,0xE0,0xFF,0x40,0x42,0x2D,0x30,0x2C,0x00, +0xEE,0xC0,0xDC,0xFF,0x40,0x48,0x40,0x42,0x40,0x48,0xED,0x80,0x28,0x00,0x6E,0xD1, +0xE2,0xFF,0x00,0x60,0x8A,0x00,0x40,0x42,0x2D,0x30,0x28,0x00,0x6D,0x90,0x2A,0x00, +0x40,0x3D,0xE0,0xFF,0x40,0x42,0x2D,0x30,0x2A,0x00,0xEE,0xC0,0xDC,0xFF,0x40,0x48, +0x40,0x42,0x40,0x48,0xED,0x80,0x28,0x00,0x6E,0xD1,0xE2,0xFF,0x60,0x60,0x40,0x42, +0x2D,0x30,0x28,0x00,0x6D,0xD0,0x30,0x00,0x40,0x3D,0xE0,0xFF,0x50,0x60,0x40,0x42, +0x2D,0x30,0x28,0x00,0x6D,0xD0,0x2E,0x00,0x40,0x3D,0xE0,0xFF,0x40,0x42,0x2D,0x30, +0x2E,0x00,0xEE,0xC0,0xDE,0xFF,0x40,0x48,0x40,0x42,0x40,0x48,0xED,0x80,0x30,0x00, +0x6E,0xD1,0xE2,0xFF,0x28,0x60,0x6E,0x42,0xE0,0xFF,0x2E,0x30,0xDE,0xFF,0x6E,0xD0, +0xDC,0xFF,0x6E,0xD1,0xE2,0xFF,0x16,0x60,0x14,0x60,0x7C,0xB0,0x05,0x00,0x0E,0x62, +0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFD,0x00,0xEA,0x39,0x50,0x20,0xD0,0x4E,0x79,0x28, +0x00,0x00,0xA6,0x29,0x39,0x30,0x00,0x00,0x02,0x2A,0x6E,0x81,0xFE,0xFF,0x39,0x30, +0x00,0x00,0x02,0x2A,0x00,0x60,0x46,0x01,0x14,0x30,0x6E,0x90,0xE2,0xFF,0x6E,0x90, +0xEE,0xFF,0xC0,0x33,0x00,0x00,0xE6,0x29,0x40,0x3D,0xF6,0xFF,0x2C,0x30,0x02,0x00, +0x6E,0x90,0xE0,0xFF,0x6E,0x90,0xEE,0xFF,0xC0,0x33,0x00,0x00,0xE8,0x29,0x6D,0xD0, +0x28,0x00,0x6D,0xD0,0x3C,0x00,0x6E,0xD0,0xEC,0xFF,0x40,0x3D,0xF4,0xFF,0x6E,0x42, +0xF2,0xFF,0x7C,0x3D,0x01,0x00,0xF0,0xFF,0x00,0x60,0x1E,0x01,0x14,0x30,0x6E,0x90, +0xE0,0xFF,0x6E,0x90,0xEE,0xFF,0xC0,0x33,0x00,0x00,0xE6,0x29,0x6D,0xD0,0x28,0x00, +0x6D,0xD0,0x3C,0x00,0x6E,0xD0,0xEC,0xFF,0x40,0x3D,0xF6,0xFF,0x2C,0x30,0x02,0x00, +0x6E,0xD0,0xE2,0xFF,0x6E,0xD0,0xEE,0xFF,0x40,0x52,0xC0,0x33,0x00,0x00,0xE8,0x29, +0x40,0x3D,0xF4,0xFF,0x7C,0x3D,0x01,0x00,0xF2,0xFF,0x6E,0x42,0xF0,0xFF,0x00,0x60, +0xD8,0x00,0x14,0x30,0x6E,0xD0,0xE2,0xFF,0x6E,0xD0,0xEE,0xFF,0x40,0x52,0xC0,0x33, +0x00,0x00,0xE6,0x29,0x40,0x3D,0xF6,0xFF,0x2C,0x30,0x02,0x00,0x41,0x42,0x2D,0x32, +0x28,0x00,0x6D,0xD2,0x30,0x00,0x6E,0x92,0xE0,0xFF,0x41,0x90,0x6E,0x90,0xEE,0xFF, +0xC0,0x33,0x00,0x00,0xE8,0x29,0x40,0x42,0x2D,0x30,0x30,0x00,0x79,0xD0,0x00,0x00, +0xE8,0x29,0x41,0x42,0x2D,0x32,0x3C,0x00,0x6E,0xD2,0xEC,0xFF,0x41,0x90,0x40,0x3D, +0xF4,0xFF,0x6E,0x42,0xF2,0xFF,0x7C,0x3D,0xFF,0xFF,0xF0,0xFF,0x00,0x60,0x7A,0x00, +0x14,0x30,0x41,0x42,0x2D,0x32,0x28,0x00,0x6D,0xD2,0x30,0x00,0x6E,0x92,0xE0,0xFF, +0x41,0x90,0x6E,0x90,0xEE,0xFF,0xC0,0x33,0x00,0x00,0xE6,0x29,0x40,0x42,0x2D,0x30, +0x30,0x00,0x79,0xD0,0x00,0x00,0xE6,0x29,0x41,0x42,0x2D,0x32,0x3C,0x00,0x6E,0xD2, +0xEC,0xFF,0x41,0x90,0x40,0x3D,0xF6,0xFF,0x2C,0x30,0x02,0x00,0x6E,0x90,0xE2,0xFF, +0x6E,0x90,0xEE,0xFF,0xC0,0x33,0x00,0x00,0xE8,0x29,0x40,0x3D,0xF4,0xFF,0x7C,0x3D, +0xFF,0xFF,0xF2,0xFF,0x6E,0x42,0xF0,0xFF,0x1E,0x60,0x1C,0x60,0x40,0x4A,0x00,0x67, +0xB8,0xFE,0x7C,0xB0,0x84,0x03,0x00,0x67,0xF4,0xFE,0x7C,0xB0,0x08,0x07,0x00,0x67, +0x32,0xFF,0x7C,0xB0,0x8C,0x0A,0x88,0x67,0x79,0x20,0x00,0x00,0xCA,0x27,0xE8,0x33, +0xA2,0x00,0x00,0x00,0x04,0x2A,0xED,0x33,0x52,0x00,0x00,0x00,0xEC,0x29,0x79,0x4A, +0x00,0x00,0x00,0x2A,0x22,0x66,0x6E,0x4A,0xFE,0xFF,0x1C,0x66,0x2D,0x08,0x03,0x00, +0x43,0x00,0x14,0x67,0x6D,0x0C,0x08,0x00,0x34,0x00,0x0C,0x66,0xB9,0x4E,0xFC,0x00, +0xC4,0xF9,0x40,0x4A,0x00,0x66,0xE6,0x02,0xFC,0x33,0xFF,0x7F,0x00,0x00,0xDA,0x29, +0x6E,0x42,0xF8,0xFF,0x00,0x60,0x38,0x01,0x6E,0x30,0xF8,0xFF,0xC8,0xD1,0xF9,0xD1, +0x00,0x00,0xA2,0x29,0x50,0x3D,0xC4,0xFF,0x40,0x42,0x2D,0x30,0x24,0x00,0x6E,0xB0, +0xC4,0xFF,0x0C,0x62,0x40,0x42,0x2D,0x30,0x26,0x00,0x6E,0xB0,0xC4,0xFF,0x06,0x64, +0x7C,0x3D,0x3F,0x00,0xC4,0xFF,0x40,0x42,0x2D,0x30,0x24,0x00,0x6E,0x91,0xC4,0xFF, +0x6E,0x30,0xC4,0xFF,0xC8,0xD1,0xED,0xD1,0x48,0x00,0xD0,0x33,0x00,0x00,0xE2,0x29, +0x6D,0x20,0x48,0x00,0x6E,0x32,0xC4,0xFF,0x49,0x52,0xC9,0xD3,0x40,0x42,0x30,0x30, +0x00,0x98,0x79,0x90,0x00,0x00,0xE2,0x29,0xC0,0x33,0x00,0x00,0xEA,0x29,0x79,0x42, +0x00,0x00,0xE4,0x29,0xED,0x33,0x52,0x00,0x00,0x00,0xEC,0x29,0xB9,0x4E,0xFC,0x00, +0xAE,0xEE,0x79,0x2A,0x00,0x00,0x10,0x26,0x6E,0x4A,0xC6,0xFF,0x00,0x67,0x90,0x00, +0x39,0x30,0x00,0x00,0x14,0x17,0x79,0xD1,0x00,0x00,0xE6,0x29,0x39,0x30,0x00,0x00, +0x16,0x17,0x79,0xD1,0x00,0x00,0xE8,0x29,0x79,0x4A,0x00,0x00,0x18,0x17,0x1E,0x67, +0x39,0x30,0x00,0x00,0x1A,0x17,0x79,0xD1,0x00,0x00,0xE6,0x29,0x39,0x30,0x00,0x00, +0x1C,0x17,0x79,0xD1,0x00,0x00,0xE8,0x29,0x79,0x53,0x00,0x00,0x18,0x17,0x6E,0x30, +0xF8,0xFF,0xC8,0xD1,0xF9,0xD1,0x00,0x00,0xA2,0x29,0x50,0x0C,0x20,0x00,0x3E,0x66, +0x39,0x30,0x00,0x00,0x0A,0x17,0x79,0xD1,0x00,0x00,0xE6,0x29,0x39,0x30,0x00,0x00, +0x0C,0x17,0x79,0xD1,0x00,0x00,0xE8,0x29,0x79,0x4A,0x00,0x00,0x0E,0x17,0x1E,0x67, +0x39,0x30,0x00,0x00,0x10,0x17,0x79,0xD1,0x00,0x00,0xE6,0x29,0x39,0x30,0x00,0x00, +0x12,0x17,0x79,0xD1,0x00,0x00,0xE8,0x29,0x79,0x53,0x00,0x00,0x0E,0x17,0x2D,0x08, +0x01,0x00,0x43,0x00,0x14,0x67,0x6E,0x30,0xC4,0xFF,0x6D,0x22,0x44,0x00,0x30,0x10, +0x00,0x98,0x80,0x48,0x79,0xD1,0x00,0x00,0xE6,0x29,0x6E,0x52,0xF8,0xFF,0x2E,0x30, +0xF8,0xFF,0x6E,0xB0,0xFC,0xFF,0x00,0x6D,0xC0,0xFE,0x39,0x08,0x03,0x00,0x00,0x00, +0xF5,0x29,0x00,0x67,0x88,0x01,0xEE,0x33,0xF6,0xFF,0x00,0x00,0xC0,0x29,0xEE,0x33, +0xF4,0xFF,0x00,0x00,0xC2,0x29,0x39,0x30,0x00,0x00,0x02,0x2A,0xC0,0x48,0xFC,0x81, +0x08,0x07,0x40,0x48,0x40,0x4A,0x16,0x66,0xF9,0x33,0x00,0x00,0xE6,0x29,0x00,0x00, +0xC4,0x29,0xF9,0x33,0x00,0x00,0xC2,0x29,0x00,0x00,0xC6,0x29,0x14,0x60,0xF9,0x33, +0x00,0x00,0xC0,0x29,0x00,0x00,0xC4,0x29,0xF9,0x33,0x00,0x00,0xE8,0x29,0x00,0x00, +0xC6,0x29,0x39,0x08,0x01,0x00,0x00,0x00,0xF5,0x29,0x10,0x67,0x79,0x20,0x00,0x00, +0x10,0x26,0xE8,0x33,0x3E,0x00,0x00,0x00,0xBC,0x29,0x08,0x60,0xFC,0x33,0xFF,0xFF, +0x00,0x00,0xBC,0x29,0x79,0x3D,0x00,0x00,0x04,0x2A,0xC4,0xFF,0x2E,0x30,0xC4,0xFF, +0x7C,0xC0,0x01,0x00,0xC0,0x33,0x00,0x00,0xB2,0x29,0x2E,0x30,0xC4,0xFF,0x7C,0xC0, +0x02,0x00,0xC0,0x33,0x00,0x00,0xB4,0x29,0x2E,0x30,0xC4,0xFF,0x7C,0xC0,0x04,0x00, +0xC0,0x33,0x00,0x00,0xB6,0x29,0x2E,0x30,0xC4,0xFF,0x7C,0xC0,0x08,0x00,0xC0,0x33, +0x00,0x00,0xB8,0x29,0x79,0x20,0x00,0x00,0x10,0x26,0x68,0x3D,0x3C,0x00,0xFC,0xFF, +0x6E,0x42,0xFA,0xFF,0x00,0x60,0xBA,0x00,0x79,0x4A,0x00,0x00,0xD0,0x29,0x52,0x67, +0x79,0x3D,0x00,0x00,0xC0,0x29,0xEA,0xFF,0x79,0x3D,0x00,0x00,0xC4,0x29,0xE8,0xFF, +0x79,0x3D,0x00,0x00,0xC2,0x29,0xE6,0xFF,0x79,0x3D,0x00,0x00,0xC6,0x29,0xE4,0xFF, +0xB9,0x4E,0xFC,0x00,0x70,0xBF,0x40,0x4A,0x06,0x67,0xB9,0x4E,0xFC,0x00,0x44,0xA2, +0xEE,0x33,0xEA,0xFF,0x00,0x00,0xC0,0x29,0xEE,0x33,0xE8,0xFF,0x00,0x00,0xC4,0x29, +0xEE,0x33,0xE6,0xFF,0x00,0x00,0xC2,0x29,0xEE,0x33,0xE4,0xFF,0x00,0x00,0xC6,0x29, +0x06,0x60,0xB9,0x4E,0xFC,0x00,0x44,0xA2,0x2E,0x30,0xF2,0xFF,0x79,0xD1,0x00,0x00, +0xC0,0x29,0x2E,0x30,0xF2,0xFF,0x79,0xD1,0x00,0x00,0xC4,0x29,0x2E,0x30,0xF0,0xFF, +0x79,0xD1,0x00,0x00,0xC2,0x29,0x2E,0x30,0xF0,0xFF,0x79,0xD1,0x00,0x00,0xC6,0x29, +0x39,0x08,0x00,0x00,0x00,0x00,0xBD,0x29,0x14,0x67,0x39,0x30,0x00,0x00,0xBC,0x29, +0x40,0xE2,0x7C,0x80,0x00,0x80,0xC0,0x33,0x00,0x00,0xBC,0x29,0x0E,0x60,0x39,0x30, +0x00,0x00,0xBC,0x29,0x40,0xE2,0xC0,0x33,0x00,0x00,0xBC,0x29,0x6E,0x52,0xFA,0xFF, +0x2E,0x30,0xFA,0xFF,0x6E,0xB0,0xFC,0xFF,0x00,0x6D,0x3E,0xFF,0x9F,0x4A,0xDF,0x4C, +0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x0C,0x01,0xFC,0x33, +0xFF,0x7F,0x00,0x00,0xA8,0x27,0xFC,0x33,0xFF,0x7F,0x00,0x00,0xAA,0x27,0x79,0x42, +0x00,0x00,0xAC,0x27,0x79,0x42,0x00,0x00,0xAE,0x27,0xFC,0x23,0xFD,0x00,0x50,0x3A, +0x00,0x00,0xD2,0x27,0xB9,0x42,0x00,0x00,0xDA,0x27,0xB9,0x42,0x00,0x00,0xDE,0x27, +0x79,0x3D,0xFD,0x00,0x50,0x3A,0xFA,0xFF,0x7C,0x28,0x00,0x00,0xD2,0x27,0x6E,0x42, +0xFE,0xFF,0x6E,0x42,0xFC,0xFF,0x00,0x60,0xAA,0x00,0x2D,0x08,0x00,0x00,0x43,0x00, +0x06,0x67,0xCD,0x23,0x00,0x00,0xCE,0x27,0x15,0x30,0x6E,0xB0,0xFA,0xFF,0x08,0x67, +0x6E,0x52,0xFC,0xFF,0x55,0x3D,0xFA,0xFF,0x55,0x0C,0x01,0x00,0x54,0x66,0x39,0x30, +0x00,0x00,0xA8,0x27,0x6D,0xB0,0x32,0x00,0x08,0x63,0xED,0x33,0x32,0x00,0x00,0x00, +0xA8,0x27,0x39,0x30,0x00,0x00,0xAA,0x27,0x6D,0xB0,0x28,0x00,0x08,0x63,0xED,0x33, +0x28,0x00,0x00,0x00,0xAA,0x27,0x39,0x30,0x00,0x00,0xAC,0x27,0x6D,0xB0,0x32,0x00, +0x08,0x64,0xED,0x33,0x32,0x00,0x00,0x00,0xAC,0x27,0x39,0x30,0x00,0x00,0xAE,0x27, +0x6D,0xB0,0x28,0x00,0x08,0x64,0xED,0x33,0x28,0x00,0x00,0x00,0xAE,0x27,0x6E,0x52, +0xFE,0xFF,0x2D,0x08,0x02,0x00,0x43,0x00,0x1E,0x66,0xED,0x23,0x4C,0x00,0x00,0x00, +0xEE,0x29,0xED,0x33,0x50,0x00,0x00,0x00,0xF2,0x29,0xED,0x33,0x52,0x00,0x00,0x00, +0xEC,0x29,0xB9,0x4E,0xFC,0x00,0x06,0xFB,0x6D,0x2A,0x54,0x00,0x0D,0x20,0x00,0x66, +0x5A,0xFF,0x5C,0x2A,0x0D,0x20,0x00,0x66,0x52,0xFF,0xEE,0x33,0xFE,0xFF,0x00,0x00, +0xF0,0x26,0x6E,0x52,0xFC,0xFF,0x2E,0x30,0xFC,0xFF,0xC0,0x33,0x00,0x00,0xFA,0x26, +0xC0,0x33,0x00,0x00,0xE2,0x27,0xF9,0x23,0x00,0x00,0xCE,0x27,0x00,0x00,0x10,0x26, +0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xE7,0x48, +0x1C,0x07,0x79,0x20,0x00,0x00,0x10,0x26,0x10,0x3E,0x79,0x20,0x00,0x00,0xCA,0x27, +0x68,0x42,0x12,0x00,0x7C,0x2D,0x00,0x00,0xD2,0x27,0xFC,0xFF,0x0C,0x60,0x55,0xBE, +0x18,0x67,0x6D,0x2A,0x54,0x00,0x0D,0x20,0xF4,0x66,0x6E,0x20,0xFC,0xFF,0x50,0x2A, +0x0D,0x20,0xAE,0x58,0xFC,0xFF,0x80,0x4A,0xE4,0x66,0x4D,0x28,0x79,0x20,0x00,0x00, +0xA6,0x29,0x28,0x3C,0x02,0x00,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x4A,0x2A,0x01, +0x0C,0x66,0x39,0x30,0x00,0x00,0xE8,0x26,0x40,0x52,0x46,0x90,0x00,0x3C,0x0A,0x60, +0x4D,0x28,0x6D,0x2A,0x54,0x00,0x0D,0x20,0x0A,0x67,0x6D,0xBC,0x28,0x00,0x04,0x65, +0x55,0xBE,0xEC,0x67,0x6E,0x20,0xFC,0xFF,0x50,0x2A,0x0D,0x20,0xAE,0x58,0xFC,0xFF, +0x80,0x4A,0xDA,0x66,0x0C,0x20,0xC0,0x23,0x00,0x00,0x10,0x26,0x79,0x22,0x00,0x00, +0xCA,0x27,0x40,0x23,0x04,0x00,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x42,0x46,0x00, +0x6C,0xBC,0x28,0x00,0x36,0x67,0x39,0x2F,0x00,0x00,0xCA,0x27,0x06,0x3F,0x2C,0x3F, +0x28,0x00,0xB9,0x4E,0xFC,0x00,0x2A,0xEE,0x8F,0x58,0x5F,0x20,0x40,0x31,0x08,0x00, +0xC0,0x33,0x00,0x00,0xDC,0x29,0x79,0x20,0x00,0x00,0xCA,0x27,0x79,0x31,0x00,0x00, +0xDE,0x29,0x1C,0x00,0x6A,0x61,0x79,0x28,0x00,0x00,0x10,0x26,0x79,0x20,0x00,0x00, +0x9E,0x29,0x7C,0x31,0x02,0x00,0x04,0x00,0x79,0x26,0x00,0x00,0xAE,0x29,0xEC,0x36, +0x32,0x00,0x2C,0x3C,0x28,0x00,0xC6,0x36,0xEC,0x36,0x34,0x00,0x06,0x30,0x6C,0xD0, +0x30,0x00,0x40,0x52,0xC0,0x36,0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x9F,0x4A, +0xDF,0x4C,0xC0,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x47,0x42,0x04,0x60,0xDD,0x18,0x47,0x52, +0x7C,0xBE,0x20,0x00,0xF6,0x6D,0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x79,0x2A,0x00,0x00,0xCA,0x27,0x6D,0x28, +0x04,0x00,0xED,0x47,0x48,0x00,0x94,0x36,0x2C,0x30,0x02,0x00,0x40,0xE3,0x40,0x37, +0x02,0x00,0x8B,0x2E,0x97,0x58,0x0C,0x2F,0x97,0x58,0xAC,0x61,0x8F,0x58,0x6C,0x37, +0x24,0x00,0x24,0x00,0x6C,0x37,0x26,0x00,0x26,0x00,0x79,0x0C,0xFF,0xFF,0x00,0x00, +0xDC,0x29,0x2C,0x66,0x40,0x42,0x2C,0x30,0x28,0x00,0x48,0xE3,0x40,0x52,0x40,0x37, +0x28,0x00,0x40,0x42,0x2C,0x30,0x2A,0x00,0x48,0xE3,0x40,0x52,0x40,0x37,0x2A,0x00, +0x40,0x42,0x2C,0x30,0x2C,0x00,0x48,0xE3,0x40,0x52,0x40,0x37,0x2C,0x00,0x2A,0x60, +0xAC,0x3E,0x28,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x28,0x00,0xAC,0x3E, +0x2A,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x2A,0x00,0xAC,0x3E,0x2C,0x00, +0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x2C,0x00,0xAC,0x3E,0x2E,0x00,0xB9,0x4E, +0xFC,0x00,0x5C,0xEE,0x40,0x37,0x2E,0x00,0xAC,0x3E,0x30,0x00,0xB9,0x4E,0xFC,0x00, +0x5C,0xEE,0x40,0x37,0x30,0x00,0xAC,0x3E,0x32,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE, +0x40,0x37,0x32,0x00,0xAC,0x3E,0x34,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37, +0x34,0x00,0xAC,0x3E,0x36,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x36,0x00, +0xAC,0x3E,0x38,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x38,0x00,0xAC,0x3E, +0x3A,0x00,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x3A,0x00,0xAC,0x3E,0x3C,0x00, +0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0x40,0x37,0x3C,0x00,0x6C,0x37,0x3E,0x00,0x3E,0x00, +0x6C,0x37,0x40,0x00,0x40,0x00,0x6C,0x37,0x42,0x00,0x42,0x00,0x6C,0x27,0x44,0x00, +0x44,0x00,0x6C,0x27,0x48,0x00,0x48,0x00,0x6C,0x27,0x4C,0x00,0x4C,0x00,0x6C,0x37, +0x50,0x00,0x50,0x00,0x6C,0x37,0x52,0x00,0x52,0x00,0x7C,0x3B,0x01,0x00,0x46,0x00, +0x0B,0x20,0xC0,0x23,0x00,0x00,0x10,0x26,0x40,0x2B,0x04,0x00,0x9F,0x4A,0xDF,0x4C, +0x00,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x1C,0x07,0x79,0x20, +0x00,0x00,0x10,0x26,0x50,0x3D,0xFE,0xFF,0x79,0x20,0x00,0x00,0xCA,0x27,0x7C,0x31, +0x01,0x00,0x12,0x00,0x7C,0x2D,0x00,0x00,0xD2,0x27,0xFA,0xFF,0x10,0x60,0x15,0x30, +0x6E,0xB0,0xFE,0xFF,0x18,0x67,0x6D,0x2A,0x54,0x00,0x0D,0x20,0xF0,0x66,0x6E,0x20, +0xFA,0xFF,0x50,0x2A,0x0D,0x20,0xAE,0x58,0xFA,0xFF,0x80,0x4A,0xE0,0x66,0x4D,0x28, +0x4C,0x2D,0xF6,0xFF,0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E,0x16,0x60,0x4D,0x28, +0x06,0x30,0x40,0xE3,0x40,0xBE,0x04,0x6D,0x4D,0x2D,0xF6,0xFF,0x6D,0x2A,0x54,0x00, +0x0D,0x20,0x12,0x67,0x2D,0x3C,0x02,0x00,0x06,0x30,0x40,0xBE,0x08,0x6D,0x15,0x30, +0x6E,0xB0,0xFE,0xFF,0xD8,0x67,0x6E,0x20,0xFA,0xFF,0x50,0x2A,0x0D,0x20,0xAE,0x58, +0xFA,0xFF,0x80,0x4A,0xC6,0x66,0x79,0x20,0x00,0x00,0xCA,0x27,0x0C,0x20,0x40,0x21, +0x04,0x00,0xC0,0x23,0x00,0x00,0x10,0x26,0x79,0x20,0x00,0x00,0xCA,0x27,0x68,0x42, +0x46,0x00,0x6C,0xBE,0x02,0x00,0x48,0x67,0x6E,0x20,0xF6,0xFF,0x28,0x3C,0x02,0x00, +0x46,0xE3,0x6C,0xBC,0x02,0x00,0x38,0x6F,0x47,0xBC,0x34,0x6E,0x79,0x20,0x00,0x00, +0xCA,0x27,0xFF,0x70,0x40,0x31,0x08,0x00,0xC0,0x33,0x00,0x00,0xDC,0x29,0x79,0x20, +0x00,0x00,0xCA,0x27,0x7C,0x31,0x01,0x00,0x1C,0x00,0x79,0x20,0x00,0x00,0xCA,0x27, +0x6E,0x21,0xF6,0xFF,0x04,0x00,0x00,0x61,0xB8,0xFD,0x79,0x28,0x00,0x00,0x10,0x26, +0x79,0x26,0x00,0x00,0x9E,0x29,0x7C,0x37,0x01,0x00,0x08,0x00,0x7C,0x37,0x02,0x00, +0x04,0x00,0x79,0x20,0x00,0x00,0xAA,0x29,0xAC,0x30,0x02,0x00,0x79,0x26,0x00,0x00, +0xAE,0x29,0xEC,0x36,0x32,0x00,0x2C,0x3E,0x28,0x00,0xC7,0x36,0xEC,0x36,0x34,0x00, +0x07,0x30,0x6C,0xD0,0x30,0x00,0x40,0x52,0xC0,0x36,0xFC,0x33,0x01,0x00,0x00,0x00, +0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0xC0,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x30,0x79,0xC0,0x00,0x00,0x90,0x26,0x79,0x22, +0x00,0x00,0xCA,0x27,0x40,0x33,0x1A,0x00,0x79,0x22,0x00,0x00,0xAA,0x29,0x80,0x32, +0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00,0x08,0x00,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x07,0x79,0x26,0x00,0x00,0xCA,0x27,0x79,0x28, +0x00,0x00,0xA2,0x29,0x79,0x2A,0x00,0x00,0xAA,0x29,0x1C,0x3E,0x47,0x4A,0x06,0x6D, +0x7C,0xBE,0x02,0x00,0x02,0x6F,0x47,0x42,0x07,0x30,0xC0,0x3A,0x40,0x37,0x26,0x00, +0x14,0x3E,0x47,0x4A,0x06,0x6D,0x7C,0xBE,0x05,0x00,0x02,0x6F,0x47,0x42,0x07,0x30, +0x80,0x3A,0x40,0x37,0x26,0x01,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x02,0x00, +0x08,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x38,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x30,0x7C,0xD0,0xC2,0x01,0xC0,0x48,0xFC,0x81, +0x84,0x03,0xFC,0xC1,0x84,0x03,0x79,0x22,0x00,0x00,0xCA,0x27,0x80,0x32,0x79,0x22, +0x00,0x00,0xAA,0x29,0x80,0x32,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00, +0x08,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xEA,0xFF,0xE7,0x48,0x0C,0x03,0x79,0x2A, +0x00,0x00,0x10,0x26,0x6D,0x3D,0x02,0x00,0xFA,0xFF,0x6D,0x3D,0x28,0x00,0xF0,0xFF, +0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E,0x7C,0x28,0x00,0x00,0xD2,0x27,0x0C,0x60, +0x55,0xBE,0x14,0x67,0x6D,0x2A,0x54,0x00,0x0D,0x20,0xF4,0x66,0x5C,0x2A,0x0D,0x20, +0xEE,0x66,0x7C,0x2A,0xFD,0x00,0x50,0x3A,0x0D,0x20,0xC0,0x23,0x00,0x00,0x10,0x26, +0x79,0x22,0x00,0x00,0xCA,0x27,0x40,0x23,0x04,0x00,0x79,0x2D,0x00,0x00,0xA2,0x29, +0xFC,0xFF,0x79,0x2D,0x00,0x00,0xA6,0x29,0xEA,0xFF,0x79,0x2D,0x00,0x00,0xAE,0x29, +0xF6,0xFF,0xEE,0x41,0xFA,0xFF,0xC8,0x23,0x00,0x00,0xA2,0x29,0xEE,0x41,0xEE,0xFF, +0xC8,0x23,0x00,0x00,0xAE,0x29,0x08,0x20,0xC0,0x23,0x00,0x00,0xA6,0x29,0x79,0x20, +0x00,0x00,0xCA,0x27,0x68,0x4A,0x12,0x00,0x06,0x67,0x00,0x61,0x5A,0xFD,0x04,0x60, +0x00,0x61,0xB8,0xFA,0xEE,0x23,0xFC,0xFF,0x00,0x00,0xA2,0x29,0xEE,0x23,0xEA,0xFF, +0x00,0x00,0xA6,0x29,0xEE,0x23,0xF6,0xFF,0x00,0x00,0xAE,0x29,0x79,0x20,0x00,0x00, +0x9E,0x29,0x68,0x42,0x04,0x00,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x01,0x00, +0x08,0x00,0x79,0x20,0x00,0x00,0xAA,0x29,0x79,0x22,0x00,0x00,0x10,0x26,0x91,0x30, +0x9F,0x4A,0xDF,0x4C,0x80,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x00,0x03,0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E,0x79,0xBE,0x00,0x00,0x00,0x27, +0x04,0x6C,0x47,0x4A,0x02,0x6C,0x01,0x7E,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31, +0x01,0x00,0x08,0x00,0x79,0x20,0x00,0x00,0xAA,0x29,0x87,0x30,0x79,0x20,0x00,0x00, +0xCA,0x27,0x47,0x32,0xC9,0xD3,0xFC,0xD3,0xFD,0x00,0x46,0x37,0x51,0x31,0xA2,0x00, +0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x1C,0x03,0x79,0x26,0x00,0x00,0xCA,0x27,0x79,0x28,0x00,0x00,0x10,0x26,0x79,0x2A, +0x00,0x00,0xAA,0x29,0xD4,0x3A,0x6B,0x30,0xA2,0x00,0xC8,0xD1,0xFC,0xD1,0xFD,0x00, +0x66,0x37,0xD0,0x3A,0xD3,0x3A,0xEB,0x3A,0x26,0x00,0xEB,0x3A,0x26,0x01,0xAB,0x3A, +0x28,0x01,0x79,0x2A,0x00,0x00,0xAE,0x29,0xEC,0x3A,0x32,0x00,0x2C,0x3E,0x28,0x00, +0xC7,0x3A,0xEC,0x3A,0x34,0x00,0x07,0x30,0x6C,0xD0,0x30,0x00,0x40,0x52,0x80,0x3A, +0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x02,0x00,0x04,0x00,0x7C,0x3B,0x06,0x00, +0x08,0x00,0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0x80,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x0C,0x0F,0x79,0x28,0x00,0x00, +0x10,0x26,0x79,0x2A,0x00,0x00,0xA2,0x29,0x79,0x42,0x00,0x00,0x06,0x17,0x2C,0x3A, +0x24,0x00,0x79,0x20,0x00,0x00,0x9E,0x29,0x68,0x3D,0x06,0x00,0xFE,0xFF,0x47,0x42, +0x2A,0x60,0x1D,0x3C,0x45,0x9C,0x6C,0x20,0x48,0x00,0x46,0x32,0x49,0x52,0xC9,0xD3, +0x40,0x42,0x30,0x30,0x00,0x98,0x46,0x32,0xC9,0xD3,0xEC,0xD3,0x48,0x00,0x41,0x42, +0x11,0x32,0x41,0x90,0x79,0xD1,0x00,0x00,0x06,0x17,0x47,0x52,0x6E,0xBE,0xFE,0xFF, +0xD0,0x6D,0x79,0x4A,0x00,0x00,0x00,0x2A,0x24,0x67,0x79,0x0C,0xFF,0xFF,0x00,0x00, +0xDC,0x29,0x08,0x66,0xF9,0xE1,0x00,0x00,0x06,0x17,0x12,0x60,0xB9,0x3E,0x00,0x00, +0x06,0x17,0xB9,0x4E,0xFC,0x00,0x5C,0xEE,0xC0,0x33,0x00,0x00,0x06,0x17,0x39,0x08, +0x00,0x00,0x00,0x00,0xF5,0x29,0x18,0x67,0x2C,0x08,0x03,0x00,0x43,0x00,0x10,0x66, +0x40,0x42,0x2C,0x30,0x3A,0x00,0xEE,0xC0,0xFE,0xFF,0x79,0xD1,0x00,0x00,0x06,0x17, +0x39,0x08,0x02,0x00,0x00,0x00,0xF5,0x29,0x10,0x67,0x40,0x42,0x2C,0x30,0x36,0x00, +0x6C,0xD0,0x38,0x00,0x79,0xD1,0x00,0x00,0x06,0x17,0x40,0x42,0x2C,0x30,0x28,0x00, +0x6C,0xD0,0x30,0x00,0x40,0x52,0xC0,0x33,0x00,0x00,0x08,0x17,0x39,0x08,0x04,0x00, +0x00,0x00,0xF5,0x29,0x12,0x67,0x2E,0x30,0xFE,0xFF,0x40,0xE3,0x79,0xD1,0x00,0x00, +0x06,0x17,0x79,0x54,0x00,0x00,0x08,0x17,0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31, +0x04,0x00,0x04,0x00,0x79,0x2A,0x00,0x00,0xAE,0x29,0x39,0x30,0x00,0x00,0x02,0x2A, +0x00,0x60,0x8E,0x00,0x5D,0x42,0x5D,0x42,0xF9,0x3A,0x00,0x00,0x06,0x17,0x5D,0x42, +0xF9,0x3A,0x00,0x00,0x06,0x17,0xF9,0x3A,0x00,0x00,0x08,0x17,0x5D,0x42,0xB9,0x3A, +0x00,0x00,0x08,0x17,0x00,0x60,0x82,0x00,0xF9,0x3A,0x00,0x00,0x08,0x17,0x5D,0x42, +0xF9,0x3A,0x00,0x00,0x08,0x17,0xF9,0x3A,0x00,0x00,0x06,0x17,0x5D,0x42,0xF9,0x3A, +0x00,0x00,0x06,0x17,0x5D,0x42,0x55,0x42,0x5E,0x60,0xF9,0x3A,0x00,0x00,0x06,0x17, +0xF9,0x3A,0x00,0x00,0x08,0x17,0x5D,0x42,0xF9,0x3A,0x00,0x00,0x08,0x17,0x5D,0x42, +0x5D,0x42,0xF9,0x3A,0x00,0x00,0x06,0x17,0x55,0x42,0x3C,0x60,0x5D,0x42,0xF9,0x3A, +0x00,0x00,0x08,0x17,0x5D,0x42,0x5D,0x42,0xF9,0x3A,0x00,0x00,0x08,0x17,0x5D,0x42, +0xF9,0x3A,0x00,0x00,0x06,0x17,0xB9,0x3A,0x00,0x00,0x08,0x17,0x1A,0x60,0x18,0x60, +0x40,0x4A,0x00,0x67,0x70,0xFF,0x7C,0xB0,0x84,0x03,0x8C,0x67,0x7C,0xB0,0x08,0x07, +0xA8,0x67,0x7C,0xB0,0x8C,0x0A,0xC4,0x67,0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17, +0x9F,0x4A,0xDF,0x4C,0xE0,0x30,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x0C,0x03,0x79,0x28,0x00,0x00,0x10,0x26,0x79,0x2A,0x00,0x00,0xAE,0x29,0x6D,0x42, +0x04,0x00,0x6D,0x42,0x08,0x00,0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x3E,0x6C,0xBE, +0x24,0x00,0x06,0x65,0x6C,0xBE,0x26,0x00,0x0E,0x63,0x79,0x20,0x00,0x00,0xAA,0x29, +0xBC,0x30,0xFF,0xFF,0x00,0x60,0x7A,0x00,0x79,0x20,0x00,0x00,0xAA,0x29,0x87,0x30, +0x6C,0x9E,0x24,0x00,0x6C,0x20,0x48,0x00,0x47,0x32,0x49,0x52,0xC9,0xD3,0x40,0x42, +0x30,0x30,0x00,0x98,0x47,0x32,0xC9,0xD3,0xEC,0xD3,0x48,0x00,0x41,0x42,0x11,0x32, +0x41,0x90,0x80,0x3A,0x79,0x4A,0x00,0x00,0x00,0x2A,0x18,0x67,0x79,0x0C,0xFF,0xFF, +0x00,0x00,0xDC,0x29,0x04,0x66,0xD5,0xE1,0x0A,0x60,0x95,0x3E,0xB9,0x4E,0xFC,0x00, +0x5C,0xEE,0x80,0x3A,0x2C,0x08,0x01,0x00,0x43,0x00,0x24,0x67,0x6C,0x20,0x44,0x00, +0x47,0x32,0xC9,0xD2,0x30,0x10,0x00,0x90,0x80,0x48,0x40,0x3B,0x04,0x00,0x6C,0x20, +0x44,0x00,0x47,0x32,0xC9,0xD2,0x30,0x10,0x01,0x90,0x80,0x48,0x40,0x3B,0x08,0x00, +0x79,0x2A,0x00,0x00,0x9E,0x29,0x7C,0x3B,0x03,0x00,0x04,0x00,0x7C,0x3B,0x01,0x00, +0x08,0x00,0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0x80,0x30, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x1C,0x07,0x79,0x20,0x00,0x00, +0xA2,0x29,0x10,0x3C,0x7C,0x2D,0x00,0x00,0xD2,0x27,0xFA,0xFF,0x47,0x42,0x7C,0x3D, +0xFF,0xFF,0xFE,0xFF,0x1C,0x60,0x13,0x30,0x6E,0xB0,0xFE,0xFF,0x0C,0x67,0x53,0x3D, +0xFE,0xFF,0x47,0x52,0x07,0x30,0x40,0xBC,0x1E,0x67,0x6B,0x26,0x54,0x00,0x0B,0x20, +0xE4,0x66,0x6E,0x20,0xFA,0xFF,0x50,0x26,0x0B,0x20,0xAE,0x58,0xFA,0xFF,0x80,0x4A, +0xD4,0x66,0x7C,0x26,0xFD,0x00,0x50,0x3A,0x79,0x28,0x00,0x00,0xAA,0x29,0xD3,0x38, +0x01,0x7E,0xEB,0x4B,0x04,0x00,0x02,0x60,0x47,0x52,0x1D,0x10,0x80,0x48,0xC0,0x38, +0xF6,0x66,0x04,0x60,0x5C,0x42,0x47,0x52,0x7C,0xBE,0x21,0x00,0xF6,0x6D,0x79,0x20, +0x00,0x00,0x9E,0x29,0x7C,0x31,0x21,0x00,0x08,0x00,0x9F,0x4A,0xDF,0x4C,0xC0,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x79,0x28,0x00,0x00, +0x10,0x26,0x79,0x2A,0x00,0x00,0xAA,0x29,0xEC,0x3A,0x24,0x00,0xAC,0x3A,0x26,0x00, +0x79,0x2A,0x00,0x00,0xAE,0x29,0xEC,0x3A,0x34,0x00,0xEC,0x3A,0x30,0x00,0x39,0x08, +0x00,0x00,0x00,0x00,0xF5,0x29,0x06,0x67,0xEC,0x3A,0x3A,0x00,0x02,0x60,0x5D,0x42, +0xEC,0x3A,0x2E,0x00,0x39,0x08,0x02,0x00,0x00,0x00,0xF5,0x29,0x0E,0x67,0xEC,0x3A, +0x36,0x00,0xEC,0x3A,0x2C,0x00,0xEC,0x3A,0x38,0x00,0x08,0x60,0x5D,0x42,0xEC,0x3A, +0x2C,0x00,0x5D,0x42,0xEC,0x3A,0x2A,0x00,0x5D,0x42,0xAC,0x3A,0x28,0x00,0x79,0x2A, +0x00,0x00,0x9E,0x29,0x7C,0x3B,0x05,0x00,0x04,0x00,0x7C,0x3B,0x02,0x00,0x08,0x00, +0xFC,0x33,0x01,0x00,0x00,0x00,0x1E,0x17,0x9F,0x4A,0xDF,0x4C,0x00,0x30,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xDA,0xFF,0xE7,0x48,0x04,0x1F,0x79,0x2A,0x00,0x00,0x9E,0x29, +0x8D,0x5C,0x15,0x30,0x40,0x3D,0xFA,0xFF,0x40,0x55,0x80,0x3A,0x40,0x3D,0xF4,0xFF, +0x79,0x2A,0x00,0x00,0xA2,0x29,0x5D,0x3D,0xF8,0xFF,0x5D,0x3D,0xF6,0xFF,0x79,0x2D, +0x00,0x00,0xA2,0x29,0xF0,0xFF,0xCD,0x23,0x00,0x00,0xA2,0x29,0x79,0x2D,0x00,0x00, +0xAE,0x29,0xEC,0xFF,0xEE,0x41,0xDC,0xFF,0xC8,0x23,0x00,0x00,0xAE,0x29,0x47,0x42, +0x6E,0x42,0xFE,0xFF,0x0C,0x60,0x5D,0x0C,0x20,0x00,0x04,0x66,0x6E,0x52,0xFE,0xFF, +0x47,0x52,0x6E,0xBE,0xF4,0xFF,0xEE,0x6D,0x00,0x61,0xDA,0xFB,0x79,0x20,0x00,0x00, +0x9E,0x29,0x68,0x42,0x04,0x00,0x79,0x20,0x00,0x00,0xA6,0x29,0x68,0x3D,0x04,0x00, +0xDA,0xFF,0x6E,0x4A,0xF8,0xFF,0x00,0x67,0x42,0x01,0x6E,0x4A,0xFE,0xFF,0x00,0x67, +0x3A,0x01,0x2E,0x3A,0xDA,0xFF,0x79,0x9A,0x00,0x00,0x06,0x17,0xC5,0x48,0xEE,0x8B, +0xFE,0xFF,0x2E,0x30,0xDA,0xFF,0x79,0x90,0x00,0x00,0x06,0x17,0xC0,0x48,0xEE,0x81, +0xFE,0xFF,0x40,0x48,0xC0,0x33,0x00,0x00,0x0E,0x17,0x79,0x4A,0x00,0x00,0x0E,0x17, +0x12,0x6C,0xFF,0x7C,0x39,0x30,0x00,0x00,0x0E,0x17,0x40,0x44,0xC0,0x33,0x00,0x00, +0x0E,0x17,0x02,0x60,0x01,0x7C,0x6E,0x4A,0xF6,0xFF,0x50,0x67,0x79,0x20,0x00,0x00, +0x10,0x26,0x40,0x42,0x28,0x30,0x34,0x00,0x48,0xE2,0x40,0x3D,0xFC,0xFF,0x6E,0xBA, +0xFC,0xFF,0x0A,0x6F,0x2E,0x3A,0xFC,0xFF,0x79,0x42,0x00,0x00,0x0E,0x17,0x2E,0x30, +0xFC,0xFF,0x40,0x44,0x40,0xBA,0x0E,0x6C,0x2E,0x30,0xFC,0xFF,0x40,0x44,0x00,0x3A, +0x79,0x42,0x00,0x00,0x0E,0x17,0x05,0x30,0xEE,0xC1,0xFE,0xFF,0x06,0x32,0xF9,0xC3, +0x00,0x00,0x0E,0x17,0x41,0xD0,0x79,0xD1,0x00,0x00,0x06,0x17,0x39,0x30,0x00,0x00, +0x02,0x2A,0x00,0x60,0x7E,0x00,0xC5,0x33,0x00,0x00,0x0A,0x17,0x79,0x42,0x00,0x00, +0x0C,0x17,0xC6,0x33,0x00,0x00,0x10,0x17,0x79,0x42,0x00,0x00,0x12,0x17,0x00,0x60, +0x78,0x00,0x79,0x42,0x00,0x00,0x0A,0x17,0x05,0x30,0x40,0x44,0xC0,0x33,0x00,0x00, +0x0C,0x17,0x79,0x42,0x00,0x00,0x10,0x17,0x06,0x30,0x40,0x44,0xC0,0x33,0x00,0x00, +0x12,0x17,0x54,0x60,0x05,0x30,0x40,0x44,0xC0,0x33,0x00,0x00,0x0A,0x17,0x79,0x42, +0x00,0x00,0x0C,0x17,0x06,0x30,0x40,0x44,0xC0,0x33,0x00,0x00,0x10,0x17,0x79,0x42, +0x00,0x00,0x12,0x17,0x32,0x60,0x79,0x42,0x00,0x00,0x0A,0x17,0xC5,0x33,0x00,0x00, +0x0C,0x17,0x79,0x42,0x00,0x00,0x10,0x17,0xC6,0x33,0x00,0x00,0x12,0x17,0x18,0x60, +0x16,0x60,0x40,0x4A,0x80,0x67,0x7C,0xB0,0x84,0x03,0x96,0x67,0x7C,0xB0,0x08,0x07, +0xB2,0x67,0x7C,0xB0,0x8C,0x0A,0xCE,0x67,0x12,0x60,0x79,0x42,0x00,0x00,0x0A,0x17, +0x79,0x42,0x00,0x00,0x0C,0x17,0x79,0x42,0x00,0x00,0x0E,0x17,0x6E,0x4A,0xF6,0xFF, +0x00,0x67,0xFA,0x00,0x6E,0x0C,0x01,0x00,0xF4,0xFF,0x00,0x6F,0xF0,0x00,0x2E,0x38, +0xDA,0xFF,0x79,0x98,0x00,0x00,0x06,0x17,0x2E,0x3F,0xF4,0xFF,0x57,0x53,0x04,0x30, +0xC0,0x48,0xDF,0x81,0x00,0x38,0x2E,0x30,0xDA,0xFF,0x79,0x90,0x00,0x00,0x06,0x17, +0xC0,0x48,0x2E,0x32,0xF4,0xFF,0x41,0x53,0xC1,0x81,0x40,0x48,0xC0,0x33,0x00,0x00, +0x18,0x17,0x79,0x4A,0x00,0x00,0x18,0x17,0x12,0x6C,0xFF,0x7C,0x39,0x30,0x00,0x00, +0x18,0x17,0x40,0x44,0xC0,0x33,0x00,0x00,0x18,0x17,0x02,0x60,0x01,0x7C,0x39,0x30, +0x00,0x00,0x02,0x2A,0x00,0x60,0x7E,0x00,0xC4,0x33,0x00,0x00,0x14,0x17,0x79,0x42, +0x00,0x00,0x16,0x17,0xC6,0x33,0x00,0x00,0x1A,0x17,0x79,0x42,0x00,0x00,0x1C,0x17, +0x00,0x60,0x78,0x00,0x79,0x42,0x00,0x00,0x14,0x17,0x04,0x30,0x40,0x44,0xC0,0x33, +0x00,0x00,0x16,0x17,0x79,0x42,0x00,0x00,0x1A,0x17,0x06,0x30,0x40,0x44,0xC0,0x33, +0x00,0x00,0x1C,0x17,0x54,0x60,0x04,0x30,0x40,0x44,0xC0,0x33,0x00,0x00,0x14,0x17, +0x79,0x42,0x00,0x00,0x16,0x17,0x06,0x30,0x40,0x44,0xC0,0x33,0x00,0x00,0x1A,0x17, +0x79,0x42,0x00,0x00,0x1C,0x17,0x32,0x60,0x79,0x42,0x00,0x00,0x14,0x17,0xC4,0x33, +0x00,0x00,0x16,0x17,0x79,0x42,0x00,0x00,0x1A,0x17,0xC6,0x33,0x00,0x00,0x1C,0x17, +0x18,0x60,0x16,0x60,0x40,0x4A,0x80,0x67,0x7C,0xB0,0x84,0x03,0x96,0x67,0x7C,0xB0, +0x08,0x07,0xB2,0x67,0x7C,0xB0,0x8C,0x0A,0xCE,0x67,0x12,0x60,0x79,0x42,0x00,0x00, +0x14,0x17,0x79,0x42,0x00,0x00,0x16,0x17,0x79,0x42,0x00,0x00,0x18,0x17,0xEE,0x33, +0xDA,0xFF,0x00,0x00,0x06,0x17,0x00,0x61,0x78,0xEA,0x79,0x20,0x00,0x00,0x9E,0x29, +0x6E,0x31,0xFA,0xFF,0x04,0x00,0xEE,0x23,0xEC,0xFF,0x00,0x00,0xAE,0x29,0xEE,0x23, +0xF0,0xFF,0x00,0x00,0xA2,0x29,0x9F,0x4A,0xDF,0x4C,0xF0,0x20,0x5E,0x4E,0x75,0x4E, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x07,0x79,0x26,0x00,0x00,0xCA,0x27,0x79,0x2A, +0x00,0x00,0x9E,0x29,0x7C,0x3B,0x01,0x00,0x08,0x00,0xAB,0x4A,0x34,0x00,0x0A,0x67, +0x79,0x20,0x00,0x00,0xAA,0x29,0x50,0x42,0x60,0x60,0x6D,0x37,0x12,0x00,0x18,0x00, +0x6D,0x27,0x0E,0x00,0x14,0x00,0x6D,0x28,0x14,0x00,0x4C,0x27,0x34,0x00,0xFF,0x7E, +0x46,0x42,0x54,0xBE,0x04,0x67,0x14,0x3E,0x46,0x52,0x2C,0x08,0x02,0x00,0x43,0x00, +0x24,0x66,0xEC,0x23,0x4C,0x00,0x00,0x00,0xEE,0x29,0xEC,0x33,0x50,0x00,0x00,0x00, +0xF2,0x29,0xEC,0x33,0x52,0x00,0x00,0x00,0xEC,0x29,0xB9,0x4E,0xFC,0x00,0x06,0xFB, +0x6C,0x0A,0x04,0x00,0x42,0x00,0x6C,0x28,0x54,0x00,0x0C,0x20,0xC4,0x66,0x6B,0xDD, +0x44,0x00,0x79,0x20,0x00,0x00,0xAA,0x29,0x86,0x30,0x9F,0x4A,0xDF,0x4C,0xC0,0x38, +0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00, +0xCA,0x27,0xAD,0x42,0x34,0x00,0x79,0x3B,0xFC,0x00,0x28,0xEE,0x18,0x00,0x7C,0x2B, +0x00,0x00,0xC6,0x17,0x14,0x00,0x79,0x3B,0x00,0x00,0xE2,0x27,0x44,0x00,0x9F,0x4A, +0xDF,0x4C,0x00,0x20,0x5E,0x4E,0x75,0x4E,0xCC,0x00,0x2F,0x30,0x06,0x00,0x2F,0x32, +0x04,0x00,0x41,0xB0,0x12,0x6F,0xFC,0x33,0x01,0x00,0x00,0x00,0xDE,0x29,0x41,0x90, +0x41,0xB0,0x10,0x6D,0xFF,0x70,0x75,0x4E,0x79,0x42,0x00,0x00,0xDE,0x29,0x40,0x4A, +0x02,0x66,0x01,0x70,0x40,0x48,0x40,0x42,0xC1,0x80,0x75,0x4E,0x2F,0x32,0x04,0x00, +0xE7,0x48,0x00,0x30,0x3C,0x34,0xFF,0x7F,0x39,0x36,0x00,0x00,0xDC,0x29,0x7C,0xB6, +0xFF,0xFF,0x1E,0x67,0x00,0x70,0x41,0x53,0x16,0x6B,0x39,0x08,0x00,0x00,0x00,0x00, +0xDF,0x29,0x14,0x67,0x43,0xD4,0x02,0x64,0x40,0x52,0x40,0x52,0xC9,0x51,0xF6,0xFF, +0x16,0x60,0x01,0x30,0x40,0xD0,0x10,0x60,0x43,0xD4,0x02,0x64,0x40,0x52,0xC9,0x51, +0xF8,0xFF,0x40,0x4A,0x02,0x66,0x40,0x52,0xDF,0x4C,0x0C,0x00,0x75,0x4E,0xE7,0x48, +0x06,0x00,0xF9,0x4D,0x00,0x00,0x9A,0x29,0x79,0x28,0x00,0x00,0x38,0x2A,0xD4,0x4E, +0x54,0x4E,0xD2,0xFF,0xF9,0x4B,0xFF,0x00,0x3C,0x8A,0x6C,0x42,0xEA,0xFF,0xAE,0x4C, +0x60,0x00,0x50,0x00,0x6E,0x4A,0x66,0x00,0x3E,0x67,0x06,0x3F,0x00,0x61,0x7E,0xFF, +0x8F,0x54,0x00,0x3C,0x2E,0x32,0x40,0x00,0x2E,0x34,0x42,0x00,0x00,0x76,0x05,0x30, +0x06,0x60,0x42,0xD2,0x02,0x64,0x43,0x52,0xC8,0x51,0xF8,0xFF,0x2E,0x08,0x00,0x00, +0x45,0x00,0x02,0x67,0x45,0xD6,0x41,0x39,0xE6,0xFF,0x03,0x3A,0x46,0x39,0xE2,0xFF, +0x45,0x39,0xE4,0xFF,0x00,0x67,0x3A,0x06,0x2E,0x30,0x5A,0x00,0x00,0x72,0x00,0x08, +0x02,0x00,0x08,0x67,0x2E,0x32,0x62,0x00,0x6E,0xD2,0x64,0x00,0xAE,0x4C,0x0C,0x00, +0x4C,0x00,0xAC,0x48,0x0C,0x00,0xD4,0xFF,0x6C,0x42,0xD2,0xFF,0x40,0x02,0x15,0x00, +0x2E,0x67,0x00,0x08,0x00,0x00,0x1C,0x67,0x6E,0x4A,0x46,0x00,0x0C,0x67,0x00,0x08, +0x04,0x00,0x06,0x66,0x6E,0x4A,0x68,0x00,0x0A,0x67,0x2E,0x38,0x60,0x00,0x44,0x39, +0xD2,0xFF,0x44,0xDA,0x41,0xDA,0x00,0x08,0x04,0x00,0x04,0x67,0x45,0x54,0x46,0x54, +0x2E,0x30,0x68,0x00,0x24,0x67,0x40,0x0C,0x84,0x03,0x08,0x66,0x45,0x96,0x43,0x39, +0xD6,0xFF,0x14,0x60,0x40,0x0C,0x08,0x07,0x08,0x66,0x45,0x94,0x42,0x39,0xD4,0xFF, +0x08,0x60,0x40,0x0C,0x8C,0x0A,0x02,0x66,0x46,0xCB,0x00,0x70,0x40,0x29,0xDA,0xFF, +0x40,0x29,0xDE,0xFF,0x6E,0x4A,0x36,0x00,0x72,0x67,0x2E,0x38,0x3A,0x00,0x44,0xB6, +0x18,0x6C,0x04,0x30,0x43,0x90,0x40,0x39,0xDE,0xFF,0x6C,0xD1,0xDA,0xFF,0x46,0xD6, +0xFF,0x70,0x44,0xB6,0x00,0x6F,0x8A,0x05,0x46,0x96,0x2E,0x38,0x3E,0x00,0x44,0xB6, +0x00,0x6E,0x7E,0x05,0x46,0xD6,0x43,0x53,0x44,0x96,0x06,0x6F,0x6C,0xD7,0xDA,0xFF, +0xFF,0x70,0x2E,0x38,0x38,0x00,0x44,0xB4,0x18,0x6C,0x04,0x30,0x42,0x90,0x40,0x39, +0xE0,0xFF,0x6C,0xD1,0xDC,0xFF,0x45,0xD4,0xFF,0x70,0x44,0xB4,0x00,0x6F,0x52,0x05, +0x45,0x94,0x2E,0x38,0x3C,0x00,0x44,0xB4,0x00,0x6E,0x46,0x05,0x45,0xD4,0x42,0x53, +0x44,0xB4,0x08,0x6F,0x44,0x94,0x6C,0xD5,0xDC,0xFF,0xFF,0x70,0x40,0x39,0xD8,0xFF, +0x6E,0x39,0x58,0x00,0xFE,0xFF,0x6E,0x39,0x52,0x00,0xF8,0xFF,0x6C,0x42,0xF0,0xFF, +0x6C,0x42,0xEE,0xFF,0x2E,0x30,0x48,0x00,0x2E,0x36,0x50,0x00,0x43,0x53,0x00,0x6B, +0x10,0x05,0x00,0x38,0x43,0xD8,0x00,0x34,0x4A,0xE8,0x42,0xD4,0x2E,0x3A,0x4A,0x00, +0x2E,0x3E,0x52,0x00,0x47,0x53,0x00,0x6B,0xF8,0x04,0x47,0xDA,0xEE,0xCA,0x58,0x00, +0x45,0x20,0xEE,0xD1,0x54,0x00,0xC2,0xD0,0x6E,0x4A,0x66,0x00,0x00,0x67,0x9C,0x00, +0x41,0x48,0x07,0x3A,0xEE,0xCE,0x58,0x00,0xC7,0x91,0x00,0x34,0x42,0x02,0x0F,0x00, +0x03,0x32,0x41,0x52,0x6E,0x22,0x6C,0x00,0x6E,0x39,0x70,0x00,0xEA,0xFF,0x3C,0x36, +0x00,0x80,0x03,0x38,0x6B,0xE4,0x49,0xE6,0x41,0xD2,0x41,0x54,0x41,0x39,0xFC,0xFF, +0x41,0x39,0xFE,0xFF,0x49,0x26,0x2E,0x3E,0x44,0x00,0x97,0xE2,0x00,0x7E,0x97,0xE2, +0x2E,0x3E,0x58,0x00,0x2E,0x34,0x42,0x00,0x3C,0x3C,0xFF,0x7F,0x87,0x4A,0x10,0x6B, +0x42,0xDC,0x04,0x64,0x00,0x61,0x98,0x08,0xC7,0xD0,0xCD,0x51,0xF4,0xFF,0x12,0x60, +0x42,0xDC,0x04,0x64,0x00,0x61,0x88,0x08,0x00,0x61,0x84,0x08,0xC7,0xD0,0xCD,0x51, +0xF0,0xFF,0x6C,0x3D,0xE6,0xFF,0x40,0x00,0x6E,0x20,0x6C,0x00,0x2C,0x3E,0xE2,0xFF, +0x47,0x39,0xF8,0xFF,0x47,0x53,0x40,0x42,0x2C,0x36,0xE4,0xFF,0x43,0x53,0x03,0x38, +0x07,0x34,0xEC,0xC4,0xFE,0xFF,0xC2,0xD1,0x41,0x48,0x10,0x7C,0x00,0x7A,0x7C,0x3B, +0x00,0x02,0xFE,0xFF,0x7C,0x3B,0xFF,0xFF,0xEE,0xFF,0x2E,0x34,0x5A,0x00,0x42,0x02, +0x15,0x00,0x00,0x67,0xD6,0x01,0x6E,0x4A,0x68,0x00,0x1A,0x66,0x42,0x0C,0x04,0x00, +0x08,0x66,0x80,0x4A,0x00,0x6A,0x06,0x03,0x12,0x60,0x42,0x0C,0x05,0x00,0x06,0x66, +0x80,0x4A,0x1A,0x6A,0x06,0x60,0x02,0x08,0x02,0x00,0x12,0x67,0x7C,0x39,0x00,0x00, +0xEC,0xFF,0x6E,0x39,0x5E,0x00,0xEE,0xFF,0x6C,0x46,0xEE,0xFF,0x41,0xDA,0x6C,0xDA, +0xD2,0xFF,0x02,0x08,0x04,0x00,0x08,0x67,0x45,0x54,0x46,0x52,0x01,0x74,0x02,0x60, +0x00,0x74,0x43,0xDC,0x45,0xDC,0x4E,0xE8,0x46,0xDC,0x46,0x39,0xFC,0xFF,0x06,0x32, +0xC7,0xCC,0x6E,0x22,0x6C,0x00,0xEE,0xD2,0x70,0x00,0x6C,0x42,0xEA,0xFF,0x49,0x24, +0x49,0x26,0xC6,0xD3,0x42,0x4A,0x08,0x67,0x41,0xD2,0x41,0xDC,0xC1,0xD4,0xC1,0xD2, +0x41,0xDC,0x4E,0xE2,0x00,0x72,0x02,0x60,0xC1,0x36,0xCE,0x51,0xFC,0xFF,0x03,0x3C, +0x42,0xDC,0x45,0xD6,0x7C,0x3B,0x02,0x00,0xF2,0xFF,0x6C,0x42,0xFA,0xFF,0x7C,0x39, +0x01,0x00,0xF6,0xFF,0x7C,0x39,0x01,0x00,0xF4,0xFF,0x6C,0x42,0xF2,0xFF,0x7C,0x39, +0x07,0x00,0xE8,0xFF,0xE7,0x48,0x40,0x31,0x2C,0x3F,0xF8,0xFF,0x00,0x61,0xEE,0x03, +0x5F,0x39,0xF8,0xFF,0x2E,0x08,0x00,0x00,0x5B,0x00,0x46,0x67,0x2C,0x36,0xF8,0xFF, +0x2E,0x32,0x60,0x00,0x41,0x53,0x6E,0x4A,0x46,0x00,0x04,0x67,0x6C,0x42,0xD2,0xFF, +0x2C,0x30,0xFC,0xFF,0x48,0xE2,0x40,0x53,0x24,0x60,0x00,0x7C,0x00,0x34,0x00,0x78, +0x12,0x38,0x44,0x48,0x04,0x2E,0x01,0x3A,0x8F,0xE2,0x87,0x88,0xCD,0x51,0xFA,0xFF, +0x44,0x48,0x46,0x88,0xC4,0x34,0x44,0x48,0x04,0x3C,0xCA,0x51,0xE2,0xFF,0xCB,0x51, +0xDA,0xFF,0xDF,0x4C,0x89,0x01,0x03,0x38,0x6C,0x39,0xFC,0xFF,0xFE,0xFF,0x40,0x4A, +0x00,0x67,0xB8,0x00,0xE7,0x48,0x80,0x99,0x6E,0x20,0x6C,0x00,0xEE,0xD0,0x70,0x00, +0x2C,0x3E,0xFE,0xFF,0x6C,0x54,0xF8,0xFF,0x2C,0x3C,0xF8,0xFF,0xF0,0x43,0x00,0x70, +0xF1,0x45,0x00,0x70,0x4F,0xE2,0x47,0x53,0x00,0x60,0x80,0x00,0xE7,0x48,0xE0,0x03, +0x00,0x7A,0x00,0x7C,0x12,0x22,0x89,0xE2,0x10,0x20,0x05,0x10,0x98,0xE2,0x11,0x24, +0x06,0x14,0x02,0x26,0x9B,0xE2,0x03,0x28,0x9C,0xE2,0x00,0x2A,0x00,0x2C,0x80,0xB5, +0x85,0xB7,0x86,0xB9,0x9D,0xE3,0x9E,0xE5,0x85,0x80,0x86,0x80,0x01,0x2A,0x01,0x2C, +0x81,0xB5,0x85,0xB7,0x86,0xB9,0x9D,0xE3,0x9E,0xE5,0x81,0x80,0x85,0x80,0x86,0x80, +0x82,0xB7,0x84,0xB7,0x9C,0xE5,0x82,0x80,0x84,0x80,0x40,0x48,0x11,0x3C,0x06,0x3A, +0x45,0xB1,0x40,0xCA,0x8A,0x54,0x12,0x22,0x2A,0x12,0xFF,0xFF,0x99,0xE2,0xC5,0x32, +0x10,0x3A,0xC6,0x30,0xCF,0x51,0xA2,0xFF,0xDF,0x4C,0xC0,0x07,0x4A,0x22,0xEC,0xD4, +0xFE,0xFF,0x46,0x0C,0x01,0x00,0x02,0x66,0x49,0x24,0xCE,0x51,0x80,0xFF,0xDF,0x4C, +0x99,0x01,0x40,0x42,0xEC,0xD0,0xFE,0xFF,0x47,0x54,0x2E,0x3A,0x68,0x00,0x00,0x67, +0x36,0x01,0x6E,0x22,0x6C,0x00,0xEC,0xD2,0xEA,0xFF,0x2C,0x38,0xD2,0xFF,0x2C,0x3C, +0xFE,0xFF,0x45,0x0C,0x08,0x07,0x00,0x67,0x90,0x00,0x07,0x32,0x7C,0xD2,0x10,0x00, +0x49,0xE8,0x41,0xD2,0x41,0x39,0xFE,0xFF,0x49,0x24,0x01,0x34,0xC3,0xC4,0xC2,0xD5, +0xE7,0x48,0x20,0x11,0x45,0x0C,0x8C,0x0A,0x10,0x67,0x6C,0xD9,0xD6,0xFF,0x07,0x34, +0xC6,0xC4,0xC2,0x91,0x46,0x44,0x41,0x44,0x4A,0x22,0x40,0x46,0x40,0x02,0x0F,0x00, +0x00,0x78,0xC4,0x01,0x00,0x70,0xE7,0x48,0xC0,0x01,0x3C,0x34,0x00,0x80,0x10,0x3A, +0x44,0xCA,0x02,0x67,0x42,0x80,0x5A,0xE2,0x0C,0x64,0xC0,0x32,0x00,0x70,0xC6,0x90, +0xCF,0x51,0xEC,0xFF,0x0A,0x60,0xC6,0x90,0xCF,0x51,0xE4,0xFF,0x80,0x32,0x00,0x70, +0xDF,0x4C,0x80,0x03,0xC1,0xD2,0x5C,0xE2,0x02,0x64,0x88,0x54,0xCB,0x51,0xC8,0xFF, +0xDF,0x4C,0x88,0x01,0x47,0xC7,0x47,0x52,0x47,0x39,0xF8,0xFF,0x47,0x53,0x40,0x42, +0x00,0x38,0x43,0xD8,0x00,0x60,0x90,0x00,0x6C,0xD9,0xD4,0xFF,0x00,0x32,0x41,0x02, +0x0F,0x00,0x43,0xD2,0x7C,0xD2,0x10,0x00,0x49,0xE6,0x41,0x02,0xFE,0xFF,0x41,0x39, +0xFE,0xFF,0xC1,0xD0,0x49,0xE2,0x41,0x53,0x07,0x3F,0x48,0x24,0x01,0x34,0x22,0x38, +0x00,0x7A,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2, +0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2, +0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2, +0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2,0x55,0xE3,0x4C,0xE2, +0x55,0xE3,0xC5,0x32,0xCA,0x51,0xB8,0xFF,0xC6,0x90,0xCF,0x51,0xAE,0xFF,0x1F,0x3E, +0x41,0xD2,0x41,0x54,0xC1,0x92,0x49,0x20,0x43,0xD0,0x40,0x52,0x40,0x44,0x40,0x02, +0x0F,0x00,0x00,0x38,0x43,0xD8,0x04,0x60,0x04,0x02,0x08,0x00,0x6E,0x39,0x24,0x00, +0xE8,0xFF,0x6E,0x39,0x02,0x00,0xFC,0xFF,0x2E,0x32,0x00,0x00,0x41,0x39,0xF6,0xFF, +0x3B,0x12,0xE5,0x10,0x41,0x3B,0xF2,0xFF,0x41,0x55,0x41,0x39,0xFA,0xFF,0x6E,0x39, +0x6A,0x00,0xF4,0xFF,0x6E,0x39,0x72,0x00,0xF2,0xFF,0x2E,0x08,0x01,0x00,0x5B,0x00, +0x12,0x67,0x2E,0x32,0x5C,0x00,0x41,0x46,0x0A,0x67,0x41,0x39,0xF0,0xFF,0x7C,0x1B, +0x03,0x00,0xFE,0xFF,0x2E,0x08,0x02,0x00,0x5B,0x00,0x1C,0x67,0x6C,0x4A,0xEE,0xFF, +0x06,0x67,0x6C,0x42,0xEE,0xFF,0x10,0x60,0x7C,0x39,0x00,0x00,0xEC,0xFF,0x2E,0x32, +0x5E,0x00,0x41,0x46,0x41,0x39,0xEE,0xFF,0x6C,0x4A,0xD8,0xFF,0x72,0x67,0x6C,0x96, +0xDC,0xFF,0x6C,0x9E,0xDA,0xFF,0x2C,0x34,0xE0,0xFF,0x00,0x3A,0x42,0xD0,0x00,0x3C, +0x00,0x38,0x43,0xD8,0x4D,0xE8,0x4E,0xE8,0x45,0x9C,0x46,0xDC,0xC6,0xD0,0x2C,0x3A, +0xDA,0xFF,0x6C,0x9A,0xDE,0xFF,0xEC,0xCA,0xFE,0xFF,0xC5,0x91,0x6C,0xD4,0xD4,0xFF, +0x02,0x3C,0x43,0xDC,0x79,0x22,0x00,0x00,0x4E,0x04,0x02,0x3A,0x2E,0x36,0x00,0x00, +0x3B,0x16,0x25,0x30,0x45,0x02,0xF0,0xFF,0x65,0xE6,0x2C,0x36,0xDE,0xFF,0x6E,0xD7, +0x4A,0x00,0x6C,0xD6,0xD6,0xFF,0x47,0xD6,0xEC,0xC7,0xFC,0xFF,0xC3,0xD3,0xC5,0xD2, +0x47,0x52,0x47,0x39,0xF8,0xFF,0x34,0x60,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00, +0x2C,0x34,0xD4,0xFF,0x02,0x3C,0x43,0xDC,0x79,0x22,0x00,0x00,0x4E,0x04,0x02,0x3A, +0x2E,0x36,0x00,0x00,0x3B,0x16,0xE1,0x30,0x45,0x02,0xF0,0xFF,0x65,0xE6,0x2C,0x36, +0xD6,0xFF,0x47,0xD6,0xEC,0xC7,0xFC,0xFF,0xC3,0xD3,0xC5,0xD2,0x00,0x61,0x7E,0x00, +0x2E,0x30,0x50,0x00,0x6E,0x4A,0x66,0x00,0x0A,0x67,0x2C,0x30,0xE4,0xFF,0x6C,0x3D, +0xE6,0xFF,0x40,0x00,0x2E,0x08,0x04,0x00,0x5B,0x00,0x04,0x67,0x40,0x54,0x04,0x60, +0x6C,0xD0,0xD2,0xFF,0x2E,0x32,0x68,0x00,0x0C,0x66,0x6E,0xD1,0x4C,0x00,0x5C,0x4E, +0xDF,0x4C,0x00,0x60,0x75,0x4E,0x41,0x0C,0x84,0x03,0x06,0x66,0x6E,0x91,0x4E,0x00, +0xEC,0x60,0x41,0x0C,0x08,0x07,0x06,0x66,0x6E,0x91,0x4C,0x00,0xE0,0x60,0x41,0x0C, +0x8C,0x0A,0xD6,0x66,0x6E,0xD1,0x4E,0x00,0xD4,0x60,0x00,0x00,0x00,0x80,0x00,0xC0, +0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xFC,0x00,0xFE,0x00,0xFF,0x80,0xFF,0xC0,0xFF, +0xE0,0xFF,0xF0,0xFF,0xF8,0xFF,0xFC,0xFF,0xFE,0xFF,0xFF,0xFF,0x7C,0x3B,0x02,0x00, +0xE4,0xFF,0x0F,0x72,0x02,0x3A,0x41,0xCA,0x05,0x3E,0x45,0xDA,0x3B,0x36,0xCC,0x50, +0x43,0x46,0x43,0x48,0x06,0x3A,0x41,0xCA,0x45,0xDA,0x3B,0x36,0xC0,0x50,0x00,0x3A, +0x41,0xCA,0x45,0x9E,0x44,0x9A,0x45,0x44,0x45,0xB9,0x7C,0xCA,0xF0,0xFF,0x40,0xE8, +0x44,0xE8,0x42,0xE8,0x46,0xE8,0x04,0x32,0x40,0x98,0x06,0x32,0x42,0x9C,0x38,0x6E, +0x03,0x2A,0x45,0x42,0x45,0x48,0x85,0xC6,0x43,0x48,0x44,0x4A,0x46,0x66,0x06,0x30, +0x40,0x52,0x40,0x3B,0xFA,0xFF,0x47,0x3B,0xE4,0xFF,0x2C,0x30,0xFE,0xFF,0x40,0x44, +0x40,0x3B,0xE6,0xFF,0x2C,0x30,0xFC,0xFF,0x40,0x44,0x40,0x3B,0xF4,0xFF,0x7C,0xCE, +0x0F,0x00,0x47,0x00,0x00,0x80,0x60,0x60,0x6C,0x4A,0xEE,0xFF,0x1E,0x67,0x44,0x4A, +0x1A,0x67,0x3C,0x30,0x18,0x01,0x45,0x4A,0x0E,0x67,0x3C,0x30,0xB8,0x00,0x44,0x0C, +0x01,0x00,0x04,0x66,0x3C,0x30,0x5C,0x00,0x40,0x39,0xEC,0xFF,0x00,0x72,0x06,0x30, +0x40,0x52,0x40,0x3B,0xFA,0xFF,0x47,0x4A,0x02,0x6C,0x41,0x54,0x44,0xBC,0x02,0x66, +0x41,0x58,0x04,0x30,0xED,0xC9,0xE4,0xFF,0x44,0x44,0x6C,0x98,0xFE,0xFF,0xED,0xCD, +0xF2,0xFF,0x46,0x44,0x6C,0x9C,0xFC,0xFF,0x44,0x3B,0xE6,0xFF,0x46,0x3B,0xF4,0xFF, +0x7C,0xCE,0x0F,0x00,0x7B,0x8E,0x40,0x10,0x43,0x3B,0xF0,0xFF,0x43,0x48,0x43,0x3B, +0xEC,0xFF,0x2C,0x3C,0xF0,0xFF,0x14,0x67,0x46,0x46,0xED,0x4B,0xC4,0xFF,0x0F,0x70, +0xC6,0x3A,0x5E,0xE2,0xC8,0x51,0xFA,0xFF,0xED,0x4B,0x1C,0x00,0x6C,0x4A,0xEE,0xFF, +0x00,0x66,0xBE,0x00,0x2C,0x38,0xF8,0xFF,0x2C,0x3A,0xF6,0xFF,0x2C,0x34,0xF2,0xFF, +0x2C,0x36,0xF4,0xFF,0x32,0x60,0x40,0xC0,0x80,0xC0,0x00,0xC0,0xC0,0xC0,0x48,0x2B, +0xE8,0xFF,0x49,0x2B,0xF6,0xFF,0x44,0x3B,0xFC,0xFF,0x2C,0x3C,0xE8,0xFF,0x4B,0xE2, +0x46,0xDD,0x4A,0xE2,0x46,0xDD,0x7B,0x1B,0x16,0x60,0xFF,0xFF,0x87,0x3A,0x89,0x54, +0x07,0x7C,0xD5,0x0D,0x71,0x4E,0xFA,0x66,0xCD,0x51,0xD4,0xFF,0x75,0x4E,0x00,0x00, +0x03,0x03,0x04,0x04,0x07,0x07,0x06,0x06,0x06,0x06,0x01,0x01,0x0D,0x0D,0x0F,0x00, +0x0F,0x00,0x0E,0x00,0x0F,0x01,0x0D,0x00,0x0F,0x02,0x0C,0x00,0x0F,0x03,0x0B,0x00, +0x0F,0x04,0x0A,0x00,0x0F,0x05,0x09,0x00,0x0F,0x06,0x08,0x00,0x0F,0x07,0x07,0x00, +0x0F,0x08,0x06,0x00,0x0F,0x09,0x05,0x00,0x0F,0x0A,0x04,0x00,0x0F,0x0B,0x03,0x00, +0x0F,0x0C,0x02,0x00,0x0F,0x0D,0x01,0x00,0x0F,0x0E,0x00,0x00,0x0F,0x0F,0x20,0x20, +0x61,0x44,0x65,0x76,0x53,0x20,0x61,0x74,0x67,0x55,0x73,0x61,0x6C,0x20,0x76,0x6F, +0x73,0x65,0x42,0x20,0x61,0x65,0x48,0x20,0x62,0x61,0x69,0x6C,0x20,0x67,0x75,0x4E, +0x2D,0x30,0xEC,0xFF,0x40,0x48,0x2D,0x30,0xF0,0xFF,0x40,0x3B,0xF0,0xFF,0x40,0x48, +0x40,0x3B,0xEC,0xFF,0x40,0x48,0x2C,0x3A,0xF6,0xFF,0x2C,0x34,0xF2,0xFF,0x2C,0x36, +0xF4,0xFF,0x00,0x78,0x44,0x52,0xEC,0xE7,0xEE,0xFF,0xF8,0x64,0x6C,0x99,0xF8,0xFF, +0x20,0x6F,0x00,0x61,0x54,0xFF,0x15,0x3E,0x47,0x00,0x00,0x80,0xEC,0xC9,0xFE,0xFF, +0xC4,0x91,0x6D,0x22,0xF6,0xFF,0xEC,0x92,0xFA,0xFF,0x2C,0x38,0xEC,0xFF,0xFB,0x4E, +0x0A,0x40,0x6C,0xD8,0xF8,0xFF,0x00,0x60,0x30,0xFF,0x47,0x52,0x87,0x08,0x04,0x00, +0x06,0x67,0x7C,0x3B,0x02,0x00,0xE4,0xFF,0x88,0xE2,0x40,0x0C,0x00,0x80,0x14,0x66, +0x47,0x00,0x40,0x00,0x2D,0x3C,0xF4,0xFF,0x6D,0x9C,0xF2,0xFF,0x46,0x3B,0xF4,0xFF, +0x6D,0x52,0xFA,0xFF,0x80,0x0C,0x01,0x00,0x00,0x00,0x00,0x64,0x7E,0xFF,0x40,0x48, +0x2D,0x3C,0xF2,0xFF,0x6D,0xDD,0xF4,0xFF,0xC6,0xD2,0x6D,0x53,0xFA,0xFF,0x47,0x02, +0xBF,0xFF,0x07,0x3C,0x46,0x02,0x0F,0x00,0x00,0x67,0x60,0xFF,0x7C,0x3B,0xFE,0xFF, +0xE4,0xFF,0x00,0x60,0x56,0xFF,0x47,0x52,0x87,0x08,0x04,0x00,0x04,0x67,0x47,0x02, +0x3F,0xFF,0x88,0xE2,0x80,0x0C,0x01,0x00,0x00,0x00,0x18,0x64,0x40,0x48,0x2D,0x3C, +0xF2,0xFF,0x6D,0xDD,0xF4,0xFF,0xC6,0xD2,0x6D,0x53,0xFA,0xFF,0x47,0x02,0xBF,0xFF, +0x47,0x00,0x80,0x00,0x40,0x0C,0x00,0x80,0x00,0x66,0x20,0xFF,0x2D,0x3C,0xF4,0xFF, +0x6D,0x9C,0xF2,0xFF,0x46,0x3B,0xF4,0xFF,0x6D,0x52,0xFA,0xFF,0x47,0x00,0xC0,0x00, +0x07,0x3C,0x46,0x02,0x0F,0x00,0x00,0x66,0x02,0xFF,0x47,0x02,0x3F,0xFF,0x00,0x60, +0xFA,0xFE,0x47,0x52,0x87,0x08,0x04,0x00,0x04,0x67,0x47,0x02,0x3F,0xFF,0x88,0xE2, +0x96,0xE2,0x80,0x0C,0x01,0x00,0x00,0x00,0x18,0x64,0xC0,0x48,0x2D,0x3C,0xF2,0xFF, +0x6D,0xDD,0xF4,0xFF,0xC6,0xD2,0x6D,0x53,0xFA,0xFF,0x47,0x00,0x80,0x00,0x47,0x02, +0xBF,0xFF,0x8E,0xE3,0x00,0x64,0xC4,0xFE,0x3C,0x30,0x00,0x80,0x2D,0x3C,0xF4,0xFF, +0x6D,0x9C,0xF2,0xFF,0x46,0x3B,0xF4,0xFF,0x6D,0x52,0xFA,0xFF,0x47,0x00,0xC0,0x00, +0x07,0x3C,0x46,0x02,0x0F,0x00,0x00,0x66,0xA2,0xFE,0x47,0x02,0x3F,0xFF,0x00,0x60, +0x9A,0xFE,0x47,0x52,0x87,0x08,0x04,0x00,0x04,0x67,0x47,0x02,0x3F,0xFF,0x88,0xE2, +0x1C,0x64,0x3C,0x30,0x00,0x80,0x2D,0x3C,0xF4,0xFF,0x6D,0x9C,0xF2,0xFF,0x46,0x3B, +0xF4,0xFF,0x6D,0x52,0xFA,0xFF,0x47,0x02,0x7F,0xFF,0x47,0x00,0x40,0x00,0x80,0x0C, +0x01,0x00,0x00,0x00,0x00,0x64,0x64,0xFE,0xC0,0x48,0x2D,0x3C,0xF2,0xFF,0x6D,0xDD, +0xF4,0xFF,0xC6,0xD2,0x6D,0x53,0xFA,0xFF,0x47,0x00,0xC0,0x00,0x07,0x3C,0x46,0x02, +0x0F,0x00,0x00,0x66,0x46,0xFE,0x47,0x02,0x3F,0xFF,0x00,0x60,0x3E,0xFE,0xE7,0x48, +0xC0,0x1F,0x40,0x42,0x2E,0x3A,0x50,0x00,0x45,0x53,0x2E,0x3E,0x40,0x00,0x04,0x60, +0x5B,0xE2,0x02,0x64,0x58,0x34,0x0A,0x3C,0x43,0xCC,0x18,0x66,0x87,0x4A,0x06,0x6B, +0x42,0xDE,0x2C,0x64,0x22,0x60,0x42,0xDE,0x1E,0x64,0x5C,0xE2,0x1A,0x64,0xC0,0x32, +0x40,0x42,0x14,0x60,0x42,0xDE,0x0A,0x64,0x44,0x80,0x5C,0xE2,0x04,0x64,0xC0,0x32, +0x40,0x42,0x87,0x4A,0x0A,0x6A,0x44,0x80,0x5C,0xE2,0x04,0x64,0xC0,0x32,0x40,0x42, +0xCD,0x51,0xBE,0xFF,0x80,0x32,0xDF,0x4C,0xF8,0x03,0xC1,0xD2,0x75,0x4E,0x5F,0x2A, +0x00,0x70,0x75,0x4E,0x0D,0x2F,0xF9,0x4B,0x00,0x00,0xE6,0x29,0x1D,0x30,0x00,0x34, +0x7C,0xC4,0x07,0x00,0xE8,0x66,0x15,0x32,0x2D,0x36,0x04,0x00,0x6D,0x20,0xB6,0xFF, +0x28,0x34,0x06,0x00,0xED,0x4B,0xE8,0xFF,0x5D,0x4A,0x20,0x67,0x1D,0x3A,0x1D,0x3C, +0x1D,0x3E,0x46,0xB2,0xC8,0x6D,0x01,0x38,0x43,0xD8,0x55,0xB8,0xC0,0x6C,0x45,0xB0, +0xBC,0x6D,0x02,0x38,0x4C,0xE7,0x40,0xD8,0x47,0xB8,0xB2,0x6C,0xF9,0x4B,0x00,0x00, +0xEE,0x29,0x6D,0x28,0x3A,0x00,0xD4,0x4E,0xF9,0x49,0xFF,0x00,0x3C,0x8A,0x5D,0x20, +0x55,0x39,0xE6,0xFF,0x2D,0x3E,0xAA,0xFF,0x47,0x39,0xF4,0xFF,0xED,0xC3,0xA6,0xFF, +0x6D,0x24,0xB0,0xFF,0x2D,0x38,0xCC,0xFF,0x2D,0x3A,0xA8,0xFF,0x45,0x53,0x3B,0x1E, +0x2A,0x50,0x00,0x3C,0x7C,0xC0,0xF0,0xFF,0x60,0xEE,0x4E,0xE8,0xC0,0x48,0x80,0xD3, +0xB9,0xD2,0x00,0x00,0x4E,0x04,0x2D,0x3C,0x12,0x00,0x7C,0x39,0x01,0x00,0xFA,0xFF, +0x7C,0x39,0x00,0x02,0xFE,0xFF,0x00,0x60,0x84,0x00,0x02,0x03,0x01,0x00,0x00,0x00, +0x00,0x00,0x08,0x00,0x03,0x00,0x07,0x04,0x06,0x06,0x0D,0x01,0x00,0xFF,0xFF,0x00, +0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xC0,0x08,0xC0, +0x08,0xC0,0x00,0xC0,0x08,0x20,0x5A,0xD0,0x40,0x26,0x7C,0xC0,0x01,0x00,0x01,0x3E, +0x4F,0xE2,0x40,0xD1,0x40,0xD0,0x7B,0x39,0xD4,0x00,0xEC,0xFF,0x7B,0x39,0xD6,0x00, +0xE4,0xFF,0x7B,0x3A,0xD8,0x00,0x05,0x30,0x06,0x3E,0x41,0x22,0x4B,0x29,0xE8,0xFF, +0x49,0x29,0xF6,0xFF,0x43,0x39,0xFC,0xFF,0x4F,0xE2,0x44,0xD9,0x7B,0x19,0xA6,0x40, +0xFF,0xFF,0x4C,0xE2,0x8D,0x38,0x89,0x54,0x54,0x4A,0xFC,0x6B,0xC8,0x51,0xDE,0xFF, +0x81,0x52,0x01,0x08,0x00,0x00,0x04,0x66,0x09,0x22,0x81,0x53,0xCA,0x51,0xA6,0xFF, +0x01,0x70,0x5F,0x2A,0x75,0x4E,0xDF,0x23,0x00,0x00,0x48,0x28,0x41,0x4E,0x39,0x2F, +0x00,0x00,0x48,0x28,0x75,0x4E,0x39,0x30,0x00,0x00,0xF2,0x29,0xF9,0xC0,0x00,0x00, +0xEC,0x29,0x48,0xE2,0x40,0x53,0x79,0x20,0x00,0x00,0xEE,0x29,0x10,0x32,0x59,0xE0, +0xC1,0x30,0xC8,0x51,0xF8,0xFF,0x75,0x4E,0x79,0x20,0x00,0x00,0xA6,0x29,0x10,0x30, +0x28,0x32,0x02,0x00,0x00,0x61,0xDC,0xA6,0x79,0x22,0x00,0x00,0x4E,0x04,0xC1,0xD3, +0x40,0x0A,0x0F,0x00,0x41,0x42,0xC1,0x01,0x01,0x30,0x40,0x46,0x39,0x34,0x00,0x00, +0x9A,0x29,0x42,0x53,0x79,0x20,0x00,0x00,0xA2,0x29,0x10,0x36,0x5B,0xE2,0x08,0x64, +0x59,0x83,0xCA,0x51,0xF8,0xFF,0x75,0x4E,0x59,0xC1,0xCA,0x51,0xF0,0xFF,0x75,0x4E, +0x79,0x20,0x00,0x00,0xA6,0x29,0x18,0x30,0x10,0x32,0x00,0x61,0x96,0xA6,0x79,0x20, +0x00,0x00,0x4E,0x04,0xC1,0xD1,0x40,0x0A,0x0F,0x00,0x41,0x42,0xC1,0x01,0x39,0x34, +0x00,0x00,0x9A,0x29,0x02,0x30,0x40,0xD0,0x42,0x53,0xC0,0xD0,0x00,0x70,0x20,0x36, +0x41,0xC6,0xC3,0x56,0x03,0xD6,0x40,0xD1,0xCA,0x51,0xF4,0xFF,0x75,0x4E,0xAF,0x4C, +0x70,0x00,0x04,0x00,0x46,0xCB,0xF9,0x49,0x00,0x00,0x9A,0x29,0x00,0x60,0x26,0xAA, +0x2F,0x32,0x06,0x00,0x79,0xB2,0x00,0x00,0xD4,0x29,0x00,0x6B,0xDA,0x00,0x79,0xB2, +0x00,0x00,0xD8,0x29,0x00,0x6E,0xD0,0x00,0x79,0x2A,0x00,0x00,0x4E,0x04,0x39,0x36, +0x00,0x00,0x9A,0x29,0x43,0x36,0xCB,0xD6,0x43,0x53,0x2F,0x30,0x04,0x00,0x00,0x61, +0x22,0xA6,0xC1,0xDB,0x40,0x0A,0x0F,0x00,0x41,0x42,0xC1,0x01,0x01,0x30,0x41,0x30, +0x43,0x32,0x4D,0x24,0xCB,0xDA,0x00,0x72,0x25,0x38,0x40,0xC8,0xC4,0x56,0x04,0xD8, +0x41,0xD3,0xCB,0x51,0xF4,0xFF,0x09,0x36,0x2F,0x3E,0x04,0x00,0x39,0x3C,0x00,0x00, +0xD6,0x29,0x01,0x34,0x41,0xB4,0x22,0x66,0x46,0xBE,0x1E,0x6E,0x00,0x72,0x47,0x52, +0x58,0xE2,0x02,0x64,0xCB,0xDA,0xCB,0xDA,0x25,0x38,0x40,0xC8,0xC4,0x56,0x04,0xD8, +0x41,0xD3,0xCB,0x51,0xF4,0xFF,0x09,0x36,0xDA,0x60,0x4A,0x2A,0x6F,0x28,0x0C,0x00, +0x47,0x53,0x87,0x38,0x2F,0x3E,0x04,0x00,0x39,0x3C,0x00,0x00,0xD2,0x29,0x08,0x30, +0x02,0x32,0x41,0xB4,0x20,0x66,0x46,0xBE,0x1C,0x6D,0x00,0x72,0x47,0x53,0x58,0xE3, +0x02,0x65,0xCB,0xDA,0x25,0x38,0x40,0xC8,0xC4,0x56,0x04,0xD8,0x41,0xD3,0xCB,0x51, +0xF4,0xFF,0x09,0x36,0xDC,0x60,0x47,0x52,0x6F,0x28,0x08,0x00,0x87,0x38,0x39,0x30, +0x00,0x00,0xDA,0x16,0x79,0xB4,0x00,0x00,0xDC,0x16,0x04,0x67,0x40,0x0A,0x01,0x00, +0x40,0x0A,0x00,0x00,0x75,0x4E,0x00,0x70,0x75,0x4E,0x90,0x48,0xF0,0x00,0x75,0x4E, +0xF9,0x45,0x00,0x00,0x9A,0x29,0xEA,0x41,0x26,0x00,0x90,0x4C,0xF0,0x00,0xEA,0x43, +0x36,0x00,0x59,0x4A,0x30,0x67,0x91,0x4C,0x0F,0x00,0x40,0xB8,0x06,0x6C,0x40,0xBC, +0xD8,0x6D,0x00,0x38,0x42,0xBC,0x06,0x6F,0x42,0xB8,0xCE,0x6E,0x02,0x3C,0x41,0xBA, +0x06,0x6C,0x41,0xBE,0xC4,0x6D,0x01,0x3A,0x43,0xBE,0x06,0x6F,0x43,0xBA,0xBA,0x6E, +0x03,0x3E,0x90,0x48,0xF0,0x00,0x04,0x30,0x40,0xE8,0x06,0x32,0x41,0xE8,0xF9,0x43, +0xFC,0x00,0xB6,0xA5,0x0F,0x74,0x42,0xC8,0x44,0xD8,0x31,0x38,0x00,0x40,0x42,0xCC, +0x46,0xDC,0x31,0x3C,0x02,0x60,0x46,0x46,0x40,0x92,0x02,0x66,0x46,0xC8,0x79,0x2A, +0x00,0x00,0x2C,0x2A,0xD5,0x4E,0xF9,0x4B,0xFF,0x00,0x3C,0x8A,0x6D,0x42,0xE4,0xFF, +0xED,0x49,0xEC,0xFF,0xC4,0x38,0xFC,0x38,0xFF,0xFF,0xC6,0x38,0x05,0x38,0x45,0x9E, +0x47,0x52,0x79,0x22,0x00,0x00,0x4E,0x04,0xEA,0xCB,0xFE,0xFF,0xC5,0xD3,0x2A,0x36, +0x00,0x00,0x03,0x3C,0x46,0x53,0x43,0xD6,0xC3,0x38,0xC3,0xC1,0xC0,0xD3,0x2A,0x34, +0x02,0x00,0xC1,0xC6,0x43,0x94,0xC2,0x38,0x41,0x52,0x41,0x3B,0xFA,0xFF,0xF9,0x49, +0xFC,0x00,0xA6,0xA5,0x2A,0x30,0x24,0x00,0x40,0xD0,0x40,0xD0,0xC0,0xD8,0xEA,0x47, +0x18,0x00,0x6A,0x20,0x2E,0x00,0x2A,0x30,0x32,0x00,0x0F,0x76,0x43,0xB0,0x00,0x62, +0x98,0x00,0x3C,0x32,0x8B,0x80,0x01,0x01,0x00,0x67,0x8E,0x00,0x43,0xC8,0x4C,0xE1, +0x7C,0x88,0x00,0x80,0x6A,0x4A,0x34,0x00,0x3C,0x66,0x41,0x42,0x40,0xD0,0xED,0x45, +0xC4,0xFF,0xF0,0x34,0x00,0x10,0x41,0x54,0x40,0xC2,0xCB,0x51,0xF6,0xFF,0x02,0x72, +0x49,0x2B,0xF6,0xFF,0x47,0x3B,0xFC,0xFF,0x5B,0x4A,0xC0,0x56,0x41,0xC0,0x74,0x3B, +0x00,0x00,0xFE,0xFF,0x84,0x3A,0x07,0x7A,0xD5,0x0B,0x71,0x4E,0xFA,0x66,0x89,0x54, +0xCE,0x51,0xDE,0xFF,0x75,0x4E,0x7C,0xB0,0x0F,0x00,0x3C,0x66,0x02,0x72,0xED,0x45, +0xC4,0xFF,0xD8,0x24,0xD8,0x24,0xD8,0x24,0xD8,0x24,0xD8,0x24,0xD8,0x24,0xD8,0x24, +0xD8,0x24,0x49,0x2B,0xF6,0xFF,0x47,0x3B,0xFC,0xFF,0x5B,0x4A,0xC0,0x56,0x41,0xC0, +0x74,0x3B,0x00,0x00,0xFE,0xFF,0x84,0x3A,0x07,0x7A,0xD5,0x0B,0x71,0x4E,0xFA,0x66, +0x89,0x54,0xCE,0x51,0xCA,0xFF,0x75,0x4E,0x40,0xC8,0x40,0xD0,0x44,0xD8,0x47,0x53, +0x07,0x3A,0x3C,0x32,0x00,0x80,0x6A,0x4A,0x34,0x00,0xC3,0x56,0x7C,0xC6,0x20,0x00, +0xED,0x45,0xC4,0xFF,0x49,0x2B,0xF6,0xFF,0x5B,0x4A,0xC2,0x56,0x7C,0xC4,0x02,0x00, +0x74,0x3B,0x00,0x20,0xFE,0xFF,0x7C,0x3B,0x01,0x00,0xFC,0xFF,0xB0,0x34,0x00,0x40, +0x44,0x54,0x40,0xB8,0x02,0x6F,0x44,0x42,0x81,0x3A,0x07,0x74,0xD5,0x05,0x71,0x4E, +0xFA,0x66,0xCF,0x51,0xE2,0xFF,0x05,0x3E,0xC3,0xD0,0x89,0x54,0xCE,0x51,0xC6,0xFF, +0x75,0x4E,0x39,0x4A,0x00,0x00,0x47,0x28,0x00,0x66,0xAA,0x00,0xE7,0x48,0xFE,0xFF, +0x10,0x10,0x00,0x12,0x01,0x02,0xF8,0x00,0x01,0x0C,0xF8,0x00,0x00,0x66,0x92,0x00, +0x40,0x02,0x03,0x00,0x08,0xE2,0x04,0x64,0xC0,0x08,0x01,0x00,0x39,0x12,0x00,0x00, +0x3E,0x28,0x41,0x02,0x03,0x00,0x01,0xB0,0x1E,0x67,0x01,0x3F,0x79,0x22,0x00,0x00, +0x60,0x29,0x91,0x4E,0x1F,0x32,0xC0,0x33,0x00,0x00,0x46,0x27,0x01,0xB1,0x19,0xE4, +0x01,0x80,0xC0,0x13,0x00,0x00,0x3E,0x28,0x28,0x10,0x01,0x00,0x28,0x80,0x02,0x00, +0x0A,0x66,0xB9,0x08,0x05,0x00,0x00,0x00,0x3E,0x28,0x44,0x60,0xF9,0x08,0x05,0x00, +0x00,0x00,0x3E,0x28,0x39,0x30,0x00,0x00,0x40,0x27,0x28,0x12,0x01,0x00,0x81,0x48, +0x41,0xD0,0x39,0x32,0x00,0x00,0x42,0x27,0x28,0x16,0x02,0x00,0x83,0x48,0x43,0xD2, +0x24,0x61,0x79,0x22,0x00,0x00,0x68,0x29,0x91,0x4E,0x1A,0x61,0xC0,0x33,0x00,0x00, +0x40,0x27,0xC1,0x33,0x00,0x00,0x42,0x27,0x79,0x22,0x00,0x00,0x64,0x29,0x91,0x4E, +0xDF,0x4C,0xFF,0x7F,0x75,0x4E,0x40,0x4A,0x04,0x6C,0x40,0x42,0x0E,0x60,0x79,0xB0, +0x00,0x00,0xE6,0x26,0x06,0x6F,0x39,0x30,0x00,0x00,0xE6,0x26,0x41,0x4A,0x04,0x6C, +0x41,0x42,0x75,0x4E,0x79,0xB2,0x00,0x00,0xE8,0x26,0x06,0x6F,0x39,0x32,0x00,0x00, +0xE8,0x26,0x75,0x4E,0x79,0x4A,0x00,0x00,0x44,0x27,0x16,0x66,0xE7,0x40,0x7C,0x00, +0x00,0x07,0xF9,0x41,0x00,0x00,0x42,0x28,0xC0,0x30,0xC1,0x30,0xD0,0x08,0x00,0x00, +0xDF,0x46,0x75,0x4E,0x39,0x4A,0x00,0x00,0x47,0x28,0x34,0x66,0xB9,0x08,0x00,0x00, +0x00,0x00,0x46,0x28,0x2A,0x67,0x39,0x22,0x00,0x00,0x42,0x28,0x01,0x20,0x40,0x48, +0xA7,0x48,0x00,0xC0,0xF9,0x45,0x00,0x00,0x50,0x28,0x00,0x61,0x32,0x02,0x9F,0x4C, +0x03,0x00,0xF9,0x41,0x00,0x00,0x42,0x26,0xF9,0x45,0x00,0x00,0x50,0x28,0x4A,0x61, +0x75,0x4E,0x79,0x20,0x00,0x00,0x9E,0x29,0x79,0x21,0x00,0x00,0x60,0x29,0x12,0x00, +0xE8,0x23,0x0E,0x00,0x00,0x00,0x60,0x29,0x75,0x4E,0x79,0x20,0x00,0x00,0x9E,0x29, +0x79,0x21,0x00,0x00,0x68,0x29,0x12,0x00,0xE8,0x23,0x0E,0x00,0x00,0x00,0x68,0x29, +0x75,0x4E,0x79,0x20,0x00,0x00,0x9E,0x29,0x79,0x21,0x00,0x00,0x64,0x29,0x12,0x00, +0xE8,0x23,0x0E,0x00,0x00,0x00,0x64,0x29,0x75,0x4E,0x28,0x3F,0x06,0x00,0x28,0x3F, +0x08,0x00,0x42,0x42,0x68,0x4A,0x04,0x00,0x02,0x6C,0x10,0x74,0x02,0x3F,0x42,0x42, +0xAA,0x08,0x01,0x00,0x06,0x00,0x68,0x90,0x00,0x00,0x16,0x65,0x39,0x36,0x00,0x00, +0xE6,0x26,0x7C,0x96,0x0F,0x00,0x43,0xB0,0x10,0x62,0xEA,0x08,0x01,0x00,0x06,0x00, +0x0A,0x60,0x7C,0xD0,0x10,0x00,0x08,0x74,0x02,0x60,0x10,0x74,0x68,0x92,0x02,0x00, +0xE8,0x41,0x0A,0x00,0x12,0x65,0x39,0x36,0x00,0x00,0xE8,0x26,0x7C,0x96,0x0F,0x00, +0x43,0xB2,0x12,0x62,0x10,0x7A,0x18,0x60,0x01,0x3A,0x7C,0xDA,0x10,0x00,0x41,0xE5, +0xC1,0x90,0x41,0x42,0x0A,0x60,0x39,0x3A,0x00,0x00,0xE8,0x26,0x41,0x9A,0x45,0x52, +0x00,0x61,0x90,0xA1,0x79,0x22,0x00,0x00,0x4E,0x04,0xC1,0xD2,0xF9,0x47,0xFD,0x00, +0x90,0x01,0x00,0x3C,0x7C,0xBC,0x08,0x00,0x0C,0x65,0xF9,0x47,0xFD,0x00,0x82,0x01, +0x3C,0x3C,0x10,0x00,0x40,0x9C,0x7B,0x2A,0x2E,0x20,0x7B,0x2C,0x2E,0x20,0x39,0x34, +0x00,0x00,0x9A,0x29,0x02,0x36,0x43,0xD6,0x39,0x38,0x00,0x00,0x9C,0x29,0x49,0x25, +0x02,0x00,0x45,0x35,0x00,0x00,0xEA,0x08,0x00,0x00,0x06,0x00,0xEA,0x45,0x08,0x00, +0x09,0x2E,0x05,0x32,0x44,0x60,0xFD,0x00,0x4E,0x01,0xFD,0x00,0x58,0x01,0xFD,0x00, +0x64,0x01,0xFD,0x00,0x68,0x01,0xFD,0x00,0x76,0x01,0xFD,0x00,0x7C,0x01,0x40,0x42, +0xEF,0xE2,0x02,0x00,0x40,0xD1,0xEF,0xE2,0x04,0x00,0x50,0xE7,0x6F,0xD0,0x00,0x00, +0x7B,0x28,0x20,0x00,0xE7,0x48,0x00,0x60,0x96,0x4E,0xDF,0x4C,0x06,0x00,0x01,0x3A, +0x4D,0xE5,0xC5,0x90,0x01,0x3A,0x87,0x54,0x47,0x22,0xCA,0x51,0xD2,0xFF,0x8F,0x5C, +0x75,0x4E,0xFD,0x00,0xA2,0x01,0xFD,0x00,0xAC,0x01,0xFD,0x00,0xB4,0x01,0xFD,0x00, +0xBC,0x01,0xFD,0x00,0xC2,0x01,0xFD,0x00,0xCA,0x01,0xFD,0x00,0xD0,0x01,0xFD,0x00, +0xD8,0x01,0x11,0x34,0x42,0x48,0x31,0x34,0x00,0x30,0xC2,0x24,0xD3,0x4E,0x82,0x33, +0x00,0x30,0x42,0x48,0x82,0x32,0xC4,0xD2,0xCD,0x51,0xE8,0xFF,0x75,0x4E,0x11,0x34, +0xC2,0x34,0xD3,0x4E,0x82,0x32,0xC4,0xD2,0xCD,0x51,0xF4,0xFF,0x75,0x4E,0x11,0x34, +0xC2,0x34,0x42,0x48,0xD3,0x4E,0x42,0x48,0x82,0x32,0xC4,0xD2,0xCD,0x51,0xF0,0xFF, +0x75,0x4E,0x00,0x70,0x18,0x30,0xB8,0xED,0x00,0x72,0x18,0x32,0xB9,0xED,0xD4,0x4E, +0x00,0x70,0x18,0x30,0x40,0x48,0xB8,0xEC,0x00,0x72,0x18,0x32,0x41,0x48,0xB9,0xEC, +0xD4,0x4E,0x80,0x46,0x80,0xC4,0x81,0x46,0x81,0xC4,0xD5,0x4E,0x80,0x84,0x81,0x46, +0x81,0xC4,0xD5,0x4E,0x80,0x46,0x80,0xC4,0x81,0x84,0xD5,0x4E,0x80,0x84,0x81,0x84, +0xD5,0x4E,0x82,0xB3,0x80,0x46,0x80,0xC4,0xD5,0x4E,0x80,0x84,0x82,0xB3,0xD5,0x4E, +0x80,0x46,0x80,0xC4,0x82,0xB3,0xD5,0x4E,0x82,0xB1,0x81,0x84,0xD5,0x4E,0xAA,0x08, +0x00,0x00,0x06,0x00,0x00,0x67,0xC6,0x00,0x2A,0x38,0x00,0x00,0x04,0x34,0x42,0x53, +0x39,0x36,0x00,0x00,0x9C,0x29,0x6A,0x20,0x02,0x00,0xEA,0x43,0x08,0x00,0x39,0x3A, +0x00,0x00,0x9A,0x29,0x45,0x55,0x54,0x62,0x1C,0x67,0x2A,0x08,0x01,0x00,0x06,0x00, +0x0A,0x66,0x99,0x30,0xC3,0xD0,0xCA,0x51,0xFA,0xFF,0x75,0x4E,0x99,0x20,0xC3,0xD0, +0xCA,0x51,0xFA,0xFF,0x75,0x4E,0x48,0x2A,0x44,0xD8,0x2A,0x08,0x01,0x00,0x06,0x00, +0x12,0x66,0x49,0x24,0xC4,0xD4,0xD9,0x30,0x9A,0x30,0xC3,0xDA,0x4D,0x20,0xCA,0x51, +0xF6,0xFF,0x75,0x4E,0x49,0x24,0xC4,0xD4,0xC4,0xD4,0xD9,0x30,0xDA,0x30,0xD9,0x30, +0x9A,0x30,0xC3,0xDA,0x4D,0x20,0xCA,0x51,0xF2,0xFF,0x75,0x4E,0x48,0x2A,0x44,0xD8, +0x2A,0x08,0x01,0x00,0x06,0x00,0x1E,0x66,0x49,0x24,0xC4,0xD4,0x4A,0x26,0xC4,0xD6, +0x4B,0x28,0xC4,0xD8,0xD9,0x30,0xDA,0x30,0xDB,0x30,0x9C,0x30,0xC3,0xDA,0x4D,0x20, +0xCA,0x51,0xF2,0xFF,0x75,0x4E,0x44,0xD8,0x49,0x24,0xC4,0xD4,0x4A,0x26,0xC4,0xD6, +0x4B,0x28,0xC4,0xD8,0xD9,0x30,0xDA,0x30,0xDB,0x30,0xDC,0x30,0xD9,0x30,0xDA,0x30, +0xDB,0x30,0x9C,0x30,0xC3,0xDA,0x4D,0x20,0xCA,0x51,0xEA,0xFF,0x75,0x4E,0x39,0x52, +0x00,0x00,0x47,0x28,0x79,0x52,0x00,0x00,0x44,0x27,0x79,0x0C,0x01,0x00,0x00,0x00, +0x44,0x27,0x14,0x66,0x0E,0x2F,0xF9,0x45,0x00,0x00,0x50,0x28,0x00,0x61,0x10,0xFF, +0x5F,0x2C,0x39,0x42,0x00,0x00,0x46,0x28,0x39,0x53,0x00,0x00,0x47,0x28,0x75,0x4E, +0x39,0x52,0x00,0x00,0x47,0x28,0x79,0x53,0x00,0x00,0x44,0x27,0x2E,0x6E,0x26,0x6B, +0x39,0x30,0x00,0x00,0x40,0x27,0x39,0x32,0x00,0x00,0x42,0x27,0x0E,0x2F,0xF9,0x41, +0x00,0x00,0x42,0x26,0xF9,0x45,0x00,0x00,0x50,0x28,0x00,0x61,0xFE,0xFC,0x5F,0x2C, +0x39,0x42,0x00,0x00,0x46,0x28,0x79,0x42,0x00,0x00,0x44,0x27,0x39,0x53,0x00,0x00, +0x47,0x28,0x75,0x4E,0x39,0x52,0x00,0x00,0x47,0x28,0x79,0x20,0x00,0x00,0xA2,0x29, +0xF9,0x43,0x00,0x00,0x42,0x26,0x18,0x30,0x7C,0xC0,0x0F,0x00,0xC0,0x33,0x00,0x00, +0x42,0x26,0x18,0x30,0x7C,0xC0,0x0F,0x00,0xC0,0x33,0x00,0x00,0x44,0x26,0xD8,0x33, +0x00,0x00,0x46,0x26,0x18,0x30,0x79,0xB0,0x00,0x00,0x00,0x27,0x02,0x6B,0x01,0x70, +0x7C,0x22,0xFD,0x00,0x46,0x37,0x40,0xD0,0xF1,0x33,0x00,0x00,0x00,0x00,0x48,0x26, +0x18,0x30,0x79,0xB0,0x00,0x00,0x00,0x27,0x02,0x6B,0x01,0x70,0x40,0xD0,0xF1,0x33, +0x00,0x00,0x00,0x00,0x4A,0x26,0x0F,0x70,0xF9,0x43,0x00,0x00,0x4C,0x26,0xD8,0x32, +0xE8,0x32,0x1E,0x00,0xC8,0x51,0xF8,0xFF,0x39,0x53,0x00,0x00,0x47,0x28,0x75,0x4E, +0xE7,0x48,0xFC,0xFF,0x56,0x4E,0xB4,0xFF,0x79,0x24,0x00,0x00,0xA2,0x29,0x2A,0x34, +0x00,0x00,0xCB,0x97,0x82,0x08,0x04,0x00,0x22,0x67,0x79,0x26,0x00,0x00,0xC8,0x29, +0x00,0x70,0x79,0x4A,0x00,0x00,0xCE,0x29,0x02,0x67,0x20,0x70,0x40,0x3D,0xE4,0xFF, +0x7C,0x3D,0x02,0x00,0xE2,0xFF,0x7C,0x3D,0x1E,0x00,0xE6,0xFF,0x4B,0x2D,0xDE,0xFF, +0x79,0x26,0x00,0x00,0x9E,0x29,0x6B,0x2A,0x0E,0x00,0x6B,0x28,0x12,0x00,0x2D,0x2C, +0x00,0x00,0x14,0x66,0x39,0x2C,0x00,0x00,0x4E,0x04,0x39,0x30,0x00,0x00,0x9A,0x29, +0x39,0x38,0x00,0x00,0x9C,0x29,0x0C,0x60,0x2D,0x30,0x0C,0x00,0x2D,0x38,0x08,0x00, +0x44,0xD8,0xC0,0xC8,0x2C,0x2E,0x00,0x00,0x14,0x66,0x39,0x2E,0x00,0x00,0x4E,0x04, +0x39,0x32,0x00,0x00,0x9A,0x29,0x39,0x3A,0x00,0x00,0x9C,0x29,0x0C,0x60,0x2C,0x32, +0x0C,0x00,0x2C,0x3A,0x08,0x00,0x45,0xDA,0xC1,0xCA,0x16,0x76,0x03,0x03,0x00,0x67, +0xFE,0x01,0x41,0x3D,0xB8,0xFF,0x40,0xD0,0x40,0x3D,0xCA,0xFF,0x41,0xD2,0x41,0x3D, +0xD8,0xFF,0x44,0x3D,0xCC,0xFF,0x45,0x3D,0xDA,0xFF,0x46,0x2D,0xC6,0xFF,0x47,0x2D, +0xD4,0xFF,0x02,0x78,0x02,0x7A,0x79,0x4A,0x00,0x00,0x0E,0x2A,0x00,0x67,0xB2,0x00, +0x7C,0xB0,0x02,0x00,0x00,0x66,0xC8,0x01,0x44,0x42,0xF9,0x41,0xFD,0x00,0x46,0x37, +0x2A,0x3C,0x04,0x00,0x79,0xBC,0x00,0x00,0x00,0x27,0x02,0x6B,0x01,0x7C,0x46,0xDC, +0x30,0x3C,0x00,0x60,0x2A,0x3E,0x02,0x00,0x79,0xBE,0x00,0x00,0x00,0x27,0x02,0x6B, +0x01,0x7E,0x47,0xDE,0x30,0x3E,0x00,0x70,0x7C,0xB4,0x01,0x00,0x40,0x67,0x7C,0xB4, +0x02,0x00,0x24,0x67,0x7C,0xB4,0x03,0x00,0x56,0x67,0x7C,0xB4,0x04,0x00,0x00,0x66, +0x7E,0x01,0x7C,0x1D,0x01,0x00,0xBE,0xFF,0x7C,0x1D,0x0D,0x00,0xBF,0xFF,0x6E,0x42, +0xBA,0xFF,0x46,0x3D,0xBC,0xFF,0x62,0x60,0x7C,0x1D,0x04,0x00,0xBE,0xFF,0x7C,0x1D, +0x07,0x00,0xC0,0xFF,0x6E,0x42,0xBC,0xFF,0x47,0x3D,0xBA,0xFF,0x4C,0x60,0x46,0x3D, +0xBC,0xFF,0x47,0x3D,0xBA,0xFF,0x7C,0x1D,0x00,0x00,0xBE,0xFF,0x7C,0x1D,0x0C,0x00, +0xBF,0xFF,0x7C,0x1D,0x03,0x00,0xC0,0xFF,0x7C,0x1D,0x0F,0x00,0xC1,0xFF,0x2A,0x60, +0x6E,0x42,0xBC,0xFF,0x6E,0x42,0xBA,0xFF,0x7C,0x1D,0x06,0x00,0xBE,0xFF,0x1A,0x60, +0x7C,0xB4,0x10,0x00,0x00,0x64,0x18,0x01,0x40,0xB2,0x00,0x66,0x12,0x01,0x6E,0x42, +0xBC,0xFF,0x6E,0x42,0xBA,0xFF,0x42,0x1D,0xBE,0xFF,0x44,0x3D,0xCE,0xFF,0x45,0x3D, +0xDC,0xFF,0x79,0x24,0x00,0x00,0xA6,0x29,0x79,0x4A,0x00,0x00,0xD0,0x29,0x06,0x67, +0xAC,0x4A,0x00,0x00,0x48,0x67,0x2A,0x30,0x00,0x00,0x2A,0x32,0x02,0x00,0x2A,0x34, +0x08,0x00,0x2A,0x36,0x0A,0x00,0x40,0x3D,0xC2,0xFF,0x41,0x3D,0xC4,0xFF,0x42,0x3D, +0xD0,0xFF,0x43,0x3D,0xD2,0xFF,0x2A,0x38,0x04,0x00,0x2A,0x3A,0x06,0x00,0x04,0x3C, +0x40,0x9C,0x46,0x52,0x46,0x3D,0xB4,0xFF,0x05,0x3E,0x41,0x9E,0x47,0x52,0x47,0x3D, +0xB6,0xFF,0x2A,0x3C,0x0C,0x00,0x2A,0x3E,0x0E,0x00,0x00,0x60,0x8A,0x00,0x2A,0x30, +0x00,0x00,0x2A,0x34,0x08,0x00,0x39,0x38,0x00,0x00,0xD2,0x29,0x44,0xB4,0x06,0x6C, +0x42,0xC9,0x42,0x98,0x44,0x90,0x40,0x3D,0xC2,0xFF,0x42,0x3D,0xD0,0xFF,0x2A,0x3C, +0x04,0x00,0x40,0x9C,0x42,0xDC,0x39,0x38,0x00,0x00,0xD6,0x29,0x44,0xBC,0x02,0x6F, +0x46,0xC9,0x2A,0x32,0x02,0x00,0x2A,0x36,0x0A,0x00,0x39,0x38,0x00,0x00,0xD4,0x29, +0x44,0xB6,0x06,0x6C,0x43,0xC9,0x43,0x98,0x44,0x92,0x41,0x3D,0xC4,0xFF,0x43,0x3D, +0xD2,0xFF,0x2A,0x3E,0x06,0x00,0x41,0x9E,0x43,0xDE,0x39,0x38,0x00,0x00,0xD8,0x29, +0x44,0xBE,0x02,0x6F,0x47,0xC9,0x06,0x38,0x42,0x98,0x44,0x3D,0xB4,0xFF,0x6E,0x52, +0xB4,0xFF,0x2A,0x6F,0x40,0xD8,0x07,0x3A,0x43,0x9A,0x45,0x3D,0xB6,0xFF,0x6E,0x52, +0xB6,0xFF,0x1A,0x6F,0x41,0xDA,0x44,0x3D,0xEE,0xFF,0x45,0x3D,0xF0,0xFF,0x46,0x3D, +0xF6,0xFF,0x47,0x3D,0xF8,0xFF,0x79,0x2A,0x00,0x00,0x24,0x2A,0x95,0x4E,0x79,0x20, +0x00,0x00,0x9E,0x29,0x68,0x42,0x04,0x00,0x68,0x42,0x08,0x00,0x5E,0x4E,0xDF,0x4C, +0xFF,0x3F,0x75,0x4E,0x75,0x4E,0xFC,0xDC,0x4C,0x00,0x2E,0x30,0xC2,0xFF,0x2E,0x3A, +0xC4,0xFF,0x2E,0x34,0xD0,0xFF,0x2E,0x3E,0xD2,0xFF,0x00,0x38,0x02,0x3C,0x2E,0x32, +0xB6,0xFF,0x41,0x53,0x41,0xDA,0x41,0xDE,0x2E,0x32,0xB4,0xFF,0x41,0x53,0x41,0xD8, +0x41,0xDC,0x44,0x3D,0xEE,0xFF,0x45,0x3D,0xF0,0xFF,0x46,0x3D,0xF6,0xFF,0x47,0x3D, +0xF8,0xFF,0x79,0x2A,0x00,0x00,0x24,0x2A,0xD5,0x4E,0x49,0x4A,0x20,0x4D,0x4F,0x4C, +0x45,0x56,0x20,0x53,0x45,0x4A,0x45,0x4E,0x4E,0x41,0x00,0x45,0x00,0x00,0x00,0x80, +0x00,0xC0,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xFC,0x00,0xFE,0x00,0xFF,0x80,0xFF, +0xC0,0xFF,0xE0,0xFF,0xF0,0xFF,0xF8,0xFF,0xFC,0xFF,0xFE,0xFF,0xFF,0xFF,0xF9,0x4B, +0xFF,0x00,0x3C,0x8A,0x0F,0x72,0x02,0x3A,0x41,0xCA,0x05,0x3E,0x45,0xDA,0x3B,0x36, +0xCC,0x50,0x43,0x46,0x43,0x48,0x06,0x3A,0x41,0xCA,0x45,0xDA,0x3B,0x36,0xC0,0x50, +0x00,0x3A,0x41,0xCA,0x45,0x9E,0x48,0xE8,0x4C,0xE8,0x4A,0xE8,0x4E,0xE8,0x04,0x32, +0x40,0x98,0xEE,0xC3,0xCA,0xFF,0x2E,0x3A,0xF0,0xFF,0xEE,0xCB,0xCC,0xFF,0x81,0xDA, +0x6E,0x24,0xC6,0xFF,0xF2,0x41,0x00,0x58,0x06,0x32,0x42,0x9C,0x06,0x6E,0x03,0x2A, +0x45,0x48,0x85,0xC6,0xEE,0xC3,0xD8,0xFF,0x2E,0x3A,0xF8,0xFF,0x45,0x3D,0xE8,0xFF, +0xEE,0xCB,0xDA,0xFF,0x81,0xDA,0x6E,0x26,0xD4,0xFF,0xF3,0x43,0x00,0x58,0x00,0x72, +0xC9,0xB1,0x06,0x6E,0x34,0x66,0x47,0x4A,0x30,0x6C,0x00,0x32,0xEE,0xC3,0xCA,0xFF, +0x2E,0x3A,0xC4,0xFF,0xEE,0xCB,0xCC,0xFF,0x81,0xDA,0xF2,0x41,0x00,0x58,0x02,0x32, +0xEE,0xC3,0xD8,0xFF,0x2E,0x3A,0xD2,0xFF,0x45,0x3D,0xE8,0xFF,0xEE,0xCB,0xDA,0xFF, +0x81,0xDA,0xF3,0x43,0x00,0x58,0x08,0x72,0x43,0x48,0x7C,0x3B,0xFF,0xFF,0xEE,0xFF, +0x43,0x3B,0xEC,0xFF,0x43,0x48,0x43,0x3B,0xF0,0xFF,0x06,0x30,0x40,0x52,0x40,0x3B, +0xFA,0xFF,0x47,0x4A,0x02,0x6C,0x41,0x54,0x44,0xBC,0x02,0x66,0x41,0x58,0x2E,0x34, +0xCA,0xFF,0x2E,0x36,0xD8,0xFF,0x04,0x30,0xC2,0xC9,0x44,0x44,0x6E,0xD8,0xCC,0xFF, +0x46,0xD0,0xC3,0xCD,0x46,0x44,0x6E,0xDC,0xDA,0xFF,0x01,0x08,0x03,0x00,0x08,0x66, +0x42,0x44,0x43,0x44,0x44,0x44,0x46,0x44,0x46,0x3B,0xF4,0xFF,0x44,0x3B,0xE6,0xFF, +0x40,0x4A,0x06,0x66,0x07,0x34,0x7C,0xD2,0x10,0x00,0x7C,0xCE,0x0F,0x00,0x7B,0x8E, +0x12,0x10,0x43,0x3B,0xF2,0xFF,0x42,0x3B,0xE4,0xFF,0x26,0x66,0xC7,0x08,0x07,0x00, +0x20,0x60,0x40,0x80,0x80,0x80,0xC0,0x80,0x00,0x80,0x40,0x80,0x80,0x80,0x00,0x80, +0xC0,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80, +0x00,0x80,0x6E,0x34,0xCE,0xFF,0x6E,0x36,0xDC,0xFF,0x2E,0x34,0xBC,0xFF,0x2E,0x36, +0xBA,0xFF,0x2E,0x38,0xB6,0xFF,0x2E,0x3A,0xB8,0xFF,0x7C,0x3B,0x00,0x02,0xFE,0xFF, +0x6E,0x28,0xDE,0xFF,0x0C,0x2C,0x00,0x67,0x7E,0x00,0x6D,0x00,0x00,0x01,0xFE,0xFF, +0x2E,0x30,0xE2,0xFF,0x40,0x55,0x74,0x66,0x2E,0x30,0xE6,0xFF,0x7C,0xC0,0xFE,0xFF, +0x7C,0xB0,0x1E,0x00,0x66,0x66,0x2E,0x30,0xE8,0xFF,0x7C,0xC0,0x0F,0x00,0x58,0xE1, +0x40,0x8E,0x2E,0x30,0xE4,0xFF,0x2E,0x66,0x00,0x7C,0x2E,0x60,0x48,0x2B,0xE8,0xFF, +0x49,0x2B,0xF6,0xFF,0x44,0x3B,0xFC,0xFF,0x46,0x42,0x4B,0xE2,0x46,0xDD,0x4A,0xE2, +0x46,0xDD,0x76,0x1B,0xBE,0x60,0xFF,0xFF,0x87,0x3A,0xCA,0xD0,0xCB,0xD2,0x07,0x7C, +0xD5,0x0D,0x71,0x4E,0xFA,0x66,0x0C,0x2C,0x1C,0x67,0xED,0x4B,0xC4,0xFF,0xDC,0x2A, +0xDC,0x2A,0xDC,0x2A,0xDC,0x2A,0xDC,0x2A,0xDC,0x2A,0xDC,0x2A,0xDC,0x2A,0xED,0x4B, +0x1C,0x00,0x46,0x28,0xC0,0xD8,0xCD,0x51,0xB4,0xFF,0x75,0x4E,0x45,0x48,0x3C,0x3A, +0x07,0x00,0x2E,0x30,0xE2,0xFF,0x2E,0x32,0xE8,0xFF,0xC0,0xC3,0x41,0x3D,0xE8,0xFF, +0x2E,0x32,0xE6,0xFF,0x6E,0x28,0xDE,0xFF,0x46,0x4A,0x56,0x6C,0x40,0x44,0x52,0x60, +0x45,0x48,0x48,0x2B,0xE8,0xFF,0x49,0x2B,0xF6,0xFF,0x46,0x42,0x4B,0xE2,0x46,0xDD, +0x4A,0xE2,0x46,0xDD,0x76,0x1B,0xBE,0x60,0xFF,0xFF,0x42,0x48,0x43,0x48,0x2E,0x36, +0xE8,0xFF,0x01,0x7C,0x18,0x60,0x03,0x34,0x40,0xD6,0x41,0xC4,0x74,0x3B,0x00,0x20, +0xC4,0xFF,0x46,0x3B,0xFC,0xFF,0x87,0x3A,0x71,0x4E,0xD5,0x0B,0xFA,0x66,0xCC,0x51, +0xE6,0xFF,0xCA,0xD0,0xCB,0xD2,0xEE,0xD8,0xE4,0xFF,0x42,0x48,0x43,0x48,0x2E,0x38, +0xB6,0xFF,0x45,0x48,0xCD,0x51,0xAA,0xFF,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xFC,0x23, +0xFC,0x00,0xF4,0x9F,0x00,0x00,0x10,0x2A,0x04,0x61,0x5E,0x4E,0x75,0x4E,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x03,0x79,0x20,0x00,0x00,0xA6,0x29,0xD0,0x33,0x00,0x00, +0xF2,0x16,0x79,0x20,0x00,0x00,0xA6,0x29,0xE8,0x33,0x02,0x00,0x00,0x00,0xE8,0x16, +0x39,0x30,0x00,0x00,0xF2,0x16,0x79,0xB0,0x00,0x00,0xD2,0x29,0x00,0x6D,0x9A,0x04, +0x39,0x30,0x00,0x00,0xF2,0x16,0x79,0xB0,0x00,0x00,0xD6,0x29,0x00,0x6E,0x8A,0x04, +0x39,0x30,0x00,0x00,0xE8,0x16,0x79,0xB0,0x00,0x00,0xD4,0x29,0x00,0x6D,0x7A,0x04, +0x39,0x30,0x00,0x00,0xE8,0x16,0x79,0xB0,0x00,0x00,0xD8,0x29,0x00,0x6E,0x6A,0x04, +0x79,0x20,0x00,0x00,0xA2,0x29,0xD0,0x33,0x00,0x00,0xDC,0x16,0x39,0x30,0x00,0x00, +0x00,0x27,0x79,0xB0,0x00,0x00,0xDC,0x16,0x00,0x6F,0x4E,0x04,0x79,0x4A,0x00,0x00, +0xDC,0x16,0x16,0x6C,0xB9,0x4E,0xFC,0x00,0x70,0xFB,0xC0,0x33,0x00,0x00,0xDC,0x16, +0xFC,0x33,0x01,0x00,0x00,0x00,0xDA,0x16,0x32,0x60,0x79,0x30,0x00,0x00,0xDC,0x16, +0xC8,0xD1,0x7C,0x22,0xFD,0x00,0x46,0x37,0x30,0x30,0x00,0x98,0x79,0x32,0x00,0x00, +0x94,0x26,0x49,0x53,0xC9,0xD3,0xFC,0xD3,0xFD,0x00,0xEA,0x35,0x11,0x32,0x41,0xC0, +0xC0,0x33,0x00,0x00,0xDC,0x16,0x79,0x42,0x00,0x00,0xDA,0x16,0x79,0x20,0x00,0x00, +0xCA,0x27,0x28,0x3E,0x1E,0x00,0x07,0x30,0x7C,0xC0,0x01,0x00,0xC0,0x33,0x00,0x00, +0xB2,0x29,0x07,0x30,0x7C,0xC0,0x02,0x00,0xC0,0x33,0x00,0x00,0xB4,0x29,0x07,0x30, +0x7C,0xC0,0x04,0x00,0xC0,0x33,0x00,0x00,0xB6,0x29,0x07,0x30,0x7C,0xC0,0x08,0x00, +0xC0,0x33,0x00,0x00,0xB8,0x29,0x79,0x42,0x00,0x00,0xBA,0x29,0xBC,0x2E,0x00,0x00, +0xEC,0x16,0x3C,0x2F,0x00,0x00,0xEA,0x16,0x39,0x3F,0x00,0x00,0xE8,0x16,0x39,0x3F, +0x00,0x00,0xF2,0x16,0xB9,0x4E,0xFC,0x00,0xC0,0xFB,0x8F,0x50,0xC0,0x33,0x00,0x00, +0xFA,0x16,0x40,0x42,0xC0,0x33,0x00,0x00,0xDE,0x16,0xC0,0x33,0x00,0x00,0xE2,0x16, +0xFC,0x33,0x03,0x00,0x00,0x00,0xE0,0x16,0x39,0x30,0x00,0x00,0xE8,0x16,0x7C,0x80, +0x00,0x80,0xC0,0x33,0x00,0x00,0x06,0x17,0xF9,0x33,0x00,0x00,0xEA,0x16,0x00,0x00, +0x08,0x17,0xF9,0x33,0x00,0x00,0xEC,0x16,0x00,0x00,0x0A,0x17,0x79,0x42,0x00,0x00, +0xF8,0x16,0x79,0x4A,0x00,0x00,0xFA,0x16,0x00,0x66,0xD4,0x00,0x00,0x60,0x4A,0x03, +0x1E,0x60,0x79,0x56,0x00,0x00,0xE2,0x16,0x39,0x30,0x00,0x00,0xE2,0x16,0x79,0xB0, +0x00,0x00,0xE0,0x16,0x0A,0x66,0xF9,0x33,0x00,0x00,0xDE,0x16,0x00,0x00,0xE2,0x16, +0x79,0x30,0x00,0x00,0xE2,0x16,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0x50,0x0C, +0xFF,0xFF,0xCE,0x67,0x79,0x30,0x00,0x00,0xE2,0x16,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0x06,0x17,0xD0,0x33,0x00,0x00,0xE8,0x16,0x79,0x30,0x00,0x00,0xE2,0x16,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0x06,0x17,0xBC,0x30,0xFF,0xFF,0x79,0x52,0x00,0x00,0xE2,0x16, +0x79,0x30,0x00,0x00,0xE2,0x16,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0xD0,0x33, +0x00,0x00,0xEA,0x16,0x79,0x52,0x00,0x00,0xE2,0x16,0x79,0x30,0x00,0x00,0xE2,0x16, +0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0xD0,0x33,0x00,0x00,0xEC,0x16,0x79,0x52, +0x00,0x00,0xE2,0x16,0x39,0x30,0x00,0x00,0xE2,0x16,0x79,0xB0,0x00,0x00,0xE0,0x16, +0x04,0x66,0x00,0x61,0xAE,0x02,0x79,0x4A,0x00,0x00,0xF8,0x16,0x00,0x66,0x9A,0x02, +0xB9,0x3E,0x00,0x00,0xE8,0x16,0x57,0x02,0xFF,0x7F,0x39,0x3F,0x00,0x00,0xEC,0x16, +0x39,0x3F,0x00,0x00,0xEA,0x16,0xB9,0x4E,0xFC,0x00,0xAE,0xFB,0x8F,0x58,0x39,0x30, +0x00,0x00,0xE8,0x16,0x7C,0xC0,0x00,0x80,0x04,0x67,0x01,0x70,0x02,0x60,0xFF,0x70, +0xC0,0x33,0x00,0x00,0xF6,0x16,0xBC,0x2E,0x00,0x00,0x04,0x17,0x3C,0x2F,0x00,0x00, +0xF0,0x16,0x3C,0x2F,0x00,0x00,0xEE,0x16,0x39,0x3F,0x00,0x00,0xE8,0x16,0x39,0x30, +0x00,0x00,0xF6,0x16,0x57,0xD1,0x39,0x3F,0x00,0x00,0xEA,0x16,0x00,0x61,0x9E,0x02, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0xC0,0x33,0x00,0x00,0xFA,0x16,0xF9,0x33,0x00,0x00, +0xF6,0x16,0x00,0x00,0xFE,0x16,0xF9,0x33,0x00,0x00,0xFA,0x16,0x00,0x00,0x00,0x17, +0xF9,0x33,0x00,0x00,0x04,0x17,0x00,0x00,0x02,0x17,0xF9,0x33,0x00,0x00,0xE8,0x16, +0x00,0x00,0xFC,0x16,0x00,0x60,0xAE,0x00,0xF9,0x33,0x00,0x00,0xEA,0x16,0x00,0x00, +0xF2,0x16,0x3C,0x60,0xBC,0x2E,0x00,0x00,0x02,0x17,0x3C,0x2F,0x00,0x00,0xF4,0x16, +0x3C,0x2F,0x00,0x00,0xF2,0x16,0x39,0x30,0x00,0x00,0xFC,0x16,0x3C,0x32,0x00,0x80, +0x40,0xB3,0x00,0x3F,0x79,0x53,0x00,0x00,0xF2,0x16,0x39,0x3F,0x00,0x00,0xF2,0x16, +0x00,0x61,0x2A,0x02,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xC0,0x33,0x00,0x00,0x00,0x17, +0x39,0x30,0x00,0x00,0xF2,0x16,0x79,0xB0,0x00,0x00,0xEE,0x16,0xB6,0x6E,0xF9,0x33, +0x00,0x00,0xEE,0x16,0x00,0x00,0xEA,0x16,0x39,0x30,0x00,0x00,0xEE,0x16,0x40,0x53, +0x79,0xB0,0x00,0x00,0xF2,0x16,0x3C,0x6F,0x79,0x4A,0x00,0x00,0x00,0x17,0x08,0x66, +0x79,0x4A,0x00,0x00,0x02,0x17,0x2C,0x67,0xF9,0x33,0x00,0x00,0xF2,0x16,0x00,0x00, +0xEE,0x16,0x39,0x30,0x00,0x00,0xFE,0x16,0x79,0xD1,0x00,0x00,0xFC,0x16,0x39,0x30, +0x00,0x00,0xFE,0x16,0x40,0x44,0xC0,0x33,0x00,0x00,0xFE,0x16,0x79,0x0A,0x00,0x80, +0x00,0x00,0xFC,0x16,0x39,0x30,0x00,0x00,0xEA,0x16,0x40,0x53,0x79,0xB0,0x00,0x00, +0xEE,0x16,0x14,0x6F,0x79,0x4A,0x00,0x00,0x00,0x17,0x00,0x66,0x3C,0xFF,0x79,0x4A, +0x00,0x00,0x02,0x17,0x00,0x66,0x32,0xFF,0x3C,0x60,0xBC,0x2E,0x00,0x00,0x04,0x17, +0x3C,0x2F,0x00,0x00,0xF0,0x16,0x3C,0x2F,0x00,0x00,0xF2,0x16,0x39,0x3F,0x00,0x00, +0xE8,0x16,0x39,0x30,0x00,0x00,0xF6,0x16,0x57,0xD1,0x79,0x52,0x00,0x00,0xF0,0x16, +0x39,0x3F,0x00,0x00,0xF0,0x16,0x00,0x61,0x64,0x01,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0xC0,0x33,0x00,0x00,0xFA,0x16,0x39,0x30,0x00,0x00,0xF0,0x16,0x79,0xB0,0x00,0x00, +0xEC,0x16,0xB6,0x6D,0x00,0x60,0xAE,0x00,0xF9,0x33,0x00,0x00,0xEC,0x16,0x00,0x00, +0xF4,0x16,0x3C,0x60,0xBC,0x2E,0x00,0x00,0x04,0x17,0x3C,0x2F,0x00,0x00,0xF4,0x16, +0x3C,0x2F,0x00,0x00,0xF2,0x16,0x39,0x30,0x00,0x00,0xE8,0x16,0x3C,0x32,0x00,0x80, +0x40,0xB3,0x00,0x3F,0x79,0x52,0x00,0x00,0xF4,0x16,0x39,0x3F,0x00,0x00,0xF4,0x16, +0x00,0x61,0x0A,0x01,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xC0,0x33,0x00,0x00,0xFA,0x16, +0x39,0x30,0x00,0x00,0xF4,0x16,0x79,0xB0,0x00,0x00,0xF0,0x16,0xB6,0x6D,0xF9,0x33, +0x00,0x00,0xF0,0x16,0x00,0x00,0xEC,0x16,0x39,0x30,0x00,0x00,0xF0,0x16,0x40,0x52, +0x79,0xB0,0x00,0x00,0xF4,0x16,0x3C,0x6C,0x79,0x4A,0x00,0x00,0xFA,0x16,0x08,0x66, +0x79,0x4A,0x00,0x00,0x04,0x17,0x2C,0x67,0xF9,0x33,0x00,0x00,0xF4,0x16,0x00,0x00, +0xF0,0x16,0x39,0x30,0x00,0x00,0xF6,0x16,0x79,0xD1,0x00,0x00,0xE8,0x16,0x39,0x30, +0x00,0x00,0xF6,0x16,0x40,0x44,0xC0,0x33,0x00,0x00,0xF6,0x16,0x79,0x0A,0x00,0x80, +0x00,0x00,0xE8,0x16,0x39,0x30,0x00,0x00,0xEC,0x16,0x40,0x52,0x79,0xB0,0x00,0x00, +0xF0,0x16,0x14,0x6C,0x79,0x4A,0x00,0x00,0xFA,0x16,0x00,0x66,0x3C,0xFF,0x79,0x4A, +0x00,0x00,0x04,0x17,0x00,0x66,0x32,0xFF,0x39,0x30,0x00,0x00,0xE0,0x16,0x79,0xB0, +0x00,0x00,0xDE,0x16,0x00,0x66,0xBA,0xFC,0x9F,0x4A,0xDF,0x4C,0x80,0x00,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFC,0xFF,0x06,0x60,0x79,0x57,0x00,0x00,0xE0,0x16,0x79,0x30, +0x00,0x00,0xE0,0x16,0x48,0x57,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0x50,0x0C, +0xFF,0xFF,0x0E,0x66,0x39,0x30,0x00,0x00,0xE0,0x16,0x79,0xB0,0x00,0x00,0xDE,0x16, +0xD6,0x6E,0x39,0x30,0x00,0x00,0xE2,0x16,0x79,0xB0,0x00,0x00,0xE0,0x16,0x18,0x6D, +0xF9,0x33,0x00,0x00,0xDE,0x16,0x00,0x00,0xE2,0x16,0x79,0x20,0x00,0x00,0x10,0x2A, +0x90,0x4E,0xC0,0x33,0x00,0x00,0xF8,0x16,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0xFC,0xFF, +0x6E,0x20,0x14,0x00,0x50,0x42,0x79,0x4A,0x00,0x00,0xF8,0x16,0x06,0x67,0x40,0x42, +0x00,0x60,0xA2,0x01,0xAE,0x2E,0x10,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x3F,0x0A,0x00, +0x57,0x02,0xFF,0x7F,0x2E,0x3F,0x08,0x00,0xB9,0x4E,0xFC,0x00,0xC0,0xFB,0x8F,0x50, +0x40,0x4A,0x00,0x67,0x7E,0x01,0xF9,0x33,0x00,0x00,0xDE,0x16,0x00,0x00,0xE4,0x16, +0xFC,0x33,0xFF,0xFF,0x00,0x00,0xE6,0x16,0x00,0x60,0xD2,0x00,0x79,0x30,0x00,0x00, +0xE4,0x16,0x48,0x52,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x06,0x17,0x30,0x30,0x00,0x98, +0x6E,0x22,0x0C,0x00,0x11,0x32,0x41,0xB0,0x00,0x66,0x84,0x00,0x79,0x30,0x00,0x00, +0xE4,0x16,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0x50,0x0C,0xFF,0xFF,0x6E,0x67, +0x79,0x30,0x00,0x00,0xE4,0x16,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x06,0x17,0x30,0x30, +0x00,0x98,0x3C,0x32,0x00,0x80,0x40,0xB3,0x6E,0xB0,0x0A,0x00,0x50,0x66,0xAE,0x3E, +0x0A,0x00,0x57,0x02,0xFF,0x7F,0x6E,0x20,0x10,0x00,0x10,0x3F,0x6E,0x20,0x0C,0x00, +0x10,0x3F,0xB9,0x4E,0xFC,0x00,0xAE,0xFB,0x8F,0x58,0x79,0x30,0x00,0x00,0xE4,0x16, +0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0xBC,0x30,0xFF,0xFF,0x39,0x30,0x00,0x00, +0xE4,0x16,0x40,0x56,0x79,0xB0,0x00,0x00,0xE0,0x16,0x04,0x66,0x00,0x61,0xC4,0xFE, +0x6E,0x20,0x14,0x00,0xBC,0x30,0x01,0x00,0x40,0x42,0x00,0x60,0xC8,0x00,0x79,0x30, +0x00,0x00,0xE4,0x16,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0x50,0x0C,0xFF,0xFF, +0x14,0x66,0x79,0x0C,0xFF,0xFF,0x00,0x00,0xE6,0x16,0x0A,0x66,0xF9,0x33,0x00,0x00, +0xE4,0x16,0x00,0x00,0xE6,0x16,0x79,0x56,0x00,0x00,0xE4,0x16,0x39,0x30,0x00,0x00, +0xE4,0x16,0x79,0xB0,0x00,0x00,0xE0,0x16,0x00,0x6D,0x22,0xFF,0x79,0x0C,0xFF,0xFF, +0x00,0x00,0xE6,0x16,0x26,0x66,0x79,0x56,0x00,0x00,0xE0,0x16,0x39,0x30,0x00,0x00, +0xE0,0x16,0x7C,0xB0,0x80,0x07,0x12,0x6F,0xFC,0x33,0x01,0x00,0x00,0x00,0xF8,0x16, +0x6E,0x20,0x14,0x00,0x50,0x42,0x40,0x42,0x5A,0x60,0x0A,0x60,0xF9,0x33,0x00,0x00, +0xE6,0x16,0x00,0x00,0xE4,0x16,0x79,0x30,0x00,0x00,0xE4,0x16,0xC8,0xD1,0xFC,0xD1, +0x00,0x00,0x06,0x17,0xAE,0x30,0x0A,0x00,0x79,0x52,0x00,0x00,0xE4,0x16,0x79,0x30, +0x00,0x00,0xE4,0x16,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x06,0x17,0x6E,0x22,0x0C,0x00, +0x91,0x30,0x79,0x52,0x00,0x00,0xE4,0x16,0x79,0x30,0x00,0x00,0xE4,0x16,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0x06,0x17,0x6E,0x22,0x10,0x00,0x91,0x30,0x01,0x70,0x04,0x60, +0x02,0x60,0x40,0x42,0x5E,0x4E,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03, +0xB9,0x4E,0xFC,0x00,0x70,0xFB,0x00,0x3E,0x79,0x2A,0x00,0x00,0xAA,0x29,0xC7,0x3A, +0x79,0x0C,0x01,0x00,0x00,0x00,0x94,0x26,0x04,0x66,0x47,0x4A,0x10,0x66,0x79,0x0C, +0x02,0x00,0x00,0x00,0x94,0x26,0x08,0x66,0x7C,0xBE,0x03,0x00,0x02,0x66,0x0F,0x7E, +0x47,0x30,0xC8,0xD1,0xFC,0xD1,0xFD,0x00,0x66,0x37,0x90,0x3A,0x79,0x20,0x00,0x00, +0x9E,0x29,0x7C,0x31,0x02,0x00,0x08,0x00,0x9F,0x4A,0xDF,0x4C,0x80,0x20,0x5E,0x4E, +0x75,0x4E,0x0F,0x7A,0x00,0x32,0x45,0xC2,0x02,0x36,0x45,0xC6,0x48,0xE8,0x4A,0xE8, +0x4C,0xE8,0x4E,0xE8,0x40,0x98,0x42,0x9C,0x04,0x3A,0x46,0x9A,0x43,0x92,0x20,0x66, +0xAE,0x4A,0xBA,0xFF,0x1A,0x66,0x2E,0x0C,0x03,0x00,0xBE,0xFF,0x12,0x66,0x04,0x3E, +0x46,0xDE,0x7C,0xBE,0x04,0x00,0x08,0x65,0xAE,0x4A,0xDE,0xFF,0x00,0x67,0xDE,0x02, +0x06,0x30,0x40,0x53,0x40,0x3D,0xFA,0xFF,0x7C,0xCA,0x01,0x00,0x4D,0xE7,0x04,0x3E, +0x01,0x38,0x01,0x34,0x44,0x4A,0x06,0x6E,0x12,0x67,0x44,0x44,0x45,0x52,0x7C,0xB8, +0x08,0x00,0x08,0x6D,0x45,0x54,0x44,0x44,0x7C,0xD8,0x10,0x00,0x2E,0x30,0xC2,0xFF, +0x2E,0x32,0xC4,0xFF,0x00,0x61,0x7A,0x02,0xEE,0xCF,0xCA,0xFF,0x43,0x9E,0x2E,0x30, +0xD0,0xFF,0x2E,0x32,0xD2,0xFF,0x41,0x3D,0xE8,0xFF,0x00,0x61,0x7A,0x02,0xEE,0xCD, +0xD8,0xFF,0x43,0x9C,0xC9,0xB1,0x2A,0x62,0x04,0x66,0x42,0x4A,0x24,0x6C,0x45,0x58, +0x2E,0x30,0xEE,0xFF,0x2E,0x32,0xF0,0xFF,0x00,0x61,0x46,0x02,0x2E,0x30,0xF6,0xFF, +0x2E,0x32,0xF8,0xFF,0x41,0x3D,0xE8,0xFF,0x00,0x61,0x4C,0x02,0x6E,0x44,0xE2,0xFF, +0x04,0x60,0x47,0x44,0x46,0x44,0x47,0x3D,0xFE,0xFF,0x46,0x3D,0xFC,0xFF,0x00,0x61, +0xDC,0x01,0x2E,0x34,0xCA,0xFF,0x2E,0x36,0xD8,0xFF,0x05,0x08,0x02,0x00,0x06,0x67, +0x46,0x48,0x42,0x44,0x43,0x44,0x48,0x2D,0xEA,0xFF,0x49,0x2D,0xF2,0xFF,0x45,0xE7, +0x7B,0x26,0x44,0x50,0x7B,0x28,0x3C,0x50,0x6E,0x4A,0xFA,0xFF,0x00,0x6C,0xB4,0x00, +0x06,0x20,0x40,0x48,0x40,0xCC,0xF9,0x47,0xFD,0x00,0x00,0x18,0x05,0x08,0x06,0x00, +0x00,0x66,0xA0,0x00,0x4D,0xE2,0x7C,0xCA,0x0C,0x00,0x7B,0x28,0x06,0x50,0x00,0x60, +0x92,0x00,0xFD,0x00,0x0A,0x17,0xFD,0x00,0x12,0x17,0xFD,0x00,0x12,0x17,0xFD,0x00, +0x0A,0x17,0xFD,0x00,0x50,0x17,0xFD,0x00,0xEC,0x17,0xFD,0x00,0x44,0x17,0xFD,0x00, +0xBE,0x17,0xFD,0x00,0x3E,0x17,0xFD,0x00,0xE6,0x17,0xFD,0x00,0x56,0x17,0xFD,0x00, +0xCC,0x17,0xFD,0x00,0x32,0x17,0xFD,0x00,0xB0,0x17,0xFD,0x00,0x1A,0x17,0xFD,0x00, +0xDA,0x17,0xFD,0x00,0x20,0x17,0xFD,0x00,0xA2,0x17,0xFD,0x00,0x2C,0x17,0xFD,0x00, +0xE0,0x17,0xFD,0x00,0x50,0x17,0xFD,0x00,0xCC,0x17,0xFD,0x00,0x44,0x17,0xFD,0x00, +0xE6,0x17,0xFD,0x00,0x3E,0x17,0xFD,0x00,0xBE,0x17,0xFD,0x00,0x56,0x17,0xFD,0x00, +0xEC,0x17,0xFD,0x00,0x2C,0x17,0xFD,0x00,0xB0,0x17,0xFD,0x00,0x20,0x17,0xFD,0x00, +0xDA,0x17,0xFD,0x00,0x1A,0x17,0xFD,0x00,0xA2,0x17,0xFD,0x00,0x32,0x17,0xFD,0x00, +0xE0,0x17,0xAE,0x4A,0xDE,0xFF,0x18,0x67,0xF9,0x4B,0xFD,0x00,0xEE,0x16,0x4C,0xCB, +0x2E,0x30,0xE2,0xFF,0x02,0x6C,0x40,0x44,0xEE,0xC1,0xE8,0xFF,0x40,0x3D,0xE8,0xFF, +0x40,0x42,0xEE,0xE2,0xBA,0xFF,0x40,0xD1,0xEE,0xE2,0xBC,0xFF,0x40,0xD1,0x36,0x10, +0xBE,0x00,0x00,0x32,0x49,0xE5,0x7B,0x24,0x5A,0x10,0x2E,0x3A,0xB6,0xFF,0x45,0x48, +0x2E,0x3A,0xFA,0xFF,0x3C,0x32,0x21,0x84,0x01,0x01,0x00,0x66,0x86,0x00,0xAE,0x4A, +0xDE,0xFF,0x0A,0x67,0xEA,0x45,0xFE,0xFF,0x2E,0x3E,0xE8,0xFF,0x47,0x48,0x94,0x4E, +0x6E,0x53,0xB8,0xFF,0x2A,0x67,0x6E,0x20,0xEA,0xFF,0xEE,0xD0,0xCE,0xFF,0x48,0x2D, +0xEA,0xFF,0x6E,0x22,0xF2,0xFF,0xEE,0xD2,0xDC,0xFF,0x49,0x2D,0xF2,0xFF,0x2E,0x20, +0xDE,0xFF,0x9C,0x67,0x40,0x24,0xEE,0xD4,0xE4,0xFF,0x4A,0x2D,0xDE,0xFF,0x90,0x60, +0x75,0x4E,0xFD,0x00,0x3E,0x18,0xFD,0x00,0x5E,0x18,0xFD,0x00,0x82,0x18,0xFD,0x00, +0xA6,0x18,0xFD,0x00,0xCC,0x18,0xFD,0x00,0xEC,0x18,0xFD,0x00,0xEE,0x18,0xFD,0x00, +0x0E,0x19,0xFD,0x00,0x2E,0x19,0xFD,0x00,0x50,0x19,0xFD,0x00,0x72,0x19,0xFD,0x00, +0x90,0x19,0xFD,0x00,0xB2,0x19,0xFD,0x00,0xD4,0x19,0xFD,0x00,0xF6,0x19,0xFD,0x00, +0x1A,0x1A,0x7C,0xB0,0x05,0x00,0x88,0x67,0xE7,0x48,0x18,0x00,0xF9,0x49,0xFD,0x00, +0x14,0x18,0xF9,0x47,0xFD,0x00,0x1C,0x18,0x45,0x4A,0x06,0x6C,0xF9,0x47,0xFD,0x00, +0x2E,0x18,0x94,0x4E,0xDF,0x4C,0x00,0x18,0x00,0x60,0x66,0xFF,0x2E,0x30,0xF6,0xFF, +0x7C,0xC0,0x0F,0x00,0x40,0xD0,0x3B,0x3C,0x18,0x00,0x46,0x48,0x2E,0x30,0xD0,0xFF, +0x7C,0xC0,0x0F,0x00,0x40,0xD0,0x3B,0x3C,0x06,0x00,0x46,0x46,0x75,0x4E,0x00,0x00, +0x00,0x80,0x00,0xC0,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xFC,0x00,0xFE,0x00,0xFF, +0x80,0xFF,0xC0,0xFF,0xE0,0xFF,0xF0,0xFF,0xF8,0xFF,0xFC,0xFF,0xFE,0xFF,0xFF,0xFF, +0x6E,0x20,0xC6,0xFF,0x2E,0x36,0xCC,0xFF,0x48,0xE8,0xEE,0xC1,0xCA,0xFF,0xC3,0xC3, +0x80,0xD2,0xC1,0xD1,0x75,0x4E,0x6E,0x22,0xD4,0xFF,0x2E,0x36,0xDA,0xFF,0x48,0xE8, +0xEE,0xC1,0xD8,0xFF,0xC3,0xC3,0x80,0xD2,0xC1,0xD3,0x75,0x4E,0x04,0x30,0x40,0x55, +0x40,0x3D,0xFA,0xFF,0x2E,0x3A,0xCA,0xFF,0xC5,0xC9,0x2E,0x3E,0xD8,0xFF,0xC7,0xCD, +0x2E,0x30,0xC2,0xFF,0x2E,0x32,0xC4,0xFF,0xB6,0x61,0x43,0x98,0x2E,0x30,0xD0,0xFF, +0x2E,0x32,0xD2,0xFF,0xC0,0x61,0x43,0x9C,0xC9,0xB1,0x1A,0x64,0x2E,0x30,0xEE,0xFF, +0x2E,0x32,0xF0,0xFF,0x9A,0x61,0x2E,0x30,0xF6,0xFF,0x2E,0x32,0xF8,0xFF,0xA6,0x61, +0x45,0x44,0x47,0x44,0x04,0x60,0x44,0x44,0x46,0x44,0x05,0x34,0x07,0x36,0x44,0x38, +0x46,0x3A,0x00,0x61,0x38,0xFF,0x42,0x4A,0x02,0x6A,0x46,0x48,0x48,0x2D,0xEA,0xFF, +0x49,0x2D,0xF2,0xFF,0x2E,0x3E,0xB6,0xFF,0x2E,0x38,0xB8,0xFF,0x52,0x60,0x10,0x30, +0x11,0x32,0x40,0xB3,0x46,0xC0,0x40,0xB3,0x80,0x32,0xC2,0xD0,0xC3,0xD2,0x90,0x32, +0xC2,0xD0,0xC3,0xD2,0xCD,0x51,0xF8,0xFF,0x46,0x48,0x10,0x30,0x11,0x32,0x40,0xB3, +0x46,0xC0,0x40,0xB3,0x80,0x32,0x46,0x48,0xCC,0xD0,0xCD,0xD2,0x2E,0x3A,0xFA,0xFF, +0xCF,0x51,0xCC,0xFF,0x2E,0x3E,0xB6,0xFF,0x6E,0x20,0xEA,0xFF,0x6E,0x22,0xF2,0xFF, +0xEE,0xD0,0xCE,0xFF,0xEE,0xD2,0xDC,0xFF,0x48,0x2D,0xEA,0xFF,0x49,0x2D,0xF2,0xFF, +0xCC,0x51,0xDA,0xFF,0x75,0x4E,0x2C,0x32,0x06,0x00,0x41,0x53,0x2C,0x34,0xF8,0xFF, +0x2C,0x36,0x08,0x00,0x2C,0x38,0xD8,0xFF,0x44,0x53,0x49,0x2A,0x4D,0x26,0x04,0x30, +0x45,0x42,0x4E,0xE2,0x45,0xDB,0x4F,0xE2,0x55,0xE7,0x7B,0x24,0x04,0x50,0xD2,0x4E, +0xFD,0x00,0xC8,0x14,0xFD,0x00,0xDC,0x14,0xFD,0x00,0xB0,0x14,0xFD,0x00,0xC4,0x14, +0x48,0x24,0x92,0x16,0xC2,0xD4,0xC3,0xD6,0xC8,0x51,0xF8,0xFF,0x8D,0x54,0xC9,0x51, +0xCC,0xFF,0x75,0x4E,0xFF,0x7A,0x02,0x60,0x00,0x7A,0x48,0x24,0x85,0x16,0xC3,0xD6, +0xC8,0x51,0xFA,0xFF,0x8D,0x54,0xC9,0x51,0xB4,0xFF,0x75,0x4E,0x48,0x24,0x12,0x1A, +0x05,0x46,0x85,0x16,0xC2,0xD4,0xC3,0xD6,0xC8,0x51,0xF4,0xFF,0x8D,0x54,0xC9,0x51, +0x9C,0xFF,0x75,0x4E,0x2C,0x36,0xDC,0xFF,0x03,0x3E,0x41,0x9E,0x2C,0x67,0xEC,0xCE, +0xD8,0xFF,0x2C,0x30,0xDE,0xFF,0xC0,0xC2,0x79,0x26,0x00,0x00,0x4E,0x04,0xC1,0xD6, +0x4B,0x24,0xC0,0xD4,0x2C,0x30,0x08,0x00,0x48,0xE8,0xC0,0xCE,0x47,0x53,0xDA,0x26, +0xDA,0x26,0xDA,0x26,0xDA,0x26,0xCF,0x51,0xF6,0xFF,0x40,0x42,0x2C,0x34,0xDA,0xFF, +0x03,0x32,0x6C,0x24,0x8C,0x00,0xD2,0x4E,0x2C,0x36,0xDC,0xFF,0x03,0x3E,0x41,0x9E, +0x2C,0x67,0xEC,0xCE,0xD8,0xFF,0x2C,0x30,0xDE,0xFF,0xC0,0xC6,0x79,0x24,0x00,0x00, +0x4E,0x04,0xC3,0xD4,0x4A,0x26,0xC0,0xD6,0x2C,0x30,0x08,0x00,0x48,0xE8,0xC0,0xCE, +0x47,0x53,0x22,0x27,0x22,0x27,0x22,0x27,0x22,0x27,0xCF,0x51,0xF6,0xFF,0x40,0x42, +0x2C,0x34,0xDA,0xFF,0x01,0x36,0x6C,0x24,0x8C,0x00,0xD2,0x4E,0x00,0xFF,0x00,0x00, +0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, +0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xE7,0x48,0xC0,0xF0, +0x00,0x38,0x02,0x3A,0x40,0x42,0x4C,0xE2,0x40,0xD1,0x4D,0xE2,0x40,0xD1,0x44,0x9A, +0x45,0x3A,0xC5,0x56,0x05,0xDA,0x50,0xE7,0x2C,0x3E,0xDE,0xFF,0xC1,0xCE,0x79,0x24, +0x00,0x00,0x4E,0x04,0xC7,0xD5,0x2C,0x3C,0x06,0x00,0x4E,0xE2,0x44,0xD8,0x6C,0xED, +0xC4,0xD4,0xFB,0x47,0xA8,0x00,0x1B,0x38,0x04,0x30,0x44,0x48,0x00,0x38,0x1B,0x3A, +0x05,0x30,0x45,0x48,0x00,0x3A,0x0D,0x30,0x40,0x52,0x40,0xD0,0x68,0xED,0x40,0x44, +0x6C,0xD0,0x08,0x00,0x40,0x36,0x41,0x96,0x43,0x52,0xEC,0xC6,0xD8,0xFF,0x03,0x3E, +0x46,0xDC,0x46,0xDC,0x7B,0x20,0x0E,0x60,0x2C,0x3C,0xE0,0xFF,0x90,0x4E,0xDF,0x4C, +0x0F,0x03,0x75,0x4E,0xFD,0x00,0x20,0x16,0xFD,0x00,0x66,0x16,0xFD,0x00,0x9C,0x16, +0x4E,0xE2,0x00,0x70,0x40,0x91,0x36,0x66,0x44,0x46,0x45,0x46,0x14,0x60,0x5A,0xC9, +0x46,0x53,0x0C,0x65,0x46,0x53,0x06,0x65,0xC0,0x34,0xCE,0x51,0xFC,0xFF,0x5A,0xCB, +0xCB,0xD4,0x0D,0x3C,0xCF,0x51,0xE8,0xFF,0x75,0x4E,0x5A,0x89,0x46,0x53,0x0C,0x65, +0x46,0x53,0x06,0x65,0xC0,0x34,0xCE,0x51,0xFC,0xFF,0x5A,0x8B,0xCB,0xD4,0x0D,0x3C, +0xCF,0x51,0xE8,0xFF,0x75,0x4E,0x4E,0xE2,0x80,0x91,0x4E,0xE2,0x40,0x91,0x40,0x20, +0x00,0x24,0x84,0xC0,0x85,0xC4,0x84,0x46,0x85,0x46,0x18,0x60,0x92,0xC9,0x9A,0x81, +0x46,0x53,0x0E,0x65,0x46,0x53,0x06,0x65,0xC8,0x24,0xCE,0x51,0xFC,0xFF,0x92,0xCB, +0x9A,0x85,0xCB,0xD4,0x0D,0x3C,0xCF,0x51,0xE4,0xFF,0x75,0x4E,0x4E,0xE2,0x80,0x91, +0x4E,0xE2,0x40,0x91,0x4E,0xE2,0x81,0x93,0x4E,0xE2,0x41,0x93,0x40,0x20,0x00,0x24, +0x41,0x22,0x01,0x26,0x84,0xC0,0x84,0xC2,0x85,0xC4,0x85,0xC6,0x84,0x46,0x85,0x46, +0x22,0x60,0x92,0xC9,0x9A,0x81,0x92,0xC9,0x9A,0x83,0x46,0x53,0x14,0x65,0x46,0x53, +0x08,0x65,0xC8,0x24,0xC9,0x24,0xCE,0x51,0xFA,0xFF,0x92,0xCB,0x9A,0x85,0x92,0xCB, +0x9A,0x87,0xCB,0xD4,0x0D,0x3C,0xCF,0x51,0xDA,0xFF,0x75,0x4E,0x71,0x4E,0x47,0x48, +0x07,0x30,0x6E,0xDE,0xE2,0xFF,0x47,0x48,0x6E,0xC0,0xE6,0xFF,0x0E,0x22,0x6E,0x2C, +0xDE,0xFF,0x36,0x3E,0x00,0x00,0x41,0x2C,0xD5,0x4E,0x10,0x30,0x78,0xE9,0xEA,0x4E, +0x08,0x00,0x10,0x30,0x78,0xE8,0xEA,0x4E,0x08,0x00,0x10,0x30,0xC2,0xD0,0x40,0x48, +0x10,0x30,0x40,0x48,0x00,0x22,0xB8,0xE8,0xEA,0x4E,0x08,0x00,0x10,0x30,0xC2,0xD0, +0x40,0x48,0x10,0x30,0x00,0x22,0x41,0x48,0xB8,0xE9,0xEA,0x4E,0x08,0x00,0x10,0x30, +0xC2,0xD0,0x40,0x48,0x10,0x30,0x00,0x22,0x41,0x48,0xB8,0xE8,0xEA,0x4E,0x08,0x00, +0x10,0x30,0xC2,0xD0,0x40,0x48,0x10,0x30,0x40,0x48,0x00,0x22,0xB8,0xE9,0xEA,0x4E, +0x08,0x00,0xC2,0xD0,0xC3,0xD2,0x01,0x20,0x10,0x30,0x40,0x48,0x00,0x22,0xB8,0xE8, +0xD2,0x4E,0xC2,0xD0,0xC3,0xD2,0x01,0x20,0x10,0x30,0x00,0x22,0x41,0x48,0xB8,0xE9, +0xD2,0x4E,0xC2,0xD0,0xC3,0xD2,0x01,0x20,0x10,0x30,0x00,0x22,0x41,0x48,0xB8,0xE8, +0xD2,0x4E,0xC2,0xD0,0xC3,0xD2,0x01,0x20,0x10,0x30,0x40,0x48,0x00,0x22,0xB8,0xE9, +0xD2,0x4E,0xCD,0x51,0xBE,0xFF,0xC2,0xD0,0x01,0x20,0x10,0x30,0xB8,0xE8,0x40,0x60, +0xCD,0x51,0xC0,0xFF,0xC2,0xD0,0x01,0x20,0x10,0x30,0xB8,0xE9,0x34,0x60,0xCD,0x51, +0xC2,0xFF,0xC2,0xD0,0x01,0x20,0x10,0x30,0xB8,0xE8,0x26,0x60,0xCD,0x51,0xC4,0xFF, +0xC2,0xD0,0x01,0x20,0x10,0x30,0xB8,0xE9,0x16,0x60,0xCD,0x51,0x86,0xFF,0x10,0x60, +0xCD,0x51,0x90,0xFF,0x0A,0x60,0xCD,0x51,0x9A,0xFF,0x04,0x60,0xCD,0x51,0xA4,0xFF, +0x40,0x48,0xC3,0xD2,0x46,0x48,0xEA,0x4E,0x16,0x00,0x46,0x48,0x2E,0x3A,0xFA,0xFF, +0x45,0x48,0x45,0x53,0x0C,0x67,0x45,0x48,0xEE,0xD0,0xFE,0xFF,0xEE,0xD2,0xFC,0xFF, +0xD4,0x4E,0x75,0x4E,0xEA,0x4E,0x08,0x00,0xC3,0xD2,0xD2,0x4E,0xCD,0x51,0xFA,0xFF, +0xC3,0xD2,0x46,0x48,0xEA,0x4E,0x16,0x00,0x46,0x48,0x2E,0x3A,0xFA,0xFF,0x45,0x48, +0x45,0x53,0xDE,0x67,0x45,0x48,0xEE,0xD2,0xFC,0xFF,0xD4,0x4E,0x47,0xC0,0xBC,0x32, +0x00,0x00,0xD3,0x4E,0x47,0xC0,0x46,0x46,0x51,0xCD,0x46,0x46,0xD3,0x4E,0x00,0x00, +0x00,0x00,0x47,0xC0,0x46,0x46,0x51,0xCD,0x46,0x46,0xCC,0x60,0x47,0xC0,0x51,0xC1, +0xD3,0x4E,0x00,0x00,0x47,0xC0,0x46,0x46,0x46,0x80,0x46,0x46,0x51,0xC1,0xD3,0x4E, +0x00,0x00,0x47,0xC0,0x46,0x46,0x46,0x80,0x46,0x46,0x51,0xC1,0x00,0x60,0x7C,0xFF, +0x47,0xC0,0x51,0x46,0x51,0xC1,0xD3,0x4E,0x47,0xC0,0x40,0x46,0x46,0xC0,0x51,0x81, +0x51,0xBD,0xD3,0x4E,0x00,0x00,0x47,0xC0,0x40,0x46,0x46,0xC0,0x51,0x81,0x51,0xBD, +0x00,0x60,0x58,0xFF,0x47,0xC0,0x80,0x32,0xD3,0x4E,0x00,0x00,0x47,0xC0,0x11,0x32, +0x40,0xB3,0x46,0xC0,0x40,0xB3,0x80,0x32,0xD3,0x4E,0x47,0xC0,0x11,0x32,0x40,0xB3, +0x46,0xC0,0x40,0xB3,0x80,0x32,0x00,0x60,0x32,0xFF,0x47,0xC0,0x40,0x46,0x51,0xC1, +0xD3,0x4E,0x47,0xC0,0x46,0xC0,0x40,0x46,0x51,0xC1,0xD3,0x4E,0x00,0x00,0x00,0x00, +0x47,0xC0,0x46,0xC0,0x40,0x46,0x51,0xC1,0x00,0x60,0x10,0xFF,0x47,0xC0,0x51,0xB1, +0xD3,0x4E,0x00,0x00,0x47,0xC0,0x46,0xC0,0x51,0xB1,0xD3,0x4E,0x00,0x00,0x00,0x00, +0x00,0x00,0x47,0xC0,0x46,0xC0,0x51,0xB1,0x00,0x60,0xF0,0xFE,0x47,0xC0,0x51,0x81, +0xD3,0x4E,0x00,0x00,0x47,0xC0,0x46,0xC0,0x51,0x81,0xD3,0x4E,0x00,0x00,0x00,0x00, +0x00,0x00,0x47,0xC0,0x46,0xC0,0x51,0x81,0x00,0x60,0xD0,0xFE,0x47,0xC0,0x51,0x81, +0x51,0x46,0xD3,0x4E,0x47,0xC0,0x46,0xC0,0x51,0x81,0x51,0xBD,0xD3,0x4E,0x00,0x00, +0x00,0x00,0x47,0xC0,0x46,0xC0,0x51,0x81,0x51,0xBD,0x00,0x60,0xAE,0xFE,0x47,0xC0, +0x40,0x46,0x51,0xB1,0xD3,0x4E,0x47,0xC0,0x46,0xC0,0x51,0xB1,0x51,0xBD,0xD3,0x4E, +0x00,0x00,0x00,0x00,0x47,0xC0,0x46,0xC0,0x51,0xB1,0x51,0xBD,0x00,0x60,0x8C,0xFE, +0x47,0xC0,0x51,0x46,0xD3,0x4E,0x00,0x00,0x47,0xC0,0x51,0xBD,0xD3,0x4E,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x47,0xC0,0x51,0xBD,0x00,0x60,0x9C,0xFE,0x47,0xC0, +0x51,0x46,0x51,0x81,0xD3,0x4E,0x47,0xC0,0x51,0xBD,0x46,0xC0,0x51,0x81,0xD3,0x4E, +0x00,0x00,0x00,0x00,0x47,0xC0,0x51,0xBD,0x46,0xC0,0x51,0x81,0x00,0x60,0x4C,0xFE, +0x47,0xC0,0x40,0x46,0x80,0x32,0xD3,0x4E,0x47,0xC0,0x51,0x8D,0x46,0xC0,0x51,0xB1, +0xD3,0x4E,0x00,0x00,0x00,0x00,0x47,0xC0,0x51,0x8D,0x46,0xC0,0x51,0xB1,0x00,0x60, +0x2A,0xFE,0x47,0xC0,0x40,0x46,0x51,0x81,0xD3,0x4E,0x47,0xC0,0x40,0x46,0x46,0xC0, +0x51,0x81,0xD3,0x4E,0x00,0x00,0x00,0x00,0x47,0xC0,0x40,0x46,0x46,0xC0,0x51,0x81, +0x00,0x60,0x08,0xFE,0x47,0xC0,0x51,0xC1,0x51,0x46,0xD3,0x4E,0x47,0xC0,0x40,0x46, +0x51,0xBD,0x46,0xC0,0x51,0x81,0xD3,0x4E,0x00,0x00,0x47,0xC0,0x40,0x46,0x51,0xBD, +0x46,0xC0,0x51,0x81,0x00,0x60,0xE4,0xFD,0x47,0xC0,0xBC,0x32,0xFF,0xFF,0xD3,0x4E, +0x47,0xC0,0x51,0x8D,0xD3,0x4E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0xC0, +0x51,0x8D,0x00,0x60,0xF4,0xFD,0xEF,0x4F,0xEC,0xFF,0x2C,0x36,0x00,0x00,0x7C,0xB6, +0x08,0x00,0x00,0x62,0x82,0x00,0x6C,0xB0,0x24,0x00,0x06,0x67,0x4F,0x24,0x00,0x61, +0xFE,0x89,0x2C,0x30,0x00,0x00,0x40,0xD0,0x79,0x2A,0x00,0x00,0x4E,0x04,0x46,0xE8, +0xC0,0xCD,0xC6,0xDB,0x2C,0x32,0xFE,0xFF,0x01,0x3C,0xC5,0xCD,0xC6,0xDB,0x2C,0x32, +0x02,0x00,0x45,0x9E,0x04,0x6C,0x41,0x44,0x47,0x44,0x41,0x30,0x40,0x92,0x41,0x32, +0x0F,0x7A,0x44,0x46,0x45,0xC8,0x41,0x42,0xC1,0x09,0x2C,0x3C,0x24,0x00,0x4E,0xE5, +0x7C,0xBC,0x08,0x00,0x08,0x66,0x6C,0x4A,0x20,0x00,0x02,0x66,0x47,0x53,0x2C,0x34, +0x22,0x00,0x02,0x36,0x07,0x38,0x44,0x52,0x45,0xC8,0x7B,0xE9,0x43,0x39,0x22,0x00, +0x3B,0x2C,0x1A,0x60,0xFB,0x47,0x16,0x60,0x4B,0x28,0xC0,0x98,0x01,0x30,0x40,0x46, +0x46,0x48,0xFB,0x4E,0x08,0x60,0xEF,0x4F,0x14,0x00,0x75,0x4E,0x10,0x00,0x28,0x00, +0x32,0x00,0x38,0x00,0x48,0x00,0x5E,0x00,0x30,0x00,0x38,0x00,0x5A,0xE3,0x02,0x64, +0xD2,0x4E,0xD4,0x4E,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1,0x5D,0xC1, +0x5D,0xC1,0x5D,0xC1,0xC9,0xDA,0xCF,0x51,0xE4,0xFF,0xCA,0x60,0x42,0x46,0x5A,0xE3, +0x0A,0x64,0xD2,0x4E,0xC9,0xDA,0xCF,0x51,0xF6,0xFF,0xBA,0x60,0xC8,0xDA,0xCF,0x51, +0xEE,0xFF,0xB2,0x60,0x5A,0xE3,0x1A,0x64,0xD4,0x4E,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3, +0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0x5D,0xB3,0xC9,0xDA,0xCF,0x51,0xE6,0xFF, +0x94,0x60,0xC8,0xDA,0xCF,0x51,0xDE,0xFF,0x8C,0x60,0x79,0x22,0x00,0x00,0x4E,0x04, +0xEC,0xCB,0xFE,0xFF,0xC5,0xD3,0x40,0x34,0x2C,0x3E,0x00,0x00,0x07,0x30,0x40,0xD0, +0xC0,0xC3,0xC1,0xD3,0x47,0x53,0xEC,0x47,0x18,0x00,0x2C,0x32,0x24,0x00,0x41,0xD2, +0xFB,0x4B,0x06,0x10,0xD5,0xDA,0xD5,0x4E,0xCC,0x00,0x30,0x01,0x9C,0x00,0x4A,0x01, +0x56,0x4E,0xEC,0xFF,0x2A,0x34,0x24,0x00,0x42,0xD4,0xFB,0x4B,0xEC,0x20,0xD5,0xDA, +0x45,0x9E,0x79,0x22,0x00,0x00,0x4E,0x04,0x2A,0x34,0xFE,0xFF,0xC5,0xC5,0xC2,0xD3, +0x2A,0x34,0x00,0x00,0xC2,0xC1,0x80,0xD0,0xC0,0xD3,0x02,0x30,0x40,0xD0,0x42,0x53, +0x02,0x3D,0x01,0x3D,0xEA,0x47,0x18,0x00,0x0B,0x2D,0x2A,0x36,0x02,0x00,0x40,0x96, +0x03,0x3D,0x2A,0x36,0x32,0x00,0x43,0xCA,0x45,0xDA,0x05,0x3D,0x43,0xD6,0x03,0x3D, +0x6A,0x20,0x2E,0x00,0x08,0x2D,0xC5,0xD0,0x07,0x3D,0x02,0x3E,0x01,0x34,0x00,0x72, +0x6A,0x4A,0x34,0x00,0x02,0x67,0x20,0x72,0x41,0x24,0x95,0x4E,0x5E,0x53,0x20,0x65, +0x5E,0x20,0x1E,0x32,0x16,0x36,0x43,0x54,0x41,0xB6,0x02,0x6F,0x43,0x42,0xC3,0x3C, +0xC3,0xD0,0xDE,0xD2,0x5E,0x26,0x1E,0x34,0x1E,0x3E,0xEE,0x4D,0xEC,0xFF,0xDA,0x60, +0xEE,0x4D,0x12,0x00,0x5E,0x4E,0x75,0x4E,0x49,0x28,0x02,0x3A,0x10,0x36,0xCA,0xD0, +0x04,0x32,0x43,0xC2,0x59,0xB3,0x45,0x53,0x14,0x65,0x45,0x53,0x08,0x65,0xC0,0xD8, +0x54,0xB7,0xCD,0x51,0xFA,0xFF,0x06,0x32,0x43,0xC2,0xC0,0xD8,0x54,0xB3,0xCF,0x51, +0xD8,0xFF,0x75,0x4E,0x44,0x46,0x46,0x46,0x49,0x28,0x02,0x3A,0x10,0x36,0xCA,0xD0, +0x5B,0x4A,0x26,0x66,0x04,0x32,0x59,0xC3,0x45,0x53,0x14,0x65,0x45,0x53,0x0A,0x65, +0x41,0x42,0xC0,0xD8,0x81,0x38,0xCD,0x51,0xFA,0xFF,0x06,0x32,0xC0,0xD8,0x54,0xC3, +0xCF,0x51,0xD6,0xFF,0x44,0x46,0x46,0x46,0x75,0x4E,0x14,0x32,0x41,0xB7,0x44,0xC2, +0x41,0xB7,0xC1,0x32,0x45,0x53,0x18,0x65,0x45,0x53,0x08,0x65,0xC0,0xD8,0x83,0x38, +0xCD,0x51,0xFA,0xFF,0xC0,0xD8,0x14,0x32,0x41,0xB7,0x46,0xC2,0x41,0xB7,0x81,0x38, +0xCF,0x51,0xA6,0xFF,0x44,0x46,0x46,0x46,0x75,0x4E,0x49,0x28,0x02,0x3A,0x10,0x36, +0xCA,0xD0,0x5B,0x4A,0x0A,0x66,0x43,0x46,0x2C,0x61,0xCF,0x51,0xEE,0xFF,0x75,0x4E, +0x4A,0x61,0xCF,0x51,0xE6,0xFF,0x75,0x4E,0x49,0x28,0x02,0x3A,0x10,0x36,0xCA,0xD0, +0x5B,0x4A,0x08,0x66,0x10,0x61,0xCF,0x51,0xF0,0xFF,0x75,0x4E,0x43,0x46,0x2C,0x61, +0xCF,0x51,0xE6,0xFF,0x75,0x4E,0x04,0x32,0x41,0x46,0x43,0x82,0x59,0xC3,0xCD,0x51, +0x04,0x00,0x75,0x4E,0x45,0x53,0x08,0x65,0xC0,0xD8,0x54,0xC7,0xCD,0x51,0xFA,0xFF, +0x06,0x32,0x41,0x46,0x43,0x82,0xC0,0xD8,0x54,0xC3,0x75,0x4E,0x04,0x32,0x43,0xC2, +0x59,0x83,0xCD,0x51,0x04,0x00,0x75,0x4E,0x45,0x53,0x08,0x65,0xC0,0xD8,0x54,0x87, +0xCD,0x51,0xFA,0xFF,0x06,0x32,0x43,0xC2,0xC0,0xD8,0x54,0x83,0x75,0x4E,0x0E,0x2F, +0xED,0xC3,0xAA,0xFF,0x40,0xE8,0x44,0x99,0xED,0xC1,0xAC,0xFF,0x44,0xD8,0x80,0xD1, +0x79,0x22,0x00,0x00,0x4E,0x04,0xC0,0xD3,0xC1,0xD3,0x5D,0x20,0x15,0x30,0x6D,0x24, +0xB0,0xFF,0x2D,0x32,0xAA,0xFF,0x2D,0x38,0xCC,0xFF,0x44,0xD8,0xCB,0x51,0x42,0x00, +0x75,0x4E,0x09,0x2F,0x1A,0x3A,0xF0,0x47,0x00,0x50,0x2D,0x3C,0x12,0x00,0x2D,0x3A, +0xA8,0xFF,0x12,0x60,0x04,0x3E,0x5E,0xE2,0x02,0x64,0x47,0x50,0x3B,0x3E,0x2E,0x70, +0xFB,0x4E,0x2A,0x70,0x89,0x54,0xCD,0x51,0xEC,0xFF,0x5F,0x22,0x89,0x52,0x09,0x2E, +0x07,0x08,0x00,0x00,0x0A,0x66,0x2D,0x3E,0xA8,0xFF,0x47,0x53,0x47,0xDE,0xC7,0xD2, +0xCA,0x51,0xC0,0xFF,0x01,0x70,0x5F,0x2C,0x5F,0x2A,0x75,0x4E,0x22,0x00,0x30,0x00, +0x9A,0x00,0x64,0x00,0x10,0x00,0x4A,0x00,0x9A,0x00,0x7E,0x00,0x49,0x2C,0x4B,0x28, +0x03,0x3E,0x94,0x1C,0xC0,0xD8,0xC1,0xDC,0xCF,0x51,0xF8,0xFF,0xB6,0x60,0x49,0x2C, +0x03,0x3E,0x16,0x42,0xC1,0xDC,0xCF,0x51,0xFA,0xFF,0xA8,0x60,0x42,0x48,0x49,0x2C, +0x4B,0x28,0x03,0x3E,0x14,0x14,0x02,0x46,0x16,0xC5,0xC0,0xD8,0xC1,0xDC,0xCF,0x51, +0xF4,0xFF,0x42,0x48,0x8E,0x60,0x42,0x48,0x49,0x2C,0x4B,0x28,0x03,0x3E,0x14,0x14, +0x16,0x85,0xC0,0xD8,0xC1,0xDC,0xCF,0x51,0xF6,0xFF,0x42,0x48,0x00,0x60,0x76,0xFF, +0x42,0x48,0x49,0x2C,0x4B,0x28,0x03,0x3E,0x14,0x14,0x16,0xC5,0xC0,0xD8,0xC1,0xDC, +0xCF,0x51,0xF6,0xFF,0x42,0x48,0x00,0x60,0x5C,0xFF,0x42,0x48,0x49,0x2C,0x4B,0x28, +0x03,0x3E,0x14,0x14,0x02,0x46,0x16,0x85,0xC0,0xD8,0xC1,0xDC,0xCF,0x51,0xF4,0xFF, +0x42,0x48,0x00,0x60,0x40,0xFF,0x42,0x48,0x4B,0x28,0x49,0x2C,0x03,0x3E,0x14,0x14, +0x16,0xB5,0xC0,0xD8,0xC1,0xDC,0xCF,0x51,0xF6,0xFF,0x42,0x48,0x00,0x60,0x26,0xFF, +0x55,0x4E,0xAC,0xFF,0x6D,0x42,0xAE,0xFF,0x2E,0x3F,0x5A,0x00,0x2E,0x3F,0x24,0x00, +0x2E,0x3F,0x5E,0x00,0x2E,0x30,0x4C,0x00,0x2E,0x34,0x4E,0x00,0x2E,0x32,0x50,0x00, +0x2E,0x36,0x52,0x00,0x2E,0x3C,0x64,0x00,0x6E,0xDC,0x62,0x00,0xA7,0x48,0x00,0xF0, +0x6D,0x42,0xFE,0xFF,0x6E,0x4A,0x66,0x00,0x48,0x67,0x00,0x3F,0x02,0x3F,0x01,0x3F, +0x03,0x3F,0x00,0x61,0xC8,0xCF,0x1F,0x36,0x00,0x36,0x40,0x3B,0xB0,0xFF,0x1F,0x34, +0x2E,0x32,0x40,0x00,0x2E,0x30,0x42,0x00,0x03,0x3F,0x00,0x76,0x10,0x60,0x40,0xD2, +0x02,0x64,0x43,0x52,0x2E,0x08,0x00,0x00,0x45,0x00,0x02,0x67,0x43,0x52,0xCA,0x51, +0xEE,0xFF,0x41,0x3B,0xAC,0xFF,0x03,0x32,0x43,0x3B,0xB2,0xFF,0x1F,0x36,0x1F,0x34, +0x1F,0x30,0x6D,0x42,0xC2,0xFF,0x2E,0x08,0x00,0x00,0x5B,0x00,0x14,0x67,0x2E,0x38, +0x60,0x00,0x06,0x66,0x6E,0x02,0xFE,0xFF,0x5A,0x00,0x6E,0x4A,0x46,0x00,0x02,0x66, +0x44,0xD2,0x2E,0x08,0x02,0x00,0x5B,0x00,0x02,0x67,0x46,0xD2,0x2E,0x08,0x04,0x00, +0x5B,0x00,0x04,0x67,0x41,0x54,0x43,0x54,0x2E,0x38,0x68,0x00,0x20,0x67,0x7C,0xB8, +0x84,0x03,0x0A,0x66,0x41,0x94,0x42,0x3D,0x4E,0x00,0x43,0xC3,0x10,0x60,0x7C,0xB8, +0x08,0x07,0x08,0x66,0x41,0x90,0x40,0x3D,0x4C,0x00,0x02,0x60,0x43,0xC3,0x00,0x7A, +0x6E,0x4A,0x36,0x00,0x50,0x67,0x6E,0xB4,0x3A,0x00,0x0E,0x6C,0x43,0xD4,0x45,0x52, +0x6E,0xB4,0x3A,0x00,0x18,0x6E,0x00,0x60,0xF0,0x02,0x6E,0xB4,0x3E,0x00,0x00,0x6E, +0xE8,0x02,0x43,0xD4,0x42,0x53,0x6E,0x94,0x3E,0x00,0x02,0x6F,0x45,0x52,0x6E,0xB0, +0x38,0x00,0x0E,0x6C,0x41,0xD0,0x45,0x52,0x6E,0xB0,0x38,0x00,0x18,0x6E,0x00,0x60, +0xC8,0x02,0x6E,0xB0,0x3C,0x00,0x00,0x6E,0xC0,0x02,0x41,0xD0,0x40,0x53,0x6E,0xB0, +0x3C,0x00,0x02,0x6F,0x45,0x52,0x6E,0x3B,0x58,0x00,0xF4,0xFF,0x6E,0x2B,0x54,0x00, +0xFA,0xFF,0x6E,0x4A,0x66,0x00,0x0C,0x67,0xE7,0x48,0x00,0xFF,0x00,0x61,0x10,0x0C, +0xDF,0x4C,0xFF,0x00,0x2E,0x32,0x5A,0x00,0x41,0x02,0x15,0x00,0x00,0x67,0x40,0x01, +0x6E,0x4A,0x68,0x00,0x12,0x66,0x01,0x08,0x02,0x00,0x04,0x67,0x45,0x4A,0x08,0x66, +0x01,0x08,0x04,0x00,0x00,0x67,0x28,0x01,0x2E,0x30,0x48,0x00,0x00,0x34,0x42,0x02, +0x0F,0x00,0x42,0x3B,0xEC,0xFF,0x48,0xE8,0x40,0xD0,0x2E,0x34,0x4A,0x00,0x6E,0x3B, +0x52,0x00,0xEE,0xFF,0x6D,0xD4,0xEE,0xFF,0x42,0x53,0xED,0xC4,0xF4,0xFF,0x6D,0x44, +0xF4,0xFF,0x6D,0x20,0xFA,0xFF,0xC0,0xD0,0xC2,0xD1,0x2E,0x30,0x50,0x00,0x2E,0x32, +0x60,0x00,0x2E,0x08,0x00,0x00,0x5B,0x00,0x06,0x67,0x41,0xD0,0x41,0x3B,0xC2,0xFF, +0x6D,0x42,0xEA,0xFF,0x2E,0x32,0x52,0x00,0x2E,0x34,0x5A,0x00,0x02,0x08,0x04,0x00, +0x0C,0x67,0x40,0x56,0x6D,0x52,0xEA,0xFF,0x6E,0x54,0x52,0x00,0x41,0x56,0x40,0x3B, +0xF0,0xFF,0x46,0xD0,0x40,0x3D,0x50,0x00,0x48,0xE8,0x40,0xD0,0x40,0x54,0x40,0x44, +0x40,0x3B,0xF2,0xFF,0x40,0x44,0x41,0x53,0xC1,0xC0,0x00,0x61,0x8A,0x0C,0x09,0x2F, +0x02,0x08,0x04,0x00,0x06,0x66,0x02,0x08,0x02,0x00,0x28,0x67,0x09,0x2F,0x00,0x36, +0x6D,0x96,0xF2,0xFF,0x4B,0xE2,0x00,0x72,0x02,0x60,0xC1,0x32,0xCB,0x51,0xFC,0xFF, +0x5F,0x22,0x02,0x08,0x04,0x00,0x0C,0x67,0x6D,0x57,0xF0,0xFF,0x6E,0x53,0x50,0x00, +0x6D,0xD0,0xF2,0xFF,0xC0,0xD2,0x2E,0x3F,0x24,0x00,0x2E,0x3F,0x5A,0x00,0x7C,0x3D, +0x07,0x00,0x24,0x00,0x7C,0x3B,0x01,0x00,0xBA,0xFF,0x6D,0x42,0xB8,0xFF,0x7C,0x3B, +0x01,0x00,0xB6,0xFF,0x7C,0x3B,0x02,0x00,0xB4,0xFF,0x6E,0x02,0x05,0x00,0x5A,0x00, +0x00,0x61,0x10,0x02,0x5F,0x3D,0x5A,0x00,0x5F,0x3D,0x24,0x00,0x5F,0x22,0x2D,0x3E, +0xF2,0xFF,0x47,0x44,0x47,0x3B,0xF4,0xFF,0x49,0x20,0x48,0x2B,0xFA,0xFF,0x2E,0x08, +0x04,0x00,0x5B,0x00,0x0A,0x67,0xC7,0x48,0xAD,0xDF,0xFA,0xFF,0x00,0x61,0x16,0x0C, +0x6E,0x42,0x48,0x00,0x6E,0x42,0x4A,0x00,0x6E,0x02,0xFA,0xFF,0x5A,0x00,0x6E,0x4A, +0x68,0x00,0x04,0x67,0x00,0x61,0x3E,0x09,0x2E,0x08,0x00,0x00,0x5B,0x00,0x12,0x67, +0x2E,0x30,0x60,0x00,0x6E,0x4A,0x46,0x00,0x04,0x66,0x6E,0xD1,0x50,0x00,0x40,0x3B, +0xC2,0xFF,0x6E,0x4A,0x36,0x00,0x00,0x67,0xA0,0x00,0x2E,0x30,0x4E,0x00,0x6E,0xB0, +0x3A,0x00,0x26,0x6C,0x6E,0xD0,0x52,0x00,0x6E,0xB0,0x3A,0x00,0x00,0x6F,0x0A,0x01, +0x6E,0x90,0x3A,0x00,0x2E,0x32,0x52,0x00,0x40,0x3D,0x52,0x00,0x40,0x92,0x6E,0xD3, +0x4A,0x00,0x2E,0x30,0x3A,0x00,0x40,0x3D,0x4E,0x00,0x6E,0xB0,0x3E,0x00,0x00,0x6E, +0xE8,0x00,0x6E,0xD0,0x52,0x00,0x40,0x53,0x6E,0xB0,0x3E,0x00,0x08,0x6F,0x6E,0x90, +0x3E,0x00,0x6E,0x91,0x52,0x00,0x2E,0x30,0x4C,0x00,0x6E,0xB0,0x38,0x00,0x26,0x6C, +0x6E,0xD0,0x50,0x00,0x6E,0xB0,0x38,0x00,0x00,0x6F,0xBE,0x00,0x6E,0x90,0x38,0x00, +0x2E,0x32,0x50,0x00,0x40,0x3D,0x50,0x00,0x40,0x92,0x6E,0xD3,0x48,0x00,0x2E,0x30, +0x38,0x00,0x40,0x3D,0x4C,0x00,0x6E,0xB0,0x3C,0x00,0x00,0x6E,0x9C,0x00,0x6E,0xD0, +0x50,0x00,0x40,0x53,0x6E,0xB0,0x3C,0x00,0x08,0x6F,0x6E,0x90,0x3C,0x00,0x6E,0x91, +0x50,0x00,0x04,0x60,0x04,0x02,0x08,0x00,0x6E,0x3B,0x6A,0x00,0xBA,0xFF,0x6E,0x3B, +0x72,0x00,0xB8,0xFF,0x2E,0x30,0x00,0x00,0x40,0x3B,0xB6,0xFF,0x3B,0x10,0xE5,0x00, +0x40,0x3B,0xB4,0xFF,0x2E,0x30,0x48,0x00,0x00,0x34,0x42,0x02,0x0F,0x00,0x42,0x3B, +0xEC,0xFF,0x48,0xE8,0x40,0xD0,0x2E,0x34,0x52,0x00,0x42,0x3B,0xEE,0xFF,0x6E,0xD4, +0x4A,0x00,0x42,0x53,0xED,0xC4,0xF4,0xFF,0x6D,0x44,0xF4,0xFF,0x6D,0x20,0xFA,0xFF, +0xC0,0xD0,0xC2,0xD1,0x6E,0x3B,0x50,0x00,0xF0,0xFF,0x2E,0x32,0x4E,0x00,0x6E,0xD2, +0x52,0x00,0x41,0x53,0x2E,0x30,0x4C,0x00,0xB9,0x4E,0xFC,0x00,0x12,0xA2,0x79,0x22, +0x00,0x00,0x4E,0x04,0xC1,0xD3,0x40,0x3B,0xEA,0xFF,0x2E,0x30,0x02,0x00,0x40,0x44, +0x40,0x3B,0xF2,0xFF,0x00,0x61,0x8C,0x00,0x9F,0x4C,0x0F,0x00,0x40,0x3D,0x4C,0x00, +0x41,0x3D,0x50,0x00,0x42,0x3D,0x4E,0x00,0x43,0x3D,0x52,0x00,0x5F,0x3D,0x5E,0x00, +0x5F,0x3D,0x24,0x00,0x5F,0x3D,0x5A,0x00,0x6E,0x4A,0x66,0x00,0x16,0x67,0x6D,0x3D, +0xAC,0xFF,0x40,0x00,0x2D,0x32,0xB2,0xFF,0x2D,0x36,0xB0,0xFF,0x6D,0x4A,0xAE,0xFF, +0x02,0x67,0x43,0xC3,0x2E,0x08,0x04,0x00,0x5B,0x00,0x04,0x67,0x41,0x54,0x43,0x54, +0x2E,0x08,0x00,0x00,0x5B,0x00,0x0A,0x67,0x6E,0x4A,0x46,0x00,0x04,0x66,0x6E,0xD2, +0x60,0x00,0x2E,0x30,0x68,0x00,0x06,0x66,0x6E,0xD3,0x4C,0x00,0x1C,0x60,0x40,0x0C, +0x84,0x03,0x06,0x66,0x6E,0x93,0x4E,0x00,0x10,0x60,0x40,0x0C,0x08,0x07,0x06,0x66, +0x6E,0x93,0x4C,0x00,0x04,0x60,0x6E,0xD3,0x4E,0x00,0x5D,0x4E,0xDF,0x4C,0x00,0x60, +0x75,0x4E,0x2D,0x32,0xEA,0xFF,0x6D,0x92,0xEC,0xFF,0x01,0x30,0x0A,0x6A,0x41,0x44, +0x41,0x00,0x00,0x80,0x40,0x06,0x10,0x00,0x41,0x3B,0xDC,0xFF,0x48,0xE3,0xF9,0x45, +0xFC,0x00,0xB6,0xA5,0x32,0x30,0x00,0x00,0x40,0x46,0x40,0x3B,0xDE,0xFF,0x2D,0x30, +0xEA,0xFF,0x48,0xE3,0x72,0x3B,0x00,0x00,0xE0,0xFF,0x48,0xE2,0x6D,0xD0,0xF0,0xFF, +0x00,0x34,0x6D,0x94,0xC2,0xFF,0x42,0x02,0x0F,0x00,0x4A,0xE3,0x32,0x34,0x00,0x20, +0x42,0x46,0x42,0x3B,0xE4,0xFF,0x44,0x42,0x7C,0x3B,0x00,0x80,0xBE,0xFF,0xFF,0x76, +0x40,0x0C,0x10,0x00,0x14,0x62,0x48,0xE3,0x32,0x32,0x00,0x00,0x41,0x46,0x6D,0xC3, +0xE0,0xFF,0x7C,0x3B,0x28,0x00,0xDA,0xFF,0x44,0x60,0x7C,0x3B,0x74,0x00,0xDA,0xFF, +0x00,0x32,0x49,0xE8,0x41,0x53,0x01,0x36,0x0E,0x66,0x2D,0x32,0xEC,0xFF,0x6D,0xD2, +0xF0,0xFF,0x41,0x0C,0x20,0x00,0x12,0x65,0x7C,0x3B,0x16,0x01,0xDA,0xFF,0x6D,0x4A, +0xDC,0xFF,0x06,0x6A,0x7C,0x3B,0x7A,0x00,0xDA,0xFF,0x40,0x02,0x0F,0x00,0x06,0x66, +0x43,0x53,0x3C,0x30,0x10,0x00,0x48,0xE3,0x32,0x38,0x00,0x00,0x44,0x46,0x43,0x3B, +0xE8,0xFF,0x44,0x3B,0xE2,0xFF,0x43,0x54,0x42,0xB8,0x02,0x65,0x43,0x52,0x43,0x1B, +0xE6,0xFF,0x43,0x1B,0xE7,0xFF,0x2E,0x30,0x24,0x00,0xED,0xE2,0xBA,0xFF,0x50,0xE3, +0xED,0xE2,0xB8,0xFF,0x50,0xE3,0x3B,0x10,0x64,0x00,0x7B,0x34,0x20,0x00,0x4A,0x3B, +0xD8,0xFF,0x4A,0x3B,0xD6,0xFF,0x4A,0x3B,0xD4,0xFF,0x7B,0x3B,0x30,0x00,0xC8,0xFF, +0x2E,0x30,0x5A,0x00,0x00,0x66,0xB8,0x00,0x00,0x60,0x60,0x01,0xB2,0x01,0xBC,0x01, +0xC6,0x01,0xD0,0x01,0xD8,0x01,0xE0,0x01,0xE4,0x01,0xEA,0x01,0xF0,0x01,0xF8,0x01, +0x00,0x02,0x06,0x02,0x0E,0x02,0x18,0x02,0x20,0x02,0x2A,0x02,0x30,0x02,0x34,0x02, +0x38,0x02,0x3E,0x02,0x40,0x02,0x46,0x02,0x4A,0x02,0x4E,0x02,0x52,0x02,0x58,0x02, +0x5E,0x02,0x64,0x02,0x6A,0x02,0x6E,0x02,0x74,0x02,0x7A,0x02,0x00,0x00,0x06,0x06, +0x08,0x08,0x0E,0x0E,0x0C,0x0C,0x0C,0x0C,0x02,0x02,0x1A,0x1A,0x1E,0x00,0x1E,0x00, +0x1C,0x00,0x1E,0x02,0x1A,0x00,0x1E,0x04,0x18,0x00,0x1E,0x06,0x16,0x00,0x1E,0x08, +0x14,0x00,0x1E,0x0A,0x12,0x00,0x1E,0x0C,0x10,0x00,0x1E,0x0E,0x0E,0x00,0x1E,0x10, +0x0C,0x00,0x1E,0x12,0x0A,0x00,0x1E,0x14,0x08,0x00,0x1E,0x16,0x06,0x00,0x1E,0x18, +0x04,0x00,0x1E,0x1A,0x02,0x00,0x1E,0x1C,0x00,0x00,0x1E,0x1E,0x20,0x20,0x61,0x44, +0x65,0x76,0x53,0x20,0x61,0x74,0x67,0x55,0x73,0x61,0x6C,0x20,0x76,0x6F,0x73,0x65, +0x42,0x20,0x61,0x65,0x48,0x20,0x62,0x61,0x69,0x6C,0x20,0x67,0x75,0x4E,0x00,0x08, +0x01,0x00,0x2A,0x67,0x6E,0x3B,0x5C,0x00,0xC0,0xFF,0x6D,0x3B,0xD6,0xFF,0xD0,0xFF, +0x7C,0x3B,0xAC,0x03,0xD6,0xFF,0x6D,0x3B,0xD4,0xFF,0xCA,0xFF,0x7C,0x3B,0xCC,0x03, +0xD4,0xFF,0x6D,0x3B,0xC8,0xFF,0xC4,0xFF,0x7C,0x3B,0xC0,0x03,0xC8,0xFF,0x00,0x08, +0x00,0x00,0x28,0x67,0x6D,0x42,0xBC,0xFF,0x6D,0x3B,0xD6,0xFF,0xD2,0xFF,0x7C,0x3B, +0x7E,0x02,0xD6,0xFF,0x6D,0x3B,0xD4,0xFF,0xCC,0xFF,0x7C,0x3B,0x16,0x03,0xD4,0xFF, +0x6D,0x3B,0xC8,0xFF,0xC6,0xFF,0x7C,0x3B,0xE4,0x02,0xC8,0xFF,0x00,0x08,0x02,0x00, +0x48,0x67,0x6E,0x3B,0x5E,0x00,0xBE,0xFF,0x6D,0x3B,0xD6,0xFF,0xCE,0xFF,0x7C,0x3B, +0xD8,0x03,0xD6,0xFF,0x6D,0x0C,0x28,0x00,0xDA,0xFF,0x0C,0x66,0x6D,0x42,0xE8,0xFF, +0x7C,0x3B,0x74,0x00,0xDA,0xFF,0x22,0x60,0x6D,0x0C,0x74,0x00,0xDA,0xFF,0x1A,0x66, +0x6D,0x0C,0x10,0x00,0xF0,0xFF,0x12,0x63,0x7C,0x3B,0x16,0x01,0xDA,0xFF,0x6D,0x4A, +0xDC,0xFF,0x06,0x6A,0x7C,0x3B,0x7A,0x00,0xDA,0xFF,0x2D,0x34,0xE0,0xFF,0x2D,0x36, +0xEE,0xFF,0x7C,0x26,0xFD,0x00,0x60,0x25,0x6D,0x38,0xDA,0xFF,0xE7,0x48,0xC0,0x00, +0xB3,0x4E,0x00,0xC0,0xDF,0x4C,0x00,0x03,0x89,0x54,0x6D,0x53,0xB6,0xFF,0x02,0x66, +0x75,0x4E,0x2E,0x08,0x02,0x00,0x5B,0x00,0x00,0x67,0x3C,0xFE,0x00,0x60,0x64,0xFD, +0x11,0x38,0x10,0x20,0x2D,0x32,0xDC,0xFF,0x04,0x6B,0xA8,0xE2,0x02,0x60,0xA8,0xE3, +0x40,0x48,0x00,0x32,0x40,0x48,0x6D,0x38,0xD6,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x32, +0xED,0xD0,0xF4,0xFF,0xED,0xD2,0xF2,0xFF,0xCB,0x51,0xD6,0xFF,0x75,0x4E,0x11,0x38, +0x10,0x20,0x2D,0x32,0xDC,0xFF,0x04,0x6B,0xA8,0xE2,0x02,0x60,0xA8,0xE3,0x40,0x48, +0x00,0x32,0x40,0x48,0x2D,0x34,0xE0,0xFF,0x6D,0x38,0xD6,0xFF,0xB3,0x4E,0x00,0xC0, +0x81,0x32,0x00,0x32,0x2D,0x3A,0xB4,0xFF,0x31,0x38,0x00,0x50,0x2D,0x34,0xE2,0xFF, +0x6D,0x38,0xD8,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x33,0x00,0x50,0xED,0xD0,0xF4,0xFF, +0xED,0xD2,0xF2,0xFF,0xCB,0x51,0xB8,0xFF,0x75,0x4E,0xE7,0x48,0xC0,0x00,0x2D,0x3E, +0xE8,0xFF,0x18,0x20,0x11,0x38,0x2D,0x32,0xDC,0xFF,0xA8,0xE3,0x40,0x48,0x00,0x32, +0x40,0x48,0x2D,0x34,0xE0,0xFF,0x6D,0x38,0xD4,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x32, +0xED,0xD2,0xB4,0xFF,0x2D,0x34,0xDE,0xFF,0x00,0x38,0x42,0xC8,0x18,0x30,0x40,0x48, +0x01,0x30,0x40,0x48,0x2D,0x32,0xDC,0xFF,0xA8,0xE3,0x40,0x48,0x00,0x32,0x40,0x48, +0x42,0x46,0x42,0xC2,0x42,0x46,0x41,0xB9,0x11,0x38,0x47,0x4A,0x12,0x67,0x6D,0x38, +0xC8,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x32,0xED,0xD2,0xB4,0xFF,0x47,0x53,0xC8,0x60, +0x2D,0x34,0xE2,0xFF,0x6D,0x38,0xD4,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x32,0xDF,0x4C, +0x00,0x03,0xED,0xD0,0xF4,0xFF,0xED,0xD2,0xF2,0xFF,0x6D,0x42,0xBC,0xFF,0x43,0x53, +0x12,0x67,0xED,0xE7,0xC0,0xFF,0x2E,0x08,0x02,0x00,0x5B,0x00,0x00,0x66,0x30,0x03, +0x00,0x60,0x68,0xFF,0x75,0x4E,0xE7,0x48,0xC0,0x00,0x2D,0x3E,0xE8,0xFF,0x18,0x30, +0x40,0x48,0x11,0x38,0x2D,0x32,0xDC,0xFF,0xA8,0xE2,0x40,0x48,0x00,0x32,0x40,0x48, +0x2D,0x34,0xE0,0xFF,0x6D,0x38,0xD4,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x32,0xED,0xD2, +0xB4,0xFF,0x2D,0x34,0xDE,0xFF,0x00,0x38,0x42,0xC8,0x40,0x48,0x18,0x30,0x40,0x48, +0x2D,0x32,0xDC,0xFF,0xA8,0xE2,0x40,0x48,0x00,0x32,0x40,0x48,0x42,0x46,0x42,0xC2, +0x42,0x46,0x41,0xB9,0x11,0x38,0x47,0x4A,0x12,0x67,0x6D,0x38,0xC8,0xFF,0xB3,0x4E, +0x00,0xC0,0x81,0x32,0xED,0xD2,0xB4,0xFF,0x47,0x53,0xCA,0x60,0x2D,0x34,0xE2,0xFF, +0x6D,0x38,0xD4,0xFF,0xB3,0x4E,0x00,0xC0,0x81,0x32,0xDF,0x4C,0x00,0x03,0xED,0xD0, +0xF4,0xFF,0xED,0xD2,0xF2,0xFF,0x6D,0x42,0xBC,0xFF,0x43,0x53,0x12,0x67,0xED,0xE7, +0xC0,0xFF,0x2E,0x08,0x02,0x00,0x5B,0x00,0x00,0x66,0x94,0x02,0x00,0x60,0x68,0xFF, +0x75,0x4E,0x42,0x46,0x42,0xC8,0x42,0x46,0x04,0x32,0x75,0x4E,0x42,0x46,0x42,0x82, +0x42,0x46,0x44,0xC2,0x75,0x4E,0x41,0x46,0x42,0xC2,0x44,0x82,0x41,0xB5,0x75,0x4E, +0x41,0xB9,0x42,0xC2,0x41,0xB9,0x75,0x4E,0x42,0xC2,0x41,0x46,0x44,0xC2,0x75,0x4E, +0x04,0x32,0x75,0x4E,0x42,0xC2,0x41,0xB9,0x75,0x4E,0x42,0xC2,0x44,0x82,0x75,0x4E, +0x42,0xC2,0x44,0x82,0x41,0xB5,0x75,0x4E,0x42,0xC2,0x41,0xB9,0x41,0xB5,0x75,0x4E, +0x04,0x32,0x41,0xB5,0x75,0x4E,0x44,0xB5,0x42,0xC2,0x44,0x82,0x75,0x4E,0x41,0xB9, +0x42,0xC2,0x41,0xB9,0x41,0xB5,0x75,0x4E,0x41,0x46,0x42,0xC2,0x44,0x82,0x75,0x4E, +0x41,0x46,0x42,0xC2,0x44,0xB5,0x44,0x82,0x75,0x4E,0x42,0x88,0x04,0x32,0x75,0x4E, +0x00,0x72,0x75,0x4E,0x44,0xC2,0x75,0x4E,0x44,0x46,0x44,0xC2,0x75,0x4E,0x75,0x4E, +0x41,0x46,0x44,0xC2,0x75,0x4E,0x04,0x32,0x75,0x4E,0x41,0xB9,0x75,0x4E,0x44,0x82, +0x75,0x4E,0x44,0x82,0x41,0x46,0x75,0x4E,0x41,0xB9,0x41,0x46,0x75,0x4E,0x04,0x32, +0x41,0x46,0x75,0x4E,0x44,0x46,0x44,0x82,0x75,0x4E,0x41,0x46,0x75,0x4E,0x41,0x46, +0x44,0x82,0x75,0x4E,0x44,0xC2,0x41,0x46,0x75,0x4E,0xFF,0x72,0x75,0x4E,0x42,0xC2, +0x2D,0x3C,0xE4,0xFF,0x2D,0x08,0x00,0x00,0xBF,0xFF,0x10,0x67,0x3C,0x00,0x10,0x00, +0x56,0xE2,0x04,0x64,0x3C,0x3C,0x00,0x80,0x46,0x3B,0xE4,0xFF,0x6D,0x4A,0xE8,0xFF, +0x0A,0x6B,0x6D,0xBC,0xE2,0xFF,0x04,0x64,0x46,0xC0,0x04,0x60,0x40,0x42,0x46,0xC2, +0x2D,0x3C,0xC2,0xFF,0x02,0x3A,0x45,0x48,0x2D,0x3A,0xE2,0xFF,0xAD,0xED,0x45,0x48, +0x05,0x3E,0x45,0x48,0x47,0xC2,0x45,0xC0,0x41,0x48,0x00,0x32,0x06,0x60,0x01,0x20, +0x88,0xE2,0x80,0x82,0xCE,0x51,0xF8,0xFF,0x01,0x30,0x41,0x48,0x6D,0x38,0xD2,0xFF, +0xF3,0x4E,0x00,0xC0,0x2D,0x53,0xE7,0xFF,0x04,0x66,0x6D,0xC2,0xE4,0xFF,0x2D,0x3C, +0xC2,0xFF,0x41,0x48,0x41,0x42,0x01,0x2A,0x04,0x60,0x8D,0xE2,0x85,0x82,0xCE,0x51, +0xFA,0xFF,0x01,0x3A,0x41,0x48,0x6D,0x82,0xBC,0xFF,0x45,0x3B,0xBC,0xFF,0x6D,0x38, +0xC6,0xFF,0xF3,0x4E,0x00,0xC0,0x2D,0x3C,0xE4,0xFF,0x2D,0x53,0xE7,0xFF,0x10,0x6B, +0x12,0x67,0x2D,0x53,0xE7,0xFF,0x02,0x66,0x46,0xC2,0x6D,0xC2,0xE0,0xFF,0x52,0x60, +0x41,0x42,0x02,0x60,0x46,0xC2,0x6D,0x4A,0xBE,0xFF,0x40,0x6B,0x2D,0x3A,0xE8,0xFF, +0x45,0x54,0x47,0x48,0x2D,0x3E,0xE2,0xFF,0x3C,0x00,0x10,0x00,0x57,0xE2,0x06,0x64, +0x3C,0x3E,0x00,0x80,0x45,0x52,0x6D,0x0C,0x01,0x00,0xE0,0xFF,0x02,0x66,0x45,0x53, +0x3C,0x00,0x10,0x00,0x56,0xE2,0x04,0x64,0x3C,0x3C,0x00,0x80,0x46,0xBE,0x02,0x65, +0x45,0x52,0x47,0x48,0x46,0x3B,0xE4,0xFF,0x45,0x1B,0xE6,0xFF,0x6D,0x1B,0xE6,0xFF, +0xE7,0xFF,0x2D,0x3C,0xC2,0xFF,0x41,0x48,0x41,0x42,0x01,0x2A,0x04,0x60,0x8D,0xE2, +0x85,0x82,0xCE,0x51,0xFA,0xFF,0x01,0x3A,0x41,0x48,0x6D,0x82,0xBC,0xFF,0x45,0x3B, +0xBC,0xFF,0x42,0xC2,0x6D,0x38,0xCC,0xFF,0xF3,0x4E,0x00,0xC0,0x6D,0xC2,0xC0,0xFF, +0x6D,0xC0,0xC0,0xFF,0xED,0xE7,0xC0,0xFF,0x6D,0x38,0xD0,0xFF,0xF3,0x4E,0x00,0xC0, +0x6D,0xC2,0xC0,0xFF,0x6D,0x38,0xC4,0xFF,0xF3,0x4E,0x00,0xC0,0x6D,0xC2,0xC0,0xFF, +0x6D,0x38,0xCA,0xFF,0xF3,0x4E,0x00,0xC0,0xED,0xE7,0xBE,0xFF,0x2A,0x64,0x41,0x48, +0x00,0x32,0x89,0xE2,0x42,0x48,0x2D,0x34,0xE2,0xFF,0x8A,0xE2,0x42,0x3B,0xE2,0xFF, +0x42,0x48,0x42,0x3B,0xE0,0xFF,0x24,0x67,0x2D,0x30,0xDC,0xFF,0x12,0x6B,0x40,0x52, +0x40,0x3B,0xDC,0xFF,0x01,0x30,0x41,0x48,0x6D,0x38,0xCE,0xFF,0xF3,0x4E,0x00,0xC0, +0x00,0x4A,0x04,0x67,0x40,0x53,0xE8,0x60,0x40,0x42,0xE2,0x60,0x42,0x3B,0xE2,0xFF, +0x42,0x48,0x42,0x3B,0xE0,0xFF,0xED,0xD2,0xB4,0xFF,0x11,0x38,0x3C,0x30,0x0F,0x00, +0x6D,0x90,0xDC,0xFF,0x40,0x00,0x00,0x80,0x40,0x3B,0xDC,0xFF,0xCA,0x60,0xED,0xE7, +0xBE,0xFF,0x0C,0x64,0x6D,0x4A,0xDC,0xFF,0x00,0x6B,0x30,0xFC,0x00,0x60,0xC8,0xFC, +0x3C,0x00,0x10,0x00,0xED,0xE4,0xDE,0xFF,0x2D,0x30,0xE2,0xFF,0x7C,0xB0,0xFF,0xFF, +0x46,0x67,0x3C,0x00,0x10,0x00,0x50,0xE2,0x40,0x3B,0xE2,0xFF,0x2D,0x30,0xDC,0xFF, +0x00,0x4A,0x06,0x66,0x7C,0x3B,0x00,0x80,0xDE,0xFF,0x2D,0x32,0xE0,0xFF,0x49,0xE2, +0x32,0x67,0x41,0x3B,0xE0,0xFF,0x40,0x4A,0x08,0x6B,0x6D,0x52,0xDC,0xFF,0x00,0x60, +0x86,0xFC,0x00,0x4A,0x08,0x67,0x6D,0x53,0xDC,0xFF,0x00,0x60,0xDE,0xFB,0x7C,0x3B, +0x01,0x00,0xDC,0xFF,0x00,0x60,0x70,0xFC,0x6D,0x52,0xE8,0xFF,0x7C,0x3B,0x00,0x80, +0xE2,0xFF,0xB8,0x60,0x7C,0x3B,0xFF,0xFF,0xE0,0xFF,0x6D,0x53,0xE8,0xFF,0xED,0xD2, +0xB4,0xFF,0x3C,0x34,0x0F,0x00,0x40,0x94,0x42,0x00,0x00,0x80,0x42,0x3B,0xDC,0xFF, +0x00,0x60,0xA8,0xFB,0x2E,0x32,0x48,0x00,0x01,0x34,0x42,0x02,0x0F,0x00,0x42,0x3B, +0xEC,0xFF,0x49,0xE8,0x49,0xE3,0x6D,0x20,0xFA,0xFF,0xC1,0xD0,0x6E,0x3B,0x50,0x00, +0xF0,0xFF,0x2E,0x30,0x4A,0x00,0x2E,0x32,0x52,0x00,0x41,0x3B,0xEE,0xFF,0x2D,0x34, +0xF4,0xFF,0x00,0x61,0x72,0x02,0x2E,0x3C,0x68,0x00,0x46,0x0C,0x08,0x07,0x00,0x67, +0xD6,0x00,0x46,0x0C,0x84,0x03,0x0C,0x67,0x6D,0x44,0xF4,0xFF,0x41,0x53,0x41,0xD0, +0xC2,0xC0,0xC0,0xD1,0x2E,0x30,0x52,0x00,0x48,0xE8,0x40,0xD0,0x40,0x54,0x40,0x3B, +0xF2,0xFF,0x09,0x2F,0x46,0x0C,0x8C,0x0A,0x0E,0x67,0x6D,0x44,0xF2,0xFF,0x2E,0x32, +0x50,0x00,0x41,0x53,0xC1,0xC0,0xC0,0xD3,0x2D,0x34,0xEC,0xFF,0x3C,0x36,0x00,0x80, +0x03,0x38,0x6B,0xE4,0x00,0x70,0x2D,0x34,0xF0,0xFF,0x2D,0x3C,0xF4,0xFF,0x34,0x60, +0x2D,0x32,0xEE,0xFF,0xE7,0x48,0xC0,0x08,0x14,0x60,0x10,0x3E,0x43,0xCE,0x02,0x67, +0x44,0x80,0x5C,0xE2,0x06,0x64,0x80,0x32,0x89,0x54,0x00,0x70,0xC6,0xD0,0xC9,0x51, +0xEA,0xFF,0x80,0x32,0x00,0x70,0xDF,0x4C,0x10,0x03,0xED,0xD2,0xF2,0xFF,0x5B,0xE2, +0x02,0x64,0x88,0x54,0xCA,0x51,0xCA,0xFF,0x5F,0x22,0x2E,0x30,0x50,0x00,0x2E,0x32, +0x52,0x00,0x41,0x3B,0xF0,0xFF,0x41,0x3D,0x50,0x00,0x40,0x3B,0xEE,0xFF,0x40,0x3D, +0x52,0x00,0x2D,0x30,0xB0,0xFF,0x6D,0x3B,0xB2,0xFF,0xB0,0xFF,0x40,0x3B,0xB2,0xFF, +0x7C,0x3B,0x01,0x00,0xAE,0xFF,0x2D,0x30,0xF2,0xFF,0x6E,0x0C,0x84,0x03,0x68,0x00, +0x02,0x66,0x40,0x44,0x40,0x3B,0xF4,0xFF,0x6E,0x42,0x48,0x00,0x6E,0x42,0x4A,0x00, +0x49,0x2B,0xFA,0xFF,0x75,0x4E,0x2E,0x30,0x50,0x00,0x6D,0xD0,0xEC,0xFF,0x40,0x53, +0x48,0xE8,0x40,0xD0,0x40,0x54,0x40,0x3B,0xF2,0xFF,0x00,0x34,0x4A,0xE2,0x42,0x53, +0xC1,0xC0,0x09,0x2F,0xC0,0xD3,0x1E,0x60,0x48,0x24,0x02,0x36,0x1A,0x30,0x00,0x7A, +0x3C,0x38,0x0F,0x00,0x48,0xE2,0x55,0xE3,0xCC,0x51,0xFA,0xFF,0x05,0x33,0xCB,0x51, +0xEC,0xFF,0xED,0xD0,0xF4,0xFF,0xC9,0x51,0xE0,0xFF,0x6D,0x3B,0xF2,0xFF,0xF4,0xFF, +0x5F,0x22,0x49,0x2B,0xFA,0xFF,0x2E,0x30,0x48,0x00,0x6E,0xD0,0x50,0x00,0x40,0x44, +0x40,0x02,0x0F,0x00,0x40,0x3D,0x48,0x00,0x6E,0x42,0x4A,0x00,0x75,0x4E,0x2E,0x30, +0x48,0x00,0x00,0x38,0x40,0x02,0x0F,0x00,0x40,0x3B,0xEC,0xFF,0x4C,0xE8,0x44,0xD8, +0x2E,0x30,0x4A,0x00,0xED,0xC0,0xF4,0xFF,0x6D,0x20,0xFA,0xFF,0xC4,0xD0,0xC0,0xD1, +0x2D,0x34,0xEC,0xFF,0x3C,0x36,0x00,0x80,0x03,0x38,0x6B,0xE4,0x2E,0x34,0x52,0x00, +0x2E,0x32,0x50,0x00,0x42,0x3B,0xEE,0xFF,0x41,0x3B,0xF0,0xFF,0x00,0x61,0xE8,0x00, +0x49,0xE6,0x41,0xD2,0x41,0x54,0x41,0x3B,0xF2,0xFF,0x49,0x26,0x2E,0x3E,0x44,0x00, +0x97,0xE2,0x00,0x7E,0x97,0xE2,0x2D,0x3E,0xF4,0xFF,0x2E,0x34,0x42,0x00,0x2D,0x3A, +0xEE,0xFF,0x45,0x53,0x3C,0x3C,0xFF,0x7F,0x87,0x4A,0x0E,0x6B,0x42,0xDC,0x02,0x64, +0x54,0x61,0xC7,0xD0,0xCD,0x51,0xF6,0xFF,0x0E,0x60,0x42,0xDC,0x02,0x64,0x46,0x61, +0x44,0x61,0xC7,0xD0,0xCD,0x51,0xF4,0xFF,0x2E,0x34,0x50,0x00,0x2E,0x32,0x40,0x00, +0x2E,0x30,0x42,0x00,0x00,0x76,0x0C,0x60,0x40,0xD2,0x02,0x64,0x43,0x52,0x87,0x4A, +0x02,0x6A,0x43,0x52,0xCA,0x51,0xF2,0xFF,0x41,0x3D,0x40,0x00,0x43,0x3D,0x50,0x00, +0x6D,0x3D,0xB0,0xFF,0x52,0x00,0x2D,0x32,0xF2,0xFF,0x41,0x3B,0xF4,0xFF,0x6E,0x22, +0x6C,0x00,0x00,0x60,0xC4,0xFE,0xE7,0x48,0xC0,0x1F,0x00,0x70,0x2D,0x3A,0xF0,0xFF, +0x45,0x53,0x2E,0x3E,0x40,0x00,0x04,0x60,0x5B,0xE2,0x02,0x64,0x58,0x34,0x0A,0x3C, +0x43,0xCC,0x18,0x66,0x87,0x4A,0x06,0x6B,0x42,0xDE,0x2C,0x64,0x22,0x60,0x42,0xDE, +0x1E,0x64,0x5C,0xE2,0x1A,0x64,0xC0,0x32,0x00,0x70,0x14,0x60,0x42,0xDE,0x0A,0x64, +0x44,0x80,0x5C,0xE2,0x04,0x64,0xC0,0x32,0x00,0x70,0x87,0x4A,0x0A,0x6A,0x44,0x80, +0x5C,0xE2,0x04,0x64,0xC0,0x32,0x00,0x70,0xCD,0x51,0xBE,0xFF,0x80,0x32,0xDF,0x4C, +0xF8,0x03,0xC1,0xD2,0x75,0x4E,0x07,0x3F,0x6E,0x22,0x6C,0x00,0x2D,0x3E,0xFE,0xFF, +0x08,0x67,0xC7,0xD2,0x6D,0x42,0xFE,0xFF,0x06,0x60,0x6E,0x3B,0x70,0x00,0xFE,0xFF, +0x1F,0x3E,0x75,0x4E,0xF0,0x43,0x00,0x70,0xF1,0x45,0x00,0x70,0x4F,0xE2,0x47,0x53, +0x2E,0x3C,0x52,0x00,0x00,0x60,0x80,0x00,0xE7,0x48,0xE0,0x03,0x00,0x7A,0x00,0x7C, +0x12,0x22,0x89,0xE2,0x10,0x20,0x05,0x10,0x98,0xE2,0x11,0x24,0x06,0x14,0x02,0x26, +0x9B,0xE2,0x03,0x28,0x9C,0xE2,0x00,0x2A,0x00,0x2C,0x80,0xB5,0x85,0xB7,0x86,0xB9, +0x9D,0xE3,0x9E,0xE5,0x85,0x80,0x86,0x80,0x01,0x2A,0x01,0x2C,0x81,0xB5,0x85,0xB7, +0x86,0xB9,0x9D,0xE3,0x9E,0xE5,0x81,0x80,0x85,0x80,0x86,0x80,0x82,0xB7,0x84,0xB7, +0x9C,0xE5,0x82,0x80,0x84,0x80,0x40,0x48,0x11,0x3C,0x06,0x3A,0x45,0xB1,0x40,0xCA, +0x8A,0x54,0x12,0x22,0x2A,0x12,0xFF,0xFF,0x99,0xE2,0xC5,0x32,0x10,0x3A,0xC6,0x30, +0xCF,0x51,0xA2,0xFF,0xDF,0x4C,0xC0,0x07,0x4A,0x22,0xED,0xD4,0xF4,0xFF,0x46,0x0C, +0x01,0x00,0x02,0x66,0x49,0x24,0xCE,0x51,0x80,0xFF,0x75,0x4E,0xE7,0x48,0xE0,0xF8, +0x79,0x24,0x00,0x00,0x9E,0x29,0x6A,0x20,0x0E,0x00,0x6A,0x22,0x12,0x00,0x28,0x30, +0x0C,0x00,0x28,0x32,0x06,0x00,0x28,0x34,0x08,0x00,0x68,0x4A,0x0A,0x00,0x0A,0x66, +0x7C,0x33,0x01,0x00,0x0A,0x00,0xC2,0xC2,0x08,0x60,0x69,0x42,0x0A,0x00,0xC2,0xC2, +0x41,0xC1,0x68,0x20,0x00,0x00,0x69,0x22,0x00,0x00,0xC8,0xB3,0x04,0x67,0x3E,0x61, +0x02,0x60,0x06,0x61,0xDF,0x4C,0x1F,0x07,0x75,0x4E,0xC9,0x51,0x2C,0x00,0x75,0x4E, +0x42,0x42,0x01,0x38,0x1C,0x60,0xC0,0xD0,0xF0,0x41,0x02,0x00,0x10,0x3E,0x48,0x22, +0x48,0x24,0x40,0xD4,0x02,0x36,0x04,0x60,0x49,0x24,0xA1,0x34,0xCB,0x51,0xFA,0xFF, +0x87,0x32,0xCC,0x51,0xE2,0xFF,0x4A,0x20,0xC8,0x51,0xD6,0xFF,0x75,0x4E,0x01,0x38, +0x41,0xD2,0x12,0x60,0x49,0x24,0x00,0x36,0x04,0x60,0x98,0x34,0xC1,0xD4,0xCB,0x51, +0xFA,0xFF,0xE9,0x43,0x02,0x00,0xCC,0x51,0xEC,0xFF,0x75,0x4E,0x79,0x20,0x00,0x00, +0xA2,0x29,0x18,0x30,0x39,0x32,0x00,0x00,0x9A,0x29,0x3B,0x18,0x5D,0x10,0x04,0xB0, +0x00,0x62,0x84,0x00,0x00,0x34,0xFC,0xC4,0x06,0x00,0xF9,0x43,0x00,0x00,0x48,0x27, +0xC2,0xD2,0x41,0x53,0x48,0x67,0x02,0x76,0x00,0x72,0x00,0x74,0x18,0x34,0xC2,0x32, +0x02,0x6C,0x42,0x42,0x7C,0xB4,0xE8,0x03,0x04,0x6F,0x3C,0x34,0xE8,0x03,0x7C,0xD4, +0x48,0x00,0xFC,0x84,0x8F,0x00,0x41,0xE9,0x42,0x82,0xCB,0x51,0xDE,0xFF,0xF9,0x41, +0xFD,0x00,0x46,0x37,0x40,0xD0,0x30,0x30,0x00,0x00,0x04,0xC0,0xF9,0x41,0xFF,0x00, +0x40,0x82,0x40,0xD0,0x81,0x31,0x00,0x00,0x75,0x4E,0x03,0x01,0x0F,0x00,0x18,0x32, +0xC1,0x32,0x24,0x61,0x01,0x34,0x18,0x32,0xC1,0x32,0x1C,0x61,0x41,0xD4,0x18,0x32, +0xC1,0x32,0x14,0x61,0x41,0xD4,0x08,0x67,0x7C,0xB4,0xB8,0x0B,0x08,0x66,0x40,0x46, +0xC0,0x33,0xFF,0x00,0x40,0x82,0x75,0x4E,0x7C,0xB2,0x8E,0x00,0x0C,0x6D,0x7C,0xB2, +0x5A,0x03,0x04,0x6D,0x3C,0x32,0xE8,0x03,0x75,0x4E,0x00,0x72,0x75,0x4E,0x04,0x2F, +0x79,0x20,0x00,0x00,0x9E,0x29,0x7C,0x31,0x04,0x00,0x08,0x00,0x79,0x20,0x00,0x00, +0xA2,0x29,0x18,0x30,0x10,0x34,0x79,0x20,0x00,0x00,0xAA,0x29,0x39,0x32,0x00,0x00, +0x9A,0x29,0x3B,0x18,0x95,0x10,0x04,0xB0,0x06,0x63,0xBC,0x30,0xFF,0xFF,0x18,0x60, +0xC0,0x30,0x42,0x4A,0x16,0x66,0xF9,0x43,0x00,0x00,0x48,0x27,0xFC,0xC0,0x06,0x00, +0xC0,0xD2,0xD9,0x30,0xD9,0x30,0x91,0x30,0x1F,0x28,0x75,0x4E,0x41,0x53,0x30,0x67, +0xF9,0x43,0xFD,0x00,0x46,0x37,0x40,0xD0,0x31,0x30,0x00,0x00,0x04,0xC0,0xF9,0x43, +0xFF,0x00,0x40,0x82,0x40,0xD0,0x31,0x30,0x00,0x00,0x58,0xEB,0x02,0x72,0x58,0xE9, +0x00,0x34,0x7C,0xC4,0x0E,0x00,0xFB,0x30,0x24,0x20,0xC9,0x51,0xF2,0xFF,0xC8,0x60, +0x39,0x32,0xFF,0x00,0x40,0x82,0x40,0xB3,0x00,0x72,0x00,0x08,0x00,0x00,0x04,0x67, +0x3C,0x32,0xE8,0x03,0xC1,0x30,0xC1,0x30,0x81,0x30,0xAC,0x60,0x00,0x00,0x8E,0x00, +0x1D,0x01,0xAC,0x01,0x3B,0x02,0xCA,0x02,0x59,0x03,0xE8,0x03,0x02,0x00,0x01,0x01, +0x02,0x00,0x00,0x40,0x01,0x68,0x02,0xFC,0x09,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x02,0x02,0x00,0x01,0x70,0x02,0xD0,0x00,0xFD,0x02,0x00,0x02,0x00,0x09,0x00,0x02, +0x00,0x00,0x02,0x00,0x01,0x02,0x02,0x00,0x00,0x70,0x02,0xD0,0x05,0xF8,0x09,0x00, +0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x01,0x70,0x02,0xA0,0x00,0xF9,0x05, +0x00,0x05,0x00,0x09,0x00,0x02,0x00,0x00,0x0F,0x0F,0x06,0x0D,0x06,0x09,0x06,0x08, +0x02,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x58,0x1B,0xFF,0x06,0x1B,0x00, +0x05,0x58,0x00,0xFF,0x58,0x1B,0xFF,0x03,0x1B,0x00,0xFF,0x4C,0x1B,0x00,0xFF,0x59, +0x1B,0x00,0x01,0x33,0x00,0xFF,0x33,0x1B,0xFF,0x01,0x1B,0x00,0xFF,0x31,0x1B,0x00, +0x01,0x33,0x00,0xFF,0x32,0x1B,0x00,0xFF,0x58,0x1B,0xFF,0x00,0x00,0x00,0x00,0x00, +0xCE,0x16,0x00,0x00,0x01,0x00,0x03,0x00,0x07,0x00,0x0F,0x00,0x1F,0x00,0x3F,0x00, +0x7F,0x00,0xFF,0x00,0xFF,0x01,0xFF,0x03,0xFF,0x07,0xFF,0x0F,0xFF,0x1F,0xFF,0x3F, +0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0x20,0x2E,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x2E,0x20,0x20, +0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0A,0x00,0x00,0x00, +0x0D,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x18,0x00,0x00,0x00, +0x7F,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xD2,0x92,0xFC,0x00,0xBC,0x92,0xFC,0x00, +0xAC,0x92,0xFC,0x00,0xAC,0x92,0xFC,0x00,0x12,0x93,0xFC,0x00,0xF6,0x92,0xFC,0x00, +0xDC,0x92,0xFC,0x00,0xBC,0x92,0xFC,0x00,0x52,0x93,0x00,0x00,0x1F,0x00,0x1C,0x00, +0x1F,0x00,0x1E,0x00,0x1F,0x00,0x1E,0x00,0x1F,0x00,0x1F,0x00,0x1E,0x00,0x1F,0x00, +0x1E,0x00,0x1F,0x00,0xFC,0x00,0xE0,0x80,0x00,0x00,0xFC,0x00,0x4C,0x90,0x80,0x00, +0xFC,0x00,0x76,0x8E,0x81,0x00,0xFC,0x00,0x98,0x90,0x82,0x00,0xFC,0x00,0x2C,0x8F, +0x82,0x00,0xFC,0x00,0x54,0x8F,0x83,0x00,0xFC,0x00,0xBC,0x90,0x00,0x00,0xFC,0x00, +0x04,0x90,0x80,0x00,0xFC,0x00,0x66,0x90,0x80,0x00,0xFC,0x00,0x1C,0x91,0x81,0x00, +0xFC,0x00,0x44,0x92,0x80,0x00,0xFC,0x00,0xCA,0x8B,0x80,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x1A,0x6D,0x00,0x00,0xFC,0x00, +0x98,0x93,0x00,0x00,0xFC,0x00,0xE4,0x8B,0x81,0x00,0xFC,0x00,0x08,0x8C,0x83,0x00, +0xFC,0x00,0x2C,0x8C,0x82,0x00,0xFC,0x00,0x48,0x8C,0x82,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00, +0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x3A,0x6D,0x00,0x00, +0xFC,0x00,0x06,0x6D,0x01,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00, +0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00, +0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00, +0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00, +0xFC,0x00,0x74,0x9E,0x00,0x00,0xFC,0x00,0x84,0x9E,0x00,0x00,0xFC,0x00,0xFC,0x9E, +0x00,0x00,0xFC,0x00,0x0C,0x9F,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00, +0xF4,0x6C,0x00,0x00,0xFC,0x00,0xA2,0x93,0x00,0x00,0xFC,0x00,0x32,0x80,0x01,0x00, +0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0xC2,0x7A,0x01,0x00,0xFC,0x00, +0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x28,0x74,0x01,0x00, +0xFC,0x00,0x84,0x79,0x01,0x00,0xFC,0x00,0xD8,0x6A,0x01,0x00,0xFC,0x00,0xF4,0x71, +0x01,0x00,0xFC,0x00,0x4C,0x76,0x01,0x00,0xFC,0x00,0x20,0x57,0x00,0x00,0xFC,0x00, +0xC4,0x5E,0x82,0x00,0xFC,0x00,0x44,0x5F,0x82,0x00,0xFC,0x00,0x0C,0x78,0x01,0x00, +0xFC,0x00,0x28,0x7D,0x81,0x00,0xFC,0x00,0xD2,0x76,0x01,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x70,0x52,0x00,0x00,0xFC,0x00,0x38,0x53,0x00,0x00,0xFC,0x00, +0x74,0x6C,0x01,0x00,0xFC,0x00,0x08,0x8B,0x01,0x00,0xFC,0x00,0x56,0x8B,0x01,0x00, +0xFC,0x00,0xB4,0x89,0x02,0x00,0xFC,0x00,0xD4,0x81,0x03,0x00,0xFC,0x00,0x82,0x80, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x50,0x6D,0x01,0x00,0xFC,0x00, +0x4E,0x6E,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00, +0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x98,0x93, +0x00,0x00,0xFC,0x00,0x98,0x93,0x00,0x00,0xFC,0x00,0x4A,0x7B,0x02,0x00,0xFC,0x00, +0x88,0x77,0x01,0x00,0xFC,0x00,0x10,0x98,0xFC,0x00,0x36,0x98,0xFC,0x00,0x10,0x98, +0xFC,0x00,0x36,0x98,0xFC,0x00,0x36,0x98,0xFC,0x00,0x04,0x98,0xFC,0x00,0x10,0x98, +0xFC,0x00,0x10,0x98,0xFC,0x00,0x54,0x98,0xFC,0x00,0x86,0x98,0xFC,0x00,0x36,0x99, +0xFC,0x00,0x58,0x99,0xFC,0x00,0x58,0x99,0xFC,0x00,0x58,0x99,0xFC,0x00,0x58,0x99, +0xFC,0x00,0x36,0x99,0xFC,0x00,0x36,0x99,0xFC,0x00,0x36,0x99,0xFC,0x00,0x36,0x99, +0x4F,0x43,0x3A,0x4E,0x63,0x00,0x6E,0x6F,0x00,0x3A,0x55,0x41,0x3A,0x58,0x61,0x00, +0x78,0x75,0x00,0x3A,0x52,0x50,0x3A,0x4E,0x70,0x00,0x6E,0x72,0x00,0x3A,0x00,0x02, +0xFF,0xFF,0xF0,0xFF,0xC0,0xC0,0x18,0xFF,0x00,0xFF,0x91,0xF1,0x0F,0x00,0x00,0x00, +0xA0,0x05,0xA0,0x05,0xA0,0x05,0xA0,0x05,0xB0,0x0D,0xB0,0x0D,0xB8,0x1D,0x9C,0x39, +0x9E,0x79,0x8E,0x71,0x8E,0x71,0x86,0x61,0x82,0x41,0x00,0x00,0x00,0x00,0x07,0x00, +0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x08,0x08,0x08,0x08,0x08,0x08, +0x20,0x20,0x40,0x40,0x80,0x80,0x41,0x41,0x22,0x22,0x14,0x14,0x08,0x08,0x10,0x10, +0x00,0x00,0x00,0x00,0x10,0x10,0x28,0x28,0x00,0x00,0x00,0x00,0x01,0x01,0x82,0x82, +0x02,0x02,0x02,0x02,0xAA,0xAA,0x50,0x50,0x20,0x20,0x20,0x20,0xAA,0xAA,0x05,0x05, +0x40,0x40,0x80,0x80,0x00,0x00,0x08,0x08,0x04,0x04,0x02,0x02,0x00,0x00,0x20,0x20, +0x06,0x66,0xC6,0xC6,0xD8,0xD8,0x18,0x18,0x81,0x81,0xB1,0x8D,0x33,0x0C,0x00,0x60, +0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x80,0x00,0x00, +0xF8,0xF8,0x6C,0x6C,0xC6,0xC6,0x8F,0x8F,0x1F,0x1F,0x36,0x36,0x63,0x63,0xF1,0xF1, +0xAA,0xAA,0x00,0x00,0x88,0x88,0x14,0x14,0x22,0x22,0x41,0x41,0x88,0x88,0x00,0x00, +0x08,0x08,0x00,0x00,0xAA,0xAA,0x00,0x00,0x08,0x08,0x00,0x00,0x88,0x88,0x00,0x00, +0x77,0x77,0x98,0x98,0xF8,0xF8,0xF8,0xF8,0x77,0x77,0x89,0x89,0x8F,0x8F,0x8F,0x8F, +0x80,0x80,0x80,0x80,0x41,0x41,0x3E,0x3E,0x08,0x08,0x08,0x08,0x14,0x14,0xE3,0xE3, +0x81,0x81,0x42,0x42,0x24,0x24,0x18,0x18,0x06,0x06,0x01,0x01,0x80,0x80,0x80,0x80, +0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, +0x08,0x08,0x1C,0x1C,0x3E,0x3E,0x7F,0x7F,0xFF,0xFF,0x7F,0x7F,0x3E,0x3E,0x1C,0x1C, +0x11,0x11,0x22,0x22,0x44,0x44,0xFF,0xFF,0x88,0x88,0x44,0x44,0x22,0x22,0xFF,0xFF, +0x03,0x00,0x00,0x00,0x44,0x44,0x00,0x00,0x11,0x11,0x00,0x00,0x55,0x55,0x00,0x00, +0x55,0x55,0x88,0x88,0x55,0x55,0x22,0x22,0x55,0x55,0xAA,0xAA,0x55,0x55,0xAA,0xAA, +0x55,0x55,0xAA,0xAA,0xDD,0xDD,0xAA,0xAA,0x77,0x77,0xAA,0xAA,0xFF,0xFF,0xAA,0xAA, +0xFF,0xFF,0xEE,0xEE,0xFF,0xFF,0xBB,0xBB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0x07,0x00,0x01,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20, +0x40,0x40,0x80,0x80,0x60,0x60,0xC0,0xC0,0x81,0x81,0x03,0x03,0x06,0x06,0x0C,0x0C, +0x18,0x18,0x30,0x30,0x42,0x42,0x81,0x81,0x81,0x81,0x42,0x42,0x24,0x24,0x18,0x18, +0x18,0x18,0x24,0x24,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x0F,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00, +0x20,0x00,0x40,0x00,0x80,0x00,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10, +0x00,0x20,0x00,0x40,0x00,0x80,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00, +0x70,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x00,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38, +0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0x80,0x02,0x40,0x04,0x20,0x08,0x10,0x10,0x08, +0x20,0x04,0x40,0x02,0x80,0x01,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10, +0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80, +0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80, +0x00,0x80,0x00,0x80,0x00,0x80,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,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, +0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0xFF,0xFF,0x01,0x00,0x03,0x00,0x07,0x00, +0x0F,0x00,0x3F,0x01,0xC7,0x00,0x00,0x00,0x52,0x01,0x74,0x01,0x01,0x00,0x07,0x00, +0x00,0x00,0x06,0x00,0x08,0x00,0x01,0x00,0x18,0x00,0x0C,0x00,0x10,0x00,0x0A,0x00, +0x01,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x05,0x00,0x06,0x00,0x07,0x00,0x08,0x00, +0x09,0x00,0x0A,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00, +0x03,0x00,0x00,0x00,0x03,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00, +0x00,0x02,0x02,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x07,0x00, +0x00,0x00,0x07,0x00,0x01,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x0F,0x00,0x0B,0x00, +0x78,0x00,0x58,0x00,0x04,0x00,0x00,0x02,0x1F,0x00,0x00,0x00,0x04,0x00,0x01,0x00, +0xE8,0x03,0x01,0x00,0x01,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0xFF,0x02,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,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,0x01,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x00,0x00, +0xFD,0xFF,0x00,0x00,0x03,0x00,0x02,0x00,0xFC,0xFF,0x00,0x00,0x04,0x00,0x00,0x00, +0x03,0x00,0x02,0x00,0x00,0x00,0xFD,0xFF,0x00,0x00,0x03,0x00,0x02,0x00,0x03,0x00, +0x02,0x00,0xFD,0xFF,0xFE,0xFF,0x02,0x00,0x03,0x00,0xFE,0xFF,0xFD,0xFF,0x02,0x00, +0x01,0x00,0x05,0x00,0xFC,0xFF,0xFD,0xFF,0x04,0x00,0xFD,0xFF,0x04,0x00,0x03,0x00, +0xFC,0xFF,0x03,0x00,0xFC,0xFF,0xFD,0xFF,0x02,0x00,0x02,0x00,0xFC,0xFF,0xFD,0xFF, +0x04,0x00,0x03,0x00,0x02,0x00,0xFC,0xFF,0x03,0x00,0x04,0x00,0xFD,0xFF,0x01,0x00, +0x05,0x00,0xFC,0xFF,0x00,0x00,0x00,0x00,0xFD,0xFF,0x04,0x00,0x00,0x00,0x00,0x00, +0x03,0x00,0xFC,0xFF,0x00,0x00,0x00,0x00,0x0F,0x00,0x01,0x00,0x02,0x00,0x04,0x00, +0x06,0x00,0x03,0x00,0x05,0x00,0x07,0x00,0x08,0x00,0x09,0x00,0x0A,0x00,0x0C,0x00, +0x0E,0x00,0x0B,0x00,0x0D,0x00,0x00,0x00,0x02,0x00,0x03,0x00,0x06,0x00,0x04,0x00, +0x07,0x00,0x05,0x00,0x08,0x00,0x09,0x00,0x0A,0x00,0x0B,0x00,0x0E,0x00,0x0C,0x00, +0x0F,0x00,0x0D,0x00,0x01,0x00,0xFC,0x00,0xEE,0xB6,0xFC,0x00,0xF2,0xB9,0xFC,0x00, +0xAE,0xA6,0xFC,0x00,0xAC,0xA6,0xFC,0x00,0xD4,0x42,0xFC,0x00,0x3A,0xBA,0xFC,0x00, +0xD4,0xBA,0xFC,0x00,0xB0,0xD7,0xFC,0x00,0x1A,0xBC,0xFC,0x00,0xAC,0xA6,0xFC,0x00, +0x26,0xBC,0xFC,0x00,0x2A,0xE0,0xFC,0x00,0x9C,0xE4,0xFD,0x00,0x2C,0x2E,0xFC,0x00, +0xD0,0xAC,0xFC,0x00,0x1A,0xAD,0xFC,0x00,0xD6,0xAD,0xFC,0x00,0xB2,0xAE,0xFC,0x00, +0x26,0xAE,0xFC,0x00,0x02,0xAF,0xFC,0x00,0xD6,0xE4,0xFC,0x00,0xBA,0xE5,0xFC,0x00, +0x58,0xAF,0xFC,0x00,0xA4,0xAF,0xFC,0x00,0x0C,0xB0,0xFD,0x00,0xDE,0x2E,0xFC,0x00, +0xAC,0xA6,0xFC,0x00,0x5C,0xB0,0xFC,0x00,0xF2,0xB1,0xFC,0x00,0xFA,0xB1,0xFC,0x00, +0x84,0xB2,0xFC,0x00,0x88,0xB3,0xFC,0x00,0xE2,0xB3,0xFC,0x00,0xAC,0xA6,0xFC,0x00, +0xD8,0xBD,0xFC,0x00,0x34,0xBE,0xFC,0x00,0x94,0xBE,0xFC,0x00,0x0A,0xE6,0xFC,0x00, +0x40,0xE4,0xFC,0x00,0x6C,0xD6,0xFC,0x00,0xFE,0xD6,0xFC,0x00,0x2A,0xB9,0xFD,0x00, +0x3A,0x09,0xFC,0x00,0xB6,0xB4,0xFD,0x00,0x38,0x10,0xFC,0x00,0x0C,0xE4,0xFC,0x00, +0xC6,0xE2,0xFC,0x00,0x7A,0xAD,0xFC,0x00,0x04,0xB6,0xFD,0x00,0x8C,0x2D,0xFD,0x00, +0x24,0x03,0xFC,0x00,0x54,0xD7,0xFC,0x00,0xFC,0xB4,0xFC,0x00,0x6E,0xB6,0xFC,0x00, +0x50,0xB4,0xFC,0x00,0x84,0xE6,0xFC,0x00,0x4A,0xE8,0xFC,0x00,0xFE,0xA6,0xFC,0x00, +0x60,0xED,0xFC,0x00,0xF4,0xED,0xFC,0x00,0x36,0xB6,0xFC,0x00,0x7A,0xB1,0xFC,0x00, +0xA2,0xB1,0xFC,0x00,0xB0,0xB1,0xFC,0x00,0xC2,0xFF,0xFC,0x00,0xDA,0xFF,0xFC,0x00, +0xF2,0xFF,0xFC,0x00,0x64,0xB3,0xFC,0x00,0x14,0xB5,0xFC,0x00,0x24,0xE9,0xFC,0x00, +0xB4,0xE9,0x00,0x00,0x3C,0x02,0x78,0x04,0xB4,0x06,0xEE,0x08,0x28,0x0B,0x61,0x0D, +0x99,0x0F,0xD0,0x11,0x06,0x14,0x3A,0x16,0x6C,0x18,0x9D,0x1A,0xCB,0x1C,0xF7,0x1E, +0x21,0x21,0x48,0x23,0x6C,0x25,0x8E,0x27,0xAC,0x29,0xC7,0x2B,0xDF,0x2D,0xF3,0x2F, +0x03,0x32,0x10,0x34,0x18,0x36,0x1C,0x38,0x1C,0x3A,0x17,0x3C,0x0E,0x3E,0xFF,0x3F, +0xEC,0x41,0xD4,0x43,0xB6,0x45,0x93,0x47,0x6A,0x49,0x3C,0x4B,0x08,0x4D,0xCD,0x4E, +0x8D,0x50,0x46,0x52,0xF9,0x53,0xA5,0x55,0x4B,0x57,0xEA,0x58,0x82,0x5A,0x13,0x5C, +0x9C,0x5D,0x1F,0x5F,0x9A,0x60,0x0D,0x62,0x79,0x63,0xDD,0x64,0x39,0x66,0x8D,0x67, +0xD9,0x68,0x1D,0x6A,0x59,0x6B,0x8C,0x6C,0xB7,0x6D,0xD9,0x6E,0xF3,0x6F,0x04,0x71, +0x0C,0x72,0x0B,0x73,0x01,0x74,0xEE,0x74,0xD2,0x75,0xAD,0x76,0x7F,0x77,0x47,0x78, +0x06,0x79,0xBB,0x79,0x67,0x7A,0x0A,0x7B,0xA2,0x7B,0x32,0x7C,0xB7,0x7C,0x33,0x7D, +0xA5,0x7D,0x0D,0x7E,0x6C,0x7E,0xC0,0x7E,0x0B,0x7F,0x4B,0x7F,0x82,0x7F,0xAF,0x7F, +0xD2,0x7F,0xEB,0x7F,0xFA,0x7F,0xFF,0x7F,0xFF,0x7F,0xFC,0x00,0xF0,0xAB,0xFC,0x00, +0xF2,0xAB,0xFC,0x00,0x00,0xAC,0xFC,0x00,0x08,0xAC,0xFC,0x00,0x16,0xAC,0xFC,0x00, +0x0E,0xB4,0xFC,0x00,0x10,0xB4,0xFC,0x00,0x18,0xB4,0xFC,0x00,0x20,0xB4,0xFC,0x00, +0x28,0xB4,0xFC,0x00,0x74,0xB4,0xFC,0x00,0x76,0xB4,0xFC,0x00,0x7E,0xB4,0xFC,0x00, +0x86,0xB4,0xFC,0x00,0x8E,0xB4,0xFD,0x00,0xBE,0x36,0xFD,0x00,0xCA,0x36,0xFD,0x00, +0xE0,0x36,0xFD,0x00,0x00,0x37,0xFD,0x00,0x18,0x37,0xFD,0x00,0x2E,0x37,0xFC,0x00, +0x64,0xBC,0xFC,0x00,0xC2,0xBC,0xFC,0x00,0xC2,0xBC,0xFC,0x00,0xCA,0xBC,0xFC,0x00, +0x22,0xBD,0xFC,0x00,0x78,0xBD,0xFC,0x00,0x78,0xBD,0xFC,0x00,0x7E,0xBD,0xFC,0x00, +0xAA,0xBD,0xFC,0x00,0xB0,0xBD,0xFC,0x00,0x1C,0xCA,0xFC,0x00,0x26,0xCA,0xFC,0x00, +0x30,0xCA,0xFC,0x00,0x70,0xCA,0xFC,0x00,0xB0,0xCA,0xFC,0x00,0x8A,0xD9,0xFC,0x00, +0x9C,0xD9,0xFC,0x00,0xC6,0xD9,0xFC,0x00,0xEE,0xD9,0xFC,0x00,0xFE,0xD9,0xFC,0x00, +0x26,0xDA,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00, +0x00,0xC0,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xFC,0x00,0xFE,0x00,0xFF,0x80,0xFF, +0xC0,0xFF,0xE0,0xFF,0x00,0xFE,0x00,0xEF,0x00,0xCF,0x80,0x87,0x80,0x07,0x80,0x03, +0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x70,0x00,0x78,0x00,0x7C,0x00,0x7E,0x00,0x7F, +0x80,0x7F,0x00,0x7C,0x00,0x6C,0x00,0x46,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x00, +0x01,0x00,0x08,0x00,0x78,0x36,0x20,0x36,0x79,0x73,0x74,0x73,0x6D,0x65,0x66,0x20, +0x6E,0x6F,0x00,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x04,0x00,0x04,0x00,0x03,0x00,0x01,0x00, +0x01,0x00,0x05,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x55,0x55, +0xAA,0xAA,0x0C,0x00,0x00,0x00,0x00,0x00,0xFD,0x00,0xAA,0x3A,0xFD,0x00,0xAC,0x3C, +0xC0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0C,0x00, +0x12,0x00,0x18,0x00,0x1E,0x00,0x24,0x00,0x2A,0x00,0x30,0x00,0x36,0x00,0x3C,0x00, +0x42,0x00,0x48,0x00,0x4E,0x00,0x54,0x00,0x5A,0x00,0x60,0x00,0x66,0x00,0x6C,0x00, +0x72,0x00,0x78,0x00,0x7E,0x00,0x84,0x00,0x8A,0x00,0x90,0x00,0x96,0x00,0x9C,0x00, +0xA2,0x00,0xA8,0x00,0xAE,0x00,0xB4,0x00,0xBA,0x00,0xC0,0x00,0xC6,0x00,0xCC,0x00, +0xD2,0x00,0xD8,0x00,0xDE,0x00,0xE4,0x00,0xEA,0x00,0xF0,0x00,0xF6,0x00,0xFC,0x00, +0x02,0x01,0x08,0x01,0x0E,0x01,0x14,0x01,0x1A,0x01,0x20,0x01,0x26,0x01,0x2C,0x01, +0x32,0x01,0x38,0x01,0x3E,0x01,0x44,0x01,0x4A,0x01,0x50,0x01,0x56,0x01,0x5C,0x01, +0x62,0x01,0x68,0x01,0x6E,0x01,0x74,0x01,0x7A,0x01,0x80,0x01,0x86,0x01,0x8C,0x01, +0x92,0x01,0x98,0x01,0x9E,0x01,0xA4,0x01,0xAA,0x01,0xB0,0x01,0xB6,0x01,0xBC,0x01, +0xC2,0x01,0xC8,0x01,0xCE,0x01,0xD4,0x01,0xDA,0x01,0xE0,0x01,0xE6,0x01,0xEC,0x01, +0xF2,0x01,0xF8,0x01,0xFE,0x01,0x04,0x02,0x0A,0x02,0x10,0x02,0x16,0x02,0x1C,0x02, +0x22,0x02,0x28,0x02,0x2E,0x02,0x34,0x02,0x3A,0x02,0x40,0x02,0x46,0x02,0x4C,0x02, +0x52,0x02,0x58,0x02,0x5E,0x02,0x64,0x02,0x6A,0x02,0x70,0x02,0x76,0x02,0x7C,0x02, +0x82,0x02,0x88,0x02,0x8E,0x02,0x94,0x02,0x9A,0x02,0xA0,0x02,0xA6,0x02,0xAC,0x02, +0xB2,0x02,0xB8,0x02,0xBE,0x02,0xC4,0x02,0xCA,0x02,0xD0,0x02,0xD6,0x02,0xDC,0x02, +0xE2,0x02,0xE8,0x02,0xEE,0x02,0xF4,0x02,0xFA,0x02,0x00,0x03,0x06,0x03,0x0C,0x03, +0x12,0x03,0x18,0x03,0x1E,0x03,0x24,0x03,0x2A,0x03,0x30,0x03,0x36,0x03,0x3C,0x03, +0x42,0x03,0x48,0x03,0x4E,0x03,0x54,0x03,0x5A,0x03,0x60,0x03,0x66,0x03,0x6C,0x03, +0x72,0x03,0x78,0x03,0x7E,0x03,0x84,0x03,0x8A,0x03,0x90,0x03,0x96,0x03,0x9C,0x03, +0xA2,0x03,0xA8,0x03,0xAE,0x03,0xB4,0x03,0xBA,0x03,0xC0,0x03,0xC6,0x03,0xCC,0x03, +0xD2,0x03,0xD8,0x03,0xDE,0x03,0xE4,0x03,0xEA,0x03,0xF0,0x03,0xF6,0x03,0xFC,0x03, +0x02,0x04,0x08,0x04,0x0E,0x04,0x14,0x04,0x1A,0x04,0x20,0x04,0x26,0x04,0x2C,0x04, +0x32,0x04,0x38,0x04,0x3E,0x04,0x44,0x04,0x4A,0x04,0x50,0x04,0x56,0x04,0x5C,0x04, +0x62,0x04,0x68,0x04,0x6E,0x04,0x74,0x04,0x7A,0x04,0x80,0x04,0x86,0x04,0x8C,0x04, +0x92,0x04,0x98,0x04,0x9E,0x04,0xA4,0x04,0xAA,0x04,0xB0,0x04,0xB6,0x04,0xBC,0x04, +0xC2,0x04,0xC8,0x04,0xCE,0x04,0xD4,0x04,0xDA,0x04,0xE0,0x04,0xE6,0x04,0xEC,0x04, +0xF2,0x04,0xF8,0x04,0xFE,0x04,0x04,0x05,0x0A,0x05,0x10,0x05,0x16,0x05,0x1C,0x05, +0x22,0x05,0x28,0x05,0x2E,0x05,0x34,0x05,0x3A,0x05,0x40,0x05,0x46,0x05,0x4C,0x05, +0x52,0x05,0x58,0x05,0x5E,0x05,0x64,0x05,0x6A,0x05,0x70,0x05,0x76,0x05,0x7C,0x05, +0x82,0x05,0x88,0x05,0x8E,0x05,0x94,0x05,0x9A,0x05,0xA0,0x05,0xA6,0x05,0xAC,0x05, +0xB2,0x05,0xB8,0x05,0xBE,0x05,0xC4,0x05,0xCA,0x05,0xD0,0x05,0xD6,0x05,0xDC,0x05, +0xE2,0x05,0xE8,0x05,0xEE,0x05,0xF4,0x05,0xFA,0x05,0x00,0x06,0x82,0x00,0x21,0x04, +0xB6,0xCF,0xE3,0x0D,0xE3,0x04,0x50,0x81,0x87,0xF9,0xC3,0xBC,0x3E,0xCC,0xE0,0x73, +0x1F,0x38,0x42,0x84,0xCD,0x00,0x7B,0x94,0x0C,0x26,0x84,0x31,0x00,0x88,0x06,0x00, +0x4F,0x70,0x33,0x3C,0x3E,0xC7,0xC3,0x71,0x18,0x0C,0x1C,0x06,0xCF,0x71,0xF3,0x1E, +0x9E,0xEF,0xC0,0x89,0x42,0x92,0x9C,0x28,0xCF,0xF1,0xFA,0x1E,0xA2,0x28,0x2F,0x8A, +0xC1,0x9E,0x00,0xE2,0x08,0x60,0x08,0x00,0x80,0x01,0x01,0x80,0x60,0x20,0x00,0x00, +0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x31,0x0E,0x00,0xC4,0x41,0x79,0x51,0x08, +0x00,0x02,0x44,0x21,0x21,0x14,0x08,0x05,0x07,0x20,0x51,0x88,0x10,0x02,0x45,0x51, +0x1A,0x04,0x06,0x2F,0x41,0x10,0xF1,0x04,0x1C,0xE7,0x00,0x60,0xC0,0x30,0x6C,0xC3, +0xA3,0x69,0x01,0x42,0x1A,0xE4,0x41,0x69,0x69,0x08,0xBD,0xE7,0xA9,0x4B,0x7B,0xBC, +0x1C,0xFF,0xFC,0x7B,0xF3,0x1E,0x8E,0x0D,0xBF,0xF9,0xF9,0xB6,0x5E,0xCD,0xE0,0x3B, +0xD8,0x3E,0x00,0xC0,0xCF,0x01,0xF8,0xC0,0x00,0xE0,0xC7,0x71,0x18,0x0C,0x8C,0x83, +0x86,0x78,0x0C,0x06,0x1A,0xC2,0xC0,0x30,0x71,0x00,0x3E,0xC7,0xC2,0x01,0x62,0x06, +0x2A,0xAF,0x17,0x1A,0x82,0x86,0x50,0x01,0x80,0xC8,0xC2,0x84,0x02,0x0C,0x67,0x53, +0x3F,0x20,0xF4,0x42,0xCD,0x00,0xA3,0xBE,0x0C,0x4D,0xC3,0x60,0x00,0x08,0x0C,0x00, +0xC0,0x98,0x52,0x82,0x02,0x08,0x23,0x8A,0x31,0x0C,0x26,0xE3,0x28,0x8A,0x8A,0xA0, +0x20,0x08,0x80,0x88,0x43,0x94,0xA2,0x6C,0x28,0x8A,0x22,0xA0,0xA2,0x28,0x21,0x52, +0x60,0x18,0x00,0x67,0xCF,0x61,0x79,0x1C,0x1E,0xC2,0x81,0xB1,0x21,0x24,0x1C,0x4F, +0xE7,0xF1,0x72,0x0E,0xA2,0x28,0x27,0x4A,0x30,0x8C,0x88,0xCE,0x02,0x80,0x00,0x14, +0x1E,0x80,0x02,0x50,0x50,0x00,0x00,0x80,0xCA,0xFB,0x00,0x14,0x08,0x85,0x00,0x00, +0x23,0x0E,0x88,0x6D,0x82,0x20,0x00,0x08,0xA2,0x00,0x00,0x00,0xC0,0x30,0xF6,0x06, +0xC4,0xB2,0x72,0x8C,0x2C,0xC2,0x02,0xB0,0xEB,0x1C,0xD7,0x38,0x2D,0x01,0x08,0x8C, +0x8C,0x61,0xBD,0x31,0x1B,0x86,0xC6,0xE7,0xB9,0xD9,0x18,0xB6,0x56,0x6D,0x6F,0x18, +0xD8,0xE6,0x16,0xA2,0x66,0x6B,0x61,0xFE,0xBE,0xC6,0x6D,0x73,0x21,0x9A,0x12,0xC4, +0xE1,0x03,0x10,0x98,0x2C,0xC0,0xE0,0x49,0x68,0x07,0x00,0x63,0x62,0x03,0xDF,0x3B, +0x1C,0x6E,0x97,0xB2,0xDE,0x84,0x50,0xE1,0x8F,0xC8,0xC3,0xBE,0x8E,0xEF,0x20,0x73, +0x60,0xB7,0x94,0x62,0xC9,0x00,0x70,0x14,0x18,0x86,0xC7,0x60,0x01,0xBE,0x18,0xE0, +0x47,0xA8,0x93,0x1C,0x04,0xCF,0xE0,0x71,0x60,0x00,0x8C,0x01,0xEF,0xBB,0x8B,0x20, +0x26,0xCF,0x80,0xF8,0x42,0x98,0xA2,0xAA,0x2F,0xF2,0x22,0x1C,0xAA,0x28,0x42,0x21, +0x30,0x18,0x80,0x6D,0x28,0x30,0x8B,0xA0,0xA2,0xE7,0x81,0xC8,0x23,0x38,0xA2,0xE8, +0x24,0x8A,0x22,0x98,0xAA,0x28,0x21,0x32,0x30,0x18,0x9C,0x6B,0x27,0x82,0x71,0x1C, +0x20,0xC7,0xC7,0x71,0x21,0x18,0x1C,0x87,0xEF,0x80,0x71,0x9C,0xA2,0xC8,0xC8,0x89, +0x71,0x98,0x1E,0xCF,0x87,0x71,0xF1,0x22,0xA2,0x2F,0xE7,0x61,0xCC,0xB6,0x9B,0xCD, +0xC5,0x71,0xBA,0x96,0x1C,0xE7,0x00,0x70,0xEA,0x08,0x55,0xDB,0x27,0x49,0x18,0x0C, +0x8C,0x6D,0xBD,0x19,0x18,0x86,0x46,0x66,0xBD,0xD9,0xD8,0x9C,0x56,0x6F,0x66,0x18, +0x71,0xF6,0x2D,0xC7,0xC6,0xD3,0x33,0x54,0x8C,0x66,0xED,0xAB,0x72,0x9C,0x92,0xA7, +0x86,0x78,0x30,0x06,0x80,0xCF,0xC3,0x30,0x68,0x04,0x00,0xC1,0x8D,0x00,0x62,0x86, +0xAA,0xAC,0xDF,0xE2,0x93,0xDC,0x58,0xA3,0xCC,0xD9,0xD8,0x06,0x8C,0x69,0xEF,0xDB, +0x40,0xA4,0x68,0x21,0xC0,0x00,0x29,0x3E,0x80,0x6E,0xC3,0x60,0x30,0x08,0x30,0x03, +0x48,0xC8,0xF8,0x02,0x88,0x28,0x23,0x88,0x31,0x0C,0x0C,0xE3,0x28,0xB2,0x8A,0xA0, +0x22,0x08,0x88,0x88,0x42,0x94,0xA2,0x29,0x2A,0x82,0x22,0x02,0x36,0x25,0x84,0x50, +0x18,0x18,0x00,0x60,0xE8,0x03,0x8A,0xA0,0x1E,0x02,0x81,0x88,0x22,0x24,0xA2,0xA8, +0x24,0x8A,0x22,0x06,0x2A,0x25,0xE2,0x31,0x30,0x0C,0x32,0xC1,0x2F,0x82,0x08,0x82, +0xA0,0x20,0xEF,0xFB,0x20,0x88,0xA2,0x88,0x8A,0xF3,0x8A,0x22,0xA2,0x28,0x28,0x7A, +0x20,0x8E,0x88,0x8D,0x88,0x08,0x89,0xA2,0x9C,0xA7,0x00,0x61,0x14,0x8B,0xF6,0xC6, +0x26,0x0A,0xA2,0x9A,0xA2,0xC8,0x00,0x88,0x6A,0x08,0xC0,0xF8,0xAD,0x4B,0x38,0x8C, +0x8C,0x6D,0xBD,0x19,0x18,0x80,0x46,0x66,0xB1,0xD9,0xD0,0x8E,0x56,0x6C,0x66,0x18, +0x31,0xC6,0xAD,0xCD,0x66,0xD3,0x63,0x14,0x8C,0x66,0x65,0xAB,0xAA,0x36,0x12,0xA4, +0x00,0x00,0x30,0x00,0x1A,0xC0,0x03,0x00,0x69,0x34,0x00,0xE7,0x87,0x00,0x21,0x04, +0xB6,0xC9,0x10,0x42,0x18,0x3C,0x5C,0xE7,0xCC,0xD9,0xF8,0x06,0x8C,0x6D,0x67,0xD8, +0x71,0x3C,0xF0,0xEE,0x00,0x00,0xF2,0x14,0x00,0x6D,0x84,0x31,0x30,0x88,0x20,0x03, +0x4F,0x70,0x13,0xBC,0x08,0xC7,0xC3,0x71,0x18,0x04,0x00,0x06,0x2F,0x82,0xF3,0x1E, +0x1E,0xE8,0xC7,0x89,0x7A,0x12,0x9C,0x28,0xC9,0x81,0x21,0xBC,0x22,0xE2,0x8F,0x88, +0x09,0x9E,0x00,0xE0,0xEF,0x01,0x79,0x1C,0x02,0xC2,0xC1,0x89,0x72,0x22,0x9C,0x28, +0xE4,0xF1,0x11,0x1C,0x36,0xE2,0x27,0x48,0x31,0x8E,0x3E,0xC0,0x28,0x7A,0xFB,0x3E, +0x9E,0xEF,0x08,0x82,0x20,0x08,0xBE,0x8F,0xEB,0x81,0x8A,0xA2,0xA2,0x28,0x28,0x0A, +0x79,0x84,0x08,0xCF,0x88,0xF8,0x89,0xA2,0x00,0x60,0x00,0xC9,0x3C,0x86,0x6C,0xC3, +0x24,0xFA,0x79,0x8C,0xBE,0xEF,0x00,0x88,0x2B,0x08,0x40,0x1A,0x2C,0x48,0x68,0xBE, +0x8C,0x6D,0xBF,0x19,0xF1,0x80,0xDE,0xE6,0xFF,0x73,0xC0,0xBE,0xF6,0x6F,0x67,0x18, +0x32,0xC6,0x9A,0x88,0xC6,0x6B,0xC1,0x14,0xCC,0xC7,0xCD,0x71,0x71,0xB6,0x92,0xC3, +0xE7,0x7B,0x30,0x9E,0x2C,0x82,0x00,0x00,0x00,0x1C,0x00,0x00,0x82,0x00,0x00,0x00, +0x00,0x00,0xE3,0x01,0x10,0x18,0x4C,0xB6,0xCF,0xF9,0x1B,0xBE,0x8C,0xEF,0x60,0xF8, +0x58,0x07,0x00,0xAC,0xC0,0x00,0x20,0x00,0x80,0x06,0x00,0x00,0x60,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x00,0x00,0x78,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x0E,0x00,0x00,0x00,0x00,0x00, +0x20,0x80,0x00,0x00,0x00,0x00,0xC0,0x03,0x30,0x00,0x00,0x00,0xE7,0xC1,0x79,0x1E, +0xB8,0xE7,0xC7,0x71,0x71,0x1C,0xA2,0xC8,0x00,0xF8,0x71,0x1C,0x9E,0xC7,0xC7,0xF1, +0x00,0x80,0x30,0x8C,0xC7,0x79,0x89,0x1E,0xBE,0x2F,0x00,0x70,0x04,0x0F,0x00,0xC0, +0xCB,0x79,0x00,0x10,0xA2,0x08,0x00,0x70,0x29,0x00,0x80,0xE7,0xC0,0x10,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00, +0x01,0x00,0x00,0x80,0x06,0x03,0xF8,0x00,0x08,0x0C,0x00,0x70,0xC0,0x1C,0x00,0x80, +0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x09,0x00, +0x78,0x38,0x20,0x38,0x79,0x73,0x74,0x73,0x6D,0x65,0x66,0x20,0x6E,0x6F,0x00,0x74, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xFF,0x00,0x06,0x00,0x06,0x00,0x04,0x00,0x01,0x00,0x01,0x00,0x07,0x00, +0x08,0x00,0x01,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x55,0x55,0x55,0x55,0x0D,0x00, +0x00,0x00,0x00,0x00,0xFD,0x00,0x86,0x41,0xFD,0x00,0x88,0x43,0x00,0x01,0x08,0x00, +0x00,0x00,0xD4,0x87,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x18,0x00,0x20,0x00, +0x28,0x00,0x30,0x00,0x38,0x00,0x40,0x00,0x48,0x00,0x50,0x00,0x58,0x00,0x60,0x00, +0x68,0x00,0x70,0x00,0x78,0x00,0x80,0x00,0x88,0x00,0x90,0x00,0x98,0x00,0xA0,0x00, +0xA8,0x00,0xB0,0x00,0xB8,0x00,0xC0,0x00,0xC8,0x00,0xD0,0x00,0xD8,0x00,0xE0,0x00, +0xE8,0x00,0xF0,0x00,0xF8,0x00,0x00,0x01,0x08,0x01,0x10,0x01,0x18,0x01,0x20,0x01, +0x28,0x01,0x30,0x01,0x38,0x01,0x40,0x01,0x48,0x01,0x50,0x01,0x58,0x01,0x60,0x01, +0x68,0x01,0x70,0x01,0x78,0x01,0x80,0x01,0x88,0x01,0x90,0x01,0x98,0x01,0xA0,0x01, +0xA8,0x01,0xB0,0x01,0xB8,0x01,0xC0,0x01,0xC8,0x01,0xD0,0x01,0xD8,0x01,0xE0,0x01, +0xE8,0x01,0xF0,0x01,0xF8,0x01,0x00,0x02,0x08,0x02,0x10,0x02,0x18,0x02,0x20,0x02, +0x28,0x02,0x30,0x02,0x38,0x02,0x40,0x02,0x48,0x02,0x50,0x02,0x58,0x02,0x60,0x02, +0x68,0x02,0x70,0x02,0x78,0x02,0x80,0x02,0x88,0x02,0x90,0x02,0x98,0x02,0xA0,0x02, +0xA8,0x02,0xB0,0x02,0xB8,0x02,0xC0,0x02,0xC8,0x02,0xD0,0x02,0xD8,0x02,0xE0,0x02, +0xE8,0x02,0xF0,0x02,0xF8,0x02,0x00,0x03,0x08,0x03,0x10,0x03,0x18,0x03,0x20,0x03, +0x28,0x03,0x30,0x03,0x38,0x03,0x40,0x03,0x48,0x03,0x50,0x03,0x58,0x03,0x60,0x03, +0x68,0x03,0x70,0x03,0x78,0x03,0x80,0x03,0x88,0x03,0x90,0x03,0x98,0x03,0xA0,0x03, +0xA8,0x03,0xB0,0x03,0xB8,0x03,0xC0,0x03,0xC8,0x03,0xD0,0x03,0xD8,0x03,0xE0,0x03, +0xE8,0x03,0xF0,0x03,0xF8,0x03,0x00,0x04,0x08,0x04,0x10,0x04,0x18,0x04,0x20,0x04, +0x28,0x04,0x30,0x04,0x38,0x04,0x40,0x04,0x48,0x04,0x50,0x04,0x58,0x04,0x60,0x04, +0x68,0x04,0x70,0x04,0x78,0x04,0x80,0x04,0x88,0x04,0x90,0x04,0x98,0x04,0xA0,0x04, +0xA8,0x04,0xB0,0x04,0xB8,0x04,0xC0,0x04,0xC8,0x04,0xD0,0x04,0xD8,0x04,0xE0,0x04, +0xE8,0x04,0xF0,0x04,0xF8,0x04,0x00,0x05,0x08,0x05,0x10,0x05,0x18,0x05,0x20,0x05, +0x28,0x05,0x30,0x05,0x38,0x05,0x40,0x05,0x48,0x05,0x50,0x05,0x58,0x05,0x60,0x05, +0x68,0x05,0x70,0x05,0x78,0x05,0x80,0x05,0x88,0x05,0x90,0x05,0x98,0x05,0xA0,0x05, +0xA8,0x05,0xB0,0x05,0xB8,0x05,0xC0,0x05,0xC8,0x05,0xD0,0x05,0xD8,0x05,0xE0,0x05, +0xE8,0x05,0xF0,0x05,0xF8,0x05,0x00,0x06,0x08,0x06,0x10,0x06,0x18,0x06,0x20,0x06, +0x28,0x06,0x30,0x06,0x38,0x06,0x40,0x06,0x48,0x06,0x50,0x06,0x58,0x06,0x60,0x06, +0x68,0x06,0x70,0x06,0x78,0x06,0x80,0x06,0x88,0x06,0x90,0x06,0x98,0x06,0xA0,0x06, +0xA8,0x06,0xB0,0x06,0xB8,0x06,0xC0,0x06,0xC8,0x06,0xD0,0x06,0xD8,0x06,0xE0,0x06, +0xE8,0x06,0xF0,0x06,0xF8,0x06,0x00,0x07,0x08,0x07,0x10,0x07,0x18,0x07,0x20,0x07, +0x28,0x07,0x30,0x07,0x38,0x07,0x40,0x07,0x48,0x07,0x50,0x07,0x58,0x07,0x60,0x07, +0x68,0x07,0x70,0x07,0x78,0x07,0x80,0x07,0x88,0x07,0x90,0x07,0x98,0x07,0xA0,0x07, +0xA8,0x07,0xB0,0x07,0xB8,0x07,0xC0,0x07,0xC8,0x07,0xD0,0x07,0xD8,0x07,0xE0,0x07, +0xE8,0x07,0xF0,0x07,0xF8,0x07,0x00,0x08,0x18,0x00,0x18,0x3C,0x3C,0x18,0xE7,0xFF, +0x7E,0x01,0x18,0x18,0xF0,0xF0,0xA0,0x05,0x06,0x7C,0x7C,0x7C,0x7C,0xC6,0x7C,0x7C, +0x7C,0x7C,0x78,0x00,0xF0,0x07,0x04,0x11,0x18,0x00,0x00,0x66,0x00,0x18,0x18,0x38, +0x70,0x0E,0x00,0x00,0x00,0x00,0x02,0x00,0x18,0x3C,0x7E,0x3C,0x7E,0x0C,0x7E,0x3C, +0x3C,0x3C,0x00,0x00,0x00,0x06,0x3C,0x60,0x18,0x3C,0x3C,0x7C,0x7E,0x78,0x3E,0x7E, +0x3C,0x66,0x66,0x06,0xC6,0x60,0x3C,0x66,0x3C,0x7C,0x3C,0x7C,0x66,0x7E,0xC6,0x66, +0x66,0x66,0x1E,0x7E,0x78,0x40,0x00,0x10,0x00,0x00,0x00,0x60,0x00,0x06,0x00,0x1C, +0x18,0x60,0x60,0x18,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x0E,0x00,0x70,0x18,0x00,0x00,0x66,0x00,0x18,0x0C,0x30,0x66,0x00,0x18, +0x66,0x18,0x66,0x30,0x60,0x18,0x18,0x66,0x00,0x0C,0x18,0x3F,0x30,0x66,0x30,0x18, +0x66,0x66,0x18,0x66,0x66,0x1C,0x1E,0x1C,0x0C,0x0C,0x0C,0x0C,0x34,0x34,0x00,0x00, +0x00,0x00,0xC6,0x00,0x00,0xC6,0xD8,0x1B,0x34,0x34,0x00,0x02,0x7F,0x00,0x34,0x30, +0x66,0x34,0x00,0x0C,0x7E,0x7A,0xF1,0x7E,0xF6,0x66,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x0E,0x00,0x66,0x00,0x1C,0x00,0x00,0x00,0x00,0xFE,0x00,0x00, +0x00,0x3C,0x1C,0x00,0x00,0x0C,0x3C,0x3E,0x18,0x00,0x0C,0x30,0x18,0x00,0x00,0x18, +0x38,0x38,0x00,0x00,0x38,0x38,0x00,0x78,0x3C,0x00,0x1C,0x24,0x99,0x38,0xC3,0xFF, +0xC3,0x03,0x1C,0x3C,0xC0,0xC0,0xA0,0x05,0x06,0xC6,0x06,0x06,0xC0,0xC6,0x06,0xC0, +0xC6,0xC6,0x60,0x00,0xF8,0x0F,0x28,0x0B,0x18,0x00,0x6C,0x66,0x66,0x3E,0x18,0x6C, +0x38,0x1C,0x18,0x66,0x00,0x00,0x06,0x00,0x38,0x66,0x0C,0x66,0x60,0x1C,0x06,0x60, +0x66,0x66,0x18,0x18,0x00,0x0C,0x66,0x30,0x3C,0x66,0x66,0x66,0x60,0x6C,0x60,0x60, +0x18,0x66,0x6C,0x06,0xEE,0x60,0x66,0x76,0x66,0x66,0x66,0x66,0x66,0x18,0xC6,0x66, +0x66,0x66,0x18,0x06,0x18,0x60,0x00,0x38,0x00,0xC0,0x00,0x60,0x00,0x06,0x00,0x30, +0x00,0x60,0x60,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, +0x00,0x00,0x18,0x00,0x18,0x18,0x18,0x60,0x00,0x3C,0x66,0x18,0x18,0x00,0x00,0x18, +0x00,0x66,0x00,0x18,0x30,0x66,0x00,0x00,0x00,0x18,0x66,0x78,0x18,0x00,0x18,0x66, +0x00,0x00,0x18,0x00,0x66,0x3A,0x30,0x36,0x18,0x18,0x18,0x18,0x58,0x58,0x3C,0x3C, +0x00,0x18,0xCC,0x00,0x18,0xCC,0x6C,0x36,0x58,0x58,0x02,0x3C,0xD8,0x00,0x58,0x18, +0x00,0x58,0x10,0x18,0xC3,0xCA,0x5B,0xC3,0x66,0x00,0x7C,0x66,0x7E,0x1E,0x1C,0x7C, +0x7E,0x1E,0x3C,0x6E,0x7E,0x3E,0x1C,0x6C,0x36,0x3E,0x66,0x7E,0x78,0x3E,0x7C,0xD6, +0x3E,0x1C,0x7E,0xFE,0x1B,0x36,0xF7,0x10,0x36,0x00,0x00,0xFE,0x1E,0x66,0x00,0x00, +0x3C,0x18,0x36,0x3C,0x10,0x18,0x66,0x70,0x18,0x7E,0x18,0x18,0x18,0x0E,0x32,0x18, +0x7C,0x6C,0x00,0x00,0x6C,0x6C,0xFE,0x0C,0x66,0x00,0xF6,0x24,0xC3,0x6F,0x99,0xFE, +0xD3,0x06,0x16,0x3C,0xDF,0xFE,0xA0,0x05,0x06,0xC6,0x06,0x06,0xC0,0xC6,0x06,0xC0, +0xC6,0xC6,0x78,0x3C,0xEC,0x1F,0xD8,0x0D,0x18,0x00,0xFE,0x66,0x6C,0x60,0x18,0x38, +0x18,0x18,0x18,0x3C,0x00,0x00,0x0C,0x00,0x18,0x6E,0x18,0x06,0x7C,0x3C,0x0C,0x60, +0x66,0x66,0x18,0x18,0x7E,0x18,0x06,0x18,0x66,0x6E,0x60,0x66,0x60,0x66,0x60,0x60, +0x18,0x66,0x78,0x06,0xFE,0x60,0x66,0x7E,0x66,0x66,0x60,0x66,0x66,0x18,0xC6,0x66, +0x66,0x3C,0x18,0x0C,0x18,0x30,0x00,0x6C,0x3C,0x60,0x3C,0x7C,0x3C,0x3E,0x3E,0x7C, +0x38,0x7C,0x66,0x18,0xEC,0x18,0x3C,0x7C,0x3E,0x7C,0x3E,0x7C,0x66,0x7E,0xC6,0x66, +0x66,0x66,0x18,0x7E,0x18,0x18,0x18,0xF2,0x00,0x66,0x00,0x00,0x00,0x3C,0x3C,0x00, +0x3C,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x7E,0x00,0xD8,0x00,0x00,0x00,0x00, +0x3C,0x66,0x3C,0x66,0x3C,0x30,0x7C,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x06, +0x00,0x00,0xD8,0x00,0x00,0xD8,0x36,0x6C,0x00,0x00,0x3C,0x66,0xD8,0x7E,0x00,0x00, +0x00,0x3C,0x38,0x30,0xBD,0xCA,0x5F,0xBD,0x66,0xE6,0x0C,0x76,0x0C,0x06,0x0C,0x06, +0x36,0x0C,0x0C,0x66,0x06,0x06,0x0C,0x3E,0x36,0x36,0x66,0x66,0x0C,0x06,0x6C,0xD6, +0x06,0x0C,0x66,0x66,0x3C,0x36,0x99,0x38,0x66,0x76,0xFE,0x66,0x38,0x30,0x7E,0x6C, +0x66,0x3C,0x78,0x66,0x7C,0x38,0x66,0x60,0x7E,0x00,0x30,0x0C,0x18,0x1B,0x4C,0x00, +0x38,0x38,0x0F,0x00,0x18,0x6C,0x00,0x38,0xC3,0x00,0x83,0xE7,0xE7,0xC1,0x3C,0xFC, +0xD3,0x8C,0x10,0x3C,0xDB,0xD8,0xB0,0x0D,0x00,0x00,0x7C,0x7C,0x7C,0x7C,0x00,0x7C, +0x7C,0x7C,0x60,0x06,0x04,0x18,0x28,0x06,0x18,0x00,0x6C,0x00,0x18,0x3C,0x00,0x70, +0x18,0x18,0x7E,0xFF,0x7E,0x00,0x18,0x00,0x18,0x76,0x0C,0x0C,0x06,0x6C,0x18,0x7C, +0x3E,0x3C,0x00,0x00,0x00,0x30,0x0C,0x0C,0x66,0x6A,0x60,0x7C,0x7C,0x66,0x6E,0x7C, +0x18,0x7E,0x70,0x06,0xD6,0x60,0x66,0x7E,0x66,0x7C,0x3C,0x7C,0x66,0x18,0xD6,0x66, +0x3C,0x18,0x18,0x18,0x18,0x18,0x00,0xC6,0x06,0x30,0x60,0x66,0x66,0x66,0x66,0x30, +0x18,0x66,0x6C,0x18,0xFE,0x18,0x66,0x66,0x66,0x66,0x60,0x66,0x66,0x18,0xC6,0x66, +0x66,0x3C,0x30,0x0C,0x0C,0x18,0x34,0x9E,0x66,0x60,0x3C,0x3C,0x3C,0x06,0x60,0x3C, +0x66,0x3C,0x38,0x3C,0x38,0x38,0x3C,0x3C,0x1B,0x60,0x3C,0xDE,0x3C,0x3C,0x66,0x66, +0x66,0x66,0x60,0x66,0x18,0x7C,0x30,0x7C,0x38,0x3C,0x66,0x3C,0x66,0x7C,0x66,0x3E, +0x3E,0x18,0x36,0x7C,0x18,0x36,0x1B,0xD8,0x3C,0x3C,0x6E,0x6E,0xDE,0xDB,0x18,0x18, +0x00,0x66,0x10,0x00,0xB1,0xCA,0x55,0xA5,0x66,0x66,0x0C,0x3C,0x0C,0x0E,0x0C,0x66, +0x36,0x06,0x0C,0x66,0x06,0x06,0x0C,0x66,0x36,0x36,0x3C,0x76,0x0C,0x36,0x6C,0xD6, +0x06,0x0C,0x76,0x66,0x66,0x1C,0x99,0x6C,0x7C,0xDC,0x6C,0x62,0x6C,0x18,0x18,0x6C, +0x7E,0x66,0xDC,0x66,0xD6,0x54,0x66,0x7E,0x18,0x7E,0x18,0x18,0x18,0x1B,0x00,0x7E, +0x00,0x00,0x18,0x00,0x30,0x6C,0x00,0x0C,0xE7,0x00,0x83,0xC3,0xC3,0xC1,0x99,0xF9, +0xDB,0xD8,0x10,0x7E,0xFF,0xDE,0xB0,0x0D,0x06,0xC6,0x06,0xC0,0x06,0x06,0x06,0xC6, +0x06,0xC6,0x7E,0x7E,0x04,0x18,0xD0,0x07,0x18,0x00,0x6C,0x00,0x30,0x06,0x00,0xDE, +0x18,0x18,0x18,0x3C,0x00,0x00,0x30,0x00,0x18,0x66,0x06,0x18,0x06,0x7E,0x30,0x66, +0x06,0x66,0x18,0x18,0x00,0x18,0x18,0x18,0x7E,0x6E,0x60,0x66,0x60,0x66,0x66,0x60, +0x18,0x66,0x78,0x06,0xC6,0x60,0x66,0x6E,0x76,0x60,0x06,0x6C,0x66,0x18,0xFE,0x66, +0x18,0x3C,0x18,0x30,0x18,0x0C,0x00,0x00,0x3E,0x00,0x60,0x66,0x7E,0x66,0x66,0x30, +0x18,0x66,0x78,0x18,0xD6,0x18,0x66,0x66,0x66,0x66,0x3C,0x60,0x66,0x18,0xD6,0x66, +0x66,0x18,0x18,0x18,0x18,0x18,0x34,0x0C,0x66,0x66,0x06,0x7E,0x06,0x3E,0x60,0x06, +0x7E,0x7E,0x18,0x7E,0x18,0x18,0x66,0x66,0x7F,0x7C,0x66,0xF8,0x66,0x66,0x66,0x66, +0x66,0x66,0x60,0x66,0x3C,0x30,0x30,0x66,0x18,0x06,0x66,0x66,0x76,0x66,0x66,0x66, +0x30,0x30,0x6B,0x0C,0x18,0x6E,0x36,0x6C,0x66,0x06,0x76,0x76,0xD8,0xDF,0x3C,0x3C, +0x00,0x66,0x10,0x00,0xB1,0x7A,0x51,0xB9,0x66,0x66,0x0C,0x6E,0x0C,0x1E,0x0C,0x66, +0x36,0x06,0x00,0x66,0x06,0x06,0x0C,0x66,0x36,0x36,0x0E,0x06,0x0C,0x36,0x6C,0xD6, +0x06,0x0C,0x06,0x66,0x66,0x0C,0xEF,0xC6,0x66,0xC8,0x6C,0x60,0x6C,0x30,0x18,0x6C, +0x66,0x66,0xCC,0x66,0xD6,0x54,0x66,0x60,0x18,0x00,0x0C,0x30,0xD8,0x18,0x32,0x00, +0x00,0x00,0xD8,0x18,0x7C,0x6C,0x00,0x78,0x24,0x00,0xF6,0x66,0x99,0x6F,0xC3,0xF3, +0xC3,0x70,0x70,0x10,0x1E,0x18,0x98,0x19,0x06,0xC6,0x06,0xC0,0x06,0x06,0x06,0xC6, +0x06,0xC6,0x18,0x66,0x04,0x10,0x10,0x2E,0x00,0x00,0xFE,0x00,0x66,0x7C,0x00,0xCC, +0x38,0x1C,0x18,0x66,0x00,0x30,0x60,0x18,0x18,0x66,0x66,0x30,0x66,0x0C,0x30,0x66, +0x0C,0x66,0x18,0x18,0x7E,0x0C,0x00,0x30,0x66,0x60,0x66,0x66,0x60,0x6C,0x66,0x60, +0x18,0x66,0x6C,0x66,0xC6,0x60,0x66,0x66,0x6C,0x60,0x66,0x66,0x66,0x18,0xEE,0x3C, +0x18,0x66,0x18,0x60,0x18,0x06,0x00,0x00,0x66,0x00,0x60,0x66,0x60,0x66,0x3E,0x30, +0x18,0x66,0x6C,0x18,0xC6,0x18,0x66,0x66,0x66,0x66,0x06,0x60,0x66,0x18,0x7C,0x3C, +0x3E,0x3C,0x18,0x30,0x18,0x18,0x62,0x00,0x66,0x3C,0x7E,0x60,0x7E,0x66,0x3C,0x7E, +0x60,0x60,0x18,0x60,0x18,0x18,0x7E,0x7E,0xD8,0x60,0x66,0xD8,0x66,0x66,0x66,0x66, +0x66,0x3E,0x3C,0x66,0x18,0x30,0x30,0x66,0x18,0x7E,0x66,0x66,0x6E,0x66,0x3C,0x3E, +0x30,0x60,0xC3,0x0C,0x18,0xD6,0x6C,0x36,0x66,0x7E,0x66,0x66,0xD8,0xD8,0x66,0x66, +0x00,0x66,0x10,0x00,0xBD,0x0A,0x00,0xAD,0xF6,0xF6,0x7E,0x66,0x0C,0x36,0x0C,0x66, +0x36,0x06,0x00,0x7E,0x0E,0x3E,0x3C,0x6E,0x7E,0x1C,0x7E,0x7E,0x0C,0x34,0xEC,0xFE, +0x06,0x0C,0x06,0x7E,0x3C,0x0C,0x66,0x82,0x66,0xDC,0x6C,0x60,0x6C,0x66,0x18,0x6C, +0x66,0x3C,0xEC,0x24,0xD6,0x38,0x66,0x70,0x00,0x7E,0x00,0x00,0xD8,0x18,0x4C,0x18, +0x00,0x00,0x70,0x18,0x00,0x00,0x00,0x00,0x24,0x00,0x1C,0x3C,0x3C,0x38,0xE7,0xE7, +0xC3,0x20,0xF0,0x38,0x1B,0x18,0x9E,0x79,0x06,0x7C,0x7C,0x7C,0x7C,0x06,0x06,0x7C, +0x7C,0x7C,0x1E,0x3C,0x3C,0x1E,0xE0,0x39,0x18,0x00,0x6C,0x00,0x46,0x18,0x00,0x76, +0x70,0x0E,0x00,0x00,0x00,0x30,0x40,0x18,0x7E,0x3C,0x3C,0x7E,0x3C,0x0C,0x30,0x3C, +0x38,0x3C,0x30,0x00,0x00,0x06,0x18,0x60,0x66,0x3E,0x3C,0x7C,0x7E,0x78,0x3E,0x60, +0x3C,0x66,0x66,0x3C,0xC6,0x7E,0x3C,0x66,0x36,0x60,0x3C,0x66,0x3E,0x18,0xC6,0x18, +0x18,0x66,0x1E,0x7E,0x78,0x02,0xFE,0x00,0x3E,0x00,0x3C,0x7C,0x3C,0x3E,0x06,0x30, +0x3C,0x66,0x66,0x18,0xC6,0x3C,0x3C,0x66,0x3E,0x7C,0x7C,0x60,0x3E,0x0E,0x6C,0x18, +0x06,0x66,0x0E,0x7E,0x70,0x18,0x7E,0x00,0x3E,0x08,0x3E,0x3C,0x3E,0x3E,0x08,0x3E, +0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x66,0x66,0x7E,0x7E,0x3C,0xDF,0x3C,0x3C,0x3E,0x3E, +0x3C,0x06,0x18,0x3E,0x18,0x7E,0x60,0x7C,0x3C,0x3E,0x3E,0x3C,0x66,0x66,0x00,0x00, +0x30,0x66,0x86,0x0C,0x18,0x9F,0xD8,0x1B,0x3C,0x3E,0x3C,0x3C,0x7F,0x7E,0x7E,0x7E, +0x00,0x66,0x00,0x00,0xC3,0x0A,0x00,0xC3,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00, +0x06,0x0C,0x06,0x00,0xD8,0x0C,0x00,0x00,0x7C,0x76,0x6C,0x60,0x38,0xFE,0x18,0x7F, +0x3C,0x18,0x78,0x66,0x7C,0x30,0x66,0x3E,0x7E,0x00,0x7E,0x7E,0x70,0x18,0x00,0x18, +0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x18,0x18,0x00,0x18,0x00,0x00, +0x7E,0x00,0x60,0x10,0x00,0x00,0x8E,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x54,0x17,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x60,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00, +0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00, +0x7C,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x7C,0x18,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C, +0x00,0x3C,0x0F,0x00,0x18,0x06,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x66,0x66, +0x00,0x3C,0x00,0x00,0x7E,0x0A,0x00,0x7E,0x1C,0x1C,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,0x70,0x00,0x00,0x00,0x60,0x00,0x48,0xF8,0x00,0x00,0x10,0xC0, +0x00,0x3C,0x00,0x00,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,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,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38, +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, +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,0x40,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,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x06,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,0x00,0x00,0x00,0x00,0x32,0x60, +0x00,0x32,0x00,0x00,0x00,0x00,0xF1,0x00,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x60,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,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,0xA0,0x05,0x00,0x7C,0x7C,0x7C,0x7C,0x00,0x7C,0x7C, +0x7C,0x7C,0x00,0x00,0x00,0x00,0x28,0x0B,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x7C, +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, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x0E,0x00,0xE0,0x18,0x00,0x00,0x00,0x00,0x18,0x06,0x60,0x00,0x00,0x1C, +0x00,0x18,0x00,0x60,0x60,0x18,0x66,0x66,0x00,0x0C,0x18,0x3E,0x60,0x00,0x60,0x18, +0x66,0x00,0x00,0x66,0x00,0x0E,0x00,0x00,0x06,0x06,0x06,0x06,0x32,0x32,0x00,0x00, +0x00,0x00,0x60,0x00,0x00,0x60,0x00,0x00,0x32,0x32,0x00,0x01,0x00,0x00,0x7A,0x30, +0x66,0x7A,0x10,0x06,0x00,0x00,0x5B,0x00,0xF6,0x66,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x60,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,0x7C,0x1E,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00, +0x38,0x38,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x30,0x00,0x7C,0x0C,0xEE,0xFE, +0x00,0x01,0x08,0x00,0x38,0x78,0xA0,0x05,0x02,0xBA,0x3A,0x3A,0xB8,0x82,0xBA,0xB8, +0xBA,0xBA,0x78,0x00,0x00,0x00,0xD8,0x0D,0x18,0x00,0x66,0x66,0x66,0x3E,0x18,0x6C, +0x60,0x06,0x00,0x66,0x00,0x00,0x06,0x00,0x18,0x3C,0x7E,0x3C,0x7E,0x0C,0x7E,0x1C, +0x3C,0x3C,0x00,0x00,0x00,0x00,0x3C,0x00,0x18,0x38,0x3C,0x7C,0x7E,0x78,0x3E,0x7E, +0x7E,0x66,0xCC,0x06,0xC6,0x60,0x3C,0x66,0x3C,0x7C,0x3E,0xF8,0x66,0x7E,0xC6,0x66, +0x66,0x66,0x1E,0x7E,0x78,0x60,0x00,0x10,0x00,0x70,0x00,0x60,0x00,0x06,0x00,0x0E, +0x18,0x60,0xC0,0x0C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x18,0x00,0x30,0x18,0x00,0x00,0x66,0x3C,0x3C,0x0C,0x30,0x66,0x00,0x36, +0x66,0x3C,0x66,0x30,0x30,0x3C,0x3C,0x66,0x00,0x18,0x3C,0x7E,0x30,0x66,0x30,0x3C, +0x66,0x66,0x18,0x66,0x66,0x1E,0x0E,0x18,0x0C,0x0C,0x0C,0x0C,0x7A,0x7A,0x00,0x00, +0x00,0x18,0x20,0x00,0x00,0x20,0x00,0x00,0x7A,0x7A,0x00,0x3D,0x7E,0x00,0x4C,0x18, +0x66,0x4C,0x7C,0x0C,0x7C,0x7A,0x5F,0x7C,0x66,0x66,0x7C,0x66,0x7E,0x1E,0x38,0x7E, +0x7E,0x1E,0x3C,0x6E,0x7E,0x3C,0x1C,0x6C,0x36,0xFE,0x6E,0x7E,0x7C,0x3E,0x7E,0xD6, +0x7E,0x38,0x7E,0x7E,0x1C,0x6E,0x00,0x00,0x18,0x00,0x00,0xFE,0x00,0xFE,0x00,0x00, +0x3C,0x10,0x3E,0x38,0x10,0x1E,0x7C,0x3E,0x00,0x00,0x06,0x60,0x18,0x0E,0x00,0x00, +0x7C,0x6C,0x00,0x00,0x30,0x30,0xFE,0x78,0x18,0x00,0x38,0x3C,0x38,0x1C,0xC6,0xFE, +0x3C,0x01,0x0E,0x00,0x40,0x40,0xA0,0x05,0x06,0xC6,0x06,0x06,0xC0,0xC6,0xC6,0xC0, +0xC6,0xC6,0x40,0x00,0x00,0x00,0x28,0x06,0x18,0x00,0x66,0x66,0x66,0x7E,0x18,0x6C, +0x30,0x0C,0x18,0x66,0x00,0x00,0x06,0x00,0x18,0x7E,0x7E,0x7E,0x7E,0x0C,0x7E,0x3C, +0x7E,0x7E,0x00,0x00,0x00,0x0E,0x7E,0xE0,0x3C,0x7C,0x7E,0x7E,0x7E,0x7C,0x7E,0x7E, +0x7E,0x66,0xCC,0x06,0xC6,0x60,0x7E,0x66,0x7E,0x7E,0x7E,0xFC,0x66,0x7E,0xC6,0x66, +0x66,0x66,0x1E,0x7E,0x78,0x60,0x00,0x38,0x00,0x38,0x00,0x60,0x00,0x06,0x00,0x1E, +0x18,0x60,0xC0,0x0C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, +0x00,0x00,0x18,0x00,0x30,0x18,0x00,0x00,0x66,0x7E,0x66,0x18,0x18,0x66,0x00,0x1C, +0x66,0x66,0x66,0x18,0x18,0x66,0x18,0x18,0x00,0x7E,0x66,0xF8,0x18,0x66,0x18,0x66, +0x00,0x66,0x18,0x00,0x66,0x38,0x1E,0x3C,0x18,0x18,0x18,0x18,0x4C,0x4C,0x00,0x00, +0x00,0x18,0x20,0x00,0x18,0x20,0x00,0x00,0x4C,0x4C,0x00,0x7E,0xFE,0x00,0x00,0x00, +0x00,0x00,0x10,0x18,0xC6,0xCA,0x55,0xC6,0x66,0x00,0x7C,0x76,0x7E,0x1E,0x38,0x7E, +0x7E,0x1E,0x3C,0x6E,0x7E,0x3E,0x1C,0x6E,0x36,0xFE,0x6E,0x7E,0x7E,0x3E,0x7E,0xD6, +0x7E,0x38,0x7E,0x3E,0x36,0x6E,0x00,0x00,0x3C,0x00,0x00,0x7E,0x00,0xFE,0x02,0x00, +0x7E,0x10,0x20,0x6C,0x10,0x10,0xFE,0x7E,0x18,0x00,0x0E,0x70,0x18,0x19,0x02,0x18, +0x7C,0x44,0x00,0x00,0x48,0x78,0x00,0x18,0x3C,0x00,0x2C,0x24,0xBA,0x34,0xD6,0xFE, +0x66,0x03,0x0F,0x18,0x40,0x70,0xA0,0x05,0x06,0xC6,0x06,0x06,0xC0,0xC6,0xC6,0xC0, +0xC6,0xC6,0x70,0x00,0x00,0x00,0xD0,0x07,0x18,0x00,0xFF,0x66,0x6C,0x60,0x18,0x38, +0x38,0x1C,0x18,0x3C,0x00,0x00,0x06,0x00,0x38,0x66,0x0C,0x66,0x60,0x1C,0x06,0x70, +0x66,0x66,0x18,0x18,0x7E,0x1C,0x66,0x70,0x7E,0xE6,0x66,0x66,0x60,0x6E,0x60,0x60, +0x18,0x66,0xD8,0x06,0xEE,0x60,0x66,0x66,0x66,0x66,0x60,0xCC,0x66,0x18,0xC6,0x66, +0x66,0x66,0x18,0x0C,0x18,0x60,0x00,0x38,0x00,0x1C,0x00,0x60,0x00,0x06,0x00,0x18, +0x00,0x60,0xC0,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, +0x00,0x00,0x18,0x00,0x30,0x18,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x7E,0x00,0xD8,0x00,0x00,0x00,0x00, +0x3C,0x00,0x3C,0x66,0x66,0x30,0x18,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C, +0x00,0x00,0x23,0x00,0x18,0x23,0x00,0x00,0x00,0x00,0x01,0x66,0xD8,0x00,0x3C,0x3C, +0x00,0x3C,0x10,0x00,0x82,0xCA,0x51,0x82,0x66,0xE6,0x0C,0x76,0x0C,0x06,0x18,0x06, +0x66,0x04,0x0C,0x66,0x06,0x06,0x0C,0x3E,0x36,0xFE,0x66,0x66,0x06,0x3E,0x66,0xD6, +0x06,0x18,0x66,0x36,0x32,0x66,0x66,0x00,0x66,0x62,0x02,0x62,0x1E,0x60,0x7E,0x00, +0x66,0x7C,0x30,0xC6,0x7C,0x7C,0xC6,0xE0,0x18,0x7E,0x1C,0x38,0x18,0x1B,0x3E,0x18, +0x7C,0x6C,0x00,0x00,0x18,0x48,0x00,0x30,0x66,0x00,0xE6,0x24,0x92,0x67,0x92,0xFC, +0xC3,0x03,0x09,0x3C,0x40,0x40,0xB0,0x0D,0x06,0xC6,0x06,0x06,0xC0,0xC6,0xC6,0xC0, +0xC6,0xC6,0x40,0x7C,0x00,0x00,0x10,0x2E,0x18,0x00,0xFF,0x66,0x0C,0x60,0x18,0x38, +0x18,0x18,0x18,0x3C,0x00,0x00,0x0C,0x00,0x38,0x66,0x0C,0x66,0x60,0x1C,0x06,0x60, +0x66,0x66,0x18,0x18,0x7E,0x38,0x66,0x38,0x66,0xC2,0x66,0x66,0x60,0x66,0x60,0x60, +0x18,0x66,0xD8,0x06,0xEE,0x60,0x66,0x76,0x66,0x66,0x60,0xCC,0x66,0x18,0xC6,0x66, +0x66,0x3C,0x18,0x0C,0x18,0x30,0x00,0x6C,0x3C,0x0C,0x3C,0x7C,0x3C,0x3E,0x3E,0x18, +0x38,0x7C,0xCC,0x0C,0x6C,0x18,0x3C,0x3C,0x3E,0x7C,0x3E,0x7C,0x66,0x7E,0xC6,0x66, +0x66,0x66,0x18,0x7E,0x30,0x18,0x18,0x62,0x66,0x66,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, +0x3C,0x3C,0x38,0x3C,0x38,0x38,0x7E,0x7E,0x76,0x60,0x3C,0xD8,0x3C,0x3C,0x66,0x66, +0x7E,0x66,0x7E,0x66,0x66,0x30,0x18,0x66,0x38,0x3C,0x66,0x3C,0x66,0x3C,0x7E,0x3E, +0x00,0x18,0x26,0x00,0x00,0x26,0x00,0x00,0x3C,0x3C,0x3D,0x66,0xD8,0x7E,0x7E,0x7E, +0x00,0x7E,0x10,0x00,0xBA,0xCA,0x00,0xBA,0x66,0x66,0x0C,0x3E,0x0C,0x06,0x18,0x66, +0x66,0x0C,0x0C,0x66,0x06,0x06,0x0C,0x36,0x36,0xC6,0x36,0x66,0x06,0x06,0x66,0xD6, +0x06,0x18,0x66,0x36,0x18,0x76,0xF7,0x10,0x66,0xF6,0x7E,0x60,0x38,0x30,0xFC,0x66, +0x42,0xC6,0x18,0xC6,0xD6,0xD6,0xC6,0xC0,0x18,0x7E,0x38,0x1C,0x18,0x1B,0x7C,0x00, +0x38,0x38,0x1F,0x00,0x30,0x48,0x00,0x18,0xC3,0x00,0x83,0x24,0xD6,0xC1,0xBA,0xFC, +0x91,0x06,0x08,0x3C,0x38,0x40,0xB0,0x0D,0x02,0x82,0x3A,0x3A,0xB8,0xBA,0x82,0xB8, +0xBA,0xBA,0x78,0x7E,0x00,0x00,0xE0,0x39,0x18,0x00,0x66,0x66,0x18,0x7C,0x18,0x70, +0x18,0x18,0x7E,0xFF,0x7E,0x00,0x0C,0x00,0x18,0x66,0x18,0x0C,0x7C,0x3C,0x0C,0x60, +0x7E,0x3C,0x18,0x18,0x00,0x70,0x0C,0x1C,0x66,0xDA,0x60,0x7E,0x7C,0x66,0x6E,0x7C, +0x18,0x7E,0xF0,0x06,0xFE,0x60,0x66,0x76,0x66,0x66,0x70,0xCC,0x66,0x18,0xC6,0x66, +0x3C,0x3C,0x18,0x18,0x18,0x30,0x00,0x6C,0x3E,0x04,0x7C,0x7E,0x7E,0x7E,0x7E,0x7E, +0x38,0x7E,0xDC,0x0C,0xFE,0x18,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x66,0x7E,0xC6,0x66, +0x66,0x66,0x38,0x7E,0x38,0x18,0x18,0xF2,0x66,0x60,0x3E,0x7E,0x3E,0x3E,0x7C,0x3E, +0x7E,0x7E,0x38,0x7E,0x38,0x38,0x66,0x66,0x7F,0x60,0x7E,0xDE,0x7E,0x7E,0x66,0x66, +0x66,0x66,0x66,0x66,0x7E,0x30,0x18,0x66,0x38,0x3E,0x66,0x7E,0x66,0x7E,0x66,0x06, +0x00,0x18,0x2C,0x00,0x18,0x2C,0xB0,0x1A,0x7E,0x3E,0x7E,0x6E,0xDE,0xFF,0x66,0x66, +0x00,0x66,0x10,0x00,0xA2,0xCA,0x00,0xAA,0x66,0x66,0x0C,0x3C,0x0C,0x0E,0x18,0x66, +0x66,0x0C,0x00,0x66,0x06,0x06,0x0C,0x66,0x36,0xC6,0x3E,0x76,0x06,0x06,0x66,0xF6, +0x06,0x18,0x76,0x36,0x3C,0x3E,0x99,0x10,0x66,0xDC,0xFC,0x60,0x6C,0x18,0x90,0x66, +0x42,0x82,0x3C,0xC6,0x92,0x92,0xC6,0xC0,0x7E,0x00,0x70,0x0E,0x18,0x18,0x40,0x7E, +0x00,0x00,0x10,0x00,0x60,0x48,0x00,0x48,0x81,0x00,0x83,0xE7,0xC6,0xC1,0x38,0xF8, +0x91,0x06,0x08,0x3C,0x00,0x00,0xB8,0x1D,0x00,0x00,0x7C,0x7C,0x7C,0x7C,0x00,0x7C, +0x7C,0x7C,0x00,0x06,0x00,0x00,0x00,0x38,0x18,0x00,0x66,0x66,0x18,0x3E,0x18,0x70, +0x18,0x18,0x7E,0xFF,0x7E,0x00,0x18,0x00,0x18,0x6E,0x18,0x0C,0x7E,0x3C,0x0C,0x7C, +0x3E,0x3C,0x18,0x18,0x00,0xE0,0x0C,0x0E,0x66,0xD6,0x60,0x7C,0x7C,0x66,0x6E,0x7C, +0x18,0x7E,0xF0,0x06,0xD6,0x60,0x66,0x7E,0x66,0x66,0x38,0xFC,0x66,0x18,0xD6,0x66, +0x3C,0x18,0x18,0x18,0x18,0x18,0x00,0xC6,0x06,0x00,0x60,0x66,0x66,0x66,0x66,0x7E, +0x18,0x66,0xF8,0x0C,0xFE,0x18,0x66,0x66,0x66,0x66,0x60,0x66,0x66,0x18,0xD6,0x66, +0x66,0x3C,0xF0,0x0C,0x1E,0x18,0x3C,0xBE,0x66,0x60,0x06,0x66,0x06,0x06,0x60,0x06, +0x66,0x66,0x18,0x66,0x18,0x18,0x66,0x66,0x1B,0x7C,0x66,0xDE,0x66,0x66,0x66,0x66, +0x66,0x66,0x60,0x66,0x3C,0x30,0x7E,0x7C,0x18,0x06,0x66,0x66,0x76,0x66,0x66,0x3E, +0x00,0x18,0x18,0x00,0x18,0x18,0xD8,0x36,0x66,0x06,0x66,0x6E,0xDE,0xDB,0x66,0x66, +0x00,0x66,0x10,0x00,0xA2,0xCA,0x00,0xB2,0x66,0x66,0x0C,0x3C,0x0C,0x1E,0x18,0x66, +0x66,0x0C,0x00,0x66,0x0E,0x06,0x0C,0x66,0x36,0xC6,0x18,0x76,0x06,0x36,0x66,0xF6, +0x06,0x18,0x76,0x36,0x66,0x0E,0x99,0x38,0x7C,0x88,0xA8,0x60,0xC6,0x0C,0x30,0x66, +0x7E,0x82,0x66,0xC6,0x92,0x92,0xC6,0xFC,0x7E,0x7E,0x38,0x1C,0x18,0x18,0x02,0x7E, +0x00,0x00,0xD0,0x00,0x78,0x48,0x00,0x30,0xE7,0x00,0xE6,0x81,0xD6,0x67,0xBA,0xFA, +0x9D,0x8C,0x78,0x3C,0x1C,0x1E,0x9C,0x39,0x02,0x82,0x3A,0xB8,0x3A,0x3A,0x02,0xBA, +0x3A,0xBA,0x0E,0x06,0xF0,0x07,0x00,0x00,0x18,0x00,0xFF,0x00,0x30,0x06,0x00,0xDE, +0x18,0x18,0x18,0x3C,0x00,0x00,0x18,0x00,0x18,0x76,0x0C,0x18,0x06,0x6C,0x18,0x7E, +0x06,0x66,0x00,0x00,0x7E,0x70,0x18,0x1C,0x7E,0xD6,0x60,0x66,0x60,0x66,0x66,0x60, +0x18,0x66,0xD8,0x06,0xD6,0x60,0x66,0x7E,0x66,0x7E,0x1C,0xF8,0x66,0x18,0xD6,0x66, +0x18,0x18,0x18,0x30,0x18,0x18,0x00,0xC6,0x3E,0x00,0x60,0x66,0x66,0x66,0x66,0x18, +0x18,0x66,0xF0,0x0C,0xD6,0x18,0x66,0x66,0x66,0x66,0x70,0x60,0x66,0x18,0xD6,0x66, +0x66,0x3C,0xF0,0x18,0x1E,0x18,0x24,0x9C,0x66,0x60,0x3E,0x66,0x3E,0x3E,0x60,0x3E, +0x66,0x66,0x18,0x66,0x18,0x18,0x7E,0x7E,0x7B,0x7C,0x66,0xF8,0x66,0x66,0x66,0x66, +0x66,0x66,0x60,0x66,0x18,0xFE,0x18,0x66,0x18,0x3E,0x66,0x66,0x7E,0x66,0x66,0x7E, +0x00,0x30,0x30,0x00,0x18,0x32,0x6C,0x6C,0x66,0x3E,0x6E,0x76,0xD8,0xDB,0x7E,0x7E, +0x00,0x66,0x00,0x00,0xA2,0x7A,0x00,0xBA,0x66,0x66,0x0C,0x6E,0x0C,0x36,0x18,0x66, +0x66,0x0C,0x00,0x66,0x1C,0x06,0x0C,0x66,0x36,0xC6,0x1C,0x06,0x06,0x36,0x66,0xC6, +0x06,0x18,0x06,0x36,0x66,0x06,0xEF,0x38,0x66,0x88,0x28,0x60,0xC6,0x0C,0x30,0x66, +0x42,0x82,0x42,0x6C,0x92,0x92,0xC6,0xFC,0x18,0x7E,0x1C,0x38,0x18,0x18,0x3E,0x00, +0x00,0x00,0xD0,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x2C,0xC3,0x92,0x34,0x92,0xF2, +0x81,0x8C,0xF8,0x3C,0x12,0x10,0x9E,0x79,0x06,0xC6,0x06,0xC0,0x06,0x06,0x06,0xC6, +0x06,0xC6,0x10,0x7E,0xF8,0x0F,0x00,0x00,0x18,0x00,0xFF,0x00,0x36,0x06,0x00,0xDE, +0x18,0x18,0x18,0x3C,0x00,0x00,0x30,0x00,0x18,0x66,0x0C,0x18,0x06,0x6C,0x18,0x66, +0x06,0x66,0x00,0x00,0x7E,0x38,0x18,0x38,0x7E,0xDC,0x60,0x66,0x60,0x66,0x66,0x60, +0x18,0x66,0xD8,0x06,0xC6,0x60,0x66,0x6E,0x66,0x7C,0x0E,0xD8,0x66,0x18,0xFE,0x66, +0x18,0x3C,0x18,0x30,0x18,0x0C,0x00,0x00,0x7E,0x00,0x60,0x66,0x7E,0x66,0x66,0x18, +0x18,0x66,0xF8,0x0C,0xD6,0x18,0x66,0x66,0x66,0x66,0x3C,0x60,0x66,0x18,0xFE,0x66, +0x66,0x18,0x38,0x18,0x38,0x18,0x66,0x00,0x66,0x60,0x7E,0x7E,0x7E,0x7E,0x60,0x7E, +0x7E,0x7E,0x18,0x7E,0x18,0x18,0x7E,0x7E,0xFF,0x60,0x66,0xF8,0x66,0x66,0x66,0x66, +0x66,0x66,0x66,0x66,0x7E,0x30,0x18,0x66,0x18,0x7E,0x66,0x66,0x7E,0x66,0x66,0x66, +0x7E,0x30,0x6E,0x7E,0x18,0x66,0x36,0xD8,0x66,0x7E,0x7E,0x76,0xD8,0xDF,0x7E,0x7E, +0x00,0x66,0x00,0x00,0xBA,0x0A,0x00,0xAA,0x66,0x66,0x0C,0x6E,0x0C,0x36,0x18,0x66, +0x66,0x0C,0x00,0x66,0x30,0x06,0x0C,0x6E,0x36,0xC6,0x0E,0x7E,0x06,0x36,0x66,0xC6, +0x06,0x18,0x06,0x36,0x3C,0x06,0x66,0x6C,0x66,0xDC,0x28,0x60,0xC6,0x18,0x30,0x66, +0x42,0x82,0x42,0x28,0x92,0x92,0xC6,0xC0,0x18,0x00,0x0E,0x70,0x18,0x18,0x7C,0x18, +0x00,0x00,0x50,0x18,0x00,0x00,0x00,0x00,0x24,0x00,0x38,0x66,0xBA,0x1C,0xD6,0xF6, +0xC3,0xD8,0x70,0x7E,0x1C,0x1C,0x8E,0x71,0x06,0xC6,0x06,0xC0,0x06,0x06,0x06,0xC6, +0x06,0xC6,0x0C,0x66,0xEC,0x1F,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x7E,0x00,0xCC, +0x18,0x18,0x18,0x66,0x00,0x18,0x30,0x18,0x18,0x66,0x66,0x30,0x06,0x7E,0x30,0x66, +0x06,0x66,0x18,0x18,0x00,0x1C,0x18,0x70,0x66,0xC0,0x66,0x66,0x60,0x66,0x66,0x60, +0x18,0x66,0xCC,0x66,0xC6,0x60,0x66,0x6E,0x66,0x60,0x06,0xCC,0x66,0x18,0xFE,0x3C, +0x18,0x3C,0x18,0x60,0x18,0x0C,0x00,0x00,0x66,0x00,0x60,0x66,0x60,0x66,0x66,0x18, +0x18,0x66,0xD8,0x0C,0xD6,0x18,0x66,0x66,0x66,0x66,0x0E,0x60,0x66,0x18,0xFE,0x3C, +0x66,0x3C,0x18,0x30,0x30,0x18,0x42,0x00,0x66,0x66,0x66,0x60,0x66,0x66,0x60,0x66, +0x60,0x60,0x18,0x60,0x18,0x18,0x66,0x66,0xD8,0x60,0x66,0xD8,0x66,0x66,0x66,0x66, +0x66,0x66,0x7E,0x66,0x18,0x30,0x18,0x66,0x18,0x66,0x66,0x66,0x6E,0x66,0x66,0x66, +0x7E,0x66,0xD3,0x7E,0x18,0xCE,0x6C,0x6C,0x66,0x66,0x76,0x66,0xD8,0xD8,0x66,0x66, +0x00,0x66,0x00,0x00,0x82,0x0A,0x00,0x82,0x66,0x66,0x7E,0x66,0x0C,0x36,0x18,0x66, +0x66,0x0C,0x00,0x7E,0x30,0x3E,0x7C,0x6E,0x7E,0xFE,0x7E,0x7E,0x06,0x36,0xE6,0xFE, +0x06,0x18,0x06,0x3E,0x18,0x06,0x00,0x6C,0x66,0xF6,0x28,0x60,0xC6,0x30,0x30,0x66, +0x66,0xC6,0x66,0xAA,0xD6,0xD6,0xC6,0xC0,0x18,0x7E,0x06,0x60,0xD8,0x18,0x40,0x18, +0x00,0x00,0x70,0x3C,0x00,0x00,0x00,0x00,0x24,0x00,0x30,0x3C,0x38,0x0C,0xC6,0xE6, +0x66,0x58,0x00,0xFF,0x14,0x10,0x8E,0x71,0x06,0xC6,0x06,0xC0,0x06,0x06,0x06,0xC6, +0x06,0xC6,0x02,0x66,0x04,0x18,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x7C,0x00,0xCC, +0x38,0x1C,0x00,0x66,0x00,0x18,0x60,0x18,0x18,0x66,0x66,0x30,0x66,0x7E,0x30,0x66, +0x0E,0x66,0x18,0x18,0x00,0x0E,0x00,0xE0,0x66,0xE2,0x66,0x66,0x60,0x6E,0x66,0x60, +0x18,0x66,0xCC,0x66,0xC6,0x60,0x66,0x66,0x6A,0x60,0x06,0xCC,0x66,0x18,0xEE,0x3C, +0x18,0x66,0x18,0x60,0x18,0x06,0x00,0x00,0x66,0x00,0x60,0x66,0x60,0x66,0x7E,0x18, +0x18,0x66,0xCC,0x0C,0xC6,0x18,0x66,0x66,0x66,0x66,0x06,0x60,0x66,0x18,0xEE,0x3C, +0x7E,0x3C,0x18,0x30,0x30,0x18,0xC3,0x00,0x66,0x66,0x66,0x60,0x66,0x66,0x60,0x66, +0x60,0x60,0x18,0x60,0x18,0x18,0x66,0x66,0xD8,0x60,0x66,0xD8,0x66,0x66,0x66,0x66, +0x66,0x7E,0x3C,0x66,0x18,0x30,0x18,0x7C,0x18,0x66,0x66,0x66,0x66,0x66,0x7E,0x7E, +0x60,0x66,0x06,0x06,0x18,0x1A,0xD8,0x36,0x66,0x66,0x66,0x66,0xD8,0xD8,0x66,0x66, +0x00,0x66,0x00,0x00,0xC6,0x0A,0x00,0xC6,0xF6,0x66,0x7E,0x62,0x0C,0x36,0x18,0x66, +0x66,0x04,0x00,0x7E,0x30,0x3C,0x7C,0x6E,0x7E,0x7C,0x7E,0x7E,0x06,0x36,0xE6,0xFE, +0x06,0x18,0x06,0x3E,0x4C,0x06,0x00,0xC6,0x7C,0x62,0x28,0x60,0x6C,0x60,0x20,0x7F, +0x7E,0x7C,0x7E,0xEE,0x7C,0x7C,0xC6,0xE0,0x00,0x7E,0x00,0x00,0xD8,0x18,0x00,0x00, +0x00,0x00,0x20,0x3C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x18,0x7C,0x00,0xEE,0xEE, +0x3C,0x70,0x00,0x10,0x12,0x10,0x86,0x61,0x02,0xBA,0x3A,0xB8,0x3A,0x02,0x02,0xBA, +0x3A,0xBA,0x1C,0x7E,0x04,0x18,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x18,0x00,0xFE, +0x30,0x0C,0x00,0x00,0x00,0x18,0x60,0x18,0x7E,0x7E,0x7E,0x7E,0x7E,0x0C,0x30,0x7E, +0x3C,0x7E,0x18,0x18,0x00,0x00,0x18,0x00,0x66,0x7E,0x7E,0x7E,0x7E,0x7C,0x7E,0x60, +0x7E,0x66,0xC6,0x7E,0xC6,0x7E,0x7E,0x66,0x7C,0x60,0x7E,0xC6,0x7E,0x18,0xC6,0x18, +0x18,0x66,0x1E,0x7E,0x78,0x06,0xFE,0x00,0x7E,0x00,0x7E,0x7E,0x7E,0x7E,0x3E,0x18, +0x3C,0x66,0xCE,0x0C,0xC6,0x3C,0x7E,0x66,0x7E,0x7E,0x7E,0x60,0x7E,0x1E,0xC6,0x18, +0x3E,0x66,0x18,0x7E,0x30,0x18,0xFF,0x00,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, +0x7E,0x7E,0x3C,0x7E,0x3C,0x3C,0x66,0x66,0xFF,0x7E,0x7E,0xDE,0x7E,0x7E,0x7E,0x7E, +0x7E,0x3E,0x18,0x7E,0x18,0x7F,0x18,0x6C,0x3C,0x7E,0x7E,0x7E,0x66,0x66,0x3C,0x3E, +0x60,0x7E,0x0C,0x06,0x18,0x32,0xB0,0x1A,0x7E,0x7E,0x7E,0x7E,0xFE,0xFF,0x66,0x66, +0x00,0x7E,0x00,0x00,0x7C,0x0A,0x00,0x7C,0xF6,0xF6,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00, +0x06,0x18,0x06,0x00,0x6C,0x06,0x00,0xC6,0x6C,0x00,0x00,0x60,0x38,0xFE,0x00,0x5D, +0x3C,0x10,0x3C,0x6C,0x10,0x10,0xC6,0x7E,0x7E,0x00,0x7E,0x7E,0x98,0x18,0x00,0x00, +0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x30,0x00,0x38,0x00,0x00,0x82,0x41,0x00,0x7C,0x7C,0x7C,0x7C,0x00,0x00,0x7C, +0x7C,0x7C,0x00,0x3C,0x04,0x10,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x18,0x00,0x76, +0x60,0x06,0x00,0x00,0x00,0x18,0x60,0x18,0x7E,0x3C,0x3C,0x7E,0x3C,0x0C,0x30,0x3C, +0x38,0x3C,0x18,0x18,0x00,0x00,0x18,0x00,0x66,0x3C,0x3C,0x7C,0x7E,0x78,0x3C,0x60, +0x7E,0x66,0xC6,0x3C,0xC6,0x7E,0x3C,0x66,0x36,0x60,0x7C,0xC6,0x3C,0x18,0x82,0x18, +0x18,0x66,0x1E,0x7E,0x78,0x06,0xFE,0x00,0x3E,0x00,0x3E,0x7C,0x3E,0x3E,0x06,0x18, +0x3C,0x66,0xC6,0x0C,0xC6,0x3C,0x3C,0x66,0x3E,0x7C,0x7C,0x60,0x3E,0x0E,0x82,0x18, +0x06,0x66,0x18,0x7E,0x30,0x18,0x00,0x00,0x3E,0x3C,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E, +0x3E,0x3E,0x3C,0x3E,0x3C,0x3C,0x66,0x66,0x7F,0x7E,0x3C,0xDE,0x3C,0x3C,0x3E,0x3E, +0x3C,0x06,0x18,0x3C,0x18,0xFF,0x70,0x60,0x3C,0x3E,0x3E,0x3C,0x66,0x66,0x00,0x00, +0x60,0x3C,0x18,0x06,0x18,0x3F,0x00,0x00,0x3C,0x3E,0xBC,0xBC,0x7E,0x7F,0x66,0x66, +0x00,0x3C,0x00,0x00,0x00,0x0A,0x00,0x00,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00, +0x06,0x18,0x06,0x00,0x38,0x06,0x00,0x00,0x60,0x00,0x00,0xF0,0x00,0xFE,0x00,0xC0, +0x00,0x10,0x00,0x00,0x10,0xF0,0xC6,0x3E,0x7E,0x00,0x7E,0x7E,0x70,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x20,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x3C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x30,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00, +0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00, +0x7E,0x00,0x0E,0x00,0xE0,0x18,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x0C,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x7E,0x00,0x00,0x00,0x00,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E, +0x00,0x00,0x1F,0x00,0x18,0x02,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x3C,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x80, +0x00,0x7C,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,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,0x00,0x00, +0x00,0x00,0x00,0x00,0x54,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x20,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00, +0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00, +0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x38,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x7C,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,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x38,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,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0A,0x00,0x78,0x38,0x36,0x31, +0x73,0x20,0x73,0x79,0x65,0x74,0x20,0x6D,0x6F,0x66,0x74,0x6E,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x0D,0x00,0x0B,0x00,0x08,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x08,0x00,0x01,0x00, +0x07,0x00,0x01,0x00,0x01,0x00,0x55,0x55,0x55,0x55,0x0C,0x00,0x00,0x00,0x00,0x00, +0xFD,0x00,0x86,0x41,0xFD,0x00,0x88,0x4B,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x24,0x12,0xAC,0x33,0x7C,0x39,0x98,0x3B,0x7A,0x3F,0x00,0x00,0x30,0x00, +0xC0,0x03,0x2C,0x05,0x4E,0x05,0xE8,0x05,0x00,0x00,0xCE,0x06,0x60,0x06,0x24,0x00, +0x26,0x00,0x03,0x00,0x0D,0x00,0x00,0x00,0x0B,0x00,0x1E,0x00,0x0B,0x00,0x16,0x12, +0x00,0x00,0x30,0x00,0x00,0x00,0x88,0x02,0x00,0x00,0x78,0x03,0xFF,0xFF,0x01,0x00, +0x18,0x00,0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00, +0x28,0x00,0x13,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x9E,0x0A,0x03,0x00,0x01,0x00,0x11,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF, +0xFF,0xFF,0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x01,0x00,0x04,0x00, +0x26,0x00,0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x08,0x00,0x00,0x00, +0x00,0x00,0xDC,0x03,0x1A,0x00,0x07,0x00,0x0D,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF, +0xFF,0xFF,0x1B,0x00,0x40,0x00,0x00,0x00,0xFF,0x05,0x01,0x11,0x03,0x01,0x06,0xFE, +0x01,0x06,0x01,0x02,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x16,0x00,0x40,0x00,0x00,0x00, +0x00,0x00,0xF8,0x03,0x04,0x08,0x06,0xFE,0x15,0xF7,0x01,0x02,0x07,0x00,0x0C,0x00, +0x14,0x00,0x14,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x03,0x00,0x07,0x00, +0x13,0x00,0x0B,0x00,0x15,0x00,0x08,0x00,0x0A,0x00,0x14,0x00,0x40,0x00,0x00,0x00, +0x01,0x00,0x00,0x11,0x16,0x00,0x07,0x00,0x03,0x00,0x0B,0x00,0x09,0x00,0xFF,0xFF, +0xFF,0xFF,0x1B,0x00,0x40,0x00,0x00,0x00,0x01,0x01,0x00,0x11,0x00,0x00,0x00,0x00, +0x03,0x00,0x02,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF,0x1B,0x00,0x40,0x00,0x00,0x00, +0x01,0x02,0x00,0x11,0x00,0x00,0x09,0x00,0x03,0x00,0x02,0x00,0x07,0x00,0x0B,0x00, +0x0B,0x00,0x14,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x11,0x11,0x00,0x00,0x02,0x00, +0x03,0x00,0x07,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF,0x14,0x00,0x40,0x00,0x00,0x00, +0x01,0x00,0x01,0x11,0x00,0x01,0x00,0x00,0x03,0xFF,0x01,0x00,0x0D,0x00,0xFF,0xFF, +0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x14,0x04,0x02,0x00,0x01,0x00, +0x0F,0x00,0x01,0x00,0x0E,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00, +0x00,0x00,0x30,0x04,0x02,0x00,0x02,0x00,0x0F,0x00,0x01,0x00,0x0F,0x00,0xFF,0xFF, +0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x4C,0x04,0x02,0x00,0x03,0x00, +0x0F,0x00,0x01,0x00,0x10,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00, +0x00,0x00,0x68,0x04,0x02,0x00,0x04,0x00,0x0F,0x00,0x01,0x00,0x11,0x00,0xFF,0xFF, +0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x84,0x04,0x02,0x00,0x05,0x00, +0x0F,0x00,0x01,0x00,0x12,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00, +0x00,0x00,0xA0,0x04,0x02,0x00,0x06,0x00,0x0F,0x00,0x01,0x00,0x13,0x00,0xFF,0xFF, +0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xBC,0x04,0x02,0x00,0x07,0x00, +0x0F,0x00,0x01,0x00,0x14,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00, +0x00,0x00,0xD8,0x04,0x02,0x00,0x08,0x00,0x0F,0x00,0x01,0x00,0x06,0x00,0xFF,0xFF, +0xFF,0xFF,0x1E,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xF4,0x04,0x02,0x00,0x09,0x00, +0x0F,0x00,0x01,0x00,0x16,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x07,0x00,0x00,0x00, +0x00,0x00,0x53,0x0C,0x1B,0x00,0x0D,0x00,0x08,0x00,0x01,0x00,0x17,0x00,0xFF,0xFF, +0xFF,0xFF,0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x56,0x0C,0x1B,0x00,0x0F,0x00, +0x08,0x00,0x01,0x00,0x18,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x5E,0x0C,0x01,0x00,0x03,0x00,0x14,0x00,0x01,0x00,0x00,0x00,0xFF,0xFF, +0xFF,0xFF,0x1C,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x65,0x0C,0x1A,0x00,0x06,0x00, +0x14,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x09,0x00,0x14,0x00,0x00,0x00,0x10,0x00, +0x01,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0xFF,0xFF, +0xFF,0xFF,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x05,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x6E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0xFF,0xFF, +0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x0C,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xAE,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x06,0x00,0xFF,0xFF, +0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0x0C,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xEE,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0xFF,0xFF, +0xFF,0xFF,0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x0E,0x0D,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x09,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x07,0x00,0x00,0x00, +0x00,0x00,0x19,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xFF,0xFF, +0xFF,0xFF,0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0x24,0x0D,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x02,0x00,0x14,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x43,0x11,0x00,0x00,0x00,0x00,0x50,0x00,0x19,0x00,0x02,0x00,0xFF,0xFF, +0xFF,0xFF,0x14,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x11,0x00,0x00,0x00,0x00, +0x50,0x00,0x01,0x02,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x15,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x10,0x05,0x00,0x00,0x00,0x00,0x50,0x00,0x01,0x03,0x00,0x00,0xAD,0x0A, +0x00,0x00,0xD4,0x0A,0x00,0x00,0xFB,0x0A,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11, +0x00,0x00,0x00,0x00,0x27,0x00,0x27,0x00,0x00,0x00,0xFD,0x0A,0x00,0x00,0x09,0x0B, +0x00,0x00,0x16,0x0B,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00, +0x0C,0x00,0x0D,0x00,0x00,0x00,0x18,0x0B,0x00,0x00,0x24,0x0B,0x00,0x00,0x31,0x0B, +0x03,0x00,0x01,0x00,0x02,0x00,0xA1,0x11,0x00,0x00,0xFF,0xFF,0x0C,0x00,0x0F,0x00, +0x00,0x00,0x33,0x0B,0x00,0x00,0x40,0x0B,0x00,0x00,0x50,0x0B,0x03,0x00,0x01,0x00, +0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00,0x00,0x00,0x53,0x0B, +0x00,0x00,0x60,0x0B,0x00,0x00,0x70,0x0B,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11, +0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00,0x00,0x00,0x73,0x0B,0x00,0x00,0x80,0x0B, +0x00,0x00,0x90,0x0B,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00, +0x0C,0x00,0x0F,0x00,0x00,0x00,0x93,0x0B,0x00,0x00,0xA0,0x0B,0x00,0x00,0xB0,0x0B, +0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00, +0x00,0x00,0xB3,0x0B,0x00,0x00,0xC0,0x0B,0x00,0x00,0xD0,0x0B,0x03,0x00,0x01,0x00, +0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00,0x00,0x00,0xD3,0x0B, +0x00,0x00,0xE0,0x0B,0x00,0x00,0xF0,0x0B,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11, +0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00,0x00,0x00,0xF3,0x0B,0x00,0x00,0x00,0x0C, +0x00,0x00,0x10,0x0C,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00, +0x0C,0x00,0x0F,0x00,0x00,0x00,0x13,0x0C,0x00,0x00,0x20,0x0C,0x00,0x00,0x30,0x0C, +0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00, +0x00,0x00,0x33,0x0C,0x00,0x00,0x40,0x0C,0x00,0x00,0x50,0x0C,0x03,0x00,0x01,0x00, +0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x0F,0x00,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x11, +0x00,0x00,0x01,0x00,0x50,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0x06,0x04,0x00, +0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x4E,0x07,0x04,0x00,0x20,0x00, +0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xCE,0x07,0x04,0x00,0x20,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x00,0x00,0x4E,0x08,0x02,0x00,0x25,0x00,0x00,0x00,0x00,0x00, +0x03,0x00,0x00,0x00,0x98,0x08,0x02,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x03,0x00, +0x00,0x00,0xE2,0x08,0x02,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, +0x2C,0x09,0x02,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x76,0x09, +0x02,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xC0,0x09,0x02,0x00, +0x25,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0A,0x0A,0x02,0x00,0x25,0x00, +0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x54,0x0A,0x02,0x00,0x25,0x00,0x00,0x00, +0x00,0x00,0x03,0x00,0x00,0x00,0x2F,0x0D,0x00,0x00,0x35,0x0D,0x00,0x00,0x41,0x0D, +0x00,0x00,0x46,0x0D,0x00,0x00,0x50,0x0D,0x00,0x00,0x55,0x0D,0x00,0x00,0x6C,0x0D, +0x00,0x00,0x87,0x0D,0x00,0x00,0x9E,0x0D,0x00,0x00,0xB2,0x0D,0x00,0x00,0xC7,0x0D, +0x00,0x00,0xD9,0x0D,0x00,0x00,0xE7,0x0D,0x00,0x00,0xF9,0x0D,0x00,0x00,0x6C,0x0E, +0x00,0x00,0xC9,0x0E,0x00,0x00,0x2A,0x0F,0x00,0x00,0x79,0x0F,0x00,0x00,0xD7,0x0F, +0x00,0x00,0xF4,0x0F,0x00,0x00,0x3E,0x10,0x00,0x00,0x3F,0x10,0x00,0x00,0xB7,0x10, +0x00,0x00,0x12,0x11,0x00,0x00,0x48,0x11,0x00,0x00,0x49,0x11,0x00,0x00,0x8D,0x11, +0x00,0x00,0xAE,0x11,0x00,0x00,0xD3,0x11,0x00,0x00,0xD4,0x11,0x00,0x00,0x4E,0x05, +0x00,0x00,0x5C,0x05,0x00,0x00,0x6A,0x05,0x00,0x00,0x78,0x05,0x00,0x00,0x86,0x05, +0x00,0x00,0x94,0x05,0x00,0x00,0xA2,0x05,0x00,0x00,0xB0,0x05,0x00,0x00,0xBE,0x05, +0x00,0x00,0xCC,0x05,0x00,0x00,0xDA,0x05,0x00,0x00,0x06,0x00,0x62,0x8F,0x00,0x00, +0x06,0x00,0xE2,0x8F,0x00,0x00,0x06,0x00,0x62,0x90,0x00,0x00,0x06,0x00,0xE2,0x90, +0x00,0x00,0x06,0x00,0x2C,0x91,0x00,0x00,0x06,0x00,0x76,0x91,0x00,0x00,0x06,0x00, +0xC0,0x91,0x00,0x00,0x06,0x00,0x0A,0x92,0x00,0x00,0x06,0x00,0x54,0x92,0x00,0x00, +0x06,0x00,0x9E,0x92,0x00,0x00,0x06,0x00,0xE8,0x92,0x03,0x00,0x00,0xC0,0x06,0x00, +0x00,0x60,0x0D,0x00,0x00,0xB0,0x1B,0x00,0x00,0xD8,0x37,0x00,0x00,0xEC,0x6F,0x00, +0x00,0xF6,0xDC,0x00,0x00,0x3B,0xBC,0x01,0x80,0x3D,0x7C,0x03,0xC0,0x3E,0xFC,0x06, +0x60,0x3F,0xFC,0x0D,0xB0,0x3F,0xFC,0x1B,0xD8,0x3F,0xFC,0x37,0xEC,0x3F,0xFC,0x6F, +0xF6,0x3F,0xFC,0xDF,0xFB,0x3F,0xFC,0xBF,0xFD,0x3F,0xFC,0xBF,0xFD,0x3F,0xFC,0xDF, +0xFB,0x3F,0xFC,0x6F,0xF6,0x3F,0xFC,0x37,0xEC,0x3F,0xFF,0x1B,0xD8,0xFF,0xFF,0x0D, +0xB0,0xFF,0xFC,0x06,0x60,0x3F,0x7C,0x03,0xC0,0x3E,0xBC,0x01,0x80,0x3D,0xDC,0x00, +0x00,0x3B,0x6F,0x00,0x00,0xF6,0x37,0x00,0x00,0xEC,0x1B,0x00,0x00,0xD8,0x0D,0x00, +0x00,0xB0,0x06,0x00,0x00,0x60,0x03,0x00,0x00,0xC0,0xFF,0x3F,0xFC,0xFF,0x00,0xC0, +0x03,0x00,0xFF,0x9F,0xF9,0xFF,0xFF,0xBF,0xFD,0xFF,0xF8,0xDF,0xFB,0x3F,0xE0,0x5F, +0xFA,0x0F,0xC0,0x6F,0xF6,0x07,0x83,0x2F,0xF4,0x83,0x87,0x37,0xEC,0xC3,0x87,0x17, +0xE8,0xC3,0xFF,0x1B,0xD8,0x83,0xFF,0x0B,0xD0,0x07,0xFE,0x0D,0xB0,0x0F,0xFC,0x05, +0xA0,0x1F,0xFC,0x06,0x60,0x3F,0xFC,0x02,0x40,0x3F,0x7C,0x03,0xC0,0x3E,0x7C,0x01, +0x80,0x3E,0xBF,0x01,0x80,0xFD,0xBF,0x00,0x00,0xFD,0xDC,0x00,0x00,0x3B,0x5C,0x00, +0x00,0x3A,0x6C,0x00,0x00,0x36,0x2F,0x00,0x00,0xF4,0x37,0x00,0x00,0xEC,0x17,0x00, +0x00,0xE8,0x1B,0x00,0x00,0xD8,0x0B,0x00,0x00,0xD0,0x0D,0x00,0x00,0xB0,0x05,0x00, +0x00,0xA0,0x06,0x00,0x00,0x60,0x03,0x00,0x00,0xC0,0x7F,0x00,0x00,0xFE,0xC0,0x00, +0x00,0x03,0xBF,0x01,0x80,0xFD,0x7F,0x03,0xC0,0xFE,0xFF,0x06,0x60,0xFF,0xFF,0x0D, +0xB0,0xFF,0xFF,0x1B,0xD8,0xFF,0xFF,0x37,0xEC,0xFF,0xFF,0x6F,0xF6,0xFF,0xFF,0xDF, +0xFB,0xFF,0x81,0xB1,0x0D,0x86,0x81,0xA0,0x05,0x02,0xE7,0xA4,0x65,0x32,0xE7,0xA7, +0x65,0x32,0xE7,0xA3,0x65,0x32,0xE7,0xB1,0x05,0x32,0xE7,0xB8,0x0D,0x32,0xE7,0xBC, +0x7D,0x32,0xE7,0xA4,0x7D,0x32,0xE7,0xA0,0x7D,0x02,0xE7,0xB1,0x7D,0x86,0xFF,0xBF, +0xFD,0xFF,0xFF,0xDF,0xFB,0xFF,0xFF,0x6F,0xF6,0xFF,0xFF,0x37,0xEC,0xFF,0xFF,0x1B, +0xD8,0xFF,0xFF,0x0D,0xB0,0xFF,0xFF,0x06,0x60,0xFF,0x7F,0x03,0xC0,0xFE,0xBF,0x01, +0x80,0xFD,0xC0,0x00,0x00,0x03,0x7F,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x01,0x00, +0x00,0x00,0x01,0x00,0x00,0xC0,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0xFC,0x00,0xFE, +0x00,0xFF,0x80,0xFF,0xC0,0xFF,0xE0,0xFF,0x00,0xFE,0x00,0xEF,0x00,0xCF,0x80,0x87, +0x80,0x07,0x80,0x03,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x70,0x00,0x78,0x00,0x7C, +0x00,0x7E,0x00,0x7F,0x80,0x7F,0x00,0x7C,0x00,0x6C,0x00,0x46,0x00,0x06,0x00,0x03, +0x00,0x03,0x00,0x00,0x07,0x00,0x07,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x7E,0x7E, +0xFE,0x7F,0xE0,0x07,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03, +0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xE0,0x07,0xFE,0x7F,0x7E,0x7E,0x3C,0x3C, +0x60,0x06,0xC0,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, +0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xC0,0x03,0x60,0x06,0x3C,0x3C,0x08,0x00, +0x08,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x7E,0x1C,0xFF,0x1C,0xFF,0x1C,0xFF,0xEF, +0xFF,0xFF,0xFF,0xFF,0xFE,0x3F,0xFC,0x3F,0xFE,0x7F,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x3E,0x7C,0x00,0x08,0x3C,0x08,0x62,0x00,0xC2,0x06, +0x84,0xC6,0x8A,0x19,0x54,0x1B,0xE0,0x06,0x58,0x1D,0xFC,0x33,0x60,0x61,0xDE,0x42, +0xD8,0x44,0x56,0x4A,0x14,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +0x01,0x00,0x00,0x30,0x00,0x7C,0x00,0x7E,0x80,0x1F,0xC0,0x0F,0xF8,0x3F,0xFC,0x3F, +0xFC,0x7F,0xFE,0xFF,0xFE,0xFF,0xFF,0x7F,0xFF,0x3F,0xFF,0x1F,0xFF,0x0F,0xFF,0x03, +0xFF,0x00,0x00,0x30,0x00,0x4C,0x00,0x62,0x80,0x19,0x40,0x0C,0xF8,0x32,0x04,0x29, +0x24,0x66,0xC2,0x93,0x42,0xCF,0x43,0x7C,0x21,0x20,0x01,0x10,0x41,0x0C,0x80,0x03, +0xC0,0x00,0x08,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0xB0,0x1F, +0xF8,0x3F,0xFC,0x3F,0xFE,0x7F,0xFE,0xFF,0xFE,0xFF,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF, +0xFF,0xFF,0xFF,0x7F,0xFF,0x3F,0xFF,0x0F,0xFF,0x01,0x3F,0x00,0x00,0x03,0xB0,0x1C, +0x48,0x24,0x24,0x22,0x12,0x71,0x82,0x98,0x02,0x84,0x01,0x42,0x01,0x70,0x01,0x98, +0x01,0x84,0x00,0x40,0x00,0x30,0x00,0x0E,0xC0,0x01,0x30,0x00,0x07,0x00,0x07,0x00, +0x01,0x00,0x00,0x00,0x01,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x02, +0x80,0x02,0xFE,0xFE,0x1E,0xF0,0xFE,0xFE,0x80,0x02,0x80,0x02,0x80,0x03,0x80,0x03, +0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0xFC,0x7F,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x01,0x00,0x00,0x00,0x01,0x00, +0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF, +0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0x00,0x00, +0x00,0x00,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0xFC,0x7F,0xFC,0x7F, +0xFC,0x7F,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x00,0x00,0x00, +0x07,0x00,0x07,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0xC0,0x07,0xC0,0x07,0xC0,0x06, +0xC0,0x06,0xC0,0x06,0xFE,0xFE,0xFE,0xFE,0x06,0xC0,0xFE,0xFE,0xFE,0xFE,0xC0,0x06, +0xC0,0x06,0xC0,0x06,0xC0,0x07,0xC0,0x07,0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x02, +0x80,0x02,0x80,0x02,0x80,0x02,0xFC,0x7E,0x04,0x40,0xFC,0x7E,0x80,0x02,0x80,0x02, +0x80,0x02,0x80,0x02,0x80,0x03,0x00,0x00,0x00,0x00,0x42,0x4F,0x45,0x4A,0x54,0x4B, +0x41,0x20,0x53,0x55,0x41,0x57,0x4C,0x48,0x40,0x00,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x00,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x50,0x00,0x40,0x00,0x32,0x53,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x5F,0x00,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x5F, +0x00,0x5F,0x00,0x46,0x53,0x40,0x6B,0x6B,0x35,0x6B,0x37,0x36,0x39,0x38,0x00,0x30, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x46,0x00,0x40,0x00, +0x32,0x31,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x32,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x33,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x34,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x35,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x36,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x37,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x38,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x40,0x00, +0x32,0x39,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x20,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x00,0x20,0x46,0x78,0x4F,0x00, +0x00,0x4B,0x42,0x41,0x52,0x42,0x43,0x55,0x00,0x48,0x4E,0x49,0x45,0x44,0x3A,0x58, +0x41,0x00,0x73,0x75,0x61,0x77,0x6C,0x68,0x00,0x3A,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x32,0x31,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x32,0x31, +0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x32,0x31,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x32,0x31, +0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x32,0x31,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x32,0x31, +0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x32,0x31,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x32,0x31, +0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x32,0x31,0x34,0x33,0x36,0x35, +0x38,0x37,0x30,0x39,0x32,0x31,0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x32,0x31, +0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x55,0x42,0x31,0x54,0x32,0x31, +0x34,0x33,0x36,0x35,0x42,0x00,0x54,0x55,0x31,0x32,0x33,0x32,0x35,0x34,0x00,0x36, +0x55,0x42,0x33,0x54,0x32,0x31,0x34,0x33,0x36,0x35,0x50,0x00,0x54,0x41,0x3D,0x48, +0x44,0x00,0x53,0x45,0x54,0x4B,0x50,0x4F,0x41,0x2E,0x50,0x50,0x2E,0x00,0x50,0x41, +0x00,0x50,0x45,0x44,0x4B,0x53,0x2E,0x31,0x43,0x41,0x00,0x43,0x2E,0x30,0x39,0x2E, +0x41,0x00,0x2E,0x2E,0x20,0x5A,0x8E,0x80,0x90,0x8F,0x99,0x92,0xA5,0x9A,0xB6,0xB5, +0xB8,0xB7,0xC2,0x9E,0x2E,0x2E,0x00,0xDC,0x2E,0x30,0x39,0x2E,0x2E,0x41,0x5A,0x2E, +0x80,0x20,0x8F,0x8E,0x92,0x90,0x9A,0x99,0xB5,0xA5,0xB7,0xB6,0x9E,0xB8,0x2E,0xC2, +0xDC,0x2E,0x30,0x00,0x2E,0x2E,0x61,0x39,0x2E,0x2E,0x41,0x7A,0x2E,0x2E,0x80,0x5A, +0x2E,0x2E,0x5C,0xFF,0x2A,0x3F,0x2E,0x3A,0x00,0x5F,0x2E,0x30,0x39,0x2E,0x2E,0x61, +0x7A,0x2E,0x2E,0x41,0x5A,0x2E,0x2E,0x80,0xFF,0x2E,0x3A,0x5C,0x00,0x5F,0x2E,0x61, +0x7A,0x2E,0x2E,0x30,0x39,0x2E,0x2E,0x41,0x5A,0x2E,0x2E,0x80,0xFF,0x2E,0x3F,0x3A, +0x5F,0x2A,0x61,0x00,0x2E,0x2E,0x30,0x7A,0x2E,0x2E,0x41,0x39,0x2E,0x2E,0x80,0x5A, +0x2E,0x2E,0x5F,0xFF,0x61,0x00,0x2E,0x2E,0x41,0x7A,0x2E,0x2E,0x20,0x5A,0x2E,0x80, +0xFF,0x2E,0x30,0x00,0x2E,0x2E,0x61,0x39,0x2E,0x2E,0x41,0x7A,0x2E,0x2E,0x20,0x5A, +0x2E,0x80,0xFF,0x2E,0x5B,0x00,0x5D,0x32,0x7C,0x5B,0x69,0x44,0x6B,0x73,0x69,0x20, +0x20,0x6E,0x6C,0x46,0x70,0x6F,0x79,0x70,0x25,0x20,0x3A,0x53,0x69,0x20,0x74,0x73, +0x73,0x7C,0x68,0x63,0x65,0x72,0x62,0x69,0x65,0x67,0x63,0x73,0x81,0x68,0x7A,0x74, +0x2E,0x74,0x56,0x20,0x72,0x6F,0x64,0x20,0x6D,0x65,0x6E,0x7C,0x63,0x84,0x73,0x68, +0x65,0x74,0x20,0x6E,0x65,0x56,0x73,0x72,0x63,0x75,0x7C,0x68,0x63,0x53,0x72,0x68, +0x69,0x65,0x73,0x62,0x68,0x63,0x74,0x75,0x20,0x7A,0x6E,0x65,0x66,0x74,0x72,0x65, +0x65,0x6E,0x2E,0x6E,0x5B,0x5D,0x41,0x20,0x42,0x42,0x55,0x52,0x48,0x43,0x7C,0x20, +0x45,0x57,0x54,0x49,0x52,0x45,0x00,0x5D,0x32,0x5B,0x5B,0x5D,0x46,0x7C,0x6F,0x6C, +0x70,0x70,0x20,0x79,0x53,0x25,0x20,0x3A,0x6E,0x61,0x77,0x74,0x72,0x6F,0x65,0x74, +0x20,0x74,0x69,0x6E,0x68,0x63,0x2E,0x74,0x42,0x7C,0x74,0x69,0x65,0x74,0x81,0x20, +0x65,0x62,0x70,0x72,0x81,0x72,0x65,0x66,0x20,0x6E,0x6E,0x75,0x7C,0x64,0x69,0x65, +0x65,0x6E,0x44,0x20,0x73,0x69,0x20,0x6B,0x69,0x65,0x6C,0x6E,0x67,0x65,0x6E,0x65, +0x5D,0x2E,0x20,0x5B,0x42,0x41,0x52,0x42,0x43,0x55,0x20,0x48,0x57,0x7C,0x49,0x45, +0x45,0x54,0x5D,0x52,0x5B,0x00,0x5D,0x32,0x7C,0x5B,0x61,0x44,0x65,0x74,0x20,0x6E, +0x75,0x61,0x20,0x66,0x69,0x44,0x6B,0x73,0x25,0x20,0x3A,0x53,0x64,0x20,0x66,0x65, +0x6B,0x65,0x3F,0x74,0x50,0x7C,0x81,0x72,0x65,0x66,0x20,0x6E,0x69,0x53,0x20,0x65, +0x69,0x64,0x20,0x65,0x69,0x44,0x6B,0x73,0x75,0x20,0x64,0x6E,0x64,0x20,0x65,0x69, +0x56,0x7C,0x72,0x65,0x69,0x62,0x64,0x6E,0x6E,0x75,0x73,0x67,0x61,0x6B,0x65,0x62, +0x2E,0x6C,0x5B,0x5D,0x41,0x20,0x42,0x42,0x55,0x52,0x48,0x43,0x7C,0x20,0x45,0x57, +0x54,0x49,0x52,0x45,0x00,0x5D,0x32,0x5B,0x5B,0x5D,0x44,0x7C,0x65,0x69,0x41,0x20, +0x77,0x6E,0x6E,0x65,0x75,0x64,0x67,0x6E,0x6B,0x20,0x6E,0x61,0x20,0x6E,0x69,0x64, +0x20,0x65,0x69,0x44,0x6B,0x73,0x69,0x7C,0x20,0x6E,0x6C,0x46,0x70,0x6F,0x79,0x70, +0x25,0x20,0x3A,0x53,0x6E,0x20,0x63,0x69,0x74,0x68,0x6C,0x20,0x73,0x65,0x6E,0x65, +0x5D,0x2E,0x20,0x5B,0x42,0x41,0x52,0x42,0x43,0x55,0x20,0x48,0x57,0x7C,0x49,0x45, +0x45,0x54,0x5D,0x52,0x5B,0x00,0x5D,0x32,0x7C,0x5B,0x75,0x41,0x67,0x73,0x62,0x61, +0x67,0x65,0x72,0x65,0x74,0x84,0x61,0x20,0x74,0x6E,0x6F,0x77,0x74,0x72,0x74,0x65, +0x6E,0x20,0x63,0x69,0x74,0x68,0x7C,0x21,0x73,0x49,0x20,0x74,0x73,0x65,0x61,0x20, +0x67,0x6E,0x73,0x65,0x68,0x63,0x6F,0x6C,0x73,0x73,0x6E,0x65,0x75,0x20,0x64,0x6E, +0x65,0x7C,0x6E,0x69,0x65,0x67,0x63,0x73,0x61,0x68,0x74,0x6C,0x74,0x65,0x5D,0x3F, +0x20,0x5B,0x42,0x41,0x52,0x42,0x43,0x55,0x20,0x48,0x57,0x7C,0x49,0x45,0x45,0x54, +0x5D,0x52,0x5B,0x00,0x5D,0x33,0x7C,0x5B,0x45,0x47,0x20,0x4D,0x65,0x46,0x6C,0x68, +0x72,0x65,0x5D,0x2E,0x20,0x5B,0x42,0x41,0x52,0x42,0x43,0x55,0x20,0x48,0x00,0x5D, +0x32,0x5B,0x5B,0x5D,0x44,0x7C,0x65,0x69,0x65,0x73,0x41,0x20,0x77,0x6E,0x6E,0x65, +0x75,0x64,0x67,0x6E,0x6B,0x20,0x6E,0x61,0x20,0x6E,0x61,0x64,0x7C,0x73,0x6E,0x61, +0x65,0x67,0x70,0x73,0x6F,0x72,0x68,0x63,0x6E,0x65,0x20,0x65,0x62,0x4F,0x65,0x6A, +0x74,0x6B,0x6E,0x20,0x63,0x69,0x74,0x68,0x66,0x7C,0x6E,0x69,0x65,0x64,0x2E,0x6E, +0x5B,0x5D,0x20,0x20,0x4B,0x4F,0x20,0x20,0x00,0x5D,0x5B,0x00,0x5D,0x31,0x7C,0x5B, +0x69,0x44,0x20,0x65,0x6E,0x41,0x65,0x77,0x64,0x6E,0x6E,0x75,0x20,0x67,0x65,0x62, +0x94,0x6E,0x69,0x74,0x74,0x67,0x6D,0x20,0x68,0x65,0x7C,0x72,0x6C,0x50,0x74,0x61, +0x20,0x7A,0x75,0x7A,0x20,0x6D,0x66,0x94,0x6E,0x66,0x6E,0x65,0x65,0x20,0x6E,0x69, +0x72,0x65,0x6E,0x20,0x75,0x65,0x6E,0x65,0x44,0x7C,0x74,0x61,0x69,0x65,0x20,0x2E, +0x63,0x53,0x6C,0x68,0x65,0x69,0x65,0x9E,0x20,0x6E,0x69,0x53,0x20,0x65,0x69,0x65, +0x65,0x6E,0x6E,0x7C,0x63,0x69,0x74,0x68,0x62,0x20,0x6E,0x65,0x74,0x94,0x67,0x69, +0x65,0x74,0x44,0x20,0x74,0x61,0x69,0x65,0x5D,0x2E,0x20,0x5B,0x4F,0x20,0x20,0x4B, +0x5D,0x20,0x5B,0x00,0x5D,0x31,0x7C,0x5B,0x62,0x4F,0x65,0x6A,0x74,0x6B,0x6D,0x20, +0x74,0x69,0x67,0x20,0x65,0x6C,0x63,0x69,0x65,0x68,0x20,0x6D,0x61,0x4E,0x65,0x6D, +0x7C,0x6E,0x65,0x62,0x65,0x72,0x74,0x69,0x20,0x73,0x6F,0x76,0x68,0x72,0x6E,0x61, +0x65,0x64,0x20,0x6E,0x7A,0x62,0x2E,0x77,0x68,0x20,0x74,0x61,0x64,0x7C,0x6E,0x65, +0x27,0x20,0x75,0x6E,0x20,0x72,0x65,0x6C,0x65,0x73,0x27,0x6E,0x53,0x20,0x61,0x74, +0x75,0x74,0x2E,0x73,0x5B,0x5D,0x20,0x20,0x4B,0x4F,0x20,0x20,0x00,0x5D,0x31,0x5B, +0x5B,0x5D,0x46,0x7C,0x6F,0x6C,0x70,0x70,0x20,0x79,0x69,0x6D,0x20,0x74,0x69,0x64, +0x73,0x65,0x72,0x65,0x4B,0x20,0x6E,0x65,0x75,0x6E,0x67,0x6E,0x75,0x7C,0x62,0x6E, +0x6B,0x65,0x6E,0x61,0x74,0x6E,0x5D,0x21,0x20,0x5B,0x42,0x41,0x52,0x42,0x43,0x55, +0x20,0x48,0x00,0x5D,0x5B,0x00,0x5D,0x31,0x7C,0x5B,0x65,0x44,0x20,0x72,0x72,0x41, +0x65,0x62,0x74,0x69,0x73,0x73,0x65,0x70,0x63,0x69,0x65,0x68,0x20,0x72,0x65,0x72, +0x63,0x69,0x74,0x68,0x6E,0x7C,0x63,0x69,0x74,0x68,0x66,0x20,0x72,0x81,0x64,0x20, +0x65,0x69,0x65,0x73,0x41,0x20,0x77,0x6E,0x6E,0x65,0x75,0x64,0x67,0x6E,0x5D,0x2E, +0x20,0x5B,0x4F,0x20,0x20,0x4B,0x5D,0x20,0x5B,0x00,0x5D,0x33,0x7C,0x5B,0x4F,0x54, +0x20,0x53,0x65,0x46,0x6C,0x68,0x72,0x65,0x23,0x20,0x57,0x25,0x5D,0x2E,0x20,0x5B, +0x42,0x41,0x52,0x42,0x43,0x55,0x20,0x48,0x00,0x5D,0x33,0x5B,0x5B,0x5D,0x46,0x7C, +0x6C,0x61,0x63,0x73,0x65,0x68,0x46,0x20,0x6E,0x75,0x74,0x6B,0x6F,0x69,0x73,0x6E, +0x23,0x20,0x5B,0x5D,0x41,0x20,0x42,0x42,0x55,0x52,0x48,0x43,0x5D,0x20,0x00,0x00, +0x33,0x5B,0x5B,0x5D,0x42,0x7C,0x74,0x69,0x65,0x74,0x44,0x20,0x73,0x69,0x20,0x6B, +0x53,0x25,0x69,0x20,0x20,0x6E,0x6C,0x46,0x70,0x6F,0x79,0x70,0x41,0x20,0x7C,0x3A, +0x69,0x65,0x6C,0x6E,0x67,0x65,0x6E,0x65,0x5D,0x2E,0x20,0x5B,0x4F,0x20,0x20,0x4B, +0x5D,0x20,0x47,0x00,0x4D,0x45,0x45,0x47,0x2E,0x52,0x53,0x52,0x00,0x43,0x06,0x00, +0xA6,0x9A,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0x00,0x7C,0x10,0x54,0x13,0xDA,0x13, +0x7A,0x13,0x00,0x00,0xE8,0x13,0x76,0x13,0x24,0x00,0xAC,0x00,0x0E,0x00,0x1A,0x00, +0x00,0x00,0x01,0x00,0x17,0x00,0x00,0x00,0x84,0x21,0x00,0x00,0x5C,0x00,0x00,0x00, +0x94,0x04,0x00,0x00,0xB4,0x05,0x00,0x00,0x8C,0x06,0x00,0x00,0x64,0x07,0x00,0x00, +0x84,0x08,0x00,0x00,0x44,0x09,0x00,0x00,0xEC,0x09,0x00,0x00,0xF4,0x0A,0x00,0x00, +0x14,0x0C,0x00,0x00,0xA4,0x0C,0x00,0x00,0x34,0x0D,0x00,0x00,0xC4,0x0D,0x00,0x00, +0x3C,0x0E,0xFF,0xFF,0x01,0x00,0x07,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x19,0x00,0x07,0x00,0x02,0x00,0x02,0x00, +0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x50,0x00, +0x01,0x02,0x01,0x00,0x03,0x00,0x06,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x02,0x00,0x00,0x00,0x1C,0x00,0x01,0x03,0x04,0x00,0xFF,0xFF,0xFF,0xFF, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAC,0x14,0x00,0x00,0x00,0x00,0x06,0x00, +0x01,0x03,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xB3,0x14,0x06,0x00,0x00,0x00,0x07,0x00,0x01,0x03,0x06,0x00,0xFF,0xFF,0xFF,0xFF, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBB,0x14,0x0D,0x00,0x00,0x00,0x07,0x00, +0x01,0x03,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xC3,0x14,0x14,0x00,0x00,0x00,0x08,0x00,0x01,0x03,0x00,0x00,0x08,0x00,0x24,0x00, +0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x50,0x00, +0x18,0x00,0x11,0x00,0x09,0x00,0x10,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x11,0x02,0x00,0x00,0x00,0x14,0x00,0x08,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x14,0x00,0x00,0x00,0x00,0x14,0x00, +0x01,0x00,0x0B,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +0xDE,0x14,0x00,0x00,0x01,0x00,0x14,0x00,0x01,0x00,0x0C,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF3,0x14,0x00,0x00,0x02,0x00,0x14,0x00, +0x01,0x00,0x0D,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xF5,0x14,0x00,0x00,0x03,0x00,0x14,0x00,0x01,0x00,0x0E,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF7,0x14,0x00,0x00,0x04,0x00,0x14,0x00, +0x01,0x00,0x0F,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xF9,0x14,0x00,0x00,0x05,0x00,0x14,0x00,0x01,0x00,0x10,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0x14,0x00,0x00,0x06,0x00,0x14,0x00, +0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFD,0x14,0x00,0x00,0x07,0x00,0x14,0x00,0x01,0x00,0x1C,0x00,0x12,0x00,0x19,0x00, +0x14,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x11,0x08,0x00,0x00,0x00,0x14,0x00, +0x08,0x00,0x13,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFF,0x14,0x00,0x00,0x00,0x00,0x14,0x00,0x01,0x00,0x14,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x15,0x00,0x00,0x01,0x00,0x14,0x00, +0x01,0x00,0x15,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +0x16,0x15,0x00,0x00,0x02,0x00,0x14,0x00,0x01,0x00,0x16,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x15,0x00,0x00,0x03,0x00,0x14,0x00, +0x01,0x00,0x17,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x3A,0x15,0x00,0x00,0x04,0x00,0x14,0x00,0x01,0x00,0x18,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x15,0x00,0x00,0x05,0x00,0x14,0x00, +0x01,0x00,0x19,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +0x58,0x15,0x00,0x00,0x06,0x00,0x14,0x00,0x01,0x00,0x11,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6D,0x15,0x00,0x00,0x07,0x00,0x14,0x00, +0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x7C,0x15,0x00,0x00,0x08,0x00,0x14,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x15,0x00,0x00,0x09,0x00,0x14,0x00, +0x01,0x00,0x24,0x00,0x1D,0x00,0x23,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x11,0x0F,0x00,0x00,0x00,0x0E,0x00,0x07,0x00,0x1E,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x15,0x00,0x00,0x00,0x00,0x0E,0x00, +0x01,0x00,0x1F,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x8D,0x15,0x00,0x00,0x01,0x00,0x0E,0x00,0x01,0x00,0x20,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x98,0x15,0x00,0x00,0x02,0x00,0x0E,0x00, +0x01,0x00,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xA7,0x15,0x00,0x00,0x03,0x00,0x0E,0x00,0x01,0x00,0x22,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB5,0x15,0x00,0x00,0x04,0x00,0x0E,0x00, +0x01,0x00,0x23,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xC3,0x15,0x00,0x00,0x05,0x00,0x0E,0x00,0x01,0x00,0x1C,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD1,0x15,0x00,0x00,0x06,0x00,0x0E,0x00, +0x01,0x00,0x07,0x00,0x25,0x00,0x2C,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, +0x00,0x11,0x10,0x00,0x00,0x00,0x15,0x00,0x08,0x00,0x26,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDD,0x15,0x00,0x00,0x00,0x00,0x15,0x00, +0x01,0x00,0x27,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xF1,0x15,0x00,0x00,0x01,0x00,0x15,0x00,0x01,0x00,0x28,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x06,0x16,0x00,0x00,0x02,0x00,0x15,0x00, +0x01,0x00,0x29,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x1C,0x16,0x00,0x00,0x03,0x00,0x15,0x00,0x01,0x00,0x2A,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x16,0x00,0x00,0x04,0x00,0x15,0x00, +0x01,0x00,0x2B,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x40,0x16,0x00,0x00,0x05,0x00,0x15,0x00,0x01,0x00,0x2C,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x4B,0x16,0x00,0x00,0x06,0x00,0x15,0x00, +0x01,0x00,0x24,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x61,0x16,0x00,0x00,0x07,0x00,0x15,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x0B,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00, +0x0D,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x6C,0x16,0x01,0x00,0x01,0x00,0x10,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0x0C,0x00,0x03,0x00,0x13,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x98,0x10,0x02,0x00,0x04,0x00,0x19,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB4,0x10,0x01,0x00,0x05,0x00,0x1A,0x00, +0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xD0,0x10,0x1C,0x00,0x05,0x00,0x08,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x16,0x09,0x00,0x07,0x00,0x0B,0x00, +0x01,0x00,0x0A,0x00,0x08,0x00,0x09,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x13,0x00,0x07,0x00,0x17,0x00,0x03,0x00,0x09,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x80,0x16,0x00,0x00,0x00,0x00,0x10,0x00, +0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x90,0x16,0x00,0x00,0x02,0x00,0x0A,0x00,0x01,0x00,0x0B,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x9A,0x16,0x09,0x00,0x0B,0x00,0x08,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x25,0x00,0x00,0x00,0x00,0x00, +0x9D,0x16,0x19,0x00,0x0B,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x08,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00, +0x0C,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xA5,0x16,0x01,0x00,0x01,0x00,0x10,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x10,0x08,0x00,0x03,0x00,0x19,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x08,0x11,0x0D,0x00,0x04,0x00,0x17,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x11,0x04,0x00,0x05,0x00,0x1C,0x00, +0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x40,0x11,0x04,0x00,0x06,0x00,0x1C,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0x11,0x04,0x00,0x07,0x00,0x1C,0x00, +0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x78,0x11,0x06,0x00,0x08,0x00,0x1A,0x00,0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0xAF,0x16,0x1A,0x00,0x0A,0x00,0x08,0x00, +0x01,0x00,0xFF,0xFF,0x01,0x00,0x08,0x00,0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00,0x0B,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB2,0x16,0x01,0x00,0x01,0x00,0x12,0x00, +0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x94,0x11,0x08,0x00,0x03,0x00,0x1A,0x00,0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0x11,0x0F,0x00,0x04,0x00,0x16,0x00, +0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xCC,0x11,0x1D,0x00,0x04,0x00,0x08,0x00,0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x11,0x01,0x00,0x05,0x00,0x1C,0x00, +0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x40,0x11,0x03,0x00,0x06,0x00,0x1A,0x00,0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0x11,0x01,0x00,0x07,0x00,0x1C,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00, +0xBE,0x16,0x1A,0x00,0x09,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x0B,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00, +0x10,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xDA,0x13,0x10,0x04,0x05,0x00,0x04,0x00,0x04,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0x16,0x03,0x00,0x01,0x00,0x20,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xE3,0x16,0x0B,0x00,0x04,0x00,0x07,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF3,0x16,0x09,0x00,0x03,0x00,0x10,0x00, +0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFF,0x16,0x0F,0x00,0x05,0x00,0x10,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x17,0x09,0x00,0x06,0x00,0x1D,0x00, +0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x03,0x17,0x0A,0x00,0x0C,0x00,0x16,0x00,0x01,0x00,0x09,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x17,0x07,0x00,0x09,0x00,0x0A,0x00, +0x01,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x31,0x17,0x09,0x00,0x0B,0x00,0x00,0x00,0x01,0x00,0x0B,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x17,0x0B,0x00,0x0A,0x00,0x2A,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00, +0x5A,0x17,0x0F,0x00,0x0E,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x07,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00, +0x0B,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x5D,0x17,0x03,0x00,0x01,0x00,0x17,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x17,0x03,0x00,0x03,0x00,0x17,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x8F,0x17,0x03,0x00,0x04,0x00,0x17,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x17,0x03,0x00,0x05,0x00,0x17,0x00, +0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xC4,0x17,0x03,0x00,0x06,0x00,0x17,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x17,0x03,0x00,0x07,0x00,0x17,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00, +0xC8,0x17,0x1A,0x00,0x09,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x06,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x28,0x00, +0x09,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xCB,0x17,0x03,0x00,0x01,0x00,0x10,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xE8,0x11,0x06,0x00,0x03,0x00,0x13,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00, +0x04,0x12,0x01,0x00,0x05,0x00,0x26,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0xDC,0x17,0x09,0x00,0x07,0x00,0x08,0x00, +0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00, +0xDF,0x17,0x19,0x00,0x07,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xE7,0x17,0x01,0x00,0x04,0x00,0x0C,0x00, +0x01,0x00,0xFF,0xFF,0x01,0x00,0x0A,0x00,0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00,0x08,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF2,0x17,0x03,0x00,0x01,0x00,0x12,0x00, +0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00, +0x20,0x12,0x04,0x00,0x03,0x00,0x19,0x00,0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x3C,0x12,0x08,0x00,0x04,0x00,0x1D,0x00, +0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x18,0x08,0x00,0x06,0x00,0x0A,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x06,0x00,0x18,0x00, +0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x04,0x18,0x01,0x00,0x00,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x06,0x18,0x0A,0x00,0x00,0x00,0x08,0x00, +0x01,0x00,0x09,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00, +0x08,0x18,0x06,0x00,0x06,0x00,0x08,0x00,0x01,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x11,0x18,0x10,0x00,0x06,0x00,0x08,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00, +0x19,0x18,0x1A,0x00,0x06,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x0A,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00, +0x0D,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x21,0x18,0x03,0x00,0x01,0x00,0x13,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x12,0x0D,0x00,0x03,0x00,0x15,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00, +0x74,0x12,0x09,0x00,0x04,0x00,0x13,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x18,0x04,0x00,0x05,0x00,0x11,0x00, +0x01,0x00,0x09,0x00,0x06,0x00,0x08,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x00,0x07,0x00,0x28,0x00,0x04,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x43,0x18,0x00,0x00,0x00,0x00,0x05,0x00, +0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x47,0x18,0x06,0x00,0x00,0x00,0x05,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x4B,0x18,0x0D,0x00,0x00,0x00,0x17,0x00, +0x01,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00, +0x61,0x18,0x12,0x00,0x0B,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x64,0x18,0x1C,0x00,0x0B,0x00,0x08,0x00, +0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x31,0x00,0x00,0x00,0x00,0x00, +0x6C,0x18,0x0D,0x00,0x02,0x00,0x16,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x05,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x22,0x00, +0x08,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x6E,0x18,0x03,0x00,0x01,0x00,0x14,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x12,0x02,0x00,0x03,0x00,0x1E,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xAC,0x12,0x03,0x00,0x04,0x00,0x1D,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x86,0x18,0x0D,0x00,0x06,0x00,0x08,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x25,0x00,0x00,0x00,0x00,0x00, +0x89,0x18,0x17,0x00,0x06,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x05,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x1E,0x00, +0x08,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x91,0x18,0x03,0x00,0x01,0x00,0x17,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0x12,0x01,0x00,0x03,0x00,0x1C,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xE4,0x12,0x02,0x00,0x04,0x00,0x1B,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0xA8,0x18,0x09,0x00,0x06,0x00,0x08,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x27,0x00,0x00,0x00,0x00,0x00, +0xAB,0x18,0x13,0x00,0x06,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x05,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x22,0x00, +0x08,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xB3,0x18,0x03,0x00,0x01,0x00,0x1C,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x02,0x00,0x03,0x00,0x1F,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00, +0x1C,0x13,0x04,0x00,0x04,0x00,0x1D,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0xC9,0x18,0x0D,0x00,0x06,0x00,0x08,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x25,0x00,0x00,0x00,0x00,0x00, +0xCC,0x18,0x17,0x00,0x06,0x00,0x08,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x04,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x1B,0x00, +0x07,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xD4,0x18,0x03,0x00,0x01,0x00,0x0A,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x38,0x13,0x03,0x00,0x03,0x00,0x13,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00, +0xE1,0x18,0x06,0x00,0x05,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0xE4,0x18,0x10,0x00,0x05,0x00,0x08,0x00, +0x01,0x00,0xFF,0xFF,0x01,0x00,0x14,0x00,0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x26,0x00,0x0D,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x18,0x03,0x00,0x01,0x00,0x10,0x00, +0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFB,0x18,0x04,0x00,0x03,0x00,0x10,0x00,0x01,0x00,0x06,0x00,0x04,0x00,0x05,0x00, +0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0x03,0x00,0x0C,0x00, +0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x0D,0x19,0x00,0x00,0x00,0x00,0x05,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x10,0x19,0x07,0x00,0x00,0x00,0x05,0x00, +0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x15,0x19,0x03,0x00,0x05,0x00,0x0F,0x00,0x01,0x00,0x11,0x00,0x08,0x00,0x09,0x00, +0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0x05,0x00,0x0C,0x00, +0x01,0x00,0x09,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x28,0x19,0x00,0x00,0x00,0x00,0x05,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x2B,0x19,0x07,0x00,0x00,0x00,0x05,0x00, +0x01,0x00,0x0B,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x30,0x19,0x02,0x00,0x07,0x00,0x13,0x00,0x01,0x00,0x11,0x00,0x0C,0x00,0x10,0x00, +0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x09,0x00,0x1F,0x00, +0x02,0x00,0x0D,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x32,0x19,0x00,0x00,0x00,0x00,0x07,0x00,0x01,0x00,0x0E,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x34,0x19,0x09,0x00,0x00,0x00,0x03,0x00, +0x01,0x00,0x0F,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x36,0x19,0x0E,0x00,0x00,0x00,0x03,0x00,0x01,0x00,0x10,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x38,0x19,0x13,0x00,0x00,0x00,0x03,0x00, +0x01,0x00,0x0B,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x3A,0x19,0x18,0x00,0x00,0x00,0x07,0x00,0x01,0x00,0x12,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x3C,0x19,0x05,0x00,0x0B,0x00,0x08,0x00, +0x01,0x00,0x13,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00, +0x3F,0x19,0x1B,0x00,0x0B,0x00,0x08,0x00,0x01,0x00,0x14,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x19,0x01,0x00,0x07,0x00,0x1F,0x00, +0x02,0x00,0x00,0x00,0x15,0x00,0x17,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x03,0x00,0x09,0x00,0x1F,0x00,0x02,0x00,0x16,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x5C,0x19,0x04,0x00,0x00,0x00,0x08,0x00, +0x01,0x00,0x17,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x63,0x19,0x0F,0x00,0x00,0x00,0x07,0x00,0x01,0x00,0x14,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x6A,0x19,0x19,0x00,0x00,0x00,0x05,0x00, +0x01,0x00,0x00,0x00,0x6F,0x19,0x00,0x00,0x7B,0x19,0x00,0x00,0x8F,0x19,0x03,0x00, +0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x02,0x00,0x16,0x00,0x00,0x00, +0x91,0x19,0x00,0x00,0x9A,0x19,0x00,0x00,0xAB,0x19,0x03,0x00,0x00,0x00,0x01,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x1A,0x00,0x00,0x00,0xAD,0x19,0x00,0x00, +0xB4,0x19,0x00,0x00,0xC3,0x19,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x06,0x00,0x1D,0x00,0x00,0x00,0xC5,0x19,0x00,0x00,0xCC,0x19,0x00,0x00, +0xD5,0x19,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x06,0x00, +0x1B,0x00,0x00,0x00,0xDC,0x19,0x00,0x00,0xDE,0x19,0x00,0x00,0xF1,0x19,0x03,0x00, +0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x02,0x00,0x16,0x00,0x00,0x00, +0xF3,0x19,0x00,0x00,0xFF,0x19,0x00,0x00,0x16,0x1A,0x03,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x1A,0x00,0x00,0x00,0x18,0x1A,0x00,0x00, +0x1E,0x1A,0x00,0x00,0x30,0x1A,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x06,0x00,0x1D,0x00,0x00,0x00,0x32,0x1A,0x00,0x00,0x38,0x1A,0x00,0x00, +0x4B,0x1A,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x06,0x00, +0x1B,0x00,0x00,0x00,0x4D,0x1A,0x00,0x00,0x56,0x1A,0x00,0x00,0x6E,0x1A,0x03,0x00, +0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x09,0x00,0x16,0x00,0x00,0x00, +0x70,0x1A,0x00,0x00,0x79,0x1A,0x00,0x00,0x8F,0x1A,0x03,0x00,0x00,0x00,0x01,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x09,0x00,0x1B,0x00,0x00,0x00,0x91,0x1A,0x00,0x00, +0x9D,0x1A,0x00,0x00,0xB6,0x1A,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x0C,0x00,0x1A,0x00,0x00,0x00,0xB8,0x1A,0x00,0x00,0xBF,0x1A,0x00,0x00, +0xCF,0x1A,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x07,0x00, +0x14,0x00,0x00,0x00,0xD1,0x1A,0x00,0x00,0xD8,0x1A,0x00,0x00,0xE1,0x1A,0x03,0x00, +0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x07,0x00,0x09,0x00,0x00,0x00, +0xE8,0x1A,0x00,0x00,0xF4,0x1A,0x00,0x00,0x08,0x1B,0x03,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x14,0x00,0x00,0x00,0x0A,0x1B,0x00,0x00, +0x31,0x1B,0x00,0x00,0x58,0x1B,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x27,0x00,0x27,0x00,0x00,0x00,0x5A,0x1B,0x00,0x00,0x5C,0x1B,0x00,0x00, +0x6D,0x1B,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x02,0x00, +0x13,0x00,0x00,0x00,0x6F,0x1B,0x00,0x00,0x7C,0x1B,0x00,0x00,0x94,0x1B,0x03,0x00, +0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x0D,0x00,0x19,0x00,0x00,0x00, +0x96,0x1B,0x00,0x00,0xA2,0x1B,0x00,0x00,0xB6,0x1B,0x03,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x20,0x00,0x00,0x00,0xB8,0x1B,0x00,0x00, +0xBC,0x1B,0x00,0x00,0xCB,0x1B,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x0C,0x00,0x20,0x00,0x00,0x00,0xCD,0x1B,0x00,0x00,0xD2,0x1B,0x00,0x00, +0xEB,0x1B,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x05,0x00, +0x17,0x00,0x00,0x00,0xED,0x1B,0x00,0x00,0xF2,0x1B,0x00,0x00,0x0C,0x1C,0x03,0x00, +0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x05,0x00,0x15,0x00,0x00,0x00, +0x0E,0x1C,0x00,0x00,0x13,0x1C,0x00,0x00,0x2C,0x1C,0x03,0x00,0x00,0x00,0x01,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x05,0x00,0x19,0x00,0x00,0x00,0x2E,0x1C,0x00,0x00, +0x33,0x1C,0x00,0x00,0x4D,0x1C,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x05,0x00,0x17,0x00,0x00,0x00,0x4F,0x1C,0x00,0x00,0x5B,0x1C,0x00,0x00, +0x7B,0x1C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x7D,0x1C,0x00,0x00,0x89,0x1C,0x00,0x00,0xA7,0x1C,0x03,0x00, +0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xA9,0x1C,0x00,0x00,0xB5,0x1C,0x00,0x00,0xC9,0x1C,0x03,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xCB,0x1C,0x00,0x00,0xE4,0x1C,0x00,0x00,0xE6,0x1C,0x00,0x00,0xED,0x1C, +0x00,0x00,0xF9,0x1C,0x00,0x00,0x03,0x1D,0x00,0x00,0x05,0x1D,0x00,0x00,0x59,0x1D, +0x00,0x00,0xB1,0x1D,0x00,0x00,0xE6,0x1D,0x00,0x00,0x2A,0x1E,0x00,0x00,0x70,0x1E, +0x00,0x00,0xB4,0x1E,0x00,0x00,0x0A,0x1F,0x00,0x00,0x77,0x1F,0x00,0x00,0xB9,0x1F, +0x00,0x00,0xEE,0x1F,0x00,0x00,0x4F,0x20,0x00,0x00,0x87,0x20,0x00,0x00,0xBA,0x20, +0x00,0x00,0x17,0x21,0x00,0x00,0x59,0x21,0x00,0x00,0x5B,0x21,0x06,0x00,0xE8,0xA9, +0x00,0x00,0xE8,0x13,0x04,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, +0x00,0x00,0x1B,0x00,0x00,0xB0,0x1B,0x00,0x00,0xB0,0x1B,0x00,0x00,0xB0,0x1B,0x00, +0x00,0xB0,0x1B,0x00,0x00,0xB0,0x1B,0x00,0x00,0xB0,0x3B,0x00,0x00,0xB8,0x3B,0x00, +0x00,0xB8,0x3B,0x00,0x00,0xB8,0x3B,0x00,0x00,0xB8,0x7B,0x00,0x00,0xBC,0x7B,0x00, +0x00,0xBC,0xFB,0x00,0x00,0xBE,0xF3,0x01,0x00,0x9F,0xF3,0x03,0x80,0x9F,0xE3,0x0F, +0xE0,0x8F,0xC3,0x7F,0xFC,0x87,0x83,0x7F,0xFC,0x83,0x03,0x7E,0xFC,0x80,0x03,0x78, +0x3C,0x80,0x00,0x00,0x00,0x00,0xF9,0x09,0x8C,0x0F,0xFB,0x1D,0xCC,0x8F,0x63,0x1C, +0xEC,0x8C,0x66,0x36,0xEC,0xCC,0x66,0x36,0xCC,0xCD,0x6F,0x7F,0x8C,0xED,0x6F,0x7F, +0xCC,0xED,0x6C,0x63,0xEC,0x6C,0x6C,0x63,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00, +0x06,0x00,0x4C,0x9C,0x45,0x44,0x4B,0x53,0x45,0x47,0x2E,0x52,0x53,0x52,0x00,0x43, +0x01,0x00,0x06,0x00,0xBA,0x83,0x06,0x00,0xBA,0x83,0x06,0x00,0x20,0x84,0x06,0x00, +0x52,0x84,0x06,0x00,0x52,0x84,0x06,0x00,0x9C,0x83,0x06,0x00,0x52,0x84,0x06,0x00, +0x9C,0x83,0x06,0x00,0xBA,0x83,0x06,0x00,0xBA,0x83,0x06,0x00,0xEE,0x83,0x06,0x00, +0x9C,0x83,0x44,0x20,0x53,0x45,0x20,0x4B,0x20,0x00,0x41,0x44,0x45,0x54,0x20,0x49, +0x20,0x00,0x4E,0x49,0x45,0x44,0x20,0x58,0x20,0x00,0x58,0x45,0x52,0x54,0x53,0x41, +0x00,0x20,0x20,0x20,0x65,0x44,0x6B,0x73,0x6F,0x74,0x20,0x70,0x6E,0x49,0x6F,0x66, +0x2E,0x2E,0x00,0x2E,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x31,0x00,0x32,0x00,0x33,0x00,0x34,0x00, +0x35,0x00,0x36,0x00,0x20,0x00,0x94,0x20,0x66,0x66,0x65,0x6E,0x20,0x00,0x7A,0x20, +0x69,0x65,0x65,0x67,0x49,0x20,0x66,0x6E,0x2E,0x6F,0x00,0x2E,0x2D,0x2D,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, +0x20,0x00,0x6E,0x20,0x75,0x65,0x72,0x65,0x4F,0x20,0x64,0x72,0x65,0x6E,0x00,0x72, +0x20,0x20,0x63,0x73,0x6C,0x68,0x65,0x69,0x65,0x9E,0x20,0x00,0x73,0x20,0x68,0x63, +0x69,0x6C,0x9E,0x65,0x20,0x65,0x65,0x46,0x73,0x6E,0x65,0x74,0x00,0x72,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, +0x2D,0x2D,0x20,0x00,0x66,0x20,0x72,0x6F,0x61,0x6D,0x69,0x74,0x72,0x65,0x2E,0x65, +0x00,0x2E,0x00,0x20,0x00,0x20,0x20,0x20,0x6C,0x61,0x20,0x73,0x69,0x42,0x64,0x6C, +0x72,0x65,0x20,0x00,0x61,0x20,0x73,0x6C,0x54,0x20,0x78,0x65,0x00,0x74,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x00,0x6F,0x20, +0x64,0x72,0x65,0x6E,0x4E,0x20,0x6D,0x61,0x6E,0x65,0x20,0x00,0x6F,0x20,0x64,0x72, +0x65,0x6E,0x44,0x20,0x74,0x61,0x6D,0x75,0x20,0x00,0x6F,0x20,0x64,0x72,0x65,0x6E, +0x47,0x20,0x94,0x72,0x65,0x9E,0x20,0x00,0x6F,0x20,0x64,0x72,0x65,0x6E,0x41,0x20, +0x74,0x72,0x20,0x00,0x46,0x20,0x6F,0x6C,0x70,0x70,0x20,0x79,0x6E,0x61,0x65,0x6D, +0x64,0x6C,0x6E,0x65,0x2E,0x2E,0x20,0x00,0x41,0x20,0x77,0x6E,0x6E,0x65,0x75,0x64, +0x67,0x6E,0x61,0x20,0x6D,0x6E,0x6C,0x65,0x65,0x64,0x00,0x6E,0x2D,0x2D,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, +0x00,0x2D,0x20,0x20,0x6F,0x56,0x65,0x72,0x6E,0x69,0x74,0x73,0x6C,0x65,0x75,0x6C, +0x67,0x6E,0x2E,0x2E,0x20,0x00,0x41,0x20,0x62,0x72,0x69,0x65,0x20,0x74,0x69,0x73, +0x68,0x63,0x72,0x65,0x00,0x6E,0x20,0x20,0x61,0x48,0x64,0x72,0x6F,0x63,0x79,0x70, +0x2D,0x00,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x00,0x42,0x20,0x69,0x6C,0x74,0x74,0x72,0x65, +0x00,0x20,0x41,0x44,0x45,0x54,0x20,0x49,0x4E,0x49,0x4F,0x46,0x4D,0x00,0x72,0x65, +0x6D,0x6B,0x6C,0x61,0x00,0x3A,0x65,0x6C,0x65,0x73,0x2F,0x6E,0x63,0x73,0x72,0x68, +0x69,0x65,0x65,0x62,0x00,0x6E,0x75,0x6E,0x20,0x72,0x65,0x6C,0x65,0x73,0x00,0x6E, +0x4B,0x4F,0x41,0x00,0x42,0x42,0x55,0x52,0x48,0x43,0x44,0x00,0x53,0x49,0x2D,0x4B, +0x4E,0x49,0x4F,0x46,0x4F,0x00,0x00,0x4B,0x52,0x4F,0x4E,0x44,0x52,0x45,0x49,0x2D, +0x46,0x4E,0x00,0x4F,0x4B,0x4F,0x47,0x00,0x4D,0x45,0x20,0x2C,0x72,0x47,0x70,0x61, +0x69,0x68,0x73,0x63,0x45,0x20,0x76,0x6E,0x72,0x69,0x6E,0x6F,0x65,0x6D,0x74,0x6E, +0x4D,0x20,0x6E,0x61,0x67,0x61,0x72,0x65,0x2D,0x00,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D, +0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x2D,0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20, +0x54,0x20,0x53,0x4F,0x20,0x00,0x20,0x00,0x41,0x00,0x6C,0x6C,0x52,0x20,0x67,0x69, +0x74,0x68,0x20,0x73,0x65,0x52,0x65,0x73,0x76,0x72,0x64,0x65,0x00,0x2E,0x6F,0x43, +0x79,0x70,0x69,0x72,0x68,0x67,0x20,0x74,0x63,0x28,0x20,0x29,0x39,0x31,0x36,0x38, +0x20,0x2C,0x39,0x31,0x37,0x38,0x44,0x00,0x67,0x69,0x74,0x69,0x6C,0x61,0x52,0x20, +0x73,0x65,0x61,0x65,0x63,0x72,0x2C,0x68,0x49,0x20,0x63,0x6E,0x00,0x2E,0x74,0x41, +0x72,0x61,0x20,0x69,0x6F,0x43,0x70,0x72,0x72,0x6F,0x74,0x61,0x6F,0x69,0x00,0x6E, +0x4B,0x4F,0x50,0x00,0x50,0x41,0x45,0x49,0x4B,0x52,0x52,0x4F,0x20,0x42,0x4E,0x49, +0x4F,0x46,0x4D,0x52,0x54,0x41,0x4F,0x49,0x00,0x4E,0x65,0x57,0x66,0x72,0x6E,0x65, +0x53,0x20,0x65,0x69,0x6E,0x20,0x72,0x75,0x64,0x20,0x65,0x69,0x4F,0x20,0x6A,0x62, +0x6B,0x65,0x65,0x74,0x69,0x00,0x20,0x6E,0x65,0x64,0x20,0x6E,0x61,0x50,0x69,0x70, +0x72,0x65,0x6F,0x6B,0x62,0x72,0x20,0x2C,0x69,0x64,0x20,0x65,0x69,0x53,0x00,0x65, +0x81,0x66,0x20,0x72,0x4D,0x49,0x45,0x4D,0x20,0x52,0x94,0x6C,0x63,0x73,0x65,0x68, +0x20,0x6E,0x6F,0x77,0x6C,0x6C,0x6E,0x65,0x00,0x2E,0x00,0x20,0x00,0x20,0x4B,0x4F, +0x41,0x00,0x57,0x4E,0x4E,0x45,0x55,0x44,0x47,0x4E,0x99,0x20,0x46,0x46,0x45,0x4E, +0x00,0x4E,0x4B,0x4F,0x41,0x00,0x42,0x42,0x55,0x52,0x48,0x43,0x50,0x00,0x72,0x61, +0x6D,0x61,0x74,0x65,0x72,0x65,0x00,0x3A,0x4C,0x46,0x50,0x4F,0x59,0x50,0x41,0x20, +0x4D,0x4E,0x4C,0x45,0x45,0x44,0x00,0x4E,0x00,0x20,0x00,0x20,0x00,0x20,0x4E,0x41, +0x45,0x4D,0x44,0x4C,0x4E,0x45,0x4C,0x00,0x53,0x94,0x48,0x43,0x4E,0x45,0x41,0x00, +0x42,0x42,0x55,0x52,0x48,0x43,0x41,0x00,0x57,0x4E,0x4E,0x45,0x55,0x44,0x47,0x4E, +0x41,0x20,0x4D,0x4E,0x4C,0x45,0x45,0x44,0x00,0x4E,0x6E,0x41,0x65,0x77,0x64,0x6E, +0x6E,0x75,0x73,0x67,0x72,0x61,0x3A,0x74,0x47,0x00,0x4D,0x45,0x54,0x00,0x53,0x4F, +0x54,0x00,0x53,0x4F,0x65,0x20,0x6C,0x72,0x75,0x61,0x74,0x62,0x50,0x20,0x72,0x61, +0x6D,0x61,0x74,0x65,0x72,0x65,0x4F,0x00,0x00,0x4B,0x42,0x41,0x52,0x42,0x43,0x55, +0x00,0x48,0x00,0x20,0x52,0x4F,0x4E,0x44,0x52,0x45,0x44,0x2F,0x54,0x41,0x49,0x45, +0x4E,0x45,0x4B,0x20,0x50,0x4F,0x45,0x49,0x45,0x52,0x00,0x4E,0x4B,0x4F,0x41,0x00, +0x42,0x42,0x55,0x52,0x48,0x43,0x4F,0x00,0x44,0x52,0x45,0x4E,0x2F,0x52,0x41,0x44, +0x45,0x54,0x45,0x49,0x20,0x4E,0x99,0x4C,0x43,0x53,0x45,0x48,0x00,0x4E,0x4B,0x4F, +0x41,0x00,0x42,0x42,0x55,0x52,0x48,0x43,0x4E,0x00,0x4D,0x41,0x20,0x45,0x58,0x45, +0x53,0x49,0x49,0x54,0x52,0x45,0x20,0x54,0x43,0x53,0x4F,0x48,0x21,0x4E,0x4F,0x00, +0x00,0x4B,0x42,0x41,0x52,0x42,0x43,0x55,0x00,0x48,0x45,0x4E,0x45,0x55,0x20,0x52, +0x52,0x4F,0x4E,0x44,0x52,0x45,0x4F,0x00,0x00,0x4B,0x42,0x41,0x52,0x42,0x43,0x55, +0x00,0x48,0x4F,0x56,0x45,0x52,0x4E,0x49,0x54,0x53,0x4C,0x45,0x55,0x4C,0x47,0x4E, +0x4C,0x00,0x73,0x94,0x68,0x63,0x65,0x62,0x74,0x73,0x74,0x84,0x67,0x69,0x6E,0x75, +0x3A,0x67,0x4A,0x00,0x00,0x41,0x45,0x4E,0x4E,0x49,0x4B,0x00,0x70,0x6F,0x65,0x69, +0x62,0x72,0x73,0x65,0x84,0x74,0x69,0x74,0x75,0x67,0x67,0x6E,0x00,0x3A,0x41,0x4A, +0x4E,0x00,0x49,0x45,0x00,0x4E,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20, +0x00,0x20,0x4B,0x4F,0x41,0x00,0x42,0x42,0x55,0x52,0x48,0x43,0x42,0x00,0x6C,0x69, +0x73,0x64,0x68,0x63,0x72,0x69,0x61,0x6D,0x66,0x75,0x94,0x6C,0x75,0x73,0x67,0x6E, +0x00,0x3A,0x45,0x47,0x49,0x52,0x47,0x4E,0x4D,0x00,0x54,0x49,0x45,0x54,0x00,0x4C, +0x4F,0x48,0x48,0x43,0x40,0x00,0x33,0x32,0x35,0x34,0x37,0x36,0x39,0x38,0x31,0x30, +0x4E,0x00,0x6D,0x61,0x3A,0x65,0x20,0x20,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x2E,0x5F,0x5F,0x46,0x00,0x40,0x00,0x33,0x32,0x35,0x34,0x37,0x36,0x00,0x38, +0x79,0x42,0x65,0x74,0x3A,0x73,0x20,0x20,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x39,0x00,0x40,0x00,0x34,0x35,0x32,0x33,0x00,0x31,0x6F,0x76,0x3A,0x6D,0x20,0x20, +0x5F,0x5F,0x5F,0x2F,0x2F,0x5F,0x5F,0x5F,0x39,0x00,0x40,0x00,0x32,0x31,0x34,0x33, +0x00,0x35,0x5F,0x5F,0x5F,0x3A,0x20,0x5F,0x5F,0x5F,0x39,0x00,0x39,0x39,0x61,0x39, +0x00,0x61,0x00,0x40,0x6C,0x46,0x70,0x6F,0x79,0x70,0x65,0x6B,0x6E,0x6E,0x6E,0x75, +0x3A,0x67,0x20,0x20,0x3A,0x5F,0x41,0x00,0x40,0x00,0x33,0x32,0x35,0x34,0x37,0x36, +0x39,0x38,0x31,0x30,0x44,0x00,0x73,0x69,0x6E,0x6B,0x6D,0x61,0x3A,0x65,0x5F,0x20, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x46,0x31,0x40, +0x33,0x32,0x00,0x34,0x72,0x4F,0x6E,0x64,0x72,0x65,0x20,0x3A,0x20,0x20,0x20,0x20, +0x5F,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x39,0x32,0x40,0x34,0x33,0x00,0x35,0x61,0x44, +0x65,0x74,0x65,0x69,0x3A,0x6E,0x20,0x20,0x20,0x20,0x5F,0x20,0x5F,0x5F,0x5F,0x5F, +0x39,0x00,0x40,0x00,0x36,0x37,0x34,0x35,0x32,0x33,0x00,0x31,0x79,0x42,0x65,0x74, +0x20,0x73,0x65,0x62,0x65,0x6C,0x74,0x67,0x20,0x3A,0x5F,0x20,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x00,0x5F,0x00,0x39,0x31,0x40,0x31,0x30,0x31,0x30,0x31,0x30,0x42,0x00, +0x74,0x79,0x73,0x65,0x66,0x20,0x65,0x72,0x3A,0x69,0x20,0x20,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x39,0x00,0x40,0x00,0x33,0x32,0x35,0x34,0x37,0x36,0x39,0x38, +0x39,0x39,0x4F,0x00,0x64,0x72,0x65,0x6E,0x6E,0x72,0x6D,0x61,0x3A,0x65,0x5F,0x20, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x46,0x64,0x40, +0x64,0x64,0x64,0x64,0x76,0x00,0x6D,0x6F,0x20,0x3A,0x5F,0x5F,0x5F,0x2D,0x2D,0x5F, +0x5F,0x5F,0x20,0x20,0x39,0x00,0x40,0x00,0x68,0x68,0x68,0x68,0x00,0x68,0x5F,0x5F, +0x5F,0x3A,0x20,0x5F,0x5F,0x5F,0x39,0x00,0x39,0x39,0x61,0x39,0x00,0x61,0x32,0x40, +0x34,0x33,0x36,0x35,0x38,0x37,0x30,0x39,0x00,0x31,0x61,0x4E,0x65,0x6D,0x20,0x3A, +0x5F,0x20,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x46, +0x31,0x40,0x33,0x32,0x35,0x34,0x37,0x36,0x39,0x38,0x31,0x30,0x33,0x32,0x35,0x34, +0x37,0x36,0x39,0x38,0x31,0x30,0x33,0x32,0x35,0x34,0x37,0x36,0x39,0x38,0x31,0x30, +0x33,0x32,0x35,0x34,0x37,0x36,0x5F,0x00,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x58, +0x00,0x40,0x65,0x4B,0x6E,0x6E,0x75,0x62,0x68,0x63,0x74,0x73,0x62,0x61,0x3A,0x65, +0x5F,0x20,0x61,0x00,0x40,0x00,0x33,0x32,0x35,0x34,0x37,0x36,0x39,0x38,0x31,0x30, +0x00,0x32,0x69,0x42,0x64,0x6C,0x69,0x74,0x65,0x74,0x3A,0x6C,0x5F,0x20,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x58,0x32,0x40,0x34,0x33, +0x36,0x35,0x39,0x37,0x31,0x30,0x00,0x32,0x61,0x4E,0x65,0x6D,0x20,0x3A,0x5F,0x20, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x5F,0x00,0x5F,0x00,0x46,0x31,0x40, +0x00,0x32,0x61,0x44,0x65,0x74,0x74,0x69,0x70,0x79,0x20,0x3A,0x5F,0x20,0x5F,0x5F, +0x46,0x00,0x40,0x00,0x33,0x32,0x00,0x34,0x6E,0x41,0x61,0x7A,0x6C,0x68,0x64,0x20, +0x72,0x65,0x4F,0x20,0x64,0x72,0x65,0x6E,0x3A,0x72,0x20,0x20,0x5F,0x5F,0x5F,0x5F, +0x39,0x00,0x40,0x00,0x33,0x34,0x00,0x32,0x6E,0x41,0x61,0x7A,0x6C,0x68,0x64,0x20, +0x72,0x65,0x44,0x20,0x74,0x61,0x69,0x65,0x6E,0x65,0x20,0x3A,0x5F,0x20,0x5F,0x5F, +0x00,0x5F,0x00,0x39,0x39,0x40,0x30,0x38,0x41,0x00,0x7A,0x6E,0x68,0x61,0x20,0x6C, +0x65,0x64,0x20,0x72,0x72,0x4F,0x6E,0x64,0x72,0x65,0x20,0x3A,0x5F,0x20,0x5F,0x5F, +0x00,0x5F,0x00,0x39,0x36,0x40,0x38,0x37,0x41,0x00,0x7A,0x6E,0x68,0x61,0x20,0x6C, +0x65,0x64,0x20,0x72,0x61,0x44,0x65,0x74,0x65,0x69,0x3A,0x6E,0x20,0x20,0x5F,0x5F, +0x5F,0x5F,0x39,0x00,0x40,0x00,0x34,0x33,0x36,0x35,0x35,0x33,0x38,0x34,0x30,0x39, +0x56,0x00,0x72,0x6F,0x61,0x68,0x64,0x6E,0x6E,0x65,0x72,0x65,0x4E,0x20,0x6D,0x61, +0x3A,0x65,0x20,0x20,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F, +0x46,0x00,0x40,0x00,0x34,0x35,0x36,0x33,0x35,0x33,0x38,0x34,0x30,0x39,0x4E,0x00, +0x6D,0x61,0x20,0x65,0x65,0x64,0x20,0x72,0x6F,0x4B,0x69,0x70,0x3A,0x65,0x20,0x20, +0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x46,0x00,0x40,0x00, +0x37,0x31,0x36,0x32,0x35,0x33,0x38,0x34,0x30,0x39,0x4E,0x00,0x6D,0x61,0x3A,0x65, +0x20,0x20,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x46,0x00, +0x20,0x00,0x4C,0x25,0x42,0x20,0x74,0x79,0x73,0x65,0x69,0x20,0x20,0x6E,0x57,0x25, +0x44,0x20,0x74,0x61,0x69,0x65,0x6E,0x65,0x00,0x2E,0x00,0x20,0x52,0x44,0x43,0x55, +0x45,0x4B,0x46,0x00,0x52,0x4F,0x41,0x4D,0x49,0x54,0x52,0x45,0x4E,0x45,0x44,0x00, +0x53,0x49,0x4B,0x4B,0x50,0x4F,0x45,0x49,0x20,0x00,0x5B,0x00,0x5D,0x31,0x7C,0x5B, +0x69,0x44,0x73,0x65,0x20,0x65,0x61,0x44,0x65,0x74,0x20,0x69,0x61,0x6B,0x6E,0x6E, +0x6E,0x20,0x72,0x75,0x67,0x7C,0x64,0x65,0x75,0x72,0x6B,0x63,0x20,0x74,0x64,0x6F, +0x72,0x65,0x67,0x20,0x7A,0x65,0x69,0x65,0x74,0x67,0x77,0x20,0x72,0x65,0x65,0x64, +0x2E,0x6E,0x5D,0x7C,0x41,0x5B,0x5A,0x4E,0x49,0x45,0x45,0x47,0x7C,0x4E,0x52,0x44, +0x43,0x55,0x45,0x4B,0x7C,0x4E,0x42,0x41,0x52,0x42,0x43,0x55,0x5D,0x48,0x5B,0x00, +0x5D,0x31,0x7C,0x5B,0x65,0x4B,0x6E,0x69,0x20,0x65,0x65,0x77,0x74,0x69,0x72,0x65, +0x6E,0x65,0x46,0x20,0x6E,0x65,0x74,0x73,0x72,0x65,0x76,0x7C,0x72,0x6F,0x61,0x68, +0x64,0x6E,0x6E,0x65,0x20,0x21,0x62,0x41,0x69,0x68,0x66,0x6C,0x20,0x65,0x75,0x64, +0x63,0x72,0x7C,0x68,0x63,0x53,0x6C,0x68,0x65,0x69,0x65,0x9E,0x20,0x6E,0x69,0x65, +0x65,0x6E,0x20,0x73,0x65,0x46,0x73,0x6E,0x65,0x74,0x73,0x72,0x5D,0x2E,0x20,0x5B, +0x4F,0x20,0x20,0x4B,0x5D,0x20,0x5B,0x00,0x5D,0x31,0x7C,0x5B,0x65,0x44,0x20,0x72, +0x61,0x50,0x69,0x70,0x72,0x65,0x6F,0x6B,0x62,0x72,0x6C,0x20,0x9E,0x84,0x20,0x74, +0x69,0x73,0x68,0x63,0x6E,0x7C,0x63,0x69,0x74,0x68,0x94,0x20,0x66,0x66,0x65,0x6E, +0x2E,0x6E,0x5B,0x5D,0x20,0x20,0x4B,0x4F,0x20,0x20,0x00,0x5D,0x33,0x5B,0x5B,0x5D, +0x46,0x7C,0x72,0x6F,0x61,0x6D,0x69,0x74,0x72,0x65,0x6E,0x65,0x6C,0x20,0x73,0x94, +0x68,0x63,0x20,0x74,0x6C,0x61,0x65,0x6C,0x44,0x7C,0x74,0x61,0x6E,0x65,0x61,0x20, +0x66,0x75,0x44,0x20,0x73,0x69,0x20,0x6B,0x53,0x25,0x2E,0x3A,0x5B,0x5D,0x20,0x20, +0x4B,0x4F,0x20,0x20,0x20,0x7C,0x42,0x41,0x52,0x42,0x43,0x55,0x20,0x48,0x00,0x5D, +0x31,0x5B,0x5B,0x5D,0x4B,0x7C,0x70,0x6F,0x65,0x69,0x65,0x72,0x20,0x6E,0x73,0x69, +0x20,0x74,0x75,0x6E,0x20,0x72,0x94,0x6D,0x6C,0x67,0x63,0x69,0x20,0x68,0x75,0x61, +0x7C,0x66,0x69,0x44,0x6B,0x73,0x20,0x2C,0x72,0x4F,0x6E,0x64,0x72,0x65,0x6F,0x20, +0x65,0x64,0x20,0x72,0x65,0x46,0x73,0x6E,0x65,0x74,0x2E,0x72,0x5B,0x5D,0x20,0x20, +0x4B,0x4F,0x20,0x20,0x00,0x5D,0x31,0x5B,0x5B,0x5D,0x44,0x7C,0x65,0x69,0x65,0x73, +0x20,0x73,0x69,0x42,0x64,0x6C,0x64,0x20,0x72,0x61,0x20,0x66,0x69,0x6E,0x68,0x63, +0x20,0x74,0x75,0x61,0x7C,0x66,0x69,0x65,0x20,0x6E,0x6E,0x61,0x65,0x64,0x65,0x72, +0x20,0x73,0x65,0x67,0x65,0x6C,0x74,0x67,0x77,0x20,0x72,0x65,0x65,0x64,0x2E,0x6E, +0x5B,0x5D,0x20,0x20,0x4B,0x4F,0x20,0x20,0x00,0x5D,0x31,0x5B,0x5B,0x5D,0x4B,0x7C, +0x49,0x45,0x45,0x4E,0x44,0x20,0x53,0x49,0x20,0x4B,0x4E,0x49,0x44,0x20,0x4E,0x45, +0x50,0x20,0x50,0x41,0x45,0x49,0x4B,0x52,0x52,0x4F,0x21,0x42,0x4C,0x7C,0x73,0x94, +0x68,0x63,0x6E,0x65,0x6D,0x20,0x74,0x69,0x27,0x20,0x6F,0x66,0x6D,0x72,0x74,0x61, +0x65,0x69,0x65,0x72,0x2E,0x2E,0x20,0x27,0x6D,0x69,0x44,0x7C,0x54,0x41,0x49,0x45, +0x4D,0x20,0x6E,0x65,0x2E,0x81,0x5B,0x5D,0x20,0x20,0x4B,0x4F,0x20,0x20,0x00,0x5D, +0x33,0x5B,0x5B,0x5D,0x4B,0x7C,0x70,0x6F,0x65,0x69,0x65,0x72,0x20,0x6E,0x6F,0x76, +0x20,0x6E,0x69,0x44,0x6B,0x73,0x25,0x20,0x3A,0x53,0x61,0x20,0x66,0x75,0x25,0x7C, +0x3A,0x53,0x6C,0x20,0x73,0x94,0x68,0x63,0x20,0x74,0x6C,0x61,0x65,0x6C,0x44,0x20, +0x74,0x61,0x6E,0x65,0x61,0x20,0x66,0x75,0x44,0x7C,0x73,0x69,0x20,0x6B,0x53,0x25, +0x2E,0x3A,0x45,0x20,0x6E,0x69,0x65,0x76,0x73,0x72,0x84,0x74,0x64,0x6E,0x69,0x6E, +0x7C,0x73,0x69,0x6D,0x20,0x74,0x4B,0x4F,0x5D,0x2E,0x20,0x5B,0x4F,0x20,0x20,0x4B, +0x7C,0x20,0x41,0x20,0x42,0x42,0x55,0x52,0x48,0x43,0x5D,0x20,0x5B,0x00,0x5D,0x31, +0x7C,0x5B,0x62,0x4F,0x65,0x6A,0x74,0x6B,0x20,0x65,0x75,0x61,0x20,0x73,0x65,0x46, +0x73,0x6E,0x65,0x74,0x6E,0x72,0x6E,0x20,0x63,0x69,0x74,0x68,0x61,0x20,0x66,0x75, +0x64,0x7C,0x6D,0x65,0x44,0x20,0x53,0x45,0x54,0x4B,0x50,0x4F,0x61,0x20,0x6C,0x62, +0x67,0x65,0x6E,0x65,0x5D,0x21,0x20,0x5B,0x4F,0x20,0x20,0x4B,0x5D,0x20,0x5B,0x00, +0x5D,0x31,0x7C,0x5B,0x65,0x44,0x6B,0x73,0x6F,0x74,0x62,0x70,0x6C,0x69,0x65,0x64, +0x20,0x72,0x81,0x64,0x66,0x72,0x6E,0x65,0x6E,0x7C,0x63,0x69,0x74,0x68,0x69,0x20, +0x20,0x6E,0x65,0x46,0x73,0x6E,0x65,0x74,0x2E,0x72,0x5B,0x5D,0x20,0x20,0x4B,0x4F, +0x20,0x20,0x00,0x5D,0x32,0x5B,0x5B,0x5D,0x44,0x7C,0x45,0x49,0x45,0x53,0x20,0x52, +0x41,0x4E,0x45,0x4D,0x49,0x20,0x54,0x53,0x53,0x20,0x48,0x43,0x4E,0x4F,0x7C,0x20, +0x45,0x56,0x47,0x52,0x42,0x45,0x4E,0x45,0x20,0x21,0x65,0x4E,0x65,0x75,0x20,0x6E, +0x61,0x4E,0x65,0x6D,0x20,0x6E,0x64,0x6F,0x72,0x65,0x7C,0x20,0x42,0x41,0x52,0x42, +0x43,0x55,0x20,0x48,0x84,0x77,0x6C,0x68,0x6E,0x65,0x5D,0x2E,0x20,0x5B,0x42,0x41, +0x52,0x42,0x43,0x55,0x20,0x48,0x57,0x7C,0x45,0x49,0x45,0x44,0x48,0x52,0x4C,0x4F, +0x4E,0x55,0x5D,0x47,0x5B,0x00,0x5D,0x31,0x7C,0x5B,0x69,0x44,0x73,0x65,0x20,0x65, +0x69,0x44,0x6B,0x73,0x74,0x65,0x65,0x74,0x68,0x20,0x74,0x61,0x7A,0x20,0x77,0x75, +0x6E,0x65,0x67,0x69,0x53,0x7C,0x65,0x70,0x63,0x69,0x65,0x68,0x70,0x72,0x61,0x6C, +0x7A,0x74,0x5D,0x2E,0x20,0x5B,0x4F,0x20,0x20,0x4B,0x5D,0x20,0x5B,0x00,0x5D,0x32, +0x7C,0x5B,0x61,0x44,0x65,0x74,0x20,0x69,0x6C,0x67,0x69,0x65,0x68,0x63,0x6D,0x65, +0x4E,0x20,0x6D,0x61,0x6E,0x65,0x7C,0x73,0x63,0x73,0x6F,0x68,0x20,0x6E,0x6F,0x76, +0x68,0x72,0x6E,0x61,0x65,0x64,0x21,0x6E,0x5B,0x5D,0x4F,0x20,0x20,0x4B,0x00,0x5D, +0x33,0x5B,0x5B,0x5D,0x53,0x7C,0x20,0x6F,0x69,0x74,0x66,0x65,0x69,0x20,0x20,0x6D, +0x6E,0x49,0x65,0x64,0x70,0x78,0x61,0x66,0x20,0x64,0x94,0x6B,0x6E,0x6E,0x6E,0x65, +0x6B,0x7C,0x69,0x65,0x65,0x6E,0x4F,0x20,0x64,0x72,0x65,0x6E,0x20,0x72,0x6E,0x61, +0x65,0x67,0x65,0x6C,0x74,0x67,0x6F,0x20,0x65,0x64,0x7C,0x72,0x6E,0x61,0x65,0x67, +0x70,0x73,0x6F,0x72,0x68,0x63,0x6E,0x65,0x77,0x20,0x72,0x65,0x65,0x64,0x2E,0x6E, +0x5B,0x5D,0x41,0x20,0x42,0x42,0x55,0x52,0x48,0x43,0x5D,0x20,0x5B,0x00,0x5D,0x31, +0x7C,0x5B,0x61,0x44,0x20,0x73,0x4F,0x52,0x4D,0x4D,0x44,0x4F,0x4C,0x55,0x65,0x20, +0x6C,0x72,0x75,0x61,0x74,0x62,0x6B,0x20,0x69,0x65,0x7C,0x6E,0x65,0x56,0x73,0x72, +0x68,0x63,0x65,0x69,0x65,0x62,0x20,0x6E,0x6F,0x76,0x20,0x6E,0x62,0x4F,0x65,0x6A, +0x74,0x6B,0x6E,0x65,0x5D,0x2E,0x20,0x5B,0x4F,0x20,0x20,0x4B,0x5D,0x20,0x20,0x00, +0x5B,0x00,0x5D,0x31,0x7C,0x5B,0x6E,0x55,0x81,0x67,0x74,0x6C,0x67,0x69,0x20,0x65, +0x6F,0x4B,0x69,0x70,0x72,0x65,0x6E,0x61,0x65,0x77,0x73,0x69,0x6E,0x75,0x21,0x67, +0x5B,0x5D,0x20,0x20,0x4B,0x4F,0x20,0x20,0x00,0x5D,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x10,0x05,0x00,0x0E,0x00, +0x17,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x48,0x00,0x0A,0x00, +0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x10,0x00,0x00, +0x00,0x00,0x17,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x48,0x00, +0x0A,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x10, +0x00,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x20,0x00, +0x48,0x00,0x0A,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x00,0x10,0x00,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00, +0x20,0x00,0x48,0x00,0x0A,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x09,0x00,0xFF,0xFF, +0xFF,0xFF,0x00,0x10,0x00,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x20,0x00,0x20,0x00, +0x00,0x00,0x20,0x00,0x48,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0x00,0x10,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,0xE0,0x0F,0x00,0x00,0xF0,0x1F,0x7F,0x00,0xFC,0x7F,0xFF,0x00, +0xFC,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x0F, +0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF, +0xF0,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF, +0x00,0xFF,0xFF,0xFF,0x00,0xFE,0xFF,0xFF,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x30,0x18,0x7F,0x00,0x1C,0x70,0xC1,0x00, +0x04,0x80,0x80,0x03,0xF7,0xFF,0x00,0x02,0x15,0x00,0xFB,0x0F,0xD3,0xFB,0x06,0x08, +0x57,0x0C,0xFC,0x3F,0x4D,0x07,0x00,0x20,0x59,0x01,0xFF,0xFF,0x31,0xFE,0x00,0x80, +0x63,0x02,0x00,0x80,0xC5,0x02,0x00,0x80,0x89,0x03,0x00,0x80,0x13,0x03,0x00,0x80, +0x25,0x02,0x00,0x80,0x49,0x02,0x00,0x80,0x91,0x02,0xFE,0x81,0x23,0x03,0x02,0x81, +0x46,0x02,0x02,0x81,0x8C,0x02,0xFE,0x81,0x18,0x03,0x00,0x80,0x30,0x02,0x00,0x80, +0x60,0x02,0x06,0x83,0xC0,0x02,0xFC,0x87,0x80,0x03,0x00,0x80,0x00,0x03,0x00,0x80, +0x00,0x02,0x00,0x80,0x00,0x02,0xFF,0xFF,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFC,0x0F,0x00,0x00,0xFE,0x1F,0xFF,0x1F,0xFE,0xFF,0xFF,0x3F,0xFE,0xFF,0xFF,0x3F, +0xFE,0xFF,0xFF,0x3F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x3F,0xFC,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, +0xFC,0x0F,0x00,0x00,0x06,0x18,0xFF,0x1F,0x02,0xF0,0x00,0x20,0x02,0x00,0xFF,0x3F, +0xF2,0xFF,0x00,0x20,0x0A,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x60, +0x06,0x00,0xFF,0x3F,0xFC,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x03,0x00,0x00,0xE0,0x7E,0x00,0x00,0x3F,0xFF,0x01,0xC0,0xFF,0xFF,0x03, +0xE0,0xFF,0xFF,0x03,0xE0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01, +0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01, +0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01, +0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01, +0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01, +0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x00, +0x80,0xFF,0x3F,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x03,0x00,0x00,0xE0,0x7E,0x00,0x00,0x3F,0xC6,0x01,0xC0,0x31,0x00,0x02, +0x20,0x00,0xC0,0x03,0xE0,0x01,0x7F,0x01,0x40,0xFF,0x00,0x01,0x40,0x00,0x44,0x01, +0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01, +0x40,0x22,0x44,0x01,0x40,0x8A,0x44,0x01,0x40,0xDA,0x44,0x01,0x40,0x72,0x44,0x01, +0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01, +0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01,0x40,0x22,0x44,0x01, +0x40,0x22,0x44,0x01,0x40,0x22,0x64,0x01,0x40,0x26,0x86,0x01,0xC0,0x60,0xE0,0x00, +0x80,0x03,0x3F,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F, +0xFC,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F,0xFE,0xFF,0xFF,0x7F, +0xFE,0xFF,0xFF,0x1F,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0xFC,0xFF,0x00,0x40, +0x04,0x00,0x55,0x55,0x56,0x55,0x00,0x40,0x06,0x00,0xFF,0x7F,0xFE,0xFF,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40, +0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0x00,0x40,0x06,0x00,0xFF,0x7F, +0xFE,0xFF,0xFF,0x1F,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F, +0x80,0xFF,0xFF,0x1F,0x80,0xFF,0xFF,0x1F,0xE0,0xFF,0xFF,0x1F,0xE0,0xFF,0xFF,0x1F, +0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F, +0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F, +0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F, +0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F, +0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F, +0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x07,0xF8,0xFF,0xFF,0x07, +0xF8,0xFF,0xFF,0x01,0xF8,0xFF,0xFF,0x01,0xF8,0xFF,0x00,0x00,0x00,0x00,0xFF,0x1F, +0x80,0xFF,0x00,0x10,0x80,0x00,0x00,0x10,0xE0,0x00,0x00,0x10,0xA0,0x00,0x00,0x10, +0xB8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10, +0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10, +0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10, +0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10,0xA8,0x00,0x00,0x10, +0xA8,0x3F,0x00,0x10,0xA8,0x21,0x00,0x10,0x28,0x23,0x00,0x10,0x28,0x26,0x00,0x10, +0x28,0x2C,0x00,0x10,0x28,0x38,0xFF,0x1F,0x28,0xF0,0x00,0x04,0x28,0x00,0xFF,0x07, +0xE8,0xFF,0x00,0x01,0x08,0x00,0xFF,0x01,0xF8,0xFF,0x00,0x00,0x00,0x00,0x61,0x23, +0x30,0x30,0x30,0x30,0x30,0x30,0x0A,0x0D,0x62,0x23,0x30,0x30,0x30,0x30,0x30,0x30, +0x0A,0x0D,0x63,0x23,0x37,0x37,0x30,0x37,0x30,0x30,0x30,0x37,0x30,0x30,0x30,0x36, +0x30,0x30,0x30,0x37,0x35,0x30,0x32,0x35,0x30,0x30,0x30,0x35,0x35,0x35,0x32,0x35, +0x32,0x32,0x37,0x30,0x30,0x37,0x35,0x35,0x30,0x37,0x35,0x37,0x35,0x30,0x35,0x35, +0x37,0x30,0x30,0x37,0x31,0x33,0x31,0x31,0x30,0x31,0x0D,0x33,0x23,0x0A,0x20,0x64, +0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0A,0x0D,0x45,0x23, +0x31,0x20,0x20,0x42,0x30,0x31,0x0D,0x20,0x23,0x0A,0x20,0x57,0x30,0x30,0x30,0x20, +0x20,0x30,0x34,0x30,0x30,0x20,0x20,0x33,0x33,0x34,0x31,0x20,0x20,0x30,0x39,0x30, +0x40,0x20,0x0A,0x0D,0x57,0x23,0x30,0x20,0x20,0x30,0x30,0x30,0x30,0x20,0x20,0x44, +0x38,0x30,0x32,0x20,0x20,0x41,0x42,0x30,0x30,0x20,0x20,0x30,0x0D,0x40,0x23,0x0A, +0x20,0x57,0x30,0x30,0x30,0x20,0x20,0x30,0x45,0x30,0x30,0x20,0x20,0x39,0x41,0x32, +0x30,0x20,0x20,0x42,0x30,0x30,0x40,0x20,0x0A,0x0D,0x57,0x23,0x30,0x20,0x20,0x30, +0x30,0x30,0x30,0x20,0x20,0x46,0x41,0x30,0x32,0x20,0x20,0x41,0x42,0x30,0x30,0x20, +0x20,0x30,0x0D,0x40,0x23,0x0A,0x20,0x4D,0x30,0x30,0x30,0x20,0x20,0x30,0x30,0x30, +0x46,0x20,0x20,0x46,0x20,0x41,0x49,0x44,0x4B,0x53,0x54,0x53,0x54,0x41,0x4F,0x49, +0x40,0x4E,0x40,0x20,0x0D,0x20,0x23,0x0A,0x20,0x4D,0x30,0x30,0x30,0x20,0x20,0x31, +0x30,0x30,0x46,0x20,0x20,0x46,0x20,0x42,0x49,0x44,0x4B,0x53,0x54,0x53,0x54,0x41, +0x4F,0x49,0x40,0x4E,0x40,0x20,0x0D,0x20,0x23,0x0A,0x20,0x4D,0x30,0x30,0x30,0x20, +0x20,0x32,0x30,0x30,0x46,0x20,0x20,0x46,0x20,0x43,0x41,0x48,0x44,0x52,0x44,0x20, +0x53,0x49,0x40,0x4B,0x40,0x20,0x0D,0x20,0x23,0x0A,0x20,0x43,0x31,0x30,0x30,0x20, +0x20,0x36,0x30,0x30,0x46,0x20,0x20,0x46,0x20,0x63,0x4F,0x52,0x2D,0x4D,0x6F,0x4D, +0x75,0x64,0x40,0x6C,0x40,0x20,0x0D,0x20,0x23,0x0A,0x20,0x54,0x30,0x30,0x30,0x20, +0x20,0x36,0x32,0x30,0x46,0x20,0x20,0x46,0x20,0x20,0x41,0x50,0x49,0x50,0x52,0x45, +0x4F,0x4B,0x42,0x52,0x20,0x40,0x20,0x40,0x0A,0x0D,0x46,0x23,0x46,0x20,0x20,0x46, +0x34,0x30,0x20,0x20,0x40,0x20,0x2A,0x20,0x2A,0x2E,0x0D,0x40,0x23,0x0A,0x20,0x44, +0x46,0x46,0x30,0x20,0x20,0x31,0x20,0x20,0x20,0x40,0x2E,0x2A,0x40,0x2A,0x0D,0x20, +0x23,0x0A,0x20,0x47,0x33,0x30,0x46,0x20,0x20,0x46,0x20,0x20,0x2E,0x2A,0x52,0x50, +0x40,0x47,0x40,0x20,0x0D,0x20,0x23,0x0A,0x20,0x47,0x33,0x30,0x46,0x20,0x20,0x46, +0x20,0x20,0x2E,0x2A,0x50,0x41,0x40,0x50,0x40,0x20,0x0A,0x0D,0x46,0x23,0x30,0x20, +0x20,0x33,0x34,0x30,0x20,0x20,0x2A,0x20,0x54,0x2E,0x53,0x4F,0x20,0x40,0x0D,0x40, +0x23,0x0A,0x20,0x50,0x33,0x30,0x30,0x20,0x20,0x34,0x20,0x20,0x2E,0x2A,0x54,0x54, +0x40,0x50,0x40,0x20,0x0A,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x98,0x02, +0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x03,0x00,0x00,0x00,0x00,0x24,0x00,0x1A,0x00, +0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x03,0x00,0x00, +0x28,0x00,0xFF,0xFF,0x01,0x00,0x0A,0x00,0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x28,0x00,0x0C,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x03,0x03,0x00,0x01,0x00,0x0B,0x00, +0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x98,0x02,0x07,0x00,0x04,0x00,0x14,0x00,0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xB4,0x02,0x07,0x00,0x06,0x00,0x1C,0x00, +0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x61,0x03,0x07,0x00,0x08,0x00,0x0C,0x00,0x01,0x00,0x09,0x00,0x07,0x00,0x08,0x00, +0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0A,0x00,0x21,0x00, +0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x69,0x03,0x03,0x00,0x00,0x00,0x08,0x00,0x01,0x00,0x08,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x11,0x00,0x01,0x00,0x00,0x00,0x69,0x03,0x03,0x00,0x00,0x00,0x0D,0x00, +0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x11,0x00,0x00,0x00,0x00,0x00, +0x73,0x03,0x12,0x00,0x00,0x00,0x0D,0x00,0x01,0x00,0x0A,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x14,0x03,0x1E,0x00,0x02,0x00,0x09,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x25,0x00,0x00,0x00,0x00,0x00, +0x1D,0x03,0x1E,0x00,0x04,0x00,0x09,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x05,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x28,0x00, +0x0C,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x7E,0x03,0x03,0x00,0x01,0x00,0x09,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x02,0x06,0x00,0x05,0x00,0x15,0x00, +0x01,0x00,0x04,0x00,0xFF,0xFF,0xFF,0xFF,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xEC,0x02,0x06,0x00,0x07,0x00,0x15,0x00,0x01,0x00,0x05,0x00,0xFF,0xFF,0xFF,0xFF, +0x1A,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x14,0x03,0x1E,0x00,0x02,0x00,0x09,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1A,0x00,0x25,0x00,0x00,0x00,0x00,0x00, +0xD2,0x03,0x1E,0x00,0x04,0x00,0x09,0x00,0x01,0x00,0xFF,0xFF,0x01,0x00,0x03,0x00, +0x14,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x28,0x00, +0x0C,0x00,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xAC,0x03,0x03,0x00,0x01,0x00,0x09,0x00,0x01,0x00,0x03,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAC,0x03,0x03,0x00,0x04,0x00,0x09,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x14,0x00,0x00,0x00,0x00,0x00,0x01,0x00, +0x00,0x11,0x02,0x00,0x0A,0x00,0x24,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x14,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xA1,0x11,0x02,0x00,0x0A,0x00,0x00,0x00, +0x01,0x00,0x06,0x00,0xFF,0xFF,0xFF,0xFF,0x14,0x00,0x00,0x00,0x00,0x00,0x01,0x00, +0x00,0x11,0x02,0x00,0x07,0x00,0x24,0x00,0x01,0x00,0x07,0x00,0xFF,0xFF,0xFF,0xFF, +0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB7,0x03,0x03,0x00,0x09,0x00,0x0D,0x00, +0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xC4,0x03,0x03,0x00,0x06,0x00,0x0D,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, +0x14,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xA1,0x11,0x02,0x00,0x0A,0x00,0x00,0x00, +0x01,0x00,0x00,0x00,0x25,0x03,0x00,0x00,0x28,0x03,0x00,0x00,0x3A,0x03,0x03,0x00, +0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x03,0x00,0x0D,0x00,0x00,0x00, +0x3C,0x03,0x00,0x00,0x48,0x03,0x00,0x00,0x5F,0x03,0x03,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,0x00,0x00,0x00,0x00,0x0C,0x00,0x19,0x00,0x00,0x00,0x88,0x03,0x00,0x00, +0x8B,0x03,0x00,0x00,0x98,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00, +0x00,0x00,0x03,0x00,0x11,0x00,0x00,0x00,0x9A,0x03,0x00,0x00,0x9D,0x03,0x00,0x00, +0xAA,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x03,0x00, +0x16,0x00,0x4F,0x46,0x4D,0x52,0x54,0x41,0x45,0x49,0x45,0x52,0x00,0x4E,0x41,0x20, +0x42,0x42,0x55,0x52,0x48,0x43,0x20,0x00,0x4F,0x46,0x4D,0x52,0x54,0x41,0x40,0x00, +0x00,0x31,0x6C,0x46,0x70,0x6F,0x79,0x70,0x65,0x6B,0x6E,0x6E,0x6E,0x75,0x3A,0x67, +0x5F,0x20,0x00,0x5F,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x69,0x44,0x6B,0x73,0x61,0x6E,0x65,0x6D,0x20,0x3A,0x5F,0x5F,0x5F,0x5F, +0x5F,0x5F,0x5F,0x5F,0x5F,0x2E,0x5F,0x5F,0x46,0x00,0x46,0x00,0x52,0x4F,0x41,0x4D, +0x3A,0x54,0x45,0x00,0x4E,0x49,0x45,0x53,0x54,0x49,0x47,0x49,0x5A,0x00,0x45,0x57, +0x53,0x49,0x49,0x45,0x49,0x54,0x00,0x47,0x49,0x44,0x4B,0x53,0x4F,0x4B,0x49,0x50, +0x00,0x45,0x31,0x40,0x76,0x00,0x6E,0x6F,0x44,0x20,0x73,0x69,0x3A,0x6B,0x5F,0x20, +0x00,0x5F,0x00,0x41,0x31,0x40,0x61,0x00,0x66,0x75,0x44,0x20,0x73,0x69,0x3A,0x6B, +0x5F,0x20,0x00,0x5F,0x00,0x41,0x72,0x61,0x65,0x62,0x74,0x69,0x2E,0x65,0x2E,0x2E, +0x5A,0x00,0x65,0x69,0x64,0x6C,0x73,0x69,0x65,0x6B,0x74,0x74,0x00,0x65,0x75,0x51, +0x6C,0x65,0x64,0x6C,0x73,0x69,0x65,0x6B,0x74,0x74,0x00,0x65,0x4B,0x20,0x50,0x4F, +0x45,0x49,0x45,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x2A,0x7C,0x2E, +0x00,0x00,0x8E,0x89,0x6D,0x2A,0x04,0x00,0x2D,0x20,0x0C,0x00,0xAD,0xD0,0x14,0x00, +0xAD,0xD0,0x1C,0x00,0xBC,0xD0,0x00,0x00,0x00,0x01,0x00,0x2F,0x0D,0x2F,0x00,0x3F, +0x3C,0x3F,0x4A,0x00,0x41,0x4E,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x0F,0x2F,0x3C,0x3F, +0x20,0x00,0x41,0x4E,0x4F,0x5C,0xED,0x23,0x2C,0x00,0x00,0x00,0x24,0xC9,0xFC,0x33, +0x00,0x00,0x00,0x00,0x0A,0x89,0xFC,0x33,0x01,0x00,0x00,0x00,0x08,0x89,0xFC,0x33, +0x01,0x00,0x00,0x00,0x0C,0x89,0xFC,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x89, +0x39,0x10,0x00,0x00,0x2C,0x00,0x26,0x67,0x3C,0x2F,0x00,0x00,0x64,0x00,0x3C,0x3F, +0x48,0x00,0x41,0x4E,0x8F,0x5C,0x40,0x20,0x3C,0x32,0x31,0x00,0x7C,0x22,0xFE,0x00, +0x2C,0xE5,0xD9,0x30,0xC9,0x51,0xFC,0xFF,0xC0,0x23,0x00,0x00,0x2C,0x00,0x71,0x4E, +0xB9,0x4E,0xFE,0x00,0x48,0xE1,0xFC,0x33,0x01,0x00,0x00,0x00,0x92,0x89,0x79,0x42, +0x00,0x00,0xFE,0x97,0xB9,0x4E,0xFE,0x00,0x6A,0xE4,0x7C,0x20,0x00,0x00,0x58,0x9C, +0x81,0x42,0xC1,0x30,0xC8,0x5B,0xFC,0xFF,0xF9,0x41,0xFE,0x00,0x8E,0xD0,0xC8,0x23, +0x00,0x00,0x7A,0x94,0xF9,0x41,0xFE,0x00,0x90,0xD0,0xC8,0x23,0x00,0x00,0x7E,0x94, +0xF9,0x41,0xFE,0x00,0xA8,0x3B,0xC8,0x23,0x00,0x00,0x32,0x8C,0x7C,0x2C,0x00,0x00, +0x58,0x9C,0x4E,0x2A,0xFC,0xDD,0x00,0x00,0x4A,0x07,0x4E,0x2B,0x3E,0x00,0x4E,0x2E, +0xB9,0x4E,0xFD,0x00,0xF4,0x9C,0xAC,0x60,0xDF,0x23,0x00,0x00,0x00,0x89,0xFC,0x33, +0x00,0x00,0x00,0x00,0xEC,0x98,0xFC,0x33,0x00,0x00,0x00,0x00,0x18,0xC9,0x41,0x4E, +0xC0,0x33,0x00,0x00,0x18,0xC9,0xBC,0xB0,0x00,0x00,0x00,0x00,0x08,0x6C,0xFC,0x33, +0x01,0x00,0x00,0x00,0xEC,0x98,0x39,0x2F,0x00,0x00,0x00,0x89,0x75,0x4E,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x01,0x7C,0x2A,0x00,0x00,0x58,0x9C,0xED,0x41,0x56,0x1F, +0xC8,0x23,0x00,0x00,0x9E,0xC7,0xED,0x41,0xD6,0x27,0xC8,0x23,0x00,0x00,0x2A,0xC8, +0xED,0x41,0xE6,0x1E,0xC8,0x23,0x00,0x00,0x00,0xC8,0xED,0x41,0x38,0x1F,0xC8,0x23, +0x00,0x00,0x06,0x98,0xFC,0x23,0x00,0x00,0xEE,0x9A,0x00,0x00,0x3E,0xC8,0x01,0xF8, +0x56,0x4E,0xFA,0xFF,0x6E,0x42,0xFE,0xFF,0x06,0x60,0xB8,0xF2,0x6E,0x52,0xFE,0xFF, +0x6E,0x0C,0x01,0x00,0xFE,0xFF,0xF2,0x6D,0xBC,0x3E,0x01,0x00,0x80,0xF2,0x57,0x42, +0x80,0xF2,0x01,0xF0,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x04,0x03,0x7C,0x2A,0x00,0x00, +0x58,0x9C,0x8C,0xF8,0x90,0xF8,0x94,0xF8,0x79,0x42,0x00,0x00,0x9A,0xC7,0x79,0x42, +0x00,0x00,0x28,0x97,0xB9,0x42,0x00,0x00,0xEE,0x96,0x3C,0x20,0x00,0x00,0x08,0xC8, +0xBC,0x90,0x00,0x00,0x04,0xC8,0xC0,0x23,0x00,0x00,0xF6,0x97,0xB9,0x42,0x00,0x00, +0x76,0xC6,0x47,0x42,0x2A,0x60,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x1C,0x00,0xC1,0xD1, +0x79,0x21,0x00,0x00,0x76,0xC6,0x9A,0x14,0x0D,0x20,0x07,0x32,0xFC,0xC3,0x1C,0x00, +0x81,0xD0,0xBC,0xD0,0x00,0x00,0x9A,0x14,0xC0,0x23,0x00,0x00,0x76,0xC6,0x47,0x52, +0x7C,0xBE,0x0F,0x00,0xD0,0x6D,0x40,0x42,0xC0,0x48,0xC0,0x23,0x00,0x00,0x16,0x9C, +0xC0,0x23,0x00,0x00,0x26,0xC7,0x40,0x42,0xC0,0x48,0xC0,0x23,0x00,0x00,0x4A,0xC8, +0xC0,0x23,0x00,0x00,0x1A,0x9C,0x40,0x42,0xC0,0x33,0x00,0x00,0x06,0xC9,0xC0,0x33, +0x00,0x00,0xB0,0xC6,0xC0,0x33,0x00,0x00,0xF2,0x9B,0x39,0x42,0x00,0x00,0xAE,0xC6, +0x79,0x42,0x00,0x00,0xEE,0x9A,0xB9,0x42,0x00,0x00,0xF0,0x9A,0xB9,0x42,0x00,0x00, +0xF4,0x9A,0x47,0x42,0x2A,0x60,0x0D,0x20,0x07,0x32,0xFC,0xC3,0x24,0x00,0x81,0xD0, +0x80,0x2E,0x97,0x06,0x00,0x00,0x2E,0x14,0x0D,0x20,0x07,0x32,0xFC,0xC3,0xB8,0x00, +0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x06,0x12,0x7C,0xF7,0x8F,0x58,0x47,0x52, +0x7C,0xBE,0x03,0x00,0xD0,0x6D,0x4D,0x2B,0x0E,0x12,0xED,0x41,0x4A,0x07,0x48,0x2B, +0xC6,0x12,0xED,0x41,0x44,0x0C,0x48,0x2B,0x7E,0x13,0xED,0x41,0x40,0x0C,0x48,0x2B, +0x88,0x07,0xED,0x41,0x02,0x12,0x48,0x2B,0x82,0x0C,0x79,0x42,0x00,0x00,0x80,0xC6, +0x0D,0x20,0x39,0x32,0x00,0x00,0x80,0xC6,0xFC,0xC3,0xB8,0x00,0x81,0xD0,0xBC,0xD0, +0x00,0x00,0x06,0x12,0xC0,0x23,0x00,0x00,0x94,0xC7,0x79,0x20,0x00,0x00,0x94,0xC7, +0x79,0x31,0x00,0x00,0x80,0xC6,0x1C,0x00,0x79,0x52,0x00,0x00,0x80,0xC6,0x79,0x20, +0x00,0x00,0x94,0xC7,0xBC,0x20,0x00,0x00,0x00,0x00,0x79,0x20,0x00,0x00,0x94,0xC7, +0x68,0x42,0x1E,0x00,0x79,0x20,0x00,0x00,0x94,0xC7,0xE8,0x23,0x14,0x00,0x00,0x00, +0xFA,0x97,0x98,0xF8,0x79,0x20,0x00,0x00,0x94,0xC7,0xA8,0x3E,0x1C,0x00,0x9C,0xF8, +0xC0,0x23,0x00,0x00,0x3A,0x9B,0xC0,0x23,0x00,0x00,0xD8,0x9A,0xC0,0x23,0x00,0x00, +0xFA,0x9A,0xA0,0xF8,0x57,0x42,0x39,0x2F,0x00,0x00,0x06,0x98,0x67,0x42,0x58,0xF3, +0x8F,0x5C,0xBC,0x2E,0x00,0x00,0x62,0xC7,0x3C,0x2F,0x0E,0x00,0x03,0x00,0x39,0x2F, +0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0x79,0x20,0x00,0x00,0x62,0xC7,0xD0,0x23, +0x00,0x00,0x62,0xC7,0xBC,0x2E,0x00,0x00,0xAA,0xC6,0x3C,0x2F,0x0E,0x00,0x05,0x00, +0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0x79,0x20,0x00,0x00,0xAA,0xC6, +0xD0,0x23,0x00,0x00,0xAA,0xC6,0xA4,0xF8,0xC8,0xF3,0x79,0x42,0x00,0x00,0xD0,0x9A, +0x79,0x42,0x00,0x00,0x98,0xC7,0x79,0x42,0x00,0x00,0xCA,0xC6,0x79,0x42,0x00,0x00, +0x2C,0xC7,0xA8,0xF8,0x47,0x42,0x4E,0x60,0x8E,0x2E,0x97,0x59,0x07,0x3F,0x3C,0x3F, +0x04,0x00,0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0xBC,0x3E,0x0E,0x00, +0x2E,0x2F,0xFC,0xFF,0x3C,0x2F,0x00,0x00,0x32,0xC7,0x28,0xF1,0x8F,0x50,0xB9,0x3E, +0x00,0x00,0x38,0xC7,0x39,0x3F,0x00,0x00,0x36,0xC7,0x39,0x2F,0x00,0x00,0x32,0xC7, +0x39,0x3F,0x00,0x00,0x36,0xC7,0x39,0x2F,0x00,0x00,0x32,0xC7,0x48,0xF3,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x47,0x52,0x7C,0xBE,0x03,0x00,0xAC,0x6D,0x40,0xF7,0xAC,0xF8, +0x44,0xF7,0xB0,0xF8,0x40,0xF7,0xBC,0x2E,0x00,0x00,0x8A,0x94,0x39,0x2F,0x00,0x00, +0x7E,0x94,0xB4,0xF8,0x8F,0x58,0xC0,0x33,0x00,0x00,0x1A,0xC9,0x44,0xF7,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x03,0x00,0xE4,0xF1,0x8F,0x54,0x79,0x4A,0x00,0x00,0x40,0x9C, +0x10,0x66,0xB9,0x2E,0x00,0x00,0x06,0x98,0xB8,0xF8,0xFC,0x33,0x02,0x00,0x00,0x00, +0x40,0x9C,0xBC,0xF8,0xC0,0xF8,0xBC,0x2E,0x00,0x00,0x20,0xC8,0x3C,0x3F,0x02,0x00, +0x67,0x42,0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0x79,0x2D,0x00,0x00, +0x20,0xC8,0xF8,0xFF,0x47,0x42,0x22,0x60,0x39,0x30,0x00,0x00,0x32,0xC8,0xF9,0xC1, +0x00,0x00,0x12,0xC9,0x07,0x32,0xFC,0xC3,0x18,0x00,0xAE,0xD2,0xF8,0xFF,0xBC,0xD2, +0x00,0x00,0x14,0x00,0x41,0x22,0x80,0x32,0x47,0x52,0x7C,0xBE,0x03,0x00,0xD8,0x6D, +0x39,0x30,0x00,0x00,0x72,0xC6,0xF9,0xC1,0x00,0x00,0xA2,0x9B,0x6E,0x22,0xF8,0xFF, +0xFC,0xD3,0x00,0x00,0x16,0x00,0x80,0x32,0x39,0x30,0x00,0x00,0x72,0xC6,0x40,0x54, +0x6E,0x22,0xF8,0xFF,0xFC,0xD3,0x00,0x00,0x2E,0x00,0x80,0x32,0x39,0x30,0x00,0x00, +0x72,0xC6,0x40,0x56,0x6E,0x22,0xF8,0xFF,0xFC,0xD3,0x00,0x00,0x46,0x00,0x80,0x32, +0x39,0x42,0x00,0x00,0x7E,0xC6,0xB8,0xF2,0xC8,0xF1,0xC4,0xF8,0xC8,0xF8,0x40,0xF7, +0xCC,0xF8,0x44,0xF7,0xB9,0x2E,0x00,0x00,0x06,0x98,0x8C,0xF2,0xD0,0xF8,0x40,0xF7, +0xBC,0x2E,0x00,0x00,0x8A,0x94,0x39,0x2F,0x00,0x00,0x8A,0x94,0xB4,0xF8,0x8F,0x58, +0xC0,0x33,0x00,0x00,0x1A,0xC9,0x44,0xF7,0xD4,0xF8,0xBC,0x3E,0x02,0x00,0xD8,0xF8, +0x40,0xF7,0xDC,0xF8,0x44,0xF7,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01, +0x6E,0x2A,0x08,0x00,0x6E,0x2B,0x0C,0x00,0x14,0x00,0xED,0x41,0x38,0x00,0x48,0x2B, +0x32,0x00,0x6D,0x42,0x36,0x00,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0C,0x00,0x3C,0x2F, +0x08,0x00,0x20,0x00,0x94,0xF3,0x8F,0x58,0x01,0xF8,0x56,0x4E,0xF8,0xFF,0xE7,0x48, +0x04,0x1F,0xBC,0x2E,0x00,0x00,0x00,0x08,0x64,0xF3,0x40,0x2D,0xFA,0xFF,0x45,0x42, +0xBC,0x3E,0x00,0x08,0x2E,0x2F,0xFA,0xFF,0xA0,0xF2,0x8F,0x58,0x74,0xF3,0x40,0x4A, +0x00,0x67,0x94,0x00,0x79,0x4A,0x00,0x00,0x92,0x89,0x00,0x67,0x8A,0x00,0xC0,0xF3, +0x40,0x3D,0xF8,0xFF,0xBC,0x2E,0xFE,0x00,0xB2,0xEF,0xD0,0xF3,0x57,0x42,0x3C,0x2F, +0xFE,0x00,0xB4,0xEF,0x50,0xF3,0x8F,0x58,0x00,0x3C,0x79,0x4A,0x00,0x00,0xEC,0x98, +0x2E,0x67,0x74,0xF3,0x7C,0xC0,0x04,0x00,0x1E,0x67,0xBC,0x3E,0x02,0x00,0xCC,0xF3, +0xBC,0x2E,0xFE,0x00,0xC0,0xEF,0xD0,0xF3,0x57,0x42,0x3C,0x2F,0xFE,0x00,0xC2,0xEF, +0x50,0xF3,0x8F,0x58,0x00,0x3C,0x08,0x60,0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98, +0x79,0x4A,0x00,0x00,0xEC,0x98,0x1E,0x66,0xAE,0x2E,0xFA,0xFF,0x3C,0x3F,0x00,0x08, +0x06,0x3F,0x7C,0xF3,0x8F,0x58,0x00,0x3E,0x86,0x3E,0x80,0xF3,0x01,0x7A,0xAE,0x3E, +0xF8,0xFF,0xCC,0xF3,0x0E,0x60,0x57,0x42,0x2E,0x2F,0xFA,0xFF,0x3C,0x3F,0x03,0x00, +0x58,0xF3,0x8F,0x5C,0x0E,0x60,0x57,0x42,0x2E,0x2F,0xFA,0xFF,0x3C,0x3F,0x03,0x00, +0x58,0xF3,0x8F,0x5C,0x45,0x4A,0x00,0x67,0x78,0x00,0x6E,0x2A,0xFA,0xFF,0x4D,0x20, +0x47,0x32,0xC9,0xD1,0x10,0x42,0x01,0x78,0x5E,0x60,0x15,0x0C,0x23,0x00,0x04,0x67, +0x8D,0x52,0x54,0x60,0x8D,0x52,0x15,0x0C,0x45,0x00,0x4C,0x66,0x8D,0x5A,0x8E,0x2E, +0x97,0x55,0x0D,0x2F,0x3C,0xF3,0x8F,0x58,0x79,0x4A,0x00,0x00,0x0A,0x89,0x1A,0x67, +0xAE,0x3E,0xFE,0xFF,0x57,0x02,0xF0,0x00,0x39,0x30,0x00,0x00,0x08,0x89,0x40,0x53, +0x57,0x81,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x1E,0x60,0x6E,0x02,0x03,0x00,0xFE,0xFF, +0x6E,0x52,0xFE,0xFF,0x79,0x42,0x00,0x00,0x0A,0x89,0xAE,0x3E,0xFE,0xFF,0x88,0xF5, +0x40,0x4A,0x02,0x66,0x45,0x42,0x44,0x42,0x15,0x4A,0x04,0x67,0x44,0x4A,0x9A,0x66, +0xBC,0x3E,0x00,0x08,0x2E,0x2F,0xFA,0xFF,0xA4,0xF2,0x8F,0x58,0xAE,0x2E,0xFA,0xFF, +0x78,0xF4,0x45,0x4A,0x06,0x67,0x01,0x70,0x04,0x60,0x02,0x60,0x40,0x42,0x3D,0xF8, +0x6F,0x20,0x04,0x00,0x2F,0x32,0x08,0x00,0x58,0xD3,0x58,0xD3,0x41,0xE3,0x58,0x93, +0x58,0x93,0x75,0x4E,0xE7,0x48,0x10,0x1C,0xAF,0x4C,0x18,0x00,0x14,0x00,0x6F,0x26, +0x18,0x00,0x02,0x7A,0x44,0x4A,0x02,0x66,0x45,0x42,0x7C,0xB8,0x07,0x00,0x02,0x66, +0x01,0x7A,0x03,0x3F,0x3C,0x3F,0x19,0x00,0x00,0xF0,0x2B,0x2F,0x04,0x00,0x13,0x2F, +0x04,0x3F,0x05,0x3F,0x3C,0x3F,0x01,0x00,0x04,0xF0,0xEF,0x4F,0x12,0x00,0xDF,0x4C, +0x38,0x08,0x75,0x4E,0xE7,0x48,0x10,0xFF,0x2F,0x36,0x28,0x00,0xAF,0x4C,0xC0,0x00, +0x30,0x00,0x6F,0x26,0x34,0x00,0xEF,0x43,0x02,0x00,0x09,0x2F,0xEB,0x43,0x06,0x00, +0x09,0x2F,0xEB,0x43,0x04,0x00,0x09,0x2F,0x2F,0x2F,0x38,0x00,0x2F,0x3F,0x3A,0x00, +0x08,0xF0,0xEF,0x4F,0x12,0x00,0x6B,0x9E,0x06,0x00,0x0C,0x6F,0x07,0x3A,0x45,0x52, +0xC5,0x48,0x45,0xE2,0x6B,0xDB,0x02,0x00,0x6B,0x9C,0x04,0x00,0x1A,0x6F,0x7C,0xB6, +0x02,0x00,0x0C,0x66,0x06,0x3A,0x45,0x52,0xC5,0x48,0x45,0xE2,0x53,0xDB,0x08,0x60, +0x7C,0xB6,0x01,0x00,0x02,0x66,0x53,0xDD,0xDF,0x4C,0xFF,0x08,0x75,0x4E,0xE7,0x48, +0x10,0xC0,0x4F,0x26,0x6F,0x20,0x18,0x00,0x98,0x26,0x58,0x27,0x04,0x00,0x0B,0x2F, +0x2B,0x2F,0x04,0x00,0x2F,0x2F,0x1C,0x00,0x2F,0x3F,0x1E,0x00,0x2F,0x3F,0x1E,0x00, +0x0C,0xF0,0xEF,0x4F,0x10,0x00,0x40,0x4A,0x0C,0x6F,0x00,0x3F,0x13,0x2F,0x2F,0x3F, +0x18,0x00,0x10,0xF0,0x8F,0x50,0xDF,0x4C,0x03,0x08,0x75,0x4E,0x2F,0x30,0x04,0x00, +0x6F,0x20,0x06,0x00,0x00,0x32,0x49,0xE0,0x01,0x34,0x41,0xE8,0x7C,0xC2,0x0F,0x00, +0x81,0x30,0x7C,0xC4,0x0F,0x00,0x6F,0x20,0x0A,0x00,0x82,0x30,0x00,0x32,0x7C,0xC2, +0xFF,0x00,0x01,0x34,0x41,0xE8,0x7C,0xC2,0x0F,0x00,0x6F,0x20,0x0E,0x00,0x81,0x30, +0x6F,0x22,0x16,0x00,0x28,0x08,0x03,0x00,0x01,0x00,0x0A,0x67,0x50,0x02,0x07,0x00, +0xBC,0x32,0x01,0x00,0x04,0x60,0xBC,0x32,0x02,0x00,0x7C,0xC4,0x0F,0x00,0x6F,0x22, +0x12,0x00,0x82,0x32,0x75,0x4E,0xE7,0x48,0x18,0x1F,0xAF,0x4C,0xE0,0x00,0x2E,0x00, +0x05,0x38,0x3C,0x30,0x0C,0x00,0x64,0xE0,0x7C,0xC8,0x0F,0x00,0x05,0x36,0x43,0xE0, +0x7C,0xC6,0x0F,0x00,0x7C,0xCA,0xFF,0x00,0x2F,0x08,0x00,0x00,0x21,0x00,0x02,0x67, +0x44,0xC7,0xEF,0x4C,0x00,0x18,0x34,0x00,0x2F,0x08,0x06,0x00,0x21,0x00,0x04,0x67, +0x43,0x4A,0x18,0x67,0x2F,0x20,0x22,0x00,0x04,0x32,0x03,0x34,0x62,0x61,0x0C,0x2F, +0x3C,0x3F,0x07,0x00,0x03,0x3F,0x00,0x61,0x6C,0xFE,0x8F,0x50,0x2F,0x20,0x26,0x00, +0x03,0x32,0x04,0x34,0x4A,0x61,0x04,0x3F,0x3C,0x2F,0x01,0x00,0x02,0x00,0x14,0xF0, +0x8F,0x5C,0x45,0x4A,0x1C,0x67,0xC5,0x33,0x00,0x00,0xBA,0x95,0x3C,0x3F,0x01,0x00, +0x2B,0x3F,0x02,0x00,0x57,0xDF,0x13,0x3F,0x57,0xDD,0x3C,0x3F,0x05,0x00,0x10,0xF0, +0x8F,0x50,0x3C,0x3F,0x02,0x00,0x0C,0x2F,0x2F,0x2F,0x30,0x00,0x3C,0x2F,0x02,0x00, +0x05,0x00,0x00,0x61,0xCA,0xFE,0xEF,0x4F,0x0E,0x00,0xDF,0x4C,0xF8,0x18,0x75,0x4E, +0x01,0x3F,0x02,0x3F,0x3C,0x3F,0x02,0x00,0x2B,0x2F,0x04,0x00,0x39,0x32,0x00,0x00, +0x0A,0x98,0xC1,0x48,0xFC,0x83,0x08,0x00,0x01,0x3F,0x13,0x2F,0xA7,0x42,0x2B,0x32, +0x04,0x00,0xC1,0x48,0xFC,0x83,0x08,0x00,0x01,0x3F,0xA7,0x42,0x00,0x2F,0x18,0xF0, +0xEF,0x4F,0x1E,0x00,0x75,0x4E,0xE7,0x48,0x18,0x10,0xFC,0x9F,0x00,0x00,0x10,0x00, +0x4F,0x26,0xEF,0x49,0x08,0x00,0x2F,0x36,0x28,0x00,0xAF,0x26,0x20,0x00,0x6F,0x27, +0x24,0x00,0x04,0x00,0x43,0x4A,0x28,0x67,0x02,0x6C,0x43,0x53,0x1C,0xF0,0x43,0x4A, +0x04,0x6F,0x43,0x53,0x02,0x60,0x43,0x52,0x93,0x28,0x6B,0x29,0x04,0x00,0x04,0x00, +0x03,0x3F,0x0C,0x2F,0x20,0xF0,0x24,0xF0,0x8F,0x5C,0x43,0x4A,0xE0,0x66,0x28,0xF0, +0xEF,0x4F,0x10,0x00,0xDF,0x4C,0x08,0x18,0x75,0x4E,0x6F,0x20,0x04,0x00,0x48,0x22, +0xF9,0x45,0x00,0x00,0xC4,0x98,0x52,0x48,0x40,0x42,0xD8,0x33,0x00,0x00,0xB6,0x95, +0xD8,0x33,0x00,0x00,0x04,0x97,0xD8,0x33,0x00,0x00,0xB8,0x95,0xD8,0x33,0x00,0x00, +0xDE,0xC7,0x1A,0x67,0x79,0x4A,0x00,0x00,0xB8,0x95,0x12,0x67,0xD1,0x24,0x99,0x24, +0x19,0x30,0x40,0x53,0x5A,0xD1,0x19,0x30,0x40,0x53,0x5A,0xD1,0x01,0x70,0x00,0x3F, +0x2C,0xF0,0x8F,0x5C,0x01,0x70,0x75,0x4E,0x6F,0x20,0x04,0x00,0xF9,0x30,0x00,0x00, +0xB6,0x95,0xF9,0x30,0x00,0x00,0x04,0x97,0xF9,0x30,0x00,0x00,0xB8,0x95,0xF9,0x30, +0x00,0x00,0xDE,0xC7,0x75,0x4E,0x39,0x32,0x00,0x00,0xB8,0x95,0x34,0x67,0x39,0x34, +0x00,0x00,0xDE,0xC7,0x2C,0x67,0x6F,0x20,0x04,0x00,0xF9,0x43,0x00,0x00,0xB6,0x95, +0xF9,0x45,0x00,0x00,0x04,0x97,0x18,0x30,0x51,0xD2,0x41,0xB0,0x18,0x6C,0x18,0x32, +0x52,0xD4,0x42,0xB2,0x10,0x6C,0x58,0xD0,0x51,0xB0,0x0A,0x6D,0x58,0xD2,0x52,0xB2, +0x04,0x6D,0x01,0x70,0x75,0x4E,0x00,0x70,0x75,0x4E,0xEF,0x41,0x04,0x00,0x18,0x30, +0x18,0x32,0x18,0x34,0x58,0x22,0xF9,0x41,0x00,0x00,0xC4,0x98,0x08,0x2F,0x02,0x3F, +0x06,0x60,0x99,0x20,0x58,0xD1,0x58,0xD3,0x42,0x53,0xF6,0x6C,0x00,0x61,0x6C,0x05, +0x8F,0x5C,0x75,0x4E,0x1C,0xF0,0xEF,0x41,0x04,0x00,0x08,0x2F,0x3C,0x3F,0x02,0x00, +0x30,0xF0,0x8F,0x5C,0x28,0xF0,0x75,0x4E,0xEF,0x41,0x04,0x00,0xE7,0x48,0x18,0x18, +0xF9,0x47,0x00,0x00,0xBA,0x95,0xF9,0x49,0x00,0x00,0xE0,0xC7,0x13,0x3F,0x18,0x36, +0x18,0x30,0x18,0x38,0x6C,0x42,0x02,0x00,0x7C,0x39,0x01,0x00,0x06,0x00,0x79,0x39, +0x00,0x00,0x66,0xC7,0x0C,0x00,0xF9,0x41,0x00,0x00,0x48,0xC8,0x50,0xB0,0x0A,0x67, +0xBC,0x38,0x20,0x00,0x80,0x36,0x80,0x30,0x38,0xF0,0x43,0x4A,0x0E,0x67,0xF9,0x41, +0x00,0x00,0x1A,0x97,0x50,0xB8,0x18,0x67,0x16,0x70,0x0C,0x60,0xF9,0x41,0x00,0x00, +0x04,0xC9,0x50,0xB8,0x0A,0x67,0x11,0x70,0x80,0x38,0x84,0x36,0x84,0x30,0x38,0xF0, +0x9F,0x36,0xDF,0x4C,0x18,0x18,0x75,0x4E,0x6F,0x20,0x04,0x00,0x18,0x20,0x18,0x32, +0x41,0x53,0x18,0x34,0x42,0x53,0xF9,0x43,0x00,0x00,0xC4,0x98,0xC0,0x22,0x80,0x22, +0x51,0xD3,0xD9,0x22,0x80,0x22,0x61,0xD5,0xD9,0x22,0x80,0x32,0x75,0x4E,0x2F,0x2F, +0x04,0x00,0xD4,0x61,0xBC,0x2E,0x00,0x00,0xC4,0x98,0x3C,0x3F,0x05,0x00,0x30,0xF0, +0x8F,0x5C,0x75,0x4E,0xEF,0x41,0x04,0x00,0xF9,0x43,0x00,0x00,0x92,0xC8,0x58,0x24, +0xD8,0x24,0x18,0x66,0x19,0x30,0x40,0x52,0xC0,0x34,0x99,0x34,0x5A,0x52,0x48,0xE8, +0xC0,0x34,0x5A,0x42,0xB9,0x34,0x00,0x00,0x14,0xC9,0x75,0x4E,0x18,0x30,0x48,0xE7, +0xC0,0x34,0xD8,0x34,0x48,0xE8,0xC0,0x34,0x5A,0x42,0xBC,0x34,0x01,0x00,0x75,0x4E, +0xE7,0x48,0x1C,0x18,0xEF,0x47,0x18,0x00,0xF9,0x49,0x00,0x00,0xA6,0x9B,0xF9,0x4B, +0x00,0x00,0xDE,0x9B,0x2B,0x36,0x16,0x00,0x03,0x3F,0x5B,0x20,0x1B,0x28,0x1B,0x3F, +0x50,0x48,0x54,0x48,0x9E,0x61,0x1C,0xF0,0x83,0x3E,0x5B,0x20,0x1B,0x26,0x1B,0x3F, +0x50,0x48,0x55,0x48,0x8E,0x61,0xF9,0x41,0x00,0x00,0xC4,0x98,0x48,0x22,0x1B,0x30, +0x40,0x53,0x1B,0x32,0x41,0x53,0xC4,0x20,0x84,0x20,0x58,0xD1,0x58,0xD3,0xC3,0x20, +0x83,0x20,0x58,0xD1,0x58,0xD3,0x1B,0x30,0x93,0x2E,0x55,0x48,0x54,0x48,0x51,0x48, +0x00,0x3F,0x53,0x0C,0xFF,0xFF,0x04,0x67,0x40,0xF0,0x02,0x60,0x44,0xF0,0x28,0xF0, +0xEF,0x4F,0x24,0x00,0xDF,0x4C,0x18,0x38,0x75,0x4E,0xEF,0x41,0x0E,0x00,0xFF,0x70, +0x00,0x2F,0x28,0x3F,0xF6,0xFF,0x10,0x2F,0x67,0x42,0x20,0x2F,0xA7,0x42,0x67,0x42, +0x20,0x2F,0xA7,0x42,0x18,0xF0,0xEF,0x4F,0x1E,0x00,0x75,0x4E,0xE7,0x48,0x1C,0x00, +0xEF,0x47,0x1C,0x00,0x13,0x36,0xF9,0x49,0x00,0x00,0xA6,0x9B,0xF9,0x4B,0x00,0x00, +0xDE,0x9B,0x03,0x3F,0x23,0x3F,0x23,0x2F,0x55,0x48,0x00,0x61,0x08,0xFF,0x03,0x3F, +0x23,0x3F,0x23,0x2F,0x54,0x48,0x00,0x61,0xFC,0xFE,0x7C,0x29,0x01,0x00,0x01,0x00, +0x0A,0x00,0x55,0x48,0x54,0x48,0x4C,0xF0,0xEF,0x4F,0x20,0x00,0xDF,0x4C,0x00,0x38, +0x75,0x4E,0xE7,0x48,0x00,0x1E,0xFF,0x70,0xC0,0x33,0x00,0x00,0x04,0xC9,0xC0,0x33, +0x00,0x00,0x1A,0x97,0xC0,0x33,0x00,0x00,0x16,0xC9,0xC0,0x33,0x00,0x00,0x48,0xC8, +0xC0,0x33,0x00,0x00,0x0C,0x98,0xC0,0x33,0x00,0x00,0xA2,0x98,0xC0,0x33,0x00,0x00, +0xEC,0x9A,0x79,0x42,0x00,0x00,0xB6,0x95,0x79,0x42,0x00,0x00,0x04,0x97,0xF9,0x47, +0x00,0x00,0x92,0xC8,0x1B,0x36,0x43,0x52,0xC3,0x33,0x00,0x00,0xB8,0x95,0xC3,0x33, +0x00,0x00,0x0A,0x98,0x1B,0x38,0x44,0x52,0xC4,0x33,0x00,0x00,0xDE,0xC7,0xC4,0x33, +0x00,0x00,0x8E,0xC7,0x2B,0x30,0x16,0x00,0x41,0x42,0x48,0xE2,0x04,0x67,0x41,0x52, +0xF8,0x60,0xC1,0x33,0x00,0x00,0x14,0xC9,0xA7,0x42,0x3C,0x3F,0x26,0x00,0x50,0xF0, +0xF9,0x43,0x00,0x00,0xBC,0x9A,0xD9,0x33,0x00,0x00,0x08,0x9C,0x51,0x37,0x5C,0x00, +0xD9,0x33,0x00,0x00,0xD2,0x9A,0x19,0x3A,0xC5,0x33,0x00,0x00,0x32,0xC8,0x19,0x3C, +0xC6,0x33,0x00,0x00,0x72,0xC6,0x79,0x48,0x00,0x00,0x42,0xC8,0x79,0x48,0x00,0x00, +0xF4,0x97,0x79,0x48,0x00,0x00,0xD4,0x9A,0x79,0x48,0x00,0x00,0x0A,0x9C,0x2B,0x3F, +0x58,0x00,0x54,0xF0,0xD7,0x41,0x50,0x48,0x50,0x48,0x50,0x48,0x50,0x48,0x2B,0x3F, +0x5C,0x00,0x54,0xF0,0x03,0x30,0xC0,0x48,0xC5,0x81,0xC0,0x33,0x00,0x00,0x12,0xC9, +0x04,0x30,0xC0,0x48,0xC6,0x81,0xC0,0x33,0x00,0x00,0xA2,0x9B,0x46,0x56,0xC6,0x33, +0x00,0x00,0x02,0x97,0x4B,0x54,0x1B,0x30,0x1B,0x3A,0xC6,0xCB,0xC0,0x8B,0xC5,0x33, +0x00,0x00,0xD6,0x9A,0x79,0x48,0x0F,0x00,0x07,0x00,0x00,0xF0,0xBC,0x3E,0x01,0x00, +0x5C,0xF0,0x79,0x48,0x71,0x00,0xFF,0xFF,0x00,0xF0,0xF9,0x41,0x00,0x00,0xA4,0x98, +0x98,0x42,0xC3,0x30,0xC4,0x30,0xF9,0x41,0x00,0x00,0xAC,0x98,0x58,0x42,0xC6,0x30, +0xC3,0x30,0x84,0x30,0x50,0x9D,0xF9,0x41,0x00,0x00,0x30,0x9B,0x98,0x42,0x98,0x42, +0xF9,0x41,0x00,0x00,0x1C,0x97,0x98,0x42,0xC3,0x30,0x86,0x30,0xF9,0x41,0x00,0x00, +0x62,0xC8,0x45,0x96,0x4B,0xE2,0xC3,0x30,0x84,0x30,0x06,0x30,0x40,0xD0,0x50,0x91, +0xD8,0xE2,0xC5,0x30,0x86,0x30,0xFC,0x23,0x00,0x00,0xBA,0x95,0x00,0x00,0x44,0xC8, +0xEF,0x4F,0x32,0x00,0xDF,0x4C,0x78,0x00,0x75,0x4E,0x0B,0x2F,0xEF,0x47,0x08,0x00, +0x39,0x3F,0x00,0x00,0x1A,0x97,0x1B,0x3F,0x3C,0x3F,0x01,0x00,0x14,0xF0,0xF9,0x41, +0x00,0x00,0xEC,0x9A,0x1B,0x30,0x50,0xB0,0x0C,0x67,0x80,0x30,0x00,0x3F,0x3C,0x3F, +0x17,0x00,0x00,0xF0,0x8F,0x58,0xF9,0x41,0x00,0x00,0xA2,0x98,0x1B,0x30,0x50,0xB0, +0x0C,0x67,0x80,0x30,0x00,0x3F,0x3C,0x3F,0x18,0x00,0x00,0xF0,0x8F,0x58,0xF9,0x41, +0x00,0x00,0xC4,0x98,0xD3,0x20,0x9B,0x20,0x1B,0x30,0x40,0x53,0x58,0xD1,0x13,0x30, +0x40,0x53,0x50,0xD1,0xF9,0x47,0x00,0x00,0xDE,0x9B,0xA7,0x42,0xA7,0x42,0x53,0x48, +0x00,0x61,0x02,0xFD,0x53,0x48,0x79,0x48,0x00,0x00,0xC4,0x98,0x64,0xF0,0xEF,0x4F, +0x1A,0x00,0x5F,0x26,0x75,0x4E,0xEF,0x41,0x04,0x00,0xE7,0x48,0x1C,0x10,0x18,0x36, +0x18,0x2F,0x58,0x26,0x58,0x28,0x58,0x2A,0x39,0x2F,0x00,0x00,0x44,0xC8,0x68,0xF0, +0x8F,0x50,0x7C,0xB6,0x03,0x00,0x0E,0x66,0x39,0x32,0x00,0x00,0x32,0xC8,0x39,0x34, +0x00,0x00,0x72,0xC6,0x12,0x60,0x7C,0xB6,0x05,0x00,0x22,0x66,0x39,0x32,0x00,0x00, +0xF4,0x97,0x39,0x34,0x00,0x00,0x42,0xC8,0xC1,0xC1,0x53,0xB0,0x02,0x6F,0x13,0x30, +0x80,0x36,0x54,0xB4,0x0C,0x6E,0x82,0x38,0xC0,0x48,0xC1,0x81,0x06,0x60,0x53,0x42, +0x54,0x42,0x40,0x42,0x80,0x3A,0xDF,0x4C,0x08,0x38,0x75,0x4E,0xEF,0x41,0x04,0x00, +0xE7,0x48,0x18,0x1C,0xF9,0x47,0x00,0x00,0x0C,0x98,0x18,0x36,0x18,0x28,0x18,0x3A, +0xFA,0x43,0x54,0x00,0x7C,0xB6,0x03,0x00,0x0A,0x67,0xFA,0x43,0x62,0x00,0x7C,0xB6, +0x05,0x00,0x1C,0x66,0x59,0x28,0x53,0xB6,0x14,0x67,0x19,0x2F,0x19,0x2F,0x19,0x2F, +0x19,0x2F,0x59,0x22,0x11,0x3F,0x54,0xF0,0xEF,0x4F,0x12,0x00,0x83,0x36,0x54,0xD8, +0xF9,0x43,0x00,0x00,0xE0,0xC7,0xFC,0x22,0x08,0x00,0x01,0x00,0x89,0x54,0xC5,0x32, +0x89,0x58,0xF9,0x32,0x00,0x00,0x66,0xC7,0xC4,0x23,0x00,0x00,0xC4,0x98,0x38,0xF0, +0xDF,0x4C,0x38,0x18,0x75,0x4E,0x00,0x00,0xD2,0x9A,0x00,0x00,0x72,0xC6,0x00,0x00, +0x32,0xC8,0x00,0x00,0xD2,0x9A,0x00,0x00,0x08,0x9C,0x00,0x00,0xF2,0xC8,0x00,0x00, +0xD4,0x9A,0x00,0x00,0x42,0xC8,0x00,0x00,0xF4,0x97,0x00,0x00,0xD4,0x9A,0x00,0x00, +0x0A,0x9C,0x00,0x00,0xEE,0xC8,0x2F,0x2F,0x04,0x00,0x00,0x61,0xAC,0xFB,0xBC,0x2E, +0x00,0x00,0xC4,0x98,0x3C,0x3F,0x04,0x00,0x00,0x61,0x80,0x00,0x6F,0x20,0x02,0x00, +0x88,0x58,0xE8,0x20,0x08,0x00,0x60,0x53,0x57,0x55,0x6E,0x61,0x8F,0x5C,0x75,0x4E, +0x6F,0x20,0x04,0x00,0xE7,0x48,0x10,0x1E,0x39,0x3A,0x00,0x00,0xD6,0x9A,0x45,0xDA, +0x39,0x3C,0x00,0x00,0x02,0x97,0x46,0xDC,0xF9,0x47,0x00,0x00,0xC4,0x98,0x0B,0x2F, +0x3C,0x3F,0x03,0x00,0xD0,0x26,0x6B,0xDD,0xFE,0xFF,0xD0,0x26,0x98,0x26,0x53,0xDB, +0x18,0x36,0x43,0x53,0x18,0x38,0x44,0x53,0x30,0x61,0x53,0x9B,0x53,0xD7,0x13,0x27, +0x13,0x27,0x53,0x9B,0x6B,0xDD,0x0A,0x00,0x20,0x61,0x6B,0xD9,0x02,0x00,0x9B,0x26, +0x53,0xDB,0xDB,0x26,0x63,0x9D,0x12,0x61,0x63,0x97,0x13,0x27,0x6B,0xDD,0x02,0x00, +0x13,0x27,0x53,0xDB,0x04,0x61,0x8F,0x5C,0x58,0x60,0xE7,0x48,0x10,0x1E,0x6F,0x26, +0x1A,0x00,0x01,0x76,0x01,0x78,0x3C,0x3A,0x55,0x55,0x36,0x60,0x1B,0x30,0x1B,0x32, +0x53,0xB0,0x0A,0x66,0x41,0xB1,0x44,0xC2,0x05,0x30,0x68,0xE3,0x0C,0x60,0x04,0x6D, +0x2B,0x32,0x02,0x00,0x44,0xC2,0x05,0x30,0x68,0xE3,0x00,0x3F,0x3C,0x3F,0x71,0x00, +0x00,0xF0,0x8F,0x58,0x6B,0x48,0xFC,0xFF,0x3C,0x3F,0x02,0x00,0x30,0xF0,0x8F,0x5C, +0x43,0x52,0x6F,0xB6,0x18,0x00,0xC4,0x6D,0x79,0x48,0x71,0x00,0xFF,0xFF,0x00,0xF0, +0x8F,0x58,0xDF,0x4C,0x78,0x08,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x03, +0x2E,0x3E,0x08,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6,0x6B,0x2A,0x96,0x33,0x0D,0x20, +0x2E,0x67,0x55,0x27,0x96,0x33,0x47,0x4A,0x06,0x66,0xAB,0x4A,0x9A,0x33,0x0A,0x66, +0xAB,0x2A,0x9A,0x33,0x4D,0x27,0x9A,0x33,0x10,0x60,0x6B,0x28,0x9A,0x33,0x02,0x60, +0x54,0x28,0x94,0x4A,0xFA,0x66,0x8D,0x28,0x95,0x42,0x0D,0x20,0x04,0x60,0x02,0x60, +0x80,0x42,0x21,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x08,0x00, +0x79,0x26,0x00,0x00,0xA6,0xC6,0xEB,0xBB,0x9A,0x33,0x06,0x66,0x55,0x27,0x9A,0x33, +0x16,0x60,0x6B,0x28,0x9A,0x33,0x02,0x60,0x54,0x28,0x0C,0x20,0x04,0x67,0xD4,0xBB, +0xF6,0x66,0x0C,0x20,0x02,0x67,0x95,0x28,0xAB,0x2A,0x96,0x33,0x4D,0x27,0x96,0x33, +0x01,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x1E,0x09,0x00,0x3C,0xBE, +0x30,0x00,0x10,0x6D,0x3C,0xBE,0x39,0x00,0x0A,0x6E,0x07,0x10,0x80,0x48,0x7C,0xD0, +0xD0,0xFF,0x18,0x60,0x3C,0xBE,0x41,0x00,0x10,0x6D,0x3C,0xBE,0x46,0x00,0x0A,0x6E, +0x07,0x10,0x80,0x48,0x7C,0xD0,0xC9,0xFF,0x02,0x60,0x40,0x42,0x21,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x08,0x00,0x47,0x4A,0x0E,0x6D,0x7C,0xBE, +0x09,0x00,0x08,0x6E,0x07,0x30,0x7C,0xD0,0x30,0x00,0x16,0x60,0x7C,0xBE,0x0A,0x00, +0x0E,0x6D,0x7C,0xBE,0x0F,0x00,0x08,0x6E,0x07,0x30,0x7C,0xD0,0x37,0x00,0x02,0x60, +0x20,0x70,0x21,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x6E,0x2A,0x08,0x00, +0x6E,0x28,0x0C,0x00,0x47,0x42,0x1D,0x10,0x80,0x48,0x80,0x3E,0x34,0xF3,0x40,0xE9, +0x40,0x8E,0x1D,0x10,0x80,0x48,0x80,0x3E,0x34,0xF3,0x40,0x8E,0x7C,0xBE,0xFF,0x00, +0x02,0x66,0xFF,0x7E,0x87,0x38,0x8D,0x52,0x0D,0x20,0x21,0xFC,0x56,0x4E,0xFC,0xFF, +0x2E,0x2F,0x08,0x00,0x2E,0x30,0x0C,0x00,0x48,0xE8,0x00,0x3F,0x57,0x02,0x0F,0x00, +0x38,0xF3,0x8F,0x54,0x5F,0x20,0x80,0x10,0xAE,0x52,0x08,0x00,0x2E,0x2F,0x08,0x00, +0x2E,0x3F,0x0C,0x00,0x57,0x02,0x0F,0x00,0x38,0xF3,0x8F,0x54,0x5F,0x20,0x80,0x10, +0xAE,0x52,0x08,0x00,0x6E,0x20,0x08,0x00,0xBC,0x10,0x20,0x00,0xAE,0x52,0x08,0x00, +0x2E,0x20,0x08,0x00,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A, +0x08,0x00,0x6E,0x28,0x0C,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6,0x02,0x60,0x8D,0x52, +0x15,0x0C,0x20,0x00,0xF8,0x67,0xAB,0x28,0x12,0x30,0x0A,0x60,0x6B,0x20,0x12,0x30, +0x9D,0x10,0xAB,0x52,0x12,0x30,0x15,0x0C,0x40,0x00,0xF0,0x66,0x6B,0x20,0x12,0x30, +0x10,0x42,0xAB,0x52,0x12,0x30,0x8D,0x52,0x0D,0x20,0x01,0xFE,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x02,0x60,0xDC,0x1A, +0x14,0x4A,0x04,0x67,0x0C,0x20,0xF6,0x66,0xFC,0x1A,0x40,0x00,0xFC,0x1A,0x20,0x00, +0x0D,0x20,0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00, +0x6E,0x28,0x0C,0x00,0x15,0x10,0x80,0x48,0x54,0x60,0x7C,0x39,0x03,0x00,0x06,0x00, +0x7C,0x39,0x07,0x00,0x04,0x00,0x5E,0x60,0x7C,0x39,0x02,0x00,0x06,0x00,0x7C,0x39, +0x07,0x00,0x04,0x00,0x50,0x60,0x7C,0x39,0x04,0x00,0x06,0x00,0x7C,0x39,0x07,0x00, +0x04,0x00,0x42,0x60,0x6C,0x42,0x06,0x00,0x7C,0x39,0x03,0x00,0x04,0x00,0x36,0x60, +0x6C,0x42,0x06,0x00,0x6C,0x42,0x04,0x00,0x2C,0x60,0x6C,0x42,0x06,0x00,0x7C,0x39, +0x08,0x00,0x04,0x00,0x20,0x60,0x7C,0x39,0x01,0x00,0x06,0x00,0x18,0x60,0x7C,0x90, +0x43,0x00,0x7C,0xB0,0x11,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00, +0xCE,0xEF,0x50,0x20,0xD0,0x4E,0x8D,0x54,0x2C,0x08,0x02,0x00,0x05,0x00,0x20,0x67, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x18,0x00,0x0D,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x2A, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x1A,0x00,0x0D,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x2A, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x12,0x00,0x0D,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x2A, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x14,0x00,0x0D,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x2A, +0x15,0x0C,0x20,0x00,0x04,0x66,0x40,0x42,0x04,0x60,0x15,0x10,0x80,0x48,0x40,0x39, +0x16,0x00,0x8D,0x54,0x8C,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x0D,0x2F,0x40,0xF3, +0x8F,0x58,0x40,0x2A,0x8C,0x2E,0x97,0x06,0x00,0x00,0x0E,0x00,0x0D,0x2F,0x40,0xF3, +0x8F,0x58,0x40,0x2A,0x0D,0x20,0x01,0xFC,0x56,0x4E,0xEA,0xFF,0x8E,0x2E,0x97,0x59, +0x2E,0x3F,0x08,0x00,0x3C,0x3F,0x04,0x00,0x44,0xF3,0x8F,0x58,0xBC,0x3E,0x0E,0x00, +0x2E,0x2F,0xFC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x28,0xF1,0x8F,0x50, +0x2E,0x2F,0xF2,0xFF,0x2E,0x2F,0xEE,0xFF,0x2E,0x3F,0xF2,0xFF,0x2E,0x2F,0xEE,0xFF, +0x48,0xF3,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x0C,0x0F,0x6E,0x2A,0x0A,0x00,0x2E,0x3E,0x0E,0x00,0x79,0x28,0x00,0x00,0xA6,0xC6, +0x46,0x42,0x8C,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19,0x0D,0x2F,0x4C,0xF3,0x8F,0x58, +0xEC,0x41,0xE4,0x19,0x08,0x2A,0x6E,0x4A,0x08,0x00,0x0E,0x67,0xBC,0x3E,0x02,0x00, +0x05,0x2F,0x50,0xF3,0x8F,0x58,0x00,0x3C,0x0A,0x60,0x57,0x42,0x05,0x2F,0x54,0xF3, +0x8F,0x58,0x00,0x3C,0x79,0x4A,0x00,0x00,0xEC,0x98,0x02,0x67,0x46,0x42,0x06,0x30, +0x39,0xFC,0x56,0x4E,0xE0,0xFF,0xE7,0x48,0x04,0x1F,0x79,0x2A,0x00,0x00,0xA6,0xC6, +0x7C,0x3D,0xCC,0x00,0xF0,0xFF,0xAE,0x3E,0xF0,0xFF,0x0D,0x2F,0x97,0x06,0x00,0x00, +0x9E,0x33,0x3C,0x3F,0x02,0x00,0x58,0xF3,0x8F,0x5C,0x40,0x3D,0xEE,0xFF,0x8D,0x2E, +0x97,0x06,0x00,0x00,0x6A,0x34,0x0D,0x2F,0x97,0x06,0x00,0x00,0x9E,0x33,0x2E,0x3F, +0xF0,0xFF,0x5C,0xF3,0x8F,0x5C,0x46,0x42,0x06,0x3E,0x32,0x60,0x4D,0x20,0x06,0x32, +0xFC,0xC3,0x22,0x00,0xC1,0xD1,0x28,0x20,0xA2,0x33,0x80,0x3E,0x4D,0x20,0x06,0x32, +0xFC,0xC3,0x22,0x00,0xC1,0xD1,0x28,0x20,0x9E,0x33,0x00,0x3F,0x60,0xF3,0x8F,0x54, +0x00,0x38,0x84,0x3E,0x07,0x3F,0x60,0xF3,0x8F,0x54,0x00,0x3E,0x46,0x52,0x4D,0x20, +0x06,0x32,0xFC,0xC3,0x22,0x00,0xC1,0xD1,0xA8,0x0C,0xFF,0xFF,0xFF,0xFF,0x9E,0x33, +0xBA,0x66,0x47,0x52,0x2D,0x30,0xB4,0x33,0xED,0xC1,0xB6,0x33,0xC0,0x48,0xFC,0x81, +0x10,0x00,0x40,0x3D,0xE8,0xFF,0x2E,0x30,0xE8,0xFF,0x40,0xE3,0x40,0x3D,0xE6,0xFF, +0x07,0x30,0xEE,0xC1,0xE6,0xFF,0x40,0x3D,0xE0,0xFF,0x80,0x42,0x2E,0x30,0xE0,0xFF, +0x80,0x2E,0x64,0xF3,0x40,0x2B,0x7A,0x37,0xAE,0x3E,0xF0,0xFF,0x2D,0x2F,0x7A,0x37, +0x3C,0x3F,0x04,0x00,0x58,0xF3,0x8F,0x5C,0x40,0x3D,0xEE,0xFF,0x45,0x42,0x34,0x60, +0x4D,0x20,0x4D,0x22,0x05,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x69,0x22,0x9E,0x33, +0xC9,0xD3,0xC9,0xD1,0x7C,0x31,0x01,0x00,0x36,0x35,0x4D,0x20,0x4D,0x22,0x05,0x34, +0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x69,0x22,0xA2,0x33,0xC9,0xD3,0xC9,0xD1,0x68,0x42, +0x36,0x35,0x45,0x52,0x46,0xBA,0xC8,0x6D,0x6E,0x42,0xE4,0xFF,0x45,0x42,0x32,0x60, +0x4D,0x20,0x45,0x32,0xC9,0xD3,0xC9,0xD1,0x68,0x4A,0x36,0x35,0x14,0x67,0x4D,0x20, +0x45,0x32,0xC9,0xD3,0xC9,0xD1,0x6E,0x31,0xE4,0xFF,0x36,0x35,0x6E,0x52,0xE4,0xFF, +0x0E,0x60,0x4D,0x20,0x45,0x32,0xC9,0xD3,0xC9,0xD1,0x7C,0x31,0xFF,0xFF,0x36,0x35, +0x45,0x52,0x47,0xBA,0xCA,0x6D,0x2E,0x30,0xE4,0xFF,0xEE,0xC1,0xE6,0xFF,0x40,0x3D, +0xE2,0xFF,0x80,0x42,0x2E,0x30,0xE2,0xFF,0x80,0x2E,0x64,0xF3,0x40,0x2B,0x7E,0x37, +0x45,0x42,0x00,0x60,0xD8,0x00,0x6E,0x30,0xE6,0xFF,0x08,0x2F,0x4D,0x20,0x4D,0x22, +0x05,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x69,0x22,0x9E,0x33,0xC9,0xD3,0xC9,0xD1, +0x28,0x30,0x36,0x35,0xC0,0x48,0x00,0x2F,0xB9,0x4E,0xFE,0x00,0x1E,0x3A,0x8F,0x50, +0x40,0x2D,0xFC,0xFF,0x2E,0x20,0xFC,0xFF,0x40,0x48,0x40,0x42,0x40,0x48,0xAD,0xD0, +0x7E,0x37,0x4D,0x22,0x05,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x40,0x23,0x6A,0x34, +0x2E,0x30,0xE6,0xFF,0xC0,0x48,0x00,0x2F,0x4D,0x20,0x05,0x32,0xFC,0xC3,0x22,0x00, +0xC1,0xD1,0x28,0x2F,0x9E,0x33,0xB9,0x4E,0xFE,0x00,0x1E,0x3A,0x8F,0x50,0x40,0x2D, +0xFC,0xFF,0x2E,0x20,0xFC,0xFF,0x40,0x48,0x40,0x42,0x40,0x48,0xAD,0xD0,0x7A,0x37, +0x4D,0x22,0x05,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x40,0x23,0x9E,0x33,0x2E,0x30, +0xE6,0xFF,0xC0,0x48,0x00,0x2F,0x4D,0x20,0x05,0x32,0xFC,0xC3,0x22,0x00,0xC1,0xD1, +0x28,0x2F,0xA2,0x33,0xB9,0x4E,0xFE,0x00,0x1E,0x3A,0x8F,0x50,0x40,0x2D,0xFC,0xFF, +0x2E,0x20,0xFC,0xFF,0x40,0x48,0x40,0x42,0x40,0x48,0xAD,0xD0,0x7A,0x37,0x4D,0x22, +0x05,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x40,0x23,0xA2,0x33,0x4D,0x22,0x05,0x34, +0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x40,0x23,0x6E,0x34,0x45,0x52,0x46,0xBA,0x00,0x6D, +0x26,0xFF,0x2D,0x30,0xB4,0x33,0xC0,0x48,0xFC,0x81,0x08,0x00,0x40,0x3D,0xEC,0xFF, +0x6D,0x3D,0xB6,0x33,0xEA,0xFF,0x45,0x42,0x74,0x60,0x4D,0x20,0x45,0x32,0xC9,0xD3, +0xC9,0xD1,0x68,0x0C,0xFF,0xFF,0x36,0x35,0x38,0x67,0x05,0x30,0xEE,0xC1,0xE6,0xFF, +0xAD,0xD0,0x7A,0x37,0x40,0x2D,0xF8,0xFF,0x4D,0x20,0x45,0x32,0xC9,0xD3,0xC9,0xD1, +0x28,0x30,0x36,0x35,0xEE,0xC1,0xE6,0xFF,0xAD,0xD0,0x7E,0x37,0x40,0x2D,0xF4,0xFF, +0xAE,0x3E,0xE8,0xFF,0x2E,0x2F,0xF8,0xFF,0x2E,0x2F,0xF4,0xFF,0x70,0xF1,0x8F,0x50, +0x0E,0x60,0x05,0x30,0xEE,0xC1,0xE6,0xFF,0xAD,0xD0,0x7A,0x37,0x40,0x2D,0xF4,0xFF, +0xAE,0x3E,0xEA,0xFF,0x2E,0x3F,0xEC,0xFF,0x2E,0x2F,0xF4,0xFF,0x2E,0x3F,0xEC,0xFF, +0x2E,0x2F,0xF4,0xFF,0x48,0xF3,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x45,0x52,0x47,0xBA, +0x88,0x6D,0x57,0x42,0x68,0xF3,0x01,0x70,0x3D,0xF8,0x56,0x4E,0xFC,0xFF,0xE7,0x48, +0x1C,0x1F,0x6E,0x2A,0x0C,0x00,0x6E,0x28,0x10,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6, +0x2B,0x3A,0xBC,0x1F,0x2E,0x3E,0x08,0x00,0xC7,0x48,0xC5,0x8F,0x2E,0x30,0x08,0x00, +0xC0,0x48,0xC5,0x81,0x40,0x48,0x40,0x3D,0xFE,0xFF,0x05,0x30,0xC0,0x48,0xFC,0x81, +0x02,0x00,0x6E,0xB0,0xFE,0xFF,0x0C,0x6C,0x05,0x30,0x07,0x32,0x41,0x52,0xC1,0xC1, +0x80,0x3A,0x06,0x60,0x07,0x30,0xC5,0xC1,0x80,0x3A,0xB9,0x3E,0x00,0x00,0x0A,0x98, +0x05,0x30,0x57,0x91,0x15,0x3F,0x6C,0xF3,0x8F,0x54,0x80,0x3A,0x39,0x30,0x00,0x00, +0x0A,0x98,0xC0,0x48,0xFC,0x81,0x02,0x00,0x55,0xB0,0x0E,0x6C,0x39,0x30,0x00,0x00, +0x0A,0x98,0xC0,0x48,0xC5,0x81,0x40,0x48,0x55,0xD1,0x2B,0x30,0x0A,0x1E,0x6E,0x91, +0x0A,0x00,0x2B,0x38,0xBE,0x1F,0x2E,0x3C,0x0A,0x00,0xC6,0x48,0xC4,0x8D,0x2E,0x30, +0x0A,0x00,0xC0,0x48,0xC4,0x81,0x40,0x48,0x40,0x3D,0xFC,0xFF,0x04,0x30,0xC0,0x48, +0xFC,0x81,0x02,0x00,0x6E,0xB0,0xFC,0xFF,0x0C,0x6C,0x04,0x30,0x06,0x32,0x41,0x52, +0xC1,0xC1,0x80,0x38,0x06,0x60,0x06,0x30,0xC4,0xC1,0x80,0x38,0xAB,0x3E,0x0E,0x1E, +0x04,0x30,0x57,0x91,0x14,0x3F,0x6C,0xF3,0x8F,0x54,0x80,0x38,0x2B,0x30,0x0E,0x1E, +0xC0,0x48,0xFC,0x81,0x02,0x00,0x54,0xB0,0x0C,0x6C,0x2B,0x30,0x0E,0x1E,0xC0,0x48, +0xC4,0x81,0x40,0x48,0x54,0xD1,0x2B,0x30,0x0A,0x1E,0x54,0xD1,0x3D,0xFE,0x56,0x4E, +0xEE,0xFF,0xE7,0x48,0x1C,0x07,0x79,0x26,0x00,0x00,0xA6,0xC6,0xEB,0x41,0x12,0x28, +0x48,0x27,0x12,0x30,0x1E,0x7E,0x22,0x60,0x0B,0x20,0x07,0x32,0x41,0x52,0xFC,0xC3, +0x1C,0x00,0x81,0xD0,0xBC,0xD0,0x00,0x00,0x16,0x30,0x4B,0x22,0x07,0x34,0xFC,0xC5, +0x1C,0x00,0xC2,0xD3,0x40,0x23,0x16,0x30,0x47,0x53,0x47,0x4A,0xDA,0x6C,0xAB,0x42, +0x9A,0x33,0xEB,0x41,0x16,0x30,0x48,0x27,0x96,0x33,0xAB,0x42,0x7A,0x33,0xBC,0x3E, +0x00,0x08,0x0B,0x2F,0x97,0x06,0x00,0x00,0x10,0x20,0x70,0xF3,0x8F,0x58,0x2B,0x0C, +0x23,0x00,0x10,0x20,0x00,0x67,0x7C,0x00,0x74,0xF3,0x40,0x4A,0x52,0x67,0x57,0x42, +0x3C,0x2F,0xFE,0x00,0x7E,0xF0,0x3C,0x3F,0x01,0x00,0x78,0xF3,0x8F,0x5C,0x40,0x3D, +0xF4,0xFF,0x6E,0x4A,0xF4,0xFF,0x18,0x66,0x57,0x42,0x0B,0x2F,0x97,0x06,0x00,0x00, +0x10,0x20,0x3C,0x3F,0x03,0x00,0x58,0xF3,0x8F,0x5C,0x40,0x37,0x10,0x28,0x1E,0x60, +0x8B,0x2E,0x97,0x06,0x00,0x00,0x10,0x20,0x3C,0x3F,0x00,0x08,0x2E,0x3F,0xF4,0xFF, +0x7C,0xF3,0x8F,0x58,0x40,0x37,0x10,0x28,0xAE,0x3E,0xF4,0xFF,0x80,0xF3,0x16,0x60, +0x57,0x42,0x0B,0x2F,0x97,0x06,0x00,0x00,0x10,0x20,0x3C,0x3F,0x03,0x00,0x58,0xF3, +0x8F,0x5C,0x40,0x37,0x10,0x28,0x4B,0x20,0x6B,0x32,0x10,0x28,0xC9,0xD1,0x28,0x42, +0x10,0x20,0x47,0x42,0xEB,0x49,0x10,0x20,0x00,0x60,0x2E,0x02,0x14,0x0C,0x23,0x00, +0x06,0x67,0x8C,0x52,0x00,0x60,0x22,0x02,0x8C,0x52,0x14,0x10,0x80,0x48,0x00,0x60, +0x00,0x02,0x84,0xF3,0x40,0x4A,0x1C,0x66,0x00,0x60,0x0E,0x02,0x74,0xF3,0x00,0x3C, +0x00,0x67,0x06,0x02,0x2C,0x0C,0x43,0x00,0x0E,0x00,0x08,0x66,0x06,0x08,0x02,0x00, +0x00,0x67,0xF6,0x01,0xBC,0x3E,0x01,0x00,0x88,0xF3,0x40,0x2D,0xFC,0xFF,0xAE,0x2E, +0xFC,0xFF,0x0C,0x2F,0x8C,0xF3,0x8F,0x58,0x40,0x28,0x00,0x60,0xDC,0x01,0x8C,0x54, +0x4B,0x2A,0x07,0x30,0xFC,0xC1,0x88,0x00,0xC0,0xDB,0xFC,0xDB,0x00,0x00,0x5A,0x35, +0x47,0x52,0x8D,0x2E,0x97,0x50,0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28,0x8D,0x2E, +0x97,0x06,0x00,0x00,0x0A,0x00,0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28,0x8D,0x2E, +0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28,0x15,0x30,0x79,0xB0,0x00,0x00,0x12,0xC9, +0x0A,0x6D,0x15,0x30,0xC0,0x48,0xFC,0x81,0x02,0x00,0x80,0x3A,0x15,0x30,0xF9,0xC1, +0x00,0x00,0x32,0xC8,0x80,0x3A,0x8D,0x2E,0x97,0x54,0x0C,0x2F,0x3C,0xF3,0x8F,0x58, +0x40,0x28,0x2D,0x30,0x02,0x00,0xF9,0xC1,0x00,0x00,0x72,0xC6,0x40,0x3B,0x02,0x00, +0x8D,0x2E,0x97,0x58,0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28,0x2D,0x30,0x04,0x00, +0x79,0xB0,0x00,0x00,0x12,0xC9,0x0E,0x6F,0x2D,0x30,0x04,0x00,0xC0,0x48,0xFC,0x81, +0x02,0x00,0x40,0x3B,0x04,0x00,0x2D,0x30,0x04,0x00,0xF9,0xC1,0x00,0x00,0x32,0xC8, +0x40,0x3B,0x04,0x00,0x39,0x30,0x00,0x00,0xD6,0x9A,0xFC,0xC1,0x07,0x00,0x6D,0xB0, +0x04,0x00,0x0E,0x6F,0x39,0x30,0x00,0x00,0xD6,0x9A,0xFC,0xC1,0x07,0x00,0x40,0x3B, +0x04,0x00,0x8D,0x2E,0x97,0x5C,0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28,0x2D,0x30, +0x06,0x00,0xF9,0xC1,0x00,0x00,0x72,0xC6,0x40,0x3B,0x06,0x00,0x39,0x30,0x00,0x00, +0x02,0x97,0xFC,0xC1,0x07,0x00,0x6D,0xB0,0x06,0x00,0x0E,0x6F,0x39,0x30,0x00,0x00, +0x02,0x97,0xFC,0xC1,0x07,0x00,0x40,0x3B,0x06,0x00,0x8D,0x2E,0x97,0x06,0x00,0x00, +0x0C,0x00,0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28,0xED,0x41,0x0E,0x00,0x48,0x2D, +0xF6,0xFF,0x0A,0x60,0x6E,0x20,0xF6,0xFF,0x9C,0x10,0xAE,0x52,0xF6,0xFF,0x14,0x0C, +0x40,0x00,0xF0,0x66,0x6E,0x20,0xF6,0xFF,0x10,0x42,0x00,0x60,0xAC,0x00,0x8C,0x54, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0C,0x2F,0x3C,0xF3,0x8F,0x58,0x40,0x28, +0x2E,0x08,0x07,0x00,0xF3,0xFF,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x37, +0x50,0x35,0x2E,0x30,0xF2,0xFF,0x7C,0xC0,0x60,0x00,0x40,0xEA,0x40,0x37,0x4E,0x35, +0x2E,0x08,0x04,0x00,0xF3,0xFF,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x37, +0x54,0x35,0x2E,0x08,0x03,0x00,0xF3,0xFF,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70, +0x40,0x37,0x52,0x35,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0C,0x2F,0x3C,0xF3, +0x8F,0x58,0x40,0x28,0x2E,0x30,0xF2,0xFF,0x7C,0xC0,0xF0,0x00,0x40,0xE8,0x40,0x37, +0x56,0x35,0x2E,0x30,0xF2,0xFF,0x7C,0xC0,0x06,0x00,0x40,0x3D,0xF2,0xFF,0x6E,0x52, +0xF2,0xFF,0x39,0x30,0x00,0x00,0x08,0x89,0x40,0x53,0x40,0x37,0x58,0x35,0x18,0x60, +0x7C,0x90,0x43,0x00,0x7C,0xB0,0x14,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1, +0xFE,0x00,0x16,0xF0,0x50,0x20,0xD0,0x4E,0x14,0x4A,0x00,0x66,0xD0,0xFD,0x90,0xF3, +0x40,0x4A,0x06,0x66,0x40,0x42,0x00,0x60,0xB8,0x01,0x2B,0x30,0xB8,0x33,0x40,0xE3, +0x6B,0xD0,0xBC,0x33,0x40,0x37,0x0C,0x20,0x2B,0x30,0xB6,0x33,0x6B,0xD0,0xBE,0x33, +0x40,0x37,0x0E,0x20,0x79,0x0C,0x2C,0x01,0x00,0x00,0x8E,0xC7,0x04,0x6E,0x40,0x42, +0x02,0x60,0x08,0x70,0x40,0x37,0xBC,0x1F,0x2B,0x30,0x0C,0x20,0x6B,0xD1,0xBC,0x1F, +0x39,0x30,0x00,0x00,0x0A,0x98,0xC0,0x48,0xEB,0x81,0xBC,0x1F,0x40,0x3D,0xF0,0xFF, +0x39,0x30,0x00,0x00,0x0A,0x98,0xC0,0x48,0xEB,0x81,0xBC,0x1F,0x40,0x48,0xC0,0x48, +0xEE,0x81,0xF0,0xFF,0x6B,0xD1,0xBC,0x1F,0x2B,0x30,0x0E,0x20,0x40,0x54,0x40,0x37, +0xBE,0x1F,0x39,0x30,0x00,0x00,0x8E,0xC7,0x79,0x90,0x00,0x00,0x02,0x97,0xC0,0x48, +0xEB,0x81,0xBE,0x1F,0x40,0x3D,0xEE,0xFF,0x39,0x30,0x00,0x00,0x8E,0xC7,0x79,0x90, +0x00,0x00,0x02,0x97,0xC0,0x48,0xEB,0x81,0xBE,0x1F,0x40,0x48,0xC0,0x48,0xEE,0x81, +0xEE,0xFF,0x6B,0xD1,0xBE,0x1F,0x6B,0x2D,0x9A,0x33,0xFC,0xFF,0x42,0x60,0xAE,0x2E, +0xFC,0xFF,0x97,0x06,0x00,0x00,0x1A,0x00,0x2E,0x2F,0xFC,0xFF,0x97,0x06,0x00,0x00, +0x18,0x00,0x6E,0x20,0xFC,0xFF,0x28,0x30,0x1A,0x00,0xEB,0xC1,0xBE,0x1F,0x00,0x3F, +0x2B,0x30,0x0A,0x1E,0x57,0xD1,0x6E,0x20,0xFC,0xFF,0x28,0x30,0x18,0x00,0xEB,0xC1, +0xBC,0x1F,0x00,0x3F,0xCC,0xF2,0x8F,0x50,0x6E,0x20,0xFC,0xFF,0x50,0x2D,0xFC,0xFF, +0xAE,0x4A,0xFC,0xFF,0xB8,0x66,0x7C,0x37,0x09,0x00,0xC0,0x1F,0x7C,0x37,0x05,0x00, +0xC2,0x1F,0x8B,0x2E,0x97,0x06,0x00,0x00,0xC4,0x1F,0x67,0x42,0x3C,0x3F,0x12,0x00, +0x94,0xF3,0x8F,0x58,0x39,0x30,0x00,0x00,0xF4,0x97,0x40,0xE5,0x40,0x37,0xC4,0x1F, +0x6B,0x37,0xC4,0x1F,0xC8,0x1F,0x2B,0x30,0x0E,0x20,0x79,0x90,0x00,0x00,0xF4,0x97, +0x40,0x55,0x40,0x37,0xCA,0x1F,0x6B,0x37,0xCA,0x1F,0xCE,0x1F,0x6B,0x37,0x0E,0x20, +0xD2,0x1F,0x6B,0x37,0x0C,0x20,0xD4,0x1F,0x6B,0x37,0x0E,0x20,0xD6,0x1F,0x6B,0x37, +0x0C,0x20,0xD8,0x1F,0x2B,0x30,0x0E,0x20,0x79,0x90,0x00,0x00,0xF4,0x97,0x40,0x55, +0x40,0x37,0xDA,0x1F,0x39,0x30,0x00,0x00,0xF4,0x97,0x40,0xE7,0x40,0x37,0xDC,0x1F, +0x6B,0x37,0xDA,0x1F,0xDE,0x1F,0x39,0x30,0x00,0x00,0xF4,0x97,0x40,0xE7,0x40,0x37, +0xE0,0x1F,0x6B,0x37,0xC4,0x1F,0xE4,0x1F,0x8B,0x2E,0x97,0x06,0x00,0x00,0xE8,0x1F, +0x67,0x42,0x3C,0x3F,0x0A,0x00,0x94,0xF3,0x8F,0x58,0x39,0x30,0x00,0x00,0x32,0xC8, +0xFC,0xC1,0x0C,0x00,0x40,0x37,0xEC,0x1F,0x6B,0x37,0xEC,0x1F,0xF0,0x1F,0x79,0x37, +0x00,0x00,0x72,0xC6,0xF2,0x1F,0x79,0x37,0x00,0x00,0x72,0xC6,0xF6,0x1F,0x01,0x70, +0x31,0xFE,0x56,0x4E,0xFC,0xFF,0x2E,0x30,0x08,0x00,0x79,0xB0,0x00,0x00,0x08,0x89, +0x06,0x66,0x40,0x42,0x14,0x60,0x12,0x60,0xEE,0x33,0x08,0x00,0x00,0x00,0x08,0x89, +0xFC,0x33,0x01,0x00,0x00,0x00,0x0A,0x89,0x01,0x70,0x01,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x01,0x79,0x26,0x00,0x00,0xA6,0xC6,0x6B,0x2A,0x9A,0x33,0xAB,0x42, +0x9A,0x33,0x0C,0x60,0x55,0x28,0xAB,0x2A,0x9A,0x33,0x4D,0x27,0x9A,0x33,0x4C,0x2A, +0x0D,0x20,0xF0,0x66,0x01,0xFE,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x1C,0x0F,0x79,0x26, +0x00,0x00,0xA6,0xC6,0xEB,0x4B,0x90,0x20,0x8D,0x2E,0x67,0x42,0x3C,0x3F,0x80,0x07, +0x94,0xF3,0x8F,0x58,0xFC,0x1A,0x23,0x00,0xFC,0x1A,0x45,0x00,0xFC,0x1A,0x20,0x00, +0x6E,0x42,0xFE,0xFF,0x6B,0x4A,0x50,0x35,0x06,0x67,0x3C,0x30,0x80,0x00,0x02,0x60, +0x40,0x42,0x6E,0x81,0xFE,0xFF,0x2B,0x30,0x4E,0x35,0x40,0xEB,0x7C,0xC0,0x60,0x00, +0x6E,0x81,0xFE,0xFF,0x6B,0x4A,0x54,0x35,0x04,0x67,0x10,0x70,0x02,0x60,0x40,0x42, +0x6E,0x81,0xFE,0xFF,0x6B,0x4A,0x52,0x35,0x04,0x67,0x08,0x70,0x02,0x60,0x40,0x42, +0x6E,0x81,0xFE,0xFF,0xAE,0x3E,0xFE,0xFF,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A, +0x6E,0x42,0xFE,0xFF,0x2B,0x30,0x58,0x35,0x6E,0x81,0xFE,0xFF,0x2B,0x30,0x56,0x35, +0x40,0xE9,0x6E,0x81,0xFE,0xFF,0xAE,0x3E,0xFE,0xFF,0x0D,0x2F,0x98,0xF3,0x8F,0x58, +0x40,0x2A,0xFC,0x1A,0x0D,0x00,0xFC,0x1A,0x0A,0x00,0x47,0x42,0x00,0x60,0xC2,0x00, +0xFC,0x1A,0x23,0x00,0xFC,0x1A,0x57,0x00,0xFC,0x1A,0x20,0x00,0x4B,0x28,0x07,0x30, +0xFC,0xC1,0x88,0x00,0xC0,0xD9,0xFC,0xD9,0x00,0x00,0x5A,0x35,0xAC,0x3E,0x08,0x00, +0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0xAC,0x3E,0x0A,0x00,0x0D,0x2F,0x98,0xF3, +0x8F,0x58,0x40,0x2A,0x14,0x30,0xC0,0x48,0xF9,0x81,0x00,0x00,0x32,0xC8,0x80,0x3E, +0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0x2C,0x30,0x02,0x00,0xC0,0x48,0xF9,0x81, +0x00,0x00,0x72,0xC6,0x80,0x3E,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0x2C,0x30, +0x04,0x00,0xC0,0x48,0xF9,0x81,0x00,0x00,0x32,0xC8,0x80,0x3E,0x0D,0x2F,0x98,0xF3, +0x8F,0x58,0x40,0x2A,0x2C,0x30,0x06,0x00,0xC0,0x48,0xF9,0x81,0x00,0x00,0x72,0xC6, +0x80,0x3E,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0xAC,0x3E,0x0C,0x00,0x0D,0x2F, +0x98,0xF3,0x8F,0x58,0x40,0x2A,0xEC,0x41,0x0E,0x00,0x48,0x2D,0xF8,0xFF,0x0A,0x60, +0x6E,0x20,0xF8,0xFF,0xD0,0x1A,0xAE,0x52,0xF8,0xFF,0x6E,0x20,0xF8,0xFF,0x10,0x4A, +0xEE,0x66,0xFC,0x1A,0x40,0x00,0xFC,0x1A,0x0D,0x00,0xFC,0x1A,0x0A,0x00,0x47,0x52, +0x7C,0xBE,0x04,0x00,0x00,0x6D,0x3A,0xFF,0x9C,0xF3,0x6B,0x2D,0x9A,0x33,0xF4,0xFF, +0x00,0x60,0x36,0x01,0x0D,0x20,0x0B,0x22,0xBC,0xD2,0x00,0x00,0x10,0x20,0x81,0x90, +0xBC,0xB0,0x00,0x00,0xDD,0x07,0x00,0x6C,0x28,0x01,0xFC,0x1A,0x23,0x00,0x6E,0x20, +0xF4,0xFF,0x28,0x30,0x06,0x00,0x4C,0x60,0xFC,0x1A,0x54,0x00,0x5A,0x60,0xFC,0x1A, +0x4D,0x00,0x54,0x60,0xFC,0x1A,0x43,0x00,0x4E,0x60,0x6E,0x20,0xF4,0xFF,0x28,0x08, +0x00,0x00,0x05,0x00,0x12,0x67,0x6E,0x20,0xF4,0xFF,0x28,0x08,0x01,0x00,0x05,0x00, +0x06,0x67,0xFC,0x1A,0x47,0x00,0x14,0x60,0x6E,0x20,0xF4,0xFF,0x28,0x08,0x03,0x00, +0x05,0x00,0x04,0x67,0x50,0x70,0x02,0x60,0x46,0x70,0xC0,0x1A,0x1A,0x60,0xFC,0x1A, +0x44,0x00,0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1, +0xFE,0x00,0x6A,0xF0,0x50,0x20,0xD0,0x4E,0xFC,0x1A,0x20,0x00,0x6E,0x20,0xF4,0xFF, +0x28,0x08,0x02,0x00,0x05,0x00,0x34,0x67,0x6E,0x20,0xF4,0xFF,0x28,0x30,0x18,0x00, +0xC0,0x48,0xEB,0x81,0xBC,0x1F,0x80,0x3E,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A, +0x6E,0x20,0xF4,0xFF,0x28,0x30,0x1A,0x00,0x6B,0x90,0x0A,0x1E,0xC0,0x48,0xEB,0x81, +0xBE,0x1F,0x80,0x3E,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0x6E,0x20,0xF4,0xFF, +0xA8,0x3E,0x12,0x00,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0x6E,0x20,0xF4,0xFF, +0xA8,0x3E,0x14,0x00,0x0D,0x2F,0x98,0xF3,0x8F,0x58,0x40,0x2A,0x6E,0x20,0xF4,0xFF, +0x68,0x4A,0x16,0x00,0x04,0x66,0x20,0x70,0x08,0x60,0x6E,0x20,0xF4,0xFF,0x28,0x30, +0x16,0x00,0xC0,0x1A,0xFC,0x1A,0x20,0x00,0x6E,0x20,0xF4,0xFF,0xA8,0x2E,0x0A,0x00, +0x0D,0x2F,0xA0,0xF3,0x8F,0x58,0x40,0x2A,0x6E,0x20,0xF4,0xFF,0xA8,0x2E,0x0E,0x00, +0x0D,0x2F,0xA0,0xF3,0x8F,0x58,0x40,0x2A,0xFC,0x1A,0x0D,0x00,0xFC,0x1A,0x0A,0x00, +0x6E,0x20,0xF4,0xFF,0x50,0x2D,0xF4,0xFF,0xAE,0x4A,0xF4,0xFF,0x00,0x66,0xC6,0xFE, +0xFC,0x1A,0x1A,0x00,0x1D,0x42,0x9C,0xF3,0x0D,0x20,0x0B,0x22,0xBC,0xD2,0x00,0x00, +0x10,0x20,0x81,0x90,0x40,0x37,0x10,0x28,0xBC,0x3E,0x80,0x00,0x0B,0x2F,0x97,0x06, +0x00,0x00,0x10,0x20,0x70,0xF3,0x8F,0x58,0xBC,0x3E,0x00,0x08,0x0B,0x2F,0x97,0x06, +0x00,0x00,0x10,0x20,0xA4,0xF3,0x8F,0x58,0x6E,0x4A,0x08,0x00,0x50,0x67,0x6B,0x53, +0x10,0x28,0xA8,0xF3,0x57,0x42,0x3C,0x2F,0xFE,0x00,0x8A,0xF0,0x67,0x42,0x78,0xF3, +0x8F,0x5C,0x00,0x3C,0x46,0x4A,0x08,0x66,0xAC,0xF3,0xB0,0xF3,0x01,0x70,0x2E,0x60, +0x8B,0x2E,0x97,0x06,0x00,0x00,0x10,0x20,0x2B,0x3F,0x10,0x28,0x06,0x3F,0xB4,0xF3, +0x8F,0x58,0x40,0x37,0x10,0x28,0x86,0x3E,0x80,0xF3,0xB0,0xF3,0xB8,0xF3,0x40,0x2D, +0xF0,0xFF,0xAE,0x4A,0xF0,0xFF,0x06,0x67,0xAE,0x2E,0xF0,0xFF,0xBC,0xF3,0x39,0xFE, +0x56,0x4E,0xFC,0xFF,0xC0,0xF3,0xC0,0x33,0x00,0x00,0x38,0x9B,0xBC,0x2E,0x00,0x00, +0x0E,0x98,0x39,0x3F,0x00,0x00,0x38,0x9B,0x57,0x52,0xC4,0xF3,0x8F,0x54,0xC8,0xF3, +0x40,0x4A,0x06,0x67,0xBC,0x3E,0x02,0x00,0x02,0x60,0x57,0x42,0xCC,0xF3,0xBC,0x2E, +0xFE,0x00,0x96,0xF0,0xD0,0xF3,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xB9,0x3E,0x00,0x00, +0x38,0x9B,0xCC,0xF3,0xBC,0x2E,0x00,0x00,0x0E,0x98,0xD0,0xF3,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0x74,0xF3,0x7C,0xC0,0x04,0x00,0x0C,0x67,0xBC,0x3E,0x02,0x00,0xCC,0xF3, +0x01,0x70,0x08,0x60,0x06,0x60,0x57,0x42,0xCC,0xF3,0x40,0x42,0x01,0xF0,0x56,0x4E, +0xF6,0xFF,0xE7,0x48,0x0C,0x03,0x79,0x28,0x00,0x00,0xA6,0xC6,0xB9,0x3E,0x00,0x00, +0x8E,0xC7,0x39,0x3F,0x00,0x00,0x0A,0x98,0xA7,0x42,0x3C,0x3F,0x01,0x00,0xD4,0xF3, +0x8F,0x50,0xBC,0x3E,0x04,0x00,0x80,0xF1,0x40,0x3D,0xF8,0xFF,0x6E,0x0C,0x02,0x00, +0xF8,0xFF,0x08,0x67,0x6E,0x0C,0x04,0x00,0xF8,0xFF,0x0A,0x66,0x7C,0x29,0x00,0x00, +0x43,0x11,0x42,0x3E,0x08,0x60,0x7C,0x29,0x00,0x00,0x73,0x11,0x42,0x3E,0x40,0x42, +0x40,0x3D,0xFC,0xFF,0x40,0x3D,0xFE,0xFF,0x6C,0x2A,0x9A,0x33,0x00,0x60,0x20,0x01, +0x2D,0x08,0x02,0x00,0x05,0x00,0x00,0x67,0x14,0x01,0xAC,0x3E,0x0E,0x20,0x2C,0x3F, +0x0C,0x20,0x2D,0x2F,0x18,0x00,0x3C,0x3F,0x01,0x00,0xD8,0xF3,0x8F,0x50,0x00,0x3E, +0x47,0x4A,0x6D,0x0C,0x02,0x00,0x06,0x00,0x1A,0x66,0x3C,0x30,0x00,0x80,0x2D,0x32, +0x16,0x00,0x7C,0xD2,0xBF,0xFF,0x68,0xE2,0x40,0x3D,0xFA,0xFF,0x2E,0x30,0xFA,0xFF, +0x6E,0x81,0xFE,0xFF,0x47,0x3B,0x08,0x00,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0x68,0x42,0x28,0x3E,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x68,0x42,0x26,0x3E,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x7C,0x31, +0x1F,0x00,0x24,0x3E,0x4C,0x20,0x47,0x32,0xC9,0xD3,0xC9,0xD1,0x6D,0x31,0x12,0x00, +0xCC,0x14,0x0C,0x20,0x07,0x32,0xFC,0xC3,0x22,0x00,0x81,0xD0,0xBC,0xD0,0x00,0x00, +0xCC,0x03,0x4C,0x22,0x07,0x34,0xFC,0xC5,0x18,0x00,0xC2,0xD3,0x40,0x23,0x2A,0x3E, +0x0C,0x20,0x07,0x32,0xFC,0xC3,0x22,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00, +0xCC,0x03,0x0C,0x20,0x2D,0x32,0x12,0x00,0xFC,0xC3,0x22,0x00,0x81,0xD0,0x00,0x2F, +0x97,0x06,0x00,0x00,0x6A,0x34,0x3C,0x3F,0x22,0x00,0x5C,0xF3,0x8F,0x5C,0x2C,0x30, +0x0C,0x20,0x4C,0x22,0x07,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x29,0x32,0xE2,0x03, +0x41,0x90,0xC0,0x48,0xFC,0x81,0x02,0x00,0x4C,0x22,0x07,0x34,0xFC,0xC5,0x22,0x00, +0xC2,0xD3,0x40,0x33,0xDE,0x03,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x22,0x00,0xC1,0xD1, +0x6D,0x21,0x0A,0x00,0xD4,0x03,0x2D,0x30,0x16,0x00,0x7C,0xC0,0xFF,0x00,0x4C,0x22, +0x07,0x34,0xFC,0xC5,0x22,0x00,0xC2,0xD3,0x69,0x81,0xD8,0x03,0x55,0x2A,0x0D,0x20, +0x00,0x66,0xDE,0xFE,0xAE,0x3E,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0xDC,0xF3,0x8F,0x54, +0x21,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x0F,0x2E,0x3E,0x08,0x00,0x2E,0x3C, +0x0A,0x00,0x2E,0x3A,0x0C,0x00,0x6E,0x2A,0x0E,0x00,0x6E,0x28,0x12,0x00,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x68,0x26,0x9A,0x33,0x4A,0x60,0x47,0x4A,0x0C,0x67,0x6B,0xBA, +0x08,0x00,0x04,0x66,0x0B,0x20,0x42,0x60,0x38,0x60,0x6B,0xBC,0x06,0x00,0x32,0x66, +0x2B,0x08,0x02,0x00,0x05,0x00,0x2A,0x66,0x8D,0x2E,0x2B,0x2F,0x0E,0x00,0xE0,0xF3, +0x8F,0x58,0x40,0x4A,0x06,0x67,0x54,0x42,0x0B,0x20,0x1E,0x60,0x8D,0x2E,0x2B,0x2F, +0x0A,0x00,0xE0,0xF3,0x8F,0x58,0x40,0x4A,0x08,0x67,0xBC,0x38,0x01,0x00,0x0B,0x20, +0x08,0x60,0x53,0x26,0x0B,0x20,0xB2,0x66,0x80,0x42,0x39,0xFE,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x3F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x2E,0x3A,0x0E,0x00, +0x2E,0x38,0x10,0x00,0x84,0x3E,0x05,0x3F,0x3C,0x3F,0x02,0x00,0x06,0x3F,0x07,0x2F, +0xC0,0xF2,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x00,0x36,0x46,0xB6,0x22,0x67,0x7C,0xB6, +0xFF,0xFF,0x1C,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x01,0x00,0x04,0x3F,0x05,0x3F, +0x03,0x3F,0x06,0x3F,0x07,0x2F,0xC4,0xF2,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x00,0x36, +0x03,0x30,0x3F,0xF0,0x56,0x4E,0xEC,0xFF,0x7C,0x3D,0x06,0x00,0xFE,0xFF,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x2E,0x2F, +0x1E,0x00,0x2E,0x2F,0x1A,0x00,0x2E,0x2F,0x16,0x00,0x2E,0x2F,0x12,0x00,0xA7,0x42, +0xA7,0x42,0xA7,0x42,0xA7,0x42,0x67,0x42,0x2E,0x2F,0x0E,0x00,0x2E,0x2F,0x0A,0x00, +0x2E,0x3F,0x08,0x00,0x67,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x2E,0x3F,0xFE,0xFF, +0xC8,0xF2,0xFC,0xDF,0x00,0x00,0x38,0x00,0x40,0x3D,0xFC,0xFF,0x2E,0x08,0x01,0x00, +0xFD,0xFF,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF0,0x56,0x4E,0xFC,0xFF, +0xE7,0x48,0x0C,0x1F,0x2E,0x3E,0x0C,0x00,0x6E,0x2A,0x12,0x00,0x6E,0x28,0x08,0x00, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x3D,0x10,0x00,0xFE,0xFF, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x3D,0x12,0x00,0xFC,0xFF, +0x46,0x42,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x38,0x02,0x00, +0x5C,0x60,0x4C,0x20,0x04,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x08,0x00,0x00, +0x0B,0x00,0x38,0x67,0x06,0x3A,0x45,0xE3,0x04,0x30,0xFC,0xC1,0x18,0x00,0x34,0x30, +0x10,0x08,0x6E,0xD0,0xFE,0xFF,0x4D,0x22,0x45,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32, +0x04,0x30,0xFC,0xC1,0x18,0x00,0x34,0x30,0x12,0x08,0x6E,0xD0,0xFC,0xFF,0x4D,0x22, +0x45,0x34,0x4A,0x52,0xCA,0xD5,0xCA,0xD3,0x80,0x32,0x46,0x52,0x7C,0xBC,0x3C,0x00, +0x10,0x6C,0x4C,0x20,0x04,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x10,0x38,0x47,0xB8, +0xA0,0x6E,0x6E,0x20,0x0E,0x00,0x86,0x30,0x3D,0xFC,0x56,0x4E,0xFC,0xFF,0xE7,0x48, +0x1C,0x07,0x79,0x26,0x00,0x00,0xA6,0xC6,0x6E,0x2A,0x08,0x00,0x47,0x42,0x4D,0x20, +0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3C,0x02,0x00,0x00,0x60, +0x00,0x01,0x4D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x08,0x00,0x00, +0x0B,0x00,0x00,0x67,0xE0,0x00,0x4D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x68,0x3D,0x10,0x00,0xFE,0xFF,0x4D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x68,0x3D,0x12,0x00,0xFC,0xFF,0x0D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0x81,0xD0, +0x80,0x2E,0x97,0x06,0x00,0x00,0x12,0x00,0x0D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00, +0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x10,0x00,0x6E,0x20,0x12,0x00,0x47,0x32, +0xC9,0xD2,0x49,0x52,0xC9,0xD3,0x30,0x3F,0x00,0x98,0x2E,0x30,0x10,0x00,0x57,0xD1, +0x6E,0x20,0x12,0x00,0x47,0x32,0xC9,0xD2,0xC9,0xD2,0x30,0x3F,0x00,0x90,0x2E,0x30, +0x0E,0x00,0x57,0xD1,0xCC,0xF2,0x8F,0x50,0x6B,0x28,0x9A,0x33,0x28,0x60,0x6C,0xBC, +0x08,0x00,0x20,0x66,0x4D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x39, +0x10,0x00,0x18,0x00,0x4D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x39, +0x12,0x00,0x1A,0x00,0x54,0x28,0x0C,0x20,0xD4,0x66,0xAB,0x3E,0x0E,0x20,0x2B,0x3F, +0x0C,0x20,0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x67,0x42,0xD0,0xF2,0x8F,0x50, +0xAB,0x3E,0x0E,0x20,0x2B,0x3F,0x0C,0x20,0x06,0x30,0xFC,0xC1,0x18,0x00,0x35,0x3F, +0x12,0x08,0x06,0x30,0xFC,0xC1,0x18,0x00,0x35,0x3F,0x10,0x08,0x67,0x42,0xD0,0xF2, +0x8F,0x50,0x47,0x52,0x4D,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x10,0x3C, +0x6E,0xBC,0x0C,0x00,0x00,0x6E,0xFC,0xFE,0x31,0xFE,0x56,0x4E,0xFE,0xFF,0xE7,0x48, +0x0C,0x3F,0x6E,0x2A,0x0A,0x00,0x6E,0x28,0x0E,0x00,0x3C,0x3A,0x10,0x27,0x05,0x3C, +0x43,0x42,0x03,0x38,0x47,0x42,0x00,0x60,0x7C,0x00,0x07,0x30,0x40,0xE3,0x40,0x3D, +0xFE,0xFF,0x4D,0x20,0x6E,0x32,0xFE,0xFF,0xC9,0xD3,0xC9,0xD1,0x50,0xBC,0x0C,0x6F, +0x4D,0x20,0x6E,0x32,0xFE,0xFF,0xC9,0xD3,0xC9,0xD1,0x10,0x3C,0x4D,0x20,0x6E,0x32, +0xFE,0xFF,0x49,0x52,0xC9,0xD3,0xC9,0xD1,0x50,0xBA,0x0E,0x6F,0x4D,0x20,0x6E,0x32, +0xFE,0xFF,0x49,0x52,0xC9,0xD3,0xC9,0xD1,0x10,0x3A,0x4D,0x20,0x6E,0x32,0xFE,0xFF, +0xC9,0xD3,0xC9,0xD1,0x50,0xB8,0x0C,0x6C,0x4D,0x20,0x6E,0x32,0xFE,0xFF,0xC9,0xD3, +0xC9,0xD1,0x10,0x38,0x4D,0x20,0x6E,0x32,0xFE,0xFF,0x49,0x52,0xC9,0xD3,0xC9,0xD1, +0x50,0xB6,0x0E,0x6C,0x4D,0x20,0x6E,0x32,0xFE,0xFF,0x49,0x52,0xC9,0xD3,0xC9,0xD1, +0x10,0x36,0x47,0x52,0x6E,0xBE,0x08,0x00,0x80,0x6D,0x83,0x3E,0x05,0x30,0x57,0x91, +0x57,0x52,0x04,0x3F,0x06,0x30,0x57,0x91,0x57,0x52,0x05,0x3F,0x06,0x3F,0x0C,0x2F, +0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x3F,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x3F,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0x2E,0x3A,0x0C,0x00,0x6E,0x2A, +0x0E,0x00,0x44,0x42,0x20,0x60,0x04,0x36,0x43,0xE3,0x06,0x30,0x4D,0x22,0x43,0x34, +0xCA,0xD5,0xCA,0xD3,0x51,0x91,0x05,0x30,0x4D,0x22,0x43,0x34,0x4A,0x52,0xCA,0xD5, +0xCA,0xD3,0x51,0x91,0x44,0x52,0x47,0xB8,0xDC,0x6D,0x3F,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x3F,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0x6E,0x2A,0x0E,0x00, +0x2E,0x3A,0x12,0x00,0x6E,0x28,0x14,0x00,0x97,0x42,0x3C,0x3F,0x00,0x01,0xD4,0xF2, +0x8F,0x54,0x44,0x42,0x2A,0x60,0x04,0x36,0x43,0xE3,0x8D,0x2E,0x2E,0x3F,0x0C,0x00, +0x06,0x3F,0x43,0x30,0x48,0x52,0xC8,0xD1,0x34,0x30,0x00,0x88,0x57,0xD1,0x07,0x3F, +0x43,0x30,0xC8,0xD1,0x34,0x30,0x00,0x88,0x57,0xD1,0xD8,0xF2,0x8F,0x5C,0x44,0x52, +0x45,0xB8,0xD2,0x6D,0x97,0x42,0x3C,0x3F,0x01,0x01,0xD4,0xF2,0x8F,0x54,0x3F,0xFC, +0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x1C,0x1F,0x6E,0x2A,0x08,0x00,0x2E,0x3E,0x0C,0x00, +0x2E,0x3C,0x0E,0x00,0x2E,0x3A,0x10,0x00,0x6E,0x28,0x12,0x00,0x2E,0x38,0x16,0x00, +0x6E,0x26,0x18,0x00,0x8B,0x2E,0x04,0x3F,0x0C,0x2F,0x05,0x3F,0x15,0x2F,0xDC,0xF2, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x8E,0x2E,0x97,0x59,0x0E,0x2F,0x97,0x5D,0x0E,0x2F, +0x97,0x51,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x3C,0x2F,0x02,0x00,0x02,0x00, +0x06,0x3F,0x07,0x3F,0x3C,0x3F,0x01,0x00,0xE0,0xF2,0xFC,0xDF,0x00,0x00,0x16,0x00, +0x40,0x3D,0xFE,0xFF,0x8B,0x2E,0x04,0x3F,0x0C,0x2F,0x05,0x3F,0x15,0x2F,0xDC,0xF2, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x2E,0x30,0xFE,0xFF,0x3D,0xFE,0x56,0x4E,0xC8,0xFF, +0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x10,0x00,0x2E,0x3C,0x16,0x00,0x6E,0x2A,0x24,0x00, +0x6E,0x28,0x28,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xC8,0xFF,0x2E,0x2F,0x12,0x00, +0x07,0x3F,0xE4,0xF2,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD0,0xFF,0x2E,0x2F, +0x18,0x00,0x06,0x3F,0xE4,0xF2,0x8F,0x5C,0x2E,0x30,0xCC,0xFF,0x6E,0xD1,0xD4,0xFF, +0x2E,0x30,0xCE,0xFF,0x6E,0xD1,0xD6,0xFF,0xAE,0x2E,0x18,0x00,0x2E,0x2F,0xD0,0xFF, +0x06,0x3F,0xE8,0xF2,0x8F,0x5C,0x2E,0x30,0x08,0x00,0x6E,0x90,0xD0,0xFF,0x40,0x3D, +0xE6,0xFF,0x2E,0x30,0x0A,0x00,0x6E,0x90,0xD2,0xFF,0x40,0x3D,0xE4,0xFF,0x6E,0x42, +0xEE,0xFF,0xAE,0x42,0xF8,0xFF,0x6E,0x42,0xEC,0xFF,0x6E,0x42,0xEA,0xFF,0xBC,0x2E, +0x00,0x00,0xA4,0x98,0xFC,0xF1,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x03,0x00,0x67,0x42, +0xEC,0xF2,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDE,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xE0,0xFF,0x0E,0x2F,0x97,0x06,0x00,0x00,0x0A,0x00,0x0E,0x2F,0x97,0x50, +0xF0,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x2E,0x30,0x08,0x00,0x6E,0x90,0xE6,0xFF, +0x40,0x3D,0xD0,0xFF,0x2E,0x30,0x0A,0x00,0x6E,0x90,0xE4,0xFF,0x40,0x3D,0xD2,0xFF, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD0,0xFF,0x2E,0x2F,0x0C,0x00,0xF4,0xF2,0x8F,0x58, +0xAE,0x2E,0x18,0x00,0x06,0x3F,0x2E,0x2F,0x12,0x00,0x07,0x3F,0x2E,0x2F,0x08,0x00, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xD0,0xFF,0xF8,0xF2,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x40,0x3D,0xE2,0xFF,0x2E,0x2F,0x08,0x00,0xFC,0xF2,0x8F,0x58,0x40,0x3D,0xE8,0xFF, +0x79,0x20,0x00,0x00,0xA6,0xC6,0x68,0x2D,0x82,0x37,0xFC,0xFF,0x7C,0x3D,0x01,0x00, +0xF2,0xFF,0x6E,0x4A,0xE8,0xFF,0x2C,0x67,0xAE,0x3E,0xE8,0xFF,0x00,0xF3,0x40,0x2D, +0xF4,0xFF,0xAE,0x4A,0xF4,0xFF,0x18,0x67,0x79,0x20,0x00,0x00,0xA6,0xC6,0x68,0x2D, +0x82,0x37,0xFC,0xFF,0x6E,0x20,0xF4,0xFF,0x68,0x3D,0x0A,0x00,0xF2,0xFF,0x04,0x60, +0x6E,0x42,0xE8,0xFF,0xAE,0x3E,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x2E,0x3F,0xF2,0xFF, +0x2E,0x2F,0xFC,0xFF,0x04,0xF3,0x8F,0x50,0x80,0x38,0x14,0x30,0x6E,0xB0,0xF2,0xFF, +0x06,0x67,0x54,0x0C,0xFF,0xFF,0x44,0x66,0x6E,0x4A,0xEA,0xFF,0x3A,0x67,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x2F,0x0C,0x00, +0x2E,0x3F,0xEA,0xFF,0x2E,0x3F,0xEC,0xFF,0x2E,0x2F,0xF8,0xFF,0x2E,0x3F,0xEE,0xFF, +0x08,0xF3,0xFC,0xDF,0x00,0x00,0x14,0x00,0x6E,0x42,0xEE,0xFF,0xAE,0x42,0xF8,0xFF, +0x6E,0x42,0xEC,0xFF,0x6E,0x42,0xEA,0xFF,0x00,0x60,0xE8,0x00,0x14,0x30,0x6E,0xB0, +0xEA,0xFF,0x00,0x67,0xDE,0x00,0x6E,0x4A,0xEA,0xFF,0x3A,0x67,0xBC,0x3E,0x01,0x00, +0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x3F, +0xEA,0xFF,0x2E,0x3F,0xEC,0xFF,0x2E,0x2F,0xF8,0xFF,0x2E,0x3F,0xEE,0xFF,0x08,0xF3, +0xFC,0xDF,0x00,0x00,0x14,0x00,0x6E,0x42,0xEE,0xFF,0xAE,0x42,0xF8,0xFF,0x6E,0x42, +0xEC,0xFF,0x6E,0x42,0xEA,0xFF,0x14,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0xFC,0xFF, +0xBC,0xD0,0x00,0x00,0x0A,0x00,0x40,0x20,0x50,0x3D,0xF0,0xFF,0x2E,0x08,0x00,0x00, +0xF1,0xFF,0x00,0x66,0x7E,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xD8,0xFF,0x14,0x3F,0x2E,0x3F,0xE8,0xFF,0x0C,0xF3,0x8F,0x50, +0x40,0x26,0x6B,0x0C,0x01,0x00,0x06,0x00,0x18,0x67,0x6B,0x0C,0x02,0x00,0x06,0x00, +0x10,0x67,0x6B,0x0C,0x04,0x00,0x06,0x00,0x08,0x67,0x6B,0x0C,0x03,0x00,0x06,0x00, +0x40,0x66,0x6E,0x3D,0xE8,0xFF,0xEE,0xFF,0x6E,0x2D,0xFC,0xFF,0xF8,0xFF,0x6E,0x3D, +0xF2,0xFF,0xEC,0xFF,0x54,0x3D,0xEA,0xFF,0xBC,0x3E,0x01,0x00,0x3C,0x2F,0x01,0x00, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x3F,0xEA,0xFF,0x2E,0x3F, +0xEC,0xFF,0x2E,0x2F,0xF8,0xFF,0x2E,0x3F,0xEE,0xFF,0x08,0xF3,0xFC,0xDF,0x00,0x00, +0x14,0x00,0x6E,0x4A,0xE2,0xFF,0x00,0x66,0xD6,0xFD,0x6E,0x4A,0xEA,0xFF,0x2A,0x67, +0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x2F, +0x0C,0x00,0x2E,0x3F,0xEA,0xFF,0x2E,0x3F,0xEC,0xFF,0x2E,0x2F,0xF8,0xFF,0x2E,0x3F, +0xEE,0xFF,0x08,0xF3,0xFC,0xDF,0x00,0x00,0x14,0x00,0x6E,0x20,0x1C,0x00,0xAE,0x30, +0xD0,0xFF,0x6E,0x20,0x20,0x00,0xAE,0x30,0xD2,0xFF,0xAE,0x3A,0xE8,0xFF,0x31,0xFE, +0x56,0x4E,0xEE,0xFF,0xE7,0x48,0x1C,0x07,0xEE,0x47,0xEE,0xFF,0x6E,0x2A,0x08,0x00, +0x4D,0x20,0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3E,0x10,0x00, +0x4D,0x20,0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x30,0x10,0x00, +0x40,0xDE,0x4D,0x20,0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3C, +0x12,0x00,0x4D,0x20,0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x30, +0x12,0x00,0x40,0xDC,0x6E,0x0C,0x01,0x00,0x0C,0x00,0x04,0x66,0x40,0x42,0x0A,0x60, +0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x30,0xD2,0x19,0x40,0x3D,0xFE,0xFF,0x2E,0x30, +0xFE,0xFF,0x00,0x60,0xEE,0x00,0xB9,0x3E,0x00,0x00,0x72,0xC6,0x39,0x30,0x00,0x00, +0x32,0xC8,0xFC,0xC1,0x2D,0x00,0x00,0x3F,0x06,0x3F,0x07,0x3F,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF6,0xFF,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x2F,0x14,0x00, +0x2E,0x2F,0x10,0x00,0x0B,0x2F,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x8B,0x2E, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x10,0xF3,0x8F,0x58,0x40,0x4A,0x08,0x66, +0x2E,0x30,0x0C,0x00,0x00,0x60,0xAE,0x00,0x00,0x60,0xA6,0x00,0x2E,0x2F,0x14,0x00, +0x2E,0x3F,0x12,0x00,0x06,0x30,0x57,0x91,0x2E,0x3F,0x10,0x00,0x07,0x30,0x57,0x91, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0x2E,0x2F,0x14,0x00,0x2E,0x3F,0x12,0x00,0x06,0x30,0x57,0x91,0x2E,0x3F,0x10,0x00, +0x07,0x30,0x57,0x91,0x0B,0x2F,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x6E,0x30, +0x0E,0x00,0xC8,0xD1,0xF9,0xD1,0x00,0x00,0xA6,0xC6,0x28,0x30,0xCC,0x14,0xFC,0xC1, +0x22,0x00,0x40,0x28,0xF9,0xD9,0x00,0x00,0xA6,0xC6,0xFC,0xD9,0x00,0x00,0x9E,0x33, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x0C,0x2F,0x97,0x06,0x00,0x00,0x1A,0x00, +0x10,0xF3,0x8F,0x58,0x40,0x4A,0x18,0x66,0x8B,0x2E,0x0C,0x2F,0x97,0x06,0x00,0x00, +0x12,0x00,0x10,0xF3,0x8F,0x58,0x40,0x4A,0x06,0x66,0x2E,0x30,0x0C,0x00,0x14,0x60, +0x0E,0x60,0x40,0x4A,0x00,0x67,0x66,0xFF,0x7C,0xB0,0x01,0x00,0x00,0x67,0x08,0xFF, +0x2E,0x30,0x0E,0x00,0x31,0xFE,0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x1C,0x07,0x6E,0x2A, +0x12,0x00,0x2E,0x3E,0x16,0x00,0xEE,0x47,0xF6,0xFF,0x6E,0x28,0x0A,0x00,0x4C,0x20, +0x2E,0x32,0x10,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3C,0x0A,0x00,0x46,0x3D, +0xFE,0xFF,0x6E,0x4A,0x1C,0x00,0x0C,0x67,0x06,0x08,0x03,0x00,0x06,0x67,0x40,0x42, +0x00,0x60,0x9A,0x00,0x8B,0x2E,0x0C,0x20,0x2E,0x32,0x10,0x00,0xFC,0xC3,0x18,0x00, +0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x10,0x00,0x10,0xF1,0x8F,0x58,0x4C,0x20, +0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x30,0x10,0x00,0x53,0xD1, +0x4C,0x20,0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x30,0x12,0x00, +0x6B,0xD1,0x02,0x00,0x6E,0x4A,0x18,0x00,0x04,0x67,0x47,0x8C,0x06,0x60,0x07,0x30, +0x40,0x46,0x40,0xCC,0x6E,0xBC,0xFE,0xFF,0x40,0x67,0x57,0x42,0x06,0x3F,0x2D,0x2F, +0x04,0x00,0x15,0x2F,0x67,0x42,0x2E,0x3F,0x10,0x00,0x2E,0x2F,0x0A,0x00,0x14,0xF3, +0xFC,0xDF,0x00,0x00,0x12,0x00,0x6E,0x4A,0x1A,0x00,0x1E,0x67,0x8B,0x2E,0x0D,0x2F, +0x10,0xF3,0x8F,0x58,0x40,0x4A,0x12,0x67,0xAB,0x3E,0x06,0x00,0x2B,0x2F,0x02,0x00, +0x13,0x3F,0x2E,0x3F,0x08,0x00,0xD0,0xF2,0x8F,0x50,0x01,0x70,0x31,0xFE,0x56,0x4E, +0xEC,0xFF,0xE7,0x48,0x1C,0x07,0xEE,0x49,0xF4,0xFF,0xEE,0x47,0xEC,0xFF,0x6E,0x2A, +0x0A,0x00,0x4D,0x20,0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x3D, +0x10,0x00,0xFE,0xFF,0x4D,0x20,0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x68,0x3D,0x12,0x00,0xFC,0xFF,0x40,0x42,0x40,0x37,0x06,0x00,0x40,0x37,0x04,0x00, +0x4D,0x20,0x2E,0x32,0x0E,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3E,0x02,0x00, +0x00,0x60,0xEA,0x00,0x6E,0xBE,0x10,0x00,0x00,0x67,0xD6,0x00,0x8C,0x2E,0x0D,0x20, +0x07,0x32,0xFC,0xC3,0x18,0x00,0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x10,0x00, +0x10,0xF1,0x8F,0x58,0x2E,0x30,0xFE,0xFF,0x54,0xD1,0x2E,0x30,0xFC,0xFF,0x6C,0xD1, +0x02,0x00,0x8C,0x2E,0x2E,0x2F,0x12,0x00,0x10,0xF3,0x8F,0x58,0x40,0x4A,0x00,0x67, +0xA0,0x00,0x2C,0x2F,0x04,0x00,0x14,0x2F,0x07,0x3F,0x2E,0x3F,0x0E,0x00,0x2E,0x2F, +0x0A,0x00,0xC4,0xF2,0xFC,0xDF,0x00,0x00,0x10,0x00,0x6E,0xB0,0x0E,0x00,0x00,0x67, +0x80,0x00,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3C,0x0A,0x00, +0x6E,0x4A,0x1C,0x00,0x06,0x67,0x6E,0x8C,0x1A,0x00,0x08,0x60,0x2E,0x30,0x1A,0x00, +0x40,0x46,0x40,0xCC,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0xBC, +0x0A,0x00,0x4C,0x67,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x46,0x31, +0x0A,0x00,0x8C,0x2E,0x0D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0x81,0xD0,0x00,0x2F, +0x97,0x06,0x00,0x00,0x10,0x00,0x10,0xF1,0x8F,0x58,0x2E,0x30,0xFE,0xFF,0x54,0xD1, +0x2E,0x30,0xFC,0xFF,0x6C,0xD1,0x02,0x00,0x6B,0x4A,0x04,0x00,0x0A,0x67,0x8B,0x2E, +0x0C,0x2F,0x18,0xF3,0x8F,0x58,0x08,0x60,0x8B,0x2E,0x0C,0x2F,0x10,0xF1,0x8F,0x58, +0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x10,0x3E,0x6E,0xBE,0x0E,0x00, +0x00,0x6E,0x12,0xFF,0x6E,0x4A,0x1E,0x00,0x20,0x67,0x8B,0x2E,0x2E,0x2F,0x16,0x00, +0x10,0xF3,0x8F,0x58,0x40,0x4A,0x12,0x67,0xAB,0x3E,0x06,0x00,0x2B,0x2F,0x02,0x00, +0x13,0x3F,0x2E,0x3F,0x08,0x00,0xD0,0xF2,0x8F,0x50,0x31,0xFE,0x56,0x4E,0xFC,0xFF, +0xE7,0x48,0x0C,0x1F,0x2E,0x3E,0x08,0x00,0x2E,0x2C,0x0A,0x00,0x2E,0x3A,0x0E,0x00, +0x6E,0x2A,0x16,0x00,0x2E,0x08,0x01,0x00,0x15,0x00,0x0C,0x66,0x2E,0x08,0x00,0x00, +0x15,0x00,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFE,0xFF,0xAE,0x3E, +0x12,0x00,0x2E,0x3F,0x10,0x00,0x05,0x3F,0x06,0x2F,0x04,0xF3,0x8F,0x50,0x00,0x38, +0x45,0xB8,0x06,0x67,0x7C,0xB8,0xFF,0xFF,0x2A,0x66,0xBC,0x3E,0x01,0x00,0x3C,0x3F, +0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x0D,0x2F,0x3C,0x2F,0x00,0x00,0xAC,0x98, +0x04,0x3F,0x05,0x3F,0x06,0x2F,0x07,0x3F,0x1C,0xF3,0xFC,0xDF,0x00,0x00,0x18,0x00, +0x00,0x60,0x92,0x00,0x46,0x28,0x4C,0x20,0x04,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x68,0x3D,0x0A,0x00,0xFC,0xFF,0x6E,0x4A,0xFE,0xFF,0x3C,0x66,0x6E,0x4A,0x1A,0x00, +0x08,0x66,0x2E,0x08,0x00,0x00,0xFD,0xFF,0x2C,0x66,0xBC,0x3E,0x01,0x00,0x3C,0x3F, +0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x0D,0x2F,0x3C,0x2F,0x00,0x00,0xAC,0x98, +0x04,0x3F,0x05,0x3F,0x06,0x2F,0x07,0x3F,0x1C,0xF3,0xFC,0xDF,0x00,0x00,0x18,0x00, +0x6E,0x00,0x01,0x00,0xFC,0xFF,0x16,0x60,0x2E,0x08,0x00,0x00,0xFD,0xFF,0x08,0x67, +0x6E,0x02,0xFE,0xFF,0xFC,0xFF,0x06,0x60,0x6E,0x00,0x01,0x00,0xFC,0xFF,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0xFC,0xFF,0x57,0x02,0x01,0x00,0x3C,0x3F, +0x01,0x00,0x0D,0x2F,0x04,0x3F,0x05,0x3F,0x06,0x2F,0x07,0x3F,0x08,0xF3,0xFC,0xDF, +0x00,0x00,0x14,0x00,0x3D,0xFC,0x56,0x4E,0xE4,0xFF,0xE7,0x48,0x1C,0x0F,0x2E,0x3E, +0x08,0x00,0x2E,0x2C,0x0A,0x00,0x2E,0x3A,0x0E,0x00,0xEE,0x47,0xE4,0xFF,0x79,0x28, +0x00,0x00,0xA6,0xC6,0x7C,0x3D,0xFF,0xFF,0xF8,0xFF,0x6E,0x20,0x1A,0x00,0x85,0x30, +0xAE,0x3E,0x12,0x00,0x2E,0x3F,0x10,0x00,0x05,0x3F,0x06,0x2F,0x04,0xF3,0x8F,0x50, +0x40,0x3D,0xFE,0xFF,0x6E,0xBA,0xFE,0xFF,0x08,0x67,0x6E,0x0C,0xFF,0xFF,0xFE,0xFF, +0x58,0x66,0xBC,0x3E,0x06,0x00,0x3C,0x3F,0x06,0x00,0x2E,0x2F,0x10,0x00,0x0B,0x2F, +0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x8B,0x2E,0x97,0x5C,0x0B,0x2F,0x97,0x58, +0x3C,0x2F,0x06,0x00,0x06,0x00,0x13,0x2F,0x20,0xF3,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0xBC,0x3E,0x01,0x00,0x3C,0x2F,0x01,0x00,0x01,0x00,0x3C,0x3F,0x01,0x00,0x2E,0x2F, +0x16,0x00,0x0B,0x2F,0x2E,0x3F,0xFE,0xFF,0x05,0x3F,0x06,0x2F,0x07,0x3F,0x1C,0xF3, +0xFC,0xDF,0x00,0x00,0x18,0x00,0x00,0x60,0xFC,0x00,0x46,0x2A,0x4D,0x20,0x2E,0x32, +0xFE,0xFF,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x08,0x00,0x00,0x0B,0x00,0x00,0x67, +0xE4,0x00,0x8C,0x2E,0x97,0x06,0x00,0x00,0x04,0x1D,0x0E,0x2F,0x97,0x59,0x05,0x3F, +0x06,0x2F,0x24,0xF3,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6E,0x4A,0xFC,0xFF,0x00,0x67, +0xC4,0x00,0x7C,0xBA,0x01,0x00,0x04,0x66,0x40,0x42,0x04,0x60,0x2C,0x30,0xD2,0x19, +0x40,0x3D,0xF2,0xFF,0x6E,0x4A,0xF2,0xFF,0x10,0x66,0x6C,0x3D,0xC0,0x1F,0xF0,0xFF, +0xEC,0x41,0xC4,0x1F,0x48,0x2D,0xEC,0xFF,0x0E,0x60,0x6C,0x3D,0xC2,0x1F,0xF0,0xFF, +0xEC,0x41,0xE8,0x1F,0x48,0x2D,0xEC,0xFF,0xAE,0x2E,0x1A,0x00,0x0E,0x2F,0x97,0x51, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF, +0x0C,0x2F,0x97,0x06,0x00,0x00,0x04,0x1D,0x2E,0x3F,0xFC,0xFF,0x2E,0x2F,0xEC,0xFF, +0x2E,0x3F,0xF0,0xFF,0x3C,0x2F,0x00,0x00,0xAC,0x98,0x2E,0x2F,0x10,0x00,0x28,0xF3, +0xFC,0xDF,0x00,0x00,0x20,0x00,0x6E,0x4A,0xF8,0xFF,0x1A,0x67,0x6E,0xBE,0xF8,0xFF, +0x12,0x66,0x6E,0x20,0x1A,0x00,0x10,0x30,0x6E,0xB0,0xFE,0xFF,0x06,0x66,0x7C,0x3D, +0xFF,0xFF,0xF8,0xFF,0x2E,0x60,0x47,0x4A,0x2A,0x66,0x6E,0x20,0x1A,0x00,0x50,0xBA, +0x22,0x66,0x8C,0x2E,0x97,0x06,0x00,0x00,0x04,0x1D,0x2E,0x3F,0xF4,0xFF,0x2E,0x3F, +0xF6,0xFF,0x05,0x3F,0x06,0x2F,0x2C,0xF3,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x7C,0x3D, +0xFF,0xFF,0xF8,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x14,0x00,0x0E,0x2F,0x97,0x5D, +0x0E,0x2F,0x97,0x06,0x00,0x00,0x12,0x00,0x0E,0x2F,0x97,0x06,0x00,0x00,0x10,0x00, +0x67,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x30,0xF3,0xFC,0xDF,0x00,0x00,0x12,0x00, +0x2E,0x30,0xF8,0xFF,0x39,0xFE,0x56,0x4E,0xF4,0xFF,0x8E,0x2E,0x97,0x51,0x0E,0x2F, +0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x2E,0x2F,0x08,0x00,0xE4,0xF3, +0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F, +0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x3C,0x3F,0x08,0x00,0x67,0x42,0x2E,0x2F,0x08,0x00, +0xE8,0xF3,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x01,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x6D,0x4A,0x98,0x37,0x08,0x67,0xAD,0x2E, +0xA0,0x1F,0xEC,0xF3,0x0C,0x60,0xAD,0x2E,0xA0,0x1F,0xF0,0xF3,0x7C,0x3B,0x01,0x00, +0x98,0x37,0x57,0x42,0x2D,0x2F,0xA0,0x1F,0xF4,0xF3,0x8F,0x58,0x6D,0x4A,0x96,0x37, +0x26,0x67,0x57,0x42,0x3C,0x2F,0x04,0x00,0x01,0x00,0x2D,0x2F,0x98,0x1F,0x14,0xF2, +0x8F,0x50,0xAD,0x2E,0x98,0x1F,0xEC,0xF3,0x57,0x42,0x67,0x42,0x3C,0x3F,0x04,0x00, +0x2D,0x2F,0x98,0x1F,0x14,0xF2,0x8F,0x50,0x01,0xF8,0x56,0x4E,0xF4,0xFF,0x8E,0x2E, +0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x2E,0x2F, +0x08,0x00,0xE4,0xF3,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F, +0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0xA7,0x42,0xA7,0x42,0x3C,0x3F, +0x03,0x00,0xF8,0xF3,0xFC,0xDF,0x00,0x00,0x10,0x00,0x01,0xF0,0x56,0x4E,0xF4,0xFF, +0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55, +0x2E,0x2F,0x08,0x00,0xE4,0xF3,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF, +0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0xA7,0x42,0xA7,0x42, +0x67,0x42,0xF8,0xF3,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F, +0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x3C,0x3F,0x08,0x00,0x67,0x42, +0x2E,0x2F,0x08,0x00,0xE8,0xF3,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x01,0xF0,0x56,0x4E, +0xF4,0xFF,0xBC,0x3E,0x04,0x00,0x2E,0x30,0x0C,0x00,0xFC,0xC1,0x18,0x00,0xAE,0xD0, +0x08,0x00,0x00,0x2F,0x97,0x06,0x00,0x00,0x10,0x00,0x0E,0x2F,0x97,0x51,0x70,0xF1, +0x8F,0x50,0x8E,0x2E,0x97,0x5D,0x0E,0x2F,0x97,0x51,0x2E,0x3F,0x0C,0x00,0x2E,0x2F, +0x08,0x00,0xFC,0xF3,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x2F,0xFC,0xFF,0x2E,0x2F, +0xF8,0xFF,0x67,0x42,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0xE8,0xF3,0xFC,0xDF, +0x00,0x00,0x10,0x00,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A, +0x08,0x00,0x02,0x60,0x8D,0x52,0x15,0x0C,0x2A,0x00,0xF8,0x66,0x8D,0x2E,0x2E,0x2F, +0x0C,0x00,0x4C,0xF3,0x8F,0x58,0x8D,0x2E,0x3C,0x2F,0xFE,0x00,0x98,0xF0,0x00,0xF4, +0x8F,0x58,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00, +0x02,0x60,0x8D,0x52,0x15,0x4A,0xFA,0x66,0x02,0x60,0x8D,0x53,0x15,0x0C,0x5C,0x00, +0xF8,0x66,0x8D,0x53,0x02,0x60,0x8D,0x53,0x15,0x0C,0x5C,0x00,0xF8,0x66,0x8D,0x2E, +0x3C,0x2F,0xFE,0x00,0x9D,0xF0,0x4C,0xF3,0x8F,0x58,0x01,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00,0x02,0x60,0x8D,0x52,0x15,0x0C,0x2A,0x00, +0xF8,0x66,0x8D,0x2E,0x2E,0x2F,0x0C,0x00,0x4C,0xF3,0x8F,0x58,0x01,0xF8,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00,0x02,0x60,0x8D,0x52,0x15,0x4A, +0xFA,0x66,0x02,0x60,0x8D,0x53,0x15,0x0C,0x5C,0x00,0xF8,0x66,0x8D,0x2E,0x3C,0x2F, +0xFE,0x00,0xA2,0xF0,0x4C,0xF3,0x8F,0x58,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x1C,0x01,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6, +0x02,0x60,0x8D,0x52,0x15,0x4A,0xFA,0x66,0x02,0x60,0x8D,0x53,0x15,0x0C,0x5C,0x00, +0xF8,0x66,0x8D,0x52,0x8B,0x2E,0x97,0x06,0x00,0x00,0xC1,0x37,0x0D,0x2F,0x4C,0xF3, +0x8F,0x58,0x8C,0x2E,0x0B,0x2F,0x97,0x06,0x00,0x00,0xC1,0x37,0x04,0xF4,0x8F,0x58, +0x01,0xFE,0x56,0x4E,0xFC,0xFF,0x79,0x4A,0x00,0x00,0xEC,0x98,0x1E,0x67,0x79,0x0C, +0xE0,0xFF,0x00,0x00,0x18,0xC9,0x10,0x6E,0x39,0x30,0x00,0x00,0x18,0xC9,0x40,0x46, +0x80,0x3E,0x57,0x06,0xE2,0xFF,0x08,0xF4,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF0, +0x56,0x4E,0xFC,0xFF,0xAE,0x2E,0x08,0x00,0x0C,0xF4,0xAC,0xF3,0x01,0xF0,0x56,0x4E, +0xF4,0xFF,0xE7,0x48,0x0C,0x0F,0x6E,0x2A,0x08,0x00,0x79,0x28,0x00,0x00,0xA6,0xC6, +0x47,0x42,0x57,0x42,0x0D,0x2F,0x50,0xF3,0x8F,0x58,0x40,0x3D,0xFE,0xFF,0xAC,0xF3, +0x00,0x3C,0x06,0x66,0x06,0x30,0x00,0x60,0x4C,0x02,0xAC,0x2E,0xE4,0x1A,0x2C,0x2F, +0xE8,0x1A,0x2E,0x3F,0xFE,0xFF,0x3C,0x3F,0x3F,0x00,0x98,0xF1,0x8F,0x50,0x40,0x2D, +0xF8,0xFF,0xAC,0xF3,0x00,0x3C,0x06,0x66,0x06,0x30,0x00,0x60,0x28,0x02,0x2C,0x20, +0xE8,0x1A,0xAE,0xB0,0xF8,0xFF,0x04,0x66,0x01,0x7E,0x06,0x60,0xAE,0x3E,0xFE,0xFF, +0x80,0xF3,0x8C,0x2E,0x97,0x06,0x00,0x00,0x9A,0x37,0x0D,0x2F,0x10,0xF4,0x8F,0x58, +0x8C,0x2E,0x97,0x06,0x00,0x00,0xA7,0x37,0x2E,0x2F,0x0C,0x00,0x10,0xF4,0x8F,0x58, +0x01,0x7A,0x57,0x42,0x2E,0x2F,0x0C,0x00,0x50,0xF3,0x8F,0x58,0x40,0x3D,0xFC,0xFF, +0x79,0x4A,0x00,0x00,0xEC,0x98,0x20,0x67,0x79,0x0C,0x02,0x00,0x00,0x00,0x18,0xC9, +0x00,0x67,0x10,0x01,0xAC,0xF3,0x00,0x3C,0xAE,0x3E,0xFE,0xFF,0x80,0xF3,0x06,0x30, +0x00,0x60,0xC2,0x01,0x00,0x60,0xF6,0x00,0xAE,0x3E,0xFC,0xFF,0x80,0xF3,0x8C,0x2E, +0x97,0x06,0x00,0x00,0x9A,0x37,0x3C,0x3F,0x02,0x00,0x2C,0x2F,0xA0,0x1F,0x14,0xF4, +0x8F,0x5C,0x8C,0x2E,0x97,0x06,0x00,0x00,0xA7,0x37,0x3C,0x3F,0x03,0x00,0x2C,0x2F, +0xA0,0x1F,0x14,0xF4,0x8F,0x5C,0x18,0xF4,0xBC,0x3E,0x05,0x00,0x3C,0x3F,0x04,0x00, +0x2C,0x2F,0xA0,0x1F,0x1C,0xF4,0x8F,0x5C,0x40,0x4A,0x00,0x67,0x7A,0x00,0xBC,0x3E, +0x01,0x00,0x20,0xF4,0x8C,0x2E,0x97,0x06,0x00,0x00,0xA7,0x37,0x3C,0x3F,0x03,0x00, +0x2C,0x2F,0xA0,0x1F,0x24,0xF4,0x8F,0x5C,0x8C,0x2E,0x97,0x06,0x00,0x00,0xA7,0x37, +0x0C,0x2F,0x97,0x06,0x00,0x00,0x9A,0x37,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x1E,0x67, +0xAE,0x2E,0x0C,0x00,0x0D,0x2F,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x0E,0x67,0xAE,0x3E, +0xFE,0xFF,0x80,0xF3,0x01,0x70,0x00,0x60,0x2C,0x01,0x02,0x60,0x45,0x42,0x8C,0x2E, +0x97,0x06,0x00,0x00,0xB4,0x37,0x0C,0x2F,0x97,0x06,0x00,0x00,0xA7,0x37,0x2C,0xF4, +0x8F,0x58,0x2C,0x4A,0xB4,0x37,0x0C,0x66,0xAE,0x3E,0xFE,0xFF,0x80,0xF3,0x01,0x70, +0x00,0x60,0x02,0x01,0x0C,0x60,0xAE,0x3E,0xFE,0xFF,0x80,0xF3,0x01,0x70,0x00,0x60, +0xF4,0x00,0xAE,0x2E,0x0C,0x00,0x30,0xF4,0x8C,0x2E,0x97,0x06,0x00,0x00,0xB4,0x37, +0x2E,0x2F,0x0C,0x00,0x34,0xF4,0x8F,0x58,0x8C,0x2E,0x97,0x06,0x00,0x00,0x9A,0x37, +0x0C,0x2F,0x97,0x06,0x00,0x00,0xA7,0x37,0x4C,0xF3,0x8F,0x58,0x45,0x4A,0x00,0x66, +0xD0,0xFE,0xAE,0x3E,0x14,0x00,0x57,0x02,0xFE,0xFF,0x2E,0x2F,0x0C,0x00,0x54,0xF3, +0x8F,0x58,0x40,0x3D,0xFC,0xFF,0xAC,0xF3,0x00,0x3C,0x06,0x66,0x06,0x30,0x00,0x60, +0xA4,0x00,0xAC,0x2E,0xE4,0x1A,0x2E,0x2F,0xF8,0xFF,0x2E,0x3F,0xFC,0xFF,0x3C,0x3F, +0x40,0x00,0x98,0xF1,0x8F,0x50,0x40,0x2D,0xF4,0xFF,0xAC,0xF3,0x00,0x3C,0x2C,0x67, +0x2E,0x20,0xF8,0xFF,0xAE,0xB0,0xF4,0xFF,0x22,0x67,0x97,0x42,0x3C,0x2F,0x01,0x00, +0x11,0x00,0x38,0xF4,0x8F,0x58,0xAE,0x3E,0xFC,0xFF,0x80,0xF3,0xAE,0x3E,0xFE,0xFF, +0x80,0xF3,0xAE,0x2E,0x0C,0x00,0x3C,0xF4,0x40,0x42,0x58,0x60,0x47,0x4A,0x34,0x67, +0x46,0x4A,0x30,0x67,0xAC,0x2E,0xE4,0x1A,0x2C,0x2F,0xE8,0x1A,0x2E,0x3F,0xFE,0xFF, +0x3C,0x3F,0x3F,0x00,0x98,0xF1,0x8F,0x50,0x40,0x2D,0xF8,0xFF,0xAC,0xF3,0x00,0x3C, +0x2C,0x20,0xE8,0x1A,0xAE,0xB0,0xF8,0xFF,0x08,0x67,0xAE,0x3E,0xFE,0xFF,0x80,0xF3, +0x47,0x42,0x02,0x60,0x06,0x60,0x46,0x4A,0x00,0x66,0x78,0xFF,0x2E,0x2F,0x10,0x00, +0x2E,0x3F,0xFC,0xFF,0x40,0xF4,0x8F,0x5C,0xAC,0xF3,0x00,0x3C,0xAE,0x3E,0xFC,0xFF, +0x80,0xF3,0x06,0x30,0x39,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x3F,0x6E,0x2A, +0x12,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6,0x44,0x42,0x01,0x76,0xFC,0x33,0x01,0x00, +0x00,0x00,0x34,0xC8,0x0B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0x81,0xD0,0x80,0x2E, +0x97,0x06,0x00,0x00,0xEC,0x1A,0x44,0xF4,0xBC,0x3E,0x16,0x00,0x2E,0x2F,0x0E,0x00, +0x48,0xF4,0x8F,0x58,0x01,0x7A,0x05,0x3E,0x00,0x60,0xBC,0x02,0x46,0x42,0x79,0x4A, +0x00,0x00,0xEC,0x98,0x00,0x67,0xEE,0x00,0x79,0x0C,0x12,0x00,0x00,0x00,0x18,0xC9, +0x0C,0x67,0x79,0x0C,0x02,0x00,0x00,0x00,0x18,0xC9,0x00,0x66,0xD4,0x00,0x2E,0x30, +0x08,0x00,0x36,0x60,0xAB,0x52,0x7C,0x1C,0x40,0x60,0x6E,0x28,0x0E,0x00,0x04,0x60, +0x1C,0x10,0x80,0x48,0x14,0x0C,0x2A,0x00,0xF6,0x66,0x8C,0x53,0x14,0x42,0xAE,0x2E, +0x0E,0x00,0x4C,0xF4,0xAC,0xF3,0x00,0x3A,0xAE,0x2E,0x0E,0x00,0x3C,0x2F,0xFE,0x00, +0xA7,0xF0,0x00,0xF4,0x8F,0x58,0x12,0x60,0x10,0x60,0x40,0x4A,0xC6,0x67,0x7C,0xB0, +0x01,0x00,0xC6,0x67,0x7C,0xB0,0x02,0x00,0xEE,0x67,0xAE,0x4A,0x0A,0x00,0x3C,0x67, +0x6E,0x20,0x1A,0x00,0x50,0x53,0xAE,0x2E,0x1A,0x00,0x3C,0x2F,0xFE,0x00,0xAC,0xF0, +0x0B,0x2F,0x97,0x06,0x00,0x00,0x8A,0x37,0x50,0xF4,0x8F,0x50,0x8B,0x2E,0x97,0x06, +0x00,0x00,0x8A,0x37,0x2B,0x3F,0x90,0x37,0x2E,0x2F,0x0A,0x00,0x14,0xF4,0x8F,0x5C, +0xAB,0x3E,0x90,0x37,0x2E,0x2F,0x0A,0x00,0x54,0xF4,0x8F,0x58,0x01,0x7C,0x79,0xB6, +0x00,0x00,0x34,0xC8,0x06,0x6F,0xC3,0x33,0x00,0x00,0x34,0xC8,0x01,0x76,0x44,0x53, +0x44,0x4A,0x04,0x6C,0x47,0x42,0x26,0x60,0xAE,0x2E,0x0E,0x00,0x58,0xF4,0x6E,0x0C, +0x02,0x00,0x08,0x00,0x04,0x66,0x8D,0x2E,0x58,0xF4,0x0B,0x20,0x04,0x32,0xFC,0xC3, +0x2C,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0xEC,0x1A,0x44,0xF4,0x04,0x60, +0xAC,0xF3,0x00,0x3A,0x46,0x4A,0x00,0x66,0xB8,0x01,0x45,0x4A,0x00,0x67,0xB2,0x01, +0x4B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0xC1,0xD1,0x28,0x08,0x04,0x00,0x01,0x1B, +0x00,0x67,0x96,0x00,0x4B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0xC1,0xD1,0x28,0x0C, +0x2E,0x00,0x0A,0x1B,0x00,0x67,0x7E,0x00,0x7C,0xB8,0x08,0x00,0x76,0x6C,0x0B,0x20, +0x04,0x32,0xFC,0xC3,0x2C,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0x0A,0x1B, +0x2E,0x2F,0x0E,0x00,0x5C,0xF4,0x8F,0x58,0x6E,0x0C,0x02,0x00,0x08,0x00,0x2C,0x66, +0x0B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00, +0x0A,0x1B,0x0D,0x2F,0x34,0xF4,0x8F,0x58,0x8D,0x2E,0x60,0xF4,0xAC,0xF3,0x00,0x3A, +0x8D,0x2E,0x3C,0x2F,0xFE,0x00,0xAF,0xF0,0x00,0xF4,0x8F,0x58,0x44,0x52,0x43,0x52, +0x0B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00, +0xEC,0x1A,0x44,0xF4,0x45,0x4A,0x0C,0x67,0xBC,0x3E,0x16,0x00,0x2E,0x2F,0x0E,0x00, +0x48,0xF4,0x8F,0x58,0x00,0x60,0x0A,0x01,0x6E,0x4A,0x08,0x00,0x1A,0x67,0x0B,0x20, +0x04,0x32,0xFC,0xC3,0x2C,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0x0A,0x1B, +0x2E,0x2F,0x0E,0x00,0x34,0xF4,0x8F,0x58,0x2E,0x30,0x08,0x00,0x00,0x60,0x82,0x00, +0xAB,0x52,0x78,0x1C,0x4B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0xC1,0xD1,0x28,0x20, +0x06,0x1B,0xAB,0xD1,0x80,0x1C,0x00,0x60,0x7A,0x00,0xAE,0x2E,0x0E,0x00,0x3C,0xF4, +0x00,0x3A,0x6E,0x60,0x0B,0x20,0x04,0x32,0xFC,0xC3,0x2C,0x00,0x81,0xD0,0x80,0x2E, +0x97,0x06,0x00,0x00,0x0A,0x1B,0x0D,0x2F,0x34,0xF4,0x8F,0x58,0x4B,0x20,0x04,0x32, +0xFC,0xC3,0x2C,0x00,0xC1,0xD1,0x28,0x10,0x01,0x1B,0x80,0x48,0x80,0x3E,0x4B,0x20, +0x04,0x32,0xFC,0xC3,0x2C,0x00,0xC1,0xD1,0x28,0x3F,0x04,0x1B,0x4B,0x20,0x04,0x32, +0xFC,0xC3,0x2C,0x00,0xC1,0xD1,0x28,0x3F,0x02,0x1B,0x0D,0x2F,0x2E,0x2F,0x0E,0x00, +0x64,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x00,0x3A,0x8D,0x2E,0x30,0xF4,0x12,0x60, +0x40,0x4A,0x00,0x67,0x7C,0xFF,0x7C,0xB0,0x01,0x00,0x8E,0x67,0x7C,0xB0,0x02,0x00, +0x92,0x67,0x6E,0x4A,0x08,0x00,0x06,0x67,0xAE,0x2E,0x0E,0x00,0x30,0xF4,0xAE,0x4A, +0x0A,0x00,0x3C,0x67,0x6E,0x20,0x16,0x00,0x50,0x53,0xAE,0x2E,0x16,0x00,0x3C,0x2F, +0xFE,0x00,0xB4,0xF0,0x0B,0x2F,0x97,0x06,0x00,0x00,0x86,0x37,0x50,0xF4,0x8F,0x50, +0x8B,0x2E,0x97,0x06,0x00,0x00,0x86,0x37,0x2B,0x3F,0x8E,0x37,0x2E,0x2F,0x0A,0x00, +0x14,0xF4,0x8F,0x5C,0xAB,0x3E,0x8E,0x37,0x2E,0x2F,0x0A,0x00,0x54,0xF4,0x8F,0x58, +0x47,0x4A,0x02,0x67,0x68,0xF4,0x47,0x4A,0x06,0x67,0x45,0x4A,0x00,0x66,0x3E,0xFD, +0x05,0x30,0x3F,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00, +0x6E,0x28,0x0C,0x00,0x04,0x60,0x1D,0x10,0x80,0x48,0x15,0x0C,0x5C,0x00,0x04,0x67, +0x15,0x4A,0xF2,0x66,0x1D,0x10,0x80,0x48,0x04,0x60,0x1C,0x10,0x80,0x48,0xCD,0xB9, +0xF8,0x66,0x04,0x60,0x1C,0x10,0x80,0x48,0x14,0x0C,0x5C,0x00,0x04,0x67,0x14,0x4A, +0xF2,0x66,0x14,0x42,0x0D,0x20,0x01,0xFC,0x56,0x4E,0xF2,0xFF,0xE7,0x48,0x1C,0x01, +0x79,0x2D,0x00,0x00,0xA6,0xC6,0xF2,0xFF,0x6E,0x20,0x08,0x00,0x10,0x10,0x80,0x48, +0x6E,0x22,0x10,0x00,0x11,0x12,0x81,0x48,0x41,0xB0,0x06,0x67,0x01,0x70,0x00,0x60, +0x48,0x01,0x6E,0x42,0xFC,0xFF,0x6E,0x26,0x0C,0x00,0x32,0x60,0x6B,0x0C,0xFF,0xFF, +0x20,0x00,0x28,0x67,0x2B,0x30,0x20,0x00,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0xF2,0xFF, +0x40,0x20,0x28,0x08,0x00,0x00,0x29,0x3E,0x12,0x67,0x2B,0x0C,0x10,0x00,0x09,0x00, +0x0A,0x66,0x7C,0x3D,0x01,0x00,0xFC,0xFF,0x4B,0x2D,0xF8,0xFF,0x53,0x26,0x0B,0x20, +0xCA,0x66,0x6E,0x4A,0xFC,0xFF,0x00,0x67,0xFE,0x00,0x6E,0x2A,0xF2,0xFF,0xFC,0xDB, +0x00,0x00,0xE4,0x19,0x6E,0x28,0xF2,0xFF,0xFC,0xD9,0x00,0x00,0x64,0x1A,0x6E,0x42, +0xFE,0xFF,0xAE,0x2E,0xF2,0xFF,0x97,0x06,0x00,0x00,0xE4,0x19,0x2E,0x2F,0x08,0x00, +0x4C,0xF3,0x8F,0x58,0xAE,0x2E,0xF2,0xFF,0x97,0x06,0x00,0x00,0xE4,0x19,0x0C,0xF1, +0x40,0x3D,0xF6,0xFF,0x6E,0x30,0xF6,0xFF,0xEE,0xD1,0xF2,0xFF,0x28,0x42,0xE1,0x19, +0xAE,0x2E,0xF2,0xFF,0x97,0x06,0x00,0x00,0xE4,0x19,0x2E,0x2F,0xF8,0xFF,0x97,0x06, +0x00,0x00,0x12,0x00,0x00,0xF4,0x8F,0x58,0xAE,0x2E,0xF2,0xFF,0x97,0x06,0x00,0x00, +0xE4,0x19,0x3C,0x2F,0xFE,0x00,0xB7,0xF0,0x00,0xF4,0x8F,0x58,0xAE,0x2E,0xF2,0xFF, +0x97,0x06,0x00,0x00,0x64,0x1A,0x2E,0x2F,0x10,0x00,0x4C,0xF3,0x8F,0x58,0xAE,0x2E, +0xF2,0xFF,0x97,0x06,0x00,0x00,0xE4,0x19,0x0D,0x2F,0x6C,0xF4,0x8F,0x58,0x40,0x2A, +0xAE,0x2E,0xF2,0xFF,0x97,0x06,0x00,0x00,0x64,0x1A,0x0C,0x2F,0x6C,0xF4,0x8F,0x58, +0x40,0x28,0xBC,0x2E,0xFE,0x00,0xBC,0xF0,0x0D,0x2F,0x28,0xF4,0x8F,0x58,0x40,0x4A, +0x28,0x66,0xBC,0x2E,0xFE,0x00,0xC0,0xF0,0x0C,0x2F,0x28,0xF4,0x8F,0x58,0x40,0x4A, +0x18,0x66,0x8D,0x2E,0x0C,0x2F,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x04,0x67,0x01,0x70, +0x02,0x60,0x40,0x42,0x40,0x3D,0xFE,0xFF,0x02,0x60,0x04,0x60,0x00,0x60,0x34,0xFF, +0x6E,0x4A,0xFE,0xFF,0x10,0x67,0x97,0x42,0x3C,0x2F,0x01,0x00,0x16,0x00,0x38,0xF4, +0x8F,0x58,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xFE,0x56,0x4E,0xE8,0xFF,0xE7,0x48, +0x0C,0x03,0x79,0x28,0x00,0x00,0xA6,0xC6,0xAE,0x42,0xFC,0xFF,0x6C,0x42,0x98,0x37, +0x79,0x42,0x00,0x00,0x74,0xC6,0x2E,0x30,0x08,0x00,0x00,0x60,0x7A,0x00,0xAC,0x42, +0x78,0x1C,0xAC,0x42,0x7C,0x1C,0xAC,0x42,0x80,0x1C,0x00,0x60,0x7A,0x00,0x6C,0x39, +0xB8,0x1F,0x96,0x37,0x1E,0x67,0x6C,0x2D,0x9C,0x1F,0xFC,0xFF,0x7C,0x39,0x03,0x00, +0x8E,0x37,0x7C,0x39,0x02,0x00,0x90,0x37,0x7C,0x39,0x04,0x00,0x92,0x37,0x7C,0x39, +0x05,0x00,0x94,0x37,0x50,0x60,0x70,0xF4,0x40,0x29,0xE8,0x1A,0xAC,0x04,0x00,0x00, +0x00,0x02,0xE8,0x1A,0xAC,0x2E,0xE8,0x1A,0x64,0xF3,0x40,0x29,0xE4,0x1A,0x6C,0x39, +0xB6,0x1F,0x96,0x37,0x1E,0x67,0x6C,0x2D,0x98,0x1F,0xFC,0xFF,0x7C,0x39,0x03,0x00, +0x8E,0x37,0x7C,0x39,0x02,0x00,0x90,0x37,0x7C,0x39,0x04,0x00,0x92,0x37,0x7C,0x39, +0x05,0x00,0x94,0x37,0x10,0x60,0x40,0x4A,0x84,0x67,0x7C,0xB0,0x01,0x00,0x8E,0x67, +0x7C,0xB0,0x02,0x00,0xB0,0x67,0xAE,0x4A,0xFC,0xFF,0x00,0x67,0x8A,0x00,0xAE,0x2E, +0x16,0x00,0x3C,0x2F,0xFE,0x00,0xC4,0xF0,0x0C,0x2F,0x97,0x06,0x00,0x00,0x86,0x37, +0x50,0xF4,0x8F,0x50,0x8C,0x2E,0x97,0x06,0x00,0x00,0x86,0x37,0x2C,0x3F,0x8E,0x37, +0x2E,0x2F,0xFC,0xFF,0x14,0xF4,0x8F,0x5C,0xAE,0x2E,0x1A,0x00,0x3C,0x2F,0xFE,0x00, +0xC7,0xF0,0x0C,0x2F,0x97,0x06,0x00,0x00,0x8A,0x37,0x50,0xF4,0x8F,0x50,0x8C,0x2E, +0x97,0x06,0x00,0x00,0x8A,0x37,0x2C,0x3F,0x90,0x37,0x2E,0x2F,0xFC,0xFF,0x14,0xF4, +0x8F,0x5C,0x7C,0x39,0x01,0x00,0x98,0x37,0xAE,0x2E,0xFC,0xFF,0xF0,0xF3,0x57,0x42, +0x2E,0x2F,0xFC,0xFF,0xF4,0xF3,0x8F,0x58,0x2C,0x2F,0x92,0x37,0x2E,0x2F,0xFC,0xFF, +0x1C,0xF4,0x8F,0x50,0x40,0x3D,0xF2,0xFF,0x6E,0x4A,0xF2,0xFF,0x06,0x67,0xBC,0x3E, +0x01,0x00,0x20,0xF4,0x06,0x60,0x7C,0x3D,0x01,0x00,0xF2,0xFF,0x6E,0x4A,0xF2,0xFF, +0x00,0x67,0x38,0x03,0x6E,0x2A,0x0E,0x00,0x7C,0x3D,0x01,0x00,0xF0,0xFF,0x00,0x60, +0x1E,0x03,0x55,0x2D,0xF4,0xFF,0x6D,0x0C,0xFF,0xFF,0x20,0x00,0x00,0x67,0x0C,0x03, +0x4C,0x20,0x2D,0x32,0x20,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x08,0x00,0x00, +0x29,0x3E,0x00,0x67,0xF6,0x02,0x8C,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19,0x2E,0x2F, +0x0A,0x00,0x4C,0xF3,0x8F,0x58,0x6E,0x0C,0x02,0x00,0x08,0x00,0x10,0x66,0x8C,0x2E, +0x97,0x06,0x00,0x00,0x64,0x1A,0x2E,0x2F,0x12,0x00,0x4C,0xF3,0x8F,0x58,0x2D,0x0C, +0x10,0x00,0x09,0x00,0x00,0x66,0xE0,0x01,0x8D,0x2E,0x97,0x06,0x00,0x00,0x12,0x00, +0x0C,0x2F,0x97,0x06,0x00,0x00,0xE4,0x19,0x5C,0xF4,0x8F,0x58,0x2E,0x30,0x08,0x00, +0x00,0x60,0x6E,0x01,0x8D,0x2E,0x97,0x06,0x00,0x00,0x12,0x00,0x0C,0x2F,0x97,0x06, +0x00,0x00,0x64,0x1A,0x34,0xF4,0x8F,0x58,0xBC,0x2E,0x00,0x00,0x70,0x9B,0x44,0xF4, +0xBC,0x3E,0x16,0x00,0x0C,0x2F,0x97,0x06,0x00,0x00,0x64,0x1A,0x48,0xF4,0x8F,0x58, +0x40,0x4A,0x12,0x67,0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98,0xFC,0x33,0x05,0x00, +0x00,0x00,0x18,0xC9,0x0A,0x60,0x8C,0x2E,0x97,0x06,0x00,0x00,0x64,0x1A,0x60,0xF4, +0x00,0x60,0xFA,0x00,0x79,0x0C,0x05,0x00,0x00,0x00,0x18,0xC9,0x00,0x66,0xEA,0x00, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x9A,0x37,0x0D,0x2F,0x97,0x06,0x00,0x00,0x12,0x00, +0x04,0xF4,0x8F,0x58,0x2C,0x42,0xA7,0x37,0x8C,0x2E,0x97,0x06,0x00,0x00,0x9A,0x37, +0x3C,0x3F,0x02,0x00,0x2C,0x2F,0xA0,0x1F,0x14,0xF4,0x8F,0x5C,0x8C,0x2E,0x97,0x06, +0x00,0x00,0xA7,0x37,0x3C,0x3F,0x03,0x00,0x2C,0x2F,0xA0,0x1F,0x14,0xF4,0x8F,0x5C, +0x18,0xF4,0xBC,0x3E,0x05,0x00,0x3C,0x3F,0x04,0x00,0x2C,0x2F,0xA0,0x1F,0x1C,0xF4, +0x8F,0x5C,0x40,0x3D,0xF0,0xFF,0x6E,0x4A,0xF0,0xFF,0x00,0x67,0x8A,0x00,0xBC,0x3E, +0x01,0x00,0x20,0xF4,0x8C,0x2E,0x97,0x06,0x00,0x00,0xA7,0x37,0x3C,0x3F,0x03,0x00, +0x2C,0x2F,0xA0,0x1F,0x24,0xF4,0x8F,0x5C,0x8C,0x2E,0x97,0x06,0x00,0x00,0xB4,0x37, +0x0C,0x2F,0x97,0x06,0x00,0x00,0xA7,0x37,0x2C,0xF4,0x8F,0x58,0x8C,0x2E,0x97,0x06, +0x00,0x00,0x64,0x1A,0x30,0xF4,0x2C,0x4A,0xB4,0x37,0x46,0x67,0x8C,0x2E,0x97,0x06, +0x00,0x00,0xB4,0x37,0x0C,0x2F,0x97,0x06,0x00,0x00,0x64,0x1A,0x34,0xF4,0x8F,0x58, +0xBC,0x3E,0x16,0x00,0x0C,0x2F,0x97,0x06,0x00,0x00,0x64,0x1A,0x48,0xF4,0x8F,0x58, +0x40,0x4A,0x12,0x67,0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98,0xFC,0x33,0x05,0x00, +0x00,0x00,0x18,0xC9,0x0A,0x60,0x8C,0x2E,0x97,0x06,0x00,0x00,0x64,0x1A,0x60,0xF4, +0x04,0x60,0x6E,0x42,0xF0,0xFF,0x04,0x60,0x6E,0x42,0xF0,0xFF,0x79,0x4A,0x00,0x00, +0xEC,0x98,0x08,0x67,0x6E,0x4A,0xF0,0xFF,0x00,0x66,0xFA,0xFE,0x8C,0x2E,0x97,0x06, +0x00,0x00,0x64,0x1A,0x3C,0x2F,0xFE,0x00,0xCA,0xF0,0x00,0xF4,0x8F,0x58,0x08,0x60, +0x7C,0xB0,0x02,0x00,0x00,0x67,0x8E,0xFE,0x6E,0x4A,0xF0,0xFF,0x44,0x67,0xAE,0x2E, +0x1A,0x00,0x2E,0x2F,0x16,0x00,0x0C,0x2F,0x97,0x06,0x00,0x00,0x64,0x1A,0x0C,0x2F, +0x97,0x06,0x00,0x00,0xE4,0x19,0x2E,0x2F,0xFC,0xFF,0x2E,0x3F,0x08,0x00,0x74,0xF4, +0xFC,0xDF,0x00,0x00,0x12,0x00,0x40,0x3D,0xF0,0xFF,0x39,0x30,0x00,0x00,0x34,0xC8, +0x79,0xB0,0x00,0x00,0x74,0xC6,0x0A,0x6F,0xF9,0x33,0x00,0x00,0x34,0xC8,0x00,0x00, +0x74,0xC6,0x00,0x60,0xE6,0x00,0x6E,0x4A,0x08,0x00,0x14,0x67,0x8D,0x2E,0x97,0x06, +0x00,0x00,0x12,0x00,0x0C,0x2F,0x97,0x06,0x00,0x00,0xE4,0x19,0x34,0xF4,0x8F,0x58, +0x2E,0x30,0x08,0x00,0x66,0x60,0xAC,0x52,0x78,0x1C,0x2D,0x20,0x0E,0x00,0xAC,0xD1, +0x80,0x1C,0x68,0x60,0x8C,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19,0x3C,0xF4,0x40,0x3D, +0xF0,0xFF,0x58,0x60,0x8D,0x2E,0x97,0x06,0x00,0x00,0x12,0x00,0x0C,0x2F,0x97,0x06, +0x00,0x00,0x64,0x1A,0x34,0xF4,0x8F,0x58,0x2D,0x10,0x09,0x00,0x80,0x48,0x80,0x3E, +0x2D,0x2F,0x0A,0x00,0x0C,0x2F,0x97,0x06,0x00,0x00,0x64,0x1A,0x0C,0x2F,0x97,0x06, +0x00,0x00,0xE4,0x19,0x64,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x40,0x3D,0xF0,0xFF, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x64,0x1A,0x30,0xF4,0x10,0x60,0x40,0x4A,0x96,0x67, +0x7C,0xB0,0x01,0x00,0x9E,0x67,0x7C,0xB0,0x02,0x00,0xA8,0x67,0x6E,0x4A,0x08,0x00, +0x06,0x67,0xAE,0x2E,0x0A,0x00,0x30,0xF4,0xAE,0x4A,0xFC,0xFF,0x3C,0x67,0x6E,0x20, +0x16,0x00,0x50,0x53,0xAE,0x2E,0x16,0x00,0x3C,0x2F,0xFE,0x00,0xCF,0xF0,0x0C,0x2F, +0x97,0x06,0x00,0x00,0x86,0x37,0x50,0xF4,0x8F,0x50,0x8C,0x2E,0x97,0x06,0x00,0x00, +0x86,0x37,0x2C,0x3F,0x8E,0x37,0x2E,0x2F,0xFC,0xFF,0x14,0xF4,0x8F,0x5C,0xAC,0x3E, +0x8E,0x37,0x2E,0x2F,0xFC,0xFF,0x54,0xF4,0x8F,0x58,0x6E,0x2A,0xF4,0xFF,0x0D,0x20, +0x08,0x67,0x6E,0x4A,0xF0,0xFF,0x00,0x66,0xDA,0xFC,0x2E,0x30,0x08,0x00,0x28,0x60, +0x2C,0x20,0x78,0x1C,0x6E,0x22,0x16,0x00,0x80,0x32,0x2C,0x20,0x7C,0x1C,0x6E,0x22, +0x1A,0x00,0x80,0x32,0x6E,0x20,0x1E,0x00,0xAC,0x20,0x80,0x1C,0x1A,0x60,0x18,0x60, +0xAC,0x2E,0xE4,0x1A,0x78,0xF4,0x10,0x60,0x40,0x4A,0xD4,0x67,0x7C,0xB0,0x01,0x00, +0xEC,0x67,0x7C,0xB0,0x02,0x00,0xE8,0x67,0x6C,0x4A,0x98,0x37,0x06,0x67,0xAC,0x2E, +0xA0,0x1F,0x7C,0xF4,0x01,0x70,0x21,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03, +0x3C,0x2E,0x00,0x00,0xBA,0x96,0x47,0x20,0xBC,0x20,0x01,0x00,0x20,0x01,0x47,0x20, +0x88,0x58,0x79,0x22,0x00,0x00,0x94,0xC7,0xA9,0x30,0x1C,0x00,0x47,0x20,0xFC,0xD1, +0x00,0x00,0x14,0x00,0xB9,0x30,0x00,0x00,0x14,0xC9,0x47,0x20,0xFC,0xD1,0x00,0x00, +0x16,0x00,0xBC,0x20,0x00,0x00,0x58,0x9C,0x47,0x20,0xFC,0xD1,0x00,0x00,0x1A,0x00, +0xB9,0x30,0x00,0x00,0x50,0xC8,0x47,0x20,0xFC,0xD1,0x00,0x00,0x1C,0x00,0xB9,0x30, +0x00,0x00,0x28,0xC8,0x79,0x20,0x00,0x00,0x94,0xC7,0xE8,0x33,0x1C,0x00,0x00,0x00, +0x90,0xC7,0x01,0x70,0x21,0xF0,0x56,0x4E,0xFC,0xFF,0xEE,0x33,0x08,0x00,0x00,0x00, +0x50,0xC8,0xEE,0x33,0x0A,0x00,0x00,0x00,0x28,0xC8,0x01,0x70,0x01,0xF0,0x56,0x4E, +0xFC,0xFF,0xC4,0xF1,0x79,0x20,0x00,0x00,0x94,0xC7,0x68,0x4A,0x36,0x00,0x22,0x67, +0xBC,0x2E,0x00,0x00,0xF8,0xB7,0x79,0x20,0x00,0x00,0x94,0xC7,0x28,0x3F,0x36,0x00, +0x79,0x20,0x00,0x00,0x94,0xC7,0x28,0x3F,0x1C,0x00,0x3C,0x3F,0x01,0x00,0xB4,0xF1, +0x8F,0x5C,0xC8,0xF1,0x01,0x70,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x0C,0x00, +0x2E,0x2F,0x08,0x00,0x3C,0x3F,0x02,0x00,0xB4,0xF1,0x8F,0x5C,0x40,0x3D,0xFE,0xFF, +0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x2E,0x2F,0x0C,0x00, +0x6E,0x20,0x08,0x00,0x90,0x4E,0x8F,0x58,0x01,0xF0,0x56,0x4E,0xE6,0xFF,0x80,0x42, +0x2E,0x30,0x0A,0x00,0x10,0x72,0xA0,0xE3,0x40,0x2D,0xFC,0xFF,0x2E,0x30,0x0C,0x00, +0x48,0xE1,0x6E,0xD0,0x0E,0x00,0x40,0x48,0x40,0x42,0x40,0x48,0xAE,0xD1,0xFC,0xFF, +0x80,0x42,0x2E,0x30,0x2A,0x00,0x10,0x72,0xA0,0xE3,0x40,0x2D,0xF8,0xFF,0x80,0x42, +0x2E,0x30,0x28,0x00,0xAE,0xD1,0xF8,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEC,0xFF, +0x2E,0x2F,0x24,0x00,0x2E,0x2F,0xFC,0xFF,0x2E,0x2F,0xF8,0xFF,0x0E,0x2F,0x97,0x06, +0x00,0x00,0x1A,0x00,0x0E,0x2F,0x97,0x06,0x00,0x00,0x10,0x00,0x2E,0x3F,0x08,0x00, +0xE0,0xF1,0xFC,0xDF,0x00,0x00,0x16,0x00,0x40,0x3D,0xEA,0xFF,0xB8,0xF2,0x6E,0x20, +0x2C,0x00,0xAE,0x30,0xEC,0xFF,0x6E,0x20,0x30,0x00,0xAE,0x30,0xEE,0xFF,0x6E,0x20, +0x34,0x00,0xAE,0x30,0xF0,0xFF,0x6E,0x20,0x38,0x00,0xAE,0x30,0xF2,0xFF,0x6E,0x20, +0x3C,0x00,0xAE,0x30,0xF4,0xFF,0x6E,0x20,0x40,0x00,0xAE,0x30,0xF6,0xFF,0x2E,0x30, +0xEA,0xFF,0x01,0xF0,0x56,0x4E,0xF2,0xFF,0x8E,0x2E,0x97,0x51,0x2E,0x2F,0x0A,0x00, +0x2E,0x3F,0x08,0x00,0xD0,0xF1,0x8F,0x5C,0x40,0x3D,0xF6,0xFF,0xB8,0xF2,0x6E,0x20, +0x0E,0x00,0xAE,0x30,0xF8,0xFF,0x6E,0x20,0x12,0x00,0xAE,0x30,0xFA,0xFF,0x6E,0x20, +0x16,0x00,0xAE,0x30,0xFC,0xFF,0x6E,0x20,0x1A,0x00,0xAE,0x30,0xFE,0xFF,0x2E,0x30, +0xF6,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x2E,0x2F,0x08,0x00,0xE4,0xF1,0x8F,0x58, +0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF, +0x57,0x42,0x20,0xF4,0xAE,0x3E,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x18,0xF2,0x8F,0x58, +0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF, +0x8E,0x2E,0x97,0x06,0x00,0x00,0x12,0x00,0x0E,0x2F,0x97,0x06,0x00,0x00,0x0A,0x00, +0x2E,0x3F,0x08,0x00,0x1C,0xF2,0x8F,0x5C,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30, +0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x0A,0x00,0x2E,0x3F,0x08,0x00, +0x20,0xF2,0x8F,0x54,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0, +0x56,0x4E,0xFA,0xFF,0xAE,0x3E,0x08,0x00,0x24,0xF2,0x40,0x3D,0xFE,0xFF,0xB8,0xF2, +0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xF2,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xF6,0xFF,0x2E,0x2F,0x08,0x00,0x28,0xF2,0x8F,0x58,0x40,0x3D,0xFE,0xFF,0x6E,0x20, +0x0C,0x00,0xAE,0x30,0xF6,0xFF,0x6E,0x20,0x10,0x00,0xAE,0x30,0xF8,0xFF,0x6E,0x20, +0x14,0x00,0xAE,0x30,0xFA,0xFF,0x6E,0x20,0x18,0x00,0xAE,0x30,0xFC,0xFF,0xB8,0xF2, +0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x03,0x2E,0x3E, +0x08,0x00,0x7C,0xBE,0xFF,0x00,0x12,0x6F,0x7C,0xBE,0x00,0x01,0x02,0x66,0x48,0xF2, +0x7C,0xBE,0x01,0x01,0x02,0x66,0x28,0xF0,0x32,0x60,0x7C,0xBE,0xFF,0x00,0x20,0x67, +0x8E,0x2E,0x97,0x59,0x07,0x3F,0x57,0x56,0x3C,0x3F,0x0E,0x00,0x39,0x2F,0x00,0x00, +0x06,0x98,0x4C,0xF2,0x8F,0x50,0x6E,0x20,0xFC,0xFF,0x50,0x2D,0xFC,0xFF,0x06,0x60, +0x6E,0x2D,0x0A,0x00,0xFC,0xFF,0xAE,0x2E,0xFC,0xFF,0x50,0xF2,0xB8,0xF2,0x21,0xF0, +0x56,0x4E,0xFC,0xFF,0x6E,0x20,0x08,0x00,0xB9,0x30,0x00,0x00,0x32,0xC8,0x6E,0x20, +0x0C,0x00,0xB9,0x30,0x00,0x00,0x72,0xC6,0x6E,0x20,0x10,0x00,0xB9,0x30,0x00,0x00, +0xD6,0x9A,0x6E,0x20,0x14,0x00,0xB9,0x30,0x00,0x00,0x02,0x97,0x39,0x30,0x00,0x00, +0x66,0xC7,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xAE,0x2E,0x14,0x00,0x2E,0x2F,0x10,0x00, +0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x34,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0xB8,0xF2,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x14,0x00,0x2E,0x2F,0x10,0x00, +0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x54,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFC,0xFF, +0x8E,0x2E,0x97,0x06,0x00,0x00,0x10,0x00,0x0E,0x2F,0x97,0x50,0x34,0xF5,0x8F,0x58, +0xB8,0xF2,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x10,0x00, +0x0E,0x2F,0x97,0x50,0x38,0xF5,0x8F,0x58,0xB8,0xF2,0x01,0xF0,0x56,0x4E,0xFA,0xFF, +0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x01,0x00,0x6E,0x4A,0x0E,0x00,0x04,0x67,0x67,0x42, +0x04,0x60,0x3C,0x3F,0x01,0x00,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0x0C,0x00,0x2E,0x2F, +0x08,0x00,0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x40,0x3D,0xFE,0xFF,0xB8,0xF2, +0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x3E,0x0C,0x00,0x2E,0x2F, +0x08,0x00,0xE8,0xF1,0x8F,0x58,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF, +0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xA7,0x42,0x2E,0x3F,0x0E,0x00,0x3C,0x3F,0x04,0x00, +0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF, +0x57,0x42,0x2E,0x30,0x0C,0x00,0x7C,0xC0,0x00,0x80,0x04,0x66,0x67,0x42,0x04,0x60, +0x3C,0x3F,0x01,0x00,0x6E,0x4A,0x0E,0x00,0x04,0x67,0x67,0x42,0x04,0x60,0x3C,0x3F, +0x01,0x00,0x3C,0x3F,0x08,0x00,0x2E,0x3F,0x0C,0x00,0x57,0x02,0xFF,0x7F,0x2E,0x2F, +0x08,0x00,0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x40,0x3D,0xFE,0xFF,0xB8,0xF2, +0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x12,0x00,0x2E,0x2F, +0x0E,0x00,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x08,0xF2,0xFC,0xDF,0x00,0x00, +0x0A,0x00,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x0C,0xF2,0x8F,0x50,0x40,0x3D, +0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x2E,0x2F, +0x10,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x04,0xF2,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0xF4,0xF1,0x8F,0x50,0x40,0x3D, +0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x8E,0x2E, +0x97,0x06,0x00,0x00,0x10,0x00,0xFC,0xF1,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00, +0x00,0xF2,0x8F,0x50,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0, +0x56,0x4E,0xFA,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x10,0x00,0xFC,0xF1,0xAE,0x3E, +0x1A,0x00,0x2E,0x3F,0x18,0x00,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x14,0xF2, +0x8F,0x50,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0xBC,0x2E,0x00,0x00,0xBA,0x96,0x8C,0xF2,0x40,0x3D,0xFE,0xFF,0xB8,0xF2, +0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x0C,0x00,0x2E,0x2F, +0x08,0x00,0x3C,0x2F,0x00,0x00,0xBA,0x96,0x4C,0xF2,0x8F,0x50,0x40,0x3D,0xFE,0xFF, +0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x12,0x00, +0x2E,0x2F,0x0E,0x00,0x2E,0x2F,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x9C,0xF2,0xFC,0xDF, +0x00,0x00,0x0A,0x00,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0, +0x56,0x4E,0xFA,0xFF,0xAE,0x3E,0x0C,0x00,0x2E,0x2F,0x08,0x00,0xA0,0xF2,0x8F,0x58, +0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF, +0xAE,0x3E,0x0C,0x00,0x2E,0x2F,0x08,0x00,0xA4,0xF2,0x8F,0x58,0x40,0x3D,0xFE,0xFF, +0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x3E,0x08,0x00, +0x6C,0xF2,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0xAE,0x3E,0x08,0x00,0x70,0xF2,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30, +0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x2E,0x2F,0x08,0x00,0x7C,0xF2,0x8F,0x58, +0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF, +0xAE,0x3E,0x08,0x00,0x80,0xF2,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF, +0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x2E,0x3F, +0x08,0x00,0x64,0xF2,0x8F,0x54,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF, +0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x2E,0x3F, +0x08,0x00,0x68,0xF2,0x8F,0x54,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF, +0x01,0xF0,0x56,0x4E,0xF2,0xFF,0x8E,0x2E,0x97,0x51,0x2E,0x2F,0x08,0x00,0x74,0xF2, +0x8F,0x58,0x40,0x3D,0xF6,0xFF,0xB8,0xF2,0x6E,0x20,0x0C,0x00,0xAE,0x30,0xF8,0xFF, +0x6E,0x20,0x10,0x00,0xAE,0x30,0xFA,0xFF,0x6E,0x20,0x14,0x00,0xAE,0x30,0xFC,0xFF, +0x6E,0x20,0x18,0x00,0xAE,0x30,0xFE,0xFF,0x2E,0x30,0xF6,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x78,0xF2, +0x8F,0x58,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0xAE,0x2E,0x20,0x00,0x2E,0x2F,0x1C,0x00,0x2E,0x2F,0x18,0x00,0x2E,0x2F, +0x14,0x00,0x2E,0x2F,0x10,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x84,0xF2, +0xFC,0xDF,0x00,0x00,0x18,0x00,0x40,0x3D,0xFE,0xFF,0xB8,0xF2,0x2E,0x30,0xFE,0xFF, +0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0x6E,0x2A,0x0A,0x00,0x47,0x42, +0x0C,0x60,0x4D,0x20,0x47,0x32,0xC9,0xD1,0xBC,0x10,0x30,0x00,0x47,0x52,0x7C,0xBE, +0x02,0x00,0xEE,0x6D,0x2D,0x42,0x02,0x00,0x8E,0x2E,0x97,0x50,0x3C,0x2F,0xFE,0x00, +0x10,0xF2,0x6E,0x0C,0x09,0x00,0x08,0x00,0x04,0x63,0x0D,0x2F,0x04,0x60,0x0D,0x2F, +0x97,0x52,0x50,0xF4,0x8F,0x50,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F, +0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0A,0x00,0x07,0x3A,0x7C,0xCA,0x00,0xF8,0x0B,0x70, +0x65,0xE0,0x7C,0xCA,0x1F,0x00,0x8D,0x2E,0x05,0x3F,0x3C,0xF5,0x8F,0x54,0x8D,0x2E, +0x97,0x54,0x07,0x30,0x7C,0xC0,0xE0,0x07,0x48,0xEA,0x00,0x3F,0x57,0x02,0x3F,0x00, +0x3C,0xF5,0x8F,0x54,0x8D,0x2E,0x97,0x58,0x3C,0x2F,0xFE,0x00,0x13,0xF2,0x4C,0xF3, +0x8F,0x58,0x39,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x0A,0x00, +0x8D,0x2E,0x2E,0x3F,0x08,0x00,0x57,0x02,0x1F,0x00,0x3C,0xF5,0x8F,0x54,0x8D,0x2E, +0x97,0x54,0x2E,0x30,0x08,0x00,0x7C,0xC0,0xE0,0x01,0x48,0xEA,0x00,0x3F,0x3C,0xF5, +0x8F,0x54,0x8D,0x2E,0x97,0x58,0x2E,0x30,0x08,0x00,0x09,0x72,0x68,0xE2,0x7C,0xC0, +0x7F,0x00,0x7C,0xD0,0x50,0x00,0x40,0x48,0x40,0x42,0x40,0x48,0xFC,0x80,0x64,0x00, +0x40,0x48,0x00,0x3F,0x3C,0xF5,0x8F,0x54,0x01,0xF8,0x56,0x4E,0xCC,0xFF,0xE7,0x48, +0x1C,0x07,0x2E,0x2E,0x08,0x00,0x6E,0x2A,0x0C,0x00,0xBC,0x3E,0x17,0x00,0x07,0x2F, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE9,0xFF,0x28,0xF1,0x8F,0x50,0x4D,0x28,0xEE,0x47, +0xF2,0xFF,0x79,0x0C,0x40,0x01,0x00,0x00,0x0A,0x98,0x04,0x67,0xFC,0x18,0x20,0x00, +0x2E,0x08,0x04,0x00,0xE9,0xFF,0x04,0x67,0x07,0x70,0x02,0x60,0x20,0x70,0xC0,0x18, +0x79,0x0C,0x40,0x01,0x00,0x00,0x0A,0x98,0x04,0x67,0xFC,0x18,0x20,0x00,0x02,0x60, +0xDB,0x18,0x13,0x4A,0x06,0x67,0x13,0x0C,0x2E,0x00,0xF4,0x66,0x79,0x0C,0x40,0x01, +0x00,0x00,0x0A,0x98,0x04,0x66,0x0A,0x70,0x02,0x60,0x0C,0x70,0x40,0x3D,0xCC,0xFF, +0x04,0x60,0xFC,0x18,0x20,0x00,0x0C,0x20,0x8D,0x90,0x6E,0x30,0xCC,0xFF,0x88,0xB0, +0xF0,0x6D,0x13,0x4A,0x02,0x67,0x8B,0x52,0x02,0x60,0xDB,0x18,0x13,0x4A,0xFA,0x66, +0x79,0x0C,0x40,0x01,0x00,0x00,0x0A,0x98,0x04,0x66,0x0D,0x70,0x02,0x60,0x10,0x70, +0x40,0x3D,0xCC,0xFF,0x04,0x60,0xFC,0x18,0x20,0x00,0x0C,0x20,0x8D,0x90,0x6E,0x30, +0xCC,0xFF,0x88,0xB0,0xF0,0x6D,0xEE,0x47,0xCE,0xFF,0x2E,0x08,0x04,0x00,0xE9,0xFF, +0x04,0x67,0x13,0x42,0x1A,0x60,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x3C,0x2F, +0xFE,0x00,0x16,0xF2,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xCE,0xFF,0x50,0xF4,0x8F,0x50, +0x08,0x7C,0x8B,0x2E,0x0C,0xF1,0x40,0x9C,0x04,0x60,0xFC,0x18,0x20,0x00,0x06,0x30, +0x46,0x53,0x40,0x4A,0xF4,0x66,0x02,0x60,0xDB,0x18,0x13,0x4A,0xFA,0x66,0xFC,0x18, +0x20,0x00,0x79,0x0C,0x40,0x01,0x00,0x00,0x0A,0x98,0x04,0x67,0xFC,0x18,0x20,0x00, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x2E,0x3F,0xEC,0xFF,0x40,0xF5,0x8F,0x54, +0xEE,0x47,0xE0,0xFF,0x03,0x7C,0x0C,0x60,0xDB,0x18,0xDB,0x18,0x46,0x4A,0x04,0x67, +0xFC,0x18,0x2D,0x00,0x06,0x30,0x46,0x53,0x40,0x4A,0xEC,0x66,0xFC,0x18,0x20,0x00, +0x79,0x0C,0x40,0x01,0x00,0x00,0x0A,0x98,0x04,0x67,0xFC,0x18,0x20,0x00,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xD8,0xFF,0x2E,0x3F,0xEA,0xFF,0x44,0xF5,0x8F,0x54,0xEE,0x47, +0xD8,0xFF,0x02,0x7C,0x0C,0x60,0xDB,0x18,0xDB,0x18,0x46,0x4A,0x04,0x67,0xFC,0x18, +0x3A,0x00,0x06,0x30,0x46,0x53,0x40,0x4A,0xEC,0x66,0x79,0x0C,0x40,0x01,0x00,0x00, +0x0A,0x98,0x04,0x67,0xFC,0x18,0x20,0x00,0x8C,0x2E,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xDC,0xFF,0x4C,0xF3,0x8F,0x58,0x8C,0x56,0x0C,0x20,0x8D,0x90,0x31,0xFE,0x56,0x4E, +0xFA,0xFF,0x2E,0x30,0x0E,0x00,0x2E,0x32,0x10,0x00,0x40,0xB3,0x7C,0xC0,0x01,0x00, +0x1C,0x67,0x2E,0x2F,0x16,0x00,0x2E,0x2F,0x12,0x00,0x3C,0x2F,0x01,0x00,0x07,0x00, +0x3C,0x3F,0x03,0x00,0x04,0xF0,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x5A,0x60,0xB9,0x2E, +0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x84,0x1C,0x2E,0x2F,0x1A,0x00,0x48,0xF5, +0x8F,0x58,0xBC,0x3E,0x01,0x00,0x3C,0x2F,0x01,0x00,0x01,0x00,0xEC,0xF2,0x8F,0x58, +0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x84,0x1C,0x39,0x2F,0x00,0x00, +0x44,0xC8,0x68,0xF0,0x8F,0x58,0x40,0x3D,0xFE,0xFF,0xAE,0x3E,0xFE,0xFF,0x2E,0x2F, +0x12,0x00,0x3C,0x3F,0x03,0x00,0x4C,0xF5,0x8F,0x5C,0xBC,0x3E,0x01,0x00,0x3C,0x3F, +0x03,0x00,0x67,0x42,0xEC,0xF2,0x8F,0x58,0x2E,0x30,0x10,0x00,0x01,0xF0,0x56,0x4E, +0xDA,0xFF,0xE7,0x48,0x00,0x07,0x2E,0x2E,0x08,0x00,0xBC,0x3E,0x1E,0x00,0x07,0x2F, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE2,0xFF,0x28,0xF1,0x8F,0x50,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xDA,0xFF,0x50,0xF5,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0xFC,0xF1, +0xAE,0x2E,0xFC,0xFF,0x2E,0x2F,0xF0,0xFF,0x2E,0x2F,0xEC,0xFF,0x2E,0x2F,0xE8,0xFF, +0x2E,0x3F,0xE6,0xFF,0x2E,0x2F,0xE2,0xFF,0x54,0xF5,0xFC,0xDF,0x00,0x00,0x12,0x00, +0x00,0x3C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDA,0xFF,0xFC,0xF1,0x06,0x30,0x31,0xF0, +0x56,0x4E,0xEC,0xFF,0x79,0x2D,0x00,0x00,0xA6,0xC6,0xF0,0xFF,0x8E,0x2E,0x97,0x51, +0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x2E,0x2F,0x08,0x00, +0xE4,0xF3,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF, +0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0xA7,0x42,0xA7,0x42,0x67,0x42,0xF8,0xF3, +0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F, +0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x3C,0x3F,0x08,0x00,0x67,0x42,0x2E,0x2F,0x08,0x00, +0xE8,0xF3,0xFC,0xDF,0x00,0x00,0x0E,0x00,0xAE,0x3E,0x0C,0x00,0x2E,0x2F,0x08,0x00, +0xF4,0xF3,0x8F,0x58,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF, +0x2E,0x3F,0xFE,0xFF,0xA7,0x42,0xA7,0x42,0x3C,0x3F,0x03,0x00,0xF8,0xF3,0xFC,0xDF, +0x00,0x00,0x10,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF4,0xFF,0xA7,0x42,0x6E,0x20,0xF0,0xFF,0x28,0x2F,0x04,0x1E,0xA7,0x42, +0xA7,0x42,0xA7,0x42,0xA7,0x42,0xA7,0x42,0xA7,0x42,0x67,0x42,0x3C,0x3F,0x30,0x00, +0xC8,0xF2,0xFC,0xDF,0x00,0x00,0x38,0x00,0x40,0x3D,0xF6,0xFF,0x2E,0x08,0x04,0x00, +0xF7,0xFF,0x02,0x67,0x58,0xF5,0x2E,0x08,0x04,0x00,0xF7,0xFF,0x96,0x66,0x01,0x70, +0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x57,0x42,0x2E,0x2F,0x08,0x00,0x5C,0xF5,0x8F,0x58, +0x2E,0x30,0x0C,0x00,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0xBC,0xD0,0x00,0x00, +0x0A,0x00,0x40,0x20,0x50,0x42,0x01,0xF0,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x04,0x01, +0x79,0x2A,0x00,0x00,0xA6,0xC6,0xAD,0x42,0x78,0x1C,0xAD,0x42,0x7C,0x1C,0xAD,0x42, +0x80,0x1C,0x8E,0x2E,0x97,0x55,0x0E,0x2F,0x97,0x55,0x2E,0x2F,0x10,0x00,0x2E,0x2F, +0x10,0x00,0xA7,0x42,0x67,0x42,0x74,0xF4,0xFC,0xDF,0x00,0x00,0x12,0x00,0x40,0x3D, +0xFC,0xFF,0x6E,0x4A,0xFC,0xFF,0x04,0x66,0x40,0x42,0x4A,0x60,0xAD,0x53,0x7C,0x1C, +0x57,0x42,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xF6,0xFF,0x0D,0x2F,0x97,0x06,0x00,0x00,0x78,0x1C,0x60,0xF5,0xFC,0xDF,0x00,0x00, +0x0E,0x00,0x57,0x42,0x2E,0x3F,0x0E,0x00,0x2E,0x2F,0x08,0x00,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF0,0xFF,0x0D,0x2F,0x97,0x06,0x00,0x00,0x7C,0x1C,0x60,0xF5,0xFC,0xDF, +0x00,0x00,0x0E,0x00,0x01,0x70,0x01,0xF8,0x56,0x4E,0xFC,0xFF,0x6E,0x4A,0x16,0x00, +0x0E,0x67,0xAE,0x2E,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x04,0xF4,0x8F,0x58,0x12,0x60, +0xAE,0x2E,0x08,0x00,0x3C,0x2F,0xFE,0x00,0x19,0xF2,0x2E,0x2F,0x0C,0x00,0x50,0xF4, +0x8F,0x50,0xAE,0x2E,0x0C,0x00,0x2E,0x3F,0x14,0x00,0x2E,0x2F,0x10,0x00,0x14,0xF4, +0x8F,0x5C,0x01,0xF0,0x56,0x4E,0xE6,0xFF,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x0C,0x00, +0x6E,0x28,0x16,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x2D,0x3F,0x0C,0x00, +0x40,0xF5,0x8F,0x54,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x2E,0x3F,0x10,0x00, +0x2E,0x2F,0x08,0x00,0x14,0xF4,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF, +0x2D,0x3F,0x0A,0x00,0x44,0xF5,0x8F,0x54,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF, +0x2E,0x3F,0x12,0x00,0x2E,0x2F,0x08,0x00,0x14,0xF4,0x8F,0x5C,0x57,0x42,0x2E,0x3F, +0x14,0x00,0x2E,0x2F,0x08,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x0C,0x2F, +0x60,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x01,0xFC,0x56,0x4E,0xE4,0xFF,0xE7,0x48, +0x1C,0x1F,0x6E,0x2A,0x0C,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6,0x2B,0x2E,0x78,0x1F, +0x8B,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19,0x2E,0x2F,0x08,0x00,0x4C,0xF3,0x8F,0x58, +0x8B,0x2E,0x97,0x06,0x00,0x00,0x64,0x1A,0x2E,0x2F,0x08,0x00,0x4C,0xF3,0x8F,0x58, +0x44,0x42,0x02,0x60,0x44,0x52,0x4B,0x20,0x44,0x32,0xC9,0xD1,0x28,0x0C,0x2A,0x00, +0xE4,0x19,0xF0,0x66,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0D,0x2F,0x97,0x06,0x00,0x00,0x12,0x00,0x60,0xF5, +0xFC,0xDF,0x00,0x00,0x0E,0x00,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0E,0x00,0x3C,0x2F, +0x05,0x00,0x03,0x00,0x3C,0x3F,0x04,0x00,0x0D,0x2F,0x07,0x2F,0x64,0xF5,0xFC,0xDF, +0x00,0x00,0x0E,0x00,0x57,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x2D,0x10,0x09,0x00, +0x80,0x48,0x00,0x3F,0x3C,0x3F,0x09,0x00,0x07,0x2F,0x68,0xF5,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0xBC,0x3E,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2D,0x10,0x09,0x00, +0x80,0x48,0x00,0x3F,0x3C,0x3F,0x08,0x00,0x07,0x2F,0x68,0xF5,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x57,0x42,0x07,0x2F,0x5C,0xF5,0x8F,0x58,0xBC,0x3E,0x0B,0x00,0x3C,0x3F, +0x0A,0x00,0x07,0x2F,0x1C,0xF4,0x8F,0x5C,0x40,0x4A,0x00,0x67,0x20,0x01,0x97,0x42, +0x3C,0x3F,0x02,0x00,0xD4,0xF2,0x8F,0x54,0x01,0x7A,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xE4,0xFF,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x24,0xF4,0x8F,0x5C,0x0B,0x20,0x04,0x32, +0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF2,0xFF,0x2C,0xF4,0x8F,0x58,0x0B,0x20,0x04,0x32,0xC1,0x48,0x81,0xD0, +0x80,0x2E,0x97,0x06,0x00,0x00,0x64,0x1A,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE4,0xFF, +0x2C,0xF4,0x8F,0x58,0x0B,0x20,0x04,0x32,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06, +0x00,0x00,0x64,0x1A,0x0B,0x20,0x04,0x32,0xC1,0x48,0x81,0xD0,0x00,0x2F,0x97,0x06, +0x00,0x00,0xE4,0x19,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x4E,0x66,0x8B,0x2E,0x97,0x06, +0x00,0x00,0x64,0x1A,0x0B,0x2F,0x97,0x06,0x00,0x00,0xE4,0x19,0x6C,0xF5,0x8F,0x58, +0x79,0x0C,0xDC,0xFF,0x00,0x00,0x18,0xC9,0x0E,0x66,0x97,0x42,0x3C,0x2F,0x01,0x00, +0x12,0x00,0x38,0xF4,0x8F,0x58,0x22,0x60,0xAC,0xF3,0x00,0x3A,0x1C,0x67,0x8D,0x2E, +0x97,0x06,0x00,0x00,0x12,0x00,0x0B,0x20,0x04,0x32,0xC1,0x48,0x81,0xD0,0x00,0x2F, +0x97,0x06,0x00,0x00,0x64,0x1A,0x4C,0xF3,0x8F,0x58,0x2D,0x1C,0x09,0x00,0x86,0x48, +0x47,0x20,0xFC,0xD1,0x00,0x00,0xE3,0x00,0x10,0x08,0x00,0x00,0x06,0x67,0x7C,0x8C, +0x01,0x00,0x04,0x60,0x7C,0xCC,0xFE,0xFF,0x06,0x30,0x80,0x48,0x2D,0xB0,0x09,0x00, +0x1C,0x67,0x86,0x3E,0x3C,0x3F,0x01,0x00,0x0B,0x2F,0x97,0x06,0x00,0x00,0x64,0x1A, +0x70,0xF5,0x8F,0x5C,0xAC,0xF3,0x00,0x3A,0x04,0x67,0x46,0x1B,0x09,0x00,0x97,0x42, +0x67,0x42,0xD4,0xF2,0x8F,0x54,0x05,0x30,0x04,0x60,0x02,0x60,0x40,0x42,0x3D,0xFE, +0x56,0x4E,0xC0,0xFF,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x0C,0x00,0x79,0x26,0x00,0x00, +0xA6,0xC6,0x97,0x42,0x3C,0x3F,0x02,0x00,0xD4,0xF2,0x8F,0x54,0x6B,0x2D,0x80,0x1F, +0xD0,0xFF,0x8B,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19,0x2E,0x2F,0x08,0x00,0x4C,0xF3, +0x8F,0x58,0xEB,0x49,0xE4,0x19,0x02,0x60,0x8C,0x52,0x14,0x0C,0x2A,0x00,0xF8,0x66, +0x8C,0x2E,0x0D,0x2F,0x97,0x06,0x00,0x00,0x12,0x00,0x4C,0xF3,0x8F,0x58,0x40,0x28, +0x8C,0x2E,0x97,0x53,0x3C,0x2F,0xFE,0x00,0x1C,0xF2,0x4C,0xF3,0x8F,0x58,0x8B,0x2E, +0x97,0x06,0x00,0x00,0xE4,0x19,0x3C,0x2F,0x06,0x00,0x05,0x00,0x2E,0x2F,0xD0,0xFF, +0x74,0xF5,0x8F,0x50,0x40,0x3D,0xCE,0xFF,0x97,0x42,0x67,0x42,0xD4,0xF2,0x8F,0x54, +0x6E,0x4A,0xCE,0xFF,0x50,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x02,0x00,0x2E,0x2F, +0xD0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xC0,0xFF,0x0D,0x2F,0x97,0x06,0x00,0x00, +0x12,0x00,0x60,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x8B,0x2E,0x97,0x06,0x00,0x00, +0x80,0x1C,0x3C,0x2F,0x04,0x00,0x07,0x00,0x3C,0x3F,0x03,0x00,0x0D,0x2F,0x2E,0x2F, +0xD0,0xFF,0x64,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0xBC,0x3E,0x08,0x00,0x2E,0x2F, +0xD0,0xFF,0x78,0xF5,0x8F,0x58,0x01,0x70,0x01,0xFE,0x56,0x4E,0xC4,0xFF,0xE7,0x48, +0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x97,0x42,0x3C,0x3F,0x02,0x00,0xD4,0xF2, +0x8F,0x54,0x2D,0x2E,0x7C,0x1F,0x6E,0x1D,0x09,0x00,0xD0,0xFF,0x2E,0x42,0xD1,0xFF, +0x6E,0x1B,0xD0,0xFF,0xE4,0x19,0x8D,0x2E,0x97,0x06,0x00,0x00,0xE5,0x19,0x3C,0x2F, +0xFE,0x00,0x21,0xF2,0x4C,0xF3,0x8F,0x58,0x8D,0x2E,0x97,0x06,0x00,0x00,0xE4,0x19, +0x3C,0x2F,0x05,0x00,0x04,0x00,0x07,0x2F,0x74,0xF5,0x8F,0x50,0x40,0x3D,0xF2,0xFF, +0x6E,0x4A,0xF2,0xFF,0x00,0x67,0xBA,0x00,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x59, +0x2E,0x10,0x09,0x00,0x80,0x48,0x00,0x3F,0x57,0x06,0xC0,0xFF,0x7C,0xF5,0x8F,0x5C, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD2,0xFF,0x2E,0x10,0x09,0x00,0x80,0x48,0x00,0x3F, +0x57,0x06,0xC0,0xFF,0x80,0xF5,0x8F,0x54,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xC4,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xD2,0xFF,0x04,0xF4,0x8F,0x58,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xD0,0xFF,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xC4,0xFF,0x3C,0x3F,0x03,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C, +0x57,0x42,0x3C,0x3F,0x06,0x00,0x07,0x2F,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF, +0x0D,0x2F,0x97,0x06,0x00,0x00,0x80,0x1C,0x60,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0x57,0x42,0x3C,0x3F,0x07,0x00,0x07,0x2F,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xDE,0xFF, +0x0E,0x2F,0x97,0x51,0x60,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x97,0x42,0x67,0x42, +0xD4,0xF2,0x8F,0x54,0xBC,0x3E,0x08,0x00,0x07,0x2F,0x78,0xF5,0x8F,0x58,0x08,0x60, +0x97,0x42,0x67,0x42,0xD4,0xF2,0x8F,0x54,0x01,0x70,0x21,0xF8,0x56,0x4E,0xFA,0xFF, +0xE7,0x48,0x04,0x1F,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x2D,0x2E,0xA8,0x1F,0x6D,0x4A, +0xB8,0x1F,0x04,0x67,0x01,0x70,0x02,0x60,0x40,0x42,0x00,0x3C,0x6D,0x4A,0xB8,0x1F, +0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x00,0x3A,0x47,0x20,0xFC,0xD1,0x00,0x00, +0x6A,0x00,0x86,0x30,0x47,0x20,0xFC,0xD1,0x00,0x00,0x82,0x00,0x85,0x30,0x6D,0x4A, +0xB6,0x1F,0x04,0x67,0x01,0x70,0x02,0x60,0x40,0x42,0x00,0x3C,0x6D,0x4A,0xB6,0x1F, +0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x00,0x3A,0x47,0x20,0xFC,0xD1,0x00,0x00, +0xCA,0x00,0x86,0x30,0x47,0x20,0xFC,0xD1,0x00,0x00,0xE2,0x00,0x85,0x30,0x44,0x42, +0x18,0x60,0x47,0x20,0x04,0x32,0x7C,0xD2,0x0C,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0xFC,0xD1,0x00,0x00,0x0A,0x00,0x50,0x42,0x44,0x52,0x7C,0xB8,0x05,0x00,0xE2,0x6D, +0x44,0x42,0x18,0x60,0x47,0x20,0x04,0x32,0x7C,0xD2,0x15,0x00,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00,0x50,0x42,0x44,0x52,0x7C,0xB8,0x03,0x00, +0xE2,0x6D,0xBC,0x3E,0x04,0x00,0x80,0xF1,0x40,0x3D,0xFE,0xFF,0x6E,0x0C,0x02,0x00, +0xFE,0xFF,0x1A,0x66,0x47,0x20,0xFC,0xD1,0x00,0x00,0x02,0x02,0xBC,0x30,0x08,0x00, +0x47,0x20,0xFC,0xD1,0x00,0x00,0x1A,0x02,0xBC,0x30,0x08,0x00,0x0C,0x60,0x47,0x20, +0xFC,0xD1,0x00,0x00,0x32,0x02,0xBC,0x30,0x08,0x00,0x47,0x20,0x2E,0x32,0xFE,0xFF, +0x7C,0xD2,0x15,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00, +0xBC,0x30,0x01,0x00,0x57,0x42,0x07,0x2F,0x5C,0xF5,0x8F,0x58,0xBC,0x3E,0x12,0x00, +0x3C,0x3F,0x11,0x00,0x07,0x2F,0x1C,0xF4,0x8F,0x5C,0x40,0x4A,0x4A,0x67,0xBC,0x3E, +0x05,0x00,0x3C,0x3F,0x04,0x00,0x07,0x2F,0x1C,0xF4,0x8F,0x5C,0x40,0x3B,0xB8,0x1F, +0xBC,0x3E,0x09,0x00,0x3C,0x3F,0x08,0x00,0x07,0x2F,0x1C,0xF4,0x8F,0x5C,0x40,0x3B, +0xB6,0x1F,0xBC,0x3E,0x03,0x00,0x3C,0x3F,0x15,0x00,0x07,0x2F,0x84,0xF5,0x8F,0x5C, +0x40,0x54,0xC0,0x33,0x00,0x00,0x0C,0x89,0xB9,0x3E,0x00,0x00,0x0C,0x89,0x88,0xF5, +0x40,0x4A,0x04,0x67,0x01,0x70,0x02,0x60,0x40,0x42,0x3D,0xF8,0x56,0x4E,0xF2,0xFF, +0xE7,0x48,0x0C,0x03,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x79,0x20,0x00,0x00, +0xA6,0xC6,0x28,0x2E,0x8C,0x1F,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x02,0x00,0x07,0x2F, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0D,0x2F,0x60,0xF5,0xFC,0xDF,0x00,0x00, +0x0E,0x00,0x8C,0x2E,0x3C,0x3F,0x03,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C,0xBC,0x3E, +0x03,0x00,0x07,0x2F,0x5C,0xF5,0x8F,0x58,0xBC,0x3E,0x05,0x00,0x3C,0x3F,0x04,0x00, +0x07,0x2F,0x1C,0xF4,0x8F,0x5C,0x40,0x4A,0x36,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xF2,0xFF,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x24,0xF4,0x8F,0x5C,0xAE,0x2E,0x10,0x00, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x2C,0xF4,0x8F,0x58,0xAE,0x2E,0x14,0x00, +0x3C,0x3F,0x03,0x00,0x07,0x2F,0x24,0xF4,0x8F,0x5C,0x01,0x70,0x04,0x60,0x02,0x60, +0x40,0x42,0x21,0xFC,0x56,0x4E,0xD2,0xFF,0xE7,0x48,0x0C,0x07,0x6E,0x2A,0x08,0x00, +0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x2E,0x90,0x1F,0x6E,0x42,0xFE,0xFF,0x6E,0x42, +0xD2,0xFF,0x2D,0x30,0x16,0x00,0x40,0x1D,0xFC,0xFF,0x2E,0x42,0xFD,0xFF,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x2D,0x2F,0x0A,0x00,0x4C,0xF3,0x8F,0x58,0x8E,0x2E, +0x97,0x59,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xEE,0xFF,0x3C,0x3F,0x03,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C,0x57,0x42, +0x07,0x2F,0x5C,0xF5,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x3C,0x3F, +0x02,0x00,0x07,0x2F,0x24,0xF4,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDE,0xFF, +0x3C,0x3F,0x03,0x00,0x07,0x2F,0x24,0xF4,0x8F,0x5C,0x7C,0x20,0x00,0x00,0x9A,0x00, +0x30,0x30,0x00,0x78,0x7C,0xC0,0x01,0x00,0x40,0x3D,0xDA,0xFF,0x2E,0x0C,0x20,0x00, +0xEC,0xFF,0x06,0x67,0x2E,0x4A,0xEC,0xFF,0x08,0x66,0x7C,0x3D,0x01,0x00,0xD2,0xFF, +0x16,0x60,0x2E,0x0C,0x63,0x00,0xEC,0xFF,0x0E,0x67,0x2E,0x10,0xEC,0xFF,0x80,0x48, +0x80,0x3E,0x88,0xF1,0x40,0x1D,0xEC,0xFF,0x47,0x20,0xFC,0xD1,0x00,0x00,0xCB,0x00, +0x10,0x08,0x00,0x00,0x00,0x67,0x5E,0x01,0x47,0x20,0xFC,0xD1,0x00,0x00,0xCA,0x00, +0x50,0x42,0x6E,0x4A,0xD2,0xFF,0x00,0x66,0xC4,0x01,0x2E,0x10,0xFC,0xFF,0x80,0x48, +0x2E,0xB0,0xEC,0xFF,0x00,0x67,0xF2,0x00,0x57,0x42,0x88,0xF3,0x40,0x28,0x6D,0x39, +0x04,0x00,0x04,0x00,0x2E,0x0C,0x63,0x00,0xEC,0xFF,0x04,0x67,0x02,0x70,0x02,0x60, +0x04,0x70,0x40,0x39,0x06,0x00,0x6D,0x39,0x08,0x00,0x08,0x00,0x6D,0x29,0x0A,0x00, +0x0A,0x00,0xAC,0x42,0x0E,0x00,0x6D,0x39,0x12,0x00,0x12,0x00,0x7C,0x39,0xFF,0xFF, +0x14,0x00,0x2E,0x10,0xEC,0xFF,0x80,0x48,0x40,0x39,0x16,0x00,0x39,0x30,0x00,0x00, +0x0A,0x98,0xC0,0x48,0xFC,0x81,0x02,0x00,0x6D,0xB0,0x18,0x00,0x14,0x6F,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x28,0x30,0xBC,0x1F,0x6D,0xD0,0x18,0x00,0x40,0x39,0x18,0x00, +0x14,0x60,0x2D,0x30,0x18,0x00,0x79,0x22,0x00,0x00,0xA6,0xC6,0x29,0x32,0xBC,0x1F, +0x41,0x90,0x40,0x39,0x18,0x00,0x39,0x30,0x00,0x00,0x8E,0xC7,0x79,0x90,0x00,0x00, +0x02,0x97,0xC0,0x48,0xFC,0x81,0x02,0x00,0x6D,0xB0,0x1A,0x00,0x14,0x6F,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x28,0x30,0xBE,0x1F,0x6D,0xD0,0x1A,0x00,0x40,0x39,0x1A,0x00, +0x14,0x60,0x2D,0x30,0x1A,0x00,0x79,0x22,0x00,0x00,0xA6,0xC6,0x29,0x32,0xBE,0x1F, +0x41,0x90,0x40,0x39,0x1A,0x00,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x30,0x0E,0x20, +0x6D,0xD0,0x1A,0x00,0x40,0x39,0x1A,0x00,0x8C,0x2E,0x97,0x06,0x00,0x00,0x1A,0x00, +0x0C,0x2F,0x97,0x06,0x00,0x00,0x18,0x00,0x2C,0x2F,0x18,0x00,0xCC,0xF2,0x8F,0x50, +0x4C,0x2A,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDE,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x30,0x66, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDE,0xFF,0x0C,0xF1,0xC0,0x48,0x8E,0xD0,0x40,0x20, +0x7C,0x11,0x40,0x00,0xDE,0xFF,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xDE,0xFF,0x40,0xF3,0x8F,0x58,0x7C,0x3D,0x01,0x00,0xFE,0xFF, +0x00,0x60,0x7A,0x00,0x47,0x20,0xFC,0xD1,0x00,0x00,0xE3,0x00,0x10,0x08,0x00,0x00, +0x52,0x67,0x47,0x20,0xFC,0xD1,0x00,0x00,0xE2,0x00,0x50,0x42,0x6E,0x4A,0xD2,0xFF, +0x5A,0x66,0x79,0x20,0x00,0x00,0xA6,0xC6,0x68,0x2A,0x9A,0x33,0x30,0x60,0x2D,0x30, +0x12,0x00,0x6E,0xB0,0xDA,0xFF,0x24,0x66,0x2D,0x30,0x16,0x00,0x2E,0x12,0xEC,0xFF, +0x81,0x48,0x41,0xB0,0x16,0x66,0x8D,0x2E,0x8C,0xF5,0x79,0x20,0x00,0x00,0xA6,0xC6, +0x68,0x2A,0x9A,0x33,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x02,0x60,0x55,0x2A,0x0D,0x20, +0xCC,0x66,0x18,0x60,0x47,0x20,0xFC,0xD1,0x00,0x00,0xFB,0x00,0x10,0x08,0x00,0x00, +0x0A,0x67,0x47,0x20,0xFC,0xD1,0x00,0x00,0xFA,0x00,0x50,0x42,0x2E,0x30,0xFE,0xFF, +0x31,0xFC,0x56,0x4E,0xC4,0xFF,0xE7,0x48,0x1C,0x03,0x6E,0x2A,0x0C,0x00,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x28,0x2E,0x94,0x1F,0x6D,0x20,0x0A,0x00,0x10,0x0C,0x2A,0x00, +0x0E,0x67,0x6D,0x20,0x0A,0x00,0x10,0x0C,0x3F,0x00,0x04,0x67,0x40,0x42,0x02,0x60, +0x01,0x70,0x40,0x3D,0xC4,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x2E,0x2F, +0x08,0x00,0x04,0xF4,0x8F,0x58,0x6D,0x26,0x0E,0x00,0x02,0x60,0x8B,0x52,0x13,0x4A, +0x06,0x67,0x13,0x0C,0x2E,0x00,0xF4,0x66,0x13,0x0C,0x2E,0x00,0x02,0x66,0x8B,0x52, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE4,0xFF,0x0B,0x2F,0x4C,0xF3,0x8F,0x58,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE4,0xFF,0x3C,0x3F,0x03,0x00,0x07,0x2F,0x14,0xF4, +0x8F,0x5C,0x6D,0x3D,0x04,0x00,0xCC,0xFF,0x2D,0x08,0x00,0x00,0x05,0x00,0x0E,0x67, +0x47,0x20,0xFC,0xD1,0x00,0x00,0x9A,0x00,0xBC,0x30,0x01,0x00,0x22,0x60,0x2D,0x08, +0x03,0x00,0x05,0x00,0x0E,0x67,0x47,0x20,0xFC,0xD1,0x00,0x00,0xCA,0x00,0xBC,0x30, +0x01,0x00,0x0C,0x60,0x47,0x20,0xFC,0xD1,0x00,0x00,0xB2,0x00,0xBC,0x30,0x01,0x00, +0x2D,0x30,0x12,0x00,0x40,0x57,0x40,0x3D,0xD0,0xFF,0x47,0x20,0x2E,0x32,0xD0,0xFF, +0x7C,0xD2,0x0B,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00, +0xBC,0x30,0x01,0x00,0x57,0x42,0x07,0x2F,0x5C,0xF5,0x8F,0x58,0x6E,0x42,0xC8,0xFF, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x24,0xF4, +0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x3C,0x3F,0x03,0x00,0x07,0x2F, +0x24,0xF4,0x8F,0x5C,0xBC,0x3E,0x03,0x00,0x3C,0x3F,0x06,0x00,0x07,0x2F,0x84,0xF5, +0x8F,0x5C,0x40,0x3D,0xC6,0xFF,0x2E,0x30,0xC6,0xFF,0x16,0x60,0x7C,0x3D,0x03,0x00, +0xCA,0xFF,0x1E,0x60,0x6E,0x42,0xCA,0xFF,0x18,0x60,0x7C,0x3D,0x08,0x00,0xCA,0xFF, +0x10,0x60,0x40,0x4A,0xE6,0x67,0x7C,0xB0,0x01,0x00,0xE8,0x67,0x7C,0xB0,0x02,0x00, +0xE8,0x67,0x47,0x20,0x2E,0x32,0xC6,0xFF,0x41,0x5C,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0xFC,0xD1,0x00,0x00,0x0A,0x00,0x50,0x42,0xBC,0x3E,0x11,0x00,0x3C,0x3F,0x0B,0x00, +0x07,0x2F,0x84,0xF5,0x8F,0x5C,0x40,0x3D,0xCE,0xFF,0x47,0x20,0x2E,0x32,0xCE,0xFF, +0x7C,0xD2,0x0B,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00, +0x50,0x42,0x47,0x20,0xFC,0xD1,0x00,0x00,0xE3,0x00,0x10,0x08,0x00,0x00,0x00,0x67, +0x4A,0x01,0x2E,0x08,0x04,0x00,0xCD,0xFF,0x06,0x67,0x6E,0x00,0x10,0x00,0xCA,0xFF, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF, +0x28,0xF4,0x8F,0x58,0x40,0x4A,0x20,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE4,0xFF,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x08,0x67, +0x6E,0x4A,0xC4,0xFF,0x00,0x67,0xE2,0x00,0xBC,0x3E,0x01,0x00,0x88,0xF3,0x40,0x28, +0x0C,0x20,0x00,0x67,0xD4,0x00,0x6E,0x39,0xCA,0xFF,0x04,0x00,0x6C,0x42,0x06,0x00, +0x7C,0x39,0xFF,0xFF,0x08,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD2,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x2C,0xF4,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xD2,0xFF,0x0C,0xF1,0xC0,0x48,0x8E,0xD0,0x40,0x20,0x7C,0x11,0x40,0x00,0xD2,0xFF, +0x8C,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xD2,0xFF, +0x40,0xF3,0x8F,0x58,0x2E,0x4A,0xE0,0xFF,0x28,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xD2,0xFF,0x3C,0x2F,0xFE,0x00,0x28,0xF2,0x4C,0xF3,0x8F,0x58,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xD4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x4C,0xF3,0x8F,0x58, +0x04,0x60,0x2E,0x42,0xD2,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD2,0xFF,0x0C,0xF1, +0xC0,0x48,0x8E,0xD0,0x40,0x20,0x7C,0x11,0x40,0x00,0xD2,0xFF,0x8C,0x2E,0x97,0x06, +0x00,0x00,0x0E,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xD2,0xFF,0x40,0xF3,0x8F,0x58, +0x2E,0x30,0xCE,0xFF,0x40,0x56,0x40,0x39,0x12,0x00,0x2E,0x30,0xCE,0xFF,0x40,0x58, +0x40,0x39,0x14,0x00,0x6C,0x42,0x16,0x00,0x6C,0x42,0x18,0x00,0x6C,0x42,0x1A,0x00, +0x4C,0x2A,0x7C,0x3D,0x01,0x00,0xC8,0xFF,0x2E,0x30,0xCC,0xFF,0x6E,0xB0,0xCA,0xFF, +0x0C,0x67,0x6E,0x3B,0xCA,0xFF,0x04,0x00,0x7C,0x3D,0x01,0x00,0xC8,0xFF,0x47,0x20, +0xFC,0xD1,0x00,0x00,0xE2,0x00,0x50,0x42,0x0A,0x60,0x47,0x20,0xFC,0xD1,0x00,0x00, +0xFA,0x00,0x50,0x42,0x2E,0x30,0xC8,0xFF,0x21,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x0C,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x79,0x28,0x00,0x00,0x7A,0xC6,0x3C,0x3E, +0x8E,0x01,0x1A,0x60,0x0C,0x20,0x07,0x32,0x41,0x52,0xFC,0xC3,0x28,0x00,0x81,0xD0, +0x4C,0x22,0x07,0x34,0xFC,0xC5,0x28,0x00,0xC2,0xD3,0x80,0x22,0x47,0x53,0x47,0x4A, +0xE2,0x6C,0x8C,0x2A,0xAC,0x42,0x58,0x3E,0x21,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x04,0x7E,0x1E,0x60,0x0D,0x20,0x07,0x32, +0x41,0x52,0xFC,0xC3,0x8C,0x00,0x81,0xD0,0x80,0x58,0x4D,0x22,0x07,0x34,0xFC,0xC5, +0x8C,0x00,0xC2,0xD3,0x40,0x23,0x04,0x00,0x47,0x53,0x47,0x4A,0xDE,0x6C,0xED,0x41, +0x04,0x00,0x48,0x2B,0xC0,0x02,0xAD,0x42,0xC4,0x02,0xAD,0x42,0x34,0x02,0x21,0xF8, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xA6,0xC6,0xED,0x41, +0x46,0x03,0x48,0x2B,0xC6,0x03,0xED,0x41,0xC8,0x02,0x48,0x2B,0x42,0x03,0x80,0xF4, +0x84,0xF4,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x03,0x2E,0x3E,0x08,0x00, +0x6E,0x2A,0x0A,0x00,0x6E,0x28,0x0E,0x00,0x6E,0x26,0x16,0x00,0x8D,0x2E,0x0C,0xF1, +0x7C,0xD0,0x0D,0x00,0x7C,0xB0,0x79,0x00,0x04,0x6D,0x40,0x42,0x4E,0x60,0xC7,0x16, +0xFC,0x16,0x3A,0x00,0xFC,0x16,0x5C,0x00,0x15,0x4A,0x10,0x67,0x02,0x60,0xDD,0x16, +0x15,0x4A,0xFA,0x66,0x14,0x4A,0x04,0x67,0xFC,0x16,0x5C,0x00,0x14,0x4A,0x28,0x67, +0x02,0x60,0xDC,0x16,0x14,0x4A,0xFA,0x66,0x6E,0x20,0x12,0x00,0x10,0x4A,0x18,0x67, +0xFC,0x16,0x2E,0x00,0x0A,0x60,0x6E,0x20,0x12,0x00,0xD0,0x16,0xAE,0x52,0x12,0x00, +0x6E,0x20,0x12,0x00,0x10,0x4A,0xEE,0x66,0x1B,0x42,0x01,0x70,0x21,0xFE,0x56,0x4E, +0xF8,0xFF,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x08,0x00,0x4D,0x2D,0xFC,0xFF,0x02,0x60, +0x8D,0x52,0x15,0x4A,0x06,0x67,0x15,0x0C,0x3A,0x00,0xF4,0x66,0x15,0x0C,0x3A,0x00, +0x1A,0x66,0x8D,0x53,0x15,0x10,0x80,0x48,0x6E,0x22,0x0C,0x00,0x80,0x32,0x8D,0x52, +0x8D,0x52,0x15,0x0C,0x5C,0x00,0x02,0x66,0x8D,0x52,0x12,0x60,0xC0,0xF3,0x00,0x3F, +0x57,0x06,0x41,0x00,0x6E,0x20,0x0C,0x00,0x9F,0x30,0x6E,0x2A,0xFC,0xFF,0x4D,0x2D, +0xF8,0xFF,0x4D,0x28,0xCB,0x97,0x12,0x60,0x15,0x0C,0x5C,0x00,0x02,0x66,0x4D,0x28, +0x15,0x0C,0x2E,0x00,0x02,0x66,0x4D,0x26,0x8D,0x52,0x15,0x4A,0xEA,0x66,0x0B,0x20, +0x02,0x66,0x4D,0x26,0x12,0x60,0x6E,0x20,0x10,0x00,0x6E,0x22,0xF8,0xFF,0x91,0x10, +0xAE,0x52,0xF8,0xFF,0xAE,0x52,0x10,0x00,0xEE,0xB9,0xF8,0xFF,0xE8,0x66,0x6E,0x20, +0x10,0x00,0x10,0x42,0x14,0x0C,0x5C,0x00,0x02,0x66,0x8C,0x52,0x0A,0x60,0x6E,0x20, +0x14,0x00,0x9C,0x10,0xAE,0x52,0x14,0x00,0xCB,0xB9,0xF2,0x66,0x6E,0x20,0x14,0x00, +0x10,0x42,0x13,0x4A,0x12,0x67,0x8B,0x52,0x0A,0x60,0x6E,0x20,0x18,0x00,0x9B,0x10, +0xAE,0x52,0x18,0x00,0xCD,0xB7,0xF2,0x66,0x6E,0x20,0x18,0x00,0x10,0x42,0x01,0xFE, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00,0x2E,0x3E,0x0C,0x00, +0x0C,0x60,0x6D,0xBE,0x20,0x00,0x04,0x66,0x0D,0x20,0x08,0x60,0x55,0x2A,0x0D,0x20, +0xF0,0x66,0x80,0x42,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A, +0x08,0x00,0x02,0x60,0x55,0x2A,0x15,0x20,0xAE,0xB0,0x0C,0x00,0xF6,0x66,0x0D,0x20, +0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x90,0x2A,0x79,0x20,0x00,0x00,0xA6,0xC6,0x8D,0x20,0x01,0xF8, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00,0x0D,0x20,0x1A,0x67, +0x97,0x42,0x0D,0x2F,0x88,0xF4,0x8F,0x58,0x40,0x28,0x79,0x20,0x00,0x00,0xA6,0xC6, +0x90,0x28,0x79,0x20,0x00,0x00,0xA6,0xC6,0x8D,0x20,0x01,0xFC,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x01,0x79,0x28,0x00,0x00,0xA6,0xC6,0x94,0x4A,0x0A,0x67,0x54,0x2A, +0x54,0x20,0x90,0x28,0x0D,0x20,0x02,0x60,0x80,0x42,0x01,0xFC,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x01,0x79,0x28,0x00,0x00,0xA6,0xC6,0xAC,0x4A,0xC0,0x02,0x20,0x67, +0x6C,0x2A,0xC0,0x02,0x6C,0x20,0xC0,0x02,0x50,0x29,0xC0,0x02,0xAC,0x2A,0xC4,0x02, +0x4D,0x29,0xC4,0x02,0x6D,0x42,0x04,0x00,0xAD,0x42,0x82,0x00,0x0D,0x20,0x02,0x60, +0x80,0x42,0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x08,0x00, +0x79,0x26,0x00,0x00,0xA6,0xC6,0xAD,0x2E,0x82,0x00,0x8C,0xF4,0xEB,0x49,0xC4,0x02, +0x02,0x60,0x54,0x28,0xD4,0xBB,0xFA,0x66,0x95,0x28,0xAB,0x2A,0xC0,0x02,0x4D,0x27, +0xC0,0x02,0x01,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x90,0xF4,0x40,0x2A, +0x0D,0x20,0x32,0x67,0x8D,0x2E,0x97,0x50,0x2E,0x2F,0x12,0x00,0x2E,0x2F,0x0E,0x00, +0x2E,0x2F,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x94,0xF4,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0x40,0x4A,0x0C,0x67,0x6E,0x3B,0x16,0x00,0x06,0x00,0x0D,0x20,0x0A,0x60,0x04,0x60, +0x80,0x42,0x04,0x60,0x02,0x60,0x80,0x42,0x01,0xF8,0x56,0x4E,0xFC,0xFF,0xAE,0x2E, +0x08,0x00,0x98,0xF4,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x1C,0x03,0x6E,0x2A, +0x08,0x00,0x6E,0x28,0x0C,0x00,0xED,0x47,0x12,0x00,0xEC,0x41,0x12,0x00,0x48,0x2D, +0xFC,0xFF,0x2E,0x30,0x10,0x00,0x00,0x60,0x86,0x00,0x2C,0x20,0x0E,0x00,0xAD,0xB0, +0x0E,0x00,0x06,0x6F,0x01,0x70,0x00,0x60,0x8E,0x00,0x2C,0x20,0x0E,0x00,0xAD,0xB0, +0x0E,0x00,0x06,0x6C,0xFF,0x70,0x00,0x60,0x7E,0x00,0xAE,0x2E,0xFC,0xFF,0x0B,0x2F, +0x9C,0xF4,0x8F,0x58,0x00,0x60,0x70,0x00,0xBC,0x3E,0x2E,0x00,0x2E,0x2F,0xFC,0xFF, +0xA0,0xF4,0x8F,0x58,0x80,0x2E,0x3C,0x3F,0x2E,0x00,0x0B,0x2F,0xA0,0xF4,0x8F,0x5C, +0x00,0x2F,0x9C,0xF4,0x8F,0x58,0x00,0x3E,0x04,0x67,0x07,0x30,0x48,0x60,0xAE,0x2E, +0xFC,0xFF,0x0B,0x2F,0x9C,0xF4,0x8F,0x58,0x3C,0x60,0x2C,0x3E,0x0C,0x00,0x6D,0x9E, +0x0C,0x00,0x47,0x4A,0x06,0x67,0x07,0x30,0x2C,0x60,0x10,0x60,0x2C,0x30,0x0A,0x00, +0x48,0xEA,0x2D,0x32,0x0A,0x00,0x49,0xEA,0x41,0x90,0x1A,0x60,0x18,0x60,0x40,0x4A, +0xCC,0x67,0x7C,0xB0,0x01,0x00,0xD2,0x67,0x7C,0xB0,0x02,0x00,0x00,0x67,0x6C,0xFF, +0x7C,0xB0,0x03,0x00,0x92,0x67,0x21,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x2D,0x10,0x09,0x00,0x80,0x48,0x2C,0x12, +0x09,0x00,0x81,0x48,0x40,0xB3,0x7C,0xC0,0x10,0x00,0x12,0x67,0x2D,0x08,0x04,0x00, +0x09,0x00,0x04,0x67,0xFF,0x70,0x02,0x60,0x01,0x70,0x14,0x60,0x12,0x60,0x79,0x20, +0x00,0x00,0xA6,0xC6,0xA8,0x3E,0xE2,0x19,0x0C,0x2F,0x0D,0x2F,0xA4,0xF4,0x8F,0x50, +0x01,0xFC,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x1C,0x0F,0x79,0x26,0x00,0x00,0xA6,0xC6, +0x6E,0x0C,0xFF,0xFF,0x08,0x00,0x24,0x66,0x6E,0x42,0x08,0x00,0x6E,0x2A,0x0A,0x00, +0x16,0x60,0x4B,0x20,0x6E,0x32,0x08,0x00,0xC9,0xD3,0xC9,0xD3,0xC9,0xD1,0x4D,0x21, +0xDE,0x37,0x6E,0x52,0x08,0x00,0x55,0x2A,0x0D,0x20,0xE6,0x66,0x2E,0x3E,0x08,0x00, +0xC7,0x48,0xFC,0x8F,0x02,0x00,0x00,0x60,0x80,0x00,0x07,0x3C,0x6E,0x60,0x06,0x3A, +0x47,0x9A,0x62,0x60,0x4B,0x20,0x45,0x32,0xC7,0xD2,0xC9,0xD3,0xC9,0xD3,0xC9,0xD1, +0xA8,0x2E,0xDE,0x37,0x4B,0x20,0x45,0x32,0xC9,0xD3,0xC9,0xD3,0xC9,0xD1,0x28,0x2F, +0xDE,0x37,0xA8,0xF4,0x8F,0x58,0x40,0x4A,0x40,0x6F,0x4B,0x20,0x45,0x32,0xC9,0xD3, +0xC9,0xD3,0xC9,0xD1,0x68,0x28,0xDE,0x37,0x4B,0x20,0x45,0x32,0xC9,0xD3,0xC9,0xD3, +0xC9,0xD1,0x4B,0x22,0x45,0x34,0xC7,0xD4,0xCA,0xD5,0xCA,0xD5,0xCA,0xD3,0x69,0x21, +0xDE,0x37,0xDE,0x37,0x4B,0x20,0x45,0x32,0xC7,0xD2,0xC9,0xD3,0xC9,0xD3,0xC9,0xD1, +0x4C,0x21,0xDE,0x37,0x47,0x9A,0x45,0x4A,0x9A,0x6C,0x46,0x52,0x6E,0xBC,0x08,0x00, +0x8C,0x6D,0xC7,0x48,0xFC,0x8F,0x02,0x00,0x47,0x4A,0x00,0x6E,0x7E,0xFF,0xAE,0x42, +0xFC,0xFF,0xEE,0x4B,0xFC,0xFF,0x46,0x42,0x1E,0x60,0x4B,0x20,0x46,0x32,0xC9,0xD3, +0xC9,0xD3,0xC9,0xD1,0xA8,0x2A,0xDE,0x37,0x4B,0x20,0x46,0x32,0xC9,0xD3,0xC9,0xD3, +0xC9,0xD1,0x68,0x2A,0xDE,0x37,0x46,0x52,0x6E,0xBC,0x08,0x00,0xDC,0x6D,0x95,0x42, +0x2E,0x20,0xFC,0xFF,0x39,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x1F,0x6E,0x2A, +0x08,0x00,0x2D,0x0C,0x63,0x00,0x08,0x00,0x04,0x66,0x01,0x78,0x02,0x60,0x44,0x42, +0x6D,0x42,0x86,0x00,0xAD,0x42,0x88,0x00,0xAD,0x2E,0x82,0x00,0x8C,0xF4,0xCC,0x99, +0xED,0x47,0x82,0x00,0x44,0x4A,0x16,0x67,0xAD,0x3E,0x06,0x00,0x79,0x20,0x00,0x00, +0xA6,0xC6,0x28,0x2F,0xC6,0x03,0xAC,0xF4,0x8F,0x58,0x00,0x3E,0x1A,0x60,0x79,0x20, +0x00,0x00,0xA6,0xC6,0xA8,0x2E,0xC6,0x03,0x44,0xF4,0xAD,0x3E,0x06,0x00,0x0D,0x2F, +0x97,0x50,0x48,0xF4,0x8F,0x58,0x00,0x3E,0x00,0x60,0x90,0x00,0x0C,0x20,0x16,0x66, +0xB0,0xF4,0x40,0x28,0x0C,0x20,0x0A,0x66,0x47,0x42,0xFC,0x33,0x64,0x00,0x00,0x00, +0x18,0xC9,0x00,0x60,0x76,0x00,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x0C,0x2E,0x00, +0x64,0x03,0x1A,0x66,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x0C,0x2E,0x00,0x65,0x03, +0x4A,0x67,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x4A,0x65,0x03,0x3E,0x67,0x8C,0x2E, +0x97,0x50,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x5A,0x03,0x3C,0x3F, +0x17,0x00,0x5C,0xF3,0x8F,0x5C,0x2C,0x20,0x0E,0x00,0xAD,0xD1,0x88,0x00,0x6D,0x30, +0x86,0x00,0xC8,0xD1,0xC8,0xD1,0xF9,0xD1,0x00,0x00,0xA6,0xC6,0x0C,0x20,0x40,0x21, +0xDE,0x37,0x80,0x26,0x6D,0x52,0x86,0x00,0x4C,0x26,0xCC,0x99,0x44,0x4A,0x06,0x67, +0xB4,0xF4,0x00,0x3E,0x04,0x60,0x68,0xF4,0x00,0x3E,0x47,0x4A,0x00,0x66,0x6E,0xFF, +0x93,0x42,0x0C,0x20,0x04,0x67,0x8C,0x2E,0xB8,0xF4,0xAD,0x2E,0x82,0x00,0x2D,0x3F, +0x86,0x00,0xBC,0xF4,0x8F,0x54,0x40,0x2B,0x82,0x00,0x39,0x30,0x00,0x00,0x18,0xC9, +0x3D,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x79,0x2A,0x00,0x00,0x2E,0xC8, +0x79,0x28,0x00,0x00,0xA6,0xC6,0x8C,0x2E,0x97,0x06,0x00,0x00,0x70,0x1F,0x2E,0x3F, +0x0A,0x00,0x3C,0x3F,0x05,0x00,0x44,0xF3,0x8F,0x58,0xAE,0x4A,0x0C,0x00,0x12,0x67, +0xAE,0x2E,0x0C,0x00,0x2C,0x2F,0x70,0x1F,0x0D,0x2F,0x50,0xF4,0x8F,0x50,0x4D,0x29, +0x70,0x1F,0xAC,0x2E,0x70,0x1F,0x2E,0x3F,0x08,0x00,0xC0,0xF4,0x8F,0x54,0x01,0xFC, +0x56,0x4E,0xEC,0xFF,0x6E,0x3D,0x08,0x00,0xF0,0xFF,0x79,0x3D,0x00,0x00,0x90,0xC7, +0xF2,0xFF,0x6E,0x42,0xF4,0xFF,0x6E,0x3D,0x0C,0x00,0xF6,0xFF,0x6E,0x3D,0x0E,0x00, +0xF8,0xFF,0x6E,0x3D,0x10,0x00,0xFA,0xFF,0x6E,0x3D,0x12,0x00,0xFC,0xFF,0x6E,0x3D, +0x14,0x00,0xFE,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x3C,0x3F,0x10,0x00, +0x39,0x3F,0x00,0x00,0x90,0xC7,0xC4,0xF4,0x8F,0x58,0x01,0xF0,0x56,0x4E,0xF8,0xFF, +0xE7,0x48,0x0C,0x07,0x6E,0x2A,0x08,0x00,0x97,0x42,0x3C,0x3F,0x02,0x00,0xD4,0xF2, +0x8F,0x54,0x6D,0x28,0x18,0x00,0x8C,0x50,0x04,0x7E,0x00,0x60,0x9A,0x00,0x87,0x3E, +0xC8,0xF4,0x40,0x2A,0x6D,0x4A,0x06,0x00,0x00,0x67,0x8A,0x00,0x8C,0x2E,0x2D,0x2F, +0x18,0x00,0x97,0x50,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x78,0x67,0xAD,0x2E,0x18,0x00, +0xCC,0xF4,0x00,0x3C,0xBC,0x3E,0x01,0x00,0x2D,0x3F,0x06,0x00,0xD0,0xF4,0x8F,0x54, +0x8D,0x2E,0xD4,0xF4,0xA7,0x42,0x0D,0x2F,0x97,0x06,0x00,0x00,0x95,0x00,0x3C,0x3F, +0x03,0x00,0x2D,0x3F,0x06,0x00,0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x8E,0x2E, +0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F, +0x04,0x00,0x2D,0x3F,0x06,0x00,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E, +0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x2D,0x3F, +0x06,0x00,0x39,0x3F,0x00,0x00,0x90,0xC7,0x3C,0x3F,0x14,0x00,0xE0,0xF4,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x47,0x53,0x47,0x4A,0x00,0x66,0x64,0xFF,0x97,0x42,0x67,0x42, +0xD4,0xF2,0x8F,0x54,0x31,0xFC,0x56,0x4E,0xE4,0xFF,0xE7,0x48,0x1C,0x3F,0x6E,0x2A, +0x08,0x00,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x2E,0xA4,0x1F,0x6D,0x28,0x18,0x00, +0x79,0x26,0x00,0x00,0xA6,0xC6,0xFC,0xD7,0x00,0x00,0xE4,0x19,0x8B,0x2E,0x0C,0x2F, +0x97,0x50,0x4C,0xF3,0x8F,0x58,0x43,0x42,0x08,0x60,0x13,0x0C,0x5C,0x00,0x02,0x66, +0x43,0x52,0x1B,0x4A,0xF4,0x66,0x7C,0xB6,0x08,0x00,0x12,0x6F,0x97,0x42,0x3C,0x2F, +0x01,0x00,0x13,0x00,0x38,0xF4,0x8F,0x58,0x40,0x42,0x00,0x60,0x26,0x01,0x01,0x7A, +0x00,0x60,0x10,0x01,0x2E,0x42,0xF4,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF4,0xFF, +0x3C,0x3F,0x02,0x00,0x07,0x2F,0x14,0xF4,0x8F,0x5C,0x87,0x2E,0xF0,0xF3,0x57,0x42, +0x07,0x2F,0xF4,0xF3,0x8F,0x58,0x45,0x42,0xBC,0x3E,0x04,0x00,0x3C,0x3F,0x03,0x00, +0x07,0x2F,0x1C,0xF4,0x8F,0x5C,0x40,0x4A,0x00,0x67,0xD8,0x00,0xBC,0x3E,0x01,0x00, +0x20,0xF4,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x3C,0x3F,0x02,0x00,0x07,0x2F, +0x24,0xF4,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF4,0xFF,0x2C,0xF4,0x8F,0x58,0x2E,0x4A,0xE6,0xFF,0x00,0x67,0xA4,0x00, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06, +0x00,0x00,0xE4,0x19,0x34,0xF4,0x8F,0x58,0xBC,0x2E,0x00,0x00,0x70,0x9B,0x44,0xF4, +0xBC,0x3E,0x16,0x00,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0xE4,0x19, +0x48,0xF4,0x8F,0x58,0x40,0x4A,0x18,0x67,0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98, +0xFC,0x33,0x05,0x00,0x00,0x00,0x18,0xC9,0x7C,0x3D,0x10,0x00,0xE4,0xFF,0x14,0x60, +0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0xE4,0x19,0x60,0xF4,0x7C,0x3D, +0x11,0x00,0xE4,0xFF,0x79,0x4A,0x00,0x00,0xEC,0x98,0x2C,0x67,0x79,0x0C,0x05,0x00, +0x00,0x00,0x18,0xC9,0x22,0x66,0x97,0x42,0x2E,0x3F,0xE4,0xFF,0x3C,0x3F,0x01,0x00, +0x38,0xF4,0x8F,0x58,0x00,0x3A,0x45,0x53,0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x97,0x06, +0x00,0x00,0xE4,0x19,0x30,0xF4,0x0A,0x60,0xAC,0xF3,0x00,0x3C,0x04,0x67,0x8D,0x2E, +0xBC,0xF3,0x45,0x4A,0x00,0x66,0xEE,0xFE,0x57,0x42,0x20,0xF4,0x87,0x2E,0x7C,0xF4, +0x01,0x70,0x3F,0xFE,0x56,0x4E,0xF2,0xFF,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x0A,0x00, +0x6E,0x0C,0xFF,0xFF,0x08,0x00,0x00,0x67,0xEE,0x00,0x6E,0x0C,0x02,0x00,0x08,0x00, +0x00,0x66,0x8A,0x00,0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x84,0x1C, +0x2D,0x2F,0x82,0x00,0x0D,0x2F,0x97,0x50,0xE4,0xF4,0x8F,0x50,0x40,0x4A,0x68,0x67, +0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x39,0x2F,0x00,0x00, +0xA6,0xC6,0x97,0x06,0x00,0x00,0x84,0x1C,0x2D,0x2F,0x82,0x00,0x0D,0x2F,0x97,0x50, +0x67,0x42,0xE8,0xF4,0xFC,0xDF,0x00,0x00,0x16,0x00,0x79,0x3D,0x00,0x00,0x74,0xC6, +0xF4,0xFF,0x79,0x28,0x00,0x00,0xA6,0xC6,0xFC,0xD9,0x00,0x00,0x84,0x1C,0x0A,0x60, +0x14,0x0C,0x5C,0x00,0x04,0x66,0x6E,0x52,0xF4,0xFF,0x1C,0x4A,0xF2,0x66,0x6E,0x0C, +0x09,0x00,0xF4,0xFF,0x10,0x6F,0x97,0x42,0x3C,0x2F,0x01,0x00,0x16,0x00,0x38,0xF4, +0x8F,0x58,0x40,0x42,0x62,0x60,0x04,0x60,0x40,0x42,0x5C,0x60,0x8E,0x2E,0x97,0x51, +0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06, +0x00,0x00,0x84,0x1C,0x2D,0x2F,0x82,0x00,0x0D,0x2F,0x97,0x50,0x67,0x42,0xE8,0xF4, +0xFC,0xDF,0x00,0x00,0x16,0x00,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x59,0x0E,0x2F, +0x97,0x55,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x84,0x1C,0x2D,0x2F, +0x82,0x00,0x0D,0x2F,0x97,0x50,0x2E,0x3F,0x08,0x00,0xE8,0xF4,0xFC,0xDF,0x00,0x00, +0x16,0x00,0x01,0x70,0x02,0x60,0x40,0x42,0x01,0xFC,0x56,0x4E,0xFC,0xFF,0xE7,0x48, +0x04,0x03,0x6E,0x2A,0x0C,0x00,0xFF,0x7E,0x0D,0x20,0x00,0x67,0x78,0x00,0x2D,0x30, +0x06,0x00,0x5E,0x60,0x97,0x42,0x3C,0x2F,0x01,0x00,0x14,0x00,0x38,0xF4,0x8F,0x58, +0x40,0x42,0x6A,0x60,0x5E,0x60,0x01,0x7E,0x5A,0x60,0xAE,0x3E,0x10,0x00,0x39,0x2F, +0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x1E,0x3E,0xEC,0xF4,0x8F,0x58,0x40,0x2D, +0xFC,0xFF,0x6E,0x20,0xFC,0xFF,0x28,0x30,0x0C,0x00,0x7C,0xC0,0xFF,0x00,0x79,0x22, +0x00,0x00,0xA6,0xC6,0x40,0x13,0x84,0x1C,0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x97,0x06, +0x00,0x00,0x85,0x1C,0x3C,0x2F,0xFE,0x00,0x2C,0xF2,0x4C,0xF3,0x8F,0x58,0x02,0x7E, +0x12,0x60,0x7C,0xB0,0x02,0x00,0xB2,0x67,0x7C,0xB0,0x03,0x00,0xA8,0x67,0x7C,0xB0, +0x04,0x00,0x90,0x67,0xAE,0x2E,0x08,0x00,0x07,0x3F,0xF0,0xF4,0x8F,0x54,0x21,0xF8, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x10,0x00,0x6E,0x28,0x14,0x00, +0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x84,0x1C,0x2E,0x2F,0x0C,0x00, +0x4C,0xF3,0x8F,0x58,0x79,0x26,0x00,0x00,0xA6,0xC6,0xFC,0xD7,0x00,0x00,0x84,0x1C, +0x02,0x60,0x8B,0x52,0x13,0x0C,0x2A,0x00,0xF8,0x66,0x13,0x42,0x0D,0x20,0x28,0x67, +0x6D,0x0C,0x01,0x00,0x06,0x00,0x20,0x66,0x8B,0x2E,0x0C,0x2F,0x97,0x06,0x00,0x00, +0x12,0x00,0x4C,0xF3,0x8F,0x58,0x40,0x26,0x8B,0x2E,0x97,0x53,0x3C,0x2F,0xFE,0x00, +0x32,0xF2,0x4C,0xF3,0x8F,0x58,0x0C,0x60,0x8B,0x2E,0x3C,0x2F,0xFE,0x00,0x37,0xF2, +0x00,0xF4,0x8F,0x58,0xAE,0x2E,0x08,0x00,0x3C,0x3F,0x02,0x00,0xF0,0xF4,0x8F,0x54, +0x01,0xFE,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x08,0x00,0x2E,0x3C, +0x0A,0x00,0x87,0x3E,0x00,0xF3,0x40,0x2A,0x86,0x3E,0x00,0xF3,0x40,0x28,0xBC,0x2E, +0x00,0x00,0x88,0x98,0x0D,0x2F,0x97,0x06,0x00,0x00,0x1C,0x00,0x28,0xF4,0x8F,0x58, +0x40,0x4A,0x16,0x66,0xBC,0x2E,0x00,0x00,0x88,0x98,0x0C,0x2F,0x97,0x06,0x00,0x00, +0x1C,0x00,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x0E,0x67,0x97,0x42,0x3C,0x2F,0x01,0x00, +0x14,0x00,0x38,0xF4,0x8F,0x58,0x42,0x60,0x8E,0x2E,0x97,0x59,0x0E,0x2F,0x97,0x51, +0x2E,0x3F,0x0C,0x00,0x06,0x3F,0x0C,0xF3,0x8F,0x50,0x40,0x26,0xAE,0x2E,0xF8,0xFF, +0x0B,0x2F,0x2C,0x2F,0x18,0x00,0x97,0x50,0x2D,0x2F,0x18,0x00,0xF4,0xF4,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x40,0x3D,0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x0C,0x67,0x46,0xBE, +0x04,0x67,0x87,0x3E,0xF8,0xF4,0x8C,0x2E,0xBC,0xF3,0x31,0xFE,0x56,0x4E,0xF2,0xFF, +0x97,0x42,0xA7,0x42,0x2E,0x3F,0x0A,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0xFC,0xF4, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2D,0xF6,0xFF,0xAE,0x3E,0x08,0x00,0x00,0xF3, +0x40,0x2D,0xFA,0xFF,0xBC,0x2E,0x00,0x00,0x88,0x98,0x2E,0x2F,0xFA,0xFF,0x97,0x06, +0x00,0x00,0x1C,0x00,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x34,0x67,0x6E,0x20,0xF6,0xFF, +0x28,0x30,0x06,0x00,0x16,0x60,0x97,0x42,0x3C,0x2F,0x01,0x00,0x14,0x00,0x38,0xF4, +0x8F,0x58,0x1A,0x60,0xBC,0x3E,0x05,0x00,0x24,0xF2,0x12,0x60,0x7C,0xB0,0x02,0x00, +0xE4,0x67,0x7C,0xB0,0x03,0x00,0xEC,0x67,0x7C,0xB0,0x04,0x00,0xD8,0x67,0x24,0x60, +0xAE,0x3E,0x0A,0x00,0x2E,0x2F,0xF6,0xFF,0x6E,0x20,0xFA,0xFF,0x28,0x2F,0x18,0x00, +0x00,0xF5,0x8F,0x50,0x40,0x3D,0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x06,0x67,0xAE,0x2E, +0xFA,0xFF,0xBC,0xF3,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x0C,0x03,0xAE,0x3E, +0x08,0x00,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x1E,0x3E,0xEC,0xF4, +0x8F,0x58,0x40,0x2D,0xFC,0xFF,0xBC,0x3E,0x16,0x00,0x3C,0x2F,0xFE,0x00,0x3E,0xF2, +0x3C,0x2F,0xFE,0x00,0x3C,0xF2,0x3C,0x2F,0xFE,0x00,0x3B,0xF2,0x6E,0x20,0xFC,0xFF, +0x28,0x3F,0x0C,0x00,0x04,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x40,0x28,0x0C,0x20, +0x00,0x67,0x78,0x00,0x8C,0x2E,0xCC,0xF4,0x00,0x3E,0x7C,0xBE,0x12,0x00,0x47,0x42, +0xAC,0x4A,0x82,0x00,0x5C,0x67,0x6C,0x2A,0x82,0x00,0x06,0x60,0x6D,0x42,0x20,0x00, +0x55,0x2A,0x0D,0x20,0xF6,0x66,0x79,0x20,0x00,0x00,0xA6,0xC6,0x7C,0x31,0x01,0x00, +0x28,0x3E,0xAE,0x4A,0x0A,0x00,0x20,0x67,0xAE,0x2E,0x12,0x00,0x2E,0x2F,0x0E,0x00, +0x6E,0x20,0x0A,0x00,0x28,0x2F,0x18,0x00,0x97,0x50,0x0C,0x2F,0xF4,0xF4,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x00,0x3E,0x10,0x60,0xAE,0x3E,0x16,0x00,0x2E,0x2F,0x0E,0x00, +0x0C,0x2F,0x00,0xF5,0x8F,0x50,0x00,0x3E,0x79,0x20,0x00,0x00,0xA6,0xC6,0x68,0x42, +0x28,0x3E,0x8C,0x2E,0x08,0xF5,0x57,0x42,0xF8,0xF4,0x07,0x30,0x21,0xFC,0x56,0x4E, +0xF4,0xFF,0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x0A,0x00,0xAE,0x3E,0x08,0x00,0x00,0xF3, +0x40,0x2A,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x59,0x07,0x3F,0x2E,0x3F,0x08,0x00, +0x0C,0xF3,0x8F,0x50,0x40,0x26,0x46,0x42,0x64,0x60,0x8E,0x2E,0x97,0x51,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x06,0x3F,0x67,0x42,0x0C,0xF3,0x8F,0x50,0x40,0x28, +0x6C,0x0C,0x03,0x00,0x06,0x00,0x0E,0x66,0x97,0x42,0x3C,0x2F,0x01,0x00,0x0F,0x00, +0x38,0xF4,0x8F,0x58,0x38,0x60,0x6C,0x0C,0x04,0x00,0x06,0x00,0x0E,0x66,0x97,0x42, +0x3C,0x2F,0x01,0x00,0x14,0x00,0x38,0xF4,0x8F,0x58,0x22,0x60,0x87,0x3E,0x2E,0x2F, +0xFC,0xFF,0x0B,0x2F,0x0D,0x2F,0x06,0x3F,0x0C,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0x40,0x3D,0xFA,0xFF,0x6E,0x4A,0xFA,0xFF,0x04,0x67,0x8D,0x2E,0xBC,0xF3,0x86,0x3E, +0x3C,0x3F,0x01,0x00,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x1E,0x3E, +0x10,0xF5,0x8F,0x5C,0x00,0x3C,0x82,0x66,0x31,0xFE,0x56,0x4E,0xD4,0xFF,0xE7,0x48, +0x0C,0x01,0x6E,0x42,0xD4,0xFF,0x97,0x42,0xA7,0x42,0x2E,0x3F,0x08,0x00,0x67,0x42, +0x3C,0x3F,0x01,0x00,0xFC,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x28,0x6E,0x42, +0xFE,0xFF,0x00,0x60,0xBA,0x01,0x8E,0x2E,0x97,0x59,0x0E,0x2F,0x97,0x51,0x2E,0x3F, +0xFE,0xFF,0x67,0x42,0x0C,0xF3,0x8F,0x50,0x40,0x2A,0xCC,0xBB,0x00,0x67,0xA0,0x01, +0x6D,0x0C,0x04,0x00,0x06,0x00,0x08,0x67,0x6D,0x0C,0x03,0x00,0x06,0x00,0x16,0x66, +0x97,0x42,0x3C,0x2F,0x01,0x00,0x0B,0x00,0x38,0xF4,0x8F,0x58,0x40,0x42,0x00,0x60, +0xA2,0x01,0x00,0x60,0x7A,0x01,0x7C,0x3D,0x01,0x00,0xF6,0xFF,0x2C,0x30,0x06,0x00, +0x00,0x60,0x54,0x01,0xAE,0x3E,0xFE,0xFF,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06, +0x00,0x00,0x1E,0x3E,0xEC,0xF4,0x8F,0x58,0x40,0x2D,0xEE,0xFF,0x6E,0x20,0xEE,0xFF, +0x28,0x30,0x0C,0x00,0x7C,0xC0,0xFF,0x00,0x40,0x1D,0xE8,0xFF,0x2E,0x42,0xE9,0xFF, +0xEE,0x41,0xE8,0xFF,0x48,0x2D,0xF2,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF, +0x3C,0x2F,0x02,0x00,0x0C,0x00,0x38,0xF4,0x8F,0x58,0x40,0x3D,0xF6,0xFF,0x40,0x42, +0x00,0x60,0x40,0x01,0x00,0x60,0x18,0x01,0x97,0x42,0x3C,0x2F,0x01,0x00,0x14,0x00, +0x38,0xF4,0x8F,0x58,0x40,0x42,0x00,0x60,0x2A,0x01,0x00,0x60,0x02,0x01,0xAE,0x3E, +0xFE,0xFF,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x1E,0x3E,0xEC,0xF4, +0x8F,0x58,0x40,0x2D,0xEE,0xFF,0xAE,0x3E,0x08,0x00,0x39,0x2F,0x00,0x00,0xA6,0xC6, +0x97,0x06,0x00,0x00,0x1E,0x3E,0xEC,0xF4,0x8F,0x58,0x40,0x2D,0xEA,0xFF,0x6E,0x20, +0xEE,0xFF,0x28,0x30,0x0C,0x00,0x7C,0xC0,0xFF,0x00,0x40,0x1D,0xE2,0xFF,0x2E,0x42, +0xE3,0xFF,0x7C,0x1D,0x20,0x00,0xE4,0xFF,0x6E,0x20,0xEA,0xFF,0x28,0x30,0x0C,0x00, +0x7C,0xC0,0xFF,0x00,0x40,0x1D,0xE5,0xFF,0x2E,0x42,0xE6,0xFF,0x2E,0x42,0xE7,0xFF, +0xEE,0x41,0xE2,0xFF,0x48,0x2D,0xD6,0xFF,0xEE,0x41,0xE5,0xFF,0x48,0x2D,0xDA,0xFF, +0xEE,0x41,0xE5,0xFF,0x48,0x2D,0xDE,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD6,0xFF, +0x3C,0x2F,0x02,0x00,0x0D,0x00,0x38,0xF4,0x8F,0x58,0x40,0x3D,0xF6,0xFF,0x7C,0x1D, +0x3A,0x00,0xE3,0xFF,0x7C,0x1D,0x3A,0x00,0xE6,0xFF,0x6E,0x0C,0x01,0x00,0xF6,0xFF, +0x42,0x66,0xBC,0x3E,0xFB,0x00,0x3C,0x3F,0x01,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xE2,0xFF,0x3C,0x3F,0x04,0x00,0x14,0xF5,0x8F,0x54,0x00,0x2F,0x18,0xF5,0xFC,0xDF, +0x00,0x00,0x0A,0x00,0x40,0x3D,0xF6,0xFF,0x6E,0x4A,0xF6,0xFF,0x16,0x67,0xAE,0x3E, +0x08,0x00,0x67,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x1C,0xF5,0x8F,0x5C,0x7C,0x3D, +0x01,0x00,0xD4,0xFF,0x18,0x60,0x7C,0xB0,0x02,0x00,0x00,0x67,0x12,0xFF,0x7C,0xB0, +0x03,0x00,0x00,0x67,0xA0,0xFE,0x7C,0xB0,0x04,0x00,0x00,0x67,0xEC,0xFE,0xAE,0x3E, +0xFE,0xFF,0x3C,0x3F,0x01,0x00,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00, +0x1E,0x3E,0x10,0xF5,0x8F,0x5C,0x40,0x3D,0xFE,0xFF,0x00,0x66,0x2A,0xFE,0x2E,0x30, +0xD4,0xFF,0x01,0xFC,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x00,0x1F,0x2E,0x3E,0x08,0x00, +0x2E,0x3C,0x0A,0x00,0x2E,0x3A,0x0C,0x00,0x2E,0x38,0x0E,0x00,0x6E,0x42,0xFE,0xFF, +0x47,0x4A,0x2C,0x67,0x46,0x4A,0x0C,0x67,0x84,0x3E,0x06,0x3F,0x07,0x3F,0x20,0xF5, +0x8F,0x58,0x1A,0x60,0x45,0xB8,0x0E,0x66,0x97,0x42,0x3C,0x2F,0x01,0x00,0x0E,0x00, +0x38,0xF4,0x8F,0x58,0x08,0x60,0x84,0x3E,0x07,0x3F,0x24,0xF5,0x8F,0x54,0x1A,0x60, +0x46,0x4A,0x0A,0x67,0x84,0x3E,0x06,0x3F,0x28,0xF5,0x8F,0x54,0x0C,0x60,0x45,0xB8, +0x08,0x67,0x84,0x3E,0x2C,0xF5,0x40,0x3D,0xFE,0xFF,0x2E,0x30,0xFE,0xFF,0x3D,0xF0, +0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0xED,0x41, +0x1E,0x3E,0x48,0x2B,0x82,0x37,0x08,0x20,0x40,0x2D,0xFC,0xFF,0x47,0x42,0x32,0x60, +0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x7C,0x31,0xFF,0xFF,0x20,0x3E, +0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x7C,0x31,0xFF,0xFF,0x1E,0x3E, +0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x7C,0x31,0xFF,0xFF,0x22,0x3E, +0x47,0x52,0x7C,0xBE,0x85,0x00,0xC8,0x6D,0x8D,0x2E,0x97,0x06,0x00,0x00,0x1E,0x3E, +0x3C,0x2F,0xFE,0x00,0x40,0xF2,0x3C,0x3F,0x18,0x00,0x5C,0xF3,0x8F,0x5C,0xB9,0x3E, +0x00,0x00,0x8E,0xC7,0x39,0x3F,0x00,0x00,0x0A,0x98,0xA7,0x42,0x0D,0x2F,0x97,0x06, +0x00,0x00,0x2E,0x3E,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x47,0x42,0x32,0x60, +0x0D,0x20,0x07,0x32,0x41,0x52,0xFC,0xC3,0x18,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06, +0x00,0x00,0x1E,0x3E,0x3C,0x2F,0xFE,0x00,0x58,0xF2,0x3C,0x3F,0x18,0x00,0x5C,0xF3, +0x8F,0x5C,0x87,0x3E,0x57,0x52,0x67,0x42,0x2E,0x2F,0xFC,0xFF,0x90,0xF5,0x8F,0x5C, +0x47,0x52,0x7C,0xBE,0x05,0x00,0xC8,0x6D,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x01,0x7E,0x26,0x60,0x4D,0x20,0x07,0x32, +0x41,0x52,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x4A,0x32,0x3E,0x1A,0x67,0x4D,0x20, +0x07,0x32,0x41,0x52,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x4A,0x34,0x3E,0x08,0x67, +0x47,0x52,0x7C,0xBE,0x05,0x00,0xD4,0x6D,0x7C,0xBE,0x05,0x00,0x2C,0x6C,0x2E,0x2F, +0x0C,0x00,0x2E,0x2F,0x08,0x00,0x0D,0x20,0x07,0x32,0x41,0x52,0xFC,0xC3,0x18,0x00, +0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x2E,0x3E,0x5C,0xF1,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x07,0x30,0x40,0x52,0x04,0x60,0x02,0x60,0x40,0x42,0x21,0xF8,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x07,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x2E,0x2F,0x0E,0x00, +0x2E,0x2F,0x0A,0x00,0x0D,0x20,0x2E,0x32,0x08,0x00,0xFC,0xC3,0x18,0x00,0x81,0xD0, +0x00,0x2F,0x97,0x06,0x00,0x00,0x2E,0x3E,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0x4D,0x20,0x2E,0x32,0x08,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3E,0x20,0x3E, +0x20,0x60,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3C,0x1E,0x3E, +0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x7C,0x31,0xFF,0xFF,0x1E,0x3E, +0x06,0x3E,0x6E,0xBE,0x08,0x00,0xDA,0x6E,0x4D,0x20,0x2E,0x32,0x08,0x00,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0xFF,0x70,0x40,0x31,0x22,0x3E,0x4D,0x22,0x2E,0x34,0x08,0x00, +0xFC,0xC5,0x18,0x00,0xC2,0xD3,0x40,0x33,0x20,0x3E,0x31,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x06,0x7E,0x14,0x60,0x4D,0x20, +0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x0C,0xFF,0xFF,0x1E,0x3E,0x08,0x67, +0x47,0x52,0x7C,0xBE,0x85,0x00,0xE6,0x6D,0x7C,0xBE,0x85,0x00,0x54,0x6C,0x4D,0x20, +0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFF,0x70,0x40,0x31,0x22,0x3E,0x4D,0x22, +0x07,0x34,0xFC,0xC5,0x18,0x00,0xC2,0xD3,0x40,0x33,0x20,0x3E,0x87,0x3E,0x2E,0x3F, +0x08,0x00,0x2D,0x2F,0x82,0x37,0x90,0xF5,0x8F,0x5C,0x2E,0x2F,0x0E,0x00,0x2E,0x2F, +0x0A,0x00,0x0D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0x81,0xD0,0x00,0x2F,0x97,0x06, +0x00,0x00,0x2E,0x3E,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x07,0x30,0x04,0x60, +0x02,0x60,0x40,0x42,0x21,0xF8,0x56,0x4E,0xF6,0xFF,0x79,0x2D,0x00,0x00,0x2E,0xC8, +0xFA,0xFF,0x6E,0x0C,0x63,0x00,0x08,0x00,0x0C,0x66,0x79,0x42,0x00,0x00,0xEC,0x98, +0x01,0x70,0x00,0x60,0x90,0x00,0x6E,0x4A,0x08,0x00,0x00,0x67,0x86,0x00,0xAE,0x3E, +0x08,0x00,0x57,0x06,0xBF,0xFF,0xCC,0xF3,0x6E,0x20,0xFA,0xFF,0x7C,0x11,0x5C,0x00, +0x00,0x01,0xAE,0x2E,0xFA,0xFF,0x97,0x06,0x00,0x00,0x01,0x01,0x2E,0x2F,0x0A,0x00, +0x4C,0xF3,0x8F,0x58,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x3A,0x60,0x6E,0x20,0xFA,0xFF, +0x6E,0x32,0xFE,0xFF,0xC9,0xD1,0x28,0x0C,0x20,0x00,0x00,0x01,0x12,0x67,0x6E,0x20, +0xFA,0xFF,0x6E,0x32,0xFE,0xFF,0xC9,0xD1,0x28,0x0C,0x2A,0x00,0x00,0x01,0x12,0x66, +0x6E,0x20,0xFA,0xFF,0x6E,0x32,0xFE,0xFF,0xC9,0xD1,0x28,0x42,0x00,0x01,0x16,0x60, +0x04,0x60,0x6E,0x52,0xFE,0xFF,0x6E,0x20,0xFA,0xFF,0x6E,0x32,0xFE,0xFF,0xC9,0xD1, +0x28,0x4A,0x00,0x01,0xB6,0x66,0xAE,0x2E,0xFA,0xFF,0x97,0x06,0x00,0x00,0x00,0x01, +0xD0,0xF3,0x01,0x70,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x04,0x01,0x79,0x2A, +0x00,0x00,0xA6,0xC6,0x8D,0x2E,0x97,0x06,0x00,0x00,0x18,0x1E,0x2E,0x2F,0x08,0x00, +0x4C,0xF3,0x8F,0x58,0x8D,0x2E,0x97,0x06,0x00,0x00,0x9D,0x1E,0x2E,0x2F,0x0C,0x00, +0x4C,0xF3,0x8F,0x58,0x2E,0x30,0x12,0x00,0x40,0x1B,0x9C,0x1E,0x01,0x70,0x01,0xF8, +0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x2D,0x4A, +0x9C,0x1E,0x20,0x66,0x8D,0x2E,0x97,0x06,0x00,0x00,0x9D,0x1E,0x0C,0xF1,0x40,0x3D, +0xFC,0xFF,0x40,0x1B,0x9C,0x1E,0x4D,0x20,0x6E,0x32,0xFC,0xFF,0xC9,0xD1,0x7C,0x11, +0x0D,0x00,0x9D,0x1E,0xAD,0x2E,0x1C,0x1F,0x2D,0x2F,0x98,0x1E,0x2E,0x2F,0x08,0x00, +0x94,0xF5,0x8F,0x50,0x40,0x3D,0xFE,0xFF,0x2D,0x42,0x9C,0x1E,0x6E,0x0C,0xFF,0xFF, +0x0C,0x00,0x16,0x67,0x2D,0x2F,0x0C,0x1E,0x2D,0x2F,0x08,0x1E,0x2E,0x2F,0x0C,0x00, +0x67,0x42,0x98,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x2E,0x30,0xFE,0xFF,0x01,0xF8, +0x56,0x4E,0xFA,0xFF,0x97,0x42,0x3C,0x3F,0x02,0x00,0xD4,0xF2,0x8F,0x54,0xAE,0x2E, +0x10,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x3C,0x3F,0x01,0x00,0x9C,0xF5, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x3D,0xFE,0xFF,0x2E,0x30,0xFE,0xFF,0x01,0xF0, +0x56,0x4E,0xFA,0xFF,0x57,0x42,0x3C,0x2F,0x00,0x00,0xBA,0x96,0x3C,0x3F,0x01,0x00, +0x58,0xF3,0x8F,0x5C,0x01,0x70,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xAE,0x2E,0x08,0x00, +0x2E,0x3F,0x0C,0x00,0x67,0x42,0x44,0xF3,0x8F,0x58,0x40,0x3D,0xFE,0xFF,0x01,0xF0, +0x56,0x4E,0xF8,0xFF,0x8E,0x2E,0x97,0x59,0x2E,0x3F,0x08,0x00,0x3C,0x3F,0x05,0x00, +0x44,0xF3,0x8F,0x58,0xAE,0x2E,0xFC,0xFF,0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06, +0x00,0x00,0xCE,0x37,0x38,0xF1,0x8F,0x58,0x39,0x20,0x00,0x00,0xA6,0xC6,0xBC,0xD0, +0x00,0x00,0xCE,0x37,0x01,0xF0,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x04,0x07,0x2E,0x3E, +0x08,0x00,0x8E,0x2E,0x97,0x55,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x5D,0x0E,0x2F, +0x97,0x51,0x3C,0x3F,0x04,0x00,0x07,0x3F,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x47,0x4A,0x0C,0x67,0x87,0x3E,0x00,0xF3,0x40,0x2A,0x2D,0x3C,0x0A,0x00,0x02,0x60, +0x01,0x7C,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00, +0x0E,0x2F,0x97,0x51,0x3C,0x2F,0x00,0x00,0xAC,0x98,0x67,0x42,0x06,0x3F,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x28,0x2F,0x82,0x37,0x07,0x3F,0x1C,0xF3,0xFC,0xDF,0x00,0x00, +0x18,0x00,0x31,0xF8,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x0C,0x07,0x2E,0x3E,0x08,0x00, +0x2E,0x3C,0x0A,0x00,0x79,0x28,0x00,0x00,0xA6,0xC6,0x47,0x4A,0x4A,0x67,0x87,0x3E, +0x00,0xF3,0x40,0x2A,0x46,0x4A,0x38,0x67,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D, +0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00,0x07,0x3F,0xDC,0xF4, +0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F, +0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x0D,0x2F,0xA0,0xF5,0xFC,0xDF,0x00,0x00,0x0A,0x00, +0x6D,0x39,0x0A,0x00,0xAC,0x1F,0x06,0x60,0x7C,0x39,0x01,0x00,0xAC,0x1F,0x47,0x39, +0xAE,0x1F,0x31,0xFC,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x0C,0x0F,0x2E,0x3E,0x08,0x00, +0xEE,0x49,0xF8,0xFF,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x2C,0x82,0x37,0x47,0x4A, +0x0C,0x67,0x87,0x3E,0x00,0xF3,0x40,0x2A,0x2D,0x3A,0x0A,0x00,0x02,0x60,0x01,0x7A, +0x97,0x42,0x3C,0x3F,0x00,0x01,0xD4,0xF2,0x8F,0x54,0x8C,0x2E,0x97,0x5C,0x0C,0x2F, +0x97,0x58,0x0C,0x2F,0x97,0x54,0x0C,0x2F,0x3C,0x3F,0x0B,0x00,0x07,0x3F,0xDC,0xF4, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x54,0x60,0x8C,0x2E,0x0E,0x2F,0x97,0x06,0x00,0x00, +0x0A,0x00,0x10,0xF3,0x8F,0x58,0x40,0x4A,0x26,0x67,0x8C,0x2E,0x3C,0x2F,0x00,0x00, +0xA4,0x98,0x10,0xF3,0x8F,0x58,0x40,0x4A,0x16,0x67,0x2C,0x2F,0x04,0x00,0x14,0x2F, +0x3C,0x3F,0x08,0x00,0x05,0x3F,0x06,0x2F,0xE8,0xF3,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x8C,0x2E,0x97,0x5C,0x0C,0x2F,0x97,0x58,0x0C,0x2F,0x97,0x54,0x0C,0x2F,0x3C,0x3F, +0x0C,0x00,0x07,0x3F,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x6C,0x4A,0x04,0x00, +0x06,0x67,0x6C,0x4A,0x06,0x00,0xA0,0x66,0x97,0x42,0x3C,0x3F,0x01,0x01,0xD4,0xF2, +0x8F,0x54,0x39,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x0C,0x00, +0x6E,0x20,0x0E,0x00,0x07,0x32,0xFC,0xC3,0x18,0x00,0xAE,0xD2,0x08,0x00,0x41,0x22, +0xA9,0x30,0x10,0x00,0x6E,0x20,0x12,0x00,0x07,0x32,0xFC,0xC3,0x18,0x00,0xAE,0xD2, +0x08,0x00,0x41,0x22,0xA9,0x30,0x12,0x00,0x6E,0x20,0x16,0x00,0x07,0x32,0xFC,0xC3, +0x18,0x00,0xAE,0xD2,0x08,0x00,0x41,0x22,0xA9,0x30,0x14,0x00,0x6E,0x20,0x1A,0x00, +0x07,0x32,0xFC,0xC3,0x18,0x00,0xAE,0xD2,0x08,0x00,0x41,0x22,0xA9,0x30,0x16,0x00, +0x21,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x20,0x08,0x00,0x2E,0x32,0x0C,0x00,0xFC,0xC3, +0x18,0x00,0x30,0x20,0x0C,0x18,0x01,0xF0,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x0C,0x01, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D, +0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00,0x67,0x42,0xDC,0xF4, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x55,0x3D,0xFE,0xFF,0x2E,0x30,0xFE,0xFF,0x7C,0xC0, +0x0F,0x00,0x80,0x3A,0x55,0x0C,0x08,0x00,0x0C,0x6C,0x2E,0x30,0xFE,0xFF,0x7C,0xC0, +0xF0,0xFF,0x80,0x3A,0x0E,0x60,0x2E,0x30,0xFE,0xFF,0x7C,0xC0,0xF0,0xFF,0x7C,0xD0, +0x10,0x00,0x80,0x3A,0xAE,0x3E,0xFC,0xFF,0x14,0x3F,0x60,0xF3,0x8F,0x54,0x80,0x38, +0x01,0xFC,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x1C,0x0F,0x2E,0x3E,0x08,0x00,0x2E,0x3C, +0x0A,0x00,0x2E,0x3A,0x0C,0x00,0xEE,0x47,0xF0,0xFF,0x79,0x28,0x00,0x00,0xA6,0xC6, +0x8E,0x2E,0x97,0x06,0x00,0x00,0x10,0x00,0x0E,0x2F,0x97,0x06,0x00,0x00,0x0E,0x00, +0xA4,0xF5,0x8F,0x58,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59, +0x0E,0x2F,0x97,0x55,0x05,0x3F,0x0C,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E,0xA8,0xF5, +0xFC,0xDF,0x00,0x00,0x12,0x00,0x8B,0x2E,0x97,0x5C,0x0B,0x2F,0x97,0x58,0x0B,0x2F, +0x97,0x54,0x0B,0x2F,0x2C,0x3F,0xAC,0x1F,0x0C,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E, +0xA8,0xF5,0xFC,0xDF,0x00,0x00,0x12,0x00,0x13,0x30,0x6E,0xD1,0xFE,0xFF,0x2B,0x30, +0x02,0x00,0x6E,0xD1,0xFC,0xFF,0x4C,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x68,0x0C,0x18,0x00,0x24,0x3E,0x06,0x66,0x6E,0x3D,0x12,0x00,0xFA,0xFF,0x2E,0x2F, +0x12,0x00,0x2E,0x2F,0x0E,0x00,0x2E,0x3F,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F, +0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0xAC,0xF5,0xFC,0xDF,0x00,0x00,0x10,0x00,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x0B,0x2F,0x05,0x3F, +0x2C,0x3F,0xAC,0x1F,0x2C,0x2F,0x82,0x37,0x2C,0x3F,0xAE,0x1F,0x08,0xF3,0xFC,0xDF, +0x00,0x00,0x14,0x00,0x47,0x4A,0x12,0x67,0xAE,0x3E,0x14,0x00,0x2E,0x2F,0x10,0x00, +0x2E,0x3F,0x0E,0x00,0x06,0x3F,0xB0,0xF5,0x8F,0x50,0x46,0x39,0xB0,0x1F,0x39,0xFE, +0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x04,0x1F,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00, +0x2E,0x3A,0x0C,0x00,0x2E,0x38,0x0E,0x00,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x8E,0x2E, +0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F, +0x04,0x00,0x06,0x3F,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x47,0x4A,0x04,0x67, +0x86,0x3E,0xB4,0xF5,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF, +0x2E,0x3F,0xFE,0xFF,0x2D,0x2F,0x0C,0x20,0x04,0x3F,0x05,0x3F,0xB8,0xF5,0xFC,0xDF, +0x00,0x00,0x0E,0x00,0x3D,0xF8,0x56,0x4E,0xE8,0xFF,0xE7,0x48,0x1C,0x03,0x2E,0x3E, +0x08,0x00,0xEE,0x4B,0xF8,0xFF,0xEE,0x49,0xF0,0xFF,0xEE,0x47,0xE8,0xFF,0x8D,0x2E, +0x97,0x5C,0x0D,0x2F,0x97,0x58,0x0D,0x2F,0x97,0x54,0x0D,0x2F,0x3C,0x3F,0x05,0x00, +0x07,0x3F,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x8C,0x2E,0x97,0x5C,0x0C,0x2F, +0x97,0x58,0x0C,0x2F,0x97,0x54,0x0C,0x2F,0x3C,0x3F,0x06,0x00,0x07,0x3F,0xDC,0xF4, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x8B,0x2E,0x97,0x5C,0x0B,0x2F,0x97,0x58,0x0B,0x2F, +0x97,0x54,0x0B,0x2F,0x3C,0x3F,0x07,0x00,0x07,0x3F,0xDC,0xF4,0xFC,0xDF,0x00,0x00, +0x10,0x00,0x8B,0x2E,0x0D,0x2F,0xBC,0xF5,0x8F,0x58,0x40,0x4A,0x2A,0x67,0x2C,0x2F, +0x04,0x00,0x14,0x2F,0x3C,0x3F,0x05,0x00,0x07,0x3F,0xD8,0xF4,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x2B,0x2F,0x04,0x00,0x13,0x2F,0x2C,0x2F,0x04,0x00,0x14,0x2F,0xB8,0xF5, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x28,0x60,0x2B,0x2F,0x04,0x00,0x13,0x2F,0x2D,0x2F, +0x04,0x00,0x15,0x2F,0xAC,0xF5,0xFC,0xDF,0x00,0x00,0x10,0x00,0x2B,0x2F,0x04,0x00, +0x13,0x2F,0x3C,0x3F,0x05,0x00,0x07,0x3F,0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0x21,0xFE,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x0C,0x1F,0x6E,0x2A,0x08,0x00,0x2E,0x3E, +0x0C,0x00,0x2E,0x3C,0x0E,0x00,0x2E,0x3A,0x10,0x00,0x6E,0x28,0x1E,0x00,0xBC,0x3E, +0x01,0x00,0x20,0xF4,0xBC,0x3E,0x10,0x00,0x2E,0x2F,0x1A,0x00,0x2E,0x2F,0x16,0x00, +0x2E,0x2F,0x12,0x00,0x05,0x3F,0x04,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x40,0x2D, +0xFC,0xFF,0xAE,0x4A,0xFC,0xFF,0x44,0x66,0x97,0x42,0x3C,0x2F,0x01,0x00,0x13,0x00, +0x38,0xF4,0x8F,0x58,0xB8,0xF3,0x40,0x2A,0x0D,0x20,0x0E,0x67,0x79,0x20,0x00,0x00, +0xA6,0xC6,0x6D,0x31,0x06,0x00,0xB0,0x1F,0x0A,0x60,0x79,0x20,0x00,0x00,0xA6,0xC6, +0x68,0x42,0xB0,0x1F,0xBC,0x3E,0x01,0x00,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x3F, +0xB0,0x1F,0xD0,0xF4,0x8F,0x54,0x00,0x60,0xBE,0x00,0x06,0x60,0x6E,0x2B,0xFC,0xFF, +0x18,0x00,0xAD,0x2E,0x18,0x00,0xCC,0xF4,0x00,0x38,0x7C,0xBA,0x63,0x00,0x26,0x66, +0x8D,0x2E,0x97,0x06,0x00,0x00,0x1C,0x00,0x3C,0x2F,0xFE,0x00,0xB0,0xF1,0x4C,0xF3, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0x88,0x98,0x0D,0x2F,0x97,0x06,0x00,0x00,0x1C,0x00, +0x4C,0xF3,0x8F,0x58,0x04,0x60,0x8D,0x2E,0xC0,0xF5,0x8D,0x2E,0xD4,0xF4,0xA7,0x42, +0x0D,0x2F,0x97,0x06,0x00,0x00,0x1C,0x00,0x3C,0x3F,0x02,0x00,0x2D,0x3F,0x06,0x00, +0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xA7,0x42,0x0D,0x2F,0x97,0x06,0x00,0x00, +0x95,0x00,0x3C,0x3F,0x03,0x00,0x2D,0x3F,0x06,0x00,0xD8,0xF4,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x46,0x4A,0x1E,0x6F,0x2C,0x2F,0x04,0x00,0x14,0x2F,0x06,0x3F,0x2D,0x3F, +0x06,0x00,0x07,0x3F,0x98,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x47,0x4A,0x04,0x67, +0x8D,0x2E,0xC4,0xF5,0xBC,0x3E,0x01,0x00,0x2D,0x3F,0x06,0x00,0xD0,0xF4,0x8F,0x54, +0x47,0x4A,0x12,0x66,0xAC,0x3E,0x06,0x00,0x2C,0x2F,0x02,0x00,0x14,0x3F,0x2D,0x3F, +0x06,0x00,0xD0,0xF2,0x8F,0x50,0x57,0x42,0x20,0xF4,0x01,0x70,0x3D,0xFC,0x56,0x4E, +0xD4,0xFF,0xE7,0x48,0x1C,0x1F,0x6E,0x2A,0x08,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEE,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF, +0x2E,0x3F,0x0E,0x00,0x0B,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E,0xA8,0xF5,0xFC,0xDF, +0x00,0x00,0x12,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF6,0xFF,0x0E,0x2F,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x2B,0x3F,0xAC,0x1F, +0x0B,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E,0xA8,0xF5,0xFC,0xDF,0x00,0x00,0x12,0x00, +0x2E,0x30,0xFA,0xFF,0x6E,0xD1,0xF2,0xFF,0x2E,0x30,0xF8,0xFF,0x6E,0xD1,0xF0,0xFF, +0x6E,0x42,0xFC,0xFF,0x2D,0x3E,0x04,0x00,0x7C,0xCE,0x02,0x00,0x01,0x7C,0x2D,0x3A, +0x04,0x00,0x7C,0xCA,0x08,0x00,0x2D,0x30,0x04,0x00,0x7C,0xC0,0x10,0x00,0x40,0x3D, +0xD4,0xFF,0x6D,0x20,0x0A,0x00,0x10,0x0C,0x2A,0x00,0x16,0x67,0x6D,0x20,0x0A,0x00, +0x10,0x0C,0x3F,0x00,0x0C,0x67,0x6D,0x20,0x0A,0x00,0x10,0x4A,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0x00,0x38,0x6E,0x4A,0xD4,0xFF,0x0C,0x66,0xAE,0x2E,0x12,0x00, +0x2E,0x3F,0x10,0x00,0xC8,0xF5,0x8F,0x54,0x80,0x42,0x40,0x2D,0xE4,0xFF,0x40,0x28, +0x2B,0x42,0x18,0x1E,0x2B,0x42,0x9D,0x1E,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x44,0x4A, +0x14,0x66,0x6E,0x4A,0x0C,0x00,0x0E,0x66,0x6D,0x28,0x0A,0x00,0x6E,0x2D,0x16,0x00, +0xE4,0xFF,0x00,0x60,0xC2,0x00,0x6E,0x4A,0x0C,0x00,0x36,0x67,0x45,0x4A,0x2A,0x67, +0xEB,0x49,0x18,0x1E,0xEB,0x41,0x9D,0x1E,0x48,0x2D,0xE4,0xFF,0xAE,0x2E,0xE4,0xFF, +0x0C,0x2F,0x3C,0x2F,0xFE,0x00,0x84,0xF2,0x2E,0x2F,0x16,0x00,0xCC,0xF5,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x40,0x3D,0xFE,0xFF,0x04,0x60,0x6E,0x28,0x16,0x00,0x00,0x60, +0x86,0x00,0x97,0x42,0x3C,0x2F,0x01,0x00,0x06,0x00,0x38,0xF4,0x8F,0x58,0x40,0x3D, +0xFE,0xFF,0xEB,0x49,0x18,0x1E,0xEB,0x41,0x9D,0x1E,0x48,0x2D,0xE4,0xFF,0x2E,0x30, +0xFE,0xFF,0x50,0x60,0xBC,0x3E,0xFE,0x00,0x3C,0x3F,0x01,0x00,0x2E,0x2F,0x16,0x00, +0x3C,0x3F,0x01,0x00,0x14,0xF5,0x8F,0x54,0x00,0x2F,0x18,0xF5,0xFC,0xDF,0x00,0x00, +0x0A,0x00,0x40,0x3D,0xFE,0xFF,0x3E,0x60,0xBC,0x3E,0xFD,0x00,0x3C,0x3F,0x01,0x00, +0x2E,0x2F,0x16,0x00,0x3C,0x3F,0x02,0x00,0x14,0xF5,0x8F,0x54,0x00,0x2F,0x18,0xF5, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x3D,0xFE,0xFF,0x01,0x7E,0x18,0x60,0x6E,0x42, +0xFE,0xFF,0x12,0x60,0x7C,0xB0,0x01,0x00,0xAA,0x67,0x7C,0xB0,0x02,0x00,0xC8,0x67, +0x7C,0xB0,0x03,0x00,0xE8,0x67,0x6E,0x4A,0xFE,0xFF,0x62,0x67,0x0B,0x20,0xBC,0xD0, +0x00,0x00,0x18,0x1E,0xC0,0xB9,0x12,0x67,0x0C,0x20,0x0E,0x67,0x8B,0x2E,0x97,0x06, +0x00,0x00,0x18,0x1E,0x0C,0x2F,0x4C,0xF3,0x8F,0x58,0x0B,0x20,0xBC,0xD0,0x00,0x00, +0x9D,0x1E,0xAE,0xB0,0xE4,0xFF,0x16,0x67,0xAE,0x4A,0xE4,0xFF,0x10,0x67,0x8B,0x2E, +0x97,0x06,0x00,0x00,0x9D,0x1E,0x2E,0x2F,0xE4,0xFF,0x4C,0xF3,0x8F,0x58,0x6E,0x4A, +0xD4,0xFF,0x06,0x67,0x7C,0x17,0xFF,0x00,0x9C,0x1E,0xAE,0x3E,0x0E,0x00,0x2B,0x3F, +0xAE,0x1F,0x06,0x3F,0x07,0x3F,0x1C,0xF5,0x8F,0x5C,0x40,0x3D,0xFC,0xFF,0x2E,0x30, +0xFC,0xFF,0x3D,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x1F,0x2E,0x3E,0x08,0x00, +0x79,0x26,0x00,0x00,0xA6,0xC6,0x45,0x42,0x87,0x3E,0x0B,0x2F,0x97,0x06,0x00,0x00, +0x1E,0x3E,0xEC,0xF4,0x8F,0x58,0x40,0x28,0xBC,0x3E,0x01,0x00,0x20,0xF4,0x2C,0x38, +0x0C,0x00,0x7C,0xC8,0xFF,0x00,0x87,0x3E,0xD0,0xF5,0x40,0x2A,0x0D,0x20,0x22,0x66, +0x8B,0x2E,0x97,0x06,0x00,0x00,0x70,0x1F,0x3C,0x2F,0x05,0x00,0x07,0x00,0x44,0xF3, +0x8F,0x58,0xAB,0x2E,0x70,0x1F,0x3C,0x3F,0x01,0x00,0xC0,0xF4,0x8F,0x54,0x00,0x3C, +0x6A,0x60,0x7C,0xB8,0x63,0x00,0x06,0x67,0x84,0x3E,0xD4,0xF5,0x06,0x60,0x79,0x42, +0x00,0x00,0xEC,0x98,0x79,0x4A,0x00,0x00,0xEC,0x98,0x4C,0x66,0x7C,0xB8,0x63,0x00, +0x0C,0x67,0xBC,0x2E,0xFE,0x00,0x86,0xF2,0x04,0x3F,0xC8,0xF5,0x8F,0x54,0x0B,0x20, +0x2D,0x32,0x0A,0x00,0xFC,0xC3,0x18,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00, +0x2E,0x3E,0x3C,0x2F,0xFE,0x00,0x8A,0xF2,0x3C,0x2F,0xFE,0x00,0x88,0xF2,0x3C,0x2F, +0xFE,0x00,0x87,0xF2,0x04,0x3F,0x07,0x3F,0x3C,0x3F,0x01,0x00,0x0D,0x2F,0xD8,0xF5, +0xFC,0xDF,0x00,0x00,0x16,0x00,0x04,0x60,0x8D,0x2E,0xDC,0xF5,0x57,0x42,0x20,0xF4, +0x05,0x30,0x3D,0xFE,0x56,0x4E,0xF4,0xFF,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00, +0xEE,0x49,0xF4,0xFF,0x6E,0x42,0xFC,0xFF,0x8C,0x2E,0x97,0x5C,0x0C,0x2F,0x97,0x58, +0x0C,0x2F,0x97,0x54,0x0C,0x2F,0x3C,0x3F,0x04,0x00,0x2D,0x3F,0x06,0x00,0xDC,0xF4, +0xFC,0xDF,0x00,0x00,0x10,0x00,0xBC,0x3E,0x01,0x00,0x20,0xF4,0xAE,0x3E,0x0E,0x00, +0xD4,0xF5,0x79,0x4A,0x00,0x00,0xEC,0x98,0x5E,0x66,0xBC,0x2E,0xFE,0x00,0x8C,0xF2, +0x2E,0x3F,0x0E,0x00,0xC8,0xF5,0x8F,0x54,0xAE,0x2E,0x10,0x00,0x2E,0x3F,0x0E,0x00, +0xC8,0xF5,0x8F,0x54,0xAD,0x2E,0x18,0x00,0x08,0xF5,0x79,0x4A,0x00,0x00,0xEC,0x98, +0x18,0x67,0x7C,0x2D,0xFE,0x00,0x8D,0xF2,0x10,0x00,0x7C,0x2D,0xFE,0x00,0x8E,0xF2, +0x14,0x00,0x7C,0x2D,0xFE,0x00,0x90,0xF2,0x18,0x00,0x8C,0x2E,0x2E,0x2F,0x18,0x00, +0x2E,0x2F,0x14,0x00,0x2E,0x2F,0x10,0x00,0x2E,0x2F,0x0C,0x00,0x67,0x42,0x0D,0x2F, +0xD8,0xF5,0xFC,0xDF,0x00,0x00,0x16,0x00,0x57,0x42,0x20,0xF4,0x2E,0x30,0xFC,0xFF, +0x01,0xFC,0x56,0x4E,0x6E,0xFF,0xE7,0x48,0x1C,0x03,0x2E,0x3E,0x08,0x00,0x79,0x26, +0x00,0x00,0xA6,0xC6,0x6E,0x42,0xFE,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF, +0x0E,0x2F,0x97,0x5D,0x07,0x3F,0x2B,0x3F,0xAE,0x1F,0x0C,0xF3,0x8F,0x50,0x40,0x2A, +0x6B,0x4A,0xAE,0x1F,0x06,0x66,0x6E,0x42,0xF8,0xFF,0x5E,0x60,0xAB,0x3E,0xAE,0x1F, +0x00,0xF3,0x40,0x28,0xBC,0x2E,0x00,0x00,0x88,0x98,0x0C,0x2F,0x97,0x06,0x00,0x00, +0x1C,0x00,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x0A,0x67,0xFC,0x33,0x01,0x00,0x00,0x00, +0x90,0xC8,0x06,0x60,0x79,0x42,0x00,0x00,0x90,0xC8,0xAE,0x4A,0xFA,0xFF,0x2A,0x67, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0x6E,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0x72,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0x7C,0xFF,0x0E,0x2F,0x97,0x51,0x2C,0x2F,0x18,0x00, +0x97,0x50,0xE0,0xF5,0xFC,0xDF,0x00,0x00,0x10,0x00,0x0D,0x20,0x00,0x67,0xDC,0x00, +0x2D,0x30,0x06,0x00,0x00,0x60,0xC0,0x00,0xAE,0x2E,0xFA,0xFF,0x97,0x06,0x00,0x00, +0x12,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0x7C,0xFF,0x2E,0x3F,0xF8,0xFF,0x07,0x3F, +0x2E,0x3F,0xF6,0xFF,0x0D,0x2F,0xE4,0xF5,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x40,0x3D, +0xFE,0xFF,0x00,0x60,0xA6,0x00,0x2E,0x4A,0x7C,0xFF,0x12,0x67,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0x7C,0xFF,0x3C,0x2F,0xFE,0x00,0x92,0xF2,0x00,0xF4,0x8F,0x58,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0x7C,0xFF,0x2E,0x2F,0xFA,0xFF,0x97,0x06,0x00,0x00,0x12,0x00, +0x00,0xF4,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0x6E,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0x72,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0x7C,0xFF,0x2E,0x3F,0xF8,0xFF, +0x07,0x3F,0x0C,0x2F,0xE8,0xF5,0xFC,0xDF,0x00,0x00,0x10,0x00,0x40,0x3D,0xFE,0xFF, +0x48,0x60,0x87,0x3E,0xEC,0xF5,0x40,0x3D,0xFE,0xFF,0x3E,0x60,0x87,0x3E,0xEC,0xF5, +0x40,0x3D,0xFE,0xFF,0x34,0x60,0x8B,0x2E,0x97,0x06,0x00,0x00,0x70,0x1F,0x3C,0x2F, +0x05,0x00,0x08,0x00,0x44,0xF3,0x8F,0x58,0xAB,0x2E,0x70,0x1F,0x3C,0x3F,0x01,0x00, +0xC0,0xF4,0x8F,0x54,0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30, +0xFC,0xD1,0xFE,0x00,0x70,0xF2,0x50,0x20,0xD0,0x4E,0x2E,0x30,0xFE,0xFF,0x21,0xFE, +0x56,0x4E,0xF2,0xFF,0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x08,0x00,0x79,0x26,0x00,0x00, +0xA6,0xC6,0x6E,0x42,0xFE,0xFF,0x8E,0x2E,0x97,0x5D,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xF6,0xFF,0x07,0x3F,0x2B,0x3F,0xAE,0x1F,0x0C,0xF3,0x8F,0x50,0x40,0x2A,0x6B,0x4A, +0xAE,0x1F,0x08,0x67,0xAB,0x3E,0xAE,0x1F,0x00,0xF3,0x40,0x28,0x0D,0x20,0x00,0x67, +0xD4,0x00,0x2D,0x30,0x06,0x00,0x00,0x60,0xB2,0x00,0x6C,0x20,0x18,0x00,0x28,0x10, +0x08,0x00,0x80,0x48,0x80,0x3E,0xD4,0xF5,0x79,0x4A,0x00,0x00,0xEC,0x98,0x00,0x66, +0xB4,0x00,0xAE,0x2E,0xF6,0xFF,0x2C,0x2F,0x18,0x00,0x97,0x50,0xF0,0xF5,0x8F,0x58, +0x40,0x3D,0xFC,0xFF,0x6E,0x4A,0xFC,0xFF,0x04,0x67,0x8C,0x2E,0xBC,0xF3,0x00,0x60, +0x94,0x00,0x6C,0x20,0x18,0x00,0x28,0x10,0x08,0x00,0x80,0x48,0x80,0x3E,0xD4,0xF5, +0x79,0x4A,0x00,0x00,0xEC,0x98,0x00,0x66,0x7C,0x00,0xAE,0x2E,0xF6,0xFF,0x2C,0x2F, +0x18,0x00,0x97,0x50,0xF4,0xF5,0x8F,0x58,0x6A,0x60,0x87,0x3E,0x0B,0x2F,0x97,0x06, +0x00,0x00,0x1E,0x3E,0xEC,0xF4,0x8F,0x58,0x40,0x2D,0xF2,0xFF,0x6E,0x20,0xF2,0xFF, +0xA8,0x3E,0x0C,0x00,0x57,0x02,0xFF,0x00,0xD4,0xF5,0x79,0x4A,0x00,0x00,0xEC,0x98, +0x42,0x66,0x6E,0x20,0xF2,0xFF,0xA8,0x3E,0x0C,0x00,0x57,0x02,0xFF,0x00,0xF8,0xF5, +0x32,0x60,0x2B,0x2C,0x88,0x1F,0x57,0x42,0x06,0x2F,0x5C,0xF5,0x8F,0x58,0x46,0x20, +0xFC,0xD1,0x00,0x00,0xB2,0x00,0x50,0x42,0x1A,0x60,0x40,0x4A,0x00,0x67,0x4C,0xFF, +0x7C,0xB0,0x01,0x00,0x00,0x67,0x7C,0xFF,0x7C,0xB0,0x02,0x00,0x9C,0x67,0x7C,0xB0, +0x03,0x00,0xCE,0x67,0x2E,0x30,0xFE,0xFF,0x31,0xFE,0x56,0x4E,0xF0,0xFF,0xE7,0x48, +0x1C,0x0F,0x2E,0x3E,0x08,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6,0x46,0x42,0xCD,0x9B, +0x6B,0x4A,0xAE,0x1F,0x22,0x66,0x87,0x3E,0xFC,0xF5,0x40,0x2D,0xF6,0xFF,0x8E,0x2E, +0x97,0x55,0x2E,0x2F,0xF6,0xFF,0x07,0x3F,0x3C,0x2F,0x01,0x00,0xFF,0xFF,0xFC,0xF4, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2A,0x0D,0x20,0x00,0x67,0x9E,0x00,0x2D,0x30, +0x06,0x00,0x00,0x60,0x8E,0x00,0x87,0x3E,0x0B,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E, +0xEC,0xF4,0x8F,0x58,0x40,0x28,0x2C,0x30,0x0C,0x00,0x7C,0xC0,0xFF,0x00,0x40,0x1D, +0xF0,0xFF,0x2E,0x42,0xF1,0xFF,0xEE,0x41,0xF0,0xFF,0x48,0x2D,0xFA,0xFF,0x8E,0x2E, +0x97,0x5D,0x3C,0x2F,0x02,0x00,0x09,0x00,0x38,0xF4,0x8F,0x58,0x00,0x3A,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF1,0xFF,0x3C,0x2F,0xFE,0x00,0x94,0xF2,0x4C,0xF3,0x8F,0x58, +0x7C,0xBA,0x01,0x00,0x3A,0x66,0xBC,0x3E,0xFC,0x00,0x3C,0x3F,0x01,0x00,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x3C,0x3F,0x03,0x00,0x14,0xF5,0x8F,0x54,0x00,0x2F, +0x18,0xF5,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x00,0x3A,0x45,0x4A,0x12,0x67,0x87,0x3E, +0x2B,0x3F,0xAE,0x1F,0x3C,0x2F,0x01,0x00,0x01,0x00,0x1C,0xF5,0x8F,0x5C,0x00,0x3C, +0x08,0x60,0x7C,0xB0,0x02,0x00,0x00,0x67,0x6E,0xFF,0x06,0x30,0x39,0xFE,0x56,0x4E, +0xF8,0xFF,0xE7,0x48,0x0C,0x07,0x6E,0x2A,0x08,0x00,0x79,0x28,0x00,0x00,0xA6,0xC6, +0x46,0x42,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F, +0x97,0x55,0x3C,0x3F,0x04,0x00,0x2D,0x3F,0x06,0x00,0xDC,0xF4,0xFC,0xDF,0x00,0x00, +0x10,0x00,0x4C,0x20,0x2D,0x32,0x08,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xA8,0x3E, +0x30,0x3E,0x4C,0x20,0x2D,0x32,0x08,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x28,0x3F, +0x2E,0x3E,0x2D,0x3F,0x06,0x00,0x3C,0x3F,0x01,0x00,0x00,0xF6,0x8F,0x5C,0xAD,0x2E, +0x18,0x00,0x08,0xF5,0x8D,0x2E,0xDC,0xF5,0xB8,0xF3,0x40,0x2A,0x0D,0x20,0x08,0x67, +0x6D,0x39,0x06,0x00,0xB0,0x1F,0x04,0x60,0x6C,0x42,0xB0,0x1F,0xBC,0x3E,0x01,0x00, +0x2C,0x3F,0xB0,0x1F,0xD0,0xF4,0x8F,0x54,0x06,0x30,0x31,0xFC,0x56,0x4E,0xF0,0xFF, +0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x08,0x00,0xEE,0x47,0xF4,0xFF,0x79,0x28,0x00,0x00, +0xA6,0xC6,0x6E,0x42,0xFC,0xFF,0x8B,0x2E,0x97,0x5C,0x0B,0x2F,0x97,0x58,0x0B,0x2F, +0x97,0x54,0x0B,0x2F,0x3C,0x3F,0x04,0x00,0x2D,0x3F,0x06,0x00,0xDC,0xF4,0xFC,0xDF, +0x00,0x00,0x10,0x00,0x2B,0x30,0x04,0x00,0xC0,0x48,0xFC,0x81,0x02,0x00,0x53,0xD0, +0x2C,0x32,0x0C,0x20,0xC1,0x48,0xFC,0x83,0x02,0x00,0x41,0x90,0x40,0x3D,0xF2,0xFF, +0x2B,0x30,0x06,0x00,0xC0,0x48,0xFC,0x81,0x02,0x00,0x6B,0xD0,0x02,0x00,0x2C,0x32, +0x0E,0x20,0xC1,0x48,0xFC,0x83,0x02,0x00,0x41,0x90,0x40,0x3D,0xF0,0xFF,0xAE,0x3E, +0xF0,0xFF,0x2E,0x3F,0xF2,0xFF,0x2D,0x3F,0x06,0x00,0x67,0x42,0x00,0xF6,0x8F,0x5C, +0xAE,0x2E,0x16,0x00,0x2E,0x2F,0x12,0x00,0x2E,0x2F,0x0E,0x00,0x2E,0x3F,0x0C,0x00, +0x67,0x42,0x0D,0x2F,0xE8,0xF5,0xFC,0xDF,0x00,0x00,0x10,0x00,0x2E,0x30,0xFC,0xFF, +0x01,0xFE,0x56,0x4E,0x76,0xFF,0xE7,0x48,0x1C,0x07,0x6E,0x2A,0x08,0x00,0x2E,0x3E, +0x0C,0x00,0x46,0x42,0x97,0x42,0x3C,0x3F,0x02,0x00,0xD4,0xF2,0x8F,0x54,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0x76,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0x7A,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0x84,0xFF,0x0E,0x2F,0x97,0x55,0x2D,0x2F,0x18,0x00,0x97,0x50, +0xE0,0xF5,0xFC,0xDF,0x00,0x00,0x10,0x00,0x47,0x4A,0x04,0x67,0x2E,0x42,0x84,0xFF, +0x2E,0x4A,0x84,0xFF,0x08,0x66,0x8D,0x2E,0x04,0xF6,0x00,0x3C,0x50,0x60,0xEE,0x47, +0x84,0xFF,0x0B,0x20,0x40,0x28,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0x84,0xFF,0x0C,0xF1, +0x40,0x53,0xC0,0x48,0xC0,0xD7,0x02,0x60,0x8B,0x53,0xCC,0xB7,0x06,0x67,0x13,0x0C, +0x5C,0x00,0xF4,0x66,0x13,0x42,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0x76,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0x7A,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0x84,0xFF,0x2E,0x3F, +0xFE,0xFF,0x0D,0x2F,0x08,0xF6,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x00,0x3C,0x97,0x42, +0x67,0x42,0xD4,0xF2,0x8F,0x54,0x06,0x30,0x31,0xFE,0x56,0x4E,0xFC,0xFF,0xE7,0x48, +0x00,0x1F,0x01,0x7A,0x79,0x42,0x00,0x00,0xEC,0x98,0xBC,0x3E,0x0A,0x00,0xA0,0xF1, +0x40,0x2D,0xFC,0xFF,0x2E,0x38,0x08,0x00,0x7C,0xD8,0xBF,0xFF,0x2E,0x20,0xFC,0xFF, +0x04,0x32,0xA0,0xE2,0x40,0x2D,0xFC,0xFF,0x2E,0x20,0xFC,0xFF,0xBC,0xC0,0x00,0x00, +0x01,0x00,0x40,0x2D,0xFC,0xFF,0xAE,0x4A,0xFC,0xFF,0x12,0x66,0xBC,0x3E,0x0F,0x00, +0x24,0xF2,0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98,0x00,0x60,0xB8,0x00,0x6E,0x0C, +0x43,0x00,0x08,0x00,0x00,0x6C,0xAA,0x00,0xBC,0x2E,0x00,0x00,0x00,0x02,0x64,0xF3, +0x00,0x2E,0x87,0x4A,0x00,0x67,0x94,0x00,0x56,0x60,0xBC,0x3E,0x01,0x00,0x20,0xF4, +0xBC,0x3E,0x01,0x00,0xA7,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0x08,0x00,0x57,0x06, +0xBF,0xFF,0xA7,0x42,0x07,0x2F,0x3C,0x3F,0x08,0x00,0x80,0xF1,0xFC,0xDF,0x00,0x00, +0x12,0x00,0x00,0x3C,0x46,0x4A,0x26,0x67,0x7C,0xBC,0xF2,0xFF,0x20,0x67,0xAE,0x3E, +0x08,0x00,0x57,0x06,0xBF,0xFF,0x7C,0xBC,0xFA,0xFF,0x06,0x66,0x3C,0x3F,0x01,0x00, +0x04,0x60,0x3C,0x3F,0x02,0x00,0x0C,0xF6,0x8F,0x54,0x00,0x3A,0x02,0x60,0x45,0x42, +0x45,0x4A,0xA6,0x66,0xAE,0x3E,0x08,0x00,0x57,0x06,0xBF,0xFF,0x67,0x42,0x3C,0x3F, +0x02,0x00,0xA7,0x42,0x67,0x42,0x3C,0x3F,0x04,0x00,0xA0,0xF1,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x87,0x2E,0x78,0xF4,0x46,0x4A,0x0E,0x67,0x7C,0xBC,0xF2,0xFF,0x08,0x67, +0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98,0x06,0x60,0xBC,0x3E,0x08,0x00,0x24,0xF2, +0x57,0x42,0x20,0xF4,0x3D,0xF0,0x56,0x4E,0xFC,0xFF,0x97,0x42,0x6E,0x4A,0x08,0x00, +0x06,0x67,0x3C,0x3F,0x02,0x00,0x02,0x60,0x67,0x42,0xD4,0xF2,0x8F,0x54,0x01,0xF0, +0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00, +0x6E,0x2A,0x10,0x00,0xCC,0x99,0xCB,0x97,0x47,0x4A,0x22,0x66,0x86,0x3E,0xFC,0xF5, +0x40,0x2D,0xFC,0xFF,0x8D,0x2E,0x2E,0x2F,0xFC,0xFF,0x06,0x3F,0x3C,0x2F,0x01,0x00, +0xFF,0xFF,0xFC,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x28,0x4E,0x60,0x87,0x3E, +0x00,0xF3,0x40,0x2D,0xF8,0xFF,0x86,0x3E,0x6E,0x20,0xF8,0xFF,0x68,0x20,0x18,0x00, +0x28,0x2F,0x82,0x00,0x10,0xF6,0x8F,0x58,0x40,0x26,0x0B,0x20,0x2E,0x67,0xEB,0x41, +0x12,0x00,0x48,0x2D,0xFC,0xFF,0x8D,0x2E,0x2E,0x2F,0xFC,0xFF,0x3C,0x3F,0xFF,0xFF, +0x2B,0x08,0x04,0x00,0x09,0x00,0x06,0x67,0x3C,0x3F,0x01,0x00,0x02,0x60,0x67,0x42, +0x67,0x42,0xFC,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x28,0x6E,0x20,0x0C,0x00, +0x8B,0x20,0x0C,0x20,0x31,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0x2E,0x2E, +0x08,0x00,0x6E,0x2A,0x0C,0x00,0x2E,0x3C,0x10,0x00,0x0E,0x60,0x86,0x3E,0x1D,0x10, +0x80,0x48,0x00,0x3F,0x07,0x2F,0x14,0xF6,0x8F,0x5C,0x15,0x4A,0xEE,0x66,0x31,0xF8, +0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x04,0x1F,0x2E,0x2E,0x08,0x00,0x12,0x7C,0x0E,0x60, +0xBC,0x3E,0x01,0x00,0x06,0x3F,0x07,0x2F,0x14,0xF6,0x8F,0x5C,0x46,0x52,0x7C,0xBC, +0x28,0x00,0xEC,0x6F,0x57,0x42,0x3C,0x2F,0xFE,0x00,0x9E,0xF2,0x07,0x2F,0x18,0xF6, +0x8F,0x50,0x45,0x42,0x46,0x42,0x00,0x60,0x9C,0x00,0x8E,0x2E,0x97,0x55,0x0E,0x2F, +0x97,0x5D,0x06,0x3F,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x3F,0xAE,0x1F,0x0C,0xF3, +0x8F,0x50,0x40,0x2A,0x2D,0x30,0x06,0x00,0x58,0x60,0x6E,0x4A,0xFE,0xFF,0x08,0x67, +0x3C,0x20,0xFE,0x00,0xA4,0xF2,0x06,0x60,0x3C,0x20,0xFE,0x00,0xA8,0xF2,0x40,0x2D, +0xF6,0xFF,0x52,0x60,0x7C,0x2D,0xFE,0x00,0xAC,0xF2,0xF6,0xFF,0x48,0x60,0x7C,0x2D, +0xFE,0x00,0xD8,0xF2,0xF6,0xFF,0x3E,0x60,0x2D,0x30,0x16,0x00,0x80,0x48,0x7C,0xB0, +0x42,0x00,0x08,0x6F,0x3C,0x20,0xFE,0x00,0x9A,0xF2,0x06,0x60,0x3C,0x20,0xFE,0x00, +0xB2,0xF2,0x40,0x2D,0xF6,0xFF,0x1E,0x60,0x7C,0x2D,0xFE,0x00,0xB6,0xF2,0xF6,0xFF, +0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00, +0xE0,0xF2,0x50,0x20,0xD0,0x4E,0x57,0x42,0x2E,0x2F,0xF6,0xFF,0x07,0x2F,0x18,0xF6, +0x8F,0x50,0x45,0x52,0x86,0x3E,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x3F,0xAC,0x1F, +0x39,0x2F,0x00,0x00,0xA6,0xC6,0x97,0x06,0x00,0x00,0x1E,0x3E,0x10,0xF5,0x8F,0x5C, +0x00,0x3C,0x00,0x66,0x46,0xFF,0xB8,0xF3,0x80,0x4A,0x08,0x67,0x3C,0x20,0xFE,0x00, +0xC8,0xF2,0x06,0x60,0x3C,0x20,0xFE,0x00,0xC4,0xF2,0x40,0x2D,0xF6,0xFF,0x2E,0x20, +0xF6,0xFF,0xBC,0xB0,0xFE,0x00,0xC8,0xF2,0x04,0x67,0x57,0x42,0x04,0x60,0xBC,0x3E, +0x01,0x00,0x2E,0x2F,0xF6,0xFF,0x07,0x2F,0x18,0xF6,0x8F,0x50,0xB8,0xF3,0x40,0x2D, +0xF0,0xFF,0xAE,0x4A,0xF0,0xFF,0x34,0x67,0xBC,0x2E,0x00,0x00,0x88,0x98,0x2E,0x2F, +0xF0,0xFF,0x97,0x06,0x00,0x00,0x1C,0x00,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x06,0x67, +0x6E,0x42,0xF4,0xFF,0x06,0x60,0x7C,0x3D,0x01,0x00,0xF4,0xFF,0xAE,0x3E,0xF4,0xFF, +0x3C,0x2F,0xFE,0x00,0xDE,0xF2,0x07,0x2F,0x18,0xF6,0x8F,0x50,0x7C,0xBA,0x01,0x00, +0x22,0x67,0x45,0x4A,0x08,0x67,0x3C,0x20,0xFE,0x00,0xD2,0xF2,0x06,0x60,0x3C,0x20, +0xFE,0x00,0xBE,0xF2,0x40,0x2D,0xF6,0xFF,0x57,0x42,0x2E,0x2F,0xF6,0xFF,0x07,0x2F, +0x18,0xF6,0x8F,0x50,0x3D,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F,0x2E,0x3E, +0x08,0x00,0x46,0x42,0x7C,0xBE,0x09,0x00,0x1C,0x66,0x79,0x20,0x00,0x00,0xA6,0xC6, +0x28,0x2A,0x84,0x1F,0x57,0x42,0x05,0x2F,0x5C,0xF5,0x8F,0x58,0x45,0x20,0xFC,0xD1, +0x00,0x00,0x12,0x01,0x50,0x42,0x06,0x30,0x39,0xF0,0x56,0x4E,0xF6,0xFF,0xE7,0x48, +0x1C,0x1F,0x79,0x26,0x00,0x00,0xA6,0xC6,0x47,0x42,0xB8,0xF3,0x40,0x2A,0x57,0x42, +0x2B,0x3F,0xAC,0x1F,0x0B,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E,0x10,0xF5,0x8F,0x5C, +0x00,0x3C,0x2E,0x30,0x08,0x00,0x60,0x60,0x46,0x4A,0x06,0x67,0x86,0x3E,0x1C,0xF6, +0x00,0x3E,0x00,0x60,0x6C,0x00,0x46,0x4A,0x06,0x67,0x86,0x3E,0x20,0xF6,0x00,0x3E, +0x5E,0x60,0x0D,0x20,0x08,0x67,0x8D,0x2E,0x24,0xF6,0x57,0x42,0xF8,0xF4,0x50,0x60, +0x0D,0x20,0x0E,0x67,0xAB,0x3E,0xAE,0x1F,0xF8,0xF4,0x57,0x42,0x0D,0x2F,0x28,0xF6, +0x8F,0x58,0x3C,0x60,0x0D,0x20,0x10,0x67,0xAB,0x3E,0xAE,0x1F,0xF8,0xF4,0xBC,0x3E, +0x01,0x00,0x0D,0x2F,0x28,0xF6,0x8F,0x58,0x26,0x60,0x46,0x4A,0x06,0x67,0x86,0x3E, +0x2C,0xF6,0x00,0x3E,0x1A,0x60,0x18,0x60,0x7C,0x90,0x12,0x00,0x7C,0xB0,0x08,0x00, +0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0xF4,0xF2,0x50,0x20,0xD0,0x4E, +0x07,0x30,0x3D,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x3F,0x2E,0x3E,0x08,0x00, +0x79,0x2A,0x00,0x00,0xA6,0xC6,0x46,0x42,0x2D,0x3A,0xD2,0x19,0x2D,0x38,0xE2,0x19, +0x07,0x30,0x18,0x60,0x45,0x42,0x2C,0x60,0x01,0x7A,0x28,0x60,0x44,0x42,0x24,0x60, +0x01,0x78,0x20,0x60,0x02,0x78,0x1C,0x60,0x03,0x78,0x18,0x60,0x7C,0x90,0x1D,0x00, +0x7C,0xB0,0x06,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0x18,0xF3, +0x50,0x20,0xD0,0x4E,0x6D,0xBA,0xD2,0x19,0x06,0x66,0x6D,0xB8,0xE2,0x19,0x54,0x67, +0x6D,0xBA,0xD2,0x19,0x20,0x67,0x57,0x42,0x2D,0x3F,0xB2,0x1F,0x2D,0x2F,0x74,0x1F, +0x30,0xF6,0x8F,0x5C,0x47,0x3B,0xB2,0x1F,0xBC,0x3E,0x01,0x00,0x07,0x3F,0x2D,0x2F, +0x74,0x1F,0x30,0xF6,0x8F,0x5C,0x6D,0xB8,0xE2,0x19,0x20,0x67,0x57,0x42,0x2D,0x3F, +0xB4,0x1F,0x2D,0x2F,0x74,0x1F,0x30,0xF6,0x8F,0x5C,0x47,0x3B,0xB4,0x1F,0xBC,0x3E, +0x01,0x00,0x07,0x3F,0x2D,0x2F,0x74,0x1F,0x30,0xF6,0x8F,0x5C,0x84,0x3E,0x05,0x3F, +0x34,0xF6,0x8F,0x54,0x06,0x30,0x3F,0xF8,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x0C,0x1F, +0x79,0x28,0x00,0x00,0xA6,0xC6,0x47,0x42,0x46,0x42,0x8E,0x2E,0x97,0x51,0x0E,0x2F, +0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x2C,0x3F,0xAC,0x1F,0x0C,0x2F, +0x97,0x06,0x00,0x00,0x1E,0x3E,0xA8,0xF5,0xFC,0xDF,0x00,0x00,0x12,0x00,0x57,0x42, +0x2C,0x3F,0xAC,0x1F,0x0C,0x2F,0x97,0x06,0x00,0x00,0x1E,0x3E,0x10,0xF5,0x8F,0x5C, +0x00,0x3A,0x45,0x4A,0x1C,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x05,0x3F,0x2C,0x3F,0xAE,0x1F,0x0C,0xF3,0x8F,0x50, +0x40,0x2A,0x2E,0x30,0x08,0x00,0x00,0x60,0x08,0x01,0x0D,0x20,0x06,0x67,0x8D,0x2E, +0x38,0xF6,0x00,0x3C,0x46,0x4A,0x36,0x67,0x3C,0xF6,0x8E,0x2E,0x97,0x51,0x0E,0x2F, +0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00,0x67,0x42, +0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF, +0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x67,0x42,0xD0,0xF2,0x8F,0x50,0x00,0x60, +0xD8,0x00,0x0D,0x20,0x18,0x67,0x6E,0x4A,0xF2,0xFF,0x12,0x67,0x8D,0x2E,0x2E,0x2F, +0xF4,0xFF,0x97,0x06,0x00,0x00,0x12,0x00,0x40,0xF6,0x8F,0x58,0x00,0x3C,0x46,0x4A, +0x0E,0x67,0xBC,0x3E,0x01,0x00,0x20,0xF4,0x44,0xF6,0x48,0xF6,0x57,0x42,0x20,0xF4, +0x00,0x60,0xA6,0x00,0x4C,0xF6,0x00,0x3E,0x00,0x60,0x9E,0x00,0xBC,0x2E,0xFE,0x00, +0xBA,0xF1,0x3C,0x3F,0x01,0x00,0xC0,0xF4,0x8F,0x54,0x7C,0xB0,0x01,0x00,0x12,0x66, +0xBC,0x3E,0x01,0x00,0x20,0xF4,0x50,0xF6,0xBC,0x3E,0x01,0x00,0x54,0xF6,0x57,0x42, +0x20,0xF4,0x00,0x60,0x74,0x00,0xBC,0x2E,0xFE,0x00,0xE0,0xF1,0x3C,0x3F,0x01,0x00, +0xC0,0xF4,0x8F,0x54,0x7C,0xB0,0x01,0x00,0x0C,0x66,0xBC,0x3E,0x01,0x00,0x20,0xF4, +0x58,0xF6,0x57,0x42,0x20,0xF4,0x50,0x60,0x6C,0x4A,0xBA,0x1F,0x04,0x67,0x57,0x42, +0x04,0x60,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x40,0x00,0x80,0xF1,0x8F,0x54,0x6C,0x4A, +0xBA,0x1F,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x39,0xBA,0x1F,0xAC,0x3E, +0xBA,0x1F,0x3C,0x3F,0x2C,0x00,0x2C,0x2F,0x74,0x1F,0x30,0xF6,0x8F,0x5C,0x18,0x60, +0x7C,0x90,0x25,0x00,0x7C,0xB0,0x07,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1, +0xFE,0x00,0x34,0xF3,0x50,0x20,0xD0,0x4E,0x07,0x30,0x3D,0xFC,0x56,0x4E,0xF2,0xFF, +0xE7,0x48,0x1C,0x1F,0x79,0x28,0x00,0x00,0xA6,0xC6,0xEE,0x47,0xF4,0xFF,0x6E,0x42, +0xFE,0xFF,0x2E,0x2F,0x0A,0x00,0xFC,0xF2,0x8F,0x58,0x00,0x3E,0x6C,0xBE,0xAE,0x1F, +0x06,0x67,0xAC,0x3E,0xAE,0x1F,0xF8,0xF4,0x57,0x42,0x07,0x3F,0xD0,0xF4,0x8F,0x54, +0x47,0x39,0xB0,0x1F,0x8B,0x2E,0x97,0x5C,0x0B,0x2F,0x97,0x58,0x0B,0x2F,0x97,0x54, +0x0B,0x2F,0x3C,0x3F,0x04,0x00,0x07,0x3F,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x6E,0x0C,0x01,0x00,0x08,0x00,0x00,0x66,0x9A,0x00,0x57,0x42,0x0B,0x2F,0x2E,0x3F, +0x10,0x00,0x2E,0x2F,0x0A,0x00,0x2C,0x3F,0xAC,0x1F,0x2C,0x2F,0x82,0x37,0x2C,0x3F, +0xAE,0x1F,0x5C,0xF6,0xFC,0xDF,0x00,0x00,0x12,0x00,0x8E,0x2E,0x97,0x59,0x0E,0x2F, +0x97,0x06,0x00,0x00,0x0E,0x00,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x59,0xF0,0xF2, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x2E,0x08,0x00,0x00,0x0F,0x00,0x52,0x67,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0B,0x2F,0x2E,0x3F,0x10,0x00,0x2E,0x2F,0x0A,0x00, +0x2C,0x3F,0xAC,0x1F,0x2C,0x2F,0x82,0x37,0x2C,0x3F,0xAE,0x1F,0x60,0xF6,0xFC,0xDF, +0x00,0x00,0x12,0x00,0x00,0x38,0x7C,0xB8,0xFF,0xFF,0x24,0x67,0x44,0x4A,0x0C,0x67, +0x84,0x3E,0x00,0xF3,0x40,0x2A,0x2D,0x3C,0x0A,0x00,0x02,0x60,0x01,0x7C,0xAE,0x3E, +0xF2,0xFF,0x06,0x3F,0x04,0x3F,0x07,0x3F,0x64,0xF6,0x8F,0x5C,0x40,0x3D,0xFE,0xFF, +0x32,0x60,0xBC,0x3E,0x01,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x2E,0x3F, +0x10,0x00,0x2E,0x2F,0x0A,0x00,0x2C,0x3F,0xAC,0x1F,0x2C,0x2F,0x82,0x37,0x2C,0x3F, +0xAE,0x1F,0x5C,0xF6,0xFC,0xDF,0x00,0x00,0x12,0x00,0xBC,0x3E,0x12,0x00,0x68,0xF6, +0x40,0x3D,0xFE,0xFF,0xAC,0x2E,0x74,0x1F,0x6C,0xF6,0x2E,0x30,0xFE,0xFF,0x3D,0xFE, +0x56,0x4E,0xF6,0xFF,0x6E,0x42,0xFE,0xFF,0x6E,0x0C,0x1B,0x01,0x08,0x00,0x12,0x66, +0xB8,0xF3,0x40,0x2D,0xFA,0xFF,0xAE,0x4A,0xFA,0xFF,0x06,0x67,0xAE,0x2E,0xFA,0xFF, +0xBC,0xF3,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F, +0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x45,0x42, +0x07,0x30,0x30,0x60,0x86,0x3E,0x70,0xF6,0x00,0x3A,0x40,0x60,0x86,0x3E,0x68,0xF6, +0x00,0x3A,0x38,0x60,0x86,0x3E,0x74,0xF6,0x00,0x3A,0xBC,0x3E,0x01,0x00,0x20,0xF4, +0x78,0xF6,0x44,0xF6,0x48,0xF6,0x57,0x42,0x20,0xF4,0x20,0x60,0x86,0x3E,0x7C,0xF6, +0x00,0x3A,0x18,0x60,0x7C,0xB0,0x03,0x00,0xCA,0x67,0x7C,0xB0,0x04,0x00,0xCC,0x67, +0x7C,0xB0,0x05,0x00,0xCE,0x67,0x7C,0xB0,0x06,0x00,0xE0,0x67,0xBC,0x3E,0x01,0x00, +0x07,0x3F,0x2D,0x2F,0x74,0x1F,0x80,0xF6,0x8F,0x5C,0x05,0x30,0x39,0xF8,0x56,0x4E, +0xF8,0xFF,0xE7,0x48,0x0C,0x1F,0x79,0x28,0x00,0x00,0xA6,0xC6,0x44,0x42,0x04,0x3E, +0x2C,0x30,0xF4,0x1D,0x08,0x60,0xAC,0x3E,0xAE,0x1F,0xF8,0xF4,0x18,0x60,0x7C,0x90, +0x14,0x00,0x7C,0xB0,0x08,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00, +0x54,0xF3,0x50,0x20,0xD0,0x4E,0x2C,0x30,0xF4,0x1D,0x00,0x60,0x88,0x01,0x57,0x42, +0x2C,0x3F,0xB0,0x1F,0xD0,0xF4,0x8F,0x54,0x2C,0x2F,0xFA,0x1D,0x84,0xF6,0x8F,0x58, +0x00,0x3E,0x00,0x60,0x88,0x01,0x6C,0x4A,0xFA,0x1D,0x10,0x67,0xAC,0x3E,0x02,0x1E, +0x2C,0x2F,0xFE,0x1D,0x2C,0x2F,0xFA,0x1D,0xD0,0xF2,0x8F,0x50,0x00,0x60,0x6E,0x01, +0xA7,0x42,0xA7,0x42,0x3C,0x3F,0x0A,0x00,0x2C,0x3F,0xFA,0x1D,0xD8,0xF4,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59, +0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00,0x2C,0x3F,0xFA,0x1D,0xDC,0xF4,0xFC,0xDF, +0x00,0x00,0x10,0x00,0xAC,0x3E,0xFA,0x1D,0x00,0xF3,0x40,0x2A,0x8D,0x2E,0xC4,0xF5, +0x57,0x42,0x2D,0x3F,0x06,0x00,0xD0,0xF4,0x8F,0x54,0x6D,0x39,0x06,0x00,0xB0,0x1F, +0x00,0x60,0x1A,0x01,0xBC,0x3E,0x16,0x00,0x68,0xF6,0x01,0x78,0x00,0x60,0x0E,0x01, +0xAC,0x3E,0xFA,0x1D,0x88,0xF6,0xBC,0x3E,0x01,0x00,0x2C,0x3F,0xFA,0x1D,0xD0,0xF4, +0x8F,0x54,0x01,0x78,0x00,0x60,0xF6,0x00,0x2C,0x2F,0xFA,0x1D,0x8C,0xF6,0x8F,0x58, +0x00,0x60,0xEA,0x00,0x57,0x42,0x2C,0x2F,0xFA,0x1D,0x90,0xF6,0x8F,0x58,0x00,0x60, +0xDC,0x00,0xBC,0x3E,0x01,0x00,0x2C,0x2F,0xFA,0x1D,0x90,0xF6,0x8F,0x58,0x00,0x60, +0xCC,0x00,0x6C,0x3D,0xFC,0x1D,0xFE,0xFF,0x6C,0x3D,0xFE,0x1D,0xFC,0xFF,0x8E,0x2E, +0x97,0x59,0x0E,0x2F,0x97,0x55,0xA4,0xF5,0x8F,0x58,0x6C,0x3D,0x00,0x1E,0xFA,0xFF, +0x6C,0x3D,0x02,0x1E,0xF8,0xFF,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F, +0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x3C,0x3F,0x05,0x00,0x2C,0x3F,0xFA,0x1D,0xD8,0xF4, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6C,0x0C,0x1B,0x00,0xF4,0x1D,0x0E,0x66,0xBC,0x3E, +0x01,0x00,0x2C,0x3F,0xFA,0x1D,0xD0,0xF4,0x8F,0x54,0x54,0x60,0x8E,0x2E,0x97,0x51, +0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00, +0x2C,0x3F,0xFA,0x1D,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAC,0x3E,0xFA,0x1D, +0x00,0xF3,0x40,0x2A,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF, +0x2E,0x3F,0xFE,0xFF,0x0C,0x20,0x2D,0x32,0x0A,0x00,0xFC,0xC3,0x18,0x00,0x81,0xD0, +0x00,0x2F,0x97,0x06,0x00,0x00,0x2E,0x3E,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00, +0x01,0x78,0x18,0x60,0x7C,0x90,0x0A,0x00,0x7C,0xB0,0x12,0x00,0x0E,0x62,0x40,0xE5, +0x40,0x30,0xFC,0xD1,0xFE,0x00,0x78,0xF3,0x50,0x20,0xD0,0x4E,0x44,0x4A,0x02,0x67, +0x50,0xF6,0x6C,0x42,0xF4,0x1D,0xAC,0x2E,0x74,0x1F,0x6C,0xF6,0x07,0x30,0x3D,0xFC, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x07,0x79,0x26,0x00,0x00,0xA6,0xC6,0x2B,0x30, +0xB2,0x1F,0x7C,0xD0,0xE3,0xFF,0x40,0x37,0x50,0x35,0x2B,0x30,0xB4,0x1F,0x7C,0xD0, +0xE0,0xFF,0x40,0x37,0x4E,0x35,0x6B,0x37,0xB6,0x1F,0x52,0x35,0x6B,0x37,0xB8,0x1F, +0x54,0x35,0x6B,0x37,0xBA,0x1F,0x56,0x35,0x39,0x30,0x00,0x00,0x08,0x89,0x40,0x53, +0x40,0x37,0x58,0x35,0x46,0x42,0x47,0x42,0x6E,0x60,0x87,0x3E,0x57,0x52,0xC8,0xF4, +0x40,0x28,0x6C,0x4A,0x06,0x00,0x5E,0x67,0x4B,0x2A,0x06,0x30,0xFC,0xC1,0x88,0x00, +0xC0,0xDB,0xFC,0xDB,0x00,0x00,0x5A,0x35,0x46,0x52,0x8D,0x2E,0x97,0x5C,0x0D,0x2F, +0x97,0x58,0x0D,0x2F,0x97,0x54,0x0D,0x2F,0x3C,0x3F,0x05,0x00,0x2C,0x3F,0x06,0x00, +0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x8D,0x2E,0x97,0x54,0x0D,0x2F,0xA4,0xF5, +0x8F,0x58,0x6C,0x3B,0x0C,0x00,0x08,0x00,0x6C,0x3B,0x0E,0x00,0x0A,0x00,0x6C,0x3B, +0x08,0x00,0x0C,0x00,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0E,0x00,0x2C,0x2F,0x18,0x00, +0x97,0x50,0x4C,0xF3,0x8F,0x58,0x47,0x52,0x7C,0xBE,0x04,0x00,0x8C,0x6D,0x1A,0x60, +0x4B,0x2A,0x06,0x30,0xFC,0xC1,0x88,0x00,0xC0,0xDB,0xFC,0xDB,0x00,0x00,0x5A,0x35, +0x2D,0x42,0x0E,0x00,0x6D,0x42,0x0C,0x00,0x46,0x52,0x7C,0xBC,0x04,0x00,0xE0,0x6D, +0x31,0xFE,0x56,0x4E,0xF2,0xFF,0xE7,0x48,0x1C,0x03,0x79,0x26,0x00,0x00,0xA6,0xC6, +0xAB,0x3E,0x50,0x35,0x57,0x06,0x1D,0x00,0x74,0xF6,0xAB,0x3E,0x4E,0x35,0x57,0x06, +0x20,0x00,0x74,0xF6,0x6B,0x37,0x52,0x35,0xB6,0x1F,0x6B,0x37,0x54,0x35,0xB8,0x1F, +0x6B,0x37,0x56,0x35,0xBA,0x1F,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x03,0x00,0x94,0xF6, +0x8F,0x54,0x2B,0x30,0x58,0x35,0x40,0x52,0xC0,0x33,0x00,0x00,0x0C,0x89,0x47,0x42, +0x00,0x60,0xBA,0x00,0x4B,0x2A,0x07,0x30,0xFC,0xC1,0x88,0x00,0xC0,0xDB,0xFC,0xDB, +0x00,0x00,0x5A,0x35,0x2D,0x4A,0x0E,0x00,0x00,0x67,0xA0,0x00,0xAD,0x3E,0x0C,0x00, +0xD0,0xF5,0x40,0x28,0x0C,0x20,0x00,0x67,0x92,0x00,0x6D,0x39,0x08,0x00,0x0C,0x00, +0x6D,0x39,0x0A,0x00,0x0E,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x0B,0x2F,0x97,0x06,0x00,0x00,0x84,0x1C,0x0E,0x2F, +0x97,0x55,0x0D,0x2F,0x97,0x06,0x00,0x00,0x0E,0x00,0xE0,0xF5,0xFC,0xDF,0x00,0x00, +0x10,0x00,0x8D,0x2E,0x97,0x54,0x0D,0x2F,0xA4,0xF5,0x8F,0x58,0x8B,0x2E,0x97,0x06, +0x00,0x00,0x84,0x1C,0x2E,0x3F,0xFE,0xFF,0xC8,0xF5,0x8F,0x54,0x79,0x4A,0x00,0x00, +0xEC,0x98,0x32,0x66,0x8D,0x2E,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x0B,0x2F,0x97,0x06,0x00,0x00,0x84,0x1C,0x2E,0x3F, +0xFE,0xFF,0x2D,0x3F,0x0C,0x00,0x3C,0x3F,0x01,0x00,0x0C,0x2F,0xD8,0xF5,0xFC,0xDF, +0x00,0x00,0x16,0x00,0x04,0x60,0x8C,0x2E,0xDC,0xF5,0x47,0x52,0x7C,0xBE,0x04,0x00, +0x00,0x6D,0x42,0xFF,0x50,0xF6,0x21,0xFE,0x56,0x4E,0xB8,0xFF,0xE7,0x48,0x04,0x3F, +0x79,0x2A,0x00,0x00,0xA6,0xC6,0x98,0xF6,0x00,0x3E,0xBC,0x3E,0x01,0x00,0x9C,0xF6, +0x8D,0x2E,0x97,0x06,0x00,0x00,0x0E,0x1E,0x0D,0x2F,0x97,0x06,0x00,0x00,0x0C,0x1E, +0x0D,0x2F,0x97,0x06,0x00,0x00,0x0A,0x1E,0x0D,0x2F,0x97,0x06,0x00,0x00,0x08,0x1E, +0x3C,0x3F,0x04,0x00,0x67,0x42,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x8D,0x2E, +0x97,0x06,0x00,0x00,0x16,0x1E,0x0D,0x2F,0x97,0x06,0x00,0x00,0x14,0x1E,0x0D,0x2F, +0x97,0x06,0x00,0x00,0x12,0x1E,0x0D,0x2F,0x97,0x06,0x00,0x00,0x10,0x1E,0x2D,0x2F, +0x0C,0x1E,0x2D,0x2F,0x08,0x1E,0x3C,0x2F,0x01,0x00,0xFF,0xFF,0xA0,0xF6,0xFC,0xDF, +0x00,0x00,0x18,0x00,0xED,0x41,0x18,0x1E,0x48,0x2B,0x98,0x1E,0xED,0x41,0x9C,0x1E, +0x48,0x2B,0x1C,0x1F,0xED,0x41,0x20,0x1F,0x48,0x2B,0x44,0x1F,0xED,0x41,0x48,0x1F, +0x48,0x2B,0x6C,0x1F,0xED,0x41,0xF4,0x1D,0x48,0x2B,0x04,0x1E,0xBC,0x3E,0x01,0x00, +0x20,0xF4,0xA4,0xF6,0x46,0x42,0x1A,0x60,0x86,0x3E,0x0D,0x20,0x06,0x32,0x41,0xE5, +0xC1,0x48,0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x74,0x1F,0xA8,0xF6,0x8F,0x58, +0x46,0x52,0x7C,0xBC,0x0E,0x00,0xE0,0x6D,0xAC,0xF6,0x40,0x4A,0x08,0x66,0xB0,0xF6, +0x40,0x42,0x00,0x60,0x70,0x02,0xB4,0xF6,0xB8,0xF6,0xA7,0x42,0xD0,0xF4,0x8F,0x58, +0xBC,0x3E,0x01,0x00,0x2D,0x2F,0x74,0x1F,0xBC,0xF6,0x8F,0x58,0xAD,0x2E,0x74,0x1F, +0x6C,0xF6,0x46,0x42,0x14,0x60,0x57,0x42,0x67,0x42,0x06,0x3F,0x57,0x06,0x1D,0x00, +0x2D,0x2F,0x74,0x1F,0x14,0xF2,0x8F,0x50,0x46,0x52,0x7C,0xBC,0x07,0x00,0xE6,0x6D, +0x57,0x42,0x3C,0x2F,0x1F,0x00,0x08,0x00,0x2D,0x2F,0x74,0x1F,0x14,0xF2,0x8F,0x50, +0x74,0xF3,0x40,0x4A,0x10,0x66,0x57,0x42,0x3C,0x2F,0x29,0x00,0x08,0x00,0x2D,0x2F, +0x74,0x1F,0x14,0xF2,0x8F,0x50,0x7C,0x3B,0x1D,0x00,0xB2,0x1F,0xBC,0x3E,0x01,0x00, +0x2D,0x3F,0xB2,0x1F,0x2D,0x2F,0x74,0x1F,0x30,0xF6,0x8F,0x5C,0x7C,0x3B,0x20,0x00, +0xB4,0x1F,0xBC,0x3E,0x01,0x00,0x2D,0x3F,0xB4,0x1F,0x2D,0x2F,0x74,0x1F,0x30,0xF6, +0x8F,0x5C,0x7C,0x3B,0x01,0x00,0xB6,0x1F,0x7C,0x3B,0x01,0x00,0xB8,0x1F,0x3C,0xF6, +0xAD,0x3E,0x0E,0x1E,0x2D,0x2F,0x0A,0x1E,0x2D,0x3F,0x08,0x1E,0x67,0x42,0xD0,0xF2, +0x8F,0x50,0x57,0x42,0x3C,0x3F,0x01,0x00,0x2D,0x2F,0x82,0x37,0x3C,0x3F,0x0E,0x00, +0x67,0x42,0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00,0xA7,0x42,0xD0,0xF4,0x8F,0x58, +0x6D,0x42,0xB0,0x1F,0xC0,0xF6,0x6D,0x2D,0x74,0x1F,0xFA,0xFF,0xBC,0x3E,0xFF,0xFF, +0x3C,0x3F,0x40,0x00,0x80,0xF1,0x8F,0x54,0x00,0x3A,0x05,0x08,0x01,0x00,0x54,0x67, +0x6E,0x20,0xFA,0xFF,0xFC,0xD1,0x00,0x00,0x64,0x03,0xBC,0x30,0x2C,0x00,0x6E,0x20, +0xFA,0xFF,0xFC,0xD1,0x00,0x00,0xF0,0x03,0xBC,0x30,0x2B,0x00,0x39,0x30,0x00,0x00, +0x72,0xC6,0x40,0xE7,0x6E,0x22,0xFA,0xFF,0xFC,0xD3,0x00,0x00,0x76,0x03,0x80,0x32, +0x6D,0x3B,0x56,0x35,0xBA,0x1F,0xAD,0x3E,0xBA,0x1F,0x3C,0x3F,0x2C,0x00,0x2D,0x2F, +0x74,0x1F,0x30,0xF6,0x8F,0x5C,0xAD,0x3E,0xBA,0x1F,0x3C,0x3F,0x40,0x00,0x80,0xF1, +0x8F,0x54,0x32,0x60,0x6E,0x20,0xFA,0xFF,0xFC,0xD1,0x00,0x00,0x64,0x03,0xBC,0x30, +0x2A,0x00,0x6E,0x20,0xFA,0xFF,0xFC,0xD1,0x00,0x00,0xF0,0x03,0xBC,0x30,0x24,0x00, +0x39,0x30,0x00,0x00,0x72,0xC6,0xFC,0xC1,0x06,0x00,0x6E,0x22,0xFA,0xFF,0xFC,0xD3, +0x00,0x00,0x76,0x03,0x80,0x32,0x57,0x42,0x9C,0xF6,0x13,0x78,0x45,0x42,0x57,0x42, +0x20,0xF4,0x00,0x60,0x9E,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x0E,0x2F, +0x97,0x51,0xA7,0x42,0x2D,0x2F,0x04,0x1E,0xA7,0x42,0xA7,0x42,0xA7,0x42,0xA7,0x42, +0xA7,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x3C,0x3F,0x02,0x00,0x04,0x3F,0xC8,0xF2, +0xFC,0xDF,0x00,0x00,0x38,0x00,0x40,0x3D,0xFE,0xFF,0xBC,0x3E,0x01,0x00,0x9C,0xF6, +0x2E,0x08,0x04,0x00,0xFF,0xFF,0x04,0x67,0x58,0xF5,0x00,0x3A,0x2E,0x08,0x00,0x00, +0xFF,0xFF,0x08,0x67,0xAE,0x3E,0xF0,0xFF,0xC4,0xF6,0x00,0x3A,0x2E,0x08,0x01,0x00, +0xFF,0xFF,0x1A,0x67,0xAE,0x3E,0xF2,0xFF,0x2E,0x3F,0xF4,0xFF,0x2E,0x3F,0xF6,0xFF, +0x2E,0x3F,0xF8,0xFF,0x2E,0x3F,0xEE,0xFF,0xC8,0xF6,0x8F,0x50,0x00,0x3A,0x57,0x42, +0x9C,0xF6,0x45,0x4A,0x00,0x67,0x60,0xFF,0x50,0xF6,0x57,0x42,0x54,0xF6,0x57,0x42, +0xA7,0x42,0xBC,0xF6,0x8F,0x58,0xB0,0xF6,0x00,0x3E,0x79,0x4A,0x00,0x00,0x0A,0x89, +0x30,0x67,0xC8,0xF3,0x74,0xF3,0x40,0x4A,0x22,0x67,0xC0,0xF3,0x80,0x3E,0x57,0x06, +0x41,0x00,0xD4,0xF5,0x79,0x4A,0x00,0x00,0xEC,0x98,0x08,0x67,0x79,0x42,0x00,0x00, +0x92,0x89,0x08,0x60,0xFC,0x33,0x01,0x00,0x00,0x00,0x92,0x89,0x40,0x42,0x04,0x60, +0x02,0x60,0x01,0x70,0x3F,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x2A, +0x00,0x00,0xA6,0xC6,0x6E,0x3B,0x08,0x00,0xD2,0x19,0x6E,0x3B,0x0A,0x00,0xE2,0x19, +0x2E,0x30,0x08,0x00,0x00,0x60,0x8C,0x00,0x79,0x0C,0x40,0x01,0x00,0x00,0x0A,0x98, +0x04,0x66,0x2B,0x70,0x02,0x60,0x2D,0x70,0xF9,0xC1,0x00,0x00,0x32,0xC8,0x40,0x3B, +0xD4,0x19,0x79,0x3B,0x00,0x00,0x72,0xC6,0xD6,0x19,0x79,0x0C,0x40,0x01,0x00,0x00, +0x0A,0x98,0x04,0x66,0x40,0x42,0x0A,0x60,0x39,0x30,0x00,0x00,0x32,0xC8,0x40,0xE3, +0x40,0x53,0x40,0x3B,0xD8,0x19,0x7C,0x3B,0x02,0x00,0xDA,0x19,0x6D,0x3B,0xC2,0x1F, +0xCC,0x19,0xED,0x41,0xE8,0x1F,0x48,0x2B,0xCE,0x19,0x42,0x60,0x6D,0x3B,0x0C,0x20, +0xD4,0x19,0x6D,0x3B,0x0E,0x20,0xD6,0x19,0x79,0x0C,0x2C,0x01,0x00,0x00,0x8E,0xC7, +0x04,0x6E,0x40,0x42,0x02,0x60,0x08,0x70,0x40,0x3B,0xD8,0x19,0x7C,0x3B,0x02,0x00, +0xDA,0x19,0x6D,0x3B,0xC0,0x1F,0xCC,0x19,0xED,0x41,0xC4,0x1F,0x48,0x2B,0xCE,0x19, +0x0C,0x60,0x40,0x4A,0xC6,0x67,0x7C,0xB0,0x01,0x00,0x00,0x67,0x6C,0xFF,0x2D,0x30, +0xD4,0x19,0x6D,0xD0,0xD8,0x19,0x40,0x3B,0xDC,0x19,0x2D,0x30,0xD6,0x19,0x6D,0xD0, +0xDA,0x19,0x40,0x3B,0xDE,0x19,0x2D,0x30,0x14,0x1E,0xC0,0x48,0xED,0x81,0xDC,0x19, +0x40,0x3B,0xE0,0x19,0x06,0x66,0x7C,0x3B,0x01,0x00,0xE0,0x19,0x01,0xF8,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x04,0x03,0xCC,0xF6,0xA7,0x42,0x34,0xF6,0x8F,0x58,0x47,0x42, +0x18,0x60,0x07,0x30,0xFC,0xC1,0xE6,0x00,0x40,0x2A,0xF9,0xDB,0x00,0x00,0x5E,0xC8, +0x6D,0x42,0x08,0x00,0x6D,0x42,0x06,0x00,0x47,0x52,0x7C,0xBE,0x04,0x00,0xE2,0x6D, +0x79,0x20,0x00,0x00,0xA6,0xC6,0x68,0x42,0xCA,0x03,0x21,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x03,0x79,0x26,0x00,0x00,0xA6,0xC6,0x6B,0x0C,0x04,0x00,0xCA,0x03, +0x06,0x66,0x80,0x42,0x00,0x60,0x9E,0x00,0x4B,0x28,0x2B,0x30,0xCA,0x03,0xFC,0xC1, +0x88,0x00,0xC0,0xD9,0xFC,0xD9,0x00,0x00,0x5A,0x35,0x6B,0x52,0xCA,0x03,0x2C,0x2F, +0x04,0x00,0x14,0x2F,0xD0,0xF6,0x8F,0x50,0x00,0x3E,0x47,0x4A,0x74,0x67,0x07,0x30, +0x40,0x55,0xFC,0xC1,0xE6,0x00,0x40,0x2A,0xF9,0xDB,0x00,0x00,0x5E,0xC8,0x6D,0x42, +0x04,0x00,0x6E,0x3B,0x08,0x00,0x08,0x00,0x47,0x3B,0x0A,0x00,0x6D,0x42,0x0C,0x00, +0x6D,0x42,0x0E,0x00,0x2C,0x30,0x04,0x00,0xC0,0x48,0xEB,0x81,0xDC,0x19,0x40,0x3B, +0x10,0x00,0x2C,0x30,0x06,0x00,0xC0,0x48,0xEB,0x81,0xDE,0x19,0x40,0x3B,0x12,0x00, +0x6D,0x42,0x14,0x00,0x6D,0x42,0x16,0x00,0xAB,0x3E,0x0E,0x1E,0x2B,0x2F,0x0A,0x1E, +0x2B,0x3F,0x08,0x1E,0x3C,0x3F,0xFF,0xFF,0xD4,0xF6,0x8F,0x50,0x40,0x3B,0x06,0x00, +0x6D,0x0C,0xFF,0xFF,0x06,0x00,0x06,0x67,0x0D,0x20,0x08,0x60,0x04,0x60,0x8D,0x2E, +0xDC,0xF5,0x80,0x42,0x21,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A, +0x08,0x00,0x6D,0x0C,0xFF,0xFF,0x06,0x00,0x06,0x67,0xAD,0x3E,0x06,0x00,0xD8,0xF6, +0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x30,0xCA,0x03,0x79,0x22,0x00,0x00,0xA6,0xC6, +0x69,0x53,0xCA,0x03,0x6D,0x42,0x06,0x00,0x6D,0x42,0x08,0x00,0xBC,0x3E,0x01,0x00, +0x2D,0x3F,0x0A,0x00,0x79,0x20,0x00,0x00,0xA6,0xC6,0x28,0x2F,0x82,0x37,0xDC,0xF6, +0x8F,0x5C,0x57,0x42,0xA7,0x42,0x67,0x42,0x2D,0x3F,0x0A,0x00,0xD4,0xF3,0x8F,0x50, +0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x47,0x42,0x26,0x60,0x79,0x20, +0x00,0x00,0x5E,0xC8,0x07,0x32,0xFC,0xC3,0xE6,0x00,0x30,0x30,0x06,0x18,0x6E,0xB0, +0x08,0x00,0x0E,0x66,0x07,0x30,0xFC,0xC1,0xE6,0x00,0xB9,0xD0,0x00,0x00,0x5E,0xC8, +0x0A,0x60,0x47,0x52,0x7C,0xBE,0x04,0x00,0xD4,0x6D,0x80,0x42,0x21,0xF0,0x56,0x4E, +0xFA,0xFF,0xBC,0x3E,0xFF,0xFF,0x6E,0x20,0x08,0x00,0x28,0x3F,0x0A,0x00,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x28,0x2F,0x82,0x37,0xDC,0xF6,0x8F,0x5C,0xAE,0x2E,0x08,0x00, +0x97,0x06,0x00,0x00,0x1C,0x00,0x3C,0x2F,0xFE,0x00,0xB0,0xF1,0x28,0xF4,0x8F,0x58, +0x40,0x4A,0x1A,0x66,0xAE,0x2E,0x08,0x00,0x97,0x06,0x00,0x00,0x20,0x00,0x6E,0x20, +0x08,0x00,0x28,0x10,0x1D,0x00,0x80,0x48,0x00,0x3F,0xC8,0xF5,0x8F,0x54,0x01,0xF0, +0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x2D,0x3E, +0x22,0x3E,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x4A,0x32,0x3E, +0x5C,0x67,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x4A,0x34,0x3E, +0x4C,0x67,0x07,0x30,0x40,0x55,0xFC,0xC1,0xE6,0x00,0xB9,0xD0,0x00,0x00,0x5E,0xC8, +0x40,0x2D,0xFC,0xFF,0xAE,0x2E,0xFC,0xFF,0x97,0x06,0x00,0x00,0x1C,0x00,0x3C,0x2F, +0xFE,0x00,0xB0,0xF1,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x1A,0x66,0xAE,0x2E,0xFC,0xFF, +0x97,0x06,0x00,0x00,0x20,0x00,0x6E,0x20,0xFC,0xFF,0x28,0x10,0x1D,0x00,0x80,0x48, +0x00,0x3F,0xC8,0xF5,0x8F,0x54,0x2E,0x20,0xFC,0xFF,0x04,0x60,0x02,0x60,0x80,0x42, +0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0x2E,0x3E,0x08,0x00,0x79,0x2A, +0x00,0x00,0xA6,0xC6,0x2D,0x3C,0x20,0x3E,0x0E,0x60,0x4D,0x20,0x06,0x32,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x28,0x3C,0x1E,0x3E,0x07,0x30,0x47,0x53,0x40,0x4A,0xEA,0x66, +0x06,0x30,0x40,0x55,0x31,0xF8,0x56,0x4E,0xFC,0xFF,0xAE,0x3E,0x08,0x00,0xE0,0xF6, +0xFC,0xC1,0xE6,0x00,0xB9,0xD0,0x00,0x00,0x5E,0xC8,0x01,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x0F,0x6E,0x2A,0x08,0x00,0x79,0x26,0x00,0x00,0xA6,0xC6,0x46,0x42, +0x6D,0x20,0x18,0x00,0x68,0x28,0x82,0x00,0x0A,0x60,0x7C,0x39,0xFF,0xFF,0x20,0x00, +0x46,0x52,0x54,0x28,0x0C,0x20,0xF2,0x66,0x6B,0xBC,0xE0,0x19,0x04,0x6C,0x06,0x30, +0x04,0x60,0x2B,0x30,0xE0,0x19,0x40,0x3B,0x14,0x00,0x06,0x30,0xC0,0x48,0xEB,0x81, +0xE0,0x19,0x40,0x3B,0x16,0x00,0x06,0x30,0xC0,0x48,0xEB,0x81,0xE0,0x19,0x40,0x48, +0x40,0x4A,0x04,0x67,0x6D,0x52,0x16,0x00,0x6D,0x4A,0x16,0x00,0x04,0x66,0x6D,0x52, +0x16,0x00,0x6D,0x4A,0x14,0x00,0x04,0x66,0x6D,0x52,0x14,0x00,0x6E,0x4A,0x0C,0x00, +0x04,0x66,0x6E,0x52,0x0C,0x00,0xAD,0x3E,0x14,0x00,0x2E,0x3F,0x0C,0x00,0x6C,0xF3, +0x8F,0x54,0x40,0x3B,0x10,0x00,0x00,0x3A,0x04,0x60,0x6D,0x53,0x0C,0x00,0x2D,0x30, +0x14,0x00,0x6D,0x90,0x0C,0x00,0x40,0xBA,0xF0,0x6E,0x6E,0x4A,0x0E,0x00,0x04,0x66, +0x6E,0x52,0x0E,0x00,0xAD,0x3E,0x16,0x00,0x2E,0x3F,0x0E,0x00,0x6C,0xF3,0x8F,0x54, +0x40,0x3B,0x12,0x00,0x00,0x3A,0x04,0x60,0x6D,0x53,0x0E,0x00,0x2D,0x30,0x16,0x00, +0x6D,0x90,0x0E,0x00,0x40,0xBA,0xF0,0x6E,0x2D,0x3E,0x0E,0x00,0xEB,0xCF,0xE0,0x19, +0x6D,0xDE,0x0C,0x00,0x6D,0x20,0x18,0x00,0x68,0x28,0x82,0x00,0x02,0x60,0x54,0x28, +0x07,0x30,0x47,0x53,0x40,0x4A,0x04,0x67,0x0C,0x20,0xF2,0x66,0x6E,0x20,0x10,0x00, +0x8C,0x20,0x39,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00, +0x2D,0x08,0x04,0x00,0x09,0x00,0x26,0x67,0x8D,0x2E,0x97,0x06,0x00,0x00,0x26,0x00, +0x0D,0x2F,0x97,0x06,0x00,0x00,0x12,0x00,0x3C,0x2F,0x01,0x00,0xFF,0xFF,0x67,0x42, +0xFC,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2B,0x22,0x00,0x22,0x60,0x8D,0x2E, +0x97,0x06,0x00,0x00,0x26,0x00,0x0D,0x2F,0x97,0x06,0x00,0x00,0x12,0x00,0x3C,0x3F, +0xFF,0xFF,0xA7,0x42,0xFC,0xF4,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x40,0x2B,0x22,0x00, +0x01,0xF8,0x56,0x4E,0xE6,0xFF,0xE7,0x48,0x0C,0x0F,0x6E,0x2A,0x08,0x00,0x79,0x28, +0x00,0x00,0xA6,0xC6,0xAE,0x3E,0x12,0x00,0x2E,0x2F,0x0E,0x00,0x2E,0x3F,0x0C,0x00, +0x2D,0x3F,0x0A,0x00,0xD4,0xF3,0x8F,0x50,0x8E,0x2E,0x97,0x59,0x2E,0x30,0x12,0x00, +0xC0,0x48,0xEC,0x81,0xDE,0x19,0x00,0x3F,0x2E,0x30,0x10,0x00,0xC0,0x48,0xEC,0x81, +0xDC,0x19,0x00,0x3F,0x0D,0x2F,0xE4,0xF6,0x8F,0x50,0xAD,0x3E,0x14,0x00,0x2D,0x30, +0x0C,0x00,0x57,0x91,0x2D,0x3F,0x10,0x00,0x57,0x52,0x6C,0xF3,0x8F,0x54,0x40,0x3D, +0xF6,0xFF,0xAD,0x3E,0x16,0x00,0x2D,0x30,0x0E,0x00,0x57,0x91,0x2D,0x3F,0x12,0x00, +0x57,0x52,0x6C,0xF3,0x8F,0x54,0x40,0x3D,0xF4,0xFF,0x40,0x42,0x40,0x3D,0xF8,0xFF, +0x40,0x3D,0xFA,0xFF,0x00,0x60,0xD0,0x01,0x2C,0x30,0xDE,0x19,0xEE,0xC1,0xFA,0xFF, +0x40,0x3D,0xEA,0xFF,0x2C,0x30,0xDC,0x19,0xEE,0xC1,0xF8,0xFF,0x40,0x3D,0xEC,0xFF, +0xAC,0x3E,0xD6,0x19,0x2C,0x3F,0xD4,0x19,0x2C,0x3F,0xDA,0x19,0x2E,0x30,0xEA,0xFF, +0x57,0xD1,0x2C,0x3F,0xD8,0x19,0x2E,0x30,0xEC,0xFF,0x57,0xD1,0x2D,0x3F,0x0A,0x00, +0xD8,0xF3,0x8F,0x50,0x00,0x3E,0x47,0x4A,0x6E,0x20,0xFC,0xFF,0x47,0x31,0x20,0x00, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x7C,0x31,0x40,0x00,0x28,0x3E, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x68,0x42,0x26,0x3E,0x2C,0x30, +0xD2,0x19,0x00,0x60,0x16,0x01,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x7C,0x31,0x18,0x00,0x24,0x3E,0x0C,0x20,0x07,0x32,0x41,0xE7,0xC1,0x48,0x81,0xD0, +0xBC,0xD0,0x00,0x00,0xCC,0x15,0x4C,0x22,0x07,0x34,0xFC,0xC5,0x18,0x00,0xC2,0xD3, +0x40,0x23,0x2A,0x3E,0x4C,0x20,0x07,0x32,0x41,0xE7,0xC1,0x48,0xC1,0xD1,0x79,0x21, +0x00,0x00,0x32,0x8C,0xCC,0x15,0x2E,0x20,0xFC,0xFF,0xBC,0xD0,0x00,0x00,0x09,0x00, +0x4C,0x22,0x07,0x34,0x42,0xE7,0xC2,0x48,0xC2,0xD3,0x40,0x23,0xD0,0x15,0xAE,0x2E, +0xFC,0xFF,0xE8,0xF6,0x00,0x60,0xC2,0x00,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0x7C,0x31,0x1F,0x00,0x24,0x3E,0xAE,0x2E,0xFC,0xFF,0xE8,0xF6,0x6E,0x20, +0xFC,0xFF,0x68,0x4A,0x26,0x00,0x0E,0x67,0x6E,0x20,0xFC,0xFF,0x68,0x20,0x22,0x00, +0x28,0x30,0x12,0x00,0x0C,0x60,0x6E,0x20,0xFC,0xFF,0x68,0x20,0x22,0x00,0x28,0x30, +0x14,0x00,0x40,0x3D,0xF2,0xFF,0x4C,0x20,0x47,0x32,0xC9,0xD3,0xC9,0xD1,0x6E,0x31, +0xF2,0xFF,0xCC,0x14,0x0C,0x20,0x07,0x32,0xFC,0xC3,0x22,0x00,0x81,0xD0,0xBC,0xD0, +0x00,0x00,0xCC,0x03,0x4C,0x22,0x07,0x34,0xFC,0xC5,0x18,0x00,0xC2,0xD3,0x40,0x23, +0x2A,0x3E,0x0C,0x20,0x07,0x32,0xFC,0xC3,0x22,0x00,0x81,0xD0,0x80,0x2E,0x97,0x06, +0x00,0x00,0xCC,0x03,0x0C,0x20,0x2E,0x32,0xF2,0xFF,0xFC,0xC3,0x22,0x00,0x81,0xD0, +0x00,0x2F,0x97,0x06,0x00,0x00,0x6A,0x34,0x3C,0x3F,0x22,0x00,0x5C,0xF3,0x8F,0x5C, +0x2E,0x20,0xFC,0xFF,0xBC,0xD0,0x00,0x00,0x12,0x00,0x4C,0x22,0x07,0x34,0xFC,0xC5, +0x22,0x00,0xC2,0xD3,0x40,0x23,0xD4,0x03,0x0E,0x60,0x40,0x4A,0x00,0x67,0x4A,0xFF, +0x7C,0xB0,0x01,0x00,0x00,0x67,0xE0,0xFE,0x6E,0x20,0xFC,0xFF,0x50,0x2D,0xFC,0xFF, +0x6E,0x52,0xF8,0xFF,0x2E,0x30,0xF8,0xFF,0x6E,0xB0,0xF6,0xFF,0x28,0x66,0x6E,0x52, +0xFA,0xFF,0x6E,0x42,0xF8,0xFF,0x2D,0x3C,0x14,0x00,0x6E,0x9C,0xF6,0xFF,0x08,0x60, +0x6E,0x20,0xFC,0xFF,0x50,0x2D,0xFC,0xFF,0x06,0x30,0x46,0x53,0x40,0x4A,0x06,0x67, +0xAE,0x4A,0xFC,0xFF,0xEA,0x66,0x2E,0x30,0xF8,0xFF,0x6E,0xB0,0xF6,0xFF,0x12,0x6C, +0x2E,0x30,0xFA,0xFF,0x6E,0xB0,0xF4,0xFF,0x08,0x6C,0xAE,0x4A,0xFC,0xFF,0x00,0x66, +0x18,0xFE,0x6D,0x3D,0x06,0x00,0xE8,0xFF,0xAD,0x3E,0x14,0x00,0x3C,0x3F,0xE8,0x03, +0x2D,0x3F,0x10,0x00,0xF4,0xF0,0x8F,0x58,0x40,0x3D,0xE6,0xFF,0xA7,0x42,0x67,0x42, +0x2E,0x3F,0xE6,0xFF,0x3C,0x3F,0x0F,0x00,0x2E,0x3F,0xE8,0xFF,0xD8,0xF4,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xE6,0xFF,0x3C,0x3F,0x0F,0x00,0x2E,0x3F,0xE8,0xFF,0xDC,0xF4,0xFC,0xDF, +0x00,0x00,0x10,0x00,0x2D,0x30,0x14,0x00,0x6D,0xB0,0x10,0x00,0x1A,0x6F,0xAD,0x3E, +0x14,0x00,0x2D,0x30,0x10,0x00,0x57,0x91,0x3C,0x3F,0xE8,0x03,0x2D,0x3F,0x0C,0x00, +0xF4,0xF0,0x8F,0x58,0x00,0x3A,0x02,0x60,0x45,0x42,0xA7,0x42,0x67,0x42,0x05,0x3F, +0x3C,0x3F,0x08,0x00,0x2E,0x3F,0xE8,0xFF,0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0xAD,0x3E,0x16,0x00,0x3C,0x3F,0xE8,0x03,0x2D,0x3F,0x12,0x00,0xF4,0xF0,0x8F,0x58, +0x40,0x3D,0xE6,0xFF,0xA7,0x42,0x67,0x42,0x2E,0x3F,0xE6,0xFF,0x3C,0x3F,0x10,0x00, +0x2E,0x3F,0xE8,0xFF,0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x3C,0x3F,0x10,0x00, +0x2E,0x3F,0xE8,0xFF,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x2D,0x30,0x16,0x00, +0x6D,0xB0,0x12,0x00,0x1A,0x6F,0xAD,0x3E,0x16,0x00,0x2D,0x30,0x12,0x00,0x57,0x91, +0x3C,0x3F,0xE8,0x03,0x2D,0x3F,0x0E,0x00,0xF4,0xF0,0x8F,0x58,0x00,0x3A,0x02,0x60, +0x45,0x42,0xA7,0x42,0x67,0x42,0x05,0x3F,0x3C,0x3F,0x09,0x00,0x2E,0x3F,0xE8,0xFF, +0xD8,0xF4,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x39,0xFC,0x56,0x4E,0xE2,0xFF,0xE7,0x48, +0x0C,0x1F,0x6E,0x2A,0x08,0x00,0x2E,0x3E,0x0E,0x00,0xEE,0x49,0xEA,0xFF,0x87,0x3E, +0x67,0x42,0x60,0xF3,0x8F,0x54,0x00,0x3E,0x6E,0x4A,0x0C,0x00,0x24,0x67,0x87,0x3E, +0x2D,0x3F,0x16,0x00,0x2D,0x30,0x12,0x00,0x57,0x91,0x6C,0xF3,0x8F,0x54,0x00,0x3E, +0x6D,0x3D,0x12,0x00,0xFE,0xFF,0x07,0x3C,0x6D,0x9C,0x0E,0x00,0x6D,0xDD,0x0E,0x00, +0x22,0x60,0x87,0x3E,0x2D,0x3F,0x14,0x00,0x2D,0x30,0x10,0x00,0x57,0x91,0x6C,0xF3, +0x8F,0x54,0x00,0x3E,0x6D,0x3D,0x10,0x00,0xFE,0xFF,0x07,0x3C,0x6D,0x9C,0x0C,0x00, +0x6D,0xDD,0x0C,0x00,0x46,0x4A,0x06,0x66,0x40,0x42,0x00,0x60,0x80,0x01,0x8C,0x2E, +0x97,0x5C,0x0C,0x2F,0x97,0x58,0x0C,0x2F,0x97,0x54,0x0C,0x2F,0x3C,0x3F,0x04,0x00, +0x2D,0x3F,0x06,0x00,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0x2C,0x2F,0x04,0x00, +0x14,0x2F,0x0D,0x2F,0xA0,0xF5,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xE2,0xFF,0x0C,0x2F,0x10,0xF1,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xE2,0xFF,0x3C,0x2F,0x00,0x00,0xAC,0x98,0x10,0xF3,0x8F,0x58,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xE2,0xFF,0x0C,0x2F,0xBC,0xF5,0x8F,0x58,0x40,0x4A,0x00,0x67,0x0C,0x01, +0x46,0x4A,0x04,0x6D,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xF4,0xFF,0x06,0x67, +0x06,0x30,0x40,0x44,0x00,0x3C,0x6E,0xBC,0xFE,0xFF,0x00,0x6C,0xEE,0x00,0x6E,0x4A, +0x0C,0x00,0x2E,0x67,0x40,0x42,0x40,0x3D,0xFC,0xFF,0x00,0x3A,0x06,0x38,0x79,0x20, +0x00,0x00,0xA6,0xC6,0x04,0x30,0xE8,0xC1,0xDE,0x19,0x00,0x38,0x6E,0x42,0xFA,0xFF, +0x6C,0x3D,0x04,0x00,0xF8,0xFF,0x2C,0x30,0x06,0x00,0x44,0x90,0x40,0x3D,0xF6,0xFF, +0x2C,0x60,0x06,0x3A,0x79,0x20,0x00,0x00,0xA6,0xC6,0x05,0x30,0xE8,0xC1,0xDC,0x19, +0x00,0x3A,0x6E,0x42,0xFC,0xFF,0x40,0x42,0x40,0x3D,0xFA,0xFF,0x00,0x38,0x2C,0x30, +0x04,0x00,0x45,0x90,0x40,0x3D,0xF8,0xFF,0x6C,0x3D,0x06,0x00,0xF6,0xFF,0x6E,0x4A, +0xF4,0xFF,0x1C,0x67,0x45,0x3D,0xF2,0xFF,0x2E,0x3A,0xFC,0xFF,0x6E,0x3D,0xF2,0xFF, +0xFC,0xFF,0x44,0x3D,0xF2,0xFF,0x2E,0x38,0xFA,0xFF,0x6E,0x3D,0xF2,0xFF,0xFA,0xFF, +0x8C,0x2E,0xFC,0xF1,0xAE,0x3E,0xF6,0xFF,0x2E,0x3F,0xF8,0xFF,0x2C,0x3F,0x02,0x00, +0x2E,0x30,0xFA,0xFF,0x57,0xD1,0x14,0x3F,0x2E,0x30,0xFC,0xFF,0x57,0xD1,0x04,0x3F, +0x2C,0x30,0x02,0x00,0x57,0xD1,0x05,0x3F,0x14,0x30,0x57,0xD1,0x3C,0x3F,0x03,0x00, +0xEC,0xF6,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x6E,0x4A,0x0C,0x00,0x18,0x67,0x6E,0x4A, +0xF4,0xFF,0x08,0x66,0x2E,0x30,0xF6,0xFF,0x6C,0xD1,0x02,0x00,0x2E,0x30,0xF6,0xFF, +0x6C,0x91,0x06,0x00,0x14,0x60,0x6E,0x4A,0xF4,0xFF,0x06,0x66,0x2E,0x30,0xF8,0xFF, +0x54,0xD1,0x2E,0x30,0xF8,0xFF,0x6C,0x91,0x04,0x00,0xAC,0x3E,0x06,0x00,0x2C,0x2F, +0x02,0x00,0x14,0x3F,0x2D,0x3F,0x06,0x00,0xD0,0xF2,0x8F,0x50,0x3D,0xFC,0x56,0x4E, +0xF0,0xFF,0xE7,0x48,0x04,0x01,0xAE,0x3E,0x08,0x00,0x00,0xF3,0x40,0x2A,0x6E,0x4A, +0x0C,0x00,0x14,0x67,0x6D,0x3D,0x16,0x00,0xF8,0xFF,0x6D,0x3D,0x12,0x00,0xF6,0xFF, +0x7C,0x3D,0x10,0x00,0xF2,0xFF,0x12,0x60,0x6D,0x3D,0x14,0x00,0xF8,0xFF,0x6D,0x3D, +0x10,0x00,0xF6,0xFF,0x7C,0x3D,0x0F,0x00,0xF2,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xF4,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x2E,0x3F,0xF2,0xFF,0x2E,0x3F, +0x08,0x00,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0xBC,0x3E,0xE8,0x03,0x2E,0x3F, +0xF8,0xFF,0x2E,0x30,0xF6,0xFF,0x57,0x91,0x2E,0x3F,0x0A,0x00,0xF4,0xF0,0x8F,0x58, +0x40,0x3D,0xFC,0xFF,0xAE,0x3E,0xFC,0xFF,0x2E,0x3F,0x0C,0x00,0x0D,0x2F,0xF0,0xF6, +0x8F,0x5C,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0xAE,0x3E,0x08,0x00, +0x00,0xF3,0x40,0x2A,0x01,0x7E,0x2E,0x30,0x0A,0x00,0x50,0x60,0x2D,0x3C,0x0E,0x00, +0x6D,0x9C,0x12,0x00,0x5A,0x60,0x2D,0x3C,0x0E,0x00,0x6D,0xDC,0x12,0x00,0x50,0x60, +0x2D,0x3C,0x0E,0x00,0x46,0x53,0x48,0x60,0x2D,0x3C,0x0E,0x00,0x46,0x52,0x40,0x60, +0x2D,0x3C,0x0C,0x00,0x6D,0x9C,0x10,0x00,0x47,0x42,0x34,0x60,0x2D,0x3C,0x0C,0x00, +0x6D,0xDC,0x10,0x00,0x47,0x42,0x28,0x60,0x2D,0x3C,0x0C,0x00,0x46,0x53,0x47,0x42, +0x1E,0x60,0x2D,0x3C,0x0C,0x00,0x46,0x52,0x47,0x42,0x14,0x60,0x7C,0xB0,0x07,0x00, +0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0xC4,0xF3,0x50,0x20,0xD0,0x4E, +0x86,0x3E,0x07,0x3F,0x0D,0x2F,0xF0,0xF6,0x8F,0x5C,0x31,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x03,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x47,0x42,0x48,0x60,0x07,0x30, +0xFC,0xC1,0xE6,0x00,0xB9,0xD0,0x00,0x00,0x5E,0xC8,0x40,0x20,0x68,0x4A,0x06,0x00, +0x32,0x67,0x79,0x20,0x00,0x00,0x5E,0xC8,0x07,0x32,0xFC,0xC3,0xE6,0x00,0x70,0x20, +0x18,0x18,0xA8,0x2E,0x82,0x00,0x3C,0x3F,0xFF,0xFF,0xBC,0xF4,0x8F,0x54,0x00,0x2F, +0x79,0x20,0x00,0x00,0x5E,0xC8,0x07,0x32,0xFC,0xC3,0xE6,0x00,0x70,0x20,0x18,0x18, +0x5F,0x21,0x82,0x00,0x47,0x52,0x7C,0xBE,0x04,0x00,0xB2,0x6D,0x21,0xF8,0x56,0x4E, +0xF8,0xFF,0xE7,0x48,0x04,0x07,0x79,0x2A,0x00,0x00,0xA6,0xC6,0x47,0x42,0x5C,0x60, +0x07,0x30,0xFC,0xC1,0xE6,0x00,0xB9,0xD0,0x00,0x00,0x5E,0xC8,0x40,0x20,0x28,0x3C, +0x06,0x00,0x46,0x4A,0x44,0x67,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F, +0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00,0x06,0x3F,0xDC,0xF4,0xFC,0xDF, +0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF, +0x2E,0x3F,0xFE,0xFF,0x07,0x30,0xFC,0xC1,0xE6,0x00,0xB9,0xD0,0x00,0x00,0x5E,0xC8, +0x00,0x2F,0xA0,0xF5,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x47,0x52,0x7C,0xBE,0x04,0x00, +0x9E,0x6D,0x31,0xF8,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x04,0x03,0x04,0x7E,0x54,0x60, +0x87,0x3E,0xC8,0xF4,0x40,0x2A,0x6D,0x4A,0x06,0x00,0x46,0x67,0x8E,0x2E,0x97,0x51, +0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x04,0x00, +0x2D,0x3F,0x06,0x00,0xDC,0xF4,0xFC,0xDF,0x00,0x00,0x10,0x00,0xAE,0x3E,0xF8,0xFF, +0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x2D,0x3F,0x06,0x00, +0x39,0x3F,0x00,0x00,0x90,0xC7,0x3C,0x3F,0x14,0x00,0xE0,0xF4,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x47,0x53,0x47,0x4A,0xA8,0x66,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x00,0x07,0x2E,0x3E,0x0C,0x00,0x2E,0x3C,0x0E,0x00,0x46,0x4A,0x12,0x66,0x07,0x30, +0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x28,0x3C,0x02,0x00,0x0E,0x60, +0x06,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x10,0x3C,0x26,0x60, +0x06,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x28,0x08,0x00,0x00, +0x0B,0x00,0x04,0x67,0x06,0x30,0x14,0x60,0x06,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0, +0x08,0x00,0x40,0x20,0x10,0x3C,0x47,0xBC,0xD6,0x6E,0x40,0x42,0x31,0xF0,0x56,0x4E, +0xF4,0xFF,0x2E,0x30,0x08,0x00,0xFC,0xC1,0x18,0x00,0xB9,0xD0,0x00,0x00,0xA6,0xC6, +0x40,0x20,0x68,0x2D,0x2A,0x3E,0xFC,0xFF,0x6E,0x20,0xFC,0xFF,0x68,0x2D,0x08,0x00, +0xF8,0xFF,0x2E,0x20,0xF8,0xFF,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x0C,0x01, +0x6E,0x2A,0x08,0x00,0x79,0x28,0x00,0x00,0xA6,0xC6,0x6D,0x20,0x18,0x00,0x68,0x2D, +0x88,0x00,0xFA,0xFF,0x6D,0x20,0x18,0x00,0x68,0x3D,0x86,0x00,0xFE,0xFF,0x8C,0x2E, +0x97,0x06,0x00,0x00,0x70,0x1F,0x67,0x42,0x3C,0x3F,0x05,0x00,0x44,0xF3,0x8F,0x58, +0xAC,0x2E,0x70,0x1F,0x39,0x2F,0x00,0x00,0x2E,0xC8,0x38,0xF1,0x8F,0x58,0x8E,0x2E, +0x97,0x5D,0x39,0x2F,0x00,0x00,0x2E,0xC8,0x0D,0x2F,0x97,0x06,0x00,0x00,0x95,0x00, +0x50,0xF4,0x8F,0x50,0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A, +0x08,0x00,0x6D,0x28,0x18,0x00,0x8C,0x50,0xED,0x47,0x1C,0x00,0xFC,0x16,0x20,0x00, +0x02,0x60,0xDC,0x16,0x14,0x4A,0x06,0x67,0x14,0x0C,0x2A,0x00,0xF4,0x66,0xFC,0x16, +0x20,0x00,0x13,0x42,0x01,0xFE,0x39,0x4A,0x00,0x00,0x7E,0xC6,0x02,0x67,0x75,0x4E, +0xE7,0x40,0x08,0x2F,0xF9,0x4E,0xFE,0x00,0x08,0x4A,0xF9,0x40,0x00,0x00,0x96,0x89, +0x7C,0x00,0x00,0x07,0x75,0x4E,0xF9,0x46,0x00,0x00,0x96,0x89,0x75,0x4E,0x7C,0x00, +0x00,0x07,0x75,0x4E,0x7C,0x02,0xFF,0xF8,0x75,0x4E,0xF9,0x40,0x00,0x00,0x96,0x89, +0x7C,0x00,0x00,0x07,0x79,0x20,0x00,0x00,0x94,0xC7,0x68,0x20,0x18,0x00,0x28,0x2F, +0x08,0x00,0x39,0x3F,0x00,0x00,0x96,0x89,0x57,0x0A,0x00,0x20,0x73,0x4E,0xF9,0x40, +0x00,0x00,0x94,0x89,0x7C,0x00,0x00,0x07,0x39,0x4A,0x00,0x00,0x7E,0xC6,0x06,0x67, +0x5E,0x4E,0x5F,0x20,0x73,0x4E,0x56,0x4E,0x00,0x00,0x39,0x52,0x00,0x00,0x7E,0xC6, +0x6E,0x2C,0x08,0x00,0xEE,0x4D,0x3A,0x00,0xE6,0x48,0xFC,0xFF,0x57,0x2A,0x55,0x2D, +0x38,0x00,0x6D,0x2D,0x04,0x00,0x20,0x00,0xED,0x4B,0x08,0x00,0x4D,0x2D,0x3C,0x00, +0x6D,0x4E,0x4D,0x2D,0x40,0x00,0x4F,0x2C,0x5E,0x4E,0x57,0x20,0xF9,0x4F,0x00,0x00, +0x1A,0x8C,0xF9,0x46,0x00,0x00,0x94,0x89,0xD0,0x4E,0xF9,0x40,0x00,0x00,0x94,0x89, +0x7C,0x00,0x00,0x07,0x8F,0x58,0x57,0x2E,0x8F,0x54,0xDF,0x4C,0xFF,0x3F,0x6F,0x2C, +0x08,0x00,0x66,0x4E,0x5F,0x2C,0x57,0x2E,0x39,0x42,0x00,0x00,0x7E,0xC6,0xB9,0x3E, +0x00,0x00,0x94,0x89,0x73,0x4E,0x6F,0x20,0x04,0x00,0xD0,0x08,0x07,0x00,0x06,0x67, +0x3C,0x30,0xFF,0x00,0x75,0x4E,0x40,0x42,0x75,0x4E,0x6F,0x22,0x04,0x00,0xBC,0x32, +0x01,0x00,0x75,0x4E,0xF9,0x40,0x00,0x00,0x98,0x89,0x7C,0x00,0x00,0x07,0x6F,0x20, +0x04,0x00,0x2F,0x20,0x08,0x00,0x68,0x22,0x08,0x00,0x69,0x24,0x3E,0x00,0x00,0x25, +0x3C,0x35,0x00,0x20,0x4A,0x23,0x3E,0x00,0xF9,0x46,0x00,0x00,0x98,0x89,0x75,0x4E, +0x00,0x61,0x5A,0x02,0x00,0x3F,0x00,0x61,0x64,0x02,0x4F,0x54,0x75,0x4E,0x00,0x00, +0xF9,0x4E,0xFE,0x00,0xA8,0x38,0xA7,0x42,0x7A,0x48,0xF4,0xFF,0x2F,0x2F,0x0E,0x00, +0x3C,0x2F,0x4B,0x00,0x03,0x00,0xE8,0x61,0xFC,0xDE,0x10,0x00,0x2C,0x66,0x6F,0x20, +0x0A,0x00,0x80,0x20,0x40,0x20,0x3C,0x20,0x00,0x00,0x00,0x01,0xA8,0xD0,0x0C,0x00, +0xA8,0xD0,0x14,0x00,0xA8,0xD0,0x1C,0x00,0x00,0x2F,0x08,0x2F,0x3C,0x2F,0x4A,0x00, +0x00,0x00,0xBC,0x61,0xFC,0xDE,0x0C,0x00,0x08,0x67,0xFF,0x70,0x75,0x4E,0x00,0x70, +0x75,0x4E,0x01,0x70,0x75,0x4E,0x3C,0x3F,0x07,0x00,0x3C,0x2F,0x03,0x00,0x02,0x00, +0x4D,0x4E,0x4F,0x5C,0x75,0x4E,0x2F,0x3F,0x08,0x00,0x2F,0x2F,0x06,0x00,0x3C,0x3F, +0x4E,0x00,0x8C,0x61,0x4F,0x50,0x40,0x4A,0xD8,0x67,0x7C,0xB0,0xCF,0xFF,0x06,0x67, +0x7C,0xB0,0xDF,0xFF,0x08,0x66,0xFC,0x33,0x12,0x00,0x00,0x00,0x18,0xC9,0xBE,0x60, +0x3C,0x3F,0x4F,0x00,0x00,0x61,0x6A,0xFF,0x4F,0x54,0xDA,0x60,0x2F,0x3F,0x08,0x00, +0x2F,0x2F,0x06,0x00,0x3C,0x3F,0x3D,0x00,0x00,0x61,0x56,0xFF,0x4F,0x50,0x7C,0xB0, +0xDF,0xFF,0x08,0x66,0xFC,0x33,0x02,0x00,0x00,0x00,0x18,0xC9,0x41,0x4A,0x8E,0x66, +0x75,0x4E,0x3F,0x72,0x02,0x60,0x40,0x72,0x2F,0x2F,0x08,0x00,0x00,0x70,0x2F,0x30, +0x0A,0x00,0x00,0x2F,0x2F,0x3F,0x0C,0x00,0x01,0x3F,0x00,0x61,0x24,0xFF,0xFC,0xDE, +0x0C,0x00,0x75,0x4E,0x2F,0x2F,0x04,0x00,0x2F,0x2F,0x0C,0x00,0x3C,0x3F,0x42,0x00, +0x00,0x61,0x0E,0xFF,0xFC,0xDE,0x0A,0x00,0x75,0x4E,0x2F,0x3F,0x04,0x00,0x2F,0x2F, +0x08,0x00,0x3C,0x3F,0x47,0x00,0x00,0x61,0xF8,0xFE,0x4F,0x50,0x75,0x4E,0x2F,0x2F, +0x04,0x00,0x3C,0x3F,0x39,0x00,0x00,0x61,0xE8,0xFE,0x4F,0x5C,0x7C,0xB0,0xDC,0xFF, +0x08,0x66,0xFC,0x33,0x05,0x00,0x00,0x00,0x18,0xC9,0x01,0x30,0x40,0x0A,0x01,0x00, +0x75,0x4E,0x3C,0x3F,0x01,0x00,0x2F,0x3F,0x06,0x00,0x6F,0x48,0x0A,0x00,0x3C,0x3F, +0x57,0x00,0x00,0x61,0xBC,0xFE,0xFC,0xDE,0x0A,0x00,0x75,0x4E,0x56,0x4E,0xCC,0xFF, +0x6E,0x48,0xD4,0xFF,0x3C,0x3F,0x1A,0x00,0x41,0x4E,0x4F,0x5C,0xEE,0x41,0xCC,0xFF, +0x2E,0x10,0x09,0x00,0x3C,0xD0,0x40,0x00,0xC0,0x10,0xFA,0x43,0x42,0x00,0xD9,0x10, +0xFC,0x66,0x3C,0x3F,0x08,0x00,0x6E,0x48,0xCC,0xFF,0x3C,0x3F,0x4E,0x00,0x00,0x61, +0x80,0xFE,0x4F,0x50,0x40,0x4A,0x12,0x66,0xEE,0x43,0xF2,0xFF,0x6E,0x20,0x0A,0x00, +0xD9,0x10,0xFC,0x66,0x5E,0x4E,0x00,0x60,0xBA,0xFE,0x01,0x70,0xC0,0x33,0x00,0x00, +0xEC,0x98,0xC0,0x33,0x00,0x00,0x18,0xC9,0x5E,0x4E,0x00,0x60,0xA2,0xFE,0x5C,0x3A, +0x2E,0x2A,0x00,0x2A,0x56,0x4E,0xF0,0xFF,0x2E,0x3F,0x08,0x00,0x6E,0x48,0xF0,0xFF, +0x3C,0x3F,0x36,0x00,0x41,0x4E,0x4F,0x50,0x2E,0x30,0xFE,0xFF,0xEE,0xC0,0xFA,0xFF, +0x00,0x32,0xEE,0x4C,0x00,0x03,0x0A,0x00,0xEE,0xC0,0xF6,0xFF,0x80,0x20,0xEE,0xC2, +0xF2,0xFF,0x81,0x22,0x01,0x70,0x5E,0x4E,0x75,0x4E,0xDF,0x23,0x00,0x00,0x1E,0x8C, +0x3C,0x2F,0x56,0x00,0x00,0x00,0x00,0x61,0x08,0xFE,0x4F,0x58,0x79,0x20,0x00,0x00, +0x1E,0x8C,0xD0,0x4E,0x2F,0x20,0x04,0x00,0x00,0x08,0x00,0x00,0x02,0x67,0x80,0x52, +0x00,0x2F,0x3C,0x3F,0x48,0x00,0x41,0x4E,0x4F,0x5C,0x80,0x4A,0x0A,0x66,0xFC,0x33, +0x01,0x00,0x00,0x00,0xEC,0x98,0x75,0x4E,0x00,0x08,0x00,0x00,0x02,0x67,0x80,0x52, +0x75,0x4E,0xFF,0x70,0x00,0x2F,0x3C,0x3F,0x48,0x00,0x41,0x4E,0x4F,0x5C,0x75,0x4E, +0x02,0x72,0x2E,0x60,0x06,0x72,0x2A,0x60,0x05,0x72,0x26,0x60,0x19,0x72,0x22,0x60, +0x1A,0x72,0x1E,0x60,0x3E,0x72,0x1A,0x60,0x3B,0x72,0x16,0x60,0x0E,0x72,0x12,0x60, +0x43,0x72,0x0E,0x60,0x41,0x72,0x0A,0x60,0x3A,0x72,0x06,0x60,0x3C,0x72,0x02,0x60, +0x49,0x72,0xDF,0x23,0x00,0x00,0x1E,0x8C,0x01,0x3F,0x00,0x61,0x84,0xFD,0x4F,0x54, +0x79,0x20,0x00,0x00,0x1E,0x8C,0xD0,0x4E,0xDF,0x23,0x00,0x00,0x22,0x8C,0x41,0x4E, +0x00,0x72,0xC0,0x33,0x00,0x00,0x18,0xC9,0x80,0x4A,0x02,0x6C,0x01,0x72,0xC1,0x33, +0x00,0x00,0xEC,0x98,0x79,0x20,0x00,0x00,0x22,0x8C,0xD0,0x4E,0xF9,0x23,0x00,0x00, +0x2A,0x8C,0x00,0x00,0x88,0x00,0x75,0x4E,0xF9,0x23,0x00,0x00,0x88,0x00,0x00,0x00, +0x2A,0x8C,0xFC,0x23,0xFE,0x00,0x10,0x3B,0x00,0x00,0x88,0x00,0x75,0x4E,0xFC,0x23, +0xFE,0x00,0x10,0x3B,0x00,0x00,0x88,0x00,0x3C,0x20,0xFE,0x00,0x28,0x39,0x00,0x2F, +0x3C,0x3F,0x01,0x01,0x3C,0x3F,0x05,0x00,0x4D,0x4E,0x4F,0x50,0x75,0x4E,0x39,0x20, +0x00,0x00,0x26,0x8C,0xE8,0x60,0xFF,0x70,0xE4,0x61,0xC0,0x23,0x00,0x00,0x26,0x8C, +0x3C,0x20,0xFE,0x00,0x28,0x39,0xD6,0x60,0x2F,0x30,0x04,0x00,0x2F,0x32,0x06,0x00, +0xB9,0x4E,0xFE,0x00,0xFA,0x34,0xCF,0x23,0x00,0x00,0x42,0x8C,0x7C,0x2E,0x00,0x00, +0x46,0x94,0xB9,0x4E,0xFE,0x00,0x06,0x35,0xE7,0x48,0x1E,0x1F,0x7C,0x22,0xFE,0x00, +0xE4,0xF3,0x00,0x3F,0x06,0x66,0x7C,0x30,0x00,0x00,0x0E,0x60,0x40,0x46,0x40,0x30, +0x7C,0xB0,0x11,0x00,0x04,0x6F,0x7C,0x30,0x00,0x00,0x30,0x10,0x00,0x98,0x01,0x3F, +0x00,0x3F,0xB9,0x4E,0xFE,0x00,0xF6,0x72,0x8F,0x58,0x1F,0x32,0xC1,0x48,0x7C,0xB0, +0x00,0x00,0x06,0x67,0x3C,0x22,0x01,0x00,0x00,0x00,0x01,0x20,0xDF,0x4C,0xF8,0x78, +0x79,0x2E,0x00,0x00,0x42,0x8C,0x75,0x4E,0xB9,0x4E,0xFE,0x00,0xFA,0x34,0x79,0x20, +0x00,0x00,0x94,0xC7,0x68,0x20,0x08,0x00,0xE8,0x23,0x3E,0x00,0x00,0x00,0x2E,0x8C, +0x4F,0x22,0xFC,0x93,0x00,0x00,0x40,0x00,0x49,0x21,0x3E,0x00,0xB9,0x4E,0xFE,0x00, +0x06,0x35,0x4F,0x22,0x3C,0x2F,0x00,0x00,0x00,0x00,0x29,0x2F,0x0A,0x00,0x29,0x2F, +0x04,0x00,0x29,0x3F,0x08,0x00,0x3C,0x3F,0x4B,0x00,0x41,0x4E,0xFC,0xDF,0x00,0x00, +0x10,0x00,0xB9,0x4E,0xFE,0x00,0xFA,0x34,0x79,0x20,0x00,0x00,0x94,0xC7,0x68,0x20, +0x08,0x00,0x79,0x21,0x00,0x00,0x2E,0x8C,0x3E,0x00,0xB9,0x4E,0xFE,0x00,0x06,0x35, +0xFC,0x33,0x00,0x00,0x00,0x00,0xEC,0x98,0x7C,0xB0,0x00,0x00,0x0E,0x67,0xFC,0x33, +0x01,0x00,0x00,0x00,0xEC,0x98,0xC0,0x33,0x00,0x00,0x18,0xC9,0x75,0x4E,0x56,0x4E, +0xFC,0xFF,0x42,0x42,0xAE,0x4A,0x08,0x00,0x06,0x6C,0xAE,0x44,0x08,0x00,0x42,0x52, +0xAE,0x4A,0x0C,0x00,0x06,0x6C,0xAE,0x44,0x0C,0x00,0x42,0x52,0x2E,0x30,0x0A,0x00, +0xEE,0xC0,0x0E,0x00,0x40,0x2D,0xFC,0xFF,0x2E,0x30,0x08,0x00,0xEE,0xC0,0x0E,0x00, +0x2E,0x32,0x0C,0x00,0xEE,0xC2,0x0A,0x00,0x41,0xD0,0x6E,0xD0,0xFC,0xFF,0x40,0x3D, +0xFC,0xFF,0x2E,0x20,0xFC,0xFF,0x02,0x08,0x00,0x00,0x02,0x67,0x80,0x44,0x5E,0x4E, +0x75,0x4E,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x00,0x3F,0x43,0x42,0x85,0x42,0x2E,0x2E, +0x08,0x00,0x2E,0x2C,0x0C,0x00,0x18,0x66,0xFC,0x23,0x00,0x80,0x00,0x00,0x00,0x00, +0x3E,0x8C,0x3C,0x20,0x00,0x80,0x00,0x00,0xFC,0x81,0x00,0x00,0x00,0x60,0x68,0x00, +0x04,0x6C,0x86,0x44,0x43,0x52,0x87,0x4A,0x04,0x6C,0x87,0x44,0x43,0x52,0x87,0xBC, +0x38,0x6E,0x06,0x66,0x01,0x7A,0x87,0x42,0x30,0x60,0xBC,0xBE,0x01,0x00,0x00,0x00, +0x0A,0x6C,0xC6,0x8E,0x07,0x3A,0x47,0x48,0xC7,0x48,0x1E,0x60,0x01,0x78,0x86,0xBE, +0x06,0x65,0x86,0xE3,0x84,0xE3,0xF6,0x60,0x84,0x4A,0x0E,0x67,0x86,0xBE,0x04,0x65, +0x84,0x8A,0x86,0x9E,0x8C,0xE2,0x8E,0xE2,0xEE,0x60,0x7C,0xB6,0x01,0x00,0x0E,0x66, +0x87,0x44,0xC7,0x23,0x00,0x00,0x3E,0x8C,0x05,0x20,0x80,0x44,0x08,0x60,0xC7,0x23, +0x00,0x00,0x3E,0x8C,0x05,0x20,0x9F,0x4A,0xDF,0x4C,0xF8,0x00,0x5E,0x4E,0x75,0x4E, +0x40,0x0C,0x00,0x00,0x14,0x67,0x40,0x0C,0xC8,0x00,0x18,0x67,0x40,0x0C,0xC9,0x00, +0x12,0x67,0x39,0x2F,0x00,0x00,0x2A,0x8C,0x75,0x4E,0x3C,0x3F,0x00,0x00,0x3C,0x3F, +0x4C,0x00,0x41,0x4E,0xB9,0x4E,0xFE,0x00,0xFA,0x34,0x68,0x4E,0xE0,0x48,0xFE,0x7F, +0x60,0x4E,0x79,0x2C,0x00,0x00,0x94,0xC7,0x6E,0x2C,0x08,0x00,0xBC,0x3C,0x01,0x00, +0x48,0x2D,0x42,0x00,0x4F,0x2D,0x46,0x00,0x6E,0x2E,0x3E,0x00,0xB9,0x4E,0xFE,0x00, +0x06,0x35,0x01,0x2F,0x3C,0x3F,0x00,0x00,0x00,0x3F,0x7C,0x20,0xFE,0x00,0x14,0x62, +0x90,0x4E,0x2F,0x30,0x04,0x00,0xB9,0x4E,0xFE,0x00,0xFA,0x34,0xFC,0xDF,0x00,0x00, +0x18,0x00,0x79,0x20,0x00,0x00,0x94,0xC7,0x68,0x20,0x08,0x00,0x50,0x42,0x4F,0x21, +0x3E,0x00,0x68,0x2E,0x46,0x00,0x68,0x20,0x42,0x00,0xD8,0x4C,0xFE,0x7F,0x60,0x4E, +0xB9,0x4E,0xFE,0x00,0x06,0x35,0x73,0x4E,0x2F,0x20,0x04,0x00,0xCF,0x23,0x00,0x00, +0x36,0x8C,0x79,0x2E,0x00,0x00,0x3A,0x8C,0x00,0x2F,0xB9,0x4E,0xFD,0x00,0xAE,0xE4, +0x79,0x2E,0x00,0x00,0x36,0x8C,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01, +0x6E,0x20,0x08,0x00,0x68,0x2A,0x0C,0x00,0x6E,0x20,0x08,0x00,0x28,0x30,0x16,0x00, +0x6D,0x81,0x24,0x00,0x7C,0x26,0x00,0x00,0x26,0xC7,0x53,0x28,0x04,0x60,0x4C,0x26, +0x53,0x28,0xCD,0xB9,0x04,0x67,0x0C,0x20,0xF4,0x66,0xF9,0xBB,0x00,0x00,0x94,0xC7, +0x20,0x67,0x2D,0x30,0x24,0x00,0x6D,0xC0,0x22,0x00,0x16,0x67,0x0C,0x20,0x12,0x67, +0x6C,0x42,0x1E,0x00,0x94,0x26,0xB9,0x28,0x00,0x00,0x16,0x9C,0xCC,0x23,0x00,0x00, +0x16,0x9C,0x01,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00, +0x79,0x2B,0x00,0x00,0x4A,0xC8,0x04,0x00,0xB9,0x4A,0x00,0x00,0x4A,0xC8,0x0A,0x67, +0x79,0x20,0x00,0x00,0x4A,0xC8,0x4D,0x21,0x08,0x00,0x3C,0x20,0x00,0x00,0x4A,0xC8, +0xB9,0x90,0x00,0x00,0xF6,0x97,0x40,0x2B,0x08,0x00,0xCD,0x23,0x00,0x00,0x4A,0xC8, +0x7C,0x3B,0x02,0x00,0x14,0x00,0x8D,0x2E,0x24,0xF7,0x01,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x01,0x79,0x2A,0x00,0x00,0x76,0xC6,0x0D,0x20,0x18,0x67,0x79,0x20, +0x00,0x00,0x76,0xC6,0xD0,0x23,0x00,0x00,0x76,0xC6,0x8D,0x2E,0x67,0x42,0x3C,0x3F, +0x1C,0x00,0x94,0xF3,0x8F,0x58,0x0D,0x20,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x1C,0x01,0x6E,0x2A,0x08,0x00,0x6E,0x26,0x0C,0x00,0xF9,0x97,0x00,0x00,0xF6,0x97, +0x6E,0x20,0x0C,0x00,0x50,0x28,0x4B,0x2B,0x08,0x00,0x4D,0x27,0x04,0x00,0x4C,0x2B, +0x04,0x00,0x0C,0x20,0x04,0x67,0x4D,0x29,0x08,0x00,0x01,0xFE,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00,0x6D,0x20,0x08,0x00,0x6D,0x21,0x04,0x00, +0x04,0x00,0xAD,0x4A,0x04,0x00,0x26,0x67,0x6D,0x20,0x04,0x00,0x6D,0x21,0x08,0x00, +0x08,0x00,0x2D,0x08,0x02,0x00,0x15,0x00,0x14,0x67,0x6D,0x20,0x04,0x00,0x28,0x2E, +0x10,0x00,0xAD,0xDE,0x10,0x00,0x6D,0x20,0x04,0x00,0x47,0x21,0x10,0x00,0xB9,0x2A, +0x00,0x00,0x76,0xC6,0xCD,0x23,0x00,0x00,0x76,0xC6,0x21,0xF8,0x56,0x4E,0xFC,0xFF, +0x79,0x20,0x00,0x00,0x94,0xC7,0x6E,0x31,0x08,0x00,0x22,0x00,0x79,0x20,0x00,0x00, +0x94,0xC7,0x28,0x30,0x24,0x00,0x6E,0xC0,0x08,0x00,0x0E,0x66,0x79,0x20,0x00,0x00, +0x94,0xC7,0x7C,0x31,0x01,0x00,0x1E,0x00,0xB8,0xF2,0x79,0x20,0x00,0x00,0x94,0xC7, +0x28,0x30,0x24,0x00,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0x2E,0x2E, +0x0A,0x00,0x48,0xF7,0x40,0x2A,0x79,0x20,0x00,0x00,0x94,0xC7,0xA8,0x2A,0x26,0x00, +0x79,0x20,0x00,0x00,0x94,0xC7,0x4D,0x21,0x26,0x00,0x79,0x2B,0x00,0x00,0x94,0xC7, +0x0C,0x00,0x40,0x42,0xC0,0x48,0x40,0x2B,0x08,0x00,0x40,0x3B,0x14,0x00,0x7C,0x3B, +0x01,0x00,0x16,0x00,0x04,0x60,0xED,0xE3,0x16,0x00,0x79,0x20,0x00,0x00,0x94,0xC7, +0x28,0x30,0x20,0x00,0x6D,0xC0,0x16,0x00,0xEC,0x66,0x2D,0x30,0x16,0x00,0x79,0x22, +0x00,0x00,0x94,0xC7,0x69,0x81,0x20,0x00,0x2E,0x30,0x08,0x00,0x4C,0x60,0x87,0x2E, +0x0D,0x2F,0x67,0x42,0x4C,0xF7,0x8F,0x5C,0x56,0x60,0x87,0x2E,0x0D,0x2F,0x3C,0x3F, +0x01,0x00,0x4C,0xF7,0x8F,0x5C,0x48,0x60,0x87,0x2E,0x0D,0x2F,0x50,0xF7,0x8F,0x58, +0x3E,0x60,0x87,0x2E,0x0D,0x2F,0x54,0xF7,0x8F,0x58,0x34,0x60,0x87,0x2E,0x0D,0x2F, +0x58,0xF7,0x8F,0x58,0x2A,0x60,0x87,0x2E,0x0D,0x2F,0x5C,0xF7,0x8F,0x58,0x20,0x60, +0x87,0x2E,0x0D,0x2F,0x60,0xF7,0x8F,0x58,0x16,0x60,0x40,0x53,0x7C,0xB0,0x06,0x00, +0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0xF6,0xF3,0x50,0x20,0xD0,0x4E, +0x2D,0x30,0x16,0x00,0x21,0xF8,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x1C,0x03,0x2E,0x3E, +0x08,0x00,0x79,0x28,0x00,0x00,0x94,0xC7,0xFC,0xD9,0x00,0x00,0x26,0x00,0x54,0x2A, +0x0A,0x60,0x6D,0xBE,0x16,0x00,0x08,0x67,0x4D,0x28,0x54,0x2A,0x0D,0x20,0xF2,0x66, +0x0D,0x20,0x06,0x66,0x64,0x70,0x00,0x60,0x8A,0x00,0x79,0x26,0x00,0x00,0x4A,0xC8, +0x04,0x60,0x6B,0x26,0x04,0x00,0xCD,0xB7,0x04,0x67,0x0B,0x20,0xF4,0x66,0x0B,0x20, +0x04,0x66,0x65,0x70,0x6C,0x60,0x6B,0x20,0x08,0x00,0x6B,0x21,0x04,0x00,0x04,0x00, +0xAB,0x4A,0x04,0x00,0x0A,0x67,0x6B,0x20,0x04,0x00,0x6B,0x21,0x08,0x00,0x08,0x00, +0x95,0x28,0x07,0x30,0x40,0x46,0x79,0x22,0x00,0x00,0x94,0xC7,0x69,0xC1,0x20,0x00, +0x07,0x30,0x40,0x46,0x79,0x22,0x00,0x00,0x94,0xC7,0x69,0xC1,0x22,0x00,0x07,0x30, +0x40,0x46,0x79,0x22,0x00,0x00,0x94,0xC7,0x69,0xC1,0x24,0x00,0x2D,0x20,0x18,0x00, +0x40,0x3D,0xFE,0xFF,0xB9,0x2A,0x00,0x00,0x76,0xC6,0xCD,0x23,0x00,0x00,0x76,0xC6, +0x2D,0x20,0x18,0x00,0x10,0x72,0xA0,0xE2,0xC0,0x33,0x00,0x00,0x92,0xC7,0x2E,0x30, +0xFE,0xFF,0x21,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x47,0x42,0x79,0x28, +0x00,0x00,0x94,0xC7,0xFC,0xD9,0x00,0x00,0x26,0x00,0x54,0x2A,0x4C,0x60,0x2D,0x30, +0x16,0x00,0x6E,0xC0,0x08,0x00,0x3E,0x67,0x2D,0x3C,0x14,0x00,0x06,0x08,0x00,0x00, +0x06,0x66,0x06,0x08,0x01,0x00,0x06,0x67,0x6D,0x8E,0x16,0x00,0x28,0x60,0x95,0x28, +0x8D,0x2E,0x64,0xF7,0x2D,0x30,0x16,0x00,0x40,0x46,0x79,0x22,0x00,0x00,0x94,0xC7, +0x69,0xC1,0x20,0x00,0x2D,0x30,0x16,0x00,0x40,0x46,0x79,0x22,0x00,0x00,0x94,0xC7, +0x69,0xC1,0x22,0x00,0x4C,0x2A,0x4D,0x28,0x54,0x2A,0x0D,0x20,0xB0,0x66,0x07,0x30, +0x31,0xFC,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00,0xBC,0x2E, +0x00,0x00,0xAE,0xBB,0x0D,0x2F,0x4C,0xF3,0x8F,0x58,0x57,0x42,0x39,0x2F,0x00,0x00, +0x9E,0xC7,0x50,0xF3,0x8F,0x58,0x00,0x3E,0x79,0x4A,0x00,0x00,0xEC,0x98,0x00,0x66, +0x7A,0x00,0x6E,0x4A,0x0C,0x00,0x08,0x67,0x68,0xF7,0x40,0x3D,0xFE,0xFF,0x06,0x60, +0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x58,0x67,0x8E,0x2E,0x97,0x5D, +0x3C,0x2F,0x00,0x00,0xAE,0xBB,0x07,0x3F,0x6C,0xF7,0x8F,0x5C,0x40,0x3D,0xFE,0xFF, +0x87,0x3E,0x80,0xF3,0x6E,0x0C,0xFF,0xFF,0xFE,0xFF,0x38,0x67,0x6E,0x4A,0x0C,0x00, +0x0A,0x66,0xEE,0x23,0xFA,0xFF,0x00,0x00,0x24,0x97,0x14,0x60,0x79,0x30,0x00,0x00, +0x82,0xC6,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0xC4,0x9B,0xAE,0x20,0xFA,0xFF, +0xAE,0x2E,0xFA,0xFF,0x0D,0x2F,0x3C,0x2F,0xFE,0x00,0x1A,0x35,0x70,0xF7,0x8F,0x50, +0x01,0x70,0x08,0x60,0x40,0x42,0x04,0x60,0x02,0x60,0x40,0x42,0x21,0xF8,0x56,0x4E, +0xEE,0xFF,0xE7,0x48,0x00,0x03,0x79,0x42,0x00,0x00,0x82,0xC6,0x6E,0x42,0xFC,0xFF, +0x84,0xF3,0x40,0x4A,0x06,0x67,0x74,0xF7,0x6E,0xD1,0xFC,0xFF,0x74,0xF3,0x40,0x4A, +0x00,0x67,0xBC,0x00,0x79,0x4A,0x00,0x00,0x92,0x89,0x00,0x67,0xB2,0x00,0xC0,0xF3, +0x40,0x3D,0xF6,0xFF,0xBC,0x2E,0x00,0x00,0x32,0x00,0x64,0xF3,0x40,0x2D,0xF2,0xFF, +0x6E,0x2D,0xF2,0xFF,0xEE,0xFF,0xAE,0x2E,0xF2,0xFF,0x44,0xF4,0x74,0xF3,0x7C,0xC0, +0x04,0x00,0x06,0x67,0xBC,0x3E,0x02,0x00,0xCC,0xF3,0xBC,0x2E,0xFE,0x00,0x12,0xF4, +0xD0,0xF3,0x57,0x42,0x3C,0x2F,0xFE,0x00,0x14,0xF4,0x48,0xF4,0x8F,0x58,0x40,0x3D, +0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x06,0x66,0xAE,0x3E,0xF6,0xFF,0xCC,0xF3,0xBC,0x2E, +0xFE,0x00,0x1B,0xF4,0xD0,0xF3,0x57,0x42,0x3C,0x2F,0xFE,0x00,0x1D,0xF4,0x48,0xF4, +0x8F,0x58,0x40,0x3D,0xFE,0xFF,0xAE,0x06,0x00,0x00,0x1E,0x00,0xEE,0xFF,0x47,0x42, +0x22,0x60,0xAE,0x3E,0xFC,0xFF,0x2E,0x2F,0xEE,0xFF,0x78,0xF7,0x8F,0x58,0x40,0x3D, +0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x04,0x67,0x6E,0x52,0xFC,0xFF,0x68,0xF4,0x40,0x3D, +0xFE,0xFF,0x47,0x52,0x7C,0xBE,0x06,0x00,0x0E,0x6C,0x6E,0x0C,0x06,0x00,0xFC,0xFF, +0x06,0x6C,0x6E,0x4A,0xFE,0xFF,0xCA,0x66,0xAE,0x2E,0xF2,0xFF,0x78,0xF4,0x21,0xF0, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0xB9,0x4A,0x00,0x00,0x24,0x97,0x14,0x67, +0x79,0x20,0x00,0x00,0x24,0x97,0xA8,0x2E,0x2C,0x00,0x78,0xF4,0xB9,0x2E,0x00,0x00, +0x24,0x97,0x78,0xF4,0x47,0x42,0x2C,0x60,0x47,0x30,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1, +0x00,0x00,0xC4,0x9B,0x50,0x2A,0xAD,0x2E,0x2C,0x00,0x78,0xF4,0x8D,0x2E,0x78,0xF4, +0x47,0x30,0xC8,0xD1,0xC8,0xD1,0x7C,0x22,0x00,0x00,0xB2,0xC6,0xB0,0x2E,0x00,0x98, +0x78,0xF4,0x47,0x52,0x79,0xBE,0x00,0x00,0x82,0xC6,0xCC,0x6D,0x21,0xF8,0x56,0x4E, +0xF8,0xFF,0xE7,0x48,0x1C,0x03,0xBC,0x2E,0x00,0x00,0xB2,0x08,0x64,0xF3,0x40,0x26, +0x0B,0x20,0x00,0x67,0x7C,0x00,0x79,0x30,0x00,0x00,0x82,0xC6,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xB2,0xC6,0x8B,0x20,0x4B,0x2A,0xEB,0x41,0xB8,0x00,0x48,0x2D, +0xFC,0xFF,0xEB,0x41,0x02,0x08,0x48,0x2D,0xF8,0xFF,0xEB,0x49,0x26,0x08,0xAE,0x2E, +0xF8,0xFF,0x0D,0x2F,0x7C,0xF7,0x8F,0x58,0x6E,0x2B,0xFC,0xFF,0x08,0x00,0x2E,0x20, +0xFC,0xFF,0xBC,0xD0,0x00,0x00,0x46,0x07,0x6E,0x22,0xFC,0xFF,0x40,0x23,0x3E,0x00, +0x47,0x42,0x22,0x60,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x1C,0x00,0xC1,0xD1,0xB9,0x20, +0x00,0x00,0x76,0xC6,0x0C,0x20,0x07,0x32,0xFC,0xC3,0x1C,0x00,0x81,0xD0,0xC0,0x23, +0x00,0x00,0x76,0xC6,0x47,0x52,0x7C,0xBE,0x05,0x00,0xD8,0x6D,0x01,0x70,0x02,0x60, +0x40,0x42,0x21,0xFE,0x56,0x4E,0xFC,0xFF,0x6E,0x4A,0x08,0x00,0x1E,0x67,0x2E,0x2F, +0x12,0x00,0x2E,0x2F,0x0E,0x00,0x2E,0x2F,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x3C,0x2F, +0x00,0x00,0xB4,0x98,0x80,0xF7,0xFC,0xDF,0x00,0x00,0x12,0x00,0x02,0x60,0xB8,0xF2, +0x39,0x08,0x00,0x00,0x00,0x00,0x0B,0xC9,0xF4,0x66,0x01,0xF0,0x56,0x4E,0xDC,0xFF, +0xE7,0x48,0x04,0x3F,0x2E,0x3E,0x08,0x00,0x7C,0x2A,0x00,0x00,0x58,0x9C,0x44,0x42, +0x79,0xBE,0x00,0x00,0xDC,0x9B,0x00,0x66,0xDE,0x02,0x87,0x3E,0x84,0xF7,0x79,0x2D, +0x00,0x00,0xF6,0x96,0xDC,0xFF,0x2E,0x2F,0x0A,0x00,0x3C,0x3F,0x0A,0x00,0x67,0x42, +0x39,0x2F,0x00,0x00,0xF6,0x96,0x04,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x00,0x36, +0x8E,0x2E,0x97,0x51,0x07,0x3F,0x3C,0x3F,0x01,0x00,0x88,0xF7,0x8F,0x58,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEA,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x0E,0x2F, +0x97,0x51,0x8C,0xF7,0xFC,0xDF,0x00,0x00,0x10,0x00,0x4D,0x20,0x07,0x32,0xFC,0xC3, +0x38,0x00,0xC1,0xD1,0x68,0x3D,0x5C,0x28,0xE4,0xFF,0x03,0x30,0x00,0x60,0xDC,0x01, +0x57,0x42,0x3C,0x3F,0x01,0x00,0x03,0x3F,0x39,0x2F,0x00,0x00,0xF6,0x96,0x40,0xF2, +0x8F,0x50,0x40,0x4A,0x20,0x67,0x7C,0xB6,0x02,0x00,0x04,0x66,0x16,0x70,0x02,0x60, +0x17,0x70,0x00,0x38,0xBC,0x3E,0x01,0x00,0x67,0x42,0x03,0x3F,0x39,0x2F,0x00,0x00, +0xF6,0x96,0x14,0xF2,0x8F,0x50,0x00,0x60,0xB8,0x01,0x4D,0x20,0x07,0x32,0xFC,0xC3, +0x38,0x00,0xC1,0xD1,0x28,0x08,0x03,0x00,0x5D,0x28,0x64,0x67,0xBC,0x3E,0x10,0x27, +0x39,0x3F,0x00,0x00,0xA8,0x98,0x2E,0x30,0xEA,0xFF,0x57,0xD1,0x39,0x30,0x00,0x00, +0xD6,0x9A,0x57,0x91,0x57,0x5D,0x39,0x3F,0x00,0x00,0x02,0x97,0x67,0x42,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x2E,0x3F,0xEC,0xFF,0x2E,0x3F,0xEE,0xFF,0x2E,0x3F, +0xE8,0xFF,0x2E,0x3F,0xEA,0xFF,0x38,0xF2,0xFC,0xDF,0x00,0x00,0x10,0x00,0x1C,0x78, +0x00,0x60,0x3E,0x01,0x2E,0x08,0x05,0x00,0xE5,0xFF,0x00,0x67,0xA2,0x00,0x8E,0x2E, +0x97,0x51,0x07,0x3F,0x3C,0x3F,0x03,0x00,0x88,0xF7,0x8F,0x58,0x2E,0x30,0xEE,0xFF, +0x6E,0x91,0xF8,0xFF,0x2E,0x30,0xEC,0xFF,0x6E,0x91,0xFA,0xFF,0x2E,0x30,0xEA,0xFF, +0x6E,0x91,0xFC,0xFF,0x2E,0x30,0xE8,0xFF,0x6E,0x91,0xFE,0xFF,0x39,0x3C,0x00,0x00, +0x32,0xC8,0x39,0x3A,0x00,0x00,0x72,0xC6,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00, +0xC1,0xD1,0x28,0x30,0x5C,0x28,0x7C,0xC0,0x00,0x0E,0x0A,0x67,0x39,0x3C,0x00,0x00, +0xD6,0x9A,0xFC,0xCD,0x07,0x00,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1, +0x28,0x30,0x5C,0x28,0x7C,0xC0,0xC0,0x01,0x0A,0x67,0x39,0x3A,0x00,0x00,0x02,0x97, +0xFC,0xCB,0x07,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xEA,0xFF,0x0E,0x2F,0x97,0x51,0x05,0x3F,0x06,0x3F,0x2E,0x3F,0xEC,0xFF, +0x2E,0x3F,0xEE,0xFF,0x90,0xF7,0xFC,0xDF,0x00,0x00,0x10,0x00,0x1B,0x78,0x00,0x60, +0x90,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xE2,0xFF,0x03,0x3F,0x57,0x52,0x39,0x2F,0x00,0x00,0xF6,0x96,0x08,0xF2,0xFC,0xDF, +0x00,0x00,0x0A,0x00,0x7C,0xB6,0x11,0x00,0x0E,0x66,0x2E,0x30,0x0A,0x00,0x6E,0xB0, +0xE2,0xFF,0x02,0x6D,0x43,0x52,0x0C,0x60,0x2E,0x30,0x0C,0x00,0x6E,0xB0,0xE0,0xFF, +0x02,0x6D,0x43,0x52,0x18,0x78,0x48,0x60,0x7C,0xB6,0x12,0x00,0x04,0x66,0x19,0x70, +0x02,0x60,0x1A,0x70,0x00,0x38,0x7C,0xB6,0x0D,0x00,0x04,0x67,0x57,0x42,0x04,0x60, +0xBC,0x3E,0x01,0x00,0x03,0x3F,0x03,0x3F,0x57,0x53,0x39,0x2F,0x00,0x00,0xF6,0x96, +0x44,0xF2,0x8F,0x50,0x40,0x3D,0xEE,0xFF,0x16,0x60,0x40,0x55,0x7C,0xB0,0x10,0x00, +0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0x36,0xF4,0x50,0x20,0xD0,0x4E, +0x7C,0xB8,0x18,0x00,0x6E,0x66,0x43,0x30,0xFC,0xD0,0xF6,0xFF,0xC8,0xD1,0xFC,0xD1, +0xFE,0x00,0x24,0xF4,0x50,0x3D,0xEE,0xFF,0x57,0x42,0x80,0xF2,0x79,0x4A,0x00,0x00, +0xFE,0x97,0x3C,0x66,0xAE,0x3E,0xE8,0xFF,0x2E,0x3F,0xEA,0xFF,0x2E,0x3F,0xEC,0xFF, +0x2E,0x3F,0xEE,0xFF,0x07,0x3F,0x4D,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1, +0x68,0x20,0x58,0x28,0x28,0x3F,0x1C,0x00,0x04,0x3F,0x3C,0x2F,0x00,0x00,0xB4,0x98, +0x80,0xF7,0xFC,0xDF,0x00,0x00,0x10,0x00,0xFC,0x33,0x01,0x00,0x00,0x00,0xFE,0x97, +0xB8,0xF2,0x39,0x08,0x00,0x00,0x00,0x00,0x0B,0xC9,0xB0,0x66,0xBC,0x3E,0x01,0x00, +0x80,0xF2,0x32,0x60,0x02,0x60,0x15,0x78,0xAE,0x3E,0xE8,0xFF,0x2E,0x3F,0xEA,0xFF, +0x2E,0x3F,0xEC,0xFF,0x2E,0x3F,0xEE,0xFF,0x07,0x3F,0x4D,0x20,0x07,0x32,0xFC,0xC3, +0x38,0x00,0xC1,0xD1,0x68,0x20,0x58,0x28,0x28,0x3F,0x1C,0x00,0x04,0x3F,0x94,0xF7, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x3F,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F, +0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0x79,0x4A,0x00,0x00,0xCC,0xC6,0x08,0x67, +0x79,0x53,0x00,0x00,0xCC,0xC6,0x18,0x60,0x86,0x3E,0x07,0x3F,0x7C,0xF2,0x8F,0x54, +0x00,0x3A,0x45,0x4A,0x0A,0x6F,0x86,0x3E,0x07,0x3F,0x05,0x3F,0x98,0xF7,0x8F,0x58, +0x39,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x07,0xB9,0x4A,0x00,0x00,0x26,0x9B, +0x00,0x67,0xA0,0x00,0xBC,0x2E,0x00,0x00,0x28,0xC9,0x2E,0x2F,0x08,0x00,0x60,0xF1, +0x8F,0x58,0x40,0x4A,0x00,0x67,0x8C,0x00,0x46,0x42,0x8E,0x2E,0x97,0x59,0x0E,0x2F, +0x97,0x55,0x9C,0xF7,0x8F,0x58,0x40,0x4A,0x60,0x67,0x79,0x4A,0x00,0x00,0x84,0xC6, +0x50,0x67,0x6E,0x0C,0x03,0x00,0xFE,0xFF,0x48,0x66,0x2E,0x30,0xFC,0xFF,0x79,0xB0, +0x00,0x00,0xC0,0x9B,0x3C,0x6D,0x39,0x30,0x00,0x00,0xC0,0x9B,0x6E,0x91,0xFC,0xFF, +0x6E,0x30,0xFC,0xFF,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x30,0xC9,0x10,0x3E,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0xFE,0xFF, +0x39,0x2F,0x00,0x00,0x26,0x9B,0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x28,0x7C, +0x08,0x60,0x39,0x3E,0x00,0x00,0x30,0x97,0x0A,0x7C,0xA7,0x42,0x67,0x42,0x2E,0x3F, +0xFC,0xFF,0x2E,0x3F,0xFE,0xFF,0x07,0x3F,0x06,0x3F,0x94,0xF7,0xFC,0xDF,0x00,0x00, +0x0E,0x00,0x31,0xF0,0x56,0x4E,0xFC,0xFF,0xAE,0x2E,0x0C,0x00,0xA0,0xF7,0xAE,0x2E, +0x08,0x00,0x2E,0x2F,0x08,0x00,0xA4,0xF7,0x8F,0x58,0x01,0xF0,0x56,0x4E,0xF4,0xFF, +0xE7,0x48,0x00,0x03,0xBC,0x2E,0x00,0x00,0xDA,0x96,0x3C,0x2F,0x00,0x00,0x1C,0x97, +0x10,0xF1,0x8F,0x58,0x79,0x42,0x00,0x00,0xD8,0x96,0x74,0x60,0xA8,0xF7,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF4,0xFF,0xA7,0x42,0x3C,0x2F,0x01,0x00,0x01,0xFF,0xA7,0x42, +0x3C,0x2F,0x00,0x00,0xD8,0x96,0x3C,0x2F,0x00,0x00,0xD8,0x96,0x3C,0x3F,0x07,0x00, +0xE0,0xF1,0xFC,0xDF,0x00,0x00,0x16,0x00,0x00,0x3E,0xBC,0x3E,0x01,0x00,0x80,0xF2, +0x07,0x08,0x01,0x00,0x18,0x67,0x79,0x0C,0x01,0x00,0x00,0x00,0x4E,0xC8,0x06,0x6F, +0x79,0x53,0x00,0x00,0x4E,0xC8,0x2E,0x2F,0xF4,0xFF,0xAC,0xF7,0x8F,0x58,0x07,0x08, +0x02,0x00,0x18,0x67,0x79,0x0C,0x01,0x00,0x00,0x00,0x4E,0xC8,0x06,0x6F,0x79,0x53, +0x00,0x00,0x4E,0xC8,0x2E,0x2F,0xF4,0xFF,0xB0,0xF7,0x8F,0x58,0x57,0x42,0x80,0xF2, +0x8A,0x60,0x21,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x03,0x79,0x42,0x00,0x00, +0x84,0xC6,0x79,0x42,0x00,0x00,0xC0,0x9B,0x3C,0x2E,0xFE,0x00,0x3C,0x46,0x87,0x2E, +0x3C,0x2F,0xFE,0x00,0x7A,0xF4,0x3C,0x2F,0xFE,0x00,0x3C,0x46,0x70,0xF7,0x8F,0x50, +0x21,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x4A,0x08,0x00,0x40,0x67,0xB4,0xF7,0xF9,0x33, +0x00,0x00,0x6E,0x9B,0x00,0x00,0x08,0xC9,0xF9,0x33,0x00,0x00,0x6A,0xC8,0x00,0x00, +0xBA,0x9B,0xB9,0x2E,0x00,0x00,0x62,0xC7,0x50,0xF2,0x79,0x4A,0x00,0x00,0x6E,0x9B, +0x12,0x66,0x57,0x42,0x3C,0x3F,0x7A,0x00,0xB8,0xF7,0x8F,0x54,0xFC,0x33,0x01,0x00, +0x00,0x00,0x6E,0x9B,0x79,0x42,0x00,0x00,0x6A,0xC8,0x36,0x60,0xA7,0x42,0x3C,0x3F, +0x7B,0x00,0x34,0xF7,0x8F,0x5C,0xBC,0xF7,0x79,0x42,0x00,0x00,0x6E,0x9B,0x79,0x4A, +0x00,0x00,0x08,0xC9,0x12,0x67,0x57,0x42,0x3C,0x3F,0x7A,0x00,0x34,0xF7,0x8F,0x54, +0xFC,0x33,0x01,0x00,0x00,0x00,0x6E,0x9B,0xF9,0x33,0x00,0x00,0xBA,0x9B,0x00,0x00, +0x6A,0xC8,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x79,0x0C,0x20,0x00, +0x00,0x00,0x06,0xC9,0x46,0x6C,0x39,0x30,0x00,0x00,0xB0,0xC6,0x40,0xE7,0xC0,0x48, +0x40,0x2A,0xFC,0xDB,0x00,0x00,0x58,0x9C,0xFC,0xDB,0x00,0x00,0x3E,0x16,0x79,0x52, +0x00,0x00,0xB0,0xC6,0x79,0x0C,0x20,0x00,0x00,0x00,0xB0,0xC6,0x06,0x66,0x79,0x42, +0x00,0x00,0xB0,0xC6,0xAE,0x2A,0x08,0x00,0x6E,0x2B,0x0C,0x00,0x04,0x00,0x79,0x52, +0x00,0x00,0x06,0xC9,0xFC,0x13,0x01,0x00,0x00,0x00,0x42,0x9C,0x01,0xF8,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x08,0x00,0x6D,0x42,0x1E,0x00,0x7C,0x26, +0x00,0x00,0x94,0xC7,0x53,0x28,0x04,0x60,0x4C,0x26,0x53,0x28,0x0C,0x20,0xF8,0x66, +0x8C,0x2A,0x8D,0x26,0x01,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A, +0x08,0x00,0x2D,0x30,0x22,0x00,0x6D,0xC0,0x24,0x00,0x06,0x67,0x8D,0x2E,0xC0,0xF7, +0x0C,0x60,0xB9,0x2A,0x00,0x00,0x26,0xC7,0xCD,0x23,0x00,0x00,0x26,0xC7,0x01,0xF8, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0xFC,0x13,0x01,0x00,0x00,0x00,0xAE,0xC6, +0x79,0x28,0x00,0x00,0x94,0xC7,0xFC,0x23,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x94,0xC7, +0x00,0x60,0xD6,0x00,0x79,0x53,0x00,0x00,0x06,0xC9,0x39,0x30,0x00,0x00,0xF2,0x9B, +0x40,0xE7,0xC0,0x48,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x58,0x9C,0xFC,0xDB,0x00,0x00, +0x3E,0x16,0x79,0x52,0x00,0x00,0xF2,0x9B,0x79,0x0C,0x20,0x00,0x00,0x00,0xF2,0x9B, +0x06,0x66,0x79,0x42,0x00,0x00,0xF2,0x9B,0x79,0x4A,0x00,0x00,0x9A,0xC7,0x00,0x67, +0x8E,0x00,0x15,0x20,0xBC,0xB0,0xFE,0x00,0xEA,0x4D,0x18,0x66,0x2D,0x20,0x04,0x00, +0xBC,0xC0,0xFF,0xFF,0x00,0x00,0xBC,0xB0,0x1C,0x2B,0x00,0x00,0x06,0x66,0x79,0x42, +0x00,0x00,0x9A,0xC7,0x79,0x4A,0x00,0x00,0x9A,0xC7,0x62,0x67,0x15,0x20,0xBC,0xB0, +0xFE,0x00,0x6C,0x4A,0x32,0x66,0x7C,0x20,0xFF,0xFF,0xF8,0xFF,0x79,0x22,0x00,0x00, +0xEE,0x96,0x30,0x20,0x00,0x98,0xBC,0xB0,0xFE,0x00,0x6C,0x4A,0x1A,0x66,0x79,0x20, +0x00,0x00,0xEE,0x96,0x88,0x59,0x10,0x2E,0xAD,0xDE,0x04,0x00,0x79,0x20,0x00,0x00, +0xEE,0x96,0x88,0x59,0x87,0x20,0x26,0x60,0xBC,0x3E,0x08,0x00,0x0D,0x2F,0x39,0x2F, +0x00,0x00,0xEE,0x96,0x28,0xF1,0x8F,0x50,0xB9,0x50,0x00,0x00,0xEE,0x96,0x79,0x53, +0x00,0x00,0x28,0x97,0xF9,0x33,0x00,0x00,0x28,0x97,0x00,0x00,0x9A,0xC7,0x2D,0x2F, +0x04,0x00,0x55,0x20,0x90,0x4E,0x8F,0x58,0x79,0x4A,0x00,0x00,0x06,0xC9,0x00,0x66, +0x24,0xFF,0xCC,0x23,0x00,0x00,0x94,0xC7,0x39,0x42,0x00,0x00,0xAE,0xC6,0x21,0xFC, +0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x0C,0x07,0xA7,0x42,0x3C,0x3F,0x80,0x00,0x34,0xF7, +0x8F,0x5C,0x39,0x3C,0x00,0x00,0x06,0x97,0x79,0x20,0x00,0x00,0xD8,0x9A,0x68,0x20, +0x14,0x00,0x68,0x0C,0x08,0x00,0x22,0x00,0x4A,0x6C,0x7C,0x2A,0x00,0x00,0xBA,0x95, +0x7C,0x28,0x00,0x00,0x06,0x97,0xBC,0x3A,0x04,0x00,0x7C,0x3B,0x02,0x00,0x02,0x00, +0xBC,0x3E,0x02,0x00,0x67,0x42,0x3C,0x3F,0x21,0x00,0x34,0xF7,0x8F,0x58,0xBC,0x3A, +0xFF,0xFF,0x6D,0x42,0x02,0x00,0xBC,0x3E,0x02,0x00,0x67,0x42,0x3C,0x3F,0x1F,0x00, +0x34,0xF7,0x8F,0x58,0x79,0x4A,0x00,0x00,0xE8,0xC7,0x04,0x67,0x14,0x3E,0x02,0x60, +0x47,0x42,0x02,0x60,0x47,0x42,0x47,0x4A,0x08,0x66,0x79,0xBC,0x00,0x00,0x2A,0xC7, +0x0E,0x67,0x86,0x3E,0x07,0x3F,0x3C,0x2F,0xFE,0x00,0xEA,0x4D,0x3C,0xF7,0x8F,0x5C, +0x31,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0xC4,0xF7,0x10,0x60,0x79,0x2A, +0x00,0x00,0x16,0x9C,0xD5,0x23,0x00,0x00,0x16,0x9C,0x8D,0x2E,0xC0,0xF7,0xB9,0x4A, +0x00,0x00,0x16,0x9C,0xE8,0x66,0xB9,0x4A,0x00,0x00,0x94,0xC7,0x08,0x66,0x79,0x4A, +0x00,0x00,0x06,0xC9,0xD4,0x67,0x01,0xF8,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x04,0x01, +0x79,0x20,0x00,0x00,0x94,0xC7,0xA8,0x2E,0x08,0x00,0xC8,0xF7,0x79,0x2A,0x00,0x00, +0x94,0xC7,0xD5,0x23,0x00,0x00,0x94,0xC7,0x2D,0x30,0x1E,0x00,0x0C,0x60,0x8D,0x2E, +0xC0,0xF7,0x10,0x60,0x8D,0x2E,0xCC,0xF7,0x0A,0x60,0x40,0x4A,0xF0,0x67,0x7C,0xB0, +0x01,0x00,0xF0,0x67,0xD0,0xF7,0xD4,0xF7,0x79,0x4A,0x00,0x00,0x06,0xC9,0xF4,0x66, +0x79,0x20,0x00,0x00,0x94,0xC7,0xE8,0x23,0x14,0x00,0x00,0x00,0xFA,0x97,0x79,0x20, +0x00,0x00,0x94,0xC7,0xA8,0x2E,0x08,0x00,0xD8,0xF7,0x01,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x07,0x2E,0x2E,0x08,0x00,0x79,0x2A,0x00,0x00,0x1A,0x9C,0x28,0x60, +0x07,0x2C,0xAD,0x9C,0x10,0x00,0xAD,0x9F,0x10,0x00,0x06,0x2E,0xAD,0x4A,0x10,0x00, +0x14,0x6E,0xAD,0x42,0x10,0x00,0x57,0x42,0x0D,0x2F,0xFC,0xF7,0x8F,0x58,0x79,0x2A, +0x00,0x00,0x1A,0x9C,0x02,0x60,0x04,0x60,0x0D,0x20,0xD4,0x66,0x40,0xF7,0x0D,0x20, +0x0E,0x67,0xED,0x23,0x10,0x00,0x00,0x00,0x92,0x94,0xB9,0x42,0x00,0x00,0x8E,0x94, +0x44,0xF7,0x31,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00, +0x55,0x52,0x2D,0x20,0x02,0x00,0xB9,0xB0,0x00,0x00,0x94,0xC7,0x0E,0x67,0x55,0x0C, +0x01,0x00,0x08,0x67,0x55,0x53,0x40,0x42,0x0C,0x60,0x0A,0x60,0x79,0x2B,0x00,0x00, +0x94,0xC7,0x02,0x00,0x01,0x70,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x8C,0x2E,0x00,0xF8,0x40,0x4A,0x06,0x67, +0x8D,0x2E,0x04,0xF8,0x0A,0x60,0x8C,0x2E,0x97,0x5C,0x0D,0x2F,0x08,0xF8,0x8F,0x58, +0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00,0x55,0x53, +0x55,0x4A,0x24,0x66,0x6D,0x28,0x06,0x00,0x0C,0x20,0x18,0x67,0x6C,0x2B,0x04,0x00, +0x06,0x00,0x6C,0x2B,0x0C,0x00,0x02,0x00,0xBC,0x3A,0x01,0x00,0x8C,0x2E,0x04,0xF8, +0xB8,0xF2,0x04,0x60,0xAD,0x42,0x02,0x00,0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x00,0x07,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0xBC,0x2E,0x00,0x00,0x3E,0x9B, +0x06,0x3F,0x07,0x3F,0x60,0xF1,0x8F,0x58,0x40,0x4A,0x04,0x67,0x01,0x70,0x28,0x60, +0xBC,0x2E,0x00,0x00,0x1C,0x97,0x06,0x3F,0x07,0x3F,0x60,0xF1,0x8F,0x58,0x40,0x4A, +0x04,0x67,0xFF,0x70,0x12,0x60,0x86,0x3E,0x07,0x3F,0x7C,0xF2,0x8F,0x54,0x40,0x4A, +0x04,0x67,0xFF,0x70,0x02,0x60,0x40,0x42,0x31,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x00,0x03,0x2E,0x3E,0x08,0x00,0x79,0xBE,0x00,0x00,0xD0,0x9A,0x5A,0x67,0x79,0x4A, +0x00,0x00,0xCA,0xC6,0x16,0x67,0x79,0xBE,0x00,0x00,0x98,0xC7,0x0C,0x66,0x79,0x52, +0x00,0x00,0x2C,0xC7,0x79,0x56,0x00,0x00,0xCA,0xC6,0x36,0x60,0x79,0x4A,0x00,0x00, +0x4E,0xC8,0x1E,0x67,0x47,0x4A,0x1A,0x67,0xFC,0x33,0x01,0x00,0x00,0x00,0x2C,0xC7, +0xC7,0x33,0x00,0x00,0x98,0xC7,0xF9,0x33,0x00,0x00,0x68,0xC7,0x00,0x00,0xCA,0xC6, +0x10,0x60,0xBC,0x3E,0x01,0x00,0x07,0x3F,0x3C,0x2F,0xFE,0x00,0x42,0x4E,0x3C,0xF7, +0x8F,0x5C,0xC7,0x33,0x00,0x00,0xD0,0x9A,0x21,0xF0,0x56,0x4E,0xFC,0xFF,0x79,0x4A, +0x00,0x00,0xCA,0xC6,0x4A,0x67,0x2E,0x30,0x08,0x00,0x79,0x91,0x00,0x00,0xCA,0xC6, +0x79,0x4A,0x00,0x00,0xCA,0xC6,0x38,0x66,0xB9,0x3E,0x00,0x00,0x2C,0xC7,0x39,0x3F, +0x00,0x00,0x98,0xC7,0x3C,0x2F,0xFE,0x00,0x42,0x4E,0x3C,0xF7,0x8F,0x5C,0x39,0x30, +0x00,0x00,0x98,0xC7,0x79,0xB0,0x00,0x00,0xD0,0x9A,0x14,0x67,0xBC,0x3E,0x01,0x00, +0x39,0x3F,0x00,0x00,0xD0,0x9A,0x3C,0x2F,0xFE,0x00,0x42,0x4E,0x3C,0xF7,0x8F,0x5C, +0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xBC,0x2E,0x00,0x00,0x3E,0x9B,0x2E,0x2F,0x08,0x00, +0x10,0xF1,0x8F,0x58,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xAE,0x2E,0x08,0x00,0x3C,0x2F, +0x00,0x00,0x3E,0x9B,0x10,0xF1,0x8F,0x58,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x20, +0x08,0x00,0xB9,0x20,0x00,0x00,0xFA,0x9A,0x6E,0x20,0x0C,0x00,0xB9,0x20,0x00,0x00, +0xD8,0x9A,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x2E,0x20,0x08,0x00,0xC0,0x23,0x00,0x00, +0xFA,0x9A,0xC0,0x23,0x00,0x00,0x9C,0x98,0xB9,0x3E,0x00,0x00,0x0E,0x9C,0x39,0x3F, +0x00,0x00,0x0C,0x9C,0x39,0x2F,0x00,0x00,0xFA,0x9A,0xE0,0xF8,0x8F,0x5C,0xBC,0x3E, +0x01,0x00,0x39,0x3F,0x00,0x00,0x0A,0xC9,0x39,0x2F,0x00,0x00,0xFA,0x9A,0xE4,0xF8, +0x8F,0x5C,0xEE,0x23,0x0C,0x00,0x00,0x00,0xD8,0x9A,0x01,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x01,0x6E,0x2A,0x0A,0x00,0x6D,0x0C,0x08,0x00,0x14,0x00,0x22,0x6C, +0x4D,0x20,0x6D,0x32,0x12,0x00,0xC9,0xD3,0xC9,0xD1,0xAE,0x30,0x08,0x00,0x6D,0x52, +0x12,0x00,0x6D,0x0C,0x08,0x00,0x12,0x00,0x04,0x66,0x6D,0x42,0x12,0x00,0x6D,0x52, +0x14,0x00,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00, +0x6D,0x53,0x14,0x00,0x2D,0x3E,0x10,0x00,0x6D,0x52,0x10,0x00,0x6D,0x0C,0x08,0x00, +0x10,0x00,0x04,0x66,0x6D,0x42,0x10,0x00,0x47,0x30,0xC8,0xD1,0x35,0x30,0x00,0x88, +0x21,0xF8,0x56,0x4E,0xFC,0xFF,0x0E,0x60,0xB9,0x2E,0x00,0x00,0xFA,0x97,0x97,0x06, +0x00,0x00,0x0E,0x00,0xEC,0xF7,0x79,0x20,0x00,0x00,0xFA,0x97,0x68,0x4A,0x22,0x00, +0xE6,0x66,0x01,0xF0,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00, +0x2D,0x20,0x10,0x00,0x10,0x72,0xA0,0xE2,0x40,0x48,0x40,0x42,0x40,0x48,0xBC,0xC0, +0x00,0x00,0xFF,0x00,0x40,0x3D,0xFE,0xFF,0x6E,0x0C,0x01,0x00,0xFE,0xFF,0x10,0x6F, +0x79,0x0C,0x01,0x00,0x00,0x00,0x4E,0xC8,0x06,0x6F,0x79,0x53,0x00,0x00,0x4E,0xC8, +0x80,0x42,0x2E,0x30,0x0C,0x00,0xAD,0x81,0x18,0x00,0x6D,0x20,0x08,0x00,0x6D,0x21, +0x04,0x00,0x04,0x00,0xAD,0x4A,0x04,0x00,0x0A,0x67,0x6D,0x20,0x04,0x00,0x6D,0x21, +0x08,0x00,0x08,0x00,0x8D,0x2E,0x04,0xF8,0x01,0xF8,0x56,0x4E,0xFC,0xFF,0xEE,0x33, +0x0A,0x00,0x00,0x00,0x2A,0xC7,0x6E,0x4A,0x08,0x00,0x0E,0x67,0xAE,0x3E,0x08,0x00, +0x39,0x2F,0x00,0x00,0xD8,0x9A,0xE8,0xF8,0x8F,0x58,0x01,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x03,0x2E,0x3E,0x0C,0x00,0x6E,0x20,0x08,0x00,0x68,0x2A,0x14,0x00, +0x6D,0x28,0x02,0x00,0x0C,0x20,0x0A,0x67,0x87,0x3E,0x0C,0x2F,0xFC,0xF7,0x8F,0x58, +0x0E,0x60,0x8D,0x2E,0x97,0x06,0x00,0x00,0x0E,0x00,0x07,0x3F,0xEC,0xF8,0x8F,0x54, +0x21,0xFC,0x56,0x4E,0xFA,0xFF,0x39,0x20,0x00,0x00,0xFA,0x9A,0xB9,0xB0,0x00,0x00, +0x3A,0x9B,0x54,0x67,0x6E,0x0C,0x01,0x00,0x08,0x00,0x4C,0x66,0x79,0x4A,0x00,0x00, +0x0A,0xC9,0x44,0x66,0xB9,0x3E,0x00,0x00,0x0E,0x9C,0x39,0x3F,0x00,0x00,0x0C,0x9C, +0xF0,0xF8,0x8F,0x54,0x40,0x3D,0xFE,0xFF,0x6E,0x0C,0x01,0x00,0xFE,0xFF,0x0C,0x66, +0xF9,0x23,0x00,0x00,0x9C,0x98,0x00,0x00,0xFA,0x9A,0x1C,0x60,0x6E,0x0C,0xFF,0xFF, +0xFE,0xFF,0x08,0x66,0x39,0x20,0x00,0x00,0x3A,0x9B,0x06,0x60,0x39,0x20,0x00,0x00, +0xB0,0xC4,0xC0,0x23,0x00,0x00,0xFA,0x9A,0x79,0x52,0x00,0x00,0x36,0xC8,0xF9,0x33, +0x00,0x00,0x0A,0xC9,0x00,0x00,0x10,0x9C,0xF9,0x33,0x00,0x00,0xF8,0x9A,0x00,0x00, +0x2E,0x97,0xF9,0x33,0x00,0x00,0x0C,0x9C,0x00,0x00,0x12,0x9C,0xF9,0x33,0x00,0x00, +0x0E,0x9C,0x00,0x00,0x1E,0x9C,0xEE,0x33,0x08,0x00,0x00,0x00,0x0A,0xC9,0xEE,0x33, +0x0A,0x00,0x00,0x00,0xF8,0x9A,0xAE,0x3E,0x0A,0x00,0x39,0x3F,0x00,0x00,0x0A,0xC9, +0x39,0x2F,0x00,0x00,0xFA,0x9A,0xE4,0xF8,0x8F,0x5C,0x01,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x1F,0x2E,0x2E,0x0A,0x00,0x07,0x20,0x18,0x72,0xA0,0xE2,0xBC,0xC0, +0x00,0x00,0xFF,0x00,0x00,0x3C,0x07,0x20,0x80,0xE0,0xBC,0xC0,0x00,0x00,0xFF,0x00, +0x00,0x3A,0x07,0x20,0xBC,0xC0,0x00,0x00,0xFF,0x00,0x00,0x38,0x05,0x30,0x04,0x32, +0x2E,0x34,0x08,0x00,0x41,0xB5,0x41,0xC0,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70, +0x40,0xBC,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x3D,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x0E,0x00,0x6E,0x20,0x08,0x00,0x68,0x2A,0x14,0x00, +0x6D,0x26,0x0A,0x00,0x4A,0x60,0x6B,0x28,0x04,0x00,0xAB,0x2E,0x10,0x00,0x2E,0x3F, +0x0C,0x00,0xF0,0xF7,0x8F,0x54,0x40,0x4A,0x34,0x67,0x2B,0x20,0x10,0x00,0x10,0x72, +0xA0,0xE2,0x40,0x48,0x40,0x42,0x40,0x48,0xBC,0xC0,0x00,0x00,0xFF,0x00,0x00,0x3C, +0x80,0x42,0x2E,0x30,0x0C,0x00,0x10,0x72,0xA0,0xE3,0x40,0x27,0x18,0x00,0x46,0xBE, +0x04,0x63,0x86,0x3E,0x02,0x60,0x87,0x3E,0x0B,0x2F,0xFC,0xF7,0x8F,0x58,0x4C,0x26, +0x0B,0x20,0xB2,0x66,0x31,0xFE,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x07,0x2E,0x3E, +0x08,0x00,0x2E,0x3C,0x0A,0x00,0xA7,0x42,0x3C,0x3F,0x7C,0x00,0x34,0xF7,0x8F,0x5C, +0x79,0x3D,0x00,0x00,0xBC,0x9A,0xFE,0xFF,0x79,0x3D,0x00,0x00,0xBE,0x9A,0xFC,0xFF, +0x79,0x4A,0x00,0x00,0xCA,0xC6,0x48,0x67,0x39,0x30,0x00,0x00,0x0C,0x9C,0x6E,0x90, +0xFE,0xFF,0x7C,0xB0,0x02,0x00,0x30,0x6E,0x39,0x30,0x00,0x00,0x0C,0x9C,0x6E,0x90, +0xFE,0xFF,0x7C,0xB0,0xFE,0xFF,0x20,0x6D,0x39,0x30,0x00,0x00,0x0E,0x9C,0x6E,0x90, +0xFC,0xFF,0x7C,0xB0,0x02,0x00,0x10,0x6E,0x39,0x30,0x00,0x00,0x0E,0x9C,0x6E,0x90, +0xFC,0xFF,0x7C,0xB0,0xFE,0xFF,0x08,0x6C,0xB9,0x3E,0x00,0x00,0xCA,0xC6,0xF4,0xF8, +0xEE,0x33,0xFE,0xFF,0x00,0x00,0x0C,0x9C,0xEE,0x33,0xFC,0xFF,0x00,0x00,0x0E,0x9C, +0x79,0x4A,0x00,0x00,0x00,0x98,0x4A,0x67,0xFC,0x33,0x01,0x00,0x00,0x00,0xBA,0x95, +0xFC,0x33,0x02,0x00,0x00,0x00,0xBC,0x95,0xBC,0x3E,0x02,0x00,0x67,0x42,0x3C,0x3F, +0x21,0x00,0x34,0xF7,0x8F,0x58,0x86,0x3E,0x07,0x3F,0xF8,0xF8,0x8F,0x54,0xC7,0x33, +0x00,0x00,0xC4,0x98,0xC6,0x33,0x00,0x00,0xC6,0x98,0x57,0x42,0x3C,0x2F,0x1C,0x00, +0x01,0x00,0x34,0xF7,0x8F,0x58,0xC7,0x33,0x00,0x00,0x0C,0x9C,0xC6,0x33,0x00,0x00, +0x0E,0x9C,0x79,0x4A,0x00,0x00,0x0A,0xC9,0x38,0x66,0x79,0x4A,0x00,0x00,0x0A,0xC9, +0x30,0x66,0xB9,0x4A,0x00,0x00,0x26,0x9B,0x28,0x67,0xBC,0x2E,0x00,0x00,0xDA,0x96, +0x39,0x3F,0x00,0x00,0x0E,0x9C,0x39,0x3F,0x00,0x00,0x0C,0x9C,0x60,0xF1,0x8F,0x58, +0x79,0xB0,0x00,0x00,0xD8,0x96,0x0A,0x67,0xF9,0x23,0x00,0x00,0x3A,0x9B,0x00,0x00, +0xFA,0x9A,0xB9,0x3E,0x00,0x00,0x0E,0x9C,0x39,0x3F,0x00,0x00,0x0C,0x9C,0x39,0x2F, +0x00,0x00,0xFA,0x9A,0xE0,0xF8,0x8F,0x5C,0x31,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x1C,0x01,0x6E,0x2A,0x08,0x00,0x6D,0x20,0x14,0x00,0x68,0x28,0x06,0x00,0x1C,0x60, +0x6C,0x26,0x04,0x00,0x2E,0x2F,0x0C,0x00,0x0C,0x2F,0xFC,0xF8,0x8F,0x50,0x40,0x4A, +0x08,0x67,0x57,0x42,0x0C,0x2F,0xFC,0xF7,0x8F,0x58,0x4B,0x28,0x0C,0x20,0xE0,0x66, +0x01,0xFE,0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x07,0x6E,0x2A,0x08,0x00,0x2E,0x3E, +0x0C,0x00,0x2E,0x3C,0x0E,0x00,0x2D,0x08,0x03,0x00,0x15,0x00,0x04,0x66,0x40,0x42, +0x02,0x60,0x01,0x70,0x40,0x3D,0xF6,0xFF,0x2D,0x20,0x10,0x00,0x10,0x72,0xA0,0xE2, +0x40,0x3D,0xF8,0xFF,0x2D,0x20,0x10,0x00,0x40,0x3D,0xFA,0xFF,0x2D,0x20,0x18,0x00, +0x10,0x72,0xA0,0xE2,0x40,0x3D,0xFC,0xFF,0x2D,0x20,0x18,0x00,0x40,0x3D,0xFE,0xFF, +0x8E,0x2E,0x97,0x51,0x06,0x3F,0x07,0x3F,0x60,0xF1,0x8F,0x58,0x6E,0xB0,0xF6,0xFF, +0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x31,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x04,0x01,0x6E,0x2A,0x08,0x00,0x79,0x20,0x00,0x00,0xFA,0x97,0x68,0x4A,0x22,0x00, +0x1E,0x67,0xB9,0x2E,0x00,0x00,0xFA,0x97,0x97,0x06,0x00,0x00,0x0E,0x00,0xEC,0xF7, +0x40,0x48,0x40,0x42,0x40,0x48,0x40,0x2B,0x18,0x00,0x8D,0x2E,0x04,0xF8,0x0E,0x60, +0xB9,0x2E,0x00,0x00,0xFA,0x97,0x97,0x54,0x0D,0x2F,0x08,0xF8,0x8F,0x58,0x01,0xF8, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x03,0x6E,0x2A,0x08,0x00,0x2E,0x2E,0x0C,0x00, +0x87,0x4A,0x02,0x66,0x01,0x7E,0x40,0xF7,0xB9,0x4A,0x00,0x00,0x92,0x94,0x10,0x67, +0xB9,0xBE,0x00,0x00,0x92,0x94,0x06,0x6E,0xC7,0x23,0x00,0x00,0x92,0x94,0x0C,0x60, +0xC7,0x23,0x00,0x00,0x92,0x94,0xB9,0x42,0x00,0x00,0x8E,0x94,0x6D,0x00,0x04,0x00, +0x14,0x00,0x7C,0x26,0x00,0x00,0x1A,0x9C,0xF9,0x97,0x00,0x00,0xF6,0x97,0x79,0x28, +0x00,0x00,0x1A,0x9C,0x10,0x60,0xAC,0xBE,0x10,0x00,0x0E,0x6F,0xAC,0x9E,0x10,0x00, +0x4C,0x26,0x6B,0x28,0x04,0x00,0x0C,0x20,0xEC,0x66,0x4B,0x2B,0x08,0x00,0x4D,0x27, +0x04,0x00,0x47,0x2B,0x10,0x00,0x4C,0x2B,0x04,0x00,0x0C,0x20,0x10,0x67,0x2C,0x20, +0x10,0x00,0x87,0x90,0x00,0x2E,0x4D,0x29,0x08,0x00,0x47,0x29,0x10,0x00,0x44,0xF7, +0x21,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0x6E,0x2A,0x08,0x00,0x2E,0x2E, +0x0C,0x00,0x87,0x2E,0x39,0x3F,0x00,0x00,0x0A,0xC9,0xF0,0xF7,0x8F,0x54,0x40,0x4A, +0x16,0x67,0x80,0x42,0x39,0x30,0x00,0x00,0x0A,0xC9,0x10,0x72,0xA0,0xE3,0x40,0x2B, +0x18,0x00,0x8D,0x2E,0x04,0xF8,0x36,0x60,0x07,0x20,0x10,0x72,0xA0,0xE2,0x40,0x48, +0x40,0x42,0x40,0x48,0xBC,0xC0,0x00,0x00,0xFF,0x00,0x00,0x3C,0x7C,0xBC,0x01,0x00, +0x06,0x6F,0x79,0x52,0x00,0x00,0x4E,0xC8,0x47,0x2B,0x10,0x00,0xB9,0x2E,0x00,0x00, +0xFA,0x97,0x97,0x06,0x00,0x00,0x0A,0x00,0x0D,0x2F,0x08,0xF8,0x8F,0x58,0x31,0xF8, +0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x08,0x00,0xBC,0x3E,0x0A,0x00, +0x2E,0x2F,0x0C,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x28,0xF1,0x8F,0x50, +0x8E,0x2E,0x97,0x51,0x39,0x3F,0x00,0x00,0x0E,0x9C,0x39,0x3F,0x00,0x00,0x0C,0x9C, +0x60,0xF1,0x8F,0x58,0x6E,0xB0,0xF6,0xFF,0x06,0x67,0x8D,0x2E,0x04,0xF8,0x4E,0x60, +0x6E,0x4A,0xF6,0xFF,0x08,0x67,0x6D,0x00,0x08,0x00,0x14,0x00,0x06,0x60,0x6D,0x02, +0xF7,0xFF,0x14,0x00,0x80,0x42,0x2E,0x30,0xF8,0xFF,0x10,0x72,0xA0,0xE3,0x2E,0x32, +0xFA,0xFF,0xC1,0x48,0x81,0xD0,0x40,0x2B,0x10,0x00,0x80,0x42,0x2E,0x30,0xFC,0xFF, +0x10,0x72,0xA0,0xE3,0x2E,0x32,0xFE,0xFF,0xC1,0x48,0x81,0xD0,0x40,0x2B,0x18,0x00, +0xB9,0x2E,0x00,0x00,0xFA,0x97,0x97,0x5C,0x0D,0x2F,0x08,0xF8,0x8F,0x58,0x01,0xF8, +0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x03,0x6E,0x2A,0x0E,0x00,0x47,0x42,0x2E,0x42, +0xFE,0xFF,0xAE,0x4A,0x08,0x00,0x2C,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF, +0x0D,0x2F,0x97,0x06,0x00,0x00,0x0C,0x00,0x3C,0x3F,0x08,0x00,0x5C,0xF3,0x8F,0x5C, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x2E,0x2F,0x08,0x00,0x28,0xF4,0x8F,0x58, +0x00,0x3E,0x12,0x60,0x2D,0x30,0x1C,0x00,0x6E,0xB0,0x0C,0x00,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0x00,0x3E,0x07,0x30,0x21,0xF8,0x56,0x4E,0xFC,0xFF,0xE7,0x48, +0x00,0x03,0x47,0x42,0x3A,0x60,0x07,0x30,0xFC,0xC1,0xB8,0x00,0xBC,0xD0,0x00,0x00, +0x58,0x9C,0x80,0x2E,0x97,0x06,0x00,0x00,0x06,0x12,0x2E,0x3F,0x0C,0x00,0x2E,0x2F, +0x08,0x00,0x44,0xF9,0x8F,0x5C,0x40,0x4A,0x14,0x67,0x07,0x30,0xFC,0xC1,0xB8,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0xBC,0xD0,0x00,0x00,0x06,0x12,0x4A,0x60,0x47,0x52, +0x7C,0xBE,0x03,0x00,0xC0,0x6D,0x47,0x42,0x34,0x60,0x47,0x30,0xC8,0xD1,0xC8,0xD1, +0x7C,0x22,0x00,0x00,0xB2,0xC6,0xB0,0x2E,0x00,0x98,0x2E,0x3F,0x0C,0x00,0x2E,0x2F, +0x08,0x00,0x44,0xF9,0x8F,0x5C,0x40,0x4A,0x12,0x67,0x47,0x30,0xC8,0xD1,0xC8,0xD1, +0x7C,0x22,0x00,0x00,0xB2,0xC6,0x30,0x20,0x00,0x98,0x0C,0x60,0x47,0x52,0x79,0xBE, +0x00,0x00,0x82,0xC6,0xC4,0x6D,0x80,0x42,0x21,0xF0,0x56,0x4E,0xF8,0xFF,0x79,0x0C, +0x03,0x00,0x00,0x00,0x80,0xC6,0x2E,0x6C,0x39,0x30,0x00,0x00,0x80,0xC6,0xFC,0xC1, +0xB8,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0xBC,0xD0,0x00,0x00,0x06,0x12,0x40,0x2D, +0xFC,0xFF,0x6E,0x20,0xFC,0xFF,0x79,0x31,0x00,0x00,0x80,0xC6,0x1C,0x00,0x79,0x52, +0x00,0x00,0x80,0xC6,0x2A,0x60,0x79,0x30,0x00,0x00,0x82,0xC6,0xC8,0xD1,0xC8,0xD1, +0xFC,0xD1,0x00,0x00,0xB2,0xC6,0x50,0x2D,0xFC,0xFF,0x39,0x30,0x00,0x00,0x82,0xC6, +0x40,0x56,0x6E,0x22,0xFC,0xFF,0x40,0x33,0x1C,0x00,0x79,0x52,0x00,0x00,0x82,0xC6, +0x6E,0x20,0xFC,0xFF,0xA8,0x2E,0x08,0x00,0x48,0xF9,0x2E,0x20,0xFC,0xFF,0x01,0xF0, +0x56,0x4E,0xFC,0xFF,0xAE,0x2E,0x08,0x00,0x97,0x06,0x00,0x00,0x0C,0x00,0x3C,0x2F, +0x08,0x00,0x20,0x00,0x94,0xF3,0x8F,0x58,0xBC,0x3E,0x2E,0x00,0x2E,0x2F,0x08,0x00, +0x97,0x06,0x00,0x00,0x0C,0x00,0x2E,0x2F,0x0C,0x00,0x4C,0xF9,0x8F,0x50,0x01,0xF0, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x50,0xF9,0x40,0x2A,0x6E,0x2B,0x10,0x00, +0x18,0x00,0xAE,0x2E,0x0C,0x00,0x0D,0x2F,0x18,0xF9,0x8F,0x58,0xAE,0x2E,0x08,0x00, +0x0D,0x2F,0x54,0xF9,0x8F,0x58,0x6D,0x42,0x1E,0x00,0xB9,0x2A,0x00,0x00,0x16,0x9C, +0xCD,0x23,0x00,0x00,0x16,0x9C,0x0D,0x20,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x1C,0x07,0x6E,0x2A,0x0A,0x00,0x6E,0x20,0x0E,0x00,0x28,0x3E,0x02,0x00,0x6E,0x4A, +0x08,0x00,0x00,0x67,0x7A,0x00,0x87,0x3E,0x6E,0x20,0x0E,0x00,0x28,0x2F,0x04,0x00, +0x2D,0x30,0x36,0x00,0xC0,0x48,0xAD,0xD0,0x32,0x00,0x00,0x2F,0x28,0xF1,0x8F,0x50, +0x4D,0x26,0x2D,0x30,0x36,0x00,0xC0,0x48,0xC0,0xD7,0xFC,0xD7,0x00,0x00,0x38,0x00, +0x53,0x0C,0x14,0x00,0x42,0x66,0x46,0x42,0x34,0x60,0x4D,0x28,0xC6,0xD8,0xFC,0xD9, +0x00,0x00,0x38,0x00,0x54,0x0C,0x14,0x00,0x1A,0x66,0x2B,0x30,0x06,0x00,0x6C,0xB0, +0x06,0x00,0x10,0x66,0x8C,0x2E,0x97,0x50,0x0B,0x2F,0x97,0x50,0x18,0xF3,0x8F,0x58, +0x47,0x42,0x0A,0x60,0x2C,0x30,0x04,0x00,0x7C,0xD0,0x10,0x00,0x40,0xDC,0x6D,0xBC, +0x36,0x00,0x04,0x6C,0x47,0x4A,0xC2,0x66,0x6D,0xDF,0x36,0x00,0x32,0x60,0x87,0x3E, +0x2D,0x2F,0x32,0x00,0x6E,0x20,0x0E,0x00,0x28,0x2F,0x04,0x00,0x28,0xF1,0x8F,0x50, +0x6D,0x9F,0x36,0x00,0x6D,0x4A,0x36,0x00,0x16,0x67,0xAD,0x3E,0x36,0x00,0x07,0x30, +0xC0,0x48,0xAD,0xD0,0x32,0x00,0x00,0x2F,0x2D,0x2F,0x32,0x00,0x28,0xF1,0x8F,0x50, +0x31,0xFE,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x1C,0x01,0x6E,0x2A,0x0A,0x00,0x6E,0x26, +0x0E,0x00,0x93,0x3E,0xA7,0x42,0x2C,0xF7,0x8F,0x58,0x40,0x28,0x6E,0x4A,0x08,0x00, +0x1A,0x67,0x3C,0x30,0x80,0x00,0x6C,0x90,0x36,0x00,0x6B,0xB0,0x02,0x00,0x04,0x6C, +0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFA,0xFF,0x10,0x60,0x6C,0x4A,0x36,0x00, +0x04,0x6E,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFA,0xFF,0x2E,0x30,0x08,0x00, +0x2E,0x32,0xFA,0xFF,0x40,0xB3,0x0A,0x67,0x0C,0x20,0xBC,0xD0,0x00,0x00,0x2E,0x00, +0x08,0x60,0x0C,0x20,0xBC,0xD0,0x00,0x00,0x2A,0x00,0x40,0x2D,0xFC,0xFF,0x6E,0x4A, +0xFA,0xFF,0x56,0x67,0x8B,0x2E,0x0C,0x2F,0x2E,0x3F,0x08,0x00,0x58,0xF9,0x8F,0x5C, +0x8D,0x2E,0x04,0xF8,0x6E,0x20,0xFC,0xFF,0x50,0x2A,0x0D,0x20,0x3A,0x67,0x6D,0x00, +0x01,0x00,0x14,0x00,0x6E,0x20,0xFC,0xFF,0xAD,0x20,0x04,0x00,0xAD,0x4A,0x04,0x00, +0x0A,0x67,0x6D,0x20,0x04,0x00,0x6D,0x21,0x08,0x00,0x08,0x00,0xAD,0x2E,0x10,0x00, +0x0C,0x2F,0x6E,0x4A,0x08,0x00,0x04,0x67,0x67,0x42,0x04,0x60,0x3C,0x3F,0x01,0x00, +0x58,0xF9,0x8F,0x5C,0x8D,0x2E,0x04,0xF8,0x10,0x60,0x6E,0x2B,0x0E,0x00,0x10,0x00, +0xAE,0x2E,0xFC,0xFF,0x0D,0x2F,0x08,0xF8,0x8F,0x58,0x01,0xFE,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x03,0xB9,0x42,0x00,0x00,0x24,0xC8,0x47,0x42,0x30,0x60,0x07,0x30, +0xFC,0xC1,0x0C,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x79,0x21,0x00,0x00, +0x24,0xC8,0x3E,0x17,0x07,0x30,0xFC,0xC1,0x0C,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C, +0xBC,0xD0,0x00,0x00,0x3E,0x17,0xC0,0x23,0x00,0x00,0x24,0xC8,0x47,0x52,0x7C,0xBE, +0x50,0x00,0xCA,0x6D,0x21,0xF0,0x56,0x4E,0xF8,0xFF,0x79,0x2D,0x00,0x00,0x24,0xC8, +0xFC,0xFF,0x0C,0x67,0x79,0x20,0x00,0x00,0x24,0xC8,0xD0,0x23,0x00,0x00,0x24,0xC8, +0x2E,0x20,0xFC,0xFF,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x1C,0x01,0x6E,0x2A, +0x0A,0x00,0x6E,0x28,0x0E,0x00,0x1C,0xFA,0x40,0x26,0x8C,0x26,0x6C,0x37,0x04,0x00, +0x04,0x00,0x6C,0x37,0x08,0x00,0x08,0x00,0xAD,0x3E,0x06,0x00,0x2C,0x3F,0x06,0x00, +0x60,0xF3,0x8F,0x54,0x40,0x37,0x06,0x00,0xAD,0x3E,0x06,0x00,0x2D,0x30,0x0A,0x00, +0x57,0xD1,0x2C,0x3F,0x06,0x00,0x2C,0x30,0x0A,0x00,0x57,0xD1,0x6C,0xF3,0x8F,0x54, +0x6B,0x90,0x06,0x00,0x40,0x37,0x0A,0x00,0x2E,0x30,0x08,0x00,0x6A,0x60,0x6C,0x37, +0x06,0x00,0x06,0x00,0x2D,0x30,0x06,0x00,0x6C,0x90,0x06,0x00,0x40,0x37,0x0A,0x00, +0x6C,0x60,0x2D,0x30,0x04,0x00,0x6C,0x90,0x04,0x00,0x40,0x37,0x08,0x00,0x5E,0x60, +0x2D,0x30,0x04,0x00,0x6D,0xD0,0x08,0x00,0x40,0x37,0x04,0x00,0x2C,0x30,0x04,0x00, +0x6C,0xD0,0x08,0x00,0x2D,0x32,0x04,0x00,0x6D,0xD2,0x08,0x00,0x41,0x90,0x40,0x37, +0x08,0x00,0x3A,0x60,0x2D,0x30,0x06,0x00,0x6D,0xD0,0x0A,0x00,0x40,0x37,0x06,0x00, +0x2C,0x30,0x06,0x00,0x6C,0xD0,0x0A,0x00,0x2D,0x32,0x06,0x00,0x6D,0xD2,0x0A,0x00, +0x41,0x90,0x40,0x37,0x0A,0x00,0x16,0x60,0x40,0x4A,0x92,0x67,0x7C,0xB0,0x01,0x00, +0xA0,0x67,0x7C,0xB0,0x02,0x00,0xA8,0x67,0x7C,0xB0,0x03,0x00,0xC6,0x67,0x0B,0x20, +0x01,0xFE,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x1C,0x03,0x6E,0x2A,0x08,0x00,0x6E,0x28, +0x0C,0x00,0x6E,0x26,0x10,0x00,0x2C,0x30,0x04,0x00,0x6C,0xD0,0x08,0x00,0x6D,0xB0, +0x04,0x00,0x00,0x6F,0xCC,0x00,0x2D,0x30,0x04,0x00,0x6D,0xD0,0x08,0x00,0x6C,0xB0, +0x04,0x00,0x00,0x6F,0xBC,0x00,0x2C,0x30,0x06,0x00,0x6C,0xD0,0x0A,0x00,0x6D,0xB0, +0x06,0x00,0x00,0x6F,0xAC,0x00,0x2D,0x30,0x06,0x00,0x6D,0xD0,0x0A,0x00,0x6C,0xB0, +0x06,0x00,0x00,0x6F,0x9C,0x00,0x2D,0x30,0x06,0x00,0x6C,0xB0,0x06,0x00,0x04,0x6E, +0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xF8,0xFF,0x2D,0x30,0x04,0x00,0x6C,0xB0, +0x04,0x00,0x04,0x6E,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFA,0xFF,0x2D,0x30, +0x04,0x00,0x6D,0xD0,0x08,0x00,0x2C,0x32,0x04,0x00,0x6C,0xD2,0x08,0x00,0x41,0xB0, +0x04,0x6D,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFC,0xFF,0x2D,0x30,0x06,0x00, +0x6D,0xD0,0x0A,0x00,0x2C,0x32,0x06,0x00,0x6C,0xD2,0x0A,0x00,0x41,0xB0,0x04,0x6D, +0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D,0xFE,0xFF,0x47,0x42,0x1A,0x60,0x47,0x30, +0xC8,0xD1,0x76,0x4A,0xF8,0x88,0x0E,0x67,0x8C,0x2E,0x0D,0x2F,0x07,0x3F,0x3C,0xFA, +0x8F,0x5C,0x80,0x26,0x40,0x26,0x47,0x52,0x7C,0xBE,0x04,0x00,0xE0,0x6D,0x94,0x26, +0xB9,0x28,0x00,0x00,0x24,0xC8,0xCC,0x23,0x00,0x00,0x24,0xC8,0x0B,0x20,0x02,0x60, +0x80,0x42,0x21,0xFE,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x1C,0x01,0x2E,0x30,0x0C,0x00, +0xFC,0xC1,0x38,0x00,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x58,0x9C,0xFC,0xDB,0x00,0x00, +0x56,0x28,0x7C,0x2D,0x00,0x00,0xE2,0x96,0xFC,0xFF,0xED,0x47,0x30,0x00,0x4B,0x20, +0x50,0x28,0x1E,0x60,0x8B,0x2E,0x0C,0x2F,0x2E,0x2F,0xFC,0xFF,0x40,0xFA,0x8F,0x50, +0x40,0x26,0x0B,0x20,0x08,0x67,0x55,0x00,0x02,0x00,0x53,0x28,0x04,0x60,0x4C,0x26, +0x53,0x28,0x0C,0x20,0xDE,0x66,0x01,0xFE,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x1C,0x01, +0x2E,0x30,0x0C,0x00,0xFC,0xC1,0x38,0x00,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x58,0x9C, +0xFC,0xDB,0x00,0x00,0x56,0x28,0x6D,0x2D,0x30,0x00,0xFC,0xFF,0xAE,0x4A,0xFC,0xFF, +0x1A,0x67,0x6E,0x26,0xFC,0xFF,0x02,0x60,0x53,0x26,0x93,0x4A,0xFA,0x66,0xB9,0x26, +0x00,0x00,0x24,0xC8,0xEE,0x23,0xFC,0xFF,0x00,0x00,0x24,0xC8,0xAD,0x42,0x30,0x00, +0x55,0x02,0xFD,0xFF,0xBC,0x2E,0x00,0x00,0xE6,0x96,0x2E,0x3F,0x0C,0x00,0x3C,0x3F, +0x04,0x00,0x88,0xF7,0x8F,0x58,0x79,0x4A,0x00,0x00,0xEA,0x96,0x46,0x67,0x79,0x4A, +0x00,0x00,0xEC,0x96,0x3E,0x67,0xB9,0x42,0x00,0x00,0xE2,0x96,0xBC,0x3E,0x08,0x00, +0xA7,0x42,0x3C,0x2F,0xFE,0x00,0x04,0x59,0x2E,0x3F,0x0C,0x00,0x67,0x42,0x2E,0x2F, +0x08,0x00,0x10,0xFA,0xFC,0xDF,0x00,0x00,0x10,0x00,0x1C,0xFA,0x40,0x28,0x94,0x42, +0x8C,0x2E,0x97,0x58,0x2E,0x3F,0x0C,0x00,0x3C,0x3F,0x04,0x00,0x88,0xF7,0x8F,0x58, +0x4C,0x2B,0x30,0x00,0x01,0xFE,0x56,0x4E,0xEC,0xFF,0xE7,0x48,0x00,0x07,0x2E,0x2E, +0x0A,0x00,0x01,0x7C,0x2E,0x30,0x08,0x00,0x00,0x60,0x0A,0x07,0x47,0x20,0xFC,0x20, +0x20,0x01,0x01,0x00,0x79,0x22,0x00,0x00,0x94,0xC7,0xA9,0x30,0x1C,0x00,0x47,0x20, +0xFC,0xD1,0x00,0x00,0x14,0x00,0xF9,0x30,0x00,0x00,0x14,0xC9,0xFC,0x20,0x00,0x00, +0x58,0x9C,0xF9,0x30,0x00,0x00,0x50,0xC8,0xB9,0x30,0x00,0x00,0x28,0xC8,0x79,0x20, +0x00,0x00,0x94,0xC7,0x28,0x3C,0x1C,0x00,0x00,0x60,0xF2,0x06,0x01,0x70,0x02,0x60, +0x02,0x70,0x6E,0x20,0x16,0x00,0x90,0x2E,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x00,0x3F, +0xB4,0xF1,0x00,0x60,0xD2,0x06,0x6E,0x20,0x16,0x00,0x90,0x2E,0xB8,0xF1,0x00,0x3C, +0x00,0x60,0xCA,0x06,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x6E,0x20,0x16,0x00,0x10,0x2F, +0xBC,0xF1,0x00,0x60,0xB0,0x06,0x6E,0x20,0x0E,0x00,0x90,0x3E,0x6E,0x20,0x16,0x00, +0x10,0x2F,0xC0,0xF1,0x00,0x3C,0x00,0x60,0xA0,0x06,0xC4,0xF1,0x79,0x20,0x00,0x00, +0x94,0xC7,0x68,0x4A,0x36,0x00,0x1C,0x67,0xBC,0x2E,0x00,0x00,0xF8,0xB7,0x79,0x20, +0x00,0x00,0x94,0xC7,0x28,0x3F,0x36,0x00,0x28,0x3F,0x1C,0x00,0x3C,0x3F,0x01,0x00, +0xB4,0xF1,0x8F,0x5C,0xC8,0xF1,0x00,0x60,0x74,0x06,0xCC,0xF1,0x00,0x3C,0x00,0x60, +0x6C,0x06,0xAE,0x2E,0x12,0x00,0x97,0x54,0x6E,0x20,0x0E,0x00,0x28,0x2F,0x02,0x00, +0x10,0x3F,0xD0,0xF1,0x00,0x3C,0x00,0x60,0x4E,0x06,0xAE,0x2E,0x12,0x00,0x97,0x54, +0x2E,0x2F,0x0E,0x00,0xD4,0xF1,0x00,0x3C,0x00,0x60,0x3E,0x06,0x6E,0x20,0x16,0x00, +0x90,0x2E,0xD8,0xF1,0x00,0x3C,0x00,0x60,0x34,0x06,0x6E,0x20,0x0E,0x00,0x90,0x3E, +0x28,0x3F,0x02,0x00,0xDC,0xF1,0x00,0x3C,0x00,0x60,0x20,0x06,0x6E,0x20,0x0E,0x00, +0x28,0x08,0x05,0x00,0x01,0x00,0x14,0x67,0x6E,0x20,0x0E,0x00,0x80,0x42,0x28,0x30, +0x1E,0x00,0x40,0x48,0x28,0x30,0x1C,0x00,0x40,0x2D,0xFC,0xFF,0x6E,0x20,0x0E,0x00, +0x80,0x42,0x28,0x30,0x02,0x00,0x40,0x48,0x81,0x42,0x28,0x32,0x04,0x00,0x49,0xE1, +0x28,0x34,0x06,0x00,0x42,0x82,0xBC,0xC2,0x00,0x00,0xFF,0xFF,0x81,0x80,0x40,0x2D, +0xF8,0xFF,0xAE,0x2E,0x12,0x00,0x97,0x54,0x6E,0x20,0x16,0x00,0x10,0x2F,0x2E,0x2F, +0xF8,0xFF,0x2E,0x2F,0xFC,0xFF,0x2E,0x2F,0x0E,0x00,0x97,0x06,0x00,0x00,0x12,0x00, +0x2E,0x2F,0x0E,0x00,0x97,0x50,0x6E,0x20,0x0E,0x00,0x10,0x3F,0xE0,0xF1,0x00,0x3C, +0xFC,0xDF,0x00,0x00,0x16,0x00,0x00,0x60,0xA4,0x05,0x6E,0x20,0x0E,0x00,0x10,0x2F, +0xE4,0xF1,0x00,0x3C,0x00,0x60,0x92,0x05,0x6E,0x20,0x0E,0x00,0x90,0x3E,0x6E,0x20, +0x16,0x00,0x10,0x2F,0xE8,0xF1,0x00,0x60,0x80,0x05,0xA7,0x42,0x6E,0x20,0x0E,0x00, +0x28,0x3F,0x02,0x00,0x3C,0x3F,0x04,0x00,0x10,0x3F,0x6E,0x20,0x16,0x00,0x10,0x2F, +0xEC,0xF1,0x00,0x60,0x5A,0x05,0x57,0x42,0x6E,0x20,0x0E,0x00,0x40,0x42,0x10,0x30, +0x7C,0xC0,0x00,0x80,0x04,0x66,0x67,0x42,0x04,0x60,0x3C,0x3F,0x01,0x00,0x6E,0x20, +0x0E,0x00,0x68,0x4A,0x02,0x00,0x04,0x67,0x67,0x42,0x04,0x60,0x3C,0x3F,0x01,0x00, +0x3C,0x3F,0x08,0x00,0x6E,0x20,0x0E,0x00,0x10,0x3F,0x57,0x02,0xFF,0x7F,0x6E,0x20, +0x16,0x00,0x10,0x2F,0xEC,0xF1,0x00,0x60,0x18,0x05,0x3C,0x2F,0x01,0x00,0x01,0x00, +0x6E,0x20,0x0E,0x00,0x68,0x4A,0x02,0x00,0x04,0x67,0x67,0x42,0x04,0x60,0x3C,0x3F, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x6E,0x20,0x0E,0x00,0x10,0x3F,0x6E,0x20,0x16,0x00, +0x10,0x2F,0xEC,0xF1,0x00,0x60,0xE8,0x04,0x6E,0x20,0x16,0x00,0x50,0x2D,0xF0,0xFF, +0xA8,0x2E,0x04,0x00,0x7C,0x20,0x00,0x00,0x0C,0x00,0x6E,0x22,0x0E,0x00,0x41,0x42, +0x11,0x32,0xFC,0xC2,0x18,0x00,0xAE,0xD2,0xF0,0xFF,0x30,0x2F,0x00,0x18,0x38,0xF1, +0x00,0x60,0xC6,0x04,0x6E,0x20,0x16,0x00,0x90,0x2E,0x6E,0x20,0x0E,0x00,0x10,0x3F, +0xF0,0xF1,0x00,0x3C,0x00,0x60,0xB4,0x04,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x6E,0x20, +0x16,0x00,0x10,0x2F,0xF4,0xF1,0x00,0x60,0x9C,0x04,0x6E,0x20,0x0E,0x00,0x90,0x3E, +0x6E,0x20,0x16,0x00,0x10,0x2F,0xF8,0xF1,0x00,0x60,0x8E,0x04,0xAE,0x2E,0x0E,0x00, +0x97,0x58,0xFC,0xF1,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x6E,0x20,0x16,0x00,0x10,0x2F, +0x00,0xF2,0x00,0x60,0x70,0x04,0x6E,0x20,0x0E,0x00,0x28,0x2F,0x04,0x00,0x10,0x2F, +0x6E,0x20,0x16,0x00,0x10,0x2F,0x04,0xF2,0x00,0x3C,0x00,0x60,0x54,0x04,0xAE,0x2E, +0x12,0x00,0x97,0x58,0x2E,0x2F,0x12,0x00,0x97,0x54,0x6E,0x20,0x0E,0x00,0x10,0x3F, +0x6E,0x20,0x16,0x00,0x10,0x2F,0x08,0xF2,0x00,0x60,0x38,0x04,0x6E,0x20,0x0E,0x00, +0x10,0x2F,0x6E,0x20,0x16,0x00,0x10,0x2F,0x0C,0xF2,0x00,0x60,0x28,0x04,0x6E,0x20, +0x12,0x00,0x6E,0x22,0x0E,0x00,0x69,0x31,0x04,0x00,0x02,0x00,0xA9,0x3E,0x06,0x00, +0x08,0x2F,0x97,0x54,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x6E,0x20,0x16,0x00,0x10,0x2F, +0x10,0xF2,0x00,0x3C,0x00,0x60,0xF8,0x03,0xAE,0x2E,0x0E,0x00,0x97,0x58,0xFC,0xF1, +0x6E,0x20,0x0E,0x00,0x28,0x2F,0x0C,0x00,0x10,0x3F,0x6E,0x20,0x16,0x00,0x10,0x2F, +0x14,0xF2,0x00,0x60,0xDE,0x03,0x6E,0x20,0x0E,0x00,0x90,0x3E,0x6E,0x20,0x16,0x00, +0x10,0x2F,0x18,0xF2,0x00,0x3C,0x00,0x60,0xD0,0x03,0xAE,0x2E,0x0E,0x00,0x97,0x06, +0x00,0x00,0x0A,0x00,0x2E,0x2F,0x0E,0x00,0x97,0x54,0x6E,0x20,0x0E,0x00,0x10,0x3F, +0x1C,0xF2,0x00,0x3C,0x00,0x60,0xB0,0x03,0x6E,0x20,0x16,0x00,0x90,0x2E,0x6E,0x20, +0x0E,0x00,0x10,0x3F,0x20,0xF2,0x00,0x3C,0x00,0x60,0xA0,0x03,0x6E,0x20,0x0E,0x00, +0x90,0x3E,0x24,0xF2,0x00,0x3C,0x00,0x60,0x94,0x03,0xAE,0x2E,0x12,0x00,0x97,0x54, +0x6E,0x20,0x16,0x00,0x10,0x2F,0x28,0xF2,0x00,0x60,0x7E,0x03,0xBC,0x2E,0x00,0x00, +0xAC,0x98,0xFC,0xF1,0x6E,0x20,0x12,0x00,0x6E,0x22,0x0E,0x00,0x69,0x31,0x02,0x00, +0x04,0x00,0x69,0x31,0x04,0x00,0x02,0x00,0xAE,0x2E,0x12,0x00,0x97,0x54,0x2E,0x2F, +0x12,0x00,0x97,0x58,0x11,0x3F,0x6E,0x20,0x16,0x00,0x10,0x2F,0x2C,0xF2,0x00,0x3C, +0x00,0x60,0x40,0x03,0xBC,0x2E,0x00,0x00,0xAC,0x98,0xFC,0xF1,0xAE,0x2E,0x12,0x00, +0x97,0x54,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x6E,0x20,0x16,0x00,0x10,0x2F,0x30,0xF2, +0x00,0x3C,0x00,0x60,0x20,0x03,0xAE,0x2E,0x12,0x00,0x97,0x58,0x2E,0x2F,0x12,0x00, +0x97,0x54,0x6E,0x20,0x0E,0x00,0x28,0x2F,0x04,0x00,0x10,0x2F,0x34,0xF2,0x00,0x60, +0x00,0x03,0xAE,0x2E,0x12,0x00,0x97,0x58,0x2E,0x2F,0x12,0x00,0x97,0x54,0x2E,0x2F, +0x0E,0x00,0x97,0x50,0x6E,0x20,0x0E,0x00,0x28,0x2F,0x04,0x00,0x10,0x2F,0x38,0xF2, +0x00,0x60,0xDA,0x02,0x6E,0x20,0x0E,0x00,0xA8,0x3E,0x0A,0x00,0x6E,0x20,0x0E,0x00, +0x28,0x2F,0x06,0x00,0x28,0x2F,0x02,0x00,0x10,0x3F,0x3C,0xF2,0x00,0x60,0xC4,0x02, +0x7C,0x20,0xFE,0x00,0xAA,0x7F,0x06,0x60,0x7C,0x20,0xFE,0x00,0xE4,0x7F,0xAE,0x2E, +0x0E,0x00,0x97,0x50,0x2E,0x2F,0x0E,0x00,0x90,0x4E,0x00,0x60,0xAC,0x02,0x6E,0x20, +0x0E,0x00,0xA8,0x3E,0x06,0x00,0x28,0x2F,0x02,0x00,0x6E,0x20,0x16,0x00,0x10,0x2F, +0x40,0xF2,0x00,0x3C,0x00,0x60,0x8E,0x02,0x6E,0x20,0x0E,0x00,0xA8,0x3E,0x04,0x00, +0x10,0x2F,0x6E,0x20,0x16,0x00,0x10,0x2F,0x44,0xF2,0x00,0x3C,0x00,0x60,0x76,0x02, +0x6E,0x20,0x12,0x00,0x88,0x54,0xF9,0x30,0x00,0x00,0x32,0xC8,0xF9,0x30,0x00,0x00, +0x72,0xC6,0xF9,0x30,0x00,0x00,0xD6,0x9A,0xB9,0x30,0x00,0x00,0x02,0x97,0x39,0x3C, +0x00,0x00,0x66,0xC7,0x00,0x60,0x56,0x02,0x6E,0x20,0x0E,0x00,0x50,0x0C,0xFF,0x00, +0x14,0x63,0x50,0x0C,0x00,0x01,0x04,0x66,0x48,0xF2,0x42,0x60,0x50,0x0C,0x01,0x01, +0x3C,0x66,0x28,0xF0,0x38,0x60,0x50,0x0C,0xFF,0x00,0x24,0x67,0x6E,0x48,0xF4,0xFF, +0x10,0x3F,0x57,0x56,0x3C,0x3F,0x0E,0x00,0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x6E,0x20,0xF4,0xFF,0x50,0x2D,0xF4,0xFF,0x08,0x60, +0x6E,0x20,0x16,0x00,0x50,0x2D,0xF4,0xFF,0xAE,0x2E,0xF4,0xFF,0x50,0xF2,0x00,0x60, +0xFC,0x01,0x2E,0x20,0x12,0x00,0x80,0x2E,0x97,0x50,0x00,0x2F,0x97,0x5C,0x00,0x2F, +0x97,0x58,0x00,0x2F,0x97,0x54,0x54,0xF2,0x00,0x3C,0x00,0x60,0xD4,0x01,0x6E,0x20, +0x16,0x00,0x90,0x2E,0x58,0xF2,0x00,0x60,0xD4,0x01,0x6E,0x20,0x16,0x00,0x90,0x2E, +0x5C,0xF2,0x00,0x60,0xC8,0x01,0xAE,0x2E,0x12,0x00,0x97,0x54,0x6E,0x20,0x16,0x00, +0x28,0x2F,0x04,0x00,0x10,0x2F,0x60,0xF2,0x00,0x60,0xAA,0x01,0xAE,0x2E,0x0E,0x00, +0x97,0x54,0x6E,0x20,0x0E,0x00,0x10,0x3F,0x64,0xF2,0x00,0x3C,0x00,0x60,0x9C,0x01, +0xAE,0x2E,0x0E,0x00,0x97,0x54,0x6E,0x20,0x0E,0x00,0x10,0x3F,0x68,0xF2,0x00,0x60, +0x8A,0x01,0x6E,0x20,0x0E,0x00,0x90,0x3E,0x6C,0xF2,0x00,0x60,0x80,0x01,0x6E,0x20, +0x0E,0x00,0x90,0x3E,0x70,0xF2,0x00,0x60,0x74,0x01,0xAE,0x2E,0x12,0x00,0x97,0x54, +0x6E,0x20,0x0E,0x00,0x10,0x2F,0x74,0xF2,0x00,0x60,0x5E,0x01,0xAE,0x2E,0x0E,0x00, +0x97,0x58,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x78,0xF2,0x00,0x60,0x4C,0x01,0x6E,0x20, +0x0E,0x00,0x10,0x2F,0x7C,0xF2,0x00,0x3C,0x00,0x60,0x3E,0x01,0x6E,0x20,0x0E,0x00, +0x90,0x3E,0x80,0xF2,0x00,0x60,0x36,0x01,0x2E,0x20,0x12,0x00,0x80,0x2E,0x97,0x50, +0x00,0x2F,0x97,0x5C,0x00,0x2F,0x97,0x58,0x00,0x2F,0x97,0x54,0x6E,0x20,0x0E,0x00, +0x28,0x2F,0x08,0x00,0x28,0x2F,0x04,0x00,0x10,0x2F,0x84,0xF2,0xFC,0xDF,0x00,0x00, +0x18,0x00,0x00,0x60,0x08,0x01,0x6E,0x20,0x16,0x00,0x90,0x2E,0x07,0x2F,0x88,0xF2, +0x00,0x3C,0x00,0x60,0xF4,0x00,0x87,0x2E,0x8C,0xF2,0x00,0x3C,0x00,0x60,0xEE,0x00, +0xBC,0x2E,0x00,0x00,0x4C,0x94,0x6E,0x20,0x0E,0x00,0x10,0x2F,0x07,0x2F,0x4C,0xF2, +0x00,0x3C,0x00,0x60,0xD0,0x00,0x6E,0x20,0x16,0x00,0x90,0x2E,0x6E,0x20,0x0E,0x00, +0x10,0x2F,0x07,0x2F,0x90,0xF2,0x00,0x3C,0x00,0x60,0xBA,0x00,0x6E,0x20,0x0E,0x00, +0x90,0x3E,0x6E,0x20,0x16,0x00,0x10,0x2F,0x94,0xF2,0x00,0x3C,0x00,0x60,0xAA,0x00, +0x6E,0x20,0x16,0x00,0xA8,0x2E,0x04,0x00,0x10,0x2F,0x98,0xF2,0x00,0x3C,0x00,0x60, +0x98,0x00,0x6E,0x20,0x16,0x00,0xA8,0x2E,0x04,0x00,0x10,0x2F,0x6E,0x20,0x0E,0x00, +0x28,0x2F,0x02,0x00,0x10,0x3F,0x9C,0xF2,0x00,0x3C,0x00,0x60,0x76,0x00,0x6E,0x20, +0x0E,0x00,0x90,0x3E,0x6E,0x20,0x16,0x00,0x10,0x2F,0xA0,0xF2,0x00,0x3C,0x68,0x60, +0x6E,0x20,0x0E,0x00,0x90,0x3E,0x6E,0x20,0x16,0x00,0x10,0x2F,0xA4,0xF2,0x00,0x3C, +0x56,0x60,0x97,0x42,0x6E,0x20,0x16,0x00,0x10,0x2F,0xA8,0xF2,0x00,0x3C,0x48,0x60, +0x6E,0x20,0x16,0x00,0xA8,0x2E,0x04,0x00,0x10,0x2F,0xAC,0xF2,0x00,0x3C,0x38,0x60, +0x3C,0x2F,0x00,0x00,0x01,0x00,0x3C,0x2F,0x1B,0x00,0x00,0x00,0xA8,0xF1,0x4F,0x50, +0xFF,0x7C,0x28,0x60,0x7C,0x90,0x0A,0x00,0x7C,0xB0,0x73,0x00,0xE2,0x62,0x40,0xE5, +0x40,0x30,0xFC,0xD1,0xFE,0x00,0x88,0xF4,0x50,0x20,0xD0,0x4E,0x5F,0x4A,0x5F,0x4A, +0x5F,0x4A,0x5F,0x4A,0x5F,0x4A,0x5F,0x4A,0x5F,0x4A,0x5F,0x4A,0x06,0x30,0x31,0xF0, +0x56,0x4E,0xBE,0xFF,0xBC,0x3E,0x04,0x00,0x6E,0x20,0x08,0x00,0x10,0x2F,0x6E,0x48, +0xF8,0xFF,0x70,0xF1,0x8F,0x50,0x6E,0x4A,0xFA,0xFF,0x1A,0x67,0xAE,0x3E,0xFA,0xFF, +0x7C,0x20,0x00,0x00,0x08,0x00,0x6E,0x22,0x08,0x00,0x30,0x2F,0x00,0x98,0x6E,0x48, +0xD8,0xFF,0x70,0xF1,0x8F,0x50,0x6E,0x4A,0xFE,0xFF,0x20,0x67,0x40,0x42,0x2E,0x30, +0xFE,0xFF,0x48,0xE3,0x80,0x3E,0x7C,0x20,0x00,0x00,0x10,0x00,0x6E,0x22,0x08,0x00, +0x30,0x2F,0x00,0x98,0x6E,0x48,0xC2,0xFF,0x70,0xF1,0x8F,0x50,0x6E,0x48,0xC2,0xFF, +0x6E,0x48,0xCA,0xFF,0x6E,0x48,0xD8,0xFF,0x7C,0x20,0x00,0x00,0x04,0x00,0x6E,0x22, +0x08,0x00,0x30,0x2F,0x00,0x98,0x2E,0x3F,0xF8,0xFF,0xB0,0xF2,0xFC,0xDF,0x00,0x00, +0x12,0x00,0x40,0x3D,0xCA,0xFF,0x6E,0x4A,0xFC,0xFF,0x1A,0x67,0xAE,0x3E,0xFC,0xFF, +0x6E,0x48,0xCA,0xFF,0x7C,0x20,0x00,0x00,0x0C,0x00,0x6E,0x22,0x08,0x00,0x30,0x2F, +0x00,0x98,0x70,0xF1,0x8F,0x50,0x6E,0x0C,0x70,0x00,0xF8,0xFF,0x14,0x66,0x7C,0x20, +0x00,0x00,0x14,0x00,0x6E,0x22,0x08,0x00,0x70,0x20,0x00,0x98,0xB9,0x20,0x00,0x00, +0x4C,0x94,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x0C,0xC8,0x00,0x08,0x00,0x06,0x66, +0xAE,0x2E,0x0C,0x00,0xB4,0xF2,0xB8,0xF2,0x57,0x42,0xBC,0xF2,0x01,0xF0,0x56,0x4E, +0xFC,0xFF,0x8E,0x2E,0x97,0x06,0x00,0x00,0x0A,0x00,0x2E,0x3F,0x08,0x00,0x28,0xF7, +0x8F,0x54,0x01,0xF0,0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x01,0xAE,0x2E,0x08,0x00, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x38,0xF1,0x8F,0x58,0x57,0x42,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x2C,0xF7,0x8F,0x58,0x40,0x2A,0x0D,0x20,0x06,0x67, +0x2D,0x30,0x1C,0x00,0x02,0x60,0xFF,0x70,0x01,0xF8,0x56,0x4E,0xF4,0xFF,0xE7,0x48, +0x00,0x07,0x2E,0x2E,0x08,0x00,0xEE,0x41,0xF8,0xFF,0x48,0x2D,0xF4,0xFF,0xB8,0xF2, +0x79,0x42,0x00,0x00,0x00,0x98,0xF9,0x33,0x00,0x00,0x0C,0x9C,0x00,0x00,0x52,0xC8, +0xF9,0x33,0x00,0x00,0x0E,0x9C,0x00,0x00,0x54,0xC8,0x46,0x42,0x00,0x60,0xE2,0x00, +0xBC,0x3E,0x08,0x00,0x07,0x2F,0x2E,0x2F,0xF4,0xFF,0x28,0xF1,0x8F,0x50,0x87,0x50, +0x2E,0x20,0xF8,0xFF,0x00,0x60,0x9C,0x00,0x2E,0x30,0x0E,0x00,0xC0,0x48,0x00,0x2F, +0x3C,0x2F,0x00,0x00,0x64,0x00,0x2E,0x2F,0xFC,0xFF,0xB9,0x4E,0xFE,0x00,0x1E,0x3A, +0x8F,0x50,0x00,0x2F,0xB9,0x4E,0xFE,0x00,0x72,0x3A,0x8F,0x50,0x80,0x2E,0xDC,0xF1, +0xAE,0x42,0xF8,0xFF,0x00,0x60,0x84,0x00,0x79,0x4A,0x00,0x00,0x00,0x98,0x3C,0x66, +0x57,0x42,0x3C,0x2F,0xFE,0x00,0x8E,0xD0,0x30,0xF7,0x8F,0x58,0xA7,0x42,0x3C,0x3F, +0x7F,0x00,0x34,0xF7,0x8F,0x5C,0xBC,0x2E,0x00,0x00,0x7A,0x94,0x38,0xF7,0x57,0x42, +0x3C,0x2F,0xFE,0x00,0x8E,0xD0,0x30,0xF7,0x8F,0x58,0xA7,0x42,0x3C,0x3F,0x7E,0x00, +0x34,0xF7,0x8F,0x5C,0xBC,0x2E,0x00,0x00,0xBC,0x9B,0x38,0xF7,0x7C,0x2D,0xFE,0x00, +0xB6,0x4F,0xF8,0xFF,0xFC,0x33,0x01,0x00,0x00,0x00,0x00,0x98,0x2C,0x60,0x7C,0x2D, +0xFE,0x00,0x42,0x4E,0xF8,0xFF,0x22,0x60,0x7C,0x2D,0xFE,0x00,0xEA,0x4D,0xF8,0xFF, +0x18,0x60,0x40,0x4A,0x00,0x67,0x62,0xFF,0x7C,0xB0,0x01,0x00,0xE0,0x67,0x7C,0xB0, +0x02,0x00,0x84,0x67,0x7C,0xB0,0x03,0x00,0xDE,0x67,0xAE,0x4A,0xF8,0xFF,0x0C,0x67, +0xAE,0x2E,0xFC,0xFF,0x2E,0x2F,0xF8,0xFF,0x3C,0xF7,0x8F,0x58,0xB8,0xF2,0x46,0x52, +0x6E,0xBC,0x0C,0x00,0x00,0x6D,0x1A,0xFF,0x79,0x4A,0x00,0x00,0x00,0x98,0x2E,0x67, +0xB9,0x2E,0x00,0x00,0x7A,0x94,0x30,0xF7,0xA7,0x42,0x3C,0x3F,0x7F,0x00,0x34,0xF7, +0x8F,0x5C,0x57,0x42,0x39,0x2F,0x00,0x00,0xBC,0x9B,0x30,0xF7,0x8F,0x58,0xA7,0x42, +0x3C,0x3F,0x7E,0x00,0x34,0xF7,0x8F,0x5C,0x79,0x42,0x00,0x00,0x00,0x98,0x31,0xF0, +0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x1F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00, +0x40,0xF7,0xFC,0x33,0x01,0x00,0x00,0x00,0x9A,0xC7,0xC6,0x33,0x00,0x00,0x28,0x97, +0xC7,0x23,0x00,0x00,0xEE,0x96,0x44,0xF7,0x08,0x60,0xBC,0x2E,0x00,0x00,0x64,0x00, +0xDC,0xF1,0x79,0x4A,0x00,0x00,0x9A,0xC7,0xF0,0x66,0x40,0xF7,0x79,0x42,0x00,0x00, +0x9A,0xC7,0x79,0x42,0x00,0x00,0x28,0x97,0x39,0x20,0x00,0x00,0xEE,0x96,0x87,0x90, +0x00,0x3C,0xC6,0x48,0xFC,0x8D,0x08,0x00,0xB9,0x42,0x00,0x00,0xEE,0x96,0x44,0xF7, +0x45,0x42,0x48,0x60,0x84,0x42,0x47,0x20,0x50,0x2D,0xFC,0xFF,0x2E,0x20,0xFC,0xFF, +0xBC,0xB0,0xFE,0x00,0x6C,0x4A,0x02,0x66,0x84,0x42,0x2E,0x20,0xFC,0xFF,0xBC,0xB0, +0xFE,0x00,0xB6,0x4F,0x02,0x66,0x02,0x78,0x2E,0x20,0xFC,0xFF,0xBC,0xB0,0xFE,0x00, +0xEA,0x4D,0x02,0x66,0x03,0x78,0x2E,0x20,0xFC,0xFF,0xBC,0xB0,0xFE,0x00,0x42,0x4E, +0x02,0x66,0x01,0x78,0x47,0x20,0x84,0x20,0x87,0x50,0x45,0x52,0x46,0xBA,0xB4,0x6D, +0x06,0x30,0x3D,0xF0,0x56,0x4E,0xFC,0xFF,0x79,0x4A,0x00,0x00,0x36,0xC8,0x18,0x67, +0x6E,0x20,0x08,0x00,0xB9,0x30,0x00,0x00,0x12,0x9C,0x6E,0x20,0x08,0x00,0x79,0x31, +0x00,0x00,0x1E,0x9C,0x02,0x00,0x16,0x60,0x6E,0x20,0x08,0x00,0xB9,0x30,0x00,0x00, +0x0C,0x9C,0x6E,0x20,0x08,0x00,0x79,0x31,0x00,0x00,0x0E,0x9C,0x02,0x00,0x6E,0x20, +0x08,0x00,0x79,0x31,0x00,0x00,0x92,0xC7,0x04,0x00,0x6E,0x20,0x08,0x00,0x79,0x31, +0x00,0x00,0x2A,0xC7,0x06,0x00,0x79,0x42,0x00,0x00,0x36,0xC8,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0xAE,0x2E,0x0A,0x00,0x2E,0x3F,0x08,0x00,0xDC,0xF7,0x8F,0x54,0x40,0x3D, +0xFE,0xFF,0x80,0x3E,0xE0,0xF7,0xAE,0x3E,0xFE,0xFF,0xE4,0xF7,0x01,0xF0,0x56,0x4E, +0xFC,0xFF,0x97,0x42,0x3C,0x3F,0x05,0x00,0x28,0xF7,0x8F,0x54,0x01,0xF0,0x56,0x4E, +0xF6,0xFF,0x80,0x42,0x2E,0x30,0x08,0x00,0x10,0x72,0xA0,0xE3,0x2E,0x32,0x0A,0x00, +0x49,0xE1,0x6E,0x82,0x0C,0x00,0x41,0x48,0x41,0x42,0x41,0x48,0x81,0x80,0x40,0x2D, +0xFA,0xFF,0xAE,0x2E,0xFA,0xFF,0x3C,0x3F,0x07,0x00,0x28,0xF7,0x8F,0x54,0x40,0x3D, +0xFE,0xFF,0xAE,0x2E,0x0E,0x00,0xE8,0xF7,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E, +0xFA,0xFF,0xAE,0x2E,0x08,0x00,0x3C,0x3F,0x06,0x00,0x28,0xF7,0x8F,0x54,0x40,0x3D, +0xFE,0xFF,0xAE,0x2E,0x0C,0x00,0xE8,0xF7,0x6E,0x20,0x0C,0x00,0x79,0x31,0x00,0x00, +0x0A,0xC9,0x04,0x00,0x2E,0x30,0xFE,0xFF,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x79,0x42, +0x00,0x00,0xFE,0x97,0xAE,0x2E,0x08,0x00,0x3C,0x3F,0x10,0x00,0x79,0x20,0x00,0x00, +0x94,0xC7,0x28,0x3F,0x1C,0x00,0x3C,0x3F,0x01,0x00,0xB4,0xF1,0x8F,0x5C,0x01,0xF0, +0x56,0x4E,0xFC,0xFF,0x39,0x30,0x00,0x00,0x1A,0xC9,0xC0,0x48,0x00,0x2F,0x2E,0x2F, +0x08,0x00,0xB9,0x4E,0xFE,0x00,0x72,0x3A,0x8F,0x50,0x80,0x2E,0x3C,0x3F,0x03,0x00, +0x28,0xF7,0x8F,0x54,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A, +0x08,0x00,0x39,0x20,0x00,0x00,0x94,0xC7,0xB9,0xB0,0x00,0x00,0xFA,0x9A,0x1E,0x66, +0x8D,0x2E,0x97,0x54,0x39,0x3F,0x00,0x00,0x0E,0x9C,0x39,0x3F,0x00,0x00,0x0C,0x9C, +0x60,0xF1,0x8F,0x58,0x55,0xB0,0x06,0x67,0x01,0x70,0x04,0x60,0x02,0x60,0x40,0x42, +0x01,0xF8,0x56,0x4E,0xEA,0xFF,0xE7,0x48,0x0C,0x0F,0x2E,0x3E,0x08,0x00,0x6E,0x2A, +0x0A,0x00,0x40,0x42,0x40,0x3D,0xEA,0xFF,0x40,0x3D,0xEC,0xFF,0x40,0x3D,0xEE,0xFF, +0x40,0x3D,0xF0,0xFF,0x40,0x3D,0xF2,0xFF,0x40,0x3D,0xF4,0xFF,0x40,0x3D,0xF6,0xFF, +0x00,0x3A,0xC4,0xF7,0xD0,0xF7,0x07,0x08,0x00,0x00,0x28,0x67,0x79,0x20,0x00,0x00, +0x94,0xC7,0x68,0x28,0x14,0x00,0xFC,0xD9,0x00,0x00,0x0E,0x00,0x6C,0x4A,0x14,0x00, +0x12,0x67,0x8C,0x2E,0xEC,0xF7,0x00,0x3F,0x6E,0x20,0x1E,0x00,0x5F,0x31,0x08,0x00, +0x7C,0x8A,0x01,0x00,0x07,0x08,0x01,0x00,0x72,0x67,0x39,0x20,0x00,0x00,0x94,0xC7, +0xB9,0xB0,0x00,0x00,0xFA,0x9A,0x64,0x66,0x79,0x0C,0x01,0x00,0x00,0x00,0x36,0xC8, +0x2E,0x6F,0xAE,0x2E,0x16,0x00,0x39,0x3F,0x00,0x00,0x10,0x9C,0xF0,0xF7,0x8F,0x54, +0x40,0x4A,0x1C,0x67,0xF9,0x33,0x00,0x00,0x10,0x9C,0x00,0x00,0x92,0xC7,0x7C,0x8A, +0x02,0x00,0x6E,0x20,0x1E,0x00,0x79,0x31,0x00,0x00,0x2E,0x97,0x0A,0x00,0x2C,0x60, +0xAE,0x2E,0x16,0x00,0x39,0x3F,0x00,0x00,0x0A,0xC9,0xF0,0xF7,0x8F,0x54,0x40,0x4A, +0x1A,0x67,0xF9,0x33,0x00,0x00,0x0A,0xC9,0x00,0x00,0x92,0xC7,0x7C,0x8A,0x02,0x00, +0x6E,0x20,0x1E,0x00,0x79,0x31,0x00,0x00,0xF8,0x9A,0x0A,0x00,0x07,0x08,0x02,0x00, +0x0C,0x67,0x8D,0x2E,0xF4,0xF7,0x40,0x4A,0x04,0x67,0x7C,0x8A,0x04,0x00,0x07,0x08, +0x03,0x00,0x0E,0x67,0xAE,0x2E,0x0E,0x00,0xF4,0xF7,0x40,0x4A,0x04,0x67,0x7C,0x8A, +0x08,0x00,0x07,0x08,0x05,0x00,0x10,0x67,0x6E,0x4A,0xF6,0xFF,0x0A,0x66,0xAE,0x4A, +0x12,0x00,0x04,0x66,0x7C,0x8A,0x20,0x00,0x07,0x08,0x04,0x00,0x16,0x67,0x79,0x20, +0x00,0x00,0x94,0xC7,0x68,0x4A,0x36,0x00,0x0A,0x6F,0xAE,0x2E,0x1A,0x00,0xD8,0xF1, +0x7C,0x8A,0x10,0x00,0x45,0x4A,0x00,0x66,0xD6,0x00,0x07,0x08,0x00,0x00,0x12,0x67, +0x97,0x42,0x3C,0x3F,0x05,0x00,0xDC,0xF7,0x8F,0x54,0x40,0x3D,0xF4,0xFF,0x6E,0x81, +0xF6,0xFF,0x07,0x08,0x01,0x00,0x14,0x67,0xAE,0x2E,0x16,0x00,0x3C,0x3F,0x07,0x00, +0xDC,0xF7,0x8F,0x54,0x40,0x3D,0xF2,0xFF,0x6E,0x81,0xF6,0xFF,0x07,0x08,0x02,0x00, +0x12,0x67,0x8D,0x2E,0x3C,0x3F,0x06,0x00,0xDC,0xF7,0x8F,0x54,0x40,0x3D,0xF0,0xFF, +0x6E,0x81,0xF6,0xFF,0x07,0x08,0x03,0x00,0x14,0x67,0xAE,0x2E,0x0E,0x00,0x3C,0x3F, +0x06,0x00,0xDC,0xF7,0x8F,0x54,0x40,0x3D,0xEE,0xFF,0x6E,0x81,0xF6,0xFF,0x07,0x08, +0x04,0x00,0x2C,0x67,0x79,0x20,0x00,0x00,0x94,0xC7,0x68,0x3D,0x1C,0x00,0xF8,0xFF, +0x7C,0x3D,0x10,0x00,0xFA,0xFF,0x6E,0x2D,0x1A,0x00,0xFC,0xFF,0x8E,0x2E,0x97,0x51, +0x3C,0x3F,0x01,0x00,0xDC,0xF7,0x8F,0x54,0x40,0x3D,0xEC,0xFF,0x6E,0x81,0xF6,0xFF, +0x07,0x08,0x05,0x00,0x28,0x67,0x39,0x30,0x00,0x00,0x1A,0xC9,0xC0,0x48,0x00,0x2F, +0x2E,0x2F,0x12,0x00,0xB9,0x4E,0xFE,0x00,0x72,0x3A,0x8F,0x50,0x80,0x2E,0x3C,0x3F, +0x03,0x00,0xDC,0xF7,0x8F,0x54,0x40,0x3D,0xEA,0xFF,0x6E,0x81,0xF6,0xFF,0xAE,0x3E, +0xF6,0xFF,0xE0,0xF7,0x00,0x3C,0xAE,0x3E,0xF6,0xFF,0xF8,0xF7,0x40,0x8C,0xAE,0x2E, +0x1E,0x00,0xE8,0xF7,0x07,0x08,0x01,0x00,0x0C,0x66,0x6E,0x20,0x1E,0x00,0x79,0x31, +0x00,0x00,0x0A,0xC9,0x04,0x00,0x45,0x4A,0x00,0x66,0x8E,0x00,0x06,0x30,0x6E,0xC0, +0xF4,0xFF,0x14,0x67,0xAE,0x3E,0xF4,0xFF,0xE4,0xF7,0x00,0x3F,0x6E,0x20,0x1E,0x00, +0x5F,0x31,0x08,0x00,0x7C,0x8A,0x01,0x00,0x06,0x30,0x6E,0xC0,0xF2,0xFF,0x20,0x67, +0xAE,0x3E,0xF2,0xFF,0xE4,0xF7,0x00,0x3F,0x6E,0x20,0x1E,0x00,0x5F,0x31,0x0A,0x00, +0x6E,0x20,0x1E,0x00,0x79,0x31,0x00,0x00,0x92,0xC7,0x04,0x00,0x7C,0x8A,0x02,0x00, +0x06,0x30,0x6E,0xC0,0xF0,0xFF,0x0A,0x67,0xAE,0x3E,0xF0,0xFF,0xE4,0xF7,0x7C,0x8A, +0x04,0x00,0x06,0x30,0x6E,0xC0,0xEE,0xFF,0x0A,0x67,0xAE,0x3E,0xEE,0xFF,0xE4,0xF7, +0x7C,0x8A,0x08,0x00,0x06,0x30,0x6E,0xC0,0xEC,0xFF,0x0A,0x67,0xAE,0x3E,0xEC,0xFF, +0xE4,0xF7,0x7C,0x8A,0x10,0x00,0x06,0x30,0x6E,0xC0,0xEA,0xFF,0x0A,0x67,0xAE,0x3E, +0xEA,0xFF,0xE4,0xF7,0x7C,0x8A,0x20,0x00,0x05,0x08,0x04,0x00,0x06,0x67,0x79,0x42, +0x00,0x00,0xFE,0x97,0x05,0x30,0x39,0xFC,0x56,0x4E,0xFC,0xFF,0x6E,0x4A,0x0A,0x00, +0x28,0x67,0xEE,0x33,0x08,0x00,0x00,0x00,0x9C,0xC7,0x79,0x30,0x00,0x00,0x9C,0xC7, +0xC8,0xD1,0x7C,0x22,0xFE,0x00,0x58,0xF6,0x30,0x30,0x00,0x98,0xC0,0x48,0xF9,0x81, +0x00,0x00,0x1A,0xC9,0xC0,0x33,0x00,0x00,0x68,0xC7,0x39,0x30,0x00,0x00,0x9C,0xC7, +0x01,0xF0,0x56,0x4E,0xFA,0xFF,0xE7,0x48,0x00,0x3F,0x44,0x42,0x04,0x3E,0x6E,0x20, +0x12,0x00,0x10,0x3C,0x03,0x42,0x00,0x60,0xBA,0x00,0x07,0x30,0x6E,0xD0,0x10,0x00, +0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0xBC,0xD0,0x00,0x00,0x0C,0x00,0x40,0x20, +0x50,0x2D,0xFC,0xFF,0x45,0x42,0x46,0x30,0xEE,0xD1,0x0C,0x00,0x10,0x16,0x7C,0xBA, +0x1F,0x00,0x2A,0x6D,0x45,0x30,0xEE,0xD1,0xFC,0xFF,0x10,0x42,0x03,0x42,0x1C,0x60, +0x46,0x30,0xEE,0xD1,0x0C,0x00,0x10,0x16,0x3C,0xB6,0x5D,0x00,0x0C,0x67,0x3C,0xB6, +0x7C,0x00,0x06,0x67,0x46,0x52,0x04,0x60,0x02,0x60,0x02,0x60,0xE2,0x60,0x46,0x52, +0x6E,0x20,0x0C,0x00,0x46,0x32,0x30,0x10,0x00,0x98,0x80,0x48,0x40,0x3D,0xFA,0xFF, +0x3C,0xB6,0x5D,0x00,0x06,0x67,0x3C,0xB6,0x7C,0x00,0x22,0x66,0x03,0x10,0x80,0x48, +0x6E,0xB0,0xFA,0xFF,0x0E,0x66,0x7C,0xBA,0x1F,0x00,0x04,0x6C,0x46,0x52,0x02,0x60, +0x03,0x42,0x0A,0x60,0x03,0x10,0x80,0x48,0x40,0x3D,0xFA,0xFF,0x03,0x42,0x45,0x30, +0xEE,0xD1,0xFC,0xFF,0x83,0x10,0x45,0x52,0x03,0x4A,0x00,0x66,0x7A,0xFF,0x2E,0x30, +0xFA,0xFF,0x00,0x16,0x84,0x3E,0x05,0x3F,0x57,0x53,0x60,0xF3,0x8F,0x54,0x00,0x38, +0x47,0x52,0x3C,0xB6,0x5D,0x00,0x00,0x66,0x42,0xFF,0x6E,0x20,0x12,0x00,0x86,0x30, +0x6E,0x20,0x16,0x00,0x87,0x30,0x6E,0x20,0x1A,0x00,0x84,0x30,0x3F,0xF0,0x56,0x4E, +0xFE,0xFF,0xE7,0x48,0x00,0x03,0x2E,0x2E,0x08,0x00,0x7C,0x20,0x00,0x00,0x01,0x00, +0x6E,0x22,0x0C,0x00,0x30,0x10,0x00,0x98,0x80,0x48,0x7C,0xD0,0xD0,0xFF,0x6E,0x22, +0x10,0x00,0x80,0x32,0x7C,0x3D,0x04,0x00,0xFE,0xFF,0xAE,0x2E,0x18,0x00,0x2E,0x2F, +0x14,0x00,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x02,0x00,0x2E,0x2F,0x0C,0x00,0x07,0x2F, +0x0C,0xF8,0xFC,0xDF,0x00,0x00,0x12,0x00,0x6E,0x52,0xFE,0xFF,0xAE,0x2E,0x20,0x00, +0x2E,0x2F,0x1C,0x00,0x0E,0x2F,0x97,0x55,0x3C,0x3F,0x07,0x00,0x2E,0x2F,0x0C,0x00, +0x07,0x2F,0x0C,0xF8,0xFC,0xDF,0x00,0x00,0x12,0x00,0x6E,0x20,0x20,0x00,0x50,0x52, +0x21,0xF0,0x56,0x4E,0xDC,0xFF,0xE7,0x48,0x00,0x0F,0x2E,0x2E,0x08,0x00,0x7C,0x3D, +0x04,0x00,0xDE,0xFF,0x7C,0x3D,0x04,0x00,0xDC,0xFF,0x2E,0x3C,0x14,0x00,0xEE,0xCD, +0x12,0x00,0x2E,0x30,0x12,0x00,0x40,0x53,0x40,0xE3,0x40,0xDC,0xAE,0x3E,0x10,0x00, +0x06,0x3F,0x60,0xF3,0x8F,0x54,0x00,0x3C,0xBC,0x3E,0x01,0x00,0x2E,0x3F,0x0E,0x00, +0x60,0xF3,0x8F,0x54,0x00,0x3A,0x85,0x3E,0x06,0x3F,0x57,0x54,0xA7,0x42,0x0E,0x2F, +0x97,0x51,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0xBC,0x3E,0x01,0x00,0x2E,0x3F, +0x10,0x00,0x3C,0x2F,0x02,0x00,0x00,0x03,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE0,0xFF, +0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6E,0x4A,0x0C,0x00,0x42,0x67,0xAE,0x3E, +0xDC,0xFF,0x2E,0x3F,0xDE,0xFF,0x3C,0x2F,0x01,0x00,0x01,0x00,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF0,0xFF,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x30,0xDE,0xFF, +0x40,0x52,0x6E,0xD1,0xFC,0xFF,0xAE,0x3E,0xDC,0xFF,0x57,0x52,0x2E,0x3F,0xFE,0xFF, +0x60,0xF3,0x8F,0x54,0x40,0x3D,0xFE,0xFF,0x2E,0x30,0xDE,0xFF,0x6E,0xD1,0xE0,0xFF, +0x6E,0x56,0xFE,0xFF,0x2E,0x3C,0xFC,0xFF,0x2E,0x30,0x12,0x00,0x40,0x53,0x40,0xE3, +0x40,0x9C,0x2E,0x30,0x14,0x00,0xEE,0xC1,0x12,0x00,0x40,0x9C,0xC6,0x48,0xFC,0x8D, +0x02,0x00,0xBC,0x3E,0x01,0x00,0x2E,0x3F,0x14,0x00,0x2E,0x3F,0xFE,0xFF,0x57,0x55, +0x06,0x3F,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x5C,0xF1,0xFC,0xDF,0x00,0x00, +0x0A,0x00,0x6E,0x53,0xFE,0xFF,0x39,0x30,0x00,0x00,0x72,0xC6,0xC0,0x48,0xFC,0x81, +0x02,0x00,0x40,0xE1,0x6E,0xD1,0xFE,0xFF,0x8E,0x2E,0x97,0x51,0x67,0x42,0x07,0x2F, +0x10,0xF8,0x8F,0x5C,0x46,0x42,0x1C,0x60,0xBC,0x3E,0x06,0x00,0x3C,0x2F,0xFE,0x00, +0x62,0xF6,0x07,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0x81,0xD0,0x00,0x2F,0x28,0xF1, +0x8F,0x50,0x46,0x52,0x7C,0xBC,0x0A,0x00,0xDE,0x6D,0x6E,0x4A,0x0C,0x00,0x1E,0x67, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x3C,0x3F,0x01,0x00,0x07,0x2F,0x10,0xF8, +0x8F,0x5C,0xBC,0x3E,0x01,0x00,0x67,0x42,0x07,0x2F,0xF4,0xF1,0x8F,0x5C,0x46,0x42, +0x24,0x60,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x06,0x3F,0x57,0x54,0x07,0x2F, +0x10,0xF8,0x8F,0x5C,0x6E,0x52,0xE2,0xFF,0x86,0x3E,0x57,0x54,0x67,0x42,0x07,0x2F, +0xF4,0xF1,0x8F,0x5C,0x46,0x52,0x6E,0xBC,0x0E,0x00,0xD6,0x6D,0x46,0x42,0x50,0x60, +0x47,0x20,0x06,0x32,0x41,0x5E,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x50,0xBC,0x30, +0x05,0x00,0x47,0x20,0x06,0x32,0x41,0x5E,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1, +0x00,0x00,0x0A,0x00,0x50,0x42,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x06,0x3F, +0x57,0x5E,0x07,0x2F,0x10,0xF8,0x8F,0x5C,0x2E,0x30,0x14,0x00,0x40,0x54,0x6E,0xD1, +0xE8,0xFF,0x86,0x3E,0x57,0x5E,0x67,0x42,0x07,0x2F,0xF4,0xF1,0x8F,0x5C,0x46,0x52, +0x6E,0xBC,0x12,0x00,0xAA,0x6D,0x47,0x20,0x2E,0x32,0x12,0x00,0x41,0x5C,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x88,0x50,0xBC,0x30,0x25,0x00,0x39,0xF0,0x56,0x4E,0xDC,0xFF, +0xE7,0x48,0x00,0x03,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x3C,0x3F,0x01,0x00, +0x67,0x42,0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0x6E,0x20,0xF2,0xFF, +0xFC,0xD1,0x00,0x00,0x0A,0x00,0xBC,0x30,0x10,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xF6,0xFF,0x0E,0x2F,0x97,0x51,0x0E,0x2F,0x97,0x5D,0x0E,0x2F,0x97,0x59,0x0E,0x2F, +0x97,0x55,0x2E,0x2F,0x0A,0x00,0x2E,0x2F,0xF2,0xFF,0x14,0xF8,0xFC,0xDF,0x00,0x00, +0x18,0x00,0xAE,0x3E,0xF6,0xFF,0x2E,0x3F,0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F, +0xFC,0xFF,0x6E,0x4A,0xFE,0xFF,0x04,0x66,0x67,0x42,0x04,0x60,0x3C,0x3F,0x01,0x00, +0x2E,0x2F,0xF2,0xFF,0x18,0xF8,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x6E,0x4A,0x08,0x00, +0x24,0x67,0x2E,0x30,0x08,0x00,0x40,0x5C,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0xF2,0xFF, +0x80,0x50,0x40,0x2D,0xEE,0xFF,0x6E,0x20,0xEE,0xFF,0x10,0x30,0x7C,0x80,0x02,0x00, +0x6E,0x22,0xEE,0xFF,0x80,0x32,0x6E,0x4A,0xFE,0xFF,0x2A,0x67,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xEE,0xFF,0x2E,0x3F,0xFE,0xFF,0x57,0x53,0x3C,0x3F,0x04,0x00,0x39,0x2F, +0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0x6E,0x20,0xF2,0xFF,0xFC,0xD1,0x00,0x00, +0x24,0x00,0xAE,0x20,0xEE,0xFF,0x47,0x42,0x0C,0x60,0x87,0x3E,0x2E,0x2F,0xF2,0xFF, +0x94,0xF2,0x8F,0x58,0x47,0x52,0x7C,0xBE,0x0A,0x00,0xEE,0x6D,0x6E,0x20,0xF2,0xFF, +0xFC,0xD1,0x00,0x00,0x2C,0x00,0xBC,0x30,0x20,0x00,0x6E,0x20,0xF2,0xFF,0xFC,0xD1, +0x00,0x00,0x2E,0x00,0xBC,0x30,0x20,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF, +0x2E,0x2F,0xF2,0xFF,0x28,0xF2,0x8F,0x58,0xBC,0x3E,0x01,0x00,0x80,0xF2,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xDE,0xFF,0x50,0xF5,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF, +0x1C,0xF8,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0xFC,0xF1,0xBC,0x3E,0x08,0x00, +0x67,0x42,0x2E,0x2F,0xF2,0xFF,0x00,0xF2,0x8F,0x5C,0xBC,0x3E,0x01,0x00,0x20,0xF8, +0x57,0x42,0x2E,0x2F,0xF2,0xFF,0x18,0xF2,0x8F,0x58,0x00,0x3E,0x57,0x42,0x20,0xF8, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0xFC,0xF1,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xE6,0xFF,0x24,0xF8,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDE,0xFF,0xFC,0xF1,0x57,0x42, +0x80,0xF2,0x07,0x30,0x40,0x5D,0x21,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x4A,0x08,0x00, +0x4E,0x67,0xBC,0x3E,0x01,0x00,0x80,0xF2,0x79,0x4A,0x00,0x00,0x50,0x94,0x38,0x66, +0xF9,0x23,0x00,0x00,0x26,0x9B,0x00,0x00,0x52,0x94,0xB9,0x42,0x00,0x00,0x26,0x9B, +0xBC,0x2E,0x00,0x00,0x56,0x94,0x28,0xF8,0xBC,0x2E,0x00,0x00,0x62,0x94,0x3C,0x2F, +0x00,0x00,0x5E,0x94,0x2C,0xF8,0x8F,0x58,0xBC,0x2E,0x00,0x00,0xA4,0x98,0x39,0x2F, +0x00,0x00,0x94,0xC7,0x30,0xF8,0x8F,0x58,0x79,0x52,0x00,0x00,0x50,0x94,0x2C,0x60, +0x79,0x53,0x00,0x00,0x50,0x94,0x79,0x4A,0x00,0x00,0x50,0x94,0x1A,0x66,0xBC,0x2E, +0x00,0x00,0x56,0x94,0x39,0x2F,0x00,0x00,0x62,0x94,0x30,0xF8,0x8F,0x58,0xF9,0x23, +0x00,0x00,0x52,0x94,0x00,0x00,0x26,0x9B,0x57,0x42,0x80,0xF2,0x01,0xF0,0x56,0x4E, +0xFE,0xFF,0xE7,0x48,0x00,0x3F,0x2E,0x2E,0x08,0x00,0x46,0x42,0x08,0x7A,0x01,0x76, +0x2E,0x30,0x0E,0x00,0x0E,0x60,0xFF,0x76,0x03,0x3C,0x6E,0xDC,0x0C,0x00,0x14,0x60, +0x02,0x7A,0x10,0x60,0x40,0x4A,0xF0,0x67,0x7C,0xB0,0x01,0x00,0xE8,0x67,0x7C,0xB0, +0x02,0x00,0xEC,0x67,0x24,0x60,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x88,0x50,0x10,0x38,0x04,0x30,0x45,0xC0,0x04,0x67,0x06,0x30,0x14,0x60,0x04,0x08, +0x05,0x00,0x04,0x67,0xFF,0x7C,0x02,0x60,0x43,0xDC,0x46,0x4A,0xD8,0x6C,0x2E,0x30, +0x0C,0x00,0x3F,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x4A,0x0C,0x00,0x0E,0x66,0xA7,0x42, +0x2E,0x2F,0x08,0x00,0x34,0xF8,0x8F,0x50,0x40,0x3D,0x0C,0x00,0x2E,0x30,0x0C,0x00, +0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x7C,0x3D,0xFF,0xFF,0xFE,0xFF,0x6E,0x20,0x0E,0x00, +0x10,0x30,0x1A,0x60,0x6E,0x42,0x0C,0x00,0x7C,0x3D,0x02,0x00,0xFE,0xFF,0x24,0x60, +0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x1C,0x60,0x6E,0x42,0xFE,0xFF,0x16,0x60,0xC0,0x48, +0x7C,0x20,0xFE,0x00,0x84,0xF6,0x06,0x72,0x98,0xB0,0xC9,0x57,0xFC,0xFF,0x68,0x20, +0x18,0x00,0xD0,0x4E,0x6E,0x0C,0xFF,0xFF,0xFE,0xFF,0x60,0x67,0x6E,0x20,0x0E,0x00, +0x50,0x42,0xAE,0x3E,0xFE,0xFF,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x34,0xF8, +0x8F,0x5C,0x00,0x3F,0x6E,0x20,0x12,0x00,0x9F,0x30,0x6E,0x0C,0x02,0x00,0xFE,0xFF, +0x3A,0x66,0x6E,0x20,0x12,0x00,0x50,0x4A,0x32,0x67,0xBC,0x3E,0x01,0x00,0x7C,0x20, +0x00,0x00,0x0A,0x00,0x6E,0x22,0x12,0x00,0x11,0x32,0xFC,0xC3,0x18,0x00,0xAE,0xD2, +0x08,0x00,0x30,0x3F,0x00,0x18,0x57,0x00,0x01,0x00,0x6E,0x20,0x12,0x00,0x10,0x3F, +0x2E,0x2F,0x08,0x00,0x14,0xF2,0x8F,0x50,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF0, +0x56,0x4E,0xE6,0xFF,0xE7,0x48,0x00,0x0F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00, +0x7C,0x3D,0x01,0x00,0xF6,0xFF,0x6E,0x42,0xFE,0xFF,0x8E,0x2E,0x97,0x51,0x06,0x3F, +0x07,0x2F,0x38,0xF8,0x8F,0x5C,0x40,0x3D,0xFA,0xFF,0x2E,0x08,0x06,0x00,0xF9,0xFF, +0x12,0x67,0x6E,0x0C,0x02,0x00,0x0E,0x00,0x06,0x66,0x7C,0x3D,0x00,0x80,0xFE,0xFF, +0x6E,0x42,0xF6,0xFF,0x2E,0x08,0x00,0x00,0xF9,0xFF,0x00,0x67,0xDC,0x00,0x2E,0x08, +0x03,0x00,0xFB,0xFF,0x00,0x66,0xD2,0x00,0x2E,0x08,0x04,0x00,0xF9,0xFF,0x00,0x67, +0x84,0x00,0x86,0x3E,0x07,0x2F,0x50,0xF1,0x8F,0x58,0x40,0x3D,0xFC,0xFF,0x47,0x20, +0x2E,0x32,0xFC,0xFF,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x54,0x10,0x3A,0x5C,0x60, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x05,0x3F,0x07,0x2F,0x38,0xF8,0x8F,0x5C, +0x40,0x3D,0xF4,0xFF,0x2E,0x08,0x04,0x00,0xF3,0xFF,0x34,0x67,0x2E,0x08,0x00,0x00, +0xF5,0xFF,0x04,0x66,0x46,0xBA,0x28,0x66,0x46,0xBA,0x0E,0x66,0x6E,0x00,0x01,0x00, +0xF4,0xFF,0x6E,0x3D,0xF4,0xFF,0xFA,0xFF,0x06,0x60,0x6E,0x02,0xFE,0xFF,0xF4,0xFF, +0xBC,0x3E,0x01,0x00,0x2E,0x3F,0xF4,0xFF,0x05,0x3F,0x07,0x2F,0x14,0xF2,0x8F,0x50, +0x47,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x10,0x3A,0x6E,0xBA,0xFC,0xFF, +0x9E,0x66,0x20,0x60,0xAE,0x3E,0xFA,0xFF,0x2E,0x30,0xFA,0xFF,0x01,0x72,0x40,0xB3, +0x00,0x3F,0x06,0x3F,0x07,0x2F,0x40,0xF2,0x8F,0x50,0x40,0x4A,0x06,0x67,0x6E,0x0A, +0x01,0x00,0xFA,0xFF,0x6E,0x4A,0xF6,0xFF,0x1E,0x67,0x2E,0x30,0xF8,0xFF,0x7C,0xC0, +0x09,0x00,0x14,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x67,0x42,0x3C,0x2F, +0x01,0x00,0x01,0x00,0xD0,0xF1,0x8F,0x5C,0x2E,0x08,0x00,0x00,0xFB,0xFF,0x0C,0x67, +0x2E,0x08,0x02,0x00,0xF9,0xFF,0x04,0x67,0x6E,0x42,0xF6,0xFF,0x6E,0x4A,0xF6,0xFF, +0x0A,0x67,0x2E,0x08,0x03,0x00,0xF9,0xFF,0x02,0x66,0x46,0x42,0x06,0x30,0x6E,0x80, +0xFE,0xFF,0x6E,0x22,0x10,0x00,0x80,0x32,0x2E,0x30,0xF6,0xFF,0x39,0xF0,0x56,0x4E, +0xEC,0xFF,0xE7,0x48,0x00,0x07,0x2E,0x2E,0x08,0x00,0xBC,0x3E,0x01,0x00,0x3C,0xF8, +0x40,0xF8,0xBC,0x2E,0x00,0x00,0xAC,0x98,0xFC,0xF1,0xAE,0x3E,0x0C,0x00,0x07,0x2F, +0x44,0xF8,0x8F,0x58,0x40,0x3D,0xFE,0xFF,0x46,0x42,0x7C,0x3D,0x01,0x00,0xFA,0xFF, +0x00,0x60,0x02,0x01,0x6E,0x4A,0xFE,0xFF,0x24,0x67,0x6E,0xBC,0xFE,0xFF,0x1E,0x67, +0x2E,0x3C,0xFE,0xFF,0x6E,0x42,0xFE,0xFF,0xBC,0x3E,0x01,0x00,0x0E,0x2F,0x97,0x51, +0x67,0x42,0x06,0x3F,0x07,0x2F,0x10,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xEC,0xFF,0xA7,0x42,0x3C,0x2F,0x02,0x00,0x01,0xFF,0xA7,0x42, +0xA7,0x42,0xA7,0x42,0x3C,0x3F,0x03,0x00,0xE0,0xF1,0xFC,0xDF,0x00,0x00,0x16,0x00, +0x40,0x3D,0xFC,0xFF,0x2E,0x08,0x00,0x00,0xFD,0xFF,0x3A,0x67,0x8E,0x2E,0x97,0x55, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF,0x06,0x3F,0x07,0x2F,0x2C,0xF2,0xFC,0xDF, +0x00,0x00,0x0A,0x00,0x40,0x3D,0xFA,0xFF,0x6E,0x4A,0xF4,0xFF,0x18,0x67,0xBC,0x3E, +0x02,0x00,0x0E,0x2F,0x97,0x51,0x2E,0x3F,0xF4,0xFF,0x06,0x3F,0x07,0x2F,0x10,0xF2, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x2E,0x08,0x01,0x00,0xFD,0xFF,0x3E,0x67,0x2E,0x2F, +0xEC,0xFF,0x3C,0x3F,0x08,0x00,0x67,0x42,0x07,0x2F,0x04,0xF2,0xFC,0xDF,0x00,0x00, +0x0C,0x00,0x40,0x3D,0xFE,0xFF,0x6E,0x0C,0xFF,0xFF,0xFE,0xFF,0x08,0x66,0x48,0xF8, +0x6E,0x42,0xFE,0xFF,0x16,0x60,0x8E,0x2E,0x97,0x55,0x2E,0x3F,0xF6,0xFF,0x2E,0x3F, +0xFE,0xFF,0x07,0x2F,0x30,0xF2,0x8F,0x50,0x40,0x3D,0xFA,0xFF,0x6E,0x4A,0xFA,0xFF, +0x0C,0x67,0x6E,0x4A,0xFE,0xFF,0x1C,0x67,0x6E,0xBC,0xFE,0xFF,0x16,0x67,0xBC,0x3E, +0x03,0x00,0x0E,0x2F,0x97,0x51,0x67,0x42,0x06,0x3F,0x07,0x2F,0x10,0xF2,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x6E,0x4A,0xFA,0xFF,0x00,0x66,0xFA,0xFE,0x57,0x42,0x3C,0xF8, +0x2E,0x30,0xFE,0xFF,0x31,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03,0x2E,0x3E, +0x08,0x00,0x6E,0x2A,0x0A,0x00,0x6E,0x28,0x0E,0x00,0xBC,0x2E,0x00,0x00,0xA4,0x98, +0xFC,0xF1,0x07,0x30,0x28,0x60,0x3C,0x60,0x8C,0x2E,0x0D,0x2F,0x34,0xF5,0x8F,0x58, +0x32,0x60,0x8C,0x2E,0x0D,0x2F,0x38,0xF5,0x8F,0x58,0x28,0x60,0x8C,0x2E,0x4C,0xF8, +0x57,0x42,0x67,0x42,0x0C,0x2F,0x67,0x42,0x50,0xF8,0x8F,0x50,0x16,0x60,0x40,0x4A, +0xD4,0x67,0x7C,0xB0,0x01,0x00,0xD0,0x67,0x7C,0xB0,0x02,0x00,0xD4,0x67,0x7C,0xB0, +0x03,0x00,0xD8,0x67,0x21,0xFC,0x56,0x4E,0xF2,0xFF,0xAE,0x3E,0x08,0x00,0x54,0xF8, +0x40,0x2D,0xFA,0xFF,0x40,0x2D,0xF6,0xFF,0xAE,0x4A,0x0A,0x00,0x1A,0x67,0xAE,0x2E, +0x0A,0x00,0x2E,0x2F,0xFA,0xFF,0x3C,0x2F,0x00,0x00,0x9A,0xB9,0x50,0xF4,0x8F,0x50, +0x7C,0x2D,0x00,0x00,0x9A,0xB9,0xF6,0xFF,0xAE,0x2E,0xF6,0xFF,0x2E,0x3F,0x0E,0x00, +0x20,0xF2,0x8F,0x54,0x01,0xF0,0x56,0x4E,0xEE,0xFF,0x2E,0x30,0x0A,0x00,0x7C,0xD0, +0x41,0x00,0x40,0x1D,0xF2,0xFF,0x2E,0x42,0xF3,0xFF,0xEE,0x41,0xF2,0xFF,0x48,0x2D, +0xF8,0xFF,0x6E,0x30,0x08,0x00,0xC8,0xD1,0x7C,0x22,0xFE,0x00,0x76,0xF6,0x30,0x30, +0x00,0x98,0x7C,0xC0,0xFF,0x00,0x40,0x3D,0xFC,0xFF,0x6E,0x30,0x08,0x00,0xC8,0xD1, +0x7C,0x22,0xFE,0x00,0x76,0xF6,0x30,0x30,0x00,0x98,0x7C,0xC0,0x00,0xFF,0x06,0x67, +0x0E,0x20,0x80,0x51,0x02,0x60,0x80,0x42,0x40,0x2D,0xF4,0xFF,0xAE,0x3E,0xFC,0xFF, +0x2E,0x2F,0xF4,0xFF,0x6E,0x30,0x08,0x00,0xC8,0xD1,0x7C,0x22,0xFE,0x00,0x68,0xF6, +0x30,0x3F,0x00,0x98,0xA8,0xF1,0x8F,0x5C,0x40,0x3D,0xFE,0xFF,0x6E,0x0C,0x01,0x00, +0xFE,0xFF,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x07,0x6E,0x0C,0x3F,0x00,0x08,0x00,0x04,0x6F,0x40,0x42,0x5A,0x60, +0x2E,0x30,0x08,0x00,0x18,0x60,0x13,0x7C,0x2A,0x60,0x15,0x7C,0x26,0x60,0x16,0x7C, +0x22,0x60,0x19,0x7C,0x1E,0x60,0x17,0x7C,0x1A,0x60,0x1A,0x7C,0x16,0x60,0x40,0x55, +0x7C,0xB0,0x10,0x00,0xF4,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0xBC,0xF6, +0x50,0x20,0xD0,0x4E,0xBC,0x3E,0x01,0x00,0x7C,0xBC,0x1A,0x00,0x06,0x66,0x0E,0x2F, +0x97,0x50,0x02,0x60,0xA7,0x42,0x06,0x3F,0xA8,0xF1,0x8F,0x5C,0x00,0x3E,0x7C,0xBE, +0x01,0x00,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x31,0xF0,0x56,0x4E,0xF8,0xFF, +0x8E,0x2E,0x97,0x59,0xA7,0x42,0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50, +0xEE,0x23,0xFC,0xFF,0x00,0x00,0x2A,0x97,0xBC,0x2E,0x00,0x00,0x00,0x9C,0x2E,0x2F, +0xFC,0xFF,0x28,0xF2,0x8F,0x58,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x02,0x60,0x8C,0x53,0x14,0x0C,0x3A,0x00, +0x0A,0x67,0x14,0x0C,0x5C,0x00,0x04,0x67,0xCD,0xB9,0xEE,0x66,0x14,0x0C,0x3A,0x00, +0x12,0x66,0x8C,0x52,0xBC,0x3E,0x40,0x00,0x3C,0x3F,0x5C,0x00,0x67,0x42,0x0C,0x2F, +0x58,0xF8,0x8F,0x50,0x0C,0x20,0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x8C,0x2E,0x0D,0x2F,0x5C,0xF8,0x8F,0x58, +0x40,0x28,0x14,0x0C,0x5C,0x00,0x04,0x66,0x8C,0x52,0x10,0x60,0x8D,0x2E,0x3C,0x2F, +0xFE,0x00,0x50,0xF7,0x4C,0xF3,0x8F,0x58,0xED,0x49,0x03,0x00,0x0C,0x20,0x01,0xFC, +0x56,0x4E,0xF2,0xFF,0xE7,0x48,0x00,0x0F,0xB9,0x2E,0x00,0x00,0xAA,0xC6,0x50,0xF2, +0x6E,0x42,0xFC,0xFF,0x6E,0x42,0xF6,0xFF,0x6E,0x42,0xFA,0xFF,0xB9,0x2E,0x00,0x00, +0x38,0xC8,0x44,0xF4,0xBC,0x3E,0x10,0x00,0x2E,0x2F,0x08,0x00,0x48,0xF4,0x8F,0x58, +0x40,0x3D,0xFE,0xFF,0x00,0x60,0xB4,0x00,0x79,0x20,0x00,0x00,0x38,0xC8,0x28,0x0C, +0x2E,0x00,0x1E,0x00,0x00,0x67,0x8C,0x00,0x79,0x20,0x00,0x00,0x38,0xC8,0x28,0x08, +0x04,0x00,0x15,0x00,0x04,0x67,0x07,0x70,0x02,0x60,0x20,0x70,0x79,0x22,0x00,0x00, +0x38,0xC8,0x40,0x13,0x1D,0x00,0x79,0x20,0x00,0x00,0x38,0xC8,0x28,0x0C,0x07,0x00, +0x1D,0x00,0x18,0x67,0xB9,0x2E,0x00,0x00,0x38,0xC8,0x97,0x06,0x00,0x00,0x1E,0x00, +0x2E,0x2F,0x0C,0x00,0xE0,0xF3,0x8F,0x58,0x40,0x4A,0x46,0x67,0xB9,0x2E,0x00,0x00, +0x38,0xC8,0x97,0x06,0x00,0x00,0x1D,0x00,0x2E,0x30,0xF6,0xFF,0xC0,0x48,0xB9,0xD0, +0x00,0x00,0x2E,0xC7,0x00,0x2F,0x38,0xF1,0x8F,0x58,0x40,0x3D,0xFA,0xFF,0x2E,0x30, +0xF6,0xFF,0xC0,0x48,0x6E,0x32,0xFC,0xFF,0xC9,0xD3,0xC9,0xD3,0xF9,0xD3,0x00,0x00, +0xF8,0xC7,0x80,0x22,0x2E,0x30,0xFA,0xFF,0x40,0x54,0x6E,0xD1,0xF6,0xFF,0x6E,0x52, +0xFC,0xFF,0x68,0xF4,0x40,0x3D,0xFE,0xFF,0x6E,0x0C,0x64,0x00,0xFC,0xFF,0x0A,0x6D, +0x6E,0x42,0xFE,0xFF,0xBC,0x3E,0x07,0x00,0x60,0xF8,0x6E,0x4A,0xFE,0xFF,0x00,0x66, +0x48,0xFF,0x6E,0x20,0x10,0x00,0xAE,0x30,0xFC,0xFF,0x2E,0x3A,0xFC,0xFF,0xC5,0x48, +0xFC,0x8B,0x02,0x00,0x00,0x60,0xC0,0x00,0x05,0x3E,0x00,0x60,0xAC,0x00,0x07,0x3C, +0x45,0x9C,0x00,0x60,0x9C,0x00,0x79,0x20,0x00,0x00,0xF8,0xC7,0x46,0x32,0xC9,0xD3, +0xC9,0xD3,0x30,0x20,0x00,0x98,0xB9,0xD0,0x00,0x00,0x2E,0xC7,0x80,0x2E,0x3C,0x2F, +0x00,0x00,0xFE,0x9A,0x38,0xF1,0x8F,0x58,0x79,0x20,0x00,0x00,0xF8,0xC7,0x46,0x32, +0xC5,0xD2,0xC9,0xD3,0xC9,0xD3,0x30,0x20,0x00,0x98,0xB9,0xD0,0x00,0x00,0x2E,0xC7, +0x80,0x2E,0x3C,0x2F,0x00,0x00,0x46,0x9B,0x38,0xF1,0x8F,0x58,0xBC,0x2E,0x00,0x00, +0x46,0x9B,0x3C,0x2F,0x00,0x00,0xFE,0x9A,0x9C,0xF4,0x8F,0x58,0x40,0x4A,0x46,0x6F, +0x46,0x30,0xC8,0xD1,0xC8,0xD1,0xF9,0xD1,0x00,0x00,0xF8,0xC7,0x50,0x2D,0xF2,0xFF, +0x46,0x30,0xC8,0xD1,0xC8,0xD1,0xF9,0xD1,0x00,0x00,0xF8,0xC7,0x46,0x32,0xC5,0xD2, +0xC9,0xD3,0xC9,0xD3,0xF9,0xD3,0x00,0x00,0xF8,0xC7,0x91,0x20,0x46,0x30,0xC5,0xD0, +0xC8,0xD1,0xC8,0xD1,0xF9,0xD1,0x00,0x00,0xF8,0xC7,0xAE,0x20,0xF2,0xFF,0x45,0x9C, +0x46,0x4A,0x00,0x6C,0x62,0xFF,0x47,0x52,0x6E,0xBE,0xFC,0xFF,0x00,0x6D,0x50,0xFF, +0xC5,0x48,0xFC,0x8B,0x02,0x00,0x45,0x4A,0x00,0x6E,0x3E,0xFF,0xB9,0x2E,0x00,0x00, +0x62,0xC7,0x50,0xF2,0x01,0x70,0x39,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x1F, +0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0x2E,0x3A,0x0C,0x00,0x7C,0xBA,0x08,0x00, +0x06,0x66,0x07,0x30,0x40,0x53,0x04,0x60,0x07,0x30,0x40,0x52,0x00,0x38,0x44,0x4A, +0x02,0x6C,0x44,0x52,0x06,0x30,0x44,0x90,0x7C,0xB0,0x09,0x00,0x02,0x6C,0x44,0x53, +0x7C,0xBC,0x09,0x00,0x04,0x6F,0x04,0x30,0x02,0x60,0x07,0x30,0x3D,0xF0,0x56,0x4E, +0xF6,0xFF,0xE7,0x48,0x00,0x3F,0x2E,0x2E,0x08,0x00,0xAE,0x3E,0x0E,0x00,0x2E,0x30, +0x0C,0x00,0x57,0x91,0x3C,0x3F,0x09,0x00,0x6C,0xF3,0x8F,0x54,0x00,0x3A,0x46,0x42, +0x00,0x60,0x90,0x00,0x45,0xBC,0x42,0x6C,0x79,0x20,0x00,0x00,0xF8,0xC7,0x46,0x32, +0xEE,0xD2,0x0C,0x00,0xC9,0xD3,0xC9,0xD3,0x30,0x20,0x00,0x98,0xB9,0xD0,0x00,0x00, +0x2E,0xC7,0x80,0x2E,0x3C,0x2F,0x00,0x00,0x46,0x9B,0x38,0xF1,0x8F,0x58,0xBC,0x2E, +0x00,0x00,0xFF,0x9A,0x3C,0x2F,0x00,0x00,0x47,0x9B,0x04,0xF4,0x8F,0x58,0xF9,0x13, +0x00,0x00,0x46,0x9B,0x00,0x00,0xFE,0x9A,0x0E,0x60,0xFC,0x13,0x20,0x00,0x00,0x00, +0xFE,0x9A,0x39,0x42,0x00,0x00,0xFF,0x9A,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF, +0x0E,0x2F,0x97,0x5D,0x3C,0x2F,0x00,0x00,0xFE,0x9A,0x06,0x3F,0x57,0x06,0x0C,0x00, +0x07,0x2F,0x74,0xF1,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x47,0x20,0x06,0x32,0x7C,0xD2, +0x0C,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00,0x50,0x42, +0x46,0x52,0x7C,0xBC,0x09,0x00,0x00,0x6D,0x6C,0xFF,0x44,0x42,0x47,0x20,0xFC,0xD1, +0x00,0x00,0x06,0x01,0x10,0x36,0x43,0x3D,0xFE,0xFF,0x6E,0x0C,0x09,0x00,0x0E,0x00, +0x40,0x6F,0xAE,0x3E,0x0E,0x00,0x03,0x3F,0x3C,0x3F,0x09,0x00,0xF4,0xF0,0x8F,0x58, +0x00,0x36,0x83,0x3E,0x39,0x30,0x00,0x00,0x02,0x97,0xC0,0x48,0xFC,0x81,0x02,0x00, +0x00,0x3F,0x60,0xF3,0x8F,0x54,0x00,0x36,0xAE,0x3E,0x0E,0x00,0x57,0x06,0xF7,0xFF, +0x2E,0x3F,0xFE,0xFF,0x03,0x30,0x57,0x91,0x2E,0x3F,0x0C,0x00,0xF4,0xF0,0x8F,0x58, +0x00,0x38,0x47,0x20,0xFC,0xD1,0x00,0x00,0x1A,0x01,0x84,0x30,0x47,0x20,0xFC,0xD1, +0x00,0x00,0x1E,0x01,0x83,0x30,0x01,0x70,0x3F,0xF0,0x56,0x4E,0xFC,0xFF,0x6E,0x4A, +0x08,0x00,0x16,0x67,0xBC,0x3E,0x01,0x00,0x2E,0x2F,0x08,0x00,0x57,0x06,0x0B,0x00, +0x39,0x2F,0x00,0x00,0x2A,0x97,0x14,0xF2,0x8F,0x50,0x01,0xF0,0x56,0x4E,0xEE,0xFF, +0xE7,0x48,0x04,0x1F,0x2E,0x2E,0x08,0x00,0x6E,0x2A,0x0C,0x00,0x2E,0x3A,0x10,0x00, +0x46,0x42,0x0E,0x60,0x2E,0x2F,0x12,0x00,0x05,0x3F,0x64,0xF8,0x8F,0x5C,0x00,0x3A, +0x46,0x52,0x6E,0xBC,0x16,0x00,0xEC,0x6D,0x05,0x38,0x6E,0x98,0x10,0x00,0x44,0x4A, +0x00,0x67,0x2C,0x01,0x45,0x3D,0x10,0x00,0x57,0x42,0x15,0x3F,0x68,0xF8,0x8F,0x54, +0x55,0x42,0x2E,0x2F,0x10,0x00,0x07,0x2F,0x6C,0xF8,0x8F,0x50,0x8E,0x2E,0x97,0x06, +0xFF,0xFF,0xEE,0xFF,0x50,0xF5,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF,0x3C,0x3F, +0x0C,0x00,0x07,0x2F,0x70,0xF8,0x8F,0x5C,0x6E,0x3D,0xFC,0xFF,0xFE,0xFF,0x2E,0x30, +0xFC,0xFF,0xFC,0xC1,0x09,0x00,0x40,0x3D,0xFC,0xFF,0x44,0x4A,0x5C,0x6F,0x7C,0xB8, +0x09,0x00,0x48,0x6C,0x09,0x70,0x44,0x90,0xEE,0xC1,0xFE,0xFF,0x80,0x3E,0x2E,0x2F, +0xF8,0xFF,0x2E,0x3F,0xF6,0xFF,0x04,0x30,0xEE,0xC1,0xFE,0xFF,0x00,0x3F,0x2E,0x30, +0xF8,0xFF,0x57,0xD1,0x2E,0x3F,0xF6,0xFF,0x3C,0x3F,0x03,0x00,0xEC,0xF6,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x09,0x70,0x44,0x90,0xEE,0xC1,0xFE,0xFF,0x6E,0xD1,0xF8,0xFF, +0x04,0x30,0xEE,0xC1,0xFE,0xFF,0x40,0x3D,0xFC,0xFF,0x0C,0x60,0x2E,0x30,0xFE,0xFF, +0xFC,0xC1,0x09,0x00,0x40,0x3D,0xFC,0xFF,0x54,0x60,0x04,0x30,0x40,0x44,0x00,0x38, +0x7C,0xB8,0x09,0x00,0x3C,0x6C,0x09,0x70,0x44,0x90,0xEE,0xC1,0xFE,0xFF,0x80,0x3E, +0x2E,0x3F,0xFA,0xFF,0x04,0x30,0xEE,0xC1,0xFE,0xFF,0x00,0x3F,0x2E,0x30,0xF8,0xFF, +0x57,0xD1,0x2E,0x3F,0xF6,0xFF,0x2E,0x2F,0xF6,0xFF,0x3C,0x3F,0x03,0x00,0xEC,0xF6, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x04,0x30,0xEE,0xC1,0xFE,0xFF,0x40,0x3D,0xFC,0xFF, +0x0C,0x60,0x2E,0x30,0xFE,0xFF,0xFC,0xC1,0x09,0x00,0x40,0x3D,0xFC,0xFF,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF6,0xFF,0xFC,0xF1,0xBC,0x3E,0x08,0x00,0x3C,0x3F,0x06,0x00, +0x07,0x2F,0x00,0xF2,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0xFC,0xF1, +0xBC,0x3E,0x08,0x00,0x3C,0x3F,0x0A,0x00,0x07,0x2F,0x00,0xF2,0x8F,0x5C,0x2E,0x30, +0x10,0x00,0x3D,0xF8,0x56,0x4E,0xF8,0xFF,0xBC,0x3E,0x08,0x00,0x3C,0x3F,0x02,0x00, +0x2E,0x2F,0x14,0x00,0x00,0xF2,0x8F,0x5C,0xAE,0x2E,0x18,0x00,0x2E,0x2F,0x10,0x00, +0x2E,0x2F,0x0C,0x00,0x74,0xF8,0x8F,0x50,0x6E,0x20,0x18,0x00,0x90,0x3E,0x67,0x42, +0x2E,0x2F,0x14,0x00,0x6C,0xF8,0x8F,0x5C,0xFC,0x13,0x20,0x00,0x00,0x00,0xFE,0x9A, +0xBC,0x2E,0x00,0x00,0xFF,0x9A,0x2E,0x2F,0x10,0x00,0x4C,0xF3,0x8F,0x58,0xBC,0x2E, +0x00,0x00,0xFF,0x9A,0x3C,0x2F,0xFE,0x00,0x57,0xF7,0x00,0xF4,0x8F,0x58,0xBC,0x2E, +0x00,0x00,0xFE,0x9A,0x2E,0x2F,0x08,0x00,0x38,0xF1,0x8F,0x58,0x7C,0x2D,0xFE,0x00, +0x00,0xF7,0xFC,0xFF,0x1A,0x60,0xBC,0x3E,0x08,0x00,0x6E,0x20,0xFC,0xFF,0x10,0x10, +0x80,0x48,0x00,0x3F,0x2E,0x2F,0x14,0x00,0x00,0xF2,0x8F,0x5C,0xAE,0x52,0xFC,0xFF, +0x6E,0x20,0xFC,0xFF,0x10,0x4A,0xDE,0x66,0x01,0xF0,0x56,0x4E,0xD2,0xFF,0xE7,0x48, +0x1C,0x1F,0x7C,0x26,0x00,0x00,0x58,0x9C,0xBC,0x2E,0x00,0x00,0x40,0x06,0x64,0xF3, +0xC0,0x23,0x00,0x00,0x2E,0xC7,0xB9,0x4A,0x00,0x00,0x2E,0xC7,0x06,0x66,0x40,0x42, +0x00,0x60,0x1C,0x05,0xBC,0x2E,0x00,0x00,0x90,0x01,0x64,0xF3,0xC0,0x23,0x00,0x00, +0xF8,0xC7,0xB9,0x4A,0x00,0x00,0xF8,0xC7,0x0E,0x66,0xB9,0x2E,0x00,0x00,0x2E,0xC7, +0x78,0xF4,0x40,0x42,0x00,0x60,0xF8,0x04,0xBC,0x2E,0x00,0x00,0x00,0x01,0x64,0xF3, +0xC0,0x23,0x00,0x00,0x38,0xC8,0xB9,0x4A,0x00,0x00,0x38,0xC8,0x16,0x66,0xB9,0x2E, +0x00,0x00,0x2E,0xC7,0x78,0xF4,0xB9,0x2E,0x00,0x00,0xF8,0xC7,0x78,0xF4,0x40,0x42, +0x00,0x60,0xCC,0x04,0x39,0x28,0x00,0x00,0x2A,0x97,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xDA,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE0,0xFF,0x3C,0x2F,0xFE,0x00,0x59,0xF7, +0x3C,0x3F,0x05,0x00,0x04,0x2F,0x74,0xF1,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE8,0xFF,0x2E,0x2F, +0x08,0x00,0x3C,0x3F,0x02,0x00,0x04,0x2F,0x74,0xF1,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0xAE,0x2E,0x0C,0x00,0x3C,0x2F,0x00,0x00,0xFE,0x9A,0x38,0xF1,0x8F,0x58,0xBC,0x2E, +0x00,0x00,0x46,0x9B,0x3C,0x2F,0x00,0x00,0xFE,0x9A,0x04,0xF4,0x8F,0x58,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xDE,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE4,0xFF,0x3C,0x2F, +0x00,0x00,0x46,0x9B,0x3C,0x3F,0x03,0x00,0x04,0x2F,0x74,0xF1,0xFC,0xDF,0x00,0x00, +0x0E,0x00,0xBC,0x2E,0x00,0x00,0x00,0x9C,0xFC,0xF1,0xBC,0x2E,0x00,0x00,0x00,0x9C, +0x3C,0x2F,0x00,0x00,0x62,0xC8,0x67,0x42,0x1C,0xF2,0x8F,0x5C,0x2B,0x42,0xE6,0x1E, +0xBC,0x3E,0x01,0x00,0x67,0x42,0x04,0x2F,0x00,0xF2,0x8F,0x5C,0x6E,0x42,0xF4,0xFF, +0x6E,0x42,0xD2,0xFF,0x01,0x70,0x40,0x3D,0xD4,0xFF,0x40,0x3D,0xD6,0xFF,0x00,0x60, +0x70,0x03,0x6E,0x4A,0xD4,0xFF,0x04,0x67,0x40,0x42,0x0A,0x60,0xBC,0x3E,0x03,0x00, +0x04,0x2F,0x18,0xF2,0x8F,0x58,0x00,0x3E,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF6,0xFF, +0x0E,0x2F,0x97,0x51,0x78,0xF8,0x8F,0x58,0xAE,0x2E,0xE8,0xFF,0x0B,0x2F,0x97,0x06, +0x00,0x00,0x42,0x1C,0x38,0xF1,0x8F,0x58,0x40,0x3D,0xDC,0xFF,0x8B,0x2E,0x97,0x06, +0x00,0x00,0x42,0x1C,0x0B,0x2F,0x97,0x06,0x00,0x00,0xE6,0x1E,0x28,0xF4,0x8F,0x58, +0x40,0x4A,0x00,0x66,0xC0,0x00,0x57,0x42,0x2E,0x3F,0xF4,0xFF,0x68,0xF8,0x8F,0x54, +0x7C,0xBE,0x15,0x00,0x06,0x67,0x7C,0xBE,0x16,0x00,0x0E,0x66,0xBC,0x3E,0x01,0x00, +0x67,0x42,0x07,0x3F,0x04,0x2F,0x14,0xF2,0x8F,0x50,0x8B,0x2E,0x97,0x06,0x00,0x00, +0xE6,0x1E,0x0B,0x2F,0x97,0x06,0x00,0x00,0x42,0x1C,0x4C,0xF3,0x8F,0x58,0x0B,0x20, +0x2E,0x32,0xDC,0xFF,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0xE6,0x1E, +0x0B,0x2F,0x97,0x06,0x00,0x00,0xE6,0x1E,0x7C,0xF8,0x8F,0x58,0x40,0x28,0x8B,0x2E, +0x97,0x06,0x00,0x00,0xE6,0x1E,0x2E,0x2F,0xE8,0xFF,0x38,0xF1,0x8F,0x58,0x0B,0x20, +0x2E,0x32,0xDC,0xFF,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0x42,0x1C, +0x0B,0x2F,0x97,0x06,0x00,0x00,0x42,0x1C,0x7C,0xF8,0x8F,0x58,0x40,0x2A,0x8D,0x2E, +0x3C,0x2F,0xFE,0x00,0x5F,0xF7,0x4C,0xF3,0x8F,0x58,0x8E,0x2E,0x97,0x5D,0x04,0x2F, +0x0C,0x2F,0x0B,0x2F,0x97,0x06,0x00,0x00,0x42,0x1C,0x2E,0x2F,0xE0,0xFF,0x80,0xF8, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x40,0x42,0x40,0x3D,0xF4,0xFF,0x40,0x3D,0xFC,0xFF, +0x6E,0x42,0xD4,0xFF,0x46,0x42,0x07,0x30,0x7C,0xC0,0x00,0x80,0x04,0x66,0x40,0x42, +0x02,0x60,0x01,0x70,0x40,0x3D,0xD8,0xFF,0x7C,0xCE,0xFF,0x7F,0x07,0x30,0x00,0x60, +0xA2,0x01,0x6E,0x42,0xD6,0xFF,0x00,0x60,0xB0,0x01,0x01,0x7C,0x00,0x60,0xAA,0x01, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF, +0x3C,0x3F,0x0B,0x00,0x04,0x2F,0x08,0xF2,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x30, +0xF6,0xFF,0x6E,0xB0,0xF0,0xFF,0x04,0x6E,0x08,0x70,0x02,0x60,0x09,0x70,0x00,0x3E, +0x09,0x7C,0x00,0x60,0x74,0x01,0xBC,0x3E,0x01,0x00,0x3C,0xF8,0xBC,0x3E,0x01,0x00, +0x3C,0x2F,0x0A,0x00,0x0B,0x00,0x04,0x2F,0x44,0xF2,0x8F,0x50,0x00,0x3C,0x57,0x42, +0x3C,0xF8,0xBC,0x3E,0xE8,0x03,0x2E,0x3F,0xFA,0xFF,0x57,0x06,0xF7,0xFF,0x06,0x3F, +0xF4,0xF0,0x8F,0x58,0x00,0x3F,0x2E,0x30,0xFC,0xFF,0x5F,0x90,0x00,0x3C,0x46,0x4A, +0x04,0x6D,0x08,0x7E,0x08,0x60,0x09,0x7E,0x06,0x30,0x40,0x44,0x00,0x3C,0x00,0x60, +0x28,0x01,0x07,0x3A,0x7C,0xDA,0xF5,0xFF,0x6E,0x4A,0xF4,0xFF,0x10,0x67,0x6E,0xBA, +0xF4,0xFF,0x0A,0x67,0x57,0x42,0x2E,0x3F,0xF4,0xFF,0x68,0xF8,0x8F,0x54,0x6E,0xBA, +0xF4,0xFF,0x10,0x67,0x45,0x3D,0xF4,0xFF,0xBC,0x3E,0x01,0x00,0x2E,0x3F,0xF4,0xFF, +0x68,0xF8,0x8F,0x54,0xBC,0x2E,0x00,0x00,0xFE,0x9A,0x07,0x3F,0x04,0x2F,0x84,0xF8, +0x8F,0x5C,0x39,0x0C,0x20,0x00,0x00,0x00,0xFE,0x9A,0x12,0x66,0x7C,0x3D,0x01,0x00, +0xD2,0xFF,0x6E,0x4A,0xD8,0xFF,0x04,0x67,0x6E,0x42,0xD6,0xFF,0x4C,0x60,0x0B,0x20, +0x2E,0x32,0xDC,0xFF,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0x42,0x1C, +0x0B,0x2F,0x97,0x06,0x00,0x00,0x42,0x1C,0x7C,0xF8,0x8F,0x58,0x40,0x2A,0xBC,0x2E, +0x00,0x00,0x46,0x9B,0x0D,0x2F,0x97,0x53,0x4C,0xF3,0x8F,0x58,0x8D,0x2E,0x3C,0x2F, +0x00,0x00,0xFF,0x9A,0x2C,0xF4,0x8F,0x58,0x8D,0x2E,0x3C,0x2F,0x00,0x00,0x46,0x9B, +0x00,0xF4,0x8F,0x58,0x7C,0x3D,0x01,0x00,0xD4,0xFF,0x00,0x60,0x7C,0x00,0x0B,0x20, +0x2E,0x32,0xDC,0xFF,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0x42,0x1C, +0x0B,0x2F,0x97,0x06,0x00,0x00,0x42,0x1C,0x5C,0xF8,0x8F,0x58,0x40,0x2A,0x4D,0x28, +0x4D,0x20,0x10,0x0C,0x5C,0x00,0xC0,0x40,0x8D,0x53,0xC0,0x44,0x2A,0x66,0x7C,0x3D, +0x01,0x00,0xD4,0xFF,0x15,0x0C,0x3A,0x00,0x1E,0x67,0x8D,0x2E,0x0B,0x2F,0x97,0x06, +0x00,0x00,0x42,0x1C,0x5C,0xF8,0x8F,0x58,0x40,0x2A,0x15,0x0C,0x5C,0x00,0x08,0x66, +0x8D,0x2E,0x0C,0x2F,0x4C,0xF3,0x8F,0x58,0x1E,0x60,0x7C,0x3D,0x01,0x00,0xD4,0xFF, +0x16,0x60,0x40,0x59,0x7C,0xB0,0x12,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1, +0xFE,0x00,0x04,0xF7,0x50,0x20,0xD0,0x4E,0x6E,0x4A,0xD4,0xFF,0x20,0x67,0x8B,0x2E, +0x97,0x06,0x00,0x00,0x42,0x1C,0x2E,0x2F,0xE8,0xFF,0x38,0xF1,0x8F,0x58,0x2B,0x42, +0xE6,0x1E,0x39,0x42,0x00,0x00,0xFF,0x9A,0x7C,0x3D,0x01,0x00,0xD2,0xFF,0x6E,0x4A, +0xD2,0xFF,0x36,0x67,0xBC,0x2E,0x00,0x00,0xFF,0x9A,0x2E,0x2F,0xE4,0xFF,0x38,0xF1, +0x8F,0x58,0xBC,0x3E,0x08,0x00,0x3C,0x3F,0x03,0x00,0x04,0x2F,0x00,0xF2,0x8F,0x5C, +0x6E,0x4A,0xD6,0xFF,0x10,0x66,0xBC,0x3E,0x01,0x00,0x3C,0x2F,0x15,0x00,0x01,0x00, +0x04,0x2F,0x14,0xF2,0x8F,0x50,0x6E,0x42,0xD2,0xFF,0x46,0x4A,0x22,0x67,0x86,0x3E, +0x07,0x3F,0x2E,0x3F,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xF4,0xFF,0x04,0x2F,0x88,0xF8,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x40,0x3D,0xFC,0xFF, +0x6E,0x4A,0xD6,0xFF,0x00,0x66,0x8C,0xFC,0xAE,0x2E,0xE8,0xFF,0x2E,0x2F,0x08,0x00, +0x38,0xF1,0x8F,0x58,0xAE,0x2E,0xE4,0xFF,0x3C,0x2F,0x00,0x00,0xFE,0x9A,0x38,0xF1, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0x46,0x9B,0x3C,0x2F,0x00,0x00,0xFE,0x9A,0x2C,0xF4, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0x46,0x9B,0x2E,0x2F,0x0C,0x00,0x38,0xF1,0x8F,0x58, +0xBC,0x2E,0x00,0x00,0x00,0x9C,0x3C,0x2F,0x00,0x00,0x62,0xC8,0x3C,0x3F,0x03,0x00, +0x1C,0xF2,0x8F,0x5C,0x2E,0x2F,0x10,0x00,0x3C,0x2F,0x15,0x00,0x16,0x00,0x04,0x2F, +0x1C,0xF4,0x8F,0x50,0x5F,0x20,0x80,0x30,0x7C,0xB0,0xFF,0xFF,0x06,0x66,0x6E,0x20, +0x10,0x00,0x50,0x42,0xB9,0x2E,0x00,0x00,0x38,0xC8,0x78,0xF4,0xB9,0x2E,0x00,0x00, +0xF8,0xC7,0x78,0xF4,0xB9,0x2E,0x00,0x00,0x2E,0xC7,0x78,0xF4,0x01,0x70,0x3D,0xFE, +0x33,0x30,0x04,0x20,0x48,0xE2,0x37,0x32,0x14,0x20,0x49,0xE2,0x41,0x90,0x75,0x4E, +0xE7,0x48,0x1C,0x00,0xEF,0x41,0x14,0x00,0xD8,0x4C,0x00,0x38,0x00,0x74,0xE0,0x61, +0x80,0x38,0x02,0x74,0xDA,0x61,0x80,0x3A,0x88,0x50,0x10,0x2F,0x20,0x2F,0x20,0x2F, +0x15,0x3F,0x14,0x3F,0x78,0xF0,0x1B,0x30,0x54,0xD1,0x13,0x30,0x55,0xD1,0xFC,0xDE, +0x10,0x00,0xDF,0x4C,0x00,0x38,0x75,0x4E,0xEF,0x4C,0x00,0x30,0x2C,0x00,0xEF,0x4D, +0x10,0x00,0x04,0x70,0x8E,0x55,0x0E,0x2F,0xC8,0x51,0xFA,0xFF,0x0D,0x2F,0x2C,0x2F, +0x04,0x00,0xAC,0x61,0xFC,0xDE,0x1C,0x00,0x75,0x4E,0xE7,0x48,0x0E,0x3F,0xD8,0x61, +0x16,0x2F,0x1C,0x2F,0x14,0x2F,0x7C,0xF0,0x1C,0xF0,0x01,0x7E,0x01,0x70,0x00,0x3F, +0x2E,0x2F,0x06,0x00,0x14,0x2F,0x16,0x2F,0x2E,0x3F,0x04,0x00,0x00,0x3F,0x58,0x61, +0xFC,0xDE,0x12,0x00,0xCF,0x51,0xE6,0xFF,0x28,0xF0,0xFC,0xDE,0x18,0x00,0xDF,0x4C, +0xE0,0x70,0x75,0x4E,0xE7,0x48,0x0E,0x3F,0x9E,0x61,0x1C,0xF0,0x01,0x7E,0x8D,0x58, +0x01,0x70,0x00,0x3F,0x2E,0x3F,0x08,0x00,0x57,0x44,0x2E,0x3F,0x06,0x00,0x57,0x44, +0x15,0x2F,0x25,0x2F,0x2E,0x3F,0x04,0x00,0x00,0x3F,0x1C,0x61,0xFC,0xDE,0x12,0x00, +0xCF,0x51,0xDC,0xFF,0x28,0xF0,0x1C,0x2F,0x16,0x2F,0x14,0x2F,0x4E,0x61,0xFC,0xDE, +0x18,0x00,0xDF,0x4C,0xE0,0x70,0x75,0x4E,0xE7,0x48,0x00,0x0F,0xEF,0x41,0x14,0x00, +0x18,0x38,0x18,0x3A,0x08,0x2F,0x88,0x50,0x18,0x3E,0x18,0x3C,0x44,0x4A,0x04,0x67, +0x80,0xF0,0x02,0x60,0x84,0xF0,0xEF,0x41,0x1C,0x00,0x58,0x9F,0x58,0x9D,0x6F,0x4A, +0x28,0x00,0x0C,0x67,0x07,0x30,0x40,0xD0,0x58,0xD1,0x06,0x30,0x40,0xD0,0x58,0xD1, +0xCD,0x51,0xDA,0xFF,0x8F,0x58,0xDF,0x4C,0xF0,0x00,0x75,0x4E,0xE7,0x48,0x04,0x7F, +0x4F,0x2A,0xEF,0x4C,0xE0,0x00,0x24,0x00,0x06,0x38,0x47,0x98,0x06,0x26,0x43,0x48, +0x47,0x48,0x47,0x96,0x6F,0x48,0x06,0x00,0x6F,0x48,0x08,0x00,0x6F,0x48,0x0A,0x00, +0x03,0x30,0x02,0x6A,0x40,0x44,0x40,0x48,0x04,0x30,0x02,0x6A,0x40,0x44,0x00,0x2F, +0x3A,0x61,0x1D,0x20,0x1D,0x3E,0x43,0x4A,0x02,0x6A,0x47,0x44,0x47,0x48,0x1D,0x3E, +0x44,0x4A,0x02,0x6A,0x47,0x44,0x00,0x78,0x00,0x38,0x1C,0xF0,0x46,0xCB,0x01,0x76, +0x67,0x42,0xE7,0x48,0x00,0x0F,0x88,0xF0,0xFC,0xDE,0x12,0x00,0xCB,0x51,0xF2,0xFF, +0x28,0xF0,0xFC,0xDE,0x18,0x00,0xDF,0x4C,0xF8,0x20,0x75,0x4E,0xE7,0x48,0x0E,0x0F, +0xEF,0x4C,0x80,0x70,0x20,0x00,0x07,0x3C,0x47,0x48,0x3C,0x3F,0x01,0x00,0x8C,0xF0, +0x8F,0x54,0x07,0x38,0x46,0xD8,0xFF,0x7A,0x45,0x52,0x4C,0xE2,0xFA,0x66,0x01,0x70, +0x01,0x72,0x85,0x38,0x14,0x67,0xC7,0x48,0xC5,0x8F,0x47,0xB0,0x02,0x6C,0x07,0x30, +0xC6,0x48,0xC5,0x8D,0x46,0xB2,0x02,0x6C,0x06,0x32,0x80,0x3A,0x81,0x3C,0xDF,0x4C, +0xF0,0x70,0x75,0x4E,0xE7,0x48,0x06,0x3F,0xEF,0x41,0x24,0x00,0x58,0x2A,0x18,0x3A, +0x18,0x2C,0x4F,0x2C,0x3A,0x2F,0xE6,0x00,0x90,0xF0,0x0E,0x2F,0x05,0x3F,0x0D,0x2F, +0x94,0xF0,0x00,0x7E,0x01,0x78,0x46,0x48,0x04,0x3F,0x06,0x3F,0x05,0x3F,0x0D,0x2F, +0x98,0xF0,0x47,0xB9,0x8E,0x58,0x16,0x2F,0x26,0x2F,0x07,0x3F,0x14,0x61,0xFC,0xDE, +0x14,0x00,0x40,0x4A,0xE0,0x66,0x07,0x30,0xFC,0xDE,0x16,0x00,0xDF,0x4C,0xF0,0x60, +0x75,0x4E,0xFC,0x9E,0x0C,0x00,0x0F,0x2F,0xA7,0x42,0x3C,0x2F,0x01,0x00,0x00,0x01, +0xA7,0x42,0xA7,0x42,0x6F,0x48,0x24,0x00,0x3C,0x3F,0x06,0x00,0x9C,0xF0,0xFC,0xDE, +0x26,0x00,0x48,0xE2,0x40,0x46,0x40,0x02,0x01,0x00,0x75,0x4E,0xE7,0x48,0x0C,0xC1, +0xEF,0x4C,0x80,0x30,0x16,0x00,0x0C,0x2F,0x84,0xF0,0x47,0x4A,0x16,0x67,0xEF,0x41, +0x04,0x00,0x08,0x2F,0x03,0x72,0x1D,0x30,0x5C,0xD0,0xC0,0x30,0xC9,0x51,0xF8,0xFF, +0x84,0xF0,0x8F,0x58,0xFC,0xDE,0x0C,0x00,0xDF,0x4C,0x80,0x30,0x75,0x4E,0x1C,0xF0, +0x0C,0x2F,0x0D,0x2F,0x07,0x3F,0xC4,0x61,0xFC,0xDE,0x0A,0x00,0x00,0x60,0x1A,0x05, +0xE7,0x48,0x0C,0x07,0xEF,0x4C,0x20,0x30,0x18,0x00,0x8D,0xCB,0x0C,0x2F,0x3C,0x2F, +0x00,0x00,0x30,0x9B,0xAC,0xF0,0x40,0x08,0x00,0x00,0x00,0x3E,0xD0,0x61,0x01,0x70, +0x00,0x3F,0x00,0x3F,0x05,0x2F,0x00,0x3F,0xB0,0xF0,0x00,0x3C,0xC0,0x61,0x06,0x30, +0xFC,0xDE,0x12,0x00,0xDF,0x4C,0xE0,0x30,0x75,0x4E,0x3C,0x2F,0x00,0x00,0xA4,0x98, +0x90,0xF0,0xAF,0x3E,0x08,0x00,0x03,0x70,0x00,0x2F,0x14,0xF0,0x8F,0x50,0x75,0x4E, +0xEF,0x41,0x10,0x00,0x10,0x2F,0x20,0x2F,0x3A,0x2F,0xB6,0xFF,0x20,0x2F,0x20,0x2F, +0x06,0x61,0xFC,0xDE,0x14,0x00,0x75,0x4E,0xE7,0x48,0x1E,0x1E,0x3C,0x3F,0x01,0x00, +0xBC,0xF0,0xC6,0x61,0xEF,0x4C,0x60,0x70,0x26,0x00,0xEF,0x47,0x02,0x00,0x4B,0x20, +0xC5,0x20,0x58,0x42,0x50,0x42,0xEB,0x41,0x06,0x00,0x08,0x2F,0x88,0x55,0x08,0x2F, +0x06,0x2F,0x20,0x2F,0xC0,0xF0,0x01,0x72,0x2F,0x30,0x14,0x00,0x6F,0xD0,0x18,0x00, +0x40,0x53,0x00,0x3F,0xC9,0x51,0xF2,0xFF,0x0C,0x2F,0x0B,0x2F,0xC4,0xF0,0xFC,0xDE, +0x1C,0x00,0x40,0x4A,0xD0,0x66,0x8B,0x58,0x9B,0x3A,0x93,0x3C,0x67,0x42,0xBC,0xF0, +0xFC,0xDE,0x0C,0x00,0xDF,0x4C,0x60,0x78,0x75,0x4E,0xE7,0x48,0x0E,0x3F,0xEF,0x4C, +0xC0,0x70,0x28,0x00,0x3C,0x3F,0x01,0x00,0xBC,0xF0,0x8C,0xF0,0xEF,0x41,0x06,0x00, +0xC7,0x20,0xC6,0x20,0x88,0x54,0x08,0x2F,0x88,0x55,0x08,0x2F,0xA7,0x42,0x01,0x70, +0x40,0xDE,0x40,0x48,0x80,0xDE,0x07,0x2F,0xC0,0xF0,0xEF,0x41,0x14,0x00,0x08,0x2F, +0x88,0x55,0x08,0x2F,0xD8,0xF0,0x5F,0x20,0x18,0x30,0x6F,0x90,0x22,0x00,0x18,0x32, +0x6F,0x92,0x24,0x00,0xC0,0x30,0x81,0x30,0x88,0x55,0x08,0x2F,0x0C,0x2F,0xDC,0xF0, +0xEF,0x41,0x1E,0x00,0x18,0x2F,0x3A,0x2F,0xE8,0xFE,0x08,0x2F,0xC4,0xF0,0xFC,0xDE, +0x18,0x00,0x40,0x4A,0xC4,0x66,0xAF,0x3A,0x16,0x00,0xAF,0x3C,0x18,0x00,0x67,0x42, +0xBC,0xF0,0xFC,0xDE,0x24,0x00,0xDF,0x4C,0xC0,0x70,0x75,0x4E,0x37,0x30,0x0C,0x20, +0x77,0x90,0x14,0x20,0x40,0x52,0x37,0x32,0x18,0x20,0x41,0xB0,0x02,0x6C,0x01,0x30, +0x58,0x22,0x80,0x32,0x75,0x4E,0x8F,0x59,0x6F,0x48,0x02,0x00,0x6F,0x48,0x04,0x00, +0xD8,0xF0,0xEF,0x41,0x18,0x00,0x00,0x74,0xD2,0x61,0x02,0x74,0xCE,0x61,0xFC,0xDE, +0x0C,0x00,0x75,0x4E,0xE7,0x48,0x0E,0xFF,0xEF,0x41,0x30,0x00,0x58,0x28,0x98,0x4C, +0x70,0x00,0x4F,0x2A,0xEF,0x4D,0x08,0x00,0x0E,0x2F,0x04,0x3F,0x0C,0x2F,0x94,0xF0, +0x0D,0x2F,0x05,0x3F,0x0C,0x2F,0xEC,0xF0,0x6D,0x48,0x02,0x00,0x0D,0x2F,0x0E,0x2F, +0x1D,0x20,0x40,0x48,0x5E,0xD0,0x40,0x48,0x5E,0xD0,0x00,0x2F,0x15,0x2F,0xF0,0xF0, +0x00,0x70,0x00,0x72,0x46,0x4A,0x02,0x67,0x02,0x72,0x35,0x34,0xFC,0x10,0x76,0x94, +0xFC,0x10,0x36,0x3C,0x00,0x10,0x75,0x9C,0x00,0x10,0x0C,0x67,0x06,0x3F,0x3C,0x3F, +0xE8,0x03,0x02,0x3F,0xF4,0xF0,0x8F,0x5C,0xFC,0xDE,0x38,0x00,0xDF,0x4C,0xF0,0x70, +0x75,0x4E,0xFA,0x41,0x16,0x00,0xEF,0x43,0x04,0x00,0x03,0x70,0x58,0x24,0x12,0x32, +0x59,0x24,0x81,0x34,0xC8,0x51,0xF6,0xFF,0x75,0x4E,0x00,0x00,0x0C,0x9C,0x00,0x00, +0x0E,0x9C,0x00,0x00,0x0A,0xC9,0x00,0x00,0x2A,0xC7,0xA7,0x42,0xA7,0x42,0x79,0x48, +0x00,0x00,0x44,0x9C,0xF8,0xF0,0x79,0x48,0x00,0x00,0x00,0x34,0xFC,0xF0,0xC0,0x23, +0x00,0x00,0x44,0x9C,0xEF,0x4F,0x10,0x00,0x75,0x4E,0x39,0x2F,0x00,0x00,0x44,0x9C, +0x00,0xF1,0x8F,0x58,0x75,0x4E,0x6F,0x20,0x04,0x00,0xB9,0x20,0x00,0x00,0x44,0x9C, +0x6F,0x20,0x08,0x00,0xB9,0x20,0x00,0x00,0x20,0xC9,0x75,0x4E,0xEF,0x41,0x04,0x00, +0xF9,0x43,0x00,0x00,0xE0,0xC7,0xD8,0x22,0x89,0x54,0x98,0x32,0x89,0x5C,0xB9,0x32, +0x00,0x00,0x66,0xC7,0xF9,0x4E,0xFE,0x00,0xC4,0xC7,0xEF,0x33,0x06,0x00,0x00,0x00, +0xBA,0x95,0x3C,0x2F,0x00,0x00,0x01,0x00,0x2F,0x3F,0x08,0x00,0xCE,0x61,0x8F,0x5C, +0x75,0x4E,0x6C,0x61,0x04,0xF1,0x30,0x61,0x7C,0x70,0x00,0x61,0xA4,0x03,0xF9,0x41, +0x00,0x00,0xBC,0x9A,0xD8,0x33,0x00,0x00,0x0C,0x9C,0xD8,0x33,0x00,0x00,0x0E,0x9C, +0x75,0x4E,0x2F,0x30,0x04,0x00,0xF9,0x43,0x00,0x00,0x0C,0xC9,0x51,0xB0,0x22,0x67, +0x80,0x32,0x20,0x67,0x02,0x70,0x2C,0x61,0x79,0x48,0x00,0x00,0x7A,0x94,0x79,0x48, +0xFE,0x00,0x4E,0xD0,0x79,0x48,0xFE,0x00,0x28,0xD0,0x00,0x61,0x74,0x01,0xEF,0x4F, +0x0C,0x00,0x75,0x4E,0x03,0x70,0x0C,0x61,0x00,0x60,0x98,0x01,0x11,0x70,0x04,0x60, +0x2F,0x30,0x04,0x00,0xC0,0x33,0x00,0x00,0xEA,0xC7,0x05,0x70,0x00,0x60,0x42,0x03, +0xF9,0x43,0x00,0x00,0xBA,0x95,0x49,0x24,0x09,0x70,0xFC,0x32,0x01,0x00,0xC8,0x51, +0xFA,0xFF,0xBC,0x32,0x02,0x00,0xB9,0x34,0x00,0x00,0x08,0x89,0x79,0x48,0x00,0x00, +0x92,0xC8,0x79,0x48,0x00,0x00,0x66,0xC7,0x52,0x48,0x00,0x61,0x0C,0x02,0xEF,0x4F, +0x0C,0x00,0xF9,0x43,0x00,0x00,0x92,0xC8,0xF9,0x45,0x00,0x00,0x08,0x89,0xBC,0x34, +0x03,0x00,0x59,0x0C,0x3F,0x01,0x06,0x66,0xBC,0x34,0x02,0x00,0x0A,0x60,0x51,0x0C, +0x8F,0x01,0x04,0x66,0xBC,0x34,0x04,0x00,0x79,0x42,0x00,0x00,0x0A,0x89,0xFC,0x33, +0x01,0x00,0x00,0x00,0x0C,0xC9,0x75,0x4E,0x02,0x70,0x00,0x60,0xD4,0x02,0x67,0x42, +0x3C,0x3F,0x7A,0x00,0x00,0x61,0x04,0xFF,0x8F,0x58,0x79,0x42,0x00,0x00,0x6A,0xC8, +0x75,0x4E,0xEF,0x41,0x04,0x00,0x18,0x30,0x18,0x22,0x18,0x34,0x40,0xD2,0x41,0x53, +0x48,0xE8,0x49,0xE8,0x40,0x92,0x41,0x52,0xF9,0x43,0x00,0x00,0x4E,0x9C,0xBC,0x32, +0x01,0x00,0x01,0x33,0x02,0x33,0x49,0xE9,0x01,0x33,0x58,0x22,0x58,0x24,0x9A,0x42, +0x41,0x53,0xC1,0x34,0x42,0x53,0xC2,0x34,0x48,0xE9,0xC0,0x32,0x40,0xD2,0xC1,0x22, +0x41,0x48,0x41,0xD4,0xC2,0x32,0xA7,0x42,0xA7,0x42,0x18,0x2F,0xF8,0xF0,0x00,0x61, +0x2C,0x01,0xEF,0x41,0x28,0x00,0x10,0x2F,0x20,0x2F,0x79,0x48,0x00,0x00,0xC4,0x98, +0x3C,0x3F,0x03,0x00,0x00,0x61,0x04,0x02,0xEF,0x4F,0x1A,0x00,0x00,0x60,0x2A,0x01, +0x79,0x48,0x00,0x00,0x44,0x9C,0xF9,0x43,0x00,0x00,0xA6,0x9B,0x51,0x48,0x51,0x48, +0x79,0x48,0x00,0x00,0xCC,0x98,0x79,0x48,0x00,0x00,0xC4,0x98,0x6F,0x20,0x18,0x00, +0x28,0x2F,0x04,0x00,0x10,0x2F,0x00,0x61,0x6A,0xFF,0xEF,0x4F,0x1C,0x00,0x75,0x4E, +0xF9,0x43,0x00,0x00,0xDE,0x9B,0x51,0x48,0x79,0x48,0x00,0x00,0x44,0x9C,0x51,0x48, +0x79,0x48,0x00,0x00,0xC4,0x98,0x79,0x48,0x00,0x00,0xCC,0x98,0x6F,0x20,0x18,0x00, +0x28,0x2F,0x04,0x00,0x10,0x2F,0x00,0x61,0x3A,0xFF,0xEF,0x4F,0x1C,0x00,0x75,0x4E, +0xEF,0x23,0x04,0x00,0x00,0x00,0xEE,0xC7,0x7D,0x70,0x00,0x61,0xE4,0x01,0xF9,0x23, +0x00,0x00,0xF2,0xC7,0x00,0x00,0xFC,0xC7,0xEF,0x23,0x08,0x00,0x00,0x00,0xEE,0xC7, +0x7E,0x70,0x00,0x61,0xCC,0x01,0xF9,0x23,0x00,0x00,0xF2,0xC7,0x00,0x00,0x1C,0xC9, +0x75,0x4E,0xF9,0x23,0x00,0x00,0xFC,0xC7,0x00,0x00,0xEE,0xC7,0x7D,0x70,0x00,0x61, +0xB0,0x01,0xF9,0x23,0x00,0x00,0x1C,0xC9,0x00,0x00,0xEE,0xC7,0x7E,0x70,0x00,0x60, +0xA0,0x01,0xEF,0x23,0x04,0x00,0x00,0x00,0xEE,0xC7,0x76,0x70,0x00,0x61,0x92,0x01, +0x6F,0x20,0x08,0x00,0xB9,0x20,0x00,0x00,0xF2,0xC7,0x39,0x30,0x00,0x00,0x06,0x97, +0x75,0x4E,0x38,0x61,0x24,0x70,0x6F,0x20,0x04,0x00,0x79,0x22,0x00,0x00,0x44,0xC8, +0xD8,0x32,0xC8,0x51,0xFC,0xFF,0x00,0x70,0x00,0x61,0x6A,0x01,0x3A,0x60,0xEF,0x41, +0x04,0x00,0x58,0x22,0xB9,0x32,0x00,0x00,0x0C,0x9C,0x58,0x22,0xB9,0x32,0x00,0x00, +0x0E,0x9C,0x75,0x4E,0x39,0x30,0x00,0x00,0x0A,0xC9,0x75,0x4E,0x79,0x4A,0x00,0x00, +0x6A,0xC8,0x0C,0x66,0x7B,0x70,0x00,0x61,0x38,0x01,0x79,0x42,0x00,0x00,0x6E,0x9B, +0x79,0x52,0x00,0x00,0x6A,0xC8,0x75,0x4E,0x01,0x70,0x79,0x91,0x00,0x00,0x6A,0xC8, +0x14,0x66,0x00,0x3F,0x3C,0x3F,0x7A,0x00,0x00,0x61,0x50,0xFD,0x8F,0x58,0xFC,0x33, +0x01,0x00,0x00,0x00,0x6E,0x9B,0x75,0x4E,0xEF,0x23,0x04,0x00,0x00,0x00,0x6A,0x94, +0x6F,0x22,0x0C,0x00,0xC9,0x23,0x00,0x00,0x72,0x94,0xE9,0x43,0x5A,0x00,0xC9,0x23, +0x00,0x00,0x76,0x94,0x03,0x70,0x00,0x61,0xEC,0x00,0x6F,0x22,0x08,0x00,0xB9,0x32, +0x00,0x00,0xEC,0xC7,0xFC,0x23,0x00,0x00,0xBA,0x95,0x00,0x00,0x6A,0x94,0xFC,0x23, +0x00,0x00,0x06,0x97,0x00,0x00,0x72,0x94,0xFC,0x23,0x00,0x00,0xBC,0x9A,0x00,0x00, +0x76,0x94,0x75,0x4E,0xEF,0x41,0x04,0x00,0x67,0x42,0x18,0x3F,0x3C,0x3F,0x06,0x00, +0x00,0x61,0xA6,0x00,0x00,0x60,0xC0,0x00,0xEF,0x41,0x04,0x00,0xD8,0x33,0x00,0x00, +0xBA,0x95,0x00,0x61,0x94,0x00,0x06,0x70,0x00,0x60,0x9A,0x00,0xF9,0x43,0x00,0x00, +0xC4,0x98,0x59,0x42,0xEF,0x32,0x04,0x00,0x09,0x70,0x00,0x61,0x88,0x00,0xF9,0x41, +0x00,0x00,0xBC,0x9A,0xEF,0x43,0x06,0x00,0x59,0x24,0x98,0x34,0x59,0x24,0x98,0x34, +0x59,0x24,0x98,0x34,0x59,0x24,0x98,0x34,0x75,0x4E,0xEF,0x41,0x04,0x00,0x58,0x61, +0xD8,0x23,0x00,0x00,0xEE,0xC7,0x0C,0x70,0x5A,0x60,0xEF,0x41,0x04,0x00,0xD8,0x33, +0x00,0x00,0xBA,0x95,0x42,0x61,0x34,0x61,0x0F,0x70,0x48,0x60,0xEF,0x41,0x04,0x00, +0xF9,0x45,0x00,0x00,0xBA,0x95,0xD8,0x34,0x2E,0x61,0x20,0x61,0xD8,0x24,0x12,0x70, +0x32,0x60,0xEF,0x41,0x04,0x00,0x14,0x61,0x6E,0x70,0x24,0x60,0xF9,0x43,0x00,0x00, +0xC4,0x98,0xEF,0x32,0x04,0x00,0x51,0x42,0x15,0x70,0x18,0x60,0xF9,0x43,0x00,0x00, +0xEE,0xC7,0xD8,0x22,0xD8,0x22,0x75,0x4E,0xD8,0x23,0x00,0x00,0x6E,0x94,0x75,0x4E, +0xA7,0x42,0x10,0x60,0xFB,0x45,0x20,0x00,0x40,0x42,0x1A,0x10,0x00,0x3F,0x1A,0x10, +0x00,0x3F,0x1A,0x10,0x00,0x3F,0x50,0xF0,0x8F,0x5C,0xFC,0x23,0x00,0x00,0xC4,0x98, +0x00,0x00,0x6E,0x94,0x75,0x4E,0x00,0x25,0x0B,0x6F,0x01,0x00,0x02,0x01,0x00,0x81, +0x0C,0x01,0x02,0x01,0x01,0x72,0x6D,0x04,0x04,0x03,0x00,0x79,0x10,0x01,0x56,0x4E, +0xFC,0xFF,0xAE,0x2E,0x0C,0x00,0x97,0x54,0x2E,0x3F,0x10,0x00,0x2E,0x2F,0x08,0x00, +0x70,0xF8,0x8F,0x5C,0x6E,0x20,0x0C,0x00,0xAE,0x30,0x12,0x00,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x0F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0E,0x00,0x47,0x20, +0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00, +0x10,0x3A,0x6E,0x4A,0x14,0x00,0x0A,0x67,0x05,0x08,0x03,0x00,0x04,0x67,0x40,0x42, +0x30,0x60,0x6E,0x4A,0x10,0x00,0x04,0x67,0x46,0x8A,0x06,0x60,0x06,0x30,0x40,0x46, +0x40,0xCA,0x6E,0x4A,0x12,0x00,0x08,0x67,0xBC,0x2E,0x00,0x00,0x30,0x9B,0xFC,0xF1, +0xAE,0x3E,0x12,0x00,0x05,0x3F,0x2E,0x3F,0x0C,0x00,0x07,0x2F,0x14,0xF2,0x8F,0x50, +0x01,0x70,0x39,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x0C,0x00, +0x7C,0xBE,0xFF,0xFF,0x26,0x67,0x6E,0xBE,0x0E,0x00,0x20,0x67,0xBC,0x3E,0x01,0x00, +0x3C,0x3F,0x01,0x00,0x2E,0x3F,0x10,0x00,0x3C,0x3F,0x01,0x00,0x07,0x3F,0x2E,0x2F, +0x08,0x00,0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x02,0x60,0x40,0x42,0x21,0xF0, +0x56,0x4E,0xF4,0xFF,0xBC,0x2E,0x00,0x00,0x30,0x9B,0xFC,0xF1,0x8E,0x2E,0x97,0x51, +0x2E,0x3F,0x0E,0x00,0x2E,0x2F,0x0A,0x00,0x70,0xF8,0x8F,0x5C,0x6E,0x53,0xF8,0xFF, +0x6E,0x54,0xFC,0xFF,0x6E,0x54,0xFE,0xFF,0x6E,0x4A,0x08,0x00,0x08,0x67,0x8E,0x2E, +0x97,0x51,0x1C,0xF8,0x06,0x60,0x8E,0x2E,0x97,0x51,0x24,0xF8,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x1F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x47,0x20, +0x7C,0x22,0x00,0x00,0x04,0x00,0x31,0x32,0x00,0x78,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x88,0x54,0x10,0x3A,0x06,0x38,0x44,0x55,0x0E,0x60,0x47,0x20,0x05,0x32,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x10,0x3A,0x44,0x53,0x7C,0xB8,0x01,0x00,0xEC,0x6E,0xBC,0x3E, +0x01,0x00,0x3C,0x2F,0x01,0x00,0x01,0x00,0x3C,0x3F,0x01,0x00,0x06,0x3F,0x07,0x2F, +0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x40,0x4A,0x18,0x67,0x85,0x3E,0x07,0x2F, +0x3C,0x3F,0x01,0x00,0x00,0xF9,0x8F,0x5C,0xBC,0x3E,0x08,0x00,0x05,0x3F,0x07,0x2F, +0x00,0xF2,0x8F,0x5C,0x05,0x30,0x3D,0xF0,0x56,0x4E,0xCA,0xFF,0xE7,0x48,0x00,0x3F, +0x39,0x2E,0x00,0x00,0x26,0x9B,0x7C,0x3D,0x01,0x00,0xDA,0xFF,0x6E,0x42,0xF8,0xFF, +0x7C,0x2D,0x01,0x00,0x01,0x01,0xFC,0xFF,0xFF,0x7A,0x05,0x3C,0x46,0x3D,0xF6,0xFF, +0xBC,0x3E,0x01,0x00,0x20,0xF8,0x00,0x60,0x12,0x02,0x7C,0x3D,0x06,0x00,0xFA,0xFF, +0x7C,0x3D,0x01,0x00,0xF4,0xFF,0x2E,0x30,0xDA,0xFF,0x00,0x60,0x7E,0x00,0x7C,0x3D, +0x02,0x00,0xD8,0xFF,0x6E,0x42,0xF4,0xFF,0x6E,0x00,0x08,0x00,0xFA,0xFF,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x07,0x2F, +0x04,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6A,0x60,0x6E,0x3D,0xF6,0xFF,0xD8,0xFF, +0x62,0x60,0x7C,0x3D,0x02,0x00,0xD8,0xFF,0x6E,0x42,0xF4,0xFF,0x6E,0x00,0x08,0x00, +0xFA,0xFF,0x57,0x42,0x06,0x3F,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x07,0x2F, +0x04,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x3A,0x60,0x45,0x3D,0xD8,0xFF,0x08,0xF9, +0x7C,0xC0,0x01,0x00,0x08,0x67,0x3C,0x20,0x01,0x00,0x00,0x01,0x06,0x60,0x3C,0x20, +0x01,0x00,0x01,0x01,0x40,0x2D,0xFC,0xFF,0x1A,0x60,0x7C,0xB0,0x01,0x00,0x00,0x67, +0x7E,0xFF,0x7C,0xB0,0x02,0x00,0xA2,0x67,0x7C,0xB0,0x03,0x00,0xCC,0x67,0x7C,0xB0, +0x04,0x00,0x9E,0x67,0xAE,0x3E,0xF4,0xFF,0x2E,0x3F,0xD8,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xE6,0xFF,0x07,0x2F,0x04,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xCC,0xFF,0xA7,0x42,0x2E,0x2F,0xFC,0xFF,0xA7,0x42,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x2E,0x3F, +0xFA,0xFF,0xE0,0xF1,0xFC,0xDF,0x00,0x00,0x16,0x00,0x40,0x3D,0xF0,0xFF,0x2E,0x08, +0x01,0x00,0xF1,0xFF,0x18,0x67,0x6E,0x0C,0x02,0x00,0xDA,0xFF,0x08,0x67,0x7C,0x3D, +0x01,0x00,0xF8,0xFF,0x08,0x60,0xAE,0x0A,0x00,0x00,0x01,0x00,0xFC,0xFF,0x6E,0x4A, +0xF8,0xFF,0x00,0x66,0xF6,0x00,0x6E,0x3D,0xF6,0xFF,0xF2,0xFF,0x05,0x36,0x06,0x38, +0x2E,0x2F,0xCC,0xFF,0x3C,0x2F,0x02,0x00,0x01,0x00,0x07,0x2F,0x04,0xF2,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x40,0x3D,0xF6,0xFF,0x47,0x20,0x2E,0x32,0xF6,0xFF,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00,0x50,0x3D,0xCA,0xFF,0x6E,0x0C, +0xFF,0xFF,0xF6,0xFF,0x12,0x67,0x6E,0x0C,0x08,0x00,0xCA,0xFF,0x0A,0x67,0xFF,0x7A, +0x7C,0x3D,0x02,0x00,0xDA,0xFF,0x48,0x60,0x6E,0x3D,0xF2,0xFF,0xF6,0xFF,0x7C,0xB8, +0xFF,0xFF,0x28,0x67,0x2E,0x2F,0xCC,0xFF,0x3C,0x3F,0x01,0x00,0x04,0x3F,0x07,0x2F, +0x04,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x00,0x3A,0x7C,0xBA,0xFF,0xFF,0x04,0x67, +0x03,0x70,0x02,0x60,0x04,0x70,0x40,0x3D,0xDA,0xFF,0x14,0x60,0x7C,0x3D,0x01,0x00, +0xDA,0xFF,0x6E,0x0C,0x08,0x00,0xCA,0xFF,0x06,0x67,0x7C,0x3D,0x01,0x00,0xF8,0xFF, +0x57,0x42,0x05,0x3F,0x03,0x3F,0x07,0x2F,0x0C,0xF9,0x8F,0x50,0x57,0x42,0x2E,0x3F, +0xF6,0xFF,0x2E,0x3F,0xF2,0xFF,0x07,0x2F,0x0C,0xF9,0x8F,0x50,0x40,0x4A,0x0A,0x67, +0x84,0x3E,0x07,0x2F,0x67,0x42,0x00,0xF9,0x8F,0x5C,0xBC,0x3E,0x01,0x00,0x2E,0x3F, +0xF2,0xFF,0x2E,0x3F,0xF6,0xFF,0x07,0x2F,0x0C,0xF9,0x8F,0x50,0x40,0x4A,0x0C,0x67, +0xAE,0x3E,0xF6,0xFF,0x07,0x2F,0x10,0xF9,0x8F,0x58,0x00,0x3C,0xBC,0x3E,0x01,0x00, +0x03,0x3F,0x05,0x3F,0x07,0x2F,0x0C,0xF9,0x8F,0x50,0x6E,0x4A,0xF8,0xFF,0x00,0x67, +0xEA,0xFD,0x6E,0x42,0xF4,0xFF,0x6E,0x0C,0xFF,0xFF,0xF6,0xFF,0x5C,0x67,0x86,0x3E, +0x07,0x2F,0x67,0x42,0x00,0xF9,0x8F,0x5C,0x7C,0xBA,0xFF,0xFF,0x30,0x67,0xBC,0x3E, +0x01,0x00,0xA7,0x42,0x3C,0x3F,0x01,0x00,0x05,0x3F,0x07,0x2F,0xEC,0xF1,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x40,0x4A,0x16,0x67,0x6E,0x20,0x08,0x00,0xAE,0x30,0xF6,0xFF, +0x6E,0x20,0x0C,0x00,0x85,0x30,0x7C,0x3D,0x01,0x00,0xF4,0xFF,0x1C,0x60,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0xF6,0xFF, +0x07,0x2F,0xEC,0xF1,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x57,0x42,0x20,0xF8,0x2E,0x30, +0xF4,0xFF,0x3F,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x3F,0x2E,0x2E,0x08,0x00, +0x6E,0x4A,0x0C,0x00,0x00,0x67,0x38,0x01,0xC7,0x23,0x00,0x00,0x26,0x9B,0xBC,0x2E, +0x00,0x00,0x28,0xC9,0x3C,0x3F,0x02,0x00,0x07,0x2F,0x70,0xF8,0x8F,0x5C,0xBC,0x2E, +0x00,0x00,0xDA,0x96,0x3C,0x2F,0x00,0x00,0x28,0xC9,0x10,0xF1,0x8F,0x58,0x79,0x20, +0x00,0x00,0x94,0xC7,0x28,0x30,0x1C,0x00,0xC0,0x48,0xC0,0x23,0x00,0x00,0x30,0x97, +0x47,0x20,0x7C,0x22,0x00,0x00,0x04,0x00,0x31,0x32,0x00,0x78,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0x88,0x54,0xD0,0x33,0x00,0x00,0x86,0xC6,0x47,0x20,0x39,0x32,0x00,0x00, +0x86,0xC6,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x54,0xBC,0x30,0xFF,0xFF,0x47,0x20, +0x39,0x32,0x00,0x00,0x86,0xC6,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x58,0xBC,0x30, +0xFF,0xFF,0x44,0x42,0x01,0x7C,0x79,0x4A,0x00,0x00,0x84,0xC6,0x18,0x67,0x39,0x36, +0x00,0x00,0x84,0xC6,0x43,0x54,0x39,0x30,0x00,0x00,0x86,0xC6,0x40,0x56,0xC0,0x33, +0x00,0x00,0xC0,0x9B,0x02,0x60,0x01,0x76,0x44,0x60,0x06,0x3A,0x79,0xDA,0x00,0x00, +0x86,0xC6,0x85,0x3E,0x39,0x3F,0x00,0x00,0x86,0xC6,0x07,0x2F,0xF4,0xF1,0x8F,0x5C, +0x7C,0xBC,0x02,0x00,0x20,0x6F,0x47,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0xFC,0xD1,0x00,0x00,0x0C,0x00,0x46,0x32,0x49,0x57,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3, +0x00,0x00,0xCE,0xC6,0x91,0x20,0x79,0xD8,0x00,0x00,0x72,0xC6,0x46,0x52,0x43,0xBC, +0xB8,0x6F,0x47,0x20,0x39,0x32,0x00,0x00,0x86,0xC6,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0xFC,0xD1,0x00,0x00,0x16,0x00,0x84,0x30,0xBC,0x2E,0x00,0x00,0x30,0x9B,0xFC,0xF1, +0xBC,0x3E,0x08,0x00,0x3C,0x3F,0x01,0x00,0x07,0x2F,0x00,0xF2,0x8F,0x5C,0xB9,0x3E, +0x00,0x00,0x02,0x97,0x57,0x53,0x39,0x3F,0x00,0x00,0x0A,0x98,0x57,0x53,0x39,0x3F, +0x00,0x00,0x02,0x97,0x57,0x53,0x67,0x42,0x14,0xF9,0x8F,0x5C,0x16,0x60,0xB9,0x42, +0x00,0x00,0x26,0x9B,0xBC,0x2E,0x00,0x00,0xDA,0x96,0x3C,0x2F,0x00,0x00,0x1C,0x97, +0x10,0xF1,0x8F,0x58,0x79,0x52,0x00,0x00,0xCC,0xC6,0xBC,0x3E,0x01,0x00,0x3C,0x3F, +0x01,0x00,0x39,0x2F,0x00,0x00,0x3A,0x9B,0xE4,0xF8,0x8F,0x5C,0x3F,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x03,0x47,0x42,0x28,0x60,0xA7,0x42,0xA7,0x42,0x07,0x3F, +0x47,0x30,0xC8,0xD1,0x7C,0x22,0x00,0x00,0x30,0xC9,0x30,0x3F,0x00,0x98,0x3C,0x3F, +0x29,0x00,0x3C,0x2F,0x00,0x00,0xB4,0x98,0x80,0xF7,0xFC,0xDF,0x00,0x00,0x12,0x00, +0x47,0x52,0x79,0xBE,0x00,0x00,0x84,0xC6,0xD0,0x6D,0x21,0xF0,0x56,0x4E,0xF2,0xFF, +0xE7,0x48,0x00,0x07,0x2E,0x3E,0x08,0x00,0x2E,0x2C,0x0A,0x00,0x7C,0xBE,0xFF,0xFF, +0x26,0x66,0x86,0x2E,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x38,0xF1,0x8F,0x58, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF2,0xFF,0x39,0x2F,0x00,0x00,0x94,0xC7,0x18,0xF9, +0x8F,0x58,0x01,0x70,0x42,0x60,0x40,0x60,0x79,0x0C,0x06,0x00,0x00,0x00,0x84,0xC6, +0x34,0x6C,0x79,0x30,0x00,0x00,0x84,0xC6,0xC8,0xD1,0xFC,0xD1,0x00,0x00,0x30,0xC9, +0x87,0x30,0x79,0x30,0x00,0x00,0x84,0xC6,0xC8,0xD1,0xC8,0xD1,0xFC,0xD1,0x00,0x00, +0xCE,0xC6,0x86,0x20,0x79,0x52,0x00,0x00,0x84,0xC6,0x39,0x30,0x00,0x00,0x84,0xC6, +0x40,0x53,0x04,0x60,0x02,0x60,0xFF,0x70,0x31,0xF0,0x56,0x4E,0xFE,0xFF,0xE7,0x48, +0x00,0x0F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x47,0x20,0x06,0x32,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x88,0x50,0x50,0x3D,0xFE,0xFF,0x47,0x20,0x06,0x32,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0C,0x00,0x10,0x2A,0x2E,0x08,0x00,0x00, +0xFE,0xFF,0x04,0x67,0x45,0x20,0x10,0x2A,0xBC,0x3E,0x1C,0x00,0x05,0x2F,0x2E,0x2F, +0x0E,0x00,0x28,0xF1,0x8F,0x50,0x39,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x3F, +0x2E,0x26,0x08,0x00,0xBC,0xD6,0x00,0x00,0x10,0x00,0x43,0x20,0x88,0x58,0x10,0x3A, +0x43,0x20,0x88,0x5C,0x10,0x38,0x39,0x3E,0x00,0x00,0x0A,0x98,0x45,0x9E,0xC7,0x48, +0xFC,0x8F,0x02,0x00,0xC7,0x48,0xF9,0x8F,0x00,0x00,0x32,0xC8,0xF9,0xCF,0x00,0x00, +0x32,0xC8,0x39,0x3C,0x00,0x00,0x8E,0xC7,0x79,0x9C,0x00,0x00,0x02,0x97,0x44,0x9C, +0xC6,0x48,0xFC,0x8D,0x02,0x00,0x79,0xDC,0x00,0x00,0x02,0x97,0x43,0x20,0x87,0x30, +0x43,0x20,0x88,0x54,0x86,0x30,0x6E,0x20,0x08,0x00,0xFC,0xD1,0x00,0x00,0x0B,0x00, +0x10,0x08,0x04,0x00,0x20,0x67,0x7C,0xBE,0x03,0x00,0x04,0x6D,0x03,0x70,0x02,0x60, +0x07,0x30,0x40,0x9E,0x7C,0xBC,0x03,0x00,0x04,0x6D,0x03,0x70,0x02,0x60,0x06,0x30, +0x40,0x9C,0x45,0x5C,0x44,0x5C,0x84,0x3E,0x05,0x3F,0x06,0x3F,0x07,0x3F,0x2E,0x2F, +0x0C,0x00,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x3F,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x04,0x03,0x6E,0x2A,0x08,0x00,0x2E,0x3E,0x0C,0x00,0x08,0x60,0x1D,0x0C, +0x5F,0x00,0x02,0x66,0x47,0x52,0x15,0x4A,0x0A,0x67,0x15,0x10,0x80,0x48,0x2E,0xB0, +0x0F,0x00,0xEA,0x66,0x07,0x30,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F, +0x6E,0x2A,0x08,0x00,0x2E,0x3E,0x10,0x00,0x8D,0x2E,0x0C,0xF1,0x00,0x3A,0x05,0x3C, +0x12,0x60,0x4D,0x20,0x46,0x32,0xC9,0xD1,0x4D,0x22,0x46,0x34,0xCA,0xD3,0xA9,0x10, +0xFF,0xFF,0x46,0x53,0x6E,0xBC,0x0C,0x00,0xE8,0x6E,0x4D,0x20,0x46,0x32,0xC9,0xD1, +0xAE,0x10,0x0F,0x00,0x05,0x30,0x40,0x52,0x40,0xBE,0x0C,0x6F,0x4D,0x20,0x45,0x32, +0xC9,0xD1,0x28,0x42,0x01,0x00,0x0A,0x60,0x4D,0x20,0x47,0x32,0xC9,0xD1,0x28,0x42, +0xFF,0xFF,0x39,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0x6E,0x2A,0x08,0x00, +0x2E,0x3E,0x0C,0x00,0x46,0x42,0x10,0x60,0x4D,0x20,0x46,0x32,0xC9,0xD1,0x10,0x0C, +0x5F,0x00,0x02,0x66,0x47,0x53,0x46,0x52,0x47,0x4A,0xEC,0x6E,0x02,0x60,0x46,0x52, +0x35,0x4A,0x00,0x60,0x0C,0x67,0x4D,0x20,0x46,0x32,0xC9,0xD1,0x10,0x0C,0x5F,0x00, +0xEC,0x66,0x06,0x30,0x31,0xF8,0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x07,0x2E,0x2E, +0x08,0x00,0x2E,0x3C,0x0C,0x00,0x6E,0x2A,0x10,0x00,0x8E,0x2E,0x97,0x51,0x06,0x3F, +0x07,0x2F,0x70,0xF8,0x8F,0x5C,0x8E,0x2E,0x97,0x51,0x2E,0x2F,0xFC,0xFF,0x39,0x2F, +0x00,0x00,0x24,0x9C,0x39,0x3F,0x00,0x00,0x2C,0x9C,0x39,0x3F,0x00,0x00,0x30,0x9C, +0x0C,0xF0,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x40,0x3D,0xF6,0xFF,0x2E,0x30,0x0E,0x00, +0xF9,0xC1,0x00,0x00,0x32,0xC8,0x6E,0xD0,0xF8,0xFF,0x80,0x3A,0x6E,0x3B,0xFA,0xFF, +0x02,0x00,0x79,0x3B,0x00,0x00,0x32,0xC8,0x04,0x00,0x79,0x3B,0x00,0x00,0x72,0xC6, +0x06,0x00,0x31,0xF8,0x56,0x4E,0xEC,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF, +0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x1C,0xF9,0x8F,0x50,0x6E,0x4A,0x10,0x00, +0x12,0x67,0x2E,0x30,0x10,0x00,0x40,0x53,0xF9,0xC1,0x00,0x00,0x32,0xC8,0x6E,0xD1, +0xF4,0xFF,0x16,0x60,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x03,0x00,0x67,0x42,0xEC,0xF2, +0x8F,0x58,0x6E,0x57,0xF2,0xFF,0x6E,0x5C,0xF6,0xFF,0x8E,0x2E,0x97,0x51,0x50,0xF5, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0xFC,0xF1,0x6E,0x4A,0x10,0x00,0x10,0x67, +0x57,0x42,0x2E,0x3F,0x0C,0x00,0x2E,0x2F,0x08,0x00,0x00,0xF2,0x8F,0x5C,0x18,0x60, +0xAE,0x3E,0xF2,0xFF,0x2E,0x30,0xF6,0xFF,0x57,0xD1,0x57,0x53,0x2E,0x3F,0xF0,0xFF, +0x2E,0x2F,0xF0,0xFF,0x14,0xF9,0x8F,0x5C,0x8E,0x2E,0x97,0x51,0xFC,0xF1,0x01,0xF0, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F,0x2E,0x1E,0x09,0x00,0x6E,0x2A,0x0A,0x00, +0x26,0x60,0x1D,0x10,0x80,0x48,0x00,0x1A,0x00,0x1C,0x15,0x0C,0x2E,0x00,0x0C,0x66, +0x2D,0x0C,0x2E,0x00,0x01,0x00,0x04,0x66,0x8D,0x54,0x1D,0x1A,0x06,0xBE,0x08,0x6D, +0x05,0xBE,0x04,0x6E,0x01,0x70,0x06,0x60,0x15,0x4A,0xD6,0x66,0x40,0x42,0x39,0xF8, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0x6E,0x2A,0x08,0x00,0x01,0x7E,0xFF,0x7C, +0x2E,0x10,0x0D,0x00,0x80,0x48,0x3E,0x60,0x04,0x7C,0x47,0x42,0x4E,0x60,0x05,0x7C, +0x4A,0x60,0x06,0x7C,0x46,0x60,0x07,0x7C,0x42,0x60,0x08,0x7C,0x3E,0x60,0x09,0x7C, +0x3A,0x60,0x0A,0x7C,0x36,0x60,0x0B,0x7C,0x47,0x42,0x30,0x60,0x0C,0x7C,0x47,0x42, +0x2A,0x60,0x15,0x10,0x80,0x48,0x80,0x3E,0x88,0xF1,0x80,0x1A,0x01,0x70,0x4A,0x60, +0x01,0x70,0x46,0x60,0x16,0x60,0xC0,0x48,0x7C,0x20,0xFE,0x00,0x64,0xF7,0x0B,0x72, +0x98,0xB0,0xC9,0x57,0xFC,0xFF,0x68,0x20,0x2C,0x00,0xD0,0x4E,0x7C,0xBC,0xFF,0xFF, +0x26,0x67,0x86,0x3E,0x54,0xF8,0x80,0x2E,0x15,0x10,0x80,0x48,0x00,0x3F,0x20,0xF9, +0x8F,0x54,0x40,0x4A,0x12,0x67,0x47,0x4A,0x0A,0x67,0x15,0x10,0x80,0x48,0x80,0x3E, +0x88,0xF1,0x80,0x1A,0x01,0x70,0x02,0x60,0x40,0x42,0x31,0xF8,0x56,0x4E,0xFC,0xFF, +0xAE,0x3E,0x08,0x00,0x3C,0x2F,0x00,0x00,0xA7,0xB7,0x24,0xF9,0x8F,0x58,0x00,0x3F, +0x6E,0x20,0x0A,0x00,0x9F,0x30,0xBC,0x2E,0x00,0x00,0x56,0xB7,0x0C,0xF1,0x80,0x3E, +0x3C,0x2F,0x00,0x00,0xA7,0xB7,0x24,0xF9,0x8F,0x58,0x00,0x3F,0x6E,0x20,0x0E,0x00, +0x9F,0x30,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x7C,0x20,0x00,0x00,0x58,0x9C,0x6E,0x32, +0x08,0x00,0xC9,0xD1,0x28,0x4A,0xFE,0x1A,0x34,0x67,0x3C,0x20,0x00,0x00,0x58,0x9C, +0x2E,0x32,0x08,0x00,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0xFE,0x1A, +0x3C,0x20,0x00,0x00,0x58,0x9C,0x2E,0x32,0x08,0x00,0xC1,0x48,0x81,0xD0,0x00,0x2F, +0x97,0x06,0x00,0x00,0xFF,0x1A,0x4C,0xF3,0x8F,0x58,0x40,0x42,0x02,0x60,0x01,0x70, +0x01,0xF0,0x56,0x4E,0xD2,0xFF,0xE7,0x48,0x0C,0x3F,0x2E,0x2E,0x08,0x00,0x2E,0x3C, +0x0C,0x00,0x6E,0x2A,0x10,0x00,0x7C,0x28,0x00,0x00,0x58,0x9C,0x6E,0x4A,0x14,0x00, +0x04,0x67,0x46,0x4A,0x06,0x6E,0x01,0x70,0x00,0x60,0x02,0x03,0xBC,0x2E,0x00,0x00, +0x20,0x9C,0x06,0x3F,0x07,0x2F,0x28,0xF9,0x8F,0x5C,0xB9,0x2E,0x00,0x00,0x24,0x9C, +0x0C,0x2F,0x97,0x06,0x00,0x00,0x4F,0x1B,0x38,0xF1,0x8F,0x58,0xB9,0x2E,0x00,0x00, +0x20,0x9C,0x0C,0x2F,0x97,0x06,0x00,0x00,0xFE,0x1A,0x38,0xF1,0x8F,0x58,0xB9,0x2E, +0x00,0x00,0x28,0x9C,0x0C,0x2F,0x97,0x06,0x00,0x00,0xA0,0x1B,0x38,0xF1,0x8F,0x58, +0x40,0x3D,0xE2,0xFF,0x40,0x3D,0xFC,0xFF,0x1A,0x60,0x4C,0x20,0x6E,0x32,0xFC,0xFF, +0xC9,0xD1,0x4C,0x22,0x6E,0x34,0xE2,0xFF,0xCA,0xD3,0x69,0x11,0x9F,0x1B,0xA0,0x1B, +0x6E,0x52,0xFC,0xFF,0x6E,0x4A,0xE2,0xFF,0x0C,0x6F,0x39,0x30,0x00,0x00,0x3A,0x9C, +0x6E,0xB0,0xFC,0xFF,0xD4,0x6E,0x4C,0x20,0x6E,0x32,0xFC,0xFF,0xC9,0xD1,0x28,0x42, +0xA0,0x1B,0x8C,0x2E,0x97,0x06,0x00,0x00,0xF1,0x1B,0x0C,0x2F,0x97,0x06,0x00,0x00, +0x4F,0x1B,0x0C,0x2F,0x97,0x06,0x00,0x00,0xFE,0x1A,0x39,0x3F,0x00,0x00,0x30,0x9C, +0x2C,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2E,0x30,0x14,0x00,0x00,0x60,0x1A,0x02, +0x8C,0x2E,0x97,0x06,0x00,0x00,0xFE,0x1A,0x0C,0xF1,0x80,0x3A,0x00,0x60,0x20,0x02, +0x7C,0x3D,0x01,0x00,0xE0,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xDC,0xFF,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xDE,0xFF,0x15,0x3F,0x30,0xF9,0x8F,0x5C,0x2E,0x36,0xDE,0xFF, +0x57,0x42,0x03,0x3F,0x06,0x3F,0x07,0x2F,0x34,0xF9,0x8F,0x50,0x2E,0x30,0x0E,0x00, +0x00,0x60,0x34,0x01,0x55,0x4A,0x0A,0x6F,0x55,0x53,0x95,0x3E,0x38,0xF9,0x40,0x3D, +0xE0,0xFF,0x00,0x60,0x38,0x01,0x55,0x42,0x2C,0x42,0xFE,0x1A,0x6E,0x42,0xE0,0xFF, +0x00,0x60,0x2A,0x01,0x39,0x30,0x00,0x00,0x38,0x9C,0x40,0x55,0x55,0xB0,0x08,0x6D, +0x95,0x3E,0x38,0xF9,0x40,0x3D,0xE0,0xFF,0x00,0x60,0x12,0x01,0x55,0x4A,0x02,0x6F, +0x55,0x53,0x00,0x60,0x08,0x01,0x8C,0x2E,0x97,0x06,0x00,0x00,0xFE,0x1A,0x0C,0xF1, +0x55,0xB0,0x02,0x6F,0x55,0x52,0x00,0x60,0xF4,0x00,0x44,0x42,0x39,0x30,0x00,0x00, +0x38,0x9C,0x40,0x55,0x55,0xB0,0x0A,0x6C,0x43,0x53,0x43,0x3D,0xDE,0xFF,0x01,0x78, +0x55,0x53,0x2E,0x30,0x0E,0x00,0x7C,0xC0,0xFF,0x00,0x40,0x1D,0xD6,0xFF,0x2E,0x4A, +0xD6,0xFF,0x00,0x67,0xB0,0x00,0x4C,0x20,0x55,0x32,0xC9,0xD1,0x28,0x10,0xA0,0x1B, +0x80,0x48,0x80,0x3E,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xD6,0xFF,0x3C,0xF9,0x8F,0x58, +0x40,0x4A,0x24,0x67,0xB9,0x3E,0x00,0x00,0x38,0x9C,0x2E,0x10,0xD6,0xFF,0x80,0x48, +0x00,0x3F,0x15,0x3F,0x0C,0x2F,0x97,0x06,0x00,0x00,0xFE,0x1A,0x58,0xF8,0x8F,0x50, +0x55,0x52,0x6E,0x42,0xE0,0xFF,0x6C,0x60,0x44,0x4A,0x04,0x67,0x55,0x52,0x43,0x52, +0x2E,0x10,0xD6,0xFF,0x80,0x48,0x80,0x3E,0x15,0x3F,0x0C,0x20,0x03,0x32,0xC1,0x48, +0x81,0xD0,0x00,0x2F,0x97,0x06,0x00,0x00,0x4F,0x1B,0x40,0xF9,0x8F,0x5C,0x40,0x3D, +0xFE,0xFF,0x39,0x30,0x00,0x00,0x38,0x9C,0x40,0x55,0x6E,0xB0,0xFE,0xFF,0x34,0x6F, +0x0C,0x20,0x15,0x32,0xC1,0x48,0x81,0xD0,0x80,0x2E,0x97,0x06,0x00,0x00,0xFE,0x1A, +0x3C,0x3F,0x20,0x39,0x2E,0x3F,0xFE,0xFF,0x15,0x30,0x57,0x91,0x94,0xF3,0x8F,0x58, +0x4C,0x20,0x6E,0x32,0xFE,0xFF,0xC9,0xD1,0x28,0x42,0xFE,0x1A,0xAE,0x3A,0xFE,0xFF, +0x6E,0x42,0xE0,0xFF,0x16,0x60,0xC0,0x48,0x7C,0x20,0xFE,0x00,0xC4,0xF7,0x05,0x72, +0x98,0xB0,0xC9,0x57,0xFC,0xFF,0x68,0x20,0x14,0x00,0xD0,0x4E,0x8C,0x2E,0x97,0x06, +0x00,0x00,0xFE,0x1A,0x39,0x2F,0x00,0x00,0x20,0x9C,0x38,0xF1,0x8F,0x58,0x6E,0x4A, +0xE0,0xFF,0x70,0x66,0x8C,0x2E,0x97,0x06,0x00,0x00,0xF1,0x1B,0x0C,0x2F,0x97,0x06, +0x00,0x00,0x4F,0x1B,0x0C,0x2F,0x97,0x06,0x00,0x00,0xFE,0x1A,0x39,0x3F,0x00,0x00, +0x30,0x9C,0x2C,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xD8,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xDA,0xFF,0x15,0x3F,0x30,0xF9,0x8F,0x5C, +0xAE,0x3E,0xDA,0xFF,0x2E,0x3F,0xDE,0xFF,0x6C,0xF3,0x8F,0x54,0x40,0x3D,0xDE,0xFF, +0xAE,0x3E,0xD8,0xFF,0x2E,0x3F,0xDC,0xFF,0x60,0xF3,0x8F,0x54,0x00,0x3A,0x6E,0x9A, +0xDE,0xFF,0x45,0x4A,0x0E,0x67,0x85,0x3E,0x2E,0x3F,0xDE,0xFF,0x06,0x3F,0x07,0x2F, +0x34,0xF9,0x8F,0x50,0x18,0x60,0x16,0x60,0x7C,0xB0,0x01,0x00,0x00,0x67,0xE2,0xFD, +0x7C,0xB0,0x02,0x00,0x00,0x67,0xEA,0xFD,0x7C,0xB0,0x03,0x00,0xE8,0x67,0x95,0x3E, +0x0C,0x2F,0x97,0x06,0x00,0x00,0x4F,0x1B,0x24,0xF9,0x8F,0x58,0x00,0x36,0x57,0x42, +0x03,0x3F,0x06,0x3F,0x07,0x2F,0x34,0xF9,0x8F,0x50,0x01,0x70,0x3F,0xFC,0x56,0x4E, +0xF4,0xFF,0xE7,0x48,0x1C,0x0F,0x6E,0x20,0x0A,0x00,0x10,0x0C,0x40,0x00,0x02,0x66, +0x10,0x42,0x6E,0x2A,0x12,0x00,0x6E,0x28,0x0E,0x00,0x6E,0x26,0x0A,0x00,0xAE,0x2E, +0x0E,0x00,0x0C,0xF1,0x00,0x3C,0xAE,0x2E,0x0A,0x00,0x0C,0xF1,0x00,0x3A,0x01,0x7E, +0x4D,0x20,0x46,0x32,0xC9,0xD1,0x10,0x42,0x6E,0x0C,0x01,0x00,0x08,0x00,0x0E,0x66, +0xFF,0x7E,0xC6,0xDA,0x8D,0x53,0xC6,0xD8,0x8C,0x53,0xC5,0xD6,0x8B,0x53,0x0D,0x20, +0x07,0x32,0xC6,0xC3,0xC1,0x48,0x81,0xD0,0x40,0x2D,0xFC,0xFF,0x0C,0x20,0x07,0x32, +0xC6,0xC3,0xC1,0x48,0x81,0xD0,0x40,0x2D,0xF8,0xFF,0x0B,0x20,0x07,0x32,0xC5,0xC3, +0xC1,0x48,0x81,0xD0,0x40,0x2D,0xF4,0xFF,0x1E,0x60,0x14,0x0C,0x5F,0x00,0x04,0x67, +0x94,0x1A,0x10,0x60,0xEE,0xB7,0xF4,0xFF,0x06,0x67,0x93,0x1A,0xC7,0xD6,0x04,0x60, +0xBC,0x1A,0x5F,0x00,0xC7,0xDA,0xC7,0xD8,0xEE,0xB9,0xF8,0xFF,0xDC,0x66,0x39,0xFE, +0x56,0x4E,0xDE,0xFF,0x6E,0x2D,0x08,0x00,0xE2,0xFF,0x6E,0x3D,0x0C,0x00,0xE6,0xFF, +0x6E,0x2D,0x16,0x00,0xE8,0xFF,0x6E,0x48,0xEC,0xFF,0x2E,0x2F,0x0E,0x00,0x10,0xF1, +0x6E,0x48,0xF4,0xFF,0x14,0xF1,0x6E,0x20,0x12,0x00,0x68,0x2D,0x04,0x00,0xFC,0xFF, +0x6E,0x48,0xE2,0xFF,0x6E,0x20,0x12,0x00,0x10,0x2F,0x18,0xF1,0xFC,0xDE,0x14,0x00, +0x01,0xF0,0x56,0x4E,0xD0,0xFF,0xE7,0x48,0x04,0x1F,0x2E,0x2E,0x08,0x00,0x2E,0x3C, +0x0C,0x00,0x2E,0x3A,0x0E,0x00,0x2E,0x38,0x10,0x00,0xEE,0x4B,0xD8,0xFF,0x6E,0x48, +0xF4,0xFF,0x0D,0x2F,0x6E,0x48,0xEC,0xFF,0x6E,0x48,0xF0,0xFF,0x6E,0x48,0xF2,0xFF, +0x6E,0x48,0xE8,0xFF,0x06,0x3F,0x07,0x2F,0x1C,0xF1,0xFC,0xDF,0x00,0x00,0x1E,0x00, +0x40,0x1D,0xE0,0xFF,0x2E,0x08,0x07,0x00,0xED,0xFF,0x00,0x66,0x54,0x05,0xAE,0x0C, +0xFF,0xFF,0xFF,0xFF,0xE8,0xFF,0x00,0x67,0x48,0x05,0x85,0x3A,0x44,0x3B,0x02,0x00, +0x79,0x4A,0x00,0x00,0xB8,0x95,0x3C,0x67,0x79,0x4A,0x00,0x00,0xDE,0xC7,0x34,0x67, +0x6E,0x48,0xD0,0xFF,0x55,0x48,0x10,0xF1,0xFD,0x70,0x2E,0x08,0x04,0x00,0xF3,0xFF, +0x0A,0x66,0x2E,0x32,0xF4,0xFF,0x02,0x6C,0x03,0x70,0xC1,0xC1,0x80,0x3E,0x6E,0x48, +0xD0,0xFF,0x20,0xF0,0x6E,0x48,0xD0,0xFF,0x24,0xF1,0xFC,0xDE,0x10,0x00,0x40,0x4A, +0x00,0x67,0xFE,0x04,0x6E,0x0C,0x1C,0x00,0xF0,0xFF,0x00,0x67,0xB8,0x02,0x2E,0x30, +0xF4,0xFF,0x02,0x6C,0x40,0x42,0x40,0x3D,0xE2,0xFF,0x7C,0x3D,0x01,0x00,0xF6,0xFF, +0x7C,0x3D,0x01,0x00,0xFC,0xFF,0x2E,0x30,0xF0,0xFF,0x34,0x60,0xBC,0x3E,0x1C,0x00, +0x2E,0x2F,0xE8,0xFF,0x3C,0x2F,0x00,0x00,0x20,0x9C,0x28,0xF1,0x6E,0x48,0xF6,0xFF, +0x6E,0x48,0xF8,0xFF,0x6E,0x48,0xFA,0xFF,0x6E,0x48,0xFC,0xFF,0x6E,0x48,0xFE,0xFF, +0x39,0x3F,0x00,0x00,0x32,0x9C,0x2C,0xF1,0xFC,0xDF,0x00,0x00,0x1E,0x00,0x18,0x60, +0x7C,0xB0,0x15,0x00,0xC6,0x67,0x7C,0xB0,0x16,0x00,0xC0,0x67,0x7C,0xB0,0x1D,0x00, +0xBA,0x67,0x7C,0xB0,0x1E,0x00,0xB4,0x67,0x2E,0x30,0xF0,0xFF,0x00,0x60,0x82,0x00, +0x6E,0x48,0xF6,0xFF,0x6E,0x48,0xF8,0xFF,0x6E,0x48,0xFA,0xFF,0x6E,0x48,0xFC,0xFF, +0x6E,0x48,0xFE,0xFF,0x2E,0x20,0xE8,0xFF,0x00,0x3F,0x2C,0xF1,0xFC,0xDF,0x00,0x00, +0x16,0x00,0x6E,0x0C,0x1A,0x00,0xF0,0xFF,0x0A,0x66,0x7C,0x3D,0x01,0x00,0xFE,0xFF, +0xAE,0x42,0xF8,0xFF,0x6E,0x4A,0xF4,0xFF,0x1C,0x67,0xAE,0x3E,0xFE,0xFF,0x3C,0x2F, +0x00,0x00,0x01,0x00,0x14,0xF0,0xAE,0x3E,0xF4,0xFF,0x2D,0x2F,0x04,0x00,0x15,0x2F, +0x30,0xF1,0xFC,0xDE,0x0C,0x00,0x6E,0x0C,0x19,0x00,0xF0,0xFF,0x20,0x67,0xAE,0x3E, +0xE2,0xFF,0x0D,0x2F,0x20,0xF0,0x8D,0x2E,0x2E,0x2F,0xF8,0xFF,0x34,0xF1,0x2E,0x30, +0xE2,0xFF,0x40,0x44,0x80,0x3E,0x0D,0x2F,0x20,0xF0,0xFC,0xDE,0x0C,0x00,0x18,0x60, +0x7C,0x90,0x14,0x00,0x7C,0xB0,0x0A,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1, +0xFE,0x00,0xF4,0xF7,0x50,0x20,0xD0,0x4E,0xAE,0x3E,0xFC,0xFF,0x2E,0x3F,0xF6,0xFF, +0x3C,0x3F,0x01,0x00,0x14,0xF0,0x8F,0x58,0x2E,0x30,0xF0,0xFF,0x00,0x60,0x7E,0x01, +0xB9,0x2E,0x00,0x00,0x20,0x9C,0x3C,0x2F,0x00,0x00,0x56,0xB7,0x38,0xF1,0xB9,0x2E, +0x00,0x00,0x24,0x9C,0x3C,0x2F,0x00,0x00,0xA7,0xB7,0x38,0xF1,0xBC,0x2E,0x00,0x00, +0x49,0xB8,0x3C,0x2F,0x00,0x00,0xA7,0xB7,0x3C,0x2F,0x00,0x00,0x56,0xB7,0x39,0x3F, +0x00,0x00,0x30,0x9C,0x3C,0xF1,0xFC,0xDF,0x00,0x00,0x12,0x00,0xFC,0x23,0x00,0x00, +0x49,0xB8,0x00,0x00,0x20,0x9C,0x6E,0x0C,0x1B,0x00,0xF0,0xFF,0x1E,0x66,0xEE,0x13, +0xE0,0xFF,0x00,0x00,0x49,0xB8,0x39,0x42,0x00,0x00,0x4A,0xB8,0xFC,0x33,0x02,0x00, +0x00,0x00,0x30,0x9C,0xFC,0x33,0x03,0x00,0x00,0x00,0x2C,0x9C,0xAE,0x3E,0xE2,0xFF, +0x55,0x48,0x20,0xF0,0xAE,0x3E,0xF6,0xFF,0x55,0x48,0x39,0x2F,0x00,0x00,0x20,0x9C, +0x39,0x3F,0x00,0x00,0x2C,0x9C,0x39,0x3F,0x00,0x00,0x30,0x9C,0x40,0xF1,0x2E,0x30, +0xE2,0xFF,0x40,0x44,0x80,0x3E,0x55,0x48,0x20,0xF0,0xFC,0xDF,0x00,0x00,0x14,0x00, +0x00,0x60,0xF2,0x00,0xBC,0x3E,0x0E,0x00,0x2E,0x2F,0xE8,0xFF,0x3C,0x2F,0x00,0x00, +0x32,0xC7,0x28,0xF1,0x57,0x42,0x39,0x3F,0x00,0x00,0x3E,0xC7,0x3C,0x3F,0x02,0x00, +0x39,0x3F,0x00,0x00,0x38,0xC7,0x39,0x30,0x00,0x00,0x36,0xC7,0x40,0xE7,0x00,0x3F, +0x39,0x30,0x00,0x00,0x0A,0x98,0xC0,0x48,0xFC,0x81,0x08,0x00,0x00,0x3F,0x15,0x2F, +0xA7,0x42,0x39,0x3F,0x00,0x00,0x36,0xC7,0x39,0x2F,0x00,0x00,0x3A,0xC7,0x39,0x2F, +0x00,0x00,0x32,0xC7,0x18,0xF0,0xFC,0xDF,0x00,0x00,0x24,0x00,0x00,0x60,0x96,0x00, +0xBC,0x3E,0x22,0x00,0x2E,0x2F,0xE8,0xFF,0x3C,0x2F,0x00,0x00,0x40,0xC7,0x28,0xF1, +0x15,0x20,0xB9,0xD1,0x00,0x00,0x52,0xC7,0xB9,0xD1,0x00,0x00,0x5A,0xC7,0xBC,0x2E, +0x00,0x00,0x5A,0xC7,0x3C,0x2F,0x00,0x00,0x52,0xC7,0x39,0x3F,0x00,0x00,0x50,0xC7, +0x39,0x2F,0x00,0x00,0x4C,0xC7,0x39,0x2F,0x00,0x00,0x48,0xC7,0x39,0x2F,0x00,0x00, +0x44,0xC7,0x39,0x2F,0x00,0x00,0x40,0xC7,0x2E,0x3F,0xF2,0xFF,0x44,0xF1,0xFC,0xDF, +0x00,0x00,0x20,0x00,0x6E,0x02,0xFE,0xFF,0xF2,0xFF,0x38,0x60,0xAE,0x3E,0xF2,0xFF, +0x2E,0x3F,0xF2,0xFF,0x2E,0x2F,0xE8,0xFF,0x55,0x48,0x06,0x3F,0x07,0x2F,0x48,0xF1, +0xFC,0xDF,0x00,0x00,0x10,0x00,0x40,0x3D,0xF2,0xFF,0x18,0x60,0x7C,0x90,0x15,0x00, +0x7C,0xB0,0x0A,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0x20,0xF8, +0x50,0x20,0xD0,0x4E,0x6E,0x0C,0x1C,0x00,0xF0,0xFF,0x12,0x67,0x6E,0x0C,0x20,0x00, +0xF0,0xFF,0x0A,0x67,0x6E,0x0C,0x1A,0x00,0xF0,0xFF,0x00,0x66,0x7E,0x00,0xAE,0x2E, +0xE8,0xFF,0x39,0x2F,0x00,0x00,0x44,0xC8,0x68,0xF0,0x8F,0x58,0x40,0x3D,0xEE,0xFF, +0x6E,0x4A,0xEE,0xFF,0x64,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x2F,0x01,0x00,0x02,0x00, +0x14,0xF0,0x8F,0x58,0x2D,0x30,0x06,0x00,0x79,0x90,0x00,0x00,0x72,0xC6,0xC0,0x48, +0xFC,0x81,0x02,0x00,0x6D,0xD0,0x02,0x00,0x40,0x3D,0xE4,0xFF,0x6E,0x0C,0x1A,0x00, +0xF0,0xFF,0x1E,0x66,0x2D,0x30,0x04,0x00,0x2E,0x32,0xEE,0xFF,0xF9,0xC3,0x00,0x00, +0x32,0xC8,0x41,0x90,0xC0,0x48,0xFC,0x81,0x02,0x00,0x55,0xD0,0x40,0x3D,0xE6,0xFF, +0x04,0x60,0x55,0x3D,0xE6,0xFF,0xAE,0x3E,0xEE,0xFF,0x2E,0x3F,0xE4,0xFF,0x2E,0x3F, +0xE6,0xFF,0x3C,0x3F,0x03,0x00,0x10,0xF0,0x8F,0x5C,0x6E,0x4A,0xF2,0xFF,0x00,0x67, +0xA0,0x01,0x2E,0x08,0x04,0x00,0xF3,0xFF,0x4A,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x2F, +0x00,0x00,0x01,0x00,0x14,0xF0,0xBC,0x3E,0x01,0x00,0x2D,0x2F,0x04,0x00,0x97,0x06, +0x06,0x00,0x06,0x00,0x15,0x2F,0x97,0x04,0x03,0x00,0x03,0x00,0x30,0xF1,0x57,0x42, +0x3C,0x2F,0x00,0x00,0x01,0x00,0x14,0xF0,0xBC,0x3E,0x02,0x00,0x2D,0x2F,0x04,0x00, +0x97,0x06,0x04,0x00,0x04,0x00,0x15,0x2F,0x97,0x04,0x02,0x00,0x02,0x00,0x30,0xF1, +0xFC,0xDE,0x18,0x00,0x6E,0x4A,0xF4,0xFF,0x0C,0x6F,0xAE,0x3E,0xF4,0xFF,0x0D,0x2F, +0x20,0xF0,0x8F,0x58,0x04,0x60,0x6E,0x44,0xF4,0xFF,0x2E,0x08,0x05,0x00,0xF3,0xFF, +0x72,0x67,0x6E,0x4A,0xF4,0xFF,0x6C,0x67,0xAE,0x3E,0xFE,0xFF,0x3C,0x3F,0x19,0x00, +0x00,0xF0,0x2E,0x30,0xF4,0xFF,0x40,0xE3,0x80,0x3E,0x2D,0x3F,0x04,0x00,0x2E,0x30, +0xF4,0xFF,0x57,0xD1,0x2D,0x3F,0x02,0x00,0x2D,0x30,0x06,0x00,0x57,0xD1,0x2E,0x30, +0xF4,0xFF,0x57,0xD1,0x15,0x3F,0x67,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x04,0xF0, +0x2E,0x30,0xF4,0xFF,0xFC,0xC1,0x03,0x00,0x80,0x3E,0x2D,0x30,0x06,0x00,0x57,0xD1, +0x2E,0x30,0xF4,0xFF,0x40,0xE3,0x00,0x3F,0x15,0x2F,0x2D,0x30,0x04,0x00,0x57,0xD1, +0x2E,0x30,0xF4,0xFF,0x57,0xD1,0x67,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x04,0xF0, +0xFC,0xDE,0x1A,0x00,0x2E,0x08,0x02,0x00,0xF3,0xFF,0x2A,0x67,0xBC,0x3E,0x01,0x00, +0x3C,0x2F,0x01,0x00,0x02,0x00,0x14,0xF0,0xFC,0x33,0x08,0x00,0x00,0x00,0xBA,0x95, +0xBC,0x3E,0x01,0x00,0x15,0x2F,0x97,0x06,0x02,0x00,0x00,0x00,0x3C,0x3F,0x03,0x00, +0x10,0xF0,0xFC,0xDE,0x0A,0x00,0x2E,0x08,0x01,0x00,0xF3,0xFF,0x3A,0x67,0x57,0x42, +0x3C,0x2F,0x00,0x00,0x02,0x00,0x14,0xF0,0x15,0x2F,0x2D,0x20,0x04,0x00,0xBC,0x90, +0x01,0x00,0x01,0x00,0x97,0xD1,0x15,0x2F,0x4C,0xF1,0xAD,0x3E,0x02,0x00,0x15,0x22, +0x2D,0x20,0x04,0x00,0xBC,0x90,0x01,0x00,0x01,0x00,0x80,0xD2,0x41,0x48,0x01,0x2F, +0x15,0x3F,0x4C,0xF1,0xFC,0xDE,0x12,0x00,0x2E,0x08,0x03,0x00,0xF3,0xFF,0x20,0x67, +0x3C,0x2F,0x19,0x00,0x00,0x00,0x00,0xF0,0x2D,0x2F,0x04,0x00,0x15,0x2F,0x3C,0x3F, +0x04,0x00,0x3C,0x2F,0x02,0x00,0x02,0x00,0x04,0xF0,0xFC,0xDF,0x00,0x00,0x12,0x00, +0x2E,0x08,0x00,0x00,0xF3,0xFF,0x18,0x67,0x2D,0x2F,0x04,0x00,0x15,0x2F,0x3C,0x3F, +0x07,0x00,0x3C,0x2F,0x03,0x00,0x01,0x00,0x04,0xF0,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0x3D,0xF8,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x00,0x03,0x2E,0x2E,0x08,0x00,0x47,0x20, +0x2E,0x32,0x0C,0x00,0x08,0x66,0x7C,0x3D,0xFF,0xFF,0xFE,0xFF,0x0A,0x60,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x50,0x3D,0xFE,0xFF,0xAE,0x3E,0x0C,0x00,0x07,0x2F,0x50,0xF1, +0x8F,0x58,0x40,0x3D,0xFC,0xFF,0x7C,0xB0,0xFF,0xFF,0x18,0x67,0x6E,0x48,0xF8,0xFF, +0x6E,0x48,0xFA,0xFF,0x2E,0x3F,0xFC,0xFF,0x07,0x2F,0x54,0xF1,0xFC,0xDF,0x00,0x00, +0x0E,0x00,0x04,0x60,0xAE,0x42,0xF8,0xFF,0x1C,0xF0,0xAE,0x3E,0x0E,0x00,0x2E,0x3F, +0xF8,0xFF,0x2E,0x3F,0xFA,0xFF,0x3C,0x2F,0xFE,0x00,0xF2,0x96,0x2E,0x3F,0xFE,0xFF, +0x2E,0x3F,0x0C,0x00,0x07,0x2F,0x58,0xF1,0xFC,0xDF,0x00,0x00,0x10,0x00,0x28,0xF0, +0x21,0xF0,0x56,0x4E,0xE4,0xFF,0xE7,0x48,0x04,0x0F,0x2E,0x2E,0x08,0x00,0x2E,0x3C, +0x0C,0x00,0x2E,0x3A,0x0E,0x00,0xEE,0x4B,0xF2,0xFF,0x7C,0x3D,0xFF,0xFF,0xFE,0xFF, +0x46,0x4A,0x12,0x66,0xA7,0x42,0xA7,0x42,0x6E,0x48,0xEA,0xFF,0x5C,0xF1,0xFC,0xDF, +0x00,0x00,0x0C,0x00,0x1A,0x60,0x86,0x3E,0x07,0x2F,0x50,0xF1,0x40,0x3D,0xE8,0xFF, +0x6E,0x48,0xEA,0xFF,0x2E,0x3F,0xE8,0xFF,0x07,0x2F,0x94,0xF0,0xFC,0xDE,0x0E,0x00, +0xAE,0x42,0xFA,0xFF,0x00,0x60,0xB0,0x00,0x8D,0x2E,0x06,0x3F,0x07,0x2F,0xEC,0xF0, +0x8F,0x5C,0x2E,0x30,0xEA,0xFF,0x55,0xD1,0x2E,0x30,0xEC,0xFF,0x6D,0xD1,0x02,0x00, +0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x50,0x50,0x3D,0xE4,0xFF, +0x8D,0x2E,0x2E,0x2F,0x10,0x00,0x60,0xF1,0x8F,0x58,0x40,0x4A,0x48,0x67,0x2E,0x08, +0x07,0x00,0xE5,0xFF,0x40,0x66,0x46,0x3D,0xFE,0xFF,0x47,0x20,0x06,0x32,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x88,0x58,0x50,0x3D,0xE6,0xFF,0x6E,0x0C,0xFF,0xFF,0xE6,0xFF, +0x1C,0x67,0x45,0x4A,0x18,0x67,0x2E,0x3C,0xE6,0xFF,0x45,0x53,0x55,0x3D,0xEA,0xFF, +0x6D,0x3D,0x02,0x00,0xEC,0xFF,0x7C,0x3D,0x01,0x00,0xFC,0xFF,0x06,0x60,0x7C,0x3D, +0x01,0x00,0xFA,0xFF,0x30,0x60,0x6E,0x4A,0xFC,0xFF,0x24,0x67,0x6E,0x0C,0xFF,0xFF, +0xFE,0xFF,0x1C,0x67,0x86,0x3E,0x2E,0x3F,0xFE,0xFF,0x07,0x2F,0x64,0xF1,0x8F,0x5C, +0x00,0x3C,0x7C,0xBC,0xFF,0xFF,0x06,0x66,0x7C,0x3D,0x01,0x00,0xFA,0xFF,0x06,0x60, +0x7C,0x3D,0x01,0x00,0xFA,0xFF,0x6E,0x4A,0xFA,0xFF,0x00,0x67,0x4C,0xFF,0x2E,0x30, +0xFE,0xFF,0x39,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x3F,0x2E,0x2E,0x08,0x00, +0x2E,0x3C,0x0C,0x00,0x2E,0x3A,0x0E,0x00,0x7C,0xBC,0xFF,0xFF,0x48,0x67,0x7C,0xBA, +0xFF,0xFF,0x42,0x67,0x47,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x86,0x30, +0x07,0x26,0x06,0x30,0xFC,0xC1,0x18,0x00,0x80,0xD6,0x83,0x58,0x43,0x20,0x10,0x38, +0x7C,0xB8,0xFF,0xFF,0x10,0x66,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x88,0x54,0x85,0x30,0x0C,0x60,0x47,0x20,0x04,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0x85,0x30,0x43,0x20,0x85,0x30,0x3F,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x00,0x3F, +0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x46,0x4A,0x1A,0x67,0x47,0x20,0x06,0x32, +0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x50,0x3D,0xFC,0xFF,0x86,0x3E,0x07,0x2F,0x50,0xF1, +0x8F,0x58,0x00,0x3A,0x02,0x60,0x6E,0x60,0x07,0x26,0x05,0x30,0xFC,0xC1,0x18,0x00, +0x80,0xD6,0x83,0x54,0x43,0x20,0x50,0xBC,0x26,0x66,0x07,0x28,0x05,0x30,0xFC,0xC1, +0x18,0x00,0x80,0xD8,0x84,0x58,0x44,0x20,0x50,0xBC,0x0C,0x66,0x7C,0x3D,0xFF,0xFF, +0xFC,0xFF,0x44,0x20,0xBC,0x30,0xFF,0xFF,0x43,0x20,0xAE,0x30,0xFC,0xFF,0x36,0x60, +0x86,0x3E,0x05,0x3F,0x07,0x2F,0x64,0xF1,0x8F,0x5C,0x40,0x3D,0xFE,0xFF,0x47,0x20, +0x2E,0x32,0xFE,0xFF,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xAE,0x30,0xFC,0xFF,0x07,0x28, +0x05,0x30,0xFC,0xC1,0x18,0x00,0x80,0xD8,0x84,0x58,0x44,0x20,0x50,0xBC,0x06,0x66, +0x44,0x20,0xAE,0x30,0xFE,0xFF,0x3F,0xF0,0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x00,0x3F, +0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x46,0x4A,0x0C,0x67,0x86,0x3E,0x07,0x2F, +0x50,0xF1,0x8F,0x58,0x00,0x3A,0x04,0x60,0x00,0x60,0xAC,0x00,0x86,0x3E,0x07,0x2F, +0x68,0xF1,0x8F,0x58,0x07,0x28,0x05,0x30,0xFC,0xC1,0x18,0x00,0x80,0xD8,0x84,0x54, +0x44,0x20,0x50,0x3D,0xFE,0xFF,0x07,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0x81,0xD0, +0x40,0x2D,0xF8,0xFF,0x6E,0x4A,0x0E,0x00,0x0E,0x66,0x6E,0x20,0xF8,0xFF,0xAE,0x30, +0xFE,0xFF,0x44,0x20,0x86,0x30,0x58,0x60,0x6E,0x0C,0xFF,0xFF,0x0E,0x00,0x12,0x66, +0x47,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x58,0x50,0x3D,0xFE,0xFF, +0x26,0x60,0x7C,0x3D,0x01,0x00,0xFC,0xFF,0x14,0x60,0x47,0x20,0x2E,0x32,0xFE,0xFF, +0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x50,0x3D,0xFE,0xFF,0x6E,0x52,0xFC,0xFF,0x2E,0x30, +0xFC,0xFF,0x6E,0xB0,0x0E,0x00,0xE2,0x6D,0x07,0x26,0x2E,0x30,0xFE,0xFF,0xFC,0xC1, +0x18,0x00,0x80,0xD6,0x6E,0x20,0xF8,0xFF,0x43,0x22,0x91,0x30,0x43,0x20,0x86,0x30, +0x6E,0x20,0xF8,0xFF,0x50,0xBA,0x0E,0x66,0x47,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0x88,0x58,0x86,0x30,0x3F,0xF0,0x56,0x4E,0xEC,0xFF,0xE7,0x48,0x04,0x07, +0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0xEE,0x4B,0xF2,0xFF,0x6E,0x48,0xFA,0xFF, +0x55,0x48,0x6E,0x48,0xFE,0xFF,0x6E,0x48,0xFC,0xFF,0x6E,0x48,0xF0,0xFF,0x6E,0x48, +0xEC,0xFF,0x06,0x3F,0x07,0x2F,0x1C,0xF1,0xFC,0xDF,0x00,0x00,0x1E,0x00,0x40,0x42, +0x2E,0x30,0xF0,0xFF,0x6E,0xB0,0x0E,0x00,0x00,0x67,0xE4,0x00,0xAE,0x0C,0xFF,0xFF, +0xFF,0xFF,0xEC,0xFF,0x00,0x67,0xD8,0x00,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x0A,0x00,0xAE,0x30,0x0E,0x00,0x6E,0x4A,0x10,0x00, +0x00,0x67,0xBC,0x00,0x8D,0x2E,0x97,0x54,0x0D,0x2F,0x06,0x3F,0x07,0x2F,0x54,0xF1, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x1C,0xF0,0x6E,0x4A,0xFA,0xFF,0x04,0x6C,0x40,0x42, +0x04,0x60,0x2E,0x30,0xFA,0xFF,0x40,0x3D,0xFA,0xFF,0x6E,0x0C,0x18,0x00,0xFC,0xFF, +0x20,0x66,0xAE,0x3E,0x0E,0x00,0x2E,0x3F,0xF0,0xFF,0x2E,0x2F,0xEC,0xFF,0x0D,0x2F, +0x06,0x3F,0x07,0x2F,0x48,0xF1,0xFC,0xDF,0x00,0x00,0x10,0x00,0x6E,0x42,0x10,0x00, +0x58,0x60,0x6E,0x0C,0x1F,0x00,0xFC,0xFF,0x50,0x67,0x40,0x42,0x2E,0x30,0x0E,0x00, +0x41,0x42,0x2E,0x32,0xF0,0xFF,0x40,0xB3,0x7C,0xC0,0x01,0x00,0x3C,0x67,0xAD,0x3E, +0x06,0x00,0x2E,0x30,0xFA,0xFF,0x40,0xE3,0x57,0x91,0x2D,0x3F,0x04,0x00,0x2E,0x30, +0xFA,0xFF,0x40,0xE3,0x57,0x91,0x15,0x2F,0x2E,0x30,0xFA,0xFF,0x40,0x48,0x2E,0x30, +0xFA,0xFF,0x97,0xD1,0x3C,0x3F,0x07,0x00,0x3C,0x2F,0x03,0x00,0x01,0x00,0x04,0xF0, +0xFC,0xDF,0x00,0x00,0x0C,0x00,0x6E,0x42,0x10,0x00,0x6E,0x4A,0x10,0x00,0x0C,0x67, +0x15,0x2F,0x06,0x3F,0x07,0x2F,0x6C,0xF1,0xFC,0xDE,0x0A,0x00,0x28,0xF0,0x31,0xF8, +0x56,0x4E,0xFC,0xFF,0x6E,0x20,0x0E,0x00,0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00, +0xAE,0xD2,0x08,0x00,0x81,0x50,0x41,0x22,0x91,0x30,0x7C,0x20,0x00,0x00,0x0A,0x00, +0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00,0xAE,0xD2,0x08,0x00,0x30,0x30,0x00,0x18, +0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07,0x2E,0x2E,0x08,0x00,0x2E,0x3C, +0x0C,0x00,0x6E,0x2A,0x0E,0x00,0x8D,0x2E,0x97,0x54,0x0D,0x2F,0x06,0x3F,0x07,0x2F, +0x54,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x14,0x00,0x50,0x3B,0x04,0x00,0x47,0x20,0x06,0x32, +0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x16,0x00,0x50,0x3B,0x06,0x00, +0x31,0xF8,0x56,0x4E,0xFC,0xFF,0xBC,0x3E,0x04,0x00,0x2E,0x30,0x0C,0x00,0xFC,0xC1, +0x18,0x00,0xAE,0xD0,0x08,0x00,0x00,0x2F,0x97,0x06,0x00,0x00,0x10,0x00,0x2E,0x2F, +0x0E,0x00,0x70,0xF1,0x8F,0x50,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xBC,0x3E,0x04,0x00, +0x2E,0x2F,0x0E,0x00,0x2E,0x30,0x0C,0x00,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00, +0x00,0x2F,0x97,0x06,0x00,0x00,0x10,0x00,0x70,0xF1,0x8F,0x50,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x0C,0x07,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x6E,0x2A, +0x0E,0x00,0x6E,0x28,0x12,0x00,0x40,0x42,0x80,0x38,0x80,0x3A,0x47,0x20,0x06,0x32, +0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x10,0x00,0x10,0x30,0x55,0xD1, +0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0xFC,0xD1,0x00,0x00,0x12,0x00, +0x10,0x30,0x54,0xD1,0x86,0x3E,0x07,0x2F,0x50,0xF1,0x8F,0x58,0x00,0x3C,0x7C,0xBC, +0xFF,0xFF,0xC8,0x66,0x31,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x3F,0x2E,0x2E, +0x08,0x00,0x2E,0x3C,0x0E,0x00,0x47,0x20,0x2E,0x32,0x0C,0x00,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0x88,0x54,0x10,0x36,0x46,0xB6,0x1E,0x67,0x18,0x60,0x47,0x20,0x03,0x32, +0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x10,0x38,0x46,0xB8,0x04,0x67,0x04,0x36,0x04,0x60, +0x03,0x30,0x06,0x60,0xE6,0x60,0x02,0x60,0xFF,0x70,0x3F,0xF0,0x56,0x4E,0xF8,0xFF, +0x6E,0x20,0x08,0x00,0x50,0x3D,0xFC,0xFF,0x2E,0x30,0xFC,0xFF,0x40,0xE0,0x7C,0xC0, +0xFF,0x00,0x40,0x3D,0xFE,0xFF,0x6E,0x02,0xFF,0x00,0xFC,0xFF,0x6E,0x4A,0x0C,0x00, +0x12,0x67,0x6E,0x0C,0x50,0x00,0xFC,0xFF,0x0A,0x66,0x79,0x3D,0x00,0x00,0x0A,0x98, +0xFC,0xFF,0x1E,0x60,0x2E,0x30,0xFC,0xFF,0x6E,0x4A,0x0C,0x00,0x08,0x67,0x39,0x32, +0x00,0x00,0x32,0xC8,0x06,0x60,0x39,0x32,0x00,0x00,0x72,0xC6,0xC1,0xC1,0x40,0x3D, +0xFC,0xFF,0x6E,0x0C,0x80,0x00,0xFE,0xFF,0x0A,0x6F,0x2E,0x30,0xFE,0xFF,0x7C,0xD0, +0x00,0xFF,0x04,0x60,0x2E,0x30,0xFE,0xFF,0x6E,0xD1,0xFC,0xFF,0x6E,0x20,0x08,0x00, +0xAE,0x30,0xFC,0xFF,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F,0x2E,0x30, +0x0C,0x00,0xFC,0xC1,0x18,0x00,0x00,0x2A,0xAE,0xDA,0x08,0x00,0xBC,0xDA,0x00,0x00, +0x10,0x00,0x01,0x7C,0x47,0x42,0x20,0x60,0x86,0x3E,0x05,0x20,0x07,0x32,0x41,0xE3, +0xC1,0x48,0x81,0xD0,0x00,0x2F,0x60,0xF9,0x8F,0x58,0x46,0x4A,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0x00,0x3C,0x47,0x52,0x7C,0xBE,0x04,0x00,0xDA,0x6D,0x39,0xF0, +0x56,0x4E,0xF8,0xFF,0x8E,0x2E,0x97,0x59,0x2E,0x3F,0x08,0x00,0x3C,0x3F,0x05,0x00, +0x39,0x2F,0x00,0x00,0x06,0x98,0x4C,0xF2,0x8F,0x50,0xAE,0x2E,0xFC,0xFF,0x3C,0x2F, +0x00,0x00,0x9A,0xB8,0x38,0xF1,0x8F,0x58,0x3C,0x20,0x00,0x00,0x9A,0xB8,0x01,0xF0, +0x56,0x4E,0xFA,0xFF,0x6E,0x30,0x0A,0x00,0xC8,0xD0,0xF9,0xD1,0x00,0x00,0x3C,0x9C, +0x50,0x3D,0xFE,0xFF,0x80,0x42,0x2E,0x30,0xFE,0xFF,0x2E,0x32,0x0C,0x00,0xEE,0xC3, +0x08,0x00,0x81,0xD0,0xB9,0xD0,0x00,0x00,0x3C,0x9C,0x01,0xF0,0x56,0x4E,0xFE,0xFF, +0xE7,0x48,0x00,0x3F,0x2E,0x3E,0x08,0x00,0x2E,0x3C,0x0A,0x00,0x7C,0x3D,0x01,0x00, +0xFE,0xFF,0x07,0x30,0x00,0x60,0xE2,0x00,0x06,0x30,0x48,0xE5,0xC0,0x33,0x00,0x00, +0xA4,0x9B,0xC8,0x91,0x79,0x30,0x00,0x00,0xA4,0x9B,0x79,0x22,0x00,0x00,0x02,0x98, +0xFC,0xD3,0x00,0x00,0x0A,0x00,0x51,0x22,0x30,0x20,0x00,0x98,0x00,0x60,0xE4,0x00, +0x01,0x76,0x18,0x78,0x00,0x60,0xC6,0x00,0x02,0x76,0x1C,0x78,0x00,0x60,0xBE,0x00, +0x03,0x76,0x22,0x78,0x00,0x60,0xB6,0x00,0x04,0x76,0x0E,0x78,0x00,0x60,0xAE,0x00, +0x86,0x3E,0x3C,0x3F,0x01,0x00,0x64,0xF9,0x8F,0x54,0x00,0x2A,0x05,0x20,0xBC,0xD0, +0x00,0x00,0x0C,0x00,0x00,0x60,0xAC,0x00,0x86,0x3E,0x3C,0x3F,0x02,0x00,0x64,0xF9, +0x8F,0x54,0x00,0x2A,0x7C,0xBE,0x09,0x00,0x0A,0x66,0x05,0x20,0x80,0x58,0x00,0x60, +0x92,0x00,0x08,0x60,0x05,0x20,0x80,0x50,0x00,0x60,0x88,0x00,0x86,0x3E,0x3C,0x3F, +0x03,0x00,0x64,0xF9,0x8F,0x54,0x00,0x2A,0x7C,0xBE,0x0C,0x00,0x0A,0x66,0x05,0x20, +0x80,0x58,0x00,0x60,0x6E,0x00,0x06,0x60,0x05,0x20,0x80,0x50,0x64,0x60,0xBC,0x3E, +0x04,0x00,0x3C,0x3F,0x05,0x00,0x06,0x3F,0x68,0xF9,0x8F,0x58,0x40,0x20,0x10,0x20, +0x50,0x60,0xBC,0x3E,0x04,0x00,0x3C,0x3F,0x08,0x00,0x06,0x3F,0x68,0xF9,0x8F,0x58, +0x40,0x20,0x10,0x20,0x3C,0x60,0x05,0x76,0x04,0x78,0x20,0x60,0x08,0x76,0x04,0x78, +0x1A,0x60,0x6E,0x42,0xFE,0xFF,0x14,0x60,0x7C,0xB0,0x10,0x00,0xF4,0x62,0x40,0xE5, +0x40,0x30,0xFC,0xD1,0xFE,0x00,0x4C,0xF8,0x50,0x20,0xD0,0x4E,0x6E,0x4A,0xFE,0xFF, +0x0E,0x67,0x84,0x3E,0x03,0x3F,0x06,0x3F,0x68,0xF9,0x8F,0x58,0x04,0x60,0x02,0x60, +0xFF,0x70,0x3F,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0xBC,0x3E,0x04,0x00, +0x3C,0x3F,0x09,0x00,0x67,0x42,0x68,0xF9,0x8F,0x58,0x00,0x2C,0x79,0x20,0x00,0x00, +0x02,0x98,0xFC,0xD1,0x00,0x00,0x0A,0x00,0x86,0x20,0x79,0x20,0x00,0x00,0x3C,0x9C, +0xFC,0xD1,0x00,0x00,0x16,0x00,0x10,0x3E,0x47,0x53,0x14,0x60,0x06,0x20,0x07,0x32, +0x41,0xE5,0x41,0x48,0x41,0x42,0x41,0x48,0x81,0xD0,0x80,0x2E,0x6C,0xF9,0x47,0x53, +0x47,0x4A,0xE8,0x6C,0x31,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F,0x79,0x20, +0x00,0x00,0x3C,0x9C,0xFC,0xD1,0x00,0x00,0x14,0x00,0x10,0x3E,0x47,0x53,0x3C,0x60, +0x87,0x3E,0x3C,0x3F,0x01,0x00,0x64,0xF9,0x8F,0x54,0x00,0x2A,0x57,0x42,0x05,0x2F, +0x94,0xF2,0x8F,0x58,0x45,0x20,0x88,0x5C,0x10,0x3C,0x7C,0xCC,0xFF,0x00,0x7C,0xBC, +0x14,0x00,0x16,0x67,0x7C,0xBC,0x19,0x00,0x10,0x67,0x7C,0xBC,0x1B,0x00,0x0A,0x67, +0x85,0x2E,0x97,0x06,0x00,0x00,0x0C,0x00,0x6C,0xF9,0x47,0x53,0x47,0x4A,0xC0,0x6C, +0x39,0xF0,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x00,0x0F,0x79,0x20,0x00,0x00,0x3C,0x9C, +0xFC,0xD1,0x00,0x00,0x18,0x00,0x10,0x3E,0x47,0x53,0x00,0x60,0x9A,0x00,0x87,0x3E, +0x3C,0x3F,0x02,0x00,0x64,0xF9,0x8F,0x54,0x00,0x2A,0x80,0x42,0x40,0x2D,0xFC,0xFF, +0x40,0x2D,0xF8,0xFF,0x87,0x3E,0x3C,0x3F,0x08,0x00,0x70,0xF9,0x8F,0x54,0x40,0x4A, +0x10,0x67,0x05,0x20,0xBC,0xD0,0x00,0x00,0x18,0x00,0x40,0x2D,0xF8,0xFF,0x45,0x2D, +0xF0,0xFF,0x87,0x3E,0x3C,0x3F,0x09,0x00,0x70,0xF9,0x8F,0x54,0x40,0x4A,0x14,0x67, +0x05,0x20,0xBC,0xD0,0x00,0x00,0x1A,0x00,0x40,0x2D,0xFC,0xFF,0x05,0x20,0x80,0x58, +0x40,0x2D,0xF4,0xFF,0x46,0x42,0x2C,0x60,0x46,0x30,0xC8,0xD1,0xC8,0xD1,0xB6,0x4A, +0xF8,0x88,0x1E,0x67,0x46,0x30,0xC8,0xD1,0xC8,0xD1,0x76,0x20,0xF0,0x88,0x90,0x2E, +0x74,0xF9,0x00,0x3F,0x57,0x52,0x46,0x30,0xC8,0xD1,0xC8,0xD1,0x76,0x20,0xF8,0x88, +0x9F,0x30,0x46,0x52,0x7C,0xBC,0x02,0x00,0xCE,0x6D,0x87,0x3E,0x3C,0x3F,0x0A,0x00, +0x70,0xF9,0x8F,0x54,0x47,0x53,0x47,0x4A,0x00,0x6C,0x64,0xFF,0x39,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x08,0x00,0x10,0x60,0x87,0x3E,0x2E,0x3F, +0x0A,0x00,0x64,0xF9,0x8F,0x54,0x80,0x2E,0x6C,0xF9,0x47,0x53,0x47,0x4A,0xEC,0x6C, +0x21,0xF0,0x56,0x4E,0xFC,0xFF,0x2E,0x2F,0x08,0x00,0x64,0xF9,0x8F,0x58,0x80,0x2E, +0x6C,0xF9,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x2E,0x08,0x00, +0x47,0x20,0x10,0x2C,0xBC,0xBC,0xFF,0xFF,0xFF,0xFF,0x12,0x67,0x06,0x20,0xB9,0xD0, +0x00,0x00,0x3C,0x9C,0x47,0x22,0x80,0x22,0x01,0x70,0x04,0x60,0x02,0x60,0x40,0x42, +0x31,0xF0,0x56,0x4E,0xFC,0xFF,0xEE,0x23,0x08,0x00,0x00,0x00,0x02,0x98,0x79,0x20, +0x00,0x00,0x02,0x98,0xFC,0xD1,0x00,0x00,0x0E,0x00,0xD0,0x23,0x00,0x00,0x3C,0x9C, +0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xEE,0x23,0x08,0x00,0x00,0x00,0x02,0x98,0x7C,0x20, +0x00,0x00,0x0E,0x00,0x79,0x22,0x00,0x00,0x02,0x98,0xB0,0x2E,0x00,0x98,0x78,0xF4, +0x79,0x4A,0x00,0x00,0xEC,0x98,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF0, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x6E,0x2A,0x10,0x00,0xAE,0x2E,0x08,0x00, +0x78,0xF9,0x2E,0x2F,0x0C,0x00,0x64,0xF9,0x8F,0x58,0x80,0x2A,0x95,0x0C,0xFF,0xFF, +0xFF,0xFF,0x04,0x66,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF8,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x03,0xAE,0x2E,0x08,0x00,0x78,0xF9,0x2E,0x2F,0x0C,0x00,0x64,0xF9, +0x8F,0x58,0x00,0x2E,0xBC,0xBE,0xFF,0xFF,0xFF,0xFF,0x0C,0x67,0x47,0x20,0xAE,0x20, +0x10,0x00,0x01,0x70,0x04,0x60,0x02,0x60,0x40,0x42,0x21,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x0F,0xAE,0x2E,0x0C,0x00,0x39,0x2F,0x00,0x00,0x9E,0xC7,0x38,0xF1, +0x8F,0x58,0x97,0x42,0x39,0x2F,0x00,0x00,0x9E,0xC7,0xA8,0xF2,0x8F,0x58,0x40,0x4A, +0x06,0x66,0x40,0x42,0x00,0x60,0x96,0x00,0xEE,0x23,0x08,0x00,0x00,0x00,0x02,0x98, +0x57,0x42,0x39,0x2F,0x00,0x00,0x9E,0xC7,0x50,0xF3,0x8F,0x58,0x00,0x3C,0x79,0x4A, +0x00,0x00,0xEC,0x98,0x10,0x66,0xBC,0x2E,0x00,0x00,0x6C,0xC8,0x3C,0x3F,0x24,0x00, +0x06,0x3F,0x7C,0xF3,0x8F,0x58,0x79,0x4A,0x00,0x00,0xEC,0x98,0x48,0x66,0x39,0x3E, +0x00,0x00,0x8E,0xC8,0x80,0x42,0x07,0x30,0x80,0x2E,0x64,0xF3,0xC0,0x23,0x00,0x00, +0x3C,0x9C,0x79,0x4A,0x00,0x00,0xEC,0x98,0x2C,0x66,0x97,0x42,0x67,0x42,0x06,0x3F, +0x7C,0xF9,0x8F,0x58,0xB9,0x2E,0x00,0x00,0x3C,0x9C,0x07,0x3F,0x06,0x3F,0x7C,0xF3, +0x8F,0x58,0x79,0x4A,0x00,0x00,0xEC,0x98,0x0C,0x66,0x87,0x3E,0x39,0x2F,0x00,0x00, +0x3C,0x9C,0x5C,0xF9,0x8F,0x58,0x79,0x4A,0x00,0x00,0xEC,0x98,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0x00,0x3A,0x86,0x3E,0x80,0xF3,0x05,0x30,0x39,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x03,0x79,0x20,0x00,0x00,0x02,0x98,0xFC,0xD1,0x00,0x00, +0x0E,0x00,0xAE,0x20,0x08,0x00,0x79,0x20,0x00,0x00,0x02,0x98,0xFC,0xD1,0x00,0x00, +0x12,0x00,0xAE,0x30,0x0C,0x00,0x80,0xF9,0x84,0xF9,0x79,0x20,0x00,0x00,0x3C,0x9C, +0xFC,0xD1,0x00,0x00,0x1A,0x00,0x10,0x3E,0x47,0x53,0xBC,0x3E,0x0B,0x00,0x07,0x3F, +0x88,0xF9,0x8F,0x54,0xBC,0x3E,0x0C,0x00,0x07,0x3F,0x88,0xF9,0x8F,0x54,0xBC,0x3E, +0x0D,0x00,0x07,0x3F,0x88,0xF9,0x8F,0x54,0xBC,0x3E,0x0E,0x00,0x7C,0x20,0x00,0x00, +0x1C,0x00,0x79,0x22,0x00,0x00,0x3C,0x9C,0x30,0x3F,0x00,0x98,0x57,0x53,0x88,0xF9, +0x8F,0x54,0xBC,0x3E,0x0F,0x00,0x7C,0x20,0x00,0x00,0x1E,0x00,0x79,0x22,0x00,0x00, +0x3C,0x9C,0x30,0x3F,0x00,0x98,0x57,0x53,0x88,0xF9,0x8F,0x54,0xBC,0x3E,0x10,0x00, +0x7C,0x20,0x00,0x00,0x20,0x00,0x79,0x22,0x00,0x00,0x3C,0x9C,0x30,0x3F,0x00,0x98, +0x57,0x53,0x88,0xF9,0x8F,0x54,0x21,0xF0,0x56,0x4E,0xFC,0xFF,0xAE,0x2E,0x08,0x00, +0x78,0xF9,0x8C,0xF9,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x2E, +0x08,0x00,0xAE,0x2E,0x0C,0x00,0x07,0x2F,0x90,0xF9,0x8F,0x58,0x00,0x3C,0x46,0x4A, +0x04,0x67,0x87,0x2E,0xB8,0xF8,0x06,0x30,0x31,0xF0,0x56,0x4E,0xFC,0xFF,0xBC,0x2E, +0x00,0x00,0x9A,0xBA,0x2E,0x2F,0x08,0x00,0x38,0xF1,0x8F,0x58,0x01,0xF0,0x56,0x4E, +0xFC,0xFF,0xAE,0x2E,0x08,0x00,0x3C,0x2F,0x00,0x00,0x9A,0xBA,0x38,0xF1,0x8F,0x58, +0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xBC,0x3E,0x80,0x00,0x39,0x2F,0x00,0x00,0x9E,0xC7, +0x2E,0x2F,0x08,0x00,0x28,0xF1,0x8F,0x50,0xBC,0x3E,0x80,0x00,0x39,0x2F,0x00,0x00, +0x2A,0xC8,0x2E,0x2F,0x0C,0x00,0x28,0xF1,0x8F,0x50,0x01,0x70,0x01,0xF0,0x56,0x4E, +0xFC,0xFF,0xBC,0x3E,0x80,0x00,0x2E,0x2F,0x0E,0x00,0x39,0x2F,0x00,0x00,0x9E,0xC7, +0x28,0xF1,0x8F,0x50,0xBC,0x3E,0x80,0x00,0x2E,0x2F,0x12,0x00,0x39,0x2F,0x00,0x00, +0x2A,0xC8,0x28,0xF1,0x8F,0x50,0xEE,0x33,0x08,0x00,0x00,0x00,0xA0,0x98,0x79,0x42, +0x00,0x00,0x3C,0xC8,0x79,0x42,0x00,0x00,0xF2,0x96,0x6E,0x4A,0x0A,0x00,0x04,0x66, +0x40,0x42,0x02,0x60,0x01,0x70,0xC0,0x33,0x00,0x00,0xF4,0x96,0x01,0x70,0x01,0xF0, +0x56,0x4E,0xFC,0xFF,0xAE,0x3E,0x0C,0x00,0x3C,0x2F,0x00,0x00,0x2E,0xBC,0x2E,0x2F, +0x08,0x00,0x28,0xF1,0x8F,0x50,0x01,0x70,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xAE,0x3E, +0x0C,0x00,0x2E,0x2F,0x08,0x00,0x3C,0x2F,0x00,0x00,0x2E,0xBC,0x28,0xF1,0x8F,0x50, +0x01,0x70,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x40,0xF7,0x94,0xF9,0x44,0xF7,0xBC,0x3E, +0x01,0x00,0x98,0xF9,0xBC,0x2E,0x00,0x00,0xA4,0x98,0xFC,0xF1,0x9C,0xF9,0xB9,0x2E, +0x00,0x00,0xAA,0xC6,0x50,0xF2,0xA0,0xF9,0x01,0x70,0x01,0xF0,0x56,0x4E,0xFC,0xFF, +0xB9,0x2E,0x00,0x00,0x62,0xC7,0x50,0xF2,0x40,0xF7,0xCC,0xF8,0x44,0xF7,0xA4,0xF9, +0xC8,0xF8,0x57,0x42,0x98,0xF9,0x01,0x70,0x01,0xF0,0x56,0x4E,0xF8,0xFF,0x79,0x4A, +0x00,0x00,0x2A,0x9B,0x2E,0x67,0x79,0x4A,0x00,0x00,0xF2,0x96,0x26,0x66,0x79,0x2D, +0x00,0x00,0x20,0xC8,0xFC,0xFF,0xBC,0x2E,0x00,0x00,0xA4,0x98,0xFC,0xF1,0x79,0x20, +0x00,0x00,0xA2,0xC7,0xAE,0x20,0x08,0x00,0x2E,0x2F,0x0C,0x00,0x2E,0x2F,0xFC,0xFF, +0x00,0xF2,0x8F,0x50,0x01,0xF0,0x56,0x4E,0xFA,0xFF,0x7C,0x3D,0x01,0x00,0xFE,0xFF, +0x12,0x60,0x57,0x42,0x2E,0x3F,0xFE,0xFF,0x2E,0x2F,0x08,0x00,0x20,0xF7,0x8F,0x5C, +0x6E,0x52,0xFE,0xFF,0x6E,0x0C,0x03,0x00,0xFE,0xFF,0xE6,0x6D,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00,0x8D,0x2E,0x0C,0xF1,0xC0,0x48, +0x40,0x28,0x0D,0x20,0xC0,0xD9,0x02,0x60,0x8C,0x53,0xCD,0xB9,0x0C,0x65,0x14,0x0C, +0x5C,0x00,0x06,0x67,0x14,0x0C,0x3A,0x00,0xEE,0x66,0x8C,0x52,0x0C,0x20,0x01,0xFC, +0x56,0x4E,0xD2,0xFF,0xE7,0x48,0x00,0x03,0x2E,0x2E,0x0C,0x00,0x87,0x2E,0x0E,0x2F, +0x97,0x06,0xFF,0xFF,0xD2,0xFF,0x38,0xF1,0x8F,0x58,0x40,0x3D,0xF6,0xFF,0x6E,0x53, +0xF6,0xFF,0xEE,0x41,0xE2,0xFF,0x48,0x2D,0xF8,0xFF,0x4E,0x20,0x6E,0x32,0xF6,0xFF, +0xC9,0xD1,0x28,0x42,0xE2,0xFF,0xBC,0x3E,0x32,0x00,0x39,0x2F,0x00,0x00,0x24,0xC9, +0x3C,0x2F,0x00,0x00,0x70,0x9B,0x28,0xF1,0x8F,0x50,0xFC,0x13,0x3B,0x00,0x00,0x00, +0x75,0x9B,0x7C,0x2D,0x00,0x00,0x70,0x9B,0xFC,0xFF,0x6E,0x42,0xF4,0xFF,0x6E,0x20, +0xFC,0xFF,0x50,0x1D,0xF2,0xFF,0xAE,0x52,0xFC,0xFF,0x6E,0x4A,0xF4,0xFF,0x12,0x67, +0x2E,0x4A,0xF2,0xFF,0x0C,0x66,0x6E,0x42,0xF4,0xFF,0x7C,0x1D,0xFF,0x00,0xF2,0xFF, +0x4C,0x60,0x2E,0x10,0xD2,0xFF,0x80,0x48,0x2E,0xB0,0xF2,0xFF,0x3A,0x66,0xAE,0x3E, +0xF6,0xFF,0x2E,0x2F,0xFC,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE2,0xFF,0x28,0xF1, +0x8F,0x50,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xD3,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xE2,0xFF,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x0C,0x67,0x2E,0x30,0xF6,0xFF,0xC0,0x48, +0xAE,0xD1,0xFC,0xFF,0x0E,0x60,0x06,0x60,0x7C,0x3D,0x01,0x00,0xF4,0xFF,0x2E,0x4A, +0xF2,0xFF,0x8A,0x66,0x2E,0x4A,0xF2,0xFF,0x04,0x66,0xAE,0x42,0xFC,0xFF,0x6E,0x20, +0x08,0x00,0xAE,0x20,0xFC,0xFF,0x21,0xF0,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x04,0x0F, +0x6E,0x2A,0x0E,0x00,0x57,0x42,0x54,0xF8,0x80,0x2E,0x0E,0x2F,0x97,0x59,0xAC,0xF2, +0x8F,0x58,0xAE,0x4A,0xFC,0xFF,0x06,0x66,0x40,0x42,0x00,0x60,0x7A,0x00,0x2E,0x3A, +0x08,0x00,0x3C,0x1E,0x3B,0x00,0x16,0x60,0x0A,0x60,0xAE,0x52,0xFC,0xFF,0x3C,0xBE, +0x3B,0x00,0x08,0x67,0x6E,0x20,0xFC,0xFF,0x10,0x1E,0xEE,0x66,0x45,0x53,0x45,0x4A, +0xE6,0x66,0x07,0x4A,0x04,0x66,0x40,0x42,0x4C,0x60,0x1A,0x60,0x3C,0xBE,0x3B,0x00, +0x12,0x67,0x6E,0x20,0x0A,0x00,0x87,0x10,0xAE,0x52,0x0A,0x00,0x07,0x1C,0xAE,0x52, +0xFC,0xFF,0x02,0x60,0x08,0x60,0x6E,0x20,0xFC,0xFF,0x10,0x1E,0xDE,0x66,0x3C,0xBC, +0x5C,0x00,0x12,0x67,0x3C,0xBC,0x3A,0x00,0x0C,0x67,0x6E,0x20,0x0A,0x00,0xBC,0x10, +0x5C,0x00,0xAE,0x52,0x0A,0x00,0x8D,0x2E,0x2E,0x2F,0x0A,0x00,0x38,0xF1,0x8F,0x58, +0x2E,0x30,0x08,0x00,0x40,0x52,0x39,0xF8,0x56,0x4E,0xE6,0xFF,0xBC,0x2E,0x00,0x00, +0x9A,0xB8,0x44,0xF4,0xAE,0x2E,0x08,0x00,0x39,0x2F,0x00,0x00,0x00,0xC8,0x38,0xF1, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0x3E,0xBB,0xA8,0xF9,0x40,0x2D,0xF8,0xFF,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xEA,0xFF,0x2E,0x2F,0xF8,0xFF,0x4C,0xF3,0x8F,0x58,0x6E,0x42, +0xFE,0xFF,0x7C,0x3D,0x01,0x00,0xFC,0xFF,0xBC,0x3E,0x05,0x00,0x39,0x2F,0x00,0x00, +0x00,0xC8,0x48,0xF4,0x8F,0x58,0x79,0x4A,0x00,0x00,0xEC,0x98,0x00,0x67,0x84,0x00, +0x79,0x0C,0x02,0x00,0x00,0x00,0x18,0xC9,0x14,0x67,0x79,0x0C,0x12,0x00,0x00,0x00, +0x18,0xC9,0x0A,0x67,0x79,0x0C,0x03,0x00,0x00,0x00,0x18,0xC9,0x64,0x66,0x6E,0x4A, +0xFC,0xFF,0x3A,0x67,0xFC,0x13,0x5C,0x00,0x00,0x00,0x70,0x9B,0x39,0x42,0x00,0x00, +0x71,0x9B,0xBC,0x2E,0x00,0x00,0x70,0x9B,0x39,0x2F,0x00,0x00,0x00,0xC8,0x00,0xF4, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0x70,0x9B,0x39,0x2F,0x00,0x00,0x00,0xC8,0x38,0xF1, +0x8F,0x58,0x6E,0x42,0xFC,0xFF,0x7C,0x3D,0x01,0x00,0xFE,0xFF,0x22,0x60,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xEA,0xFF,0x39,0x2F,0x00,0x00,0x00,0xC8,0x2E,0x3F,0xFE,0xFF, +0xAC,0xF9,0x8F,0x5C,0x40,0x3D,0xFE,0xFF,0xFC,0x33,0x01,0x00,0x00,0x00,0xEC,0x98, +0x04,0x60,0x6E,0x42,0xFE,0xFF,0x79,0x4A,0x00,0x00,0xEC,0x98,0x08,0x67,0x6E,0x4A, +0xFE,0xFF,0x00,0x66,0x54,0xFF,0x79,0x4A,0x00,0x00,0xEC,0x98,0x22,0x66,0xB9,0x2E, +0x00,0x00,0x00,0xC8,0x2E,0x2F,0x08,0x00,0x38,0xF1,0x8F,0x58,0xAE,0x4A,0x0C,0x00, +0x0E,0x67,0x39,0x2F,0x00,0x00,0x00,0xC8,0x6E,0x20,0x0C,0x00,0x90,0x4E,0x8F,0x58, +0x79,0x4A,0x00,0x00,0xEC,0x98,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x01,0xF0, +0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x03,0x7C,0x2A,0x00,0x00,0x58,0x9C,0x39,0x2E, +0x00,0x00,0x20,0xC8,0x47,0x20,0xFC,0xD1,0x00,0x00,0x3C,0x00,0xD0,0x23,0x00,0x00, +0xA2,0xC7,0x01,0x70,0xC0,0x33,0x00,0x00,0xF4,0x96,0xC0,0x33,0x00,0x00,0x2A,0x9B, +0x01,0x70,0xC0,0x33,0x00,0x00,0x3C,0xC8,0xC0,0x33,0x00,0x00,0xA0,0x98,0xFC,0x33, +0x01,0x00,0x00,0x00,0xF2,0x96,0x6E,0x42,0xF8,0xFF,0x79,0x42,0x00,0x00,0x3C,0xC9, +0x79,0x4A,0x00,0x00,0x3C,0xC8,0x0E,0x67,0x01,0x70,0xC0,0x33,0x00,0x00,0xF4,0x96, +0xC0,0x33,0x00,0x00,0x3C,0xC9,0xFC,0x33,0x01,0x00,0x00,0x00,0x3C,0xC8,0x39,0x30, +0x00,0x00,0xF4,0x96,0x79,0xB0,0x00,0x00,0x2A,0x9B,0x18,0x67,0xF9,0x33,0x00,0x00, +0xF4,0x96,0x00,0x00,0x2A,0x9B,0x79,0x4A,0x00,0x00,0x2A,0x9B,0x04,0x67,0xB0,0xF8, +0x02,0x60,0xB0,0xF9,0x79,0x4A,0x00,0x00,0x2A,0x9B,0x04,0x67,0xBC,0xF8,0xA0,0xF9, +0x79,0x4A,0x00,0x00,0x90,0xC8,0x44,0x67,0x8D,0x2E,0x97,0x06,0x00,0x00,0xD7,0x27, +0x0C,0xF1,0x40,0x1B,0xD6,0x27,0xBC,0x3E,0x01,0x00,0x67,0x42,0x39,0x2F,0x00,0x00, +0x9E,0xC7,0x20,0xF7,0x8F,0x5C,0xB9,0x2E,0x00,0x00,0x2A,0xC8,0x39,0x2F,0x00,0x00, +0x9E,0xC7,0xB4,0xF9,0x8F,0x58,0x2D,0x42,0xD6,0x27,0x79,0x42,0x00,0x00,0x90,0xC8, +0xFC,0x33,0x01,0x00,0x00,0x00,0xF2,0x96,0x00,0x60,0x20,0x01,0x79,0x4A,0x00,0x00, +0xF2,0x96,0x54,0x67,0xB8,0xF9,0xBC,0xF9,0x40,0x3D,0xFA,0xFF,0x79,0x42,0x00,0x00, +0x4E,0xC8,0xC0,0xF9,0xBC,0x3E,0x04,0x00,0x80,0xF1,0x40,0x3D,0xF6,0xFF,0x6E,0x0C, +0x02,0x00,0xF6,0xFF,0x1A,0x67,0x6E,0x0C,0x04,0x00,0xF6,0xFF,0x12,0x67,0x79,0x20, +0x00,0x00,0x20,0xC8,0xFC,0xD1,0x00,0x00,0x0C,0x00,0xBC,0x20,0x00,0x00,0x73,0x11, +0x6E,0x4A,0xFA,0xFF,0x08,0x67,0x79,0x42,0x00,0x00,0xF2,0x96,0x06,0x60,0x79,0x42, +0x00,0x00,0xA0,0x98,0x00,0x60,0xC4,0x00,0xC4,0xF9,0x40,0x4A,0x0C,0x67,0xFC,0x33, +0x01,0x00,0x00,0x00,0xF2,0x96,0x00,0x60,0xB2,0x00,0xBC,0x3E,0x01,0x00,0x67,0x42, +0x39,0x2F,0x00,0x00,0x9E,0xC7,0x20,0xF7,0x8F,0x5C,0xFC,0x33,0x01,0x00,0x00,0x00, +0xF2,0x96,0x6E,0x4A,0xF8,0xFF,0x10,0x67,0xAE,0x3E,0xF8,0xFF,0x24,0xF2,0x40,0x3D, +0xFA,0xFF,0x6E,0x42,0xF8,0xFF,0x72,0x60,0x6E,0x42,0xFC,0xFF,0xBC,0x2E,0xFE,0x00, +0x46,0xAA,0x39,0x2F,0x00,0x00,0x9E,0xC7,0xA8,0xF2,0x8F,0x58,0x40,0x4A,0x54,0x67, +0x8D,0x2E,0x97,0x06,0x00,0x00,0x56,0x1F,0xA8,0xF9,0x80,0x2E,0x39,0x2F,0x00,0x00, +0x94,0xC7,0x18,0xF9,0x8F,0x58,0xB9,0x2E,0x00,0x00,0x2A,0xC8,0x67,0x42,0x39,0x2F, +0x00,0x00,0x9E,0xC7,0xC8,0xF9,0x8F,0x5C,0x79,0x4A,0x00,0x00,0x2A,0x9B,0x22,0x67, +0x79,0x4A,0x00,0x00,0xEC,0x98,0x1A,0x67,0x79,0x0C,0xE0,0xFF,0x00,0x00,0x18,0xC9, +0x10,0x6C,0x39,0x30,0x00,0x00,0x18,0xC9,0x40,0x46,0x7C,0xD0,0xE2,0xFF,0x40,0x3D, +0xF8,0xFF,0x06,0x60,0x7C,0x3D,0x02,0x00,0xF8,0xFF,0x6E,0x4A,0xFC,0xFF,0x00,0x66, +0x72,0xFF,0x6E,0x4A,0xF8,0xFF,0x00,0x66,0x6A,0xFF,0x79,0x4A,0x00,0x00,0xA0,0x98, +0x00,0x66,0x38,0xFE,0x21,0xF8,0x56,0x4E,0xFE,0xFF,0xE7,0x48,0x04,0x01,0x7C,0x3D, +0x01,0x00,0xFE,0xFF,0x7C,0x2A,0x00,0x00,0x2F,0xC4,0x39,0x10,0x00,0x00,0x2E,0xC4, +0x80,0x48,0x7C,0xC0,0xFF,0x00,0x00,0x60,0x7E,0x00,0x8D,0x2E,0xCC,0xF9,0x00,0x60, +0x94,0x00,0xB9,0x2E,0x00,0x00,0x9E,0xC7,0x3C,0x2F,0xFE,0x00,0xEC,0xF0,0x4C,0xF3, +0x8F,0x58,0xB9,0x2E,0x00,0x00,0x9E,0xC7,0x0D,0x2F,0x00,0xF4,0x8F,0x58,0xBC,0x3E, +0x01,0x00,0x67,0x42,0x39,0x2F,0x00,0x00,0x9E,0xC7,0x20,0xF7,0x8F,0x5C,0x8D,0x2E, +0xD0,0xF9,0x60,0x60,0xBC,0x3E,0x01,0x00,0x67,0x42,0x39,0x2F,0x00,0x00,0x9E,0xC7, +0x20,0xF7,0x8F,0x5C,0xB9,0x2E,0x00,0x00,0x9E,0xC7,0x0D,0x2F,0xD4,0xF9,0x8F,0x58, +0x42,0x60,0xBC,0x3E,0x01,0x00,0x67,0x42,0x39,0x2F,0x00,0x00,0x9E,0xC7,0x20,0xF7, +0x8F,0x5C,0xB9,0x2E,0x00,0x00,0x9E,0xC7,0x0D,0x2F,0xD8,0xF9,0x8F,0x58,0x24,0x60, +0x6E,0x42,0xFE,0xFF,0x1E,0x60,0x7C,0xB0,0xFB,0x00,0xD6,0x67,0x7C,0xB0,0xFC,0x00, +0xB2,0x67,0x7C,0xB0,0xFD,0x00,0x00,0x67,0x7A,0xFF,0x7C,0xB0,0xFE,0x00,0x00,0x67, +0x6A,0xFF,0xDC,0x60,0x2E,0x30,0xFE,0xFF,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x00,0x03,0x2E,0x3E,0x08,0x00,0x30,0x60,0x07,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0, +0x0A,0x00,0x40,0x20,0xFF,0x70,0x40,0x31,0x04,0x00,0x07,0x32,0xFC,0xC3,0x18,0x00, +0xAE,0xD2,0x0A,0x00,0x41,0x22,0x40,0x33,0x02,0x00,0x07,0x32,0xFC,0xC3,0x18,0x00, +0xAE,0xD2,0x0A,0x00,0x41,0x22,0x80,0x32,0x07,0x30,0x47,0x53,0x40,0x4A,0xC8,0x66, +0x21,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F,0x2E,0x3E,0x0C,0x00,0x2E,0x3C, +0x0E,0x00,0x7C,0xBE,0xFF,0xFF,0x5A,0x67,0x7C,0xBC,0xFF,0xFF,0x54,0x67,0x06,0x30, +0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x87,0x30,0x07,0x30,0xFC,0xC1, +0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x28,0x3A,0x04,0x00,0x7C,0xBA,0xFF,0xFF, +0x12,0x66,0x07,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x46,0x31, +0x02,0x00,0x0E,0x60,0x05,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20, +0x86,0x30,0x07,0x30,0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x20,0x46,0x31, +0x04,0x00,0x39,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x01,0x2E,0x30,0x0C,0x00, +0xFC,0xC1,0x38,0x00,0x40,0x2A,0xFC,0xDB,0x00,0x00,0x58,0x9C,0xFC,0xDB,0x00,0x00, +0x56,0x28,0x6E,0x2B,0x08,0x00,0x02,0x00,0x55,0x00,0x01,0x00,0x6E,0x3B,0x0E,0x00, +0x06,0x00,0x40,0x42,0x40,0x3B,0x2A,0x00,0x40,0x3B,0x28,0x00,0xFF,0x70,0x40,0x3B, +0x2E,0x00,0x40,0x3B,0x2C,0x00,0x01,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03, +0x2E,0x3E,0x0A,0x00,0x2E,0x30,0x08,0x00,0x58,0x60,0x07,0x30,0xFC,0xC1,0x18,0x00, +0xBC,0xD0,0x00,0x00,0x34,0x97,0xBC,0xD0,0x00,0x00,0x10,0x00,0x58,0x60,0x56,0x60, +0x07,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0xBC,0xD0,0x00,0x00, +0x76,0x28,0x42,0x60,0x40,0x60,0x07,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00, +0x58,0x9C,0xBC,0xD0,0x00,0x00,0x6E,0x28,0x2C,0x60,0x2A,0x60,0x07,0x30,0xFC,0xC1, +0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0xBC,0xD0,0x00,0x00,0x66,0x28,0x16,0x60, +0x14,0x60,0x7C,0xB0,0x04,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00, +0x1E,0xF9,0x50,0x20,0xD0,0x4E,0x21,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x03, +0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0C,0x00,0x8D,0x2E,0x2E,0x3F,0x0A,0x00,0x07,0x3F, +0xDC,0xF9,0x8F,0x58,0x00,0x2F,0x10,0xF1,0x8F,0x58,0x7C,0xBE,0x04,0x00,0x14,0x66, +0x6D,0x4A,0x04,0x00,0x0E,0x67,0x6D,0x4A,0x06,0x00,0x08,0x67,0x6D,0x54,0x04,0x00, +0x6D,0x54,0x06,0x00,0x21,0xF8,0x56,0x4E,0xFC,0xFF,0x2E,0x2F,0x08,0x00,0xDC,0xF9, +0x8F,0x58,0x80,0x2E,0x2E,0x2F,0x0C,0x00,0x10,0xF1,0x8F,0x58,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x0A,0x00,0x07,0x30,0xFC,0xC1,0x18,0x00, +0xBC,0xD0,0x00,0x00,0xEE,0x98,0x80,0x2E,0x97,0x06,0x00,0x00,0x10,0x00,0x0E,0x2F, +0x97,0x06,0x00,0x00,0x0C,0x00,0x10,0xF1,0x8F,0x58,0x07,0x30,0xFC,0xC1,0x18,0x00, +0xBC,0xD0,0x00,0x00,0xEE,0x98,0x40,0x20,0xFF,0x70,0x40,0x31,0x04,0x00,0x07,0x32, +0xFC,0xC3,0x18,0x00,0xBC,0xD2,0x00,0x00,0xEE,0x98,0x41,0x22,0x40,0x33,0x02,0x00, +0x87,0x3E,0x2E,0x3F,0x08,0x00,0x3C,0x2F,0x00,0x00,0xEE,0x98,0xE0,0xF9,0x8F,0x5C, +0x21,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x07,0x2E,0x3E,0x0A,0x00,0x2E,0x3C, +0x0C,0x00,0x6E,0x4A,0x08,0x00,0x1C,0x67,0xAE,0x3E,0x18,0x00,0x39,0x3F,0x00,0x00, +0xD6,0x9A,0x2E,0x2F,0x0E,0x00,0x06,0x3F,0x07,0x3F,0xE4,0xF9,0xFC,0xDF,0x00,0x00, +0x0A,0x00,0x1A,0x60,0xB9,0x3E,0x00,0x00,0x02,0x97,0x2E,0x2F,0x14,0x00,0x2E,0x3F, +0x12,0x00,0x06,0x3F,0x07,0x3F,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x31,0xF0, +0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x0C,0x03,0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x12,0x00, +0x79,0x4A,0x00,0x00,0x40,0xC9,0x06,0x66,0x7C,0xBE,0xFF,0xFF,0x04,0x66,0x01,0x70, +0x5E,0x60,0x0D,0x20,0x0E,0x67,0x8D,0x2E,0x3C,0x2F,0x00,0x00,0xAC,0x98,0x10,0xF3, +0x8F,0x58,0x06,0x60,0x7C,0x2A,0x00,0x00,0xAC,0x98,0x07,0x30,0xFC,0xC1,0x38,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x68,0x28,0x86,0x28,0x2E,0x60,0x8E,0x2E, +0x97,0x51,0x0C,0x2F,0x97,0x58,0x10,0xF1,0x8F,0x58,0x8E,0x2E,0x97,0x51,0x0D,0x2F, +0x10,0xF3,0x8F,0x58,0x40,0x4A,0x12,0x67,0x8E,0x2E,0x97,0x51,0xFC,0xF1,0x2E,0x2F, +0x0E,0x00,0x2E,0x2F,0x0A,0x00,0x00,0xF2,0x8F,0x50,0x54,0x28,0x0C,0x20,0xCE,0x66, +0x21,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x0F,0x6E,0x2A,0x08,0x00,0xB9,0x4A, +0x00,0x00,0x42,0xC9,0x10,0x67,0x39,0x2E,0x00,0x00,0x42,0xC9,0x08,0x7C,0x39,0x3A, +0x00,0x00,0xB6,0x9A,0x0A,0x60,0x39,0x2E,0x00,0x00,0x2C,0x9B,0x46,0x42,0x45,0x42, +0x6D,0x54,0x04,0x00,0x6D,0x54,0x06,0x00,0x8D,0x2E,0x06,0x3F,0x05,0x3F,0x07,0x2F, +0x67,0x42,0xE8,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x39,0xF8,0x56,0x4E,0xF8,0xFF, +0xE7,0x48,0x00,0x03,0x2E,0x3E,0x08,0x00,0x79,0xBE,0x00,0x00,0xDC,0x9B,0x06,0x67, +0x6E,0x4A,0x0E,0x00,0x10,0x67,0x8E,0x2E,0x97,0x51,0x07,0x3F,0x3C,0x3F,0x04,0x00, +0x88,0xF7,0x8F,0x58,0x0E,0x60,0x8E,0x2E,0x97,0x51,0x50,0xF5,0x6E,0x54,0xFC,0xFF, +0x6E,0x54,0xFE,0xFF,0x87,0x3E,0x84,0xF7,0x8E,0x2E,0x97,0x51,0x2E,0x2F,0x0A,0x00, +0x39,0x2F,0x00,0x00,0xF6,0x96,0x07,0x3F,0xE8,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00, +0x21,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x0F,0x2E,0x3E,0x08,0x00,0x2E,0x3C, +0x0A,0x00,0x2E,0x2A,0x0C,0x00,0x7C,0xBC,0x03,0x00,0x1C,0x66,0x07,0x30,0xFC,0xC1, +0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x05,0x20,0x40,0x21,0x5E,0x28, +0xC0,0x23,0x00,0x00,0xA6,0xC7,0x1A,0x60,0x07,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0, +0x00,0x00,0x58,0x9C,0x40,0x20,0x05,0x20,0x40,0x21,0x62,0x28,0xC0,0x23,0x00,0x00, +0xC2,0xC7,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x08,0x00,0x06,0x3F,0x07,0x3F,0xEC,0xF9, +0x8F,0x5C,0x39,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x1F,0x2E,0x3E,0x0A,0x00, +0x2E,0x3C,0x0C,0x00,0x2E,0x3A,0x0E,0x00,0x2E,0x38,0x10,0x00,0x7C,0xBA,0xFF,0xFF, +0x04,0x66,0x04,0x3A,0x16,0x60,0xBC,0x3E,0xE8,0x03,0x07,0x3F,0x05,0x3F,0xF4,0xF0, +0x8F,0x58,0x80,0x3E,0x04,0x3F,0x60,0xF3,0x8F,0x54,0x00,0x3A,0xBC,0x3E,0xE8,0x03, +0x06,0x3F,0x07,0x3F,0x05,0x30,0x57,0x91,0xF4,0xF0,0x8F,0x58,0x00,0x3C,0x6E,0x4A, +0x08,0x00,0x1A,0x67,0x85,0x3E,0x39,0x3F,0x00,0x00,0xD6,0x9A,0x06,0x3F,0x67,0x42, +0x2E,0x2F,0x12,0x00,0x5C,0xF1,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x18,0x60,0xB9,0x3E, +0x00,0x00,0x02,0x97,0x05,0x3F,0x67,0x42,0x06,0x3F,0x2E,0x2F,0x16,0x00,0x5C,0xF1, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x3D,0xF0,0x56,0x4E,0xEC,0xFF,0xE7,0x48,0x00,0x3F, +0x2E,0x3E,0x12,0x00,0x2E,0x3C,0x14,0x00,0x2E,0x3A,0x16,0x00,0x2E,0x38,0x18,0x00, +0x6E,0x0C,0x09,0x00,0x0C,0x00,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x40,0x3D, +0xFE,0xFF,0x6E,0x4A,0xFE,0xFF,0x2A,0x67,0x7C,0x3D,0x40,0x00,0xFA,0xFF,0x7C,0x3D, +0x80,0x00,0xF8,0xFF,0x7C,0x3D,0x00,0x01,0xF6,0xFF,0x0A,0x76,0x7C,0x3D,0x0B,0x00, +0xF4,0xFF,0x7C,0x3D,0x0C,0x00,0xF2,0xFF,0x79,0x3D,0x00,0x00,0x02,0x97,0xF0,0xFF, +0x28,0x60,0x7C,0x3D,0x00,0x02,0xFA,0xFF,0x7C,0x3D,0x00,0x04,0xF8,0xFF,0x7C,0x3D, +0x00,0x08,0xF6,0xFF,0x0F,0x76,0x7C,0x3D,0x10,0x00,0xF4,0xFF,0x7C,0x3D,0x11,0x00, +0xF2,0xFF,0x79,0x3D,0x00,0x00,0xD6,0x9A,0xF0,0xFF,0x84,0x3E,0x05,0x3F,0x06,0x3F, +0x07,0x3F,0x06,0x3F,0x07,0x3F,0x2E,0x3F,0x0C,0x00,0x3C,0x3F,0x06,0x00,0x2E,0x3F, +0xFE,0xFF,0xF0,0xF9,0xFC,0xDF,0x00,0x00,0x10,0x00,0x46,0x42,0x06,0x3E,0x6E,0x4A, +0x0A,0x00,0x00,0x67,0x58,0x01,0x2E,0x30,0x08,0x00,0x6E,0xC0,0xFA,0xFF,0x4E,0x67, +0xB9,0x3E,0x00,0x00,0x02,0x97,0x39,0x3F,0x00,0x00,0xD6,0x9A,0x06,0x3F,0x07,0x3F, +0x03,0x3F,0x2E,0x3F,0x0C,0x00,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6E,0x4A, +0xFE,0xFF,0x16,0x67,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x40,0xDC,0x39,0x30, +0x00,0x00,0x02,0x97,0x40,0x53,0x40,0x98,0x14,0x60,0x39,0x30,0x00,0x00,0xD6,0x9A, +0x40,0x53,0x40,0xDE,0x39,0x30,0x00,0x00,0xD6,0x9A,0x40,0x53,0x40,0x9A,0x2E,0x30, +0x08,0x00,0x6E,0xC0,0xF8,0xFF,0x48,0x67,0x39,0x30,0x00,0x00,0xD6,0x9A,0x40,0x53, +0x40,0x9A,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x40,0x98,0xB9,0x3E,0x00,0x00, +0x02,0x97,0x39,0x3F,0x00,0x00,0xD6,0x9A,0x06,0x3F,0x07,0x3F,0x05,0x30,0x57,0xD1, +0x57,0x53,0x06,0x3F,0x04,0x30,0x57,0xD1,0x57,0x53,0x07,0x3F,0x2E,0x3F,0xF4,0xFF, +0x2E,0x3F,0x0C,0x00,0x2E,0x3F,0xFE,0xFF,0xF0,0xF9,0xFC,0xDF,0x00,0x00,0x10,0x00, +0x2E,0x30,0x08,0x00,0x6E,0xC0,0xF6,0xFF,0x00,0x67,0xA2,0x00,0x84,0x3E,0x05,0x3F, +0x06,0x3F,0x07,0x3F,0x06,0x3F,0x07,0x3F,0x2E,0x3F,0xF2,0xFF,0x2E,0x3F,0x0C,0x00, +0x2E,0x3F,0xFE,0xFF,0xF0,0xF9,0xFC,0xDF,0x00,0x00,0x10,0x00,0x6E,0x4A,0xFE,0xFF, +0x04,0x67,0x04,0x30,0x02,0x60,0x05,0x30,0x40,0x3D,0xEC,0xFF,0xBC,0x2E,0x00,0x00, +0xAE,0x9A,0x3C,0x2F,0x00,0x00,0x36,0x9A,0x2E,0x3F,0xF0,0xFF,0x2E,0x2F,0x0E,0x00, +0x2E,0x3F,0xEC,0xFF,0x2E,0x3F,0xFE,0xFF,0xF4,0xF9,0xFC,0xDF,0x00,0x00,0x0E,0x00, +0x6E,0x4A,0xFE,0xFF,0x04,0x67,0x0D,0x70,0x02,0x60,0x12,0x70,0x40,0x3D,0xFC,0xFF, +0x2E,0x30,0xFC,0xFF,0xFC,0xC1,0x18,0x00,0xBC,0xD0,0x00,0x00,0xEE,0x98,0x40,0x20, +0xFF,0x70,0x40,0x31,0x04,0x00,0x2E,0x32,0xFC,0xFF,0xFC,0xC3,0x18,0x00,0xBC,0xD2, +0x00,0x00,0xEE,0x98,0x41,0x22,0x40,0x33,0x02,0x00,0xAE,0x3E,0xFC,0xFF,0x2E,0x3F, +0xF2,0xFF,0x3C,0x2F,0x00,0x00,0xEE,0x98,0xE0,0xF9,0x8F,0x5C,0x3F,0xF0,0x56,0x4E, +0xF8,0xFF,0xE7,0x48,0x00,0x03,0x79,0x0C,0xFF,0xFF,0x00,0x00,0xDC,0x9B,0x08,0x67, +0x39,0x30,0x00,0x00,0xDC,0x9B,0x02,0x60,0x40,0x42,0x00,0x3E,0x8E,0x2E,0x97,0x51, +0x07,0x3F,0x3C,0x3F,0x03,0x00,0x88,0xF7,0x8F,0x58,0x8E,0x2E,0x97,0x51,0x07,0x30, +0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x2F,0x58,0x28, +0x30,0xF8,0x8F,0x58,0x21,0xF0,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x04,0x3F,0x2E,0x3E, +0x08,0x00,0xEE,0x4B,0xF4,0xFF,0x7C,0xBE,0xFF,0xFF,0x06,0x66,0x01,0x70,0x00,0x60, +0x06,0x03,0x79,0xBE,0x00,0x00,0xDC,0x9B,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70, +0x40,0x3D,0xFE,0xFF,0x07,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C, +0x40,0x20,0x28,0x3C,0x5C,0x28,0xBC,0x2E,0x00,0x00,0xEE,0x98,0x3C,0x3F,0x13,0x00, +0xF8,0xF9,0x8F,0x54,0x07,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C, +0x40,0x20,0xE8,0x23,0x5E,0x28,0x00,0x00,0xA6,0xC7,0x07,0x30,0xFC,0xC1,0x38,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0xE8,0x23,0x62,0x28,0x00,0x00,0xC2,0xC7, +0x8D,0x2E,0x07,0x3F,0x3C,0x3F,0x01,0x00,0x88,0xF7,0x8F,0x58,0xBC,0x2E,0x00,0x00, +0xFE,0x98,0x0D,0x2F,0x10,0xF1,0x8F,0x58,0x55,0x3D,0xF2,0xFF,0x6D,0x3D,0x02,0x00, +0xF0,0xFF,0x40,0x42,0x40,0x3B,0x02,0x00,0x80,0x3A,0x06,0x30,0x7C,0xC0,0x07,0x00, +0x00,0x67,0xDC,0x00,0xB9,0x3E,0x00,0x00,0x02,0x97,0x2D,0x2F,0x02,0x00,0x15,0x3F, +0x3C,0x3F,0x01,0x00,0x67,0x42,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x2D,0x36, +0x04,0x00,0x06,0x08,0x01,0x00,0x30,0x67,0x6E,0x4A,0xFE,0xFF,0x2A,0x67,0xB9,0x3E, +0x00,0x00,0x02,0x97,0x39,0x3F,0x00,0x00,0xD6,0x9A,0x15,0x2F,0x3C,0x2F,0x01,0x00, +0x02,0x00,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x39,0x30,0x00,0x00,0xD6,0x9A, +0x55,0xD1,0x79,0x96,0x00,0x00,0xD6,0x9A,0x06,0x08,0x02,0x00,0x30,0x67,0x6E,0x4A, +0xFE,0xFF,0x2A,0x67,0x79,0x96,0x00,0x00,0xD6,0x9A,0xB9,0x3E,0x00,0x00,0x02,0x97, +0x39,0x3F,0x00,0x00,0xD6,0x9A,0x2D,0x3F,0x02,0x00,0x03,0x3F,0x15,0x30,0x57,0xD1, +0x3C,0x2F,0x01,0x00,0x04,0x00,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x06,0x08, +0x00,0x00,0x30,0x67,0xB9,0x3E,0x00,0x00,0x02,0x97,0x03,0x3F,0x15,0x2F,0x3C,0x2F, +0x01,0x00,0x03,0x00,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6E,0x4A,0xFE,0xFF, +0x0A,0x67,0xFC,0x33,0xA1,0x11,0x00,0x00,0xB8,0xC7,0x08,0x60,0xFC,0x33,0x00,0x11, +0x00,0x00,0xB8,0xC7,0x55,0x42,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x6D,0xD1, +0x02,0x00,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x6D,0x91,0x06,0x00,0x06,0x08, +0x04,0x00,0x32,0x67,0xB9,0x3E,0x00,0x00,0x02,0x97,0x2D,0x2F,0x02,0x00,0x15,0x3F, +0x3C,0x3F,0x05,0x00,0x67,0x42,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x39,0x30, +0x00,0x00,0x02,0x97,0x40,0x53,0x6D,0xD1,0x02,0x00,0x39,0x30,0x00,0x00,0x02,0x97, +0x40,0x53,0x6D,0x91,0x06,0x00,0x2D,0x2F,0x04,0x00,0x15,0x2F,0x3C,0x3F,0x06,0x00, +0x67,0x42,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x55,0x52,0x6D,0x52,0x02,0x00, +0x6D,0x55,0x04,0x00,0x6D,0x55,0x06,0x00,0x06,0x3A,0x7C,0xCA,0xE0,0x01,0x06,0x38, +0x7C,0xC8,0x20,0x0E,0x45,0x4A,0x0C,0x67,0x39,0x30,0x00,0x00,0xD6,0x9A,0x40,0x53, +0x6D,0x91,0x04,0x00,0x44,0x4A,0x0C,0x67,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53, +0x6D,0x91,0x06,0x00,0x2E,0x30,0xF2,0xFF,0x55,0xD1,0x2E,0x30,0xF0,0xFF,0x6D,0xD1, +0x02,0x00,0x01,0x70,0x40,0x3B,0x02,0x00,0x80,0x3A,0x2D,0x2F,0x04,0x00,0x15,0x2F, +0x3C,0x2F,0x06,0x00,0x07,0x00,0xE4,0xF9,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x45,0x4A, +0x4C,0x67,0x2D,0x30,0x04,0x00,0x55,0xD1,0xAD,0x3E,0x06,0x00,0x57,0x54,0x2D,0x3F, +0x04,0x00,0x57,0x54,0x67,0x42,0x15,0x3F,0x07,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0, +0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x3F,0x84,0x28,0x07,0x30,0xFC,0xC1,0x38,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x3F,0x80,0x28,0x3C,0x3F,0x09,0x00, +0x2E,0x3F,0xFE,0xFF,0x06,0x3F,0xFC,0xF9,0xFC,0xDF,0x00,0x00,0x10,0x00,0x44,0x4A, +0x50,0x67,0x2D,0x30,0x06,0x00,0x6D,0xD1,0x02,0x00,0xAD,0x3E,0x06,0x00,0x57,0x54, +0x2D,0x3F,0x04,0x00,0x57,0x54,0x2D,0x3F,0x02,0x00,0x67,0x42,0x07,0x30,0xFC,0xC1, +0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x3F,0x82,0x28,0x07,0x30, +0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x3F,0x7E,0x28, +0x3C,0x3F,0x0E,0x00,0x2E,0x3F,0xFE,0xFF,0x06,0x3F,0xFC,0xF9,0xFC,0xDF,0x00,0x00, +0x10,0x00,0x45,0x4A,0x40,0x67,0x44,0x4A,0x3C,0x67,0xB9,0x3E,0x00,0x00,0x02,0x97, +0x39,0x3F,0x00,0x00,0xD6,0x9A,0x15,0x2F,0x3C,0x2F,0x06,0x00,0x08,0x00,0xE4,0xF9, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x6E,0x4A,0xFE,0xFF,0x0E,0x67,0x06,0x08,0x05,0x00, +0x08,0x67,0x3C,0x20,0x01,0x06,0x00,0x11,0x06,0x60,0x3C,0x20,0x01,0x00,0x00,0x11, +0xC0,0x23,0x00,0x00,0xBA,0x99,0x3F,0xF8,0x56,0x4E,0xFC,0xFF,0x6E,0x20,0x08,0x00, +0xAE,0x30,0x0C,0x00,0x6E,0x20,0x08,0x00,0x79,0x22,0x00,0x00,0x94,0xC7,0x69,0x31, +0x1C,0x00,0x02,0x00,0x6E,0x20,0x08,0x00,0x68,0x42,0x04,0x00,0x6E,0x20,0x08,0x00, +0x6E,0x31,0x10,0x00,0x06,0x00,0x6E,0x20,0x08,0x00,0x6E,0x31,0x12,0x00,0x08,0x00, +0x6E,0x20,0x08,0x00,0x6E,0x31,0x14,0x00,0x0A,0x00,0x6E,0x20,0x08,0x00,0x6E,0x31, +0x16,0x00,0x0C,0x00,0x6E,0x20,0x08,0x00,0x6E,0x31,0x18,0x00,0x0E,0x00,0xAE,0x2E, +0x08,0x00,0x3C,0x3F,0x10,0x00,0x2E,0x3F,0x0E,0x00,0x3C,0x3F,0x02,0x00,0xB4,0xF1, +0x8F,0x5C,0x01,0xF0,0x56,0x4E,0xF0,0xFF,0xE7,0x48,0x04,0x03,0x2E,0x3E,0x08,0x00, +0xEE,0x4B,0xF8,0xFF,0x8D,0x2E,0x2E,0x2F,0x0A,0x00,0x10,0xF1,0x8F,0x58,0x8E,0x2E, +0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x07,0x3F,0x3C,0x3F,0x03,0x00,0x88,0xF7,0x8F,0x58, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0D,0x2F,0x10,0xF3,0x8F,0x58,0x40,0x4A, +0x64,0x67,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x07,0x30,0xFC,0xC1,0x38,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x2F,0x86,0x28,0x00,0xFA,0x8F,0x58, +0x40,0x4A,0x42,0x67,0x8D,0x2E,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x10,0xF3, +0x8F,0x58,0x40,0x4A,0x30,0x67,0x2D,0x2F,0x04,0x00,0x15,0x2F,0x07,0x3F,0x07,0x30, +0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x68,0x20,0x58,0x28, +0x28,0x3F,0x1C,0x00,0x3C,0x3F,0x14,0x00,0x3C,0x2F,0x00,0x00,0xDC,0x9A,0x80,0xF7, +0xFC,0xDF,0x00,0x00,0x12,0x00,0x21,0xF8,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x03, +0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00,0x15,0x3E,0x8D,0x2E,0x3C,0x2F,0x00,0x00, +0xAC,0x98,0x10,0xF3,0x8F,0x58,0x7C,0xBE,0xFF,0xFF,0x0A,0x66,0x54,0x52,0x6C,0x53, +0x04,0x00,0x01,0x70,0x02,0x60,0x40,0x42,0x21,0xFC,0x56,0x4E,0xF0,0xFF,0xE7,0x48, +0x0C,0x0F,0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0A,0x00,0x79,0x4A,0x00,0x00,0x40,0xC9, +0x00,0x66,0x0C,0x01,0x8E,0x2E,0x97,0x51,0x07,0x3F,0x3C,0x3F,0x02,0x00,0x88,0xF7, +0x8F,0x58,0x6E,0x54,0xFC,0xFF,0x6E,0x54,0xFE,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF, +0xF0,0xFF,0x07,0x3F,0x3C,0x3F,0x04,0x00,0x88,0xF7,0x8F,0x58,0x2E,0x30,0xFC,0xFF, +0x6E,0xD0,0xF8,0xFF,0x79,0xB0,0x00,0x00,0x0A,0x98,0x0A,0x6F,0x2E,0x30,0xF0,0xFF, +0x6E,0xB0,0xF8,0xFF,0x1A,0x6D,0x2E,0x30,0xFA,0xFF,0x6E,0xD0,0xFE,0xFF,0x79,0xB0, +0x00,0x00,0x8E,0xC7,0x1E,0x6F,0x2E,0x30,0xF2,0xFF,0x6E,0xB0,0xFA,0xFF,0x14,0x6C, +0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F,0x97,0x51,0x18,0xF3,0x8F,0x58, +0x55,0x42,0x02,0x60,0x87,0x3A,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF,0x0E,0x2F, +0x97,0x51,0x04,0xFA,0x8F,0x58,0x00,0x3C,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xF0,0xFF,0x04,0xFA,0x8F,0x58,0x00,0x3A,0x55,0xBE,0x58,0x66,0xBC,0x2E, +0x00,0x00,0xAC,0x98,0xFC,0xF1,0x2E,0x2F,0xFC,0xFF,0x2E,0x2F,0xF0,0xFF,0x2E,0x2F, +0xF8,0xFF,0x3C,0x3F,0x03,0x00,0xEC,0xF6,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x45,0xBC, +0x2E,0x67,0x45,0x4A,0x04,0x67,0x6E,0x53,0xF8,0xFF,0x46,0x4A,0x22,0x67,0x6E,0x53, +0xF0,0xFF,0x7C,0x3D,0x01,0x00,0xF4,0xFF,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xF0,0xFF, +0xFC,0xF1,0xA7,0x42,0x67,0x42,0x39,0x3F,0x00,0x00,0xDC,0x9B,0xEC,0xF9,0x8F,0x50, +0xEE,0x49,0xF8,0xFF,0x04,0x60,0xEE,0x49,0xF0,0xFF,0xAE,0x2E,0x0E,0x00,0x0C,0x2F, +0x10,0xF1,0x8F,0x58,0x55,0xBE,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x39,0xFC, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x3F,0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0A,0x00, +0x2E,0x3C,0x0E,0x00,0x79,0x4A,0x00,0x00,0x40,0xC9,0x00,0x66,0x86,0x00,0x8D,0x2E, +0x3C,0x2F,0x00,0x00,0xAC,0x98,0x10,0xF3,0x8F,0x58,0x48,0xF2,0x47,0x4A,0x06,0x66, +0x39,0x3E,0x00,0x00,0x36,0x97,0x7C,0xBE,0xFF,0xFF,0x64,0x67,0x46,0x4A,0x06,0x66, +0x39,0x3C,0x00,0x00,0x38,0x97,0x6E,0x4A,0x10,0x00,0x08,0x67,0x79,0xBC,0x00,0x00, +0xDC,0x9B,0x1A,0x67,0x8D,0x2E,0xFC,0xF1,0x57,0x42,0x3C,0x3F,0x08,0x00,0x67,0x42, +0x06,0x3F,0xEC,0xF9,0x8F,0x5C,0x8D,0x2E,0x06,0x3F,0x08,0xFA,0x8F,0x54,0x07,0x3A, +0x46,0xBA,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70,0x00,0x36,0x1A,0x60,0x05,0x30, +0xFC,0xC1,0x18,0x00,0xBC,0xD0,0x00,0x00,0x34,0x97,0x40,0x20,0x10,0x38,0x46,0xB8, +0x04,0x66,0x05,0x3C,0x02,0x60,0x04,0x3A,0x46,0xBA,0xE2,0x66,0x43,0x4A,0xA6,0x67, +0x28,0xF0,0x3F,0xF8,0x56,0x4E,0xEE,0xFF,0xE7,0x48,0x1C,0x1F,0x2E,0x3E,0x08,0x00, +0x6E,0x2A,0x0A,0x00,0xEE,0x49,0xF8,0xFF,0x8C,0x2E,0x07,0x3F,0x3C,0x3F,0x01,0x00, +0x88,0xF7,0x8F,0x58,0x8C,0x2E,0x07,0x3F,0x3C,0x3F,0x02,0x00,0x0C,0xFA,0x8F,0x58, +0x8D,0x2E,0x07,0x3F,0x3C,0x3F,0x01,0x00,0x0C,0xFA,0x8F,0x58,0x87,0x3E,0x3C,0x3F, +0x03,0x00,0xDC,0xF9,0x8F,0x54,0x40,0x26,0x8B,0x2E,0x97,0x5C,0x0B,0x2F,0x97,0x58, +0x0B,0x2F,0x97,0x54,0x0B,0x2F,0x2D,0x2F,0x04,0x00,0x15,0x2F,0x07,0x30,0xFC,0xC1, +0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x3F,0x5C,0x28,0x3C,0x3F, +0x01,0x00,0x84,0xF2,0xFC,0xDF,0x00,0x00,0x18,0x00,0xBC,0x3E,0x08,0x00,0xA7,0x42, +0x3C,0x2F,0xFE,0x00,0x58,0x59,0x3C,0x3F,0xFF,0xFF,0x67,0x42,0x39,0x2F,0x00,0x00, +0x2C,0x9B,0x10,0xFA,0xFC,0xDF,0x00,0x00,0x10,0x00,0x39,0x3A,0x00,0x00,0xDC,0x9B, +0xF9,0x33,0x00,0x00,0x38,0x97,0x00,0x00,0xDC,0x9B,0xA8,0xF7,0x79,0x4A,0x00,0x00, +0x40,0xC9,0x06,0x67,0x01,0x70,0x00,0x60,0x1A,0x02,0x07,0x3C,0x6E,0x42,0xF2,0xFF, +0x6E,0x42,0xF6,0xFF,0x15,0x30,0x54,0xB0,0x00,0x66,0x08,0x01,0x2D,0x30,0x02,0x00, +0x6C,0xB0,0x02,0x00,0x00,0x66,0xFC,0x00,0x2D,0x30,0x04,0x00,0x6C,0xB0,0x04,0x00, +0x00,0x66,0x80,0x00,0x2D,0x30,0x06,0x00,0x6C,0xB0,0x06,0x00,0x00,0x66,0x74,0x00, +0x79,0xBE,0x00,0x00,0x38,0x97,0x04,0x66,0x45,0xBE,0x06,0x66,0x01,0x70,0x00,0x60, +0xD2,0x01,0x7C,0xBA,0xFF,0xFF,0x30,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x08,0x00, +0x67,0x42,0x05,0x3F,0xEC,0xF9,0x8F,0x5C,0x05,0x30,0xFC,0xC1,0x38,0x00,0xBC,0xD0, +0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x08,0x01,0x00,0x57,0x28,0x04,0x67,0x40,0x42, +0x02,0x60,0x01,0x70,0x00,0x38,0x02,0x60,0x01,0x78,0x44,0x4A,0x22,0x67,0x79,0x4A, +0x00,0x00,0x3E,0xC9,0x1A,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x3F,0x08,0x00,0x67,0x42, +0x39,0x3F,0x00,0x00,0xDC,0x9B,0xEC,0xF9,0x8F,0x5C,0x01,0x70,0x00,0x60,0x74,0x01, +0x6C,0x60,0x2D,0x30,0x04,0x00,0x6C,0xB0,0x04,0x00,0x28,0x6E,0x2D,0x30,0x06,0x00, +0x6C,0xB0,0x06,0x00,0x1E,0x6E,0x47,0x3D,0xF2,0xFF,0xBC,0x3E,0x01,0x00,0x3C,0x3F, +0x08,0x00,0x67,0x42,0x39,0x3F,0x00,0x00,0xDC,0x9B,0xEC,0xF9,0x8F,0x5C,0x7C,0x3D, +0x01,0x00,0xF6,0xFF,0x2D,0x30,0x04,0x00,0x6C,0xB0,0x04,0x00,0x0A,0x6D,0x2D,0x30, +0x06,0x00,0x6C,0xB0,0x06,0x00,0x02,0x6C,0x46,0x42,0xAC,0x3E,0x04,0x00,0x2D,0x3F, +0x04,0x00,0x60,0xF3,0x8F,0x54,0x40,0x54,0x40,0x39,0x04,0x00,0xAC,0x3E,0x06,0x00, +0x2D,0x3F,0x06,0x00,0x60,0xF3,0x8F,0x54,0x40,0x54,0x40,0x39,0x06,0x00,0x00,0x60, +0xA6,0x00,0x6C,0x4A,0x04,0x00,0x3A,0x67,0x6C,0x4A,0x06,0x00,0x34,0x67,0x15,0x30, +0x54,0xB0,0x38,0x6E,0x2D,0x30,0x02,0x00,0x6C,0xB0,0x02,0x00,0x2E,0x6E,0x14,0x30, +0x6C,0xD0,0x04,0x00,0x15,0x32,0x6D,0xD2,0x04,0x00,0x41,0xB0,0x1E,0x6E,0x2C,0x30, +0x02,0x00,0x6C,0xD0,0x06,0x00,0x2D,0x32,0x02,0x00,0x6D,0xD2,0x06,0x00,0x41,0xB0, +0x0A,0x6E,0x8C,0x2E,0x0D,0x2F,0x10,0xF1,0x8F,0x58,0x5A,0x60,0x2D,0x30,0x04,0x00, +0x6C,0xB0,0x04,0x00,0x28,0x66,0x2D,0x30,0x06,0x00,0x6C,0xB0,0x06,0x00,0x1E,0x66, +0x79,0xBE,0x00,0x00,0xDC,0x9B,0x16,0x66,0x8C,0x2E,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xF2,0xFF,0x07,0x3F,0x14,0xFA,0x8F,0x5C,0x40,0x3D,0xF6,0xFF,0x46,0x42,0x6D,0x4A, +0x04,0x00,0x06,0x67,0x6D,0x4A,0x06,0x00,0x02,0x66,0x46,0x42,0x46,0x4A,0x16,0x67, +0x8C,0x2E,0x0D,0x2F,0x18,0xF3,0x8F,0x58,0x8C,0x2E,0x0D,0x2F,0xBC,0xF5,0x8F,0x58, +0x40,0x4A,0x02,0x66,0x46,0x42,0x79,0xBA,0x00,0x00,0x38,0x97,0x3C,0x67,0x79,0x0C, +0xFF,0xFF,0x00,0x00,0xDC,0x9B,0x32,0x67,0x8D,0x2E,0x39,0x3F,0x00,0x00,0xDC,0x9B, +0x3C,0x3F,0x01,0x00,0x88,0xF7,0x8F,0x58,0x8C,0x2E,0x0D,0x2F,0x18,0xF3,0x8F,0x58, +0x7C,0xBA,0xFF,0xFF,0x14,0x67,0x47,0xBA,0x10,0x67,0xBC,0x3E,0x01,0x00,0x3C,0x3F, +0x08,0x00,0x67,0x42,0x05,0x3F,0xEC,0xF9,0x8F,0x5C,0x46,0x4A,0x04,0x66,0x8C,0x2E, +0x4C,0xF8,0xAE,0x3E,0xF6,0xFF,0x2E,0x3F,0xF2,0xFF,0x0C,0x2F,0x06,0x3F,0x50,0xF8, +0x8F,0x50,0x3D,0xFE,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x0A,0x00, +0x6E,0x28,0x12,0x00,0x2E,0x60,0x8C,0x2E,0x0D,0x2F,0x97,0x58,0x10,0xF1,0x8F,0x58, +0x55,0x2A,0x2E,0x30,0x08,0x00,0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C, +0x40,0x20,0x4D,0x21,0x8A,0x28,0x8C,0x2E,0x2E,0x2F,0x0E,0x00,0x10,0xF3,0x8F,0x58, +0x40,0x4A,0x0E,0x66,0x0D,0x20,0xCE,0x66,0x40,0x42,0x40,0x39,0x06,0x00,0x40,0x39, +0x04,0x00,0x01,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01,0x6E,0x2A,0x08,0x00, +0x6E,0x28,0x0C,0x00,0x0D,0x20,0x04,0x66,0x40,0x42,0x20,0x60,0x8C,0x2E,0x0D,0x2F, +0x97,0x58,0x10,0xF1,0x8F,0x58,0x55,0x2A,0x0C,0x60,0x8C,0x2E,0x0D,0x2F,0x97,0x58, +0x18,0xF3,0x8F,0x58,0x55,0x2A,0x0D,0x20,0xF0,0x66,0x01,0x70,0x01,0xFC,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x0C,0x07,0x18,0xFA,0xBC,0x2E,0x00,0x00,0x34,0x97,0x67,0x42, +0x3C,0x3F,0xC0,0x00,0x94,0xF3,0x8F,0x58,0xBC,0x2E,0x00,0x00,0x34,0x97,0x3C,0x3F, +0x08,0x00,0xF8,0xF9,0x8F,0x54,0x47,0x42,0x3E,0x60,0x07,0x30,0xFC,0xC1,0x38,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x68,0x42,0x56,0x28,0x07,0x30,0xFC,0xC1, +0x38,0x00,0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x7C,0x21,0x00,0x00,0x00,0x00, +0x86,0x28,0x07,0x30,0xFC,0xC1,0x18,0x00,0xBC,0xD0,0x00,0x00,0x34,0x97,0x40,0x20, +0x7C,0x31,0x19,0x00,0x06,0x00,0x47,0x52,0x7C,0xBE,0x08,0x00,0xBC,0x6D,0xFC,0x33, +0x14,0x00,0x00,0x00,0x3A,0x97,0x39,0x2C,0x00,0x00,0x20,0xC8,0x46,0x20,0xFC,0xD1, +0x00,0x00,0x0C,0x00,0xD0,0x23,0x00,0x00,0x40,0x97,0xBC,0x2E,0x00,0x00,0xEE,0x98, +0x67,0x42,0x3C,0x3F,0xC8,0x01,0x94,0xF3,0x8F,0x58,0xBC,0x2E,0x00,0x00,0xEE,0x98, +0x3C,0x3F,0x13,0x00,0xF8,0xF9,0x8F,0x54,0x47,0x42,0x3C,0x60,0x07,0x30,0xFC,0xC1, +0x18,0x00,0xBC,0xD0,0x00,0x00,0xEE,0x98,0x40,0x20,0x47,0x32,0xC9,0xD3,0xFC,0xD3, +0xFE,0x00,0x90,0xF8,0x51,0x31,0x06,0x00,0x07,0x30,0xFC,0xC1,0x18,0x00,0xBC,0xD0, +0x00,0x00,0xEE,0x98,0x40,0x20,0x47,0x32,0xC9,0xD3,0xC9,0xD3,0xFC,0xD3,0xFE,0x00, +0xB6,0xF8,0x51,0x21,0x0C,0x00,0x47,0x52,0x7C,0xBE,0x13,0x00,0xBE,0x6D,0xFC,0x33, +0x20,0x00,0x00,0x00,0xF8,0x98,0x1C,0xFA,0x40,0x28,0xCC,0x23,0x00,0x00,0xDE,0xC4, +0x94,0x42,0x6C,0x42,0x04,0x00,0x79,0x39,0x00,0x00,0x02,0x97,0x06,0x00,0x79,0x39, +0x00,0x00,0x0A,0x98,0x08,0x00,0x39,0x30,0x00,0x00,0x8E,0xC7,0x79,0x90,0x00,0x00, +0x02,0x97,0x40,0x39,0x0A,0x00,0xA7,0x42,0x39,0x2F,0x00,0x00,0x94,0xC7,0x20,0xFA, +0x8F,0x50,0xBC,0x2E,0x00,0x00,0xA4,0x98,0x67,0x42,0x3C,0x3F,0x01,0x00,0x0C,0xFA, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0xA4,0x98,0x67,0x42,0x3C,0x3F,0x02,0x00,0x0C,0xFA, +0x8F,0x58,0xBC,0x2E,0x00,0x00,0xAC,0x98,0xA7,0x42,0x0C,0xFA,0x8F,0x58,0xBC,0x2E, +0x00,0x00,0xAC,0x98,0x67,0x42,0x3C,0x3F,0x03,0x00,0x0C,0xFA,0x8F,0x58,0xFC,0x33, +0xFF,0xFF,0x00,0x00,0xDC,0x9B,0xFC,0x23,0x00,0x00,0x34,0x97,0x00,0x00,0x2C,0x9B, +0xFC,0x23,0x00,0x00,0xEE,0x98,0x00,0x00,0xF6,0x96,0xB9,0x42,0x00,0x00,0x42,0xC9, +0x79,0x42,0x00,0x00,0x40,0xC9,0xBC,0x2E,0x00,0x00,0xA6,0xC7,0x3C,0x2F,0xFE,0x00, +0x02,0xF9,0x3C,0x3F,0x1C,0x00,0x5C,0xF3,0x8F,0x5C,0xBC,0x2E,0x00,0x00,0xC2,0xC7, +0x3C,0x2F,0xFE,0x00,0x02,0xF9,0x3C,0x3F,0x1C,0x00,0x5C,0xF3,0x8F,0x5C,0xFC,0x33, +0x02,0x00,0x00,0x00,0xB6,0xC7,0xFC,0x23,0x00,0x00,0xA6,0xC7,0x00,0x00,0x42,0x99, +0xFC,0x23,0x00,0x00,0xC2,0xC7,0x00,0x00,0x72,0x99,0x31,0xFC,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x03,0x47,0x42,0x02,0x60,0x47,0x52,0x07,0x30,0xFC,0xC1,0x38,0x00, +0xBC,0xD0,0x00,0x00,0x58,0x9C,0x40,0x20,0x28,0x08,0x00,0x00,0x57,0x28,0x06,0x67, +0x7C,0xBE,0x08,0x00,0xE2,0x6D,0x7C,0xBE,0x08,0x00,0x40,0x6C,0xAE,0x3E,0x08,0x00, +0x07,0x3F,0x39,0x2F,0x00,0x00,0x94,0xC7,0x20,0xFA,0x8F,0x5C,0xBC,0x2E,0x00,0x00, +0x30,0x9B,0x07,0x3F,0x3C,0x3F,0x01,0x00,0x0C,0xFA,0x8F,0x58,0xBC,0x2E,0x00,0x00, +0x30,0x9B,0x07,0x3F,0x3C,0x3F,0x02,0x00,0x0C,0xFA,0x8F,0x58,0xAE,0x2E,0x0A,0x00, +0x07,0x3F,0x67,0x42,0x0C,0xFA,0x8F,0x58,0x07,0x30,0x02,0x60,0xFF,0x70,0x21,0xF0, +0x56,0x4E,0xF8,0xFF,0xE7,0x48,0x04,0x03,0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0A,0x00, +0x8E,0x2E,0x97,0x51,0x0D,0x2F,0x10,0xF1,0x8F,0x58,0xBC,0x3E,0x01,0x00,0x80,0xF2, +0x6E,0x4A,0x0E,0x00,0x10,0x67,0x87,0x3E,0x67,0x42,0x3C,0x2F,0x00,0x00,0x34,0x97, +0xE0,0xF9,0x8F,0x5C,0x0C,0x60,0x87,0x3E,0x39,0x2F,0x00,0x00,0x2C,0x9B,0xF8,0xF1, +0x8F,0x58,0x8E,0x2E,0x97,0x51,0x07,0x3F,0x24,0xFA,0x8F,0x54,0x6E,0x4A,0x0E,0x00, +0x0C,0x67,0x8D,0x2E,0x07,0x3F,0x3C,0x3F,0x02,0x00,0x0C,0xFA,0x8F,0x58,0x57,0x42, +0x80,0xF2,0x21,0xF8,0x56,0x4E,0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x2E,0x2F,0x0A,0x00, +0x2E,0x3F,0x08,0x00,0x28,0xFA,0x8F,0x5C,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x57,0x42, +0x3C,0x2F,0x00,0x00,0x30,0x9B,0x2E,0x3F,0x08,0x00,0x28,0xFA,0x8F,0x5C,0x01,0xF0, +0x56,0x4E,0xFC,0xFF,0x2E,0x30,0x08,0x00,0xFC,0xC1,0x38,0x00,0xBC,0xD0,0x00,0x00, +0x58,0x9C,0x40,0x20,0x68,0x02,0xFE,0xFF,0x56,0x28,0x01,0xF0,0x56,0x4E,0xF8,0xFF, +0xE7,0x48,0x1C,0x07,0x2E,0x3E,0x08,0x00,0x6E,0x2A,0x0C,0x00,0x7C,0x26,0x00,0x00, +0x58,0x9C,0xFF,0x7C,0x2E,0x30,0x0A,0x00,0x00,0x60,0xD2,0x00,0x03,0x7C,0x00,0x60, +0xE2,0x00,0x01,0x7C,0x00,0x60,0xDC,0x00,0x02,0x7C,0x00,0x60,0xD6,0x00,0x46,0x42, +0x00,0x60,0xD0,0x00,0x4B,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0xA8,0x3A, +0x7E,0x28,0x00,0x60,0xBE,0x00,0x4B,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1, +0xA8,0x3A,0x80,0x28,0x00,0x60,0xAC,0x00,0x4B,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00, +0xC1,0xD1,0xA8,0x3A,0x82,0x28,0x00,0x60,0x9A,0x00,0x4B,0x20,0x07,0x32,0xFC,0xC3, +0x38,0x00,0xC1,0xD1,0xA8,0x3A,0x84,0x28,0x00,0x60,0x88,0x00,0x79,0x0C,0xFF,0xFF, +0x00,0x00,0xDC,0x9B,0x04,0x66,0x40,0x42,0x06,0x60,0x39,0x30,0x00,0x00,0xDC,0x9B, +0x80,0x3A,0x6E,0x60,0x8E,0x2E,0x97,0x51,0x07,0x3F,0x3C,0x3F,0x03,0x00,0x88,0xF7, +0x8F,0x58,0x6E,0x0C,0x0B,0x00,0x0A,0x00,0x10,0x66,0x4B,0x20,0x07,0x32,0xFC,0xC3, +0x38,0x00,0xC1,0xD1,0x28,0x20,0x86,0x28,0x0E,0x60,0x4B,0x20,0x07,0x32,0xFC,0xC3, +0x38,0x00,0xC1,0xD1,0x28,0x20,0x8A,0x28,0x40,0x28,0x8D,0x2E,0x0E,0x2F,0x97,0x51, +0x0C,0x2F,0x07,0x3F,0x2C,0xFA,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x24,0x60,0x8D,0x2E, +0x97,0x58,0x0D,0x2F,0x30,0xFA,0x8F,0x58,0x18,0x60,0x16,0x60,0x40,0x59,0x7C,0xB0, +0x0D,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0x32,0xF9,0x50,0x20, +0xD0,0x4E,0x7C,0xBC,0xFF,0xFF,0x0A,0x67,0x8D,0x2E,0x07,0x3F,0x06,0x3F,0x88,0xF7, +0x8F,0x58,0x31,0xFE,0x56,0x4E,0xEE,0xFF,0xE7,0x48,0x0C,0x1F,0x2E,0x3E,0x08,0x00, +0x2E,0x3C,0x0A,0x00,0x6E,0x2A,0x0C,0x00,0x7C,0x28,0x00,0x00,0x58,0x9C,0x7C,0x3D, +0xFF,0xFF,0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x80,0xF2,0x06,0x30,0x00,0x60,0xB6,0x01, +0x7C,0x3D,0x03,0x00,0xFC,0xFF,0x00,0x60,0xC2,0x01,0x7C,0x3D,0x05,0x00,0xFC,0xFF, +0x00,0x60,0xB8,0x01,0x8D,0x2E,0x07,0x3F,0x24,0xFA,0x8F,0x54,0x00,0x60,0xAC,0x01, +0x79,0xBE,0x00,0x00,0xDC,0x9B,0x4E,0x67,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00, +0xC1,0xD1,0x28,0x08,0x01,0x00,0x57,0x28,0x04,0x67,0x40,0x42,0x02,0x60,0x01,0x70, +0xC0,0x33,0x00,0x00,0x3E,0xC9,0xBC,0x3E,0xFF,0xFF,0x07,0x3F,0x39,0x2F,0x00,0x00, +0x2C,0x9B,0x0C,0xF2,0x8F,0x5C,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF,0x07,0x3F, +0x3C,0x3F,0x01,0x00,0x88,0xF7,0x8F,0x58,0x8E,0x2E,0x97,0x06,0xFF,0xFF,0xEE,0xFF, +0x07,0x3F,0x24,0xFA,0x8F,0x54,0x00,0x60,0x52,0x01,0x47,0x4A,0x0A,0x67,0xFC,0x33, +0x01,0x00,0x00,0x00,0x40,0xC9,0x16,0x60,0x79,0x42,0x00,0x00,0x40,0xC9,0x8D,0x2E, +0x4C,0xF8,0x57,0x42,0x67,0x42,0x0D,0x2F,0x67,0x42,0x50,0xF8,0x8F,0x50,0x00,0x60, +0x2A,0x01,0xD5,0x23,0x00,0x00,0x42,0xC9,0xED,0x33,0x04,0x00,0x00,0x00,0xB6,0x9A, +0x00,0x60,0x18,0x01,0x95,0x3E,0x3C,0x3F,0xFF,0xFF,0x60,0xF3,0x8F,0x54,0x80,0x3A, +0x95,0x3E,0x3C,0x3F,0xE8,0x03,0x6C,0xF3,0x8F,0x54,0x80,0x3A,0x7C,0xBC,0x0F,0x00, +0x06,0x67,0x7C,0xBC,0x08,0x00,0x60,0x66,0x7C,0xBC,0x0F,0x00,0x22,0x66,0x4C,0x20, +0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x15,0x30,0x40,0x31,0x82,0x28,0x00,0x38, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x28,0x3A,0x7E,0x28,0x20,0x60, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x15,0x30,0x40,0x31,0x7E,0x28, +0x00,0x3A,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x28,0x38,0x82,0x28, +0x79,0x3D,0x00,0x00,0x9A,0x9A,0xFA,0xFF,0x7C,0x3D,0x11,0x00,0xF6,0xFF,0x79,0x3D, +0x00,0x00,0xD6,0x9A,0xF8,0xFF,0x5E,0x60,0x7C,0xBC,0x10,0x00,0x22,0x66,0x4C,0x20, +0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x15,0x30,0x40,0x31,0x84,0x28,0x00,0x38, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x28,0x3A,0x80,0x28,0x20,0x60, +0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x15,0x30,0x40,0x31,0x80,0x28, +0x00,0x3A,0x4C,0x20,0x07,0x32,0xFC,0xC3,0x38,0x00,0xC1,0xD1,0x28,0x38,0x84,0x28, +0x79,0x3D,0x00,0x00,0x24,0x9A,0xFA,0xFF,0x7C,0x3D,0x0C,0x00,0xF6,0xFF,0x79,0x3D, +0x00,0x00,0x02,0x97,0xF8,0xFF,0x79,0xBE,0x00,0x00,0xDC,0x9B,0x12,0x66,0xBC,0x3E, +0x01,0x00,0x3C,0x3F,0x08,0x00,0x2E,0x3F,0xF6,0xFF,0x07,0x3F,0xEC,0xF9,0x8F,0x5C, +0x18,0x60,0x16,0x60,0x40,0x55,0x7C,0xB0,0x0E,0x00,0x0E,0x62,0x40,0xE5,0x40,0x30, +0xFC,0xD1,0xFE,0x00,0x6A,0xF9,0x50,0x20,0xD0,0x4E,0x6E,0x0C,0xFF,0xFF,0xFC,0xFF, +0x0C,0x67,0x15,0x2F,0x2E,0x3F,0xFC,0xFF,0x07,0x3F,0x34,0xFA,0x8F,0x50,0x57,0x42, +0x80,0xF2,0x3D,0xFC,0x56,0x4E,0xFC,0xFF,0x2E,0x2F,0x08,0x00,0x3C,0x3F,0x02,0x00, +0x67,0x42,0x39,0x2F,0x00,0x00,0x2C,0x9B,0x04,0xF2,0xFC,0xDF,0x00,0x00,0x0C,0x00, +0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x03,0x2E,0x3E,0x08,0x00,0x7C,0xBE, +0x02,0x00,0x2A,0x6C,0x47,0x4A,0x1C,0x67,0xBC,0x2E,0x00,0x00,0xEE,0x9A,0x00,0xF8, +0x40,0x4A,0x0E,0x66,0xB9,0x2E,0x00,0x00,0x3E,0xC8,0x3C,0x3F,0x04,0x00,0x28,0xF7, +0x8F,0x54,0x08,0x60,0xBC,0x2E,0x00,0x00,0xEE,0x9A,0x38,0xFA,0x06,0x60,0x47,0x55, +0x87,0x3E,0x3C,0xF8,0x21,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48,0x00,0x3F,0x2E,0x3E, +0x0A,0x00,0x01,0x78,0x04,0x36,0x03,0x3A,0x05,0x3C,0x07,0x30,0x7C,0xC0,0x07,0x00, +0x0A,0x67,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x40,0xDC,0x07,0x08,0x04,0x00, +0x0A,0x67,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x40,0xDC,0x07,0x30,0x7C,0xC0, +0xE0,0x01,0x0A,0x67,0x39,0x30,0x00,0x00,0xD6,0x9A,0x40,0x53,0x40,0xD6,0x07,0x30, +0x7C,0xC0,0x20,0x0E,0x0A,0x67,0x39,0x30,0x00,0x00,0x02,0x97,0x40,0x53,0x40,0xDA, +0x6E,0x4A,0x08,0x00,0x18,0x66,0x04,0x30,0x40,0x44,0x00,0x38,0x06,0x30,0x40,0x44, +0x00,0x3C,0x03,0x30,0x40,0x44,0x00,0x36,0x05,0x30,0x40,0x44,0x00,0x3A,0x04,0x30, +0x6E,0xD0,0x0C,0x00,0x6E,0x22,0x14,0x00,0x80,0x32,0x06,0x30,0x6E,0xD0,0x0E,0x00, +0x6E,0x22,0x18,0x00,0x80,0x32,0x2E,0x30,0x10,0x00,0x44,0x90,0x43,0x90,0x6E,0x22, +0x1C,0x00,0x80,0x32,0x2E,0x30,0x12,0x00,0x46,0x90,0x45,0x90,0x6E,0x22,0x20,0x00, +0x80,0x32,0x3F,0xF0,0xF9,0x41,0x00,0x00,0x66,0x94,0xBC,0x20,0x00,0x00,0xE0,0xC7, +0x08,0x22,0x73,0x70,0x42,0x4E,0x75,0x4E,0x2F,0x30,0x06,0x00,0x40,0xD0,0xEF,0xC1, +0x04,0x00,0xEF,0x81,0x08,0x00,0x06,0x6B,0x40,0x52,0x40,0xE2,0x75,0x4E,0x40,0x53, +0x40,0xE2,0x75,0x4E,0x2F,0x30,0x06,0x00,0x40,0xD0,0xEF,0xC0,0x04,0x00,0xEF,0x80, +0x08,0x00,0x40,0x52,0x40,0xE2,0x75,0x4E,0xEF,0x23,0x04,0x00,0x00,0x00,0x6E,0x94, +0x75,0x4E,0xEF,0x23,0x04,0x00,0x00,0x00,0x6A,0x94,0x75,0x4E,0xEF,0x23,0x04,0x00, +0x00,0x00,0x76,0x94,0x75,0x4E,0xEF,0x23,0x04,0x00,0x00,0x00,0x72,0x94,0x75,0x4E, +0xEF,0x23,0x04,0x00,0x00,0x00,0xEE,0xC7,0x75,0x4E,0xEF,0x23,0x04,0x00,0x00,0x00, +0xF2,0xC7,0x75,0x4E,0x6F,0x20,0x04,0x00,0xB9,0x20,0x00,0x00,0xF2,0xC7,0x75,0x4E, +0x6F,0x20,0x08,0x00,0x6F,0x22,0x04,0x00,0x80,0x42,0x00,0x52,0xD8,0x12,0xFA,0x66, +0x40,0x53,0x75,0x4E,0x6F,0x20,0x08,0x00,0x6F,0x22,0x04,0x00,0x80,0x42,0x81,0x42, +0x18,0x12,0x06,0x67,0xC1,0x32,0x00,0x52,0xF6,0x60,0x75,0x4E,0x6F,0x20,0x04,0x00, +0x2F,0x32,0x0A,0x00,0x2F,0x30,0x08,0x00,0x06,0x67,0xC1,0x30,0x40,0x53,0xFA,0x66, +0x75,0x4E,0x6F,0x20,0x04,0x00,0x6F,0x22,0x08,0x00,0x2F,0x30,0x0C,0x00,0x41,0x42, +0x19,0x12,0xC1,0x30,0x40,0x53,0xF8,0x66,0x75,0x4E,0x6F,0x20,0x04,0x00,0x6F,0x22, +0x08,0x00,0x2F,0x30,0x0C,0x00,0x06,0x67,0xD9,0x30,0x40,0x53,0xFA,0x66,0x75,0x4E, +0x6F,0x20,0x04,0x00,0x2F,0x30,0x08,0x00,0x2F,0x32,0x0A,0x00,0x06,0x67,0xC1,0x30, +0x40,0x53,0xFA,0x66,0x75,0x4E,0x6F,0x20,0x04,0x00,0x40,0x42,0x40,0x52,0x18,0x0C, +0x00,0x00,0xF8,0x66,0x40,0x53,0x75,0x4E,0xEF,0x4C,0x00,0x03,0x04,0x00,0x80,0x42, +0x2F,0x30,0x0C,0x00,0x18,0x67,0xC8,0xB3,0x08,0x6D,0xD9,0x10,0x40,0x53,0xFA,0x66, +0x75,0x4E,0xC0,0xD3,0xC0,0xD1,0x40,0x53,0x21,0x11,0x40,0x53,0xFA,0x6A,0x75,0x4E, +0xE7,0x48,0x18,0x00,0xEF,0x4C,0x00,0x1F,0x0C,0x00,0x98,0x32,0x98,0x34,0x98,0x36, +0x98,0x38,0xDF,0x4C,0x00,0x18,0x75,0x4E,0xEF,0x4C,0x00,0x07,0x04,0x00,0xD0,0x48, +0x00,0x06,0x75,0x4E,0xEF,0x4C,0x00,0x03,0x04,0x00,0xD8,0x22,0xD8,0x22,0x75,0x4E, +0xAF,0x4C,0x03,0x00,0x04,0x00,0x6F,0x20,0x08,0x00,0x50,0xB0,0x00,0x6D,0x82,0x03, +0x68,0xB2,0x02,0x00,0x00,0x6D,0x7A,0x03,0x10,0x34,0x68,0xD4,0x04,0x00,0x42,0xB0, +0x00,0x6C,0x6E,0x03,0x28,0x34,0x02,0x00,0x68,0xD4,0x06,0x00,0x42,0xB2,0x00,0x6C, +0x60,0x03,0x00,0x60,0x60,0x03,0xEF,0x4C,0x00,0x03,0x04,0x00,0x88,0xB3,0x00,0x66, +0x50,0x03,0x88,0xB3,0x00,0x66,0x4A,0x03,0x00,0x60,0x4A,0x03,0xEF,0x4C,0x00,0x03, +0x04,0x00,0x11,0x30,0x50,0xB0,0x02,0x6C,0x10,0x30,0x10,0x32,0x68,0xD2,0x04,0x00, +0x11,0x34,0x69,0xD4,0x04,0x00,0x41,0xB4,0x02,0x6F,0x01,0x34,0x80,0x32,0x40,0x94, +0xE7,0x40,0x42,0x33,0x04,0x00,0x29,0x30,0x02,0x00,0x68,0xB0,0x02,0x00,0x04,0x6C, +0x28,0x30,0x02,0x00,0x28,0x32,0x02,0x00,0x68,0xD2,0x06,0x00,0x29,0x34,0x02,0x00, +0x69,0xD4,0x06,0x00,0x41,0xB4,0x02,0x6F,0x01,0x34,0x40,0x33,0x02,0x00,0x40,0x94, +0xC0,0x40,0x42,0x33,0x06,0x00,0xDF,0x44,0x00,0x6F,0xE6,0x02,0xC0,0x44,0x00,0x6F, +0xE0,0x02,0x00,0x60,0xE0,0x02,0xEF,0x4C,0x00,0x03,0x04,0x00,0x11,0x30,0x50,0xB0, +0x02,0x6D,0x10,0x30,0x10,0x32,0x68,0xD2,0x04,0x00,0x11,0x34,0x69,0xD4,0x04,0x00, +0x41,0xB4,0x02,0x6E,0x01,0x34,0x40,0x94,0x80,0x32,0x42,0x33,0x04,0x00,0x29,0x30, +0x02,0x00,0x68,0xB0,0x02,0x00,0x04,0x6D,0x28,0x30,0x02,0x00,0x28,0x32,0x02,0x00, +0x68,0xD2,0x06,0x00,0x29,0x34,0x02,0x00,0x69,0xD4,0x06,0x00,0x41,0xB4,0x02,0x6E, +0x01,0x34,0x40,0x94,0x40,0x33,0x02,0x00,0x42,0x33,0x06,0x00,0x75,0x4E,0xEF,0x4C, +0x00,0x03,0x04,0x00,0x10,0x30,0x51,0xB0,0x02,0x6D,0x80,0x32,0x68,0xD0,0x04,0x00, +0x11,0x32,0x69,0xD2,0x04,0x00,0x41,0xB0,0x06,0x6C,0x69,0x90,0x04,0x00,0x80,0x32, +0x28,0x30,0x02,0x00,0x69,0xB0,0x02,0x00,0x04,0x6D,0x40,0x33,0x02,0x00,0x68,0xD0, +0x06,0x00,0x29,0x32,0x02,0x00,0x69,0xD2,0x06,0x00,0x41,0xB0,0x08,0x6C,0x69,0x90, +0x06,0x00,0x40,0x33,0x02,0x00,0x75,0x4E,0x2F,0x30,0x04,0x00,0xEF,0x4C,0x00,0x03, +0x06,0x00,0x02,0x60,0xD8,0x12,0xC8,0x51,0xFC,0xFF,0x75,0x4E,0x2F,0x30,0x04,0x00, +0x6F,0xB0,0x06,0x00,0x10,0x6D,0x0A,0x60,0x2F,0x30,0x04,0x00,0x6F,0xB0,0x06,0x00, +0x04,0x6E,0x2F,0x30,0x06,0x00,0x75,0x4E,0x2F,0x30,0x04,0x00,0x2F,0x12,0x07,0x00, +0x6F,0x20,0x08,0x00,0x02,0x60,0xC1,0x10,0xC8,0x51,0xFC,0xFF,0x75,0x4E,0x2F,0x10, +0x05,0x00,0x80,0x48,0x7C,0xB0,0x61,0x00,0x0A,0x6D,0x7C,0xB0,0x7A,0x00,0x04,0x6E, +0x7C,0xD0,0xE0,0xFF,0x75,0x4E,0x6F,0x20,0x04,0x00,0x40,0x42,0x18,0x4A,0x00,0x67, +0xD8,0x01,0x40,0x52,0xF6,0x60,0xEF,0x4C,0x00,0x03,0x04,0x00,0x10,0x4A,0x08,0x67, +0x08,0xB3,0xF8,0x67,0x00,0x60,0xBA,0x01,0x11,0x4A,0x00,0x66,0xB4,0x01,0x00,0x60, +0xB4,0x01,0xEF,0x4C,0x00,0x03,0x04,0x00,0xD8,0x12,0xFC,0x66,0x26,0x60,0xEF,0x4C, +0x00,0x03,0x04,0x00,0x2F,0x10,0x0D,0x00,0x10,0xB0,0x18,0x67,0x10,0x4A,0x14,0x67, +0xD8,0x12,0xF4,0x60,0xEF,0x4C,0x00,0x03,0x04,0x00,0x19,0x4A,0xFC,0x66,0x89,0x53, +0xD8,0x12,0xFC,0x66,0x09,0x20,0x75,0x4E,0x6F,0x22,0x04,0x00,0x2F,0x10,0x09,0x00, +0x11,0x4A,0xF0,0x67,0x11,0xB0,0xEC,0x67,0x89,0x52,0xF4,0x60,0xEF,0x4C,0x00,0x03, +0x04,0x00,0x40,0x42,0x10,0x12,0x19,0xB2,0x06,0x66,0x18,0x4A,0x0E,0x67,0xF4,0x60, +0x10,0x10,0x80,0x48,0x29,0x12,0xFF,0xFF,0x81,0x48,0x41,0x90,0x75,0x4E,0xEF,0x4C, +0x00,0x03,0x04,0x00,0x3C,0x30,0x07,0x00,0x10,0x4A,0x0E,0x67,0x10,0x0C,0x2E,0x00, +0x08,0x67,0xD8,0x12,0xC8,0x51,0xF2,0xFF,0x0C,0x60,0x10,0x4A,0x3C,0x67,0xFC,0x12, +0x20,0x00,0xC8,0x51,0xFA,0xFF,0x18,0x4A,0x30,0x67,0x10,0x4A,0x2C,0x67,0xD8,0x12, +0xF8,0x60,0xEF,0x4C,0x00,0x03,0x04,0x00,0x3C,0x30,0x07,0x00,0x18,0x12,0x01,0x4A, +0x18,0x67,0x3C,0xB2,0x20,0x00,0x02,0x67,0xC1,0x12,0xC8,0x51,0xF0,0xFF,0xFC,0x12, +0x2E,0x00,0x10,0x4A,0x04,0x67,0xD8,0x12,0xF8,0x60,0x11,0x42,0x75,0x4E,0x6F,0x22, +0x0E,0x00,0x7C,0x20,0x00,0x00,0x0C,0x00,0x00,0x61,0xFE,0x01,0x50,0x20,0x90,0x22, +0x08,0x2F,0x2F,0x2F,0x0E,0x00,0x10,0x2F,0x38,0xF1,0x8F,0x50,0x5F,0x20,0x6F,0x22, +0x12,0x00,0xFC,0xD1,0x00,0x00,0x18,0x00,0x90,0x32,0x75,0x4E,0x56,0x4E,0xF8,0xFF, +0x6E,0x48,0xFA,0xFF,0x6E,0x48,0xFC,0xFF,0x2E,0x2F,0x0E,0x00,0x2E,0x3F,0x0C,0x00, +0x2E,0x2F,0x08,0x00,0x74,0xF1,0xFC,0xDF,0x00,0x00,0x12,0x00,0x5E,0x4E,0x75,0x4E, +0x7C,0x20,0x00,0x00,0x0C,0x00,0x00,0x61,0xB0,0x01,0x50,0x20,0x10,0x2F,0x2F,0x2F, +0x0E,0x00,0x38,0xF1,0x8F,0x50,0x75,0x4E,0x7C,0x20,0x00,0x00,0x0A,0x00,0x00,0x61, +0x98,0x01,0x40,0x42,0x2F,0x30,0x0A,0x00,0x6F,0xC0,0x0C,0x00,0x06,0x67,0xAF,0x30, +0x0E,0x00,0x04,0x60,0xAF,0x30,0x10,0x00,0x75,0x4E,0x7C,0x20,0x00,0x00,0x0B,0x00, +0x00,0x61,0x76,0x01,0x2F,0x30,0x0A,0x00,0x40,0x53,0x00,0x32,0x10,0x08,0x00,0x00, +0x04,0x67,0x41,0x90,0x0C,0x60,0xFC,0xD1,0x00,0x00,0x18,0x00,0xC9,0x51,0xEE,0xFF, +0x01,0x30,0x75,0x4E,0x3C,0x3F,0x02,0x00,0x2F,0x3F,0x0A,0x00,0x2F,0x2F,0x08,0x00, +0x78,0xF1,0x8F,0x50,0x7C,0xB0,0xFF,0xFF,0x1E,0x67,0x00,0x32,0x6F,0xD1,0x08,0x00, +0x7C,0x20,0x00,0x00,0x0A,0x00,0x00,0x61,0x30,0x01,0x50,0x42,0x41,0x4A,0x04,0x67, +0x40,0x42,0x04,0x60,0x3C,0x30,0x01,0x00,0x75,0x4E,0xE7,0x48,0x1C,0x1E,0xEF,0x4C, +0x00,0x38,0x20,0x00,0x43,0x42,0x14,0x4A,0x00,0x67,0xA6,0x00,0x14,0x0C,0x25,0x00, +0x04,0x67,0xDC,0x16,0xF0,0x60,0x1C,0x4A,0x1C,0x10,0x3C,0xB0,0x25,0x00,0x04,0x66, +0xC0,0x16,0xE2,0x60,0x3C,0xB0,0x4C,0x00,0x0A,0x66,0x43,0x30,0xCD,0xD1,0x10,0x28, +0x43,0x58,0x28,0x60,0x3C,0xB0,0x57,0x00,0x0C,0x66,0x84,0x42,0x43,0x30,0xCD,0xD1, +0x10,0x38,0x43,0x58,0x16,0x60,0x3C,0xB0,0x53,0x00,0xBA,0x66,0x43,0x30,0xCD,0xD1, +0x50,0x20,0x43,0x58,0x10,0x4A,0xAE,0x67,0xD8,0x16,0xF8,0x60,0x85,0x42,0xFC,0x9F, +0x00,0x00,0x10,0x00,0x84,0x4A,0x2C,0x67,0x3C,0x2F,0x00,0x00,0x0A,0x00,0x04,0x2F, +0xB9,0x4E,0xFE,0x00,0x72,0x3A,0x00,0x2C,0x80,0x2E,0xB9,0x4E,0xFE,0x00,0x1E,0x3A, +0x8F,0x50,0x04,0x24,0x80,0x94,0x7C,0xD4,0x30,0x00,0x82,0x1F,0x00,0x50,0x45,0x52, +0x06,0x28,0xD0,0x60,0x45,0x53,0x06,0x6C,0xFC,0x16,0x30,0x00,0x08,0x60,0xF7,0x16, +0x00,0x50,0xCD,0x51,0xFA,0xFF,0xFC,0xDF,0x00,0x00,0x10,0x00,0x00,0x60,0x58,0xFF, +0x13,0x42,0xDF,0x4C,0x78,0x38,0x75,0x4E,0xEF,0x4C,0x00,0x03,0x04,0x00,0x10,0x4A, +0x32,0x67,0x11,0x4A,0x2E,0x67,0x10,0x0C,0x3F,0x00,0x0C,0x66,0x88,0x52,0x11,0x0C, +0x2E,0x00,0xEA,0x67,0x89,0x52,0xE6,0x60,0x10,0x0C,0x2A,0x00,0x0A,0x66,0x11,0x0C, +0x2E,0x00,0xF0,0x66,0x88,0x52,0xD6,0x60,0x10,0x10,0x11,0xB0,0x26,0x66,0x88,0x52, +0xE2,0x60,0x88,0x52,0x10,0x0C,0x2A,0x00,0xF8,0x67,0x10,0x0C,0x3F,0x00,0xF2,0x67, +0x10,0x0C,0x2E,0x00,0xEC,0x67,0x10,0x4A,0x0A,0x66,0x11,0x4A,0x06,0x66,0x3C,0x30, +0x01,0x00,0x02,0x60,0x40,0x42,0x75,0x4E,0x2F,0x30,0x0C,0x00,0xFC,0xC1,0x18,0x00, +0xEF,0xD1,0x08,0x00,0xC0,0xD1,0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xE7,0x48,0x1C,0x03, +0x6E,0x2A,0x0E,0x00,0x6E,0x28,0x1A,0x00,0x6E,0x26,0x1E,0x00,0x2E,0x30,0x0C,0x00, +0xFC,0xC1,0x18,0x00,0xAE,0xD0,0x08,0x00,0x40,0x2D,0xFC,0xFF,0x6E,0x20,0xFC,0xFF, +0x68,0x37,0x14,0x00,0x04,0x00,0x6E,0x20,0xFC,0xFF,0x68,0x37,0x16,0x00,0x06,0x00, +0x6E,0x20,0xFC,0xFF,0xA8,0x38,0x08,0x00,0x6E,0x20,0xFC,0xFF,0xA8,0x2A,0x0C,0x00, +0x6E,0x20,0x12,0x00,0x6E,0x22,0xFC,0xFF,0xA9,0x30,0x0A,0x00,0x6E,0x20,0xFC,0xFF, +0x28,0x30,0x06,0x00,0x7C,0xC0,0xFF,0x00,0x6E,0x22,0x16,0x00,0x80,0x32,0x14,0x08, +0x00,0x00,0x0A,0x67,0x6E,0x20,0xFC,0xFF,0x68,0x20,0x0C,0x00,0x90,0x2A,0x47,0x42, +0x6E,0x20,0x16,0x00,0x10,0x30,0x30,0x60,0x01,0x7E,0x44,0x60,0x55,0x20,0xFC,0xD1, +0x00,0x00,0x16,0x00,0x10,0x3E,0x38,0x60,0x2D,0x1E,0x01,0x00,0x87,0x48,0x30,0x60, +0x47,0x53,0x2C,0x08,0x02,0x00,0x01,0x00,0x02,0x67,0x47,0x53,0x2C,0x08,0x01,0x00, +0x01,0x00,0x02,0x67,0x47,0x53,0x18,0x60,0x7C,0x90,0x14,0x00,0x7C,0xB0,0x0C,0x00, +0x0E,0x62,0x40,0xE5,0x40,0x30,0xFC,0xD1,0xFE,0x00,0xA6,0xF9,0x50,0x20,0xD0,0x4E, +0x7C,0xBE,0x80,0x00,0x04,0x6F,0x7C,0x9E,0x00,0x01,0x6E,0x20,0x22,0x00,0x87,0x30, +0x15,0x10,0x80,0x48,0x21,0xFE,0x56,0x4E,0xE0,0xFF,0xE7,0x48,0x00,0x3F,0x2E,0x2E, +0x08,0x00,0x2E,0x3C,0x0C,0x00,0x2E,0x3A,0x0E,0x00,0x6E,0x3D,0x14,0x00,0xF0,0xFF, +0x6E,0x3D,0x16,0x00,0xE0,0xFF,0x01,0x76,0x45,0xBC,0x00,0x67,0xDE,0x00,0x43,0x30, +0x48,0x53,0xC8,0xD1,0x36,0x30,0xF0,0x88,0x47,0x22,0x06,0x34,0xFC,0xC5,0x18,0x00, +0xC2,0xD3,0xFC,0xD3,0x00,0x00,0x10,0x00,0x11,0x32,0x41,0xD0,0x4E,0x22,0x43,0x34, +0xCA,0xD5,0xCA,0xD3,0x40,0x33,0xF0,0xFF,0x43,0x30,0x48,0x53,0xC8,0xD1,0x36,0x30, +0xE0,0x88,0x47,0x22,0x06,0x34,0xFC,0xC5,0x18,0x00,0xC2,0xD3,0xFC,0xD3,0x00,0x00, +0x12,0x00,0x11,0x32,0x41,0xD0,0x4E,0x22,0x43,0x34,0xCA,0xD5,0xCA,0xD3,0x40,0x33, +0xE0,0xFF,0x43,0x30,0xC8,0xD1,0x36,0x3F,0xE0,0x88,0x43,0x30,0xC8,0xD1,0x36,0x3F, +0xF0,0x88,0x06,0x3F,0x07,0x2F,0x6E,0x20,0x10,0x00,0x90,0x4E,0xFC,0xDF,0x00,0x00, +0x0A,0x00,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x54,0x10,0x38, +0x7C,0xB8,0xFF,0xFF,0x24,0x67,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1, +0xFC,0xD1,0x00,0x00,0x09,0x00,0x10,0x08,0x07,0x00,0x0E,0x66,0x6E,0xB6,0x18,0x00, +0x08,0x6E,0x43,0x52,0x04,0x3C,0x00,0x60,0x50,0xFF,0x47,0x20,0x06,0x32,0xFC,0xC3, +0x18,0x00,0xC1,0xD1,0x10,0x38,0x45,0xB8,0x20,0x67,0x46,0x4A,0x1C,0x67,0x47,0x20, +0x04,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x58,0x50,0xBC,0x06,0x67,0x04,0x3C, +0x00,0x60,0x26,0xFF,0x43,0x53,0x04,0x3C,0xD0,0x60,0x3F,0xF0,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x00,0x1F,0x2E,0x2E,0x08,0x00,0x2E,0x3C,0x0C,0x00,0x06,0x3A,0x46,0x4A, +0x04,0x66,0xFF,0x70,0x20,0x60,0x05,0x3C,0x47,0x20,0x06,0x32,0xFC,0xC3,0x18,0x00, +0xC1,0xD1,0x10,0x3A,0x47,0x20,0x05,0x32,0xFC,0xC3,0x18,0x00,0xC1,0xD1,0x88,0x58, +0x50,0xBC,0xE2,0x66,0x05,0x30,0x3D,0xF0,0xCF,0x23,0x00,0x00,0x82,0x94,0xF9,0x4F, +0x00,0x00,0xF2,0x94,0xE7,0x48,0xE0,0xE0,0x00,0x3F,0xB9,0x4E,0xFE,0x00,0xAA,0x4B, +0x8F,0x54,0xDF,0x4C,0x07,0x07,0x79,0x2E,0x00,0x00,0x82,0x94,0x75,0x4E,0xCF,0x23, +0x00,0x00,0x82,0x94,0xF9,0x4F,0x00,0x00,0xF2,0x94,0xE7,0x48,0xE0,0xE0,0x01,0x3F, +0x00,0x3F,0x3C,0x2F,0xFE,0x00,0xB6,0x4F,0xB9,0x4E,0xFE,0x00,0x84,0x47,0x8F,0x50, +0xDF,0x4C,0x07,0x07,0x79,0x2E,0x00,0x00,0x82,0x94,0x75,0x4E,0x2F,0x30,0x04,0x00, +0x2F,0x32,0x06,0x00,0x79,0x20,0x00,0x00,0x7A,0x94,0x90,0x4E,0x75,0x4E,0x75,0x4E, +0xCF,0x23,0x00,0x00,0x86,0x94,0xF9,0x4F,0x00,0x00,0x52,0x95,0xB9,0x4A,0x00,0x00, +0x92,0x94,0x22,0x67,0xB9,0x52,0x00,0x00,0x8E,0x94,0xB9,0x53,0x00,0x00,0x92,0x94, +0x14,0x66,0x39,0x2F,0x00,0x00,0x8E,0x94,0x3C,0x2F,0xFE,0x00,0x6C,0x4A,0xB9,0x4E, +0xFE,0x00,0x84,0x47,0x8F,0x50,0x3C,0x3F,0x01,0x00,0xB9,0x4E,0xFE,0x00,0x1A,0x4C, +0x8F,0x54,0x79,0x2E,0x00,0x00,0x86,0x94,0x79,0x20,0x00,0x00,0x8A,0x94,0x90,0x4E, +0x75,0x4E,0x56,0x4E,0xFC,0xFF,0xFC,0x23,0xFA,0x00,0x00,0x00,0x00,0x00,0xB8,0x9A, +0x79,0x20,0x00,0x00,0xB8,0x9A,0x10,0x20,0xBC,0xB0,0xCD,0xAB,0x42,0xEF,0x10,0x66, +0xFC,0x23,0xFA,0x00,0x04,0x00,0x00,0x00,0xB8,0x9A,0x01,0x70,0x0A,0x60,0x08,0x60, +0xB9,0x42,0x00,0x00,0xB8,0x9A,0x40,0x42,0x01,0xF0,0x56,0x4E,0x00,0x00,0xE7,0x48, +0x0C,0x03,0x6E,0x2A,0x08,0x00,0x21,0xFC,0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x01, +0xB9,0x4A,0x00,0x00,0xB8,0x9A,0x50,0x67,0x6E,0x4A,0x08,0x00,0x34,0x67,0x79,0x2A, +0x00,0x00,0xFA,0x96,0x8D,0x2E,0x67,0x42,0x3C,0x3F,0x2A,0x00,0x94,0xF3,0x8F,0x58, +0x7C,0x1B,0x01,0x00,0x15,0x00,0xBC,0x3E,0x15,0x00,0x39,0x2F,0x00,0x00,0xB8,0x9A, +0x97,0x06,0x00,0x00,0x0C,0x00,0x0D,0x2F,0x97,0x06,0x00,0x00,0x16,0x00,0x28,0xF1, +0x8F,0x50,0x79,0x28,0x00,0x00,0xB8,0x9A,0x79,0x20,0x00,0x00,0xB8,0x9A,0xD0,0x23, +0x00,0x00,0xB8,0x9A,0x0C,0x20,0x02,0x60,0x80,0x42,0x01,0xFC,0x56,0x4E,0xFC,0xFF, +0xEE,0x23,0x08,0x00,0x00,0x00,0xFA,0x96,0x84,0xF3,0xB4,0xF4,0x01,0xF0,0x56,0x4E, +0xFC,0xFF,0xBC,0x3E,0x01,0x00,0x44,0xFA,0x80,0x4A,0x06,0x67,0x01,0x70,0x0C,0x60, +0x0A,0x60,0xFC,0x33,0x12,0x00,0x00,0x00,0x18,0xC9,0x40,0x42,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x0C,0x03,0x84,0xF3,0x47,0x42,0x52,0x60,0x8C,0x2E,0x97,0x06, +0x00,0x00,0x14,0x00,0x3C,0x2F,0xFE,0x00,0xDA,0xF9,0xE0,0xF3,0x8F,0x58,0x40,0x4A, +0x3C,0x67,0x68,0xF7,0x40,0x4A,0x34,0x67,0x47,0x52,0xBC,0x2E,0xFE,0x00,0xE1,0xF9, +0x3C,0x3F,0x05,0x00,0x3C,0x2F,0xFE,0x00,0xE0,0xF9,0xC8,0xF9,0x8F,0x5C,0x40,0x2A, +0x6C,0x2B,0x08,0x00,0x08,0x00,0x8D,0x2E,0x0C,0x2F,0x97,0x06,0x00,0x00,0x14,0x00, +0x3C,0x2F,0xFE,0x00,0x1A,0x35,0x70,0xF7,0x8F,0x50,0x02,0x60,0x0A,0x60,0x57,0x42, +0x44,0xFA,0x40,0x28,0x0C,0x20,0xA4,0x66,0x07,0x30,0x21,0xFC,0x56,0x4E,0x00,0x00, +0xE7,0x48,0x0C,0x01,0x84,0xF3,0x14,0x60,0x8C,0x2E,0x97,0x06,0x00,0x00,0x14,0x00, +0x2E,0x2F,0x08,0x00,0x28,0xF4,0x8F,0x58,0x40,0x4A,0x0A,0x66,0x57,0x42,0x44,0xFA, +0x40,0x28,0x0C,0x20,0xE2,0x66,0xAE,0x2E,0x0C,0x00,0x3C,0x3F,0x05,0x00,0x3C,0x2F, +0xFE,0x00,0xE2,0xF9,0xC8,0xF9,0x8F,0x5C,0x40,0x2A,0x6C,0x2B,0x08,0x00,0x08,0x00, +0x8D,0x2E,0x3C,0x3F,0x04,0x00,0x3C,0x2F,0xFE,0x00,0xE3,0xF9,0xC8,0xF9,0x8F,0x5C, +0x8D,0x2E,0x78,0xF4,0x01,0x70,0x01,0xFC,0x3C,0x3F,0x01,0x00,0x04,0x60,0x3C,0x3F, +0x00,0x00,0x2F,0x2F,0x06,0x00,0x04,0x61,0x8F,0x5C,0x75,0x4E,0xE7,0x48,0x1E,0x1F, +0x7C,0x2C,0x00,0x00,0x00,0x10,0x79,0x42,0x00,0x00,0x58,0x95,0x67,0x42,0x2F,0x2F, +0x2A,0x00,0x7C,0xF1,0x8F,0x5C,0x00,0x36,0x79,0x4A,0x00,0x00,0xEC,0x98,0x06,0x67, +0x40,0x42,0x00,0x60,0x76,0x00,0x0E,0x2F,0xFC,0xF0,0x8F,0x58,0x40,0x26,0x80,0x4A, +0xEE,0x67,0xCE,0x33,0x00,0x00,0x56,0x95,0x6F,0x4A,0x2C,0x00,0x06,0x67,0x00,0x61, +0xC0,0x00,0x4A,0x60,0x79,0x48,0x21,0x00,0xFF,0xFF,0x80,0xF1,0x8F,0x58,0x40,0x02, +0x10,0x00,0x04,0x67,0x44,0x42,0x02,0x60,0x01,0x78,0x1E,0x60,0x3C,0x3F,0xFF,0x00, +0x84,0xF1,0x80,0x3E,0x88,0xF1,0x4F,0x54,0x40,0x0C,0x03,0x00,0x20,0x67,0x3C,0xB0, +0x51,0x00,0x1A,0x67,0x00,0x61,0x86,0x01,0x14,0x67,0x24,0x61,0xDE,0x66,0x3C,0x3A, +0x0D,0x00,0x00,0x61,0x78,0x01,0x3C,0x3A,0x0A,0x00,0x00,0x61,0x70,0x01,0x03,0x3F, +0x8C,0xF1,0x0B,0x2F,0x00,0xF1,0x8F,0x5C,0x01,0x70,0xDF,0x4C,0xF8,0x78,0x75,0x4E, +0x39,0x32,0x00,0x00,0x56,0x95,0x41,0x0C,0xFF,0xFF,0x10,0x67,0x79,0xB2,0x00,0x00, +0x5A,0x95,0x0C,0x66,0x79,0x4A,0x00,0x00,0x58,0x95,0x04,0x67,0x40,0x42,0x3E,0x60, +0x4E,0xB2,0x22,0x66,0x79,0x42,0x00,0x00,0x56,0x95,0x0B,0x2F,0x0E,0x3F,0x03,0x3F, +0x94,0xF1,0x8F,0x50,0xC0,0x33,0x00,0x00,0x5A,0x95,0x4E,0xB0,0x08,0x67,0xFC,0x33, +0x01,0x00,0x00,0x00,0x58,0x95,0x39,0x32,0x00,0x00,0x56,0x95,0x33,0x1A,0x00,0x10, +0x85,0x48,0x7C,0xCA,0xFF,0x00,0x79,0x52,0x00,0x00,0x56,0x95,0x01,0x70,0x75,0x4E, +0x47,0x42,0x79,0x48,0xFE,0x00,0xE7,0xF9,0x3C,0x3F,0x09,0x00,0x98,0xF1,0x8F,0x5C, +0x00,0x61,0x78,0x00,0x79,0x0C,0xFF,0xFF,0x00,0x00,0x56,0x95,0x12,0x66,0x3C,0x3F, +0xFF,0x00,0x84,0xF1,0x8F,0x54,0x40,0x4A,0xF4,0x67,0x3C,0x3E,0x01,0x00,0x24,0x60, +0x28,0x61,0x3C,0xB0,0x51,0x00,0x04,0x66,0x01,0x7E,0x18,0x60,0x40,0x0C,0x03,0x00, +0xF6,0x67,0x40,0x0C,0x20,0x00,0x04,0x66,0x40,0x61,0x08,0x60,0x40,0x0C,0x0D,0x00, +0x02,0x66,0x42,0x61,0x47,0x4A,0xBC,0x67,0x75,0x4E,0x79,0x48,0xFE,0x00,0xD2,0xF0, +0x00,0x61,0x82,0x00,0x8F,0x58,0x3C,0x3F,0xFF,0x00,0x84,0xF1,0x8F,0x54,0x40,0x4A, +0xF4,0x67,0x00,0x3F,0x88,0xF1,0x00,0x3A,0x79,0x48,0xFE,0x00,0xE4,0xF9,0x3C,0x3F, +0x09,0x00,0x98,0xF1,0x8F,0x50,0x05,0x30,0x75,0x4E,0x15,0x7C,0x08,0x61,0x04,0x67, +0xCE,0x51,0xFA,0xFF,0x75,0x4E,0x7C,0x38,0x01,0x00,0x14,0x60,0x05,0x3F,0x3C,0x3F, +0x02,0x00,0x3C,0x3F,0x03,0x00,0xA0,0xF1,0x4F,0x5C,0x7C,0xBA,0x0A,0x00,0x08,0x67, +0x00,0x61,0xEE,0xFE,0x40,0x38,0xE4,0x66,0xFC,0xB8,0x00,0x00,0x04,0x67,0x01,0x70, +0x20,0x60,0x3C,0x3F,0x0D,0x00,0x84,0xF1,0x3C,0x3F,0x0A,0x00,0x84,0xF1,0x79,0x48, +0xFE,0x00,0xDA,0xF0,0x0E,0x61,0x8F,0x50,0xFC,0x33,0xFF,0xFF,0x00,0x00,0x56,0x95, +0x40,0x42,0x75,0x4E,0x6F,0x2A,0x04,0x00,0x0C,0x60,0x15,0x14,0x82,0x48,0x02,0x3F, +0x84,0xF1,0x4F,0x54,0x8D,0x52,0x15,0x4A,0xF0,0x66,0x75,0x4E,0x44,0x4A,0x44,0x67, +0x46,0x42,0x32,0x60,0x05,0x3F,0x3C,0x3F,0x05,0x00,0x98,0xF1,0x8F,0x58,0x00,0x3C, +0x28,0x66,0x3C,0x3F,0x01,0x00,0x67,0x42,0x3C,0x3F,0x11,0x00,0xA8,0xF1,0x00,0x3C, +0xBC,0x3E,0x01,0x00,0xAC,0xF1,0x8F,0x5C,0x7C,0xBC,0x01,0x00,0x06,0x66,0x3C,0x3C, +0x63,0x00,0x02,0x60,0x46,0x42,0x46,0x4A,0xCA,0x67,0x7C,0xBC,0x63,0x00,0x02,0x66, +0x40,0x42,0x0C,0x60,0x05,0x3F,0x3C,0x3F,0x04,0x00,0x98,0xF1,0x4F,0x58,0x01,0x70, +0x75,0x4E,0x56,0x4E,0xF4,0xFF,0x98,0xF6,0x57,0x42,0x3C,0x2F,0x00,0x00,0xBA,0x96, +0x3C,0x3F,0x05,0x00,0x58,0xF3,0x8F,0x5C,0xBC,0x2E,0x00,0x00,0x46,0xC9,0xA7,0x42, +0x44,0xF3,0x8F,0x58,0xBC,0x2E,0x00,0x00,0xFE,0x96,0x67,0x42,0x3C,0x3F,0x02,0x00, +0x44,0xF3,0x8F,0x58,0x79,0x20,0x00,0x00,0x46,0xC9,0xE8,0x33,0xF0,0x01,0x00,0x00, +0x0E,0xC9,0x79,0x20,0x00,0x00,0x46,0xC9,0xE8,0x33,0xF2,0x01,0x00,0x00,0x10,0xC9, +0x8E,0x2E,0x97,0x51,0x39,0x2F,0x00,0x00,0x46,0xC9,0x28,0xF2,0x8F,0x58,0x8E,0x2E, +0x97,0x51,0x39,0x2F,0x00,0x00,0x46,0xC9,0x97,0x06,0x00,0x00,0x08,0x01,0x28,0xF2, +0x8F,0x58,0x8E,0x2E,0x97,0x51,0x39,0x2F,0x00,0x00,0x46,0xC9,0x97,0x06,0x00,0x00, +0x98,0x01,0x28,0xF2,0x8F,0x58,0x57,0x42,0x20,0xF4,0x01,0xF0,0x56,0x4E,0xB8,0xFF, +0xE7,0x48,0x1C,0x3F,0xBC,0x2E,0x00,0x00,0x00,0x20,0x64,0xF3,0x00,0x2E,0x47,0x28, +0xBC,0x2E,0x00,0x00,0x00,0x20,0x64,0xF3,0x40,0x2A,0xF4,0xF6,0x79,0x20,0x00,0x00, +0xFE,0x96,0xAE,0x20,0x08,0x00,0xEE,0x23,0x0C,0x00,0x00,0x00,0xE6,0xC6,0x00,0x60, +0x86,0x04,0x79,0x20,0x00,0x00,0xFE,0x96,0x7C,0x31,0x0C,0x00,0x34,0x00,0xBC,0x3E, +0x03,0x00,0x3C,0x2F,0x02,0x00,0x01,0x00,0x39,0x2F,0x00,0x00,0x46,0xC9,0xF8,0xF6, +0x8F,0x50,0x79,0x20,0x00,0x00,0x46,0xC9,0x68,0x4A,0xE2,0x00,0x0E,0x67,0x79,0x20, +0x00,0x00,0x46,0xC9,0x68,0x42,0xE2,0x00,0x00,0x60,0x50,0x04,0x79,0x20,0x00,0x00, +0x46,0xC9,0x68,0x42,0xFA,0x00,0x7C,0x3D,0x01,0x00,0xE0,0xFF,0x7C,0x3D,0x50,0x00, +0xE2,0xFF,0x7C,0x3D,0x03,0x00,0xB8,0xFF,0x02,0x7A,0x79,0x20,0x00,0x00,0x46,0xC9, +0x68,0x4A,0xCA,0x00,0x0E,0x67,0x7C,0x3D,0x02,0x00,0xE0,0xFF,0x03,0x7A,0x7C,0x3D, +0x02,0x00,0xB8,0xFF,0x79,0x20,0x00,0x00,0x46,0xC9,0x6E,0x21,0x0C,0x00,0xBC,0x01, +0xAE,0x3E,0xE2,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xEC,0xFF,0x0E,0x2F,0x97,0x06, +0xFF,0xFF,0xEA,0xFF,0xFC,0xF6,0x8F,0x50,0x79,0x20,0x00,0x00,0x46,0xC9,0x68,0x42, +0x0C,0x02,0x6E,0x20,0x08,0x00,0x10,0x10,0x80,0x48,0x7C,0xD0,0xBF,0xFF,0x40,0x3D, +0xE4,0xFF,0x43,0x42,0x44,0x42,0x6E,0x42,0xF2,0xFF,0x1E,0x60,0x4E,0x20,0x6E,0x32, +0xF2,0xFF,0xC9,0xD3,0xC9,0xD1,0x6E,0x32,0xF2,0xFF,0xC9,0xD3,0xFC,0xD3,0xFE,0x00, +0xEA,0xF9,0x51,0x31,0xBA,0xFF,0x6E,0x52,0xF2,0xFF,0x6E,0x0C,0x09,0x00,0xF2,0xFF, +0xDA,0x6D,0x46,0x42,0x00,0x60,0xCC,0x01,0x6E,0x42,0xE8,0xFF,0x00,0x60,0x8C,0x01, +0x6E,0x3D,0xB8,0xFF,0xF2,0xFF,0x22,0x60,0x4E,0x20,0x6E,0x32,0xF2,0xFF,0xC9,0xD3, +0xC9,0xD1,0x4E,0x22,0x6E,0x34,0xF2,0xFF,0xEE,0x94,0xB8,0xFF,0xCA,0xD5,0xCA,0xD3, +0x69,0x31,0xBA,0xFF,0xCC,0xFF,0x6E,0x52,0xF2,0xFF,0x6E,0x0C,0x09,0x00,0xF2,0xFF, +0xD6,0x6D,0x6E,0x42,0xF2,0xFF,0x26,0x60,0x4E,0x20,0x6E,0x32,0xF2,0xFF,0xC9,0xD3, +0xC9,0xD1,0x4E,0x22,0x7C,0x34,0x09,0x00,0xEE,0x94,0xB8,0xFF,0xEE,0xD4,0xF2,0xFF, +0xCA,0xD5,0xCA,0xD3,0x69,0x31,0xBA,0xFF,0xCC,0xFF,0x6E,0x52,0xF2,0xFF,0x2E,0x30, +0xF2,0xFF,0x6E,0xB0,0xB8,0xFF,0xD0,0x6D,0x6E,0x42,0xF2,0xFF,0x1E,0x60,0x4E,0x20, +0x6E,0x32,0xF2,0xFF,0xC9,0xD3,0xC9,0xD1,0x4E,0x22,0x6E,0x34,0xF2,0xFF,0xCA,0xD5, +0xCA,0xD3,0x69,0x31,0xCC,0xFF,0xBA,0xFF,0x6E,0x52,0xF2,0xFF,0x6E,0x0C,0x09,0x00, +0xF2,0xFF,0xDA,0x6D,0xBC,0x3E,0xE5,0xE5,0x3C,0x2F,0x65,0x87,0x21,0x43,0x3C,0x3F, +0xFF,0xFF,0x2E,0x3F,0xE8,0xFF,0x06,0x3F,0x3C,0x3F,0x09,0x00,0x2E,0x3F,0xE4,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xCC,0xFF,0x07,0x2F,0x3C,0x3F,0x0A,0x00,0x00,0xF7, +0xFC,0xDF,0x00,0x00,0x18,0x00,0x00,0x36,0x43,0x4A,0x10,0x6C,0x7C,0xB6,0xF0,0xFF, +0x0A,0x6F,0xAE,0x3E,0xE4,0xFF,0x03,0x3F,0x04,0xF7,0x8F,0x54,0x7C,0xB6,0xF0,0xFF, +0x6C,0x66,0x7C,0xBC,0x02,0x00,0x0C,0x6D,0x04,0x30,0x7C,0xD0,0x09,0x00,0x7C,0xB0, +0x10,0x00,0x14,0x6D,0xAE,0x3E,0xE4,0xFF,0x3C,0x3F,0x01,0x00,0x04,0xF7,0x8F,0x54, +0x01,0x76,0x00,0x60,0x96,0x00,0x46,0x60,0x6E,0x42,0xF2,0xFF,0x34,0x60,0x06,0x30, +0xEE,0xC1,0xE0,0xFF,0xFC,0xC1,0x09,0x00,0x6E,0x32,0xF2,0xFF,0xC9,0xD3,0x34,0x32, +0x00,0x98,0x41,0xD0,0x2E,0x32,0xE8,0xFF,0xFC,0xC3,0x09,0x00,0x41,0xD0,0x40,0x53, +0x4D,0x22,0x44,0x34,0xCA,0xD5,0xCA,0xD3,0x80,0x32,0x43,0x42,0x6E,0x52,0xF2,0xFF, +0x44,0x52,0x6E,0x30,0xF2,0xFF,0xC8,0xD1,0x74,0x4A,0x00,0x88,0xC0,0x66,0x46,0x4A, +0x24,0x66,0x43,0x4A,0x20,0x66,0xBC,0x3E,0x01,0x00,0xA7,0x42,0x3C,0x3F,0x01,0x00, +0x2E,0x3F,0xE4,0xFF,0xA7,0x42,0x07,0x2F,0x3C,0x3F,0x08,0x00,0x00,0xF7,0xFC,0xDF, +0x00,0x00,0x12,0x00,0x00,0x36,0x43,0x4A,0x0C,0x6C,0xAE,0x3E,0xE4,0xFF,0x3C,0x3F, +0x01,0x00,0x04,0xF7,0x8F,0x54,0x6E,0x52,0xE8,0xFF,0x2E,0x30,0xE8,0xFF,0x6E,0xB0, +0xE0,0xFF,0x06,0x6C,0x43,0x4A,0x00,0x67,0x68,0xFE,0x43,0x4A,0x22,0x66,0x2E,0x30, +0xEA,0xFF,0x79,0x22,0x00,0x00,0x46,0xC9,0x69,0xD1,0x0C,0x02,0x57,0x42,0xA7,0x42, +0x39,0x2F,0x00,0x00,0x46,0xC9,0x97,0x06,0x00,0x00,0xF8,0x01,0xF8,0xF6,0x8F,0x50, +0x46,0x52,0x6E,0xBC,0xE2,0xFF,0x06,0x6C,0x43,0x4A,0x00,0x67,0x2C,0xFE,0x43,0x4A, +0x00,0x66,0x8A,0x01,0x57,0x42,0x05,0x3F,0x3C,0x2F,0x00,0x01,0x00,0x00,0x07,0x2F, +0x3C,0x3F,0x12,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xBC,0x3E,0x01,0x00, +0xA7,0x42,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0xE4,0xFF,0x2E,0x2F,0xFC,0xFF,0x07,0x2F, +0x3C,0x3F,0x09,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00,0x12,0x00,0xAE,0x3E,0xE4,0xFF, +0x3C,0x3F,0x07,0x00,0x08,0xF7,0x8F,0x54,0x40,0x26,0xBC,0x3E,0x01,0x00,0xA7,0x42, +0x3C,0x3F,0x01,0x00,0x2E,0x3F,0xE4,0xFF,0x2E,0x2F,0xFC,0xFF,0x07,0x2F,0x3C,0x3F, +0x09,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00,0x12,0x00,0xAB,0x3E,0x06,0x00,0x2B,0x3F, +0x08,0x00,0x60,0xF3,0x8F,0x54,0x40,0x3D,0xEE,0xFF,0x2E,0x30,0xEE,0xFF,0x09,0x72, +0x60,0xE3,0xC0,0x48,0xFC,0x81,0x02,0x00,0x40,0x3D,0xF0,0xFF,0x6E,0x42,0xF2,0xFF, +0x10,0x60,0x4C,0x20,0x6E,0x32,0xF2,0xFF,0xC9,0xD3,0xC9,0xD1,0x50,0x42,0x6E,0x52, +0xF2,0xFF,0x2E,0x30,0xF2,0xFF,0x6E,0xB0,0xF0,0xFF,0xE6,0x6D,0x7C,0x39,0x08,0x00, +0x0A,0x00,0xBC,0x3E,0x0B,0x00,0x79,0x20,0x00,0x00,0xFE,0x96,0x28,0x2F,0x1C,0x00, +0x07,0x2F,0x28,0xF1,0x8F,0x50,0x2B,0x30,0x08,0x00,0x40,0xE3,0x40,0x52,0x40,0x3D, +0xF2,0xFF,0xAE,0x3E,0xE4,0xFF,0x2E,0x3F,0xF2,0xFF,0x2B,0x3F,0x06,0x00,0x07,0x2F, +0x3C,0x2F,0x04,0x00,0x03,0x00,0x08,0xF7,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x6E,0x42, +0xF2,0xFF,0x10,0x60,0x4C,0x20,0x6E,0x32,0xF2,0xFF,0xC9,0xD3,0xC9,0xD1,0x50,0x42, +0x6E,0x52,0xF2,0xFF,0x2E,0x30,0xF2,0xFF,0x6E,0xB0,0xF0,0xFF,0xE6,0x6D,0xBC,0x38, +0xFF,0xF7,0x7C,0x39,0x00,0xFF,0x02,0x00,0x6E,0x42,0xF2,0xFF,0x2E,0x60,0x6E,0x30, +0xF2,0xFF,0xC8,0xD1,0x35,0x30,0x00,0x88,0x6B,0x90,0x0C,0x00,0xC0,0x48,0xEB,0x81, +0x02,0x00,0x40,0x54,0x40,0x3D,0xDE,0xFF,0x87,0x2E,0x0B,0x2F,0x3C,0x3F,0xFF,0xFF, +0x2E,0x3F,0xDE,0xFF,0x0C,0xF7,0x8F,0x50,0x6E,0x52,0xF2,0xFF,0x6E,0xB8,0xF2,0xFF, +0xCC,0x6E,0xAE,0x3E,0xE4,0xFF,0x3C,0x3F,0x01,0x00,0x2B,0x3F,0x08,0x00,0x07,0x2F, +0x3C,0x2F,0x04,0x00,0x03,0x00,0x08,0xF7,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xAE,0x3E, +0xE4,0xFF,0x2B,0x3F,0x08,0x00,0x57,0x52,0x2B,0x3F,0x08,0x00,0x07,0x2F,0x3C,0x2F, +0x04,0x00,0x03,0x00,0x08,0xF7,0xFC,0xDF,0x00,0x00,0x0C,0x00,0x57,0x42,0x20,0xF4, +0x43,0x4A,0x32,0x66,0x8E,0x2E,0x97,0x51,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF4,0xFF, +0x2E,0x3F,0xE4,0xFF,0x57,0x52,0x7C,0xF5,0x8F,0x5C,0x8E,0x2E,0x97,0x51,0x3C,0x2F, +0xFE,0x00,0x7C,0xF1,0x07,0x2F,0x50,0xF4,0x8F,0x50,0x10,0xF7,0x87,0x2E,0x3C,0x3F, +0x01,0x00,0x20,0xF2,0x8F,0x54,0x00,0x60,0x7A,0xFB,0x87,0x2E,0x78,0xF4,0xB9,0x2E, +0x00,0x00,0x46,0xC9,0x78,0xF4,0x8D,0x2E,0x78,0xF4,0x30,0xF5,0x3F,0xFE,0x56,0x4E, +0xD6,0xFF,0xE7,0x48,0x0C,0x3F,0x70,0xF4,0x40,0x2D,0xEC,0xFF,0x2E,0x20,0xEC,0xFF, +0xBC,0xD0,0xFF,0xFF,0x00,0xFC,0xBC,0xB0,0x00,0x00,0x00,0x12,0x00,0x6D,0x60,0x03, +0xAE,0x2E,0xEC,0xFF,0x97,0x06,0xFF,0xFF,0x00,0xFC,0x64,0xF3,0x40,0x2D,0xFC,0xFF, +0xBC,0x2E,0x00,0x00,0x58,0x02,0x64,0xF3,0x40,0x2D,0xF8,0xFF,0xAE,0x4A,0xF8,0xFF, +0x00,0x67,0x3C,0x03,0xF4,0xF6,0x79,0x20,0x00,0x00,0xFE,0x96,0x6E,0x21,0x08,0x00, +0x38,0x00,0x2E,0x20,0x08,0x00,0x80,0x56,0x79,0x22,0x00,0x00,0xFE,0x96,0x40,0x23, +0x54,0x00,0x6E,0x20,0x08,0x00,0x10,0x10,0x80,0x48,0x00,0x3E,0x7C,0xDE,0xBF,0xFF, +0x6E,0x20,0x08,0x00,0x28,0x10,0x03,0x00,0x80,0x48,0x00,0x3C,0x7C,0xDC,0xBF,0xFF, +0x79,0x20,0x00,0x00,0x46,0xC9,0x7C,0x31,0x05,0x00,0xE0,0x01,0x79,0x20,0x00,0x00, +0x46,0xC9,0x7C,0x31,0x07,0x00,0x9C,0x01,0xEE,0x23,0x0C,0x00,0x00,0x00,0xE6,0xC6, +0x00,0x60,0xAC,0x02,0x57,0x42,0x3C,0x2F,0x01,0x00,0x01,0x00,0x39,0x2F,0x00,0x00, +0x46,0xC9,0x97,0x06,0x00,0x00,0x08,0x01,0xF8,0xF6,0x8F,0x50,0x79,0x20,0x00,0x00, +0x46,0xC9,0x68,0x4A,0x72,0x01,0x0E,0x67,0x79,0x20,0x00,0x00,0x46,0xC9,0x68,0x42, +0x72,0x01,0x00,0x60,0x7E,0x02,0x79,0x20,0x00,0x00,0x46,0xC9,0x68,0x42,0x8A,0x01, +0x86,0x3E,0x3C,0x3F,0x07,0x00,0x08,0xF7,0x8F,0x54,0x40,0x28,0x86,0x3E,0x3C,0x3F, +0x0B,0x00,0x00,0xF7,0x8F,0x54,0x40,0x2D,0xD6,0xFF,0x87,0x3E,0x3C,0x3F,0x07,0x00, +0x08,0xF7,0x8F,0x54,0x40,0x2A,0x87,0x3E,0x3C,0x3F,0x0B,0x00,0x00,0xF7,0x8F,0x54, +0x40,0x2D,0xDA,0xFF,0x57,0x42,0x20,0xF4,0x0D,0x20,0x00,0x67,0x36,0x02,0x0C,0x20, +0x00,0x67,0x30,0x02,0x2D,0x30,0x12,0x00,0x6C,0xB0,0x12,0x00,0x0A,0x66,0x2D,0x30, +0x14,0x00,0x6C,0xB0,0x14,0x00,0x0C,0x67,0x87,0x3E,0x67,0x42,0x04,0xF7,0x8F,0x54, +0x00,0x60,0x10,0x02,0x6D,0x3D,0x12,0x00,0xDE,0xFF,0x6D,0x3D,0x14,0x00,0xE0,0xFF, +0x79,0x20,0x00,0x00,0x46,0xC9,0x6E,0x21,0x0C,0x00,0xBC,0x01,0xAE,0x3E,0xDE,0xFF, +0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xE6,0xFF,0x0E,0x2F,0x97,0x06,0xFF,0xFF,0xF2,0xFF, +0xFC,0xF6,0x8F,0x50,0x43,0x42,0x6E,0x42,0xF0,0xFF,0x45,0x42,0x00,0x60,0xC0,0x01, +0x79,0x20,0x00,0x00,0x46,0xC9,0x68,0x42,0x0C,0x02,0x79,0x20,0x00,0x00,0x46,0xC9, +0x68,0x42,0x6C,0x02,0x44,0x42,0x3C,0x2F,0x00,0x00,0x00,0x12,0x2E,0x2F,0xEC,0xFF, +0xB9,0x4E,0xFE,0x00,0x72,0x3A,0x8F,0x50,0x40,0x3D,0xEA,0xFF,0x2E,0x30,0xDE,0xFF, +0xC0,0x48,0xEE,0x81,0xEA,0xFF,0x40,0x3D,0xE8,0xFF,0x6E,0x42,0xF4,0xFF,0x00,0x60, +0x0E,0x01,0x6E,0x42,0xF6,0xFF,0x00,0x60,0xD6,0x00,0xAE,0x2E,0x0C,0x00,0x2E,0x3F, +0xEA,0xFF,0x04,0x3F,0x2E,0x3F,0xF2,0xFF,0x05,0x3F,0x07,0x3F,0x2E,0x2F,0xDA,0xFF, +0x2E,0x2F,0xFC,0xFF,0x3C,0x3F,0x08,0x00,0x14,0xF7,0xFC,0xDF,0x00,0x00,0x14,0x00, +0x40,0x4A,0x06,0x67,0x01,0x76,0x00,0x60,0xB2,0x00,0x6E,0x4A,0xF0,0xFF,0x3E,0x67, +0xBC,0x3E,0x01,0x00,0xA7,0x42,0x3C,0x3F,0x01,0x00,0x07,0x3F,0x2E,0x2F,0xDA,0xFF, +0x2E,0x2F,0xF8,0xFF,0x3C,0x3F,0x08,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00,0x12,0x00, +0xBC,0x3E,0xFF,0xFF,0x3C,0x3F,0xFF,0xFF,0x3C,0x2F,0x00,0x01,0x00,0x00,0x2E,0x2F, +0xF8,0xFF,0x3C,0x3F,0x12,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00,0x0C,0x00,0xAE,0x2E, +0x0C,0x00,0x2E,0x3F,0xEA,0xFF,0x04,0x3F,0x2E,0x3F,0xF2,0xFF,0x05,0x3F,0x06,0x3F, +0x2E,0x2F,0xD6,0xFF,0x2E,0x2F,0xFC,0xFF,0x3C,0x3F,0x09,0x00,0x14,0xF7,0xFC,0xDF, +0x00,0x00,0x14,0x00,0x40,0x4A,0x04,0x67,0x01,0x76,0x3E,0x60,0x6E,0x4A,0xF0,0xFF, +0x24,0x67,0xBC,0x3E,0x01,0x00,0xA7,0x42,0x3C,0x3F,0x01,0x00,0x06,0x3F,0x2E,0x2F, +0xD6,0xFF,0x2E,0x2F,0xF8,0xFF,0x3C,0x3F,0x09,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00, +0x12,0x00,0x6E,0x42,0xF0,0xFF,0x6E,0xD8,0xEA,0xFF,0x6E,0x52,0xF6,0xFF,0x2E,0x30, +0xF6,0xFF,0x6E,0xB0,0xE8,0xFF,0x00,0x6D,0x22,0xFF,0x45,0x4A,0x06,0x66,0x7C,0x3D, +0x01,0x00,0xF0,0xFF,0x2E,0x30,0xDE,0xFF,0xC0,0x48,0xEE,0x81,0xEA,0xFF,0x40,0x48, +0x40,0x3D,0xEA,0xFF,0x7C,0x3D,0x01,0x00,0xE8,0xFF,0x6E,0x52,0xF4,0xFF,0x6E,0x0C, +0x02,0x00,0xF4,0xFF,0x06,0x6C,0x43,0x4A,0x00,0x67,0xE8,0xFE,0x43,0x4A,0x5C,0x66, +0x7C,0x3D,0x15,0x00,0xF6,0xFF,0x4C,0x60,0x2E,0x30,0xF6,0xFF,0xFC,0xC1,0x18,0x00, +0xB9,0xD0,0x00,0x00,0x46,0xC9,0x40,0x20,0x7C,0x21,0x01,0x00,0x00,0x11,0x0C,0x00, +0x57,0x42,0xA7,0x42,0x2E,0x30,0xF6,0xFF,0xFC,0xC1,0x18,0x00,0xB9,0xD0,0x00,0x00, +0x46,0xC9,0x00,0x2F,0xF8,0xF6,0x8F,0x50,0x2E,0x30,0xF6,0xFF,0xFC,0xC1,0x18,0x00, +0xB9,0xD0,0x00,0x00,0x46,0xC9,0x40,0x20,0x7C,0x21,0x01,0x00,0xA1,0x11,0x0C,0x00, +0x6E,0x58,0xF6,0xFF,0x6E,0x0C,0x1A,0x00,0xF6,0xFF,0xAC,0x6D,0x45,0x52,0x6E,0xBA, +0xE0,0xFF,0x06,0x6C,0x43,0x4A,0x00,0x67,0x38,0xFE,0x57,0x42,0x20,0xF4,0x00,0x60, +0x54,0xFD,0x79,0x20,0x00,0x00,0x46,0xC9,0x68,0x42,0xE0,0x01,0x79,0x20,0x00,0x00, +0x46,0xC9,0x7C,0x31,0x03,0x00,0x9C,0x01,0xAE,0x2E,0xFC,0xFF,0x78,0xF4,0xB9,0x2E, +0x00,0x00,0x46,0xC9,0x78,0xF4,0xAE,0x2E,0xF8,0xFF,0x78,0xF4,0x30,0xF5,0x3F,0xFC, +0x56,0x4E,0x00,0x00,0xE7,0x48,0x0C,0x07,0x6E,0x2A,0x08,0x00,0x6E,0x28,0x0C,0x00, +0x79,0x20,0x00,0x00,0x46,0xC9,0x28,0x3E,0xA8,0x01,0x79,0x20,0x00,0x00,0x46,0xC9, +0x28,0x3C,0xAA,0x01,0x79,0x20,0x00,0x00,0x46,0xC9,0x28,0x30,0xF4,0x01,0xC0,0x48, +0xFC,0x81,0x50,0x00,0x80,0x3A,0x15,0x30,0xFC,0xC1,0x50,0x00,0x80,0x38,0x79,0x20, +0x00,0x00,0x46,0xC9,0x54,0x31,0xF4,0x01,0x79,0x20,0x00,0x00,0x46,0xC9,0x54,0x31, +0x24,0x02,0x57,0x42,0x3C,0x3F,0x01,0x00,0x39,0x2F,0x00,0x00,0x46,0xC9,0x97,0x06, +0x00,0x00,0x98,0x01,0xF8,0xF6,0x8F,0x5C,0x07,0x30,0x79,0xD0,0x00,0x00,0x0E,0xC9, +0x79,0x22,0x00,0x00,0x46,0xC9,0x40,0x33,0x08,0x02,0x06,0x30,0x79,0xD0,0x00,0x00, +0x10,0xC9,0x79,0x22,0x00,0x00,0x46,0xC9,0x40,0x33,0x0A,0x02,0x07,0x30,0x79,0x22, +0x00,0x00,0x46,0xC9,0x29,0x32,0x20,0x02,0x41,0xD0,0x79,0x22,0x00,0x00,0x46,0xC9, +0x40,0x33,0x68,0x02,0x06,0x30,0x79,0x22,0x00,0x00,0x46,0xC9,0x29,0x32,0x22,0x02, +0x41,0xD0,0x79,0x22,0x00,0x00,0x46,0xC9,0x40,0x33,0x6A,0x02,0x6E,0x0C,0x28,0x00, +0x10,0x00,0x04,0x66,0x15,0x30,0x55,0xD1,0xBC,0x3E,0x01,0x00,0x20,0xF4,0x31,0xFC, +0x56,0x4E,0xFC,0xFF,0x79,0x20,0x00,0x00,0x46,0xC9,0xA8,0x3E,0x16,0x00,0x57,0x06, +0x10,0x00,0x79,0x20,0x00,0x00,0x46,0xC9,0x28,0x3F,0x14,0x00,0x57,0x06,0x10,0x00, +0x79,0x20,0x00,0x00,0x46,0xC9,0x28,0x3F,0x12,0x00,0x57,0x51,0x79,0x20,0x00,0x00, +0x46,0xC9,0x28,0x3F,0x10,0x00,0x57,0x51,0x2E,0x3F,0x0C,0x00,0x67,0x42,0x2E,0x2F, +0x08,0x00,0xE8,0xF3,0xFC,0xDF,0x00,0x00,0x0E,0x00,0x6E,0x4A,0x0E,0x00,0x0C,0x67, +0xAE,0x3E,0x10,0x00,0x2E,0x2F,0x08,0x00,0x18,0xF2,0x8F,0x58,0x01,0xF0,0x56,0x4E, +0x00,0x00,0xE7,0x48,0x00,0x3F,0x2E,0x2E,0x0A,0x00,0x2E,0x3C,0x18,0x00,0x00,0x60, +0xAC,0x00,0x19,0x7A,0x6E,0x0C,0x09,0x00,0x08,0x00,0x02,0x66,0x15,0x7A,0x2E,0x30, +0x16,0x00,0x05,0x32,0xFC,0xC3,0x18,0x00,0xB9,0xD2,0x00,0x00,0x46,0xC9,0x41,0x22, +0x69,0xD1,0x14,0x00,0x05,0x30,0xFC,0xC1,0x18,0x00,0x00,0x26,0xB9,0xD6,0x00,0x00, +0x46,0xC9,0x57,0x42,0xA7,0x42,0x03,0x2F,0xF8,0xF6,0x8F,0x50,0xBC,0x3E,0x09,0x00, +0x2E,0x3F,0x14,0x00,0x06,0x3F,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0x12,0x00,0x2E,0x2F, +0x0E,0x00,0x07,0x2F,0x2E,0x3F,0x08,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00,0x12,0x00, +0x00,0x38,0x6E,0x0C,0x09,0x00,0x08,0x00,0x2A,0x66,0x44,0x4A,0x26,0x66,0xBC,0x3E, +0x09,0x00,0x2E,0x3F,0x14,0x00,0x06,0x3F,0x3C,0x3F,0x01,0x00,0x2E,0x3F,0x12,0x00, +0x2E,0x2F,0x0E,0x00,0x07,0x2F,0x3C,0x3F,0x08,0x00,0x00,0xF7,0xFC,0xDF,0x00,0x00, +0x12,0x00,0x00,0x38,0x44,0x4A,0x0C,0x67,0xAE,0x3E,0x12,0x00,0x04,0x3F,0x04,0xF7, +0x8F,0x54,0x16,0x60,0xBC,0xDE,0x00,0x00,0x00,0x12,0x46,0x52,0x2E,0x30,0x1A,0x00, +0x6E,0xD0,0x18,0x00,0x40,0xBC,0x00,0x6D,0x4A,0xFF,0x04,0x30,0x3F,0xF0,0x56,0x4E, +0xFC,0xFF,0x10,0xF7,0x57,0x42,0x20,0xF4,0x6E,0x4A,0x08,0x00,0x0A,0x6C,0x2E,0x2F, +0x08,0x00,0x18,0xF7,0x8F,0x58,0x24,0x60,0x6E,0x4A,0x08,0x00,0x10,0x67,0xBC,0x2E, +0xFE,0x00,0xF6,0xF0,0x3C,0x3F,0x01,0x00,0x20,0xF2,0x8F,0x54,0x0E,0x60,0xBC,0x2E, +0xFE,0x00,0x46,0xF1,0x3C,0x3F,0x01,0x00,0x20,0xF2,0x8F,0x54,0x01,0xF0,0x56,0x4E, +0xF0,0xFF,0x6E,0x20,0x0C,0x00,0x28,0x08,0x00,0x00,0x11,0x00,0x1C,0x67,0x2E,0x30, +0x08,0x00,0x40,0xE3,0xC0,0x48,0x40,0x2D,0xF4,0xFF,0x6E,0x20,0x10,0x00,0xEE,0xD1, +0xF4,0xFF,0xBC,0x30,0xFF,0xFF,0x00,0x60,0x80,0x00,0x2E,0x30,0x08,0x00,0x40,0xE2, +0x6E,0xD0,0x08,0x00,0xC0,0x48,0x40,0x2D,0xF4,0xFF,0x7C,0x3D,0xFF,0x0F,0x0A,0x00, +0x2E,0x08,0x00,0x00,0x09,0x00,0x0E,0x67,0x7C,0x3D,0xF0,0xFF,0x0A,0x00,0x7C,0x3D, +0x0F,0x00,0xF8,0xFF,0x06,0x60,0x7C,0x3D,0x00,0xF0,0xF8,0xFF,0x2E,0x20,0x10,0x00, +0xAE,0xD0,0xF4,0xFF,0x40,0x2D,0xFA,0xFF,0x6E,0x20,0xFA,0xFF,0x50,0x1D,0xFE,0xFF, +0x6E,0x20,0xFA,0xFF,0x68,0x1D,0x01,0x00,0xFF,0xFF,0x8E,0x2E,0x97,0x55,0x1C,0xF7, +0x2E,0x30,0xFE,0xFF,0x6E,0xC0,0xF8,0xFF,0x6E,0x80,0x0A,0x00,0x40,0x3D,0xFE,0xFF, +0x8E,0x2E,0x97,0x55,0x1C,0xF7,0x6E,0x20,0xFA,0xFF,0xAE,0x10,0xFE,0xFF,0x6E,0x20, +0xFA,0xFF,0x6E,0x11,0xFF,0xFF,0x01,0x00,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xBC,0x3E, +0x01,0x00,0x67,0x42,0x39,0x2F,0x00,0x00,0xE6,0xC6,0x20,0xF7,0x8F,0x5C,0x01,0xF0, +0x56,0x4E,0x00,0x00,0x6E,0x20,0x08,0x00,0x10,0x30,0x58,0xE0,0x80,0x30,0x5E,0x4E, +0x75,0x4E,0xDF,0x23,0x00,0x00,0xAE,0x95,0x4D,0x4E,0x39,0x2F,0x00,0x00,0xAE,0x95, +0x75,0x4E,0xDF,0x23,0x00,0x00,0xB2,0x95,0x4E,0x4E,0x39,0x2F,0x00,0x00,0xB2,0x95, +0x75,0x4E,0x00,0xA0,0xFC,0x91,0x00,0x00,0x58,0x03,0xC8,0x23,0x00,0x00,0x60,0x95, +0x3C,0x3F,0x4A,0x00,0x08,0x2F,0x3C,0x2F,0x00,0x00,0x64,0x95,0xB9,0x4E,0xFE,0x00, +0xE8,0xC8,0xFC,0xDF,0x00,0x00,0x0A,0x00,0x75,0x4E,0x3C,0x3F,0x4A,0x00,0x3C,0x2F, +0x00,0x00,0x64,0x95,0x39,0x2F,0x00,0x00,0x60,0x95,0xB9,0x4E,0xFE,0x00,0xE8,0xC8, +0xFC,0xDF,0x00,0x00,0x0A,0x00,0x75,0x4E,0x56,0x4E,0x00,0x00,0xE7,0x48,0x04,0x07, +0xBC,0x2E,0x00,0x00,0x7A,0x3F,0x64,0xF3,0x40,0x2A,0xBC,0x3E,0x7A,0x3F,0x3C,0x2F, +0xFD,0x00,0xE2,0x5B,0x0D,0x2F,0x28,0xF1,0x8F,0x50,0xED,0x41,0x0A,0x00,0xC8,0x23, +0x00,0x00,0x6A,0xC7,0x15,0x30,0x40,0x5B,0xC0,0x33,0x00,0x00,0x6E,0xC7,0x01,0x7C, +0x56,0x60,0x0D,0x20,0x46,0x32,0x49,0x53,0xC9,0xD3,0x41,0x42,0x35,0x32,0x00,0x98, +0x49,0xE2,0x49,0xE3,0x41,0x48,0x41,0x42,0x41,0x48,0x81,0xD0,0x06,0x32,0xFC,0xC3, +0x06,0x00,0xBC,0xD2,0x00,0x00,0x6A,0xC7,0x41,0x22,0x80,0x22,0x46,0x30,0xC8,0xD1, +0x40,0x42,0x35,0x30,0x00,0x88,0x46,0x32,0x49,0x53,0xC9,0xD3,0x41,0x42,0x35,0x32, +0x00,0x98,0x41,0x90,0x06,0x32,0xFC,0xC3,0x06,0x00,0xBC,0xD2,0x00,0x00,0x6A,0xC7, +0x41,0x22,0x40,0x33,0x04,0x00,0x46,0x52,0x7C,0xBC,0x04,0x00,0xA4,0x6D,0xF9,0x23, +0x00,0x00,0x76,0xC7,0x00,0x00,0x82,0xC7,0xF9,0x33,0x00,0x00,0x7A,0xC7,0x00,0x00, +0x86,0xC7,0x0D,0x20,0x2D,0x32,0x06,0x00,0x49,0xE2,0x49,0xE3,0x41,0x48,0x41,0x42, +0x41,0x48,0x81,0xD0,0xC0,0x23,0x00,0x00,0x88,0xC7,0x2D,0x30,0x08,0x00,0x6D,0x90, +0x06,0x00,0xC0,0x33,0x00,0x00,0x8C,0xC7,0xFC,0x33,0x01,0x00,0x00,0x00,0xC2,0x9B, +0xFC,0x33,0x01,0x00,0x00,0x00,0x14,0x9C,0xFC,0x33,0x01,0x00,0x00,0x00,0x40,0x9C, +0x31,0xF8,0x56,0x4E,0xF6,0xFF,0xE7,0x48,0x04,0x3F,0x2E,0x3E,0x08,0x00,0x2E,0x2C, +0x0A,0x00,0x2E,0x3A,0x0E,0x00,0x07,0x30,0xFC,0xC1,0x06,0x00,0xBC,0xD0,0x00,0x00, +0x6A,0xC7,0x40,0x20,0x10,0x28,0x07,0x30,0xFC,0xC1,0x06,0x00,0xBC,0xD0,0x00,0x00, +0x6A,0xC7,0x40,0x20,0x28,0x36,0x04,0x00,0x7C,0xBE,0x03,0x00,0x14,0x66,0x83,0x3E, +0x04,0x2F,0x06,0x2F,0x28,0xF1,0x8F,0x50,0x03,0x30,0x00,0x60,0xEC,0x01,0x00,0x60, +0xE8,0x01,0x7C,0xBE,0x02,0x00,0x14,0x66,0x85,0x3E,0x04,0x2F,0x06,0x2F,0x28,0xF1, +0x8F,0x50,0x05,0x30,0x00,0x60,0xD2,0x01,0x00,0x60,0xCE,0x01,0x7C,0xBE,0x04,0x00, +0x22,0x66,0x83,0x3E,0x05,0x30,0x57,0x91,0x04,0x20,0x81,0x42,0x05,0x32,0x81,0xD0, +0x00,0x2F,0x06,0x2F,0x28,0xF1,0x8F,0x50,0x03,0x30,0x45,0x90,0x00,0x60,0xAA,0x01, +0x00,0x60,0xA6,0x01,0x7C,0xBE,0x02,0x00,0x08,0x6D,0x7C,0xBE,0x05,0x00,0x00,0x66, +0x98,0x01,0x6E,0x42,0xFC,0xFF,0x47,0x4A,0x16,0x66,0x79,0x0C,0x01,0x00,0x00,0x00, +0x40,0x9C,0x0C,0x66,0x7C,0x3D,0x01,0x00,0xFC,0xFF,0x79,0x42,0x00,0x00,0x40,0x9C, +0x7C,0xBE,0x01,0x00,0x16,0x66,0x79,0x0C,0x01,0x00,0x00,0x00,0xC2,0x9B,0x0C,0x66, +0x7C,0x3D,0x01,0x00,0xFC,0xFF,0x79,0x42,0x00,0x00,0xC2,0x9B,0x7C,0xBE,0x05,0x00, +0x16,0x66,0x79,0x0C,0x01,0x00,0x00,0x00,0x14,0x9C,0x0C,0x66,0x7C,0x3D,0x01,0x00, +0xFC,0xFF,0x79,0x42,0x00,0x00,0x14,0x9C,0x6E,0x4A,0xFC,0xFF,0x62,0x67,0xC6,0x23, +0x00,0x00,0x02,0x98,0xC4,0x23,0x00,0x00,0x3C,0x9C,0x83,0x3E,0x04,0x2F,0x5C,0xF9, +0x8F,0x58,0x7C,0xBE,0x01,0x00,0x06,0x67,0x7C,0xBE,0x05,0x00,0x2E,0x66,0x7C,0xBE, +0x01,0x00,0x12,0x66,0xBC,0x3E,0x0F,0x00,0x06,0x2F,0x3C,0x2F,0x00,0x00,0x88,0xC6, +0x70,0xF1,0x8F,0x50,0x10,0x60,0xBC,0x3E,0x0F,0x00,0x06,0x2F,0x3C,0x2F,0x00,0x00, +0xEA,0xC6,0x70,0xF1,0x8F,0x50,0x86,0x2E,0xB8,0xF8,0x10,0x60,0xBC,0x3E,0x0F,0x00, +0x06,0x2F,0x3C,0x2F,0x00,0x00,0x08,0xC7,0x70,0xF1,0x8F,0x50,0x00,0x60,0xDA,0x00, +0x7C,0xBE,0x01,0x00,0x00,0x66,0xAA,0x00,0xBC,0x3E,0x0F,0x00,0x3C,0x2F,0x00,0x00, +0x88,0xC6,0x06,0x2F,0x70,0xF1,0x8F,0x50,0x57,0x42,0x0E,0x2F,0x97,0x06,0xFF,0xFF, +0xF6,0xFF,0xA8,0xF6,0x8F,0x58,0x39,0x30,0x00,0x00,0x12,0xC9,0xF9,0xC1,0x00,0x00, +0x32,0xC8,0x40,0x3D,0xFA,0xFF,0x6E,0x42,0xFE,0xFF,0x1C,0x60,0x2E,0x30,0xFE,0xFF, +0xFC,0xC1,0x18,0x00,0xAE,0xD0,0xF6,0xFF,0xBC,0xD0,0x00,0x00,0x14,0x00,0x40,0x20, +0xAE,0x30,0xFA,0xFF,0x6E,0x52,0xFE,0xFF,0x6E,0x0C,0x02,0x00,0xFE,0xFF,0xDC,0x6D, +0x39,0x30,0x00,0x00,0x72,0xC6,0xFC,0xC1,0x19,0x00,0x6E,0x22,0xF6,0xFF,0xFC,0xD3, +0x00,0x00,0x16,0x00,0x80,0x32,0x39,0x30,0x00,0x00,0x72,0xC6,0x40,0x54,0x6E,0x22, +0xF6,0xFF,0xFC,0xD3,0x00,0x00,0x2E,0x00,0x80,0x32,0x6E,0x20,0xF6,0xFF,0xFC,0xD1, +0x00,0x00,0xBC,0x00,0xAE,0x30,0xFA,0xFF,0x39,0x30,0x00,0x00,0x72,0xC6,0xFC,0xC1, +0x18,0x00,0x6E,0x22,0xF6,0xFF,0xFC,0xD3,0x00,0x00,0xBE,0x00,0x80,0x32,0x28,0x60, +0x7C,0xBE,0x05,0x00,0x12,0x66,0xBC,0x3E,0x0F,0x00,0x3C,0x2F,0x00,0x00,0xEA,0xC6, +0x06,0x2F,0x70,0xF1,0x8F,0x50,0x10,0x60,0xBC,0x3E,0x0F,0x00,0x3C,0x2F,0x00,0x00, +0x08,0xC7,0x06,0x2F,0x70,0xF1,0x8F,0x50,0x3F,0xF8,0x56,0x4E,0xFC,0xFF,0x3C,0x30, +0x0B,0x15,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0xBC,0x2E,0x00,0x00,0x96,0x4A,0x64,0xF3, +0xC0,0x23,0x00,0x00,0xA6,0xC6,0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x67,0x42,0x3C,0x3F, +0x96,0x4A,0x94,0xF3,0x8F,0x58,0xBC,0x2E,0x00,0x00,0x00,0x02,0x64,0xF3,0xC0,0x23, +0x00,0x00,0x2E,0xC8,0xBC,0x2E,0x00,0x00,0x98,0x03,0x64,0xF3,0xC0,0x23,0x00,0x00, +0x5E,0xC8,0xBC,0x2E,0x00,0x00,0x80,0x3E,0x64,0xF3,0xC0,0x23,0x00,0x00,0x7A,0xC6, +0xBC,0x2E,0x00,0x00,0x00,0x04,0x64,0xF3,0xC0,0x23,0x00,0x00,0x3A,0x8C,0xB9,0x06, +0x00,0x00,0x00,0x04,0x00,0x00,0x3A,0x8C,0x01,0xF0,0x56,0x4E,0xFC,0xFF,0x79,0x20, +0x00,0x00,0xA6,0xC6,0xA8,0x2E,0x7E,0x37,0x78,0xF4,0x79,0x20,0x00,0x00,0xA6,0xC6, +0xA8,0x2E,0x7A,0x37,0x78,0xF4,0x30,0xF5,0xB9,0x04,0x00,0x00,0x00,0x04,0x00,0x00, +0x3A,0x8C,0xB9,0x2E,0x00,0x00,0x3A,0x8C,0x78,0xF4,0xB9,0x2E,0x00,0x00,0x2E,0xC8, +0x78,0xF4,0xB9,0x2E,0x00,0x00,0xA6,0xC6,0x78,0xF4,0xB9,0x2E,0x00,0x00,0x5E,0xC8, +0x78,0xF4,0xB9,0x2E,0x00,0x00,0x7A,0xC6,0x78,0xF4,0x01,0xF0,0x1F,0x34,0x5F,0x20, +0x18,0x32,0x01,0x08,0x00,0x00,0x14,0x66,0xC2,0x46,0x08,0x2F,0x41,0x02,0xFF,0x0F, +0x7C,0x20,0xFE,0x00,0x6A,0xE5,0x70,0x20,0x00,0x10,0xD0,0x4E,0x41,0x02,0xFE,0x0F, +0x12,0x67,0x49,0xE5,0x7C,0x00,0x00,0x07,0xFA,0x41,0x08,0x00,0x81,0x30,0x8F,0x58, +0xDF,0x4C,0x00,0x00,0xC2,0x46,0x5E,0x4E,0x75,0x4E,0xFE,0x00,0x5A,0x84,0xFD,0x00, +0xBA,0xA8,0xFD,0x00,0x36,0xA9,0xFD,0x00,0x54,0xA2,0xFD,0x00,0x9C,0xA9,0xFD,0x00, +0x78,0xA5,0xFD,0x00,0x60,0xA6,0xFE,0x00,0xDC,0x86,0xFD,0x00,0x00,0xA2,0xFD,0x00, +0x0E,0xA6,0xFE,0x00,0xF8,0x86,0xFE,0x00,0x78,0x87,0xFE,0x00,0x64,0x87,0xFE,0x00, +0xF8,0x86,0xFE,0x00,0xC4,0xC7,0xFE,0x00,0xDC,0x86,0xFE,0x00,0xDC,0x87,0xFE,0x00, +0xCA,0x87,0xFE,0x00,0xF8,0x86,0xFE,0x00,0xF2,0x87,0xFE,0x00,0x3C,0x84,0xFE,0x00, +0x8C,0x87,0xFE,0x00,0x5A,0x84,0xFE,0x00,0xFC,0x87,0xFE,0x00,0x5A,0x84,0xFE,0x00, +0xBA,0x87,0xFE,0x00,0x64,0xC8,0xFE,0x00,0x8C,0x87,0xFE,0x00,0x64,0x87,0xFE,0x00, +0x5A,0x84,0xFE,0x00,0xDC,0x80,0xFE,0x00,0x6C,0x80,0xFD,0x00,0x60,0xAA,0xFD,0x00, +0x36,0xAA,0xFE,0x00,0x28,0x80,0xFE,0x00,0x1A,0x82,0xFD,0x00,0x8A,0xA4,0xFE,0x00, +0x52,0xA1,0xFE,0x00,0xF8,0x9F,0xFE,0x00,0x02,0x66,0xFD,0x00,0x36,0xAA,0xFD,0x00, +0x36,0xAA,0xFE,0x00,0xDC,0x86,0xFE,0x00,0x76,0xC9,0xFE,0x00,0x72,0x81,0xFD,0x00, +0x8A,0xA4,0xFD,0x00,0x78,0xA5,0xFE,0x00,0xD2,0xC6,0xFE,0x00,0x46,0x83,0xFE,0x00, +0xE0,0x81,0xFE,0x00,0xD2,0xC6,0xFE,0x00,0xD2,0xC6,0xFE,0x00,0x1A,0x82,0xFE,0x00, +0x46,0x83,0xFE,0x00,0xBE,0x86,0xFE,0x00,0x4E,0xCA,0xFE,0x00,0xE0,0x81,0xFE,0x00, +0xD2,0xC6,0xFE,0x00,0xBE,0x86,0xFE,0x00,0xA2,0xA1,0xFE,0x00,0xAA,0x82,0xFE,0x00, +0xD8,0xC7,0xFD,0x00,0x24,0xA6,0xFE,0x00,0x24,0x38,0xFE,0x00,0x90,0x38,0xFD,0x00, +0x42,0xA7,0xFD,0x00,0x24,0xA6,0xFE,0x00,0xF6,0xCA,0xFE,0x00,0x34,0xC9,0xFD,0x00, +0xD8,0xA4,0xFD,0x00,0x58,0xDB,0xFE,0x00,0x08,0xCE,0xFD,0x00,0x00,0xA2,0xFD,0x00, +0xF6,0xA4,0xFE,0x00,0xE8,0xC8,0xFD,0x00,0xFC,0xA2,0xFD,0x00,0x36,0xA4,0xFD,0x00, +0x14,0xA2,0xFE,0x00,0x50,0xC8,0xFE,0x00,0x0E,0x96,0xFD,0x00,0xBE,0xA2,0xFD,0x00, +0x56,0xA3,0xFE,0x00,0xB0,0x96,0xFD,0x00,0x64,0xA5,0xFE,0x00,0xEC,0xCF,0xFE,0x00, +0xEE,0xA1,0xFE,0x00,0xE6,0xCE,0xFE,0x00,0x28,0xC9,0xFE,0x00,0x40,0xC9,0xFE,0x00, +0x46,0xA2,0xFE,0x00,0x88,0x9E,0xFE,0x00,0xF2,0x96,0xFE,0x00,0xAA,0xC8,0xFE,0x00, +0xEE,0xCB,0xFE,0x00,0x7A,0xCC,0xFE,0x00,0xBC,0x36,0xFE,0x00,0xF2,0xE0,0xFE,0x00, +0x64,0x38,0xFE,0x00,0xDE,0xCA,0xFE,0x00,0x74,0x38,0xFE,0x00,0x90,0x38,0xFE,0x00, +0xE2,0x36,0xFD,0x00,0x58,0x9C,0xFE,0x00,0xDE,0xCA,0xFE,0x00,0xE2,0xE0,0xFD,0x00, +0x58,0x9C,0xFE,0x00,0xB6,0x72,0xFE,0x00,0x46,0x18,0xFD,0x00,0x58,0x9C,0xFE,0x00, +0x2E,0x62,0xFE,0x00,0x44,0x62,0xFE,0x00,0x7A,0x62,0xFE,0x00,0xD0,0x63,0xFE,0x00, +0x0E,0x8E,0xFD,0x00,0xD0,0x9C,0xFE,0x00,0xFE,0x64,0xFE,0x00,0x0E,0x65,0xFE,0x00, +0x4E,0x65,0xFE,0x00,0x7A,0x65,0xFE,0x00,0xA0,0x65,0xFE,0x00,0x02,0x66,0xFE,0x00, +0xC8,0x68,0xFE,0x00,0x94,0x8C,0xFE,0x00,0x7E,0x88,0xFE,0x00,0x4C,0x8E,0xFE,0x00, +0x24,0x9E,0xFE,0x00,0x88,0x9E,0xFD,0x00,0x8A,0xA4,0xFE,0x00,0x92,0x9C,0xFE,0x00, +0x12,0x9D,0xFE,0x00,0xEE,0xA1,0xFE,0x00,0x28,0x9F,0xFE,0x00,0xE2,0x92,0xFE,0x00, +0xF8,0x9F,0xFE,0x00,0x0E,0x71,0xFE,0x00,0x56,0x72,0xFE,0x00,0x6C,0x6C,0xFE,0x00, +0x7C,0x73,0xFE,0x00,0x18,0x8F,0xFE,0x00,0x02,0x6F,0xFE,0x00,0xB0,0x6F,0xFE,0x00, +0x30,0x82,0xFE,0x00,0xAA,0x82,0xFE,0x00,0x6C,0x80,0xFE,0x00,0x24,0x81,0xFE,0x00, +0x64,0x83,0xFE,0x00,0xDC,0x86,0xFE,0x00,0xF0,0xA6,0xFE,0x00,0xA2,0x86,0xFE,0x00, +0xD2,0x83,0xFE,0x00,0xEA,0xA8,0xFE,0x00,0xFE,0xA8,0xFE,0x00,0xFA,0x79,0xFE,0x00, +0x6C,0xC2,0xFE,0x00,0x44,0xC3,0xFE,0x00,0x5A,0xC3,0xFE,0x00,0x70,0xC3,0xFE,0x00, +0x8C,0xC3,0xFE,0x00,0xA4,0xC4,0xFE,0x00,0xB4,0xC6,0xFE,0x00,0xD2,0xC6,0xFE,0x00, +0x16,0xC7,0xFE,0x00,0xC6,0xA8,0xFE,0x00,0xC2,0xA6,0xFE,0x00,0x1C,0xA7,0xFE,0x00, +0x06,0xA3,0xFE,0x00,0x12,0xA9,0xFE,0x00,0x3E,0xA9,0xFE,0x00,0x90,0xA9,0xFE,0x00, +0xAA,0xA9,0xFE,0x00,0x28,0xAC,0xFE,0x00,0xA0,0xAA,0xFE,0x00,0x06,0x5A,0xFE,0x00, +0x50,0x61,0xFE,0x00,0xE6,0x34,0xFE,0x00,0x72,0x3B,0xFD,0x00,0x3A,0xDF,0xFD,0x00, +0x00,0xC5,0xFD,0x00,0x6A,0xDB,0xFD,0x00,0x9A,0xB1,0xFE,0x00,0x04,0x09,0xFD,0x00, +0x26,0xDD,0xFD,0x00,0x3A,0xA5,0xFD,0x00,0x2C,0xC1,0xFD,0x00,0xE4,0xBD,0xFD,0x00, +0x2A,0xC0,0xFD,0x00,0xEA,0xC0,0xFD,0x00,0x78,0xA5,0xFD,0x00,0xD4,0xDD,0xFE,0x00, +0x4E,0xCA,0xFD,0x00,0x90,0xC1,0xFD,0x00,0x94,0xE0,0xFE,0x00,0x22,0x29,0xFD,0x00, +0x8C,0xBD,0xFD,0x00,0x76,0xC6,0xFE,0x00,0x60,0x18,0xFE,0x00,0x8C,0xC9,0xFD,0x00, +0xA0,0xDF,0xFE,0x00,0xF6,0xC9,0xFD,0x00,0x4E,0xC7,0xFD,0x00,0xB4,0xDD,0xFD,0x00, +0x4C,0xBE,0xFD,0x00,0x0C,0xC2,0xFD,0x00,0xFA,0xBE,0xFD,0x00,0x14,0xDC,0xFD,0x00, +0xB2,0xAB,0xFD,0x00,0xEE,0xAB,0xFD,0x00,0x24,0xAC,0xFD,0x00,0xA6,0xAC,0xFD,0x00, +0xE6,0xDF,0xFD,0x00,0xFC,0xA6,0xFE,0x00,0x22,0xCB,0xFE,0x00,0xBC,0x36,0xFE,0x00, +0x8C,0x38,0xFE,0x00,0x32,0xE2,0xFE,0x00,0x98,0xCA,0xFE,0x00,0xB8,0xCA,0xFE,0x00, +0x24,0x38,0xFD,0x00,0x18,0xAE,0xFE,0x00,0xAC,0xCA,0xFD,0x00,0x30,0xE0,0xFE,0x00, +0x10,0x36,0xFD,0x00,0x5A,0xAE,0xFE,0x00,0xE2,0x36,0xFE,0x00,0x74,0x38,0xFE,0x00, +0xE2,0xD0,0xFD,0x00,0x28,0xAB,0xFD,0x00,0x14,0xAD,0xFD,0x00,0xB2,0xAE,0xFE,0x00, +0xC8,0xCA,0xFD,0x00,0x5C,0xAC,0xFD,0x00,0x9C,0xB7,0xFD,0x00,0xEC,0xAC,0xFD,0x00, +0x4C,0xE0,0xFD,0x00,0x10,0xBB,0xFD,0x00,0x32,0xCE,0xFD,0x00,0x48,0xBB,0xFE,0x00, +0xE6,0x36,0xFE,0x00,0xB0,0x29,0xFD,0x00,0x5C,0xFA,0xFE,0x00,0x6C,0x38,0xFE,0x00, +0x1A,0x37,0xFD,0x00,0x5E,0xBB,0xFE,0x00,0x7C,0x38,0xFE,0x00,0x78,0x38,0xFE,0x00, +0x1E,0x05,0xFE,0x00,0xAC,0x05,0xFD,0x00,0xE6,0xDA,0xFE,0x00,0x98,0xCD,0xFD,0x00, +0xE6,0xDC,0xFD,0x00,0x7A,0xDF,0xFD,0x00,0x96,0xCB,0xFD,0x00,0x7C,0xCC,0xFD,0x00, +0x6C,0xDC,0xFD,0x00,0x8C,0xDC,0xFD,0x00,0xF6,0xDE,0xFE,0x00,0x44,0xCB,0xFE,0x00, +0x8E,0xCB,0xFD,0x00,0xD0,0xDC,0xFE,0x00,0x84,0x38,0xFD,0x00,0xEA,0xCD,0xFE,0x00, +0x1C,0xCC,0xFD,0x00,0xDA,0xCB,0xFE,0x00,0xA4,0xCC,0xFE,0x00,0x46,0x18,0xFE,0x00, +0x40,0xCC,0xFE,0x00,0x06,0xCB,0xFE,0x00,0xC2,0xCB,0xFD,0x00,0xBE,0xCD,0xFD,0x00, +0x9C,0xCD,0xFD,0x00,0xC2,0xF9,0xFD,0x00,0x60,0xCE,0xFE,0x00,0x52,0x37,0xFE,0x00, +0x70,0x38,0xFE,0x00,0x86,0x36,0xFE,0x00,0x88,0x38,0xFE,0x00,0xDA,0xCC,0xFD,0x00, +0xDE,0xCC,0xFD,0x00,0x64,0xCD,0xFD,0x00,0x36,0xCD,0xFE,0x00,0x2E,0x37,0xFD,0x00, +0x6E,0xCE,0xFE,0x00,0xB0,0x36,0xFD,0x00,0xF4,0xD3,0xFE,0x00,0x52,0x38,0xFD,0x00, +0xE6,0xD0,0xFE,0x00,0x90,0x38,0xFD,0x00,0x3A,0xCC,0xFD,0x00,0x3A,0xF3,0xFD,0x00, +0x7A,0xF3,0xFD,0x00,0x56,0xF5,0xFD,0x00,0x90,0xF5,0xFD,0x00,0xDC,0xF5,0xFD,0x00, +0xE4,0xF3,0xFD,0x00,0x14,0xF6,0xFE,0x00,0x6C,0xCB,0xFE,0x00,0x58,0xCB,0xFD,0x00, +0x96,0xF6,0xFD,0x00,0x58,0xF7,0xFE,0x00,0x8C,0xD1,0xFD,0x00,0xBC,0xF5,0xFE,0x00, +0x9E,0xD1,0xFD,0x00,0x72,0xF5,0xFD,0x00,0xA2,0xF7,0xFD,0x00,0xB4,0xDC,0xFD,0x00, +0x38,0xDB,0xFE,0x00,0x66,0x2A,0xFD,0x00,0xA6,0xF8,0xFE,0x00,0x94,0x08,0xFE,0x00, +0x58,0x34,0xFD,0x00,0x3E,0xE1,0xFD,0x00,0x02,0xE1,0xFD,0x00,0x10,0xFA,0xFD,0x00, +0x38,0xD4,0xFD,0x00,0xAA,0xD5,0xFE,0x00,0x22,0x0A,0xFD,0x00,0xA4,0xFC,0xFD,0x00, +0x40,0xFE,0xFE,0x00,0x26,0x08,0xFD,0x00,0x12,0xBD,0xFD,0x00,0xAA,0xFD,0xFD,0x00, +0x44,0xF6,0xFD,0x00,0x8A,0xF6,0xFD,0x00,0xF6,0xFF,0xFE,0x00,0xCA,0x33,0xFE,0x00, +0xF0,0x07,0xFE,0x00,0xE6,0x06,0xFE,0x00,0x20,0x07,0xFD,0x00,0xC2,0xFE,0xFD,0x00, +0x5C,0xFF,0xFE,0x00,0xBE,0x00,0xFE,0x00,0x6A,0x01,0xFD,0x00,0xCE,0xDF,0xFE,0x00, +0xAA,0x7F,0xFE,0x00,0xE4,0x7F,0xFD,0x00,0x92,0xE1,0xFD,0x00,0x24,0xE2,0xFD,0x00, +0xD8,0xE1,0xFD,0x00,0x7A,0xE2,0xFD,0x00,0x9C,0xA9,0xFD,0x00,0xD8,0xA4,0xFD,0x00, +0x1E,0xE4,0xFE,0x00,0xAE,0x1F,0xFD,0x00,0x10,0xE5,0xFD,0x00,0xC8,0xE6,0xFD,0x00, +0x04,0xE7,0xFE,0x00,0x58,0xCC,0xFE,0x00,0x0A,0x38,0xFE,0x00,0x80,0x38,0xFD,0x00, +0x38,0xE6,0xFD,0x00,0x12,0xE6,0xFE,0x00,0xD4,0x37,0xFE,0x00,0x6C,0x37,0xFE,0x00, +0x7A,0xCC,0xFD,0x00,0x72,0xB7,0xFD,0x00,0x74,0xAB,0xFD,0x00,0x5E,0xDF,0xFE,0x00, +0x90,0x07,0xFE,0x00,0xA2,0x0A,0xFD,0x00,0x08,0xE0,0xFE,0x00,0xD2,0x2B,0xFE,0x00, +0x38,0x0A,0xFE,0x00,0xC4,0x09,0xFD,0x00,0xFC,0xDD,0xFD,0x00,0xE2,0xE0,0xFD,0x00, +0x68,0xE0,0xFD,0x00,0x14,0xDE,0xFE,0x00,0x76,0xC9,0xFE,0x00,0xB6,0x34,0xFE,0x00, +0x5E,0x29,0xFE,0x00,0x36,0x06,0xFD,0x00,0xEC,0xEC,0xFE,0x00,0x0C,0x28,0xFE,0x00, +0x3A,0x17,0xFE,0x00,0xD2,0x0C,0xFE,0x00,0xC6,0x28,0xFD,0x00,0x5E,0xF4,0xFE,0x00, +0x1E,0x0E,0xFE,0x00,0x24,0x11,0xFE,0x00,0x54,0x10,0xFD,0x00,0x7A,0xE7,0xFD,0x00, +0x80,0xE9,0xFD,0x00,0x5A,0xEA,0xFE,0x00,0x2E,0x34,0xFE,0x00,0xA0,0x0B,0xFE,0x00, +0x4E,0x15,0xFE,0x00,0xDC,0x15,0xFE,0x00,0xF6,0x72,0xFD,0x00,0x30,0xF5,0xFD,0x00, +0xAC,0xDE,0xFE,0x00,0xF6,0x18,0xFE,0x00,0xD2,0x11,0xFE,0x00,0x50,0x13,0xFD,0x00, +0x26,0xFB,0xFE,0x00,0x82,0x16,0xFE,0x00,0x6A,0x14,0xFD,0x00,0x82,0xDE,0xFE,0x00, +0xE6,0x26,0xFD,0x00,0x84,0xED,0xFD,0x00,0x7E,0xBB,0xFD,0x00,0x32,0xF0,0xFE,0x00, +0xEE,0x32,0xFE,0x00,0x64,0x33,0xFD,0x00,0x7C,0xEB,0xFE,0x00,0xA0,0x21,0xFD,0x00, +0xC6,0xB7,0xFE,0x00,0xCC,0x84,0xFD,0x00,0xBC,0xC8,0xFD,0x00,0xC6,0xC9,0xFE,0x00, +0x74,0x03,0xFE,0x00,0xEA,0x1A,0xFE,0x00,0x20,0x19,0xFE,0x00,0xB6,0x1A,0xFE,0x00, +0x94,0x1B,0xFE,0x00,0x8C,0x32,0xFE,0x00,0x48,0x1C,0xFD,0x00,0x2C,0xDE,0xFE,0x00, +0x38,0x1F,0xFE,0x00,0x06,0x0C,0xFE,0x00,0x04,0x32,0xFE,0x00,0x6E,0x31,0xFD,0x00, +0x54,0xDC,0xFD,0x00,0x78,0xDA,0xFD,0x00,0xAC,0xE0,0xFD,0x00,0x5E,0xE1,0xFE,0x00, +0xC0,0x07,0xFE,0x00,0xD8,0x07,0xFD,0x00,0x8E,0xB2,0xFD,0x00,0xFE,0xDA,0xFE,0x00, +0xCE,0x27,0xFD,0x00,0xC0,0xF3,0xFD,0x00,0x66,0xDE,0xFE,0x00,0x82,0x22,0xFE,0x00, +0x10,0x1F,0xFE,0x00,0xDC,0x1D,0xFE,0x00,0xE0,0x03,0xFE,0x00,0xAA,0x04,0xFD,0x00, +0xC2,0xE0,0xFD,0x00,0x7E,0xE0,0xFD,0x00,0x1E,0xDF,0xFE,0x00,0x32,0x2A,0xFE,0x00, +0x7C,0x2A,0xFE,0x00,0x74,0x2B,0xFD,0x00,0xDA,0xA6,0xFE,0x00,0x7A,0x2F,0xFE,0x00, +0xF2,0xD4,0xFE,0x00,0xA0,0xDE,0xFE,0x00,0xD0,0xDD,0xFE,0x00,0xF2,0xE0,0xFE,0x00, +0xCE,0xDF,0xFE,0x00,0xE2,0xE0,0xFE,0x00,0x0E,0xE0,0xFE,0x00,0xBA,0xE0,0xFE,0x00, +0xFE,0xDE,0xFE,0x00,0x28,0x39,0xFE,0x00,0xD0,0xE0,0xFE,0x00,0x0A,0xAA,0xFE,0x00, +0xC8,0x3B,0xFE,0x00,0xDE,0x64,0xFE,0x00,0xBA,0x53,0xFE,0x00,0x30,0xC8,0xFE,0x00, +0x3C,0x84,0xFE,0x00,0x44,0xC8,0xFE,0x00,0x84,0x47,0xFE,0x00,0xFA,0x34,0xFE,0x00, +0x06,0x35,0xFE,0x00,0x6C,0x3C,0xFE,0x00,0xF2,0x55,0xFE,0x00,0xD0,0x51,0xFE,0x00, +0xF8,0x4A,0xFE,0x00,0x8A,0x51,0xFE,0x00,0xD0,0x52,0xFE,0x00,0x62,0x52,0xFE,0x00, +0xCC,0x3C,0xFE,0x00,0x3E,0x41,0xFE,0x00,0x26,0x36,0xFE,0x00,0xF0,0x54,0xFE,0x00, +0xBE,0xD1,0xFE,0x00,0x52,0x3F,0xFD,0x00,0x68,0xA0,0xFE,0x00,0x28,0xBA,0xFE,0x00, +0x06,0xB7,0xFE,0x00,0xA8,0xB1,0xFE,0x00,0x10,0xC9,0xFE,0x00,0x48,0x82,0xFE,0x00, +0xD4,0x41,0xFE,0x00,0x0C,0x42,0xFE,0x00,0xD8,0x89,0xFE,0x00,0x72,0x4C,0xFE,0x00, +0xB4,0x4C,0xFE,0x00,0xBE,0xB6,0xFE,0x00,0x38,0x45,0xFE,0x00,0x72,0x45,0xFE,0x00, +0x02,0xE1,0xFE,0x00,0x5A,0x84,0xFE,0x00,0x2A,0xE1,0xFE,0x00,0xDE,0x47,0xFE,0x00, +0x40,0x49,0xFE,0x00,0x3E,0x35,0xFE,0x00,0x06,0x48,0xFE,0x00,0x30,0x48,0xFE,0x00, +0xD2,0x49,0xFE,0x00,0x9A,0x35,0xFE,0x00,0x56,0x3D,0xFE,0x00,0x1C,0x3D,0xFE,0x00, +0x26,0x3E,0xFE,0x00,0x84,0x64,0xFE,0x00,0x34,0x4D,0xFE,0x00,0xFC,0x4E,0xFE,0x00, +0xC6,0x65,0xFE,0x00,0xE4,0x3E,0xFE,0x00,0x84,0x4D,0xFE,0x00,0xC4,0x4A,0xFE,0x00, +0x24,0x3C,0xFE,0x00,0x9A,0x3C,0xFE,0x00,0x02,0x69,0xFE,0x00,0xC8,0xA1,0xFE,0x00, +0xEE,0x69,0xFE,0x00,0x62,0x6A,0xFE,0x00,0xD0,0x85,0xFE,0x00,0x02,0x47,0xFE,0x00, +0x00,0x86,0xFE,0x00,0x86,0x4C,0xFE,0x00,0x9A,0x4C,0xFE,0x00,0x24,0x46,0xFE,0x00, +0x7E,0x6E,0xFE,0x00,0x20,0xA1,0xFE,0x00,0xF8,0x6D,0xFE,0x00,0x62,0x4D,0xFE,0x00, +0xE4,0x6E,0xFE,0x00,0x76,0x36,0xFE,0x00,0x32,0xB3,0xFE,0x00,0x90,0xBC,0xFE,0x00, +0x50,0xA3,0xFE,0x00,0xE8,0x8F,0xFE,0x00,0x18,0x74,0xFE,0x00,0x60,0x38,0xFE,0x00, +0x68,0x76,0xFE,0x00,0xDA,0x77,0xFE,0x00,0xAE,0x76,0xFE,0x00,0x52,0xA1,0xFE,0x00, +0x90,0x74,0xFE,0x00,0xBE,0x86,0xFE,0x00,0x58,0x74,0xFE,0x00,0x64,0x79,0xFE,0x00, +0x40,0xCC,0xFE,0x00,0xFC,0x77,0xFD,0x00,0x8E,0x9C,0xFE,0x00,0x0E,0x35,0xFE,0x00, +0xD8,0x38,0xFE,0x00,0x14,0x35,0xFE,0x00,0xD4,0x46,0xFD,0x00,0x9A,0xA0,0xFE,0x00, +0xFE,0x3F,0xFE,0x00,0x72,0x84,0xFE,0x00,0x16,0x39,0xFE,0x00,0xC4,0xA9,0xFE,0x00, +0x82,0x86,0xFE,0x00,0xB8,0xA8,0xFE,0x00,0x8E,0xC0,0xFE,0x00,0xEC,0x73,0xFE,0x00, +0x50,0xAD,0xFE,0x00,0x1A,0x84,0xFE,0x00,0x0E,0x39,0xFE,0x00,0xE0,0x40,0xFE,0x00, +0x48,0x85,0xFE,0x00,0xD0,0x84,0xFE,0x00,0xCC,0x38,0xFE,0x00,0xEA,0x50,0xFE,0x00, +0x4C,0x4F,0xFE,0x00,0x0C,0x4E,0xFE,0x00,0xFC,0x4C,0xFE,0x00,0x5A,0x4B,0xFE,0x00, +0x1A,0x4C,0xFE,0x00,0x7C,0xD0,0xFE,0x00,0x22,0x51,0xFE,0x00,0x20,0x89,0xFE,0x00, +0x5E,0x88,0xFE,0x00,0xD4,0x86,0xFE,0x00,0xE4,0x88,0xFE,0x00,0x5E,0x89,0xFD,0x00, +0x64,0xA5,0xFE,0x00,0xC0,0x54,0xFE,0x00,0x86,0x90,0xFE,0x00,0x80,0x91,0xFE,0x00, +0x44,0x90,0xFE,0x00,0xCA,0x8E,0xFE,0x00,0x0E,0x96,0xFE,0x00,0x5C,0x92,0xFE,0x00, +0xF4,0x90,0xFE,0x00,0x94,0x92,0xFE,0x00,0xC0,0x91,0xFE,0x00,0xBC,0x8F,0xFE,0x00, +0x60,0x53,0xFE,0x00,0xDA,0x35,0xFE,0x00,0x2E,0xCB,0xFE,0x00,0x4A,0x54,0xFE,0x00, +0xE4,0x35,0xFE,0x00,0x2A,0x55,0xFE,0x00,0x0E,0xA8,0xFE,0x00,0x8C,0xA2,0xFE,0x00, +0xAC,0xA3,0xFE,0x00,0x80,0xA3,0xFE,0x00,0x74,0xA6,0xFE,0x00,0x62,0xA6,0xFE,0x00, +0xD6,0xC8,0xFE,0x00,0xA2,0xA6,0xFE,0x00,0x04,0x37,0xFE,0x00,0xD4,0xA4,0xFE,0x00, +0x82,0xA5,0xFE,0x00,0x3E,0xA6,0xFE,0x00,0x26,0xA5,0xFE,0x00,0x4C,0xA7,0xFE,0x00, +0xEE,0x38,0xFE,0x00,0x92,0x84,0xFE,0x00,0xFA,0x83,0xFE,0x00,0x4E,0x85,0xFE,0x00, +0xDC,0x86,0xFE,0x00,0x6E,0xAA,0xFE,0x00,0x88,0xAB,0xFE,0x00,0xEC,0xA9,0xFE,0x00, +0x2C,0xD2,0xFE,0x00,0x74,0xE4,0xFE,0x00,0x98,0x23,0xFE,0x00,0xDA,0xE4,0xFE,0x00, +0x66,0xAF,0xFE,0x00,0x98,0x39,0xFE,0x00,0x88,0xD2,0xFE,0x00,0x8E,0xD2,0xFE,0x00, +0x7C,0xD5,0xFE,0x00,0x4E,0xDA,0xFE,0x00,0x28,0xB1,0xFE,0x00,0x72,0xB0,0xFE,0x00, +0xFE,0xB1,0xFE,0x00,0xB0,0xB2,0xFE,0x00,0x7C,0xB3,0xFE,0x00,0x62,0xB2,0xFE,0x00, +0x34,0xB4,0xFE,0x00,0x2A,0xB0,0xFE,0x00,0xB8,0xB4,0xFE,0x00,0x54,0xC0,0xFE,0x00, +0x38,0xBB,0xFE,0x00,0x94,0xBA,0xFE,0x00,0xE6,0xB1,0xFE,0x00,0xE6,0xCE,0xFE,0x00, +0x6A,0xBB,0xFE,0x00,0xCC,0x56,0xFE,0x00,0x16,0x57,0xFE,0x00,0xE4,0xB0,0xFE,0x00, +0x34,0xBD,0xFE,0x00,0xE0,0xC2,0xFE,0x00,0x04,0xC0,0xFE,0x00,0x26,0x84,0xFE,0x00, +0xD2,0xB3,0xFE,0x00,0x22,0x4B,0xFE,0x00,0x36,0x57,0xFE,0x00,0x12,0x58,0xFE,0x00, +0x28,0xD1,0x00,0x5C,0x45,0x44,0x4B,0x53,0x4F,0x54,0x2E,0x50,0x4E,0x49,0x00,0x46, +0x00,0x5C,0x45,0x44,0x4B,0x53,0x4F,0x54,0x2E,0x50,0x4E,0x49,0x00,0x46,0xFD,0x00, +0x46,0xAD,0xFD,0x00,0x76,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00,0x60,0xAD,0xFD,0x00, +0x54,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00, +0x96,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00,0x38,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00, +0x96,0xAD,0xFD,0x00,0x6A,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00,0x96,0xAD,0xFD,0x00, +0x96,0xAD,0xFD,0x00,0x2A,0xAD,0xFD,0x00,0x92,0xB3,0xFD,0x00,0xB4,0xB3,0xFD,0x00, +0xFE,0xB4,0xFD,0x00,0xB4,0xB3,0xFD,0x00,0xB4,0xB3,0xFD,0x00,0xA8,0xB5,0xFD,0x00, +0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00, +0x9C,0xB3,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0xB4,0xB3,0xFD,0x00, +0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0x9C,0xB3,0xFD,0x00, +0xA8,0xB5,0xFD,0x00,0xA8,0xB5,0xFD,0x00,0xCE,0xB3,0xFD,0x00,0x7A,0xB9,0xFD,0x00, +0xAE,0xB9,0xFD,0x00,0x6E,0xB9,0xFD,0x00,0x68,0xB9,0xFD,0x00,0x74,0xB9,0x45,0x44, +0x4B,0x53,0x4F,0x54,0x2E,0x50,0x4E,0x49,0x00,0x46,0x45,0x44,0x4B,0x53,0x4F,0x54, +0x2E,0x50,0x4E,0x49,0x00,0x46,0x00,0x5C,0x2A,0x5C,0x2A,0x2E,0x5C,0x00,0x2E,0x2A, +0x00,0x2A,0x2A,0x5C,0x2A,0x2E,0x5C,0x00,0x2E,0x2A,0x00,0x2A,0x57,0x25,0x5C,0x00, +0x2E,0x2A,0x00,0x2A,0x57,0x25,0x5C,0x00,0x2E,0x2A,0x00,0x2A,0x2E,0x2A,0x00,0x2A, +0x2E,0x2A,0x00,0x2A,0x57,0x25,0x25,0x00,0x00,0x57,0x2A,0x5C,0x2A,0x2E,0x25,0x00, +0x00,0x57,0x4D,0x2D,0x48,0x45,0x2D,0x52,0x00,0x00,0x45,0x2D,0x44,0x4E,0x20,0x45, +0x45,0x44,0x20,0x52,0x41,0x44,0x45,0x54,0x2D,0x49,0x00,0x00,0x52,0x44,0x43,0x55, +0x45,0x4B,0x20,0x3A,0x00,0x00,0x33,0x5B,0x5B,0x5D,0x65,0x46,0x6C,0x68,0x72,0x65, +0x62,0x20,0x69,0x65,0x20,0x6D,0x6F,0x46,0x6D,0x72,0x74,0x61,0x65,0x69,0x65,0x72, +0x7C,0x6E,0x64,0x6F,0x72,0x65,0x4B,0x20,0x70,0x6F,0x65,0x69,0x65,0x72,0x21,0x6E, +0x5A,0x20,0x65,0x69,0x64,0x6C,0x73,0x69,0x20,0x6B,0x94,0x6B,0x6E,0x6E,0x65,0x74, +0x64,0x7C,0x66,0x65,0x6B,0x65,0x20,0x74,0x65,0x73,0x6E,0x69,0x5D,0x2E,0x20,0x5B, +0x4B,0x4F,0x5D,0x20,0x00,0x00,0x33,0x5B,0x5B,0x5D,0x69,0x44,0x6B,0x73,0x74,0x65, +0x65,0x74,0x20,0x6E,0x61,0x68,0x65,0x62,0x20,0x6E,0x69,0x6E,0x68,0x63,0x20,0x74, +0x61,0x64,0x7C,0x73,0x6C,0x67,0x69,0x65,0x68,0x63,0x20,0x65,0x6F,0x46,0x6D,0x72, +0x74,0x61,0x5D,0x21,0x20,0x5B,0x4B,0x4F,0x5D,0x20,0x00,0x00,0x31,0x5B,0x5B,0x5D, +0x69,0x44,0x6B,0x73,0x68,0x20,0x74,0x61,0x25,0x20,0x20,0x4C,0x79,0x42,0x65,0x74, +0x7C,0x73,0x72,0x66,0x69,0x65,0x6E,0x65,0x53,0x20,0x65,0x70,0x63,0x69,0x65,0x68, +0x70,0x72,0x61,0x6C,0x7A,0x74,0x5D,0x2E,0x20,0x5B,0x4B,0x4F,0x5D,0x20,0x00,0x00, +0x4F,0x52,0x2D,0x4D,0x6F,0x4D,0x75,0x64,0x00,0x6C,0x31,0x5B,0x5B,0x5D,0x7C,0x20, +0x72,0x41,0x65,0x62,0x74,0x69,0x73,0x20,0x63,0x69,0x65,0x68,0x6E,0x72,0x3F,0x20, +0x5B,0x5D,0x4F,0x20,0x20,0x4B,0x41,0x7C,0x62,0x62,0x75,0x72,0x68,0x63,0x00,0x5D, +0x31,0x5B,0x5B,0x5D,0x7C,0x20,0x61,0x48,0x64,0x72,0x6F,0x63,0x79,0x70,0x64,0x20, +0x73,0x65,0x42,0x20,0x6C,0x69,0x73,0x64,0x68,0x63,0x72,0x69,0x73,0x6D,0x3F,0x20, +0x5B,0x5D,0x4F,0x20,0x20,0x4B,0x41,0x7C,0x62,0x62,0x75,0x72,0x68,0x63,0x00,0x5D, +0x57,0x25,0x20,0x00,0x00,0x20,0x4C,0x25,0x25,0x00,0x00,0x4C,0x2A,0x5C,0x2A,0x2E, +0x3A,0x00,0x2A,0x5C,0x2A,0x2E,0x00,0x00,0x2E,0x2A,0x00,0x2A,0x5C,0x3A,0x2E,0x2A, +0x00,0x2A,0x2A,0x5C,0x2A,0x2E,0x2A,0x00,0x2A,0x2E,0x00,0x00,0x00,0x2A,0x00,0x2A, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x14,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFE,0x00,0x78,0x12,0xFE,0x00,0xA6,0x12,0xFE,0x00,0x02,0x13,0xFE,0x00,0x16,0x13, +0xFE,0x00,0x0C,0x13,0x00,0x00,0x00,0x00,0x00,0x2A,0x00,0x2A,0x00,0x00,0x00,0x2A, +0x00,0x2A,0x00,0x5C,0x20,0x3A,0x56,0x2F,0x00,0x00,0x1A,0x19,0x00,0x26,0x18,0x14, +0x27,0x1F,0x00,0x00,0x25,0x19,0x00,0x00,0x25,0x19,0x00,0x26,0x19,0x1A,0x26,0x25, +0x00,0x00,0x26,0x1A,0x00,0x00,0x1A,0x12,0x25,0x19,0x25,0x26,0x00,0x00,0x13,0x12, +0x25,0x19,0x00,0x26,0x16,0x15,0x00,0x17,0x16,0x15,0x1D,0x17,0x20,0x1E,0x22,0x21, +0x00,0x23,0x25,0x12,0x13,0x19,0x00,0x00,0x15,0x13,0x1A,0x19,0x00,0x26,0x00,0x15, +0xFE,0x00,0x7A,0x19,0xFE,0x00,0x94,0x19,0xFE,0x00,0xA8,0x19,0xFE,0x00,0xC8,0x19, +0xFE,0x00,0x9E,0x19,0xFE,0x00,0x18,0x1B,0xFE,0x00,0x26,0x1B,0xFE,0x00,0x90,0x1B, +0xFE,0x00,0x32,0x1B,0xFE,0x00,0x40,0x1B,0xFE,0x00,0x54,0x1B,0xFE,0x00,0x90,0x1B, +0xFE,0x00,0x6A,0x1B,0xFE,0x00,0x76,0x1B,0xFE,0x00,0xB4,0x1B,0xFE,0x00,0xB8,0x1B, +0xFE,0x00,0xE4,0x1B,0xFE,0x00,0xBC,0x1B,0xFE,0x00,0xC0,0x1B,0xFE,0x00,0xC4,0x1B, +0xFE,0x00,0xC8,0x1B,0xFE,0x00,0xBA,0x1C,0xFE,0x00,0x02,0x1D,0xFE,0x00,0xD8,0x1D, +0xFE,0x00,0x34,0x1D,0xFE,0x00,0x3C,0x1D,0xFE,0x00,0x66,0x1D,0xFE,0x00,0xD8,0x1D, +0xFE,0x00,0x88,0x1D,0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xC6,0x1F, +0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xC6,0x1F, +0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xC6,0x1F,0xFE,0x00,0xEE,0x1F,0xFE,0x00,0x8C,0x21, +0xFE,0x00,0x8C,0x21,0xFE,0x00,0x8C,0x21,0xFE,0x00,0x8C,0x21,0xFE,0x00,0x8C,0x21, +0xFE,0x00,0x8C,0x21,0xFE,0x00,0x8C,0x21,0xFE,0x00,0x8C,0x21,0xFE,0x00,0x8C,0x21, +0xFE,0x00,0x06,0x20,0xFE,0x00,0x20,0x20,0xFE,0x00,0x74,0x20,0xFE,0x00,0x80,0x20, +0xFE,0x00,0x98,0x20,0xFE,0x00,0xA4,0x20,0xFE,0x00,0xB2,0x20,0xFE,0x00,0xC2,0x20, +0xFE,0x00,0xC2,0x20,0xFE,0x00,0x1C,0x32,0xFE,0x00,0x26,0x32,0xFE,0x00,0x30,0x32, +0xFE,0x00,0x38,0x32,0xFE,0x00,0x40,0x32,0xFE,0x00,0x4C,0x32,0xFE,0x00,0x58,0x32, +0xFE,0x00,0x62,0x32,0x01,0x04,0x02,0x01,0x01,0x01,0x02,0x02,0x02,0x04,0x02,0x02, +0x03,0x00,0x02,0x04,0x00,0x06,0xFE,0x00,0xBE,0x3D,0xFE,0x00,0xCA,0x3D,0xFE,0x00, +0xD8,0x3D,0xFE,0x00,0xE2,0x3D,0xFE,0x00,0xEC,0x3D,0xFE,0x00,0xF6,0x3D,0xFE,0x00, +0x00,0x3E,0x00,0x5C,0x2A,0x5C,0x41,0x2E,0x43,0x43,0x5C,0x00,0x5C,0x00,0x2E,0x2A, +0x43,0x41,0x00,0x43,0x02,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00, +0x07,0x00,0x04,0x00,0x05,0x00,0xFE,0x00,0xA0,0x42,0xFE,0x00,0xDA,0x42,0xFE,0x00, +0xA0,0x42,0xFE,0x00,0x90,0x44,0xFE,0x00,0x90,0x44,0xFE,0x00,0x90,0x44,0xFE,0x00, +0x54,0x43,0xFE,0x00,0x90,0x44,0xFE,0x00,0x44,0x44,0xFE,0x00,0x44,0x44,0xFE,0x00, +0x02,0x44,0xFE,0x00,0x48,0x44,0xFE,0x00,0x90,0x44,0xFE,0x00,0x44,0x44,0xFE,0x00, +0x44,0x44,0xFE,0x00,0x02,0x44,0xFE,0x00,0x48,0x44,0x43,0x53,0x45,0x52,0x4D,0x4E, +0x52,0x47,0x4C,0x2E,0x43,0x4F,0x00,0x00,0xFE,0x00,0x1C,0x5A,0xFE,0x00,0x5C,0x5A, +0xFE,0x00,0x60,0x5A,0xFE,0x00,0x76,0x5A,0xFE,0x00,0x84,0x5A,0xFE,0x00,0x96,0x5A, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0xAA,0x5A, +0xFE,0x00,0xDA,0x5A,0xFE,0x00,0xE2,0x5A,0xFE,0x00,0xFA,0x5A,0xFE,0x00,0x0C,0x5B, +0xFE,0x00,0x1A,0x5B,0xFE,0x00,0x2C,0x5B,0xFE,0x00,0xAA,0x5B,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0xB8,0x5B,0xFE,0x00,0xCA,0x5B, +0xFE,0x00,0xE6,0x5B,0xFE,0x00,0x2A,0x5C,0xFE,0x00,0x58,0x5C,0xFE,0x00,0x84,0x5C, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x98,0x5C,0xFE,0x00,0xAA,0x5C,0xFE,0x00,0xBC,0x5C,0xFE,0x00,0xD6,0x5C, +0xFE,0x00,0xEE,0x5C,0xFE,0x00,0x0C,0x5D,0xFE,0x00,0x1E,0x5D,0xFE,0x00,0x48,0x5D, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x66,0x5D,0xFE,0x00,0x7A,0x5D, +0xFE,0x00,0x98,0x5D,0xFE,0x00,0xAC,0x5D,0xFE,0x00,0xBA,0x5D,0xFE,0x00,0xCC,0x5D, +0xFE,0x00,0x04,0x5E,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x26,0x5E,0xFE,0x00,0x42,0x5E, +0xFE,0x00,0x64,0x5E,0xFE,0x00,0x80,0x5E,0xFE,0x00,0x88,0x5E,0xFE,0x00,0x9E,0x5E, +0xFE,0x00,0xB8,0x5E,0xFE,0x00,0xD0,0x5E,0xFE,0x00,0xF8,0x5E,0xFE,0x00,0x52,0x5F, +0xFE,0x00,0x6E,0x5F,0xFE,0x00,0x7A,0x5F,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x86,0x5F,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x9C,0x5F,0xFE,0x00,0xB0,0x5F,0xFE,0x00,0xC2,0x5F,0xFE,0x00,0xCE,0x5F, +0xFE,0x00,0xDA,0x5F,0xFE,0x00,0xEC,0x5F,0xFE,0x00,0xFE,0x5F,0xFE,0x00,0x0C,0x60, +0xFE,0x00,0x18,0x60,0xFE,0x00,0x10,0x61,0xFE,0x00,0x46,0x60,0xFE,0x00,0x56,0x60, +0xFE,0x00,0x60,0x60,0xFE,0x00,0x76,0x60,0xFE,0x00,0x8C,0x60,0xFE,0x00,0x10,0x61, +0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61,0xFE,0x00,0x10,0x61, +0xFE,0x00,0xA0,0x60,0xFE,0x00,0xB2,0x60,0xFE,0x00,0xCE,0x60,0xFE,0x00,0xE0,0x60, +0xFE,0x00,0xF2,0x60,0xFE,0x00,0x00,0x61,0xC2,0x01,0x4A,0x01,0x13,0x01,0xDC,0x00, +0xA5,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x0E,0x00,0x0F,0x00,0x10,0x00, +0x11,0x00,0x12,0x00,0x1D,0x00,0x02,0x01,0x02,0x01,0x02,0x01,0x01,0x01,0x02,0x00, +0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x0F,0x00,0x00,0x09,0x0F,0x00,0x00,0x0D,0x1C, +0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x50,0x00,0x00,0x0D,0x72,0x00,0x00,0x00,0x00, +0xFE,0x00,0x20,0x6F,0xFE,0x00,0x28,0x6F,0xFE,0x00,0x14,0x6F,0xFE,0x00,0x20,0x6F, +0xFE,0x00,0x28,0x6F,0xFE,0x00,0x14,0x6F,0xFE,0x00,0x44,0x6F,0xFE,0x00,0x96,0x73, +0xFE,0x00,0x96,0x73,0xFE,0x00,0x9A,0x73,0xFE,0x00,0x9E,0x73,0xFE,0x00,0xAA,0x73, +0xFE,0x00,0xAA,0x73,0xFE,0x00,0xA2,0x73,0xFE,0x00,0xAA,0x73,0xFE,0x00,0xA2,0x73, +0xFE,0x00,0xA2,0x73,0xFE,0x00,0xAA,0x73,0xFE,0x00,0xAA,0x73,0xFE,0x00,0xAA,0x73, +0xFE,0x00,0xA6,0x73,0xFE,0x00,0xAA,0x73,0xFE,0x00,0xAA,0x73,0xFE,0x00,0x96,0x73, +0x06,0x05,0x00,0x07,0xFE,0x00,0xAE,0x7D,0xFE,0x00,0x0A,0x7E,0xFE,0x00,0x28,0x7E, +0xFE,0x00,0x28,0x7E,0xFE,0x00,0x7A,0x7C,0xFE,0x00,0x7A,0x7C,0xFE,0x00,0x80,0x7C, +0xFE,0x00,0xB6,0x7C,0xFE,0x00,0x02,0x7D,0xFE,0x00,0x02,0x7D,0xFE,0x00,0x02,0x7D, +0xFE,0x00,0x02,0x7D,0xFE,0x00,0x02,0x7D,0xFE,0x00,0x02,0x7D,0xFE,0x00,0x02,0x7D, +0xFE,0x00,0x02,0x7D,0xFE,0x00,0x02,0x7D,0xFE,0x00,0x72,0x7C,0xFE,0x00,0x72,0x7C, +0x3A,0x41,0x2A,0x5C,0x2A,0x2E,0x20,0x00,0x20,0x00,0x2E,0x2A,0x20,0x2A,0x2A,0x00, +0x2A,0x2E,0x00,0x00,0x00,0x00,0x39,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x46,0x00, +0x00,0x00,0x4E,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x61,0x00, +0x00,0x00,0x66,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x78,0x00, +0x00,0x00,0x00,0x00,0xFE,0x00,0xD8,0x91,0xFE,0x00,0xDE,0x91,0xFE,0x00,0xEE,0x91, +0xFE,0x00,0xE2,0x91,0xFE,0x00,0xE6,0x91,0xFE,0x00,0x10,0x92,0xFE,0x00,0xF6,0x91, +0xFE,0x00,0xF2,0x91,0xFE,0x00,0xFC,0x91,0xFE,0x00,0xEA,0x91,0xFE,0x00,0x02,0x92, +0xFE,0x00,0x2C,0x92,0x00,0x00,0x1B,0x01,0x00,0x00,0x08,0x0E,0x00,0x00,0x00,0x4B, +0x00,0x00,0x00,0x4D,0x00,0x00,0x7F,0x53,0x00,0x00,0x00,0x00,0xFE,0x00,0x16,0x94, +0xFE,0x00,0x04,0x94,0xFE,0x00,0x3C,0x94,0xFE,0x00,0x46,0x94,0xFE,0x00,0x24,0x94, +0xFE,0x00,0x5A,0x94,0xFE,0x00,0x10,0x98,0xFE,0x00,0xA8,0x98,0xFE,0x00,0x44,0x98, +0xFE,0x00,0xA8,0x98,0xFE,0x00,0xA8,0x98,0xFE,0x00,0x10,0x98,0xFE,0x00,0x32,0x98, +0xFE,0x00,0x10,0x98,0xFE,0x00,0xA8,0x98,0xFE,0x00,0xA8,0x98,0xFE,0x00,0x44,0x98, +0xFE,0x00,0x2C,0x99,0xFE,0x00,0x2C,0x99,0xFE,0x00,0x64,0x99,0xFE,0x00,0x1C,0x9A, +0xFE,0x00,0x54,0x9A,0xFE,0x00,0x54,0x9A,0xFE,0x00,0xFC,0x98,0xFE,0x00,0x54,0x9A, +0xFE,0x00,0xC0,0x98,0xFE,0x00,0xC0,0x98,0xFE,0x00,0xC0,0x99,0xFE,0x00,0xC8,0xA3, +0xFE,0x00,0xF0,0xA3,0xFE,0x00,0xF8,0xA3,0xFE,0x00,0x00,0xA4,0xFE,0x00,0x08,0xA4, +0xFE,0x00,0x6E,0xA4,0xFE,0x00,0x82,0xA4,0xFE,0x00,0x10,0xA4,0xFE,0x00,0xF8,0xA3, +0xFE,0x00,0x28,0xA4,0xFE,0x00,0x28,0xA4,0xFE,0x00,0x00,0xA4,0xFE,0x00,0x4C,0xA4, +0xFE,0x00,0x4C,0xA4,0xFE,0x00,0x08,0xA4,0xFE,0x00,0x96,0xA4,0xFE,0x00,0x9C,0xA4, +0x19,0x00,0x14,0x00,0x1B,0x00,0x16,0x00,0x1B,0x00,0x16,0x00,0x19,0x00,0x19,0x00, +0x1B,0x00,0x14,0x00,0x1B,0x00,0x1B,0x00,0x14,0x00,0x14,0x00,0x14,0x00,0x1B,0x00, +0x1B,0x00,0x14,0x00,0x14,0x00,0x01,0x00,0x01,0x11,0x01,0x00,0x01,0x11,0x01,0x05, +0x01,0x11,0x00,0x00,0x00,0x00,0x01,0x07,0x01,0x11,0x00,0x00,0x00,0x00,0x00,0x00, +0x01,0x11,0x00,0x00,0x01,0x11,0x01,0x06,0x01,0x11,0x01,0x00,0x01,0x11,0x01,0x01, +0x01,0x11,0x01,0x02,0x01,0x11,0x01,0x00,0x11,0x11,0x01,0x00,0x01,0x11,0x01,0x00, +0x01,0x11,0x01,0x04,0x01,0x11,0x01,0x03,0x01,0x11,0x01,0x00,0x11,0x11,0x01,0x00, +0x01,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00, +0x01,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x01,0x00,0x50,0x00,0x50,0x00,0xFE,0x00, +0x7C,0xB1,0xFE,0x00,0x3A,0xB1,0xFE,0x00,0x50,0xB1,0xFE,0x00,0x66,0xB1,0xFE,0x00, +0x3A,0xB1,0xFE,0x00,0xAC,0xC3,0xFE,0x00,0xB2,0xC3,0xFE,0x00,0xB8,0xC3,0xFE,0x00, +0xBE,0xC3,0xFE,0x00,0xC4,0xC3,0xFE,0x00,0xD6,0xC3,0xFE,0x00,0x0C,0xC4,0xFE,0x00, +0x24,0xC4,0xFE,0x00,0x24,0xC4,0xFE,0x00,0x92,0xC4,0xFE,0x00,0x92,0xC4,0xFE,0x00, +0xE8,0xC3,0xFE,0x00,0xFA,0xC3,0xFE,0x00,0x6E,0xC4,0xFE,0x00,0xD0,0xC4,0xFE,0x00, +0xDA,0xC4,0xFE,0x00,0x9A,0xC6,0xFE,0x00,0xE4,0xC4,0xFE,0x00,0x9A,0xC6,0xFE,0x00, +0x9A,0xC6,0xFE,0x00,0x84,0xC5,0xFE,0x00,0x84,0xC5,0xFE,0x00,0xF0,0xC4,0xFE,0x00, +0x9A,0xC6,0xFE,0x00,0x9A,0xC6,0xFE,0x00,0x4A,0xC5,0xFE,0x00,0x72,0xC5,0xFE,0x00, +0x84,0xC5,0xFE,0x00,0x84,0xC5,0xFE,0x00,0x98,0xCE,0xFE,0x00,0x8C,0xCE,0xFE,0x00, +0x8C,0xCE,0xFE,0x00,0xD0,0xCE,0xFE,0x00,0xD0,0xCE,0xFE,0x00,0x98,0xCE,0xFE,0x00, +0xA0,0xCE,0xFE,0x00,0x98,0xCE,0xFE,0x00,0xD0,0xCE,0xFE,0x00,0x8C,0xCE,0xFE,0x00, +0x8C,0xCE,0xFE,0x00,0xD0,0xCE,0xFE,0x00,0x88,0xCE,0x2E,0x2A,0x43,0x41,0x00,0x43, +0x00,0x00,0x00,0x00,0x6C,0x1B,0x1B,0x00,0x00,0x76,0x03,0x00,0x04,0x00,0x05,0x00, +0x06,0x00,0x07,0x00,0x08,0x00,0x09,0x00,0x01,0x00,0x02,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,0x65,0x87,0x21,0x43,0x00,0x00,0x00,0xCA,0xFD,0x00,0x5C,0x9B, +}; diff --git a/MCUME_teensy/teensycolem/.DS_Store b/MCUME_teensy/teensycolem/.DS_Store new file mode 100644 index 0000000..f7a8f99 Binary files /dev/null and b/MCUME_teensy/teensycolem/.DS_Store differ diff --git a/MCUME_teensy/teensycolem/AudioPlaySystem.cpp b/MCUME_teensy/teensycolem/AudioPlaySystem.cpp new file mode 100644 index 0000000..8fea18d --- /dev/null +++ b/MCUME_teensy/teensycolem/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensycolem/AudioPlaySystem.h b/MCUME_teensy/teensycolem/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensycolem/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensycolem/Codes.h b/MCUME_teensy/teensycolem/Codes.h new file mode 100644 index 0000000..28f1d1b --- /dev/null +++ b/MCUME_teensy/teensycolem/Codes.h @@ -0,0 +1,378 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Codes.h **/ +/** **/ +/** This file contains implementation for the main table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=6;M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { R->ICount-=6;M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=6;M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { R->ICount-=6;M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->HL.B.h);break; +case ADD_L: M_ADD(R->HL.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->HL.W);M_ADD(I);break; +case ADD_BYTE: I=RdZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->HL.B.h);break; +case SUB_L: M_SUB(R->HL.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->HL.W);M_SUB(I);break; +case SUB_BYTE: I=RdZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->HL.B.h);break; +case AND_L: M_AND(R->HL.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->HL.W);M_AND(I);break; +case AND_BYTE: I=RdZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->HL.B.h);break; +case OR_L: M_OR(R->HL.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->HL.W);M_OR(I);break; +case OR_BYTE: I=RdZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->HL.B.h);break; +case ADC_L: M_ADC(R->HL.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->HL.W);M_ADC(I);break; +case ADC_BYTE: I=RdZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->HL.B.h);break; +case SBC_L: M_SBC(R->HL.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->HL.W);M_SBC(I);break; +case SBC_BYTE: I=RdZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->HL.B.h);break; +case XOR_L: M_XOR(R->HL.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->HL.W);M_XOR(I);break; +case XOR_BYTE: I=RdZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->HL.B.h);break; +case CP_L: M_CP(R->HL.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->HL.W);M_CP(I);break; +case CP_BYTE: I=RdZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(HL);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->HL.W;break; +case LD_SP_HL: R->SP.W=R->HL.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(HL,BC);break; +case ADD_HL_DE: M_ADDW(HL,DE);break; +case ADD_HL_HL: M_ADDW(HL,HL);break; +case ADD_HL_SP: M_ADDW(HL,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->HL.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->HL.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->HL.B.h);break; +case DEC_L: M_DEC(R->HL.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->HL.W);M_DEC(I);WrZ80(R->HL.W,I);break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->HL.B.h);break; +case INC_L: M_INC(R->HL.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->HL.W);M_INC(I);WrZ80(R->HL.W,I);break; + +case RLCA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(HL);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(HL);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: OutZ80(RdZ80(R->PC.W++),R->AF.B.h);break; +case INA: R->AF.B.h=InZ80(RdZ80(R->PC.W++));break; +case HALT: R->PC.W--;R->IFF|=0x80;R->ICount=0;break; + +case DI: + R->IFF&=0xFE; + break; +case EI: + R->IFF|=0x01; + if(R->IRequest!=INT_NONE) + { + R->IFF|=0x20; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->HL.B.h=R->BC.B.h;break; +case LD_L_B: R->HL.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: WrZ80(R->HL.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->HL.B.h=R->BC.B.l;break; +case LD_L_C: R->HL.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: WrZ80(R->HL.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->HL.B.h=R->DE.B.h;break; +case LD_L_D: R->HL.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: WrZ80(R->HL.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->HL.B.h=R->DE.B.l;break; +case LD_L_E: R->HL.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: WrZ80(R->HL.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->HL.B.h;break; +case LD_C_H: R->BC.B.l=R->HL.B.h;break; +case LD_D_H: R->DE.B.h=R->HL.B.h;break; +case LD_E_H: R->DE.B.l=R->HL.B.h;break; +case LD_H_H: R->HL.B.h=R->HL.B.h;break; +case LD_L_H: R->HL.B.l=R->HL.B.h;break; +case LD_A_H: R->AF.B.h=R->HL.B.h;break; +case LD_xHL_H: WrZ80(R->HL.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->HL.B.l;break; +case LD_C_L: R->BC.B.l=R->HL.B.l;break; +case LD_D_L: R->DE.B.h=R->HL.B.l;break; +case LD_E_L: R->DE.B.l=R->HL.B.l;break; +case LD_H_L: R->HL.B.h=R->HL.B.l;break; +case LD_L_L: R->HL.B.l=R->HL.B.l;break; +case LD_A_L: R->AF.B.h=R->HL.B.l;break; +case LD_xHL_L: WrZ80(R->HL.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->HL.B.h=R->AF.B.h;break; +case LD_L_A: R->HL.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: WrZ80(R->HL.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->HL.W);break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->HL.W);break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->HL.W);break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->HL.W);break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->HL.W);break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->HL.W);break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->HL.W);break; + +case LD_B_BYTE: R->BC.B.h=RdZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=RdZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=RdZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=RdZ80(R->PC.W++);break; +case LD_H_BYTE: R->HL.B.h=RdZ80(R->PC.W++);break; +case LD_L_BYTE: R->HL.B.l=RdZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=RdZ80(R->PC.W++);break; +case LD_xHL_BYTE: WrZ80(R->HL.W,RdZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; + +case LD_HL_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->HL.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->HL.B.h); + R->HL.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; + +default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-1),R->PC.W-1 + ); + break; diff --git a/MCUME_teensy/teensycolem/CodesCB.h b/MCUME_teensy/teensycolem/CodesCB.h new file mode 100644 index 0000000..c8a5f91 --- /dev/null +++ b/MCUME_teensy/teensycolem/CodesCB.h @@ -0,0 +1,204 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesCB.h **/ +/** **/ +/** This file contains implementation for the CB table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_B: M_RLC(R->BC.B.h);break; case RLC_C: M_RLC(R->BC.B.l);break; +case RLC_D: M_RLC(R->DE.B.h);break; case RLC_E: M_RLC(R->DE.B.l);break; +case RLC_H: M_RLC(R->HL.B.h);break; case RLC_L: M_RLC(R->HL.B.l);break; +case RLC_xHL: I=RdZ80(R->HL.W);M_RLC(I);WrZ80(R->HL.W,I);break; +case RLC_A: M_RLC(R->AF.B.h);break; + +case RRC_B: M_RRC(R->BC.B.h);break; case RRC_C: M_RRC(R->BC.B.l);break; +case RRC_D: M_RRC(R->DE.B.h);break; case RRC_E: M_RRC(R->DE.B.l);break; +case RRC_H: M_RRC(R->HL.B.h);break; case RRC_L: M_RRC(R->HL.B.l);break; +case RRC_xHL: I=RdZ80(R->HL.W);M_RRC(I);WrZ80(R->HL.W,I);break; +case RRC_A: M_RRC(R->AF.B.h);break; + +case RL_B: M_RL(R->BC.B.h);break; case RL_C: M_RL(R->BC.B.l);break; +case RL_D: M_RL(R->DE.B.h);break; case RL_E: M_RL(R->DE.B.l);break; +case RL_H: M_RL(R->HL.B.h);break; case RL_L: M_RL(R->HL.B.l);break; +case RL_xHL: I=RdZ80(R->HL.W);M_RL(I);WrZ80(R->HL.W,I);break; +case RL_A: M_RL(R->AF.B.h);break; + +case RR_B: M_RR(R->BC.B.h);break; case RR_C: M_RR(R->BC.B.l);break; +case RR_D: M_RR(R->DE.B.h);break; case RR_E: M_RR(R->DE.B.l);break; +case RR_H: M_RR(R->HL.B.h);break; case RR_L: M_RR(R->HL.B.l);break; +case RR_xHL: I=RdZ80(R->HL.W);M_RR(I);WrZ80(R->HL.W,I);break; +case RR_A: M_RR(R->AF.B.h);break; + +case SLA_B: M_SLA(R->BC.B.h);break; case SLA_C: M_SLA(R->BC.B.l);break; +case SLA_D: M_SLA(R->DE.B.h);break; case SLA_E: M_SLA(R->DE.B.l);break; +case SLA_H: M_SLA(R->HL.B.h);break; case SLA_L: M_SLA(R->HL.B.l);break; +case SLA_xHL: I=RdZ80(R->HL.W);M_SLA(I);WrZ80(R->HL.W,I);break; +case SLA_A: M_SLA(R->AF.B.h);break; + +case SRA_B: M_SRA(R->BC.B.h);break; case SRA_C: M_SRA(R->BC.B.l);break; +case SRA_D: M_SRA(R->DE.B.h);break; case SRA_E: M_SRA(R->DE.B.l);break; +case SRA_H: M_SRA(R->HL.B.h);break; case SRA_L: M_SRA(R->HL.B.l);break; +case SRA_xHL: I=RdZ80(R->HL.W);M_SRA(I);WrZ80(R->HL.W,I);break; +case SRA_A: M_SRA(R->AF.B.h);break; + +case SLL_B: M_SLL(R->BC.B.h);break; case SLL_C: M_SLL(R->BC.B.l);break; +case SLL_D: M_SLL(R->DE.B.h);break; case SLL_E: M_SLL(R->DE.B.l);break; +case SLL_H: M_SLL(R->HL.B.h);break; case SLL_L: M_SLL(R->HL.B.l);break; +case SLL_xHL: I=RdZ80(R->HL.W);M_SLL(I);WrZ80(R->HL.W,I);break; +case SLL_A: M_SLL(R->AF.B.h);break; + +case SRL_B: M_SRL(R->BC.B.h);break; case SRL_C: M_SRL(R->BC.B.l);break; +case SRL_D: M_SRL(R->DE.B.h);break; case SRL_E: M_SRL(R->DE.B.l);break; +case SRL_H: M_SRL(R->HL.B.h);break; case SRL_L: M_SRL(R->HL.B.l);break; +case SRL_xHL: I=RdZ80(R->HL.W);M_SRL(I);WrZ80(R->HL.W,I);break; +case SRL_A: M_SRL(R->AF.B.h);break; + +case BIT0_B: M_BIT(0,R->BC.B.h);break; case BIT0_C: M_BIT(0,R->BC.B.l);break; +case BIT0_D: M_BIT(0,R->DE.B.h);break; case BIT0_E: M_BIT(0,R->DE.B.l);break; +case BIT0_H: M_BIT(0,R->HL.B.h);break; case BIT0_L: M_BIT(0,R->HL.B.l);break; +case BIT0_xHL: I=RdZ80(R->HL.W);M_BIT(0,I);break; +case BIT0_A: M_BIT(0,R->AF.B.h);break; + +case BIT1_B: M_BIT(1,R->BC.B.h);break; case BIT1_C: M_BIT(1,R->BC.B.l);break; +case BIT1_D: M_BIT(1,R->DE.B.h);break; case BIT1_E: M_BIT(1,R->DE.B.l);break; +case BIT1_H: M_BIT(1,R->HL.B.h);break; case BIT1_L: M_BIT(1,R->HL.B.l);break; +case BIT1_xHL: I=RdZ80(R->HL.W);M_BIT(1,I);break; +case BIT1_A: M_BIT(1,R->AF.B.h);break; + +case BIT2_B: M_BIT(2,R->BC.B.h);break; case BIT2_C: M_BIT(2,R->BC.B.l);break; +case BIT2_D: M_BIT(2,R->DE.B.h);break; case BIT2_E: M_BIT(2,R->DE.B.l);break; +case BIT2_H: M_BIT(2,R->HL.B.h);break; case BIT2_L: M_BIT(2,R->HL.B.l);break; +case BIT2_xHL: I=RdZ80(R->HL.W);M_BIT(2,I);break; +case BIT2_A: M_BIT(2,R->AF.B.h);break; + +case BIT3_B: M_BIT(3,R->BC.B.h);break; case BIT3_C: M_BIT(3,R->BC.B.l);break; +case BIT3_D: M_BIT(3,R->DE.B.h);break; case BIT3_E: M_BIT(3,R->DE.B.l);break; +case BIT3_H: M_BIT(3,R->HL.B.h);break; case BIT3_L: M_BIT(3,R->HL.B.l);break; +case BIT3_xHL: I=RdZ80(R->HL.W);M_BIT(3,I);break; +case BIT3_A: M_BIT(3,R->AF.B.h);break; + +case BIT4_B: M_BIT(4,R->BC.B.h);break; case BIT4_C: M_BIT(4,R->BC.B.l);break; +case BIT4_D: M_BIT(4,R->DE.B.h);break; case BIT4_E: M_BIT(4,R->DE.B.l);break; +case BIT4_H: M_BIT(4,R->HL.B.h);break; case BIT4_L: M_BIT(4,R->HL.B.l);break; +case BIT4_xHL: I=RdZ80(R->HL.W);M_BIT(4,I);break; +case BIT4_A: M_BIT(4,R->AF.B.h);break; + +case BIT5_B: M_BIT(5,R->BC.B.h);break; case BIT5_C: M_BIT(5,R->BC.B.l);break; +case BIT5_D: M_BIT(5,R->DE.B.h);break; case BIT5_E: M_BIT(5,R->DE.B.l);break; +case BIT5_H: M_BIT(5,R->HL.B.h);break; case BIT5_L: M_BIT(5,R->HL.B.l);break; +case BIT5_xHL: I=RdZ80(R->HL.W);M_BIT(5,I);break; +case BIT5_A: M_BIT(5,R->AF.B.h);break; + +case BIT6_B: M_BIT(6,R->BC.B.h);break; case BIT6_C: M_BIT(6,R->BC.B.l);break; +case BIT6_D: M_BIT(6,R->DE.B.h);break; case BIT6_E: M_BIT(6,R->DE.B.l);break; +case BIT6_H: M_BIT(6,R->HL.B.h);break; case BIT6_L: M_BIT(6,R->HL.B.l);break; +case BIT6_xHL: I=RdZ80(R->HL.W);M_BIT(6,I);break; +case BIT6_A: M_BIT(6,R->AF.B.h);break; + +case BIT7_B: M_BIT(7,R->BC.B.h);break; case BIT7_C: M_BIT(7,R->BC.B.l);break; +case BIT7_D: M_BIT(7,R->DE.B.h);break; case BIT7_E: M_BIT(7,R->DE.B.l);break; +case BIT7_H: M_BIT(7,R->HL.B.h);break; case BIT7_L: M_BIT(7,R->HL.B.l);break; +case BIT7_xHL: I=RdZ80(R->HL.W);M_BIT(7,I);break; +case BIT7_A: M_BIT(7,R->AF.B.h);break; + +case RES0_B: M_RES(0,R->BC.B.h);break; case RES0_C: M_RES(0,R->BC.B.l);break; +case RES0_D: M_RES(0,R->DE.B.h);break; case RES0_E: M_RES(0,R->DE.B.l);break; +case RES0_H: M_RES(0,R->HL.B.h);break; case RES0_L: M_RES(0,R->HL.B.l);break; +case RES0_xHL: I=RdZ80(R->HL.W);M_RES(0,I);WrZ80(R->HL.W,I);break; +case RES0_A: M_RES(0,R->AF.B.h);break; + +case RES1_B: M_RES(1,R->BC.B.h);break; case RES1_C: M_RES(1,R->BC.B.l);break; +case RES1_D: M_RES(1,R->DE.B.h);break; case RES1_E: M_RES(1,R->DE.B.l);break; +case RES1_H: M_RES(1,R->HL.B.h);break; case RES1_L: M_RES(1,R->HL.B.l);break; +case RES1_xHL: I=RdZ80(R->HL.W);M_RES(1,I);WrZ80(R->HL.W,I);break; +case RES1_A: M_RES(1,R->AF.B.h);break; + +case RES2_B: M_RES(2,R->BC.B.h);break; case RES2_C: M_RES(2,R->BC.B.l);break; +case RES2_D: M_RES(2,R->DE.B.h);break; case RES2_E: M_RES(2,R->DE.B.l);break; +case RES2_H: M_RES(2,R->HL.B.h);break; case RES2_L: M_RES(2,R->HL.B.l);break; +case RES2_xHL: I=RdZ80(R->HL.W);M_RES(2,I);WrZ80(R->HL.W,I);break; +case RES2_A: M_RES(2,R->AF.B.h);break; + +case RES3_B: M_RES(3,R->BC.B.h);break; case RES3_C: M_RES(3,R->BC.B.l);break; +case RES3_D: M_RES(3,R->DE.B.h);break; case RES3_E: M_RES(3,R->DE.B.l);break; +case RES3_H: M_RES(3,R->HL.B.h);break; case RES3_L: M_RES(3,R->HL.B.l);break; +case RES3_xHL: I=RdZ80(R->HL.W);M_RES(3,I);WrZ80(R->HL.W,I);break; +case RES3_A: M_RES(3,R->AF.B.h);break; + +case RES4_B: M_RES(4,R->BC.B.h);break; case RES4_C: M_RES(4,R->BC.B.l);break; +case RES4_D: M_RES(4,R->DE.B.h);break; case RES4_E: M_RES(4,R->DE.B.l);break; +case RES4_H: M_RES(4,R->HL.B.h);break; case RES4_L: M_RES(4,R->HL.B.l);break; +case RES4_xHL: I=RdZ80(R->HL.W);M_RES(4,I);WrZ80(R->HL.W,I);break; +case RES4_A: M_RES(4,R->AF.B.h);break; + +case RES5_B: M_RES(5,R->BC.B.h);break; case RES5_C: M_RES(5,R->BC.B.l);break; +case RES5_D: M_RES(5,R->DE.B.h);break; case RES5_E: M_RES(5,R->DE.B.l);break; +case RES5_H: M_RES(5,R->HL.B.h);break; case RES5_L: M_RES(5,R->HL.B.l);break; +case RES5_xHL: I=RdZ80(R->HL.W);M_RES(5,I);WrZ80(R->HL.W,I);break; +case RES5_A: M_RES(5,R->AF.B.h);break; + +case RES6_B: M_RES(6,R->BC.B.h);break; case RES6_C: M_RES(6,R->BC.B.l);break; +case RES6_D: M_RES(6,R->DE.B.h);break; case RES6_E: M_RES(6,R->DE.B.l);break; +case RES6_H: M_RES(6,R->HL.B.h);break; case RES6_L: M_RES(6,R->HL.B.l);break; +case RES6_xHL: I=RdZ80(R->HL.W);M_RES(6,I);WrZ80(R->HL.W,I);break; +case RES6_A: M_RES(6,R->AF.B.h);break; + +case RES7_B: M_RES(7,R->BC.B.h);break; case RES7_C: M_RES(7,R->BC.B.l);break; +case RES7_D: M_RES(7,R->DE.B.h);break; case RES7_E: M_RES(7,R->DE.B.l);break; +case RES7_H: M_RES(7,R->HL.B.h);break; case RES7_L: M_RES(7,R->HL.B.l);break; +case RES7_xHL: I=RdZ80(R->HL.W);M_RES(7,I);WrZ80(R->HL.W,I);break; +case RES7_A: M_RES(7,R->AF.B.h);break; + +case SET0_B: M_SET(0,R->BC.B.h);break; case SET0_C: M_SET(0,R->BC.B.l);break; +case SET0_D: M_SET(0,R->DE.B.h);break; case SET0_E: M_SET(0,R->DE.B.l);break; +case SET0_H: M_SET(0,R->HL.B.h);break; case SET0_L: M_SET(0,R->HL.B.l);break; +case SET0_xHL: I=RdZ80(R->HL.W);M_SET(0,I);WrZ80(R->HL.W,I);break; +case SET0_A: M_SET(0,R->AF.B.h);break; + +case SET1_B: M_SET(1,R->BC.B.h);break; case SET1_C: M_SET(1,R->BC.B.l);break; +case SET1_D: M_SET(1,R->DE.B.h);break; case SET1_E: M_SET(1,R->DE.B.l);break; +case SET1_H: M_SET(1,R->HL.B.h);break; case SET1_L: M_SET(1,R->HL.B.l);break; +case SET1_xHL: I=RdZ80(R->HL.W);M_SET(1,I);WrZ80(R->HL.W,I);break; +case SET1_A: M_SET(1,R->AF.B.h);break; + +case SET2_B: M_SET(2,R->BC.B.h);break; case SET2_C: M_SET(2,R->BC.B.l);break; +case SET2_D: M_SET(2,R->DE.B.h);break; case SET2_E: M_SET(2,R->DE.B.l);break; +case SET2_H: M_SET(2,R->HL.B.h);break; case SET2_L: M_SET(2,R->HL.B.l);break; +case SET2_xHL: I=RdZ80(R->HL.W);M_SET(2,I);WrZ80(R->HL.W,I);break; +case SET2_A: M_SET(2,R->AF.B.h);break; + +case SET3_B: M_SET(3,R->BC.B.h);break; case SET3_C: M_SET(3,R->BC.B.l);break; +case SET3_D: M_SET(3,R->DE.B.h);break; case SET3_E: M_SET(3,R->DE.B.l);break; +case SET3_H: M_SET(3,R->HL.B.h);break; case SET3_L: M_SET(3,R->HL.B.l);break; +case SET3_xHL: I=RdZ80(R->HL.W);M_SET(3,I);WrZ80(R->HL.W,I);break; +case SET3_A: M_SET(3,R->AF.B.h);break; + +case SET4_B: M_SET(4,R->BC.B.h);break; case SET4_C: M_SET(4,R->BC.B.l);break; +case SET4_D: M_SET(4,R->DE.B.h);break; case SET4_E: M_SET(4,R->DE.B.l);break; +case SET4_H: M_SET(4,R->HL.B.h);break; case SET4_L: M_SET(4,R->HL.B.l);break; +case SET4_xHL: I=RdZ80(R->HL.W);M_SET(4,I);WrZ80(R->HL.W,I);break; +case SET4_A: M_SET(4,R->AF.B.h);break; + +case SET5_B: M_SET(5,R->BC.B.h);break; case SET5_C: M_SET(5,R->BC.B.l);break; +case SET5_D: M_SET(5,R->DE.B.h);break; case SET5_E: M_SET(5,R->DE.B.l);break; +case SET5_H: M_SET(5,R->HL.B.h);break; case SET5_L: M_SET(5,R->HL.B.l);break; +case SET5_xHL: I=RdZ80(R->HL.W);M_SET(5,I);WrZ80(R->HL.W,I);break; +case SET5_A: M_SET(5,R->AF.B.h);break; + +case SET6_B: M_SET(6,R->BC.B.h);break; case SET6_C: M_SET(6,R->BC.B.l);break; +case SET6_D: M_SET(6,R->DE.B.h);break; case SET6_E: M_SET(6,R->DE.B.l);break; +case SET6_H: M_SET(6,R->HL.B.h);break; case SET6_L: M_SET(6,R->HL.B.l);break; +case SET6_xHL: I=RdZ80(R->HL.W);M_SET(6,I);WrZ80(R->HL.W,I);break; +case SET6_A: M_SET(6,R->AF.B.h);break; + +case SET7_B: M_SET(7,R->BC.B.h);break; case SET7_C: M_SET(7,R->BC.B.l);break; +case SET7_D: M_SET(7,R->DE.B.h);break; case SET7_E: M_SET(7,R->DE.B.l);break; +case SET7_H: M_SET(7,R->HL.B.h);break; case SET7_L: M_SET(7,R->HL.B.l);break; +case SET7_xHL: I=RdZ80(R->HL.W);M_SET(7,I);WrZ80(R->HL.W,I);break; +case SET7_A: M_SET(7,R->AF.B.h);break; diff --git a/MCUME_teensy/teensycolem/CodesED.h b/MCUME_teensy/teensycolem/CodesED.h new file mode 100644 index 0000000..56a7c69 --- /dev/null +++ b/MCUME_teensy/teensycolem/CodesED.h @@ -0,0 +1,282 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesED.h **/ +/** **/ +/** This file contains implementation for the ED table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +/** This is a special patch for emulating BIOS calls: ********/ +case DB_FE: PatchZ80(R);break; +/*************************************************************/ + +case ADC_HL_BC: M_ADCW(BC);break; +case ADC_HL_DE: M_ADCW(DE);break; +case ADC_HL_HL: M_ADCW(HL);break; +case ADC_HL_SP: M_ADCW(SP);break; + +case SBC_HL_BC: M_SBCW(BC);break; +case SBC_HL_DE: M_SBCW(DE);break; +case SBC_HL_HL: M_SBCW(HL);break; +case SBC_HL_SP: M_SBCW(SP);break; + +case LD_xWORDe_HL: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; +case LD_xWORDe_DE: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->DE.B.l); + WrZ80(J.W,R->DE.B.h); + break; +case LD_xWORDe_BC: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->BC.B.l); + WrZ80(J.W,R->BC.B.h); + break; +case LD_xWORDe_SP: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->SP.B.l); + WrZ80(J.W,R->SP.B.h); + break; + +case LD_HL_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; +case LD_DE_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->DE.B.l=RdZ80(J.W++); + R->DE.B.h=RdZ80(J.W); + break; +case LD_BC_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->BC.B.l=RdZ80(J.W++); + R->BC.B.h=RdZ80(J.W); + break; +case LD_SP_xWORDe: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->SP.B.l=RdZ80(J.W++); + R->SP.B.h=RdZ80(J.W); + break; + +case RRD: + I=RdZ80(R->HL.W); + J.B.l=(I>>4)|(R->AF.B.h<<4); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I&0x0F)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; +case RLD: + I=RdZ80(R->HL.W); + J.B.l=(I<<4)|(R->AF.B.h&0x0F); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I>>4)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; + +case LD_A_I: + R->AF.B.h=R->I; + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&1? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_A_R: + R->R++; + R->AF.B.h=(byte)(R->R-R->ICount); + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&1? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_I_A: R->I=R->AF.B.h;break; +case LD_R_A: break; + +case IM_0: R->IFF&=0xF9;break; +case IM_1: R->IFF=(R->IFF&0xF9)|2;break; +case IM_2: R->IFF=(R->IFF&0xF9)|4;break; + +case RETI: M_RET;break; +case RETN: if(R->IFF&0x40) R->IFF|=0x01; else R->IFF&=0xFE; + M_RET;break; + +case NEG: I=R->AF.B.h;R->AF.B.h=0;M_SUB(I);break; + +case IN_B_xC: M_IN(R->BC.B.h);break; +case IN_C_xC: M_IN(R->BC.B.l);break; +case IN_D_xC: M_IN(R->DE.B.h);break; +case IN_E_xC: M_IN(R->DE.B.l);break; +case IN_H_xC: M_IN(R->HL.B.h);break; +case IN_L_xC: M_IN(R->HL.B.l);break; +case IN_A_xC: M_IN(R->AF.B.h);break; +case IN_F_xC: M_IN(J.B.l);break; + +case OUT_xC_B: OutZ80(R->BC.B.l,R->BC.B.h);break; +case OUT_xC_C: OutZ80(R->BC.B.l,R->BC.B.l);break; +case OUT_xC_D: OutZ80(R->BC.B.l,R->DE.B.h);break; +case OUT_xC_E: OutZ80(R->BC.B.l,R->DE.B.l);break; +case OUT_xC_H: OutZ80(R->BC.B.l,R->HL.B.h);break; +case OUT_xC_L: OutZ80(R->BC.B.l,R->HL.B.l);break; +case OUT_xC_A: OutZ80(R->BC.B.l,R->AF.B.h);break; + +case INI: + WrZ80(R->HL.W++,InZ80(R->BC.B.l)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INIR: + do + { + WrZ80(R->HL.W++,InZ80(R->BC.B.l)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case IND: + WrZ80(R->HL.W--,InZ80(R->BC.B.l)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INDR: + do + { + WrZ80(R->HL.W--,InZ80(R->BC.B.l)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case OUTI: + OutZ80(R->BC.B.l,RdZ80(R->HL.W++)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case OTIR: + do + { + OutZ80(R->BC.B.l,RdZ80(R->HL.W++)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case OUTD: + OutZ80(R->BC.B.l,RdZ80(R->HL.W--)); + R->BC.B.h--; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case OTDR: + do + { + OutZ80(R->BC.B.l,RdZ80(R->HL.W--)); + R->BC.B.h--;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case LDI: + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + R->BC.W--; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDIR: + do + { + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case LDD: + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + R->BC.W--; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDDR: + do + { + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case CPI: + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + R->BC.W--; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPIR: + do + { + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&J.B.l&&(R->ICount>0)); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; + +case CPD: + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + R->BC.W--; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPDR: + do + { + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + R->BC.W--;R->ICount-=21; + } + while(R->BC.W&&J.B.l); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; diff --git a/MCUME_teensy/teensycolem/CodesXCB.h b/MCUME_teensy/teensycolem/CodesXCB.h new file mode 100644 index 0000000..0b84ca2 --- /dev/null +++ b/MCUME_teensy/teensycolem/CodesXCB.h @@ -0,0 +1,64 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXCB.h **/ +/** **/ +/** This file contains implementation for FD/DD-CB tables **/ +/** of Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_xHL: I=RdZ80(J.W);M_RLC(I);WrZ80(J.W,I);break; +case RRC_xHL: I=RdZ80(J.W);M_RRC(I);WrZ80(J.W,I);break; +case RL_xHL: I=RdZ80(J.W);M_RL(I);WrZ80(J.W,I);break; +case RR_xHL: I=RdZ80(J.W);M_RR(I);WrZ80(J.W,I);break; +case SLA_xHL: I=RdZ80(J.W);M_SLA(I);WrZ80(J.W,I);break; +case SRA_xHL: I=RdZ80(J.W);M_SRA(I);WrZ80(J.W,I);break; +case SLL_xHL: I=RdZ80(J.W);M_SLL(I);WrZ80(J.W,I);break; +case SRL_xHL: I=RdZ80(J.W);M_SRL(I);WrZ80(J.W,I);break; + +case BIT0_B: case BIT0_C: case BIT0_D: case BIT0_E: +case BIT0_H: case BIT0_L: case BIT0_A: +case BIT0_xHL: I=RdZ80(J.W);M_BIT(0,I);break; +case BIT1_B: case BIT1_C: case BIT1_D: case BIT1_E: +case BIT1_H: case BIT1_L: case BIT1_A: +case BIT1_xHL: I=RdZ80(J.W);M_BIT(1,I);break; +case BIT2_B: case BIT2_C: case BIT2_D: case BIT2_E: +case BIT2_H: case BIT2_L: case BIT2_A: +case BIT2_xHL: I=RdZ80(J.W);M_BIT(2,I);break; +case BIT3_B: case BIT3_C: case BIT3_D: case BIT3_E: +case BIT3_H: case BIT3_L: case BIT3_A: +case BIT3_xHL: I=RdZ80(J.W);M_BIT(3,I);break; +case BIT4_B: case BIT4_C: case BIT4_D: case BIT4_E: +case BIT4_H: case BIT4_L: case BIT4_A: +case BIT4_xHL: I=RdZ80(J.W);M_BIT(4,I);break; +case BIT5_B: case BIT5_C: case BIT5_D: case BIT5_E: +case BIT5_H: case BIT5_L: case BIT5_A: +case BIT5_xHL: I=RdZ80(J.W);M_BIT(5,I);break; +case BIT6_B: case BIT6_C: case BIT6_D: case BIT6_E: +case BIT6_H: case BIT6_L: case BIT6_A: +case BIT6_xHL: I=RdZ80(J.W);M_BIT(6,I);break; +case BIT7_B: case BIT7_C: case BIT7_D: case BIT7_E: +case BIT7_H: case BIT7_L: case BIT7_A: +case BIT7_xHL: I=RdZ80(J.W);M_BIT(7,I);break; + +case RES0_xHL: I=RdZ80(J.W);M_RES(0,I);WrZ80(J.W,I);break; +case RES1_xHL: I=RdZ80(J.W);M_RES(1,I);WrZ80(J.W,I);break; +case RES2_xHL: I=RdZ80(J.W);M_RES(2,I);WrZ80(J.W,I);break; +case RES3_xHL: I=RdZ80(J.W);M_RES(3,I);WrZ80(J.W,I);break; +case RES4_xHL: I=RdZ80(J.W);M_RES(4,I);WrZ80(J.W,I);break; +case RES5_xHL: I=RdZ80(J.W);M_RES(5,I);WrZ80(J.W,I);break; +case RES6_xHL: I=RdZ80(J.W);M_RES(6,I);WrZ80(J.W,I);break; +case RES7_xHL: I=RdZ80(J.W);M_RES(7,I);WrZ80(J.W,I);break; + +case SET0_xHL: I=RdZ80(J.W);M_SET(0,I);WrZ80(J.W,I);break; +case SET1_xHL: I=RdZ80(J.W);M_SET(1,I);WrZ80(J.W,I);break; +case SET2_xHL: I=RdZ80(J.W);M_SET(2,I);WrZ80(J.W,I);break; +case SET3_xHL: I=RdZ80(J.W);M_SET(3,I);WrZ80(J.W,I);break; +case SET4_xHL: I=RdZ80(J.W);M_SET(4,I);WrZ80(J.W,I);break; +case SET5_xHL: I=RdZ80(J.W);M_SET(5,I);WrZ80(J.W,I);break; +case SET6_xHL: I=RdZ80(J.W);M_SET(6,I);WrZ80(J.W,I);break; +case SET7_xHL: I=RdZ80(J.W);M_SET(7,I);WrZ80(J.W,I);break; diff --git a/MCUME_teensy/teensycolem/CodesXX.h b/MCUME_teensy/teensycolem/CodesXX.h new file mode 100644 index 0000000..98733cd --- /dev/null +++ b/MCUME_teensy/teensycolem/CodesXX.h @@ -0,0 +1,388 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXX.h **/ +/** **/ +/** This file contains implementation for FD/DD tables of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->XX.B.h);break; +case ADD_L: M_ADD(R->XX.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_ADD(I);break; +case ADD_BYTE: I=RdZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->XX.B.h);break; +case SUB_L: M_SUB(R->XX.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_SUB(I);break; +case SUB_BYTE: I=RdZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->XX.B.h);break; +case AND_L: M_AND(R->XX.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_AND(I);break; +case AND_BYTE: I=RdZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->XX.B.h);break; +case OR_L: M_OR(R->XX.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_OR(I);break; +case OR_BYTE: I=RdZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->XX.B.h);break; +case ADC_L: M_ADC(R->XX.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_ADC(I);break; +case ADC_BYTE: I=RdZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->XX.B.h);break; +case SBC_L: M_SBC(R->XX.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_SBC(I);break; +case SBC_BYTE: I=RdZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->XX.B.h);break; +case XOR_L: M_XOR(R->XX.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_XOR(I);break; +case XOR_BYTE: I=RdZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->XX.B.h);break; +case CP_L: M_CP(R->XX.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++)); + M_CP(I);break; +case CP_BYTE: I=RdZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(XX);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->XX.W;break; +case LD_SP_HL: R->SP.W=R->XX.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(XX,BC);break; +case ADD_HL_DE: M_ADDW(XX,DE);break; +case ADD_HL_HL: M_ADDW(XX,XX);break; +case ADD_HL_SP: M_ADDW(XX,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->XX.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->XX.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->XX.B.h);break; +case DEC_L: M_DEC(R->XX.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_DEC(I); + WrZ80(R->XX.W+(offset)RdZ80(R->PC.W++),I); + break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->XX.B.h);break; +case INC_L: M_INC(R->XX.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_INC(I); + WrZ80(R->XX.W+(offset)RdZ80(R->PC.W++),I); + break; + +case RLCA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(XX);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(XX);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: OutZ80(RdZ80(R->PC.W++),R->AF.B.h);break; +case INA: R->AF.B.h=InZ80(RdZ80(R->PC.W++));break; + +case DI: + R->IFF&=0xFE; + break; +case EI: + R->IFF|=0x01; + if(R->IRequest!=INT_NONE) + { + R->IFF|=0x20; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->XX.B.h=R->BC.B.h;break; +case LD_L_B: R->XX.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->XX.B.h=R->BC.B.l;break; +case LD_L_C: R->XX.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->XX.B.h=R->DE.B.h;break; +case LD_L_D: R->XX.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->XX.B.h=R->DE.B.l;break; +case LD_L_E: R->XX.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->XX.B.h;break; +case LD_C_H: R->BC.B.l=R->XX.B.h;break; +case LD_D_H: R->DE.B.h=R->XX.B.h;break; +case LD_E_H: R->DE.B.l=R->XX.B.h;break; +case LD_H_H: R->XX.B.h=R->XX.B.h;break; +case LD_L_H: R->XX.B.l=R->XX.B.h;break; +case LD_A_H: R->AF.B.h=R->XX.B.h;break; +case LD_xHL_H: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->XX.B.l;break; +case LD_C_L: R->BC.B.l=R->XX.B.l;break; +case LD_D_L: R->DE.B.h=R->XX.B.l;break; +case LD_E_L: R->DE.B.l=R->XX.B.l;break; +case LD_H_L: R->XX.B.h=R->XX.B.l;break; +case LD_L_L: R->XX.B.l=R->XX.B.l;break; +case LD_A_L: R->AF.B.h=R->XX.B.l;break; +case LD_xHL_L: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->XX.B.h=R->AF.B.h;break; +case LD_L_A: R->XX.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W++));break; + +case LD_B_BYTE: R->BC.B.h=RdZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=RdZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=RdZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=RdZ80(R->PC.W++);break; +case LD_H_BYTE: R->XX.B.h=RdZ80(R->PC.W++);break; +case LD_L_BYTE: R->XX.B.l=RdZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=RdZ80(R->PC.W++);break; +case LD_xHL_BYTE: J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + WrZ80(J.W,RdZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W++,R->XX.B.l); + WrZ80(J.W,R->XX.B.h); + break; + +case LD_HL_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->XX.B.l=RdZ80(J.W++); + R->XX.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=RdZ80(R->PC.W++); + J.B.h=RdZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->XX.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->XX.B.h); + R->XX.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; diff --git a/MCUME_teensy/teensycolem/Colem.c b/MCUME_teensy/teensycolem/Colem.c new file mode 100644 index 0000000..99c1487 --- /dev/null +++ b/MCUME_teensy/teensycolem/Colem.c @@ -0,0 +1,898 @@ +#include "options.h" + +#include "Z80.h" /* Z80 CPU emulation */ +#include "SN76489.h" /* SN76489 PSG emulation */ +#include +#include + +#include "emuapi.h" + + +/************************************** +* Local macros/typedef +**************************************/ +#define WIDTH 256 +#define HEIGHT 192 + +#define MAXSCREEN 3 /* Highest screen mode supported */ +#define NORAM 0xFF /* Byte to be returned from */ + /* non-existing pages and ports */ + +/***** Following are macros to be used in screen drivers *****/ +#define BigSprites (VDP[1]&0x01) /* Zoomed sprites */ +#define Sprites16x16 (VDP[1]&0x02) /* 16x16/8x8 sprites */ +#define ScreenON (VDP[1]&0x40) /* Show screen */ + +/*************************************** +* Local procedures definition +***************************************/ +static void snd_Reset(void); +static void snd_Sound(int C, int F, int V); +static void SetColor(byte N,byte R,byte G,byte B); +static void RefreshSprites(byte Y); +static void RefreshBorder(byte Y); +static void RefreshLine0(byte Y); +static void RefreshLine1(byte Y); +static void RefreshLine2(byte Y); +static void RefreshLine3(byte Y); +static void RefreshScreen(void); +static void VDPOut(byte Reg,byte Value); /* Write value into VDP */ +static void CheckSprites(void); /* Collisions/5th spr. */ +static void Play(int C,int F,int V); /* Log and play sound */ + +/*************************************** +* Local data +***************************************/ +static byte * XBuf=0; // = (byte *)XBuf32; +static byte XPal[16],XPal0; + + +/*** TMS9918/9928 Palette *******************************************/ +struct { byte R,G,B; } Palette[16] = +{ + {0x00,0x00,0x00},{0x00,0x00,0x00},{0x20,0xC0,0x20},{0x60,0xE0,0x60}, + {0x20,0x20,0xE0},{0x40,0x60,0xE0},{0xA0,0x20,0x20},{0x40,0xC0,0xE0}, + {0xE0,0x20,0x20},{0xE0,0x60,0x60},{0xC0,0xC0,0x20},{0xC0,0xC0,0x80}, + {0x20,0x80,0x20},{0xC0,0x40,0xA0},{0xA0,0xA0,0xA0},{0xE0,0xE0,0xE0} +}; + +byte Verbose = 1; /* Debug msgs ON/OFF */ +byte UPeriod = 2; /* Interrupts/scr. update */ +int VPeriod = 60000; /* Number of cycles per VBlank */ +int HPeriod = 215; /* Number of cycles per HBlank */ +byte AutoA=0,AutoB=0; /* 1: Autofire for A,B buttons */ +byte Adam = 0; /* 1: Emulate Coleco Adam */ + +#define MEMRELOC -0x4000 + +#define VRAMSIZE 0x4000 +#define RAMSIZE 0xC000 + + +/* Main and Video RAMs */ +//static byte * VRAM=0; //[VRAMSIZE]; +//static byte * RAM=0; //RAM[RAMSIZE]; +static byte VRAM[VRAMSIZE]; +static byte RAM[RAMSIZE]; + +Z80 ccpu; /* Z80 CPU registers and state */ +SN76489 PSG; /* SN76489 PSG state */ + +byte *ChrGen,*ChrTab,*ColTab; /* VDP tables (screens) */ +byte *SprGen,*SprTab; /* VDP tables (sprites) */ +pair WVAddr,RVAddr; /* Storage for VRAM addresses */ +byte VKey; /* VDP address latch key */ +byte FGColor,BGColor; /* Colors */ +byte ScrMode; /* Current screen mode */ +byte CurLine; /* Current scanline */ +byte VDP[8],VDPStatus; /* VDP registers */ + +byte JoyMode; /* Joystick controller mode */ +word JoyState[2]; /* Joystick states */ + +/*** Screen handlers and masks for VDP table address registers ******/ +struct +{ + void (*Refresh)(byte Y); + byte R2,R3,R4,R5; +} SCR[MAXSCREEN+1] = +{ + { RefreshLine0,0x7F,0x00,0x3F,0x00 }, /* SCREEN 0:TEXT 40x24 */ + { RefreshLine1,0x7F,0xFF,0x3F,0xFF }, /* SCREEN 1:TEXT 32x24 */ + { RefreshLine2,0x7F,0x80,0x3C,0xFF }, /* SCREEN 2:BLOCK 256x192 */ + { RefreshLine3,0x7F,0x00,0x3F,0xFF } /* SCREEN 3:GFX 64x48x16 */ +}; + +/*************************************** +* Global data +***************************************/ + +/*************************************** +* Exported procedures +***************************************/ +void coc_Init(void) +{ + int J; + + /* Set up the palette */ + for(J=0;J<16;J++) + SetColor(J,Palette[J].R,Palette[J].G,Palette[J].B); + + //if (VRAM == 0) VRAM = (byte *)emu_Malloc(VRAMSIZE); + //if (RAM == 0) RAM = (byte *)emu_Malloc(RAMSIZE); +#if SINGLELINE_RENDERING + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH); +#else + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH*HEIGHT); +#endif + +} + +int coc_Start(char * Cartridge) +{ + int *T,I,J; + char *P; + + /*** VDP control register states: ***/ + static byte VDPInit[8] = + { 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00 }; + + /*** STARTUP CODE starts here: ***/ + T=(int *)"\01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; +#ifdef LSB_FIRST + if(*T!=1) + { + emu_printf("********** This machine is high-endian. **********\n"); + emu_printf("Take #define LSB_FIRST out and compile ColEm again.\n"); + return(0); + } +#else + if(*T==1) + { + emu_printf("********** This machine is low-endian. **********\n"); + emu_printf("Insert #define LSB_FIRST and compile ColEm again.\n"); + return(0); + } +#endif + + /* Calculate IPeriod from VPeriod */ + if(UPeriod<1) UPeriod=1; + if(VPeriod/HPeriod<256) VPeriod=256*HPeriod; + ccpu.IPeriod=HPeriod; + ccpu.TrapBadOps=Verbose&0x04; + ccpu.IAutoReset=0; + + memset(RAM,NORAM,RAMSIZE); + memset(VRAM,NORAM,VRAMSIZE); + + if(Verbose) emu_printf("OK\nLoading ROMs:\nOpening COLECO.ROM..."); + P=NULL; + if (emu_LoadFile("coleco.rom", (unsigned char *)RAM, 0x2000) != 0x2000) + P="NOT FOUND OR SHORT FILE"; + + //if(P) { if(Verbose) puts(P);return(0); } + if(Verbose) emu_printf("OK\nOpening ROM"); + if(Verbose) emu_printf(Cartridge); + + P=NULL; + J= emu_LoadFile(Cartridge, (unsigned char *)RAM+0x8000+MEMRELOC, 0x8000); + + if(J<0x1000) P="SHORT FILE"; + I=RAM[0x8000+MEMRELOC];J=RAM[0x8001+MEMRELOC]; + if( !( ((I==0x55)&&(J==0xAA))||((I==0xAA)&&(J==0x55)) ) ) + P="INVALID IMAGE"; + + //if(P) { if(Verbose) puts(P);return(0); } + if(Verbose) emu_printf("bytes loaded\n"); + + if(Verbose) + { + emu_printf("Initializing CPU and System Hardware:\n"); + //emu_printf(" VBlank = %d cycles\n HBlank = %d cycles\n",VPeriod,HPeriod); + } + +#ifdef HAS_SND + snd_Reset(); +#endif +#ifdef SOUND_PRESENT + snd_Open(22050, 2, 4096/*16384*/,(void*)snd_Mixer); +#endif + + /* Initialize VDP registers */ + memcpy(VDP,VDPInit,sizeof(VDP)); + + /* Initialize internal variables */ + VKey=1; /* VDP address latch key */ + VDPStatus=0x9F; /* VDP status register */ + FGColor=BGColor=0; /* Fore/Background color */ + ScrMode=0; /* Current screenmode */ + CurLine=0; /* Current scanline */ + ChrTab=ColTab=ChrGen=VRAM; /* VDP tables (screen) */ + SprTab=SprGen=VRAM; /* VDP tables (sprites) */ + JoyMode=0; /* Joystick mode key */ + JoyState[0]=JoyState[1]=0xFFFF; /* Joystick states */ + Reset76489(&PSG,Play); /* Reset SN76489 PSG */ + Sync76489(&PSG,PSG_SYNC); /* Make it synchronous */ + ResetZ80(&ccpu); /* Reset Z80 registers */ + + if(Verbose) emu_printf("RUNNING ROM CODE...\n"); + return(1); +} + +void coc_Step(void) +{ + //emu_printf("s"); + RunZ80(&ccpu); + RunZ80(&ccpu); +} + +void coc_Stop(void) +{ +} + + +#ifdef HAS_SND + +static void snd_Reset(void) +{ + emu_sndInit(); +} + +static void snd_Sound(int C, int F, int V) +{ + emu_sndPlaySound(C, V, F); +} +#endif + +/** Joysticks ************************************************/ +/** Check for keyboard events, parse them, and modify **/ +/** joystick controller status **/ +/*************************************************************/ + +void SetColor(byte N,byte R,byte G,byte B) +{ + unsigned char val = R; + XPal[N] = N; //(R&0xe0) | ((G>>3) & 0x1c) | ((B>>6) & 0x3); // RGBVAL(R,G,B); //(byte)lld_SetPaletteEntry(-1, R,G,B,0); + emu_SetPaletteEntry(R,G,B,N); +} + +void Joysticks(void) +{ + int k; + int j; + int ij; + int N=0; + word JS[2] = { 0xFFFF,0xFFFF }; + + k=emu_ReadKeys(); + j=emu_GetPad(); + ij=emu_ReadI2CKeyboard(); + + if (j & 0x8000) N = 1; + else N = 0; + + if(j) + JS[N]=(JS[N]&0xFFF0)|(j-1); + if(ij) + JS[N]=(JS[N]&0xFFF0)|(ij-1); + + if (k & MASK_JOY2_BTN) + { + JS[N]&=0xBFFF; //Fire 1 + } + if (k & MASK_KEY_USER1) + { + JS[N]&=0xFFBF; //Fire 2 + } + if (k & MASK_KEY_USER2) + { + JS[0]=(JS[0]&0xFFF0)|(2); //1 + } + // JS[0]=(JS[0]&0xFFF0)|(12); + // JS[0]=(JS[0]&0xFFF0)|(13); + + if (k & MASK_JOY2_DOWN) + JS[N]&=0xFBFF; //Down + if (k & MASK_JOY2_UP) + JS[N]&=0xFEFF; //Up + if (k & MASK_JOY2_RIGHT) + JS[N]&=0xF7FF; //Right + if (k & MASK_JOY2_LEFT) + JS[N]&=0xFDFF; //Left + + JoyState[0]=JS[0];JoyState[1]=JS[1]; +} + +/** WrZ80() **************************************************/ +/** Z80 emulation calls this function to write byte V to **/ +/** address A of Z80 address space. **/ +/*************************************************************/ +void WrZ80(register word A,register byte V) +{ + if((A>0x5FFF)&&(A<0x8000)) + { + A&=0x03FF; + RAM[0x6000+A+MEMRELOC]=RAM[0x6400+A+MEMRELOC]=RAM[0x6800+A+MEMRELOC]=RAM[0x6C00+A+MEMRELOC]= + RAM[0x7000+A+MEMRELOC]=RAM[0x7400+A+MEMRELOC]=RAM[0x7800+A+MEMRELOC]=RAM[0x7C00+A+MEMRELOC]=V; + } +} + +/** RdZ80() **************************************************/ +/** Z80 emulation calls this function to read a byte from **/ +/** address A of Z80 address space. Now moved to z80.c and **/ +/** made inlined to speed things up. **/ +/*************************************************************/ + +byte RdZ80(register word A) { + if ( (A>=0x6000) && (A<0x10000) ) + return(RAM[A+MEMRELOC]); + else + return(RAM[A]); +} + + +/** PatchZ80() ***********************************************/ +/** Z80 emulation calls this function when it encounters a **/ +/** special patch command (ED FE) provided for user needs. **/ +/*************************************************************/ +void PatchZ80(Z80 *R) {} + +/** InZ80() **************************************************/ +/** Z80 emulation calls this function to read a byte from **/ +/** a given I/O port. **/ +/*************************************************************/ +byte InZ80(register word Port) +{ + static byte KeyCodes[16] = + { + 0x0A,0x0D,0x07,0x0C,0x02,0x03,0x0E,0x05, + 0x01,0x0B,0x06,0x09,0x08,0x04,0x0F,0x0F, + }; + + switch(Port&0xE0) + { + +case 0x40: /* Printer Status */ + if(Adam&&(Port==0x40)) return(0xFF); + break; + +case 0xE0: /* Joysticks Data */ + Port=(Port>>1)&0x01; + Port=JoyMode? + (JoyState[Port]>>8): + (JoyState[Port]&0xF0)|KeyCodes[JoyState[Port]&0x0F]; + return((Port|0xB0)&0x7F); + +case 0xA0: /* VDP Status/Data */ + if(Port&0x01) { Port=VDPStatus;VDPStatus&=0x5F;VKey=1; } + else { Port=VRAM[RVAddr.W];RVAddr.W=(RVAddr.W+1)&0x3FFF; } + return(Port); + } + + /* No such port */ + return(NORAM); +} + +/** OutZ80() *************************************************/ +/** Z80 emulation calls this function to write a byte to a **/ +/** given I/O port. **/ +/*************************************************************/ +void OutZ80(register word Port,register byte Value) +{ + static byte SR,VR; /* Sound and VDP register storage */ + + switch(Port&0xE0) + { + +case 0x80: JoyMode=0;return; +case 0xC0: JoyMode=1;return; +case 0xE0: Write76489(&PSG,Value);return; + +case 0x40: +// if(Adam&&(Port==0x40)) fputc(Value,PrnStream); + return; + +case 0xA0: + if(Port&0x01) + if(VKey) { VR=Value;VKey--; } + else + { + VKey++; + switch(Value&0xC0) + { + case 0x80: VDPOut(Value&0x07,VR);break; + case 0x40: WVAddr.B.l=VR;WVAddr.B.h=Value&0x3F;break; + case 0x00: RVAddr.B.l=VR;RVAddr.B.h=Value; + } + } + else + if(VKey) + { VRAM[WVAddr.W]=Value;WVAddr.W=(WVAddr.W+1)&0x3FFF; } + return; + + } +} + +/** LoopZ80() ************************************************/ +/** Z80 emulation calls this function periodically to check **/ +/** if the system hardware requires any interrupts. **/ +/*************************************************************/ +word LoopZ80(Z80 *R, int * ras) +{ + static byte UCount=0; + static byte ACount=0; + + /* Next scanline */ + CurLine=(CurLine+1)%193; + + /* Refresh scanline if needed */ + if(CurLine<192) + { + if(!UCount) { + (SCR[ScrMode].Refresh)(CurLine); +#if SINGLELINE_RENDERING + emu_DrawLine(XBuf, WIDTH, HEIGHT, CurLine); +#else +#endif + } + R->IPeriod=HPeriod; + return(INT_NONE); + } + + /* End of screen reached... */ + + /* Set IPeriod to the beginning of next screen */ + R->IPeriod=VPeriod-HPeriod*192; + + /* Check joysticks */ + Joysticks(); + + /* Autofire emulation */ + ACount=(ACount+1)&0x07; + if(ACount>3) + { + if(AutoA) { JoyState[0]|=0x0040;JoyState[1]|=0x0040; } + if(AutoB) { JoyState[0]|=0x4000;JoyState[1]|=0x4000; } + } + + + /* Flush any accumulated sound changes */ + Sync76489(&PSG,PSG_FLUSH); + + /* Refresh screen if needed */ + if(UCount) + UCount--; + else + { + UCount=UPeriod-1; + RefreshScreen(); + } + + /* Setting VDPStatus flags */ + VDPStatus=(VDPStatus&0xDF)|0x80; + + /* Checking sprites: */ + if(ScrMode) CheckSprites(); + + /* If exit requested, return INT_QUIT */ +// if(ExitNow) return(INT_QUIT); + *ras = 1; + /* Generate VDP interrupt */ + return(VKey&&(VDP[1]&0x20)? INT_NMI:INT_NONE); +} + +/** VDPOut() *************************************************/ +/** Emulator calls this function to write byte V into a VDP **/ +/** register R. **/ +/*************************************************************/ +void VDPOut(register byte R,register byte V) +{ + register byte J; + + switch(R) + { + case 0: switch(((V&0x0E)>>1)|(VDP[1]&0x18)) + { + case 0x10: J=0;break; + case 0x00: J=1;break; + case 0x01: J=2;break; + case 0x08: J=3;break; + default: J=ScrMode; + } + if(J!=ScrMode) + { + ChrTab=VRAM+((long)(VDP[2]&SCR[J].R2)<<10); + ChrGen=VRAM+((long)(VDP[4]&SCR[J].R4)<<11); + ColTab=VRAM+((long)(VDP[3]&SCR[J].R3)<<6); + SprTab=VRAM+((long)(VDP[5]&SCR[J].R5)<<7); + SprGen=VRAM+((long)VDP[6]<<11); + ScrMode=J; + } + break; + case 1: switch(((VDP[0]&0x0E)>>1)|(V&0x18)) + { + case 0x10: J=0;break; + case 0x00: J=1;break; + case 0x01: J=2;break; + case 0x08: J=3;break; + default: J=ScrMode; + } + if(J!=ScrMode) + { + ChrTab=VRAM+((long)(VDP[2]&SCR[J].R2)<<10); + ChrGen=VRAM+((long)(VDP[4]&SCR[J].R4)<<11); + ColTab=VRAM+((long)(VDP[3]&SCR[J].R3)<<6); + SprTab=VRAM+((long)(VDP[5]&SCR[J].R5)<<7); + SprGen=VRAM+((long)VDP[6]<<11); + ScrMode=J; + } + break; + case 2: ChrTab=VRAM+((long)(V&SCR[ScrMode].R2)<<10);break; + case 3: ColTab=VRAM+((long)(V&SCR[ScrMode].R3)<<6);break; + case 4: ChrGen=VRAM+((long)(V&SCR[ScrMode].R4)<<11);break; + case 5: SprTab=VRAM+((long)(V&SCR[ScrMode].R5)<<7);break; + case 6: V&=0x3F;SprGen=VRAM+((long)V<<11);break; + case 7: FGColor=V>>4;BGColor=V&0x0F;break; + + } + VDP[R]=V;return; +} + +/** CheckSprites() *******************************************/ +/** This function is periodically called to check for the **/ +/** sprite collisions and 5th sprite, and set appropriate **/ +/** bits in the VDP status register. **/ +/*************************************************************/ +void CheckSprites(void) +{ + register word LS,LD; + register byte DH,DV,*PS,*PD,*T; + byte I,J,N,*S,*D; + + VDPStatus=(VDPStatus&0x9F)|0x1F; + for(N=0,S=SprTab;(N<32)&&(S[0]!=208);N++,S+=4); + + if(Sprites16x16) + { + for(J=0,S=SprTab;J240)) + { + DH=S[1]-D[1]; + if((DH<16)||(DH>240)) + { + PS=SprGen+((long)(S[2]&0xFC)<<3); + PD=SprGen+((long)(D[2]&0xFC)<<3); + if(DV<16) PD+=DV; else { DV=256-DV;PS+=DV; } + if(DH>240) { DH=256-DH;T=PS;PS=PD;PD=T; } + while(DV<16) + { + LS=((word)*PS<<8)+*(PS+16); + LD=((word)*PD<<8)+*(PD+16); + if(LD&(LS>>DH)) break; + else { DV++;PS++;PD++; } + } + if(DV<16) { VDPStatus|=0x20;return; } + } + } + } + } + else + { + for(J=0,S=SprTab;J248)) + { + DH=S[1]-D[1]; + if((DH<8)||(DH>248)) + { + PS=SprGen+((long)S[2]<<3); + PD=SprGen+((long)D[2]<<3); + if(DV<8) PD+=DV; else { DV=256-DV;PS+=DV; } + if(DH>248) { DH=256-DH;T=PS;PS=PD;PD=T; } + while((DV<8)&&!(*PD&(*PS>>DH))) { DV++;PS++;PD++; } + if(DV<8) { VDPStatus|=0x20;return; } + } + } + } + } +} + + +/** Play() ***************************************************/ +/** Log and play sound of given frequency (Hz) and volume **/ +/** (0..255) via given channel (0..3). **/ +/*************************************************************/ +void Play(int C,int F,int V) +{ + /* Play actual sound */ +#ifdef HAS_SND + snd_Sound(C,F,V); +#endif +} + + +/** RefreshScreen() ******************************************/ +/** Refresh screen. This function is called in the end of **/ +/** refresh cycle to show the entire screen. **/ +/*************************************************************/ +void RefreshScreen(void) +{ +#if SINGLELINE_RENDERING +#else + emu_DrawScreen(XBuf, WIDTH, HEIGHT, WIDTH); +#endif + emu_DrawVsync(); +} + +/** RefreshBorder() ******************************************/ +/** This function is called from RefreshLine#() to refresh **/ +/** the screen border. **/ +/*************************************************************/ +void RefreshBorder(register byte Y) +{ +// if(!Y) +// memset(XBuf,XPal[BGColor],WIDTH*(HEIGHT-192)/2); +// if(Y==191) +// memset(XBuf+WIDTH*(HEIGHT+192)/2,XPal[BGColor],WIDTH*(HEIGHT-192)/2); +} + +/** RefreshSprites() *****************************************/ +/** This function is called from RefreshLine#() to refresh **/ +/** sprites. **/ +/*************************************************************/ +void RefreshSprites(register byte Y) +{ + register byte C,H; + register byte *P,*PT,*AT; + register int L,K; + register unsigned int M; + + H=Sprites16x16? 16:8; + C=0;M=0;L=0;AT=SprTab-4; + do + { + M<<=1;AT+=4;L++; /* Iterating through SprTab */ + K=AT[0]; /* K = sprite Y coordinate */ + if(K==208) break; /* Iteration terminates if Y=208 */ + if(K>256-H) K-=256; /* Y coordinate may be negative */ + + /* Mark all valid sprites with 1s, break at 4 sprites */ + if((Y>K)&&(Y<=K+H)) { M|=1;if(++C==4) break; } + } + while(L<32); + + for(;M;M>>=1,AT-=4) + if(M&1) + { + C=AT[3]; /* C = sprite attributes */ + L=C&0x80? AT[1]-32:AT[1]; /* Sprite may be shifted left by 32 */ + C&=0x0F; /* C = sprite color */ + + if((L<256)&&(L>-H)&&C) + { + K=AT[0]; /* K = sprite Y coordinate */ + if(K>256-H) K-=256; /* Y coordinate may be negative */ + +#if SINGLELINE_RENDERING + P=XBuf+L; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+(WIDTH-256)/2+WIDTH*Y+L; +#endif + PT=SprGen+((int)(H>8? AT[2]&0xFC:AT[2])<<3)+Y-K-1; + C=XPal[C]; + + /* Mask 1: clip left sprite boundary */ + K=L>=0? 0x0FFFF:(0x10000>>-L)-1; + /* Mask 2: clip right sprite boundary */ + if(L>256-H) K^=((0x00200>>(H-8))<<(L-257+H))-1; + /* Get and clip the sprite data */ + K&=((int)PT[0]<<8)|(H>8? PT[16]:0x00); + + /* Draw left 8 pixels of the sprite */ + if(K&0xFF00) + { + if(K&0x8000) P[0]=C;if(K&0x4000) P[1]=C; + if(K&0x2000) P[2]=C;if(K&0x1000) P[3]=C; + if(K&0x0800) P[4]=C;if(K&0x0400) P[5]=C; + if(K&0x0200) P[6]=C;if(K&0x0100) P[7]=C; + } + + /* Draw right 8 pixels of the sprite */ + if(K&0x00FF) + { + if(K&0x0080) P[8]=C; if(K&0x0040) P[9]=C; + if(K&0x0020) P[10]=C;if(K&0x0010) P[11]=C; + if(K&0x0008) P[12]=C;if(K&0x0004) P[13]=C; + if(K&0x0002) P[14]=C;if(K&0x0001) P[15]=C; + } + } + } +} + +/** RefreshLine0() *******************************************/ +/** Refresh line Y (0..191) of SCREEN0, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine0(register byte Y) +{ + register byte X,K,Offset,FC,BC; + register byte *P,*T; +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + BC=XPal[BGColor]; + FC=XPal[FGColor]; + T=ChrTab+(Y>>3)*40; + Offset=Y&0x07; + + //memset(P,BC,(WIDTH-240)/2); + //P+=(WIDTH-240)/2; + + for(X=0;X<40;X++) + { + K=ChrGen[((int)*T<<3)+Offset]; + P[0]=K&0x80? FC:BC;P[1]=K&0x40? FC:BC; + P[2]=K&0x20? FC:BC;P[3]=K&0x10? FC:BC; + P[4]=K&0x08? FC:BC;P[5]=K&0x04? FC:BC; + P+=6;T++; + } + + //memset(P,BC,(WIDTH-240)/2); + } + + //RefreshBorder(Y); +} + +/** RefreshLine1() *******************************************/ +/** Refresh line Y (0..191) of SCREEN1, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine1(register byte Y) +{ + register byte X,K,Offset,FC,BC; + register byte *P,*T; + +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + T=ChrTab+(Y>>3)*32; + Offset=Y&0x07; + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + //P+=(WIDTH-256)/2; + + for(X=0;X<32;X++) + { + K=*T; + BC=ColTab[K>>3]; + K=ChrGen[((int)K<<3)+Offset]; + FC=XPal[BC>>4]; + BC=XPal[BC&0x0F]; + P[0]=K&0x80? FC:BC;P[1]=K&0x40? FC:BC; + P[2]=K&0x20? FC:BC;P[3]=K&0x10? FC:BC; + P[4]=K&0x08? FC:BC;P[5]=K&0x04? FC:BC; + P[6]=K&0x02? FC:BC;P[7]=K&0x01? FC:BC; + P+=8;T++; + } + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + RefreshSprites(Y); + } + + RefreshBorder(Y); +} + +/** RefreshLine2() *******************************************/ +/** Refresh line Y (0..191) of SCREEN2, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine2(register byte Y) +{ + register byte X,K,FC,BC,Offset; + register byte *P,*T,*PGT,*CLT; + register int I; + +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + I=(int)(Y&0xC0)<<5; + PGT=ChrGen+I; + CLT=ColTab+I; + T=ChrTab+(Y>>3)*32; + Offset=Y&0x07; + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + //P+=(WIDTH-256)/2; + + for(X=0;X<32;X++) + { + I=((int)*T<<3)+Offset; + K=PGT[I]; + BC=CLT[I]; + FC=XPal[BC>>4]; + BC=XPal[BC&0x0F]; + P[0]=K&0x80? FC:BC;P[1]=K&0x40? FC:BC; + P[2]=K&0x20? FC:BC;P[3]=K&0x10? FC:BC; + P[4]=K&0x08? FC:BC;P[5]=K&0x04? FC:BC; + P[6]=K&0x02? FC:BC;P[7]=K&0x01? FC:BC; + P+=8;T++; + } + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + RefreshSprites(Y); + } + + RefreshBorder(Y); +} + +/** RefreshLine3() *******************************************/ +/** Refresh line Y (0..191) of SCREEN3, including sprites **/ +/** in this line. **/ +/*************************************************************/ +void RefreshLine3(register byte Y) +{ + register byte X,K,Offset; + register byte *P,*T; + +#if SINGLELINE_RENDERING + P=XBuf; +#else + P=XBuf+WIDTH*(HEIGHT-192)/2+WIDTH*Y; +#endif + XPal[0]=BGColor? XPal[BGColor]:XPal0; + + if(!ScreenON) memset(P,XPal[BGColor],WIDTH); + else + { + T=ChrTab+(Y>>3)*32; + Offset=(Y&0x1C)>>2; + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + //P+=(WIDTH-256)/2; + + for(X=0;X<32;X++) + { + K=ChrGen[((int)*T<<3)+Offset]; + P[0]=P[1]=P[2]=P[3]=XPal[K>>4]; + P[4]=P[5]=P[6]=P[7]=XPal[K&0x0F]; + P+=8;T++; + } + + //memset(P,XPal[BGColor],(WIDTH-256)/2); + RefreshSprites(Y); + } + + RefreshBorder(Y); +} + + diff --git a/MCUME_teensy/teensycolem/Colem.h b/MCUME_teensy/teensycolem/Colem.h new file mode 100644 index 0000000..24898aa --- /dev/null +++ b/MCUME_teensy/teensycolem/Colem.h @@ -0,0 +1,4 @@ +extern void coc_Init(void); +extern void coc_Start(char * CartName); +extern void coc_Step(void); +extern void coc_Stop(void); diff --git a/MCUME_teensy/teensycolem/SN76489.c b/MCUME_teensy/teensycolem/SN76489.c new file mode 100644 index 0000000..d359590 --- /dev/null +++ b/MCUME_teensy/teensycolem/SN76489.c @@ -0,0 +1,98 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** SN76489.c **/ +/** **/ +/** This file contains emulation for the SN76489 sound chip **/ +/** produced by Intel. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "SN76489.h" + +/** Reset76489() *********************************************/ +/** Reset the sound chip. The user has to provide a pointer **/ +/** to a function Sound(Channel,Freq,Volume) used to make **/ +/** actual sound. **/ +/*************************************************************/ +void Reset76489(SN76489 *D,void (*Sound)(int,int,int)) +{ + register int J; + + for(J=0;J<4;J++) D->Volume[J]=D->Freq[J]=0; + D->NoiseMode=D->Buf=D->Changed=0x00; + D->Sync=PSG_ASYNC;D->Sound=Sound; +} + +/** Sync76489() **********************************************/ +/** Flush all accumulated changes by issuing Sound() calls, **/ +/** and set the synchronization on/off. The second argument **/ +/** should be PSG_SYNC, PSG_ASYNC to set/reset sync, or **/ +/** PSG_FLUSH to leave sync mode as it is. **/ +/*************************************************************/ +void Sync76489(SN76489 *D,unsigned char Sync) +{ + register int J,I; + + if(D->Sync&&D->Changed) + { + for(J=0,I=1;J<4;J++,I<<=1) + if(D->Changed&I) + D->Sound(J,D->Freq[J],D->Volume[J]); + } + D->Changed=0x00; + if(Sync!=PSG_FLUSH) D->Sync=Sync; +} + +/** Write76489() *********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write76489(SN76489 *D,unsigned char V) +{ + register unsigned char N,J; + register long L; + + switch(V&0xF0) + { + case 0xE0: + J=V&0x03; + if(J==D->NoiseMode) return; + switch(J) + { + case 0: D->Freq[3]=20000;break; + case 1: D->Freq[3]=10000;break; + case 2: D->Freq[3]=5000;break; + case 3: D->Freq[3]=D->Freq[2];break; + } + N=3;break; + case 0x80: case 0xA0: case 0xC0: + D->Buf=V;return; + case 0x90: case 0xB0: case 0xD0: case 0xF0: + N=(V-0x90)>>5; + J=(~V&0x0F)*16; + if(J==D->Volume[N]) return; + D->Volume[N]=J; + break; + default: + if(!(D->Buf&0xC0)) return; + N=(D->Buf-0x80)>>5; + L=PSG_BASE/((V&0x3F)*16+(D->Buf&0x0F)+1); + if(L>15000) L=0; + if(L==D->Freq[N]) return; + if((N==2)&&(D->NoiseMode==3)) + { + D->Freq[3]=L; + if(D->Sync) D->Changed|=0x08; + else D->Sound(3,D->Freq[3],D->Volume[3]); + } + D->Freq[N]=L; + break; + } + + if(D->Sync) D->Changed|=1<Sound(N,D->Freq[N],D->Volume[N]); +} diff --git a/MCUME_teensy/teensycolem/SN76489.h b/MCUME_teensy/teensycolem/SN76489.h new file mode 100644 index 0000000..552fc15 --- /dev/null +++ b/MCUME_teensy/teensycolem/SN76489.h @@ -0,0 +1,50 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** SN76489.c **/ +/** **/ +/** This file contains emulation for the SN76489 sound chip **/ +/** produced by Intel. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef SN76489_H +#define SN76489_H + +#define PSG_BASE 131072 /* Base frequency for SN76489 */ + +#define PSG_ASYNC 0 /* Asynchronous emulation */ +#define PSG_SYNC 1 /* Synchronous emulation mode */ +#define PSG_FLUSH 2 /* Flush buffers only */ + +typedef struct +{ + int Channel,Freq[4],Volume[4],Sync; + unsigned char NoiseMode,Buf,Changed; + void (*Sound)(int,int,int); +} SN76489; + +/** Reset76489() *********************************************/ +/** Reset the sound chip. The user has to provide a pointer **/ +/** to a function Sound(Channel,Freq,Volume) used to make **/ +/** actual sound. **/ +/*************************************************************/ +void Reset76489(register SN76489 *D,void (*Sound)(int,int,int)); + +/** Sync76489() **********************************************/ +/** Flush all accumulated changes by issuing Sound() calls, **/ +/** and set the synchronization on/off. The second argument **/ +/** should be PSG_SYNC, PSG_ASYNC to set/reset sync, or **/ +/** PSG_FLUSH to leave sync mode as it is. **/ +/*************************************************************/ +void Sync76489(register SN76489 *D,register unsigned char Sync); + +/** Write76489() *********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write76489(register SN76489 *D,register unsigned char V); + +#endif /* SN76489_H */ diff --git a/MCUME_teensy/teensycolem/Tables.h b/MCUME_teensy/teensycolem/Tables.h new file mode 100644 index 0000000..3373adf --- /dev/null +++ b/MCUME_teensy/teensycolem/Tables.h @@ -0,0 +1,447 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Tables.h **/ +/** **/ +/** This file contains tables of used by Z80 emulation to **/ +/** compute SIGN,ZERO, PARITY flags, and decimal correction **/ +/** There are also timing tables for Z80 opcodes. This file **/ +/** is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +static byte Cycles[256] = +{ + 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, + 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4, + 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, + 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 5,10,10,10,10,11, 7,11, 5,10,10, 0,10,17, 7,11, + 5,10,10,11,10,11, 7,11, 5, 4,10,11,10, 0, 7,11, + 5,10,10,19,10,11, 7,11, 5, 4,10, 4,10, 0, 7,11, + 5,10,10, 4,10,11, 7,11, 5, 6,10, 4,10, 0, 7,11 +}; + +static byte CyclesCB[256] = +{ + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8 +}; + +static byte CyclesED[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12,12,15,20, 8,14, 8, 9,12,12,15,20, 0,14, 0, 9, + 12,12,15,20, 0, 0, 8, 9,12,12,15,20, 0, 0, 8, 9, + 12,12,15,20, 0, 0, 0,18,12,12,15,20, 0, 0, 0,18, + 12, 0,15,20, 0, 0, 0, 0,12,12,15,20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,16,16,16, 0, 0, 0, 0,16,16,16,16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static byte CyclesXX[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0,14,20,10, 9, 9, 9, 0, 0,15,20,10, 9, 9, 9, 0, + 0, 0, 0, 0,23,23,19, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 19,19,19,19,19,19,19,19, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,14, 0,23, 0,15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0 +}; + +static byte CyclesXXCB[256] = +{ + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0 +}; + +static byte ZSTable[256] = +{ + Z_FLAG,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG +}; + +static byte PZSTable[256] = +{ + Z_FLAG|P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG +}; + +static word DAATable[2048] = +{ + 0x0044,0x0100,0x0200,0x0304,0x0400,0x0504,0x0604,0x0700, + 0x0808,0x090C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1000,0x1104,0x1204,0x1300,0x1404,0x1500,0x1600,0x1704, + 0x180C,0x1908,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2020,0x2124,0x2224,0x2320,0x2424,0x2520,0x2620,0x2724, + 0x282C,0x2928,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3024,0x3120,0x3220,0x3324,0x3420,0x3524,0x3624,0x3720, + 0x3828,0x392C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4000,0x4104,0x4204,0x4300,0x4404,0x4500,0x4600,0x4704, + 0x480C,0x4908,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5004,0x5100,0x5200,0x5304,0x5400,0x5504,0x5604,0x5700, + 0x5808,0x590C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6024,0x6120,0x6220,0x6324,0x6420,0x6524,0x6624,0x6720, + 0x6828,0x692C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7020,0x7124,0x7224,0x7320,0x7424,0x7520,0x7620,0x7724, + 0x782C,0x7928,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8080,0x8184,0x8284,0x8380,0x8484,0x8580,0x8680,0x8784, + 0x888C,0x8988,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9084,0x9180,0x9280,0x9384,0x9480,0x9584,0x9684,0x9780, + 0x9888,0x998C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6025,0x6121,0x6221,0x6325,0x6421,0x6525,0x6625,0x6721, + 0x6829,0x692D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7021,0x7125,0x7225,0x7321,0x7425,0x7521,0x7621,0x7725, + 0x782D,0x7929,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8081,0x8185,0x8285,0x8381,0x8485,0x8581,0x8681,0x8785, + 0x888D,0x8989,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9085,0x9181,0x9281,0x9385,0x9481,0x9585,0x9685,0x9781, + 0x9889,0x998D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA0A5,0xA1A1,0xA2A1,0xA3A5,0xA4A1,0xA5A5,0xA6A5,0xA7A1, + 0xA8A9,0xA9AD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB0A1,0xB1A5,0xB2A5,0xB3A1,0xB4A5,0xB5A1,0xB6A1,0xB7A5, + 0xB8AD,0xB9A9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC085,0xC181,0xC281,0xC385,0xC481,0xC585,0xC685,0xC781, + 0xC889,0xC98D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD081,0xD185,0xD285,0xD381,0xD485,0xD581,0xD681,0xD785, + 0xD88D,0xD989,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE0A1,0xE1A5,0xE2A5,0xE3A1,0xE4A5,0xE5A1,0xE6A1,0xE7A5, + 0xE8AD,0xE9A9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF0A5,0xF1A1,0xF2A1,0xF3A5,0xF4A1,0xF5A5,0xF6A5,0xF7A1, + 0xF8A9,0xF9AD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0604,0x0700,0x0808,0x090C,0x0A0C,0x0B08,0x0C0C,0x0D08, + 0x0E08,0x0F0C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1600,0x1704,0x180C,0x1908,0x1A08,0x1B0C,0x1C08,0x1D0C, + 0x1E0C,0x1F08,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2620,0x2724,0x282C,0x2928,0x2A28,0x2B2C,0x2C28,0x2D2C, + 0x2E2C,0x2F28,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3624,0x3720,0x3828,0x392C,0x3A2C,0x3B28,0x3C2C,0x3D28, + 0x3E28,0x3F2C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4600,0x4704,0x480C,0x4908,0x4A08,0x4B0C,0x4C08,0x4D0C, + 0x4E0C,0x4F08,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5604,0x5700,0x5808,0x590C,0x5A0C,0x5B08,0x5C0C,0x5D08, + 0x5E08,0x5F0C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6624,0x6720,0x6828,0x692C,0x6A2C,0x6B28,0x6C2C,0x6D28, + 0x6E28,0x6F2C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7620,0x7724,0x782C,0x7928,0x7A28,0x7B2C,0x7C28,0x7D2C, + 0x7E2C,0x7F28,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8680,0x8784,0x888C,0x8988,0x8A88,0x8B8C,0x8C88,0x8D8C, + 0x8E8C,0x8F88,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9684,0x9780,0x9888,0x998C,0x9A8C,0x9B88,0x9C8C,0x9D88, + 0x9E88,0x9F8C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6625,0x6721,0x6829,0x692D,0x6A2D,0x6B29,0x6C2D,0x6D29, + 0x6E29,0x6F2D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7621,0x7725,0x782D,0x7929,0x7A29,0x7B2D,0x7C29,0x7D2D, + 0x7E2D,0x7F29,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8681,0x8785,0x888D,0x8989,0x8A89,0x8B8D,0x8C89,0x8D8D, + 0x8E8D,0x8F89,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9685,0x9781,0x9889,0x998D,0x9A8D,0x9B89,0x9C8D,0x9D89, + 0x9E89,0x9F8D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA6A5,0xA7A1,0xA8A9,0xA9AD,0xAAAD,0xABA9,0xACAD,0xADA9, + 0xAEA9,0xAFAD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB6A1,0xB7A5,0xB8AD,0xB9A9,0xBAA9,0xBBAD,0xBCA9,0xBDAD, + 0xBEAD,0xBFA9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC685,0xC781,0xC889,0xC98D,0xCA8D,0xCB89,0xCC8D,0xCD89, + 0xCE89,0xCF8D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD681,0xD785,0xD88D,0xD989,0xDA89,0xDB8D,0xDC89,0xDD8D, + 0xDE8D,0xDF89,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE6A1,0xE7A5,0xE8AD,0xE9A9,0xEAA9,0xEBAD,0xECA9,0xEDAD, + 0xEEAD,0xEFA9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF6A5,0xF7A1,0xF8A9,0xF9AD,0xFAAD,0xFBA9,0xFCAD,0xFDA9, + 0xFEA9,0xFFAD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702, + 0x080A,0x090E,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706, + 0x180E,0x190A,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726, + 0x282E,0x292A,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722, + 0x382A,0x392E,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706, + 0x480E,0x490A,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702, + 0x580A,0x590E,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722, + 0x682A,0x692E,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726, + 0x782E,0x792A,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786, + 0x888E,0x898A,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x9086,0x9182,0x9282,0x9386,0x9482,0x9586,0x9686,0x9782, + 0x988A,0x998E,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xA0A7,0xA1A3,0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3, + 0xA8AB,0xA9AF,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xB0A3,0xB1A7,0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7, + 0xB8AF,0xB9AB,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xC087,0xC183,0xC283,0xC387,0xC483,0xC587,0xC687,0xC783, + 0xC88B,0xC98F,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xD083,0xD187,0xD287,0xD383,0xD487,0xD583,0xD683,0xD787, + 0xD88F,0xD98B,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xE0A3,0xE1A7,0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7, + 0xE8AF,0xE9AB,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xF0A7,0xF1A3,0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3, + 0xF8AB,0xF9AF,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703, + 0x080B,0x090F,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707, + 0x180F,0x190B,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727, + 0x282F,0x292B,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723, + 0x382B,0x392F,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xFABE,0xFBBA,0xFCBE,0xFDBA,0xFEBA,0xFFBE,0x0046,0x0102, + 0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x0A1E,0x0B1A,0x0C1E,0x0D1A,0x0E1A,0x0F1E,0x1002,0x1106, + 0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x1A1A,0x1B1E,0x1C1A,0x1D1E,0x1E1E,0x1F1A,0x2022,0x2126, + 0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x2A3A,0x2B3E,0x2C3A,0x2D3E,0x2E3E,0x2F3A,0x3026,0x3122, + 0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x3A3E,0x3B3A,0x3C3E,0x3D3A,0x3E3A,0x3F3E,0x4002,0x4106, + 0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x4A1A,0x4B1E,0x4C1A,0x4D1E,0x4E1E,0x4F1A,0x5006,0x5102, + 0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x5A1E,0x5B1A,0x5C1E,0x5D1A,0x5E1A,0x5F1E,0x6026,0x6122, + 0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x6A3E,0x6B3A,0x6C3E,0x6D3A,0x6E3A,0x6F3E,0x7022,0x7126, + 0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x7A3A,0x7B3E,0x7C3A,0x7D3E,0x7E3E,0x7F3A,0x8082,0x8186, + 0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x8A9A,0x8B9E,0x8C9A,0x8D9E,0x8E9E,0x8F9A,0x9086,0x9182, + 0x9282,0x9386,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0x9A9F,0x9B9B,0x9C9F,0x9D9B,0x9E9B,0x9F9F,0xA0A7,0xA1A3, + 0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xAABF,0xABBB,0xACBF,0xADBB,0xAEBB,0xAFBF,0xB0A3,0xB1A7, + 0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xBABB,0xBBBF,0xBCBB,0xBDBF,0xBEBF,0xBFBB,0xC087,0xC183, + 0xC283,0xC387,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xCA9F,0xCB9B,0xCC9F,0xCD9B,0xCE9B,0xCF9F,0xD083,0xD187, + 0xD287,0xD383,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xDA9B,0xDB9F,0xDC9B,0xDD9F,0xDE9F,0xDF9B,0xE0A3,0xE1A7, + 0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xEABB,0xEBBF,0xECBB,0xEDBF,0xEEBF,0xEFBB,0xF0A7,0xF1A3, + 0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0xFABF,0xFBBB,0xFCBF,0xFDBB,0xFEBB,0xFFBF,0x0047,0x0103, + 0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x0A1F,0x0B1B,0x0C1F,0x0D1B,0x0E1B,0x0F1F,0x1003,0x1107, + 0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x1A1B,0x1B1F,0x1C1B,0x1D1F,0x1E1F,0x1F1B,0x2023,0x2127, + 0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x2A3B,0x2B3F,0x2C3B,0x2D3F,0x2E3F,0x2F3B,0x3027,0x3123, + 0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F +}; diff --git a/MCUME_teensy/teensycolem/Z80.c b/MCUME_teensy/teensycolem/Z80.c new file mode 100644 index 0000000..7da58db --- /dev/null +++ b/MCUME_teensy/teensycolem/Z80.c @@ -0,0 +1,583 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.c **/ +/** **/ +/** This file contains implementation for Z80 CPU. Don't **/ +/** forget to provide RdZ80(), WrZ80(), InZ80(), OutZ80(), **/ +/** LoopZ80(), and PatchZ80() functions to accomodate the **/ +/** emulated machine's architecture. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#include "options.h" +#include "Z80.h" +#include "Tables.h" +//#include +#define printf(...) + +/** INLINE ***************************************************/ +/** Different compilers inline C functions differently. **/ +/*************************************************************/ +#ifdef __GNUC__ +#define INLINE inline +#else +#define INLINE static +#endif + +/** System-Dependent Stuff ***********************************/ +/** This is system-dependent code put here to speed things **/ +/** up. It has to stay inlined to be fast. **/ +/*************************************************************/ +#ifdef COLEM +extern byte *RAM; +INLINE byte RdZ80(word A) { return(RAM[A]); } +#endif +#ifdef MG +extern byte *Page[]; +INLINE byte RdZ80(word A) { return(Page[A>>13][A&0x1FFF]); } +#endif +#ifdef FMSX +extern byte *RAM[],PSL[],SSLReg; +INLINE byte RdZ80(word A) +{ + if(A!=0xFFFF) return(RAM[A>>13][A&0x1FFF]); + else return((PSL[3]==3)? ~SSLReg:RAM[7][0x1FFF]); +} +#endif + +#define S(Fl) R->AF.B.l|=Fl +#define R(Fl) R->AF.B.l&=~(Fl) +#define FLAGS(Rg,Fl) R->AF.B.l=Fl|ZSTable[Rg] + +#define M_RLC(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|R->AF.B.l;R->AF.B.l|=PZSTable[Rg] +#define M_RRC(Rg) \ + R->AF.B.l=Rg&0x01;Rg=(Rg>>1)|(R->AF.B.l<<7);R->AF.B.l|=PZSTable[Rg] +#define M_RL(Rg) \ + if(Rg&0x80) \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]; \ + } +#define M_RR(Rg) \ + if(Rg&0x01) \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]; \ + } + +#define M_SLA(Rg) \ + R->AF.B.l=Rg>>7;Rg<<=1;R->AF.B.l|=PZSTable[Rg] +#define M_SRA(Rg) \ + R->AF.B.l=Rg&C_FLAG;Rg=(Rg>>1)|(Rg&0x80);R->AF.B.l|=PZSTable[Rg] + +#define M_SLL(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|0x01;R->AF.B.l|=PZSTable[Rg] +#define M_SRL(Rg) \ + R->AF.B.l=Rg&0x01;Rg>>=1;R->AF.B.l|=PZSTable[Rg] + +#define M_BIT(Bit,Rg) \ + R->AF.B.l=(R->AF.B.l&~(N_FLAG|Z_FLAG))|H_FLAG|(Rg&(1<Rg.B.l=RdZ80(R->SP.W++);R->Rg.B.h=RdZ80(R->SP.W++) +#define M_PUSH(Rg) \ + WrZ80(--R->SP.W,R->Rg.B.h);WrZ80(--R->SP.W,R->Rg.B.l) + +#define M_CALL \ + J.B.l=RdZ80(R->PC.W++);J.B.h=RdZ80(R->PC.W++); \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l); \ + R->PC.W=J.W + +#define M_JP J.B.l=RdZ80(R->PC.W++);J.B.h=RdZ80(R->PC.W);R->PC.W=J.W +#define M_JR R->PC.W+=(offset)RdZ80(R->PC.W)+1 +#define M_RET R->PC.B.l=RdZ80(R->SP.W++);R->PC.B.h=RdZ80(R->SP.W++) + +#define M_RST(Ad) \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l);R->PC.W=Ad + +#define M_LDWORD(Rg) \ + R->Rg.B.l=RdZ80(R->PC.W++);R->Rg.B.h=RdZ80(R->PC.W++) + +#define M_ADD(Rg) \ + J.W=R->AF.B.h+Rg; \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SUB(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_ADC(Rg) \ + J.W=R->AF.B.h+Rg+(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SBC(Rg) \ + J.W=R->AF.B.h-Rg-(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_CP(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG) + +#define M_AND(Rg) R->AF.B.h&=Rg;R->AF.B.l=H_FLAG|PZSTable[R->AF.B.h] +#define M_OR(Rg) R->AF.B.h|=Rg;R->AF.B.l=PZSTable[R->AF.B.h] +#define M_XOR(Rg) R->AF.B.h^=Rg;R->AF.B.l=PZSTable[R->AF.B.h] +#define M_IN(Rg) Rg=InZ80(R->BC.B.l);R->AF.B.l=PZSTable[Rg]|(R->AF.B.l&C_FLAG) + +#define M_INC(Rg) \ + Rg++; \ + R->AF.B.l= \ + (R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x80? V_FLAG:0)|(Rg&0x0F? 0:H_FLAG) + +#define M_DEC(Rg) \ + Rg--; \ + R->AF.B.l= \ + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x7F? V_FLAG:0)|((Rg&0x0F)==0x0F? H_FLAG:0) + +#define M_ADDW(Rg1,Rg2) \ + J.W=(R->Rg1.W+R->Rg2.W)&0xFFFF; \ + R->AF.B.l= \ + (R->AF.B.l&~(H_FLAG|N_FLAG|C_FLAG))| \ + ((R->Rg1.W^R->Rg2.W^J.W)&0x1000? H_FLAG:0)| \ + (((long)R->Rg1.W+(long)R->Rg2.W)&0x10000? C_FLAG:0); \ + R->Rg1.W=J.W + +#define M_ADCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W+R->Rg.W+I)&0xFFFF; \ + R->AF.B.l= \ + (((long)R->HL.W+(long)R->Rg.W+(long)I)&0x10000? C_FLAG:0)| \ + (~(R->HL.W^R->Rg.W)&(R->Rg.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +#define M_SBCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W-R->Rg.W-I)&0xFFFF; \ + R->AF.B.l= \ + N_FLAG| \ + (((long)R->HL.W-(long)R->Rg.W-(long)I)&0x10000? C_FLAG:0)| \ + ((R->HL.W^R->Rg.W)&(R->HL.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +enum Codes +{ + NOP,LD_BC_WORD,LD_xBC_A,INC_BC,INC_B,DEC_B,LD_B_BYTE,RLCA, + EX_AF_AF,ADD_HL_BC,LD_A_xBC,DEC_BC,INC_C,DEC_C,LD_C_BYTE,RRCA, + DJNZ,LD_DE_WORD,LD_xDE_A,INC_DE,INC_D,DEC_D,LD_D_BYTE,RLA, + JR,ADD_HL_DE,LD_A_xDE,DEC_DE,INC_E,DEC_E,LD_E_BYTE,RRA, + JR_NZ,LD_HL_WORD,LD_xWORD_HL,INC_HL,INC_H,DEC_H,LD_H_BYTE,DAA, + JR_Z,ADD_HL_HL,LD_HL_xWORD,DEC_HL,INC_L,DEC_L,LD_L_BYTE,CPL, + JR_NC,LD_SP_WORD,LD_xWORD_A,INC_SP,INC_xHL,DEC_xHL,LD_xHL_BYTE,SCF, + JR_C,ADD_HL_SP,LD_A_xWORD,DEC_SP,INC_A,DEC_A,LD_A_BYTE,CCF, + LD_B_B,LD_B_C,LD_B_D,LD_B_E,LD_B_H,LD_B_L,LD_B_xHL,LD_B_A, + LD_C_B,LD_C_C,LD_C_D,LD_C_E,LD_C_H,LD_C_L,LD_C_xHL,LD_C_A, + LD_D_B,LD_D_C,LD_D_D,LD_D_E,LD_D_H,LD_D_L,LD_D_xHL,LD_D_A, + LD_E_B,LD_E_C,LD_E_D,LD_E_E,LD_E_H,LD_E_L,LD_E_xHL,LD_E_A, + LD_H_B,LD_H_C,LD_H_D,LD_H_E,LD_H_H,LD_H_L,LD_H_xHL,LD_H_A, + LD_L_B,LD_L_C,LD_L_D,LD_L_E,LD_L_H,LD_L_L,LD_L_xHL,LD_L_A, + LD_xHL_B,LD_xHL_C,LD_xHL_D,LD_xHL_E,LD_xHL_H,LD_xHL_L,HALT,LD_xHL_A, + LD_A_B,LD_A_C,LD_A_D,LD_A_E,LD_A_H,LD_A_L,LD_A_xHL,LD_A_A, + ADD_B,ADD_C,ADD_D,ADD_E,ADD_H,ADD_L,ADD_xHL,ADD_A, + ADC_B,ADC_C,ADC_D,ADC_E,ADC_H,ADC_L,ADC_xHL,ADC_A, + SUB_B,SUB_C,SUB_D,SUB_E,SUB_H,SUB_L,SUB_xHL,SUB_A, + SBC_B,SBC_C,SBC_D,SBC_E,SBC_H,SBC_L,SBC_xHL,SBC_A, + AND_B,AND_C,AND_D,AND_E,AND_H,AND_L,AND_xHL,AND_A, + XOR_B,XOR_C,XOR_D,XOR_E,XOR_H,XOR_L,XOR_xHL,XOR_A, + OR_B,OR_C,OR_D,OR_E,OR_H,OR_L,OR_xHL,OR_A, + CP_B,CP_C,CP_D,CP_E,CP_H,CP_L,CP_xHL,CP_A, + RET_NZ,POP_BC,JP_NZ,JP,CALL_NZ,PUSH_BC,ADD_BYTE,RST00, + RET_Z,RET,JP_Z,PFX_CB,CALL_Z,CALL,ADC_BYTE,RST08, + RET_NC,POP_DE,JP_NC,OUTA,CALL_NC,PUSH_DE,SUB_BYTE,RST10, + RET_C,EXX,JP_C,INA,CALL_C,PFX_DD,SBC_BYTE,RST18, + RET_PO,POP_HL,JP_PO,EX_HL_xSP,CALL_PO,PUSH_HL,AND_BYTE,RST20, + RET_PE,LD_PC_HL,JP_PE,EX_DE_HL,CALL_PE,PFX_ED,XOR_BYTE,RST28, + RET_P,POP_AF,JP_P,DI,CALL_P,PUSH_AF,OR_BYTE,RST30, + RET_M,LD_SP_HL,JP_M,EI,CALL_M,PFX_FD,CP_BYTE,RST38 +}; + +enum CodesCB +{ + RLC_B,RLC_C,RLC_D,RLC_E,RLC_H,RLC_L,RLC_xHL,RLC_A, + RRC_B,RRC_C,RRC_D,RRC_E,RRC_H,RRC_L,RRC_xHL,RRC_A, + RL_B,RL_C,RL_D,RL_E,RL_H,RL_L,RL_xHL,RL_A, + RR_B,RR_C,RR_D,RR_E,RR_H,RR_L,RR_xHL,RR_A, + SLA_B,SLA_C,SLA_D,SLA_E,SLA_H,SLA_L,SLA_xHL,SLA_A, + SRA_B,SRA_C,SRA_D,SRA_E,SRA_H,SRA_L,SRA_xHL,SRA_A, + SLL_B,SLL_C,SLL_D,SLL_E,SLL_H,SLL_L,SLL_xHL,SLL_A, + SRL_B,SRL_C,SRL_D,SRL_E,SRL_H,SRL_L,SRL_xHL,SRL_A, + BIT0_B,BIT0_C,BIT0_D,BIT0_E,BIT0_H,BIT0_L,BIT0_xHL,BIT0_A, + BIT1_B,BIT1_C,BIT1_D,BIT1_E,BIT1_H,BIT1_L,BIT1_xHL,BIT1_A, + BIT2_B,BIT2_C,BIT2_D,BIT2_E,BIT2_H,BIT2_L,BIT2_xHL,BIT2_A, + BIT3_B,BIT3_C,BIT3_D,BIT3_E,BIT3_H,BIT3_L,BIT3_xHL,BIT3_A, + BIT4_B,BIT4_C,BIT4_D,BIT4_E,BIT4_H,BIT4_L,BIT4_xHL,BIT4_A, + BIT5_B,BIT5_C,BIT5_D,BIT5_E,BIT5_H,BIT5_L,BIT5_xHL,BIT5_A, + BIT6_B,BIT6_C,BIT6_D,BIT6_E,BIT6_H,BIT6_L,BIT6_xHL,BIT6_A, + BIT7_B,BIT7_C,BIT7_D,BIT7_E,BIT7_H,BIT7_L,BIT7_xHL,BIT7_A, + RES0_B,RES0_C,RES0_D,RES0_E,RES0_H,RES0_L,RES0_xHL,RES0_A, + RES1_B,RES1_C,RES1_D,RES1_E,RES1_H,RES1_L,RES1_xHL,RES1_A, + RES2_B,RES2_C,RES2_D,RES2_E,RES2_H,RES2_L,RES2_xHL,RES2_A, + RES3_B,RES3_C,RES3_D,RES3_E,RES3_H,RES3_L,RES3_xHL,RES3_A, + RES4_B,RES4_C,RES4_D,RES4_E,RES4_H,RES4_L,RES4_xHL,RES4_A, + RES5_B,RES5_C,RES5_D,RES5_E,RES5_H,RES5_L,RES5_xHL,RES5_A, + RES6_B,RES6_C,RES6_D,RES6_E,RES6_H,RES6_L,RES6_xHL,RES6_A, + RES7_B,RES7_C,RES7_D,RES7_E,RES7_H,RES7_L,RES7_xHL,RES7_A, + SET0_B,SET0_C,SET0_D,SET0_E,SET0_H,SET0_L,SET0_xHL,SET0_A, + SET1_B,SET1_C,SET1_D,SET1_E,SET1_H,SET1_L,SET1_xHL,SET1_A, + SET2_B,SET2_C,SET2_D,SET2_E,SET2_H,SET2_L,SET2_xHL,SET2_A, + SET3_B,SET3_C,SET3_D,SET3_E,SET3_H,SET3_L,SET3_xHL,SET3_A, + SET4_B,SET4_C,SET4_D,SET4_E,SET4_H,SET4_L,SET4_xHL,SET4_A, + SET5_B,SET5_C,SET5_D,SET5_E,SET5_H,SET5_L,SET5_xHL,SET5_A, + SET6_B,SET6_C,SET6_D,SET6_E,SET6_H,SET6_L,SET6_xHL,SET6_A, + SET7_B,SET7_C,SET7_D,SET7_E,SET7_H,SET7_L,SET7_xHL,SET7_A +}; + +enum CodesED +{ + DB_00,DB_01,DB_02,DB_03,DB_04,DB_05,DB_06,DB_07, + DB_08,DB_09,DB_0A,DB_0B,DB_0C,DB_0D,DB_0E,DB_0F, + DB_10,DB_11,DB_12,DB_13,DB_14,DB_15,DB_16,DB_17, + DB_18,DB_19,DB_1A,DB_1B,DB_1C,DB_1D,DB_1E,DB_1F, + DB_20,DB_21,DB_22,DB_23,DB_24,DB_25,DB_26,DB_27, + DB_28,DB_29,DB_2A,DB_2B,DB_2C,DB_2D,DB_2E,DB_2F, + DB_30,DB_31,DB_32,DB_33,DB_34,DB_35,DB_36,DB_37, + DB_38,DB_39,DB_3A,DB_3B,DB_3C,DB_3D,DB_3E,DB_3F, + IN_B_xC,OUT_xC_B,SBC_HL_BC,LD_xWORDe_BC,NEG,RETN,IM_0,LD_I_A, + IN_C_xC,OUT_xC_C,ADC_HL_BC,LD_BC_xWORDe,DB_4C,RETI,DB_,LD_R_A, + IN_D_xC,OUT_xC_D,SBC_HL_DE,LD_xWORDe_DE,DB_54,DB_55,IM_1,LD_A_I, + IN_E_xC,OUT_xC_E,ADC_HL_DE,LD_DE_xWORDe,DB_5C,DB_5D,IM_2,LD_A_R, + IN_H_xC,OUT_xC_H,SBC_HL_HL,LD_xWORDe_HL,DB_64,DB_65,DB_66,RRD, + IN_L_xC,OUT_xC_L,ADC_HL_HL,LD_HL_xWORDe,DB_6C,DB_6D,DB_6E,RLD, + IN_F_xC,DB_71,SBC_HL_SP,LD_xWORDe_SP,DB_74,DB_75,DB_76,DB_77, + IN_A_xC,OUT_xC_A,ADC_HL_SP,LD_SP_xWORDe,DB_7C,DB_7D,DB_7E,DB_7F, + DB_80,DB_81,DB_82,DB_83,DB_84,DB_85,DB_86,DB_87, + DB_88,DB_89,DB_8A,DB_8B,DB_8C,DB_8D,DB_8E,DB_8F, + DB_90,DB_91,DB_92,DB_93,DB_94,DB_95,DB_96,DB_97, + DB_98,DB_99,DB_9A,DB_9B,DB_9C,DB_9D,DB_9E,DB_9F, + LDI,CPI,INI,OUTI,DB_A4,DB_A5,DB_A6,DB_A7, + LDD,CPD,IND,OUTD,DB_AC,DB_AD,DB_AE,DB_AF, + LDIR,CPIR,INIR,OTIR,DB_B4,DB_B5,DB_B6,DB_B7, + LDDR,CPDR,INDR,OTDR,DB_BC,DB_BD,DB_BE,DB_BF, + DB_C0,DB_C1,DB_C2,DB_C3,DB_C4,DB_C5,DB_C6,DB_C7, + DB_C8,DB_C9,DB_CA,DB_CB,DB_CC,DB_CD,DB_CE,DB_CF, + DB_D0,DB_D1,DB_D2,DB_D3,DB_D4,DB_D5,DB_D6,DB_D7, + DB_D8,DB_D9,DB_DA,DB_DB,DB_DC,DB_DD,DB_DE,DB_DF, + DB_E0,DB_E1,DB_E2,DB_E3,DB_E4,DB_E5,DB_E6,DB_E7, + DB_E8,DB_E9,DB_EA,DB_EB,DB_EC,DB_ED,DB_EE,DB_EF, + DB_F0,DB_F1,DB_F2,DB_F3,DB_F4,DB_F5,DB_F6,DB_F7, + DB_F8,DB_F9,DB_FA,DB_FB,DB_FC,DB_FD,DB_FE,DB_FF +}; + +static void CodesCB(register Z80 *R) +{ + register byte I; + + I=RdZ80(R->PC.W++); + R->ICount-=CyclesCB[I]; + switch(I) + { +#include "CodesCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: CB %02X at PC=%04X\n", + (long)(R->User),RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IX + J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD CB %02X %02X at PC=%04X\n", + (long)(R->User),RdZ80(R->PC.W-2),RdZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesFDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IY + J.W=R->XX.W+(offset)RdZ80(R->PC.W++); + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: FD CB %02X %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-2),RdZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesED(register Z80 *R) +{ + register byte I; + register pair J; + + I=RdZ80(R->PC.W++); + R->ICount-=CyclesED[I]; + switch(I) + { +#include "CodesED.h" + case PFX_ED: + R->PC.W--;break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: ED %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IX + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesDDCB(R);break; + case HALT: + R->PC.W--;R->IFF|=0x80;R->ICount=0;break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD %02X at PC=%04X\n", + (long)R->User,RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +static void CodesFD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IY + I=RdZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesFDCB(R);break; + case HALT: + R->PC.W--;R->IFF|=0x80;R->ICount=0;break; + default: + printf + ( + "Unrecognized instruction: FD %02X at PC=%04X\n", + RdZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the register struct **/ +/** before starting execution with Z80(). It sets the **/ +/** registers to their supposed initial values. **/ +/*************************************************************/ +void ResetZ80(Z80 *R) +{ + R->PC.W=0x0000;R->SP.W=0xF000; + R->AF.W=R->BC.W=R->DE.W=R->HL.W=0x0000; + R->AF1.W=R->BC1.W=R->DE1.W=R->HL1.W=0x0000; + R->IX.W=R->IY.W=0x0000; + R->I=0x00;R->IFF=0x00; + R->ICount=R->IPeriod; + R->IRequest=INT_NONE; +} + +/** ExecZ80() ************************************************/ +/** This function will execute a single Z80 opcode. It will **/ +/** then return next PC, and current register values in R. **/ +/*************************************************************/ +word ExecZ80(Z80 *R) +{ + register byte I; + register pair J; + + I=RdZ80(R->PC.W++); + R->ICount-=Cycles[I]; + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + + /* We are done */ + return(R->PC.W); +} + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(Z80 *R,word Vector) +{ + if((R->IFF&0x01)||(Vector==INT_NMI)) + { + /* Experimental V Shouldn't disable all interrupts? */ + R->IFF=(R->IFF&0x9E)|((R->IFF&0x01)<<6); + if(R->IFF&0x80) { R->PC.W++;R->IFF&=0x7F; } + M_PUSH(PC); + + /* Automatically reset IRequest if needed */ + if(R->IAutoReset&&(Vector==R->IRequest)) R->IRequest=INT_NONE; + + if(Vector==INT_NMI) R->PC.W=INT_NMI; + else + if(R->IFF&0x04) + { + Vector=(Vector&0xFF)|((word)(R->I)<<8); + R->PC.B.l=RdZ80(Vector++); + R->PC.B.h=RdZ80(Vector); + } + else + if(R->IFF&0x02) R->PC.W=INT_IRQ; + else R->PC.W=Vector; + } +} + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +static byte I; +static pair J; + +word RunZ80(Z80 *R) +{ +// register byte I; +// register pair J; + int ras=0; + + for(;;) + { +//#ifdef DEBUG +// /* Turn tracing on when reached trap address */ +// if(R->PC.W==R->Trap) R->Trace=1; +// /* Call single-step debugger, exit if requested */ +// if(R->Trace) +// if(!DebugZ80(R)) return(R->PC.W); +//#endif + + I=RdZ80(R->PC.W++); + R->ICount-=Cycles[I]; + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + + /* If cycle counter expired... */ + if(R->ICount<=0) + { + /* If we have come after EI, get address from IRequest */ + /* Otherwise, get it from the loop handler */ + if(R->IFF&0x20) + { + J.W=R->IRequest; /* Get pending interrupt */ + R->ICount+=R->IBackup-1; /* Restore the ICount */ + R->IFF&=0xDF; /* Done with AfterEI state */ + } + else + { + J.W=LoopZ80(R, &ras); /* Call periodic handler */ + R->ICount=R->IPeriod; /* Reset the cycle counter */ + if(J.W==INT_NONE) I=R->IRequest; /* Pending int-rupt */ + } + + if(J.W==INT_QUIT) return(R->PC.W); /* Exit if INT_QUIT */ + if(J.W!=INT_NONE) IntZ80(R,J.W); /* Int-pt if needed */ + } + if (ras == 1) break; + } + + /* Execution stopped */ + return(R->PC.W); +} diff --git a/MCUME_teensy/teensycolem/Z80.h b/MCUME_teensy/teensycolem/Z80.h new file mode 100644 index 0000000..2f222e4 --- /dev/null +++ b/MCUME_teensy/teensycolem/Z80.h @@ -0,0 +1,141 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.h **/ +/** **/ +/** This file contains declarations relevant to emulation **/ +/** of Z80 CPU. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-1998 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef Z80_H +#define Z80_H + + /* Compilation options: */ +/* #define DEBUG */ /* Compile debugging version */ +/* #define LSB_FIRST */ /* Compile for low-endian CPU */ +/* #define MSB_FIRST */ /* Compile for hi-endian CPU */ + + /* LoopZ80() may return: */ +#define INT_IRQ 0x0038 /* Standard RST 38h interrupt */ +#define INT_NMI 0x0066 /* Non-maskable interrupt */ +#define INT_NONE 0xFFFF /* No interrupt required */ +#define INT_QUIT 0xFFFE /* Exit the emulation */ + + /* Bits in Z80 F register: */ +#define S_FLAG 0x80 /* 1: Result negative */ +#define Z_FLAG 0x40 /* 1: Result is zero */ +#define H_FLAG 0x10 /* 1: Halfcarry/Halfborrow */ +#define P_FLAG 0x04 /* 1: Result is even */ +#define V_FLAG 0x04 /* 1: Overflow occured */ +#define N_FLAG 0x02 /* 1: Subtraction occured */ +#define C_FLAG 0x01 /* 1: Carry/Borrow occured */ + +/** Simple Datatypes *****************************************/ +/** NOTICE: sizeof(byte)=1 and sizeof(word)=2 **/ +/*************************************************************/ +typedef unsigned char byte; +typedef unsigned short word; +typedef signed char offset; + +/** Structured Datatypes *************************************/ +/** NOTICE: #define LSB_FIRST for machines where least **/ +/** signifcant byte goes first. **/ +/*************************************************************/ +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h; } B; +#else + struct { byte h,l; } B; +#endif + word W; +} pair; + +typedef struct +{ + pair AF,BC,DE,HL,IX,IY,PC,SP; /* Main registers */ + pair AF1,BC1,DE1,HL1; /* Shadow registers */ + byte IFF,I; /* Interrupt registers */ + byte R; /* Refresh register */ + + int IPeriod,ICount; /* Set IPeriod to number of CPU cycles */ + /* between calls to LoopZ80() */ + int IBackup; /* Private, don't touch */ + word IRequest; /* Set to address of pending IRQ */ + byte IAutoReset; /* Set to 1 to autom. reset IRequest */ + byte TrapBadOps; /* Set to 1 to warn of illegal opcodes */ + word Trap; /* Set Trap to address to trace from */ + byte Trace; /* Set Trace=1 to start tracing */ + void *User; /* Arbitrary user data (ID,RAM*,etc.) */ +} Z80; + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the registers before **/ +/** starting execution with RunZ80(). It sets registers to **/ +/** their initial values. **/ +/*************************************************************/ +void ResetZ80(register Z80 *R); + +/** ExecZ80() ************************************************/ +/** This function will execute a single Z80 opcode. It will **/ +/** then return next PC, and current register values in R. **/ +/*************************************************************/ +word ExecZ80(register Z80 *R); + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(register Z80 *R,register word Vector); + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +word RunZ80(register Z80 *R); + +/** RdZ80()/WrZ80() ******************************************/ +/** These functions are called when access to RAM occurs. **/ +/** They allow to control memory access. **/ +/************************************ TO BE WRITTEN BY USER **/ +void WrZ80(register word Addr,register byte Value); +byte RdZ80(register word Addr); + +/** InZ80()/OutZ80() *****************************************/ +/** Z80 emulation calls these functions to read/write from **/ +/** I/O ports. There can be 65536 I/O ports, but only first **/ +/** 256 are usually used **/ +/************************************ TO BE WRITTEN BY USER **/ +void OutZ80(register word Port,register byte Value); +byte InZ80(register word Port); + +/** PatchZ80() ***********************************************/ +/** Z80 emulation calls this function when it encounters a **/ +/** special patch command (ED FE) provided for user needs. **/ +/** For example, it can be called to emulate BIOS calls, **/ +/** such as disk and tape access. Replace it with an empty **/ +/** macro for no patching. **/ +/************************************ TO BE WRITTEN BY USER **/ +void PatchZ80(register Z80 *R); + +/** DebugZ80() ***********************************************/ +/** This function should exist if DEBUG is #defined. When **/ +/** Trace!=0, it is called after each command executed by **/ +/** the CPU, and given the Z80 registers. Emulation exits **/ +/** if DebugZ80() returns 0. **/ +/*************************************************************/ +byte DebugZ80(register Z80 *R); + +/** LoopZ80() ************************************************/ +/** Z80 emulation calls this function periodically to check **/ +/** if the system hardware requires any interrupts. This **/ +/** function must return an address of the interrupt vector **/ +/** (0x0038, 0x0066, etc.) or INT_NONE for no interrupt. **/ +/** Return INT_QUIT to exit the emulation loop. **/ +/************************************ TO BE WRITTEN BY USER **/ +word LoopZ80(register Z80 *R, int * ras); + +#endif /* Z80_H */ diff --git a/MCUME_teensy/teensycolem/bmpjoy.h b/MCUME_teensy/teensycolem/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensycolem/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensycolem/bmptft.h b/MCUME_teensy/teensycolem/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensycolem/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensycolem/bmpvbar.h b/MCUME_teensy/teensycolem/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensycolem/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensycolem/bmpvga.h b/MCUME_teensy/teensycolem/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensycolem/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensycolem/emuapi.cpp b/MCUME_teensy/teensycolem/emuapi.cpp new file mode 100644 index 0000000..1b702d8 --- /dev/null +++ b/MCUME_teensy/teensycolem/emuapi.cpp @@ -0,0 +1,1045 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensycolem/emuapi.h b/MCUME_teensy/teensycolem/emuapi.h new file mode 100644 index 0000000..d60ce96 --- /dev/null +++ b/MCUME_teensy/teensycolem/emuapi.h @@ -0,0 +1,131 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " Coleco Emulator " +#define ROMSDIR "coleco" + +#define emu_Init(ROM) {coc_Init();coc_Start(ROM);} +#define emu_Step() {coc_Step();} +#define emu_Input(x) {} + +#define PALETTE_SIZE 16 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 12 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 128 +#define KEYBOARD_Y 84 +#define KEYBOARD_KEY_H 21 +#define KEYBOARD_KEY_W 21 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,20,20,20, + TAREA_NEW_ROW,20,20,20, + TAREA_NEW_ROW,20,20,20, + TAREA_NEW_ROW,20,20,20, + TAREA_END}; + +const unsigned short keys[] = { + 2,3,4, + 5,6,7, + 8,9,10, + 11,1,12}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180, + 0X0108,0X0280,0X0208, + 0X0380,0X0308,0X0480, + 0X0040,0X0408,0X0004}; +#endif + +#endif + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensycolem/font8x8.h b/MCUME_teensy/teensycolem/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensycolem/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensycolem/iopins.h b/MCUME_teensy/teensycolem/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensycolem/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensycolem/keyboard.h b/MCUME_teensy/teensycolem/keyboard.h new file mode 100644 index 0000000..7f8dac3 --- /dev/null +++ b/MCUME_teensy/teensycolem/keyboard.h @@ -0,0 +1,132 @@ +/**************************************************************************** +* Purpose : Keyboard input driver. +* Module : Keyboard +* Author : J-M Harvengt +* History : 10/08/97 Creation +****************************************************************************/ +#ifndef _KEYBOARD +#define _KEYBOARD + +/**************************************************************************** +* Macros / typedefs +****************************************************************************/ +#define SOURCE_REM 0x01 +#define SOURCE_PAD 0x02 +#define SOURCE_KEYB 0x03 + +/* keys id */ +#define KEY_UNKNOWN 0x00 +#define KEY_LEFT 0x01 +#define KEY_RIGHT 0x02 +#define KEY_UP 0x03 +#define KEY_DOWN 0x04 +#define KEY_SPACE 0x05 + +#define KEY_FONE 0x06 +#define KEY_FTWO 0x07 +#define KEY_FTHREE 0x08 +#define KEY_FFOUR 0x09 +#define KEY_FFIVE 0x0a +#define KEY_FSIX 0x0b +#define KEY_FSEVEN 0x0c +#define KEY_FEIGHT 0x0d +#define KEY_FNINE 0x0e +#define KEY_FZERO 0x0f + +#define KEY_ONE 0x10 +#define KEY_TWO 0x11 +#define KEY_THREE 0x12 +#define KEY_FOUR 0x13 +#define KEY_FIVE 0x14 +#define KEY_SIX 0x15 +#define KEY_SEVEN 0x16 +#define KEY_EIGHT 0x17 +#define KEY_NINE 0x18 +#define KEY_ZERO 0x19 + +#define KEY_OK KEY_SPACE +#define KEY_BUT KEY_SPACE +#define KEY_BACK KEY_FONE +#define KEY_MENU KEY_FTWO +#define KEY_TELEWEB KEY_FTHREE +#define KEY_TELETEXT KEY_FFOUR +#define KEY_COIN KEY_FTHREE +#define KEY_ONEUP KEY_FFOUR + +/* Bit mask for pad keys */ +#define JKEY_PLEFT 0x0001 +#define JKEY_PRIGHT 0x0002 +#define JKEY_PUP 0x0004 +#define JKEY_PDOWN 0x0008 +#define JKEY_PSPACE 0x0010 +#define JKEY_PONE 0x0020 +#define JKEY_PTWO 0x0040 +#define JKEY_PTHREE 0x0080 +#define JKEY_PFOUR 0x0100 +#define JKEY_PFIVE 0x0200 +#define JKEY_PSIX 0x0400 +#define JKEY_PSEVEN 0x0800 +#define JKEY_PEIGHT 0x1000 +#define JKEY_PNINE 0x2000 +#define JKEY_PZERO 0x4000 + +#define JKEY_LEFT 0x00010000 +#define JKEY_RIGHT 0x00020000 +#define JKEY_UP 0x00040000 +#define JKEY_DOWN 0x00080000 +#define JKEY_SPACE 0x00100000 +#define JKEY_ONE 0x00200000 +#define JKEY_TWO 0x00400000 +#define JKEY_THREE 0x00800000 +#define JKEY_FOUR 0x01000000 +#define JKEY_FIVE 0x02000000 +#define JKEY_SIX 0x04000000 +#define JKEY_SEVEN 0x08000000 +#define JKEY_EIGHT 0x10000000 +#define JKEY_NINE 0x20000000 +#define JKEY_ZERO 0x40000000 + +#define JKEY_OK JKEY_SPACE +#define JKEY_BUT JKEY_SPACE +#define JKEY_BACK JKEY_ONE +#define JKEY_MENU JKEY_TWO +#define JKEY_TELEWEB JKEY_THREE +#define JKEY_TELETEXT JKEY_FOUR +#define JKEY_COIN JKEY_THREE +#define JKEY_ONEUP JKEY_FOUR +#define JKEY_PPLUS JKEY_EIGHT +#define JKEY_PMINUS JKEY_NINE + +#define JKEY_POK JKEY_PSPACE +#define JKEY_PBUT JKEY_PSPACE +#define JKEY_PBACK JKEY_PONE +#define JKEY_PMENU JKEY_PTWO +#define JKEY_PTELEWEB JKEY_PTHREE +#define JKEY_PTELETEXT JKEY_PFOUR +#define JKEY_PEPG JKEY_PFIVE +#define JKEY_PCOIN JKEY_PTHREE +#define JKEY_PONEUP JKEY_PFOUR +#define JKEY_PPPLUS JKEY_PEIGHT +#define JKEY_PPMINUS JKEY_PNINE + +/* Bit mask for mouse button */ +#define LMOUSEDOWN 0x40 +#define LMOUSEUP 0x80 + +/**************************************************************************** +* Exported procedures +****************************************************************************/ +extern void key_Init(void); +extern void key_TurnOn(void); +extern void key_TurnOff(void); + +extern void key_OnKeyDown(int aSource, int aKey); +extern void key_OnKeyUp(int aSource, int aKey); +extern void key_SubscribeKeyUp(void * callback); +extern void key_SubscribeKeyDown(void * callback); +extern void key_OnKeyTimer(void); +extern int key_GetKeyPad(void); + +extern void key_OnMouseMove(int x, int y, int b); +extern void key_GetMouseMove(int *x, int *y, int *b); +#endif diff --git a/MCUME_teensy/teensycolem/keyboard_osd.h b/MCUME_teensy/teensycolem/keyboard_osd.h new file mode 100644 index 0000000..4c31e6f --- /dev/null +++ b/MCUME_teensy/teensycolem/keyboard_osd.h @@ -0,0 +1,19 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif diff --git a/MCUME_teensy/teensycolem/logo.h b/MCUME_teensy/teensycolem/logo.h new file mode 100644 index 0000000..32b8295 --- /dev/null +++ b/MCUME_teensy/teensycolem/logo.h @@ -0,0 +1,201 @@ +const uint16_t logo[] PROGMEM = { +0x0140,0x00c8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x94b2,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa513,0x94b2,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x0000,0x4a49,0x39e7,0x39c6,0x31a6,0x31c6,0x31a7,0x31a7,0x31a6,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x39c7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c6,0x39c7,0x39c7,0x39c7,0x39c7,0x39c6,0x39c6,0x39c6,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c6,0x39c7,0x4207,0x4a49,0x10a2,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2944,0x2965,0x2965,0x2965,0x2945,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2965,0x2965,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2945,0x2124,0x2124,0x2124,0x2103,0x0861,0x0020,0x0840,0x0861,0x0861,0x18a2,0x2103,0x2103,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2965,0x3186,0x2945,0x2104,0x2945,0x18e3,0x0000,0x0000,0x1081,0x39e7,0x4a48,0x4228,0x4228,0x4228,0x39c7,0x18e3,0x1081,0x10a2,0x2103,0x2104,0x2103,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4207,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2965,0x2104,0x2124,0x2124,0x0000,0x18c3,0x632c,0x8c71,0x9cf3,0xb5b6,0xbdf7,0xbdd7,0xb596,0xad75,0x9cd3,0x8410,0x6b6d,0x4a69,0x2945,0x10a2,0x2124,0x2104,0x18e3,0x2945,0x2965,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2945,0x18e3,0x2945,0x0000,0x0000,0x8410,0xbdd7,0xd6ba,0xdefb,0xdedb,0xce79,0xce59,0xc618,0xbdd7,0xb596,0xad75,0xad75,0xa534,0x94b2,0x7bef,0x5acb,0x2944,0x2103,0x2124,0x18e3,0x2124,0x2965,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2944,0x2104,0x2944,0x0000,0x632c,0xc618,0xe73c,0xef5d,0xdefb,0xd6ba,0xce79,0xce59,0xc638,0xbdf7,0xb5b6,0xad75,0xad55,0xa514,0x9cd3,0x9cd3,0x9cd3,0x8c72,0x73ae,0x4228,0x2103,0x2124,0x18e3,0x2104,0x2965,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3185,0x2944,0x2103,0x2124,0x0000,0x9491,0xe71c,0xef7d,0xe73c,0xdefb,0xdefb,0xdedb,0xd69a,0xce79,0xc638,0xbdf7,0xb5b6,0xad75,0xad55,0xa514,0x9cd3,0x9492,0x8c71,0x8c71,0x8c71,0x8410,0x52aa,0x2124,0x2944,0x18e3,0x2104,0x2945,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x4208,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2103,0x2124,0x0000,0xa534,0xef7d,0xef7d,0xe73c,0xe73c,0xe71c,0xdefb,0xdedb,0xd6ba,0xce79,0xc638,0xbdf7,0xb5b6,0xad75,0xa534,0x9cf3,0x9cd3,0x9492,0x8c71,0x8430,0x8410,0x8410,0x8410,0x5aeb,0x2124,0x2944,0x18e3,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b76,0x7417,0x5b76,0x7417,0xb5fa,0xdf1d,0xce7b,0xe75d,0xe75d,0xe75d,0xe73d,0xe73c,0xdf1c,0xdf1c,0xdf1c,0xdefc,0xdefb,0xdefb,0xdefc,0xdefb,0xdefb,0xdedb,0xd6db,0xd6db,0xd6bb,0xd6bb,0xd6ba,0xd69a,0xd69a,0xd69a,0xce9a,0xce79,0xce79,0xc679,0xc659,0xc659,0xc659,0xc659,0xc639,0xbe18,0xbdf7,0xb5d7,0xbdd8,0xb5f7,0xb5d7,0xb5d7,0xb5d7,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6db,0xb5b6,0xad96,0xad96,0xad96,0xad75,0xa555,0xad76,0xad75,0xa575,0xad55,0xa555,0xa555,0xa555,0xad75,0xad75,0xa555,0xad75,0xad76,0xad76,0xad76,0xad75,0xad76,0xad75,0xad75,0xa555,0xa555,0xa575,0xa575,0xa575,0xad75,0xad75,0xad76,0xad96,0xad96,0xadb6,0xadb6,0xb596,0xb5b6,0xb5b7,0xb5b7,0xb5b7,0xb5b7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf8,0xbdf8,0xbdf8,0xbdf8,0xbdf8,0xc618,0xc618,0xc5f8,0xc618,0xc618,0xc618,0xc618,0xc639,0xc618,0xc639,0xc639,0xc639,0xc639,0xc639,0xc639,0xc659,0xc639,0xc639,0xce59,0xce59,0xc639,0xc659,0xce79,0xd6ba,0x8c50,0x0861,0x39e7,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2945,0x2965,0x18e3,0x2945,0x0000,0xa514,0xf79e,0xef7d,0xe73c,0xef5d,0xe73c,0xe73c,0xe71c,0xdefb,0xd6ba,0xd69a,0xc638,0xbdf7,0xb5b6,0xad75,0xa534,0x9cf3,0x94b2,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x8410,0x5acb,0x2104,0x2944,0x18e3,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x2965,0x9cf4,0xc5f8,0xb5b7,0xbdd7,0xb5b7,0xb5b6,0xb5b6,0xb596,0xb596,0xad76,0xb596,0xad96,0xad75,0xad75,0xa555,0xa555,0xa535,0xa535,0xa535,0xa514,0xa534,0xa535,0xa535,0xa514,0x9d14,0xa514,0xa534,0xad55,0xad96,0xb596,0xad76,0xad55,0xa555,0x9d34,0x9cf4,0x94d3,0x8cb2,0x8c92,0x8c72,0x8c72,0x8c71,0x8c71,0x8471,0x8c71,0x8c71,0x8451,0x8451,0x8451,0x8451,0x7c30,0x8451,0x8451,0x8430,0x8430,0x8430,0x8430,0x7c30,0x7c30,0x7c30,0x7c30,0x7c10,0x7bf0,0x7bf0,0x7bf0,0x7c10,0x7c10,0x7bf0,0x7c10,0x7bef,0x7c10,0x7bf0,0x7bef,0x7bef,0x7bf0,0x73ef,0x7bf0,0x7bcf,0x73af,0x7bcf,0x7bcf,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73af,0x6b8e,0x6b8e,0x6bae,0x73cf,0x73ef,0x73af,0x73ae,0x73cf,0x73cf,0x73cf,0x6b4e,0xa535,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x73cf,0x6b8e,0x6bae,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x73af,0x6bae,0x6b8e,0x73af,0x6b8e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6bae,0x6b8e,0x6b8e,0x6bae,0x6bae,0x73cf,0x73ae,0x6bae,0x6bae,0x6b8e,0x73af,0x6baf,0x73af,0x6bae,0x6baf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73af,0x738e,0x738e,0x738e,0x73ae,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73af,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x73af,0x73af,0x738e,0x6b8e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73cf,0x52ca,0x39c6,0x39c6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x3186,0x2104,0x2945,0x0000,0x8c71,0xef7d,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdefb,0xdedb,0xd69a,0xce59,0xc618,0xb5b6,0xad75,0xa514,0x9cd3,0x9492,0x8c71,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bef,0x8410,0x528a,0x2103,0x2124,0x2103,0x2945,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x630c,0x6b8e,0x6b6d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b6d,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x6b6e,0x738e,0x6b6e,0x738e,0x738e,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b4e,0x73ae,0x73ae,0x6bae,0x6b8e,0x6b8e,0x73af,0x6b8e,0x6b8e,0x73ae,0x6bae,0x6bae,0x6baf,0x73af,0x73cf,0x73af,0x73af,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73af,0x73ae,0x73af,0x73af,0x73ae,0x73ae,0x738e,0x6bae,0x73ae,0x738e,0x6b8e,0x73af,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x6b6d,0x6b6e,0x6b8e,0x6b8e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b6d,0x6b4d,0x6b4d,0x6b6e,0x6b4e,0x6b4d,0x6b6e,0x6b6e,0x632d,0x5b0c,0x634d,0x6b8e,0x6b8e,0x73ae,0x7c2f,0x8450,0x8430,0x8450,0x8451,0x8410,0x7bf0,0xd6bb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x8c92,0x7bef,0x8410,0x8410,0x7bef,0x7bef,0x73af,0x6b6e,0x6b4d,0x5b0c,0x5aec,0x5aec,0x5aeb,0x5aec,0x5b0c,0x5b0c,0x630c,0x632c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x632c,0x632c,0x632c,0x632c,0x634d,0x632d,0x632c,0x634d,0x632d,0x632d,0x632d,0x632d,0x632c,0x632c,0x632d,0x632d,0x632c,0x634d,0x634d,0x634d,0x632c,0x634d,0x632d,0x632c,0x632d,0x632c,0x632d,0x632d,0x632c,0x632c,0x634d,0x634d,0x632d,0x634d,0x634d,0x634d,0x634d,0x634d,0x634d,0x636d,0x6b6d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8e,0x52aa,0x39c7,0x39c6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2965,0x2945,0x2124,0x0000,0x630c,0xdefb,0xef7d,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdedb,0xd6ba,0xce59,0xc618,0xb5b6,0xad55,0xa514,0x94d3,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8430,0x7bcf,0x39c7,0x2124,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x5b0c,0x6b8d,0x6b6e,0x634d,0x6b6d,0x6b6e,0x632d,0x6b4d,0x6b6d,0x634d,0x632d,0x6b4d,0x632d,0x632c,0x632c,0x630c,0x630c,0x634c,0x5b0b,0x5aec,0x630d,0x632d,0x630c,0x5acb,0x630c,0x632d,0x630c,0x5aec,0x5b0c,0x5b2d,0x630c,0x5aeb,0x5aeb,0x632d,0x632d,0x5aeb,0x52cb,0x5b2d,0x5b0d,0x5aeb,0x52cb,0x52cb,0x5b2d,0x5b0c,0x52aa,0x52cb,0x5b0c,0x632c,0x5aeb,0x52ab,0x5b0d,0x5b0c,0x5acc,0x52ab,0x52cc,0x5b2c,0x5b0c,0x5aec,0x52ab,0x5b0c,0x5b0c,0x528a,0x52ab,0x5aec,0x5b0c,0x5aec,0x52ec,0x4aab,0x52cc,0x5aec,0x5acc,0x4a8b,0x52ac,0x5acc,0x5acb,0x52aa,0x528b,0x528b,0x52ab,0x52ab,0x52aa,0x5aeb,0x5acb,0x52ab,0x52cb,0x4249,0x31a6,0x4a8a,0x5aec,0x4a6a,0x2946,0x4a48,0x73ae,0x8430,0x8410,0x7c0f,0x7c10,0x8430,0x7bef,0xad95,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbe38,0x7bef,0x7bef,0x73ce,0x73ce,0x73ae,0x7bcf,0x6b4d,0x4208,0x3a08,0x2966,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0041,0x0021,0x0000,0x0041,0x0001,0x0062,0x0021,0x0000,0x0062,0x0062,0x0062,0x0062,0x08a2,0x10c3,0x10c3,0x1904,0x10e3,0x1904,0x1904,0x1925,0x2145,0x1925,0x10e4,0x10e4,0x1925,0x1925,0x10e4,0x1904,0x1924,0x1904,0x1904,0x2124,0x2104,0x2125,0x2965,0x2945,0x3186,0x31a7,0x3186,0x2986,0x3186,0x31a6,0x31c7,0x29a6,0x2986,0x2986,0x31a6,0x29a6,0x3a07,0x39e7,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2965,0x2124,0x2104,0x0861,0xb5b6,0xef7d,0xe71c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xdefb,0xd6ba,0xce59,0xc618,0xb5b6,0xad55,0x9cf3,0x94b2,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8430,0x8c71,0x632c,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x4a8a,0x52ab,0x52cb,0x52cb,0x5aeb,0x52ab,0x52cb,0x5acb,0x52cb,0x52aa,0x52ab,0x52cb,0x52ab,0x52ab,0x52ab,0x528a,0x4a4a,0x4a69,0x52ca,0x52ab,0x4a4a,0x528a,0x5acb,0x5acb,0x4a6a,0x4a8a,0x52cb,0x630c,0x52cb,0x4a6a,0x52aa,0x630c,0x5b0c,0x4a8a,0x4a8a,0x5aeb,0x632d,0x4a8b,0x4a6a,0x5aeb,0x6b6d,0x5b0d,0x4229,0x4a8a,0x6b4d,0x6b6e,0x52ab,0x528a,0x634c,0x6b8e,0x52ab,0x3a08,0x5aeb,0x73cf,0x5b2d,0x4228,0x4a8a,0x73af,0x738f,0x426a,0x4249,0x6b6d,0x7bf0,0x52ab,0x31e8,0x5b0c,0x7c10,0x636e,0x31e8,0x4a49,0x73ae,0x7c10,0x4229,0x2986,0x6b4d,0x8410,0x5acb,0x2966,0x528a,0x73cf,0x73ae,0x39e7,0x41e8,0x73ae,0x7c30,0x3a08,0x0000,0x632d,0x8c72,0x5acb,0x4228,0x7c10,0x7bcf,0x7bef,0x8410,0x8410,0x8410,0x8430,0x8430,0x8471,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8cb8,0x9d14,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6e,0x634d,0x4208,0x31a7,0x39c7,0x3186,0x31a7,0x2966,0x2945,0x2986,0x2966,0x2986,0x3186,0x2125,0x2945,0x31a7,0x2945,0x2966,0x2945,0x2945,0x2986,0x3186,0x3186,0x3186,0x3186,0x2965,0x2965,0x2965,0x2986,0x2966,0x2966,0x2145,0x2966,0x2965,0x2124,0x2986,0x2945,0x2945,0x3186,0x2945,0x2965,0x2965,0x2124,0x2986,0x3186,0x2966,0x3186,0x2966,0x3186,0x2946,0x2966,0x3187,0x3186,0x2966,0x2945,0x2966,0x3186,0x3186,0x2145,0x2946,0x2966,0x2966,0x2946,0x2125,0x2125,0x2125,0x2125,0x2945,0x2125,0x2145,0x2925,0x2945,0x2125,0x2946,0x2945,0x2125,0x39e7,0x4207,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2945,0x2965,0x2124,0x0000,0x738e,0xdefb,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xdefb,0xdedb,0xce79,0xc618,0xb5b6,0xa534,0x9cd3,0x8c71,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8c51,0x8c51,0x8c71,0x8430,0x4207,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x4a8a,0x73af,0x6b6e,0x2965,0x3186,0x738e,0x73af,0x39e8,0x1904,0x632c,0x7bef,0x52cb,0x1082,0x4a69,0x7bcf,0x6b6e,0x18c3,0x2144,0x7bee,0x8410,0x3187,0x0000,0x632d,0x8410,0x52cb,0x0000,0x4a49,0x7bef,0x6b8e,0x0021,0x18a2,0x73ce,0x8410,0x2104,0x0000,0x632c,0x8410,0x4a8a,0x0000,0x4228,0x7bef,0x6baf,0x0000,0x0861,0x73ae,0x8410,0x2145,0x0000,0x630b,0x7c30,0x4a8a,0x0000,0x39c6,0x7bef,0x73cf,0x0000,0x0000,0x738e,0x8430,0x2966,0x0000,0x62eb,0x7c30,0x5aec,0x0000,0x2144,0x7bf0,0x8410,0x0000,0x0000,0x6b8d,0x8c71,0x39e7,0x0000,0x528a,0x8430,0x6b6e,0x0000,0x0840,0x7bcf,0x8451,0x18e3,0x0000,0x632d,0x8c51,0x52cb,0x0000,0x39c7,0x8410,0x73cf,0x10c2,0x73ae,0x7c10,0x73ae,0x8430,0x8c51,0x8430,0x8430,0x8430,0x7c10,0xb5d6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7a,0x7bf0,0x7c10,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x6b6e,0x6b8e,0x3186,0x1082,0x39e8,0x39c7,0x39e7,0x31c7,0x3186,0x39c7,0x31a7,0x39c7,0x31c7,0x2125,0x3186,0x4208,0x3186,0x31c7,0x31a6,0x3186,0x39c7,0x39c7,0x31a7,0x39e7,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2145,0x2965,0x2124,0x2144,0x2145,0x2104,0x2965,0x1903,0x2124,0x2965,0x1903,0x2945,0x2965,0x2124,0x2965,0x2965,0x2945,0x2945,0x2124,0x2125,0x18e4,0x2125,0x2946,0x2966,0x2966,0x1904,0x2945,0x2945,0x2125,0x2124,0x2946,0x2125,0x2124,0x2945,0x18e4,0x18c3,0x18c3,0x18e4,0x2124,0x2104,0x2104,0x18c3,0x18e4,0x2125,0x2125,0x18e4,0x10c3,0x39c7,0x4207,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x2965,0x2945,0x18e3,0x10a2,0xad75,0xe71c,0xdedb,0xdefb,0xdefb,0xe71c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xdefb,0xd6ba,0xc638,0xb5b6,0xa534,0x94b2,0x8c51,0x8410,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8c51,0x8c71,0x8c71,0x9492,0x94b2,0x632c,0x2104,0x2124,0x2104,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x3185,0x73ce,0x738d,0x0000,0x0000,0x738d,0x7bef,0x2966,0x0000,0x4a89,0x7bef,0x5aeb,0x0000,0x10c2,0x73ce,0x73ae,0x0000,0x0000,0x738d,0x8410,0x31a7,0x0000,0x52aa,0x7bef,0x630c,0x0000,0x1061,0x73ae,0x73cf,0x0000,0x0000,0x6b4d,0x7c0f,0x39e7,0x0000,0x4a8a,0x8410,0x636d,0x0000,0x1060,0x7bce,0x7bf0,0x10a3,0x0000,0x6b6d,0x8430,0x4a48,0x0000,0x4228,0x7c0f,0x738e,0x0000,0x0000,0x73cf,0x7c30,0x2985,0x0000,0x632c,0x8430,0x52eb,0x0000,0x3185,0x7bcf,0x73cf,0x18e3,0x0000,0x73ae,0x8451,0x4a6a,0x0000,0x528a,0x7c0f,0x6b6d,0x10a3,0x0000,0x840f,0x8431,0x39e7,0x0000,0x6b4c,0x8450,0x632c,0x0000,0x31a6,0x8430,0x8430,0x31a6,0x0000,0x73ae,0x8c51,0x31a6,0x5aeb,0x8430,0x6b6d,0x7bcf,0x8410,0x7c10,0x8410,0x8430,0x7c10,0x8c92,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x73ef,0x7bef,0x7bef,0x73ae,0x73ae,0x73ae,0x6b4d,0x738e,0x5b0c,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2965,0x2124,0x0000,0x528a,0xce79,0xd6ba,0xd6ba,0xdedb,0xdedb,0xdefb,0xe71c,0xe73c,0xe73c,0xe73c,0xef5d,0xef7d,0xef5d,0xe71c,0xd6ba,0xc638,0xb596,0xa514,0x9492,0x8430,0x7bef,0x7bcf,0x7c0f,0x8430,0x8c51,0x8c71,0x9492,0x9492,0x94b2,0x94b2,0x9cf3,0x8430,0x2965,0x2124,0x2104,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x2124,0x73cf,0x7bcf,0x3186,0x0000,0x630c,0x7bef,0x52ab,0x0000,0x31a6,0x7bef,0x6b8e,0x2104,0x0000,0x73ae,0x7bef,0x4208,0x0000,0x634c,0x7bef,0x5aeb,0x2104,0x3186,0x7bef,0x73ae,0x3186,0x0000,0x7bcf,0x7bef,0x4a6a,0x0000,0x5acb,0x7bef,0x6b4d,0x2965,0x2124,0x7bef,0x7bcf,0x4a49,0x0000,0x73ae,0x7bef,0x5b0c,0x10a2,0x4a69,0x7bef,0x73ae,0x39e8,0x0000,0x8410,0x8410,0x5acb,0x0000,0x738d,0x840f,0x6b6d,0x2124,0x39c6,0x7bce,0x7c10,0x52aa,0x0000,0x7bce,0x8430,0x6b6c,0x0000,0x52aa,0x7c0f,0x7bf0,0x31c6,0x0821,0x7bf0,0x8c51,0x6b2d,0x0000,0x6b4d,0x8c30,0x7bd0,0x1083,0x31a6,0x8430,0x8c51,0x5acb,0x0000,0x7bcf,0x94b2,0x7c10,0x0000,0x4a69,0x94b2,0x8450,0x2104,0x73cf,0x73cf,0x73ae,0x8430,0x7c10,0x7c0f,0x8410,0x8410,0x8410,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x8430,0x7c0f,0x7bef,0x73ae,0x73ae,0x73ce,0x6b8d,0x6b4c,0x73af,0x4a6a,0x0000,0x0862,0x0020,0x0841,0x0861,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0041,0x0041,0x0841,0x0021,0x0821,0x0841,0x0020,0x0020,0x0041,0x0020,0x0040,0x0040,0x0841,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0841,0x0841,0x0020,0x0021,0x0020,0x0041,0x0041,0x0020,0x0020,0x0020,0x0040,0x0020,0x0841,0x0041,0x0021,0x0841,0x0041,0x0020,0x0040,0x0020,0x0040,0x0040,0x0040,0x0000,0x39c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2104,0x2124,0x2965,0x2124,0x0000,0x7bcf,0xd69a,0xce79,0xd69a,0xd69a,0xd6ba,0xdedb,0xdedb,0xdefb,0xdefb,0xe71c,0xef5d,0xef5d,0xef5d,0xe73c,0xdedb,0xce59,0xb596,0x9cd3,0x8c51,0x8410,0x7bef,0x8410,0x8430,0x8c51,0x9492,0x94b2,0x94b2,0x9cd3,0x9cd3,0x9cf3,0xa514,0x9cd3,0x4208,0x2124,0x2104,0x2104,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x2124,0x7bcf,0x7c0f,0x630c,0x31a6,0x52aa,0x8430,0x738e,0x4228,0x10c2,0x8450,0x7bef,0x5acb,0x18c3,0x7bef,0x8410,0x6b8d,0x4208,0x4a69,0x8430,0x7bef,0x4a89,0x0000,0x8430,0x7c10,0x632c,0x1903,0x73ae,0x8410,0x7bef,0x4a48,0x39c7,0x8410,0x8431,0x630c,0x0000,0x83f0,0x8451,0x7bef,0x0861,0x5b0b,0x8430,0x8451,0x4a8a,0x1061,0x8410,0x8c71,0x6b8d,0x0000,0x73ae,0x8451,0x7bf0,0x1082,0x4a69,0x8410,0x8430,0x52cb,0x0000,0x7bef,0x8451,0x73ae,0x0000,0x5aec,0x7c10,0x8430,0x2966,0x20e4,0x7bcf,0x7bf0,0x5b0c,0x0000,0x632d,0x7bcf,0x738e,0x0862,0x31a6,0x738e,0x7bd0,0x528a,0x0000,0x634d,0x73af,0x6b6e,0x0000,0x4228,0x738e,0x73ae,0x39e8,0x0000,0x6b6d,0x6b6d,0x0040,0x634c,0x7c10,0x73ae,0x7c0f,0x8430,0x8410,0x8410,0x8430,0x7c0f,0x94d2,0xdefc,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x7bcf,0x7bef,0x73ce,0x73ae,0x73ce,0x738d,0x634c,0x6b6d,0x6b4d,0x2945,0x0000,0x0861,0x0020,0x0861,0x0841,0x0841,0x0020,0x0020,0x0861,0x0841,0x0020,0x0861,0x0861,0x0881,0x0041,0x0841,0x0020,0x0861,0x0841,0x0020,0x0020,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0041,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0020,0x0020,0x0040,0x0020,0x0020,0x0000,0x39c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2104,0x2945,0x2944,0x2104,0x0000,0x9cd3,0xce79,0xc638,0xce59,0xce59,0xce79,0xd69a,0xd69a,0xd69a,0xd6ba,0xdefb,0xe71c,0xe71c,0xef5d,0xef7d,0xe73c,0xce79,0xad75,0x9492,0x7bef,0x7bef,0x8430,0x8c51,0x8c71,0x94b2,0x9cd3,0x9cf3,0x9cf3,0xa514,0xa514,0xa534,0xad55,0xa534,0x5acb,0x18e3,0x2124,0x2104,0x2124,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4228,0x2145,0x6b4d,0x6b6d,0x73ae,0x630c,0x3186,0x738e,0x6b6d,0x634c,0x2124,0x6b8d,0x6b4d,0x73ae,0x4a69,0x52ca,0x632c,0x73ae,0x632c,0x10a2,0x630c,0x632c,0x632c,0x1904,0x5aeb,0x52ca,0x6b8d,0x4a89,0x39e7,0x4a8a,0x6b6d,0x632c,0x0000,0x4a8a,0x5aeb,0x632d,0x18c3,0x4229,0x4228,0x6b6d,0x528a,0x10a2,0x39e7,0x632c,0x630c,0x0000,0x39c7,0x4249,0x5aec,0x2125,0x2124,0x2966,0x5aec,0x528a,0x0000,0x2145,0x4a69,0x5acb,0x0000,0x2966,0x2966,0x528a,0x31a7,0x0000,0x10a3,0x4249,0x4249,0x0000,0x18e3,0x2966,0x4229,0x0841,0x0000,0x0000,0x3a08,0x39e8,0x0000,0x0000,0x2945,0x4208,0x0000,0x0000,0x0000,0x39c7,0x2986,0x0000,0x0000,0x1904,0x39c7,0x0000,0x0000,0x2965,0x4a69,0x31a6,0x7bef,0x73ae,0x73ae,0x8430,0x8410,0x8410,0x8410,0x7c10,0x8430,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0x8c71,0x7bef,0x73ce,0x738e,0x73ae,0x73ae,0x6b8e,0x6b8e,0x6b4d,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0881,0x0041,0x0041,0x0861,0x0881,0x0861,0x0881,0x10a2,0x0882,0x0881,0x0040,0x0841,0x0041,0x0861,0x0861,0x0041,0x0841,0x0881,0x0841,0x0040,0x0040,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0841,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0041,0x0040,0x0020,0x0000,0x39c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2103,0x2945,0x2944,0x18e3,0x18c2,0xb596,0xc638,0xc618,0xc618,0xc618,0xc638,0xc638,0xce59,0xce59,0xce79,0xd69a,0xd69a,0xdedb,0xe73c,0xef5d,0xef7d,0xd6ba,0xad55,0x8410,0x7bef,0x8430,0x9492,0x9cd3,0x9cd3,0x9cf3,0xa514,0xa534,0xad55,0xad55,0xad55,0xad55,0xad75,0xad75,0x6b6d,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39c7,0x4228,0x2945,0x0000,0x0000,0x528a,0x52ca,0x0000,0x0000,0x2145,0x52aa,0x2124,0x0000,0x0000,0x528a,0x4228,0x0000,0x0000,0x39e7,0x4a49,0x0000,0x0000,0x0000,0x4208,0x2124,0x0000,0x0000,0x31a6,0x31c6,0x0000,0x0000,0x18c3,0x3186,0x0000,0x0000,0x0000,0x18e3,0x10a2,0x0000,0x0000,0x0061,0x1904,0x0000,0x0000,0x0000,0x18e4,0x18e4,0x0000,0x0000,0x0883,0x2125,0x10c3,0x0841,0x0862,0x2966,0x2965,0x18c3,0x18e3,0x2124,0x2985,0x1904,0x18e4,0x2945,0x31c7,0x3186,0x3186,0x2986,0x31c7,0x39e8,0x39c7,0x31a7,0x39c7,0x4208,0x3a08,0x39c7,0x39e8,0x4228,0x4228,0x4208,0x4208,0x4208,0x4229,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x528a,0x528a,0x528a,0x5aeb,0x52cb,0x5acb,0x6b8e,0x4228,0x6b4d,0x73ce,0x6b6d,0x7bcf,0x7c10,0x7c10,0x7c0f,0x8410,0x7bef,0x9d13,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbe18,0x738e,0x6bad,0x73ce,0x8451,0x8430,0x7bef,0x8430,0x73ce,0x7bef,0x5aec,0x4a6a,0x6b4d,0x2103,0x2124,0x5aeb,0x2985,0x0000,0x0881,0x0840,0x10a2,0x10c2,0x1081,0x0861,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x0881,0x1082,0x0861,0x0841,0x0040,0x0841,0x0861,0x0020,0x0841,0x0041,0x0020,0x0040,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2103,0xad76,0xc618,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc638,0xce79,0xd69a,0xd6ba,0xe73c,0xe73c,0x9cf3,0x7bef,0x9492,0x9cf3,0xa514,0xad55,0xad55,0xad55,0xad75,0xb596,0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb5b6,0x7bcf,0x18c2,0x2945,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39c7,0x4208,0x4249,0x4a49,0x4a69,0x4208,0x3a07,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4a8a,0x4a69,0x4228,0x4a69,0x528a,0x4a89,0x4a69,0x528a,0x5acb,0x52cb,0x52ca,0x52ca,0x52ca,0x52cb,0x5aeb,0x5aeb,0x5acb,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x630c,0x630c,0x5aec,0x5aec,0x632d,0x632d,0x632c,0x632c,0x5b0c,0x6b4d,0x6b4c,0x632c,0x632d,0x632d,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x738e,0x6b8d,0x738e,0x738e,0x738e,0x738e,0x73af,0x73cf,0x73af,0x73ae,0x73af,0x7bcf,0x7bcf,0x738e,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x73af,0x73cf,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bf0,0x7bf0,0x73af,0x7bcf,0x7bf0,0x73af,0x73ae,0x52aa,0x31a6,0x7bef,0x6b4d,0x6b8e,0x7c10,0x7c0f,0x7c0f,0x7c10,0x7bef,0x8430,0xce79,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b76,0x9cf3,0x7bf0,0x7bef,0x7c0f,0x632c,0x6b8e,0x8430,0x528a,0x18e2,0x632c,0x7bcf,0x31a7,0x52ab,0x8410,0x6b6e,0x39e7,0x5aec,0x31a7,0x0000,0x10a4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x10a2,0x0881,0x0000,0x1082,0x0881,0x0840,0x0861,0x0041,0x0040,0x0861,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0040,0x0020,0x0020,0x0841,0x0020,0x0040,0x0861,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0020,0x0841,0x0041,0x0020,0x0041,0x0040,0x0020,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2944,0xad75,0xbdd7,0xb596,0xb596,0xb596,0xb5b6,0xb596,0xb5b6,0xb596,0xb596,0xb596,0xb596,0xb5b6,0xb596,0xb596,0xb5b6,0xb5b6,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0x7bef,0x10a2,0x2945,0x18e3,0x18e3,0x2103,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x39e7,0x634d,0x7bef,0x7bcf,0x738e,0x73ae,0x73cf,0x7bcf,0x7bef,0x7bef,0x7bcf,0x73ae,0x7bcf,0x7bef,0x7c0f,0x7bef,0x73cf,0x7c10,0x73ce,0x7bef,0x7bcf,0x73ce,0x7bef,0x7bef,0x7bcf,0x7bef,0x7c0f,0x8410,0x7bef,0x7bef,0x7c0f,0x7bef,0x7bef,0x7bcf,0x7bcf,0x8410,0x7c10,0x7bf0,0x7bef,0x7c0f,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bf0,0x7bf0,0x7bf0,0x7bcf,0x7bef,0x7bf0,0x7bf0,0x73cf,0x7bef,0x7bef,0x7bcf,0x7bef,0x7bcf,0x7bef,0x7bcf,0x7bcf,0x7bf0,0x7bf0,0x7bcf,0x7bcf,0x7bcf,0x73cf,0x73af,0x73af,0x7bcf,0x7bef,0x73af,0x7bcf,0x73cf,0x73ae,0x73cf,0x73af,0x7bcf,0x7bcf,0x73cf,0x7bef,0x7bef,0x73ce,0x7bef,0x73ae,0x73af,0x73af,0x73af,0x73af,0x73af,0x73cf,0x6b6d,0x634d,0x39c7,0x6b8d,0x6b6d,0x6b4d,0x7bef,0x7c0f,0x7c10,0x7c10,0x7c0f,0x7bcf,0xa514,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x73ae,0x6b6d,0x94b2,0x634d,0x0000,0x0000,0x630c,0x4a49,0x0000,0x0000,0x5acb,0x39c7,0x0000,0x5acb,0x4a29,0x0000,0x5289,0x73ad,0x73ad,0x7bee,0x7bce,0x7bee,0x8c50,0x94b1,0x8c91,0x7bee,0x52a9,0x2143,0x0000,0x0842,0x3186,0x0000,0x0000,0x10a2,0x0041,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2944,0xad55,0xb596,0xad55,0xad75,0xad55,0xad55,0xad55,0xad55,0xa534,0xa534,0xa534,0xa514,0x9cf3,0x9cd3,0x9492,0x7bef,0x7bef,0xd69a,0xef5d,0xdefb,0xd69a,0xce79,0xce79,0xce59,0xc638,0xc638,0xc638,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0x7bef,0x10a2,0x2945,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bef,0x7bef,0x7bcf,0x73ce,0x73ae,0x7bcf,0x7bcf,0x73ce,0x73ce,0x7bcf,0x73ce,0x73cf,0x73ae,0x73cf,0x73cf,0x73ae,0x73ce,0x73ae,0x73ae,0x7bcf,0x73cf,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x738e,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x7bcf,0x73ae,0x73cf,0x6b8e,0x73ae,0x73ae,0x73ae,0x73cf,0x73cf,0x7bcf,0x7bcf,0x73cf,0x73af,0x7bef,0x73cf,0x73ae,0x73ae,0x73cf,0x73ae,0x738e,0x738e,0x73ae,0x7bef,0x738e,0x738e,0x73af,0x73af,0x73af,0x7bcf,0x73af,0x73af,0x73ae,0x73af,0x73af,0x73ae,0x73af,0x738e,0x73af,0x7bcf,0x73cf,0x73cf,0x7bcf,0x7bef,0x73ce,0x7bcf,0x7bcf,0x73cf,0x7bcf,0x73af,0x73cf,0x73cf,0x6b6d,0x73cf,0x39e8,0x4248,0x7bcf,0x632c,0x73ae,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xce59,0xce9a,0x8411,0x0000,0x0000,0x4228,0x636e,0x39e7,0x0000,0x2966,0x426a,0x2124,0x0000,0x0001,0x52aa,0x10a1,0x39a4,0x842f,0xb5b4,0xc636,0xce97,0xd6d9,0xded9,0xdf19,0xdf1a,0xdf19,0xdf1a,0xdef9,0xd6b8,0xbe16,0xad73,0x94b1,0x634c,0x4a2a,0x630c,0x3185,0x0000,0x10a2,0x0000,0x0020,0x0020,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x2124,0xa534,0xad75,0xa534,0xa534,0xa514,0xa514,0xa514,0x9cf3,0x9cd3,0x9cd3,0x94b2,0x9492,0x8c71,0x8430,0x7bef,0x7bcf,0x9492,0xc638,0xe73c,0xef5d,0xe71c,0xdefb,0xdedb,0xd6ba,0xd69a,0xd69a,0xce79,0xce79,0xce59,0xce59,0xc638,0xce59,0xc638,0x738e,0x10a2,0x2945,0x18e3,0x2104,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x41e7,0x632c,0x73ae,0x73ae,0x73ce,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73cf,0x73ce,0x73ce,0x73ae,0x7bcf,0x7bcf,0x73ae,0x73cf,0x7bcf,0x73ce,0x73cf,0x7bcf,0x738e,0x73ae,0x73cf,0x7bcf,0x73ce,0x73cf,0x73cf,0x73ce,0x7bcf,0x73ce,0x73ae,0x73af,0x73af,0x738e,0x738e,0x73af,0x7bcf,0x7bcf,0x73ce,0x7bcf,0x73ae,0x73ce,0x7bcf,0x73ce,0x73ce,0x73ae,0x7bcf,0x7bef,0x73ae,0x7bef,0x7bef,0x73cf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x73ae,0x73cf,0x73ce,0x73ae,0x73ae,0x73cf,0x73ae,0x73ae,0x738e,0x73af,0x7bf0,0x73af,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73af,0x738e,0x73af,0x73af,0x738e,0x73ae,0x7bcf,0x73cf,0x7bef,0x7bcf,0x73cf,0x73af,0x73cf,0x73af,0x738e,0x73af,0x6b8e,0x6b6d,0x632c,0x39c7,0x738e,0x6b6d,0x6b6d,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7bef,0x9d14,0x5b75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xbe17,0xc618,0x5b0c,0x0000,0x0000,0x4aab,0x52cb,0x0000,0x0000,0x31c7,0x31a6,0x10a2,0x0883,0x2125,0x0000,0x4228,0x8450,0x5aca,0xa533,0xc657,0xd6b9,0xdf1a,0xdf1a,0xdefa,0xdf1a,0xdf1a,0xd6d9,0xce98,0xce98,0xce57,0xc636,0xc637,0xce77,0xd6d8,0xd6d8,0xce56,0x9cf1,0x7bef,0x94b2,0x4a49,0x0000,0x10a2,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x9cd3,0xa534,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x94b2,0x9492,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bef,0x8410,0x9cf3,0xbdf7,0xdedb,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xd69a,0xd69a,0xce79,0xd69a,0xce59,0x5aeb,0x18c3,0x2945,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x39e7,0x6b4d,0x73cf,0x73ae,0x73ae,0x738e,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x6b8e,0x73ce,0x73ae,0x73cf,0x73cf,0x7bcf,0x73cf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x6b8e,0x73ae,0x738e,0x7bef,0x73ce,0x6b8e,0x73ae,0x73ae,0x73ae,0x6b6e,0x738e,0x73af,0x738e,0x6b6e,0x738e,0x73cf,0x6b6d,0x73ae,0x738e,0x73ce,0x73cf,0x73ae,0x7bcf,0x73ae,0x73cf,0x73ce,0x7bcf,0x7bcf,0x73ae,0x73ae,0x7bcf,0x73af,0x73cf,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x73af,0x738e,0x738e,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x73af,0x6b8e,0x738e,0x6b6e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x73af,0x738e,0x738e,0x73ae,0x738e,0x73ae,0x634d,0x7bcf,0x2945,0x5acb,0x7bcf,0x632c,0x73ce,0x7bef,0x7bef,0x7bef,0x7bef,0x7c0f,0x8430,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xd69a,0x39e8,0x0000,0x0000,0x5acb,0x5acb,0x0000,0x2986,0x4a49,0x18c3,0x528a,0x39e8,0x18c3,0x0000,0x6b6e,0x5aec,0x18a2,0x9cd2,0x8430,0xad74,0xdef9,0xd6b8,0xce57,0xc636,0xc636,0xc656,0xc656,0xce77,0xd6b8,0xce78,0xbe16,0xbdf6,0xbe16,0xbe16,0xbe15,0xbe15,0xbdf4,0xce97,0xe75a,0x8450,0x94b3,0x94b2,0x0000,0x0000,0x0841,0x0020,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2124,0x2945,0x2104,0x0861,0x8410,0xa534,0x94b2,0x94b2,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x8410,0x8c71,0xa514,0xbdf7,0xd6ba,0xe73c,0xef5d,0xef5d,0xef5d,0xe73c,0xe71c,0xdefb,0xdefb,0xdedb,0xdedb,0xd6ba,0xd69a,0xd6ba,0xc618,0x39e7,0x2124,0x2124,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x73ae,0x73ae,0x738e,0x6b6d,0x6b6d,0x738e,0x73ae,0x738e,0x6b8d,0x738e,0x73ae,0x7bcf,0x7bcf,0x73ae,0x738e,0x73cf,0x738e,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x6b8e,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x738d,0x73ae,0x738e,0x73af,0x73af,0x73af,0x73af,0x738e,0x73ce,0x73ae,0x73ae,0x73ce,0x7bef,0x73cf,0x73ce,0x73cf,0x7bcf,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x73cf,0x6b8d,0x7bcf,0x7bcf,0x73af,0x73ae,0x738e,0x73af,0x73ae,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73af,0x73af,0x738e,0x738e,0x73ae,0x738e,0x73ae,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x738e,0x73ae,0x73ae,0x73ce,0x738e,0x73ae,0x738e,0x738e,0x6b6e,0x73af,0x738e,0x73ae,0x6bae,0x6b4d,0x632c,0x4208,0x73ae,0x6b6d,0x6b6d,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad55,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x73cf,0x528a,0x4aaa,0x4a6a,0x31a6,0x18e3,0x3a08,0x41e8,0x18e3,0x5b2d,0x31a7,0x1082,0x4228,0x7c11,0x4249,0x0000,0x7bd0,0x634e,0x632b,0x8c50,0x7c0f,0xdef9,0xce97,0xbdd5,0xbdf5,0xbdf5,0xbdf5,0xbdf5,0xbdd5,0xbdf5,0xc636,0xce98,0xce77,0xc657,0xc637,0xc636,0xce77,0xce77,0xd6b7,0xdef9,0xdef9,0x7bef,0x632c,0x8410,0x39e7,0x2103,0x0000,0x0841,0x0000,0x0000,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4207,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x2104,0x2945,0x2104,0x0860,0x630c,0xa534,0x9492,0x9492,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x8430,0x94b2,0xa534,0xbdd7,0xd69a,0xdefb,0xe73c,0xef5d,0xef5d,0xe73c,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xa534,0x10a2,0x2965,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x630c,0x6b8e,0x738e,0x73ae,0x6b8d,0x738e,0x6b8e,0x6b8e,0x73cf,0x738e,0x6b8d,0x73ae,0x738e,0x6b8d,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x7bcf,0x73ae,0x73cf,0x73ce,0x73ae,0x73ae,0x7baf,0x73af,0x7bcf,0x73af,0x73af,0x7bef,0x73ce,0x73ae,0x73ce,0x7bcf,0x73ae,0x73ae,0x7bef,0x73cf,0x7bef,0x7bef,0x7bef,0x7bef,0x73cf,0x73ce,0x73ce,0x73cf,0x73af,0x738e,0x73af,0x7bcf,0x738e,0x738e,0x73ae,0x73cf,0x73ce,0x73cf,0x73cf,0x73af,0x7bcf,0x73af,0x738e,0x73ae,0x73ce,0x73ae,0x73ae,0x738e,0x73ae,0x738f,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ce,0x73ce,0x7bcf,0x73ce,0x7bcf,0x73af,0x73af,0x738e,0x73af,0x7baf,0x73ae,0x6b8e,0x6b6d,0x73ae,0x18c3,0x632c,0x73ae,0x632c,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x8451,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xdefb,0x8451,0x0000,0x0000,0x0000,0x528a,0x4208,0x2965,0x6b6e,0x39c7,0x0000,0x52cb,0x8431,0x2966,0x0000,0x7c10,0x4249,0x0000,0x424a,0x3a08,0x52ca,0x4a69,0x52ca,0xa553,0xce77,0xd698,0xd698,0xd698,0xce98,0xce97,0xd6b8,0xd6d9,0xd6d9,0xdefa,0xe73a,0xe75b,0xe73b,0xe73a,0xe71a,0xe71a,0xdf19,0xbdd5,0x632c,0x3186,0x5aeb,0x4228,0x52aa,0x6b6d,0x4228,0x0000,0x39a7,0x18e4,0x0000,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2103,0x18e3,0x2945,0x2104,0x10a2,0x39e7,0x9cd3,0x9492,0x8c51,0x8c51,0x8430,0x8410,0x8410,0x8410,0x7bef,0x7bcf,0x7bef,0x7bef,0x8410,0x8c51,0x94b2,0xa554,0xbdd7,0xce59,0xd6ba,0xe71c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0x73ae,0x0840,0x2965,0x18e3,0x2104,0x18e3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x738e,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b8d,0x738e,0x6b8d,0x738e,0x738e,0x6b4d,0x73ae,0x738e,0x6b8d,0x6b6d,0x73ae,0x73ae,0x73ae,0x738e,0x6b8d,0x6b8e,0x73ae,0x73ae,0x738e,0x73ae,0x738e,0x73ae,0x73cf,0x738e,0x738e,0x6b8e,0x73af,0x738f,0x6b8e,0x73cf,0x7bcf,0x73ce,0x73ce,0x73ae,0x73ae,0x7bef,0x73ae,0x73ae,0x7bcf,0x73ce,0x738e,0x73ae,0x73ae,0x7bcf,0x73ce,0x6b8e,0x73af,0x7bcf,0x73cf,0x73cf,0x73ae,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x738e,0x738f,0x6b8e,0x73cf,0x6b8e,0x73ae,0x73ae,0x738e,0x73ae,0x73ce,0x73ae,0x738f,0x738e,0x738e,0x738f,0x73ae,0x73ae,0x6b8d,0x73ae,0x73ae,0x73ae,0x73cf,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x73ae,0x73ae,0x6b8d,0x6b6d,0x5acb,0x4a69,0x73ae,0x6b4d,0x6b6e,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73cf,0x7bef,0xad75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd69a,0x31a6,0x0000,0x3a08,0x5b0c,0x2945,0x4228,0x5b0c,0x3187,0x0000,0x6b8e,0x8431,0x0002,0x2965,0x73ae,0x18e4,0x0000,0x39e8,0x1904,0x0000,0x10c3,0x10a2,0x0882,0x0000,0x0000,0x0000,0x528a,0x9492,0xb595,0xbdf6,0xc637,0xd6b8,0xdef9,0xdf1a,0xdefa,0xdefb,0xdefb,0xdefb,0xd6da,0xc658,0xad55,0x8410,0x39e7,0x0000,0x0000,0x2104,0x2945,0x0000,0x0000,0x4229,0x632d,0x2104,0x5aec,0x5acb,0x2124,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2104,0x18c3,0x2124,0x2124,0x2104,0x18c3,0x7bcf,0x9cf3,0x8410,0x8430,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8430,0x8c71,0x9cd3,0xad55,0xb5b6,0xc638,0xd69a,0xdefb,0xe71c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xe71c,0xef5d,0xc618,0x39c7,0x2124,0x2124,0x2104,0x2104,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x73ae,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b8e,0x6b6d,0x6b6d,0x6b8d,0x6b8e,0x73ae,0x6b8d,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x738e,0x738e,0x6b6d,0x6b8d,0x6b8e,0x6b6d,0x738e,0x73ae,0x73ae,0x73cf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x738e,0x73af,0x738e,0x738e,0x73ae,0x738e,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73af,0x738e,0x73af,0x7bcf,0x73ae,0x73ae,0x738f,0x73af,0x73cf,0x738e,0x738e,0x738e,0x73af,0x738e,0x6b6e,0x738e,0x6b6e,0x73af,0x738e,0x738e,0x6b8e,0x738e,0x6b8d,0x6b8d,0x6b6d,0x73ae,0x73cf,0x738e,0x6b8e,0x738e,0x6b6e,0x6b6e,0x6b8e,0x73ae,0x6b8e,0x73af,0x73cf,0x738e,0x738e,0x73af,0x73ae,0x738e,0x738e,0x73af,0x73af,0x6b6e,0x738e,0x6b4d,0x10c3,0x73ae,0x738e,0x6b6d,0x7bcf,0x7bcf,0x7bef,0x7c0f,0x7bcf,0x73ce,0x8c71,0xd6da,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x6b6e,0x0000,0x18c3,0x18e4,0x4229,0x39e7,0x10a2,0x9cf4,0x7c10,0x0001,0x39e8,0x5b0d,0x2987,0x1081,0x1904,0x1082,0x0000,0x0841,0x0841,0x0000,0x0841,0x0041,0x0020,0x0841,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x1101,0x4a68,0x5b0b,0x6b6c,0x6b6d,0x6b6d,0x5b0c,0x4a89,0x39e7,0x10c2,0x0001,0x31a7,0x31a7,0x0020,0x1082,0x0000,0x0000,0x0862,0x0020,0x0862,0x39e7,0x31a6,0x10c3,0x52cb,0x4a8a,0x2965,0x5aeb,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0020,0x0020,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x2104,0x2945,0x2104,0x1082,0x4a69,0x9cd3,0x8431,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x8410,0x8c51,0x9492,0x9cf3,0xad55,0xb5b6,0xc638,0xce79,0xd6ba,0xdefb,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xef5d,0xe73c,0xe73c,0xef5d,0x8430,0x0000,0x3186,0x2104,0x2104,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x632c,0x6b6d,0x6b8d,0x6b4d,0x738e,0x738e,0x6b8d,0x6b8d,0x6b6d,0x73ae,0x6b8d,0x6b6d,0x6b8e,0x73ae,0x6b8e,0x6b8d,0x73ae,0x6b6d,0x6b8e,0x738e,0x73ae,0x6b6d,0x6b6d,0x73ae,0x6b6d,0x6b8e,0x73ae,0x73ae,0x6b8e,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x6b8d,0x73ce,0x73ce,0x73af,0x73af,0x73af,0x738f,0x7bcf,0x738e,0x73ae,0x7bcf,0x73ae,0x738e,0x7bcf,0x73af,0x6b6e,0x73af,0x73af,0x6b6e,0x73af,0x73cf,0x73ae,0x738e,0x73af,0x73af,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73af,0x6b4d,0x738e,0x73cf,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x738e,0x738e,0x6b6e,0x6b6e,0x738e,0x6b8e,0x73af,0x73af,0x738e,0x6b8e,0x738e,0x738e,0x6b6e,0x738e,0x73af,0x6b8e,0x7bcf,0x73af,0x73af,0x6b6e,0x6b4d,0x4a49,0x5acb,0x738e,0x6b4d,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bcf,0x7bef,0x7bcf,0xad75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x7c10,0x5aeb,0x4249,0x0021,0x528a,0xad55,0x52ab,0x0000,0x4a6a,0x6b8e,0x4a6a,0x0000,0x0000,0x1904,0x0000,0x0021,0x0862,0x0000,0x0861,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0041,0x18a2,0x2104,0x10c2,0x39c7,0x8c72,0xa536,0x8c73,0x6b6f,0x39c8,0x0000,0x0000,0x0000,0x0000,0x1083,0x52ab,0x632c,0x528a,0x3186,0x0020,0x0020,0x0020,0x0841,0x1082,0x0000,0x0000,0x18e3,0x10a2,0x0000,0x1904,0x3186,0x1904,0x39e7,0x630c,0x31a6,0x0000,0x39c7,0x2965,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0040,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0841,0x0841,0x1082,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x39c6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18c3,0x2945,0x2124,0x2124,0x10a2,0x73ae,0x94b2,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x8410,0x8430,0x8c51,0x94b2,0x9cf3,0xad55,0xb5b6,0xc618,0xce59,0xd6ba,0xdefb,0xe71c,0xe73c,0xef5d,0xef7d,0xef5d,0xef5d,0xe73c,0xf79e,0xbdd7,0x2104,0x2965,0x2945,0x18e3,0x2104,0x18c3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x39e7,0x6b4d,0x6b8d,0x6b4d,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b8e,0x6b8d,0x6b8d,0x738e,0x738e,0x6b8d,0x738e,0x738e,0x738e,0x738e,0x73ae,0x6b6d,0x6b8d,0x73ae,0x6b6d,0x6b8e,0x738e,0x6b8d,0x6b6d,0x73ae,0x73ae,0x738e,0x6b6d,0x738e,0x73ae,0x6b8e,0x6b8e,0x738e,0x738e,0x738e,0x738e,0x6b6e,0x738e,0x73ae,0x73ae,0x73ce,0x738e,0x738e,0x738e,0x6b6e,0x6b6e,0x73af,0x73ae,0x738e,0x738e,0x73af,0x73af,0x6b6e,0x738e,0x738e,0x738e,0x738e,0x73af,0x73af,0x73af,0x6b6e,0x73af,0x6b8e,0x6b8e,0x73cf,0x73ce,0x73ae,0x73ae,0x73ce,0x6b8e,0x6b6e,0x738e,0x632d,0x6b6e,0x73af,0x73ae,0x73ae,0x73ae,0x73af,0x738e,0x738e,0x73ae,0x738e,0x738e,0x738e,0x73af,0x73af,0x738e,0x738e,0x6b4d,0x738e,0x5acb,0x1903,0x73ae,0x632c,0x6b6d,0x7bcf,0x73cf,0x7bcf,0x7bef,0x7bef,0x7bef,0x8c71,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdf8,0x0000,0x0000,0x1904,0x10e4,0x3a08,0x0001,0x9cd3,0x8c72,0x39e8,0x1082,0x1082,0x39c7,0x10a3,0x0841,0x0862,0x0021,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x2145,0x31a6,0x31a6,0x4a4a,0x5acc,0x632d,0x6b6e,0x4209,0x10a3,0x18e3,0x18e3,0x10a3,0x0862,0x2104,0x1904,0x0000,0x0000,0x0021,0x0020,0x0020,0x0861,0x0000,0x1903,0x4208,0x4229,0x0000,0x0000,0x10a2,0x2945,0x1082,0x0000,0x3a07,0x39e7,0x2124,0x3a08,0x5aeb,0x31a6,0x18e3,0x1082,0x0841,0x2965,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4208,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4a49,0x39c7,0x39e7,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x4a49,0x4228,0x39e8,0x4229,0x4229,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x4207,0x39e7,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x2104,0x2945,0x2103,0x18e3,0x31a6,0x8c51,0x8c71,0x73ae,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8c51,0x8c71,0x94b2,0x9cf3,0xad55,0xb5b6,0xc618,0xce59,0xd69a,0xdedb,0xdefb,0xe73c,0xef5d,0xef5d,0xef5d,0xe73c,0xf79e,0xdedb,0x52aa,0x18c2,0x3186,0x18e3,0x2104,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x738e,0x6b4d,0x6b4d,0x6b8e,0x6b6d,0x73ae,0x738e,0x6b6d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x73ae,0x6b6d,0x6b8e,0x738e,0x738e,0x73ae,0x6b6d,0x6b6d,0x738e,0x73ae,0x6b8d,0x73ae,0x738e,0x73ae,0x73ce,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x6b8e,0x73ae,0x6b8e,0x738e,0x6b6e,0x738e,0x738e,0x6b6e,0x6b8e,0x73ae,0x73cf,0x73ae,0x73ae,0x6b8d,0x6b6d,0x738e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x738e,0x73ae,0x73af,0x738e,0x6b6e,0x73af,0x73af,0x6b8e,0x73af,0x738e,0x738e,0x6b8e,0x738e,0x73af,0x738e,0x738e,0x73ae,0x73ae,0x738e,0x738e,0x73ae,0x738e,0x738e,0x6b6e,0x6b8e,0x6b6e,0x73ae,0x738e,0x738e,0x73af,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x73af,0x73af,0x73af,0x73ae,0x738e,0x6b6e,0x73ae,0x39e7,0x5aeb,0x738e,0x632c,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5aec,0x0000,0x0860,0x528a,0x9cf4,0x52ac,0x0001,0x0000,0x5b0d,0x52ab,0x4249,0x0000,0x10a3,0x1082,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x18c3,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0841,0x18e3,0x2965,0x2144,0x2965,0x18e2,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x1082,0x10a3,0x18c3,0x10c3,0x0861,0x0020,0x0841,0x0000,0x39e7,0x632c,0x632c,0x632c,0x52ca,0x39e7,0x39e7,0x5289,0x4248,0x4a49,0x4a49,0x4a69,0x4249,0x4a49,0x528a,0x52aa,0x528a,0x39e7,0x4248,0x5aeb,0x5acb,0x52aa,0x4a69,0x52aa,0x52ca,0x4a69,0x52aa,0x52cb,0x528a,0x4a69,0x4a8a,0x528a,0x5aeb,0x4a69,0x3185,0x2124,0x2125,0x2166,0x2966,0x2146,0x1925,0x2125,0x0000,0x5acb,0x52ab,0x31a6,0x52ab,0x31c7,0x2104,0x0861,0x1082,0x10a3,0x0001,0x31a6,0x4208,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x2944,0x2104,0x2124,0x18c2,0x4a69,0x8c71,0x8430,0x73ae,0x7bcf,0x7bef,0x7bef,0x8410,0x8430,0x8c51,0x9492,0x9cd3,0xa514,0xad55,0xb5b6,0xbdf7,0xc638,0xce79,0xd6ba,0xdefb,0xe71c,0xe73c,0xe73c,0xe73c,0xf79e,0xe73c,0x73ae,0x0000,0x31a6,0x2104,0x2104,0x2104,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x632c,0x6b8e,0x6b8d,0x738e,0x738e,0x6b4d,0x6b8d,0x738e,0x6b8d,0x73ae,0x6b8d,0x738e,0x738e,0x6b8d,0x6b6d,0x6b8e,0x738e,0x6b6d,0x6b8e,0x6b8d,0x738e,0x738e,0x738e,0x6b6d,0x73ae,0x6b8e,0x6b8e,0x73ce,0x6b6d,0x73ae,0x738e,0x6b6d,0x73ae,0x73ae,0x738e,0x73ae,0x6b8d,0x738e,0x738e,0x73af,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ce,0x73ae,0x73af,0x73af,0x738e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6e,0x632d,0x6b4d,0x6b6e,0x6b8e,0x6b4d,0x738e,0x738e,0x6b8e,0x738e,0x6b8d,0x738e,0x6b6d,0x6b8d,0x6b8e,0x6b6d,0x738e,0x73af,0x6b6e,0x6b6e,0x738e,0x738e,0x6b8e,0x738e,0x6b6e,0x6b8e,0x73af,0x6b6e,0x73ae,0x73ae,0x738e,0x6b8e,0x738e,0x738e,0x73af,0x6b6e,0x73af,0x52aa,0x39c7,0x8410,0x6b4d,0x6b6d,0x73cf,0x73cf,0x73ce,0x73ae,0x73ae,0x73ae,0x94b2,0xe75c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0xb596,0x4a4a,0x2145,0x10c3,0x1042,0xb5b7,0xad76,0x2166,0x31c7,0x0000,0x2145,0x2986,0x0000,0x0020,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x2124,0x2965,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0862,0x2125,0x2985,0x31a7,0x4a69,0x5aeb,0x52cb,0x4249,0x2945,0x0861,0x0841,0x0020,0x0020,0x0861,0x2124,0x2945,0x2104,0x0862,0x0041,0x0000,0x0000,0x39e7,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x4228,0x4a69,0x52aa,0x528a,0x4a8a,0x4a69,0x52aa,0x52aa,0x4228,0x4228,0x4a69,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x4228,0x4a49,0x4a89,0x4228,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a49,0x528a,0x2104,0x0000,0x0000,0x0000,0x0862,0x1083,0x2124,0x39c7,0x29a6,0x1967,0x3a09,0x2146,0x31c7,0x52aa,0x0000,0x10a1,0x4228,0x4a69,0x4249,0x5acb,0x4a69,0x39e7,0x39c6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18c3,0x18e3,0x2945,0x18e3,0x2944,0x10a2,0x5acb,0x8c71,0x8430,0x7bcf,0x7bef,0x8410,0x8430,0x8c51,0x8c71,0x9492,0x9cd3,0xa514,0xad55,0xb5b6,0xbdf7,0xc638,0xce79,0xd6ba,0xdedb,0xdefb,0xe71c,0xe73c,0xf79e,0xe71c,0x7bef,0x0000,0x31a6,0x2124,0x18e3,0x2104,0x18c3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x632c,0x6b6d,0x73ae,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b8e,0x6b6d,0x6b6e,0x6b6d,0x738e,0x738e,0x6b6d,0x6b8e,0x738e,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x738e,0x6b8e,0x6b6d,0x6b8e,0x73ae,0x6b8e,0x6b8e,0x6b6d,0x6b6d,0x73ce,0x73ae,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x6b6d,0x6b6d,0x6b6e,0x738e,0x73cf,0x738e,0x738e,0x73ae,0x738e,0x73ae,0x6b8e,0x738e,0x73ae,0x738e,0x738e,0x738e,0x6b6d,0x73ae,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6e,0x6b6d,0x6b6d,0x6b6e,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x738e,0x73af,0x738e,0x738e,0x738e,0x73af,0x6b8e,0x6b6e,0x738e,0x738e,0x73af,0x6b6e,0x738e,0x6b6e,0x632c,0x738e,0x31a7,0x632c,0x6b8e,0x632c,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bef,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c92,0x0000,0x0883,0x31c7,0x2986,0x3a08,0x1102,0x6b8e,0x4249,0x634d,0x3186,0x0000,0x1082,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x18e3,0x10a2,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x1082,0x18e4,0x2125,0x2125,0x31e7,0x4229,0x39e8,0x2145,0x0862,0x0841,0x1082,0x1082,0x0861,0x0840,0x0841,0x0000,0x0020,0x0000,0x10a2,0x4a69,0x6b4d,0x634d,0x5b0b,0x5b0c,0x52cb,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x39e7,0x3a08,0x4208,0x39c7,0x4a69,0x52cb,0x52aa,0x4a8a,0x4a69,0x528a,0x4a69,0x4a69,0x52aa,0x4a69,0x4a69,0x4a49,0x4a49,0x4249,0x4a49,0x4a69,0x4248,0x4a69,0x4a49,0x3a08,0x2986,0x73f0,0xa596,0xbe39,0xbe5a,0xc67a,0xc65a,0xb619,0xc67b,0xce9b,0xc65a,0xa556,0x52cb,0x2144,0x6baf,0xbe39,0xc6bb,0xcedc,0xd6fd,0xcebb,0x7c10,0x20c2,0x39e7,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x10a2,0x2103,0x2944,0x18e3,0x2944,0x10a2,0x528a,0x8430,0x8c51,0x7bf0,0x8410,0x8430,0x8c51,0x8c71,0x94b2,0x9cf3,0xa534,0xad75,0xb5b6,0xbdf7,0xc638,0xce79,0xd69a,0xd6ba,0xdefb,0xe73c,0xef7d,0xce79,0x6b4d,0x0000,0x31a6,0x2944,0x18e3,0x2104,0x18c3,0x18c3,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x630c,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b6d,0x6b4d,0x6b4d,0x6b6e,0x738e,0x738e,0x6b8d,0x6b6d,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x73ae,0x6b6d,0x73ae,0x738e,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x73ce,0x738d,0x73ae,0x73ae,0x7bce,0x73ae,0x73ae,0x6b8d,0x73ae,0x6b8e,0x738e,0x6b6e,0x738e,0x6b6e,0x634d,0x738e,0x738e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x73af,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x738e,0x6b6e,0x738e,0x738e,0x73af,0x738e,0x738e,0x73af,0x738e,0x738e,0x73af,0x738e,0x7bcf,0x738e,0x738e,0x6b8e,0x6b6e,0x6b4e,0x4229,0x4229,0x738e,0x630c,0x6b8d,0x7bef,0x7bef,0x73cf,0x73cf,0x7bef,0x73ce,0x9cf3,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x39e8,0x2104,0x0000,0x9d14,0xa555,0x31c7,0x18c5,0x0000,0x0882,0x4a8a,0x2986,0x0000,0x0841,0x0020,0x0020,0x0020,0x0841,0x1082,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x10a2,0x18c3,0x0021,0x0000,0x1082,0x0820,0x0000,0x0000,0x0862,0x0020,0x0020,0x0841,0x0840,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x18c3,0x31c7,0x31a6,0x4a69,0x6b4d,0x6b4d,0x52cb,0x4a89,0x4a69,0x4228,0x4a69,0x4208,0x4228,0x4228,0x4a69,0x4208,0x4a69,0x52aa,0x52aa,0x52aa,0x52aa,0x5acb,0x5acb,0x52aa,0x528a,0x52aa,0x4a8a,0x4a49,0x528a,0x52aa,0x4a49,0x4249,0x4228,0x4249,0x4a69,0x4228,0x52cb,0x9d35,0xc67a,0xb5f9,0xa597,0xa5b8,0xadb8,0xa5b8,0xadd8,0xcebb,0xc65a,0x9d15,0x4a49,0x2986,0x84b4,0xcebc,0xcebc,0xb5f9,0xbe5a,0x9d76,0x636d,0x3165,0x39c7,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x18e3,0x10a2,0x2104,0x2124,0x18e3,0x2944,0x18e3,0x4207,0x73ae,0x8c51,0x8c51,0x8c51,0x8c71,0x9492,0x94b2,0x9cf3,0xa514,0xad55,0xb596,0xbdd7,0xc618,0xce59,0xd69a,0xdedb,0xe71c,0xdefb,0xa534,0x4207,0x0020,0x31a6,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x2103,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x5aeb,0x6b6d,0x6b6d,0x6b8d,0x73ae,0x6b8e,0x6b8d,0x6b6d,0x738e,0x73ae,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x73ae,0x6b6d,0x738e,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b8e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x73ae,0x738e,0x738e,0x6b8e,0x738e,0x6b8e,0x6b8e,0x738e,0x738e,0x73ae,0x6b6d,0x6b8d,0x6b6d,0x6b6e,0x6b8e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x6b6d,0x738e,0x73ae,0x73ae,0x7bef,0x6b8e,0x73ae,0x6b8e,0x73ae,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b8e,0x73af,0x6b8e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x6b6e,0x6b8e,0x73af,0x6b6e,0x6b6e,0x738e,0x738e,0x6b8e,0x73af,0x73af,0x73af,0x738e,0x632d,0x6b6e,0x2124,0x6b4d,0x6b6e,0x6b4d,0x7bef,0x7c0f,0x7bef,0x7bcf,0x7bcf,0x7bef,0x8430,0xce9a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb596,0x31a7,0x2145,0x18c3,0x18e4,0xad96,0x7bd0,0x2967,0x52ab,0x0000,0x0821,0x1082,0x0020,0x0020,0x0020,0x0020,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x1082,0x2125,0x2966,0x3186,0x18e4,0x0000,0x2124,0x2965,0x2124,0x0020,0x0041,0x18c3,0x0861,0x0000,0x0020,0x0020,0x10a2,0x0861,0x0021,0x0000,0x0000,0x0861,0x0000,0x0000,0x0040,0x31c7,0x5b0b,0x5aeb,0x5aeb,0x4a69,0x4a69,0x4a69,0x5acb,0x6b6d,0x4228,0x5acb,0x6b6d,0x4a49,0x4a8a,0x528a,0x52aa,0x5aeb,0x52ca,0x5aeb,0x52ca,0x4a69,0x528a,0x4a89,0x4a69,0x4a8a,0x4a69,0x4a49,0x4248,0x4228,0x4a49,0x4248,0x4228,0x3a08,0x31c7,0x2987,0x1904,0x18e5,0x08c4,0x1905,0x31c7,0x08c3,0x29a7,0x424a,0x2986,0x4a69,0x4248,0x3a28,0x31c7,0x29a6,0x2166,0x10c3,0x0083,0x39e7,0x4207,0x31a6,0x3185,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x2104,0x2124,0x18e3,0x2124,0x2104,0x2944,0x52aa,0x7bcf,0x8430,0x8c71,0x94b2,0x9cf3,0xa514,0xad55,0xb596,0xbdd7,0xc618,0xce59,0xce79,0xd69a,0xce59,0xad55,0x630c,0x0000,0x2124,0x31a6,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a07,0x632c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0x6b8e,0x6b6e,0x6b6d,0x6b6e,0x6b6d,0x73ae,0x738e,0x6b8d,0x738e,0x6b8d,0x6b6d,0x738e,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x6b8d,0x738e,0x6b6d,0x6b6d,0x6b8e,0x6b6d,0x738e,0x73ae,0x6b6d,0x6b8e,0x73ae,0x73ae,0x73ae,0x6b8d,0x6b8e,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b4d,0x73ae,0x6b6d,0x6b8d,0x73ce,0x738e,0x6b8d,0x738e,0x73ae,0x73ae,0x738e,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x738e,0x6b8e,0x6b6e,0x73af,0x6b8e,0x738e,0x73af,0x6b6e,0x6b6e,0x738e,0x738e,0x73af,0x6b4d,0x634d,0x31a7,0x5acb,0x73af,0x632c,0x738e,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x9d14,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x2145,0x0000,0x0000,0x2966,0x0000,0x2945,0x39e8,0x5b0c,0x3186,0x0000,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x0020,0x0020,0x0020,0x0020,0x0000,0x2965,0x4208,0x39c8,0x2965,0x2124,0x1082,0x0000,0x10c2,0x2144,0x2985,0x0841,0x0881,0x2145,0x1082,0x0000,0x0841,0x0000,0x4a48,0x4a69,0x39c7,0x39c6,0x3186,0x0861,0x0000,0x1082,0x31c6,0x4208,0x52aa,0x634c,0x6b4d,0x4a69,0x528a,0x4a8a,0x632c,0x6b4d,0x4a69,0x5b0b,0x5acb,0x4228,0x528a,0x528a,0x52aa,0x52ca,0x4a69,0x528a,0x4a69,0x4a69,0x52aa,0x528a,0x4a69,0x4249,0x4a69,0x4a49,0x4a89,0x4a49,0x4248,0x4a69,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a7,0x0001,0x4a69,0x31a5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3165,0x4208,0x31a6,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x2104,0x2124,0x2103,0x2104,0x2124,0x2104,0x2965,0x4a69,0x6b4d,0x7bcf,0x8c51,0x94b2,0x9cf3,0xa534,0xad55,0xad75,0xa534,0x9cf3,0x8410,0x4a49,0x0000,0x18c2,0x3186,0x2965,0x2104,0x18e3,0x2104,0x18c3,0x10a2,0x18e3,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x3a08,0x630c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0x6b6d,0x634c,0x632c,0x6b6d,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x6b6d,0x6b6d,0x6b4d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b8e,0x6b6e,0x634d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x73ae,0x738e,0x6b6d,0x6b6d,0x738e,0x6b6d,0x6b6d,0x73ae,0x6b6d,0x6b4d,0x6b6d,0x6b6e,0x6b6e,0x632d,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b8e,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x6b4d,0x630c,0x632d,0x2105,0x6b6e,0x6b6d,0x6b4d,0x73cf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73cf,0x8430,0xce99,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x0000,0x0882,0x2945,0xad96,0xad97,0x2145,0x31a7,0x0000,0x0000,0x2945,0x31a6,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x1081,0x0861,0x0000,0x0020,0x0020,0x0020,0x10a2,0x2985,0x39c7,0x2966,0x2125,0x18c3,0x0882,0x0862,0x10c2,0x2124,0x2124,0x0000,0x1082,0x2104,0x0861,0x0000,0x0840,0x0000,0x3185,0x4208,0x528a,0x528a,0x52aa,0x2945,0x18c3,0x2965,0x3186,0x39c7,0x52aa,0x630c,0x630c,0x4a49,0x52ca,0x52aa,0x630c,0x52aa,0x4a8a,0x632c,0x52aa,0x4228,0x4a89,0x52aa,0x4249,0x528a,0x528a,0x4249,0x4a69,0x4a69,0x4a69,0x4a49,0x4228,0x4a49,0x4a49,0x4249,0x528a,0x4a69,0x3a28,0x4a6a,0x2965,0x10a4,0x4aab,0x6baf,0x7411,0x7c52,0x7c72,0x7c52,0x8cd4,0x8cb4,0x8493,0x73f0,0x52ab,0x4a49,0x3185,0x4acc,0x7c52,0x9515,0x9515,0x94f5,0x9d76,0x6b8f,0x2944,0x39c7,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2103,0x18c3,0x1082,0x18e3,0x2124,0x2124,0x2103,0x2124,0x2124,0x2104,0x2124,0x2965,0x39e7,0x4a48,0x4a69,0x528a,0x528a,0x4228,0x3186,0x0861,0x0000,0x2124,0x3186,0x3185,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4207,0x5b0b,0x6b8d,0x6b4d,0x6b4c,0x6b6d,0x6b4d,0x6b6d,0x6b6d,0x6b8d,0x6b8e,0x6b8e,0x6b6d,0x6b4d,0x6b4d,0x6b6e,0x6b8e,0x6b6d,0x6b8d,0x6b8e,0x6b6e,0x738e,0x6b8d,0x6b6d,0x6b8e,0x6b4d,0x6b6d,0x6b8e,0x634d,0x6b4d,0x6b8e,0x6b8e,0x6b6e,0x73ae,0x6b6d,0x6b4d,0x738e,0x6b8e,0x6b6d,0x6b4d,0x6b6d,0x6b6d,0x6b4d,0x6b6e,0x6b6e,0x634d,0x6b4d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x738e,0x6b6d,0x6b6e,0x6b6d,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x738e,0x6b6e,0x6b6e,0x634d,0x632d,0x6b4d,0x738e,0x6b4d,0x632d,0x6b8e,0x6b4d,0x6b4d,0x6b6e,0x6b4d,0x634d,0x634d,0x6b4d,0x632d,0x6b4d,0x632d,0x632d,0x6b6e,0x6b6e,0x6b4d,0x6b8e,0x738e,0x6b6e,0x738e,0x73af,0x6b8e,0x6b6e,0x738e,0x6b6e,0x632d,0x632d,0x3186,0x630c,0x73ae,0x634d,0x738e,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x73cf,0xad55,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6bb,0x2966,0x18e4,0x2104,0x6b6e,0x94d4,0x6b6e,0x2967,0x632d,0x2125,0x0000,0x1081,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0881,0x0881,0x10a2,0x0861,0x0000,0x0020,0x0020,0x0041,0x18e3,0x10a2,0x0000,0x0840,0x10c2,0x10a2,0x10a2,0x10c2,0x2104,0x18e3,0x0861,0x0000,0x0861,0x18e3,0x0861,0x0000,0x0021,0x0020,0x0000,0x0000,0x2965,0x4a89,0x52ca,0x4248,0x4a89,0x4a49,0x0000,0x31c7,0x39e7,0x4a49,0x5aeb,0x4228,0x4a69,0x52aa,0x634c,0x4a8a,0x5aeb,0x630c,0x4a49,0x4a69,0x4a8a,0x4a49,0x4248,0x4a49,0x4228,0x4a49,0x4a69,0x4228,0x4a69,0x528a,0x4a69,0x4249,0x4a69,0x4a49,0x4a69,0x4a89,0x4208,0x4229,0x3a08,0x7c52,0xa598,0xbe7b,0xc69b,0xbe7b,0xcedc,0xd71d,0xbe5a,0xcefd,0xcf1e,0xbe5a,0x73d0,0x1904,0x52cc,0xa5b8,0xd71d,0xbe7a,0xcedd,0xd71d,0xbe5a,0x7c11,0x20e0,0x39e7,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x10a3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2104,0x2103,0x2124,0x2945,0x3185,0x3185,0x2945,0x2124,0x18e3,0x2103,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31a6,0x39e7,0x4208,0x630c,0x6b8d,0x634c,0x6b6d,0x6b4d,0x632d,0x634d,0x632d,0x634d,0x632c,0x632c,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x6b6d,0x6b6e,0x632d,0x6b6e,0x634d,0x634d,0x632d,0x6b4d,0x6b4d,0x632d,0x634d,0x6b6e,0x632d,0x632d,0x632d,0x630c,0x630c,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b4d,0x634d,0x634d,0x6b4d,0x632d,0x632d,0x6b4d,0x632d,0x632d,0x6b6d,0x5b0c,0x632d,0x632d,0x634d,0x6b6e,0x6b6e,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x632d,0x634d,0x6b8e,0x6b4d,0x634d,0x6b6e,0x634d,0x632d,0x632d,0x6b4d,0x6b4d,0x632d,0x632d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x634d,0x632d,0x632d,0x634d,0x632d,0x632d,0x632d,0x6b6e,0x6b8e,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x634d,0x6b6e,0x738e,0x6b8e,0x738e,0x6b6e,0x738e,0x6b6e,0x738e,0x632d,0x6b4d,0x5aec,0x2965,0x73ae,0x6b4d,0x6b6d,0x7bce,0x7bcf,0x73cf,0x73cf,0x7bcf,0x73ce,0x8c71,0xdedb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x18e4,0x0000,0x0000,0x0000,0x0000,0x2966,0x18c4,0x632d,0x4a6a,0x0000,0x0861,0x2124,0x0861,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x1082,0x10c3,0x18e3,0x18e3,0x0000,0x0020,0x0000,0x0861,0x0882,0x0841,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18e3,0x1903,0x1903,0x0841,0x0000,0x0020,0x0841,0x18c3,0x0861,0x0000,0x0020,0x0020,0x0000,0x0000,0x2945,0x4a69,0x52ca,0x52ca,0x52cb,0x4a69,0x39c7,0x31c7,0x18e3,0x4a8a,0x4a69,0x4248,0x4228,0x4a89,0x634c,0x4228,0x5acb,0x630c,0x39e7,0x4249,0x4248,0x4249,0x4a69,0x4248,0x4228,0x4208,0x39e7,0x4228,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x4248,0x4a69,0x4a69,0x4228,0x3a08,0x4aaa,0x7c31,0x9d15,0x94d5,0x7c10,0x8451,0x8c93,0x94f4,0x6b6e,0x9515,0x9515,0x8431,0x52ab,0x39c7,0x52cb,0x8492,0xad76,0x73f0,0x7c10,0x8472,0x8cb3,0x73cf,0x2103,0x39c7,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x18c2,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18c3,0x2103,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x31a6,0x39c7,0x39e7,0x5aeb,0x6b4d,0x634d,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b6e,0x73af,0x7bcf,0x738e,0x73ae,0x73ce,0x73ce,0x7bcf,0x73ae,0x73af,0x73af,0x73af,0x738f,0x73af,0x7bcf,0x738e,0x738e,0x73af,0x7bcf,0x73af,0x73af,0x738e,0x738e,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x73af,0x73af,0x7bef,0x7bcf,0x73af,0x73ae,0x73af,0x7bcf,0x73af,0x7bcf,0x73af,0x73cf,0x73af,0x73af,0x73af,0x738e,0x73cf,0x7bcf,0x73af,0x73cf,0x7bcf,0x7bcf,0x73cf,0x73af,0x73af,0x73cf,0x7bcf,0x7bcf,0x7bf0,0x738e,0x7bcf,0x7bf0,0x73cf,0x73cf,0x7bcf,0x73cf,0x73cf,0x7bcf,0x73af,0x73cf,0x73af,0x73af,0x738e,0x738e,0x73af,0x73af,0x738f,0x6b8e,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x634d,0x632d,0x630c,0x2966,0x6b6d,0x6b6d,0x632d,0x73ae,0x7bcf,0x73ce,0x73cf,0x7bcf,0x7bcf,0x73ce,0xb5d6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x0000,0x0000,0x6b4d,0x8431,0x4249,0x2987,0x0000,0x0000,0x0842,0x3186,0x10a2,0x0000,0x2124,0x18e3,0x0000,0x0020,0x0020,0x0020,0x0000,0x0882,0x2104,0x2104,0x2124,0x18c3,0x0000,0x0020,0x0000,0x0882,0x18e3,0x0882,0x0841,0x10c3,0x1904,0x10a2,0x0040,0x10a2,0x2124,0x2124,0x2104,0x1082,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x18e3,0x39e7,0x52aa,0x39c7,0x1903,0x4249,0x4228,0x31c6,0x2104,0x18c3,0x4a69,0x5acb,0x39c7,0x4228,0x4228,0x5aeb,0x5aeb,0x4228,0x5acb,0x52aa,0x39e7,0x4a69,0x4a69,0x528a,0x4249,0x4a49,0x4a8a,0x4228,0x4228,0x4249,0x4228,0x4228,0x4a49,0x4248,0x4208,0x4249,0x4a89,0x4249,0x3a28,0x3a08,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x2165,0x10a2,0x4228,0x52aa,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4248,0x31a6,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x31c6,0x4208,0x4228,0x5aec,0x632d,0x6b4d,0x738e,0x632d,0x6b6d,0x6b4d,0x630c,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b4d,0x73ae,0x6b8e,0x6b6e,0x6b6e,0x6b4d,0x6b4d,0x738e,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b6d,0x6b4d,0x6b6e,0x634d,0x6b4d,0x6b6d,0x6b6d,0x632d,0x6b4d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b4d,0x632d,0x6b4d,0x632d,0x632c,0x632d,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x5aeb,0x632c,0x5aec,0x630c,0x632d,0x630c,0x632c,0x5b0c,0x630c,0x6b4d,0x630c,0x632c,0x632d,0x5acb,0x630c,0x632c,0x5aec,0x5aeb,0x5aec,0x5aec,0x5b0c,0x630c,0x52ab,0x5aec,0x5acb,0x5acb,0x5acb,0x52ab,0x5acb,0x630c,0x5aec,0x6b6e,0x738e,0x6b4d,0x6b8e,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x738e,0x738e,0x6b6e,0x738e,0x6b6e,0x73af,0x630c,0x6b6e,0x4a6a,0x39c6,0x73ce,0x632c,0x6b6d,0x73ce,0x73cf,0x7bcf,0x7bef,0x7bef,0x73ae,0x8c71,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c71,0x0000,0x10a3,0x6b4e,0xad76,0x8431,0x1104,0x4a4a,0x31a7,0x0000,0x0841,0x0000,0x738e,0x528a,0x0000,0x1082,0x0020,0x0020,0x0041,0x0020,0x2104,0x2965,0x2965,0x2945,0x0020,0x0020,0x0000,0x0841,0x1904,0x1904,0x1904,0x10a2,0x0041,0x0861,0x10a2,0x10c3,0x10c3,0x18e3,0x18c3,0x18e4,0x18e4,0x0021,0x0000,0x0021,0x0021,0x0020,0x0020,0x0020,0x2965,0x3a08,0x39c7,0x2145,0x0882,0x0841,0x0000,0x0000,0x2965,0x4228,0x4a69,0x3a07,0x39e7,0x4248,0x4a49,0x4a69,0x4a49,0x4a69,0x4a49,0x4249,0x4248,0x4a8a,0x4a69,0x4248,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a49,0x4228,0x4a69,0x4a69,0x4248,0x3a07,0x4a8a,0x39e8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x29a7,0x0882,0x528a,0x4a49,0x0000,0x0000,0x0000,0x0041,0x18e4,0x1904,0x1905,0x4a49,0x5aca,0x4a69,0x39c7,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x2104,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x39e7,0x528a,0x5289,0x52ec,0x3a0a,0x1060,0x18e4,0x0821,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0862,0x0021,0x0862,0x18c3,0x10a3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x2124,0x2125,0x2104,0x2945,0x2965,0x2965,0x2986,0x2945,0x3166,0x3186,0x3186,0x31a6,0x31a7,0x39a7,0x39c7,0x39c7,0x39e8,0x39a7,0x31a7,0x39c7,0x4a29,0x4229,0x0000,0x0000,0x5aec,0x7bf0,0x6b6e,0x738e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x6b4d,0x5aec,0x5b0c,0x31a6,0x6b6d,0x634c,0x632c,0x73ae,0x73cf,0x73cf,0x7bcf,0x7bce,0x7bef,0x7bef,0xbdd7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9cf4,0x0000,0x10a2,0x0000,0x31c7,0x52aa,0x08a3,0x4a49,0x630c,0x2125,0x0841,0x0000,0x7bef,0x5aeb,0x0000,0x10a2,0x0861,0x1082,0x0882,0x18e3,0x31a6,0x2986,0x31a6,0x2104,0x0000,0x0020,0x0000,0x10c3,0x2965,0x2124,0x2124,0x2144,0x2124,0x10a2,0x0881,0x10a2,0x18e3,0x2145,0x39c7,0x39c7,0x31a7,0x2966,0x2124,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10a2,0x0841,0x0000,0x0862,0x10a2,0x0882,0x2104,0x39e7,0x4248,0x39e7,0x39c7,0x31a6,0x4208,0x4a49,0x4a49,0x4a69,0x4a49,0x4a69,0x4248,0x4a49,0x4a49,0x4a49,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4a49,0x4a69,0x4248,0x4a49,0x4228,0x4a69,0x4228,0x4a49,0x3167,0x31a7,0x5b0d,0x7c51,0x9534,0x9d76,0xa597,0xadb7,0xadd8,0xadd8,0xadb8,0xa555,0x7bf0,0x4249,0x3186,0x634e,0xa597,0xb5f8,0xbe39,0xc67a,0xbe5a,0xc69b,0x8473,0x2987,0x4a28,0x4228,0x39c6,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x2104,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39c7,0x4228,0x4208,0x4a6a,0x534f,0x5b2e,0x6b6d,0x73ae,0x7bef,0x8430,0x8410,0x7bf0,0x7bf0,0x8410,0x7bf0,0x7bef,0x7c0f,0x7bef,0x7c0f,0x7c0f,0x7bef,0x7bf0,0x7bcf,0x7bd0,0x7bf0,0x7bf0,0x7bcf,0x73cf,0x7bf0,0x7bcf,0x73af,0x7bcf,0x7bcf,0x7baf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73ae,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x73ae,0x73af,0x73af,0x7bcf,0x73af,0x738e,0x73af,0x73af,0x7bcf,0x73af,0x73af,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73ae,0x73cf,0x73cf,0x7bcf,0x7bcf,0x73cf,0x7bcf,0x7bf0,0x7c10,0x7bcf,0x7bf0,0x94b3,0x8410,0x0000,0x3186,0x7bf0,0x73af,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738e,0x6b6e,0x5b0c,0x738e,0x39c7,0x4a69,0x73ae,0x5b0b,0x6b8d,0x73ae,0x73af,0x73cf,0x7bcf,0x7bef,0x7bef,0x8c71,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x2986,0x1904,0x2145,0x0000,0x0002,0x0001,0x0000,0x0000,0x2965,0x2104,0x0000,0x2104,0x4228,0x0000,0x1082,0x10a2,0x10a2,0x10c3,0x18c3,0x2986,0x39e7,0x3186,0x3186,0x0861,0x0000,0x0020,0x0000,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2104,0x10a2,0x0881,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0041,0x0041,0x0862,0x1082,0x18c3,0x2125,0x2965,0x31c7,0x39c7,0x39e8,0x4a49,0x3a08,0x3208,0x3a08,0x4228,0x4269,0x3a28,0x3a28,0x3a28,0x3a08,0x4208,0x4228,0x39e8,0x4228,0x4a69,0x4229,0x4249,0x528a,0x4a6a,0x4a6a,0x4a8a,0x528a,0x4a49,0x4a49,0x528a,0x4a8a,0x4a49,0x4a8a,0x528a,0x39e8,0x8451,0xadb7,0xc69b,0xc69b,0xc6bc,0xcedc,0xcebc,0xc6bb,0xd71d,0xdf1d,0xcedb,0x94d3,0x29e7,0x4248,0x9d34,0xd6fd,0xdf3e,0xb619,0xadd8,0xbe5a,0x9d35,0x5370,0x2a6c,0x31c7,0x2102,0x18e3,0x10a2,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x18c2,0x18e3,0x2945,0x20e3,0x31c8,0x3aad,0x4330,0x636e,0x7bce,0x73ce,0x7bef,0x8410,0x8410,0x7bf0,0x6b4d,0x630d,0x632d,0x632d,0x632d,0x630c,0x632d,0x632d,0x632d,0x5b0c,0x632d,0x634d,0x630d,0x630d,0x632d,0x6b4d,0x6b4d,0x630c,0x632d,0x634d,0x632d,0x634d,0x634d,0x634d,0x632d,0x632d,0x636d,0x636d,0x636d,0x636e,0x636e,0x634d,0x632d,0x634d,0x5b2c,0x632d,0x634d,0x632d,0x5b2c,0x634d,0x636e,0x634d,0x5b2d,0x632d,0x6b6e,0x634d,0x5b0c,0x5b0c,0x630d,0x5b0d,0x5b0c,0x5b0c,0x5b0d,0x5b0d,0x5aec,0x5b0c,0x5b0c,0x52cb,0x5b0c,0x5b2d,0x5aec,0x630d,0x630d,0x5aed,0x5aec,0x632d,0x5aed,0x5aec,0x73af,0x7bcf,0x73af,0x73af,0x8c51,0x94b2,0x31c6,0x0000,0x73cf,0x73ce,0x630c,0x6b6e,0x6b4e,0x6b4d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x634d,0x5aec,0x528a,0x39c7,0x738e,0x630c,0x632d,0x738e,0x73af,0x73af,0x73af,0x73cf,0x7bcf,0x7bef,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x73ae,0x0000,0x2145,0x7c30,0x9d35,0x52cb,0x2966,0x39c8,0x18a3,0x0000,0x0000,0x5289,0x8c71,0x31a7,0x0000,0x2104,0x18e3,0x18e3,0x2104,0x2144,0x39e7,0x39e7,0x39e7,0x2945,0x0000,0x0020,0x0000,0x1082,0x31c7,0x31a6,0x3186,0x31a6,0x2986,0x2144,0x1903,0x10c3,0x10a2,0x0881,0x0881,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0041,0x0841,0x0861,0x10a2,0x18e3,0x18e4,0x2104,0x2125,0x2125,0x2145,0x2966,0x31a7,0x4208,0x39e8,0x2945,0x2125,0x2125,0x2125,0x2125,0x2124,0x2145,0x2145,0x2966,0x2145,0x2946,0x18e4,0x10a3,0x39c7,0x4a6a,0x4a49,0x4229,0x4a49,0x4229,0x4229,0x4229,0x4229,0x4249,0x4229,0x4208,0x4228,0x4a49,0x4a6a,0x4a4a,0x634e,0x8431,0x8452,0x5b0e,0x52ed,0x52ec,0x634e,0x5b0d,0x7411,0x8452,0x6b8f,0x4249,0x4249,0x4248,0x636d,0x6bb0,0x73d0,0x73d0,0x632e,0x5b0d,0x424a,0x9d35,0xc639,0xb5d7,0x9cf3,0x9cf3,0x9cd3,0x5aeb,0x18c3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2104,0x2124,0x8410,0x9492,0x738e,0xa514,0xbdd7,0xbdf8,0x9515,0x4acd,0x73ae,0x73af,0x6b6e,0x738e,0x738f,0x73cf,0x73af,0x52ab,0x4a49,0x528b,0x528b,0x4a8a,0x52ab,0x52ab,0x52ab,0x4a8a,0x52ab,0x52ab,0x52cb,0x52ab,0x5aec,0x5acb,0x528a,0x52ab,0x5aec,0x52cb,0x52cb,0x52cb,0x52ab,0x5aec,0x52cb,0x52cb,0x632d,0x632d,0x5aec,0x5aec,0x5b0c,0x5aec,0x52ab,0x5aec,0x52ab,0x52ab,0x5b0c,0x52cb,0x52ab,0x5aec,0x5aec,0x5aec,0x4a8a,0x52ab,0x5aec,0x4aab,0x4a6a,0x4a8a,0x52ab,0x528a,0x4a6a,0x4a8a,0x4a8a,0x528a,0x4a8a,0x52cb,0x4aab,0x4a6a,0x4a8a,0x52ab,0x4a6a,0x4a8a,0x4a6a,0x4a6b,0x4a6a,0x4a6a,0x4a6a,0x5b0c,0x6b6e,0x738f,0x73af,0x738e,0x8410,0x94b2,0x6b4d,0x0000,0x5acb,0x8c71,0x7bef,0x73af,0x7bd0,0x7bf0,0x7bcf,0x7bf0,0x7bf0,0x7bf0,0x7bcf,0x7c10,0x8410,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x738e,0x7bcf,0x31a6,0x5acb,0x6b8e,0x5aec,0x6b6e,0x73af,0x73af,0x73af,0x7bcf,0x7bcf,0x7bef,0x94b2,0xef5d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe75d,0x73af,0x1905,0x2125,0x634d,0x9d14,0x632d,0x0000,0x528b,0x4229,0x0841,0x0000,0x632c,0x8c91,0x0000,0x2945,0x2144,0x2945,0x2945,0x2145,0x39e7,0x4249,0x3a08,0x39e7,0x18c3,0x0000,0x0841,0x0000,0x3186,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x2144,0x1903,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0881,0x0861,0x0881,0x1082,0x1082,0x1082,0x10c3,0x18e3,0x1904,0x2104,0x2104,0x2125,0x2145,0x2966,0x31a7,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e4,0x18c3,0x10a3,0x2104,0x2104,0x2104,0x2125,0x2104,0x2104,0x2125,0x2125,0x2946,0x2125,0x2104,0x1904,0x18e4,0x18c3,0x20e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0842,0x18e4,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x0000,0xd6ba,0xf7be,0xdefc,0xce7a,0xce7a,0xce59,0x73ae,0x0040,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18c3,0x2124,0xad75,0xc618,0x94d3,0xd69a,0xe71c,0xef7d,0xcebb,0x42cc,0x73ae,0x73ce,0x6b8e,0x738e,0x738e,0x738e,0x7bf0,0x73cf,0x4228,0x0000,0x0000,0x0861,0x0842,0x0042,0x0020,0x08a3,0x0062,0x0042,0x0062,0x1083,0x0862,0x0001,0x0021,0x0021,0x0021,0x0822,0x0822,0x0001,0x0000,0x0822,0x0822,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0x6b6d,0x632d,0x6b6e,0x73ae,0x6b8e,0x7bcf,0x8c92,0x8410,0x31a7,0x0020,0x738e,0x6b6d,0x5aec,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aec,0x5aeb,0x5aec,0x31a6,0x39c7,0x634d,0x5acc,0x632d,0x73af,0x73af,0x73af,0x73af,0x7bcf,0x73cf,0x8410,0xc618,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a3,0x18e4,0x2945,0x0000,0x1082,0x0000,0x0000,0x2945,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x4a69,0x4a49,0x4249,0x2965,0x0000,0x0000,0x0000,0x0000,0x18e3,0x18e3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e4,0x2104,0x1904,0x2104,0x2104,0x1904,0x18e4,0x18e3,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x2104,0x2104,0x18e4,0x18e4,0x20e4,0x1904,0x18e4,0x2104,0x18e4,0x0000,0x6b8e,0x9d14,0x7c72,0x8492,0x8492,0x8492,0x8492,0x8492,0x8c92,0x8431,0x9cf4,0x7bf0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0041,0x0021,0x0000,0x0000,0x0020,0x0020,0x0861,0x0862,0x0842,0x0001,0x0000,0x0000,0x0861,0x0882,0x1082,0x0882,0x1081,0x1903,0x0000,0xd69a,0xef7d,0xd69a,0xc638,0xc638,0xbdd7,0x736e,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18e3,0x2124,0xa534,0xbdd7,0x9492,0xc659,0xd6ba,0xe73c,0xd6bb,0x4acd,0x6b4d,0x73ce,0x6b8d,0x738e,0x73ae,0x738e,0x7bf0,0x7bf0,0x52ab,0x2125,0x4249,0x528a,0x4a69,0x528a,0x5acb,0x52ab,0x52cb,0x52cb,0x52aa,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aeb,0x5aec,0x5aec,0x5aec,0x630c,0x630c,0x632c,0x630c,0x632d,0x632d,0x632d,0x632d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4e,0x6b6e,0x6b6e,0x6b6d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x7bce,0x73ae,0x7bce,0x7bef,0x73cf,0x7bcf,0x7bef,0x840f,0x7bef,0x7bef,0x840f,0x840f,0x7bef,0x840f,0x8410,0x8410,0x8c51,0x8c71,0x8c71,0x8451,0x8c92,0x4a8a,0x4248,0x6b6c,0x632c,0x6b6e,0x73af,0x73ae,0x73af,0x8c72,0x8c71,0x5aeb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x2125,0x6b8e,0x8c71,0x7bf0,0x6b8e,0x73af,0x73af,0x73cf,0x7bef,0x7bef,0x7bcf,0x9cf3,0xdf1c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc618,0x2945,0x08a3,0x52cb,0x52aa,0x31a6,0x31a6,0x0000,0x0000,0x0000,0x0000,0x2945,0x5aec,0x18e3,0x39e7,0x4208,0x3a08,0x3a07,0x4228,0x4228,0x4208,0x39c6,0x39e7,0x2945,0x2104,0x2124,0x2124,0x2945,0x3186,0x2986,0x31a6,0x31a7,0x3186,0x3186,0x2145,0x2104,0x18e4,0x18e4,0x18c4,0x18c4,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x18e4,0x2125,0x2945,0x2125,0x2145,0x2945,0x2945,0x3186,0x39c7,0x31a7,0x7c10,0x94f3,0x8472,0x84b2,0x84b2,0x8492,0x8492,0x8492,0x8c92,0x8472,0x94f4,0x7c31,0x39e8,0x4a69,0x528a,0x528a,0x52aa,0x4a6a,0x4a8a,0x528a,0x4a6a,0x528a,0x528a,0x528a,0x528a,0x528a,0x52aa,0x528a,0x4a8a,0x4aab,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x528a,0x52aa,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x4aaa,0x4a8a,0x4a8a,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x52aa,0x2166,0xd6ba,0xef7d,0xd6ba,0xce59,0xce59,0xbdf7,0x738e,0x0861,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18c3,0x2124,0xad55,0xbdf7,0x94b3,0xce79,0xdedb,0xef3c,0xd6bb,0x6bd0,0x7bef,0x8450,0x8410,0x7bef,0x7bf0,0x7bcf,0x8431,0x8431,0x4a6a,0xce59,0xef5d,0xc638,0xe71c,0xf79e,0xef7d,0xef9d,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xdefc,0xef5d,0xd69a,0x18e2,0x632c,0x738e,0x73af,0x7bcf,0x7bcf,0x7bcf,0x8410,0x8410,0x7bcf,0x7bcf,0x7bcf,0x7c10,0x7c10,0x8410,0x8410,0x8410,0x7c10,0x7bf0,0x8431,0x8431,0x7c10,0x8410,0x8410,0x7bf0,0x7c10,0x7bf0,0x8410,0x7bf0,0x8410,0x7c10,0x8410,0x7bef,0x7bf0,0x7c10,0x7bcf,0x73af,0x738e,0x738e,0x73af,0x7bcf,0x73ae,0x7c0f,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0x4229,0x0000,0x2146,0xa555,0xbe19,0x5aed,0x1905,0x39e8,0x18c3,0x0000,0x0020,0x0841,0x20e4,0x3a08,0x4a69,0x4228,0x4228,0x4228,0x4228,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x52aa,0x52aa,0x52aa,0x5acb,0x5aeb,0x52cb,0x52ab,0x5acb,0x52ab,0x528a,0x3a08,0x31a6,0x2124,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x2125,0x2125,0x2965,0x2966,0x3186,0x39e8,0x4249,0x52eb,0x52cb,0x4a8b,0x5aec,0x5aec,0x5aec,0x5acc,0x5aec,0x5b0d,0x530c,0x5b0c,0x52cb,0x634e,0x73cf,0x73af,0x73af,0x6b8e,0x73af,0x738e,0x738e,0x73af,0x73af,0x73af,0x738f,0x738e,0x738e,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73ae,0x73ae,0x73cf,0x73ae,0x73cf,0x73cf,0x73af,0x73cf,0x73ce,0x73ae,0x73af,0x73af,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x5b2c,0xdedb,0xef7d,0xd6ba,0xce59,0xc639,0xbdd7,0x6b6d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2124,0xad55,0xbdf7,0x9cd3,0xce59,0xd6db,0xe73c,0xd6bb,0x6bb0,0x630c,0x634d,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b6e,0x7bf0,0x5aeb,0xce59,0xffff,0xdf3c,0xef7d,0xf7df,0xf7be,0xf7be,0xf7be,0xf7be,0xef9e,0xefbe,0xf7be,0xf7be,0xefbe,0xef9e,0xf7be,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefde,0xefde,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbf,0xefbe,0xefbe,0xefbe,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9d,0xef9e,0xef9e,0xef9e,0xe71c,0xe73d,0xef9e,0x52cb,0x4a8a,0x6b6e,0x632d,0x632c,0x630c,0x5acb,0x52ab,0x5aec,0x632d,0x6b6e,0x73cf,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b4e,0x6b4d,0x632d,0x632d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x632d,0x6b4e,0x6b6e,0x632d,0x632d,0x5aec,0x5aec,0x4a6a,0x630c,0x73cf,0x73af,0x738e,0x73af,0x73ce,0x73ce,0x73ae,0x9cf3,0x9d39,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9d39,0x73af,0x39c7,0x2966,0x2987,0x6b90,0x632e,0x0021,0x39e8,0x18e3,0x0000,0x0020,0x0000,0x39e7,0x52aa,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4229,0x4208,0x4208,0x31a7,0x2965,0x2945,0x2144,0x2945,0x2124,0x2124,0x2124,0x18c3,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x1903,0x2124,0x2124,0x2104,0x1903,0x2124,0x2124,0x1903,0x2124,0x2945,0x2144,0x2124,0x2124,0x1904,0x2104,0x2925,0x2125,0x2125,0x2125,0x18c4,0x18c3,0x18c3,0x18e4,0x1082,0x1062,0x18c3,0x18e3,0x18e4,0x18a3,0x1082,0x20e4,0x2104,0x18e3,0x1082,0x0862,0x18c3,0x2125,0x1082,0x0862,0x0882,0x2104,0x2125,0x18e4,0x10a3,0x0882,0x2104,0x2125,0x2125,0x18c4,0x18c3,0x2945,0x2945,0x2104,0x18e4,0x2125,0x2946,0x2125,0x2125,0x2105,0x2105,0x2966,0x2966,0x2105,0x18e4,0x2966,0x31a7,0x2946,0x2125,0x2125,0x3186,0x39e8,0x0000,0xd69a,0xef7d,0xd6ba,0xce79,0xc639,0xbdd7,0x6b6d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2924,0x18e3,0x2124,0xad55,0xc5f8,0x9cd3,0xce79,0xd6db,0xe73c,0xd6bb,0x3a8c,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0x39c7,0x4229,0xad96,0xa535,0x9cf4,0xa575,0xa555,0xa535,0x9d14,0x9d14,0x9d14,0x94f3,0x94f3,0x94f3,0x94d3,0x94d3,0x94d3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x9513,0x94f3,0x94f3,0x9514,0x9514,0x94f3,0x9cf3,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0xa534,0xa534,0xa535,0xa535,0x9d55,0x9d54,0x9d54,0x9d34,0x9d34,0x9d34,0x9d34,0x9514,0x9514,0x9d34,0x9d14,0x9d14,0x9d14,0x9d14,0x9cf4,0x9cf3,0x9cf4,0x9d14,0x9d14,0x9d34,0x9d35,0xa555,0x9cf4,0x8cb2,0xa575,0x5b0c,0x4229,0x4a6a,0x526a,0x52ab,0x52ab,0x630c,0x632d,0x3a29,0x5aec,0x4a4a,0x5aec,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4a6a,0x4a4a,0x4a6a,0x4a6a,0x4208,0x4a49,0x4a4a,0x4229,0x4a4a,0x4a6b,0x4a4a,0x422a,0x4a4a,0x4229,0x4209,0x4a6a,0x630d,0x52ab,0x2966,0x4a6a,0x6b4d,0x73af,0x738f,0x73ae,0x73ce,0x7bcf,0x73cf,0x7c10,0xce79,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x0001,0x0000,0x0000,0x0000,0x0000,0x0881,0x0000,0x0000,0x0020,0x0000,0x2985,0x52ca,0x52cb,0x528a,0x528a,0x528a,0x52aa,0x52ab,0x528a,0x4208,0x4229,0x2104,0x0000,0x0841,0x0861,0x0020,0x0000,0x0840,0x0040,0x0861,0x0020,0x0000,0x0861,0x10a2,0x0861,0x0000,0x0041,0x0841,0x0840,0x1082,0x0861,0x0861,0x0861,0x1082,0x0882,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x0860,0x0881,0x10a2,0x18e3,0x10a2,0x0881,0x10a2,0x18e3,0x2965,0x10c3,0x0881,0x1904,0x2965,0x2165,0x0882,0x18c2,0x2966,0x2966,0x2125,0x18c3,0x18c3,0x2165,0x2965,0x2985,0x18e3,0x18e3,0x31a6,0x31c6,0x2965,0x18c3,0x1904,0x31a6,0x39c7,0x2104,0x18e3,0x2124,0x39e7,0x39e7,0x2124,0x2104,0x2966,0x39c7,0x3186,0x2945,0x2104,0x3186,0x39e8,0x31a7,0x2966,0x2125,0x31a7,0x39e8,0x2986,0x2145,0x2986,0x31c7,0x39e8,0x3186,0x31c7,0x0000,0xd6ba,0xef7d,0xd6ba,0xce79,0xc638,0xbdb6,0x6b6d,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2965,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2124,0xad55,0xc618,0x9cf3,0xce79,0xd6bb,0xef3c,0xce9a,0xa556,0xbdf7,0xbdf7,0xbe18,0xbe18,0xc638,0xc638,0xc658,0xc658,0xc658,0xc659,0xb5d7,0xbe18,0xbe18,0xbe18,0xbe18,0xbe18,0xbe38,0xc638,0xc638,0xc639,0xc639,0xc639,0xc659,0xc659,0xc659,0xc659,0xce59,0xce59,0xc639,0xce59,0xc639,0xce59,0xc639,0xc618,0xc638,0xc639,0xc639,0xc659,0xc639,0xc659,0xc639,0xc638,0xbe38,0xc639,0xc639,0xc639,0xc638,0xc659,0xc618,0xc638,0xce59,0xc639,0xc639,0xce59,0xce59,0xc659,0xce59,0xce59,0xce79,0xc659,0xc659,0xc659,0xc659,0xc659,0xce79,0xc659,0xc659,0xc659,0xc659,0xc659,0xc659,0xc659,0xcebb,0xd6db,0xd6db,0xd6db,0xdefb,0xdf1c,0xce7a,0xc679,0xc659,0x5acb,0x39e7,0x3a08,0x4a49,0x4249,0x4a69,0x4228,0x31c6,0x39e7,0x39e7,0x31a6,0x3a07,0x31c7,0x39c7,0x39c6,0x39e7,0x39e7,0x31a6,0x4a6a,0x528a,0x4a49,0x4a49,0x52aa,0x52aa,0x3186,0x632d,0x632d,0x5aec,0x738e,0x73af,0x738e,0x73ae,0x73ae,0x73ce,0x73ae,0xa534,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x5acb,0x0000,0x4a6a,0x630c,0x4229,0x39e8,0x20e5,0x0000,0x0041,0x0000,0x0020,0x5aeb,0x5aeb,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52cb,0x52aa,0x3186,0x10a2,0x4a49,0x6b6d,0x31c6,0x0841,0x2945,0x528a,0x5aeb,0x2945,0x0020,0x2966,0x4a69,0x4228,0x18c3,0x2124,0x2965,0x2965,0x31a6,0x18e3,0x1082,0x2124,0x2965,0x2986,0x18e3,0x1082,0x18e3,0x2965,0x31a6,0x18e3,0x0861,0x2124,0x39e7,0x3a08,0x18e3,0x0040,0x31c6,0x5aeb,0x4a69,0x1081,0x0000,0x5acb,0x73ae,0x4a69,0x0000,0x10a2,0x632d,0x7baf,0x4228,0x0000,0x2945,0x738e,0x7bcf,0x31a6,0x0000,0x39e7,0x738e,0x738e,0x2945,0x0000,0x4a49,0x73ae,0x6b4d,0x18c3,0x0000,0x528a,0x7bef,0x632c,0x0000,0x1082,0x5acb,0x8410,0x5acb,0x0000,0x2104,0x6b4d,0x8410,0x5289,0x0000,0x31a6,0x6b6d,0x7bef,0x4208,0x0000,0x4228,0x6b6d,0x73ae,0x31a6,0x0000,0x31c7,0xdefb,0xef7d,0xd6ba,0xce79,0xc638,0xb5b6,0x6b4d,0x1082,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2944,0x2125,0x2124,0x2965,0x2965,0x2945,0x2124,0x2124,0x2965,0x2965,0x2124,0x2124,0x2124,0x2945,0x2965,0x2945,0x2124,0x2124,0x2124,0x2944,0x2945,0x2124,0x2965,0x2965,0x2945,0x2945,0x2124,0x2945,0x2965,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2104,0xad55,0xc638,0x9cf4,0xce79,0xd6ba,0xef3c,0xc67a,0xcebb,0xf7df,0xef9e,0xefbe,0xf7be,0xf7bd,0xf7be,0xf7de,0xefbe,0xf7de,0xf7de,0xf7bf,0xf7bf,0xf7be,0xf7bf,0xf7bf,0xf7df,0xf7bf,0xf7bf,0xf7bf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xef9e,0xe73d,0xef7d,0xef5d,0xe75d,0xe71c,0xef5d,0xe71c,0xef5d,0xef5d,0xffdf,0xe73d,0xf7be,0xef9e,0xe75d,0xe73c,0xdf1c,0xe77d,0xe75d,0xdf3c,0xe73d,0xe73c,0xef7e,0xe71c,0xef5d,0xf79e,0xdefc,0xf7bf,0xef7e,0xef5d,0xe71c,0xe73d,0xe75d,0xdefc,0xdefc,0xef9e,0xf7df,0xf7bf,0xf7bf,0xf7bf,0xf7df,0xf7bf,0xf7bf,0xf7df,0xf7bf,0xf7bf,0xf7df,0xf7df,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xf7be,0xf7df,0xf7df,0xbe17,0xef7d,0x8c91,0x634d,0x73ae,0x73ce,0x73cf,0x52aa,0x4228,0x52aa,0x52aa,0x528a,0x52aa,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x4228,0x73ae,0x7bce,0x73ae,0x738d,0x634c,0x3185,0x5aeb,0x6b4d,0x5aec,0x6b6d,0x738e,0x738e,0x73ae,0x73ae,0x73ce,0x73ae,0x7c30,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x6b6d,0x0000,0x2104,0x94d3,0xd6bb,0x8c73,0x0001,0x2987,0x10a3,0x0020,0x0000,0x4248,0x6b6d,0x5aeb,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x0000,0x2945,0x5acb,0x630c,0x2104,0x0000,0x31c7,0x5aeb,0x5aeb,0x1082,0x0000,0x4208,0x52aa,0x4228,0x0000,0x0000,0x31a6,0x39e7,0x31c6,0x0000,0x0020,0x2124,0x39c7,0x31a6,0x0000,0x0841,0x2124,0x39e7,0x31a6,0x0000,0x0841,0x2985,0x4a89,0x39e7,0x0000,0x1082,0x4248,0x634d,0x39e7,0x0000,0x2103,0x5aeb,0x7baf,0x39a7,0x0000,0x2965,0x6b2d,0x738e,0x2945,0x0000,0x39e7,0x738e,0x73ae,0x1082,0x0000,0x4a49,0x738e,0x6b4d,0x0000,0x0000,0x52aa,0x738e,0x632c,0x0000,0x0000,0x630b,0x7bce,0x52aa,0x0000,0x18e3,0x630c,0x7bcf,0x52aa,0x0000,0x2965,0x6b4d,0x7bcf,0x4a49,0x0000,0x39c7,0x6b6e,0x73ae,0x39c7,0x0000,0x4a49,0x73ae,0x736e,0x2945,0x0000,0x39c7,0xdefb,0xef7d,0xd6ba,0xce79,0xc638,0xb5b6,0x6b4d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2104,0xad55,0xc638,0x9cf4,0xce79,0xd6ba,0xef5c,0xce7a,0xc65a,0xe77d,0xdf3c,0xe73c,0xe73c,0xe73c,0xe75c,0xe73c,0xdf3c,0xe73c,0xe73d,0xe75d,0xe73d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe73d,0xe75d,0xe73c,0xe75d,0xe73d,0xe73d,0xe73c,0xe75d,0xe73c,0xdf3d,0xdf1c,0xe73c,0xdf3c,0xe75d,0xe73d,0xe75d,0xe73c,0xdf3c,0xe73d,0xe73d,0xdf1c,0xdf1c,0xe73d,0xe73d,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe73c,0xdf3c,0xdf3c,0xdf1c,0xe73d,0xe75d,0xe73c,0xdf3c,0xe73c,0xe73d,0xe73d,0xdf3c,0xe73c,0xe73d,0xe75d,0xe75d,0xe73d,0xe73d,0xe73d,0xe73d,0xe73d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe73c,0xe73d,0xe75d,0xe75d,0xdf1c,0xf7be,0xb5d7,0xce79,0xc658,0x52cb,0x73ae,0x6b6d,0x6b8d,0x4208,0x528a,0x94d2,0x8c51,0x8c71,0x8c91,0x8c71,0x8430,0x7bcf,0x8410,0x8c72,0x8c71,0x9cd3,0x6b8e,0x4a69,0x73ae,0x738e,0x6b8e,0x73ae,0x3a08,0x31a7,0x738e,0x5aec,0x630c,0x738e,0x6b8e,0x73ae,0x73ae,0x73cf,0x73ae,0x73ce,0xa555,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c71,0x39e7,0x39e8,0x1103,0x3208,0x4a8a,0x1925,0x10c3,0x0882,0x0000,0x18e3,0x6b6d,0x634c,0x52ca,0x5acb,0x52ca,0x52aa,0x52cb,0x5acb,0x528a,0x5acb,0x39e7,0x0000,0x4a49,0x632c,0x3a08,0x0000,0x10a2,0x52aa,0x630c,0x39c7,0x0000,0x10c2,0x4a69,0x52aa,0x3186,0x0000,0x18c3,0x4207,0x3a07,0x2985,0x0000,0x18c3,0x31c7,0x3a08,0x3186,0x0000,0x18e3,0x31c6,0x4208,0x2985,0x0000,0x2124,0x39e7,0x4a89,0x31a6,0x0000,0x2965,0x52aa,0x5aeb,0x2965,0x0000,0x4228,0x630b,0x630c,0x2944,0x0000,0x4a69,0x6b6d,0x632c,0x18c3,0x0040,0x5acb,0x738d,0x630b,0x0020,0x18c3,0x5aeb,0x6b6d,0x5acb,0x0000,0x2945,0x632b,0x6b6d,0x52aa,0x0000,0x3185,0x6b4c,0x6b6d,0x4228,0x0000,0x31a6,0x6b4d,0x6b6d,0x4208,0x0000,0x39e7,0x6b8d,0x6b6d,0x39c7,0x0000,0x4a49,0x738e,0x630c,0x2965,0x0000,0x528a,0x73ae,0x62ec,0x2124,0x18e3,0x39e7,0xdefb,0xef7d,0xd6ba,0xce79,0xc618,0xb596,0x6b4d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2103,0xad55,0xc638,0xa514,0xce79,0xd6ba,0xef5c,0xce7a,0xc67a,0xe77d,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe73d,0xe73d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe73d,0xe73d,0xe73d,0xe75d,0xe75d,0xe75d,0xe73c,0xef9d,0xdefc,0xbdd7,0xdf1c,0x5b0c,0x632d,0x632d,0x6b4d,0x52ab,0x2966,0x8c72,0x8431,0x73af,0x5acb,0x39c8,0x8411,0xad96,0x8431,0x52ab,0x6b6e,0x8410,0x8430,0x4228,0x6b6e,0x6b8e,0x6b8e,0x6b4d,0x634d,0x2965,0x5aec,0x630c,0x5aeb,0x6b4d,0x738e,0x6b8e,0x738e,0x738e,0x73ce,0x73ce,0x8451,0xdedb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x73cf,0x2124,0x0000,0x0000,0x0000,0x0820,0x0000,0x1082,0x0000,0x5acb,0x7bef,0x5aeb,0x52cb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52ca,0x5aeb,0x1903,0x2965,0x5aeb,0x632c,0x2965,0x0000,0x4a69,0x52aa,0x52cb,0x2104,0x0000,0x4249,0x52aa,0x52aa,0x18c3,0x0000,0x31a6,0x4248,0x4a48,0x10a2,0x0020,0x31a6,0x4228,0x4228,0x18c3,0x0841,0x2124,0x4228,0x4208,0x1082,0x1082,0x2985,0x4a89,0x4248,0x10a2,0x1903,0x39e7,0x5aeb,0x4a69,0x1081,0x3a08,0x52ca,0x6b6d,0x52aa,0x10a2,0x4a69,0x5aeb,0x6b8e,0x4a69,0x10c3,0x4a8a,0x630c,0x6b8d,0x4a48,0x2103,0x52aa,0x632c,0x6b4c,0x39e7,0x2965,0x52ca,0x632c,0x6b8d,0x31a6,0x31c6,0x5aeb,0x634c,0x6b6d,0x2965,0x4207,0x52aa,0x6b4c,0x6b4c,0x18e3,0x4a48,0x52ca,0x738d,0x632c,0x2124,0x4a48,0x5aca,0x73ae,0x5aeb,0x18e3,0x5289,0x5aeb,0x7bcf,0x5aca,0x2144,0x52aa,0x4248,0xdedb,0xef7d,0xd6ba,0xce7a,0xc618,0xb575,0x634d,0x1081,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18e3,0x18e3,0xad54,0xce38,0xa514,0xce79,0xd6db,0xef5c,0xce7a,0xc65a,0xe75d,0xdf1c,0xdf3c,0xdf3c,0xdf5d,0xe75d,0xe73d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe79e,0xe79d,0xe77e,0xe75d,0xef5e,0xef5e,0xef7d,0xe79d,0xef9e,0xef9e,0xefbe,0xf7be,0xb5f7,0xdf1c,0x94b2,0x528b,0x6b4d,0x5aec,0x632d,0x3186,0x632d,0x9492,0x6b6e,0x2966,0x0842,0x630d,0x8c92,0x630c,0x0000,0x0000,0x3186,0x8c51,0x632c,0x52ab,0x738e,0x6b4d,0x6b8e,0x6b6e,0x3186,0x4a69,0x6b8d,0x5aca,0x632c,0x738e,0x6b8d,0x6b8e,0x738e,0x73ae,0x73ae,0x73cf,0xad75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x39c7,0x18c3,0x528a,0x4a6a,0x31a7,0x39c7,0x10a2,0x0000,0x3186,0x8410,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5acb,0x52aa,0x630c,0x4a49,0x0861,0x4a69,0x630c,0x4a8a,0x0861,0x2124,0x4a8a,0x52aa,0x4a49,0x0000,0x2145,0x52aa,0x52aa,0x4a69,0x0840,0x10a2,0x4208,0x4a49,0x4a49,0x0000,0x10a2,0x39e7,0x4248,0x4a49,0x0000,0x10a2,0x39c7,0x4a69,0x4228,0x0000,0x18e3,0x31c7,0x5acb,0x4a69,0x0000,0x31a6,0x4a69,0x630b,0x4248,0x0000,0x5acb,0x52aa,0x738d,0x4228,0x0020,0x5b0c,0x632c,0x73ae,0x31a6,0x2124,0x632c,0x632c,0x73ae,0x2124,0x31a6,0x634c,0x634c,0x73ae,0x10a2,0x3a07,0x636c,0x6b6d,0x6b6e,0x0000,0x4a89,0x634c,0x636c,0x6b8d,0x0000,0x52ca,0x632b,0x73ad,0x634c,0x0000,0x5aeb,0x5aeb,0x73ad,0x630b,0x0000,0x5b0b,0x5b2b,0x73ee,0x52aa,0x10c2,0x5b0b,0x5aeb,0x7c10,0x4a89,0x2944,0x5b0b,0x4248,0xdefb,0xef7d,0xd6ba,0xce79,0xc618,0xad75,0x632c,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18e3,0x18e3,0xad55,0xce59,0xa514,0xce79,0xd6da,0xef5c,0xce7a,0xcebb,0xf7ff,0xefbf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7de,0xf7de,0xf7df,0xf7de,0xf7df,0xf7df,0xf7df,0xf7de,0xf7de,0xf7de,0xf7de,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xefbe,0xefbe,0xf7df,0xf7df,0xf7df,0xf7df,0xefbe,0xefbe,0xf7df,0xefbf,0xefbe,0xf7be,0xf7bf,0xf7bf,0xf7be,0xf7be,0xf7be,0xf7be,0xefbe,0xefbe,0xf7bf,0xf7bf,0xefbe,0xefbe,0xefbe,0xefbe,0xef9e,0xf79e,0xefbe,0xe7de,0xdfbe,0xdf9e,0xe77e,0xe77e,0xe77e,0xdf5e,0xdf7e,0xefbe,0xc659,0xce9a,0xc618,0x4209,0x6b6d,0x632d,0x6b6e,0x4208,0x39c7,0x9492,0x8c71,0x7c10,0x6b4d,0x4228,0x2104,0x3a07,0x52aa,0x634c,0x7bcf,0x8450,0x73ae,0x4229,0x73af,0x6b6e,0x6b6e,0x6b6e,0x632c,0x2965,0x6b4d,0x6b4d,0x630c,0x6b6d,0x6b8e,0x6b6d,0x738e,0x738e,0x738e,0x73ae,0x8c71,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x0061,0x0000,0x4a49,0xbdf8,0xc639,0x4a8b,0x10c4,0x2145,0x0000,0x634c,0x9492,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x630c,0x39c7,0x18e3,0x630c,0x632c,0x4228,0x0000,0x3a07,0x52aa,0x5b0c,0x39c7,0x0000,0x39e7,0x4aaa,0x52cb,0x31a6,0x0000,0x3186,0x4a69,0x52aa,0x31a6,0x0000,0x2965,0x4228,0x4a69,0x31a6,0x0000,0x2124,0x4248,0x4a69,0x31c7,0x0000,0x2965,0x4a69,0x5289,0x39e7,0x0841,0x3a07,0x52aa,0x5b0b,0x39c7,0x2124,0x5aeb,0x5b0b,0x634d,0x31a6,0x3186,0x634c,0x630c,0x6b6d,0x2965,0x39e7,0x6b4d,0x632c,0x6b6d,0x2104,0x4227,0x634c,0x632c,0x6b6d,0x0821,0x4a69,0x6b6d,0x6b4d,0x6b8e,0x0000,0x52aa,0x634c,0x6b6d,0x632c,0x0000,0x5aeb,0x630b,0x73ad,0x630b,0x0000,0x5b0b,0x5b0b,0x73ce,0x5aca,0x10a2,0x632c,0x5aeb,0x73ae,0x4a69,0x2965,0x632c,0x52aa,0x7bcf,0x4228,0x39c6,0x630b,0x31c5,0xdedb,0xef7d,0xd6ba,0xce7a,0xc618,0xad55,0x630c,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2103,0x18c2,0xad55,0xce59,0xa534,0xce79,0xd6ba,0xef5c,0xce9a,0x9d56,0xbdf8,0xb5d7,0xadd7,0xadb7,0xad96,0xad75,0xad76,0xad75,0xa555,0xa555,0xa555,0xa535,0xa535,0xa535,0xa534,0xa534,0xa534,0xa534,0x9d34,0x9d34,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9cf3,0x9cf3,0x9cf3,0x9d14,0x9d14,0x9d14,0x9cf4,0x9cf3,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x94f3,0x94f3,0x94f3,0x94f4,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x94d3,0x94d3,0x94d3,0x94d3,0x94d3,0x94f3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94f3,0x94d3,0x94d3,0x94b2,0x8cb2,0x8491,0x8471,0x8451,0x8c31,0x8411,0x8410,0x8431,0x8431,0x8c92,0x73af,0xc638,0xe73c,0x634d,0x632d,0x6b4d,0x632d,0x5aeb,0x31a6,0x7bef,0x8430,0x7c0f,0x7c0f,0x840f,0x7bef,0x7bef,0x7bef,0x7bef,0x7c0f,0x7bef,0x8c71,0x52ab,0x5aeb,0x6b4d,0x6b4d,0x6b6e,0x6b6d,0x2965,0x5aeb,0x738e,0x5acb,0x632c,0x6b6d,0x634c,0x634c,0x6b4d,0x6b6d,0x6b8e,0x73ce,0xb5b6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x2145,0x31c7,0x3186,0x29a6,0x3a08,0x3187,0x18e4,0x0000,0x2985,0x8c91,0x73ae,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x2124,0x4208,0x632c,0x5b0c,0x2965,0x0000,0x4a69,0x52aa,0x52aa,0x2125,0x0860,0x4a69,0x52aa,0x52cb,0x2124,0x0000,0x4a69,0x4a69,0x5acb,0x2104,0x0020,0x4208,0x4228,0x52ca,0x10a2,0x1082,0x39e7,0x4a49,0x528a,0x0020,0x2104,0x39e7,0x4a89,0x528a,0x0000,0x31a7,0x4a69,0x5aeb,0x5acb,0x0000,0x4a89,0x5aeb,0x632c,0x52cb,0x1082,0x52aa,0x630c,0x6b4d,0x5aeb,0x18e3,0x52aa,0x5b0c,0x634c,0x5aeb,0x2104,0x5aca,0x5aeb,0x632c,0x5aeb,0x2945,0x5aeb,0x632c,0x632c,0x5acb,0x2124,0x630b,0x5b0b,0x632c,0x52ca,0x31a6,0x5aeb,0x52aa,0x6b4c,0x52aa,0x31a6,0x5b0b,0x52aa,0x6b4d,0x4a69,0x4228,0x5b0b,0x4a89,0x6b6d,0x4a49,0x4207,0x5aea,0x4a8a,0x634d,0x39e7,0x4a68,0x5aeb,0x29a5,0xd6ba,0xef7d,0xd6ba,0xce79,0xbdf7,0xad55,0x5b0b,0x1082,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x0861,0xa514,0xce59,0xa534,0xce79,0xd6ba,0xe73c,0xce9b,0x638f,0x6b0c,0x632d,0x5b2d,0x5b2d,0x630d,0x632c,0x5b0c,0x630c,0x630c,0x5b0c,0x5b0c,0x632c,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x632d,0x634d,0x634d,0x634d,0x634d,0x634d,0x636d,0x636d,0x634d,0x634d,0x6b6d,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6bae,0x6bae,0x6bae,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6bae,0x6bae,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x738e,0x6b8e,0x738e,0x73ae,0x73ae,0x738e,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x6bcf,0x6bef,0x73af,0x93f0,0xa3f0,0x9baf,0x8bee,0x940f,0x940f,0x8bee,0x942f,0x7bef,0x6b6e,0x94b3,0xefbe,0x9d34,0x4a8a,0x632d,0x632d,0x632d,0x31a6,0x630c,0x94b2,0x8410,0x8450,0x8450,0x8450,0x8450,0x8451,0x8431,0x7c10,0x8410,0x8c71,0x738e,0x52ab,0x73ae,0x630d,0x6b4d,0x6b6d,0x5b0b,0x2145,0x6b4d,0x5acb,0x52aa,0x6b6d,0x6b4d,0x632c,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x8c71,0xdf1b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa575,0x6b6e,0x18c3,0x0000,0x0000,0x0000,0x1082,0x0000,0x6b4c,0x94d3,0x632c,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x632c,0x528a,0x0000,0x52ca,0x634c,0x5acb,0x0000,0x31a6,0x4a69,0x5acb,0x4a69,0x0000,0x31a6,0x4a89,0x5aeb,0x4a69,0x0000,0x2965,0x4a89,0x4a8a,0x4248,0x0841,0x2945,0x4249,0x4a89,0x4a69,0x0020,0x2145,0x4228,0x4a69,0x528a,0x0000,0x31a6,0x4249,0x52aa,0x5acb,0x0000,0x4228,0x4a69,0x5acb,0x52aa,0x0000,0x52cb,0x4a8a,0x632c,0x52aa,0x0000,0x630c,0x52aa,0x634c,0x4a49,0x0000,0x632c,0x52aa,0x632c,0x39e7,0x2103,0x632c,0x52aa,0x5b0b,0x31a6,0x31a6,0x632c,0x4a89,0x5aeb,0x31a7,0x39e7,0x632c,0x52aa,0x630b,0x31a6,0x4a49,0x5aeb,0x52aa,0x630b,0x3185,0x4a69,0x5aca,0x52a9,0x630b,0x31a6,0x52aa,0x52aa,0x5aca,0x632c,0x31c6,0x52aa,0x4a69,0x52ca,0x632c,0x3a07,0x5289,0x4a48,0x4228,0xdefb,0xf79e,0xd6ba,0xd69a,0xc618,0xad75,0x5aeb,0x1081,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x0000,0xa514,0xd6ba,0xad75,0xce79,0xdedb,0xef7d,0xd6bb,0x8431,0x83ee,0x7bce,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7bcf,0x7bcf,0x73af,0x73ce,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73ef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bf0,0x7bf0,0x7bef,0x7bef,0x7bef,0x7bef,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7c10,0x7bef,0x7c10,0x7c10,0x7c10,0x8410,0x8410,0x8410,0x8410,0x83f0,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x8410,0x8410,0x7bf0,0x7bf0,0x7c10,0x7bcf,0x9410,0x9c10,0x93cf,0x83ae,0x83cf,0x83ef,0x7bae,0x83ce,0x738e,0x738e,0x4a6a,0xdedb,0xe77d,0x636d,0x630c,0x632d,0x6b4d,0x4228,0x2966,0x5aec,0x52aa,0x52aa,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a4a,0x4249,0x4a49,0x31a7,0x6b6e,0x738e,0x6b4d,0x6b8d,0x632c,0x2965,0x5aeb,0x632c,0x52aa,0x6b6d,0x73ce,0x73ae,0x73ae,0x738e,0x738d,0x6b6d,0x6b6d,0xb5d6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe75d,0x3a08,0x0000,0x2966,0x2105,0x2986,0x2125,0x10e2,0x9d13,0x7c0f,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x31a6,0x3186,0x5b0c,0x632c,0x39c7,0x0000,0x4229,0x4a69,0x52aa,0x39e7,0x0000,0x4229,0x4a69,0x5aeb,0x3a07,0x0000,0x4228,0x3a28,0x52aa,0x31a6,0x0000,0x39e7,0x4228,0x52aa,0x2985,0x0821,0x39c7,0x4208,0x52aa,0x31a6,0x10a2,0x39e7,0x4228,0x52aa,0x39e7,0x2104,0x4249,0x4a49,0x52aa,0x39e7,0x2124,0x52aa,0x4a89,0x5aeb,0x4228,0x2104,0x5aeb,0x52aa,0x5aeb,0x39c7,0x2124,0x632c,0x4aaa,0x632d,0x31a7,0x2124,0x630c,0x52aa,0x632c,0x2145,0x31a7,0x630c,0x5289,0x632c,0x18c3,0x39e7,0x632c,0x52aa,0x632c,0x0020,0x4a49,0x5acb,0x5aeb,0x632c,0x10a2,0x528a,0x52aa,0x630c,0x630c,0x0861,0x52aa,0x52aa,0x630c,0x5b0b,0x2944,0x5aca,0x4a89,0x5b0b,0x5aeb,0x31a6,0x5acb,0x4a89,0x52a9,0xbdf8,0xdefc,0xd6ba,0xc639,0xad75,0x9cd3,0x52aa,0x10a2,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x0000,0x9492,0xc618,0x9cd3,0xc659,0xd6ba,0xd6ba,0xa597,0x8472,0xa514,0x9cf4,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d35,0x9d34,0xa555,0xa555,0xa555,0xa555,0xa555,0xa555,0xa555,0xa576,0xa555,0xad76,0xad76,0xad96,0xa596,0xad96,0xad96,0xad96,0xad96,0xad76,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad76,0xad96,0xadb7,0xad96,0xad96,0xadb7,0xb5b7,0xad96,0xad96,0xad96,0xad96,0xad96,0xad96,0xad97,0xad96,0xad96,0xad96,0xad76,0xad76,0xad76,0xa576,0xad76,0xad96,0xad76,0xa556,0xa556,0xa576,0xa555,0xa535,0x9d55,0xa555,0x9d35,0xa555,0xa555,0xa555,0xad96,0xad96,0xb5d7,0xef9e,0xe75d,0x73cf,0x7bf0,0x7bf0,0x7bef,0x6b2d,0x52aa,0x52ab,0x5acb,0x528a,0x52cb,0x5acb,0x528a,0x5acb,0x5acb,0x52aa,0x528a,0x52cb,0x52cb,0x52aa,0x6b6e,0x7bf0,0x7bcf,0x7bcf,0x7c10,0x5b0c,0x2124,0x6b8d,0x5b0c,0x5b0c,0x73ae,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x6b8d,0x8c71,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x630c,0x0000,0x52ab,0xad56,0x94d4,0x31e8,0x0000,0x634c,0x94f2,0x6b4d,0x630c,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5aeb,0x52ca,0x0000,0x52aa,0x632c,0x5acb,0x0000,0x2124,0x4a6a,0x5aeb,0x52aa,0x0000,0x2103,0x4a49,0x52ab,0x52aa,0x18e3,0x18e3,0x4a89,0x4a89,0x528a,0x2104,0x18e3,0x4a69,0x4a69,0x52aa,0x18c3,0x2104,0x4a49,0x4248,0x5acb,0x1082,0x2945,0x4a69,0x4a69,0x52cb,0x0000,0x39c7,0x528a,0x52aa,0x5b0b,0x0000,0x4228,0x52aa,0x5aeb,0x5b0b,0x10a2,0x4228,0x5aeb,0x630c,0x630c,0x2104,0x4208,0x5aeb,0x5aeb,0x630c,0x2945,0x4228,0x5aeb,0x5b0c,0x634d,0x2945,0x4228,0x5b0b,0x5aeb,0x6b4d,0x2104,0x4228,0x632c,0x632c,0x6b6d,0x1082,0x4a69,0x5b0b,0x632c,0x6b6d,0x0000,0x52aa,0x5aeb,0x6b4d,0x6b4d,0x0000,0x52aa,0x5aeb,0x6b6d,0x5b0c,0x0861,0x5aeb,0x52aa,0x6b6d,0x5acb,0x1904,0x5aeb,0x52cb,0x6b4c,0x5b6f,0x63b1,0x6bb0,0x634d,0x4228,0x39e7,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2103,0x39e7,0x4a69,0x4208,0x636e,0x6bb0,0x6390,0x5370,0x5b4e,0x634d,0x634d,0x634d,0x634d,0x634d,0x632d,0x632c,0x632d,0x5b2c,0x632c,0x632c,0x630c,0x5b0c,0x5b0c,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aec,0x5aec,0x5aec,0x5acc,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52cb,0x52ab,0x52ab,0x52ab,0x52aa,0x52ab,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x52cb,0x52cb,0x52cb,0x52cb,0x52eb,0x52cb,0x52cb,0x5aec,0x5aec,0x634d,0x6b6d,0x4a49,0x2945,0x39c7,0x39e7,0x39c7,0x31a7,0x31a7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7,0x31a6,0x3186,0x31a7,0x3186,0x39e7,0x2145,0x0000,0x5b0b,0x5aeb,0x52ab,0x634d,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b8e,0x73ae,0xbdf7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x0000,0x31c7,0x4a69,0x5aec,0x52ab,0x2986,0x0000,0x9cf3,0x8450,0x5aeb,0x630c,0x5aeb,0x5b0c,0x5b0b,0x630c,0x5aeb,0x5aeb,0x632c,0x39e7,0x2124,0x5aeb,0x630c,0x4208,0x0000,0x39e8,0x4a6a,0x52aa,0x4248,0x0000,0x39c6,0x4a49,0x52aa,0x4228,0x0000,0x39e7,0x4a69,0x52aa,0x4208,0x0000,0x39c7,0x4a49,0x4a69,0x3a08,0x0861,0x39e7,0x4249,0x4228,0x3a08,0x0861,0x39c7,0x4a49,0x4248,0x4249,0x0000,0x4208,0x4a69,0x4249,0x4a49,0x0000,0x4a69,0x4a89,0x4a69,0x4a69,0x0000,0x4a8a,0x4a69,0x4a69,0x4249,0x0000,0x52aa,0x4249,0x4a69,0x4208,0x0020,0x52aa,0x4a69,0x4a49,0x39e7,0x18e3,0x5acb,0x4a69,0x4248,0x4208,0x2104,0x52ca,0x4a69,0x4208,0x4228,0x2124,0x52cb,0x4a69,0x39e7,0x39e7,0x2104,0x52aa,0x4208,0x39e7,0x39e7,0x18e3,0x5acb,0x3a07,0x39e7,0x31a6,0x10c2,0x52cb,0x31a6,0x31a6,0x2965,0x2124,0x5acb,0x2986,0x3165,0x42cd,0x42ac,0x39c6,0x3185,0x2945,0x2103,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x18c2,0x1081,0x2944,0x2944,0x31a7,0x3a8c,0x5391,0x21ca,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0041,0x18e4,0x39e7,0x73af,0x7bcf,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x73ce,0x94b2,0xe75c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce59,0x2186,0x52ab,0x2965,0x0000,0x0000,0x0000,0x73ae,0x9d13,0x634d,0x5aeb,0x630c,0x5b0c,0x5b0c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x0000,0x31c6,0x39e7,0x2104,0x0000,0x10a2,0x39c7,0x10c3,0x0000,0x0000,0x0000,0x39e7,0x18e3,0x0000,0x0000,0x0000,0x39e7,0x10a2,0x0000,0x0000,0x0000,0x39e7,0x0861,0x0041,0x0000,0x0841,0x3a08,0x10a2,0x0000,0x0000,0x10a2,0x4228,0x18c3,0x0000,0x0000,0x2104,0x4a69,0x18e3,0x0000,0x0000,0x2945,0x52aa,0x18e3,0x0000,0x0000,0x2144,0x5aeb,0x1903,0x0000,0x0000,0x2124,0x632c,0x1903,0x0000,0x0000,0x2945,0x632c,0x18c2,0x0000,0x0000,0x31c7,0x634c,0x10c2,0x0000,0x0000,0x39e7,0x632c,0x2104,0x0000,0x0000,0x4208,0x630c,0x1904,0x0861,0x0000,0x4a49,0x632c,0x2124,0x0882,0x0000,0x4a49,0x632c,0x2945,0x1903,0x10c3,0x4248,0x630c,0x2945,0x2104,0x18e3,0x4a69,0x632c,0x2145,0x2103,0x426a,0x4249,0x39a6,0x3186,0x2965,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x2945,0x2985,0x31a6,0x39e7,0x532f,0x530d,0x5269,0x528a,0x5289,0x528a,0x528a,0x528a,0x528a,0x528a,0x528a,0x528a,0x528a,0x52aa,0x5aab,0x52ab,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aca,0x5aaa,0x5aca,0x5acb,0x5aca,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5aaa,0x5aca,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x62ec,0x62eb,0x630b,0x62eb,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x62ec,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x630c,0x5b0c,0x632c,0x630b,0x630c,0x5b0c,0x5b0b,0x630c,0x630c,0x5aec,0x5aec,0x5aec,0x5b0c,0x630c,0x5aec,0x5b0c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x634d,0x6b6d,0x6b8d,0x7c10,0x7bf0,0x738e,0x6b6e,0x6b8e,0x738e,0x6b8e,0x6b6d,0x6b6d,0x6b6d,0x73cf,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x6b6e,0x0001,0x0000,0x0000,0x39e8,0xa534,0x7c30,0x52aa,0x630c,0x5b0c,0x5b0c,0x5b0b,0x630c,0x5aeb,0x5b0b,0x5b0b,0x52aa,0x528a,0x52aa,0x4a69,0x4a49,0x4a69,0x52aa,0x52aa,0x528a,0x52aa,0x528a,0x5aaa,0x5aaa,0x4a6a,0x52aa,0x52aa,0x52aa,0x52ca,0x4a89,0x4a89,0x4a69,0x4a69,0x528a,0x4a49,0x4248,0x4a69,0x528a,0x4a89,0x4228,0x4a69,0x4a69,0x4a8a,0x528a,0x4a49,0x4a69,0x4a69,0x52aa,0x528a,0x4a69,0x4a69,0x4a69,0x4a8a,0x52aa,0x52aa,0x5aeb,0x5aeb,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634d,0x634d,0x632c,0x632c,0x632c,0x632c,0x634d,0x630c,0x632c,0x632c,0x6b4d,0x6b4d,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632c,0x632c,0x632c,0x630c,0x630c,0x630c,0x632c,0x632c,0x5aeb,0x630c,0x5b0b,0x5b0b,0x630c,0x5aeb,0x632c,0x4a48,0x2945,0x3186,0x3165,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x2986,0x2943,0x424a,0x632d,0x632c,0x632c,0x632c,0x632c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b2d,0x632c,0x632c,0x632c,0x632d,0x632c,0x5b0c,0x630c,0x632c,0x632c,0x632c,0x630c,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634d,0x632c,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b2c,0x6b2d,0x634c,0x632d,0x634d,0x634d,0x6b4d,0x6b4d,0x634d,0x6b4d,0x634c,0x634d,0x634c,0x634d,0x634d,0x634c,0x634c,0x6b4d,0x634d,0x632d,0x632d,0x632d,0x632d,0x632d,0x632d,0x630c,0x632d,0x632d,0x632c,0x634d,0x632c,0x632c,0x5b2c,0x52aa,0x52ab,0x5acc,0x5aec,0x5aec,0x5aec,0x5aec,0x5b0c,0x630c,0x630c,0x5aeb,0x7bef,0xd6db,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbe18,0x0000,0x39e7,0x8c72,0x6b8e,0x7bef,0x8c92,0x52aa,0x528a,0x4a69,0x4a69,0x4249,0x4249,0x4a69,0x4a49,0x4249,0x4249,0x4a49,0x4a69,0x4a49,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a8a,0x4a8a,0x528a,0x4a6a,0x4a69,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4249,0x4a69,0x4a69,0x4a49,0x4228,0x4248,0x4a69,0x4a69,0x4228,0x4208,0x4248,0x4228,0x4248,0x4228,0x39e7,0x4248,0x4a69,0x4a69,0x4a49,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a69,0x4a8a,0x4a6a,0x4a69,0x4228,0x4a89,0x4a8a,0x4a8a,0x4a69,0x4228,0x4a69,0x4a69,0x4a8a,0x4a69,0x4208,0x4a69,0x4a89,0x4a69,0x4a49,0x4208,0x4a69,0x4a69,0x4a69,0x4248,0x4208,0x4a69,0x4a69,0x4a89,0x4248,0x4228,0x4a69,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x31a6,0x2945,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x31a6,0x39c6,0x426a,0x4a8a,0x4a69,0x528a,0x528a,0x52aa,0x4aa9,0x4aa9,0x4aa9,0x4aa9,0x4a89,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a89,0x4a89,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x4a89,0x4a69,0x4a69,0x4a69,0x4a49,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a69,0x4269,0x4269,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x52aa,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x4a8a,0x52aa,0x52aa,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4aaa,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x528a,0x52aa,0x52aa,0x528a,0x4a6a,0x528a,0x5289,0x5289,0x528a,0x5289,0x528a,0x528a,0x528a,0x52aa,0x528a,0x528a,0x528a,0x528a,0x4a8a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aca,0x52ca,0x5aeb,0x5b0b,0x4a8a,0x7c10,0xe71c,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0x2125,0x0000,0x73af,0x9d56,0x7c52,0x73f0,0x5aec,0x4a48,0x4a48,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x3a08,0x3a07,0x4208,0x39e7,0x4208,0x3a07,0x3a07,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x3a08,0x3a07,0x4208,0x3a07,0x3a07,0x4228,0x3a08,0x4208,0x3a07,0x3a07,0x3a07,0x4208,0x3a07,0x3a07,0x39e7,0x3a07,0x4207,0x3a07,0x39e7,0x39e7,0x4208,0x3a07,0x3a07,0x4208,0x4208,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x4227,0x39e7,0x39e6,0x39e6,0x39e7,0x4208,0x3a07,0x4228,0x39c7,0x39e7,0x4228,0x4208,0x39e7,0x3a07,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4228,0x3a08,0x4228,0x3a08,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4248,0x4248,0x4249,0x4228,0x4a69,0x4a69,0x4249,0x4208,0x39e7,0x3185,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3185,0x39c6,0x4249,0x52cb,0x52aa,0x52aa,0x5acb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52cb,0x52cb,0x52cb,0x52aa,0x52ca,0x52cb,0x5acb,0x52ca,0x52ca,0x52cb,0x52cb,0x52ca,0x52ca,0x52cb,0x52ca,0x52cb,0x52aa,0x5acb,0x5aeb,0x52cb,0x5acb,0x52cb,0x52cb,0x5acb,0x52cb,0x52cb,0x5acb,0x52aa,0x52cb,0x52cb,0x52ca,0x52ca,0x52cb,0x52ca,0x52ca,0x52aa,0x52ca,0x52ca,0x52ca,0x5acb,0x52cb,0x5acb,0x52ab,0x5acb,0x5acb,0x52ca,0x5aca,0x5aea,0x5aca,0x52ca,0x5aca,0x5aca,0x5aea,0x5aeb,0x52cb,0x52ca,0x52ca,0x52ca,0x5aea,0x5aca,0x52ca,0x52cb,0x52cb,0x5aec,0x5aec,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aec,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aec,0x5aec,0x5aec,0x5aec,0x5b0c,0x632c,0x632b,0x632c,0x632c,0x634c,0x634c,0x634c,0x632c,0x6b4c,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x738d,0x738d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x738e,0x6b8d,0x6b8e,0x738f,0xb5b6,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5d7,0x2166,0x4249,0x2145,0x0000,0x630b,0x8430,0x632c,0x52ca,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x52ca,0x52ca,0x52aa,0x52cb,0x52ca,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a8a,0x528a,0x52aa,0x52aa,0x528a,0x528a,0x528a,0x528a,0x4a8a,0x528a,0x4a69,0x4a89,0x528a,0x4a8a,0x4a8a,0x4a89,0x4a69,0x528a,0x4a89,0x4a69,0x4a89,0x4a8a,0x4a8a,0x4a89,0x4a89,0x4a8a,0x528a,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x5aca,0x52ca,0x52aa,0x52ca,0x52ca,0x52cb,0x52ca,0x52aa,0x52cb,0x52aa,0x5acb,0x52ca,0x52aa,0x52ca,0x52cb,0x5acb,0x5acb,0x52aa,0x52ca,0x52cb,0x5acb,0x52cb,0x52cb,0x52cb,0x52aa,0x52cb,0x52cb,0x52ca,0x52ca,0x5acb,0x52ca,0x52cb,0x52cb,0x5aeb,0x5acb,0x52aa,0x52ca,0x5acb,0x5acb,0x5aeb,0x4a49,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39c6,0x4249,0x52cb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x5b0c,0x630c,0x630c,0x632c,0x5b0c,0x630c,0x5b0c,0x630c,0x5b0b,0x630c,0x632c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632d,0x630c,0x630c,0x632d,0x632d,0x632c,0x630c,0x632d,0x632d,0x630c,0x632d,0x632d,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x632d,0x634d,0x6b4d,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b6d,0x6b6e,0x6b6d,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x634d,0x632d,0x6b4d,0x634d,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6e,0x6b6e,0x6b4d,0x6b6d,0x6b6e,0x6b6e,0x6b6d,0x9492,0xe73c,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x2165,0x4249,0x10c4,0x2944,0xb594,0x7bef,0x5aeb,0x5b0c,0x5b0c,0x630c,0x5acb,0x5acb,0x5acb,0x52cb,0x52ab,0x52aa,0x52ab,0x52cb,0x52aa,0x5acb,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52ab,0x52cb,0x528a,0x52aa,0x52aa,0x52aa,0x528a,0x4a8a,0x528a,0x528a,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x528a,0x528a,0x528a,0x4a69,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x4a89,0x528a,0x4a89,0x4a69,0x4a69,0x4a89,0x4a6a,0x4a6a,0x4a8a,0x528a,0x4a8a,0x4a89,0x52aa,0x528a,0x52aa,0x528a,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x52ab,0x52cb,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x52aa,0x52cb,0x52aa,0x52aa,0x52ca,0x52cb,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x5acb,0x5acb,0x52aa,0x52aa,0x52cb,0x5acb,0x528a,0x52ca,0x52cb,0x52aa,0x5acb,0x52cb,0x52cb,0x52cb,0x52ca,0x4a48,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2965,0x39c6,0x4249,0x52eb,0x5aeb,0x5b0c,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x630c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0c,0x5aeb,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acc,0x5acc,0x5aec,0x5acc,0x5acc,0x5acc,0x5acc,0x5acb,0x5acc,0x5aec,0x5acc,0x52ab,0x5acb,0x5acc,0x5acb,0x5acc,0x5acb,0x52ab,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x52cb,0x52ab,0x52ab,0x5acb,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x528a,0x4a6a,0x4a6a,0x4a4a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4a49,0x4a4a,0x4a49,0x4a4a,0x4249,0x4a4a,0x4229,0x4249,0x4249,0x4a49,0x4a4a,0x4249,0x4229,0x4209,0x4a49,0x4209,0x4209,0x4229,0x4229,0x41e8,0x4229,0x4208,0x39e8,0x4229,0x4228,0x3186,0xad76,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x4a8a,0x0000,0x630b,0xa4f3,0x4a69,0x4228,0x3a08,0x3a08,0x39e8,0x31c7,0x39c7,0x39c7,0x39c7,0x39e7,0x31e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x3187,0x3186,0x31a7,0x31a7,0x3187,0x3187,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x3187,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x31a6,0x2986,0x31c6,0x31a6,0x2986,0x31a7,0x3186,0x3186,0x3187,0x31a7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2986,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x2965,0x3186,0x2985,0x2965,0x2985,0x2985,0x2985,0x31a6,0x2945,0x39c6,0x4207,0x2985,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4249,0x3a08,0x2924,0x2985,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2945,0x2104,0x2145,0x2124,0x2124,0x2144,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x1904,0x1904,0x18c3,0x18e3,0x18c3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x10a3,0x1082,0x1082,0x10a3,0x10a2,0x1082,0x18c3,0x1082,0x0021,0x1082,0x0861,0x0862,0x0841,0x0021,0x0000,0x0000,0x0001,0x0842,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x10a3,0x10a2,0x0862,0x0842,0x1083,0x1083,0x0862,0x0861,0x0862,0x10a3,0x0862,0x1082,0x0862,0x0862,0x10a2,0x10a3,0x18c4,0x1083,0x10a3,0x0862,0x0861,0x0000,0x0000,0x0842,0x0021,0x0021,0x1062,0x1062,0x0861,0x10a2,0x10a3,0x39e8,0x4228,0xd69a,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x0000,0x4249,0x8431,0x52ab,0x6b8e,0x6b6e,0x52cb,0x634d,0x5b0c,0x52cb,0x4a8a,0x4a8a,0x4a69,0x4269,0x3a08,0x4228,0x4229,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x3a28,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x39c7,0x31c7,0x39c7,0x39c7,0x31a7,0x3187,0x3186,0x3187,0x3186,0x3186,0x39c7,0x4a49,0x4208,0x39c7,0x3186,0x3186,0x2945,0x2966,0x31a7,0x3186,0x2945,0x2945,0x2124,0x2144,0x1904,0x2145,0x2104,0x1904,0x2145,0x2104,0x2104,0x2125,0x2104,0x2104,0x2945,0x2124,0x2104,0x2104,0x18c3,0x10a2,0x18e3,0x10c3,0x10a2,0x0882,0x18e3,0x1904,0x0861,0x0861,0x10a2,0x0861,0x0881,0x0020,0x0861,0x0882,0x0041,0x0882,0x0041,0x0861,0x0041,0x0041,0x0040,0x0000,0x0000,0x0000,0x0041,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4207,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39c6,0x426a,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0840,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x2104,0x1082,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0020,0x0040,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x0021,0x3186,0x0000,0x9492,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5aec,0x10a3,0x632d,0x4a8a,0x4a6a,0x31a6,0x1082,0x1904,0x2124,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x10c3,0x18c3,0x18e3,0x10c3,0x10a3,0x10c3,0x10c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0882,0x1082,0x0882,0x0862,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0041,0x0841,0x0041,0x0020,0x0020,0x0841,0x0841,0x0020,0x0021,0x0841,0x0841,0x0841,0x0021,0x0841,0x0841,0x0841,0x0021,0x0821,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0820,0x0000,0x31a6,0x4207,0x2985,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39c6,0x4269,0x2987,0x0000,0x1082,0x10a2,0x10a2,0x0862,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0040,0x0841,0x0841,0x0020,0x0841,0x0021,0x0841,0x0841,0x0021,0x0841,0x0041,0x0841,0x0821,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0021,0x0021,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x1903,0x2124,0x0861,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x10a2,0x10a1,0x1082,0x0861,0x1082,0x0000,0x8430,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x5aeb,0x2945,0x2105,0x39e7,0x0840,0x0000,0x0000,0x18e3,0x2123,0x2104,0x2125,0x10a2,0x18a3,0x1082,0x1082,0x18e3,0x18e4,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1062,0x1082,0x0862,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0882,0x0862,0x0861,0x0861,0x0861,0x0861,0x0861,0x0882,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0041,0x39a6,0x4207,0x2985,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x424a,0x31a7,0x0820,0x10c3,0x18c3,0x1082,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0841,0x0841,0x0841,0x0041,0x0841,0x0841,0x0021,0x0041,0x0841,0x0841,0x0841,0x0841,0x0040,0x0021,0x0041,0x0021,0x0021,0x0041,0x0041,0x0041,0x0841,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0841,0x10a2,0x10c3,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x10a2,0x1082,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x0862,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0841,0x0841,0x0862,0x1082,0x1082,0x10c3,0x0020,0x0861,0x18c3,0x10a2,0x0861,0x18c3,0x0000,0x8c51,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7c10,0x0001,0x31a7,0x4229,0x18c3,0x0000,0x0841,0x18e3,0x2985,0x10a2,0x0000,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1062,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0000,0x0861,0x0841,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3185,0x4208,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4a6a,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a3,0x18c3,0x10a2,0x0861,0x18c3,0x0000,0x94b2,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdf7,0x0000,0x630c,0x5acb,0x0021,0x0000,0x0020,0x18c2,0x2985,0x18c3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x1040,0x1000,0x1820,0x0800,0x1000,0x1060,0x18e0,0x18e0,0x18e1,0x1901,0x2984,0x2924,0x2124,0x2104,0x2944,0x2944,0x2944,0x2965,0x2945,0x31a6,0x31c7,0x31a6,0x39c6,0x3164,0x31a5,0x39c6,0x3185,0x3164,0x3185,0x3185,0x4207,0x39e7,0x39a6,0x39c6,0x39a6,0x39a6,0x41e7,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x4208,0x3a08,0x4208,0x4249,0x4208,0x4a49,0x4a69,0x4208,0x4249,0x4208,0x4228,0x4a69,0x4208,0x4208,0x39e7,0x3185,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4229,0x632c,0x5b0c,0x4a8a,0x4a6a,0x4229,0x3a28,0x4249,0x3a08,0x31c7,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x29a7,0x2986,0x2986,0x29a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x31c7,0x31e8,0x3a08,0x3a08,0x39e8,0x31e8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e7,0x3a28,0x3a08,0x4229,0x4228,0x39e8,0x4249,0x3a08,0x39e8,0x31c7,0x426a,0x4249,0x4249,0x52cb,0x52ab,0x52ab,0x4269,0x4a6a,0x4a8a,0x52cb,0x52cb,0x52ab,0x52cb,0x5aec,0x52cb,0x5aec,0x5b2c,0x5b0c,0x632d,0x634d,0x634d,0x634d,0x6b6e,0x6b8e,0x6b8e,0x7bef,0x9492,0x94b2,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x94b2,0xa4f3,0xad54,0xa534,0xa513,0xad54,0xa513,0x9cf3,0x9cf3,0x9cf3,0xa534,0xa534,0x9cf3,0xa4f3,0xa534,0xad55,0xa534,0xad55,0xa534,0xa514,0xa514,0xad55,0xad75,0xad75,0x9cf3,0x8451,0x73ae,0x6b8d,0x2945,0x0020,0x18e3,0x10a2,0x0861,0x18c3,0x0000,0xa513,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7bcf,0x2125,0x6b6d,0x5acb,0x0841,0x0000,0x0020,0x10c2,0x3185,0x2945,0x10a2,0x840f,0xa514,0xad34,0xad55,0xad95,0xb595,0xad55,0xad55,0xad75,0xad75,0xb596,0xb5b6,0xb5b6,0xc618,0xbdd6,0xb5d6,0xbdf7,0xbe17,0xc617,0xbdf7,0xc638,0xc618,0xc638,0xc638,0xbe17,0xc638,0xc638,0xc658,0xce58,0xc658,0xc658,0xc638,0xc658,0xc658,0xce79,0xc659,0xb638,0xc679,0xce99,0xce99,0xc69a,0xbe59,0xb5f7,0xbe38,0xb618,0xb618,0xb618,0xb5d8,0xb5f9,0xb5f8,0xadb7,0xadb7,0xadd8,0xadd8,0xadd8,0xb5d8,0xb618,0xb5f8,0xadd8,0xadd7,0xadd7,0xadb7,0xadb7,0xadd7,0xadb7,0xb618,0xbe39,0xb618,0xbe39,0xb5f8,0xb5f8,0xb5f8,0xa596,0xa597,0xa597,0xa597,0xb5d8,0xadd7,0xb5d8,0xb5f8,0xadb7,0xa597,0xadb7,0xb5d7,0xb5d8,0xb5f9,0xb5f9,0xb5f8,0xb5d8,0xadd8,0xb5f8,0xb619,0xb5f9,0xbe3a,0xbe39,0xadb7,0xadb7,0xa577,0xa597,0xb5f8,0xadd8,0x73af,0x2923,0x31a6,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x4207,0x10e4,0xc639,0xc67a,0x9d35,0x8cd3,0x7c72,0x7c51,0x7c31,0x7411,0x6bf0,0x6bd0,0x6bb0,0x6b8f,0x638f,0x638f,0x638f,0x638f,0x636e,0x636e,0x636e,0x636e,0x636e,0x636e,0x636e,0x636e,0x638e,0x638e,0x636e,0x638f,0x636e,0x636e,0x7411,0x638f,0x5b6e,0x6baf,0x636e,0x636e,0x638f,0x63af,0x6baf,0x6baf,0x638e,0x638f,0x638f,0x638f,0x636f,0x636f,0x636e,0x5b4e,0x636e,0x638f,0x638f,0x6baf,0x638f,0x636e,0x6b8f,0x638f,0x63af,0x636e,0x63af,0x6baf,0x6baf,0x6bd0,0x73f0,0x7c31,0x73f0,0x7410,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x8472,0x8472,0x8493,0x8cb3,0x8cb3,0x8472,0x7c52,0x8472,0x8472,0xa555,0xdefb,0xe75d,0xe73c,0xe75d,0xe75d,0xe75d,0xef5d,0xe75d,0xe75d,0xef5d,0xef5d,0xef5d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef9e,0xef9e,0xef7e,0xef9e,0xf79e,0xf79e,0xf7df,0xf7be,0xf7be,0xf7be,0xef9e,0xefdf,0xef9e,0xefbe,0x73ae,0x0000,0x2125,0x10a3,0x0861,0x18c3,0x0000,0xad75,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x528a,0x2104,0x0000,0x4a49,0x2945,0x0000,0x0020,0x10a2,0x3186,0x2965,0x0000,0xdefb,0xffff,0xf7ff,0xef9e,0xf79e,0xef7e,0xef7e,0xef7d,0xef7d,0xef9e,0xe75d,0xdedb,0xdf1c,0xdefc,0xdf1c,0xe73c,0xef5d,0xef5d,0xe73c,0xe71c,0xe71c,0xdf1c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd6db,0xd6db,0xd6db,0xd69a,0xce79,0xc659,0xb638,0xbe38,0xce79,0xc679,0xbe59,0xb638,0xb5f8,0xadd7,0xadb6,0xa5b7,0xa597,0xa597,0xa597,0xa5b7,0x9d77,0x9d56,0x9d16,0x9d16,0x9d16,0x9d16,0x9515,0x9514,0x9514,0x94f4,0x8cd4,0x8cb4,0x8cd3,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x84b3,0x84d4,0x8cd5,0x84b4,0x7c73,0x7452,0x7c73,0x7432,0x7c53,0x6c11,0x7432,0x7c73,0x7c73,0x7452,0x7432,0x6bf1,0x63d0,0x73f1,0x7c32,0x7c52,0x7411,0x7411,0x73f1,0x7411,0x73f1,0x7432,0x7411,0x6bd0,0x63b0,0x634f,0x634e,0x5b6f,0x5b4e,0x5b8f,0x4a8a,0x39c6,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39c6,0x4229,0x636e,0x3a69,0x0166,0x0105,0x00c5,0x00c5,0x0084,0x00a5,0x1126,0x1947,0x1126,0x0926,0x1126,0x1105,0x0905,0x1105,0x0905,0x0905,0x0105,0x00e4,0x00c4,0x00e4,0x0084,0x00c4,0x00c4,0x0083,0x00c4,0x0905,0x00e4,0x00a3,0x1105,0x08e5,0x00a4,0x08c5,0x08e5,0x00a5,0x0084,0x00a3,0x0083,0x0083,0x0001,0x0001,0x0043,0x0023,0x0003,0x0023,0x0002,0x0043,0x0002,0x0001,0x0023,0x0001,0x0002,0x0002,0x0000,0x0022,0x0001,0x0002,0x0002,0x0001,0x0002,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0043,0x00a4,0x0084,0x0000,0x0000,0x0000,0x00e4,0x0001,0x0000,0x0000,0x0000,0x0000,0x1125,0x4aab,0x4249,0x4a8a,0x4aab,0x4aab,0x52cb,0x52eb,0x52eb,0x52cb,0x4aab,0x4acb,0x52eb,0x52eb,0x52ec,0x52ec,0x5b2d,0x5b4d,0x530c,0x5b2d,0x5b2d,0x5b2d,0x5b4d,0x5b4d,0x5b4d,0x638e,0x6b8f,0x6baf,0x8451,0x73d0,0x73cf,0x73d0,0x6baf,0x94d4,0xe73c,0xffff,0x6b8e,0x0000,0x2924,0x18a3,0x0861,0x18c3,0x0000,0xbdf7,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0x528a,0x0000,0x52cb,0x634e,0x2104,0x0000,0x0020,0x1082,0x3186,0x3166,0x0000,0xd6db,0xd6db,0x7c30,0x7c30,0x7c10,0x7c30,0x7c30,0x7c10,0x7c10,0x8472,0x6baf,0x00e5,0x31e8,0x3a29,0x4249,0x5b0c,0x73ae,0x7bef,0x7bef,0x73ce,0x6bae,0x6bae,0x634d,0x5aeb,0x5b0b,0x636d,0x636d,0x636d,0x636d,0x5b2c,0x4aeb,0x3249,0x19c7,0x0104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0003,0x0001,0x0000,0x0000,0x0080,0x0080,0x0042,0x2985,0x29c6,0x29c6,0x21a5,0x2185,0x29c6,0x3a07,0x4a6a,0x422a,0x422a,0x4a4a,0x4a4a,0x528a,0x528a,0x4a8a,0x4aaa,0x4a8a,0x5aec,0x52ca,0x528a,0x52aa,0x5b0c,0x632c,0x634c,0x636e,0x636e,0x6b8f,0x6b8f,0x636e,0x6baf,0x6bae,0x636e,0x6b8e,0x6b6e,0x634d,0x5b2c,0x634d,0x636d,0x634d,0x634d,0x634d,0x6b6d,0x6b8e,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x6bae,0x6b8e,0x73af,0x52ab,0x39c6,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x39e7,0x2986,0xa534,0xad96,0x94d3,0x7c31,0x6b8f,0x636d,0x634d,0x6bae,0x73ef,0x6b6e,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x5b0d,0x5b0c,0x5b0c,0x5b2d,0x5b2d,0x5b2d,0x5b2c,0x5b2d,0x5b0c,0x530c,0x5b2d,0x5b2d,0x530d,0x5b2d,0x5b2d,0x5b2d,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x632d,0x632d,0x5b2d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5aec,0x5b0d,0x5b0d,0x5b0d,0x5b0d,0x5aec,0x5b0c,0x5b0d,0x5b0d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x5b2d,0x5b2e,0x636e,0x636e,0x636e,0x636e,0x636e,0x638f,0x6b8f,0x6b8f,0x6baf,0x6baf,0x6baf,0x73af,0x6bae,0x6b8e,0x6b8e,0x6bae,0x73ef,0x7c10,0x73ef,0x73ef,0x7c30,0x6baf,0x636e,0x6b8e,0x6baf,0x7c31,0xad76,0xc618,0xc639,0xce7a,0xce79,0xce7a,0xce7a,0xce7a,0xce7a,0xce7a,0xce7a,0xd67a,0xce7a,0xce7a,0xd69a,0xce7a,0xce7a,0xd69a,0xce7a,0xd69a,0xd69a,0xd67a,0xd699,0xd699,0xd699,0xce99,0xce79,0xce79,0xce79,0xce79,0xc638,0xd69a,0x94b2,0x6b4c,0xef7d,0x6b8e,0x0000,0x2944,0x10a2,0x0842,0x18c3,0x0000,0xce59,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc659,0x0842,0x528b,0xad96,0x8452,0x0000,0x0020,0x0020,0x1082,0x3166,0x3186,0x0000,0xd6ba,0x9cf3,0xceba,0xef5d,0xe73c,0xe75d,0xef5d,0xef5d,0xef5d,0xef5d,0xe75d,0xe73c,0xe73c,0xdf1c,0xdf3c,0xdf3c,0xd6fc,0xd71c,0xd71c,0xdf3c,0xdf3c,0xe73c,0xe73c,0xe75d,0xe75d,0xdf3c,0xdf1c,0xd6fb,0xd6db,0xceba,0xc69a,0xc679,0xbe59,0xbe59,0xbe59,0xb618,0xb5f8,0xb5f8,0xb618,0xb5f8,0xadf7,0xadb7,0xadd7,0xadd7,0xadb6,0xa5b7,0xa597,0xa5b6,0xadb7,0xa596,0xa596,0xa596,0xa596,0xa596,0xa596,0xa576,0xa576,0xa576,0xa576,0xa576,0xa576,0x9d56,0x9d76,0x9d55,0x9d76,0xa576,0x9d55,0xa576,0x9d76,0x9d55,0x9d55,0x9d55,0xa596,0xadb7,0xadb7,0xad97,0xadb7,0xadd8,0xadd8,0xa5b7,0x9d76,0x9d55,0x9535,0x9514,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x9514,0x94f4,0x9514,0x9514,0x94f4,0x9515,0x9515,0x94f4,0x9514,0x9515,0x9515,0x9d35,0x636d,0x3144,0x31a6,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2965,0x41e7,0x2125,0xb5d7,0xc65a,0xa597,0x94f5,0x7c31,0x73f0,0x6bb0,0x7411,0x8472,0x7c31,0x7c31,0x7411,0x6bf0,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6baf,0x638f,0x63af,0x63af,0x63af,0x63cf,0x63cf,0x5baf,0x63af,0x63b0,0x5b90,0x5b90,0x63b0,0x638f,0x63af,0x638f,0x638f,0x638f,0x638f,0x6390,0x6390,0x6390,0x6390,0x6b90,0x6bb0,0x6390,0x6390,0x6390,0x6b90,0x6390,0x63b0,0x63b0,0x63d0,0x63d0,0x63f1,0x6bd0,0x6bb0,0x6bb0,0x6bb0,0x6bb0,0x6bd0,0x63d0,0x63d0,0x63d0,0x63d1,0x6bf1,0x6c11,0x7432,0x6c32,0x7432,0x6c12,0x7432,0x7c31,0x7c52,0x8452,0x8473,0x8493,0x8cb3,0x8cb4,0x8493,0x7c72,0x84b3,0x7c52,0x6bd0,0x6bf0,0x7411,0x8493,0xb5f8,0xd6db,0xdf1c,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xef7d,0xe77d,0xe77d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7e,0xef9e,0xef7e,0xef7e,0xef7e,0xef7d,0xef7e,0xe73d,0xf7bf,0xdf1c,0x4207,0xe71c,0x73ae,0x0000,0x2944,0x10a2,0x0841,0x18c3,0x0000,0xd69a,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8410,0x2925,0x3166,0x10a3,0x528a,0x2966,0x0000,0x0020,0x1082,0x3145,0x3186,0x0000,0xd69a,0xad55,0xefbe,0xffff,0xf7bf,0xf7df,0xf7df,0xf7df,0xefbf,0xefbf,0xef9e,0xdf5d,0xdf1c,0xd71c,0xd71c,0xd6fc,0xcefb,0xcefb,0xcefb,0xd6fc,0xd6fb,0xcedb,0xd6bb,0xcedb,0xcedb,0xcedb,0xc6ba,0xc69a,0xc679,0xbe79,0xbe59,0xbe59,0xb638,0xb618,0xb618,0xadd7,0xadb7,0xadf8,0xb618,0xadd7,0xa5b7,0xa5b7,0xa597,0xa596,0xa596,0xa596,0xa576,0xa576,0x9d56,0xa576,0xa556,0xa556,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0x9d55,0x9d55,0x9535,0x9535,0x9535,0x9555,0x9d55,0x9515,0x9515,0x9535,0x9535,0x9515,0x9515,0x8cf4,0x9515,0x9d55,0xa576,0xa576,0xa576,0x9d36,0x9515,0x8cf4,0x8cd4,0x84d3,0x8493,0x84b3,0x84b3,0x84b3,0x84b4,0x84b4,0x84b4,0x84b3,0x8cb3,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x8cd4,0x84b3,0x8493,0x84b4,0x5b2d,0x3185,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39e7,0x2965,0xa576,0xb618,0x9535,0x8494,0x6bd1,0x63b0,0x5b8f,0x638f,0x7411,0x6bf1,0x6bf1,0x6bf1,0x63d0,0x6bb0,0x6bb0,0x6bf0,0x63b0,0x638f,0x6bb0,0x638f,0x63b0,0x638f,0x636f,0x6bd0,0x6bd0,0x638f,0x63b0,0x63af,0x63af,0x638f,0x63af,0x63af,0x638f,0x63b0,0x6390,0x5b8f,0x63b0,0x6bf0,0x63af,0x63af,0x63af,0x638f,0x63af,0x63af,0x638f,0x5b8e,0x5b6e,0x63af,0x638f,0x5b6e,0x63af,0x638e,0x638f,0x638f,0x5b6e,0x63af,0x63af,0x63af,0x6bd0,0x6bd0,0x6bd0,0x6bf0,0x7411,0x7411,0x7410,0x7411,0x7431,0x7411,0x7411,0x7431,0x7432,0x7c53,0x7c73,0x7c52,0x7c52,0x7c53,0x7c52,0x7c32,0x6bd0,0x7412,0x7432,0x5b8f,0x5b8f,0x63b0,0x6bd1,0x9515,0xbe79,0xc69a,0xceba,0xcedb,0xcedb,0xd6db,0xcedb,0xceda,0xcefb,0xcedb,0xcedb,0xd6fb,0xd6fb,0xd6fb,0xcefb,0xcefb,0xd6fb,0xd6fb,0xd6fb,0xcefb,0xd6fb,0xd6db,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6db,0xd6fb,0xd6fc,0xcebb,0xdf3d,0xc69a,0x630b,0xe73c,0x6b6d,0x0000,0x2945,0x10c2,0x0861,0x18c3,0x0000,0xd69a,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x6b6e,0x0000,0x4208,0x73ae,0x634d,0x2946,0x0000,0x0020,0x1082,0x2945,0x3186,0x0000,0xd6ba,0x9d14,0xceba,0xefdf,0xdf5d,0xe77e,0xe75d,0xdf5d,0xdf3d,0xdf1c,0xdf1c,0xd6fc,0xcebb,0xcebb,0xc69b,0xc69a,0xc67a,0xc69a,0xc69a,0xc67a,0xc67a,0xbe79,0xbe79,0xbe79,0xbe79,0xbe59,0xb638,0xb638,0xb618,0xb618,0xb5f8,0xadd8,0xadd8,0xadd7,0xadb7,0xa597,0xa5b7,0xadd7,0xadd7,0xa5b7,0xa596,0x9d76,0x9d56,0x9d56,0x9d76,0x9d55,0x9d55,0x9d35,0x9515,0x9d35,0x9d55,0x9d35,0x9d35,0x9d55,0x9d56,0x9d35,0x9535,0x9d35,0x9535,0x9535,0x9515,0x9515,0x9515,0x9515,0x9515,0x94f5,0x8cf5,0x94f5,0x8cf4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cf4,0x94f4,0x8cf4,0x8cd4,0x84b3,0x84b3,0x84b3,0x8493,0x8493,0x8493,0x7c72,0x7c92,0x84b3,0x84b4,0x84b3,0x84b3,0x8cb3,0x8cb3,0x8492,0x84b3,0x8cd4,0x8cb3,0x8cb3,0x84d3,0x8cd3,0x8cd3,0x8cd3,0x8cd4,0x634d,0x3185,0x3186,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2945,0x2944,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2944,0x2944,0x2124,0x2124,0x2944,0x2944,0x2945,0x2944,0x2124,0x2124,0x2124,0x2124,0x2965,0x41e7,0x2145,0xad96,0xbe39,0xa576,0x8cd4,0x6bf0,0x63b0,0x638f,0x5b8f,0x638f,0x5b8f,0x5b6e,0x5b8f,0x638f,0x638f,0x63b0,0x6b8f,0x638f,0x638f,0x638f,0x638f,0x638f,0x636f,0x636f,0x6b8f,0x6b90,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x638f,0x6baf,0x6baf,0x63af,0x6bd0,0x638f,0x63af,0x63d0,0x6bd0,0x63af,0x63af,0x6baf,0x63af,0x63cf,0x63cf,0x63cf,0x63af,0x63cf,0x6bf0,0x6bcf,0x6baf,0x73d0,0x6baf,0x6baf,0x6bcf,0x63af,0x6bf0,0x6c10,0x6bf0,0x6bf0,0x73f0,0x6bd0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7c11,0x7c11,0x7411,0x7411,0x7432,0x7432,0x7431,0x7431,0x7431,0x7432,0x7452,0x7411,0x7411,0x7452,0x7432,0x6390,0x638f,0x6bd0,0x6bd1,0x8cb3,0xbe18,0xce9a,0xcebb,0xd6db,0xd6bb,0xd6db,0xd6fc,0xd6db,0xd6db,0xd6fc,0xd6db,0xd6db,0xd6fc,0xdefc,0xd6fc,0xd6fc,0xdf1c,0xdf1b,0xdf1b,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xd71c,0xdf1c,0xd6bb,0xe75d,0xc65a,0x6b2c,0xef5d,0x6b6d,0x0000,0x2945,0x10a2,0x0861,0x1082,0x0000,0xd6ba,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc618,0x0000,0x4249,0x9cf4,0xad76,0x8431,0x2925,0x0000,0x0841,0x0861,0x2124,0x2965,0x0000,0xd6ba,0x9492,0xb5f7,0xf7df,0xdf3d,0xdf5d,0xdf3d,0xdf3d,0xdf3d,0xd73c,0xd71c,0xd6fc,0xcefb,0xcebb,0xc69a,0xc6bb,0xc69a,0xbe5a,0xc67a,0xbe5a,0xbe79,0xc67a,0xbe79,0xbe59,0xbe59,0xbe39,0xb639,0xb618,0xb618,0xadf8,0xadd8,0xadd8,0xadd8,0xa5b7,0xa597,0xadb7,0xadd8,0xadb7,0xa596,0xa596,0xa596,0x9d76,0x9d76,0xa576,0x9d56,0x9d76,0x9d76,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d55,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0x9535,0x9535,0x9535,0x9535,0x9515,0x9515,0x94f5,0x94f5,0x8cd5,0x8cf5,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x84b3,0x8cb3,0x8493,0x8493,0x8cb3,0x8cb3,0x8493,0x8493,0x8493,0x8492,0x8493,0x8cb3,0x84b3,0x8493,0x8493,0x84b3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cd3,0x9514,0x634d,0x3165,0x31a6,0x2104,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c2,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x39e7,0x2145,0xadb6,0xc659,0xa576,0x8cd4,0x6bd0,0x63b0,0x638f,0x5b4e,0x5b2e,0x5b2e,0x5b4e,0x5b2d,0x5b0d,0x530d,0x530d,0x5b2d,0x530c,0x530d,0x532d,0x532d,0x532d,0x532d,0x532e,0x534e,0x532e,0x534e,0x534e,0x532e,0x530e,0x532e,0x532e,0x532e,0x530e,0x530d,0x530e,0x5b4e,0x532d,0x52ee,0x530e,0x532e,0x530e,0x5b4e,0x532e,0x5b2e,0x532e,0x532e,0x530e,0x530e,0x532e,0x5b4f,0x532e,0x532e,0x532e,0x530e,0x5b4f,0x5b2e,0x532e,0x532e,0x530e,0x532e,0x5b4f,0x532e,0x534f,0x534f,0x5b4f,0x5b90,0x5b6f,0x5b6f,0x5b6f,0x6390,0x6b90,0x6bb0,0x63af,0x638f,0x6bb0,0x6bd0,0x6bd0,0x6bd0,0x6bd0,0x6bd0,0x638f,0x5b6e,0x5b6e,0x638f,0x6bd0,0x8472,0xbdf8,0xcebb,0xd6bb,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6dc,0xd6dc,0xd6db,0xd6db,0xdefc,0xdefc,0xd6fb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1b,0xdf1b,0xdefb,0xdf1b,0xdf1c,0xdf1c,0xdefb,0xdefb,0xd69a,0xe75d,0xc659,0x7bae,0xef7d,0x632c,0x0000,0x2945,0x1082,0x0862,0x0040,0x0000,0xdeda,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8431,0x0000,0x4a6a,0x3a08,0x18e3,0x4a8a,0x4208,0x0000,0x0000,0x0840,0x2103,0x2965,0x0000,0xd6ba,0x94b2,0xa575,0xf7ff,0xdf5d,0xdf5d,0xdf5d,0xdf5d,0xdf3d,0xdf3d,0xd71c,0xd6fc,0xd6fc,0xcedb,0xcebb,0xcebb,0xc69a,0xc67a,0xc67a,0xc67a,0xc67a,0xc65a,0xbe59,0xbe5a,0xbe5a,0xbe59,0xb619,0xb5f8,0xb618,0xadf8,0xadf8,0xadd8,0xadd7,0xadd8,0xadb7,0xadd7,0xa596,0xadb7,0xadb7,0xa596,0x9d76,0xa596,0xa596,0xa576,0x9d76,0x9d56,0x9d76,0x9d76,0x9d55,0x9d55,0x9d35,0x9d55,0x9d55,0x9d35,0x9d55,0x9d55,0x9535,0x9d35,0x9d55,0x9d56,0x9d55,0x9535,0x9535,0x9515,0x8cf4,0x94f4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x8cd4,0x8cd4,0x8cf4,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8cb3,0x84b3,0x8493,0x84b3,0x84b3,0x84b3,0x8cb3,0x84b3,0x84b3,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cd4,0x8cf4,0x634d,0x3185,0x3186,0x2104,0x2124,0x2124,0x2124,0x1081,0x8410,0xb5b6,0xbdd7,0xbdd7,0xbdd6,0xbdd7,0xbdd7,0xb5b6,0xbdd6,0xbdd6,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0x73ae,0x0000,0x2944,0x2124,0x10a2,0x4a48,0xa514,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xb5b6,0xb5b6,0xb5b6,0xbdd7,0xbdd6,0xbdd7,0xbdd7,0xbdf7,0xa534,0x39e7,0x10a2,0x2944,0x2124,0x0861,0x7bcf,0xb5b6,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xb5d6,0xbdd6,0xbdd6,0xbdd6,0xb5b6,0xbdd6,0xbdd7,0xbdd7,0x8410,0x0000,0x2124,0x2124,0x2124,0x2124,0x2965,0x41e7,0x1925,0xb5d7,0xce9a,0xa575,0x8cd4,0x6bd0,0x638f,0x5b6f,0x5b4e,0x5b4e,0x5b2e,0x5b2e,0x5b2e,0x5b2e,0x5b2e,0x52ed,0x530d,0x5b2e,0x5b2e,0x530d,0x530d,0x4b0d,0x530d,0x4aed,0x530d,0x530d,0x4aed,0x4aed,0x530e,0x530e,0x530e,0x530e,0x530d,0x4acc,0x52ed,0x532e,0x4aac,0x52ed,0x532e,0x532e,0x4aed,0x52ed,0x530d,0x530d,0x5b2e,0x4acd,0x4aac,0x5b2e,0x4aac,0x4acd,0x530e,0x52ed,0x52ed,0x52ed,0x52ed,0x4acd,0x52ed,0x530d,0x532e,0x5b2e,0x530d,0x4aed,0x52ed,0x52ed,0x530d,0x532d,0x532e,0x530d,0x5b6e,0x638f,0x5b2e,0x52ed,0x5b2e,0x5b2e,0x636f,0x638f,0x636f,0x636f,0x638f,0x5b4e,0x5b4e,0x5b6e,0x5b6f,0x636f,0x6390,0x6bb0,0x7c11,0xad97,0xce9a,0xd6da,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdf1c,0xd71c,0xd71b,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdefc,0xd6fc,0xd6fb,0xceba,0xe75d,0xbe19,0x8c50,0xe77e,0x52cc,0x0000,0x2945,0x0882,0x1082,0x0000,0x2924,0xdedb,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x634d,0x1905,0x4249,0x73cf,0x52cb,0x4249,0x4208,0x0000,0x0000,0x0841,0x18c3,0x2945,0x0000,0xd69a,0x94d3,0x9cf3,0xf7df,0xd73d,0xdf5d,0xdf5d,0xdf5d,0xdf5d,0xdf3c,0xdf3c,0xd71c,0xd71c,0xcefb,0xcebb,0xc69a,0xc67a,0xbe79,0xbe59,0xc67a,0xc67a,0xbe5a,0xbe59,0xbe59,0xbe39,0xbe39,0xb618,0xb5f8,0xadf8,0xadd7,0xadd8,0xadd7,0xb5f8,0xb5f8,0xadd8,0xa597,0xa5b7,0xb5f8,0xb618,0xadd7,0xa596,0xa596,0xa576,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d55,0x9d35,0x9d55,0x9d55,0x9d55,0x9d76,0x9d76,0x9535,0x9535,0x9d56,0x9d56,0x9d56,0x9d56,0x9515,0x9515,0x9515,0x9515,0x94f4,0x94f5,0x94f4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x8cd4,0x8cb4,0x8cd4,0x8cd4,0x8cd4,0x84b3,0x8493,0x8493,0x8493,0x8cb3,0x84b3,0x84b3,0x84b3,0x8cb3,0x8cd4,0x8493,0x84b3,0x84b3,0x84b3,0x8493,0x8c93,0x8cb3,0x8cb4,0x8cb3,0x8cd4,0x632d,0x3185,0x3186,0x2124,0x2124,0x2965,0x0000,0x6b6d,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xe71c,0x52aa,0x0000,0x2965,0x0000,0xad55,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x3186,0x0000,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x632c,0x0000,0x2965,0x2124,0x2124,0x3186,0x4228,0x2166,0xb5b7,0xce9a,0xa575,0x8cd4,0x6bd0,0x636f,0x5b6f,0x5b4e,0x5b2e,0x5b2e,0x532e,0x5b6f,0x638f,0x638f,0x5aed,0x5b4e,0x6bf1,0x6bb0,0x52ed,0x4aed,0x532e,0x426b,0x3a2a,0x3a2a,0x3a09,0x3209,0x29a7,0x31c8,0x4aab,0x3209,0x4aab,0x31e8,0x3a4a,0x3a4a,0x31e9,0x428b,0x3a4a,0x29a8,0x3a4a,0x52cc,0x426a,0x3a29,0x530d,0x29c8,0x3a4a,0x428b,0x31e8,0x3a4a,0x3a4a,0x29a7,0x52ec,0x428b,0x3a09,0x428b,0x3209,0x52ed,0x3a2a,0x29a7,0x52cc,0x426b,0x31e8,0x31c8,0x3a4a,0x3209,0x31e8,0x29c8,0x428b,0x3a29,0x426a,0x426a,0x52ec,0x29c8,0x4acc,0x5b6f,0x5b4e,0x5b4e,0x5b4e,0x636f,0x5b6f,0x5b4e,0x5b4e,0x5b4e,0x5b4e,0x636f,0x63b0,0x6bf0,0x9d35,0xce9a,0xd6da,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fc,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdf1c,0xdefc,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xd6fc,0xd71c,0xdf1c,0xdf1c,0xdf1c,0xdefc,0xd6fc,0xd6fb,0xceba,0xe75e,0xb5f8,0xa4f3,0xdf3d,0x426a,0x0000,0x2145,0x1083,0x1082,0x0000,0x39e7,0xdefb,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x4249,0x0000,0x94d3,0xd6bb,0x9cf4,0x4a8a,0x4208,0x0000,0x0020,0x0820,0x10a2,0x2124,0x0000,0xbdf8,0x94d3,0x94b2,0xf7bf,0xcefc,0xdf3c,0xdf5d,0xdf3d,0xd71c,0xd71c,0xd73c,0xd71c,0xcefb,0xcebb,0xc69a,0xc69a,0xc69a,0xbe79,0xbe59,0xbe59,0xc67a,0xbe5a,0xbe59,0xbe39,0xbe39,0xb639,0xb619,0xb5f8,0xb5f8,0xb618,0xb5f8,0xb5f8,0xbe39,0xb619,0xb5f8,0xa5b7,0xadd7,0xb618,0xadf8,0xa5b7,0xa596,0x9d76,0x9d56,0x9d76,0x9d56,0x9d56,0x9d35,0x9535,0x9d56,0x9d35,0x9d35,0x9d56,0x9d76,0x9d35,0x9535,0x9d35,0x9d55,0x9d56,0x9d56,0x9d76,0x9d35,0x9535,0x9515,0x9535,0x9515,0x94f4,0x94f4,0x8cf4,0x94f4,0x8cf4,0x8cd4,0x84b3,0x84b3,0x8cb4,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x8cd3,0x8cd4,0x8cd3,0x8cd4,0x8cd4,0x8cd3,0x84b3,0x8493,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb4,0x94f4,0x634d,0x3165,0x3186,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3186,0x2124,0x2124,0x2124,0x41e7,0x2966,0xb5d7,0xd6fb,0xadb6,0x84b3,0x638f,0x634e,0x5b2e,0x532d,0x530d,0x530d,0x4b0d,0x532e,0x5b0e,0x5aed,0x5aad,0x5aed,0x5b4e,0x5b4e,0x52ed,0x4aed,0x532d,0x3a49,0x3a08,0x422a,0x1925,0x31c7,0x31c8,0x31a7,0x31a7,0x31e8,0x2166,0x31e8,0x29a7,0x2166,0x2166,0x52ec,0x31e8,0x29a7,0x2166,0x3a29,0x426a,0x2146,0x2987,0x10e4,0x31e8,0x52cb,0x08a3,0x3a4a,0x424a,0x08c4,0x426a,0x31e8,0x31c8,0x31e8,0x31c8,0x5b0d,0x29a7,0x31c8,0x2987,0x31c8,0x424a,0x2987,0x3a09,0x2987,0x2166,0x29a7,0x3a09,0x3a09,0x0001,0x424a,0x5b2e,0x2167,0x52cc,0x636f,0x5b2e,0x5b4e,0x5b4e,0x5b4e,0x5b4e,0x5b2e,0x5b2e,0x5b4e,0x5b4e,0x636f,0x6bd0,0x6bd0,0x8cb3,0xc659,0xd6db,0xd6db,0xd6fb,0xd6fb,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6fb,0xd6fc,0xd6fc,0xd6fc,0xd6fb,0xd6fb,0xd6fb,0xd6fc,0xd6fc,0xdf1b,0xdf1c,0xd6fb,0xdf1b,0xd6fb,0xd6dc,0xd6fb,0xd6da,0xe75d,0xadb7,0xb595,0xdf1d,0x29c8,0x0000,0x2124,0x1082,0x1082,0x0000,0x4a49,0xe71c,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdf7,0x0000,0x4a8a,0x4249,0x0000,0x0000,0x31a7,0x4229,0x0000,0x0000,0x0020,0x1082,0x2104,0x0000,0xad76,0x9d34,0x8c71,0xf7bf,0xd71c,0xdf3c,0xd73c,0xd73d,0xd71c,0xd71c,0xd6fc,0xcefc,0xcedb,0xc67a,0xbe7a,0xc69a,0xbe79,0xbe79,0xbe59,0xbe39,0xbe5a,0xbe39,0xbe19,0xb5f9,0xadd8,0xadb7,0xa5b7,0xa5b7,0xa5b7,0xadd8,0xadd8,0xadb7,0xa597,0xad97,0xad97,0xa597,0xadd7,0xadf8,0xb5f8,0xa597,0x9d75,0x9d76,0x9d56,0x9d76,0x9d76,0x9d76,0x9d55,0x9d35,0x9d35,0x9d55,0x9d55,0x9d55,0x9d56,0x9d55,0x9d35,0x9d55,0x9d55,0x9d55,0x9d56,0x9d56,0x9d55,0x9515,0x9535,0x9515,0x8d15,0x9515,0x8cd4,0x8cf4,0x8cf4,0x8cb3,0x84b3,0x8493,0x84b3,0x8cd4,0x8cd4,0x8cd4,0x8cf4,0x8cd4,0x84b3,0x84b3,0x8cb3,0x84b3,0x84b3,0x84b3,0x84b3,0x84b3,0x8cd3,0x84b3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x84b3,0x8cd3,0x8cd4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x8cf4,0x634d,0x3185,0x3186,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2104,0x39e7,0x2986,0xb5d7,0xdefb,0xb5d7,0x8493,0x5b6f,0x5b2d,0x532d,0x530d,0x530d,0x4acd,0x4b0d,0x4aec,0x52cc,0x52cc,0x52ac,0x52cd,0x4acc,0x4aac,0x4acc,0x4aec,0x4acc,0x428b,0x3a4a,0x4a8b,0x426a,0x426a,0x4aab,0x52cc,0x424a,0x4acc,0x4aab,0x426a,0x428a,0x428b,0x428b,0x3a09,0x424a,0x4acc,0x4aab,0x424a,0x4a8b,0x428b,0x426a,0x428b,0x3a49,0x3a29,0x428b,0x3a2a,0x424a,0x428b,0x3a29,0x428b,0x426a,0x3a4a,0x428a,0x4acc,0x428b,0x4aab,0x4aab,0x428b,0x4acc,0x4a8b,0x426b,0x4aab,0x4aab,0x4aab,0x4acb,0x530d,0x4acb,0x428b,0x428b,0x4aac,0x4acd,0x5b2e,0x5b2e,0x530d,0x532e,0x5b2e,0x5b2e,0x530d,0x5b2e,0x532e,0x5b4e,0x5b4f,0x638f,0x6bb0,0x7431,0xadb7,0xceba,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6db,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdefb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xdefb,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6fc,0xd6db,0xd6bb,0xe73d,0xa556,0xc638,0xdf3d,0x1126,0x0800,0x2124,0x0882,0x10a2,0x0000,0x5aca,0xe73c,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x0022,0x2125,0x4229,0x5b0c,0x2986,0x31c7,0x4a69,0x0020,0x0000,0x0020,0x1061,0x2124,0x0000,0x9cf3,0xad96,0x8c91,0xf7be,0xd6fc,0xd73c,0xd71c,0xd71c,0xd6fc,0xd71b,0xd71c,0xcedb,0xc6ba,0xc69a,0xc69a,0xc69a,0xc679,0xc67a,0xbe59,0xbe39,0xc65a,0xbe79,0xbe3a,0xb618,0xb619,0xb618,0xb618,0xb5f8,0xb5f8,0xb5f8,0xadd8,0xb5f8,0xadd8,0xb5d8,0xadd8,0xadd7,0xb618,0xb618,0xb639,0xadd8,0xa596,0xa597,0xa597,0xa597,0xa576,0xa576,0xa596,0x9d76,0x9d55,0x9d55,0x9d76,0x9d55,0x9d55,0x9d76,0x9d55,0x9d55,0x9d55,0x9d55,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0x9535,0x94f4,0x9515,0x8cf4,0x8cd4,0x8cd4,0x84b3,0x84b3,0x8cd4,0x8cd3,0x8cf4,0x8cf4,0x94f4,0x94f5,0x8cf4,0x8cf4,0x94f4,0x94f4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x8cf4,0x94f4,0x8cf4,0x94f4,0x9515,0x9515,0x9515,0x94f5,0x9d15,0x9515,0x9515,0x9d35,0x636d,0x3165,0x31a6,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdedb,0xb5b6,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xbdd7,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bce,0xef7d,0xffff,0xffdf,0xffff,0xffff,0xdefb,0xad75,0x9cd3,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2124,0x41e7,0x1904,0xc659,0xf7de,0xcebb,0x8d15,0x63d0,0x636f,0x5b4e,0x5b4e,0x5b2e,0x530d,0x532e,0x532e,0x530e,0x532e,0x530e,0x530e,0x532e,0x530d,0x52ed,0x4b0d,0x4acc,0x4acc,0x4acc,0x4aed,0x530e,0x4aed,0x4aed,0x4aed,0x52ed,0x52ed,0x530d,0x52ed,0x530d,0x530e,0x530e,0x52ed,0x530d,0x530d,0x530e,0x532e,0x532e,0x530d,0x530e,0x530e,0x530d,0x530d,0x532e,0x530e,0x530d,0x530d,0x530e,0x530e,0x532e,0x532e,0x532e,0x532e,0x532e,0x530e,0x532e,0x5b4e,0x532e,0x5b2e,0x5b2e,0x5b2e,0x5b4e,0x5b4e,0x5b4e,0x5b2e,0x5b6f,0x636f,0x5b4f,0x5b6f,0x5b4f,0x5b6f,0x5b6f,0x5b4e,0x5b2e,0x5b4f,0x5b6f,0x5b6f,0x638f,0x5b6f,0x5b6f,0x5b8f,0x6bb0,0x6bf1,0x6c31,0xa596,0xe75d,0xefbe,0xef9e,0xef9e,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xef7d,0xef7d,0xef9d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe73c,0xdf3c,0xef9f,0x9d15,0xce58,0xdf1c,0x00e5,0x1820,0x2104,0x0882,0x10a2,0x0000,0x6b4d,0xef5d,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9492,0x0000,0x8451,0xc659,0xa535,0x39e8,0x39c7,0x52aa,0x0020,0x0000,0x0020,0x0861,0x1904,0x0000,0x8410,0xbdf8,0x9492,0xf7ff,0xe7be,0xe79e,0xe79f,0xe7bf,0xefbf,0xefbf,0xdfbe,0xe77e,0xdf5e,0xcf7d,0xd75d,0xd73d,0xd71d,0xd71c,0xcf1b,0xcefc,0xd71b,0xcefc,0xced9,0xc69b,0xc69b,0xbe7b,0xbe9a,0xbe79,0xb639,0xb65a,0xbe3a,0xbe3a,0xbe9b,0xc6bb,0xc65a,0xc61a,0xc69b,0xbebb,0xc65b,0xbdf9,0xae18,0xb638,0xbdd8,0xbdb9,0xbd98,0xb5b8,0xbdd8,0xadf8,0x9df7,0xa5f8,0xb598,0xb5b8,0xadd7,0xadd8,0xad98,0xa598,0xa598,0xa597,0xa597,0xa598,0xa577,0xa578,0x9d97,0x9d96,0x9d55,0x9d35,0x8d35,0x8534,0x8cd4,0x8cd4,0x8cf5,0x8cf5,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cd4,0x8cb4,0x8493,0x8493,0x8493,0x8473,0x8493,0x8493,0x8493,0x8493,0x7c73,0x7c52,0x8473,0x8493,0x8493,0x7c73,0x8473,0x7c73,0x8473,0x8473,0x7c52,0x8493,0x5b0c,0x39a5,0x31a6,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x630c,0xdefb,0xffff,0xffdf,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0xd69a,0x8430,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xdedb,0xe73c,0xdefb,0x4a49,0xdefb,0xffff,0xffdf,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2104,0x39e7,0x31c7,0x94f4,0xbe39,0x94f4,0x636e,0x4acb,0x52cc,0x52cc,0x4a8b,0x426b,0x428b,0x426a,0x426a,0x426a,0x4a8b,0x4a8b,0x426a,0x424a,0x426a,0x424a,0x426a,0x5b2d,0x636e,0x5b4e,0x4aac,0x3a29,0x426a,0x428b,0x424a,0x426a,0x424a,0x3a29,0x3a4a,0x3a2a,0x3a09,0x3a09,0x3a29,0x3a2a,0x424a,0x426a,0x3209,0x3a4a,0x3a29,0x3209,0x3209,0x426a,0x3a4a,0x3a09,0x3a2a,0x3a09,0x3a4a,0x426a,0x29a7,0x426a,0x4aab,0x3a29,0x3a29,0x3a49,0x428a,0x31e8,0x31e8,0x31e8,0x31e8,0x3a09,0x3208,0x31c8,0x3208,0x3208,0x31c8,0x29c7,0x3a09,0x424a,0x31c8,0x31e8,0x3a29,0x3a29,0x3a09,0x3a2a,0x3a29,0x3a09,0x3a29,0x424a,0x3a49,0x4a8b,0x52cb,0x424a,0x426a,0x428a,0x5b0c,0x7bf0,0xa555,0x9d15,0xa554,0xbe38,0xbe38,0xbe39,0xbe39,0xc659,0xc65a,0xc639,0xc639,0xc659,0xc659,0xc659,0xc659,0xc659,0xc659,0xc67a,0xce9a,0xce7a,0xce9a,0xce9a,0xce9a,0xceba,0xce9a,0xce9a,0xd6fb,0xe77e,0x94b4,0xce59,0xd6dc,0x0064,0x1080,0x2104,0x0862,0x18c2,0x0000,0x7bce,0x8cb8,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x2986,0x4a8a,0x31c8,0x0000,0x2104,0x0082,0x2125,0x52ab,0x0881,0x0000,0x0020,0x0861,0x1904,0x0000,0x6b6e,0xd6bb,0x73ef,0xb5f8,0xb5b7,0xad76,0xa5b7,0x9d76,0x9d95,0xa596,0x9d15,0x8535,0x9515,0xa494,0x9494,0x8494,0x8474,0x7c12,0x7b90,0x6b70,0x6bd0,0x6b91,0x6b8e,0x6330,0x5b2e,0x5b2c,0x5b2c,0x532b,0x52eb,0x530d,0x52ec,0x530d,0x4b2c,0x4b0b,0x4acb,0x4a8b,0x428a,0x42ea,0x52ac,0x4a4a,0x3289,0x3aa9,0x3a29,0x3a29,0x424a,0x3249,0x3a29,0x4209,0x3208,0x39c9,0x41a8,0x3208,0x31e8,0x39e8,0x31a8,0x31c8,0x29e7,0x29a7,0x29a6,0x31c6,0x2986,0x2165,0x2966,0x2946,0x2945,0x2145,0x1924,0x1925,0x1904,0x1904,0x2105,0x1904,0x18e4,0x1904,0x18e3,0x18c3,0x18e3,0x10e3,0x10a3,0x10a3,0x10a3,0x1083,0x10a3,0x0882,0x1083,0x10a3,0x10c3,0x10a3,0x0883,0x0882,0x0862,0x0882,0x0882,0x0882,0x0862,0x0062,0x0062,0x0042,0x0062,0x0041,0x0001,0x39a6,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x840f,0xe71b,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0xef5d,0xffff,0xb596,0x5aeb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x7bcf,0xe71c,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x29a7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x18e3,0x18c3,0x0861,0x0000,0x0820,0x0840,0x0020,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2986,0x1946,0x1947,0x2147,0x2967,0x2987,0x2987,0x2967,0x2967,0x2967,0x2987,0x2986,0x2986,0x2987,0x2987,0x31a7,0x31a7,0x31a7,0x31c8,0x31c7,0x31a7,0x31c7,0x31c7,0x39e8,0x4249,0x0000,0xd6ba,0xce7a,0x0000,0x18e1,0x2104,0x0862,0x18c3,0x0000,0x8430,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7a,0x2987,0x1904,0x7bf0,0x94d3,0x52cb,0x1104,0x3186,0x52ab,0x0861,0x0000,0x0020,0x0841,0x2104,0x0000,0x52ab,0xdf3c,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x4804,0x4003,0x3000,0x4800,0x3000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x00e3,0x1924,0x0000,0x0000,0x0000,0x0000,0x19a3,0x09c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8430,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x8410,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2124,0x39c6,0x4a69,0x4a69,0x18a2,0x10c2,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0021,0x0020,0x0020,0x0020,0x0020,0x0021,0x0041,0x0041,0x0021,0x0020,0x0041,0x0041,0x0021,0x0020,0x0041,0x0020,0x0021,0x0841,0x0841,0x0021,0x0841,0x0020,0x0000,0x0841,0x0841,0x0841,0x1082,0x18c2,0x2924,0x2104,0x31a6,0x4a6a,0x31e8,0x31e8,0x3a08,0x39e8,0x31e8,0x31e8,0x31e7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c8,0x31c7,0x31a7,0x31a7,0x2986,0x2986,0x3186,0x2986,0x3186,0x3166,0x2924,0x0000,0xd6ba,0xbdf8,0x0000,0x2123,0x18e3,0x0862,0x18e3,0x0000,0x94b2,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x0000,0x6b6e,0x9d14,0x94b3,0x4a6a,0x0062,0x39c7,0x5acb,0x0861,0x0000,0x0020,0x0841,0x2124,0x0000,0x4a69,0xe71c,0x5acb,0x0000,0x2144,0x0000,0x5a09,0xabf2,0x722b,0x61c8,0x4185,0x40e3,0x7146,0xa1ea,0x89a7,0x7227,0x6287,0x6a67,0x7966,0x6265,0x6328,0x39a4,0x0001,0x6367,0x73c8,0x6ba7,0x6386,0x6387,0x4ae5,0x42c5,0x4349,0x3309,0x2aa7,0x2287,0x2ac8,0x2b09,0x226a,0x1a0a,0x1a68,0x2269,0x1925,0x2b0c,0x2248,0x3289,0x22ca,0x0800,0x2206,0x3b8b,0x2184,0x2ae7,0x3baa,0x7389,0x6ba6,0x5305,0x52c5,0x4a46,0x4a66,0x52a4,0x5b05,0x73a9,0x4a45,0x4163,0x2923,0x2903,0x5926,0x50e5,0x30c3,0x20e3,0x28a3,0x30c4,0x3947,0x18c3,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0862,0x0862,0x0841,0x0861,0x0862,0x0841,0x0862,0x0862,0x0862,0x0841,0x0861,0x0862,0x0041,0x0841,0x0862,0x0882,0x0862,0x0862,0x0861,0x1082,0x0000,0x39c6,0x4208,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8430,0xef5c,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc618,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xe73c,0x7bef,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xce79,0x73ae,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3186,0x2124,0x2124,0x2124,0x39c6,0x4a69,0x4249,0x2103,0x0861,0x1082,0x18c3,0x1082,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0021,0x0841,0x0041,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0021,0x0020,0x0020,0x0000,0x0841,0x2924,0x2104,0x0860,0x4a29,0x5b0c,0x3a08,0x3a29,0x3a08,0x3186,0x4229,0x39c7,0x3a08,0x3a29,0x31c7,0x4229,0x4228,0x4229,0x3a08,0x31e8,0x4208,0x39e8,0x3186,0x4228,0x31a6,0x39c7,0x3a07,0x2965,0x4208,0x39e7,0x0000,0xdedb,0xb5b7,0x0000,0x2123,0x18e3,0x0862,0x18e3,0x0000,0xa513,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8c51,0x2926,0x4a6a,0x0000,0x0000,0x0820,0x18a2,0x2104,0x4a6a,0x18c2,0x0000,0x0020,0x0841,0x18e4,0x0000,0x39c7,0xe71c,0x5aeb,0x0000,0x0903,0x1862,0x8aee,0x7aac,0x2001,0x4986,0x5146,0x2842,0x7146,0xa1a8,0x68c5,0x3123,0x2964,0x30e2,0x7269,0x6a88,0x6b49,0x736a,0x0000,0x7c09,0x52c5,0x4aa5,0x5b06,0x4ac3,0x4ae8,0x534b,0x19a3,0x1905,0x1084,0x2185,0x3a68,0x21c5,0x10e3,0x1102,0x08a0,0x2a2a,0x2a0d,0x1a4a,0x1aaa,0x0000,0x338c,0x1a27,0x1aa8,0x2309,0x0800,0x0162,0x32a7,0x5b49,0x4243,0x4264,0x4264,0x4224,0x5ac6,0x4224,0x4a66,0x5ac7,0x2962,0x2122,0x20c2,0x2041,0x40e4,0x38a3,0x2041,0x2882,0x2882,0x2082,0x20c4,0x3986,0x1082,0x0000,0x0020,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4208,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x7bef,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x9cd3,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0xb5b6,0xffff,0xffdf,0xffff,0xffff,0xffde,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2124,0x39c6,0x4a69,0x426a,0x2104,0x0000,0x0000,0x10a2,0x1081,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0021,0x0021,0x0021,0x0020,0x0021,0x0021,0x1904,0x1904,0x0861,0x39c7,0x5acb,0x3a09,0x39e8,0x31a6,0x9492,0x8c51,0x8c71,0x7bef,0x73ae,0x94b2,0x73af,0x73af,0x94b3,0x8410,0x8410,0x83f0,0x73af,0x8c72,0x6b6e,0x8431,0x7c10,0x8cb2,0x7bf0,0x2105,0x3186,0x2144,0xdefb,0xad76,0x0000,0x2944,0x18c3,0x0842,0x18e3,0x0000,0xad74,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9d59,0x632d,0x18e4,0x29c7,0x73f0,0x94b3,0x6b8e,0x2125,0x18e4,0x528a,0x1903,0x0000,0x0020,0x0861,0x18e4,0x0000,0x2145,0xe71c,0x5b0c,0x0000,0x00c2,0x28e4,0x828d,0x0000,0x79cc,0xec97,0xfbd3,0xfb2f,0xdb4f,0x4144,0x2103,0xaacb,0xc2aa,0x8a68,0x00e2,0x1062,0x5286,0x6327,0x0000,0x6366,0x0000,0x5266,0x73c8,0x5b64,0x5327,0x0003,0x3b06,0x4ca9,0x2c6a,0x3c0c,0x0801,0x19a3,0x2430,0x2454,0x2b6f,0x0000,0x1b0e,0x0126,0x1a68,0x1206,0x00c0,0x2bec,0x334b,0x0000,0x33cb,0x2b49,0x0800,0x2164,0x0000,0x4a88,0x4ae6,0x6b83,0x8c88,0x4a45,0x0001,0x0000,0x72e7,0xabe9,0xa287,0x6925,0x0000,0x0020,0x2862,0x48a3,0x4103,0x3924,0x0800,0x4166,0x1882,0x0000,0x0820,0x0000,0x10a2,0x2125,0x0000,0x2103,0x20e3,0x2103,0x2924,0x1060,0x20e4,0x1061,0x1062,0x2965,0x3186,0x0000,0x1062,0x2945,0x2124,0x0841,0x18c3,0x3185,0x3165,0x1081,0x1082,0x3185,0x2125,0x4207,0x41e7,0x3185,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x5aeb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xef5d,0x8c71,0xbdf7,0xf79e,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bce,0xef7d,0xffff,0xffdf,0xffff,0xf7be,0xd6ba,0xef5d,0xdedb,0x632c,0xdedb,0xffff,0xffdf,0xffff,0xffff,0xffde,0x7bcf,0x0000,0x2985,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x426a,0x2124,0x0861,0x2986,0x1904,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x1082,0x1062,0x1082,0x0882,0x1082,0x0861,0x0881,0x0881,0x0881,0x0861,0x0882,0x0881,0x0882,0x0882,0x0861,0x0861,0x0882,0x0882,0x0861,0x0862,0x0862,0x0862,0x0862,0x0882,0x0861,0x0862,0x0882,0x0862,0x0882,0x0862,0x0862,0x0862,0x0862,0x0882,0x0882,0x0881,0x0861,0x0882,0x0882,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0881,0x1081,0x1081,0x1081,0x1081,0x0881,0x0881,0x1081,0x1082,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x2986,0x10c3,0x2124,0x4a4a,0x4229,0x2125,0x630b,0x8c91,0xa555,0x9492,0x8c72,0xa534,0x8c91,0xb5b7,0xad55,0x0000,0xb596,0xad75,0x9492,0xad75,0x9471,0xa514,0xa514,0xa534,0x9d14,0x8431,0x4a69,0x10a3,0x31c7,0xe71c,0x9d14,0x0000,0x2965,0x10a2,0x0861,0x18e3,0x0000,0xb595,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x632d,0x10c2,0x73f0,0x9d15,0x8472,0x424a,0x0002,0x1904,0x528a,0x2924,0x0000,0x0020,0x0841,0x2124,0x0000,0x18e3,0xdf1b,0x636d,0x0000,0x00e2,0x20c3,0x7a4b,0x1800,0x61ed,0xdbd5,0xeb0f,0xe34d,0xd34e,0x5106,0x59e6,0xec0f,0xfc6e,0xbc0d,0x0060,0x0000,0x3a03,0x6368,0x5aaa,0x7388,0x10a0,0x4246,0x6327,0x52e6,0x5327,0x0000,0x5c6a,0x6e6b,0x460b,0x4d50,0x0004,0x0ac6,0x2556,0x1d1a,0x1cb5,0x0000,0x1aab,0x08e5,0x01a4,0x22e9,0x1862,0x1247,0x0924,0x2163,0x3b49,0x1246,0x1802,0x6348,0x5b46,0x31e3,0x4a67,0x2964,0x0002,0x0082,0x0861,0x0000,0x7ae8,0xb3a9,0x9a66,0x6165,0x0000,0x0000,0x18c2,0x2061,0x0020,0x3082,0x2842,0x48c5,0x2042,0x0000,0x0821,0x0000,0x18c3,0x4a49,0x2125,0x2944,0x4228,0x4228,0x20e3,0x52aa,0x5aec,0x2945,0x4a4a,0x2945,0x4229,0x39e8,0x4229,0x5aec,0x0000,0x0000,0x52cb,0x6b6d,0x39c6,0x5aec,0x39c7,0x630c,0x52ab,0x5acb,0x39c6,0x3186,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad75,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xce59,0x9cd3,0xbdd7,0xad55,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xf7be,0xc618,0xad55,0xad55,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a69,0x4269,0x10a1,0x2965,0x5b0c,0x31a7,0x0000,0x18e4,0x18c3,0x18e4,0x10c3,0x18c3,0x10a3,0x08c3,0x08c3,0x10a3,0x10a3,0x10a3,0x1083,0x10c3,0x18c3,0x18c2,0x10c3,0x10a2,0x10a2,0x10c3,0x10a3,0x10a3,0x1083,0x10a3,0x10a3,0x10a3,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x10a3,0x1083,0x10a3,0x10a3,0x1082,0x1082,0x10a3,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1083,0x1082,0x10a3,0x1082,0x10a2,0x10a2,0x10a2,0x10c3,0x10a3,0x18c3,0x18e4,0x10c3,0x39e7,0x2965,0x18e3,0x39e8,0x4229,0x2105,0x6b4d,0x8410,0xc618,0x8410,0xa514,0xbdf8,0x6b6e,0xd6ba,0xd69a,0x52cb,0xc618,0xad55,0xa535,0xc618,0x5aec,0xc638,0x94b3,0x9cf4,0xb5d7,0x6bae,0x4a69,0x0000,0x4a89,0xe73c,0x9cd3,0x0000,0x2985,0x10a2,0x0861,0x18e3,0x0000,0xbdd6,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x5b0c,0x4249,0x41e7,0x0000,0x0000,0x0000,0x18c2,0x10a2,0x4208,0x2945,0x0000,0x0020,0x0841,0x2124,0x0000,0x10c3,0xe71c,0x73cf,0x0000,0x10e3,0x0000,0x6a4b,0x7aed,0x0000,0x4947,0x4925,0x30a0,0x61a6,0x41a5,0x0080,0x71c7,0x7a07,0x41a5,0x00a1,0x6ac8,0x0000,0x4207,0x62ea,0x52a6,0x2920,0x4246,0x6348,0x52e5,0x5307,0x2186,0x0801,0x2a04,0x2224,0x21c7,0x18a4,0x1000,0x0946,0x0149,0x00c5,0x0843,0x1aed,0x1166,0x1000,0x2227,0x22a8,0x0000,0x0082,0x3aa9,0x29a4,0x3a27,0x10c3,0x3a23,0x4ac6,0x3a04,0x4a67,0x1924,0x5ac6,0x5245,0x3183,0x5b07,0x0000,0x0002,0x0021,0x0000,0x40e4,0x38e4,0x3882,0x48a2,0x0040,0x3904,0x38e4,0x5187,0x28c3,0x0020,0x0861,0x10a2,0x0000,0x39e7,0x5aeb,0x10e4,0x4a6a,0x4249,0x0021,0x52ab,0x52eb,0x2965,0x4a8a,0x2985,0x3a28,0x4228,0x4a69,0x5b0c,0x08a2,0x5b0c,0x4249,0x634d,0x4a8b,0x4a8a,0x5b0c,0x424a,0x634d,0x52a9,0x39c7,0x3186,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a69,0x4a6a,0x10a2,0x2965,0x5b0c,0x31c7,0x0000,0x18c3,0x18c3,0x10a3,0x1082,0x18a3,0x1082,0x10c2,0x08c2,0x10e2,0x10e1,0x00e2,0x00a2,0x0000,0x1083,0x18a3,0x10a3,0x1083,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x1083,0x1082,0x1082,0x10a3,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0882,0x0862,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x1083,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x18c3,0x18e4,0x0882,0x3186,0x4a49,0x10a2,0x39e8,0x4a49,0x31a7,0x5aeb,0x9cd3,0x8c52,0x9d14,0x8c92,0x8411,0xad55,0x7bf0,0x8c52,0xa535,0x8c52,0x94b3,0x8c51,0x9492,0x9d14,0x73cf,0x9cf4,0x94d3,0x8c72,0x8430,0x39a6,0x18a3,0x632c,0xef7d,0x94b2,0x0000,0x3185,0x10a2,0x0861,0x18c3,0x0000,0xbdf7,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x52cb,0x2125,0x0000,0x8452,0xbdf9,0x8431,0x2986,0x18c3,0x4208,0x2965,0x0000,0x0020,0x0021,0x2124,0x0020,0x1082,0xe71c,0x7c10,0x0000,0x2965,0x1103,0x3146,0x832f,0x8aee,0x7a4a,0x724b,0x69c9,0x79c8,0xaa8b,0x8a29,0x6988,0x69e9,0x71e8,0x9a6a,0xb46c,0x8409,0x5ac6,0x4a84,0x73e7,0x8caa,0x6328,0x5b07,0x6347,0x5327,0x5ba9,0x3ae9,0x3288,0x2a46,0x2a87,0x334a,0x22c7,0x1266,0x1a66,0x29e6,0x2a6a,0x1209,0x10c2,0x18a2,0x0103,0x1246,0x2a27,0x2228,0x1a07,0x0000,0x3207,0x3247,0x3a85,0x52a6,0x4a86,0x4226,0x4a46,0x5ae8,0x5a86,0x5284,0x52e5,0x39c1,0x3962,0x2923,0x20c2,0x30a3,0x30a3,0x2880,0x2820,0x0000,0x2041,0x28a2,0x30c4,0x0800,0x0000,0x0000,0x0000,0x0000,0x0860,0x2965,0x0000,0x18e3,0x10c3,0x0840,0x0000,0x0000,0x0000,0x0000,0x18c2,0x18e2,0x0000,0x0000,0x10a3,0x0000,0x31c7,0x0000,0x0001,0x2125,0x0000,0x08a3,0x0000,0x0020,0x31a5,0x4208,0x2965,0x2104,0x2124,0x2965,0x0000,0x8c71,0xf7be,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0840,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xce79,0x0000,0x31a6,0x0000,0x7bef,0xf79e,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xffdf,0x8410,0x0000,0x2965,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x2146,0x0000,0x2124,0x5aeb,0x3a08,0x0000,0x18e4,0x18c3,0x10a3,0x18c3,0x0082,0x2986,0x39c7,0x72cb,0x6228,0x3840,0x5165,0x6aec,0x5aec,0x00c3,0x08c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x10a3,0x10a3,0x1082,0x1082,0x10a3,0x10a3,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x1904,0x18c3,0x2104,0x4a6a,0x2124,0x0000,0x0002,0x0001,0x0000,0x39e8,0x4a4a,0x2105,0x39c7,0x3186,0x2145,0x4209,0x31c8,0x2967,0x3a09,0x4229,0x4a6a,0x39c7,0x3166,0x4a49,0x31a6,0x3186,0x5acb,0x2125,0x18c3,0x0000,0x636d,0xf79e,0x9492,0x0000,0x2965,0x10a2,0x0861,0x10a3,0x0000,0xbdf7,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0x52cb,0x0000,0x63ae,0x9d35,0x73f0,0x39e8,0x0882,0x0861,0x4208,0x39a6,0x0000,0x0020,0x0020,0x2104,0x18c2,0x0000,0xdf1b,0xa575,0x0000,0x0000,0x0000,0x0000,0x0000,0x2000,0x1000,0x0000,0x0000,0x0000,0x1800,0x0000,0x0000,0x0000,0x0000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0041,0x0020,0x1082,0x1882,0x18e3,0x18e3,0x18c3,0x20e3,0x2125,0x2104,0x2105,0x2966,0x2966,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x39e7,0x39c7,0x31a7,0x4208,0x39e7,0x4a49,0x4a49,0x4a69,0x528a,0x5289,0x52ca,0x52aa,0x4a48,0x39e7,0x3185,0x2104,0x2124,0x2965,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71b,0x5289,0x0000,0x2965,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x31a6,0x0000,0x6b4d,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x630c,0x0000,0x2965,0x2124,0x2124,0x2124,0x39c6,0x4229,0x7bef,0x4a69,0x0000,0x52eb,0x4229,0x0000,0x18e4,0x18c3,0x18e4,0x18e4,0x08e3,0x2145,0x3146,0x4165,0x828b,0x71e8,0x7a09,0x6aec,0x630d,0x0041,0x10e3,0x18e4,0x18c4,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10a3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10a3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c4,0x18c4,0x18c4,0x18e4,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x1904,0x2104,0x0883,0x39e7,0x5aeb,0x6b4d,0x73ae,0x73ae,0x73ce,0x6b6d,0x6b6d,0x738e,0x6b6e,0x738e,0x6b6d,0x6b2d,0x632d,0x6b4d,0x632c,0x630c,0x62eb,0x5aeb,0x52cb,0x52aa,0x5acb,0x52cb,0x4a69,0x528a,0x4249,0x2841,0xad75,0xffff,0x8451,0x0000,0x2965,0x1082,0x0861,0x1082,0x0000,0xc618,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5aec,0x31e7,0x4269,0x0000,0x0000,0x0000,0x2944,0x0040,0x39c7,0x4208,0x0000,0x0020,0x0020,0x2104,0x2124,0x0000,0xce9a,0xef9e,0x94d3,0x8c51,0x9471,0x8450,0x7c4f,0x7c10,0x7c71,0x8c71,0x9c92,0x94f3,0x94d3,0x94d3,0x94f3,0x9cd3,0x9cd4,0x8cf3,0x8493,0x8cb2,0x8cb2,0x8cb1,0x8c73,0x8c72,0x8cb2,0x8452,0x8c52,0x8c52,0x8451,0x8491,0x7c71,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x7cb2,0x9452,0x84f2,0x9491,0x8471,0x7491,0x9452,0x8471,0x7c51,0x8c72,0x8cb3,0x8cd2,0x84d3,0x84b3,0x84b2,0x8cb3,0x94f4,0x94d4,0x8cb4,0x8c93,0x8cb2,0x94f3,0x9514,0x9535,0x8d34,0x8cf3,0x8cf3,0x8d13,0x8d14,0x94f4,0x9cd4,0x9d14,0x9515,0x9535,0x9535,0x9d14,0x9d35,0x9d35,0x9d55,0x9d35,0xa555,0x9d56,0xa556,0xa576,0xa577,0xa597,0xad97,0xadb7,0xadb6,0xadd7,0xb5f7,0xb5f8,0xbe38,0xbe38,0xbe59,0xc679,0xceba,0xcedb,0xcedb,0xcefb,0xd6db,0xd6fc,0xd6fc,0xdf3d,0x8c72,0x0000,0x39c7,0x2104,0x2124,0x2124,0x2124,0x1082,0xa514,0xd6ba,0xd69a,0xd699,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd67a,0xd69a,0xd699,0x7bcf,0x0000,0x2965,0x2945,0x0000,0x5aeb,0xc638,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0xd69a,0xd69a,0xd69a,0xce79,0xd6ba,0xb5b6,0x3186,0x18c3,0x2945,0x2124,0x0000,0x9cd3,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0x8430,0x0000,0x2945,0x2944,0x2124,0x2124,0x2124,0x39e7,0x10e4,0xd6db,0x9492,0x0000,0x5aeb,0x4229,0x0000,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x18e4,0x18e4,0x0882,0x3145,0x3104,0x28c3,0x08c3,0x08c2,0x18e3,0x20e4,0x1904,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18c3,0x1904,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2105,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2105,0x2104,0x2105,0x2125,0x2105,0x2125,0x2105,0x18e4,0x2125,0x0000,0x6b8d,0xef7d,0xffff,0xf7de,0xf7de,0xffdf,0xffdf,0xffdf,0xf7df,0xf7df,0xf7bf,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xffdf,0xffdf,0xf7df,0xf7df,0xffdf,0xf7ff,0xf7df,0xf7be,0xe75d,0xef7d,0xffff,0xffff,0x8c71,0x0000,0x2965,0x1082,0x0861,0x0021,0x0000,0xc638,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1c,0x4a49,0x31a7,0x0000,0x73af,0xc639,0x8cb2,0x2965,0x0862,0x31a7,0x4208,0x0000,0x0020,0x0020,0x18c3,0x2945,0x0000,0xadb6,0xffff,0xffff,0xffff,0xf7ff,0xf7ff,0xefff,0xe79e,0xdf5e,0xefbf,0xf7bf,0xefdf,0xef7e,0xe77e,0xdf5d,0xe73d,0xe73d,0xdf5d,0xd71c,0xcedb,0xcebb,0xc6ba,0xc67b,0xc67a,0xc69a,0xc67a,0xc659,0xbe19,0xb5d8,0xae17,0xadf8,0xa5d7,0xa5d6,0xa5d7,0xa5b7,0x9db6,0x9dd7,0xad97,0xa5b6,0xad75,0x9d75,0x9d96,0xad76,0x9d75,0x9555,0xa555,0x9d76,0x9575,0x9575,0x9576,0x9d75,0xa575,0xa576,0xa536,0x9d17,0x9d17,0x9d34,0x9d33,0x9d55,0x9d75,0x9533,0x84f3,0x84f3,0x84f3,0x84f4,0x8cf4,0x94f4,0x9514,0x8cd3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x8cb3,0x8472,0x8493,0x84b3,0x8cb3,0x8cb3,0x8493,0x8492,0x8492,0x8cb3,0x8cd3,0x8cb3,0x8cd3,0x94f3,0x9514,0x9514,0x9514,0x9534,0x9515,0x94f4,0x94f4,0x9514,0x94d4,0x9d14,0x6b6d,0x3165,0x31a6,0x2104,0x2124,0x2104,0x2124,0x2103,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2104,0x2124,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c2,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x39c7,0x4208,0x8451,0x52cb,0x39c7,0x5acb,0x4a6a,0x0000,0x18e4,0x18e3,0x18c3,0x18c3,0x0862,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0020,0x0001,0x0821,0x0000,0x0000,0x0841,0x0001,0x0000,0x0000,0x0842,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0821,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1904,0x2104,0x2105,0x0021,0x3a08,0x9cf4,0xad75,0x9d13,0x9d13,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0x9d14,0xa555,0xad96,0xa575,0xa575,0xad96,0xad96,0xb5b7,0xbdd7,0xb5d7,0xbdd7,0xbdf8,0xb5f7,0xb5f7,0xc618,0xc618,0xbe18,0xc638,0x632c,0x0000,0x1904,0x0861,0x0861,0x0000,0x1080,0xce59,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b75,0x6b2d,0x0000,0x4229,0x94b2,0xa555,0x5b2d,0x0000,0x0000,0x31a7,0x4a49,0x0000,0x0020,0x0020,0x0820,0x18e3,0x0000,0x4a8a,0x8cb2,0x8472,0x8cd3,0x84b2,0x8cb3,0x8cb3,0x7c51,0x6baf,0x6bf0,0x63f0,0x634e,0x52ec,0x52ab,0x4a6a,0x428a,0x428a,0x4a8a,0x426a,0x320a,0x4249,0x424a,0x3a28,0x3208,0x3208,0x3a28,0x3228,0x1186,0x0125,0x1844,0x3146,0x1801,0x0000,0x0000,0x0000,0x0000,0x0800,0x0040,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2123,0x4228,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x3185,0x2965,0x2965,0x3185,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x3185,0x2965,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2945,0x3185,0x3185,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x3185,0x2965,0x2965,0x2965,0x3186,0x3186,0x2944,0x2124,0x2124,0x2124,0x2124,0x2965,0x3185,0x3185,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x3185,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x39c6,0x4a8a,0x0000,0x0000,0x2966,0x52ab,0x528a,0x0021,0x18e3,0x18e3,0x18e4,0x0000,0x0000,0x2125,0x2125,0x3166,0x3186,0x2925,0x2925,0x18a3,0x1082,0x10a3,0x1904,0x2104,0x18c3,0x18c3,0x18e4,0x18e3,0x18c3,0x10a3,0x18c3,0x2125,0x1904,0x0822,0x2124,0x18e4,0x0821,0x2965,0x0000,0x2104,0x2125,0x2145,0x1904,0x10a2,0x2124,0x2125,0x10a3,0x2966,0x2104,0x2966,0x2965,0x2966,0x29a6,0x2966,0x31a6,0x31c7,0x2986,0x2145,0x3a08,0x3a08,0x2946,0x4229,0x3a08,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x39e8,0x3a08,0x3a08,0x4208,0x4228,0x4228,0x4228,0x4229,0x4269,0x4269,0x4269,0x4a69,0x4a8a,0x4aaa,0x4a8a,0x528a,0x52aa,0x4a6a,0x4a69,0x5b0c,0x39e8,0x0000,0x2104,0x2105,0x0041,0x4209,0x18c5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0020,0x0861,0x0000,0x3165,0xd699,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa535,0x0843,0x528a,0x0000,0x0000,0x2104,0x39c7,0x0000,0x31a7,0x4a69,0x0000,0x0020,0x0020,0x0020,0x0000,0x0862,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x3102,0x4a27,0x5aca,0x630b,0x6b6c,0x7bce,0x7bce,0x73ad,0x5aca,0x3185,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0820,0x0861,0x0861,0x0861,0x0061,0x0040,0x0020,0x0861,0x0821,0x0841,0x0001,0x0000,0x1081,0x1081,0x0881,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x39c6,0x4207,0x2965,0x2124,0x2124,0x2124,0x2124,0x2944,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x2124,0x2124,0x2124,0x2124,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x2124,0x2124,0x2124,0x2944,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c2,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x39c6,0x4a6a,0x29a7,0x0000,0x0020,0x526a,0x52ab,0x1083,0x18c3,0x2124,0x0000,0x73af,0xc679,0xc659,0xc639,0xd6db,0xdefc,0xd6bb,0xce9a,0xb5d7,0xb5b7,0xbdf8,0xb5f8,0xb5d7,0xbdf8,0xad96,0xbdf8,0xc619,0xb5d7,0xa575,0xbe18,0xb5f7,0xb5d6,0xb618,0xbe18,0xbe59,0xb5f7,0xbe39,0xbe19,0xbdf8,0xbe18,0xbe18,0xb5b7,0xa555,0xb5d7,0xbe39,0xb5d7,0xbe18,0xbe18,0xb5d7,0xa576,0xb5f8,0xb618,0xadb7,0xadd7,0xb5f7,0xb5f7,0xadd7,0xb5f7,0xb618,0xadd7,0xb618,0xb5d7,0xa596,0xad96,0xa596,0xadb6,0xad96,0xadb6,0xb5d7,0xb5d7,0xadb7,0xadb7,0xadd7,0xb5d7,0xb5d7,0xb5d7,0xb5f8,0xb5f8,0xb5f8,0xb618,0xb618,0xbe18,0xbe19,0xbe18,0xbe39,0xb5f8,0xb5f7,0xdefb,0x73af,0x0000,0x2145,0x18e4,0x18e4,0x5aec,0x39e7,0x0861,0x2104,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x0861,0x0000,0x0020,0x0020,0x1082,0x0000,0x41e7,0xd6ba,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x18e5,0x0821,0x4229,0x9d15,0xa576,0x6b6d,0x18c3,0x31a7,0x3a08,0x0000,0x0020,0x0040,0x0000,0x1082,0x18e3,0x2104,0x2145,0x31a6,0x31a6,0x2103,0x4a69,0x840f,0xa513,0xbdb5,0xce37,0xce78,0xd6b9,0xdefa,0xdf1a,0xe73b,0xe75b,0xe75b,0xe71a,0xd699,0xbdf6,0x9cb1,0x73ce,0x2985,0x0000,0x2965,0x0882,0x1082,0x0882,0x0882,0x0861,0x0862,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0020,0x0021,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x4207,0x2965,0x2104,0x2124,0x2124,0x2944,0x0020,0x39c7,0x632c,0x6b4d,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4d,0x632c,0x2945,0x0840,0x2944,0x2124,0x2104,0x0861,0x52aa,0x6b4d,0x6b4d,0x6b4c,0x6b4d,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b6d,0x52aa,0x0000,0x2124,0x2104,0x2944,0x1081,0x3186,0x632c,0x6b4d,0x6b4c,0x6b4d,0x6b4c,0x632c,0x632c,0x6b4d,0x6b4c,0x6b4c,0x6b4d,0x6b4d,0x6b4d,0x3186,0x0000,0x2945,0x2104,0x2124,0x2124,0x3186,0x4207,0x4a69,0x2166,0x0000,0x0000,0x4a49,0x5acb,0x18c3,0x10c3,0x2125,0x0000,0x8c52,0xdf1d,0x9d14,0xceba,0xb5f8,0x8c92,0xa575,0x8451,0xce7a,0xb5f7,0x7c30,0x8c92,0x9d35,0x8c72,0xbe18,0x8c71,0x73cf,0xb5f7,0xd71b,0x8491,0x9d55,0xb5d7,0xbe59,0x8cb3,0x8cb3,0xc67a,0x7c51,0xadd7,0x94f3,0x8471,0x7410,0xb5d7,0xd71c,0xadb6,0x8c92,0xb5f7,0x8471,0x94f3,0xa575,0xb618,0x8492,0x7c30,0xa596,0xa576,0x7c51,0x9514,0xd73c,0x84b2,0x7410,0xdf5d,0x7410,0x9534,0xd6fc,0xcedb,0xcebb,0xcebb,0xcedb,0xcedb,0xcedb,0xcedb,0xcedb,0xcedb,0xd6db,0xcedb,0xd6fb,0xd6db,0xcefb,0xcedb,0xcefb,0xcefb,0xcefb,0xd6fb,0xd6db,0xd6fb,0xd6fc,0xdf5d,0xa576,0xcebb,0xb5d7,0x0000,0x2966,0x2125,0x0042,0x528a,0x39e7,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x10a2,0x0000,0x4a48,0xdeda,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x0000,0x3186,0x8c72,0xad97,0x632d,0x0000,0x0000,0x2125,0x4208,0x0020,0x0000,0x0020,0x0000,0x18e3,0x2945,0x2925,0x10a3,0x2104,0x4a49,0x8450,0xad95,0xce57,0xd6d9,0xe73b,0xdf1a,0xdefa,0xd6b9,0xc657,0xc678,0xce98,0xd6b9,0xce98,0xc657,0xbe36,0xc657,0xce98,0xc657,0xb5b5,0x7bee,0x1084,0x2124,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x31c6,0x4207,0x2965,0x2104,0x2124,0x2944,0x10a2,0x4228,0xbdd7,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xb596,0x2965,0x18e3,0x2965,0x0000,0x7bef,0xd6ba,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x7bef,0x0000,0x2965,0x18e2,0x39c7,0xb596,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe73c,0xe73c,0xef5d,0xbdf7,0x39e7,0x10a2,0x2945,0x2124,0x2124,0x2965,0x39e7,0x4249,0x2966,0x0000,0x0000,0x4208,0x5aeb,0x2145,0x1083,0x2125,0x0000,0x5aec,0xcedb,0x8cd3,0xdf3d,0xcedb,0x8d14,0x8cf3,0x7cd3,0xb639,0xb639,0x7451,0x9d76,0xbe7a,0x8492,0xc67a,0x8cf4,0x6bd0,0xb618,0xdf3d,0x8473,0xadd7,0xadb7,0x9d35,0xa576,0x8cb3,0x9d76,0x9d55,0x8492,0x9535,0x8472,0x7431,0xa5b7,0xcedb,0xadd7,0x7c52,0x8cf4,0x84b3,0x7c31,0x9d76,0xadf8,0x7c71,0x7c92,0x9d35,0x9d55,0x9514,0x8cd3,0xa596,0x9514,0x7c51,0xb5f8,0x8472,0x8cb3,0xbe59,0xbe39,0xb639,0xbe39,0xb639,0xbe39,0xbe39,0xb639,0xbe39,0xbe39,0xbe39,0xb618,0xb5f7,0xb5f8,0xb5f8,0xb5f7,0xb618,0xb5f8,0xb5f8,0xb5f8,0xb5f8,0xb5f8,0xb5f8,0xc659,0x9d35,0xb5f7,0xd6fb,0x00a3,0x1082,0x2946,0x18e4,0x2986,0x52aa,0x18c2,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0041,0x0000,0x6b4d,0xb5da,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x29a7,0x52ab,0x4249,0x0000,0x0000,0x3a08,0x18e4,0x2125,0x4208,0x0841,0x0000,0x0020,0x0020,0x1082,0x0020,0x1082,0x0000,0x634b,0xa573,0xb5d5,0xbe16,0xbdf5,0xb5f5,0xbe16,0xc657,0xceb9,0xceb9,0xc637,0xc678,0xd6d9,0xc657,0xb5d5,0xadb5,0xad94,0xad94,0xad93,0xb5b4,0xce77,0xce57,0x840f,0x2965,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39a6,0x4207,0x2965,0x2124,0x2124,0x2965,0x0000,0x8410,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x632c,0x0000,0x2965,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x738e,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3186,0x2124,0x2124,0x2965,0x39c7,0x4249,0x2966,0x0000,0x0000,0x39c6,0x5aec,0x3186,0x0862,0x2945,0x0000,0x4208,0xdf3c,0x7c71,0x5b4d,0x7c31,0x7c11,0x73ef,0x8c71,0x5b0c,0x6bcf,0x7c51,0x7c51,0x8472,0x6bcf,0x5b2d,0x7410,0x7c30,0x5b4d,0x530d,0x7c11,0x5b2d,0x4acc,0x530d,0x73d0,0x7c10,0x52ec,0x6baf,0x6bcf,0x6bcf,0x638e,0x636e,0x428b,0x2a08,0x4aec,0x636e,0x5acb,0x5b4d,0x5b4e,0x428a,0x1986,0x530c,0x530c,0x3a29,0x3a29,0x4aab,0x428a,0x0904,0x3a49,0x4aaa,0x0002,0x424a,0x29a7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x3a08,0x1924,0x31e7,0x3a27,0x0000,0x31e7,0x4248,0x2165,0x00c1,0x29c6,0x08c2,0x0000,0x0000,0x6b8e,0xe77d,0x8450,0x0000,0x3186,0x2125,0x2104,0x52aa,0x2145,0x0000,0x0020,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x62eb,0x0000,0x94b2,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0x3a08,0x31c7,0x0000,0x8c72,0xd6fb,0x94d3,0x08a3,0x10a3,0x2145,0x2965,0x10a2,0x0000,0x0020,0x0000,0x39e8,0x0843,0x5b0a,0xb5b3,0xa572,0x9d11,0x9d12,0xa553,0xad73,0xad94,0xb5b4,0xbdf6,0xce78,0xce98,0xce58,0xb5b5,0xa553,0xad53,0xad54,0xad73,0xb5b4,0xb5b4,0xb5d4,0xad73,0xbdf5,0xbe16,0x4a69,0x0002,0x10a2,0x0040,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x1082,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0862,0x1082,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x1904,0x18e3,0x1903,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x0861,0x39c6,0x4208,0x2965,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xf79e,0x6b6d,0x0000,0x2945,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce58,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3186,0x2124,0x2104,0x2965,0x39e7,0x4249,0x2986,0x0840,0x0841,0x2945,0x630c,0x39e8,0x0841,0x2945,0x0000,0x2104,0xdf3c,0xadb6,0x0000,0x0000,0x0000,0x2800,0x5800,0x4000,0x0800,0x3800,0x0000,0x0000,0x0000,0x20a0,0x0000,0x00a0,0x20c0,0x31e0,0x2200,0x10a0,0x2249,0x11e7,0x0000,0x0000,0x18e2,0x0000,0x0840,0x1900,0x2160,0x2960,0x3184,0x39a5,0x2944,0x3122,0x4984,0x3143,0x2944,0x3186,0x39c7,0x3965,0x39a6,0x4208,0x39e7,0x39c7,0x39e7,0x4228,0x4208,0x41e7,0x4a49,0x4208,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5289,0x528a,0x528a,0x528a,0x52cb,0x632c,0x5b0b,0x632c,0x634c,0x52ca,0x634c,0x636d,0x632c,0x632c,0x636d,0x634c,0x5aeb,0x5acb,0x4a8a,0xdf1c,0xbe19,0x0000,0x2924,0x2945,0x1904,0x31a7,0x4228,0x10c2,0x2104,0x2104,0x2124,0x2103,0x2124,0x2103,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x2103,0x2945,0x3185,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x41e7,0x8c50,0x7417,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x5b0c,0x0000,0x5aec,0xa535,0x6b6d,0x0000,0x0000,0x1082,0x10a2,0x2124,0x2945,0x2125,0x0000,0x528a,0x738e,0x39c7,0x94d1,0xa552,0x94b0,0x9d11,0x9d31,0x9d11,0x9d12,0x9d12,0x9d12,0x9cf2,0x9d12,0xc637,0xc637,0xad74,0xad74,0xad74,0xad74,0xb5b4,0xb5b4,0xb594,0xad73,0xb5b4,0xce77,0xa553,0x0000,0x0862,0x10a3,0x1903,0x18e3,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x2104,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x3186,0x39c7,0x39c7,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x39c6,0x39c6,0x31a6,0x31a6,0x31c6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2124,0x2944,0x2944,0x2144,0x2945,0x2944,0x2965,0x2945,0x2944,0x2945,0x2945,0x2965,0x2945,0x39e7,0x4207,0x3185,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xef5d,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xd6ba,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39c6,0x4249,0x2986,0x18e3,0x10a2,0x18c2,0x5aeb,0x4208,0x0842,0x2945,0x1082,0x0000,0xce9a,0xdefc,0x8c72,0x8431,0x8451,0x8451,0x7c2f,0x7c70,0x7c71,0x7c70,0x84b1,0x8c91,0x8c71,0x9491,0x8c92,0x8491,0x94b2,0x9471,0x8c70,0x9cd2,0x8472,0x8c93,0x94f3,0x94f3,0x94d3,0x94f3,0x94f3,0x94f2,0x9512,0x94f2,0x9d13,0xa514,0xa555,0x9d54,0x9cf3,0xad74,0xa575,0xa556,0xa555,0xad75,0xad96,0xad96,0xadb6,0xb5d7,0xb5b7,0xb5b7,0xb5d7,0xbdd7,0xb5d7,0xbdf7,0xbdf7,0xbe18,0xbe18,0xbe18,0xc618,0xc638,0xbe38,0xc638,0xc638,0xc638,0xc639,0xc639,0xbe18,0xb5d7,0xb5d7,0xb5d7,0xbdf8,0xbdf8,0xbe18,0xbdf8,0xbdf8,0xbe18,0xbe18,0xc639,0xc659,0xce9a,0xce7a,0xce7a,0xb5f9,0x4229,0x0800,0x2966,0x2125,0x2965,0x4248,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2944,0x3165,0x0000,0x73ae,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xb5b6,0xbdd7,0xc618,0xc638,0xbdf7,0xb5b6,0xb5b6,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x9d14,0x18c4,0x52cb,0x0000,0x10c3,0x8451,0x634d,0x1062,0x0841,0x0000,0x2104,0x2965,0x0000,0x7baf,0x738e,0x0000,0x9491,0xad94,0x94d0,0x9cf1,0x94f1,0x9cf1,0x9d12,0x9d12,0x9d12,0xad94,0xc657,0xce78,0xce78,0xd6b9,0xce78,0xbe16,0xbdf6,0xbe15,0xb5b4,0xb5d5,0xc657,0xce98,0xad94,0x31a6,0x2124,0x2125,0x0861,0x1081,0x18e3,0x10a2,0x0841,0x0861,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x1082,0x0841,0x0020,0x0020,0x0861,0x0861,0x0841,0x0020,0x0020,0x0861,0x0861,0x0841,0x0020,0x0020,0x0861,0x1082,0x0861,0x0000,0x0020,0x1082,0x1082,0x0861,0x0000,0x0020,0x1082,0x18c3,0x0861,0x0000,0x0020,0x1082,0x18c3,0x0841,0x0000,0x0020,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x0841,0x0000,0x0020,0x2124,0x2124,0x0841,0x0000,0x0861,0x2124,0x2104,0x1082,0x0000,0x0861,0x2125,0x18e3,0x39c6,0x4207,0x3185,0x2124,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x8c71,0xe73c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0xad55,0xa514,0xad75,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffdf,0xb5b6,0x9cd3,0xce79,0xf7be,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39c6,0x4249,0x2966,0x18e3,0x18c3,0x0000,0x5acb,0x4229,0x0882,0x2125,0x2104,0x1904,0x31c7,0x4249,0x634d,0x6b8e,0x6b8e,0x6b8e,0x638e,0x6b8e,0x6b8e,0x636e,0x634d,0x632c,0x634d,0x634d,0x632d,0x634d,0x5b4d,0x530c,0x532c,0x532b,0x530c,0x52eb,0x5acb,0x5acb,0x52cb,0x52ab,0x4aab,0x4aaa,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4269,0x4269,0x4a49,0x4249,0x4209,0x3a09,0x3a28,0x3207,0x3a08,0x39c7,0x39c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x2186,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2966,0x2966,0x2946,0x2946,0x2946,0x2966,0x2966,0x2966,0x2166,0x2165,0x2166,0x2166,0x2946,0x2946,0x2926,0x2125,0x2125,0x2125,0x2144,0x0000,0x0000,0x2945,0x2925,0x2945,0x2145,0x2145,0x39e7,0x2945,0x0000,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x18e3,0x18c2,0x0000,0x8430,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad55,0x10a4,0x0000,0x6b6e,0xbe18,0xad96,0x634d,0x0000,0x0041,0x0020,0x1082,0x0000,0x2965,0x4228,0x2104,0x1082,0x4a48,0xa533,0xb5b4,0xad94,0xa553,0xa552,0xa553,0xad73,0xbdd5,0xce78,0xce98,0xc637,0xc637,0xce78,0xce98,0xce98,0xceb8,0xd6d9,0xd71a,0xceb9,0xb5f6,0x8c91,0x08a2,0x2925,0x39e7,0x2965,0x0020,0x0861,0x1903,0x10a2,0x0020,0x0000,0x0861,0x18c3,0x1082,0x0020,0x0000,0x0861,0x1082,0x0861,0x0000,0x0000,0x0861,0x0861,0x0841,0x0000,0x0000,0x0841,0x0861,0x0841,0x0000,0x0000,0x0841,0x1082,0x0861,0x0000,0x0020,0x0861,0x10a2,0x0861,0x0000,0x0000,0x0861,0x18c3,0x0861,0x0000,0x0020,0x1082,0x18c3,0x0861,0x0000,0x0000,0x10a2,0x18c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10c3,0x18c3,0x18c3,0x18e4,0x0861,0x0000,0x0020,0x2103,0x2103,0x1081,0x0000,0x0040,0x2103,0x2104,0x1082,0x0000,0x0861,0x2104,0x18c3,0x39c6,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9cf3,0x52aa,0xe71c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0xa534,0xe71c,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffdf,0xffff,0xce79,0x5aeb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x2965,0x2124,0x2124,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0000,0x5acb,0x4a69,0x1083,0x2145,0x2125,0x2945,0x08a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0001,0x0002,0x0822,0x0001,0x0021,0x0801,0x0802,0x0842,0x0823,0x0821,0x0841,0x0841,0x0842,0x0842,0x0822,0x0842,0x0862,0x0862,0x1062,0x0882,0x0862,0x0842,0x0862,0x0882,0x0882,0x0882,0x0862,0x0882,0x1083,0x1083,0x1083,0x0862,0x1083,0x10a3,0x1083,0x10a3,0x10a3,0x10a3,0x18c4,0x18c3,0x10a3,0x1083,0x18a3,0x18a3,0x18a3,0x10c4,0x10c3,0x18c4,0x10e3,0x18e3,0x2105,0x2125,0x2965,0x2966,0x2945,0x2946,0x2125,0x31a6,0x39c6,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x2124,0x0000,0x0000,0x9cf3,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5b7,0x0000,0x31c7,0x73cf,0x73ae,0x0000,0x0000,0x2104,0x1062,0x0861,0x18e3,0x0000,0x39e7,0x630c,0x18a3,0x10a2,0x0000,0x3185,0x842f,0xa554,0xbe16,0xce77,0xce98,0xd6d9,0xdf1a,0xdf1a,0xd6d9,0xd6b9,0xd6d9,0xdefa,0xe73b,0xe75b,0xdefa,0xc637,0x9d34,0x7c0f,0x2145,0x0000,0x18e3,0x10a3,0x1081,0x10c2,0x0020,0x0861,0x18c3,0x18c3,0x0841,0x0000,0x1082,0x18c3,0x10a2,0x0020,0x0000,0x0861,0x1082,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x0020,0x0020,0x0841,0x0861,0x0861,0x0020,0x0020,0x0841,0x1081,0x0861,0x0000,0x0020,0x0841,0x10a2,0x0861,0x0020,0x0020,0x0861,0x10a2,0x0861,0x0020,0x0000,0x0861,0x18c3,0x1082,0x0020,0x0000,0x10a2,0x18c3,0x10a2,0x10c2,0x10c2,0x10c2,0x18c3,0x10e2,0x10c2,0x18c3,0x18c3,0x18e3,0x1082,0x0000,0x0020,0x18e3,0x18e3,0x10a2,0x0000,0x0841,0x2103,0x18e3,0x1082,0x0000,0x0861,0x2104,0x18e3,0x39c7,0x4207,0x2965,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0xbdd7,0x7bef,0xe71c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad75,0xd6ba,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0x9cf3,0xb596,0xef7d,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0000,0x52aa,0x4a8a,0x18e4,0x2945,0x2945,0x2945,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2946,0x2946,0x2946,0x2966,0x2945,0x2945,0x2946,0x2945,0x2946,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x3166,0x2966,0x2966,0x3186,0x3186,0x2986,0x2986,0x3186,0x3166,0x2966,0x2966,0x2966,0x2966,0x2965,0x2985,0x39e7,0x10c3,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x0000,0x0000,0xb5b6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd69a,0x39e9,0x526a,0x0000,0x18c4,0x8cb2,0x94d3,0x5b0c,0x10c3,0x2145,0x4a49,0x39c7,0x0000,0x8430,0x738e,0x0000,0x10a2,0x0000,0x0000,0x2965,0x4a68,0x6b6c,0x94b1,0xb5b5,0xbe17,0xbe17,0xbdf6,0xb5b5,0xad95,0xa533,0x9491,0x8410,0x6b6d,0x4a69,0x0002,0x0000,0x3187,0x2966,0x0841,0x0861,0x18e3,0x2965,0x0881,0x0820,0x10a2,0x18c3,0x0841,0x0000,0x0861,0x10a2,0x10a2,0x0020,0x0000,0x0841,0x0861,0x0861,0x0020,0x0000,0x0020,0x0861,0x0841,0x0000,0x0020,0x0020,0x0861,0x0841,0x0000,0x0020,0x0020,0x1081,0x0861,0x0000,0x0000,0x0840,0x1082,0x0861,0x0000,0x0000,0x0841,0x1082,0x0861,0x0020,0x0000,0x0861,0x10a2,0x0861,0x0020,0x0000,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x10c2,0x18c2,0x18e3,0x10a2,0x0000,0x0000,0x18c3,0x18e3,0x1082,0x0000,0x0020,0x18e3,0x18e3,0x1081,0x0000,0x0841,0x18e3,0x18c2,0x39c6,0x4207,0x2985,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xc638,0xc638,0xef5d,0x738e,0xe73c,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0xb596,0x8430,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xf7be,0x8c51,0x9cf3,0xc618,0x8c71,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3186,0x2124,0x2104,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0000,0x4a49,0x528a,0x2125,0x2945,0x2945,0x2946,0x2966,0x2966,0x2945,0x2945,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2125,0x2145,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2925,0x2945,0x2945,0x2145,0x2125,0x2125,0x2945,0x2945,0x2145,0x2945,0x2946,0x2945,0x2145,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2966,0x2966,0x2946,0x2965,0x2966,0x2945,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x3186,0x2966,0x2966,0x2986,0x2966,0x3166,0x3166,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x39c7,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4207,0xce59,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6bb,0x4a6a,0x2125,0x10e3,0xad76,0xce9a,0x7c30,0x10e4,0x0862,0x0000,0x2125,0x52aa,0x0000,0x8c51,0x8c71,0x1903,0x2124,0x10a3,0x0882,0x2105,0x4a4a,0x4a6a,0x2105,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0x4249,0x5aec,0x630c,0x5acb,0x3187,0x0841,0x10c2,0x2945,0x2965,0x10a2,0x0000,0x1082,0x18c3,0x0861,0x0000,0x0841,0x1082,0x10a2,0x0841,0x0020,0x0841,0x0861,0x0861,0x0020,0x0020,0x0020,0x0840,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x1082,0x1081,0x0861,0x0841,0x0861,0x10a2,0x1081,0x0861,0x0861,0x1081,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1082,0x10a2,0x18e3,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x2103,0x18c3,0x1082,0x18a2,0x18e3,0x18e3,0x39c7,0x4208,0x3185,0x2124,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffdf,0xffff,0xe71c,0x632c,0xc618,0xbdf7,0x4a48,0xc638,0xffff,0xffff,0xffdf,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce59,0x632c,0xf7be,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xf7be,0x8410,0xad75,0xffff,0xdedb,0x39c7,0xe73c,0xffff,0xffdf,0xffff,0xf7be,0x7bef,0x0000,0x3186,0x2124,0x2104,0x2965,0x39c7,0x4249,0x2966,0x18c3,0x18c3,0x0820,0x39e7,0x528a,0x2945,0x2945,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2986,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x3186,0x3186,0x3186,0x2986,0x3186,0x3186,0x2986,0x3186,0x2986,0x2966,0x3186,0x2966,0x2986,0x2966,0x31c7,0x3186,0x2104,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0xad55,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x7bf0,0x0043,0x632d,0x632c,0x0000,0x0000,0x2145,0x2125,0x10a3,0x18e3,0x18c2,0x0000,0x7bef,0x8430,0x4248,0x4a49,0x39c7,0x2145,0x4a49,0x8c52,0xad56,0xb597,0xb597,0xa515,0x738f,0x2987,0x0863,0x1083,0x1062,0x1082,0x10a2,0x10a2,0x4249,0x52cb,0x3186,0x0000,0x0000,0x0020,0x0881,0x2145,0x2965,0x1903,0x18e3,0x18c3,0x0861,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18e3,0x18e3,0x18e3,0x18c2,0x0841,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4207,0x2985,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xef7d,0xd69a,0xd69a,0xbdf7,0x52aa,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xd69a,0x630c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xffff,0x9cf3,0xb5b6,0xffff,0xe71b,0x4207,0xe71c,0xffff,0xffdf,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2104,0x2965,0x39c6,0x4249,0x2986,0x18c3,0x18e3,0x18a2,0x2986,0x52ab,0x3186,0x18c3,0x2104,0x1904,0x18c4,0x18e4,0x18e4,0x2104,0x1904,0x18e4,0x2104,0x2104,0x1904,0x18c3,0x2104,0x18e4,0x18c4,0x2125,0x2125,0x2104,0x2104,0x2104,0x2125,0x18e4,0x1904,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18c3,0x2104,0x1904,0x18c3,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e4,0x1904,0x18e3,0x18e4,0x2104,0x20e4,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2966,0x2104,0x6b6d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x2146,0x39e8,0x0000,0x8c92,0xc639,0x8c92,0x2986,0x18e4,0x2125,0x4a69,0x31a6,0x7bef,0x8430,0x39e7,0x4a69,0x4249,0x4229,0x4209,0x4229,0x630d,0x8410,0x9492,0x8c52,0x630c,0x2125,0x10a3,0x10a3,0x1082,0x0862,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0862,0x0041,0x0881,0x18e3,0x10c3,0x2144,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2985,0x4208,0x2945,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x1081,0x1081,0x0860,0x0020,0x0861,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2944,0x2945,0x2945,0x2965,0x3185,0x3185,0x3185,0x3186,0x31a6,0x39c6,0x31a6,0x39c6,0x39c6,0x39c6,0x39c6,0x39c7,0x39e7,0x39e7,0x39c6,0x39e7,0x4207,0x39e7,0x4207,0x39e7,0x4207,0x39e7,0x2965,0x2104,0x2124,0x2965,0x0000,0x8c50,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x6b4d,0xe73c,0xffff,0xffdf,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xdedb,0xad55,0xc618,0x8c51,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffdf,0xffff,0xe71c,0x9492,0xbdd7,0x9cd2,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39e7,0x4229,0x39e8,0x18c2,0x18e3,0x2965,0x2125,0x39e8,0x2125,0x18e4,0x18e4,0x18c3,0x2104,0x18e4,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x18c3,0x18c3,0x18e4,0x18c3,0x10c3,0x18e4,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a3,0x10a3,0x18c3,0x10c3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a3,0x1082,0x10a3,0x1082,0x10a3,0x10a3,0x10a3,0x18c3,0x10a3,0x10a3,0x10a3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x1904,0x2104,0x2104,0x2125,0x2104,0x2124,0x2125,0x0000,0x7bef,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x3187,0x10a3,0x73d0,0x9d15,0x7bf0,0x2105,0x0000,0x0841,0x0020,0x2124,0x0061,0x4a69,0x8451,0x5b0b,0x39e7,0x4228,0x4228,0x4229,0x4209,0x31a8,0x10a4,0x0000,0x0000,0x0040,0x2144,0x2145,0x2124,0x18c3,0x0861,0x0840,0x0020,0x0861,0x18c3,0x18c3,0x1082,0x0862,0x0841,0x0020,0x0000,0x2124,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2144,0x3186,0x4228,0x4a49,0x39c7,0x31a6,0x39c7,0x31c7,0x3186,0x4a49,0x5acb,0x5aeb,0x8410,0xad75,0xb5d6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xbdd6,0xbdd7,0xbdd6,0xbdd7,0xc617,0xce59,0xd699,0xce79,0xce59,0xc618,0xc618,0xd69a,0xdedb,0xdedb,0xdedb,0xdeda,0xdeda,0xdeda,0xdeda,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0x8cb8,0x7417,0x8cb8,0x4ad4,0x9cd2,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xf7be,0xe73c,0xf7be,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b4d,0x0000,0x2965,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdefb,0xd69a,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xce7a,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2124,0x2965,0x39e7,0x39e8,0x52ab,0x2944,0x18e3,0x39e7,0x3186,0x2104,0x18c3,0x2104,0x2104,0x2104,0x2125,0x2104,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2104,0x1904,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x2104,0x2124,0x2104,0x2104,0x2104,0x2125,0x2105,0x2104,0x2945,0x0000,0x73ae,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0x5b0c,0x4229,0x52cb,0x0000,0x0000,0x73cf,0x632c,0x10c4,0x10a3,0x2104,0x2945,0x0000,0x632c,0x6b4d,0x4208,0x4228,0x4228,0x4a49,0x4a6a,0x528a,0x528a,0x4a69,0x4229,0x31c7,0x3186,0x2125,0x1904,0x18c3,0x0841,0x0020,0x0840,0x0861,0x1082,0x0861,0x0841,0x0841,0x0000,0x1082,0x31a6,0x39c7,0x3186,0x3186,0x2965,0x2985,0x2965,0x2965,0x2145,0x1924,0x2104,0x2945,0x31a7,0x52cb,0x73cf,0x73cf,0x9d14,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa534,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0820,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2965,0x39c7,0x31c8,0x73af,0x4208,0x10a2,0x4a69,0x2986,0x2125,0x1904,0x2104,0x2104,0x1904,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2105,0x2125,0x2945,0x0000,0x73cf,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x73cf,0x2966,0x0000,0x73af,0xb5b7,0xbe18,0x8431,0x10c4,0x18c3,0x2986,0x4a49,0x2125,0x0000,0x52ab,0x4208,0x18e4,0x39c7,0x4229,0x4a49,0x4a6a,0x4a6a,0x4a49,0x39e8,0x3187,0x2946,0x2125,0x18e4,0x18c3,0x0841,0x0841,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x18e3,0x31a6,0x39c7,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2986,0x2986,0x2166,0x2166,0x1925,0x10c3,0x10e4,0x1925,0x73cf,0xc638,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x632c,0x0000,0x2965,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x2965,0x2124,0x2104,0x2965,0x41e7,0x29c8,0x8c72,0x528a,0x0020,0x52aa,0x31a6,0x2104,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2105,0x2125,0x2945,0x0000,0x738e,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7c10,0x1904,0x39e8,0x8c72,0x7c10,0x0001,0x0000,0x0000,0x0041,0x0000,0x0841,0x10a3,0x0020,0x4229,0x39c7,0x10a2,0x0000,0x1083,0x2945,0x2966,0x2966,0x3186,0x2965,0x2945,0x1904,0x18c3,0x10a2,0x0861,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x1082,0x18e3,0x39e7,0x4a49,0x39c7,0x2965,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2166,0x2186,0x2186,0x2986,0x2145,0x1904,0x0000,0x0000,0x632c,0x9d14,0xb5d7,0xceba,0xb5da,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2945,0x0000,0x52aa,0xdedb,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xbdd7,0x2124,0x2103,0x2965,0x0000,0x9cd3,0xf7be,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xef5d,0x7bef,0x0000,0x3185,0x0861,0x4228,0xd69a,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xc618,0x31a6,0x18c2,0x2945,0x2124,0x2104,0x3185,0x4207,0x1126,0xbdf7,0x6b6d,0x0000,0x5aeb,0x39c7,0x18c4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x1904,0x18e4,0x1904,0x1904,0x1904,0x2104,0x2104,0x2104,0x2125,0x2945,0x0000,0x73ae,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5b7,0x4229,0x4a8a,0x0000,0x39e8,0x7bf0,0x6b8e,0x31a7,0x0841,0x18c3,0x10a3,0x0882,0x10c3,0x0000,0x0020,0x2124,0x18c3,0x0000,0x0000,0x0000,0x0841,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x39e7,0x39c7,0x39e7,0x2124,0x0000,0x0020,0x10a2,0x2965,0x5acb,0x8410,0x738e,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x39e8,0x426a,0x3269,0x5b6d,0x8472,0xa555,0xc638,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2124,0x2945,0x0000,0x5aca,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x840f,0x31a6,0x0000,0x2945,0x2124,0x18e3,0x2103,0x73ae,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x6b4d,0x0000,0x2944,0x2124,0x2944,0x0000,0x528a,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x8410,0x8430,0x8410,0x39e7,0x0000,0x2945,0x2124,0x2124,0x2103,0x31a6,0x4a28,0x0004,0xdedb,0xa514,0x0000,0x4a69,0x4228,0x10a3,0x2125,0x2104,0x2125,0x2125,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x2125,0x2125,0x2125,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x1904,0x2104,0x2104,0x1904,0x18e4,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x1904,0x2105,0x2105,0x2104,0x2104,0x2125,0x2966,0x0000,0x8430,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6bb,0x4a6a,0x0000,0x52cb,0xc639,0xc639,0x7bef,0x31c7,0x1082,0x18e3,0x2125,0x18e3,0x0862,0x1082,0x0841,0x1082,0x1082,0x0841,0x2104,0x2965,0x3186,0x31c7,0x2945,0x0000,0x1082,0x10a3,0x0020,0x0020,0x0841,0x0000,0x2104,0x4208,0x31a6,0x39c7,0x2965,0x10a2,0x2104,0x2965,0x31a6,0x632c,0x7bcf,0x6b6d,0x4207,0x31a6,0x39e7,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x31c7,0x31e7,0x31c7,0x31e7,0x31c7,0x39e8,0x31c7,0x31c7,0x3a29,0x424a,0x424a,0x42ab,0x5b4e,0x7430,0x9514,0xb5f7,0xdefb,0x5b75,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x2945,0x2124,0x2124,0x2944,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2944,0x2124,0x2124,0x2104,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x2945,0x2104,0x2124,0x2124,0x2104,0x31a6,0x4a48,0x0003,0xdedb,0x4ad4,0x8c71,0x632c,0x39c7,0x10a3,0x2125,0x1904,0x1904,0x2104,0x2104,0x2104,0x2125,0x2125,0x2125,0x2104,0x2104,0x2104,0x2125,0x2125,0x2104,0x2105,0x2104,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2125,0x2104,0x2104,0x2104,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x18e4,0x1904,0x2104,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x1904,0x1904,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x2125,0x2966,0x0000,0x73af,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x5b0c,0x2966,0x52cb,0x2966,0x0000,0x10a2,0x18c3,0x18c3,0x18e3,0x18c3,0x0021,0x0021,0x0841,0x0841,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2965,0x31a6,0x2104,0x0000,0x1082,0x10a2,0x0020,0x0020,0x0841,0x0020,0x0841,0x2965,0x31a6,0x3186,0x3186,0x3186,0x2965,0x4228,0x4208,0x1082,0x0000,0x39e7,0x4a89,0x2144,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31a6,0x39e8,0x3a08,0x31c7,0x39c7,0x3187,0x3166,0x39c8,0x3a09,0x3a49,0x42ab,0x3aaa,0x4b0c,0x4aeb,0x6baf,0x94d3,0xb5d7,0xd6ba,0xce7b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2945,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2944,0x2124,0x2124,0x2124,0x2124,0x2965,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x2965,0x2124,0x2124,0x2124,0x2124,0x2103,0x31a6,0x4a48,0x0004,0xd6bb,0x4ad4,0x4ad4,0xc638,0x0000,0x2125,0x2105,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2125,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2125,0x2125,0x2124,0x2104,0x2125,0x2125,0x2125,0x2104,0x2104,0x2125,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x1904,0x1904,0x2104,0x18e4,0x18e4,0x1904,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x2125,0x2104,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2986,0x0000,0x738e,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x634d,0x31c8,0x10a2,0x0021,0x2125,0x2966,0x2945,0x2124,0x2104,0x1082,0x0020,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a3,0x2145,0x2966,0x2945,0x18c3,0x0020,0x0020,0x1082,0x1082,0x0020,0x0000,0x0841,0x0861,0x0000,0x0000,0x2124,0x3186,0x31a6,0x39c7,0x3186,0x39c7,0x39c7,0x0000,0x18c3,0x528a,0x39e7,0x1904,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x4228,0x2965,0x4208,0x4208,0x39e8,0x4229,0x39e8,0x31a7,0x39c7,0x31a7,0x31c7,0x39c7,0x3186,0x39c7,0x31a6,0x3186,0x3166,0x2105,0x1022,0x0000,0x0000,0x0000,0x6b6d,0xa534,0xbdf7,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2944,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x2124,0x2124,0x2944,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2124,0x2124,0x2124,0x39c7,0x4a48,0x0004,0xd6db,0x4ad4,0x4ad4,0xd6ba,0x0000,0x2945,0x2945,0x2945,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2104,0x2125,0x2125,0x2124,0x2124,0x2105,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18c3,0x18e4,0x18c3,0x18c3,0x18e4,0x18e4,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x2104,0x2104,0x2105,0x2105,0x2125,0x2125,0x3186,0x0000,0x7baf,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0x6b6e,0x0000,0x2966,0x31a7,0x3186,0x2125,0x2124,0x2125,0x2125,0x1082,0x1082,0x1082,0x0841,0x1082,0x18c3,0x18e4,0x2104,0x2145,0x2945,0x1082,0x0000,0x0020,0x0020,0x18c3,0x18c3,0x0841,0x0020,0x0841,0x0841,0x0020,0x0000,0x0000,0x2945,0x39c7,0x39c7,0x39c7,0x3186,0x4208,0x39e7,0x39e7,0x39e7,0x0000,0x2985,0x39e7,0x31c7,0x3a07,0x3a08,0x31c7,0x2125,0x18e4,0x39c7,0x2966,0x2966,0x39c7,0x39c7,0x31a7,0x2986,0x39e7,0x39c7,0x31a7,0x31a7,0x39c7,0x31a6,0x39e8,0x31a7,0x31c7,0x31c7,0x39c7,0x39e7,0x31c7,0x1924,0x0000,0x0000,0x5b0c,0x8451,0xb5d7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2124,0x2124,0x1082,0x7bcf,0xad75,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0x738d,0x0000,0x2124,0x2944,0x18c2,0x4208,0x9cd3,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb5b6,0x9cf3,0x39c7,0x18c2,0x2944,0x2124,0x0861,0x738e,0xad75,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb595,0xb596,0xb596,0xb596,0xb596,0xb596,0x7bcf,0x0000,0x2124,0x2124,0x2124,0x2124,0x31a6,0x4a48,0x0004,0xd6db,0x4ad4,0x4ad4,0xd6ba,0x0000,0x18a3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0862,0x0862,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x1082,0x0882,0x0862,0x0862,0x1082,0x0862,0x0862,0x0862,0x0862,0x0882,0x1082,0x1082,0x1082,0x1082,0x0862,0x0862,0x0882,0x0862,0x0862,0x0862,0x0862,0x0841,0x0862,0x0862,0x0841,0x0841,0x0841,0x0862,0x0861,0x0841,0x0841,0x0862,0x0862,0x0861,0x0862,0x0841,0x0841,0x0841,0x0862,0x0862,0x0841,0x0861,0x0861,0x0861,0x0861,0x0862,0x0862,0x0862,0x0862,0x1082,0x18e3,0x0000,0x6b2d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0x5aec,0x10a3,0x39e7,0x31a6,0x2966,0x2945,0x2125,0x1904,0x18e4,0x10a2,0x0020,0x0020,0x0841,0x10a2,0x10c3,0x2104,0x2945,0x2125,0x18e4,0x0000,0x0020,0x0020,0x0020,0x1082,0x18a3,0x0841,0x0020,0x0020,0x0000,0x0020,0x10a2,0x18c3,0x2965,0x31a6,0x3186,0x2965,0x3186,0x4228,0x4228,0x2945,0x0000,0x2125,0x39c7,0x31c6,0x39c7,0x31c6,0x2124,0x2125,0x2966,0x31c7,0x2945,0x2125,0x2966,0x31a7,0x39e8,0x39c7,0x39e8,0x39c7,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39c7,0x39e8,0x39e8,0x0842,0x0000,0x0021,0x632d,0xa514,0xd69a,0xce7b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x6b4d,0xdefb,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xdefb,0x5289,0x0000,0x2965,0x0000,0xa534,0xf79e,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffdf,0xad55,0x0000,0x3185,0x0000,0x5acb,0xd6ba,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xe73c,0x630c,0x0000,0x2965,0x2124,0x2103,0x31a6,0x4a48,0x0003,0xd6bb,0x4ad4,0x4ad4,0xdefb,0x31e7,0x0000,0x2104,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2124,0x2104,0x2125,0x2145,0x2945,0x2145,0x2945,0x2125,0x2145,0x2945,0x2125,0x2145,0x2125,0x2125,0x2125,0x2145,0x2945,0x2945,0x2945,0x2945,0x2125,0x2125,0x2125,0x2125,0x2945,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2945,0x2125,0x2145,0x2945,0x2145,0x2145,0x2945,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2125,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2944,0x2944,0x2944,0x2985,0x0000,0x7bef,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7a,0x632c,0x10c3,0x31c7,0x3186,0x3186,0x3186,0x2966,0x2945,0x2104,0x18c3,0x18c3,0x10a2,0x0000,0x0841,0x18e3,0x18e4,0x18e4,0x2966,0x2966,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x2124,0x2965,0x2965,0x2965,0x18e3,0x1082,0x2945,0x2965,0x10a2,0x0000,0x2104,0x31a7,0x3186,0x3186,0x2945,0x2125,0x2945,0x31a7,0x2945,0x31a7,0x2966,0x31a7,0x31a7,0x39c7,0x39c7,0x3186,0x39e8,0x3a08,0x3186,0x2966,0x39e8,0x31a7,0x3186,0x31a7,0x3187,0x3186,0x31a7,0x3186,0x3186,0x31a7,0x2966,0x2966,0x31a7,0x39e8,0x3a08,0x31a7,0x10a3,0x1083,0x2945,0x4a8a,0x7bf0,0xbdd7,0xdedb,0xdf1c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x840f,0x0000,0x3186,0x2124,0x2104,0x31a6,0x4a48,0x0003,0xd6bb,0x4ad4,0x4ad4,0xe71c,0x52aa,0x18a3,0x31a7,0x3186,0x2966,0x2966,0x2966,0x2966,0x3186,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2945,0x2966,0x2966,0x2965,0x2965,0x2966,0x2945,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2125,0x2945,0x2945,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2125,0x2145,0x2945,0x2145,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2965,0x2986,0x0000,0x94b3,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd6ba,0x9cf4,0x31c7,0x10a3,0x39c7,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2125,0x2104,0x18e4,0x0861,0x18c3,0x18c3,0x0841,0x0861,0x18c3,0x18c3,0x18e3,0x2966,0x2966,0x2945,0x18e3,0x10a2,0x0861,0x0841,0x0841,0x0020,0x0020,0x0841,0x0841,0x0020,0x0861,0x18e3,0x2104,0x2104,0x10a2,0x1082,0x0861,0x0000,0x10a2,0x2124,0x2965,0x2125,0x1904,0x2125,0x2125,0x2966,0x39e7,0x2986,0x2945,0x3186,0x39c7,0x31c7,0x31a7,0x3186,0x39c7,0x39c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x31a7,0x3186,0x31a7,0x31a7,0x3187,0x2966,0x31a7,0x3186,0x3186,0x3186,0x2986,0x3186,0x39c7,0x39c7,0x31a6,0x3166,0x39e8,0x5b0c,0x1925,0x0000,0x0001,0x634d,0x9d14,0xbdf8,0xd6ba,0x5b76,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2945,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2104,0x3186,0x4a28,0x0002,0xd6bb,0x4ad4,0x4ad4,0xe75d,0x634d,0x0000,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2145,0x2145,0x2125,0x2145,0x2125,0x2145,0x2945,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2124,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2145,0x2946,0x2946,0x2966,0x0000,0xad54,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0xce79,0x8c92,0x4a48,0x20c2,0x4208,0x39e8,0x39c7,0x39c7,0x39c6,0x31a6,0x2986,0x2965,0x2125,0x2104,0x1904,0x18c2,0x0861,0x10c2,0x18e3,0x18e3,0x10a3,0x0841,0x0000,0x1082,0x18e4,0x18e4,0x2945,0x2944,0x1082,0x0020,0x1082,0x0861,0x0020,0x0841,0x0040,0x0040,0x0881,0x10a2,0x10a2,0x0882,0x0861,0x0861,0x1082,0x18c3,0x2104,0x2125,0x10c3,0x3186,0x39e8,0x3186,0x3186,0x2104,0x2145,0x3186,0x39c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x3186,0x31a7,0x31c7,0x2966,0x31a7,0x31c7,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2986,0x2946,0x3186,0x31a7,0x3186,0x2966,0x2144,0x10a2,0x0000,0x0000,0x20e3,0x18c3,0x2945,0x3186,0x2946,0x0000,0x0000,0x3a08,0x7c30,0xa535,0xce9a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xd69a,0xb5b6,0xc618,0xc618,0xce59,0xf7be,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xad55,0xa514,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xef7d,0xb596,0xa534,0xbdd7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0x0000,0x3185,0x2124,0x2104,0x2965,0x4228,0x0001,0xd6bb,0x4ad4,0x4ad4,0x8cb8,0x73cf,0x0000,0x31a7,0x2966,0x2966,0x2945,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2945,0x2125,0x2125,0x2945,0x2125,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2145,0x2145,0x2125,0x2145,0x2125,0x2125,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2945,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2145,0x2945,0x2125,0x2125,0x2125,0x2945,0x2145,0x2145,0x2945,0x2945,0x2945,0x2966,0x2946,0x0000,0xbdd6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0xb596,0x0863,0x0000,0x39a6,0x4a28,0x4208,0x4208,0x39e7,0x39e7,0x39c6,0x3186,0x3186,0x2966,0x2125,0x2124,0x2104,0x18e3,0x18c3,0x0861,0x10a2,0x2104,0x2966,0x31a6,0x2986,0x2945,0x2125,0x2104,0x2104,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x0881,0x0861,0x0881,0x10a2,0x10a2,0x0861,0x0882,0x10c2,0x10a2,0x18c3,0x18e4,0x2104,0x2104,0x18e4,0x18c3,0x31a7,0x4208,0x2945,0x2125,0x2986,0x2966,0x3186,0x3186,0x31a7,0x31a7,0x31a7,0x31a7,0x31a7,0x39c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x3186,0x3186,0x31a7,0x31a7,0x3186,0x31a7,0x3186,0x2966,0x3186,0x2986,0x31a7,0x31a6,0x2966,0x2125,0x2124,0x0000,0x0000,0x31e7,0x632d,0x6bb0,0x634d,0x424a,0x2125,0x10a4,0x2966,0x2966,0x2145,0x0000,0x0000,0x39e8,0x6b6e,0x8c92,0xce79,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2124,0x2124,0x3165,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xbdf7,0xa534,0xdedb,0xa534,0x9492,0xffdf,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffdf,0xffff,0xf79e,0x632c,0xc638,0xdedb,0x632c,0xef7d,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0x9cf3,0xa534,0xf79e,0xa554,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2124,0x2124,0x2965,0x4207,0x0000,0xd6bb,0x4ad4,0x4ad4,0x4ad4,0x8451,0x0000,0x31a7,0x2966,0x2966,0x2965,0x2966,0x2966,0x2945,0x2966,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2145,0x2145,0x2945,0x2945,0x2145,0x2145,0x2945,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2125,0x2945,0x2145,0x2145,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2945,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2105,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2145,0x2125,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2125,0x0000,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0xc618,0x0000,0x31c7,0x31c7,0x2125,0x2104,0x2945,0x31a6,0x39c7,0x39c7,0x39e7,0x39c7,0x3186,0x2966,0x2945,0x2125,0x2104,0x1903,0x18e3,0x10c3,0x10a2,0x0881,0x1082,0x1904,0x2945,0x3186,0x31c7,0x39c7,0x39c6,0x3185,0x3186,0x3186,0x2124,0x18e3,0x18e3,0x10a2,0x0861,0x10a2,0x10a2,0x0882,0x10a2,0x18e3,0x1903,0x2104,0x2125,0x1904,0x10a3,0x18c3,0x2125,0x18c3,0x18e4,0x2125,0x3186,0x3186,0x2966,0x3186,0x2966,0x31a7,0x3186,0x2966,0x31a7,0x2986,0x3186,0x31a7,0x3186,0x31a7,0x31a7,0x3186,0x2966,0x3186,0x31a7,0x2966,0x2986,0x3186,0x2966,0x2966,0x2966,0x3186,0x2966,0x2104,0x18c3,0x0000,0x0000,0x4a6a,0x94f4,0xcebb,0xd6fd,0xc6dc,0xc67b,0xb5f8,0x9d36,0x7bf1,0x4a8b,0x52ab,0x4229,0x31a7,0x39e7,0x2986,0x0000,0x0002,0x3a08,0x4a6a,0x8451,0xce79,0xef5d,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xf7be,0x9cd3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8410,0xe71c,0xf7be,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bce,0xef7d,0xffff,0xffdf,0xffff,0xe73c,0x4a49,0xe73c,0xffff,0xdedb,0x5aeb,0xef7d,0xffff,0xffdf,0xffff,0xffdf,0x7bef,0x0000,0x3185,0x2944,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x94b2,0x0000,0x31a7,0x2966,0x2966,0x2965,0x2965,0x2966,0x2945,0x2966,0x2966,0x2945,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2945,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2945,0x2145,0x2145,0x2125,0x2145,0x2145,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2124,0x0000,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce7b,0x4a6a,0x4249,0x4a8a,0x3a08,0x31a7,0x2966,0x2125,0x2124,0x2124,0x2145,0x2966,0x3186,0x3186,0x2966,0x2945,0x2125,0x2104,0x2124,0x1903,0x18c3,0x10c2,0x10a2,0x0861,0x0021,0x0862,0x0841,0x0041,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x1904,0x18e3,0x1904,0x18e3,0x18c3,0x0862,0x18c3,0x1904,0x10a3,0x2104,0x2945,0x2966,0x2966,0x2966,0x2966,0x3186,0x2986,0x3186,0x3186,0x3186,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x2986,0x3186,0x3186,0x31a7,0x3186,0x2966,0x2966,0x3186,0x2966,0x3186,0x3186,0x2986,0x2966,0x18e4,0x1082,0x1082,0x52cb,0x94d3,0xb5f8,0xb619,0xa597,0xb61a,0xb67b,0xcedd,0xcebc,0xc69b,0xcedc,0xdf1d,0xad97,0x4a8b,0x2966,0x31a6,0x31a6,0x2966,0x39e8,0x4a6a,0x10a4,0x10c4,0x0000,0x3a08,0x9cd3,0xce59,0xdefb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2103,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x94b2,0x9cd3,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x73ae,0xef7d,0xffff,0xffff,0xffff,0xf7be,0x7bcf,0xbdf7,0xffff,0xb5b6,0x31a6,0xe73c,0xffff,0xffdf,0xffff,0xf7be,0x7bcf,0x0000,0x2965,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x9cf3,0x0000,0x39c7,0x2966,0x2986,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2145,0x2145,0x2125,0x2145,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2125,0x2945,0x2125,0x2945,0x2945,0x2966,0x2946,0x2945,0x2965,0x2986,0x18e4,0x2965,0xdeda,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce7a,0x2186,0x4a8a,0x4a6a,0x4249,0x4249,0x3a29,0x39e8,0x31a7,0x2965,0x2124,0x18e4,0x18e4,0x2104,0x2125,0x2145,0x2125,0x2125,0x2124,0x1903,0x1903,0x18c3,0x18c2,0x10a2,0x10a2,0x10c3,0x1082,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0881,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x0881,0x10a2,0x18e4,0x0862,0x18c3,0x2104,0x2104,0x2125,0x2125,0x2945,0x2966,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x3186,0x3186,0x3186,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2966,0x3186,0x2966,0x3186,0x3186,0x31a7,0x3186,0x31a7,0x2946,0x4a49,0x52ab,0x31c7,0x2986,0x2104,0x7c31,0xbe7a,0xadd9,0xc65a,0x9d34,0x8472,0xa557,0x6bd0,0xc67b,0xdf5f,0xcf1d,0xb5d7,0x6b6f,0x10c4,0x2966,0x0000,0x0000,0x0000,0x20e4,0x1882,0x1042,0x2945,0x31a7,0x31a7,0x0043,0x0000,0x31e8,0x8c71,0xad75,0xc659,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0xc638,0xd69a,0x6b6d,0xce79,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bce,0xef7d,0xffff,0xffff,0xffff,0xffff,0xe71c,0x9492,0xbdd7,0xad55,0x738e,0xef7d,0xffff,0xffdf,0xffff,0xf7be,0x7bcf,0x0000,0x3186,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0xa535,0x0000,0x31a7,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2945,0x2966,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2125,0x2945,0x2945,0x2945,0x2945,0x2145,0x2125,0x2145,0x2125,0x2125,0x2125,0x2945,0x2945,0x2945,0x2145,0x2125,0x2945,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2145,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2145,0x2125,0x2145,0x2945,0x2145,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2145,0x3186,0x10a3,0x5289,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb5b7,0x3a08,0x52ab,0x4a6a,0x424a,0x4229,0x4249,0x4229,0x4229,0x4209,0x39e8,0x3186,0x2145,0x2104,0x18c3,0x18e4,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2145,0x10c3,0x2104,0x2104,0x2124,0x2125,0x2125,0x2125,0x2966,0x2945,0x2966,0x3186,0x2966,0x31a7,0x31a7,0x3186,0x2986,0x31a7,0x2986,0x2966,0x3186,0x2986,0x3186,0x3186,0x3186,0x2966,0x3186,0x3186,0x2986,0x2124,0x2124,0x2124,0x31a7,0x39c7,0x31a7,0x4208,0x39c7,0x3a29,0x3a8b,0x52ed,0xa576,0xcedc,0xdf3c,0xbe3a,0xadb8,0xd6fd,0xb5f9,0x5b4e,0x0000,0x0000,0x10c3,0x0000,0x2965,0x94d3,0xbe3a,0xbe39,0xad97,0x8452,0x5b0d,0x31c7,0x2945,0x10c2,0x2125,0x3187,0x0000,0x0000,0x1124,0x6b8e,0x8c92,0xc639,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x39c7,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0840,0xc638,0xffff,0xffff,0xffdf,0xffff,0xad75,0x8430,0xffff,0xffff,0x8430,0x9492,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bce,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xf79e,0xb5b6,0xa534,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bcf,0x0000,0x3186,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0xa555,0x0000,0x39e7,0x2966,0x2966,0x2986,0x3186,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x3186,0x2966,0x2966,0x2965,0x2965,0x2966,0x2966,0x2966,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2965,0x2945,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2946,0x2125,0x2945,0x2925,0x2945,0x2945,0x2925,0x2945,0x2125,0x2125,0x2125,0x2125,0x2945,0x2945,0x2125,0x2125,0x2945,0x2125,0x2125,0x2945,0x2925,0x2125,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2966,0x3166,0x3186,0x3186,0x2986,0x2986,0x3186,0x2986,0x3186,0x3186,0x3186,0x3186,0x39e7,0x0000,0x736d,0xb5fa,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xbdb7,0x3a08,0x52cb,0x4aab,0x4a6a,0x4249,0x4249,0x4229,0x4229,0x4229,0x424a,0x4229,0x3a08,0x39c7,0x3186,0x2966,0x2125,0x2104,0x1904,0x1904,0x2104,0x1904,0x18e4,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x1903,0x2125,0x2104,0x18a3,0x18c3,0x18e4,0x18e4,0x1904,0x2104,0x2124,0x2124,0x1904,0x1904,0x2104,0x2104,0x2125,0x2125,0x2125,0x2125,0x2945,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2986,0x2986,0x31a7,0x3186,0x2966,0x2986,0x2986,0x3186,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x1904,0x18e3,0x18e3,0x0000,0x0000,0x0001,0x2966,0x2125,0x0000,0x0042,0x2944,0x3164,0x2945,0x0003,0x424a,0x6baf,0x7c32,0x8cd3,0x634e,0x0000,0x0000,0x2945,0x0000,0x0000,0x73d0,0xcebc,0xd71d,0xc6bc,0xcefd,0xd71d,0xd6fd,0xc65b,0xb5d8,0x8c93,0x6b8f,0x6b6e,0x4229,0x31a7,0x39e8,0x3187,0x0000,0x0000,0x39e7,0x4aab,0x73af,0xb5b7,0xe73c,0x4ad4,0x4ad4,0xa535,0x0000,0x39e7,0x2104,0x2124,0x2965,0x0000,0x8430,0xf79e,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x8430,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x73ae,0xdefb,0xe71c,0x7bcf,0xd69a,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x31a6,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xf79e,0xf79e,0xe73c,0x8430,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2104,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0xce59,0x0000,0x2945,0x39e7,0x31a6,0x39c7,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x2966,0x2945,0x2965,0x2966,0x2965,0x2966,0x2966,0x2945,0x2966,0x2945,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2925,0x2945,0x2945,0x2125,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x10a3,0x0000,0x10a3,0x0001,0x0000,0x0000,0x0002,0x0822,0x0862,0x10c3,0x1904,0x18c4,0x18c4,0x18c4,0x18c4,0x20e4,0x1061,0x0000,0xb5b6,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb5b7,0x3a09,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4249,0x4229,0x4229,0x4229,0x4229,0x4249,0x424a,0x4229,0x3a09,0x31c8,0x3186,0x2125,0x2105,0x2125,0x2104,0x2104,0x2104,0x1904,0x18c3,0x10c3,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x2125,0x31a6,0x31a7,0x2925,0x2125,0x2145,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x2125,0x2125,0x2145,0x2945,0x2966,0x2145,0x2945,0x2945,0x2965,0x2966,0x2966,0x2986,0x2966,0x2966,0x2966,0x31a7,0x2986,0x2966,0x2966,0x2125,0x18c3,0x18a2,0x0000,0x0000,0x4aab,0x8c93,0x9d35,0xa556,0x8cb4,0x73f0,0x530d,0x31c8,0x0000,0x0000,0x39a7,0x1802,0x0000,0x0880,0x0000,0x0000,0x2964,0x2965,0x0000,0x7bf0,0xce9a,0xe77e,0xa5b8,0xbe7b,0xcefd,0xadb8,0xadd9,0xcebc,0xc69c,0xbe7c,0xd73e,0xdf5e,0xa577,0x424a,0x2925,0x2945,0x2965,0x2124,0x39e7,0x4a28,0x20e5,0x18c4,0x2104,0x1924,0x6b8d,0xbe38,0x8c71,0x1000,0x31a7,0x2104,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xc638,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0xa534,0xad55,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xef5d,0xad75,0xad75,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10c3,0x2966,0x3186,0x2966,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2946,0x2966,0x2966,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2125,0x2125,0x2945,0x2125,0x2945,0x2945,0x2945,0x2925,0x2925,0x2125,0x2945,0x2945,0x2945,0x2125,0x2125,0x2945,0x2945,0x2945,0x2945,0x2945,0x18e4,0x4229,0x4a6a,0x39c7,0x528a,0x5acb,0x52ab,0x4a69,0x4228,0x4228,0x41e7,0x2944,0x31a6,0x31a6,0x39c6,0x39e7,0x39c6,0x4a48,0xa534,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb596,0x3a08,0x5acb,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x424a,0x426a,0x424a,0x424a,0x422a,0x424a,0x426a,0x4a6a,0x4a4a,0x4249,0x4209,0x39c7,0x31a7,0x2986,0x2125,0x2124,0x2104,0x18e4,0x2104,0x2125,0x0001,0x0842,0x0000,0x18c4,0x18a4,0x18e3,0x2966,0x31c7,0x3186,0x31a6,0x2986,0x2945,0x2104,0x18e4,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2125,0x2125,0x2125,0x2125,0x2145,0x2945,0x2966,0x2945,0x2945,0x2945,0x2945,0x2966,0x2966,0x2966,0x2986,0x3186,0x2966,0x3186,0x2966,0x2966,0x2965,0x10a2,0x0841,0x0000,0x0000,0x4209,0x9d15,0xc69b,0xdf5e,0xd71d,0xbe5b,0xbe5a,0xb63a,0xadb8,0x9515,0x8d15,0x84b3,0x3208,0x2986,0x39e7,0x39a7,0x3186,0x5aec,0x5aec,0x39c8,0x2104,0x8c92,0xbe39,0xce9b,0x8cf5,0x8cd4,0x9515,0xa597,0x8cb3,0x63b0,0xcefd,0xdf7f,0xbebc,0x9514,0x2987,0x18c4,0x2125,0x0000,0x0000,0x1081,0x39e7,0x0862,0x1002,0x3166,0x4229,0x4208,0x31a6,0x0000,0x2965,0x4208,0x2965,0x2124,0x2124,0x2965,0x0000,0x8c51,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b4d,0x0000,0x2965,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7de,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x3186,0x0000,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x7bef,0x0000,0x2965,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce59,0xbdf7,0xc617,0xc618,0xc618,0xc618,0xbdf8,0xbdf8,0xbdf8,0xc618,0xbdf7,0xc618,0xce59,0x6b6e,0x0000,0x2945,0x2124,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x0000,0xa534,0xe71c,0xd6bb,0xdefb,0xe71c,0xe71c,0xdefb,0xdefb,0xdefb,0xdeda,0xd6ba,0xd6ba,0xd6ba,0xdedb,0xdedb,0xdeba,0xe71b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xa535,0x4208,0x52eb,0x4aaa,0x52ab,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4a4a,0x4a4a,0x424a,0x4249,0x4249,0x4249,0x4249,0x4249,0x424a,0x4a6a,0x426a,0x4249,0x4229,0x39c7,0x3187,0x2105,0x2945,0x31a7,0x10c3,0x7c31,0x7410,0x6bae,0x6b8e,0x4acb,0x31c8,0x18e4,0x18c3,0x1904,0x2145,0x3186,0x31a7,0x31a7,0x2965,0x1904,0x2104,0x2104,0x2125,0x2105,0x2125,0x2125,0x2125,0x2145,0x2945,0x2145,0x2945,0x2945,0x2966,0x2945,0x2966,0x2966,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x31a7,0x39c7,0x2966,0x18c3,0x0820,0x426a,0x9515,0xc67b,0xbe5a,0xa576,0x7c32,0xa5b8,0xcedc,0xcebc,0xbe5b,0xc69b,0xdf5e,0xc6dc,0x7c52,0x29a7,0x2986,0x2965,0x1001,0x0000,0x2926,0x39a7,0x3187,0x3a29,0x00a3,0x0000,0x4a8b,0x7c32,0x5b2d,0x6b6e,0xadd8,0xc67b,0xcebc,0xcedc,0x9d15,0x3a29,0x0000,0x18c3,0x10a3,0x0000,0x3185,0x9d15,0xc65a,0xbe5a,0xadd8,0x8cb3,0x5b2d,0x31a8,0x3146,0x2924,0x2966,0x39e8,0x4207,0x2985,0x2104,0x2124,0x3185,0x0000,0x8c71,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x6b6d,0x0000,0x2965,0x0840,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce59,0x0000,0x3186,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x8410,0x0000,0x2965,0x2124,0x2104,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa514,0x0000,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x0000,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xa535,0x4a6a,0x5aec,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4269,0x4269,0x4269,0x4269,0x4249,0x4249,0x4229,0x4229,0x424a,0x4a6a,0x424a,0x4a4a,0x4229,0x424a,0x4a8a,0x0000,0x6bcf,0xa5b6,0x9535,0x9534,0x8cf4,0x8492,0x7c10,0x6b8e,0x52cb,0x3208,0x1925,0x0021,0x1062,0x2145,0x2966,0x1904,0x2104,0x2125,0x2125,0x2125,0x2104,0x2125,0x2125,0x2945,0x2945,0x2945,0x2965,0x2945,0x2966,0x2966,0x2966,0x2966,0x2986,0x2966,0x3186,0x31a6,0x2986,0x2124,0x4208,0x632d,0x4a49,0x39c7,0x3185,0x426b,0x9d57,0xadd8,0x8cd4,0xcedc,0xbe19,0x7c32,0xc67b,0x9d36,0xc67a,0xdf3e,0x9d36,0x4a8a,0x0000,0x2125,0x18a3,0x0000,0x0002,0x52cb,0x5b0c,0x428a,0x2166,0x0000,0x10e4,0x39e8,0x31a7,0x18a2,0x4228,0x4a8a,0x4a6a,0x6bb0,0x8472,0x52cb,0x0000,0x0000,0x2966,0x0000,0x0000,0x73d0,0xce9b,0xd6dc,0xcedd,0xd73e,0xd73e,0xcedc,0xc69b,0xb5f9,0x9494,0x73b0,0x6b4e,0x4a49,0x39e7,0x3185,0x2103,0x2124,0x2965,0x0000,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x528a,0x0000,0x2965,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x31a6,0x0000,0x6b6d,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x632c,0x0000,0x2965,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xbdd7,0x0000,0x18e3,0x2104,0x2103,0x2103,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x0000,0x4a49,0xdedb,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce9a,0x4a8a,0x52ab,0x52cb,0x52ab,0x528a,0x4a49,0x4269,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4269,0x4249,0x4249,0x4249,0x4249,0x4269,0x4249,0x4249,0x4249,0x4249,0x4249,0x4229,0x630c,0x3a08,0x2165,0xa596,0xadd8,0x9515,0x9535,0x9515,0x9515,0x94f4,0x8cd3,0x8492,0x7430,0x638e,0x5b4d,0x4aab,0x2145,0x18e4,0x2965,0x2104,0x18e4,0x1904,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2966,0x2945,0x2945,0x2966,0x2966,0x2966,0x2966,0x2986,0x2987,0x2966,0x2125,0x18e3,0x18e3,0x1082,0x1904,0x2145,0x31a7,0x39e8,0x31c7,0x2145,0x1904,0x5b2c,0x9d35,0xd6bb,0xa576,0x6390,0xb5d8,0xbe19,0x52ac,0x0000,0x0000,0x2124,0x0000,0x0000,0x8431,0xbe3a,0xc67b,0xbe7b,0xadf9,0x9515,0x8411,0x62ec,0x31a7,0x0000,0x10a4,0x31a7,0x1925,0x2145,0x08a2,0x0000,0x18c3,0x39c7,0x2105,0x0000,0x634e,0xbe19,0xd73e,0xbe7b,0xa5d8,0x9515,0x8cd3,0xb5f8,0xcefd,0xc69c,0xbe9b,0xd75e,0xd73f,0xa576,0x5269,0x39c7,0x3186,0x2124,0x2124,0x2944,0x2124,0x18c3,0xad55,0xdedb,0xd69a,0xd6ba,0xd6ba,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd6ba,0xd6ba,0x8410,0x0000,0x2965,0x2945,0x0000,0x630c,0xce79,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd69a,0xdedb,0xbdd7,0x39c7,0x18c2,0x2965,0x2124,0x0000,0x9cf3,0xdedb,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0x8c51,0x0000,0x2945,0x2945,0x2944,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce59,0x0000,0x0000,0x10a2,0x1061,0x1081,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x8cb8,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xb5d7,0x39c7,0x3186,0x31a7,0x4229,0x4a49,0x52ab,0x52ab,0x4a8a,0x4249,0x4249,0x4a69,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x4249,0x4a6a,0x4249,0x4249,0x4249,0x4249,0x4a6a,0x0000,0x6bae,0xb639,0xa597,0xa597,0xa597,0x9d76,0x9535,0x9515,0x9515,0x9535,0x8cf4,0x9d35,0x7c31,0x5b2d,0x2125,0x18e4,0x39c7,0x39e8,0x39c7,0x2986,0x2125,0x2104,0x1904,0x2145,0x2945,0x2945,0x2945,0x2966,0x3186,0x2966,0x2945,0x31a7,0x31a6,0x2945,0x2125,0x1904,0x0882,0x0000,0x0000,0x1904,0x528b,0x4a4a,0x10a3,0x0000,0x18e4,0x2986,0x2986,0x2965,0x0000,0x0000,0x3a4a,0x638e,0x52ec,0x0000,0x0000,0x18e4,0x1082,0x0000,0x634e,0xb619,0xdf1d,0xc67a,0xcedd,0xcf1d,0xd71d,0xcedc,0xc65a,0xb5f9,0x9d36,0x9d15,0x7c32,0x31a8,0x3186,0x31a6,0x31c7,0x3186,0x52ab,0x52ab,0x4209,0x2966,0x7bf0,0xb5f8,0xbe59,0x638f,0x94f5,0xa5b7,0x8473,0x8cd4,0x84b4,0xd71d,0xdf3e,0xc69b,0x84b3,0x10c3,0x39a6,0x4208,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2104,0x2124,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x2945,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0x2124,0x2944,0x2124,0x2104,0x2965,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0x5aeb,0x0000,0x2104,0x10a3,0x0841,0x2104,0x528a,0x5acb,0x52aa,0x52ab,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0xb596,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0xce99,0x0083,0x4228,0x4a49,0x31c7,0x2965,0x31a7,0x39e8,0x4a6a,0x5acb,0x52aa,0x4a6a,0x4a6a,0x4a8a,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4a6a,0x4229,0x0000,0x8431,0xc67a,0xa597,0xa597,0xa597,0xa5b7,0xa5b7,0xa577,0x9d76,0x9515,0xa597,0x94d4,0x2145,0x0000,0x10c3,0x1904,0x2104,0x2966,0x39c7,0x39e8,0x39e8,0x39c7,0x2986,0x2945,0x2125,0x2125,0x2966,0x2966,0x2966,0x2966,0x3166,0x2986,0x2145,0x18c3,0x0820,0x0000,0x0000,0x634e,0xa576,0xb619,0xbe19,0xadb8,0x9d36,0x8473,0x530d,0x10c5,0x18e4,0x31a7,0x31a7,0x3166,0x3166,0x1882,0x20e4,0x3a08,0x39e7,0x0821,0x4a49,0xbdf7,0xe77e,0xcefd,0x7c52,0x94d4,0xb5f9,0x9515,0x9d36,0xbe3a,0xbe9c,0xc6dd,0xdf7f,0xbe3a,0x73d0,0x2966,0x2965,0x2124,0x0862,0x0000,0x2965,0x31a7,0x31c7,0x4229,0x1925,0x0000,0x31a7,0x52ab,0x52cc,0x94f4,0xd71d,0xcedc,0xadb8,0xcebb,0x9d35,0x3187,0x0000,0x0820,0x39c6,0x4208,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2124,0x2124,0x2124,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2124,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2965,0x2124,0x2124,0x2124,0x2104,0x2104,0x3186,0x4a48,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xef5d,0xef5d,0xef5d,0xef5d,0xdefc,0xdefc,0xdefc,0xdefc,0xdefc,0xdefc,0xce7b,0xce7b,0xce7b,0xce7b,0xce7b,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0xb5da,0x9d39,0x9d39,0x9d39,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x8cb8,0x7417,0x8cb8,0x9d39,0x9d39,0x9d39,0x9d39,0x9d39,0x9d39,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x9cd3,0x630b,0x4a69,0x1923,0x39c7,0x4229,0x39c7,0x3186,0x3166,0x31a7,0x4a8a,0x52ab,0x4a6a,0x4a6a,0x426a,0x4249,0x4249,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x426a,0x4a8a,0x4a49,0x0000,0x8431,0xc67a,0xa597,0xa597,0xadb7,0xa597,0xa597,0xadb8,0xa597,0xa5b7,0xb5f8,0x5aec,0x0000,0x2125,0x2145,0x18e4,0x1904,0x18c3,0x18a3,0x2104,0x2145,0x31a7,0x4208,0x4209,0x39e8,0x31a7,0x2966,0x2966,0x2145,0x2966,0x2945,0x1082,0x1082,0x0862,0x0001,0x4249,0xa556,0xd6fc,0xd71d,0xd71d,0xcedc,0xcebc,0xc69c,0xbe5a,0xbe3a,0xbe39,0xad97,0x630d,0x2104,0x31a7,0x31a6,0x31a6,0x4229,0x630d,0x4229,0x39c7,0x4229,0x7c10,0x9d35,0xadd8,0xb619,0xb5d9,0xadb8,0xbe9b,0x8493,0x94f5,0xe7bf,0xcefd,0x94f4,0x31e8,0x0000,0x2104,0x18c3,0x0000,0x0000,0x31a7,0x4aab,0x424a,0x2987,0x10c4,0x1925,0x31e7,0x39e8,0x31c7,0x31a6,0x424a,0x636e,0x634e,0x73f0,0x52cb,0x0000,0x0000,0x2104,0x0020,0x39c6,0x4208,0x3185,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2945,0x2944,0x2944,0x2944,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2945,0x2124,0x2945,0x2944,0x2944,0x2944,0x2945,0x2944,0x2944,0x2944,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x4228,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0xce58,0x94d2,0x73cf,0x2986,0x2145,0x4a69,0x4249,0x39c7,0x3186,0x2125,0x31e8,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4249,0x4269,0x426a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a49,0x0000,0x7c30,0xc659,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xa576,0xbe59,0x9d75,0x0000,0x10a2,0x39e7,0x4228,0x39c7,0x31c7,0x2987,0x2965,0x2104,0x18e3,0x18c3,0x1904,0x2125,0x31a7,0x4208,0x3a08,0x39c7,0x39c7,0x31a7,0x2986,0x2125,0x1082,0x39e7,0x8cd4,0xcefd,0xd6fd,0x8493,0x7c73,0xadd8,0xc67b,0xc69c,0xbe7b,0xd6fd,0xdf5e,0xd6fd,0x8493,0x2166,0x3186,0x2966,0x0000,0x0000,0x0000,0x0000,0x0001,0x2987,0x39e8,0x0003,0x0001,0x4249,0x636e,0x8c94,0xc67b,0xbe7b,0xa5b8,0xc67b,0x9d36,0x424a,0x0000,0x0000,0x2944,0x0000,0x0000,0x52ab,0x9d14,0xbe19,0xb5f9,0xa577,0x94d4,0x7c11,0x632d,0x3a29,0x0000,0x0000,0x31e8,0x10a3,0x0000,0x1061,0x0000,0x20e3,0x41e7,0x2124,0x0021,0x0000,0x39c6,0x4208,0x3185,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2124,0x2124,0x0861,0x4a69,0x630c,0x5aeb,0x630b,0x630b,0x630b,0x630b,0x630b,0x630c,0x5b0b,0x630b,0x630c,0x632c,0x4a49,0x0000,0x2944,0x2124,0x2124,0x2945,0x2104,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2944,0x2124,0x2124,0x2144,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x9cb3,0x528a,0x18e4,0x4208,0x4249,0x4208,0x39c7,0x18e3,0x18e4,0x39e8,0x4249,0x4a6a,0x4a8a,0x4a6a,0x4249,0x4249,0x4249,0x528b,0x4a49,0x0000,0x7c10,0xbe7a,0xa5d7,0xa5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xa596,0xb639,0x8c93,0x0000,0x2945,0x4229,0x4229,0x4229,0x424a,0x4249,0x4229,0x3a08,0x31a7,0x2986,0x2145,0x2104,0x2105,0x18c4,0x2104,0x3185,0x39c7,0x39e8,0x41e8,0x4208,0x3186,0x4a49,0x8493,0xb619,0xa556,0xa597,0xc67a,0xadd8,0x8494,0x9d57,0xdf5e,0xd6fd,0x9d36,0x0925,0x0000,0x2125,0x18e3,0x0000,0x2945,0x8451,0x9cd4,0x8c52,0x6b6c,0x31c5,0x0000,0x2124,0x39e8,0x3166,0x18c3,0x1924,0x0001,0x3229,0x52cb,0x31c8,0x0000,0x0000,0x18c4,0x18e4,0x0000,0x29e8,0x84d4,0xc6bc,0xcebc,0xc6bc,0xcedc,0xcedc,0xcedc,0xbe3a,0xb5d8,0x9d16,0x9536,0x8493,0x3a09,0x31a6,0x39e7,0x39e8,0x2985,0x52cb,0x5b0c,0x4249,0x4229,0x3187,0x39e7,0x4207,0x3185,0x2104,0x2124,0x2124,0x2124,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x2124,0x2944,0x0000,0x7bcf,0xce79,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xd6ba,0x7bcf,0x0000,0x2944,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x4207,0x0001,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xbdf7,0x9492,0x5aeb,0x4208,0x52ab,0x4a69,0x4229,0x39c7,0x18c3,0x2125,0x31a7,0x39e8,0x4a6a,0x528a,0x4a6a,0x4a6a,0x4229,0x0000,0x7bf0,0xbe59,0xa5b7,0xa5d7,0xadb7,0xadb7,0xadb7,0xadb7,0xa5b7,0xb639,0x8472,0x0000,0x31a7,0x4a6b,0x3a29,0x3a09,0x3a09,0x4229,0x424a,0x4a8a,0x4a6a,0x4249,0x4249,0x39e8,0x31a7,0x2104,0x10a2,0x10a2,0x0862,0x18e4,0x2965,0x31a7,0x39c7,0x31c6,0x20e4,0x0000,0x29c8,0x94d4,0xbe18,0xc69b,0xbe59,0xa576,0xa555,0x428b,0x0000,0x18c3,0x0842,0x0000,0x0000,0x8452,0xcedb,0xdf5e,0xd6fe,0xcebc,0xbe5a,0xadb7,0x94d4,0x636f,0x2167,0x08c4,0x31a7,0x31c7,0x2945,0x2966,0x2104,0x3186,0x4a49,0x39c7,0x18e4,0x2166,0x94b3,0xcebc,0xd71e,0xadb8,0x8d16,0x8493,0xa5b8,0xa5b8,0xadf9,0xc67b,0xc69c,0xdf5e,0xc67b,0x7c52,0x29a7,0x29a6,0x2945,0x0000,0x0000,0x18c4,0x2946,0x3146,0x4209,0x4a4a,0x4228,0x39e7,0x3185,0x2124,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x2103,0x2104,0x2103,0x18e3,0x18e3,0x18e3,0x2104,0x18e3,0x18c3,0x2104,0x2944,0x2124,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x0000,0x2945,0x2124,0x18e3,0x10a2,0x18e3,0x2103,0x18e3,0x18e3,0x2103,0x18e3,0x0841,0x18e3,0x10a2,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x4207,0x0001,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0x7bcf,0x2945,0x528a,0x528a,0x528a,0x528a,0x4249,0x2945,0x18e4,0x2945,0x2965,0x39e8,0x52aa,0x4a49,0x0000,0x7c30,0xc659,0xa597,0xa5b7,0xa597,0xadb7,0xadb7,0xadb7,0xa5b7,0xbe39,0x8492,0x0000,0x31a6,0x4a8a,0x4a6a,0x4249,0x4229,0x4229,0x3a08,0x3a29,0x4249,0x4a8a,0x52ab,0x4a6a,0x4209,0x31a7,0x2986,0x2104,0x1904,0x18e2,0x0881,0x10c2,0x1903,0x2965,0x39c7,0x39e8,0x39e7,0x0000,0x0000,0x2126,0x634d,0x5aec,0x0000,0x0021,0x2145,0x10c3,0x2986,0x6b8f,0xadd8,0xd71d,0xbe5a,0x9d98,0xc69c,0xd73e,0xcf1e,0xc6bc,0xb65b,0xb63a,0xbe3a,0xadb8,0x636e,0x2925,0x39c7,0x31a7,0x2966,0x39e8,0x630c,0x4a6a,0x39e8,0x3a08,0x738e,0x9cf4,0xadd8,0x8493,0x9d36,0x6b8f,0x9d56,0xadd9,0x63d0,0xcebb,0xdf3d,0x9d35,0x424a,0x0000,0x2145,0x0000,0x0000,0x3a08,0x7bf0,0x8c32,0x736e,0x4a4a,0x2925,0x1082,0x39e7,0x4207,0x3165,0x2124,0x2124,0x2944,0x2124,0x18e3,0x10a2,0x2103,0x2103,0x2103,0x2103,0x2103,0x2103,0x18e3,0x2103,0x2103,0x2103,0x2103,0x2103,0x18e3,0x18c3,0x2104,0x2945,0x2124,0x0840,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xce59,0x0000,0x2965,0x2945,0x18e3,0x10a2,0x2103,0x2104,0x2103,0x2103,0x2103,0x2945,0x39e7,0x2944,0x3186,0x2944,0x18e3,0x2104,0x2103,0x18c3,0x2104,0x2124,0x2944,0x2944,0x2124,0x2124,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce79,0x2125,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a8a,0x52cb,0x4229,0x2966,0x2125,0x2125,0x2966,0x0000,0x73ce,0xceba,0xbe39,0xb5f8,0xadb7,0xa597,0xa597,0xadb7,0xa5b7,0xbe59,0x8492,0x0000,0x3186,0x528a,0x4a49,0x4a49,0x4a6a,0x4a6a,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4a6a,0x4a6a,0x4249,0x39e8,0x31a7,0x2965,0x2124,0x1903,0x18e3,0x18c3,0x10a2,0x20e4,0x2945,0x39c7,0x4228,0x39e7,0x2104,0x2104,0x4208,0x39e8,0x2945,0x0000,0x9cf4,0xdf3d,0xd73e,0xdf5f,0x9d36,0x52cb,0x8cb3,0x636f,0x8452,0xbe5b,0xcefd,0xd73e,0xd6fc,0x8473,0x29a7,0x3165,0x2124,0x10a3,0x0000,0x0000,0x10a4,0x0002,0x2166,0x3a09,0x1905,0x0000,0x29a7,0x52ec,0x8452,0x8cb3,0x8c93,0xa5b8,0xc67a,0xad97,0x52eb,0x0000,0x0000,0x1904,0x0000,0x2966,0x94b3,0xcebb,0xd73d,0xd73d,0xd6fd,0xb639,0x9d56,0x7c31,0x528a,0x39c7,0x3185,0x2124,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x2103,0x2104,0x18e3,0x2124,0x2944,0x18e3,0x0000,0x18c3,0x2945,0x2124,0x18e3,0x2104,0x18e3,0x18c2,0x2104,0x2945,0x2104,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7de,0xd6ba,0xd6ba,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x0000,0x31a6,0x8c51,0x528a,0x738e,0x2965,0x18c3,0x2104,0x18e3,0x18c2,0x2103,0x2124,0x2944,0x2124,0x2124,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x94b2,0x0000,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4a6a,0x528a,0x528a,0x4a48,0x2965,0x2104,0x2985,0x7c10,0xa556,0xadb7,0xb639,0xb639,0xadf8,0xa5b6,0xa596,0xbe39,0x8c93,0x0000,0x3186,0x528a,0x4a49,0x4a69,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4229,0x4228,0x4229,0x4229,0x424a,0x4a6b,0x4a6a,0x4249,0x3a08,0x31c7,0x2986,0x2145,0x2125,0x18e4,0x1082,0x10a2,0x18e4,0x2945,0x3187,0x39e8,0x39e8,0x39e8,0x4208,0x3a08,0x4a6a,0x73d0,0xa577,0xc67b,0xd6fd,0xa577,0x9d35,0xb5b6,0xadb7,0xc6bc,0xd71d,0x9515,0x2987,0x0000,0x18e3,0x2103,0x0000,0x0000,0x5aeb,0x7c10,0x7bf0,0x636e,0x3a08,0x0000,0x18e3,0x39e7,0x31e7,0x2986,0x2124,0x2945,0x4229,0x4a8b,0x4a6a,0x0000,0x0000,0x2123,0x10a1,0x10a2,0x6b8f,0xadb8,0xd71c,0xc69b,0xadb8,0xadf8,0xc69b,0xd71e,0xcedc,0xcedc,0x7c30,0x20a1,0x31a6,0x2104,0x2124,0x2124,0x2124,0x18c3,0x10a2,0x2104,0x2104,0x2124,0x0000,0x0000,0x4a49,0xad75,0x632c,0x0000,0x0000,0x18e3,0x2104,0x18e3,0x18c2,0x2104,0x2944,0x2103,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0xad55,0xad75,0x9cd3,0xf7be,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2945,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x0000,0x73ae,0x8410,0x7bcf,0x94b2,0x0000,0x2104,0x2104,0x2104,0x18c2,0x2103,0x2124,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xa4f4,0x4229,0x31a7,0x4229,0x4a49,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x52aa,0x4228,0x39c7,0x31a6,0x0000,0x1925,0x52ac,0x7c31,0x9d35,0xadd7,0xbe59,0xb618,0xbe5a,0x8cb3,0x0000,0x2986,0x528a,0x4a49,0x4a69,0x4a4a,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4249,0x4229,0x424a,0x424a,0x4a6a,0x4a6a,0x4a6a,0x424a,0x4229,0x39e8,0x2986,0x2986,0x2125,0x18c3,0x10a3,0x10a3,0x10a2,0x2104,0x2966,0x31a6,0x39e8,0x3187,0x1083,0x0000,0x10c4,0x7c53,0x8494,0x9d55,0xd6fb,0xcebb,0xa597,0x426b,0x0000,0x08a2,0x18e3,0x0000,0x0000,0x52ec,0xad97,0xd6fc,0xcedc,0xbe7a,0xbe19,0xad97,0x94d4,0x7bd1,0x3a2b,0x0043,0x31a7,0x39e8,0x1924,0x31a6,0x2946,0x2104,0x4228,0x4228,0x1903,0x2985,0x9d15,0xe73e,0xe75f,0x7411,0x7c73,0xad77,0xa556,0x8473,0x9d16,0xc65a,0xcedd,0x8452,0x1840,0x31c7,0x2124,0x2124,0x2124,0x2944,0x18c3,0x10a2,0x2104,0x2124,0x0000,0x738e,0x6b4d,0x4228,0xce79,0x632c,0x5aeb,0x7bcf,0x18e3,0x18e3,0x2104,0x18c3,0x2104,0x2944,0x2104,0x1082,0xc638,0xffff,0xffff,0xffdf,0xffff,0xd69a,0x8430,0xffdf,0xffff,0x7bef,0xbdf7,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x2965,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2125,0x0000,0x6b6d,0xe71c,0xef5d,0xef5d,0xe73c,0x6b4d,0x0000,0x2945,0x18e4,0x10a2,0x2103,0x2124,0x2124,0x2124,0x2124,0x2124,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xc618,0x7bef,0x528a,0x4208,0x4208,0x4a49,0x4a6a,0x4a49,0x4a49,0x3a08,0x2966,0x31a7,0x31c7,0x3a29,0x3a07,0x2125,0x2966,0x5b0c,0x7c32,0x94f4,0xce9a,0x9d14,0x0000,0x2986,0x4a8a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4249,0x424a,0x4249,0x424a,0x424a,0x4a6a,0x4a6a,0x4249,0x4229,0x39e9,0x2987,0x2925,0x2104,0x18c3,0x18c2,0x18c2,0x1082,0x18c3,0x2966,0x39c7,0x39e7,0x39e7,0x18a0,0x18e2,0x4229,0x1927,0x0003,0x0000,0x20c2,0x2125,0x18c3,0x10c3,0x4229,0x8cb4,0xcedc,0xd73d,0xa597,0xbe5a,0xcefd,0xc67b,0xc69c,0xbe7b,0xbe3a,0xb5fa,0xb619,0x8472,0x2987,0x39c7,0x31a6,0x2986,0x2966,0x5aec,0x5acb,0x4229,0x426a,0x73d0,0x8c72,0xa556,0xbe39,0xa556,0x9d56,0xad98,0xa577,0x7431,0xce9b,0xe77f,0x8453,0x0820,0x39c7,0x2104,0x2124,0x2124,0x2124,0x18c3,0x10a2,0x2103,0x2945,0x0000,0x8410,0xdefb,0xa534,0x9cf3,0x94b2,0xdedb,0xad55,0x0000,0x2104,0x2104,0x18c2,0x2104,0x2944,0x2124,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0x9cd3,0xa534,0xffff,0xffff,0x94b2,0x94b2,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2944,0x18e3,0x1082,0x18e3,0x2104,0x2124,0x0020,0x52aa,0xc618,0xad75,0xb5b6,0xa534,0x4208,0x0861,0x2124,0x2104,0x10a2,0x2124,0x2944,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xa534,0x73af,0x4a6a,0x2966,0x4208,0x4a8a,0x4249,0x3186,0x31a6,0x31a6,0x39e8,0x4a6a,0x4a6a,0x4249,0x31c7,0x2146,0x31c8,0x6b4d,0x6b6e,0x4229,0x31c7,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x424a,0x4229,0x4229,0x424a,0x424a,0x4a6a,0x4a8b,0x4a4a,0x4249,0x3a09,0x31a7,0x2145,0x2104,0x18e4,0x10c3,0x10c3,0x10a2,0x18c3,0x2945,0x39e7,0x39c7,0x3166,0x39e7,0x39e8,0x4208,0x4208,0x3186,0x0000,0x73af,0xce7a,0xdf5e,0xbe5a,0x7c73,0x8cd4,0x7c73,0xbe7b,0xcedd,0xbe5a,0xc69c,0xd71e,0xdf3e,0xa556,0x4a8b,0x2986,0x2104,0x0841,0x0020,0x2104,0x4209,0x39e8,0x39e8,0x4229,0x1925,0x0000,0x1925,0x6b6e,0x73f0,0x9516,0xb63a,0xc69c,0xdf3d,0xc69b,0x7c32,0x4a49,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x18c3,0x10a2,0x2103,0x2104,0x2124,0x0000,0x528a,0xb596,0xf7be,0xdedb,0x73ae,0x0020,0x18c3,0x2104,0x18e3,0x18c2,0x2103,0x2944,0x2104,0x0020,0xc638,0xffff,0xffff,0xffdf,0xffff,0x8c50,0xa534,0xffff,0xffff,0x94b2,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2945,0x2944,0x18e3,0x10a2,0x2103,0x2104,0x2124,0x1081,0x0000,0x738d,0x0000,0x4a69,0x0000,0x0000,0x2124,0x18e3,0x2103,0x18c2,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xc638,0x9cd3,0x6b6d,0x31c6,0x31a6,0x2986,0x39c7,0x31c7,0x31a6,0x4a8a,0x4a6a,0x4a29,0x4a6a,0x4a69,0x4a29,0x31a7,0x39e8,0x52ab,0x4208,0x10c3,0x3186,0x4229,0x4a6a,0x4a6a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x426a,0x424a,0x424a,0x4249,0x4229,0x4249,0x426a,0x4aab,0x52ab,0x4a8b,0x3a29,0x31c8,0x2966,0x2125,0x1904,0x18e4,0x10a3,0x1082,0x18c3,0x2124,0x3186,0x39c7,0x39e7,0x4208,0x4208,0x39e8,0x4249,0x73d0,0xa577,0x94f4,0xbe3a,0xefdf,0xcedc,0x8494,0xc69c,0xdf5e,0xd71d,0xbe1a,0x5b0d,0x0000,0x0000,0x10a2,0x0041,0x1082,0x0861,0x10c3,0x18e3,0x20e4,0x3167,0x31a7,0x3a08,0x424a,0x4229,0x2145,0x2966,0x39e7,0x426a,0x52ab,0x5aec,0x31c8,0x0000,0x39a6,0x4208,0x2965,0x2104,0x2124,0x2944,0x2124,0x18c3,0x10a2,0x2103,0x2124,0x0000,0x5aeb,0xad55,0xb5b6,0xce58,0xc618,0xb5b6,0x7c0f,0x1082,0x2104,0x2104,0x18c2,0x2104,0x2945,0x2104,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0x94b2,0xa534,0xffff,0xffff,0x94b2,0x94b2,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x2965,0x2945,0x18e3,0x10a2,0x2103,0x2104,0x18c3,0x2965,0x9492,0xbdd6,0xad75,0xc638,0x6b4d,0x0000,0x2124,0x2104,0x2104,0x18c2,0x2103,0x2124,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdf1b,0xbdf7,0x94b2,0x31a6,0x0000,0x2144,0x2965,0x4228,0x5b0b,0x52cb,0x4249,0x4a49,0x4a69,0x4a8a,0x4a4a,0x4249,0x528a,0x4229,0x31c7,0x2945,0x18e4,0x3186,0x3a08,0x4a49,0x528a,0x528a,0x4a4a,0x426a,0x4aab,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8b,0x4a6a,0x4a6a,0x424a,0x4a4a,0x424a,0x4a6a,0x4a6a,0x4a4a,0x424a,0x4249,0x4249,0x426a,0x52cb,0x52cb,0x52ab,0x52ab,0x424a,0x3a08,0x31a7,0x2145,0x2104,0x18e3,0x10a3,0x1082,0x10a2,0x18e3,0x2945,0x3186,0x39e8,0x31c7,0x08c3,0x0000,0x4249,0x7410,0x9d35,0xc69a,0xa577,0xa577,0xc67a,0x73f0,0x0000,0x0000,0x18e4,0x10a3,0x0861,0x0020,0x0000,0x2104,0x0000,0x0000,0x2945,0x0000,0x0882,0x1924,0x2966,0x31a7,0x3a08,0x4229,0x20e2,0x1840,0x2943,0x1881,0x2903,0x2104,0x39c6,0x4207,0x2965,0x2124,0x2944,0x2124,0x2124,0x18c3,0x10a2,0x2103,0x2945,0x0000,0x8410,0xc618,0x738e,0xad55,0x5acb,0xad55,0xad55,0x0000,0x18e3,0x2104,0x18c3,0x2104,0x2945,0x2104,0x0020,0xc638,0xffff,0xffff,0xffdf,0xffff,0xce59,0x8410,0xffff,0xffff,0x8410,0xc638,0xffff,0xffdf,0xffff,0xffff,0xc638,0x0000,0x2965,0x2944,0x18e3,0x10a2,0x18e3,0x2124,0x0000,0x4a69,0xdedb,0xef5d,0xe73c,0xef5d,0x8c51,0x0000,0x2945,0x2104,0x2104,0x18c2,0x2103,0x2124,0x2945,0x2945,0x2124,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdefb,0xad75,0x4a49,0x1080,0x10a1,0x2965,0x5aeb,0x632d,0x4269,0x3a28,0x4249,0x4269,0x426a,0x4a8a,0x4a8a,0x528a,0x4a6a,0x4229,0x39e8,0x2104,0x2104,0x3186,0x39e8,0x4a4a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x52cc,0x52cb,0x4a8a,0x4229,0x31a7,0x2966,0x2145,0x18e3,0x10c3,0x10a3,0x10a3,0x18c3,0x2966,0x31c7,0x3a08,0x31a6,0x2104,0x0000,0x0000,0x632d,0x5aec,0x0000,0x0800,0x1904,0x10c3,0x0861,0x0861,0x0000,0x31a6,0x4a69,0x0000,0x8410,0x94b3,0x0000,0x4a48,0x31a6,0x2124,0x18c3,0x10a3,0x18e4,0x2966,0x31c7,0x3a28,0x39c7,0x2145,0x0862,0x1903,0x41e7,0x4207,0x2985,0x2124,0x2124,0x2104,0x2124,0x18c3,0x10a2,0x2104,0x2104,0x2104,0x1082,0x0000,0x4a69,0xd6ba,0x73ae,0x0000,0x0000,0x2104,0x2104,0x18e3,0x18c3,0x2104,0x2944,0x2103,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffdf,0x9cd3,0xa534,0xb596,0xad55,0xffdf,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2945,0x2124,0x18c3,0x10a2,0x18e3,0x2104,0x2104,0x0000,0x9cf3,0x7bef,0x7bcf,0x8410,0x0000,0x2124,0x2104,0x2104,0x2104,0x18c3,0x2103,0x2124,0x2944,0x2124,0x2104,0x2124,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8cb8,0xe73c,0xdefb,0xdeda,0xdefb,0xd6ba,0xbdd6,0x8c92,0x6b4d,0x4a6a,0x39e8,0x4a69,0x4a8a,0x4a49,0x4249,0x4a6a,0x4a8a,0x4a6a,0x4a49,0x39c7,0x2124,0x2945,0x2966,0x31a7,0x4a4a,0x528a,0x4a8a,0x4a8a,0x4a8b,0x4a8a,0x4a8a,0x4a8b,0x4a8b,0x4a8b,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4229,0x4249,0x4a6a,0x52ab,0x52cc,0x5aec,0x52cc,0x4a8b,0x424a,0x39e8,0x2986,0x2125,0x18e3,0x10c3,0x08a1,0x10c1,0x18e3,0x2945,0x39c7,0x3a08,0x4208,0x3186,0x3166,0x39e8,0x4228,0x2966,0x18c3,0x1061,0x18e3,0x10e2,0x4a8a,0x94f4,0x9514,0xb638,0xb5b7,0x7c51,0x8cd3,0x4a69,0x31a7,0x39e8,0x3186,0x2986,0x39e7,0x3a08,0x2125,0x0000,0x10a2,0x31a6,0x3a08,0x4208,0x4207,0x3186,0x2124,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x31a6,0x632c,0x39e7,0x2104,0x2124,0x18e4,0x2104,0x18e3,0x18c3,0x2104,0x2944,0x2124,0x0020,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xd6ba,0xd6ba,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x0000,0x8430,0x632c,0x738e,0x4a49,0x0000,0x2104,0x18e4,0x2104,0x2104,0x18c3,0x2103,0x2124,0x2124,0x2124,0x2124,0x2104,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0xb5b6,0x8c71,0x5b0b,0x39c7,0x4a6a,0x4a6a,0x424a,0x4249,0x4a49,0x4a49,0x4a69,0x4a6a,0x4a49,0x31a7,0x2965,0x2125,0x2124,0x31c7,0x4a6a,0x4a8a,0x4a8a,0x52ab,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4249,0x4249,0x4229,0x424a,0x4a8b,0x52cc,0x5b0c,0x5aed,0x5acc,0x4a8b,0x4229,0x29a7,0x2125,0x1904,0x18e3,0x10c3,0x1082,0x18e3,0x2965,0x31a6,0x39e8,0x39e8,0x39e8,0x4229,0x4208,0x39c7,0x31a6,0x2966,0x7bf0,0x8472,0x94d5,0xcebc,0x94f5,0x9d36,0x636e,0x2986,0x39e7,0x39e8,0x4208,0x3a08,0x3186,0x0020,0x0861,0x2965,0x4208,0x39e7,0x31a7,0x4207,0x39e7,0x3186,0x2124,0x2124,0x2124,0x2944,0x18e3,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x18c3,0x0000,0x1082,0x2104,0x2104,0x2104,0x2104,0x2103,0x18c3,0x2104,0x2944,0x2104,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x2965,0x2944,0x18e3,0x10a2,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2965,0x31a6,0x2124,0x2104,0x2104,0x2104,0x2104,0x2103,0x18c3,0x2104,0x2945,0x2124,0x2124,0x2124,0x2124,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xce9a,0x8c71,0x0000,0x4a69,0x4a69,0x4a69,0x4a6a,0x4249,0x4229,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x39e8,0x3166,0x18a3,0x18e4,0x39e8,0x4229,0x4a6a,0x528b,0x52ab,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4229,0x4229,0x4249,0x4a8b,0x5aec,0x5b0d,0x632d,0x5aed,0x52ab,0x4229,0x39c8,0x2946,0x18e4,0x10a3,0x1083,0x10a2,0x10a3,0x2104,0x2966,0x31c7,0x4208,0x4229,0x4228,0x39e7,0x4a6a,0x18e4,0x52ed,0xa536,0x0001,0x630d,0x5b0d,0x2966,0x3a08,0x3a08,0x31a6,0x10a3,0x0000,0x2945,0x39e7,0x3a07,0x31c6,0x39e7,0x4208,0x4208,0x39e7,0x3186,0x2104,0x2124,0x2124,0x2124,0x18e3,0x10a2,0x18e3,0x2104,0x18e3,0x2104,0x18e3,0x2104,0x2945,0x2104,0x18e3,0x18e3,0x2103,0x2103,0x18e3,0x18c3,0x2104,0x2944,0x2104,0x0020,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x2965,0x2944,0x18e3,0x10a2,0x18e3,0x2104,0x2104,0x18e3,0x1082,0x18c3,0x10a2,0x18e3,0x2104,0x2104,0x2103,0x2103,0x18e3,0x18c3,0x2124,0x2944,0x2104,0x2124,0x2944,0x2124,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xad55,0x52aa,0x39e7,0x3a07,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4208,0x4208,0x4a49,0x4a49,0x4a6a,0x4229,0x4208,0x2966,0x0882,0x2104,0x31a7,0x3a08,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a4a,0x4249,0x3a29,0x424a,0x4a8b,0x52ec,0x5b0d,0x632d,0x632d,0x5b0c,0x4a8a,0x39c8,0x2986,0x1904,0x18c3,0x10a3,0x0882,0x1082,0x1904,0x2945,0x31a6,0x39e7,0x31a7,0x4229,0x39e7,0x0020,0x3a07,0x2122,0x2963,0x4208,0x39c7,0x2104,0x0000,0x18e4,0x39c7,0x3a08,0x39e7,0x39c6,0x4207,0x4228,0x3a08,0x4208,0x4207,0x3186,0x2104,0x2124,0x2124,0x2124,0x2104,0x18c3,0x18c2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18e3,0x2124,0x2124,0x2945,0x0000,0x9cf3,0xf7be,0xffff,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffdf,0xffff,0xffff,0xffff,0xef5d,0x7bef,0x0000,0x2945,0x2124,0x2103,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x4207,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xd6ba,0xad54,0x6b8e,0x528a,0x31c6,0x31c6,0x4249,0x4a6a,0x4229,0x4208,0x3a08,0x4229,0x4249,0x4a49,0x4a69,0x4a49,0x4208,0x2965,0x10c3,0x2125,0x2966,0x39e8,0x4a8a,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4229,0x3a29,0x424a,0x4a8b,0x52cc,0x632e,0x636e,0x632d,0x5aec,0x52ab,0x4a69,0x31a6,0x2145,0x18c3,0x10a3,0x0083,0x10a3,0x18e3,0x2945,0x3186,0x31c7,0x4228,0x4249,0x4228,0x3a08,0x2965,0x0841,0x0862,0x31a7,0x39e8,0x39c7,0x39c7,0x3a07,0x4228,0x4208,0x4208,0x4208,0x4208,0x39e7,0x3185,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x18e3,0x2104,0x7bef,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x6b6d,0x0000,0x2124,0x2944,0x2124,0x2124,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2945,0x4a28,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xd69a,0x94d2,0x6b6d,0x29a6,0x18c3,0x4228,0x528a,0x4a49,0x4229,0x4249,0x4229,0x4229,0x4a49,0x4a69,0x4a6a,0x4a6a,0x39e8,0x2945,0x2124,0x18e3,0x2124,0x3a08,0x4a69,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x424a,0x4229,0x4229,0x4229,0x4a8a,0x52ec,0x632d,0x6b8e,0x6b6e,0x634d,0x5acc,0x4249,0x39c7,0x2945,0x18e3,0x10a3,0x1082,0x1082,0x18c4,0x2105,0x2945,0x39c8,0x2945,0x0861,0x2945,0x39e7,0x39e7,0x31a6,0x39e7,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x4208,0x4208,0x39e7,0x3185,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2945,0x2124,0x3186,0x4228,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xbdd7,0x94b2,0x5aeb,0x10a2,0x3186,0x4a49,0x4a69,0x4a69,0x4269,0x4249,0x4249,0x4249,0x4a49,0x4a69,0x528a,0x4a69,0x39e7,0x31a6,0x2965,0x0862,0x2104,0x41e8,0x4a49,0x4a6a,0x4a8a,0x4a8a,0x428a,0x426a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4269,0x4249,0x4229,0x4229,0x426a,0x5aec,0x634e,0x6b6e,0x636e,0x634d,0x630c,0x528a,0x39e8,0x2966,0x1904,0x10c3,0x1083,0x10a2,0x18a3,0x18c3,0x2965,0x39e7,0x39c7,0x31c7,0x4227,0x4208,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x3a08,0x4208,0x39e7,0x2985,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x3185,0x3185,0x3185,0x3185,0x2965,0x3185,0x3186,0x3185,0x3185,0x3165,0x3185,0x3185,0x3186,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0xc617,0x9491,0x4248,0x2966,0x39e8,0x4208,0x4249,0x4a69,0x4a6a,0x4a49,0x4a49,0x4249,0x4a49,0x4a69,0x4a6a,0x4a6a,0x3a08,0x31a7,0x2104,0x0001,0x2145,0x39c7,0x4228,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x528a,0x528a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4a6a,0x4a8a,0x4a6a,0x4249,0x4229,0x3a28,0x3a28,0x426a,0x52cb,0x5b2d,0x636e,0x6b8e,0x636e,0x5b0c,0x52ab,0x3a09,0x2986,0x18c4,0x10a3,0x0862,0x2124,0x39e7,0x3a07,0x4228,0x3a27,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x3a08,0x4208,0x39e7,0x3186,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2144,0x2124,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2944,0x2124,0x2965,0x4208,0x0000,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xc638,0x8c71,0x52ca,0x4228,0x39e7,0x39e7,0x4a49,0x4a6a,0x4a6a,0x4a49,0x4229,0x4208,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x39c7,0x10a3,0x1082,0x2945,0x3186,0x4208,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x528a,0x526a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a09,0x4249,0x52ab,0x5b0d,0x636e,0x73af,0x73af,0x634e,0x52cb,0x4249,0x39e8,0x39e7,0x3a08,0x3a08,0x4207,0x3a08,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4208,0x39e7,0x31a6,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x3185,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x39e7,0x4a49,0x0841,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xc618,0x8c71,0x738e,0x4a6a,0x2146,0x39e8,0x4a8a,0x4a6a,0x4a49,0x4229,0x4229,0x4208,0x4228,0x4229,0x4229,0x4a49,0x4229,0x31a7,0x18e3,0x18e4,0x1904,0x2945,0x3a08,0x4a69,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a8a,0x4a69,0x4a69,0x4a69,0x4249,0x3a08,0x3a08,0x4229,0x52aa,0x632d,0x73af,0x73cf,0x73cf,0x6b4e,0x39e8,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4229,0x4208,0x31a6,0x2965,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x2944,0x2124,0x3186,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b76,0xc638,0x9cd3,0x738e,0x2145,0x2966,0x4a49,0x4a6a,0x4a49,0x4249,0x4209,0x4208,0x4208,0x4208,0x4228,0x4a49,0x4a69,0x4229,0x31a7,0x2945,0x1904,0x1062,0x2946,0x3a09,0x4229,0x4a6a,0x4a8a,0x528a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a69,0x4a6a,0x4a69,0x4a8a,0x4a8a,0x4a69,0x4a6a,0x4a29,0x4208,0x39e8,0x4249,0x4a8b,0x6b6e,0x5aec,0x3186,0x4208,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4229,0x31e8,0x2167,0x39e8,0x39e8,0x2986,0x3187,0x3187,0x2986,0x2986,0x3187,0x2987,0x2986,0x2986,0x31a7,0x31c7,0x0000,0x1924,0x840f,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94d3,0x8c72,0xe71c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xc618,0x9cf3,0x5acb,0x2104,0x39c7,0x4208,0x4229,0x4249,0x4249,0x4229,0x4208,0x4229,0x4229,0x4229,0x4249,0x4a49,0x4229,0x31c7,0x2965,0x10a2,0x0841,0x2965,0x39e7,0x4229,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4a8a,0x4a8b,0x4a4a,0x4229,0x4208,0x39e8,0x29a6,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4208,0x4229,0x4208,0x3a08,0x4229,0x4228,0x2965,0x18c2,0x31a6,0x4249,0x4248,0x3a08,0x4208,0x3a08,0x39e8,0x39e8,0x39e8,0x39c7,0x39e8,0x4208,0x2965,0x0000,0x632c,0xc617,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce59,0x94b2,0x52aa,0x39e7,0x31c6,0x31e7,0x4228,0x4249,0x4248,0x4228,0x4229,0x4208,0x4208,0x4208,0x4249,0x4a49,0x4228,0x4208,0x31a7,0x1082,0x10a2,0x2145,0x31a7,0x3a08,0x4a6a,0x4aaa,0x4aaa,0x4a8b,0x4a8b,0x4a8b,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4229,0x2986,0x39e7,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a49,0x31a6,0x18c3,0x2965,0x4228,0x4a49,0x4228,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x41e7,0x39c6,0x0000,0x2103,0xad54,0xef3c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xb5da,0xce59,0x8c51,0x630c,0x4228,0x2985,0x31c7,0x4249,0x4a69,0x4249,0x4208,0x4208,0x4208,0x4208,0x4229,0x4249,0x4249,0x4229,0x4229,0x3186,0x10c3,0x18e4,0x18e3,0x2966,0x3a09,0x4a6a,0x4aab,0x52ab,0x4aab,0x4a8b,0x4aaa,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x31a7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4228,0x4248,0x3a07,0x2124,0x18c3,0x4208,0x4a69,0x4228,0x4208,0x3a07,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x4208,0x18a1,0x0000,0x73ae,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xce7b,0xbdf7,0x94b2,0x6b8d,0x31e6,0x1903,0x3a07,0x4249,0x4249,0x4228,0x4208,0x4208,0x4209,0x4229,0x4229,0x4229,0x4229,0x4a4a,0x4229,0x3166,0x2125,0x18e4,0x1082,0x2966,0x3a09,0x4a6a,0x528a,0x52cb,0x52ab,0x4a8a,0x4aaa,0x4aaa,0x528b,0x528a,0x4a6a,0x4a6a,0x39c7,0x39e7,0x4208,0x4208,0x4208,0x4229,0x4229,0x2965,0x10a2,0x31a6,0x4a49,0x4249,0x4228,0x3a08,0x3a08,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x39e8,0x31c6,0x0000,0x5269,0xb575,0xce7b,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe73c,0xbe17,0x9cf3,0x632c,0x10e3,0x2985,0x3a07,0x4229,0x4229,0x4229,0x4229,0x4228,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a69,0x4228,0x39a6,0x3145,0x1882,0x1061,0x2966,0x39e8,0x426a,0x4aaa,0x52cb,0x52ab,0x528a,0x528a,0x528a,0x526a,0x39c7,0x39e7,0x39e8,0x4229,0x4229,0x39a7,0x0862,0x2945,0x4228,0x4a69,0x4228,0x4207,0x3a07,0x3a07,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x39e7,0x0000,0x0000,0x9491,0xdeda,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce58,0x9cd3,0x528a,0x2965,0x31a6,0x39c7,0x4207,0x4228,0x4228,0x4229,0x4228,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x39e7,0x2986,0x0021,0x08a2,0x2986,0x31e7,0x4a49,0x4aaa,0x4aab,0x52ab,0x4a8a,0x39e8,0x3a07,0x4a49,0x39e7,0x2104,0x1903,0x4207,0x4a69,0x4249,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x39c8,0x41e7,0x2923,0x0000,0x6b4c,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xce59,0x8c71,0x5aeb,0x4228,0x2965,0x31a6,0x4228,0x4a49,0x4229,0x4228,0x4228,0x4229,0x4229,0x4229,0x4229,0x4a49,0x4a49,0x4a49,0x4208,0x2946,0x10a2,0x18e3,0x2145,0x31e8,0x4a8a,0x4a8a,0x3a29,0x4208,0x2965,0x18e3,0x39c7,0x4a69,0x4a69,0x4228,0x4208,0x4208,0x3a08,0x39e7,0x39e7,0x39c6,0x39c7,0x4207,0x3186,0x0000,0x3185,0xa514,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x8cb8,0xc618,0x8c92,0x6b6d,0x3a07,0x10e2,0x31c6,0x4269,0x4249,0x4228,0x4229,0x4229,0x4229,0x4228,0x4229,0x4229,0x4229,0x4249,0x4a69,0x4228,0x3186,0x2145,0x1904,0x2986,0x31a7,0x18c3,0x2944,0x4a49,0x528a,0x4248,0x4228,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39c8,0x4208,0x0020,0x0000,0x7bce,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe75c,0xbe17,0x9cf3,0x6b8e,0x2965,0x2145,0x3a07,0x4248,0x4248,0x4248,0x4248,0x4228,0x4229,0x4229,0x4229,0x4229,0x4a49,0x4a4a,0x4a6a,0x4a49,0x39e8,0x2125,0x39e7,0x528a,0x4a49,0x4228,0x4228,0x4208,0x4208,0x3a07,0x39e7,0x39c7,0x39e7,0x4208,0x3166,0x0000,0x5aca,0xb5b5,0xef7c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce59,0xa534,0x634d,0x31a6,0x39e7,0x3a07,0x3a08,0x4249,0x4a49,0x4229,0x4229,0x4a49,0x4a49,0x4229,0x4229,0x528a,0x52ab,0x4a29,0x4a6a,0x4a69,0x4249,0x4228,0x4228,0x4208,0x3a07,0x3a07,0x39e7,0x39e7,0x31c7,0x0000,0x1080,0x9cf2,0xdeda,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xd69a,0xa514,0x632c,0x4249,0x39c7,0x31a6,0x4208,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4228,0x4a69,0x4a69,0x4248,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x39e7,0x18c3,0x0000,0x840f,0xd699,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x7417,0xce79,0x9cd2,0x738d,0x4a69,0x2944,0x31a5,0x4a48,0x4a69,0x4a69,0x4a69,0x4a69,0x4248,0x4a89,0x4a49,0x4228,0x4228,0x3a08,0x39e7,0x3a08,0x3186,0x0000,0x5aca,0xc5f7,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x5b75,0xce59,0xa4f4,0x7bcf,0x4228,0x2945,0x4208,0x4a69,0x4a69,0x4229,0x528a,0x4a49,0x4228,0x4208,0x4208,0x4208,0x0000,0x1080,0x9491,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xe71c,0xce59,0xad55,0x7bae,0x41e7,0x4228,0x4208,0x4228,0x528a,0x4a69,0x4a48,0x31a6,0x0000,0x632c,0xc638,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xef5d,0xd6ba,0xb5b6,0x8430,0x4a49,0x2944,0x2944,0x0000,0x2964,0xa513,0xe73c,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0xdedb,0xa513,0x6b6d,0x9492,0xd6ba,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4, +0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4,0x4ad4}; diff --git a/MCUME_teensy/teensycolem/options.h b/MCUME_teensy/teensycolem/options.h new file mode 100644 index 0000000..36c1ef8 --- /dev/null +++ b/MCUME_teensy/teensycolem/options.h @@ -0,0 +1 @@ +#define LSB_FIRST 1 diff --git a/MCUME_teensy/teensycolem/teensycolem.ino b/MCUME_teensy/teensycolem/teensycolem.ino new file mode 100644 index 0000000..70cf600 --- /dev/null +++ b/MCUME_teensy/teensycolem/teensycolem.ino @@ -0,0 +1,273 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "Colem.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensycolem/tft_t_dma.cpp b/MCUME_teensy/teensycolem/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensycolem/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 192 + +#ifdef ILI9341 +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensycolem/tft_t_dma_config.h b/MCUME_teensy/teensycolem/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensycolem/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensylogo/.DS_Store b/MCUME_teensy/teensylogo/.DS_Store new file mode 100644 index 0000000..f7a8f99 Binary files /dev/null and b/MCUME_teensy/teensylogo/.DS_Store differ diff --git a/MCUME_teensy/teensylogo/AudioPlaySystem.cpp b/MCUME_teensy/teensylogo/AudioPlaySystem.cpp new file mode 100644 index 0000000..538c0e5 --- /dev/null +++ b/MCUME_teensy/teensylogo/AudioPlaySystem.cpp @@ -0,0 +1,196 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +void SND_Process(void *sndbuffer, int sndn); +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensylogo/AudioPlaySystem.h b/MCUME_teensy/teensylogo/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensylogo/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensylogo/bmpjoy.h b/MCUME_teensy/teensylogo/bmpjoy.h new file mode 100644 index 0000000..b79a712 --- /dev/null +++ b/MCUME_teensy/teensylogo/bmpjoy.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + diff --git a/MCUME_teensy/teensylogo/bmptft.h b/MCUME_teensy/teensylogo/bmptft.h new file mode 100644 index 0000000..b2e7904 --- /dev/null +++ b/MCUME_teensy/teensylogo/bmptft.h @@ -0,0 +1,39 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + diff --git a/MCUME_teensy/teensylogo/bmpvbar.h b/MCUME_teensy/teensylogo/bmpvbar.h new file mode 100644 index 0000000..4f224f9 --- /dev/null +++ b/MCUME_teensy/teensylogo/bmpvbar.h @@ -0,0 +1,151 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + diff --git a/MCUME_teensy/teensylogo/bmpvga.h b/MCUME_teensy/teensylogo/bmpvga.h new file mode 100644 index 0000000..1037b1b --- /dev/null +++ b/MCUME_teensy/teensylogo/bmpvga.h @@ -0,0 +1,39 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + diff --git a/MCUME_teensy/teensylogo/emuapi.cpp b/MCUME_teensy/teensylogo/emuapi.cpp new file mode 100644 index 0000000..1b702d8 --- /dev/null +++ b/MCUME_teensy/teensylogo/emuapi.cpp @@ -0,0 +1,1045 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensylogo/emuapi.h b/MCUME_teensy/teensylogo/emuapi.h new file mode 100644 index 0000000..8d58d33 --- /dev/null +++ b/MCUME_teensy/teensylogo/emuapi.h @@ -0,0 +1,129 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +//#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +//#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " File Selector " +#define ROMSDIR "/" + +#define emu_Init(ROM) { } +#define emu_Step(x) { } + +#define PALETTE_SIZE 2 +#define VID_FRAME_SKIP 0x3 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 10 +#define KEYBOARD_Y 8 +#define KEYBOARD_KEY_H 40 +#define KEYBOARD_KEY_W 30 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y+16, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H-6, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_NEW_ROW,30,30,30,30,30,30,30,30,30,30, + TAREA_END}; + +const unsigned short keys[] = { + 30,31,32,33,34,35,36,37,38,39, + 20,26, 8,21,23,28,25,12,18,19, + 4, 9, 7,22, 4,11,13,14,15,40, + 25, 6,27,29,224,5,17,16,225,44 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + +#endif + + + + diff --git a/MCUME_teensy/teensylogo/font8x8.h b/MCUME_teensy/teensylogo/font8x8.h new file mode 100644 index 0000000..59e8c8a --- /dev/null +++ b/MCUME_teensy/teensylogo/font8x8.h @@ -0,0 +1,136 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + + diff --git a/MCUME_teensy/teensylogo/iopins.h b/MCUME_teensy/teensylogo/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensylogo/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensylogo/keyboard_osd.h b/MCUME_teensy/teensylogo/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensylogo/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensylogo/logo.h b/MCUME_teensy/teensylogo/logo.h new file mode 100644 index 0000000..95f5148 --- /dev/null +++ b/MCUME_teensy/teensylogo/logo.h @@ -0,0 +1,173 @@ +const uint16_t PROGMEM logo[] = { +0x0140,0x00ac,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020, +0x0000,0x9cf3,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x9cf3,0x0000, +0x0000,0xc638,0xc618,0x8c71,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x8c71,0xc618,0xc638,0x0000, +0x0000,0xc638,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x3186,0x94b2,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x94b2,0x94b2,0x94f3,0x94d3,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x9492,0x94b2,0x94f3,0x94d3,0x94d3,0x9cd3,0x4a49,0x0000,0x0861,0x0000,0x0000,0x738e,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x8430,0x0000,0x0000,0x0861,0x0000,0x2104,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x94f3,0x94b2,0x94b2,0x94d3,0x9492,0x94d3,0x94b2,0x94b2,0x94f3,0x94d3,0x94f3,0x9492,0x94b2,0x94f3,0x94d3,0x9492,0x9cd3,0x52aa,0x0000,0x0841,0x0020,0x0000,0x6b4d,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94b2,0x9492,0x8c51,0x0000,0x0000,0x0861,0x0000,0x0841,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x630c,0x0000,0x0841,0x0841,0x0000,0x630c,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94f3,0x94d3,0x94d3,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x8c71,0x0020,0x0000,0x0861,0x0000,0x0000,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94d3,0x94b2,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x6b4d,0x0000,0x0020,0x0841,0x0000,0x52aa,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x2104,0x0000,0x0861,0x0000,0x0000,0x8430,0x9492,0x94b2,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x94d3,0x94d3,0x9492,0x9492,0x94d3,0x94f3,0x94b2,0x9492,0x9492,0x94d3,0x9492,0x94f3,0x73cf,0x0000,0x0000,0x0861,0x0000,0x4a49,0x9cd3,0x94d3,0x94f3,0x94b2,0x9492,0x94b2,0x94d3,0x9492,0x94d3,0x94b2,0x9492,0x94f3,0x94d3,0x9492,0x9492,0x9492,0x9492,0x94d3,0x9492,0x9492,0x94b2,0x94d3,0x9492,0x94f3,0x31c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xe73c,0xe71c,0xe71c,0xe73c,0xe6db,0xe5f7,0xe5f7,0xe5d7,0xe6ba,0xe6db,0xe5f7,0xe5f7,0xe71c,0xe75c,0xe69a,0xe5d7,0xe618,0xe5d7,0xe6fb,0xe69a,0xe5d7,0xe618,0xe5f7,0xef1c,0xa534,0x39e7,0x0000,0x0861,0x52aa,0xc638,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe75d,0xe659,0xe659,0xe75d,0xe71c,0xe638,0xe5d7,0xe69a,0xe75d,0xe71c,0xe618,0xe5d7,0xe69a,0xe75d,0xd6ba,0x6b6d,0x2124,0x0000,0x3186,0x8c51,0xe73c,0xe71c,0xe71c,0xe73c,0xe6db,0xe5d7,0xe618,0xe5d7,0xe6ba,0xe6db,0xe618,0xe71c,0xe638,0xe6ba,0xe6db,0xe5f7,0xe5f7,0xe5d7,0xe6db,0xe6ba,0xe5d7,0xe618,0xe71c,0xef7d,0xad75,0x4208,0x0000,0x0000,0x4a69,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe638,0xe5f7,0xe5f7,0xe638,0xe71c,0xe75d,0xe639,0xe679,0xe75d,0xdefb,0x73ae,0x2945,0x0000,0x2965,0x8410,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe5f7,0xe5d7,0xe6ba,0xe75d,0xe73c,0xe73c,0xe73c,0xef5d,0xb5b6,0x4228,0x0000,0x0000,0x4228,0xb5b6,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe659,0xe5f7,0xe5f7,0xe5f7,0xe5f7,0xe5f7,0xe6ba,0xe73c,0xe73c,0xe71c,0x8410,0x2965,0x0000,0x2945,0x73ae,0xdefb,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe638,0xe69a,0xe75d,0xe73c,0xe71c,0xe71c,0xef5d,0xbdf7,0x4a69,0x0000,0x0000,0x4208,0xad75,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe75d,0xe69a,0xe5d7,0xe618,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0x8c51,0x3186,0x0000,0x2124,0x6b6d,0xd6ba,0xe75d,0xe69a,0xe618,0xe73c,0xe73c,0xe659,0xe5d7,0xe659,0xe75d,0xe71c,0xe75d,0xe659,0xe659,0xe75d,0xe71c,0xe638,0xe5d7,0xe69a,0xe75d,0xe71c,0xe618,0xe6fb,0xeebb,0xc534,0x52cb,0x0861,0x0000,0x39e7,0xa534,0xef3c,0xe5f8,0xe5d7,0xe6db,0xe75d,0xe6db,0xe618,0xe71c,0xe638,0xe69a,0xe6db,0xe5f7,0xe5f7,0xe6fb,0xe73c,0xe73c,0xe6fb,0xe5f7,0xe71c,0xe73c,0xe69a,0xe638,0xe71c,0xe638,0x9430,0x31c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd000,0xd084,0xd000,0xdd96,0xd555,0xd000,0xd105,0xddf7,0xdf1c,0xd4f3,0xd000,0xd000,0xd000,0xde38,0xd4d3,0xd000,0xd000,0xd002,0xd618,0xe75d,0xad55,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd36e,0xd36e,0xdedb,0xdeba,0xd146,0xd000,0xd431,0xdefb,0xde9a,0xd002,0xd000,0xd492,0xdedb,0xdedb,0xe71c,0x52aa,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd000,0xd000,0xd000,0xd534,0xdd96,0xd002,0xdedb,0xd146,0xd534,0xd575,0xd000,0xd0a4,0xd000,0xddf7,0xd4f3,0xd000,0xd1a7,0xde38,0xdedb,0xe73c,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2cb,0xd000,0xd000,0xd2cb,0xdedb,0xdeba,0xd2ec,0xd3cf,0xdedb,0xdedb,0xe73c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xde9a,0xddf7,0xd0e5,0xd000,0xd4f3,0xdeba,0xde79,0xde79,0xde79,0xdeba,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ab,0xd000,0xd0c4,0xd084,0xd084,0xd000,0xd4f4,0xdf1c,0xdedb,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xde9a,0xd26a,0xd451,0xdeba,0xde79,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xde79,0xde79,0xdeba,0xd492,0xd000,0xd187,0xde38,0xde79,0xde9a,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x52aa,0xe71c,0xdedb,0xdedb,0xd451,0xd2ab,0xdefb,0xdefb,0xd2ab,0xd000,0xd36e,0xdeba,0xdedb,0xdedb,0xd36e,0xd36e,0xdedb,0xdeba,0xd146,0xd000,0xd431,0xdefb,0xde9a,0xd000,0xddf8,0xd410,0xdaec,0xd6db,0x18c3,0x0000,0xad55,0xe77d,0xd5f7,0xd000,0xd000,0xd534,0xdf1c,0xddb6,0xd000,0xdeba,0xd209,0xd4b2,0xddd7,0xd000,0xd002,0xddb7,0xdedb,0xdedb,0xddb6,0xd0a4,0xddf7,0xdf1c,0xd451,0xd209,0xdeba,0xd000,0xe638,0x94f3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd105,0xdeba,0xdeba,0xdefb,0xd4f3,0xd1c7,0xde9a,0xd1a7,0xdd75,0xdf3c,0xdd76,0xd003,0xde59,0xdedb,0xdefb,0xd534,0xd105,0xde7a,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd229,0xd555,0xd555,0xd249,0xdedb,0xd125,0xdd76,0xd4d3,0xd2ec,0xdeba,0xd043,0xddd7,0xd451,0xd32d,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xd003,0xdd76,0xdf3c,0xd555,0xd126,0xdefb,0xd1e8,0xd555,0xd555,0xd1a7,0xdedb,0xde9a,0xdf1c,0xd472,0xd26a,0xde9a,0xd146,0xddb7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd34d,0xd34d,0xdefb,0xdeba,0xd1c7,0xdd96,0xd4d3,0xd2ab,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xd472,0xd000,0xd1e8,0xde9a,0xdefb,0xd3ef,0xd000,0xd002,0xd002,0xd000,0xd596,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xd229,0xd430,0xdefb,0xde9a,0xdeba,0xd105,0xd4f3,0xdf3c,0xdefb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xddf7,0xd000,0xd000,0xddf7,0xd492,0xd000,0xd209,0xdedb,0xdefb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd535,0xd000,0xd002,0xd002,0xd000,0xd451,0xdefb,0xde59,0xd166,0xd000,0xd4f3,0xdf3c,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd32d,0xd3f0,0xdefb,0xdefb,0xdefb,0xd249,0xd4d3,0xddb6,0xd146,0xdedb,0xd249,0xd555,0xd555,0xd249,0xdedb,0xd125,0xddb6,0xd4d3,0xd28b,0xdeba,0xd003,0xde38,0xd471,0xdb2c,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd001,0xde79,0xd32d,0xd451,0xde18,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd125,0xdeba,0xd1e8,0xd555,0xd575,0xd229,0xde9a,0xd1a7,0xddd7,0xd4d3,0xd28a,0xdeba,0xd023,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd575,0xd000,0xd209,0xde38,0xdf3c,0xd4f3,0xd1e8,0xdedb,0xd0e5,0xd555,0xdf5d,0xddb7,0xd003,0xde9a,0xdefb,0xdf1c,0xd555,0xd105,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd249,0xd105,0xd105,0xd26a,0xdedb,0xd125,0xddb7,0xd4d3,0xd26a,0xdeba,0xd023,0xde18,0xd451,0xd2cb,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd003,0xddb7,0xdf5d,0xd575,0xd000,0xd209,0xd000,0xdd75,0xdd75,0xd000,0xd26a,0xde79,0xdf3c,0xd472,0xd28a,0xdedb,0xd001,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd38e,0xd38e,0xdf3c,0xdeba,0xd0a4,0xddb6,0xd4d3,0xd229,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd2ab,0xd125,0xd4b2,0xde79,0xde39,0xdedb,0xdefb,0xde79,0xde18,0xde38,0xde18,0xd003,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd1a7,0xd1a7,0xd555,0xdefb,0xdf3c,0xdedb,0xdf3c,0xdeba,0xd410,0xd0c4,0xd34d,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd410,0xd0c4,0xd36e,0xde59,0xddd7,0xdeba,0xde59,0xddf7,0xddd7,0xd229,0xd125,0xd555,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4f3,0xd125,0xde38,0xde38,0xde18,0xde79,0xdefb,0xdedb,0xde38,0xde79,0xd471,0xd0e5,0xd2ec,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd2cb,0xd431,0xde59,0xd2ec,0xdebb,0xd30c,0xd000,0xd3ef,0xde79,0xdedb,0xd249,0xd105,0xd105,0xd26a,0xdedb,0xd1e8,0xd043,0xd431,0xde59,0xde9a,0xd125,0xd187,0xd001,0xdbae,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd166,0xd534,0xdedb,0xddb7,0xd023,0xdeba,0xd28a,0xd4d3,0xddd7,0xd000,0xd209,0xd596,0xdefb,0xd4f3,0xd1a7,0xdedb,0xd0e5,0xddb6,0xd4d3,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd001,0xd4f3,0xdedb,0xdf5c,0xd4d3,0xd208,0xdf1c,0xd001,0xd534,0xdf7d,0xddf7,0xd023,0xdedb,0xdefb,0xdf1c,0xd555,0xd105,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd229,0xd36e,0xd36e,0xd249,0xdedb,0xd125,0xddb6,0xd4d3,0xd28a,0xdeba,0xd003,0xde59,0xd451,0xd26a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd003,0xddb6,0xdf3c,0xd575,0xd000,0xd4b2,0xd023,0xd575,0xd555,0xd023,0xd514,0xdedb,0xdf3c,0xd471,0xd28a,0xdeba,0xd043,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd36e,0xd36e,0xdf3c,0xdeba,0xd000,0xddd7,0xd4d3,0xd1a7,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd4d3,0xd4b2,0xd451,0xd3ef,0xd492,0xdefb,0xdf5d,0xd575,0xd3cf,0xd410,0xd410,0xd000,0xd555,0xdf5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd492,0xd4b2,0xd431,0xd38e,0xd514,0xdefb,0xd3cf,0xd3ef,0xd472,0xd492,0xd514,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd575,0xd472,0xd492,0xd4b3,0xdf1c,0xdf3c,0xdf5d,0xde79,0xd451,0xd4b2,0xd472,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4f3,0xd000,0xd410,0xd410,0xd3af,0xdd96,0xdf5d,0xdefb,0xd451,0xd3f0,0xd471,0xd492,0xd4f3,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdf1c,0xd26a,0xd451,0xde38,0xd000,0xdeba,0xd2ec,0xd2cb,0xd4b3,0xd4d3,0xdedb,0xd229,0xd36e,0xd36e,0xd249,0xdedb,0xd1a7,0xd32d,0xddf7,0xdf3c,0xde7a,0xd0c4,0xd410,0xd2ab,0xdb6e,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd451,0xd471,0xddf7,0xddd7,0xd063,0xdefb,0xd2ab,0xd4d3,0xddb7,0xd001,0xd4f4,0xd410,0xde38,0xd4f3,0xd146,0xdf1c,0xd001,0xdd96,0xd4d3,0xd2ab,0xdefb,0xd063,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd555,0xd000,0xd575,0xd514,0xde79,0xd514,0xd000,0xd534,0xd3ae,0xde18,0xde79,0xd410,0xd000,0xd4d3,0xde79,0xdf3c,0xd535,0xd003,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd125,0xd575,0xdd75,0xd166,0xdedb,0xd063,0xddb6,0xd4b3,0xd249,0xdeba,0xd001,0xd451,0xd451,0xd4b3,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd000,0xdd96,0xdf5d,0xd535,0xd0a4,0xdf1c,0xd1a7,0xd534,0xd555,0xd002,0xdd96,0xd514,0xdeba,0xd472,0xd249,0xdeba,0xd000,0xdd96,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd34d,0xd34d,0xdf1c,0xdeba,0xd410,0xd4b3,0xd471,0xd492,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf5d,0xd555,0xd28a,0xd36e,0xd514,0xd555,0xd410,0xd2ec,0xd32d,0xd32d,0xd34d,0xddf7,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf3c,0xd471,0xd2ab,0xd3f0,0xd514,0xd32d,0xd2ab,0xddd7,0xdf5d,0xdf1c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf5d,0xddd7,0xd000,0xd4d3,0xd534,0xd555,0xd3ae,0xd000,0xdefb,0xdf3c,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd34d,0xd32d,0xd32d,0xd2ec,0xd430,0xd555,0xd514,0xd34d,0xd28a,0xdd96,0xdf5d,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdefb,0xd4b3,0xd431,0xd4d3,0xd3ef,0xdedb,0xd209,0xd514,0xddd7,0xd000,0xdedb,0xd166,0xdd76,0xdd75,0xd166,0xdedb,0xd003,0xdd96,0xdf3c,0xdedb,0xde79,0xd000,0xde59,0xd471,0xdaec,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xddf7,0xd000,0xdedb,0xd2ab,0xd3cf,0xde18,0xd000,0xd514,0xd0e5,0xd4d3,0xddb6,0xd000,0xdd76,0xd34d,0xddb7,0xddf7,0xd3af,0xd514,0xd3ae,0xde59,0xd4b3,0xd0e5,0xd514,0xd000,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xd5b6,0xd166,0xd166,0xd001,0xdd96,0xddb7,0xd105,0xd1a7,0xde9a,0xdf5d,0xdcf3,0xd063,0xd249,0xd0e5,0xddf7,0xdf3c,0xdd96,0xd2ab,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ec,0xd596,0xdd96,0xd30c,0xdedb,0xd2cb,0xddf7,0xdd34,0xdb8e,0xdeba,0xd2cb,0xd000,0xdd34,0xdf5d,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd26a,0xddd7,0xdf3c,0xd596,0xd2ab,0xdedb,0xd30c,0xdd96,0xddd7,0xd166,0xd186,0xd023,0xddf7,0xdd35,0xd38e,0xdeba,0xd26a,0xddd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdc30,0xdc30,0xdf1c,0xdedb,0xdf5d,0xd38e,0xdc72,0xdf5d,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdeba,0xd1c7,0xd000,0xdd96,0xdf7d,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf5d,0xddb6,0xd209,0xdf1c,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd1c8,0xd187,0xd166,0xd166,0xd166,0xd32d,0xdeba,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdf7d,0xdd34,0xd000,0xd249,0xdedb,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdf5d,0xd4f3,0xd2ec,0xdf3c,0xdefb,0xd34d,0xd534,0xddd7,0xd2ab,0xdedb,0xd30c,0xdd96,0xdd96,0xd30c,0xdedb,0xd2ab,0xdd96,0xdefb,0xdedb,0xde9a,0xd26a,0xde38,0xd4b3,0xdbef,0xce9a,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd229,0xde9a,0xd3ef,0xd4b3,0xde38,0xd1a7,0xd166,0xd125,0xd575,0xddf8,0xd166,0xd125,0xde59,0xdf1c,0xdf1c,0xde59,0xd166,0xde9a,0xdf5c,0xd514,0xd125,0xd166,0xd1c7,0xe659,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x8430,0x39c7,0x4a69,0x4a69,0x4a69,0x39c7,0x3186,0x31a6,0x31c7,0x4228,0xc638,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0x4228,0x31c7,0x31a6,0x31a6,0x39e7,0x4a69,0x4a69,0x4a69,0x39c7,0x8430,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0xbdf7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x528a,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x7bef,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x9cd3,0x31a6,0x4a69,0x4a69,0x4a8a,0x39e7,0x3186,0x3186,0x31a6,0x31a6,0xb5b6,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x5aeb,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x738e,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0xa534,0x31a6,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x31a6,0xad75,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x632c,0x3186,0x3186,0x31a6,0x31c7,0x4a49,0x4a69,0x4a69,0x4228,0x632c,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xe73c,0xc618,0x5aeb,0x73ae,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x8c51,0xad55,0xad55,0x94b2,0x0000,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xdefb,0x73ae,0x632c,0x6b4d,0x630c,0x7bef,0xe71c,0xdefb,0xdedb,0xdefb,0xbdf7,0x0000,0x94b2,0xad55,0xad55,0x8c51,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xe73c,0xb596,0x5acb,0x6b4d,0x6b4d,0x5acb,0xb596,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x4228,0xad75,0xa534,0xa534,0xa534,0xa534,0xa534,0x9cf3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xb596,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x9492,0xad55,0xa534,0xa534,0xa534,0xa534,0xad75,0x632c,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xa534,0x6b4d,0x632c,0x6b4d,0x6b4d,0x6b4d,0x5aeb,0x8c51,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xad75,0xa534,0xa514,0x0000,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe73c,0x8430,0x630c,0x6b4d,0x632c,0x6b6d,0xce79,0xdedb,0xdedb,0xdedb,0xce79,0x0000,0x8430,0xad55,0xa534,0xa534,0xa534,0xa534,0xad75,0x738e,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0xa534,0x5acb,0x6b4d,0x6b4d,0x6b4d,0x632c,0x6b4d,0x8c71,0xdedb,0xdedb,0xe71c,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xe73c,0x8c71,0x5aeb,0x6b4d,0x632c,0x632c,0xd69a,0xe71c,0xdedb,0xdedb,0xd6ba,0x2124,0x7bef,0xad55,0xa534,0x9cf3,0x0861,0x0000,0x0000,0x0000,0x39c7,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x5aeb,0x6b4d,0x6b4d,0x5acb,0x9cd3,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xe73c,0x9cd3,0x5aeb,0x6b4d,0x6b4d,0x738e,0xce79,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdefb,0xbdd7,0x8c51,0x6b6d,0x0000,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0xc618,0xef5d,0xe73c,0xd69a,0x0841,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xce59,0x9492,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x9cf3,0xce79,0xdedb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xef5d,0xc618,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xad75,0x8430,0x7bcf,0x7bcf,0x8410,0x8410,0x8c51,0xad75,0xdefb,0xdedb,0xe71c,0x738e,0x73ae,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xb5b6,0x4a49,0x4a49,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0xc638,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0x94b2,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x2104,0x8c51,0x8430,0x8430,0x8430,0x7bcf,0x94b2,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0xa514,0x8c51,0x8410,0x8430,0x8410,0x8430,0xd69a,0xdedb,0xdedb,0xdedb,0xd69a,0x10a2,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xad55,0x738e,0x7bcf,0x7bcf,0x7bcf,0x8c51,0x4a69,0x2104,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd6ba,0x9cf3,0x8430,0x8410,0x8430,0x8430,0x8410,0x8c71,0xc618,0xdefb,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe73c,0xdedb,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdefb,0xc618,0x9492,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8430,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0xad55,0x8430,0x73ae,0x7bef,0x7bef,0x0000,0x7bcf,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe71c,0x8c71,0x8410,0xdedb,0x0841,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdd7,0x4a69,0xdefb,0xe73c,0xe73c,0xef5d,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x73ae,0x94b2,0xef7d,0xe71c,0xc638,0xce79,0x8430,0x7bef,0xdefb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xc638,0x73ae,0x0000,0x630c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x630c,0xce79,0xc638,0xc638,0xc618,0xd6ba,0xe73c,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xad75,0xce59,0xc638,0xc638,0xc638,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xbdd7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xd6ba,0xdefb,0xe71c,0xe71c,0xe71c,0xe73c,0xdedb,0x9cd3,0x738e,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x52aa,0xad55,0xce59,0xc638,0xc638,0xc638,0x5aeb,0xad55,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8430,0x39e7,0xef5d,0xe73c,0xe73c,0xef7d,0xb596,0x0000,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x0000,0xad75,0xef7d,0xdefb,0xbdf7,0x6b4d,0x0000,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x2945,0x2945,0x0841,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdefb,0xd69a,0xd69a,0xd69a,0xd6ba,0xc618,0x2945,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdefb,0xbdd7,0x0841,0x2945,0x2945,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xd69a,0x31a6,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xd69a,0x2965,0xbdd7,0x9cf3,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0841,0xbdd7,0xdedb,0xd69a,0xd6ba,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8430,0x0000,0x0861,0x1082,0x1082,0x0000,0x8c51,0xdefb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x1082,0x1082,0x0000,0x2104,0xc618,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xb596,0xdedb,0xd69a,0xd69a,0xd69a,0xd69a,0xdedb,0x9cd3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x6b6d,0x73ae,0xe73c,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x1082,0x0861,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x94b2,0x52aa,0xdedb,0xd69a,0xd69a,0xdedb,0xa534,0x2965,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xb596,0x2104,0xdedb,0x52aa,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x630c,0x7bcf,0xd6ba,0xce79,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x39e7,0x0861,0x18e3,0x0020,0x4a49,0xce59,0xdedb,0xdedb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xd6ba,0xce79,0xce79,0xd6ba,0x7bcf,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xce79,0xd6ba,0x8410,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x7bef,0x18e3,0x39c7,0x31a6,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x39c7,0xc638,0xef5d,0x94b2,0x528a,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x2965,0x39c7,0x2124,0x632c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0xd69a,0xce79,0xce79,0xce79,0xd6ba,0x8c71,0x630c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0841,0xb5b6,0xd69a,0xce79,0xce79,0xce59,0x4228,0xad75,0xe71c,0xdedb,0xd69a,0x2965,0x2124,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x0861,0x528a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x4a49,0x94b2,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x4a49,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x39c7,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x4208,0xb575,0xd69a,0xce79,0xce79,0xce79,0x528a,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xad75,0x0000,0x18e3,0x18e3,0x2104,0x0000,0x4208,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xbdf7,0xa514,0x4a69,0xd6ba,0xdefb,0x528a,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe73c,0xd69a,0x0841,0xce59,0xef5d,0xdefb,0xdedb,0xdedb,0xe71c,0x630c,0x8410,0xe73c,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc618,0x6b4d,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xe73c,0xdedb,0xdedb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xe73c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x7bef,0x9cd3,0xef5d,0xe71c,0xe73c,0xf79e,0x7bef,0x4a49,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x6b6d,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0x528a,0x5aeb,0x39c7,0x18e3,0x52aa,0x4a49,0xbdf7,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8c51,0x9492,0xef7d,0xe73c,0xe73c,0xf79e,0x9492,0x2965,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xce59,0xef7d,0xe73c,0xe73c,0xe71c,0x0000,0xa534,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x6b4d,0xa514,0xce79,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x528a,0xe71c,0xdefb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0x39e7,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xbdf7,0xef7d,0xe73c,0xe73c,0xef5d,0x18c3,0x94b2,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xd6ba,0xbdf7,0xbdf7,0xbdf7,0xc638,0x8c71,0x0000,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x18c3,0x31a6,0x94b2,0xce79,0xe73c,0xef5d,0x4208,0x8430,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdefb,0xb596,0x8410,0x7bcf,0x0000,0x73ae,0x8410,0xad55,0xdefb,0xdedb,0xe71c,0x5aeb,0x8430,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0x0841,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0x8c51,0x9492,0x9492,0x9492,0x8c71,0x8430,0xce59,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xa534,0x8410,0x8430,0x8430,0x8430,0x8430,0x8c51,0xad75,0xdefb,0xdedb,0xe71c,0x738e,0x73ae,0xef5d,0xe71c,0xef5d,0x73ae,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x94b2,0x8c71,0x9492,0x52aa,0x18c3,0x8c71,0x8430,0xce59,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xe71c,0xe71c,0xef5d,0x94b2,0x4a69,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xad75,0x8410,0x8430,0x8430,0x8430,0x8430,0x8c51,0xad55,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0x94b2,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c71,0xc638,0xdefb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0x0000,0xc638,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x528a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0x4208,0x9cf3,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd6ba,0x9cf3,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c71,0xc618,0xdefb,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe71c,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x8c71,0x9492,0x9492,0x9492,0x8c71,0x9cf3,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0xa534,0x1082,0x4208,0x94b2,0x8430,0x8430,0x8c51,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xe71c,0x9cf3,0x4a49,0x5aeb,0x6b6d,0x5aeb,0x4a49,0x94b2,0xe71c,0xdedb,0xe71c,0x630c,0x5aeb,0xb5b6,0xad75,0xad75,0xad75,0xad75,0xb596,0xa514,0x0000,0xbdf7,0xef5d,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdefb,0xc618,0x632c,0x5aeb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0xc638,0xdefb,0xdefb,0xbdf7,0x0000,0xa514,0xb596,0xad75,0xad75,0xad75,0xad75,0xb5b6,0x5aeb,0x630c,0xe71c,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdedb,0xef5d,0xb596,0x4a49,0x5aeb,0x5aeb,0x4a49,0xb596,0xef5d,0xdedb,0xdedb,0xe71c,0x738e,0x4a69,0xb5b6,0xad75,0xb5b6,0x52aa,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xb596,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xef5d,0xad75,0x8430,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x39e7,0xad75,0xad75,0xb5b6,0x6b6d,0x528a,0xdefb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xe73c,0xbdd7,0x4a49,0x5aeb,0x5aeb,0x4a49,0xa534,0xef5d,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x8410,0xb5b6,0xad75,0xad55,0x0000,0xad55,0xef5d,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xe73c,0x7bef,0x528a,0x5aeb,0x5acb,0x630c,0xd6ba,0xdefb,0xdedb,0xdedb,0xd69a,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x6b6d,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9492,0x2965,0xb596,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0x10a2,0x9cf3,0xef5d,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xe73c,0x8430,0x4a69,0x5aeb,0x5acb,0x5acb,0xd69a,0xe71c,0xdedb,0xdedb,0xd6ba,0x2945,0x8430,0xb5b6,0xb596,0xa534,0x10a2,0x0000,0x0000,0x0000,0x39c7,0xd6ba,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x528a,0x5acb,0x5aeb,0x4a69,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x18c3,0x0000,0xa534,0xe73c,0xdedb,0xdedb,0xe73c,0x9cf3,0x5acb,0x5acb,0x5acb,0x528a,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x18c3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c7,0xc638,0xdefb,0x9cd3,0x0000,0x18c3,0xbdf7,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdefb,0xc638,0x39c7,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2124,0x18c3,0x8410,0xdefb,0xce79,0x4a69,0x0000,0x73ae,0xd6ba,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x18c3,0x2124,0x2945,0x2124,0x39c7,0x4208,0x4208,0x4208,0x3186,0xbdf7,0xdefb,0xa514,0x0000,0x0000,0xb5b6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x4228,0x39e7,0x4208,0x4208,0x39e7,0x2945,0x2945,0x2124,0x18e3,0x73ae,0xdefb,0xd69a,0x5aeb,0x0000,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x94b2,0x2104,0x4208,0x4208,0x4208,0x3186,0x2124,0x2945,0x2945,0x2124,0xb5b6,0xe71c,0xad75,0x0000,0x0000,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x528a,0x39c7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3186,0x6b4d,0xdedb,0xd6ba,0x6b4d,0x0000,0x5aeb,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x18c3,0x2124,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x18e3,0xad75,0xe71c,0xb5b6,0x0000,0x0000,0xa514,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x5aeb,0x2124,0x2124,0x2945,0x2945,0x39e7,0x4208,0x4208,0x31a6,0x5aeb,0xd6ba,0xdedb,0x73ae,0x0000,0x4a69,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xbdf7,0x18c3,0x0000,0x9cd3,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x8430,0x0000,0x0000,0x0000,0x0000,0xb596,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xdefb,0xce79,0x2945,0x0000,0x0000,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0xad55,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x39e7,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x4a69,0x0000,0x0000,0x0000,0x39e7,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x5aeb,0x0000,0x0000,0x0000,0x2945,0xce79,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0x8430,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x3186,0x0000,0x0020,0x0000,0x0000,0x4228,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x528a,0x0000,0x0000,0x0020,0x0000,0x18c3,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x31a6,0x0000,0x0000,0x0000,0x0000,0x4208,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x52aa,0x0000,0x0000,0x0020,0x0000,0x1082,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x39c7,0x0000,0x0000,0x0000,0x0000,0x39e7,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x52aa,0x1082,0x0000,0x0020,0x0000,0x0000,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x4208,0x0000,0x0000,0x0000,0x0000,0x31a6,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x18c3,0x0000,0x0020,0x0000,0x0000,0x528a,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x4228,0x0000,0x0000,0x0020,0x0000,0x3186,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xa534,0x9cf3,0x0000,0x0000,0x73ae,0x8430,0x0000,0x0000,0x0861,0x0000,0x5aeb,0x9cd3,0x0000,0x0000,0x8430,0xa534,0x9cf3,0x9cf3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x1082,0x9492,0xad75,0x630c,0x0000,0x3186,0x9cd3,0xad75,0x52aa,0x0000,0x4208,0x9cd3,0x3186,0x0000,0x0000,0x39e7,0xa514,0x0000,0x0000,0x73ae,0xad55,0x9cd3,0xa534,0x4208,0x0000,0x5acb,0xa534,0xa514,0x1082,0x0000,0x632c,0xa534,0xa534,0xad55,0x39e7,0x632c,0xa514,0x9cd3,0x9cf3,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xad75,0x7bcf,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x1082,0x9492,0xad75,0x630c,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0xa514,0xa534,0x2945,0x0000,0x0000,0x2965,0xa534,0x10a2,0x0000,0x632c,0xa534,0x9cf3,0x0000,0x0000,0x6b6d,0xad55,0x9cd3,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xad55,0x8410,0x0000,0x0000,0x8c51,0xad55,0x7bcf,0x2965,0xa534,0x9cd3,0xa514,0xa534,0x8410,0x1082,0x9cd3,0x39e7,0x632c,0xad55,0x9cd3,0x0000,0x0000,0x73ae,0xad55,0x9492,0x0000,0x0000,0x0020,0x0000,0x4a69,0xad55,0x9cd3,0xad55,0x632c,0x4208,0xa514,0xa534,0xad75,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xa534,0x9cf3,0x9cf3,0x10a2,0x8410,0xad55,0x8410,0x0000,0x0000,0x8c51,0xad75,0x7bcf,0x0000,0x1082,0x94b2,0x4a49,0x630c,0x8c51,0x10a2,0x9cf3,0x9cf3,0xa534,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9cf3,0xad55,0x4a49,0x0000,0x0000,0x0000,0xa514,0x39e7,0x0000,0x52aa,0x94b2,0x0020,0x9492,0x52aa,0x528a,0xa514,0xa534,0xad55,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xad55,0x9492,0x0000,0x0000,0x7bef,0xad55,0x8c51,0x0000,0x0000,0x8c71,0xa514,0x9cf3,0x9cd3,0x0841,0x8430,0xad75,0x7bcf,0x0000,0x10a2,0x9cd3,0x9cf3,0xa514,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xe73c,0xad75,0x8410,0x0000,0xad55,0xc618,0x0000,0x0000,0x0000,0x4a69,0x9cd3,0xb5b6,0x738e,0x0000,0x9492,0xd6ba,0xdefb,0xb596,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdedb,0xce79,0x9cd3,0x4a49,0x4208,0xe71c,0xc638,0x94b2,0x4a49,0x52aa,0xe71c,0x4a49,0x0000,0x4228,0x8c71,0xbdd7,0x7bef,0x0861,0x7bef,0xd69a,0xe71c,0xbdf7,0x4228,0x0000,0x8c51,0xe73c,0xb596,0x8430,0x1082,0x9492,0xe71c,0xb596,0xbdf7,0x39c7,0x9cd3,0xef7d,0xe71c,0xe73c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0xd69a,0x9cf3,0x632c,0x10a2,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdedb,0xce79,0x9cd3,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xe73c,0xb5b6,0x8c51,0x39c7,0x31a6,0x8430,0xb5b6,0x8410,0x0000,0x9492,0xe73c,0xb5b6,0x7bef,0x0000,0xa514,0xe71c,0xad75,0x73ae,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xd6ba,0xa514,0x6b4d,0x0000,0xce79,0xd6ba,0x7bef,0x31a6,0xbdf7,0xe71c,0xc638,0xd69a,0xc618,0x18c3,0xdefb,0x5acb,0x9cd3,0xe71c,0xad55,0x7bef,0x0000,0xad75,0xe71c,0xad55,0x738e,0x2104,0x0000,0x0000,0x52aa,0xc618,0xe71c,0xce79,0x632c,0x6b6d,0xe73c,0xb5b6,0xc618,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xd6ba,0xdefb,0xb596,0x0000,0xc618,0xdedb,0xa534,0x630c,0x0000,0xce79,0xd69a,0x9cf3,0x632c,0x10a2,0xdedb,0x6b6d,0x9492,0xce59,0x0000,0xb596,0xdefb,0xd6ba,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe73c,0xbdf7,0x9492,0x4a49,0x2124,0x7bef,0xbdd7,0x8c71,0x2945,0x7bcf,0xdedb,0x0000,0xd6ba,0x8410,0x7bcf,0xe73c,0xb5b6,0xc618,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdefb,0xad55,0x73ae,0x0000,0xbdd7,0xdedb,0xa534,0x738e,0x0000,0x9cd3,0xdedb,0xdefb,0xad55,0x0000,0xce79,0xd6ba,0xa514,0x5aeb,0x1082,0xad55,0xdefb,0xdedb,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x31a6,0xce79,0x528a,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0xb5b6,0xad55,0x2965,0xe71c,0x4a49,0x0000,0x9492,0xc618,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x4208,0x9cf3,0xbdf7,0x2945,0xdedb,0x528a,0xad55,0xa514,0x4208,0xdedb,0x4228,0x0000,0x9cf3,0xc638,0x0000,0xdefb,0x6b6d,0x0000,0x6b6d,0xd69a,0x0000,0x0000,0x0000,0x8c51,0xce79,0x3186,0xce59,0x630c,0x8c51,0xc638,0x1082,0x0000,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x8410,0x7bef,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x4208,0x9cf3,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x3186,0xc638,0x738e,0x8410,0xd69a,0x3186,0xdedb,0x6b6d,0x8c51,0xbdf7,0x0000,0xdefb,0x5acb,0x9cd3,0xb596,0x0841,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9492,0x6b6d,0xce59,0x0000,0xce59,0x9492,0x0000,0x0000,0x0000,0xd69a,0x5aeb,0x8430,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x4208,0xd69a,0x39e7,0xad55,0xa534,0x3186,0xe71c,0x4a49,0x0000,0x0841,0x0000,0x0020,0xd6ba,0x5aeb,0x0000,0x7bcf,0xd69a,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9492,0xc618,0x0000,0x0000,0xc638,0x8410,0x630c,0xdedb,0x0841,0xce59,0x8410,0x7bef,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc618,0x9492,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x4228,0xb596,0x94b2,0x5acb,0xdefb,0x0000,0xc638,0x9492,0x632c,0xd69a,0x4a49,0xbdf7,0x6b6d,0x7bef,0xce79,0x2124,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xad75,0x4a69,0xd69a,0x2945,0xb5b6,0xa514,0x5aeb,0xce79,0x3186,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0xce79,0x6b6d,0x73ae,0xd6ba,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xd69a,0x31a6,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x94b2,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2945,0xd6ba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0x4228,0x0000,0x94b2,0xc618,0x18c3,0xd6ba,0x6b4d,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8410,0xe71c,0xd6ba,0x4228,0x0000,0x8c71,0xe73c,0xd69a,0x3186,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9492,0xe73c,0xce59,0x18c3,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0000,0x0000,0x3186,0xd6ba,0x6b4d,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x73ae,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xd6ba,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xc618,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xce59,0x4228,0x0000,0x0000,0xa534,0xb5b6,0x0000,0x0000,0x0000,0xbdd7,0xad75,0x2945,0xe71c,0x4a49,0x0000,0x94b2,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x5acb,0x8410,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x7bcf,0x18e3,0x0000,0x5acb,0xdedb,0x2945,0x0000,0x9cf3,0xc638,0x0000,0xdefb,0x6b6d,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8430,0xce79,0x52aa,0xbdf7,0x52aa,0x8c71,0xce59,0x2945,0x0000,0x0000,0xa514,0xbdf7,0x5aeb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x9492,0x8410,0xb596,0x0861,0xd69a,0x5acb,0x8410,0xc618,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x52aa,0xbdd7,0x6b4d,0x7bcf,0xce79,0x52aa,0xd6ba,0x632c,0x8c51,0xc618,0x18c3,0xd6ba,0x52aa,0x9cf3,0xb596,0x0000,0xe71c,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x7bcf,0xbdd7,0x0000,0xce59,0x94b2,0x0000,0x0000,0x18c3,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xd6ba,0x52aa,0x9cd3,0xc618,0x5acb,0xc618,0x31a6,0xad55,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0841,0x0000,0x0000,0xd6ba,0x5acb,0x0000,0x7bcf,0xd6ba,0x5acb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8c71,0xc618,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x9cf3,0x2124,0x0000,0x18c3,0xd69a,0x5acb,0x8410,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x738e,0x18c3,0x0000,0x6b6d,0xdefb,0x0000,0xc638,0x9492,0x632c,0xd6ba,0x52aa,0xbdd7,0x6b4d,0x7bef,0xce79,0x31a6,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xbdd7,0x31a6,0x0000,0x0000,0xbdd7,0xad55,0x6b6d,0xbdf7,0x2965,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xce59,0x0000,0x0000,0x0000,0xa534,0xdefb,0xad75,0xb5b6,0x39e7,0x528a,0x9cd3,0xad75,0x7bcf,0x2124,0x0000,0x9cf3,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xc618,0xce79,0xc618,0x18c3,0xdefb,0x5acb,0xa514,0xbdf7,0x2965,0xe71c,0x528a,0x0000,0x0000,0x5acb,0xe71c,0xc618,0x528a,0x39e7,0x9492,0xb596,0x8430,0x31a6,0x0000,0x7bef,0xdedb,0x18c3,0x0000,0x0000,0x8c71,0xd69a,0x0000,0xdefb,0x738e,0x8c51,0xe71c,0xad55,0xb5b6,0x31a6,0xa534,0xbdf7,0x18c3,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bcf,0x7bef,0xdedb,0x0020,0xd6ba,0xc618,0xce79,0xc618,0x18c3,0xdefb,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd6ba,0x8410,0x7bef,0xd69a,0x0000,0xdedb,0x6b6d,0x9492,0xce59,0x18c3,0xdefb,0x5acb,0x9cd3,0xe71c,0xad55,0x8410,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c71,0x6b4d,0xdefb,0x0841,0xce79,0xce79,0x7bef,0x0000,0x18c3,0xdedb,0x6b6d,0x8c51,0xe71c,0xb596,0xe73c,0x52aa,0xa514,0xbdf7,0x18e3,0xe73c,0x4228,0xb596,0xb596,0x4228,0xe71c,0x4a49,0x0000,0x0000,0x528a,0xbdd7,0xe71c,0xc638,0x630c,0x738e,0xdedb,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd69a,0xdefb,0xad55,0x0000,0xce59,0x9492,0x6b6d,0xdedb,0x0841,0xd69a,0x8c51,0x0000,0x0000,0x18c3,0xd6ba,0xc618,0xce79,0xc638,0x0000,0x0000,0xce79,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe71c,0x39e7,0x0000,0x0000,0x31a6,0x8430,0xb596,0x9492,0x31a6,0x7bcf,0xdedb,0x0000,0xd6ba,0x8410,0x7bcf,0xe71c,0xad55,0xb5b6,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xb5b6,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x528a,0xe73c,0x2124,0x8c71,0xd6ba,0xdedb,0xa514,0x0000,0xd69a,0x7bef,0x7bef,0xd6ba,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x9492,0x0000,0x0000,0x0000,0x6b4d,0xa534,0xad55,0xad55,0x31a6,0x0000,0x52aa,0x9cd3,0x0000,0x0000,0x0000,0x632c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1082,0x94b2,0xad55,0xa534,0x7bef,0x0000,0x9cd3,0x2965,0x6b4d,0x8410,0x0000,0x9cd3,0x3186,0x0000,0x0000,0x2965,0x9cf3,0xad75,0x528a,0x0000,0x3186,0xa534,0x0000,0x0000,0x0000,0x4a69,0x94b2,0x1082,0x0000,0x0000,0x632c,0x94b2,0x0000,0x94b2,0x4208,0x52aa,0xa534,0xa534,0xad55,0x3186,0x6b4d,0x8410,0x0000,0x9cd3,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x9cd3,0x52aa,0x4a69,0x9492,0x0000,0x8c71,0xa534,0xa534,0x7bef,0x0000,0x9cd3,0x2965,0x6b4d,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x9cf3,0x0000,0x9492,0x528a,0x528a,0x9492,0x0000,0x94b2,0x4208,0x5aeb,0x8c51,0x0000,0x9cd3,0x2965,0x630c,0xad55,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x94b2,0x630c,0x39e7,0x94b2,0x0000,0x8430,0xad75,0x7bef,0x0000,0x0000,0x94b2,0x4208,0x52aa,0xa534,0xa534,0xa514,0x2945,0x6b4d,0x8410,0x0000,0x9cd3,0x18c3,0x73ae,0x73ae,0x18c3,0x9cd3,0x3186,0x0000,0x0000,0x528a,0xb596,0x9cf3,0xad75,0x5aeb,0x39e7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c71,0xad55,0x9cf3,0xa514,0x0000,0x8c51,0x5aeb,0x4208,0x94b2,0x0000,0x9492,0x5acb,0x0000,0x0000,0x0000,0x8c71,0xa534,0xa534,0x8410,0x0000,0x0000,0x8c51,0x632c,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4208,0xa514,0x2104,0x0000,0x0000,0x0000,0x0000,0xa534,0x3186,0x0000,0x528a,0x94b2,0x0000,0x9492,0x528a,0x4228,0xa534,0xa534,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8430,0x8410,0x0000,0x0000,0x0000,0x8430,0x6b4d,0x2965,0x9cd3,0x0000,0x8c51,0xa534,0xa514,0x9cd3,0x0000,0x9492,0x528a,0x528a,0x9492,0x0000,0x0000,0x8430,0x738e,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x5acb,0x5acb,0x4a69,0x39e7,0x4208,0x4208,0x52aa,0x5acb,0x4a69,0x4228,0x5acb,0x5acb,0x5acb,0x4a69,0x4249,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x3186,0x0000,0x0020,0x0000,0x0000,0x2124,0x4228,0x4a49,0x52aa,0x4208,0x52aa,0x4a69,0x4a49,0x52aa,0x4208,0x52aa,0x5acb,0x5acb,0x52aa,0x4208,0x39e7,0x52aa,0x5aeb,0x528a,0x4208,0x52cb,0x5aeb,0x5acb,0x528a,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x4208,0x528a,0x4a69,0x39e7,0x4208,0x4228,0x52cb,0x4a69,0x4a49,0x52cb,0x4228,0x52cb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aeb,0x31a6,0x0000,0x0020,0x0020,0x0000,0x31a6,0x52aa,0x4228,0x5acb,0x4228,0x4208,0x4208,0x4a49,0x52aa,0x4208,0x52aa,0x4a69,0x4228,0x5acb,0x5acb,0x5acb,0x5aaa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x52aa,0x0000,0x0000,0x0861,0x0000,0x0000,0x52aa,0x4228,0x528a,0x528a,0x4228,0x5acb,0x4208,0x528a,0x4a69,0x4228,0x52aa,0x4208,0x52aa,0x4a69,0x39e7,0x4228,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x39e7,0x0000,0x0000,0x0841,0x0000,0x2965,0x52aa,0x4208,0x5acb,0x4228,0x39e7,0x4a49,0x5acb,0x52aa,0x4208,0x528a,0x4a69,0x39e7,0x4208,0x4208,0x52ca,0x4a69,0x4a28,0x52aa,0x4208,0x52aa,0x4a49,0x4a49,0x52aa,0x4208,0x0000,0x0000,0x0861,0x0000,0x0000,0x39e7,0x4208,0x4a69,0x528a,0x4208,0x52aa,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aeb,0x4208,0x0000,0x0000,0x0861,0x0000,0x0000,0x4228,0x4208,0x52aa,0x4228,0x4a69,0x528a,0x4208,0x5acb,0x4228,0x4a69,0x5acb,0x5acb,0x52aa,0x4228,0x4208,0x4208,0x4228,0x5acb,0x5acb,0x4228,0x4a69,0x5aeb,0x5acb,0x5acb,0x18c3,0x0000,0x0861,0x0000,0x0000,0x4a69,0x5acb,0x5acb,0x5acb,0x52aa,0x4208,0x528a,0x5acb,0x528a,0x4208,0x5acb,0x4228,0x528a,0x528a,0x39e7,0x4208,0x39e7,0x528a,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x5acb,0x4228,0x0000,0x0000,0x0861,0x0000,0x1082,0x5aeb,0x5acb,0x5acb,0x4228,0x4a69,0x52aa,0x4208,0x52aa,0x4a49,0x4208,0x4208,0x4228,0x5acb,0x4228,0x528a,0x528a,0x4228,0x5acb,0x5acb,0x4249,0x4a69,0x5acb,0x5acb,0x5acb,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xe73c,0x8430,0x0000,0x0000,0x0000,0x0000,0xb596,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdeba,0xdedb,0xdf1c,0xce79,0x2945,0x0000,0x0000,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdeba,0xdedb,0xdedb,0xdebb,0xdedb,0xdeba,0xdedb,0xdedb,0xdebb,0xdedb,0xdebb,0xdedb,0xdedb,0xdeba,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0xad55,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd69a,0x39e7,0x0000,0x0000,0x0000,0x4a69,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xe73c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0x4a69,0x0000,0x0000,0x0000,0x39e7,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0x5aeb,0x0000,0x0000,0x0000,0x2945,0xce79,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe73c,0xb596,0x0000,0x0000,0x0000,0x0000,0x8430,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdcd3,0xd32d,0xdeba,0xd208,0xde38,0xd4b2,0xd3af,0xde9a,0xd1c8,0xde38,0xdefb,0x9cd3,0x0000,0x18c3,0xbdf7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5c,0xd34d,0xd451,0xdf5d,0xde9a,0xd26a,0xd000,0xdd14,0xdf5d,0xdeba,0xce79,0x4a69,0x0000,0x73ae,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xd1e8,0xd000,0xdd34,0xddf7,0xd000,0xd1c8,0xd000,0xdd96,0xddb6,0xd083,0xd0e5,0xd000,0xddd7,0xdd55,0xd000,0xd1c8,0xdedb,0xdefb,0xdedb,0xa514,0x0000,0x0000,0xb5b6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xdd35,0xd229,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdedb,0xd69a,0x5aeb,0x0000,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd249,0xdd55,0xdd55,0xd249,0xdf1c,0xdedb,0xdedb,0xdedb,0xad75,0x0000,0x0000,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ab,0xdcd3,0xdf5d,0xdedb,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdefb,0xdedb,0xd6ba,0x6b4d,0x0000,0x5aeb,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd1c8,0xde59,0xdf1c,0xdedb,0xb5b6,0x0000,0x0000,0xa514,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd451,0xd32d,0xdf1c,0xdedb,0xd6ba,0x73ae,0x0000,0x4a69,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd126,0xddf7,0xdf3c,0xdedb,0xbdf7,0x18c3,0x0000,0x9cd3,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xdcb2,0xde38,0xd208,0xde9a,0xdedb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd430,0xd187,0xdeba,0xd000,0xddf7,0xd3f0,0xd28a,0xde9a,0xd000,0xddf7,0xe75d,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd3cf,0xd4f3,0xd472,0xd451,0xdeba,0xd001,0xd4f4,0xd451,0xd410,0xdf1c,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd2cb,0xddb6,0xdd75,0xde39,0xde9a,0xd4d3,0xd000,0xd492,0xdeba,0xd514,0xd0a4,0xddd7,0xd575,0xdeba,0xd492,0xd187,0xddd7,0xd2cb,0xddf7,0xe75d,0xb596,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd4b2,0xd36e,0xddf7,0xdeba,0xd36e,0xd28a,0xd24a,0xd410,0xdefb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdeba,0xd2cb,0xd4d3,0xde79,0xde79,0xd4d3,0xd2cb,0xdeba,0xdefb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddf7,0xd3af,0xd451,0xdf5d,0xdedb,0xd3af,0xd26a,0xd26a,0xd3af,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde9a,0xd000,0xd187,0xd596,0xdf3c,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd431,0xd431,0xde18,0xdedb,0xdedb,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xdd96,0xd38e,0xd555,0xdf3c,0xce79,0x18c3,0x0000,0xa534,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd229,0xd3f0,0xddf7,0xd000,0xde79,0xe75d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddb6,0xd4f4,0xdeba,0xd492,0xde79,0xdd96,0xd534,0xdeba,0xd492,0xde79,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd000,0xddd7,0xd4d3,0xd1e8,0xdeba,0xd0e5,0xd3cf,0xd492,0xd555,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd410,0xd472,0xdeba,0xdf1c,0xdefb,0xde9a,0xd001,0xde38,0xdf5d,0xd4f4,0xd002,0xd4d3,0xdedb,0xdf3c,0xd492,0xd0e5,0xd4d3,0xd410,0xde38,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd4d3,0xd410,0xdd96,0xdf3c,0xdeba,0xd4d3,0xd451,0xd451,0xd514,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd410,0xd471,0xdeba,0xdefb,0xdefb,0xdeba,0xd471,0xd410,0xde18,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xddd7,0xd410,0xd4b2,0xdedb,0xd4f4,0xd451,0xd451,0xd4f3,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd3af,0xd000,0xd3af,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd1a7,0xd472,0xdf5d,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd1e8,0xd431,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd514,0xdd96,0xde79,0xd492,0xdeba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdedb,0xdf1c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd083,0xddb7,0xd4d3,0xd249,0xdeba,0xd125,0xd126,0xd4b2,0xde79,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xd30c,0xd4d3,0xde59,0xdefb,0xde59,0xd001,0xddf8,0xdf3c,0xd514,0xd000,0xd2ec,0xde7a,0xdf3c,0xd4b2,0xd000,0xd30c,0xdefb,0xdefb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd34d,0xd492,0xde7a,0xdefb,0xdedb,0xde18,0xddf7,0xddd7,0xde38,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddb6,0xd2ab,0xddd7,0xdeba,0xdedb,0xdedb,0xdeba,0xddd7,0xd2ab,0xd5b6,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd4d3,0xd30c,0xdeba,0xde38,0xddf7,0xddf7,0xde18,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd1e8,0xd000,0xd534,0xde9a,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd209,0xd472,0xdf3c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd229,0xd471,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd229,0xdd76,0xd4b3,0xd32d,0xdeba,0xd002,0xde39,0xd451,0xd28a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde79,0xdedb,0xd28a,0xd492,0xdf3c,0xde59,0xd000,0xddf7,0xdf3c,0xd4f3,0xd1a7,0xdeba,0xde79,0xdefb,0xd472,0xd26a,0xdf3c,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5c,0xd3cf,0xd34d,0xdedb,0xdeba,0xd229,0xd000,0xd000,0xd32d,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd0a4,0xddb6,0xdedb,0xdedb,0xddb6,0xd0a4,0xde7a,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd3cf,0xd34d,0xdf3c,0xdedb,0xd2ab,0xd000,0xd000,0xd2ab,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde38,0xd002,0xd000,0xd534,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2ec,0xd471,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd2cb,0xd4b3,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ec,0xd3ef,0xdf1c,0xde9a,0xd000,0xde18,0xd431,0xd2ab,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd000,0xd000,0xdd96,0xdefb,0xdefb,0xde39,0xd000,0xddf7,0xdf5c,0xd514,0xd000,0xd002,0xd000,0xddd7,0xd4b3,0xd208,0xdefb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd4b3,0xd1e8,0xdedb,0xdeba,0xde9a,0xde9a,0xdeba,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd1a7,0xd555,0xd555,0xd1a7,0xdeba,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd26a,0xd451,0xdefb,0xdedb,0xdedb,0xde9a,0xde9a,0xde9a,0xde9a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd576,0xd000,0xd000,0xddd7,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd3cf,0xd30c,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd0a4,0xdd76,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe73c,0xe679,0xe69a,0xe73c,0xe71c,0xe639,0xe6fb,0xe6ba,0xde59,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xddd7,0xddb7,0xde9a,0xdedb,0xdedb,0xdeba,0xddf7,0xd69a,0xdf1c,0xe6db,0xe638,0xe638,0xe618,0xe6fb,0xe6ba,0xe659,0xe73c,0xe71c,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe73c,0xe6bb,0xe639,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe73c,0xe659,0xe6db,0xe6db,0xe659,0xe73c,0xe71c,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe659,0xe6ba,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xddb7,0xddd7,0xdeba,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xde18,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xddd7,0xde9a,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xa534,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8430,0x8c51,0x8430,0x8430,0x8430,0xce79,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdefb,0xce59,0x8430,0x8430,0x8c71,0x8c71,0x8410,0x7bcf,0x7c30,0x7bcf,0x7c10,0xa575,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xdefb,0xdedb,0xdefb,0xdefb,0xad55,0x8410,0x8c92,0x8c92,0x8c92,0x8c51,0x8c71,0x8c71,0x8430,0x8410,0xc638,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x8c51,0x8430,0x8430,0x8c71,0x8c92,0x8430,0x8430,0x8430,0x8410,0x9cf3,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdefb,0xb596,0x7bcf,0x7bcf,0x7bcf,0x7c10,0x8430,0x8c71,0x8c92,0x8430,0x8410,0xc618,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xd6ba,0x8c71,0x8471,0x8c71,0x8c30,0x8430,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x9cd3,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe71c,0xc618,0x9cf3,0xa534,0xa534,0xa514,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0x630c,0x0861,0x6b6d,0x6b4d,0x6b6d,0x0861,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xce79,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdefb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0861,0x6b6d,0x6b4d,0x6b6d,0x0861,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xbdd7,0xa534,0xa534,0xa534,0xa534,0xa534,0xa514,0xb5b6,0xdefb,0xdedb,0xe71c,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xd69a,0xad55,0xa534,0xa534,0xa534,0xa514,0xad55,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0xbdd7,0xa514,0xa534,0xa534,0xad55,0xa534,0xa534,0xa514,0xad55,0xd6ba,0xe73c,0x8410,0x0000,0x6b6d,0x6b4d,0x6b6d,0x2945,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd69a,0xa534,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xb5b6,0xbdd7,0xdefb,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0x6b4d,0x6b6d,0x31a6,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xbdf7,0xb5b6,0xdedb,0xdedb,0xdedb,0xdefb,0xc638,0xad75,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xb596,0xa514,0xa534,0xad55,0xa534,0xa514,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0xa514,0xa534,0xa534,0xa514,0xbdd7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xb596,0xa534,0xa534,0xa534,0xa534,0xa514,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xd69a,0x8430,0x1082,0x31a6,0x31a6,0x10a2,0x9cd3,0xd6ba,0xdedb,0xdedb,0xe71c,0x5aeb,0x8430,0xef7d,0xe71c,0xe73c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0xce79,0xdedb,0xdedb,0xdefb,0xc638,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe73c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x632c,0x0000,0x39e7,0x31a6,0x31a6,0x31a6,0x10a2,0x7bef,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0x2945,0x31a6,0x31a6,0x2965,0x4228,0xbdf7,0xd6ba,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x8c51,0x0841,0x31a6,0x3186,0x0000,0x18c3,0x31a6,0x2945,0x4a49,0xd69a,0xe73c,0x8410,0x632c,0xef5d,0xe71c,0xef5d,0x8430,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x31a6,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xce79,0x630c,0x8c51,0xe73c,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xdefb,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x528a,0xe71c,0xdedb,0xdedb,0xe71c,0x9cd3,0x2104,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x738e,0x2104,0x18c3,0x0000,0x3186,0x0841,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xd6ba,0xad55,0x2104,0x3186,0x31a6,0x18c3,0x738e,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2124,0x0000,0x31a6,0x31a6,0x3186,0x2124,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x8c71,0xe73c,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x5aeb,0x8430,0xef7d,0xe71c,0xe73c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe73c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x39c7,0x31a6,0x31a6,0x0861,0xa514,0xe71c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x0000,0xb596,0xe71c,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x632c,0xef5d,0xe71c,0xef7d,0x7bef,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xd69a,0x6b6d,0x8c51,0xd6ba,0x3186,0xb5b6,0xd6ba,0xdedb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x3186,0xdefb,0xe71c,0xef5d,0xa534,0x39c7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c71,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2124,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2945,0xb596,0xef5d,0xe71c,0xe71c,0xef5d,0x4208,0x8430,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9cd3,0xc618,0x738e,0xe71c,0xe73c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x6b6d,0x39c7,0x7bef,0x7bcf,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xce79,0xe71c,0xe71c,0xe71c,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x39c7,0x7bef,0x7bcf,0x7bef,0x39c7,0x6b6d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x6b4d,0x5aeb,0xad75,0xa534,0xa534,0xa514,0xc618,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0x8c51,0xb596,0xad75,0xa534,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x5aeb,0x6b4d,0x632c,0x6b4d,0x7bef,0xa534,0xce79,0xdedb,0xdefb,0xce59,0x1082,0x94b2,0xad75,0xad75,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x18e3,0x7bef,0x7bcf,0x73ae,0x9cd3,0xad75,0xad75,0xad55,0x1082,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x8c71,0x7bef,0xa534,0xd6ba,0xdefb,0xdedb,0xdedb,0xd69a,0x2104,0x8c71,0xb596,0xad75,0xa534,0x7bcf,0x7bcf,0x7bef,0x528a,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xe71c,0xad55,0x2945,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0x4a49,0x6b6d,0x6b4d,0x6b4d,0x632c,0x94b2,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4208,0x94b2,0xd69a,0x7bef,0x9cf3,0xdefb,0x738e,0x6b4d,0xe71c,0xdedb,0xe71c,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xe71c,0xb596,0x0000,0xdedb,0xad75,0x8c51,0xb5b6,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x5aeb,0x8c51,0xf79e,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xef5d,0xe73c,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x738e,0x7bef,0x8410,0x5acb,0x0000,0xdefb,0xdefb,0xdedb,0xdefb,0xce59,0x0000,0xc638,0xe73c,0xe73c,0xce59,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xef5d,0xe71c,0xdefb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0xa514,0x2124,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x10a2,0xbdf7,0xef5d,0xe73c,0xd69a,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x5acb,0xe73c,0xdefb,0xdefb,0xef5d,0x9cf3,0x2945,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe73c,0xad75,0x2965,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c51,0x4228,0xe73c,0xdefb,0xdefb,0xe73c,0xad75,0x0020,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0x5acb,0x7bef,0x7bcf,0x7bcf,0x73ae,0xce79,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x7bef,0x8c71,0xc638,0xb5b6,0x0000,0xad55,0x8430,0x9492,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdf7,0x5aeb,0xbdd7,0x738e,0x2965,0x7bcf,0xb5b6,0x5aeb,0xc638,0xdefb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x6b4d,0xc618,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xc638,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xef5d,0xc638,0x5aeb,0xb596,0xd69a,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xe71c,0xe71c,0xc618,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x2104,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe73c,0xdefb,0xdedb,0x2965,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xbdd7,0xe71c,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x9cd3,0x73ae,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0x94b2,0x738e,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xc618,0xbdf7,0x9492,0x18c3,0xbdd7,0xbdd7,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0xa534,0x6b6d,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0x9cf3,0x6b4d,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x2104,0xb596,0xef5d,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x10a2,0x2945,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x2104,0xbdd7,0xef7d,0xad75,0x3186,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x7bcf,0x0000,0x0861,0x1082,0x1082,0x1082,0x0000,0x73ae,0xe71c,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad55,0xdedb,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x2945,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x2104,0xb5b6,0xdefb,0xdefb,0xce59,0x0020,0xbdd7,0xd6ba,0xdedb,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa514,0xdedb,0xd6ba,0xd69a,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x4a49,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x18c3,0xb596,0xdedb,0xd6ba,0xc618,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xe71c,0xb5b6,0x0000,0x1082,0x1082,0x0000,0x8430,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x18e3,0x2945,0x1082,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x1082,0x1082,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xef7d,0xad55,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xe71c,0xe71c,0x52aa,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xe71c,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0841,0x2104,0x2104,0x18c3,0x0000,0xb5b6,0xef5d,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x2104,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0xe73c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x2104,0x18e3,0x0000,0xad55,0xef5d,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x1082,0x0000,0x2104,0x2104,0x18c3,0x0000,0x0000,0x0000,0x0000,0x4228,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe73c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x52aa,0xe71c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xce79,0xbdf7,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xe73c,0xa534,0x39e7,0x0000,0x0861,0x52aa,0xc638,0xef5d,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe73c,0xdefb,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xbdf7,0xce79,0xdedb,0x6b6d,0x2124,0x0000,0x3186,0x8c51,0xe73c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe73c,0xce79,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xe71c,0xad75,0x4208,0x0000,0x0000,0x4a69,0xbdf7,0xef5d,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xdefb,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xce79,0xdefb,0x73ae,0x2945,0x0000,0x2965,0x8410,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xe71c,0xb5b6,0x4228,0x0000,0x0000,0x4228,0xb5b6,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xc638,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xc618,0xc618,0xbdf7,0xce59,0xe71c,0x8410,0x2965,0x0000,0x2945,0x73ae,0xdefb,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xbdf7,0x4a69,0x0000,0x0000,0x4208,0xad75,0xef5d,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0x8c51,0x3186,0x0000,0x2124,0x6b6d,0xd6ba,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xc638,0x52aa,0x0861,0x0000,0x39e7,0xa534,0xef5d,0xe71c,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0x9492,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x2945,0x8c51,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x8430,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x4a49,0x0000,0x0861,0x0000,0x0000,0x632c,0x9492,0x9492,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x8430,0x0000,0x0000,0x1082,0x0000,0x0000,0x8c51,0x8430,0x8c71,0x9492,0x8c71,0x8430,0x9492,0x9492,0x8c51,0x8430,0x8430,0x9492,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x52aa,0x0000,0x0841,0x0020,0x0000,0x5acb,0x8c71,0x8c51,0x9492,0x8430,0x8430,0x8c51,0x9492,0x9492,0x8430,0x8430,0x8430,0x8c51,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x8c51,0x0000,0x0000,0x1082,0x0000,0x0000,0x8410,0x9492,0x9492,0x8c71,0x8430,0x8430,0x9492,0x9492,0x8c71,0x8430,0x8430,0x9492,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x5aeb,0x0000,0x0841,0x0841,0x0000,0x52aa,0x8c71,0x8430,0x9492,0x8c51,0x8430,0x8430,0x8c51,0x9492,0x8430,0x8430,0x8c51,0x9492,0x9492,0x9cd3,0x9492,0x94b2,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x8c71,0x0000,0x0000,0x0861,0x0000,0x0000,0x7bef,0x9492,0x9492,0x8c71,0x8430,0x9492,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x9492,0x9492,0x9492,0x8c71,0x8430,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x6b4d,0x0000,0x0020,0x0841,0x0000,0x4a69,0x9492,0x9492,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x8430,0x8430,0x8430,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x2104,0x0000,0x1082,0x0000,0x0000,0x7bcf,0x9492,0x9492,0x8c71,0x8430,0x8430,0x8430,0x8c71,0x8c71,0x8430,0x8430,0x8430,0x8c71,0x8c71,0x8430,0x9492,0x8430,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x738e,0x0000,0x0000,0x1082,0x0000,0x31a6,0x8c71,0x8430,0x9492,0x9492,0x8c51,0x8c51,0x9492,0x9492,0x8c51,0x8430,0x8c51,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x94b2,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2104,0x632c,0x632c,0x0000,0x3186,0x632c,0x5aeb,0x632c,0x0000,0x31a6,0x632c,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x52aa,0x39c7,0x0000,0x0000,0x0000,0x52aa,0x3186,0x0000,0x0000,0x0000,0x528a,0x6b4d,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x73ae,0x5acb,0x632c,0x18c3,0x0000,0x0000,0x630c,0x0000,0x0000,0x3186,0x632c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x6b4d,0x6b4d,0x630c,0x52aa,0x0000,0x528a,0x6b4d,0x31a6,0x0000,0x0000,0x5aeb,0x5aeb,0x632c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x39c7,0x738e,0x632c,0x0000,0x0000,0x2104,0x630c,0x630c,0x0000,0x0000,0x2945,0x632c,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0020,0x0000,0x4208,0x6b4d,0x5acb,0x0000,0x52aa,0x630c,0x630c,0x52aa,0x0000,0x528a,0x6b4d,0x31a6,0x0000,0x0000,0x0000,0x528a,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x630c,0x0000,0x0000,0x18c3,0x52aa,0x0000,0x528a,0x18c3,0x0861,0x630c,0x630c,0x0000,0x0000,0x0000,0x0000,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0020,0x0000,0x4208,0x528a,0x0000,0x0000,0x0000,0x39e7,0x4a69,0x0000,0x0000,0x4a69,0x6b4d,0x39e7,0x0000,0x0000,0x528a,0x630c,0x632c,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0x6b6d,0x6b4d,0x0000,0x0000,0x0000,0x5aeb,0x630c,0x6b4d,0x2124,0x0000,0x630c,0x630c,0x6b4d,0x18c3,0x18c3,0x528a,0x0000,0x52aa,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x738e,0x5aeb,0x630c,0x0000,0x0000,0x3186,0x52aa,0x0000,0x0000,0x4a49,0x6b4d,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x73ae,0xdedb,0xdedb,0x4a69,0x8c51,0xe71c,0xe71c,0xd6ba,0x39c7,0xa534,0xef5d,0xbdf7,0x39c7,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2104,0xbdd7,0xa534,0x1082,0x0000,0x2965,0xc618,0x9cf3,0x0000,0x0020,0x39c7,0xbdf7,0xe71c,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdefb,0xe71c,0xdefb,0x6b6d,0x0000,0x7bcf,0xd69a,0x528a,0x0000,0x9cf3,0xef5d,0xc638,0x4228,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe71c,0xe71c,0xbdd7,0x0841,0xd69a,0xe73c,0x9cf3,0x0000,0x2965,0xce59,0xe71c,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xe73c,0xd6ba,0x6b4d,0x0000,0x8430,0xef5d,0xd69a,0x5aeb,0x0000,0x9492,0xef5d,0xce59,0x528a,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0xdefb,0xc618,0x0020,0xbdd7,0xe71c,0xe71c,0xbdd7,0x0841,0xd69a,0xe71c,0x9cf3,0x10a2,0x0000,0x0000,0xce59,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x528a,0xd69a,0x7bcf,0x0000,0x7bcf,0xdedb,0x0000,0xd69a,0x7bef,0x73ae,0xef5d,0xd69a,0x5aeb,0x0861,0x0000,0x6b4d,0xdefb,0x52aa,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xc618,0x2965,0x0000,0x0861,0xa534,0xbdd7,0x18e3,0x0000,0xce59,0xe73c,0xa534,0x0861,0x18c3,0xd69a,0xdedb,0xdedb,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xe71c,0xdefb,0x7bef,0x0000,0x632c,0xe73c,0xd6ba,0xdefb,0x7bef,0x632c,0xe73c,0xd69a,0xdefb,0x6b6d,0x8410,0xd69a,0x0000,0xdedb,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe71c,0xe71c,0xd69a,0x39e7,0x0000,0x9cf3,0xc618,0x2965,0x0000,0xc618,0xe73c,0xad75,0x2124,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x0000,0x18e3,0x0861,0x0000,0x7bef,0xd69a,0x2945,0x0000,0xad75,0xad75,0x4a49,0xd6ba,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce79,0x6b4d,0x8c71,0xc618,0x18c3,0xd69a,0x5acb,0x9cd3,0xb596,0x2965,0xdedb,0x5acb,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xdedb,0x4a69,0x0000,0x9492,0xbdf7,0x18e3,0xd69a,0x528a,0x9cd3,0xbdd7,0x39c7,0xd6ba,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd69a,0x6b6d,0x8c71,0xc618,0x0000,0x0000,0xc638,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0861,0xce59,0x7bcf,0x7bcf,0xce59,0x2104,0xce79,0x632c,0x8c51,0xc618,0x2945,0xd69a,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc618,0x0000,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xd69a,0x2945,0xc618,0x8c51,0x6b4d,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce59,0x0861,0xd69a,0x7bcf,0x0000,0x5aeb,0xdefb,0xdefb,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0x9cd3,0x5aeb,0xd6ba,0x18c3,0xbdf7,0x8c71,0x6b4d,0xce79,0x0020,0xce59,0x7bef,0x7bef,0xc638,0x0841,0xd69a,0x7bcf,0x0000,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x3186,0xb5b6,0x9cd3,0x52aa,0xd6ba,0x3186,0x0861,0x0000,0x7bcf,0xd69a,0x18e3,0x10a2,0x0000,0x8c51,0xce59,0x0000,0xd6ba,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xce79,0x10a2,0x0000,0xb5b6,0x9cd3,0x52aa,0xd69a,0x18c3,0xc618,0x8c71,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x8430,0xc638,0x0000,0x0000,0x0000,0x73ae,0xd69a,0x0861,0x0000,0xb596,0xad55,0x39e7,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x73ae,0x0000,0x39c7,0x3186,0xdedb,0x528a,0x9cd3,0xbdd7,0x0000,0x52aa,0xc618,0x6b6d,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x4208,0x0000,0x9492,0xe71c,0xce59,0xdefb,0x528a,0x9cd3,0xb5b6,0x2945,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xad75,0x0000,0x18c3,0xd69a,0x632c,0x8c51,0xc638,0x0000,0x0000,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xdefb,0xce59,0x6b4d,0x0000,0x8430,0xce59,0x0000,0xd69a,0x6b4d,0x8c51,0xc618,0x0861,0xd6ba,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xad55,0xa534,0x0000,0x0000,0x0000,0xad75,0xad75,0x0000,0x18c3,0xce59,0xdedb,0x9cd3,0x10a2,0x2945,0xc618,0xe71c,0x9cd3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdedb,0x2945,0x31a6,0x0000,0x738e,0xdefb,0xce59,0xdefb,0x738e,0x738e,0xe71c,0xc638,0x5aeb,0x0000,0x8410,0xdedb,0xd69a,0x52aa,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xa514,0x0000,0x4228,0x0000,0xc638,0x8c51,0x632c,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x0020,0xce59,0xdedb,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xd69a,0x8c51,0x1082,0x630c,0xdefb,0xce79,0x5acb,0x0000,0x738e,0xdefb,0xce59,0x4a49,0x0000,0x8410,0xe71c,0xce59,0x5aeb,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8430,0xce59,0x0000,0x0000,0xb596,0xdedb,0xce79,0xd69a,0x18c3,0xb5b6,0xdefb,0xa534,0x2965,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x8430,0xad75,0x528a,0x0000,0x6b6d,0xd69a,0x0000,0x0000,0xb596,0xad55,0x4208,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b4d,0x5acb,0x94b2,0x2124,0xdefb,0x4228,0x9cd3,0xc638,0x0000,0x0000,0x632c,0xad55,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x9492,0xd69a,0x8c71,0xdedb,0x528a,0x9cd3,0xb5b6,0x2965,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xad75,0xad75,0x0000,0x18c3,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdedb,0x8c71,0x9cf3,0x4a49,0x8410,0xce59,0x0841,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xdefb,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0x9cd3,0xa534,0x10a2,0x0000,0xb596,0xb596,0x0000,0x18c3,0xce79,0xad55,0x9492,0x8430,0x0000,0x738e,0xce59,0xce59,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xdefb,0x0000,0x9492,0x632c,0x6b4d,0xdedb,0x8c51,0xd6ba,0x73ae,0x73ae,0xd6ba,0x8c51,0x9cf3,0x4a49,0x39e7,0x9cf3,0xdedb,0xad75,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x9cf3,0x10a2,0xa534,0x0000,0xce59,0x8c51,0x5aeb,0xdedb,0x0841,0xce59,0x6b6d,0x73ae,0xd69a,0x0000,0xce79,0xad55,0x4208,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x9cf3,0x39c7,0x0000,0x6b4d,0xdedb,0x8c51,0x10a2,0x0000,0x7bcf,0xdedb,0x8410,0x0000,0x0000,0x8430,0xd6ba,0x8c51,0x9cf3,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0000,0x0000,0xb5b6,0xbdf7,0x9cf3,0xd69a,0x18c3,0xbdf7,0xb596,0x8430,0x9cf3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x8430,0x7bcf,0xb596,0x4a49,0x4a49,0xad75,0xdedb,0x8c51,0x0000,0xb596,0xad75,0x4208,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0x9492,0x9cf3,0x9cd3,0x1082,0xa514,0x8c71,0x9cf3,0x8430,0x1082,0x8430,0x73ae,0xa534,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x4228,0x0000,0x9cd3,0xc618,0x0000,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xce59,0xce59,0x6b4d,0x10a2,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x0000,0xce59,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xd6ba,0x0000,0xd6ba,0x8430,0x7bef,0xce79,0x0841,0xd6ba,0x6b4d,0x8c51,0xd6ba,0x8410,0xad55,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x7bef,0x8c71,0xad55,0x10a2,0x0000,0xb5b6,0xb5b6,0x0000,0x18c3,0xd6ba,0x5acb,0x8c71,0xd69a,0x0000,0x6b4d,0xce79,0xd69a,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xad55,0x8430,0xb596,0x6b4d,0x738e,0xd6ba,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0000,0xdefb,0x7bef,0x2124,0x9cf3,0xdefb,0xbdd7,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cf3,0x9492,0xad75,0x18c3,0x8c71,0x9cd3,0x9492,0x9cf3,0x0000,0xce59,0xb596,0x9492,0x94b2,0x1082,0xd69a,0xa514,0x7bcf,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x2965,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0x8430,0x4228,0x738e,0xdefb,0x7bcf,0x8430,0x31a6,0x8430,0xce79,0x0000,0xdefb,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd69a,0x0000,0x0000,0xc618,0x9cd3,0x4228,0xdedb,0x18c3,0xc618,0xb596,0x8430,0xad55,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xdedb,0xc638,0x0000,0x0000,0x9492,0xd69a,0xc638,0xce79,0x39e7,0x9cd3,0x9cd3,0x39c7,0xc618,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0x94b2,0x0000,0x0000,0x0000,0xb5b6,0x8430,0x0000,0x4208,0xce59,0xdedb,0x6b6d,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xc618,0x39e7,0x0000,0x8430,0xad75,0x10a2,0xc618,0x4a69,0x8c51,0xa534,0x2945,0xc618,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xce59,0xce59,0xb5b6,0x0000,0xbdf7,0x5aeb,0x7bef,0xb596,0x0000,0x0000,0xb596,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xbdf7,0x0020,0xb5b6,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x5aeb,0x738e,0xd69a,0xc638,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xdedb,0xa514,0x0000,0x0000,0x0000,0x9cf3,0x9cf3,0x0000,0x10a2,0xbdf7,0x5aeb,0x7bef,0xad75,0x18c3,0xc638,0xd69a,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0xce59,0x52aa,0x0000,0x6b6d,0xbdf7,0x0020,0xb5b6,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x5aeb,0x7bef,0xd6ba,0xbdd7,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8430,0xb5b6,0x0000,0x0000,0x0000,0x94b2,0xad75,0x0000,0x0000,0xad75,0xd6ba,0x94b2,0x0000,0x18c3,0xb5b6,0xce79,0xd6ba,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xc618,0x39e7,0x0000,0x0000,0x5acb,0xce59,0xce79,0xd6ba,0x7bcf,0x52aa,0xce59,0xce79,0xd6ba,0x6b6d,0x6b6d,0xb5b6,0x0020,0xbdf7,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xb5b6,0x0000,0x0000,0xad55,0x8c51,0x4a69,0xc618,0x18c3,0xa514,0xd6ba,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0x6b4d,0x632c,0x0000,0x0000,0x4228,0x6b4d,0x6b4d,0x6b4d,0x18e3,0x4a69,0x4a69,0x18e3,0x630c,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x738e,0x5acb,0x0000,0x0000,0x5aeb,0x4228,0x0000,0x2104,0x630c,0x18e3,0x4a69,0x4a69,0x18e3,0x632c,0x6b4d,0x6b6d,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x6b4d,0x632c,0x1082,0x0000,0x4228,0x6b6d,0x630c,0x6b4d,0x2124,0x4208,0x6b4d,0x632c,0x632c,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0x6b4d,0x6b4d,0x5aeb,0x0000,0x0000,0x5acb,0x4a69,0x0000,0x10a2,0x5aeb,0x6b6d,0x4208,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x6b4d,0x2945,0x0000,0x0000,0x2104,0x6b4d,0x10a2,0x0000,0x4228,0x6b6d,0x630c,0x6b4d,0x3186,0x0000,0x31a6,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x5acb,0x0000,0x0000,0x0000,0x528a,0x528a,0x0000,0x0000,0x0000,0x528a,0x738e,0x52aa,0x0841,0x630c,0x2124,0x4228,0x528a,0x10a2,0x630c,0x6b6d,0x39c7,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x3186,0x630c,0x10a2,0x0000,0x0020,0x0000,0x10a2,0x6b4d,0x2104,0x0000,0x0000,0x2104,0x6b4d,0x10a2,0x0000,0x4208,0x6b4d,0x632c,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x4a49,0x0000,0x0000,0x0000,0x5acb,0x6b4d,0x632c,0x630c,0x0861,0x0000,0x4a69,0x6b6d,0x5aeb,0x0000,0x630c,0x632c,0x6b4d,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630c,0x2104,0x0000,0x0000,0x2965,0x632c,0x6b4d,0x6b6d,0x39e7,0x2965,0x6b4d,0x630c,0x6b6d,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xce79,0x4228,0x0000,0x9cf3,0xe73c,0xd6ba,0xdedb,0x39c7,0xad75,0xad75,0x4208,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xb596,0xe73c,0xb5b6,0x0000,0x10a2,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0x4208,0xad75,0xad75,0x39e7,0xe71c,0xdedb,0xdefb,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xef5d,0xd69a,0x52aa,0x0000,0x8c51,0xe71c,0xdefb,0xdefb,0x4a69,0x94b2,0xef5d,0xdefb,0xe71c,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xdefb,0xdedb,0xbdf7,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xd6ba,0xe73c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x52aa,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x8c51,0xe71c,0xdefb,0xdefb,0x630c,0x0000,0x8410,0xd69a,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x0000,0x0000,0xb596,0xe73c,0xb596,0x18e3,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdefb,0xe71c,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x3186,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x632c,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x9492,0xef5d,0xce79,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xad55,0x0000,0x0000,0x0000,0xb5b6,0xe71c,0xe71c,0xc638,0x18c3,0x0000,0xa534,0xe71c,0xbdf7,0x0020,0xc638,0xe71c,0xe71c,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x4228,0x0000,0x0000,0x632c,0xe71c,0xd6ba,0xe71c,0x8410,0x5aeb,0xdefb,0xdefb,0xe71c,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x31a6,0xce79,0x528a,0x9cf3,0xbdd7,0x0000,0x3186,0x0000,0xb596,0xa534,0x3186,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce79,0x7bcf,0x0000,0x2104,0x2965,0xce79,0x52aa,0x94b2,0xad75,0x2965,0xdedb,0x4208,0xad55,0xad55,0x4208,0xdedb,0x4a49,0x18e3,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x3186,0xce59,0x738e,0x0000,0x73ae,0xd6ba,0x4a49,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c51,0x0000,0x2945,0x18c3,0xce59,0x6b6d,0x8c71,0xbdd7,0x18e3,0xd6ba,0x5acb,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0x39c7,0x0000,0x0000,0x8410,0xc638,0x3186,0xce59,0x738e,0x0000,0x73ae,0xd6ba,0x4a49,0x0000,0x9cf3,0xb596,0x4208,0xd69a,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0x9cd3,0x0000,0x0000,0x0000,0xc618,0x7bef,0x7bef,0xc618,0x0841,0xce79,0x7bcf,0x0000,0x2104,0x3186,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2965,0xdedb,0x4a49,0xad55,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x73ae,0xce59,0x3186,0xc638,0x73ae,0x73ae,0xc618,0x18c3,0xce59,0x630c,0x8c51,0xc638,0x31a6,0xce79,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0xad55,0xbdf7,0x0000,0x0000,0xce59,0x8c51,0x0000,0x2965,0x0000,0x0000,0xbdf7,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x6b4d,0xd6ba,0x39c7,0x2124,0x18e3,0x0000,0x52aa,0xdedb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x0020,0xdedb,0x52aa,0x9492,0xdefb,0xb596,0x0000,0x0000,0xa534,0xd6ba,0xbdf7,0xd6ba,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x5acb,0xb5b6,0x8430,0x0000,0x31a6,0xd6ba,0xce59,0xd6ba,0xad75,0x2965,0xdedb,0x2124,0xa534,0xad55,0x39e7,0xdedb,0xce79,0x630c,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xd69a,0x7bcf,0x0000,0x632c,0xd6ba,0x2945,0x0000,0x9cd3,0xe73c,0xe71c,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xdedb,0x8c71,0x0000,0x18c3,0xd6ba,0x632c,0x8c51,0xc638,0x18c3,0xd69a,0xd69a,0x9492,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xad75,0x632c,0x8410,0xce79,0x0000,0xd69a,0x7bcf,0x0000,0x632c,0xd6ba,0x2945,0x0000,0xa534,0xb5b6,0x2124,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c71,0x4a69,0xb596,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x52aa,0xb5b6,0x8430,0x0000,0x31a6,0xd6ba,0x52aa,0x9cd3,0xb5b6,0x2945,0xd6ba,0xce79,0x8c51,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xce79,0x7bef,0x73ae,0xe71c,0xc618,0xe71c,0x632c,0x8c51,0xc618,0x0020,0xdedb,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0xa514,0xbdd7,0x0000,0x0000,0x528a,0xb596,0x9492,0x0000,0x0020,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x632c,0xdefb,0xce59,0x52aa,0x0000,0x0000,0x39e7,0xdedb,0x528a,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc618,0x18c3,0xd6ba,0x52aa,0x94b2,0xce79,0x7bcf,0x0000,0x0000,0xad55,0xef5d,0xe71c,0xdefb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x630c,0xa514,0x8c51,0x2124,0xd69a,0xa534,0xc618,0xb596,0x3186,0xdefb,0xa534,0xce79,0xad55,0x39e7,0xdedb,0x9cf3,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xdedb,0x7bef,0x0000,0x5aeb,0xd6ba,0x0841,0x0000,0x9cf3,0xce59,0x9492,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xbdf7,0x6b4d,0x0000,0x18c3,0xdedb,0x630c,0x8c51,0xce59,0x10a2,0xd69a,0xad75,0x94b2,0x73ae,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd6ba,0x8430,0x7bef,0xd69a,0x0000,0xdedb,0x7bef,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0xad55,0xbdd7,0x0000,0xe71c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8c51,0x632c,0xe71c,0x0841,0xd69a,0x73ae,0x73ae,0xd6ba,0x0000,0x0000,0x630c,0xa514,0x8c51,0x2124,0xd6ba,0x4228,0x94b2,0xb5b6,0x2965,0xd6ba,0x9cf3,0x9cd3,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0861,0x0000,0x0000,0x7bef,0xdedb,0x0000,0xd69a,0x8410,0x73ae,0xd6ba,0x94b2,0xdedb,0x632c,0x8c71,0xbdf7,0x0000,0xdefb,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x5acb,0xa514,0x94b2,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x3186,0x0000,0x0000,0x6b4d,0xdedb,0x94b2,0x2124,0x0000,0x0000,0x4228,0xdedb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xc638,0x18c3,0xdedb,0x52aa,0x9cd3,0xce59,0x630c,0x7bcf,0x1082,0x7bef,0xce59,0xdedb,0xad55,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x738e,0x6b4d,0x9cd3,0xa514,0x2104,0xdedb,0x4208,0x94b2,0xbdf7,0x1082,0xad55,0xe71c,0xce79,0x73ae,0x4a49,0xdefb,0x7bef,0x73ae,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xd6ba,0x7bcf,0xad75,0x52aa,0x31a6,0x9cf3,0xdedb,0x8430,0x0000,0xa534,0xb5b6,0x0000,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x8410,0x0000,0x0000,0x10a2,0xa534,0x8c71,0x94b2,0x94b2,0x2124,0xdedb,0x4208,0x9cf3,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xad75,0x7bcf,0xad75,0x5aeb,0x5aeb,0xad75,0x7bcf,0xad75,0x5aeb,0x0000,0x6b4d,0xdedb,0x3186,0x0000,0x7bef,0xa534,0x7bef,0xad75,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0x94b2,0x8c71,0xa534,0x0020,0x9cf3,0x9492,0x9492,0x9cf3,0x0000,0x738e,0x6b4d,0x9cd3,0xa514,0x2104,0xdedb,0x9492,0xbdd7,0xb5b6,0x2965,0xdefb,0x8410,0xa514,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0x7bef,0x4208,0x52aa,0xad75,0x7bcf,0xad75,0x5acb,0x8410,0xce79,0x0000,0xd6ba,0x6b4d,0x8c51,0xd69a,0x7bcf,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xbdf7,0x738e,0x73ae,0x0861,0x5acb,0xbdf7,0xce59,0x632c,0x0000,0x6b6d,0x6b6d,0x9492,0xad75,0x0000,0x0000,0xbdf7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdefb,0x8c51,0x7bef,0x4228,0x630c,0xdefb,0x73ae,0x7bcf,0x528a,0x0000,0x4228,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xb596,0x1082,0xc638,0x4a69,0x8410,0xd69a,0xd69a,0xd69a,0x528a,0x0000,0x73ae,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xc618,0xdefb,0x8c71,0x0000,0x2965,0xc638,0x4a69,0x8c71,0xad75,0x0000,0x0000,0xbdd7,0x73ae,0x0000,0x4a69,0xce59,0xd69a,0xdedb,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xd6ba,0xce79,0x2124,0x0000,0x8c51,0xdedb,0xce59,0xd6ba,0x4a69,0x8c71,0xad55,0x2124,0xc638,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0x7bef,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x2965,0xc638,0x4a69,0x8c71,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xd69a,0x4208,0x0000,0x0000,0x4208,0xd69a,0x2945,0x0000,0x0000,0x5aeb,0xc638,0x2945,0x0000,0x0000,0x6b4d,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9cd3,0xb596,0x0000,0x0000,0x0000,0xa534,0xa534,0x0000,0x10a2,0xc618,0xdefb,0x8c71,0x0000,0x2965,0xbdf7,0xd69a,0xd6ba,0x9cf3,0x2124,0xc638,0xdedb,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xce79,0xd69a,0xdedb,0x8c51,0x0000,0x2945,0xd69a,0x4208,0x0000,0x7bef,0xbdd7,0x0000,0xc618,0x5aeb,0x73ae,0xd6ba,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xd6ba,0xd6ba,0xce59,0x1082,0xad75,0xd69a,0xce79,0xc618,0x0000,0xbdd7,0xdefb,0x9cd3,0x0000,0x0000,0x0000,0xad75,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0xce59,0xd69a,0xdedb,0x8c51,0x4228,0xce79,0xd69a,0xdedb,0x8430,0x0000,0x39e7,0xc638,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0841,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0841,0x0020,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4228,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc679,0xc638,0xc638,0xc679,0xc679,0xc679,0xc638,0xc618,0xc638,0xc679,0xc618,0xc618,0xc659,0xc679,0xc679,0xc618,0xce79,0x6b4d,0x0000,0x0861,0x0000,0x0000,0x9514,0xce9a,0xc618,0xc618,0xc659,0xc679,0xc638,0xc618,0xc638,0xc679,0xc679,0xc638,0xc618,0xc638,0xc659,0xc618,0xc659,0xc679,0xc659,0xc618,0xc618,0xc659,0xc679,0xc69a,0xb5f7,0x0000,0x0000,0x1082,0x0000,0x3186,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc679,0xc638,0xc638,0xc679,0xc618,0xc618,0xc618,0xc618,0xc638,0xc679,0xc638,0xc618,0xc659,0xc659,0xc618,0xc679,0xce79,0x73ae,0x0000,0x0861,0x0020,0x0000,0x8c71,0xce79,0xc618,0xc618,0xc618,0xc659,0xc679,0xc679,0xc679,0xc618,0xc618,0xc659,0xc659,0xc618,0xc618,0xc618,0xc659,0xc679,0xc659,0xc618,0xc679,0xc679,0xc679,0xc679,0xbdd7,0x0000,0x0000,0x1082,0x0000,0x18e3,0xbdf7,0xc679,0xc638,0xc618,0xc618,0xc618,0xc679,0xc638,0xc618,0xc618,0xc618,0xc679,0xc679,0xc679,0xc659,0xc618,0xc618,0xc659,0xc679,0xc659,0xc638,0xc679,0xc679,0xceba,0x8451,0x0000,0x0841,0x0841,0x0000,0x8410,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc638,0xc638,0xc679,0xc618,0xc659,0xc638,0xc638,0xc679,0xc618,0x18e3,0x0000,0x1082,0x0000,0x0000,0xbdd7,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xce79,0x8c71,0x0000,0x0020,0x0861,0x0000,0x738e,0xce59,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc659,0xc659,0xc618,0xc638,0x31a6,0x0000,0x1082,0x0000,0x0000,0xb596,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xce59,0x9cd3,0x0000,0x0000,0x0861,0x0000,0x6b2c,0xce79,0xc679,0xc679,0xc679,0xc659,0xc638,0xc679,0xc618,0xc659,0xc638,0xc638,0xc679,0xc679,0xc638,0xc618,0xc618,0xc638,0xc679,0xc638,0xc618,0xc638,0xc679,0xc679,0xce59,0x4a49,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xbdf7,0xe71c,0xdefb,0xdefb,0xdefb,0xdf3c,0xdefb,0xdbcf,0xdb2d,0xde18,0xde18,0xdb6d,0xdc10,0xdb6e,0xde18,0xdf7d,0xde79,0xdbaf,0xdf1c,0xdf5d,0xdd96,0xdb6e,0xdc31,0xdf3c,0xe73c,0xc618,0x7bcf,0x0000,0x10a2,0x94f3,0xcc51,0xe596,0xdf3c,0xdedb,0xdc71,0xdb2d,0xddd7,0xdf7d,0xde9a,0xdc31,0xdb4d,0xde18,0xdf7d,0xde79,0xdc30,0xdedb,0xdd55,0xdb4d,0xdcb3,0xdf5d,0xdf1c,0xdc92,0xdbaf,0xdbf0,0xd3cf,0xad34,0x3a08,0x0000,0x5aeb,0xbdd7,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdf1c,0xdbf0,0xdb2d,0xddd7,0xde59,0xdc51,0xdefb,0xdefb,0xdefb,0xdf3c,0xdeba,0xdbaf,0xdefb,0xdf5d,0xdd96,0xdcb3,0xdefb,0xdc31,0xe679,0xc679,0x8410,0x0000,0x0000,0x8c71,0xce79,0xe71c,0xdefb,0xdefb,0xdf1c,0xdd34,0xdbae,0xdb8e,0xdbf0,0xdeba,0xdf7d,0xdd55,0xdcb3,0xdf7d,0xdefb,0xdf7d,0xdd55,0xdb0c,0xdc72,0xdefb,0xdc30,0xdbcf,0xdbaf,0xdcb2,0xdefb,0xad75,0x4a49,0x0000,0x52aa,0xb5b6,0xdefb,0xdc92,0xddd7,0xdf1c,0xdefb,0xdefb,0xdc51,0xde18,0xdf1c,0xdefb,0xdedb,0xdbf0,0xdbf0,0xdb8e,0xdcd3,0xdf3c,0xdf5d,0xdc72,0xdb0c,0xdd55,0xdeba,0xdb8e,0xdc10,0xdbaf,0xcc92,0x8c92,0x0000,0x0000,0x8c51,0xce59,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdc51,0xddd7,0xde79,0xdbef,0xdefb,0xdc10,0xde38,0xde38,0xdc10,0xdefb,0xb5b6,0x52aa,0x0000,0x4a49,0xad75,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce79,0x8c71,0x0000,0x0000,0x8410,0xc638,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf3c,0xdd55,0xdcf3,0xdf1c,0xdefb,0xbdd7,0x5aeb,0x0000,0x39e7,0xad55,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xe73c,0xd679,0x94b2,0x10a2,0x0000,0x7bcf,0xc658,0xe6ba,0xdc10,0xdbaf,0xdb2d,0xdd96,0xde9a,0xdc31,0xdefb,0xdcb3,0xddd7,0xde79,0xdbcf,0xdb8e,0xdeba,0xdf3c,0xdf3c,0xdeba,0xdbaf,0xdefb,0xdf5d,0xddd7,0xdb8e,0xdbf0,0xe71c,0xbe18,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd492,0xd3ef,0xd34d,0xddf7,0xde18,0xd28a,0xd000,0xd2ec,0xde18,0xde59,0xd492,0xd38e,0xd4d3,0xdedb,0xd410,0xd000,0xd430,0xd4d3,0xd679,0xef5d,0xad75,0x0000,0x18c3,0xd6db,0xdaec,0xd3af,0xdf3c,0xde79,0xd000,0xd2cb,0xd451,0xddb6,0xde59,0xd000,0xd32d,0xd471,0xddf7,0xde18,0xd000,0xde9a,0xd32d,0xd023,0xd410,0xd535,0xdedb,0xd4d3,0xd0e4,0xd000,0xdc51,0xe71c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b2,0xd3f0,0xd32d,0xddd7,0xd575,0xd000,0xdeba,0xdedb,0xdefb,0xde38,0xd492,0xd38e,0xd4b3,0xdeba,0xd471,0xd209,0xdedb,0xd000,0xd596,0xe77d,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd2cb,0xd125,0xd3f0,0xd3cf,0xdeba,0xddb6,0xd431,0xd410,0xd555,0xdedb,0xd555,0xd430,0xd36e,0xd451,0xdedb,0xd431,0xd000,0xd0e4,0xd4b3,0xdefb,0xe73c,0x6b4d,0x0000,0x7bcf,0xef5d,0xdedb,0xd0a4,0xd4b3,0xdf1c,0xdedb,0xdeba,0xd000,0xd534,0xdf1c,0xdedb,0xde9a,0xd3f0,0xd000,0xd146,0xd514,0xdeba,0xd4f3,0xd410,0xd34d,0xd534,0xde9a,0xd36e,0xd000,0xd1e8,0xe5d7,0xc659,0x0000,0x0000,0xc618,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd4b2,0xd471,0xd4b2,0xd431,0xdedb,0xd472,0xd492,0xd492,0xd471,0xdedb,0xef5d,0x7bcf,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf5d,0xd3cf,0xd28a,0xdf3c,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b3,0xd4d3,0xd492,0xd5f7,0xdf3c,0xd69a,0x18c3,0x0000,0xad75,0xef7d,0xd5f7,0xd000,0xd36e,0xd36d,0xdd96,0xddd7,0xd000,0xdeba,0xd1e8,0xd4b2,0xddb6,0xd000,0xd36e,0xd4b2,0xde59,0xde59,0xd492,0xd38e,0xd492,0xde9a,0xd492,0xd000,0xd3cf,0xd4d3,0xeefb,0x94d2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdf1c,0xd596,0xd229,0xde38,0xdf1c,0xdefb,0xdf1c,0xde59,0xd001,0xde9a,0xdf5d,0xd430,0xd229,0xdefb,0xd000,0xddf7,0xd471,0xd2cb,0xde18,0xd1c8,0xde18,0xe73c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd3f0,0xdf3c,0xde9a,0xd063,0xdd96,0xd451,0xd3cf,0xde9a,0xd001,0xddd7,0xd3f0,0xd451,0xde59,0xd001,0xde9a,0xd30c,0xd492,0xde38,0xd000,0xde79,0xdf7d,0xd431,0xd30c,0xdf5d,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd1e8,0xddf8,0xdf1c,0xdf5c,0xd555,0xd105,0xdeba,0xdedb,0xdf1c,0xd4b3,0xd125,0xdf1c,0xd000,0xdd96,0xd4f3,0xd208,0xddf7,0xd002,0xddb6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd30c,0xd38e,0xdedb,0xdf1c,0xdefb,0xd1c7,0xd431,0xd514,0xd000,0xdedb,0xd2ec,0xd4b2,0xdedb,0xdf3c,0xdedb,0xdf5d,0xd30c,0xd431,0xdf5d,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd4f3,0xdf1c,0xdedb,0xdeba,0xd105,0xd555,0xdf1c,0xdedb,0xdedb,0xdf5c,0xd26a,0xd4b2,0xdf7d,0xde59,0xd1e8,0xdd96,0xdefb,0xdf1c,0xdedb,0xdf1b,0xd125,0xdd96,0xe77d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd34d,0xd209,0xde9a,0xdedb,0xdeba,0xd2ab,0xd2ab,0xdeba,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xddd7,0xddf7,0xddd7,0xde79,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd36d,0xd26a,0xde59,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf7,0xd187,0xd208,0xd105,0xd514,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd000,0xddb6,0xdefb,0xdf3c,0xd5b6,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd146,0xdf1c,0xd125,0xd514,0xd514,0xd105,0xdf1c,0xd28b,0xddd7,0xd4b3,0xd2ab,0xdefb,0xd000,0xe5f7,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd002,0xddd7,0xdefb,0xdefb,0xddf8,0xd001,0xde59,0xdf3c,0xd472,0xd28a,0xdeba,0xd023,0xde18,0xd4b2,0xd000,0xd208,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd3f0,0xdf3c,0xde9a,0xd146,0xd000,0xd4d3,0xdf5d,0xde59,0xd023,0xd000,0xd514,0xdf3c,0xddf8,0xd001,0xde9a,0xd32d,0xd451,0xde18,0xd003,0xde9a,0xdf3c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde9a,0xd083,0xdd96,0xdf3c,0xd555,0xd105,0xdeba,0xdedb,0xdf1c,0xd4f3,0xd1c8,0xdedb,0xd125,0xddb6,0xd514,0xd000,0xd000,0xd000,0xddd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd000,0xd30c,0xdefb,0xdefb,0xd30c,0xd000,0xd000,0xd1e8,0xdeba,0xdf3c,0xd38e,0xd36d,0xdefb,0xdedb,0xdf1c,0xd2ec,0xd3f0,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd4f3,0xdf1c,0xdedb,0xdeba,0xd105,0xd555,0xdf1c,0xdedb,0xdedb,0xdefb,0xd24a,0xd472,0xdf1c,0xdedb,0xdefb,0xd1e8,0xd4d3,0xdefb,0xdedb,0xdeba,0xd105,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd000,0xd000,0xd208,0xdedb,0xd2ab,0xd000,0xd000,0xd28a,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdd75,0xd000,0xd001,0xd000,0xd534,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd000,0xd000,0xd208,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xde18,0xd000,0xd000,0xdd75,0xdf3c,0xddb6,0xd023,0xdeba,0xd28a,0xd4d3,0xddb6,0xd125,0xdedb,0xd1e8,0xd555,0xd555,0xd1a7,0xdedb,0xdedb,0xdf1c,0xd472,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdeba,0xd208,0xd514,0xdf3c,0xddf8,0xd001,0xde59,0xdf3c,0xd451,0xd229,0xdefb,0xd000,0xddf7,0xd451,0xd28a,0xdeba,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb0c,0xd430,0xdf5d,0xde79,0xd063,0xd535,0xdedb,0xdefb,0xde59,0xd001,0xddd7,0xd3ef,0xd451,0xde59,0xd001,0xde9a,0xd32d,0xd451,0xde18,0xd003,0xde9a,0xdf3c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdedb,0xd28a,0xd4f3,0xddb6,0xd125,0xdefb,0xdf1c,0xdf3c,0xd4b3,0xd146,0xdf1c,0xd002,0xdd96,0xd4f3,0xd000,0xd000,0xd000,0xddb6,0xe75c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd2ec,0xd38e,0xdeba,0xdedb,0xdefb,0xd26a,0xd472,0xd555,0xd125,0xdeba,0xdf1c,0xdf1c,0xd4d3,0xd229,0xdedb,0xdf1c,0xd2ec,0xd3f0,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd1a7,0xd514,0xdf5d,0xdf1c,0xdeba,0xd0e5,0xd596,0xdf5d,0xdefb,0xdedb,0xdf3c,0xd26a,0xd4b2,0xdf5d,0xdedb,0xdf1c,0xdefb,0xd38e,0xd3af,0xdf1c,0xdeba,0xd105,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd38e,0xd26a,0xdefb,0xdedb,0xdefb,0xd30c,0xd30c,0xdefb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xde59,0xde59,0xde9a,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd3af,0xd2ab,0xdeba,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd001,0xd0e5,0xd000,0xd4d3,0xdf3c,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf8,0xd000,0xddd7,0xdedb,0xdf1c,0xddb6,0xd063,0xdefb,0xd2ab,0xd4d3,0xddb6,0xd125,0xdedb,0xd1e8,0xd555,0xd534,0xd146,0xdf1c,0xd1c8,0xddb7,0xd4d3,0xd28a,0xdeba,0xd043,0xe618,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd249,0xd2ec,0xd4f3,0xde59,0xdf1c,0xddf7,0xd000,0xde38,0xdf1c,0xde59,0xd4d3,0xd2cb,0xd555,0xdefb,0xd3cf,0xd26a,0xdf3c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce9a,0xdb2d,0xd000,0xd451,0xdeba,0xd000,0xddb6,0xdf1c,0xdefb,0xde38,0xd000,0xde79,0xd34d,0xd34d,0xde59,0xd000,0xde9a,0xd2ab,0xd410,0xddf7,0xd000,0xde79,0xdf3c,0xd3af,0xd26a,0xdf1c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xddf8,0xd26a,0xd2cb,0xd4d3,0xde9a,0xd575,0xd000,0xd2ab,0xd249,0xdd96,0xdeba,0xd4f4,0xd2cb,0xd534,0xde9a,0xde7a,0xd471,0xd000,0xd535,0xde9a,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd24a,0xd3cf,0xdf3c,0xdedb,0xdefb,0xd187,0xd4b3,0xddb6,0xd000,0xdeba,0xd3cf,0xd249,0xd3f0,0xddd7,0xdedb,0xdf1c,0xd26a,0xd3af,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd187,0xd0e5,0xd2ab,0xd3cf,0xdeba,0xd0a4,0xd166,0xd28a,0xd430,0xdeba,0xd34d,0xd000,0xd001,0xd4b2,0xde9a,0xd2ec,0xd28a,0xd472,0xde18,0xdefb,0xdeba,0xd000,0xd534,0xdf5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd3f0,0xd472,0xd4f3,0xd36e,0xdedb,0xd3af,0xd4b2,0xd4b2,0xd3af,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd3af,0xd26a,0xdf3c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xd555,0xd575,0xd555,0xde38,0xdf1b,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xddf7,0xd000,0xde59,0xdefb,0xdf1c,0xddb6,0xd000,0xd2ab,0xd000,0xd4d3,0xdd96,0xd000,0xdedb,0xd0c4,0xd4d3,0xdeba,0xd4f4,0xd2cb,0xd514,0xdedb,0xd451,0xd1e8,0xdeba,0xd000,0xe5f7,0x8cb2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd3ef,0xd410,0xde9a,0xdefb,0xdedb,0xde79,0xd492,0xde9a,0xdefb,0xe75d,0xde9a,0xdc92,0xe71c,0xe75d,0xddb7,0xdd75,0xe73c,0xe71c,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce79,0xdd76,0xd3f0,0xd4f3,0xdeba,0xd492,0xde38,0xdefb,0xdedb,0xde9a,0xd492,0xde9a,0xd575,0xd575,0xde9a,0xdcd3,0xe6fb,0xdd75,0xddf7,0xdeba,0xdcd3,0xdedb,0xe73c,0xddd7,0xdd55,0xdefb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd3f0,0xd3f0,0xde79,0xdf3c,0xde18,0xd451,0xd430,0xd3cf,0xddf8,0xe77d,0xdedb,0xdc72,0xdefb,0xe73c,0xe73c,0xdeba,0xdcd3,0xe71c,0xdefb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xd514,0xd576,0xdefb,0xdedb,0xdedb,0xd4f3,0xddd7,0xde38,0xdcb3,0xdefb,0xdd14,0xdc10,0xddb6,0xe77d,0xe6fb,0xe73c,0xdd75,0xddd7,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xd4f4,0xd430,0xd3f0,0xd4b3,0xdedb,0xd4d3,0xd430,0xd3ef,0xd4f3,0xdeba,0xd451,0xd451,0xdc51,0xdd75,0xdefb,0xdc92,0xdc30,0xde59,0xe75d,0xdf1c,0xdefb,0xdcf4,0xde38,0xdf1c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdcf3,0xde38,0xde9a,0xdc92,0xe6fb,0xdcd3,0xde79,0xde79,0xdcb2,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdd76,0xd514,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xde79,0xd492,0xde9a,0xdedb,0xdefb,0xde59,0xd451,0xd430,0xd430,0xddf7,0xde38,0xd4b2,0xdedb,0xd4d3,0xddd7,0xdf3c,0xde9a,0xd430,0xdeba,0xdf1c,0xddb6,0xd4f4,0xdeba,0xd492,0xe69a,0x8c92,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdf3c,0xdefb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xc618,0xb596,0xb5d7,0xb5f7,0xb5b6,0xb596,0xb5d7,0xb5f7,0xb596,0xb5b6,0xd69a,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdf1c,0xdf3c,0xdf1c,0xdedb,0xdf3c,0xdefb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xd6ba,0xb618,0xb5b6,0xb5f7,0xb5d7,0xb5b6,0xb5f7,0xb5b6,0xb596,0xb5d7,0xc659,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf3c,0xdf3c,0xdefb,0xdeba,0xdefb,0xdf1c,0xdf1c,0xdf3c,0xc659,0xb596,0xb5b6,0xb5f7,0xb596,0xb596,0xb596,0xb5b6,0xb5f7,0xb5b6,0xd69a,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdf1c,0xdf1c,0xdedb,0xdefb,0xdedb,0xdf1c,0xdefb,0xdefb,0xd6fb,0xb5b6,0xb5d7,0xb618,0xb5f7,0xb596,0xb5b6,0xb596,0xb5f7,0xb5d7,0xbdf7,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdedb,0xdf3c,0xdf3c,0xdf3c,0xdf1b,0xdedb,0xdf1c,0xdf3c,0xc69a,0xb5d7,0xb5b6,0xb618,0xb618,0xb5d7,0xb5b6,0xb5b6,0xb5b6,0xb5f7,0xce9a,0xe71c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xbdd7,0xb5f7,0xb5d7,0xb5d7,0xb5f7,0xb5b6,0xb5f7,0xb5d7,0xb5d7,0xbe38,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdf1c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdf1c,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xdf1c,0xdefb,0xdeba,0xdedb,0xdf1c,0xdedb,0xdeba,0xdefb,0xdf1c,0xdedb,0xdf1c,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x6b4d,0x0000,0x0000,0x2104,0x0000,0x10a2,0x0000,0x0000,0x18c3,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0x1082,0x0000,0x0000,0x2104,0x0000,0x10a2,0x0000,0x6b4d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x7bcf,0x0000,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd6ba,0xdedb,0xdefb,0xce59,0x0000,0x1082,0x0000,0x0000,0x18c3,0x0000,0x18e3,0x0000,0x0000,0x5acb,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xef5d,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xce79,0x1082,0x0000,0x0000,0x0000,0x18e3,0x0000,0x18c3,0x0000,0x0000,0x4a49,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xce79,0xd6ba,0xdedb,0xdedb,0xd6ba,0xce79,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xd69a,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xe73c,0x9492,0x0000,0x1082,0x1082,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x630c,0xd6ba,0x0000,0xbdf7,0x8430,0x630c,0xd69a,0x0020,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xd6ba,0x31a6,0x0000,0x1082,0x0000,0x4228,0xd6ba,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xbdd7,0x94b2,0x4a69,0xd6ba,0x0000,0xbdf7,0x8c51,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x7bcf,0x0000,0x0861,0x1082,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x6b6d,0xdedb,0xd69a,0xd69a,0xd69a,0xd69a,0xd6ba,0xce59,0x10a2,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xce59,0x73ae,0x73ae,0xce59,0x0000,0xce79,0x738e,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x1082,0x1082,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x2945,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x39e7,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xc618,0x8430,0x630c,0xce79,0x0000,0xce59,0x8410,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa514,0x4a49,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x3186,0xb5b6,0xdefb,0xdefb,0xce79,0x10a2,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x94b2,0x5acb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x7bef,0x8c71,0xc618,0xbdd7,0xbdd7,0xc618,0x7bef,0x9492,0xe71c,0xdedb,0xe71c,0x630c,0x7bef,0xbdd7,0x528a,0xc638,0x6b6d,0x9cd3,0xb596,0x31a6,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xbdd7,0x4a49,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0xbdf7,0x7bcf,0x8c71,0xb5b6,0x528a,0xc638,0x7bcf,0x0000,0x738e,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x6b4d,0xc618,0xbdd7,0xbdf7,0x5acb,0xa534,0xef5d,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xb5b6,0xce59,0xc638,0xc638,0xc638,0xbdd7,0xd69a,0xdedb,0xdefb,0xce59,0x10a2,0x2965,0xad55,0xa534,0x630c,0xc638,0x5acb,0xb596,0x8c71,0x528a,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x9492,0x7bef,0xc618,0xbdd7,0xbdd7,0xc618,0x8430,0x6b6d,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xef5d,0xe71c,0xe73c,0xe71c,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x2965,0x2104,0xa514,0xad75,0x5acb,0xc638,0x630c,0xa534,0x9cd3,0x4208,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x0000,0xbdf7,0xf79e,0xbdd7,0x4a49,0xb5b6,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x8c71,0x4a49,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc638,0x5acb,0x31a6,0xbdf7,0xef5d,0xbdf7,0x528a,0x4a49,0x2965,0xad55,0xbdf7,0x6b4d,0xdedb,0x738e,0xb5b6,0xb5b6,0x6b6d,0xdedb,0xdedb,0xe71c,0xad55,0x4208,0x5acb,0xdedb,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x39e7,0x94b2,0xf79e,0xe73c,0xe73c,0xf79e,0x73ae,0x6b4d,0xe71c,0xdedb,0xe71c,0x6b4d,0x4208,0x9492,0xa514,0x8430,0x9cf3,0x9492,0x8c71,0x94b2,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xce59,0x9492,0x8430,0x8430,0x8430,0x8410,0x9492,0xdefb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x7bcf,0x94b2,0x8c71,0x8430,0x94b2,0x8430,0x9cd3,0x528a,0x6b4d,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8430,0xef5d,0xdefb,0xe71c,0xad55,0x8410,0xa514,0xdefb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xe71c,0xdedb,0xdefb,0xdefb,0xdefb,0xdedb,0x18e3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x7bcf,0x8430,0x8430,0x8410,0x8c71,0xdedb,0xdefb,0xdedb,0xdefb,0xce59,0x1082,0x8c71,0x9cd3,0x94b2,0x9cf3,0x9492,0xa514,0x9cf3,0x52aa,0x5acb,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b6d,0xef5d,0xdefb,0xe73c,0xef7d,0xc638,0xad55,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x10a2,0x6b4d,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2124,0x8c51,0x94b2,0x8c71,0xa514,0x8430,0x9cf3,0x94b2,0x52aa,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2945,0x632c,0x7bcf,0x8430,0xad75,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0000,0x8c51,0x8430,0xbdd7,0xbdd7,0x0000,0x9cd3,0x94b2,0xc638,0xad75,0x18c3,0xe71c,0x31a6,0xa534,0xa534,0x2945,0xdedb,0xdedb,0xe71c,0x9492,0x0020,0x9cd3,0x8430,0xd69a,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x5acb,0x6b4d,0xad75,0xa534,0xa534,0xad75,0x4a69,0x73ae,0xe71c,0xdedb,0xe71c,0x6b6d,0x2945,0x8c51,0xad75,0x738e,0xa534,0x9492,0x8430,0xa534,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xe71c,0x73ae,0x632c,0x6b4d,0x632c,0x738e,0xad55,0xd69a,0xdedb,0xdefb,0xc618,0x0000,0x528a,0xce79,0xb596,0x8430,0xe71c,0x6b6d,0xd69a,0x9492,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xef7d,0x7bef,0x4228,0xe71c,0xdedb,0xe71c,0x738e,0x7bcf,0xdefb,0xa534,0xdedb,0xb5b6,0xc618,0xd6ba,0x9cd3,0x0000,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x5aeb,0x6b4d,0x6b4d,0x632c,0x738e,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0861,0xad55,0x5acb,0x5acb,0xad55,0x0000,0xad75,0x5acb,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xd6ba,0xad75,0xa514,0xad55,0xc618,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x10a2,0x8410,0x1082,0x630c,0x630c,0x1082,0x8410,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x10a2,0x5acb,0x6b4d,0x6b4d,0x6b4d,0x632c,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2104,0x9cd3,0x9492,0x8430,0xad75,0x738e,0xad55,0x9492,0x4208,0x4a69,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0xbdf7,0xb5b6,0xdedb,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2945,0x528a,0x632c,0x8410,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0841,0xdedb,0x630c,0x8410,0xc618,0x0000,0xa534,0xdedb,0xe73c,0xad55,0x10a2,0xad55,0x2945,0xad75,0xad55,0x39e7,0xdedb,0xdedb,0xe71c,0x8c71,0x5acb,0xdefb,0x0000,0xbdf7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x630c,0x0000,0x31a6,0x31a6,0x31a6,0x31a6,0x0000,0x7bef,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xbdd7,0x39e7,0xce79,0x630c,0x9cd3,0xb5b6,0x1082,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xd69a,0xc638,0xe71c,0xe71c,0xe71c,0xe73c,0xd69a,0x0000,0xbdf7,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xdefb,0xdefb,0xe71c,0xdedb,0xe71c,0xe73c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdedb,0xd69a,0x8410,0x7bcf,0xdefb,0xdedb,0xe71c,0x73ae,0x6b4d,0xbdd7,0x39c7,0xbdf7,0x6b6d,0x8430,0xb5b6,0x2124,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe73c,0xd6ba,0x5acb,0x3186,0x0000,0x528a,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x6b4d,0xce79,0x632c,0xad55,0xad55,0x632c,0xce79,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xe73c,0xe71c,0xe71c,0xdefb,0x2965,0xad55,0xe71c,0xdedb,0xd69a,0x2965,0x0000,0xa514,0xb596,0x4228,0xce79,0x52aa,0xa534,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x73ae,0x528a,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39c7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x10a2,0xbdf7,0xf79e,0xb5b6,0x39e7,0xc618,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x528a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc638,0x0000,0x2104,0xbdf7,0xe73c,0xad75,0x0000,0x0000,0x0000,0xb596,0xad55,0x39e7,0xdefb,0xdedb,0xe71c,0x9492,0x52aa,0xd6ba,0x18c3,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0841,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xb5b6,0x18c3,0xd69a,0xdedb,0xdedb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdefb,0xc5f7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xe71c,0xdedb,0xdefb,0x4a69,0x9492,0xe71c,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x5acb,0xdedb,0x2965,0xb5b6,0x9cd3,0x52aa,0xd6ba,0x18c3,0xb5b6,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc5f7,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xe71c,0x8410,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xd6ba,0x2945,0xad55,0xe71c,0xdedb,0xd69a,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x8c51,0x0000,0x52aa,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xdedb,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xdefb,0xce59,0x0020,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xc618,0x0841,0xd69a,0x6b4d,0x8c51,0xc618,0x18c3,0xd69a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0x0000,0xb596,0xad55,0x39e7,0xdedb,0xdedb,0xe71c,0x9492,0x52aa,0xd6ba,0x18c3,0xc618,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0x39e7,0x8c51,0xe73c,0xdedb,0xdedb,0xe73c,0x632c,0x632c,0xe71c,0xdedb,0xe71c,0x630c,0x8410,0xbdf7,0x528a,0xce79,0x6b6d,0x9cf3,0xbdd7,0x31a6,0x0000,0xc618,0xe73c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xd6ba,0xbdf7,0x4228,0x2965,0x31a6,0x2945,0x528a,0xc618,0xd6ba,0xdedb,0xdefb,0xbdf7,0x0841,0xd69a,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xef7d,0x8430,0x5aeb,0xe71c,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xe71c,0x632c,0x0000,0x39c7,0x3186,0x2124,0xad55,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x738e,0xc638,0x4a69,0xce59,0x7bcf,0x9492,0xbdf7,0x4208,0x0000,0xbdd7,0xe73c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xd6ba,0x9cd3,0x10a2,0x31a6,0x31a6,0x18c3,0x8430,0xd69a,0xdedb,0xdedb,0xe71c,0x8c51,0x0000,0x6b4d,0xce79,0x632c,0xad55,0xad55,0x632c,0xce79,0x2945,0xad55,0xe73c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xc638,0x0000,0xbdf7,0xdefb,0xdedb,0xdedb,0xd6ba,0x0000,0xa534,0xe71c,0xdedb,0xd69a,0x2965,0x2104,0xa534,0xb596,0x5acb,0xce79,0x632c,0xad75,0x9cf3,0x39e7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xd6ba,0xa514,0x18c3,0x31a6,0x31a6,0x10a2,0x7bef,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xb596,0xdefb,0xdedb,0xdedb,0xc638,0x4a49,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xe71c,0x9492,0x0000,0x31a6,0x31a6,0x31a6,0x31a6,0x2124,0x52aa,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdf7,0x0000,0xd69a,0x5acb,0x8430,0xc618,0x0000,0x3186,0x0841,0xa514,0xdefb,0xb5b6,0x0000,0xad55,0xe71c,0xa514,0x0000,0x31a6,0x10a2,0xbdf7,0x94b2,0x4228,0xd6ba,0x0000,0xbdf7,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xef5d,0xdedb,0xdedb,0xb596,0xc618,0xdefb,0xdedb,0xdedb,0xdefb,0xbdd7,0xbdd7,0xdefb,0xdedb,0xe71c,0x630c,0x2945,0x5aeb,0x0000,0x6b6d,0x0000,0x4208,0x5acb,0x0000,0x0000,0xbdf7,0xef7d,0xad75,0x0000,0x18c3,0xd69a,0xe71c,0xdedb,0xdedb,0xdedb,0xad55,0xa514,0xa534,0xa514,0xad75,0xdefb,0xdedb,0xdedb,0xdefb,0xbdf7,0x0000,0x5aeb,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x0861,0x630c,0xe71c,0xe73c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xbdd7,0xa534,0xa534,0xa534,0xa514,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0861,0x632c,0x0000,0x6b4d,0x0000,0x3186,0x630c,0x0000,0x0000,0xb5b6,0xef7d,0xbdd7,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xef5d,0x6b4d,0x0000,0x7bcf,0xef5d,0xdedb,0xdedb,0xdefb,0xce59,0x9cf3,0xa534,0xa534,0x9cf3,0xc618,0xe71c,0xdedb,0xdedb,0xe71c,0x8430,0x0000,0x0000,0x738e,0x0000,0x4a69,0x4a69,0x0000,0x738e,0x0000,0xad55,0xef7d,0xc618,0x0000,0x0000,0xc618,0xe73c,0xdedb,0xd69a,0xad55,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xad75,0xce59,0xdedb,0xdedb,0xce79,0x0000,0x0000,0x4a49,0x52aa,0x0000,0x738e,0x0000,0x4a69,0x4a49,0x31a6,0xdedb,0xef5d,0x7bcf,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdefb,0xce79,0xa514,0xa534,0xa534,0xa514,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xce59,0x0000,0x0000,0xbdd7,0xe73c,0xdedb,0xd6ba,0xad55,0xce79,0xdedb,0xdedb,0xdedb,0xdefb,0xad75,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe73c,0xdedb,0xdefb,0xc638,0xa534,0xa534,0xa534,0xa534,0xa534,0xa514,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xd69a,0x18c3,0x0000,0xad75,0xef5d,0xce79,0xad55,0xd6ba,0xbdd7,0xc618,0xd69a,0xad55,0xa534,0xa514,0xc618,0xdefb,0xd6ba,0xad55,0xd6ba,0xdefb,0xc638,0xa534,0xa534,0xa514,0xce79,0xc638,0xb596,0xd6ba,0xad55,0xdefb,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xb5b6,0xe71c,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe73c,0xdefb,0xdefb,0xe71c,0xad75,0x8410,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8430,0x9492,0x8c71,0xd6ba,0xc618,0x738e,0x0000,0x1082,0x8c71,0xce79,0xe71c,0xdefb,0xdefb,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xdefb,0xdefb,0xdefb,0xe71c,0xd69a,0x8c71,0x8430,0x8410,0x8430,0x8430,0x8430,0x8430,0x8410,0x8430,0xad75,0xdefb,0xa514,0x39c7,0x0000,0x5acb,0xb596,0xe71c,0xdefb,0xe73c,0xef5d,0xe73c,0xe73c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xb596,0x8410,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8430,0x9492,0x8c71,0xd69a,0xc638,0x7bcf,0x0000,0x0000,0x8430,0xce59,0xe71c,0xe71c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xd6ba,0x9492,0x8c71,0x9492,0x9492,0x9492,0x9492,0x9492,0x9492,0x8c51,0xad55,0xdefb,0xa534,0x4228,0x0000,0x4a69,0xad75,0xdefb,0xdefb,0xdefb,0xe71c,0xef5d,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xdefb,0xdefb,0xe73c,0xbdd7,0x8c51,0x8c71,0x8430,0x8c71,0x8c51,0x8c51,0x8c71,0x8430,0x8c51,0xce79,0xce79,0x8410,0x0000,0x0000,0x8410,0xc638,0xe71c,0xe71c,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe71c,0xdefb,0xe71c,0xdedb,0x94b2,0x8c71,0x8c51,0x8430,0x9492,0x8430,0x8c71,0x8c51,0x8410,0xa514,0xdefb,0xad75,0x4a69,0x0000,0x4228,0xa534,0xdedb,0xe71c,0xdefb,0xe71c,0xef5d,0xe73c,0xe73c,0xef5d,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce59,0x8430,0x0000,0x0000,0x7bcf,0xc618,0xe71c,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xb596,0x5acb,0x0000,0x39e7,0xa514,0xdedb,0xe71c,0xe71c,0xef5d,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xe73c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xce79,0x8c71,0x1082,0x0000,0x738e,0xbdf7,0xe73c,0xe73c,0xdefb,0xe73c,0xe71c,0xe71c,0xe73c,0xe73c,0xef5d,0xe71c,0xdefb,0xe71c,0xe73c,0xe71c,0xdefb,0xe71c,0xef5d,0xe73c,0xef5d,0xe71c,0xe71c,0xe73c,0xdefb,0xef5d,0xbdd7,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0xc638,0x630c,0x0000,0x0861,0x0000,0x0000,0x9492,0xc618,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xad75,0x0000,0x0000,0x1082,0x0000,0x2965,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc618,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0x738e,0x0000,0x0861,0x0020,0x0000,0x8430,0xc618,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xc638,0xb5b6,0x0000,0x0000,0x1082,0x0000,0x10a2,0xb5b6,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xc618,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce59,0x7bef,0x0000,0x0841,0x0841,0x0000,0x7bef,0xc618,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xc638,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xc638,0xbdd7,0x10a2,0x0000,0x1082,0x0000,0x0000,0xb5b6,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0x8c51,0x0000,0x0020,0x0861,0x0000,0x6b6d,0xc638,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0x3186,0x0000,0x1082,0x0000,0x0000,0xad75,0xbdf7,0xbdd7,0xbdf7,0xbdf7,0xbdd7,0xbdd7,0xbdd7,0xbdf7,0xbdd7,0xbdd7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0x94b2,0x0000,0x0000,0x0861,0x0000,0x630c,0xc638,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0x4228,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x10a2,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x10a2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x2124,0x1082,0x0000,0x0000,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x10a2,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x5aeb,0xd69a,0x1082,0x0000,0x9492,0xdefb,0xc638,0x0000,0x0000,0x0000,0x7bef,0xc638,0x0000,0x0000,0x0000,0x8430,0xe71c,0xce79,0x18c3,0xad55,0xe71c,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0x9cf3,0x0000,0x2965,0xc638,0xdefb,0x8430,0x0000,0x0000,0x0000,0xc638,0x7bef,0x0000,0x0000,0x0000,0xce79,0x6b6d,0x0000,0x0000,0x0861,0xce79,0xe71c,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xd6ba,0x3186,0x0000,0x8430,0xdedb,0xce79,0x0861,0x0000,0x0000,0x6b6d,0xce79,0x0000,0x0000,0xa514,0xdedb,0xd69a,0xd69a,0x2945,0xa514,0xdefb,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xe71c,0xbdf7,0x0000,0x0000,0xb5b6,0xa514,0x0000,0x2965,0xc638,0xdefb,0x8430,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0xd6ba,0x4a49,0x0000,0x7bcf,0xdedb,0xd69a,0x2965,0x0000,0x0000,0x52aa,0xdedb,0xdedb,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x9492,0xe71c,0xc638,0x18c3,0x0000,0xad55,0xad55,0x0000,0x10a2,0xbdf7,0xe71c,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x630c,0xce59,0x10a2,0xb5b6,0x8c71,0x0000,0x3186,0xd6ba,0x4a49,0x0000,0x8410,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x0000,0x0000,0xad75,0xd6ba,0xdedb,0xc638,0x0000,0xb5b6,0xe71c,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0xce79,0x2945,0xad75,0x9cf3,0x0000,0x0861,0xce59,0xe71c,0x7bef,0x5acb,0xd6ba,0xd6ba,0x4228,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xad55,0x5aeb,0xb5b6,0x39e7,0x9cf3,0xc618,0x630c,0xc618,0x39e7,0x8c51,0xa514,0x7bef,0xc618,0x2945,0xa514,0xa514,0x52aa,0x6b4d,0x0000,0xc618,0xad75,0x8410,0xad75,0x10a2,0x0000,0x0000,0x0000,0x0000,0x10a2,0xad75,0x7bcf,0x8c71,0x9cf3,0x2104,0xd6ba,0x7bef,0x9cd3,0xa514,0x2104,0xb5b6,0x7bcf,0xad55,0x94b2,0x3186,0xb5b6,0x738e,0xb596,0x8430,0x4a49,0xc618,0x632c,0x6b6d,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xb575,0x5aeb,0xb596,0x4a69,0x8c71,0xce79,0x5aeb,0xc618,0x4a69,0x7bef,0xad55,0x73ae,0xc618,0x4228,0x39c7,0xad55,0xd69a,0x6b4d,0x0000,0xbdd7,0xb5b6,0x7bcf,0xb596,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x8c71,0x5acb,0x630c,0x1082,0xad75,0x9492,0x31a6,0x0000,0x31a6,0xd6ba,0x8c71,0x9cd3,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xb596,0x5aeb,0xad75,0x5aeb,0x7bef,0xd69a,0x5acb,0xbdf7,0x5acb,0x7bcf,0xb5b6,0x52aa,0x738e,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0x9cd3,0x5acb,0x632c,0x0000,0xa534,0x8c71,0x8c71,0xa534,0x0861,0xd69a,0x8c51,0x9492,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdedb,0x18c3,0xc638,0x9492,0x4a69,0xb596,0x5aeb,0xad75,0x5aeb,0x8410,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xa534,0x0000,0x0000,0x0000,0xc638,0xad55,0x52aa,0x632c,0x0000,0xce59,0xa514,0x8c51,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2965,0xbdd7,0x9cf3,0x4228,0xc618,0x632c,0x6b6d,0x3186,0x73ae,0xdedb,0x5aeb,0xbdd7,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xdedb,0x9cd3,0xe71c,0x52aa,0x94b2,0xd69a,0x9492,0x9492,0x0841,0xb596,0xad75,0x0000,0x9492,0x18e3,0x7bcf,0xa534,0x7bcf,0x0000,0x0000,0xc638,0x8430,0x630c,0xdedb,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xad75,0xbdf7,0xc618,0x10a2,0xd69a,0xad75,0x94b2,0x6b6d,0x39e7,0xe71c,0x4208,0x632c,0x6b6d,0x528a,0xdefb,0x2124,0x738e,0x632c,0x39c7,0x9cf3,0x9cf3,0x18c3,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x8c51,0xdefb,0x94b2,0xe71c,0x6b4d,0x8430,0xd6ba,0x9492,0x94b2,0x18e3,0xa534,0xbdf7,0x0000,0x9492,0x39e7,0x0000,0x8410,0xce59,0x0000,0x0000,0xbdf7,0x94b2,0x4a69,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xa514,0x632c,0x0000,0x18e3,0xdedb,0x6b4d,0x4a69,0x8430,0x2124,0xd6ba,0x4228,0x9cf3,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xe71c,0x94b2,0xdefb,0x7bcf,0x73ae,0xdedb,0x94b2,0x94b2,0x39e7,0x5aeb,0xa514,0x8c71,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xa534,0x738e,0x0000,0x0000,0xd6ba,0x6b6d,0x6b6d,0xd69a,0x0020,0xce79,0xb596,0x9492,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xbdf7,0x8c51,0x6b4d,0xe71c,0x94b2,0xdefb,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0xbdf7,0xc638,0x6b6d,0x0000,0x0000,0xce79,0x738e,0x73ae,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2965,0xb5b6,0x9cf3,0x2945,0x9cf3,0x9cf3,0x18c3,0x0000,0x7bcf,0xdedb,0x9cd3,0x94b2,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xdefb,0xbdf7,0xdefb,0x528a,0x9492,0xdefb,0xb596,0x5aeb,0x0000,0xb596,0xad75,0x0000,0x630c,0x2124,0x0000,0x738e,0xb5b6,0x6b4d,0x0000,0xc618,0x8c51,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce59,0xce59,0xd69a,0xbdd7,0x18c3,0xd69a,0xce79,0x9492,0x2965,0x4208,0xdefb,0x4a69,0x39e7,0x4208,0x52aa,0xdefb,0x39c7,0x4a49,0x4a69,0x0000,0x0000,0xb5b6,0x9492,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xdefb,0xbdf7,0xdefb,0x630c,0x8410,0xdefb,0xb5b6,0x632c,0x0000,0xa534,0xbdd7,0x0000,0x630c,0x2945,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdd7,0x9cd3,0x52aa,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8c51,0xad75,0x5aeb,0x10a2,0xd6ba,0x630c,0x9492,0xce79,0x10a2,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xdefb,0xbdf7,0xdefb,0x738e,0x738e,0xdefb,0xb5b6,0x738e,0x3186,0x0000,0x39e7,0xbdd7,0x7bef,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x7bef,0xb596,0x632c,0x0000,0xce59,0x9cf3,0x9cf3,0xc638,0x0020,0xce59,0xd69a,0x94b2,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x738e,0xce79,0x8c51,0x630c,0xdefb,0xbdf7,0xdefb,0x738e,0x7bcf,0xce59,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0xbdf7,0xd6ba,0x9492,0x0000,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xdedb,0x2104,0xb5b6,0xa534,0x0000,0x0000,0xb5b6,0x9492,0x2965,0x6b6d,0xdefb,0xc618,0x73ae,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xbdf7,0x0000,0xd6ba,0x52aa,0x9cf3,0xb596,0x0861,0xe71c,0x4a49,0x9cf3,0xa534,0x5aeb,0xd69a,0x4208,0x2945,0x2104,0x6b6d,0xd69a,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x5aeb,0x8430,0xc618,0x18c3,0xd6ba,0x4228,0x9cf3,0xbdf7,0x2124,0xce59,0x5acb,0xad75,0xa534,0x39c7,0xce59,0x4a69,0xb5b6,0x9cf3,0x0000,0x4208,0x1082,0xc618,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce59,0x0000,0xd69a,0x6b4d,0x8c71,0xbdf7,0x0000,0xdefb,0x5aeb,0x8c71,0xb596,0x528a,0xd69a,0x52aa,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdd7,0x9cd3,0x52aa,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x0861,0x8c51,0xc638,0x0000,0xc618,0x73ae,0x8c71,0xb5b6,0x18e3,0xd6ba,0x52aa,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce79,0x2945,0xce79,0x73ae,0x0000,0x31a6,0x39e7,0xd69a,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x18c3,0x7bcf,0xce79,0x0841,0xb596,0xdefb,0xe73c,0xbdf7,0x0841,0xd69a,0x5aeb,0x8c51,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xd69a,0xe71c,0xdedb,0x73ae,0x6b4d,0xd69a,0x0000,0xce59,0x7bcf,0x7bcf,0xce79,0x39c7,0x4208,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad75,0x2124,0x39e7,0x0000,0xc638,0x9cd3,0x0000,0x39c7,0x0000,0xce79,0x7bcf,0x7bcf,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdedb,0x528a,0xbdf7,0xa514,0x0000,0x4208,0x1082,0xc618,0x8430,0x6b4d,0xd69a,0x0000,0xd69a,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xc638,0x18c3,0xdedb,0x52aa,0x9cf3,0xbdd7,0x2965,0xdedb,0x5acb,0x0000,0x8c51,0xce79,0x10a2,0x0000,0xad75,0xe73c,0xbdd7,0x0000,0x0000,0xc638,0x8c71,0x6b4d,0xd6ba,0x18c3,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x6b4d,0x8c71,0xc638,0x18c3,0xdedb,0x52aa,0x9cf3,0xbdf7,0x0000,0x1082,0xce79,0x8c51,0x0000,0x0000,0x2945,0xd69a,0x7bef,0x0000,0x630c,0xdefb,0xdefb,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0020,0xd6ba,0x6b4d,0x8c71,0xc638,0x18c3,0xdedb,0x6b4d,0x0000,0x7bef,0xd69a,0x2945,0x0000,0x0000,0x8c51,0xce79,0x0000,0x0000,0xbdf7,0x9cf3,0x52aa,0xdedb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xe73c,0xa534,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xdedb,0x52aa,0x9cf3,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x7bef,0x738e,0xe73c,0xd6ba,0x4a69,0x0000,0x8c71,0xe73c,0xd69a,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xe73c,0xb596,0x0000,0x0000,0x0000,0xad55,0xef5d,0xc618,0x0841,0xd6ba,0x6b4d,0x8c71,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0xdedb,0x738e,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x7bef,0x738e,0xe73c,0xdedb,0xe71c,0x738e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xce79,0x18c3,0xbdd7,0xe71c,0xdedb,0xce59,0x0020,0xce79,0x7bef,0x7bef,0xce79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xdefb,0xdedb,0xe73c,0x9492,0x4a69,0xdefb,0xdefb,0x6b4d,0x0000,0x7bcf,0xd6ba,0x0020,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x4a69,0x0841,0x52aa,0x2104,0x39e7,0x4a49,0x1082,0x5acb,0x2124,0x0000,0x31a6,0x52aa,0x0000,0x0000,0x4a49,0x630c,0x4a69,0x0000,0x0000,0x528a,0x39c7,0x2945,0x52aa,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x52aa,0x2945,0x39c7,0x4a69,0x0841,0x52aa,0x2104,0x39e7,0x4a69,0x0000,0x0000,0x52aa,0x31a6,0x0000,0x0000,0x0000,0x5acb,0x2965,0x0000,0x2945,0x5aeb,0x5aeb,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x31a6,0x528a,0x0000,0x52aa,0x2945,0x39c7,0x4a69,0x0841,0x52aa,0x2945,0x0000,0x2965,0x5acb,0x0000,0x0000,0x0000,0x31a6,0x528a,0x0000,0x0000,0x4a69,0x39e7,0x2104,0x52aa,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x630c,0x4228,0x0000,0x0000,0x0000,0x4a69,0x4208,0x0000,0x10a2,0x52aa,0x2104,0x39e7,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x52aa,0x0000,0x528a,0x3186,0x2965,0x5aeb,0x5acb,0x1082,0x0000,0x39e7,0x630c,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x630c,0x4a49,0x0000,0x0000,0x0000,0x4208,0x5aeb,0x4a69,0x0000,0x52aa,0x2945,0x39c7,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x2124,0x0000,0x3186,0x52aa,0x0000,0x528a,0x3186,0x2965,0x5aeb,0x5acb,0x5aeb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x5aeb,0x5aeb,0x5acb,0x0841,0x4a49,0x5aeb,0x5aeb,0x52aa,0x0000,0x528a,0x3186,0x3186,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x5acb,0x5aeb,0x5aeb,0x39c7,0x2104,0x5aeb,0x5aeb,0x2124,0x0000,0x3186,0x52aa,0x0000,0x528a,0x31a6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x10a2,0x0861,0x0000,0x0841,0x10a2,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x0020,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0861,0x10a2,0x10a2,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x10a2,0x10a2,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x10a2,0x0861,0x0000,0x0000,0x0000,0x10a2,0x0861,0x0000,0x0020,0x10a2,0x0841,0x0000,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x0841,0x0000,0x0841,0x10a2,0x10a2,0x10a2,0x0841,0x0861,0x10a2,0x0000,0x10a2,0x0841,0x0861,0x10a2,0x10a2,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0861,0x0861,0x10a2,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x10a2,0x10a2,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x1082,0x10a2,0x1082,0x0000,0x0000,0x1082,0x10a2,0x10a2,0x10a2,0x0000,0x0000,0x1082,0x1082,0x0000,0x0000,0x10a2,0x0841,0x0861,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x0000,0x0000,0xbdf7,0x8c51,0x0000,0x4208,0xc638,0xdedb,0x738e,0x0000,0x528a,0xce59,0x2945,0xad55,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4208,0xd69a,0x2945,0x0000,0x8c71,0xb5b6,0x0000,0x0000,0x0000,0x8c71,0xd6ba,0xd69a,0xd69a,0x528a,0x0000,0x7bcf,0xc638,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0xa534,0xa534,0x0000,0x0000,0x0000,0xb596,0x9cd3,0x0000,0x2965,0xc618,0xdefb,0x8410,0x0000,0x4208,0xce79,0xce59,0xd6ba,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xd69a,0x4208,0x0000,0x7bef,0xbdf7,0x0000,0x0000,0x0861,0x0000,0x528a,0xd6ba,0xd6ba,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x8c71,0xdefb,0xc618,0x18c3,0x0000,0xa534,0xa534,0x0000,0x18c3,0xbdd7,0xdefb,0x8c71,0x0000,0x0000,0x0000,0xbdf7,0x8c51,0x0000,0x4208,0xce59,0x528a,0x0000,0x7bef,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xce79,0xd6ba,0x528a,0x0000,0x6b4d,0xd69a,0xd69a,0xdedb,0x6b6d,0x738e,0xbdd7,0x0020,0xc618,0x5aeb,0x7bef,0xdedb,0xce59,0xd6ba,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0x0000,0x9cd3,0xb596,0x0000,0x0000,0xbdf7,0x738e,0x738e,0xbdf7,0x0000,0x0000,0xa534,0xe71c,0xb596,0x10a2,0xc618,0xd69a,0xdedb,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xdedb,0xbdd7,0x0000,0x0000,0xa514,0xdedb,0xb596,0x0000,0x0000,0xad55,0xd69a,0xd6ba,0xc618,0x18c3,0x0000,0xa534,0xa534,0x0000,0x18c3,0xc618,0x630c,0x8410,0xb5b6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0xa534,0x8c51,0x9cf3,0xa514,0x1082,0xad55,0x8430,0x9cf3,0x8c71,0x31a6,0xdefb,0x8410,0xa514,0x8c51,0x4a69,0xe73c,0x0000,0xbdf7,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xad75,0x7bcf,0xbdd7,0x528a,0x9492,0xce59,0x0000,0x0000,0x0000,0xa534,0xce59,0x630c,0x7bcf,0x1082,0x8430,0x9cf3,0x73ae,0xad75,0x10a2,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0x9492,0x94b2,0xad55,0x0000,0xa534,0x8c71,0x94b2,0x94b2,0x2124,0xdedb,0x94b2,0x9cd3,0x8c71,0x0000,0x73ae,0xd6ba,0xad75,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xad75,0x7bcf,0xbdb6,0x630c,0x8410,0xce79,0x0000,0x0000,0x0000,0x7bef,0xb596,0x632c,0x7bef,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0x9cd3,0x6b4d,0x738e,0x0000,0x9cf3,0x9492,0x94b2,0xad55,0x0861,0xd69a,0x94b2,0x9492,0xa514,0x1082,0xad55,0x8430,0x9cf3,0x8c71,0x39c7,0xdefb,0x5acb,0x0000,0x8c51,0xd69a,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xdefb,0x8410,0xad55,0x632c,0x6b6d,0xdedb,0x6b6d,0x7bcf,0x2945,0x8c71,0xd6ba,0x0000,0xdefb,0x7bef,0x2945,0x9cf3,0xdedb,0x8430,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x18c3,0x94b2,0x8c71,0x8410,0xa534,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0000,0xb596,0x8c51,0x6b6d,0x632c,0x2945,0xdedb,0x9492,0x6b6d,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xbdf7,0x738e,0xbdd7,0x18e3,0xbdd7,0xb5b6,0x7bcf,0xb5b6,0x0841,0xc618,0xad75,0x632c,0x738e,0x0000,0xa514,0x8430,0x8430,0x9cf3,0x1082,0xd6ba,0x5acb,0x8c71,0xd69a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x6b4d,0x528a,0x8c51,0x2945,0xdefb,0x4a49,0x9cd3,0xbdf7,0x2945,0xd6ba,0x9cd3,0x9cf3,0x7bcf,0x2945,0x9cd3,0x8c71,0x9cf3,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xd69a,0x0000,0x94b2,0x4208,0x9492,0xc638,0x0000,0x0000,0x0000,0x9cf3,0xce79,0x73ae,0x0000,0x0000,0xb596,0xce59,0x94b2,0xdefb,0x3186,0xb596,0xc618,0x8c51,0x94b2,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bef,0x39e7,0x9492,0x1082,0xdedb,0x630c,0x8c51,0xce59,0x18c3,0xd6ba,0x4208,0x9cf3,0xc618,0x0000,0x0000,0xce59,0x8410,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xdedb,0x0000,0x8c71,0x528a,0x8410,0xce79,0x0000,0x0000,0x0000,0x6b6d,0xad55,0x8410,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xa514,0x630c,0x0000,0x0000,0xd6ba,0x7bef,0x39e7,0x9492,0x1082,0xce79,0xad55,0x9492,0x8410,0x2945,0xdefb,0x4a49,0x9cd3,0xbdf7,0x2945,0xdedb,0x5acb,0x0000,0x8c51,0xce79,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xc638,0x9492,0x630c,0xdedb,0x8c71,0x1082,0x0000,0x52aa,0x9cd3,0x94b2,0x94b2,0x4a69,0x0000,0x5aeb,0xd6ba,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xbdf7,0x8c51,0x9cf3,0x0000,0xc638,0xbdd7,0xa534,0xd6ba,0x0841,0xce59,0x7bcf,0x7bcf,0xce59,0x0000,0x9cd3,0x9cf3,0x4a69,0x0000,0x31a6,0xd69a,0xad55,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad55,0xc638,0x8430,0x9cd3,0x0000,0xb596,0xc618,0x8c51,0x94b2,0x0000,0xbdf7,0xbdf7,0x630c,0x0000,0x0000,0xce79,0xb596,0xb596,0xce79,0x0000,0xce79,0xb596,0x9492,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x73ae,0x1082,0x4228,0x2965,0xdedb,0x528a,0x9cd3,0xbdd7,0x2945,0xd6ba,0xd69a,0x632c,0x0000,0x0000,0x0000,0xdedb,0x738e,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x0000,0x4a69,0x0000,0x94b2,0xc618,0x0000,0x0000,0x0000,0x9cd3,0xdefb,0xb596,0x0000,0x0000,0xa534,0xdedb,0xce59,0xd6ba,0x2945,0xad75,0xdefb,0xad75,0x4208,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x8430,0x0000,0x4a69,0x18c3,0xd6ba,0x632c,0x8c51,0xc638,0x18c3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd6ba,0x0000,0x4a49,0x0020,0x8430,0xce59,0x0000,0x0000,0x0020,0x0000,0x4228,0xc618,0x738e,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8430,0xb5b6,0x52aa,0x0000,0xce79,0x8430,0x0000,0x4a69,0x10a2,0xce59,0xd6ba,0x94b2,0x2124,0x2965,0xdedb,0x528a,0x9cd3,0xbdd7,0x2965,0xdedb,0x528a,0x0000,0x8c51,0xce59,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x630c,0xdefb,0xc638,0x4228,0x0000,0x2104,0x738e,0xc638,0x632c,0x18e3,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xdefb,0xa514,0x0000,0x0000,0xbdd7,0xd69a,0xce79,0xce59,0x0020,0xce59,0x73ae,0x73ae,0xce79,0x0000,0x0000,0x9cf3,0xad55,0x4228,0x2965,0xd69a,0xd69a,0x7bcf,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa534,0xdefb,0xb596,0x528a,0x0000,0xb596,0xdefb,0xad75,0x4208,0x0000,0xbdd7,0xdedb,0x9cd3,0x0000,0x0000,0xc618,0xd69a,0xd69a,0xc618,0x0020,0xce59,0xd6ba,0x94b2,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xce59,0x6b6d,0x9492,0xbdf7,0x10a2,0xce79,0x630c,0x9cd3,0xad75,0x3186,0xdedb,0x4a69,0x0000,0x0841,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xc638,0x3186,0xd69a,0x632c,0x8c51,0xc638,0x18e3,0x3186,0x0000,0xa514,0xbdf7,0x0000,0x3186,0x0000,0xb596,0xa534,0x3186,0xdedb,0x2965,0xb5b6,0x94b2,0x4a69,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0x7bef,0x8410,0xc638,0x0020,0xce59,0x6b6d,0x8c71,0xbdd7,0x18e3,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0xce79,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0x3186,0xce59,0x7bcf,0x7bcf,0xce79,0x2945,0x3186,0x10a2,0x18e3,0x2124,0x39c7,0xd6ba,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x0000,0x7bcf,0xce79,0x0841,0xc618,0x7bef,0x8410,0xc638,0x0841,0xd69a,0x5aeb,0x8c51,0xc638,0x10a2,0xce79,0x630c,0x9cd3,0xad75,0x2965,0xdedb,0x632c,0x0000,0x8430,0xce79,0x2945,0x0841,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x2124,0x2945,0x0000,0x8c51,0xce79,0x0000,0xd6ba,0x7bef,0x0000,0x6b4d,0xd6ba,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xa514,0x0000,0x0000,0x0000,0xc638,0x8430,0x630c,0xd69a,0x0841,0xce59,0x8410,0x8410,0xce59,0x0000,0x2965,0x0000,0x94b2,0xbdf7,0x18c3,0xd6ba,0x6b6d,0x0000,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xad55,0x4228,0xd6ba,0x2965,0xb5b6,0x94b2,0x4a69,0xdefb,0x18e3,0xc618,0x9cd3,0x0000,0x2965,0x0000,0xce79,0x73ae,0x73ae,0xce59,0x0841,0xd69a,0x5aeb,0x8c51,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x18c3,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0x5acb,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xd6ba,0x52aa,0x0000,0x9492,0xe73c,0xd6ba,0xdefb,0x4a69,0x94b2,0xe73c,0xd6ba,0xdedb,0x39c7,0xad75,0xad75,0x4208,0xdefb,0x2965,0xbdd7,0x9cf3,0x52aa,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x3186,0xdefb,0x52aa,0x9cf3,0xbdf7,0x0000,0x0000,0xd69a,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0xd6ba,0x632c,0x0000,0x8410,0xe73c,0xd6ba,0xdefb,0x5aeb,0x8410,0xe71c,0xce79,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb5b6,0xe73c,0xb596,0x0000,0x0000,0x0000,0xb596,0xb596,0x0000,0x18c3,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x10a2,0xc618,0x9cd3,0x0000,0x4228,0xdefb,0xe71c,0x6b6d,0x73ae,0xef5d,0xd69a,0x4208,0x0000,0x0000,0x6b6d,0xdefb,0x18c3,0xc638,0x8c71,0x632c,0xe73c,0xd6ba,0xdefb,0x6b6d,0x7bef,0xce79,0x0020,0xd6ba,0x7bef,0x0000,0x6b6d,0xdefb,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0xce59,0x8c71,0x6b4d,0xd6ba,0x0841,0xc638,0xdefb,0xdefb,0xc638,0x0000,0xc638,0xe71c,0x9cf3,0x0000,0x3186,0xd6ba,0xdedb,0xdefb,0xad75,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad55,0xef5d,0xc618,0x2945,0x0000,0xbdf7,0x9cf3,0x52aa,0xdefb,0x18c3,0xbdd7,0xe71c,0xdedb,0xc638,0x0000,0xce79,0x7bef,0x7bef,0xce79,0x0841,0xd6ba,0x6b4d,0x8c71,0xce59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x4a49,0x2965,0x0000,0x0000,0x0000,0x4228,0x2124,0x0000,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x52aa,0x0000,0x0000,0x18e3,0x52aa,0x52aa,0x52aa,0x0000,0x18e3,0x52aa,0x52aa,0x52aa,0x0000,0x3186,0x3186,0x0000,0x4a69,0x0000,0x39c7,0x2945,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x4228,0x31a6,0x0000,0x0000,0x0000,0x4208,0x3186,0x0000,0x0000,0x4a69,0x0000,0x2945,0x39e7,0x0000,0x0000,0x4228,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0841,0x52aa,0x0000,0x0000,0x1082,0x52aa,0x52aa,0x5acb,0x0000,0x18c3,0x5acb,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x5acb,0x632c,0x31a6,0x0000,0x0000,0x0000,0x39c7,0x39c7,0x0000,0x0000,0x4a49,0x0000,0x18e3,0x4208,0x0000,0x0000,0x4228,0x2124,0x0000,0x0000,0x4a69,0x5acb,0x0000,0x0000,0x52aa,0x528a,0x18c3,0x0000,0x0000,0x3186,0x630c,0x0000,0x4208,0x18e3,0x0000,0x52aa,0x52aa,0x5acb,0x0000,0x0020,0x4228,0x0000,0x4a49,0x0020,0x0000,0x0000,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x52aa,0x39e7,0x0000,0x0000,0x0000,0x4208,0x18e3,0x0000,0x4a49,0x0000,0x4208,0x52aa,0x52aa,0x4208,0x0000,0x4a49,0x5aeb,0x2945,0x0000,0x0000,0x4a49,0x52aa,0x5acb,0x39c7,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x4a69,0x632c,0x4228,0x0000,0x0000,0x39e7,0x2945,0x0000,0x4a69,0x0000,0x39c7,0x52aa,0x52aa,0x4a49,0x0000,0x4228,0x0841,0x0841,0x4228,0x0000,0x4a49,0x0000,0x18e3,0x4208,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x31a6,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x4a69,0x0000,0x0861,0x0000,0x0000,0x6b6d,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c71,0x0000,0x0000,0x0861,0x0000,0x18e3,0x9492,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0xa514,0x5acb,0x0000,0x0861,0x0020,0x0000,0x632c,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x94b2,0x9492,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9d14,0x9d34,0x9d14,0x9cd3,0x9492,0x0000,0x0000,0x0861,0x0000,0x0000,0x8c71,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cd3,0x94b2,0x9492,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9d34,0xa534,0x632c,0x0000,0x0841,0x0861,0x0000,0x52aa,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x94b2,0x9492,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x94d3,0x94d3,0x94d3,0x94d3,0x8c71,0x0000,0x0000,0x1082,0x0000,0x0000,0x9492,0x94b2,0x94b2,0x9cd3,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x9492,0x9cd3,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9d34,0xa534,0x6b6d,0x0000,0x0020,0x1082,0x0000,0x528a,0xa514,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x9492,0x9492,0x94b2,0x9cd3,0x9cd3,0x9492,0x94d3,0x94b2,0x9492,0x9cd3,0x9cf3,0x2104,0x0000,0x0861,0x0000,0x0000,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x7bcf,0x0000,0x0000,0x1082,0x0000,0x39e7,0x9cd3,0x9cd3,0x9cd3,0x9492,0x94b2,0x9cd3,0x9492,0x9cd3,0x9492,0x9492,0x9492,0x9492,0x9cd3,0x9492,0x94b2,0x94b2,0x9492,0x9cd3,0x9492,0x9cf3,0x9514,0x94d3,0x9cd3,0x9cf3,0x31a6,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9cd3,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xad55,0x4a49,0x0000,0x0861,0x630c,0xc638,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe73c,0xe73c,0xd6ba,0x7bcf,0x2945,0x0000,0x39c7,0x9492,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe71c,0xef5d,0xb596,0x4a69,0x0000,0x0000,0x5acb,0xbdf7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xe575,0xe679,0xe75d,0xdefb,0x8410,0x2965,0x0000,0x31a6,0x8c51,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xeefb,0xbdf7,0x528a,0x0000,0x0000,0x528a,0xbdd7,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe5d7,0xe6ba,0xe6ba,0xe5d7,0xe71c,0x8c51,0x31a6,0x0000,0x2965,0x8410,0xdefb,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe5d7,0xeeba,0xbe18,0x5acb,0x0000,0x0000,0x4a69,0xb596,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe73c,0xe5f7,0xe679,0xe75d,0xe71c,0xe73c,0x9492,0x39c7,0x0000,0x2945,0x7bcf,0xd6ba,0xe73c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xef5d,0xc638,0x630c,0x0861,0x0000,0x4a49,0xad55,0xef5d,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe75d,0xe638,0xe575,0xe618,0xe75d,0xe73c,0x9cd3,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xad75,0x0000,0x18c3,0xd69a,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xde9a,0xdedb,0xdedb,0xe71c,0x5acb,0x0000,0x8430,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xdeba,0xdedb,0xe73c,0xb5b6,0x0000,0x0000,0xce59,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd26a,0xd000,0xd430,0xdeba,0xdedb,0xe73c,0x6b4d,0x0000,0x73ae,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xd000,0xd534,0xe77d,0xc618,0x0000,0x0000,0xc618,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd26a,0xd4f4,0xd4f4,0xd26a,0xdedb,0xef5d,0x73ae,0x0000,0x6b4d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde59,0xd208,0xd514,0xe75d,0xce59,0x0000,0x0000,0xb5b6,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd2cb,0xd430,0xdeba,0xdedb,0xdedb,0xef5d,0x8430,0x0000,0x5acb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd69a,0x18c3,0x0000,0xad55,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd38e,0xd000,0xd30c,0xde79,0xdeba,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd24a,0xd472,0xdf1c,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd5b6,0xd023,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xdf1c,0xd472,0xd24a,0xdefb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd0c4,0xd555,0xdf3c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd38e,0xdf1c,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd001,0xddf7,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd146,0xd555,0xdf3c,0xd596,0xd043,0xde9a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde79,0xde9a,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdeba,0xde59,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd38e,0xd3cf,0xde79,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde38,0xd26a,0xddb6,0xdeba,0xdf1c,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd32d,0xd000,0xd000,0xd34d,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdd76,0xd208,0xde59,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd514,0xd229,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd166,0xd000,0xd000,0xd4d3,0xdefb,0xde18,0xdeba,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdf1b,0xdf1c,0xdefb,0xdedb,0xdf1c,0xdedb,0xdefb,0xdefb,0xdedb,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdedb,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd451,0xd555,0xdefb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde59,0xd3af,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddb6,0xde18,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xde38,0xd000,0xde59,0xdefb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xddf7,0xd209,0xd209,0xddf7,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd4b2,0xd38e,0xde9a,0xdf1c,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd575,0xd3ae,0xd555,0xdeba,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xd38e,0xde18,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd555,0xd0a4,0xd3f0,0xde59,0xdf5c,0xdf3c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdf1c,0xdd75,0xd492,0xd596,0xdeba,0xd514,0xde9a,0xddb6,0xddb6,0xde9a,0xd514,0xdeba,0xddb6,0xd4d3,0xd4b3,0xd4f4,0xdeba,0xd575,0xd4d3,0xd4f3,0xd514,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd431,0xd555,0xdefb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddf8,0xd431,0xd3cf,0xde9a,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdd96,0xddd7,0xdefb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd472,0xd410,0xde79,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdd96,0xd451,0xd451,0xdd96,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdeba,0xd3ae,0xd451,0xde18,0xdf1c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdd75,0xd3af,0xd4d3,0xdf3c,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde59,0xd492,0xd36e,0xde18,0xdefb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xde9a,0xd514,0xd000,0xd3f0,0xd535,0xd4b3,0xd4f4,0xdeba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdeba,0xde18,0xd34d,0xd043,0xd431,0xde79,0xd000,0xde59,0xd36e,0xd36e,0xde59,0xd000,0xde9a,0xd34d,0xd000,0xd1e8,0xd26a,0xdeba,0xd3cf,0xd000,0xd000,0xd2ec,0xdeba,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xdefb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd4b3,0xd34d,0xdf3c,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1b,0xd38e,0xd451,0xdf1c,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf1c,0xd514,0xd2cb,0xdf3c,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd2ab,0xddb6,0xddb6,0xd2ab,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdf3c,0xd2cb,0xd514,0xdf3c,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xd30c,0xd514,0xdf5d,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xddd7,0xd209,0xdedb,0xdefb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xde18,0xd1a7,0xd28a,0xd229,0xd1c8,0xd1a7,0xd26a,0xde9a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xde9a,0xd063,0xddb6,0xdf1c,0xdefb,0xde59,0xd001,0xde38,0xd3ae,0xd3cf,0xde59,0xd001,0xde9a,0xd32d,0xd3f0,0xdf1c,0xdefb,0xdedb,0xdf3c,0xd410,0xd2ec,0xdf3c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xde9a,0xd26a,0xd4d3,0xdf7d,0xde59,0xd003,0xd063,0xd000,0xd431,0xde59,0xd001,0xde9a,0xd3af,0xd000,0xd34d,0xdefb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdf3c,0xde59,0xd3f0,0xd451,0xde79,0xd002,0xd514,0xd2cb,0xd3ef,0xde59,0xd001,0xde9a,0xd34d,0xd2cb,0xde18,0xdedb,0xdedb,0xdf1c,0xd3f0,0xd2ec,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc618,0x528a,0x5acb,0x5aeb,0x5acb,0x630c,0x6b6d,0x5acb,0xc638,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x8410,0x9cf3,0xef5d,0xdedb,0xdedb,0xef5d,0x9cf3,0x8410,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xdefb,0xe71c,0x738e,0x52aa,0x5aeb,0x52aa,0x6b4d,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdefb,0x94b2,0x94b2,0xdefb,0xdedb,0xdedb,0xdefb,0xad55,0x8430,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdedb,0xce79,0x738e,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0xd6ba,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xdefb,0x9cf3,0x9492,0xe73c,0xdedb,0xdedb,0xdefb,0xb596,0x7bef,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x738e,0xce59,0xe71c,0xd6ba,0xdedb,0xe73c,0x8410,0xb596,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe71c,0xdedb,0xe71c,0xe71c,0xdedb,0xdefb,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xdeba,0xd472,0xd492,0xd430,0xd535,0xde79,0xd000,0xde9a,0xd3af,0xd36e,0xde59,0xd000,0xde9a,0xd2cb,0xd3f0,0xdf5d,0xdedb,0xdedb,0xdf1c,0xd3cf,0xd28a,0xdf1c,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc638,0x8410,0x8430,0x8430,0x9492,0x6b4d,0x0000,0x8410,0xce79,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0xa514,0x7bcf,0xa534,0xe71c,0xe71c,0xa534,0x7bcf,0xa514,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x94b2,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b4d,0xe71c,0xdedb,0xdedb,0xe71c,0x8c51,0x39e7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0x7bef,0x94b2,0x9492,0x9492,0x9492,0x8430,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x0000,0x9cf3,0xdefb,0xdedb,0xe71c,0x9cd3,0x2124,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0x632c,0xc618,0xef5d,0xd6ba,0x8c71,0x0000,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xd69a,0x8c51,0x8430,0xce59,0xc618,0x8c51,0x9492,0xdedb,0xdedb,0xe71c,0xc638,0x9492,0xdefb,0xdedb,0xe71c,0xbdf7,0x94b2,0xe71c,0xdefb,0xad75,0x8c51,0x8c51,0x9492,0xd6ba,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe73c,0xde9a,0xd2ec,0xd187,0xd575,0xdf5d,0xde79,0xd32d,0xde79,0xd4b3,0xd4b3,0xde79,0xd32d,0xde9a,0xd471,0xd4d3,0xdf1c,0xdedb,0xdedb,0xdf1c,0xd4d3,0xd431,0xdefb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xe71c,0xe71c,0xef5d,0xd6ba,0x9cf3,0x73ae,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xef5d,0xad55,0x630c,0xbdd7,0xbdd7,0x630c,0xad55,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x5acb,0xbdf7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0861,0xa534,0xc618,0xbdf7,0xbdf7,0xbdf7,0x5aeb,0xb5b6,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8c51,0x0000,0x632c,0xb575,0xd6ba,0xe73c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x2965,0x3186,0x8c71,0xbdd7,0xad55,0x5acb,0x0000,0xa514,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad55,0xd6ba,0xa514,0x5acb,0x4228,0xc618,0x9cd3,0x0000,0x632c,0xad55,0xd6ba,0xce79,0x94b2,0x630c,0xb596,0xd6ba,0xce59,0x8c71,0x630c,0xb5b6,0xdefb,0x630c,0x0000,0x5aeb,0x630c,0xd69a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdefb,0xdf1c,0xdefb,0xdedb,0xdedb,0xdefb,0xdedb,0xdefb,0xdefb,0xdedb,0xdefb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x7bcf,0x6b6d,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x738e,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0x9492,0x4a69,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x18c3,0x1082,0x2104,0x18e3,0x18c3,0x2945,0xc638,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x6b6d,0xdedb,0x2104,0xb5b6,0xe71c,0x9cf3,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x10a2,0xc638,0x9cf3,0x0000,0x4a69,0xdefb,0x4228,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad75,0xad55,0x4228,0xd6ba,0xdefb,0xe73c,0x9492,0x528a,0xd69a,0x2945,0xc618,0x8430,0x5aeb,0xce79,0x0000,0xce59,0x738e,0x73ae,0xd69a,0x2104,0xd69a,0x6b4d,0x7bef,0xe71c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xe71c,0x52aa,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0020,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xe71c,0x6b4d,0x6b6d,0xe73c,0xdedb,0xdedb,0xe73c,0x9492,0x4228,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0841,0xbdd7,0xd6ba,0xd69a,0xd6ba,0xd69a,0x39c7,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xd6ba,0x39e7,0xad75,0xad75,0x39e7,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xdefb,0xd69a,0xd6ba,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa534,0xe73c,0xbdd7,0x10a2,0xce79,0xef5d,0x9cd3,0x0000,0x31a6,0xce59,0xe71c,0x8c71,0x0000,0x0861,0x0000,0xce79,0x7bcf,0x738e,0xe71c,0xd6ba,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdefb,0xdefb,0x632c,0xad55,0xdedb,0xe73c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xef5d,0xa534,0x5aeb,0xc618,0xc618,0x5aeb,0xa534,0xef5d,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xbdf7,0x0000,0xd69a,0xe73c,0xe71c,0xe73c,0xdedb,0x4a69,0xbdd7,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xce79,0x8c71,0x632c,0xe73c,0xef5d,0x7bef,0x7bcf,0xce59,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0xce59,0xef5d,0xe73c,0xe73c,0xe71c,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x8410,0x630c,0xe71c,0xdedb,0xc638,0x7bef,0x0000,0x528a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xd69a,0x18c3,0xb5b6,0xe71c,0xdedb,0xdedb,0xdedb,0x39e7,0x9cf3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x6b4d,0x4a49,0xad55,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xa514,0xe73c,0xe71c,0xc618,0x4a69,0xbdf7,0x9cf3,0x39e7,0xc618,0xdedb,0xe73c,0x8430,0x52aa,0xb596,0x0000,0xce59,0x6b6d,0x73ae,0xdedb,0x4a69,0xd69a,0x6b4d,0x738e,0xd6ba,0xe71c,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x18c3,0xce59,0xdefb,0xdefb,0xc638,0x6b6d,0x0000,0x6b4d,0x8430,0x7bcf,0x7bcf,0x7bcf,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x8410,0xe71c,0xdedb,0xdefb,0x9cd3,0x7bcf,0xad75,0xe71c,0xe71c,0xad75,0x7bcf,0x9cd3,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0xc618,0xdefb,0xdedb,0xce79,0x9cf3,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x9492,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x738e,0xe71c,0xdedb,0xdedb,0xe71c,0xc638,0x8c51,0x7bcf,0x7bcf,0x8430,0xbdf7,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xbdd7,0x0000,0x0000,0xbdd7,0xdefb,0xdefb,0xce59,0x0000,0x632c,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x94b2,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x738e,0x0000,0x632c,0xdefb,0xdedb,0xe71c,0x7bcf,0x528a,0xe71c,0xdedb,0xe71c,0xbdf7,0x5acb,0x31a6,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xc618,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xce79,0x0000,0xb596,0xe71c,0xdedb,0xdedb,0xdedb,0x2104,0x9cd3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x0000,0x0000,0x9492,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0xad75,0xc618,0x738e,0x8430,0x8c71,0xd69a,0x8c71,0x4208,0xe73c,0xdedb,0xe71c,0x7bcf,0x630c,0xd6ba,0x0000,0xc618,0xbdf7,0x8c51,0x7bcf,0x9cd3,0xdedb,0x630c,0x31a6,0x8430,0x8410,0xd69a,0xe73c,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0xad55,0x0000,0x18c3,0xce79,0xdefb,0xdefb,0xc618,0x630c,0x7bcf,0x6b6d,0x632c,0x6b4d,0x632c,0x632c,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x52aa,0x0000,0x8410,0xe73c,0xdedb,0xdefb,0x8c51,0xa514,0xef5d,0xdedb,0xdedb,0xef5d,0xa514,0x8c51,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xb596,0x0000,0x0000,0xc638,0xe71c,0xdedb,0xdefb,0xe71c,0x7bef,0x630c,0x6b4d,0x632c,0x73ae,0xdefb,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x632c,0x0000,0x73ae,0xe73c,0xdedb,0xdedb,0xdedb,0xe71c,0xd69a,0x632c,0x5acb,0xc618,0xe73c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xbdf7,0x0000,0x0000,0xbdf7,0xe71c,0xdedb,0xce79,0x7bef,0x6b4d,0x632c,0x6b4d,0x632c,0x6b6d,0xd6ba,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x73ae,0x0000,0x632c,0xe71c,0xdedb,0xdefb,0xa534,0x94b2,0xdefb,0xdedb,0xdedb,0xe73c,0xbdf7,0x8430,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xc638,0x0000,0x0000,0xb596,0xe71c,0xdedb,0xd69a,0x7bcf,0xc618,0xdefb,0xdedb,0xdedb,0xdedb,0x8430,0xb5b6,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe73c,0x8410,0x0000,0x52aa,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x8410,0x6b4d,0xb596,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce79,0x18c3,0x0000,0xb596,0xc618,0x5acb,0x6b6d,0xd6ba,0xe73c,0xad55,0x8c71,0xdefb,0xdedb,0xdefb,0xa534,0x94b2,0xd6ba,0x7bcf,0xce59,0xef5d,0xb5b6,0x7bcf,0xe73c,0xdefb,0x9cf3,0x6b4d,0x630c,0x738e,0xd69a,0xef5d,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x94b2,0x0000,0x10a2,0xb5b6,0xd6ba,0xdedb,0xdefb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce59,0x4a69,0x0000,0x73ae,0xd69a,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x9cf3,0x0000,0x0000,0xad75,0xd6ba,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x5acb,0x0000,0x632c,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xa534,0x0000,0x0000,0xa534,0xd6ba,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xce79,0x632c,0x0000,0x5acb,0xce79,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xad75,0x0000,0x0000,0x9cf3,0xd6ba,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x73ae,0x0000,0x4a69,0xce59,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xe71c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0xb5b6,0x10a2,0x0000,0x9492,0xdedb,0xe73c,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xe71c,0xdedb,0xdedb,0xdefb,0xe71c,0xdedb,0xdedb,0xe71c,0xe71c,0xe71c,0xe71c,0xdedb,0xd69a,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8410,0x0000,0x0000,0x0000,0x0000,0xad75,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0xce59,0x18c3,0x0000,0x0000,0x0000,0x52aa,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x8c71,0x0000,0x0000,0x0000,0x0000,0xa534,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd69a,0x3186,0x0000,0x0000,0x0000,0x4228,0xd6ba,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xd6ba,0x4208,0x0000,0x0000,0x0000,0x3186,0xd69a,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xa534,0x0000,0x0000,0x0000,0x0000,0x8c71,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0x52aa,0x0000,0x0000,0x0000,0x18c3,0xce59,0xdefb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xe71c,0xad75,0x0000,0x0000,0x0000,0x0000,0x8410,0xe71c,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdedb,0xdefb,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x2945,0x0000,0x0020,0x0000,0x0000,0x3186,0x528a,0x4a69,0x4a49,0x31a6,0x3186,0x4208,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x0000,0x0000,0x0861,0x0000,0x0000,0x31a6,0x3186,0x4228,0x4208,0x39c7,0x4a49,0x31a6,0x4a49,0x4208,0x3186,0x31a6,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x528a,0x2965,0x0000,0x0000,0x0000,0x0000,0x2104,0x4208,0x4a69,0x4a49,0x31a6,0x3186,0x3186,0x39c7,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x0020,0x0000,0x0000,0x0000,0x1082,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x31a6,0x0000,0x0000,0x0841,0x0000,0x2124,0x4a49,0x3186,0x3186,0x4a49,0x4a69,0x4208,0x31a6,0x4a69,0x31a6,0x4228,0x4208,0x3186,0x31a6,0x3186,0x4a49,0x4208,0x39c7,0x4a49,0x31a6,0x4a49,0x4a69,0x4208,0x31a6,0x4a49,0x1082,0x0000,0x0861,0x0000,0x0000,0x2965,0x4228,0x4a69,0x4a69,0x4a49,0x31a6,0x4a49,0x4a69,0x4208,0x3186,0x31a6,0x3186,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x39c7,0x0000,0x0000,0x0861,0x0000,0x0000,0x39e7,0x4a69,0x4a69,0x39c7,0x3186,0x3186,0x31a6,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x18c3,0x0000,0x0000,0x0000,0x0000,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x39e7,0x0000,0x0000,0x0000,0x0000,0x2945,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x10a2,0xa534,0x5acb,0x0000,0x0000,0x0861,0x9cf3,0xbdd7,0x632c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xb596,0xb596,0xb5b6,0x4a49,0x632c,0x9492,0x0000,0xa514,0x31a6,0x6b4d,0xb5b6,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0020,0x0000,0x8c51,0x8c51,0x0000,0x0000,0xa534,0xad55,0xb575,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x9cd3,0x6b4d,0x39e7,0xad75,0xb596,0x18c3,0x0000,0x632c,0x9cd3,0x0000,0x9cf3,0x4228,0x5aeb,0xb596,0xb596,0xb5b6,0x39c7,0x738e,0x8c51,0x0000,0xa534,0x39c7,0x0000,0x632c,0x9cd3,0x0000,0x0000,0x0841,0x0000,0x4a69,0xb575,0xb5b6,0x31a6,0x0000,0x0000,0x0000,0xb596,0x2104,0x0000,0x632c,0xb5b6,0xa534,0xb5b6,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c51,0xbdd7,0x9492,0x0000,0x0000,0x94b2,0xad75,0xad55,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xdedb,0x7bef,0x0000,0x0000,0x3186,0xdedb,0xbdf7,0x9cd3,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xe71c,0xa514,0xad75,0x4208,0x9cd3,0xce79,0x0000,0xe73c,0x5aeb,0x9cd3,0xdedb,0x9cd3,0x9492,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0x9cf3,0x9cf3,0x73ae,0x0861,0x9cd3,0xdedb,0xd69a,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x9492,0x632c,0xe73c,0xad55,0x9492,0x3186,0x8c51,0xd69a,0x0000,0xdefb,0x738e,0x8c51,0xdefb,0x9cf3,0xad75,0x2965,0xad55,0xc618,0x18c3,0xe73c,0x5aeb,0x0000,0x8430,0xe71c,0x8c71,0x2945,0x0000,0x0000,0x6b4d,0xe73c,0xad75,0x94b2,0x4a69,0x39c7,0x9492,0xad55,0x94b2,0x39e7,0x5acb,0xbdf7,0xe71c,0xb5b6,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdf7,0xd69a,0x9cd3,0x8c51,0x0020,0x8c51,0xd69a,0xdedb,0x9cd3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x3186,0xd6ba,0x39e7,0x9cf3,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8430,0xd69a,0x4228,0x0000,0x0000,0x8410,0xad75,0x632c,0xbdd7,0x4208,0x9cf3,0xbdf7,0x52aa,0xc638,0x528a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0x9492,0x9492,0xd6ba,0x0000,0x0000,0xbdd7,0x9cf3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0000,0xd69a,0x8410,0x73ae,0xd69a,0x630c,0xb5b6,0x528a,0x8c71,0xce59,0x39e7,0x0000,0x0000,0x8c71,0xad55,0x632c,0xbdf7,0x4228,0x2945,0x9cf3,0xdefb,0xc618,0x39e7,0x0000,0x0000,0x6b4d,0xd6ba,0x0000,0xc638,0x9492,0x6b6d,0xdedb,0x0000,0xd69a,0x9492,0x0000,0x4208,0xdedb,0x2945,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad55,0x6b4d,0xc638,0x2965,0x0000,0x9cf3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x7bcf,0x0000,0x0000,0x3186,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0xe71c,0xd6ba,0x4208,0x0000,0x0000,0x6b4d,0xd6ba,0x31a6,0x0000,0x9cd3,0xe73c,0xc638,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc618,0xdefb,0xdefb,0xc618,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x738e,0xe71c,0xd6ba,0x4228,0x0000,0x8c71,0xe73c,0xce79,0x3186,0x0000,0x0000,0x73ae,0xd6ba,0x0000,0x0000,0xa514,0xe73c,0xc618,0x0000,0x0000,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b4d,0xd69a,0x0020,0xce59,0x8c51,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xe73c,0xb5b6,0x0000,0x0000,0x0000,0xa534,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd69a,0x738e,0x0000,0x0000,0x3186,0xd6ba,0x52aa,0x9cd3,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xce79,0x10a2,0x0000,0x0000,0x8c71,0xbdd7,0x39e7,0xce59,0x4a69,0x9cd3,0xbdf7,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce59,0x8430,0x8430,0xce59,0x0000,0x0000,0xbdd7,0xa534,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0x8c51,0x6b4d,0xd69a,0x0841,0xce59,0x7bcf,0x7bcf,0xce79,0x39c7,0xce59,0x630c,0x8c71,0xc638,0x0000,0x0000,0x0000,0x0000,0x7bcf,0xd69a,0x18c3,0x0000,0x0000,0x8430,0xe71c,0xd69a,0x4208,0x0000,0x0000,0x6b4d,0xd6ba,0x18c3,0xc618,0x8c51,0x6b6d,0xd6ba,0x0000,0xce79,0x8c71,0x0000,0x5acb,0xdedb,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xbdd7,0xad55,0x0000,0x0000,0x0020,0x0000,0xa514,0xbdd7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xd6ba,0xd69a,0xc638,0xa514,0x2104,0xe71c,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xe73c,0xbdf7,0xc638,0x528a,0x94b2,0xce79,0x0000,0xe71c,0x5acb,0xa514,0xc618,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd6ba,0x7bef,0x7bef,0xd6ba,0x0000,0x0000,0xc618,0xad55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xce79,0x9492,0x6b6d,0xdedb,0x0841,0xd69a,0x8410,0x8410,0xd69a,0x0000,0xdefb,0x6b6d,0x8c51,0xe73c,0xbdf7,0xc638,0x5acb,0x0000,0x7bef,0xdefb,0x18c3,0x0000,0x8c71,0xdedb,0xd6ba,0x6b4d,0x2104,0x0000,0x0000,0x6b6d,0xe71c,0x18c3,0xce59,0x9cd3,0x0000,0x7bcf,0xc618,0x8410,0x31a6,0x0000,0x5aeb,0xe71c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xad55,0x0000,0x0000,0x0000,0xa514,0xdedb,0xdefb,0xb596,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x8430,0x9cd3,0xa514,0x8410,0x0861,0x8c71,0x39c7,0x6b4d,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x52aa,0x9cd3,0x9cd3,0xa514,0x4228,0x5aeb,0x8410,0x1082,0x8c71,0x39c7,0x6b4d,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x528a,0x528a,0x8c51,0x0000,0x0000,0x7bef,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x5aeb,0x4228,0x8c71,0x0020,0x8430,0x528a,0x528a,0x8430,0x0020,0x8c71,0x4228,0x52aa,0x9cd3,0x9cd3,0x9cf3,0x4228,0x0000,0x528a,0x8c71,0x1082,0x0000,0x73ae,0xa514,0x7bef,0x0000,0x0000,0x0020,0x0000,0x4228,0x8c71,0x1082,0x8410,0x632c,0x0000,0x1082,0x9cd3,0x2945,0x0000,0x0000,0x39c7,0x9492,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0x6b6d,0x0000,0x0000,0x0000,0x8430,0x9cd3,0x94b2,0x9492,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xc638,0x0000, +0x0000,0xc638,0x8c71,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0x0000, +0x0000,0xc638,0xc618,0x8c71,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x8c71,0xc618,0xc638,0x0000, +0x0000,0x9cf3,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x9cf3,0x0000, +0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020}; diff --git a/MCUME_teensy/teensylogo/mcume.h b/MCUME_teensy/teensylogo/mcume.h new file mode 100644 index 0000000..54c0d49 --- /dev/null +++ b/MCUME_teensy/teensylogo/mcume.h @@ -0,0 +1,87 @@ +const uint16_t PROGMEM logo[] = { +0x00fc,0x0056,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x2120,0x4a01,0x5242,0x5a82,0x62c3,0x4201,0x0120,0x0140,0x0160,0x4a42,0x8be4,0x9404,0x9405,0x9405,0x6b23,0x3201,0x3201,0x5ae3,0x83c4,0x3a21,0x52a2,0x83c4,0x3a41,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01a0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x0200,0x0200,0x0200,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a00,0x0a20,0x1221,0x5305,0x73c8,0x6b67,0x2a62,0x1a21,0x6346,0x8c29,0x5305,0x1220,0x0a20,0x0a20,0x0a20,0x0a20,0x0a20,0x1220,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x2a42,0x1a21,0x0a00,0x0a00,0x0200,0x0200,0x0200,0x0200,0x0a00,0x3262,0x8408,0x52e4,0x0a00,0x0200,0x0200,0x0a00,0x0a00,0x0200,0x0200,0x0a00,0x0a00,0x0200,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x0200,0x0200,0x0200,0x1a01,0x6345,0x8c27,0x8407,0x4ac3,0x11e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01e0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x2201,0x7ba5,0x9486,0x9466,0x6b84,0x2200,0x01c0,0x01c0,0x01c0,0x01c0,0x01c0,0x2a21,0x6b44,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x7ba4,0x5b03,0x19c0,0x5b03,0x8c05,0x5ac3,0x09a0,0x01a0,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0180,0x0160,0x0160,0x0140,0x0140,0x0120,0x0100,0x0100,0x00e0,0x00c0,0x00a0,0x0080,0x0060,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x08e0,0x5262,0x7b63,0x8be4,0x9c45,0x9c65,0x5b02,0x0220,0x0240,0x1a60,0x94a5,0xe668,0xeea8,0xf6a9,0xeec9,0xd648,0xbdc7,0xbdc7,0xce28,0xcde8,0x5ba3,0x9d06,0xce08,0x5383,0x0ae0,0x0ae0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x12e0,0x1300,0x1300,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x0b20,0x0b20,0x1320,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1360,0x2361,0x3382,0x3382,0x2361,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1380,0x1380,0x1381,0x1381,0x1381,0x1381,0x1b81,0x33a2,0x3ba3,0x2ba2,0x1b81,0x13a1,0x13a1,0x13a1,0x1381,0x1ba1,0x1b81,0x1b81,0x2381,0x2381,0x2381,0x2381,0x23a1,0x2381,0x1b81,0x13a1,0x23a1,0x5c46,0x7cc8,0x6c87,0x43e4,0x8d09,0xce6e,0xb5ec,0x5c26,0x1ba1,0x13a1,0x13a1,0x13a1,0x1381,0x1381,0x1b81,0x33a2,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba2,0x33a3,0x2382,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x5404,0xdeae,0x9529,0x1b81,0x1381,0x1381,0x1380,0x1380,0x1380,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1380,0x1360,0x2381,0x6c46,0x9508,0x9507,0x5be4,0x1b40,0x1340,0x1340,0x0b40,0x0b40,0x0b40,0x0b40,0x0b40,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x1320,0x5be3,0xdeaa,0xd669,0xce29,0xde89,0xa547,0x8cc5,0x8cc5,0x8cc5,0x8cc5,0x8cc5,0x94e6,0xad67,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xbda7,0xad26,0x9ce6,0xce28,0xc5e8,0x63c3,0x12e0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x02a0,0x0280,0x0280,0x0280,0x0260,0x0240,0x0220,0x0200,0x01e0,0x01a0,0x0180,0x0140,0x0120,0x00e0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x2120,0x62c2,0x7b63,0x8bc4,0x9c45,0x8c04,0x2a20,0x0220,0x0240,0x3ac1,0xc587,0xe688,0xeea9,0xeea9,0xde48,0x73e4,0x5ba3,0x5ba3,0x5ba3,0x4b62,0x4b62,0xc5e7,0xad47,0x2b01,0x0ae0,0x1ae0,0x7c44,0x94c5,0x94c5,0x94c5,0x94c5,0x94c5,0x94c5,0x94c6,0x94e6,0x7c44,0x2b21,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x0b20,0x0b20,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1320,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1360,0x43c3,0x9d48,0xc62b,0xc64b,0x9d28,0x43c3,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x3bc3,0x84c8,0xbe0c,0xce4d,0xb5cb,0x5c46,0x1ba1,0x13a1,0x13a1,0x3be3,0x84e8,0x9529,0x9529,0x9529,0x9529,0x9549,0x9549,0x9549,0x9529,0x6466,0x2ba2,0x23a1,0x23a1,0x2ba2,0x5c46,0xb5cc,0xd68e,0x952a,0x3be4,0x43e4,0x4c25,0x4c24,0x4c24,0x4c24,0x4c24,0x4c25,0x5c45,0x8d08,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x6466,0x1ba1,0x1381,0x1381,0x1381,0x1381,0x1381,0x33a3,0x8ce8,0xe6ee,0xce4c,0x7ca7,0x33a2,0x1380,0x1380,0x1361,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1b60,0x5c25,0xa568,0xb5c9,0x9507,0x4be4,0x1340,0x1340,0x1340,0x1340,0x0b40,0x0b40,0x1340,0x1340,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x3b82,0x7465,0x9d06,0xe6ca,0xde8a,0xc609,0xeeea,0xce08,0xb587,0xb587,0xb587,0xb587,0xb587,0xb587,0xbd87,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c7,0xc5c7,0xc5c7,0xc5c7,0xc5c7,0xbd87,0xa526,0x4b62,0x12e0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x02a0,0x02a0,0x0280,0x0280,0x0260,0x0240,0x0220,0x0200,0x01e0,0x01c0,0x0180,0x0140,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x39c1,0x62c2,0x7b43,0x8bc4,0x9425,0x6b23,0x1a00,0x1220,0x0a40,0x73c4,0xd5e8,0xe668,0xee89,0xeea9,0xb567,0x2ae1,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x6be3,0xd648,0x8485,0x0ae0,0x0ae0,0x4b62,0xde69,0xff0a,0xff0a,0xff2a,0xff2a,0xff2a,0xff2a,0xff2a,0xff2a,0xbdc8,0x3b62,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x1320,0x2341,0x5be3,0xa547,0xbde8,0xbde8,0xbde8,0xbde8,0xbde9,0xbde9,0xad88,0x5be4,0x1b40,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1360,0x1360,0x9d48,0xeeed,0xb58a,0xce4b,0xef0d,0xc64b,0xbe2b,0xbe2b,0xbe2b,0xc62b,0xc62b,0xc62b,0xbe2c,0xc62c,0xc62c,0xbe2c,0xbe2c,0xc62c,0xc62c,0xc62c,0xc62c,0xc62c,0xc62c,0xc62c,0xbe2c,0xbe2c,0xc62d,0xe6ee,0xd68d,0xadab,0xef0f,0xadab,0x23a1,0x13a1,0x13a1,0x6c86,0xe6ee,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xdeae,0xc62d,0xc62d,0xc62d,0xc62d,0xce6e,0xbe0d,0x6c67,0x3bc3,0x84e8,0xc64d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xce4d,0xf730,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xf750,0xadcb,0x23a2,0x13a1,0x1ba1,0x1ba1,0x1381,0x1381,0x7cc8,0xe6ce,0xce4d,0xce4d,0xe6ee,0xbe0c,0xadcb,0xadcb,0xadcb,0xadcb,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xadca,0xd68c,0xe6ed,0xbdca,0xe6cc,0xbdea,0x3382,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x0b20,0x0b20,0x0b20,0x0b20,0x0b20,0x0b40,0x2361,0x9507,0xe6ca,0xd669,0xe6ca,0xeeeb,0xd669,0xc608,0x9d06,0x8ca5,0x8ca5,0x8ca5,0x8ca5,0x8ca5,0x8ca5,0xa506,0xd628,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde68,0xde68,0x9d06,0x3321,0x0ae0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x02a0,0x0280,0x0280,0x0260,0x0a40,0x0220,0x0200,0x01e0,0x01c0,0x0180,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x2940,0x41c1,0x4a21,0x5282,0x6303,0x6b43,0x83e4,0x83e4,0x4ae2,0x5b22,0x8c24,0x9ca5,0xd608,0xbd67,0x63a3,0x12c0,0x0ac0,0x0ac0,0x0ac0,0x22e0,0xa506,0xd628,0x5382,0x0ae0,0x0ae0,0x6be3,0xce08,0xde69,0xde69,0xde69,0xde69,0xde89,0xde89,0xde89,0xde89,0x8ca5,0x1b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x2320,0x63e4,0xa567,0xce4a,0xb589,0x84a6,0x7c85,0x7c85,0x7c85,0x7c85,0x8cc6,0xc62a,0xce4a,0x7c86,0x2b61,0x1340,0x1340,0x1341,0x1360,0x1360,0x1360,0x1360,0x1360,0x8ce7,0xe6ac,0xde8c,0xdeac,0xbdeb,0x7c87,0x6c46,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c66,0x6c67,0x6c67,0x6c67,0x6c67,0x7c87,0xce4d,0xdece,0xd6ae,0xdeae,0x84c8,0x1ba1,0x13a1,0x13a1,0x6c66,0xce6d,0xe6ce,0xe6ce,0xe6ce,0xe6ce,0xe6ce,0xe6ce,0xdece,0xdece,0xad8b,0x7487,0x7487,0x7487,0x7487,0x6c67,0x43e4,0x5425,0xadab,0xd68e,0x9d6b,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x7ca7,0xce4d,0xdece,0xe6ce,0xe6ce,0xdecf,0xdecf,0xdece,0xe6ce,0xdece,0xa58b,0x2ba2,0x5425,0x8d09,0x9529,0x7487,0x33c3,0x7487,0xd68e,0xd68e,0xd66d,0xe6ef,0xad8b,0x9509,0x9509,0x9509,0x9509,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0x9508,0xbdeb,0xe6cd,0xc62b,0xe6cc,0xce2b,0x3b82,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x0b20,0x0b20,0x0b40,0x0b40,0x0b40,0x2361,0x9507,0xe6eb,0xbdc8,0xce49,0xeeea,0xc5e8,0xbda8,0xbda8,0xbda8,0xbda7,0xbda7,0xb5a7,0xbda7,0xb5a7,0xbda7,0xe6a9,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6e9,0xf6c9,0xf6e9,0xce08,0x4b62,0x0ae0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x02a0,0x0280,0x0280,0x0260,0x0240,0x0220,0x0200,0x01e0,0x01c0,0x01a0,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2120,0x3160,0x39c1,0x4a21,0x5282,0x62e2,0x7ba4,0x8c05,0x8c04,0xb526,0xace6,0x9445,0x9485,0xad06,0xcde8,0x7c04,0x12a0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x3b21,0xcde8,0xb567,0x22e0,0x0ae0,0x0ae0,0x1ae0,0x2b01,0x3301,0x3301,0x3301,0x3321,0x3321,0x3321,0x3321,0x3321,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b20,0x1320,0x5be3,0xce49,0xbdc9,0x6c25,0x2b41,0x1320,0x1b21,0x1b41,0x1b41,0x1340,0x1b40,0x53c3,0xb5c9,0xd66b,0x6c45,0x1340,0x1341,0x1360,0x1b61,0x1b61,0x1360,0x1360,0x1360,0x2b81,0x6c45,0x8ce8,0x7467,0x3ba3,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x1b81,0x43e4,0x7cc8,0x84e9,0x5c26,0x23a2,0x13a1,0x13a1,0x13a1,0x23a1,0x33a2,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x33c3,0x23a2,0x1ba1,0x1ba1,0x1ba1,0x1ba1,0x23a2,0x74a8,0xc64d,0xc64d,0x7ca8,0x2ba2,0x1ba1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1ba1,0x33a2,0x3bc3,0x3bc3,0x3bc3,0x3bc3,0x3bc3,0x3bc3,0x33c3,0x33c3,0x2ba2,0x4c04,0xc64d,0xe6ef,0xd66e,0xdecf,0x9529,0x2bc2,0x6c67,0xa56a,0xad8b,0x7cc8,0x33a3,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x3ba3,0x84c8,0xad69,0x9d48,0x5c05,0x1b60,0x1360,0x1360,0x1360,0x1360,0x1360,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x1340,0x3b83,0x9507,0xc5e9,0xc608,0x9d06,0x4b82,0x6404,0x94e6,0x94e6,0x94e6,0x94e6,0x94c6,0x94c6,0x94c5,0x94c6,0xb587,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xc5e8,0xbda7,0x94c5,0x8ca5,0x8ca5,0x8ca5,0x8c85,0x8c85,0x8c85,0x8c85,0x8c85,0x8c85,0x8c65,0x8c64,0x8c64,0x8c44,0x8444,0x8424,0x8404,0x7bc4,0x73a3,0x6b63,0x6322,0x5ae2,0x5282,0x4a41,0x41e1,0x3180,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2100,0x2940,0x3180,0x39e1,0x5282,0x83c4,0x8c04,0x8c25,0xa4c6,0x8c04,0x8404,0x8c24,0x9445,0x8424,0x3b01,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x7404,0xde68,0x8464,0x12e0,0x0ae0,0x2301,0x4b82,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x5ba3,0x53a3,0x4362,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1320,0x1b20,0x5bc3,0xa547,0xe6ca,0x9506,0x2b41,0x1b21,0x53c3,0x8cc6,0x9d47,0x7c85,0x3382,0x1340,0x2361,0x94e7,0xde8b,0x6425,0x1361,0x3382,0x6c45,0x9528,0x9528,0x5c25,0x2381,0x1360,0x1360,0x1360,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x1381,0x13a1,0x13a1,0x13a1,0x13a1,0x13a1,0x3bc3,0x5c25,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x5c46,0x3bc3,0x1381,0x1381,0x1b81,0x43e4,0x9d4a,0xd68e,0xadab,0x5425,0x1ba1,0x13a1,0x13a1,0x1381,0x1381,0x1381,0x1381,0x1381,0x23a2,0x5405,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x6446,0x5405,0x5425,0xd68e,0xdeae,0xb5ec,0xef0f,0xbe0c,0x3bc3,0x13a1,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1380,0x1b81,0x43c3,0x6445,0x6445,0x4be4,0x1b81,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1360,0x1340,0x2b82,0x5c04,0x6c45,0x5c04,0x2b61,0x1340,0x0b40,0x0b40,0x0b40,0x1320,0x3361,0x3361,0x3361,0x84a6,0xd669,0xc608,0xb587,0xb587,0xb587,0xb587,0xb587,0xb587,0xb587,0xbd87,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c7,0xc5c7,0xc5c7,0xc5c7,0xc5a7,0xb567,0xb566,0xb546,0xb546,0xb546,0xb546,0xb546,0xb546,0xb526,0xb526,0xb526,0xb526,0xad06,0xace5,0xacc5,0xa4a5,0x9c65,0x9444,0x8be4,0x83a4,0x7b63,0x6b03,0x5aa2,0x5242,0x41e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x31c1,0x6303,0x7bc4,0x83e4,0x6b63,0x3281,0x1a40,0x1a60,0x1a80,0x1280,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x1ac0,0xa526,0xd628,0x4342,0x0ae0,0x0ae0,0x7424,0xd648,0xe689,0xe689,0xe689,0xe689,0xe6a9,0xe6a9,0xe6a9,0xde89,0x9d26,0x1300,0x0b00,0x0b00,0x0b00,0x1320,0x1320,0x7445,0xd669,0xd66a,0xde8a,0xe6ca,0x7c65,0x6404,0xce49,0xde8a,0xd66a,0xe6eb,0x8cc6,0x2361,0x3382,0xb5a9,0xce4a,0x3ba2,0x2b81,0x9508,0xdecc,0xce4c,0xdecc,0xce4b,0x5c04,0x1360,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x13a1,0x13a1,0x13a1,0x13a1,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x8d09,0xe6ce,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef0f,0xbe0c,0xa56a,0xa56a,0xa56a,0xc62d,0xce6e,0x8ce9,0x33a3,0x1b81,0x1b81,0x43e4,0x84e9,0x9529,0x952a,0x952a,0x952a,0x952a,0x9d6a,0xd68e,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef2f,0xef0f,0xce4d,0x33c3,0x7487,0xb5ec,0xc64d,0xce4d,0xce8e,0xa5ab,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9529,0x9528,0x9d49,0xc62c,0xdecd,0xdead,0xce6c,0xa569,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9528,0x9527,0xb5a9,0xe6cb,0xde8b,0xd68b,0xa568,0x3382,0x1340,0x1340,0x0b20,0x0b20,0x1320,0x4382,0xa547,0xde8a,0xad67,0x4b82,0x2b41,0x2b21,0x2b21,0x2b21,0x2b21,0x2b21,0x2b21,0x5ba3,0xce28,0xe6c9,0xeec9,0xeea9,0xeea9,0xeea9,0xeea9,0xe6a9,0xe6a9,0xd628,0x9ce6,0x94e6,0x94e6,0x94e6,0x94e5,0x94c5,0x94c5,0x94c5,0x94c5,0x94c5,0x94a5,0x94a5,0x9485,0x8c85,0x8c64,0x8444,0x8404,0x7bc4,0x7383,0x6b43,0x62e2,0x52a2,0x4a42,0x4201,0x31a1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00a0,0x00e0,0x1940,0x62e3,0x83c4,0x9425,0xa485,0x9c85,0x42a2,0x0a20,0x0240,0x0260,0x0280,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x4342,0xcde8,0xad47,0x2b01,0x0ae0,0x2300,0x9ce6,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf70a,0xf70a,0xeec9,0x8ca5,0x1300,0x0b00,0x0b20,0x1320,0x1320,0x1320,0x9d27,0xeeea,0xc609,0xce49,0xe6ab,0x7425,0x8cc6,0xe6cb,0xce4a,0xc62a,0xe6cb,0x84a6,0x1b61,0x3b82,0xce4a,0xb5c9,0x1b61,0x3ba2,0xb5aa,0xeeed,0xbdea,0xdeac,0xce4b,0x5405,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x1b81,0x1b81,0x1b81,0x9529,0xef0f,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf730,0xc62d,0xa58b,0xa58b,0xa58b,0x9d4a,0x6446,0x2382,0x1b81,0x23a2,0x6c67,0xbe2d,0xce6e,0xb5cc,0xadab,0xadab,0xadab,0xadab,0xb5cc,0xdece,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xf750,0xd68e,0x3bc3,0x1ba1,0x23a2,0x33c2,0x3bc3,0x84c8,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadab,0xadaa,0xadaa,0xadaa,0xadaa,0xbdcb,0xeeee,0xce4c,0xa569,0xef0e,0xd66c,0xad8a,0xad8a,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xad89,0xd64b,0xeeeb,0xa548,0xce4a,0xe6cb,0x5be4,0x1340,0x1320,0x0b20,0x1320,0x53c3,0xbde9,0xd66a,0xa527,0x8485,0x7444,0x4b82,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x4362,0xbdc8,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xf6e9,0xeec9,0xbdc7,0xad46,0xad46,0xad46,0xad26,0xa526,0xa526,0xa526,0xa526,0xa506,0xa506,0xa506,0xa4e5,0x9cc5,0x9ca5,0x9485,0x8c45,0x8424,0x7bc4,0x7383,0x6b23,0x5ac2,0x5282,0x4a21,0x39c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18e0,0x2940,0x3181,0x39c1,0x5262,0x7343,0x8be4,0x9c45,0xaca6,0x9445,0x2a40,0x0220,0x0240,0x0260,0x0280,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x7c44,0xd648,0x7c24,0x12e0,0x0ae0,0x2300,0x6be4,0x94c5,0x94c6,0x94c6,0x94c6,0x94c6,0x94e6,0x94e6,0x94e6,0x8ca5,0x4362,0x0b00,0x0b00,0x1320,0x1320,0x1320,0x1320,0x4ba3,0xad67,0xce09,0xbdc9,0x7466,0x2361,0x4383,0xa548,0xc60a,0xbdea,0x84a7,0x3382,0x1361,0x53e4,0xdeac,0x9d28,0x1b61,0x1b61,0x6425,0xb5ca,0xce2b,0xb5aa,0x6446,0x1b81,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x1b81,0x1b81,0x1381,0x1381,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1381,0x5405,0x84c8,0x84e9,0x84e9,0x84e9,0x8ce9,0x8ce9,0x8ce9,0x84e9,0x84c9,0x5405,0x2ba2,0x2ba2,0x2ba2,0x23a2,0x1b81,0x1b81,0x43e4,0x9d4a,0xce8e,0xbded,0x5c26,0x33a3,0x33a3,0x33a3,0x33a3,0x33a3,0x3bc3,0x7487,0x84e9,0x8ce9,0x8ce9,0x8ce9,0x8ce9,0x8ce9,0x8ce9,0x84e9,0x74a8,0x2ba2,0x1381,0x1381,0x1381,0x13a1,0x1ba1,0x2ba2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x33a2,0x43c3,0x9529,0xd68d,0xef2e,0xd68c,0x7ca7,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b82,0x2b62,0x2b62,0x2b62,0x5c05,0xbdea,0xd68b,0xde8a,0xb5a9,0x4382,0x1b40,0x1b41,0x2341,0x7445,0xce29,0xce49,0x94e7,0xd649,0xe6ca,0xde8a,0xce49,0x7445,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x1b00,0x5bc3,0x8485,0x8485,0x8485,0x8485,0x8485,0x8485,0x8485,0x8465,0x8444,0x5383,0x2b00,0x2b00,0x2b00,0x2b00,0x2ae0,0x2ae0,0x2ae0,0x2ae0,0x22e0,0x22e0,0x22c0,0x22c0,0x22a0,0x22a0,0x2280,0x2260,0x1a20,0x1a00,0x19c0,0x11a0,0x1160,0x0940,0x0900,0x08c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2120,0x2960,0x39c1,0x5aa2,0x7b64,0x8be4,0x9c45,0xa4a5,0x6b43,0x1220,0x0220,0x0240,0x0260,0x0280,0x0a80,0x0aa0,0x0aa0,0x22e0,0x5ba3,0xbda7,0xc5e8,0x5382,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x0b00,0x0b00,0x0b00,0x1b20,0x53a3,0x63e3,0x63e3,0x63e3,0x3b62,0x2b41,0x53c3,0x6404,0x6c04,0x6404,0x3382,0x1340,0x2b62,0x5be4,0x6c24,0x6404,0x3382,0x1341,0x3b82,0x8ce7,0xe6cc,0x8ce7,0x33a2,0x1361,0x3ba3,0x6425,0x6c25,0x5c04,0x2381,0x1b61,0x43c3,0x6425,0x6425,0x5404,0x1b81,0x1b61,0x3ba3,0x6425,0x6425,0x5c05,0x2381,0x1b61,0x3ba3,0x6425,0x6445,0x5c25,0x2382,0x1381,0x2ba2,0x6425,0x6446,0x6445,0x33a2,0x1b81,0x2ba2,0x5c25,0x6446,0x6446,0x33a3,0x1b81,0x43c3,0x6446,0x6446,0x5c25,0x2ba2,0x1381,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b82,0x1b81,0x1b81,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x23a2,0x6c67,0xbe2d,0xce6e,0x8d0a,0x3bc4,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1b81,0x23a2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x2ba2,0x1b81,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1381,0x1361,0x1361,0x1361,0x1381,0x1381,0x1381,0x1381,0x2ba2,0x43c4,0x43e4,0x7466,0xdecd,0x9d49,0x2361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1340,0x1340,0x1340,0x1341,0x43a3,0xa548,0xd66a,0xce2a,0xc629,0xc629,0xc609,0xc629,0xd68a,0xbdc9,0x63e4,0x6c24,0xde8a,0xd649,0xad88,0xeeca,0xb588,0x2b41,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1300,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1ae0,0x1ae0,0x12e0,0x0ae0,0x0ae0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0260,0x0240,0x0220,0x0200,0x01c0,0x01a0,0x0180,0x0140,0x0120,0x00e0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x1920,0x5a82,0x7343,0x83a4,0x9405,0x8c05,0x4281,0x0200,0x0220,0x0240,0x0260,0x0280,0x0a80,0x12c0,0x5362,0x9ce6,0xc5e8,0xad67,0x5ba4,0x1ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x0b00,0x0b00,0x0b00,0x5bc3,0xd669,0xf70a,0xf70a,0xef0a,0x8485,0x7444,0xde89,0xf72b,0xf70b,0xeecb,0x7c65,0x1340,0x84a6,0xe6cb,0xf72c,0xe6cb,0x7c86,0x1340,0x94e7,0xeeec,0xff4d,0xdeac,0x7466,0x2b81,0xa568,0xf72d,0xf72d,0xd66c,0x4bc3,0x3ba2,0xb5ca,0xf72e,0xf72e,0xce4c,0x3382,0x2b82,0x9d49,0xf72e,0xf72e,0xdead,0x43c3,0x2382,0x9528,0xef2e,0xf72f,0xdecd,0x4be4,0x1b81,0x6c66,0xef0e,0xf72f,0xef0f,0x7466,0x2381,0x7487,0xe6ef,0xf750,0xef0f,0x7467,0x1b82,0x9d4a,0xef0f,0xf750,0xdeae,0x6446,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1381,0x1381,0x1b81,0x1b82,0x43c4,0x952a,0xd68e,0xbded,0x6446,0x3bc4,0x4c05,0x5405,0x5405,0x5405,0x5405,0x5405,0x5405,0x5c25,0x8d09,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xb5ab,0xa56a,0x4c05,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1381,0x1381,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x43c4,0xad8a,0xd68d,0xd66d,0xb5cb,0xdead,0xadaa,0x2361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1341,0x1361,0x1361,0x1361,0x1341,0x1340,0x1341,0x4bc3,0xad88,0xde8b,0xad68,0x7c86,0x7c65,0x7c65,0x7c65,0x7c65,0x7445,0x4382,0x1320,0x4382,0xbde9,0xeeea,0xde8a,0xd649,0x7c45,0x1b20,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1b00,0x7444,0x9d06,0x9d06,0x9d06,0x9ce6,0x9ce6,0x9ce6,0x9ce6,0x9ce6,0x94c5,0x6c04,0x5382,0x3b42,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0260,0x0240,0x0220,0x0200,0x01c0,0x01a0,0x0160,0x0140,0x0100,0x00e0,0x10e0,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x08e0,0x31a0,0x39e1,0x4221,0x4a82,0x4261,0x1a00,0x0200,0x0220,0x0240,0x0260,0x1280,0x4302,0x8ca5,0xbdc8,0xb567,0x7405,0x22e1,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x0b00,0x0b00,0x0b00,0x8ca5,0xeeca,0xff2a,0xff2b,0xe6ca,0x6c04,0x94c6,0xf6ea,0xff2b,0xff2b,0xde6a,0x6404,0x1321,0xa527,0xef0b,0xff2c,0xde6a,0x6404,0x2341,0xad68,0xff4d,0xff4d,0xd66b,0x53e4,0x43a3,0xc60a,0xff4e,0xff4e,0xce4b,0x2b62,0x4bc3,0xce4c,0xff4e,0xff4e,0xbdeb,0x2b82,0x33a3,0xbdeb,0xff4e,0xff4f,0xd66c,0x3ba3,0x2b82,0xadaa,0xf72f,0xf72f,0xd66d,0x4bc4,0x1b61,0x84a7,0xef0f,0xf72f,0xeeee,0x6426,0x1b62,0x8ce8,0xef0f,0xff50,0xeeef,0x6c46,0x1b62,0xa58a,0xf72f,0xff50,0xde8e,0x6446,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x2382,0x6467,0xbdec,0xce6e,0x950a,0x43c4,0x6446,0xb5ec,0xce4e,0xce4d,0xce4d,0xce4d,0xce4d,0xce4d,0xce4d,0xce6d,0xe6ef,0xff71,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xff70,0xef0f,0x7ca8,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b61,0x1b61,0x1b61,0x1b61,0x1b81,0x1381,0x1381,0x1381,0x1381,0x1381,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x7ca7,0xe6ce,0xc60c,0xb5ab,0xeeee,0xf72e,0xc60b,0x2b62,0x1361,0x1361,0x1361,0x1361,0x1361,0x1341,0x1341,0x1341,0x1341,0x1341,0x1b41,0x6425,0xbdea,0xd64b,0x84a6,0x2b42,0x1321,0x1321,0x1320,0x1320,0x1320,0x1320,0x1320,0x4382,0xa567,0xde8a,0x9d07,0x5ba3,0x3b41,0x1300,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x0b00,0x1b00,0xad67,0xf70a,0xf70a,0xf70a,0xf70a,0xf70a,0xf6ea,0xf6ea,0xf6ea,0xf6ea,0xd648,0xce08,0xb547,0x3301,0x0ac0,0x0ac0,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0a60,0x0260,0x0240,0x0220,0x0a00,0x09c0,0x09a0,0x0160,0x0140,0x0100,0x00e0,0x2140,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0160,0x01a0,0x01c0,0x01e0,0x0220,0x0240,0x0a60,0x32c1,0x7c24,0xb587,0xb588,0x7c25,0x3302,0x12c0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x0b00,0x2300,0xad47,0xff2a,0xff2a,0xff2b,0xce09,0x5bc3,0xad67,0xf72b,0xff2b,0xf72b,0xc5c9,0x4363,0x3342,0xb5a8,0xf70b,0xf70b,0xc5e9,0x4362,0x4383,0xc5e9,0xff4d,0xff2d,0xc60a,0x2b62,0x53e4,0xde8c,0xff4e,0xff2d,0xb5aa,0x2362,0x53e4,0xe6cd,0xff4e,0xff4e,0xa549,0x2b82,0x3ba3,0xce4c,0xff2e,0xf72f,0xbdeb,0x33a3,0x3383,0xbdeb,0xf70f,0xf70f,0xc60c,0x3ba3,0x2362,0x9509,0xeeee,0xf70f,0xde8e,0x53e5,0x1b62,0x9529,0xeeef,0xf72f,0xdeae,0x6426,0x1b62,0xb5ab,0xf72f,0xff50,0xd66d,0x6c66,0x43c4,0x43e4,0x43c4,0x43c4,0x43e4,0x43e4,0x43e4,0x4be4,0x4be4,0x43e4,0x43e4,0x43e4,0x5405,0x952a,0xce6e,0xbdec,0x6426,0x43c4,0x8d09,0xce6e,0xbded,0x7467,0x5c26,0x5c26,0x5c26,0x5c26,0x5c26,0x5c26,0x6446,0xadab,0xdecf,0xe6cf,0xe6cf,0xe6cf,0xe6cf,0xe6cf,0xe6cf,0xdecf,0xd68e,0x7ca7,0x1b82,0x1b82,0x1381,0x1381,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1b61,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x1361,0x53e5,0xbe0c,0xdeae,0xdeae,0xe6ce,0xd68d,0xd66c,0x43a3,0x1361,0x1361,0x1361,0x1361,0x1361,0x1341,0x1341,0x1341,0x1341,0x2362,0x7c86,0xce2b,0xc60a,0x6c05,0x1b21,0x0b21,0x0b00,0x0b00,0x1300,0x1300,0x1320,0x1320,0x4ba3,0xad88,0xd68a,0x8cc6,0x2b41,0x1300,0x1300,0x1300,0x0b00,0x0b00,0x0b00,0x0b00,0x0ae0,0x0ae0,0x0ae0,0x7c45,0xce08,0xd649,0xd649,0xd648,0xd648,0xd628,0xd628,0xd628,0xd628,0xb567,0x9cc6,0xd628,0x6be3,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0a80,0x0a80,0x0a80,0x0a60,0x0240,0x0a20,0x2240,0x52e2,0x6323,0x52c2,0x31e1,0x0940,0x0100,0x00c0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x00e0,0x0100,0x0140,0x0160,0x01a0,0x01c0,0x01e0,0x0a20,0x2260,0x6ba3,0xad26,0xb567,0x8465,0x3b02,0x12a0,0x0aa0,0x0aa0,0x12c1,0x2ae4,0x22e3,0x12c1,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x0ae0,0x4b82,0xc5e8,0xff2a,0xff2a,0xf72a,0xad47,0x53a3,0xce29,0xf70b,0xf70b,0xeecd,0xbdb1,0x8cb0,0x744b,0xce0a,0xeecb,0xeecb,0xad48,0x1b01,0x5bc4,0xd66a,0xf72c,0xf70c,0xad69,0x1b41,0x6425,0xeeed,0xff4e,0xf72d,0x9508,0x2361,0x6c46,0xef0e,0xff4e,0xf72e,0x84a7,0x2361,0x4bc4,0xdead,0xf72f,0xf72e,0xa549,0x2b82,0x3383,0xce2c,0xeeee,0xeeee,0xad8a,0x43a3,0x3382,0xa54a,0xe6ae,0xeece,0xce2c,0x53c4,0x1b42,0xa54a,0xe6cf,0xeeef,0xd64d,0x5be5,0x2362,0xb5cb,0xf72f,0xf730,0xe6ef,0xc64d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xc62d,0xce4e,0x950a,0x43c4,0x5c26,0xb5cc,0xce6e,0x9d2a,0x43c4,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x2ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x3ba3,0x33a3,0x2382,0x1b82,0x2b83,0x3383,0x3383,0x2382,0x1361,0x1b61,0x2b82,0x2b83,0x2b83,0x2382,0x1b61,0x1361,0x2362,0x2b82,0x2b63,0x2b64,0x2363,0x1361,0x2362,0x2b62,0x2b62,0x4bc4,0x9d2a,0xe6ce,0x9d29,0x9d29,0xd68d,0x6c25,0x1b61,0x1361,0x2361,0x2b62,0x3362,0x2b62,0x1b41,0x1341,0x2341,0x7446,0xd66c,0xbdac,0x846d,0x6bed,0x4348,0x2302,0x2b21,0x2301,0x1301,0x0b00,0x1301,0x53a3,0xb5a8,0xd66a,0x8486,0x2321,0x1b01,0x2b21,0x2b21,0x2b21,0x1b02,0x1b02,0x1b02,0x22e2,0x22e2,0x22e2,0x1ae2,0x22e2,0x3302,0x3b02,0x3b02,0x3ae2,0x32e2,0x32e2,0x32e2,0x3ae2,0x32e2,0x32c2,0x5b84,0xc5e8,0x9486,0x1aa2,0x12a2,0x12a2,0x12a2,0x0a81,0x0a80,0x0260,0x0260,0x0260,0x0240,0x0220,0x5b22,0xa4a5,0x9445,0x83c4,0x7364,0x5262,0x39c1,0x3180,0x2940,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x10a0,0x18e0,0x08c0,0x00e0,0x0100,0x0140,0x1180,0x3a41,0x4aa2,0x52e2,0x6343,0x9485,0xad47,0x8c45,0x4b22,0x12a0,0x0aa0,0x0aa0,0x12a1,0x3b07,0x6bed,0x9cf3,0x94d2,0x5b8b,0x22c4,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x0ae0,0x0ae0,0x0ae0,0x6be4,0xe689,0xff0a,0xff0a,0xeeca,0x8ca6,0x63e4,0xe68a,0xf6eb,0xe68f,0xc5f4,0xb5b6,0xb596,0xad95,0xc5f2,0xde6e,0xd64b,0x8486,0x12e1,0x7405,0xe6ab,0xf70c,0xeecc,0x8cc7,0x2341,0x84a6,0xf72d,0xff4e,0xf70d,0x7445,0x2361,0x8ce8,0xf72e,0xff4e,0xeeed,0x6425,0x1b61,0x6425,0xe6cd,0xf72e,0xef0e,0x8cc8,0x6423,0x7464,0xce4b,0xdec9,0xdec8,0xd687,0xce46,0xc646,0xce67,0xd6a8,0xd688,0xce68,0xa565,0x6403,0xad8a,0xde8d,0xe6ae,0xc5ec,0x4bc5,0x2b42,0xbdcc,0xef0f,0xf70f,0xc62d,0x7c68,0x6c47,0x6c47,0x6c47,0x6c47,0x6c47,0x6c47,0x6c47,0x6c67,0x6c47,0x6c47,0x7468,0x7c8b,0x84ab,0x744b,0x53e8,0x84a9,0xc62d,0xbdcc,0x6c47,0x2382,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x43c4,0xbded,0xc62e,0xbe0e,0x84ab,0x3b86,0x3383,0xadab,0xce4d,0xce4d,0x9509,0x2b83,0x2362,0x8ce9,0xbded,0xad8f,0x94b1,0x7c4f,0x4ba9,0x9d2a,0xc60c,0xc62c,0xa56a,0x7447,0xd66d,0xad8a,0xce4c,0xef0e,0xd66c,0x6c26,0x1b41,0x84a7,0xce4b,0xd68c,0xc60b,0x6425,0x1321,0x7c87,0xce2c,0xd62e,0x9cf1,0x9492,0x9492,0x8c71,0x9cee,0xb58b,0xa549,0x4b63,0x0ae0,0x5383,0xbdc9,0xeecb,0xde8a,0x94e6,0x1300,0x5bc3,0xbde8,0xce49,0xbdca,0x846d,0x7c0e,0x7c2e,0x948f,0x94af,0x948e,0x7c0e,0x73ee,0x73ee,0x73ee,0x73ee,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73ce,0x73ee,0x9cae,0x948e,0x73ce,0x73ce,0x73ce,0x6bad,0x534a,0x2aa5,0x0a61,0x0260,0x0240,0x0240,0x0220,0x52e2,0x9c85,0x8c25,0x6b23,0x83a4,0x6b23,0x5262,0x4201,0x3181,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0820,0x3160,0x39a1,0x2120,0x00c0,0x0100,0x0140,0x3a01,0x8c05,0xa4a6,0xb506,0xbd67,0xb526,0x5b43,0x1a80,0x0a80,0x0a80,0x12a1,0x4308,0x740e,0x94d2,0xad55,0xad55,0xad55,0xa514,0x7c4f,0x4308,0x12a1,0x0aa0,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x0ac0,0x0ac0,0x1ae0,0x8c85,0xeeea,0xf70a,0xf70a,0xde49,0x6be4,0x8486,0xde8d,0xce12,0xb5b5,0xb596,0xb596,0xad75,0xad75,0xb595,0xb595,0xb592,0x7c2c,0x2b04,0x8486,0xe6ab,0xeeec,0xde8b,0x63e4,0x2b62,0xa549,0xf72d,0xff4d,0xe6ac,0x53c4,0x2382,0xad89,0xf72e,0xff2e,0xde8c,0x53e4,0x1b61,0x8487,0xe6cd,0xeeed,0xdeab,0xb5c6,0xce66,0xd686,0xd686,0xd686,0xce66,0xce66,0xce66,0xce66,0xce66,0xce66,0xce66,0xce66,0xce46,0xce46,0xce46,0xce47,0xd64b,0xad69,0x4b84,0x3b63,0xbdab,0xe6ce,0xeeef,0xb5ab,0x3b83,0x1b62,0x1b62,0x1b62,0x1b62,0x1b62,0x1b82,0x1b82,0x1b62,0x1b62,0x3ba6,0x8490,0xa534,0xad55,0xad55,0xa533,0xbdd0,0x94eb,0x43a4,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x4bc8,0xb591,0xa513,0x9cf3,0x9cd2,0x8470,0x63eb,0xbdec,0xe6ce,0xeece,0xb5ab,0x3b84,0x4387,0x94ce,0xad31,0x9cd2,0x94b2,0x94b2,0x8c71,0xa50f,0xd64e,0xe68e,0xc60c,0x7447,0xc60d,0xb58b,0xdeae,0xf70e,0xef0e,0x8cc8,0x2361,0x84a7,0xe6cd,0xf72e,0xeeed,0x84a7,0x1b22,0x7c4a,0xad50,0x9cd2,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x9cb1,0xa50e,0x6bc9,0x1ae2,0x4342,0xbda8,0xeecb,0xeeeb,0xbda8,0x3322,0x53a3,0xce09,0xde6d,0xb550,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x73ce,0x5b68,0x5b63,0x5b63,0x5b43,0x5b43,0x5b23,0x73a4,0x8c25,0x8c25,0x7ba4,0x5282,0x31c1,0x2960,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0820,0x3161,0x3181,0x10e0,0x00c0,0x0100,0x0940,0x5ac2,0x9c45,0xaca6,0xb506,0xbd47,0x9445,0x2260,0x0a60,0x0a60,0x22a3,0x73ee,0x9cf3,0xa534,0xad55,0xad55,0xa534,0xa534,0xa534,0xa514,0x94b2,0x63ac,0x2aa5,0x0a80,0x0a80,0x0aa0,0x0aa0,0x0ac0,0x0ac0,0x3301,0xad47,0xeeca,0xeeea,0xeeea,0xc5c8,0x5387,0x9d0f,0xb5b4,0xad75,0xad75,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0x9cf3,0x5b8a,0x9ce7,0xde6b,0xe6ab,0xce0a,0x3b63,0x3362,0xbdea,0xf70d,0xf72d,0xce2b,0x43a3,0x2b62,0xc60b,0xf72e,0xf72e,0xc60b,0x43a4,0x3b82,0x9d27,0xce68,0xd667,0xce65,0xce45,0xce45,0xce45,0xce45,0xc625,0xc625,0xc625,0xc625,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xc605,0xbde5,0xad85,0x94e5,0xb58b,0xde6e,0xde8e,0xa54a,0x2b42,0x1b42,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b62,0x1b62,0x2b84,0x7c8f,0xad75,0xad75,0xad55,0xa534,0xa534,0x9d13,0x63ec,0x1b22,0x1b22,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x2b84,0x7c4f,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x8c91,0xb58d,0xde8e,0xe68e,0xbdcc,0x742d,0x8c71,0x94b2,0x94b2,0x94b2,0x9492,0x9492,0x9492,0x9491,0xa4f0,0xc5ce,0xc5ec,0x6c06,0xb58b,0xad6b,0xd64d,0xeeee,0xeeee,0xa549,0x3362,0x5be4,0xde8c,0xf70e,0xef0d,0x9d0a,0x6bed,0x8c71,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x7c0f,0x3ae6,0x1ac1,0xa507,0xe68a,0xeecb,0xce09,0x5ba3,0x3b24,0x8c8d,0x9cf1,0x9492,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x8c2d,0xa4a7,0xa4c6,0xa4a5,0xa4a5,0x9c65,0x9445,0x8c04,0x83c4,0x7363,0x6ae3,0x5a82,0x4a22,0x39c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0820,0x3140,0x2920,0x00a0,0x00c0,0x0100,0x1960,0x7343,0x9425,0xa486,0xb4e6,0xb4e6,0x6b83,0x0a20,0x0240,0x0260,0x32c6,0x9cd3,0xa534,0xa534,0xa534,0xa514,0xa514,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x8450,0x532a,0x1a82,0x0a80,0x0a80,0x0aa0,0x0aa0,0x2ae1,0x8485,0xa527,0xa527,0xa528,0x94cc,0x94d2,0xad55,0xad55,0xad55,0xad55,0xa534,0xa534,0xa514,0xa514,0xa514,0xa514,0xa514,0x9cd3,0x536a,0x7406,0x9cc7,0x9ce8,0x8466,0x2322,0x2342,0x94e8,0xad69,0xad89,0x84a7,0x2b62,0x2362,0x9d29,0xdead,0xd64c,0x84a7,0x84a3,0xa563,0xc624,0xc624,0xc624,0xc624,0xc604,0xc604,0xbde5,0xbde5,0xbde5,0xbdc5,0xbdc5,0xbdc5,0xbdc5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xb5a5,0xbdc4,0xbdc4,0xbdc4,0xbdc4,0xb585,0xb569,0x9cea,0x6c07,0x2322,0x1b22,0x1b22,0x1b42,0x1b42,0x1b62,0x1b62,0x1b62,0x1b62,0x3385,0x9d33,0xad75,0xad55,0xa534,0xa534,0xa514,0x9cf3,0x8470,0x3b44,0x5bc5,0x6406,0x6406,0x6426,0x6c46,0x6c46,0x6c67,0x6c67,0x6c67,0x6c67,0x6c87,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c67,0x6c66,0x6c66,0x746b,0x94b2,0x9cd3,0x9cd3,0x94b2,0x9492,0x9492,0x9492,0x9cef,0xd62d,0xde4d,0xc5ed,0x94b1,0x9492,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x9471,0xa4ef,0x6bc9,0x9cea,0xb56b,0xc5ec,0xe6ad,0xeece,0xb5aa,0x3b63,0x3b62,0xce2b,0xeecd,0xd64f,0xa511,0x9492,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8430,0x7bef,0x3ae7,0x0a80,0x8446,0xd62a,0xe68a,0xde4a,0x7425,0x4b69,0x8c71,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x5305,0x52e2,0x52e2,0x52c2,0x4ac2,0x4aa2,0x4261,0x4241,0x3a01,0x31c1,0x2980,0x2140,0x1900,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x18c0,0x08c0,0x08e0,0x00e0,0x39e1,0x7b64,0x8c05,0x9c65,0xacc6,0x9c65,0x3a81,0x0220,0x0240,0x0260,0x32c6,0x9cd3,0xa514,0xa514,0xa514,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x73ce,0x32a6,0x1281,0x0a80,0x0a80,0x0aa0,0x0aa0,0x1ac2,0x3b27,0x8470,0xa514,0xad55,0xad55,0xa534,0xa534,0xa514,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x5329,0x0a80,0x0aa0,0x12c1,0x12e1,0x1301,0x1323,0x1322,0x1321,0x1341,0x1341,0x1341,0x1341,0x53c4,0xce4c,0xa549,0x9503,0xbde3,0xc604,0xbde4,0xbde4,0xbde4,0xbdc4,0xbdc4,0xb5a4,0xb5a4,0xb584,0xb584,0xb584,0xad64,0xad64,0xad64,0xad64,0xad44,0xad44,0xad44,0xad44,0xad64,0xad64,0xad64,0xad64,0xad64,0xb584,0xb584,0xb584,0xad64,0x94c3,0x63a2,0x22e2,0x1302,0x1b02,0x1b22,0x1b42,0x1b42,0x1b42,0x1b62,0x1b62,0x3b86,0xa534,0xad55,0xad55,0xa514,0xa514,0x9cf3,0x9cd3,0x94b0,0x9cea,0xb58c,0xb58c,0xb5ac,0xbded,0xc60d,0xc62d,0xce4d,0xce4e,0xce4e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce6e,0xce4e,0xce4d,0xc62d,0xb5af,0x9cf2,0x9cd3,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x948f,0xcded,0xce0d,0xc5cd,0x94b1,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8c50,0x840f,0x94ad,0xad4b,0xad4a,0xde6d,0xe68d,0xc5eb,0x4363,0x2b23,0xad4b,0xb570,0x9cd1,0x9492,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bee,0x3ac7,0x0a60,0x5b64,0xc5c9,0xe66a,0xe68a,0x8ca7,0x6bcd,0x8c71,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bee,0x9c67,0x9c86,0x9ca5,0x9ca5,0x9c85,0x9465,0x8c25,0x83c4,0x7b84,0x6b23,0x62c2,0x5262,0x41e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2120,0x39a1,0x39c1,0x31a1,0x39e1,0x5282,0x6303,0x8c05,0x7ba4,0x52c2,0x0a00,0x0220,0x0240,0x0240,0x32a6,0x94b2,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x94b2,0x9492,0x9492,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x8450,0x5b6b,0x2283,0x0a60,0x0a80,0x2ac5,0x6bcd,0x94d2,0xa534,0xa534,0xa534,0xa514,0xa514,0x9cf3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9492,0x9492,0x9492,0x94b2,0x8c71,0x4b09,0x0a40,0x0a80,0x0aa1,0x12c1,0x12e3,0x1325,0x1322,0x1321,0x1321,0x1321,0x1341,0x1341,0x53c4,0xc629,0xbde4,0xbdc3,0xbdc3,0xbdc3,0xb5a3,0xb5a3,0xb583,0xb583,0xad63,0xad63,0xad43,0xad43,0xa523,0xa523,0xa523,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa503,0xa523,0xa523,0xa523,0xad43,0xad43,0xad43,0xa503,0x73e3,0x63c6,0x6be6,0x6c27,0x7427,0x7447,0x7467,0x7c67,0x7c68,0x9d2b,0xad74,0xad55,0xa534,0xa514,0x9cf3,0x9cd3,0x94b2,0x9cd1,0x9ccb,0x5b86,0x3b24,0x3b44,0x3b64,0x3b84,0x4384,0x43a4,0x43a4,0x43a4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43c4,0x43a4,0x43a4,0x43a4,0x4384,0x6c0c,0x94b2,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c4e,0xbd8c,0xc5ac,0xbdad,0x9491,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x8430,0x8c6f,0x94ac,0xcdec,0xd64c,0xce0c,0x5386,0x63ab,0x8c70,0x9491,0x8c71,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bce,0x3aa6,0x0a40,0x2aa1,0xb568,0xde4a,0xde6a,0xad49,0x8c50,0x8c71,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x73ce,0x5b0b,0x3243,0x3241,0x3241,0x3241,0x3241,0x2a21,0x2a00,0x29e0,0x21a0,0x1960,0x1940,0x1100,0x10c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3161,0x3161,0x5242,0x5a82,0x5aa2,0x6303,0x7364,0x83c4,0x4282,0x09e0,0x0200,0x0220,0x0220,0x0240,0x32a5,0x94b2,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x9492,0x94b2,0x94b2,0x94b2,0x7c0f,0x42e8,0x4b29,0x8450,0x9cf3,0xa514,0xa514,0xa514,0x9cf3,0x9cf3,0x9cd3,0x94b2,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x4ae9,0x0a20,0x0a60,0x0a81,0x12c1,0x12e1,0x1301,0x1301,0x1321,0x1321,0x1321,0x1321,0x3361,0x8cc2,0xb5a2,0xb5a2,0xb5a3,0xb583,0xb583,0xad63,0xad63,0xad43,0xa523,0xa523,0xa503,0xa503,0x9ce3,0x9ce3,0x9ce3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9cc3,0x9ce3,0x9ce3,0xa503,0xa503,0xa503,0xa523,0xa503,0x9cc7,0x9cea,0xa50a,0xad4b,0xad6b,0xb58b,0xb58b,0xb5ac,0xad8c,0xad54,0xa534,0xa514,0x9cf3,0x9cd3,0x94b2,0x9492,0x842f,0x3ae5,0x12a1,0x12c1,0x12e2,0x1b22,0x1b42,0x1b42,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b62,0x1b42,0x63ec,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x840d,0xb54b,0xbd6b,0xbd6d,0x8c70,0x8c51,0x8c51,0x8430,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x8430,0x8430,0xa4ee,0xbd8c,0xbd6d,0x842f,0x8c51,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bae,0x42a6,0x0a40,0x1a61,0x94a7,0xd609,0xde2a,0xbd8a,0x9490,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bae,0x6b6b,0x5ae5,0x52e2,0x52e2,0x5302,0x5b02,0x52e2,0x52e2,0x52a2,0x4a82,0x4241,0x3a01,0x31c1,0x2980,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3161,0x3181,0x4a22,0x39e1,0x1940,0x2180,0x21a0,0x21c0,0x11c0,0x01c0,0x01e0,0x0200,0x0220,0x0220,0x2a85,0x94b2,0x9cd3,0x9cd3,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c71,0x9492,0x9492,0x94b2,0x8c91,0x94b2,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x4ac8,0x0a20,0x0a40,0x0a81,0x12a1,0x12c2,0x12e2,0x1302,0x1323,0x1321,0x1321,0x3b61,0x94e2,0xb5a2,0xb582,0xb582,0xad62,0xad62,0xad42,0xa522,0xa502,0xa502,0x9ce2,0x9cc2,0x9cc2,0x94a2,0x94a2,0x94a2,0x94a2,0x9482,0x9482,0x9482,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x9483,0x94a3,0x94a3,0x94a3,0x94a3,0x9cc2,0x9cc2,0x9ce2,0xa4e2,0x9ce3,0x7c03,0x4323,0x3b23,0x3b44,0x3b44,0x3b64,0x3b64,0x4366,0x9cf3,0xa514,0x9cf3,0x9cd3,0x94b2,0x9492,0x8c71,0x7bef,0x1a83,0x1281,0x12c1,0x12e2,0x1b02,0x1b22,0x1b42,0x1b62,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b62,0x1b42,0x63cc,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x8410,0x73cd,0x9caa,0xad0b,0xa4eb,0x8c30,0x8430,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8430,0x8c4f,0x8c50,0x8c50,0x8c51,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x73ae,0x73ad,0x52e7,0x1220,0x1240,0x6bc5,0xb568,0xc5a9,0xad0d,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b4d,0x5aea,0x6b4a,0x6b6a,0x6309,0x3a47,0x4aa9,0x52ca,0x52ca,0x5b0a,0x7baa,0x634a,0x52e9,0x632a,0x632a,0x632a,0x632a,0x632a,0x632a,0x632a,0x632a,0x6b49,0x7ba8,0x8c06,0x9425,0x9445,0x9c65,0x9c85,0x9c85,0x9c65,0x9445,0x8c25,0x83c4,0x7b84,0x6b23,0x62c3,0x5262,0x41e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2940,0x3161,0x2961,0x0900,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x01e0,0x0200,0x0220,0x0220,0x2a85,0x9492,0x9cd3,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8c51,0x8c71,0x8c71,0x9492,0x9492,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9492,0x9492,0x8c71,0x8c71,0x8430,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x42c8,0x0a20,0x0a40,0x0a61,0x12a1,0x12c2,0x12e2,0x1302,0x1324,0x1321,0x4381,0x94e1,0xb582,0xb582,0xad62,0xad42,0xa522,0xa522,0xa502,0x9ce2,0x9cc2,0x94a2,0x94a2,0x9482,0x9482,0x9482,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x8c62,0x9482,0x9482,0x94a2,0x94a2,0x9cc2,0x9cc2,0x94a2,0x73e3,0x8c89,0x94ca,0x9d0a,0xa52a,0xa52a,0xa52b,0xa513,0xa514,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x73ee,0x1a63,0x1281,0x12a1,0x12c2,0x1302,0x1b22,0x1b42,0x1b42,0x1b62,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b42,0x63cb,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x634c,0x6366,0x9caa,0x73c9,0x840f,0x8410,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x3a86,0x0a00,0x0a20,0x2a81,0x4b23,0x5364,0x7bee,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x6309,0x52c3,0x5b03,0x6303,0x6323,0x5ae3,0x5ae3,0x5ae3,0x5ae3,0x6b44,0x9466,0x6303,0x2201,0x4aa2,0x52c3,0x52c3,0x52c3,0x52c3,0x52c3,0x52c2,0x52c2,0x52e2,0x52e2,0x52e2,0x5b03,0x5b03,0x5b23,0x5b23,0x5b23,0x5b02,0x5b02,0x52c2,0x4a82,0x4242,0x3a22,0x31c2,0x2980,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2100,0x3161,0x39c1,0x41e1,0x1920,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x3281,0x5302,0x5302,0x42c6,0x9492,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x7bef,0x73ce,0x8410,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c71,0x8c71,0x9492,0x9492,0x9492,0x9492,0x8c71,0x8c71,0x8c71,0x8c51,0x7bce,0x4ac9,0x634c,0x8430,0x8430,0x8410,0x8410,0x8410,0x8430,0x7c0f,0x42a8,0x0a00,0x0a40,0x0a60,0x12a1,0x12c1,0x12e1,0x1301,0x1302,0x2321,0x94e1,0xad61,0xad61,0xad41,0xa521,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x9481,0x8c61,0x8c61,0x8c41,0x8c42,0x8c42,0x8c42,0x8c42,0x8422,0x8422,0x8422,0x8422,0x8422,0x8422,0x8422,0x8422,0x8c42,0x8422,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c42,0x8c62,0x8c62,0x9482,0x9482,0x94a2,0x94a2,0x9482,0x8405,0x7c08,0x7c28,0x8448,0x8468,0x8469,0x9cf2,0x9cf3,0x9cd3,0x94b2,0x8c71,0x8c51,0x8c51,0x73ce,0x1a63,0x1261,0x12a1,0x12c2,0x1b02,0x1b22,0x1b42,0x1b62,0x1b62,0x1b83,0x1b83,0x1b83,0x1b83,0x1b82,0x1b83,0x1b83,0x1b82,0x1b82,0x1b82,0x1b62,0x1b62,0x1b42,0x63cc,0x9492,0x9492,0x8c71,0x8c51,0x8410,0x7bef,0x7bef,0x6b6c,0x7be8,0x8c69,0x5b27,0x7bef,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x6b4d,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x634c,0x4268,0x5b0b,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x3246,0x0a00,0x0a20,0x0a40,0x0a60,0x2aa5,0x73ee,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x738d,0x7367,0x7384,0x7ba4,0x7ba4,0x7bc5,0x83e5,0x8405,0x8405,0x8c05,0x8c25,0x8c45,0x6324,0x4282,0x9445,0xa4a6,0x9445,0x9445,0x9445,0x9445,0x9445,0x9445,0x9465,0x9465,0x9c65,0x9c85,0x9c85,0xa4a6,0xa4a6,0xa4a5,0x9c85,0x9445,0x9425,0x8be4,0x7b84,0x6b03,0x5aa2,0x5242,0x41c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3981,0x41c1,0x39c1,0x08e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x11e0,0x6343,0x9ca6,0xad27,0xb547,0x9488,0x94b2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x3a27,0x5b0b,0x7bcf,0x8410,0x8410,0x8430,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8410,0x6b6c,0x4a86,0x3a44,0x634c,0x8430,0x8430,0x8410,0x8410,0x8410,0x8430,0x7c0f,0x52e8,0x4282,0x42c3,0x4b03,0x5344,0x5364,0x5b84,0x5ba4,0x5ba4,0x7422,0xa521,0xad41,0xad41,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x8c61,0x8c61,0x8c41,0x8c41,0x8421,0x8421,0x8421,0x8421,0x8401,0x8401,0x8401,0x8401,0x8401,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8402,0x8422,0x8422,0x8422,0x8c41,0x8c41,0x8c41,0x8c61,0x9461,0x9481,0x8422,0x6385,0x5b87,0x63c7,0x63c7,0x7409,0x94b2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x7bee,0x5b26,0x5b66,0x63a7,0x6be7,0x7428,0x7c68,0x7c89,0x84a9,0x84c9,0x84e9,0x8ce9,0x8ce9,0x8cea,0x8cea,0x8cea,0x8ce9,0x84e9,0x84e9,0x84e9,0x84c9,0x84c9,0x84a9,0x848d,0x9492,0x9492,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcc,0x7be8,0x4ac4,0x3286,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5aeb,0x4287,0x738b,0x6b6d,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x4aa9,0x2204,0x19e3,0x5aea,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x4286,0x2221,0x2241,0x2261,0x2281,0x5309,0x8410,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x634c,0x2a03,0x21e0,0x2200,0x2200,0x2221,0x2a21,0x2a41,0x2a41,0x2a41,0x2a61,0x2a61,0x2a41,0x3281,0x8c45,0x9ca6,0x3aa2,0x1a20,0x1a20,0x1220,0x1220,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a20,0x1a00,0x2a21,0x7364,0x83c4,0x7343,0x5282,0x2160,0x08e0,0x08a0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3981,0x41c1,0x2940,0x00e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x4aa2,0x9ca6,0xa4a6,0x73c4,0xb526,0xb549,0x9cd2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b6d,0x19a3,0x11a2,0x4268,0x6b8d,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x7bcd,0x83e9,0x83e6,0x83e6,0x7bc6,0x7bcc,0x8430,0x8430,0x8430,0x8410,0x8410,0x8430,0x840f,0x840a,0x8c47,0x9ca8,0xa4e9,0xad49,0xb58a,0xbdcb,0xc5cb,0xb589,0xa522,0xad41,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x8c61,0x8c41,0x8c41,0x8421,0x8421,0x8401,0x8401,0x8401,0x8401,0x8401,0x8401,0x8401,0x8401,0x83e1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7be1,0x7be1,0x83e1,0x8401,0x8401,0x8421,0x8c21,0x8c41,0x8c42,0x8425,0x8c49,0x94cb,0x9ceb,0xa50c,0x9cd2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x840f,0x840a,0x8c6a,0x94ab,0xa50c,0xad6d,0xb5ad,0xbdee,0xc60e,0xc62e,0xce4f,0xce4f,0xce6f,0xce6f,0xce6f,0xce6f,0xce6f,0xce6f,0xce6f,0xce4f,0xce4e,0xc62e,0xc60e,0xad6f,0x94b2,0x9492,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6b,0x3264,0x1221,0x3285,0x7bcf,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x6b4b,0x7368,0x6b47,0x4287,0x632c,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x73ae,0x73ae,0x73ae,0x738e,0x5b0b,0x2a45,0x11e1,0x09e0,0x1a03,0x52ea,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738d,0x7bc8,0x8c26,0x9467,0x9ca7,0xa4e7,0x948c,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x736a,0x83e5,0x8405,0x8c25,0x9446,0x9c86,0x9ca6,0xa4c6,0xa4e6,0xad07,0xad07,0xad27,0xad07,0xad27,0xb547,0xb547,0x5302,0x0a40,0x0a40,0x0240,0x0240,0x0240,0x0240,0x0240,0x0240,0x0240,0x0a40,0x0240,0x0220,0x0220,0x0a00,0x42a2,0x9c85,0x8be5,0x6303,0x7343,0x5aa2,0x4201,0x3181,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3161,0x39a1,0x10e0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x4aa2,0x9c86,0xb527,0xad06,0xc587,0x9468,0x94b1,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x19a3,0x0180,0x0180,0x21e4,0x52ea,0x7bcf,0x8430,0x8430,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x73ce,0x52ea,0x3224,0x2a21,0x2a21,0x2a21,0x3223,0x632b,0x8c51,0x8c51,0x8430,0x8430,0x8430,0x8430,0x7c0f,0x4ac8,0x3242,0x3282,0x3aa2,0x3ae3,0x4303,0x4323,0x5363,0x94a2,0xa521,0xa521,0xa501,0x9ce1,0x9cc1,0x94a1,0x9481,0x8c61,0x8c41,0x8421,0x8401,0x8401,0x8401,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7be1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7ba1,0x7ba1,0x73a1,0x73a1,0x73a1,0x73a1,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x73a1,0x73a1,0x7ba1,0x7bc1,0x7ba1,0x6b42,0x3aa3,0x22a3,0x2ac3,0x32e5,0x8c71,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x73ae,0x2a64,0x2282,0x22a3,0x2ae3,0x2b03,0x3344,0x3364,0x3384,0x3384,0x3ba4,0x3ba4,0x3ba4,0x3ba4,0x3bc4,0x3ba4,0x3ba4,0x3ba4,0x3ba4,0x3ba4,0x33a4,0x3384,0x3364,0x63ec,0x8c91,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x5b0a,0x1a23,0x1221,0x3aa6,0x7bcf,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x738c,0x5b06,0x2a02,0x09e1,0x2203,0x4ac9,0x6b6d,0x7bae,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x634c,0x4288,0x1202,0x09e0,0x09e0,0x0a00,0x1a02,0x52ea,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x6b6d,0x4ac7,0x4aa3,0x4ae3,0x5303,0x5b25,0x73ad,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4aa7,0x4282,0x4aa2,0x4ac2,0x52e2,0x5303,0x5b23,0x5b43,0x5b43,0x5b63,0x6363,0x6363,0x6363,0x6383,0x6363,0x5b63,0x32a1,0x0a80,0x0a80,0x0a60,0x0a60,0x0a60,0x0a60,0x0a60,0x0a60,0x0260,0x0a40,0x0240,0x0240,0x0220,0x0200,0x2a41,0x83e5,0x8c05,0x6303,0x7323,0x62c3,0x41e1,0x2960,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x20e0,0x2940,0x2120,0x08c0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x11e0,0x4aa2,0x7384,0x7be4,0xad06,0xb548,0x9cd1,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x19c3,0x0180,0x01a0,0x01a0,0x09c1,0x3246,0x636c,0x8430,0x8c51,0x8430,0x8430,0x8430,0x7c0f,0x634c,0x3246,0x09e0,0x09e0,0x09e0,0x09e0,0x0a00,0x1202,0x5b2b,0x8c71,0x8c71,0x8c51,0x8430,0x8430,0x8430,0x7c0f,0x42a8,0x0a00,0x0a20,0x0a61,0x1281,0x12a1,0x1ac1,0x5b61,0x9ce1,0xa500,0xa500,0x9ce0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8420,0x8400,0x7be0,0x7be0,0x7be0,0x7be0,0x7bc0,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7bc1,0x7ba1,0x7ba1,0x7ba1,0x73a1,0x73a1,0x73a1,0x73a1,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x7361,0x7361,0x7361,0x6b61,0x6b61,0x6b41,0x6b41,0x6b41,0x6321,0x5aa1,0x39e1,0x3a03,0x5b27,0x7c09,0x844a,0x846b,0x9491,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x7bee,0x6b89,0x73e9,0x7c4a,0x8c8b,0x94cb,0x9d2c,0xa54d,0xa58d,0xadad,0xadae,0xadce,0xadce,0xadce,0xadce,0xadce,0xadce,0xadce,0xadce,0xadad,0xadad,0xad8d,0xa56d,0x9d0f,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6b,0x6b88,0x73a8,0x842b,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5b0b,0x21e2,0x09e0,0x09e0,0x0a01,0x3a84,0x73a9,0x7bcc,0x73ae,0x73ce,0x73ae,0x73ae,0x73ae,0x6b8d,0x4aa9,0x2224,0x0a01,0x0a00,0x0a00,0x0a00,0x0a20,0x1a22,0x5b0b,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x6b6d,0x4aa6,0x3a82,0x42a2,0x42e3,0x5307,0x73ce,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x6b6d,0x4285,0x3a62,0x4282,0x42c2,0x4ae2,0x5303,0x5343,0x5b43,0x5b63,0x5b63,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b83,0x5b63,0x5b63,0x5b63,0x5b43,0x5b42,0x5322,0x3aa1,0x0a00,0x09e0,0x3241,0x5ae3,0x7b64,0x7343,0x41e1,0x08e0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x01c0,0x01e0,0x1220,0x1220,0x5323,0xa4c8,0x9cd1,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x6b8d,0x21c4,0x01a0,0x01a0,0x01c0,0x01e0,0x09e0,0x1a02,0x4ac9,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x3a87,0x11e2,0x09e0,0x09e0,0x0a00,0x0a00,0x0a00,0x0a20,0x1222,0x5b2b,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x42a8,0x0a00,0x0a20,0x0a61,0x1281,0x12a1,0x2ae1,0x8c61,0xa500,0xa500,0x9ce0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8400,0x8400,0x7be0,0x7be0,0x7bc0,0x7bc0,0x7bc0,0x7bc0,0x7bc0,0x7ba0,0x7ba0,0x73a0,0x73a1,0x73a1,0x73a1,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x7381,0x7361,0x7361,0x7361,0x6b61,0x6b61,0x6b61,0x6b41,0x6b41,0x6b21,0x6321,0x6301,0x52a1,0x39e1,0x2141,0x1981,0x4aa5,0x6ba8,0x73c9,0x7c0a,0x842a,0x8c70,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bce,0x6b69,0x73c9,0x7c0a,0x846b,0x8cab,0x94ec,0x9d2c,0xa54d,0xa56d,0xad8d,0xad8e,0xadae,0xadae,0xadae,0xadae,0xadad,0xadad,0xad8d,0xad8d,0xa56d,0xa56d,0xa54c,0x9cef,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6b,0x6b68,0x6b88,0x6ba9,0x7bcf,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5b0b,0x11e2,0x0a01,0x1201,0x4ae5,0x8429,0x8c4a,0x5306,0x42a8,0x52ea,0x530a,0x5b2a,0x5309,0x3266,0x1221,0x0a21,0x0a21,0x0a21,0x0a21,0x0a41,0x0a41,0x1242,0x5b0b,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x73ae,0x738d,0x7bc8,0x8406,0x8c46,0x9487,0x946a,0x840f,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6b,0x7bc6,0x8405,0x8c46,0x9486,0xa4c6,0xad07,0xb547,0xb567,0xbd87,0xbda8,0xbdc8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c8,0xc5c7,0xc5a7,0xc5a7,0xbda7,0xbd87,0xbd67,0xc587,0x9ca6,0x2240,0x09e0,0x01c0,0x11a0,0x4a62,0x6b23,0x31a1,0x00c0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0880,0x08a0,0x10c0,0x1100,0x1920,0x2160,0x21a0,0x21a0,0x09a0,0x01c0,0x01e0,0x0200,0x0220,0x0a40,0x4b06,0x9491,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ae,0x3a24,0x3221,0x3221,0x3241,0x3a61,0x3a81,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3a82,0x3aa2,0x3aa2,0x3ac2,0x42c2,0x42c3,0x636b,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x52e9,0x3262,0x3282,0x3ac3,0x3ae3,0x3ae3,0x6bc2,0x9cc1,0x9ce0,0x9ce0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7be0,0x7bc0,0x7bc0,0x7bc0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7361,0x7361,0x6b61,0x6b61,0x6b61,0x6b41,0x6b41,0x6b41,0x6b41,0x6b41,0x6321,0x6321,0x62e1,0x5281,0x39c0,0x2121,0x2963,0x29e3,0x2a43,0x3283,0x32a4,0x3ac4,0x3ae4,0x4306,0x8430,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ae,0x3285,0x32a4,0x3ae4,0x3b05,0x4345,0x4385,0x4ba6,0x4bc6,0x4bc6,0x4be6,0x53e6,0x53e6,0x5406,0x5406,0x5406,0x5406,0x5406,0x53e6,0x53e6,0x4be6,0x4bc6,0x4ba6,0x6c0c,0x8c91,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x52ea,0x3264,0x3263,0x42a6,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x5b0b,0x11e2,0x1a22,0x5b26,0x948a,0x8c29,0x42e4,0x1261,0x1261,0x42e4,0x8c49,0x9caa,0x94aa,0x7be8,0x42c4,0x32a3,0x32a3,0x32a3,0x32c3,0x3ac3,0x3ac3,0x3ac3,0x634b,0x8410,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x738d,0x7bc8,0x8406,0x8c46,0x6345,0x632b,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x7ba9,0x83e5,0x8c05,0x7bc5,0x4ae2,0x6364,0xa507,0xb567,0xbd87,0xb587,0x7404,0x4b42,0x4b42,0x4b62,0x5383,0x5b83,0x5b83,0x5b83,0x63c3,0xa526,0xce08,0xcde8,0x9ce6,0x63a3,0x4b42,0x4b22,0x4b22,0x4b02,0x7c04,0xbd67,0xc587,0x8c45,0x73a4,0x2a21,0x21e0,0x5aa2,0x7323,0x5a82,0x39c1,0x2100,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18e0,0x2920,0x3161,0x39c1,0x4a02,0x5262,0x5ac3,0x7343,0x7364,0x3221,0x01c0,0x01e0,0x0200,0x0a20,0x0a20,0x2a85,0x8c91,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x83ee,0x7bc6,0x83e5,0x8c25,0x8c66,0x9486,0x9ca6,0x9cc6,0x9cc6,0x9cc6,0x9cc6,0x9cc6,0x9ca6,0x9ca6,0x9ca6,0x9cc6,0x9cc7,0xa4e7,0xa4e7,0xa507,0xa507,0xa507,0x948c,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x83ea,0x8427,0x8c68,0x9ca9,0xa4e9,0x9ce9,0x9cc4,0x9ce0,0x9cc0,0x9cc0,0x94a0,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7be0,0x7bc0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b41,0x6b21,0x6b21,0x6321,0x6320,0x62e0,0x5280,0x39e0,0x2121,0x39c4,0x5286,0x73a9,0x7bc9,0x840a,0x844a,0x8c8b,0x94ac,0x9cec,0x9ced,0x8c90,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bee,0x7bea,0x8c6b,0x94cc,0xa50d,0xad6e,0xb5cf,0xbdef,0xc630,0xc650,0xce70,0xce70,0xce70,0xce90,0xce91,0xce91,0xce90,0xce90,0xce70,0xce70,0xce50,0xc650,0xc60f,0xad70,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bcf,0x7bcf,0x73ab,0x7be9,0x8409,0x842a,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b0b,0x2a43,0x6b87,0x948b,0x7be8,0x32c4,0x1281,0x1281,0x1aa1,0x7408,0xbd8d,0x8c69,0x8449,0xb54c,0xa4eb,0x9cca,0x9cca,0x9cea,0x9cea,0xa50a,0xa50a,0x9cea,0x8c4d,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x9449,0xa4a7,0xa4c8,0x7be7,0x738d,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738d,0x8c08,0xa486,0xa4c7,0xa4a6,0x4ae3,0x5343,0xbd88,0xde49,0xe669,0xe689,0x94a6,0x22e1,0x12c0,0x5ba3,0xa527,0xb587,0xb567,0xb567,0xbdc8,0xe669,0xd628,0xbd87,0xde49,0xad47,0x32e1,0x0a80,0x0a80,0x0a80,0x73e4,0xcdc7,0xd5c8,0xc587,0xb506,0x5ae2,0x21c0,0x6b23,0x7b64,0x6ae3,0x5a82,0x39c1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x10a0,0x10c0,0x1900,0x2140,0x2980,0x31a1,0x5282,0x83e4,0x6303,0x11e0,0x01e0,0x0200,0x0a20,0x0a20,0x2a85,0x8c71,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ae,0x4265,0x3a62,0x4282,0x42c2,0x4ae2,0x4b02,0x4b02,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x4b23,0x5343,0x5343,0x5343,0x5343,0x5343,0x6bab,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5b09,0x42a3,0x42c4,0x4ae4,0x4b24,0x73e4,0x9cc1,0x9cc0,0x9cc0,0x94a0,0x9480,0x8c60,0x8420,0x8400,0x7be0,0x7be0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6300,0x6300,0x62e0,0x52a0,0x39e0,0x2120,0x1920,0x11a1,0x3244,0x3a84,0x42a5,0x42c5,0x4ae6,0x4b06,0x5346,0x5367,0x5b67,0x5b88,0x8430,0x9492,0x9492,0x8c71,0x8430,0x8430,0x8410,0x73ae,0x4ac6,0x4b06,0x5347,0x5b87,0x63c8,0x6c08,0x6c29,0x7449,0x7469,0x7469,0x7489,0x7489,0x748a,0x748a,0x7c8a,0x7489,0x7489,0x7489,0x7489,0x7489,0x7469,0x6c49,0x7c4d,0x9492,0x8c71,0x8c51,0x8430,0x7bef,0x7bcf,0x7bcf,0x5b0a,0x4ac5,0x4ae5,0x5307,0x7bce,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x634b,0x73a9,0x8c6a,0x6367,0x2aa3,0x1282,0x12a2,0x12c2,0x12c2,0x6bc7,0xb58d,0xad4c,0xa52b,0xc5cd,0x9489,0x63a6,0x63a6,0x63a6,0x63c6,0x63c6,0x63c6,0x63a6,0x73cc,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x9449,0xa4a7,0xa4c7,0x8c28,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x6b6c,0x8be6,0xa486,0xacc7,0xad07,0x6b64,0x32a1,0xad07,0xde49,0xe689,0xe689,0xbd87,0x4322,0x63c4,0xc5c8,0xce28,0x94c6,0x8c85,0x8c85,0x94a6,0xce09,0xd608,0xa526,0xd628,0xd628,0x4322,0x0a80,0x0a80,0x0a80,0x42e2,0xbd67,0xd5c8,0xc587,0xbd26,0x83c4,0x19c0,0x52a2,0x7344,0x6b03,0x5a82,0x4a02,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x21a0,0x7384,0x83e5,0x3241,0x01e0,0x0200,0x0a20,0x0a40,0x2a85,0x8c91,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x2204,0x01c0,0x01e0,0x0a00,0x0a40,0x0a40,0x0a60,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x12a1,0x12a1,0x12a1,0x5b6b,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x0a00,0x0a21,0x0a41,0x1261,0x6381,0x9cc0,0x9cc0,0x94a0,0x9480,0x8c60,0x8c40,0x8420,0x7be0,0x7be0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6300,0x6300,0x5ae0,0x52a0,0x4200,0x2120,0x39c4,0x4a46,0x4ac6,0x52e6,0x5307,0x5b27,0x5b67,0x6388,0x63a8,0x6bc9,0x6be9,0x7409,0x7429,0x742a,0x8450,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ae,0x5b08,0x6368,0x63a8,0x6be9,0x742a,0x7c6a,0x84ab,0x84cb,0x8ceb,0x8d0c,0x8d0c,0x8d0c,0x8d2c,0x8d2c,0x952c,0x8d2c,0x8d2c,0x8d0b,0x6448,0x2383,0x2363,0x2363,0x63ec,0x8c91,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6a,0x6b88,0x6ba8,0x73c9,0x7bce,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bac,0x7be9,0x5305,0x1a62,0x1281,0x12a2,0x12c2,0x12e2,0x12e2,0x2b03,0x6c08,0xa52b,0xad4c,0x94aa,0x5365,0x22e2,0x12e2,0x12e2,0x12e2,0x12e1,0x12e1,0x12c2,0x5b6b,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x9449,0xa4a7,0xa4c8,0x840a,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x6b4a,0x8c06,0xa486,0xacc7,0xb507,0x8c25,0x2a81,0x8c86,0xd629,0xe669,0xe689,0xd629,0x9cc6,0xc5c8,0xc5e8,0x6bc4,0x1ac1,0x12a0,0x12a0,0x1aa1,0x63a4,0xad47,0xcde8,0xc5e8,0x9485,0x2ac1,0x0a80,0x0a60,0x0a60,0x1a60,0x9486,0xcdc7,0xc587,0xbd46,0x9c85,0x3221,0x31e1,0x7323,0x6b03,0x5aa2,0x4a22,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x5ac3,0x9445,0x6343,0x1200,0x0a20,0x0a20,0x0a40,0x2a85,0x8c91,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x2a04,0x01c0,0x01e0,0x0a20,0x0a40,0x0a60,0x0a80,0x0a80,0x0aa0,0x0aa0,0x0aa0,0x0aa0,0x12a1,0x22c1,0x4342,0x5b83,0x4322,0x1ac1,0x12c1,0x12c1,0x12a1,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x0a00,0x0a21,0x0a41,0x32a1,0x7c00,0x94a0,0x94a0,0x9480,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x5ae0,0x52a0,0x4200,0x2960,0x2121,0x3a04,0x5ae6,0x6b68,0x7389,0x73c9,0x7be9,0x842a,0x8c4b,0x948b,0x94cc,0x9cec,0x9d0d,0xa52d,0xa52d,0xa52d,0x8c90,0x94b2,0x9492,0x8c71,0x8430,0x8430,0x8410,0x7bce,0x73ca,0x844b,0x8c8c,0x9cec,0xa52d,0xad8e,0xb5af,0xbdef,0xbe10,0xc630,0xc630,0xc650,0xc650,0xc650,0xc650,0xc650,0xc650,0xe713,0xb5ef,0x2b84,0x2363,0x2363,0x63ec,0x9492,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b4a,0x6b88,0x6ba8,0x73c9,0x7bce,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b4c,0x3a64,0x1241,0x1261,0x22a2,0x3304,0x3b24,0x2b03,0x1b02,0x53a6,0xad6c,0xbdcd,0xbdcd,0xbdcd,0xbdcd,0x6c07,0x1b02,0x2b23,0x3b64,0x3b64,0x2b23,0x1ae2,0x5b6b,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x9449,0x9c87,0xa4a7,0x840c,0x7bcf,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x736d,0x6b29,0x83c6,0x9427,0x9c67,0xa4a7,0x9447,0x3a85,0x6b86,0xb529,0xc589,0xc58a,0xc58a,0xb549,0xa4e9,0x73a8,0x42c7,0x3ac7,0x42c8,0x42e8,0x42e8,0x42e8,0x4ae9,0x5b29,0x5b29,0x4ae9,0x4ae8,0x32a6,0x1262,0x0a60,0x0a60,0x6363,0xc587,0xc587,0xbd47,0xacc6,0x6303,0x1980,0x5ac3,0x7303,0x62a3,0x4a22,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x29e1,0x8c05,0x9445,0x4ac2,0x5302,0x5323,0x42e2,0x32a5,0x8c91,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x2a05,0x09c0,0x0a00,0x1220,0x1240,0x1260,0x1281,0x12a1,0x12a1,0x12c1,0x1ac1,0x1ac1,0x4b43,0xa527,0xce29,0xde6a,0xce29,0x7405,0x1ae1,0x12c1,0x12c1,0x5b8b,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x09e0,0x0a01,0x0a41,0x42e1,0x8c60,0x94a0,0x9480,0x9480,0x8c60,0x8420,0x8400,0x7be0,0x7bc0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x5ac0,0x5280,0x4200,0x2120,0x18e0,0x1981,0x19c1,0x2202,0x2a22,0x2a43,0x2a63,0x2a83,0x32a3,0x5346,0x8c8c,0xad6e,0xad6f,0x8c8b,0x4b66,0x3b44,0x3b44,0x4346,0x7c2f,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ae,0x3265,0x2a83,0x2aa3,0x32e4,0x3324,0x3b45,0x3b85,0x43a5,0x43a5,0x43c5,0x43c6,0x43c6,0x43e6,0x43e6,0x43e6,0x43e6,0x5407,0xd6b2,0xbe10,0x2b84,0x2363,0x2343,0x63ec,0x8c91,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x73ce,0x4aa9,0x1a22,0x1a22,0x3285,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b2b,0x2223,0x1a62,0x3ac4,0x846a,0xb58d,0xbdce,0xa54c,0x63e7,0x6c07,0xce2e,0xeef1,0xeef1,0xeef1,0xe6d0,0x9d2b,0x5bc5,0xa56b,0xd66e,0xce4e,0xad8b,0x5bc6,0x5b8b,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x8409,0x8c27,0x8c07,0x7bcd,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x738d,0x7bad,0x7bce,0x7bee,0x83ef,0x7bef,0x7c0f,0x8c4f,0x8c50,0x8c50,0x8c50,0x8c50,0x8430,0x8430,0x8410,0x8410,0x8430,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7c0f,0x636c,0x2a85,0x0a40,0x3281,0xa4e6,0xbd67,0xbd47,0xacc6,0x7ba4,0x1980,0x3a01,0x6b03,0x62a3,0x5222,0x1060,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0160,0x11a0,0x7364,0xace6,0xace6,0xbd47,0xbd87,0xb547,0x9488,0x94b1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ae,0x4ac5,0x73a4,0x8c25,0x9465,0x9ca6,0xa506,0xad27,0xb567,0xb567,0xb587,0xb588,0xb5a8,0xce09,0xe6aa,0xad28,0xad47,0xe6aa,0xad48,0x2b02,0x12c1,0x12c1,0x5b8b,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ac9,0x09e1,0x0a01,0x0a21,0x42e1,0x9480,0x9480,0x9480,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x62e0,0x5ae0,0x5ac0,0x5280,0x4200,0x2940,0x2101,0x5ac7,0x6328,0x6b89,0x73a9,0x73ca,0x7c0a,0x842b,0x8c6c,0x8c8c,0x94cd,0xad4e,0xbdd0,0x94ec,0xad6e,0xce51,0x744a,0x2323,0x1b23,0x2b25,0x7c0f,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a44,0x1242,0x1a82,0x1aa2,0x1ae3,0x2303,0x2323,0x2343,0x2363,0x2363,0x2383,0x2383,0x2383,0x2383,0x2383,0x2384,0x3bc5,0xce91,0xc630,0x3384,0x2363,0x2343,0x63cc,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x73ce,0x4aa8,0x1a22,0x1a42,0x3285,0x73ae,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x738c,0x73c9,0x842a,0x94ab,0xbd8e,0xad2c,0x94eb,0xce4f,0xce4f,0xc60e,0xe6d0,0xf711,0xf711,0xf711,0xf711,0xde8f,0xce4e,0xe6d0,0xc60d,0xa52b,0xd66e,0xc60d,0x9cee,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x73a8,0x7ba5,0x7369,0x738e,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x7bcf,0x7bcf,0x7bef,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x634c,0x1222,0x1a20,0x5b23,0x8c25,0xace6,0x83c4,0x52c2,0x19a0,0x1960,0x4201,0x39c1,0x3160,0x0820,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0960,0x52c2,0x9c65,0xb527,0xb527,0xb547,0xc5a7,0xd608,0xcde9,0xa4f1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x840e,0x83e7,0x7be5,0x7ba4,0x83e4,0x8c25,0x9445,0x9485,0x9ca6,0x9cc6,0xa4c6,0xa4e6,0xa4e6,0xc5c8,0xeeea,0xce29,0xd649,0xde8a,0x7c46,0x1b01,0x12e1,0x12c1,0x5b8b,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ac9,0x0a01,0x0a01,0x0a21,0x42c1,0x8c60,0x9480,0x8c60,0x8c60,0x8c40,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x62e0,0x5ac0,0x52a0,0x4a20,0x2960,0x1900,0x2162,0x3203,0x4a85,0x52c6,0x52e6,0x5307,0x5b27,0x6348,0x6388,0x6ba8,0x6bc9,0x740a,0xad4e,0xc611,0x9d2d,0xbdd0,0xd672,0x744a,0x2323,0x2323,0x2b25,0x7c0f,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a25,0x1242,0x1a82,0x1aa2,0x1ae3,0x2303,0x2323,0x2363,0x2363,0x2363,0x2383,0x2383,0x2383,0x2383,0x2384,0x33a4,0x6448,0xd692,0xce72,0x5407,0x2b64,0x2343,0x63cc,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6a,0x7bc9,0x7bea,0x840b,0x7bce,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x6b4c,0x5b07,0x6367,0x7be9,0xad4d,0xb58e,0xa54c,0xd670,0xc60e,0x84aa,0xc60e,0xf731,0xf731,0xf731,0xf731,0xde8f,0x9d0a,0xd66f,0xde8f,0xb5ac,0xde8e,0xce2d,0x94ad,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x6328,0x6305,0x6b4b,0x73ae,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x738e,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x3246,0x0200,0x0200,0x42a2,0x9c86,0x7bc4,0x19c0,0x0180,0x0140,0x0120,0x00e0,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x3a21,0x8c05,0xacc6,0x9466,0x5303,0x2a61,0x73a4,0xc5a7,0xd5ea,0xa4f2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x7bee,0x52c6,0x2201,0x1200,0x1220,0x1a60,0x1a81,0x1aa1,0x1ac1,0x1ac1,0x1ae1,0x22e1,0x2301,0x5ba3,0xa527,0xbda8,0xad68,0x7426,0x2b02,0x12e1,0x12e1,0x12c1,0x5bab,0x9cf3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ae9,0x0a01,0x0a01,0x0a21,0x42c1,0x8c60,0x9480,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7380,0x7360,0x7360,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x5ac0,0x4220,0x2940,0x10a0,0x1120,0x0981,0x09a1,0x11c1,0x11e1,0x1201,0x1222,0x1242,0x1a62,0x1a82,0x1aa2,0x1ac3,0x22e3,0x2303,0x5bc8,0xa56e,0xc610,0xbdf0,0x8ccc,0x3b65,0x2343,0x2343,0x2b25,0x7c0f,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1242,0x1a82,0x1aa3,0x1ae3,0x2303,0x2343,0x2344,0x2364,0x2384,0x2384,0x2384,0x2384,0x2384,0x2ba4,0x7ccb,0xded3,0xe714,0xe714,0xce71,0x6c49,0x2343,0x63cc,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bcb,0x9cac,0xa4cd,0xa4cd,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x5b2b,0x1a03,0x1242,0x1a62,0x6387,0x9cec,0xb58d,0xad6d,0x6c08,0x2b43,0xa56c,0xf731,0xff52,0xff52,0xff52,0xdeb0,0x53c5,0x7448,0xb5ac,0xc60d,0xb5ac,0x7427,0x63ab,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a67,0x21e4,0x630c,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738e,0x738e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x738e,0x3a67,0x0200,0x0200,0x1a00,0x8405,0x9465,0x3201,0x0180,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0140,0x5ac3,0x9c65,0xa4a6,0x6343,0x1a20,0x2a61,0x7be4,0xcdc8,0xd5ea,0xa4f2,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ce,0x2a25,0x01c0,0x0a00,0x0a20,0x0a40,0x0a80,0x12a0,0x12a1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x1ae1,0x2b02,0x2301,0x1301,0x1301,0x12e1,0x12e1,0x12c1,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x4ac9,0x09e1,0x0a01,0x0a21,0x42c1,0x8c60,0x8c60,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x5260,0x2120,0x08e0,0x0960,0x0981,0x09a1,0x09c1,0x11e1,0x1201,0x1222,0x1242,0x1a62,0x1a82,0x1aa2,0x1ac2,0x1ae3,0x2303,0x2303,0x2323,0x3b65,0x53c7,0x43a6,0x2b64,0x2364,0x2344,0x2343,0x2b25,0x73ee,0x94b2,0x9492,0x8c71,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1242,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2384,0x2384,0x3bc5,0xb5cf,0xef55,0xa56e,0xa58e,0xef34,0xa56e,0x3384,0x63ec,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bab,0x9cac,0xa4ed,0xa4ed,0x83ee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x5b2b,0x1a03,0x1241,0x1262,0x12a2,0x2ae3,0x3b44,0x2b23,0x1b22,0x1b43,0x8cca,0xd690,0xe6d1,0xe6d0,0xe6d1,0xce6f,0x6c27,0x1b62,0x2b63,0x4384,0x3363,0x1b02,0x5bab,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x11c2,0x5aeb,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x6b4c,0x21e3,0x01e0,0x01e0,0x09e0,0x5b03,0x9c86,0x6323,0x11a0,0x0160,0x0120,0x0100,0x00c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x0100,0x0140,0x5ac3,0x9c65,0xacc6,0x9c86,0x8404,0x9c85,0xc5a7,0xd608,0xb549,0x94b1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ce,0x3225,0x01c0,0x0a00,0x0a20,0x0a40,0x0a81,0x12a1,0x1ac1,0x1ac1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1ae1,0x1b01,0x1b01,0x1b02,0x1ae2,0x1ae1,0x1ac1,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x11e1,0x1201,0x1221,0x42c1,0x8c60,0x8c60,0x8c60,0x8c40,0x8420,0x7be0,0x7bc0,0x7bc0,0x73a0,0x7380,0x7380,0x7380,0x7360,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x5ac0,0x4a60,0x3a20,0x21c0,0x09a1,0x09c1,0x11e1,0x1201,0x1221,0x1242,0x1a62,0x1a82,0x1aa2,0x1ac3,0x1ae3,0x2303,0x2323,0x2323,0x2343,0x2343,0x2364,0x2364,0x2364,0x2364,0x2364,0x2344,0x2b45,0x73ee,0x94b2,0x9492,0x8c51,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1a42,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2b84,0x2b84,0x33a4,0x8d0c,0xe714,0xded3,0xded3,0xe6f4,0x8ccc,0x2b64,0x63ec,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x738b,0x9cac,0xa4ed,0xa4ed,0x7bee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x5b0b,0x1a03,0x1241,0x1262,0x1aa2,0x1ac2,0x1ae2,0x1b02,0x1b23,0x1b22,0x2b63,0x4ba5,0x7c89,0x950b,0x8cca,0x5be6,0x2b63,0x2363,0x2363,0x1b42,0x1b42,0x1b22,0x5bab,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x09c0,0x3a67,0x6b6d,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x7bad,0x83c8,0x3a62,0x01c0,0x01c0,0x01e0,0x2a21,0x83e5,0x8c25,0x6323,0x29e1,0x0140,0x0120,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x0140,0x31e1,0x7bc4,0xa4c6,0xb527,0xc567,0xcda7,0xc5a7,0x9486,0x5b66,0x8c91,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x73ce,0x3226,0x01c0,0x09e0,0x0a20,0x0a40,0x2aa1,0x7404,0xa527,0xad67,0xad67,0xad87,0xb588,0xb588,0xb588,0xb588,0xb5a8,0xb588,0xb588,0xad88,0xad68,0xa548,0xa50c,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x738a,0x6b87,0x73c7,0x7be8,0x8407,0x8c61,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7380,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6300,0x6300,0x6300,0x6b20,0x6b40,0x6300,0x4240,0x21e1,0x11e1,0x1221,0x1242,0x1a62,0x1a82,0x1aa3,0x1ac3,0x1ae3,0x2303,0x2323,0x2323,0x2343,0x2344,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2344,0x2b45,0x73ee,0x94b2,0x9492,0x8c51,0x8430,0x8410,0x8410,0x738e,0x2a45,0x1a42,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2b84,0x2b84,0x2b84,0x3bc6,0x7cab,0xa58e,0xad8e,0x7cab,0x3ba5,0x2343,0x63ec,0x8c91,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x7bce,0x6b8a,0x9cad,0xa4ed,0xa4ed,0x7bee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b0b,0x1a03,0x1241,0x1262,0x1aa2,0x1ac2,0x1ae2,0x1b03,0x1b23,0x1b23,0x2343,0x8cea,0xded1,0xef11,0xe6f1,0xce6f,0x9d4b,0x950a,0x950a,0x950a,0x8cea,0x8cc9,0x848d,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x09c0,0x19e3,0x634c,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4d,0x630c,0x630c,0x630c,0x630c,0x6b4c,0x6b4c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b4b,0x630b,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x630b,0x738b,0x738b,0x738b,0x7b8b,0x8be9,0x9c67,0xa4a6,0x6b63,0x09e0,0x01e0,0x0200,0x0a00,0x2221,0x5b03,0x83e5,0x7ba4,0x4a62,0x1960,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x0140,0x0160,0x29e0,0x5b03,0x7be4,0x8c25,0x7bc4,0x5302,0x6363,0x94a8,0x9cd1,0x9cd3,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ce,0x3226,0x09c0,0x09e0,0x1220,0x5323,0x9ce6,0xc5c8,0xb587,0xb567,0xb587,0xb588,0xbd88,0xbda8,0xbda8,0xbda8,0xbda8,0xbda8,0xbda8,0xb588,0xb568,0xad48,0xa50c,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x738a,0x73a7,0x7bc7,0x7be8,0x8427,0x8c61,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x73a0,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6300,0x6320,0x6b40,0x7360,0x7380,0x73a0,0x7380,0x6300,0x4260,0x2241,0x1242,0x1a62,0x1aa2,0x1ac3,0x1ae3,0x2303,0x2303,0x2323,0x2344,0x2344,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2364,0x2344,0x2b45,0x73ce,0x9492,0x9492,0x8c51,0x8430,0x8410,0x7bef,0x738e,0x3245,0x1242,0x1a82,0x1aa3,0x1ae3,0x2303,0x2324,0x2344,0x2364,0x2364,0x2384,0x2b84,0x2b84,0x2b84,0x2b84,0x2b84,0x2b84,0x3385,0x3385,0x2b84,0x2364,0x2344,0x63ec,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ce,0x634a,0x9cad,0xa4ed,0xa4ee,0x83ee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2203,0x1242,0x1262,0x1a82,0x1ac2,0x1ae2,0x1b03,0x1b23,0x1b43,0x3364,0xbdee,0xeef1,0x9d2b,0xa54c,0xf732,0xe6d0,0xce4f,0xce4e,0xce2e,0xc60e,0xc5ed,0xad2e,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x3a47,0x09c0,0x11c2,0x5b0b,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x632c,0x31e6,0x19a3,0x19a3,0x4264,0x7ba6,0x83e6,0x7bc6,0x83e6,0x83e6,0x83e6,0x8406,0x8406,0x8406,0x8406,0x8406,0x8c26,0x6b65,0x3a63,0x19e2,0x11c2,0x11c2,0x4a83,0x8c26,0x9446,0x9446,0x9446,0x9c65,0x9c85,0xa4a6,0x7bc4,0x1a00,0x0200,0x0200,0x0200,0x09e0,0x1a00,0x3a41,0x6303,0x7384,0x62e3,0x31c1,0x0040,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x01a0,0x01c0,0x09e0,0x1220,0x3aa2,0x8c45,0xb547,0xa4e8,0x94b1,0x94d2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ce,0x3226,0x09e0,0x2a41,0x73e5,0xad27,0xa527,0x6bc4,0x2ac1,0x12c1,0x12c1,0x12c1,0x12e1,0x1ae1,0x1ae1,0x1b01,0x1b01,0x1b01,0x1b02,0x1ae1,0x1ae1,0x1ac2,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x4ac9,0x11e1,0x1201,0x1221,0x3aa1,0x8c40,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6320,0x6320,0x6b40,0x6b60,0x7380,0x7380,0x73a0,0x7bc0,0x7bc0,0x73a0,0x6340,0x4aa1,0x2262,0x2aa3,0x32e4,0x3305,0x3b25,0x3b45,0x3b65,0x3b86,0x3b86,0x43a6,0x43a6,0x43a6,0x43a6,0x43a6,0x43a6,0x43a6,0x3b86,0x4386,0x73ce,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x738e,0x3a66,0x2a84,0x2aa4,0x32e4,0x3305,0x3b45,0x3b66,0x4386,0x43a6,0x43a6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43c6,0x43a6,0x43a6,0x3b86,0x6bed,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x5b29,0x9cad,0xa4ed,0xa4ee,0x83ee,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2203,0x1222,0x1262,0x1a82,0x4325,0x84aa,0x8ceb,0x950b,0x952c,0x9d2c,0x9d4c,0xe6d1,0xdeb0,0xdeb0,0xef11,0xbdcd,0x9d2b,0x9d4b,0x9d2b,0x9d0a,0x94ca,0x7c2c,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4267,0x2a02,0x2a22,0x52a9,0x738e,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4d,0x4268,0x21c1,0x4262,0x7ba5,0x7ba5,0x4282,0x21e1,0x2201,0x2201,0x2201,0x2a21,0x4aa2,0x6323,0x52e3,0x3a62,0x5b03,0x8405,0x8c45,0x6323,0x2221,0x09e0,0x1a00,0x4282,0x4aa2,0x4aa2,0x4aa2,0x4ac2,0x4ac2,0x52c2,0x4282,0x1220,0x0a00,0x0a00,0x1220,0x5b23,0x9445,0x9445,0x7ba4,0x52c3,0x5ac3,0x5ac3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x10a0,0x18e0,0x2120,0x2960,0x31a1,0x31e1,0x3a01,0x4242,0x4a82,0x52c2,0x52e2,0x7384,0xa4e6,0xad27,0x73c4,0x42c5,0x8c71,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x73ce,0x3a46,0x52c3,0x8c46,0xa4e7,0x7be5,0x3ac2,0x1281,0x12a1,0x12c1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x1301,0x1301,0x1301,0x1b02,0x12e2,0x12e1,0x12c2,0x5b8b,0x9cd3,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x52c9,0x11e1,0x0a01,0x1221,0x3aa1,0x8400,0x8c60,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6b20,0x6b40,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7be0,0x7be0,0x7bc0,0x6b40,0x7be9,0x9ccd,0xa52e,0xad6f,0xad8f,0xb5b0,0xbdd0,0xbdf1,0xbe11,0xc631,0xc631,0xc631,0xc631,0xc611,0xbe11,0xbdf1,0xbdd1,0x9490,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ce,0x73cb,0x8c4c,0x948d,0x9cee,0xa54f,0xad90,0xb5d0,0xbe11,0xc631,0xc652,0xc652,0xce52,0xce72,0xce72,0xce72,0xce72,0xce72,0xce72,0xc652,0xc651,0xc631,0xbdf1,0xa551,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x5b09,0x9cac,0xa4ed,0xa4ee,0x83ee,0x83ef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1242,0x1262,0x1a82,0x63a7,0xd650,0xe6b1,0xeef2,0xef12,0xef32,0xa56c,0x7c69,0xb5ad,0xbdee,0x950b,0x950b,0xe6f1,0xf731,0xf711,0xeef0,0xe6af,0xad4e,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x7389,0x7bc6,0x83e6,0x73a8,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x6b4a,0x7385,0x7bc5,0x7385,0x3a62,0x09e0,0x09e0,0x09e0,0x0a00,0x0a00,0x6364,0xa4e7,0xad07,0xace7,0x9486,0x4ae3,0x3261,0x73a4,0x9ca6,0x8c45,0x6b84,0x6b63,0x6b64,0x6b63,0x6b63,0x6b63,0x6b83,0x6b83,0x7383,0x73a4,0x73a4,0x73a4,0x73a4,0x6b84,0xa4a6,0xb506,0x8c25,0x8c05,0x83e5,0x4a62,0x29a1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2941,0x39a1,0x4201,0x5262,0x5aa3,0x6b03,0x7364,0x83c4,0x8c05,0x9445,0x9c86,0xa4c6,0x8425,0x42c2,0x1240,0x2a85,0x8450,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x7bce,0x7387,0x9446,0x8405,0x4ae3,0x1241,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x12e1,0x1302,0x1302,0x1b02,0x12e2,0x12e2,0x12c2,0x5b8a,0x94d2,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x52ca,0x11e1,0x1201,0x3263,0x6ba6,0x8401,0x8c40,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x7be1,0x8c48,0x842a,0x7c2a,0x844b,0x846b,0x848c,0x8cac,0x8ccc,0x8cec,0x8cec,0x94ed,0x94ed,0x8cec,0x8cec,0x8ccc,0x8cac,0x842f,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x5b29,0x6369,0x6ba9,0x73ea,0x7c2b,0x846b,0x8cac,0x8ccc,0x94ed,0x950d,0x950d,0x950d,0x952d,0x952d,0x952d,0x952d,0x952d,0x950d,0x950d,0x950d,0x8ced,0x8ccc,0x8c8f,0x8c71,0x8c71,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x52e8,0x948c,0xa4ed,0xa4ee,0x83ee,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1242,0x1262,0x1a82,0x5b87,0xce30,0xeed2,0xf712,0xf733,0xf753,0xbdce,0x3b85,0x2363,0x2363,0x2363,0x7468,0xe6d0,0xff52,0xf731,0xf710,0xeed0,0xbdaf,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x52a8,0x4a83,0x4aa3,0x4aa5,0x738d,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x6b6d,0x630b,0x4244,0x4262,0x2a21,0x09e0,0x1200,0x2221,0x2241,0x1a41,0x1220,0x8425,0xbd88,0x8c45,0x7c05,0xbd47,0x9ca6,0x2261,0x1a41,0x5323,0x8c45,0x9cc6,0x9cc6,0xa4c6,0xa4c6,0xa4c6,0xa4c6,0xa4c6,0xa4e6,0xa4e6,0xa506,0xad06,0xad06,0xb527,0xbd87,0xa4c6,0xb527,0x83e4,0x7364,0x9425,0x6303,0x1120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x08a0,0x10c0,0x1100,0x1920,0x2160,0x21a0,0x29c1,0x3201,0x3221,0x3a61,0x3a81,0x3a81,0x1a40,0x0a20,0x0a40,0x2a85,0x8450,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x840f,0x7bc8,0x52e3,0x2221,0x0a20,0x0a40,0x2281,0x3b02,0x4322,0x4322,0x4342,0x4342,0x4b43,0x4b63,0x4b63,0x4b63,0x4b63,0x4b63,0x4b63,0x4363,0x4343,0x4343,0x63ab,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x52ea,0x2a43,0x4ae5,0x8c49,0x948a,0x7be5,0x8c40,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7be0,0x8400,0x8420,0x8420,0x7be0,0x6b60,0x42e2,0x4b25,0x6be9,0x6c09,0x742a,0x744a,0x744a,0x746a,0x7c6b,0x7c6b,0x7c6b,0x7c6a,0x744a,0x7c0e,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x52e8,0x5327,0x5b68,0x63a9,0x6be9,0x6c0a,0x744a,0x7c6b,0x7c8b,0x7cab,0x7cab,0x84ab,0x84cb,0x84cb,0x84cb,0x84cb,0x84cb,0x84ab,0x7cab,0x7cab,0x7c8b,0x746a,0x846e,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x4287,0x6327,0x6b68,0x7389,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1222,0x1262,0x1a82,0x4b66,0xc5ef,0xeed2,0xf712,0xf733,0xf753,0xce50,0x43a5,0x1b63,0x1b63,0x1b63,0x53c6,0xde90,0xff52,0xf731,0xf711,0xeef0,0xc5f0,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4268,0x09c1,0x09e1,0x1a03,0x632c,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x632c,0x3205,0x09c0,0x09c0,0x2221,0x73a4,0xa4c6,0xa507,0x8c65,0x4b03,0x73e5,0xc5a8,0xc5a8,0xb567,0xcde8,0xad27,0x2a81,0x0a40,0x0a60,0x2281,0x32a1,0x32a1,0x3ac1,0x5343,0x6384,0x6383,0x6383,0x6b83,0x6b83,0x6b83,0x6383,0x42e2,0x5b43,0xb527,0x9c86,0x8425,0xa4a6,0xa485,0x8c05,0x5282,0x0900,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x01a0,0x01c0,0x01e0,0x0200,0x0a20,0x0a20,0x0a20,0x0a40,0x2a85,0x8450,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bcf,0x4267,0x09c0,0x0a00,0x1220,0x42e2,0x94a6,0xbd88,0xc5c8,0xcde8,0xce08,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xce29,0xc609,0xc5e9,0xb56c,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ab,0x83e8,0x8c69,0x7c08,0x4ac4,0x5321,0x8c20,0x8c40,0x8c40,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7be0,0x7be0,0x8400,0x8420,0x8420,0x7be0,0x7be6,0xa50e,0xbdb0,0xce32,0xbdf1,0xbdf1,0xc611,0xc611,0xc632,0xc632,0xc611,0xbdf1,0x9490,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x7bcc,0x8c6c,0x94ad,0xa50e,0xad6f,0xb5b0,0xbdf1,0xc632,0xce52,0xce72,0xce93,0xd693,0xd693,0xd693,0xd693,0xd693,0xd693,0xce93,0xce92,0xce72,0xce52,0xc611,0xad71,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x3a67,0x1a22,0x1a22,0x2a65,0x6b8d,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1222,0x1262,0x1a82,0x4325,0xb58e,0xe6f2,0xf713,0xf733,0xf753,0xe6d1,0x53c6,0x2363,0x2363,0x2363,0x3b64,0xce4f,0xff52,0xf731,0xf711,0xeef0,0xcdf0,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4268,0x11c1,0x09e1,0x11e2,0x4aa9,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x6b6d,0x4268,0x09c0,0x09e0,0x5b03,0xad27,0xb527,0x9ca6,0xc5a8,0xad47,0xa507,0xce09,0xa507,0xad27,0xa4e6,0x6384,0x1281,0x0a80,0x0a80,0x0a80,0x0a80,0x0a60,0x2281,0x9cc6,0xce08,0xd608,0xd608,0xd608,0xcde8,0xcde8,0xcdc8,0x7c04,0x2a61,0x9ca6,0xad06,0x3a81,0x5b03,0x9c65,0x7364,0x4a42,0x39e1,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x01c0,0x01e0,0x0200,0x0a20,0x0a20,0x0a20,0x0a40,0x2a85,0x8450,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x3a47,0x09c0,0x2a41,0x6b84,0xad27,0xb547,0x8c66,0x8445,0x8465,0x8c85,0x8c86,0x8c86,0x8c86,0x8ca6,0x8ca6,0x8ca6,0x8c86,0x8c86,0x8c86,0x8466,0x8446,0x844b,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x632b,0x52e5,0x4ac5,0x2a42,0x1241,0x2a81,0x73a0,0x8c40,0x8c40,0x8400,0x83e0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8420,0x8403,0x8428,0xad6f,0x740a,0x4b87,0x53a7,0x53a7,0x53c8,0x53c8,0x53c8,0x53a8,0x73cd,0x8c91,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x738e,0x42a8,0x3aa5,0x3ac5,0x4306,0x4346,0x4b67,0x53a7,0x53c7,0x53e8,0x53e8,0x53e8,0x5c08,0x5c08,0x5c08,0x5c08,0x5c08,0x5c08,0x5408,0x5408,0x53e8,0x53c7,0x53c7,0x740d,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x3a67,0x1202,0x1222,0x2a65,0x6b6d,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x2224,0x1222,0x1262,0x1a82,0x3304,0xa54d,0xe6f2,0xef13,0xf733,0xff53,0xef12,0x6c28,0x6427,0x8cea,0x8cea,0x6c28,0xbdee,0xf732,0xff32,0xf711,0xeef0,0xcdf0,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4268,0x11c1,0x09e1,0x09e1,0x4288,0x73ae,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x4a89,0x09c1,0x09e0,0x5303,0xb527,0xad27,0x73e5,0xbd88,0xce08,0xb568,0xce29,0x7c05,0x8465,0x8465,0x5b83,0x2ac1,0x0a80,0x0a80,0x0a80,0x0a80,0x0a80,0x1280,0x9486,0xe669,0xee89,0xeea9,0xee89,0xe689,0xe669,0xe648,0xb526,0x2a81,0x73a4,0xb526,0x6b63,0x3a41,0x8c05,0x9405,0x7b64,0x62c3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2940,0x31a1,0x41e1,0x4a22,0x5282,0x5ac3,0x6303,0x6b43,0x7384,0x7ba4,0x7be4,0x8404,0x8404,0x8425,0x8425,0x8447,0x9490,0x94b2,0x9492,0x8c71,0x8c71,0x8c51,0x8430,0x7bcf,0x3a67,0x42a2,0x8425,0xa4e7,0x8c45,0x42e2,0x1aa1,0x12a1,0x1ac1,0x1ae1,0x1ae1,0x1ae1,0x1b01,0x1b01,0x1b02,0x1b02,0x1b02,0x1b02,0x1b02,0x1ae2,0x1ae2,0x536a,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5aeb,0x1a02,0x1201,0x1221,0x1241,0x1241,0x6380,0x8c40,0x8c40,0x8420,0x8400,0x7be0,0x7ba0,0x7380,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8420,0x7be2,0x6342,0x4b04,0x94cd,0x9d2e,0xa54e,0xa54f,0xa54f,0xa54e,0x8c4f,0x9491,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x73ae,0x52e9,0x3aa5,0x42e6,0x4b26,0x5367,0x5387,0x5bc7,0x5be8,0x6408,0x6408,0x6428,0x6428,0x6428,0x6428,0x6428,0x6428,0x6448,0x6428,0x6428,0x6408,0x6408,0x5bc8,0x740e,0x8c71,0x8c51,0x8430,0x7bef,0x7bef,0x7bcf,0x73ae,0x6b6a,0x6b89,0x6ba9,0x73ca,0x73ae,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b4c,0x6349,0x5307,0x1a62,0x1a82,0x22c3,0x846a,0xd671,0xe6f2,0xce50,0xce50,0xce30,0x9d0b,0xdeb1,0xef12,0xe6f1,0xded1,0xc60e,0xce2f,0xce2e,0xd64e,0xe6b0,0xbdaf,0x8c50,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4288,0x11e2,0x09e1,0x09e1,0x3a66,0x738e,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x52ca,0x19e3,0x2a21,0x7bc5,0xb547,0xbd68,0xc5c8,0xce08,0xad47,0x8c66,0xde49,0xde69,0xe6a9,0xde69,0xd669,0x9ce6,0x32e2,0x0aa1,0x0aa1,0x0aa1,0x0aa0,0x12a0,0x6384,0xde48,0xeea9,0xeea9,0xeea9,0xee89,0xee89,0xe668,0xcde7,0x5322,0x3aa2,0xace6,0x8c45,0x7ba4,0x9445,0x8bc4,0x7343,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0840,0x39a1,0x4201,0x5262,0x5ac3,0x6b03,0x7364,0x83c4,0x8c05,0x9445,0x9c85,0xa4c6,0xa4e6,0xad06,0xad06,0xad26,0xad08,0x9cd0,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bcf,0x6b68,0x9446,0x8c26,0x5303,0x2261,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x12e1,0x1302,0x1302,0x12e2,0x1ae2,0x1ae2,0x1ae2,0x22e2,0x5b8a,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5b0b,0x1a03,0x1201,0x1221,0x1241,0x1262,0x3ac1,0x7be0,0x8c40,0x8420,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8400,0x7bc2,0x94ab,0xc5f1,0xd652,0xd693,0xde93,0xd673,0xa4f0,0x9491,0x8c71,0x8c51,0x8410,0x8410,0x7bef,0x7bef,0x73ce,0x840d,0x94ae,0xa50f,0xad70,0xbdd1,0xc612,0xce53,0xce73,0xd694,0xd6b4,0xded4,0xded4,0xdef4,0xdef4,0xdef4,0xded4,0xded4,0xd6d4,0xd6b4,0xce73,0xb592,0x8c71,0x8c71,0x8c51,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ce,0x73cb,0x7bea,0x840b,0x842b,0x7bce,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x8c4c,0x842a,0x2283,0x1a82,0x1ac3,0x3304,0xa54d,0xe6d2,0xdeb1,0xdeb1,0xdeb1,0xe6d1,0xf753,0xb5ae,0x94eb,0xded1,0xd690,0x6407,0x4385,0x63e7,0xd66f,0xad6e,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4a89,0x11e2,0x09e1,0x09e1,0x2a25,0x634c,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x632c,0x3a45,0x73a4,0xace7,0x8c46,0x5323,0x6363,0x6384,0x4302,0x63a4,0xd649,0xf6ea,0xce08,0x7c45,0xc5e9,0xde89,0x7c25,0x12a1,0x12a1,0x12a1,0x12a0,0x12a0,0x32e1,0xc5c8,0xf6c9,0xf6c9,0xeec9,0xeea9,0xee89,0xe668,0xd608,0x8c45,0x2241,0x8c25,0xa4c6,0x9c65,0x9425,0x5262,0x5282,0x62c3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x08c0,0x0900,0x1140,0x1160,0x1980,0x19c0,0x19e0,0x2200,0x2220,0x2241,0x2a61,0x2a61,0x2a81,0x2a81,0x3aa5,0x8c70,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x840f,0x7bc8,0x6344,0x2a41,0x0a20,0x0a40,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e1,0x12e1,0x12e1,0x12e2,0x1302,0x1302,0x12e2,0x1ae2,0x2302,0x63e4,0x9d07,0xa52c,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x5b0b,0x1a03,0x1201,0x1221,0x1241,0x1262,0x2282,0x73c3,0x8420,0x8c20,0x8400,0x7be0,0x7bc0,0x73a0,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7be0,0x8400,0x8400,0x8420,0x8401,0x8404,0xad0e,0xc5f1,0xce12,0xce12,0xad30,0x8c71,0x8c51,0x8430,0x8410,0x8410,0x7bef,0x7bef,0x7bef,0x7bcf,0x634b,0x5307,0x5347,0x5b88,0x63c8,0x63e9,0x6c09,0x6c29,0x6c29,0x6c49,0x6c4a,0x7449,0x744a,0x7449,0x7449,0x6c49,0x6c29,0x6c29,0x7c4d,0x9491,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6d,0x3266,0x2243,0x2243,0x3285,0x6b6d,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x842b,0x8c6b,0x2a63,0x1a82,0x1ac3,0x22e3,0x8ccb,0xdeb2,0xad6d,0x94ec,0x94ec,0xa54c,0xdeb1,0xe6f2,0xd670,0xef12,0xce2f,0x4ba6,0x1b23,0x4365,0xce2e,0xbdaf,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4aa9,0x11e2,0x09e1,0x09e1,0x1a02,0x5b0b,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x7387,0x9c86,0x83e5,0x3282,0x1261,0x1281,0x1281,0x5343,0xb587,0xde89,0xd629,0xe689,0xce08,0xe689,0xe689,0x7c25,0x12c1,0x12a1,0x12a0,0x12a1,0x12a0,0x22c1,0x9cc6,0xeec9,0xf6c9,0xeec9,0xeea9,0xee89,0xe648,0xde28,0xace6,0x3261,0x4ac2,0x7bc4,0x7ba4,0x8be5,0x6b23,0x5aa3,0x5aa3,0x18a0,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x01c0,0x01e0,0x09e0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a40,0x2a85,0x8450,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bef,0x4aa7,0x11e0,0x09e0,0x0a20,0x0a40,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e2,0x12e2,0x12e2,0x12e2,0x1302,0x1302,0x12e2,0x1ae2,0x7425,0xce29,0xd64a,0xb56c,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x42a5,0x4ac4,0x4ae4,0x5305,0x5325,0x73e8,0x9ccb,0x7bc3,0x8400,0x8400,0x83e0,0x7bc0,0x73a0,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7380,0x7380,0x7380,0x73a0,0x73a0,0x7bc0,0x7bc0,0x7bc0,0x7be0,0x7be0,0x73a0,0x6b47,0x73ea,0x740b,0x7c2b,0x740b,0x7c0f,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bcf,0x5b2b,0x3ac5,0x4b46,0x5387,0x53a7,0x5bc8,0x5be8,0x5c08,0x5c08,0x6408,0x6428,0x6428,0x6428,0x6428,0x6408,0x5be8,0x5baa,0x8450,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bce,0x6b8c,0x42a6,0x1a22,0x1242,0x2a85,0x6b6d,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x7beb,0x948c,0x3284,0x1a82,0x1ac3,0x22e3,0x7c49,0xd692,0x94eb,0x2344,0x2343,0x2b64,0x6c28,0xad6d,0xc60f,0xad8d,0x6c28,0x2344,0x1b23,0x3b64,0xb5ad,0xc5f0,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x4aa9,0x11e2,0x09e1,0x0a01,0x0a01,0x52ea,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x7b89,0x7364,0x2a41,0x0a21,0x0a41,0x1261,0x4b23,0xb567,0xd649,0x94c6,0x5363,0x8c86,0xd629,0xe6a9,0x94a6,0x3302,0x12a1,0x12a1,0x12a1,0x12a0,0x12a0,0x12a1,0x63a4,0xde89,0xeec9,0xe6a9,0xe689,0xe669,0xde48,0xd608,0xb547,0x5302,0x01e0,0x01a0,0x19a0,0x4242,0x5ac3,0x5aa2,0x4a22,0x0860,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a40,0x2a85,0x8430,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x3a67,0x09c0,0x09e0,0x0a00,0x0a40,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12e1,0x12e2,0x12e2,0x12e2,0x1302,0x1302,0x12e2,0x2b02,0xa507,0xeeea,0xa507,0x7c2a,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bcc,0x8c29,0x948a,0x9cca,0xa50b,0xad2c,0xad4c,0x8c6a,0x5303,0x7bc0,0x8400,0x83e0,0x7bc0,0x73a0,0x7380,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b60,0x6b60,0x6b60,0x6b60,0x6b60,0x7360,0x6b60,0x6b60,0x6b60,0x6b40,0x6300,0x4a61,0x8c4c,0xa52f,0xad4f,0xad70,0xad70,0x9cef,0x8c50,0x8c51,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bef,0x7bef,0x7bef,0x842e,0xa52f,0xb590,0xbdd1,0xc612,0xc632,0xce73,0xce73,0xd693,0xd693,0xd6b3,0xd6b3,0xd693,0xd693,0xc612,0x9cd1,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x6b6d,0x7bec,0x8c4c,0x5b48,0x2a84,0x2a85,0x6b8d,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x73aa,0x9cad,0x42e5,0x2ac4,0x6be9,0x744a,0x8ccc,0xdeb2,0xbdef,0x84cb,0x7caa,0x3384,0x2363,0x3364,0x3b85,0x3364,0x2b64,0x7448,0x84aa,0x84aa,0xb5ad,0xc5f0,0x8c50,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x52aa,0x19e2,0x09e1,0x0a01,0x1201,0x42a8,0x73ae,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x5b0a,0x2202,0x0a01,0x0a21,0x0a41,0x1a81,0x7c05,0xd629,0x9ce6,0x2ae1,0x12a1,0x22c1,0x8ca6,0xde69,0x8445,0x12c1,0x12a1,0x12a1,0x12a1,0x1281,0x1281,0x1281,0x22a1,0x5b43,0x6363,0x6363,0x8c45,0xd628,0x9445,0x5b02,0x4ac2,0x2221,0x01e0,0x01a0,0x0180,0x0160,0x1140,0x1120,0x08e0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x08a0,0x08e0,0x1100,0x1140,0x1960,0x19a0,0x21c0,0x21e0,0x2200,0x2a21,0x2a41,0x2a61,0x2a61,0x2a81,0x2a81,0x3aa5,0x8430,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x4267,0x09c0,0x09e0,0x0a20,0x0a41,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12c1,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x2302,0x8c86,0xde8a,0xde69,0xc5ac,0x9cd2,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x4285,0x42a4,0x42c4,0x4ae4,0x4b05,0x4b05,0x2aa3,0x1a82,0x5b02,0x7bc0,0x7be0,0x7bc0,0x7bc0,0x7ba0,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x5ae0,0x52a0,0x4263,0x5307,0x6368,0x6389,0x6ba9,0x6bc9,0x63a9,0x5b6a,0x7c0f,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x840f,0x7bcd,0x5b68,0x5388,0x5ba8,0x5bc9,0x63e9,0x6409,0x6409,0x6409,0x6429,0x6429,0x6409,0x6c0b,0x8c90,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x6b6d,0x3a87,0x3264,0x73aa,0x94ad,0x846c,0x7c0b,0x73ce,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x632c,0x6b69,0x9cad,0x5b47,0x4305,0xbdcf,0xd672,0xdeb2,0xef13,0xef33,0xef33,0xe6f3,0x6c28,0x2363,0x2343,0x2363,0x2363,0x4385,0xbdee,0xef12,0xeef1,0xe6d1,0xce10,0x8c70,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x52ca,0x19e2,0x09e1,0x1a21,0x5b44,0x73a7,0x7bce,0x7bef,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x6b6c,0x6345,0x4ac2,0x1221,0x4ae3,0x8425,0x9cc6,0xd629,0xb567,0x5b63,0x1aa1,0x6bc4,0xad27,0xe689,0xc5c8,0x94c6,0x4b22,0x12a1,0x0a81,0x0a81,0x0a81,0x0a81,0x0a81,0x0a81,0x0a81,0x0a60,0x5b43,0xc5a8,0x9ca5,0x2a61,0x0a00,0x09e0,0x01c0,0x01a0,0x0160,0x1160,0x31c1,0x31a1,0x2940,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0840,0x39a1,0x4a22,0x5262,0x62c3,0x6b23,0x7384,0x83c4,0x8c25,0x9465,0x9ca5,0xa4c6,0xa4e6,0xad06,0xad26,0xad26,0xad28,0x9cd0,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x8430,0x7bcf,0x3a68,0x09c0,0x09e0,0x0a20,0x0a41,0x0a61,0x1281,0x12a1,0x12c1,0x12c1,0x12c2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x3302,0x7405,0x9cc7,0x94ab,0x9492,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x2224,0x1201,0x1242,0x1262,0x1282,0x12a2,0x22c3,0x5b87,0x9ccc,0x8407,0x7bc0,0x7be0,0x7bc0,0x7ba0,0x7380,0x7360,0x6b60,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5aa0,0x4220,0x52a6,0x8c6d,0x9cce,0xa50f,0xad50,0xb590,0xb5b1,0xad70,0x9cee,0x94ae,0x8c50,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x6b8d,0x32a6,0x22c3,0x22e4,0x22e4,0x2304,0x2304,0x2324,0x2324,0x2324,0x3b47,0x7c0f,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x738e,0x4288,0x1a22,0x1222,0x2a63,0x73aa,0xad4f,0xb570,0x8c2f,0x8430,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x634c,0x5b08,0x9ccd,0x6ba9,0x3ae5,0xbdaf,0xdeb2,0xeef3,0xef13,0xf734,0xf754,0xf733,0x8ceb,0x2b64,0x2343,0x2343,0x2343,0x3b85,0xb58d,0xf732,0xf732,0xeef1,0xce10,0x8c70,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x52ca,0x19e3,0x09e1,0x2a42,0x8406,0xb528,0x944d,0x7bef,0x7bcf,0x7bcf,0x73ae,0x73ae,0x738e,0x73ad,0x8c07,0x7bc4,0x2a41,0x6364,0xbd68,0xd5e8,0xde49,0xde49,0x9ca6,0x2aa2,0x8c86,0xde69,0xeea9,0xee89,0xe669,0x8c65,0x22a1,0x0a80,0x0a80,0x0a80,0x0a60,0x0a60,0x0a60,0x0a60,0x0a60,0x2a81,0xa4e6,0xbd67,0x42c2,0x0a00,0x01e0,0x01c0,0x01a0,0x0160,0x1980,0x5a83,0x62e3,0x5242,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2940,0x31a1,0x41e1,0x4a42,0x5282,0x5ac2,0x6303,0x6b43,0x7383,0x7ba4,0x7bc4,0x83e4,0x8404,0x8424,0x8c24,0x8c26,0x9490,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bcf,0x3a68,0x09c0,0x09e0,0x0a21,0x1241,0x2281,0x2aa2,0x22c1,0x12c1,0x12c1,0x12c2,0x12c2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x1ae2,0x1ae2,0x4b49,0x8c91,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x634c,0x2224,0x1201,0x1a42,0x2283,0x2aa3,0x3ae4,0x846a,0xb58e,0xa50d,0x6387,0x5b42,0x7bc0,0x7bc0,0x7ba0,0x7380,0x7380,0x7360,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x52a0,0x4220,0x39e3,0x7bcb,0x9cce,0xad2f,0xb570,0xbdd1,0xc612,0xce33,0xbdb1,0x94ad,0x8c6c,0x73cb,0x73ce,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x73ae,0x638c,0x638c,0x63ac,0x63ac,0x63ac,0x638c,0x638c,0x5b8b,0x73ee,0x8c71,0x8c71,0x8c51,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x4ac9,0x2243,0x1222,0x1a42,0x1a62,0x5b68,0xad4f,0xbdb0,0x8c4f,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bcf,0x634c,0x4ac7,0x9ccd,0x7c0a,0x32c4,0xb56e,0xde92,0xe6d3,0xef13,0xf734,0xff54,0xf754,0xa56d,0x2b64,0x2343,0x2343,0x2343,0x2b44,0x950b,0xf732,0xf732,0xeef1,0xce10,0x9470,0x8c51,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x52ca,0x1a03,0x0a01,0x1a21,0x73a5,0xbd68,0x946c,0x7bef,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738d,0x738a,0x7388,0x4287,0x52e7,0x9449,0xacea,0xad0a,0xb52a,0x9469,0x5309,0x6b89,0xad0a,0xbd4a,0xbd4a,0xbd4b,0x946a,0x4ae8,0x4ac8,0x4ac8,0x4ac8,0x4ac9,0x4ac9,0x4ac9,0x3aa7,0x2263,0x0a41,0x8405,0xc587,0x6b63,0x1200,0x01e0,0x01c0,0x0180,0x0160,0x0940,0x4222,0x62e3,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x09a0,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x2a64,0x8430,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8430,0x7bef,0x4288,0x09c0,0x09e0,0x3262,0x73c4,0xa527,0xb587,0x9ce6,0x4b43,0x12c1,0x12c2,0x12c2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x1ae2,0x1ae2,0x1ae2,0x1ac2,0x4b49,0x8c91,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x6b6d,0x2224,0x3284,0x73c8,0x9ceb,0xa50c,0xad6d,0xbdcf,0x94ab,0x4325,0x1aa2,0x2282,0x52c0,0x7380,0x73a0,0x73a0,0x73a0,0x7380,0x7360,0x6b40,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x5280,0x4200,0x31c0,0x52c7,0x842c,0x948d,0x9cce,0xad2f,0xb570,0xbdb1,0xbdd2,0x9d0e,0x3304,0x22e4,0x22c3,0x32c6,0x6bad,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x7bce,0x840d,0x8c4c,0x6baa,0x3aa5,0x1a42,0x1a63,0x5367,0xb56f,0xc5d1,0x946f,0x8430,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x634c,0x42a7,0x9ccd,0x844b,0x32c4,0xa50d,0xde92,0xe6d3,0xef13,0xf754,0xff54,0xf754,0xbdef,0x2b64,0x2343,0x2343,0x2343,0x2343,0x7c69,0xef12,0xf732,0xeef1,0xce10,0x9490,0x8c51,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x5aeb,0x1a03,0x1201,0x1201,0x5b44,0xb548,0xa4aa,0x840f,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x7bef,0x840f,0x840f,0x840f,0x840f,0x8410,0x8410,0x8430,0x8c30,0x8c30,0x8c30,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7c0f,0x7bef,0x73ae,0x42a7,0x73a4,0xbd67,0x9ca5,0x52e2,0x2200,0x01c0,0x0180,0x0160,0x0140,0x31a1,0x5aa3,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x2a64,0x7c0f,0x94b2,0x9492,0x9492,0x8c71,0x8c51,0x8c51,0x7bef,0x4288,0x09e0,0x2221,0x8425,0xc5a8,0xb567,0xcdc8,0xe689,0xb588,0x94c6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94e6,0x94c6,0x94c6,0x8ca6,0x8c8a,0x94b1,0x94b2,0x9492,0x8c71,0x8c51,0x8430,0x8410,0x73ad,0x6368,0x8c4a,0xad2d,0xa4ec,0xbd8e,0xd650,0x8c8b,0x2ae4,0x1ac3,0x1ac3,0x1aa2,0x2262,0x4ae1,0x6b40,0x7380,0x73a0,0x7380,0x7360,0x6b40,0x6b40,0x6b40,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x52a0,0x4a60,0x39c0,0x39c2,0x3a44,0x4285,0x4ac6,0x5306,0x5b27,0x6368,0x63a8,0x6bc9,0x6be9,0x6be9,0x5ba8,0x5ba8,0x5b88,0x5367,0x5b68,0x73cd,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x7bce,0x840d,0x840b,0x7c0b,0x9cce,0x842b,0x2a83,0x1a83,0x5347,0xb56f,0xce12,0x9490,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x634c,0x3a86,0x9cad,0x8c8c,0x32c4,0x94ac,0xde92,0xeef3,0xf734,0xf754,0xff74,0xff74,0xce71,0x3b64,0x2343,0x2343,0x2343,0x2343,0x6c28,0xe6b1,0xf732,0xeef1,0xd630,0x9490,0x8430,0x8410,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5aeb,0x1a03,0x1201,0x1221,0x4b04,0xad08,0xb529,0x8c2f,0x7bef,0x7bef,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x73ae,0x7bcf,0x7bcf,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bce,0xa4c9,0xbd47,0xad06,0xace6,0x7bc4,0x52c2,0x4a82,0x4241,0x3a01,0x39e1,0x5262,0x5262,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a20,0x1a63,0x6bad,0x94b2,0x94b2,0x9492,0x8c71,0x8c51,0x8c51,0x7bef,0x4287,0x09e0,0x4ae2,0xad07,0xbd88,0x73c4,0xad07,0xe689,0xde69,0xd629,0xd649,0xd649,0xd649,0xd669,0xd649,0xd649,0xd649,0xd649,0xd649,0xd629,0xce09,0xbdab,0x9cd1,0x9cd3,0x9492,0x8c71,0x8c51,0x8430,0x8430,0x7bed,0x946a,0xad2c,0x9ccb,0x6387,0xa50c,0xd650,0x7c29,0x22e3,0x1ae3,0x2b04,0x4325,0x4305,0x2aa3,0x3262,0x52c0,0x6b40,0x7360,0x7360,0x6b60,0x6b40,0x6b40,0x6b20,0x6b20,0x6b20,0x6320,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x62e0,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x5280,0x4220,0x3160,0x39c4,0x73ab,0x840c,0x8c4c,0x948d,0x9cce,0xa52f,0xad70,0xb5b1,0xbdf2,0xc612,0xc633,0xce33,0xc633,0xc612,0xbdf2,0xb5b1,0xad30,0x8c6f,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x7bef,0x7bcf,0x73ae,0x738c,0x946d,0x73aa,0x5b27,0xa4ee,0x9ccd,0x42e5,0x1aa3,0x4346,0xb590,0xd652,0xad31,0x8c51,0x8430,0x8410,0x8410,0x7bef,0x7bcf,0x632c,0x3265,0x948c,0x9ccd,0x3b05,0x7c2a,0xd672,0xe6b3,0xe6f3,0xef13,0xef34,0xf734,0xd691,0x4ba6,0x2343,0x3385,0x53c7,0x4ba6,0x5be7,0xce2f,0xeef2,0xe6d1,0xce10,0x9490,0x8c51,0x8430,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5aeb,0x1a03,0x1201,0x1221,0x3aa3,0x9cc7,0xc5a9,0x8c4e,0x8410,0x7bef,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x9c6b,0x9445,0x5b03,0x9445,0xacc6,0x9445,0x8be4,0x83a4,0x7343,0x62e3,0x5aa2,0x5242,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a40,0x0a41,0x3ac7,0x8450,0x94b2,0x9492,0x9492,0x8c71,0x8430,0x52ea,0x11e1,0x09e0,0x3aa2,0xa4c6,0xce08,0xcde8,0xd649,0xbda8,0x5b84,0x3b02,0x3b02,0x3b02,0x3b02,0x3b02,0x3b22,0x3b22,0x3b03,0x3b03,0x3b03,0x3b03,0x3ae3,0x3ae5,0x7c0f,0x9cd3,0x94b2,0x8c71,0x8c51,0x8c51,0x8430,0x530a,0x42a5,0x948a,0xbd8d,0xbd8e,0xce0f,0xad4d,0x4b66,0x2303,0x5bc7,0xa52d,0xbdcf,0xb5af,0x8cab,0x3ae4,0x2a42,0x4240,0x5ac0,0x6b40,0x6b60,0x6b40,0x6b40,0x6b40,0x6b20,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x5ae0,0x5ae0,0x5ae0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x52a0,0x5280,0x4a40,0x39c0,0x31a0,0x1961,0x3204,0x4265,0x42a6,0x6b89,0x844c,0x948d,0x9cce,0xa50e,0xa54f,0xad70,0xad90,0x9d0e,0x740a,0x6c0a,0x6bea,0x6be9,0x63c9,0x6388,0x5348,0x636c,0x7bef,0x8410,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bcf,0x7bcf,0x73ae,0x5b0b,0x4aa7,0x842c,0x9cce,0xa50f,0xad2f,0x7c0b,0x22a3,0x1ac3,0x3b05,0xb590,0xde93,0xce12,0x9cb1,0x8c50,0x8430,0x8410,0x7bef,0x7bee,0x634a,0x2a64,0x8c6b,0xa52e,0x5346,0x4b46,0x846b,0x8c8b,0x8cac,0x8ccc,0x94cc,0x94ec,0x84aa,0x4385,0x5be7,0xb5ce,0xd691,0xce70,0xad6d,0x8caa,0x8cab,0x8c8a,0x7c4a,0x842e,0x8c51,0x8430,0x8410,0x7bef,0x7bcf,0x73ae,0x4288,0x1202,0x1201,0x1221,0x2262,0x8426,0xb548,0x8c2c,0x8410,0x7bef,0x7bcf,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x8c0b,0xa4a6,0x8c05,0x9c65,0xa485,0x5ac3,0x3a01,0x31c1,0x29a0,0x2160,0x2961,0x4202,0x1080,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00a0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x01a0,0x01c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a40,0x0a40,0x0a40,0x1242,0x5308,0x8c4e,0x9cd1,0x9cb1,0x8c4f,0x738a,0x5b04,0x5b03,0x5b23,0x6343,0x7be4,0xa4e6,0xb547,0xa4e6,0x8445,0x7c04,0x7c24,0x7c24,0x7c25,0x7c25,0x7c45,0x7c45,0x7c45,0x7c45,0x7c25,0x7c25,0x7c25,0x7425,0x7406,0x7c0a,0x94b0,0x94b2,0x9492,0x8c71,0x8c51,0x7bed,0x5b27,0x5b26,0x73a7,0x948a,0xa50c,0x9ccb,0x7c49,0x7428,0x7c69,0xbdef,0xde91,0xb58e,0xc5f0,0xd631,0x94ab,0x63a8,0x6367,0x6346,0x6305,0x5ae2,0x6300,0x6b20,0x6b20,0x6320,0x6320,0x6300,0x6300,0x6300,0x6300,0x6300,0x62e0,0x5ae0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5ac0,0x5aa0,0x52a0,0x52a0,0x5280,0x4a40,0x39c0,0x2960,0x1900,0x11a1,0x11c1,0x11e2,0x1202,0x1a23,0x842c,0xb590,0xc5f2,0xce33,0xd673,0xdeb4,0xe6f5,0xe6f5,0xce73,0x8ced,0x4ba7,0x2324,0x2304,0x22e4,0x22e3,0x1ac3,0x22a4,0x532a,0x7bef,0x8410,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x632c,0x2a25,0x1a02,0x3a85,0x5b28,0x6b89,0x5347,0x32c4,0x1ac3,0x1ae3,0x2b04,0xad8f,0xe6b4,0xdeb3,0xce12,0xa4f0,0x9470,0x8c50,0x8c2e,0xa4ce,0x840b,0x2a83,0x7c2a,0xbdb0,0xad6e,0xad8e,0xb5af,0xbdef,0xc610,0xc630,0xc630,0xc630,0xc650,0xc650,0xdeb1,0xf753,0xd691,0xce30,0xef13,0xc60f,0x8ceb,0x8cca,0x84aa,0x8c6b,0x844f,0x8430,0x8410,0x7bef,0x7bcf,0x5b0b,0x3244,0x2a42,0x2a62,0x2a83,0x32a2,0x42e3,0x5b44,0x5306,0x6b6c,0x7bef,0x7bef,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b4d,0x52a8,0x6b24,0x83e5,0x8be5,0x6323,0x29e1,0x1160,0x0140,0x0100,0x00e0,0x00c0,0x2120,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x00a0,0x00c0,0x0100,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a41,0x1a61,0x6383,0xa506,0xbd88,0xb548,0xad07,0xace7,0xa4c6,0xa4a6,0xa4c6,0xace6,0xb527,0xbd67,0xc5a8,0xcde8,0xce08,0xd628,0xd649,0xd649,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xde69,0xd649,0xd64a,0xce2b,0xc5eb,0xbd8c,0x9cae,0x8c6f,0x8c4e,0x8c4c,0x9cab,0x9cca,0xa4eb,0xad0b,0xb54d,0xbdae,0xc5ce,0xc60f,0xce30,0xd670,0xe6d2,0xd650,0x7c6a,0xb58e,0xde92,0xc5f0,0xb58f,0xad6e,0xa50e,0x9ccd,0x840a,0x7368,0x5281,0x52a0,0x5ac0,0x6300,0x6300,0x6300,0x6300,0x6300,0x5ae0,0x5ac0,0x5ac0,0x5aa0,0x5aa0,0x5aa0,0x5aa0,0x5aa0,0x52a0,0x5280,0x4a40,0x4220,0x31a0,0x2961,0x31c3,0x21a2,0x11c2,0x11e2,0x11e2,0x1202,0x1222,0x2263,0x94ad,0xc5f2,0xce53,0xd694,0xded5,0xe6f5,0xef36,0xef36,0xded5,0xdeb5,0xbdf2,0x6409,0x2324,0x2304,0x22e4,0x22e3,0x1ac3,0x22a4,0x4ae9,0x6b8d,0x73ce,0x7bef,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x73ae,0x6b6d,0x5b0b,0x2a25,0x1202,0x1222,0x1222,0x1a62,0x1a83,0x1aa3,0x1ac3,0x1ae3,0x1ae3,0x2304,0xad6f,0xe6d4,0xe6d4,0xdeb3,0xd673,0xce32,0xc5f1,0xc5d1,0xbdb0,0x94ac,0x2aa3,0x5b47,0x94ac,0x9ced,0xa50d,0xad4e,0xad6e,0xb58f,0xb5af,0xb5af,0xb5af,0xb5cf,0xbdcf,0xd671,0xf733,0xb5ce,0x8cab,0xe6f2,0xef12,0xd670,0xce2f,0xce2f,0xd670,0x9d0c,0x638c,0x6b8d,0x636c,0x4ac9,0x2a64,0x8408,0x9469,0x94a9,0x9cc9,0xa4e9,0xa508,0xa508,0xa507,0xa4e7,0x9c8b,0x840e,0x7bcf,0x7bcf,0x73ae,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x738e,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x738a,0x7366,0x6b45,0x7364,0x7364,0x7344,0x6b43,0x5ac3,0x31c2,0x0921,0x00e0,0x00c0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x0180,0x09a0,0x09c0,0x0a00,0x0a20,0x0a20,0x1241,0x3ac2,0x9485,0xc5a7,0xad26,0x6b84,0x5302,0x4ae2,0x4ac2,0x4ac2,0x4ac2,0x4ac2,0x4ae2,0x4b03,0x5323,0x5343,0x5b63,0x5b63,0x5b83,0x63a4,0x63a4,0x63a4,0x63a4,0x63a4,0x63c4,0x63c4,0x63c4,0x63c4,0x63c4,0x63a4,0x63a4,0x63a4,0x5b84,0x5b84,0x5364,0x5344,0x5324,0x4b04,0x4ae4,0x4ae4,0x4ae4,0x4ae4,0x4b05,0x5325,0x5366,0x5b86,0x5ba6,0x5ba7,0x6c08,0xc5ef,0xe6d2,0xde91,0xde92,0xb58f,0x63c8,0x5386,0x5366,0x4b26,0x4b06,0x6b88,0x73c9,0x5ae6,0x4244,0x4221,0x4a80,0x4200,0x4a40,0x5280,0x5280,0x5280,0x5280,0x5280,0x5280,0x5280,0x4a40,0x4220,0x39e0,0x39c0,0x39e0,0x2980,0x2180,0x19a1,0x19a2,0x2a03,0x11e2,0x11e2,0x1202,0x1222,0x1242,0x1a62,0x2283,0x73ea,0x94ad,0x9cee,0x9d2f,0xa54f,0xad70,0xad90,0xad90,0x8ccd,0x8cad,0xd694,0xce73,0x7c8c,0x2b25,0x2304,0x22e4,0x22e4,0x1ac3,0x1aa3,0x2284,0x3ac7,0x4ae9,0x4ac9,0x4ac9,0x4aa9,0x4aa9,0x4aa9,0x4aa9,0x4ac9,0x52ca,0x52ea,0x5aeb,0x5aeb,0x42a8,0x3246,0x1a03,0x1222,0x1222,0x1242,0x1a62,0x1a83,0x1aa3,0x1ac3,0x1ae3,0x22e3,0x2304,0x2324,0x742a,0x9d0d,0x9d0d,0x9d0d,0xc631,0xc611,0x8c8c,0x8c6b,0x844b,0x6bc9,0x22a3,0x1aa3,0x1ac3,0x1ae3,0x2303,0x3345,0x4386,0x4386,0x4386,0x4386,0x4386,0x4386,0x3b65,0x6408,0xd671,0xef13,0xe6f2,0xef13,0xbdce,0x6407,0x5bc7,0x6be8,0xc5ee,0xbdad,0x4b25,0x32c4,0x2282,0x1242,0x2a62,0xa4ea,0xb54b,0x8c48,0x8c48,0x9467,0x9487,0x9487,0x9486,0x9466,0x8c25,0x6b68,0x632b,0x632b,0x5b0b,0x5aeb,0x5aea,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aca,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x5aca,0x52a9,0x52a7,0x62e4,0x6b23,0x6b23,0x6b23,0x6b03,0x6303,0x62e3,0x6b03,0x6303,0x4201,0x1100,0x00a0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00c0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x0a00,0x2261,0x6ba4,0xb547,0xc5c7,0x8c65,0x3aa2,0x1261,0x0a40,0x0a40,0x0a20,0x0a20,0x0a21,0x0a41,0x0a41,0x1261,0x1261,0x1281,0x1281,0x12a1,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1a82,0x1282,0x1262,0x1262,0x1262,0x1262,0x1262,0x1282,0x1aa2,0x1ac3,0x1ae3,0x1ae3,0x1b03,0x2303,0x4b86,0x94cb,0xa52d,0x846a,0x4345,0x2303,0x1ae3,0x1ae3,0x1ac3,0x1aa3,0x1a83,0x2283,0x2263,0x1a42,0x1a22,0x1a02,0x19c1,0x31e0,0x3a20,0x4240,0x3a20,0x29a0,0x2960,0x31c0,0x4220,0x3a00,0x31c0,0x2180,0x1140,0x11a1,0x11c1,0x11e2,0x11e2,0x11e2,0x1202,0x1202,0x1222,0x1242,0x1a62,0x1a63,0x1a83,0x1aa3,0x22c4,0x2b04,0x2b05,0x3325,0x3345,0x3345,0x3365,0x3365,0x2b65,0x2b65,0x6c2a,0xce53,0xd6b5,0x9d4f,0x848c,0x7c6c,0x7c6c,0x744b,0x742b,0x73ea,0x6bca,0x6baa,0x6389,0x6369,0x6369,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b49,0x5b48,0x5b48,0x5b48,0x6369,0x6389,0x63a9,0x6bca,0x6bea,0x5ba8,0x2b04,0x22e3,0x2304,0x2324,0x2324,0x2b44,0x2b44,0x2b24,0x3b45,0xb5b0,0xc611,0x4325,0x22e3,0x22c3,0x22c3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x3345,0x94ec,0xc630,0xc630,0xce51,0xce50,0xce50,0xce71,0x9d4d,0x3b65,0x53c6,0x94eb,0xad6d,0x8ccb,0x6c07,0xb5ae,0xc60f,0xc60e,0xde90,0xde70,0xb58d,0xad4c,0x6386,0x1a82,0x2282,0x94aa,0xb56b,0x5325,0x22a2,0x22a2,0x22a2,0x22c2,0x22a2,0x22a2,0x2282,0x2262,0x32a3,0x5324,0x5b24,0x5304,0x52e4,0x52c4,0x52c3,0x52c3,0x52c3,0x4ac3,0x4ac3,0x4ac3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4aa3,0x4a83,0x4a82,0x4a82,0x4a82,0x4a82,0x4a62,0x4242,0x29c1,0x1160,0x2160,0x4a22,0x5a82,0x4202,0x2120,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0080,0x00a0,0x00e0,0x0100,0x0120,0x0140,0x0180,0x01a0,0x09c0,0x1200,0x42a2,0x9485,0xc5a7,0xad06,0x6363,0x2281,0x0a61,0x0a61,0x0a40,0x0a41,0x0a41,0x0a41,0x0a41,0x0a41,0x1261,0x1261,0x1261,0x1281,0x12a1,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1aa2,0x1a82,0x1a82,0x1a82,0x1a82,0x12a2,0x1aa3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x1b03,0x1b03,0x2323,0x2323,0x2323,0x2323,0x2303,0x1b03,0x1b03,0x1ae3,0x1ac3,0x1ac3,0x1aa3,0x1a82,0x1a82,0x1a62,0x1242,0x1242,0x1222,0x1222,0x1202,0x1202,0x1202,0x11e2,0x09c1,0x09c1,0x11e2,0x11e2,0x11e2,0x11e2,0x11e2,0x1202,0x1202,0x1202,0x1202,0x1222,0x1222,0x1242,0x1a62,0x1a63,0x1a83,0x1aa3,0x1ac3,0x1ac3,0x22e4,0x2304,0x2304,0x2324,0x2324,0x2344,0x2344,0x2344,0x2344,0x2344,0x2b44,0x5be8,0xb5d1,0xd694,0xd674,0xce53,0xce33,0xc612,0xbdf2,0xbdd1,0xb591,0xad70,0xad50,0xa52f,0xa50f,0x9cef,0x9cef,0x9cce,0x9cce,0x9cce,0x9cce,0x9cce,0x9cce,0x9cce,0x9cee,0x9cef,0xa50f,0xa52f,0xad50,0xb590,0xbdd1,0xc5f2,0x8ccd,0x3b45,0x2324,0x2324,0x2324,0x2344,0x2344,0x2324,0x2b44,0xad8f,0xce52,0x5b86,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x2303,0x3344,0xad6e,0xf755,0xff54,0xff55,0xff75,0xff75,0xff75,0xce51,0x53c6,0x2344,0x2324,0x2324,0x2324,0x53a6,0xd671,0xf733,0xf732,0xf712,0xeed1,0xe6b0,0xde8f,0x94ca,0x2ac3,0x22a2,0x8448,0xc5cc,0x73e7,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1ac2,0x2ae2,0x2ac2,0x42e3,0x9486,0xb547,0xad07,0xa4e7,0xa4c6,0xa4a6,0x9ca6,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c86,0x9c66,0x9c66,0x9c65,0x9c65,0x9c65,0x9c65,0x9c65,0x9465,0x9465,0x9465,0x9445,0x9445,0x9445,0x9425,0x8c25,0x8c05,0x83e4,0x7364,0x4221,0x1140,0x0900,0x2160,0x41e1,0x41e1,0x2960,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x0180,0x2201,0x6343,0xace6,0xb547,0x7c05,0x32a2,0x1261,0x1261,0x0a61,0x0a61,0x0a61,0x0a61,0x0a41,0x0a61,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x1b03,0x1b03,0x1b03,0x2323,0x2323,0x2323,0x1b03,0x1b03,0x1b03,0x1b03,0x1ae3,0x1ae3,0x3b25,0x6be9,0x740a,0x73e9,0x6be9,0x6bc9,0x6ba9,0x6389,0x5b68,0x2a63,0x1242,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1222,0x1242,0x1242,0x1242,0x1a63,0x1a63,0x1a83,0x1a83,0x1aa3,0x1ac3,0x1ac3,0x22e4,0x2304,0x53a8,0x6409,0x6409,0x642a,0x6c2a,0x6c2a,0x6c4a,0x642a,0x4bc7,0x2344,0x2344,0x2b44,0x3b66,0x53a8,0x53a8,0x4ba8,0x4b87,0x4b87,0x4b67,0x4b47,0x4347,0x4326,0x4326,0x4306,0x3b06,0x3ae6,0x3ae6,0x3ae6,0x3ae6,0x3ac6,0x3ac5,0x3ac5,0x3ac5,0x3ae5,0x3ae6,0x3ae6,0x3b06,0x4306,0x4326,0x4326,0x5387,0xa54f,0xd673,0xad8f,0x53a7,0x2344,0x2344,0x2344,0x2344,0x2344,0x4ba7,0xb5d0,0xdeb3,0x9d2d,0x5bc8,0x2304,0x1b03,0x1b03,0x2303,0x2303,0x2303,0x2323,0x9d2d,0xf754,0xff54,0xff74,0xff74,0xff75,0xff75,0xdeb2,0x6408,0x2323,0x2323,0x2323,0x2323,0x3344,0xc62f,0xf733,0xf733,0xf712,0xeef1,0xeed1,0xe6b0,0xb58c,0x3b04,0x1aa2,0x63a6,0xce2d,0x94a9,0x1aa2,0x1aa2,0x1ac2,0x3b23,0x8c86,0xad47,0xa507,0xad27,0xcde8,0x9486,0x5303,0x42c2,0x42a2,0x42a2,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4282,0x4262,0x4262,0x4262,0x4262,0x3a62,0x3a61,0x3a61,0x3a62,0x3a62,0x3a62,0x3a61,0x3a41,0x3a41,0x3a41,0x3a41,0x3a21,0x3a21,0x4241,0x6b23,0x7b64,0x52a2,0x2161,0x00e1,0x08e1,0x2120,0x2940,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x20e0,0x2920,0x3161,0x39c1,0x4201,0x4a42,0x5aa2,0x62e3,0x6b43,0x8404,0xa4e6,0x9465,0x52e2,0x1a41,0x0a41,0x0a61,0x1261,0x1261,0x0a61,0x0a61,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x12a2,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1aa2,0x1aa3,0x1ac3,0x1ac3,0x4345,0x6c08,0x7428,0x7428,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7449,0x7429,0x6c29,0x8ccc,0xd651,0xde92,0xde92,0xd672,0xd652,0xce31,0xcdf1,0xbd90,0x6bc9,0x5b68,0x5b68,0x5b67,0x5b47,0x3ac5,0x1a63,0x1262,0x1242,0x1262,0x1262,0x1a62,0x1a62,0x1a83,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x22e4,0x22e4,0x2304,0x4345,0xbdf1,0xdeb4,0xded4,0xded5,0xe6f5,0xe6f5,0xe6f5,0xdef5,0xb5d1,0x7c8c,0x7c8b,0x7c8b,0x7c8b,0x7c8b,0x7c8b,0x7c6b,0x746b,0x744b,0x744b,0x744b,0x742a,0x6c0a,0x6c0a,0x6c0a,0x6bea,0x6bea,0x6bea,0x63ea,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63e9,0x6be9,0x6bea,0x6c0a,0x6c0a,0x5ba8,0x2b24,0x3b45,0x94ee,0xd694,0xc612,0x6409,0x2b44,0x2344,0x2344,0x4386,0xadb0,0xef15,0xe6d4,0xe6d4,0xce52,0x7c6a,0x53a7,0x53a7,0x53a7,0x53a7,0x53a6,0x53a6,0x9d2d,0xef34,0xff54,0xff54,0xff74,0xff74,0xff74,0xe6f3,0x7449,0x1b23,0x1b23,0x1b23,0x1b23,0x2b24,0xb5ae,0xf733,0xf733,0xf712,0xf711,0xf711,0xeef0,0xce2e,0x4325,0x1ac3,0x5365,0xce2e,0xad4b,0x2ae3,0x1ac2,0x22e2,0x94e7,0xe6aa,0xde69,0xd629,0xe689,0xbd87,0x4b03,0x1262,0x1a61,0x2282,0x2a82,0x2a62,0x2a62,0x2a62,0x2a61,0x2a61,0x2a61,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2a41,0x2221,0x2221,0x2221,0x2221,0x2221,0x2221,0x2201,0x2201,0x2201,0x19e0,0x09a0,0x0980,0x1980,0x4a62,0x6b03,0x62c3,0x39c1,0x08c0,0x0080,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0020,0x2920,0x3981,0x41c1,0x4a22,0x5a82,0x62e3,0x7343,0x83a4,0x8be4,0x9425,0x6323,0x2a41,0x0a20,0x0a20,0x0a40,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x8caa,0xde90,0xd690,0xd671,0xd671,0xd691,0xde91,0xde91,0xde92,0xde92,0xde92,0xd692,0xd692,0xd692,0xd672,0xd672,0xde92,0xe6d3,0xeed3,0xe6d3,0xe6b3,0xde93,0xde93,0xde72,0xce32,0xbdb0,0xb5b0,0xb590,0xb570,0xb590,0xa52f,0x6388,0x22a3,0x2283,0x1a83,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x1ae3,0x22e4,0x2304,0x2304,0x2304,0x4b86,0xd6b4,0xf757,0xf777,0xf777,0xff77,0xff97,0xff97,0xff97,0xef36,0xdef5,0xdef5,0xded5,0xded5,0xded5,0xded5,0xdeb5,0xd6b5,0xd695,0xd694,0xd674,0xce74,0xce54,0xce53,0xce33,0xc633,0xc633,0xc613,0xc613,0xc613,0xc612,0xc612,0xc612,0xc612,0xc612,0xc612,0xc632,0xce33,0xce53,0xce53,0xce53,0x8ccd,0x3b66,0x3345,0x848c,0xd673,0xd693,0x7c8b,0x3365,0x2344,0x6409,0xd693,0xe6f4,0x7c4a,0xa54e,0xe6f4,0xe6d4,0xd693,0xd693,0xd693,0xde93,0xdeb2,0xdeb2,0xe6d3,0xf734,0xf754,0xff54,0xff54,0xff54,0xff54,0xef13,0x848a,0x2303,0x1b03,0x1b03,0x1b03,0x2303,0x9d0c,0xeef2,0xf732,0xf732,0xf712,0xf711,0xf711,0xdeb0,0x63a6,0x1ac3,0x4345,0xc5cd,0xbdcc,0x4b64,0x1ac2,0x22e3,0xb569,0xe6ab,0xad27,0x73e5,0xd629,0xce08,0x63a4,0x1aa2,0x6384,0xad27,0xb587,0xb567,0xb567,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xb547,0xad46,0xad46,0xad26,0xad26,0xad26,0xad26,0xad26,0xad06,0xa506,0xa4e6,0xa4c6,0x9ca6,0x9465,0x6323,0x21e1,0x0160,0x0960,0x29a0,0x4a62,0x5a82,0x4201,0x1900,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0060,0x0080,0x08a0,0x08e0,0x0900,0x1140,0x1160,0x1180,0x11c0,0x09e0,0x09e0,0x0a00,0x0a20,0x0a40,0x0a41,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x12a1,0x12a1,0x12a2,0x12a2,0x12a2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x12c2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x2ae3,0xa52b,0xde90,0x846a,0x6be8,0x6be8,0x6be8,0x6be8,0x6be9,0x6be9,0x6be8,0x6be8,0x6be9,0x6be8,0x6be8,0x63e8,0x63e8,0x94cc,0xbdf0,0xc5f0,0xc5f0,0xc5f0,0xbdd0,0xbdd0,0xbdb0,0xa50e,0x63a9,0x5b88,0x5b88,0x5b68,0x73ea,0xb570,0xbdb0,0x9cee,0x9d0e,0x848c,0x4b47,0x1aa3,0x1aa3,0x1ac3,0x1ac3,0x1ac3,0x22e4,0x22e4,0x2304,0x2304,0x2304,0x2324,0x2324,0x53a7,0xce53,0xe6f5,0xeef5,0xef15,0xef15,0xef15,0xef16,0xe6f5,0xadb0,0x6c2a,0x6c2a,0x6c0a,0x6c0a,0x6c0a,0x6c0a,0x6409,0x6409,0x63e9,0x63e9,0x63e9,0x63e9,0x63e9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x63c9,0x6be9,0x7c2a,0x7c2a,0x7c2a,0x7c2a,0x7c2a,0x6c0a,0x63e9,0x6c0a,0xb5b0,0xd6b4,0xa56f,0x4ba7,0x2b44,0x6c2a,0xc632,0xded4,0x952e,0x4386,0x4ba6,0xbdf1,0xef35,0xc611,0xce72,0xef15,0xbdf0,0x8cac,0x84ab,0x84ab,0x84ab,0x84ab,0x84ab,0x9d2d,0xe6d3,0xf734,0xf734,0xf734,0xf734,0xf734,0xf734,0x94ec,0x2b03,0x1b03,0x1b03,0x1b03,0x2303,0x7c49,0xe6d2,0xf712,0xf712,0xf712,0xf711,0xf711,0xe6d0,0x8489,0x22e3,0x3304,0xad4b,0xd64d,0x63c6,0x1ac2,0x1ae2,0x7426,0xd64a,0xde6a,0xc5c8,0xe689,0xce08,0x63a4,0x63a4,0xc5a8,0xce08,0x9cc6,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9485,0x9465,0x9465,0x9465,0x9485,0x9485,0x9485,0x9465,0x9465,0x9465,0x9465,0x8c45,0x8c25,0x8404,0x83e4,0x8c25,0xa4a6,0x83e4,0x4262,0x0960,0x0120,0x0920,0x31a1,0x4a02,0x41e1,0x2920,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0060,0x0060,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x01a0,0x09c0,0x09e0,0x0a00,0x0a20,0x0a20,0x0a40,0x0a41,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x12a1,0x12a1,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x1aa2,0x12a2,0x12a2,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1ac2,0x1ac2,0x1aa3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x4324,0xb58d,0xce0f,0x5366,0x1ac3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x3304,0x4346,0x4b66,0x4b46,0x4b46,0x4b46,0x4346,0x4346,0x3b25,0x22e4,0x1ae3,0x1ac3,0x1ac3,0x22e4,0x7c4b,0xce32,0xce12,0xc5f1,0xce32,0xa52f,0x4306,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x22e3,0x22e4,0x2304,0x2304,0x2324,0x2324,0x2324,0x3345,0x5be9,0x6c0a,0x6c0a,0x6c0a,0x6c0a,0x6c2a,0x6c2a,0x6c0a,0x4ba7,0x2b44,0x2344,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x3325,0x94ee,0xd6b4,0xdeb4,0xdeb4,0xdeb4,0xd6b4,0xad90,0x2b25,0x2324,0x4366,0x9d2e,0xd6b4,0xbe11,0x6409,0x2b45,0x5bc8,0xb5b0,0xded4,0xad8f,0x53c7,0x63e9,0xb5d0,0xded4,0xded4,0xbdd0,0x5bc8,0x2324,0x2324,0x2324,0x2304,0x2304,0x2304,0x5bc7,0xce31,0xe6f3,0xe6d3,0xe6d3,0xef13,0xe6f3,0xe6d3,0x9d0d,0x3324,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x5366,0xd671,0xe6d1,0xe6d1,0xe6d1,0xe6d1,0xe6d0,0xde90,0x9cea,0x22e3,0x22e3,0x8ca9,0xde8e,0x7c28,0x1ac2,0x1ac2,0x2ac3,0x73e6,0xb588,0xd629,0xc5c8,0x8445,0x63a4,0xc5e8,0xce08,0x8425,0x2aa2,0x1281,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1241,0x1241,0x1241,0x5b23,0xbd87,0xcdc7,0xc5c7,0xc5c7,0xc5a7,0xc5a7,0xbd67,0x73a4,0x0a00,0x0a00,0x0a00,0x2201,0x5b03,0x8c25,0x8c25,0x5ae3,0x2180,0x0120,0x00e0,0x1100,0x3181,0x39a1,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0040,0x0060,0x00a0,0x00c0,0x00e0,0x0100,0x0140,0x0160,0x0180,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a20,0x0a41,0x0a61,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x12a1,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x1282,0x12a2,0x12a2,0x12a2,0x1aa2,0x1aa2,0x1aa2,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x5366,0xc5ee,0xb58d,0x4325,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x1ac3,0x1ac3,0x1ac3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ae3,0x1ac3,0x1ac3,0x2ae4,0x9d0e,0xce32,0x94ad,0x5b68,0xc5d1,0xbdd1,0x5b88,0x1ac3,0x1ac3,0x22c3,0x22c3,0x22e4,0x22e4,0x2304,0x2304,0x2304,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2324,0x2b25,0x63e9,0x7c8c,0x848c,0x848c,0x848c,0x7c8c,0x6c0a,0x2b04,0x2304,0x2304,0x2304,0x2304,0x3325,0x9d2e,0xef16,0xef16,0xef16,0xef36,0xef16,0xbdf1,0x3345,0x2b25,0x2b24,0x3345,0x84ac,0xce73,0xce53,0x7c6b,0x3345,0x4386,0x9d2e,0xdeb4,0xbe11,0x6409,0x3345,0x4b86,0x4b86,0x3345,0x2324,0x2304,0x2304,0x2304,0x2304,0x2304,0x2304,0x3324,0x6be8,0x7c29,0x7c29,0x9cec,0xd672,0xad4e,0x7c29,0x5b87,0x22e3,0x1ae3,0x1ac3,0x1ae3,0x1ae3,0x2ae3,0x73e8,0x7c28,0x7c28,0x7c08,0x7c08,0x7c08,0x7c07,0x5b86,0x1ac3,0x1ac3,0x7408,0xde6e,0x8c89,0x22c2,0x1ac2,0x1ac2,0x1ac2,0x2ac2,0x32c3,0x2ac2,0x22c2,0x8c86,0xd649,0x9cc6,0x22a2,0x1282,0x32e3,0x73e5,0x8445,0x8425,0x8425,0x8425,0x7c05,0x4b23,0x1261,0x1261,0x0a61,0x0a61,0x4b03,0xbd87,0xde28,0xde28,0xde28,0xde28,0xde08,0xd608,0x9485,0x1a21,0x0a00,0x0a00,0x09e0,0x11e0,0x3221,0x6b43,0x83c4,0x6b23,0x39e1,0x0900,0x00c0,0x00a0,0x10c0,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x2120,0x1900,0x00a0,0x00a0,0x00e0,0x0100,0x0120,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a41,0x0a40,0x0a41,0x0a61,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1a82,0x1a82,0x1a82,0x1aa2,0x1aa2,0x1aa2,0x1aa2,0x1aa3,0x63a7,0xce2f,0x9ccb,0x2ac3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x22c3,0x4326,0x5366,0x5367,0x5367,0x5367,0x5367,0x5387,0x5387,0x3305,0x22e3,0x1ae3,0x1ae3,0x1ae3,0x22e4,0x94cd,0xd653,0xbdf1,0xb590,0xce32,0xa54f,0x4306,0x1ac3,0x1ac3,0x1ac3,0x22c3,0x22e4,0x22e4,0x22e4,0x2304,0x2304,0x2304,0x2324,0x2b25,0x3b66,0x4366,0x4366,0x4366,0x4366,0x4366,0x4366,0x4366,0x3345,0x2324,0x2324,0x2324,0x2304,0x2304,0x2304,0x2304,0x3b25,0xa52f,0xdeb5,0xdeb5,0xded5,0xded5,0xdeb5,0xb5b1,0x3325,0x2304,0x2304,0x2304,0x2304,0x2b24,0x9d2e,0xef36,0xef36,0xef36,0xef36,0xef16,0xce73,0xb5d1,0xce53,0xbdf1,0x7c8c,0x3b45,0x6c0a,0xc5f1,0xd693,0x8ccd,0x3b66,0x3345,0x848c,0xce73,0xce52,0x7c6b,0x3345,0x2324,0x2324,0x2304,0x2304,0x2304,0x2304,0x22e4,0x22e4,0x1ae3,0x22e3,0x1ac3,0x1ac3,0x1ac3,0x5b87,0xc610,0x9d0d,0x22c3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1ac3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x1aa3,0x1aa2,0x1aa2,0x1aa2,0x5ba6,0xc5ed,0xa52a,0x32e3,0x1aa2,0x1aa2,0x12a2,0x12a2,0x12a2,0x12a2,0x1aa2,0x63a5,0xce09,0x9ce6,0x1a82,0x1282,0x4b23,0xb567,0xde49,0xde28,0xde28,0xde28,0xd628,0x9ca6,0x1261,0x1261,0x0a61,0x0a61,0x32a2,0xa4c6,0xde48,0xde28,0xde28,0xde28,0xd608,0xd608,0xad06,0x42a2,0x0a00,0x0a00,0x2a41,0x52c2,0x5ae2,0x4242,0x4a62,0x6b23,0x6b23,0x4a22,0x1900,0x00a0,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x20e0,0x2940,0x3981,0x18e0,0x00a0,0x00c0,0x00e0,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x0a00,0x0a00,0x0a20,0x0a21,0x0a41,0x0a41,0x0a41,0x0a41,0x1241,0x0a61,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1281,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1262,0x1282,0x1282,0x1282,0x1a82,0x1a82,0x1a82,0x73e8,0xce0f,0x8449,0x1a82,0x1a82,0x1a82,0x1a82,0x1282,0x1282,0x1282,0x1a82,0x1a82,0x1a83,0x1a83,0x1a83,0x1a83,0x5346,0xb56e,0xce11,0xce31,0xce31,0xce31,0xd631,0xd652,0xce52,0x94ac,0x5ba8,0x2ae4,0x1ac3,0x1ac3,0x1ac3,0x4326,0x9cee,0xb590,0xb590,0x9cee,0x5347,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1ac3,0x22c3,0x22e4,0x22e4,0x22e4,0x22e4,0x2304,0x5bc8,0xad90,0xbdf1,0xbdf1,0xbdf1,0xbdf1,0xbdf1,0xbdf1,0xb5b1,0x742b,0x2304,0x2304,0x2304,0x22e4,0x22e4,0x22e4,0x22e4,0x3b25,0xa52f,0xe6d5,0xe6d5,0xe6d5,0xe6d5,0xe6d5,0xbdd2,0x3b26,0x2304,0x2304,0x2304,0x2304,0x2b04,0x94ed,0xe6f5,0xeef5,0xeef5,0xe6f5,0xe6f5,0xe6f5,0xdeb4,0xc612,0xd653,0xd673,0x7c6b,0x2b04,0x5388,0xad70,0xd673,0x9d2f,0x4b87,0x2b04,0x6be9,0xbdf1,0xce73,0x8ccc,0x3b45,0x2304,0x2304,0x22e4,0x22e4,0x22e4,0x22e4,0x1ac3,0x1ac3,0x1ac3,0x1aa3,0x1aa3,0x1aa3,0x42e5,0xbd8f,0xa52d,0x2aa3,0x1a83,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1aa3,0x1a82,0x1a82,0x1a82,0x1a82,0x4304,0xb54b,0xb58b,0x42e4,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x1282,0x3ae3,0xbda8,0xb547,0x2a82,0x2282,0x32a2,0xad07,0xde29,0xde28,0xde28,0xde28,0xde48,0xb526,0x32a2,0x1241,0x0a41,0x0a41,0x1241,0x7be5,0xcde8,0xd608,0xd5e8,0xd5e7,0xcdc7,0xcdc7,0xbd67,0x5b23,0x09e0,0x2a21,0x8405,0xace6,0xa4a6,0x9445,0x6b23,0x39e1,0x4a42,0x5aa3,0x4a42,0x2940,0x0880,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x2100,0x3161,0x18e0,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x09e0,0x09e0,0x0a00,0x0a01,0x0a20,0x0a21,0x0a21,0x0a41,0x0a41,0x0a41,0x0a41,0x1241,0x1241,0x1241,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1261,0x1262,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1262,0x1262,0x1262,0x1262,0x2283,0x8429,0xbdae,0x6ba8,0x1262,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1262,0x1262,0x1a62,0x1a62,0x1a62,0x5b47,0xb56f,0xcdf0,0xcdf1,0xce11,0xce11,0xce11,0xce11,0xce32,0xc5d1,0xb5b0,0x7c2b,0x2aa4,0x1aa3,0x1a83,0x1a83,0x2284,0x42e6,0x42e6,0x2a83,0x1a63,0x1a63,0x1a63,0x1a63,0x1a83,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1ac3,0x22c3,0x22c3,0x22e4,0x742b,0xce53,0xdeb5,0xe6b5,0xe6b5,0xe6d5,0xe6d5,0xe6d5,0xd694,0x8c8d,0x22e4,0x22e4,0x22e4,0x22c4,0x22c4,0x22c4,0x22c4,0x3305,0x9d0e,0xde94,0xde94,0xde94,0xde94,0xde94,0xb5b1,0x3305,0x22c4,0x22e4,0x22e4,0x22e4,0x22e4,0x8c8c,0xdeb4,0xdeb5,0xdeb4,0xdeb4,0xdeb4,0xdeb4,0xbdd1,0x6bc9,0x8cad,0xd694,0x9cee,0x3304,0x22c4,0x4326,0x8cad,0xce32,0xad90,0x5ba8,0x22e4,0x5387,0xad4f,0xce52,0x9d2e,0x4346,0x22e4,0x1ae4,0x1ac3,0x1ac3,0x1ac3,0x1aa3,0x1aa3,0x1aa3,0x1a83,0x1a83,0x1a63,0x2a83,0xa50d,0xb56e,0x844b,0x844a,0x844b,0x846b,0x846b,0x8c6b,0x8c6b,0x8c6b,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c6a,0x8c69,0x8c69,0x8c69,0x8c69,0xb54b,0xbd8c,0x4ae4,0x1242,0x1242,0x1242,0x1242,0x1241,0x1241,0x1241,0x2a82,0xa4e7,0xb547,0x5303,0x7c05,0xad06,0xbd67,0xcdc8,0xd5c8,0xd5e8,0xd5e8,0xd5e8,0xbd67,0x5b23,0x0a21,0x0a21,0x0a21,0x0a21,0x5b23,0xb527,0xcda7,0xc587,0xc587,0xc587,0xc567,0xbd67,0x73a4,0x19e0,0x4262,0x9c86,0xa4a6,0x6b23,0x7344,0x8be4,0x62e3,0x1120,0x2960,0x4201,0x4a02,0x3181,0x0840,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x2100,0x2100,0x0880,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x0180,0x01a0,0x09c0,0x09c0,0x09e0,0x09e0,0x0a00,0x0a01,0x0a01,0x0a21,0x0a21,0x2a61,0x5323,0x6363,0x4b03,0x2241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1241,0x1221,0x1221,0x1221,0x1221,0x1222,0x1221,0x1221,0x1201,0x1201,0x1201,0x1221,0x1222,0x1222,0x1222,0x1242,0x1242,0x1242,0x42c4,0x94aa,0xad2d,0x5b47,0x1a22,0x1222,0x1222,0x3263,0x4ae6,0x5306,0x3a84,0x1a22,0x1222,0x1222,0x1222,0x1222,0x1222,0x5307,0xa4ed,0xad2e,0xad2e,0xb54e,0xb54f,0xb54f,0xb54f,0xad2e,0x73c9,0xa4ee,0xad4f,0x6ba9,0x2283,0x1a63,0x1a43,0x1a43,0x1a43,0x1242,0x1242,0x1222,0x1222,0x1222,0x1a23,0x1a43,0x1a43,0x1a63,0x1a63,0x1a83,0x1a83,0x1aa3,0x1aa3,0x1aa3,0x740b,0xc5f2,0xd653,0xd654,0xd654,0xd674,0xd674,0xd674,0xce33,0x7c4c,0x22c4,0x22a4,0x22a4,0x22a4,0x1aa4,0x1aa3,0x1aa3,0x32c5,0x94cd,0xce33,0xce33,0xce53,0xd653,0xce53,0xb570,0x32c5,0x1aa4,0x1aa4,0x22a4,0x22c4,0x22c4,0x7c4b,0xce53,0xd653,0xd653,0xd653,0xd653,0xce53,0xc612,0xb570,0xbdd1,0xc5f2,0x7c2b,0x22c4,0x1aa3,0x1aa3,0x2ac4,0x740a,0xbdb0,0xb590,0x6bea,0x2ac4,0x3b05,0x8cac,0xc611,0xa54f,0x5368,0x22a3,0x1aa3,0x1aa3,0x1a83,0x1a83,0x1a83,0x1a63,0x1a63,0x1242,0x1242,0x2243,0x7c0a,0x9ced,0x9ccd,0xa4ed,0xa4ed,0xa50d,0xa50d,0xad0d,0xad2d,0xad0d,0xad0d,0xad2d,0xad2d,0xad2c,0xad2c,0xad2c,0xad2c,0xad0c,0xad0b,0xad0b,0xa50b,0xa50a,0xa4ea,0x4ae4,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1a42,0x7bc5,0xb527,0x6b64,0x73a5,0xb547,0xa4c6,0xbd47,0xc567,0xc587,0xc587,0xc587,0xbd67,0x6b84,0x1201,0x0a01,0x0a01,0x0a01,0x3242,0x9c86,0xbd47,0xbd26,0xbd26,0xb526,0xb506,0xb506,0x8c05,0x2a01,0x21e1,0x83c5,0x9445,0x6b23,0x5aa2,0x83a4,0x6b03,0x2160,0x00c0,0x08c0,0x2120,0x2920,0x0020,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x10a0,0x0860,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0140,0x0160,0x0160,0x0180,0x09a0,0x09a0,0x09c0,0x09c0,0x09e0,0x09e0,0x1201,0x42a2,0x9465,0xb506,0xbd47,0xad06,0x7384,0x1a21,0x0a21,0x0a21,0x0a21,0x0a21,0x0a21,0x0a21,0x0a01,0x0a01,0x0a01,0x0a01,0x0a01,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x1201,0x1202,0x1202,0x1a22,0x5b26,0x948a,0xad2c,0xad0c,0x946b,0x4ac5,0x1202,0x4ac5,0x840a,0x948b,0x9c8c,0x8c2b,0x4ac6,0x11e2,0x11e2,0x11e2,0x1202,0x1202,0x2a43,0x52e6,0x52e6,0x52e7,0x52e7,0x52e7,0x5307,0x5307,0x52e6,0x2a43,0x4ae6,0x9cad,0x9cce,0x5b28,0x1a23,0x1222,0x1222,0x1202,0x1202,0x1202,0x11e2,0x11e2,0x1202,0x1202,0x1202,0x1222,0x1222,0x1a23,0x1a43,0x1a63,0x1a63,0x1a63,0x1a83,0x4b07,0x7c0b,0x844c,0x844c,0x844c,0x844c,0x844c,0x844c,0x842c,0x4b27,0x1a83,0x1a83,0x1a83,0x1a83,0x1a63,0x1a63,0x1a63,0x32a4,0x8c6d,0xc5d2,0xc5d2,0xc5d2,0xc5d2,0xc5d2,0xad2f,0x32a5,0x1a83,0x1a83,0x1a83,0x1a83,0x1a83,0x73ea,0xbdd2,0xc5f2,0xc5f2,0xc5f2,0xc5f2,0xb591,0x948d,0xa4ef,0x9cce,0x7beb,0x3ac5,0x1a63,0x1a63,0x1a63,0x1a63,0x2283,0x5b68,0xa50e,0xb590,0x7c2b,0x32c5,0x2ac4,0x73ea,0xb590,0xad4f,0x63a9,0x2aa4,0x2283,0x2283,0x2283,0x2263,0x2243,0x2243,0x1a23,0x1a22,0x1a22,0x2a23,0x3243,0x3243,0x3243,0x3243,0x3263,0x3263,0x3263,0x3263,0x3264,0x3263,0x3263,0x3263,0x3263,0x3263,0x3263,0x3263,0x3263,0x3243,0x3243,0x3243,0x3242,0x3242,0x2202,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x52e3,0xa4e6,0x7384,0x4ac3,0xa4c6,0x7bc5,0x9c86,0xb507,0xb506,0xb526,0xbd26,0xbd27,0x7bc4,0x2201,0x09e0,0x09e0,0x09c0,0x11c0,0x7ba4,0xacc6,0xacc6,0xacc6,0xaca6,0xa4a5,0xa485,0x9425,0x3201,0x0980,0x3a22,0x7364,0x83c4,0x7b84,0x7344,0x5262,0x1100,0x00c0,0x00a0,0x0080,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x0040,0x0060,0x0080,0x00a0,0x00c0,0x00e0,0x0100,0x0100,0x0120,0x0140,0x0160,0x0180,0x0180,0x09a0,0x09a0,0x09c0,0x09c0,0x2a01,0x9445,0xace6,0x8c25,0x8c05,0xb527,0x9446,0x3262,0x09e1,0x0a01,0x0a01,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09e1,0x09c1,0x09c1,0x09c1,0x09a1,0x09a1,0x09a1,0x09a1,0x09a1,0x09c1,0x09c1,0x09c1,0x11c1,0x11e1,0x3a84,0x8c49,0x9cab,0x7ba8,0x8409,0x9cab,0x6b88,0x3244,0x7bc9,0x944b,0x7368,0x7ba9,0x944b,0x7389,0x11c2,0x09c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11e2,0x11e2,0x19e2,0x4ac6,0x8c4c,0x8c6c,0x5b28,0x52e7,0x52c6,0x4ac6,0x4aa6,0x4aa6,0x4a86,0x4a86,0x4a86,0x4a86,0x4aa6,0x4ac6,0x52c7,0x52e7,0x5307,0x5328,0x5b28,0x5b48,0x5b48,0x5b48,0x5b68,0x6368,0x6368,0x6368,0x6368,0x6369,0x6369,0x6369,0x5b69,0x5b68,0x5b68,0x5b48,0x5b48,0x42e6,0x1a43,0x1a43,0x2a64,0x840b,0xb571,0xb571,0xb571,0xb571,0xb571,0x9cce,0x2a64,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x6389,0xb550,0xb571,0xb570,0xb570,0xb550,0xa4ef,0x4ae6,0x3285,0x3284,0x2243,0x1a22,0x1222,0x1a42,0x1a43,0x1a43,0x1a43,0x1a43,0x42c6,0x8c6c,0xad4f,0x844c,0x3ac5,0x2263,0x5b47,0xa4ee,0xad2f,0x8c6b,0x7c2a,0x7c0a,0x7c0a,0x73ea,0x73c9,0x73a9,0x6b88,0x6b68,0x6348,0x6348,0x6348,0x6348,0x6b68,0x6b68,0x6b88,0x6b88,0x7388,0x7388,0x73a8,0x73a8,0x73a8,0x73a8,0x73a8,0x7388,0x7387,0x6b87,0x6b87,0x6b67,0x6b66,0x6b46,0x6b46,0x6b46,0x6346,0x6b45,0x6b45,0x6b45,0x6b45,0x6b64,0x6b64,0x6b64,0x6b64,0x7384,0x9c66,0x7384,0x3a42,0x8c05,0x7ba4,0x83c5,0x9c86,0xa486,0xa4a6,0xa4a6,0xacc6,0x8c05,0x3221,0x09a0,0x09a0,0x09a0,0x09a0,0x52a3,0x9445,0x9c65,0x9c45,0x9425,0x9425,0x9405,0x8be4,0x4a62,0x0960,0x0140,0x1980,0x39e1,0x4221,0x39c1,0x1100,0x00c0,0x00a0,0x0080,0x0060,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0040,0x0040,0x0060,0x0080,0x00a0,0x00a0,0x00c0,0x00e0,0x0100,0x0120,0x0120,0x0140,0x0160,0x0160,0x0980,0x0980,0x09a0,0x3a41,0x9c85,0x9c65,0x5ae3,0x7364,0xa4c6,0x7bc5,0x2201,0x09c0,0x09c1,0x09c1,0x09c1,0x09c1,0x09c1,0x09a1,0x09a1,0x09a1,0x09a1,0x0981,0x0981,0x0981,0x0981,0x0981,0x0961,0x0981,0x0981,0x0981,0x0981,0x09a1,0x09a1,0x4a84,0x9449,0x83e9,0x4284,0x6b47,0x8c0a,0x6307,0x4265,0x7ba9,0x7bc9,0x4244,0x5b07,0x83ca,0x6328,0x1181,0x0981,0x0981,0x0981,0x0981,0x1181,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x11a2,0x09a1,0x09a2,0x11c2,0x4a86,0x7bca,0x83eb,0x83eb,0x7bcb,0x7bca,0x7baa,0x738a,0x738a,0x738a,0x738a,0x738a,0x738a,0x7bab,0x7bcb,0x83eb,0x840c,0x8c2c,0x8c4d,0x946d,0x946d,0x948d,0x948d,0x948d,0x948e,0x948e,0x948e,0x948e,0x94ae,0x94ae,0x948e,0x948e,0x948e,0x948e,0x94ae,0x8c6d,0x5b29,0x1a23,0x1a03,0x52e7,0x73aa,0x73aa,0x73aa,0x73aa,0x73aa,0x6349,0x2203,0x1202,0x1202,0x1202,0x1202,0x1202,0x5b28,0x9cce,0xa4ef,0xa4ef,0xa4cf,0xa4cf,0x946d,0x42a6,0x1202,0x1202,0x1202,0x1a03,0x1a03,0x1a03,0x1202,0x1202,0x1202,0x1202,0x1202,0x2a64,0x73aa,0x9cce,0x8c4c,0x4ae6,0x1a23,0x42a5,0x7beb,0x8c6c,0x8c4c,0x8c4b,0x8c2b,0x840b,0x83ea,0x7bca,0x73a9,0x7389,0x7369,0x6b49,0x6b49,0x7369,0x7389,0x7389,0x7ba9,0x7ba9,0x7bc9,0x7bc9,0x7bc9,0x7bc9,0x7bc9,0x7ba9,0x7ba8,0x7ba8,0x7ba8,0x7ba8,0x7b88,0x7387,0x7387,0x7367,0x7366,0x7366,0x7366,0x7346,0x7366,0x7365,0x7365,0x7365,0x7364,0x7b64,0x7b84,0x7b64,0x7364,0x62e3,0x31e1,0x6b24,0x7b84,0x52a3,0x5ae3,0x62e3,0x6303,0x6303,0x6303,0x5ac3,0x21c1,0x0980,0x0980,0x0160,0x0160,0x29c1,0x7ba4,0x8be4,0x8bc4,0x83c4,0x83a4,0x8384,0x7b84,0x5aa2,0x0920,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00c0,0x00a0,0x0080,0x0060,0x0040,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x0060,0x0060,0x0080,0x00a0,0x00c0,0x00e0,0x00e0,0x0100,0x0120,0x0120,0x0140,0x0140,0x0160,0x0160,0x29c1,0x83c4,0x9445,0x9425,0x9425,0x83c5,0x4242,0x09a0,0x09a0,0x09a1,0x09a1,0x0980,0x0980,0x0980,0x0980,0x0960,0x0960,0x0960,0x0940,0x0940,0x0940,0x0140,0x0140,0x0940,0x0940,0x0940,0x0941,0x0961,0x0961,0x0961,0x31e3,0x7367,0x83c9,0x7ba8,0x7ba8,0x6b27,0x31c3,0x21a2,0x6307,0x7b89,0x7369,0x7369,0x7389,0x52a7,0x1982,0x0941,0x0941,0x0941,0x1161,0x4245,0x52a6,0x52a6,0x52a6,0x52a6,0x52a7,0x52a7,0x52a7,0x3a25,0x1161,0x0961,0x0961,0x1181,0x29c3,0x29e4,0x29e4,0x29c4,0x29c3,0x29c3,0x29a3,0x29a3,0x29a3,0x29a3,0x29a3,0x29a3,0x29c3,0x29c4,0x29e4,0x31e4,0x3204,0x3224,0x3225,0x3225,0x4aa6,0x5b28,0x6328,0x6329,0x6329,0x6329,0x6329,0x6329,0x5b28,0x4286,0x3a45,0x3245,0x3245,0x4266,0x73ab,0x840c,0x5b08,0x21e3,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x11c2,0x4286,0x7beb,0x840c,0x840c,0x840c,0x83ec,0x7bab,0x3a65,0x11c2,0x11c2,0x3224,0x6328,0x73aa,0x6b8a,0x4aa7,0x19e3,0x11c2,0x11c2,0x11c2,0x11e2,0x2203,0x52e7,0x8c2c,0x8c2c,0x52e7,0x3a65,0x3a85,0x4285,0x4285,0x4285,0x4265,0x3a45,0x3a24,0x3a24,0x3204,0x31e3,0x31e3,0x31c3,0x31c3,0x31c3,0x31e3,0x31e3,0x3203,0x3204,0x3a04,0x3a04,0x3a04,0x3a04,0x3a03,0x3a03,0x3a03,0x3203,0x3203,0x3203,0x31e3,0x31e3,0x31c2,0x31c2,0x31c2,0x31c2,0x29c2,0x31c2,0x31c2,0x31c2,0x31c2,0x31c1,0x31c1,0x31e1,0x31e1,0x31e1,0x31c1,0x29c1,0x29a1,0x5283,0x7344,0x39e1,0x0920,0x0940,0x0940,0x0140,0x0940,0x0940,0x0160,0x0140,0x0140,0x0140,0x0140,0x1140,0x5283,0x6b03,0x62e3,0x62e3,0x62c3,0x62c2,0x5aa2,0x4a42,0x1100,0x00e0,0x00c0,0x1100,0x2961,0x3181,0x2120,0x10c0,0x0060,0x0040,0x0040,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0840,0x0860,0x1080,0x0840,0x0020,0x0040,0x0040,0x0060,0x0080,0x0080,0x00a0,0x00c0,0x00c0,0x00e0,0x0100,0x0100,0x0120,0x0120,0x0140,0x0940,0x3a01,0x7364,0x83a4,0x5ac3,0x29c1,0x0960,0x0960,0x0960,0x0960,0x0960,0x0960,0x0960,0x0940,0x0940,0x0140,0x0120,0x0120,0x0120,0x0120,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0920,0x0920,0x0920,0x0940,0x0941,0x31c3,0x5285,0x52a5,0x4244,0x2182,0x0921,0x0921,0x2182,0x4a45,0x5266,0x4a45,0x5286,0x6308,0x4a66,0x4225,0x4225,0x4205,0x4225,0x5ac7,0x6308,0x62e8,0x62e8,0x62e8,0x62e8,0x62e8,0x6308,0x4225,0x0921,0x0921,0x0921,0x0941,0x0941,0x0941,0x0921,0x0921,0x0921,0x0921,0x0901,0x0901,0x0901,0x0100,0x0101,0x0901,0x0921,0x0921,0x0941,0x0941,0x0961,0x0961,0x0961,0x0981,0x52c7,0x7bcb,0x7bcc,0x7bcc,0x83cc,0x83ec,0x83ec,0x83ec,0x7bcb,0x4a66,0x1182,0x0981,0x0981,0x1181,0x29c4,0x6309,0x738b,0x5ae8,0x3204,0x2a04,0x29e4,0x29e4,0x29e4,0x29e4,0x29e4,0x29e4,0x2a04,0x2a04,0x2a04,0x2a04,0x2a04,0x3204,0x3a04,0x3a04,0x3a04,0x3204,0x3204,0x3204,0x29e4,0x29e3,0x3204,0x5b08,0x738a,0x6b49,0x736a,0x738a,0x4a66,0x1182,0x0981,0x0981,0x0981,0x09a2,0x11a2,0x3a45,0x738a,0x840b,0x7bea,0x7bea,0x7bca,0x7bca,0x7baa,0x7389,0x7369,0x6b48,0x6328,0x62e7,0x5ac7,0x5aa7,0x52a7,0x5aa7,0x5aa7,0x5ac7,0x5ac7,0x62e7,0x6307,0x6307,0x6307,0x6307,0x6307,0x6307,0x6307,0x6307,0x6306,0x62e6,0x62e6,0x5ae6,0x5ac5,0x5aa5,0x5aa5,0x52a5,0x5284,0x5284,0x5284,0x5284,0x5aa4,0x5aa4,0x5aa3,0x5ac3,0x5ac3,0x5ac3,0x5ac3,0x5aa3,0x5aa3,0x5aa3,0x62c3,0x6b03,0x4202,0x0900,0x0100,0x0120,0x0120,0x0120,0x0120,0x0120,0x0120,0x0120,0x0100,0x0100,0x0900,0x0900,0x1100,0x1100,0x10e0,0x08e0,0x08e0,0x08c0,0x08c0,0x00c0,0x00a0,0x08c0,0x3181,0x4a02,0x41c1,0x39a1,0x3161,0x10a0,0x0040,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0840,0x1080,0x1080,0x0840,0x0020,0x0020,0x0040,0x0040,0x0060,0x0060,0x0080,0x00a0,0x1900,0x2940,0x2960,0x2981,0x3181,0x31a1,0x31a1,0x31c1,0x4201,0x6b23,0x6b03,0x4202,0x39e1,0x31c1,0x1140,0x0140,0x0140,0x0120,0x0120,0x0120,0x0120,0x0100,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00e0,0x1921,0x31a2,0x31c2,0x31c3,0x39e3,0x39e3,0x39e3,0x39c3,0x31c3,0x31c3,0x31c3,0x31c3,0x31c3,0x31c3,0x31c3,0x2162,0x0100,0x1942,0x4205,0x5266,0x5266,0x5266,0x4a46,0x4a46,0x5286,0x5286,0x5286,0x5286,0x5286,0x5287,0x5287,0x5287,0x31c4,0x00e0,0x00e0,0x0100,0x0100,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00c0,0x00e0,0x00e0,0x00e0,0x0100,0x0901,0x0921,0x0921,0x0921,0x0941,0x4a66,0x6b2a,0x6b4a,0x6b4a,0x6b4a,0x734a,0x736a,0x736a,0x6b4a,0x5ae8,0x31e4,0x0941,0x0941,0x0941,0x0941,0x1962,0x4a67,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x6309,0x62e9,0x62e9,0x5ae8,0x5ae8,0x5ac8,0x5ae8,0x5ae8,0x5ac8,0x5ac8,0x6309,0x5ac8,0x31c4,0x4225,0x6308,0x52a7,0x1162,0x0941,0x0941,0x0941,0x0961,0x0961,0x0961,0x29c3,0x4245,0x4a66,0x4a66,0x4a65,0x4a45,0x4245,0x4225,0x4225,0x3a04,0x39e4,0x31c4,0x31a3,0x31a3,0x3183,0x3183,0x3183,0x31a3,0x31a3,0x31c3,0x39c3,0x39c4,0x39c4,0x39e4,0x39e3,0x39c3,0x39c3,0x39c3,0x39c3,0x31c3,0x31a3,0x31a3,0x31a2,0x3182,0x3182,0x3182,0x2982,0x2982,0x2962,0x3182,0x3182,0x3181,0x3181,0x31a1,0x31a1,0x31a1,0x31a1,0x31a1,0x3181,0x3181,0x3181,0x31a1,0x2140,0x00e0,0x00e0,0x00e0,0x00e0,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x2981,0x4a42,0x4a42,0x4a22,0x4a02,0x4201,0x41e1,0x41e1,0x39c1,0x39c1,0x39a1,0x39a1,0x3181,0x39a1,0x39a1,0x20e0,0x18e0,0x2920,0x2100,0x18c0,0x10a0,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0840,0x0840,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x0040,0x0060,0x10c0,0x39a1,0x4a22,0x5242,0x5262,0x5a82,0x62a3,0x62c3,0x62e3,0x6ae3,0x6b03,0x6b03,0x6b23,0x6b23,0x5aa3,0x2161,0x0100,0x0100,0x0100,0x0100,0x0100,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x3182,0x4a44,0x5264,0x5264,0x5285,0x5a85,0x5a85,0x5285,0x5265,0x5265,0x5265,0x5265,0x5285,0x5286,0x5266,0x31c4,0x00e0,0x00c0,0x08e0,0x08e0,0x08c0,0x08c0,0x08c0,0x1901,0x39c4,0x39c4,0x39c4,0x39c4,0x39c4,0x39c4,0x39c4,0x39a4,0x2122,0x00a0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x00e0,0x00e0,0x00e0,0x0900,0x39c5,0x5267,0x5267,0x5267,0x5267,0x5287,0x5287,0x5287,0x5287,0x5287,0x5287,0x31a4,0x0901,0x0101,0x0101,0x0901,0x1121,0x2983,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31c4,0x31a4,0x31a4,0x31a4,0x31a4,0x31a4,0x31a4,0x31a4,0x4a26,0x5287,0x4226,0x4a26,0x52a7,0x4205,0x1121,0x0100,0x0101,0x0901,0x0921,0x0921,0x0921,0x0921,0x0941,0x0941,0x0941,0x0941,0x0921,0x0921,0x0921,0x0901,0x0900,0x00e0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x2140,0x4a22,0x4a22,0x39c1,0x39a1,0x3181,0x3181,0x3161,0x3161,0x2940,0x2940,0x2940,0x2920,0x2920,0x2920,0x2940,0x20e0,0x10a0,0x20e0,0x20e0,0x1080,0x1060,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0840,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0040,0x18c0,0x3981,0x41c1,0x41e1,0x4a02,0x5222,0x5242,0x5a62,0x5a82,0x5a82,0x62a3,0x62a3,0x62c3,0x62c3,0x4202,0x08e0,0x00e0,0x00e0,0x00e0,0x00c0,0x00c0,0x00c0,0x00c0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x3162,0x41e3,0x4203,0x4a04,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a24,0x4a25,0x4a25,0x4a25,0x2942,0x00a0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0880,0x0080,0x0080,0x0080,0x0080,0x0880,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x0080,0x0080,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0060,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00c0,0x00c0,0x00c0,0x10e1,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x1902,0x2123,0x39e6,0x4226,0x2984,0x08e1,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x00c0,0x1902,0x31a4,0x4226,0x4226,0x39c4,0x1922,0x08e1,0x08e1,0x08e1,0x08e1,0x0901,0x0901,0x0901,0x0901,0x0901,0x0901,0x0921,0x0901,0x0901,0x0901,0x0901,0x08e1,0x08e0,0x08c0,0x08a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x00a0,0x0080,0x0080,0x0080,0x0080,0x0060,0x0060,0x0060,0x0060,0x0060,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x00a0,0x00a0,0x00a0,0x08a0,0x08c0,0x08c0,0x08c0,0x08c0,0x08a0,0x1900,0x39c1,0x41e1,0x2940,0x0080,0x0060,0x0060,0x0060,0x0040,0x0040,0x0040,0x0040,0x0040,0x0020,0x0020,0x0040,0x18a0,0x18e0,0x18c0,0x18a0,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1080,0x2900,0x2920,0x3140,0x3161,0x3981,0x39a1,0x39a1,0x41c1,0x41c1,0x41e1,0x41e2,0x41e1,0x41e2,0x2941,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0060,0x0060,0x0060,0x0060,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x2101,0x2942,0x3162,0x3162,0x3162,0x3162,0x3162,0x3162,0x3163,0x3163,0x3163,0x3183,0x3183,0x3183,0x3183,0x10c1,0x0060,0x0060,0x0060,0x0060,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0040,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0080,0x0080,0x0080,0x0080,0x0080,0x10c1,0x2964,0x3184,0x18e2,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0880,0x2943,0x2943,0x18e2,0x18c1,0x18e1,0x18e1,0x18e2,0x1902,0x1902,0x1902,0x1902,0x1922,0x1922,0x2122,0x2122,0x2122,0x2122,0x1922,0x1902,0x1902,0x18e1,0x10c1,0x10c1,0x10a1,0x10a1,0x10a1,0x10a1,0x10a0,0x10a0,0x10a1,0x10a1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10c1,0x10a0,0x10a0,0x10a0,0x10a0,0x1080,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x0880,0x1080,0x1080,0x1080,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10a0,0x10c0,0x18c0,0x18c0,0x18e0,0x18e0,0x18e0,0x18e0,0x18e0,0x2940,0x3161,0x2100,0x0040,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; diff --git a/MCUME_teensy/teensylogo/teensylogo.ino b/MCUME_teensy/teensylogo/teensylogo.ino new file mode 100644 index 0000000..8a4901c --- /dev/null +++ b/MCUME_teensy/teensylogo/teensylogo.ino @@ -0,0 +1,132 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "tft_t_dma.h" +#include "keyboard_osd.h" +#include +#include "mcume.h" + + + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); +static int xOffLogo=0; +static int swipeAngle=0; + +void setup() { + //emu_sndInit(); + + tft.begin(); + //emu_sndPlaySound(0, 255, 4000); + + emu_init(); +} + +static uint8_t col=0x00; + +void loop(void) +{ +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#else +// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2)) +// || (emu_ReadKeys() & MASK_KEY_USER4 ) ) +// { +// emu_printf((char*)"esc"); +// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004; +// while (true) { +// ; +// } +// } +#endif + + + + uint16_t bClick = emu_DebounceLocalKeys(); + if (menuActive()) { + int action = handleMenu(bClick); + char * filename = menuSelection(); + if (action == ACTION_RUNTFT) { + Serial.print("go"); + toggleMenu(false); + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.startDMA(); + + tft.drawRect(0,TFT_HEIGHT/2, TFT_WIDTH, TFT_HEIGHT/2, RGBVAL16(0x00,0x00,0x80)); + tft.drawText(0,TFT_HEIGHT/2, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawText(0,TFT_HEIGHT/2+16, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + tft.drawText(0,TFT_HEIGHT/2+24, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + tft.drawText(0,TFT_HEIGHT/2+32, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + tft.drawText(0,TFT_HEIGHT/2+40, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + tft.drawText(0,TFT_HEIGHT/2+48, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + tft.drawText(0,TFT_HEIGHT/2+56, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + tft.drawText(0,TFT_HEIGHT/2+64, "hello hello hello hello hello hello hell", RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), false); + } + else if (action == ACTION_RUNVGA) { + toggleMenu(false); + } + + delay(20); + } + else if (callibrationActive()) { + handleCallibration(bClick); + } + else { +#ifdef ILI9341_TOUCH + handleVirtualkeyboard(); +#endif + if ( (!virtualkeyboardIsActive()) ) { + delay(20); + //emu_printf("step"); + xOffLogo = 16*sin((2*3.14*swipeAngle)/256)+30; + swipeAngle = (swipeAngle + 4)&0xff; + tft.drawSprite(xOffLogo,10,(uint16_t*)logo); + if (bClick & MASK_JOY2_BTN) { + tft.stopDMA(); + emu_init(); + toggleMenu(true); + } + } + } +} + +#ifdef HAS_SND + +#include +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensylogo/tft_t_dma.cpp b/MCUME_teensy/teensylogo/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensylogo/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensylogo/tft_t_dma_config.h b/MCUME_teensy/teensylogo/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensylogo/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensync/.DS_Store b/MCUME_teensy/teensync/.DS_Store new file mode 100644 index 0000000..f7a8f99 Binary files /dev/null and b/MCUME_teensy/teensync/.DS_Store differ diff --git a/MCUME_teensy/teensync/bmpvbar.h b/MCUME_teensy/teensync/bmpvbar.h new file mode 100644 index 0000000..9de7f9a --- /dev/null +++ b/MCUME_teensy/teensync/bmpvbar.h @@ -0,0 +1,152 @@ +PROGMEM const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensync/emuapi.cpp b/MCUME_teensy/teensync/emuapi.cpp new file mode 100644 index 0000000..efac4e2 --- /dev/null +++ b/MCUME_teensy/teensync/emuapi.cpp @@ -0,0 +1,238 @@ +#include + +//extern "C" { + #include "emuapi.h" + #include "iopins.h" +//} + + +void emu_init(void) +{ + emu_InitJoysticks(); +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + + +void emu_InitJoysticks(void) { + + // Second Joystick +#ifdef PIN_JOY1_1 + pinMode(PIN_JOY1_1, INPUT_PULLUP); +#endif +#ifdef PIN_JOY1_2 + pinMode(PIN_JOY1_2, INPUT_PULLUP); +#endif +#ifdef PIN_JOY1_3 + pinMode(PIN_JOY1_3, INPUT_PULLUP); +#endif +#ifdef PIN_JOY1_4 + pinMode(PIN_JOY1_4, INPUT_PULLUP); +#endif +#ifdef PIN_JOY1_BTN + pinMode(PIN_JOY1_BTN, INPUT_PULLUP); +#endif + +#ifdef PIN_KEY_USER1 + pinMode(PIN_KEY_USER1, INPUT_PULLUP); +#endif +#ifdef PIN_KEY_USER2 + pinMode(PIN_KEY_USER2, INPUT_PULLUP); +#endif +#ifdef PIN_KEY_USER3 + pinMode(PIN_KEY_USER3, INPUT_PULLUP); +#endif +#ifdef PIN_KEY_USER4 + pinMode(PIN_KEY_USER4, INPUT_PULLUP); +#endif +#ifdef PIN_JOY2_BTN + pinMode(PIN_JOY2_BTN, INPUT_PULLUP); +#endif + analogReadResolution(12); + xRef=0; yRef=0; + for (int i=0; i<10; i++) { + xRef += analogRead(PIN_JOY2_A1X); + yRef += analogRead(PIN_JOY2_A2Y); + delay(20); + } + +#if INVX + xRef = 4095 -xRef/10; +#else + xRef /= 10; +#endif +#if INVY + yRef = 4095 -yRef/10; +#else + yRef /= 10; +#endif +} + + + + + diff --git a/MCUME_teensy/teensync/emuapi.h b/MCUME_teensy/teensync/emuapi.h new file mode 100644 index 0000000..a5b73ab --- /dev/null +++ b/MCUME_teensy/teensync/emuapi.h @@ -0,0 +1,51 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +//#define INVX 1 +//#define INVY 1 + + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); + + + +#endif + + + + diff --git a/MCUME_teensy/teensync/font8x8.h b/MCUME_teensy/teensync/font8x8.h new file mode 100644 index 0000000..2b2ab25 --- /dev/null +++ b/MCUME_teensy/teensync/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +PROGMEM const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensync/iopins.h b/MCUME_teensy/teensync/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensync/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensync/teensync.ino b/MCUME_teensy/teensync/teensync.ino new file mode 100644 index 0000000..b623893 --- /dev/null +++ b/MCUME_teensy/teensync/teensync.ino @@ -0,0 +1,460 @@ +#include "iopins.h" +#include "emuapi.h" + +#include "tft_t_dma.h" +#include "bmpvbar.h" +//#define USE_SD 1 +#ifdef USE_SD +#include +#endif +#include "uSDFS.h" + + +// Title: < > +#define TITLE " Teensy Norton Commander " + +#define MAX_PATHNAME_SIZE 128 +#define MAX_FILES 32 +#define MIN_FILENAME_SIZE 16 +#define MAX_FILENAME_SIZE 32 +#define MAX_MENULINES ((TEXT_HEIGHT == 16)?10:20) +#define TEXT_HEIGHT 8 +#define TEXT_WIDTH 8 +#define MENU_FILE_LXOFFSET 0 +#define MENU_FILE_RXOFFSET (TFT_WIDTH/2+2*8) +#define MENU_FILE_YOFFSET (3*TEXT_HEIGHT) +#define MENU_FILE_W (MIN_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_SBGCOLOR RGBVAL16(0x00,0x00,0xA0) +#define MENU_FILE_UBGCOLOR RGBVAL16(0x00,0x00,0x50) +#define MENU_VBAR_XOFFSET (TFT_WIDTH/2-3*8) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define LEFT_PANEL 0 +#define RIGHT_PANEL 1 + +#define CHUNK_SIZE 1024 + + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +static int SelectedPanel = LEFT_PANEL; + +#ifdef USE_SD +static char RIGHTpath[MAX_PATHNAME_SIZE]=""; +#else +const char RIGHTpath[MAX_PATHNAME_SIZE]={'1',':',0}; +#endif +static int RIGHTnbFiles=0; +static int RIGHTcurFile=0; +static int RIGHTtopFile=0; +static char RIGHTselection[MAX_FILENAME_SIZE+1]=""; +static char RIGHTfiles[MAX_FILES][MAX_FILENAME_SIZE]; + +const char LEFTpath[MAX_PATHNAME_SIZE]={'2',':',0}; +static FATFS fatfs; +static int LEFTnbFiles=0; +static int LEFTcurFile=0; +static int LEFTtopFile=0; +static char LEFTselection[MAX_FILENAME_SIZE+1]={0}; +static char LEFTfiles[MAX_FILES][MAX_FILENAME_SIZE]; + +static int RIGHTreadNbFiles(void) { + int totalFiles = 0; +#ifdef USE_SD + File dir; + File entry; + dir = SD.open(RIGHTpath); +#else + DIR dir; + FILINFO entry; + f_opendir(&dir, RIGHTpath); +#endif + while ( (true) && (totalFiles=RIGHTnbFiles) { + // no more files + break; + } + char filename[MAX_FILENAME_SIZE]; + strncpy(filename,&RIGHTfiles[fileIndex][0],MAX_FILENAME_SIZE); + if (fileIndex >= RIGHTtopFile) { + if ((i+RIGHTtopFile) < RIGHTnbFiles ) { + if ((i+RIGHTtopFile)==RIGHTcurFile) { + strcpy(RIGHTselection,filename); + if (strlen(filename) > MIN_FILENAME_SIZE) {filename[MIN_FILENAME_SIZE] = 0;} + tft.drawTextNoDma(MENU_FILE_RXOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), (TEXT_HEIGHT == 16)); + strcpy(newpath, RIGHTpath); + strcat(newpath, "/"); + strcat(newpath, RIGHTselection); + tft.drawRectNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H, TFT_WIDTH, 16, RGBVAL16(0x00,0x80,0x00)); +#ifdef USE_SD + File file = SD.open(newpath); + int fsize = (int)file.size(); + if ( file.isDirectory() ) { +#else + FILINFO entry; + f_stat(newpath, &entry); + int fsize = (int)entry.fsize; + if ( (entry.fattrib & AM_DIR) ) { +#endif + tft.drawTextNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H, "Dir", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0x00,0x80,0x00), true); + } + else { + tft.drawTextNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H, "File", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0x00,0x80,0x00), true); + tft.drawTextNoDma(5*8,MENU_FILE_YOFFSET+MENU_FILE_H, String(fsize).c_str(), RGBVAL16(0xff,0xff,0xff), RGBVAL16(0x00,0x80,0x00), true); + } + + } + else { + if (strlen(filename) > MIN_FILENAME_SIZE) {filename[MIN_FILENAME_SIZE] = 0;} + tft.drawTextNoDma(MENU_FILE_RXOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0xff), bgColor, (TEXT_HEIGHT == 16)); + } + } + i++; + } + fileIndex++; + } + } + + return(retval); +} + + + +static int LEFThandleMenu(uint16_t bClick, uint16_t bgColor, bool menuRedraw) +{ + char newpath[MAX_PATHNAME_SIZE]; + strcpy(newpath, LEFTpath); + strcat(newpath, "/"); + strcat(newpath, LEFTselection); + int retval = 0; + if (bClick & MASK_JOY2_BTN) { + FILINFO entry; + f_stat(newpath, &entry); + if ( (entry.fattrib & AM_DIR) ) { + strcpy(LEFTpath,newpath); + LEFTcurFile = 0; + LEFTnbFiles = LEFTreadNbFiles(); + } + else { + retval = 1; + } + menuRedraw=true; + } + else if (bClick & MASK_JOY2_UP) { + if (LEFTcurFile!=0) { + menuRedraw=true; + LEFTcurFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((LEFTcurFile<(LEFTnbFiles-1)) && (LEFTnbFiles)) { + LEFTcurFile++; + menuRedraw=true; + } + } + + if (menuRedraw && LEFTnbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_LXOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, bgColor); + if (LEFTcurFile <= (MAX_MENULINES/2-1)) LEFTtopFile=0; + else LEFTtopFile=LEFTcurFile-(MAX_MENULINES/2); +// if (LEFTcurFile <= (MAX_MENULINES-1)) LEFTtopFile=0; +// else LEFTtopFile=LEFTcurFile-(MAX_MENULINES/2); + + int i=0; + while (i=LEFTnbFiles) { + // no more files + break; + } + char filename[MAX_FILENAME_SIZE]; + strncpy(filename,&LEFTfiles[fileIndex][0],MAX_FILENAME_SIZE); + if (fileIndex >= LEFTtopFile) { + if ((i+LEFTtopFile) < LEFTnbFiles ) { + if ((i+LEFTtopFile)==LEFTcurFile) { + strcpy(LEFTselection,filename); + if (strlen(filename) > MIN_FILENAME_SIZE) {filename[MIN_FILENAME_SIZE] = 0;} + tft.drawTextNoDma(MENU_FILE_LXOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), (TEXT_HEIGHT == 16)); + strcpy(newpath, LEFTpath); + strcat(newpath, "/"); + strcat(newpath, LEFTselection); + tft.drawRectNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H, TFT_WIDTH, 16, RGBVAL16(0x00,0x80,0x00)); + FILINFO entry; + f_stat(newpath, &entry); + int fsize = (int)entry.fsize; + if ( (entry.fattrib & AM_DIR) ) { + tft.drawTextNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H, "Dir", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0x00,0x80,0x00), true); + } + else { + tft.drawTextNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H, "File", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0x00,0x80,0x00), true); + tft.drawTextNoDma(5*8,MENU_FILE_YOFFSET+MENU_FILE_H, String(fsize).c_str(), RGBVAL16(0xff,0xff,0xff), RGBVAL16(0x00,0x80,0x00), true); + } + } + else { + if (strlen(filename) > MIN_FILENAME_SIZE) {filename[MIN_FILENAME_SIZE] = 0;} + tft.drawTextNoDma(MENU_FILE_LXOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0xff), bgColor, (TEXT_HEIGHT == 16)); + } + } + i++; + } + fileIndex++; + } + } + + return(retval); +} + +// **************************************************** +// the setup() method runs once, when the sketch starts +// **************************************************** +void setup() { + tft.begin(); + + emu_init(); + Serial.begin(115200); + //while (!Serial) {} + +Serial.println("go"); + // mount FS +#ifdef USE_SD + if (!SD.begin(SD_CS)) { + emu_printf("SdFat.begin() for SD failed"); + } +#else + if(f_mount (&fatfs, RIGHTpath, 1)) { + emu_printf("f_mount() for RIGHT MSC failed"); + } +#endif +Serial.println("sd"); + if(f_mount (&fatfs, LEFTpath, 1)) { + emu_printf("f_mount() for LEFT MSC failed"); + } +Serial.println("usb"); + + // Read root dir + RIGHTnbFiles = RIGHTreadNbFiles(); + LEFTnbFiles = LEFTreadNbFiles(); + + // Init display + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + LEFThandleMenu(0,MENU_FILE_SBGCOLOR,true); + RIGHThandleMenu(0,MENU_FILE_UBGCOLOR,true); +} + + + +// **************************************************** +// the loop() method runs continuously +// **************************************************** +void loop(void) +{ + uint16_t bClick = emu_DebounceLocalKeys(); + if (bClick & MASK_JOY2_LEFT) { + SelectedPanel = LEFT_PANEL; + LEFThandleMenu(0,MENU_FILE_SBGCOLOR,true); + RIGHThandleMenu(0,MENU_FILE_UBGCOLOR,true); + } + else if (bClick & MASK_JOY2_RIGHT) { + SelectedPanel = RIGHT_PANEL; + LEFThandleMenu(0,MENU_FILE_UBGCOLOR,true); + RIGHThandleMenu(0,MENU_FILE_SBGCOLOR,true); + } + + if (SelectedPanel == LEFT_PANEL) { + int action = LEFThandleMenu(bClick,MENU_FILE_SBGCOLOR,false); + if (action) + { + char srcpath[MAX_PATHNAME_SIZE]; + strcpy(srcpath, LEFTpath); + strcat(srcpath, "/"); + strcat(srcpath, LEFTselection); + FILINFO entry; + f_stat(srcpath, &entry); + int filesize = (int)entry.fsize; + + char dstpath[MAX_PATHNAME_SIZE]; + strcpy(dstpath, RIGHTpath); + strcat(dstpath, "/"); + strcat(dstpath, LEFTselection); + emu_printf(srcpath); + emu_printf(dstpath); + if (filesize) { +#ifdef XXX + File file = SD.open(&dstpath[1], O_WRITE); + if (file) { + FIL fil; + if(!(f_open(&fil, srcpath, FA_READ)) { + int max=ILI9341_TFTWIDTH; + tft.drawRectNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H+16, ILI9341_TFTWIDTH, 16, RGBVAL16(0x00,0x00,0x00)); + unsigned char buffer[CHUNK_SIZE]; + int remaining = filesize; + int byteread = 0; + while (remaining >= CHUNK_SIZE) { + //int retval = file.read(buffer, CHUNK_SIZE); + unsigned int retval; + f_read (&fil, buffer, CHUNK_SIZE, &retval); + if (retval>0) { + //memcpy(buf,buffer,retval); + //buf += retval; + byteread += retval; + remaining -= retval; + tft.drawRectNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H+16, (ILI9341_TFTWIDTH*byteread)/filesize, 16, RGBVAL16(0xff,0x00,0x00)); + } + } + if (remaining) { + //int retval = file.read(buffer, remaining); + unsigned int retval; + f_read (&fil, buffer, remaining, &retval); + if (retval>0) { + //memcpy(buf,buffer,retval); + byteread += retval; + tft.drawRectNoDma(0,MENU_FILE_YOFFSET+MENU_FILE_H+16, (ILI9341_TFTWIDTH*byteread)/filesize, 16, RGBVAL16(0xff,0x00,0x00)); + } + } + + f_close(&fil); + RIGHTcurFile = 0; + RIGHTnbFiles = RIGHTreadNbFiles(); + RIGHThandleMenu(0,MENU_FILE_UBGCOLOR,true); + LEFThandleMenu(0,MENU_FILE_SBGCOLOR,true); + } + file.close(); + } + else { + emu_printf("failed opening RIGHT"); + } +#endif + } + } + } + else { + RIGHThandleMenu(bClick,MENU_FILE_SBGCOLOR,false); + } + + delay(20); +} + + + + + + + + diff --git a/MCUME_teensy/teensync/tft_t_dma.cpp b/MCUME_teensy/teensync/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensync/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensync/tft_t_dma_config.h b/MCUME_teensy/teensync/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensync/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensynofrendo/.DS_Store b/MCUME_teensy/teensynofrendo/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/MCUME_teensy/teensynofrendo/.DS_Store differ diff --git a/MCUME_teensy/teensynofrendo/AudioPlaySystem.cpp b/MCUME_teensy/teensynofrendo/AudioPlaySystem.cpp new file mode 100644 index 0000000..8fea18d --- /dev/null +++ b/MCUME_teensy/teensynofrendo/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensynofrendo/AudioPlaySystem.h b/MCUME_teensy/teensynofrendo/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensynofrendo/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensynofrendo/bitmap.c b/MCUME_teensy/teensynofrendo/bitmap.c new file mode 100644 index 0000000..f26a775 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/bitmap.c @@ -0,0 +1,152 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** bitmap.c +** +** Bitmap object manipulation routines +** $Id: bitmap.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include "noftypes.h" +#include "bitmap.h" + +// JMH this file had to be adapted for the ESP + + +#include "emuapi.h" + +void bmp_clear(const bitmap_t *bitmap, uint8 color) +{ + // + //memset(bitmap->data, color, bitmap->pitch * bitmap->height); +} + +static bitmap_t *_make_bitmap(uint8 *data_addr, bool hw, int width, + int height, int pitch, int overdraw) +{ + bitmap_t *bitmap; + int i; + + /* quick safety check */ + if (NULL == data_addr) + return NULL; + + /* Make sure to add in space for line pointers */ + bitmap = emu_Malloc(sizeof(bitmap_t) + (sizeof(uint8 *) * height)); + if (NULL == bitmap) + { + return NULL; + } + bitmap->hardware = hw; + bitmap->height = height; + bitmap->width = width; + bitmap->data = data_addr; + bitmap->pitch = pitch + (overdraw * 2); + + /* Set up line pointers */ + /* we want to make some 32-bit aligned adjustment + ** if we haven't been given a hardware bitmap + */ + //printf("setting up bitmap %d\n",(int)bitmap); + for (i = 0; i < height; i++) { + bitmap->line[i] = emu_LineBuffer(i); + } + + return bitmap; +} + +static char fb[1]; +/* Allocate and initialize a bitmap structure */ +bitmap_t *bmp_create(int width, int height, int overdraw) +{ +// uint8 *addr; +// int pitch; +// +// pitch = width + (overdraw * 2); /* left and right */ +// addr = malloc((pitch * height) + 3); /* add max 32-bit aligned adjustment */ +// if (NULL == addr) +// return NULL; +//printf("bmp_create\n"); + return _make_bitmap((uint8*)fb, false, width, height, width, overdraw); +} + + +/* allocate and initialize a hardware bitmap */ +bitmap_t *bmp_createhw(uint8 *addr, int width, int height, int pitch) +{ + return _make_bitmap(addr, true, width, height, pitch, 0); /* zero overdraw */ +} + +/* Deallocate space for a bitmap structure */ +void bmp_destroy(bitmap_t **bitmap) +{ + if (*bitmap) + { + free(*bitmap); + *bitmap = NULL; + } +} + +/* +** $Log: bitmap.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.16 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.15 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.14 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.13 2000/08/13 13:16:30 matt +** bugfix for alignment adjustment +** +** Revision 1.12 2000/07/24 04:31:43 matt +** pitch/data area on non-hw bitmaps get padded to 32-bit boundaries +** +** Revision 1.11 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.10 2000/07/09 14:43:01 matt +** pitch is now configurable for bmp_createhw() +** +** Revision 1.9 2000/07/06 17:55:57 matt +** two big bugs fixed +** +** Revision 1.8 2000/07/06 17:38:11 matt +** replaced missing string.h include +** +** Revision 1.7 2000/07/06 16:46:57 matt +** added bmp_clear() routine +** +** Revision 1.6 2000/06/26 04:56:24 matt +** minor cleanup +** +** Revision 1.5 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/bitmap.h b/MCUME_teensy/teensynofrendo/bitmap.h new file mode 100644 index 0000000..4e3ce7a --- /dev/null +++ b/MCUME_teensy/teensynofrendo/bitmap.h @@ -0,0 +1,93 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** bitmap.h +** +** Bitmap object defines / prototypes +** $Id: bitmap.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _BITMAP_H_ +#define _BITMAP_H_ + +#include "noftypes.h" + +/* a bitmap rectangle */ +typedef struct rect_s +{ + int16 x, y; + uint16 w, h; +} rect_t; + +typedef struct rgb_s +{ + int r, g, b; +} rgb_t; + +typedef struct bitmap_s +{ + int width, height, pitch; + bool hardware; /* is data a hardware region? */ + uint8 *data; /* protected */ + uint8 *line[ZERO_LENGTH]; /* will hold line pointers */ +} bitmap_t; + +extern void bmp_clear(const bitmap_t *bitmap, uint8 color); +extern bitmap_t *bmp_create(int width, int height, int overdraw); +extern bitmap_t *bmp_createhw(uint8 *addr, int width, int height, int pitch); +extern void bmp_destroy(bitmap_t **bitmap); + +#endif /* _BITMAP_H_ */ + +/* +** $Log: bitmap.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.12 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.11 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.10 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.9 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.8 2000/07/24 04:31:43 matt +** pitch/data area on non-hw bitmaps get padded to 32-bit boundaries +** +** Revision 1.7 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.6 2000/07/09 14:43:01 matt +** pitch is now configurable for bmp_createhw() +** +** Revision 1.5 2000/07/06 16:46:57 matt +** added bmp_clear() routine +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/bmpjoy.h b/MCUME_teensy/teensynofrendo/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensynofrendo/bmptft.h b/MCUME_teensy/teensynofrendo/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensynofrendo/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensynofrendo/bmpvbar.h b/MCUME_teensy/teensynofrendo/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensynofrendo/bmpvga.h b/MCUME_teensy/teensynofrendo/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensynofrendo/config.c b/MCUME_teensy/teensynofrendo/config.c new file mode 100644 index 0000000..806d41b --- /dev/null +++ b/MCUME_teensy/teensynofrendo/config.c @@ -0,0 +1,75 @@ +/* Nofrendo Configuration Braindead Sample Implementation +** +** $Id: config.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include +#include + +#include "noftypes.h" +#include "log.h" +#include "osd.h" +#include "nofconfig.h" +#include "version.h" + + +/* interface */ +config_t config = +{ + CONFIG_FILE +}; + +/* +** $Log: config.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.14 2000/11/05 06:23:10 matt +** realloc was incompatible with memguard +** +** Revision 1.13 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.12 2000/09/20 01:13:28 matt +** damn tabs +** +** Revision 1.11 2000/08/04 12:41:04 neil +** current not a bug +** +** Revision 1.10 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.9 2000/07/24 04:30:42 matt +** slight cleanup +** +** Revision 1.8 2000/07/23 15:16:08 matt +** changed strcasecmp to stricmp +** +** Revision 1.7 2000/07/19 15:58:55 neil +** config file now configurable (ha) +** +** Revision 1.6 2000/07/18 03:28:32 matt +** help me! I'm a complete mess! +** +** Revision 1.5 2000/07/12 11:03:08 neil +** Always write a config, even if no defaults are changed +** +** Revision 1.4 2000/07/11 15:09:30 matt +** suppressed all warnings +** +** Revision 1.3 2000/07/11 14:59:27 matt +** minor cosmetics.. =) +** +** Revision 1.2 2000/07/11 13:35:38 bsittler +** Changed the config API, implemented config file "nofrendo.cfg". The +** GGI drivers use the group [GGI]. Visual= and Mode= keys are understood. +** +** Revision 1.1 2000/07/11 09:21:10 bsittler +** This is a skeletal configuration system. +** +*/ diff --git a/MCUME_teensy/teensynofrendo/emuapi.cpp b/MCUME_teensy/teensynofrendo/emuapi.cpp new file mode 100644 index 0000000..1b702d8 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/emuapi.cpp @@ -0,0 +1,1045 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensynofrendo/emuapi.h b/MCUME_teensy/teensynofrendo/emuapi.h new file mode 100644 index 0000000..49d4072 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/emuapi.h @@ -0,0 +1,124 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define CUSTOM_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + + +// Title: < > +#define TITLE " NES Emulator " +#define ROMSDIR "nes" + +#define emu_Init(ROM) {nes_Start(ROM); nes_Init(); } +#define emu_Step(x) { nes_Step(); } +#define emu_Input(x) {} + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 12 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 104 +#define KEYBOARD_Y 78 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 21 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,40,40, + TAREA_END}; + +const unsigned short keys[] = { + 2,3}; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008}; +#endif + +#endif + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensynofrendo/event.c b/MCUME_teensy/teensynofrendo/event.c new file mode 100644 index 0000000..a6f8dcb --- /dev/null +++ b/MCUME_teensy/teensynofrendo/event.c @@ -0,0 +1,324 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** event.c +** +** OS-independent event handling +** $Id: event.c,v 1.3 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "event.h" +#include "nesinput.h" + + + +/* pointer to our current system's event handler table */ +static event_t *system_events = NULL; + +/* standard keyboard input */ +static nesinput_t kb_input = { INP_JOYPAD0, 0 }; +static nesinput_t kb_alt_input = { INP_JOYPAD1, 0 }; + + + +static void func_event_joypad1_a(int code) +{ + input_event(&kb_input, code, INP_PAD_A); +} + +static void func_event_joypad1_b(int code) +{ + input_event(&kb_input, code, INP_PAD_B); +} + +static void func_event_joypad1_start(int code) +{ + input_event(&kb_input, code, INP_PAD_START); +} + +static void func_event_joypad1_select(int code) +{ + input_event(&kb_input, code, INP_PAD_SELECT); +} + +static void func_event_joypad1_up(int code) +{ + input_event(&kb_input, code, INP_PAD_UP); +} + +static void func_event_joypad1_down(int code) +{ + input_event(&kb_input, code, INP_PAD_DOWN); +} + +static void func_event_joypad1_left(int code) +{ + input_event(&kb_input, code, INP_PAD_LEFT); +} + +static void func_event_joypad1_right(int code) +{ + input_event(&kb_input, code, INP_PAD_RIGHT); +} + +static void func_event_joypad2_a(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_A); +} + +static void func_event_joypad2_b(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_B); +} + +static void func_event_joypad2_start(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_START); +} + +static void func_event_joypad2_select(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_SELECT); +} + +static void func_event_joypad2_up(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_UP); +} + +static void func_event_joypad2_down(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_DOWN); +} + +static void func_event_joypad2_left(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_LEFT); +} + +static void func_event_joypad2_right(int code) +{ + input_event(&kb_alt_input, code, INP_PAD_RIGHT); +} + + + +/* NES events */ +static const event_t nes_events[] = +{ + NULL, /* 0 */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + /* saves */ + NULL, + NULL, /* 10 */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, /* 20 */ + /* GUI */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + /* sound */ + NULL, + NULL, /* 30 */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + /* picture */ + NULL, + NULL, + NULL, + NULL, /* 40 */ + NULL, + NULL, + NULL, + /* joypad 1 */ + func_event_joypad1_a, + func_event_joypad1_b, + func_event_joypad1_start, + func_event_joypad1_select, + func_event_joypad1_up, + func_event_joypad1_down, + func_event_joypad1_left, /* 50 */ + func_event_joypad1_right, + /* joypad 2 */ + func_event_joypad2_a, + func_event_joypad2_b, + func_event_joypad2_start, + func_event_joypad2_select, + func_event_joypad2_up, + func_event_joypad2_down, + func_event_joypad2_left, + func_event_joypad2_right, + /* NSF control */ + NULL, /* 60 */ + NULL, + NULL, + /* OS-specific */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, /* 70 */ + NULL, + /* last */ + NULL +}; +static event_t *event_system_table[NUM_SUPPORTED_SYSTEMS] = +{ + NULL, /* unknown */ + NULL, /* autodetect */ + nes_events, /* nes */ +}; + + + +void event_init(void) +{ + input_register(&kb_input); + input_register(&kb_alt_input); +} + +/* set up the event system for a certain console/system type */ +void event_set_system(system_t type) +{ + ASSERT(type < NUM_SUPPORTED_SYSTEMS); + + system_events = event_system_table[type]; +} + +void event_set(int index, event_t handler) +{ + /* now, event_set is used to set osd-specific events. We should assume + ** (for now, at least) that these events should be used across all + ** emulated systems, so let's loop through all system event handler + ** tables and add this event... + */ + int i; + + for (i = 0; i < NUM_SUPPORTED_SYSTEMS; i++) + { + if(event_system_table[i]) + { + event_system_table[i][index] = handler; + } + } +} + + +event_t event_get(int index) +{ + return system_events[index]; +} + + +/* +** $Log: event.c,v $ +** Revision 1.3 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.2 2001/04/27 11:10:08 neil +** compile +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.18 2000/11/25 20:26:05 matt +** removed fds "system" +** +** Revision 1.17 2000/11/09 14:05:42 matt +** state load fixed, state save mostly fixed +** +** Revision 1.16 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.15 2000/11/01 17:33:26 neil +** little crash bugs fixed +** +** Revision 1.14 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.13 2000/10/27 12:59:48 matt +** api change for ppu palette functions +** +** Revision 1.12 2000/10/26 22:48:05 matt +** no need for extern +** +** Revision 1.11 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.10 2000/10/23 17:50:46 matt +** adding fds support +** +** Revision 1.9 2000/10/23 15:52:04 matt +** better system handling +** +** Revision 1.8 2000/10/22 15:01:51 matt +** prevented palette changing in VS unisystem games +** +** Revision 1.7 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.6 2000/08/16 02:58:34 matt +** random cleanups +** +** Revision 1.5 2000/07/27 01:15:33 matt +** name changes +** +** Revision 1.4 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.3 2000/07/23 15:17:19 matt +** non-osd calls moved from osd.c to gui.c +** +** Revision 1.2 2000/07/21 12:07:40 neil +** added room in event_array for all osd events +** +** Revision 1.1 2000/07/21 04:26:38 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/event.h b/MCUME_teensy/teensynofrendo/event.h new file mode 100755 index 0000000..9710412 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/event.h @@ -0,0 +1,154 @@ +/* vim: set tabstop=3 expandtab: +** +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** event.h +** +** OS-independent event handling +** $Id: event.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _EVENT_H_ +#define _EVENT_H_ + +#include "nofrendo.h" + +enum +{ + event_none = 0, + event_quit, + event_insert, + event_eject, + event_togglepause, + event_soft_reset, + event_hard_reset, + event_snapshot, + event_toggle_frameskip, + /* saves */ + event_state_save, + event_state_load, + event_state_slot_0, + event_state_slot_1, + event_state_slot_2, + event_state_slot_3, + event_state_slot_4, + event_state_slot_5, + event_state_slot_6, + event_state_slot_7, + event_state_slot_8, + event_state_slot_9, + /* GUI */ + event_gui_toggle_oam, + event_gui_toggle_wave, + event_gui_toggle_pattern, + event_gui_pattern_color_up, + event_gui_pattern_color_down, + event_gui_toggle_fps, + event_gui_display_info, + event_gui_toggle, + /* sound */ + event_toggle_channel_0, + event_toggle_channel_1, + event_toggle_channel_2, + event_toggle_channel_3, + event_toggle_channel_4, + event_toggle_channel_5, + event_set_filter_0, + event_set_filter_1, + event_set_filter_2, + /* picture */ + event_toggle_sprites, + event_palette_hue_up, + event_palette_hue_down, + event_palette_tint_up, + event_palette_tint_down, + event_palette_set_default, + event_palette_set_shady, + /* joypad 1 */ + event_joypad1_a, + event_joypad1_b, + event_joypad1_start, + event_joypad1_select, + event_joypad1_up, + event_joypad1_down, + event_joypad1_left, + event_joypad1_right, + /* joypad 2 */ + event_joypad2_a, + event_joypad2_b, + event_joypad2_start, + event_joypad2_select, + event_joypad2_up, + event_joypad2_down, + event_joypad2_left, + event_joypad2_right, + /* NSF control */ + event_songup, + event_songdown, + event_startsong, + /* OS specific */ + event_osd_1, + event_osd_2, + event_osd_3, + event_osd_4, + event_osd_5, + event_osd_6, + event_osd_7, + event_osd_8, + event_osd_9, + /* last */ + event_last +}; + +typedef void (*event_t)(int code); + +extern void event_init(void); +extern void event_set(int index, event_t handler); +extern event_t event_get(int index); +extern void event_set_system(system_t type); + +#endif /* !_EVENT_H_ */ + +/* +** $Log: event.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.6 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.5 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.4 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.3 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.2 2000/07/21 04:27:40 matt +** don't mind me... +** +** Revision 1.1 2000/07/21 04:26:38 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/font8x8.h b/MCUME_teensy/teensynofrendo/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensynofrendo/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensynofrendo/iopins.h b/MCUME_teensy/teensynofrendo/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensynofrendo/keyboard_osd.h b/MCUME_teensy/teensynofrendo/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensynofrendo/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensynofrendo/libsnss.h b/MCUME_teensy/teensynofrendo/libsnss.h new file mode 100755 index 0000000..576227c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/libsnss.h @@ -0,0 +1,397 @@ +/**************************************************************************/ +/* + libsnss.h + + (C) 2000 The SNSS Group + See README.TXT file for license and terms of use. + + $Id: libsnss.h,v 1.1 2001/04/27 12:54:40 neil Exp $ +*/ +/**************************************************************************/ + +#ifndef _LIBSNSS_H_ +#define _LIBSNSS_H_ + +#include + +/**************************************************************************/ +/* endian customization */ +/**************************************************************************/ +/* + Endian-ness quick reference: + the number is: + $12345678 + the little-endian representation (e.g.: 6502, Intel x86) is: + 78 56 34 12 + the big-endian representation (e.g.: Motorola 68000) is: + 12 34 56 78 + the SNSS file format uses big-endian representation +*/ + +/* comment/uncomment depending on your processor architecture */ +/* commenting this out implies BIG ENDIAN */ +#define USE_LITTLE_ENDIAN + +/**************************************************************************/ +/* SNSS constants */ +/**************************************************************************/ + +typedef enum _SNSS_OPEN_MODES +{ + SNSS_OPEN_READ, + SNSS_OPEN_WRITE +} SNSS_OPEN_MODE; + +/* block types */ +typedef enum _SNSS_BLOCK_TYPES +{ + SNSS_BASR, + SNSS_VRAM, + SNSS_SRAM, + SNSS_MPRD, + SNSS_CNTR, + SNSS_SOUN, + SNSS_UNKNOWN_BLOCK +} SNSS_BLOCK_TYPE; + +/* function return types */ +typedef enum _SNSS_RETURN_CODES +{ + SNSS_OK, + SNSS_BAD_FILE_TAG, + SNSS_OPEN_FAILED, + SNSS_CLOSE_FAILED, + SNSS_READ_FAILED, + SNSS_WRITE_FAILED, + SNSS_OUT_OF_MEMORY, + SNSS_UNSUPPORTED_BLOCK +} SNSS_RETURN_CODE; + + +#define TAG_LENGTH 4 +#define SNSS_BLOCK_VERSION 1 + +/**************************************************************************/ +/* SNSS data structures */ +/**************************************************************************/ + +struct mapper1Data +{ + unsigned char registers[4]; + unsigned char latch; + unsigned char numberOfBits; +}; + +struct mapper4Data +{ + unsigned char irqCounter; + unsigned char irqLatchCounter; + unsigned char irqCounterEnabled; + unsigned char last8000Write; +}; + +struct mapper5Data +{ + unsigned char dummy; /* needed for some compilers; remove if any members are added */ +}; + +struct mapper6Data +{ + unsigned char irqCounter; + unsigned char irqLatchCounter; + unsigned char irqCounterEnabled; + unsigned char last43FEWrite; + unsigned char last4500Write; +}; + +struct mapper9Data +{ + unsigned char latch[2]; + unsigned char lastB000Write; + unsigned char lastC000Write; + unsigned char lastD000Write; + unsigned char lastE000Write; +}; + +struct mapper10Data +{ + unsigned char latch[2]; + unsigned char lastB000Write; + unsigned char lastC000Write; + unsigned char lastD000Write; + unsigned char lastE000Write; +}; + +struct mapper16Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper17Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper18Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper19Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper21Data +{ + unsigned char irqCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper24Data +{ + unsigned char irqCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper40Data +{ + unsigned char irqCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper69Data +{ + unsigned char irqCounterLowByte; + unsigned char irqCounterHighByte; + unsigned char irqCounterEnabled; +}; + +struct mapper90Data +{ + unsigned char irqCounter; + unsigned char irqLatchCounter; + unsigned char irqCounterEnabled; +}; + +struct mapper224Data +{ + unsigned char chrRamWriteable; +}; + +struct mapper225Data +{ + unsigned char prgSize; + unsigned char registers[4]; +}; + +struct mapper226Data +{ + unsigned char chrRamWriteable; +}; + +struct mapper228Data +{ + unsigned char prgChipSelected; +}; + +struct mapper230Data +{ + unsigned char numberOfResets; +}; + +typedef struct _SnssFileHeader +{ + char tag[TAG_LENGTH + 1]; + unsigned int numberOfBlocks; +} SnssFileHeader; + +/* this block appears before every block in the SNSS file */ +typedef struct _SnssBlockHeader +{ + char tag[TAG_LENGTH + 1]; + unsigned int blockVersion; + unsigned int blockLength; +} SnssBlockHeader; + +#define BASE_BLOCK_LENGTH 0x1931 +typedef struct _SnssBaseBlock +{ + unsigned char regA; + unsigned char regX; + unsigned char regY; + unsigned char regFlags; + unsigned char regStack; + unsigned short regPc; + unsigned char reg2000; + unsigned char reg2001; + unsigned char cpuRam[0x800]; + unsigned char spriteRam[0x100]; + unsigned char ppuRam[0x1000]; + unsigned char palette[0x20]; + unsigned char mirrorState[4]; + unsigned short vramAddress; + unsigned char spriteRamAddress; + unsigned char tileXOffset; +} SnssBaseBlock; + +#define VRAM_8K 0x2000 +#define VRAM_16K 0x4000 +typedef struct _SnssVramBlock +{ + unsigned short vramSize; + unsigned char vram[VRAM_16K]; +} SnssVramBlock; + +#define SRAM_1K 0x0400 +#define SRAM_2K 0x0800 +#define SRAM_3K 0x0C00 +#define SRAM_4K 0x1000 +#define SRAM_5K 0x1400 +#define SRAM_6K 0x1800 +#define SRAM_7K 0x1C00 +#define SRAM_8K 0x2000 +typedef struct _SnssSramBlock +{ + unsigned short sramSize; + unsigned char sramEnabled; + unsigned char sram[SRAM_8K]; +} SnssSramBlock; + +#define MAPPER_BLOCK_LENGTH 0x98 +typedef struct _SnssMapperBlock +{ + unsigned short prgPages[4]; + unsigned short chrPages[8]; + + union _extraData + { + unsigned char mapperData[128]; + struct mapper1Data mapper1; + struct mapper4Data mapper4; + struct mapper5Data mapper5; + struct mapper6Data mapper6; + struct mapper9Data mapper9; + struct mapper10Data mapper10; + struct mapper16Data mapper16; + struct mapper17Data mapper17; + struct mapper18Data mapper18; + struct mapper19Data mapper19; + struct mapper21Data mapper21; + struct mapper24Data mapper24; + struct mapper40Data mapper40; + struct mapper69Data mapper69; + struct mapper90Data mapper90; + struct mapper224Data mapper224; + struct mapper225Data mapper225; + struct mapper226Data mapper226; + struct mapper228Data mapper228; + struct mapper230Data mapper230; + } extraData; +} SnssMapperBlock; + +typedef struct _SnssControllersBlock +{ + unsigned char dummy; /* needed for some compilers; remove if any members are added */ +} SnssControllersBlock; + +#define SOUND_BLOCK_LENGTH 0x16 +typedef struct _SnssSoundBlock +{ + unsigned char soundRegisters[0x16]; +} SnssSoundBlock; + +/**************************************************************************/ +/* SNSS file manipulation functions */ +/**************************************************************************/ + +typedef struct _SNSS_FILE +{ + FILE *fp; + SNSS_OPEN_MODE mode; + SnssFileHeader headerBlock; + SnssBaseBlock baseBlock; + SnssVramBlock vramBlock; + SnssSramBlock sramBlock; + SnssMapperBlock mapperBlock; + SnssControllersBlock contBlock; + SnssSoundBlock soundBlock; +} SNSS_FILE; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* general file manipulation routines */ +SNSS_RETURN_CODE SNSS_OpenFile (SNSS_FILE **snssFile, const char *filename, + SNSS_OPEN_MODE mode); +SNSS_RETURN_CODE SNSS_CloseFile (SNSS_FILE **snssFile); + +/* block traversal */ +SNSS_RETURN_CODE SNSS_GetNextBlockType (SNSS_BLOCK_TYPE *blockType, + SNSS_FILE *snssFile); +SNSS_RETURN_CODE SNSS_SkipNextBlock (SNSS_FILE *snssFile); + +/* functions to read/write SNSS blocks */ +SNSS_RETURN_CODE SNSS_ReadBlock (SNSS_FILE *snssFile, SNSS_BLOCK_TYPE blockType); +SNSS_RETURN_CODE SNSS_WriteBlock (SNSS_FILE *snssFile, SNSS_BLOCK_TYPE blockType); + +/* support functions */ +const char *SNSS_GetErrorString (SNSS_RETURN_CODE code); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _LIBSNSS_H_ */ + +/* +** $Log: libsnss.h,v $ +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/09 14:07:41 matt +** minor update +** +** Revision 1.1 2000/10/24 12:19:01 matt +** changed directory structure +** +** Revision 1.9 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.8 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/07/15 23:49:14 matt +** fixed some typos in the mapper-specific data +** +** Revision 1.6 2000/07/09 15:37:21 matt +** all block read/write calls now pass through a common handler +** +** Revision 1.5 2000/07/09 03:39:06 matt +** minor modifications +** +** Revision 1.4 2000/07/08 16:01:39 matt +** added bald's changes, made error checking more robust +** +** Revision 1.3 2000/07/05 22:46:52 matt +** cleaned up header +** +** Revision 1.2 2000/07/04 04:46:06 matt +** simplified handling of SNSS states +** +** Revision 1.1 2000/06/29 14:13:28 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/log.c b/MCUME_teensy/teensynofrendo/log.c new file mode 100755 index 0000000..c75d482 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/log.c @@ -0,0 +1,121 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** log.c +** +** Error logging functions +** $Id: log.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include +#include "noftypes.h" +#include "log.h" + + +//static FILE *errorlog = NULL; +static int (*log_func)(const char *string) = NULL; + + +int log_init(void) +{ + return 0; +} + +void log_shutdown(void) +{ +} + +int log_print(const char *string) +{ + UNUSED(string); + + return 0; +} + +int log_printf(const char *format, ... ) +{ + UNUSED(format); + + return 0; /* should be number of chars written */ +} + +void log_chain_logfunc(int (*func)(const char *string)) +{ + log_func = func; +} + +void log_assert(int expr, int line, const char *file, char *msg) +{ + if (expr) + return; + + if (NULL != msg) + log_printf("ASSERT: line %d of %s, %s\n", line, file, msg); + else + log_printf("ASSERT: line %d of %s\n", line, file); + + //asm("break.n 1"); +// exit(-1); +} + + +/* +** $Log: log.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.14 2000/11/13 00:56:17 matt +** doesn't look as nasty now +** +** Revision 1.13 2000/11/06 02:15:07 matt +** more robust logging routines +** +** Revision 1.12 2000/10/15 13:28:12 matt +** need stdlib.h for exit() +** +** Revision 1.11 2000/10/10 13:13:13 matt +** dumb bug in log_chain_logfunc +** +** Revision 1.10 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.9 2000/08/28 01:47:10 matt +** quelled fricking compiler complaints +** +** Revision 1.8 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.7 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.6 2000/07/06 17:20:52 matt +** block manager space itself wasn't being freed - d'oh! +** +** Revision 1.5 2000/06/26 04:55:33 matt +** minor change +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/log.h b/MCUME_teensy/teensynofrendo/log.h new file mode 100755 index 0000000..58d93c7 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/log.h @@ -0,0 +1,57 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** log.h +** +** Error logging header file +** $Id: log.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $ +*/ + +#ifndef _LOG_H_ +#define _LOG_H_ + +#include + +extern int log_init(void); +extern void log_shutdown(void); +extern int log_print(const char *string); +extern int log_printf(const char *format, ...); +extern void log_chain_logfunc(int (*logfunc)(const char *string)); +extern void log_assert(int expr, int line, const char *file, char *msg); + +#endif /* _LOG_H_ */ + +/* +** $Log: log.h,v $ +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.7 2000/11/06 02:15:07 matt +** more robust logging routines +** +** Revision 1.6 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.5 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/logo.h b/MCUME_teensy/teensynofrendo/logo.h new file mode 100644 index 0000000..168c944 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/logo.h @@ -0,0 +1,125 @@ +const uint16_t logo[] PROGMEM = { +0x0140,0x007c,0x632c,0xbdd7,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xa514,0x2104, +0xbdf7,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xdefb,0x9cd3, +0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xd69a,0xbdf7, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0xce59,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce59,0xce79,0xd69a,0xad75,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0xb596,0xce79,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xce79,0xce79,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0x8410,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x8410,0x6b6d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x94b2,0xce79,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd6ba,0xa514,0x0000,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0841,0x2124,0x9492,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x8c71,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0000,0x18c3,0xbdd7,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd6ba,0x7bef,0x0000,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8430,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x8c51,0x9cf3,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x9cd3,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x94b2,0x94b2,0x9cd3,0x94b2,0x9cf3,0x8430,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b4d,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x8c51,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1800,0x1800,0x0000,0x0000,0x0000,0x0000,0x1800,0x1800,0x0800,0x1000,0x1800,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x2965,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x2945,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5000,0x8041,0x7061,0x0020,0x0000,0x0000,0x2800,0x7020,0x8061,0x4041,0x6820,0x8841,0x8061,0x1020,0x0000,0x0800,0x0000,0x0000,0x1000,0x1000,0x0800,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1000,0x0000,0x8020,0xa061,0x7082,0x0000,0x0800,0x0800,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x8410,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x7bef,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x9000,0xd000,0xd061,0x90c3,0x0000,0x0000,0x4800,0xc800,0xd861,0x7882,0x9800,0xd800,0xc082,0x2061,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x7020,0x8861,0x3861,0x0000,0x0800,0x1000,0x0000,0x0000,0x0000,0x0800,0x1000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0x0000,0x0000,0x0000,0xb000,0xe000,0xa0a2,0x0000,0x2000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x7bcf,0xa514,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xa514,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xc000,0xc8a2,0x68a2,0x0000,0x4800,0xc000,0xd041,0x7882,0x0000,0x3000,0x2820,0x0800,0x0800,0x0820,0x0020,0x2800,0x5820,0x5841,0x2041,0x0000,0x4800,0x8020,0xc800,0xd820,0xa0a2,0x6841,0x1820,0x0000,0x0000,0x5820,0x5021,0x0020,0x0000,0x1000,0x0800,0x0020,0x0000,0x3800,0x6020,0x5041,0x0020,0x0000,0x0800,0x0000,0x3000,0x6020,0x5020,0xa800,0xd000,0x98a2,0x0000,0x0000,0x3800,0x6020,0x5820,0x0020,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x8c71,0x9cf3,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd800,0xa882,0x7800,0xc8c3,0x1061,0x4000,0xc000,0xd041,0x7882,0x8800,0xc041,0xa882,0x3041,0xa820,0xc061,0x9881,0x8000,0xb820,0xd021,0xc0a2,0x4882,0x5800,0x9800,0xc000,0xc800,0xa841,0x8041,0x0020,0x7800,0xb820,0x8020,0x9021,0xb0a2,0x5082,0x4000,0xb820,0xb861,0x9061,0x8800,0xc020,0xd041,0xb0c3,0x2861,0x0000,0x9000,0xc020,0x9841,0x7020,0xb800,0xd000,0x98a2,0x0000,0xa000,0xc020,0x8821,0x9840,0xb882,0x70a2,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xb082,0x0020,0xa800,0xb0e3,0x0841,0xc000,0xd041,0x7082,0xa800,0xe000,0xc082,0x3061,0xc000,0xd800,0xa861,0x0000,0x3800,0xb800,0xd820,0x98c3,0x0000,0x0000,0xb800,0xd820,0x7082,0x0000,0x5800,0xd000,0xc861,0x4861,0x7000,0xd800,0xc0c3,0x5861,0xc800,0xd820,0x8861,0x0000,0x5800,0xc800,0xd861,0x70a2,0x6800,0xd800,0xc861,0x0841,0x0000,0xb000,0xd800,0x90a2,0x7800,0xe000,0xa861,0x0000,0x3000,0xc800,0xc8a2,0x4082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x528a,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x630c,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xb082,0x0020,0x3000,0xc061,0xa082,0xc000,0xd041,0x7882,0x9800,0xd000,0xb882,0x3061,0xb800,0xd020,0x88a2,0x0000,0x0000,0xb000,0xd000,0xa082,0x0000,0x3000,0xb800,0xd820,0x80a2,0x0000,0x8800,0xd000,0xb841,0x9841,0x9000,0x8800,0x9020,0x6041,0xc000,0xd061,0x6882,0x0000,0x4000,0xc000,0xd041,0x7082,0x9800,0xd800,0xb882,0x1041,0x0000,0xa800,0xd800,0x90a2,0x9800,0xd800,0x9882,0x0020,0x3800,0xb800,0xd040,0x78a2,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0xad55,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0x9cf3,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd000,0xb082,0x0020,0x0000,0x6000,0xd000,0xc800,0xd041,0x7882,0xa000,0xd800,0xc082,0x3061,0xb800,0xd020,0x90a2,0x0000,0x1800,0xb000,0xd800,0xa0a2,0x0000,0x2800,0xb800,0xd820,0x78a2,0x0000,0x7000,0xd800,0xb8a2,0x0020,0x0000,0x9820,0x9882,0x5020,0xc800,0xd061,0x7082,0x0000,0x4000,0xc000,0xd041,0x6882,0x8800,0xd800,0xc082,0x0061,0x0000,0xa800,0xd800,0x90a2,0x8000,0xe000,0xa0a2,0x0020,0x2800,0xc000,0xd041,0x5861,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x8c51,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x8800,0xd800,0xb882,0x0040,0x1800,0x0000,0x8800,0xd000,0xd041,0x7882,0xa000,0xd800,0xc082,0x3861,0xb800,0xd820,0x90a2,0x0000,0x1000,0xb000,0xd800,0xa0a2,0x0000,0x3000,0xb800,0xd820,0x80a2,0x0000,0x0000,0x9800,0xc882,0x7082,0x8800,0xd000,0x9041,0x4800,0xc800,0xd061,0x7882,0x0000,0x4800,0xc800,0xd841,0x7882,0x0000,0xb000,0xd061,0x88a2,0x6000,0xc000,0xd800,0x98a2,0x0000,0xa800,0xc082,0x6882,0x9000,0xc800,0x8820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce79,0xce59,0xce59,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xce59,0xce79,0xce59,0xce59,0xce59,0xd6ba,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5000,0x8000,0x6820,0x0000,0x0800,0x0000,0x1000,0x7000,0x8000,0x4820,0x5800,0x8000,0x7020,0x2000,0x6800,0x8000,0x5820,0x0000,0x0800,0x6800,0x8000,0x6020,0x0000,0x1800,0x6800,0x8000,0x4820,0x0000,0x0000,0x0000,0x5000,0x7820,0x7800,0x4800,0x0000,0x3000,0x7000,0x7800,0x4020,0x0000,0x2800,0x7000,0x8000,0x4820,0x0000,0x1000,0x6800,0x8020,0x7000,0x7000,0x7800,0x6020,0x0000,0x0000,0x5800,0x8020,0x7800,0x3800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce79,0xce59,0xbdd7,0xa514,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c51,0x8c51,0x9cf3,0xbdd7,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xd69a,0xce59,0x9492,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x2965,0x73ae,0xb596,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1800,0x1000,0x0000,0x0000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0800,0x1800,0x1000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x1000,0x1800,0x1000,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x0000,0x0800,0x1000,0x1000,0x0800,0x0000,0x0000,0x1000,0x1000,0x0800,0x0000,0x0000,0x1000,0x1800,0x0800,0x0000,0x0000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0800,0x0000,0x0000,0x0800,0x1000,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce59,0x9492,0x0000,0x0000,0x2965,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4a49,0x8c51,0x8c71,0x2104,0x7bef,0xc618,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xce59,0x9cd3,0x0000,0x0000,0x10a2,0x2945,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x3186,0x31a6,0x8430,0xc638,0x8410,0x39c7,0xb5b6,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xbdd7,0x5aeb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4a49,0xad75,0x9492,0x18e3,0xad55,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cf3,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8410,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad75,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x5aeb,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x528a,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4a69,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x4a49,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x1082,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x2124,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0841,0x39e7,0x39c7,0x2104,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x18c3,0x4a69,0x4228,0x3186,0x18e3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x18e3,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x1082,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x10a2,0x52aa,0x528a,0x4208,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x39e7,0x9492,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x8c51,0x31a6,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x4a69,0x5aeb,0x4a49,0x31a6,0x2104,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x8410,0xa514,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0xa514,0x7bef,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x2124,0x5aeb,0x52aa,0x39e7,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cd3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x4228,0x3186,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cd3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cf3,0x8c31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1082,0x738e,0x7bef,0x7bcf,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x73ae,0xad75,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x2124,0x2104,0x1082,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd69a,0xb596,0x738e,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bef,0x630c,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd2,0x9cd3,0x94f3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94d3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cf3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94f4,0x94f3,0x9cf3,0x9cf3,0x94f3,0x9cd3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cf3,0x94f3,0x94f3,0x9cd3,0x94f3,0x9cf3,0x9cf3,0x9cf3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x94d3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0xa534,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xce79,0xce59,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xce59,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0x94b2,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x94d3,0xa430,0xb2eb,0xb2eb,0xb2eb,0xb2aa,0xa430,0xa451,0xb2eb,0xb2eb,0xb2cb,0xb28a,0xa410,0xab8e,0xa471,0x94f3,0x9cd3,0x9cd3,0x94d3,0xabcf,0xb2cb,0xb2eb,0xb2aa,0xb2cb,0x9c92,0xabcf,0xb28a,0xb2cb,0xb2aa,0xb2eb,0x9c31,0xaaeb,0xb2aa,0xbaeb,0xb2aa,0xb2cb,0xa492,0x94d3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0xabcf,0xb2cb,0xb2eb,0xb2cb,0xb2eb,0xa430,0xaaeb,0xb2aa,0xbaeb,0xb2aa,0xb2cb,0xa471,0xab8e,0xb2cb,0xb2eb,0xb2eb,0xac30,0x9c51,0xbaab,0xb2eb,0xb2eb,0xb2eb,0xac30,0xa3ef,0xb269,0xb2eb,0xbaeb,0xb28a,0xab8e,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x632c,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xd6ba,0x528a,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x94d3,0xb104,0xba08,0xab6d,0xab2c,0xabaf,0x9492,0xb986,0xba49,0xab6d,0xa3cf,0xa3ef,0x9c51,0xb924,0xac10,0x94f3,0x9cb2,0x9cf3,0x9471,0xc000,0xb2eb,0xa36d,0xa3ef,0xa430,0x9c30,0xc061,0xabae,0x9c10,0xa3ef,0xa3f0,0x9c71,0x9c30,0x9bae,0xc000,0xab8e,0x9c10,0x9c92,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cf3,0x9471,0xc000,0xb2eb,0xab4d,0xab2c,0xa3ef,0x9c92,0x9c30,0x9bae,0xc000,0xb36d,0x9c51,0xa36d,0xc061,0xab4c,0xab6d,0xaa8a,0xc208,0xab0c,0xc081,0xab4d,0xab6d,0xaaaa,0xc186,0xa451,0x9c30,0xaa49,0xc1c7,0x9c10,0xa431,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xc638,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8430,0x18e3,0x9cd3,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc618,0xce59,0xce79,0xce79,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9c10,0xab0c,0xab2c,0xab2c,0xbaaa,0xabf0,0xb186,0xba8a,0xab2c,0xa4b2,0x9555,0x8cf3,0xb965,0xac71,0x9534,0x94f3,0x9534,0x9451,0xc000,0xb2ec,0xab6d,0x9cf3,0x9575,0x9430,0xc124,0x9d14,0x9534,0x9534,0x9534,0x94f3,0x9d14,0x94b2,0xb945,0xa492,0x9534,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94d3,0x9bcf,0xab0c,0xab2c,0xab0c,0xbaaa,0xa492,0x9534,0x94b2,0xb925,0xac71,0x8d55,0xa38d,0xc0a2,0xb2eb,0xb2eb,0xb269,0xc228,0xab0c,0xc124,0xb2eb,0xaacb,0xb945,0xbacb,0x9cf3,0x9554,0xa34c,0xbacb,0x9534,0x94f3,0x9cd3,0x9cd2,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce59,0xce59,0xce59,0xbdf7,0x9cf3,0x8410,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x8410,0x8c51,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0xa514,0x94b2,0x0000,0x5aeb,0x7bef,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x7bcf,0x738e,0x73ae,0x94b2,0xbdd7,0xce59,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x94d3,0xa3ae,0xb2ab,0xb2ca,0xaacb,0xb800,0xabae,0xa2ca,0xb9e7,0xaacb,0xb2cb,0xb2cb,0xa410,0xb1c7,0xba69,0xb30c,0xb2eb,0xb2ec,0xa3ef,0xb1e7,0xb269,0xaacb,0xb2cb,0xb30c,0x9c50,0xb1c7,0xba8a,0xb2eb,0xb2cb,0xb2eb,0xa492,0x9cf3,0x9471,0xb882,0xa451,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb2,0xab4d,0xb2aa,0xb2cb,0xaa8a,0xc000,0xa451,0x94f3,0x9471,0xb861,0xac51,0x9514,0xa36d,0xb9e8,0x94d3,0x94f3,0x9451,0xb9e7,0xaaeb,0xba28,0x94d3,0x94d3,0x9bcf,0xb9a6,0x9cb2,0x9514,0xa2ec,0xba6a,0x94f3,0x9cb2,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xd69a,0xce79,0x9cd3,0x4228,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0xa514,0x528a,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x39e7,0x4a49,0x2945,0x73ae,0xb5b6,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9c10,0xa3ef,0xa3ef,0xa3ef,0xa430,0x94f3,0x94b2,0x9c10,0xa3ef,0xa3ef,0xa3cf,0xa471,0x9c51,0xa3ef,0xa3ef,0xa3ef,0xa3cf,0x9c71,0x9492,0xa3ef,0xa3ef,0xa3ef,0xa3ef,0x9cb2,0x9492,0xa3ef,0xa3ef,0xa3ef,0xa3ef,0x9cb2,0x9cd3,0x9cb3,0x9c50,0x9cb2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb2,0xa3ef,0xa3ef,0xa3ef,0xa3ef,0x9c71,0x9cd3,0x9cd3,0x94b3,0x9c30,0x9cb2,0x9cd3,0x9c92,0x9c51,0x9cd3,0x9cd3,0x9cb2,0x9c51,0x9c71,0x9c51,0x9cd3,0x9cd3,0x9cd3,0x9c30,0x9cb3,0x94d3,0x9c71,0x9c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce59,0xce79,0xce59,0x94b2,0x0000,0x0000,0x2124,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x7bcf,0x6b6d,0x4228,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x5aeb,0xa514,0x9492,0x0861,0x8c71,0xce59,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cf3,0x94f3,0x94f3,0x94f3,0x9cf3,0x9cd3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cf3,0x9cf3,0x94f3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cd3,0x94f3,0x94f3,0x94f3,0x94f4,0x9cd3,0x9cd2,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94f3,0x94f4,0x94f3,0x94f3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x9cd3,0x94f3,0x9cd3,0x9cd3,0x9cd3,0x94f3,0x9cd3,0x9cd3,0x9cf3,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xa514,0x2104,0x0000,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x31a6,0x9cd3,0xc638,0x5acb,0x630c,0xc618,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cb3,0x9cd3,0x9cb3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xc618,0x7bcf,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x632c,0xad75,0x738e,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x8430,0xa514,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0xa514,0x8410,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x18e3,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x52aa,0x9cf3,0x6b4d,0x4a49,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0x94b2,0xa514,0x9cf3,0x9cf3,0x9cf3,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa4f4,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9d14,0xa513,0x9cf4,0x9cf3,0x9cf3,0x9d14,0x9d13,0x9cf3,0x9cf3,0xa514,0x9cf3,0xa513,0x9cf3,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x9cf3,0xa514,0x9492,0x4208,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x2965,0x2104,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x2945,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x39e7,0x31a6,0x2945,0x2104,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0x4a49,0x39e7,0x31a6,0x2945,0x2104,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x3186,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x3186,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x528a,0x4228,0x39e7,0x31a6,0x2945,0x18e3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x2965,0x2124,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x4a49,0xb596,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xbdd7,0x52aa,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x9cd3,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xc638,0x8c51,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x39c7,0x4208,0x2945,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x52aa,0x5acb,0x528a,0x4a49,0x39e7,0x3186,0x2124,0x18c3,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x4228,0x31a6,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0xad55,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xdedb,0xc618,0x0861,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xdedb,0x6b6d,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x4a49,0x4a69,0x39c7,0x2124,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x630c,0x5aeb,0x52aa,0x528a,0x4228,0x39e7,0x3186,0x2104,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0x528a,0x4208,0x3186,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x39e7,0x7bcf,0x8410,0x7bef,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x7bef,0x8410,0x7bef,0x4208,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x94b2,0xd69a,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0020,0x0000,0x4a69,0x5acb,0x4228,0x31a6,0x18e3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x630c,0x632c,0x5aeb,0x52aa,0x4a69,0x4228,0x39c7,0x2965,0x18e3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x5aeb,0x4a69,0x39e7,0x2945,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4228,0xb5b6,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xdedb,0xce79,0x630c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xd679,0xd679,0xce59,0xc638,0xbdf8,0xbdf7,0xbe17,0xc638,0xce79,0xd69a,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xd679,0xce79,0xc638,0xbe18,0xbdf7,0xbdf7,0xc638,0xce59,0xd69a,0xd679,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0020,0x0000,0x39c7,0x630c,0x4a69,0x39e7,0x2945,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0x6b6d,0x630c,0x5aeb,0x52aa,0x4a49,0x39e7,0x3186,0x2124,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x5acb,0x5acb,0x4228,0x3186,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x8c51,0xc638,0xc638,0xb5b6,0xad55,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad55,0xb596,0xdedb,0xb5b6,0x0000,0x1082,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xb5f7,0x9534,0x8430,0x7b4d,0x7acb,0x72aa,0x6aeb,0x634d,0x7410,0x9d14,0xc618,0xd69a,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xc638,0xa575,0x8c72,0x7bae,0x7b0c,0x72aa,0x6acb,0x632c,0x6bcf,0x8cb2,0xbdd7,0xce79,0xce7a,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x4a69,0x5acb,0x4228,0x2965,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x738e,0x6b4d,0x630c,0x5acb,0x528a,0x4228,0x39c7,0x2945,0x18e3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x5aeb,0x4a69,0x39c7,0x2124,0x0861,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xd69a,0xb5b6,0x9492,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8410,0x8c51,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xc618,0x94d3,0x8aeb,0xb8e3,0xe000,0xf020,0xf124,0xf1c7,0xf249,0xe2aa,0xbacb,0x8269,0x42cb,0x94d3,0xce38,0xd67a,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xa575,0x83ae,0xa9a6,0xd800,0xf000,0xf0c3,0xf1a6,0xf228,0xea8a,0xcacb,0x9a8a,0x4a69,0x7410,0xbdd7,0xd679,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x4228,0x31a6,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x738e,0x6b6d,0x632c,0x5aeb,0x52aa,0x4a49,0x39e7,0x3186,0x2104,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x39e7,0x2965,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xd69a,0xb5b6,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0x94b2,0x7bcf,0x8410,0xc618,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xb596,0x7b4d,0xa800,0xe800,0xf800,0xf082,0xe8a2,0xd8a2,0xd0c3,0xd904,0xd9c7,0xf2cb,0xfbcf,0xdc10,0x728a,0x532c,0xbdb6,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xc618,0x8c51,0x9145,0xd000,0xf800,0xf061,0xe8a2,0xe0a2,0xd8c3,0xd104,0xd986,0xea69,0xfb8e,0xec30,0xa34d,0x3a28,0x9cf3,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x18e3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x52aa,0x73ae,0x632c,0x630c,0x5acb,0x4a69,0x4208,0x31a6,0x2945,0x18c3,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cf3,0x632c,0x4a69,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdedb,0xd69a,0xc638,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xc618,0xad55,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xa534,0x71e7,0xb800,0xf020,0xf861,0xe820,0xd800,0xd000,0xc800,0xc000,0xb800,0xb000,0xa800,0xb820,0xeb0c,0xfcd3,0xb3ef,0x3208,0xb575,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce59,0xce79,0xce79,0xbdd7,0x7b6d,0x9000,0xe000,0xf882,0xe841,0xd820,0xd800,0xd000,0xc000,0xb800,0xb000,0xa800,0xb000,0xda48,0xfc71,0xdcb2,0x49c7,0x8c71,0xce79,0xce79,0xce59,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x632c,0x6b6d,0x630c,0x5acb,0x528a,0x4228,0x39c7,0x2965,0x2104,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x9cd3,0x632c,0x528a,0xbdd7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd699,0xce59,0xce79,0xce59,0xce79,0xce59,0xa534,0x5145,0xb800,0xf8a2,0xf820,0xf000,0xe800,0xe800,0xe000,0xd000,0xc800,0xc000,0xb820,0xb041,0xa800,0x9800,0xc145,0xfcf3,0xc492,0x29e7,0xb5b6,0xce79,0xce59,0xce59,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce79,0xce79,0xce79,0xbdd7,0x630b,0x9000,0xe882,0xf861,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc000,0xb820,0xb040,0xa820,0x9800,0xb000,0xfc0f,0xed55,0x5208,0x9492,0xce79,0xce59,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b4d,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x632c,0x6b4d,0x5aeb,0x528a,0x4a49,0x39e7,0x3186,0x2124,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4a69,0x8410,0x52aa,0x630c,0xbdf7,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xce79,0xce79,0xce79,0xad75,0x41c7,0xa800,0xf8e3,0xf841,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xc000,0xb800,0xb000,0xa882,0x9800,0xb000,0xfd34,0xb451,0x4aca,0xc638,0xce79,0xce59,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xce79,0xc618,0x738e,0x7000,0xe8c3,0xf881,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xc000,0xb800,0xb000,0xa861,0xa041,0xa000,0xf410,0xed75,0x31c7,0xad55,0xd69a,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xbdd7,0x6b6d,0x10a2,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0020,0x0000,0x0000,0x0020,0x0000,0x18c3,0x528a,0x5aeb,0x52aa,0x4a49,0x39e7,0x3186,0x2124,0x18c3,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x2104,0x31a6,0x39e7,0x8430,0xc638,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce99,0xce59,0xce59,0xce79,0xc5f8,0x632c,0x7800,0xf0e3,0xf8a2,0xf881,0xf841,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xb800,0xb000,0xa800,0xa882,0x9800,0xb904,0xfd96,0x7b4d,0x8451,0xd679,0xce59,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce59,0x9492,0x3800,0xd882,0xf8c3,0xf882,0xf841,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xc000,0xb000,0xa800,0xa820,0xa082,0xa000,0xfcd3,0xc4d3,0x428a,0xc638,0xce79,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xc618,0x8430,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x2965,0x4208,0x4228,0x4208,0x31a6,0x2945,0x18e3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x7bcf,0xad75,0xce59,0xce79,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xb596,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9492,0x94b2,0xa514,0xc618,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xbdf7,0xa534,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9492,0x9cd3,0xb596,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd699,0xce59,0xce59,0xce59,0x94b2,0x2800,0xd082,0xf904,0xf8c3,0xf8a2,0xf881,0xf820,0xf800,0xf800,0xe800,0xe800,0xe000,0xd800,0xd000,0xc000,0xb800,0xb000,0xa800,0xa0c3,0x9000,0xdb6d,0xe555,0x3228,0xbdd7,0xce79,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce79,0xb596,0x3a08,0xa000,0xf924,0xf8e3,0xf8a2,0xf882,0xf841,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc000,0xb800,0xb000,0xa800,0xa861,0x9800,0xc104,0xfd96,0x730c,0x94b2,0xd69a,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce59,0xb596,0x7bef,0x5acb,0x4a49,0x4228,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x18c3,0x18c3,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x4a49,0x2945,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x5acb,0x8c51,0xad55,0xb5b6,0xc638,0xce79,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xc618,0x8430,0x4208,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x4a49,0x528a,0x630c,0xad55,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad55,0x630c,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x39e7,0x528a,0x528a,0x8430,0xc638,0xce79,0xce59,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd67a,0xce59,0xce79,0xbdd7,0x52cb,0x8000,0xf944,0xf944,0xf904,0xf8c3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe800,0xe800,0xe000,0xd000,0xc800,0xc000,0xb000,0xa800,0xa800,0x9841,0xa000,0xf534,0x93ae,0x8471,0xd69a,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce38,0x8c51,0x3800,0xe104,0xf945,0xf904,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe800,0xe800,0xe000,0xd800,0xc800,0xc000,0xb800,0xb000,0xa800,0xa0a2,0x9000,0xec10,0xccf3,0x4acb,0xce39,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x7bcf,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xad75,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xa534,0xad55,0x8c71,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x7bef,0x5aeb,0x528a,0x9cf3,0xad55,0xa534,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xbdd7,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xd69a,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce59,0xce79,0xbdf7,0x6b6d,0x0000,0x0000,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x39c7,0x6b6d,0x7bcf,0x4a49,0xad75,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0x9cf3,0x2965,0x0000,0x0841,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x528a,0x7bef,0x5aeb,0x7bcf,0xc638,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xce59,0xa514,0x10c3,0xc061,0xf986,0xf965,0xf924,0xf903,0xf8c3,0xf882,0xf841,0xf800,0xf800,0xf000,0xf000,0xe800,0xd800,0xd000,0xc800,0xb800,0xb000,0xa800,0xa082,0x9000,0xe3cf,0xccd2,0x530c,0xce59,0xce79,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xbdd7,0x52cb,0x8000,0xf986,0xf965,0xf924,0xf904,0xf8c3,0xf882,0xf861,0xf800,0xf800,0xf000,0xe800,0xe800,0xe000,0xd000,0xc800,0xc000,0xb000,0xa800,0xa841,0x9000,0xc1e7,0xf555,0x4a69,0xb596,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x73ae,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xad75,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x9492,0x7bef,0x3186,0xad75,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0x6b6d,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xc618,0x7bcf,0x0000,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0x8430,0x630c,0xc638,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xad55,0x3186,0x0000,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39e7,0x9492,0x5acb,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xc638,0x8c30,0x3000,0xe144,0xf9c7,0xf986,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf800,0xf000,0xf000,0xe800,0xd800,0xd000,0xc000,0xb800,0xb000,0xa841,0x9800,0xc228,0xecf3,0x528a,0xbdd7,0xce99,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xad55,0x2145,0xb082,0xf9c7,0xf986,0xf965,0xf924,0xf903,0xf8a3,0xf882,0xf820,0xf800,0xf800,0xf000,0xf000,0xe800,0xe000,0xd000,0xc800,0xb800,0xb000,0xa800,0x9820,0xa800,0xf4d3,0x936d,0x94b2,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xc618,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa514,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xce79,0xd69a,0xce79,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xce79,0xa534,0x2104,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x8c71,0x5aeb,0xa534,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xc618,0x738e,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x630c,0x8430,0x6b4d,0xce59,0xce79,0xce59,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd679,0xce59,0xc618,0x738e,0x5000,0xf1a6,0xf9e7,0xf9a6,0xf986,0xf945,0xf904,0xf8c3,0xf882,0xf841,0xf800,0xf800,0xf800,0xf000,0xf000,0xe000,0xd800,0xc800,0xc000,0xb800,0xa820,0xa000,0xb0c3,0xf4b2,0x62aa,0xad75,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0x9cd3,0x1000,0xc925,0xfa08,0xf9c6,0xf986,0xf945,0xf924,0xf8e3,0xf8a2,0xf861,0xf800,0xf800,0xf800,0xf800,0xf000,0xe000,0xd800,0xc800,0xc000,0xb800,0xb000,0xa061,0x9800,0xf410,0xbbcf,0x7410,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b6d,0xb5b6,0xc618,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xc638,0xce79,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xce79,0xce59,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0xbdf7,0x73ae,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xce59,0x8430,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b4d,0x6b6d,0x8c71,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xb596,0x4a49,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x8410,0x5aeb,0xbdf7,0xce79,0xce59,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce99,0xce79,0xbdd7,0x5b0c,0x6800,0xf1e7,0xfa28,0xf9c7,0xf9a6,0xf965,0xf924,0xf8e3,0xf8a2,0xf841,0xf800,0xf800,0xf800,0xf800,0xf000,0xe800,0xd800,0xd000,0xc000,0xb800,0xb000,0xa020,0xa800,0xec71,0x72aa,0xa534,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xc638,0x8c71,0x2000,0xd986,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd000,0xc800,0xb800,0xb000,0xa861,0x9800,0xf38e,0xc3ef,0x6bcf,0xd679,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x18e3,0xa514,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd69a,0xa534,0x0841,0x39e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x0861,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xc638,0x7bef,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x52aa,0x5aeb,0x8c71,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xad75,0x39c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x6b6d,0x5aeb,0xbdf7,0xce79,0xce59,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce79,0xbdd7,0x5aeb,0x6800,0xf228,0xfa49,0xfa07,0xf9c7,0xf986,0xf945,0xf904,0xf8a2,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd000,0xc800,0xc000,0xb800,0xa800,0xb000,0xec10,0x7a8a,0xa534,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xc638,0x8c51,0x2000,0xd9a6,0xfa69,0xfa08,0xf9e7,0xf986,0xf945,0xf904,0xf8c3,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xc800,0xc000,0xb800,0xb041,0xa000,0xf36d,0xc3ae,0x6bcf,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9cf3,0xd69a,0xce59,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce59,0xce79,0xc638,0x8c51,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a69,0x4a69,0xa514,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xb596,0x528a,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x52aa,0x6b6d,0xc638,0xce79,0xce59,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd679,0xce79,0xbdf7,0x632c,0x5800,0xf208,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8c3,0xf861,0xf820,0xf800,0xf800,0xf800,0xf000,0xe800,0xe000,0xd800,0xc800,0xc000,0xb800,0xb000,0xb800,0xebcf,0x7269,0xad75,0xd69a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xc639,0x9471,0x1000,0xc9a6,0xfa8a,0xfa28,0xfa08,0xf9c7,0xf986,0xf924,0xf8e3,0xf882,0xf841,0xf820,0xf800,0xf800,0xf800,0xe800,0xe000,0xd800,0xd000,0xc800,0xb800,0xb041,0xa800,0xf34d,0xc32c,0x7410,0xd679,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x10a2,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x18e3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18e3,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce59,0xa534,0x39c7,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x18c3,0x3186,0x632c,0xbdf7,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xc618,0x7bcf,0x0000,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x2945,0x39e7,0x9cd3,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce99,0xce59,0xc618,0x73ae,0x3800,0xe1e7,0xfa8a,0xfa49,0xfa28,0xf9e7,0xf986,0xf945,0xf904,0xf8a2,0xf841,0xf820,0xf820,0xf800,0xf800,0xe800,0xe000,0xd800,0xd000,0xc800,0xc020,0xb000,0xc925,0xf36d,0x628a,0xbdd7,0xd67a,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0x9cd3,0x0000,0xb945,0xfa8a,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf904,0xf8c2,0xf861,0xf841,0xf820,0xf800,0xf800,0xf000,0xe000,0xd800,0xd000,0xc800,0xc000,0xb820,0xb000,0xf34c,0xaaaa,0x8cb2,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x2965,0x2965,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xc618,0x8430,0x0000,0x0000,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0000,0x0000,0x52aa,0xad55,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad55,0x52aa,0x0000,0x0000,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0020,0x0000,0x18c3,0x8410,0xc618,0xce79,0xce59,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xc638,0x8c71,0x0000,0xc165,0xfaaa,0xfa69,0xfa49,0xfa08,0xf9c7,0xf986,0xf924,0xf8e3,0xf882,0xf861,0xf841,0xf820,0xf800,0xf000,0xe800,0xe000,0xd000,0xc800,0xc020,0xb800,0xe1e7,0xdacb,0x634d,0xc638,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xad55,0x31e7,0x9000,0xfa8a,0xfa8a,0xfa49,0xfa28,0xf9e7,0xf986,0xf945,0xf8e3,0xf8a2,0xf861,0xf841,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc800,0xb800,0xc8a2,0xfb0c,0x7249,0xad75,0xd69a,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x10a2,0x4228,0x39e7,0x2945,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0x8c51,0x39e7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x73ae,0xad75,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xc638,0xad55,0x632c,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x528a,0x94b2,0xc618,0xce79,0xce59,0xce79,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce9a,0xce59,0xce59,0xa534,0x29a6,0x8800,0xfa69,0xfa8a,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf904,0xf8c3,0xf882,0xf861,0xf841,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xc820,0xc000,0xf269,0xaa08,0x8492,0xd679,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xbdd7,0x6b4d,0x4000,0xea28,0xfaaa,0xfa69,0xfa49,0xfa08,0xf9c7,0xf985,0xf924,0xf8e3,0xf8a2,0xf861,0xf841,0xf800,0xf800,0xe800,0xe000,0xd800,0xd000,0xc820,0xc000,0xe9a6,0xe269,0x634c,0xc638,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x18c3,0x52aa,0x4a49,0x39c7,0x2124,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xc638,0xad75,0x94b2,0x8430,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8430,0x94b2,0xb596,0xc638,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xa514,0x8c51,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8410,0x8c51,0xa514,0xbdf7,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xad75,0x73ae,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce7a,0xce59,0xce79,0xbdd7,0x736d,0x2000,0xd9c7,0xfaaa,0xfa69,0xfa49,0xfa28,0xf9e7,0xf9a6,0xf945,0xf904,0xf8c3,0xf882,0xf841,0xf800,0xf800,0xe800,0xe000,0xd800,0xd800,0xc800,0xd8e3,0xf208,0x6a8a,0xb5d7,0xd679,0xce59,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xc638,0x94b2,0x0041,0xa924,0xfa8a,0xfa6a,0xfa49,0xfa28,0xf9e7,0xf9a6,0xf965,0xf904,0xf8c3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe000,0xe000,0xd800,0xc800,0xd000,0xfa08,0xa1a6,0x8cd3,0xd679,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0861,0x52aa,0x52aa,0x4208,0x3186,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd679,0xce59,0xce79,0xce58,0x9cf3,0x2945,0x8000,0xfa49,0xfa8a,0xfa49,0xfa28,0xfa08,0xf9c7,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xf965,0xb924,0x7c92,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce59,0xb5b6,0x62eb,0x3800,0xe208,0xfaaa,0xfa49,0xfa49,0xfa08,0xf9c7,0xf986,0xf945,0xf903,0xf8c3,0xf882,0xf841,0xf800,0xf000,0xe800,0xe000,0xd800,0xd000,0xf124,0xe104,0x632c,0xbe18,0xce79,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0020,0x0000,0x4208,0x630c,0x4a69,0x39c7,0x2104,0x0841,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd67a,0xce59,0xce59,0xce79,0xbdf7,0x83ef,0x0000,0xa8e4,0xfa69,0xfa89,0xfa48,0xfa08,0xf9e7,0xf9a6,0xf945,0xf904,0xf8c3,0xf882,0xf841,0xf800,0xf000,0xe800,0xe000,0xd820,0xf8c3,0xe000,0x6b6d,0xbe18,0xce79,0xce59,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce39,0x9cf3,0x3165,0x7000,0xf228,0xfa8a,0xfa49,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8e3,0xf882,0xf841,0xf800,0xf800,0xf000,0xe000,0xd800,0xf0c2,0xf800,0x89e7,0xa555,0xd679,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x4a69,0x52aa,0x4208,0x2965,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xad75,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce9a,0xce59,0xce79,0xce79,0xce59,0xb5b6,0x6b2c,0x0000,0xb104,0xfa49,0xfa69,0xfa28,0xf9e7,0xf9a6,0xf965,0xf924,0xf8e3,0xf8a2,0xf861,0xf800,0xf800,0xf000,0xe841,0xf882,0xe800,0x82cb,0xadb6,0xd679,0xce59,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xc618,0x8c51,0x1000,0x7800,0xea08,0xfa69,0xfa28,0xfa07,0xf9c7,0xf986,0xf945,0xf903,0xf8a2,0xf861,0xf820,0xf800,0xf000,0xe820,0xf082,0xf800,0xa945,0x8cd3,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x39e7,0x2965,0x18c3,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xb596,0x7bcf,0x8410,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xad75,0x6b2c,0x0000,0x9000,0xe9c7,0xfa28,0xfa08,0xf9c7,0xf986,0xf945,0xf904,0xf8c3,0xf881,0xf840,0xf841,0xf882,0xe800,0xd000,0x830c,0xad96,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xbdf7,0x8c30,0x18a2,0x6000,0xd1a6,0xfa28,0xfa08,0xf9e7,0xf9a6,0xf965,0xf924,0xf8c3,0xf882,0xf841,0xf820,0xf882,0xf020,0xe000,0x99e7,0x8cd3,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x94b2,0x8410,0x2104,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd6ba,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xbdf7,0x8430,0x8410,0xc638,0xc638,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce59,0xce59,0xce59,0xb596,0x83cf,0x1904,0x4800,0xa8a2,0xe186,0xf9c7,0xf9a6,0xf986,0xf945,0xf904,0xf8e3,0xf082,0xe000,0xc000,0x9986,0x8410,0xb5d7,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xce59,0xce79,0xce59,0xbdf7,0x94b2,0x4a49,0x0000,0x9000,0xd165,0xf1a7,0xf9a7,0xf986,0xf945,0xf924,0xf8e3,0xf8a2,0xe800,0xc800,0xa800,0x834d,0xa555,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x9492,0x7bef,0x2945,0xa534,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9492,0xce59,0xdedb,0xdefb,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xad75,0x9492,0xc638,0xc638,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xa4f3,0x6b4d,0x10e3,0x3800,0x7000,0x9800,0xa800,0xb000,0xa800,0x9800,0x8000,0x79a6,0x83cf,0xa575,0xc638,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce59,0xc638,0xad75,0x83ef,0x31e7,0x1000,0x6000,0x9000,0xa800,0xb000,0xb000,0xa000,0x8800,0x7882,0x832c,0x9cf3,0xbe17,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xad55,0x4a69,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x73ae,0x630c,0x4228,0xad75,0xce79,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c71,0xc638,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce59,0xbdd7,0xce79,0xc618,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xbdf7,0xad34,0x8c51,0x6b6d,0x52cb,0x4a8a,0x4a8a,0x5b0c,0x7bcf,0x9cd3,0xb5b7,0xc659,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce79,0xce59,0xc618,0xb596,0x94b2,0x73ae,0x5b0c,0x4a8a,0x4a89,0x52cb,0x6b6d,0x8c71,0xad75,0xc618,0xce79,0xce79,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xad75,0x52aa,0x0861,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0020,0x0861,0x31a6,0x73ae,0xbdd7,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x738e,0xb5b6,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xdedb,0xa534,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xc638,0xc5f7,0xbdf7,0xbdf7,0xc638,0xce59,0xce79,0xce79,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xc638,0xc618,0xbdf7,0xbdf7,0xc618,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce59,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce79,0xbdf7,0x7bcf,0x31a6,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x7bef,0xad55,0xc638,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x7bef,0xa534,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xb596,0xbdd7,0xad55,0x39c7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0xbdf7,0xce79,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce59,0xce59,0xd69a,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce79,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xd6ba,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cf3,0xd69a,0xce59,0xce59,0xb596,0x8410,0x6b4d,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x6b4d,0x9492,0xb5b6,0xbdf7,0xc638,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x3186,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0xad75,0xd6ba,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xce79,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x8410,0xd69a,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x8c51,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x9cf3,0xd69a,0xce59,0xce79,0xce59,0xc618,0xbdd7,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xb5b6,0xbdf7,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x5acb,0xbdf7,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0x8c71,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0xa534,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xd69a,0xb5b6,0x10a2,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x9cd3,0xd69a,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0x9cf3,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x39c7,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b6d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x5acb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x630c,0x6b6d,0x6b4d,0x6b6d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x6b6d,0x6b4d,0x18e3,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x632c,0xce59,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x6b6d,0xad55,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0xad75,0x7bcf,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0082,0x0082,0x0082,0x0082,0x0082,0x00a2,0x0082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0082,0x0082,0x0082,0x0082,0x0082,0x0082,0x00a2,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x6b4d,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x9020,0xb841,0xb841,0xb841,0xb841,0xb841,0xb861,0x90a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0xa000,0xb841,0xb841,0xb841,0xb841,0xb861,0x98a2,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0000,0x0841,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x6b6d,0xa514,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0x9cf3,0xa514,0x632c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xb800,0xc820,0x8800,0x8800,0x8800,0x8800,0x9800,0xd061,0x90c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xa800,0xd000,0x9000,0x8800,0x8800,0x8800,0x9000,0xd040,0xa8c3,0x0020,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x8c71,0x9cf3,0x94b2,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x94b2,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xb000,0xb0a2,0x0041,0x0020,0x0020,0x0020,0x2000,0xc000,0xa882,0x0020,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc000,0xa8a2,0x0041,0x0020,0x0020,0x0020,0x0020,0xb000,0xc082,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb000,0xd020,0xc041,0xc820,0xc841,0xc041,0xc800,0xd021,0x6862,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb800,0xc820,0xc041,0xc040,0xc040,0xc041,0xc020,0xd000,0xb882,0x1041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xb000,0xb841,0x6800,0x7000,0x7000,0x6800,0x7000,0xc820,0x98c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb800,0xb841,0x7000,0x7800,0x7800,0x7800,0x7000,0xb800,0xb882,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18c3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8430,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb800,0xb8a2,0x3061,0x4820,0x4841,0x4041,0x6000,0xd000,0xa881,0x0000,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc000,0xb0a2,0x0020,0x0000,0x0000,0x0000,0x0000,0xb000,0xc0a2,0x0041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce59,0xce59,0xd69a,0x7bef,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x18e3,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xa000,0xc800,0xc820,0xc820,0xc820,0xc820,0xc800,0xb000,0x4000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb000,0xa082,0x0000,0x1800,0x1800,0x1800,0x0000,0xa800,0xb061,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0xa534,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd6ba,0x8c51,0x0000,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0020,0x2104,0x8c71,0x9cf3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cd3,0x9cf3,0x8c51,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0062,0x3082,0x5061,0x5061,0x5061,0x5061,0x5061,0x4861,0x0061,0x0061,0x1061,0x0862,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0061,0x3861,0x3061,0x0062,0x1061,0x0861,0x1061,0x0061,0x3061,0x3861,0x0061,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x1082,0x0000,0xad75,0xd69a,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce59,0xd69a,0xbdf7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8c51,0x9cd3,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x94b2,0x9cd3,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x73ae,0xce59,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce59,0xd6ba,0xbdf7,0x73ae,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x632c,0xa514,0xad75,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad55,0xad75,0x9cf3,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x62ec,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630b,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x62ec,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x632c,0x9cd3,0xce59,0xce79,0xce59,0xce59,0xd69a,0xc618, +0xce79,0xce79,0xce79,0xce79,0xce59,0xd69a,0xd6ba,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0xce59,0xce79,0xce59,0xd69a,0xc618, +0xce79,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce79,0xce79,0xce59,0xce79,0xc618, +0xce59,0xce79,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xce59,0xd6ba,0xbdd7, +0x8c71,0xce59,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xd69a,0xce79,0x738e, +0x0000,0x632c,0x8c51,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c71,0x8c51,0x8c71,0x8c51,0x5acb,0x0000}; diff --git a/MCUME_teensy/teensynofrendo/map000.c b/MCUME_teensy/teensynofrendo/map000.c new file mode 100644 index 0000000..f5ab3cc --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map000.c @@ -0,0 +1,63 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map0.c +** +** mapper 0 interface +** $Id: map000.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +const mapintf_t map0_intf = +{ + 0, /* mapper number */ + "None", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + NULL, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map000.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map001.c b/MCUME_teensy/teensynofrendo/map001.c new file mode 100644 index 0000000..af6be33 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map001.c @@ -0,0 +1,242 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map1.c +** +** mapper 1 interface +** $Id: map001.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* TODO: WRAM enable ala Mark Knibbs: + ================================== +The SNROM board uses 8K CHR-RAM. The CHR-RAM is paged (i.e. it can be split +into two 4Kbyte pages). + +The CRA16 line of the MMC1 is connected to the /CS1 pin of the WRAM. THIS MEANS +THAT THE WRAM CAN BE ENABLED OR DISABLED ACCORDING TO THE STATE OF THE CRA16 +LINE. The CRA16 line corresponds to bit 4 of MMC1 registers 1 & 2. + +The WRAM is enabled when the CRA16 line is low, and disabled when CRA16 is +high. This has implications when CHR page size is 4K, if the two page numbers +set have different CRA16 states (e.g. reg 1 bit 4 = 0, reg 2 bit 4 = 1). Then +the WRAM will be enabled and disabled depending on what CHR address is being +accessed. + +When CHR page size is 8K, bit 4 of MMC1 register 1 (and not register 2, because +page size is 8K) controls whether the WRAM is enabled or not. It must be low +to be enabled. When the WRAM is disabled, reading from and writing to it will +not be possible. +*/ + +/* TODO: roll this into something... */ +static int bitcount = 0; +static uint8 latch = 0; +static uint8 regs[4]; +static int bank_select; +static uint8 lastreg; + +static void map1_write(uint32 address, uint8 value) +{ + int regnum = (address >> 13) - 4; + + if (value & 0x80) + { + regs[0] |= 0x0C; + bitcount = 0; + latch = 0; + return; + } + + if (lastreg != regnum) + { + bitcount = 0; + latch = 0; + lastreg = regnum; + } + //lastreg = regnum; + + latch |= ((value & 1) << bitcount++); + + /* 5 bit registers */ + if (5 != bitcount) + return; + + regs[regnum] = latch; + value = latch; + bitcount = 0; + latch = 0; + + switch (regnum) + { + case 0: + { + if (0 == (value & 2)) + { + int mirror = value & 1; + ppu_mirror(mirror, mirror, mirror, mirror); + } + else + { + if (value & 1) + ppu_mirror(0, 0, 1, 1); + else + ppu_mirror(0, 1, 0, 1); + } + } + break; + + case 1: + if (regs[0] & 0x10) + mmc_bankvrom(4, 0x0000, value); + else + mmc_bankvrom(8, 0x0000, value >> 1); + break; + + case 2: + if (regs[0] & 0x10) + mmc_bankvrom(4, 0x1000, value); + break; + + case 3: + if (mmc_getinfo()->rom_banks == 0x20) + { + bank_select = (regs[1] & 0x10) ? 0 : 0x10; + } + else if (mmc_getinfo()->rom_banks == 0x40) + { + if (regs[0] & 0x10) + bank_select = (regs[1] & 0x10) | ((regs[2] & 0x10) << 1); + else + bank_select = (regs[1] & 0x10) << 1; + } + else + { + bank_select = 0; + } + + if (0 == (regs[0] & 0x08)) + mmc_bankrom(32, 0x8000, ((regs[3] >> 1) + (bank_select >> 1))); + else if (regs[0] & 0x04) + mmc_bankrom(16, 0x8000, ((regs[3] & 0xF) + bank_select)); + else + mmc_bankrom(16, 0xC000, ((regs[3] & 0xF) + bank_select)); + + default: + break; + } +} + +static void map1_init(void) +{ + bitcount = 0; + latch = 0; + + memset(regs, 0, sizeof(regs)); + + if (mmc_getinfo()->rom_banks == 0x20) + mmc_bankrom(16, 0xC000, 0x0F); + + map1_write(0x8000, 0x80); +} + +static void map1_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper1.registers[0] = regs[0]; + state->extraData.mapper1.registers[1] = regs[1]; + state->extraData.mapper1.registers[2] = regs[2]; + state->extraData.mapper1.registers[3] = regs[3]; + state->extraData.mapper1.latch = latch; + state->extraData.mapper1.numberOfBits = bitcount; +} + + +static void map1_setstate(SnssMapperBlock *state) +{ + regs[1] = state->extraData.mapper1.registers[0]; + regs[1] = state->extraData.mapper1.registers[1]; + regs[2] = state->extraData.mapper1.registers[2]; + regs[3] = state->extraData.mapper1.registers[3]; + latch = state->extraData.mapper1.latch; + bitcount = state->extraData.mapper1.numberOfBits; +} + +static map_memwrite map1_memwrite[] = +{ + { 0x8000, 0xFFFF, map1_write }, + { -1, -1, NULL } +}; + +const mapintf_t map1_intf = +{ + 1, /* mapper number */ + "MMC1", /* mapper name */ + map1_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map1_getstate, /* get state (snss) */ + map1_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map1_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map001.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:46:50 matt +** mirroring bugfix +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map002.c b/MCUME_teensy/teensynofrendo/map002.c new file mode 100644 index 0000000..73f9dfd --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map002.c @@ -0,0 +1,86 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map2.c +** +** mapper 2 interface +** $Id: map002.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 2: UNROM */ +static void map2_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, value); +} + +static const map_memwrite map2_memwrite[] = +{ + { 0x8000, 0xFFFF, map2_write }, + { -1, -1, NULL } +}; + +const mapintf_t map2_intf = +{ + 2, /* mapper number */ + "UNROM", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map2_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map002.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map003.c b/MCUME_teensy/teensynofrendo/map003.c new file mode 100644 index 0000000..2a37c57 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map003.c @@ -0,0 +1,85 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map3.c +** +** mapper 3 interface +** $Id: map003.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 3: CNROM */ +static void map3_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankvrom(8, 0x0000, value); +} + +static const map_memwrite map3_memwrite[] = +{ + { 0x8000, 0xFFFF, map3_write }, + { -1, -1, NULL } +}; + +const mapintf_t map3_intf = +{ + 3, /* mapper number */ + "CNROM", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map3_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map003.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map004.c b/MCUME_teensy/teensynofrendo/map004.c new file mode 100644 index 0000000..6587b91 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map004.c @@ -0,0 +1,269 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map4.c +** +** mapper 4 interface +** $Id: map004.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" + +static struct +{ + int counter, latch; + bool enabled, reset; +} irq; + +static uint8 reg; +static uint8 command; +static uint16 vrombase; + +/* mapper 4: MMC3 */ +static void map4_write(uint32 address, uint8 value) +{ + switch (address & 0xE001) + { + case 0x8000: + command = value; + vrombase = (command & 0x80) ? 0x1000 : 0x0000; + + if (reg != (value & 0x40)) + { + if (value & 0x40) + mmc_bankrom(8, 0x8000, (mmc_getinfo()->rom_banks * 2) - 2); + else + mmc_bankrom(8, 0xC000, (mmc_getinfo()->rom_banks * 2) - 2); + } + reg = value & 0x40; + break; + + case 0x8001: + switch (command & 0x07) + { + case 0: + value &= 0xFE; + mmc_bankvrom(1, vrombase ^ 0x0000, value); + mmc_bankvrom(1, vrombase ^ 0x0400, value + 1); + break; + + case 1: + value &= 0xFE; + mmc_bankvrom(1, vrombase ^ 0x0800, value); + mmc_bankvrom(1, vrombase ^ 0x0C00, value + 1); + break; + + case 2: + mmc_bankvrom(1, vrombase ^ 0x1000, value); + break; + + case 3: + mmc_bankvrom(1, vrombase ^ 0x1400, value); + break; + + case 4: + mmc_bankvrom(1, vrombase ^ 0x1800, value); + break; + + case 5: + mmc_bankvrom(1, vrombase ^ 0x1C00, value); + break; + + case 6: + mmc_bankrom(8, (command & 0x40) ? 0xC000 : 0x8000, value); + break; + + case 7: + mmc_bankrom(8, 0xA000, value); + break; + } + break; + + case 0xA000: + /* four screen mirroring crap */ + if (0 == (mmc_getinfo()->flags & ROM_FLAG_FOURSCREEN)) + { + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + } + break; + + case 0xA001: + /* Save RAM enable / disable */ + /* Messes up Startropics I/II if implemented -- bah */ + break; + + case 0xC000: + irq.latch = value; +// if (irq.reset) +// irq.counter = irq.latch; + break; + + case 0xC001: + irq.reset = true; + irq.counter = irq.latch; + break; + + case 0xE000: + irq.enabled = false; +// if (irq.reset) +// irq.counter = irq.latch; + break; + + case 0xE001: + irq.enabled = true; +// if (irq.reset) +// irq.counter = irq.latch; + break; + + default: + break; + } + + if (true == irq.reset) + irq.counter = irq.latch; +} + +static void map4_hblank(int vblank) +{ + if (vblank) + return; + + if (ppu_enabled()) + { + if (irq.counter >= 0) + { + irq.reset = false; + irq.counter--; + + if (irq.counter < 0) + { + if (irq.enabled) + { + irq.reset = true; + nes_irq(); + } + } + } + } +} + +static void map4_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper4.irqCounter = irq.counter; + state->extraData.mapper4.irqLatchCounter = irq.latch; + state->extraData.mapper4.irqCounterEnabled = irq.enabled; + state->extraData.mapper4.last8000Write = command; +} + +static void map4_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper4.irqCounter; + irq.latch = state->extraData.mapper4.irqLatchCounter; + irq.enabled = state->extraData.mapper4.irqCounterEnabled; + command = state->extraData.mapper4.last8000Write; +} + +static void map4_init(void) +{ + irq.counter = irq.latch = 0; + irq.enabled = irq.reset = false; + reg = command = 0; + vrombase = 0x0000; +} + +static const map_memwrite map4_memwrite[] = +{ + { 0x8000, 0xFFFF, map4_write }, + { -1, -1, NULL } +}; + +const mapintf_t map4_intf = +{ + 4, /* mapper number */ + "MMC3", /* mapper name */ + map4_init, /* init routine */ + NULL, /* vblank callback */ + map4_hblank, /* hblank callback */ + map4_getstate, /* get state (snss) */ + map4_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map4_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map004.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/26 15:40:49 matt +** hey, it actually works now +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.12 2000/10/23 15:53:27 matt +** suppressed warnings +** +** Revision 1.11 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.10 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.9 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.8 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.7 2000/10/08 18:05:44 matt +** kept old version around, just in case.... +** +** Revision 1.6 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.5 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.4 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.3 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.2 2000/07/05 05:04:39 matt +** minor modifications +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map005.c b/MCUME_teensy/teensynofrendo/map005.c new file mode 100755 index 0000000..16a8347 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map005.c @@ -0,0 +1,326 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map5.c +** +** mapper 5 interface +** $Id: map005.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" +#include "mmc5_snd.h" + +/* TODO: there's lots of info about this mapper now; +** let's implement it correctly/completely +*/ + +static struct +{ + int counter, enabled; + int reset, latch; +} irq; + +/* MMC5 - Castlevania III, etc */ +static void map5_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.counter == nes_getcontextptr()->scanline) + { + if (true == irq.enabled) + { + nes_irq(); + irq.reset = true; + } + //else + // irq.reset = false; + irq.counter = irq.latch; + } +} + +static void map5_write(uint32 address, uint8 value) +{ + static int page_size = 8; + + /* ex-ram memory-- bleh! */ + if (address >= 0x5C00 && address <= 0x5FFF) + return; + + switch (address) + { + case 0x5100: + /* PRG page size setting */ + /* 0:32k 1:16k 2,3:8k */ + switch (value & 3) + { + case 0: + page_size = 32; + break; + + case 1: + page_size = 16; + break; + + case 2: + case 3: + page_size = 8; + break; + } + break; + + case 0x5101: + /* CHR page size setting */ + /* 0:8k 1:4k 2:2k 3:1k */ + break; + + case 0x5104: + /* GFX mode setting */ + /* + 00:split mode + 01:split & exgraffix + 10:ex-ram + 11:exram + write protect + */ + break; + + case 0x5105: + /* TODO: exram needs to fill in nametables 2-3 */ + ppu_mirror(value & 3, (value >> 2) & 3, (value >> 4) & 3, value >> 6); + break; + + case 0x5106: + case 0x5107: + /* ex-ram fill mode stuff */ + break; + + case 0x5113: + /* ram page for $6000-7FFF? bit 2*/ + break; + + case 0x5114: + mmc_bankrom(8, 0x8000, value); + //if (page_size == 8) + // mmc_bankrom(8, 0x8000, value); + break; + + case 0x5115: + mmc_bankrom(8, 0x8000, value); + mmc_bankrom(8, 0xA000, value + 1); + //if (page_size == 8) + // mmc_bankrom(8, 0xA000, value); + //else if (page_size == 16) + // mmc_bankrom(16, 0x8000, value >> 1); + //mmc_bankrom(16, 0x8000, value & 0xFE); + break; + + case 0x5116: + mmc_bankrom(8, 0xC000, value); + //if (page_size == 8) + // mmc_bankrom(8, 0xC000, value); + break; + + case 0x5117: + //if (page_size == 8) + // mmc_bankrom(8, 0xE000, value); + //else if (page_size == 16) + // mmc_bankrom(16, 0xC000, value >> 1); + //mmc_bankrom(16, 0xC000, value & 0xFE); + //else if (page_size == 32) + // mmc_bankrom(32, 0x8000, value >> 2); + //mmc_bankrom(32, 0x8000, value & 0xFC); + break; + + case 0x5120: + mmc_bankvrom(1, 0x0000, value); + break; + + case 0x5121: + mmc_bankvrom(1, 0x0400, value); + break; + + case 0x5122: + mmc_bankvrom(1, 0x0800, value); + break; + + case 0x5123: + mmc_bankvrom(1, 0x0C00, value); + break; + + case 0x5124: + case 0x5125: + case 0x5126: + case 0x5127: + /* more VROM shit? */ + break; + + case 0x5128: + mmc_bankvrom(1, 0x1000, value); + break; + + case 0x5129: + mmc_bankvrom(1, 0x1400, value); + break; + + case 0x512A: + mmc_bankvrom(1, 0x1800, value); + break; + + case 0x512B: + mmc_bankvrom(1, 0x1C00, value); + break; + + case 0x5203: + irq.counter = value; + irq.latch = value; +// irq.reset = false; + break; + + case 0x5204: + irq.enabled = (value & 0x80) ? true : false; +// irq.reset = false; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("unknown mmc5 write: $%02X to $%04X\n", value, address); +#endif /* NOFRENDO_DEBUG */ + break; + } +} + +static uint8 map5_read(uint32 address) +{ + /* Castlevania 3 IRQ counter */ + if (address == 0x5204) + { + /* if reset == 1, we've hit scanline */ + return (irq.reset ? 0x40 : 0x00); + } + else + { +#ifdef NOFRENDO_DEBUG + log_printf("invalid MMC5 read: $%04X", address); +#endif + return 0xFF; + } +} + +static void map5_init(void) +{ + mmc_bankrom(8, 0x8000, MMC_LASTBANK); + mmc_bankrom(8, 0xA000, MMC_LASTBANK); + mmc_bankrom(8, 0xC000, MMC_LASTBANK); + mmc_bankrom(8, 0xE000, MMC_LASTBANK); + + irq.counter = irq.enabled = 0; + irq.reset = irq.latch = 0; +} + +/* incomplete SNSS definition */ +static void map5_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper5.dummy = 0; +} + +static void map5_setstate(SnssMapperBlock *state) +{ + UNUSED(state); +} + +static map_memwrite map5_memwrite[] = +{ + /* $5000 - $5015 handled by sound */ + { 0x5016, 0x5FFF, map5_write }, + { 0x8000, 0xFFFF, map5_write }, + { -1, -1, NULL } +}; + +static map_memread map5_memread[] = +{ + { 0x5204, 0x5204, map5_read }, + { -1, -1, NULL } +}; + +mapintf_t map5_intf = +{ + 5, /* mapper number */ + "MMC5", /* mapper name */ + map5_init, /* init routine */ + NULL, /* vblank callback */ + map5_hblank, /* hblank callback */ + map5_getstate, /* get state (snss) */ + map5_setstate, /* set state (snss) */ + map5_memread, /* memory read structure */ + map5_memwrite, /* memory write structure */ + &mmc5_ext /* external sound device */ +}; +/* +** $Log: map005.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/25 20:32:33 matt +** scanline interface change +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.11 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.10 2000/10/21 19:33:37 matt +** many more cleanups +** +** Revision 1.9 2000/10/17 03:23:16 matt +** added mmc5 sound interface +** +** Revision 1.8 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.7 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.6 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.5 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.4 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.3 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.2 2000/07/05 05:04:51 matt +** fixed h-blank callback +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map007.c b/MCUME_teensy/teensynofrendo/map007.c new file mode 100644 index 0000000..f1530f1 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map007.c @@ -0,0 +1,99 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map7.c +** +** mapper 7 interface +** $Id: map007.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "log.h" + +/* mapper 7: AOROM */ +static void map7_write(uint32 address, uint8 value) +{ + int mirror; + UNUSED(address); + + mmc_bankrom(32, 0x8000, value); + mirror = (value & 0x10) >> 4; + ppu_mirror(mirror, mirror, mirror, mirror); +} + +static void map7_init(void) +{ + mmc_bankrom(32, 0x8000, 0); +} + +static const map_memwrite map7_memwrite[] = +{ + { 0x8000, 0xFFFF, map7_write }, + { -1, -1, NULL } +}; + +const mapintf_t map7_intf = +{ + 7, /* mapper number */ + "AOROM", /* mapper name */ + map7_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map7_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map007.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map008.c b/MCUME_teensy/teensynofrendo/map008.c new file mode 100644 index 0000000..5b7ad2b --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map008.c @@ -0,0 +1,94 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map8.c +** +** mapper 8 interface +** $Id: map008.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 8: FFE F3xxx -- what the hell uses this? */ +static void map8_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, value >> 3); + mmc_bankvrom(8, 0x0000, value & 7); +} + +static void map8_init(void) +{ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, 1); + mmc_bankvrom(8, 0x0000, 0); +} + +static const map_memwrite map8_memwrite[] = +{ + { 0x8000, 0xFFFF, map8_write }, + { -1, -1, NULL } +}; + +const mapintf_t map8_intf = +{ + 8, /* mapper number */ + "FFE F3xxx", /* mapper name */ + map8_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map8_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map008.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:32 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map009.c b/MCUME_teensy/teensynofrendo/map009.c new file mode 100644 index 0000000..c01c44e --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map009.c @@ -0,0 +1,199 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map9.c +** +** mapper 9 interface +** $Id: map009.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "libsnss.h" + +static uint8 latch[2]; +static uint8 regs[4]; + +/* Used when tile $FD/$FE is accessed */ +static void mmc9_latchfunc(uint32 address, uint8 value) +{ + if (0xFD == value || 0xFE == value) + { + int reg; + + if (address) + { + latch[1] = value; + reg = 2 + (value - 0xFD); + } + else + { + latch[0] = value; + reg = value - 0xFD; + } + + mmc_bankvrom(4, address, regs[reg]); + } +} + +/* mapper 9: MMC2 */ +/* MMC2: Punch-Out! */ +static void map9_write(uint32 address, uint8 value) +{ + switch ((address & 0xF000) >> 12) + { + case 0xA: + mmc_bankrom(8, 0x8000, value); + break; + + case 0xB: + regs[0] = value; + if (0xFD == latch[0]) + mmc_bankvrom(4, 0x0000, value); + break; + + case 0xC: + regs[1] = value; + if (0xFE == latch[0]) + mmc_bankvrom(4, 0x0000, value); + break; + + case 0xD: + regs[2] = value; + if (0xFD == latch[1]) + mmc_bankvrom(4, 0x1000, value); + break; + + case 0xE: + regs[3] = value; + if (0xFE == latch[1]) + mmc_bankvrom(4, 0x1000, value); + break; + + case 0xF: + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + default: + break; + } +} + +static void map9_init(void) +{ + memset(regs, 0, sizeof(regs)); + + mmc_bankrom(8, 0x8000, 0); + mmc_bankrom(8, 0xA000, (mmc_getinfo()->rom_banks * 2) - 3); + mmc_bankrom(8, 0xC000, (mmc_getinfo()->rom_banks * 2) - 2); + mmc_bankrom(8, 0xE000, (mmc_getinfo()->rom_banks * 2) - 1); + + latch[0] = 0xFE; + latch[1] = 0xFE; + + ppu_setlatchfunc(mmc9_latchfunc); +} + +static void map9_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper9.latch[0] = latch[0]; + state->extraData.mapper9.latch[1] = latch[1]; + state->extraData.mapper9.lastB000Write = regs[0]; + state->extraData.mapper9.lastC000Write = regs[1]; + state->extraData.mapper9.lastD000Write = regs[2]; + state->extraData.mapper9.lastE000Write = regs[3]; +} + +static void map9_setstate(SnssMapperBlock *state) +{ + latch[0] = state->extraData.mapper9.latch[0]; + latch[1] = state->extraData.mapper9.latch[1]; + regs[0] = state->extraData.mapper9.lastB000Write; + regs[1] = state->extraData.mapper9.lastC000Write; + regs[2] = state->extraData.mapper9.lastD000Write; + regs[3] = state->extraData.mapper9.lastE000Write; +} + +static map_memwrite map9_memwrite[] = +{ + { 0x8000, 0xFFFF, map9_write }, + { -1, -1, NULL } +}; + +const mapintf_t map9_intf = +{ + 9, /* mapper number */ + "MMC2", /* mapper name */ + map9_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map9_getstate, /* get state (snss) */ + map9_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map9_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map009.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.9 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.8 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.7 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.6 2000/07/17 05:11:35 matt +** minor update from making PPU code less filthy +** +** Revision 1.5 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.4 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.3 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.2 2000/07/05 22:50:33 matt +** fixed punchout -- works 100% now +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map011.c b/MCUME_teensy/teensynofrendo/map011.c new file mode 100644 index 0000000..f253945 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map011.c @@ -0,0 +1,94 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map11.c +** +** mapper 11 interface +** $Id: map011.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + + +/* mapper 11: Color Dreams, Wisdom Tree */ +static void map11_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(32, 0x8000, value & 0x0F); + mmc_bankvrom(8, 0x0000, value >> 4); +} + +static void map11_init(void) +{ + mmc_bankrom(32, 0x8000, 0); + mmc_bankvrom(8, 0x0000, 0); +} + +static const map_memwrite map11_memwrite[] = +{ + { 0x8000, 0xFFFF, map11_write }, + { -1, -1, NULL } +}; + +const mapintf_t map11_intf = +{ + 11, /* mapper number */ + "Color Dreams", /* mapper name */ + map11_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map11_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map011.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map015.c b/MCUME_teensy/teensynofrendo/map015.c new file mode 100644 index 0000000..d1b3b63 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map015.c @@ -0,0 +1,144 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map15.c +** +** mapper 15 interface +** $Id: map015.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 15: Contra 100-in-1 */ +static void map15_write(uint32 address, uint8 value) +{ + int bank = value & 0x3F; + uint8 swap = (value & 0x80) >> 7; + + switch (address & 0x3) + { + case 0: + mmc_bankrom(8, 0x8000, (bank << 1) + swap); + mmc_bankrom(8, 0xA000, (bank << 1) + (swap ^ 1)); + mmc_bankrom(8, 0xC000, ((bank + 1) << 1) + swap); + mmc_bankrom(8, 0xE000, ((bank + 1) << 1) + (swap ^ 1)); + + if (value & 0x40) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + mmc_bankrom(8, 0xC000, (bank << 1) + swap); + mmc_bankrom(8, 0xE000, (bank << 1) + (swap ^ 1)); + break; + + case 2: + if (swap) + { + mmc_bankrom(8, 0x8000, (bank << 1) + 1); + mmc_bankrom(8, 0xA000, (bank << 1) + 1); + mmc_bankrom(8, 0xC000, (bank << 1) + 1); + mmc_bankrom(8, 0xE000, (bank << 1) + 1); + } + else + { + mmc_bankrom(8, 0x8000, (bank << 1)); + mmc_bankrom(8, 0xA000, (bank << 1)); + mmc_bankrom(8, 0xC000, (bank << 1)); + mmc_bankrom(8, 0xE000, (bank << 1)); + } + break; + + case 3: + mmc_bankrom(8, 0xC000, (bank << 1) + swap); + mmc_bankrom(8, 0xE000, (bank << 1) + (swap ^ 1)); + + if (value & 0x40) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + default: + break; + } +} + +static void map15_init(void) +{ + mmc_bankrom(32, 0x8000, 0); +} + +static const map_memwrite map15_memwrite[] = +{ + { 0x8000, 0xFFFF, map15_write }, + { -1, -1, NULL } +}; + +const mapintf_t map15_intf = +{ + 15, /* mapper number */ + "Contra 100-in-1", /* mapper name */ + map15_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map15_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map015.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map016.c b/MCUME_teensy/teensynofrendo/map016.c new file mode 100755 index 0000000..3d193b1 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map016.c @@ -0,0 +1,192 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map16.c +** +** mapper 16 interface +** $Id: map016.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes.h" + +static struct +{ + int counter; + bool enabled; +} irq; + +/* mapper 16: Bandai */ + +static void map16_init(void) +{ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, MMC_LASTBANK); + irq.counter = 0; + irq.enabled = false; +} + +static void map16_write(uint32 address, uint8 value) +{ + int reg = address & 0xF; + + if (reg < 8) + { + mmc_bankvrom(1, reg << 10, value); + } + else + { + switch (address & 0x000F) + { + case 0x8: + mmc_bankrom(16, 0x8000, value); + break; + + case 0x9: + switch (value & 3) + { + case 0: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 1: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + } + break; + + case 0xA: + irq.enabled = (value & 1) ? true : false; + break; + + case 0xB: + irq.counter = (irq.counter & 0xFF00) | value; + break; + + case 0xC: + irq.counter = (value << 8) | (irq.counter & 0xFF); + break; + + case 0xD: + /* eeprom I/O port? */ + break; + } + } +} + +static void map16_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (irq.counter) + { + if (0 == --irq.counter) + nes_irq(); + } + } +} + +static void map16_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper16.irqCounterLowByte = irq.counter & 0xFF; + state->extraData.mapper16.irqCounterHighByte = irq.counter >> 8; + state->extraData.mapper16.irqCounterEnabled = irq.enabled; +} + +static void map16_setstate(SnssMapperBlock *state) +{ + irq.counter = (state->extraData.mapper16.irqCounterHighByte << 8) + | state->extraData.mapper16.irqCounterLowByte; + irq.enabled = state->extraData.mapper16.irqCounterEnabled; +} + +static const map_memwrite map16_memwrite[] = +{ + { 0x6000, 0x600D, map16_write }, + { 0x7FF0, 0x7FFD, map16_write }, + { 0x8000, 0x800D, map16_write }, + { -1, -1, NULL } +}; + +const mapintf_t map16_intf = +{ + 16, /* mapper number */ + "Bandai", /* mapper name */ + map16_init, /* init routine */ + NULL, /* vblank callback */ + map16_hblank, /* hblank callback */ + map16_getstate, /* get state (snss) */ + map16_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map16_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map016.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.6 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.5 2000/10/10 13:58:16 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.3 2000/07/15 23:52:20 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.2 2000/07/11 05:03:49 matt +** value masking isn't necessary for the banking routines +** +** Revision 1.1 2000/07/11 03:14:18 melanson +** Initial commit for mappers 16, 34, and 231 +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map018.c b/MCUME_teensy/teensynofrendo/map018.c new file mode 100755 index 0000000..6f182ef --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map018.c @@ -0,0 +1,215 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map18.c +** +** mapper 18 interface +** $Id: map018.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 18: Jaleco SS8806 */ +#define VRC_PBANK(bank, value, high) \ +do { \ + if ((high)) \ + highprgnybbles[(bank)] = (value) & 0x0F; \ + else \ + lowprgnybbles[(bank)] = (value) & 0x0F; \ + mmc_bankrom(8, 0x8000 + ((bank) << 13), (highprgnybbles[(bank)] << 4)+lowprgnybbles[(bank)]); \ +} while (0) + +#define VRC_VBANK(bank, value, high) \ +{ \ + if ((high)) \ + highnybbles[(bank)] = (value) & 0x0F; \ + else \ + lownybbles[(bank)] = (value) & 0x0F; \ + mmc_bankvrom(1, (bank) << 10, (highnybbles[(bank)] << 4)+lownybbles[(bank)]); \ +} + +static struct +{ + int counter, enabled; + uint8 nybbles[4]; + int clockticks; +} irq; + +static void map18_init(void) +{ + irq.counter = irq.enabled = 0; +} + +static uint8 lownybbles[8]; +static uint8 highnybbles[8]; +static uint8 lowprgnybbles[3]; +static uint8 highprgnybbles[3]; + + +static void map18_write(uint32 address, uint8 value) +{ + switch (address) + { + case 0x8000: VRC_PBANK(0, value, 0); break; + case 0x8001: VRC_PBANK(0, value, 1); break; + case 0x8002: VRC_PBANK(1, value, 0); break; + case 0x8003: VRC_PBANK(1, value, 1); break; + case 0x9000: VRC_PBANK(2, value, 0); break; + case 0x9001: VRC_PBANK(2, value, 1); break; + case 0xA000: VRC_VBANK(0, value, 0); break; + case 0xA001: VRC_VBANK(0, value, 1); break; + case 0xA002: VRC_VBANK(1, value, 0); break; + case 0xA003: VRC_VBANK(1, value, 1); break; + case 0xB000: VRC_VBANK(2, value, 0); break; + case 0xB001: VRC_VBANK(2, value, 1); break; + case 0xB002: VRC_VBANK(3, value, 0); break; + case 0xB003: VRC_VBANK(3, value, 1); break; + case 0xC000: VRC_VBANK(4, value, 0); break; + case 0xC001: VRC_VBANK(4, value, 1); break; + case 0xC002: VRC_VBANK(5, value, 0); break; + case 0xC003: VRC_VBANK(5, value, 1); break; + case 0xD000: VRC_VBANK(6, value, 0); break; + case 0xD001: VRC_VBANK(6, value, 1); break; + case 0xD002: VRC_VBANK(7, value, 0); break; + case 0xD003: VRC_VBANK(7, value, 1); break; + case 0xE000: + irq.nybbles[0]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xE001: + irq.nybbles[1]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xE002: + irq.nybbles[2]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xE003: + irq.nybbles[3]=value&0x0F; + irq.clockticks= (irq.nybbles[0]) | (irq.nybbles[1]<<4) | + (irq.nybbles[2]<<8) | (irq.nybbles[3]<<12); + irq.counter=(uint8)(irq.clockticks/114); + if(irq.counter>15) irq.counter-=16; + break; + case 0xF000: + if(value&0x01) irq.enabled=true; + break; + case 0xF001: + irq.enabled=value&0x01; + break; + case 0xF002: + switch(value&0x03) + { + case 0: ppu_mirror(0, 0, 1, 1); break; + case 1: ppu_mirror(0, 1, 0, 1); break; + case 2: ppu_mirror(1,1,1,1);break; + case 3: ppu_mirror(1,1,1,1);break; // should this be zero? + default: break; + } + break; + default: + break; + } +} + + +static const map_memwrite map18_memwrite[] = +{ + { 0x8000, 0xFFFF, map18_write }, + { -1, -1, NULL } +}; + +static void map18_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper18.irqCounterLowByte = irq.counter & 0xFF; + state->extraData.mapper18.irqCounterHighByte = irq.counter >> 8; + state->extraData.mapper18.irqCounterEnabled = irq.enabled; +} + +static void map18_setstate(SnssMapperBlock *state) +{ + irq.counter = (state->extraData.mapper18.irqCounterHighByte << 8) + | state->extraData.mapper18.irqCounterLowByte; + irq.enabled = state->extraData.mapper18.irqCounterEnabled; +} + +const mapintf_t map18_intf = +{ + 18, /* mapper number */ + "Jaleco SS8806", /* mapper name */ + map18_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map18_getstate, /* get state (snss) */ + map18_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map18_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map018.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.6 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.5 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:42 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map019.c b/MCUME_teensy/teensynofrendo/map019.c new file mode 100755 index 0000000..e5f6f1c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map019.c @@ -0,0 +1,170 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map19.c +** +** mapper 19 interface +** $Id: map019.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* TODO: shouldn't there be an h-blank IRQ handler??? */ + +/* Special mirroring macro for mapper 19 */ +#define N_BANK1(table, value) \ +{ \ + if ((value) < 0xE0) \ + ppu_setpage(1, (table) + 8, &mmc_getinfo()->vrom[((value) % (mmc_getinfo()->vrom_banks * 8)) << 10] - (0x2000 + ((table) << 10))); \ + else \ + ppu_setpage(1, (table) + 8, &mmc_getinfo()->vram[((value) & 7) << 10] - (0x2000 + ((table) << 10))); \ + ppu_mirrorhipages(); \ +} + +static struct +{ + int counter, enabled; +} irq; + +static void map19_init(void) +{ + irq.counter = irq.enabled = 0; +} + +/* mapper 19: Namcot 106 */ +static void map19_write(uint32 address, uint8 value) +{ + int reg = address >> 11; + switch (reg) + { + case 0xA: + irq.counter &= ~0xFF; + irq.counter |= value; + break; + + case 0xB: + irq.counter = ((value & 0x7F) << 8) | (irq.counter & 0xFF); + irq.enabled = (value & 0x80) ? true : false; + break; + + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + mmc_bankvrom(1, (reg & 7) << 10, value); + break; + + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + N_BANK1(reg & 3, value); + break; + + case 0x1C: + mmc_bankrom(8, 0x8000, value); + break; + + case 0x1D: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x1E: + mmc_bankrom(8, 0xC000, value); + break; + + default: + break; + } +} + +static void map19_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper19.irqCounterLowByte = irq.counter & 0xFF; + state->extraData.mapper19.irqCounterHighByte = irq.counter >> 8; + state->extraData.mapper19.irqCounterEnabled = irq.enabled; +} + +static void map19_setstate(SnssMapperBlock *state) +{ + irq.counter = (state->extraData.mapper19.irqCounterHighByte << 8) + | state->extraData.mapper19.irqCounterLowByte; + irq.enabled = state->extraData.mapper19.irqCounterEnabled; +} + +static const map_memwrite map19_memwrite[] = +{ + { 0x5000, 0x5FFF, map19_write }, + { 0x8000, 0xFFFF, map19_write }, + { -1, -1, NULL } +}; + +const mapintf_t map19_intf = +{ + 19, /* mapper number */ + "Namcot 106", /* mapper name */ + map19_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + map19_getstate, /* get state (snss) */ + map19_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map19_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map019.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.3 2000/07/15 23:52:20 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map024.c b/MCUME_teensy/teensynofrendo/map024.c new file mode 100755 index 0000000..785e215 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map024.c @@ -0,0 +1,235 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map24.c +** +** mapper 24 interface +** $Id: map024.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" +#include "vrcvisnd.h" + +static struct +{ + int counter, enabled; + int latch, wait_state; +} irq; + +static void map24_init(void) +{ + irq.counter = irq.enabled = 0; + irq.latch = irq.wait_state = 0; +} + +static void map24_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (256 == ++irq.counter) + { + irq.counter = irq.latch; + nes_irq(); + //irq.enabled = false; + irq.enabled = irq.wait_state; + } + } +} + +static void map24_write(uint32 address, uint8 value) +{ + switch (address & 0xF003) + { + case 0x8000: + mmc_bankrom(16, 0x8000, value); + break; + + case 0x9003: + /* ??? */ + break; + + case 0xB003: + switch (value & 0x0C) + { + case 0x00: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 0x04: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 0x08: + ppu_mirror(0, 0, 0, 0); + break; + + case 0x0C: + ppu_mirror(1, 1, 1, 1); + break; + + default: + break; + } + break; + + + case 0xC000: + mmc_bankrom(8, 0xC000, value); + break; + + case 0xD000: + mmc_bankvrom(1, 0x0000, value); + break; + + case 0xD001: + mmc_bankvrom(1, 0x0400, value); + break; + + case 0xD002: + mmc_bankvrom(1, 0x0800, value); + break; + + case 0xD003: + mmc_bankvrom(1, 0x0C00, value); + break; + + case 0xE000: + mmc_bankvrom(1, 0x1000, value); + break; + + case 0xE001: + mmc_bankvrom(1, 0x1400, value); + break; + + case 0xE002: + mmc_bankvrom(1, 0x1800, value); + break; + + case 0xE003: + mmc_bankvrom(1, 0x1C00, value); + break; + + case 0xF000: + irq.latch = value; + break; + + case 0xF001: + irq.enabled = (value >> 1) & 0x01; + irq.wait_state = value & 0x01; + if (irq.enabled) + irq.counter = irq.latch; + break; + + case 0xF002: + irq.enabled = irq.wait_state; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("invalid VRC6 write: $%02X to $%04X", value, address); +#endif + break; + } +} + +static void map24_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper24.irqCounter = irq.counter; + state->extraData.mapper24.irqCounterEnabled = irq.enabled; +} + +static void map24_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper24.irqCounter; + irq.enabled = state->extraData.mapper24.irqCounterEnabled; +} + +static const map_memwrite map24_memwrite[] = +{ + { 0x8000, 0xF002, map24_write }, + { -1, -1, NULL } +}; + +mapintf_t const map24_intf = +{ + 24, /* mapper number */ + "Konami VRC6", /* mapper name */ + map24_init, /* init routine */ + NULL, /* vblank callback */ + map24_hblank, /* hblank callback */ + map24_getstate, /* get state (snss) */ + map24_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map24_memwrite, /* memory write structure */ + &vrcvi_ext /* external sound device */ +}; + +/* +** $Log: map024.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.11 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.10 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.9 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.8 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.7 2000/10/09 12:00:53 matt +** removed old code +** +** Revision 1.6 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.5 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.4 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/04 23:11:45 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map032.c b/MCUME_teensy/teensynofrendo/map032.c new file mode 100755 index 0000000..6719678 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map032.c @@ -0,0 +1,121 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map32.c +** +** mapper 32 interface +** $Id: map032.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +static int select_c000 = 0; + +/* mapper 32: Irem G-101 */ +static void map32_write(uint32 address, uint8 value) +{ + switch (address >> 12) + { + case 0x08: + if (select_c000) + mmc_bankrom(8, 0xC000, value); + else + mmc_bankrom(8, 0x8000, value); + break; + + case 0x09: + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); /* vertical */ + + select_c000 = (value & 0x02); + break; + + case 0x0A: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x0B: + { + int loc = (address & 0x07) << 10; + mmc_bankvrom(1, loc, value); + } + break; + + default: + break; + } +} + +static const map_memwrite map32_memwrite[] = +{ + { 0x8000, 0xFFFF, map32_write }, + { -1, -1, NULL } +}; + +const mapintf_t map32_intf = +{ + 32, /* mapper number */ + "Irem G-101", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map32_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map032.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map033.c b/MCUME_teensy/teensynofrendo/map033.c new file mode 100755 index 0000000..fb70233 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map033.c @@ -0,0 +1,145 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map33.c +** +** mapper 33 interface +** $Id: map033.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 33: Taito TC0190*/ +static void map33_write(uint32 address, uint8 value) +{ + int page = (address >> 13) & 3; + int reg = address & 3; + + switch (page) + { + case 0: /* $800X */ + switch (reg) + { + case 0: + mmc_bankrom(8, 0x8000, value); + break; + + case 1: + mmc_bankrom(8, 0xA000, value); + break; + + case 2: + mmc_bankvrom(2, 0x0000, value); + break; + + case 3: + mmc_bankvrom(2, 0x0800, value); + break; + } + break; + + case 1: /* $A00X */ + { + int loc = 0x1000 + (reg << 10); + mmc_bankvrom(1, loc, value); + } + break; + + case 2: /* $C00X */ + case 3: /* $E00X */ + switch (reg) + { + case 0: + /* irqs maybe ? */ + //break; + + case 1: + /* this doesn't seem to work just right */ + if (value & 1) + ppu_mirror(0, 0, 1, 1); /* horizontal */ + else + ppu_mirror(0, 1, 0, 1); + break; + + default: + break; + } + break; + } +} + + +static const map_memwrite map33_memwrite[] = +{ + { 0x8000, 0xFFFF, map33_write }, + { -1, -1, NULL } +}; + +const mapintf_t map33_intf = +{ + 33, /* mapper number */ + "Taito TC0190", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map33_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map033.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map034.c b/MCUME_teensy/teensynofrendo/map034.c new file mode 100755 index 0000000..b8cadc0 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map034.c @@ -0,0 +1,100 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map34.c +** +** mapper 34 interface +** $Id: map034.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +static void map34_init(void) +{ + mmc_bankrom(32, 0x8000, MMC_LASTBANK); +} + +static void map34_write(uint32 address, uint8 value) +{ + if ((address & 0x8000) || (0x7FFD == address)) + { + mmc_bankrom(32, 0x8000, value); + } + else if (0x7FFE == address) + { + mmc_bankvrom(4, 0x0000, value); + } + else if (0x7FFF == address) + { + mmc_bankvrom(4, 0x1000, value); + } +} + +static const map_memwrite map34_memwrite[] = +{ + { 0x7FFD, 0xFFFF, map34_write }, + { -1, -1, NULL } +}; + +const mapintf_t map34_intf = +{ + 34, /* mapper number */ + "Nina-1", /* mapper name */ + map34_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map34_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map034.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/11 05:03:49 matt +** value masking isn't necessary for the banking routines +** +** Revision 1.2 2000/07/11 03:35:08 bsittler +** Fixes to make mikes new mappers compile. +** +** Revision 1.1 2000/07/11 03:14:18 melanson +** Initial commit for mappers 16, 34, and 231 +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map040.c b/MCUME_teensy/teensynofrendo/map040.c new file mode 100755 index 0000000..0d744fe --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map040.c @@ -0,0 +1,163 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map40.c +** +** mapper 40 interface +** $Id: map040.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +#define MAP40_IRQ_PERIOD (4096 / 113.666666) + +static struct +{ + int enabled, counter; +} irq; + +/* mapper 40: SMB 2j (hack) */ +static void map40_init(void) +{ + mmc_bankrom(8, 0x6000, 6); + mmc_bankrom(8, 0x8000, 4); + mmc_bankrom(8, 0xA000, 5); + mmc_bankrom(8, 0xE000, 7); + + irq.enabled = false; + irq.counter = (int) MAP40_IRQ_PERIOD; +} + +static void map40_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled && irq.counter) + { + irq.counter--; + if (0 == irq.counter) + { + nes_irq(); + irq.enabled = false; + } + } +} + +static void map40_write(uint32 address, uint8 value) +{ + int range = (address >> 13) - 4; + + switch (range) + { + case 0: /* 0x8000-0x9FFF */ + irq.enabled = false; + irq.counter = (int) MAP40_IRQ_PERIOD; + break; + + case 1: /* 0xA000-0xBFFF */ + irq.enabled = true; + break; + + case 3: /* 0xE000-0xFFFF */ + mmc_bankrom(8, 0xC000, value & 7); + break; + + default: + break; + } +} + +static void map40_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper40.irqCounter = irq.counter; + state->extraData.mapper40.irqCounterEnabled = irq.enabled; +} + +static void map40_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper40.irqCounter; + irq.enabled = state->extraData.mapper40.irqCounterEnabled; +} + +static const map_memwrite map40_memwrite[] = +{ + { 0x8000, 0xFFFF, map40_write }, + { -1, -1, NULL } +}; + +const mapintf_t map40_intf = +{ + 40, /* mapper number */ + "SMB 2j (pirate)", /* mapper name */ + map40_init, /* init routine */ + NULL, /* vblank callback */ + map40_hblank, /* hblank callback */ + map40_getstate, /* get state (snss) */ + map40_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map40_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map040.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.9 2000/10/23 15:53:27 matt +** suppressed warnings +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.6 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.5 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map041.c b/MCUME_teensy/teensynofrendo/map041.c new file mode 100755 index 0000000..f823ff2 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map041.c @@ -0,0 +1,167 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map041.c +** +** Mapper #41 (Caltron 6 in 1) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map041.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static uint8 register_low; +static uint8 register_high; + +/*****************************************************/ +/* Set 8K CHR bank from the combined register values */ +/*****************************************************/ +static void map41_set_chr (void) +{ + /* Set the CHR bank from the appropriate register bits */ + mmc_bankvrom (8, 0x0000, ((register_low >> 1) & 0x0C) | (register_high)); + + /* Done */ + return; +} + +/******************************/ +/* Mapper #41: Caltron 6 in 1 */ +/******************************/ +static void map41_init (void) +{ + /* Both registers set to zero at power on */ + /* TODO: Registers should also be cleared on a soft reset */ + register_low = 0x00; + register_high = 0x00; + mmc_bankrom (32, 0x8000, 0x00); + map41_set_chr (); + + /* Done */ + return; +} + +/******************************************/ +/* Mapper #41 write handler ($6000-$67FF) */ +/******************************************/ +static void map41_low_write (uint32 address, uint8 value) +{ + /* Within this range the value written is irrelevant */ + UNUSED (value); + + /* $6000-$67FF: A5 = mirroring (1=horizontal, 0=vertical) */ + /* A4-A3 = high two bits of 8K CHR bank */ + /* A2 = register 1 enable (0=disabled, 1=enabled) */ + /* A2-A0 = 32K PRG bank */ + register_low = (uint8) (address & 0x3F); + mmc_bankrom (32, 0x8000, register_low & 0x07); + map41_set_chr (); + if (register_low & 0x20) ppu_mirror(0, 0, 1, 1); /* horizontal */ + else ppu_mirror(0, 1, 0, 1); /* vertical */ + + /* Done */ + return; +} + +/******************************************/ +/* Mapper #41 write handler ($8000-$FFFF) */ +/******************************************/ +static void map41_high_write (uint32 address, uint8 value) +{ + /* Address doesn't matter within this range */ + UNUSED (address); + + /* $8000-$FFFF: D1-D0 = low two bits of 8K CHR bank */ + if (register_low & 0x04) + { + register_high = value & 0x03; + map41_set_chr (); + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map41_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map41_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map41_memwrite [] = +{ + { 0x6000, 0x67FF, map41_low_write }, + { 0x8000, 0xFFFF, map41_high_write }, + { -1, -1, NULL } +}; + +const mapintf_t map41_intf = +{ + 41, /* Mapper number */ + "Caltron 6 in 1", /* Mapper name */ + map41_init, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + map41_getstate, /* Get state (SNSS) */ + map41_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map41_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map041.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 00:33:15 firebug +** initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map042.c b/MCUME_teensy/teensynofrendo/map042.c new file mode 100755 index 0000000..1ca5af1 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map042.c @@ -0,0 +1,188 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map042.c +** +** Mapper #42 (Baby Mario bootleg) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map042.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static struct +{ + bool enabled; + uint32 counter; +} irq; + +/********************************/ +/* Mapper #42 IRQ reset routine */ +/********************************/ +static void map42_irq_reset (void) +{ + /* Turn off IRQs */ + irq.enabled = false; + irq.counter = 0x0000; + + /* Done */ + return; +} + +/********************************************/ +/* Mapper #42: Baby Mario bootleg cartridge */ +/********************************************/ +static void map42_init (void) +{ + /* Set the hardwired pages */ + mmc_bankrom (8, 0x8000, 0x0C); + mmc_bankrom (8, 0xA000, 0x0D); + mmc_bankrom (8, 0xC000, 0x0E); + mmc_bankrom (8, 0xE000, 0x0F); + + /* Reset the IRQ counter */ + map42_irq_reset (); + + /* Done */ + return; +} + +/****************************************/ +/* Mapper #42 callback for IRQ handling */ +/****************************************/ +static void map42_hblank (int vblank) +{ + /* Counter is M2 based so it doesn't matter whether */ + /* the PPU is in its VBlank period or not */ + UNUSED(vblank); + + /* Increment the counter if it is enabled and check for strike */ + if (irq.enabled) + { + /* Is there a constant for cycles per scanline? */ + /* If so, someone ought to substitute it here */ + irq.counter = irq.counter + 114; + + /* IRQ is triggered after 24576 M2 cycles */ + if (irq.counter >= 0x6000) + { + /* Trigger the IRQ */ + nes_irq (); + + /* Reset the counter */ + map42_irq_reset (); + } + } +} + +/******************************************/ +/* Mapper #42 write handler ($E000-$FFFF) */ +/******************************************/ +static void map42_write (uint32 address, uint8 value) +{ + switch (address & 0x03) + { + /* Register 0: Select ROM page at $6000-$7FFF */ + case 0x00: mmc_bankrom (8, 0x6000, value & 0x0F); + break; + + /* Register 1: mirroring */ + case 0x01: if (value & 0x08) ppu_mirror(0, 0, 1, 1); /* horizontal */ + else ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + /* Register 2: IRQ */ + case 0x02: if (value & 0x02) irq.enabled = true; + else map42_irq_reset (); + break; + + /* Register 3: unused */ + default: break; + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map42_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map42_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map42_memwrite [] = +{ + { 0xE000, 0xFFFF, map42_write }, + { -1, -1, NULL } +}; + +const mapintf_t map42_intf = +{ + 42, /* Mapper number */ + "Baby Mario (bootleg)", /* Mapper name */ + map42_init, /* Initialization routine */ + NULL, /* VBlank callback */ + map42_hblank, /* HBlank callback */ + map42_getstate, /* Get state (SNSS) */ + map42_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map42_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map042.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 19:23:30 firebug +** initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map046.c b/MCUME_teensy/teensynofrendo/map046.c new file mode 100755 index 0000000..9bd9f5c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map046.c @@ -0,0 +1,152 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map046.c +** +** Mapper #46 (Pelican Game Station) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map046.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static uint8 prg_low_bank; +static uint8 chr_low_bank; +static uint8 prg_high_bank; +static uint8 chr_high_bank; + +/*************************************************/ +/* Set banks from the combined register values */ +/*************************************************/ +static void map46_set_banks (void) +{ + /* Set the PRG and CHR pages */ + mmc_bankrom (32, 0x8000, (prg_high_bank << 1) | (prg_low_bank)); + mmc_bankvrom (8, 0x0000, (chr_high_bank << 3) | (chr_low_bank)); + + /* Done */ + return; +} + +/*********************************************************/ +/* Mapper #46: Pelican Game Station (aka Rumble Station) */ +/*********************************************************/ +static void map46_init (void) +{ + /* High bank switch register is set to zero on reset */ + prg_high_bank = 0x00; + chr_high_bank = 0x00; + map46_set_banks (); + + /* Done */ + return; +} + +/******************************************/ +/* Mapper #46 write handler ($6000-$FFFF) */ +/******************************************/ +static void map46_write (uint32 address, uint8 value) +{ + /* $8000-$FFFF: D6-D4 = lower three bits of CHR bank */ + /* D0 = low bit of PRG bank */ + /* $6000-$7FFF: D7-D4 = high four bits of CHR bank */ + /* D3-D0 = high four bits of PRG bank */ + if (address & 0x8000) + { + prg_low_bank = value & 0x01; + chr_low_bank = (value >> 4) & 0x07; + map46_set_banks (); + } + else + { + prg_high_bank = value & 0x0F; + chr_high_bank = (value >> 4) & 0x0F; + map46_set_banks (); + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map46_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map46_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map46_memwrite [] = +{ + { 0x6000, 0xFFFF, map46_write }, + { -1, -1, NULL } +}; + +const mapintf_t map46_intf = +{ + 46, /* Mapper number */ + "Pelican Game Station", /* Mapper name */ + map46_init, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + map46_getstate, /* Get state (SNSS) */ + map46_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map46_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map046.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 19:23:05 firebug +** initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map050.c b/MCUME_teensy/teensynofrendo/map050.c new file mode 100755 index 0000000..89d8578 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map050.c @@ -0,0 +1,192 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map050.c +** +** Mapper #50 (SMB2j - 3rd discovered variation) +** Implementation by Firebug +** Mapper information courtesy of Kevin Horton +** $Id: map050.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static struct +{ + bool enabled; + uint32 counter; +} irq; + +/********************************/ +/* Mapper #50 IRQ reset routine */ +/********************************/ +static void map50_irq_reset (void) +{ + /* Turn off IRQs */ + irq.enabled = false; + irq.counter = 0x0000; + + /* Done */ + return; +} + +/**************************************************************/ +/* Mapper #50: 3rd discovered variation of SMB2j cart bootleg */ +/**************************************************************/ +static void map50_init (void) +{ + /* Set the hardwired pages */ + mmc_bankrom (8, 0x6000, 0x0F); + mmc_bankrom (8, 0x8000, 0x08); + mmc_bankrom (8, 0xA000, 0x09); + mmc_bankrom (8, 0xE000, 0x0B); + + /* Reset the IRQ counter */ + map50_irq_reset (); + + /* Done */ + return; +} + +/****************************************/ +/* Mapper #50 callback for IRQ handling */ +/****************************************/ +static void map50_hblank (int vblank) +{ + /* Counter is M2 based so it doesn't matter whether */ + /* the PPU is in its VBlank period or not */ + UNUSED(vblank); + + /* Increment the counter if it is enabled and check for strike */ + if (irq.enabled) + { + /* Is there a constant for cycles per scanline? */ + /* If so, someone ought to substitute it here */ + irq.counter = irq.counter + 114; + + /* IRQ line is hooked to Q12 of the counter */ + if (irq.counter & 0x1000) + { + /* Trigger the IRQ */ + nes_irq (); + + /* Reset the counter */ + map50_irq_reset (); + } + } +} + +/******************************************/ +/* Mapper #50 write handler ($4000-$5FFF) */ +/******************************************/ +static void map50_write (uint32 address, uint8 value) +{ + uint8 selectable_bank; + + /* For address to be decoded, A5 must be high and A6 low */ + if ((address & 0x60) != 0x20) return; + + /* A8 low = $C000-$DFFF page selection */ + /* A8 high = IRQ timer toggle */ + if (address & 0x100) + { + /* IRQ settings */ + if (value & 0x01) irq.enabled = true; + else map50_irq_reset (); + } + else + { + /* Stupid data line swapping */ + selectable_bank = 0x00; + if (value & 0x08) selectable_bank |= 0x08; + if (value & 0x04) selectable_bank |= 0x02; + if (value & 0x02) selectable_bank |= 0x01; + if (value & 0x01) selectable_bank |= 0x04; + mmc_bankrom (8, 0xC000, selectable_bank); + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map50_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map50_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map50_memwrite [] = +{ + { 0x4000, 0x5FFF, map50_write }, + { -1, -1, NULL } +}; + +const mapintf_t map50_intf = +{ + 50, /* Mapper number */ + "SMB2j (3rd discovered variant)", /* Mapper name */ + map50_init, /* Initialization routine */ + NULL, /* VBlank callback */ + map50_hblank, /* HBlank callback */ + map50_getstate, /* Get state (SNSS) */ + map50_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map50_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map050.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 19:22:13 firebug +** initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map064.c b/MCUME_teensy/teensynofrendo/map064.c new file mode 100755 index 0000000..59b668f --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map064.c @@ -0,0 +1,234 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map64.c +** +** mapper 64 interface +** $Id: map064.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" + +static struct +{ + int counter, latch; + bool enabled, reset; +} irq; + +static uint8 command = 0; +static uint16 vrombase = 0x0000; + +static void map64_hblank(int vblank) +{ + if (vblank) + return; + + irq.reset = false; + + if (ppu_enabled()) + { + if (0 == irq.counter--) + { + irq.counter = irq.latch; + + if (true == irq.enabled) + nes_irq(); + + irq.reset = true; + } + } +} + +/* mapper 64: Tengen RAMBO-1 */ +static void map64_write(uint32 address, uint8 value) +{ + switch (address & 0xE001) + { + case 0x8000: + command = value; + vrombase = (value & 0x80) ? 0x1000 : 0x0000; + break; + + case 0x8001: + switch (command & 0xF) + { + case 0: + mmc_bankvrom(1, 0x0000 ^ vrombase, value); + mmc_bankvrom(1, 0x0400 ^ vrombase, value); + break; + + case 1: + mmc_bankvrom(1, 0x0800 ^ vrombase, value); + mmc_bankvrom(1, 0x0C00 ^ vrombase, value); + break; + + case 2: + mmc_bankvrom(1, 0x1000 ^ vrombase, value); + break; + + case 3: + mmc_bankvrom(1, 0x1400 ^ vrombase, value); + break; + + case 4: + mmc_bankvrom(1, 0x1800 ^ vrombase, value); + break; + + case 5: + mmc_bankvrom(1, 0x1C00 ^ vrombase, value); + break; + + case 6: + mmc_bankrom(8, (command & 0x40) ? 0xA000 : 0x8000, value); + break; + + case 7: + mmc_bankrom(8, (command & 0x40) ? 0xC000 : 0xA000, value); + break; + + case 8: + mmc_bankvrom(1, 0x0400, value); + break; + + case 9: + mmc_bankvrom(1, 0x0C00, value); + break; + + case 15: + mmc_bankrom(8, (command & 0x40) ? 0x8000 : 0xC000, value); + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("mapper 64: unknown command #%d", command & 0xF); +#endif + break; + } + break; + + case 0xA000: + if (value & 1) + ppu_mirror(0, 0, 1, 1); + else + ppu_mirror(0, 1, 0, 1); + break; + + case 0xC000: + //irq.counter = value; + irq.latch = value; + break; + + case 0xC001: + //irq.latch = value; + irq.reset = true; + break; + + case 0xE000: + //irq.counter = irq.latch; + irq.enabled = false; + break; + + case 0xE001: + irq.enabled = true; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("mapper 64: Wrote $%02X to $%04X", value, address); +#endif + break; + } + + if (true == irq.reset) + irq.counter = irq.latch; +} + +static void map64_init(void) +{ + mmc_bankrom(8, 0x8000, MMC_LASTBANK); + mmc_bankrom(8, 0xA000, MMC_LASTBANK); + mmc_bankrom(8, 0xC000, MMC_LASTBANK); + mmc_bankrom(8, 0xE000, MMC_LASTBANK); + + irq.counter = irq.latch = 0; + irq.reset = irq.enabled = false; +} + +static const map_memwrite map64_memwrite[] = +{ + { 0x8000, 0xFFFF, map64_write }, + { -1, -1, NULL } +}; + +const mapintf_t map64_intf = +{ + 64, /* mapper number */ + "Tengen RAMBO-1", /* mapper name */ + map64_init, /* init routine */ + NULL, /* vblank callback */ + map64_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map64_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map064.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.8 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.7 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.6 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.5 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map065.c b/MCUME_teensy/teensynofrendo/map065.c new file mode 100755 index 0000000..a152ee3 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map065.c @@ -0,0 +1,144 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map65.c +** +** mapper 65 interface +** $Id: map065.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +static struct +{ + int counter; + bool enabled; + int cycles; + uint8 low, high; +} irq; + +static void map65_init(void) +{ + irq.counter = 0; + irq.enabled = false; + irq.low = irq.high = 0; + irq.cycles = 0; +} + +/* TODO: shouldn't there be some kind of HBlank callback??? */ + +/* mapper 65: Irem H-3001*/ +static void map65_write(uint32 address, uint8 value) +{ + int range = address & 0xF000; + int reg = address & 7; + + switch (range) + { + case 0x8000: + case 0xA000: + case 0xC000: + mmc_bankrom(8, range, value); + break; + + case 0xB000: + mmc_bankvrom(1, reg << 10, value); + break; + + case 0x9000: + switch (reg) + { + case 4: + irq.enabled = (value & 0x01) ? false : true; + break; + + case 5: + irq.high = value; + irq.cycles = (irq.high << 8) | irq.low; + irq.counter = (uint8)(irq.cycles / 128); + break; + + case 6: + irq.low = value; + irq.cycles = (irq.high << 8) | irq.low; + irq.counter = (uint8)(irq.cycles / 128); + break; + + default: + break; + } + break; + + default: + break; + } +} + +static const map_memwrite map65_memwrite[] = +{ + { 0x8000, 0xFFFF, map65_write }, + { -1, -1, NULL } +}; + +const mapintf_t map65_intf = +{ + 65, /* mapper number */ + "Irem H-3001", /* mapper name */ + map65_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map65_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map065.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map066.c b/MCUME_teensy/teensynofrendo/map066.c new file mode 100755 index 0000000..1e789a7 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map066.c @@ -0,0 +1,94 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map66.c +** +** mapper 66 interface +** $Id: map066.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 66: GNROM */ +static void map66_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(32, 0x8000, (value >> 4) & 3); + mmc_bankvrom(8, 0x0000, value & 3); +} + +static void map66_init(void) +{ + mmc_bankrom(32, 0x8000, 0); + mmc_bankvrom(8, 0x0000, 0); +} + + +static const map_memwrite map66_memwrite[] = +{ + { 0x8000, 0xFFFF, map66_write }, + { -1, -1, NULL } +}; + +const mapintf_t map66_intf = +{ + 66, /* mapper number */ + "GNROM", /* mapper name */ + map66_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map66_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map066.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map070.c b/MCUME_teensy/teensynofrendo/map070.c new file mode 100755 index 0000000..2299b8a --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map070.c @@ -0,0 +1,115 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map70.c +** +** mapper 70 interface +** $Id: map070.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 70: Arkanoid II, Kamen Rider Club, etc. */ +/* ($8000-$FFFF) D6-D4 = switch $8000-$BFFF */ +/* ($8000-$FFFF) D3-D0 = switch PPU $0000-$1FFF */ +/* ($8000-$FFFF) D7 = switch mirroring */ +static void map70_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, (value >> 4) & 0x07); + mmc_bankvrom(8, 0x0000, value & 0x0F); + + /* Argh! FanWen used the 4-screen bit to determine + ** whether the game uses D7 to switch between + ** horizontal and vertical mirroring, or between + ** one-screen mirroring from $2000 or $2400. + */ + if (mmc_getinfo()->flags & ROM_FLAG_FOURSCREEN) + { + if (value & 0x80) + ppu_mirror(0, 0, 1, 1); /* horiz */ + else + ppu_mirror(0, 1, 0, 1); /* vert */ + } + else + { + int mirror = (value & 0x80) >> 7; + ppu_mirror(mirror, mirror, mirror, mirror); + } +} + +static const map_memwrite map70_memwrite[] = +{ + { 0x8000, 0xFFFF, map70_write }, + { -1, -1, NULL } +}; + +const mapintf_t map70_intf = +{ + 70, /* mapper number */ + "Mapper 70", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map70_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map070.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:13 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map073.c b/MCUME_teensy/teensynofrendo/map073.c new file mode 100755 index 0000000..619ad60 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map073.c @@ -0,0 +1,173 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map073.c +** +** Mapper #73 (Konami VRC3) +** Implementation by Firebug +** $Id: map073.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +static struct +{ + bool enabled; + uint32 counter; +} irq; + +/**************************/ +/* Mapper #73: Salamander */ +/**************************/ +static void map73_init (void) +{ + /* Turn off IRQs */ + irq.enabled = false; + irq.counter = 0x0000; + + /* Done */ + return; +} + +/****************************************/ +/* Mapper #73 callback for IRQ handling */ +/****************************************/ +static void map73_hblank (int vblank) +{ + /* Counter is M2 based so it doesn't matter whether */ + /* the PPU is in its VBlank period or not */ + UNUSED (vblank); + + /* Increment the counter if it is enabled and check for strike */ + if (irq.enabled) + { + /* Is there a constant for cycles per scanline? */ + /* If so, someone ought to substitute it here */ + irq.counter = irq.counter + 114; + + /* Counter triggered on overflow into Q16 */ + if (irq.counter & 0x10000) + { + /* Clip to sixteen-bit word */ + irq.counter &= 0xFFFF; + + /* Trigger the IRQ */ + nes_irq (); + + /* Shut off IRQ counter */ + irq.enabled = false; + } + } +} + +/******************************************/ +/* Mapper #73 write handler ($8000-$FFFF) */ +/******************************************/ +static void map73_write (uint32 address, uint8 value) +{ + switch (address & 0xF000) + { + case 0x8000: irq.counter &= 0xFFF0; + irq.counter |= (uint32) (value); + break; + case 0x9000: irq.counter &= 0xFF0F; + irq.counter |= (uint32) (value << 4); + break; + case 0xA000: irq.counter &= 0xF0FF; + irq.counter |= (uint32) (value << 8); + break; + case 0xB000: irq.counter &= 0x0FFF; + irq.counter |= (uint32) (value << 12); + break; + case 0xC000: if (value & 0x02) irq.enabled = true; + else irq.enabled = false; + break; + case 0xF000: mmc_bankrom (16, 0x8000, value); + default: break; + } + + /* Done */ + return; +} + +/****************************************************/ +/* Shove extra mapper information into a SNSS block */ +/****************************************************/ +static void map73_setstate (SnssMapperBlock *state) +{ + /* TODO: Store SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +/*****************************************************/ +/* Pull extra mapper information out of a SNSS block */ +/*****************************************************/ +static void map73_getstate (SnssMapperBlock *state) +{ + /* TODO: Retrieve SNSS information */ + UNUSED (state); + + /* Done */ + return; +} + +static const map_memwrite map73_memwrite [] = +{ + { 0x8000, 0xFFFF, map73_write }, + { -1, -1, NULL } +}; + +const mapintf_t map73_intf = +{ + 73, /* Mapper number */ + "Konami VRC3", /* Mapper name */ + map73_init, /* Initialization routine */ + NULL, /* VBlank callback */ + map73_hblank, /* HBlank callback */ + map73_getstate, /* Get state (SNSS) */ + map73_setstate, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map73_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map073.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 06:35:05 firebug +** Initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map075.c b/MCUME_teensy/teensynofrendo/map075.c new file mode 100755 index 0000000..5622e2d --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map075.c @@ -0,0 +1,131 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map75.c +** +** mapper 75 interface +** $Id: map075.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + + +static uint8 latch[2]; +static uint8 hibits; + +/* mapper 75: Konami VRC1 */ +static void map75_write(uint32 address, uint8 value) +{ + switch ((address & 0xF000) >> 12) + { + case 0x8: + mmc_bankrom(8, 0x8000, value); + break; + + case 0x9: + hibits = (value & 0x06); + + mmc_bankvrom(4, 0x0000, ((hibits & 0x02) << 3) | latch[0]); + mmc_bankvrom(4, 0x1000, ((hibits & 0x04) << 2) | latch[1]); + + if (value & 1) + ppu_mirror(0, 1, 0, 1); /* vert */ + else + ppu_mirror(0, 0, 1, 1); /* horiz */ + + break; + + case 0xA: + mmc_bankrom(8, 0xA000, value); + break; + + case 0xC: + mmc_bankrom(8, 0xC000, value); + break; + + case 0xE: + latch[0] = (value & 0x0F); + mmc_bankvrom(4, 0x0000, ((hibits & 0x02) << 3) | latch[0]); + break; + + case 0xF: + latch[1] = (value & 0x0F); + mmc_bankvrom(4, 0x1000, ((hibits & 0x04) << 2) | latch[1]); + break; + + default: + break; + } +} + +static const map_memwrite map75_memwrite[] = +{ + { 0x8000, 0xFFFF, map75_write }, + { -1, -1, NULL } +}; + +const mapintf_t map75_intf = +{ + 75, /* mapper number */ + "Konami VRC1", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map75_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map075.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map078.c b/MCUME_teensy/teensynofrendo/map078.c new file mode 100755 index 0000000..306da78 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map078.c @@ -0,0 +1,111 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map78.c +** +** mapper 78 interface +** $Id: map078.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* mapper 78: Holy Diver, Cosmo Carrier */ +/* ($8000-$FFFF) D2-D0 = switch $8000-$BFFF */ +/* ($8000-$FFFF) D7-D4 = switch PPU $0000-$1FFF */ +/* ($8000-$FFFF) D3 = switch mirroring */ +static void map78_write(uint32 address, uint8 value) +{ + UNUSED(address); + + mmc_bankrom(16, 0x8000, value & 7); + mmc_bankvrom(8, 0x0000, (value >> 4) & 0x0F); + + /* Ugh! Same abuse of the 4-screen bit as with Mapper #70 */ + if (mmc_getinfo()->flags & ROM_FLAG_FOURSCREEN) + { + if (value & 0x08) + ppu_mirror(0, 1, 0, 1); /* vert */ + else + ppu_mirror(0, 0, 1, 1); /* horiz */ + } + else + { + int mirror = (value >> 3) & 1; + ppu_mirror(mirror, mirror, mirror, mirror); + } +} + +static const map_memwrite map78_memwrite[] = +{ + { 0x8000, 0xFFFF, map78_write }, + { -1, -1, NULL } +}; + +const mapintf_t map78_intf = +{ + 78, /* mapper number */ + "Mapper 78", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map78_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map078.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.7 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.6 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map079.c b/MCUME_teensy/teensynofrendo/map079.c new file mode 100755 index 0000000..3f92f6e --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map079.c @@ -0,0 +1,92 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map78.c +** +** mapper 78 interface +** $Id: map079.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + + +/* mapper 79: NINA-03/06 */ +static void map79_write(uint32 address, uint8 value) +{ + if ((address & 0x5100) == 0x4100) + { + mmc_bankrom(32, 0x8000, (value >> 3) & 1); + mmc_bankvrom(8, 0x0000, value & 7); + } +} + +static void map79_init(void) +{ + mmc_bankrom(32, 0x8000, 0); + mmc_bankvrom(8, 0x0000, 0); +} + +static const map_memwrite map79_memwrite[] = +{ + { 0x4100, 0x5FFF, map79_write }, /* ????? incorrect range ??? */ + { -1, -1, NULL } +}; + +const mapintf_t map79_intf = +{ + 79, /* mapper number */ + "NINA-03/06", /* mapper name */ + map79_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map79_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map079.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.4 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.3 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map085.c b/MCUME_teensy/teensynofrendo/map085.c new file mode 100755 index 0000000..a1252d0 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map085.c @@ -0,0 +1,232 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map85.c +** +** mapper 85 interface +** $Id: map085.c,v 1.3 2001/05/06 01:42:03 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" + +static struct +{ + int counter, latch; + int wait_state; + bool enabled; +} irq; + +/* mapper 85: Konami VRC7 */ +static void map85_write(uint32 address, uint8 value) +{ + uint8 bank = address >> 12; + uint8 reg = (address & 0x10) | ((address & 0x08) << 1); + + switch (bank) + { + case 0x08: + if (0x10 == reg) + mmc_bankrom(8, 0xA000, value); + else + mmc_bankrom(8, 0x8000, value); + break; + + case 0x09: + /* 0x10 & 0x30 should be trapped by sound emulation */ + mmc_bankrom(8, 0xC000, value); + break; + + case 0x0A: + if (0x10 == reg) + mmc_bankvrom(1, 0x0400, value); + else + mmc_bankvrom(1, 0x0000, value); + break; + + case 0x0B: + if (0x10 == reg) + mmc_bankvrom(1, 0x0C00, value); + else + mmc_bankvrom(1, 0x0800, value); + break; + + case 0x0C: + if (0x10 == reg) + mmc_bankvrom(1, 0x1400, value); + else + mmc_bankvrom(1, 0x1000, value); + break; + + case 0x0D: + if (0x10 == reg) + mmc_bankvrom(1, 0x1C00, value); + else + mmc_bankvrom(1, 0x1800, value); + break; + + case 0x0E: + if (0x10 == reg) + { + irq.latch = value; + } + else + { + switch (value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + } + } + break; + + case 0x0F: + if (0x10 == reg) + { + irq.enabled = irq.wait_state; + } + else + { + irq.wait_state = value & 0x01; + irq.enabled = (value & 0x02) ? true : false; + if (true == irq.enabled) + irq.counter = irq.latch; + } + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("unhandled vrc7 write: $%02X to $%04X\n", value, address); +#endif /* NOFRENDO_DEBUG */ + break; + } +} + +static void map85_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (++irq.counter > 0xFF) + { + irq.counter = irq.latch; + nes_irq(); + + //return; + } + //irq.counter++; + } +} + +static const map_memwrite map85_memwrite[] = +{ + { 0x8000, 0xFFFF, map85_write }, + { -1, -1, NULL } +}; + +static void map85_init(void) +{ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, MMC_LASTBANK); + + mmc_bankvrom(8, 0x0000, 0); + + irq.counter = irq.latch = 0; + irq.wait_state = 0; + irq.enabled = false; +} + +const mapintf_t map85_intf = +{ + 85, /* mapper number */ + "Konami VRC7", /* mapper name */ + map85_init, /* init routine */ + NULL, /* vblank callback */ + map85_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map85_memwrite, /* memory write structure */ + NULL +}; + +/* +** $Log: map085.c,v $ +** Revision 1.3 2001/05/06 01:42:03 neil +** boooo +** +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.10 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.9 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.8 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.7 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.6 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.5 2000/07/23 14:37:21 matt +** added a break statement +** +** Revision 1.4 2000/07/15 23:52:19 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.3 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.2 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.1 2000/07/06 02:47:47 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map087.c b/MCUME_teensy/teensynofrendo/map087.c new file mode 100755 index 0000000..4941167 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map087.c @@ -0,0 +1,85 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map087.c +** +** Mapper #87 (16K VROM switch) +** Implementation by Firebug +** $Id: map087.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +/******************************************/ +/* Mapper #87 write handler ($6000-$7FFF) */ +/******************************************/ +static void map87_write (uint32 address, uint8 value) +{ + /* Within range, address written to is irrelevant */ + UNUSED (address); + + /* Very simple: 8K CHR page is selected by D1 */ + if (value & 0x02) mmc_bankvrom (8, 0x0000, 0x01); + else mmc_bankvrom (8, 0x0000, 0x00); + + /* Done */ + return; +} + +static const map_memwrite map87_memwrite [] = +{ + { 0x6000, 0x7FFF, map87_write }, + { -1, -1, NULL } +}; + +const mapintf_t map87_intf = +{ + 87, /* Mapper number */ + "16K VROM switch", /* Mapper name */ + NULL, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + NULL, /* Get state (SNSS) */ + NULL, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map87_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map087.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 06:34:44 firebug +** Initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map093.c b/MCUME_teensy/teensynofrendo/map093.c new file mode 100755 index 0000000..80b9be5 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map093.c @@ -0,0 +1,77 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map93.c +** +** mapper 93 interface +** $Id: map093.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +static void map93_write(uint32 address, uint8 value) +{ + UNUSED(address); + + /* ($8000-$FFFF) D7-D4 = switch $8000-$BFFF D0: mirror */ + mmc_bankrom(16, 0x8000, value >> 4); + + if (value & 1) + ppu_mirror(0, 1, 0, 1); /* vert */ + else + ppu_mirror(0, 0, 1, 1); /* horiz */ +} + +static const map_memwrite map93_memwrite[] = +{ + { 0x8000, 0xFFFF, map93_write }, + { -1, -1, NULL } +}; + +const mapintf_t map93_intf = +{ + 93, /* mapper number */ + "Mapper 93", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map93_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map093.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/12/11 12:33:48 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map094.c b/MCUME_teensy/teensynofrendo/map094.c new file mode 100755 index 0000000..04f3922 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map094.c @@ -0,0 +1,87 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map94.c +** +** mapper 94 interface +** $Id: map094.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 94: Senjou no Ookami */ +static void map94_write(uint32 address, uint8 value) +{ + UNUSED(address); + + /* ($8000-$FFFF) D7-D2 = switch $8000-$BFFF */ + mmc_bankrom(16, 0x8000, value >> 2); +} + +static const map_memwrite map94_memwrite[] = +{ + { 0x8000, 0xFFFF, map94_write }, + { -1, -1, NULL } +}; + +const mapintf_t map94_intf = +{ + 94, /* mapper number */ + "Mapper 94", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map94_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map094.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.5 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.4 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.3 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map099.c b/MCUME_teensy/teensynofrendo/map099.c new file mode 100755 index 0000000..01ceec4 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map099.c @@ -0,0 +1,90 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map99.c +** +** mapper 99 interface +** $Id: map099.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" + +/* Switch VROM for VS games */ +static void map99_vromswitch(uint8 value) +{ + int bank = (value & 0x04) >> 2; + mmc_bankvrom(8, 0x0000, bank); +} + +/* mapper 99: VS. System */ +static const void map99_init(void) +{ + ppu_mirror(0, 1, 2, 3); + ppu_setvromswitch(map99_vromswitch); +} + +const mapintf_t map99_intf = +{ + 99, /* mapper number */ + "VS. System", /* mapper name */ + map99_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + NULL, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map099.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.6 2000/10/22 19:17:47 matt +** mapper cleanups galore +** +** Revision 1.5 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.4 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/05 05:05:18 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map160.c b/MCUME_teensy/teensynofrendo/map160.c new file mode 100755 index 0000000..9b53339 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map160.c @@ -0,0 +1,140 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map160.c +** +** mapper 160 interface +** $Id: map160.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes.h" + +static struct +{ + bool enabled, expired; + int counter; + int latch_c005, latch_c003; +} irq; + +static void map160_write(uint32 address, uint8 value) +{ + if (address >= 0x8000 && address <= 0x8003) + { + mmc_bankrom(8, 0x8000 + 0x2000 * (address & 3), value); + } + else if (address >= 0x9000 && address <= 0x9007) + { + mmc_bankvrom(1, 0x400 * (address & 7), value); + } + else if (0xC002 == address) + { + irq.enabled = false; + irq.latch_c005 = irq.latch_c003; + } + else if (0xC003 == address) + { + if (false == irq.expired) + { + irq.counter = value; + } + else + { + irq.expired = false; + irq.enabled = true; + irq.counter = irq.latch_c005; + } + } + else if (0xC005 == address) + { + irq.latch_c005 = value; + irq.counter = value; + } +#ifdef NOFRENDO_DEBUG + else + { + log_printf("mapper 160: untrapped write $%02X to $%04X\n", value, address); + } +#endif /* NOFRENDO_DEBUG */ +} + +static void map160_hblank(int vblank) +{ + if (!vblank) + { + if (ppu_enabled() && irq.enabled) + { + if (0 == irq.counter && false == irq.expired) + { + irq.expired = true; + nes_irq(); + } + else + { + irq.counter--; + } + } + } +} + +static void map160_init(void) +{ + irq.enabled = false; + irq.expired = false; + irq.counter = 0; + irq.latch_c003 = irq.latch_c005 = 0; +} + +static const map_memwrite map160_memwrite[] = +{ + { 0x8000, 0xFFFF, map160_write }, + { -1, -1, NULL } +}; + +const mapintf_t map160_intf = +{ + 160, /* mapper number */ + "Aladdin (pirate)", /* mapper name */ + map160_init, /* init routine */ + NULL, /* vblank callback */ + map160_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map160_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map160.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/27 04:24:46 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map229.c b/MCUME_teensy/teensynofrendo/map229.c new file mode 100755 index 0000000..f3114fa --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map229.c @@ -0,0 +1,114 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map229.c +** +** Mapper #229 (31 in 1) +** Implementation by Firebug +** Mapper information courtesy of Mark Knibbs +** $Id: map229.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +** +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "libsnss.h" +#include "log.h" + +/************************/ +/* Mapper #229: 31 in 1 */ +/************************/ +static void map229_init (void) +{ + /* On reset, PRG is set to first 32K and CHR to first 8K */ + mmc_bankrom (32, 0x8000, 0x00); + mmc_bankvrom (8, 0x0000, 0x00); + + /* Done */ + return; +} + +/*******************************************/ +/* Mapper #229 write handler ($8000-$FFFF) */ +/*******************************************/ +static void map229_write (uint32 address, uint8 value) +{ + /* Value written is irrelevant */ + UNUSED (value); + + /* A4-A0 sets 8K CHR page */ + mmc_bankvrom (8, 0x0000, (uint8) (address & 0x1F)); + + /* If A4-A1 are all low then select the first 32K, */ + /* otherwise select a 16K bank at both $8000 and $C000 */ + if ((address & 0x1E) == 0x00) + { + mmc_bankrom (32, 0x8000, 0x00); + } + else + { + mmc_bankrom (16, 0x8000, (uint8) (address & 0x1F)); + mmc_bankrom (16, 0xC000, (uint8) (address & 0x1F)); + } + + /* A5: mirroring (low = vertical, high = horizontal) */ + if (address & 0x20) ppu_mirror(0, 0, 1, 1); + else ppu_mirror(0, 1, 0, 1); + + /* Done */ + return; +} + +static const map_memwrite map229_memwrite [] = +{ + { 0x8000, 0xFFFF, map229_write }, + { -1, -1, NULL } +}; + +const mapintf_t map229_intf = +{ + 229, /* Mapper number */ + "31 in 1 (bootleg)", /* Mapper name */ + map229_init, /* Initialization routine */ + NULL, /* VBlank callback */ + NULL, /* HBlank callback */ + NULL, /* Get state (SNSS) */ + NULL, /* Set state (SNSS) */ + NULL, /* Memory read structure */ + map229_memwrite, /* Memory write structure */ + NULL /* External sound device */ +}; + +/* +** $Log: map229.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1 2001/04/27 10:57:41 neil +** wheee +** +** Revision 1.1 2000/12/30 06:34:31 firebug +** Initial revision +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/map231.c b/MCUME_teensy/teensynofrendo/map231.c new file mode 100755 index 0000000..5946b2b --- /dev/null +++ b/MCUME_teensy/teensynofrendo/map231.c @@ -0,0 +1,95 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map231.c +** +** mapper 231 interface +** $Id: map231.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper 231: NINA-07, used in Wally Bear and the NO! Gang */ + +static void map231_init(void) +{ + mmc_bankrom(32, 0x8000, MMC_LASTBANK); +} + +static void map231_write(uint32 address, uint8 value) +{ + int bank, vbank; + UNUSED(address); + + bank = ((value & 0x80) >> 5) | (value & 0x03); + vbank = (value >> 4) & 0x07; + + mmc_bankrom(32, 0x8000, bank); + mmc_bankvrom(8, 0x0000, vbank); +} + +static const map_memwrite map231_memwrite[] = +{ + { 0x8000, 0xFFFF, map231_write }, + { -1, -1, NULL } +}; + +const mapintf_t map231_intf = +{ + 231, /* mapper number */ + "NINA-07", /* mapper name */ + map231_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map231_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: map231.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.4 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.3 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.2 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.1 2000/07/11 03:14:18 melanson +** Initial commit for mappers 16, 34, and 231 +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/mapvrc.c b/MCUME_teensy/teensynofrendo/mapvrc.c new file mode 100755 index 0000000..67124f2 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/mapvrc.c @@ -0,0 +1,452 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** map_vrc.c +** +** VRC mapper interface +** $Id: mapvrc.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" +#include "nes.h" +#include "log.h" + +#define VRC_VBANK(bank, value, high) \ +{ \ + if ((high)) \ + highnybbles[(bank)] = (value) & 0x0F; \ + else \ + lownybbles[(bank)] = (value) & 0x0F; \ + mmc_bankvrom(1, (bank) << 10, (highnybbles[(bank)] << 4)+lownybbles[(bank)]); \ +} + +static struct +{ + int counter, enabled; + int latch, wait_state; +} irq; + +static int select_c000 = 0; +static uint8 lownybbles[8]; +static uint8 highnybbles[8]; + +static void vrc_init(void) +{ + irq.counter = irq.enabled = 0; + irq.latch = irq.wait_state = 0; +} + +static void map21_write(uint32 address, uint8 value) +{ + switch (address) + { + case 0x8000: + if (select_c000) + mmc_bankrom(8, 0xC000,value); + else + mmc_bankrom(8, 0x8000,value); + break; + + case 0x9000: + switch (value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + + default: + break; + } + break; + case 0x9002: select_c000=(value&0x02)>>1; break; + case 0xA000: mmc_bankrom(8, 0xA000,value); break; + + case 0xB000: VRC_VBANK(0,value,0); break; + case 0xB002: + case 0xB040: VRC_VBANK(0,value,1); break; + case 0xB001: + case 0xB004: + case 0xB080: VRC_VBANK(1,value,0); break; + case 0xB003: + case 0xB006: + case 0xB0C0: VRC_VBANK(1,value,1); break; + case 0xC000: VRC_VBANK(2,value,0); break; + case 0xC002: + case 0xC040: VRC_VBANK(2,value,1); break; + case 0xC001: + case 0xC004: + case 0xC080: VRC_VBANK(3,value,0); break; + case 0xC003: + case 0xC006: + case 0xC0C0: VRC_VBANK(3,value,1); break; + case 0xD000: VRC_VBANK(4,value,0); break; + case 0xD002: + case 0xD040: VRC_VBANK(4,value,1); break; + case 0xD001: + case 0xD004: + case 0xD080: VRC_VBANK(5,value,0); break; + case 0xD003: + case 0xD006: + case 0xD0C0: VRC_VBANK(5,value,1); break; + case 0xE000: VRC_VBANK(6,value,0); break; + case 0xE002: + case 0xE040: VRC_VBANK(6,value,1); break; + case 0xE001: + case 0xE004: + case 0xE080: VRC_VBANK(7,value,0); break; + case 0xE003: + case 0xE006: + case 0xE0C0: VRC_VBANK(7,value,1); break; + + case 0xF000: + irq.latch &= 0xF0; + irq.latch |= (value & 0x0F); + break; + case 0xF002: + case 0xF040: + irq.latch &= 0x0F; + irq.latch |= ((value & 0x0F) << 4); + break; + case 0xF004: + case 0xF001: + case 0xF080: + irq.enabled = (value >> 1) & 0x01; + irq.wait_state = value & 0x01; + irq.counter = irq.latch; + break; + case 0xF006: + case 0xF003: + case 0xF0C0: + irq.enabled = irq.wait_state; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("wrote $%02X to $%04X", value, address); +#endif + break; + } +} + +static void map22_write(uint32 address, uint8 value) +{ + int reg = address >> 12; + + switch (reg) + { + case 0x8: + mmc_bankrom(8, 0x8000, value); + break; + + case 0xA: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x9: + switch (value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(1, 1, 1, 1); + break; + + case 3: + ppu_mirror(0, 0, 0, 0); + break; + } + break; + + case 0xB: + case 0xC: + case 0xD: + case 0xE: + { + int loc = (((reg - 0xB) << 1) + (address & 1)) << 10; + mmc_bankvrom(1, loc, value >> 1); + } + break; + + default: + break; + } +} + +static void map23_write(uint32 address, uint8 value) +{ + switch (address) + { + case 0x8000: + case 0x8FFF: + mmc_bankrom(8, 0x8000, value); + break; + + case 0xA000: + case 0xAFFF: + mmc_bankrom(8, 0xA000, value); + break; + + case 0x9000: + case 0x9004: + case 0x9008: + switch(value & 3) + { + case 0: + ppu_mirror(0, 1, 0, 1); /* vertical */ + break; + + case 1: + ppu_mirror(0, 0, 1, 1); /* horizontal */ + break; + + case 2: + ppu_mirror(0, 0, 0, 0); + break; + + case 3: + ppu_mirror(1, 1, 1, 1); + break; + } + break; + + case 0xB000: VRC_VBANK(0,value,0); break; + case 0xB001: + case 0xB004: VRC_VBANK(0,value,1); break; + case 0xB002: + case 0xB008: VRC_VBANK(1,value,0); break; + case 0xB003: + case 0xB00C: VRC_VBANK(1,value,1); break; + case 0xC000: VRC_VBANK(2,value,0); break; + case 0xC001: + case 0xC004: VRC_VBANK(2,value,1); break; + case 0xC002: + case 0xC008: VRC_VBANK(3,value,0); break; + case 0xC003: + case 0xC00C: VRC_VBANK(3,value,1); break; + case 0xD000: VRC_VBANK(4,value,0); break; + case 0xD001: + case 0xD004: VRC_VBANK(4,value,1); break; + case 0xD002: + case 0xD008: VRC_VBANK(5,value,0); break; + case 0xD003: + case 0xD00C: VRC_VBANK(5,value,1); break; + case 0xE000: VRC_VBANK(6,value,0); break; + case 0xE001: + case 0xE004: VRC_VBANK(6,value,1); break; + case 0xE002: + case 0xE008: VRC_VBANK(7,value,0); break; + case 0xE003: + case 0xE00C: VRC_VBANK(7,value,1); break; + + case 0xF000: + irq.latch &= 0xF0; + irq.latch |= (value & 0x0F); + break; + + case 0xF004: + irq.latch &= 0x0F; + irq.latch |= ((value & 0x0F) << 4); + break; + + case 0xF008: + irq.enabled = (value >> 1) & 0x01; + irq.wait_state = value & 0x01; + irq.counter = irq.latch; + break; + + case 0xF00C: + irq.enabled = irq.wait_state; + break; + + default: +#ifdef NOFRENDO_DEBUG + log_printf("wrote $%02X to $%04X",value,address); +#endif + break; + } +} + +static void vrc_hblank(int vblank) +{ + UNUSED(vblank); + + if (irq.enabled) + { + if (256 == ++irq.counter) + { + irq.counter = irq.latch; + nes_irq(); + //irq.enabled = false; + irq.enabled = irq.wait_state; + } + } +} + + + +static map_memwrite map21_memwrite[] = +{ + { 0x8000, 0xFFFF, map21_write }, + { -1, -1, NULL } +}; + +static map_memwrite map22_memwrite[] = +{ + { 0x8000, 0xFFFF, map22_write }, + { -1, -1, NULL } +}; + +static map_memwrite map23_memwrite[] = +{ + { 0x8000, 0xFFFF, map23_write }, + { -1, -1, NULL } +}; + +static void map21_getstate(SnssMapperBlock *state) +{ + state->extraData.mapper21.irqCounter = irq.counter; + state->extraData.mapper21.irqCounterEnabled = irq.enabled; +} + +static void map21_setstate(SnssMapperBlock *state) +{ + irq.counter = state->extraData.mapper21.irqCounter; + irq.enabled = state->extraData.mapper21.irqCounterEnabled; +} + +const mapintf_t map21_intf = +{ + 21, /* mapper number */ + "Konami VRC4 A", /* mapper name */ + vrc_init, /* init routine */ + NULL, /* vblank callback */ + vrc_hblank, /* hblank callback */ + map21_getstate, /* get state (snss) */ + map21_setstate, /* set state (snss) */ + NULL, /* memory read structure */ + map21_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +const mapintf_t map22_intf = +{ + 22, /* mapper number */ + "Konami VRC2 A", /* mapper name */ + vrc_init, /* init routine */ + NULL, /* vblank callback */ + NULL, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map22_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +const mapintf_t map23_intf = +{ + 23, /* mapper number */ + "Konami VRC2 B", /* mapper name */ + vrc_init, /* init routine */ + NULL, /* vblank callback */ + vrc_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map23_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +const mapintf_t map25_intf = +{ + 25, /* mapper number */ + "Konami VRC4 B", /* mapper name */ + NULL, /* init routine */ + NULL, /* vblank callback */ + vrc_hblank, /* hblank callback */ + NULL, /* get state (snss) */ + NULL, /* set state (snss) */ + NULL, /* memory read structure */ + map21_memwrite, /* memory write structure */ + NULL /* external sound device */ +}; + +/* +** $Log: mapvrc.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:19:33 matt +** changed directory structure +** +** Revision 1.10 2000/10/22 19:17:46 matt +** mapper cleanups galore +** +** Revision 1.9 2000/10/22 15:03:14 matt +** simplified mirroring +** +** Revision 1.8 2000/10/21 19:33:38 matt +** many more cleanups +** +** Revision 1.7 2000/10/10 13:58:17 matt +** stroustrup squeezing his way in the door +** +** Revision 1.6 2000/08/16 02:50:11 matt +** random mapper cleanups +** +** Revision 1.5 2000/07/15 23:52:20 matt +** rounded out a bunch more mapper interfaces +** +** Revision 1.4 2000/07/10 13:51:25 matt +** using generic nes_irq() routine now +** +** Revision 1.3 2000/07/10 05:29:03 matt +** cleaned up some mirroring issues +** +** Revision 1.2 2000/07/06 02:48:43 matt +** clearly labelled structure members +** +** Revision 1.1 2000/07/06 01:01:56 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/mmc5_snd.c b/MCUME_teensy/teensynofrendo/mmc5_snd.c new file mode 100755 index 0000000..29fb00e --- /dev/null +++ b/MCUME_teensy/teensynofrendo/mmc5_snd.c @@ -0,0 +1,447 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmc5_snd.c +** +** Nintendo MMC5 sound emulation +** $Id: mmc5_snd.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "mmc5_snd.h" +#include "nes_apu.h" + +/* TODO: encapsulate apu/mmc5 rectangle */ + +#define APU_OVERSAMPLE +#define APU_VOLUME_DECAY(x) ((x) -= ((x) >> 7)) + +/* look up table madness */ +static int32 decay_lut[16]; +static int vbl_lut[32]; + +/* various sound constants for sound emulation */ +/* vblank length table used for rectangles, triangle, noise */ +static const uint8 vbl_length[32] = +{ + 5, 127, 10, 1, 19, 2, 40, 3, 80, 4, 30, 5, 7, 6, 13, 7, + 6, 8, 12, 9, 24, 10, 48, 11, 96, 12, 36, 13, 8, 14, 16, 15 +}; + +/* ratios of pos/neg pulse for rectangle waves +** 2/16 = 12.5%, 4/16 = 25%, 8/16 = 50%, 12/16 = 75% +** (4-bit adder in rectangles, hence the 16) +*/ +static const int duty_lut[4] = +{ + 2, 4, 8, 12 +}; + + +#define MMC5_WRA0 0x5000 +#define MMC5_WRA1 0x5001 +#define MMC5_WRA2 0x5002 +#define MMC5_WRA3 0x5003 +#define MMC5_WRB0 0x5004 +#define MMC5_WRB1 0x5005 +#define MMC5_WRB2 0x5006 +#define MMC5_WRB3 0x5007 +#define MMC5_SMASK 0x5015 + +typedef struct mmc5rectangle_s +{ + uint8 regs[4]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + bool fixed_envelope; + bool holdnote; + uint8 volume; + + int32 env_phase; + int32 env_delay; + uint8 env_vol; + + int vbl_length; + uint8 adder; + int duty_flip; +} mmc5rectangle_t; + +typedef struct mmc5dac_s +{ + int32 output; + bool enabled; +} mmc5dac_t; + + +static struct +{ + float incsize; + uint8 mul[2]; + mmc5rectangle_t rect[2]; + mmc5dac_t dac; +} mmc5; + + +#define MMC5_RECTANGLE_OUTPUT chan->output_vol +static int32 mmc5_rectangle(mmc5rectangle_t *chan) +{ + int32 output; + +#ifdef APU_OVERSAMPLE + int num_times; + int32 total; +#endif /* APU_OVERSAMPLE */ + + /* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle + ** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on + ** reg2: 8 bits of freq + ** reg3: 0-2=high freq, 7-4=vbl length counter + */ + + APU_VOLUME_DECAY(chan->output_vol); + + if (false == chan->enabled || 0 == chan->vbl_length) + return MMC5_RECTANGLE_OUTPUT; + + /* vbl length counter */ + if (false == chan->holdnote) + chan->vbl_length--; + + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ + chan->env_phase -= 4; /* 240/60 */ + while (chan->env_phase < 0) + { + chan->env_phase += chan->env_delay; + + if (chan->holdnote) + chan->env_vol = (chan->env_vol + 1) & 0x0F; + else if (chan->env_vol < 0x0F) + chan->env_vol++; + } + + if (chan->freq < 4) + return MMC5_RECTANGLE_OUTPUT; + + chan->accum -= mmc5.incsize; /* # of cycles per sample */ + if (chan->accum >= 0) + return MMC5_RECTANGLE_OUTPUT; + +#ifdef APU_OVERSAMPLE + num_times = total = 0; + + if (chan->fixed_envelope) + output = chan->volume << 8; /* fixed volume */ + else + output = (chan->env_vol ^ 0x0F) << 8; +#endif + + while (chan->accum < 0) + { + chan->accum += chan->freq; + chan->adder = (chan->adder + 1) & 0x0F; + +#ifdef APU_OVERSAMPLE + if (chan->adder < chan->duty_flip) + total += output; + else + total -= output; + + num_times++; +#endif + } + +#ifdef APU_OVERSAMPLE + chan->output_vol = total / num_times; +#else + if (chan->fixed_envelope) + output = chan->volume << 8; /* fixed volume */ + else + output = (chan->env_vol ^ 0x0F) << 8; + + if (0 == chan->adder) + chan->output_vol = output; + else if (chan->adder == chan->duty_flip) + chan->output_vol = -output; +#endif + + return MMC5_RECTANGLE_OUTPUT; +} + +static uint8 mmc5_read(uint32 address) +{ + uint32 retval; + + retval = (uint32) (mmc5.mul[0] * mmc5.mul[1]); + + switch (address) + { + case 0x5205: + return (uint8) retval; + + case 0x5206: + return (uint8) (retval >> 8); + + default: + return 0xFF; + } +} + +/* mix vrcvi sound channels together */ +static int32 mmc5_process(void) +{ + int32 accum; + + accum = mmc5_rectangle(&mmc5.rect[0]); + accum += mmc5_rectangle(&mmc5.rect[1]); + if (mmc5.dac.enabled) + accum += mmc5.dac.output; + + return accum; +} + +/* write to registers */ +static void mmc5_write(uint32 address, uint8 value) +{ + int chan; + + switch (address) + { + /* rectangles */ + case MMC5_WRA0: + case MMC5_WRB0: + chan = (address & 4) ? 1 : 0; + mmc5.rect[chan].regs[0] = value; + + mmc5.rect[chan].volume = value & 0x0F; + mmc5.rect[chan].env_delay = decay_lut[value & 0x0F]; + mmc5.rect[chan].holdnote = (value & 0x20) ? true : false; + mmc5.rect[chan].fixed_envelope = (value & 0x10) ? true : false; + mmc5.rect[chan].duty_flip = duty_lut[value >> 6]; + break; + + case MMC5_WRA1: + case MMC5_WRB1: + break; + + case MMC5_WRA2: + case MMC5_WRB2: + chan = (address & 4) ? 1 : 0; + mmc5.rect[chan].regs[2] = value; + if (mmc5.rect[chan].enabled) + mmc5.rect[chan].freq = (((mmc5.rect[chan].regs[3] & 7) << 8) + value) + 1; + break; + + case MMC5_WRA3: + case MMC5_WRB3: + chan = (address & 4) ? 1 : 0; + mmc5.rect[chan].regs[3] = value; + + if (mmc5.rect[chan].enabled) + { + mmc5.rect[chan].vbl_length = vbl_lut[value >> 3]; + mmc5.rect[chan].env_vol = 0; + mmc5.rect[chan].freq = (((value & 7) << 8) + mmc5.rect[chan].regs[2]) + 1; + mmc5.rect[chan].adder = 0; + } + break; + + case MMC5_SMASK: + if (value & 0x01) + { + mmc5.rect[0].enabled = true; + } + else + { + mmc5.rect[0].enabled = false; + mmc5.rect[0].vbl_length = 0; + } + + if (value & 0x02) + { + mmc5.rect[1].enabled = true; + } + else + { + mmc5.rect[1].enabled = false; + mmc5.rect[1].vbl_length = 0; + } + + break; + + case 0x5010: + if (value & 0x01) + mmc5.dac.enabled = true; + else + mmc5.dac.enabled = false; + break; + + case 0x5011: + mmc5.dac.output = (value ^ 0x80) << 8; + break; + + case 0x5205: + mmc5.mul[0] = value; + break; + + case 0x5206: + mmc5.mul[1] = value; + break; + + case 0x5114: + case 0x5115: + /* ???? */ + break; + + default: + break; + } +} + +/* reset state of vrcvi sound channels */ +static void mmc5_reset(void) +{ + int i; + apu_t apu; + + + /* get the phase period from the apu */ + apu_getcontext(&apu); + mmc5.incsize = apu.cycle_rate; + + for (i = 0x5000; i < 0x5008; i++) + mmc5_write(i, 0); + + mmc5_write(0x5010, 0); + mmc5_write(0x5011, 0); +} + +static int mmc5_init(void) +{ + int i, num_samples; + apu_t apu; + + apu_getcontext(&apu); + num_samples = apu.num_samples; + + /* lut used for enveloping and frequency sweeps */ + for (i = 0; i < 16; i++) + decay_lut[i] = num_samples * (i + 1); + + /* used for note length, based on vblanks and size of audio buffer */ + for (i = 0; i < 32; i++) + vbl_lut[i] = vbl_length[i] * num_samples; + + return 0; +} + +static const apu_memread mmc5_memread[] = +{ + { 0x5205, 0x5206, mmc5_read }, + { -1, -1, NULL } +}; + +static const apu_memwrite mmc5_memwrite[] = +{ + { 0x5000, 0x5015, mmc5_write }, + { 0x5114, 0x5115, mmc5_write }, + { 0x5205, 0x5206, mmc5_write }, + { -1, -1, NULL } +}; + +const apuext_t mmc5_ext = +{ + mmc5_init, + NULL, /* no shutdown */ + mmc5_reset, + mmc5_process, + mmc5_memread, + mmc5_memwrite +}; + +/* +** $Log: mmc5_snd.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/13 00:57:08 matt +** doesn't look as nasty now +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.16 2000/10/17 11:56:42 matt +** selectable apu base frequency +** +** Revision 1.15 2000/10/10 14:04:29 matt +** make way for bjarne +** +** Revision 1.14 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.13 2000/10/08 17:50:18 matt +** appears $5114/$5115 do something +** +** Revision 1.12 2000/10/03 11:56:20 matt +** better support for optional sound ext routines +** +** Revision 1.11 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.10 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.9 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.8 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.7 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.6 2000/07/04 04:51:41 matt +** cleanups +** +** Revision 1.5 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.4 2000/06/28 22:03:51 matt +** fixed stupid oversight +** +** Revision 1.3 2000/06/20 20:46:58 matt +** minor cleanups +** +** Revision 1.2 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.1 2000/06/20 00:06:47 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/mmc5_snd.h b/MCUME_teensy/teensynofrendo/mmc5_snd.h new file mode 100644 index 0000000..1681611 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/mmc5_snd.h @@ -0,0 +1,70 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmc5_snd.h +** +** Nintendo MMC5 sound emulation header +** $Id: mmc5_snd.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _MMC5_SND_H_ +#define _MMC5_SND_H_ + +#include "nes_apu.h" + +extern const apuext_t mmc5_ext; + +#endif /* !_MMC5_SND_H_ */ + +/* +** $Log: mmc5_snd.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/13 00:57:08 matt +** doesn't look as nasty now +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.6 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.5 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.4 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.3 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.2 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.1 2000/06/20 00:06:47 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/mmclist.c b/MCUME_teensy/teensynofrendo/mmclist.c new file mode 100755 index 0000000..3e0d5e7 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/mmclist.c @@ -0,0 +1,122 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmclist.c +** +** list of all mapper interfaces +** $Id: mmclist.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nes_mmc.h" + +/* mapper interfaces */ +extern mapintf_t map0_intf; +extern mapintf_t map1_intf; +extern mapintf_t map2_intf; +extern mapintf_t map3_intf; +extern mapintf_t map4_intf; +extern mapintf_t map5_intf; +extern mapintf_t map7_intf; +extern mapintf_t map8_intf; +extern mapintf_t map9_intf; +extern mapintf_t map11_intf; +extern mapintf_t map15_intf; +extern mapintf_t map16_intf; +extern mapintf_t map18_intf; +extern mapintf_t map19_intf; +extern mapintf_t map21_intf; +extern mapintf_t map22_intf; +extern mapintf_t map23_intf; +extern mapintf_t map24_intf; +extern mapintf_t map25_intf; +extern mapintf_t map32_intf; +extern mapintf_t map33_intf; +extern mapintf_t map34_intf; +extern mapintf_t map40_intf; +extern mapintf_t map64_intf; +extern mapintf_t map65_intf; +extern mapintf_t map66_intf; +extern mapintf_t map70_intf; +extern mapintf_t map75_intf; +extern mapintf_t map78_intf; +extern mapintf_t map79_intf; +extern mapintf_t map85_intf; +extern mapintf_t map94_intf; +extern mapintf_t map99_intf; +extern mapintf_t map231_intf; + +/* implemented mapper interfaces */ +const mapintf_t *mappers[] = +{ + &map0_intf, + &map1_intf, + &map2_intf, + &map3_intf, + &map4_intf, + &map5_intf, + &map7_intf, + &map8_intf, + &map9_intf, + &map11_intf, + &map15_intf, + &map16_intf, + &map18_intf, + &map19_intf, + &map21_intf, + &map22_intf, + &map23_intf, + &map24_intf, + &map25_intf, + &map32_intf, + &map33_intf, + &map34_intf, + &map40_intf, + &map64_intf, + &map65_intf, + &map66_intf, + &map70_intf, + &map75_intf, + &map78_intf, + &map79_intf, + &map85_intf, + &map94_intf, + &map99_intf, + &map231_intf, + NULL +}; + +/* +** $Log: mmclist.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.2 2000/10/10 13:05:30 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.1 2000/07/31 04:27:39 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/mmclist.h b/MCUME_teensy/teensynofrendo/mmclist.h new file mode 100755 index 0000000..da2ac93 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/mmclist.h @@ -0,0 +1,49 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** mmclist.h +** +** list of all mapper interfaces +** $Id: mmclist.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _MMCLIST_H_ +#define _MMCLIST_H_ + +#include "nes_mmc.h" + +extern mapintf_t *mappers[]; + +#endif /* !_MMCLIST_H_ */ + +/* +** $Log: mmclist.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.1 2000/07/31 04:27:40 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes.c b/MCUME_teensy/teensynofrendo/nes.c new file mode 100644 index 0000000..c707cf8 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes.c @@ -0,0 +1,762 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes.c +** +** NES hardware related routines +** $Id: nes.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include +#include "noftypes.h" +#include "nes6502.h" +#include "log.h" +#include "osd.h" +#include "nes.h" +#include "nes_apu.h" +#include "nes_ppu.h" +#include "nes_rom.h" +#include "nes_mmc.h" +#include "vid_drv.h" +#include "nofrendo.h" + + +#define NES_CLOCK_DIVIDER 12 +//#define NES_MASTER_CLOCK 21477272.727272727272 +#define NES_MASTER_CLOCK (236250000 / 11) +#define NES_SCANLINE_CYCLES (1364.0 / NES_CLOCK_DIVIDER) +#define NES_FIQ_PERIOD (NES_MASTER_CLOCK / NES_CLOCK_DIVIDER / 60) + +#define NES_RAMSIZE 0x800 + +#define NES_SKIP_LIMIT (NES_REFRESH_RATE / 5) /* 12 or 10, depending on PAL/NTSC */ + +static nes_t nes; + +/* find out if a file is ours */ +int nes_isourfile(const char *filename) +{ + return rom_checkmagic(filename); +} + +/* TODO: just asking for problems -- please remove */ +nes_t *nes_getcontextptr(void) +{ + return &nes; +} + +void nes_getcontext(nes_t *machine) +{ + apu_getcontext(nes.apu); + ppu_getcontext(nes.ppu); + nes6502_getcontext(nes.cpu); + mmc_getcontext(nes.mmc); + + *machine = nes; +} + +void nes_setcontext(nes_t *machine) +{ + ASSERT(machine); + + apu_setcontext(machine->apu); + ppu_setcontext(machine->ppu); + nes6502_setcontext(machine->cpu); + mmc_setcontext(machine->mmc); + + nes = *machine; +} + +static uint8 ram_read(uint32 address) +{ + return nes.cpu->mem_page[0][address & (NES_RAMSIZE - 1)]; +} + +static void ram_write(uint32 address, uint8 value) +{ + nes.cpu->mem_page[0][address & (NES_RAMSIZE - 1)] = value; +} + +static void write_protect(uint32 address, uint8 value) +{ + /* don't allow write to go through */ + UNUSED(address); + UNUSED(value); +} + +static uint8 read_protect(uint32 address) +{ + /* don't allow read to go through */ + UNUSED(address); + + return 0xFF; +} + +#define LAST_MEMORY_HANDLER { -1, -1, NULL } +/* read/write handlers for standard NES */ +static const nes6502_memread default_readhandler[] = +{ + { 0x0800, 0x1FFF, ram_read }, + { 0x2000, 0x3FFF, ppu_read }, + { 0x4000, 0x4015, apu_read }, + { 0x4016, 0x4017, ppu_readhigh }, + LAST_MEMORY_HANDLER +}; + +static const nes6502_memwrite default_writehandler[] = +{ + { 0x0800, 0x1FFF, ram_write }, + { 0x2000, 0x3FFF, ppu_write }, + { 0x4000, 0x4013, apu_write }, + { 0x4015, 0x4015, apu_write }, + { 0x4014, 0x4017, ppu_writehigh }, + LAST_MEMORY_HANDLER +}; + +/* this big nasty boy sets up the address handlers that the CPU uses */ +static void build_address_handlers(nes_t *machine) +{ + int count, num_handlers = 0; + mapintf_t *intf; + + ASSERT(machine); + intf = machine->mmc->intf; + + memset(machine->readhandler, 0, sizeof(machine->readhandler)); + memset(machine->writehandler, 0, sizeof(machine->writehandler)); + + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == default_readhandler[count].read_func) + break; + + memcpy(&machine->readhandler[num_handlers], &default_readhandler[count], + sizeof(nes6502_memread)); + } + + if (intf->sound_ext) + { + if (NULL != intf->sound_ext->mem_read) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->sound_ext->mem_read[count].read_func) + break; + + memcpy(&machine->readhandler[num_handlers], &intf->sound_ext->mem_read[count], + sizeof(nes6502_memread)); + } + } + } + + if (NULL != intf->mem_read) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->mem_read[count].read_func) + break; + + memcpy(&machine->readhandler[num_handlers], &intf->mem_read[count], + sizeof(nes6502_memread)); + } + } + + /* TODO: poof! numbers */ + machine->readhandler[num_handlers].min_range = 0x4018; + machine->readhandler[num_handlers].max_range = 0x5FFF; + machine->readhandler[num_handlers].read_func = read_protect; + num_handlers++; + machine->readhandler[num_handlers].min_range = -1; + machine->readhandler[num_handlers].max_range = -1; + machine->readhandler[num_handlers].read_func = NULL; + num_handlers++; + ASSERT(num_handlers <= MAX_MEM_HANDLERS); + + num_handlers = 0; + + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == default_writehandler[count].write_func) + break; + + memcpy(&machine->writehandler[num_handlers], &default_writehandler[count], + sizeof(nes6502_memwrite)); + } + + if (intf->sound_ext) + { + if (NULL != intf->sound_ext->mem_write) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->sound_ext->mem_write[count].write_func) + break; + + memcpy(&machine->writehandler[num_handlers], &intf->sound_ext->mem_write[count], + sizeof(nes6502_memwrite)); + } + } + } + + if (NULL != intf->mem_write) + { + for (count = 0; num_handlers < MAX_MEM_HANDLERS; count++, num_handlers++) + { + if (NULL == intf->mem_write[count].write_func) + break; + + memcpy(&machine->writehandler[num_handlers], &intf->mem_write[count], + sizeof(nes6502_memwrite)); + } + } + + /* catch-all for bad writes */ + /* TODO: poof! numbers */ + machine->writehandler[num_handlers].min_range = 0x4018; + machine->writehandler[num_handlers].max_range = 0x5FFF; + machine->writehandler[num_handlers].write_func = write_protect; + num_handlers++; + machine->writehandler[num_handlers].min_range = 0x8000; + machine->writehandler[num_handlers].max_range = 0xFFFF; + machine->writehandler[num_handlers].write_func = write_protect; + num_handlers++; + machine->writehandler[num_handlers].min_range = -1; + machine->writehandler[num_handlers].max_range = -1; + machine->writehandler[num_handlers].write_func = NULL; + num_handlers++; + ASSERT(num_handlers <= MAX_MEM_HANDLERS); +} + +/* raise an IRQ */ +void nes_irq(void) +{ + nes6502_irq(); +} + +static uint8 nes_clearfiq(void) +{ + if (nes.fiq_occurred) + { + nes.fiq_occurred = false; + return 0x40; + } + + return 0; +} + +void nes_setfiq(uint8 value) +{ + nes.fiq_state = value; + nes.fiq_cycles = (int) NES_FIQ_PERIOD; +} + +static void nes_checkfiq(int cycles) +{ + nes.fiq_cycles -= cycles; + if (nes.fiq_cycles <= 0) + { + nes.fiq_cycles += (int) NES_FIQ_PERIOD; + if (0 == (nes.fiq_state & 0xC0)) + { + nes.fiq_occurred = true; + nes6502_irq(); + } + } +} + +void nes_nmi(void) +{ + nes6502_nmi(); +} + +static void nes_renderframe(bool draw_flag) +{ + int elapsed_cycles; + mapintf_t *mapintf = nes.mmc->intf; + int in_vblank = 0; + + while (262 != nes.scanline) + { +// ppu_scanline(nes.vidbuf, nes.scanline, draw_flag); + ppu_scanline(vid_getbuffer(), nes.scanline, draw_flag); + + if (241 == nes.scanline) + { + /* 7-9 cycle delay between when VINT flag goes up and NMI is taken */ + elapsed_cycles = nes6502_execute(7); + nes.scanline_cycles -= elapsed_cycles; + nes_checkfiq(elapsed_cycles); + + ppu_checknmi(); + + if (mapintf->vblank) + mapintf->vblank(); + in_vblank = 1; + } + + if (mapintf->hblank) + mapintf->hblank(in_vblank); + + nes.scanline_cycles += (float) NES_SCANLINE_CYCLES; + elapsed_cycles = nes6502_execute((int) nes.scanline_cycles); + nes.scanline_cycles -= (float) elapsed_cycles; + nes_checkfiq(elapsed_cycles); + + ppu_endscanline(nes.scanline); + nes.scanline++; + } + + nes.scanline = 0; +} + +static void system_video(bool draw) +{ + +#ifdef NOLOOP +#else +#endif + /* blit to screen */ + vid_flush(); + + /* grab input */ + osd_getinput(); +} + +/* main emulation loop */ +static int last_ticks, frames_to_render; +void nes_emulate(void) +{ + osd_setsound(nes.apu->process); + + last_ticks = nofrendo_ticks; + frames_to_render = 0; + nes.scanline_cycles = 0; + nes.fiq_cycles = (int) NES_FIQ_PERIOD; +#ifdef NOLOOP +#else + while (false == nes.poweroff) + { + if (nofrendo_ticks != last_ticks) + { + int tick_diff = nofrendo_ticks - last_ticks; + + frames_to_render += tick_diff; + last_ticks = nofrendo_ticks; + } + + if (true == nes.pause) + { + /* TODO: dim the screen, and pause/silence the apu */ + system_video(true); + frames_to_render = 0; + } + else if (frames_to_render > 1) + { + frames_to_render--; + nes_renderframe(false); + system_video(false); + } + else if ((1 == frames_to_render && true == nes.autoframeskip) + || false == nes.autoframeskip) + { + frames_to_render = 0; + nes_renderframe(true); + system_video(true); + } + } +#endif +} + +//ADD ON +#ifdef NOLOOP +void nes_step(int skip) +{ + if (skip) { + nes_renderframe(false); + system_video(false); + } + else { + nes_renderframe(true); + system_video(true); + } + +} +#endif + +static void mem_trash(uint8 *buffer, int length) +{ + int i; + + for (i = 0; i < length; i++) + buffer[i] = (uint8) rand(); +} + +/* Reset NES hardware */ +void nes_reset(int reset_type) +{ + if (HARD_RESET == reset_type) + { + memset(nes.cpu->mem_page[0], 0, NES_RAMSIZE); + if (nes.rominfo->vram) + mem_trash(nes.rominfo->vram, 0x2000 * nes.rominfo->vram_banks); + } + + apu_reset(); + ppu_reset(reset_type); + mmc_reset(); + nes6502_reset(); + + nes.scanline = 241; +} + +void nes_destroy(nes_t **machine) +{ + if (*machine) + { + rom_free(&(*machine)->rominfo); + mmc_destroy(&(*machine)->mmc); + ppu_destroy(&(*machine)->ppu); + apu_destroy(&(*machine)->apu); +// bmp_destroy(&(*machine)->vidbuf); + if ((*machine)->cpu) + { + if ((*machine)->cpu->mem_page[0]) + free((*machine)->cpu->mem_page[0]); + free((*machine)->cpu); + } + + free(*machine); + *machine = NULL; + } +} + +void nes_poweroff(void) +{ + nes.poweroff = true; +} + +void nes_togglepause(void) +{ + nes.pause ^= true; +} + +/* insert a cart into the NES */ +int nes_insertcart(const char *filename, nes_t *machine) +{ + nes6502_setcontext(machine->cpu); + /* rom file */ + machine->rominfo = rom_load(filename); + if (NULL == machine->rominfo) + goto _fail; + /* map cart's SRAM to CPU $6000-$7FFF */ + if (machine->rominfo->sram) + { + machine->cpu->mem_page[6] = machine->rominfo->sram; + machine->cpu->mem_page[7] = machine->rominfo->sram + 0x1000; + } + /* mapper */ + machine->mmc = mmc_create(machine->rominfo); + if (NULL == machine->mmc) + goto _fail; + + /* if there's VRAM, let the PPU know */ + if (NULL != machine->rominfo->vram) + machine->ppu->vram_present = true; + apu_setext(machine->apu, machine->mmc->intf->sound_ext); + build_address_handlers(machine); + nes_setcontext(machine); + nes_reset(HARD_RESET); + + return 0; + +_fail: + nes_destroy(&machine); + return -1; +} + + +/* Initialize NES CPU, hardware, etc. */ +nes_t *nes_create(void) +{ + nes_t *machine; + sndinfo_t osd_sound; + int i; + + machine = malloc(sizeof(nes_t)); + if (NULL == machine) + return NULL; + + memset(machine, 0, sizeof(nes_t)); + + /* bitmap */ + /* 8 pixel overdraw */ +// machine->vidbuf = bmp_create(NES_SCREEN_WIDTH, NES_SCREEN_HEIGHT, 8); +// if (NULL == machine->vidbuf) +// goto _fail; + + machine->autoframeskip = true; + + /* cpu */ + machine->cpu = malloc(sizeof(nes6502_context)); + if (NULL == machine->cpu) + goto _fail; + + memset(machine->cpu, 0, sizeof(nes6502_context)); + + /* allocate 2kB RAM */ + machine->cpu->mem_page[0] = malloc(NES_RAMSIZE); + if (NULL == machine->cpu->mem_page[0]) + goto _fail; + + /* point all pages at NULL for now */ + for (i = 1; i < NES6502_NUMBANKS; i++) + machine->cpu->mem_page[i] = NULL; + + machine->cpu->read_handler = machine->readhandler; + machine->cpu->write_handler = machine->writehandler; + + /* apu */ + osd_getsoundinfo(&osd_sound); + machine->apu = apu_create(0, osd_sound.sample_rate, NES_REFRESH_RATE, osd_sound.bps); + + if (NULL == machine->apu) + goto _fail; + + /* set the IRQ routines */ + machine->apu->irq_callback = nes_irq; + machine->apu->irqclear_callback = nes_clearfiq; + + /* ppu */ + machine->ppu = ppu_create(); + if (NULL == machine->ppu) + goto _fail; + + machine->poweroff = false; + machine->pause = false; + + return machine; + +_fail: + nes_destroy(&machine); + return NULL; +} + +/* +** $Log: nes.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.18 2000/11/29 12:58:23 matt +** timing/fiq fixes +** +** Revision 1.17 2000/11/27 19:36:15 matt +** more timing fixes +** +** Revision 1.16 2000/11/26 16:13:13 matt +** slight fix (?) to nes_fiq +** +** Revision 1.15 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.14 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.13 2000/11/25 01:53:42 matt +** bool stinks sometimes +** +** Revision 1.12 2000/11/21 13:28:40 matt +** take care to zero allocated mem +** +** Revision 1.11 2000/11/20 13:23:32 matt +** nofrendo.c now handles timer +** +** Revision 1.10 2000/11/09 14:07:27 matt +** state load fixed, state save mostly fixed +** +** Revision 1.9 2000/11/05 22:19:37 matt +** pause buglet fixed +** +** Revision 1.8 2000/11/05 06:27:09 matt +** thinlib spawns changes +** +** Revision 1.7 2000/10/29 14:36:45 matt +** nes_clearframeirq is static +** +** Revision 1.6 2000/10/28 15:20:41 matt +** irq callbacks in nes_apu +** +** Revision 1.5 2000/10/27 12:55:58 matt +** nes6502 now uses 4kB banks across the boards +** +** Revision 1.4 2000/10/25 13:44:02 matt +** no more silly define names +** +** Revision 1.3 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.50 2000/10/23 17:51:09 matt +** adding fds support +** +** Revision 1.49 2000/10/23 15:53:08 matt +** better system handling +** +** Revision 1.48 2000/10/22 20:02:29 matt +** autoframeskip bugfix +** +** Revision 1.47 2000/10/22 19:16:15 matt +** more sane timer ISR / autoframeskip +** +** Revision 1.46 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.45 2000/10/17 12:00:56 matt +** selectable apu base frequency +** +** Revision 1.44 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.43 2000/10/10 13:05:30 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.42 2000/10/08 17:53:37 matt +** minor accuracy changes +** +** Revision 1.41 2000/09/18 02:09:12 matt +** -pedantic is your friend +** +** Revision 1.40 2000/09/15 13:38:39 matt +** changes for optimized apu core +** +** Revision 1.39 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.38 2000/09/08 11:57:29 matt +** no more nes_fiq +** +** Revision 1.37 2000/08/31 02:39:01 matt +** moved dos stuff in here (temp) +** +** Revision 1.36 2000/08/16 02:51:55 matt +** random cleanups +** +** Revision 1.35 2000/08/11 02:43:50 matt +** moved frame irq stuff out of APU into here +** +** Revision 1.34 2000/08/11 01:42:43 matt +** change to OSD sound info interface +** +** Revision 1.33 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.32 2000/07/30 04:32:32 matt +** emulation of the NES frame IRQ +** +** Revision 1.31 2000/07/27 04:07:14 matt +** cleaned up the neighborhood lawns +** +** Revision 1.30 2000/07/27 03:59:52 neil +** pausing tweaks, during fullscreen toggles +** +** Revision 1.29 2000/07/27 03:19:22 matt +** just a little cleaner, that's all +** +** Revision 1.28 2000/07/27 02:55:23 matt +** nes_emulate went through detox +** +** Revision 1.27 2000/07/27 02:49:18 matt +** cleaner flow in nes_emulate +** +** Revision 1.26 2000/07/27 01:17:09 matt +** nes_insertrom -> nes_insertcart +** +** Revision 1.25 2000/07/26 21:36:14 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.24 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.23 2000/07/24 04:32:40 matt +** autoframeskip bugfix +** +** Revision 1.22 2000/07/23 15:13:48 matt +** apu API change, autoframeskip part of nes_t struct +** +** Revision 1.21 2000/07/21 02:44:41 matt +** merged osd_getinput and osd_gethostinput +** +** Revision 1.20 2000/07/17 05:12:55 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.19 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.18 2000/07/15 23:51:23 matt +** hack for certain filthy NES titles +** +** Revision 1.17 2000/07/11 04:31:54 matt +** less magic number nastiness for screen dimensions +** +** Revision 1.16 2000/07/11 02:38:25 matt +** encapsulated memory address handlers into nes/nsf +** +** Revision 1.15 2000/07/10 13:50:49 matt +** added function nes_irq() +** +** Revision 1.14 2000/07/10 05:27:55 matt +** cleaned up mapper-specific callbacks +** +** Revision 1.13 2000/07/09 03:43:26 matt +** minor changes to gui handling +** +** Revision 1.12 2000/07/06 16:42:23 matt +** updated for new video driver +** +** Revision 1.11 2000/07/05 19:57:36 neil +** __GNUC -> __DJGPP in nes.c +** +** Revision 1.10 2000/07/05 12:23:03 matt +** removed unnecessary references +** +** Revision 1.9 2000/07/04 23:12:34 matt +** memory protection handlers +** +** Revision 1.8 2000/07/04 04:58:29 matt +** dynamic memory range handlers +** +** Revision 1.7 2000/06/26 04:58:51 matt +** minor bugfix +** +** Revision 1.6 2000/06/20 20:42:12 matt +** fixed some NULL pointer problems +** +** Revision 1.5 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes.h b/MCUME_teensy/teensynofrendo/nes.h new file mode 100755 index 0000000..dca6d69 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes.h @@ -0,0 +1,221 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes.h +** +** NES hardware related definitions / prototypes +** $Id: nes.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_H_ +#define _NES_H_ + +#include "noftypes.h" +#include "nes_apu.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes_rom.h" +#include "nes6502.h" +#include "bitmap.h" + +/* Visible (NTSC) screen height */ +#ifndef NES_VISIBLE_HEIGHT +#define NES_VISIBLE_HEIGHT 224 +#endif /* !NES_VISIBLE_HEIGHT */ +#define NES_SCREEN_WIDTH 256 +#define NES_SCREEN_HEIGHT 240 + +/* NTSC = 60Hz, PAL = 50Hz */ +#ifdef PAL +#define NES_REFRESH_RATE 50 +#else /* !PAL */ +#define NES_REFRESH_RATE 60 +#endif /* !PAL */ + +#define MAX_MEM_HANDLERS 32 + +enum +{ + SOFT_RESET, + HARD_RESET +}; + + +typedef struct nes_s +{ + /* hardware things */ + nes6502_context *cpu; + nes6502_memread readhandler[MAX_MEM_HANDLERS]; + nes6502_memwrite writehandler[MAX_MEM_HANDLERS]; + + ppu_t *ppu; + apu_t *apu; + mmc_t *mmc; + rominfo_t *rominfo; + + /* video buffer */ + /* For the ESP32, it costs too much memory to render to a separate buffer and blit that to the main buffer. + Instead, the code has been modified to directly grab the primary buffer from the video subsystem and render + there, saving us about 64K of memory. */ +// bitmap_t *vidbuf; + + bool fiq_occurred; + uint8 fiq_state; + int fiq_cycles; + + int scanline; + + /* Timing stuff */ + float scanline_cycles; + bool autoframeskip; + + /* control */ + bool poweroff; + bool pause; + +} nes_t; + + +extern int nes_isourfile(const char *filename); + +/* temp hack */ +extern nes_t *nes_getcontextptr(void); + +/* Function prototypes */ +extern void nes_getcontext(nes_t *machine); +extern void nes_setcontext(nes_t *machine); + +extern nes_t *nes_create(void); +extern void nes_destroy(nes_t **machine); +extern int nes_insertcart(const char *filename, nes_t *machine); + +extern void nes_setfiq(uint8 state); +extern void nes_nmi(void); +extern void nes_irq(void); +extern void nes_emulate(void); + +extern void nes_reset(int reset_type); + +extern void nes_poweroff(void); +extern void nes_togglepause(void); + +#endif /* _NES_H_ */ + +/* +** $Log: nes.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.8 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.7 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.6 2000/11/25 01:52:17 matt +** bool stinks sometimes +** +** Revision 1.5 2000/11/09 14:07:28 matt +** state load fixed, state save mostly fixed +** +** Revision 1.4 2000/10/29 14:36:45 matt +** nes_clearframeirq is static +** +** Revision 1.3 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.26 2000/10/23 17:51:10 matt +** adding fds support +** +** Revision 1.25 2000/10/23 15:53:08 matt +** better system handling +** +** Revision 1.24 2000/10/22 19:16:15 matt +** more sane timer ISR / autoframeskip +** +** Revision 1.23 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.22 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.21 2000/10/08 17:53:36 matt +** minor accuracy changes +** +** Revision 1.20 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.19 2000/09/08 11:57:29 matt +** no more nes_fiq +** +** Revision 1.18 2000/08/11 02:43:50 matt +** moved frame irq stuff out of APU into here +** +** Revision 1.17 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.16 2000/07/30 04:32:32 matt +** emulation of the NES frame IRQ +** +** Revision 1.15 2000/07/27 01:17:09 matt +** nes_insertrom -> nes_insertcart +** +** Revision 1.14 2000/07/26 21:36:16 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.13 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.12 2000/07/23 15:13:13 matt +** autoframeskip is now a member variable of nes_t +** +** Revision 1.11 2000/07/17 05:12:55 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.10 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.9 2000/07/16 09:48:58 neil +** Make visible height compile-time configurable in the Makefile +** +** Revision 1.8 2000/07/11 04:31:55 matt +** less magic number nastiness for screen dimensions +** +** Revision 1.7 2000/07/11 02:40:36 matt +** forgot to remove framecounter +** +** Revision 1.6 2000/07/11 02:38:25 matt +** encapsulated memory address handlers into nes/nsf +** +** Revision 1.5 2000/07/10 13:50:50 matt +** added function nes_irq() +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes6502.c b/MCUME_teensy/teensynofrendo/nes6502.c new file mode 100644 index 0000000..db2ee64 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes6502.c @@ -0,0 +1,2573 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes6502.c +** +** NES custom 6502 (2A03) CPU implementation +** $Id: nes6502.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + + +#include "noftypes.h" +#include "nes6502.h" +//#include "dis6502.h" + +//#define NES6502_DISASM + +#ifdef __GNUC__ +#define NES6502_JUMPTABLE +#endif /* __GNUC__ */ + + +#define ADD_CYCLES(x) \ +{ \ + remaining_cycles -= (x); \ + cpu.total_cycles += (x); \ +} + +/* +** Check to see if an index reg addition overflowed to next page +*/ +#define PAGE_CROSS_CHECK(addr, reg) \ +{ \ + if ((reg) > (uint8) (addr)) \ + ADD_CYCLES(1); \ +} + +#define EMPTY_READ(value) /* empty */ + +/* +** Addressing mode macros +*/ + +/* Immediate */ +#define IMMEDIATE_BYTE(value) \ +{ \ + value = bank_readbyte(PC++); \ +} + +/* Absolute */ +#define ABSOLUTE_ADDR(address) \ +{ \ + address = bank_readword(PC); \ + PC += 2; \ +} + +#define ABSOLUTE(address, value) \ +{ \ + ABSOLUTE_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define ABSOLUTE_BYTE(value) \ +{ \ + ABSOLUTE(temp, value); \ +} + +/* Absolute indexed X */ +#define ABS_IND_X_ADDR(address) \ +{ \ + ABSOLUTE_ADDR(address); \ + address = (address + X) & 0xFFFF; \ +} + +#define ABS_IND_X(address, value) \ +{ \ + ABS_IND_X_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define ABS_IND_X_BYTE(value) \ +{ \ + ABS_IND_X(temp, value); \ +} + +/* special page-cross check version for read instructions */ +#define ABS_IND_X_BYTE_READ(value) \ +{ \ + ABS_IND_X_ADDR(temp); \ + PAGE_CROSS_CHECK(temp, X); \ + value = mem_readbyte(temp); \ +} + +/* Absolute indexed Y */ +#define ABS_IND_Y_ADDR(address) \ +{ \ + ABSOLUTE_ADDR(address); \ + address = (address + Y) & 0xFFFF; \ +} + +#define ABS_IND_Y(address, value) \ +{ \ + ABS_IND_Y_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define ABS_IND_Y_BYTE(value) \ +{ \ + ABS_IND_Y(temp, value); \ +} + +/* special page-cross check version for read instructions */ +#define ABS_IND_Y_BYTE_READ(value) \ +{ \ + ABS_IND_Y_ADDR(temp); \ + PAGE_CROSS_CHECK(temp, Y); \ + value = mem_readbyte(temp); \ +} + +/* Zero-page */ +#define ZERO_PAGE_ADDR(address) \ +{ \ + IMMEDIATE_BYTE(address); \ +} + +#define ZERO_PAGE(address, value) \ +{ \ + ZERO_PAGE_ADDR(address); \ + value = ZP_READBYTE(address); \ +} + +#define ZERO_PAGE_BYTE(value) \ +{ \ + ZERO_PAGE(btemp, value); \ +} + +/* Zero-page indexed X */ +#define ZP_IND_X_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(address); \ + address += X; \ +} + +#define ZP_IND_X(address, value) \ +{ \ + ZP_IND_X_ADDR(address); \ + value = ZP_READBYTE(address); \ +} + +#define ZP_IND_X_BYTE(value) \ +{ \ + ZP_IND_X(btemp, value); \ +} + +/* Zero-page indexed Y */ +/* Not really an adressing mode, just for LDx/STx */ +#define ZP_IND_Y_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(address); \ + address += Y; \ +} + +#define ZP_IND_Y_BYTE(value) \ +{ \ + ZP_IND_Y_ADDR(btemp); \ + value = ZP_READBYTE(btemp); \ +} + +/* Indexed indirect */ +#define INDIR_X_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(btemp); \ + btemp += X; \ + address = zp_readword(btemp); \ +} + +#define INDIR_X(address, value) \ +{ \ + INDIR_X_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define INDIR_X_BYTE(value) \ +{ \ + INDIR_X(temp, value); \ +} + +/* Indirect indexed */ +#define INDIR_Y_ADDR(address) \ +{ \ + ZERO_PAGE_ADDR(btemp); \ + address = (zp_readword(btemp) + Y) & 0xFFFF; \ +} + +#define INDIR_Y(address, value) \ +{ \ + INDIR_Y_ADDR(address); \ + value = mem_readbyte(address); \ +} + +#define INDIR_Y_BYTE(value) \ +{ \ + INDIR_Y(temp, value); \ +} + +/* special page-cross check version for read instructions */ +#define INDIR_Y_BYTE_READ(value) \ +{ \ + INDIR_Y_ADDR(temp); \ + PAGE_CROSS_CHECK(temp, Y); \ + value = mem_readbyte(temp); \ +} + + + +/* Stack push/pull */ +#define PUSH(value) stack[S--] = (uint8) (value) +#define PULL() stack[++S] + + +/* +** flag register helper macros +*/ + +/* Theory: Z and N flags are set in just about every +** instruction, so we will just store the value in those +** flag variables, and mask out the irrelevant data when +** we need to check them (branches, etc). This makes the +** zero flag only really be 'set' when z_flag == 0. +** The rest of the flags are stored as true booleans. +*/ + +/* Scatter flags to separate variables */ +#define SCATTER_FLAGS(value) \ +{ \ + n_flag = (value) & N_FLAG; \ + v_flag = (value) & V_FLAG; \ + b_flag = (value) & B_FLAG; \ + d_flag = (value) & D_FLAG; \ + i_flag = (value) & I_FLAG; \ + z_flag = (0 == ((value) & Z_FLAG)); \ + c_flag = (value) & C_FLAG; \ +} + +/* Combine flags into flag register */ +#define COMBINE_FLAGS() \ +( \ + (n_flag & N_FLAG) \ + | (v_flag ? V_FLAG : 0) \ + | R_FLAG \ + | (b_flag ? B_FLAG : 0) \ + | (d_flag ? D_FLAG : 0) \ + | (i_flag ? I_FLAG : 0) \ + | (z_flag ? 0 : Z_FLAG) \ + | c_flag \ +) + +/* Set N and Z flags based on given value */ +#define SET_NZ_FLAGS(value) n_flag = z_flag = (value); + +/* For BCC, BCS, BEQ, BMI, BNE, BPL, BVC, BVS */ +#define RELATIVE_BRANCH(condition) \ +{ \ + if (condition) \ + { \ + IMMEDIATE_BYTE(btemp); \ + if (((int8) btemp + (PC & 0x00FF)) & 0x100) \ + ADD_CYCLES(1); \ + ADD_CYCLES(3); \ + PC += (int8) btemp; \ + } \ + else \ + { \ + PC++; \ + ADD_CYCLES(2); \ + } \ +} + +#define JUMP(address) \ +{ \ + PC = bank_readword((address)); \ +} + +/* +** Interrupt macros +*/ +#define NMI_PROC() \ +{ \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + b_flag = 0; \ + PUSH(COMBINE_FLAGS()); \ + i_flag = 1; \ + JUMP(NMI_VECTOR); \ +} + +#define IRQ_PROC() \ +{ \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + b_flag = 0; \ + PUSH(COMBINE_FLAGS()); \ + i_flag = 1; \ + JUMP(IRQ_VECTOR); \ +} + +/* +** Instruction macros +*/ + +/* Warning! NES CPU has no decimal mode, so by default this does no BCD! */ +#ifdef NES6502_DECIMAL +#define ADC(cycles, read_func) \ +{ \ + read_func(data); \ + if (d_flag) \ + { \ + temp = (A & 0x0F) + (data & 0x0F) + c_flag; \ + if (temp >= 10) \ + temp = (temp - 10) | 0x10; \ + temp += (A & 0xF0) + (data & 0xF0); \ + z_flag = (A + data + c_flag) & 0xFF; \ + n_flag = temp; \ + v_flag = ((~(A ^ data)) & (A ^ temp) & 0x80); \ + if (temp > 0x90) \ + { \ + temp += 0x60; \ + c_flag = 1; \ + } \ + else \ + { \ + c_flag = 0; \ + } \ + A = (uint8) temp; \ + } \ + else \ + { \ + temp = A + data + c_flag; \ + c_flag = (temp >> 8) & 1; \ + v_flag = ((~(A ^ data)) & (A ^ temp) & 0x80); \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A); \ + }\ + ADD_CYCLES(cycles); \ +} +#else +#define ADC(cycles, read_func) \ +{ \ + read_func(data); \ + temp = A + data + c_flag; \ + c_flag = (temp >> 8) & 1; \ + v_flag = ((~(A ^ data)) & (A ^ temp) & 0x80); \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} +#endif /* NES6502_DECIMAL */ + +/* undocumented */ +#define ANC(cycles, read_func) \ +{ \ + read_func(data); \ + A &= data; \ + c_flag = (n_flag & N_FLAG) >> 7; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define AND(cycles, read_func) \ +{ \ + read_func(data); \ + A &= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define ANE(cycles, read_func) \ +{ \ + read_func(data); \ + A = (A | 0xEE) & X & data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#ifdef NES6502_DECIMAL +#define ARR(cycles, read_func) \ +{ \ + read_func(data); \ + data &= A; \ + if (d_flag) \ + { \ + temp = (data >> 1) | (c_flag << 7); \ + SET_NZ_FLAGS(temp); \ + v_flag = (temp ^ data) & 0x40; \ + if (((data & 0x0F) + (data & 0x01)) > 5) \ + temp = (temp & 0xF0) | ((temp + 0x6) & 0x0F); \ + if (((data & 0xF0) + (data & 0x10)) > 0x50) \ + { \ + temp = (temp & 0x0F) | ((temp + 0x60) & 0xF0); \ + c_flag = 1; \ + } \ + else \ + { \ + c_flag = 0; \ + } \ + A = (uint8) temp; \ + } \ + else \ + { \ + A = (data >> 1) | (c_flag << 7); \ + SET_NZ_FLAGS(A); \ + c_flag = (A & 0x40) >> 6; \ + v_flag = ((A >> 6) ^ (A >> 5)) & 1; \ + }\ + ADD_CYCLES(cycles); \ +} +#else +#define ARR(cycles, read_func) \ +{ \ + read_func(data); \ + data &= A; \ + A = (data >> 1) | (c_flag << 7); \ + SET_NZ_FLAGS(A); \ + c_flag = (A & 0x40) >> 6; \ + v_flag = ((A >> 6) ^ (A >> 5)) & 1; \ + ADD_CYCLES(cycles); \ +} +#endif /* NES6502_DECIMAL */ + +#define ASL(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data >> 7; \ + data <<= 1; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define ASL_A() \ +{ \ + c_flag = A >> 7; \ + A <<= 1; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define ASR(cycles, read_func) \ +{ \ + read_func(data); \ + data &= A; \ + c_flag = data & 1; \ + A = data >> 1; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define BCC() \ +{ \ + RELATIVE_BRANCH(0 == c_flag); \ +} + +#define BCS() \ +{ \ + RELATIVE_BRANCH(0 != c_flag); \ +} + +#define BEQ() \ +{ \ + RELATIVE_BRANCH(0 == z_flag); \ +} + +/* bit 7/6 of data move into N/V flags */ +#define BIT(cycles, read_func) \ +{ \ + read_func(data); \ + n_flag = data; \ + v_flag = data & V_FLAG; \ + z_flag = data & A; \ + ADD_CYCLES(cycles); \ +} + +#define BMI() \ +{ \ + RELATIVE_BRANCH(n_flag & N_FLAG); \ +} + +#define BNE() \ +{ \ + RELATIVE_BRANCH(0 != z_flag); \ +} + +#define BPL() \ +{ \ + RELATIVE_BRANCH(0 == (n_flag & N_FLAG)); \ +} + +/* Software interrupt type thang */ +#define BRK() \ +{ \ + PC++; \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + b_flag = 1; \ + PUSH(COMBINE_FLAGS()); \ + i_flag = 1; \ + JUMP(IRQ_VECTOR); \ + ADD_CYCLES(7); \ +} + +#define BVC() \ +{ \ + RELATIVE_BRANCH(0 == v_flag); \ +} + +#define BVS() \ +{ \ + RELATIVE_BRANCH(0 != v_flag); \ +} + +#define CLC() \ +{ \ + c_flag = 0; \ + ADD_CYCLES(2); \ +} + +#define CLD() \ +{ \ + d_flag = 0; \ + ADD_CYCLES(2); \ +} + +#define CLI() \ +{ \ + i_flag = 0; \ + ADD_CYCLES(2); \ + if (cpu.int_pending && remaining_cycles > 0) \ + { \ + cpu.int_pending = 0; \ + IRQ_PROC(); \ + ADD_CYCLES(INT_CYCLES); \ + } \ +} + +#define CLV() \ +{ \ + v_flag = 0; \ + ADD_CYCLES(2); \ +} + +/* C is clear when data > A */ +#define _COMPARE(reg, value) \ +{ \ + temp = (reg) - (value); \ + c_flag = ((temp & 0x100) >> 8) ^ 1; \ + SET_NZ_FLAGS((uint8) temp); \ +} + +#define CMP(cycles, read_func) \ +{ \ + read_func(data); \ + _COMPARE(A, data); \ + ADD_CYCLES(cycles); \ +} + +#define CPX(cycles, read_func) \ +{ \ + read_func(data); \ + _COMPARE(X, data); \ + ADD_CYCLES(cycles); \ +} + +#define CPY(cycles, read_func) \ +{ \ + read_func(data); \ + _COMPARE(Y, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define DCP(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data--; \ + write_func(addr, data); \ + CMP(cycles, EMPTY_READ); \ +} + +#define DEC(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data--; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define DEX() \ +{ \ + X--; \ + SET_NZ_FLAGS(X); \ + ADD_CYCLES(2); \ +} + +#define DEY() \ +{ \ + Y--; \ + SET_NZ_FLAGS(Y); \ + ADD_CYCLES(2); \ +} + +/* undocumented (double-NOP) */ +#define DOP(cycles) \ +{ \ + PC++; \ + ADD_CYCLES(cycles); \ +} + +#define EOR(cycles, read_func) \ +{ \ + read_func(data); \ + A ^= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define INC(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data++; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define INX() \ +{ \ + X++; \ + SET_NZ_FLAGS(X); \ + ADD_CYCLES(2); \ +} + +#define INY() \ +{ \ + Y++; \ + SET_NZ_FLAGS(Y); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define ISB(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + data++; \ + write_func(addr, data); \ + SBC(cycles, EMPTY_READ); \ +} + +/* TODO: make this a function callback */ +#ifdef NES6502_TESTOPS +#define JAM() \ +{ \ + cpu_Jam(); \ +} +#else /* !NES6502_TESTOPS */ +#define JAM() \ +{ \ + PC--; \ + cpu.jammed = true; \ + cpu.int_pending = 0; \ + ADD_CYCLES(2); \ +} +#endif /* !NES6502_TESTOPS */ + +#define JMP_INDIRECT() \ +{ \ + temp = bank_readword(PC); \ + /* bug in crossing page boundaries */ \ + if (0xFF == (temp & 0xFF)) \ + PC = (bank_readbyte(temp & 0xFF00) << 8) | bank_readbyte(temp); \ + else \ + JUMP(temp); \ + ADD_CYCLES(5); \ +} + +#define JMP_ABSOLUTE() \ +{ \ + JUMP(PC); \ + ADD_CYCLES(3); \ +} + +#define JSR() \ +{ \ + PC++; \ + PUSH(PC >> 8); \ + PUSH(PC & 0xFF); \ + JUMP(PC - 1); \ + ADD_CYCLES(6); \ +} + +/* undocumented */ +#define LAS(cycles, read_func) \ +{ \ + read_func(data); \ + A = X = S = (S & data); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define LAX(cycles, read_func) \ +{ \ + read_func(A); \ + X = A; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define LDA(cycles, read_func) \ +{ \ + read_func(A); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define LDX(cycles, read_func) \ +{ \ + read_func(X); \ + SET_NZ_FLAGS(X);\ + ADD_CYCLES(cycles); \ +} + +#define LDY(cycles, read_func) \ +{ \ + read_func(Y); \ + SET_NZ_FLAGS(Y);\ + ADD_CYCLES(cycles); \ +} + +#define LSR(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data & 1; \ + data >>= 1; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define LSR_A() \ +{ \ + c_flag = A & 1; \ + A >>= 1; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define LXA(cycles, read_func) \ +{ \ + read_func(data); \ + A = X = ((A | 0xEE) & data); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define NOP() \ +{ \ + ADD_CYCLES(2); \ +} + +#define ORA(cycles, read_func) \ +{ \ + read_func(data); \ + A |= data; \ + SET_NZ_FLAGS(A);\ + ADD_CYCLES(cycles); \ +} + +#define PHA() \ +{ \ + PUSH(A); \ + ADD_CYCLES(3); \ +} + +#define PHP() \ +{ \ + /* B flag is pushed on stack as well */ \ + PUSH(COMBINE_FLAGS() | B_FLAG); \ + ADD_CYCLES(3); \ +} + +#define PLA() \ +{ \ + A = PULL(); \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(4); \ +} + +#define PLP() \ +{ \ + btemp = PULL(); \ + SCATTER_FLAGS(btemp); \ + ADD_CYCLES(4); \ +} + +/* undocumented */ +#define RLA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag; \ + c_flag = data >> 7; \ + data = (data << 1) | btemp; \ + write_func(addr, data); \ + A &= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* 9-bit rotation (carry flag used for rollover) */ +#define ROL(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag; \ + c_flag = data >> 7; \ + data = (data << 1) | btemp; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define ROL_A() \ +{ \ + btemp = c_flag; \ + c_flag = A >> 7; \ + A = (A << 1) | btemp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +#define ROR(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag << 7; \ + c_flag = data & 1; \ + data = (data >> 1) | btemp; \ + write_func(addr, data); \ + SET_NZ_FLAGS(data); \ + ADD_CYCLES(cycles); \ +} + +#define ROR_A() \ +{ \ + btemp = c_flag << 7; \ + c_flag = A & 1; \ + A = (A >> 1) | btemp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define RRA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + btemp = c_flag << 7; \ + c_flag = data & 1; \ + data = (data >> 1) | btemp; \ + write_func(addr, data); \ + ADC(cycles, EMPTY_READ); \ +} + +#define RTI() \ +{ \ + btemp = PULL(); \ + SCATTER_FLAGS(btemp); \ + PC = PULL(); \ + PC |= PULL() << 8; \ + ADD_CYCLES(6); \ + if (0 == i_flag && cpu.int_pending && remaining_cycles > 0) \ + { \ + cpu.int_pending = 0; \ + IRQ_PROC(); \ + ADD_CYCLES(INT_CYCLES); \ + } \ +} + +#define RTS() \ +{ \ + PC = PULL(); \ + PC = (PC | (PULL() << 8)) + 1; \ + ADD_CYCLES(6); \ +} + +/* undocumented */ +#define SAX(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = A & X; \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* Warning! NES CPU has no decimal mode, so by default this does no BCD! */ +#ifdef NES6502_DECIMAL +#define SBC(cycles, read_func) \ +{ \ + read_func(data); \ + temp = A - data - (c_flag ^ 1); \ + if (d_flag) \ + { \ + uint8 al, ah; \ + al = (A & 0x0F) - (data & 0x0F) - (c_flag ^ 1); \ + ah = (A >> 4) - (data >> 4); \ + if (al & 0x10) \ + { \ + al -= 6; \ + ah--; \ + } \ + if (ah & 0x10) \ + { \ + ah -= 6; \ + c_flag = 0; \ + } \ + else \ + { \ + c_flag = 1; \ + } \ + v_flag = (A ^ temp) & (A ^ data) & 0x80; \ + SET_NZ_FLAGS(temp & 0xFF); \ + A = (ah << 4) | (al & 0x0F); \ + } \ + else \ + { \ + v_flag = (A ^ temp) & (A ^ data) & 0x80; \ + c_flag = ((temp & 0x100) >> 8) ^ 1; \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A & 0xFF); \ + } \ + ADD_CYCLES(cycles); \ +} +#else +#define SBC(cycles, read_func) \ +{ \ + read_func(data); \ + temp = A - data - (c_flag ^ 1); \ + v_flag = (A ^ data) & (A ^ temp) & 0x80; \ + c_flag = ((temp >> 8) & 1) ^ 1; \ + A = (uint8) temp; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} +#endif /* NES6502_DECIMAL */ + +/* undocumented */ +#define SBX(cycles, read_func) \ +{ \ + read_func(data); \ + temp = (A & X) - data; \ + c_flag = ((temp >> 8) & 1) ^ 1; \ + X = temp & 0xFF; \ + SET_NZ_FLAGS(X); \ + ADD_CYCLES(cycles); \ +} + +#define SEC() \ +{ \ + c_flag = 1; \ + ADD_CYCLES(2); \ +} + +#define SED() \ +{ \ + d_flag = 1; \ + ADD_CYCLES(2); \ +} + +#define SEI() \ +{ \ + i_flag = 1; \ + ADD_CYCLES(2); \ +} + +/* undocumented */ +#define SHA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = A & X & ((uint8) ((addr >> 8) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SHS(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + S = A & X; \ + data = S & ((uint8) ((addr >> 8) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SHX(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = X & ((uint8) ((addr >> 8) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SHY(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + data = Y & ((uint8) ((addr >> 8 ) + 1)); \ + write_func(addr, data); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SLO(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data >> 7; \ + data <<= 1; \ + write_func(addr, data); \ + A |= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +/* undocumented */ +#define SRE(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr, data); \ + c_flag = data & 1; \ + data >>= 1; \ + write_func(addr, data); \ + A ^= data; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(cycles); \ +} + +#define STA(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + write_func(addr, A); \ + ADD_CYCLES(cycles); \ +} + +#define STX(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + write_func(addr, X); \ + ADD_CYCLES(cycles); \ +} + +#define STY(cycles, read_func, write_func, addr) \ +{ \ + read_func(addr); \ + write_func(addr, Y); \ + ADD_CYCLES(cycles); \ +} + +#define TAX() \ +{ \ + X = A; \ + SET_NZ_FLAGS(X);\ + ADD_CYCLES(2); \ +} + +#define TAY() \ +{ \ + Y = A; \ + SET_NZ_FLAGS(Y);\ + ADD_CYCLES(2); \ +} + +/* undocumented (triple-NOP) */ +#define TOP() \ +{ \ + PC += 2; \ + ADD_CYCLES(4); \ +} + +#define TSX() \ +{ \ + X = S; \ + SET_NZ_FLAGS(X);\ + ADD_CYCLES(2); \ +} + +#define TXA() \ +{ \ + A = X; \ + SET_NZ_FLAGS(A);\ + ADD_CYCLES(2); \ +} + +#define TXS() \ +{ \ + S = X; \ + ADD_CYCLES(2); \ +} + +#define TYA() \ +{ \ + A = Y; \ + SET_NZ_FLAGS(A); \ + ADD_CYCLES(2); \ +} + + + +/* internal CPU context */ +static nes6502_context cpu; +static int remaining_cycles = 0; /* so we can release timeslice */ +/* memory region pointers */ +static uint8 *ram = NULL, *stack = NULL; +static uint8 null_page[NES6502_BANKSIZE]; + + +/* +** Zero-page helper macros +*/ + +#define ZP_READBYTE(addr) ram[(addr)] +#define ZP_WRITEBYTE(addr, value) ram[(addr)] = (uint8) (value) + +#ifdef HOST_LITTLE_ENDIAN + +/* NOTE: following two functions will fail on architectures +** which do not support byte alignment +*/ +INLINE uint32 zp_readword(register uint8 address) +{ + return (uint32) (*(uint16 *)(ram + address)); +} + +INLINE uint32 bank_readword(register uint32 address) +{ + /* technically, this should fail if the address is $xFFF, but + ** any code that does this would be suspect anyway, as it would + ** be fetching a word across page boundaries, which only would + ** make sense if the banks were physically consecutive. + */ + return (uint32) (*(uint16 *)(cpu.mem_page[address >> NES6502_BANKSHIFT] + (address & NES6502_BANKMASK))); +} + +#else /* !HOST_LITTLE_ENDIAN */ + +INLINE uint32 zp_readword(register uint8 address) +{ +#ifdef TARGET_CPU_PPC + return __lhbrx(ram, address); +#else /* !TARGET_CPU_PPC */ + uint32 x = (uint32) *(uint16 *)(ram + address); + return (x << 8) | (x >> 8); +#endif /* !TARGET_CPU_PPC */ +} + +INLINE uint32 bank_readword(register uint32 address) +{ +#ifdef TARGET_CPU_PPC + return __lhbrx(cpu.mem_page[address >> NES6502_BANKSHIFT], address & NES6502_BANKMASK); +#else /* !TARGET_CPU_PPC */ + uint32 x = (uint32) *(uint16 *)(cpu.mem_page[address >> NES6502_BANKSHIFT] + (address & NES6502_BANKMASK)); + return (x << 8) | (x >> 8); +#endif /* !TARGET_CPU_PPC */ +} + +#endif /* !HOST_LITTLE_ENDIAN */ + +INLINE uint8 bank_readbyte(register uint32 address) +{ + return cpu.mem_page[address >> NES6502_BANKSHIFT][address & NES6502_BANKMASK]; +} + +INLINE void bank_writebyte(register uint32 address, register uint8 value) +{ + cpu.mem_page[address >> NES6502_BANKSHIFT][address & NES6502_BANKMASK] = value; +} + +/* read a byte of 6502 memory */ +static uint8 mem_readbyte(uint32 address) +{ + nes6502_memread *mr; + + /* TODO: following 2 cases are N2A03-specific */ + if (address < 0x800) + { + /* RAM */ + return ram[address]; + } + else if (address >= 0x8000) + { + /* always paged memory */ + return bank_readbyte(address); + } + /* check memory range handlers */ + else + { + for (mr = cpu.read_handler; mr->min_range != 0xFFFFFFFF; mr++) + { + if (address >= mr->min_range && address <= mr->max_range) + return mr->read_func(address); + } + } + + /* return paged memory */ + return bank_readbyte(address); +} + +/* write a byte of data to 6502 memory */ +static void mem_writebyte(uint32 address, uint8 value) +{ + nes6502_memwrite *mw; + + /* RAM */ + if (address < 0x800) + { + ram[address] = value; + return; + } + /* check memory range handlers */ + else + { + for (mw = cpu.write_handler; mw->min_range != 0xFFFFFFFF; mw++) + { + if (address >= mw->min_range && address <= mw->max_range) + { + mw->write_func(address, value); + return; + } + } + } + + /* write to paged memory */ + bank_writebyte(address, value); +} + +/* set the current context */ +void nes6502_setcontext(nes6502_context *context) +{ + int loop; + + ASSERT(context); + + cpu = *context; + + /* set dead page for all pages not pointed at anything */ + for (loop = 0; loop < NES6502_NUMBANKS; loop++) + { + if (NULL == cpu.mem_page[loop]) + cpu.mem_page[loop] = null_page; + } + + ram = cpu.mem_page[0]; /* quick zero-page/RAM references */ + stack = ram + STACK_OFFSET; +} + +/* get the current context */ +void nes6502_getcontext(nes6502_context *context) +{ + int loop; + + ASSERT(context); + + *context = cpu; + + /* reset dead pages to null */ + for (loop = 0; loop < NES6502_NUMBANKS; loop++) + { + if (null_page == context->mem_page[loop]) + context->mem_page[loop] = NULL; + } +} + +/* DMA a byte of data from ROM */ +uint8 nes6502_getbyte(uint32 address) +{ + return bank_readbyte(address); +} + +/* get number of elapsed cycles */ +uint32 nes6502_getcycles(bool reset_flag) +{ + uint32 cycles = cpu.total_cycles; + + if (reset_flag) + cpu.total_cycles = 0; + + return cycles; +} + +#define GET_GLOBAL_REGS() \ +{ \ + PC = cpu.pc_reg; \ + A = cpu.a_reg; \ + X = cpu.x_reg; \ + Y = cpu.y_reg; \ + SCATTER_FLAGS(cpu.p_reg); \ + S = cpu.s_reg; \ +} + +#define STORE_LOCAL_REGS() \ +{ \ + cpu.pc_reg = PC; \ + cpu.a_reg = A; \ + cpu.x_reg = X; \ + cpu.y_reg = Y; \ + cpu.p_reg = COMBINE_FLAGS(); \ + cpu.s_reg = S; \ +} + +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +#ifdef NES6502_JUMPTABLE + +#define OPCODE_BEGIN(xx) op##xx: +#ifdef NES6502_DISASM + +#define OPCODE_END \ + if (remaining_cycles <= 0) \ + goto end_execute; \ + log_printf(nes6502_disasm(PC, COMBINE_FLAGS(), A, X, Y, S)); \ + goto *opcode_table[bank_readbyte(PC++)]; + +#else /* !NES6520_DISASM */ + +#define OPCODE_END \ + if (remaining_cycles <= 0) \ + goto end_execute; \ + goto *opcode_table[bank_readbyte(PC++)]; + +#endif /* !NES6502_DISASM */ + +#else /* !NES6502_JUMPTABLE */ +#define OPCODE_BEGIN(xx) case 0x##xx: +#define OPCODE_END break; +#endif /* !NES6502_JUMPTABLE */ + + +/* Execute instructions until count expires +** +** Returns the number of cycles *actually* executed, which will be +** anywhere from zero to timeslice_cycles + 6 +*/ +int nes6502_execute(int timeslice_cycles) +{ + int old_cycles = cpu.total_cycles; + + uint32 temp, addr; /* for macros */ + uint8 btemp, baddr; /* for macros */ + uint8 data; + + /* flags */ + uint8 n_flag, v_flag, b_flag; + uint8 d_flag, i_flag, z_flag, c_flag; + + /* local copies of regs */ + uint32 PC; + uint8 A, X, Y, S; + +#ifdef NES6502_JUMPTABLE + + static const void *opcode_table[256] = + { + &&op00, &&op01, &&op02, &&op03, &&op04, &&op05, &&op06, &&op07, + &&op08, &&op09, &&op0A, &&op0B, &&op0C, &&op0D, &&op0E, &&op0F, + &&op10, &&op11, &&op12, &&op13, &&op14, &&op15, &&op16, &&op17, + &&op18, &&op19, &&op1A, &&op1B, &&op1C, &&op1D, &&op1E, &&op1F, + &&op20, &&op21, &&op22, &&op23, &&op24, &&op25, &&op26, &&op27, + &&op28, &&op29, &&op2A, &&op2B, &&op2C, &&op2D, &&op2E, &&op2F, + &&op30, &&op31, &&op32, &&op33, &&op34, &&op35, &&op36, &&op37, + &&op38, &&op39, &&op3A, &&op3B, &&op3C, &&op3D, &&op3E, &&op3F, + &&op40, &&op41, &&op42, &&op43, &&op44, &&op45, &&op46, &&op47, + &&op48, &&op49, &&op4A, &&op4B, &&op4C, &&op4D, &&op4E, &&op4F, + &&op50, &&op51, &&op52, &&op53, &&op54, &&op55, &&op56, &&op57, + &&op58, &&op59, &&op5A, &&op5B, &&op5C, &&op5D, &&op5E, &&op5F, + &&op60, &&op61, &&op62, &&op63, &&op64, &&op65, &&op66, &&op67, + &&op68, &&op69, &&op6A, &&op6B, &&op6C, &&op6D, &&op6E, &&op6F, + &&op70, &&op71, &&op72, &&op73, &&op74, &&op75, &&op76, &&op77, + &&op78, &&op79, &&op7A, &&op7B, &&op7C, &&op7D, &&op7E, &&op7F, + &&op80, &&op81, &&op82, &&op83, &&op84, &&op85, &&op86, &&op87, + &&op88, &&op89, &&op8A, &&op8B, &&op8C, &&op8D, &&op8E, &&op8F, + &&op90, &&op91, &&op92, &&op93, &&op94, &&op95, &&op96, &&op97, + &&op98, &&op99, &&op9A, &&op9B, &&op9C, &&op9D, &&op9E, &&op9F, + &&opA0, &&opA1, &&opA2, &&opA3, &&opA4, &&opA5, &&opA6, &&opA7, + &&opA8, &&opA9, &&opAA, &&opAB, &&opAC, &&opAD, &&opAE, &&opAF, + &&opB0, &&opB1, &&opB2, &&opB3, &&opB4, &&opB5, &&opB6, &&opB7, + &&opB8, &&opB9, &&opBA, &&opBB, &&opBC, &&opBD, &&opBE, &&opBF, + &&opC0, &&opC1, &&opC2, &&opC3, &&opC4, &&opC5, &&opC6, &&opC7, + &&opC8, &&opC9, &&opCA, &&opCB, &&opCC, &&opCD, &&opCE, &&opCF, + &&opD0, &&opD1, &&opD2, &&opD3, &&opD4, &&opD5, &&opD6, &&opD7, + &&opD8, &&opD9, &&opDA, &&opDB, &&opDC, &&opDD, &&opDE, &&opDF, + &&opE0, &&opE1, &&opE2, &&opE3, &&opE4, &&opE5, &&opE6, &&opE7, + &&opE8, &&opE9, &&opEA, &&opEB, &&opEC, &&opED, &&opEE, &&opEF, + &&opF0, &&opF1, &&opF2, &&opF3, &&opF4, &&opF5, &&opF6, &&opF7, + &&opF8, &&opF9, &&opFA, &&opFB, &&opFC, &&opFD, &&opFE, &&opFF + }; + +#endif /* NES6502_JUMPTABLE */ + + remaining_cycles = timeslice_cycles; + + GET_GLOBAL_REGS(); + + /* check for DMA cycle burning */ + if (cpu.burn_cycles && remaining_cycles > 0) + { + int burn_for; + + burn_for = MIN(remaining_cycles, cpu.burn_cycles); + ADD_CYCLES(burn_for); + cpu.burn_cycles -= burn_for; + } + + if (0 == i_flag && cpu.int_pending && remaining_cycles > 0) + { + cpu.int_pending = 0; + IRQ_PROC(); + ADD_CYCLES(INT_CYCLES); + } + +#ifdef NES6502_JUMPTABLE + /* fetch first instruction */ + OPCODE_END + +#else /* !NES6502_JUMPTABLE */ + + /* Continue until we run out of cycles */ + while (remaining_cycles > 0) + { +#ifdef NES6502_DISASM + log_printf(nes6502_disasm(PC, COMBINE_FLAGS(), A, X, Y, S)); +#endif /* NES6502_DISASM */ + + /* Fetch and execute instruction */ + switch (bank_readbyte(PC++)) + { +#endif /* !NES6502_JUMPTABLE */ + + OPCODE_BEGIN(00) /* BRK */ + BRK(); + OPCODE_END + + OPCODE_BEGIN(01) /* ORA ($nn,X) */ + ORA(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(02) /* JAM */ + OPCODE_BEGIN(12) /* JAM */ + OPCODE_BEGIN(22) /* JAM */ + OPCODE_BEGIN(32) /* JAM */ + OPCODE_BEGIN(42) /* JAM */ + OPCODE_BEGIN(52) /* JAM */ + OPCODE_BEGIN(62) /* JAM */ + OPCODE_BEGIN(72) /* JAM */ + OPCODE_BEGIN(92) /* JAM */ + OPCODE_BEGIN(B2) /* JAM */ + OPCODE_BEGIN(D2) /* JAM */ + OPCODE_BEGIN(F2) /* JAM */ + JAM(); + /* kill the CPU */ + remaining_cycles = 0; + OPCODE_END + + OPCODE_BEGIN(03) /* SLO ($nn,X) */ + SLO(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(04) /* NOP $nn */ + OPCODE_BEGIN(44) /* NOP $nn */ + OPCODE_BEGIN(64) /* NOP $nn */ + DOP(3); + OPCODE_END + + OPCODE_BEGIN(05) /* ORA $nn */ + ORA(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(06) /* ASL $nn */ + ASL(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(07) /* SLO $nn */ + SLO(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(08) /* PHP */ + PHP(); + OPCODE_END + + OPCODE_BEGIN(09) /* ORA #$nn */ + ORA(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(0A) /* ASL A */ + ASL_A(); + OPCODE_END + + OPCODE_BEGIN(0B) /* ANC #$nn */ + ANC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(0C) /* NOP $nnnn */ + TOP(); + OPCODE_END + + OPCODE_BEGIN(0D) /* ORA $nnnn */ + ORA(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(0E) /* ASL $nnnn */ + ASL(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(0F) /* SLO $nnnn */ + SLO(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(10) /* BPL $nnnn */ + BPL(); + OPCODE_END + + OPCODE_BEGIN(11) /* ORA ($nn),Y */ + ORA(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(13) /* SLO ($nn),Y */ + SLO(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(14) /* NOP $nn,X */ + OPCODE_BEGIN(34) /* NOP */ + OPCODE_BEGIN(54) /* NOP $nn,X */ + OPCODE_BEGIN(74) /* NOP $nn,X */ + OPCODE_BEGIN(D4) /* NOP $nn,X */ + OPCODE_BEGIN(F4) /* NOP ($nn,X) */ + DOP(4); + OPCODE_END + + OPCODE_BEGIN(15) /* ORA $nn,X */ + ORA(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(16) /* ASL $nn,X */ + ASL(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(17) /* SLO $nn,X */ + SLO(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(18) /* CLC */ + CLC(); + OPCODE_END + + OPCODE_BEGIN(19) /* ORA $nnnn,Y */ + ORA(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(1A) /* NOP */ + OPCODE_BEGIN(3A) /* NOP */ + OPCODE_BEGIN(5A) /* NOP */ + OPCODE_BEGIN(7A) /* NOP */ + OPCODE_BEGIN(DA) /* NOP */ + OPCODE_BEGIN(FA) /* NOP */ + NOP(); + OPCODE_END + + OPCODE_BEGIN(1B) /* SLO $nnnn,Y */ + SLO(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(1C) /* NOP $nnnn,X */ + OPCODE_BEGIN(3C) /* NOP $nnnn,X */ + OPCODE_BEGIN(5C) /* NOP $nnnn,X */ + OPCODE_BEGIN(7C) /* NOP $nnnn,X */ + OPCODE_BEGIN(DC) /* NOP $nnnn,X */ + OPCODE_BEGIN(FC) /* NOP $nnnn,X */ + TOP(); + OPCODE_END + + OPCODE_BEGIN(1D) /* ORA $nnnn,X */ + ORA(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(1E) /* ASL $nnnn,X */ + ASL(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(1F) /* SLO $nnnn,X */ + SLO(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(20) /* JSR $nnnn */ + JSR(); + OPCODE_END + + OPCODE_BEGIN(21) /* AND ($nn,X) */ + AND(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(23) /* RLA ($nn,X) */ + RLA(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(24) /* BIT $nn */ + BIT(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(25) /* AND $nn */ + AND(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(26) /* ROL $nn */ + ROL(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(27) /* RLA $nn */ + RLA(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(28) /* PLP */ + PLP(); + OPCODE_END + + OPCODE_BEGIN(29) /* AND #$nn */ + AND(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2A) /* ROL A */ + ROL_A(); + OPCODE_END + + OPCODE_BEGIN(2B) /* ANC #$nn */ + ANC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2C) /* BIT $nnnn */ + BIT(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2D) /* AND $nnnn */ + AND(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(2E) /* ROL $nnnn */ + ROL(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(2F) /* RLA $nnnn */ + RLA(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(30) /* BMI $nnnn */ + BMI(); + OPCODE_END + + OPCODE_BEGIN(31) /* AND ($nn),Y */ + AND(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(33) /* RLA ($nn),Y */ + RLA(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(35) /* AND $nn,X */ + AND(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(36) /* ROL $nn,X */ + ROL(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(37) /* RLA $nn,X */ + RLA(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(38) /* SEC */ + SEC(); + OPCODE_END + + OPCODE_BEGIN(39) /* AND $nnnn,Y */ + AND(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(3B) /* RLA $nnnn,Y */ + RLA(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(3D) /* AND $nnnn,X */ + AND(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(3E) /* ROL $nnnn,X */ + ROL(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(3F) /* RLA $nnnn,X */ + RLA(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(40) /* RTI */ + RTI(); + OPCODE_END + + OPCODE_BEGIN(41) /* EOR ($nn,X) */ + EOR(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(43) /* SRE ($nn,X) */ + SRE(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(45) /* EOR $nn */ + EOR(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(46) /* LSR $nn */ + LSR(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(47) /* SRE $nn */ + SRE(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(48) /* PHA */ + PHA(); + OPCODE_END + + OPCODE_BEGIN(49) /* EOR #$nn */ + EOR(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(4A) /* LSR A */ + LSR_A(); + OPCODE_END + + OPCODE_BEGIN(4B) /* ASR #$nn */ + ASR(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(4C) /* JMP $nnnn */ + JMP_ABSOLUTE(); + OPCODE_END + + OPCODE_BEGIN(4D) /* EOR $nnnn */ + EOR(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(4E) /* LSR $nnnn */ + LSR(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(4F) /* SRE $nnnn */ + SRE(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(50) /* BVC $nnnn */ + BVC(); + OPCODE_END + + OPCODE_BEGIN(51) /* EOR ($nn),Y */ + EOR(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(53) /* SRE ($nn),Y */ + SRE(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(55) /* EOR $nn,X */ + EOR(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(56) /* LSR $nn,X */ + LSR(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(57) /* SRE $nn,X */ + SRE(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(58) /* CLI */ + CLI(); + OPCODE_END + + OPCODE_BEGIN(59) /* EOR $nnnn,Y */ + EOR(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(5B) /* SRE $nnnn,Y */ + SRE(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(5D) /* EOR $nnnn,X */ + EOR(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(5E) /* LSR $nnnn,X */ + LSR(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(5F) /* SRE $nnnn,X */ + SRE(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(60) /* RTS */ + RTS(); + OPCODE_END + + OPCODE_BEGIN(61) /* ADC ($nn,X) */ + ADC(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(63) /* RRA ($nn,X) */ + RRA(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(65) /* ADC $nn */ + ADC(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(66) /* ROR $nn */ + ROR(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(67) /* RRA $nn */ + RRA(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(68) /* PLA */ + PLA(); + OPCODE_END + + OPCODE_BEGIN(69) /* ADC #$nn */ + ADC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(6A) /* ROR A */ + ROR_A(); + OPCODE_END + + OPCODE_BEGIN(6B) /* ARR #$nn */ + ARR(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(6C) /* JMP ($nnnn) */ + JMP_INDIRECT(); + OPCODE_END + + OPCODE_BEGIN(6D) /* ADC $nnnn */ + ADC(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(6E) /* ROR $nnnn */ + ROR(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(6F) /* RRA $nnnn */ + RRA(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(70) /* BVS $nnnn */ + BVS(); + OPCODE_END + + OPCODE_BEGIN(71) /* ADC ($nn),Y */ + ADC(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(73) /* RRA ($nn),Y */ + RRA(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(75) /* ADC $nn,X */ + ADC(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(76) /* ROR $nn,X */ + ROR(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(77) /* RRA $nn,X */ + RRA(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(78) /* SEI */ + SEI(); + OPCODE_END + + OPCODE_BEGIN(79) /* ADC $nnnn,Y */ + ADC(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(7B) /* RRA $nnnn,Y */ + RRA(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(7D) /* ADC $nnnn,X */ + ADC(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(7E) /* ROR $nnnn,X */ + ROR(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(7F) /* RRA $nnnn,X */ + RRA(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(80) /* NOP #$nn */ + OPCODE_BEGIN(82) /* NOP #$nn */ + OPCODE_BEGIN(89) /* NOP #$nn */ + OPCODE_BEGIN(C2) /* NOP #$nn */ + OPCODE_BEGIN(E2) /* NOP #$nn */ + DOP(2); + OPCODE_END + + OPCODE_BEGIN(81) /* STA ($nn,X) */ + STA(6, INDIR_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(83) /* SAX ($nn,X) */ + SAX(6, INDIR_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(84) /* STY $nn */ + STY(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(85) /* STA $nn */ + STA(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(86) /* STX $nn */ + STX(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(87) /* SAX $nn */ + SAX(3, ZERO_PAGE_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(88) /* DEY */ + DEY(); + OPCODE_END + + OPCODE_BEGIN(8A) /* TXA */ + TXA(); + OPCODE_END + + OPCODE_BEGIN(8B) /* ANE #$nn */ + ANE(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(8C) /* STY $nnnn */ + STY(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(8D) /* STA $nnnn */ + STA(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(8E) /* STX $nnnn */ + STX(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(8F) /* SAX $nnnn */ + SAX(4, ABSOLUTE_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(90) /* BCC $nnnn */ + BCC(); + OPCODE_END + + OPCODE_BEGIN(91) /* STA ($nn),Y */ + STA(6, INDIR_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(93) /* SHA ($nn),Y */ + SHA(6, INDIR_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(94) /* STY $nn,X */ + STY(4, ZP_IND_X_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(95) /* STA $nn,X */ + STA(4, ZP_IND_X_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(96) /* STX $nn,Y */ + STX(4, ZP_IND_Y_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(97) /* SAX $nn,Y */ + SAX(4, ZP_IND_Y_ADDR, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(98) /* TYA */ + TYA(); + OPCODE_END + + OPCODE_BEGIN(99) /* STA $nnnn,Y */ + STA(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9A) /* TXS */ + TXS(); + OPCODE_END + + OPCODE_BEGIN(9B) /* SHS $nnnn,Y */ + SHS(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9C) /* SHY $nnnn,X */ + SHY(5, ABS_IND_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9D) /* STA $nnnn,X */ + STA(5, ABS_IND_X_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9E) /* SHX $nnnn,Y */ + SHX(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(9F) /* SHA $nnnn,Y */ + SHA(5, ABS_IND_Y_ADDR, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(A0) /* LDY #$nn */ + LDY(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A1) /* LDA ($nn,X) */ + LDA(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(A2) /* LDX #$nn */ + LDX(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A3) /* LAX ($nn,X) */ + LAX(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(A4) /* LDY $nn */ + LDY(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A5) /* LDA $nn */ + LDA(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A6) /* LDX $nn */ + LDX(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A7) /* LAX $nn */ + LAX(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(A8) /* TAY */ + TAY(); + OPCODE_END + + OPCODE_BEGIN(A9) /* LDA #$nn */ + LDA(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AA) /* TAX */ + TAX(); + OPCODE_END + + OPCODE_BEGIN(AB) /* LXA #$nn */ + LXA(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AC) /* LDY $nnnn */ + LDY(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AD) /* LDA $nnnn */ + LDA(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AE) /* LDX $nnnn */ + LDX(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(AF) /* LAX $nnnn */ + LAX(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(B0) /* BCS $nnnn */ + BCS(); + OPCODE_END + + OPCODE_BEGIN(B1) /* LDA ($nn),Y */ + LDA(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(B3) /* LAX ($nn),Y */ + LAX(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(B4) /* LDY $nn,X */ + LDY(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(B5) /* LDA $nn,X */ + LDA(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(B6) /* LDX $nn,Y */ + LDX(4, ZP_IND_Y_BYTE); + OPCODE_END + + OPCODE_BEGIN(B7) /* LAX $nn,Y */ + LAX(4, ZP_IND_Y_BYTE); + OPCODE_END + + OPCODE_BEGIN(B8) /* CLV */ + CLV(); + OPCODE_END + + OPCODE_BEGIN(B9) /* LDA $nnnn,Y */ + LDA(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BA) /* TSX */ + TSX(); + OPCODE_END + + OPCODE_BEGIN(BB) /* LAS $nnnn,Y */ + LAS(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BC) /* LDY $nnnn,X */ + LDY(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BD) /* LDA $nnnn,X */ + LDA(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BE) /* LDX $nnnn,Y */ + LDX(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(BF) /* LAX $nnnn,Y */ + LAX(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(C0) /* CPY #$nn */ + CPY(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(C1) /* CMP ($nn,X) */ + CMP(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(C3) /* DCP ($nn,X) */ + DCP(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(C4) /* CPY $nn */ + CPY(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(C5) /* CMP $nn */ + CMP(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(C6) /* DEC $nn */ + DEC(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(C7) /* DCP $nn */ + DCP(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(C8) /* INY */ + INY(); + OPCODE_END + + OPCODE_BEGIN(C9) /* CMP #$nn */ + CMP(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CA) /* DEX */ + DEX(); + OPCODE_END + + OPCODE_BEGIN(CB) /* SBX #$nn */ + SBX(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CC) /* CPY $nnnn */ + CPY(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CD) /* CMP $nnnn */ + CMP(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(CE) /* DEC $nnnn */ + DEC(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(CF) /* DCP $nnnn */ + DCP(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(D0) /* BNE $nnnn */ + BNE(); + OPCODE_END + + OPCODE_BEGIN(D1) /* CMP ($nn),Y */ + CMP(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(D3) /* DCP ($nn),Y */ + DCP(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(D5) /* CMP $nn,X */ + CMP(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(D6) /* DEC $nn,X */ + DEC(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(D7) /* DCP $nn,X */ + DCP(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(D8) /* CLD */ + CLD(); + OPCODE_END + + OPCODE_BEGIN(D9) /* CMP $nnnn,Y */ + CMP(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(DB) /* DCP $nnnn,Y */ + DCP(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(DD) /* CMP $nnnn,X */ + CMP(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(DE) /* DEC $nnnn,X */ + DEC(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(DF) /* DCP $nnnn,X */ + DCP(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(E0) /* CPX #$nn */ + CPX(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(E1) /* SBC ($nn,X) */ + SBC(6, INDIR_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(E3) /* ISB ($nn,X) */ + ISB(8, INDIR_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(E4) /* CPX $nn */ + CPX(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(E5) /* SBC $nn */ + SBC(3, ZERO_PAGE_BYTE); + OPCODE_END + + OPCODE_BEGIN(E6) /* INC $nn */ + INC(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(E7) /* ISB $nn */ + ISB(5, ZERO_PAGE, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(E8) /* INX */ + INX(); + OPCODE_END + + OPCODE_BEGIN(E9) /* SBC #$nn */ + OPCODE_BEGIN(EB) /* USBC #$nn */ + SBC(2, IMMEDIATE_BYTE); + OPCODE_END + + OPCODE_BEGIN(EA) /* NOP */ + NOP(); + OPCODE_END + + OPCODE_BEGIN(EC) /* CPX $nnnn */ + CPX(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(ED) /* SBC $nnnn */ + SBC(4, ABSOLUTE_BYTE); + OPCODE_END + + OPCODE_BEGIN(EE) /* INC $nnnn */ + INC(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(EF) /* ISB $nnnn */ + ISB(6, ABSOLUTE, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(F0) /* BEQ $nnnn */ + BEQ(); + OPCODE_END + + OPCODE_BEGIN(F1) /* SBC ($nn),Y */ + SBC(5, INDIR_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(F3) /* ISB ($nn),Y */ + ISB(8, INDIR_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(F5) /* SBC $nn,X */ + SBC(4, ZP_IND_X_BYTE); + OPCODE_END + + OPCODE_BEGIN(F6) /* INC $nn,X */ + INC(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(F7) /* ISB $nn,X */ + ISB(6, ZP_IND_X, ZP_WRITEBYTE, baddr); + OPCODE_END + + OPCODE_BEGIN(F8) /* SED */ + SED(); + OPCODE_END + + OPCODE_BEGIN(F9) /* SBC $nnnn,Y */ + SBC(4, ABS_IND_Y_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(FB) /* ISB $nnnn,Y */ + ISB(7, ABS_IND_Y, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(FD) /* SBC $nnnn,X */ + SBC(4, ABS_IND_X_BYTE_READ); + OPCODE_END + + OPCODE_BEGIN(FE) /* INC $nnnn,X */ + INC(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + + OPCODE_BEGIN(FF) /* ISB $nnnn,X */ + ISB(7, ABS_IND_X, mem_writebyte, addr); + OPCODE_END + +#ifdef NES6502_JUMPTABLE +end_execute: + +#else /* !NES6502_JUMPTABLE */ + } + } +#endif /* !NES6502_JUMPTABLE */ + + /* store local copy of regs */ + STORE_LOCAL_REGS(); + + /* Return our actual amount of executed cycles */ + return (cpu.total_cycles - old_cycles); +} + +/* Issue a CPU Reset */ +void nes6502_reset(void) +{ + cpu.p_reg = Z_FLAG | R_FLAG | I_FLAG; /* Reserved bit always 1 */ + cpu.int_pending = 0; /* No pending interrupts */ + cpu.int_latency = 0; /* No latent interrupts */ + cpu.pc_reg = bank_readword(RESET_VECTOR); /* Fetch reset vector */ + cpu.burn_cycles = RESET_CYCLES; + cpu.jammed = false; +} + +/* following macro is used for below 2 functions */ +#define DECLARE_LOCAL_REGS \ + uint32 PC; \ + uint8 A, X, Y, S; \ + uint8 n_flag, v_flag, b_flag; \ + uint8 d_flag, i_flag, z_flag, c_flag; + +/* Non-maskable interrupt */ +void nes6502_nmi(void) +{ + DECLARE_LOCAL_REGS + + if (false == cpu.jammed) + { + GET_GLOBAL_REGS(); + NMI_PROC(); + cpu.burn_cycles += INT_CYCLES; + STORE_LOCAL_REGS(); + } +} + +/* Interrupt request */ +void nes6502_irq(void) +{ + DECLARE_LOCAL_REGS + + if (false == cpu.jammed) + { + GET_GLOBAL_REGS(); + if (0 == i_flag) + { + IRQ_PROC(); + cpu.burn_cycles += INT_CYCLES; + } + else + { + cpu.int_pending = 1; + } + STORE_LOCAL_REGS(); + } +} + +/* Set dead cycle period */ +void nes6502_burn(int cycles) +{ + cpu.burn_cycles += cycles; +} + +/* Release our timeslice */ +void nes6502_release(void) +{ + remaining_cycles = 0; +} + +/* +** $Log: nes6502.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:39 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.34 2000/11/27 19:33:07 matt +** concise interrupts +** +** Revision 1.33 2000/11/26 15:39:54 matt +** timing fixes +** +** Revision 1.32 2000/11/20 13:22:51 matt +** added note about word fetches across page boundaries +** +** Revision 1.31 2000/11/13 00:57:39 matt +** trying to add 1-instruction interrupt latency... and failing. +** +** Revision 1.30 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.29 2000/10/10 13:05:05 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.28 2000/10/08 17:55:41 matt +** check burn cycles before ints +** +** Revision 1.27 2000/09/15 03:42:32 matt +** nes6502_release to release current timeslice +** +** Revision 1.26 2000/09/15 03:16:17 matt +** optimized C flag handling, and ADC/SBC/ROL/ROR macros +** +** Revision 1.25 2000/09/14 02:12:03 matt +** disassembling now works with goto table, and removed memcpy from context get/set +** +** Revision 1.24 2000/09/11 03:55:57 matt +** cosmetics +** +** Revision 1.23 2000/09/11 01:45:45 matt +** flag optimizations. this thing is fast! +** +** Revision 1.22 2000/09/08 13:29:25 matt +** added switch()-less execution for gcc +** +** Revision 1.21 2000/09/08 11:54:48 matt +** optimize +** +** Revision 1.20 2000/09/07 21:58:18 matt +** api change for nes6502_burn, optimized core +** +** Revision 1.19 2000/09/07 13:39:01 matt +** resolved a few conflicts +** +** Revision 1.18 2000/09/07 01:34:55 matt +** nes6502_init deprecated, moved flag regs to separate vars +** +** Revision 1.17 2000/08/31 13:26:35 matt +** added DISASM flag, to sync with asm version +** +** Revision 1.16 2000/08/29 05:38:00 matt +** removed faulty failure note +** +** Revision 1.15 2000/08/28 12:53:44 matt +** fixes for disassembler +** +** Revision 1.14 2000/08/28 04:32:28 matt +** naming convention changes +** +** Revision 1.13 2000/08/28 01:46:15 matt +** moved some of them defines around, cleaned up jamming code +** +** Revision 1.12 2000/08/16 04:56:37 matt +** accurate CPU jamming, added dead page emulation +** +** Revision 1.11 2000/07/30 04:32:00 matt +** now emulates the NES frame IRQ +** +** Revision 1.10 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.9 2000/07/11 04:27:18 matt +** new disassembler calling convention +** +** Revision 1.8 2000/07/10 05:26:38 matt +** cosmetic +** +** Revision 1.7 2000/07/06 17:10:51 matt +** minor (er, spelling) error fixed +** +** Revision 1.6 2000/07/04 04:50:07 matt +** minor change to includes +** +** Revision 1.5 2000/07/03 02:18:16 matt +** added a few notes about potential failure cases +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes6502.h b/MCUME_teensy/teensynofrendo/nes6502.h new file mode 100755 index 0000000..7a2d040 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes6502.h @@ -0,0 +1,175 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes6502.h +** +** NES custom 6502 CPU definitions / prototypes +** $Id: nes6502.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +/* NOTE: 16-bit addresses avoided like the plague: use 32-bit values +** wherever humanly possible +*/ +#ifndef _NES6502_H_ +#define _NES6502_H_ + +#include "noftypes.h" + +/* Define this to enable decimal mode in ADC / SBC (not needed in NES) */ +/*#define NES6502_DECIMAL*/ + +#define NES6502_NUMBANKS 16 +#define NES6502_BANKSHIFT 12 +#define NES6502_BANKSIZE (0x10000 / NES6502_NUMBANKS) +#define NES6502_BANKMASK (NES6502_BANKSIZE - 1) + +/* P (flag) register bitmasks */ +#define N_FLAG 0x80 +#define V_FLAG 0x40 +#define R_FLAG 0x20 /* Reserved, always 1 */ +#define B_FLAG 0x10 +#define D_FLAG 0x08 +#define I_FLAG 0x04 +#define Z_FLAG 0x02 +#define C_FLAG 0x01 + +/* Vector addresses */ +#define NMI_VECTOR 0xFFFA +#define RESET_VECTOR 0xFFFC +#define IRQ_VECTOR 0xFFFE + +/* cycle counts for interrupts */ +#define INT_CYCLES 7 +#define RESET_CYCLES 6 + +#define NMI_MASK 0x01 +#define IRQ_MASK 0x02 + +/* Stack is located on 6502 page 1 */ +#define STACK_OFFSET 0x0100 + +typedef struct +{ + uint32 min_range, max_range; + uint8 (*read_func)(uint32 address); +} nes6502_memread; + +typedef struct +{ + uint32 min_range, max_range; + void (*write_func)(uint32 address, uint8 value); +} nes6502_memwrite; + +typedef struct +{ + uint8 *mem_page[NES6502_NUMBANKS]; /* memory page pointers */ + + nes6502_memread *read_handler; + nes6502_memwrite *write_handler; + + uint32 pc_reg; + uint8 a_reg, p_reg; + uint8 x_reg, y_reg; + uint8 s_reg; + + uint8 jammed; /* is processor jammed? */ + + uint8 int_pending, int_latency; + + int32 total_cycles, burn_cycles; +} nes6502_context; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Functions which govern the 6502's execution */ +extern void nes6502_reset(void); +extern int nes6502_execute(int total_cycles); +extern void nes6502_nmi(void); +extern void nes6502_irq(void); +extern uint8 nes6502_getbyte(uint32 address); +extern uint32 nes6502_getcycles(bool reset_flag); +extern void nes6502_burn(int cycles); +extern void nes6502_release(void); + +/* Context get/set */ +extern void nes6502_setcontext(nes6502_context *cpu); +extern void nes6502_getcontext(nes6502_context *cpu); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _NES6502_H_ */ + +/* +** $Log: nes6502.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:39 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.17 2000/11/13 00:57:39 matt +** trying to add 1-instruction interrupt latency... and failing. +** +** Revision 1.16 2000/10/27 12:53:36 matt +** banks are always 4kB now +** +** Revision 1.15 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.14 2000/09/15 03:42:32 matt +** nes6502_release to release current timeslice +** +** Revision 1.13 2000/09/11 03:55:32 matt +** cosmetics +** +** Revision 1.12 2000/09/08 11:54:48 matt +** optimize +** +** Revision 1.11 2000/09/07 21:58:18 matt +** api change for nes6502_burn, optimized core +** +** Revision 1.10 2000/09/07 01:34:55 matt +** nes6502_init deprecated, moved flag regs to separate vars +** +** Revision 1.9 2000/08/28 12:53:44 matt +** fixes for disassembler +** +** Revision 1.8 2000/08/28 01:46:15 matt +** moved some of them defines around, cleaned up jamming code +** +** Revision 1.7 2000/08/16 04:56:37 matt +** accurate CPU jamming, added dead page emulation +** +** Revision 1.6 2000/07/30 04:32:00 matt +** now emulates the NES frame IRQ +** +** Revision 1.5 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_apu.c b/MCUME_teensy/teensynofrendo/nes_apu.c new file mode 100755 index 0000000..9707411 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_apu.c @@ -0,0 +1,1195 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_apu.c +** +** NES APU emulation +** $Id: nes_apu.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "log.h" +#include "nes_apu.h" +#include "nes6502.h" + + +#define APU_OVERSAMPLE +#define APU_VOLUME_DECAY(x) ((x) -= ((x) >> 7)) + +/* the following seem to be the correct (empirically determined) +** relative volumes between the sound channels +*/ +#define APU_RECTANGLE_OUTPUT(channel) (apu.rectangle[channel].output_vol) +#define APU_TRIANGLE_OUTPUT (apu.triangle.output_vol + (apu.triangle.output_vol >> 2)) +#define APU_NOISE_OUTPUT ((apu.noise.output_vol + apu.noise.output_vol + apu.noise.output_vol) >> 2) +#define APU_DMC_OUTPUT ((apu.dmc.output_vol + apu.dmc.output_vol + apu.dmc.output_vol) >> 2) + +/* active APU */ +static apu_t apu; + +/* look up table madness */ +static int32 decay_lut[16]; +static int vbl_lut[32]; +static int trilength_lut[128]; + +/* noise lookups for both modes */ +#ifndef REALTIME_NOISE +static int8 noise_long_lut[APU_NOISE_32K]; +static int8 noise_short_lut[APU_NOISE_93]; +#endif /* !REALTIME_NOISE */ + + +/* vblank length table used for rectangles, triangle, noise */ +static const uint8 vbl_length[32] = +{ + 5, 127, + 10, 1, + 19, 2, + 40, 3, + 80, 4, + 30, 5, + 7, 6, + 13, 7, + 6, 8, + 12, 9, + 24, 10, + 48, 11, + 96, 12, + 36, 13, + 8, 14, + 16, 15 +}; + +/* frequency limit of rectangle channels */ +static const int freq_limit[8] = +{ + 0x3FF, 0x555, 0x666, 0x71C, 0x787, 0x7C1, 0x7E0, 0x7F0 +}; + +/* noise frequency lookup table */ +static const int noise_freq[16] = +{ + 4, 8, 16, 32, 64, 96, 128, 160, + 202, 254, 380, 508, 762, 1016, 2034, 4068 +}; + +/* DMC transfer freqs */ +const int dmc_clocks[16] = +{ + 428, 380, 340, 320, 286, 254, 226, 214, + 190, 160, 142, 128, 106, 85, 72, 54 +}; + +/* ratios of pos/neg pulse for rectangle waves */ +static const int duty_flip[4] = { 2, 4, 8, 12 }; + + +void apu_setcontext(apu_t *src_apu) +{ + apu = *src_apu; +} + +void apu_getcontext(apu_t *dest_apu) +{ + *dest_apu = apu; +} + +void apu_setchan(int chan, bool enabled) +{ + if (enabled) + apu.mix_enable |= (1 << chan); + else + apu.mix_enable &= ~(1 << chan); +} + +/* emulation of the 15-bit shift register the +** NES uses to generate pseudo-random series +** for the white noise channel +*/ +#ifdef REALTIME_NOISE +INLINE int8 shift_register15(uint8 xor_tap) +{ + static int sreg = 0x4000; + int bit0, tap, bit14; + + bit0 = sreg & 1; + tap = (sreg & xor_tap) ? 1 : 0; + bit14 = (bit0 ^ tap); + sreg >>= 1; + sreg |= (bit14 << 14); + return (bit0 ^ 1); +} +#else /* !REALTIME_NOISE */ +static void shift_register15(int8 *buf, int count) +{ + static int sreg = 0x4000; + int bit0, bit1, bit6, bit14; + + if (count == APU_NOISE_93) + { + while (count--) + { + bit0 = sreg & 1; + bit6 = (sreg & 0x40) >> 6; + bit14 = (bit0 ^ bit6); + sreg >>= 1; + sreg |= (bit14 << 14); + *buf++ = bit0 ^ 1; + } + } + else /* 32K noise */ + { + while (count--) + { + bit0 = sreg & 1; + bit1 = (sreg & 2) >> 1; + bit14 = (bit0 ^ bit1); + sreg >>= 1; + sreg |= (bit14 << 14); + *buf++ = bit0 ^ 1; + } + } +} +#endif /* !REALTIME_NOISE */ + +/* RECTANGLE WAVE +** ============== +** reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle +** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on +** reg2: 8 bits of freq +** reg3: 0-2=high freq, 7-4=vbl length counter +*/ +#ifdef APU_OVERSAMPLE + +#define APU_MAKE_RECTANGLE(ch) \ +static int32 apu_rectangle_##ch(void) \ +{ \ + int32 output, total; \ + int num_times; \ +\ + APU_VOLUME_DECAY(apu.rectangle[ch].output_vol); \ +\ + if (false == apu.rectangle[ch].enabled || 0 == apu.rectangle[ch].vbl_length) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* vbl length counter */ \ + if (false == apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].vbl_length--; \ +\ + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ \ + apu.rectangle[ch].env_phase -= 4; /* 240/60 */ \ + while (apu.rectangle[ch].env_phase < 0) \ + { \ + apu.rectangle[ch].env_phase += apu.rectangle[ch].env_delay; \ +\ + if (apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].env_vol = (apu.rectangle[ch].env_vol + 1) & 0x0F; \ + else if (apu.rectangle[ch].env_vol < 0x0F) \ + apu.rectangle[ch].env_vol++; \ + } \ +\ + /* TODO: find true relation of freq_limit to register values */ \ + if (apu.rectangle[ch].freq < 8 \ + || (false == apu.rectangle[ch].sweep_inc \ + && apu.rectangle[ch].freq > apu.rectangle[ch].freq_limit)) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* frequency sweeping at a rate of (sweep_delay + 1) / 120 secs */ \ + if (apu.rectangle[ch].sweep_on && apu.rectangle[ch].sweep_shifts) \ + { \ + apu.rectangle[ch].sweep_phase -= 2; /* 120/60 */ \ + while (apu.rectangle[ch].sweep_phase < 0) \ + { \ + apu.rectangle[ch].sweep_phase += apu.rectangle[ch].sweep_delay; \ +\ + if (apu.rectangle[ch].sweep_inc) /* ramp up */ \ + { \ + if (0 == ch) \ + apu.rectangle[ch].freq += ~(apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + else \ + apu.rectangle[ch].freq -= (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + else /* ramp down */ \ + { \ + apu.rectangle[ch].freq += (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + } \ + } \ +\ + apu.rectangle[ch].accum -= apu.cycle_rate; \ + if (apu.rectangle[ch].accum >= 0) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + if (apu.rectangle[ch].fixed_envelope) \ + output = apu.rectangle[ch].volume << 8; /* fixed volume */ \ + else \ + output = (apu.rectangle[ch].env_vol ^ 0x0F) << 8; \ +\ + num_times = total = 0; \ +\ + while (apu.rectangle[ch].accum < 0) \ + { \ + apu.rectangle[ch].accum += apu.rectangle[ch].freq + 1; \ + apu.rectangle[ch].adder = (apu.rectangle[ch].adder + 1) & 0x0F; \ +\ + if (apu.rectangle[ch].adder < apu.rectangle[ch].duty_flip) \ + total += output; \ + else \ + total -= output; \ +\ + num_times++; \ + } \ +\ + apu.rectangle[ch].output_vol = total / num_times; \ + return APU_RECTANGLE_OUTPUT(ch); \ +} + +#else /* !APU_OVERSAMPLE */ +#define APU_MAKE_RECTANGLE(ch) \ +static int32 apu_rectangle_##ch(void) \ +{ \ + int32 output; \ +\ + APU_VOLUME_DECAY(apu.rectangle[ch].output_vol); \ +\ + if (false == apu.rectangle[ch].enabled || 0 == apu.rectangle[ch].vbl_length) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* vbl length counter */ \ + if (false == apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].vbl_length--; \ +\ + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ \ + apu.rectangle[ch].env_phase -= 4; /* 240/60 */ \ + while (apu.rectangle[ch].env_phase < 0) \ + { \ + apu.rectangle[ch].env_phase += apu.rectangle[ch].env_delay; \ +\ + if (apu.rectangle[ch].holdnote) \ + apu.rectangle[ch].env_vol = (apu.rectangle[ch].env_vol + 1) & 0x0F; \ + else if (apu.rectangle[ch].env_vol < 0x0F) \ + apu.rectangle[ch].env_vol++; \ + } \ +\ + /* TODO: find true relation of freq_limit to register values */ \ + if (apu.rectangle[ch].freq < 8 || (false == apu.rectangle[ch].sweep_inc && apu.rectangle[ch].freq > apu.rectangle[ch].freq_limit)) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + /* frequency sweeping at a rate of (sweep_delay + 1) / 120 secs */ \ + if (apu.rectangle[ch].sweep_on && apu.rectangle[ch].sweep_shifts) \ + { \ + apu.rectangle[ch].sweep_phase -= 2; /* 120/60 */ \ + while (apu.rectangle[ch].sweep_phase < 0) \ + { \ + apu.rectangle[ch].sweep_phase += apu.rectangle[ch].sweep_delay; \ +\ + if (apu.rectangle[ch].sweep_inc) /* ramp up */ \ + { \ + if (0 == ch) \ + apu.rectangle[ch].freq += ~(apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + else \ + apu.rectangle[ch].freq -= (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + else /* ramp down */ \ + { \ + apu.rectangle[ch].freq += (apu.rectangle[ch].freq >> apu.rectangle[ch].sweep_shifts); \ + } \ + } \ + } \ +\ + apu.rectangle[ch].accum -= apu.cycle_rate; \ + if (apu.rectangle[ch].accum >= 0) \ + return APU_RECTANGLE_OUTPUT(ch); \ +\ + while (apu.rectangle[ch].accum < 0) \ + { \ + apu.rectangle[ch].accum += (apu.rectangle[ch].freq + 1); \ + apu.rectangle[ch].adder = (apu.rectangle[ch].adder + 1) & 0x0F; \ + } \ +\ + if (apu.rectangle[ch].fixed_envelope) \ + output = apu.rectangle[ch].volume << 8; /* fixed volume */ \ + else \ + output = (apu.rectangle[ch].env_vol ^ 0x0F) << 8; \ +\ + if (0 == apu.rectangle[ch].adder) \ + apu.rectangle[ch].output_vol = output; \ + else if (apu.rectangle[ch].adder == apu.rectangle[ch].duty_flip) \ + apu.rectangle[ch].output_vol = -output; \ +\ + return APU_RECTANGLE_OUTPUT(ch); \ +} + +#endif /* !APU_OVERSAMPLE */ + +/* generate the functions */ +APU_MAKE_RECTANGLE(0) +APU_MAKE_RECTANGLE(1) + + +/* TRIANGLE WAVE +** ============= +** reg0: 7=holdnote, 6-0=linear length counter +** reg2: low 8 bits of frequency +** reg3: 7-3=length counter, 2-0=high 3 bits of frequency +*/ +static int32 apu_triangle(void) +{ + APU_VOLUME_DECAY(apu.triangle.output_vol); + + if (false == apu.triangle.enabled || 0 == apu.triangle.vbl_length) + return APU_TRIANGLE_OUTPUT; + + if (apu.triangle.counter_started) + { + if (apu.triangle.linear_length > 0) + apu.triangle.linear_length--; + if (apu.triangle.vbl_length && false == apu.triangle.holdnote) + apu.triangle.vbl_length--; + } + else if (false == apu.triangle.holdnote && apu.triangle.write_latency) + { + if (--apu.triangle.write_latency == 0) + apu.triangle.counter_started = true; + } + + if (0 == apu.triangle.linear_length || apu.triangle.freq < 4) /* inaudible */ + return APU_TRIANGLE_OUTPUT; + + apu.triangle.accum -= apu.cycle_rate; \ + while (apu.triangle.accum < 0) + { + apu.triangle.accum += apu.triangle.freq; + apu.triangle.adder = (apu.triangle.adder + 1) & 0x1F; + + if (apu.triangle.adder & 0x10) + apu.triangle.output_vol -= (2 << 8); + else + apu.triangle.output_vol += (2 << 8); + } + + return APU_TRIANGLE_OUTPUT; +} + + +/* WHITE NOISE CHANNEL +** =================== +** reg0: 0-3=volume, 4=envelope, 5=hold +** reg2: 7=small(93 byte) sample,3-0=freq lookup +** reg3: 7-4=vbl length counter +*/ +/* TODO: AAAAAAAAAAAAAAAAAAAAAAAA! #ifdef MADNESS! */ +static int32 apu_noise(void) +{ + int32 outvol; + +#if defined(APU_OVERSAMPLE) && defined(REALTIME_NOISE) +#else /* !(APU_OVERSAMPLE && REALTIME_NOISE) */ + int32 noise_bit; +#endif /* !(APU_OVERSAMPLE && REALTIME_NOISE) */ +#ifdef APU_OVERSAMPLE + int num_times; + int32 total; +#endif /* APU_OVERSAMPLE */ + + APU_VOLUME_DECAY(apu.noise.output_vol); + + if (false == apu.noise.enabled || 0 == apu.noise.vbl_length) + return APU_NOISE_OUTPUT; + + /* vbl length counter */ + if (false == apu.noise.holdnote) + apu.noise.vbl_length--; + + /* envelope decay at a rate of (env_delay + 1) / 240 secs */ + apu.noise.env_phase -= 4; /* 240/60 */ + while (apu.noise.env_phase < 0) + { + apu.noise.env_phase += apu.noise.env_delay; + + if (apu.noise.holdnote) + apu.noise.env_vol = (apu.noise.env_vol + 1) & 0x0F; + else if (apu.noise.env_vol < 0x0F) + apu.noise.env_vol++; + } + + apu.noise.accum -= apu.cycle_rate; + if (apu.noise.accum >= 0) + return APU_NOISE_OUTPUT; + +#ifdef APU_OVERSAMPLE + if (apu.noise.fixed_envelope) + outvol = apu.noise.volume << 8; /* fixed volume */ + else + outvol = (apu.noise.env_vol ^ 0x0F) << 8; + + num_times = total = 0; +#endif /* APU_OVERSAMPLE */ + + while (apu.noise.accum < 0) + { + apu.noise.accum += apu.noise.freq; + +#ifdef REALTIME_NOISE + +#ifdef APU_OVERSAMPLE + if (shift_register15(apu.noise.xor_tap)) + total += outvol; + else + total -= outvol; + + num_times++; +#else /* !APU_OVERSAMPLE */ + noise_bit = shift_register15(apu.noise.xor_tap); +#endif /* !APU_OVERSAMPLE */ + +#else /* !REALTIME_NOISE */ + apu.noise.cur_pos++; + + if (apu.noise.short_sample) + { + if (APU_NOISE_93 == apu.noise.cur_pos) + apu.noise.cur_pos = 0; + } + else + { + if (APU_NOISE_32K == apu.noise.cur_pos) + apu.noise.cur_pos = 0; + } + +#ifdef APU_OVERSAMPLE + if (apu.noise.short_sample) + noise_bit = noise_short_lut[apu.noise.cur_pos]; + else + noise_bit = noise_long_lut[apu.noise.cur_pos]; + + if (noise_bit) + total += outvol; + else + total -= outvol; + + num_times++; +#endif /* APU_OVERSAMPLE */ +#endif /* !REALTIME_NOISE */ + } + +#ifdef APU_OVERSAMPLE + apu.noise.output_vol = total / num_times; +#else /* !APU_OVERSAMPLE */ + if (apu.noise.fixed_envelope) + outvol = apu.noise.volume << 8; /* fixed volume */ + else + outvol = (apu.noise.env_vol ^ 0x0F) << 8; + +#ifndef REALTIME_NOISE + if (apu.noise.short_sample) + noise_bit = noise_short_lut[apu.noise.cur_pos]; + else + noise_bit = noise_long_lut[apu.noise.cur_pos]; +#endif /* !REALTIME_NOISE */ + + if (noise_bit) + apu.noise.output_vol = outvol; + else + apu.noise.output_vol = -outvol; +#endif /* !APU_OVERSAMPLE */ + + return APU_NOISE_OUTPUT; +} + + +INLINE void apu_dmcreload(void) +{ + apu.dmc.address = apu.dmc.cached_addr; + apu.dmc.dma_length = apu.dmc.cached_dmalength; + apu.dmc.irq_occurred = false; +} + +/* DELTA MODULATION CHANNEL +** ========================= +** reg0: 7=irq gen, 6=looping, 3-0=pointer to clock table +** reg1: output dc level, 6 bits unsigned +** reg2: 8 bits of 64-byte aligned address offset : $C000 + (value * 64) +** reg3: length, (value * 16) + 1 +*/ +static int32 apu_dmc(void) +{ + int delta_bit; + + APU_VOLUME_DECAY(apu.dmc.output_vol); + + /* only process when channel is alive */ + if (apu.dmc.dma_length) + { + apu.dmc.accum -= apu.cycle_rate; + + while (apu.dmc.accum < 0) + { + apu.dmc.accum += apu.dmc.freq; + + delta_bit = (apu.dmc.dma_length & 7) ^ 7; + + if (7 == delta_bit) + { + apu.dmc.cur_byte = nes6502_getbyte(apu.dmc.address); + + /* steal a cycle from CPU*/ + nes6502_burn(1); + + /* prevent wraparound */ + if (0xFFFF == apu.dmc.address) + apu.dmc.address = 0x8000; + else + apu.dmc.address++; + } + + if (--apu.dmc.dma_length == 0) + { + /* if loop bit set, we're cool to retrigger sample */ + if (apu.dmc.looping) + { + apu_dmcreload(); + } + else + { + /* check to see if we should generate an irq */ + if (apu.dmc.irq_gen) + { + apu.dmc.irq_occurred = true; + if (apu.irq_callback) + apu.irq_callback(); + } + + /* bodge for timestamp queue */ + apu.dmc.enabled = false; + break; + } + } + + /* positive delta */ + if (apu.dmc.cur_byte & (1 << delta_bit)) + { + if (apu.dmc.regs[1] < 0x7D) + { + apu.dmc.regs[1] += 2; + apu.dmc.output_vol += (2 << 8); + } + } + /* negative delta */ + else + { + if (apu.dmc.regs[1] > 1) + { + apu.dmc.regs[1] -= 2; + apu.dmc.output_vol -= (2 << 8); + } + } + } + } + + return APU_DMC_OUTPUT; +} + + +void apu_write(uint32 address, uint8 value) +{ + int chan; + + switch (address) + { + /* rectangles */ + case APU_WRA0: + case APU_WRB0: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[0] = value; + apu.rectangle[chan].volume = value & 0x0F; + apu.rectangle[chan].env_delay = decay_lut[value & 0x0F]; + apu.rectangle[chan].holdnote = (value & 0x20) ? true : false; + apu.rectangle[chan].fixed_envelope = (value & 0x10) ? true : false; + apu.rectangle[chan].duty_flip = duty_flip[value >> 6]; + break; + + case APU_WRA1: + case APU_WRB1: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[1] = value; + apu.rectangle[chan].sweep_on = (value & 0x80) ? true : false; + apu.rectangle[chan].sweep_shifts = value & 7; + apu.rectangle[chan].sweep_delay = decay_lut[(value >> 4) & 7]; + apu.rectangle[chan].sweep_inc = (value & 0x08) ? true : false; + apu.rectangle[chan].freq_limit = freq_limit[value & 7]; + break; + + case APU_WRA2: + case APU_WRB2: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[2] = value; + apu.rectangle[chan].freq = (apu.rectangle[chan].freq & ~0xFF) | value; + break; + + case APU_WRA3: + case APU_WRB3: + chan = (address & 4) >> 2; + apu.rectangle[chan].regs[3] = value; + apu.rectangle[chan].vbl_length = vbl_lut[value >> 3]; + apu.rectangle[chan].env_vol = 0; + apu.rectangle[chan].freq = ((value & 7) << 8) | (apu.rectangle[chan].freq & 0xFF); + apu.rectangle[chan].adder = 0; + break; + + /* triangle */ + case APU_WRC0: + apu.triangle.regs[0] = value; + apu.triangle.holdnote = (value & 0x80) ? true : false; + + if (false == apu.triangle.counter_started && apu.triangle.vbl_length) + apu.triangle.linear_length = trilength_lut[value & 0x7F]; + + break; + + case APU_WRC2: + apu.triangle.regs[1] = value; + apu.triangle.freq = (((apu.triangle.regs[2] & 7) << 8) + value) + 1; + break; + + case APU_WRC3: + + apu.triangle.regs[2] = value; + + /* this is somewhat of a hack. there appears to be some latency on + ** the Real Thing between when trireg0 is written to and when the + ** linear length counter actually begins its countdown. we want to + ** prevent the case where the program writes to the freq regs first, + ** then to reg 0, and the counter accidentally starts running because + ** of the sound queue's timestamp processing. + ** + ** set latency to a couple hundred cycles -- should be plenty of time + ** for the 6502 code to do a couple of table dereferences and load up + ** the other triregs + */ + apu.triangle.write_latency = (int) (228 / apu.cycle_rate); + apu.triangle.freq = (((value & 7) << 8) + apu.triangle.regs[1]) + 1; + apu.triangle.vbl_length = vbl_lut[value >> 3]; + apu.triangle.counter_started = false; + apu.triangle.linear_length = trilength_lut[apu.triangle.regs[0] & 0x7F]; + break; + + /* noise */ + case APU_WRD0: + apu.noise.regs[0] = value; + apu.noise.env_delay = decay_lut[value & 0x0F]; + apu.noise.holdnote = (value & 0x20) ? true : false; + apu.noise.fixed_envelope = (value & 0x10) ? true : false; + apu.noise.volume = value & 0x0F; + break; + + case APU_WRD2: + apu.noise.regs[1] = value; + apu.noise.freq = noise_freq[value & 0x0F]; + +#ifdef REALTIME_NOISE + apu.noise.xor_tap = (value & 0x80) ? 0x40: 0x02; +#else /* !REALTIME_NOISE */ + /* detect transition from long->short sample */ + if ((value & 0x80) && false == apu.noise.short_sample) + { + /* recalculate short noise buffer */ + shift_register15(noise_short_lut, APU_NOISE_93); + apu.noise.cur_pos = 0; + } + apu.noise.short_sample = (value & 0x80) ? true : false; +#endif /* !REALTIME_NOISE */ + break; + + case APU_WRD3: + apu.noise.regs[2] = value; + apu.noise.vbl_length = vbl_lut[value >> 3]; + apu.noise.env_vol = 0; /* reset envelope */ + break; + + /* DMC */ + case APU_WRE0: + apu.dmc.regs[0] = value; + apu.dmc.freq = dmc_clocks[value & 0x0F]; + apu.dmc.looping = (value & 0x40) ? true : false; + + if (value & 0x80) + { + apu.dmc.irq_gen = true; + } + else + { + apu.dmc.irq_gen = false; + apu.dmc.irq_occurred = false; + } + break; + + case APU_WRE1: /* 7-bit DAC */ + /* add the _delta_ between written value and + ** current output level of the volume reg + */ + value &= 0x7F; /* bit 7 ignored */ + apu.dmc.output_vol += ((value - apu.dmc.regs[1]) << 8); + apu.dmc.regs[1] = value; + break; + + case APU_WRE2: + apu.dmc.regs[2] = value; + apu.dmc.cached_addr = 0xC000 + (uint16) (value << 6); + break; + + case APU_WRE3: + apu.dmc.regs[3] = value; + apu.dmc.cached_dmalength = ((value << 4) + 1) << 3; + break; + + case APU_SMASK: + /* bodge for timestamp queue */ + apu.dmc.enabled = (value & 0x10) ? true : false; + apu.enable_reg = value; + + for (chan = 0; chan < 2; chan++) + { + if (value & (1 << chan)) + { + apu.rectangle[chan].enabled = true; + } + else + { + apu.rectangle[chan].enabled = false; + apu.rectangle[chan].vbl_length = 0; + } + } + + if (value & 0x04) + { + apu.triangle.enabled = true; + } + else + { + apu.triangle.enabled = false; + apu.triangle.vbl_length = 0; + apu.triangle.linear_length = 0; + apu.triangle.counter_started = false; + apu.triangle.write_latency = 0; + } + + if (value & 0x08) + { + apu.noise.enabled = true; + } + else + { + apu.noise.enabled = false; + apu.noise.vbl_length = 0; + } + + if (value & 0x10) + { + if (0 == apu.dmc.dma_length) + apu_dmcreload(); + } + else + { + apu.dmc.dma_length = 0; + } + + apu.dmc.irq_occurred = false; + break; + + /* unused, but they get hit in some mem-clear loops */ + case 0x4009: + case 0x400D: + break; + + default: + break; + } +} + +/* Read from $4000-$4017 */ +uint8 apu_read(uint32 address) +{ + uint8 value; + + switch (address) + { + case APU_SMASK: + value = 0; + /* Return 1 in 0-5 bit pos if a channel is playing */ + if (apu.rectangle[0].enabled && apu.rectangle[0].vbl_length) + value |= 0x01; + if (apu.rectangle[1].enabled && apu.rectangle[1].vbl_length) + value |= 0x02; + if (apu.triangle.enabled && apu.triangle.vbl_length) + value |= 0x04; + if (apu.noise.enabled && apu.noise.vbl_length) + value |= 0x08; + + /* bodge for timestamp queue */ + if (apu.dmc.enabled) + value |= 0x10; + + if (apu.dmc.irq_occurred) + value |= 0x80; + + if (apu.irqclear_callback) + value |= apu.irqclear_callback(); + + break; + + default: + value = (address >> 8); /* heavy capacitance on data bus */ + break; + } + + return value; +} + +#define CLIP_OUTPUT16(out) \ +{ \ + /*out <<= 1;*/ \ + if (out > 0x7FFF) \ + out = 0x7FFF; \ + else if (out < -0x8000) \ + out = -0x8000; \ +} + +void apu_process(void *buffer, int num_samples) +{ + static int32 prev_sample = 0; + + int16 *buf16; + uint8 *buf8; + + if (NULL != buffer) + { + /* bleh */ + apu.buffer = buffer; + + buf16 = (int16 *) buffer; + buf8 = (uint8 *) buffer; + + while (num_samples--) + { + int32 next_sample, accum = 0; + + if (apu.mix_enable & 0x01) + accum += apu_rectangle_0(); + if (apu.mix_enable & 0x02) + accum += apu_rectangle_1(); + if (apu.mix_enable & 0x04) + accum += apu_triangle(); + if (apu.mix_enable & 0x08) + accum += apu_noise(); + if (apu.mix_enable & 0x10) + accum += apu_dmc(); + if (apu.ext && (apu.mix_enable & 0x20)) + accum += apu.ext->process(); + + /* do any filtering */ + if (APU_FILTER_NONE != apu.filter_type) + { + next_sample = accum; + + if (APU_FILTER_LOWPASS == apu.filter_type) + { + accum += prev_sample; + accum >>= 1; + } + else + accum = (accum + accum + accum + prev_sample) >> 2; + + prev_sample = next_sample; + } + + /* do clipping */ + CLIP_OUTPUT16(accum); + + /* signed 16-bit output, unsigned 8-bit */ + if (16 == apu.sample_bits) + *buf16++ = (int16) accum; + else + *buf8++ = (accum >> 8) ^ 0x80; + } + } +} + +/* set the filter type */ +void apu_setfilter(int filter_type) +{ + apu.filter_type = filter_type; +} + +void apu_reset(void) +{ + uint32 address; + + /* initialize all channel members */ + for (address = 0x4000; address <= 0x4013; address++) + apu_write(address, 0); + + apu_write(0x4015, 0); + + if (apu.ext && NULL != apu.ext->reset) + apu.ext->reset(); +} + +void apu_build_luts(int num_samples) +{ + int i; + + /* lut used for enveloping and frequency sweeps */ + for (i = 0; i < 16; i++) + decay_lut[i] = num_samples * (i + 1); + + /* used for note length, based on vblanks and size of audio buffer */ + for (i = 0; i < 32; i++) + vbl_lut[i] = vbl_length[i] * num_samples; + + /* triangle wave channel's linear length table */ + for (i = 0; i < 128; i++) + trilength_lut[i] = (int) (0.25 * i * num_samples); + +#ifndef REALTIME_NOISE + /* generate noise samples */ + shift_register15(noise_long_lut, APU_NOISE_32K); + shift_register15(noise_short_lut, APU_NOISE_93); +#endif /* !REALTIME_NOISE */ +} + +void apu_setparams(double base_freq, int sample_rate, int refresh_rate, int sample_bits) +{ + apu.sample_rate = sample_rate; + apu.refresh_rate = refresh_rate; + apu.sample_bits = sample_bits; + apu.num_samples = sample_rate / refresh_rate; + if (0 == base_freq) + apu.base_freq = APU_BASEFREQ; + else + apu.base_freq = base_freq; + apu.cycle_rate = (float) (apu.base_freq / sample_rate); + + /* build various lookup tables for apu */ + apu_build_luts(apu.num_samples); + + apu_reset(); +} + +/* Initializes emulated sound hardware, creates waveforms/voices */ +apu_t *apu_create(double base_freq, int sample_rate, int refresh_rate, int sample_bits) +{ + apu_t *temp_apu; + int channel; + + temp_apu = malloc(sizeof(apu_t)); + if (NULL == temp_apu) + return NULL; + + memset(temp_apu, 0, sizeof(apu_t)); + + /* set the update routine */ + temp_apu->process = apu_process; + temp_apu->ext = NULL; + + /* clear the callbacks */ + temp_apu->irq_callback = NULL; + temp_apu->irqclear_callback = NULL; + + apu_setcontext(temp_apu); + + apu_setparams(base_freq, sample_rate, refresh_rate, sample_bits); + + for (channel = 0; channel < 6; channel++) + apu_setchan(channel, true); + + apu_setfilter(APU_FILTER_WEIGHTED); + + apu_getcontext(temp_apu); + + return temp_apu; +} + +void apu_destroy(apu_t **src_apu) +{ + if (*src_apu) + { + if ((*src_apu)->ext && NULL != (*src_apu)->ext->shutdown) + (*src_apu)->ext->shutdown(); + free(*src_apu); + *src_apu = NULL; + } +} + +void apu_setext(apu_t *src_apu, apuext_t *ext) +{ + ASSERT(src_apu); + + src_apu->ext = ext; + + /* initialize it */ + if (src_apu->ext && NULL != src_apu->ext->init) + src_apu->ext->init(); +} + +/* +** $Log: nes_apu.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.6 2000/12/08 02:36:14 matt +** bye bye apu queue (for now) +** +** Revision 1.5 2000/11/27 19:33:53 matt +** no special treatment for nsf +** +** Revision 1.4 2000/11/25 20:29:17 matt +** weighted filter is now default +** +** Revision 1.3 2000/11/21 13:28:19 matt +** take care to zero allocated mem +** +** Revision 1.2 2000/10/28 15:20:59 matt +** irq callbacks in nes_apu +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.44 2000/10/23 17:53:06 matt +** set ptr to NULL after freeing +** +** Revision 1.43 2000/10/17 11:56:42 matt +** selectable apu base frequency +** +** Revision 1.42 2000/10/13 12:16:01 matt +** macro-ized the stuff that should be removed +** +** Revision 1.41 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.40 2000/10/03 11:56:20 matt +** better support for optional sound ext routines +** +** Revision 1.39 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.38 2000/09/18 02:12:55 matt +** more optimizations +** +** Revision 1.37 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.36 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.35 2000/09/07 21:57:14 matt +** api change +** +** Revision 1.34 2000/08/16 05:01:01 matt +** small buglet fixed +** +** Revision 1.33 2000/08/15 12:38:04 matt +** removed debug output +** +** Revision 1.32 2000/08/15 12:36:51 matt +** calling apu_process with buffer=NULL causes silent emulation of APU +** +** Revision 1.31 2000/08/11 02:27:21 matt +** general cleanups, plus apu_setparams routine +** +** Revision 1.30 2000/07/31 04:32:52 matt +** fragsize problem fixed, perhaps +** +** Revision 1.29 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.28 2000/07/28 03:15:46 matt +** accuracy changes for rectangle frequency sweeps +** +** Revision 1.27 2000/07/27 02:49:50 matt +** eccentricity in sweeping hardware now emulated correctly +** +** Revision 1.26 2000/07/25 02:25:14 matt +** safer apu_destroy +** +** Revision 1.25 2000/07/23 15:10:54 matt +** hacks for win32 +** +** Revision 1.24 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.23 2000/07/10 19:24:55 matt +** irqs are not supported in NSF playing mode +** +** Revision 1.22 2000/07/10 13:54:32 matt +** using generic nes_irq() now +** +** Revision 1.21 2000/07/10 05:29:34 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.20 2000/07/09 03:49:31 matt +** apu irqs now draw an irq line (bleh) +** +** Revision 1.19 2000/07/04 04:53:26 matt +** minor changes, sound amplification +** +** Revision 1.18 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.17 2000/06/26 11:01:55 matt +** made triangle a tad quieter +** +** Revision 1.16 2000/06/26 05:10:33 matt +** fixed cycle rate generation accuracy +** +** Revision 1.15 2000/06/26 05:00:37 matt +** cleanups +** +** Revision 1.14 2000/06/23 11:06:24 matt +** more faithful mixing of channels +** +** Revision 1.13 2000/06/23 03:29:27 matt +** cleaned up external sound inteface +** +** Revision 1.12 2000/06/20 00:08:39 matt +** bugfix to rectangle wave +** +** Revision 1.11 2000/06/13 13:48:58 matt +** fixed triangle write latency for fixed point apu cycle rate +** +** Revision 1.10 2000/06/12 01:14:36 matt +** minor change to clipping extents +** +** Revision 1.9 2000/06/09 20:00:56 matt +** fixed noise hiccup in NSF player mode +** +** Revision 1.8 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.7 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_apu.h b/MCUME_teensy/teensynofrendo/nes_apu.h new file mode 100755 index 0000000..523c969 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_apu.h @@ -0,0 +1,349 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_apu.h +** +** NES APU emulation header file +** $Id: nes_apu.h,v 1.1 2001/04/27 12:54:40 neil Exp $ +*/ + +#ifndef _NES_APU_H_ +#define _NES_APU_H_ + + +/* define this for realtime generated noise */ +#define REALTIME_NOISE + +#define APU_WRA0 0x4000 +#define APU_WRA1 0x4001 +#define APU_WRA2 0x4002 +#define APU_WRA3 0x4003 +#define APU_WRB0 0x4004 +#define APU_WRB1 0x4005 +#define APU_WRB2 0x4006 +#define APU_WRB3 0x4007 +#define APU_WRC0 0x4008 +#define APU_WRC2 0x400A +#define APU_WRC3 0x400B +#define APU_WRD0 0x400C +#define APU_WRD2 0x400E +#define APU_WRD3 0x400F +#define APU_WRE0 0x4010 +#define APU_WRE1 0x4011 +#define APU_WRE2 0x4012 +#define APU_WRE3 0x4013 + +#define APU_SMASK 0x4015 + +/* length of generated noise */ +#define APU_NOISE_32K 0x7FFF +#define APU_NOISE_93 93 + +#define APU_BASEFREQ 1789772.7272727272727272 + + +/* channel structures */ +/* As much data as possible is precalculated, +** to keep the sample processing as lean as possible +*/ + +typedef struct rectangle_s +{ + uint8 regs[4]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + bool fixed_envelope; + bool holdnote; + uint8 volume; + + int32 sweep_phase; + int32 sweep_delay; + bool sweep_on; + uint8 sweep_shifts; + uint8 sweep_length; + bool sweep_inc; + + /* this may not be necessary in the future */ + int32 freq_limit; + int32 env_phase; + int32 env_delay; + uint8 env_vol; + + int vbl_length; + uint8 adder; + int duty_flip; +} rectangle_t; + +typedef struct triangle_s +{ + uint8 regs[3]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + + uint8 adder; + + bool holdnote; + bool counter_started; + /* quasi-hack */ + int write_latency; + + int vbl_length; + int linear_length; +} triangle_t; + + +typedef struct noise_s +{ + uint8 regs[3]; + + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + + int32 env_phase; + int32 env_delay; + uint8 env_vol; + bool fixed_envelope; + bool holdnote; + + uint8 volume; + + int vbl_length; + +#ifdef REALTIME_NOISE + uint8 xor_tap; +#else + bool short_sample; + int cur_pos; +#endif /* REALTIME_NOISE */ +} noise_t; + +typedef struct dmc_s +{ + uint8 regs[4]; + + /* bodge for timestamp queue */ + bool enabled; + + float accum; + int32 freq; + int32 output_vol; + + uint32 address; + uint32 cached_addr; + int dma_length; + int cached_dmalength; + uint8 cur_byte; + + bool looping; + bool irq_gen; + bool irq_occurred; + +} dmc_t; + +enum +{ + APU_FILTER_NONE, + APU_FILTER_LOWPASS, + APU_FILTER_WEIGHTED +}; + +typedef struct +{ + uint32 min_range, max_range; + uint8 (*read_func)(uint32 address); +} apu_memread; + +typedef struct +{ + uint32 min_range, max_range; + void (*write_func)(uint32 address, uint8 value); +} apu_memwrite; + +/* external sound chip stuff */ +typedef struct apuext_s +{ + int (*init)(void); + void (*shutdown)(void); + void (*reset)(void); + int32 (*process)(void); + apu_memread *mem_read; + apu_memwrite *mem_write; +} apuext_t; + + +typedef struct apu_s +{ + rectangle_t rectangle[2]; + triangle_t triangle; + noise_t noise; + dmc_t dmc; + uint8 enable_reg; + + void *buffer; /* pointer to output buffer */ + int num_samples; + + uint8 mix_enable; + int filter_type; + + double base_freq; + float cycle_rate; + + int sample_rate; + int sample_bits; + int refresh_rate; + + void (*process)(void *buffer, int num_samples); + void (*irq_callback)(void); + uint8 (*irqclear_callback)(void); + + /* external sound chip */ + apuext_t *ext; +} apu_t; + + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Function prototypes */ +extern void apu_setcontext(apu_t *src_apu); +extern void apu_getcontext(apu_t *dest_apu); + +extern void apu_setparams(double base_freq, int sample_rate, int refresh_rate, int sample_bits); +extern apu_t *apu_create(double base_freq, int sample_rate, int refresh_rate, int sample_bits); +extern void apu_destroy(apu_t **apu); + +extern void apu_process(void *buffer, int num_samples); +extern void apu_reset(void); + +extern void apu_setext(apu_t *apu, apuext_t *ext); +extern void apu_setfilter(int filter_type); +extern void apu_setchan(int chan, bool enabled); + +extern uint8 apu_read(uint32 address); +extern void apu_write(uint32 address, uint8 value); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _NES_APU_H_ */ + +/* +** $Log: nes_apu.h,v $ +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.3 2000/12/08 02:36:14 matt +** bye bye apu queue (for now) +** +** Revision 1.2 2000/10/28 15:20:59 matt +** irq callbacks in nes_apu +** +** Revision 1.1 2000/10/24 12:19:59 matt +** changed directory structure +** +** Revision 1.28 2000/10/17 11:56:42 matt +** selectable apu base frequency +** +** Revision 1.27 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.26 2000/09/28 23:20:58 matt +** bye bye, fixed point +** +** Revision 1.25 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.24 2000/09/18 02:12:55 matt +** more optimizations +** +** Revision 1.23 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.22 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.21 2000/08/11 02:27:21 matt +** general cleanups, plus apu_setparams routine +** +** Revision 1.20 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.19 2000/07/27 02:49:50 matt +** eccentricity in sweeping hardware now emulated correctly +** +** Revision 1.18 2000/07/25 02:25:15 matt +** safer apu_destroy +** +** Revision 1.17 2000/07/23 15:10:54 matt +** hacks for win32 +** +** Revision 1.16 2000/07/23 00:48:15 neil +** Win32 SDL +** +** Revision 1.15 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.14 2000/07/11 02:39:26 matt +** added setcontext() routine +** +** Revision 1.13 2000/07/10 05:29:34 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.12 2000/07/04 04:54:48 matt +** minor changes that helped with MAME +** +** Revision 1.11 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.10 2000/06/26 05:00:37 matt +** cleanups +** +** Revision 1.9 2000/06/23 03:29:28 matt +** cleaned up external sound inteface +** +** Revision 1.8 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.7 2000/06/20 00:07:35 matt +** added convenience members to apu_t struct +** +** Revision 1.6 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.5 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_emu.c b/MCUME_teensy/teensynofrendo/nes_emu.c new file mode 100644 index 0000000..316b2b8 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_emu.c @@ -0,0 +1,286 @@ + +#include "emuapi.h" + +#include +#include +#include + +//Nes stuff wants to define this as well... +#undef false +#undef true +#undef bool + +#include "noftypes.h" + + +#include "nes.h" +#include "nofrendo.h" +#include "osd.h" +#include "nesinput.h" +#include "event.h" +#include "nofconfig.h" + +#define DEFAULT_WIDTH 256 +#define DEFAULT_HEIGHT NES_VISIBLE_HEIGHT + + +char configfilename[]="na"; +char romname[64]; + +/* This is os-specific part of main() */ +int osd_main(int argc, char *argv[]) +{ + config.filename = configfilename; + + return main_loop(romname, system_autodetect); +} + +/* File system interface */ +void osd_fullname(char *fullname, const char *shortname) +{ + strncpy(fullname, shortname, 64); +} + +/* This gives filenames for storage of saves */ +char *osd_newextension(char *string, char *ext) +{ + return string; +} + +/* This gives filenames for storage of PCX snapshots */ +int osd_makesnapname(char *filename, int len) +{ + return -1; +} + +#if HAS_SND +static void (*audio_callback)(void *buffer, int length) = NULL; + +void SND_Process( void * stream, int len ) +{ + if (audio_callback != NULL) { + audio_callback(stream,len); + } +} +#endif + +void osd_setsound(void (*playfunc)(void *buffer, int length)) +{ + //Indicates we should call playfunc() to get more data. +#if HAS_SND + audio_callback = playfunc; +#endif +} + +static void osd_stopsound(void) +{ +#if HAS_SND + audio_callback = NULL; +#endif +} + + +static int osd_init_sound(void) +{ +#if HAS_SND + audio_callback = NULL; +#endif + + return 0; +} + +void osd_getsoundinfo(sndinfo_t *info) +{ + info->sample_rate = 22050; + info->bps = 16; +} + + +void osd_getinput(void) +{ + const int ev[16]={ + event_joypad1_select,0,0,event_joypad1_start,event_joypad1_up,event_joypad1_right,event_joypad1_down,event_joypad1_left, + 0,0,0,0,event_soft_reset,event_joypad1_a,event_joypad1_b,event_hard_reset + }; + + int j=emu_ReadKeys(); + int hk = emu_ReadI2CKeyboard(); + int b=0xffff; + + if ( (j & MASK_KEY_USER3) ) // B + b &= ~0x4000; + if ( (j & MASK_KEY_USER2) || (hk == 2) ) // SELECT + b &= ~0x0001; + if ( (j & MASK_KEY_USER1) || (hk == 3) ) // START + b &= ~0x0008; + if (j & MASK_JOY2_UP) + b &= ~0x0010; + if (j & MASK_JOY2_LEFT) + b &= ~0x0020; + if (j & MASK_JOY2_DOWN) + b &= ~0x0040; + if (j & MASK_JOY2_RIGHT) + b &= ~0x0080; + if (j & MASK_JOY2_BTN) // A + b &= ~0x2000; + + + static int oldb=0xffff; + + int chg=b^oldb; + int x; + oldb=b; + event_t evh; + for (x=0; x<16; x++) { + if (chg&1) { + evh=event_get(ev[x]); + if (evh) evh((b&1)?INP_STATE_BREAK:INP_STATE_MAKE); + } + chg>>=1; + b>>=1; + } +} + + +void osd_getmouse(int *x, int *y, int *button) +{ +} + +/* this is at the bottom, to eliminate warnings */ +void osd_shutdown() +{ +} + +int osd_init() +{ + return 0; +} + + +/* +** Video +*/ +static int init(int width, int height) +{ + return 0; +} + +static void shutdown(void) +{ +} + +static int set_mode(int width, int height) +{ + return 0; +} + +static bitmap_t *myBitmap=NULL; +static void set_palette(rgb_t *pal) +{ + int i; + for (i = 0; i < PALETTE_SIZE; i++) + { + emu_SetPaletteEntry(pal[i].r, pal[i].g, pal[i].b,i); + } + +} + +/* clear all frames to a particular color */ +static void clear(uint8 color) +{ +} + +/* acquire the directbuffer for writing */ +static char fb[1]; //dummy +static bitmap_t *lock_write(void) +{ + if (myBitmap == NULL) + myBitmap = bmp_createhw((uint8*)fb, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH*2); + + return myBitmap; +} + +/* release the resource */ +static void free_write(int num_dirties, rect_t *dirty_rects) +{ + //bmp_destroy(&myBitmap); +} + + +static void custom_blit(bitmap_t *bmp, int num_dirties, rect_t *dirty_rects) { +} + +static viddriver_t sdlDriver = +{ + "Simple DirectMedia Layer", /* name */ + init, /* init */ + shutdown, /* shutdown */ + set_mode, /* set_mode */ + set_palette, /* set_palette */ + clear, /* clear */ + lock_write, /* lock_write */ + free_write, /* free_write */ + custom_blit, /* custom_blit */ + false /* invalidate flag */ +}; + +void osd_getvideoinfo(vidinfo_t *info) +{ + info->default_width = DEFAULT_WIDTH; + info->default_height = DEFAULT_HEIGHT; + info->driver = &sdlDriver; +} + +void osd_togglefullscreen(int code) +{ +} + +//Seemingly, this will be called only once. Should call func with a freq of frequency, +int osd_installtimer(int frequency, void *func, int funcsize, void *counter, int countersize) +{ + return 0; +} + +char* romdata=NULL; + +char *osd_getromdata() { + + return (char*)romdata; +} + + + +void nes_Init(void) +{ +#if HAS_SND + emu_sndInit(); +#endif + nofrendo_main(0, NULL); +} + +void nes_Step(void) +{ + nes_step(emu_FrameSkip()); + //delay(20); + emu_DrawVsync(); +} + +void nes_Start(char * filename) +{ + strcpy(romname,filename); + int romsize = emu_FileSize(filename); + romdata = (char*)emu_Malloc(romsize); + if (romdata) + { + if (emu_FileOpen(filename)) { + if (emu_FileRead((char*)romdata, romsize) != romsize ) { + romdata = NULL; + } + emu_FileClose(); + } else { + romdata = NULL; + } + } +} + + diff --git a/MCUME_teensy/teensynofrendo/nes_emu.h b/MCUME_teensy/teensynofrendo/nes_emu.h new file mode 100644 index 0000000..2ece48c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_emu.h @@ -0,0 +1,4 @@ +extern void nes_Init(void); +extern void nes_Step(void); +extern void nes_Start(char * filename); + diff --git a/MCUME_teensy/teensynofrendo/nes_mmc.c b/MCUME_teensy/teensynofrendo/nes_mmc.c new file mode 100755 index 0000000..b6bad5c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_mmc.c @@ -0,0 +1,353 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_mmc.c +** +** NES Memory Management Controller (mapper) emulation +** $Id: nes_mmc.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "nes6502.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "libsnss.h" +#include "log.h" +#include "mmclist.h" +#include "nes_rom.h" + +#define MMC_8KROM (mmc.cart->rom_banks * 2) +#define MMC_16KROM (mmc.cart->rom_banks) +#define MMC_32KROM (mmc.cart->rom_banks / 2) +#define MMC_8KVROM (mmc.cart->vrom_banks) +#define MMC_4KVROM (mmc.cart->vrom_banks * 2) +#define MMC_2KVROM (mmc.cart->vrom_banks * 4) +#define MMC_1KVROM (mmc.cart->vrom_banks * 8) + +#define MMC_LAST8KROM (MMC_8KROM - 1) +#define MMC_LAST16KROM (MMC_16KROM - 1) +#define MMC_LAST32KROM (MMC_32KROM - 1) +#define MMC_LAST8KVROM (MMC_8KVROM - 1) +#define MMC_LAST4KVROM (MMC_4KVROM - 1) +#define MMC_LAST2KVROM (MMC_2KVROM - 1) +#define MMC_LAST1KVROM (MMC_1KVROM - 1) + +static mmc_t mmc; + +rominfo_t *mmc_getinfo(void) +{ + return mmc.cart; +} + +void mmc_setcontext(mmc_t *src_mmc) +{ + ASSERT(src_mmc); + + mmc = *src_mmc; +} + +void mmc_getcontext(mmc_t *dest_mmc) +{ + *dest_mmc = mmc; +} + +/* VROM bankswitching */ +void mmc_bankvrom(int size, uint32 address, int bank) +{ + if (0 == mmc.cart->vrom_banks) + return; + + switch (size) + { + case 1: + if (bank == MMC_LASTBANK) + bank = MMC_LAST1KVROM; + ppu_setpage(1, address >> 10, &mmc.cart->vrom[(bank % MMC_1KVROM) << 10] - address); + break; + + case 2: + if (bank == MMC_LASTBANK) + bank = MMC_LAST2KVROM; + ppu_setpage(2, address >> 10, &mmc.cart->vrom[(bank % MMC_2KVROM) << 11] - address); + break; + + case 4: + if (bank == MMC_LASTBANK) + bank = MMC_LAST4KVROM; + ppu_setpage(4, address >> 10, &mmc.cart->vrom[(bank % MMC_4KVROM) << 12] - address); + break; + + case 8: + if (bank == MMC_LASTBANK) + bank = MMC_LAST8KVROM; + ppu_setpage(8, 0, &mmc.cart->vrom[(bank % MMC_8KVROM) << 13]); + break; + + default: + log_printf("invalid VROM bank size %d\n", size); + } +} + +/* ROM bankswitching */ +void mmc_bankrom(int size, uint32 address, int bank) +{ + nes6502_context mmc_cpu; + + nes6502_getcontext(&mmc_cpu); + + switch (size) + { + case 8: + if (bank == MMC_LASTBANK) + bank = MMC_LAST8KROM; + { + int page = address >> NES6502_BANKSHIFT; + mmc_cpu.mem_page[page] = &mmc.cart->rom[(bank % MMC_8KROM) << 13]; + mmc_cpu.mem_page[page + 1] = mmc_cpu.mem_page[page] + 0x1000; + } + + break; + + case 16: + if (bank == MMC_LASTBANK) + bank = MMC_LAST16KROM; + { + int page = address >> NES6502_BANKSHIFT; + mmc_cpu.mem_page[page] = &mmc.cart->rom[(bank % MMC_16KROM) << 14]; + mmc_cpu.mem_page[page + 1] = mmc_cpu.mem_page[page] + 0x1000; + mmc_cpu.mem_page[page + 2] = mmc_cpu.mem_page[page] + 0x2000; + mmc_cpu.mem_page[page + 3] = mmc_cpu.mem_page[page] + 0x3000; + } + break; + + case 32: + if (bank == MMC_LASTBANK) + bank = MMC_LAST32KROM; + + mmc_cpu.mem_page[8] = &mmc.cart->rom[(bank % MMC_32KROM) << 15]; + mmc_cpu.mem_page[9] = mmc_cpu.mem_page[8] + 0x1000; + mmc_cpu.mem_page[10] = mmc_cpu.mem_page[8] + 0x2000; + mmc_cpu.mem_page[11] = mmc_cpu.mem_page[8] + 0x3000; + mmc_cpu.mem_page[12] = mmc_cpu.mem_page[8] + 0x4000; + mmc_cpu.mem_page[13] = mmc_cpu.mem_page[8] + 0x5000; + mmc_cpu.mem_page[14] = mmc_cpu.mem_page[8] + 0x6000; + mmc_cpu.mem_page[15] = mmc_cpu.mem_page[8] + 0x7000; + break; + + default: + log_printf("invalid ROM bank size %d\n", size); + break; + } + + nes6502_setcontext(&mmc_cpu); +} + +/* Check to see if this mapper is supported */ +bool mmc_peek(int map_num) +{ + mapintf_t **map_ptr = mappers; + + while (NULL != *map_ptr) + { + if ((*map_ptr)->number == map_num) + return true; + map_ptr++; + } + + return false; +} + +static void mmc_setpages(void) +{ + log_printf("setting up mapper %d\n", mmc.intf->number); + + /* Switch ROM into CPU space, set VROM/VRAM (done for ALL ROMs) */ + mmc_bankrom(16, 0x8000, 0); + mmc_bankrom(16, 0xC000, MMC_LASTBANK); + mmc_bankvrom(8, 0x0000, 0); + + if (mmc.cart->flags & ROM_FLAG_FOURSCREEN) + { + ppu_mirror(0, 1, 2, 3); + } + else + { + if (MIRROR_VERT == mmc.cart->mirror) + ppu_mirror(0, 1, 0, 1); + else + ppu_mirror(0, 0, 1, 1); + } + + /* if we have no VROM, switch in VRAM */ + /* TODO: fix this hack implementation */ + if (0 == mmc.cart->vrom_banks) + { + ASSERT(mmc.cart->vram); + + ppu_setpage(8, 0, mmc.cart->vram); + ppu_mirrorhipages(); + } +} + +/* Mapper initialization routine */ +void mmc_reset(void) +{ + mmc_setpages(); + + ppu_setlatchfunc(NULL); + ppu_setvromswitch(NULL); + + if (mmc.intf->init) + mmc.intf->init(); + + log_printf("reset memory mapper\n"); +} + + +void mmc_destroy(mmc_t **nes_mmc) +{ + if (*nes_mmc) + free(*nes_mmc); +} + +mmc_t *mmc_create(rominfo_t *rominfo) +{ + mmc_t *temp; + mapintf_t **map_ptr; + + for (map_ptr = mappers; (*map_ptr)->number != rominfo->mapper_number; map_ptr++) + { + if (NULL == *map_ptr) + return NULL; /* Should *never* happen */ + } + + temp = malloc(sizeof(mmc_t)); + if (NULL == temp) + return NULL; + + memset(temp, 0, sizeof(mmc_t)); + + temp->intf = *map_ptr; + temp->cart = rominfo; + + mmc_setcontext(temp); + + log_printf("created memory mapper: %s\n", (*map_ptr)->name); + + return temp; +} + + +/* +** $Log: nes_mmc.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.4 2000/11/21 13:28:40 matt +** take care to zero allocated mem +** +** Revision 1.3 2000/10/27 12:55:58 matt +** nes6502 now uses 4kB banks across the boards +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.28 2000/10/22 19:17:24 matt +** mapper cleanups galore +** +** Revision 1.27 2000/10/22 15:02:32 matt +** simplified mirroring +** +** Revision 1.26 2000/10/21 19:38:56 matt +** that two year old crap code *was* flushed +** +** Revision 1.25 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.24 2000/10/17 03:22:57 matt +** cleaning up rom module +** +** Revision 1.23 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.22 2000/08/16 02:51:55 matt +** random cleanups +** +** Revision 1.21 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.20 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.19 2000/07/23 15:11:45 matt +** removed unused variables +** +** Revision 1.18 2000/07/15 23:50:03 matt +** migrated state get/set from nes_mmc.c to state.c +** +** Revision 1.17 2000/07/11 03:15:09 melanson +** Added support for mappers 16, 34, and 231 +** +** Revision 1.16 2000/07/10 05:27:41 matt +** cleaned up mapper-specific callbacks +** +** Revision 1.15 2000/07/10 03:02:49 matt +** minor change on loading state +** +** Revision 1.14 2000/07/06 17:38:49 matt +** replaced missing string.h include +** +** Revision 1.13 2000/07/06 02:47:11 matt +** mapper addition madness +** +** Revision 1.12 2000/07/05 05:04:15 matt +** added more mappers +** +** Revision 1.11 2000/07/04 23:12:58 matt +** brand spankin' new mapper interface implemented +** +** Revision 1.10 2000/07/04 04:56:36 matt +** modifications for new SNSS +** +** Revision 1.9 2000/06/29 14:17:18 matt +** uses snsslib now +** +** Revision 1.8 2000/06/29 03:09:24 matt +** modified to support new snss code +** +** Revision 1.7 2000/06/26 04:57:54 matt +** bugfix - irqs/mmcstate not cleared on reset +** +** Revision 1.6 2000/06/23 11:01:10 matt +** updated for new external sound interface +** +** Revision 1.5 2000/06/20 04:04:57 matt +** hacked to use new external soundchip struct +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_mmc.h b/MCUME_teensy/teensynofrendo/nes_mmc.h new file mode 100755 index 0000000..97205d3 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_mmc.h @@ -0,0 +1,146 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_mmc.h +** +** NES Memory Management Controller (mapper) defines / prototypes +** $Id: nes_mmc.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_MMC_H_ +#define _NES_MMC_H_ + +#include "libsnss.h" +#include "nes_apu.h" + +#define MMC_LASTBANK -1 + +typedef struct +{ + uint32 min_range, max_range; + uint8 (*read_func)(uint32 address); +} map_memread; + +typedef struct +{ + uint32 min_range, max_range; + void (*write_func)(uint32 address, uint8 value); +} map_memwrite; + + +typedef struct mapintf_s +{ + int number; + char *name; + void (*init)(void); + void (*vblank)(void); + void (*hblank)(int vblank); + void (*get_state)(SnssMapperBlock *state); + void (*set_state)(SnssMapperBlock *state); + map_memread *mem_read; + map_memwrite *mem_write; + apuext_t *sound_ext; +} mapintf_t; + + +#include "nes_rom.h" +typedef struct mmc_s +{ + mapintf_t *intf; + rominfo_t *cart; /* link it back to the cart */ +} mmc_t; + +extern rominfo_t *mmc_getinfo(void); + +extern void mmc_bankvrom(int size, uint32 address, int bank); +extern void mmc_bankrom(int size, uint32 address, int bank); + +/* Prototypes */ +extern mmc_t *mmc_create(rominfo_t *rominfo); +extern void mmc_destroy(mmc_t **nes_mmc); + +extern void mmc_getcontext(mmc_t *dest_mmc); +extern void mmc_setcontext(mmc_t *src_mmc); + +extern bool mmc_peek(int map_num); + +extern void mmc_reset(void); + +#endif /* _NES_MMC_H_ */ + +/* +** $Log: nes_mmc.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.18 2000/10/22 19:17:24 matt +** mapper cleanups galore +** +** Revision 1.17 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.16 2000/10/17 03:22:58 matt +** cleaning up rom module +** +** Revision 1.15 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.14 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.13 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.12 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.11 2000/07/15 23:50:03 matt +** migrated state get/set from nes_mmc.c to state.c +** +** Revision 1.10 2000/07/11 02:38:01 matt +** added setcontext() routine +** +** Revision 1.9 2000/07/10 05:27:41 matt +** cleaned up mapper-specific callbacks +** +** Revision 1.8 2000/07/04 23:12:58 matt +** brand spankin' new mapper interface implemented +** +** Revision 1.7 2000/07/04 04:56:36 matt +** modifications for new SNSS +** +** Revision 1.6 2000/06/29 14:17:18 matt +** uses snsslib now +** +** Revision 1.5 2000/06/29 03:09:24 matt +** modified to support new snss code +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_pal.c b/MCUME_teensy/teensynofrendo/nes_pal.c new file mode 100644 index 0000000..9d44570 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_pal.c @@ -0,0 +1,185 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_pal.c +** +** NES RGB palette +** $Id: nes_pal.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "bitmap.h" +#include "nes_pal.h" + +#ifndef PI +#define PI 3.1415926535897932384626433832795 +#endif + +/* my NES palette, converted to RGB */ +const rgb_t shady_palette[] = +{ + {0x80,0x80,0x80}, {0x00,0x00,0xBB}, {0x37,0x00,0xBF}, {0x84,0x00,0xA6}, + {0xBB,0x00,0x6A}, {0xB7,0x00,0x1E}, {0xB3,0x00,0x00}, {0x91,0x26,0x00}, + {0x7B,0x2B,0x00}, {0x00,0x3E,0x00}, {0x00,0x48,0x0D}, {0x00,0x3C,0x22}, + {0x00,0x2F,0x66}, {0x00,0x00,0x00}, {0x05,0x05,0x05}, {0x05,0x05,0x05}, + + {0xC8,0xC8,0xC8}, {0x00,0x59,0xFF}, {0x44,0x3C,0xFF}, {0xB7,0x33,0xCC}, + {0xFF,0x33,0xAA}, {0xFF,0x37,0x5E}, {0xFF,0x37,0x1A}, {0xD5,0x4B,0x00}, + {0xC4,0x62,0x00}, {0x3C,0x7B,0x00}, {0x1E,0x84,0x15}, {0x00,0x95,0x66}, + {0x00,0x84,0xC4}, {0x11,0x11,0x11}, {0x09,0x09,0x09}, {0x09,0x09,0x09}, + + {0xFF,0xFF,0xFF}, {0x00,0x95,0xFF}, {0x6F,0x84,0xFF}, {0xD5,0x6F,0xFF}, + {0xFF,0x77,0xCC}, {0xFF,0x6F,0x99}, {0xFF,0x7B,0x59}, {0xFF,0x91,0x5F}, + {0xFF,0xA2,0x33}, {0xA6,0xBF,0x00}, {0x51,0xD9,0x6A}, {0x4D,0xD5,0xAE}, + {0x00,0xD9,0xFF}, {0x66,0x66,0x66}, {0x0D,0x0D,0x0D}, {0x0D,0x0D,0x0D}, + + {0xFF,0xFF,0xFF}, {0x84,0xBF,0xFF}, {0xBB,0xBB,0xFF}, {0xD0,0xBB,0xFF}, + {0xFF,0xBF,0xEA}, {0xFF,0xBF,0xCC}, {0xFF,0xC4,0xB7}, {0xFF,0xCC,0xAE}, + {0xFF,0xD9,0xA2}, {0xCC,0xE1,0x99}, {0xAE,0xEE,0xB7}, {0xAA,0xF7,0xEE}, + {0xB3,0xEE,0xFF}, {0xDD,0xDD,0xDD}, {0x11,0x11,0x11}, {0x11,0x11,0x11} +}; + +/* dynamic palette building routines, +** care of Kevin Horton (khorton@iquest.net) +*/ + +/* our global palette */ +rgb_t nes_palette[64]; + + +static float hue = 334.0f; +static float tint = 0.4f; + + +static const float brightness[4][4] = +{ + { 0.50f, 0.75f, 1.00f, 1.00f }, + { 0.29f, 0.45f, 0.73f, 0.90f }, + { 0.00f, 0.24f, 0.47f, 0.77f }, + { 0.02f, 0.04f, 0.05f, 0.07f } +}; + +static const int col_angles[16] = +{ + 0, 240, 210, 180, 150, 120, 90, 60, 30, 0, 330, 300, 270, 0, 0, 0 +}; + +void pal_generate(void) +{ + int x, z; + float s, y, theta; + int r, g, b; + + for (x = 0; x < 4; x++) + { + for (z = 0; z < 16; z++) + { + switch (z) + { + case 0: + /* is color $x0? If so, get luma */ + s = 0; + y = brightness[0][x]; + break; + + case 13: + /* is color $xD? If so, get luma */ + s = 0; + y = brightness[2][x]; + break; + + case 14: + case 15: + /* is color $xE/F? If so, set to black */ + s = 0; + y = brightness[3][x]; + + break; + + default: + s = tint; /* grab tint */ + y = brightness[1][x]; /* grab default luminance */ + break; + } + + theta = (float) (PI * ((col_angles[z] + hue) / 180.0)); + + r = (int) (256.0 * (y + s * sin(theta))); + g = (int) (256.0 * (y - ((27 / 53.0) * s * sin(theta)) + ((10 / 53.0) * s * cos(theta)))); + b = (int) (256.0 * (y - (s * cos(theta)))); + + if (r > 255) + r = 255; + else if (r < 0) + r = 0; + + if (g > 255) + g = 255; + else if (g < 0) + g = 0; + + if (b > 255) + b = 255; + else if (b < 0) + b = 0; + + nes_palette[(x << 4) + z].r = r; + nes_palette[(x << 4) + z].g = g; + nes_palette[(x << 4) + z].b = b; + } + } +} + +/* +** $Log: nes_pal.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.3 2000/11/06 02:17:18 matt +** no more double->float warnings +** +** Revision 1.2 2000/11/05 16:35:41 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.9 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.8 2000/07/10 13:49:31 matt +** renamed my palette and extern'ed it +** +** Revision 1.7 2000/06/26 04:59:13 matt +** selectable tint/hue hack (just for the time being) +** +** Revision 1.6 2000/06/21 21:48:19 matt +** changed range multiplier from 255.0 to 256.0 +** +** Revision 1.5 2000/06/20 20:42:47 matt +** accuracy changes +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_pal.h b/MCUME_teensy/teensynofrendo/nes_pal.h new file mode 100644 index 0000000..eb4828e --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_pal.h @@ -0,0 +1,65 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_pal.h +** +** NES palette definition +** $Id: nes_pal.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $ +*/ + +#ifndef _NESPAL_H_ +#define _NESPAL_H_ + +extern rgb_t nes_palette[]; +extern const rgb_t shady_palette[]; + +extern void pal_generate(void); + +/* TODO: these are temporary hacks */ +extern void pal_dechue(void); +extern void pal_inchue(void); +extern void pal_dectint(void); +extern void pal_inctint(void); + +#endif /* _NESPAL_H_ */ + +/* +** $Log: nes_pal.h,v $ +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.8 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.7 2000/07/21 04:20:35 matt +** added some nasty externs +** +** Revision 1.6 2000/07/10 13:49:32 matt +** renamed my palette and extern'ed it +** +** Revision 1.5 2000/07/05 17:14:34 neil +** Linux: Act Two, Scene One +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_ppu.c b/MCUME_teensy/teensynofrendo/nes_ppu.c new file mode 100644 index 0000000..ac884ca --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_ppu.c @@ -0,0 +1,1340 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_ppu.c +** +** NES PPU emulation +** $Id: nes_ppu.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include "noftypes.h" +#include "nes_ppu.h" +#include "nes.h" +#include "nes6502.h" +#include "log.h" +#include "nes_mmc.h" + +#include "bitmap.h" +#include "vid_drv.h" +#include "nes_pal.h" +#include "nesinput.h" + + +/* PPU access */ +#define PPU_MEM(x) ppu.page[(x) >> 10][(x)] + +/* Background (color 0) and solid sprite pixel flags */ +#define BG_TRANS 0x80 +#define SP_PIXEL 0x40 +#define BG_CLEAR(V) ((V) & BG_TRANS) +#define BG_SOLID(V) (0 == BG_CLEAR(V)) +#define SP_CLEAR(V) (0 == ((V) & SP_PIXEL)) + +/* Full BG color */ +#define FULLBG (ppu.palette[0] | BG_TRANS) + +/* the NES PPU */ +static ppu_t ppu; + + +void ppu_displaysprites(bool display) +{ + ppu.drawsprites = display; +} + +void ppu_setcontext(ppu_t *src_ppu) +{ + int nametab[4]; + ASSERT(src_ppu); + ppu = *src_ppu; + + /* we can't just copy contexts here, because more than likely, + ** the top 8 pages of the ppu are pointing to internal PPU memory, + ** which means we need to recalculate the page pointers. + ** TODO: we can either get rid of the page pointing in the code, + ** or add more robust checks to make sure that pages 8-15 are + ** definitely pointing to internal PPU RAM, not just something + ** that some crazy mapper paged in. + */ + nametab[0] = (src_ppu->page[8] - src_ppu->nametab + 0x2000) >> 10; + nametab[1] = (src_ppu->page[9] - src_ppu->nametab + 0x2400) >> 10; + nametab[2] = (src_ppu->page[10] - src_ppu->nametab + 0x2800) >> 10; + nametab[3] = (src_ppu->page[11] - src_ppu->nametab + 0x2C00) >> 10; + + ppu.page[8] = ppu.nametab + (nametab[0] << 10) - 0x2000; + ppu.page[9] = ppu.nametab + (nametab[1] << 10) - 0x2400; + ppu.page[10] = ppu.nametab + (nametab[2] << 10) - 0x2800; + ppu.page[11] = ppu.nametab + (nametab[3] << 10) - 0x2C00; + ppu.page[12] = ppu.page[8] - 0x1000; + ppu.page[13] = ppu.page[9] - 0x1000; + ppu.page[14] = ppu.page[10] - 0x1000; + ppu.page[15] = ppu.page[11] - 0x1000; +} + +void ppu_getcontext(ppu_t *dest_ppu) +{ + int nametab[4]; + + ASSERT(dest_ppu); + *dest_ppu = ppu; + + /* we can't just copy contexts here, because more than likely, + ** the top 8 pages of the ppu are pointing to internal PPU memory, + ** which means we need to recalculate the page pointers. + ** TODO: we can either get rid of the page pointing in the code, + ** or add more robust checks to make sure that pages 8-15 are + ** definitely pointing to internal PPU RAM, not just something + ** that some crazy mapper paged in. + */ + nametab[0] = (ppu.page[8] - ppu.nametab + 0x2000) >> 10; + nametab[1] = (ppu.page[9] - ppu.nametab + 0x2400) >> 10; + nametab[2] = (ppu.page[10] - ppu.nametab + 0x2800) >> 10; + nametab[3] = (ppu.page[11] - ppu.nametab + 0x2C00) >> 10; + + dest_ppu->page[8] = dest_ppu->nametab + (nametab[0] << 10) - 0x2000; + dest_ppu->page[9] = dest_ppu->nametab + (nametab[1] << 10) - 0x2400; + dest_ppu->page[10] = dest_ppu->nametab + (nametab[2] << 10) - 0x2800; + dest_ppu->page[11] = dest_ppu->nametab + (nametab[3] << 10) - 0x2C00; + dest_ppu->page[12] = dest_ppu->page[8] - 0x1000; + dest_ppu->page[13] = dest_ppu->page[9] - 0x1000; + dest_ppu->page[14] = dest_ppu->page[10] - 0x1000; + dest_ppu->page[15] = dest_ppu->page[11] - 0x1000; +} + +ppu_t *ppu_create(void) +{ + static bool pal_generated = false; + ppu_t *temp; + + temp = malloc(sizeof(ppu_t)); + if (NULL == temp) + return NULL; + + memset(temp, 0, sizeof(ppu_t)); + + temp->latchfunc = NULL; + temp->vromswitch = NULL; + temp->vram_present = false; + temp->drawsprites = true; + + /* TODO: probably a better way to do this... */ + if (false == pal_generated) + { + pal_generate(); + pal_generated = true; + } + + ppu_setdefaultpal(temp); + + return temp; +} + +void ppu_destroy(ppu_t **src_ppu) +{ + if (*src_ppu) + { + free(*src_ppu); + *src_ppu = NULL; + } +} + +void ppu_setpage(int size, int page_num, uint8 *location) +{ + /* deliberately fall through */ + switch (size) + { + case 8: + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + case 4: + ppu.page[page_num++] = location; + ppu.page[page_num++] = location; + case 2: + ppu.page[page_num++] = location; + case 1: + ppu.page[page_num++] = location; + break; + } +} + +/* make sure $3000-$3F00 mirrors $2000-$2F00 */ +void ppu_mirrorhipages(void) +{ + ppu.page[12] = ppu.page[8] - 0x1000; + ppu.page[13] = ppu.page[9] - 0x1000; + ppu.page[14] = ppu.page[10] - 0x1000; + ppu.page[15] = ppu.page[11] - 0x1000; +} + +void ppu_mirror(int nt1, int nt2, int nt3, int nt4) +{ + ppu.page[8] = ppu.nametab + (nt1 << 10) - 0x2000; + ppu.page[9] = ppu.nametab + (nt2 << 10) - 0x2400; + ppu.page[10] = ppu.nametab + (nt3 << 10) - 0x2800; + ppu.page[11] = ppu.nametab + (nt4 << 10) - 0x2C00; + ppu.page[12] = ppu.page[8] - 0x1000; + ppu.page[13] = ppu.page[9] - 0x1000; + ppu.page[14] = ppu.page[10] - 0x1000; + ppu.page[15] = ppu.page[11] - 0x1000; +} + +/* bleh, for snss */ +uint8 *ppu_getpage(int page) +{ + return ppu.page[page]; +} + +static void mem_trash(uint8 *buffer, int length) +{ + int i; + + for (i = 0; i < length; i++) + buffer[i] = (uint8) rand(); +} + +/* reset state of ppu */ +void ppu_reset(int reset_type) +{ + if (HARD_RESET == reset_type) + mem_trash(ppu.oam, 256); + + ppu.ctrl0 = 0; + ppu.ctrl1 = PPU_CTRL1F_OBJON | PPU_CTRL1F_BGON; + ppu.stat = 0; + ppu.flipflop = 0; + ppu.vaddr = ppu.vaddr_latch = 0x2000; + ppu.oam_addr = 0; + ppu.tile_xofs = 0; + + ppu.latch = 0; + ppu.vram_accessible = true; +} + +/* we render a scanline of graphics first so we know exactly +** where the sprite 0 strike is going to occur (in terms of +** cpu cycles), using the relation that 3 pixels == 1 cpu cycle +*/ +static void ppu_setstrike(int x_loc) +{ + if (false == ppu.strikeflag) + { + ppu.strikeflag = true; + + /* 3 pixels per cpu cycle */ + ppu.strike_cycle = nes6502_getcycles(false) + (x_loc / 3); + } +} + +static void ppu_oamdma(uint8 value) +{ + uint32 cpu_address; + uint8 oam_loc; + + cpu_address = (uint32) (value << 8); + + /* Sprite DMA starts at the current SPRRAM address */ + oam_loc = ppu.oam_addr; + do + { + ppu.oam[oam_loc++] = nes6502_getbyte(cpu_address++); + } + while (oam_loc != ppu.oam_addr); + + /* TODO: enough with houdini */ + cpu_address -= 256; + /* Odd address in $2003 */ + if ((ppu.oam_addr >> 2) & 1) + { + for (oam_loc = 4; oam_loc < 8; oam_loc++) + ppu.oam[oam_loc] = nes6502_getbyte(cpu_address++); + cpu_address += 248; + for (oam_loc = 0; oam_loc < 4; oam_loc++) + ppu.oam[oam_loc] = nes6502_getbyte(cpu_address++); + } + /* Even address in $2003 */ + else + { + for (oam_loc = 0; oam_loc < 8; oam_loc++) + ppu.oam[oam_loc] = nes6502_getbyte(cpu_address++); + } + + /* make the CPU spin for DMA cycles */ + nes6502_burn(513); + nes6502_release(); +} + +/* TODO: this isn't the PPU! */ +void ppu_writehigh(uint32 address, uint8 value) +{ + switch (address) + { + case PPU_OAMDMA: + ppu_oamdma(value); + break; + + case PPU_JOY0: + /* VS system VROM switching - bleh!*/ + if (ppu.vromswitch) + ppu.vromswitch(value); + + /* see if we need to strobe them joypads */ + value &= 1; + + if (0 == value && ppu.strobe) + input_strobe(); + + ppu.strobe = value; + break; + + case PPU_JOY1: /* frame IRQ control */ + nes_setfiq(value); + break; + + default: + break; + } +} + +/* TODO: this isn't the PPU! */ +uint8 ppu_readhigh(uint32 address) +{ + uint8 value; + + switch (address) + { + case PPU_JOY0: + value = input_get(INP_JOYPAD0); + break; + + case PPU_JOY1: + /* TODO: better input handling */ + value = input_get(INP_ZAPPER | INP_JOYPAD1 + /*| INP_ARKANOID*/ + /*| INP_POWERPAD*/); + break; + + default: + value = 0xFF; + break; + } + + return value; +} + +/* Read from $2000-$2007 */ +uint8 ppu_read(uint32 address) +{ + uint8 value; + + /* handle mirrored reads up to $3FFF */ + switch (address & 0x2007) + { + case PPU_STAT: + value = (ppu.stat & 0xE0) | (ppu.latch & 0x1F); + + if (ppu.strikeflag) + { + if (nes6502_getcycles(false) >= ppu.strike_cycle) + value |= PPU_STATF_STRIKE; + } + + /* clear both vblank flag and vram address flipflop */ + ppu.stat &= ~PPU_STATF_VBLANK; + ppu.flipflop = 0; + break; + + case PPU_VDATA: + /* buffered VRAM reads */ + value = ppu.latch = ppu.vdata_latch; + + /* VRAM only accessible during VBL */ + if ((ppu.bg_on || ppu.obj_on) && !ppu.vram_accessible) + { + ppu.vdata_latch = 0xFF; + log_printf("VRAM read at $%04X, scanline %d\n", + ppu.vaddr, nes_getcontextptr()->scanline); + } + else + { + uint32 addr = ppu.vaddr; + if (addr >= 0x3000) + addr -= 0x1000; + ppu.vdata_latch = PPU_MEM(addr); + } + + ppu.vaddr += ppu.vaddr_inc; + ppu.vaddr &= 0x3FFF; + break; + + case PPU_OAMDATA: + case PPU_CTRL0: + case PPU_CTRL1: + case PPU_OAMADDR: + case PPU_SCROLL: + case PPU_VADDR: + default: + value = ppu.latch; + break; + } + + return value; +} + +/* Write to $2000-$2007 */ +void ppu_write(uint32 address, uint8 value) +{ + /* write goes into ppu latch... */ + ppu.latch = value; + + switch (address & 0x2007) + { + case PPU_CTRL0: + ppu.ctrl0 = value; + + ppu.obj_height = (value & PPU_CTRL0F_OBJ16) ? 16 : 8; + ppu.bg_base = (value & PPU_CTRL0F_BGADDR) ? 0x1000 : 0; + ppu.obj_base = (value & PPU_CTRL0F_OBJADDR) ? 0x1000 : 0; + ppu.vaddr_inc = (value & PPU_CTRL0F_ADDRINC) ? 32 : 1; + ppu.tile_nametab = value & PPU_CTRL0F_NAMETAB; + + /* Mask out bits 10 & 11 in the ppu latch */ + ppu.vaddr_latch &= ~0x0C00; + ppu.vaddr_latch |= ((value & 3) << 10); + break; + + case PPU_CTRL1: + ppu.ctrl1 = value; + + ppu.obj_on = (value & PPU_CTRL1F_OBJON) ? true : false; + ppu.bg_on = (value & PPU_CTRL1F_BGON) ? true : false; + ppu.obj_mask = (value & PPU_CTRL1F_OBJMASK) ? false : true; + ppu.bg_mask = (value & PPU_CTRL1F_BGMASK) ? false : true; + break; + + case PPU_OAMADDR: + ppu.oam_addr = value; + break; + + case PPU_OAMDATA: + ppu.oam[ppu.oam_addr++] = value; + break; + + case PPU_SCROLL: + if (0 == ppu.flipflop) + { + /* Mask out bits 4 - 0 in the ppu latch */ + ppu.vaddr_latch &= ~0x001F; + ppu.vaddr_latch |= (value >> 3); /* Tile number */ + ppu.tile_xofs = (value & 7); /* Tile offset (0-7 pix) */ + } + else + { + /* Mask out bits 14-12 and 9-5 in the ppu latch */ + ppu.vaddr_latch &= ~0x73E0; + ppu.vaddr_latch |= ((value & 0xF8) << 2); /* Tile number */ + ppu.vaddr_latch |= ((value & 7) << 12); /* Tile offset (0-7 pix) */ + } + + ppu.flipflop ^= 1; + + break; + + case PPU_VADDR: + if (0 == ppu.flipflop) + { + /* Mask out bits 15-8 in ppu latch */ + ppu.vaddr_latch &= ~0xFF00; + ppu.vaddr_latch |= ((value & 0x3F) << 8); + } + else + { + /* Mask out bits 7-0 in ppu latch */ + ppu.vaddr_latch &= ~0x00FF; + ppu.vaddr_latch |= value; + ppu.vaddr = ppu.vaddr_latch; + } + + ppu.flipflop ^= 1; + + break; + + case PPU_VDATA: + if (ppu.vaddr < 0x3F00) + { + /* VRAM only accessible during scanlines 241-260 */ + if ((ppu.bg_on || ppu.obj_on) && !ppu.vram_accessible) + { + log_printf("VRAM write to $%04X, scanline %d\n", + ppu.vaddr, nes_getcontextptr()->scanline); + PPU_MEM(ppu.vaddr) = 0xFF; /* corrupt */ + } + else + { + uint32 addr = ppu.vaddr; + + if (false == ppu.vram_present && addr >= 0x3000) + ppu.vaddr -= 0x1000; + + PPU_MEM(addr) = value; + } + } + else + { + if (0 == (ppu.vaddr & 0x0F)) + { + int i; + + for (i = 0; i < 8; i ++) + ppu.palette[i << 2] = (value & 0x3F) | BG_TRANS; + } + else if (ppu.vaddr & 3) + { + ppu.palette[ppu.vaddr & 0x1F] = value & 0x3F; + } + } + + ppu.vaddr += ppu.vaddr_inc; + ppu.vaddr &= 0x3FFF; + break; + + default: + break; + } +} + +/* Builds a 256 color 8-bit palette based on a 64-color NES palette +** Note that we set it up 3 times so that we flip bits on the primary +** NES buffer for priorities +*/ +static void ppu_buildpalette(ppu_t *src_ppu, rgb_t *pal) +{ + int i; + + /* Set it up 3 times, for sprite priority/BG transparency trickery */ + for (i = 0; i < 64; i++) + { + src_ppu->curpal[i].r = src_ppu->curpal[i + 64].r + = src_ppu->curpal[i + 128].r = pal[i].r; + src_ppu->curpal[i].g = src_ppu->curpal[i + 64].g + = src_ppu->curpal[i + 128].g = pal[i].g; + src_ppu->curpal[i].b = src_ppu->curpal[i + 64].b + = src_ppu->curpal[i + 128].b = pal[i].b; + } +} + +/* build the emulator specific palette based on a 64-entry palette +** input palette can be either nes_palette or a 64-entry RGB palette +** read in from disk (i.e. for VS games) +*/ +void ppu_setpal(ppu_t *src_ppu, rgb_t *pal) +{ + ppu_buildpalette(src_ppu, pal); + vid_setpalette(src_ppu->curpal); +} + +void ppu_setdefaultpal(ppu_t *src_ppu) +{ + ppu_setpal(src_ppu, nes_palette); +} + +void ppu_setlatchfunc(ppulatchfunc_t func) +{ + ppu.latchfunc = func; +} + +void ppu_setvromswitch(ppuvromswitch_t func) +{ + ppu.vromswitch = func; +} + +/* rendering routines */ +INLINE void draw_bgtile(uint8 *surface, uint8 pat1, uint8 pat2, + const uint8 *colors) +{ + uint32 pattern = ((pat2 & 0xAA) << 8) | ((pat2 & 0x55) << 1) + | ((pat1 & 0xAA) << 7) | (pat1 & 0x55); + + *surface++ = colors[(pattern >> 14) & 3]; + *surface++ = colors[(pattern >> 6) & 3]; + *surface++ = colors[(pattern >> 12) & 3]; + *surface++ = colors[(pattern >> 4) & 3]; + *surface++ = colors[(pattern >> 10) & 3]; + *surface++ = colors[(pattern >> 2) & 3]; + *surface++ = colors[(pattern >> 8) & 3]; + *surface = colors[pattern & 3]; +} + +INLINE int draw_oamtile(uint8 *surface, uint8 attrib, uint8 pat1, + uint8 pat2, const uint8 *col_tbl, bool check_strike) +{ + int strike_pixel = -1; + uint32 color = ((pat2 & 0xAA) << 8) | ((pat2 & 0x55) << 1) + | ((pat1 & 0xAA) << 7) | (pat1 & 0x55); + + /* sprite is not 100% transparent */ + if (color) + { + uint8 colors[8]; + + /* swap pixels around if our tile is flipped */ + if (0 == (attrib & OAMF_HFLIP)) + { + colors[0] = (color >> 14) & 3; + colors[1] = (color >> 6) & 3; + colors[2] = (color >> 12) & 3; + colors[3] = (color >> 4) & 3; + colors[4] = (color >> 10) & 3; + colors[5] = (color >> 2) & 3; + colors[6] = (color >> 8) & 3; + colors[7] = color & 3; + } + else + { + colors[7] = (color >> 14) & 3; + colors[6] = (color >> 6) & 3; + colors[5] = (color >> 12) & 3; + colors[4] = (color >> 4) & 3; + colors[3] = (color >> 10) & 3; + colors[2] = (color >> 2) & 3; + colors[1] = (color >> 8) & 3; + colors[0] = color & 3; + } + + /* check for solid sprite pixel overlapping solid bg pixel */ + if (check_strike) + { + if (colors[0] && BG_SOLID(surface[0])) + strike_pixel = 0; + else if (colors[1] && BG_SOLID(surface[1])) + strike_pixel = 1; + else if (colors[2] && BG_SOLID(surface[2])) + strike_pixel = 2; + else if (colors[3] && BG_SOLID(surface[3])) + strike_pixel = 3; + else if (colors[4] && BG_SOLID(surface[4])) + strike_pixel = 4; + else if (colors[5] && BG_SOLID(surface[5])) + strike_pixel = 5; + else if (colors[6] && BG_SOLID(surface[6])) + strike_pixel = 6; + else if (colors[7] && BG_SOLID(surface[7])) + strike_pixel = 7; + } + + /* draw the character */ + if (attrib & OAMF_BEHIND) + { + if (colors[0]) + surface[0] = SP_PIXEL | (BG_CLEAR(surface[0]) ? col_tbl[colors[0]] : surface[0]); + if (colors[1]) + surface[1] = SP_PIXEL | (BG_CLEAR(surface[1]) ? col_tbl[colors[1]] : surface[1]); + if (colors[2]) + surface[2] = SP_PIXEL | (BG_CLEAR(surface[2]) ? col_tbl[colors[2]] : surface[2]); + if (colors[3]) + surface[3] = SP_PIXEL | (BG_CLEAR(surface[3]) ? col_tbl[colors[3]] : surface[3]); + if (colors[4]) + surface[4] = SP_PIXEL | (BG_CLEAR(surface[4]) ? col_tbl[colors[4]] : surface[4]); + if (colors[5]) + surface[5] = SP_PIXEL | (BG_CLEAR(surface[5]) ? col_tbl[colors[5]] : surface[5]); + if (colors[6]) + surface[6] = SP_PIXEL | (BG_CLEAR(surface[6]) ? col_tbl[colors[6]] : surface[6]); + if (colors[7]) + surface[7] = SP_PIXEL | (BG_CLEAR(surface[7]) ? col_tbl[colors[7]] : surface[7]); + } + else + { + if (colors[0] && SP_CLEAR(surface[0])) + surface[0] = SP_PIXEL | col_tbl[colors[0]]; + if (colors[1] && SP_CLEAR(surface[1])) + surface[1] = SP_PIXEL | col_tbl[colors[1]]; + if (colors[2] && SP_CLEAR(surface[2])) + surface[2] = SP_PIXEL | col_tbl[colors[2]]; + if (colors[3] && SP_CLEAR(surface[3])) + surface[3] = SP_PIXEL | col_tbl[colors[3]]; + if (colors[4] && SP_CLEAR(surface[4])) + surface[4] = SP_PIXEL | col_tbl[colors[4]]; + if (colors[5] && SP_CLEAR(surface[5])) + surface[5] = SP_PIXEL | col_tbl[colors[5]]; + if (colors[6] && SP_CLEAR(surface[6])) + surface[6] = SP_PIXEL | col_tbl[colors[6]]; + if (colors[7] && SP_CLEAR(surface[7])) + surface[7] = SP_PIXEL | col_tbl[colors[7]]; + } + } + + return strike_pixel; +} + +static void ppu_renderbg(uint8 *vidbuf) +{ + uint8 *bmp_ptr, *data_ptr, *tile_ptr, *attrib_ptr; + uint32 refresh_vaddr, bg_offset, attrib_base; + int tile_count; + uint8 tile_index, x_tile, y_tile; + uint8 col_high, attrib, attrib_shift; + + /* draw a line of transparent background color if bg is disabled */ + if (false == ppu.bg_on) + { + memset(vidbuf, FULLBG, NES_SCREEN_WIDTH); + return; + } + + bmp_ptr = vidbuf - ppu.tile_xofs; /* scroll x */ + refresh_vaddr = 0x2000 + (ppu.vaddr & 0x0FE0); /* mask out x tile */ + x_tile = ppu.vaddr & 0x1F; + y_tile = (ppu.vaddr >> 5) & 0x1F; /* to simplify calculations */ + bg_offset = ((ppu.vaddr >> 12) & 7) + ppu.bg_base; /* offset in y tile */ + + /* calculate initial values */ + tile_ptr = &PPU_MEM(refresh_vaddr + x_tile); /* pointer to tile index */ + attrib_base = (refresh_vaddr & 0x2C00) + 0x3C0 + ((y_tile & 0x1C) << 1); + attrib_ptr = &PPU_MEM(attrib_base + (x_tile >> 2)); + attrib = *attrib_ptr++; + attrib_shift = (x_tile & 2) + ((y_tile & 2) << 1); + col_high = ((attrib >> attrib_shift) & 3) << 2; + + /* ppu fetches 33 tiles */ + tile_count = 33; + while (tile_count--) + { + /* Tile number from nametable */ + tile_index = *tile_ptr++; + data_ptr = &PPU_MEM(bg_offset + (tile_index << 4)); + + /* Handle $FD/$FE tile VROM switching (PunchOut) */ + if (ppu.latchfunc) + ppu.latchfunc(ppu.bg_base, tile_index); + + draw_bgtile(bmp_ptr, data_ptr[0], data_ptr[8], ppu.palette + col_high); + bmp_ptr += 8; + + x_tile++; + + if (0 == (x_tile & 1)) /* check every 2 tiles */ + { + if (0 == (x_tile & 3)) /* check every 4 tiles */ + { + if (32 == x_tile) /* check every 32 tiles */ + { + x_tile = 0; + refresh_vaddr ^= (1 << 10); /* switch nametable */ + attrib_base ^= (1 << 10); + + /* recalculate pointers */ + tile_ptr = &PPU_MEM(refresh_vaddr); + attrib_ptr = &PPU_MEM(attrib_base); + } + + /* Get the attribute byte */ + attrib = *attrib_ptr++; + } + + attrib_shift ^= 2; + col_high = ((attrib >> attrib_shift) & 3) << 2; + } + } + + /* Blank left hand column if need be */ + if (ppu.bg_mask) + { + uint32 *buf_ptr = (uint32 *) vidbuf; + uint32 bg_clear = FULLBG | FULLBG << 8 | FULLBG << 16 | FULLBG << 24; + + ((uint32 *) buf_ptr)[0] = bg_clear; + ((uint32 *) buf_ptr)[1] = bg_clear; + } +} + +/* OAM entry */ +typedef struct obj_s +{ + uint8 y_loc; + uint8 tile; + uint8 atr; + uint8 x_loc; +} obj_t; + +/* TODO: fetch valid OAM a scanline before, like the Real Thing */ +static void ppu_renderoam(uint8 *vidbuf, int scanline) +{ + uint8 *buf_ptr; + uint32 vram_offset, savecol[2]; + int sprite_num, spritecount; + obj_t *sprite_ptr; + uint8 sprite_height; + + if (false == ppu.obj_on) + return; + + /* Get our buffer pointer */ + buf_ptr = vidbuf; + + /* Save left hand column? */ + if (ppu.obj_mask) + { + savecol[0] = ((uint32 *) buf_ptr)[0]; + savecol[1] = ((uint32 *) buf_ptr)[1]; + } + + sprite_height = ppu.obj_height; + vram_offset = ppu.obj_base; + spritecount = 0; + + sprite_ptr = (obj_t *) ppu.oam; + + for (sprite_num = 0; sprite_num < 64; sprite_num++, sprite_ptr++) + { + uint8 *data_ptr, *bmp_ptr; + uint32 vram_adr; + int y_offset; + uint8 tile_index, attrib, col_high; + uint8 sprite_y, sprite_x; + bool check_strike; + int strike_pixel; + + sprite_y = sprite_ptr->y_loc + 1; + + /* Check to see if sprite is out of range */ + if ((sprite_y > scanline) || (sprite_y <= (scanline - sprite_height)) + || (0 == sprite_y) || (sprite_y >= 240)) + continue; + + sprite_x = sprite_ptr->x_loc; + tile_index = sprite_ptr->tile; + attrib = sprite_ptr->atr; + + bmp_ptr = buf_ptr + sprite_x; + + /* Handle $FD/$FE tile VROM switching (PunchOut) */ + if (ppu.latchfunc) + ppu.latchfunc(vram_offset, tile_index); + + /* Get upper two bits of color */ + col_high = ((attrib & 3) << 2); + + /* 8x16 even sprites use $0000, odd use $1000 */ + if (16 == ppu.obj_height) + vram_adr = ((tile_index & 1) << 12) | ((tile_index & 0xFE) << 4); + else + vram_adr = vram_offset + (tile_index << 4); + + /* Get the address of the tile */ + data_ptr = &PPU_MEM(vram_adr); + + /* Calculate offset (line within the sprite) */ + y_offset = scanline - sprite_y; + if (y_offset > 7) + y_offset += 8; + + /* Account for vertical flippage */ + if (attrib & OAMF_VFLIP) + { + if (16 == ppu.obj_height) + y_offset -= 23; + else + y_offset -= 7; + + data_ptr -= y_offset; + } + else + { + data_ptr += y_offset; + } + + /* if we're on sprite 0 and sprite 0 strike flag isn't set, + ** check for a strike + */ + check_strike = (0 == sprite_num) && (false == ppu.strikeflag); + strike_pixel = draw_oamtile(bmp_ptr, attrib, data_ptr[0], data_ptr[8], ppu.palette + 16 + col_high, check_strike); + if (strike_pixel >= 0) + ppu_setstrike(strike_pixel); + + /* maximum of 8 sprites per scanline */ + if (++spritecount == PPU_MAXSPRITE) + { + ppu.stat |= PPU_STATF_MAXSPRITE; + break; + } + } + + /* Restore lefthand column */ + if (ppu.obj_mask) + { + ((uint32 *) buf_ptr)[0] = savecol[0]; + ((uint32 *) buf_ptr)[1] = savecol[1]; + } +} + +/* Fake rendering a line */ +/* This is needed for sprite 0 hits when we're skipping drawing a frame */ +static void ppu_fakeoam(int scanline) +{ + uint8 *data_ptr; + obj_t *sprite_ptr; + uint32 vram_adr, color; + int y_offset; + uint8 pat1, pat2; + uint8 tile_index, attrib; + uint8 sprite_height, sprite_y, sprite_x; + + /* we don't need to be here if strike flag is set */ + + if (false == ppu.obj_on || ppu.strikeflag) + return; + + sprite_height = ppu.obj_height; + sprite_ptr = (obj_t *) ppu.oam; + sprite_y = sprite_ptr->y_loc + 1; + + /* Check to see if sprite is out of range */ + if ((sprite_y > scanline) || (sprite_y <= (scanline - sprite_height)) + || (0 == sprite_y) || (sprite_y > 240)) + return; + + sprite_x = sprite_ptr->x_loc; + tile_index = sprite_ptr->tile; + attrib = sprite_ptr->atr; + + /* 8x16 even sprites use $0000, odd use $1000 */ + if (16 == ppu.obj_height) + vram_adr = ((tile_index & 1) << 12) | ((tile_index & 0xFE) << 4); + else + vram_adr = ppu.obj_base + (tile_index << 4); + + data_ptr = &PPU_MEM(vram_adr); + + /* Calculate offset (line within the sprite) */ + y_offset = scanline - sprite_y; + if (y_offset > 7) + y_offset += 8; + + /* Account for vertical flippage */ + if (attrib & OAMF_VFLIP) + { + if (16 == ppu.obj_height) + y_offset -= 23; + else + y_offset -= 7; + data_ptr -= y_offset; + } + else + { + data_ptr += y_offset; + } + + /* check for a solid sprite 0 pixel */ + pat1 = data_ptr[0]; + pat2 = data_ptr[8]; + color = ((pat2 & 0xAA) << 8) | ((pat2 & 0x55) << 1) + | ((pat1 & 0xAA) << 7) | (pat1 & 0x55); + + if (color) + { + uint8 colors[8]; + + /* buckle up, it's going to get ugly... */ + if (0 == (attrib & OAMF_HFLIP)) + { + colors[0] = (color >> 14) & 3; + colors[1] = (color >> 6) & 3; + colors[2] = (color >> 12) & 3; + colors[3] = (color >> 4) & 3; + colors[4] = (color >> 10) & 3; + colors[5] = (color >> 2) & 3; + colors[6] = (color >> 8) & 3; + colors[7] = color & 3; + } + else + { + colors[7] = (color >> 14) & 3; + colors[6] = (color >> 6) & 3; + colors[5] = (color >> 12) & 3; + colors[4] = (color >> 4) & 3; + colors[3] = (color >> 10) & 3; + colors[2] = (color >> 2) & 3; + colors[1] = (color >> 8) & 3; + colors[0] = color & 3; + } + + if (colors[0]) + ppu_setstrike(sprite_x + 0); + else if (colors[1]) + ppu_setstrike(sprite_x + 1); + else if (colors[2]) + ppu_setstrike(sprite_x + 2); + else if (colors[3]) + ppu_setstrike(sprite_x + 3); + else if (colors[4]) + ppu_setstrike(sprite_x + 4); + else if (colors[5]) + ppu_setstrike(sprite_x + 5); + else if (colors[6]) + ppu_setstrike(sprite_x + 6); + else if (colors[7]) + ppu_setstrike(sprite_x + 7); + } +} + +bool ppu_enabled(void) +{ + return (ppu.bg_on || ppu.obj_on); +} + +static uint8 line[320]; + +static void ppu_renderscanline(bitmap_t *bmp, int scanline, bool draw_flag) +{ + uint8 *buf = &line[0]; //bmp->line[scanline]; + + /* start scanline - transfer ppu latch into vaddr */ + if (ppu.bg_on || ppu.obj_on) + { + if (0 == scanline) + { + ppu.vaddr = ppu.vaddr_latch; + } + else + { + ppu.vaddr &= ~0x041F; + ppu.vaddr |= (ppu.vaddr_latch & 0x041F); + } + } + + if (draw_flag) + ppu_renderbg(buf); + + /* TODO: fetch obj data 1 scanline before */ + if (true == ppu.drawsprites && true == draw_flag) + ppu_renderoam(buf, scanline); + else + ppu_fakeoam(scanline); + + if (draw_flag) + emu_DrawLine(buf, 256, 240, scanline); +} + + +void ppu_endscanline(int scanline) +{ + /* modify vram address at end of scanline */ + if (scanline < 240 && (ppu.bg_on || ppu.obj_on)) + { + int ytile; + + /* check for max 3 bit y tile offset */ + if (7 == (ppu.vaddr >> 12)) + { + ppu.vaddr &= ~0x7000; /* clear y tile offset */ + ytile = (ppu.vaddr >> 5) & 0x1F; + + if (29 == ytile) + { + ppu.vaddr &= ~0x03E0; /* clear y tile */ + ppu.vaddr ^= 0x0800; /* toggle nametable */ + } + else if (31 == ytile) + { + ppu.vaddr &= ~0x03E0; /* clear y tile */ + } + else + { + ppu.vaddr += 0x20; /* increment y tile */ + } + } + else + { + ppu.vaddr += 0x1000; /* increment tile y offset */ + } + } +} + +void ppu_checknmi(void) +{ + if (ppu.ctrl0 & PPU_CTRL0F_NMI) + nes_nmi(); +} + +void ppu_scanline(bitmap_t *bmp, int scanline, bool draw_flag) +{ + if (scanline < 240) + { + /* Lower the Max Sprite per scanline flag */ + ppu.stat &= ~PPU_STATF_MAXSPRITE; + ppu_renderscanline(bmp, scanline, draw_flag); + } + else if (241 == scanline) + { + ppu.stat |= PPU_STATF_VBLANK; + ppu.vram_accessible = true; + } + else if (261 == scanline) + { + ppu.stat &= ~PPU_STATF_VBLANK; + ppu.strikeflag = false; + ppu.strike_cycle = (uint32) -1; + + ppu.vram_accessible = false; + } +} + + + +/* Stuff for the OAM viewer */ +static void draw_sprite(bitmap_t *bmp, int x, int y, uint8 tile_num, uint8 attrib) +{ + int line, height; + int col_high, vram_adr; + uint8 *vid, *data_ptr; + + vid = bmp->line[y] + x; + + /* Get upper two bits of color */ + col_high = ((attrib & 3) << 2); + + /* 8x16 even sprites use $0000, odd use $1000 */ + height = ppu.obj_height; + if (16 == height) + vram_adr = ((tile_num & 1) << 12) | ((tile_num & 0xFE) << 4); + /* else just use the offset from $2000 */ + else + vram_adr = ppu.obj_base + (tile_num << 4); + + data_ptr = &PPU_MEM(vram_adr); + + for (line = 0; line < height; line++) + { + if (line == 8) + data_ptr += 8; + + draw_bgtile(vid, data_ptr[0], data_ptr[8], ppu.palette + 16 + col_high); + //draw_oamtile(vid, attrib, data_ptr[0], data_ptr[8], ppu.palette + 16 + col_high); + + data_ptr++; + vid += bmp->pitch; + } +} + +void ppu_dumpoam(bitmap_t *bmp, int x_loc, int y_loc) +{ + int sprite, x_pos, y_pos, height; + obj_t *spr_ptr; + + spr_ptr = (obj_t *) ppu.oam; + height = ppu.obj_height; + + for (sprite = 0; sprite < 64; sprite++) + { + x_pos = ((sprite & 0x0F) << 3) + (sprite & 0x0F) + x_loc; + if (height == 16) + y_pos = (sprite & 0xF0) + (sprite >> 4) + y_loc; + else + y_pos = ((sprite & 0xF0) >> 1) + (sprite >> 4) + y_loc; + + draw_box(bmp, x_pos, y_pos, height); + + if (spr_ptr->y_loc && spr_ptr->y_loc < 240) + draw_sprite(bmp, x_pos + 1, y_pos + 1, spr_ptr->tile, spr_ptr->atr); + else + draw_deadsprite(bmp, x_pos + 1, y_pos + 1, height); + + spr_ptr++; + } +} + +/* More of a debugging thing than anything else */ +void ppu_dumppattern(bitmap_t *bmp, int table_num, int x_loc, int y_loc, int col) +{ + int x_tile, y_tile; + uint8 *bmp_ptr, *data_ptr, *ptr; + int tile_num, line; + uint8 col_high; + + tile_num = 0; + col_high = col << 2; + + for (y_tile = 0; y_tile < 16; y_tile++) + { + /* Get our pointer to the bitmap */ + bmp_ptr = bmp->line[y_loc] + x_loc; + + for (x_tile = 0; x_tile < 16; x_tile++) + { + data_ptr = &PPU_MEM((table_num << 12) + (tile_num << 4)); + ptr = bmp_ptr; + + for (line = 0; line < 8; line ++) + { + draw_bgtile(ptr, data_ptr[0], data_ptr[8], ppu.palette + col_high); + data_ptr++; + ptr += bmp->pitch; + } + + bmp_ptr += 8; + tile_num++; + } + y_loc += 8; + } +} + +/* +** $Log: nes_ppu.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.14 2000/11/29 12:58:23 matt +** timing/fiq fixes +** +** Revision 1.13 2000/11/27 19:36:15 matt +** more timing fixes +** +** Revision 1.12 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.11 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.10 2000/11/24 14:56:02 matt +** fixed a long-standing sprite 0 strike bug +** +** Revision 1.9 2000/11/20 13:23:17 matt +** PPU fixes +** +** Revision 1.8 2000/11/19 13:47:30 matt +** problem with frame irqs fixed +** +** Revision 1.7 2000/11/19 13:40:19 matt +** more accurate ppu behavior +** +** Revision 1.6 2000/11/14 12:09:37 matt +** only generate the palette once, please +** +** Revision 1.5 2000/11/11 14:51:43 matt +** context get/set fixed +** +** Revision 1.4 2000/11/09 12:35:50 matt +** fixed timing problem with VRAM reads/writes +** +** Revision 1.3 2000/11/05 16:35:41 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.2 2000/10/27 12:55:03 matt +** palette generating functions now take *this pointers +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.33 2000/10/23 15:53:08 matt +** better system handling +** +** Revision 1.32 2000/10/22 15:02:32 matt +** simplified mirroring +** +** Revision 1.31 2000/10/21 21:36:04 matt +** ppu cleanups / fixes +** +** Revision 1.30 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.29 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.28 2000/10/08 17:54:32 matt +** reject VRAM access out of VINT period +** +** Revision 1.27 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.26 2000/09/08 11:57:29 matt +** no more nes_fiq +** +** Revision 1.25 2000/09/07 21:57:31 matt +** api change +** +** Revision 1.24 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.23 2000/07/30 06:13:12 matt +** default to no FIQs on startup +** +** Revision 1.22 2000/07/30 04:32:32 matt +** emulation of the NES frame IRQ +** +** Revision 1.21 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.20 2000/07/23 15:12:43 matt +** removed unused variables, changed INLINE +** +** Revision 1.19 2000/07/21 04:50:39 matt +** moved palette calls out of nofrendo.c and into ppu_create +** +** Revision 1.18 2000/07/17 05:12:55 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.17 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.16 2000/07/11 04:42:39 matt +** updated for new screen dimension defines +** +** Revision 1.15 2000/07/10 19:10:16 matt +** should bomb out now if a game tries to write to VROM +** +** Revision 1.14 2000/07/10 05:28:30 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.13 2000/07/10 03:03:16 matt +** added ppu_getcontext() routine +** +** Revision 1.12 2000/07/09 03:46:05 matt +** using pitch instead of width... +** +** Revision 1.11 2000/07/06 16:42:40 matt +** better palette setting interface +** +** Revision 1.10 2000/07/05 22:49:25 matt +** changed mmc2 (punchout) tile-access switching +** +** Revision 1.9 2000/07/04 23:13:26 matt +** added an irq line drawing debug feature hack +** +** Revision 1.8 2000/06/26 04:58:08 matt +** accuracy changes +** +** Revision 1.7 2000/06/22 02:13:49 matt +** more accurate emulation of $2002 +** +** Revision 1.6 2000/06/20 20:42:47 matt +** accuracy changes +** +** Revision 1.5 2000/06/20 00:05:12 matt +** tested and verified STAT quirk, added code +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_ppu.h b/MCUME_teensy/teensynofrendo/nes_ppu.h new file mode 100755 index 0000000..46a9813 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_ppu.h @@ -0,0 +1,241 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_ppu.h +** +** NES Picture Processing Unit (PPU) emulation header file +** $Id: nes_ppu.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_PPU_H_ +#define _NES_PPU_H_ + +#include "bitmap.h" + +/* PPU register defines */ +#define PPU_CTRL0 0x2000 +#define PPU_CTRL1 0x2001 +#define PPU_STAT 0x2002 +#define PPU_OAMADDR 0x2003 +#define PPU_OAMDATA 0x2004 +#define PPU_SCROLL 0x2005 +#define PPU_VADDR 0x2006 +#define PPU_VDATA 0x2007 + +#define PPU_OAMDMA 0x4014 +#define PPU_JOY0 0x4016 +#define PPU_JOY1 0x4017 + +/* $2000 */ +#define PPU_CTRL0F_NMI 0x80 +#define PPU_CTRL0F_OBJ16 0x20 +#define PPU_CTRL0F_BGADDR 0x10 +#define PPU_CTRL0F_OBJADDR 0x08 +#define PPU_CTRL0F_ADDRINC 0x04 +#define PPU_CTRL0F_NAMETAB 0x03 + +/* $2001 */ +#define PPU_CTRL1F_OBJON 0x10 +#define PPU_CTRL1F_BGON 0x08 +#define PPU_CTRL1F_OBJMASK 0x04 +#define PPU_CTRL1F_BGMASK 0x02 + +/* $2002 */ +#define PPU_STATF_VBLANK 0x80 +#define PPU_STATF_STRIKE 0x40 +#define PPU_STATF_MAXSPRITE 0x20 + +/* Sprite attribute byte bitmasks */ +#define OAMF_VFLIP 0x80 +#define OAMF_HFLIP 0x40 +#define OAMF_BEHIND 0x20 + +/* Maximum number of sprites per horizontal scanline */ +#define PPU_MAXSPRITE 8 + +/* some mappers do *dumb* things */ +typedef void (*ppulatchfunc_t)(uint32 address, uint8 value); +typedef void (*ppuvromswitch_t)(uint8 value); + +typedef struct ppu_s +{ + /* big nasty memory chunks */ + uint8 nametab[0x1000]; + uint8 oam[256]; + uint8 palette[32]; + uint8 *page[16]; + + /* hardware registers */ + uint8 ctrl0, ctrl1, stat, oam_addr; + uint32 vaddr, vaddr_latch; + int tile_xofs, flipflop; + int vaddr_inc; + uint32 tile_nametab; + + uint8 obj_height; + uint32 obj_base, bg_base; + + bool bg_on, obj_on; + bool obj_mask, bg_mask; + + uint8 latch, vdata_latch; + uint8 strobe; + + bool strikeflag; + uint32 strike_cycle; + + /* callbacks for naughty mappers */ + ppulatchfunc_t latchfunc; + ppuvromswitch_t vromswitch; + + /* copy of our current palette */ + rgb_t curpal[256]; + + bool vram_accessible; + + bool vram_present; + bool drawsprites; +} ppu_t; + + +/* TODO: should use this pointers */ +extern void ppu_setlatchfunc(ppulatchfunc_t func); +extern void ppu_setvromswitch(ppuvromswitch_t func); + +extern void ppu_getcontext(ppu_t *dest_ppu); +extern void ppu_setcontext(ppu_t *src_ppu); + +/* Mirroring */ +/* TODO: this is only used bloody once */ +extern void ppu_mirrorhipages(void); + +extern void ppu_mirror(int nt1, int nt2, int nt3, int nt4); + +extern void ppu_setpage(int size, int page_num, uint8 *location); +extern uint8 *ppu_getpage(int page); + + +/* control */ +extern void ppu_reset(int reset_type); +extern bool ppu_enabled(void); +extern void ppu_scanline(bitmap_t *bmp, int scanline, bool draw_flag); +extern void ppu_endscanline(int scanline); +extern void ppu_checknmi(); + +extern ppu_t *ppu_create(void); +extern void ppu_destroy(ppu_t **ppu); + +/* IO */ +extern uint8 ppu_read(uint32 address); +extern void ppu_write(uint32 address, uint8 value); +extern uint8 ppu_readhigh(uint32 address); +extern void ppu_writehigh(uint32 address, uint8 value); + +/* rendering */ +extern void ppu_setpal(ppu_t *src_ppu, rgb_t *pal); +extern void ppu_setdefaultpal(ppu_t *src_ppu); + +/* bleh */ +extern void ppu_dumppattern(bitmap_t *bmp, int table_num, int x_loc, int y_loc, int col); +extern void ppu_dumpoam(bitmap_t *bmp, int x_loc, int y_loc); +extern void ppu_displaysprites(bool display); + +#endif /* _NES_PPU_H_ */ + +/* +** $Log: nes_ppu.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.8 2000/11/29 12:58:23 matt +** timing/fiq fixes +** +** Revision 1.7 2000/11/27 19:36:16 matt +** more timing fixes +** +** Revision 1.6 2000/11/26 15:51:13 matt +** frame IRQ emulation +** +** Revision 1.5 2000/11/25 20:30:39 matt +** scanline emulation simplifications/timing fixes +** +** Revision 1.4 2000/11/19 13:40:19 matt +** more accurate ppu behavior +** +** Revision 1.3 2000/11/05 16:35:41 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.2 2000/10/27 12:55:03 matt +** palette generating functions now take *this pointers +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.19 2000/10/22 15:02:32 matt +** simplified mirroring +** +** Revision 1.18 2000/10/21 21:36:04 matt +** ppu cleanups / fixes +** +** Revision 1.17 2000/10/21 19:26:59 matt +** many more cleanups +** +** Revision 1.16 2000/10/10 13:58:15 matt +** stroustrup squeezing his way in the door +** +** Revision 1.15 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.14 2000/07/30 04:32:33 matt +** emulation of the NES frame IRQ +** +** Revision 1.13 2000/07/25 02:25:53 matt +** safer xxx_destroy calls +** +** Revision 1.12 2000/07/17 05:12:56 matt +** nes_ppu.c is no longer a scary place to be-- cleaner & faster +** +** Revision 1.11 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.10 2000/07/10 05:28:30 matt +** moved joypad/oam dma from apu to ppu +** +** Revision 1.9 2000/07/10 03:03:16 matt +** added ppu_getcontext() routine +** +** Revision 1.8 2000/07/06 16:42:40 matt +** better palette setting interface +** +** Revision 1.7 2000/07/04 23:13:26 matt +** added an irq line drawing debug feature hack +** +** Revision 1.6 2000/06/26 04:58:08 matt +** accuracy changes +** +** Revision 1.5 2000/06/20 00:04:35 matt +** removed STATQUIRK macro +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_rom.h b/MCUME_teensy/teensynofrendo/nes_rom.h new file mode 100755 index 0000000..f6c17a2 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_rom.h @@ -0,0 +1,110 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_rom.h +** +** NES ROM loading/saving related defines / prototypes +** $Id: nes_rom.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _NES_ROM_H_ +#define _NES_ROM_H_ + +#include +#include "osd.h" + +typedef enum +{ + MIRROR_HORIZ = 0, + MIRROR_VERT = 1 +} mirror_t; + +#define ROM_FLAG_BATTERY 0x01 +#define ROM_FLAG_TRAINER 0x02 +#define ROM_FLAG_FOURSCREEN 0x04 +#define ROM_FLAG_VERSUS 0x08 + +typedef struct rominfo_s +{ + /* pointers to ROM and VROM */ + uint8 *rom, *vrom; + + /* pointers to SRAM and VRAM */ + uint8 *sram, *vram; + + /* number of banks */ + int rom_banks, vrom_banks; + int sram_banks, vram_banks; + + int mapper_number; + mirror_t mirror; + + uint8 flags; + + char filename[PATH_MAX + 1]; +} rominfo_t; + + +extern int rom_checkmagic(const char *filename); +extern rominfo_t *rom_load(const char *filename); +extern void rom_free(rominfo_t **rominfo); +extern char *rom_getinfo(rominfo_t *rominfo); + + +#endif /* _NES_ROM_H_ */ + +/* +** $Log: nes_rom.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.11 2000/10/22 15:01:29 matt +** irrelevant mirroring modes removed +** +** Revision 1.10 2000/10/17 03:22:38 matt +** cleaning up rom module +** +** Revision 1.9 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.8 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.7 2000/07/25 02:20:58 matt +** cleanups +** +** Revision 1.6 2000/07/19 15:59:39 neil +** PATH_MAX, strncpy, snprintf, and strncat are our friends +** +** Revision 1.5 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nes_rom_light.c b/MCUME_teensy/teensynofrendo/nes_rom_light.c new file mode 100644 index 0000000..b3bffd3 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nes_rom_light.c @@ -0,0 +1,411 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nes_rom.c +** +** NES ROM loading/saving related functions +** $Id: nes_rom.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +/* TODO: make this a generic ROM loading routine */ + +#include +#include +#include "noftypes.h" +#include "nes_rom.h" +#include "nes_mmc.h" +#include "nes_ppu.h" +#include "nes.h" +#include "log.h" +#include "osd.h" + +extern char *osd_getromdata(); + +/* Max length for displayed filename */ +#define ROM_DISP_MAXLEN 20 + + +#define ROM_FOURSCREEN 0x08 +#define ROM_TRAINER 0x04 +#define ROM_BATTERY 0x02 +#define ROM_MIRRORTYPE 0x01 +#define ROM_INES_MAGIC "NES\x1A" + +//ToDo: packed - JD +typedef struct inesheader_s +{ + uint8 ines_magic[4] ; + uint8 rom_banks ; + uint8 vrom_banks ; + uint8 rom_type ; + uint8 mapper_hinybble ; + uint8 reserved[8] ; +} inesheader_t; + + +#define TRAINER_OFFSET 0x1000 +#define TRAINER_LENGTH 0x200 +#define VRAM_LENGTH 0x2000 + +#define ROM_BANK_LENGTH 0x4000 +#define VROM_BANK_LENGTH 0x2000 + +#define SRAM_BANK_LENGTH 0x0400 +#define VRAM_BANK_LENGTH 0x2000 + + + + + +static int rom_loadrom(unsigned char **rom, rominfo_t *rominfo) +{ + ASSERT(rom); + ASSERT(rominfo); + /* Allocate ROM space, and load it up! */ + rominfo->rom=*rom; + *rom+=ROM_BANK_LENGTH*rominfo->rom_banks; + + /* If there's VROM, allocate and stuff it in */ + if (rominfo->vrom_banks) + { + rominfo->vrom=*rom; + *rom+=VROM_BANK_LENGTH*rominfo->vrom_banks; + } + else + { + rominfo->vram = emu_Malloc(VRAM_LENGTH); + if (NULL == rominfo->vram) + { + return -1; + } + memset(rominfo->vram, 0, VRAM_LENGTH); + } + return 0; +} + + +static int *rom_findrom(const char *filename, rominfo_t *rominfo) +{ + int fp; + + ASSERT(rominfo); + + if (NULL == filename) + return NULL; + + /* Make a copy of the name so we can extend it */ + osd_fullname(rominfo->filename, filename); + + fp = emu_FileOpen(rominfo->filename); + if (!fp) + { + /* Didn't find the file? Maybe the .NES extension was omitted */ + if (NULL == strrchr(rominfo->filename, '.')) + strncat(rominfo->filename, ".nes", PATH_MAX - strlen(rominfo->filename)); + + /* this will either return NULL or a valid file pointer */ + fp = emu_FileOpen(rominfo->filename); + } + + return fp; +} + +/* Add ROM name to a list with dirty headers */ +static int rom_adddirty(char *filename) +{ + return 0; +} + +/* return 0 if this *is* an iNES file */ +int rom_checkmagic(const char *filename) +{ + inesheader_t head; + rominfo_t rominfo; + int fp; + + fp = rom_findrom(filename, &rominfo); + if (0 == fp) + return -1; + + emu_FileRead(&head, 1*sizeof(head)); + + emu_FileClose(); + + if (0 == memcmp(head.ines_magic, ROM_INES_MAGIC, 4)) + /* not an iNES file */ + return 0; + + return -1; +} + + + +static int rom_getheader(unsigned char **rom, rominfo_t *rominfo) +{ +#define RESERVED_LENGTH 8 + inesheader_t head; + uint8 reserved[RESERVED_LENGTH]; + bool header_dirty; + + ASSERT(rom); + ASSERT(*rom); + ASSERT(rominfo); + + /* Read in the header */ +// _fread(&head, 1, sizeof(head), fp); + log_printf("Head: %p (%x %x %x %x)\n", *rom, (*rom)[0], (*rom)[1], (*rom)[2], (*rom)[3]); + memcpy(&head, *rom, sizeof(head)); + *rom+=sizeof(head); + + if (memcmp(head.ines_magic, ROM_INES_MAGIC, 4)) + { + return -1; + } + + rominfo->rom_banks = head.rom_banks; + rominfo->vrom_banks = head.vrom_banks; + /* iNES assumptions */ + rominfo->sram_banks = 8; /* 1kB banks, so 8KB */ + rominfo->vram_banks = 1; /* 8kB banks, so 8KB */ + rominfo->mirror = (head.rom_type & ROM_MIRRORTYPE) ? MIRROR_VERT : MIRROR_HORIZ; + rominfo->flags = 0; + if (head.rom_type & ROM_BATTERY) + rominfo->flags |= ROM_FLAG_BATTERY; + if (head.rom_type & ROM_TRAINER) + rominfo->flags |= ROM_FLAG_TRAINER; + if (head.rom_type & ROM_FOURSCREEN) + rominfo->flags |= ROM_FLAG_FOURSCREEN; + /* TODO: fourscreen a mirroring type? */ + rominfo->mapper_number = head.rom_type >> 4; + + /* Do a compare - see if we've got a clean extended header */ + memset(reserved, 0, RESERVED_LENGTH); + if (0 == memcmp(head.reserved, reserved, RESERVED_LENGTH)) + { + /* We were clean */ + header_dirty = false; + rominfo->mapper_number |= (head.mapper_hinybble & 0xF0); + } + else + { + header_dirty = true; + + /* @!?#@! DiskDude. */ + if (('D' == head.mapper_hinybble) && (0 == memcmp(head.reserved, "iskDude!", 8))) + log_printf("`DiskDude!' found in ROM header, ignoring high mapper nybble\n"); + else + { + log_printf("ROM header dirty, possible problem\n"); + rominfo->mapper_number |= (head.mapper_hinybble & 0xF0); + } + + rom_adddirty(rominfo->filename); + } + + /* TODO: this is an ugly hack, but necessary, I guess */ + /* Check for VS unisystem mapper */ + if (99 == rominfo->mapper_number) + rominfo->flags |= ROM_FLAG_VERSUS; + + return 0; +} + +/* Build the info string for ROM display */ +char *rom_getinfo(rominfo_t *rominfo) +{ + static char info[PATH_MAX + 1]; + char romname[PATH_MAX + 1], temp[PATH_MAX + 1]; + + /* Look to see if we were given a path along with filename */ + /* TODO: strip extensions */ + if (strrchr(rominfo->filename, PATH_SEP)) + strncpy(romname, strrchr(rominfo->filename, PATH_SEP) + 1, PATH_MAX); + else + strncpy(romname, rominfo->filename, PATH_MAX); + + /* If our filename is too long, truncate our displayed filename */ + if (strlen(romname) > ROM_DISP_MAXLEN) + { + strncpy(info, romname, ROM_DISP_MAXLEN - 3); + strcpy(info + (ROM_DISP_MAXLEN - 3), "..."); + } + else + { + strcpy(info, romname); + } + + sprintf(temp, " [%d] %dk/%dk %c", rominfo->mapper_number, + rominfo->rom_banks * 16, rominfo->vrom_banks * 8, + (rominfo->mirror == MIRROR_VERT) ? 'V' : 'H'); + + /* Stick it on there! */ + strncat(info, temp, PATH_MAX - strlen(info)); + + if (rominfo->flags & ROM_FLAG_BATTERY) + strncat(info, "B", PATH_MAX - strlen(info)); + if (rominfo->flags & ROM_FLAG_TRAINER) + strncat(info, "T", PATH_MAX - strlen(info)); + if (rominfo->flags & ROM_FLAG_FOURSCREEN) + strncat(info, "4", PATH_MAX - strlen(info)); + + return info; +} + +/* Load a ROM image into memory */ +rominfo_t *rom_load(const char *filename) +{ + unsigned char *rom=(unsigned char*)osd_getromdata(); + rominfo_t *rominfo; + + rominfo = emu_Malloc(sizeof(rominfo_t)); + if (NULL == rominfo) + return NULL; + + memset(rominfo, 0, sizeof(rominfo_t)); + + /* Get the header and stick it into rominfo struct */ + if (rom_getheader(&rom, rominfo)) + goto _fail; + + /* Make sure we really support the mapper */ + if (false == mmc_peek(rominfo->mapper_number)) + { + goto _fail; + } + + if (rom_loadrom(&rom, rominfo)) + goto _fail; + + return rominfo; + +_fail: + rom_free(&rominfo); + return NULL; +} + +/* Free a ROM */ +void rom_free(rominfo_t **rominfo) +{ + if (NULL == *rominfo) + { + return; + } + + /* Restore palette if we loaded in a VS jobber */ + if ((*rominfo)->flags & ROM_FLAG_VERSUS) + { + /* TODO: bad idea calling nes_getcontextptr... */ + ppu_setdefaultpal(nes_getcontextptr()->ppu); + log_printf("Default NES palette restored\n"); + } + + + if ((*rominfo)->sram) + free((*rominfo)->sram); + if ((*rominfo)->rom) + free((*rominfo)->rom); + if ((*rominfo)->vrom) + free((*rominfo)->vrom); + if ((*rominfo)->vram) + free((*rominfo)->vram); + + free(*rominfo); +} + +/* +** $Log: nes_rom.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.8 2000/11/21 13:28:40 matt +** take care to zero allocated mem +** +** Revision 1.7 2000/11/09 14:07:28 matt +** state load fixed, state save mostly fixed +** +** Revision 1.6 2000/10/28 14:24:54 matt +** where did I put that underscore? +** +** Revision 1.5 2000/10/27 12:56:35 matt +** api change for ppu palette functions +** +** Revision 1.4 2000/10/26 22:51:44 matt +** correct NULL filename handling +** +** Revision 1.3 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.2 2000/10/25 00:23:16 matt +** makefiles updated for new directory structure +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.19 2000/10/21 14:35:58 matt +** typo +** +** Revision 1.18 2000/10/17 03:22:37 matt +** cleaning up rom module +** +** Revision 1.17 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.16 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.15 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.14 2000/07/30 04:31:26 matt +** automagic loading of the nofrendo intro +** +** Revision 1.13 2000/07/25 02:20:58 matt +** cleanups +** +** Revision 1.12 2000/07/20 01:53:27 matt +** snprintf() ain't no standard function, eh? +** +** Revision 1.11 2000/07/19 16:06:54 neil +** little error fixed (tempinfo vs rominfo->info) +** +** Revision 1.10 2000/07/19 15:59:39 neil +** PATH_MAX, strncpy, snprintf, and strncat are our friends +** +** Revision 1.9 2000/07/17 01:52:27 matt +** made sure last line of all source files is a newline +** +** Revision 1.8 2000/07/06 16:47:50 matt +** new ppu palette setting calls +** +** Revision 1.7 2000/07/05 23:21:54 neil +** fclose(fp) should not be done if fp == NULL +** +** Revision 1.6 2000/07/04 04:45:14 matt +** changed include +** +** Revision 1.5 2000/06/26 04:56:10 matt +** minor cleanup +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nesinput.c b/MCUME_teensy/teensynofrendo/nesinput.c new file mode 100755 index 0000000..f881070 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nesinput.c @@ -0,0 +1,212 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nesinput.c +** +** Event handling system routines +** $Id: nesinput.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "nesinput.h" +#include "log.h" + +/* TODO: make a linked list of inputs sources, so they +** can be removed if need be +*/ + +static nesinput_t *nes_input[MAX_CONTROLLERS]; +static int active_entries = 0; + +/* read counters */ +static int pad0_readcount, pad1_readcount, ppad_readcount, ark_readcount; + + +static int retrieve_type(int type) +{ + int i, value = 0; + + for (i = 0; i < active_entries; i++) + { + ASSERT(nes_input[i]); + + if (type == nes_input[i]->type) + value |= nes_input[i]->data; + } + + return value; +} + +static uint8 get_pad0(void) +{ + uint8 value; + + value = (uint8) retrieve_type(INP_JOYPAD0); + + /* mask out left/right simultaneous keypresses */ + if ((value & INP_PAD_UP) && (value & INP_PAD_DOWN)) + value &= ~(INP_PAD_UP | INP_PAD_DOWN); + + if ((value & INP_PAD_LEFT) && (value & INP_PAD_RIGHT)) + value &= ~(INP_PAD_LEFT | INP_PAD_RIGHT); + + /* return (0x40 | value) due to bus conflicts */ + return (0x40 | ((value >> pad0_readcount++) & 1)); +} + +static uint8 get_pad1(void) +{ + uint8 value; + + value = (uint8) retrieve_type(INP_JOYPAD1); + + /* mask out left/right simultaneous keypresses */ + if ((value & INP_PAD_UP) && (value & INP_PAD_DOWN)) + value &= ~(INP_PAD_UP | INP_PAD_DOWN); + + if ((value & INP_PAD_LEFT) && (value & INP_PAD_RIGHT)) + value &= ~(INP_PAD_LEFT | INP_PAD_RIGHT); + + /* return (0x40 | value) due to bus conflicts */ + return (0x40 | ((value >> pad1_readcount++) & 1)); +} + +static uint8 get_zapper(void) +{ + return (uint8) (retrieve_type(INP_ZAPPER)); +} + +static uint8 get_powerpad(void) +{ + int value; + uint8 ret_val = 0; + + value = retrieve_type(INP_POWERPAD); + + if (((value >> 8) >> ppad_readcount) & 1) + ret_val |= 0x10; + if (((value & 0xFF) >> ppad_readcount) & 1) + ret_val |= 0x08; + + ppad_readcount++; + + return ret_val; +} + +static uint8 get_vsdips0(void) +{ + return (retrieve_type(INP_VSDIPSW0)); +} + +static uint8 get_vsdips1(void) +{ + return (retrieve_type(INP_VSDIPSW1)); +} + +static uint8 get_arkanoid(void) +{ + uint8 value = retrieve_type(INP_ARKANOID); + + if ((value >> (7 - ark_readcount++)) & 1) + return 0x02; + else + return 0; +} + +/* return input state for all types indicated (can be ORed together) */ +uint8 input_get(int types) +{ + uint8 value = 0; + + if (types & INP_JOYPAD0) + value |= get_pad0(); + if (types & INP_JOYPAD1) + value |= get_pad1(); + if (types & INP_ZAPPER) + value |= get_zapper(); + if (types & INP_POWERPAD) + value |= get_powerpad(); + if (types & INP_VSDIPSW0) + value |= get_vsdips0(); + if (types & INP_VSDIPSW1) + value |= get_vsdips1(); + if (types & INP_ARKANOID) + value |= get_arkanoid(); + + return value; +} + +/* register an input type */ +void input_register(nesinput_t *input) +{ + if (NULL == input) + return; + + nes_input[active_entries] = input; + active_entries++; +} + +void input_event(nesinput_t *input, int state, int value) +{ + ASSERT(input); + + if (state == INP_STATE_MAKE) + input->data |= value; /* OR it in */ + else /* break state */ + input->data &= ~value; /* mask it out */ +} + +void input_strobe(void) +{ + pad0_readcount = 0; + pad1_readcount = 0; + ppad_readcount = 0; + ark_readcount = 0; +} + +/* +** $Log: nesinput.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.9 2000/09/10 23:25:03 matt +** minor changes +** +** Revision 1.8 2000/07/31 04:27:59 matt +** one million cleanups +** +** Revision 1.7 2000/07/23 15:11:45 matt +** removed unused variables +** +** Revision 1.6 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.5 2000/07/04 04:56:50 matt +** include changes +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nesinput.h b/MCUME_teensy/teensynofrendo/nesinput.h new file mode 100755 index 0000000..49871dc --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nesinput.h @@ -0,0 +1,104 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nesinput.h +** +** Platform independent input definitions +** $Id: nesinput.h,v 1.1.1.1 2001/04/27 07:03:54 neil Exp $ +*/ + +#ifndef _NESINPUT_H_ +#define _NESINPUT_H_ + +/* NES control pad bitmasks */ +#define INP_PAD_A 0x01 +#define INP_PAD_B 0x02 +#define INP_PAD_SELECT 0x04 +#define INP_PAD_START 0x08 +#define INP_PAD_UP 0x10 +#define INP_PAD_DOWN 0x20 +#define INP_PAD_LEFT 0x40 +#define INP_PAD_RIGHT 0x80 + +#define INP_ZAPPER_HIT 0x00 +#define INP_ZAPPER_MISS 0x08 +#define INP_ZAPPER_TRIG 0x10 + +#define INP_JOYPAD0 0x0001 +#define INP_JOYPAD1 0x0002 +#define INP_ZAPPER 0x0004 +#define INP_POWERPAD 0x0008 +#define INP_ARKANOID 0x0010 +#define INP_VSDIPSW0 0x0020 +#define INP_VSDIPSW1 0x0040 + +/* upper byte is what's returned in D4, lower is D3 */ +#define INP_PPAD_1 0x0002 +#define INP_PPAD_2 0x0001 +#define INP_PPAD_3 0x0200 +#define INP_PPAD_4 0x0100 +#define INP_PPAD_5 0x0004 +#define INP_PPAD_6 0x0010 +#define INP_PPAD_7 0x0080 +#define INP_PPAD_8 0x0800 +#define INP_PPAD_9 0x0008 +#define INP_PPAD_10 0x0020 +#define INP_PPAD_11 0x0040 +#define INP_PPAD_12 0x0400 + + +enum +{ + INP_STATE_BREAK, + INP_STATE_MAKE +}; + +typedef struct nesinput_s +{ + int type; + int data; +} nesinput_t; + +#define MAX_CONTROLLERS 32 + +extern uint8 input_get(int type); +extern void input_register(nesinput_t *input); +extern void input_event(nesinput_t *input, int state, int value); +extern void input_strobe(void); + +#endif /* _NESINPUT_H_ */ + +/* +** $Log: nesinput.h,v $ +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:28 matt +** changed directory structure +** +** Revision 1.6 2000/09/10 23:25:02 matt +** minor changes +** +** Revision 1.5 2000/07/17 01:52:29 matt +** made sure last line of all source files is a newline +** +** Revision 1.4 2000/06/09 15:12:26 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nofconfig.h b/MCUME_teensy/teensynofrendo/nofconfig.h new file mode 100755 index 0000000..44005ff --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nofconfig.h @@ -0,0 +1,49 @@ +/* Nofrendo Configuration API +** +** This file is in the public domain. +** +** $Id: nofconfig.h,v 1.1 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#ifndef CONFIG_FILE +#define CONFIG_FILE "nofrendo.cfg" +#endif + +typedef struct config_s +{ + char *filename; +} config_t; + +extern config_t config; + +#endif /* !_CONFIG_H_ */ + +/* +** $Log: nofconfig.h,v $ +** Revision 1.1 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.5 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.4 2000/07/19 15:58:55 neil +** config file now configurable (ha) +** +** Revision 1.3 2000/07/11 14:59:27 matt +** minor cosmetics.. =) +** +** Revision 1.2 2000/07/11 13:35:38 bsittler +** Changed the config API, implemented config file "nofrendo.cfg". The +** GGI drivers use the group [GGI]. Visual= and Mode= keys are understood. +** +** Revision 1.1 2000/07/11 07:46:11 neil +** Initial commit +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nofrendo.c b/MCUME_teensy/teensynofrendo/nofrendo.c new file mode 100644 index 0000000..123ba5d --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nofrendo.c @@ -0,0 +1,394 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nofrendo.c +** +** Entry point of program +** Note: all architectures should call these functions +** $Id: nofrendo.c,v 1.3 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include +#include "noftypes.h" +#include "nofrendo.h" +#include "event.h" +#include "nofconfig.h" +#include "log.h" +#include "osd.h" +#include "vid_drv.h" + +/* emulated system includes */ +#include "nes.h" + +/* our global machine structure */ +static struct +{ + char *filename, *nextfilename; + system_t type, nexttype; + + union + { + nes_t *nes; + } machine; + + int refresh_rate; + + bool quit; +} console; + +/* our happy little timer ISR */ +volatile int nofrendo_ticks = 0; +static void timer_isr(void) +{ + nofrendo_ticks++; +} + +static void timer_isr_end(void) {} /* code marker for djgpp */ + +static void shutdown_everything(void) +{ + if (console.filename) + { + free(console.filename); + console.filename = NULL; + } + if (console.nextfilename) + { + free(console.nextfilename); + console.nextfilename = NULL; + } + + //config.close(); JMH + osd_shutdown(); + vid_shutdown(); + log_shutdown(); +} + +/* End the current context */ +void main_eject(void) +{ + switch (console.type) + { + case system_nes: + nes_poweroff(); + nes_destroy(&(console.machine.nes)); + break; + + default: + break; + } + + if (NULL != console.filename) + { + free(console.filename); + console.filename = NULL; + } + console.type = system_unknown; +} + +/* Act on the user's quit requests */ +void main_quit(void) +{ + console.quit = true; + + main_eject(); + + /* if there's a pending filename / system, clear */ + if (NULL != console.nextfilename) + { + free(console.nextfilename); + console.nextfilename = NULL; + } + console.nexttype = system_unknown; +} + +/* brute force system autodetection */ +static system_t detect_systemtype(const char *filename) +{ + if (NULL == filename) + return system_unknown; + + if (0 == nes_isourfile(filename)) + return system_nes; + + /* can't figure out what this thing is */ + return system_unknown; +} + +static int install_timer(int hertz) +{ + return osd_installtimer(hertz, (void *) timer_isr, + (int) timer_isr_end - (int) timer_isr, + (void *) &nofrendo_ticks, + sizeof(nofrendo_ticks)); +} + +/* This assumes there is no current context */ +static int internal_insert(const char *filename, system_t type) +{ + /* autodetect system type? */ + if (system_autodetect == type) + type = detect_systemtype(filename); + + console.filename = strdup(filename); + console.type = type; + + /* set up the event system for this system type */ + event_set_system(type); + + switch (console.type) + { + case system_nes: + console.machine.nes = nes_create(); + if (NULL == console.machine.nes) + { + log_printf("Failed to create NES instance.\n"); + return -1; + } + if (nes_insertcart(console.filename, console.machine.nes)) + return -1; + vid_setmode(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT); + if (install_timer(NES_REFRESH_RATE)) + return -1; + + nes_emulate(); + break; + + case system_unknown: + default: + log_printf("system type unknown, playing nofrendo NES intro.\n"); + if (NULL != console.filename) + free(console.filename); + + /* oooh, recursion */ + return internal_insert(filename, system_nes); + } + + return 0; +} + +/* This tells main_loop to load this next image */ +void main_insert(const char *filename, system_t type) +{ + console.nextfilename = strdup(filename); + console.nexttype = type; + + main_eject(); +} + +int nofrendo_main(int argc, char *argv[]) +{ + /* initialize our system structure */ + console.filename = NULL; + console.nextfilename = NULL; + console.type = system_unknown; + console.nexttype = system_unknown; + console.refresh_rate = 0; + console.quit = false; + + if (log_init()) + return -1; + + event_init(); + + return osd_main(argc, argv); +} + +/* This is the final leg of main() */ +int main_loop(const char *filename, system_t type) +{ + vidinfo_t video; + + /* register shutdown, in case of assertions, etc. */ +// atexit(shutdown_everything); + + //if (config.open()) // JMH + // return -1; + + if (osd_init()) + return -1; + + osd_getvideoinfo(&video); + if (vid_init(video.default_width, video.default_height, video.driver)) + return -1; + //log printf("vid_init done\n"); + + console.nextfilename = strdup(filename); + console.nexttype = type; + +// while (false == console.quit) +// { +//emu_printf("internal_insert in loop\n"); + if (internal_insert(console.nextfilename, console.nexttype)) + return 1; +// } + + return 0; +} + + +/* +** $Log: nofrendo.c,v $ +** Revision 1.3 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.2 2001/04/27 11:10:08 neil +** compile +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.48 2000/11/27 12:47:08 matt +** free them strings +** +** Revision 1.47 2000/11/25 20:26:05 matt +** removed fds "system" +** +** Revision 1.46 2000/11/25 01:51:53 matt +** bool stinks sometimes +** +** Revision 1.45 2000/11/20 13:22:12 matt +** standardized timer ISR, added nofrendo_ticks +** +** Revision 1.44 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.43 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.42 2000/10/28 15:16:24 matt +** removed nsf_init +** +** Revision 1.41 2000/10/27 12:58:44 matt +** gui_init can now fail +** +** Revision 1.40 2000/10/26 22:48:57 matt +** prelim NSF support +** +** Revision 1.39 2000/10/25 13:42:02 matt +** strdup - giddyap! +** +** Revision 1.38 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.37 2000/10/23 17:50:47 matt +** adding fds support +** +** Revision 1.36 2000/10/23 15:52:04 matt +** better system handling +** +** Revision 1.35 2000/10/21 19:25:59 matt +** many more cleanups +** +** Revision 1.34 2000/10/10 13:58:13 matt +** stroustrup squeezing his way in the door +** +** Revision 1.33 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.32 2000/09/15 04:58:06 matt +** simplifying and optimizing APU core +** +** Revision 1.31 2000/09/10 23:19:14 matt +** i'm a sloppy coder +** +** Revision 1.30 2000/09/07 01:30:57 matt +** nes6502_init deprecated +** +** Revision 1.29 2000/08/16 03:17:49 matt +** bpb +** +** Revision 1.28 2000/08/16 02:58:19 matt +** changed video interface a wee bit +** +** Revision 1.27 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.26 2000/07/30 04:31:26 matt +** automagic loading of the nofrendo intro +** +** Revision 1.25 2000/07/27 01:16:36 matt +** sorted out the video problems +** +** Revision 1.24 2000/07/26 21:54:53 neil +** eject has to clear the nextfilename and nextsystem +** +** Revision 1.23 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.22 2000/07/25 02:21:36 matt +** safer xxx_destroy calls +** +** Revision 1.21 2000/07/23 16:46:47 matt +** fixed crash in win32 by reodering shutdown calls +** +** Revision 1.20 2000/07/23 15:18:23 matt +** removed unistd.h from includes +** +** Revision 1.19 2000/07/23 00:48:15 neil +** Win32 SDL +** +** Revision 1.18 2000/07/21 13:42:06 neil +** get_options removed, as it should be handled by osd_main +** +** Revision 1.17 2000/07/21 04:53:48 matt +** moved palette calls out of nofrendo.c and into ppu_create +** +** Revision 1.16 2000/07/21 02:40:43 neil +** more main fixes +** +** Revision 1.15 2000/07/21 02:09:07 neil +** new main structure? +** +** Revision 1.14 2000/07/20 17:05:12 neil +** Moved osd_init before setup_video +** +** Revision 1.13 2000/07/11 15:01:05 matt +** moved config.close() into registered atexit() routine +** +** Revision 1.12 2000/07/11 13:35:38 bsittler +** Changed the config API, implemented config file "nofrendo.cfg". The +** GGI drivers use the group [GGI]. Visual= and Mode= keys are understood. +** +** Revision 1.11 2000/07/11 04:32:21 matt +** less magic number nastiness for screen dimensions +** +** Revision 1.10 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.9 2000/07/07 04:39:54 matt +** removed garbage dpp shite +** +** Revision 1.8 2000/07/06 16:48:25 matt +** new video driver +** +** Revision 1.7 2000/07/05 17:26:16 neil +** Moved the externs in nofrendo.c to osd.h +** +** Revision 1.6 2000/06/26 04:55:44 matt +** cleaned up main() +** +** Revision 1.5 2000/06/20 20:41:21 matt +** moved include to top (duh) +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/nofrendo.h b/MCUME_teensy/teensynofrendo/nofrendo.h new file mode 100755 index 0000000..01075a8 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/nofrendo.h @@ -0,0 +1,98 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** nofrendo.h (c) 1998-2000 Matthew Conte (matt@conte.com) +** (c) 2000 Neil Stevens (multivac@fcmail.com) +** +** Note: all architectures should call these functions +** +** $Id: nofrendo.h,v 1.2 2001/04/27 11:10:08 neil Exp $ +*/ + +#ifndef _NOFRENDO_H_ +#define _NOFRENDO_H_ + +#define NOLOOP 1 + +typedef enum +{ + system_unknown, + system_autodetect, + system_nes, + NUM_SUPPORTED_SYSTEMS +} system_t; + +int nofrendo_main(int argc, char *argv[]); + + +extern volatile int nofrendo_ticks; /* system timer ticks */ + +/* osd_main should end with a call to main_loop(). +** Pass filename = NULL if you want to start with the demo rom +*/ +extern int main_loop(const char *filename, system_t type); + +/* These should not be called directly. Use the event interface */ +extern void main_insert(const char *filename, system_t type); +extern void main_eject(void); +extern void main_quit(void); + +#ifdef NOLOOP +extern void nes_step(int skip); +#endif + +#endif /* !_NOFRENDO_H_ */ + +/* +** $Log: nofrendo.h,v $ +** Revision 1.2 2001/04/27 11:10:08 neil +** compile +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.9 2000/11/25 20:26:05 matt +** removed fds "system" +** +** Revision 1.8 2000/11/20 13:22:12 matt +** standardized timer ISR, added nofrendo_ticks +** +** Revision 1.7 2000/11/01 14:15:35 matt +** multi-system event system, or whatever +** +** Revision 1.6 2000/10/25 13:42:02 matt +** strdup - giddyap! +** +** Revision 1.5 2000/10/25 01:23:08 matt +** basic system autodetection +** +** Revision 1.4 2000/10/23 15:52:04 matt +** better system handling +** +** Revision 1.3 2000/07/31 04:28:46 matt +** one million cleanups +** +** Revision 1.2 2000/07/27 01:16:36 matt +** sorted out the video problems +** +** Revision 1.1 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** +*/ diff --git a/MCUME_teensy/teensynofrendo/noftypes.h b/MCUME_teensy/teensynofrendo/noftypes.h new file mode 100644 index 0000000..7e3c67c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/noftypes.h @@ -0,0 +1,121 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** types.h +** +** Data type definitions +** $Id: noftypes.h,v 1.1 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _TYPES_H_ +#define _TYPES_H_ + + + +/* Define this if running on little-endian (x86) systems */ +#define HOST_LITTLE_ENDIAN + +#ifdef __GNUC__ +#define INLINE static inline +#define ZERO_LENGTH 0 +#elif defined(WIN32) +#define INLINE static __inline +#define ZERO_LENGTH 0 +#else /* crapintosh? */ +#define INLINE static +#define ZERO_LENGTH 1 +#endif + +/* quell stupid compiler warnings */ +#define UNUSED(x) ((x) = (x)) + +typedef signed char int8; +typedef signed short int16; +typedef signed int int32; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; + +#ifndef __cplusplus +typedef enum +{ + false = 0, + true = 1 +} bool; + +#ifndef NULL +#define NULL ((void *) 0) +#endif +#endif /* !__cplusplus */ + +#include "log.h" + +#ifdef NOFRENDO_DEBUG + +#define ASSERT(expr) log_assert((int) (expr), __LINE__, __FILE__, NULL) +#define ASSERT_MSG(msg) log_assert(false, __LINE__, __FILE__, (msg)) + +#else /* !NOFRENDO_DEBUG */ + +#define ASSERT(expr) +#define ASSERT_MSG(msg) + +#endif /* !NOFRENDO_DEBUG */ + +#endif /* _TYPES_H_ */ + +/* +** $Log: noftypes.h,v $ +** Revision 1.1 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.15 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.14 2000/10/17 03:22:16 matt +** safe UNUSED +** +** Revision 1.13 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.12 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.11 2000/08/11 01:44:05 matt +** cosmeses +** +** Revision 1.10 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.9 2000/07/24 04:30:17 matt +** ASSERTs should have been calling log_shutdown +** +** Revision 1.8 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/07/04 04:46:44 matt +** moved INLINE define from osd.h +** +** Revision 1.6 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/osd.h b/MCUME_teensy/teensynofrendo/osd.h new file mode 100755 index 0000000..06d2677 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/osd.h @@ -0,0 +1,188 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** osd.h +** +** O/S dependent routine defintions (must be customized) +** $Id: osd.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _OSD_H_ +#define _OSD_H_ + +#include +#ifndef PATH_MAX +#define PATH_MAX 512 +#endif /* PATH_MAX */ + +#ifdef __GNUC__ +#define __PACKED__ __attribute__ ((packed)) + +#ifdef __DJGPP__ +#define PATH_SEP '\\' +#else /* !__DJGPP__ */ +#define PATH_SEP '/' +#endif /* !__DJGPP__ */ + +#elif defined(WIN32) +#define __PACKED__ +#define PATH_SEP '\\' +#else /* !defined(WIN32) && !__GNUC__ */ +#define __PACKED__ +#define PATH_SEP ':' +#endif /* !defined(WIN32) && !__GNUC__ */ + +#if !defined(WIN32) && !defined(__DJGPP__) +#define stricmp strcasecmp +#endif /* !WIN32 && !__DJGPP__ */ + + +extern void osd_setsound(void (*playfunc)(void *buffer, int size)); + + +#ifndef NSF_PLAYER +#include "noftypes.h" +#include "vid_drv.h" + +typedef struct vidinfo_s +{ + int default_width, default_height; + viddriver_t *driver; +} vidinfo_t; + +typedef struct sndinfo_s +{ + int sample_rate; + int bps; +} sndinfo_t; + +/* get info */ +extern void osd_getvideoinfo(vidinfo_t *info); +extern void osd_getsoundinfo(sndinfo_t *info); + +/* init / shutdown */ +extern int osd_init(void); +extern void osd_shutdown(void); +extern int osd_main(int argc, char *argv[]); + +extern int osd_installtimer(int frequency, void *func, int funcsize, + void *counter, int countersize); + +/* filename manipulation */ +extern void osd_fullname(char *fullname, const char *shortname); +extern char *osd_newextension(char *string, char *ext); + +/* input */ +extern void osd_getinput(void); +extern void osd_getmouse(int *x, int *y, int *button); + +/* build a filename for a snapshot, return -ve for error */ +extern int osd_makesnapname(char *filename, int len); + +#endif /* !NSF_PLAYER */ + +#endif /* _OSD_H_ */ + +/* +** $Log: osd.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.30 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.29 2000/11/05 06:23:41 matt +** thinlib spawns changes +** +** Revision 1.28 2000/10/22 19:15:39 matt +** more sane timer ISR / autoframeskip +** +** Revision 1.27 2000/10/21 19:25:59 matt +** many more cleanups +** +** Revision 1.26 2000/10/10 13:03:53 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.25 2000/10/02 15:01:12 matt +** frag size has been removed +** +** Revision 1.24 2000/08/31 02:40:18 matt +** fixed some crap +** +** Revision 1.23 2000/08/16 02:57:14 matt +** changed video interface a wee bit +** +** Revision 1.22 2000/08/11 01:46:30 matt +** new OSD sound information interface +** +** Revision 1.21 2000/08/04 15:01:32 neil +** BeOS cleanups +** +** Revision 1.20 2000/08/04 14:36:14 neil +** BeOS is working.. kinda +** +** Revision 1.19 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.18 2000/07/23 16:21:35 neil +** neither stricmp nor strcasecmp works everywhere +** +** Revision 1.17 2000/07/23 15:17:40 matt +** osd_getfragsize +** +** Revision 1.16 2000/07/21 13:37:20 neil +** snap filenames are OS-dependent +** +** Revision 1.15 2000/07/21 04:58:37 matt +** new osd_main structure +** +** Revision 1.14 2000/07/21 04:26:15 matt +** added some nasty externs +** +** Revision 1.13 2000/07/21 02:42:45 matt +** merged osd_getinput and osd_gethostinput +** +** Revision 1.12 2000/07/19 13:10:35 neil +** PATH_MAX +** +** Revision 1.11 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.10 2000/07/06 16:48:25 matt +** new video driver +** +** Revision 1.9 2000/07/05 17:26:16 neil +** Moved the externs in nofrendo.c to osd.h +** +** Revision 1.8 2000/07/04 23:07:06 matt +** djgpp path separator bugfix +** +** Revision 1.7 2000/07/04 04:45:33 matt +** moved INLINE define into types.h +** +** Revision 1.6 2000/06/29 16:06:18 neil +** Wrapped DOS-specific headers in an ifdef +** +** Revision 1.5 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/teensynofrendo.ino b/MCUME_teensy/teensynofrendo/teensynofrendo.ino new file mode 100644 index 0000000..3c44a41 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/teensynofrendo.ino @@ -0,0 +1,276 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "nes_emu.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif + + diff --git a/MCUME_teensy/teensynofrendo/tft_t_dma.cpp b/MCUME_teensy/teensynofrendo/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensynofrendo/tft_t_dma_config.h b/MCUME_teensy/teensynofrendo/tft_t_dma_config.h new file mode 100644 index 0000000..9f12cd5 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +//#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensynofrendo/version.h b/MCUME_teensy/teensynofrendo/version.h new file mode 100755 index 0000000..56e68f7 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/version.h @@ -0,0 +1,65 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** version.h +** +** Program name / version definitions +** $Id: version.h,v 1.2 2001/05/05 16:50:49 neil Exp $ +*/ + +#ifndef _VERSION_H_ +#define _VERSION_H_ + +#ifdef NSF_PLAYER +#define APP_STRING "Nosefart" +#else +#define APP_STRING "Nofrendo" +#endif /* NSF_PLAYER */ + +#define APP_VERSION "2.0" + +#endif /* _VERSION_H_ */ + +/* +** $Log: version.h,v $ +** Revision 1.2 2001/05/05 16:50:49 neil +** preparing for distribution +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.9 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.8 2000/07/17 01:52:28 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/07/04 04:46:55 matt +** updated version number +** +** Revision 1.6 2000/06/20 00:03:39 matt +** updated for 1.91 +** +** Revision 1.5 2000/06/09 17:01:56 matt +** changed version to 1.90 +** +** Revision 1.4 2000/06/09 15:12:25 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/vid_drv.c b/MCUME_teensy/teensynofrendo/vid_drv.c new file mode 100644 index 0000000..8e7aaa9 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/vid_drv.c @@ -0,0 +1,559 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vid_drv.c +** +** Video driver +** $Id: vid_drv.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include +#include "noftypes.h" +#include "log.h" +#include "bitmap.h" +#include "vid_drv.h" +#include "osd.h" + +/* hardware surface */ +static bitmap_t *screen = NULL; + +/* primary / backbuffer surfaces */ +static bitmap_t *primary_buffer = NULL; //, *back_buffer = NULL; + +static viddriver_t *driver = NULL; + +/* fast automagic loop unrolling */ +#define DUFFS_DEVICE(transfer, count) \ +{ \ + register int n = (count + 7) / 8; \ + switch (count % 8) \ + { \ + case 0: do { { transfer; } \ + case 7: { transfer; } \ + case 6: { transfer; } \ + case 5: { transfer; } \ + case 4: { transfer; } \ + case 3: { transfer; } \ + case 2: { transfer; } \ + case 1: { transfer; } \ + } while (--n > 0); \ + } \ +} + +/* some system dependent replacement routines (for speed) */ +INLINE int vid_memcmp(const void *p1, const void *p2, int len) +{ + /* check for 32-bit aligned data */ + if (0 == (((uint32) p1 & 3) | ((uint32) p2 & 3))) + { + uint32 *dw1 = (uint32 *) p1; + uint32 *dw2 = (uint32 *) p2; + + len >>= 2; + + DUFFS_DEVICE(if (*dw1++ != *dw2++) return -1, len); + } + else + /* fall back to 8-bit compares */ + { + uint8 *b1 = (uint8 *) p1; + uint8 *b2 = (uint8 *) p2; + + DUFFS_DEVICE(if (*b1++ != *b2++) return -1, len); + } + + return 0; +} + +/* super-dooper assembly memcpy (thanks, SDL!) */ +#if defined(__GNUC__) && defined(i386) +#define vid_memcpy(dest, src, len) \ +{ \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + " cld \n" \ + " rep \n" \ + " movsl \n" \ + " testb $2,%b4 \n" \ + " je 1f \n" \ + " movsw \n" \ + "1: \n" \ + " testb $1,%b4 \n" \ + " je 2f \n" \ + " movsb \n" \ + "2: \n" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" ((len)/4), "q" (len), "1" (dest), "2" (src) \ + : "memory"); \ +} +#else /* !(defined(__GNUC__) && defined(i386)) */ +INLINE void vid_memcpy(void *dest, const void *src, int len) +{ + uint32 *s = (uint32 *) src; + uint32 *d = (uint32 *) dest; + + ASSERT(0 == ((len & 3) | ((uint32) src & 3) | ((uint32) dest & 3))); + len >>= 2; + + DUFFS_DEVICE(*d++ = *s++, len); +} +#endif /* !(defined(__GNUC__) && defined(i386)) */ + + +extern bitmap_t *lock_write(void); +/* TODO: any way to remove this filth (GUI needs it)? */ +bitmap_t *vid_getbuffer(void) +{ + return primary_buffer; +} + +void vid_setpalette(rgb_t *p) +{ + ASSERT(driver); + ASSERT(p); + + driver->set_palette(p); +} + +/* blits a bitmap onto primary buffer */ +void vid_blit(bitmap_t *bitmap, int src_x, int src_y, int dest_x, int dest_y, + int width, int height) +{ + int bitmap_pitch, primary_pitch; + uint8 *dest_ptr, *src_ptr; + + ASSERT(bitmap); + + /* clip to source */ + if (src_y >= bitmap->height) + return; + if (src_y + height > bitmap->height) + height = bitmap->height - src_y; + + if (src_x >= bitmap->width) + return; + if (src_x + width > bitmap->width) + width = bitmap->width - src_x; + + /* clip to dest */ + if (dest_y + height <= 0) + { + return; + } + else if (dest_y < 0) + { + height += dest_y; + src_y -= dest_y; + dest_y = 0; + } + + if (dest_y >= primary_buffer->height) + return; + if (dest_y + height > primary_buffer->height) + height = primary_buffer->height - dest_y; + + if (dest_x + width <= 0) + { + return; + } + else if (dest_x < 0) + { + width += dest_x; + src_x -= dest_x; + dest_x = 0; + } + + if (dest_x >= primary_buffer->width) + return; + if (dest_x + width > primary_buffer->width) + width = primary_buffer->width - dest_x; + + src_ptr = bitmap->line[src_y] + src_x; + dest_ptr = primary_buffer->line[dest_y] + dest_x; + + /* Avoid doing unnecessary indexed lookups */ + bitmap_pitch = bitmap->pitch; + primary_pitch = primary_buffer->pitch; + + /* do the copy */ + while (height--) + { + vid_memcpy(dest_ptr, src_ptr, width); + src_ptr += bitmap_pitch; + dest_ptr += primary_pitch; + } +} + +static void vid_blitscreen(int num_dirties, rect_t *dirty_rects) +{ + int src_x, src_y, dest_x, dest_y; + int blit_width, blit_height; + + screen = driver->lock_write(); + + /* center in y direction */ + if (primary_buffer->height <= screen->height) + { + src_y = 0; + blit_height = primary_buffer->height; + dest_y = (screen->height - blit_height) >> 1; + } + else + { + src_y = (primary_buffer->height - screen->height) >> 1; + blit_height = screen->height; + dest_y = 0; + } + + /* and in x */ + if (primary_buffer->width <= screen->width) + { + src_x = 0; + blit_width = primary_buffer->width; + dest_x = (screen->width - blit_width) >> 1; + } + else + { + src_x = (primary_buffer->width - screen->width) >> 1; + blit_width = screen->width; + dest_x = 0; + } + + /* should we just copy the entire screen? */ + if (-1 == num_dirties) + { + uint8 *dest, *src; + + src = primary_buffer->line[src_y] + src_x; + dest = screen->line[dest_y] + dest_x; + + while (blit_height--) + { + vid_memcpy(dest, src, primary_buffer->width); + src += primary_buffer->pitch; + dest += screen->pitch; + } + } + else + { + /* we need to blit just a bunch of dirties */ + int i, j, height; + rect_t *rects = dirty_rects; + + for (i = 0; i < num_dirties && blit_height; i++) + { + height = rects->h; + if (blit_height < height) + height = blit_height; + + j = 0; + DUFFS_DEVICE( + { + vid_memcpy(screen->line[dest_y + rects->y + j] + rects->x + dest_x, + primary_buffer->line[src_y + rects->y + j] + rects->x + src_x, + rects->w); + j++; + blit_height--; + }, height); + + rects++; + } + } + + if (driver->free_write) + driver->free_write(num_dirties, dirty_rects); +} + +/* TODO: this code is sickly */ + +#define CHUNK_WIDTH 256 +#define CHUNK_HEIGHT 16 +#define MAX_DIRTIES ((256 / CHUNK_WIDTH) * (240 / CHUNK_HEIGHT)) +#define DIRTY_CUTOFF ((3 * MAX_DIRTIES) / 4) + +#if 0 +INLINE int calc_dirties(rect_t *list) +{ + bool dirty; + int num_dirties = 0; + int i = 0, j, line_offset = 0; + int iterations = primary_buffer->height / CHUNK_HEIGHT; + + for (i = 0; i < iterations; i++) + { + dirty = false; + + j = line_offset; + DUFFS_DEVICE( + { + if (vid_memcmp(back_buffer->line[j], primary_buffer->line[j], + CHUNK_WIDTH)) + { + dirty = true; + break; + } + + j++; + }, CHUNK_HEIGHT); + + if (true == dirty) + { + list->h = CHUNK_HEIGHT; + list->w = CHUNK_WIDTH; + list->x = 0; + list->y = line_offset; + list++; + + /* totally arbitrary at this point */ + if (++num_dirties > DIRTY_CUTOFF) + return -1; + } + + line_offset += CHUNK_HEIGHT; + } + + return num_dirties; +} +#endif + +void vid_flush(void) +{ + bitmap_t *temp; + int num_dirties; + rect_t dirty_rects[MAX_DIRTIES]; + + ASSERT(driver); + + if (true == driver->invalidate) + { + driver->invalidate = false; + num_dirties = -1; + } + else + { + //num_dirties = calc_dirties(dirty_rects); + num_dirties = -1; + } + + if (driver->custom_blit) + driver->custom_blit(primary_buffer, num_dirties, dirty_rects); + else + vid_blitscreen(num_dirties, dirty_rects); + + /* Swap pointers to the main/back buffers */ +// temp = back_buffer; +// back_buffer = primary_buffer; +// primary_buffer = temp; +} + +/* emulated machine tells us which resolution it wants */ +int vid_setmode(int width, int height) +{ + if (NULL != primary_buffer) + bmp_destroy(&primary_buffer); +// if (NULL != back_buffer) +// bmp_destroy(&back_buffer); + primary_buffer = bmp_create(width, height, 0); /* no overdraw */ + if (NULL == primary_buffer) + return -1; + + return 0; +} + +static int vid_findmode(int width, int height, viddriver_t *osd_driver) +{ + if (osd_driver->init(width, height)) + { + driver = NULL; + return -1; /* mode not available! */ + } + + /* we got our driver */ + driver = osd_driver; + + /* re-assert dimensions, clear the surface */ + screen = driver->lock_write(); + + /* release surface */ + if (driver->free_write) + driver->free_write(-1, NULL); + + log_printf("video driver: %s at %dx%d\n", driver->name, + screen->width, screen->height); + + return 0; +} + +/* This is the interface to the drivers, used in nofrendo.c */ +int vid_init(int width, int height, viddriver_t *osd_driver) +{ + if (vid_findmode(width, height, osd_driver)) + { + log_printf("video initialization failed for %s at %dx%d\n", + osd_driver->name, width, height); + return -1; + } + log_printf("vid_init done\n"); + + return 0; +} + +void vid_shutdown(void) +{ + if (NULL == driver) + return; + + if (NULL != primary_buffer) + bmp_destroy(&primary_buffer); +#if 0 + if (NULL != back_buffer) + bmp_destroy(&back_buffer); +#endif + + if (driver && driver->shutdown) + driver->shutdown(); +} + + +/* +** $Log: vid_drv.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.40 2000/11/25 20:26:42 matt +** not much +** +** Revision 1.39 2000/11/16 14:27:27 matt +** even more crash-proofness +** +** Revision 1.38 2000/11/16 14:11:18 neil +** Better *not* to crash in case of catastrophic failure in the driver +** +** Revision 1.37 2000/11/13 00:55:16 matt +** no dirties seems to be faster (!?!?) +** +** Revision 1.36 2000/11/06 05:16:18 matt +** minor clipping bug +** +** Revision 1.35 2000/11/06 02:16:26 matt +** cleanups +** +** Revision 1.34 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.33 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.32 2000/11/05 06:23:41 matt +** thinlib spawns changes +** +** Revision 1.31 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.30 2000/10/10 13:03:53 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.29 2000/10/08 17:58:23 matt +** lock_read() should not allow us to clear the bitmap +** +** Revision 1.28 2000/09/18 02:06:48 matt +** -pedantic is your friend +** +** Revision 1.27 2000/08/16 02:53:05 matt +** changed init() interface a wee bit +** +** Revision 1.26 2000/08/14 02:45:59 matt +** fixed nasty bug in vid_blitscreen +** +** Revision 1.24 2000/08/11 01:44:37 matt +** clipping bugfix +** +** Revision 1.23 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.22 2000/07/28 07:25:49 neil +** Video driver has an invalidate flag, telling vid_drv not to calculate dirties for the next frame +** +** Revision 1.21 2000/07/28 03:51:45 matt +** lock_read used instead of lock_write in some places +** +** Revision 1.20 2000/07/28 01:24:05 matt +** dirty rectangle support +** +** Revision 1.19 2000/07/27 23:49:52 matt +** no more getmode +** +** Revision 1.18 2000/07/27 04:30:37 matt +** change to get_mode api +** +** Revision 1.17 2000/07/27 04:05:58 matt +** changed place where name goes +** +** Revision 1.16 2000/07/27 01:16:22 matt +** api changes for new main and dirty rects +** +** Revision 1.15 2000/07/26 21:36:13 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.14 2000/07/24 04:33:57 matt +** skeleton of dirty rectangle code in place +** +** Revision 1.13 2000/07/23 14:35:39 matt +** cleanups +** +** Revision 1.12 2000/07/18 19:41:26 neil +** use screen->pitch in blitscreen, not screen_width +** +** Revision 1.11 2000/07/11 04:30:16 matt +** overdraw unnecessary! +** +** Revision 1.10 2000/07/10 19:07:57 matt +** added custom clear() member call to video driver +** +** Revision 1.9 2000/07/10 03:06:49 matt +** my dependency file is broken... *snif* +** +** Revision 1.8 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.7 2000/07/10 01:03:20 neil +** New video scheme allows for custom blitters to be determined by the driver at runtime +** +** Revision 1.6 2000/07/09 03:34:46 matt +** temporary cleanup +** +** Revision 1.5 2000/07/08 23:48:29 neil +** Another assumption GGI kills: pitch == width for hardware bitmaps +** +** Revision 1.4 2000/07/07 20:18:03 matt +** added overdraw, fixed some bugs in blitters +** +** Revision 1.3 2000/07/07 18:33:55 neil +** no need to lock for reading just to get the dimensions +** +** Revision 1.2 2000/07/07 18:11:37 neil +** Generalizing the video driver +** +** Revision 1.1 2000/07/06 16:48:47 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/vid_drv.h b/MCUME_teensy/teensynofrendo/vid_drv.h new file mode 100755 index 0000000..e97ed03 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/vid_drv.h @@ -0,0 +1,145 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vid_drv.h +** +** Video driver +** $Id: vid_drv.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _VID_DRV_H_ +#define _VID_DRV_H_ + +#include "bitmap.h" + +typedef struct viddriver_s +{ + /* name of driver */ + const char *name; + /* init function - return 0 on success, nonzero on failure */ + int (*init)(int width, int height); + /* clean up after driver (can be NULL) */ + void (*shutdown)(void); + /* set a video mode - return 0 on success, nonzero on failure */ + int (*set_mode)(int width, int height); + /* set up a palette */ + void (*set_palette)(rgb_t *palette); + /* custom bitmap clear (can be NULL) */ + void (*clear)(uint8 color); + /* lock surface for writing (required) */ + bitmap_t *(*lock_write)(void); + /* free a locked surface (can be NULL) */ + void (*free_write)(int num_dirties, rect_t *dirty_rects); + /* custom blitter - num_dirties == -1 if full blit required */ + void (*custom_blit)(bitmap_t *primary, int num_dirties, + rect_t *dirty_rects); + /* immediately invalidate the buffer, i.e. full redraw */ + bool invalidate; +} viddriver_t; + +/* TODO: filth */ +extern bitmap_t *vid_getbuffer(void); + +extern int vid_init(int width, int height, viddriver_t *osd_driver); +extern void vid_shutdown(void); + +extern int vid_setmode(int width, int height); +extern void vid_setpalette(rgb_t *pal); + +extern void vid_blit(bitmap_t *bitmap, int src_x, int src_y, int dest_x, + int dest_y, int blit_width, int blit_height); +extern void vid_flush(void); + +#endif /* _VID_DRV_H_ */ + +/* +** $Log: vid_drv.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.22 2000/11/05 22:53:13 matt +** only one video driver per system, please +** +** Revision 1.21 2000/11/05 16:37:18 matt +** rolled rgb.h into bitmap.h +** +** Revision 1.20 2000/11/05 06:23:41 matt +** thinlib spawns changes +** +** Revision 1.19 2000/10/10 13:58:14 matt +** stroustrup squeezing his way in the door +** +** Revision 1.18 2000/10/10 13:03:54 matt +** Mr. Clean makes a guest appearance +** +** Revision 1.17 2000/08/16 02:53:04 matt +** changed init() interface a wee bit +** +** Revision 1.16 2000/07/31 04:28:47 matt +** one million cleanups +** +** Revision 1.15 2000/07/28 07:25:49 neil +** Video driver has an invalidate flag, telling vid_drv not to calculate dirties for the next frame +** +** Revision 1.14 2000/07/27 23:49:52 matt +** no more getmode +** +** Revision 1.13 2000/07/27 04:30:37 matt +** change to get_mode api +** +** Revision 1.12 2000/07/27 04:08:04 matt +** char * -> const char * +** +** Revision 1.11 2000/07/27 04:05:58 matt +** changed place where name goes +** +** Revision 1.10 2000/07/27 01:16:22 matt +** api changes for new main and dirty rects +** +** Revision 1.9 2000/07/26 21:36:14 neil +** Big honkin' change -- see the mailing list +** +** Revision 1.8 2000/07/24 04:33:57 matt +** skeleton of dirty rectangle code in place +** +** Revision 1.7 2000/07/10 19:07:57 matt +** added custom clear() member call to video driver +** +** Revision 1.6 2000/07/10 03:04:15 matt +** removed scanlines, backbuffer from custom blit +** +** Revision 1.5 2000/07/10 01:03:20 neil +** New video scheme allows for custom blitters to be determined by the driver at runtime +** +** Revision 1.4 2000/07/09 03:34:47 matt +** temporary cleanup +** +** Revision 1.3 2000/07/07 20:17:35 matt +** better custom blitting support +** +** Revision 1.2 2000/07/07 18:11:38 neil +** Generalizing the video driver +** +** Revision 1.1 2000/07/06 16:48:47 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/vrcvisnd.c b/MCUME_teensy/teensynofrendo/vrcvisnd.c new file mode 100755 index 0000000..ca3d95c --- /dev/null +++ b/MCUME_teensy/teensynofrendo/vrcvisnd.c @@ -0,0 +1,278 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vrcvisnd.c +** +** VRCVI sound hardware emulation +** $Id: vrcvisnd.c,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#include "noftypes.h" +#include "vrcvisnd.h" +#include "nes_apu.h" + +typedef struct vrcvirectangle_s +{ + bool enabled; + + uint8 reg[3]; + + float accum; + uint8 adder; + + int32 freq; + int32 volume; + uint8 duty_flip; +} vrcvirectangle_t; + +typedef struct vrcvisawtooth_s +{ + bool enabled; + + uint8 reg[3]; + + float accum; + uint8 adder; + uint8 output_acc; + + int32 freq; + uint8 volume; +} vrcvisawtooth_t; + +typedef struct vrcvisnd_s +{ + vrcvirectangle_t rectangle[2]; + vrcvisawtooth_t saw; + float incsize; +} vrcvisnd_t; + + +static vrcvisnd_t vrcvi; + +/* VRCVI rectangle wave generation */ +static int32 vrcvi_rectangle(vrcvirectangle_t *chan) +{ + /* reg0: 0-3=volume, 4-6=duty cycle + ** reg1: 8 bits of freq + ** reg2: 0-3=high freq, 7=enable + */ + + chan->accum -= vrcvi.incsize; /* # of clocks per wave cycle */ + while (chan->accum < 0) + { + chan->accum += chan->freq; + chan->adder = (chan->adder + 1) & 0x0F; + } + + /* return if not enabled */ + if (false == chan->enabled) + return 0; + + if (chan->adder < chan->duty_flip) + return -(chan->volume); + else + return chan->volume; +} + +/* VRCVI sawtooth wave generation */ +static int32 vrcvi_sawtooth(vrcvisawtooth_t *chan) +{ + /* reg0: 0-5=phase accumulator bits + ** reg1: 8 bits of freq + ** reg2: 0-3=high freq, 7=enable + */ + + chan->accum -= vrcvi.incsize; /* # of clocks per wav cycle */ + while (chan->accum < 0) + { + chan->accum += chan->freq; + chan->output_acc += chan->volume; + + chan->adder++; + if (7 == chan->adder) + { + chan->adder = 0; + chan->output_acc = 0; + } + } + + /* return if not enabled */ + if (false == chan->enabled) + return 0; + + return (chan->output_acc >> 3) << 9; +} + +/* mix vrcvi sound channels together */ +static int32 vrcvi_process(void) +{ + int32 output; + + output = vrcvi_rectangle(&vrcvi.rectangle[0]); + output += vrcvi_rectangle(&vrcvi.rectangle[1]); + output += vrcvi_sawtooth(&vrcvi.saw); + + return output; +} + +/* write to registers */ +static void vrcvi_write(uint32 address, uint8 value) +{ + int chan = (address >> 12) - 9; + + switch (address & 0xB003) + { + case 0x9000: + case 0xA000: + vrcvi.rectangle[chan].reg[0] = value; + vrcvi.rectangle[chan].volume = (value & 0x0F) << 8; + vrcvi.rectangle[chan].duty_flip = (value >> 4) + 1; + break; + + case 0x9001: + case 0xA001: + vrcvi.rectangle[chan].reg[1] = value; + vrcvi.rectangle[chan].freq = ((vrcvi.rectangle[chan].reg[2] & 0x0F) << 8) + value + 1; + break; + + case 0x9002: + case 0xA002: + vrcvi.rectangle[chan].reg[2] = value; + vrcvi.rectangle[chan].freq = ((value & 0x0F) << 8) + vrcvi.rectangle[chan].reg[1] + 1; + vrcvi.rectangle[chan].enabled = (value & 0x80) ? true : false; + break; + + case 0xB000: + vrcvi.saw.reg[0] = value; + vrcvi.saw.volume = value & 0x3F; + break; + + case 0xB001: + vrcvi.saw.reg[1] = value; + vrcvi.saw.freq = (((vrcvi.saw.reg[2] & 0x0F) << 8) + value + 1) << 1; + break; + + case 0xB002: + vrcvi.saw.reg[2] = value; + vrcvi.saw.freq = (((value & 0x0F) << 8) + vrcvi.saw.reg[1] + 1) << 1; + vrcvi.saw.enabled = (value & 0x80) ? true : false; + break; + + default: + break; + } +} + +/* reset state of vrcvi sound channels */ +static void vrcvi_reset(void) +{ + int i; + apu_t apu; + + /* get the phase period from the apu */ + apu_getcontext(&apu); + vrcvi.incsize = apu.cycle_rate; + + /* preload regs */ + for (i = 0; i < 3; i++) + { + vrcvi_write(0x9000 + i, 0); + vrcvi_write(0xA000 + i, 0); + vrcvi_write(0xB000 + i, 0); + } +} + +static apu_memwrite vrcvi_memwrite[] = +{ + { 0x9000, 0x9002, vrcvi_write }, /* vrc6 */ + { 0xA000, 0xA002, vrcvi_write }, + { 0xB000, 0xB002, vrcvi_write }, + { -1, -1, NULL } +}; + +apuext_t vrcvi_ext = +{ + NULL, /* no init */ + NULL, /* no shutdown */ + vrcvi_reset, + vrcvi_process, + NULL, /* no reads */ + vrcvi_memwrite +}; + +/* +** $Log: vrcvisnd.c,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.2 2000/11/05 22:21:00 matt +** help me! +** +** Revision 1.1 2000/10/24 12:20:00 matt +** changed directory structure +** +** Revision 1.17 2000/10/10 13:58:18 matt +** stroustrup squeezing his way in the door +** +** Revision 1.16 2000/10/03 11:56:20 matt +** better support for optional sound ext routines +** +** Revision 1.15 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.14 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.13 2000/09/15 04:58:07 matt +** simplifying and optimizing APU core +** +** Revision 1.12 2000/07/30 04:32:59 matt +** no more apu_getcyclerate hack +** +** Revision 1.11 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.10 2000/07/06 11:42:41 matt +** forgot to remove FDS register range +** +** Revision 1.9 2000/07/04 04:51:41 matt +** cleanups +** +** Revision 1.8 2000/07/03 02:18:53 matt +** much better external module exporting +** +** Revision 1.7 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.6 2000/06/20 00:08:58 matt +** changed to driver based API +** +** Revision 1.5 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.4 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensynofrendo/vrcvisnd.h b/MCUME_teensy/teensynofrendo/vrcvisnd.h new file mode 100755 index 0000000..136cbc2 --- /dev/null +++ b/MCUME_teensy/teensynofrendo/vrcvisnd.h @@ -0,0 +1,70 @@ +/* +** Nofrendo (c) 1998-2000 Matthew Conte (matt@conte.com) +** +** +** This program is free software; you can redistribute it and/or +** modify it under the terms of version 2 of the GNU Library General +** Public License as published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** Library General Public License for more details. To obtain a +** copy of the GNU Library General Public License, write to the Free +** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +** +** Any permitted reproduction of these routines, in whole or in part, +** must bear this legend. +** +** +** vrcvisnd.h +** +** VRCVI (Konami MMC) sound hardware emulation header +** $Id: vrcvisnd.h,v 1.2 2001/04/27 14:37:11 neil Exp $ +*/ + +#ifndef _VRCVISND_H_ +#define _VRCVISND_H_ + +#include "nes_apu.h" + +extern apuext_t vrcvi_ext; + +#endif /* _VRCVISND_H_ */ + +/* +** $Log: vrcvisnd.h,v $ +** Revision 1.2 2001/04/27 14:37:11 neil +** wheeee +** +** Revision 1.1 2001/04/27 12:54:40 neil +** blah +** +** Revision 1.1.1.1 2001/04/27 07:03:54 neil +** initial +** +** Revision 1.1 2000/10/24 12:20:00 matt +** changed directory structure +** +** Revision 1.10 2000/09/27 12:26:03 matt +** changed sound accumulators back to floats +** +** Revision 1.9 2000/09/15 13:38:40 matt +** changes for optimized apu core +** +** Revision 1.8 2000/07/17 01:52:31 matt +** made sure last line of all source files is a newline +** +** Revision 1.7 2000/06/20 04:06:16 matt +** migrated external sound definition to apu module +** +** Revision 1.6 2000/06/20 00:08:58 matt +** changed to driver based API +** +** Revision 1.5 2000/06/09 16:49:02 matt +** removed all floating point from sound generation +** +** Revision 1.4 2000/06/09 15:12:28 matt +** initial revision +** +*/ diff --git a/MCUME_teensy/teensyo2em/.DS_Store b/MCUME_teensy/teensyo2em/.DS_Store new file mode 100644 index 0000000..f7a8f99 Binary files /dev/null and b/MCUME_teensy/teensyo2em/.DS_Store differ diff --git a/MCUME_teensy/teensyo2em/AudioPlaySystem.cpp b/MCUME_teensy/teensyo2em/AudioPlaySystem.cpp new file mode 100644 index 0000000..8fea18d --- /dev/null +++ b/MCUME_teensy/teensyo2em/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensyo2em/AudioPlaySystem.h b/MCUME_teensy/teensyo2em/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensyo2em/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensyo2em/Oddemu.c b/MCUME_teensy/teensyo2em/Oddemu.c new file mode 100644 index 0000000..7f2df59 --- /dev/null +++ b/MCUME_teensy/teensyo2em/Oddemu.c @@ -0,0 +1,208 @@ + +/**************************************************************************** +* Module name : oddemu +* Description : Library SMSEMU +* Author : J-M Harvengt +* History : 14-07-97 Creation +****************************************************************************/ +#include "vmachine.h" +#include "vdc.h" +#include "oddemu.h" + +#include "emuapi.h" + +/**************************************************************************** +* Local macros / typedefs +****************************************************************************/ +#define MAX_ROM_SIZE 8192 //16384 + +/**************************************************************************** +* Local procedures definition +****************************************************************************/ + + +/**************************************************************************** +* Local data +****************************************************************************/ +#define MAXC 1024 +static char * bios=0; //[MAXC]; +static char * scshot=0; //[MAXC]; +static char * lorom=0; //[MAX_ROM_SIZE]; + + +/**************************************************************************** +* Global data +****************************************************************************/ + +/**************************************************************************** +* Local procedures +****************************************************************************/ + +/**************************************************************************** +* Exported procedures +****************************************************************************/ +void odd_Init(void) +{ + if (bios == 0) bios = (char *)emu_Malloc(MAXC); + if (scshot == 0) scshot = (char *)emu_Malloc(MAXC); + if (lorom == 0) lorom = (char *)emu_Malloc(MAX_ROM_SIZE); + + app_data.debug = 0; + app_data.stick[0] = 0; + app_data.stick[1] = 1; + app_data.bank = 0; + app_data.limit = 1; + app_data.sound_en = 1; + app_data.speed = 100; + app_data.wsize = 1; + app_data.fullscreen = 0; + app_data.scanlines = 0; + app_data.voice = 1; + app_data.window_title = "O2EM v"; + app_data.svolume = 200; + app_data.vvolume = 100; + app_data.filter = 0; + app_data.exrom = 0; + app_data.crc = 0; + app_data.scshot = scshot; + app_data.euro = 0; + app_data.openb = 0; +} + + +static void load_bios( char *biosname) +{ + static char s[MAXC+10]; + unsigned long crc; + + emu_LoadFile(biosname,&rom1[0],1024); + + memcpy(&rom2[0],&rom1[0],1024); + memcpy(&rom3[0],&rom1[0],1024); + memcpy(&rom4[0],&rom1[0],1024); + + crc = crc32_buf(rom1,1024); + + if (crc==0x8016A315) + emu_printf("Odyssey2 bios ROM loaded\n"); + else if (crc==0xE20A9F41) + emu_printf("Videopac+ G7400 bios ROM loaded\n"); + else + emu_printf("Bios ROM loaded (unknown version)\n"); +} + + +static void load_cart(char *file) +{ + long l; + + l = emu_LoadFile(file,&lorom[0],MAX_ROM_SIZE); + + app_data.crc = crc32_buf(lorom, l); // crc32_file(file); + + if (app_data.crc == 0xAFB23F89) app_data.exrom = 1; /* Musician */ + if (app_data.crc == 0x3BFEF56B) app_data.exrom = 1; /* Four in 1 Row! */ + + if (((app_data.crc == 0x975AB8DA) || (app_data.crc == 0xE246A812)) && (!app_data.debug)) { + emu_printf("Error: file is an incomplete ROM dump\n"); + } + + if (l < 2049) { + app_data.bank=1; + memcpy(&rom1[1024],&lorom[0],l); + memcpy(&rom1[3072],&rom1[2048],1024); /* simulate missing A10 */ + rom=rom1; + emu_printf("2K"); + } else if (l == 3072) { + app_data.bank=1; + memcpy(&rom1[1024],&lorom[0],3072); + rom=rom1; + emu_printf("3K"); + } else if (l == 4096) { + if (app_data.exrom) { + app_data.bank=1; + memcpy(&extROM[0],&lorom[0],1024); + memcpy(&rom1[1024],&lorom[1024],3072); + rom=rom1; + emu_printf("3K EXROM"); + } else { + app_data.bank=2; + memcpy(&rom1[1024],&lorom[0],2048); + memcpy(&rom2[1024],&lorom[2048],2048); + memcpy(&rom1[3072],&rom1[2048],1024); /* simulate missing A10 */ + memcpy(&rom2[3072],&rom2[2048],1024); /* simulate missing A10 */ + rom=rom2; + emu_printf("4K"); + } + } else if (l == 6144) { + app_data.bank=2; + memcpy(&rom1[1024],&lorom[0],3072); + memcpy(&rom2[1024],&lorom[3072],3072); + rom=rom2; + emu_printf("6K"); + } else if (l == 8192) { + app_data.bank=3; + memcpy(&rom1[1024],&lorom[0],2048); + memcpy(&rom2[1024],&lorom[2048],2048); + memcpy(&rom3[1024],&lorom[2*2048],2048); + memcpy(&rom4[1024],&lorom[3*2048],2048); + memcpy(&rom1[3072],&rom1[2048],1024); /* simulate missing A10 */ + memcpy(&rom2[3072],&rom2[2048],1024); /* simulate missing A10 */ + memcpy(&rom3[3072],&rom3[2048],1024); /* simulate missing A10 */ + memcpy(&rom4[3072],&rom4[2048],1024); /* simulate missing A10 */ + rom=rom4; + emu_printf("8K"); + } else if (l == 12288) { + app_data.bank=3; + memcpy(&rom1[1024],&lorom[0],3072); + memcpy(&rom2[1024],&lorom[3072],3072); + memcpy(&rom3[1024],&lorom[2*3072],3072); + memcpy(&rom4[1024],&lorom[3*3072],3072); + rom=rom4; + emu_printf("12K"); + } else { + emu_printf("Invalid ROM size"); + } + if ((rom1[1024+12]=='O') && (rom1[1024+13]=='P') && (rom1[1024+14]=='N') && (rom1[1024+15]=='B')) app_data.openb=1; + orom=rom; + //printf("CRC: %08lX\n",app_data.crc); +} + +void odd_Start(char * filename) +{ + load_bios("o2rom.bin"); + load_cart(filename); + init_display(); + init_cpu(); + init_system(); +} + + +//static void snd_Mixer(short * stream, int len ) +//{ +// audio_process(stream, len>>2); +//} + +void odd_Stop(void) +{ + close_audio(); + close_display(); +} + + + + +void odd_Step(void) +{ + run(); + +//emu_printf("s"); + emu_DrawScreen((unsigned char *)getGBuf()+BORDERW/2, BMPW-BORDERW, BMPH, BMPW); + emu_DrawVsync(); +} + + + + + + diff --git a/MCUME_teensy/teensyo2em/Oddemu.h b/MCUME_teensy/teensyo2em/Oddemu.h new file mode 100644 index 0000000..62f975f --- /dev/null +++ b/MCUME_teensy/teensyo2em/Oddemu.h @@ -0,0 +1,9 @@ +extern void odd_Init(void); +extern void odd_Start(char * filename); +extern void odd_Stop(void); +extern void odd_Step(void); + + + + + diff --git a/MCUME_teensy/teensyo2em/audio.c b/MCUME_teensy/teensyo2em/audio.c new file mode 100644 index 0000000..0a7a84a --- /dev/null +++ b/MCUME_teensy/teensyo2em/audio.c @@ -0,0 +1,183 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * O2 audio emulation + */ + + +#include +#include +#include +#include "cpu.h" +#include "types.h" +#include "config.h" +#include "vmachine.h" +#include "audio.h" + +//#define SAMPLE_RATE 44100 +#define PERIOD1 11 //11 +#define PERIOD2 44 //44 + +#define SOUND_BUFFER_LEN 1056 + +#define AUD_CTRL 0xAA +#define AUD_D0 0xA7 +#define AUD_D1 0xA8 +#define AUD_D2 0xA9 + + +int sound_IRQ; +//static short *stream=NULL; +//static AUDIOSTREAM *stream=NULL; +//FILE *sndlog=NULL; + +static double flt_a=0.0, flt_b=0.0; +static unsigned char flt_prv = 0; + + +static void filter(unsigned char *buf, unsigned long len); + + +//void audio_process(unsigned char *buffer){ +#ifdef GP32 +void audio_process(unsigned short *buffer, int len) +#else +void audio_process(short *buffer, int len) +#endif +{ + unsigned long aud_data; +#ifdef GP32 + unsigned short s; +#else + short s; +#endif + int volume, re_circ, noise, enabled, intena, period, pnt, cnt, rndbit, pos; + + aud_data = (VDCwrite[AUD_D2] | (VDCwrite[AUD_D1] << 8) | (VDCwrite[AUD_D0] << 16)); + + intena = VDCwrite[0xA0] & 0x04; + + pnt = cnt = 0; + + noise = VDCwrite[AUD_CTRL] & 0x10; + enabled = VDCwrite[AUD_CTRL] & 0x80; + rndbit = (enabled && noise) ? (rand()%2) : 0; + + while (pnt < len/*SOUND_BUFFER_LEN*/) { + pos = (tweakedaudio) ? (pnt/3) : (MAXLINES-1); + volume = AudioVector[pos] & 0x0F; + enabled = AudioVector[pos] & 0x80; + period = (AudioVector[pos] & 0x20) ? PERIOD1 : PERIOD2; + re_circ = AudioVector[pos] & 0x40; + +#ifdef GP32 + s= ( (enabled) ? ((aud_data & 0x01)^rndbit) * (0x10 * volume) : 0) << 8; +#else + s= (( (enabled) ? ((aud_data & 0x01)^rndbit) * (0x10 * volume) : 0) - 128) << 8 ; +#endif + *buffer++ = s; + *buffer++ = s; + pnt++; + cnt++; + + if (cnt >= period) { + cnt=0; + aud_data = (re_circ) ? ((aud_data >> 1) | ((aud_data & 1) << 23)) : (aud_data >>= 1); + rndbit = (enabled && noise) ? (rand()%2) : 0; + + if (enabled && intena && (!sound_IRQ)) { + sound_IRQ = 1; + ext_IRQ(); + } + } + } + +// if (app_data.filter) filter(buffer, SOUND_BUFFER_LEN); +} + + +void update_audio(void) { +// unsigned char *p; + if (app_data.sound_en) { +// p = (unsigned char *)get_audio_stream_buffer(stream); +// if (p) { +// audio_process(p); +// if (sndlog) fwrite(p,1,SOUND_BUFFER_LEN,sndlog); +// free_audio_stream_buffer(stream); +// } + } +} + + +void init_audio(void) { +// int i; + + sound_IRQ=0; +// set_volume(255,255); + init_sound_stream(); + +// sndlog = NULL; +} + + +void init_sound_stream(void){ + int vol; + if (app_data.sound_en){ + if (app_data.filter) + vol = (255*app_data.svolume)/100; + else + vol = (255*app_data.svolume)/200; +// stream = play_audio_stream(SOUND_BUFFER_LEN,8,0,SAMPLE_RATE,vol,128); +// if (!stream) { +// printf("Error creating audio stream!\n"); +// app_data.sound_en=0; +// } + flt_a = flt_b = 0.0; + flt_prv = 0; + } +} + + +void mute_audio(void){ + if (app_data.sound_en /*&& stream*/){ +// stop_audio_stream(stream); +// stream=NULL; + } +} + + +void close_audio(void) { + if (app_data.sound_en /*&& stream*/) { +// stop_audio_stream(stream); + } + app_data.sound_en=0; +} + + +static void filter(unsigned char *buffer, unsigned long len){ + static unsigned char buf[SOUND_BUFFER_LEN]; + int t; + unsigned long i; + if (len>SOUND_BUFFER_LEN) return; + memcpy(buf,buffer,len); + for (i=0; i255.0)||(flt_a<-255.0)) flt_a=0.0; + buffer[i] = (unsigned char)((flt_a+255.0)/2.0); + } + flt_prv = buf[len-1]; +} + + diff --git a/MCUME_teensy/teensyo2em/audio.h b/MCUME_teensy/teensyo2em/audio.h new file mode 100644 index 0000000..ee52fa6 --- /dev/null +++ b/MCUME_teensy/teensyo2em/audio.h @@ -0,0 +1,18 @@ +#ifndef __AUDIO_H +#define __AUDIO_H + +void update_audio(void); +void init_audio(void); +void close_audio(void); +void init_sound_stream(void); +void mute_audio(void); +#ifdef GP32 +void audio_process(unsigned short *buffer, int len); +#else +void audio_process(short *buffer, int len); +#endif +extern int sound_IRQ; + +#endif + + diff --git a/MCUME_teensy/teensyo2em/bmpjoy.h b/MCUME_teensy/teensyo2em/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensyo2em/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensyo2em/bmptft.h b/MCUME_teensy/teensyo2em/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensyo2em/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyo2em/bmpvbar.h b/MCUME_teensy/teensyo2em/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensyo2em/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyo2em/bmpvga.h b/MCUME_teensy/teensyo2em/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensyo2em/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyo2em/config.h b/MCUME_teensy/teensyo2em/config.h new file mode 100644 index 0000000..1c7168c --- /dev/null +++ b/MCUME_teensy/teensyo2em/config.h @@ -0,0 +1,8 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#define O2EM_VERSION "1.01" +#define RELEASE_DATE "(October/2002)" + +#endif + diff --git a/MCUME_teensy/teensyo2em/cpu.c b/MCUME_teensy/teensyo2em/cpu.c new file mode 100644 index 0000000..477f95f --- /dev/null +++ b/MCUME_teensy/teensyo2em/cpu.c @@ -0,0 +1,1596 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * 8048 microcontroller emulation + */ + + +#include +#include "types.h" +#include "vmachine.h" +//#include "voice.h" +#include "vdc.h" +//#include "vpp.h" +#include "cpu.h" + + +Byte acc; /* Accumulator */ +ADDRESS pc; /* Program counter */ +long clk; /* clock */ + +Byte itimer; /* Internal timer */ +Byte reg_pnt; /* pointer to register bank */ +Byte timer_on; /* 0=timer off/1=timer on */ +Byte count_on; /* 0=count off/1=count on */ +Byte psw; /* Processor status word */ +Byte sp; /* Stack pointer (part of psw) */ + +Byte p1; /* I/O port 1 */ +Byte p2; /* I/O port 2 */ +Byte xirq_pend; /* external IRQ pending */ +Byte tirq_pend; /* timer IRQ pending */ +Byte t_flag; /* Timer flag */ + +static ADDRESS lastpc; +static ADDRESS A11; /* PC bit 11 */ +static ADDRESS A11ff; +static Byte bs; /* Register Bank (part of psw) */ +static Byte f0; /* Flag Bit (part of psw) */ +static Byte f1; /* Flag Bit 1 */ +static Byte ac; /* Aux Carry (part of psw) */ +static Byte cy; /* Carry flag (part of psw) */ +static Byte xirq_en; /* external IRQ's enabled */ +static Byte tirq_en; /* Timer IRQ enabled */ +static Byte irq_ex; /* IRQ executing */ + +static int master_count; + + +#define push(d) {intRAM[sp++] = (d); if (sp > 23) sp = 8;} +#define pull() (sp--, (sp < 8)?(sp=23):0, intRAM[sp]) +#define make_psw() {psw = (cy << 7) | ac | f0 | bs | 0x08; psw = psw | ((sp - 8) >> 1);} +#define illegal(o) {} +#define undef(i) {printf("** unimplemented instruction %x, %x**\n",i,pc);} + + +void init_cpu(void){ + pc=0; + sp=8; + bs=0; + p1=p2=0xFF; + ac=cy=f0=0; + A11=A11ff=0; + timer_on=0; + count_on=0; + reg_pnt=0; + tirq_en=xirq_en=irq_ex=xirq_pend=tirq_pend=0; +} + + +void ext_IRQ(void){ + int_clk = 5; /* length of pulse on /INT */ + if (xirq_en && !irq_ex) { + irq_ex=1; + xirq_pend=0; + clk+=2; + make_psw(); + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = 0x03; + A11ff=A11; + A11=0; + } + if (pendirq && (!xirq_en)) xirq_pend=1; +} + + +void tim_IRQ(void){ + if (tirq_en && !irq_ex) { + irq_ex=2; + tirq_pend=0; + clk+=2; + make_psw(); + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = 0x07; + A11ff=A11; + A11=0; + } + if (pendirq && (!tirq_en)) tirq_pend=1; +} + + +void make_psw_debug(void){ + make_psw(); +} + + + +void cpu_exec(void) { + Byte op; + ADDRESS adr; + Byte dat; + int temp; + + for (;;) { + + clk=0; + + lastpc=pc; + op=rom[pc++]; + switch (op) { + case 0x00: /* NOP */ + clk++; + break; + case 0x01: /* ILL */ + illegal(op); + clk++; + break; + case 0x02: /* OUTL BUS,A */ + clk+=2; + undef(0x02); + break; + case 0x03: /* ADD A,#data */ + clk+=2; + cy=ac=0; + dat=rom[pc++]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x04: /* JMP */ + pc=rom[pc] | A11; + clk+=2; + break; + case 0x05: /* EN I */ + xirq_en=1; + clk++; + break; + case 0x06: /* ILL */ + clk++; + illegal(op); + break; + case 0x07: /* DEC A */ + acc--; + clk++; + break; + case 0x08: /* INS A,BUS*/ + clk+=2; + acc=in_bus(); + break; + case 0x09: /* IN A,Pp */ + acc=p1; + clk+=2; + break; + case 0x0A: /* IN A,Pp */ + acc=read_P2(); + clk+=2; + break; + case 0x0B: /* ILL */ + clk++; + illegal(op); + case 0x0C: /* MOVD A,P4 */ + clk+=2; + //acc=read_PB(0); + break; + case 0x0D: /* MOVD A,P5 */ + clk+=2; + //acc=read_PB(1); + break; + case 0x0E: /* MOVD A,P6 */ + clk+=2; + //acc=read_PB(2); + break; + case 0x0F: /* MOVD A,P7 */ + clk+=2; + //acc=read_PB(3); + break; + case 0x10: /* INC @Ri */ + intRAM[intRAM[reg_pnt] & 0x3F]++; + clk++; + break; + case 0x11: /* INC @Ri */ + intRAM[intRAM[reg_pnt+1] & 0x3F]++; + clk++; + break; + case 0x12: /* JBb address */ + clk+=2; + dat = rom[pc]; + if (acc & 0x01) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x13: /* ADDC A,#data */ + clk+=2; + dat=rom[pc++]; + ac=0; + if (((acc & 0x0f) + (dat & 0x0f) + cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + + case 0x14: /* CALL */ + make_psw(); + adr = rom[pc] | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x15: /* DIS I */ + xirq_en=0; + clk++; + break; + case 0x16: /* JTF */ + clk+=2; + dat = rom[pc]; + if (t_flag) + pc=(pc & 0xF00) | dat; + else + pc++; + t_flag=0; + break; + case 0x17: /* INC A */ + acc++; + clk++; + break; + case 0x18: /* INC Rr */ + intRAM[reg_pnt]++; + clk++; + break; + case 0x19: /* INC Rr */ + intRAM[reg_pnt+1]++; + clk++; + break; + case 0x1A: /* INC Rr */ + intRAM[reg_pnt+2]++; + clk++; + break; + case 0x1B: /* INC Rr */ + intRAM[reg_pnt+3]++; + clk++; + break; + case 0x1C: /* INC Rr */ + intRAM[reg_pnt+4]++; + clk++; + break; + case 0x1D: /* INC Rr */ + intRAM[reg_pnt+5]++; + clk++; + break; + case 0x1E: /* INC Rr */ + intRAM[reg_pnt+6]++; + clk++; + break; + case 0x1F: /* INC Rr */ + intRAM[reg_pnt+7]++; + clk++; + break; + case 0x20: /* XCH A,@Ri */ + clk++; + dat=acc; + acc=intRAM[intRAM[reg_pnt] & 0x3F]; + intRAM[intRAM[reg_pnt] & 0x3F] = dat; + break; + case 0x21: /* XCH A,@Ri */ + clk++; + dat=acc; + acc=intRAM[intRAM[reg_pnt+1] & 0x3F]; + intRAM[intRAM[reg_pnt+1] & 0x3F] = dat; + break; + case 0x22: /* ILL */ + illegal(op); + break; + case 0x23: /* MOV a,#data */ + clk+=2; + acc = rom[pc++]; + break; + + case 0x24: /* JMP */ + pc=rom[pc] | 0x100 | A11; + clk+=2; + break; + case 0x25: /* EN TCNTI */ + tirq_en=1; + clk++; + break; + case 0x26: /* JNT0 */ + clk+=2; + dat = rom[pc]; +//JMH if (!get_voice_status()) +// pc=(pc & 0xF00) | dat; +// else + pc++; + break; + case 0x27: /* CLR A */ + clk++; + acc=0; + break; + case 0x28: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt]; + intRAM[reg_pnt]=dat; + clk++; + break; + case 0x29: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+1]; + intRAM[reg_pnt+1]=dat; + clk++; + break; + case 0x2A: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+2]; + intRAM[reg_pnt+2]=dat; + clk++; + break; + case 0x2B: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+3]; + intRAM[reg_pnt+3]=dat; + clk++; + break; + case 0x2C: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+4]; + intRAM[reg_pnt+4]=dat; + clk++; + break; + case 0x2D: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+5]; + intRAM[reg_pnt+5]=dat; + clk++; + break; + case 0x2E: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+6]; + intRAM[reg_pnt+6]=dat; + clk++; + break; + case 0x2F: /* XCH A,Rr */ + dat=acc; + acc=intRAM[reg_pnt+7]; + intRAM[reg_pnt+7]=dat; + clk++; + break; + case 0x30: /* XCHD A,@Ri */ + clk++; + adr=intRAM[reg_pnt] & 0x3F; + dat=acc & 0x0F; + acc=acc & 0xF0; + acc=acc | (intRAM[adr] & 0x0F); + intRAM[adr] &= 0xF0; + intRAM[adr] |= dat; + break; + case 0x31: /* XCHD A,@Ri */ + clk++; + adr=intRAM[reg_pnt+1] & 0x3F; + dat=acc & 0x0F; + acc=acc & 0xF0; + acc=acc | (intRAM[adr] & 0x0F); + intRAM[adr] &= 0xF0; + intRAM[adr] |= dat; + break; + case 0x32: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x02) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x33: /* ILL */ + clk++; + illegal(op); + break; + case 0x34: /* CALL */ + make_psw(); + adr = rom[pc] | 0x100 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x35: /* DIS TCNTI */ + tirq_en=0; + tirq_pend=0; + clk++; + break; + case 0x36: /* JT0 */ + clk+=2; + dat=rom[pc]; +// JMH if (get_voice_status()) +// pc=(pc & 0xF00) | dat; +// else + pc++; + break; + case 0x37: /* CPL A */ + acc = acc ^ 0xFF; + clk++; + break; + case 0x38: /* ILL */ + clk++; + illegal(op); + break; + case 0x39: /* OUTL P1,A */ + clk+=2; + write_p1(acc); + break; + case 0x3A: /* OUTL P2,A */ + clk+=2; + p2=acc; + break; + case 0x3B: /* ILL */ + clk++; + illegal(op); + break; + case 0x3C: /* MOVD P4,A */ + clk+=2; + //write_PB(0,acc); + break; + case 0x3D: /* MOVD P5,A */ + clk+=2; + //write_PB(1,acc); + break; + case 0x3E: /* MOVD P6,A */ + clk+=2; + //write_PB(2,acc); + break; + case 0x3F: /* MOVD P7,A */ + clk+=2; + //write_PB(3,acc); + break; + case 0x40: /* ORL A,@Ri */ + clk++; + acc = acc | intRAM[intRAM[reg_pnt] & 0x3F]; + break; + case 0x41: /* ORL A,@Ri */ + clk++; + acc = acc | intRAM[intRAM[reg_pnt+1] & 0x3F]; + break; + case 0x42: /* MOV A,T */ + clk++; + acc = itimer; + break; + case 0x43: /* ORL A,#data */ + clk+=2; + acc = acc | rom[pc++]; + break; + case 0x44: /* JMP */ + pc=rom[pc] | 0x200 | A11; + clk+=2; + break; + case 0x45: /* STRT CNT */ + /* printf("START: %d=%d\n",master_clk/22,itimer); */ + count_on=1; + clk++; + break; + case 0x46: /* JNT1 */ + clk+=2; + dat = rom[pc]; + if (!read_t1()) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x47: /* SWAP A */ + clk++; + dat=(acc & 0xF0) >> 4; + acc = acc << 4; + acc = acc | dat; + break; + case 0x48: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt]; + break; + case 0x49: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+1]; + break; + case 0x4A: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+2]; + break; + case 0x4B: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+3]; + break; + case 0x4C: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+4]; + break; + case 0x4D: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+5]; + break; + case 0x4E: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+6]; + break; + case 0x4F: /* ORL A,Rr */ + clk++; + acc = acc | intRAM[reg_pnt+7]; + break; + + case 0x50: /* ANL A,@Ri */ + acc = acc & intRAM[intRAM[reg_pnt] & 0x3F]; + clk++; + break; + case 0x51: /* ANL A,@Ri */ + acc = acc & intRAM[intRAM[reg_pnt+1] & 0x3F]; + clk++; + break; + case 0x52: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x04) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x53: /* ANL A,#data */ + clk+=2; + acc = acc & rom[pc++]; + break; + case 0x54: /* CALL */ + make_psw(); + adr = rom[pc] | 0x200 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x55: /* STRT T */ + timer_on=1; + clk++; + break; + case 0x56: /* JT1 */ + clk+=2; + dat = rom[pc]; + if (read_t1()) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x57: /* DA A */ + clk++; + if (((acc & 0x0F) > 0x09) || ac) acc+=6; + dat = (acc & 0xF0) >> 4; + if ((dat > 9) || cy) { + dat+=6; + cy=1; + } + else { + cy=0; + } + /* if (dat > 0x0F) cy=1; */ + acc = (acc & 0x0F) | (dat << 4); + break; + case 0x58: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt]; + break; + case 0x59: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+1]; + break; + case 0x5A: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+2]; + break; + case 0x5B: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+3]; + break; + case 0x5C: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+4]; + break; + case 0x5D: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+5]; + break; + case 0x5E: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+6]; + break; + case 0x5F: /* ANL A,Rr */ + clk++; + acc = acc & intRAM[reg_pnt+7]; + break; + + case 0x60: /* ADD A,@Ri */ + clk++; + cy=ac=0; + dat=intRAM[intRAM[reg_pnt] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x61: /* ADD A,@Ri */ + clk++; + cy=ac=0; + dat=intRAM[intRAM[reg_pnt+1] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x62: /* MOV T,A */ + clk++; + itimer=acc; + break; + case 0x63: /* ILL */ + clk++; + illegal(op); + break; + case 0x64: /* JMP */ + pc=rom[pc] | 0x300 | A11; + clk+=2; + break; + case 0x65: /* STOP TCNT */ + clk++; + /* printf("STOP %d\n",master_clk/22); */ + count_on=timer_on=0; + break; + case 0x66: /* ILL */ + clk++; + illegal(op); + break; + case 0x67: /* RRC A */ + dat=cy; + cy=acc & 0x01; + acc = acc >> 1; + if (dat) + acc = acc | 0x80; + else + acc = acc & 0x7F; + clk++; + break; + case 0x68: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x69: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+1]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6A: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+2]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6B: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+3]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6C: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+4]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6D: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+5]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6E: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+6]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x6F: /* ADD A,Rr */ + clk++; + cy=ac=0; + dat=intRAM[reg_pnt+7]; + if (((acc & 0x0f) + (dat & 0x0f)) > 0x0f) ac=0x40; + temp=acc+dat; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x70: /* ADDC A,@Ri */ + clk++; + ac=0; + dat=intRAM[intRAM[reg_pnt] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f) + cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x71: /* ADDC A,@Ri */ + clk++; + ac=0; + dat=intRAM[intRAM[reg_pnt+1] & 0x3F]; + if (((acc & 0x0f) + (dat & 0x0f) + cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + + case 0x72: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x08) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x73: /* ILL */ + clk++; + illegal(op); + break; + case 0x74: /* CALL */ + make_psw(); + adr = rom[pc] | 0x300 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x75: /* EN CLK */ + clk++; + undef(op); + break; + case 0x76: /* JF1 address */ + clk+=2; + dat=rom[pc]; + if (f1) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x77: /* RR A */ + clk++; + dat=acc & 0x01; + acc = acc >> 1; + if (dat) + acc = acc | 0x80; + else + acc = acc & 0x7f; + break; + + case 0x78: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x79: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+1]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7A: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+2]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7B: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+3]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7C: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+4]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7D: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+5]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7E: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+6]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + case 0x7F: /* ADDC A,Rr */ + clk++; + ac=0; + dat=intRAM[reg_pnt+7]; + if (((acc & 0x0f) + (dat & 0x0f)+cy) > 0x0f) ac=0x40; + temp=acc+dat+cy; + cy=0; + if (temp > 0xFF) cy=1; + acc=(temp & 0xFF); + break; + + case 0x80: /* MOVX A,@Ri */ + acc=ext_read(intRAM[reg_pnt]); + clk+=2; + break; + case 0x81: /* MOVX A,@Ri */ + acc=ext_read(intRAM[reg_pnt+1]); + clk+=2; + break; + case 0x82: /* ILL */ + clk++; + illegal(op); + break; + case 0x83: /* RET */ + pc = ((pull() & 0x0F) << 8); + pc = pc | pull(); + break; + + case 0x84: /* JMP */ + pc=rom[pc] | 0x400 | A11; + clk+=2; + break; + case 0x85: /* CLR F0 */ + clk++; + f0=0; + break; + case 0x86: /* JNI address */ + clk+=2; + dat=rom[pc]; + if (int_clk > 0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + break; + case 0x87: /* ILL */ + illegal(op); + clk++; + break; + case 0x88: /* BUS,#data */ + clk+=2; + undef(op); + break; + case 0x89: /* ORL Pp,#data */ + write_p1(p1 | rom[pc++]); + clk+=2; + break; + case 0x8A: /* ORL Pp,#data */ + p2 = p2 | rom[pc++]; + clk+=2; + break; + case 0x8B: /* ILL */ + illegal(op); + clk++; + break; + case 0x8C: /* ORLD P4,A */ + //write_PB(0,read_PB(0)|acc); + clk+=2; + break; + case 0x8D: /* ORLD P5,A */ + //write_PB(1,read_PB(1)|acc); + clk+=2; + break; + case 0x8E: /* ORLD P6,A */ + //write_PB(2,read_PB(2)|acc); + clk+=2; + break; + case 0x8F: /* ORLD P7,A */ + //write_PB(3,read_PB(3)|acc); + clk+=2; + break; + case 0x90: /* MOVX @Ri,A */ + ext_write(acc,intRAM[reg_pnt]); + clk+=2; + break; + case 0x91: /* MOVX @Ri,A */ + ext_write(acc,intRAM[reg_pnt+1]); + clk+=2; + break; + case 0x92: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x10) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x93: /* RETR*/ + /* printf("RETR %d\n",master_clk/22); */ + clk+=2; + dat=pull(); + pc = (dat & 0x0F) << 8; + cy = (dat & 0x80) >> 7; + ac = dat & 0x40; + f0 = dat & 0x20; + bs = dat & 0x10; + if (bs) + reg_pnt=24; + else + reg_pnt=0; + pc = pc | pull(); + irq_ex=0; + A11=A11ff; + break; + case 0x94: /* CALL */ + make_psw(); + adr = rom[pc] | 0x400 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0x95: /* CPL F0 */ + f0 = f0 ^ 0x20; + clk++; + break; + case 0x96: /* JNZ address */ + clk+=2; + dat=rom[pc]; + if (acc != 0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0x97: /* CLR C */ + cy=0; + clk++; + break; + case 0x98: /* ANL BUS,#data */ + clk+=2; + undef(op); + break; + case 0x99: /* ANL Pp,#data */ + write_p1(p1 & rom[pc++]); + clk+=2; + break; + case 0x9A: /* ANL Pp,#data */ + p2 = p2 & rom[pc++]; + clk+=2; + break; + case 0x9B: /* ILL */ + illegal(op); + clk++; + break; + case 0x9C: /* ANLD P4,A */ + //write_PB(0,read_PB(0)&acc); + clk+=2; + break; + case 0x9D: /* ANLD P5,A */ + //write_PB(1,read_PB(1)&acc); + clk+=2; + break; + case 0x9E: /* ANLD P6,A */ + //write_PB(2,read_PB(2)&acc); + clk+=2; + break; + case 0x9F: /* ANLD P7,A */ + //write_PB(3,read_PB(3)&acc); + clk+=2; + break; + case 0xA0: /* MOV @Ri,A */ + intRAM[intRAM[reg_pnt] & 0x3F]=acc; + clk++; + break; + case 0xA1: /* MOV @Ri,A */ + intRAM[intRAM[reg_pnt+1] & 0x3F]=acc; + clk++; + break; + case 0xA2: /* ILL */ + clk++; + illegal(op); + break; + case 0xA3: /* MOVP A,@A */ + acc=rom[(pc & 0xF00) | acc]; + clk+=2; + break; + case 0xA4: /* JMP */ + pc=rom[pc] | 0x500 | A11; + clk+=2; + break; + case 0xA5: /* CLR F1 */ + clk++; + f1=0; + break; + case 0xA6: /* ILL */ + illegal(op); + clk++; + break; + case 0xA7: /* CPL C */ + cy = cy ^ 0x01; + clk++; + break; + case 0xA8: /* MOV Rr,A */ + intRAM[reg_pnt] = acc; + break; + case 0xA9: /* MOV Rr,A */ + intRAM[reg_pnt+1] = acc; + break; + case 0xAA: /* MOV Rr,A */ + intRAM[reg_pnt+2] = acc; + break; + case 0xAB: /* MOV Rr,A */ + intRAM[reg_pnt+3] = acc; + break; + case 0xAC: /* MOV Rr,A */ + intRAM[reg_pnt+4] = acc; + break; + case 0xAD: /* MOV Rr,A */ + intRAM[reg_pnt+5] = acc; + break; + case 0xAE: /* MOV Rr,A */ + intRAM[reg_pnt+6] = acc; + break; + case 0xAF: /* MOV Rr,A */ + intRAM[reg_pnt+7] = acc; + break; + case 0xB0: /* MOV @Ri,#data */ + intRAM[intRAM[reg_pnt] & 0x3F]=rom[pc++]; + clk+=2; + break; + case 0xB1: /* MOV @Ri,#data */ + intRAM[intRAM[reg_pnt+1] & 0x3F]=rom[pc++]; + clk+=2; + break; + case 0xB2: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x20) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xB3: /* JMPP @A */ + adr = (pc & 0xF00) | acc; + pc=(pc & 0xF00) | rom[adr]; + clk+=2; + break; + case 0xB4: /* CALL */ + make_psw(); + adr = rom[pc] | 0x500 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0xB5: /* CPL F1 */ + f1 = f1 ^ 0x01; + clk++; + break; + case 0xB6: /* JF0 address */ + clk+=2; + dat=rom[pc]; + if (f0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xB7: /* ILL */ + clk++; + illegal(op); + break; + case 0xB8: /* MOV Rr,#data */ + intRAM[reg_pnt]=rom[pc++]; + clk+=2; + break; + case 0xB9: /* MOV Rr,#data */ + intRAM[reg_pnt+1]=rom[pc++]; + clk+=2; + break; + case 0xBA: /* MOV Rr,#data */ + intRAM[reg_pnt+2]=rom[pc++]; + clk+=2; + break; + case 0xBB: /* MOV Rr,#data */ + intRAM[reg_pnt+3]=rom[pc++]; + clk+=2; + break; + case 0xBC: /* MOV Rr,#data */ + intRAM[reg_pnt+4]=rom[pc++]; + clk+=2; + break; + case 0xBD: /* MOV Rr,#data */ + intRAM[reg_pnt+5]=rom[pc++]; + clk+=2; + break; + case 0xBE: /* MOV Rr,#data */ + intRAM[reg_pnt+6]=rom[pc++]; + clk+=2; + break; + case 0xBF: /* MOV Rr,#data */ + intRAM[reg_pnt+7]=rom[pc++]; + clk+=2; + break; + case 0xC0: /* ILL */ + illegal(op); + clk++; + break; + case 0xC1: /* ILL */ + illegal(op); + clk++; + break; + case 0xC2: /* ILL */ + illegal(op); + clk++; + break; + case 0xC3: /* ILL */ + illegal(op); + clk++; + break; + case 0xC4: /* JMP */ + pc=rom[pc] | 0x600 | A11; + clk+=2; + break; + case 0xC5: /* SEL RB0 */ + bs=reg_pnt=0; + clk++; + break; + case 0xC6: /* JZ address */ + clk+=2; + dat=rom[pc]; + if (acc == 0) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xC7: /* MOV A,PSW */ + clk++; + make_psw(); + acc=psw; + break; + case 0xC8: /* DEC Rr */ + intRAM[reg_pnt]--; + clk++; + break; + case 0xC9: /* DEC Rr */ + intRAM[reg_pnt+1]--; + clk++; + break; + case 0xCA: /* DEC Rr */ + intRAM[reg_pnt+2]--; + clk++; + break; + case 0xCB: /* DEC Rr */ + intRAM[reg_pnt+3]--; + clk++; + break; + case 0xCC: /* DEC Rr */ + intRAM[reg_pnt+4]--; + clk++; + break; + case 0xCD: /* DEC Rr */ + intRAM[reg_pnt+5]--; + clk++; + break; + case 0xCE: /* DEC Rr */ + intRAM[reg_pnt+6]--; + clk++; + break; + case 0xCF: /* DEC Rr */ + intRAM[reg_pnt+7]--; + clk++; + break; + case 0xD0: /* XRL A,@Ri */ + acc = acc ^ intRAM[intRAM[reg_pnt] & 0x3F]; + clk++; + break; + case 0xD1: /* XRL A,@Ri */ + acc = acc ^ intRAM[intRAM[reg_pnt+1] & 0x3F]; + clk++; + break; + case 0xD2: /* JBb address */ + clk+=2; + dat = rom[pc]; + if (acc & 0x40) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xD3: /* XRL A,#data */ + clk+=2; + acc = acc ^ rom[pc++]; + break; + case 0xD4: /* CALL */ + make_psw(); + adr = rom[pc] | 0x600 | A11; + pc++; + clk+=2; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0xD5: /* SEL RB1 */ + bs=0x10; + reg_pnt=24; + clk++; + break; + case 0xD6: /* ILL */ + illegal(op); + clk++; + break; + case 0xD7: /* MOV PSW,A */ + psw=acc; + clk++; + cy = (psw & 0x80) >> 7; + ac = psw & 0x40; + f0 = psw & 0x20; + bs = psw & 0x10; + if (bs) + reg_pnt = 24; + else + reg_pnt = 0; + sp = (psw & 0x07) << 1; + sp+=8; + break; + case 0xD8: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt]; + clk++; + break; + case 0xD9: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+1]; + clk++; + break; + case 0xDA: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+2]; + clk++; + break; + case 0xDB: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+3]; + clk++; + break; + case 0xDC: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+4]; + clk++; + break; + case 0xDD: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+5]; + clk++; + break; + case 0xDE: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+6]; + clk++; + break; + case 0xDF: /* XRL A,Rr */ + acc = acc ^ intRAM[reg_pnt+7]; + clk++; + break; + case 0xE0: /* ILL */ + clk++; + illegal(op); + break; + case 0xE1: /* ILL */ + clk++; + illegal(op); + break; + case 0xE2: /* ILL */ + clk++; + illegal(op); + break; + case 0xE3: /* MOVP3 A,@A */ + + adr = 0x300 | acc; + acc=rom[adr]; + clk+=2; + break; + case 0xE4: /* JMP */ + pc=rom[pc] | 0x700 | A11; + clk+=2; + break; + case 0xE5: /* SEL MB0 */ + A11=0; + A11ff = 0; + clk++; + break; + case 0xE6: /* JNC address */ + clk+=2; + dat=rom[pc]; + if (!cy) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xE7: /* RL A */ + clk++; + dat=acc & 0x80; + acc = acc << 1; + if (dat) + acc = acc | 0x01; + else + acc = acc & 0xFE; + break; + case 0xE8: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt]--; + dat=rom[pc]; + if (intRAM[reg_pnt] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xE9: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+1]--; + dat=rom[pc]; + if (intRAM[reg_pnt+1] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEA: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+2]--; + dat=rom[pc]; + if (intRAM[reg_pnt+2] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEB: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+3]--; + dat=rom[pc]; + if (intRAM[reg_pnt+3] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEC: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+4]--; + dat=rom[pc]; + if (intRAM[reg_pnt+4] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xED: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+5]--; + dat=rom[pc]; + if (intRAM[reg_pnt+5] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEE: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+6]--; + dat=rom[pc]; + if (intRAM[reg_pnt+6] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xEF: /* DJNZ Rr,address */ + clk+=2; + intRAM[reg_pnt+7]--; + dat=rom[pc]; + if (intRAM[reg_pnt+7] != 0) { + pc = pc & 0xF00; + pc = pc | dat; + } else pc++; + break; + case 0xF0: /* MOV A,@Ri */ + clk++; + acc=intRAM[intRAM[reg_pnt] & 0x3F]; + break; + case 0xF1: /* MOV A,@Ri */ + clk++; + acc=intRAM[intRAM[reg_pnt + 1] & 0x3F]; + break; + case 0xF2: /* JBb address */ + clk+=2; + dat=rom[pc]; + if (acc & 0x80) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xF3: /* ILL */ + illegal(op); + clk++; + break; + case 0xF4: /* CALL */ + clk+=2; + make_psw(); + adr = rom[pc] | 0x700 | A11; + pc++; + push(pc & 0xFF); + push(((pc & 0xF00) >> 8) | (psw & 0xF0)); + pc = adr; + break; + case 0xF5: /* SEL MB1 */ + if (irq_ex) { + A11ff = 0x800; + } + else + { + A11=0x800; + A11ff = 0x800; + } + clk++; + break; + case 0xF6: /* JC address */ + clk+=2; + dat=rom[pc]; + if (cy) + pc=(pc & 0xF00) | dat; + else + pc++; + break; + case 0xF7: /* RLC A */ + dat=cy; + cy=(acc & 0x80) >> 7; + acc = acc << 1; + if (dat) + acc = acc | 0x01; + else + acc = acc & 0xFE; + clk++; + break; + case 0xF8: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt]; + break; + case 0xF9: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 1]; + break; + case 0xFA: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 2]; + break; + case 0xFB: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 3]; + break; + case 0xFC: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 4]; + break; + case 0xFD: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 5]; + break; + case 0xFE: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 6]; + break; + case 0xFF: /* MOV A,Rr */ + clk++; + acc = intRAM[reg_pnt + 7]; + break; + } + + + master_clk+=clk; + h_clk+=clk; + clk_counter+=clk; + + /* flag for JNI */ + if (int_clk > clk) + int_clk -= clk; + else + int_clk = 0; + + /* pending IRQs */ + if (xirq_pend) ext_IRQ(); + if (tirq_pend) tim_IRQ(); + + if (h_clk > LINECNT-1) { + h_clk-=LINECNT; + if (enahirq && (VDCwrite[0xA0] & 0x01)) ext_IRQ(); + if (count_on && mstate == 0) { + itimer++; + if (itimer == 0) { + t_flag=1; + tim_IRQ(); + if (!ccolflag) { + clear_collision(); + ccolflag=1; + } + draw_region(); + } + } + } + + if (timer_on) { + master_count+=clk; + if (master_count > 31) { + master_count-=31; + itimer++; + if (itimer == 0) { + t_flag=1; + tim_IRQ(); + } + } + } + + if ((mstate==0) && (master_clk > VBLCLK)) + handle_vbl(); + + if ((mstate==1) && (master_clk > evblclk)) { + handle_evbl(); + break; + } + + if (app_data.debug) break; + } + +} + diff --git a/MCUME_teensy/teensyo2em/cpu.h b/MCUME_teensy/teensyo2em/cpu.h new file mode 100644 index 0000000..c7d9380 --- /dev/null +++ b/MCUME_teensy/teensyo2em/cpu.h @@ -0,0 +1,34 @@ +#ifndef CPU_H +#define CPU_H + +#include "types.h" + +extern Byte acc; /* Accumulator */ +extern ADDRESS pc; /* Program counter */ +extern long clk; /* clock */ + +extern Byte itimer; /* Internal timer */ +extern Byte reg_pnt; /* pointer to register bank */ +extern Byte timer_on; /* 0=timer off/1=timer on */ +extern Byte count_on; /* 0=count off/1=count on */ + +extern Byte t_flag; /* Timer flag */ + +extern Byte psw; /* Processor status word */ +extern Byte sp; /* Stack pointer (part of psw) */ + +extern Byte p1; /* I/O port 1 */ +extern Byte p2; /* I/O port 2 */ + +extern Byte xirq_pend; +extern Byte tirq_pend; + +void init_cpu(void); +void cpu_exec(void); +void ext_IRQ(void); +void tim_IRQ(void); +void make_psw_debug(void); + + +#endif /* CPU_H */ + diff --git a/MCUME_teensy/teensyo2em/crc32.c b/MCUME_teensy/teensyo2em/crc32.c new file mode 100644 index 0000000..b38b4e3 --- /dev/null +++ b/MCUME_teensy/teensyo2em/crc32.c @@ -0,0 +1,111 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * CRC32 functions used to identify files + */ + + +#include +#include +#include "crc32.h" +//#include "pgmspace.h" + +static const unsigned long crc32tab[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, +}; + + +unsigned long crc32_buf(const void *buf, long len){ + unsigned long crc = ~0; + unsigned char *p = (unsigned char*)buf; + + while (len--) crc = (crc >> 8) ^ crc32tab[(crc ^ (*p++)) & 0xff]; + return ~crc; +} + + +unsigned long crc32_file(const char *filename){ + unsigned long crc = ~0; + FILE *f; + int c; + + f = fopen(filename,"rb"); + if (f){ + while ((c=fgetc(f)) != EOF) crc = (crc >> 8) ^ crc32tab[(crc ^ c) & 0xff]; + fclose(f); + } + return ~crc; +} + diff --git a/MCUME_teensy/teensyo2em/crc32.h b/MCUME_teensy/teensyo2em/crc32.h new file mode 100644 index 0000000..e00c9a2 --- /dev/null +++ b/MCUME_teensy/teensyo2em/crc32.h @@ -0,0 +1,7 @@ +#ifndef __CRC32_H +#define __CRC32_H + +unsigned long crc32_buf(const void *buf, long len); +unsigned long crc32_file(const char *filename); + +#endif diff --git a/MCUME_teensy/teensyo2em/cset.c b/MCUME_teensy/teensyo2em/cset.c new file mode 100644 index 0000000..3adbcb8 --- /dev/null +++ b/MCUME_teensy/teensyo2em/cset.c @@ -0,0 +1,86 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * O2 character table + */ + + +#include "types.h" +#include "cset.h" + + +const Byte cset[512]= { +0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00, +0x18,0x38,0x18,0x18,0x18,0x18,0x3C,0x00, +0x3C,0x66,0x0C,0x18,0x30,0x60,0x7E,0x00, +0x7C,0xC6,0x06,0x3C,0x06,0xC6,0x7C,0x00, +0xCC,0xCC,0xCC,0xFE,0x0C,0x0C,0x0C,0x00, +0xFE,0xC0,0xC0,0x7C,0x06,0xC6,0x7C,0x00, +0x7C,0xC6,0xC0,0xFC,0xC6,0xC6,0x7C,0x00, +0xFE,0x06,0x0C,0x18,0x30,0x60,0xC0,0x00, +0x7C,0xC6,0xC6,0x7C,0xC6,0xC6,0x7C,0x00, +0x7C,0xC6,0xC6,0x7E,0x06,0xC6,0x7C,0x00, +0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00, +0x18,0x7E,0x58,0x7E,0x1A,0x7E,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x3C,0x66,0x0C,0x18,0x18,0x00,0x18,0x00, +0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFE,0x00, +0xFC,0xC6,0xC6,0xFC,0xC0,0xC0,0xC0,0x00, +0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00, +0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00, +0xFE,0xC0,0xC0,0xF8,0xC0,0xC0,0xFE,0x00, +0xFC,0xC6,0xC6,0xFC,0xD8,0xCC,0xC6,0x00, +0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00, +0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00, +0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, +0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00, +0x7C,0xC6,0xC6,0xC6,0xDE,0xCC,0x76,0x00, +0x7C,0xC6,0xC0,0x7C,0x06,0xC6,0x7C,0x00, +0xFC,0xC6,0xC6,0xC6,0xC6,0xC6,0xFC,0x00, +0xFE,0xC0,0xC0,0xF8,0xC0,0xC0,0xC0,0x00, +0x7C,0xC6,0xC0,0xC0,0xCE,0xC6,0x7E,0x00, +0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0x00, +0x06,0x06,0x06,0x06,0x06,0xC6,0x7C,0x00, +0xC6,0xCC,0xD8,0xF0,0xD8,0xCC,0xC6,0x00, +0x38,0x6C,0xC6,0xC6,0xFE,0xC6,0xC6,0x00, +0x7E,0x06,0x0C,0x18,0x30,0x60,0x7E,0x00, +0xC6,0xC6,0x6C,0x38,0x6C,0xC6,0xC6,0x00, +0x7C,0xC6,0xC0,0xC0,0xC0,0xC6,0x7C,0x00, +0xC6,0xC6,0xC6,0xC6,0xC6,0x6C,0x38,0x00, +0xFC,0xC6,0xC6,0xFC,0xC6,0xC6,0xFC,0x00, +0xC6,0xEE,0xFE,0xD6,0xC6,0xC6,0xC6,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, +0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, +0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00, +0x00,0x18,0x00,0x7E,0x00,0x18,0x00,0x00, +0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00, +0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x00, +0xC6,0xE6,0xF6,0xFE,0xDE,0xCE,0xC6,0x00, +0x03,0x06,0x0C,0x18,0x30,0x60,0xC0,0x00, +0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, +0xCE,0xDB,0xDB,0xDB,0xDB,0xDB,0xCE,0x00, +0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00, +0x1C,0x1C,0x18,0x1E,0x18,0x18,0x1C,0x00, +0x1C,0x1C,0x18,0x1E,0x18,0x34,0x26,0x00, +0x38,0x38,0x18,0x78,0x18,0x2C,0x64,0x00, +0x38,0x38,0x18,0x78,0x18,0x18,0x38,0x00, +0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00, +0x18,0x3C,0x7E,0xFF,0xFF,0x18,0x18,0x00, +0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00, +0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x00, +0x38,0x38,0x12,0xFE,0xB8,0x28,0x6C,0x00, +0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x00, +0x00,0x00,0x0C,0x08,0x08,0x7F,0x3E,0x00, +0x00,0x03,0x63,0xFF,0xFF,0x18,0x08,0x00, +0x00,0x00,0x00,0x10,0x38,0xFF,0x7E,0x00, +0x00,0x00,0x00,0x06,0x6E,0xFF,0x7E,0x00}; + diff --git a/MCUME_teensy/teensyo2em/cset.h b/MCUME_teensy/teensyo2em/cset.h new file mode 100644 index 0000000..49f7ecf --- /dev/null +++ b/MCUME_teensy/teensyo2em/cset.h @@ -0,0 +1,6 @@ +#ifndef __CSET_H +#define __CSET_H + +extern const Byte cset[512]; + +#endif diff --git a/MCUME_teensy/teensyo2em/emuapi.cpp b/MCUME_teensy/teensyo2em/emuapi.cpp new file mode 100644 index 0000000..ad39c72 --- /dev/null +++ b/MCUME_teensy/teensyo2em/emuapi.cpp @@ -0,0 +1,1044 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensyo2em/emuapi.h b/MCUME_teensy/teensyo2em/emuapi.h new file mode 100644 index 0000000..a3404dc --- /dev/null +++ b/MCUME_teensy/teensyo2em/emuapi.h @@ -0,0 +1,150 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +//#define HAS_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " Oddysey Emulator " +#define ROMSDIR "o2em" + + +#define emu_Init(ROM) {odd_Init();odd_Start(ROM);} +#define emu_Step() {odd_Step();} +#define emu_Input(x) {} + +#define VID_FRAME_SKIP 0x0 +#define PALETTE_SIZE 256 +#define TFT_VBUFFER_YCROP 20 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 45 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 20 +#define KEYBOARD_Y 15 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,28,28,28,28,29,29,28,28,28,28, + TAREA_NEW_ROW,28,28,28,28,29,29,28,28,28,28, + TAREA_XY,KEYBOARD_X,KEYBOARD_Y+KEYBOARD_KEY_H+KEYBOARD_KEY_H+14, + TAREA_NEW_ROW,28,28,28,28,29,29,28,28,28,28, + + TAREA_NEW_ROW,12, 28,28,29,29,29,29,28,28,28, + TAREA_NEW_ROW,28, 28,28,29,29,29,29,28,28,28, + TAREA_NEW_ROW,100,90, + TAREA_END}; + +const unsigned short keys[] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 35,36,40,39,42,34,23,42,43,44, + 27,33,15,28,30,35,31,19,25,26, + + ACTION_NONE, 11,29,14,16,17,18,20,21,22, + ACTION_NONE, 36,34,13,32,12,24,23,ACTION_NONE,ACTION_NONE, + ACTION_NONE, 41}; + +/* +"A B C D E F G H I J" + 11,12,13,14,15,16,17,18,19,20, + +"K L M N O P Q R S T" + 21,22,23,24,25,26,27,28,29,30, + +"U V W X Y Z + 31,32,33,34,35,36,37,36,39,40, +*/ + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0, 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + 0, 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310, 0, + 0, 0X0010}; +#endif + +#endif + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + diff --git a/MCUME_teensy/teensyo2em/font8x8.h b/MCUME_teensy/teensyo2em/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensyo2em/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensyo2em/iopins.h b/MCUME_teensy/teensyo2em/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensyo2em/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensyo2em/keyboard_osd.h b/MCUME_teensy/teensyo2em/keyboard_osd.h new file mode 100644 index 0000000..4c31e6f --- /dev/null +++ b/MCUME_teensy/teensyo2em/keyboard_osd.h @@ -0,0 +1,19 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif diff --git a/MCUME_teensy/teensyo2em/logo.h b/MCUME_teensy/teensyo2em/logo.h new file mode 100644 index 0000000..f1d7850 --- /dev/null +++ b/MCUME_teensy/teensyo2em/logo.h @@ -0,0 +1,225 @@ +const uint16_t logo[] PROGMEM = { +0x0140,0x00e0,0x94d2,0x94d2,0x94d2,0x94d2,0x9cf2,0x94f2,0x9512,0x9513,0x9d12,0x9d12,0x9d33,0xa533,0xa533,0x9d33,0xa513,0xa533,0xa533,0xa533,0xa554,0xa554,0xad54,0xad54,0xa554,0xa554,0xad54,0xad74,0xad74,0xad74,0xad74,0xad74,0xad94,0xad94,0xb575,0xad95,0xb595,0xb595,0xad95,0xadb5,0xb5d5,0xb5d6,0xb5d6,0xb5d6,0xb5d5,0xb5d6,0xbdf6,0xbdf6,0xbdf6,0xb5f6,0xbdf6,0xbe16,0xbe16,0xc617,0xc617,0xc637,0xbe37,0xbe37,0xbe57,0xbe38,0xc658,0xc658,0xc658,0xce58,0xc678,0xc678,0xc678,0xc678,0xce79,0xc699,0xce99,0xce99,0xce99,0xce99,0xce99,0xce99,0xce99,0xceb9,0xceba,0xceba,0xceba,0xd6ba,0xd6ba,0xceba,0xd6ba,0xd6ba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6da,0xd6ba,0xd6ba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6fa,0xd6da,0xd6ba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6da,0xd6da,0xd6da,0xdeda,0xd6da,0xd6da,0xd6da,0xd6da,0xdedb,0xd6da,0xd6da,0xd6db,0xdedb,0xd6da,0xd6da,0xd6da,0xd6ba,0xd6ba,0xd6da,0xd6da,0xd6ba,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xceba,0xceb9,0xd6ba,0xd6ba,0xd6ba,0xd69a,0xd699,0xce99,0xce79,0xd699,0xd699,0xd699,0xd699,0xd699,0xce99,0xce79,0xd699,0xd679,0xce79,0xd6ba,0xd69a,0xce79,0xce79,0xd6ba,0xce99,0xce79,0xce99,0xd69a,0xd679,0xd679,0xd699,0xd699,0xce79,0xce79,0xce79,0xce59,0xce59,0xce59,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce79,0xce58,0xce58,0xc658,0xc678,0xce59,0xc679,0xc658,0xc638,0xce58,0xc638,0xc658,0xc638,0xc658,0xce79,0xce58,0xc638,0xc617,0xc617,0xc617,0xc637,0xc617,0xc5f7,0xc5d7,0xc617,0xbe17,0xc617,0xc617,0xbdf7,0xbdf7,0xbe17,0xbdf6,0xc5d6,0xc5f7,0xbdf7,0xb5d6,0xbdf6,0xb5b6,0xbdf6,0xbdd6,0xbdd5,0xbdd6,0xb5d6,0xb595,0xb5b5,0xb5d6,0xb5b5,0xb5b5,0xb5b5,0xad95,0xad74,0xad74,0xad74,0xb575,0xb574,0xad74,0xad54,0xa554,0xad74,0xa554,0xa534,0xad54,0xa554,0xa513,0xa533,0xa553,0xa533,0xa513,0xad33,0xa533,0xa533,0x9cf3,0xa512,0x9cf2,0x9cf3,0x9cf2,0x9cd2,0x94d2,0x94d1,0x94b1,0x94d2,0x8cb1,0x9491,0x9492,0x9c91,0x94b1,0x94b1,0x9471,0x8c71,0x9491,0x9470,0x9470,0x8450,0x8c50,0x8c50,0x8c6f,0x844f,0x844f,0x8450,0x844f,0x8c2f,0x842f,0x844f,0x842f,0x840f,0x840f,0x83ee,0x840f,0x7c0f,0x7c0e,0x7bee,0x73ee,0x73ce,0x7bce,0x7bce,0x7bce,0x7bee,0x73cd,0x7bce,0x73cd,0x6bce,0x73cd,0x73ad,0x738d,0x7bad,0x7bad,0x73ad,0x736c,0x736c,0x6b8d,0x6b8d,0x636c,0x6b6c,0x6b6c,0x736c,0x636c,0x634c,0x6b4c,0x632b,0x630b,0x6aeb,0x52eb,0x5aeb,0x5acb,0x52ca,0x5aa9,0x5aca,0x5aaa,0x528a, +0x94d2,0x94f2,0x94d2,0x94d2,0x9512,0x9512,0x9d33,0x9d33,0xa513,0xa513,0x9d12,0xa512,0xad74,0xa553,0xa553,0xa553,0xad94,0xad74,0xad74,0xad75,0xad54,0xad54,0xb5b5,0xb5b5,0xb595,0xad54,0xa574,0xad95,0xb5d5,0xb5d5,0xb5d5,0xb595,0xadb5,0xb5d5,0xbdb5,0xbdd6,0xb5b6,0xb5d6,0xbe37,0xbe17,0xbdf7,0xbe17,0xbe37,0xbe17,0xc617,0xce58,0xc658,0xc658,0xc658,0xce78,0xce78,0xce99,0xce99,0xd6b9,0xd679,0xd699,0xd6da,0xdeda,0xdefa,0xdf1b,0xdf1b,0xdefb,0xdf1b,0xdf1b,0xe73b,0xdf3c,0xe71c,0xe73c,0xef5c,0xef7c,0xef5c,0xef7d,0xef5c,0xef7c,0xef5d,0xe75c,0xe77c,0xe75c,0xef7d,0xef9d,0xef9d,0xf79d,0xf79e,0xf79d,0xf79e,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xffde,0xffde,0xf7de,0xffde,0xffde,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffde,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffde,0xffde,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xfffe,0xfffe,0xfffe,0xfffe,0xf7de,0xf7dd,0xf7dd,0xf7bd,0xf79d,0xef9d,0xef9d,0xef7c,0xef7c,0xe75c,0xe75b,0xe75b,0xe73b,0xdf3b,0xdf1a,0xe73b,0xdf3b,0xdf3b,0xe71b,0xdf1a,0xdefa,0xd6fa,0xd6da,0xd6d9,0xd6d9,0xd6b9,0xdef9,0xc697,0xc698,0xc698,0xc677,0xce78,0xce98,0xc698,0xbe77,0xc656,0xbe76,0xbe56,0xc656,0xc657,0xbe36,0xb636,0xb616,0xadf5,0xadd5,0xb5f5,0xadd5,0xadf5,0xadb4,0xad74,0xad94,0xadb4,0xa593,0xa572,0x9d73,0xa5b5,0xa593,0xad94,0xad53,0xa553,0xa553,0xa552,0x9d73,0x9d93,0x9d52,0x9d12,0x9511,0x9d11,0x94f1,0x94f1,0x94f1,0x8cb0,0x94d1,0x8cb0,0x8cb0,0x8cb0,0x8490,0x8c90,0x9490,0x9490,0x9490,0x8c90,0x8470,0x8c90,0x8c90,0x8470,0x8490,0x846f,0x846f,0x844f,0x8c4f,0x842e,0x842f,0x7c0f,0x7c0e,0x7bcd,0x7bed,0x73cd,0x6bad,0x6bac,0x6bad,0x73ad,0x738c,0x63ac,0x6bcd,0x6b8d,0x738c,0x738c,0x6b8c,0x5b6c,0x5b6c,0x638b,0x638c,0x6b4c,0x6b4c,0x634b,0x636b,0x6b6c,0x632b,0x636b,0x634b,0x634b,0x634b,0x632b,0x5b0a,0x5b2b,0x630b,0x5b0a,0x5b0a,0x5b0a,0x52ea,0x52ca,0x52ea,0x52ea,0x52a8,0x5ae9,0x52a9,0x52c9,0x5ac9,0x62ca,0x5aca,0x52c9,0x4aa8,0x52ca,0x5b0a,0x6b8c,0x7bee,0x73ae,0x630c,0x5aab,0x52ea,0x5acb,0x5aca,0x5aaa,0x52ca, +0x94f2,0x9cf2,0x94d2,0x94d2,0x9cf2,0x9d13,0x9d33,0xa533,0xad94,0xc637,0xceb9,0xc698,0xbe37,0xb5f5,0xb615,0xb5f5,0xb5d5,0xb5f5,0xb5f5,0xb5d5,0xb5d5,0xbe16,0xb5d5,0xb5f5,0xb5f5,0xbe16,0xbe15,0xb5f5,0xb5f5,0xb5d5,0xb5d5,0xb5d5,0xb5f5,0xadf5,0xb5f5,0xb5d5,0xb5f6,0xb5f5,0xb5f5,0xb5f5,0xb5d5,0xb5f5,0xb5d5,0xb5f5,0xb5d5,0xb5d5,0xb5d5,0xadd5,0xadd5,0xadb4,0xa5b4,0xadd5,0xa5d5,0xa5d5,0xa5d5,0xadb4,0xad94,0xa594,0xad94,0xad94,0xa594,0xa593,0xad93,0xa573,0xa553,0xa573,0xa573,0xa553,0x9d52,0x9d52,0x9d53,0x9d32,0x9d32,0x9d32,0xa552,0x9d32,0x9512,0x9d32,0x9d32,0x9d12,0x9d12,0x9d12,0x94f1,0x9cf1,0x94d1,0x94b1,0x94d1,0x8cd1,0x8cb0,0x8c91,0x8c90,0x8c90,0x8c90,0x8c90,0x8c70,0x8c70,0x8c70,0x846f,0x846f,0x846f,0x844f,0x844e,0x844e,0x842e,0x7c0e,0x7bee,0x7bee,0x73ee,0x7bed,0x7bed,0x7bed,0x7bed,0x7bed,0x73ad,0x7bed,0x7bad,0x73cc,0x73ac,0x7bad,0x73ac,0x738c,0x738c,0x73ac,0x73ac,0x6b8b,0x6b8b,0x6b6b,0x6b6b,0x6b6b,0x6b6b,0x6b4b,0x6b4b,0x636b,0x634b,0x634a,0x6b6a,0x6b6b,0x6b4b,0x634a,0x6b4a,0x6b2a,0x6b2a,0x632a,0x630a,0x5b09,0x632a,0x630a,0x630a,0x62e9,0x62e9,0x62e9,0x5ae9,0x62c9,0x62c8,0x62c9,0x5ac8,0x5ac8,0x5ac8,0x5aa8,0x5aa9,0x62a8,0x5aa8,0x5aa8,0x5288,0x52a8,0x5a88,0x5aa8,0x52a8,0x4a88,0x5268,0x5a88,0x5288,0x5288,0x5287,0x5288,0x5268,0x5288,0x5288,0x5268,0x5288,0x4a67,0x4a88,0x5288,0x5a68,0x5248,0x5248,0x4a48,0x5248,0x4a48,0x5248,0x4a47,0x4a47,0x5a68,0x5247,0x4a47,0x4a48,0x4a47,0x5248,0x4a47,0x4a47,0x4a47,0x4a47,0x4a47,0x4a47,0x4a27,0x4a47,0x4227,0x4a47,0x4a47,0x4a47,0x4a26,0x4a27,0x4a27,0x4a47,0x4a47,0x5247,0x4a07,0x4a27,0x4a27,0x5226,0x4a26,0x4a07,0x4a07,0x41e6,0x4227,0x4a27,0x4a27,0x4a27,0x4226,0x4a06,0x4a06,0x4a27,0x4226,0x4227,0x4207,0x4206,0x4226,0x4247,0x4227,0x4226,0x4206,0x41e6,0x4a06,0x4a06,0x49e6,0x41e6,0x41e6,0x4206,0x39c6,0x41e5,0x4205,0x39e5,0x4206,0x4206,0x41e7,0x41c7,0x41e6,0x41e6,0x39e6,0x41e6,0x41e6,0x41e5,0x4205,0x41e6,0x4206,0x39e6,0x39c6,0x41e6,0x41e6,0x41c5,0x39e6,0x39e6,0x39c6,0x39c6,0x39e7,0x41e6,0x41c6,0x39c5,0x39c5,0x41c6,0x39c6,0x39c6,0x39c5,0x39a5,0x39a6,0x39a5,0x39a5,0x39a5,0x39c5,0x39c5,0x31c5,0x39c5,0x39e5,0x39c5,0x39a5,0x39a5,0x39c6,0x39c5,0x31a5,0x39c5,0x39a5,0x31a5,0x39a5,0x39a5,0x3985,0x31c5,0x39c5,0x39c5,0x39a5,0x39a5,0x31c5,0x39e5,0x52a8,0x7c0f,0x9491,0x5b0c,0x62eb,0x52ea,0x5aca,0x52c9, +0x94f1,0x9cf1,0x9cf2,0x9cf3,0x9513,0xa533,0xad94,0xce78,0xdf7c,0xadf6,0x6bee,0x4ac9,0x4247,0x4227,0x4227,0x4246,0x4247,0x4a46,0x4206,0x4a26,0x4206,0x4226,0x4a47,0x4227,0x4a27,0x4a27,0x4a47,0x4247,0x4247,0x4a27,0x5268,0x4a68,0x4a67,0x5288,0x4a68,0x4a48,0x5268,0x5a88,0x5aa8,0x5a69,0x5289,0x5288,0x52a9,0x52a9,0x52a9,0x5268,0x62a8,0x5aa8,0x5aa8,0x5aa9,0x5ac9,0x5289,0x5288,0x52c9,0x5ac9,0x5ae9,0x5b0a,0x62ea,0x62ca,0x6b0a,0x630a,0x6b0a,0x6309,0x6b2a,0x734b,0x632a,0x6b0a,0x6b2b,0x6b4b,0x6b4b,0x6b4b,0x6b4a,0x6b6b,0x6b4b,0x736a,0x738b,0x6b4b,0x736b,0x6b6b,0x736a,0x738b,0x738c,0x736b,0x738b,0x73ac,0x7b8c,0x736c,0x7b8c,0x7b8c,0x738c,0x73ac,0x738c,0x6b8b,0x738c,0x738c,0x736b,0x734c,0x738c,0x73ac,0x738d,0x73ac,0x738c,0x7b8c,0x736c,0x734b,0x736c,0x738d,0x7b8d,0x736c,0x738b,0x736c,0x738c,0x738d,0x736c,0x738c,0x7bac,0x7b8c,0x7b8c,0x7b8c,0x6bac,0x738c,0x738c,0x736c,0x6b4b,0x738c,0x736b,0x736c,0x738c,0x6b6c,0x734c,0x736c,0x738c,0x6b6c,0x6b4b,0x6b4b,0x734c,0x6b6b,0x6b6c,0x6b4b,0x736b,0x736b,0x734b,0x6b4b,0x6b4b,0x6b4b,0x6b6c,0x6b6b,0x634b,0x734b,0x732b,0x734b,0x6b2b,0x736b,0x734b,0x6b2b,0x6b4b,0x6b4b,0x6b4b,0x6b2b,0x6b2b,0x6b2a,0x630a,0x6b2b,0x6b2b,0x6b2b,0x732a,0x6b2b,0x632b,0x6b2b,0x732b,0x632a,0x632a,0x6b2b,0x6b0a,0x630b,0x5b0a,0x630a,0x6b0a,0x6b0a,0x630a,0x5aea,0x630a,0x5aea,0x5aea,0x630a,0x62ea,0x62ea,0x630a,0x62ea,0x5aca,0x630a,0x62ca,0x5aca,0x62ea,0x62ca,0x5aea,0x630a,0x5ae9,0x5aea,0x62ca,0x62ca,0x62aa,0x5ac9,0x5aea,0x62e9,0x62ea,0x62ca,0x62ca,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x5aa9,0x62c9,0x62c9,0x5ac9,0x62a9,0x62a9,0x62a9,0x5aa9,0x5ac9,0x5aa9,0x62a9,0x5aa9,0x5aa9,0x5aa9,0x5aa9,0x5aa9,0x52a9,0x52a8,0x5289,0x5289,0x5aa9,0x52a8,0x5288,0x5aa8,0x5268,0x5268,0x5288,0x5288,0x5268,0x4a49,0x4a68,0x4a67,0x5268,0x5248,0x5268,0x4a68,0x4a67,0x4a68,0x4a68,0x4a48,0x4a48,0x4a67,0x5268,0x5247,0x5227,0x4a27,0x4a27,0x4a47,0x4a27,0x4207,0x4a28,0x4a47,0x4a27,0x4228,0x4227,0x3a27,0x4207,0x4227,0x4227,0x4227,0x4207,0x4a07,0x4a07,0x4a07,0x4207,0x49e7,0x4a07,0x4206,0x3a06,0x4206,0x49e7,0x4206,0x4206,0x3a06,0x39e6,0x39e6,0x4206,0x41e5,0x41e6,0x39e6,0x41c6,0x41e6,0x41e6,0x3a06,0x41e6,0x41c6,0x39e6,0x41c6,0x39c6,0x39e5,0x39e5,0x41e6,0x41e6,0x39e6,0x4206,0x4227,0x4a48,0x4a67,0x4247,0x6b8c,0xbe17,0x734e,0x52ab,0x5aea,0x52ca, +0x94f2,0x94f2,0x9cf2,0xa513,0xa513,0xbdd6,0xef7d,0xbeb9,0x5b4b,0x52c9,0x5ac9,0x62c9,0x5b09,0x5b09,0x5aea,0x5aca,0x62c9,0x62e9,0x5ac9,0x5ac9,0x5aca,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x52e9,0x5b0a,0x630a,0x62ea,0x5aea,0x62ea,0x5aea,0x62ea,0x62ea,0x630b,0x62ea,0x5b0a,0x630a,0x630a,0x630a,0x630a,0x630a,0x630b,0x5b0a,0x632b,0x5b2a,0x632b,0x6b2b,0x632b,0x6b2b,0x632a,0x734b,0x6b2b,0x632b,0x6b4b,0x6b2b,0x6b4b,0x6b6b,0x734b,0x6b4b,0x734c,0x736c,0x736c,0x734c,0x736b,0x6b4b,0x6b6b,0x6b6b,0x736c,0x736b,0x736b,0x6b6b,0x6b6b,0x6b6b,0x736b,0x736b,0x6b8c,0x736b,0x736b,0x736b,0x736c,0x7b8c,0x736b,0x736c,0x736c,0x736c,0x7b8c,0x736c,0x738b,0x738b,0x738c,0x6b8c,0x7b8c,0x738b,0x738c,0x738c,0x6bac,0x736c,0x7b6c,0x738c,0x738c,0x736b,0x736b,0x736b,0x7b4b,0x736b,0x6b6b,0x7b6b,0x736c,0x7b4c,0x736b,0x736b,0x6b8c,0x736c,0x6b6c,0x7b8c,0x736c,0x736b,0x6b8b,0x6b8c,0x736b,0x736c,0x736c,0x736b,0x734b,0x6b6c,0x6b6b,0x6b6b,0x734b,0x732b,0x732b,0x6b4b,0x6b4b,0x6b4b,0x6b4c,0x6b4b,0x6b4b,0x734b,0x734b,0x734b,0x732b,0x6b2b,0x6b2b,0x6b2b,0x6b2b,0x6b4b,0x734b,0x6b4b,0x6b4b,0x6b4b,0x6b4b,0x634b,0x634b,0x632b,0x6b2b,0x632a,0x634b,0x632b,0x5b2b,0x632a,0x632a,0x632b,0x6b0b,0x6b2a,0x632a,0x6b0b,0x632b,0x6b2b,0x6b0b,0x632a,0x6b0a,0x632a,0x6b0a,0x630b,0x630b,0x62ea,0x630a,0x630b,0x62eb,0x5aeb,0x630a,0x630b,0x630b,0x630a,0x62eb,0x62ea,0x62ea,0x62ea,0x5aea,0x5aea,0x62ca,0x62ca,0x62c9,0x62c9,0x62c9,0x62ea,0x52e9,0x5ac9,0x62ca,0x5ac9,0x5aca,0x5ac9,0x5ac9,0x62c9,0x5aa9,0x5ac9,0x5ac9,0x5ac9,0x5ac9,0x62c9,0x5aa9,0x62a9,0x62a9,0x5aa9,0x5aa9,0x52a9,0x5aa9,0x52a9,0x52a9,0x5aa9,0x5a89,0x5a89,0x5a88,0x5aa9,0x5aa9,0x52a9,0x5289,0x5a89,0x5a88,0x5a88,0x5288,0x52a9,0x5288,0x5268,0x5268,0x6268,0x4a67,0x5267,0x5268,0x5268,0x4a68,0x4a68,0x4a68,0x4a67,0x5267,0x4a68,0x5248,0x5267,0x4a67,0x4a68,0x4a67,0x4a47,0x4a48,0x4a68,0x4247,0x4a47,0x4a47,0x5227,0x4a27,0x4a47,0x4227,0x4227,0x4227,0x4227,0x4a27,0x4227,0x4a27,0x4227,0x4227,0x4a07,0x4a06,0x4227,0x4227,0x4227,0x4a07,0x4a07,0x4a07,0x51e7,0x4a06,0x4a06,0x4a06,0x4a07,0x4206,0x4206,0x4a06,0x4206,0x4226,0x3a06,0x41e6,0x4206,0x41e6,0x3a06,0x39e6,0x4206,0x41e6,0x41e6,0x41e6,0x3a06,0x41e6,0x49e6,0x41e6,0x41e6,0x41c6,0x39e6,0x39e6,0x41e5,0x41e6,0x3a06,0x4206,0x4a27,0x5247,0x5268,0x4a68,0x4267,0x536a,0xef9d,0x7b8f,0x52eb,0x52ca, +0x94f2,0x94d2,0x9cf2,0xa533,0xc5b5,0xef7e,0x9df6,0x4ac9,0x6329,0x630a,0x5b29,0x5b0b,0x5ae9,0x62c9,0x5ac9,0x52c9,0x5ac9,0x5ac9,0x52e9,0x5ac9,0x62c9,0x62aa,0x62c9,0x5ac9,0x5ae9,0x5ae9,0x5ae9,0x5b0a,0x5b09,0x62c9,0x62ca,0x62ca,0x62ea,0x5aea,0x62e9,0x62ea,0x62ca,0x6aea,0x62ea,0x62ea,0x62ea,0x62ea,0x630a,0x62ea,0x5aea,0x5b0a,0x5b0a,0x630a,0x630a,0x6b0b,0x6b0b,0x632a,0x630a,0x632a,0x632a,0x632b,0x632a,0x632b,0x634a,0x734b,0x734b,0x734c,0x6b4b,0x734a,0x734b,0x734b,0x6b4b,0x6b6b,0x636b,0x734b,0x736b,0x736b,0x6b6b,0x6b6c,0x6b6b,0x6b6b,0x736b,0x736b,0x6b6b,0x736b,0x736b,0x6b6b,0x6b6b,0x6b6b,0x736b,0x736b,0x7b6b,0x736b,0x736c,0x6b6b,0x6b8b,0x738c,0x738c,0x736c,0x736b,0x736b,0x738c,0x6b8b,0x738c,0x7b6c,0x7b8b,0x736b,0x6b8b,0x6b6b,0x6b8b,0x736b,0x736c,0x636b,0x6b6b,0x6b6b,0x736c,0x736b,0x738b,0x738b,0x7b6b,0x736b,0x736c,0x736c,0x738b,0x6b8c,0x6b6c,0x736c,0x6b4c,0x6b4c,0x736c,0x734b,0x6b6b,0x634b,0x6b2b,0x6b2b,0x6b4b,0x732c,0x6b2c,0x734b,0x6b4b,0x634b,0x6b2b,0x734b,0x6b2b,0x734b,0x6b4b,0x6b4b,0x6b4b,0x6b4b,0x6b2b,0x6b2b,0x6b2b,0x632b,0x6b2b,0x6b4b,0x632a,0x632b,0x6b4b,0x632b,0x6b2c,0x6b2b,0x630a,0x6b0b,0x630a,0x632a,0x6b2a,0x630b,0x6b2b,0x632a,0x632a,0x5b0a,0x6b0b,0x6aeb,0x630b,0x630b,0x630a,0x630a,0x630a,0x6b0a,0x630a,0x630a,0x630a,0x62ea,0x630a,0x5ae9,0x5aea,0x5aea,0x62ea,0x62ca,0x62e9,0x5aea,0x5ac9,0x62ea,0x5ae9,0x62c9,0x5aca,0x62ea,0x5aaa,0x62a9,0x5aa9,0x5aaa,0x5aa9,0x52c9,0x5ac9,0x5ac9,0x5ac9,0x62a9,0x62a9,0x62c9,0x62c9,0x62c9,0x5ac9,0x5aa8,0x5aa8,0x52a8,0x5ac8,0x5aa9,0x5a89,0x5a89,0x5289,0x5288,0x5288,0x5a89,0x5288,0x5288,0x5aa8,0x5aa9,0x52a9,0x5289,0x5289,0x5288,0x5288,0x5268,0x5288,0x5a88,0x5a68,0x5a48,0x5a68,0x5288,0x5248,0x4a88,0x5268,0x4a68,0x4a68,0x4a68,0x4a68,0x4a87,0x4a68,0x4a67,0x4247,0x4a47,0x4248,0x4a27,0x4a28,0x4247,0x4267,0x4247,0x4247,0x4a27,0x4a47,0x4247,0x4a47,0x4a27,0x4a47,0x4a27,0x4a47,0x4a27,0x4227,0x4a07,0x4a27,0x4a07,0x4a26,0x4a26,0x4227,0x4206,0x4207,0x4206,0x4206,0x41e6,0x4206,0x3a06,0x4206,0x41e6,0x41e6,0x41e6,0x41e5,0x39e6,0x41e6,0x39e6,0x4206,0x41e6,0x41e6,0x39e6,0x41e6,0x39e6,0x39e6,0x41c6,0x39c6,0x41c6,0x41c6,0x31c6,0x31e6,0x31c6,0x39e6,0x39e6,0x39e6,0x39e6,0x39c6,0x41c6,0x39e6,0x31c5,0x39e6,0x39e6,0x3a06,0x4206,0x4a27,0x5247,0x5268,0x52a9,0x52a9,0x4a46,0x84af,0xd69b,0x52cc,0x5aca, +0x94f2,0x9cf3,0x9cf3,0xa533,0xe73c,0xa637,0x4aa8,0x630a,0x630b,0x630b,0x630a,0x5b0a,0x5b09,0x5ae9,0x5ac9,0x5ac9,0x52c9,0x5ac9,0x5ae9,0x5ac9,0x5aa9,0x5aca,0x5ac9,0x5ac9,0x5aa9,0x62c9,0x62c9,0x5ac9,0x5ac9,0x5ac9,0x62ea,0x5aca,0x52c9,0x5aea,0x5b09,0x62e9,0x630a,0x62e9,0x5b09,0x62e9,0x62ea,0x62ea,0x632a,0x5b29,0x5ae9,0x62ea,0x5b0a,0x5b0a,0x630a,0x630a,0x630a,0x632a,0x630a,0x5b0a,0x62ea,0x6aea,0x6aea,0x6b2b,0x632b,0x634b,0x6b4a,0x6b4b,0x634a,0x6b4b,0x6b4b,0x6b2a,0x632a,0x6b6b,0x6b2b,0x734b,0x6b2a,0x6b4b,0x6b2a,0x632c,0x6b4b,0x6b4a,0x6b2b,0x734b,0x732b,0x6b4b,0x734b,0x6b2b,0x6b4b,0x6b6b,0x634a,0x636a,0x6b8c,0x636b,0x6b6b,0x6b4b,0x6b4b,0x6b6b,0x636b,0x6b4b,0x6b4b,0x6b4b,0x6b4a,0x6b6b,0x6b6b,0x632b,0x6b4b,0x634b,0x6b4b,0x634b,0x632b,0x6b4b,0x632b,0x6b2b,0x6b2b,0x6b0a,0x6b2b,0x632b,0x632a,0x632a,0x632a,0x6b4b,0x6b2b,0x6b0a,0x6b0b,0x630a,0x630a,0x6b0b,0x630a,0x630a,0x6b0a,0x630a,0x5aea,0x5aea,0x5aea,0x5aea,0x5aea,0x52ca,0x5b0a,0x5aea,0x5ae9,0x632a,0x6309,0x62e9,0x5aea,0x5aea,0x5ac9,0x5ac9,0x5ae9,0x5ac9,0x62c9,0x52a9,0x52c9,0x5ac9,0x5ac9,0x5aa9,0x62c9,0x5ac9,0x5aca,0x52c9,0x5aa9,0x5aa9,0x62c9,0x5ac8,0x62a8,0x5aa9,0x5aa8,0x5aa9,0x5aa9,0x5aa9,0x5aa8,0x52a8,0x5288,0x5288,0x5289,0x5a89,0x5a89,0x5289,0x52a9,0x4a88,0x4a68,0x5268,0x4a68,0x5288,0x4a68,0x4a67,0x5267,0x5267,0x5288,0x4a48,0x4a68,0x4a47,0x4a27,0x4a48,0x4a47,0x4a48,0x4227,0x4a47,0x4a47,0x5227,0x4a27,0x4a48,0x4a48,0x4a47,0x4a27,0x5247,0x4a27,0x4a27,0x5227,0x4a27,0x4207,0x4247,0x4227,0x4227,0x3a47,0x4a47,0x4a26,0x4247,0x4227,0x3a27,0x4a27,0x4227,0x4226,0x4a27,0x4a07,0x4a26,0x4226,0x41e7,0x41e6,0x4207,0x4207,0x4227,0x4227,0x4207,0x3a06,0x4206,0x3a07,0x3a06,0x4206,0x4226,0x4206,0x39e6,0x41c6,0x39c6,0x31e5,0x39e7,0x49c6,0x41e6,0x39a6,0x4206,0x39e6,0x39e5,0x31a5,0x39a5,0x39c6,0x39e6,0x41e6,0x39e6,0x41e6,0x39c6,0x31a5,0x39c5,0x3185,0x39a6,0x3185,0x39a5,0x39a5,0x31a5,0x39c6,0x3985,0x2965,0x3986,0x31a5,0x3985,0x3965,0x39a5,0x3985,0x3985,0x3185,0x31a5,0x3165,0x3185,0x29a4,0x2984,0x3185,0x3965,0x3185,0x2985,0x3945,0x3184,0x2944,0x3144,0x2944,0x2923,0x3144,0x3984,0x3163,0x2943,0x2964,0x2924,0x3124,0x2163,0x1964,0x2164,0x2964,0x2944,0x2964,0x2964,0x2965,0x3144,0x3964,0x3164,0x2965,0x2985,0x3184,0x39e6,0x4a88,0x5288,0x5289,0x5a89,0x52a9,0x52c9,0x31c5,0xb636,0x8411,0x5aab, +0x94f2,0x9d13,0xa513,0xb5b5,0xbefb,0x4aca,0x5309,0x630a,0x630a,0x5aea,0x5b0a,0x530a,0x52ca,0x4a89,0x4a88,0x4a68,0x4247,0x4a48,0x4227,0x4227,0x4a48,0x4226,0x4a48,0x4a27,0x4a47,0x4247,0x4247,0x4a27,0x4a47,0x4207,0x4a27,0x4a07,0x4a47,0x4247,0x4247,0x4206,0x4a06,0x41e6,0x4227,0x4a27,0x4227,0x4a07,0x4206,0x4a47,0x4a47,0x4a48,0x4a47,0x4a27,0x4227,0x4a68,0x4a27,0x4227,0x4a27,0x4a47,0x4227,0x4247,0x4248,0x4a47,0x4a67,0x4a48,0x5268,0x4a67,0x4a47,0x4a28,0x5a69,0x5268,0x5268,0x4a47,0x5289,0x4a48,0x4a88,0x5288,0x5289,0x4a48,0x4a68,0x52a8,0x4a88,0x52a8,0x52a8,0x4a88,0x4a89,0x5a8a,0x5a89,0x5289,0x52a9,0x4a68,0x4ac9,0x52c9,0x5288,0x5289,0x4a88,0x5269,0x5289,0x5288,0x4a89,0x5289,0x52a8,0x5a88,0x5288,0x5288,0x5289,0x4a68,0x5268,0x52a8,0x5289,0x5268,0x4a89,0x5288,0x5269,0x5269,0x4a69,0x5268,0x4a68,0x4a88,0x5268,0x5a48,0x5288,0x5289,0x5269,0x5249,0x4a68,0x5268,0x5268,0x5268,0x4a68,0x4229,0x5269,0x5269,0x5269,0x4a48,0x4a89,0x4289,0x4a89,0x4a69,0x4a48,0x4a67,0x4a68,0x4a48,0x4a69,0x4a68,0x4a69,0x4a48,0x4a48,0x5249,0x4a69,0x4a28,0x4a48,0x5268,0x4a48,0x4a28,0x4a68,0x4a68,0x4227,0x4228,0x4269,0x4a48,0x4a68,0x5268,0x4a48,0x4a48,0x4a48,0x4a08,0x4a28,0x4228,0x4227,0x4269,0x3a28,0x3a28,0x4208,0x4a08,0x49e7,0x4228,0x4227,0x4a07,0x4a07,0x4a08,0x41e8,0x41e7,0x4208,0x4207,0x4a07,0x4208,0x39e7,0x4207,0x4207,0x41e7,0x4207,0x39e8,0x41e7,0x39c6,0x39e7,0x41e7,0x39e7,0x31c6,0x31e6,0x39e7,0x39e7,0x39e7,0x39c7,0x41c6,0x39c7,0x39a7,0x39e7,0x31e6,0x39c7,0x39c6,0x39c6,0x39a6,0x31c6,0x31c6,0x31c6,0x31c7,0x39c6,0x39c6,0x39c7,0x31a7,0x39c6,0x39c6,0x39a6,0x3986,0x39a6,0x31c5,0x39c6,0x31a5,0x29a5,0x29a6,0x31c6,0x3186,0x31a6,0x39a5,0x29a6,0x2985,0x3165,0x31a6,0x2985,0x31a6,0x3185,0x2966,0x2985,0x3186,0x3185,0x3184,0x2986,0x2965,0x3165,0x3184,0x2985,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2945,0x2965,0x2945,0x2964,0x2945,0x2125,0x2145,0x2944,0x3164,0x2165,0x2965,0x2145,0x2945,0x1925,0x2124,0x2944,0x2144,0x2144,0x2943,0x2145,0x2145,0x1924,0x2123,0x2144,0x2964,0x1944,0x20e5,0x2104,0x2104,0x2904,0x1903,0x1904,0x10e3,0x1903,0x2123,0x2104,0x2925,0x2105,0x18e4,0x18e4,0x2124,0x18e4,0x10e3,0x10e4,0x1104,0x10e3,0x18e3,0x20e3,0x1904,0x1904,0x2103,0x2923,0x2103,0x1903,0x1923,0x2965,0x3985,0x4247,0x52a8,0x5aa9,0x5aa9,0x5ac9,0x5ac9,0x5289,0x5b6b,0xc5f7,0x5aab, +0x94f2,0x9d13,0xa513,0xbe57,0x6c10,0x52a8,0x5ac9,0x62ea,0x5b0a,0x5aea,0x52ca,0x52a9,0x4a68,0x4247,0x4207,0x4227,0x4248,0x4247,0x5268,0x5248,0x4a08,0x4a28,0x4228,0x4a08,0x39e7,0x41e7,0x39e7,0x4a28,0x4a07,0x4206,0x41e7,0x4a07,0x4227,0x4207,0x4207,0x4a68,0x5268,0x5289,0x5289,0x5269,0x5289,0x4a48,0x528a,0x4a48,0x4a48,0x4a68,0x4a89,0x4a88,0x4a48,0x4269,0x52a9,0x632b,0x630b,0x632c,0x634b,0x5b0b,0x52c9,0x4aea,0x4aea,0x52eb,0x52aa,0x5289,0x52ca,0x52aa,0x4a89,0x4a89,0x4a69,0x5aaa,0x52aa,0x52aa,0x4a89,0x4a89,0x4a89,0x4a89,0x4a8a,0x5289,0x5289,0x4a89,0x4a69,0x4a89,0x5289,0x4a69,0x4269,0x4289,0x4a4a,0x4a8a,0x4a89,0x42a9,0x4a89,0x4a89,0x4aa9,0x5269,0x4a8a,0x4a69,0x4a89,0x4a89,0x4a89,0x5289,0x5289,0x528a,0x526a,0x4a6a,0x4a69,0x4a6a,0x526a,0x4a8a,0x528a,0x526a,0x5a6a,0x528b,0x528a,0x526a,0x4a8a,0x528a,0x4a6a,0x526a,0x4aaa,0x528a,0x526a,0x528a,0x528a,0x526a,0x4a69,0x4a8a,0x52ab,0x4a6a,0x4a6a,0x4a8b,0x424a,0x4a69,0x4a6a,0x3a4a,0x426a,0x426a,0x4289,0x4269,0x4249,0x4249,0x4249,0x3a29,0x4a6a,0x4a69,0x4a89,0x4a4a,0x4a69,0x4a6a,0x424a,0x4249,0x4a6a,0x39e8,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4249,0x4249,0x4a6a,0x4269,0x4229,0x4a49,0x4a49,0x4a49,0x3a49,0x3a29,0x4a49,0x4229,0x3228,0x3229,0x3a08,0x3a08,0x3209,0x3229,0x3a28,0x3a27,0x4208,0x4209,0x41c8,0x39c7,0x39e7,0x3208,0x3228,0x39e8,0x3a07,0x3208,0x39e7,0x41e9,0x31c8,0x31e7,0x39c7,0x39c7,0x3207,0x31e8,0x31c8,0x31e8,0x31e7,0x3208,0x31a8,0x31a6,0x39e7,0x31e7,0x39e7,0x31e7,0x29c7,0x31c7,0x39e7,0x39e7,0x39e8,0x31e7,0x31a7,0x31c7,0x31a7,0x2986,0x31c7,0x29a7,0x2986,0x29c6,0x29c7,0x31c7,0x31a7,0x29c7,0x29a6,0x31a7,0x2987,0x3186,0x2986,0x2186,0x29a6,0x3166,0x3186,0x2986,0x29a7,0x2986,0x3186,0x2965,0x2165,0x3186,0x3965,0x29a6,0x2966,0x3187,0x31a5,0x2966,0x2986,0x1986,0x2186,0x2186,0x1165,0x1945,0x2146,0x2945,0x2166,0x2946,0x2925,0x2945,0x2925,0x2165,0x2145,0x1924,0x2145,0x2165,0x1944,0x1924,0x2104,0x2125,0x1924,0x18e5,0x1905,0x1904,0x10e4,0x1903,0x20e4,0x18e5,0x1905,0x2104,0x1904,0x1903,0x2105,0x1924,0x2105,0x1925,0x1905,0x20e5,0x28e4,0x2904,0x1905,0x1124,0x1904,0x20e4,0x1903,0x1903,0x1924,0x1904,0x1925,0x2125,0x2145,0x1104,0x1904,0x18e4,0x20e4,0x2125,0x1904,0x1124,0x2144,0x2925,0x2924,0x2144,0x2124,0x1903,0x1923,0x31c4,0x3a46,0x5b0a,0x5aa9,0x5aa9,0x5aa9,0x5aaa,0x4247,0xadf5,0x630c, +0x9cf2,0x9d12,0xa533,0xb678,0x4aeb,0x5288,0x5ac9,0x5ac9,0x5ae9,0x5ae9,0x4a68,0x4227,0x4228,0x3a07,0x4207,0x31e6,0x39e7,0x31c7,0x31e8,0x39c7,0x31e7,0x3a08,0x3a28,0x31a6,0x39a6,0x3206,0x3207,0x39e7,0x31c6,0x39c8,0x39e8,0x31e7,0x31e8,0x3209,0x39e7,0x31a6,0x39a7,0x31a7,0x39e7,0x39e7,0x41e8,0x3a08,0x3a28,0x3a08,0x39e8,0x39e8,0x4229,0x3228,0x3a07,0x4208,0x3a08,0x3a08,0x4229,0x3a28,0x39e8,0x4229,0x3a29,0x4249,0x3a29,0x3a49,0x4248,0x4249,0x3a29,0x4249,0x4249,0x4269,0x3a49,0x4269,0x4a69,0x4a6a,0x4249,0x4a8a,0x4aab,0x4a6a,0x4a6a,0x428a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a8a,0x426a,0x4a6a,0x526a,0x4a8b,0x4a6b,0x4a8b,0x4a89,0x4a49,0x528a,0x52ab,0x4aab,0x428b,0x52ab,0x52ab,0x4aab,0x52ab,0x52ab,0x52ac,0x4a6a,0x52cb,0x4acb,0x4a8b,0x52ab,0x5aeb,0x5a8a,0x52ab,0x4a8a,0x4a8b,0x526b,0x528b,0x4aab,0x4aaa,0x528b,0x4a8a,0x52cb,0x52aa,0x528a,0x52ab,0x52aa,0x4aab,0x428b,0x426a,0x4a6a,0x428b,0x426b,0x428b,0x4a8a,0x4a8a,0x528b,0x3a8a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x428a,0x4a8a,0x4a6a,0x424a,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4a4a,0x3a8a,0x428b,0x4a8a,0x4a69,0x4249,0x3a49,0x4249,0x3a29,0x4269,0x4249,0x424a,0x3a49,0x424a,0x4249,0x3a08,0x4a2a,0x424a,0x4a49,0x4a09,0x4209,0x3a08,0x3a09,0x4229,0x3a28,0x3a29,0x3a08,0x3a28,0x3a08,0x3a08,0x3a29,0x3a09,0x3a08,0x3a09,0x3a09,0x3228,0x3a28,0x4208,0x39e8,0x4208,0x4208,0x39e8,0x3a29,0x3a08,0x39e8,0x41e8,0x3a08,0x3208,0x39e8,0x31c8,0x3206,0x31a7,0x31c8,0x31c7,0x31a7,0x31c6,0x31c7,0x31a7,0x31a7,0x39e8,0x31c7,0x39c7,0x31c6,0x31a7,0x31a6,0x29a6,0x29a6,0x3186,0x3187,0x2966,0x29a6,0x31a7,0x29a7,0x29c7,0x3a07,0x29a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x3186,0x2985,0x2985,0x3166,0x3146,0x2986,0x2986,0x3186,0x29a6,0x3166,0x3166,0x2966,0x2986,0x2985,0x2965,0x2986,0x2986,0x1945,0x2145,0x2145,0x2145,0x2146,0x1945,0x2945,0x2125,0x2926,0x2925,0x1925,0x2905,0x2145,0x2145,0x2125,0x2125,0x1944,0x1944,0x2125,0x1904,0x2125,0x2124,0x1905,0x1904,0x18e4,0x2104,0x1904,0x20e4,0x18e4,0x1103,0x2104,0x18e3,0x20e4,0x18c4,0x1104,0x10e3,0x10c3,0x18e4,0x18e3,0x18e3,0x10e4,0x18c4,0x10e3,0x20c3,0x18e3,0x10e3,0x18c4,0x10e3,0x08c2,0x08e4,0x18c4,0x18c2,0x10c3,0x10c3,0x10e3,0x20e3,0x20e4,0x10e4,0x1104,0x1104,0x2125,0x2105,0x2125,0x2145,0x2185,0x2124,0x2144,0x39e5,0x4a48,0x52a9,0x52a9,0x5aa8,0x5289,0x4227,0x7cd0,0x736e, +0x9cf2,0xa513,0xad74,0x9e57,0x42a9,0x5288,0x5289,0x52a9,0x52a8,0x4a68,0x4247,0x3a07,0x31c7,0x39e7,0x4228,0x3a28,0x3a08,0x3a09,0x39e7,0x41e7,0x3a08,0x31e7,0x31c7,0x31c6,0x41c7,0x39e7,0x31e7,0x3207,0x31c7,0x29e8,0x2a07,0x31e6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e8,0x31c7,0x39e8,0x3a08,0x3a28,0x3a27,0x3a07,0x4208,0x4209,0x3a09,0x3a09,0x3a08,0x4228,0x3a08,0x3a08,0x3a29,0x3a49,0x4229,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4a49,0x4249,0x3a49,0x4269,0x4249,0x4249,0x424a,0x4a49,0x4249,0x4a29,0x4249,0x426a,0x4269,0x4a6a,0x426a,0x426a,0x4a6a,0x428a,0x4a8a,0x526a,0x4a6a,0x4a6a,0x4a6a,0x528a,0x4a8b,0x4a6b,0x4a4a,0x4269,0x4a49,0x526a,0x52ab,0x428b,0x42aa,0x4aab,0x4a8b,0x4a8b,0x528a,0x4a8a,0x4aab,0x428b,0x4a8b,0x4a8b,0x528a,0x528a,0x528b,0x528b,0x526b,0x526b,0x4289,0x4a8a,0x4a49,0x42aa,0x4a8b,0x4a8b,0x4a8a,0x4a8b,0x4a6a,0x528a,0x4a8a,0x4a6a,0x4a8b,0x426a,0x4a8b,0x4a4b,0x4a6a,0x426a,0x4a6a,0x4a49,0x428b,0x426a,0x428a,0x4a6a,0x4a6a,0x426a,0x4249,0x4a49,0x4269,0x426a,0x4a8a,0x4a6a,0x4a69,0x424a,0x4a49,0x4a49,0x4249,0x4269,0x3a6a,0x4269,0x4269,0x424a,0x3a49,0x4a49,0x4249,0x3a49,0x3a49,0x3a29,0x426a,0x3a08,0x4209,0x3a29,0x4249,0x3a49,0x3a4a,0x3a09,0x4208,0x3a09,0x4208,0x4229,0x4208,0x4228,0x3a08,0x3a08,0x39e8,0x31e8,0x3a08,0x31a7,0x39e8,0x39e8,0x39c8,0x31e8,0x31c7,0x3a07,0x3a07,0x31e8,0x41e7,0x31c7,0x29a7,0x31c7,0x39c7,0x39c7,0x39c7,0x31e7,0x31c7,0x31a7,0x31c7,0x31a7,0x3186,0x3187,0x29a6,0x2986,0x3186,0x3166,0x2166,0x3167,0x2186,0x2186,0x2986,0x2986,0x2986,0x3186,0x3166,0x2966,0x2986,0x2186,0x2166,0x2946,0x3165,0x2166,0x2166,0x2165,0x2965,0x2965,0x3145,0x2966,0x2166,0x2946,0x3145,0x2964,0x2165,0x2925,0x2145,0x1945,0x2945,0x2144,0x2105,0x2145,0x2945,0x1925,0x1925,0x2125,0x2145,0x2125,0x2125,0x1925,0x2125,0x1924,0x1125,0x1924,0x2104,0x2124,0x1904,0x10e4,0x1905,0x18e5,0x20e4,0x2124,0x1104,0x1905,0x1104,0x1903,0x1903,0x1903,0x10e4,0x1904,0x20c4,0x28e4,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x08c3,0x08c3,0x10c3,0x10a4,0x08e3,0x10c3,0x18e3,0x18a3,0x08c3,0x10c3,0x10e2,0x10a3,0x08a3,0x10c2,0x18c3,0x10c3,0x08a2,0x00c3,0x10c3,0x18a2,0x10c2,0x18a3,0x18c2,0x18c2,0x10c3,0x08c3,0x08a4,0x08c3,0x18e4,0x18e4,0x2905,0x2145,0x1965,0x3166,0x1145,0x1943,0x3a06,0x4a68,0x4a88,0x5288,0x5268,0x4227,0x63ab,0x83cf, +0x9cf3,0xa513,0xb5b5,0x8dd6,0x4248,0x5288,0x5288,0x4aa8,0x4aa8,0x3a07,0x3a07,0x3a07,0x3a08,0x4248,0x3a28,0x31e8,0x31c8,0x31e7,0x3186,0x31a7,0x31e7,0x31e6,0x29a5,0x3986,0x31a6,0x31a6,0x39c6,0x31c7,0x31c7,0x29a6,0x29c6,0x3187,0x29c7,0x29c7,0x39c7,0x39c7,0x31c8,0x39a7,0x41c7,0x31a6,0x39e8,0x31c7,0x39c7,0x39e8,0x39e8,0x3a08,0x3a08,0x3208,0x39e8,0x3208,0x29c7,0x3207,0x39e8,0x3228,0x3a08,0x3a07,0x4208,0x4229,0x4229,0x4208,0x4229,0x4228,0x3a28,0x3a29,0x4269,0x3a49,0x3a08,0x3a08,0x3a2a,0x424a,0x424a,0x3228,0x3a69,0x3a48,0x4269,0x4249,0x3a29,0x4249,0x4269,0x428a,0x422a,0x4a4a,0x426a,0x4249,0x4a69,0x4a49,0x4a6a,0x4a6a,0x3a4a,0x4229,0x426a,0x4a6a,0x528a,0x4a8a,0x4a8a,0x428a,0x4a8a,0x4a8a,0x426a,0x426a,0x428a,0x428b,0x426a,0x4a8a,0x428a,0x528b,0x4aab,0x428b,0x528a,0x4a8a,0x4a6b,0x524a,0x4a6a,0x426a,0x4a69,0x5249,0x526a,0x52ab,0x4a6a,0x4a6a,0x426a,0x4a8a,0x426a,0x528b,0x4a6a,0x4a6a,0x428a,0x426a,0x428a,0x424a,0x4229,0x428a,0x4a6b,0x4269,0x4249,0x3a4a,0x4a4a,0x424a,0x4269,0x4248,0x4249,0x4229,0x4229,0x4a2a,0x424a,0x3a28,0x426a,0x3a49,0x424a,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x3a49,0x4249,0x4229,0x4249,0x4249,0x4208,0x4209,0x39e8,0x31e8,0x31e9,0x39c8,0x31e7,0x31e8,0x39e8,0x41c8,0x4208,0x3a28,0x3a08,0x31e8,0x39e8,0x41c8,0x39e8,0x3208,0x39c7,0x39e7,0x39c8,0x39c8,0x39c8,0x39e7,0x39e7,0x39c7,0x39a7,0x29c7,0x31c8,0x39c7,0x31a7,0x31c7,0x31c7,0x31e7,0x31a7,0x2987,0x3186,0x3187,0x39a6,0x3187,0x2987,0x2166,0x3186,0x2986,0x2186,0x3186,0x29a6,0x3166,0x2986,0x2145,0x2965,0x3166,0x3166,0x2966,0x1945,0x2186,0x2145,0x2145,0x2125,0x2925,0x2966,0x2946,0x2166,0x1925,0x2145,0x2946,0x1926,0x1945,0x2145,0x2125,0x2925,0x2145,0x1945,0x1904,0x1944,0x2144,0x2145,0x1925,0x1905,0x1104,0x1924,0x1905,0x2105,0x2105,0x2124,0x1904,0x1904,0x1904,0x1905,0x1903,0x1903,0x1904,0x1905,0x1904,0x1104,0x1904,0x1904,0x1904,0x18e4,0x18e4,0x10e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1103,0x18e4,0x18c4,0x18e4,0x20e4,0x10c2,0x18e3,0x10c2,0x18c3,0x18c3,0x18c2,0x18e3,0x08c3,0x00a3,0x08c3,0x10c4,0x08c3,0x08c3,0x10c3,0x18a3,0x0882,0x08a3,0x10c2,0x10a3,0x08a2,0x10a3,0x18c2,0x1082,0x0883,0x08c2,0x10c3,0x1082,0x08a3,0x10a2,0x08a2,0x08c3,0x08a3,0x08a3,0x00c3,0x08c3,0x10c3,0x10e4,0x1124,0x1924,0x2145,0x2946,0x1165,0x2103,0x39e6,0x4227,0x4a68,0x5287,0x5268,0x4a27,0x5b2a,0x83cf, +0x9d13,0xa513,0xb5b5,0x8575,0x4a28,0x5288,0x4a68,0x4a88,0x4288,0x39e6,0x31a6,0x39e8,0x39e8,0x4208,0x3a08,0x31e8,0x31c7,0x31e7,0x39e7,0x39e7,0x39c7,0x31c7,0x2186,0x31a6,0x31a7,0x31a7,0x29c6,0x29a7,0x29a7,0x3186,0x31a6,0x3186,0x29c6,0x29c7,0x31c7,0x29c7,0x29a7,0x31c7,0x31e7,0x31c7,0x31c7,0x39c7,0x41e8,0x39c8,0x31c8,0x39e7,0x31c7,0x31e8,0x29c7,0x3a08,0x3207,0x31e7,0x39e7,0x39e7,0x41e8,0x3a07,0x4208,0x3a08,0x3a48,0x4249,0x4229,0x3a09,0x4209,0x3a29,0x4249,0x3a29,0x4229,0x4229,0x3a09,0x4249,0x4249,0x3249,0x3249,0x3a49,0x4228,0x4228,0x3a49,0x3a49,0x4269,0x4249,0x426a,0x428a,0x4269,0x4249,0x4a49,0x4a4a,0x3a4a,0x424a,0x4269,0x4a89,0x3a49,0x428a,0x526a,0x424a,0x3a4a,0x426a,0x4249,0x4a6a,0x426a,0x428a,0x4a8a,0x4aaa,0x426a,0x4a6a,0x4a8b,0x526b,0x428a,0x4a8b,0x4a8a,0x528a,0x4a6a,0x4a4a,0x4a4a,0x424a,0x428a,0x4a69,0x4a8a,0x428a,0x4a4a,0x4a49,0x4269,0x426a,0x426a,0x4a6a,0x4249,0x4249,0x4269,0x4a8a,0x424a,0x426a,0x426a,0x428a,0x426a,0x428a,0x4269,0x424a,0x3a4a,0x4249,0x3a08,0x3a08,0x4a49,0x4208,0x4209,0x4a2a,0x3a49,0x3a49,0x4208,0x8431,0x4a4b,0x39e9,0x52ac,0x528b,0x4a8b,0x31a7,0x632d,0x39e9,0x9c93,0x526b,0x31a7,0x738f,0x6b4f,0x528b,0x9cb4,0xa515,0x528b,0xa515,0x94b3,0x83d0,0x3187,0x7bd1,0x2126,0x8411,0xad55,0x8c11,0x3166,0x39e8,0x39c7,0x39e7,0x39e8,0x39c8,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x39c7,0x39a7,0x31a7,0x3167,0x3167,0x2987,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x31a7,0x3986,0x2966,0x31a7,0x3187,0x2966,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3166,0x2966,0x2166,0x2166,0x2166,0x2166,0x2166,0x2146,0x2966,0x2985,0x2965,0x2946,0x2165,0x2145,0x1145,0x2145,0x2166,0x2145,0x2925,0x2945,0x2925,0x2945,0x1945,0x1145,0x2145,0x2145,0x2125,0x1905,0x1905,0x2105,0x1925,0x1904,0x2104,0x18e4,0x1904,0x1904,0x1105,0x1905,0x1104,0x1104,0x18e4,0x10e5,0x1104,0x10e4,0x1904,0x1104,0x20e4,0x18e3,0x20e4,0x10e4,0x18e4,0x18e4,0x18c3,0x18e4,0x20e4,0x18c3,0x10c3,0x08e3,0x18c3,0x18c3,0x10c3,0x10c4,0x18e3,0x20c2,0x18c2,0x18c3,0x10c2,0x10c3,0x08c3,0x08c3,0x08c3,0x08c2,0x10c2,0x10c4,0x08a3,0x08a2,0x08a2,0x08a3,0x10a3,0x08c2,0x10a2,0x10a2,0x08c3,0x10a3,0x18c2,0x18c3,0x18c3,0x10a3,0x10a3,0x1083,0x10c2,0x10c2,0x08a3,0x18a4,0x10c4,0x1104,0x1904,0x2104,0x1924,0x2124,0x2125,0x1945,0x18e4,0x3184,0x4227,0x5288,0x4a68,0x4a68,0x4a28,0x52c9,0x8c0f, +0x9d13,0x9d33,0xadb5,0x8d54,0x4a28,0x5288,0x5288,0x4a88,0x4268,0x31c5,0x39c6,0x3a07,0x3207,0x3a08,0x4208,0x39c7,0x31c7,0x31e7,0x31e7,0x31a6,0x31a7,0x31a7,0x3186,0x29a7,0x31c8,0x31a7,0x31a7,0x3187,0x31c7,0x3186,0x29a7,0x31a6,0x31a6,0x31c7,0x31a7,0x39c7,0x39a8,0x39c8,0x39e7,0x39c7,0x39e7,0x39c6,0x4208,0x39e8,0x39e8,0x39e8,0x29c7,0x31e8,0x39e7,0x3a08,0x4228,0x39e8,0x3a08,0x3a08,0x3a08,0x4209,0x39e8,0x39e8,0x4229,0x4248,0x4249,0x3a08,0x3a29,0x4229,0x4229,0x4229,0x4229,0x3a28,0x424a,0x4229,0x4228,0x3a08,0x3a29,0x3a2a,0x4229,0x4249,0x426a,0x4a8b,0x424a,0x4a6a,0x424a,0x424a,0x426a,0x426a,0x3a69,0x4a6a,0x4229,0x424a,0x4a29,0x528a,0x426a,0x4a6a,0x426b,0x426a,0x428b,0x426b,0x426a,0x426a,0x428a,0x4a6a,0x4249,0x4a8a,0x4a8b,0x4a6a,0x4a6a,0x4a8a,0x4249,0x4a69,0x528a,0x4a6a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4269,0x4a89,0x4a8a,0x426a,0x4a6a,0x426a,0x424a,0x424a,0x4249,0x4249,0x4a4a,0x4a4a,0x4249,0x4209,0x420a,0x49e8,0x4a29,0x4269,0x4229,0x4229,0x4249,0x424a,0x426a,0x4229,0x4229,0x4249,0x3a48,0x4249,0x4a29,0x4a4a,0x4229,0x3a08,0x41e8,0xe75b,0x9d56,0x3166,0xad77,0x83f0,0x636f,0x2104,0xc637,0x420a,0xe75c,0x9d37,0x2945,0xef5c,0x9d55,0x7c30,0x7c72,0x5b4e,0x426a,0xc6da,0x2a28,0xc69a,0x39e9,0xcedb,0x39a7,0xb638,0x2a06,0xb5f7,0x52ac,0x39e8,0x39e8,0x3a08,0x3a08,0x31a7,0x3167,0x31a6,0x31a6,0x31c7,0x29a7,0x31a7,0x2946,0x3186,0x3987,0x3187,0x2966,0x3166,0x3186,0x2966,0x2946,0x3186,0x3166,0x2946,0x2946,0x2146,0x2946,0x2946,0x2945,0x3166,0x2145,0x2945,0x1945,0x2145,0x2926,0x2946,0x2145,0x2925,0x2925,0x2925,0x2925,0x2126,0x2126,0x2126,0x1925,0x2145,0x1905,0x2105,0x2125,0x1904,0x1905,0x1105,0x1905,0x2105,0x2905,0x2105,0x2125,0x2104,0x0904,0x1904,0x1904,0x1905,0x18e5,0x18e4,0x2105,0x2125,0x1904,0x18e5,0x10e4,0x18e3,0x18c4,0x18e4,0x18e4,0x1904,0x18e4,0x20e4,0x18e4,0x18c4,0x10c4,0x10a3,0x20e3,0x18c4,0x18e4,0x18e4,0x10e3,0x18c4,0x10e4,0x10c4,0x10c4,0x18c4,0x10e4,0x10c3,0x1104,0x18e3,0x10c3,0x10c3,0x10c4,0x18c3,0x18c3,0x10e2,0x10c3,0x10c3,0x18c2,0x10c2,0x08c2,0x18c3,0x10a3,0x10a2,0x10a4,0x10c4,0x08c3,0x10c3,0x10c2,0x08a2,0x0883,0x18a2,0x1882,0x10a2,0x10c3,0x08c2,0x10a2,0x10a2,0x10a2,0x10a3,0x1082,0x10a2,0x0082,0x00c2,0x20a2,0x1883,0x10a3,0x10e3,0x18e4,0x18e4,0x1923,0x2124,0x2125,0x1904,0x2943,0x4227,0x5268,0x5268,0x5288,0x4248,0x4ac9,0x8450, +0x9d12,0xa533,0xb5d5,0x8554,0x4228,0x5a88,0x5269,0x4a88,0x4248,0x31e7,0x39c6,0x39e7,0x3a07,0x3a07,0x3208,0x31e8,0x31e7,0x31e7,0x31c7,0x31c7,0x29a7,0x3187,0x3987,0x3186,0x2966,0x3187,0x2965,0x2966,0x2966,0x2987,0x29c7,0x2986,0x3187,0x31c8,0x31c7,0x2986,0x2986,0x3187,0x2966,0x2966,0x3166,0x3166,0x4187,0x31c7,0x2986,0x2166,0x2146,0x2987,0x31a7,0x2966,0x3186,0x3187,0x2987,0x2987,0x3187,0x3187,0x3167,0x2947,0x3146,0x2966,0x2946,0x2946,0x31a8,0x31e7,0x2987,0x2167,0x2927,0x2967,0x2147,0x2926,0x3187,0x39a8,0x31a8,0x3188,0x3167,0x3988,0x3988,0x39c9,0x3188,0x3988,0x3968,0x2968,0x29a9,0x2967,0x2988,0x39c9,0x39a8,0x2968,0x2947,0x3187,0x2147,0x3188,0x2967,0x2968,0x3168,0x31a9,0x2968,0x2947,0x2927,0x3988,0x2967,0x2968,0x39c9,0x31c8,0x39a9,0x39a9,0x39a9,0x39c9,0x41e9,0x49e9,0x41c9,0x4a0a,0x422a,0x420a,0x3a2b,0x422b,0x422a,0x420a,0x4a2b,0x420b,0x41e9,0x526b,0x4209,0x422a,0x4a6b,0x526b,0x5aac,0x62ac,0x526b,0x524b,0x5a2b,0x524b,0x4a4a,0x522a,0x4a2a,0x422a,0x4a4a,0x526b,0x5a8b,0x5a8b,0x39e9,0x422a,0x4229,0x4229,0x4a49,0x3a09,0x39e7,0xbe57,0xa576,0x4a29,0x9535,0x738f,0x5b4e,0x2145,0xc657,0x4a0a,0xc699,0xcebb,0x736e,0xb5f7,0x8cf4,0x7bf0,0xc69a,0xe6fc,0x422a,0xd6fb,0xc67a,0xbedb,0x2106,0xc6ba,0x6aed,0x94b3,0x31a7,0x39e8,0x39c8,0x39a8,0x39e8,0x39c7,0x3186,0x6b2e,0x6b2f,0x630e,0x52ac,0x4aac,0x52ac,0x5aac,0x5acd,0x52ac,0x5acc,0x632d,0x634e,0x6b4e,0x5aac,0x62cc,0x5acc,0x528b,0x528b,0x528b,0x62cd,0x62ed,0x5a6c,0x628c,0x524b,0x524b,0x5aac,0x52ac,0x5acd,0x5a6b,0x5a4b,0x5a8b,0x6acc,0x62ac,0x522a,0x4a09,0x5229,0x4a09,0x5229,0x5a4a,0x526a,0x49e9,0x4209,0x4a6b,0x4209,0x420a,0x49ea,0x4a0a,0x4a0a,0x41e9,0x4a2a,0x39c8,0x3988,0x3988,0x3167,0x3987,0x3187,0x2987,0x3188,0x31c9,0x3187,0x3187,0x3188,0x2147,0x2105,0x2106,0x2926,0x2926,0x2906,0x2926,0x2926,0x2125,0x2946,0x2926,0x1925,0x2906,0x2905,0x2905,0x20e5,0x20c4,0x20c4,0x20c4,0x2905,0x2105,0x2125,0x2905,0x18a3,0x18a4,0x18c4,0x18a3,0x1884,0x20a5,0x18c4,0x20c4,0x20c5,0x18c4,0x18c4,0x18e4,0x18e4,0x18e4,0x18c3,0x18a3,0x18a3,0x20c5,0x18c5,0x18c5,0x18e4,0x18c5,0x10a4,0x1905,0x2105,0x1905,0x1905,0x2105,0x18c5,0x10c4,0x18e4,0x18e4,0x2106,0x2105,0x2905,0x2926,0x2126,0x2125,0x2925,0x2126,0x1083,0x10a3,0x18e4,0x10c4,0x10c3,0x2104,0x2905,0x2124,0x2964,0x4207,0x5268,0x4a68,0x4a69,0x4a47,0x4aa9,0x8451, +0x9d13,0xa533,0xadf6,0x7d13,0x4248,0x5a88,0x5287,0x4a88,0x4a48,0x39e6,0x31e7,0x31e8,0x39e8,0x39e8,0x39e8,0x31e8,0x3187,0x3167,0x526b,0x52ac,0x62ed,0x6b2e,0x732f,0x6b2e,0x632e,0x6b4e,0x6b6f,0x73b0,0x6b8f,0x6b6f,0x6b6f,0x6b8f,0x6b6f,0x7bb0,0x7bd0,0x83f1,0x8432,0x7c32,0x8452,0x7c32,0x8c73,0x9493,0x9c73,0x9c73,0x9cb4,0x94d4,0x9cf4,0x9cd4,0x9cd4,0xa516,0xa536,0xa516,0xa536,0xad56,0xad56,0xad97,0xb5b8,0xb5b7,0xbdd8,0xc619,0xbe19,0xbdf8,0xbe19,0xc65a,0xc67b,0xc65a,0xce5a,0xce5a,0xce7a,0xce7b,0xd69b,0xd6bb,0xd69b,0xdebb,0xd6bc,0xdebc,0xdedc,0xcebb,0xd6bb,0xdefc,0xdf1c,0xe71c,0xe6fc,0xe71d,0xe75d,0xe75d,0xe73d,0xe73d,0xef5e,0xe75d,0xef5d,0xef5e,0xef5d,0xef7e,0xef9e,0xef9e,0xef7e,0xef9e,0xef9e,0xf7bf,0xffff,0xf7df,0xffff,0xf7df,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xadb8,0x4209,0x39e9,0x4a49,0x4229,0x41e8,0xdf3c,0x52aa,0xd6da,0x8d14,0x6b6e,0x6bd1,0x0842,0xceda,0x4209,0xbe17,0x9d34,0xc69a,0x630c,0x9d35,0x8430,0x634e,0x2166,0x29a7,0xcefb,0x2946,0xd6fc,0x2947,0xc6ba,0x526a,0x9d35,0x18c4,0x83af,0x49ea,0x41e8,0x39e8,0x41a7,0x2985,0xe77c,0xe79d,0xefbe,0xe79d,0xef7d,0xe79e,0xdf5c,0xe77d,0xe77d,0xdf5d,0xdf3c,0xdf3b,0xe79d,0xe79c,0xe75c,0xdf3c,0xd73c,0xd6fb,0xdf3b,0xdf3c,0xdf1b,0xd71b,0xcefb,0xcedb,0xd6fb,0xd71c,0xd73c,0xd71b,0xcefb,0xc6da,0xcefa,0xceda,0xc6da,0xc699,0xc6b9,0xc6b9,0xc699,0xbe58,0xb638,0xc659,0xc699,0xcefa,0xc71a,0xcf1a,0xced9,0xceb9,0xbe79,0xbe78,0xbe78,0xbe38,0xc679,0xbe79,0xbe59,0xc638,0xc678,0xce58,0xc658,0xc698,0xc69a,0xb637,0xc678,0xc679,0xc658,0xc618,0xb618,0xbe38,0xbe18,0xbe17,0xbe38,0xb638,0xb617,0xbe37,0xbe58,0xb617,0xb617,0xb618,0xb617,0xb5f6,0xbe18,0xb5f7,0xadf6,0xadd6,0xa5b6,0xadd6,0xadd7,0xa5b6,0xa5b6,0xa596,0xad97,0xad76,0xadb7,0xb5f7,0x9d96,0xadb5,0xadb6,0xa5d6,0xa595,0xa576,0xa556,0xa575,0xa574,0xa555,0xa575,0xad95,0xad75,0xa575,0xa555,0xa535,0x9514,0x9514,0x9514,0x94f2,0x94f3,0x9514,0x9d34,0x9513,0x9514,0x9d34,0x94f3,0x94d3,0x8cb2,0x8cd3,0x8cd3,0x9513,0x9d14,0x9cd4,0x526b,0x10a3,0x10e4,0x18c3,0x20e4,0x1904,0x1924,0x2944,0x4207,0x5268,0x5268,0x4a68,0x4a67,0x5288,0x8451, +0x9d13,0x9d13,0xb5b5,0x7cf3,0x4269,0x5288,0x5287,0x5288,0x4248,0x39c6,0x39c7,0x31e8,0x39c7,0x31c6,0x3207,0x39e8,0x6aac,0xc618,0xd6fb,0xd73b,0xcefb,0xc6fa,0xc6fa,0xdf3c,0xdf7d,0xd77d,0xdf5c,0xcf3b,0xcf5c,0xcefb,0xd71b,0xd75c,0xd75c,0xcf1b,0xcf1b,0xd73c,0xd73b,0xd71b,0xd71b,0xceda,0xc6ba,0xcefb,0xd6fa,0xcefa,0xcefb,0xcefb,0xc6fb,0xc6fa,0xc6ba,0xc69a,0xc6b9,0xc6da,0xcedb,0xc6da,0xc6da,0xcefb,0xbeba,0xb699,0xbe99,0xc699,0xb678,0xbe58,0xb637,0xbe37,0xbe59,0xbe58,0xbe37,0xadf6,0xb617,0xb5f6,0xadf7,0xa5d6,0xb617,0xa5b5,0xa595,0xa595,0x9d95,0x9d74,0x9d75,0x9d34,0x9534,0x9d75,0x9d75,0x9513,0x9d13,0x9533,0x84f3,0x84d2,0x8cd2,0x8cf3,0x84b2,0x8490,0x84b2,0x7c70,0x7c30,0x7c30,0x7c71,0x7451,0x6c50,0x6c2f,0x7430,0x7450,0x6c0f,0x63cf,0x63ce,0x6bee,0x63ce,0x5b6d,0x5b6c,0x5b6c,0x5b6c,0x638d,0x5b4c,0x5b6c,0x5b4c,0x52eb,0x530b,0x530b,0x4aaa,0x52ca,0x530b,0x5b4c,0x52ca,0x42aa,0x4aaa,0x428a,0x4249,0x4289,0x4248,0x4229,0x4269,0x3a69,0x4248,0x4248,0x3a28,0x4248,0x4a69,0x3a08,0x39e8,0x3a07,0x39c6,0x41e8,0x3a29,0x3a29,0x422a,0x4249,0x3a08,0xdf3d,0x2125,0xbdf7,0xb619,0x3a08,0xe73c,0xce79,0xbe9a,0x41e7,0xc618,0x5acb,0xcedb,0x4208,0x8cd4,0x7c2f,0xdefb,0xe73c,0x73d1,0xadd8,0x2146,0xb5d5,0x4229,0xc679,0x20e4,0xbe17,0xd6db,0xceda,0x3a09,0x39e8,0x39c7,0x39e8,0x39e7,0x1904,0x10c2,0x10a2,0x10e3,0x18c3,0x08a3,0x10c3,0x10e3,0x10e3,0x08c2,0x10e3,0x10a2,0x08a2,0x08a1,0x10a2,0x1081,0x0881,0x08c2,0x08c2,0x0882,0x0881,0x10c2,0x10a3,0x10c2,0x1903,0x08c2,0x1082,0x10a3,0x10e3,0x18c2,0x08a2,0x1082,0x1062,0x1082,0x0862,0x0861,0x1882,0x0061,0x0882,0x0861,0x1041,0x0061,0x0841,0x0861,0x0861,0x0061,0x0882,0x00a2,0x0081,0x10a2,0x10a2,0x0861,0x0861,0x08a2,0x0882,0x08a1,0x08a2,0x0882,0x0882,0x0861,0x0861,0x0861,0x10a1,0x1061,0x1041,0x0862,0x0061,0x0881,0x0881,0x0081,0x0882,0x10a2,0x08a2,0x10c2,0x18e3,0x0881,0x10a2,0x1081,0x10a2,0x0882,0x1082,0x1082,0x0862,0x0882,0x0861,0x0861,0x0861,0x0041,0x0861,0x0061,0x08c3,0x10e3,0x0820,0x0820,0x0820,0x0060,0x0041,0x0020,0x0800,0x0000,0x0041,0x0061,0x0020,0x0820,0x0020,0x0020,0x0000,0x0000,0x0021,0x0021,0x0020,0x0020,0x0040,0x0040,0x0841,0x0041,0x0041,0x0040,0x0020,0x0020,0x0000,0x0020,0x0020,0x0021,0x0040,0x3228,0x8c92,0x526c,0x0863,0x08c3,0x20e4,0x1903,0x1924,0x2122,0x4207,0x5269,0x5288,0x5288,0x5267,0x4a67,0x8c70, +0xa513,0x9d13,0xb5d5,0x74d2,0x4288,0x5289,0x5288,0x5268,0x4248,0x39c6,0x39c7,0x3a08,0x31a7,0x31e7,0x2986,0x6b0c,0xce7a,0x8d76,0x29e7,0x2986,0x2166,0x2145,0x1124,0x1924,0x2124,0x2125,0x2145,0x1965,0x2165,0x2165,0x2166,0x2125,0x20e4,0x2145,0x2144,0x2965,0x2185,0x1945,0x1944,0x2166,0x2965,0x2945,0x3185,0x2986,0x2985,0x2164,0x2165,0x2165,0x2186,0x2987,0x31a6,0x3186,0x2986,0x2186,0x2186,0x1965,0x2986,0x2987,0x29a7,0x29a6,0x2986,0x31a7,0x31c7,0x31c7,0x3a08,0x29e7,0x31c7,0x31a7,0x29e7,0x31c7,0x31e8,0x31c8,0x31c7,0x39e7,0x39c7,0x39e8,0x3a48,0x3a07,0x39e7,0x39e7,0x31e8,0x3a08,0x31c7,0x39e7,0x3a08,0x41e8,0x4228,0x422a,0x31c7,0x31e8,0x31e8,0x4208,0x41e7,0x3a28,0x4249,0x4249,0x4228,0x3a29,0x3248,0x3248,0x3229,0x3a29,0x4249,0x4269,0x4269,0x4269,0x4249,0x4229,0x4248,0x4249,0x4a69,0x4a49,0x4229,0x4a89,0x4249,0x4a69,0x4a6a,0x4a4a,0x426a,0x426a,0x4a49,0x426a,0x4229,0x424a,0x422a,0x424a,0x4a4a,0x4229,0x4228,0x4a8a,0x3a29,0x4229,0x4229,0x4229,0x4a69,0x4229,0x3a09,0x426a,0x3a08,0x3a29,0x4228,0x4a49,0x3a69,0x424a,0x4249,0x4249,0x4229,0x4269,0x4209,0x39c8,0x4229,0x3a08,0x3a29,0x3208,0x39e8,0x4228,0x4249,0x39e7,0x4208,0x4208,0x4249,0x3a07,0x29a7,0x31e8,0x31c8,0x39c8,0x39c7,0x39c7,0x3a08,0x3208,0x39e9,0x2987,0x3186,0x2986,0x39e7,0x29a7,0x39c8,0x41c8,0x4207,0x39e7,0x39e7,0x39a7,0x41a7,0x41c8,0x31e7,0x31e7,0x31e8,0x31c7,0x29a6,0x31c7,0x3165,0x3166,0x29a7,0x3187,0x3187,0x31a7,0x39c6,0x31a6,0x3186,0x21a6,0x29a6,0x3186,0x3166,0x2966,0x31a6,0x3186,0x3166,0x3186,0x2966,0x2966,0x3166,0x2185,0x2186,0x2145,0x2966,0x2946,0x1945,0x2145,0x2945,0x2965,0x2145,0x1945,0x2125,0x2945,0x2165,0x2145,0x2126,0x1125,0x1945,0x2145,0x2125,0x2105,0x2904,0x2125,0x2104,0x2104,0x2125,0x2124,0x2905,0x18e4,0x1904,0x1904,0x1904,0x18e4,0x10e4,0x2105,0x10e5,0x18c4,0x10e4,0x18e3,0x18e3,0x1904,0x10e4,0x18e4,0x18c4,0x18e4,0x10e4,0x18c3,0x10c4,0x10e4,0x10c3,0x10c3,0x10e2,0x0903,0x08e4,0x10c4,0x18e3,0x20c3,0x18c3,0x18e3,0x08a4,0x18e3,0x18e3,0x18c3,0x08e3,0x08e4,0x18c3,0x10a4,0x08c3,0x10e3,0x10c3,0x10c3,0x08a3,0x10c3,0x08a3,0x00a2,0x08c2,0x18a3,0x10c3,0x08c3,0x18a3,0x08c2,0x18c2,0x10c3,0x08c2,0x10a4,0x18c2,0x18c3,0x18c3,0x10e3,0x10a3,0x08e4,0x10c4,0x20e4,0x0081,0x52ea,0x7c12,0x0842,0x08c4,0x20e4,0x1103,0x1103,0x2964,0x3a06,0x5288,0x5288,0x4a88,0x4a88,0x4267,0x8c50, +0x9d34,0xa554,0xadd5,0x74b2,0x4a68,0x4a68,0x5287,0x5288,0x4268,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x2966,0xa4f3,0x95f7,0x1166,0x2966,0x3187,0x31c7,0x3187,0x2186,0x31a7,0x29a6,0x31a7,0x3187,0x31a7,0x31c7,0x31c7,0x39a7,0x39c7,0x39c8,0x39c7,0x31a7,0x39c6,0x31e7,0x31e8,0x31c7,0x31c7,0x31c8,0x39c7,0x31c7,0x31e7,0x31c7,0x39c8,0x31c7,0x41e8,0x3a08,0x39c8,0x39e8,0x3a08,0x41e8,0x3208,0x39e7,0x4208,0x39e8,0x4228,0x3a29,0x3a08,0x4208,0x4a29,0x4229,0x4229,0x4229,0x4249,0x4269,0x4289,0x3a49,0x3a08,0x4269,0x4229,0x3a08,0x4248,0x4229,0x4229,0x3a28,0x4269,0x4249,0x4269,0x4269,0x426a,0x528b,0x4a69,0x426a,0x4229,0x4269,0x3a89,0x4249,0x3a29,0x3a29,0x4229,0x4a6a,0x4a6a,0x4229,0x3a49,0x4269,0x4a49,0x4a6a,0x4a8a,0x426a,0x426a,0x4a69,0x4249,0x4269,0x426a,0x4a6a,0x426a,0x4a6a,0x4a6a,0x4a89,0x4a8a,0x4a8a,0x4aaa,0x4a6a,0x528a,0x526a,0x4a49,0x4a69,0x526a,0x4a69,0x4269,0x4a4a,0x4a6a,0x4a6a,0x4249,0x4229,0x426a,0x4a4a,0x4a6a,0x426a,0x4249,0x4249,0x4249,0x4a6a,0x4a8b,0x4a6a,0x4229,0x4229,0x4249,0x3a49,0x4a4a,0x4249,0x4269,0x3a29,0x4249,0x424a,0x4a48,0x4a49,0x4a49,0x4228,0x3a49,0x428a,0x3229,0x4209,0x4249,0x4208,0x39e8,0x3a29,0x3a49,0x4249,0x424a,0x3a49,0x4228,0x4229,0x3a29,0x3a28,0x4228,0x39e8,0x3a08,0x39e8,0x3a08,0x49e8,0x39e7,0x3a28,0x31e7,0x39c8,0x41c7,0x39e7,0x39e7,0x31a6,0x39a7,0x31c7,0x31a7,0x39c8,0x31c7,0x31a6,0x31a6,0x29a7,0x29a7,0x31c6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2986,0x2986,0x3185,0x3185,0x3186,0x3146,0x3165,0x2986,0x2966,0x2165,0x2165,0x2165,0x2965,0x1985,0x2165,0x2165,0x2165,0x2145,0x2165,0x3166,0x2945,0x2945,0x3125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2125,0x3125,0x2925,0x2125,0x2145,0x1925,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2925,0x2925,0x2125,0x1925,0x1905,0x2105,0x1924,0x2104,0x10e4,0x18e5,0x20e4,0x1904,0x1904,0x1904,0x1104,0x10e4,0x1104,0x0903,0x10e3,0x18e4,0x18c4,0x08e4,0x18e3,0x20e3,0x18e4,0x18e3,0x18c3,0x10c3,0x18c2,0x20c3,0x18c3,0x18c3,0x18e3,0x18e2,0x10c3,0x18c4,0x10c3,0x10e3,0x18c3,0x18c3,0x08c3,0x18a3,0x18a3,0x20c2,0x08a3,0x10c2,0x00c2,0x0882,0x10a3,0x1083,0x08a3,0x00a3,0x1883,0x08a3,0x10a2,0x08c3,0x08a3,0x08c3,0x18c2,0x18a3,0x1082,0x08c3,0x00c3,0x08c3,0x10e3,0x10c4,0x10a2,0x21a4,0x94b3,0x1084,0x10c4,0x20e4,0x1904,0x18e3,0x2144,0x3a07,0x5287,0x5288,0x5269,0x4a88,0x4267,0x9471, +0xa513,0xa553,0xb5f5,0x74b2,0x4a68,0x4a88,0x4a87,0x5288,0x4227,0x31a6,0x31a6,0x3208,0x31c7,0x31c6,0x3166,0xb5d6,0x7d75,0x10e4,0x31a7,0x2986,0x2966,0x2966,0x3166,0x3166,0x31a6,0x31a6,0x3187,0x3167,0x3187,0x3186,0x31a6,0x31c6,0x29c7,0x29c7,0x31e7,0x31a7,0x29a6,0x29c7,0x31c8,0x31c7,0x31e8,0x31a7,0x31e7,0x31e7,0x3a08,0x3a08,0x39c6,0x41e7,0x31e7,0x3a07,0x3a07,0x3a08,0x39c8,0x3a09,0x39e8,0x3a07,0x3a08,0x31e8,0x39e8,0x3a08,0x39e8,0x4229,0x31e8,0x4229,0x4a09,0x4a4a,0x4229,0x4208,0x4229,0x4249,0x4249,0x3a49,0x4249,0x3a69,0x3a49,0x3a49,0x4a6a,0x3a69,0x4269,0x4269,0x4269,0x4269,0x4a69,0x4a69,0x5249,0x4a69,0x3a48,0x3a48,0x4248,0x4a49,0x4a69,0x4229,0x4249,0x426a,0x4a4a,0x4249,0x4269,0x4a49,0x4a6a,0x4a49,0x524a,0x4a69,0x52aa,0x4249,0x4a6a,0x4a6a,0x4a6a,0x4269,0x4a49,0x4a8a,0x424a,0x426a,0x4a69,0x4a89,0x426a,0x4a69,0x4a4a,0x526a,0x4a49,0x4a6a,0x4249,0x4269,0x426a,0x4249,0x4a48,0x4a49,0x4249,0x4249,0x4a49,0x4a2a,0x424a,0x3a29,0x4249,0x4249,0x3207,0x4a6a,0x4249,0x4229,0x426a,0x3a49,0x3a6a,0x4229,0x4248,0x4249,0x4228,0x4229,0x4208,0x3a29,0x4229,0x4228,0x4269,0x3a69,0x4a69,0x4229,0x3a28,0x3a08,0x3a08,0x3a28,0x3a28,0x3a28,0x3a29,0x3a29,0x4229,0x3a28,0x4229,0x3229,0x3208,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x39a7,0x39c7,0x31c7,0x39c7,0x31e7,0x39e7,0x39e7,0x39a7,0x39c7,0x31a7,0x31c7,0x3a08,0x31c7,0x31c7,0x3186,0x31c8,0x29a7,0x29a6,0x29a7,0x3186,0x3986,0x39a6,0x3987,0x3186,0x31a7,0x3186,0x3167,0x2986,0x2986,0x3187,0x3166,0x3185,0x2986,0x2166,0x2966,0x3165,0x2965,0x2165,0x1985,0x2185,0x2966,0x3145,0x2946,0x2166,0x2145,0x2125,0x2125,0x2945,0x2945,0x2104,0x1165,0x1946,0x2125,0x2945,0x2925,0x3126,0x2925,0x2145,0x2945,0x1905,0x1925,0x2105,0x1905,0x1925,0x1905,0x2125,0x1904,0x2105,0x2105,0x18e5,0x1904,0x1904,0x1904,0x18e4,0x1904,0x1904,0x1104,0x1904,0x18e5,0x18e4,0x20e3,0x18c3,0x1103,0x18e4,0x18e4,0x10e4,0x08c4,0x10e3,0x20c4,0x10c3,0x18e3,0x18e3,0x10c3,0x10e2,0x18c3,0x18e3,0x10e3,0x08e3,0x10c2,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c2,0x10a3,0x18a3,0x18a3,0x10c3,0x0883,0x08c2,0x08c3,0x0883,0x08a3,0x10a3,0x08a2,0x10a2,0x18a2,0x08c2,0x08c2,0x08a2,0x08a3,0x10a3,0x10c3,0x18a3,0x10a3,0x10e3,0x10c2,0x18c3,0x08c3,0x08e3,0x0882,0x2145,0x94b2,0x10a4,0x08e4,0x20e4,0x2104,0x2125,0x2104,0x4226,0x4a88,0x4a68,0x4a89,0x5288,0x4226,0x94b1, +0xa553,0xa553,0xb616,0x6c91,0x4a68,0x4a68,0x4a88,0x4a87,0x4248,0x39e6,0x39c6,0x31e7,0x31a7,0x29a7,0x3146,0xb5d6,0x7d56,0x2125,0x39a7,0x3186,0x3186,0x3187,0x3166,0x3186,0x3186,0x3987,0x3186,0x2986,0x2986,0x3187,0x3187,0x31a6,0x31a6,0x31c6,0x31c7,0x29c7,0x29c7,0x31a7,0x31a7,0x31c7,0x3a07,0x31a6,0x31a7,0x31e7,0x39a8,0x31e7,0x39e7,0x29c7,0x39c7,0x39e7,0x3a07,0x3207,0x39e8,0x31e7,0x39e8,0x31e8,0x3207,0x3a08,0x3a08,0x3a08,0x31e7,0x3208,0x39e8,0x3208,0x3a08,0x3a29,0x3a09,0x4208,0x4207,0x3a08,0x4229,0x3a29,0x4229,0x3a28,0x4249,0x3a4a,0x3a49,0x3249,0x4249,0x4a6a,0x4a69,0x4a69,0x3a69,0x4228,0x4a48,0x4a48,0x4208,0x3a49,0x4248,0x4249,0x4208,0x4228,0x4a69,0x4a49,0x4229,0x4a69,0x3a69,0x3a29,0x4249,0x4229,0x4a49,0x4a49,0x4a69,0x4a69,0x4a89,0x4269,0x4269,0x4a69,0x4a49,0x426a,0x424a,0x4269,0x4a68,0x4249,0x4249,0x4a6a,0x4249,0x4269,0x4249,0x4a6a,0x4a49,0x4a4a,0x3a49,0x4a49,0x4a49,0x4a49,0x4229,0x4269,0x4249,0x4249,0x3a29,0x426a,0x4249,0x4269,0x426a,0x4a29,0x4a29,0x4249,0x4249,0x4249,0x3a29,0x4a29,0x4229,0x3a29,0x4228,0x4249,0x4249,0x3249,0x4229,0x4228,0x3a08,0x3a48,0x4229,0x4209,0x4229,0x4208,0x4228,0x4229,0x4228,0x3a28,0x3a28,0x4228,0x4208,0x3a08,0x4208,0x3208,0x3a08,0x4229,0x39e8,0x41e8,0x39e7,0x39c7,0x39e7,0x3a08,0x3a08,0x3a07,0x39e7,0x3a07,0x3a07,0x31e7,0x31c8,0x31a7,0x39e7,0x29a7,0x31a7,0x31c7,0x31c7,0x31a7,0x29a7,0x39c7,0x39a7,0x31c7,0x31a7,0x3987,0x3186,0x2986,0x31a6,0x3187,0x2986,0x29a6,0x3186,0x2966,0x3186,0x3186,0x3166,0x2965,0x2986,0x2186,0x2965,0x2965,0x2165,0x2165,0x2986,0x2965,0x3145,0x2166,0x1966,0x2145,0x1945,0x2945,0x3145,0x2945,0x2925,0x1945,0x2165,0x2145,0x2125,0x2124,0x2925,0x2905,0x28e5,0x1925,0x1925,0x2104,0x2905,0x1925,0x1105,0x2105,0x2125,0x1904,0x2104,0x1125,0x1905,0x1904,0x1904,0x1905,0x18e3,0x2104,0x2105,0x1904,0x2103,0x1903,0x20e4,0x20e4,0x18c4,0x18e3,0x18c3,0x18a4,0x08c3,0x18e4,0x18e3,0x28c3,0x10c4,0x20e4,0x20c4,0x18c3,0x18e2,0x10c3,0x18e4,0x10c3,0x10e3,0x10e3,0x18a3,0x18c4,0x08a3,0x18c3,0x10e1,0x18c2,0x18c3,0x08c2,0x10c3,0x18c2,0x10a3,0x08c2,0x10a3,0x10a3,0x10c3,0x10c3,0x10c2,0x18e2,0x18c3,0x10a3,0x08c2,0x10c3,0x00a2,0x08a2,0x08a2,0x10c3,0x10c3,0x18c2,0x08e2,0x18c3,0x00c3,0x08c3,0x1082,0x1944,0x8cb2,0x1084,0x10e4,0x10e4,0x10e4,0x1904,0x1903,0x4206,0x4a68,0x5289,0x5268,0x5288,0x4206,0x94d2, +0xa553,0xa574,0xb5f6,0x7c91,0x52a8,0x4a68,0x5288,0x5288,0x4a48,0x39e7,0x31c6,0x31e7,0x29c7,0x31c7,0x4187,0xb5d7,0x7d36,0x2145,0x31a6,0x3186,0x2986,0x2945,0x2966,0x2166,0x3186,0x39a7,0x3187,0x3986,0x39a6,0x29a6,0x29a7,0x3186,0x31c7,0x31e7,0x29a6,0x31c7,0x29a7,0x31a7,0x31a7,0x39c7,0x31c6,0x39c7,0x3187,0x31c8,0x39c8,0x39c7,0x39c7,0x31e7,0x31c8,0x31e8,0x3208,0x31e7,0x31c7,0x3a08,0x39e8,0x39e8,0x39c8,0x3a08,0x3208,0x39e8,0x4208,0x3a08,0x3208,0x3229,0x3a08,0x3a28,0x4208,0x4228,0x4209,0x4a29,0x4229,0x4229,0x4a29,0x4a69,0x4249,0x3a69,0x3a69,0x426a,0x4229,0x4249,0x4229,0x4249,0x3a69,0x4249,0x4a69,0x4249,0x4249,0x5229,0x4249,0x424a,0x4249,0x4249,0x4249,0x4a69,0x4229,0x4a49,0x424a,0x4a4a,0x4a6a,0x526a,0x4a29,0x4a29,0x4249,0x4a69,0x4a69,0x4a6a,0x4269,0x4269,0x4249,0x4269,0x4a49,0x4269,0x4269,0x4249,0x4229,0x4a69,0x4a4a,0x4229,0x4229,0x4a49,0x5269,0x426a,0x3a49,0x3a29,0x4229,0x4248,0x4a69,0x4249,0x4a6a,0x4249,0x3a69,0x4269,0x4a49,0x4228,0x4229,0x4249,0x4249,0x4a4a,0x4228,0x4249,0x3a49,0x4a49,0x4229,0x3a28,0x4229,0x3a29,0x3a29,0x4249,0x4a29,0x3a29,0x4228,0x4229,0x4228,0x4229,0x4229,0x3a09,0x4229,0x3a49,0x3a28,0x3a28,0x4a28,0x4229,0x4207,0x4228,0x3a08,0x31e7,0x39e8,0x4208,0x39e8,0x31e8,0x31e8,0x39c8,0x39e7,0x39e7,0x31e7,0x3207,0x31c8,0x31a6,0x31e7,0x31e6,0x39c7,0x31c7,0x39c7,0x39e7,0x39c7,0x31c7,0x29a7,0x29c7,0x31c7,0x39c7,0x3186,0x31a7,0x39a6,0x3187,0x39a7,0x3186,0x31a8,0x29a7,0x2986,0x2986,0x2986,0x2986,0x2987,0x2166,0x2166,0x2986,0x2987,0x2966,0x2946,0x2146,0x2966,0x2146,0x3166,0x2965,0x2945,0x2166,0x1966,0x2946,0x2145,0x2165,0x3145,0x2965,0x2945,0x2164,0x2925,0x2945,0x1945,0x1945,0x2125,0x1925,0x1925,0x18e4,0x1925,0x2125,0x2124,0x1925,0x1905,0x2105,0x2905,0x2124,0x2124,0x1104,0x1103,0x1904,0x1104,0x1905,0x1904,0x1903,0x1924,0x1924,0x2104,0x2904,0x20e4,0x18e4,0x18e5,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x1103,0x20c5,0x10e3,0x1903,0x18c4,0x18c4,0x18e3,0x18e2,0x18e3,0x18e3,0x10c3,0x10e2,0x18c3,0x10c3,0x18e4,0x1903,0x10c3,0x10e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x08c2,0x18c2,0x10c3,0x18c3,0x18a3,0x10a2,0x18a2,0x08c3,0x08a2,0x08c3,0x00c3,0x18c3,0x10a3,0x10c2,0x08c3,0x18c3,0x10c3,0x08a3,0x1082,0x1103,0x8cb2,0x20c5,0x18e4,0x18e3,0x1905,0x2104,0x1903,0x3a06,0x5248,0x5289,0x5288,0x5269,0x3a06,0x94d2, +0xa553,0xa554,0xb616,0x7491,0x4a68,0x5288,0x5288,0x4a88,0x4a28,0x31a6,0x39c6,0x39e7,0x29c7,0x31c7,0x49a7,0xb5f7,0x7d55,0x2145,0x31a7,0x3186,0x31a6,0x3165,0x29a6,0x3186,0x31a6,0x39a7,0x3186,0x39a7,0x29a6,0x31a7,0x31a7,0x29c7,0x31a7,0x31c7,0x29a6,0x39a6,0x31e7,0x31c7,0x29a7,0x39a7,0x31a7,0x29a6,0x31c7,0x39a6,0x31c6,0x31e7,0x31c8,0x39c7,0x39c8,0x39e8,0x3a08,0x3207,0x3a07,0x3228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a09,0x3a09,0x39e8,0x3a08,0x3a08,0x4229,0x3a29,0x3a29,0x4229,0x3a29,0x3a49,0x4228,0x4229,0x424a,0x4229,0x4229,0x3a29,0x3a27,0x4249,0x4249,0x4229,0x4249,0x4249,0x4a29,0x4229,0x4269,0x4a6a,0x426a,0x424a,0x4229,0x4a49,0x4228,0x4a49,0x4a89,0x4a69,0x4a6a,0x4249,0x4a6a,0x426a,0x4a49,0x4a69,0x4a69,0x4a69,0x4269,0x424a,0x4a6a,0x426a,0x4a49,0x4249,0x428a,0x4a6a,0x4229,0x4249,0x4a8a,0x4249,0x424a,0x4269,0x4a8a,0x4a6a,0x3a4a,0x3a09,0x4249,0x4229,0x3a6a,0x3a4a,0x3a29,0x3a29,0x4269,0x4269,0x4268,0x4269,0x3a09,0x4269,0x4269,0x4a69,0x4a4a,0x4a29,0x4249,0x4249,0x4a6a,0x3a29,0x426a,0x4269,0x4a4a,0x4229,0x4249,0x4249,0x4229,0x4229,0x4a69,0x4248,0x4229,0x4a29,0x4209,0x422a,0x3a49,0x3a28,0x4249,0x4228,0x4248,0x3a28,0x4229,0x4209,0x4209,0x4229,0x4208,0x3a08,0x4209,0x4208,0x3a08,0x39e9,0x31c8,0x31e8,0x39e8,0x41c8,0x3a08,0x3a08,0x4208,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x39c7,0x39c8,0x39c8,0x31e8,0x31c8,0x31c7,0x29a7,0x29a7,0x29a7,0x31c7,0x3987,0x31a7,0x29a7,0x31a6,0x31a7,0x3186,0x31a7,0x31a7,0x29a6,0x31a7,0x31a7,0x2987,0x31a6,0x3186,0x3186,0x2987,0x2966,0x2966,0x2966,0x3166,0x3166,0x2966,0x2165,0x3165,0x2966,0x2945,0x3165,0x2165,0x2945,0x2945,0x2945,0x2945,0x2145,0x1925,0x1945,0x1125,0x1945,0x2125,0x2125,0x2925,0x2125,0x1945,0x2145,0x2125,0x1905,0x1925,0x1905,0x2926,0x2905,0x1924,0x1125,0x1105,0x1905,0x20e5,0x28e4,0x1924,0x1904,0x1105,0x2105,0x20e4,0x1904,0x1904,0x1105,0x20e4,0x18e4,0x1904,0x10e4,0x18e4,0x18e4,0x18e4,0x10e4,0x10e3,0x18e4,0x18c4,0x10c4,0x18c3,0x18c2,0x10e3,0x10e3,0x18e4,0x10c3,0x10c4,0x00c4,0x10c3,0x10c3,0x18c3,0x10c3,0x18c2,0x18c2,0x10c3,0x10e3,0x18c3,0x10c3,0x10a3,0x10a3,0x08a3,0x10a3,0x18a4,0x10a3,0x10a3,0x18c2,0x10a3,0x10c3,0x18c3,0x10c4,0x08c3,0x08c3,0x08c3,0x08c3,0x18e3,0x18c2,0x18c2,0x08c3,0x1082,0x1104,0x8cd3,0x28e6,0x18e4,0x10e3,0x1904,0x2105,0x18e4,0x41e7,0x5249,0x5268,0x5268,0x5289,0x3a26,0x9cf3, +0xa553,0xa534,0xb616,0x7471,0x4a68,0x5288,0x5288,0x5288,0x4a48,0x31a6,0x31c7,0x39e7,0x31c7,0x31c7,0x51c7,0xbe17,0x6d14,0x2946,0x3186,0x3146,0x3186,0x3165,0x3186,0x3185,0x3166,0x2987,0x31a7,0x39a7,0x3a07,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e8,0x31c7,0x31e8,0x31c8,0x31c7,0x31e8,0x29c8,0x31c8,0x31a7,0x31a7,0x31c7,0x39c7,0x29c7,0x31c7,0x39c8,0x31e7,0x3208,0x3208,0x3a08,0x3a28,0x3a08,0x41e8,0x39e8,0x3a08,0x4208,0x3a29,0x3a08,0x3a28,0x4228,0x4208,0x3a08,0x4229,0x4208,0x3a08,0x3a29,0x39e8,0x3a28,0x4a4a,0x4a4a,0x4228,0x3a29,0x3a29,0x4a6a,0x4249,0x4249,0x4229,0x3a29,0x31e8,0x39e7,0x41e9,0x3a08,0x39c8,0x39c8,0x3a29,0x3a09,0x39e9,0x4209,0x41e8,0x4209,0x3a08,0x3208,0x3a29,0x41e9,0x41e8,0x4229,0x4229,0x4a69,0x4a6a,0x4a6a,0x424a,0x4269,0x4a6a,0x428a,0x4249,0x3a08,0x39c8,0x39a8,0x39c8,0x39c8,0x39e8,0x39e8,0x31c7,0x31c8,0x31a8,0x3a09,0x31c8,0x39c8,0x3a08,0x39c7,0x31a8,0x31c8,0x39e8,0x31c8,0x39c8,0x4208,0x4208,0x4a49,0x4a4a,0x4248,0x4249,0x4269,0x4a69,0x3a08,0x4209,0x4209,0x31c8,0x39c8,0x4208,0x31c7,0x39e8,0x31c7,0x39c9,0x31a8,0x31a8,0x39c8,0x3187,0x29a7,0x3187,0x3187,0x3187,0x3187,0x3187,0x39c8,0x4229,0x4208,0x4229,0x3a28,0x3a28,0x41e8,0x39e8,0x41e8,0x3167,0x2166,0x2986,0x2947,0x3147,0x2967,0x2146,0x3146,0x2146,0x2146,0x2946,0x3166,0x2945,0x2925,0x2125,0x2966,0x2966,0x2945,0x1905,0x2926,0x2966,0x31a8,0x29e7,0x31c8,0x31a7,0x31c7,0x31a7,0x31a7,0x2966,0x2104,0x20e5,0x20c4,0x2905,0x2924,0x2103,0x2125,0x18e4,0x10e4,0x1904,0x18e4,0x18e4,0x20c4,0x18c4,0x18c4,0x18c4,0x18e4,0x10c3,0x18e3,0x18c4,0x3166,0x3146,0x3165,0x2965,0x2965,0x2965,0x2145,0x2145,0x10c3,0x10c3,0x10e5,0x08a3,0x10c3,0x08a3,0x10a3,0x10c3,0x18a3,0x18c3,0x1082,0x18c3,0x1083,0x18a3,0x1082,0x1062,0x10c4,0x1083,0x18a3,0x18a3,0x18c5,0x1925,0x1925,0x2103,0x1904,0x1904,0x1105,0x1905,0x20e4,0x0883,0x1083,0x0883,0x1083,0x1082,0x0882,0x08a3,0x0883,0x1083,0x1083,0x10a2,0x1083,0x0883,0x1083,0x0883,0x1083,0x1082,0x1082,0x1061,0x1083,0x10c3,0x18e4,0x08c3,0x10c3,0x10c3,0x08c3,0x18e4,0x18c3,0x10c4,0x0883,0x0083,0x1082,0x0862,0x0842,0x0862,0x0082,0x0883,0x0063,0x0863,0x0861,0x0862,0x0861,0x0882,0x1042,0x0061,0x0841,0x0861,0x0861,0x0882,0x08a2,0x10c2,0x10a3,0x08a3,0x1083,0x1123,0x84f3,0x20e5,0x1104,0x1904,0x20e4,0x20e3,0x18e3,0x3a06,0x5268,0x5a68,0x5248,0x5288,0x4206,0x9cf2, +0x9d54,0xa554,0xb637,0x6c51,0x4268,0x5288,0x5268,0x52a8,0x4247,0x3185,0x31c6,0x31e7,0x39c7,0x31a7,0x51c8,0xbe17,0x6493,0x2146,0x2987,0x2966,0x3186,0x3186,0x2925,0x2105,0x20e5,0x18e5,0x18e5,0x18c4,0x18e5,0x18e5,0x2125,0x18e5,0x1906,0x2126,0x20e6,0x2106,0x2126,0x20e7,0x18e6,0x18c6,0x20e5,0x2125,0x2966,0x39e8,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39a8,0x3186,0x3967,0x3188,0x3167,0x2967,0x2967,0x2967,0x3187,0x39a8,0x3987,0x3167,0x3167,0x3967,0x3186,0x3187,0x3187,0x3187,0x31a7,0x39a8,0x3188,0x3988,0x31a7,0x3a29,0x4229,0x4248,0x4228,0x4269,0x4209,0x39e8,0x4a4a,0x62ec,0x734f,0x736e,0x7b2e,0x838e,0x7b6e,0x736e,0x736e,0x7bb0,0x83d0,0x7bb0,0x7390,0x736f,0x736f,0x7bb0,0x7bb0,0x83f1,0x736e,0x62ed,0x420b,0x4249,0x4a89,0x4a6a,0x528b,0x4a8a,0x4269,0x41e8,0x5aed,0x8c32,0x9cb3,0xacf5,0x9cd4,0x94d5,0x94b4,0x94b3,0x9cb3,0x9cd3,0x9cf4,0x94b4,0x9d15,0x9d15,0x9cf4,0x9cf4,0x9cb3,0xad15,0xa555,0x9cf4,0x8c32,0x4a6a,0x528a,0x4269,0x424a,0x4269,0x4a4a,0x4209,0x49e9,0x83d0,0x94b3,0x9cf4,0x9cd4,0x9cb4,0x9cb4,0xa4f5,0xa4f5,0x9cb3,0xb556,0xb576,0xa535,0xb576,0xb577,0xb536,0xad56,0xbdb8,0xbdb7,0xbdd7,0xbdf9,0x8412,0x31a8,0x4228,0x3a08,0x4249,0x4209,0x4209,0x39c7,0x4aab,0xa535,0xc5f8,0xb638,0xc639,0xd639,0xc5f8,0xce19,0xc5f8,0xc5f8,0xbdf8,0xb5b7,0xb596,0xbd97,0xc5d8,0xbdb7,0xb577,0xb5b8,0xbdd8,0xbdd7,0xa536,0x5aad,0x2126,0x39a7,0x3187,0x39a7,0x31a7,0x39e8,0x2966,0x8c52,0xb5d7,0xb5d7,0xbdf8,0xad76,0xad97,0xad56,0xa576,0xad55,0xb576,0xad96,0xb5b7,0xb596,0xb596,0xb5b7,0xb5b7,0xb596,0xa534,0xa555,0x9cd4,0x8411,0x41c9,0x10a4,0x3166,0x2966,0x2946,0x2145,0x2125,0x1904,0x7bcf,0x9cd3,0x94f4,0xa535,0xa535,0x8c93,0x9cd4,0x9493,0x9472,0x9c92,0x9cd3,0x8c93,0x94d4,0x9493,0x8c72,0x9493,0x8472,0x8c52,0x8411,0x73d0,0x52ac,0x0863,0x1904,0x2124,0x1924,0x1904,0x1924,0x18c4,0x2083,0x5a8b,0x634d,0x632c,0x632c,0x6b6d,0x734e,0x62cc,0x630d,0x632e,0x5aaa,0x52cb,0x5acc,0x62ec,0x5aac,0x5aed,0x532d,0x630d,0x6aed,0x62ec,0x526a,0x3126,0x0884,0x1884,0x18e4,0x18c4,0x10c3,0x18a3,0x1062,0x2945,0x4a48,0x526b,0x526b,0x4a8b,0x528b,0x4a6b,0x428b,0x4acc,0x5b0d,0x530d,0x62ed,0x632e,0x6b6e,0x738f,0x73f0,0x5b6e,0x636e,0x634e,0x6b4e,0x62ed,0x10a3,0x1882,0x10e3,0x08c3,0x10a3,0x0903,0x8cb2,0x28e5,0x1904,0x2904,0x2125,0x2965,0x1925,0x3207,0x5268,0x5268,0x5a89,0x52a9,0x41e6,0x9513, +0xa554,0xa553,0xbe38,0x6430,0x4268,0x5288,0x4a68,0x5287,0x3a47,0x39a7,0x39c7,0x3207,0x31a7,0x31a6,0x51c7,0xbe38,0x6492,0x2145,0x3186,0x29a7,0x3186,0x3987,0xa4f4,0xbdf8,0xb5f8,0xadd7,0xb5d8,0xadd7,0xadb7,0xadb7,0xb5b7,0xb5f7,0xa597,0xadf8,0xbe18,0xb5d7,0xb5f7,0xadb7,0xadb6,0xc65a,0xbe18,0xbe37,0xbe39,0x638f,0x2945,0x39e8,0x31e8,0x39e8,0x31e7,0x5a6a,0xce3a,0xb5d7,0xbe18,0xb5d7,0xadd7,0xadb7,0xad97,0xadb6,0xad75,0xa534,0xb556,0xad55,0xa555,0x9d55,0xa555,0x9d14,0x9514,0x94f4,0x9d15,0x8cd3,0xbe18,0xa5b7,0x3a29,0x4249,0x4229,0x4269,0x3a29,0x524a,0xd69a,0xa556,0x8c92,0x8c71,0x8cb3,0x94d3,0x9d14,0x9d13,0x94f3,0x94d3,0x94b3,0x9493,0x94b3,0x94b3,0x94b3,0x8cb3,0x8cb3,0x8cb3,0x94f4,0x9514,0x9d14,0xcedc,0x7c53,0x29c8,0x4a69,0x4a6a,0x4a6a,0x41e8,0xc5d7,0xadb7,0x94d3,0x8c93,0x8c72,0x8cb2,0x8cd3,0x8cd3,0x8c93,0x8c93,0x94f4,0x8492,0x8451,0x8c92,0x8c72,0x8c72,0x8472,0x8472,0x7c52,0x7c31,0x7c32,0x8cb3,0xdf5d,0x4aec,0x4a29,0x4a4a,0x4269,0x4249,0x6b2d,0xdf3d,0x7410,0x7c10,0x8452,0x8c93,0x8c92,0x8c92,0x8c92,0x8c92,0x94b3,0x8c72,0x8c71,0x8c71,0x8c71,0x8c31,0x8c31,0x7c10,0x8431,0x9492,0x9472,0x8431,0x9d14,0xce3a,0x31a7,0x4229,0x4a09,0x4229,0x31a7,0xa4b3,0xc639,0x8431,0x8c30,0x8c30,0x8c31,0x8c52,0x8c72,0x7c11,0x8c52,0x8432,0x8432,0x8c72,0x8cb2,0x9493,0x94b3,0x8c93,0x8452,0x8c72,0x8c73,0x8452,0x7c10,0x9d35,0x8433,0x2946,0x39c8,0x39a7,0x31a7,0x3167,0xa514,0x6bcf,0x638e,0x73cf,0x73b0,0x73f0,0x6b8f,0x6b4f,0x738f,0x6b4e,0x73af,0x73f0,0x73b0,0x73cf,0x6bae,0x6baf,0x6b6e,0x732d,0x634d,0x636d,0x52ec,0x5aeb,0xad96,0x52cd,0x2105,0x2166,0x2945,0x2966,0x20e4,0xa5b6,0x5b4c,0x6b6d,0x736e,0x734e,0x6b2e,0x632d,0x7baf,0x6b4d,0x632d,0x6b4d,0x630d,0x5acc,0x5aec,0x62ec,0x5acb,0x5acc,0x528a,0x52cb,0x4aab,0x428a,0x52cb,0xa536,0x2146,0x1905,0x1905,0x1905,0x1904,0x39e7,0x9452,0x52ac,0x4a6b,0x52ab,0x4a8b,0x4a8a,0x4a8a,0x528b,0x528b,0x52ab,0x5acb,0x528b,0x4a8b,0x52ab,0x52ab,0x5a8a,0x426a,0x422a,0x4229,0x39e8,0x4a8a,0x5acc,0x738f,0x0883,0x18e4,0x18c4,0x18e3,0x0861,0x6b4e,0x5b4d,0x4209,0x422a,0x4a4a,0x3a2a,0x3a09,0x4208,0x424a,0x4229,0x528b,0x4a09,0x4209,0x426a,0x4a8a,0x4249,0x4a49,0x424a,0x4229,0x41e9,0x39c8,0x2967,0x6b90,0x3147,0x10a3,0x18c3,0x0882,0x1124,0x8cd2,0x3106,0x1105,0x2925,0x1904,0x1904,0x1904,0x3a06,0x4a88,0x5288,0x5289,0x5a89,0x4207,0x9514, +0xa554,0xa534,0xbe57,0x642f,0x4268,0x4aa8,0x5288,0x52a8,0x3a28,0x31c7,0x31e7,0x31e7,0x31c6,0x31c7,0x51c8,0xc678,0x6471,0x1925,0x31a7,0x3987,0x3986,0xb596,0x7430,0x636e,0x636e,0x73cf,0x73d0,0x7bf0,0x8411,0x7c11,0x8410,0x8451,0x8cb3,0x94d4,0x9473,0x9493,0x9493,0x8cb3,0x94f4,0x8c72,0x8c32,0x8411,0x73b0,0xc71c,0x530d,0x39e7,0x31e8,0x39e7,0x3925,0xce18,0x8472,0x9cf4,0x9d14,0x9cd4,0x9cf4,0x9cf4,0xad97,0xad96,0xad76,0xb596,0xb5b7,0xb5d7,0xbdf9,0xbe39,0xc619,0xce5a,0xce7a,0xce9a,0xce7a,0xc67a,0x94f3,0xc659,0x6c32,0x39c8,0x426a,0x3a49,0x3a08,0xad56,0xa596,0xbdd8,0xe6fd,0xe75d,0xe75d,0xef9e,0xe77d,0xe75d,0xe75d,0xe77d,0xe79e,0xefdf,0xefdf,0xe77e,0xe77e,0xe77e,0xe77e,0xe6fc,0xef7e,0xefbe,0xe75d,0x8cb3,0xdf9e,0x3a4b,0x4a49,0x4a8a,0x4229,0x6acb,0xc638,0xad96,0xf79e,0xf7df,0xefdf,0xefdf,0xf7bf,0xefbf,0xefbf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xf7df,0xf7be,0xefbf,0xf7ff,0xf7ff,0xffff,0xffff,0xd6db,0x8c92,0x8d35,0x4208,0x5249,0x4a49,0x3a49,0xd6ba,0x9d35,0xef5d,0xffff,0xf7ff,0xf7de,0xefbe,0xf7bf,0xef9e,0xef9e,0xf7be,0xf7be,0xf7df,0xffff,0xf7df,0xefbe,0xefdf,0xef9e,0xf7df,0xefbf,0xe75d,0xefbf,0xb5b8,0xdf1b,0x5b0e,0x3a09,0x4a08,0x4249,0x3987,0xd6db,0x7bd0,0xef7d,0xe77d,0xe77d,0xe79e,0xefbe,0xefbe,0xe77e,0xe77c,0xe77e,0xf7de,0xefde,0xe7bd,0xe79d,0xdf3c,0xdf3c,0xd71b,0xdf1c,0xd73c,0xdf3c,0xe77e,0x94d4,0xcedb,0x420a,0x39a7,0x39c7,0x2967,0x41a8,0xbdd8,0x9d33,0xe73c,0xcedb,0xd6da,0xd6da,0xd6fb,0xd6db,0xd6bb,0xd6bb,0xd69a,0xce9a,0xceda,0xce99,0xc699,0xc679,0xce9a,0xd69a,0xce99,0xceba,0xd6db,0xc67a,0x524a,0xb5d8,0x0863,0x2166,0x3146,0x2925,0x6b8e,0x94f3,0xa555,0xbe7a,0xc6ba,0xce9a,0xc67a,0xce9b,0xce9a,0xc679,0xbe38,0xcedb,0xcefb,0xcebb,0xbe79,0xbe7a,0xb638,0xbdf8,0xbdf8,0xbe39,0xb618,0xb5f8,0xa4f5,0x52ab,0x634e,0x1084,0x20e5,0x2105,0x10a3,0x8cd2,0x4a8b,0xa514,0xadb7,0xad97,0xadb7,0xadb7,0xb5b7,0xb597,0xad96,0xadb6,0xbdd8,0xb5d8,0xb5d8,0xa597,0xa576,0xad76,0xa576,0xa596,0xad75,0xa555,0xa535,0x6b6f,0x7c10,0x2946,0x18c5,0x18c5,0x18c4,0x1123,0x83f1,0x52eb,0x94f5,0x9515,0x9515,0x9535,0x9d35,0x9d35,0x9515,0x8d14,0x8cd3,0x9d35,0x9d55,0x94f4,0x84f3,0x84d3,0x8cb4,0x8cb3,0x9493,0x8cb3,0x8c93,0x94f4,0x2986,0x62ec,0x1083,0x18c3,0x10c3,0x10e3,0x84d3,0x28e5,0x10e4,0x1904,0x1904,0x10e3,0x2145,0x3a06,0x4288,0x5288,0x5289,0x5289,0x4206,0x9d14, +0xa553,0xa554,0xbe57,0x5bef,0x4a88,0x4ac8,0x5288,0x4aa8,0x4227,0x41a6,0x31e7,0x31c7,0x31a7,0x29a7,0x51c9,0xc679,0x5c31,0x2926,0x39c7,0x2987,0x5a8a,0x9d76,0xb5b6,0xc639,0xbe59,0xbe78,0xbe79,0xbe79,0xbe79,0xbe79,0xcedb,0xd75c,0xd71b,0xd75b,0xc6b9,0xc67a,0xc67a,0xc699,0xc699,0xc69a,0xc69a,0xceba,0xcedb,0x9d54,0x6c32,0x31e7,0x39c7,0x39c7,0x59e9,0xbdf7,0xad76,0xcedb,0xd6db,0xd6fb,0xd6fb,0xd71c,0xcefb,0xd71c,0xd71c,0xd71c,0xe79d,0xe77d,0xdf1c,0xcefb,0xd6fc,0xdefc,0xd71b,0xd71b,0xd71b,0xdefb,0xd71c,0x8431,0x8515,0x3187,0x4249,0x4249,0x41c7,0xc679,0x8c32,0xf77d,0xdf1c,0xdf3c,0xdf1c,0xd71c,0xd71c,0xdf3c,0xd71b,0xe7be,0xae38,0x7c30,0xc657,0xef9d,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xe77d,0xb67a,0xc6fb,0x4acc,0x4a8a,0x4a6a,0x4229,0x9430,0xa555,0xef5d,0xe73c,0xdf1c,0xdf3c,0xdf1c,0xdf3d,0xe73d,0xdf5c,0xe75d,0xcf1c,0x5b6e,0x94f3,0xef5d,0xdefc,0xdf3d,0xd71c,0xdf1c,0xdf1c,0xdf3d,0xdf3c,0xdf7e,0x7c31,0x9d97,0x3a08,0x4a89,0x528a,0x3208,0xe73c,0x94f4,0xe77d,0xd73c,0xd71b,0xd71b,0xd6fb,0xd71c,0xd71b,0xd71b,0xd6fc,0xdf5d,0xb618,0x5acb,0xef9d,0xd6fb,0xd71c,0xd71b,0xd6fb,0xd71c,0xdefc,0xdefb,0xcebb,0xb5d7,0x5b4f,0x3a49,0x4229,0x4229,0x3186,0xb658,0x8cd2,0xceba,0xceba,0xceda,0xcedb,0xcedb,0xcedb,0xce9a,0xcedb,0xadf8,0x31c7,0x2145,0x39c6,0xce99,0xce99,0xce99,0xc699,0xceba,0xc699,0xc67a,0xce9a,0xc65a,0xceba,0x422a,0x39c8,0x39c7,0x2966,0x41e7,0x9d14,0xbdf6,0xc659,0xc658,0xbe59,0xbe38,0xbe38,0xbe59,0xbe18,0xbe38,0xc679,0xa597,0x3a48,0xc698,0xb618,0xadd7,0xbdf8,0xbdf7,0xb618,0xb618,0xb5f7,0xc659,0x73af,0xb5d7,0x0863,0x2965,0x2966,0x2925,0x7c2f,0x6b8f,0xd6ba,0xadb6,0xadb6,0xb5d7,0xadd7,0xb5d7,0xadb6,0xb5b7,0xadf8,0x31a6,0x39c7,0x39e7,0x5b2b,0xadb6,0xa595,0xa576,0xad96,0xa576,0xa575,0x9d55,0xad97,0x3a4a,0x7c32,0x1883,0x2125,0x2105,0x0862,0x8cd2,0x4229,0xa534,0x9d14,0x9514,0x9d14,0x9514,0x94f3,0x9514,0x8cd3,0xa576,0x4229,0x10c3,0x6b8d,0x9cf3,0x9cd3,0x94f4,0x94d4,0x94b3,0x8cd3,0x84b2,0x84d2,0x94f5,0x636d,0x5a8c,0x18e4,0x10e4,0x10c3,0x2185,0x5b4d,0x94d2,0x7c71,0x7c71,0x8472,0x7c71,0x7c72,0x8472,0x8471,0x7c52,0x7bf0,0x2925,0x31c7,0x6bee,0x7410,0x8411,0x7c31,0x7c10,0x7c30,0x7410,0x6bf0,0x7c71,0x3167,0x6aed,0x0884,0x10c3,0x08c2,0x18c3,0x8d13,0x3127,0x18e5,0x1903,0x1924,0x1904,0x1924,0x31e6,0x4a68,0x5289,0x5289,0x5a69,0x39e5,0xa534, +0xa574,0xa554,0xbe57,0x53cf,0x5289,0x52a8,0x5288,0x5288,0x3a47,0x39c6,0x31c7,0x39c8,0x31a7,0x29a7,0x51c9,0xc699,0x5c52,0x2946,0x3987,0x3186,0x6b0b,0x9534,0xc5f7,0xc618,0xc679,0xc679,0xc679,0xc679,0xbe39,0xc6bb,0x7c92,0x31e8,0x29a7,0x39e8,0x9472,0xce9a,0xc679,0xc69a,0xc699,0xc6ba,0xceba,0xc699,0xcefc,0x9514,0x7452,0x29a7,0x31c7,0x31c7,0x5a09,0xb5d7,0xce58,0xcedb,0xd6db,0xcedb,0xd6db,0xceba,0xcedb,0xd6fb,0xd6db,0xcf1c,0x4b0d,0x5a8b,0xe77c,0xd71c,0xd71c,0xdf3c,0xdf1c,0xd6fc,0xcf1b,0xd71b,0xc71c,0x7c31,0x8515,0x3187,0x424a,0x426a,0x39e8,0xcedb,0x8c11,0xe73c,0xd71b,0xdf3c,0xdf3d,0xdf3c,0xd71c,0xdf1b,0xdf7d,0x9db7,0x52ac,0xad35,0x530d,0xa513,0xdf3c,0xdf1c,0xdf3c,0xe75d,0xdf5d,0xdf5d,0xe77d,0xc6bb,0xcefb,0x4acd,0x4a8b,0x4a6a,0x4249,0xa4d3,0xad76,0xefbe,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf5d,0xd71c,0xe79e,0x3a29,0xad15,0x632e,0xb574,0xdf5c,0xd71c,0xdf1c,0xdf3d,0xdf1c,0xdf1c,0xdf3c,0xe7be,0x7bf1,0x9d97,0x31e8,0x4a29,0x4a8a,0x4a28,0xdf1b,0x9cf4,0xe77d,0xd71b,0xd71c,0xdf5c,0xdf3c,0xdf1c,0xdf3c,0xd6fb,0xd71b,0xd71d,0x4a4a,0x5a89,0xf7de,0xd6db,0xd71c,0xd6fb,0xd71c,0xd6fb,0xd6fb,0xd6fb,0xcedb,0xadb6,0x638f,0x3a29,0x4a29,0x426a,0x3185,0xcefb,0x9554,0xceda,0xd6db,0xcedb,0xcedb,0xd6db,0xd6db,0xceba,0xcefb,0x94d5,0x8bf1,0xce9a,0xce79,0xd6da,0xce9a,0xceba,0xce9a,0xceba,0xceba,0xceba,0xce9a,0xbe18,0xceba,0x4a4b,0x39c8,0x39e7,0x39c6,0x4a27,0xa535,0xbe17,0xce99,0xc679,0xbe79,0xbe38,0xbe58,0xc659,0xbe59,0xb618,0xcedb,0x5acc,0xb596,0xc679,0xb618,0xb5f8,0xbe39,0xb5f7,0xb618,0xbe18,0xb618,0xc658,0x73d0,0xb5d8,0x1064,0x2945,0x2166,0x2125,0x7c2e,0x6b6e,0xc679,0xadd7,0xb5d7,0xb5f7,0xb5d7,0xb5b7,0xadd7,0xb5d7,0xadb7,0x9493,0x9472,0x62ec,0x4a8a,0xb5f8,0xa575,0xa576,0xad95,0xa596,0x9d55,0x9d54,0xa596,0x3229,0x8473,0x1863,0x2105,0x1925,0x0862,0x8491,0x3a09,0xa534,0x9cf4,0x9515,0x9d34,0x9d14,0x94f3,0x9d14,0x9cf4,0x5acd,0x39e8,0x9cb3,0x18e3,0x9d74,0x94f3,0x94f4,0x94d3,0x9cf4,0x8cd3,0x84b3,0x84d3,0x9d36,0x5b0c,0x5a8b,0x10e3,0x08e3,0x10e3,0x1904,0x5b4d,0x8cd2,0x8471,0x8452,0x8472,0x8c72,0x8492,0x8cb3,0x8c72,0x8432,0x10e4,0x5aed,0x62ab,0x18c3,0x7471,0x7c52,0x8471,0x7c30,0x7c50,0x7c51,0x7430,0x7c71,0x3967,0x630d,0x0863,0x18a3,0x10a3,0x10e2,0x94f3,0x2906,0x18c4,0x1903,0x1104,0x1905,0x1903,0x31e6,0x52a8,0x4a88,0x5289,0x5a89,0x41e6,0xa514, +0xa574,0xa554,0xbe57,0x5bce,0x4a88,0x52a8,0x4a88,0x5288,0x3a28,0x39a6,0x39c6,0x39e7,0x31c7,0x31a7,0x51c9,0xc699,0x6432,0x2146,0x39a7,0x39c7,0x6b2c,0x9d55,0xc618,0xbe58,0xc679,0xc679,0xbe79,0xc659,0xc699,0x7cf5,0x39e8,0xd679,0xdf3d,0xc6dc,0x31a9,0xacf3,0xceba,0xc67a,0xc6b9,0xc6ba,0xc6ba,0xceba,0xc71c,0x9534,0x6c31,0x3166,0x31e7,0x31c8,0x5208,0xb5d7,0xd679,0xd6fb,0xd6db,0xd6fb,0xd6db,0xdedb,0xd6fb,0xd6fb,0xcefb,0xd6fc,0xcf3d,0x62ac,0xef9d,0xdefc,0xd6fb,0xd6fc,0xdf1c,0xdf1c,0xd71b,0xd71c,0xc75c,0x7c72,0x8516,0x39e8,0x4a49,0x4a6a,0x39a7,0xceba,0x8c52,0xe77d,0xd71b,0xdf3c,0xdf3d,0xdf3c,0xdf3c,0xd71c,0xdf5d,0x6c51,0xc618,0xe7be,0xc6dc,0x62ec,0xef9e,0xdf3c,0xdf5d,0xe75d,0xdf3c,0xe75d,0xdf7d,0xc69b,0xdf3d,0x42ac,0x4a8b,0x428a,0x4229,0xad14,0xad97,0xefbe,0xdf3c,0xdf3c,0xdf3c,0xdf5d,0xdf3c,0xdf3c,0xdf5d,0xd73c,0xef7e,0xefff,0x9cf4,0xa4d3,0xe77c,0xdf5c,0xdf3d,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xe79e,0x7bd1,0x9d97,0x31e8,0x4a6a,0x4a8a,0x4208,0xdf1b,0x9d14,0xe77d,0xd71b,0xd71c,0xdf3c,0xdf1c,0xe75c,0xe73c,0xd71c,0xef9e,0x5b6f,0x8c73,0x5a8a,0xe79d,0xd6db,0xd6fc,0xd6fc,0xd71c,0xd6fb,0xd6fb,0xd6fc,0xc67a,0xb5d7,0x634f,0x3a29,0x3a08,0x3a29,0x3986,0xbe38,0x94f3,0xd6fb,0xd6fb,0xcedb,0xcebb,0xd6db,0xd6db,0xceda,0xcedb,0x6bd0,0x6b4d,0x7bef,0xc637,0xd71b,0xc699,0xceba,0xd6ba,0xceba,0xceba,0xc69a,0xceba,0xb5f8,0xd6fb,0x424b,0x39c7,0x39e8,0x39c6,0x5247,0x9d14,0xc678,0xce79,0xc679,0xbe79,0xbe59,0xbe38,0xbe58,0xbe59,0xbe7a,0x7bf0,0x1882,0x738f,0xbdf7,0xb658,0xb5f8,0xbe18,0xb5f7,0xbe38,0xbe38,0xb5d7,0xc679,0x7411,0xb618,0x0843,0x3166,0x2966,0x1944,0x740f,0x73af,0xb638,0xad96,0xb5d7,0xb5f7,0xb5d7,0xadb7,0xb5d7,0xadd7,0xad96,0xad96,0xb618,0x31a7,0x9471,0xa596,0xad96,0xad96,0xa596,0xa596,0x9d55,0x9d35,0xadb7,0x3a09,0x8473,0x1863,0x2905,0x2125,0x0882,0x8491,0x422a,0x9d14,0x9d15,0x94f4,0x9d34,0x9d34,0x9d34,0x9cf4,0xa536,0x526c,0x4aaa,0xbe37,0x2945,0x9d75,0x94f4,0x8cf3,0x8cd3,0x94d4,0x8cd3,0x8cb2,0x84b2,0x8cf4,0x530c,0x528b,0x10e4,0x18e4,0x18e3,0x2124,0x5b4d,0x8cf2,0x8472,0x8492,0x7c92,0x8472,0x8492,0x8493,0x8472,0x734f,0x426a,0x94d4,0x94f4,0x39a9,0x5b2d,0x7c31,0x8431,0x8410,0x7c30,0x7c51,0x7c30,0x8472,0x3188,0x634d,0x0822,0x20c3,0x18a3,0x10c2,0x94d2,0x3167,0x10c4,0x1904,0x18e4,0x2124,0x18e3,0x39e6,0x4a68,0x5289,0x4a89,0x5289,0x41e6,0x9d34, +0xa574,0xad74,0xbe77,0x5bae,0x4aa8,0x52a8,0x5288,0x52a9,0x3a28,0x39c6,0x39e6,0x39e7,0x39c8,0x2986,0x5a09,0xc6b9,0x5bd0,0x2166,0x31c8,0x31a7,0x734d,0x9534,0xc618,0xc659,0xc679,0xbe59,0xbe59,0xbe59,0xbefb,0x426b,0xce38,0xc67a,0xc659,0xbe99,0x9df8,0x524b,0xdefb,0xc67a,0xc69a,0xce9a,0xcebb,0xc69a,0xc6fc,0x9555,0x6431,0x3186,0x31e7,0x31c8,0x5a49,0xb5d7,0xce58,0xcedb,0xc6da,0xceda,0xd6db,0xdedb,0xd6fb,0xd71c,0xd71b,0xd6db,0xc6fc,0x526c,0xef5c,0xd6fb,0xd6fb,0xd73c,0xdf1c,0xd73c,0xd71c,0xd6fc,0xcf5d,0x8472,0x7cf4,0x31e8,0x4248,0x4a49,0x3967,0xd71c,0x9493,0xdf5c,0xd71c,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xdf3c,0xe73c,0xe79d,0xdf5d,0xefbf,0x6bf1,0xa4f3,0xe77d,0xdf5d,0xdf5d,0xe75d,0xe77d,0xe75d,0xe77d,0xc67a,0xdf3d,0x4aab,0x428a,0x4a6a,0x51e9,0xbd75,0xad76,0xef9d,0xdf3c,0xdf3c,0xe75d,0xdf3d,0xdf5d,0xdf3d,0xdf5d,0xdf3c,0xe79d,0x7c72,0x3967,0xd699,0xdf3c,0xe73d,0xdf5c,0xdf3d,0xdf3c,0xdf3d,0xd71c,0xdf7e,0x7bf1,0x9576,0x31c8,0x4a8b,0x528a,0x3a08,0xdf3c,0x94b3,0xe79d,0xd71c,0xdf3c,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xe77d,0xae18,0x7b8f,0xefbe,0x39e8,0xffde,0xdefc,0xdf1c,0xd71c,0xd71b,0xdf1c,0xd6db,0xd6fb,0xce9a,0xadd6,0x6390,0x3a09,0x4229,0x3a29,0x3986,0xc679,0x9cf3,0xdedb,0xd6da,0xd6fb,0xd6fb,0xd6fb,0xcedb,0xcedb,0xc6ba,0x5b4e,0x736f,0xb597,0x422a,0x8451,0xceba,0xc699,0xceba,0xceba,0xc69a,0xc699,0xceba,0xb618,0xd6db,0x4a4b,0x39c7,0x41e8,0x39c7,0x4a48,0x9cd4,0xbe57,0xc659,0xbe59,0xc659,0xc699,0xc659,0xbe38,0xc659,0xbe7a,0x39e8,0xb596,0xad57,0x39a7,0xced9,0xbe18,0xb618,0xbe17,0xbe18,0xb5f7,0xb5f8,0xc658,0x7bf0,0xbe59,0x10a4,0x2986,0x3146,0x2966,0x6bce,0x7bf0,0xb618,0xa5d7,0xadd7,0xb5f8,0xbdf7,0xb5d8,0xadb7,0xadb7,0xadd7,0xb5b7,0xa536,0x31c7,0xbe38,0xadb7,0xadd6,0xa596,0xa596,0xad96,0xad96,0xa555,0xadd7,0x39e9,0x9493,0x1042,0x1905,0x1905,0x0862,0x94d2,0x4a4a,0x9d34,0x9514,0x9d14,0x9554,0x9d35,0x9d34,0x94f4,0xa555,0x8432,0x0821,0x20c4,0x2104,0xa574,0x94f4,0x94d3,0x94f3,0x94d3,0x8cd3,0x8cd3,0x84b2,0x94d3,0x5b2c,0x526c,0x10e4,0x10e3,0x10c4,0x2164,0x736e,0x8471,0x8472,0x8471,0x8492,0x8492,0x8471,0x7c72,0x8472,0x8412,0x31e8,0xa554,0x9d15,0x2926,0x73ae,0x8451,0x7c31,0x7c31,0x7c30,0x7c30,0x7430,0x7c72,0x31a8,0x6b4e,0x0802,0x10c2,0x10a3,0x10c2,0x94f2,0x3147,0x18e4,0x18e4,0x20e4,0x2945,0x2123,0x39e6,0x5a69,0x5289,0x5a69,0x5a89,0x4227,0xa554, +0xa574,0xad74,0xbe98,0x5bae,0x4aa8,0x52a8,0x52a8,0x52a8,0x4208,0x2966,0x39c7,0x31c7,0x39a7,0x29a7,0x626b,0xc6da,0x536f,0x2987,0x31a7,0x3187,0x734d,0x94f3,0xbe18,0xbe59,0xbe59,0xbe59,0xbe59,0xbe59,0xae79,0x3188,0xce79,0xbe59,0xc67a,0xbe59,0xbedb,0x39a8,0xd6da,0xc679,0xc699,0xce9a,0xceba,0xc679,0xcefc,0x9d55,0x6411,0x31a7,0x39e8,0x31a7,0x62ab,0xadb6,0xce58,0xcefb,0xc6da,0xcefb,0xcedb,0xd6db,0xd6fb,0xdf1c,0xd71b,0xd6fb,0xc71c,0x526b,0xe75c,0xd71c,0xd71c,0xd73c,0xd71c,0xd71c,0xd73c,0xd71c,0xd75d,0x8472,0x7cf3,0x31c7,0x4248,0x4249,0x39a7,0xd71b,0x9493,0xdf5c,0xd73c,0xdf3c,0xdf5c,0xd73d,0xdf3c,0xdf3c,0xdf3c,0xd73c,0xe79e,0x8cd3,0x7bcf,0xef7e,0xdf1c,0xdf3c,0xe75d,0xe75d,0xdf3c,0xe75d,0xe77d,0xbe9a,0xdf3d,0x4aac,0x4a8b,0x4aab,0x5229,0xbd95,0xa596,0xefbe,0xe73c,0xe75d,0xdf5d,0xe73d,0xe75d,0xdf5c,0xdf5d,0xdf5c,0xe79d,0xe79e,0x9d76,0x9491,0xe79d,0xdf3c,0xdf3c,0xdf5d,0xdf3d,0xdf3c,0xd6fb,0xe7df,0x83f1,0x9535,0x39e9,0x426a,0x4aaa,0x31c7,0xdf3c,0x94f4,0xe77d,0xdf1c,0xdf3c,0xd71c,0xdf3c,0xdf3c,0xdf1c,0xdf3d,0x31e8,0xce99,0xcedb,0x4229,0xe71c,0xd6fc,0xdf1c,0xdf1c,0xdf1b,0xd6fc,0xd6fb,0xd6db,0xcebb,0xb5b6,0x63b0,0x3208,0x4249,0x4209,0x3185,0xc639,0x9d34,0xd6db,0xcedb,0xd6db,0xd6fb,0xd6db,0xcebb,0xd6db,0xceda,0xef7d,0xe77e,0xd71b,0xc69c,0x4229,0xd71b,0xc69a,0xceba,0xce9a,0xc6ba,0xceba,0xceba,0xb639,0xcedb,0x4a8b,0x39c8,0x31c7,0x3186,0x4228,0x9d35,0xc638,0xce99,0xce99,0xc679,0xc679,0xc679,0xc659,0xceba,0x8cd4,0x9471,0xc679,0xd6db,0x528d,0xa554,0xc679,0xc618,0xbe19,0xbe18,0xbe18,0xbe18,0xbe59,0x7bd0,0xce9a,0x10a5,0x2186,0x2965,0x2965,0x6bae,0x7c30,0xc658,0xadd7,0xb5f7,0xb5f8,0xb5f7,0xb5b7,0xb5b6,0xadb7,0xadb6,0xc659,0x5aed,0x7c31,0xadd7,0xadd7,0xad96,0xa596,0xa596,0xad96,0xa596,0xa575,0xa597,0x31c8,0x9cb3,0x0842,0x1925,0x2104,0x1082,0x8cb1,0x4209,0x9d34,0x9d34,0x9d14,0x9d14,0x9514,0xa515,0x9cf4,0x9513,0x2125,0x8430,0xb5d8,0x3988,0x63ad,0x9d13,0x94d3,0x94f3,0x8cd3,0x94d3,0x8cb3,0x8cd3,0x94f4,0x5b2c,0x52ac,0x18c3,0x18c3,0x10e3,0x1923,0x73af,0x73ee,0x7c71,0x8c91,0x8c91,0x84b2,0x8473,0x7c72,0x7c31,0x8cd4,0x2126,0x2945,0x2125,0x2945,0x8c92,0x8431,0x7c31,0x7c10,0x7c31,0x7c51,0x7c31,0x8472,0x39c8,0x636e,0x0821,0x10c2,0x08c2,0x1103,0x94d2,0x3147,0x10a4,0x18e4,0x20c3,0x1904,0x18e2,0x39c6,0x5288,0x5288,0x5a89,0x52a9,0x4206,0xa513, +0xad74,0xad74,0xb658,0x53af,0x4a89,0x52a8,0x52a8,0x5289,0x3a27,0x31c5,0x39c7,0x39e8,0x39e8,0x31c7,0x626b,0xc6da,0x430e,0x29a6,0x31a7,0x31c7,0x736d,0x8cb2,0xb617,0xbe59,0xbe59,0xbe59,0xbe59,0xbe79,0xbedb,0x3a08,0xc617,0xce79,0xc67a,0xcefa,0x9df8,0x4a6b,0xdefb,0xbe79,0xceba,0xceba,0xceba,0xce9a,0xc6db,0x9d74,0x5bd1,0x31c7,0x39c7,0x39a7,0x62ab,0xa596,0xd699,0xd6fb,0xcedb,0xcedb,0xcedb,0xcefb,0xd6db,0xdf1c,0xd71b,0xd6fb,0xcf3c,0x5acc,0xe75c,0xd6fb,0xd71b,0xd73c,0xd73c,0xdf1c,0xd71b,0xd71c,0xcf1c,0x8472,0x7cd4,0x3208,0x4a49,0x4a4a,0x39a8,0xd6fb,0x9493,0xe77c,0xd71c,0xd73c,0xd73c,0xdf3c,0xdf3d,0xdf3c,0xdf3c,0xe7bf,0x84f4,0x9451,0xffff,0xef9d,0xe75d,0xe73d,0xe75d,0xdf7d,0xdf5d,0xe75d,0xe77d,0xbe9a,0xe77e,0x42ac,0x52aa,0x424a,0x4a09,0xbd55,0xad96,0xf79e,0xdf3c,0xe75c,0xe77d,0xd71b,0xe75d,0xe75d,0xdf5d,0xb616,0xdeda,0xefff,0xcf5e,0x9410,0xe7bd,0xdf3c,0xdf5d,0xdf3c,0xdf3c,0xdf5c,0xd71b,0xe7be,0x7bf0,0x9d56,0x39c9,0x426a,0x4a89,0x39a7,0xe73c,0xad35,0xdf3c,0xdf3c,0xdf3c,0xd73c,0xd71c,0xdf1c,0xdf3c,0xb67a,0x31c8,0x2947,0x2988,0x3167,0x9450,0xdf5c,0xd71c,0xdefb,0xdefb,0xd71c,0xd6fb,0xd71b,0xc69a,0xc617,0x6bb0,0x3208,0x4249,0x4a4a,0x3166,0xbe18,0xad75,0xdedb,0xd6fc,0xd6db,0xd71b,0xd6fb,0xd6fb,0xd6bb,0xdf1c,0x4269,0xdf3c,0xe77d,0xa576,0x52ab,0xceda,0xcedb,0xcedb,0xceba,0xce9a,0xcedb,0xd6bb,0xadf7,0xcf1b,0x4a6b,0x31a6,0x39e7,0x3186,0x4228,0x9d13,0xc678,0xbe78,0xc659,0xce59,0xc659,0xbe39,0xbe39,0xbe79,0xadf8,0x6b0d,0xefbd,0xef7d,0x41e9,0xc657,0xbe58,0xbe38,0xc619,0xb618,0xb5f7,0xbdf7,0xc699,0x7bd0,0xc618,0x18a5,0x3166,0x3186,0x2145,0x6b8d,0x73f0,0xc678,0xadb6,0xadd7,0xb5f6,0xadd6,0xadd7,0xadd6,0xb5d7,0xad96,0xa556,0x10a2,0xb5f7,0xa5b6,0xa5b6,0xadb7,0xa596,0xa576,0xad97,0xad96,0xa596,0xadb7,0x39e9,0x8452,0x0063,0x1124,0x18e5,0x1062,0x9d12,0x3a09,0xa555,0x9d34,0x9d14,0x9cf4,0x9d14,0xa4f4,0x94f4,0x9d14,0x18e5,0x9d13,0xb618,0x526c,0x4b0b,0x9513,0x94d3,0x9cb3,0x94d3,0x8cd3,0x8cd3,0x94d3,0x9514,0x52ec,0x5acc,0x18c4,0x18e3,0x10e3,0x10c2,0x73ae,0x742f,0x8492,0x8c91,0x8cb2,0x8492,0x8492,0x8492,0x8c51,0x7c72,0x8cd4,0x7c53,0x10a3,0x7c30,0x7451,0x8470,0x7c51,0x7c32,0x7c31,0x8431,0x8431,0x7c92,0x39c9,0x6b6e,0x0821,0x10a3,0x08c2,0x08a2,0x94d2,0x3948,0x18a4,0x18e4,0x1904,0x1904,0x18e3,0x39e6,0x4a67,0x5288,0x5288,0x52a9,0x4206,0xa513, +0xad74,0xad74,0xc699,0x538e,0x4aa9,0x52a8,0x52a8,0x5288,0x3a28,0x3186,0x39c7,0x39c7,0x31e7,0x31a6,0x6a8a,0xc6da,0x432e,0x2186,0x31a7,0x2987,0x7bae,0x9492,0xbe18,0xbe38,0xbe59,0xc679,0xc679,0xbe59,0xc6ba,0x84d3,0x5a8a,0xbe37,0xcefb,0xb618,0x3a4a,0xc5b7,0xc6ba,0xc69a,0xce9a,0xc6ba,0xc69a,0xc69a,0xbeba,0xa596,0x53d0,0x31a7,0x39c8,0x2987,0x6acc,0x9d55,0xd699,0xcedb,0xceda,0xd6db,0xceda,0xceda,0xd6fb,0xdf1c,0xd71c,0xd6db,0xcf3d,0x4a6c,0xe77d,0xd6fb,0xdf1c,0xdf3c,0xd71c,0xdf1c,0xd71c,0xd71c,0xd71c,0x8cd3,0x7cd3,0x31c7,0x4a49,0x4a69,0x41e8,0xd6fa,0x9cf4,0xe75d,0xd71c,0xdf3c,0xdf3c,0xdf5d,0xdf3c,0xdf3c,0xe79e,0x7493,0x1905,0x73af,0x6b8d,0x94d2,0xe75d,0xdf5d,0xe75d,0xe75d,0xdf5d,0xdf5d,0xe77d,0xb69a,0xe79e,0x428c,0x52ab,0x52ab,0x4a29,0xb575,0xa596,0xf7be,0xdf3c,0xe73c,0xf7be,0xe75d,0xdf3d,0xe75d,0xe75d,0xd71c,0x52ab,0x8450,0x528b,0xb576,0xdf5d,0xdf5c,0xe75d,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xefdf,0x8431,0x9536,0x3a09,0x4a8b,0x528a,0x41e7,0xe73c,0xad35,0xd75d,0xd73c,0xd71c,0xdf3c,0xdf1c,0xdf3c,0xd71c,0xe75c,0xe77d,0xef9e,0xef9e,0x6b4e,0xf7be,0xd6fb,0xd71b,0xdf1c,0xd6fc,0xdf1c,0xd71c,0xd6fb,0xc6bb,0xbdf7,0x6b6f,0x3a29,0x4a29,0x4229,0x39a6,0xbe38,0xad75,0xd6fb,0xd6fb,0xd6fb,0xd71b,0xd6fb,0xd6db,0xcedb,0xdf3c,0x94b5,0x49c8,0x5aaa,0x41e8,0xce7a,0xd6fb,0xd6da,0xceda,0xceba,0xceb9,0xc69a,0xceba,0xb618,0xd71c,0x4a6b,0x31c7,0x31e8,0x29a6,0x52a9,0x8cd3,0xce78,0xbe58,0xc659,0xc679,0xbe79,0xbe38,0xc638,0xb638,0xd6db,0x5aed,0x2967,0x31a7,0x6b4d,0xce9a,0xbe58,0xbe38,0xbe18,0xbe18,0xb5f7,0xb5f7,0xc699,0x83f0,0xc618,0x18c5,0x3165,0x2966,0x2145,0x638e,0x8451,0xb638,0xad96,0xb5d8,0xb5d8,0xb5f7,0xadb7,0xadd7,0xadb7,0xb5f7,0x5acd,0x630d,0xb5f7,0xad96,0xadb6,0xad96,0xa575,0xad96,0xad96,0xa596,0xadb6,0xad97,0x39e9,0x8c52,0x0063,0x1105,0x1905,0x1062,0x94d2,0x3a08,0x9d75,0x9514,0xa515,0x9d14,0x9d35,0x9d14,0x94f4,0x94f4,0x73b1,0x18c4,0x41c8,0x2124,0x9513,0x94f3,0x94d3,0x94d3,0x8cd3,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x5b2d,0x5aab,0x10c3,0x18e3,0x18c3,0x0882,0x73ae,0x7c4f,0x8492,0x8492,0x8491,0x8472,0x8471,0x8492,0x8c51,0x8472,0x8492,0x2145,0x6b4d,0x8cb3,0x8452,0x8430,0x7c31,0x7c32,0x7c30,0x7410,0x7c11,0x8472,0x41e9,0x7b8e,0x0822,0x10a3,0x08c3,0x10a2,0x94d2,0x39a8,0x18c4,0x18c3,0x1104,0x1924,0x18c3,0x41c5,0x5288,0x5288,0x5a88,0x52a9,0x41e6,0xa553, +0xad94,0xa573,0xc6b9,0x538e,0x4a89,0x5288,0x4a89,0x5a89,0x4228,0x3186,0x31c7,0x31e7,0x31c7,0x31a7,0x6a8b,0xcefc,0x3b0e,0x2966,0x39c7,0x2966,0x83ce,0x9493,0xc659,0xbe38,0xc659,0xc679,0xc699,0xc679,0xbe58,0xcebb,0x7472,0x1925,0x20e5,0x3125,0xb535,0xce7a,0xc67a,0xce9a,0xc6ba,0xbe9a,0xc679,0xc69a,0xae9a,0xa595,0x53af,0x3228,0x31c7,0x39c8,0x7aec,0xa575,0xce59,0xcedb,0xc6da,0xceda,0xd6db,0xcedb,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xc6fb,0x7bf1,0xe75c,0xd71b,0xdf3c,0xdf3c,0xd6fb,0xd71c,0xd71c,0xdf1c,0xd73d,0x9513,0x6c93,0x3a08,0x4a69,0x528a,0x39c7,0xd6fb,0xa514,0xefbe,0xd71b,0xdf1d,0xdf3d,0xdf3c,0xdf3c,0xdf3c,0xdf5d,0xc69b,0xbdf8,0xbe18,0xc618,0xce9a,0xdf3c,0xe73c,0xe73c,0xef7d,0xe77d,0xe77d,0xef9e,0xb67a,0xdf9d,0x4a8b,0x52aa,0x4a6a,0x4209,0xb555,0xadb7,0xf7be,0xdf5c,0xe75d,0xefbe,0xe75c,0xe77d,0xdf7c,0xe77d,0xefbe,0xdf3c,0xad96,0xdedb,0xe77e,0xe75c,0xe75d,0xdf5d,0xe75d,0xdf5d,0xdf3c,0xe75d,0xe7be,0x8431,0xad77,0x39e8,0x526b,0x526a,0x4a08,0xe75c,0xa514,0xe77d,0xd71b,0xdf3c,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xe71c,0xdf5c,0xe75d,0xdf5d,0xd6fc,0xd6fc,0xd71b,0xd71c,0xd71c,0xdf5c,0xd6fb,0xe75d,0xcedc,0xbe18,0x6b8f,0x3a28,0x4a49,0x420a,0x41c7,0xc679,0xa534,0xcefb,0xcefb,0xd6fb,0xd6fb,0xceda,0xd6fb,0xd6fb,0xcedb,0xdf3c,0xdf5d,0xc69a,0xe77d,0xd6db,0xceba,0xceda,0xd6da,0xceba,0xceba,0xceba,0xd6db,0xadd7,0xcedb,0x4a2a,0x31c7,0x4208,0x3186,0x5289,0xa535,0xad95,0xceba,0xc69a,0xc6ba,0xc699,0xc679,0xc679,0xc679,0xce7a,0xd6db,0xce9b,0xce9b,0xceda,0xbe38,0xbe38,0xc638,0xbe38,0xbe18,0xbe18,0xbe37,0xc69a,0x8431,0xbe58,0x1084,0x2966,0x3186,0x2145,0x636c,0x8cb1,0xbe59,0xadd7,0xb5f7,0xbe18,0xb5d7,0xb5b6,0xb5d7,0xb5d7,0xad96,0xb5b7,0xc638,0xadd6,0xadb6,0xa5b7,0xad96,0xad96,0xadb6,0xad96,0xa575,0x9d55,0xad97,0x3a09,0x9473,0x0863,0x2105,0x1904,0x1863,0x7450,0x4a8a,0xa555,0x9d14,0xa514,0x9d15,0x9514,0x94f4,0x9514,0x8cf3,0x9535,0x9d15,0x8c32,0xad96,0x94f3,0x94f3,0x94f3,0x94d3,0x94f3,0x94d3,0x94d3,0x84b2,0x9cf3,0x73ef,0x626c,0x10c4,0x18e3,0x18c3,0x0861,0x6bce,0x6bcd,0x8c91,0x8c92,0x8472,0x8471,0x8471,0x7c71,0x8451,0x8c51,0x8472,0x52eb,0x8451,0x8c52,0x8472,0x7c50,0x7450,0x7c51,0x7410,0x7430,0x7430,0x7c51,0x39e9,0x6b4d,0x0821,0x18c2,0x10a3,0x10e2,0x8cd2,0x39c9,0x18e3,0x18e2,0x18e4,0x2104,0x18c3,0x39c6,0x5288,0x5289,0x5288,0x5a88,0x41e6,0xa553, +0xad75,0xad53,0xbeb8,0x534d,0x4a68,0x52a9,0x4a68,0x5a68,0x4227,0x31a6,0x39e7,0x31e8,0x29c7,0x2986,0x6acc,0xc6da,0x3b0c,0x2985,0x39a6,0x3186,0x838e,0x94d4,0xc657,0xc679,0xc679,0xc699,0xc6ba,0xceda,0xc6b9,0xc699,0xcefa,0xd6db,0xd71b,0xe75c,0xd6fb,0xceba,0xd6fa,0xcefb,0xd73b,0xd6fb,0xd6fb,0xd77d,0xb659,0xae38,0x4b2c,0x39e8,0x39e7,0x39c7,0x7b2b,0xbe18,0xc638,0xdf3c,0xdf5c,0xd73b,0xd71b,0xd73c,0xdf7d,0xdf5c,0xd75c,0xe79d,0xefbe,0xf7ff,0xefdf,0xe7dd,0xefde,0xefde,0xe79d,0xe7be,0xeffe,0xf7de,0xbe9a,0xbe59,0x6c32,0x3a28,0x4a6a,0x428a,0x39c7,0xdefb,0x94d3,0xf7dd,0xf7ff,0xf7ff,0xf7de,0xf7de,0xf7ff,0xefde,0xefde,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xefde,0xefff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xefdf,0xa535,0xe77e,0x3a4a,0x4a8a,0x52aa,0x424a,0x8bae,0xce79,0xbdd6,0xf7be,0xffff,0xf7ff,0xf7df,0xefbe,0xf7de,0xefde,0xe79d,0xefde,0xf7de,0xefbe,0xef9e,0xefbe,0xf7be,0xef7d,0xef9e,0xefbe,0xe79d,0xef9e,0xa596,0xc659,0x7c32,0x4a4a,0x5269,0x4aaa,0x4a08,0xe73b,0xadb6,0xe79e,0xefbe,0xefbe,0xef9d,0xe79c,0xf7fe,0xefbe,0xe79d,0xe79d,0xefbe,0xef9d,0xe79d,0xe79d,0xefbe,0xe77d,0xdf5c,0xe77d,0xe73c,0xe73c,0xe73c,0x94d3,0xef9e,0x52cc,0x4249,0x4a6a,0x4a4a,0x2945,0xdf1b,0x94b2,0xb5f7,0xcedb,0xc6ba,0xc69a,0xc69a,0xc69a,0xc679,0xc679,0xceba,0xceb9,0xceb9,0xcedb,0xc6ba,0xceba,0xc69a,0xc679,0xceba,0xbe99,0xc6b9,0xc659,0x8410,0xce7b,0x31c8,0x39c7,0x41e9,0x41e8,0x3986,0xc659,0x4a8a,0x9cd3,0xa554,0x9d13,0xa555,0x9d35,0x9d34,0xa575,0xad75,0xa554,0xa595,0xadb5,0xadb6,0xb5d7,0xadb6,0xadd6,0xbdf7,0xb5f7,0xadd6,0xb5f6,0x9cf4,0x630d,0x9d35,0x1883,0x3186,0x3166,0x3165,0x3a06,0xbe38,0x634d,0x94f3,0xad96,0xadb6,0xadb6,0xadd6,0xa574,0xad75,0xadb5,0xadd6,0xa5b6,0xad96,0xad75,0xadd5,0xadb5,0xadb5,0xad96,0xad96,0xad95,0xadb6,0x8c93,0x73d0,0x736f,0x1884,0x1905,0x1104,0x20e4,0x532b,0x7b8e,0x8451,0x9534,0xa5b5,0xad75,0x9d75,0x9d95,0xa595,0x9d95,0xa595,0xadb6,0xa595,0xa575,0x9d54,0x9d33,0xa534,0x9d54,0xa595,0x9d74,0x9d33,0x9512,0x6b2c,0x8431,0x3987,0x18e3,0x18c3,0x18c3,0x0020,0x8450,0x3207,0x842f,0x94b1,0x8cb2,0x94b2,0x94d2,0x8cb1,0x8c91,0x94b1,0x94d2,0x9513,0x8c71,0x7c10,0x73cf,0x8410,0x842f,0x73ef,0x6bcf,0x73ef,0x6bae,0x52eb,0x3289,0x6b2e,0x0021,0x10c2,0x10c3,0x10a2,0x8c91,0x420a,0x18c3,0x18e2,0x1903,0x2104,0x18c2,0x31e5,0x5288,0x4a88,0x5269,0x52a8,0x41e6,0xa553, +0xad94,0xb574,0xbeb8,0x532c,0x4aa8,0x5288,0x5288,0x5aa8,0x4207,0x39a6,0x31e7,0x31e7,0x31e7,0x2986,0x62ec,0xc6da,0x3acb,0x2985,0x39a7,0x31a8,0x5228,0xad76,0x7c11,0x8c71,0x8c92,0x94b2,0x94b2,0x8cb2,0x84b2,0x8c92,0x8cb2,0x94d3,0x9d13,0x94d3,0x84b2,0x84b2,0x8cb2,0x94f3,0x94d3,0x94b2,0x8c92,0x8c72,0x94f3,0xa619,0x2186,0x31c7,0x31c7,0x39e8,0x3165,0xce79,0x9513,0x94d2,0x94f3,0x94f3,0x94f4,0x94f4,0x8cb3,0x8cd3,0x94d3,0x8cd3,0x8c92,0x8c72,0x8c92,0x94d3,0x94f3,0x94d3,0x94f3,0x9514,0x94f4,0x8cd2,0x9db5,0xcefb,0x3a69,0x4229,0x4a49,0x4249,0x4228,0x83ce,0xd6fa,0x9cf3,0x9cb3,0x9493,0x9cd3,0x94f3,0x9d14,0xa555,0x9d35,0x9514,0x94f3,0x9514,0x9d55,0x9d35,0x9d15,0x94f4,0x94f4,0x94d3,0x94d3,0x94d3,0xa554,0xc67a,0x6bf1,0x4229,0x528b,0x528b,0x4a6a,0x4207,0xd699,0xc658,0x9d14,0x94d4,0x9cf4,0x94d4,0x9d14,0x9514,0x9d35,0x9d14,0x9d34,0x94f4,0x9535,0x94f4,0x94f3,0x9d34,0x9d14,0x9d34,0xa555,0x9d34,0xa535,0xc679,0xadd7,0x4249,0x526a,0x4a69,0x428a,0x4a6a,0x736c,0xdefb,0xb5b6,0x9d14,0x9cd3,0x9cb3,0x94b2,0xa534,0x9d34,0x9cd3,0x9cd3,0x94d3,0x94f3,0x9cf3,0x9514,0x9cf4,0x9cf3,0xa534,0xad76,0xad55,0xa534,0xa575,0xd6bb,0x8451,0x3a08,0x424a,0x3a49,0x4249,0x3a08,0x6b4c,0xdefb,0xb5d7,0xad76,0xad96,0xad96,0xa575,0xad96,0xad76,0xa576,0xa556,0x9d14,0x9d15,0x9d15,0x9514,0x9d14,0x9514,0x94f3,0x94f4,0x94d3,0x8cb3,0x9d34,0xce9a,0x52ed,0x29a7,0x39e8,0x39c7,0x39c8,0x2966,0x4a69,0xc679,0x94b2,0x94b2,0x8c71,0x9492,0x9492,0x8472,0x8430,0x8c71,0x8451,0x8c71,0x9cd2,0x94d2,0x94b2,0x8492,0x7c30,0x73f0,0x8411,0x7bd0,0x7bcf,0x9472,0xad96,0x39e8,0x3125,0x2965,0x2145,0x3165,0x08a2,0x6bcd,0xad95,0x7c31,0x7c11,0x7411,0x7c11,0x8410,0x7c30,0x73ef,0x73f0,0x6baf,0x6bef,0x73d0,0x736e,0x7baf,0x6b6d,0x738e,0x7baf,0x632d,0x632d,0x634d,0x7bb0,0x9cf4,0x1926,0x2125,0x1904,0x1924,0x2104,0x10c2,0x8c10,0x7c30,0x5b2d,0x630c,0x5acb,0x5acb,0x52ab,0x52cc,0x5aec,0x62ec,0x630c,0x5b2c,0x5aec,0x5aec,0x5acb,0x5aeb,0x52cb,0x52ab,0x5aab,0x528a,0x4a8a,0x738f,0x7baf,0x0042,0x08e3,0x18c3,0x20e3,0x10c1,0x3184,0x8490,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x424a,0x4a6a,0x4a8b,0x42aa,0x4a8b,0x4a8b,0x4a6a,0x4a8a,0x4acb,0x3a8a,0x4aab,0x52cb,0x428a,0x4a89,0x426a,0x5aec,0x6b6e,0x20a4,0x10a2,0x18c2,0x18a3,0x0882,0x8492,0x4a09,0x18c3,0x1903,0x1924,0x1904,0x20e4,0x31e5,0x5267,0x52a8,0x5288,0x52a9,0x41e6,0xa574, +0xad94,0xad94,0xbeb8,0x532b,0x5288,0x5288,0x5288,0x52a9,0x4228,0x39a6,0x39e7,0x31e7,0x31a6,0x31c7,0x730c,0xbeda,0x326a,0x39a6,0x39c7,0x39a7,0x2945,0x5268,0xbdf6,0xce99,0xd6b9,0xceb9,0xceda,0xd6fb,0xd71c,0xdf3b,0xdf3b,0xe75c,0xe77e,0xdf5c,0xdf5d,0xdf5c,0xd75c,0xdf5d,0xdf7d,0xdf5d,0xdf5d,0xd71c,0x9db6,0x2165,0x31a7,0x39c6,0x39e6,0x3208,0x29e7,0x41c6,0xad95,0xd6da,0xd71b,0xd71b,0xd6da,0xe71b,0xdf1b,0xd6da,0xceda,0xd6bb,0xcedb,0xbe99,0xd69a,0xceba,0xce99,0xc679,0xc679,0xbe38,0xbe58,0xbe59,0x8492,0x3a28,0x4269,0x4a69,0x4249,0x4249,0x4269,0x31c7,0x4a69,0x8471,0x94f3,0xa534,0xa574,0x9d54,0xa575,0x9513,0x9d34,0x9d54,0x9d74,0x9d95,0x9d75,0x9d75,0x9d75,0xa595,0xa575,0x9d75,0xa575,0xa574,0x7cb1,0x4a69,0x524a,0x4a6a,0x4a8a,0x526a,0x4a69,0x52aa,0x4227,0x5aeb,0x7410,0x7c10,0x7c30,0x8c92,0x7c70,0x742f,0x7c30,0x7c10,0x73ce,0x6bad,0x638d,0x636d,0x6b6e,0x6b6d,0x634d,0x636d,0x6b4c,0x6b8d,0x634c,0x426a,0x3208,0x4249,0x4a6a,0x4a69,0x4a8a,0x4a8a,0x4269,0x4228,0x6b2c,0x7bee,0x73ee,0x8430,0x73ce,0x6bae,0x638d,0x6b4d,0x738e,0x5b2c,0x5b2b,0x632c,0x5b0b,0x530b,0x52ca,0x52c9,0x52ea,0x634c,0x5b4c,0x4268,0x31e7,0x31a7,0x4269,0x3a69,0x4249,0x4228,0x424a,0x41e8,0x2945,0x31c6,0x4249,0x39e8,0x39e7,0x3a07,0x4a48,0x4228,0x3a07,0x3a08,0x3a08,0x3a28,0x3208,0x31e7,0x31c7,0x31c6,0x3a07,0x3208,0x29c7,0x39e6,0x4208,0x2986,0x3187,0x41c8,0x4208,0x39e7,0x31c7,0x31c8,0x31a7,0x10c3,0x18c3,0x18e3,0x10e2,0x10e3,0x1903,0x2124,0x2124,0x1945,0x1944,0x1904,0x2104,0x2164,0x2965,0x3186,0x3986,0x2944,0x31c5,0x31c6,0x39a6,0x31a6,0x2104,0x2945,0x2965,0x2965,0x2165,0x2945,0x2966,0x1903,0x18c2,0x2965,0x2144,0x2145,0x2104,0x3124,0x3185,0x31c5,0x31a5,0x2985,0x2985,0x2145,0x2146,0x29a6,0x2186,0x31a6,0x31a7,0x2186,0x2186,0x2165,0x2105,0x18c3,0x10e4,0x1905,0x18e4,0x1904,0x1904,0x1904,0x18a2,0x1923,0x2165,0x2165,0x2965,0x31a5,0x31e7,0x31a6,0x31a6,0x31a6,0x29c6,0x2986,0x2986,0x31a6,0x3185,0x31a6,0x29a7,0x21a6,0x29a6,0x4a69,0x3186,0x18c3,0x1061,0x08c3,0x10e3,0x10c2,0x08c2,0x10c2,0x08a2,0x0040,0x18e3,0x1903,0x2104,0x2104,0x1903,0x18e3,0x1924,0x1924,0x1905,0x18e4,0x18c3,0x10c2,0x10a3,0x0861,0x1082,0x0861,0x0841,0x0861,0x0041,0x0821,0x1041,0x1883,0x10a2,0x18a2,0x1062,0x0081,0x84d2,0x4a09,0x20a2,0x20e3,0x1903,0x1904,0x1924,0x31a6,0x4a87,0x5288,0x52a8,0x5289,0x39e6,0xa594, +0xad94,0xad74,0xbeb9,0x4b2c,0x5288,0x5a88,0x5288,0x4a69,0x39e7,0x31c6,0x39e7,0x31c7,0x29a7,0x29a7,0x7b4d,0xb6da,0x2a4b,0x3186,0x31c6,0x31c6,0x3186,0x2965,0x2925,0x2965,0x2965,0x3185,0x3165,0x2944,0x2125,0x2945,0x2945,0x2945,0x2124,0x2144,0x2924,0x2104,0x2104,0x2165,0x2124,0x2125,0x2925,0x2944,0x2965,0x31c6,0x31c7,0x39c7,0x39c6,0x31a7,0x39c7,0x39a7,0x2965,0x2165,0x2186,0x2125,0x2965,0x2986,0x2985,0x3186,0x2986,0x21a6,0x2185,0x31c6,0x31c6,0x29a6,0x31c7,0x31c7,0x2986,0x3187,0x2985,0x31c7,0x39e8,0x4a28,0x4a69,0x4249,0x4249,0x4a69,0x4249,0x4a69,0x4a49,0x39e8,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x4208,0x4a08,0x3a07,0x39c7,0x41e8,0x39e8,0x4229,0x3a08,0x41e8,0x4208,0x4208,0x3a08,0x3a08,0x3a08,0x4a6a,0x4a6a,0x4269,0x4a69,0x4a6a,0x4a6a,0x4a4a,0x4269,0x4a8a,0x4a29,0x4209,0x4a29,0x4a49,0x4a69,0x3a28,0x4a49,0x4a8a,0x4248,0x4a49,0x4a4a,0x4a69,0x4269,0x3a29,0x4a29,0x4229,0x4249,0x426a,0x4229,0x4a4a,0x4a8b,0x526a,0x528a,0x4a6a,0x4aaa,0x526a,0x4a6a,0x4a8a,0x4a09,0x4229,0x3a49,0x3a29,0x3a28,0x3a28,0x4208,0x39e8,0x4249,0x424a,0x4a49,0x4a49,0x4a48,0x4a49,0x4a29,0x4229,0x4229,0x4248,0x4a29,0x4a49,0x4a69,0x4a29,0x4269,0x4a69,0x4249,0x4a49,0x4a49,0x4a69,0x3a49,0x4228,0x3a08,0x3a08,0x4209,0x4208,0x4a08,0x3a08,0x39c7,0x39e8,0x31e8,0x39e8,0x4228,0x4208,0x39e8,0x39e7,0x31c6,0x31e7,0x3207,0x39e8,0x39c8,0x39e8,0x39e7,0x39e8,0x31e8,0x39e8,0x39c7,0x39a7,0x3a07,0x39e7,0x31c8,0x31c6,0x31e7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x39a6,0x39a6,0x3185,0x2986,0x2966,0x2985,0x2966,0x2946,0x2145,0x2145,0x2124,0x2965,0x3186,0x3186,0x3185,0x3165,0x2985,0x2945,0x3145,0x2985,0x2165,0x3166,0x2905,0x2125,0x1925,0x2105,0x2104,0x2124,0x2104,0x2124,0x2904,0x2105,0x1904,0x18e4,0x1904,0x20e4,0x18e4,0x18e4,0x20e4,0x2104,0x1904,0x2144,0x1905,0x1904,0x1904,0x1904,0x18e4,0x1903,0x1903,0x18e3,0x10e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c2,0x18c2,0x18a3,0x10a3,0x10a4,0x18a3,0x08a3,0x10a3,0x20c2,0x18c3,0x18c2,0x18c2,0x0883,0x10a3,0x18c3,0x10e3,0x10c3,0x10c3,0x10c3,0x08c3,0x18c3,0x18e3,0x18c2,0x18a2,0x10a2,0x20a2,0x10c2,0x10c2,0x18c3,0x18a2,0x18a3,0x10a3,0x18c3,0x18a2,0x18a1,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x08a2,0x10c2,0x18c2,0x18c3,0x18c3,0x10a2,0x18a3,0x08a2,0x0881,0x8cd2,0x41c9,0x18a2,0x18c3,0x18e2,0x18e4,0x2164,0x31a5,0x4a88,0x5288,0x4a89,0x52a8,0x4a06,0xa594, +0xa594,0xad74,0xbeb9,0x4b0b,0x5268,0x5288,0x4a68,0x4a68,0x4227,0x31c6,0x29a6,0x31c7,0x31c7,0x29a7,0x72cc,0xbe99,0x32ab,0x3186,0x31a6,0x2986,0x29a6,0x3987,0x2986,0x29a7,0x31a7,0x39c7,0x39c7,0x31c7,0x39c7,0x39c7,0x39c7,0x31a7,0x39c7,0x39c7,0x39c7,0x31c6,0x31c7,0x29c7,0x39c6,0x31e7,0x31e7,0x39a7,0x31c7,0x29c7,0x31a7,0x29a6,0x31e7,0x39c8,0x31c7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e8,0x31e8,0x4228,0x39e8,0x41e8,0x4a08,0x4228,0x3a28,0x4228,0x4228,0x4249,0x4a49,0x41e7,0x4a49,0x4228,0x4a48,0x4249,0x41e8,0x4229,0x4a49,0x4a49,0x4a49,0x4a8b,0x428a,0x4a69,0x5289,0x4a69,0x4249,0x528a,0x4a8a,0x528a,0x528a,0x4a4a,0x528b,0x528a,0x528a,0x52cb,0x4aaa,0x4aaa,0x4a6a,0x4aaa,0x4a8a,0x4aaa,0x4a89,0x4a89,0x526a,0x526a,0x528a,0x4a8a,0x528b,0x4a8a,0x52ab,0x4aab,0x52ab,0x52cc,0x52cc,0x52ab,0x5acb,0x5aeb,0x4a8a,0x4a8a,0x52ab,0x5acb,0x52ab,0x52cb,0x52cb,0x52ab,0x528b,0x528b,0x528a,0x52ca,0x52ca,0x52cb,0x4aab,0x4aab,0x4aaa,0x4a8a,0x4a4a,0x4a8a,0x528b,0x4a6a,0x52ab,0x528b,0x52ab,0x52ab,0x528b,0x4a6b,0x4a8a,0x4aaa,0x4a8a,0x4a49,0x4a6a,0x52aa,0x4aab,0x4a6a,0x4a8a,0x4a8a,0x4a6a,0x4a49,0x4a69,0x4a69,0x5269,0x4a68,0x4249,0x4249,0x4249,0x4a69,0x4a49,0x4249,0x4a4a,0x4a69,0x4228,0x3a28,0x426a,0x4208,0x4269,0x4248,0x3a48,0x3a08,0x3a09,0x31e8,0x39e8,0x4208,0x4228,0x3a08,0x4209,0x3a29,0x4228,0x3a08,0x39c8,0x4a08,0x4a08,0x4208,0x3a08,0x3a08,0x39e8,0x39c7,0x39a7,0x39e8,0x31e7,0x29c8,0x31c7,0x39a8,0x39a7,0x31c7,0x39e7,0x31c6,0x31a7,0x31c7,0x39c7,0x31a6,0x31a7,0x31a7,0x3986,0x2966,0x2946,0x3167,0x3186,0x29a6,0x2986,0x3186,0x3166,0x29a6,0x2986,0x2986,0x2966,0x3166,0x3186,0x2986,0x2966,0x2945,0x2145,0x2166,0x2166,0x2165,0x2945,0x2945,0x2945,0x2145,0x2945,0x2945,0x2124,0x2144,0x2125,0x2125,0x2124,0x2104,0x2925,0x2905,0x2124,0x2105,0x2905,0x2905,0x2104,0x2105,0x20e4,0x2124,0x18e4,0x2104,0x1904,0x18e4,0x20e4,0x20e4,0x1904,0x10e4,0x18e4,0x18e3,0x08e4,0x1904,0x20e4,0x18c4,0x18c3,0x1904,0x18e3,0x18c3,0x18c4,0x18e4,0x10e3,0x18e3,0x18c4,0x18c3,0x18c3,0x18c3,0x10c3,0x10a3,0x08c3,0x10c3,0x18c3,0x20c3,0x18c2,0x18c2,0x10c3,0x10a3,0x18a3,0x10a2,0x18c3,0x18a4,0x18c3,0x18a2,0x18e3,0x10a2,0x10a3,0x08c2,0x08a2,0x08a2,0x08a2,0x00c2,0x18a2,0x18a3,0x10c3,0x0021,0x3247,0x8cb3,0x2106,0x18c3,0x18e3,0x1904,0x1904,0x1904,0x3185,0x5267,0x5268,0x5289,0x5288,0x4226,0xa595, +0xad95,0xad74,0xbeda,0x4aeb,0x4a68,0x5a89,0x4a89,0x4288,0x4207,0x31a6,0x39e7,0x39e7,0x31c6,0x31c6,0x49e7,0xc679,0x7493,0x1966,0x2987,0x2986,0x31a7,0x2946,0x29a7,0x2986,0x31a7,0x39a7,0x31a7,0x31a6,0x31a6,0x2985,0x31a6,0x3166,0x3165,0x31a7,0x3187,0x2965,0x2986,0x2987,0x31c7,0x39c7,0x39e7,0x31a7,0x39a7,0x41c7,0x39c7,0x31c7,0x3a07,0x39e8,0x3a08,0x3a08,0x3208,0x31c7,0x31a7,0x39a7,0x39e8,0x31c7,0x39e8,0x39e8,0x3a09,0x3a09,0x3a28,0x3a08,0x39e8,0x4249,0x4229,0x3a08,0x4208,0x4208,0x3a48,0x3a08,0x4a6a,0x424a,0x4208,0x4208,0x4a09,0x4a6a,0x4269,0x4229,0x5229,0x5269,0x526a,0x4a4a,0x4a29,0x4a6a,0x528a,0x4229,0x424a,0x4a6a,0x4a8a,0x428a,0x4229,0x4209,0x4a49,0x4209,0x41e8,0x49e8,0x4a48,0x3a08,0x39e8,0x39e8,0x39e9,0x4229,0x4a49,0x4229,0x4229,0x4229,0x4209,0x39e9,0x39e8,0x39a8,0x4209,0x41c8,0x39a8,0x39a7,0x39e9,0x39e9,0x31c8,0x31c8,0x31c7,0x31c8,0x31a8,0x39e8,0x39e9,0x39e9,0x39c8,0x31a6,0x39e8,0x31a8,0x31a7,0x31c7,0x39e8,0x41e9,0x39a8,0x31a7,0x31a7,0x39a7,0x2987,0x39c8,0x39a7,0x3187,0x3188,0x31a8,0x31e8,0x39c8,0x39a8,0x39a8,0x39c7,0x31a8,0x3987,0x3167,0x3147,0x3146,0x2966,0x2966,0x3167,0x2966,0x2186,0x31c7,0x31a6,0x3a09,0x3167,0x3966,0x3966,0x3146,0x39a7,0x39a8,0x3167,0x3166,0x3167,0x31c7,0x2986,0x3186,0x39a7,0x31a7,0x2966,0x3166,0x3187,0x3986,0x3166,0x2966,0x3166,0x2925,0x2945,0x3166,0x2926,0x2966,0x2966,0x2946,0x2167,0x2146,0x20e5,0x2905,0x2945,0x2945,0x20e5,0x2105,0x2946,0x2125,0x1905,0x2126,0x2125,0x20e4,0x18e5,0x10c5,0x10c5,0x18e6,0x10c4,0x18a3,0x18c4,0x18c4,0x10a4,0x1083,0x1063,0x1083,0x18c4,0x1083,0x0862,0x1083,0x18a4,0x18a4,0x10a3,0x1082,0x10a3,0x0862,0x1062,0x1883,0x1063,0x0861,0x10a2,0x1042,0x0041,0x0863,0x1083,0x0862,0x0862,0x0862,0x0842,0x0821,0x1021,0x0021,0x0021,0x0042,0x0022,0x0000,0x0000,0x0801,0x0000,0x0801,0x0821,0x0801,0x0001,0x0021,0x0001,0x0021,0x0001,0x0821,0x0021,0x0021,0x0822,0x0822,0x0801,0x0021,0x0021,0x0021,0x0022,0x0022,0x0042,0x0021,0x0841,0x0020,0x0001,0x0001,0x0001,0x0001,0x0000,0x0001,0x0001,0x0001,0x0002,0x0021,0x0021,0x0000,0x0001,0x0001,0x0001,0x0021,0x0041,0x0041,0x0021,0x0821,0x0842,0x0842,0x0842,0x0021,0x0021,0x0821,0x0821,0x0862,0x0862,0x1042,0x0841,0x0841,0x0862,0x10c3,0x3a6a,0x8431,0x5acb,0x1042,0x18e3,0x20e3,0x2104,0x1904,0x18e4,0x39a5,0x5247,0x5a69,0x4a89,0x5288,0x4a07,0xa594, +0xad94,0xad74,0xc6fa,0x42eb,0x4a88,0x5289,0x4a89,0x4a68,0x39e7,0x31a6,0x39e6,0x39e7,0x31c7,0x31e6,0x3986,0xa492,0xcedb,0x9515,0x5b2e,0x632d,0x5b0d,0x62ed,0x5b0d,0x5b0d,0x630d,0x6b2e,0x6aed,0x6b0d,0x6b2d,0x630d,0x5aed,0x630e,0x634e,0x5b0d,0x5aed,0x5acc,0x5acc,0x5aad,0x5acd,0x5acd,0x52ac,0x5aed,0x5b0d,0x62ec,0x630d,0x5aed,0x5acc,0x5acc,0x62cc,0x5acc,0x62ed,0x62ed,0x62ec,0x630d,0x62ed,0x632d,0x6b2e,0x6b0e,0x632d,0x634e,0x6b0d,0x630d,0x630d,0x62ec,0x6b0d,0x630e,0x630d,0x6b2d,0x632d,0x5b4d,0x632d,0x7b6f,0x736f,0x6b8f,0x738f,0x7baf,0x73af,0x7b8f,0x7b6f,0x7bd0,0x83f1,0x7bd0,0x7bd0,0x7c11,0x7c11,0x8432,0x8c52,0x8431,0x9473,0x9c93,0x9473,0x8c73,0x9494,0x94d4,0x9cb4,0xa4f5,0x9cf4,0x9cd4,0x9d34,0xa4f5,0xa515,0xa515,0x9cf4,0xa515,0xad56,0x9d56,0xa536,0xa535,0xad76,0xbdd8,0xb5d8,0xb5b7,0xb5b7,0xb5b7,0xbdd9,0xb5d8,0xadd8,0xb5f8,0xbe39,0xbdf9,0xb5f9,0xbe19,0xce5a,0xc639,0xc65a,0xc639,0xbe39,0xbe39,0xbe18,0xce5a,0xce5a,0xce59,0xc659,0xce59,0xce7a,0xc659,0xce5a,0xc639,0xc639,0xc639,0xce5a,0xce5a,0xce59,0xc639,0xc619,0xce59,0xce7a,0xc639,0xc618,0xc619,0xce39,0xc619,0xbe18,0xc5f9,0xc639,0xbe39,0xbe19,0xc618,0xc618,0xb5d8,0xc619,0xbdb7,0xbdb8,0xbdf8,0xbdd8,0xb598,0xb5d8,0xb5f8,0xad97,0xad97,0xad77,0xad76,0xad56,0xad76,0xad56,0xad56,0xad77,0xa556,0xad36,0xa515,0xa515,0xad56,0xad96,0xad76,0xad77,0xad77,0xa535,0xa515,0xa536,0xad77,0xad76,0xa555,0xad15,0xb576,0xad76,0xad76,0xb5b7,0xadd7,0xadb7,0xad76,0xad76,0xadb7,0xadb6,0xad56,0xad97,0xb5d9,0xbdd8,0xb5f8,0xb576,0xc5d8,0xbdb7,0xbdb7,0xadb7,0xad97,0xb5b7,0xb597,0xbdf8,0xbdd8,0xad77,0xadb7,0xad97,0xb577,0xa556,0xad55,0xb5d8,0xb5d7,0xad96,0xad76,0xb5b7,0xb5b7,0xb597,0xb5d7,0xb5b7,0xadb7,0xad97,0xadd7,0xbdf8,0xb5d7,0xbdf8,0xbdf8,0xb5d8,0xb5f8,0xb619,0xb5f8,0xb5d7,0xb5d8,0xb5d8,0xb5d8,0xbdf8,0xbdf9,0xadf7,0xbe17,0xb5d7,0xb5d7,0xb5b7,0xb5d7,0xadd7,0xadb7,0xadd7,0xadd7,0xadb7,0xadb6,0xad96,0xb5d7,0xb5d7,0xadb7,0xb5f7,0xbdd7,0xb596,0xad96,0xad76,0xa596,0xad96,0xad76,0xad96,0xa596,0x9d55,0x9d54,0xadb5,0xad75,0xa555,0xa554,0xa554,0xad54,0x9d14,0x9d55,0x9575,0x9db5,0x9d75,0xa554,0x9d14,0x9cf3,0x94f4,0x94f4,0xa514,0x9d34,0x9513,0x9514,0x94d3,0x94d3,0x9d34,0x8cf3,0x8cd3,0x9514,0x8c92,0x52cc,0x18a4,0x10a2,0x10c3,0x18c3,0x20e3,0x2104,0x18e3,0x31c4,0x4a47,0x5269,0x5269,0x5a89,0x4a07,0xad74, +0xad94,0xad74,0xc6fa,0x4aca,0x4a88,0x5289,0x5288,0x5267,0x39e6,0x39c5,0x31e7,0x31c7,0x31c7,0x39c7,0x29a7,0x2987,0x8c50,0xc699,0xd73c,0xd73c,0xd75c,0xd73b,0xdf3c,0xdf3c,0xe75c,0xe77c,0xdf9d,0xdf5c,0xdf5c,0xe77c,0xdf9d,0xe79d,0xe77e,0xe77d,0xe77d,0xe79d,0xefbe,0xe79d,0xefbd,0xefde,0xefde,0xef9e,0xe7de,0xe7dd,0xeffe,0xefff,0xeffe,0xf7fe,0xf7ff,0xefff,0xf7ff,0xffff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xefff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7fe,0xf7ff,0xf7df,0xefdf,0xefdf,0xf7df,0xf7de,0xf7de,0xefde,0xf7de,0xf7de,0xf7de,0xf7df,0xefde,0xefde,0xefdf,0xefdf,0xefbe,0xefbe,0xf7de,0xf7de,0xefbe,0xefde,0xf7be,0xefbd,0xef9d,0xf79e,0xf7bd,0xf7be,0xefbd,0xef9d,0xef9d,0xe79d,0xef9d,0xef9d,0xe77d,0xe77c,0xef7d,0xdf5c,0xdf1b,0xdf3c,0xdf3c,0xdf1b,0xe73c,0xdf1b,0xdefb,0xdf1b,0xdedb,0xd6fa,0xd6fa,0xd6da,0xd6db,0xbe58,0xce9a,0xd69a,0xc679,0xce99,0xce79,0xceda,0xd6da,0xd6b9,0xceba,0xd6b9,0xce99,0xce99,0xceb9,0xce79,0xd6da,0xd6fa,0xce99,0xc699,0xceba,0xceb9,0xc699,0xc678,0xceba,0xce99,0xce9a,0xce99,0xce99,0xce99,0xc678,0xceba,0xce9a,0xc699,0xc699,0xd6db,0xd6ba,0xd6ba,0xceba,0xc699,0xceda,0xceda,0xd6da,0xce99,0xc679,0xce9a,0xc699,0xc699,0xceb9,0xd6d9,0xdefa,0xd6fa,0xdf1b,0xdf1c,0xd6fb,0xd6fb,0xceba,0xc679,0xc699,0xce99,0xd6ba,0xce79,0xc658,0xbe38,0xb637,0xadb6,0xb617,0xc678,0xce99,0xc699,0xc679,0xc658,0xbe38,0xae37,0xb657,0xb616,0xb616,0xadb6,0xb5d7,0xa5b5,0xadb6,0xadb5,0xad95,0xadb5,0xa595,0xa554,0xa595,0xa574,0xa554,0x9d54,0x9513,0x9d12,0xa533,0xa533,0x9cf3,0x8cb1,0x94f2,0x8cd2,0x9513,0x94f3,0x94d3,0x8472,0x94f2,0xa553,0x94d1,0x8cb2,0x9513,0x94b1,0x7c0f,0x8451,0x94b1,0x842e,0x7c50,0x7c30,0x7c0f,0x73ee,0x73ee,0x638c,0x636c,0x6b8d,0x634b,0x634c,0x530b,0x530b,0x5b0b,0x532b,0x530b,0x52aa,0x4a89,0x4249,0x4269,0x4a88,0x4a68,0x4a89,0x4247,0x4248,0x4227,0x4207,0x39e7,0x29c6,0x29a7,0x3269,0x3a28,0x29c6,0x2965,0x21a6,0x31c6,0x3185,0x2985,0x2164,0x2985,0x2986,0x2145,0x2124,0x2124,0x18e3,0x1924,0x1904,0x1903,0x1903,0x18e3,0x10c3,0x18c3,0x18c3,0x18c3,0x20e4,0x18e3,0x10a2,0x2104,0x2104,0x1903,0x2124,0x18e3,0x10c3,0x18e3,0x10e3,0x10c2,0x10e2,0x1103,0x10e3,0x10c4,0x10a3,0x18e3,0x10c3,0x0862,0x0061,0x08c2,0x10c2,0x18a2,0x18e3,0x2103,0x28e3,0x18c3,0x31a5,0x4247,0x4a69,0x5269,0x5269,0x4227,0xa553, +0xad94,0xad74,0xbed9,0x4aca,0x4aa8,0x52a9,0x4a88,0x5288,0x41e7,0x3165,0x39e7,0x3207,0x31e6,0x39c7,0x31a7,0x2966,0x2965,0x3185,0x31e7,0x31e7,0x3208,0x3a49,0x3209,0x3208,0x3a08,0x39e8,0x39e8,0x39e8,0x31e7,0x3a07,0x4208,0x3a08,0x4228,0x4229,0x4228,0x3a48,0x3a27,0x3a27,0x4227,0x4228,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4a28,0x4248,0x3a48,0x3a28,0x4248,0x4248,0x39e7,0x39e7,0x3a08,0x39e7,0x3a07,0x4207,0x41c6,0x39e6,0x3a07,0x39e8,0x41e8,0x39e7,0x3a07,0x4228,0x3a28,0x3a08,0x39e7,0x3a07,0x3a07,0x39e7,0x4208,0x4208,0x3a27,0x4228,0x31c7,0x31a7,0x31c8,0x39e7,0x39e8,0x3a08,0x3a08,0x3a08,0x3a09,0x39e7,0x4a48,0x4228,0x4228,0x4229,0x31e8,0x3207,0x4208,0x4a28,0x4229,0x3a08,0x39c8,0x39c7,0x31e7,0x3208,0x4208,0x4249,0x39e7,0x39c7,0x41e8,0x41c7,0x39e8,0x39e7,0x3a29,0x4208,0x3a08,0x39e8,0x4208,0x4249,0x4228,0x3a28,0x4228,0x4228,0x4228,0x4a28,0x41e8,0x39e8,0x3a09,0x4229,0x4a29,0x41e9,0x39c7,0x4228,0x4a29,0x4a08,0x4208,0x4269,0x4a49,0x3a08,0x4228,0x4249,0x4249,0x4a49,0x4a29,0x4229,0x4208,0x4208,0x4249,0x4229,0x4228,0x39e7,0x4208,0x4208,0x4207,0x3a28,0x4a29,0x4a09,0x39a7,0x31c7,0x39e7,0x3a28,0x39e8,0x31c7,0x3a09,0x41e8,0x39a7,0x41c8,0x39e8,0x4228,0x39e8,0x39c7,0x39c7,0x31a6,0x3986,0x3186,0x31a6,0x31a7,0x3186,0x3166,0x31a7,0x2987,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x31c7,0x2986,0x3186,0x29a6,0x31a7,0x31c6,0x2985,0x29a6,0x31c6,0x2986,0x2986,0x2985,0x2145,0x2986,0x3186,0x3184,0x2965,0x2966,0x2966,0x2145,0x3125,0x2924,0x2945,0x3145,0x2104,0x2124,0x1944,0x2124,0x2104,0x20c4,0x28e4,0x2924,0x2103,0x2904,0x2104,0x1904,0x2124,0x2124,0x28e4,0x18e4,0x10c3,0x18e3,0x20e3,0x1103,0x18c3,0x2104,0x18e4,0x10c3,0x2104,0x18e4,0x18c3,0x2904,0x18c3,0x20e4,0x10e4,0x10e4,0x1903,0x10e3,0x10c3,0x18e3,0x10a2,0x10c2,0x10c2,0x10e3,0x10c3,0x08a2,0x10e3,0x18c3,0x18c2,0x18c3,0x10e3,0x10c3,0x18c3,0x10e3,0x10c3,0x10a3,0x18a3,0x08c3,0x10c3,0x18c3,0x10c3,0x18a3,0x20a2,0x18c2,0x10a3,0x08a3,0x00a3,0x08a3,0x08c3,0x08a3,0x08c3,0x10a2,0x10a3,0x10a2,0x1882,0x10a3,0x1083,0x08a2,0x08a2,0x08a3,0x08a3,0x10a3,0x10a2,0x10a1,0x1081,0x0882,0x10a2,0x1882,0x1882,0x1862,0x18a2,0x08a2,0x10a2,0x18a2,0x10a2,0x00a2,0x08a2,0x0881,0x0882,0x10a2,0x08a2,0x00a2,0x0862,0x0862,0x1062,0x2082,0x1082,0x00a2,0x08a2,0x10e3,0x1904,0x2104,0x1924,0x2984,0x4a67,0x4a68,0x4a88,0x4a69,0x4a47,0xa554, +0xad94,0xad74,0xbefa,0x42eb,0x4a88,0x52a8,0x5288,0x4a68,0x39c7,0x3185,0x3a07,0x31e7,0x29c6,0x31c7,0x29e7,0x29a7,0x3987,0x39a7,0x39a7,0x31a7,0x3166,0x3966,0x29a7,0x2985,0x2985,0x2986,0x2986,0x29c6,0x29c6,0x31c6,0x31c7,0x29a6,0x31a7,0x39a7,0x39c6,0x39c7,0x39c7,0x31a6,0x31a6,0x39c7,0x31e7,0x3207,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x39e8,0x3228,0x31e7,0x3a07,0x4208,0x39e8,0x41e8,0x3a08,0x3a07,0x39e7,0x4a09,0x4208,0x4209,0x39e9,0x4228,0x3a28,0x3a08,0x4229,0x3a29,0x3a28,0x4228,0x3a08,0x4249,0x3a49,0x4229,0x4249,0x4268,0x4a49,0x4a4a,0x426b,0x4269,0x4269,0x4a89,0x4a69,0x526a,0x528a,0x4a8a,0x528a,0x52ab,0x52cb,0x4aaa,0x528a,0x528a,0x52cb,0x528a,0x52ab,0x52ab,0x52ab,0x52aa,0x52cb,0x4aab,0x4aab,0x52cb,0x4a8a,0x52ab,0x5aaa,0x4a8b,0x4aaa,0x4aab,0x52aa,0x52ab,0x5acb,0x52cb,0x4acb,0x52cc,0x4aab,0x4aab,0x4acb,0x4aab,0x52aa,0x52ca,0x52cb,0x528b,0x528a,0x52ab,0x52ab,0x52aa,0x528b,0x52ab,0x5acc,0x52ab,0x526a,0x528a,0x4a8a,0x4aaa,0x428a,0x4a8b,0x4a6a,0x4a6a,0x528b,0x528a,0x4a8a,0x4a6b,0x4a8b,0x52ab,0x4acb,0x4aab,0x4a8a,0x4a8a,0x4249,0x4a8a,0x4a6a,0x426a,0x4a8a,0x4a49,0x4a8a,0x4a4a,0x4249,0x4a4a,0x4249,0x4a29,0x4208,0x4a49,0x4229,0x4229,0x4229,0x4249,0x4228,0x4a28,0x4248,0x3a29,0x4209,0x4a28,0x4a29,0x4229,0x4229,0x4229,0x4229,0x4229,0x3a29,0x3a08,0x3a29,0x3208,0x3a08,0x3a08,0x3a08,0x31e7,0x31c8,0x31e7,0x3a08,0x3a08,0x3a07,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3186,0x39c7,0x39c7,0x39c7,0x39e8,0x39e7,0x39e7,0x39e7,0x31c7,0x39a7,0x31a6,0x31c7,0x29a6,0x31a7,0x2987,0x3186,0x3186,0x31a6,0x3165,0x2965,0x3166,0x3166,0x2166,0x2965,0x3166,0x2166,0x2145,0x2965,0x2965,0x2945,0x3146,0x2965,0x2945,0x2945,0x2945,0x2945,0x2125,0x2144,0x2144,0x2944,0x2145,0x2146,0x2145,0x1105,0x2124,0x2124,0x1904,0x0945,0x1924,0x2105,0x2105,0x1905,0x1905,0x1924,0x1904,0x1104,0x1124,0x1904,0x1904,0x20e3,0x2104,0x1904,0x10c4,0x18e4,0x10e3,0x18e4,0x18e4,0x10e3,0x1904,0x08c3,0x10c3,0x18c3,0x10e3,0x18e4,0x18c4,0x18a4,0x20c4,0x18c3,0x08c3,0x10c3,0x18c2,0x08a3,0x10a3,0x18c2,0x10a3,0x10c4,0x08a3,0x10c3,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10a3,0x00c3,0x1082,0x18a3,0x08c2,0x18a2,0x18c2,0x10a2,0x08a2,0x18a2,0x10a1,0x08a2,0x18a2,0x18c2,0x10c2,0x0863,0x10a2,0x1081,0x1882,0x10a2,0x0881,0x10c3,0x18c3,0x18e3,0x18e3,0x08c2,0x3185,0x5247,0x4a67,0x4a68,0x5269,0x4a46,0x9d74, +0xad95,0xb595,0xbeda,0x3aeb,0x5268,0x52a8,0x5288,0x5288,0x39e7,0x29e7,0x31c7,0x39c8,0x39e8,0x31a7,0x31a7,0x39c6,0x29a6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29a6,0x31a7,0x39a6,0x31a6,0x31c6,0x31c7,0x31c7,0x31a6,0x39c7,0x39c6,0x31c7,0x31c7,0x31c7,0x31e8,0x39c8,0x39e7,0x39e8,0x39e8,0x3207,0x3207,0x39c7,0x39c7,0x31c7,0x3207,0x39c7,0x39e8,0x39c8,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x3a28,0x3a07,0x3a08,0x39e8,0x29c7,0x3a08,0x3a09,0x39e8,0x4228,0x4a08,0x3a08,0x3a08,0x4208,0x4208,0x4229,0x4229,0x4229,0x4a49,0x4249,0x4248,0x4a48,0x4228,0x4a29,0x4269,0x4a69,0x4a49,0x4a69,0x4249,0x426a,0x4269,0x4a6a,0x4a6a,0x4a69,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x4a8a,0x4a8a,0x428a,0x428a,0x426a,0x4a8a,0x526a,0x3a48,0x528a,0x528a,0x52ab,0x528a,0x528a,0x528a,0x528a,0x4a8b,0x4aab,0x52ab,0x4a8a,0x528a,0x52aa,0x52aa,0x528a,0x428a,0x428a,0x4a8b,0x528a,0x52aa,0x4a8a,0x4a6a,0x426a,0x4aaa,0x52ab,0x4a8a,0x5269,0x5aaa,0x528a,0x4a6a,0x4a6a,0x4a8a,0x5269,0x52aa,0x52ab,0x4a8b,0x4a8b,0x4a6a,0x4a8a,0x526a,0x528b,0x4a4a,0x524a,0x4a8a,0x4249,0x3a6a,0x4a4a,0x4a49,0x3a49,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4289,0x3a69,0x4249,0x4228,0x4249,0x4249,0x4a49,0x4228,0x4229,0x4229,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4208,0x4a09,0x4229,0x3a08,0x3a28,0x3a08,0x4a09,0x4228,0x31e7,0x3208,0x3a08,0x31e7,0x39c8,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x31c6,0x31a7,0x3186,0x39c7,0x31e7,0x39e7,0x31c7,0x39e7,0x31a7,0x39a7,0x31a7,0x31a6,0x39c6,0x31c6,0x3186,0x3186,0x2945,0x3186,0x3166,0x2986,0x2986,0x3146,0x2985,0x3185,0x2965,0x1965,0x2966,0x3165,0x2966,0x2945,0x3166,0x3165,0x3145,0x2145,0x3125,0x3145,0x2125,0x1945,0x1925,0x1945,0x2125,0x1945,0x2144,0x2145,0x2124,0x1904,0x1925,0x1925,0x1924,0x1124,0x1905,0x1904,0x2105,0x2104,0x1104,0x18e4,0x1904,0x1923,0x1904,0x20e4,0x1903,0x2103,0x18e3,0x18e4,0x18e4,0x10e4,0x18e3,0x1903,0x1103,0x10e3,0x10e3,0x10e3,0x0903,0x18e2,0x20e3,0x18e3,0x18c3,0x10e2,0x10c3,0x10c3,0x18c3,0x10e3,0x08c2,0x10c3,0x18a3,0x08e3,0x08c3,0x10c1,0x18a2,0x18c2,0x08a3,0x10a3,0x08c2,0x18a3,0x08c2,0x1083,0x0862,0x0862,0x1862,0x1882,0x1083,0x1083,0x1883,0x1082,0x0863,0x1062,0x10a2,0x10a2,0x10a2,0x08c2,0x08a2,0x08a2,0x08a2,0x0882,0x08a2,0x20c2,0x20e3,0x1903,0x1123,0x3184,0x5247,0x5268,0x5268,0x5248,0x4a27,0xa574, +0xadb5,0xb595,0xbeb9,0x4aca,0x4a88,0x5288,0x4aa8,0x5288,0x31c6,0x31a6,0x39e8,0x39c8,0x31c7,0x31c7,0x2986,0x39a6,0x39c7,0x29c7,0x29a6,0x29a6,0x3186,0x31a7,0x29a7,0x29a7,0x31a7,0x31a7,0x31c7,0x31c6,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31e8,0x31e7,0x31e7,0x39c8,0x31c7,0x31c7,0x41e8,0x31c7,0x31e8,0x39c7,0x39e7,0x3a07,0x3a08,0x31e8,0x3208,0x3a08,0x4208,0x4208,0x41e8,0x4209,0x3a08,0x4208,0x4a08,0x4208,0x4208,0x3a09,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4248,0x3a27,0x4228,0x4229,0x4229,0x3a28,0x4228,0x4a29,0x49e8,0x4208,0x4a49,0x4a49,0x4a48,0x4a49,0x4a69,0x4a69,0x5269,0x528a,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x5269,0x526a,0x4a49,0x526a,0x52aa,0x4a69,0x4a69,0x4a6a,0x4a8a,0x4a69,0x5249,0x5249,0x4a6a,0x526a,0x528a,0x528a,0x528a,0x5aab,0x4a69,0x5269,0x528a,0x52ca,0x4a6a,0x52ab,0x52ca,0x52aa,0x52aa,0x52cb,0x528b,0x528b,0x4aab,0x52aa,0x528b,0x4a6a,0x52ca,0x52cb,0x528a,0x4a8a,0x52ca,0x52aa,0x52aa,0x52a9,0x52aa,0x4a8b,0x528b,0x5aab,0x5aaa,0x52aa,0x4aaa,0x4aaa,0x4a8a,0x4a8a,0x52ab,0x528a,0x4a6a,0x52aa,0x528b,0x5a8b,0x528a,0x4a6a,0x4aab,0x4a8a,0x4a89,0x4a69,0x526b,0x4a6a,0x526a,0x4a69,0x4a89,0x528a,0x528b,0x4a6a,0x4a8a,0x4269,0x4269,0x3a49,0x4a69,0x4a8a,0x4a6a,0x4a28,0x4a29,0x4229,0x4269,0x424a,0x4229,0x4249,0x4a49,0x4208,0x4229,0x4a29,0x4a29,0x3a49,0x4208,0x4a29,0x4249,0x4229,0x4228,0x4249,0x3a29,0x4a09,0x4228,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x39c7,0x39a6,0x39c7,0x39e8,0x39c8,0x31c7,0x39c8,0x39c7,0x39e7,0x31e7,0x39e7,0x31c7,0x39c7,0x39a6,0x2986,0x3986,0x4186,0x3986,0x5186,0x3166,0x3966,0x4187,0x4166,0x5966,0x5186,0x4186,0x3966,0x3166,0x2145,0x3965,0x3945,0x4165,0x5166,0x5166,0x4145,0x3145,0x1945,0x1965,0x2145,0x2926,0x2125,0x2145,0x1926,0x2125,0x2145,0x2125,0x1925,0x2145,0x1924,0x18e4,0x1104,0x1104,0x28e4,0x2104,0x1905,0x1905,0x2104,0x2924,0x1904,0x1904,0x28e4,0x1903,0x18e4,0x1904,0x18e4,0x1905,0x1104,0x1904,0x10e4,0x18e4,0x20e4,0x20c4,0x1904,0x1104,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e4,0x1103,0x10c4,0x18e4,0x10c2,0x10c2,0x10e3,0x08a3,0x18c3,0x28a3,0x30e2,0x30e2,0x20c2,0x10c3,0x20c2,0x28c3,0x28a2,0x1882,0x28a2,0x28a3,0x20a2,0x1882,0x20a2,0x2882,0x28a2,0x18a2,0x28a2,0x30a2,0x20a2,0x1863,0x1882,0x18a3,0x1083,0x08a3,0x08c2,0x10c1,0x10a3,0x10c2,0x18e4,0x2104,0x10e3,0x39a4,0x4247,0x4268,0x5268,0x5268,0x4227,0xa573, +0xb5b5,0xbdd5,0xb699,0x4ac9,0x4a88,0x5a68,0x5aa8,0x52a8,0x29c6,0x31a6,0x3a07,0x3a08,0x31e7,0x31c7,0x31c7,0x31c6,0x39c6,0x31c6,0x29c7,0x29c6,0x31a7,0x2967,0x39a6,0x29a7,0x29a7,0x29a6,0x3186,0x31a7,0x29c7,0x29c6,0x29c6,0x31a6,0x31c7,0x29c7,0x31c6,0x31e7,0x39e7,0x29a7,0x31c7,0x2966,0x29c8,0x31c7,0x39c7,0x39e8,0x39e7,0x39e8,0x31e7,0x39c8,0x39e8,0x31e7,0x31e8,0x31c8,0x31c7,0x3a08,0x39e8,0x3a08,0x41e8,0x3a08,0x3a08,0x3a08,0x3a09,0x3a08,0x4208,0x3a07,0x41e8,0x39a7,0x4229,0x31e8,0x3208,0x4228,0x3a27,0x3a29,0x5228,0x7269,0x7249,0x5a6a,0x6249,0x5229,0x5249,0x626a,0x5249,0x728a,0x5a8a,0x5a89,0x72cb,0x526a,0x726a,0x728a,0x728a,0x5a69,0x726a,0x828a,0x7a8a,0x628a,0x6a8a,0x5269,0x626a,0x82aa,0x828a,0x6a89,0x5a6a,0x8aab,0x6a6a,0x6249,0x72aa,0x526a,0x528b,0x4a4a,0x422a,0x422a,0x4a29,0x4a29,0x5aaa,0x528a,0x4a6a,0x4a0a,0x4209,0x4209,0x4a0a,0x4209,0x422a,0x4a6b,0x4a2a,0x4209,0x4a4a,0x4a6b,0x4209,0x4a29,0x4a2a,0x4a2a,0x422a,0x420a,0x39c8,0x4209,0x4209,0x3a0a,0x39e9,0x31c9,0x31e9,0x3a09,0x4209,0x422a,0x4209,0x4209,0x4209,0x4229,0x3a09,0x39e8,0x39e9,0x39e9,0x39e9,0x39e9,0x39c8,0x31c8,0x39c8,0x39c7,0x4208,0x31c8,0x3167,0x3187,0x3987,0x39a7,0x29c7,0x39e8,0x39c8,0x3987,0x39a8,0x3187,0x3187,0x3187,0x3187,0x3187,0x2966,0x3187,0x3167,0x3167,0x3167,0x2946,0x2987,0x3188,0x3187,0x2966,0x3166,0x3187,0x3166,0x2946,0x2145,0x2966,0x3147,0x2966,0x2946,0x2947,0x2147,0x2946,0x3147,0x2967,0x2967,0x31a7,0x31c8,0x3187,0x2946,0x3186,0x2966,0x2946,0x2126,0x2967,0x2947,0x3146,0x49a6,0x5966,0x3986,0x71a7,0x49a6,0x4965,0x4166,0x5967,0x5966,0x4965,0x61a6,0x4125,0x4986,0x2945,0x5165,0x4186,0x3145,0x5166,0x4966,0x3145,0x3146,0x1905,0x18c5,0x20e4,0x20c4,0x18c4,0x10c4,0x10a4,0x10a4,0x10a4,0x10c4,0x10c4,0x10a3,0x1083,0x1883,0x18a3,0x18c4,0x18a4,0x18a3,0x1083,0x1083,0x1083,0x18a3,0x18c4,0x1083,0x2083,0x18a3,0x18a4,0x1082,0x1083,0x1883,0x1083,0x10a3,0x10a3,0x1083,0x1882,0x1862,0x1083,0x0862,0x1082,0x1883,0x0862,0x1063,0x1062,0x0862,0x0862,0x1063,0x0863,0x1063,0x18c3,0x10c3,0x10c3,0x18c2,0x30e2,0x48e3,0x38c3,0x38e3,0x20a2,0x40c2,0x30a3,0x20c3,0x2082,0x40a3,0x30a2,0x28a3,0x1082,0x30c2,0x38a2,0x28a2,0x1883,0x30a2,0x40a2,0x3063,0x18a3,0x08a3,0x1062,0x0841,0x1083,0x10a2,0x10a3,0x10a3,0x08e3,0x0903,0x1104,0x10e3,0x3185,0x4247,0x4a68,0x5268,0x5289,0x4a48,0xa573, +0xad95,0xb595,0xb699,0x4a8a,0x5288,0x5267,0x5288,0x5288,0x39c6,0x31a7,0x31e7,0x31e8,0x39c7,0x31c7,0x29c7,0x31c7,0x3167,0x3167,0x41e9,0x39e8,0x39c8,0x4209,0x4a09,0x4209,0x424a,0x4a4a,0x4a4a,0x526a,0x526b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x528b,0x526b,0x524a,0x4a4b,0x422a,0x4a4b,0x528b,0x424b,0x424a,0x4a4a,0x4a6b,0x4a6a,0x526a,0x526a,0x528c,0x528c,0x52ac,0x52ac,0x5aed,0x630d,0x5b0d,0x5aed,0x6b2e,0x7390,0x6b6e,0x6b6e,0x734f,0x6b4f,0x7390,0x738f,0x8411,0x8411,0x8c52,0x8c93,0x8c94,0x8c93,0x94f5,0x52ed,0x4a69,0x6228,0x7a09,0x6249,0x5229,0x7249,0x5a28,0x5248,0x826a,0x5249,0x8a8a,0x8a8a,0x6a28,0x728a,0x6a89,0x828a,0x524a,0x6249,0x526a,0x528a,0x828a,0x5a49,0x526a,0x828b,0x5a4a,0x8a8a,0x5aab,0x5a6a,0x826a,0x5a29,0x92ab,0x828b,0x828a,0x7aab,0x52ab,0x39e8,0xad35,0xdefc,0xd6bb,0xd6bb,0xd6db,0xd6db,0xd6db,0xd6bb,0xdedb,0xdf1c,0xdf1c,0xdefc,0xdf1c,0xe73d,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xe71c,0xe73c,0xe73c,0xef5d,0xe75d,0xe73d,0xe75d,0xef3d,0xef5d,0xef7d,0xef7e,0xef7d,0xef5d,0xe75d,0xef7d,0xef7e,0xef7e,0xef7e,0xe75d,0xef9e,0xef9e,0xe77d,0xef5d,0xef9e,0xf79e,0xf77e,0xef7d,0xef9e,0xef9e,0xef9e,0xf79e,0xef7e,0xe79e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xef7e,0xe77d,0xef7e,0xef9e,0xef9e,0xe79d,0xef9e,0xef9e,0xf79e,0xf7be,0xef9e,0xef9e,0xf79e,0xef9e,0xe75d,0xef9e,0xef9e,0xef7e,0xef7e,0xe77d,0xdf7d,0xe77d,0xe77e,0xe79e,0xe77e,0xe77d,0xef9d,0xef9e,0xef9e,0xef7d,0xef9d,0xefbe,0xe79d,0xf7de,0xf7be,0xefbd,0xefbd,0xef9d,0xef7d,0xef5d,0xef7e,0x39e9,0x49a6,0x61c6,0x4986,0x61c6,0x5985,0x6166,0x4946,0x5185,0x71a6,0x6186,0x4986,0x4945,0x5185,0x3145,0x5145,0x4165,0x3966,0x5945,0x4945,0x2925,0x2945,0x4a48,0xdf1b,0xc699,0xc6da,0xceba,0xce9a,0xc699,0xc679,0xc638,0xbe59,0xbe7a,0xcefb,0xc69a,0xc638,0xbe38,0xbe58,0xbe17,0xbe38,0xb5f7,0xbe17,0xbe18,0xbe18,0xb617,0xadb6,0xb5d7,0xb617,0xadd7,0xb5b6,0xb5b6,0xadb7,0xb618,0xbdf8,0xb5d7,0xadb6,0xbdf6,0xb5f6,0xadb6,0xa5d6,0xa575,0xb5b6,0xa595,0xad75,0xad95,0xad96,0xad75,0xadb6,0xb5b7,0x9452,0x10a2,0x20c3,0x18c2,0x10c3,0x28a3,0x50c3,0x40c2,0x38e3,0x18c3,0x48c4,0x40a3,0x28c2,0x18a2,0x40a3,0x38c3,0x28a3,0x18a2,0x38c2,0x38a2,0x30c2,0x18a2,0x10a2,0x38a2,0x1882,0x0863,0x1082,0x8471,0x8492,0x8432,0x10a4,0x0861,0x08a4,0x10c3,0x1904,0x2105,0x10e3,0x29a5,0x4247,0x5268,0x4a68,0x4a69,0x4a27,0x9d73, +0xadb5,0xb595,0xbeba,0x4289,0x5288,0x52a8,0x52a8,0x4a88,0x41e7,0x3186,0x3207,0x3208,0x31e7,0x31e7,0x29a7,0x3187,0x9432,0xdefc,0xdf7d,0xe75d,0xef7d,0xefbd,0xefbf,0xdf9d,0xe79e,0xdf7d,0xe7be,0xf7de,0xefde,0xe7be,0xefde,0xe7bd,0xe7be,0xf7ff,0xf7ff,0xf7ff,0xefdf,0xefde,0xeffe,0xf7ff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7df,0xf7fe,0xefde,0xefbe,0xefde,0xf7ff,0x8d14,0x4a28,0x6208,0x8a29,0x7a48,0x5a49,0x7a49,0x5a69,0x5269,0x8a6a,0x5a69,0x8a89,0x8a8a,0x82aa,0x7a8a,0x7269,0x72aa,0x524a,0x4a6a,0x5249,0x526a,0x826a,0x5a49,0x528a,0x8a6a,0x6249,0x8aaa,0x5289,0x5a8a,0x8a8a,0x6a6a,0x82ab,0x828a,0x8a6a,0x72cb,0x52cb,0x4208,0xbdd6,0xce99,0xce99,0xc699,0xc679,0xc699,0xc658,0xc658,0xbe38,0xbe18,0xb617,0xbe38,0xbe38,0xbe17,0xbe17,0xbe38,0xb5f6,0xbdf6,0xbe17,0xb5d6,0xbdf6,0xb5f7,0xadd6,0xadb5,0xb5b5,0xb5f6,0xadb6,0xb5b6,0xa574,0xad95,0xb595,0xad75,0xa534,0xa554,0xa575,0x9d54,0x9d33,0x9d33,0xad54,0x9d14,0x9d34,0x8cd2,0x94b2,0x94d2,0x94f3,0x94f2,0x94d2,0x94b2,0x9491,0x94b1,0x8470,0x94b2,0x9492,0x94d3,0x8cb2,0x8cb2,0x94d3,0x8c51,0x8cb2,0x8c91,0x8cb1,0x8c91,0x8c72,0x8c71,0x8450,0x8c50,0x8c50,0x8430,0x8410,0x8c91,0x8c92,0x8c30,0x8450,0x8471,0x8430,0x842f,0x842f,0x7c2f,0x8c50,0x844f,0x840f,0x7bef,0x73ef,0x7bcf,0x7bee,0x73ce,0x73ce,0x6bae,0x6b8d,0x6b4c,0x632c,0x634c,0x6b8d,0x6bad,0x5b4c,0x634d,0x632c,0x5b4c,0x5b2c,0x6b8e,0x3187,0x4967,0x61a6,0x4986,0x5987,0x5146,0x6986,0x5986,0x5186,0x59a6,0x4166,0x2986,0x4985,0x4965,0x3924,0x5945,0x4166,0x2945,0x5986,0x4966,0x2124,0x2165,0x2124,0x62ca,0x4a89,0x4aca,0x5aea,0x52aa,0x5b0b,0x52eb,0x4aaa,0x4aaa,0x4a8a,0x52aa,0x528a,0x528a,0x4a8a,0x4269,0x4a89,0x4a8a,0x52aa,0x52aa,0x528a,0x4a69,0x4268,0x4a89,0x4268,0x4a68,0x52a9,0x4a89,0x4a69,0x4228,0x4228,0x4207,0x4208,0x4228,0x4248,0x4248,0x3a48,0x31c7,0x3a08,0x3a07,0x39e7,0x31c7,0x39e7,0x3207,0x29c6,0x31e7,0x39e7,0x2986,0x18c3,0x18c2,0x18c3,0x18c3,0x30a3,0x4903,0x28a1,0x40e3,0x18a3,0x48a3,0x30c2,0x20c2,0x10a2,0x20a2,0x20c2,0x40c3,0x2882,0x38a2,0x28a2,0x20c2,0x10a1,0x10c2,0x4082,0x1862,0x1063,0x0882,0x39e7,0x3a28,0x6bcf,0x7c31,0x18a3,0x18a3,0x18c3,0x18c4,0x20e4,0x18c3,0x31a5,0x4a47,0x5247,0x4a88,0x4a68,0x4a68,0x9552, +0xb5d5,0xbdb5,0xb6d9,0x4289,0x5288,0x5288,0x5288,0x4a88,0x3a26,0x31a6,0x39e8,0x31e8,0x31e8,0x39c8,0x3187,0xacf4,0xcefb,0x74d2,0x3207,0x3a07,0x3a07,0x39e6,0x39c6,0x31a6,0x31a6,0x3186,0x31a6,0x39c6,0x31a6,0x31c7,0x39c6,0x31a5,0x3a07,0x31c7,0x31c6,0x31a6,0x39c6,0x39c6,0x31c6,0x39c6,0x31a6,0x29a6,0x39e6,0x39e6,0x31c6,0x31a6,0x3186,0x31a5,0x39c7,0x39a6,0x41e8,0x2987,0x31a6,0x39a6,0x31c6,0x29a5,0x31a6,0x31a7,0x31a7,0x2987,0x29a7,0x29a6,0x29a6,0x31c7,0x3186,0x2945,0x3186,0x31c7,0x29a6,0x31a6,0x39e8,0x4a48,0x6a08,0x7228,0x5248,0x4a68,0x7a49,0x626a,0x5a49,0x726a,0x5a6a,0x7a8a,0x6269,0x928a,0x82aa,0x6a6a,0x828a,0x6a6a,0x6a8a,0x5a8a,0x526a,0x7a8a,0x5a8a,0x5a8a,0x82aa,0x5a6a,0x828a,0x6aaa,0x72aa,0x82aa,0x628a,0x7aab,0x626a,0x9acc,0x7aec,0x52ca,0x52ab,0x4269,0x3a28,0x39e8,0x4228,0x41e8,0x41e8,0x4a09,0x4229,0x3a29,0x4248,0x4208,0x4a08,0x4228,0x4a29,0x4a29,0x3a08,0x4a29,0x4a69,0x4208,0x4209,0x4a28,0x4a69,0x4a89,0x4a69,0x526a,0x4208,0x4249,0x4249,0x4a49,0x4a29,0x4a49,0x4a49,0x4a49,0x4a49,0x526a,0x4229,0x4a49,0x4249,0x4a49,0x4229,0x4a2a,0x4a4a,0x4a8a,0x4a6a,0x4229,0x4a6a,0x4a4a,0x4a49,0x5289,0x4a49,0x4208,0x4a4a,0x4a29,0x4209,0x4228,0x4249,0x4209,0x420a,0x31e8,0x4228,0x4249,0x3a08,0x39c8,0x4228,0x4209,0x4229,0x4208,0x3a09,0x4209,0x3a29,0x3a29,0x41e8,0x49e8,0x41e7,0x31e8,0x3a09,0x4208,0x31c7,0x31a7,0x3a28,0x4228,0x31a7,0x31c7,0x31c8,0x39e8,0x39e8,0x3a08,0x31e8,0x31c7,0x39a7,0x3186,0x39a6,0x39c7,0x39c7,0x39a7,0x39c7,0x3187,0x31e7,0x3187,0x2966,0x29c6,0x3986,0x49a7,0x4187,0x51a7,0x3125,0x59c6,0x49a6,0x4166,0x4966,0x2966,0x2186,0x3165,0x5165,0x6966,0x5987,0x2946,0x2967,0x4986,0x3166,0x2165,0x3145,0x2145,0x2966,0x2166,0x2145,0x3146,0x2125,0x2104,0x1944,0x1124,0x1125,0x1925,0x1924,0x1905,0x2125,0x1945,0x1124,0x1904,0x20e3,0x2925,0x1905,0x1944,0x1924,0x1943,0x2104,0x1905,0x18e4,0x10e3,0x10c3,0x1904,0x0903,0x18e4,0x1904,0x10e3,0x18e3,0x18c2,0x18c2,0x10e3,0x1904,0x18a4,0x10e3,0x18e2,0x18c3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x10e3,0x18c3,0x10c2,0x10c2,0x20c3,0x30a3,0x38c3,0x20a3,0x38a3,0x18c3,0x38c2,0x30c3,0x28c3,0x1881,0x30e3,0x38c2,0x38a2,0x18a1,0x38a3,0x40a1,0x30a1,0x1861,0x18a2,0x30a2,0x1861,0x1082,0x0862,0x0882,0x08a2,0x1081,0x7430,0x5aac,0x18a2,0x18c3,0x18e3,0x2103,0x18c2,0x39c5,0x4a47,0x5248,0x5268,0x5269,0x4a47,0x9553, +0xb5b5,0xbdb4,0xbeb9,0x4289,0x5288,0x5268,0x5268,0x4a68,0x3a06,0x39a6,0x3a07,0x31e7,0x31c7,0x39c7,0x6249,0xdf1b,0x53d0,0x1965,0x2986,0x3986,0x3186,0x2986,0x31a7,0x31a7,0x31a7,0x31a7,0x29a6,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x39a6,0x39c7,0x31c6,0x39c6,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39a7,0x31a7,0x31e7,0x39c7,0x31c7,0x39e8,0x31e8,0x39e8,0x4208,0x4208,0x39e8,0x4207,0x4228,0x3207,0x3a08,0x4208,0x4229,0x3a09,0x3208,0x3a28,0x3a48,0x4a29,0x4248,0x4228,0x4a29,0x4a29,0x4249,0x3a49,0x4a49,0x4a6a,0x4a49,0x5a08,0x6249,0x4a69,0x3a48,0x5a49,0x7a6a,0x7a69,0x5a29,0x5229,0x62aa,0x5269,0x6a69,0x6a8a,0x526a,0x6a6a,0x7a6a,0x6a8a,0x52aa,0x4a8a,0x62aa,0x528a,0x528a,0x5a6a,0x4a6a,0x5aaa,0x72aa,0x7a8a,0x5aaa,0x52cb,0x62cb,0x526a,0x5aaa,0x62ab,0x52cb,0x5aab,0x52ab,0x52ab,0x52ab,0x52cb,0x5aab,0x5aec,0x52ab,0x5aab,0x5aac,0x52ab,0x52cb,0x5acb,0x528a,0x52ab,0x52cb,0x4acb,0x4aab,0x526a,0x5aab,0x528b,0x52ab,0x52aa,0x52aa,0x5aab,0x4aab,0x4aab,0x52cb,0x52cb,0x4acb,0x4a8a,0x4a8a,0x4aab,0x4a8a,0x528a,0x528b,0x528b,0x428b,0x428a,0x4aaa,0x428a,0x526b,0x528a,0x4a8b,0x526a,0x528a,0x528a,0x526a,0x4a49,0x4249,0x4a89,0x4a8a,0x4a6a,0x426a,0x424a,0x426a,0x426a,0x4249,0x4a6a,0x426a,0x4a49,0x4a69,0x4a6a,0x426a,0x4249,0x3a08,0x3a49,0x4269,0x3a49,0x4229,0x4229,0x4249,0x4229,0x4229,0x3a29,0x3a29,0x3a08,0x39e8,0x41c8,0x41e8,0x39e8,0x39e8,0x39e8,0x3a07,0x4209,0x4208,0x41e8,0x31a6,0x3187,0x3a08,0x39a7,0x39c7,0x31a7,0x39c7,0x39c7,0x39a8,0x39a7,0x31c8,0x31a7,0x29a7,0x31a7,0x31c7,0x39a7,0x3186,0x3986,0x3166,0x3986,0x3145,0x3166,0x3986,0x3986,0x2965,0x2986,0x2985,0x3166,0x3965,0x3186,0x2966,0x2986,0x2965,0x2165,0x2166,0x2146,0x2146,0x2145,0x2145,0x2145,0x1945,0x1945,0x1165,0x1944,0x2124,0x2145,0x2125,0x1925,0x1125,0x1924,0x2124,0x1924,0x2105,0x1904,0x2124,0x1904,0x1904,0x20e5,0x2103,0x2104,0x2104,0x10e4,0x10e4,0x18e3,0x18e3,0x0903,0x18e4,0x18e4,0x10e4,0x18c4,0x10e3,0x10e3,0x10e3,0x10e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e2,0x18e3,0x18c3,0x20c3,0x08e3,0x08c3,0x18c3,0x10a3,0x18c1,0x18c2,0x20c2,0x20c3,0x10c3,0x10c3,0x10a2,0x18a2,0x20c3,0x18c2,0x08c2,0x10a2,0x20a2,0x1882,0x0862,0x18a3,0x18c2,0x1883,0x1883,0x1083,0x0882,0x1062,0x1061,0x0881,0x0082,0x08a2,0x0841,0x5b2b,0x73af,0x1062,0x18c3,0x1903,0x1104,0x18e4,0x21a5,0x4a47,0x4a68,0x4a88,0x5288,0x4247,0x9513, +0xb5b5,0xbdb5,0xbeb9,0x4269,0x5288,0x5a68,0x5288,0x4a67,0x39c6,0x39a6,0x3a08,0x3228,0x39e8,0x31a7,0x83ae,0xcf1c,0x2229,0x39e7,0x39a7,0x39c7,0x29a7,0x31a7,0x29a7,0x31a7,0x39c7,0x39a7,0x31c7,0x31c7,0x31c7,0x39e6,0x31e7,0x39e7,0x29a7,0x31e7,0x31e7,0x39a7,0x39a7,0x39c8,0x41e8,0x4207,0x39e7,0x39e8,0x39e8,0x39e7,0x41e8,0x3a08,0x3a08,0x39c8,0x39e7,0x3a07,0x4227,0x3a07,0x4228,0x3a28,0x3a29,0x4229,0x4208,0x3a28,0x4248,0x4248,0x4248,0x3a28,0x3a28,0x3a28,0x4228,0x424a,0x3a4a,0x3a48,0x4248,0x4a29,0x4228,0x4a4a,0x4a69,0x4a69,0x4a6a,0x4a69,0x4a49,0x4a69,0x4a69,0x4a6a,0x4a6a,0x528b,0x4a8a,0x528a,0x526a,0x526a,0x528a,0x528b,0x4aaa,0x4a8a,0x528b,0x4a8a,0x5acb,0x52cb,0x4a6b,0x4a6a,0x5289,0x4aab,0x4a8a,0x52aa,0x5aaa,0x52a9,0x4aaa,0x52aa,0x52aa,0x52ab,0x52ab,0x528b,0x52ab,0x5aab,0x5aab,0x52ab,0x528a,0x5aaa,0x5acb,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x5aab,0x52ab,0x4aab,0x52ab,0x528a,0x52ab,0x52cb,0x52cb,0x52ab,0x528a,0x4a8a,0x4a8b,0x4a6a,0x528a,0x4a8a,0x52ab,0x528a,0x4a8a,0x4a6a,0x52aa,0x528b,0x528b,0x4a8a,0x42aa,0x4aaa,0x4aab,0x4a8a,0x52aa,0x4a8a,0x524a,0x4a69,0x4a4a,0x4a4a,0x426a,0x4269,0x4a4a,0x4a6a,0x524a,0x4a6a,0x4229,0x4249,0x4a4a,0x4a4a,0x4a69,0x4208,0x4208,0x4229,0x526a,0x4249,0x4229,0x4a4a,0x4249,0x4a49,0x3a69,0x4249,0x3a28,0x39e8,0x39c7,0x4208,0x31e8,0x3208,0x3208,0x4208,0x49e8,0x41e8,0x39e8,0x41e8,0x39c8,0x39c7,0x4207,0x49e7,0x41c7,0x41e7,0x39c7,0x31e7,0x31c7,0x39c7,0x39c7,0x31c6,0x39c7,0x31a7,0x39c7,0x4208,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x31a7,0x39a7,0x3186,0x3987,0x3186,0x3165,0x2986,0x2986,0x3166,0x3186,0x2945,0x3166,0x3145,0x3165,0x2965,0x1965,0x1966,0x1985,0x2145,0x2945,0x2985,0x2944,0x2125,0x2145,0x1945,0x2144,0x1925,0x2165,0x2124,0x1124,0x2124,0x2125,0x2125,0x1125,0x1905,0x1124,0x2125,0x1924,0x1904,0x1903,0x1904,0x18e4,0x28e5,0x1924,0x2904,0x1904,0x1904,0x20e3,0x20e3,0x10e4,0x20e4,0x18e4,0x1904,0x10c4,0x18e4,0x10e3,0x1103,0x18e2,0x1903,0x1903,0x20e2,0x18e3,0x18e2,0x18e3,0x10c3,0x10c4,0x08e3,0x10c3,0x18a3,0x08a4,0x10c2,0x10c3,0x18a3,0x10c3,0x08a2,0x00a2,0x10a3,0x08c2,0x00c3,0x10a3,0x08a2,0x08a2,0x08a2,0x00a3,0x08a2,0x0883,0x1082,0x10a2,0x1083,0x1082,0x10a2,0x08a2,0x08a1,0x0882,0x0862,0x08c2,0x1082,0x4aca,0x7c11,0x0822,0x18a3,0x10c3,0x1904,0x18e3,0x2184,0x4a47,0x4a68,0x5288,0x5288,0x4a88,0x8cf2, +0xb5b5,0xbdb6,0xb698,0x3a49,0x52a8,0x5288,0x5288,0x5288,0x39e6,0x29c5,0x3a07,0x3208,0x39e8,0x2967,0x83ce,0xbeda,0x21e8,0x31c7,0x31a6,0x39a7,0x31c7,0x31c7,0x29c7,0x29c6,0x39c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39e7,0x39c7,0x41a7,0x39c8,0x39e8,0x39e8,0x31c7,0x39c8,0x39e8,0x3a28,0x3a08,0x3a08,0x3208,0x3a08,0x4228,0x3a07,0x39e8,0x29e7,0x3208,0x3a07,0x4228,0x4228,0x39e8,0x39e8,0x4228,0x3a28,0x3a08,0x3a09,0x4248,0x4249,0x4229,0x4249,0x4249,0x4229,0x4a29,0x4a69,0x4269,0x4a49,0x4a69,0x4a6a,0x4a69,0x4a89,0x4a6a,0x424a,0x4a6a,0x4a6a,0x426a,0x4a8a,0x4a8a,0x526a,0x528b,0x4a8b,0x428a,0x4a8a,0x4a8a,0x52aa,0x528a,0x4a8a,0x528b,0x528a,0x528b,0x528b,0x526a,0x4a6a,0x4249,0x52ab,0x52ab,0x528b,0x52ab,0x4a8b,0x4aab,0x428a,0x4a8b,0x528b,0x52cb,0x52aa,0x4acb,0x4aaa,0x528a,0x528b,0x52cb,0x5aec,0x5aab,0x52ab,0x52ab,0x4acb,0x52ab,0x52ca,0x52eb,0x52ca,0x52aa,0x52ab,0x528c,0x4aaa,0x52ab,0x5aab,0x528b,0x528b,0x526a,0x52ab,0x52ca,0x52ab,0x528b,0x52aa,0x52aa,0x528a,0x4a8a,0x528a,0x528b,0x526a,0x528b,0x52ab,0x528b,0x52ab,0x528a,0x4a6a,0x52ab,0x528b,0x424a,0x3a09,0x424a,0x422a,0x4a4a,0x4229,0x4a4a,0x5269,0x4a69,0x4a6a,0x4a49,0x4a4a,0x4a49,0x4a4a,0x4a49,0x4a29,0x4a49,0x4a49,0x3a49,0x4249,0x3a49,0x4249,0x4249,0x4209,0x3a28,0x3a29,0x3a28,0x4229,0x3a29,0x3a09,0x3a09,0x3a08,0x39e8,0x3a08,0x3a08,0x3a07,0x39e8,0x3a08,0x39c8,0x39e8,0x39a6,0x4207,0x31c7,0x39e7,0x39c8,0x39c7,0x41a7,0x31a7,0x31c7,0x39c6,0x31a7,0x3186,0x39a7,0x3987,0x39a7,0x31a6,0x39a6,0x3187,0x3987,0x3187,0x3186,0x3186,0x3186,0x3186,0x2966,0x2966,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2186,0x1965,0x2166,0x2166,0x2945,0x3185,0x2985,0x2965,0x2165,0x1965,0x2145,0x2165,0x2144,0x2145,0x1944,0x1925,0x2145,0x1924,0x2104,0x1104,0x1904,0x1904,0x1104,0x1923,0x1904,0x2103,0x2124,0x2124,0x1904,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x18e4,0x1903,0x18e4,0x18e4,0x1903,0x18e4,0x18e4,0x18e3,0x1102,0x20e3,0x18e3,0x1103,0x18c2,0x20c3,0x10e2,0x10c3,0x10c3,0x18a3,0x10c3,0x10c3,0x18c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18e3,0x10c3,0x10c3,0x08a2,0x1082,0x18c3,0x1882,0x08a2,0x1082,0x10a2,0x08a2,0x0882,0x08a2,0x1882,0x10a1,0x1082,0x0882,0x0882,0x00a1,0x0882,0x1082,0x2081,0x1082,0x0861,0x4268,0x8c31,0x1042,0x18e4,0x10e4,0x18e4,0x18e3,0x3185,0x4227,0x5269,0x4a88,0x52a8,0x4a48,0x9512, +0xb5b5,0xbdd5,0xae98,0x3a49,0x52a8,0x52a8,0x5288,0x5288,0x41e6,0x39a6,0x3a08,0x3a08,0x39e7,0x2966,0x9bef,0xbefa,0x29e8,0x29e6,0x31a6,0x31a6,0x31e7,0x29c6,0x31c7,0x39c7,0x31c7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x31e7,0x31e7,0x31e7,0x39c7,0x31c7,0x31c6,0x39c7,0x39e8,0x39e8,0x41e8,0x39a7,0x4208,0x41e8,0x3207,0x31e8,0x31c7,0x31e7,0x3208,0x4208,0x41e7,0x3a08,0x3208,0x4228,0x3a27,0x3a08,0x3a08,0x39e8,0x3a29,0x4248,0x4228,0x3a08,0x4229,0x4248,0x4248,0x4249,0x4249,0x4a69,0x4269,0x4a49,0x4a69,0x424a,0x4249,0x4a29,0x4269,0x4269,0x4249,0x4289,0x4269,0x4a89,0x428a,0x4a6a,0x4a8a,0x528b,0x4a6a,0x4a8a,0x528a,0x528b,0x526a,0x4a49,0x4a8a,0x4a8a,0x526a,0x52ab,0x52ab,0x528a,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x52ab,0x52ab,0x528a,0x4aab,0x52ab,0x4a8b,0x4a8a,0x52aa,0x52ab,0x52cb,0x52aa,0x52aa,0x4aab,0x52ab,0x52cb,0x5acb,0x5acb,0x52ab,0x52cb,0x5acb,0x52cb,0x5acb,0x528a,0x5acb,0x4aaa,0x52ab,0x5aab,0x5aab,0x52ab,0x52ab,0x528b,0x4a8a,0x52ab,0x52ab,0x4269,0x52cb,0x5aab,0x528b,0x52ab,0x5acb,0x4aab,0x428b,0x528a,0x526a,0x528a,0x5aaa,0x5a8b,0x528a,0x528a,0x52ab,0x528b,0x52aa,0x52aa,0x4acb,0x4a8a,0x4a6b,0x422a,0x4a8a,0x4a69,0x4a6a,0x5249,0x4a69,0x4229,0x4a6a,0x4269,0x4249,0x4249,0x4249,0x4228,0x4a49,0x4a49,0x4a8a,0x4a49,0x4229,0x4228,0x3a29,0x4229,0x4249,0x4249,0x3a29,0x4228,0x41e8,0x4229,0x3a28,0x4208,0x39e7,0x4228,0x3a08,0x39c8,0x3a08,0x3a07,0x3a07,0x41e8,0x39c7,0x39e7,0x31e8,0x31e7,0x39c7,0x31c7,0x39a7,0x31a7,0x39e8,0x39e7,0x39c7,0x31a7,0x39a7,0x39c7,0x39c7,0x31a7,0x39a7,0x3187,0x31a7,0x31a7,0x3186,0x3186,0x29a6,0x3186,0x3187,0x3166,0x3185,0x2986,0x2185,0x2986,0x3165,0x3186,0x2145,0x2966,0x2165,0x2145,0x3145,0x2165,0x2165,0x2125,0x2946,0x2946,0x2145,0x2145,0x2125,0x2145,0x1925,0x2125,0x2124,0x2924,0x2904,0x2124,0x1925,0x2104,0x2104,0x2105,0x20e3,0x1904,0x1904,0x1904,0x2104,0x18e4,0x1903,0x2104,0x1904,0x10e4,0x10e4,0x10e4,0x1904,0x20e3,0x2104,0x10e4,0x18e4,0x18c3,0x20c4,0x18c4,0x18e3,0x18e3,0x18c3,0x18c2,0x10e3,0x10c3,0x10c3,0x10c3,0x10a3,0x10c2,0x18c3,0x18c3,0x10e3,0x18c3,0x18c3,0x1883,0x10a3,0x10c3,0x10c3,0x10c3,0x10a2,0x1082,0x10a2,0x10a2,0x0881,0x1082,0x08a2,0x08a2,0x10a2,0x18a2,0x0862,0x08a1,0x10a2,0x08a1,0x00a2,0x10c2,0x08a2,0x0862,0x4289,0x8c32,0x0842,0x10e3,0x08e3,0x10e4,0x18e3,0x3985,0x4a27,0x5268,0x5288,0x5288,0x5228,0x9512, +0xadb5,0xbdf6,0xb6b9,0x4269,0x4a89,0x4aa8,0x4aa8,0x4268,0x3206,0x31c6,0x3a08,0x4208,0x3a07,0x3166,0x940f,0xbefb,0x21a7,0x31e6,0x29c6,0x31c7,0x39c7,0x31a6,0x39c7,0x39e7,0x3207,0x41e8,0x41e7,0x39c7,0x39e7,0x4207,0x39e7,0x3a08,0x31e7,0x3a08,0x4208,0x4208,0x41e8,0x4228,0x41e7,0x4207,0x39c8,0x31c7,0x3a07,0x41e7,0x39e7,0x31c7,0x31e7,0x39e8,0x3a08,0x4208,0x39e8,0x3a09,0x4228,0x4228,0x4209,0x4229,0x4229,0x4229,0x4228,0x4229,0x3a08,0x4228,0x4a48,0x4249,0x4249,0x4a69,0x5a49,0x526a,0x4a4a,0x4a48,0x4249,0x4249,0x4a29,0x4249,0x4249,0x3a29,0x4a69,0x4249,0x4a6a,0x4a6b,0x4a4a,0x52aa,0x4a49,0x5249,0x4a6a,0x528a,0x5a8b,0x526b,0x526a,0x4a49,0x5269,0x528a,0x52aa,0x528a,0x528a,0x528a,0x5aaa,0x526a,0x528a,0x52ab,0x52cb,0x528a,0x4a8a,0x52aa,0x4a49,0x526a,0x4a8a,0x52aa,0x5acb,0x528a,0x5aaa,0x528a,0x52eb,0x5aeb,0x62ab,0x5a6a,0x5aab,0x5aab,0x5aab,0x5acb,0x52aa,0x528a,0x5aaa,0x52aa,0x52ab,0x52cb,0x5aaa,0x5acb,0x52ab,0x4aab,0x4aaa,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x5acb,0x5aab,0x62ab,0x5acb,0x62cb,0x5aab,0x5acb,0x62cb,0x5a8a,0x62cb,0x62cb,0x5a8a,0x5a6a,0x52aa,0x5a8a,0x5aab,0x62eb,0x5aeb,0x5a8a,0x5a4a,0x5a6a,0x526a,0x4269,0x4a6a,0x4249,0x4a6a,0x4269,0x528a,0x4269,0x4a6a,0x528a,0x5269,0x5269,0x5249,0x5249,0x5a69,0x6229,0x5a09,0x5249,0x5228,0x5249,0x5a49,0x5249,0x5249,0x4a28,0x4a08,0x4a08,0x41e8,0x4a09,0x4a09,0x4a08,0x4209,0x39e7,0x3a09,0x3a08,0x3a07,0x39c7,0x39e7,0x3a08,0x41c8,0x39a6,0x41a6,0x39c7,0x31a7,0x39c7,0x41c7,0x39c6,0x41c6,0x51a7,0x41a7,0x39c7,0x41a6,0x41c7,0x3987,0x3986,0x41a6,0x3166,0x3186,0x31a6,0x31a6,0x3186,0x2945,0x3166,0x3986,0x2986,0x2185,0x2986,0x3145,0x3966,0x2986,0x2945,0x3185,0x3185,0x3966,0x2944,0x3966,0x3946,0x3966,0x3125,0x3165,0x3146,0x3145,0x3165,0x3165,0x3925,0x3945,0x3145,0x3124,0x2924,0x2124,0x1924,0x1924,0x2125,0x1904,0x1104,0x1904,0x2124,0x2924,0x2905,0x2925,0x20c3,0x2904,0x2104,0x2904,0x20e4,0x2124,0x2904,0x30e3,0x2904,0x2904,0x28e3,0x2904,0x30e3,0x28e3,0x2103,0x20e3,0x20c3,0x10c3,0x10c3,0x08c3,0x18c3,0x10c2,0x10c3,0x18c3,0x1082,0x1042,0x0841,0x1041,0x0841,0x0841,0x0842,0x0842,0x0842,0x1042,0x1041,0x1062,0x0862,0x0861,0x0861,0x0841,0x0842,0x0842,0x0841,0x0841,0x1041,0x0862,0x0062,0x08a2,0x18c2,0x10a1,0x0862,0x4288,0x8431,0x0843,0x18e3,0x18e3,0x2104,0x28e3,0x39a5,0x4246,0x5267,0x5288,0x5288,0x5228,0x94f1, +0xb5b5,0xbdb6,0xb698,0x3a68,0x52a8,0x52a8,0x5287,0x4a88,0x39e7,0x39a6,0x4268,0x39e7,0x41c7,0x41a7,0x9c2f,0xbedb,0x11a7,0x31c6,0x31c6,0x31a7,0x31c7,0x51c7,0x61e7,0x61e7,0x59c7,0x61e8,0x61e8,0x61e8,0x6a28,0x6a08,0x61c7,0x69c8,0x69e8,0x6a08,0x69c8,0x61a7,0x61a7,0x59c7,0x61c6,0x69e7,0x69e7,0x61e8,0x49e7,0x3a07,0x3a08,0x3a08,0x31e8,0x3a07,0x31e7,0x5208,0x6a28,0x7229,0x6a08,0x6a29,0x7229,0x7228,0x7208,0x6a08,0x7228,0x7a29,0x7228,0x6a29,0x7249,0x7229,0x7229,0x724a,0x7a6b,0x7a29,0x7a4a,0x7a6a,0x6269,0x524a,0x4a6a,0x424a,0x424a,0x4a69,0x4248,0x5269,0x728a,0x7a6a,0x7a6a,0x828a,0x82aa,0x828a,0x82cb,0x826a,0x824a,0x7a8a,0x82aa,0x828a,0x826a,0x828a,0x7a8a,0x7a6a,0x7a29,0x826a,0x7a8b,0x826a,0x82aa,0x62ab,0x52aa,0x52aa,0x528a,0x528a,0x52aa,0x5aca,0x7acb,0x82ab,0x7a49,0x7a4a,0x7a4a,0x7a69,0x7a8a,0x7a6a,0x828a,0x7a8a,0x7aaa,0x7269,0x724a,0x6a4a,0x726a,0x726a,0x724a,0x7a4a,0x828a,0x7aaa,0x7aab,0x72cc,0x5aaa,0x52cb,0x5acc,0x52ab,0x526a,0x4a6a,0x5249,0x7aca,0x7a49,0x7249,0x7a4a,0x7a4a,0x7a4a,0x7a6b,0x6a29,0x7229,0x824a,0x7229,0x7a4a,0x7a2a,0x720a,0x824a,0x7a29,0x7229,0x7a2a,0x71e9,0x69e9,0x69e8,0x7a4a,0x5a69,0x4269,0x4a6a,0x4a4a,0x4a69,0x4a8a,0x5a69,0x828a,0x7208,0x71e8,0x7208,0x71c7,0x71a7,0x69a7,0x69c8,0x71a8,0x61c8,0x69c8,0x69c8,0x69a7,0x6187,0x6987,0x6167,0x5967,0x5967,0x5987,0x61a7,0x69a8,0x6a08,0x49e8,0x4208,0x3a08,0x3a08,0x39e8,0x39e8,0x5208,0x6208,0x5987,0x5166,0x6167,0x5967,0x5166,0x5146,0x5986,0x5965,0x5966,0x5945,0x6146,0x5946,0x5126,0x5946,0x5145,0x4924,0x4925,0x4905,0x4924,0x5165,0x5987,0x3966,0x2986,0x2966,0x3186,0x3986,0x2986,0x4186,0x5124,0x38e4,0x40a3,0x40a3,0x48c3,0x4083,0x40c4,0x48e4,0x48c4,0x48c4,0x48c4,0x48e4,0x40a3,0x48c4,0x40a3,0x48a3,0x48a3,0x40a3,0x38a3,0x38a3,0x4904,0x4145,0x2125,0x2145,0x1904,0x2124,0x2124,0x20e4,0x4105,0x50e4,0x40a3,0x3883,0x40a3,0x3883,0x3863,0x3883,0x3083,0x4083,0x4083,0x3862,0x3082,0x2882,0x2882,0x3062,0x3042,0x3042,0x3842,0x3042,0x3862,0x4883,0x40e4,0x18c3,0x08e2,0x10c2,0x10c2,0x10c2,0x1061,0x62eb,0x83cf,0x734c,0x6b4c,0x7b8d,0x734d,0x736d,0x7b8d,0x6b2d,0x734d,0x6b4c,0x6b2b,0x736c,0x630c,0x630b,0x62eb,0x5a6a,0x626a,0x628a,0x62a9,0x62eb,0x83f0,0x4209,0x0862,0x10c2,0x10a3,0x1061,0x4268,0x8c72,0x0863,0x10e2,0x18e3,0x20e3,0x18c3,0x2984,0x4246,0x5268,0x4a68,0x5289,0x5248,0x94d0, +0xb5b6,0xc5d6,0xb699,0x3a68,0x4a88,0x52a9,0x52a8,0x4a68,0x31c6,0x31c6,0x3a07,0x31e7,0x39c7,0x3966,0x9c71,0xb6db,0x21a8,0x31c6,0x39c7,0x31e7,0x61e8,0x61e8,0x6a29,0x72ab,0x72cc,0x628b,0x626b,0x6aac,0x6acb,0x6acb,0x730c,0x730d,0x7b0d,0x832e,0x834e,0x834e,0x836f,0x8bcf,0x8b8e,0x836f,0x836e,0x7acc,0x6a09,0x49e7,0x39e7,0x39c7,0x39e8,0x41e7,0x51c7,0x71e8,0x7aab,0x732e,0x7b2e,0x834e,0x8b6f,0x8b6f,0x8b8f,0x93d0,0x93d0,0x8bb0,0x8bb0,0x8bd0,0x93d0,0x9411,0x93f1,0x9411,0x9411,0x8c11,0x83b0,0x8b6f,0x7a6a,0x6a69,0x4a6a,0x4a6a,0x4a6a,0x4a69,0x5289,0x828a,0x82cc,0x836e,0x8bd0,0x9411,0x9411,0x93d0,0x93f0,0x9431,0x9c72,0x9c52,0x9c52,0x9c72,0xa473,0xa473,0x9c72,0x9472,0x9c93,0x9c73,0xa473,0xa472,0x93b0,0x8acb,0x62cb,0x5aaa,0x52ab,0x52cb,0x52ab,0x7acb,0x8acb,0x9c31,0xa4d4,0x9cd4,0xa4f4,0xad35,0xad36,0xb536,0xb4f5,0xa4f4,0xb535,0xbd76,0xacf4,0x9c93,0xa493,0x9c93,0x9c72,0x9c72,0x9c93,0x9c93,0x9411,0x82cc,0x7a8a,0x5acb,0x5aaa,0x528b,0x52ab,0x52cb,0x7a8b,0x8b0c,0xbd76,0xb596,0xbd96,0xbd76,0xbdd7,0xbdb7,0xc5d7,0xbdb7,0xbd97,0xb597,0xb576,0xbdb7,0xbd97,0xbd97,0xbd97,0xbdb7,0xbdb7,0xbd97,0xbd97,0xbd76,0x936f,0x828a,0x526a,0x4a4a,0x4208,0x4269,0x5a69,0x7229,0x82ab,0xb535,0xad76,0xbdd7,0xb597,0xbdb7,0xb577,0xbd98,0xbd97,0xb5b7,0xc5f8,0xbdf7,0xbdd8,0xc5f9,0xc5f8,0xce39,0xc639,0xbdb7,0xbdd8,0xbdd7,0xad15,0x7aad,0x6a09,0x4a08,0x4208,0x4208,0x3a28,0x49e7,0x69e8,0x6a6a,0xa4d4,0xa514,0xad36,0xa4b4,0xa4d4,0x9cd4,0x9cd3,0xa514,0xa515,0x9cb3,0x9cb3,0xa4f4,0xa4d4,0x9cb3,0x9473,0x9c72,0xa4b3,0x9c93,0x8c31,0x83b0,0x4947,0x5186,0x3986,0x3186,0x31a6,0x3185,0x4165,0x5945,0x7b0b,0x94b2,0x9cf4,0x9cf4,0x9493,0x9cd4,0x9cb3,0x8c53,0x9473,0x8c52,0x8c52,0x8c52,0x8c31,0x8c31,0x9431,0x9493,0x9473,0x8c31,0x8c31,0x7baf,0x6aac,0x48e5,0x4146,0x2924,0x1925,0x1144,0x2124,0x2924,0x5105,0x628a,0x7bd0,0x8432,0x8432,0x8411,0x7b8f,0x83cf,0x8431,0x7bd0,0x7bcf,0x7bef,0x7c10,0x7bf0,0x7c10,0x8410,0x8c10,0x8c10,0x7bf0,0x83f0,0x7bd0,0x62cc,0x48e4,0x40e4,0x18c3,0x10c4,0x10c3,0x0881,0x4228,0x7b4e,0x3021,0x3861,0x4021,0x4020,0x3841,0x3820,0x3820,0x3821,0x3821,0x3821,0x3820,0x4020,0x4021,0x4041,0x4041,0x4061,0x3861,0x3861,0x4841,0x4020,0x2020,0x7c30,0x2106,0x10a2,0x08a2,0x0862,0x4aea,0x9492,0x0842,0x10e2,0x18e2,0x18e3,0x10a2,0x31a5,0x4a47,0x5268,0x5269,0x5a89,0x5248,0x8cb0, +0xb5b5,0xc5d6,0xa679,0x3a47,0x4a88,0x4aa8,0x5288,0x4a68,0x3a07,0x31e7,0x3a28,0x31c7,0x39c7,0x3166,0x9c30,0xb6ba,0x19a7,0x39a6,0x31a7,0x41c7,0x61a7,0x9bf0,0xe71c,0xd6fb,0xdf1c,0xd71c,0xd6db,0xd6fc,0xdf5c,0xd71b,0xd6bb,0xdefc,0xd71b,0xd6fb,0xd71c,0xdf3c,0xdf3c,0xcedb,0xceba,0xcedb,0xcefb,0xd77d,0x7b6f,0x51c7,0x4a08,0x3a08,0x3208,0x41e8,0x8248,0x934d,0xef7d,0xe77e,0xd71c,0xdf3c,0xe73c,0xe75d,0xdf5c,0xdf5c,0xe77d,0xdf5c,0xe75c,0xe77c,0xdf5c,0xe75d,0xe77d,0xdf5c,0xdf5c,0xdf5c,0xef9d,0xefbe,0xbdf8,0x7a29,0x4a69,0x4249,0x4a49,0x4a6a,0x7a8a,0x7a29,0xffde,0xefbe,0xe79e,0xe79d,0xe79d,0xe79e,0xe79e,0xef7d,0xef7e,0xef9e,0xef9d,0xe77d,0xef9e,0xef9d,0xe79d,0xef9e,0xefbe,0xe77d,0xe79d,0xefbd,0xefff,0x8b70,0x72cb,0x52ab,0x5acb,0x52ab,0x52ab,0x92ab,0xbcb2,0xf7ff,0xef9e,0xefbe,0xef9e,0xe77d,0xef7d,0xefbd,0xefbe,0xef9e,0xef9d,0xef9d,0xef9d,0xe77d,0xef9d,0xf7de,0xef9d,0xefbe,0xefbe,0xef9d,0xefbe,0xdf1d,0x726a,0x6a8a,0x5aaa,0x528b,0x528c,0x5a6b,0x7a29,0xd638,0xef9e,0xe75c,0xe75d,0xe75c,0xe77d,0xe75d,0xe73c,0xdf3c,0xdf3c,0xe75c,0xe75d,0xef7d,0xe75c,0xdf3c,0xdf5c,0xe73c,0xe73c,0xdf5c,0xdf1b,0xdf3c,0xd6bb,0x828b,0x5a6b,0x4a69,0x4269,0x4a49,0x5a8a,0x7229,0xe6fb,0xdf3c,0xd71b,0xdf3c,0xd6fb,0xd6db,0xdedb,0xd6fb,0xd6fc,0xd6fb,0xd71b,0xd71c,0xdf1c,0xd6db,0xd71b,0xd6fb,0xd6fb,0xceda,0xd6fb,0xd71b,0xdf5d,0xce7b,0x69c8,0x4a07,0x3a09,0x4208,0x3a07,0x49e8,0x5986,0xe6da,0xceda,0xceba,0xd6ba,0xdedb,0xce7a,0xce9a,0xc6ba,0xceb9,0xce99,0xce99,0xc679,0xce9a,0xc658,0xc678,0xc699,0xce79,0xce59,0xbe78,0xbe58,0xd71b,0xa494,0x6167,0x3987,0x2966,0x2985,0x3186,0x59a6,0x5965,0xceba,0xbdf6,0xb5f7,0xbdf7,0xb5b6,0xadd6,0xadd7,0xadd7,0xb5f8,0xb5d7,0xadf7,0xbdf7,0xb5b6,0xad96,0xad96,0xadb6,0xadb6,0xadd7,0xb5f7,0xadb6,0xbe59,0x624c,0x5105,0x20e4,0x2125,0x1924,0x2124,0x3924,0x4124,0xb5f7,0x9d55,0xa576,0xa575,0xa555,0x9d34,0xad75,0xa575,0x9d35,0x9d35,0x9d15,0x9cf4,0x9cf3,0x9d14,0xa574,0x9d13,0x9d14,0x94f3,0x9cd4,0x94d3,0x9cf4,0x5168,0x50c4,0x20e3,0x10c4,0x10c3,0x0821,0x73ae,0x38a4,0x60c3,0x70e3,0x70e3,0x70c3,0x70c3,0x70c3,0x70e3,0x70c3,0x70a3,0x68c3,0x70c2,0x70c2,0x78c3,0x70c3,0x70a3,0x70a3,0x70c3,0x70c3,0x68a2,0x68a3,0x58a2,0x5289,0x52cc,0x0882,0x10a3,0x0861,0x4b0b,0x8c92,0x0043,0x10e3,0x18c3,0x18e4,0x10a3,0x39a5,0x4a27,0x5288,0x5288,0x5288,0x5a68,0x8490, +0xb5d5,0xbdf6,0xa617,0x4a48,0x5a88,0x52a8,0x5288,0x5268,0x3a06,0x31e6,0x3a28,0x39e7,0x39e7,0x3986,0xa451,0xb6ba,0x1966,0x39a6,0x39e7,0x49c7,0x5946,0xbd35,0xc699,0xc699,0xce9a,0xce9a,0xc67a,0xc67a,0xc699,0xc679,0xce9a,0xa5d7,0xad74,0xce9a,0xceb9,0xceba,0xceba,0xceba,0xc6ba,0xceba,0xc6da,0xcf5c,0x73d0,0x5a08,0x4207,0x39e8,0x3208,0x4208,0x7a08,0xa3ef,0xe73c,0xd6fb,0xd6fb,0xd71b,0xd6fb,0xdf1b,0xd71b,0xd6fb,0xdefc,0xd6fb,0xdf1c,0xd71b,0xd71c,0xdf1c,0xdf1b,0xd71b,0xdf3c,0xe73c,0xdf1b,0xe73c,0xbebb,0x7a6a,0x5249,0x4a6a,0x426a,0x4a8a,0x728a,0x82cb,0xffde,0xdf3c,0xe75d,0xe75d,0xe75c,0xdf5c,0xdf5c,0xe77d,0xe77c,0xe75c,0xdf3c,0xe73c,0xe75c,0xdf3c,0xe77d,0xdf5c,0xdf5c,0xe75c,0xe75c,0xe77c,0xe7ff,0x8c32,0x7aaa,0x5aab,0x52eb,0x4aab,0x528a,0x9a8b,0xc554,0xef9e,0xe75d,0xe75c,0xe75d,0xe75d,0xe77c,0xe75c,0xe75c,0xef9d,0xadd6,0xb5d6,0xe77d,0xe75d,0xe75d,0xe75d,0xe75c,0xe75d,0xe77d,0xe79d,0xe77d,0xe79e,0x726a,0x6269,0x62cc,0x528b,0x4aab,0x62ac,0x71c8,0xde99,0xe75d,0xdf5c,0xdf5c,0xe77c,0xe77c,0xe75d,0xe75d,0xef9d,0xe77d,0xefbe,0xf7de,0xefbe,0xefbd,0xe75c,0xe75d,0xe73c,0xe73c,0xe73c,0xdf5c,0xdf1b,0xdf1c,0x7a0b,0x5a8a,0x4249,0x4a6a,0x4a69,0x5a8a,0x6a08,0xdefa,0xe73c,0xdf1b,0xdf3b,0xdf1b,0xdefb,0xdf1b,0xdf1b,0xdf1c,0xdf3c,0xd71b,0xd73c,0xdf1c,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6db,0xd71b,0xd6fb,0xce9b,0x69c8,0x5208,0x41e8,0x3a08,0x39e8,0x5208,0x61c7,0xe73b,0xce99,0xceb9,0xce99,0xd6ba,0xceba,0xc679,0xc699,0xce99,0xc679,0xce99,0xce99,0xceba,0xc679,0xc659,0xce79,0xce59,0xc639,0xc658,0xbe59,0xc679,0xad56,0x6146,0x3986,0x3186,0x2986,0x2966,0x5986,0x5985,0xce78,0xbdf7,0xb618,0xc658,0xbe38,0xbdf7,0xb5f7,0xb5f7,0xb5d7,0xb5f7,0xbe18,0xb5f7,0xb5f7,0xb5f7,0xb5d7,0xb5b7,0xb5b6,0xadd7,0xb5f7,0xb596,0xbe38,0x72ee,0x50e4,0x2104,0x2145,0x2124,0x2925,0x4945,0x4124,0xb5d6,0x9514,0xa575,0xb5f6,0xa555,0x9d54,0xa555,0xa555,0xa555,0xa555,0xadb6,0xa575,0x94f3,0x9d34,0xa514,0x94d3,0x9d34,0x9d54,0x9d13,0x94f3,0x9d14,0x49a9,0x48c3,0x28e4,0x18c3,0x20c4,0x0841,0x6b8e,0x3883,0x70c3,0x70e4,0x78c3,0x78c3,0x70c3,0x70c4,0x70e4,0x78e4,0x78c3,0x68c3,0x60a3,0x68a3,0x70a2,0x70c2,0x70a2,0x70a3,0x70c3,0x70a3,0x70a2,0x70a3,0x68e3,0x49e7,0x634e,0x10a2,0x10a3,0x0881,0x3a88,0x8492,0x0043,0x10e3,0x18e3,0x10e3,0x18e3,0x3985,0x4a27,0x5268,0x5288,0x5288,0x5269,0x7c50, +0xb5d5,0xbe16,0x9e17,0x4268,0x5268,0x52a8,0x5288,0x5288,0x39e6,0x3a27,0x39e7,0x31e7,0x3a07,0x39a7,0x9c50,0xb6ba,0x2166,0x39c7,0x39e7,0x41a6,0x6166,0xc596,0xc6ba,0xc6b9,0xc679,0xce9a,0xc69a,0xc69a,0xc69a,0xc699,0xce9a,0x8d57,0x9c32,0xceda,0xce9a,0xc6ba,0xc69a,0xc6ba,0xceba,0xceba,0xc6da,0xd75c,0x7bd0,0x5a07,0x4208,0x39e8,0x3a08,0x4a08,0x7a08,0xac71,0xe73c,0xd6fb,0xd6fb,0xd71c,0xd6fb,0xdf1b,0xd71b,0xd71b,0xd6fb,0xd71b,0xd71b,0xdf1b,0xdf3c,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xbe9b,0x7a6a,0x5289,0x4a8a,0x4a8a,0x4aab,0x7a8b,0x82eb,0xfffe,0xe75c,0xdf5d,0xef9e,0xe77d,0xdf7c,0xe77c,0xefbe,0x8492,0xc618,0xf7de,0xefbe,0x73ef,0xe75c,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xefff,0x8c10,0x72ab,0x5acb,0x4aaa,0x52cb,0x5acb,0x92ab,0xc575,0xef9d,0xe77d,0xe79d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe79e,0x5b4e,0x6b2d,0xefbe,0xef7d,0xe77d,0xe75d,0xe77d,0xe77d,0xef5d,0xe77c,0xe77d,0xefbf,0x726a,0x5a8a,0x52cb,0x5acc,0x4aab,0x628a,0x7229,0xde79,0xe77d,0xe75c,0xe75c,0xe75c,0xe75c,0xe75d,0xd71c,0xa576,0xb576,0xad95,0xad96,0xad96,0xa575,0xd6da,0xef7d,0xe75d,0xdf3c,0xe73c,0xdf3c,0xe71c,0xdefc,0x7a2b,0x5a6a,0x4a49,0x4a6a,0x4a6a,0x5a6a,0x69e8,0xe73b,0xdf3c,0xdefc,0xdf3c,0xdf1c,0xd71b,0xd6ba,0xdedb,0xd6db,0xdf3c,0xdefc,0xcebb,0xceba,0xe73c,0xc658,0xc679,0xd6ba,0xd6ba,0xd6db,0xd6da,0xdefb,0xcebb,0x69e9,0x5208,0x41e8,0x39c8,0x41e7,0x5208,0x59c6,0xdf3b,0xce79,0xceba,0xce9a,0xce9a,0xceb9,0xd6fb,0xbe17,0xce78,0xb637,0xceda,0xc618,0xa513,0xb5d5,0xc679,0xbe38,0xbe38,0xc679,0xce79,0xc658,0xce7a,0xb557,0x5946,0x39a6,0x3186,0x2986,0x3986,0x51a7,0x59a6,0xce78,0xbdf8,0xa596,0x7bf0,0x740f,0xbe18,0x9d34,0xbe17,0xb5d7,0xa555,0x8c71,0x94f2,0xadb6,0xadb6,0xa595,0xb5f7,0xadb7,0x7c31,0x94d2,0xadb6,0xb5d7,0x7aee,0x48c4,0x2924,0x2925,0x2124,0x2925,0x4145,0x4104,0xadf5,0xa556,0x73af,0x73ef,0x8c92,0x7bb0,0x9cf3,0x9d15,0x8cf2,0x7c10,0x4aab,0x530b,0x8cf3,0x6b4e,0x636d,0x94f2,0x5b2d,0x4aeb,0x7c2f,0x9514,0x9d14,0x51c9,0x48c3,0x18c4,0x18e4,0x18e4,0x1841,0x6b6d,0x3083,0x68e4,0x78e4,0x78e3,0x78c3,0x78c3,0x70c3,0x70c4,0x78e4,0x70c3,0x60c3,0x3862,0x58c3,0x68c2,0x70e2,0x78a3,0x70a3,0x70a3,0x70c3,0x70a3,0x78a3,0x68a3,0x49c6,0x634e,0x1082,0x10a3,0x1061,0x3248,0x94d3,0x0844,0x10c3,0x20e3,0x10e3,0x08e3,0x29a5,0x4a27,0x5268,0x5288,0x5289,0x5268,0x844f, +0xb5d5,0xc637,0xa658,0x3a48,0x52a8,0x5288,0x5289,0x5288,0x41c6,0x39c7,0x4248,0x31c7,0x39e7,0x3987,0x9c51,0xaeba,0x29a6,0x39e8,0x3a07,0x49e7,0x5166,0xbd75,0xceba,0xc6ba,0xce9a,0xc69a,0xc69a,0xce9a,0xd6db,0xe75c,0xe7be,0x8d97,0x9c93,0xefbd,0xd71c,0xc6ba,0xceba,0xceba,0xceba,0xceda,0xceba,0xd73c,0x73af,0x5a08,0x4208,0x3a29,0x3a28,0x4a08,0x7a08,0xac71,0xe75c,0xd6fb,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xdf5c,0xf7df,0xf7be,0xefbd,0xf7de,0xef9e,0xefbd,0xe77d,0xd6fc,0xdf3c,0xd73c,0xdf1c,0xdf1b,0xdf5c,0xc69a,0x7229,0x528a,0x4a8a,0x526a,0x528a,0x828a,0x82ab,0xfffe,0xe75c,0xe75d,0xe75c,0xef7d,0xe77c,0xef7d,0xe75d,0xef9e,0x73d0,0xc5f7,0x738f,0xd679,0xefbe,0xef7d,0xe79d,0xe77d,0xe75d,0xef7d,0xe77d,0xefff,0x83cf,0x72ec,0x52ab,0x52cb,0x52eb,0x62eb,0x92ab,0xc595,0xef9d,0xe77d,0xe79d,0xef7d,0xe77d,0xe77d,0xe75d,0xffdf,0xffff,0xf7df,0xffdf,0xffff,0xffff,0xef7d,0xe77d,0xe77d,0xe75d,0xe77d,0xe75d,0xe77d,0xe7be,0x6a8b,0x62aa,0x52aa,0x52ab,0x52ab,0x6aeb,0x7a69,0xe6ba,0xe77d,0xe75c,0xe75d,0xe75d,0xe75d,0xe79d,0xdf5c,0xce9a,0xd69a,0xce9a,0xce9a,0xce9a,0xceba,0xe75c,0xe75c,0xe75c,0xe73c,0xe73c,0xdf3c,0xdf1c,0xcedb,0x7a6a,0x62aa,0x4a6a,0x4a6a,0x528b,0x5a6a,0x69c8,0xdeda,0xdf1b,0xdf1c,0xdf3c,0xdf3c,0xdf7d,0x9d15,0xce99,0x9d34,0xefbe,0x9cb3,0xdefc,0xe75c,0x9cf4,0xd6ba,0xb5f7,0xceba,0xd6fb,0xcedb,0xd6db,0xd6fb,0xd6bc,0x71e9,0x5a29,0x4209,0x39c8,0x4207,0x5a09,0x61a6,0xef5b,0xceba,0xce9a,0xceba,0xd6da,0xd6ba,0xdf3c,0x5acc,0xad75,0x8cb2,0xcebb,0x73cf,0xdefb,0x8cb2,0xb617,0xce7a,0xc659,0xc699,0xc679,0xc659,0xceba,0xad57,0x6146,0x4186,0x3187,0x2986,0x3186,0x49a7,0x49a5,0xc698,0xc659,0x740f,0xc618,0xad76,0xbe38,0x6b8d,0xbe98,0xbe37,0x7baf,0xc638,0xb617,0xb5f7,0x734e,0x6b2c,0xc658,0xa555,0x8c51,0x9cf4,0x8cd2,0xadf7,0x72ed,0x48c4,0x3125,0x2124,0x2104,0x3125,0x4126,0x38e3,0xb5d5,0xadb6,0x4a09,0xb5d7,0xa596,0x62ed,0x52ab,0xad75,0x8491,0xadb7,0x4a2a,0x9514,0x94f5,0x634e,0xadd6,0xa575,0x526a,0xad76,0x39e8,0x9554,0x8cf4,0x59e9,0x48c3,0x18c4,0x10c3,0x18c4,0x1042,0x73ae,0x3884,0x68c4,0x7904,0x70e4,0x70e3,0x70e3,0x70c3,0x78e3,0x78a3,0x68c3,0x50c3,0x30a2,0x40a2,0x68a2,0x70c2,0x70a2,0x70c3,0x70a3,0x70e3,0x70a3,0x70a2,0x68e2,0x49a6,0x634e,0x0882,0x1082,0x1881,0x3227,0x8cd2,0x1042,0x20a3,0x28e3,0x20c3,0x10c3,0x21a5,0x4247,0x4a68,0x5289,0x52a9,0x5a89,0x7c2e, +0xadb5,0xc637,0x9e17,0x3a47,0x4ac8,0x52a8,0x52a8,0x4a68,0x31e7,0x31a7,0x4228,0x3a07,0x3a08,0x3987,0xa471,0xb6ba,0x19a6,0x39e8,0x41e7,0x51e8,0x59a7,0xc596,0xce9a,0xc699,0xc69a,0xce9a,0xce9a,0xc69a,0x9db6,0x634d,0x6b8f,0x428b,0x5aab,0x738e,0x7bce,0xc659,0xceda,0xceba,0xceba,0xceba,0xcedb,0xd75c,0x7bf0,0x51e8,0x41e8,0x4208,0x3a08,0x5249,0x81e8,0xac71,0xdf5c,0xd71b,0xd71c,0xdf1c,0xd71b,0xd71c,0xae18,0x52cc,0x52cc,0x52cb,0x52cc,0x52ac,0x5acb,0x7bef,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf5c,0xe75c,0xc67a,0x7229,0x528a,0x4289,0x4a69,0x526a,0x8aab,0x8aec,0xfffe,0xe73c,0xe75c,0xe75c,0xe77d,0xe77d,0xe77d,0xe75c,0xe79d,0xefdf,0x420a,0xacb3,0xf7ff,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xef7d,0xf7ff,0x8bf1,0x628b,0x5aab,0x52cb,0x52eb,0x62cb,0x9aaa,0xcdd6,0xef9e,0xe77d,0xef9d,0xef7d,0xef7d,0xef7d,0xd73c,0x94b3,0x94b3,0x9493,0x94b3,0x8c72,0x8c71,0xef7d,0xef7d,0xe79c,0xe77d,0xe77d,0xe77d,0xef7d,0xe79e,0x728b,0x62cb,0x52eb,0x4aab,0x4aab,0x6aca,0x7a49,0xde99,0xe75d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xefbe,0xef9e,0xefbe,0xefbe,0xef9e,0xef7d,0xe75c,0xe73c,0xe73c,0xe73c,0xe73c,0xe75c,0xe75d,0xcedb,0x7a4a,0x628a,0x4a8a,0x4a8b,0x528b,0x5a6a,0x69c7,0xe71b,0xdf3b,0xdf1c,0xdf1c,0xdf1c,0xdf3c,0xe79e,0x73ef,0xc638,0xf7ff,0x8c93,0xb596,0xd6fa,0xce7a,0x9473,0xa554,0xe77c,0xd6fb,0xd6db,0xd6db,0xd6fb,0xce9b,0x69e9,0x5228,0x39e8,0x41e8,0x39e8,0x49e8,0x69a6,0xdf1b,0xce99,0xce99,0xceb9,0xc6ba,0xceba,0xdefc,0x9cb3,0x7bf0,0x8c51,0xc69a,0x6b8e,0xdf3b,0xb5d8,0xadb5,0xc679,0xc679,0xc679,0xc659,0xbe79,0xc679,0xad77,0x6147,0x3985,0x31a6,0x2986,0x2986,0x5186,0x49c6,0xc698,0xbe58,0x6baf,0xc658,0xbe18,0xc658,0x634e,0xc6d9,0xbe18,0x73cf,0x842e,0x94f3,0xb5b7,0x736d,0x738e,0xa574,0x9d15,0x4acc,0x4a4a,0xa574,0xb617,0x72cd,0x4904,0x3144,0x2144,0x2125,0x2905,0x4925,0x4924,0xadd5,0xadb6,0x39a8,0x62eb,0x8cd3,0x52ec,0x73af,0x7c0f,0x8470,0xadd7,0x426a,0x94f3,0xa555,0x424b,0x63af,0x9535,0x4209,0x5acb,0x4a8a,0x9d35,0x94f4,0x59e9,0x48c4,0x18c3,0x10c3,0x18c3,0x1041,0x738e,0x38c4,0x68c2,0x78e3,0x78e3,0x70e3,0x70e4,0x70c3,0x70e3,0x70e3,0x60c3,0x40c2,0x60e3,0x38c2,0x58c3,0x70c2,0x78c3,0x68a3,0x70a3,0x70c3,0x70c3,0x70a3,0x70e2,0x49c5,0x738e,0x1082,0x1083,0x1862,0x3a27,0x94b2,0x1042,0x20a3,0x18e2,0x2103,0x18a2,0x31a5,0x4a47,0x5288,0x5288,0x5288,0x5268,0x740e, +0xadb5,0xc658,0xa5f7,0x4248,0x52c9,0x52a8,0x52a8,0x4a88,0x31e7,0x31e7,0x4228,0x3a08,0x39e7,0x3966,0xac92,0xae78,0x1966,0x39e7,0x41e8,0x5208,0x61a7,0xcdd6,0xce9a,0xc69a,0xc67a,0xc69a,0xc69a,0xc69a,0xd73c,0xceba,0xd73c,0x9514,0xad55,0xe73c,0xdf3d,0xd6fb,0xceda,0xceba,0xd69b,0xceba,0xc6bb,0xd77d,0x7bd0,0x5a08,0x3a28,0x41e8,0x39e8,0x5208,0x79e8,0xb492,0xdf3c,0xd71c,0xd71c,0xdf1c,0xd71b,0xd71c,0xdf1c,0xef9e,0xefbe,0xefbe,0xefbe,0xf7be,0xf7be,0xefbe,0xdf5c,0xe73c,0xdf3c,0xdf3c,0xdf3c,0xe75d,0xbe39,0x7a6a,0x528a,0x4a8a,0x528a,0x526a,0x8a8b,0x932d,0xffff,0xe75c,0xe75c,0xe75c,0xdf7d,0xdf5d,0xe75d,0xe77d,0xefff,0x5b6d,0xc5f8,0x736e,0xdedb,0xef9e,0xe77d,0xe77d,0xe77d,0xef7d,0xef7d,0xef9d,0xf7ff,0x8bf1,0x6acb,0x5acb,0x52ab,0x4acb,0x62cb,0x9aaa,0xd5d6,0xefbe,0xe77d,0xef7d,0xe77d,0xef7d,0xef7d,0xefbe,0xefbe,0xe79e,0xf7be,0xef9e,0xef9e,0xef7e,0xefbe,0xef9e,0xe77d,0xe77d,0xef7d,0xef7d,0xef7d,0xdf7e,0x726c,0x62ec,0x52eb,0x5b0c,0x52cc,0x730c,0x7a8a,0xdeda,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe77d,0xdf5c,0xb638,0xce99,0xc679,0xce99,0xd69a,0xce79,0xe75c,0xe75c,0xe75d,0xe77d,0xdf5c,0xe77d,0xe75d,0xd6db,0x7a0a,0x6aab,0x528a,0x4a8a,0x52ab,0x5a6a,0x69a7,0xef3b,0xdf1b,0xdf3c,0xdf1c,0xd71b,0xdf1c,0xdf7d,0x94d3,0xe75c,0xe77d,0x9d36,0xefbe,0xe75c,0xb617,0xe77d,0xa534,0xd71b,0xd6fb,0xdedb,0xd71b,0xdefb,0xce9b,0x71e8,0x5248,0x4a09,0x39e8,0x3a08,0x51e7,0x69c7,0xdf3b,0xceba,0xce9a,0xceb9,0xceda,0xceba,0xd6fb,0x8c71,0xd6ba,0x3a08,0xdf1c,0x63af,0xbe57,0x9cf3,0xb616,0xc658,0xc659,0xc658,0xc659,0xc679,0xce9a,0xbdd8,0x6166,0x41a6,0x31a6,0x3166,0x3187,0x5966,0x51a6,0xce98,0xbe38,0x8cb3,0x9451,0x8430,0xbe37,0x52ec,0xc5d6,0xadb6,0x63d0,0xa596,0xb617,0x8410,0x94b3,0x8c30,0x636c,0x8c92,0x8c91,0xa536,0x94d1,0xbe59,0x6a8c,0x50e5,0x3125,0x2125,0x2125,0x2925,0x4945,0x4924,0xb5b5,0xa595,0x422a,0x94b3,0x9d55,0x5b0c,0xa555,0x2987,0x7c70,0xa5d7,0x426a,0x8cb2,0x9d55,0x41c8,0x7c10,0x9cf4,0x528a,0xad95,0x4208,0x9d14,0x94f4,0x622a,0x48c3,0x18e4,0x18c3,0x20e3,0x1061,0x634d,0x4125,0x68c3,0x70e4,0x78e4,0x78e3,0x70c3,0x78c3,0x70c3,0x99a6,0x48c3,0x48c3,0x68e3,0x50a3,0x40a2,0x68c2,0x70c3,0x70a3,0x70a3,0x70a3,0x70c3,0x70a2,0x70c2,0x4185,0x83f0,0x1062,0x10a3,0x1082,0x3a27,0x94d3,0x0843,0x18c2,0x18e3,0x2104,0x20e2,0x2984,0x4a27,0x5268,0x5288,0x52a8,0x5288,0x73ee, +0xbdb5,0xce58,0x9df7,0x4248,0x4aa9,0x52a8,0x4aa9,0x4a67,0x31e6,0x39e7,0x3a28,0x4209,0x4208,0x39a6,0xacd3,0xa679,0x1146,0x3207,0x39e7,0x51e8,0x6187,0xcdd7,0xce9a,0xc69a,0xc679,0xc69a,0xc699,0xceba,0xceba,0xc6ba,0xbeba,0x7cf3,0xbd54,0xd6fa,0xc699,0xc69a,0xd6fb,0xd6da,0xd6db,0xd6da,0xcedb,0xcf3c,0x7bcf,0x51e7,0x3a07,0x3a28,0x4229,0x5a09,0x79c8,0xb4b3,0xdf1b,0xcefb,0xd71c,0xdf3c,0xdf1b,0xdf1b,0xe75c,0xe77c,0xd6fb,0xd71b,0xdefb,0xdf1c,0xdf1c,0xdf3b,0xdf3c,0xe73c,0xe73c,0xdf3c,0xdf3c,0xdf5d,0xbe39,0x7a4a,0x5aab,0x528a,0x52ab,0x528b,0x8aab,0x930c,0xffff,0xe75d,0xe75d,0xe75c,0xe75d,0xe75d,0xe75d,0xe7bd,0x7471,0xce39,0xf7de,0xefdf,0x73af,0xd6b9,0xe77d,0xe77d,0xe75d,0xef7d,0xef7d,0xef7d,0xf7ff,0x83b0,0x6aaa,0x5acb,0x5aab,0x52cb,0x6acb,0x8a49,0xcdd6,0xe79d,0xef7d,0xef7d,0xef9d,0xef7d,0xe77d,0xef7d,0xef7d,0xe77d,0xc6ba,0xd6da,0xef9d,0xef7d,0xef7d,0xef9d,0xef9d,0xef7d,0xef9d,0xef7d,0xef7d,0xe77e,0x728c,0x62ec,0x5aeb,0x5aeb,0x52cb,0x6aab,0x7249,0xe6fa,0xe77d,0xe77d,0xe77d,0xef7d,0xef7d,0xe77d,0xdf3c,0xa576,0xad76,0xb596,0xad76,0xb596,0xad75,0xe73c,0xe75d,0xdf3c,0xe77d,0xe73c,0xef7d,0xe75c,0xd6fc,0x7a0a,0x628b,0x4a6a,0x528a,0x52ab,0x5a8b,0x71e7,0xe71a,0xdf3c,0xdf1b,0xe71c,0xdf3c,0xdf1c,0xdf1b,0xc679,0xd6fb,0xdf1c,0xb638,0xb5f7,0xd6da,0xc699,0xb5d7,0xb618,0xd6fa,0xdefb,0xd6db,0xd6fb,0xd6fb,0xce9b,0x71e9,0x5a28,0x4a08,0x3a08,0x4208,0x5a08,0x61c7,0xe75c,0xceba,0xceba,0xceb9,0xceba,0xceb9,0xc699,0xbe38,0xd6da,0xb638,0xd6da,0xc659,0xa575,0xb5d7,0xc679,0xce99,0xce7a,0xc679,0xc679,0xbe79,0xc679,0xe69b,0x6166,0x3987,0x3186,0x29a6,0x3187,0x5166,0x5165,0xce98,0xbe18,0xb618,0xa575,0xb5b6,0xc638,0xa597,0xa535,0xb5b6,0xa596,0x94b3,0xa534,0xa595,0xb618,0xbe19,0x9d54,0xb617,0xa576,0xadd7,0x9d54,0xc639,0x6a8d,0x50e5,0x2125,0x1925,0x2125,0x3105,0x4946,0x48e3,0xa5b5,0x9d35,0xa515,0x94b3,0x94f3,0x9d13,0xa574,0x9d55,0x9d74,0xa514,0x8cd4,0x9514,0x9d14,0x94f4,0x8cd3,0x9513,0x9513,0x9534,0x9cd3,0x94f4,0x9514,0x5a09,0x48e4,0x18e3,0x18c4,0x20e3,0x0861,0x5b2c,0x4146,0x68c3,0x7903,0x78e3,0x78c3,0x70e3,0x78c3,0x78c3,0x68a3,0x38a2,0x4082,0x50c3,0x48a2,0x30a2,0x58c3,0x68e3,0x78e3,0x70c3,0x68c3,0x70a3,0x68a2,0x68a3,0x4186,0x73cf,0x1081,0x08a3,0x10c2,0x31e6,0x94d2,0x0843,0x08c2,0x10c3,0x18e3,0x18c2,0x2985,0x4a28,0x5268,0x5a87,0x5289,0x5a88,0x6bcd, +0xb5d6,0xc658,0x8df6,0x4247,0x52a9,0x5289,0x4aa8,0x4a68,0x29a5,0x31e6,0x4228,0x39e8,0x31e8,0x39c7,0xb4f3,0xae9a,0x1126,0x39e8,0x39e7,0x5a09,0x6167,0xcdf7,0xc67a,0xce9a,0xc699,0xce79,0xceba,0xc6ba,0xc69a,0xceba,0xceda,0x8d14,0xacf3,0xd6da,0xc6ba,0xc6ba,0xceda,0xd6da,0xceda,0xcedb,0xcedb,0xcf3c,0x73b0,0x5206,0x3a28,0x3a08,0x39e8,0x4a28,0x69a7,0xbcd3,0xdf3b,0xcefb,0xd6fb,0xdefb,0xdefc,0xd71c,0xdf1c,0xdf1b,0xdf1b,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe73c,0xe75d,0xe77d,0xd75c,0xbe39,0x7a8b,0x528a,0x4a49,0x4aab,0x52aa,0x828b,0x934d,0xffff,0xe75d,0xdf5c,0xe77d,0xe77d,0xe75d,0xef5d,0xe77d,0xdf3d,0xe77d,0xe75d,0xe77c,0xe79e,0xef7c,0xe77d,0xe77d,0xef9d,0xef7d,0xef7d,0xef9d,0xf7ff,0x8baf,0x7b0c,0x52ab,0x52ab,0x5aeb,0x6aab,0x92ab,0xcdd6,0xefde,0xef9d,0xef7d,0xef7d,0xef7d,0xe77d,0xef9e,0xef7d,0xefbe,0x530d,0x6aec,0xef9d,0xe77d,0xe75d,0xef7d,0xe77d,0xef7d,0xef7d,0xef9d,0xef7d,0xe75d,0x7a8b,0x6aeb,0x5acc,0x5aec,0x5aeb,0x6aab,0x7a49,0xef1b,0xe77d,0xef9e,0xef5d,0xe77d,0xe77d,0xe79d,0xe77d,0xefbe,0xef9d,0xef9d,0xe79d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe73d,0xe75c,0xdf3c,0xd6fc,0x822a,0x62ab,0x4a8b,0x4a8b,0x528a,0x62aa,0x71e7,0xe73b,0xdf3c,0xdf1b,0xe71b,0xe73c,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf3c,0xdefb,0xe71c,0xdf3c,0xd71c,0xd6fb,0xdefb,0xd71b,0xd71c,0xdefb,0xdedb,0xd71b,0xd6bc,0x71e9,0x5228,0x4228,0x3209,0x4208,0x51e8,0x61c6,0xdf1a,0xce9a,0xceba,0xceba,0xd6ba,0xceda,0xc699,0xc679,0xce99,0xc659,0xce99,0xce79,0xc679,0xbe79,0xbe79,0xce99,0xce79,0xce99,0xc679,0xc659,0xc678,0xc5f8,0x6947,0x4187,0x2986,0x3186,0x2987,0x4966,0x4964,0xd6b8,0xbe18,0xb5f7,0xb617,0xb5f7,0xbe17,0xbdf7,0xb5d7,0xbe17,0xb5f7,0xb5f8,0xb5f7,0xb5f6,0xadd7,0xadf7,0xadd7,0xb5f7,0xad95,0xadb6,0xa5b6,0xb618,0x72ed,0x48e5,0x2104,0x2165,0x2925,0x2104,0x4925,0x48e3,0xadb5,0x9514,0x9d35,0xa555,0xa554,0xa575,0xa555,0xa555,0xa555,0xa534,0x9d14,0x9514,0x9d34,0xa514,0x9d13,0x9d54,0x9d13,0x94d3,0x94f2,0x9513,0x9514,0x5a2a,0x48c3,0x20e2,0x10e3,0x10e3,0x0861,0x632b,0x4968,0x68c4,0x78e4,0x70c3,0x78e3,0x78c3,0x7882,0x78c3,0x58c3,0x48a2,0x48c3,0x38c3,0x40c3,0x48a3,0x60a3,0x70c3,0x70c3,0x68e3,0x70c3,0x70c2,0x70c3,0x68c3,0x4185,0x73cf,0x0882,0x10c2,0x1882,0x31e6,0x94f3,0x0843,0x10c3,0x10c3,0x18e4,0x18c3,0x3185,0x4a27,0x5288,0x5288,0x5288,0x5a68,0x6bcd, +0xadb5,0xc657,0x9dd6,0x4247,0x5a88,0x5289,0x4a88,0x4a68,0x39c6,0x3a07,0x3a28,0x3a08,0x3a08,0x3986,0xbd74,0xa679,0x1145,0x39e8,0x39c7,0x59e8,0x59a7,0xd5f7,0xce79,0xc679,0xc679,0xc67a,0xceba,0xc67a,0xc679,0xce7a,0xc679,0xbe7a,0xd6ba,0xc699,0xc699,0xc69a,0xc679,0xce9a,0xce9a,0xd6da,0xceba,0xd77d,0x8390,0x5208,0x41e7,0x41e8,0x39e8,0x4a08,0x79e7,0xb491,0xe77c,0xd6db,0xd6db,0xd6fb,0xd6fb,0xd71b,0xd71b,0xdf1b,0xd71b,0xd6fb,0xd6fb,0xdf1b,0xd6fb,0xdf1c,0xd71c,0xdf1c,0xdf1c,0xdf1c,0xdf3c,0xe77e,0xc619,0x726a,0x528a,0x4a8a,0x4aaa,0x528a,0x82ab,0x8aec,0xfffe,0xdf3c,0xe75c,0xe75c,0xe77d,0xdf5d,0xe75d,0xe75c,0xe75c,0xdf5c,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75c,0xe77d,0xe77d,0xe75d,0xef5d,0xf7ff,0x838f,0x7aec,0x5aeb,0x52eb,0x52cb,0x6aec,0x8a8b,0xcdd6,0xf7de,0xe77d,0xef7d,0xef9d,0xef9d,0xef9d,0xef7d,0xef7d,0xef9d,0xef7e,0xf79d,0xef7c,0xe77d,0xef5c,0xef9d,0xef7d,0xe77c,0xe75c,0xef5c,0xef7d,0xdf1c,0x7a2a,0x6aeb,0x5aec,0x5aec,0x5b0b,0x730b,0x7a29,0xe6da,0xef7d,0xef7d,0xe77d,0xe77d,0xe77d,0xdf5c,0xe77d,0xe75c,0xe75d,0xe77c,0xdf3c,0xdf3c,0xdf5d,0xdf5d,0xdf5c,0xe75d,0xe75c,0xdf3c,0xdf3c,0xe73c,0xdefc,0x820a,0x628b,0x4a6b,0x528a,0x5a8a,0x628b,0x71a6,0xe71a,0xdf5c,0xdf1b,0xe71c,0xd71c,0xd71b,0xdf1b,0xdefb,0xd71b,0xcefa,0xd6da,0xd6fb,0xd6db,0xd71b,0xd6fb,0xd6fb,0xd73b,0xd71b,0xd71b,0xd6da,0xdf3c,0xce7a,0x71e8,0x5249,0x4229,0x3a08,0x39e7,0x51e8,0x69c6,0xef5b,0xcebb,0xceba,0xceda,0xceba,0xceba,0xceda,0xceba,0xd6ba,0xce99,0xc699,0xce99,0xce9a,0xce9a,0xc699,0xceba,0xceb9,0xc679,0xc679,0xc679,0xcedb,0xbd98,0x6187,0x39a6,0x3186,0x39a6,0x3186,0x4986,0x51a5,0xd6f9,0xc659,0xb617,0xbe38,0xc658,0xbe17,0xb617,0xbe18,0xbe18,0xb617,0xb617,0xae17,0xb617,0xb617,0xb5f7,0xb5f7,0xb5f6,0xb5d7,0xb5d7,0xadb7,0xc65a,0x6acc,0x4905,0x2145,0x2125,0x2924,0x2124,0x4146,0x48e4,0xbe37,0xb5d7,0xadd6,0xad96,0xa575,0xa596,0xa555,0xa575,0xad96,0xa534,0x9d34,0xa575,0xa575,0xa534,0xa534,0xa534,0x9d14,0x9514,0x9514,0x9d14,0xbdb7,0x6a2a,0x48c4,0x30c3,0x18e3,0x18c4,0x18c2,0x52ca,0x520a,0x5083,0x7104,0x78e3,0x70e3,0x70e3,0x78e4,0x78a4,0x70e3,0x68e3,0x68e3,0x68c3,0x70e3,0x68e3,0x70c4,0x70c4,0x68a3,0x68c3,0x70c3,0x70a3,0x70c3,0x58e2,0x4a27,0x6b8e,0x08a2,0x10a2,0x18a2,0x31e6,0x9514,0x0843,0x18c3,0x18a2,0x10e4,0x18c3,0x3185,0x4a27,0x5288,0x52a9,0x5289,0x5a89,0x6bcc, +0xadb5,0xce78,0x95d6,0x3a47,0x52a8,0x5288,0x4a88,0x4a67,0x31c6,0x31e7,0x3a28,0x3a08,0x3a08,0x3186,0xbd74,0x9e59,0x1966,0x39e8,0x3a07,0x49c7,0x61c8,0x9bae,0xd699,0xce9a,0xceba,0xceba,0xd6ba,0xceba,0xceda,0xceda,0xd6ba,0xdeda,0xd6ba,0xce99,0xce99,0xceba,0xc679,0xd6b9,0xd6da,0xd6ba,0xd6ba,0xb5b5,0x7228,0x5208,0x49e8,0x39e8,0x4209,0x4208,0x7a28,0x8aeb,0xe6da,0xdefb,0xdefb,0xdf1b,0xdf1b,0xe71c,0xd73b,0xdf3b,0xe73c,0xdf3c,0xdf3b,0xdf1b,0xdf1b,0xdf3b,0xe73c,0xe73c,0xdf3c,0xe75c,0xdf3b,0xd6db,0x93af,0x726a,0x52aa,0x4aca,0x4aaa,0x528a,0x728a,0x8aaa,0xd677,0xdf1b,0xe71b,0xe71c,0xe71b,0xdefb,0xdefb,0xdf1b,0xdf1b,0xdf1c,0xe73c,0xe73c,0xdf1c,0xe75d,0xef7d,0xe75c,0xe77d,0xef7d,0xe77c,0xe75c,0xb596,0x82ab,0x730c,0x62cb,0x52cb,0x52cb,0x6acb,0x92ec,0xa3ce,0xd678,0xdeba,0xdeda,0xdefa,0xdf1b,0xe6fb,0xdefb,0xe71c,0xe71b,0xe75c,0xdf1c,0xe71b,0xdefb,0xe73b,0xdf1b,0xdf1b,0xdf3c,0xef7c,0xef7d,0xe73c,0xad14,0x826a,0x6aca,0x5aeb,0x5aeb,0x5aeb,0x6aeb,0x8acb,0x9c0f,0xde99,0xe71b,0xe6fb,0xdefb,0xe71b,0xe6fb,0xe73c,0xe6fb,0xdf1b,0xe6fb,0xdedb,0xdefb,0xe71c,0xdedb,0xd6da,0xdeda,0xdedb,0xdedb,0xdeba,0xdeba,0x9baf,0x7aaa,0x628b,0x526b,0x4a8a,0x528a,0x526a,0x8a29,0x93ce,0xde99,0xdeb9,0xdeda,0xd679,0xd6ba,0xd6da,0xd6ba,0xce7a,0xce79,0xd698,0xce58,0xce18,0xce38,0xc618,0xc5f7,0xd638,0xce18,0xc617,0xcdf7,0xbd75,0x8aed,0x7228,0x5208,0x4209,0x3a09,0x3a28,0x41a7,0x79c7,0x830b,0xc658,0xc638,0xc637,0xbe17,0xce18,0xce38,0xbdd6,0xbdf6,0xb5f6,0xad95,0xbdd6,0xbdd6,0xbdd6,0xb575,0xad54,0xad94,0xad94,0xb575,0xb554,0xad34,0x6a09,0x61a6,0x3987,0x3986,0x39a7,0x3186,0x3965,0x5986,0x6aa9,0xacf3,0xa512,0x9cb1,0x9c71,0xa4f2,0xa512,0xad33,0xa514,0xad34,0xa513,0xa4f2,0xa4d2,0x9c91,0x9471,0x9450,0x9c71,0xa471,0x9450,0x9450,0x9410,0x40c4,0x5945,0x2965,0x2164,0x2145,0x2925,0x2905,0x5104,0x59e6,0x730b,0x7b6c,0x7b6d,0x83cd,0x7bad,0x738d,0x7b6d,0x736d,0x7b8d,0x738e,0x734e,0x734d,0x734c,0x734c,0x736d,0x7b6d,0x6b4c,0x6aea,0x732b,0x6269,0x40a3,0x40e5,0x10c4,0x18e4,0x18e4,0x10c3,0x2985,0xa555,0x3946,0x4083,0x4082,0x4083,0x3862,0x4062,0x3883,0x3882,0x3862,0x3882,0x40a2,0x3862,0x3862,0x3882,0x38a3,0x3884,0x3883,0x38a3,0x3083,0x38a3,0x3966,0x7bf0,0x3187,0x0882,0x18a3,0x1083,0x29c6,0xa555,0x0863,0x18a3,0x10c3,0x1103,0x10c3,0x2984,0x4a07,0x5288,0x5289,0x52a9,0x5a8a,0x6b8c, +0xadb5,0xce78,0x9dd6,0x4a48,0x52a9,0x52a9,0x5288,0x4a68,0x3185,0x39e7,0x3a28,0x3a08,0x3a07,0x39c7,0xb574,0xa679,0x1966,0x39e8,0x3a08,0x3a08,0x59e8,0x59c6,0x5145,0x5165,0x5145,0x4966,0x4945,0x4145,0x4945,0x4944,0x4945,0x4945,0x5165,0x5985,0x5966,0x5166,0x5986,0x5964,0x5965,0x5945,0x6144,0x69c6,0x5a07,0x4207,0x39e8,0x4208,0x4208,0x4229,0x6249,0x7228,0x6165,0x6165,0x6165,0x6166,0x6186,0x61a6,0x6186,0x6166,0x6186,0x61c7,0x61c7,0x61c7,0x6a08,0x6a07,0x69c7,0x69e7,0x59e7,0x6208,0x6a08,0x7228,0x7a8a,0x5a8a,0x52aa,0x52aa,0x52ab,0x4a8b,0x5a8b,0x82ab,0x8249,0x69c8,0x69e8,0x69c7,0x69e7,0x6a08,0x6a28,0x7248,0x7a89,0x7228,0x7208,0x7a28,0x7a49,0x7229,0x7249,0x6a09,0x7208,0x7208,0x7228,0x7229,0x82cb,0x7b2c,0x5aeb,0x5acb,0x52ca,0x52cb,0x5acb,0x6aeb,0x92eb,0x8acb,0x7229,0x7228,0x6a08,0x6a29,0x7249,0x7248,0x7a29,0x7a69,0x7a69,0x7249,0x7249,0x7a49,0x7209,0x7249,0x7aab,0x7aaa,0x7248,0x6a28,0x7a8a,0x82eb,0x62eb,0x5b0b,0x5aec,0x5aec,0x530b,0x530c,0x72ec,0x930d,0x8aaa,0x826a,0x8249,0x826a,0x7a8a,0x828a,0x828a,0x7a69,0x7249,0x7249,0x7248,0x7aaa,0x826a,0x7249,0x7a6a,0x7a69,0x7a49,0x8249,0x8a49,0x8249,0x82cb,0x5a8a,0x52ab,0x5a8a,0x528a,0x4a8a,0x528b,0x6a6b,0x828b,0x8229,0x69a7,0x69a7,0x7208,0x6a08,0x69c7,0x61a7,0x69c7,0x61c7,0x71e8,0x71c7,0x71c7,0x69e8,0x69a7,0x6966,0x6986,0x71c6,0x69c6,0x71e8,0x7a09,0x7a29,0x5a09,0x4a28,0x4229,0x4208,0x39e8,0x4207,0x5228,0x7a29,0x69a6,0x6146,0x5925,0x6145,0x6186,0x5145,0x5966,0x6145,0x5965,0x6165,0x6986,0x6146,0x5966,0x5985,0x5145,0x5165,0x5966,0x5986,0x5945,0x6966,0x69c8,0x4986,0x3187,0x3986,0x31a7,0x2966,0x3185,0x4987,0x61a7,0x5945,0x5945,0x5904,0x58e5,0x6124,0x5103,0x5104,0x50e4,0x5124,0x5944,0x5925,0x5925,0x50e4,0x5124,0x6164,0x50e4,0x50e4,0x4904,0x4904,0x5925,0x4945,0x3144,0x2145,0x2945,0x1924,0x2104,0x28e4,0x4104,0x5925,0x5905,0x5104,0x5104,0x50e4,0x5104,0x58e5,0x58e4,0x5904,0x50e4,0x48e4,0x4904,0x5104,0x5904,0x5905,0x50e5,0x5103,0x4904,0x5104,0x5124,0x4904,0x40e5,0x20e3,0x10e3,0x10e2,0x20c3,0x10c3,0x08a2,0x1924,0x9d76,0xbe59,0xb5b6,0xadb5,0xa5b5,0xadd7,0xad96,0xad76,0xb5d7,0xbe18,0xadb6,0xadb6,0xb5d7,0xa5b6,0xadd6,0xbdd6,0x9d33,0xa555,0x9d34,0x9d53,0x94d3,0x3986,0x1062,0x10a3,0x1082,0x1083,0x3a07,0x9d54,0x1083,0x18a3,0x10c3,0x18e3,0x10c2,0x3185,0x4207,0x4aa9,0x5288,0x5289,0x5289,0x634b, +0xb5b5,0xce98,0x95d6,0x4247,0x52a9,0x5289,0x5288,0x4a68,0x39a6,0x39c7,0x3208,0x3a28,0x3a08,0x39c8,0xb533,0x9df8,0x1925,0x3a08,0x39e8,0x39c7,0x41a7,0x41c7,0x49e8,0x49e8,0x49e8,0x49c7,0x49e8,0x4a07,0x5208,0x5208,0x51e7,0x5207,0x5207,0x49e7,0x5208,0x5208,0x4a28,0x4a28,0x51e8,0x5228,0x5a48,0x5208,0x4208,0x4207,0x39e8,0x3a08,0x3a08,0x4209,0x4228,0x4a48,0x5228,0x6249,0x6a49,0x6249,0x5a49,0x6269,0x6269,0x6a8a,0x6269,0x6269,0x628a,0x628a,0x6249,0x626a,0x6a89,0x6aaa,0x6269,0x5a49,0x5a89,0x5aaa,0x526a,0x4a6a,0x4aab,0x426a,0x528b,0x52ab,0x526b,0x526b,0x6aab,0x6acb,0x6acb,0x6acb,0x72cb,0x6acb,0x6aec,0x72ec,0x72cb,0x6b0c,0x6b0b,0x6aec,0x72ec,0x62cc,0x62ab,0x72ec,0x6aeb,0x630b,0x6acb,0x6aeb,0x62ec,0x52eb,0x5b0c,0x52eb,0x52cb,0x52ab,0x52ab,0x52eb,0x5acb,0x5aeb,0x6aeb,0x730c,0x6aec,0x7b2c,0x732c,0x6b0c,0x72ec,0x730c,0x730b,0x730b,0x730c,0x72eb,0x72ec,0x6aec,0x62ec,0x6aec,0x730c,0x6aeb,0x730c,0x5b0b,0x5b0c,0x52ec,0x5aec,0x5acb,0x5aca,0x5aeb,0x5acb,0x62ec,0x6acb,0x72ec,0x7b0c,0x72ec,0x72ec,0x6aec,0x6aab,0x7aec,0x730c,0x730d,0x6b0c,0x6b0c,0x6b0c,0x62ab,0x6aab,0x62ab,0x628b,0x62ab,0x6acb,0x6a8a,0x5aab,0x4aab,0x526a,0x5a8a,0x528b,0x52ab,0x4a8b,0x528b,0x5a8a,0x62aa,0x62aa,0x5a8a,0x5aab,0x628b,0x5a8a,0x5a8a,0x5a8a,0x5289,0x5a8a,0x628a,0x5a49,0x5289,0x5269,0x5269,0x5a6a,0x5a69,0x5a4a,0x526a,0x5249,0x4a28,0x4a09,0x4209,0x41e9,0x4a29,0x41e8,0x4228,0x3a08,0x41e8,0x5208,0x5228,0x49c7,0x59e8,0x5208,0x49e8,0x49e8,0x41e7,0x4a07,0x41e7,0x41a6,0x49e7,0x49c7,0x49e7,0x41e7,0x41c7,0x41a7,0x41c7,0x39c7,0x49c7,0x3985,0x3186,0x2966,0x3186,0x31a5,0x2985,0x3986,0x31a6,0x4186,0x4186,0x3987,0x3986,0x3986,0x3166,0x3166,0x3966,0x3986,0x3986,0x3145,0x3165,0x3165,0x3145,0x3946,0x3965,0x3965,0x3145,0x3145,0x3145,0x2925,0x2124,0x2165,0x1944,0x2905,0x2104,0x2125,0x2125,0x2925,0x2104,0x2904,0x2104,0x2925,0x2104,0x2925,0x2924,0x2124,0x2104,0x30e4,0x30e4,0x2904,0x2904,0x2903,0x20e3,0x20e4,0x20e4,0x2103,0x28e4,0x18e4,0x10e3,0x08e3,0x18e3,0x18c2,0x10c3,0x10e3,0x10e3,0x18e3,0x18a3,0x1061,0x10a2,0x0862,0x0881,0x08a2,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x0881,0x0881,0x0861,0x0821,0x0841,0x0861,0x1062,0x0861,0x0861,0x0041,0x1082,0x08c2,0x00a1,0x10a2,0x18a3,0x2985,0x9d33,0x18a4,0x10a3,0x18c2,0x1104,0x10c3,0x2965,0x4a27,0x4aa8,0x4a89,0x5a89,0x5a88,0x5b4b, +0xb5d5,0xce78,0x8db5,0x4267,0x52a8,0x5289,0x5288,0x4a67,0x31a5,0x4207,0x3a28,0x31e7,0x3a08,0x31a7,0xb574,0x95d8,0x1946,0x39e7,0x39e7,0x31e6,0x39e7,0x39e8,0x3a08,0x31e8,0x39e8,0x3a07,0x39e7,0x39e7,0x3a08,0x3a07,0x3a08,0x31e7,0x3a07,0x31e7,0x3208,0x41e8,0x4207,0x3a28,0x39e8,0x3a08,0x3a28,0x3a07,0x4208,0x41e8,0x4208,0x41e7,0x3a28,0x3a08,0x4228,0x4248,0x4a28,0x4a08,0x4a49,0x4269,0x4249,0x4a69,0x4a69,0x4a49,0x4249,0x4249,0x526a,0x4a49,0x4a6a,0x4a4a,0x4a6a,0x4a89,0x5269,0x526a,0x4a8a,0x426a,0x4a8a,0x4a8a,0x526a,0x528a,0x528a,0x528a,0x528b,0x4a6a,0x528b,0x52ab,0x52ab,0x5aaa,0x5acb,0x528a,0x52cb,0x5aeb,0x52ca,0x52cb,0x52ed,0x4a8b,0x5acb,0x5acb,0x5acb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x52cb,0x5acb,0x5aeb,0x5aeb,0x52eb,0x5aab,0x5acb,0x5acb,0x5aeb,0x5acb,0x52aa,0x5aeb,0x62cc,0x630b,0x52ab,0x5acb,0x5aeb,0x5b0c,0x5aeb,0x52eb,0x52cc,0x5aeb,0x5aeb,0x52eb,0x5aec,0x5aec,0x5acb,0x5b0b,0x62eb,0x5aeb,0x52eb,0x5aec,0x52ab,0x52cb,0x5acb,0x52ab,0x52ab,0x5acc,0x5aec,0x630c,0x62ec,0x5aec,0x5aec,0x5acc,0x5aec,0x5aac,0x5acc,0x52cc,0x52cc,0x630c,0x5b2c,0x5aec,0x5aec,0x52ec,0x52cb,0x52cb,0x5aeb,0x52ec,0x52cb,0x528b,0x526b,0x528a,0x528a,0x52cb,0x4aac,0x4a8a,0x5289,0x5289,0x52aa,0x5a8a,0x5aab,0x524a,0x4249,0x526a,0x4a6a,0x4a6a,0x524a,0x5a6a,0x528a,0x4249,0x4a49,0x4a6a,0x4229,0x4229,0x4a6a,0x426a,0x4a29,0x4a29,0x3a29,0x4229,0x5229,0x4a29,0x4a28,0x3a08,0x39e8,0x3a29,0x3a09,0x3a08,0x39e8,0x39e7,0x4207,0x31e7,0x39e7,0x41e7,0x3207,0x31e7,0x39c7,0x39e7,0x31e7,0x31a7,0x39c6,0x39e6,0x31e7,0x31c7,0x29a7,0x3186,0x31a6,0x39a6,0x29a6,0x31a6,0x3986,0x2986,0x3166,0x2985,0x3987,0x2966,0x3166,0x2966,0x2965,0x2985,0x2185,0x2186,0x2985,0x2945,0x2945,0x2946,0x2966,0x1945,0x2145,0x2946,0x2166,0x2166,0x2125,0x2145,0x2145,0x1924,0x2144,0x1944,0x2946,0x2104,0x1925,0x1904,0x2924,0x2124,0x2124,0x2103,0x2904,0x1904,0x1125,0x2125,0x2104,0x2104,0x2104,0x1904,0x1904,0x1904,0x2103,0x18e4,0x18e5,0x1103,0x20e3,0x18c4,0x18e4,0x18c4,0x10c4,0x1904,0x20e3,0x18e4,0x18c3,0x18e2,0x18e3,0x10e3,0x18e2,0x18e2,0x20e2,0x10a2,0x20a3,0x18e3,0x18e3,0x18a3,0x20a2,0x10c2,0x10c3,0x18a3,0x08e2,0x10c3,0x10a3,0x10a2,0x08e3,0x18c2,0x08c2,0x10c2,0x08c2,0x08a2,0x10a2,0x0882,0x10a2,0x1883,0x2144,0x9533,0x18a4,0x0882,0x10c2,0x10c3,0x10c3,0x2965,0x4227,0x52a9,0x52a9,0x5aa9,0x5a88,0x5b0b, +0xb5b5,0xd679,0x9595,0x4a67,0x5aa8,0x5288,0x5288,0x4a67,0x41c6,0x39c7,0x3a28,0x31e7,0x3a08,0x39a7,0xb575,0x95b7,0x2146,0x31e7,0x31e7,0x31c7,0x39e7,0x39e7,0x41c7,0x39c7,0x39e7,0x31e7,0x39e7,0x39e8,0x41e7,0x41e7,0x39e8,0x3a08,0x3a08,0x3a07,0x3a08,0x39e7,0x39e7,0x4207,0x4208,0x3a08,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x3a08,0x4228,0x4228,0x4a29,0x4229,0x3a29,0x3228,0x4249,0x4a48,0x5269,0x4a49,0x426a,0x426a,0x4a4a,0x4249,0x4a6a,0x4a69,0x4a69,0x4269,0x426a,0x4a6a,0x4a6a,0x42aa,0x428a,0x4a8a,0x528a,0x4a49,0x5289,0x4aa9,0x4aaa,0x4a8a,0x52ab,0x52aa,0x52ab,0x5acb,0x52cb,0x528a,0x5aab,0x52cb,0x4aab,0x4aab,0x52eb,0x4aab,0x52cb,0x52eb,0x52cb,0x5b0c,0x5aeb,0x4acb,0x52cb,0x5aeb,0x5aeb,0x5aec,0x5acc,0x5aeb,0x5b0b,0x5aeb,0x52ab,0x52ab,0x5aeb,0x5acb,0x5acb,0x5acb,0x52aa,0x52cb,0x52eb,0x530a,0x62eb,0x5aeb,0x52eb,0x52eb,0x530b,0x5acc,0x52ab,0x52eb,0x5acb,0x5aec,0x62cc,0x52cb,0x5aeb,0x52eb,0x52cb,0x5acb,0x52cb,0x5acb,0x5acc,0x52ab,0x4acb,0x4acb,0x4aab,0x5aec,0x630d,0x5aec,0x52ec,0x4acb,0x5aeb,0x52cb,0x52ec,0x52cc,0x5aab,0x52cb,0x5aeb,0x52cb,0x52cb,0x52ac,0x52ac,0x52cb,0x5acc,0x52ec,0x4acb,0x52ab,0x4aab,0x52aa,0x5a8a,0x528a,0x52ab,0x526a,0x526a,0x528a,0x5aaa,0x5a8a,0x528b,0x4a6b,0x42aa,0x526a,0x526a,0x4a6a,0x526a,0x4a6a,0x4a89,0x426a,0x4a6a,0x4a49,0x4a29,0x4a6a,0x4229,0x4a49,0x4a29,0x4208,0x39c8,0x4228,0x4208,0x4a08,0x41e8,0x39c8,0x4208,0x3a49,0x3a08,0x3a08,0x39e7,0x39e8,0x39e8,0x31e8,0x39e7,0x39e7,0x39e7,0x39e8,0x31c7,0x39c7,0x39e7,0x4207,0x39e7,0x31e7,0x39e7,0x39c7,0x31c7,0x29c7,0x31a7,0x3187,0x31a6,0x31c5,0x39c6,0x3186,0x3166,0x3186,0x3186,0x2966,0x3166,0x2985,0x2166,0x3185,0x2166,0x2166,0x2165,0x2965,0x2966,0x2146,0x2966,0x2165,0x2945,0x2966,0x2966,0x2965,0x2945,0x2165,0x1124,0x1944,0x2145,0x2145,0x1904,0x2105,0x2124,0x2124,0x2144,0x2145,0x1904,0x18e4,0x2104,0x2104,0x1905,0x1904,0x2103,0x1904,0x1904,0x1905,0x1904,0x18e4,0x2104,0x18e3,0x18e2,0x18e4,0x28e5,0x20e4,0x18e3,0x1904,0x20c4,0x10c3,0x18e2,0x20e3,0x20c2,0x18c2,0x10c4,0x10c3,0x18e2,0x10e2,0x18e3,0x10a2,0x10c3,0x08e3,0x10e2,0x10c2,0x08e3,0x08c3,0x10a3,0x18c3,0x10c2,0x10a1,0x08a2,0x08c2,0x08c2,0x08a2,0x10a2,0x1082,0x1083,0x08a2,0x2082,0x10a2,0x10c2,0x08a2,0x1944,0x9533,0x18c4,0x08a3,0x10c2,0x18e3,0x18c2,0x2944,0x4207,0x4288,0x5288,0x52a9,0x5aa9,0x5b0a, +0xbdd6,0xd6da,0x9575,0x4a47,0x5aa9,0x5a88,0x5288,0x4a67,0x31a5,0x39e7,0x4208,0x3a28,0x3a08,0x39a7,0xbd95,0x8d96,0x1925,0x3a08,0x3a08,0x39e7,0x39e7,0x41e8,0x41c7,0x39e7,0x3a07,0x3a08,0x39e7,0x41e7,0x41e8,0x3a07,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4229,0x4209,0x3a28,0x3a69,0x3a28,0x4a49,0x4a49,0x4229,0x4269,0x3a69,0x4249,0x4a49,0x4a69,0x4269,0x4269,0x426a,0x426a,0x4a69,0x4a89,0x4a89,0x4a8a,0x4a6a,0x426a,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x5a8a,0x4a6a,0x4a69,0x4a6a,0x4a8a,0x4a8a,0x4aaa,0x52ab,0x4aaa,0x52aa,0x52ab,0x52cb,0x52ca,0x52aa,0x52aa,0x52cb,0x52cb,0x52ab,0x52cb,0x4acb,0x52cb,0x52cb,0x5acb,0x52cb,0x52cb,0x5acb,0x632c,0x630c,0x5aeb,0x52eb,0x5b0c,0x530b,0x52ab,0x52eb,0x5aec,0x5aec,0x5aeb,0x5b0c,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aec,0x52eb,0x52cb,0x5aec,0x630c,0x5aec,0x52cc,0x5acb,0x52cb,0x62eb,0x5acb,0x52cb,0x5aeb,0x52cb,0x5acb,0x5acc,0x5acb,0x62cb,0x5acb,0x5acb,0x4a8a,0x52cb,0x52cb,0x5acb,0x62ec,0x52cb,0x5b0c,0x5acc,0x5acb,0x5acb,0x52eb,0x52cb,0x5aec,0x5acc,0x52eb,0x52cb,0x52cb,0x5acc,0x5acb,0x52cb,0x62ec,0x5acb,0x52ab,0x528a,0x52ab,0x52aa,0x5a8a,0x5acb,0x52ab,0x528b,0x526b,0x52ab,0x528a,0x5acb,0x528b,0x528a,0x4aaa,0x4a69,0x4a49,0x4a69,0x524a,0x4a8a,0x428a,0x4a6a,0x4a4a,0x4a4a,0x5269,0x526a,0x4a6a,0x4a4a,0x3a48,0x3a28,0x4a09,0x4a48,0x4a49,0x4228,0x4208,0x3a28,0x4228,0x4248,0x4208,0x3a08,0x4207,0x39e8,0x39e8,0x4208,0x4a08,0x41e8,0x39e7,0x3a08,0x39e8,0x41e7,0x39c7,0x39c8,0x39c7,0x2a06,0x39e7,0x39a7,0x31a6,0x31e7,0x31c6,0x39a6,0x39a6,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x3166,0x3186,0x2946,0x2186,0x2166,0x2985,0x2985,0x3166,0x2986,0x2165,0x2966,0x3166,0x2965,0x2145,0x2965,0x2965,0x2965,0x2165,0x2145,0x2945,0x2145,0x1965,0x2124,0x2124,0x2126,0x2126,0x2145,0x1925,0x1925,0x2145,0x2105,0x2105,0x2104,0x2905,0x2105,0x2904,0x1925,0x1905,0x1905,0x2125,0x1924,0x1905,0x2104,0x2924,0x1904,0x1904,0x2105,0x2104,0x2104,0x20e4,0x20c3,0x1903,0x1903,0x18e4,0x18e4,0x20e3,0x18a4,0x18c4,0x10e3,0x18c3,0x18c3,0x10c3,0x10c3,0x08e3,0x10e2,0x18c3,0x10e4,0x08c3,0x10c3,0x10c4,0x10c2,0x08e2,0x08c3,0x10e2,0x18c2,0x10a3,0x08c3,0x08c3,0x08a2,0x08c2,0x18c4,0x10a3,0x18c3,0x0882,0x29e7,0x9514,0x1063,0x08c3,0x08c3,0x10c3,0x1883,0x2965,0x4246,0x52c8,0x52a9,0x52a8,0x5aa8,0x5b0a, +0xbdd6,0xd6fa,0x9575,0x4247,0x52a8,0x52a8,0x4a88,0x4247,0x31c6,0x3a07,0x3a28,0x31e7,0x39e8,0x39a7,0xacf3,0xb69a,0x21a8,0x31c7,0x3a07,0x31a7,0x39c7,0x41e7,0x39e7,0x31e7,0x39e8,0x39e7,0x39e8,0x39e8,0x31e7,0x39e7,0x39e8,0x41e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x4228,0x39e8,0x31e8,0x3208,0x31e8,0x39e8,0x49e8,0x4208,0x3a09,0x4208,0x4228,0x3a69,0x4249,0x4229,0x4209,0x4a29,0x4249,0x424a,0x4a6a,0x4a49,0x5269,0x4a69,0x4249,0x4249,0x4a6a,0x4a49,0x4a69,0x4a69,0x4a49,0x524a,0x4a6a,0x4a8b,0x526a,0x4a6a,0x4a49,0x4a69,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52ca,0x52aa,0x52aa,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x4aaa,0x52ab,0x5aeb,0x52eb,0x5acb,0x5aeb,0x5aec,0x5aec,0x528b,0x52ab,0x5b0c,0x5aeb,0x52cb,0x5aec,0x5acc,0x5acc,0x52ab,0x5acb,0x5aeb,0x5aec,0x5aec,0x52cc,0x5acc,0x5aec,0x5b2c,0x52ec,0x5b0c,0x630c,0x5b0b,0x5b0c,0x52ec,0x5aeb,0x62ec,0x52cb,0x52cc,0x5b0c,0x5aec,0x5aab,0x62eb,0x5acb,0x62ec,0x528a,0x5acb,0x5aec,0x5a8b,0x5aab,0x5a89,0x4a4a,0x4a8a,0x52ab,0x62ec,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x5acb,0x5acc,0x528b,0x4a8b,0x52ab,0x4acb,0x52ac,0x52ab,0x4aab,0x52cb,0x52ab,0x52aa,0x4a8a,0x52ab,0x5aab,0x5a8b,0x4a8b,0x4a8b,0x4a8b,0x4a4a,0x4a6b,0x4a4a,0x4a69,0x526b,0x528b,0x4a4a,0x4a49,0x4a4a,0x4229,0x422a,0x4a6b,0x4a8b,0x4a6a,0x426a,0x4229,0x4229,0x41e8,0x4a4a,0x426a,0x4a29,0x41e8,0x41e9,0x31a7,0x39e8,0x39c8,0x41e8,0x4249,0x4229,0x4229,0x3a08,0x39e7,0x39c7,0x31c7,0x31a7,0x39c7,0x31a6,0x31e7,0x31e8,0x39c8,0x41a8,0x39a7,0x39a7,0x31a6,0x29a7,0x3186,0x39a6,0x29c6,0x31a6,0x29a7,0x31a7,0x2986,0x39c7,0x2986,0x2987,0x3166,0x2905,0x2946,0x2986,0x31c7,0x3186,0x2966,0x3145,0x2946,0x2946,0x2945,0x3166,0x3145,0x3166,0x2925,0x2966,0x2125,0x2945,0x2126,0x2925,0x2145,0x2925,0x2145,0x2945,0x2145,0x2104,0x20e4,0x2925,0x2925,0x1925,0x18e4,0x10c4,0x08e4,0x18e4,0x1905,0x2105,0x20e4,0x2105,0x2945,0x1904,0x08c4,0x10e4,0x18c4,0x1104,0x18c4,0x1883,0x10c4,0x18c4,0x18c3,0x1883,0x10c3,0x10c4,0x18a4,0x20a4,0x1083,0x08a3,0x10e3,0x1083,0x10a2,0x18a2,0x18c2,0x10e3,0x10e4,0x1083,0x1062,0x1083,0x18a3,0x18a3,0x18a2,0x10c2,0x0882,0x0841,0x0862,0x1042,0x1061,0x08a2,0x1083,0x1082,0x0861,0x0062,0x0862,0x10a2,0x08a2,0x0081,0x0861,0x0882,0x0842,0x0842,0x1062,0x0840,0x10c3,0x8451,0x7bd0,0x0842,0x10c3,0x08c2,0x08e3,0x10c3,0x3143,0x4a27,0x52a9,0x5288,0x5aa8,0x5288,0x52c9, +0xbdd6,0xd71a,0x8d55,0x4248,0x5aa9,0x52a8,0x5288,0x4268,0x39c6,0x39c6,0x3227,0x3208,0x3208,0x39c7,0x6aaa,0xe73c,0x9556,0x3a4a,0x29a7,0x2187,0x2967,0x2966,0x3166,0x3146,0x2145,0x2946,0x3167,0x2166,0x2987,0x3167,0x2967,0x3167,0x2966,0x3187,0x3146,0x3166,0x2967,0x2966,0x2946,0x2986,0x2986,0x31a7,0x31a7,0x3188,0x31a7,0x31a8,0x29a8,0x2987,0x31a8,0x31e8,0x39c8,0x31e8,0x31e8,0x39e8,0x422a,0x31c9,0x39e8,0x41e9,0x3a0a,0x3a09,0x422a,0x3a2a,0x3a29,0x426a,0x426a,0x4a6b,0x4a4a,0x420a,0x4a4a,0x4a8a,0x4a4a,0x4a4a,0x528b,0x4a8b,0x4a8b,0x4aab,0x4a8b,0x4aac,0x52cb,0x5aec,0x5aed,0x5acc,0x630d,0x630d,0x632d,0x634d,0x5b0d,0x5aec,0x632d,0x6b6e,0x6b8f,0x6b8f,0x6b4e,0x6b4e,0x6b8f,0x73af,0x73b0,0x6b8f,0x7bb0,0x7bb0,0x7bb0,0x7b8f,0x736e,0x738f,0x73b0,0x7c11,0x7c11,0x7c11,0x7bf1,0x73d0,0x73f0,0x7c10,0x7c31,0x8451,0x8451,0x8c92,0x8c92,0x8c92,0x8452,0x9473,0xb556,0x94b3,0x9cf4,0x94f3,0x9d14,0x9cf4,0x94b4,0x9494,0x9d15,0x9cd4,0x9cf4,0x9cf4,0x94f4,0xa535,0x9d35,0x9cf5,0x94b4,0x9d15,0x9d35,0x9d15,0x9d15,0xa535,0xad56,0xad55,0xa576,0xad56,0xa576,0xa555,0xad56,0xa535,0xad56,0xad97,0x9d76,0x9d36,0xa576,0xa576,0xa556,0xa556,0x9d55,0x9d35,0xa576,0xa556,0xad56,0xa556,0xad56,0xad56,0xb596,0xb5b6,0xad55,0xa576,0xad77,0xad76,0xad75,0xa556,0xa556,0xa535,0xad97,0xad97,0xa555,0xa555,0xa556,0xa556,0xad77,0xa536,0xa515,0xad36,0xad76,0x9cf5,0x94b4,0x9cf4,0xa535,0xa535,0xad55,0x9cf4,0x9d15,0xa535,0xa535,0x94d4,0x8473,0x8cb3,0x94d3,0x9cf5,0x8cd4,0x8473,0x94d4,0x94b3,0x8c72,0x8c92,0x8492,0x8cb3,0x8cb3,0x94b4,0x94d4,0x8cb3,0x8cb3,0x94d3,0x8c93,0x8cb3,0x8cb3,0x8c71,0x8410,0x7c31,0x8431,0x8451,0x8c73,0x8c52,0x8431,0x8c72,0x8c72,0x7c32,0x73f1,0x7c31,0x8431,0x7bf1,0x8451,0x8431,0x8c71,0x8452,0x8c92,0x8472,0x8c92,0x8c72,0x8452,0x8431,0x7c31,0x7431,0x7411,0x7bf0,0x73f0,0x7c10,0x8410,0x7baf,0x83f0,0x7bcf,0x7bcf,0x73cf,0x73d0,0x7bf0,0x73cf,0x73f0,0x7bef,0x73d0,0x73af,0x73af,0x73d0,0x6b8f,0x634e,0x736f,0x6b6f,0x638e,0x6bcf,0x6baf,0x6bb0,0x6bb0,0x6b8f,0x636e,0x5b0d,0x5b4d,0x6bae,0x6b4e,0x5b0d,0x632d,0x738f,0x73af,0x634e,0x6b8e,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73b0,0x6b8f,0x738f,0x736f,0x73d0,0x6b8f,0x636e,0x5b4d,0x6b6e,0x6b4e,0x6b6e,0x6bae,0x73ef,0x73ef,0x7410,0x8cb2,0x8450,0x18a3,0x18c3,0x10a2,0x08c2,0x1103,0x08c2,0x2964,0x4227,0x5288,0x5289,0x52a8,0x5aa9,0x52c9, +0xbdd5,0xd6fa,0x8534,0x4a48,0x52a8,0x5288,0x5288,0x4267,0x39a6,0x39e7,0x3a28,0x31e8,0x31e8,0x31e7,0x31a6,0x83cf,0xdefb,0xe75d,0xdf5c,0xdf3c,0xdf1c,0xdf3c,0xd6fb,0xd6fc,0xd6da,0xd6fb,0xdf3c,0xd6fb,0xdefb,0xdf3c,0xe77d,0xe79e,0xdf5d,0xdf5c,0xe75d,0xef9e,0xdf5d,0xdf5d,0xdf7d,0xefbd,0xef9e,0xdf9e,0xe79e,0xdf9d,0xdf7d,0xe77c,0xefbe,0xefdf,0xefdf,0xe7be,0xe77d,0xf7df,0xf7df,0xf7df,0xf7ff,0xefff,0xf7ff,0xffff,0xf7ff,0xffff,0xf7ff,0xefff,0xf7ff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7de,0xffff,0xfffe,0xf7de,0xffde,0xf7de,0xf7de,0xffde,0xffde,0xf7de,0xf7de,0xf7be,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xef9e,0xef9e,0xf79e,0xef9d,0xf7be,0xefbe,0xefbe,0xef9e,0xf7be,0xefbe,0xef9d,0xef9d,0xf7be,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef5d,0xef7d,0xef5d,0xef5d,0xe75c,0xdf5c,0xe73c,0xe75c,0xe73c,0xe73c,0xdf3c,0xe73b,0xe73c,0xdf3c,0xe75c,0xe75c,0xe75c,0xdf3b,0xe75c,0xdf1b,0xdf1b,0xe75c,0xdf1b,0xd6fb,0xdf1b,0xe73c,0xe73c,0xdf1b,0xdf1b,0xdf1b,0xd71a,0xdf3c,0xdf1b,0xdf1b,0xd6fa,0xd6fa,0xdf1c,0xe71c,0xdf1b,0xdf1b,0xd71b,0xd6fa,0xd6ba,0xd6da,0xd6da,0xd6d9,0xd6da,0xce99,0xce99,0xceb9,0xcefa,0xc6b9,0xd6fa,0xceb9,0xce9a,0xc699,0xce99,0xceb9,0xc659,0xbe58,0xbe58,0xbe38,0xbe38,0xb678,0xbe37,0xb638,0xbe59,0xb637,0xb617,0xadb6,0xbdf6,0xadb6,0xadd6,0xadb5,0xadb5,0xb5f6,0xadf7,0xadd5,0xb5b5,0xbdd6,0xadb5,0xad95,0xad95,0xad96,0xad95,0xadb5,0xadb5,0xad94,0xad95,0xa574,0xa554,0xa575,0xa595,0xa595,0xa554,0xa554,0x9533,0xa553,0x9d33,0xa513,0x9d13,0x9d54,0xa554,0x9cd4,0x9d13,0x9cf4,0x8cb2,0x8cd3,0x94d2,0x94d2,0x9cd3,0x94d3,0x94f2,0x94d2,0x94d2,0x8492,0x94d2,0x8c92,0x8c92,0x8cb2,0x8cb2,0x8c91,0x8c72,0x7c91,0x7450,0x7410,0x7c2f,0x7c0f,0x7bef,0x740f,0x73cf,0x738e,0x6b4d,0x52aa,0x1083,0x0881,0x18c2,0x18a2,0x10c2,0x10e3,0x1904,0x2944,0x4227,0x4a88,0x5289,0x52a9,0x52a8,0x52a9, +0xbdd5,0xdf1a,0x7d34,0x4a48,0x5aa8,0x5287,0x5287,0x4248,0x31a5,0x31e6,0x3a08,0x3208,0x39e8,0x39e8,0x3a07,0x3986,0x3185,0x5acb,0x738d,0x83ef,0x8c51,0x8431,0x8c51,0x8c50,0x842f,0x9410,0x8c31,0x8410,0x7c2f,0x7c0f,0x7c0f,0x7bcf,0x7bcf,0x8430,0x7bef,0x73cf,0x8430,0x7c30,0x7c2f,0x83f0,0x8410,0x740f,0x7bcf,0x8411,0x8430,0x7c2f,0x8430,0x7c10,0x7c10,0x842f,0x7bef,0x7bee,0x840f,0x7c0f,0x7c0f,0x7c0f,0x83ef,0x840f,0x840f,0x7bcf,0x8c71,0x73ae,0x632c,0x632d,0x6b2c,0x634d,0x634c,0x6b4c,0x6b2c,0x6b4c,0x6b6d,0x6b6d,0x6b2d,0x630c,0x6b4d,0x6b6d,0x6b6d,0x632c,0x630c,0x6b2c,0x5aec,0x5b0b,0x632b,0x6b4c,0x6b4c,0x632c,0x632c,0x6b4d,0x6b4c,0x630b,0x6aeb,0x62eb,0x5acb,0x5aaa,0x5a8a,0x5acb,0x5a8a,0x5aaa,0x62eb,0x5aca,0x5aaa,0x62aa,0x5a8a,0x5acb,0x5a6a,0x5a69,0x62aa,0x5acb,0x4aca,0x52eb,0x52aa,0x5aca,0x5acb,0x52ab,0x52a9,0x52c9,0x4a49,0x4a69,0x526a,0x5a8a,0x5aaa,0x5aca,0x5aab,0x528a,0x4a29,0x5248,0x4a48,0x52cb,0x4a89,0x4a68,0x4a68,0x4228,0x4248,0x4248,0x4208,0x5249,0x526a,0x526a,0x526a,0x4a29,0x4a08,0x4a49,0x4a09,0x4a49,0x4208,0x4a49,0x4a49,0x4248,0x4a69,0x4a29,0x4a2a,0x4a2a,0x41e9,0x39e8,0x49e8,0x41e8,0x41e7,0x4228,0x4208,0x39a7,0x49e9,0x41e8,0x41e8,0x4a29,0x4209,0x41e8,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41c7,0x49e7,0x41e8,0x49e8,0x31a7,0x39e8,0x41c7,0x39c6,0x31a6,0x31a7,0x41a8,0x3987,0x3185,0x2985,0x2965,0x2986,0x3166,0x3185,0x3165,0x2965,0x2985,0x2965,0x3186,0x2986,0x2925,0x2964,0x2945,0x20e4,0x20e4,0x2125,0x1944,0x2124,0x2964,0x2124,0x1944,0x2945,0x2125,0x2104,0x2104,0x2904,0x2104,0x20e4,0x20e4,0x2904,0x2103,0x18e3,0x1903,0x18e3,0x2103,0x18c2,0x18a2,0x18a2,0x1081,0x1082,0x10a3,0x1882,0x0862,0x18a2,0x20c3,0x18c2,0x1082,0x0881,0x10c2,0x10a2,0x1062,0x1861,0x20a3,0x0862,0x1062,0x1082,0x1082,0x10a3,0x0082,0x0882,0x0861,0x0882,0x08a2,0x08c2,0x0882,0x1082,0x1081,0x0882,0x0861,0x1061,0x1062,0x0861,0x0861,0x0061,0x0041,0x0861,0x0861,0x0841,0x0841,0x0841,0x0862,0x1083,0x0841,0x0041,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x1042,0x0842,0x0842,0x0841,0x1082,0x0821,0x0021,0x0041,0x0841,0x0821,0x0841,0x0061,0x0041,0x0041,0x0861,0x0861,0x0841,0x0861,0x0861,0x0061,0x0862,0x0862,0x0861,0x0061,0x0061,0x0861,0x0861,0x1061,0x1082,0x08a3,0x0882,0x10a2,0x0883,0x10a2,0x18e2,0x10c2,0x2945,0x4206,0x4a88,0x52a9,0x5288,0x5a89,0x4aa8, +0xb5d6,0xdf3b,0x7d34,0x4a48,0x5aa9,0x5288,0x5287,0x4a47,0x3185,0x3207,0x3208,0x3a28,0x41e8,0x39e7,0x31e7,0x39e8,0x39e8,0x31a6,0x3185,0x2986,0x2986,0x2966,0x3186,0x2985,0x2986,0x3186,0x2966,0x21a6,0x2186,0x2986,0x3186,0x39a7,0x31a7,0x31a6,0x39c6,0x31a6,0x3186,0x3186,0x3166,0x29a6,0x29a7,0x3187,0x2986,0x3186,0x31a6,0x3186,0x31a7,0x3187,0x39a8,0x39c7,0x31a6,0x39c7,0x39e7,0x3a08,0x3a08,0x4228,0x4208,0x4207,0x39e8,0x39e8,0x4a08,0x4a29,0x4209,0x4a29,0x4a28,0x4a49,0x4209,0x4208,0x4a49,0x4249,0x4249,0x4a4a,0x4a6a,0x4a8a,0x4269,0x4249,0x526a,0x4aaa,0x5a8b,0x526a,0x4a6a,0x4a8a,0x528a,0x4a8a,0x4a8a,0x52aa,0x5aab,0x4aaa,0x4a6a,0x52ab,0x6aec,0x528b,0x52ab,0x52aa,0x52aa,0x52ab,0x52ab,0x52cb,0x52cb,0x5aeb,0x530c,0x52ab,0x5acb,0x5aec,0x5aec,0x52ec,0x52cb,0x52eb,0x632c,0x5b0c,0x5b0c,0x630c,0x5aec,0x5aeb,0x5b0b,0x5aea,0x5acb,0x5b0c,0x530c,0x52cb,0x5aeb,0x5aec,0x5aec,0x52cb,0x5aec,0x5aeb,0x5b0c,0x530c,0x52cb,0x5aec,0x5aeb,0x52cc,0x4acc,0x52cb,0x5acb,0x630c,0x5b0c,0x52cb,0x5acb,0x5aeb,0x5aeb,0x5aec,0x52cc,0x52cc,0x52ec,0x52cc,0x52ab,0x52cb,0x62eb,0x5acb,0x52cb,0x5aec,0x5aec,0x5acc,0x5acc,0x5aac,0x5acc,0x52ab,0x52ec,0x5acb,0x52ab,0x5acb,0x4a8b,0x5acb,0x5aab,0x5aab,0x4a6a,0x52cb,0x526b,0x528b,0x4aab,0x4a49,0x52aa,0x4a49,0x4a69,0x428a,0x426a,0x4a29,0x4a69,0x4269,0x4a6a,0x426a,0x4a8b,0x4229,0x4249,0x3a48,0x4249,0x4249,0x4a6a,0x3a28,0x4228,0x4228,0x4249,0x3a08,0x4209,0x4209,0x39e8,0x3208,0x3a28,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x31c7,0x39e7,0x31e8,0x31c7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c8,0x39c7,0x39a7,0x41a7,0x31a5,0x31c7,0x31a7,0x31a6,0x31c6,0x31a6,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x2945,0x2965,0x3166,0x3185,0x2986,0x2965,0x3166,0x2966,0x3186,0x2965,0x2965,0x2165,0x3145,0x2165,0x3165,0x2986,0x1965,0x2145,0x2945,0x2165,0x2145,0x2144,0x2945,0x2145,0x2924,0x2165,0x2124,0x2924,0x1924,0x1924,0x2145,0x2125,0x2125,0x2104,0x1925,0x2125,0x2905,0x2124,0x1904,0x2105,0x1905,0x2104,0x1903,0x2104,0x10e4,0x1103,0x1923,0x18e4,0x1904,0x20e4,0x1903,0x2103,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x10e3,0x1103,0x2103,0x18e3,0x1103,0x10e3,0x18e3,0x10c2,0x18c3,0x18a2,0x10c3,0x10e3,0x08c2,0x18c3,0x18c2,0x10a3,0x08a3,0x08a2,0x18c2,0x18c2,0x10a2,0x08a2,0x08a3,0x10c2,0x10c2,0x10a2,0x18e3,0x10c3,0x1923,0x4206,0x5289,0x5a89,0x52a9,0x5aa9,0x4a88, +0xbdf6,0xd75a,0x7d13,0x4a27,0x52a9,0x5a88,0x5288,0x4247,0x39a5,0x4227,0x3a29,0x3a08,0x41e8,0x3a07,0x3207,0x3a07,0x39e7,0x41e8,0x3a07,0x39e8,0x31e7,0x3208,0x39e7,0x39e7,0x3a08,0x3a08,0x39e8,0x4208,0x3a08,0x3228,0x3a08,0x41e9,0x41e8,0x3a08,0x4208,0x3a29,0x3a08,0x39e8,0x39e8,0x3a07,0x3208,0x4229,0x4228,0x3a07,0x3a08,0x4228,0x4248,0x4208,0x4208,0x4229,0x4249,0x3a29,0x3a49,0x4269,0x4249,0x4a89,0x4a6a,0x4a6a,0x4a49,0x4249,0x4269,0x4a49,0x4a6a,0x4aaa,0x4a69,0x4a8a,0x4a6a,0x4a8a,0x528a,0x528a,0x4a8b,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4aab,0x528b,0x528b,0x52ab,0x52ab,0x528b,0x4a8a,0x52ab,0x5aec,0x52ab,0x52cb,0x528a,0x5aec,0x5b0b,0x52cb,0x5acb,0x5aec,0x52ab,0x5acc,0x52cc,0x52ab,0x5aec,0x5aec,0x530c,0x5b0c,0x52cb,0x52cc,0x52cc,0x52ec,0x5b0c,0x5b0c,0x632c,0x5b0c,0x5b0c,0x5aec,0x5aec,0x5aeb,0x5b0c,0x530b,0x5b0b,0x5b2c,0x532c,0x5acc,0x62ec,0x52ec,0x5aec,0x630c,0x5aeb,0x5aeb,0x5b2c,0x52cb,0x52cb,0x52cc,0x5acc,0x52ec,0x4acb,0x4aab,0x52cb,0x5aeb,0x52ec,0x5aeb,0x62eb,0x5b0c,0x530b,0x5aeb,0x52aa,0x52cb,0x5aeb,0x52ec,0x5acb,0x52eb,0x5aeb,0x52ab,0x52ac,0x5aec,0x52ec,0x528a,0x52ab,0x5acc,0x52ab,0x4aab,0x4aaa,0x52ab,0x52cb,0x4aab,0x4aaa,0x4a69,0x52aa,0x528b,0x52ab,0x4aab,0x4aaa,0x526a,0x528a,0x52aa,0x4a6a,0x4a6a,0x426a,0x3a69,0x4a8a,0x4a29,0x4a6a,0x4a4a,0x3a49,0x4a69,0x4a4a,0x4a49,0x4229,0x3a29,0x4228,0x4249,0x4249,0x4a29,0x4229,0x4a08,0x4a48,0x4229,0x4208,0x3208,0x39e8,0x39e7,0x3a07,0x3a08,0x31e7,0x39c8,0x3a08,0x3a07,0x39c7,0x31c7,0x39c8,0x31c7,0x3208,0x31c7,0x39c7,0x31a7,0x39c8,0x3187,0x39a7,0x31a7,0x39a6,0x29c6,0x31c7,0x2186,0x3186,0x3186,0x3146,0x2986,0x3186,0x3166,0x3186,0x2986,0x2165,0x2965,0x2945,0x2985,0x2965,0x3165,0x2945,0x2144,0x2965,0x2964,0x3165,0x2145,0x2145,0x2145,0x2165,0x2165,0x2145,0x2145,0x2145,0x1944,0x2145,0x1924,0x2125,0x2144,0x2104,0x1925,0x1905,0x2105,0x2105,0x1904,0x1924,0x1104,0x1105,0x2105,0x1104,0x2125,0x20e4,0x1904,0x1903,0x2103,0x1904,0x18e4,0x18e4,0x18c5,0x18c4,0x10e4,0x18e4,0x18e3,0x18e4,0x10e3,0x10e3,0x18e3,0x08e4,0x08c2,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x18e4,0x18e3,0x18c2,0x18a2,0x10c2,0x10a3,0x08a3,0x10a2,0x18a2,0x10c3,0x08c2,0x10a2,0x1883,0x1082,0x10c2,0x18a3,0x08a2,0x10a2,0x0882,0x10a3,0x10a2,0x10c2,0x18c2,0x18e4,0x10c3,0x2144,0x41e6,0x4a88,0x5269,0x52a9,0x52a9,0x4287, +0xbdd6,0xd73a,0x74d3,0x4a47,0x52a8,0x5a88,0x4a68,0x4248,0x31c6,0x41e7,0x3a48,0x3a08,0x39e8,0x31e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x3a07,0x3a07,0x4207,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x3208,0x3228,0x3208,0x3208,0x3a08,0x3208,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x3a09,0x3a28,0x3a28,0x4228,0x4228,0x3a28,0x4a28,0x3a28,0x4229,0x4249,0x4269,0x4249,0x3a48,0x4269,0x4a69,0x4269,0x4269,0x426a,0x4a6a,0x4a89,0x4a6a,0x4269,0x4a8a,0x4289,0x4a8a,0x5269,0x4aaa,0x4a8a,0x428a,0x4a6a,0x528b,0x52cb,0x4a8a,0x4a8a,0x5acb,0x528a,0x52cb,0x52cb,0x52eb,0x4aaa,0x52cb,0x52cc,0x5acb,0x52ac,0x52cc,0x52ab,0x52ea,0x52eb,0x530c,0x52ca,0x5aca,0x62eb,0x5aaa,0x62ec,0x5b0b,0x5aec,0x532d,0x530d,0x530c,0x52eb,0x52cb,0x52cb,0x52ec,0x5aec,0x630c,0x630b,0x5aeb,0x52cb,0x52eb,0x52cb,0x630c,0x5b0c,0x632d,0x5b2d,0x5b0c,0x5aec,0x632c,0x52ec,0x5acb,0x62ec,0x5aec,0x5b0c,0x630c,0x5aeb,0x52ec,0x52ec,0x52ec,0x52ec,0x52eb,0x5aec,0x5aec,0x630c,0x5b0c,0x52ec,0x5acb,0x5acc,0x52ec,0x5aeb,0x5aab,0x5acb,0x5aeb,0x5aec,0x5aeb,0x5acb,0x5acc,0x5aed,0x52ac,0x5b0c,0x52ec,0x52cb,0x52cc,0x52ab,0x52ab,0x52ab,0x528b,0x4aaa,0x52ab,0x4a8b,0x4a8b,0x5a6b,0x4a6a,0x528b,0x528b,0x52ab,0x52ab,0x526a,0x528a,0x4a8a,0x4a8a,0x5249,0x4a69,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a6a,0x4249,0x4249,0x4229,0x4249,0x4a49,0x4a49,0x4229,0x4249,0x4249,0x4229,0x4209,0x4a09,0x4228,0x3a28,0x3a08,0x39e8,0x4208,0x39e7,0x39e7,0x39c7,0x41e8,0x39c8,0x31c8,0x31e7,0x39c7,0x31c7,0x29c7,0x31c7,0x39c7,0x39a7,0x31c7,0x3986,0x39c7,0x39c7,0x31c7,0x31a7,0x29a6,0x31a7,0x2986,0x2985,0x31a6,0x31a6,0x3166,0x3166,0x2986,0x2966,0x3146,0x3186,0x2965,0x2966,0x2944,0x2945,0x2965,0x3145,0x2965,0x2965,0x2165,0x2166,0x2965,0x2965,0x2144,0x2945,0x2145,0x2105,0x2945,0x1945,0x2145,0x1925,0x1924,0x1124,0x2125,0x1945,0x2105,0x1925,0x2125,0x1904,0x2105,0x1904,0x1104,0x1904,0x1904,0x1903,0x1104,0x1904,0x1904,0x18e4,0x1103,0x20e4,0x1104,0x10e3,0x18e4,0x18e4,0x18e4,0x10e4,0x18e3,0x18c4,0x10e4,0x18c4,0x10c4,0x10e2,0x18c4,0x08e2,0x18e3,0x08c3,0x18c4,0x10a3,0x18a3,0x08a3,0x08a3,0x10a3,0x18a3,0x08a3,0x0882,0x10a2,0x1082,0x08a3,0x08a3,0x08c2,0x18c3,0x18c3,0x10a3,0x18a2,0x08c2,0x0883,0x1082,0x18a2,0x0882,0x10c3,0x10a2,0x10c2,0x10c2,0x10e2,0x18e2,0x1943,0x3a06,0x52a8,0x5289,0x5289,0x52a8,0x4287, +0xbdd5,0xdf5b,0x74d2,0x4a47,0x5288,0x5288,0x4a88,0x4228,0x2986,0x39e7,0x3a28,0x3208,0x31e8,0x3a08,0x3a28,0x41e8,0x39e8,0x39e7,0x3a08,0x3208,0x39e8,0x39e8,0x41e7,0x41e7,0x3a07,0x39e7,0x4208,0x41e8,0x39e7,0x31e7,0x3a07,0x3207,0x3207,0x39e8,0x39e8,0x3a08,0x3208,0x3208,0x3a08,0x4208,0x3208,0x3a29,0x3a28,0x3a08,0x3a28,0x3208,0x4229,0x3a28,0x4249,0x4228,0x3a28,0x3228,0x4269,0x3a69,0x4248,0x4249,0x3a69,0x4249,0x4249,0x4a69,0x4a69,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4289,0x4a89,0x528b,0x4a8b,0x4a6a,0x4a69,0x4a8a,0x52aa,0x52aa,0x528b,0x42aa,0x4aab,0x526a,0x5aaa,0x4aaa,0x4aab,0x528b,0x52ab,0x52ab,0x5acb,0x52ab,0x5aec,0x52cc,0x5aeb,0x52cb,0x5aec,0x52aa,0x52cb,0x52cb,0x5acb,0x52cb,0x52eb,0x62ec,0x5aec,0x52ec,0x5acb,0x632c,0x5b0c,0x5aec,0x52ec,0x52eb,0x52cb,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x4aaa,0x5aec,0x5b2d,0x5b2c,0x5b2c,0x630c,0x632d,0x5b2c,0x5b0c,0x5b0c,0x632c,0x530c,0x5aec,0x5b0c,0x52cb,0x52eb,0x530b,0x5aeb,0x52cb,0x5aec,0x52ec,0x5aed,0x52cb,0x52ec,0x5aed,0x52cb,0x4acc,0x530c,0x52eb,0x52cb,0x62cb,0x5acb,0x5acb,0x52cb,0x5aab,0x5acb,0x52ec,0x52ab,0x5acb,0x52eb,0x5aeb,0x5acc,0x52eb,0x5aab,0x52ab,0x52ab,0x52ac,0x528b,0x528b,0x52ab,0x4aab,0x4a6b,0x526a,0x526a,0x5a8a,0x528b,0x4a6a,0x528a,0x4a49,0x4a6a,0x4a6a,0x4a49,0x428a,0x528a,0x4269,0x4249,0x4a6a,0x3a4a,0x4229,0x4a2a,0x424a,0x4249,0x4229,0x4229,0x4249,0x4249,0x4249,0x4a48,0x4a28,0x4248,0x4229,0x39e7,0x4208,0x4208,0x3a07,0x3a07,0x4208,0x39e7,0x31c7,0x3a07,0x39e8,0x39e8,0x39c7,0x39c7,0x31e7,0x39c7,0x39a6,0x39c6,0x39c7,0x31c6,0x31a7,0x2987,0x2986,0x31a6,0x29a6,0x21a5,0x29a6,0x3186,0x3186,0x3185,0x3185,0x2985,0x2966,0x2965,0x2965,0x2986,0x2966,0x2985,0x2965,0x2945,0x2165,0x2165,0x1185,0x2165,0x2165,0x2165,0x2165,0x2945,0x2944,0x2145,0x2145,0x2925,0x2144,0x2104,0x2125,0x2104,0x2124,0x2125,0x1905,0x1905,0x1925,0x2125,0x2124,0x1105,0x1104,0x1904,0x1904,0x2104,0x1905,0x18e4,0x1904,0x1904,0x10e4,0x18e4,0x20e4,0x2104,0x18e3,0x18e3,0x20c4,0x18e3,0x18c4,0x18e4,0x10c4,0x10e4,0x1103,0x18e3,0x10c3,0x18e3,0x10c4,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x08c3,0x08c3,0x08c2,0x08c2,0x10c2,0x18c3,0x10c2,0x18a3,0x18a2,0x08a3,0x08a3,0x08a3,0x10c3,0x0881,0x1082,0x0882,0x10a3,0x10a2,0x18c2,0x10c2,0x18e3,0x20c3,0x1923,0x31e6,0x4a88,0x5289,0x5a89,0x6288,0x4a47, +0xbdd6,0xd75b,0x6cb2,0x4267,0x52a8,0x5288,0x4a68,0x4248,0x2925,0x4207,0x3a49,0x3207,0x3208,0x3a07,0x39e8,0x39e7,0x39e7,0x39e8,0x3208,0x3208,0x3a08,0x31e8,0x39e8,0x39c8,0x3a07,0x3a08,0x31c7,0x39a8,0x39e8,0x31e8,0x41e8,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31c7,0x4208,0x4a09,0x4a07,0x3208,0x3a28,0x3a28,0x3a28,0x4207,0x3a08,0x4208,0x3a29,0x3a08,0x3a07,0x3a28,0x3a08,0x4229,0x4229,0x4268,0x4289,0x426a,0x426a,0x4249,0x4248,0x4a69,0x4a6a,0x426a,0x428a,0x4a6a,0x4a49,0x4a69,0x4289,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x52aa,0x52ab,0x4aaa,0x4a8a,0x4aab,0x52ab,0x5acb,0x52ab,0x52eb,0x52ab,0x4a8a,0x52cb,0x52ab,0x52ab,0x5aeb,0x5aec,0x5aec,0x52cb,0x52cb,0x52cb,0x52ec,0x530c,0x52eb,0x52cb,0x52eb,0x5aeb,0x5aeb,0x5b0d,0x5b0c,0x5acb,0x630c,0x62ec,0x6b0c,0x630c,0x530b,0x5b0b,0x5b0c,0x52ab,0x52ec,0x52ec,0x52ab,0x5aed,0x530c,0x5aec,0x52ec,0x5aeb,0x632d,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x5aeb,0x62eb,0x5aeb,0x530b,0x532b,0x52eb,0x5acb,0x5aeb,0x5aec,0x52ec,0x52ec,0x52ec,0x530c,0x52cb,0x5aec,0x5aec,0x5b2d,0x5b0c,0x52eb,0x52eb,0x5b0c,0x630c,0x5acb,0x62ac,0x5aeb,0x52ab,0x5acb,0x5acb,0x5acb,0x5b0b,0x52eb,0x52ab,0x5a8b,0x52cc,0x528b,0x4a8b,0x528b,0x528b,0x5a8b,0x528b,0x528a,0x528b,0x526b,0x528b,0x4a8b,0x4a8a,0x528b,0x4acb,0x52aa,0x52a9,0x526b,0x4a69,0x4a69,0x4a69,0x424a,0x426a,0x3a69,0x4a69,0x4229,0x424a,0x3a49,0x4249,0x4208,0x4a49,0x4228,0x4a49,0x4a49,0x4229,0x4249,0x4249,0x4208,0x3a08,0x4208,0x4208,0x4207,0x39c7,0x39e8,0x3a08,0x39c7,0x39c8,0x39e8,0x39e8,0x3a07,0x31e7,0x31c7,0x31c6,0x3187,0x3187,0x31c6,0x31a7,0x3987,0x3186,0x31a6,0x31a6,0x21a6,0x2186,0x2186,0x2166,0x3166,0x3186,0x3186,0x2965,0x2986,0x2986,0x2185,0x2965,0x2945,0x2186,0x2165,0x2185,0x2165,0x3166,0x3166,0x3146,0x2945,0x3145,0x3165,0x2945,0x2945,0x2965,0x2145,0x2145,0x1925,0x2105,0x2105,0x1925,0x2124,0x2125,0x1925,0x1925,0x2105,0x1924,0x2124,0x2105,0x2105,0x1904,0x2125,0x2105,0x20e4,0x1925,0x2104,0x18e4,0x1904,0x18e4,0x18e3,0x20e4,0x20e4,0x18c4,0x10e3,0x18c3,0x18c3,0x18e4,0x10e4,0x1103,0x18e3,0x18a3,0x18c3,0x18c3,0x10c3,0x10e3,0x10a2,0x18c2,0x18c3,0x10c3,0x10a3,0x18c2,0x18a3,0x10a3,0x10c3,0x08e2,0x10a2,0x10a3,0x10c2,0x18a2,0x18a1,0x20a2,0x10a3,0x00a3,0x08a3,0x10a3,0x10a3,0x10a3,0x10c2,0x10a1,0x10c2,0x18a3,0x10a2,0x10e3,0x1903,0x1924,0x29c6,0x5289,0x4a88,0x52a8,0x5ac8,0x4247, +0xc616,0xdf5b,0x7492,0x4a67,0x4aa8,0x52a8,0x4a88,0x3a27,0x3986,0x4227,0x3208,0x31e7,0x3207,0x3a07,0x3208,0x39e7,0x39c7,0x3a08,0x3a07,0x3a08,0x39e8,0x31e8,0x39e7,0x39e7,0x31e6,0x39e7,0x39c7,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4208,0x3a28,0x3a07,0x3228,0x3a28,0x3228,0x39e8,0x41e7,0x4228,0x3a28,0x3a29,0x3248,0x3a28,0x4229,0x4209,0x4248,0x422a,0x3a48,0x4249,0x424a,0x4269,0x4269,0x4a48,0x4a6a,0x4a4a,0x4a6a,0x4249,0x4a6a,0x526a,0x4a8a,0x42aa,0x528a,0x526a,0x4a6a,0x4a8a,0x4a8a,0x4a8a,0x528b,0x4a8a,0x52aa,0x4acb,0x52aa,0x52aa,0x52ab,0x52aa,0x52cb,0x52cb,0x4aab,0x4aaa,0x52aa,0x52ab,0x4aaa,0x5acb,0x5aec,0x52cb,0x52cb,0x52ab,0x52ec,0x5aec,0x5aeb,0x5aca,0x5aeb,0x5b2c,0x532d,0x5aeb,0x5acb,0x5b0c,0x5b0c,0x630d,0x5b0c,0x52aa,0x630c,0x5aec,0x5aec,0x52cb,0x630c,0x5b0c,0x62eb,0x5aeb,0x5aeb,0x5aec,0x5aec,0x5b0c,0x530c,0x5aed,0x5aec,0x530c,0x52cb,0x5aec,0x5b0c,0x630c,0x5b0c,0x62ec,0x5acc,0x5acb,0x52cc,0x5aec,0x5aec,0x630c,0x5b2c,0x632c,0x5b2c,0x5b2d,0x5b2c,0x5aec,0x5aeb,0x52cb,0x5acc,0x62ec,0x52cb,0x5aeb,0x62ec,0x52ab,0x52cc,0x52cc,0x52ab,0x5aec,0x4acb,0x5acb,0x5aac,0x52cc,0x52ab,0x5acb,0x52ab,0x52ab,0x526b,0x526a,0x526a,0x528a,0x4a8a,0x528b,0x528b,0x4a8b,0x4a6a,0x4a8a,0x4a8a,0x528a,0x528b,0x526a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x4a49,0x4a6a,0x5249,0x4a49,0x4249,0x4a4a,0x4a49,0x4229,0x4a48,0x4228,0x4a69,0x3a07,0x4248,0x4208,0x3a08,0x3a08,0x4228,0x41e7,0x39e7,0x39e8,0x41e8,0x39e8,0x41e8,0x41c8,0x41e8,0x39e7,0x39c8,0x39e8,0x31c7,0x31a7,0x39a7,0x31a7,0x3187,0x39a7,0x3186,0x31c6,0x31e6,0x3966,0x3167,0x2966,0x2986,0x2966,0x3187,0x2186,0x2985,0x3166,0x2985,0x2165,0x2166,0x3966,0x2966,0x2185,0x2985,0x2965,0x2945,0x2965,0x2165,0x2945,0x3145,0x2145,0x2925,0x2945,0x3126,0x2925,0x2125,0x1946,0x1925,0x2145,0x1925,0x2124,0x2925,0x2145,0x1144,0x1925,0x1905,0x1925,0x1925,0x2104,0x1104,0x18e5,0x1904,0x2105,0x1904,0x20e4,0x1904,0x1104,0x18e4,0x18e4,0x2104,0x18e3,0x18e4,0x18c3,0x20e3,0x20e3,0x1903,0x1903,0x10e3,0x10e3,0x18a4,0x10e3,0x10e3,0x18e3,0x18c3,0x10c3,0x10c2,0x18c3,0x18a3,0x10e3,0x10c3,0x18a3,0x08a2,0x10c3,0x08e3,0x08a3,0x10a3,0x10a2,0x10c3,0x10c2,0x18a3,0x18a3,0x08c2,0x08a2,0x1062,0x1063,0x10a2,0x10a2,0x10a2,0x08a2,0x18a2,0x20c2,0x18e3,0x18c3,0x2125,0x31e5,0x4a88,0x4a89,0x5289,0x52a8,0x4227, +0xbdf6,0xdf7c,0x7c92,0x4a68,0x4aa8,0x4a88,0x4a68,0x4227,0x39a6,0x4208,0x3a28,0x3208,0x31e7,0x3208,0x3208,0x39e7,0x41e7,0x31e7,0x31e7,0x39e8,0x3a07,0x3207,0x39e7,0x39e7,0x39e8,0x39e8,0x31c7,0x39e8,0x41e8,0x39e7,0x31c6,0x3a08,0x4208,0x4207,0x3a07,0x3a08,0x3a08,0x3a08,0x3208,0x4207,0x4208,0x4208,0x3a28,0x3a08,0x3a08,0x3a28,0x3a07,0x3a48,0x3a49,0x4249,0x4249,0x4229,0x4248,0x424a,0x3a49,0x3a49,0x4a69,0x4a69,0x4269,0x426a,0x426a,0x4a6a,0x424a,0x4269,0x4a69,0x4249,0x4269,0x4269,0x4a6a,0x528a,0x526a,0x5289,0x528a,0x52ab,0x4a8a,0x428a,0x4aaa,0x52ca,0x52ab,0x52aa,0x52ca,0x4acb,0x5aeb,0x5acb,0x62cc,0x52cb,0x52ca,0x52cb,0x52ec,0x5acc,0x5b0c,0x5acb,0x52eb,0x4aab,0x52ec,0x5b0c,0x5aeb,0x530b,0x5aeb,0x5b2c,0x532c,0x5aec,0x5b0c,0x630d,0x630c,0x5b0c,0x5aec,0x52ab,0x5acb,0x5aec,0x5aec,0x5b0c,0x630c,0x5aeb,0x6aec,0x630c,0x5aeb,0x5aec,0x530c,0x5aeb,0x5aec,0x5aec,0x52cb,0x5b0c,0x5aeb,0x630c,0x5aec,0x5b0c,0x52eb,0x52cc,0x5acc,0x5acb,0x52ec,0x630c,0x5b0c,0x5b0c,0x5aec,0x630c,0x52cb,0x5acc,0x5acc,0x52ab,0x5aeb,0x5acb,0x52ab,0x5aec,0x5aec,0x5acb,0x5aec,0x52cc,0x5b0c,0x5aec,0x52eb,0x52cb,0x4acb,0x52cc,0x5aec,0x5acb,0x52cc,0x5aab,0x528a,0x526a,0x5aab,0x5a8b,0x4a6a,0x526a,0x52aa,0x52ab,0x528b,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x428a,0x4269,0x4249,0x4a49,0x4a49,0x5268,0x4a29,0x4a29,0x5229,0x4a49,0x4a49,0x4248,0x4249,0x4a49,0x4208,0x4228,0x4208,0x4208,0x3208,0x3a28,0x3a08,0x41e8,0x31e8,0x39e8,0x31e7,0x39e7,0x39a7,0x41e8,0x3187,0x39c7,0x39c7,0x31a6,0x31c7,0x31a7,0x31a7,0x29a7,0x3187,0x3186,0x29a6,0x2987,0x3185,0x3186,0x3186,0x3186,0x3185,0x3166,0x2986,0x3186,0x3166,0x2986,0x3166,0x1966,0x39a6,0x2986,0x2965,0x2165,0x2945,0x3145,0x2165,0x2165,0x2165,0x2945,0x2144,0x2164,0x2165,0x2146,0x2125,0x2145,0x2125,0x2145,0x2164,0x2145,0x2925,0x2905,0x2145,0x1925,0x1924,0x2104,0x1925,0x2104,0x1904,0x1904,0x18e4,0x20e4,0x1904,0x2104,0x20e4,0x18e3,0x18e4,0x2105,0x18e4,0x10e4,0x18e4,0x18e4,0x18c4,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x08e2,0x18c3,0x10c4,0x08c3,0x20c3,0x18c3,0x10e3,0x10e3,0x10c3,0x10e3,0x18e3,0x18c4,0x18c3,0x18c2,0x18a3,0x10c3,0x08a2,0x10e3,0x10e3,0x10c3,0x10e2,0x10c1,0x10c2,0x08e2,0x18a2,0x1083,0x1082,0x10a2,0x08a3,0x0882,0x10c2,0x10a3,0x20a3,0x20e4,0x18c4,0x2104,0x39e6,0x4a88,0x4a69,0x5269,0x5a89,0x4207, +0xc5f7,0xe79d,0x7491,0x4a67,0x5a88,0x5288,0x4a68,0x4207,0x39c6,0x4a28,0x3a28,0x3208,0x39e8,0x3a08,0x3a08,0x3a07,0x39e7,0x31e8,0x39e8,0x3208,0x3a07,0x4208,0x41e7,0x31e7,0x39e8,0x41e8,0x4208,0x39e8,0x4208,0x4207,0x39e7,0x4208,0x4208,0x4208,0x3208,0x4209,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4a28,0x4228,0x3a28,0x3208,0x4228,0x4228,0x4228,0x4269,0x4229,0x4a49,0x3a49,0x4249,0x4249,0x4248,0x4a49,0x4a6a,0x426a,0x4269,0x4a49,0x4a6a,0x4269,0x4a89,0x4a8a,0x4269,0x4a69,0x4a8a,0x528a,0x528b,0x52ab,0x52ab,0x4a8a,0x4a49,0x528a,0x5aaa,0x5aca,0x52eb,0x52cb,0x52cb,0x52ab,0x5acb,0x5aeb,0x62cb,0x52eb,0x5b0b,0x530b,0x52eb,0x5acb,0x5acb,0x5acb,0x52eb,0x52ec,0x5aec,0x52ec,0x5aec,0x52cc,0x52cb,0x5aec,0x52eb,0x52cb,0x5b0b,0x5b2d,0x5b0c,0x5b0b,0x52ec,0x5aec,0x5aec,0x5aac,0x5acb,0x5aec,0x5aec,0x5b0c,0x5b2d,0x5b2d,0x634c,0x632c,0x5acb,0x630c,0x52ec,0x5aec,0x52ec,0x62ec,0x5b0b,0x5b0b,0x5aec,0x5acc,0x530b,0x5b0c,0x5acb,0x52ca,0x530c,0x530b,0x5aec,0x5acb,0x52eb,0x530c,0x52ec,0x5aec,0x62ed,0x5aeb,0x5aec,0x5aeb,0x5acb,0x5aec,0x52eb,0x5aec,0x5aeb,0x52cc,0x5aec,0x5aeb,0x52cb,0x52cb,0x52ab,0x62eb,0x632c,0x5aeb,0x5acb,0x52cb,0x5aab,0x52ab,0x528b,0x4a6a,0x4a8a,0x528a,0x526a,0x52ab,0x4a6b,0x4a69,0x4a8a,0x4a6a,0x4a6a,0x4a8a,0x528b,0x428a,0x4a6a,0x5269,0x4a6a,0x4a4a,0x4249,0x4a4a,0x4249,0x4a49,0x4a49,0x4a49,0x4a49,0x4228,0x4249,0x4208,0x4a49,0x4a08,0x4a6a,0x4229,0x3a08,0x3a28,0x31e8,0x39e8,0x3a08,0x41e8,0x41c7,0x39e8,0x31c7,0x31e7,0x39c8,0x39e8,0x31e7,0x31e7,0x31a7,0x39c7,0x31a7,0x31a6,0x31a7,0x39a6,0x3987,0x3186,0x31a6,0x2986,0x3987,0x2986,0x3166,0x3986,0x31a6,0x31a7,0x2986,0x2986,0x3165,0x3985,0x3146,0x2966,0x2985,0x2165,0x2166,0x1925,0x2145,0x2145,0x2145,0x3165,0x2945,0x2944,0x2164,0x2165,0x1965,0x1965,0x2165,0x2125,0x2145,0x1924,0x2145,0x1925,0x1945,0x1924,0x1925,0x2124,0x2905,0x20e4,0x2104,0x2125,0x1125,0x1904,0x10e4,0x20e5,0x1905,0x18e4,0x2104,0x18e4,0x20e3,0x1903,0x18e4,0x10e4,0x18e3,0x18e5,0x18c4,0x10c3,0x18e3,0x20e4,0x18c4,0x18e3,0x10e3,0x08e3,0x10c4,0x08e4,0x10c3,0x10c4,0x10e2,0x18c3,0x10c2,0x18c4,0x20e3,0x18c3,0x10e3,0x20c2,0x18a2,0x10c3,0x08c2,0x10c2,0x08a3,0x10a3,0x10a2,0x18a2,0x10a2,0x10c3,0x10c3,0x08c3,0x0883,0x10c3,0x08a3,0x08a3,0x08c2,0x08c2,0x18c2,0x20e4,0x18e4,0x1903,0x31e6,0x4267,0x5288,0x4a89,0x4a89,0x3a06, +0xc616,0xe79d,0x6c70,0x4a88,0x52a8,0x5288,0x4a68,0x3a27,0x39a6,0x3a07,0x4228,0x3a08,0x41e7,0x3a08,0x39e8,0x3a28,0x39e7,0x31c8,0x31c8,0x39e8,0x31e7,0x3208,0x39e7,0x39c7,0x41e7,0x41e8,0x39e8,0x3a08,0x3a07,0x3a07,0x39e7,0x3a08,0x4208,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4228,0x4a28,0x4228,0x4a29,0x3a29,0x4249,0x3a48,0x4228,0x4209,0x4229,0x4248,0x4a49,0x4248,0x4249,0x4269,0x4a49,0x4249,0x426a,0x3a29,0x4a6a,0x4269,0x4a49,0x4a69,0x4a8a,0x4a4a,0x428a,0x528b,0x526b,0x528a,0x5269,0x5aab,0x528b,0x52aa,0x4aaa,0x4aab,0x428b,0x52ab,0x5acb,0x52ac,0x52ab,0x52aa,0x52ab,0x52ab,0x5aeb,0x52aa,0x52cb,0x5acb,0x5b0b,0x5aeb,0x52eb,0x52eb,0x5aec,0x52cb,0x5acb,0x5aec,0x52eb,0x62ec,0x5b0c,0x52ec,0x5b2c,0x4aeb,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b0c,0x5aeb,0x5b2c,0x5b0d,0x5aec,0x52ac,0x5acc,0x530b,0x5aeb,0x52eb,0x5b0b,0x634d,0x5b2c,0x5b2d,0x5b2c,0x530c,0x632c,0x632c,0x530b,0x530c,0x5b0c,0x530c,0x5b0c,0x5aec,0x52cb,0x52eb,0x530c,0x52eb,0x52cb,0x5aec,0x5aec,0x52cc,0x52eb,0x5b0c,0x5aeb,0x5b0d,0x52ec,0x5b0c,0x5b2c,0x5b0c,0x5aeb,0x630c,0x5aec,0x5b0c,0x52cc,0x5aeb,0x52cb,0x52cb,0x5aeb,0x52ca,0x4aab,0x4a8a,0x52cb,0x5aeb,0x5acb,0x52ac,0x5aac,0x5a8b,0x528a,0x4a6a,0x426a,0x4a8a,0x4a8a,0x526b,0x526a,0x4a8b,0x4a6a,0x4a6a,0x4a8a,0x4289,0x52ab,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4249,0x3a49,0x4249,0x4249,0x4229,0x4229,0x4248,0x41e8,0x4228,0x3a08,0x3a29,0x31e8,0x3a09,0x3a08,0x3a28,0x3a28,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39a7,0x31c7,0x39c8,0x41e7,0x31c7,0x31a7,0x39c7,0x31a7,0x3187,0x3187,0x39a6,0x31a6,0x3186,0x2986,0x2985,0x31a7,0x3186,0x3187,0x2986,0x39a6,0x3186,0x39a6,0x3186,0x3185,0x39a6,0x3165,0x3965,0x2145,0x1965,0x1965,0x2145,0x2945,0x2145,0x2185,0x3165,0x2944,0x2965,0x2965,0x2946,0x2185,0x2145,0x2145,0x2125,0x2125,0x2125,0x2145,0x2125,0x1925,0x1925,0x20e5,0x2904,0x2905,0x1904,0x1925,0x1924,0x1105,0x1905,0x1905,0x1125,0x1905,0x1903,0x1904,0x1924,0x2124,0x1903,0x1103,0x1904,0x10e3,0x1103,0x18c4,0x10e4,0x1904,0x18c4,0x18e4,0x08e4,0x10e4,0x08c2,0x18e4,0x18c3,0x18e3,0x10c4,0x08c3,0x18c3,0x10c3,0x18e3,0x08e3,0x08c3,0x18c3,0x20c2,0x10c3,0x08a3,0x10c2,0x08c3,0x18c2,0x18c3,0x18c2,0x18a3,0x10a2,0x08a2,0x10a2,0x08a2,0x10c2,0x08a2,0x10c3,0x10a2,0x10a2,0x10a2,0x08a2,0x18e4,0x18e3,0x18e3,0x31e5,0x4288,0x4a88,0x5289,0x5289,0x3a06, +0xc616,0xe7bd,0x6c50,0x4a88,0x52a9,0x5288,0x4a88,0x3a47,0x2985,0x3227,0x3228,0x3a08,0x39e8,0x3a07,0x39e8,0x3a08,0x39e7,0x39e7,0x3208,0x39e8,0x3207,0x3208,0x39c8,0x39c8,0x39e7,0x4209,0x39e8,0x3a08,0x3a08,0x4207,0x3a07,0x39e8,0x39e8,0x3a08,0x41e8,0x4208,0x3a08,0x3a08,0x4228,0x4249,0x4227,0x3a07,0x3a08,0x4249,0x3a48,0x4229,0x4228,0x4228,0x4a28,0x4a49,0x4249,0x4249,0x4a49,0x4a49,0x4a49,0x4a8a,0x4a69,0x5269,0x4a6a,0x4a49,0x4a6a,0x528a,0x4a6a,0x428a,0x528a,0x528a,0x5aaa,0x4a89,0x4a69,0x528a,0x52ab,0x52cb,0x52aa,0x52ab,0x528b,0x52ab,0x52ec,0x528b,0x52cb,0x52cb,0x5acb,0x5aec,0x52cb,0x4acc,0x52cb,0x4a8a,0x52ab,0x52ab,0x52cb,0x52cb,0x5aec,0x5aec,0x5b0c,0x62eb,0x5aeb,0x5b2c,0x5aeb,0x52eb,0x530c,0x5b2c,0x5aed,0x5aed,0x5acb,0x5aec,0x5aab,0x632c,0x630c,0x5aec,0x5aec,0x62ec,0x5aec,0x630c,0x5b2c,0x5b0c,0x630d,0x5b0d,0x5b2c,0x630c,0x5b2d,0x5b0c,0x5b0c,0x530c,0x5b0c,0x630d,0x5b2d,0x5b0c,0x5b2c,0x5b2d,0x636c,0x5b2c,0x52cb,0x52ec,0x5aec,0x52ab,0x5b0c,0x52cc,0x5b0c,0x5b2c,0x632c,0x52eb,0x5aeb,0x630d,0x5b0c,0x52cb,0x52ec,0x5acb,0x5aec,0x52cc,0x52cc,0x52ec,0x52cc,0x5aec,0x630c,0x5b0c,0x5aec,0x5acc,0x5aab,0x52cb,0x52cb,0x52ab,0x5acb,0x52ab,0x4a8b,0x4a8b,0x4aaa,0x4aab,0x528b,0x5269,0x528a,0x4a6a,0x4a6a,0x4a8a,0x4249,0x528a,0x526a,0x524a,0x4a6a,0x4a6a,0x426a,0x4a49,0x4a49,0x4249,0x3a69,0x3a69,0x4a49,0x4249,0x4209,0x422a,0x4a28,0x4a69,0x4a69,0x3a28,0x3a29,0x4229,0x4229,0x4207,0x4208,0x4208,0x3a08,0x3a07,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39c7,0x31c7,0x31a6,0x39c7,0x31c7,0x31c7,0x39c7,0x39a7,0x39c8,0x31a6,0x31a7,0x31a6,0x2985,0x31c6,0x31a6,0x31a7,0x3186,0x3186,0x3186,0x3186,0x3186,0x3165,0x3166,0x3145,0x3166,0x2166,0x2966,0x2965,0x2165,0x2165,0x2965,0x2946,0x1965,0x2945,0x2945,0x2964,0x1945,0x2144,0x2145,0x2945,0x2145,0x2945,0x2924,0x1945,0x1965,0x1924,0x20e4,0x2125,0x1945,0x1944,0x2125,0x1924,0x1924,0x2145,0x1905,0x1105,0x1904,0x2104,0x18e4,0x18e4,0x1104,0x1104,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x1104,0x18e4,0x18e4,0x18c3,0x08e3,0x10e4,0x10e4,0x18e3,0x10c3,0x18e3,0x18c4,0x18e4,0x18e4,0x10c3,0x10c3,0x08c3,0x10a2,0x18c3,0x18e2,0x10c2,0x18c3,0x18c3,0x10e3,0x18e2,0x10e3,0x10c2,0x10c3,0x10c3,0x10a3,0x10c3,0x00c3,0x08a2,0x10a3,0x08a2,0x08a2,0x10c2,0x10c3,0x10c3,0x1904,0x18e3,0x1902,0x39e6,0x4268,0x5289,0x5a89,0x5aa9,0x3a27, +0xc617,0xe7bd,0x6c50,0x4a88,0x5289,0x5288,0x5268,0x4227,0x39a6,0x3a47,0x3a48,0x3a07,0x39e7,0x3207,0x3208,0x3a08,0x39e7,0x39e7,0x3a08,0x3a07,0x3a08,0x39e7,0x41e7,0x39e7,0x31e8,0x3a09,0x3a08,0x3208,0x4209,0x4208,0x3a08,0x3a08,0x4228,0x3a29,0x3a07,0x4208,0x39e8,0x3228,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4208,0x4a29,0x4229,0x4229,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x4269,0x4269,0x528a,0x528a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a69,0x4a8a,0x528a,0x5a8a,0x528b,0x528b,0x528a,0x4a89,0x52aa,0x5aca,0x528a,0x4aaa,0x5acb,0x52aa,0x5aeb,0x5aec,0x52cb,0x5acb,0x5acb,0x5aeb,0x5aec,0x52eb,0x52cb,0x5acc,0x5aec,0x5acc,0x6aed,0x5b0c,0x62ec,0x630c,0x5acb,0x5aec,0x5aec,0x530b,0x52eb,0x5aeb,0x632c,0x630c,0x5aec,0x52ec,0x5aec,0x5aec,0x630c,0x5b0d,0x5aec,0x5b2c,0x5b2d,0x630c,0x5aec,0x630d,0x5b2c,0x5b2c,0x6b4d,0x5aec,0x5aec,0x630c,0x5b2c,0x5b2c,0x630c,0x5b0c,0x52cb,0x630d,0x5aec,0x630c,0x5b0c,0x5aec,0x5b0c,0x632d,0x630c,0x5b2c,0x5b0d,0x632d,0x632c,0x62ed,0x632d,0x5b6d,0x634d,0x5b0c,0x62ec,0x630d,0x630d,0x5aec,0x62ec,0x62ec,0x630d,0x630d,0x52cc,0x52ec,0x5aec,0x5acc,0x52ec,0x5b0c,0x52cb,0x52ac,0x4aab,0x4a8a,0x52cb,0x52ab,0x52cb,0x52ab,0x52ab,0x52ab,0x52ab,0x4a8b,0x4a4b,0x4a8a,0x526a,0x4a6a,0x526b,0x528a,0x4a8a,0x526a,0x524a,0x4a6a,0x4a6a,0x4a49,0x526a,0x4a6a,0x526a,0x4a69,0x4a6a,0x4269,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4a49,0x4a69,0x4249,0x4229,0x4a49,0x4249,0x4228,0x4228,0x41e8,0x4208,0x4208,0x3a28,0x39e8,0x39e8,0x39c7,0x41e8,0x39e8,0x39c7,0x31c7,0x39c7,0x39e7,0x31c7,0x39e7,0x29c7,0x29a7,0x29a7,0x31a7,0x31a6,0x2985,0x31c6,0x31c7,0x31a6,0x39a6,0x3186,0x2946,0x29a6,0x31a6,0x3186,0x3185,0x3186,0x2986,0x2966,0x2966,0x2965,0x2986,0x2185,0x2165,0x3166,0x3145,0x2945,0x3146,0x2945,0x2165,0x2965,0x2965,0x2145,0x2925,0x2145,0x1145,0x2144,0x2145,0x1945,0x1924,0x2104,0x2904,0x2104,0x1904,0x2104,0x2905,0x2124,0x1924,0x2905,0x2105,0x2104,0x2905,0x20e5,0x2104,0x10e4,0x1104,0x20e4,0x18e4,0x18e3,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x10e3,0x10e3,0x18c4,0x18e4,0x18c4,0x18e4,0x10e3,0x10c4,0x18c4,0x18c3,0x08c3,0x10e3,0x18c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x08e2,0x08c2,0x18c2,0x10a3,0x0883,0x08c2,0x08c3,0x08c2,0x00c2,0x08a2,0x08c2,0x10c2,0x20c2,0x10e4,0x1103,0x08e3,0x39c6,0x4a67,0x5288,0x5aa9,0x5aa9,0x41e6, +0xc616,0xe7bd,0x6410,0x4a88,0x52a9,0x5288,0x4a68,0x3a07,0x31a6,0x3a28,0x3a28,0x3a08,0x39e7,0x3208,0x3a07,0x39e8,0x31e7,0x31e7,0x3207,0x3a07,0x31a7,0x39e8,0x3a07,0x3a07,0x3a08,0x3a08,0x39e8,0x31e8,0x31e8,0x3207,0x39e8,0x4208,0x4228,0x3a08,0x4208,0x4229,0x3a08,0x3a08,0x4208,0x4208,0x3a08,0x3a28,0x3a28,0x4208,0x4249,0x4209,0x4249,0x4269,0x4a49,0x4249,0x4249,0x3a49,0x4249,0x4a49,0x4269,0x4269,0x4a69,0x4aaa,0x4a8a,0x426a,0x4a8a,0x4a6a,0x428a,0x4a69,0x4a4a,0x526a,0x4a8b,0x42ab,0x4aab,0x52ab,0x4aaa,0x528a,0x52ab,0x528a,0x52aa,0x5acb,0x52aa,0x52cb,0x5aeb,0x52cb,0x5acb,0x5b0c,0x52ec,0x52cb,0x52cc,0x5acb,0x52cb,0x52ec,0x5aec,0x52cb,0x52eb,0x52eb,0x5b0c,0x630d,0x5aec,0x62ec,0x62ec,0x62cc,0x62eb,0x5b0c,0x52eb,0x5b2c,0x5b0c,0x632c,0x632c,0x5b2c,0x530c,0x632d,0x62ec,0x630d,0x5b0c,0x630c,0x632c,0x634d,0x5b0c,0x5b2c,0x5b0c,0x632d,0x5b2d,0x5b2d,0x630c,0x634d,0x530c,0x5b0b,0x5b0c,0x5b0c,0x5aec,0x530d,0x632e,0x632d,0x6b2c,0x632c,0x632c,0x634d,0x62ec,0x5b0c,0x5b2c,0x5b2c,0x5b2d,0x632c,0x630d,0x52ec,0x52ab,0x5acb,0x62cc,0x5aec,0x62ec,0x5acc,0x52cb,0x52cb,0x5aec,0x52eb,0x5aeb,0x5aeb,0x530c,0x52cc,0x52ec,0x5acb,0x52ab,0x52ab,0x5aab,0x52ab,0x52ab,0x52aa,0x52ab,0x4aab,0x526a,0x4a8a,0x428a,0x528a,0x528b,0x4a4a,0x4249,0x528a,0x528b,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x528a,0x528a,0x528a,0x526a,0x528a,0x4a6a,0x4a69,0x4269,0x4a69,0x4a69,0x4229,0x4229,0x4269,0x4228,0x4a28,0x4228,0x3a08,0x3a09,0x41e8,0x41e8,0x39e8,0x3208,0x3a08,0x39e8,0x31e8,0x39e8,0x41e8,0x41e8,0x39e7,0x31c7,0x31e7,0x39c7,0x39c7,0x31c6,0x31a7,0x31c7,0x31a7,0x39c6,0x31c6,0x31c6,0x39c7,0x39a6,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2986,0x2186,0x2186,0x2185,0x2966,0x2945,0x2145,0x2965,0x3146,0x2165,0x3165,0x2966,0x2145,0x2145,0x2965,0x3165,0x2945,0x2144,0x2944,0x1925,0x2926,0x1945,0x2145,0x1924,0x2124,0x2105,0x1125,0x1944,0x1944,0x1944,0x1925,0x2104,0x1124,0x1924,0x2125,0x1944,0x1905,0x20e5,0x2104,0x1903,0x1923,0x1904,0x10e3,0x18e4,0x10e4,0x18e3,0x10e4,0x10e4,0x18e4,0x18e4,0x18e3,0x0903,0x1103,0x20c4,0x20c4,0x10e4,0x10e4,0x10e4,0x10e4,0x10e3,0x18e3,0x18e2,0x18e3,0x18c3,0x18c3,0x18c3,0x20c2,0x10c2,0x08e2,0x10a4,0x10c3,0x08c3,0x10c3,0x20a3,0x10a3,0x10a3,0x10a3,0x00c2,0x10c3,0x08a3,0x10a3,0x10c2,0x10a2,0x18c2,0x10e4,0x1104,0x08e3,0x39c6,0x5287,0x5288,0x52a9,0x5aa9,0x39c5, +0xc5f6,0xe7bd,0x5c10,0x5289,0x5aa9,0x5288,0x5288,0x3a47,0x31c7,0x4228,0x3a29,0x3a08,0x3a08,0x3a08,0x3a28,0x3a07,0x2a07,0x31e7,0x3a07,0x4207,0x4208,0x39e8,0x3a08,0x3a08,0x3a07,0x3a08,0x39c7,0x39e8,0x3a08,0x3a08,0x3228,0x3a08,0x4229,0x4209,0x4228,0x3a48,0x3a08,0x39e8,0x4228,0x4228,0x4229,0x4229,0x4249,0x3a08,0x3a28,0x39e8,0x4269,0x4249,0x4229,0x4a49,0x4249,0x4269,0x5249,0x4a6a,0x4a8a,0x4a4a,0x4a6a,0x528a,0x4aaa,0x4a6a,0x4aaa,0x528a,0x4aaa,0x4a8a,0x4a8a,0x528b,0x528b,0x528a,0x4aaa,0x52aa,0x52aa,0x52ab,0x5acb,0x5a8b,0x5aab,0x5aab,0x52ab,0x52cb,0x5acb,0x5acc,0x5acb,0x52eb,0x52cb,0x5aec,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x5acb,0x5aec,0x5b0c,0x5b0c,0x5acc,0x5aec,0x5b0c,0x5aeb,0x62ec,0x5aec,0x5aed,0x5b0d,0x5b0c,0x5b0c,0x5b4d,0x5b2c,0x630c,0x5b2c,0x5b0c,0x5b0c,0x630d,0x632d,0x632c,0x632c,0x5b4c,0x5b2c,0x52ab,0x634d,0x634d,0x5b2d,0x632d,0x632c,0x6b6d,0x634d,0x634c,0x632d,0x5b2d,0x5b0c,0x634d,0x634d,0x630c,0x6b2c,0x632c,0x5b0c,0x5b2d,0x630d,0x632c,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x630d,0x5aec,0x5b2c,0x5aec,0x5aec,0x630c,0x5b0c,0x5b0d,0x5aec,0x52ec,0x5b0c,0x530c,0x42aa,0x52cb,0x52ec,0x52ab,0x5aec,0x630d,0x5aeb,0x5acb,0x5aac,0x52ab,0x5aac,0x52ab,0x5acb,0x52ab,0x528a,0x4a6a,0x528b,0x528a,0x4a6a,0x528b,0x4a8a,0x528a,0x4a6a,0x426a,0x428a,0x4a8b,0x4a8a,0x528b,0x528a,0x4a8b,0x4a8b,0x4a6a,0x4a29,0x4a4a,0x4a8a,0x4a6a,0x4a69,0x4a49,0x4249,0x4229,0x4208,0x4228,0x4248,0x39e9,0x31c8,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x39e7,0x31e7,0x41e7,0x4207,0x39e8,0x31c8,0x31c7,0x31e7,0x31c7,0x31c6,0x31a7,0x39c8,0x31a6,0x39a7,0x31a7,0x31c7,0x39a7,0x39a6,0x31a6,0x3186,0x31a7,0x3186,0x31a7,0x2166,0x2165,0x2986,0x2186,0x3186,0x2966,0x3146,0x3146,0x3165,0x3966,0x2946,0x2145,0x2986,0x2165,0x2965,0x3145,0x2965,0x2166,0x2165,0x2145,0x1925,0x2125,0x2145,0x1945,0x1904,0x1924,0x1924,0x1925,0x2144,0x2105,0x1144,0x2124,0x2125,0x2105,0x1904,0x1104,0x1925,0x2145,0x2123,0x1104,0x2105,0x1924,0x1903,0x18c4,0x18e4,0x1905,0x1904,0x0903,0x1103,0x1104,0x1104,0x18e3,0x1903,0x1902,0x1903,0x18a4,0x18e4,0x18e5,0x1103,0x18e3,0x1103,0x18c2,0x18e3,0x20c2,0x18e3,0x20e2,0x20e3,0x18c2,0x08c3,0x08c3,0x08c3,0x10c3,0x10a3,0x08a3,0x10c2,0x08c2,0x08c3,0x10c3,0x10c3,0x18a3,0x10a2,0x10a3,0x08a3,0x10a3,0x10c2,0x18e3,0x18e3,0x08e3,0x31c6,0x5267,0x4aa9,0x52a9,0x5aa9,0x41e6, +0xc616,0xe7dd,0x5c0f,0x5288,0x5a89,0x52a8,0x5288,0x4247,0x31e6,0x3a48,0x3a28,0x3a08,0x3a28,0x3a08,0x3228,0x39e7,0x3208,0x3a07,0x3a08,0x3a08,0x41e7,0x4208,0x3a09,0x31e8,0x3a07,0x3a08,0x4a28,0x3a07,0x4208,0x4207,0x3a28,0x3a08,0x4228,0x4208,0x4229,0x4a29,0x4228,0x3a28,0x3228,0x3a29,0x4249,0x4249,0x3a49,0x3a49,0x4228,0x4249,0x4269,0x4a49,0x4248,0x4269,0x4a69,0x4a49,0x4269,0x4229,0x4a6a,0x4a6a,0x4a6a,0x528a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x42aa,0x4aaa,0x528a,0x526b,0x528b,0x4aaa,0x42aa,0x52aa,0x4acb,0x4aec,0x5aec,0x52ab,0x5aab,0x52cb,0x52eb,0x5aeb,0x630c,0x5aec,0x5b0c,0x532c,0x530b,0x52ec,0x5aeb,0x5aeb,0x52eb,0x5b0b,0x630d,0x630c,0x5aec,0x632c,0x5b2c,0x530c,0x52eb,0x5b0b,0x5b2c,0x5b2d,0x5b0d,0x5b0d,0x52eb,0x5b0c,0x632d,0x634d,0x632d,0x630c,0x5b2c,0x632d,0x5b0c,0x632d,0x5b0c,0x632d,0x636d,0x636d,0x5b2c,0x632d,0x632c,0x5b2c,0x5b0d,0x6b2d,0x6b2d,0x6b6d,0x5b2c,0x632c,0x6b2d,0x5b0c,0x5b2d,0x5b0c,0x630c,0x630d,0x632d,0x632c,0x5b0d,0x5b0c,0x62ec,0x5aec,0x5b0d,0x5b0d,0x5b2c,0x632d,0x5b0c,0x530c,0x62eb,0x5b0c,0x5b2c,0x52eb,0x530b,0x52ec,0x5aec,0x5b0c,0x532c,0x632c,0x52cc,0x52ab,0x5acc,0x528a,0x526a,0x52ab,0x52eb,0x528b,0x4a4a,0x526a,0x528a,0x4a8b,0x526a,0x528a,0x4a4a,0x4a6a,0x4aaa,0x4a29,0x4a4a,0x428a,0x4aaa,0x528a,0x4a8a,0x4a8a,0x4a69,0x4aab,0x528b,0x4a49,0x4a6a,0x4aaa,0x4aab,0x4a8a,0x4249,0x426a,0x526a,0x426a,0x4a6a,0x5249,0x4a69,0x4228,0x4a49,0x4a49,0x3a29,0x4229,0x4208,0x3a08,0x4228,0x4228,0x3a08,0x4208,0x3a28,0x3a28,0x39e8,0x39e8,0x4228,0x39e7,0x31c7,0x39e8,0x39c7,0x31e7,0x31e7,0x31e7,0x31a7,0x31c7,0x41e8,0x41e7,0x39c7,0x39e8,0x39e7,0x39c7,0x41a7,0x39a7,0x39a7,0x31a7,0x31a7,0x21a6,0x3186,0x31a6,0x39a6,0x3186,0x39a7,0x3986,0x3986,0x3187,0x2986,0x2186,0x2166,0x2966,0x3986,0x2986,0x2166,0x21a6,0x2186,0x2165,0x2985,0x2965,0x2945,0x2945,0x2165,0x2165,0x2945,0x2945,0x2145,0x2125,0x2125,0x2144,0x1925,0x2125,0x2124,0x2944,0x2125,0x2125,0x2905,0x2105,0x20e4,0x2105,0x2905,0x1904,0x2125,0x1105,0x1903,0x1104,0x10e3,0x18e4,0x18e5,0x18e3,0x18e4,0x18e4,0x18e3,0x18e4,0x1904,0x18c4,0x18c3,0x18e4,0x08e4,0x00c3,0x08c2,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x08c2,0x10c3,0x10a3,0x10a3,0x18c3,0x10c3,0x10c3,0x10a3,0x1082,0x10a2,0x08a3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10e2,0x1903,0x20e3,0x10c3,0x39e6,0x5288,0x5289,0x5289,0x52a9,0x3a06, +0xc617,0xe7de,0x5c0f,0x4a88,0x4aa9,0x4a89,0x4a88,0x4248,0x39e7,0x3a28,0x4229,0x3a28,0x4208,0x4228,0x3a08,0x4207,0x3a08,0x3a08,0x39e8,0x31e8,0x4208,0x4208,0x3a08,0x3a09,0x39e7,0x39e8,0x4249,0x3a29,0x3a08,0x41e8,0x3a28,0x3208,0x3a08,0x39e8,0x4228,0x31e7,0x3a28,0x4249,0x4228,0x4229,0x3a29,0x4229,0x4a48,0x4a48,0x4249,0x4229,0x4229,0x4249,0x3a49,0x4269,0x4229,0x4a49,0x426a,0x422a,0x424a,0x4a4a,0x4a49,0x528a,0x4a4a,0x4a89,0x4a69,0x4a8a,0x4a6a,0x52aa,0x4249,0x4a4a,0x528b,0x528b,0x4a6a,0x52aa,0x52cb,0x52ca,0x5acb,0x4aab,0x52ab,0x52cc,0x4aab,0x4aab,0x52cc,0x4aaa,0x52aa,0x52ec,0x52cc,0x52cc,0x5acb,0x5b0c,0x52ec,0x5aeb,0x52cb,0x5acb,0x5acc,0x52eb,0x5b2c,0x5aeb,0x5aec,0x52cb,0x5aec,0x530c,0x5aac,0x630c,0x632c,0x634c,0x62ec,0x62cc,0x62cc,0x5b0c,0x5b0c,0x5aec,0x52aa,0x5acb,0x6b2d,0x62ec,0x630c,0x5aec,0x5aec,0x5b0d,0x634d,0x636d,0x632c,0x6b4d,0x634d,0x5b4d,0x5b2d,0x62ec,0x5aec,0x5b0c,0x632d,0x5aec,0x632d,0x5b0d,0x5b0c,0x632c,0x5b0c,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x5b2b,0x5aeb,0x62ec,0x5acc,0x62ec,0x6b0d,0x634d,0x5b2d,0x5b0c,0x5b0b,0x630b,0x630c,0x5b0c,0x62cb,0xe77d,0x73d1,0x52cc,0x9cf3,0xad77,0x52ec,0x4a69,0xb595,0xdf1b,0xce9a,0x6b0e,0xad55,0x8c72,0x39e8,0xbe39,0x426b,0x4a29,0x94b2,0x9d56,0x3208,0x52cb,0x4a8a,0x4a8b,0x528b,0x4a6a,0x4a4a,0x4a4a,0x426a,0x41e8,0x4209,0x424a,0x4229,0x4229,0x41e8,0x41e9,0x4a2a,0x4a29,0x4209,0x4a29,0x4a29,0x4229,0x41a8,0x39e8,0x3a08,0x31c7,0x1986,0x1966,0x29a6,0x29a6,0x31a7,0x31a6,0x3186,0x3166,0x2946,0x3186,0x3186,0x2965,0x2985,0x2165,0x2146,0x2945,0x2946,0x2966,0x2966,0x2966,0x2104,0x2946,0x2125,0x2105,0x2105,0x20e5,0x20e4,0x18e3,0x1925,0x1906,0x18e4,0x20e4,0x20e4,0x28e4,0x18c4,0x20e4,0x20c3,0x20e4,0x1905,0x10c4,0x10c3,0x10c4,0x18e4,0x18a4,0x20c4,0x18c4,0x18c4,0x18a3,0x10a3,0x10c4,0x18c3,0x18c4,0x18a3,0x1083,0x08a3,0x10c4,0x18e4,0x10c4,0x10c4,0x10e5,0x10c3,0x10a3,0x10a3,0x10c3,0x0883,0x0883,0x10a4,0x1063,0x0863,0x08a3,0x1084,0x1082,0x1082,0x08a3,0x08c3,0x0882,0x0882,0x1083,0x1083,0x1083,0x0882,0x10a3,0x0882,0x0882,0x0882,0x1082,0x0882,0x1083,0x10a3,0x10a3,0x10a3,0x0883,0x1082,0x10a2,0x0882,0x0862,0x0883,0x1083,0x1083,0x1083,0x10a3,0x0883,0x0863,0x1863,0x1083,0x18c3,0x18c4,0x10a3,0x08a3,0x10a3,0x18a3,0x10a3,0x18c3,0x18c2,0x0903,0x1103,0x1904,0x29c6,0x4288,0x4a88,0x5289,0x5aaa,0x3a06, +0xc617,0xe7dd,0x5bef,0x52a9,0x52a9,0x52a9,0x5288,0x4247,0x4228,0x3208,0x3a29,0x3a28,0x4208,0x3a28,0x3a07,0x39e7,0x3166,0x526a,0x52ab,0x52ac,0x52ab,0x3a4a,0x3a29,0x4209,0x4a6a,0x4a4a,0x4229,0x424a,0x4a4a,0x424a,0x424a,0x4a4a,0x3a49,0x426a,0x4a6b,0x526b,0x428b,0x42ab,0x4acb,0x4a8a,0x52ab,0x4aab,0x428b,0x4a8b,0x52cc,0x52ac,0x52ac,0x52cc,0x52cc,0x632d,0x630d,0x530d,0x5aed,0x5aed,0x5b0c,0x5b0e,0x5b2d,0x636f,0x636f,0x738f,0x73af,0x6b6e,0x636f,0x636f,0x738f,0x6b8f,0x6b8e,0x6b8f,0x638f,0x638f,0x6b6e,0x636e,0x6b8f,0x73af,0x73b0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x8411,0x8472,0x7c52,0x8451,0x8452,0x8472,0x8452,0x8c52,0x8c72,0x8cb3,0x94b3,0x8c73,0x8c93,0x8c72,0x94d4,0x94f4,0x8452,0x8c72,0x9d14,0xa535,0xa514,0x9d35,0x9515,0xa536,0xa536,0x9d35,0x9d55,0xa597,0xa556,0xa555,0xa555,0xa535,0xa555,0xad76,0xad56,0xa555,0xad76,0xa556,0x9d15,0xad56,0xad56,0xad56,0xad96,0xad96,0xa555,0xa536,0xa576,0xa576,0xa576,0xa576,0x9d35,0x9d35,0xa535,0x9d35,0x9d14,0x9cf4,0x94f4,0x94d4,0x9493,0x9493,0x9cd4,0x9cf4,0xa536,0xad55,0xa515,0xadb7,0x94f5,0x52cc,0x630c,0x630c,0x630c,0x4a8a,0x9472,0xd6d9,0xb5d7,0x424a,0xa4d2,0xc63a,0x52cc,0x4a09,0xc636,0x52ab,0xa513,0xa536,0xb5b6,0x9d36,0x31a7,0xdefb,0x422b,0x5229,0xdedb,0xe75d,0x4acc,0x5a8b,0x528a,0x528b,0x52ab,0x73af,0xc679,0xb618,0xbdf7,0xc618,0xc67a,0xc67a,0xc639,0xc639,0xc659,0xce7a,0xc67a,0xbe59,0xc639,0xc639,0xc639,0xbe39,0xbe18,0xbe19,0xbdf8,0xbdd7,0xb5f8,0xbe38,0xc659,0xbe39,0xbe39,0xb618,0xc659,0xc659,0xc659,0xc65a,0xbe19,0xc65a,0xbe39,0xbe59,0xbe59,0xbe59,0xc67a,0xc659,0xc679,0xc659,0xbe38,0xbe38,0xbe59,0xce9a,0xc659,0xbe78,0xbe59,0xb658,0xbe79,0xbe79,0xbe79,0xbe59,0xb659,0xbe79,0xc659,0xc679,0xc679,0xc679,0xc679,0xbe39,0xc659,0xc679,0xc659,0xbe59,0xb659,0xbe59,0xb638,0xc659,0xc679,0xbe19,0xbe59,0xbe58,0xb618,0xb618,0xbe78,0xc659,0xbe18,0xbe18,0xbe58,0xb619,0xb617,0xb5f8,0xb5f8,0xbe18,0xc638,0xbe18,0xbe18,0xb617,0xbe38,0xce5a,0xb5f8,0xb5d7,0xbe18,0xb638,0xbe38,0xb618,0xb5d8,0xb618,0xb638,0xbdf8,0xb5d7,0xb5f8,0xb5d7,0xb5f7,0xad97,0xa5b7,0xa5f7,0xadf7,0xbdf8,0xb5d7,0xadb7,0xa556,0xa596,0xadb6,0xad76,0xad76,0xa596,0xad96,0xa596,0xa596,0xa595,0x9d55,0x9d34,0xa534,0x9d34,0x9d14,0xa555,0x9514,0x94d3,0x8c32,0x18a4,0x18a4,0x18c3,0x10e3,0x18e3,0x2104,0x10e3,0x39c6,0x4a88,0x4aa9,0x52a9,0x5a8a,0x4207, +0xc617,0xdfdd,0x5baf,0x52c9,0x52a9,0x4aa9,0x5288,0x4247,0x5aca,0x3a29,0x3a29,0x3a08,0x3a28,0x4208,0x39a6,0x7baf,0xdefc,0xef9e,0xef9d,0xe7be,0xe7df,0xefdf,0xf7df,0xf7ff,0xffff,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7fe,0xffff,0xffff,0xf7ff,0x530e,0x5b0c,0x5b0c,0x5aec,0x4a69,0xe75c,0x73ae,0xdf3c,0x4a8b,0x9cb2,0xbe39,0x4aac,0x4a28,0xc637,0xd6fb,0xe71c,0x73cf,0xbd96,0xdf3d,0xced9,0xef9e,0x422a,0x9cb2,0xbdf9,0xad75,0x8cb4,0x4a29,0x52ab,0x4aab,0x52ec,0x9491,0xef7d,0xe73c,0xe73c,0xe73c,0xdf1c,0xe73c,0xe73c,0xe71c,0xdf1b,0xdefb,0xd6fa,0xd6fa,0xdf1b,0xd6fa,0xdeda,0xd6ba,0xd6ba,0xd69a,0xceb9,0xce99,0xce99,0xce78,0xd699,0xd69a,0xce78,0xd6b9,0xce58,0xc658,0xc638,0xc617,0xbdf7,0xbdf7,0xbdf7,0xb5f6,0xbdf6,0xbdd6,0xb5b5,0xb5b5,0xb5b5,0xb595,0xb5b6,0xbd96,0xb554,0xb554,0xad54,0xad54,0xa554,0xad75,0xad74,0xa534,0x9d13,0x9cd2,0x9cf2,0x9cf3,0x94b2,0x8c91,0x9471,0x94b2,0x8c71,0x9491,0x9471,0x9470,0x9471,0x8430,0x8450,0x8430,0x8430,0x840f,0x840f,0x7bef,0x73cf,0x7c0e,0x7bcf,0x7bce,0x7bcf,0x7bae,0x6b8d,0x738d,0x738e,0x6b8e,0x632c,0x6b2c,0x6b6d,0x6b4d,0x630b,0x630c,0x630b,0x632b,0x5aea,0x5aeb,0x5acb,0x62cb,0x526a,0x52aa,0x52ca,0x528a,0x5289,0x4a89,0x3a48,0x52eb,0x3a07,0x4aa9,0x4a49,0x4228,0x5269,0x4a49,0x4208,0x4207,0x39c6,0x4227,0x39c7,0x41e8,0x31c7,0x31a6,0x39c7,0x39a7,0x41c7,0x39a6,0x31a6,0x3165,0x31a6,0x2965,0x2965,0x3185,0x39a7,0x41c7,0x41c7,0x31a6,0x4268,0x94b2,0x94b3,0x1083,0x18a3,0x18e3,0x20e3,0x18e4,0x10e3,0x41c6,0x4a68,0x4aa9,0x52a9,0x52a9,0x4a27, +0xc637,0xdffe,0x5baf,0x52a8,0x52a9,0x52a9,0x52a9,0x3a07,0x4247,0x4228,0x4a29,0x3a09,0x4229,0x4209,0x7b8e,0xe79e,0x8534,0x3a69,0x31e7,0x3207,0x3a48,0x4208,0x4208,0x4207,0x4208,0x4a49,0x4208,0x4207,0x4228,0x4a69,0x4228,0x39e7,0x41c7,0x5228,0x4a28,0x4207,0x49e8,0x49c7,0x49e8,0x4208,0x3a08,0x39e7,0x4208,0x4a69,0x4228,0x41e8,0x41e8,0x39e8,0x4208,0x4208,0x4a09,0x4a49,0x4a28,0x4a29,0x4a49,0x4a49,0x526a,0x5269,0x5268,0x4a69,0x4249,0x4249,0x4269,0x4a48,0x5269,0x526a,0x5269,0x528a,0x4a8a,0x4a89,0x4269,0x4a49,0x52aa,0x5acb,0x52ca,0x52aa,0x528a,0x4a8a,0x528a,0x5aca,0x5aeb,0x5acb,0x528a,0x526a,0x5acb,0x5aab,0x5aab,0x630c,0x5acb,0x5acb,0x62ec,0x5acb,0x5aaa,0x62ca,0x62ca,0x5aaa,0x62cb,0x5aab,0x52aa,0x5a8a,0x5a89,0x62aa,0x6aeb,0x6b2b,0x630b,0x62eb,0x5acb,0x5acb,0x62eb,0x6b0c,0x6b0c,0x6b2c,0x6b2c,0x6b0c,0x6b0c,0x630b,0x630b,0x5acb,0x5aeb,0x5aab,0x5acb,0x5acb,0x5aab,0x52aa,0x5aaa,0x62eb,0x5acb,0x5aab,0x62cb,0x5aaa,0x62eb,0x5acb,0x5acb,0x6b2d,0x632d,0x630c,0x62cb,0x5acb,0x5acb,0x5aaa,0x528a,0x62a9,0x5ac9,0x5aca,0x5aaa,0x5aec,0x5b4e,0x530c,0x5b2d,0x5aec,0x9c91,0xf7de,0xd6fb,0xef9d,0x8cd5,0x9471,0xb5f8,0x424b,0x4a2a,0xce37,0x632e,0x41e9,0x52aa,0xb5b6,0x8493,0x2925,0xe71c,0x4209,0xe71c,0xdf1b,0xd699,0xdf1d,0x39ea,0x528b,0x52ab,0x428a,0x526a,0x41a7,0x41a7,0x41a7,0x39a6,0x39e7,0x39a7,0x3986,0x41a7,0x39a7,0x3186,0x41a7,0x39a8,0x2946,0x2946,0x3166,0x3166,0x2966,0x2146,0x2166,0x2986,0x2966,0x2125,0x2145,0x2125,0x3145,0x2925,0x2925,0x2946,0x2145,0x2125,0x2124,0x2124,0x2925,0x2966,0x2145,0x2926,0x2925,0x1904,0x2125,0x18e4,0x20e4,0x2125,0x2124,0x2124,0x2145,0x2144,0x1945,0x2145,0x1904,0x1124,0x1924,0x1904,0x18e4,0x2125,0x18e4,0x18e4,0x2125,0x18e4,0x2125,0x1904,0x2125,0x2145,0x2124,0x2924,0x2944,0x2104,0x18e3,0x1904,0x2104,0x20e4,0x18e3,0x2924,0x2125,0x2124,0x1924,0x2924,0x2124,0x2924,0x2124,0x2125,0x1905,0x2105,0x2104,0x20e4,0x2904,0x2105,0x2904,0x1904,0x20c4,0x18e5,0x1904,0x2104,0x2925,0x20e5,0x2105,0x2125,0x2124,0x2125,0x1924,0x1924,0x1904,0x18e4,0x10c4,0x1904,0x28e5,0x2105,0x2104,0x18e4,0x08e3,0x10c3,0x10e3,0x0904,0x08e4,0x20e4,0x20e3,0x10c3,0x18c3,0x10c3,0x18c3,0x18e3,0x10e3,0x0904,0x10e3,0x20e3,0x10e3,0x10c3,0x08c3,0x08e3,0x08e2,0x08a1,0x9d33,0x62ac,0x0842,0x18e3,0x10e4,0x18e4,0x10e3,0x39c6,0x4288,0x4a89,0x5aa9,0x52a9,0x4227, +0xc637,0xe7ff,0x5bae,0x5288,0x5ac9,0x5aa9,0x52a8,0x4227,0x4228,0x4a49,0x4249,0x3a29,0x4229,0x4a08,0xde99,0x8d56,0x1987,0x31c7,0x31e8,0x3208,0x31e8,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x3a08,0x39e8,0x39e8,0x3a08,0x31e8,0x3a08,0x3a29,0x3a08,0x3a28,0x4208,0x4209,0x4209,0x4209,0x4229,0x422a,0x4229,0x4249,0x4229,0x3a29,0x4249,0x4a69,0x4a49,0x4269,0x4a6a,0x4a29,0x4a4a,0x526a,0x4a4a,0x4a6a,0x4a6a,0x5a6a,0x5269,0x526a,0x4a8a,0x4a6b,0x4acb,0x52aa,0x528a,0x528a,0x528a,0x528b,0x5aab,0x528b,0x528b,0x52ab,0x52cb,0x5aeb,0x52ab,0x52aa,0x5acb,0x5acb,0x5aec,0x5aeb,0x630b,0x630c,0x52ec,0x52eb,0x5acb,0x52cb,0x52ec,0x52ec,0x52eb,0x52ec,0x52cc,0x52cb,0x530c,0x5b2c,0x634d,0x634d,0x634d,0x632d,0x6b6e,0x5b4d,0x634d,0x6bae,0x5aec,0x630d,0x5b2c,0x632d,0x6b4d,0x634e,0x52ec,0x5b0d,0x5aec,0x5b0c,0x632c,0x632d,0x634d,0x634d,0x634c,0x632d,0x6b4e,0x632d,0x6b4d,0x634d,0x634d,0x5b0c,0x632d,0x632d,0x634d,0x6b2d,0x632d,0x6b4d,0x630d,0x5aec,0x6b2c,0x6b4d,0x6b6d,0x6b6e,0x632d,0x5b0c,0x6b4e,0x632c,0x5aec,0x630d,0x6b4c,0x634d,0x634d,0x6b4d,0x6b2e,0x632d,0x5aec,0x52ec,0x5aec,0xbdb6,0x9492,0x5aab,0x738d,0xb619,0x8c30,0xe75c,0xdf1b,0x8431,0xa4f4,0x5b4e,0x52cb,0x52cc,0xa555,0x8c93,0x4229,0xbe18,0x3a09,0xad75,0x4208,0x41e8,0xb555,0x5aac,0x5aab,0x528b,0x4a8b,0x528b,0x5a6a,0x528b,0x52ab,0x52ab,0x52cb,0x52ab,0x5aac,0x526b,0x4a6a,0x4a8a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4269,0x4249,0x4a29,0x4229,0x3a28,0x4229,0x4228,0x3208,0x3a49,0x4a29,0x4248,0x3a28,0x4229,0x4208,0x3a08,0x3a28,0x3a49,0x4a2a,0x39c8,0x39e8,0x39e7,0x39e8,0x39e8,0x39e8,0x39e7,0x39c7,0x41c8,0x31c7,0x31c6,0x31c6,0x39c6,0x29a7,0x3186,0x39a7,0x31a7,0x39a7,0x31a7,0x3186,0x3986,0x3186,0x3186,0x3166,0x2965,0x2986,0x2186,0x2986,0x2186,0x2165,0x1944,0x2965,0x3165,0x2966,0x2986,0x2126,0x2966,0x2165,0x2945,0x2965,0x2185,0x2165,0x2145,0x1925,0x2125,0x1945,0x2144,0x2145,0x2105,0x1905,0x2124,0x2905,0x2105,0x2124,0x1904,0x2104,0x1924,0x2124,0x1904,0x18e4,0x2104,0x1924,0x2104,0x1904,0x1104,0x1903,0x1903,0x1903,0x18e4,0x20e3,0x18e3,0x10e3,0x1903,0x18e4,0x10e3,0x18e2,0x18e4,0x10c4,0x10e3,0x08e3,0x10c3,0x18c3,0x10c3,0x08e3,0x08c3,0x18c2,0x18c2,0x10a3,0x18c3,0x18c2,0x10e3,0x10c2,0x10c3,0x18a3,0x18a3,0x10e3,0x0020,0x63ac,0x8c52,0x0863,0x1903,0x18e4,0x18e4,0x18e3,0x39e5,0x5288,0x4aa9,0x52a9,0x52aa,0x4226, +0xc637,0xe7fe,0x5bce,0x5288,0x52c9,0x52a9,0x52a8,0x3a27,0x5268,0x4a49,0x4228,0x4228,0x4228,0x6229,0xdf5c,0x53d0,0x31c7,0x4207,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x4208,0x4249,0x4229,0x3a08,0x4208,0x4229,0x3a28,0x4228,0x4248,0x3a29,0x3a28,0x3a48,0x4229,0x3a29,0x4269,0x4249,0x4269,0x4269,0x428a,0x4a6a,0x4a8a,0x428a,0x4269,0x4a89,0x4a6a,0x4a8a,0x528a,0x4a8a,0x52aa,0x526a,0x528a,0x528a,0x528a,0x4a6a,0x428a,0x52aa,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x52ab,0x52cc,0x52eb,0x52cb,0x52cb,0x52cb,0x5acb,0x5acb,0x52ec,0x52cc,0x52cb,0x5b0c,0x5b0c,0x52ec,0x62eb,0x62ec,0x5b0c,0x530b,0x5b2c,0x5b2c,0x532c,0x52eb,0x5b2c,0x630c,0x5aec,0x5b0c,0x5b4d,0x5b2c,0x6b6d,0x5b4c,0x5b4c,0x5b0c,0x630d,0x634d,0x5b2d,0x6b6d,0x6b6c,0x6b8d,0x6b6d,0x5b4d,0x5b4d,0x6b4d,0x6b6d,0x634d,0x638e,0x5b0d,0x6b2d,0x6b6d,0x6b4e,0x6b4d,0x6b6d,0x634c,0x6b8e,0x6b4d,0x6b4e,0x6b6e,0x634d,0x6b4e,0x634d,0x6b6e,0x634d,0x632d,0x6b4d,0x634d,0x6b6d,0x634e,0x632e,0x634d,0x5b2d,0x638e,0x5b4d,0x5b4d,0x6b4e,0x6b4d,0x734d,0x6b4d,0x632d,0x632d,0x630c,0x5aec,0x5b4d,0x4acb,0x5aeb,0x630b,0x52cb,0x5acb,0x5acb,0x4a29,0x4229,0x4a8a,0x528b,0x5aec,0x532c,0x52aa,0x4a6a,0x528b,0x52ec,0x4a4a,0x428b,0x528b,0x52ec,0x52cb,0x4a6a,0x52ab,0x526a,0x526b,0x528b,0x528b,0x4a6b,0x4a4b,0x4a8a,0x526a,0x4a6a,0x528b,0x4a6a,0x4a4a,0x4a6a,0x4269,0x4a69,0x4a6a,0x4a8a,0x4a69,0x4a49,0x3a49,0x4249,0x3a28,0x4229,0x3a28,0x4208,0x4228,0x31e8,0x4229,0x4228,0x3a08,0x39e9,0x3a09,0x4209,0x41e8,0x39e8,0x39e8,0x41e8,0x31c7,0x21a7,0x39c7,0x31c7,0x31c7,0x31c7,0x39c7,0x39a7,0x31c7,0x31c7,0x3187,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2987,0x3166,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x2186,0x2966,0x2965,0x3166,0x2966,0x2146,0x2945,0x3145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x1945,0x1945,0x1945,0x2125,0x2124,0x1125,0x1105,0x2925,0x2105,0x1905,0x2125,0x2125,0x2125,0x2104,0x10e4,0x1905,0x2105,0x20e4,0x1904,0x2104,0x20e4,0x2104,0x2104,0x1904,0x1104,0x1924,0x1924,0x18e3,0x10e4,0x18e4,0x20e4,0x18c4,0x2103,0x18e4,0x18c4,0x20e4,0x10e3,0x10c3,0x10c3,0x08c3,0x10c3,0x18a3,0x18c2,0x08e3,0x00c3,0x10c3,0x18c3,0x18a3,0x18a3,0x10c3,0x18e3,0x08c3,0x18c4,0x18e3,0x10e3,0x10c3,0x0042,0x532b,0x9473,0x0883,0x10e3,0x1104,0x1904,0x18e3,0x39c5,0x5287,0x4aa9,0x52a9,0x5aaa,0x4a26, +0xc637,0xdfde,0x638e,0x5287,0x5ac8,0x5aa8,0x5ac8,0x3a07,0x52c9,0x3a69,0x4229,0x3a08,0x3a29,0x624a,0xdf7c,0x53af,0x31c7,0x4227,0x3a08,0x3209,0x3a08,0x39e8,0x4228,0x4228,0x4229,0x3a28,0x3a28,0x4228,0x3a28,0x3a28,0x3a29,0x3a09,0x4229,0x4208,0x4228,0x4228,0x4208,0x3a28,0x4249,0x4249,0x4229,0x4a49,0x4249,0x4269,0x4a89,0x4a69,0x4a4a,0x4289,0x4a8a,0x426a,0x4a8a,0x4a6a,0x4289,0x528a,0x528b,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52ab,0x4a8a,0x52ab,0x52ab,0x528b,0x528b,0x4a8b,0x4aab,0x52ab,0x4aaa,0x52ab,0x52ec,0x5acb,0x5acb,0x52cb,0x52ec,0x52eb,0x52ec,0x52cc,0x5b0c,0x5b0c,0x5aec,0x52ec,0x530c,0x5b0c,0x632c,0x5aec,0x5b0c,0x630c,0x5b0c,0x5aec,0x630c,0x634d,0x632d,0x632d,0x5b4d,0x5aeb,0x632c,0x5b2c,0x5b0d,0x6b6e,0x6b8e,0x6b4d,0x632c,0x6b4d,0x6b8d,0x73ae,0x6b8e,0x6b4d,0x636d,0x632c,0x6b4e,0x6b4e,0x634d,0x5b2d,0x630d,0x634c,0x638d,0x6b8d,0x634d,0x6b6e,0x6b4e,0x634d,0x634d,0x636e,0x6b6e,0x6b6e,0x6b6e,0x6b4d,0x634d,0x5b6d,0x6b4d,0x632d,0x6b6e,0x634d,0x636e,0x5b6d,0x6b6e,0x6baf,0x638e,0x5b2d,0x634d,0x736e,0x6b4e,0x632d,0x632d,0x5b2d,0x5b0d,0x5b0c,0x5b6d,0x5b4d,0x5b0c,0x632d,0x630d,0x630c,0x630c,0x52ec,0x5aec,0x52cc,0x52eb,0x5b0c,0x5b0b,0x5aec,0x630d,0x52eb,0x52ec,0x52ec,0x5aec,0x5aec,0x4a8a,0x5acb,0x528b,0x528b,0x52ab,0x52ab,0x52ab,0x4a8b,0x4aaa,0x528b,0x52aa,0x528a,0x52ab,0x4a6a,0x4a6a,0x426a,0x4a6a,0x4a4a,0x4a4a,0x3a49,0x3a29,0x4a69,0x4a49,0x4249,0x4269,0x3a29,0x4209,0x4228,0x4208,0x4229,0x3a29,0x4249,0x4209,0x4208,0x3a08,0x4208,0x39e8,0x3a08,0x39e7,0x3a08,0x31c8,0x39c7,0x31c6,0x31e7,0x39c7,0x39c7,0x39c7,0x39c7,0x31a7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x39a7,0x39a7,0x31a6,0x29a6,0x2186,0x2186,0x2986,0x2987,0x2187,0x21a6,0x29a6,0x3166,0x2166,0x2965,0x2985,0x3166,0x2165,0x2166,0x3145,0x2945,0x2146,0x2966,0x2125,0x2145,0x2945,0x1946,0x1925,0x1925,0x1925,0x1945,0x2145,0x2144,0x1945,0x1125,0x2125,0x2105,0x1925,0x1925,0x2125,0x1924,0x2105,0x2104,0x18e5,0x18e5,0x20c4,0x2103,0x2104,0x1924,0x1904,0x2104,0x1903,0x1904,0x18c4,0x1904,0x1903,0x18e4,0x2104,0x1104,0x10e4,0x18e3,0x10e4,0x08c3,0x1904,0x18c3,0x20a3,0x10e4,0x08e3,0x18e3,0x18c3,0x18e3,0x10e3,0x08c3,0x08c3,0x08c3,0x18a4,0x18e3,0x08e3,0x18e3,0x10a4,0x18a3,0x10e3,0x08c3,0x10e3,0x0841,0x532b,0x9494,0x1084,0x10e3,0x1923,0x2124,0x08c1,0x31e5,0x52a8,0x5289,0x52a9,0x5aa9,0x4a47, +0xce57,0xe7ff,0x5b6d,0x52a9,0x52e9,0x5ac8,0x5ac8,0x4227,0x52ca,0x3a29,0x4249,0x31e8,0x4209,0x6a8a,0xdf7c,0x538f,0x39e8,0x4207,0x4208,0x3228,0x3a08,0x4208,0x4248,0x3a29,0x4229,0x3a28,0x4229,0x4208,0x3a28,0x3228,0x3208,0x4209,0x4208,0x4228,0x3a28,0x3a08,0x3a28,0x3a08,0x4249,0x4249,0x4a49,0x4a48,0x4268,0x3a48,0x3a49,0x4269,0x3a29,0x4289,0x426a,0x4a8a,0x528a,0x528a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x528a,0x4a8a,0x52ab,0x52ab,0x52ab,0x52aa,0x52ab,0x52ab,0x528b,0x52aa,0x52aa,0x52ab,0x52ab,0x52cc,0x52ab,0x52ab,0x52ab,0x52cc,0x530b,0x5b0c,0x62ec,0x62eb,0x530c,0x530c,0x530c,0x52ec,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x632c,0x52eb,0x5b0c,0x5b0c,0x5b4d,0x5b2d,0x5b0d,0x5b2c,0x632c,0x5b6d,0x5b2d,0x5b0c,0x636d,0x634d,0x5b4d,0x5b4d,0x5b4d,0x5bad,0x5b8d,0x634e,0x636d,0x636d,0x6b4d,0x736e,0x6b6e,0x636d,0x632d,0x634d,0x738d,0x6b6d,0x5b4c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x5b4c,0x634d,0x6b6d,0x6b6d,0x636d,0x6b6d,0x6b4d,0x6b6d,0x73ae,0x634d,0x632d,0x634d,0x6b6d,0x634d,0x6b6d,0x6b6d,0x634d,0x6b4d,0x634d,0x6b4d,0x6b6e,0x630d,0x6b2d,0x632d,0x5b0d,0x530c,0x634d,0x5b0d,0x630c,0x5b2c,0x5b2d,0x5b0d,0x5b2d,0x5b2c,0x5b2d,0x5acd,0x5aec,0x530c,0x5aeb,0x5acb,0x52ec,0x52cc,0x5aec,0x5aec,0x5acb,0x52cc,0x52ab,0x52eb,0x52cb,0x52ab,0x4a8b,0x52aa,0x52ab,0x528b,0x528b,0x528a,0x4a8a,0x526a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x4a6a,0x4209,0x4249,0x4249,0x4229,0x4249,0x3a29,0x3a29,0x4228,0x4228,0x4208,0x4229,0x4228,0x4208,0x41e8,0x4208,0x4208,0x41e8,0x4208,0x39e7,0x39e8,0x39e7,0x39e7,0x39e6,0x31e7,0x31e7,0x39c7,0x39c6,0x29a6,0x31c6,0x31c7,0x31a7,0x31a7,0x3186,0x3186,0x31a7,0x31a7,0x29c6,0x2986,0x3986,0x2986,0x3167,0x2987,0x2986,0x2986,0x31a6,0x3186,0x2986,0x3186,0x2985,0x2966,0x2946,0x2185,0x2946,0x1966,0x2166,0x2966,0x2945,0x1945,0x2145,0x2945,0x2945,0x2125,0x1966,0x2165,0x2945,0x2925,0x2125,0x2145,0x2125,0x1924,0x1125,0x2125,0x2905,0x2124,0x2124,0x1924,0x2104,0x2905,0x2105,0x2105,0x1904,0x2904,0x1905,0x1905,0x1105,0x18e4,0x18e3,0x1904,0x18e4,0x18c4,0x18e3,0x1104,0x1904,0x10e3,0x18c4,0x18e4,0x10e3,0x1904,0x18e4,0x08e4,0x10e4,0x20c4,0x18c4,0x18e3,0x08e4,0x08e3,0x08c3,0x18e3,0x18a4,0x18e3,0x18e3,0x10c3,0x18c3,0x10c3,0x1103,0x10c3,0x20c3,0x1041,0x5b4b,0x94b4,0x0843,0x10e3,0x1903,0x2124,0x10e3,0x39c5,0x5287,0x5aa9,0x5aa9,0x5aa9,0x4a27, +0xce37,0xefff,0x5b8d,0x5ac9,0x5aca,0x5aaa,0x52c9,0x4a68,0x4a68,0x4248,0x4249,0x3a08,0x4249,0x6a8a,0xdf7c,0x538e,0x3a28,0x4208,0x39e8,0x3a08,0x4208,0x3a09,0x3a28,0x3a28,0x3a28,0x4249,0x4a29,0x4229,0x4249,0x4229,0x3a28,0x41e8,0x41e8,0x3a29,0x3a28,0x3a29,0x3a29,0x4a09,0x4229,0x4249,0x4a29,0x4a49,0x426a,0x4a69,0x4249,0x4a69,0x426a,0x3a89,0x428a,0x4a8a,0x528a,0x524a,0x5a8a,0x5aab,0x528a,0x52cb,0x528a,0x528a,0x4a8b,0x4aaa,0x52cb,0x5aab,0x4aab,0x52cb,0x52ab,0x52ab,0x5aab,0x52cb,0x52cb,0x52cb,0x52cb,0x528b,0x52cb,0x52cb,0x52ea,0x5acb,0x52eb,0x5acc,0x5aec,0x5b4c,0x5b0b,0x634d,0x52ec,0x5b0c,0x5b0d,0x52ed,0x5b2d,0x6b6d,0x5b2d,0x630d,0x632d,0x632d,0x6b4e,0x634d,0x632d,0x632d,0x632c,0x5b2c,0x634d,0x5b2c,0x5aec,0x634d,0x632d,0x5b2d,0x634e,0x636e,0x5b6d,0x634d,0x6b6e,0x632d,0x6b2e,0x6b8e,0x634d,0x636d,0x6b6d,0x6b8e,0x6b4d,0x6b6e,0x638d,0x638e,0x634d,0x6b6d,0x738e,0x636d,0x634d,0x638e,0x638e,0x634d,0x634d,0x634d,0x636d,0x5b6e,0x636e,0x5b4d,0x634e,0x6b6e,0x632d,0x636e,0x634d,0x5b4d,0x634d,0x5b4d,0x6b2d,0x632d,0x6b4d,0x634d,0x6b2d,0x634d,0x634e,0x632d,0x5b2d,0x5b0d,0x630c,0x630d,0x634d,0x630c,0x5acc,0x5b0c,0x5aec,0x5acc,0x5b0c,0x5aed,0x5b0c,0x5acc,0x5aec,0x5b0d,0x5aec,0x5aec,0x52ec,0x52cc,0x52ab,0x5aec,0x5acb,0x52ab,0x5a8b,0x52ac,0x528b,0x528a,0x52ab,0x4a6a,0x528a,0x528a,0x4a6a,0x4a8a,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4a29,0x4a49,0x4a6a,0x424a,0x4249,0x4229,0x4a49,0x4249,0x424a,0x4209,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x4209,0x41e8,0x4208,0x4208,0x3208,0x39e9,0x4207,0x39e7,0x39e7,0x31c7,0x31c6,0x39c7,0x39a7,0x39a7,0x3987,0x39a7,0x29a6,0x31a6,0x29a6,0x29c6,0x31c6,0x39a6,0x31a6,0x3186,0x3187,0x31a7,0x3186,0x31a7,0x3186,0x2966,0x2966,0x2986,0x2986,0x2986,0x2965,0x2166,0x2146,0x2965,0x2186,0x2166,0x2166,0x2146,0x2145,0x2945,0x3145,0x2965,0x2165,0x1945,0x2145,0x3125,0x3125,0x2145,0x1144,0x2145,0x2925,0x2125,0x1924,0x1924,0x1925,0x2145,0x2904,0x2905,0x2105,0x2125,0x20e5,0x1924,0x2124,0x2104,0x1104,0x20c4,0x18e4,0x18e4,0x10c4,0x18e4,0x1903,0x18e4,0x18e5,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x20e4,0x18e4,0x18e3,0x18e3,0x1103,0x18e3,0x10c3,0x18e3,0x1103,0x10c3,0x10c3,0x10e3,0x18a4,0x10c3,0x10c2,0x10e3,0x10c3,0x10c3,0x18e3,0x1041,0x5b2a,0x94b3,0x1063,0x18c3,0x1904,0x1105,0x10c4,0x39c5,0x4a68,0x5aa9,0x5aa9,0x5aa9,0x4a47, +0xce58,0xefdf,0x5b6d,0x5aea,0x5aca,0x5ac9,0x5aa9,0x4227,0x4267,0x3a69,0x4229,0x4227,0x4228,0x6a8a,0xdf7c,0x536e,0x39e8,0x4208,0x39e8,0x4208,0x4229,0x3a08,0x39c8,0x39e7,0x3a08,0x39a7,0x31a7,0x39e8,0x31a7,0x2986,0x3187,0x3987,0x31a7,0x2966,0x2966,0x3187,0x2987,0x2966,0x2987,0x31a7,0x3187,0x39e8,0x4229,0x4a49,0x4269,0x4a69,0x4249,0x4289,0x4aca,0x4a8a,0x4229,0x420a,0x41e8,0x4a29,0x4229,0x4249,0x4a6a,0x4229,0x4229,0x4229,0x4a29,0x4a49,0x4249,0x4249,0x4a09,0x4a09,0x4a2a,0x426a,0x4269,0x4a6a,0x5aab,0x5acb,0x52ab,0x5acb,0x52ab,0x5acb,0x5b0b,0x5aec,0x4a6a,0x528b,0x52cb,0x4aab,0x424a,0x4a8b,0x4acb,0x42aa,0x4aab,0x528b,0x52cb,0x4a8b,0x424a,0x428a,0x5acc,0x5aec,0x52ab,0x4a69,0x528a,0x5aab,0x630c,0x636d,0x634d,0x5b2c,0x732e,0x634d,0x5b6d,0x5b4d,0x5acb,0x5b0c,0x52ec,0x630c,0x734d,0x5aec,0x4aab,0x5aec,0x5acb,0x5b2d,0x52cc,0x62ec,0x5b0d,0x52ec,0x5b0d,0x632c,0x6b2d,0x636d,0x5b0c,0x632d,0x5aec,0x62ec,0x630c,0x634d,0x6b8e,0x6b8e,0x634e,0x5b2d,0x6b6e,0x6b6e,0x5b0d,0x52ec,0x52ed,0x4aac,0x52cb,0x52cc,0x528b,0x5aec,0x5acb,0x4a8b,0x52ab,0x5aec,0x52ab,0x4aaa,0x4a6b,0x528b,0x5a8b,0x528b,0x4a6b,0x5a6b,0x52ec,0x52cc,0x52cc,0x5aeb,0x5b2d,0x632d,0x530d,0x530d,0x630d,0x4a8b,0x4a8a,0x4a8b,0x4229,0x4229,0x424a,0x524a,0x41e8,0x41e8,0x39c8,0x39c8,0x4249,0x4209,0x4208,0x31e9,0x31c8,0x39c8,0x39e8,0x29c7,0x31e8,0x41c9,0x4209,0x424a,0x4269,0x4a4a,0x4249,0x4248,0x4a4a,0x4a49,0x41e8,0x3166,0x3987,0x3187,0x2966,0x3187,0x2966,0x3186,0x31a6,0x2966,0x2925,0x2946,0x2105,0x1924,0x1925,0x1105,0x1905,0x18e4,0x18e4,0x1905,0x1925,0x31c6,0x39e7,0x31a7,0x39c7,0x4187,0x31c7,0x31c6,0x3186,0x1904,0x1904,0x1904,0x10c4,0x18c4,0x10a3,0x10c3,0x10a4,0x18c4,0x10c4,0x10c4,0x08a3,0x0882,0x0862,0x1083,0x1883,0x1082,0x1083,0x10a4,0x1083,0x18c3,0x2925,0x2145,0x2966,0x2145,0x2965,0x2145,0x1165,0x10c3,0x08a3,0x10a3,0x10c3,0x10a3,0x10a3,0x0882,0x1062,0x1063,0x0883,0x0883,0x10a3,0x1083,0x1062,0x1082,0x0883,0x0883,0x18a3,0x0862,0x1083,0x1063,0x0882,0x18e4,0x20e4,0x20e4,0x20e5,0x18e4,0x20e4,0x1903,0x18e4,0x0882,0x10a3,0x1905,0x1905,0x2146,0x2966,0x2166,0x2986,0x2946,0x2986,0x31c7,0x29e8,0x29c8,0x29a7,0x29a8,0x29c7,0x31a7,0x29a7,0x31c7,0x31c7,0x2166,0x1904,0x0841,0x18c3,0x10e3,0x0861,0x4aca,0x9cf5,0x1064,0x20e4,0x18e5,0x1905,0x08c3,0x31c5,0x4a88,0x5ac9,0x5ac9,0x62aa,0x4a47, +0xce58,0xefff,0x5b4d,0x5ac9,0x5ac9,0x5ac9,0x52a9,0x3a27,0x4a47,0x3a69,0x3a49,0x3a28,0x4229,0x6a8a,0xd75c,0x4b6e,0x3a28,0x4208,0x4209,0x4a29,0x4208,0x632d,0x8410,0x7c31,0x73f0,0x7411,0x7c31,0x7c31,0x8452,0x8cb2,0x8c92,0x8493,0x8cb3,0x9cf4,0x9534,0x94f4,0x9d14,0x9d35,0xa514,0xa514,0x9d35,0x7411,0x3a29,0x3a08,0x4249,0x4a49,0x4a49,0x4a6a,0x4a49,0x634d,0x9cf4,0x9d35,0xad56,0xa4f5,0x9d14,0xa555,0x9d35,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9d14,0x9d76,0x9d34,0x9514,0x9514,0x94f4,0x9514,0x9cf4,0x6bae,0x4aaa,0x52ec,0x5aec,0x630c,0x5aeb,0x5aaa,0x5acb,0x94d3,0xa555,0xa576,0xadb7,0x9d55,0xa575,0xad96,0xad75,0xad76,0xb5d7,0xadb6,0xa596,0xadb6,0xb5d7,0xb5d7,0xb5d7,0xbdf8,0xb5d7,0xbdd6,0xb597,0x9d15,0x5b4d,0x6b6d,0x632d,0x630d,0x5b0d,0x5b4d,0x630c,0x7bf0,0xb597,0xb5f8,0xbe18,0xb618,0xc658,0xbe38,0xb618,0xbe39,0xbdd8,0xadb6,0xad97,0xa596,0xb5b7,0xa577,0x9d14,0x9d14,0x9d14,0x94f3,0x9d14,0x9d14,0x8c73,0x638d,0x6b8e,0x638d,0x6b6e,0x6b8e,0x6bae,0x5aeb,0x8c31,0xb5d8,0xb5f8,0xb5f8,0xb5d7,0xbe59,0xb5f7,0xb5f7,0xb618,0xb5d7,0xb618,0xbe18,0xbdf7,0xb5d7,0xb5d7,0xb618,0xadf7,0xbdd7,0xb5d7,0xb5d7,0xb597,0x94b4,0x630e,0x52cc,0x632d,0x5b0d,0x5aec,0x5b0d,0x528a,0x840f,0xb596,0xbe17,0xbe18,0xc639,0xc659,0xc65a,0xb5d8,0xbe18,0xce79,0xd6bb,0xbe58,0xc638,0xbe18,0xbe39,0xbe39,0xb618,0xbe38,0xc659,0xb638,0xadf7,0x9d55,0x5b2d,0x4249,0x4a8a,0x4a6a,0x4a4a,0x4a69,0x4a28,0x62ec,0xa535,0xb5d7,0xadd7,0xadd7,0xb5d7,0xb5f7,0xb5d7,0xadb6,0xadb6,0xb5d7,0xadd7,0xb5f8,0xbe39,0xb638,0xb5f7,0xb5d7,0xb5d7,0xb5d7,0xadb7,0xadb6,0x9d14,0x424b,0x3167,0x39c7,0x31c7,0x29c7,0x29a7,0x3185,0x634c,0xbdf8,0xbe59,0xceba,0xce99,0xd6ba,0xc659,0xbe59,0xbe38,0xbe18,0xb5d7,0xadb7,0xadb6,0xb5f8,0xb5f8,0xad97,0xad96,0xa595,0x9d56,0xa535,0x9d14,0x9cd3,0x422a,0x20e4,0x2966,0x2986,0x2965,0x2945,0x1104,0x7c10,0xa535,0x9d35,0x9d54,0x9d34,0x9d75,0xa5b7,0x9d56,0xa556,0xad96,0xa555,0x9d55,0xa555,0x9514,0xa575,0xa595,0xa555,0x9d54,0x9d35,0x9d14,0x9514,0x94f4,0x4168,0x20c3,0x18e4,0x2905,0x2104,0x20e5,0x1904,0x08c3,0x5b4e,0x84d3,0x8492,0x8c51,0x8430,0x8c71,0x8c91,0x8451,0x7c51,0x7c50,0x7bcf,0x7c10,0x7c50,0x7c31,0x7c31,0x73f0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x73d0,0x8451,0x6b4e,0x1063,0x1103,0x0861,0x4ac9,0xad16,0x1064,0x20c4,0x2903,0x20e4,0x08e4,0x31a5,0x5288,0x5aaa,0x52a9,0x5aa9,0x5267, +0xc638,0xe7ff,0x534c,0x5ac9,0x5ac9,0x5ac9,0x5aa9,0x4228,0x4208,0x3a49,0x3229,0x4229,0x3a09,0x62ab,0xcf1b,0x434d,0x3a28,0x4208,0x3a08,0x49e7,0xc659,0xa575,0x734d,0x6b6e,0x6b6d,0x6b8e,0x736e,0x734e,0x6b8e,0x6b8e,0x6b8e,0x73af,0x7bf0,0x7c10,0x7bcf,0x73af,0x73d0,0x7bd0,0x73af,0x738f,0x7bf1,0xb596,0x9dd7,0x3249,0x4269,0x4249,0x4a6a,0x41e8,0xad34,0xcedb,0x73af,0x7c31,0x7c10,0x7c10,0x8451,0x8451,0x8c72,0x8471,0x7c11,0x8451,0x8451,0x8492,0x8451,0x7c31,0x8451,0x8471,0x7c31,0x7c31,0x8471,0x9cf4,0xf7de,0x6411,0x52cb,0x5b0c,0x62ec,0x5acb,0x6aec,0xf77d,0xad76,0x8c72,0x8c71,0x8c72,0x8c51,0x8c72,0x8c92,0x94b2,0x8c72,0x9492,0x8c92,0x9cd3,0xa514,0x9cf4,0x9cd3,0x9cd3,0x94b2,0x94b3,0x9cb3,0x9cf3,0xc638,0xe79e,0x5b4d,0x5b4d,0x632d,0x630c,0x5b2d,0x9471,0xf79f,0x9cf4,0x8c92,0x8c51,0x8451,0x8c71,0x9cf3,0x9cf4,0x9d14,0x94d4,0x94d3,0x94f4,0x8c72,0x8c72,0x8492,0x8c92,0x8cb2,0x8c92,0x94b3,0x94b2,0x9cd3,0xdefb,0xd73c,0x634d,0x6b6e,0x6b6e,0x636e,0x634e,0xa4f4,0xf7be,0xa534,0x9cd3,0x9d13,0xad55,0xa554,0xa534,0xa534,0xa514,0xa4f4,0xa514,0x9cf3,0xa513,0xa4f4,0x9cf3,0x94f3,0x94b2,0x94b2,0x9cb3,0x94b2,0x8cb2,0xc658,0xe77e,0x5b0d,0x6b4d,0x630d,0x52ec,0x5acc,0x9471,0xf7df,0xad75,0x94b3,0x9493,0x8c51,0x8c51,0x8c51,0x8c31,0x8c51,0x9492,0x9472,0x8c92,0x94b2,0x94b3,0x9492,0x9492,0x9493,0x8c72,0x8431,0x8451,0x8c11,0x94b2,0xe7be,0x52ee,0x526a,0x526a,0x428b,0x4249,0x738d,0xef3c,0x7bf0,0x6b8e,0x73cf,0x7bef,0x73af,0x6b6e,0x73af,0x738f,0x6b8e,0x73af,0x636d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x6b4e,0x6b2d,0x6b2d,0x6b2d,0x6b4c,0x5b0c,0xc67a,0x528c,0x31e7,0x31c8,0x29a7,0x3167,0x5aeb,0xbe18,0x6b4d,0x740f,0x6bef,0x73ef,0x73cf,0x7bcf,0x83cf,0x83cf,0x83f0,0x8430,0x8c31,0x83f0,0x83f1,0x8411,0x7c10,0x7bf0,0x7c10,0x73af,0x7bd0,0x736e,0x4208,0xc658,0x3988,0x2126,0x2145,0x2926,0x1082,0x8cb1,0x6b8e,0x5aec,0x634e,0x7bf0,0x8431,0x6bae,0x6b8f,0x73d0,0x6bcf,0x73d0,0x6baf,0x73af,0x6b8f,0x7bf0,0x8451,0x6bef,0x8432,0x7c31,0x8492,0x7c52,0x73ef,0x4207,0x9494,0x18a4,0x18e4,0x2104,0x2104,0x1904,0x10e3,0x5b2c,0x73ae,0x5b6d,0x8cf3,0x8cb3,0x8cd4,0x84d3,0x84d2,0x9cf4,0x94d3,0x8cf3,0x94f3,0x94f3,0x94f4,0x94f3,0x9d35,0x9514,0x94f4,0x8cf4,0x8cf3,0x9d14,0x8cb3,0x534e,0x530d,0x524b,0x18a3,0x1062,0x4b09,0xad16,0x1883,0x18e3,0x20e3,0x28e5,0x18e4,0x31c5,0x5288,0x5aca,0x5aaa,0x5aca,0x5288, +0xce58,0xe7ff,0x534d,0x5ac9,0x62e9,0x62e9,0x5aa9,0x4a48,0x4207,0x4249,0x4229,0x4229,0x422a,0x6acc,0xc71b,0x3b0c,0x4208,0x3a08,0x31e8,0x83ef,0xa555,0xad75,0xd6db,0xd71b,0xd6fb,0xd6fb,0xdf3c,0xdf5d,0xdf3c,0xdefc,0xe77e,0xefbe,0xe77d,0xd75d,0xe75d,0xe75d,0xe77e,0xe79e,0xdf5d,0xe75d,0xdf5c,0xa5b6,0xbe79,0x42cc,0x3a29,0x4249,0x4a69,0x5a6a,0xe77d,0xa575,0xef9e,0xe79e,0xef9e,0xefbe,0xe79e,0xe79e,0xefbe,0xefbe,0xe79e,0xefbe,0xefbe,0xefde,0xf7df,0xefbe,0xef9e,0xf7df,0xefdf,0xefbe,0xef9e,0xdf5d,0xb5d6,0xd73d,0x428b,0x5b0b,0x5aeb,0x52aa,0xb514,0xadb6,0xdedb,0xf7df,0xefbe,0xf7de,0xf7df,0xf7be,0xf7bf,0xf7df,0xf7df,0xf7ff,0xf7df,0xffff,0xf7ff,0xf7de,0xefbe,0xefbe,0xefbe,0xf7de,0xf7de,0xf7bf,0xd6ba,0xce38,0x8cf5,0x52ec,0x632d,0x6b8d,0x6b2d,0xf77e,0xb5b7,0xef9e,0xf7ff,0xf7df,0xf7df,0xf7df,0xf7ff,0xf7de,0xffff,0xffff,0xffff,0xf7ff,0xf7df,0xf7df,0xf7df,0xef9e,0xef9e,0xf7be,0xf7be,0xf7be,0xef9e,0xc618,0xd6db,0x8cf3,0x6b6e,0x6b6e,0x6b4d,0x630d,0xf77e,0xbdd7,0xffdf,0xffff,0xffff,0xf7ff,0xf7df,0xf7df,0xf7df,0xf7de,0xffff,0xffff,0xffff,0xffff,0xf7df,0xf7df,0xf7ff,0xf7ff,0xf7df,0xf7de,0xf7ff,0xf7ff,0xce9a,0xdf1c,0x94d4,0x5aec,0x634d,0x532d,0x526a,0xe71c,0xa534,0xef5d,0xf7de,0xf7de,0xf7de,0xf7de,0xefbe,0xf7df,0xf7df,0xf7df,0xf7be,0xefbe,0xef9e,0xf7ff,0xefdd,0xefbe,0xefbe,0xefdf,0xefbe,0xefbe,0xefbe,0xe73c,0xb5d6,0xa537,0x4a4a,0x526a,0x42aa,0x39c8,0xc617,0x8c71,0xe75d,0xef9d,0xef9d,0xef9e,0xefbe,0xef9d,0xe77d,0xe77d,0xefbe,0xefbe,0xe75c,0xe77d,0xf7de,0xe75d,0xd73c,0xdf3c,0xdf5c,0xdf5c,0xd73b,0xd75b,0xd6fc,0x8451,0xad57,0x29c7,0x31c7,0x31c7,0x2945,0x94f2,0x5b0b,0xdf5c,0xd6fb,0xcedb,0xcefb,0xd6fb,0xceda,0xced9,0xd6da,0xceda,0xceda,0xd6fb,0xc699,0xceb9,0xc699,0xc679,0xce9a,0xbe79,0xbe59,0xce79,0xce99,0xd6db,0x8410,0x9cf4,0x20e6,0x2965,0x2166,0x1924,0xbe37,0x7bd0,0xbe38,0xb618,0xb618,0xbe18,0xb618,0xbdf8,0xbdf8,0xbe17,0xc659,0xadf6,0xad75,0xbe37,0xbe58,0xb5d6,0xb5d6,0xadb7,0xadb6,0xadb6,0xa5b6,0xa576,0xad36,0x638e,0x39c9,0x18c4,0x18e4,0x18e4,0x2124,0x1082,0x7c70,0x4aab,0xa576,0x9d14,0x9d14,0x9d34,0x9534,0x9d13,0x9514,0x9d14,0x94b3,0x94b2,0x94d2,0x9d34,0x94b3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb2,0x94b3,0x8c92,0x8c93,0x31c7,0x6b6e,0x18a3,0x1082,0x42c9,0xa535,0x1084,0x18c3,0x18e4,0x18e4,0x18e4,0x39a5,0x5288,0x5aca,0x5aaa,0x5aca,0x4a89, +0xd658,0xe7df,0x534d,0x5ac9,0x62ca,0x62e9,0x52c9,0x4a48,0x39e7,0x4269,0x4269,0x4229,0x3a29,0x72ec,0xd75c,0x42ec,0x4208,0x4228,0x39c8,0xb554,0x8cb2,0xe71c,0xceda,0xd6da,0xd6fb,0xcedb,0xceda,0xcebb,0xcedb,0xe75d,0xbe78,0xb5d7,0xd679,0xdefb,0xd6da,0xd6db,0xd6fb,0xcefb,0xd6db,0xd6da,0xdedb,0xb639,0xa575,0x532e,0x3a2a,0x424a,0x4269,0x62ab,0xc659,0xc618,0xe73c,0xe73c,0xe73c,0xdf5c,0xdf5c,0xd75d,0xc679,0xe75c,0xdf3c,0xdf1b,0xe73c,0xe75d,0xe79d,0xce78,0xef7d,0xe77d,0xe77d,0xe77d,0xef7d,0xefff,0xb5d7,0xe7be,0x42ab,0x5aec,0x528a,0x4a29,0xe679,0xa534,0xffff,0xef9e,0xe79d,0xef9d,0xef9e,0xef9d,0xef9d,0xefbe,0xefbe,0xcedb,0xdeba,0xd679,0xef7d,0xef9e,0xef9e,0xef9d,0xefbe,0xf7de,0xf7be,0xefbe,0xf7ff,0xad75,0x9db7,0x52ab,0x6b6d,0x638e,0x62ec,0xf7de,0xce79,0xf7df,0xf7be,0xf7be,0xf7be,0xefbe,0xefbe,0xefde,0xf7df,0xceba,0xdeda,0xdedb,0xf79d,0xf7bf,0xf7be,0xf7de,0xefbe,0xf79e,0xf7be,0xefbe,0xf7be,0xef9e,0xad95,0xadd8,0x632d,0x6b6e,0x738f,0x732d,0xefbe,0xb5f7,0xffff,0xf79e,0xf79e,0xf79e,0xef9e,0xef9e,0xef9e,0xf79e,0xceba,0xce99,0xd6b9,0xdeda,0xf7de,0xef7d,0xef9d,0xef9d,0xef7d,0xef7d,0xef9d,0xef9d,0xe77e,0xbdd6,0xa556,0x5aec,0x6b4d,0x5b0d,0x526a,0xe71b,0x9d34,0xef9d,0xef7d,0xef7d,0xef9d,0xe77d,0xef7d,0xe77d,0xe75d,0xc658,0xf7bd,0xdf3c,0xe75c,0xad95,0xdf5c,0xe75d,0xdf5d,0xdf5d,0xe75c,0xe75d,0xe73c,0xe79e,0x8491,0xbe19,0x4a6b,0x4a8a,0x4a89,0x3186,0xce58,0x73ae,0xe77c,0xe73d,0xdf1c,0xdf1b,0xdf1b,0xdefb,0xdefb,0xe75d,0x8431,0xb5b5,0xd6db,0xdefc,0x62ca,0xd6fa,0xceda,0xd6ba,0xceba,0xd6ba,0xce9a,0xd699,0xdf3c,0x7bf0,0xce9b,0x2947,0x39c7,0x31c7,0x2924,0xa533,0x5b0b,0xceb9,0xce78,0xc678,0xc678,0xce99,0xc679,0xc658,0xc638,0xc658,0xce9a,0x5aeb,0xc6ba,0xbe37,0xbe38,0xbe37,0xbe38,0xbe38,0xbe38,0xbe38,0xb617,0xceba,0x73d1,0xadb7,0x18e4,0x2966,0x2185,0x1924,0xbe58,0x8451,0xb5f7,0xadd7,0xadd7,0xbdd7,0xb5d7,0xb5f7,0xb5f7,0xad56,0x39a6,0x1062,0x0883,0x18e3,0x9d13,0xb5d6,0xa596,0xa595,0x9d75,0xa575,0xadb7,0xa575,0xb576,0x5b2c,0x422a,0x18c4,0x1924,0x20e4,0x1905,0x18a3,0x8cd2,0x424a,0x9d34,0xa514,0x9d14,0x9d55,0x9d34,0x9cf3,0x9514,0x9d15,0x2925,0x10a2,0x10a3,0x18c3,0x9d13,0x8cf4,0x8cf3,0x8cd3,0x8cb2,0x8cd2,0x94b2,0x84b2,0x8493,0x2987,0x6b4e,0x10a3,0x0862,0x4aea,0x9d35,0x0884,0x10e3,0x1903,0x1904,0x1125,0x31c6,0x5288,0x5aea,0x5aaa,0x62ca,0x5289, +0xd678,0xdfff,0x4b2c,0x5aea,0x5aea,0x62c9,0x52c9,0x3a47,0x4248,0x4289,0x4249,0x4228,0x3a08,0x7b0d,0xcf7c,0x3aab,0x4228,0x4228,0x3987,0xad33,0x94b2,0xdefb,0xcedb,0xd6db,0xd6fb,0xd6fc,0xd6fb,0xcefb,0xc6ba,0x3249,0x73af,0x8cd3,0x6baf,0x8bf0,0xef3c,0xdf1c,0xd6fc,0xd6fc,0xdefc,0xdf1c,0xdefc,0xb659,0xb595,0x534e,0x3a29,0x428a,0x426a,0x6aab,0xb5f7,0xce38,0xdf5c,0xdf5d,0xdf5d,0xe73c,0xdf3c,0xdf7d,0x62cc,0xf77d,0xe77d,0x7c92,0xa491,0xefbe,0xb69a,0x630c,0xf7be,0xe77d,0xe77d,0xef7d,0xef7d,0xefde,0xadd7,0xefde,0x42ac,0x5b0c,0x62ec,0x4a49,0xe6da,0xad14,0xffff,0xef7e,0xef7e,0xef7d,0xef9d,0xef9e,0xf7be,0xef9e,0xefdf,0x52cc,0xb576,0xb5b6,0xe73c,0xf7be,0xef9e,0xefbe,0xefbe,0xf7be,0xefbe,0xefbe,0xf7ff,0xad55,0xa5f8,0x5aec,0x6b4c,0x6b8e,0x6b0c,0xffdf,0xce7a,0xf7de,0xefde,0xefbe,0xf7bf,0xefde,0xefbe,0xefbe,0xf7ff,0x5acd,0xbdd6,0xadb7,0x738d,0xe71b,0xf7de,0xf7df,0xf7be,0xf7be,0xf7de,0xf7bf,0xf7bf,0xf7bf,0xa555,0x9d56,0x5b4d,0x6b4e,0x6baf,0x6b2d,0xf7be,0xbe18,0xefbe,0xef9e,0xf7be,0xf7be,0xf7be,0xf7be,0xf79e,0xf7de,0xc69a,0x8c93,0x83d0,0xbe18,0xf7de,0xef9d,0xef9e,0xef9e,0xef9e,0xef9d,0xe77d,0xe77d,0xe79e,0xad75,0xa556,0x5a6b,0x632d,0x5b2d,0x526a,0xe73c,0xa514,0xefbe,0xef7d,0xef7d,0xe77d,0xe77d,0xef9d,0xe77d,0xe79e,0x4a49,0xef7d,0xefbe,0x8c72,0xa513,0xe75c,0xe75d,0xe73c,0xe75d,0xe75d,0xe75c,0xe75d,0xe79d,0x8c92,0xb5f8,0x4209,0x4a6a,0x4a6a,0x41c7,0xce58,0x73ae,0xe77c,0xdf1b,0xdf1b,0xdf1c,0xdf1b,0xdf1c,0xdefb,0xdf1c,0x6b4f,0xa534,0xd6fb,0xd71c,0x2104,0xe73b,0xceba,0xceba,0xd6da,0xd6da,0xceba,0xceba,0xdf3c,0x8430,0xd6bb,0x2987,0x39c8,0x39c7,0x28c4,0xa553,0x5aeb,0xd6da,0xc699,0xc679,0xc659,0xc679,0xc679,0xc679,0xc658,0xbe59,0xd6fc,0x3166,0xdf5b,0xbe58,0xbe58,0xbe38,0xbe18,0xbe18,0xc638,0xbe18,0xb5f7,0xbe99,0x738f,0xc619,0x2905,0x2946,0x2985,0x18c3,0xc657,0x8c92,0xbe17,0xb5d6,0xb5d6,0xadd6,0xb5d7,0xadd6,0xbe38,0x3187,0x73cf,0xbdf8,0xbe19,0xad97,0x18c3,0x8cb0,0xa575,0xa575,0xa576,0xad95,0xa555,0xad95,0xb596,0x5b2d,0x528c,0x10c3,0x1125,0x2124,0x1904,0x1082,0x8cd2,0x4249,0x9d34,0xa515,0xa555,0x9d55,0x9514,0xa514,0x9cf3,0x94f4,0x2106,0x7c2f,0x9515,0x420a,0x5b2b,0x9d13,0x94f4,0x94f3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8cb3,0x2986,0x6b8f,0x1083,0x1082,0x52a9,0xad56,0x1884,0x20e3,0x18e4,0x2104,0x18c4,0x31c6,0x5288,0x5aca,0x5aca,0x5aca,0x5a89, +0xd678,0xe7ff,0x532c,0x5aea,0x5aca,0x5ae9,0x5ae9,0x4228,0x4a8a,0x4228,0x4229,0x4249,0x4209,0x732d,0xd77c,0x42cc,0x4229,0x4229,0x3987,0xb575,0x9492,0xdf3c,0xcefb,0xd6db,0xcedb,0xd71b,0xd71a,0xdf9d,0x532d,0x9cd4,0xef9e,0xe79d,0xd75e,0x7411,0xb515,0xdf5c,0xd71b,0xd71b,0xd71b,0xdf1c,0xdf3c,0xbe59,0xad75,0x4b6e,0x3a28,0x4229,0x4a4a,0x6acb,0xadd7,0xc618,0xdf5c,0xe75d,0xdf5d,0xdf5c,0xdf5c,0xe77e,0x6bf0,0xce18,0xe7df,0x534e,0x7b4c,0xffff,0x8d35,0xacf3,0xf7be,0xe77d,0xef7d,0xef7d,0xe79d,0xefde,0xadd7,0xe7df,0x428b,0x5aec,0x62ec,0x5269,0xe6db,0xb596,0xffff,0xef9e,0xef9d,0xef9d,0xef9e,0xef9e,0xefbd,0xef9e,0xefdf,0x528b,0xffff,0xffff,0xf7be,0xef9e,0xf79e,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefff,0x9d34,0xa5f8,0x52eb,0x630c,0x6b4d,0x736d,0xf7ff,0xc639,0xf7ff,0xefbe,0xefbe,0xf7df,0xefbe,0xefbe,0xefbe,0xf7ff,0x6b2e,0xffde,0xffff,0xd71c,0xad75,0xf7fe,0xf7bf,0xf7de,0xf7be,0xf7de,0xefbe,0xefbe,0xefbe,0xad55,0x9514,0x6b6e,0x6b6d,0x6b8e,0x6b4d,0xf7be,0xbe17,0xf7de,0xf79e,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xf7df,0xbdf9,0xa4b3,0xffff,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef7d,0xef9e,0xef9e,0xad76,0xa576,0x4aac,0x632d,0x634d,0x528a,0xef5c,0x9513,0xf7be,0xef7d,0xe77d,0xe77d,0xef9d,0xe79d,0xe77d,0xf7df,0x9d57,0x8c91,0xffff,0x738e,0xf7de,0xe73c,0xe75c,0xe75d,0xe75c,0xe77d,0xe75c,0xe75c,0xe79e,0x8c92,0xb619,0x4209,0x4a6b,0x526a,0x41e7,0xce58,0x7bef,0xe77c,0xdf3c,0xdf3b,0xdefb,0xdf1b,0xdf1c,0xd71b,0xdf5d,0x7370,0xad34,0xd6db,0xdf3d,0x2146,0xd6fa,0xceba,0xceda,0xd6ba,0xd6db,0xceba,0xd6ba,0xd71b,0x8c51,0xd6bb,0x2167,0x39e8,0x39c7,0x2904,0xa553,0x5acb,0xd71b,0xce79,0xc679,0xc699,0xc679,0xc699,0xc699,0xce79,0xc659,0xd6db,0x3186,0xdf5b,0xbe38,0xc659,0xc658,0xbe38,0xbe38,0xbe18,0xbe18,0xb5f7,0xc679,0x738f,0xc619,0x2905,0x2986,0x2945,0x2104,0xbe17,0x8cb2,0xb616,0xb5d6,0xb5d7,0xadd6,0xb5d6,0xadb7,0xb5d8,0x31c7,0xb617,0xa595,0xadd6,0xb5f7,0x83f1,0x3a07,0xb5d6,0xadb6,0xa596,0xa575,0xad55,0xa576,0xb5b7,0x5b2d,0x526b,0x18c4,0x2104,0x2124,0x1924,0x08a2,0x8cb1,0x4249,0x9d54,0x9d14,0xa515,0x9d34,0x9534,0x9514,0x9514,0x9d35,0x3167,0x7bee,0x94d3,0x39c9,0x5b4c,0x94f2,0x94f3,0x94d2,0x94d3,0x94b3,0x8c92,0x8472,0x8cd3,0x2966,0x736f,0x0883,0x1082,0x4288,0xad15,0x2084,0x20e4,0x1904,0x1904,0x2904,0x39a5,0x5288,0x5ac9,0x62ca,0x5aca,0x5289, +0xd678,0xdfff,0x532c,0x5ac9,0x5aea,0x5aea,0x52e9,0x4227,0x4a69,0x4a49,0x4249,0x3a29,0x3a29,0x7b2d,0xcf3b,0x3acc,0x3a08,0x3a28,0x41c8,0xbdd6,0x9492,0xe77d,0xd6fb,0xdefb,0xd6fb,0xdefb,0xd71b,0xbf5d,0x6b2d,0xe77d,0xd6db,0xd6bb,0xd6db,0xae9a,0x5acc,0xef7d,0xdf1c,0xdf1c,0xdf3c,0xdf1c,0xdf1b,0xb618,0xa595,0x4b2d,0x4208,0x4a69,0x4249,0x72ed,0xad97,0xd679,0xe75c,0xdf5c,0xdf5c,0xdf3c,0xe75c,0xdf7d,0xa5f8,0x9cb2,0xdf9e,0x536e,0x6b2d,0xf7de,0x6c31,0xf77d,0xef7d,0xe77d,0xe77d,0xe79e,0xef9e,0xefde,0xc5f8,0xdfbe,0x42ab,0x530c,0x62eb,0x4a8a,0xe6fb,0xa534,0xffff,0xef9e,0xefbe,0xef9e,0xef9e,0xef9d,0xf79e,0xef9e,0xefdf,0x5acc,0xce38,0xc617,0xe73c,0xf7be,0xefbe,0xefbd,0xefbe,0xf7be,0xefbe,0xef9e,0xefff,0xa576,0xa5d8,0x5b0c,0x6b4e,0x6b6d,0x7b6d,0xf7ff,0xc638,0xf7ff,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0x6b6f,0xffbe,0xffff,0xbe39,0xbdb6,0xf7de,0xefbe,0xf7de,0xf7bf,0xf7de,0xf7be,0xf7be,0xef9e,0xad55,0x9d56,0x634e,0x6b8d,0x738e,0x6b0c,0xf7be,0xc617,0xf7df,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xef9e,0xf7be,0xad97,0xad14,0xf7be,0xef9d,0xef9e,0xef9e,0xef7d,0xef9d,0xef9d,0xef9e,0xef9e,0xef9e,0xb5b6,0xa556,0x52cc,0x5b0d,0x5b2d,0x5269,0xef5c,0x94f3,0xf79e,0xef7d,0xef9e,0xef7d,0xef9d,0xef9d,0xef7d,0xef7d,0xf7ff,0x6370,0x9471,0xb576,0xf7ff,0xe75d,0xe75d,0xe75d,0xe73c,0xe75d,0xdf5c,0xe75d,0xdf9d,0x9492,0xc639,0x4209,0x4a8a,0x4a8a,0x39a7,0xc658,0x840f,0xe77c,0xdf1c,0xdf3c,0xd6da,0xdf3b,0xdf1c,0xd71b,0xe75d,0x738f,0xad74,0xcefb,0xe75d,0x2906,0xdf1b,0xcedb,0xd6fb,0xd6da,0xce9a,0xce9a,0xd6ba,0xd6fb,0x8431,0xce9b,0x2946,0x39e8,0x31c7,0x2924,0xad94,0x5aca,0xd6fb,0xc659,0xc659,0xc699,0xc679,0xc69a,0xc679,0xce99,0xc658,0xd6fc,0x2966,0xdf5b,0xbe58,0xc659,0xbe59,0xbe58,0xbe58,0xbe38,0xbe18,0xb617,0xc679,0x73af,0xc618,0x2905,0x2186,0x2966,0x18e2,0xbe17,0x8cd3,0xb617,0xb5f7,0xb5f7,0xb5f7,0xb5d7,0xb5d7,0xa4f5,0x632d,0xbe17,0xad96,0xb596,0xb596,0xad76,0x2985,0xadd6,0x9d75,0xa596,0xa575,0xa575,0xa595,0xa596,0x632c,0x524b,0x20c4,0x2124,0x1904,0x1924,0x08a2,0x8470,0x4228,0x9d54,0x9d34,0x9d14,0x9d33,0x9d34,0x94f3,0x9cf4,0x9d35,0x39a8,0x1082,0x1083,0x31c7,0x84b3,0x8cd2,0x94b3,0x9492,0x8472,0x7bf0,0x7c10,0x7410,0x8cd3,0x2145,0x6b6f,0x10a3,0x1082,0x4288,0x9cd3,0x18c4,0x18e2,0x1903,0x1924,0x18c3,0x3985,0x52a8,0x5aca,0x5aea,0x5aea,0x5aa9, +0xd699,0xdfff,0x530b,0x5b0a,0x62ea,0x62ca,0x52e9,0x3a28,0x4a69,0x4249,0x4229,0x4229,0x3a4a,0x730c,0xcf3c,0x4acc,0x3a29,0x4229,0x41c7,0xb5b5,0x9492,0xe75d,0xd6db,0xd6db,0xd6fb,0xd71b,0xcefb,0xb73c,0x738f,0xd699,0xb5b7,0xdeda,0xe75c,0xbf3d,0x526a,0xef9e,0xd71c,0xd71c,0xd71b,0xdf1c,0xdf1b,0xb638,0xadb6,0x534e,0x4229,0x424a,0x4a6a,0x7b2c,0xad76,0xd69a,0xe75c,0xe75d,0xe75c,0xe75c,0xe75c,0xe77d,0xcf5d,0x7c31,0xadd7,0xb5d6,0x9d76,0xdf3c,0x73cf,0xf7ff,0xe77d,0xe77d,0xef7d,0xe77d,0xe79d,0xefff,0xbdd7,0xdfdf,0x42ac,0x5b0c,0x62ec,0x526a,0xef3c,0xb575,0xf7ff,0xef9e,0xef9e,0xefbe,0xf7be,0xef9e,0xef9e,0xef9e,0xefdf,0x5aed,0xad55,0xb5b6,0xe75c,0xf7be,0xf7be,0xefbd,0xefbe,0xf7be,0xefbe,0xefbe,0xf7ff,0xa575,0x9597,0x530c,0x636e,0x6b8e,0x730d,0xf7ff,0xc638,0xf7de,0xf7be,0xf7df,0xefbe,0xefbe,0xf7be,0xefbe,0xf7ff,0x5b2e,0x8c71,0x8c31,0x94b2,0xf79e,0xf7be,0xefde,0xf7df,0xf7df,0xf7df,0xf7de,0xf7be,0xef9e,0xad75,0x9515,0x634d,0x6b8e,0x636d,0x6b0c,0xf7de,0xbdf7,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf79e,0xef9e,0xf7de,0xad97,0xad35,0xf7df,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xe79e,0xb5b7,0xa556,0x5acc,0x5b0d,0x5b2d,0x5a49,0xe73c,0x9cf3,0xef9e,0xef7d,0xef7e,0xe77d,0xef9d,0xe77d,0xef7d,0xe77d,0xefbe,0xadd8,0x5249,0xef7d,0xe79d,0xe75c,0xe75c,0xe75d,0xe75c,0xe75c,0xdf5c,0xdf5c,0xdf5c,0x9472,0xbe39,0x3a09,0x4a6a,0x4a8a,0x39a6,0xc638,0x740f,0xe77c,0xdf3c,0xe71c,0xdf1b,0xdf1b,0xdf1c,0xd6fb,0xe75c,0x738f,0xad54,0xd71b,0xef5d,0x2905,0xe75c,0xceba,0xd6da,0xd6da,0xd6bb,0xcedb,0xceba,0xdefb,0x7c10,0xcebb,0x3147,0x31c7,0x29e7,0x2924,0x9d54,0x4a6a,0xdefb,0xc659,0xc699,0xc679,0xc679,0xce79,0xce79,0xc678,0xbe58,0xcedb,0x3166,0xdefa,0xc679,0xc659,0xbe59,0xc659,0xbe58,0xb618,0xbe18,0xb637,0xce9a,0x73af,0xbdf8,0x2125,0x2186,0x2165,0x10e2,0xbe58,0x8492,0xc658,0xb5d7,0xb5f7,0xb5d7,0xadf7,0xadd7,0xad97,0x2986,0xd6da,0xa5b6,0xa575,0xb5d7,0x7bb1,0x3a28,0xadd6,0xa596,0xad95,0xa575,0xa554,0xa575,0xb5f8,0x5b2c,0x5a6c,0x18c4,0x2105,0x1904,0x2124,0x10a3,0x7c50,0x526a,0x9d54,0x9d34,0x9513,0x9d34,0x9cf4,0x9d14,0x9514,0x9d14,0x2967,0x7bef,0x94d2,0xa555,0x8cd3,0x94f3,0x94d3,0x94d3,0x8cd3,0x84d3,0x84b3,0x8492,0x94f4,0x2987,0x73d0,0x1083,0x20a3,0x4a88,0xad35,0x18a4,0x1903,0x1904,0x1904,0x18c3,0x31a5,0x4a88,0x5aca,0x5aca,0x5aca,0x5aa9, +0xce78,0xdfff,0x4b0b,0x5ac9,0x5aea,0x5aea,0x52e9,0x3a27,0x3a48,0x426a,0x4249,0x3a29,0x3a09,0x730c,0xd77d,0x42ab,0x4248,0x4208,0x39a7,0xbdd6,0x9c93,0xe75c,0xcedb,0xd6db,0xd6fb,0xdefb,0xcefb,0xcf7d,0x326a,0x4a08,0x6b4e,0x52ab,0xad95,0x84f3,0x83cf,0xe75d,0xdefc,0xdf1b,0xdf1c,0xdf1c,0xdf1c,0xb659,0xbe17,0x534e,0x3a29,0x426a,0x4a6a,0x734c,0x9d75,0xd69a,0xe77d,0xe75d,0xdf5c,0xe75d,0xe77d,0xe75d,0xe7ff,0x6c52,0x5acb,0xe6fa,0xbefb,0x5b2d,0x9c92,0xef9d,0xe77d,0xe77d,0xef9e,0xe77d,0xe77d,0xe7ff,0xb5b6,0xdfbe,0x4aac,0x5b0d,0x630c,0x526a,0xef5c,0xb575,0xffff,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf79d,0xefdf,0x528b,0xffff,0xefbe,0xefbe,0xf7be,0xf7de,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7ff,0xa595,0x95b7,0x4aeb,0x636e,0x638e,0x6aec,0xf7ff,0xc638,0xf7ff,0xf7bf,0xf7be,0xf7df,0xf7be,0xf7be,0xefbe,0xf7ff,0x630e,0xe77e,0x8410,0xffdf,0xf7ff,0xf7be,0xf7df,0xf7be,0xf7be,0xf7df,0xf7de,0xffdf,0xef9e,0xb5f6,0x8cd4,0x6b6d,0x6b8e,0x6b8e,0x734d,0xf7be,0xbdf7,0xf7de,0xf7be,0xf7be,0xf7de,0xf7be,0xf7be,0xf7be,0xefbe,0xf7df,0xad97,0xad34,0xf7be,0xf7be,0xef9e,0xef9e,0xf7be,0xef9e,0xef9e,0xef9e,0xef9e,0xe77d,0xb596,0xa576,0x52cc,0x634d,0x5b2d,0x5269,0xef5c,0x9d14,0xef9e,0xef7d,0xef9e,0xef7d,0xef9d,0xe79d,0xef9e,0xef9d,0xe77c,0xcebb,0x6b4e,0xf7de,0xe77d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75c,0xdf5c,0xe75c,0xe79d,0x8c72,0xc65a,0x3a0a,0x528b,0x526b,0x39a7,0xce79,0x740f,0xe75c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdf3c,0xdefb,0xdf1b,0x8cb3,0x8430,0xe73c,0xe71c,0x2965,0xdf3c,0xceba,0xd6fa,0xd6da,0xd6db,0xceba,0xceba,0xdf1b,0x8430,0xcebb,0x3167,0x41c8,0x39c7,0x2104,0x9d33,0x528a,0xd6fb,0xc659,0xc679,0xc679,0xc679,0xce79,0xce59,0xc678,0xbe58,0xcebb,0x3166,0xd6fa,0xc658,0xc659,0xbe18,0xbe39,0xbe38,0xbe38,0xbe58,0xbe17,0xd6fb,0x73cf,0xce19,0x2145,0x31a7,0x3185,0x1903,0xc678,0x8492,0xb657,0xb617,0xb5f7,0xb5d7,0xadf7,0xa5b6,0xadb7,0x3167,0x6b6d,0xbe38,0xb597,0x9cb4,0x10a3,0x9d13,0xadb6,0xad96,0xa596,0xa575,0xa575,0xa575,0xb5d7,0x5b2d,0x5aac,0x10a3,0x2104,0x2105,0x2104,0x20c3,0x7c70,0x52ab,0xa575,0x9514,0x9d14,0x9d34,0x9514,0x9d34,0x94f4,0x9534,0x31a7,0x6bce,0x8cd2,0x8cd3,0x94d3,0x8cd3,0x94f4,0x8cd3,0x94d3,0x8cb3,0x8cb3,0x94f3,0x84b2,0x31c8,0x7bf1,0x1063,0x1883,0x4aa9,0xa535,0x10a4,0x20e3,0x10c4,0x2104,0x20e4,0x31a5,0x4a68,0x52c9,0x5aea,0x5aca,0x5aa9, +0xd699,0xd7df,0x430b,0x5b0a,0x5309,0x52e9,0x52ca,0x3a28,0x4a89,0x428a,0x3a49,0x4249,0x39a8,0x836e,0xd79c,0x3a8b,0x4a28,0x4a29,0x39a7,0xbdd6,0x9c93,0xef7c,0xcedb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0x9597,0x52ab,0xbe17,0xbeba,0x31e8,0x3186,0xc596,0xd73c,0xdf3c,0xdf3c,0xdf3c,0xd71c,0xdf1c,0xb639,0xb5f7,0x430d,0x4249,0x4a69,0x4a4a,0x7b4d,0x9d76,0xd679,0xdf5c,0xe77d,0xe75c,0xe75c,0xe75d,0xdf5d,0xdf7d,0x9dd8,0x4a09,0xffde,0xe7be,0x3a29,0xd658,0xef7d,0xe77d,0xef9e,0xe77d,0xe77d,0xe77d,0xefff,0xbdf8,0xdfbe,0x4a6b,0x62ec,0x630c,0x5a8b,0xef5c,0xb555,0xffff,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf7be,0xefbe,0xefdf,0x4a8b,0xde9a,0xd69a,0xef5d,0xf79e,0xf7be,0xf7be,0xefbe,0xefbe,0xefbe,0xf7be,0xefdf,0xa555,0x9dd7,0x530c,0x6b6e,0x6b6d,0x730d,0xf7ff,0xc639,0xf7df,0xef9e,0xf79e,0xf7df,0xf7df,0xf7df,0xf7df,0xffff,0x5aed,0xf7df,0xc67a,0x7b8f,0xffff,0xf7de,0xf7bf,0xf7de,0xf7bf,0xf7be,0xf7be,0xf7be,0xef9e,0xbdf7,0x8cf4,0x634e,0x6b6e,0x6b6e,0x734d,0xf79d,0xbe17,0xffff,0xef9e,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xb5b8,0xad14,0xf7be,0xef9d,0xf7be,0xef9e,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef7e,0xbdf8,0xa556,0x5aac,0x630d,0x5b0b,0x5269,0xe71b,0xa534,0xef9e,0xef7d,0xef9e,0xef9d,0xef7d,0xef9e,0xef7d,0xef7d,0xe75c,0xcebb,0x6b4e,0xefde,0xe77d,0xe75d,0xef7d,0xe75c,0xef9d,0xe77d,0xe75c,0xe75d,0xef9e,0x8c92,0xc659,0x3a09,0x428a,0x526b,0x39a7,0xce79,0x7bef,0xe75d,0xdf1c,0xd71b,0xd71b,0xdf3c,0xe77d,0xdf1c,0xdf1c,0xd73d,0x3a29,0x6b2d,0x5229,0x8430,0xd6fb,0xd6da,0xd6da,0xd6da,0xd6da,0xceda,0xd6da,0xd6fb,0x8431,0xcedb,0x31a7,0x41e8,0x39c7,0x18e4,0xa554,0x528a,0xd6fb,0xc65a,0xc679,0xc699,0xc658,0xc679,0xce79,0xc679,0xc659,0xceba,0x29a6,0xd71a,0xbe78,0xc658,0xbe38,0xbe58,0xc638,0xbe38,0xbe38,0xbe18,0xceda,0x636e,0xce19,0x2145,0x3146,0x2966,0x1924,0xbe58,0x8492,0xb638,0xb5f7,0xb5f8,0xadd6,0xadd7,0xb5d7,0xad96,0xbdf8,0x630d,0x1883,0x1083,0x2966,0x94f3,0xb5f7,0xa596,0xa575,0xa575,0xa5b6,0xa596,0xad95,0xb596,0x5aec,0x5ace,0x10a3,0x2124,0x2904,0x20e4,0x18c3,0x7430,0x52eb,0xa595,0x9d14,0xa514,0xa534,0x8cf4,0x9d34,0x9513,0x9d55,0x4a4a,0x63ad,0x94f3,0x94f4,0x94d4,0x8cd3,0x94d3,0x8cf4,0x8cf3,0x94d3,0x94d2,0x94d3,0x84b3,0x31c8,0x7bd0,0x1063,0x10a2,0x4a89,0xad76,0x18c5,0x18e4,0x1104,0x2104,0x20a4,0x31a5,0x4a88,0x5aca,0x62ea,0x62ea,0x5a89, +0xd699,0xd7be,0x430b,0x5aea,0x5aea,0x52ca,0x52ea,0x3a27,0x41e8,0x3a49,0x3a29,0x4249,0x31e8,0x8bae,0xcf7c,0x328b,0x4a28,0x4a29,0x41a8,0xb5d6,0x94b3,0xe75c,0xd6db,0xd6db,0xd6db,0xd6fb,0xd6db,0xceda,0xdf5d,0xa5f8,0x5b6e,0x5aec,0x8472,0xa5b7,0x8451,0xdf3c,0xd71c,0xdf3c,0xd71b,0xd71c,0xdf1c,0xb639,0xbdd7,0x4acd,0x4229,0x426a,0x4a6a,0x7b4d,0xadd6,0xce59,0xe75d,0xdf5d,0xdf5c,0xe75c,0xe75d,0xe75d,0xe73c,0xcf3d,0xb5d7,0xe77d,0xe77d,0x9514,0xe71c,0xe77d,0xef7d,0xef9e,0xe79d,0xef9e,0xef7d,0xefff,0xbe18,0xd77d,0x52ac,0x52ec,0x5aec,0x5a8a,0xef3c,0xad35,0xffff,0xef9e,0xf7be,0xef9e,0xef9e,0xefbe,0xef9d,0xefbe,0xe79e,0x9535,0x9d15,0x9cd3,0xe71b,0xf7be,0xefbe,0xefbe,0xef9e,0xef9e,0xefbe,0xf7be,0xf7ff,0xad95,0xa5b8,0x5b0d,0x6b6f,0x6b8e,0x736d,0xf7ff,0xce7a,0xffff,0xf7be,0xf7be,0xf7bf,0xf7bf,0xf7df,0xefbe,0xf7de,0xa575,0xf7bd,0xefdf,0xa555,0xdf1c,0xf7de,0xefbe,0xefbe,0xf7bf,0xf7be,0xefbe,0xf7be,0xef9e,0xbe18,0x94f4,0x632d,0x738e,0x6b6e,0x734c,0xf7be,0xbdf7,0xf7ff,0xef9e,0xf7be,0xefbe,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xc679,0xc658,0xf7be,0xefbd,0xef9d,0xef9e,0xf79e,0xf79e,0xef7d,0xef9d,0xef9d,0xe79e,0xb5d7,0xa576,0x5a8c,0x5aed,0x5b0c,0x526a,0xe71c,0xa554,0xef7d,0xef9d,0xef7e,0xef9e,0xef9e,0xef9e,0xe77d,0xe77d,0xe75c,0xdf3c,0xadb6,0xe77d,0xe77d,0xe77c,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xef9e,0x94f3,0xbe5a,0x4a4a,0x4a6a,0x526a,0x3986,0xce38,0x73ef,0xefbd,0xdf1b,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xdf1b,0xdefb,0xe71c,0xdefc,0xa596,0xb5f7,0xdf5c,0xd6ba,0xd6db,0xceba,0xceba,0xd6db,0xd6bb,0xceba,0xd6fc,0x8c30,0xce9b,0x2947,0x41e8,0x39e8,0x2104,0xa534,0x4a49,0xdefb,0xc679,0xc699,0xce99,0xc699,0xc679,0xc639,0xc639,0xc659,0xbe58,0x9555,0xced9,0xbe59,0xbe38,0xbe38,0xbe18,0xc618,0xbe18,0xbe38,0xbe17,0xdefb,0x6b8f,0xad56,0x2125,0x2966,0x3165,0x20e3,0xc637,0x7bef,0xc678,0xb5f7,0xadb6,0xadd7,0xadd6,0xb5d6,0xb5d6,0xadb6,0xbe99,0xb5f8,0xadf8,0xb618,0xb5f6,0xb5b6,0xad76,0xa595,0xadb6,0xadb6,0xa575,0xa575,0xa555,0x5b2d,0x62ce,0x18c4,0x2124,0x20e5,0x20e4,0x18c4,0x6bee,0x6b8e,0xad95,0xa555,0xa535,0xa555,0x9d55,0xa555,0xa555,0x9d34,0xa576,0x9d75,0x9d35,0xa535,0x9d14,0x9534,0x9d34,0x9514,0x9d35,0x9d55,0x9d34,0x9cf4,0x8472,0x39e8,0x6b8f,0x1062,0x1082,0x3a47,0xad96,0x18a5,0x18e4,0x0903,0x1904,0x10e4,0x3185,0x4a88,0x5ae9,0x62c9,0x62ca,0x5aa9, +0xd678,0xd79e,0x4aec,0x62ea,0x5aca,0x52ca,0x52c9,0x4227,0x4228,0x4269,0x3a29,0x4208,0x4209,0x93af,0xcf9d,0x3a4a,0x41e7,0x4a09,0x3987,0xa514,0x8cf3,0xd6da,0xe77c,0xdf5c,0xd73c,0xdf3b,0xe75c,0xe75c,0xef5d,0xef9d,0xf7fe,0xf7df,0xf7be,0xefde,0xefde,0xef9d,0xf79e,0xefbe,0xf7de,0xefbe,0xe77e,0x94b3,0xd75d,0x4a6a,0x4a69,0x424a,0x426a,0x72ec,0xc6ba,0xb5d6,0xef9e,0xefbe,0xefbe,0xf7df,0xf7df,0xefff,0xf7df,0xffff,0xffff,0xf7de,0xefde,0xf7fe,0xf7ff,0xf7de,0xf7fe,0xf7de,0xf7df,0xf7de,0xf7fe,0xe7de,0xa535,0xbedb,0x4a8b,0x5b0c,0x5aec,0x526a,0xce37,0xad96,0xf7be,0xffff,0xffdf,0xf7de,0xf7de,0xf7df,0xf7de,0xf7de,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7de,0xf7be,0xf7ff,0xd6db,0xce9a,0x8cf4,0x5b2c,0x6b8e,0x6b8e,0x6b2d,0xffde,0xceba,0xfffe,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xf7df,0xf7de,0xf7df,0xffff,0xffff,0xffff,0xdefb,0xe73c,0x7c31,0x6b6e,0x738e,0x6b6d,0x6b0b,0xffbe,0xc658,0xfffe,0xffdf,0xf7df,0xf7ff,0xffdf,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7df,0xf7ff,0xffff,0xffff,0xffff,0xf7be,0xf7bf,0xf7ff,0xdf3c,0xdf3c,0x8cd4,0x632c,0x634e,0x5b2d,0x5aab,0xe6fa,0xadf6,0xf7be,0xf7de,0xefbe,0xf7de,0xf7de,0xefde,0xef9d,0xf7df,0xf7de,0xf7de,0xffff,0xf7de,0xf7de,0xf7de,0xefbe,0xef9d,0xf7be,0xf7be,0xefbe,0xef7d,0xdefc,0xbdf8,0xad97,0x526a,0x4a6a,0x526a,0x41c7,0xb596,0x94b3,0xdefb,0xefbd,0xef9d,0xef9d,0xe77c,0xe75c,0xef7c,0xe79d,0xe75c,0xe75c,0xdf1b,0xdf1b,0xdf1b,0xe75c,0xe77c,0xdf5c,0xe73c,0xe73c,0xe75d,0xe73c,0xc679,0xa594,0xad76,0x3167,0x41c8,0x31c7,0x2966,0x8c2f,0x8451,0xa555,0xce99,0xd6ba,0xdeda,0xce99,0xd6ba,0xceba,0xceba,0xd69a,0xceb9,0xce79,0xceba,0xc679,0xbe59,0xbe59,0xc659,0xc658,0xc617,0xbdf7,0xbe18,0x9cd2,0x8cb2,0x734f,0x2125,0x3186,0x3965,0x18a2,0xa533,0x5aac,0xad35,0xc658,0xb617,0xb5f7,0xadb6,0xadb6,0xad74,0xa574,0xad95,0xad75,0xa534,0x9d14,0xa534,0x9cf3,0x9cf3,0x9d33,0x9d34,0x9d13,0x9d13,0x94d2,0x6b8d,0x94b2,0x4188,0x18e4,0x2105,0x2104,0x1904,0x1904,0x2164,0x9d55,0x424a,0x6b6e,0x738e,0x6b8d,0x636d,0x636d,0x6b6d,0x6b4d,0x634d,0x6b4e,0x630d,0x5aeb,0x52aa,0x52aa,0x528a,0x4a49,0x4a49,0x4a28,0x4a48,0x4208,0x3228,0x8471,0x4a09,0x18a3,0x10a2,0x3227,0xa555,0x18a5,0x1103,0x08e4,0x2104,0x2104,0x2985,0x4a68,0x5aea,0x5ac9,0x62c9,0x5aa9, +0xd679,0xcfbe,0x4acb,0x5aea,0x5aea,0x5aca,0x5ac9,0x4207,0x4a69,0x426a,0x4229,0x4a49,0x4a29,0x8b8f,0xcf9d,0x322a,0x39e7,0x4a28,0x39e8,0x4a4a,0xc658,0x94f4,0x8452,0x8451,0x8492,0x8c72,0x9472,0x8c92,0x8471,0x9d35,0x9514,0x94f3,0x9d35,0x9d35,0x9d35,0xa575,0x9d55,0xa575,0xa575,0xa576,0xadf7,0xe77d,0x8492,0x4207,0x5249,0x4a8b,0x4a8a,0x4228,0xce38,0xdedb,0xa555,0x9d14,0xa554,0xa554,0xa514,0xa555,0xad75,0xad75,0xad75,0xad76,0xad75,0xb596,0xb5b6,0xb5b6,0xad96,0xad75,0xad76,0xad76,0xa575,0xbe17,0xefdf,0x538e,0x52cc,0x5b0b,0x5acb,0x52cc,0x7b8e,0xef9d,0xc679,0xb5b7,0xa576,0xad96,0xad96,0xad96,0xa596,0xad96,0xadb6,0xad96,0xad75,0xad96,0xad76,0xadb6,0xb5b7,0xb5d7,0xbdf7,0xb5d7,0xb5f7,0xbdf8,0xce7a,0xef9e,0x5b2d,0x6b8e,0x6b8e,0x738f,0x736e,0xbd74,0xf7de,0xc659,0xb5b6,0xbdb7,0xbdb7,0xbdb7,0xb596,0xb5b6,0xc5f7,0xbdd7,0xbdf8,0xb5d7,0xb5b7,0xad96,0xad76,0xa535,0xa535,0xa535,0xa555,0xa555,0xa555,0xd6ba,0xe77d,0x632d,0x6b4e,0x6b8f,0x636e,0x5b2c,0xad34,0xffff,0xce79,0xbdf7,0xbe18,0xbe38,0xb5d7,0xb5d7,0xbdd7,0xb5d7,0xbdf7,0xbdf7,0xb5d7,0xadb6,0xad96,0xb5d7,0xadb6,0xb5d6,0xb5d6,0xb5b6,0xad96,0xadb5,0xdefb,0xef9e,0x532d,0x634d,0x636d,0x634d,0x5aeb,0x83cf,0xffdf,0xc659,0xb5d6,0xbdb6,0xad75,0xad75,0xad75,0xad96,0xb5b6,0xb5b6,0xb5d6,0xb5b6,0xad96,0xb596,0xb5b5,0xad75,0xad75,0xad75,0xb596,0xb596,0xb5b6,0xce59,0xe6fc,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x5aaa,0xef3c,0xbe18,0xa555,0xa534,0xa534,0x9d34,0x9d14,0x9d14,0xa534,0xa514,0x9cd3,0x9d14,0xa555,0x9cf4,0x94f4,0x9514,0x9d33,0xa535,0xa535,0xa555,0xa575,0xc659,0xc5f7,0x41e9,0x39e7,0x39e7,0x31e8,0x39e7,0x3145,0xbdf6,0xc679,0xad96,0xa576,0xa576,0xb617,0xad96,0xadb6,0xad95,0xadb5,0xbe58,0xad96,0xa575,0xadd7,0xa596,0x9d54,0xadb6,0xa595,0xa595,0x9d54,0xa575,0xbe18,0x9cb3,0x20e4,0x3166,0x3186,0x2166,0x2145,0x2123,0xa575,0x9d55,0x9d14,0x9cd4,0x94b2,0x9cf3,0x9cf3,0x9d13,0x9d14,0x9d14,0xa4f4,0xa4f4,0xa514,0x9d14,0xa534,0xad75,0xb596,0xa555,0x9d14,0x94f4,0x9d14,0x9d35,0x5aec,0x1884,0x2105,0x1904,0x1904,0x18e5,0x1104,0x1081,0x41e7,0x94b2,0x9d13,0x94d3,0x8c91,0x8cb2,0x8471,0x8c71,0x9493,0x8c72,0x8451,0x8451,0x7c50,0x7c50,0x7450,0x7c30,0x8431,0x7c30,0x8430,0x7c30,0x7c0f,0x7baf,0x41e9,0x10a3,0x10e3,0x10c2,0x3207,0x9cf4,0x18c5,0x2104,0x18e3,0x18e3,0x20a4,0x2965,0x5267,0x5aa9,0x5aca,0x5aca,0x52ca, +0xd679,0xcf9e,0x42cb,0x5b0a,0x5ae9,0x5ae9,0x52c9,0x4227,0x4228,0x426a,0x4249,0x4249,0x4a29,0x8bd0,0xd7bd,0x2a2a,0x3a08,0x3a28,0x4229,0x3a29,0x626a,0xa4d3,0xa535,0xad55,0xad75,0xad55,0xa555,0x9d54,0xad96,0xb596,0xa554,0xa534,0xad74,0xad55,0xad55,0xa534,0xa534,0xad54,0xad34,0xa534,0x9d54,0x4aab,0x41e9,0x5269,0x5269,0x4a69,0x4269,0x3a8a,0x5229,0x9451,0xbdb6,0xc617,0xc637,0xc658,0xce99,0xbdf7,0xc618,0xc638,0xc638,0xc618,0xbe18,0xc5f8,0xbdf7,0xce38,0xc618,0xce59,0xce79,0xce79,0xc679,0xc658,0x5b4c,0x52cb,0x5b0c,0x52cb,0x52cb,0x5aec,0x5b0c,0x634c,0xc5d6,0xd6ba,0xd69a,0xd6b9,0xd69a,0xd679,0xce79,0xd6ba,0xd679,0xd69a,0xdeda,0xd6da,0xdedb,0xdeda,0xd6bb,0xd6da,0xd6db,0xdeda,0xdeda,0xd699,0xc5f7,0x5b2d,0x632d,0x6b8e,0x6b6e,0x636e,0x73ae,0x632c,0x8c50,0xd659,0xde9a,0xdeba,0xdeba,0xdeba,0xdeba,0xdeba,0xd6ba,0xd6ba,0xdedb,0xd6bb,0xd69a,0xd6da,0xd6da,0xd6db,0xdefb,0xd6db,0xdf1b,0xdf1b,0xdefb,0xc618,0x534d,0x5b4e,0x636e,0x6bae,0x638d,0x636e,0x62cb,0x9471,0xce59,0xde9a,0xdeba,0xd6ba,0xd6da,0xd6ba,0xd6da,0xd6ba,0xd6ba,0xd69a,0xd69a,0xd69a,0xd6ba,0xce59,0xd69a,0xd6ba,0xd6ba,0xd6ba,0xdeba,0xd69a,0xb5d7,0x52cc,0x5acb,0x634d,0x5b2c,0x632d,0x632d,0x4a8a,0x6b2c,0xc617,0xc618,0xc638,0xce59,0xce79,0xc638,0xc5f7,0xc5f7,0xc5f7,0xce18,0xc618,0xc618,0xbdf7,0xc5f7,0xc5f8,0xbdd7,0xbdf7,0xb5b6,0xbdb7,0xb5b6,0x9cd4,0x4a29,0x4a6a,0x528a,0x4a6a,0x4a8a,0x428a,0x526a,0x4a08,0x9cd2,0xb595,0xad75,0xb575,0xad75,0xa534,0xa534,0xa533,0x9cf3,0x9cd3,0x9cf3,0xa514,0xa4f3,0xa513,0x94b2,0x9492,0x9491,0x9491,0x9491,0x9492,0x83ae,0x3986,0x31c7,0x41e8,0x39c7,0x29a7,0x31e7,0x39a6,0x3124,0x5a8a,0x62ec,0x6b6d,0x630c,0x630c,0x62cb,0x6aeb,0x630b,0x6b0b,0x5acb,0x62ec,0x62eb,0x6aeb,0x5aaa,0x5aca,0x5289,0x4a69,0x4a69,0x4a69,0x5289,0x49e8,0x20e5,0x2946,0x2185,0x1945,0x1946,0x1946,0x1946,0x0862,0x2985,0x4207,0x39e6,0x41c7,0x3986,0x39a6,0x31c6,0x3186,0x2945,0x2945,0x2945,0x2965,0x3144,0x2944,0x2124,0x2924,0x2104,0x2945,0x2145,0x2124,0x0861,0x10a2,0x1924,0x1104,0x18e4,0x1105,0x18e5,0x1904,0x2124,0x20c3,0x0801,0x0800,0x0820,0x0021,0x0820,0x0820,0x0820,0x0822,0x0821,0x0041,0x0021,0x0800,0x0000,0x0021,0x0021,0x0820,0x0820,0x0020,0x0021,0x0000,0x0820,0x0062,0x00e3,0x10e3,0x0082,0x3a27,0x9d34,0x18c5,0x10e3,0x10e3,0x1904,0x2105,0x2164,0x4a47,0x5aa9,0x5aaa,0x5ac9,0x52a9, +0xd699,0xc75d,0x4aca,0x5b0a,0x5ae9,0x5ae9,0x52c9,0x4248,0x3a07,0x4269,0x4a48,0x4209,0x39c8,0x9430,0xd7bd,0x324a,0x39e8,0x3a07,0x4208,0x3a08,0x3a08,0x4228,0x4228,0x3a28,0x4207,0x4207,0x41e8,0x39c7,0x39e7,0x39e8,0x4229,0x3a29,0x3a29,0x3a29,0x4208,0x4228,0x4248,0x4249,0x4249,0x4249,0x428a,0x4a49,0x4a49,0x4a6a,0x426a,0x4268,0x4249,0x426a,0x4a8a,0x526a,0x4a49,0x4a49,0x4a49,0x5289,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x4aaa,0x4289,0x426a,0x4a6a,0x4a8a,0x52cb,0x5aec,0x530b,0x52ec,0x5b0c,0x632c,0x5b0c,0x5aeb,0x5aec,0x52eb,0x52cb,0x5aab,0x5aec,0x52cb,0x4aab,0x52cb,0x630c,0x630c,0x62ec,0x6b2d,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632d,0x6b2d,0x5acb,0x52ab,0x52ab,0x636d,0x6b6e,0x634e,0x6b6e,0x6b6e,0x736e,0x6b4d,0x6baf,0x6bce,0x6b6d,0x6b4c,0x6b4d,0x6b6e,0x634d,0x636d,0x6b8e,0x636e,0x638e,0x6bae,0x636d,0x634d,0x634d,0x6b6d,0x6b6d,0x6b6d,0x738d,0x734d,0x738e,0x5b0d,0x738f,0x6b8e,0x6baf,0x636e,0x73ae,0x6b8e,0x6b4e,0x634e,0x736d,0x736d,0x6b2d,0x62ec,0x734e,0x5aed,0x630d,0x5aec,0x634c,0x6b0c,0x636d,0x534c,0x5aec,0x630c,0x736e,0x5b2d,0x630c,0x6b4e,0x632d,0x5acb,0x52cb,0x530c,0x5b2d,0x5aeb,0x6b2c,0x630c,0x52ec,0x52cb,0x5acb,0x630c,0x52cb,0x4a8b,0x5aca,0x4a6a,0x528a,0x528a,0x52ab,0x52ab,0x4acb,0x4aab,0x528b,0x528b,0x528b,0x426a,0x4a4a,0x4a6a,0x52ab,0x4a8a,0x426a,0x4a6a,0x4a4a,0x4a6a,0x4a4a,0x4a6a,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4229,0x4229,0x4228,0x3a28,0x3a08,0x4229,0x3a08,0x31e8,0x39e8,0x41e8,0x39c7,0x41e7,0x39c7,0x31e7,0x4208,0x39a7,0x39e7,0x39e7,0x29c7,0x3208,0x3a08,0x39e8,0x3a07,0x39e8,0x31a7,0x29c8,0x31c6,0x39e7,0x31c7,0x31a6,0x31c6,0x29c7,0x29a6,0x31a7,0x31a6,0x3186,0x3185,0x39a7,0x29a6,0x3166,0x39a7,0x3185,0x3186,0x3166,0x29a6,0x2167,0x2966,0x2966,0x2145,0x3166,0x2966,0x2146,0x2166,0x2165,0x2166,0x1146,0x2145,0x2145,0x1965,0x2166,0x2125,0x2145,0x2125,0x2145,0x2966,0x2145,0x2125,0x1924,0x1925,0x1925,0x1904,0x2125,0x2124,0x1924,0x2124,0x2125,0x1905,0x1105,0x18e5,0x1904,0x1904,0x20e4,0x2104,0x2103,0x1904,0x10e4,0x18e4,0x20e4,0x20e4,0x18e4,0x08e3,0x10e4,0x18e3,0x1903,0x18e3,0x18e3,0x10e2,0x1103,0x10e4,0x18c3,0x18e4,0x10e3,0x18e4,0x18e4,0x08e3,0x1103,0x10e3,0x10e3,0x10e3,0x10e3,0x08c3,0x10e3,0x08a3,0x4248,0x9d55,0x10c5,0x10e4,0x10e4,0x1904,0x18c2,0x2964,0x3a47,0x52a9,0x5ac9,0x5ac9,0x5a89, +0xde99,0xc75d,0x4aea,0x5b0a,0x52ea,0x5ae9,0x52c9,0x3a27,0x4248,0x4269,0x4a29,0x4249,0x39c8,0x9430,0xcf5c,0x322a,0x39e8,0x4228,0x4208,0x4208,0x3a28,0x4228,0x3a28,0x4229,0x4228,0x4a28,0x4228,0x3a08,0x3228,0x3a29,0x3a28,0x4229,0x4229,0x424a,0x4229,0x4229,0x4249,0x4a49,0x4269,0x3a49,0x3a49,0x4a4b,0x4a49,0x4249,0x4249,0x4249,0x3a49,0x4249,0x528a,0x4a8a,0x4a8a,0x4a8a,0x52ab,0x52aa,0x52aa,0x5a8b,0x52cb,0x5acb,0x52ab,0x52cc,0x5aac,0x5acc,0x52ab,0x4acb,0x52cc,0x52ec,0x52cb,0x5aec,0x5aec,0x52ec,0x5acb,0x52ab,0x5aec,0x52eb,0x5b2c,0x5b0c,0x5b0c,0x632c,0x5b0c,0x632d,0x632d,0x5b4d,0x5b2d,0x5b0d,0x5b2c,0x632d,0x5b4d,0x632d,0x634e,0x634d,0x634d,0x636e,0x636d,0x634d,0x5b6e,0x638e,0x73ae,0x6b8f,0x638e,0x636e,0x6b6d,0x632d,0x6b8e,0x6b4d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x6baf,0x73cf,0x6b8e,0x6bae,0x73ae,0x73ae,0x6b6e,0x73ae,0x73af,0x6bae,0x6b6d,0x6b6e,0x6bae,0x6bce,0x63ae,0x634d,0x736e,0x738e,0x634d,0x73af,0x738e,0x6b8e,0x6b8e,0x638d,0x638d,0x634d,0x6b6e,0x636d,0x6bae,0x738e,0x6b4d,0x6b4d,0x632e,0x5b8e,0x5b6d,0x634d,0x6b4d,0x634e,0x634d,0x634d,0x6b4d,0x6b6d,0x634d,0x6b4d,0x6b4c,0x632c,0x5b0c,0x5aec,0x5aed,0x5b0d,0x5b0d,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cc,0x5aec,0x5aec,0x5aec,0x5b0b,0x52eb,0x5aeb,0x5aec,0x4acc,0x5acb,0x528b,0x52ab,0x52ab,0x5aab,0x5aec,0x52cb,0x5aab,0x52ab,0x52cb,0x4acb,0x52aa,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x528a,0x4a6a,0x4a4a,0x4269,0x4a49,0x4a69,0x4249,0x4229,0x3a09,0x4a49,0x4228,0x3a29,0x3a29,0x3a08,0x4207,0x4a08,0x4a2a,0x4228,0x41e8,0x4228,0x4208,0x39e8,0x39e8,0x3a08,0x31e8,0x39e8,0x39e7,0x29a7,0x31c7,0x39c8,0x31c7,0x39c7,0x39e7,0x3a07,0x3207,0x31c7,0x31a7,0x39a7,0x3187,0x2986,0x3186,0x31a7,0x29a7,0x29a6,0x3186,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2966,0x2986,0x2166,0x2966,0x2986,0x2165,0x2945,0x2145,0x2965,0x1966,0x2966,0x2965,0x2146,0x2145,0x2145,0x3146,0x2945,0x2125,0x2925,0x2145,0x2125,0x1925,0x1925,0x1145,0x2144,0x2124,0x3105,0x2104,0x2124,0x2125,0x1905,0x1905,0x1905,0x1904,0x1924,0x1903,0x1903,0x1904,0x2104,0x1904,0x20e5,0x18e4,0x2103,0x18e4,0x10e4,0x1104,0x1903,0x18e3,0x18c4,0x1103,0x18e3,0x10e4,0x10c4,0x18e3,0x20e3,0x1903,0x10e3,0x10c3,0x18c4,0x18a4,0x18c3,0x10c3,0x10e3,0x18c2,0x18c2,0x10e3,0x1082,0x31e6,0x9d55,0x20e5,0x10e4,0x10e3,0x2104,0x18c4,0x2964,0x4a47,0x5aaa,0x5aa9,0x5ac9,0x5a89, +0xd699,0xc75d,0x4aca,0x5aea,0x52e9,0x5ae9,0x52c9,0x4228,0x4208,0x4249,0x4249,0x4249,0x41c8,0x9c51,0xc73c,0x3a4a,0x4a28,0x4229,0x3a29,0x3a28,0x3a48,0x4229,0x4208,0x4248,0x3a28,0x3a28,0x4228,0x4208,0x3208,0x4229,0x3a08,0x4228,0x4228,0x3a29,0x3a49,0x4209,0x4248,0x4a49,0x4a48,0x3a48,0x4248,0x4249,0x4269,0x4249,0x4a69,0x4a69,0x3a49,0x426a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a8a,0x52cb,0x528a,0x52ab,0x528a,0x52aa,0x52ab,0x4aac,0x4aab,0x5aab,0x62eb,0x52cb,0x5acc,0x5aec,0x5aec,0x5acc,0x5acb,0x5acb,0x5aec,0x52cb,0x5aec,0x5b0c,0x5b0c,0x632c,0x5aec,0x630c,0x52ec,0x52ec,0x5aec,0x5b2d,0x5b2d,0x5b0d,0x5b2c,0x634d,0x5b6d,0x6b4e,0x632d,0x632c,0x5b4d,0x632d,0x636d,0x636d,0x630d,0x6b0d,0x6b4e,0x5b4d,0x5b2e,0x736e,0x638d,0x636d,0x6b6e,0x6b8e,0x6b8e,0x636e,0x638e,0x6b8d,0x6bae,0x638e,0x6baf,0x6b6e,0x636d,0x6baf,0x738f,0x738e,0x73af,0x6b8e,0x8410,0x6b6e,0x73af,0x73cf,0x6b4e,0x5b4d,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x634d,0x636d,0x636e,0x5b0d,0x6b8e,0x638e,0x6b4d,0x630c,0x636d,0x6b6d,0x5b4d,0x638e,0x636e,0x634e,0x5b2d,0x632d,0x5b0d,0x532d,0x636e,0x634e,0x6b6e,0x632d,0x5b0d,0x634d,0x5b0d,0x632c,0x5b0c,0x62ec,0x630d,0x5b2d,0x5aec,0x5b2c,0x52eb,0x5b2d,0x632c,0x62ec,0x52ed,0x52ec,0x52cc,0x5aec,0x52cc,0x5aec,0x5acb,0x5acb,0x5acc,0x52cb,0x5aeb,0x52ec,0x52cb,0x52ab,0x5aec,0x52cb,0x4aaa,0x5aab,0x528a,0x528a,0x4a8b,0x4aab,0x4a8a,0x4a69,0x4a6a,0x4a6a,0x528a,0x4a8a,0x4229,0x524a,0x4249,0x4248,0x4229,0x4229,0x4249,0x3a08,0x3a09,0x4248,0x3a28,0x3a28,0x3a08,0x3a08,0x4229,0x3a09,0x4208,0x3a48,0x3a08,0x31e8,0x39e8,0x39c8,0x31c8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e7,0x29e7,0x29a7,0x39a7,0x31c7,0x21e7,0x31c7,0x3187,0x39c7,0x2986,0x31a6,0x3186,0x3186,0x29a7,0x2986,0x3186,0x3186,0x3186,0x3166,0x3186,0x2985,0x2965,0x2166,0x1966,0x1985,0x2166,0x2166,0x2966,0x2966,0x2185,0x1965,0x2166,0x2966,0x2145,0x1945,0x2125,0x1926,0x1925,0x2125,0x2125,0x1925,0x1925,0x1905,0x1125,0x0904,0x2125,0x2124,0x2104,0x1925,0x1925,0x1925,0x2105,0x1904,0x1904,0x1104,0x1105,0x1924,0x20e3,0x1904,0x18e5,0x1104,0x18e4,0x18e4,0x18e4,0x10e4,0x10e4,0x10e4,0x10e4,0x1904,0x10e3,0x18e3,0x10c4,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x10a3,0x18c2,0x10c3,0x18c4,0x18e4,0x08c3,0x18c3,0x18e3,0x08e3,0x10e4,0x08a1,0x3206,0xa556,0x2107,0x18e3,0x18c3,0x1904,0x18e4,0x2964,0x4246,0x5aa9,0x5aa8,0x5aaa,0x5a89, +0xdeba,0xc73d,0x4aea,0x5aea,0x5ac9,0x5ac9,0x52ca,0x4228,0x4a28,0x424a,0x4269,0x3a29,0x41c7,0x9c51,0xc75c,0x3a6a,0x3a28,0x3a29,0x3a29,0x3a28,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4228,0x4a08,0x3a08,0x3a28,0x3228,0x3a28,0x3a28,0x3a08,0x4229,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4229,0x3a28,0x4249,0x4249,0x4249,0x4249,0x426a,0x4269,0x4269,0x4269,0x428a,0x4a6a,0x528a,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52cb,0x4aab,0x4aab,0x52cb,0x5acc,0x52eb,0x52cb,0x52ab,0x5acb,0x5aec,0x52cb,0x52ac,0x52cb,0x5aeb,0x52eb,0x5b0d,0x530c,0x5aec,0x62cc,0x62ec,0x62ec,0x5b0c,0x5b0d,0x5aec,0x5b2c,0x634d,0x5b2c,0x634d,0x5b4c,0x632d,0x632d,0x634d,0x5b6e,0x632d,0x634d,0x638e,0x6b6e,0x6b4d,0x636e,0x5b4d,0x634d,0x6b6e,0x73ae,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x638e,0x6b8e,0x638e,0x6b6e,0x636e,0x636e,0x6baf,0x638d,0x73af,0x73af,0x738f,0x638e,0x638e,0x738e,0x738f,0x6b6e,0x736e,0x6b2d,0x6b8e,0x6bae,0x738e,0x634e,0x634e,0x634e,0x632d,0x634e,0x636e,0x6b6e,0x638e,0x6b6e,0x6b2c,0x6b4d,0x632d,0x634d,0x6b8e,0x634e,0x632d,0x632d,0x5b2d,0x5b2d,0x632d,0x634e,0x5b0c,0x6b6d,0x6b4d,0x5b2d,0x5b2d,0x5b4d,0x5b0c,0x5b0c,0x632d,0x630d,0x5b0d,0x5b0c,0x5b0c,0x5acc,0x52eb,0x52eb,0x630c,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x530c,0x5aec,0x5aec,0x5aec,0x52ab,0x52cb,0x52ac,0x52cc,0x52cb,0x52cb,0x4aab,0x528a,0x52cb,0x5aab,0x526a,0x528b,0x528b,0x4aab,0x428a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x428a,0x424a,0x4a49,0x4269,0x4a49,0x4a29,0x4209,0x4228,0x39e7,0x4209,0x4228,0x4229,0x3a08,0x4209,0x3a09,0x39e8,0x3208,0x3a08,0x3a08,0x39e8,0x31c7,0x39c8,0x31c8,0x39e7,0x39c7,0x31e7,0x31a6,0x39c7,0x31c7,0x29c7,0x31c7,0x3987,0x39a7,0x31a7,0x31c6,0x31a6,0x39a6,0x31a7,0x3186,0x2987,0x3166,0x3986,0x3186,0x3187,0x3186,0x2966,0x2966,0x2986,0x2165,0x2985,0x2966,0x2166,0x2987,0x1966,0x2966,0x2945,0x2145,0x2945,0x2966,0x2145,0x2145,0x2945,0x1945,0x2125,0x1925,0x1945,0x2925,0x2125,0x2145,0x2105,0x2926,0x2125,0x2124,0x2925,0x1905,0x2104,0x1904,0x1905,0x20e5,0x2105,0x1904,0x1904,0x1103,0x1904,0x1924,0x1904,0x1904,0x1103,0x1104,0x1904,0x10e4,0x18e4,0x1103,0x18e4,0x18e4,0x1904,0x18e4,0x10e3,0x10e4,0x08e3,0x10c3,0x18c4,0x10e3,0x10e3,0x10e3,0x10e4,0x18c3,0x10e3,0x10e4,0x10e3,0x10c3,0x18c3,0x08c3,0x10c2,0x10c2,0x0881,0x29c6,0xad96,0x2926,0x1903,0x18e4,0x18e4,0x1904,0x2944,0x4247,0x5aa9,0x52a9,0x52a9,0x5aa9, +0xdeda,0xbf3c,0x4aaa,0x5aea,0x5aea,0x5ae9,0x52ca,0x4227,0x4248,0x422a,0x424a,0x4229,0x41a7,0xac71,0xcf5d,0x322a,0x31e7,0x3a08,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x3a08,0x3a29,0x4228,0x4208,0x3a29,0x3a08,0x3a08,0x3228,0x3229,0x3a08,0x4229,0x4249,0x4249,0x3a4a,0x3a49,0x4228,0x4249,0x4249,0x4249,0x4a49,0x4248,0x4269,0x4269,0x4a69,0x4249,0x426a,0x428a,0x426a,0x4269,0x4269,0x428a,0x42ca,0x4aab,0x52ab,0x4aab,0x4aab,0x52ab,0x52cb,0x52cb,0x4aeb,0x52cb,0x5acb,0x5aeb,0x52cb,0x52cc,0x52cc,0x52ec,0x5aec,0x52cb,0x5aec,0x5b0c,0x52ec,0x5aec,0x5aed,0x5aec,0x5b0c,0x634c,0x5b4c,0x5b0c,0x630d,0x632c,0x632d,0x5b4d,0x5b2d,0x634d,0x5b2d,0x632d,0x5b6e,0x5b4d,0x6b6d,0x6b8d,0x6b0c,0x6b6e,0x6b6f,0x6b8e,0x636e,0x636e,0x636d,0x6b6e,0x6b8e,0x73af,0x6b6d,0x632e,0x6b6e,0x6b8f,0x6bae,0x636e,0x634d,0x6b8e,0x6b8e,0x636e,0x638e,0x6b4e,0x6b8e,0x638e,0x73af,0x6bae,0x73ae,0x7baf,0x6bae,0x6b8d,0x6bae,0x6baf,0x636d,0x6b6e,0x6b8e,0x6b2e,0x6b2e,0x636e,0x6b6e,0x634d,0x736e,0x6b6d,0x6b6e,0x6b4e,0x6b4d,0x6b6d,0x636d,0x634e,0x632d,0x632d,0x52ec,0x630d,0x632d,0x632c,0x632d,0x5b0c,0x5b0d,0x52ec,0x634d,0x5b0d,0x5b0c,0x5b2d,0x52cc,0x530c,0x632d,0x62ec,0x5aec,0x5b2c,0x5b2d,0x5b0c,0x5b0d,0x62ec,0x630d,0x5aec,0x52ec,0x52eb,0x5acc,0x5aec,0x5acb,0x5aec,0x52ab,0x52cb,0x52ac,0x5aab,0x528a,0x528a,0x52ab,0x52ab,0x528a,0x524a,0x4a6a,0x4a8a,0x528a,0x4a8b,0x4a8a,0x4a6a,0x4a69,0x4a8a,0x4a49,0x4249,0x4a49,0x5249,0x4a09,0x4249,0x4249,0x4209,0x4209,0x4229,0x4229,0x4208,0x4208,0x3a09,0x41e8,0x41e8,0x39c7,0x4228,0x3a08,0x31e8,0x31c7,0x39e8,0x31e7,0x39c7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x31c6,0x2987,0x31a7,0x31a7,0x3987,0x31c6,0x3187,0x31a6,0x31a6,0x3186,0x3186,0x39a6,0x3186,0x3167,0x3186,0x2966,0x2966,0x2986,0x3185,0x3186,0x3166,0x3146,0x2946,0x2966,0x3186,0x3166,0x2945,0x2966,0x2145,0x2945,0x2945,0x2965,0x2165,0x3146,0x2145,0x2145,0x2125,0x2145,0x1925,0x1105,0x2925,0x1924,0x2905,0x2124,0x2124,0x1905,0x1904,0x2104,0x2904,0x2905,0x18e4,0x2104,0x1903,0x1104,0x1904,0x20e4,0x1904,0x1103,0x18e4,0x18e4,0x18c4,0x2104,0x1103,0x10e4,0x10e4,0x1903,0x1902,0x18e3,0x10e3,0x18e3,0x10c3,0x10e3,0x18e3,0x10e3,0x18e3,0x10e4,0x18c4,0x18c3,0x10c3,0x10c3,0x10e3,0x18c2,0x18e3,0x10c2,0x10c2,0x10a2,0x3206,0xad96,0x2127,0x1903,0x1903,0x1904,0x1103,0x2964,0x4247,0x52a9,0x52a9,0x52a9,0x5ac9, +0xdeda,0xbf3d,0x4a89,0x5aea,0x52e9,0x5ac9,0x52c9,0x4227,0x4248,0x426a,0x4269,0x3a29,0x39c8,0xacb2,0xcf5d,0x3209,0x4207,0x3a07,0x3a28,0x4208,0x4227,0x4208,0x3a08,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x3a08,0x3a08,0x3208,0x3a29,0x3a09,0x4209,0x3a48,0x4249,0x3249,0x3228,0x4229,0x424a,0x4249,0x4249,0x4249,0x4249,0x3a49,0x3a6a,0x4269,0x4a49,0x4a49,0x4289,0x426a,0x426a,0x4a69,0x4a8a,0x4a8b,0x4a8b,0x4a8b,0x52aa,0x52cb,0x4aab,0x52aa,0x52cb,0x52cb,0x52cb,0x5acb,0x5aeb,0x52cb,0x4acc,0x52cb,0x52ec,0x5aec,0x5aec,0x5b0c,0x5aec,0x5b0c,0x5aec,0x52cc,0x5aec,0x632c,0x632d,0x5b0c,0x632d,0x632c,0x632d,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x634e,0x6b4d,0x5b4d,0x636d,0x638d,0x636d,0x632c,0x6b8e,0x5b6e,0x636e,0x6b6e,0x6b8e,0x6bae,0x634d,0x638d,0x636d,0x6b6d,0x636d,0x636d,0x73af,0x6bae,0x73af,0x6b6d,0x73af,0x73af,0x634e,0x6bae,0x73af,0x738e,0x6bae,0x6b8e,0x6b8e,0x73ce,0x73cf,0x638e,0x638e,0x6b8e,0x73af,0x738f,0x636d,0x636d,0x6b6d,0x736e,0x6b2d,0x6b4e,0x632d,0x738e,0x6b6e,0x634d,0x630d,0x632d,0x6b6e,0x634d,0x6b6e,0x6b4d,0x632d,0x634d,0x5b0d,0x632d,0x62ec,0x632d,0x630d,0x5b2d,0x5b2c,0x634d,0x5b0c,0x5b0c,0x634d,0x5b2c,0x5b0c,0x5aec,0x5aed,0x4aec,0x632d,0x62ed,0x5aec,0x532c,0x530d,0x62ed,0x530c,0x52ec,0x52ca,0x52eb,0x5aec,0x5aab,0x52eb,0x52cb,0x52cb,0x52ab,0x5acb,0x528b,0x526b,0x4a8b,0x52ab,0x4a8b,0x52cb,0x4a6a,0x52ab,0x4a8a,0x428a,0x428a,0x4a69,0x4269,0x4269,0x4a69,0x4a49,0x4a49,0x4249,0x4269,0x4249,0x3a29,0x3a29,0x4249,0x4249,0x3a29,0x3a08,0x3a08,0x4208,0x3a08,0x41e8,0x31e8,0x31e8,0x31c7,0x3a09,0x3207,0x3a08,0x39e8,0x39e7,0x39e7,0x39c8,0x39c8,0x39c7,0x39c7,0x39e7,0x3987,0x31a7,0x31a7,0x31a7,0x31c7,0x3186,0x31a7,0x31a6,0x31c7,0x3187,0x2987,0x2987,0x3186,0x2166,0x2946,0x3166,0x2986,0x2966,0x2966,0x2165,0x2946,0x2166,0x2145,0x2946,0x2946,0x2165,0x2145,0x2145,0x2145,0x2145,0x2925,0x2146,0x1945,0x1945,0x2125,0x1925,0x1925,0x1125,0x1925,0x2125,0x2105,0x2905,0x2125,0x2925,0x1905,0x2104,0x1924,0x18e4,0x2105,0x10e4,0x18e3,0x20e4,0x1105,0x18e5,0x10e4,0x0924,0x1103,0x18e3,0x18e3,0x18c4,0x18e4,0x1904,0x1104,0x10e4,0x18c3,0x10e3,0x18e4,0x20c3,0x20c3,0x18e3,0x1103,0x08e3,0x10e3,0x18e4,0x10c3,0x18c4,0x18c3,0x18e3,0x10c2,0x18e3,0x10c4,0x10c3,0x10e3,0x10a3,0x1082,0x29a5,0xa575,0x3147,0x18c3,0x10e3,0x18e4,0x18e3,0x2944,0x4206,0x52a9,0x5aa9,0x5a8a,0x5aa9, +0xdeda,0xc73c,0x52a9,0x62eb,0x5ac9,0x5aaa,0x5ac9,0x39e7,0x4228,0x422a,0x4269,0x4249,0x41a7,0xb4d3,0xc75c,0x29e8,0x4228,0x3a28,0x3a08,0x3a07,0x4207,0x4229,0x3a08,0x4228,0x3a28,0x4208,0x3a08,0x3a08,0x3a28,0x3a28,0x3a08,0x3a28,0x3a28,0x3a08,0x3a08,0x3a28,0x4228,0x4249,0x4208,0x4229,0x4249,0x3a69,0x4269,0x4249,0x4229,0x4249,0x4a49,0x4a49,0x4a49,0x4a6a,0x4a6a,0x4a8a,0x528a,0x528a,0x4a8a,0x4a8a,0x528a,0x52aa,0x52aa,0x52ca,0x4aab,0x4a8b,0x52ab,0x52cb,0x52ab,0x5acb,0x52ab,0x5acc,0x52eb,0x5acb,0x5acb,0x52eb,0x5b0c,0x5aec,0x5b0b,0x530c,0x52ec,0x530c,0x5b0c,0x632c,0x5aec,0x6b6d,0x6b2c,0x638e,0x636d,0x5b0d,0x5b2d,0x5b2d,0x6b2e,0x6b2d,0x5b2d,0x634d,0x636d,0x634d,0x6b8d,0x636e,0x5b4d,0x5b4e,0x6b8d,0x6bae,0x738e,0x73cf,0x6b6d,0x6b6e,0x6bae,0x6b6e,0x6bae,0x6b8e,0x636d,0x6b8e,0x6b8d,0x73ae,0x6b6e,0x634d,0x6b8e,0x738f,0x6b4d,0x6b8d,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x63ae,0x636e,0x6b8f,0x6bae,0x636e,0x6b6d,0x6b8e,0x6b6e,0x6b6e,0x6b6d,0x634d,0x634d,0x6b8e,0x6b6d,0x6b6e,0x6b6e,0x634d,0x634c,0x6b4d,0x634d,0x6b4d,0x634d,0x634d,0x634d,0x5aec,0x5b2d,0x632d,0x5b0c,0x5b2d,0x5b4d,0x632d,0x632d,0x630c,0x5b2d,0x5b2c,0x632c,0x632d,0x52cc,0x5b2d,0x52ec,0x52cc,0x5acc,0x52cc,0x5aac,0x5aec,0x62ec,0x5acc,0x52cb,0x5aec,0x52eb,0x52ab,0x52cb,0x52cb,0x52ab,0x52ab,0x52ab,0x526a,0x52ab,0x4a8b,0x4aab,0x52aa,0x52aa,0x4a6a,0x4a8a,0x426a,0x4249,0x4249,0x4a49,0x4a69,0x4269,0x4a29,0x3a09,0x4229,0x3a29,0x4229,0x4208,0x4228,0x4248,0x4248,0x3249,0x3a28,0x3a28,0x3a08,0x4208,0x39c7,0x39e8,0x41e8,0x39e7,0x39e7,0x4208,0x39c8,0x31c8,0x31c7,0x31c6,0x31a7,0x39a7,0x39c7,0x31a7,0x39a7,0x39e7,0x3987,0x31a6,0x31a7,0x31a6,0x3186,0x39a7,0x3186,0x31a7,0x3186,0x2186,0x2986,0x3165,0x2986,0x3166,0x2985,0x2166,0x2966,0x2165,0x2145,0x2946,0x2166,0x1966,0x1966,0x2965,0x2165,0x2125,0x1965,0x1945,0x2166,0x2146,0x2945,0x1925,0x2125,0x2125,0x1925,0x2125,0x1925,0x2125,0x2104,0x2105,0x2125,0x2104,0x2124,0x1924,0x2104,0x1905,0x1104,0x1905,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e4,0x1904,0x1103,0x10e4,0x18e4,0x1104,0x1904,0x20c3,0x18e3,0x18e3,0x18e4,0x18c3,0x18c4,0x18c4,0x18c4,0x18c3,0x18e3,0x0103,0x10e4,0x10c3,0x18c2,0x18c3,0x10c4,0x18c3,0x08e3,0x08c3,0x08e4,0x18c4,0x18a3,0x10a3,0x10a3,0x2185,0x9d34,0x3147,0x20e4,0x10e4,0x2124,0x1903,0x2964,0x4206,0x4aa9,0x52a9,0x5a8a,0x5aa9, +0xdeda,0xbf1b,0x52a8,0x62ea,0x5aca,0x5aca,0x5aa9,0x3208,0x3a08,0x4a4a,0x4289,0x4249,0x4167,0xbd13,0xbf3c,0x3209,0x4228,0x3a09,0x3a08,0x3a07,0x4227,0x4209,0x3a08,0x39e8,0x39e8,0x39e8,0x4208,0x4208,0x3a08,0x3a09,0x3a28,0x3a27,0x3a28,0x3a28,0x3a28,0x3a48,0x4229,0x4249,0x4228,0x4a49,0x4a48,0x3a29,0x4249,0x4249,0x4269,0x4269,0x4a6a,0x424a,0x4a69,0x4a8a,0x526a,0x4a6a,0x4a8a,0x4aaa,0x4aaa,0x4a6a,0x4a8a,0x528b,0x4aaa,0x4aaa,0x4aca,0x528a,0x5aab,0x5acb,0x528b,0x52cc,0x52cc,0x5acb,0x52cb,0x52ab,0x52ab,0x52eb,0x52cc,0x52cc,0x5aec,0x52eb,0x52eb,0x52ec,0x52ec,0x5b0c,0x5b0c,0x634d,0x632d,0x5b4d,0x5b0c,0x5aec,0x5b0d,0x630d,0x6b2c,0x6b4d,0x5b4d,0x632d,0x5b2d,0x6b4d,0x634e,0x5b4d,0x634d,0x6b6f,0x6b8d,0x638d,0x638e,0x636e,0x6b6d,0x6b6e,0x6b6e,0x6b6e,0x638e,0x73ae,0x6b6e,0x6b6e,0x636e,0x6b8e,0x6b6d,0x634d,0x634e,0x734e,0x6b6e,0x73ae,0x6b8e,0x6b8e,0x6baf,0x6baf,0x6b6e,0x6bae,0x6bae,0x636d,0x52ec,0x6b8e,0x73ae,0x6b8e,0x6b8f,0x6b6e,0x6b8e,0x636e,0x6b4e,0x638e,0x634e,0x636e,0x6b8e,0x6b6e,0x636d,0x634d,0x6b4e,0x638e,0x636e,0x634d,0x634d,0x5b0d,0x5b2d,0x632d,0x5b2d,0x5b2c,0x632d,0x6b0d,0x6b4d,0x5b0d,0x530c,0x5b0c,0x5b2c,0x532d,0x5aec,0x5b0c,0x52eb,0x52eb,0x632d,0x5b0c,0x5aec,0x5aec,0x5aab,0x5aec,0x4aaa,0x5acc,0x5aec,0x52ab,0x5acc,0x5aac,0x5acc,0x52cb,0x528a,0x528a,0x52ca,0x4a6a,0x526a,0x528a,0x52ab,0x4a8a,0x4a8a,0x4a6a,0x4269,0x4249,0x4a49,0x4a69,0x4249,0x4229,0x4229,0x4229,0x3229,0x4229,0x4249,0x4229,0x4229,0x4208,0x4227,0x3a07,0x3a28,0x3a08,0x3a08,0x3208,0x3208,0x3a09,0x39e8,0x39e8,0x3208,0x39e8,0x39e8,0x31c7,0x39c7,0x31a7,0x31a7,0x31a6,0x29e7,0x31c7,0x39c7,0x39a7,0x29e6,0x31c7,0x3186,0x3186,0x31a6,0x2986,0x3186,0x3166,0x29a6,0x2987,0x2966,0x31a6,0x2986,0x2966,0x2966,0x2966,0x2166,0x2966,0x2965,0x2165,0x1145,0x1945,0x2145,0x2165,0x2186,0x1986,0x2165,0x2164,0x2965,0x2966,0x2125,0x2125,0x2145,0x1925,0x2945,0x2145,0x2125,0x2125,0x2144,0x1925,0x1924,0x1945,0x1144,0x2925,0x2125,0x2125,0x2125,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x1905,0x18e4,0x18e4,0x18e4,0x10e4,0x1104,0x10e4,0x18e4,0x18e4,0x1103,0x10e4,0x10e4,0x18c3,0x18e4,0x18e3,0x10e3,0x0903,0x08a4,0x08c2,0x18c3,0x18c3,0x18c4,0x10a3,0x08e3,0x08c3,0x10c3,0x10c3,0x18c3,0x10c3,0x08a3,0x2185,0x9d54,0x2927,0x28e4,0x18e4,0x18e4,0x2104,0x2945,0x4227,0x4aa9,0x52c9,0x52a9,0x5ac9, +0xdeb9,0xb6db,0x4aa9,0x5ac9,0x5aea,0x5aea,0x52c9,0x3a48,0x31c7,0x4269,0x4269,0x4249,0x3967,0xbd34,0xbf1c,0x3208,0x3a29,0x3a08,0x3a08,0x29e8,0x3a08,0x3a28,0x3228,0x3a08,0x39e8,0x39e8,0x4208,0x3a28,0x3a08,0x3a08,0x3a08,0x4208,0x4228,0x3a08,0x4228,0x3a28,0x4248,0x4229,0x4229,0x4229,0x4249,0x3a09,0x4229,0x4269,0x426a,0x3a49,0x426a,0x422a,0x4a69,0x4289,0x4269,0x4a89,0x428a,0x426a,0x4a6a,0x4a6a,0x4a8a,0x528b,0x4aaa,0x4aaa,0x52cb,0x52ab,0x52ab,0x52ca,0x52cb,0x52cb,0x52cb,0x5acc,0x530c,0x52cc,0x52cb,0x52cb,0x5acc,0x5aec,0x630c,0x5aec,0x5b2c,0x5b0c,0x52eb,0x52ec,0x5b2c,0x630c,0x5b4d,0x5b2c,0x630c,0x5b2d,0x5b0c,0x5b0d,0x632d,0x6b2d,0x5b4d,0x636e,0x5b2d,0x6b6e,0x5b2d,0x6b6e,0x634d,0x5b8d,0x6b6d,0x634d,0x5b4d,0x6b6e,0x738e,0x6b4e,0x634d,0x5b6e,0x634e,0x6b8e,0x638e,0x6b6e,0x6b6e,0x6b6e,0x73af,0x6b8f,0x638e,0x636d,0x6b6d,0x6bae,0x6b6e,0x73ae,0x6b8e,0x6b6d,0x6b6e,0x6bcf,0x6bae,0x6bae,0x638e,0x6b6e,0x6b6e,0x6bae,0x73ae,0x738e,0x6b8e,0x636d,0x738e,0x6b6e,0x6b4e,0x6b6e,0x6b8d,0x6b8e,0x736e,0x6b6e,0x6b4e,0x6b6e,0x6b6f,0x5b2c,0x6b6d,0x630c,0x5b0d,0x5b4d,0x52ec,0x5b2c,0x5b2c,0x5aed,0x630c,0x5aed,0x5b2d,0x632d,0x52ec,0x532c,0x5aec,0x52ec,0x5aec,0x52eb,0x62eb,0x5aec,0x5acc,0x5aec,0x5aab,0x630c,0x4aab,0x5acc,0x52ec,0x52ab,0x5acb,0x52ab,0x4aab,0x52ab,0x52ab,0x52aa,0x52ab,0x528b,0x4a6a,0x526a,0x4a6a,0x428a,0x4a4a,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4269,0x424a,0x4229,0x4a29,0x4249,0x4249,0x422a,0x3a09,0x4228,0x4a47,0x3a28,0x39e8,0x4208,0x3a07,0x3a08,0x4209,0x39e8,0x39e8,0x39e8,0x41e8,0x41e7,0x31e7,0x31e8,0x39c7,0x39c7,0x41c7,0x39c7,0x31c7,0x31a7,0x31c7,0x31c7,0x3987,0x31a7,0x29c7,0x39c7,0x29a7,0x2986,0x3187,0x31a6,0x31a6,0x3186,0x2986,0x2986,0x2966,0x3166,0x3166,0x3166,0x2966,0x2966,0x2966,0x2966,0x2966,0x3186,0x2146,0x2946,0x2946,0x2145,0x2945,0x2145,0x2146,0x2145,0x2965,0x2125,0x2926,0x2945,0x2125,0x1945,0x2145,0x2125,0x1925,0x1904,0x2125,0x1904,0x1904,0x1924,0x1924,0x1104,0x1905,0x2104,0x2124,0x1904,0x20e5,0x18e4,0x1904,0x1904,0x2104,0x18e3,0x1904,0x10e4,0x20e5,0x18e4,0x18e4,0x1903,0x18e4,0x18e3,0x10e3,0x18e3,0x1104,0x10e3,0x10e4,0x18c3,0x10c3,0x18c3,0x18c3,0x10e3,0x10e3,0x10c3,0x10c3,0x10c4,0x10c3,0x18e3,0x18e3,0x10c2,0x18c3,0x10c3,0x00c2,0x1924,0x9d74,0x3168,0x18e3,0x2104,0x18e4,0x1924,0x1944,0x3a26,0x52a9,0x52c9,0x5aa9,0x62a9, +0xdeda,0xb6fb,0x4289,0x5aea,0x5aca,0x5ac9,0x5289,0x3a07,0x3a48,0x4269,0x3a48,0x4229,0x3147,0xb534,0xaedb,0x3208,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x3208,0x3a28,0x3a28,0x3a08,0x3a08,0x3a08,0x3a08,0x3a28,0x3a08,0x4208,0x3a08,0x4208,0x3a28,0x4229,0x4229,0x4228,0x4228,0x4249,0x3a4a,0x3a49,0x3a2a,0x4249,0x4a4a,0x4a49,0x4a69,0x4a8a,0x4269,0x4289,0x4269,0x4269,0x528a,0x528a,0x528a,0x528a,0x526b,0x52aa,0x528b,0x52ab,0x52aa,0x52aa,0x52ab,0x52ab,0x4acb,0x52eb,0x52ab,0x52cb,0x5aac,0x5aec,0x52cb,0x5aeb,0x52eb,0x5aec,0x5aec,0x5aec,0x5b0d,0x5b0d,0x5aec,0x5aed,0x630d,0x530c,0x5b2c,0x634d,0x634d,0x634c,0x5b2d,0x5b0c,0x5b2c,0x6b6d,0x6b2e,0x634d,0x5b2d,0x6b6e,0x632d,0x5b0c,0x6b8e,0x6b4e,0x636d,0x6b6d,0x6b4d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b6c,0x6b8e,0x6baf,0x6b8e,0x738e,0x73ae,0x638e,0x636d,0x6b8d,0x6bae,0x63af,0x73af,0x6b8f,0x6b8e,0x7b8e,0x73ae,0x636e,0x634d,0x738f,0x73cf,0x736e,0x6b6e,0x6b8e,0x6baf,0x73ce,0x6bae,0x6b8e,0x738e,0x6b6e,0x738e,0x6b8e,0x6b8e,0x734e,0x6b4d,0x6b6e,0x6b6d,0x632d,0x634d,0x634e,0x6b4e,0x634d,0x5b4d,0x636e,0x630c,0x632d,0x5b4d,0x5b4d,0x5b0d,0x632d,0x5b0d,0x632d,0x632c,0x5b0c,0x5b2d,0x5aec,0x52cb,0x5b0c,0x52ed,0x52ec,0x52eb,0x5b0c,0x530c,0x52eb,0x5aeb,0x52ab,0x52cb,0x52cc,0x5acc,0x52cc,0x52cb,0x52cb,0x52eb,0x4acb,0x52ab,0x4aab,0x528b,0x5a8b,0x528b,0x4aab,0x4a8b,0x4a8b,0x4269,0x4a6a,0x4249,0x4a4a,0x4269,0x4a49,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4a49,0x4228,0x41e8,0x3a08,0x3a08,0x4229,0x41e8,0x41e8,0x3a28,0x3a08,0x39e8,0x39e9,0x3208,0x39e8,0x39e8,0x41e8,0x39e8,0x31e7,0x39c7,0x31c7,0x39e7,0x39c7,0x31c7,0x29c7,0x31a7,0x29a7,0x31c8,0x31a7,0x31a7,0x31a7,0x2987,0x2986,0x39a7,0x3186,0x29c6,0x31a6,0x3186,0x3186,0x2166,0x2966,0x2946,0x2966,0x2986,0x2986,0x2966,0x2165,0x2186,0x2166,0x2966,0x2946,0x2945,0x2945,0x2945,0x2126,0x2146,0x2145,0x2946,0x2125,0x2945,0x2145,0x2125,0x2125,0x2925,0x2145,0x1925,0x1905,0x2125,0x2905,0x1925,0x1124,0x2104,0x1124,0x2104,0x1904,0x1905,0x1104,0x2104,0x18e5,0x2104,0x2104,0x18e4,0x1104,0x18c4,0x10e4,0x1904,0x10e4,0x1904,0x18e3,0x18e3,0x18e4,0x18e4,0x10e4,0x10e4,0x10e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18a3,0x10c3,0x10c3,0x10e3,0x10c2,0x10c3,0x18c3,0x18e3,0x18c3,0x10e2,0x18c3,0x10c2,0x10c3,0x1924,0xa574,0x3188,0x18e3,0x20e3,0x1904,0x1904,0x1924,0x4227,0x5288,0x52a9,0x5aa9,0x52c9, +0xdefa,0xaebb,0x4289,0x5aea,0x5aca,0x5aea,0x5aa9,0x4207,0x3207,0x4249,0x4229,0x4229,0x3968,0xb514,0xaedb,0x29e8,0x4228,0x3a08,0x4209,0x4228,0x3a08,0x3a08,0x3a28,0x3227,0x3228,0x3208,0x3a08,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4a08,0x4249,0x4249,0x4229,0x4249,0x3a28,0x3a29,0x3a49,0x4a49,0x426a,0x4269,0x4a49,0x524a,0x4a49,0x4269,0x4a69,0x426a,0x426a,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x528a,0x528a,0x4aca,0x528b,0x52ab,0x52cb,0x52cb,0x52ab,0x528a,0x52cb,0x52eb,0x52eb,0x5aec,0x5acc,0x52ab,0x52ab,0x5aed,0x52ec,0x5aec,0x52cb,0x4aab,0x52ec,0x52ec,0x5b0c,0x5b0c,0x630d,0x5b2d,0x5b4d,0x5b2d,0x5b4d,0x5b0d,0x6b4e,0x5b2d,0x532c,0x5b4c,0x630c,0x632d,0x634e,0x6b8e,0x636d,0x634d,0x6b4e,0x736e,0x636e,0x6bae,0x6b6e,0x6b6d,0x636d,0x636d,0x6baf,0x6b2c,0x738e,0x736e,0x6b8e,0x6bae,0x6b6d,0x6b8d,0x6b8e,0x738e,0x73ae,0x6baf,0x73af,0x736e,0x6b8e,0x6baf,0x636e,0x6bae,0x6b8d,0x73ae,0x73f0,0x638f,0x73ce,0x73cf,0x6b8f,0x73cf,0x73ae,0x738e,0x6b4e,0x632e,0x638d,0x6baf,0x6b8e,0x5b4d,0x6b6e,0x6b6d,0x738e,0x6b8f,0x6b2d,0x5b2c,0x634d,0x6b4d,0x5b2d,0x632e,0x5b0d,0x630d,0x634d,0x632d,0x5aed,0x5b0d,0x5b0d,0x5b0d,0x5b2c,0x5b0c,0x532c,0x5b0c,0x630c,0x5b2c,0x5b0c,0x5aec,0x4acb,0x52ec,0x5b0c,0x5b0c,0x5b0c,0x530d,0x52ac,0x52cc,0x52cb,0x52eb,0x52cb,0x52cb,0x4aab,0x52cb,0x5acb,0x52aa,0x4a8b,0x52aa,0x5aab,0x528b,0x428a,0x4a8b,0x528b,0x528b,0x4a8b,0x4a4a,0x526a,0x4229,0x4229,0x424a,0x4249,0x4249,0x3a08,0x3a09,0x4229,0x41e9,0x4228,0x4209,0x3a49,0x39e8,0x41e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e8,0x39e8,0x3208,0x4208,0x41e8,0x3a07,0x39e8,0x39e8,0x39c7,0x31e8,0x31e7,0x31a7,0x31c7,0x29a7,0x29a7,0x31a6,0x31a6,0x3187,0x2987,0x29a7,0x29a6,0x2986,0x2185,0x2986,0x2985,0x2986,0x2966,0x3167,0x2966,0x2966,0x3186,0x2986,0x2186,0x2965,0x3165,0x2166,0x2965,0x2945,0x2945,0x2945,0x2165,0x2146,0x2165,0x2945,0x2125,0x1946,0x1166,0x2125,0x2925,0x2945,0x2925,0x1925,0x1925,0x2125,0x2105,0x2925,0x2104,0x2125,0x2125,0x1905,0x1904,0x1904,0x1905,0x1904,0x1904,0x2124,0x1904,0x1105,0x18e4,0x18e4,0x18e4,0x1103,0x1903,0x1905,0x18e4,0x1924,0x20e3,0x18e3,0x18e4,0x18c3,0x10e3,0x10e3,0x10a3,0x0903,0x08e4,0x18e3,0x18c3,0x10c4,0x08c3,0x10e3,0x10c3,0x18a3,0x10c4,0x10a3,0x18c3,0x18c3,0x18c3,0x10c2,0x18c3,0x1904,0x9d54,0x3189,0x10a3,0x20e3,0x20e4,0x18e4,0x2145,0x4207,0x4aa8,0x52a9,0x5aaa,0x5aca, +0xdeda,0xa69a,0x4a89,0x5b0a,0x5ae9,0x52c8,0x52a9,0x4208,0x3a07,0x4269,0x4229,0x4249,0x3947,0xbd75,0xaedb,0x21c8,0x3a28,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x3a28,0x4208,0x4248,0x4249,0x3a49,0x4228,0x4249,0x4a69,0x4229,0x4269,0x4289,0x426a,0x4228,0x4249,0x4a49,0x4a49,0x426a,0x4289,0x4269,0x4a6a,0x4a8a,0x4a8b,0x52ab,0x52ab,0x4a8a,0x4aab,0x4aaa,0x52cb,0x52cb,0x52cb,0x4aaa,0x52ab,0x4aab,0x5acc,0x52eb,0x5aec,0x5b0c,0x5b0c,0x52ec,0x52ec,0x52cd,0x5aec,0x630c,0x5b0c,0x5b0d,0x532d,0x634d,0x6b2d,0x634d,0x5b2c,0x6b6d,0x6b6e,0x634e,0x532d,0x5b2d,0x6b4e,0x632e,0x530d,0x5b2d,0x5b2d,0x6b4d,0x636d,0x5b4d,0x5b2d,0x6b6e,0x6b8e,0x6b6e,0x6b6d,0x73cf,0x6baf,0x73af,0x73ae,0x6b8e,0x6b8f,0x73af,0x73af,0x73af,0x634d,0x6b8e,0x636d,0x73ae,0x73af,0x73cf,0x6bae,0x73cf,0x63ae,0x738e,0x638e,0x63ae,0x638e,0x6bae,0x63cf,0x73cf,0x73af,0x6bae,0x7baf,0x73af,0x6b6f,0x6b6e,0x632d,0x6b6f,0x736f,0x6b8e,0x6baf,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b2e,0x5b2d,0x636d,0x634d,0x634d,0x6b2d,0x632d,0x5b2d,0x5b4e,0x5b2c,0x5aec,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x5acc,0x5b0c,0x532c,0x52ec,0x630c,0x5aec,0x5b0c,0x5aec,0x52eb,0x5aec,0x632d,0x52cb,0x52cb,0x52cb,0x5acb,0x5acb,0x5aeb,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52cb,0x4aab,0x4aab,0x4aab,0x428a,0x4aab,0x528b,0x528b,0x4a8a,0x4a4a,0x4a6a,0x4a6a,0x4a4a,0x4a6a,0x4a49,0x4229,0x4249,0x4249,0x4a28,0x39e9,0x4209,0x3a28,0x3a29,0x3a09,0x3a08,0x39e8,0x39e8,0x4209,0x3a08,0x39e8,0x39e8,0x3208,0x41e8,0x41e9,0x41e8,0x39e7,0x39c7,0x31c7,0x31e8,0x31c8,0x31c8,0x39c7,0x31e7,0x2986,0x31a7,0x31e7,0x31a7,0x3987,0x31a7,0x29c6,0x31a6,0x3186,0x2986,0x3166,0x3186,0x3166,0x2986,0x2966,0x2946,0x3146,0x3166,0x2965,0x3165,0x2965,0x2185,0x2965,0x2966,0x2945,0x3145,0x2945,0x2945,0x2165,0x2965,0x2166,0x2125,0x1945,0x2945,0x2945,0x2145,0x2146,0x2125,0x2125,0x2105,0x2105,0x2125,0x2105,0x2125,0x2125,0x1905,0x2125,0x1924,0x2125,0x2105,0x28e5,0x2104,0x1925,0x1125,0x1944,0x2104,0x2105,0x2123,0x1104,0x2105,0x20e4,0x20e4,0x10e4,0x0904,0x1104,0x10c4,0x08e4,0x1105,0x18e4,0x1104,0x1103,0x18e4,0x18e3,0x10c2,0x10c3,0x08c3,0x18c3,0x08e3,0x10e3,0x20c4,0x18e3,0x20e3,0x18e3,0x10c3,0x10c3,0x18e3,0xa553,0x39c9,0x18c3,0x20e3,0x1904,0x1924,0x2925,0x4a07,0x52a9,0x5aa9,0x5aaa,0x5aaa, +0xdefa,0xa659,0x4a88,0x52ea,0x5ac9,0x5ae9,0x52a9,0x3a07,0x3a28,0x3a6a,0x3a49,0x4249,0x4187,0xbd75,0xaefc,0x19c8,0x3208,0x3208,0x4208,0x3a08,0x3a28,0x3a09,0x3a08,0x41e8,0x4208,0x3a08,0x4208,0x3a08,0x3a28,0x3a29,0x3228,0x3a08,0x4229,0x3a48,0x4249,0x4a4a,0x4229,0x4a49,0x3a4a,0x39e9,0x39c8,0x3a29,0x424a,0x4249,0x4249,0x4269,0x3a4a,0x4249,0x4a4a,0x4a49,0x52aa,0x526a,0x528a,0x4a4a,0x4a8a,0x4249,0x52ab,0x5aab,0x5aab,0x52ab,0x52ab,0x52cb,0x52cb,0x52cb,0x52aa,0x52ab,0x4aab,0x4aab,0x52ac,0x4acb,0x4aab,0x52cb,0x52cb,0x52cb,0x532c,0x52ec,0x5aec,0x5acb,0x5b2c,0x5b0d,0x52ab,0x632c,0x634d,0x5b0d,0x530d,0x632e,0x634e,0x5b4e,0x634e,0x636d,0x634d,0x6b4e,0x5b4e,0x5b6e,0x5b4d,0x636e,0x634d,0x6b4e,0x6b6e,0x6b8f,0x636d,0x73ae,0x73ae,0x6b6e,0x6b8e,0x6b6d,0x7bcf,0x73cf,0x7c10,0x6b8e,0x6bae,0x7bcf,0x73cf,0x73cf,0x73cf,0x6bae,0x6baf,0x638e,0x73cf,0x73cf,0x636e,0x73ae,0x73ae,0x6b6d,0x6b8e,0x638d,0x634d,0x6b6e,0x638e,0x634d,0x634d,0x736e,0x636e,0x6baf,0x73af,0x6bae,0x6b8e,0x6b4d,0x632d,0x6b8f,0x636e,0x5b4d,0x634e,0x6b2e,0x634d,0x6b4d,0x632d,0x634d,0x632d,0x5b2d,0x632d,0x632c,0x634d,0x636d,0x634d,0x5b2d,0x630d,0x632c,0x5b2d,0x5aec,0x630d,0x5acc,0x52cb,0x52ec,0x52eb,0x5aeb,0x4aab,0x4acb,0x4a8b,0x52ab,0x5acb,0x52cb,0x52cb,0x52ec,0x52cb,0x4acb,0x4acb,0x52cb,0x5acb,0x52cc,0x4a8b,0x4a8a,0x426a,0x426a,0x4a8a,0x428a,0x4a4a,0x4a49,0x4a8a,0x4229,0x4229,0x4229,0x4209,0x3a28,0x4228,0x4228,0x3a28,0x3a08,0x39e7,0x39e7,0x4a28,0x4a29,0x3a08,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x41c8,0x41c7,0x39a7,0x3187,0x31a7,0x31c7,0x2986,0x31a7,0x29a7,0x2987,0x39c7,0x2987,0x2987,0x29a6,0x2986,0x3186,0x31a7,0x29a7,0x2966,0x2146,0x2166,0x3166,0x3187,0x3187,0x2985,0x3186,0x2986,0x2185,0x2986,0x2146,0x1925,0x2125,0x1904,0x1904,0x1904,0x2145,0x2125,0x1104,0x1924,0x10e5,0x18e4,0x20e4,0x1904,0x2124,0x18e4,0x18e4,0x18e3,0x20c4,0x28e4,0x18e4,0x1904,0x2145,0x2125,0x1905,0x1925,0x2124,0x2125,0x2145,0x2105,0x10e4,0x10c3,0x0882,0x10a3,0x0883,0x1083,0x10a3,0x10c4,0x18a2,0x10c2,0x18a3,0x08c3,0x08c3,0x08a3,0x10c3,0x08a3,0x10a3,0x08a2,0x08a3,0x0883,0x08a3,0x08c4,0x1904,0x20e4,0x18c4,0x10e3,0x18c3,0x10e3,0x10c3,0x10a3,0x10c3,0x10c3,0x10e3,0x10e2,0x10c3,0x18e3,0x10c3,0x18e3,0x18c3,0x10c3,0x18e3,0xa595,0x41e9,0x18c3,0x18c3,0x18c4,0x18e4,0x2904,0x4a26,0x52a9,0x5289,0x52a9,0x5aca, +0xe6fb,0x9e39,0x4aa9,0x5aea,0x5ac9,0x5ac9,0x4ac9,0x3a07,0x39c7,0x426a,0x4249,0x4229,0x3988,0xc575,0xaefc,0x21c8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a28,0x3a28,0x3a08,0x3a29,0x4228,0x41e8,0x39e8,0x3208,0x3208,0x3a28,0x3a29,0x4209,0x4209,0x3a28,0x39e7,0x6baf,0x7451,0x7c51,0x73f0,0x8411,0x8452,0x7c71,0x8472,0x7c51,0x7c51,0x7c72,0x7452,0x7431,0x7c31,0x7431,0x73d0,0x8411,0x7c11,0x7431,0x6c31,0x536e,0x424a,0x4aab,0x52ab,0x4a8b,0x52cb,0x5aeb,0x4a69,0x4aca,0x7410,0x8492,0x7471,0x7431,0x7411,0x6bb0,0x638f,0x6baf,0x6bcf,0x73f0,0x7410,0x73ef,0x73d0,0x6bef,0x6bd0,0x7410,0x7c11,0x7c31,0x7410,0x638f,0x532d,0x6b0c,0x6b4d,0x636d,0x638d,0x6b6d,0x6b6e,0x5aec,0x6b8e,0x8c92,0x8493,0x7c71,0x8472,0x8492,0x8492,0x7c52,0x8472,0x8471,0x8492,0x7c51,0x7471,0x7c72,0x8431,0x7c31,0x7c11,0x7430,0x6c10,0x7411,0x73f1,0x634e,0x73cf,0x73ae,0x736e,0x6b8e,0x6b8e,0x6b6e,0x630b,0x8430,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x84b3,0x7c52,0x8452,0x7c52,0x8472,0x8c92,0x7c51,0x7431,0x7c51,0x7c31,0x7c71,0x7c72,0x7431,0x7c30,0x8452,0x73f0,0x5b0d,0x6b8e,0x634e,0x6b6e,0x636d,0x5b2d,0x636e,0x5acb,0x632d,0x6bae,0x7c31,0x6bcf,0x73af,0x6b8f,0x6bcf,0x7c10,0x7c10,0x6bcf,0x6baf,0x6b8f,0x6baf,0x73f0,0x6b8f,0x8431,0x73f0,0x7bd0,0x73f0,0x7c10,0x634f,0x428b,0x4acb,0x5acb,0x52cb,0x52cb,0x52eb,0x52cb,0x4a69,0x52cc,0x73f0,0x7c70,0x7c10,0x7410,0x7431,0x6bf0,0x6c10,0x7411,0x6c10,0x73f0,0x6bef,0x7410,0x7410,0x6c10,0x73f0,0x6bae,0x6b6e,0x6b6e,0x6b8f,0x632d,0x526b,0x41c8,0x4208,0x4229,0x39e8,0x3a08,0x39e8,0x2986,0x4a49,0x73cf,0x8472,0x8472,0x7c51,0x8c73,0x8492,0x8472,0x7c31,0x7c31,0x8c51,0x8431,0x7451,0x7431,0x73d0,0x73f0,0x6bd0,0x73f0,0x7c10,0x6bd0,0x636e,0x3a2a,0x1105,0x3186,0x2186,0x2186,0x2186,0x2187,0x10c4,0x4acb,0x7451,0x8cf3,0x94f3,0x94f4,0x8cb3,0x8cd3,0x8cb3,0x9514,0xadb7,0xa576,0xa555,0xa575,0x9d34,0x8cd3,0x9d55,0xa575,0x9d34,0x9514,0x94f3,0x8cd4,0x63af,0x08c4,0x1925,0x1925,0x1925,0x2125,0x1925,0x10e4,0x4aaa,0x8cd3,0x9d76,0x9d34,0xa575,0xa5b6,0xad96,0xadd6,0xa576,0xa556,0x9d55,0x9d54,0xa575,0xadb5,0x9db5,0x9d75,0x9555,0x9596,0xa5b6,0x9d55,0x9d35,0x8452,0x18e5,0x18a4,0x20e4,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18e4,0x18e3,0x18e3,0x20c2,0x18a3,0x18e2,0x18e3,0x10c2,0x10c3,0x10c3,0x1903,0xa595,0x4a0a,0x18c3,0x18c3,0x1903,0x18e4,0x2124,0x4a07,0x5288,0x52a9,0x5ac8,0x5aca, +0xe71b,0x9e39,0x4289,0x5aea,0x5aea,0x5ac9,0x4aa8,0x4208,0x4208,0x4a4a,0x426a,0x4229,0x39a8,0xc5b6,0xaedb,0x21c8,0x4208,0x4208,0x3a08,0x3a08,0x3a07,0x3a08,0x3a28,0x41e8,0x3a28,0x3a08,0x3a09,0x3a09,0x4209,0x4209,0x3a29,0x4229,0x4249,0x4a29,0xde9b,0xbe38,0xad96,0xad97,0xad96,0xad96,0xa596,0xadd7,0xb5d7,0xadb7,0xb5d7,0xc638,0xbe38,0xb5d7,0xb5d7,0xbdf7,0xbdf7,0xbe18,0xbe18,0xb5f7,0xbdf7,0xd71c,0x7cd3,0x3aaa,0x4aaa,0x52cb,0x4aab,0x4a89,0xa534,0xef7d,0xc659,0xbe59,0xc679,0xc679,0xc679,0xc679,0xc67a,0xc699,0xc659,0xc659,0xc679,0xce99,0xce9a,0xce79,0xc679,0xc679,0xce79,0xce7a,0xc679,0xd6fb,0xc6fb,0x6bae,0x632c,0x5b4d,0x6b8e,0x6b6d,0x62ec,0xbd97,0xe75d,0xce7a,0xce9a,0xce9a,0xce9a,0xce9a,0xce9a,0xce9a,0xd6ba,0xd6bb,0xce9a,0xc67a,0xce9a,0xd6ba,0xd6ba,0xceba,0xd6ba,0xceda,0xd6fb,0xcedb,0xdf3c,0xc6da,0x7431,0x6b6d,0x6b8e,0x6b8f,0x6bae,0x6b8e,0xce59,0xe73c,0xce9a,0xce79,0xce79,0xce79,0xce7a,0xce7a,0xd69a,0xceba,0xd6ba,0xd6ba,0xce99,0xce9a,0xce99,0xce79,0xce79,0xce9a,0xceba,0xd6ba,0xc679,0xd6db,0xe73d,0x63d0,0x5b2d,0x6b4d,0x6b6e,0x636e,0x5b0c,0xbdd7,0xe75d,0xce9a,0xce9a,0xceba,0xd6ba,0xceba,0xd6ba,0xd6ba,0xce9a,0xceba,0xc67a,0xc69a,0xce9a,0xd69a,0xc659,0xce79,0xce9a,0xc679,0xce79,0xce9a,0xd6fb,0xdf5d,0x6b90,0x52ac,0x52cc,0x526b,0x52aa,0x4a6a,0x94f3,0xef7e,0xbe18,0xbe18,0xb5f7,0xbdf7,0xb5d7,0xbe18,0xbdf8,0xb5f7,0xbdf7,0xbe18,0xb5f7,0xb5f6,0xbdf7,0xb5d7,0xb5d7,0xb5f6,0xadd6,0xb5b6,0xb5b5,0xb5b7,0xd6dc,0x6bb0,0x3a08,0x3a09,0x3a08,0x3a28,0x39c7,0x8410,0xb5f8,0x7431,0x7c10,0x8451,0x8472,0x8c72,0x9492,0x9471,0x8451,0x9cb2,0x9cd3,0x9cd3,0x94b2,0x94d2,0x94b3,0x94b2,0x94b3,0x8452,0x8451,0x8c72,0x8451,0xadb6,0x94f4,0x2926,0x3187,0x29a6,0x2986,0x2985,0x632c,0xc638,0x7410,0x73f0,0x7bcf,0x7c10,0x7bef,0x8410,0x8410,0x6bae,0x6baf,0x6b8e,0x6b6e,0x6b8e,0x6b8e,0x636e,0x6b6e,0x736e,0x7bae,0x7bae,0x73af,0x636e,0x8410,0x9cd4,0x10c5,0x1945,0x1925,0x2125,0x10e4,0x42aa,0x9c73,0x5b2c,0x52cb,0x5b4d,0x6b6e,0x5aeb,0x5aeb,0x5acb,0x5b0b,0x5b2d,0x5b2d,0x532c,0x530c,0x5b4d,0x4acb,0x5b2d,0x5b2d,0x4acc,0x5aec,0x5aec,0x52cc,0x4a69,0x9514,0x18c5,0x1103,0x18e3,0x10e3,0x10c3,0x18e4,0x18e3,0x10c3,0x10c3,0x18c3,0x10c2,0x18c3,0x08c3,0x18e2,0x10c3,0x20c3,0x18a3,0x18c2,0x1102,0xa574,0x4a0a,0x18c3,0x18e4,0x1904,0x18e4,0x1924,0x4a06,0x5288,0x52a9,0x5aa9,0x62c9, +0xe71a,0x9e39,0x3a68,0x5aea,0x5ae9,0x5aca,0x52a9,0x3a08,0x3a08,0x4a2a,0x4269,0x3a28,0x41c8,0xc5d6,0x9e9a,0x2186,0x4209,0x4209,0x3208,0x3a28,0x4229,0x3a08,0x3a28,0x4209,0x3a29,0x4208,0x4208,0x3a09,0x4229,0x39e8,0x4249,0x424a,0x4209,0xb535,0x8cb3,0xceba,0xe7be,0xe79e,0xefbe,0xe7bf,0xe7df,0xefff,0xefde,0xdf9d,0xe7be,0xefdf,0xe79e,0xe79e,0xe7be,0xe7be,0xefbe,0xefdf,0xefde,0xf7df,0xe79e,0xa575,0xd77d,0x5b6e,0x52cb,0x52ab,0x52aa,0x6aaa,0xe77d,0x8cf2,0xdf3c,0xe79d,0xefbe,0xef9e,0xe77e,0xe77d,0xef7e,0xe79e,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xef7d,0xef7d,0xef7e,0xef9e,0xe77d,0xbe19,0xc638,0xbe7a,0x52ec,0x5b4d,0x634d,0x5b4e,0x93f0,0xef9e,0xb596,0xe77e,0xefbe,0xefbe,0xe79e,0xe79e,0xe7be,0xe79e,0xefbe,0xef9e,0xe77d,0xdf7d,0xe79e,0xef9e,0xe75d,0xe75d,0xdf5d,0xe75d,0xe77d,0xdf7d,0xc6ba,0xc659,0xc69b,0x5aed,0x6bae,0x6b8e,0x6bae,0xad55,0xef5d,0xc639,0xef7d,0xe75d,0xef7d,0xe77d,0xef7e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf77e,0xef7e,0xef7e,0xef7d,0xef5d,0xef7d,0xf7be,0xf7be,0xe75d,0xce9a,0xc5d8,0xd71c,0x532d,0x636d,0x634c,0x6b6d,0x8c72,0xef9e,0xbe58,0xe73d,0xdf3c,0xdf3c,0xe75d,0xe75d,0xdf5d,0xe73d,0xe77d,0xe75d,0xdf5d,0xdf5d,0xdf5c,0xdf5d,0xdf5d,0xdf3d,0xd71c,0xd6fb,0xd71b,0xd71c,0xbe79,0xad75,0xd6fd,0x3a4a,0x5aec,0x52ec,0x52cb,0x5b0b,0xe75d,0x9d14,0xd71c,0xdf5d,0xdf5d,0xd75c,0xd75c,0xdf5c,0xd6db,0xdf3c,0xe73d,0xdf3c,0xe77d,0xdf7c,0xe75d,0xdf5d,0xe75d,0xe73c,0xe79d,0xdf5d,0xdf1c,0xcebb,0x8411,0xef9e,0x422a,0x4a49,0x4208,0x4229,0x31a6,0xdf3b,0x73ef,0xe77d,0xe79e,0xe79d,0xe79d,0xe7bd,0xdf7d,0xdf5d,0xe77d,0xdf5d,0xdf5d,0xd75c,0xd71c,0xd73c,0xd73c,0xd75c,0xcf5c,0xd73c,0xd73c,0xd73c,0xc6bb,0x8c93,0xc679,0x424b,0x3986,0x2967,0x2966,0x18e4,0xb5f6,0x5aaa,0xcedb,0xc6ba,0xc6ba,0xceba,0xce9a,0xc679,0xceba,0xce9a,0xc6ba,0xcebb,0xc6ba,0xcedb,0xd71b,0xcefa,0xc6ba,0xce9a,0xc67a,0xc69a,0xc69a,0xbe9a,0xb596,0x94f4,0x52ad,0x2104,0x2925,0x2145,0x08a2,0x94f2,0x526a,0xb638,0xb5f7,0xadd7,0xb5d7,0xadd7,0xadb7,0xa5b6,0xadd7,0xb5f7,0xb617,0xa596,0x9d55,0xa575,0xa575,0xa555,0xad95,0xa555,0xa555,0x9d75,0xa5b6,0xa556,0x638d,0x7390,0x18c3,0x1903,0x10e3,0x08c3,0x10c4,0x10c3,0x10e4,0x08c3,0x10c3,0x10e3,0x08e3,0x10e3,0x10c3,0x18c3,0x20c3,0x18c3,0x18c3,0x1102,0x9d73,0x4a2a,0x20c3,0x20e4,0x18e4,0x20e4,0x28e4,0x4207,0x5288,0x5aa9,0x5aa9,0x5aca, +0xe73b,0x9e59,0x4289,0x5aea,0x5ae9,0x52ca,0x52c9,0x4227,0x39e7,0x424a,0x4269,0x3a49,0x31a7,0xcdd7,0x9e79,0x29c8,0x39e8,0x39e8,0x3a08,0x3a09,0x3a08,0x4208,0x3a08,0x4208,0x4229,0x4228,0x4228,0x4228,0x4228,0x4228,0x4249,0x4249,0x39a7,0xce78,0x9472,0xe75d,0xd6fc,0xd71c,0xdf1c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xe77d,0xbe17,0xe75c,0xe75d,0xdf5d,0xe75c,0xdf3c,0xdf5c,0xdf5c,0xdf5d,0xe77c,0xd71c,0xd71b,0x6bd0,0x52aa,0x52ca,0x4aaa,0x9c52,0xc659,0xef7d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xef9e,0xef9d,0xf7ff,0xf7be,0xe77c,0xffff,0xf79e,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0xa554,0xd75d,0x52cd,0x634e,0x6b6e,0x634e,0xb575,0xbe39,0xffff,0xefde,0xf7bf,0xf7be,0xf7df,0xf7bf,0xf7df,0xf7ff,0xf7de,0xf7de,0xffff,0xffff,0xffff,0xf7de,0xf7df,0xf7df,0xf7de,0xf7df,0xf7de,0xf7de,0xffff,0xa555,0xd71c,0x52ed,0x6b8d,0x73af,0x6b8e,0xce38,0xc639,0xf7df,0xf7de,0xf7be,0xf7de,0xf7df,0xf7be,0xf7be,0xf7be,0xf7ff,0xf7be,0xef7d,0xef5d,0xf7be,0xf7be,0xf7be,0xf7be,0xf7de,0xf7de,0xf7be,0xf7df,0xf7df,0xb597,0xdf5d,0x4acc,0x636e,0x634d,0x630c,0xad54,0xb5f7,0xef9d,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xefbe,0xffff,0xf79d,0xdf1a,0xef7c,0xffff,0xf7be,0xef9d,0xef9e,0xef9d,0xefbe,0xe77d,0xe77d,0xf7df,0xa556,0xe77d,0x424b,0x5aec,0x4acc,0x4a8b,0x7bae,0xbe38,0xce79,0xe77d,0xe77d,0xe75d,0xe73c,0xe73d,0xdf3c,0xe77d,0xc69a,0xd6d9,0xe75d,0xe75c,0xbe17,0xceb9,0xdf1c,0xdf5c,0xdf3c,0xdf1c,0xdf1c,0xd6fc,0xd71c,0xc619,0xce7a,0x5aed,0x4a69,0x4229,0x4229,0x3186,0xbe38,0x94b3,0xdefb,0xd6db,0xceda,0xd6db,0xceba,0xceda,0xceba,0xceba,0xce9a,0xc699,0xceda,0xb617,0xc6b9,0xceda,0xceba,0xc699,0xc679,0xc659,0xc679,0xc699,0xc639,0x7c31,0x7390,0x2966,0x3186,0x3166,0x18e3,0xadb6,0x630d,0xc679,0xbe18,0xbe59,0xbe38,0xbe38,0xbe18,0xbe38,0xc659,0x6b8e,0xbe17,0xbe18,0x9cd3,0x638d,0xadf6,0xb5f7,0xb5d7,0xb5f7,0xb5d7,0xadb6,0xadd7,0xc639,0x6bd0,0x7bd1,0x20e4,0x2125,0x2145,0x0860,0xa533,0x424a,0xadb6,0xa575,0xa575,0xad95,0x9d55,0xa575,0x9d55,0xa575,0x8c72,0x3a08,0xa575,0xa554,0x9d74,0x9d54,0x9d34,0x9d54,0x9d34,0x9d14,0x9d14,0x9cf4,0xa575,0x4a8b,0x7c11,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10e3,0x18c4,0x18c3,0x18c3,0x10c3,0x18a4,0x10a3,0x10c3,0x10c2,0x10e3,0x9d74,0x4a2b,0x18a3,0x20e3,0x1904,0x1924,0x28e3,0x4207,0x52a8,0x52a9,0x5aa9,0x52ca, +0xe71b,0x9659,0x4289,0x5ae9,0x5aea,0x5ae9,0x52c9,0x4208,0x39e7,0x4249,0x4a49,0x4229,0x3988,0xcdf7,0x9e99,0x29e8,0x3a09,0x3a08,0x39e7,0x3a28,0x39e8,0x3a08,0x3a08,0x41e8,0x4207,0x4249,0x4209,0x4a29,0x4249,0x3a48,0x4229,0x4249,0x39a8,0xc678,0x9c72,0xe75c,0xdf3c,0xdf1c,0xdf3c,0xdf5c,0xdf5c,0xdf3c,0xdf3d,0xe77d,0x95b7,0x3187,0xe6da,0xe75c,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xcf1c,0xcefa,0x63d0,0x52ab,0x52cc,0x4aca,0x9c72,0xc639,0xf79d,0xef9e,0xef9e,0xef9e,0xefbe,0xefbe,0xefbd,0xef9d,0xefbe,0xa596,0x5aec,0x632c,0xb575,0xf7de,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0x9d55,0xd75d,0x52cc,0x636e,0x634e,0x6b6e,0xc5d6,0xadf8,0xffdf,0xefbe,0xf7bf,0xf7be,0xf7df,0xf7df,0xf7df,0xefbe,0x4a8b,0x736f,0x73af,0x7bf0,0xd679,0xffde,0xefbe,0xf7bf,0xf7de,0xf7be,0xf7de,0xf7be,0xffff,0x9d14,0xd6db,0x5b0e,0x73af,0x6bcf,0x6b6e,0xd679,0xbe18,0xf7de,0xf7be,0xf7de,0xf7de,0xf7be,0xf7be,0xf7be,0xf7be,0xf7ff,0x630d,0x8c31,0x7c0f,0xd6ba,0xf7df,0xf7be,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xf7de,0xad76,0xdf5d,0x52cc,0x6b8e,0x6b4e,0x62eb,0xb595,0xad96,0xf79e,0xef9d,0xef9e,0xef9e,0xefbe,0xef9d,0xf7be,0xf7be,0xad75,0x6b4d,0x73d0,0x7baf,0x8c50,0xe71b,0xef9e,0xef7e,0xef9e,0xef9d,0xe77d,0xe77d,0xef7e,0xad96,0xdf5d,0x4a6b,0x52eb,0x52ab,0x4a6b,0x736d,0xb5f7,0xd6da,0xe75c,0xe77c,0xe77d,0xe75c,0xe75c,0xdf5c,0xe79d,0x8c72,0xb5b4,0xe77d,0xefbe,0x39c8,0xc617,0xdf1c,0xdf3c,0xe73c,0xdf3c,0xdf3c,0xd71c,0xd6fb,0xc659,0xad96,0x52ed,0x4229,0x3a29,0x3a29,0x41e6,0xc618,0x94b3,0xd6db,0xd6ba,0xd6db,0xd6da,0xd6da,0xd6db,0xd6da,0xce9a,0xce99,0xceda,0xd6db,0x4249,0xe77c,0xce99,0xc699,0xce79,0xc679,0xc699,0xc678,0xc679,0xc659,0x73cf,0x8412,0x2966,0x29a6,0x29a6,0x1903,0xadb5,0x634d,0xbe38,0xbe38,0xbe38,0xb638,0xbe59,0xc618,0xbe18,0xc67a,0x10a3,0xceb9,0xce19,0x2905,0x94f2,0xbe38,0xb5f7,0xb5f7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb618,0x6b8e,0x8c52,0x18a4,0x2145,0x3145,0x0841,0x9d13,0x3a8b,0xadb6,0xa596,0xa5b5,0xa595,0x9d55,0xa595,0xa575,0xa575,0x9c93,0x1924,0xa5b5,0xa535,0xa555,0x9d54,0x9d54,0x9d14,0xa534,0x9d14,0x9d34,0x9d14,0xa576,0x424b,0x8c52,0x10c3,0x20e4,0x18c3,0x20c3,0x10c4,0x18e3,0x18c3,0x20e2,0x18c3,0x10c3,0x18e3,0x10c3,0x08c3,0x08c3,0x18a3,0x10a3,0x08c2,0x10e2,0xa594,0x524b,0x1083,0x18e3,0x1103,0x1904,0x2104,0x4207,0x5aa8,0x52a9,0x52c9,0x5aca, +0xe71b,0x9638,0x4288,0x52ea,0x52e9,0x52e9,0x52a9,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4188,0xce17,0x9e9a,0x31c8,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x3228,0x3a28,0x4229,0x3a28,0x4228,0x4229,0x3a08,0x4269,0x4228,0x4229,0x4229,0x39c7,0xc658,0x9452,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf3c,0xdf3c,0xdf3c,0xdfff,0x63cf,0x9555,0xb555,0xef9d,0xe75d,0xe75d,0xe75d,0xe75c,0xe77d,0xdf5d,0xe75d,0xcf1c,0xd71a,0x5baf,0x4a8b,0x52ac,0x4a8a,0x9410,0xc639,0xf7bd,0xefbe,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef9d,0xefdf,0x7bf0,0xffbe,0xefff,0xbe38,0xf7ff,0xefbe,0xef9e,0xef9e,0xef9e,0xf7be,0xef9e,0xf7df,0xa576,0xd71c,0x52ab,0x6b4e,0x6b4d,0x6b4d,0xc5d7,0xb659,0xffdf,0xf7be,0xefde,0xf7de,0xefde,0xf7df,0xf7df,0xefbf,0x630d,0xffff,0xffff,0xefdf,0x8473,0xe6fb,0xf7ff,0xf7de,0xf7df,0xefbe,0xf7de,0xf7be,0xffff,0xa576,0xceda,0x530d,0x6b6e,0x6bcf,0x736e,0xde79,0xbe38,0xf7de,0xf7df,0xf7be,0xf7de,0xefbe,0xf7be,0xf7be,0xf7de,0xffff,0x6bd0,0xffff,0xffff,0xf7df,0xefbe,0xefbe,0xf7be,0xf7be,0xefbe,0xf7be,0xf7be,0xf7df,0xa555,0xdf3c,0x5b0d,0x638f,0x632d,0x632c,0xbd95,0xb5f7,0xef7d,0xef9d,0xef9e,0xef9d,0xef9d,0xef9d,0xf7df,0xce7a,0x8cb2,0xffff,0xf7de,0xefff,0xbe7a,0xc699,0xef9e,0xef9e,0xef9d,0xef7d,0xef9d,0xef7e,0xe77e,0xadb6,0xdf5d,0x528c,0x52cc,0x52ac,0x4aab,0x734d,0xb5f7,0xd6ba,0xe75c,0xe77c,0xe75c,0xe73c,0xe75c,0xdf5c,0xe77e,0x8493,0xc637,0xf7be,0xe7bd,0x3a2a,0xc617,0xdefb,0xd73c,0xd73c,0xdf3c,0xdf1b,0xdf3c,0xd6fb,0xbe38,0xad95,0x52cd,0x3a48,0x3a49,0x3a49,0x39c6,0xbdf7,0x9cf3,0xceda,0xd6da,0xd6fb,0xd6db,0xceda,0xceba,0xce9a,0xceba,0xc6ba,0xceba,0xd6fc,0x4a69,0xdf5c,0xce99,0xceba,0xce9a,0xc679,0xceba,0xc679,0xc699,0xbe58,0x7c10,0x7bf1,0x2945,0x29a7,0x29a7,0x18c3,0xad94,0x5b2c,0xb657,0xbe38,0xb618,0xbe59,0xbe38,0xc638,0xb617,0xc69a,0x18e4,0xdf3c,0x39a7,0x7c2f,0xbe78,0xbdd6,0xbe18,0xb5f7,0xadd7,0xb5d7,0xb5d6,0xb5b6,0xb5d7,0x6bcf,0x8452,0x18e4,0x2125,0x1946,0x0062,0x8cb2,0x428a,0xadb6,0xa575,0xa595,0xa595,0x9d75,0xa576,0xa595,0xa576,0xa494,0x1903,0xa595,0xa555,0xa555,0x9d34,0xa554,0xa535,0xa535,0x9d14,0x9d14,0x9d14,0xad76,0x4a6b,0x8c52,0x10a3,0x20e4,0x18e4,0x10e3,0x10e4,0x18c3,0x18e4,0x10c3,0x18e3,0x08e4,0x18c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x10e2,0x10e3,0x9513,0x526c,0x1082,0x2103,0x2103,0x1904,0x2103,0x4226,0x5a89,0x5ac9,0x52c9,0x5ae9, +0xe71b,0x8df7,0x4aa9,0x5aea,0x52ea,0x52ca,0x52c9,0x4a07,0x4208,0x4249,0x4249,0x4a29,0x4187,0xd678,0x9659,0x29e8,0x3a08,0x39e8,0x4228,0x3a29,0x3a28,0x3a08,0x4209,0x4229,0x3a28,0x4228,0x4229,0x4229,0x4229,0x4a29,0x4249,0x4249,0x3187,0xc679,0x8c72,0xe73c,0xdf1c,0xdf5c,0xdf3c,0xdf3c,0xe73c,0xdf1b,0xd73b,0xa618,0x83cf,0xdfdf,0x734f,0xef9d,0xdf7d,0xe75d,0xe75d,0xe77d,0xe75d,0xe77d,0xef9d,0xd71c,0xcefb,0x63d0,0x4acb,0x5acc,0x52ab,0x9c51,0xc639,0xf7be,0xefbe,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xef9e,0xefdf,0x8493,0xacf4,0xe6fb,0xffff,0xef7d,0xef9d,0xef9e,0xef9e,0xef9e,0xf7be,0xf7be,0xf7df,0xa535,0xcf1c,0x4aac,0x634e,0x6b4d,0x634d,0xc5d7,0xbe59,0xffff,0xefbe,0xefdf,0xefbe,0xefbe,0xefbe,0xf7de,0xefbe,0x6acc,0xffff,0xf79e,0xefde,0xcefc,0x9cb2,0xffff,0xf7be,0xefde,0xf7be,0xf7df,0xf7be,0xf7ff,0x9cf4,0xcedb,0x5b2e,0x6baf,0x73cf,0x736e,0xde9a,0xb5f7,0xf7be,0xf7df,0xf7be,0xf7de,0xf7de,0xf7be,0xf7de,0xf7df,0xffff,0x7bf1,0xef7d,0xef7d,0xf79e,0xf7be,0xf7be,0xf7df,0xf7df,0xf7be,0xf7de,0xf7be,0xf7ff,0xad75,0xdf3c,0x5b0d,0x636e,0x632d,0x632c,0xb595,0xb5d6,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xf7ff,0x6b6e,0xf79e,0xef7e,0xffdf,0xffff,0xffff,0xffff,0xef9d,0xef9d,0xe77d,0xef9d,0xef9e,0xe77d,0xef9e,0xb5d7,0xdf5d,0x4a8b,0x630d,0x52cc,0x4acc,0x736d,0xadd7,0xd6fb,0xe73c,0xe75c,0xe75c,0xdf3c,0xe75c,0xe75c,0xe77e,0x94d4,0x9471,0xc5f7,0xbdd7,0x4208,0xc658,0xd6fb,0xdf3b,0xdf3c,0xdf3c,0xd71b,0xdf1b,0xd6fb,0xbe39,0xad95,0x52cd,0x4249,0x4249,0x3a49,0x39c6,0xbe17,0x9cd2,0xceda,0xd6da,0xd6fb,0xd6db,0xceba,0xd6db,0xceba,0xce9a,0xce9a,0xced9,0xd6dc,0x4a49,0xe75c,0xc699,0xce99,0xc699,0xc699,0xce99,0xc678,0xbe59,0xbe39,0x73d0,0x7c12,0x2105,0x31a7,0x3186,0x10a2,0xb5d5,0x52ec,0xbe58,0xbe58,0xbe59,0xc658,0xbe38,0xc658,0xb618,0xd69b,0x18e6,0x7b8f,0x4a6a,0xb638,0xb5d7,0xb5f7,0xb5f7,0xadd6,0xb5d6,0xb5d7,0xadd6,0xadb6,0xbdd8,0x6baf,0x8c53,0x1924,0x2945,0x1926,0x10a2,0x84b2,0x3a49,0xa5b6,0xad96,0xad96,0xad96,0xa576,0xa555,0xa575,0x9d55,0x9cb4,0x18e3,0x9d54,0x9d34,0x9d35,0xa554,0xa554,0xa575,0x9d34,0x9d14,0x9d14,0x9514,0xadb6,0x4a8b,0x9473,0x18a3,0x18e4,0x18e3,0x10e3,0x10e4,0x10e3,0x10e3,0x10c4,0x18a3,0x10c3,0x10e3,0x18c3,0x08a3,0x08e3,0x08e3,0x18e3,0x18c3,0x10c2,0x9d53,0x4a4c,0x1062,0x1103,0x1903,0x2103,0x1903,0x3a26,0x52a8,0x52c9,0x52c9,0x5aca, +0xdf1b,0x95d7,0x52a9,0x5aea,0x5aca,0x52ca,0x4ae9,0x3a07,0x39e8,0x3a6a,0x3a49,0x4229,0x4988,0xde58,0x9e59,0x29e7,0x3a28,0x4229,0x4208,0x3a28,0x3a08,0x4208,0x3a49,0x3a28,0x3a29,0x4228,0x4228,0x3a28,0x3228,0x4229,0x4a6a,0x4a4a,0x41a8,0xc699,0x9452,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdfbe,0x5b2d,0xa4b3,0xbe3a,0x524b,0xe6db,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe79d,0xcf1c,0xdf3c,0x63f1,0x52cb,0x52aa,0x52ab,0x9c92,0xbe39,0xf7be,0xef9e,0xe79d,0xef9e,0xef9e,0xef9e,0xef9e,0xe79e,0xef9d,0xe7be,0x9d55,0x630d,0xb535,0xffff,0xefbe,0xef9e,0xefbe,0xef9e,0xf7be,0xefbe,0xf7df,0x9d34,0xcf1c,0x42ab,0x634d,0x5b4d,0x630c,0xcdf7,0xbe59,0xffdf,0xf7be,0xf7df,0xefbe,0xefbe,0xf7df,0xf7df,0xefdf,0x6aec,0xffff,0xefbe,0xf79e,0xdf5d,0x83ef,0xffff,0xf7df,0xf7de,0xf7be,0xf7df,0xf7be,0xf7ff,0x9cf4,0xd73c,0x530d,0x73cf,0x6b6e,0x6b4d,0xde9a,0xb5d7,0xf7be,0xf7be,0xf7be,0xf7de,0xf7de,0xf7be,0xf7de,0xf7de,0xffff,0x6b8f,0x7c30,0x6b6e,0xd6b9,0xf7de,0xf7de,0xf7df,0xf7de,0xf7be,0xf7be,0xef9e,0xf7df,0xa535,0xe75c,0x632d,0x6b4e,0x636e,0x62ec,0xb575,0x9d34,0xef9d,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xefdf,0x52cc,0xf7be,0xe79e,0x9d34,0x9cd3,0x9cb3,0x9cd2,0xef5d,0xe77d,0xef9e,0xef9d,0xefbe,0xef9e,0xef9e,0xb5b7,0xdf3c,0x3a6b,0x52eb,0x52eb,0x4aab,0x734d,0xb5f7,0xd6da,0xe73c,0xe77c,0xdf3c,0xdf5c,0xe73c,0xe73c,0xefbe,0x94f5,0x52ab,0x738e,0x73af,0x2966,0xce78,0xd6fb,0xdf1c,0xdf1b,0xdf1c,0xdf1c,0xdf1b,0xd71b,0xb619,0xb5d6,0x52cc,0x3a28,0x4209,0x4228,0x39a6,0xbe17,0x8cb2,0xd6db,0xd6da,0xd6db,0xd6ba,0xc6da,0xd6fa,0xd6ba,0xceba,0xceba,0xceba,0xd6fc,0x528a,0xe79d,0xc679,0xce9a,0xc679,0xc699,0xce9a,0xc679,0xbe79,0xc659,0x7c10,0x8412,0x2145,0x31a7,0x29a6,0x1061,0xc637,0x52eb,0xbe58,0xbe58,0xbe38,0xbe37,0xc639,0xb618,0xbe17,0xd69b,0x18e5,0x5b0d,0x4a49,0xc618,0xb5d7,0xb5f6,0xb5d7,0xb5f6,0xbdf7,0xb5d7,0xb5d7,0xadb6,0xbdf8,0x634d,0x8c73,0x1905,0x2945,0x2145,0x1062,0x8cb1,0x3a4a,0xadd6,0xad76,0xadb6,0xa596,0xad96,0xad95,0x9d75,0xad96,0x94f5,0x10e3,0x9d54,0x9d55,0x9d35,0x9d35,0xa514,0x9d34,0xa534,0x9d34,0x9533,0x9514,0xad96,0x4a8b,0x8c72,0x10c3,0x18e4,0x18e4,0x10e3,0x10c4,0x10c3,0x10e3,0x10c3,0x18c3,0x08c3,0x10c3,0x10e3,0x08a3,0x10c3,0x10a2,0x18e3,0x18e4,0x10c2,0x9d74,0x4a6c,0x10a3,0x08e3,0x1104,0x2104,0x1944,0x3a26,0x4a88,0x52c9,0x5aa9,0x62ca, +0xdf1b,0x8db7,0x4a69,0x5aea,0x5aca,0x52c9,0x52ca,0x3a08,0x4208,0x4249,0x4269,0x4249,0x49a7,0xe6ba,0x9638,0x31c7,0x3a28,0x3a29,0x3a08,0x3a08,0x3a28,0x31e8,0x3a08,0x4208,0x4228,0x4208,0x4208,0x4249,0x3a49,0x3a49,0x4269,0x4229,0x3988,0xce9a,0x9452,0xe75c,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xe77d,0xcf7d,0x528b,0xc679,0xb618,0x7cb4,0x9431,0xef9d,0xdf5c,0xe77d,0xe75d,0xe75d,0xe75d,0xe77d,0xcefb,0xd6fb,0x538f,0x52cb,0x52cb,0x52ab,0x9cb3,0xb5f8,0xf79d,0xef9e,0xe79e,0xef9e,0xef9e,0xef9e,0xef9d,0xef9e,0xe77d,0xf7de,0xffff,0xefff,0x7bf0,0xffff,0xef9e,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xf7ff,0xa555,0xcf1c,0x428b,0x634d,0x5b4d,0x62ed,0xc5d7,0xbe59,0xffff,0xf79e,0xf7df,0xf7de,0xf7de,0xf7be,0xf7de,0xefdf,0x6b0c,0xffff,0xf79e,0xf7df,0xcedb,0xa534,0xffff,0xf7be,0xf7be,0xefdf,0xf7bf,0xf7be,0xffff,0x9d15,0xdf3d,0x4aec,0x73af,0x73af,0x632c,0xdeba,0xb596,0xefbe,0xf7be,0xefde,0xf7be,0xf7de,0xf7de,0xf7df,0xf7de,0xffff,0x7bf1,0xfffe,0xf7ff,0xf7de,0xf7de,0xf7de,0xf7de,0xf7be,0xefbe,0xf7be,0xf7be,0xefbe,0xa535,0xe73d,0x530d,0x6b4e,0x6b4e,0x5b0c,0xb575,0xa535,0xf7be,0xefde,0xefbe,0xefbe,0xefbd,0xef9e,0xf7df,0x73f1,0xe6db,0xf7de,0xcf1c,0xd71c,0xcebb,0x5aeb,0xefbe,0xef7d,0xef9e,0xe77d,0xef9d,0xef9e,0xef9d,0xb5d7,0xdf3c,0x428c,0x5aec,0x528b,0x4a8b,0x7b8d,0xb5f7,0xd6db,0xe75c,0xef9d,0xe75d,0xe77d,0xe75c,0xe73c,0xefbe,0x94b4,0xb594,0xf7df,0xf7df,0x52ab,0xbe17,0xd71b,0xd71c,0xd6fb,0xd71c,0xd71c,0xdf1b,0xd6fb,0xb618,0xb5d6,0x52ed,0x4249,0x4229,0x4a29,0x41c6,0xbdf7,0x8c92,0xdefb,0xdefa,0xdefb,0xd6ba,0xceda,0xceba,0xceba,0xcedb,0xceba,0xceba,0xd6dc,0x4a28,0xe79c,0xc699,0xc69a,0xc69a,0xc699,0xc679,0xce9a,0xc679,0xbe59,0x7c51,0x7bf1,0x31a6,0x3987,0x31a7,0x1042,0xb5d5,0x52eb,0xbe78,0xbe38,0xbe58,0xb638,0xb618,0xbdf8,0xbe17,0xcebb,0x10c4,0xc6fa,0x3a4a,0x738d,0xce99,0xb5d7,0xb5d7,0xb5f7,0xb5f7,0xb5d7,0xb5f7,0xad96,0xb5f7,0x630d,0x8c52,0x18e5,0x2145,0x2124,0x0861,0x9491,0x3a4a,0xb5d6,0xb5d6,0xad95,0xad96,0xa596,0xa576,0xa576,0xa575,0x9d15,0x10c2,0xa595,0xadb6,0x9d55,0x9d35,0x9d14,0x9d14,0x9d14,0x9514,0x9d34,0x8d14,0xadf8,0x4aab,0x8cb4,0x10c4,0x1904,0x18e4,0x10c4,0x18a4,0x10c3,0x10c3,0x00c3,0x10c3,0x10e3,0x18c3,0x10a3,0x10c2,0x18c4,0x10a3,0x10c3,0x18e3,0x10e2,0x9d54,0x528c,0x1043,0x1103,0x1904,0x1123,0x2145,0x31e7,0x4a88,0x52c9,0x52a9,0x5aaa, +0xe73b,0x85b6,0x4a69,0x5aea,0x52ea,0x5aca,0x4aa9,0x3a07,0x4207,0x4a69,0x4249,0x4208,0x4186,0xdeba,0x8dd7,0x31c7,0x4208,0x4229,0x3a09,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x4248,0x4228,0x4229,0x4229,0x4a2a,0x4249,0x3a2a,0x31a7,0xce99,0x9473,0xdf3c,0xd71c,0xdf3c,0xdf1c,0xdf3c,0xe77d,0xe79e,0x6c52,0xbd96,0xf7be,0xe77d,0xcf9d,0x630d,0xef7d,0xdf3c,0xe77d,0xe75d,0xe75d,0xe75d,0xef9d,0xcefc,0xcf1c,0x5baf,0x5acb,0x52cb,0x526a,0xa4b3,0xb5f8,0xf7be,0xef9e,0xef9e,0xe7be,0xe79d,0xef7e,0xef9d,0xef9e,0xefdf,0x7bf0,0xf73c,0xdf3d,0x634d,0xffff,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7be,0xefdf,0xa575,0xcf1c,0x42ac,0x632d,0x632c,0x62ed,0xce18,0xbe59,0xffff,0xefbe,0xf7be,0xf7de,0xf7be,0xf7de,0xf7de,0xefdf,0x630d,0xf7be,0xf79e,0xe6fc,0x7bef,0xf79d,0xf7be,0xf7be,0xf7be,0xf7de,0xf7be,0xefbe,0xf7ff,0xa536,0xdf3c,0x52ec,0x73ae,0x738e,0x632c,0xdeda,0xb5b6,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7de,0xf7de,0xf7de,0xffff,0x738f,0xffff,0xf7be,0xef9d,0xefbe,0xf7be,0xf7be,0xf7be,0xf7be,0xf7be,0xf7bf,0xf7de,0xad76,0xdf3d,0x5b0d,0x6b4e,0x634e,0x5b2d,0xbd96,0xa535,0xf7be,0xefbe,0xefde,0xefbe,0xef9e,0xef9e,0xf7be,0xdf3d,0x7bcf,0xe73c,0xffde,0xf7be,0x94d4,0xa555,0xffff,0xe77e,0xef9e,0xef9e,0xef7d,0xef7d,0xe77d,0xadd7,0xdf5c,0x52ac,0x5aac,0x52ab,0x52cb,0x7b8d,0xb5f7,0xd6da,0xe75c,0xe77d,0xe75d,0xdf5c,0xe73c,0xe75c,0xe79e,0x94d4,0xad54,0xe79d,0xef9e,0x4a8b,0xb616,0xd6fb,0xd71b,0xd6fb,0xd71b,0xd71b,0xdf1b,0xdf1b,0xc659,0xb5b6,0x52ed,0x3a48,0x3a29,0x4229,0x39a6,0xbe59,0x94b2,0xdefb,0xd6da,0xd6db,0xceba,0xceba,0xceba,0xce99,0xdf1c,0x7c31,0xc658,0xbdd8,0x632c,0xd73b,0xc69a,0xce99,0xc699,0xc679,0xc679,0xc69a,0xc699,0xbe18,0x7c50,0x7bf1,0x3166,0x3186,0x3187,0x0862,0xb5f7,0x52ec,0xc658,0xbe38,0xbe59,0xc639,0xbe18,0xbe18,0xbe18,0xc659,0x10a3,0xbe57,0xbe5a,0x2146,0x8c70,0xadf7,0xbdf7,0xb5d8,0xb5d7,0xadd7,0xadf7,0xadb7,0xb5f7,0x5b0d,0x9493,0x18a4,0x2125,0x2144,0x1081,0x8cb1,0x3a2a,0xadd6,0xadb6,0xad76,0xad56,0xa575,0xa575,0xa576,0x9d54,0xa515,0x0842,0x5aaa,0x5a8a,0x94d2,0xa534,0x9d14,0x9d35,0x9d15,0x9d15,0x9514,0x9534,0xadb6,0x4aec,0x9495,0x1084,0x1904,0x20e4,0x10c4,0x18c4,0x18e3,0x10e3,0x10e3,0x10c4,0x08e3,0x08e2,0x08c2,0x08c3,0x18c3,0x10c3,0x18c3,0x18c3,0x10c2,0xa554,0x52ac,0x1063,0x18e3,0x18e4,0x18e4,0x1103,0x39e6,0x5288,0x52c9,0x52a9,0x5aca, +0xe73b,0x7d75,0x4aa9,0x5aea,0x5aea,0x52aa,0x4a89,0x3a07,0x31e6,0x3a29,0x4208,0x3a29,0x49a7,0xd699,0x85b7,0x31a7,0x4248,0x3a28,0x3a08,0x4208,0x41e8,0x4228,0x3a08,0x4208,0x3a08,0x4249,0x4249,0x4229,0x4208,0x4a29,0x4249,0x426a,0x3987,0xc6b9,0xa4b4,0xe71c,0xdf7d,0xe75c,0xdf3c,0xdf3c,0xe73d,0xcf1c,0x9596,0xe73c,0xdf1c,0xdf3c,0xe79e,0x9d55,0xdefc,0xe75c,0xe75d,0xdf5c,0xdf5c,0xe75d,0xef9d,0xbedb,0xdf3c,0x5bd0,0x528b,0x62cb,0x4a8a,0xad14,0xb5f8,0xf7de,0xe77d,0xe77d,0xef9d,0xef9d,0xef9d,0xefbe,0xef9e,0xf7df,0xb639,0x5b4d,0x5acb,0xdebb,0xffde,0xf7be,0xefbe,0xefbe,0xefbe,0xef9e,0xef9e,0xf7ff,0xa575,0xd73d,0x4aac,0x634d,0x6b2d,0x634d,0xcdf7,0xc67a,0xffff,0xf7be,0xefbe,0xf7de,0xf7de,0xf7be,0xf7be,0xefbe,0x5bd0,0x636e,0x6b4e,0x8c72,0xef7d,0xf7be,0xf7be,0xf7be,0xefbe,0xf7de,0xefbe,0xefbe,0xf7ff,0xad75,0xcf1c,0x52cc,0x6b8e,0x738e,0x6b2d,0xd679,0xb5b6,0xf7de,0xf7de,0xf7df,0xf7be,0xf7be,0xefbe,0xefbe,0xefde,0xefff,0x8cb2,0xffdf,0xefbe,0xefbd,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7be,0xf7be,0xf7be,0xa555,0xd71c,0x5aec,0x6b6e,0x6b6e,0x630d,0xb575,0xad55,0xf7be,0xef9d,0xf7be,0xf7be,0xf7be,0xef9e,0xef7e,0xefff,0xc6db,0x5b4d,0x5aab,0x630d,0xb5f7,0xf7df,0xef7d,0xe79e,0xe77d,0xef7d,0xe77d,0xef7d,0xe77d,0xb5d7,0xdf5d,0x4a8b,0x5acc,0x4acc,0x52eb,0x7b8d,0xbe58,0xce99,0xe75c,0xe75d,0xe75d,0xe77c,0xe73c,0xe75c,0xef9d,0x9d76,0xadd6,0xe77d,0xdf7d,0x7c51,0xceb9,0xdefb,0xd6fb,0xd71b,0xd71b,0xd6fb,0xd71b,0xdefb,0xc619,0xc638,0x52ed,0x3a28,0x3a08,0x4208,0x39a6,0xbe58,0x94b2,0xd6fa,0xd6fb,0xd6db,0xd6bb,0xce9a,0xceba,0xce9a,0xd6fc,0xa556,0x2166,0x31e7,0xc679,0xce9a,0xceba,0xceba,0xc679,0xce9a,0xc679,0xc679,0xc679,0xc639,0x7c30,0x7bd1,0x3166,0x3166,0x2987,0x08a2,0xadd5,0x52ed,0xbe58,0xbe38,0xbe38,0xbe37,0xbe37,0xbe38,0xbe38,0xb618,0x5b0c,0xb5f7,0xb5f7,0x9d76,0x6bef,0xadd7,0xb5d6,0xb5d7,0xad96,0xadb6,0xadd7,0xadb6,0xb5d7,0x5b0c,0x9473,0x18e5,0x2925,0x2945,0x1081,0x8cd2,0x31c8,0xa5b5,0xa595,0xa596,0xa576,0xa595,0xa575,0xa575,0xa574,0xa596,0x9536,0x9d55,0x94f4,0x9d75,0x9d54,0x9d33,0xa535,0x9514,0x9d35,0x9514,0x9514,0xa575,0x4acb,0x8c73,0x1084,0x18e4,0x20e4,0x18e4,0x18e4,0x08c3,0x18e3,0x20c3,0x18e4,0x08c4,0x08a3,0x10c3,0x18c3,0x10c3,0x00c2,0x10a3,0x10a3,0x10a2,0xa574,0x52ac,0x10a3,0x10c4,0x1904,0x1904,0x1124,0x3a06,0x5288,0x52a9,0x5aa9,0x62e9, +0xdf1b,0x7d55,0x4a89,0x5b0a,0x5aea,0x52e9,0x52a9,0x39e7,0x3a07,0x4249,0x4249,0x3a49,0x49a8,0xdeba,0x8db7,0x31a7,0x4228,0x3a48,0x3a08,0x3a29,0x3a08,0x3a08,0x3a08,0x3a08,0x3a28,0x3a08,0x3a28,0x3a29,0x4208,0x4229,0x4249,0x4a4a,0x41a8,0xce79,0x9d15,0xef5c,0xf7be,0xf7de,0xef9d,0xef9d,0xef9d,0xefbd,0xffff,0xefbe,0xef9e,0xf7be,0xefbe,0xefdf,0xf7fe,0xf7de,0xf7de,0xefde,0xefde,0xf7df,0xffff,0xa5f7,0xe7be,0x534d,0x4aaa,0x52ab,0x52ab,0xa492,0xc659,0xef3b,0xf7de,0xffff,0xffff,0xf7de,0xf7de,0xf7fe,0xffdf,0xf7df,0xffff,0xf7ff,0xffff,0xffff,0xf7df,0xf7df,0xffdf,0xf7ff,0xf7be,0xf7df,0xf7df,0xefff,0xa554,0xcf1c,0x52cc,0x532d,0x632d,0x634d,0xad75,0xcedb,0xffbe,0xffff,0xf7ff,0xf7ff,0xffff,0xf7ff,0xf7df,0xf7fe,0xf7ff,0xffff,0xf7ff,0xffff,0xffff,0xf7df,0xf7ff,0xf7df,0xf7de,0xf7de,0xf7ff,0xf7de,0xf7ff,0xa514,0xdf5d,0x52ac,0x638e,0x6b6e,0x634e,0xce38,0xc679,0xffbf,0xffff,0xffff,0xffff,0xf7df,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xf7ff,0xf7df,0xf7de,0xf7df,0xf7ff,0xf7df,0xf7ff,0xffff,0xffdf,0xf7df,0xffff,0xa534,0xe79e,0x5b0d,0x6b8e,0x634d,0x5acc,0xb554,0xb5d7,0xf7be,0xf7be,0xf7be,0xf7de,0xffdf,0xefdf,0xef9d,0xf7be,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xefbe,0xf7be,0xf7df,0xef9d,0xf79d,0xef9d,0xf7de,0xf7df,0xad96,0xefbe,0x528b,0x5aec,0x52cc,0x52ab,0x6b2c,0xceba,0xc639,0xf7be,0xef7d,0xef9d,0xef9d,0xef9d,0xef9d,0xef9d,0xef9d,0xe79c,0xe75c,0xe75c,0xe77c,0xef9d,0xe75c,0xe75d,0xe75c,0xe75c,0xe77c,0xe73c,0xe75d,0xbdf8,0xd6fb,0x4aac,0x4249,0x3a09,0x4228,0x3186,0xce99,0x83f0,0xef7d,0xef5d,0xe75c,0xdf3c,0xdf3c,0xe75c,0xe73c,0xdf3c,0xe77c,0xe77e,0xe79d,0xe73c,0xd6db,0xdefb,0xdefb,0xdf1b,0xe73b,0xd6da,0xceba,0xdefb,0xbdb7,0xa574,0x6b2e,0x3186,0x2966,0x21a6,0x08c3,0xbdf6,0x526b,0xd6ba,0xceb9,0xce9a,0xce99,0xceb9,0xceb9,0xceba,0xc679,0xd6db,0xce79,0xbe79,0xceb9,0xcedb,0xce79,0xce99,0xc679,0xc658,0xc659,0xc678,0xc638,0xad55,0x84b2,0x7b90,0x1905,0x2124,0x2145,0x10c3,0x844f,0x6b2d,0x94d2,0xb5b6,0xbdf7,0xbdd6,0xb5d6,0xb5b5,0xb5b5,0xadd5,0xad75,0xad75,0xad96,0x9d55,0xa555,0xa554,0xa574,0xad55,0xa514,0x9d14,0x94d3,0x94d3,0x8c72,0x636e,0x630c,0x18e4,0x2104,0x1905,0x10c4,0x10e4,0x08c4,0x10e3,0x20c3,0x08c3,0x10e3,0x18c3,0x10a4,0x10c2,0x10c3,0x10c3,0x10c3,0x08e3,0x08a2,0xa554,0x5aad,0x1083,0x10c3,0x2104,0x1103,0x10e3,0x4226,0x5288,0x52a9,0x5aa9,0x5ae9, +0xdf1b,0x7d34,0x4aa9,0x52ea,0x5aca,0x52c9,0x5288,0x4207,0x3a28,0x3a69,0x4249,0x4a49,0x49a8,0xd67a,0x7db6,0x29a7,0x39e8,0x31e7,0x3a08,0x39e8,0x4208,0x4228,0x3228,0x3a08,0x4208,0x3a07,0x3a28,0x3a29,0x4229,0x4229,0x4249,0x4229,0x4208,0x9431,0xbe18,0x9cd3,0x9cd3,0x9d14,0x9cf4,0x9cd4,0xa535,0x9d55,0xa535,0xa555,0xad76,0xad55,0xa596,0xadb5,0xad95,0xa554,0xa534,0xad55,0xad75,0xa534,0x94d3,0xadd7,0x9dd7,0x4249,0x52cb,0x52ab,0x52aa,0x626b,0xe73c,0xad95,0xbdb7,0xbdf7,0xb5d7,0xbe38,0xbe38,0xc638,0xc679,0xce9a,0xce9a,0xce7a,0xc658,0xc659,0xc679,0xce79,0xd69a,0xce79,0xce9a,0xce9a,0xc659,0xbe38,0xe75d,0x9514,0x52eb,0x5b0d,0x5b0c,0x636e,0x734d,0xe77d,0xb5f6,0xbe18,0xce79,0xce9a,0xd6ba,0xd6ba,0xd6ba,0xd6db,0xdedb,0xdeda,0xdefb,0xd6da,0xdefb,0xdefb,0xd6ba,0xdefb,0xdedb,0xdefb,0xe71b,0xe71c,0xc638,0xce79,0xb639,0x5acc,0x6b4d,0x738e,0x6b8e,0x9491,0xf7be,0xb5b6,0xd699,0xd6db,0xd6ba,0xce9a,0xce9a,0xd69a,0xd6ba,0xdeda,0xd6db,0xceba,0xdf1b,0xdeba,0xd69a,0xdedb,0xd6ba,0xd67a,0xce9a,0xce7a,0xce9a,0xc679,0xdf3c,0xbe39,0x5b2c,0x636d,0x6b6d,0x5b4d,0x8c10,0xef9e,0xbdf7,0xd6ba,0xdefb,0xd6ba,0xdebb,0xdefb,0xd6ba,0xd6db,0xd6db,0xd6ba,0xd6ba,0xd69a,0xd679,0xd69a,0xd69a,0xd69a,0xce79,0xce38,0xd679,0xce58,0xc637,0xc69a,0xce9b,0x52ab,0x52eb,0x4a8b,0x52ab,0x4a6a,0xe73c,0xbd97,0xc5d7,0xc618,0xc618,0xb5d6,0xb5d7,0xb5d7,0xc5f7,0xc5f7,0xbdd7,0xbdd7,0xbdf7,0xce79,0xbe18,0xb5b7,0xb596,0xad96,0xad76,0xad96,0xadb6,0xb5b6,0x9471,0xe71d,0x4229,0x4208,0x3a08,0x4209,0x29a6,0xad13,0xa575,0x736e,0x83ef,0x8c71,0x8c31,0x7bf0,0x83f0,0x7bef,0x7c10,0x73cf,0x7bef,0x8c30,0x9492,0x8cb2,0x7c31,0x8410,0x8c30,0x8c51,0x840f,0x73ae,0x7bce,0x6b8e,0xd6bb,0x3166,0x3167,0x2187,0x21a7,0x2146,0x5aa9,0xc658,0x5aed,0x6b0d,0x734e,0x7bef,0x73ae,0x632d,0x6b2d,0x6b6d,0x738e,0x734d,0x6aec,0x62ec,0x62ec,0x630c,0x62ca,0x62ab,0x62cb,0x6aed,0x5acc,0x5aab,0x738e,0xad96,0x2926,0x2145,0x1144,0x1944,0x2105,0x29a5,0xc657,0x5b0c,0x5a8b,0x526a,0x526a,0x4a49,0x4a4a,0x4a4a,0x4229,0x4a6a,0x528b,0x5a8b,0x526a,0x5249,0x4a69,0x4a6a,0x4a49,0x526a,0x528a,0x52ab,0x4aaa,0x6bce,0x9492,0x0883,0x1904,0x1903,0x1903,0x08e4,0x18c4,0x10c4,0x10e2,0x10c3,0x10c3,0x10c3,0x18e4,0x10c3,0x10c3,0x10c3,0x10c3,0x10a3,0x10e3,0x10c2,0x9553,0x5aed,0x0083,0x08e3,0x18e4,0x18e5,0x10c3,0x4a26,0x5a88,0x52a9,0x52a9,0x5aca, +0xe75c,0x7d14,0x4aa9,0x530a,0x52ca,0x5ac9,0x4a89,0x3a07,0x4229,0x3a49,0x3a69,0x3a48,0x49a7,0xdeda,0x7d75,0x29a7,0x39e8,0x3208,0x3a28,0x3a08,0x4209,0x3a08,0x3228,0x4228,0x3a28,0x3a28,0x3a08,0x3a29,0x3a49,0x4249,0x4249,0x3229,0x3a28,0x39e8,0x7b4e,0xbdd6,0xce58,0xd679,0xd69a,0xce79,0xdefb,0xe6fc,0xe71b,0xe71b,0xdf1b,0xd71b,0xd6fb,0xdf1b,0xdf1b,0xdf1b,0xe71c,0xe6fb,0xe71c,0xe73c,0xd6fb,0x9d34,0x3a09,0x4aaa,0x4a8a,0x426a,0x528b,0x4aab,0x6b0b,0xe6ba,0xef7e,0xef7e,0xe77d,0xe77e,0xef9e,0xe77d,0xef9d,0xefbe,0xf7be,0xf7be,0xffdf,0xf7de,0xf7df,0xf7be,0xf7be,0xf7de,0xf7be,0xf7be,0xf7be,0xef9e,0x9d34,0x52cb,0x5b4c,0x630d,0x5b2c,0x5b6d,0x630c,0x7b8e,0xe71c,0xefbe,0xf7de,0xf7df,0xf7ff,0xf7df,0xf7df,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xefdf,0xf7df,0xbdd7,0x638e,0x6b6e,0x738e,0x738e,0x638e,0x632c,0xa4b3,0xff9e,0xffdf,0xf7df,0xf7de,0xf7df,0xf7df,0xffdf,0xffff,0xf7ff,0xffff,0xf7ff,0xffff,0xffdf,0xf7df,0xf7df,0xf7de,0xf7be,0xf7be,0xf7de,0xf7be,0xefbe,0xbdd7,0x5acc,0x634d,0x632d,0x636e,0x5b6e,0x5aec,0x9cb2,0xf7de,0xf7de,0xf7de,0xf7be,0xf7be,0xf7be,0xf7be,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xefdf,0xf7de,0xefde,0xf7de,0xefde,0xefbd,0xefde,0xf7be,0xf7be,0xc5f8,0x524b,0x4a6a,0x52ab,0x52cb,0x52ab,0x4aab,0x62ab,0xd679,0xf7be,0xef9d,0xefbd,0xef9d,0xefbe,0xf7be,0xef9d,0xef9e,0xe7be,0xefde,0xefbe,0xef7d,0xef7e,0xef7d,0xe79d,0xef9d,0xf79e,0xef9e,0xef9e,0xef7d,0xc638,0x4a2a,0x3a08,0x39e8,0x3a08,0x4208,0x3a08,0x39a5,0x736d,0xad96,0xbdf7,0xbdd6,0xce18,0xc5f7,0xbe37,0xc5d7,0xbdd6,0xc639,0xc618,0xd699,0xd6db,0xceba,0xce9a,0xdeda,0xce99,0xc658,0xbe78,0xc67a,0xbe17,0xa4f3,0x3987,0x2966,0x3146,0x3186,0x2186,0x2986,0x2104,0x4a07,0x9cd3,0x94d2,0x94d2,0x9cf3,0xa4f3,0xa534,0x9cb2,0x9492,0x9492,0x9c92,0x9c92,0x94b2,0x94b2,0x8c72,0x9451,0x94b2,0x8451,0x7c30,0x7c30,0x8bcf,0x5a8a,0x2904,0x2104,0x2945,0x1924,0x1904,0x2124,0x2105,0x28c3,0x5249,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x4a49,0x4a29,0x4a29,0x4229,0x4a29,0x4a08,0x41e7,0x4a08,0x4a28,0x49e7,0x49e8,0x4208,0x4a28,0x4227,0x39c7,0x2124,0x1082,0x1904,0x1904,0x20e3,0x20c3,0x18e4,0x10c3,0x08e4,0x18c4,0x08c3,0x18a3,0x10a3,0x08c3,0x08e3,0x08c3,0x10c3,0x08c3,0x08e4,0x10c3,0x10a2,0x8d33,0x630e,0x1083,0x1904,0x2103,0x1905,0x10c3,0x3a05,0x4a88,0x52a8,0x52c9,0x5aca, +0xe77c,0x7d13,0x4aa9,0x52ea,0x52e9,0x4ac9,0x42a9,0x3207,0x3a08,0x4249,0x3a6a,0x3a49,0x49a7,0xdefa,0x7db6,0x2167,0x4228,0x3a28,0x3a08,0x4209,0x4208,0x3a28,0x31e8,0x3a28,0x4208,0x3a29,0x4229,0x4228,0x4228,0x4229,0x4249,0x3a49,0x4209,0x3a29,0x39e9,0x31a7,0x3986,0x31c8,0x31a7,0x31a6,0x31a7,0x3187,0x31a7,0x39a8,0x39a7,0x49a8,0x39a8,0x39c8,0x39a7,0x41c7,0x39c8,0x39c8,0x41c8,0x4209,0x41e8,0x4209,0x52ca,0x528b,0x4a8a,0x4aab,0x4a8b,0x52cb,0x528a,0x4a08,0x4a29,0x4a2a,0x4a29,0x4a49,0x428a,0x426a,0x528a,0x52ab,0x528a,0x528b,0x5aab,0x52ab,0x528a,0x528a,0x5acb,0x62cb,0x4a69,0x5a8a,0x62cb,0x5acb,0x4a8a,0x5b2c,0x5b0d,0x532d,0x5b2d,0x5b2d,0x634d,0x532b,0x5aca,0x62ec,0x5aab,0x62cc,0x62ec,0x6b0c,0x630b,0x630c,0x6b2c,0x630c,0x632d,0x6b6e,0x6b8e,0x6b6d,0x6b2d,0x6b4d,0x6b6e,0x6b6d,0x7bae,0x7bcf,0x632d,0x638d,0x73cf,0x638e,0x73ae,0x738e,0x6b6e,0x6b6e,0x632d,0x6b2c,0x6b4c,0x6b6e,0x6b6e,0x736e,0x738e,0x6b8d,0x6b6d,0x6b4e,0x6b2d,0x6b0c,0x6b0d,0x734d,0x7b8d,0x734d,0x734d,0x6b4d,0x6b4d,0x6b4e,0x6b0d,0x6b0d,0x5b0c,0x5b2d,0x532d,0x634d,0x634d,0x532d,0x634e,0x4a8b,0x5aac,0x6b2d,0x738e,0x634d,0x6b0c,0x732d,0x6b2d,0x62ec,0x5aec,0x630c,0x632c,0x732d,0x6aec,0x6b4d,0x6b2c,0x6b0c,0x630c,0x6aec,0x62eb,0x5aec,0x52ab,0x426a,0x52ec,0x52cc,0x52ab,0x52cb,0x4a8a,0x4a8b,0x52ab,0x4a29,0x4a49,0x4a29,0x4a29,0x4a29,0x4229,0x4a29,0x5249,0x4a29,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4207,0x41e8,0x39c7,0x31a7,0x2986,0x29a7,0x3a28,0x3a09,0x4229,0x4209,0x41e9,0x4208,0x4208,0x31c7,0x2925,0x2125,0x2125,0x2124,0x2124,0x2105,0x28e5,0x2924,0x2904,0x2904,0x20e4,0x18e4,0x28e4,0x18c3,0x20e3,0x2904,0x28e4,0x2104,0x20e5,0x20c4,0x18c3,0x2966,0x21a6,0x21a7,0x2966,0x2986,0x3185,0x2966,0x2145,0x20e3,0x18e4,0x20c3,0x1083,0x20a3,0x18a3,0x18a3,0x18c3,0x10a3,0x18a3,0x18a3,0x10a3,0x10a3,0x08c3,0x10a2,0x10a2,0x10c4,0x10a3,0x10a2,0x10c3,0x2944,0x1924,0x2145,0x2144,0x1945,0x1925,0x2125,0x1925,0x1905,0x08e3,0x10c4,0x10c4,0x18a3,0x18c3,0x10e3,0x18e3,0x18e4,0x10c3,0x10c4,0x08c4,0x10c4,0x10c3,0x1083,0x1084,0x10a3,0x10c3,0x10a3,0x10a3,0x10a4,0x10c4,0x1104,0x18e4,0x20e4,0x20e4,0x18e3,0x18c4,0x08c4,0x10e4,0x18c3,0x08c2,0x10c3,0x10c4,0x08c4,0x10c3,0x10e3,0x10e3,0x08c3,0x10a3,0x10e3,0x0881,0x9533,0x6b2e,0x1062,0x18e3,0x18e4,0x2103,0x10e2,0x3a06,0x5268,0x52a9,0x52a9,0x52aa, +0xe79c,0x74d3,0x52a9,0x5aca,0x5aca,0x5aa8,0x5aaa,0x39e7,0x39e7,0x3a49,0x3a49,0x3a49,0x49a7,0xe73c,0x7d56,0x2987,0x3a28,0x3a08,0x3a28,0x3a29,0x3a08,0x4208,0x3208,0x31e8,0x4208,0x3a08,0x3a09,0x3a28,0x4228,0x4a49,0x4a48,0x3a28,0x4a29,0x4a29,0x4229,0x4a49,0x4a6a,0x4a6a,0x4a4a,0x4249,0x4a4a,0x4a6a,0x4a6a,0x426a,0x428a,0x4a6a,0x428a,0x426a,0x4a6a,0x4a6a,0x426a,0x4a8a,0x4a8a,0x528a,0x52aa,0x52cb,0x52aa,0x4a8b,0x4aab,0x52ab,0x4a8a,0x52ab,0x52ab,0x52cb,0x5aeb,0x5acc,0x52cc,0x530b,0x52ec,0x52ab,0x530b,0x530c,0x5b2c,0x5b0d,0x630d,0x5b2c,0x632c,0x5b2c,0x5b4d,0x636d,0x5b0d,0x630d,0x630d,0x5b0c,0x5b0c,0x5b2c,0x5b2d,0x5aec,0x5b0d,0x532d,0x5b2d,0x5b4c,0x638d,0x634e,0x6b6e,0x6b8e,0x5b6e,0x5b4d,0x6b6e,0x5bae,0x6bae,0x6b8e,0x736e,0x73cf,0x63ae,0x73ae,0x638e,0x738e,0x6baf,0x63ae,0x73ae,0x6b8e,0x636e,0x73ce,0x73ae,0x636d,0x6b6d,0x6b8e,0x6b8e,0x6b6e,0x6b6e,0x636d,0x6b4d,0x6b6e,0x6b6e,0x738e,0x6b6d,0x5aec,0x634e,0x73cf,0x6bcf,0x636e,0x6b8e,0x6b6f,0x636e,0x638f,0x634d,0x634d,0x5b2c,0x5b6d,0x5b2e,0x6b2e,0x636e,0x5b2c,0x532d,0x5b4e,0x5b2d,0x5b4e,0x5b0d,0x5b0d,0x5b2c,0x532d,0x5aec,0x532d,0x530c,0x632d,0x5b0d,0x632d,0x5b4d,0x5b0d,0x5b2d,0x630c,0x5b0c,0x52eb,0x630c,0x5acc,0x5acc,0x5b0c,0x52eb,0x5aed,0x52cc,0x52cb,0x52cb,0x5aec,0x4aab,0x52cb,0x4a8a,0x4aab,0x52ab,0x5acc,0x52ab,0x5aab,0x52ab,0x52ab,0x528b,0x528b,0x4a4a,0x526a,0x4a6a,0x4aaa,0x426a,0x426a,0x4a8a,0x4249,0x3a09,0x4a6a,0x4249,0x3a29,0x4a4a,0x3a4a,0x3a4a,0x4228,0x4208,0x3a49,0x3a09,0x3208,0x3a08,0x3a08,0x31e8,0x4208,0x31e7,0x31c7,0x31e8,0x39e7,0x3a08,0x39e7,0x31e7,0x31c7,0x31e7,0x31a7,0x39c7,0x39c8,0x29a7,0x39a7,0x31c7,0x39c7,0x31a6,0x39c7,0x31a7,0x3187,0x31a6,0x29a6,0x3187,0x3166,0x3186,0x2986,0x2966,0x2946,0x3165,0x3166,0x3165,0x2166,0x2166,0x2946,0x2966,0x2986,0x2966,0x2966,0x2965,0x2145,0x2946,0x2145,0x3166,0x2145,0x2145,0x2165,0x2145,0x1945,0x2945,0x1925,0x2105,0x1925,0x1945,0x2125,0x2125,0x2125,0x1905,0x1905,0x2905,0x2105,0x1925,0x1924,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e4,0x1104,0x1104,0x2105,0x18e4,0x1904,0x10e4,0x1105,0x1905,0x2104,0x10e4,0x10c4,0x10a4,0x18c4,0x1903,0x18e3,0x10c3,0x00e3,0x18e3,0x10c3,0x10c3,0x10e2,0x00c3,0x18c3,0x18c3,0x10c3,0x08c2,0x10e3,0x10c3,0x0881,0x8cd2,0x7390,0x1062,0x18c4,0x1104,0x2124,0x10e3,0x39e6,0x4a68,0x52a9,0x5ac9,0x52ca, +0xdf5c,0x74d3,0x4a89,0x52ca,0x5aca,0x5ac9,0x5a89,0x41e7,0x41e8,0x3a6a,0x3a49,0x426a,0x41c8,0xe73b,0x74f4,0x21a7,0x3a48,0x39e7,0x4208,0x3a28,0x3208,0x4208,0x3208,0x3208,0x4229,0x3a07,0x3a08,0x3a28,0x4229,0x4208,0x3a28,0x3a08,0x3a29,0x4229,0x3a28,0x3a49,0x4a49,0x428a,0x3a49,0x4a89,0x4a6a,0x424a,0x4a49,0x4a6a,0x426a,0x4a6a,0x4249,0x4a6a,0x4269,0x428b,0x4a6a,0x428a,0x4a89,0x5a8a,0x4a8a,0x428a,0x52aa,0x4aaa,0x4acb,0x4a8a,0x52aa,0x4acc,0x4aeb,0x4aeb,0x52ca,0x5aeb,0x5b0c,0x5b0c,0x5b0c,0x52cb,0x530b,0x52ec,0x5b0c,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x632c,0x5b0c,0x632d,0x632d,0x5b0c,0x5b0c,0x5b2c,0x530c,0x5b2d,0x5b2d,0x532d,0x634d,0x5b4d,0x5b4e,0x5b4d,0x632e,0x634e,0x638e,0x6b8e,0x636d,0x5b6d,0x638e,0x5b2d,0x6b6e,0x63ad,0x636e,0x6b6e,0x6b8d,0x638d,0x738d,0x636e,0x738e,0x6b6e,0x636e,0x6b6e,0x6b6d,0x5b4d,0x636e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x638e,0x6b6e,0x634c,0x636e,0x5b4d,0x6b4d,0x634d,0x6bae,0x6b6e,0x632d,0x5b4d,0x634d,0x6b6e,0x6b6e,0x6b8f,0x636e,0x5b2d,0x530c,0x636e,0x634e,0x632e,0x632d,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x636e,0x5b2d,0x5b2d,0x5b4d,0x532d,0x5b0c,0x5b4d,0x5b2c,0x5b2d,0x5b0c,0x5aec,0x530c,0x5b0c,0x5aec,0x52eb,0x5aeb,0x630d,0x5acc,0x52cb,0x5aec,0x530c,0x52cb,0x5aac,0x52ab,0x528a,0x52ab,0x4aab,0x4aab,0x52ab,0x528b,0x4aaa,0x4a6b,0x4a8a,0x52ca,0x52ab,0x52ab,0x4aaa,0x4a6b,0x52ab,0x426a,0x3a8a,0x4289,0x52aa,0x4a4a,0x4a6a,0x4a69,0x4249,0x4229,0x3a09,0x3a28,0x4249,0x4229,0x3a29,0x3a08,0x4229,0x4248,0x3a28,0x49e9,0x3a08,0x4228,0x4208,0x3a07,0x3a08,0x39e8,0x31e8,0x3208,0x39e9,0x29e7,0x31e7,0x31e7,0x39c7,0x31e8,0x31c7,0x31c7,0x29e7,0x31c8,0x31c6,0x39e8,0x31a7,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x3987,0x3187,0x2186,0x2986,0x2966,0x2986,0x3166,0x2166,0x2986,0x2986,0x2165,0x2166,0x3166,0x2165,0x2166,0x2966,0x2145,0x2145,0x2166,0x2146,0x2165,0x2945,0x2165,0x2145,0x2145,0x2145,0x2144,0x2125,0x1965,0x1925,0x1925,0x1944,0x2125,0x1125,0x1925,0x1925,0x2105,0x2905,0x1925,0x1904,0x1924,0x1904,0x1924,0x18e4,0x1924,0x1903,0x18e4,0x20e4,0x1904,0x1904,0x2105,0x1903,0x20e5,0x1104,0x10e5,0x20e3,0x1903,0x18e4,0x18e4,0x18c4,0x18c4,0x10e3,0x10e3,0x18e3,0x00e3,0x10e3,0x08c2,0x18e3,0x18c3,0x10e3,0x18a3,0x10c3,0x18c3,0x18c3,0x10c4,0x1104,0x10a2,0x8d12,0x6b6f,0x1083,0x10e4,0x10e3,0x20e4,0x10e3,0x39e5,0x5a89,0x52a9,0x52a9,0x5ac9, +0xdf5c,0x7492,0x4a89,0x5aea,0x5aca,0x5aca,0x4a89,0x3a08,0x3a09,0x3a6a,0x4249,0x4249,0x4208,0xdf3b,0x6cd4,0x21a7,0x3a28,0x3a28,0x4228,0x4208,0x3a08,0x39e7,0x4208,0x3a08,0x4228,0x3a08,0x3a08,0x3a28,0x3a07,0x3a28,0x3a08,0x3a28,0x3a48,0x4208,0x3a08,0x4229,0x424a,0x426a,0x426a,0x4269,0x4a69,0x426a,0x3a6a,0x4a6a,0x4269,0x426a,0x4a8a,0x4269,0x4a6a,0x4a8b,0x4269,0x4a8a,0x528a,0x5a8b,0x52ab,0x4a8b,0x4a8b,0x528a,0x5acb,0x528b,0x528b,0x52cb,0x4aeb,0x4acb,0x4acb,0x5acc,0x5aab,0x5acb,0x630b,0x5aec,0x5b0c,0x530c,0x532d,0x5b0c,0x630c,0x5b0c,0x5b2d,0x530c,0x532c,0x5aec,0x5b0c,0x632c,0x5b2c,0x5b0c,0x62ed,0x5b0c,0x5b2c,0x5b2d,0x5b2d,0x532d,0x5b4d,0x5b2d,0x5b2d,0x734e,0x6bae,0x738e,0x6b6d,0x632d,0x5b0d,0x636d,0x634e,0x5b2d,0x634d,0x5b4c,0x6b4d,0x6b8e,0x7b8e,0x63ae,0x6b6e,0x738e,0x6b8e,0x634e,0x634e,0x634d,0x5b2c,0x634e,0x736f,0x6b6e,0x636d,0x638d,0x632d,0x6b4d,0x6b4d,0x634d,0x636d,0x5b4e,0x632d,0x636d,0x636d,0x634d,0x638e,0x5b6d,0x5b2d,0x6b4e,0x6b6e,0x634e,0x634e,0x5b4d,0x5b2d,0x6b4d,0x634d,0x5b2c,0x630d,0x630c,0x530c,0x632d,0x632d,0x5b4d,0x5b2d,0x5b2d,0x530c,0x632d,0x5b0d,0x5b0d,0x632d,0x5b2c,0x52ec,0x5b0c,0x52cb,0x5aec,0x5acc,0x52eb,0x5aeb,0x52cc,0x5acc,0x52eb,0x5aeb,0x530c,0x5aec,0x5acc,0x52cb,0x52ac,0x52ab,0x52eb,0x52ab,0x52ab,0x52ab,0x4aaa,0x4a8a,0x528b,0x4a6a,0x52cc,0x528a,0x4aaa,0x428a,0x4a6a,0x426a,0x3a6a,0x4269,0x5289,0x4a29,0x4a2a,0x4a49,0x4269,0x4249,0x3a08,0x4229,0x39e8,0x31e7,0x4249,0x4229,0x4229,0x4229,0x3a08,0x4208,0x4208,0x41e8,0x41e8,0x4208,0x3a08,0x31e8,0x39c8,0x31e8,0x39e8,0x39e8,0x29c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31a7,0x39c7,0x39c8,0x31c7,0x31c7,0x31e6,0x31a7,0x31e7,0x29a6,0x31a7,0x3186,0x3186,0x3187,0x2986,0x2986,0x2966,0x29a6,0x2966,0x2166,0x2986,0x3166,0x3166,0x2965,0x2966,0x2966,0x2145,0x2966,0x2945,0x2945,0x2165,0x1986,0x1945,0x2146,0x2145,0x2945,0x2925,0x2145,0x1945,0x2145,0x2145,0x2145,0x1925,0x1926,0x2125,0x2125,0x2125,0x1925,0x1904,0x2105,0x1905,0x1925,0x1905,0x1904,0x2104,0x18e4,0x1904,0x1104,0x1904,0x2104,0x18e4,0x1903,0x1904,0x20e4,0x20e4,0x2103,0x18e4,0x18e4,0x1104,0x18c3,0x1103,0x1904,0x20c4,0x20c3,0x08e3,0x18e3,0x08e3,0x10c3,0x08e3,0x08e3,0x18c3,0x18e3,0x10c3,0x08a3,0x08c3,0x10a3,0x08c4,0x10e4,0x10a2,0x8d33,0x73b1,0x0862,0x1104,0x0904,0x20e4,0x10e4,0x31c5,0x5a68,0x52a9,0x52a9,0x5aca, +0xe77c,0x6c71,0x4ac9,0x5aca,0x5aea,0x5ac9,0x4aaa,0x3208,0x3a08,0x3a29,0x3a49,0x4229,0x49e9,0xef7c,0x6cf5,0x21a6,0x3a28,0x4208,0x4228,0x3208,0x39e8,0x3a08,0x3a28,0x3a08,0x3a08,0x4209,0x3a28,0x3a28,0x4228,0x4229,0x3a28,0x3a29,0x3229,0x3a28,0x4208,0x4228,0x4229,0x4269,0x4249,0x4a69,0x3a69,0x3a49,0x4269,0x4269,0x4249,0x4a6b,0x4269,0x4a49,0x4a6a,0x4a8b,0x4a8a,0x428a,0x4a8a,0x52aa,0x4aab,0x428b,0x528a,0x5a8b,0x528b,0x4aab,0x52ab,0x52aa,0x52ab,0x52cb,0x4acb,0x5acb,0x5acb,0x5a8a,0x52ca,0x52ec,0x52cb,0x530c,0x530c,0x4aec,0x530c,0x632d,0x5b2d,0x5b2d,0x5b2d,0x532c,0x5b2c,0x5b2c,0x5b2c,0x52cc,0x52ec,0x5b0d,0x5b2c,0x5aec,0x5aec,0x630c,0x5b0d,0x5b2d,0x632d,0x5b4d,0x638e,0x6b8e,0x634d,0x634d,0x5b0c,0x5b4d,0x634d,0x5b4e,0x6b4e,0x6b0c,0x6b6d,0x636e,0x634e,0x6b6e,0x636d,0x738e,0x638e,0x5b4d,0x634d,0x6b4c,0x634d,0x634e,0x6b6e,0x636d,0x5b8d,0x6b8e,0x632e,0x632d,0x634c,0x636e,0x636d,0x5b4d,0x632d,0x5b4d,0x5b4d,0x5b2c,0x6b8e,0x636e,0x5b4d,0x632d,0x52ec,0x534d,0x636d,0x634e,0x632d,0x632d,0x5b2d,0x5b2d,0x632d,0x5b0d,0x5b0d,0x5b0d,0x630c,0x5b2d,0x5b0c,0x5aed,0x5acc,0x5aed,0x5aec,0x5aec,0x630d,0x5aec,0x530c,0x5b2c,0x52ec,0x52cb,0x52cb,0x52ec,0x5b0c,0x5b0c,0x5b0c,0x530b,0x52eb,0x52ab,0x52cb,0x5aeb,0x5acb,0x52cb,0x5aac,0x52ab,0x52ab,0x5acb,0x52ab,0x52cb,0x4a8a,0x426a,0x4a8b,0x528c,0x528b,0x4a8a,0x4a8a,0x4a6a,0x428a,0x426a,0x426a,0x4a6a,0x426a,0x426b,0x4a2a,0x4229,0x3a29,0x3208,0x31e8,0x39e8,0x3a08,0x4249,0x3a29,0x4229,0x4229,0x4209,0x4208,0x39e7,0x39e8,0x39e8,0x3a09,0x3208,0x31c8,0x39e9,0x39c7,0x39c7,0x3a08,0x39c7,0x39e8,0x31e7,0x31c7,0x3187,0x3167,0x31a7,0x29e8,0x31c6,0x31a7,0x31c7,0x29a7,0x3186,0x29a7,0x2166,0x2986,0x29a6,0x2186,0x29a6,0x21c6,0x1986,0x2986,0x2186,0x2166,0x2166,0x1165,0x2186,0x2165,0x2966,0x2966,0x2966,0x2165,0x2966,0x2965,0x2145,0x2145,0x1946,0x2125,0x2945,0x2125,0x1125,0x2105,0x1925,0x2145,0x1925,0x1125,0x1966,0x2125,0x2145,0x1124,0x1105,0x1905,0x1105,0x2125,0x1924,0x1105,0x18e5,0x2104,0x20e4,0x1904,0x1104,0x10e4,0x1904,0x18e4,0x18e4,0x18e4,0x1904,0x1904,0x08e4,0x2104,0x18e5,0x18e4,0x18e4,0x18e3,0x10e4,0x10e4,0x10c4,0x00e3,0x1103,0x10e4,0x08c4,0x00c3,0x08e4,0x10c4,0x10c3,0x18c2,0x20c2,0x10e3,0x08c3,0x10e3,0x10e4,0x18e3,0x10a2,0x9513,0x6bb0,0x0842,0x10e4,0x1104,0x1905,0x20e4,0x3a07,0x4a89,0x52c8,0x5ac9,0x5ac9, +0xe77c,0x6c71,0x4aa9,0x5aca,0x5ac9,0x5aa9,0x5269,0x3a07,0x31c6,0x424a,0x3229,0x39e8,0x49e9,0xf79d,0x6493,0x21c7,0x31e7,0x4228,0x39e8,0x39e8,0x3a08,0x31e8,0x3207,0x3a08,0x41e9,0x3a28,0x3a48,0x4208,0x3a28,0x3a28,0x3a28,0x3a08,0x3a27,0x3a28,0x3a48,0x4248,0x3a29,0x4229,0x4a49,0x4a29,0x4229,0x424a,0x4269,0x426a,0x4a6a,0x426a,0x4a6a,0x426a,0x426a,0x528a,0x4a8a,0x426a,0x4a8b,0x4a8a,0x4a8a,0x426a,0x528a,0x52ab,0x42ab,0x4a8b,0x52ab,0x528b,0x52ab,0x52ab,0x52cb,0x5acb,0x5acb,0x5acb,0x52cc,0x52cc,0x52ab,0x4acb,0x5b0d,0x530c,0x5b0b,0x5b0d,0x5aec,0x5aec,0x5b2d,0x5b2c,0x5aec,0x5b0c,0x5b4d,0x5b0c,0x634d,0x632d,0x630d,0x5b0c,0x5b2d,0x5b0c,0x5b4e,0x636e,0x5b2d,0x5b2d,0x5b2d,0x6b8e,0x5b6e,0x6b4d,0x636e,0x634e,0x638e,0x5b4d,0x634d,0x634e,0x634e,0x532d,0x5b6d,0x5b4d,0x5b2d,0x6b4d,0x634d,0x5b4d,0x6b4e,0x634d,0x634d,0x5b4d,0x636d,0x636d,0x636d,0x636e,0x632d,0x6b2d,0x6b8d,0x6b8e,0x632e,0x636e,0x636e,0x634e,0x636d,0x634d,0x734e,0x632d,0x634d,0x636e,0x6b2d,0x634d,0x5b4d,0x632d,0x634c,0x632d,0x5b2d,0x5b4d,0x632d,0x630d,0x5b0d,0x630d,0x630c,0x5b2c,0x5b2d,0x5b0d,0x5aec,0x5aed,0x52ec,0x52cb,0x630c,0x5b0d,0x52ec,0x52cc,0x5aec,0x52ab,0x5b0c,0x5b0d,0x5b0c,0x632d,0x530c,0x5aec,0x5aec,0x52ec,0x52cb,0x5acb,0x5aec,0x52ab,0x5acb,0x52cb,0x4aab,0x528b,0x52cc,0x52cc,0x4a8b,0x4a8b,0x4a8a,0x4a6b,0x528b,0x52ab,0x4aaa,0x4a8b,0x426a,0x3a49,0x426a,0x4a6a,0x4249,0x4249,0x424a,0x3a29,0x4249,0x4229,0x3228,0x3a08,0x3a09,0x4229,0x39e8,0x3a29,0x3229,0x4208,0x3a08,0x3a28,0x3a28,0x3a28,0x3a09,0x3a08,0x39e8,0x3a07,0x3a07,0x39e8,0x3a08,0x31e7,0x39c7,0x3a07,0x31c7,0x31c7,0x39a7,0x39a7,0x31c8,0x31c7,0x3187,0x2187,0x29a7,0x31a6,0x29a6,0x3187,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x2186,0x2166,0x2166,0x3186,0x2986,0x3166,0x2946,0x2167,0x2966,0x2966,0x2146,0x2146,0x2166,0x2165,0x2145,0x2145,0x1965,0x2165,0x1945,0x2146,0x1945,0x1105,0x1925,0x1925,0x2125,0x2125,0x2125,0x2905,0x2124,0x2125,0x2105,0x2125,0x1125,0x2105,0x2105,0x1924,0x2104,0x1904,0x1124,0x1104,0x1124,0x1104,0x1903,0x1904,0x1904,0x20e4,0x10e4,0x1904,0x1903,0x18e4,0x10e4,0x10e3,0x18e3,0x10e4,0x18e4,0x1904,0x10e4,0x08e3,0x18e3,0x10c4,0x18e4,0x10e3,0x10c4,0x18c3,0x18c3,0x10c4,0x08e3,0x10c3,0x08e4,0x10c3,0x08c3,0x18e3,0x0862,0x8d12,0x73f1,0x0022,0x10c3,0x1903,0x20e5,0x18c4,0x39e6,0x4a68,0x52a9,0x52ca,0x52ca, +0xdf7c,0x6c51,0x4aa9,0x52ca,0x5aca,0x5aea,0x52a9,0x39e7,0x39c7,0x424a,0x3a28,0x3a29,0x51e9,0xef7c,0x5c72,0x29c7,0x3a28,0x3a08,0x39e8,0x41e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x4228,0x3228,0x3a27,0x3a28,0x3a28,0x3a29,0x3a08,0x3a28,0x3a29,0x3a49,0x3a48,0x3a49,0x3a28,0x4229,0x4a49,0x424a,0x4229,0x4a69,0x4249,0x4269,0x4269,0x424a,0x4a6a,0x4a8a,0x526b,0x4a8a,0x426a,0x4a6a,0x4a8a,0x4a8b,0x4a8a,0x52ab,0x52ab,0x4aaa,0x52ab,0x4a8a,0x42aa,0x4aaa,0x4aab,0x5acb,0x5aab,0x52ec,0x5b0c,0x5aec,0x5aeb,0x5acb,0x5aeb,0x6b0c,0x5acb,0x5b2c,0x52ec,0x62ec,0x52ec,0x52ed,0x52ec,0x5aec,0x5b0c,0x530c,0x5b0d,0x5b2d,0x5b4d,0x5b2d,0x5b4d,0x5b4d,0x5b2d,0x532d,0x5b4d,0x632d,0x634d,0x5b2d,0x6b6e,0x636e,0x634d,0x636e,0x5b6d,0x5b8e,0x5b0c,0x5b6d,0x6b6e,0x5b4d,0x634d,0x6b6e,0x5b2d,0x634e,0x634d,0x632d,0x634d,0x634d,0x5b0c,0x5b4c,0x5b4d,0x634d,0x638e,0x538d,0x5b6d,0x636d,0x6b4d,0x6b6d,0x6b8d,0x530d,0x632d,0x636e,0x5b6e,0x5b6d,0x5b6e,0x6b2e,0x634e,0x634e,0x634e,0x632d,0x5b6d,0x5b4e,0x5b2d,0x5b4c,0x5b4d,0x5b4e,0x5b2d,0x5b2c,0x5b2d,0x5b0d,0x5b0c,0x5b0c,0x5b2d,0x530c,0x5b4d,0x5b2c,0x530d,0x5aec,0x52eb,0x5aec,0x5b0d,0x52ec,0x5b2d,0x530c,0x5aec,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x52eb,0x5aec,0x52ab,0x52cb,0x5acb,0x52ab,0x52cc,0x52ab,0x52cb,0x52ec,0x4aab,0x4a6a,0x3a4a,0x4acc,0x4a8b,0x4a8a,0x528b,0x4a6b,0x4a6a,0x528a,0x4a6b,0x528b,0x4a8a,0x4a6a,0x3a6a,0x4249,0x3a69,0x424a,0x4249,0x4a4a,0x4269,0x3a29,0x3209,0x3a09,0x4229,0x4209,0x3a29,0x4229,0x3a48,0x3228,0x3a08,0x4229,0x3a08,0x3209,0x41e9,0x39e8,0x31c8,0x39e8,0x3a07,0x31e8,0x41e8,0x39e8,0x39c7,0x39e7,0x39c8,0x39c8,0x31c7,0x39c7,0x31c7,0x31c8,0x29a7,0x2986,0x3987,0x29a6,0x21a6,0x2986,0x3186,0x29a6,0x3186,0x3186,0x2986,0x2986,0x2166,0x3186,0x3166,0x2965,0x2986,0x2966,0x2967,0x3166,0x2945,0x2166,0x1965,0x1165,0x2166,0x2945,0x2945,0x2165,0x2945,0x1945,0x2145,0x2925,0x2125,0x1925,0x2145,0x1924,0x2124,0x2104,0x1925,0x2105,0x2105,0x2125,0x2125,0x1904,0x2105,0x2905,0x1904,0x1904,0x20c4,0x2105,0x1925,0x1124,0x18e4,0x1105,0x1104,0x18e4,0x20e4,0x18e4,0x20e5,0x2104,0x18c5,0x1905,0x18c4,0x10e4,0x10e4,0x10e3,0x1903,0x1103,0x10e3,0x1903,0x18e4,0x10e3,0x10e3,0x18e3,0x18a4,0x18a3,0x10c3,0x08e4,0x10e2,0x10e3,0x08c3,0x08a3,0x18e3,0x0881,0x8d53,0x73b1,0x0842,0x18a3,0x1103,0x1905,0x18c3,0x31e7,0x4aa8,0x52a8,0x5aa9,0x5aca, +0xdf7c,0x6c31,0x42a9,0x5ae9,0x5ac9,0x52ca,0x4aa9,0x31c7,0x3a07,0x4a49,0x4229,0x4249,0x5a4a,0xef7c,0x6452,0x29a6,0x39e8,0x3207,0x39e8,0x4208,0x3a08,0x4228,0x4208,0x39e8,0x3a28,0x3a08,0x3a08,0x3a08,0x3a29,0x3a28,0x3a29,0x3a08,0x3a08,0x4209,0x3a09,0x3228,0x3a28,0x4249,0x4a49,0x4269,0x4249,0x3a49,0x4a69,0x4229,0x4249,0x3a69,0x4a4a,0x4a69,0x4269,0x424a,0x4a8a,0x428a,0x52ab,0x528a,0x4a6a,0x4a8a,0x526a,0x526a,0x528a,0x528a,0x528a,0x4a8a,0x52ab,0x52ab,0x4aaa,0x4aab,0x4acc,0x52ec,0x52ec,0x52ab,0x52ab,0x5acc,0x5aec,0x52cb,0x52cb,0x5acc,0x5aec,0x52cb,0x52ec,0x5acb,0x5aec,0x52cc,0x5b2d,0x634d,0x5b2c,0x5b0c,0x5b2c,0x5b2c,0x632c,0x632d,0x5b2d,0x634d,0x634d,0x5b6e,0x5b4d,0x5b4d,0x632d,0x634d,0x638e,0x5b4e,0x638d,0x6b8e,0x636e,0x636d,0x634e,0x634d,0x634d,0x5b2d,0x636e,0x6b8e,0x5b2d,0x6b6d,0x634d,0x634d,0x5b4c,0x5b2d,0x5b6e,0x5b4d,0x5b4d,0x5b4d,0x634d,0x636d,0x634d,0x634d,0x5b2d,0x6b4d,0x636e,0x5b4d,0x5b4d,0x636e,0x5b4d,0x636e,0x636e,0x632d,0x6b4d,0x5b4d,0x5b4d,0x5b2e,0x5b6d,0x5b4d,0x634d,0x5b4d,0x5b2c,0x5b4d,0x5b2d,0x5b2d,0x5b0c,0x630d,0x632d,0x5b0d,0x5b0d,0x530d,0x52eb,0x52eb,0x5b0c,0x530c,0x4acb,0x5b2c,0x52ec,0x52eb,0x5b0c,0x5b0c,0x52eb,0x5b0c,0x52cb,0x5aec,0x52ab,0x5aab,0x52cb,0x52ab,0x52cb,0x52cb,0x4aab,0x4aab,0x52ab,0x52ab,0x4aab,0x4aab,0x4aab,0x4a8b,0x4a8b,0x4a8a,0x428a,0x4a6a,0x4a6a,0x428b,0x426a,0x426a,0x4a6a,0x4249,0x4269,0x424a,0x4229,0x4249,0x4249,0x3a49,0x3a29,0x3a48,0x4229,0x4209,0x3209,0x31e8,0x31e8,0x3208,0x39e8,0x3a08,0x3229,0x3a09,0x4208,0x39e8,0x31e8,0x39c7,0x39e8,0x39c8,0x39e8,0x31e8,0x39e7,0x31e7,0x39e7,0x39a7,0x31a8,0x39c6,0x31c7,0x31c7,0x31a7,0x31a7,0x3187,0x39a7,0x31c7,0x29a7,0x3187,0x2186,0x29a7,0x3186,0x21a7,0x2986,0x3186,0x3186,0x2966,0x2966,0x2986,0x2966,0x2966,0x2945,0x2965,0x2165,0x2145,0x1985,0x1965,0x2146,0x2945,0x2165,0x2145,0x2165,0x2145,0x3125,0x2125,0x1945,0x1945,0x2145,0x2145,0x2145,0x1145,0x1925,0x1925,0x1925,0x1925,0x1924,0x2124,0x1905,0x1904,0x2105,0x2105,0x1904,0x1905,0x1904,0x2105,0x1104,0x1904,0x1903,0x1904,0x18c4,0x10e4,0x18e5,0x18e4,0x1904,0x10e3,0x1103,0x20e3,0x2104,0x10e3,0x10e4,0x1103,0x08e3,0x18e4,0x10e4,0x18c3,0x08e3,0x18c4,0x10c3,0x00c2,0x08e4,0x10c3,0x10c3,0x18e3,0x18c3,0x18e3,0x10a2,0x9553,0x73b1,0x0822,0x18e4,0x08e4,0x1104,0x10e3,0x39e6,0x52a9,0x52a9,0x5ac9,0x5aca, +0xdf5c,0x6410,0x4ac9,0x62e9,0x5ac9,0x52e9,0x4ac9,0x31c7,0x3a28,0x4249,0x4249,0x4a49,0x628a,0xe79d,0x5c11,0x29a6,0x39c8,0x3a07,0x39e7,0x39e8,0x3208,0x3a08,0x39e8,0x39e9,0x29e8,0x3a28,0x39e8,0x3a08,0x3229,0x3a29,0x4229,0x4249,0x4229,0x39e8,0x3a08,0x3a29,0x3a28,0x4208,0x4a28,0x3a28,0x4249,0x426a,0x4a69,0x4a49,0x4249,0x3a69,0x4a4a,0x4249,0x4a6a,0x426a,0x4a69,0x424a,0x4a4a,0x4a8b,0x4a8a,0x4a6b,0x528b,0x52ab,0x4a8b,0x4a8a,0x52ab,0x52ab,0x4aab,0x4aab,0x4a8b,0x52ab,0x4aab,0x52eb,0x52ec,0x4acc,0x4aec,0x4acb,0x52ab,0x5acb,0x52cb,0x5acb,0x5aec,0x52ab,0x5aec,0x52ec,0x5b2d,0x52ac,0x5b0c,0x5b0c,0x5b4c,0x5b2c,0x5b2c,0x5b4d,0x5b0c,0x632c,0x5b2d,0x5b2d,0x5b2c,0x636d,0x5b4d,0x5b6d,0x5b4e,0x5b4c,0x638d,0x636e,0x636e,0x634c,0x6b6d,0x636e,0x632e,0x6b2d,0x634e,0x632e,0x5b2d,0x636d,0x634d,0x632d,0x6b4e,0x630d,0x5b2d,0x634e,0x534d,0x636e,0x5b6d,0x636d,0x634e,0x532d,0x634d,0x632d,0x5b4d,0x5b4d,0x6b6e,0x632e,0x5b2d,0x532c,0x5b4d,0x638e,0x636d,0x5b6d,0x634d,0x636e,0x632d,0x5b2e,0x632d,0x634d,0x5b4d,0x634d,0x634d,0x5b2d,0x632d,0x634d,0x5b4c,0x5b0c,0x5b0c,0x530d,0x5acc,0x5aec,0x5aeb,0x52eb,0x530c,0x4b0c,0x530b,0x5b0c,0x52cc,0x530c,0x52ec,0x5aec,0x5b0c,0x530b,0x4aca,0x52ec,0x52eb,0x4aaa,0x52cb,0x52cb,0x52ab,0x52ac,0x528b,0x52ab,0x4aab,0x4aab,0x52ab,0x4aab,0x4aab,0x4a6a,0x4a8b,0x52ab,0x428b,0x528a,0x4a8b,0x426a,0x426b,0x4a8a,0x4289,0x426a,0x3a4a,0x3a29,0x4249,0x4a6a,0x424a,0x4a89,0x426a,0x4a49,0x3a29,0x4249,0x3a4a,0x3a28,0x3a08,0x3a08,0x3a28,0x3208,0x3209,0x4208,0x3a28,0x3208,0x29e8,0x39e7,0x31e8,0x39e8,0x31e9,0x31c7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c6,0x31e6,0x31a6,0x31a6,0x31a7,0x2987,0x3187,0x39a7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x29a7,0x3187,0x2987,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2966,0x2966,0x2165,0x2166,0x2145,0x2965,0x2165,0x1945,0x2145,0x2145,0x2125,0x2145,0x2145,0x2145,0x1125,0x2145,0x2124,0x2144,0x1945,0x1925,0x1925,0x1925,0x1925,0x2125,0x1925,0x1925,0x1905,0x1924,0x1925,0x10e5,0x1905,0x1904,0x10e4,0x18e4,0x18e4,0x1905,0x10e5,0x1104,0x18e4,0x18e4,0x10c4,0x1904,0x18e4,0x10e4,0x10e3,0x1904,0x1903,0x20e4,0x10e4,0x10c4,0x18e4,0x18e4,0x18c3,0x18c3,0x18e4,0x10e3,0x00e3,0x10c3,0x10c3,0x08c3,0x18c3,0x18c3,0x18c3,0x10e4,0x18c4,0x0882,0x8d34,0x73d1,0x1042,0x10c3,0x10e4,0x1924,0x08e4,0x31e5,0x52a8,0x52a9,0x52aa,0x52c9, +0xe77d,0x63ef,0x52c9,0x62ca,0x5ac9,0x52e9,0x4aa9,0x31a7,0x41e8,0x4249,0x3a49,0x3a29,0x624a,0xef9d,0x5411,0x29a6,0x3a08,0x39e8,0x3a08,0x4208,0x31e8,0x31e8,0x4229,0x41e8,0x39e8,0x3a28,0x3a28,0x39e8,0x3208,0x3a29,0x4a28,0x4208,0x4229,0x3a08,0x3208,0x4229,0x3a29,0x3a08,0x4248,0x4249,0x4a49,0x4249,0x4269,0x4a49,0x4a49,0x3a49,0x4249,0x4269,0x4228,0x4269,0x4a89,0x4249,0x4a6a,0x428b,0x424a,0x424a,0x4a8b,0x4a8b,0x42ab,0x4aab,0x4aab,0x428b,0x428b,0x4aab,0x5aaa,0x5acb,0x4aeb,0x52eb,0x52cb,0x52cc,0x4acb,0x5aec,0x5aec,0x5aec,0x52cb,0x52cb,0x52cc,0x5acb,0x632c,0x530c,0x5aec,0x62ec,0x5b0c,0x5b2d,0x5b2c,0x532c,0x5b2d,0x634d,0x634d,0x5b2d,0x52ec,0x530c,0x5b4d,0x636d,0x534d,0x5b4d,0x5b2d,0x5b2c,0x5b4d,0x634e,0x634e,0x634d,0x636e,0x5b2d,0x638d,0x6b6e,0x636e,0x532e,0x5b4d,0x5b4e,0x5b4d,0x6b6e,0x634e,0x630c,0x5b4d,0x6b6e,0x534d,0x5b2d,0x636e,0x6b4d,0x6b6e,0x634d,0x6b6d,0x6b4e,0x5b6d,0x5b2c,0x634c,0x634d,0x5b2d,0x5b2d,0x638e,0x638e,0x5b6d,0x5b4d,0x5b0d,0x5b4d,0x6b4e,0x6b6e,0x634c,0x6b6d,0x5b4e,0x632d,0x5b4d,0x5b2c,0x634d,0x5b2c,0x5b2c,0x5b4c,0x532c,0x532d,0x5aec,0x5acc,0x5b0c,0x5b2d,0x5aeb,0x632d,0x5aec,0x5aec,0x5aec,0x5aec,0x5aec,0x5b0c,0x52cc,0x5b2c,0x5b0c,0x530c,0x4acb,0x4aaa,0x52aa,0x52aa,0x52ab,0x52ac,0x52ac,0x52ab,0x52ab,0x52ab,0x4aab,0x52eb,0x52cb,0x4aab,0x4a8b,0x52aa,0x4a8b,0x4a8b,0x426b,0x4229,0x424a,0x4a49,0x4a4a,0x426a,0x4a8a,0x426a,0x3a6a,0x3a29,0x4a6a,0x4229,0x4249,0x4249,0x3a09,0x424a,0x3208,0x3a28,0x3a08,0x4229,0x4249,0x3208,0x3a29,0x3a09,0x4209,0x3a29,0x39e8,0x39e8,0x39e8,0x41c8,0x39e8,0x39c7,0x39c8,0x39c7,0x31c8,0x31c8,0x39c8,0x39c7,0x31c7,0x31e7,0x31a7,0x3186,0x31c7,0x31c7,0x2986,0x29a7,0x21a6,0x29a6,0x29c6,0x31c6,0x31a6,0x2986,0x3166,0x31a6,0x2965,0x2966,0x2966,0x3187,0x2986,0x2966,0x1965,0x2145,0x2146,0x1945,0x2165,0x2145,0x2145,0x1965,0x2165,0x2145,0x1925,0x2126,0x1946,0x2146,0x1905,0x1925,0x1945,0x1925,0x1925,0x1925,0x2125,0x2125,0x1924,0x2905,0x1105,0x1925,0x1104,0x1105,0x10e5,0x2104,0x1104,0x2104,0x1104,0x08e3,0x1104,0x1904,0x20e4,0x10e3,0x1904,0x1103,0x1904,0x1925,0x10e4,0x18c3,0x10e4,0x18e4,0x1904,0x18e4,0x10e4,0x18e4,0x10c4,0x18c4,0x18e3,0x18e3,0x10c3,0x18e3,0x10c3,0x08e3,0x10e3,0x10e4,0x18e4,0x10c4,0x18c3,0x0062,0x8d12,0x7c11,0x0822,0x10e4,0x1104,0x1924,0x08e4,0x31e6,0x4a68,0x52c9,0x52c9,0x52c9, +0xdf7d,0x63ef,0x52c9,0x5ac9,0x52ca,0x5aea,0x5289,0x31c7,0x31a7,0x4229,0x3a48,0x3229,0x626b,0xe79d,0x53d1,0x31a6,0x3a08,0x4208,0x3a08,0x4208,0x3a08,0x4208,0x3a08,0x3a08,0x3a08,0x31e8,0x3a08,0x41e9,0x4249,0x4229,0x4208,0x41e9,0x3a09,0x3a08,0x3209,0x4208,0x3a28,0x4229,0x4249,0x424a,0x4229,0x3228,0x3a29,0x4a49,0x4a49,0x424a,0x4269,0x3a69,0x3a4a,0x424a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x426a,0x426a,0x4a8b,0x4aab,0x4aab,0x4a8a,0x4aab,0x4a8b,0x4a8b,0x4a8b,0x52ab,0x5aec,0x52cb,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x52ec,0x52cc,0x52ab,0x52cb,0x52ec,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52ec,0x632c,0x636d,0x632c,0x5b0d,0x5aed,0x5b2c,0x632d,0x634d,0x5b2d,0x632d,0x5b4d,0x5b4d,0x5b2d,0x5b4d,0x634d,0x632d,0x5b4d,0x634e,0x634e,0x5b4d,0x5b4d,0x6b6e,0x634e,0x636e,0x638d,0x636e,0x5b0d,0x634d,0x6b4d,0x5b6e,0x5b4d,0x5b2c,0x5b2d,0x634d,0x5b4d,0x5b4d,0x4b2c,0x632d,0x634d,0x634d,0x634d,0x634e,0x636d,0x6b6d,0x636d,0x632d,0x634e,0x6b6e,0x6b6e,0x6b6e,0x5b6d,0x5b0c,0x632d,0x634d,0x636d,0x5b4d,0x634d,0x632c,0x636d,0x5b4d,0x5b6d,0x634d,0x634d,0x632d,0x630d,0x5b0d,0x5b2c,0x5b0d,0x5b0d,0x5b0c,0x5aec,0x530c,0x630c,0x6b2d,0x630c,0x5b0c,0x5b0b,0x5aec,0x52ec,0x52ec,0x52cc,0x52ca,0x5aab,0x52cb,0x52ec,0x52ab,0x4aab,0x52ab,0x52ab,0x52ab,0x4acb,0x4acb,0x4aaa,0x4aca,0x4aab,0x528b,0x4a8a,0x4aab,0x528b,0x528b,0x4a8b,0x4a8b,0x426a,0x4a4a,0x4a6b,0x4a4a,0x4a69,0x4249,0x4a69,0x4269,0x4269,0x3269,0x426a,0x4229,0x4249,0x3a29,0x4249,0x3a29,0x3a48,0x4229,0x41e8,0x3a28,0x39e8,0x3a08,0x3209,0x3a09,0x4208,0x4208,0x31e8,0x31e8,0x29e7,0x39c7,0x39c8,0x39e8,0x39c7,0x39c7,0x39e7,0x39e7,0x39c8,0x31a7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x31c7,0x3187,0x3187,0x31c7,0x2986,0x39a6,0x3186,0x31a7,0x2987,0x2966,0x2986,0x2966,0x2966,0x2186,0x2186,0x2166,0x3165,0x2186,0x2966,0x2166,0x1945,0x2186,0x2986,0x2945,0x1965,0x1945,0x2126,0x1946,0x1946,0x1925,0x2125,0x2125,0x2945,0x1945,0x2165,0x1945,0x2125,0x2125,0x2125,0x2125,0x2145,0x2145,0x2105,0x1905,0x1104,0x1104,0x1924,0x1905,0x1904,0x1904,0x1124,0x1104,0x18e4,0x20e4,0x1904,0x18e4,0x18e4,0x0903,0x1104,0x18e4,0x10e4,0x18e4,0x1924,0x18c4,0x18c4,0x1104,0x10e4,0x18e4,0x10e3,0x10e4,0x10c3,0x10c4,0x10c3,0x10c3,0x08e3,0x08e4,0x10e3,0x08c3,0x10e3,0x10c3,0x0082,0x8cf2,0x7c11,0x0843,0x10c4,0x18e3,0x2105,0x10c4,0x31c6,0x52a9,0x52ca,0x52ca,0x5aca, +0xdf9d,0x5bef,0x4ac9,0x52e9,0x5ac9,0x52c9,0x4aa9,0x39c7,0x31e8,0x3a49,0x3a29,0x4229,0x628b,0xe77d,0x5390,0x29c7,0x3a08,0x39e8,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3208,0x3227,0x3a08,0x4208,0x4a28,0x4a29,0x29c8,0x3a29,0x31e8,0x3a29,0x4209,0x3229,0x3a29,0x3a29,0x4209,0x3a28,0x3a49,0x3a29,0x4229,0x3a29,0x4a4a,0x4249,0x4249,0x4269,0x326a,0x424a,0x426a,0x4a8a,0x4a6a,0x4a6b,0x4a4a,0x4a6a,0x4a6b,0x4a8b,0x4aab,0x4a8b,0x52ab,0x52ab,0x52ab,0x528b,0x52cc,0x52ac,0x52cc,0x52cc,0x4acb,0x4aab,0x52ec,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb,0x52cb,0x5acc,0x52cc,0x5aec,0x5aec,0x62ec,0x532d,0x5aec,0x5b0c,0x530c,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x5b2d,0x634d,0x5b0d,0x5b2d,0x636d,0x5b2d,0x6b4e,0x634d,0x634d,0x5b6d,0x5b8d,0x536e,0x532c,0x5b6d,0x5b2d,0x5b0d,0x5b6e,0x6b8d,0x634d,0x632d,0x634d,0x6b6d,0x5b6c,0x632d,0x5b2d,0x5b2d,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x632d,0x6b6e,0x6b6d,0x5b4d,0x634d,0x634d,0x634e,0x5b2d,0x5b4d,0x638e,0x638e,0x636d,0x632d,0x636d,0x5b4d,0x5b4d,0x634e,0x634d,0x636d,0x634d,0x636e,0x5b0c,0x5b2d,0x632c,0x634e,0x6b4d,0x5b2d,0x5b0c,0x5aec,0x5b2c,0x5b0d,0x5b0d,0x5aec,0x52ec,0x530c,0x52eb,0x6b2d,0x5b2d,0x532c,0x52eb,0x5aec,0x52ec,0x532d,0x4acb,0x530b,0x5acb,0x52ab,0x4acb,0x528b,0x52ab,0x52ab,0x52cb,0x52eb,0x52eb,0x52eb,0x52ab,0x52ab,0x528b,0x5a8b,0x4aab,0x4aab,0x528a,0x4a8a,0x528b,0x4aaa,0x4a6a,0x426a,0x426b,0x426a,0x52aa,0x4249,0x4a49,0x4a49,0x4228,0x3a69,0x4269,0x4a49,0x4a49,0x3a29,0x4a49,0x3a49,0x4229,0x4209,0x4a49,0x3a49,0x3a08,0x3a28,0x3229,0x3228,0x4208,0x4208,0x3208,0x39c8,0x31c7,0x31e8,0x3a08,0x39e8,0x39c8,0x31e7,0x31c7,0x39c8,0x39c8,0x29a7,0x21a7,0x29c6,0x31c7,0x31a7,0x2987,0x29a6,0x29a6,0x29a7,0x3187,0x2987,0x29a7,0x29a7,0x29a7,0x29a6,0x2986,0x3186,0x2986,0x2986,0x3185,0x2986,0x2166,0x3186,0x2966,0x3166,0x2186,0x2166,0x1945,0x2145,0x2926,0x2146,0x2145,0x2945,0x1945,0x2125,0x2946,0x2925,0x2125,0x2165,0x2145,0x2125,0x2125,0x2125,0x2145,0x2925,0x2905,0x2105,0x3125,0x2905,0x2124,0x1104,0x1904,0x1904,0x20e5,0x1904,0x1904,0x1904,0x1904,0x18e4,0x2104,0x1904,0x1904,0x18e4,0x18c4,0x2103,0x18e4,0x2105,0x18e4,0x1903,0x18c3,0x10c4,0x10e4,0x1104,0x08e4,0x0104,0x10e4,0x0904,0x10e4,0x10e3,0x08c4,0x10e4,0x18e3,0x08e3,0x08e3,0x08c3,0x10e3,0x0082,0x8512,0x7c12,0x0843,0x08e3,0x0903,0x1905,0x10e3,0x31e6,0x42a9,0x5ac9,0x52ca,0x5aea, +0xdf9d,0x5b8e,0x52ca,0x5aca,0x5ac9,0x52a9,0x4289,0x31a6,0x3a28,0x3a49,0x4228,0x4249,0x62ab,0xef9e,0x5390,0x31a7,0x3a08,0x31e8,0x31e8,0x31e8,0x39e8,0x31e8,0x3208,0x3208,0x3a08,0x3a07,0x3a08,0x4a29,0x41e9,0x4229,0x3a28,0x3a08,0x3a29,0x3a08,0x3a28,0x4209,0x4249,0x4a49,0x4228,0x4249,0x3a48,0x4249,0x4249,0x4a69,0x4249,0x4269,0x4289,0x3a6a,0x426a,0x4aaa,0x52ab,0x4a6b,0x428b,0x4aab,0x52ab,0x52ac,0x4a8a,0x52aa,0x4aab,0x52ab,0x5acb,0x52cb,0x52eb,0x5b0c,0x5acc,0x4a8a,0x52ab,0x52ec,0x4aeb,0x52cb,0x5aec,0x52cb,0x5acc,0x5acb,0x5aeb,0x52cc,0x52cb,0x52ec,0x5aed,0x52ec,0x5b0d,0x5b2d,0x5b0c,0x630d,0x5b4e,0x5b0c,0x5b2c,0x530c,0x5b2c,0x634d,0x5b2d,0x5b4d,0x634d,0x6b6e,0x5b4d,0x634d,0x638e,0x632d,0x634c,0x5b6d,0x5b4d,0x634d,0x636d,0x5b4e,0x5b0d,0x5b2d,0x636d,0x5b2d,0x632d,0x5b4d,0x636e,0x5b6c,0x5b2d,0x632d,0x5b2d,0x636e,0x5b2d,0x5b0c,0x634d,0x6b6e,0x636d,0x6b6e,0x6b6e,0x6b6d,0x6b4d,0x634d,0x636d,0x636e,0x5b4e,0x634d,0x634d,0x632d,0x5b2c,0x636d,0x73ae,0x6b6e,0x5b0c,0x5b0d,0x6b8f,0x6b6e,0x636d,0x5b4d,0x5b0e,0x634d,0x5aec,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x4aec,0x5b2c,0x632d,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x530c,0x52ec,0x5aec,0x5aab,0x52cb,0x52cb,0x52cb,0x52cb,0x4acb,0x52ec,0x4aab,0x52cb,0x52ac,0x52ab,0x52ab,0x4aab,0x4acb,0x52ab,0x52ab,0x52ab,0x4a8a,0x4aaa,0x4a8a,0x4a69,0x4aab,0x428a,0x4a89,0x4249,0x426a,0x424a,0x4a69,0x3a89,0x4289,0x4a6a,0x4229,0x424a,0x426a,0x4249,0x4229,0x3a69,0x4a29,0x3a29,0x3a08,0x31e8,0x4229,0x3a49,0x4208,0x4228,0x3a28,0x41e8,0x31e8,0x31c9,0x31e8,0x39e8,0x31e7,0x39c8,0x31a7,0x39c8,0x31a7,0x31c7,0x21c7,0x39c7,0x39c8,0x39a7,0x29a7,0x29c7,0x31c6,0x29c7,0x31a7,0x31c8,0x31c8,0x3186,0x29a7,0x29a6,0x31a5,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3166,0x2987,0x2986,0x2165,0x1986,0x1966,0x2165,0x2146,0x1925,0x2946,0x2966,0x3166,0x2986,0x2966,0x2966,0x2145,0x2165,0x2965,0x2945,0x2165,0x2165,0x2966,0x2166,0x2945,0x2945,0x2145,0x2125,0x2125,0x1945,0x1946,0x2125,0x2124,0x1906,0x1924,0x1924,0x0904,0x1104,0x1904,0x1904,0x2124,0x1925,0x18e5,0x18e4,0x1904,0x2905,0x1904,0x20e3,0x2103,0x1904,0x1904,0x2104,0x18e3,0x1904,0x1903,0x1904,0x1104,0x20e3,0x2103,0x10e4,0x10c3,0x10c3,0x1103,0x18e3,0x18e3,0x18c4,0x0882,0x9533,0x7c33,0x0842,0x08e3,0x0904,0x1124,0x10c3,0x39e6,0x4aa8,0x5ac9,0x5aca,0x5aea, +0xdf9c,0x5b8e,0x52ca,0x52ea,0x52ca,0x5ac9,0x4249,0x31a6,0x3a07,0x3a29,0x3a29,0x3a29,0x72ab,0xefbe,0x4b8f,0x39a7,0x39e8,0x31e8,0x3a08,0x31e8,0x31e8,0x31e7,0x3a08,0x3a08,0x4208,0x3a08,0x3a28,0x4229,0x4229,0x4209,0x3a08,0x3a09,0x3a29,0x3a29,0x4228,0x4229,0x3a08,0x3a28,0x4229,0x4228,0x4248,0x4249,0x424a,0x4269,0x4249,0x3a49,0x424a,0x4269,0x3a49,0x3209,0x3a4a,0x426a,0x4aab,0x426a,0x428a,0x4a8b,0x4a8b,0x4aac,0x4acc,0x4acc,0x3aab,0x42ac,0x4acb,0x52cb,0x4a8a,0x52ab,0x5aec,0x4acb,0x4a8b,0x52ab,0x52ab,0x5aea,0x5aec,0x5aec,0x52cb,0x52ec,0x52ec,0x528a,0x52ab,0x52cc,0x52ec,0x52ec,0x52cb,0x530c,0x52eb,0x52ec,0x530c,0x5b2d,0x52eb,0x5b0c,0x5b2d,0x4b0c,0x532d,0x530c,0x5aec,0x5aec,0x530c,0x5aec,0x5b0c,0x5b4d,0x634d,0x5b4d,0x634d,0x636e,0x632d,0x6b6e,0x530c,0x4aeb,0x52eb,0x52cb,0x52cb,0x52ec,0x5b0c,0x5b2c,0x5b2c,0x5b0d,0x630d,0x5b2c,0x5b2d,0x5b2d,0x530d,0x4b0d,0x534d,0x5b2c,0x630c,0x5aec,0x5b2d,0x530c,0x5b2c,0x638d,0x638d,0x6b6e,0x530c,0x634d,0x636e,0x632d,0x5b2d,0x636e,0x632d,0x632d,0x5b2d,0x5b2d,0x52ec,0x5b0c,0x5b0d,0x530c,0x52ec,0x5b2d,0x52ec,0x52cb,0x530c,0x52cc,0x52cc,0x4acc,0x4a8b,0x426b,0x4a8b,0x5aec,0x5b2d,0x5b2c,0x52ec,0x4aec,0x52eb,0x52cc,0x5aeb,0x52ab,0x4a8b,0x4aab,0x426a,0x3a6a,0x428a,0x4aaa,0x3a4a,0x3a69,0x3a6a,0x4a4a,0x426a,0x424a,0x3a4a,0x3a29,0x3a08,0x3a08,0x3209,0x3229,0x39e8,0x39e8,0x4229,0x4269,0x4289,0x4a49,0x426a,0x3a28,0x4249,0x3a07,0x3208,0x3a08,0x29a8,0x3209,0x31e8,0x2a08,0x31c8,0x31e8,0x31e8,0x31c8,0x31e8,0x31e8,0x31c7,0x31c7,0x29a6,0x31c7,0x29c7,0x31a7,0x31c7,0x2986,0x2966,0x3187,0x31c7,0x39c7,0x31c7,0x31e7,0x31a7,0x29a6,0x29a7,0x2966,0x2966,0x2166,0x2145,0x1945,0x2165,0x2146,0x2165,0x2166,0x2125,0x2145,0x2146,0x1946,0x1965,0x1925,0x2145,0x1925,0x1905,0x1904,0x2104,0x1904,0x1104,0x2166,0x1966,0x2186,0x2145,0x2145,0x1965,0x3125,0x20e4,0x18e4,0x1904,0x1905,0x2105,0x1905,0x1105,0x1104,0x1925,0x1145,0x1925,0x2105,0x2105,0x2125,0x2146,0x1925,0x1925,0x1926,0x1925,0x1925,0x1904,0x10c3,0x10e4,0x1105,0x18e5,0x1905,0x1104,0x1904,0x1905,0x10c3,0x10c3,0x2986,0x39e8,0x31a8,0x31c7,0x39e8,0x29a7,0x3186,0x29c7,0x29a7,0x31a7,0x39c8,0x3a29,0x3228,0x3248,0x3228,0x3229,0x3229,0x3228,0x3a08,0x3a28,0x2966,0x0862,0x10c3,0x18c4,0x1082,0x84f1,0x8c94,0x0023,0x08e2,0x1103,0x1144,0x0883,0x31e6,0x52a8,0x52e9,0x5aea,0x5aca, +0xdf7c,0x5bae,0x52c9,0x52e9,0x52ca,0x52c9,0x4268,0x3186,0x29c6,0x3249,0x3a48,0x4229,0x72cb,0xefbd,0x5390,0x29c7,0x31e8,0x39e8,0x39e8,0x31e8,0x31e8,0x39c7,0x39e8,0x4208,0x4209,0x4228,0x3a28,0x39e8,0x4229,0x3a09,0x3a08,0x3a48,0x3a28,0x4229,0x4249,0x4208,0x4228,0x3a28,0x4229,0x3a48,0x3a28,0x4229,0x424a,0x4249,0x4269,0x4269,0x426a,0x4229,0x6b4d,0xdf1c,0xdf5c,0xdf7c,0xd77c,0xdf5c,0xe77d,0xe79e,0xe79e,0xe79e,0xdf7d,0xe79d,0xdf9e,0xdf7d,0xdf9d,0xdf9d,0xdf9d,0xe7be,0xefbe,0xe79d,0xdf7d,0xcf3c,0x7cb2,0x52cb,0x52ec,0x52eb,0x52eb,0x52ec,0x428a,0xb5f7,0xe79d,0xd79d,0xe79e,0xe79e,0xef9e,0xdf7d,0xd75d,0xef9e,0xdf7d,0xdf7d,0xdf5d,0xd75c,0xdf9e,0xdf9d,0xd75d,0xd77d,0xd75c,0xdf7d,0xdf7d,0xd73c,0xa5d8,0x5b2e,0x6b2d,0x634d,0x5b4d,0x634c,0x5b4e,0x530c,0x9d96,0xdf7d,0xdf5d,0xdf7d,0xdf7d,0xe77d,0xdf5d,0xdf5d,0xdf7d,0xe77d,0xe77d,0xdf5d,0xd75c,0xe77d,0xdf7d,0xd73c,0xd73c,0xd73c,0xd71c,0xd73c,0xcf3c,0x9db7,0x638e,0x638e,0x638d,0x636e,0x632d,0x6b4e,0x52cc,0xad96,0xe77d,0xe79e,0xefde,0xf7ff,0xefdf,0xefbe,0xef9e,0xefbe,0xe77d,0xe77d,0xe77d,0xdf7d,0xd75c,0xdf7d,0xdf5d,0xd71c,0xcefb,0xd73c,0xd75d,0xd73c,0xbe7b,0x5b6e,0x52ec,0x5b2c,0x5b0c,0x4aeb,0x4acb,0x428a,0x73ee,0xdf3c,0xdf5c,0xe75d,0xdf1c,0xdf3d,0xe75d,0xdf3d,0xdf5d,0xe75d,0xd71c,0xd71c,0xd73d,0xcf1c,0xd73c,0xdf3c,0xd73c,0xd73c,0xd73c,0xd75d,0xcf1c,0xcedb,0x73f1,0x31e9,0x4a6a,0x4a6a,0x424a,0x3a4a,0x3207,0x6c50,0xcefb,0xe77e,0xdf5d,0xdf7d,0xdf7d,0xdf5c,0xe77d,0xdf5c,0xdf7c,0xd75d,0xd71b,0xd75c,0xd77d,0xd75d,0xd73d,0xd73c,0xc73c,0xd71c,0xd73b,0xd71b,0xb638,0x4aed,0x29a7,0x31e7,0x31e7,0x31e7,0x31c8,0x2965,0x39e8,0x9514,0xadd7,0xae17,0xadd6,0xadf8,0xae38,0xadf7,0xadf6,0xae17,0xa617,0xa638,0xb659,0xbe79,0xbe79,0xc699,0xcedb,0xb679,0xb639,0xbe59,0xbe59,0xb659,0x63af,0x1104,0x2146,0x2165,0x2166,0x2966,0x1944,0x31e7,0x9d55,0xb659,0xbe9a,0xb679,0xb659,0xbe59,0xb658,0xbe79,0xadf8,0xa5d7,0xa5f8,0xa618,0xa616,0xae17,0xadf8,0xb5f8,0xa596,0xa596,0xa5b6,0xa5b6,0xad95,0x8c72,0x1884,0x1104,0x2125,0x2105,0x1905,0x1105,0x10c4,0x1924,0x9d55,0x94d3,0x8c70,0x8450,0x7c31,0x7bf0,0x7bf0,0x7c10,0x7c51,0x73ef,0x634d,0x6b6e,0x738e,0x634d,0x634d,0x738c,0x6b4d,0x5b2d,0x634d,0x5b0c,0x4aab,0x94d3,0x634e,0x0842,0x18c4,0x1082,0x84d1,0x8c93,0x0803,0x10e3,0x0903,0x1144,0x08c3,0x31e6,0x52a9,0x5ae9,0x5aea,0x5aeb, +0xd77c,0x538e,0x5aa9,0x5ac9,0x52aa,0x52c9,0x4a88,0x31a7,0x39c8,0x3a49,0x3a49,0x4209,0x72eb,0xe77d,0x4b6f,0x31a7,0x3a08,0x39e8,0x39e8,0x39e8,0x31e7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4208,0x3a08,0x3a09,0x3228,0x3a28,0x3a28,0x3a29,0x4228,0x4229,0x3a29,0x3a29,0x4a49,0x4269,0x4269,0x4249,0x4249,0x4249,0x4249,0x426a,0x426a,0x62ab,0xe73c,0x8cb2,0xadd7,0xadf7,0xae18,0xae18,0xae18,0xadf7,0xb618,0xbe59,0xb659,0xae18,0xadf8,0xbe59,0xb638,0xbe79,0xbe38,0xbe38,0xbe38,0xbe38,0xc699,0xa596,0xcefb,0x6410,0x52aa,0x52eb,0x5aec,0x3a69,0xce79,0xb5b6,0xa515,0xad96,0xb5d7,0xb5f7,0xb5f8,0xadf7,0xadd7,0xadf7,0xb618,0xadf7,0xadf7,0xb5f8,0xbe18,0xbe38,0xb638,0xb618,0xb638,0xb618,0xadd7,0xadb6,0xc699,0xcefc,0x52ec,0x73ae,0x6b8e,0x632c,0x5aec,0xe6fb,0xce7a,0xadb6,0xb5d7,0xbe18,0xb5d7,0xb5d7,0xb5b7,0xb5d7,0xb5b7,0xb5b6,0xb5b6,0xbdd7,0xbdf8,0xbe18,0xbdf7,0xbdf7,0xbdd8,0xbdf8,0xb5d7,0xbdf7,0xadb6,0xceda,0xcefc,0x5b0d,0x634d,0x632d,0x6b4e,0x5aec,0xbdd7,0xd6db,0xad76,0xad96,0xb5f7,0xb5f7,0xad96,0xb5d7,0xb5d7,0xb5f8,0xb5f8,0xb5f7,0xb5f7,0xadf8,0xadd7,0xb5d7,0xbdd7,0xb5d7,0xa596,0xadb6,0xa5b7,0xa535,0x94f3,0xefbe,0x63b0,0x52ec,0x5b0c,0x52eb,0x5acb,0x8430,0xe75c,0x9d54,0x9d55,0xadb6,0xadb6,0xad96,0xad96,0xad96,0xad95,0xad75,0xa596,0xad96,0xa576,0xad76,0xb5b6,0xa555,0xa555,0xad35,0xad55,0xa575,0xad76,0x94d3,0xdf5c,0x7c52,0x3a09,0x4a6a,0x3a29,0x3a08,0x8c91,0xd6fb,0x94d3,0xa535,0x9cf4,0xa514,0x9513,0x94f3,0x94f4,0xb5b6,0x9d34,0x94f4,0x94b3,0x9514,0x9514,0x94d4,0x9d14,0x9d35,0x8cf4,0x9514,0x8cf3,0x94f3,0x9492,0xd6fb,0x530d,0x31a7,0x39e8,0x3a08,0x31c8,0x4248,0xcedb,0x7c30,0x7c30,0x7c30,0x7c30,0x8430,0x8431,0x7c51,0x7c11,0x8431,0x8472,0x7c71,0x8c92,0x8c51,0x8c10,0x8410,0x8431,0x8471,0x8471,0x8c92,0x8492,0x73ef,0xa534,0x8493,0x18e4,0x2166,0x2946,0x2125,0x3185,0xbe58,0x6b6c,0x73ef,0x8492,0x8c92,0x7c31,0x8431,0x8431,0x7c31,0x7c51,0x7c51,0x7c71,0x84b2,0x8c72,0x8472,0x8c92,0x8452,0x8c92,0x8cd3,0x84b3,0x84b2,0x6bae,0x6b6e,0x8c53,0x10a4,0x2104,0x2105,0x2125,0x1905,0x0062,0x8c71,0x5acc,0x7c52,0x8d14,0x84f3,0x84f3,0x8cd3,0x94f4,0x8cb3,0x8492,0x84d2,0x8d14,0x8d14,0x84b3,0x84b3,0x84d3,0x7cb2,0x8cb3,0x84b2,0x7cb2,0x84f3,0x8cf4,0x6bef,0x73cf,0x3126,0x10a4,0x0862,0x8490,0x94b4,0x0823,0x18e3,0x1904,0x2125,0x10e3,0x31c5,0x5aa9,0x5ae9,0x5aea,0x62ea, +0xdf7d,0x536e,0x52a9,0x5aca,0x5aca,0x52c9,0x4a88,0x31a7,0x3a08,0x3a49,0x4229,0x4229,0x7aec,0xe77d,0x434e,0x31c7,0x3a07,0x39e8,0x31c8,0x31c7,0x31e7,0x3a07,0x3a08,0x3a28,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x41e9,0x3a28,0x3a08,0x4228,0x3a29,0x4228,0x4229,0x3a28,0x3a49,0x4269,0x4249,0x4269,0x4249,0x4249,0x424a,0x4249,0x3a69,0x3a29,0x9c51,0x9534,0xdf1c,0xe77d,0xe77d,0xe79e,0xe77d,0xe77d,0xe7be,0xe79e,0xef9d,0xf7ff,0xffff,0xffff,0xf7de,0xe79e,0xef7e,0xe79d,0xefbe,0xefbe,0xefbe,0xe79d,0xe7df,0xb5f7,0xa5d8,0x528a,0x52ec,0x52cc,0x5acb,0xf7df,0xb5f7,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xffff,0xf7ff,0xffff,0xb639,0xd71c,0x63b0,0x632c,0x634c,0x634d,0x7b8d,0xf7be,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7ff,0xffff,0xffff,0xf7ff,0xefff,0xf7ff,0xf7ff,0xb638,0xe77d,0x6baf,0x5b0d,0x632d,0x638e,0x5aec,0xefbe,0xa575,0xffff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7de,0xefbf,0xf7ff,0xf7ff,0xffff,0xf7ff,0xffff,0xf7df,0xf7df,0xffff,0xf7ff,0xf7ff,0xdf5d,0xadb6,0x9d76,0x4aac,0x52ec,0x52cc,0x528b,0xce79,0xa575,0xf7df,0xf7ff,0xf7ff,0xf7ff,0xf7ff,0xf7df,0xefdf,0xefdf,0xf7ff,0xf7ff,0xffff,0xe7de,0xe7be,0xe7de,0xe7de,0xe7de,0xefdf,0xefbe,0xe79e,0xe7be,0xe7be,0x8472,0xc69b,0x39a8,0x4a4a,0x4a6a,0x41e7,0xd699,0x6bef,0xefde,0xdf7d,0xdf7d,0xe79d,0xe79d,0xe79e,0xdf7d,0xdf5d,0xe7be,0xe79e,0xe73d,0xe75d,0xdf7d,0xd77d,0xe77c,0xdf5c,0xdf5d,0xe75d,0xe75c,0xdf3c,0xefbf,0x8472,0xbe39,0x31a7,0x39c7,0x39a7,0x2946,0x8491,0x7c10,0xbe58,0xcf3c,0xd71b,0xd73b,0xd73b,0xd73c,0xd73c,0xe77d,0xdf5c,0xcefb,0xd6fb,0xcedb,0xd71b,0xdf5c,0xd6fb,0xceda,0xceba,0xc69a,0xceba,0xc6ba,0xcefc,0x736e,0xdefd,0x1905,0x29a6,0x1986,0x10c4,0x73ad,0x6b8e,0xadd6,0xbe9a,0xb679,0xbe59,0xbe59,0xb638,0xadf7,0xb618,0xb618,0xb617,0xadf7,0xb618,0xb5d6,0xb5f7,0xb617,0xadd7,0xb5d6,0xadd7,0xadd6,0xb5d6,0xb618,0x736e,0xc65a,0x20c5,0x2105,0x20e4,0x1904,0x10e4,0x0882,0xa595,0x63ae,0x9d75,0x9514,0x9535,0x9d14,0x9d14,0x9cf4,0x9cf4,0x9d14,0x9d15,0x94b3,0x9cb2,0xad54,0x9d14,0x9534,0x94f3,0x94d3,0x94f4,0x94f3,0x94f3,0x94f3,0xb5b7,0x52ed,0x6acc,0x10c3,0x0882,0x740e,0x8cd4,0x1023,0x1904,0x1904,0x2145,0x18c3,0x29e5,0x52a8,0x5ae9,0x5b0a,0x62ea, +0xd77d,0x5b6e,0x5aca,0x52ca,0x5aca,0x4ac9,0x4248,0x39c7,0x3a29,0x422a,0x4229,0x39e9,0x7b2e,0xe79d,0x4b2d,0x31c7,0x31e7,0x39e7,0x39e8,0x41c8,0x41e8,0x39e8,0x39c8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4229,0x3a29,0x4228,0x3a29,0x4a48,0x4228,0x3a28,0x3a29,0x3228,0x3a49,0x4248,0x4a49,0x4a49,0x4229,0x4249,0x3a69,0x39e8,0xa4d3,0x8452,0xe77c,0xdf3c,0xe75c,0xdf5c,0xdf3c,0xe75c,0xe75d,0xdf7d,0xb638,0x52cc,0x6b0d,0x6b0c,0xacf3,0xefbe,0xe77d,0xe77d,0xe77d,0xef7d,0xe77d,0xe77d,0xe7ff,0xad96,0xb67a,0x3a4a,0x5b0d,0x5aec,0x72ec,0xefbe,0xdedb,0xefbe,0xe77d,0xe79e,0xef9e,0xef9e,0xef9d,0xef9d,0xd71c,0xc5d7,0xf7de,0xefbe,0xefde,0xa554,0xf7de,0xefde,0xf7bf,0xefbe,0xf7be,0xef9e,0xefbd,0xcedb,0xbe38,0x63d1,0x5b2c,0x636d,0x636d,0x83ae,0xdf5d,0xd6fa,0xefbe,0xefbe,0xf7be,0xf7be,0xf79e,0xf7be,0xf7bf,0xf7ff,0xd6bb,0x6b6e,0x5b0c,0x83ef,0xef5c,0xffbe,0xefbe,0xefbe,0xf7be,0xefbe,0xefbe,0xefbe,0xcebb,0xce79,0x73f0,0x632e,0x5aec,0x5b4d,0x630b,0xef7d,0xad96,0xefbe,0xf79e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xd6fb,0xef7c,0xefbd,0xef7d,0xf7df,0xd6da,0xe75c,0xefbe,0xef7d,0xef7d,0xef9e,0xef9d,0xef9d,0xefdf,0x8c92,0xadd8,0x4aab,0x530c,0x4b0c,0x4a6a,0xdeba,0x94f4,0xf7de,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xd6db,0xc5b6,0xce58,0xef7d,0xdf3d,0xdf5c,0xdf5d,0xe75c,0xdf5c,0xdf5d,0xdf5d,0xdf3d,0xe77d,0x8452,0xce9a,0x2987,0x4249,0x4a6a,0x4187,0xce79,0x73ef,0xe77d,0xdf1c,0xdf1c,0xd71c,0xd71c,0xdf1c,0xd6fb,0xd75d,0x840f,0xe75c,0xd6db,0xdf3c,0xb5b6,0xc638,0xd6fb,0xd6db,0xceda,0xcedb,0xd6db,0xc6ba,0xdf3d,0x7430,0xc67a,0x31a7,0x31c7,0x49c7,0x3125,0x94b1,0x424a,0xceda,0xc699,0xb5f8,0xc679,0xc679,0xc679,0xceba,0x6b2d,0x6b0b,0xd71a,0xbe59,0xbe79,0xd6bb,0x4208,0x73ef,0xc679,0xbe59,0xbe38,0xbe38,0xbe38,0xc699,0x7bf1,0xc69a,0x1905,0x2986,0x2986,0x2105,0x6b8c,0x426a,0xbe58,0xb638,0xb5f7,0xadf7,0xb5d7,0xb5f7,0xb5d6,0xbe18,0xb5d7,0xb5d7,0xadd6,0xa5f6,0xadd6,0xb5b7,0xadb6,0xa5b6,0xa5b6,0xa5b6,0xadb6,0xa596,0xadf7,0x7bb0,0xbe79,0x20e6,0x2104,0x2103,0x2124,0x2124,0x0862,0x9d95,0x5bad,0xa595,0x9d54,0x9d55,0x9554,0x9d54,0x9d34,0x9d14,0x9d55,0x6b0e,0x10c3,0x10c4,0x39a6,0x9d55,0x9514,0x9514,0x8d14,0x94f3,0x94f4,0x8d13,0x8cf3,0xa556,0x52cd,0x6b4f,0x1083,0x0081,0x7c70,0x94d5,0x0802,0x10e4,0x1904,0x1904,0x18e4,0x29c5,0x5aa9,0x5aea,0x5b0a,0x630b, +0xdf7d,0x536d,0x4aaa,0x52ca,0x5ac9,0x52c9,0x4a68,0x31a6,0x3208,0x3a49,0x422a,0x422a,0x72ed,0xdf5d,0x3acb,0x39e7,0x3a08,0x39e8,0x3a08,0x31c8,0x31e9,0x3a08,0x3a08,0x3a07,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x3a28,0x3a08,0x4229,0x4229,0x4a28,0x4229,0x3249,0x3a69,0x4249,0x3a48,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a69,0x39c8,0xb514,0x8452,0xef5d,0xd71c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xe77d,0xdf5d,0xd73d,0xdf9e,0x4a8b,0xd639,0xefbd,0xe77d,0xe77d,0xe77d,0xef9d,0xe77d,0xe77d,0xefff,0xad76,0xb69b,0x424b,0x52ec,0x52ec,0x730d,0xef7d,0xd6ba,0xf7be,0xef7e,0xef7e,0xef9e,0xf79e,0xef9e,0xef7d,0xe7df,0x7c31,0xe6fb,0xffff,0x9555,0xad55,0xf7df,0xefbe,0xf7be,0xf7be,0xf7be,0xefbe,0xefbf,0xd6fc,0xbe38,0x6bd0,0x638d,0x634e,0x636d,0x83cf,0xe75c,0xdefb,0xefbe,0xef9e,0xf7de,0xf7be,0xf7be,0xefbe,0xf7ff,0xbe39,0x6b8e,0xd6db,0xdf7d,0xbe79,0x73cf,0xdefb,0xef9e,0xef9e,0xefbe,0xefbe,0xefbe,0xf7be,0xd6fc,0xce79,0x7410,0x5b4d,0x5b2d,0x5b0c,0x6b0b,0xef9d,0xad96,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefbe,0xceba,0x8430,0xf7ff,0xe77d,0xffff,0x5b4e,0xef9d,0xefbe,0xe77d,0xef9e,0xe79d,0xef9d,0xef9e,0xf7df,0x8430,0xadd8,0x426a,0x5b0c,0x5b0c,0x4249,0xd6da,0x8cb3,0xefbe,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xef9e,0x9d15,0x5aeb,0x8472,0x632d,0xf7bd,0xe73d,0xe75d,0xe75d,0xe75d,0xe77d,0xdf5c,0xe73c,0xe77d,0x8c93,0xce9a,0x3187,0x528a,0x4a8a,0x3186,0xce79,0x842f,0xe75c,0xdefb,0xdf1c,0xdf1c,0xdf1c,0xd71b,0xd6fb,0xdf7e,0x2106,0x8c0f,0xe73d,0xe79e,0x8411,0xad54,0xdf1b,0xd6db,0xd6db,0xd6db,0xd6fb,0xd6bb,0xe75c,0x7c11,0xce5a,0x31a7,0x39e8,0x39c8,0x2945,0x8cb0,0x424a,0xd6fb,0xce9a,0xc679,0xc679,0xce9a,0xc679,0xcedb,0x39eb,0x1062,0xce98,0xc699,0xd6db,0x9494,0x0863,0x532b,0xc699,0xc659,0xbe59,0xbe59,0xbe58,0xbe79,0x7bf1,0xd6fc,0x20e6,0x31a7,0x2166,0x2105,0x5b4b,0x428b,0xc678,0xbe59,0xb5f7,0xadd7,0xb5f7,0xb5f8,0xb5f7,0xb5f7,0xb5d7,0xadd7,0xb5f7,0xa5d6,0xa5d7,0xadd7,0xadb6,0xadd7,0xadb6,0xad96,0xad96,0xad96,0xb618,0x7bd0,0xb618,0x1906,0x2925,0x2104,0x2104,0x1904,0x0061,0x9d74,0x5b6d,0xa595,0x9d54,0x9d34,0x9d34,0x9d14,0x9d34,0x9d14,0x9d96,0x2a09,0x9db6,0xb639,0x3146,0x9573,0x9534,0x9514,0x9d55,0x9514,0x9514,0x9514,0x94f4,0xad56,0x530d,0x6bb0,0x18a3,0x08a2,0x744f,0x9d35,0x0822,0x18e4,0x1104,0x1905,0x18e4,0x39c6,0x52a9,0x62ea,0x5aeb,0x5b0b, +0xdf7c,0x536d,0x52aa,0x52c9,0x5aca,0x5ac9,0x4a68,0x31c6,0x3a49,0x4229,0x4229,0x3a09,0x834e,0xdf9d,0x3aac,0x39e7,0x4229,0x3a09,0x39e8,0x31c7,0x31e8,0x3a08,0x3228,0x3208,0x39e8,0x3a08,0x3a28,0x3a08,0x3a28,0x3a28,0x3a28,0x4229,0x3a49,0x4228,0x4208,0x4229,0x3a29,0x4249,0x4228,0x4229,0x4249,0x4a49,0x4a6a,0x4249,0x4a49,0x4a6a,0x39e8,0x9cb2,0x8451,0xe73c,0xdf1b,0xdf5c,0xe73c,0xe73c,0xdf3c,0xe75c,0xe77d,0xe75d,0xe77d,0xadd7,0x6b4d,0xf7be,0xe77d,0xef7d,0xe79d,0xe77d,0xe77d,0xe77d,0xe77d,0xe7ff,0xad76,0xa67a,0x426b,0x426a,0x4acb,0x732d,0xe77d,0xd6ba,0xef9e,0xe77d,0xef7d,0xef7e,0xef9d,0xef7d,0xe77d,0xf7be,0xd75d,0x8410,0xce79,0x634d,0xffff,0xef9e,0xf7bf,0xe79e,0xf7be,0xefbe,0xef9e,0xf79e,0xd6fb,0xce79,0x6bb1,0x5b0c,0x5b0d,0x5b0d,0x8baf,0xe75d,0xd6da,0xf7be,0xefbe,0xf79e,0xefbe,0xef9e,0xefbe,0xf7ff,0x6baf,0xffff,0xefbe,0xefbe,0xf7de,0xf7ff,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xf7be,0xd6db,0xc659,0x6c10,0x5b2c,0x636d,0x634d,0x6aec,0xefbe,0xad96,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xefdf,0x6b0c,0xef7d,0xef9e,0xcebb,0x8c51,0xf7df,0xef9e,0xe79d,0xef7e,0xef7d,0xef9e,0xe77d,0xf7df,0x8450,0xadd8,0x4a6a,0x5aeb,0x5b0c,0x4228,0xd6fa,0x8cb3,0xefbe,0xe75d,0xe77d,0xe77d,0xef7d,0xef7d,0xe77d,0xef9e,0x94f5,0xa513,0xf7ff,0x6baf,0xce78,0xe75d,0xe75d,0xe75d,0xe75c,0xdf5c,0xd73c,0xdf3c,0xe77d,0x8c72,0xd6bb,0x41a8,0x4a6a,0x4a8a,0x3187,0xce79,0x7bef,0xdf5c,0xd71c,0xdf1b,0xd71c,0xd71c,0xdf1c,0xdf3c,0xe77e,0x52ac,0x5aec,0xc638,0xf7de,0x8c73,0xad74,0xd71b,0xd6db,0xd6db,0xd6da,0xd6fa,0xceba,0xe73d,0x73f0,0xce9a,0x2966,0x39e8,0x39e8,0x2965,0x8c90,0x528b,0xd6fb,0xc67a,0xce9a,0xc699,0xc6ba,0xce9a,0xd6db,0x31ca,0x5b0e,0x630b,0xced9,0xd6bb,0x2987,0x5b2d,0x530b,0xc699,0xbe59,0xbe58,0xc639,0xbe38,0xb638,0x7bf1,0xdefc,0x18c6,0x2186,0x2186,0x2105,0x5b0b,0x3a6a,0xbe99,0xb617,0xb617,0xb617,0xb618,0xb617,0xadf7,0xadf7,0xadd7,0xb5f7,0xadd7,0xa595,0xadf6,0xb5d7,0xa5d6,0xadd7,0xb5d7,0xb5b6,0xb5d6,0xadb6,0xb5f7,0x7bf1,0xc67a,0x1906,0x2125,0x1925,0x1924,0x1904,0x0061,0xa5f6,0x5b4d,0xa5b6,0x9554,0x9d55,0x9d54,0x9d14,0x9554,0x9534,0x9534,0x9d96,0x8cf3,0xad36,0x3166,0x9553,0x94f4,0x94f4,0x94f4,0x9514,0x94f4,0x94f3,0x94f3,0xb597,0x52ec,0x7bd0,0x1082,0x08a2,0x746f,0x9d15,0x0022,0x18e4,0x10e4,0x2126,0x18e4,0x39e6,0x4ac8,0x5b0a,0x62ea,0x630a, +0xdf7c,0x4b4d,0x5aca,0x52ca,0x52ca,0x52c9,0x4a68,0x31e7,0x3a28,0x3a29,0x3a29,0x3208,0x834e,0xdfbd,0x3aed,0x31e7,0x4229,0x3a28,0x3a08,0x39e9,0x39e8,0x39e8,0x3208,0x3a08,0x3a08,0x3a08,0x4228,0x3a08,0x3a28,0x4208,0x4208,0x4229,0x4209,0x4228,0x4208,0x4228,0x4229,0x3a48,0x4249,0x3a29,0x4229,0x426a,0x3a49,0x3a49,0x428a,0x426a,0x3a08,0x9c92,0x7c51,0xe73c,0xdf3c,0xe75d,0xe75d,0xe75d,0xdf5d,0xdf5c,0xdf5d,0xdf5d,0xe7df,0x52ac,0xef5d,0xdf3d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe7df,0xad76,0xae79,0x426a,0x52cc,0x52ec,0x7b2d,0xe79e,0xd6ba,0xef9e,0xe77d,0xef9d,0xef9d,0xef7d,0xef7d,0xef9e,0xef9d,0xefff,0xb639,0x628b,0xf79e,0xf7de,0xefbe,0xf7be,0xef9e,0xefbe,0xefbe,0xefbe,0xf7be,0xd6fb,0xc638,0x6b8f,0x632d,0x634e,0x52cc,0x83af,0xd6db,0xd6da,0xef9e,0xefbe,0xefbe,0xefbe,0xef9e,0xefbe,0xefdf,0x83f0,0xffff,0xef9d,0xefbe,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xf79e,0xf7be,0xefbe,0xf7be,0xcebb,0xce7a,0x6bd0,0x5aec,0x636e,0x5b6d,0x62ec,0xef9e,0xb5b6,0xf7be,0xef9e,0xef9e,0xf79e,0xefbe,0xf79e,0xef7e,0xf7ff,0xa5b7,0xb575,0xf7ff,0x6baf,0xce79,0xefbe,0xef7e,0xef9e,0xef9e,0xef9e,0xef9e,0xef7d,0xefde,0x7c10,0xa5d7,0x4a4a,0x5acc,0x5aeb,0x4a49,0xd6da,0x8c72,0xef9d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe79d,0x9515,0x6b2d,0x9cb3,0x4aaa,0xfffe,0xe73c,0xe75c,0xe75c,0xdf5c,0xdf5c,0xdf5c,0xe73c,0xef7d,0x8493,0xce9a,0x3168,0x426a,0x4a69,0x3965,0xce58,0x73ce,0xdf5c,0xdf3c,0xdf3c,0xd71c,0xdf1c,0xdf3c,0xd71c,0xe75e,0x734e,0xdf5d,0x2925,0xef7c,0x8473,0xad75,0xdf3c,0xdefb,0xd6fb,0xd6db,0xceba,0xceda,0xd75d,0x73ef,0xd69a,0x2987,0x31c8,0x39e7,0x2145,0x8c90,0x52cb,0xceda,0xc69a,0xbe99,0xce9a,0xce9a,0xce99,0xd6fb,0x31a8,0xbe18,0x1904,0xd71a,0xad98,0x3a69,0x94d4,0x52ca,0xc699,0xbe59,0xbe79,0xbe59,0xc638,0xb638,0x8431,0xd6db,0x18e6,0x21a7,0x3166,0x2925,0x4aea,0x3a49,0xbe78,0xbe38,0xbe38,0xb5f7,0xb5f7,0xb5f7,0xb5f8,0xadf6,0xadd7,0xbe18,0x4a4a,0x1903,0xae16,0xadb7,0xadf7,0xadb6,0xadd7,0xadd6,0xadb6,0xad96,0xa5d6,0x8411,0xc69b,0x2927,0x1925,0x2104,0x2104,0x1904,0x0041,0xa595,0x5b4c,0xadb6,0x9d54,0x9d55,0x9d54,0x9d34,0x9d34,0x9d54,0x9554,0x9d34,0xa576,0x3167,0x5b4c,0x9514,0x94f4,0x9cf3,0x8d14,0x8d14,0x8cf4,0x8cf3,0x9513,0xad76,0x4acc,0x8c32,0x1082,0x10a1,0x742e,0xa515,0x0801,0x2104,0x1905,0x1925,0x18c3,0x31a6,0x52c9,0x5b0a,0x630a,0x630a, +0xdf7d,0x4b2d,0x5aca,0x52c9,0x52ca,0x52c9,0x4269,0x2986,0x4228,0x3a29,0x3a29,0x3a29,0x8b6e,0xe7be,0x3acc,0x31e8,0x3a29,0x3208,0x4208,0x3a09,0x31e8,0x39e8,0x3208,0x4209,0x39e8,0x39e8,0x31e8,0x3228,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3a08,0x3a09,0x4229,0x4209,0x4a49,0x4229,0x3a29,0x4209,0x4a49,0x428a,0x4249,0x528a,0x526b,0x39e8,0x9c92,0x8472,0xe75d,0xdf5c,0xe75d,0xe75d,0xe75d,0xe73d,0xdf3d,0xdf3c,0xef9e,0x8cd4,0xa515,0xefde,0xdf3d,0xe73d,0xe77d,0xe77d,0xe77d,0xe75d,0xef7d,0xe77d,0xefff,0xad75,0xa659,0x426a,0x4a8b,0x530c,0x7b4e,0xe79e,0xd6ba,0xef9e,0xe77d,0xef9d,0xef9e,0xef9e,0xef9d,0xefbd,0xef9e,0xefdf,0x84f5,0x5acc,0xef3c,0xefbe,0xf7be,0xefbe,0xef9e,0xef9e,0xefbe,0xefbe,0xf7be,0xcebb,0xc658,0x636f,0x5b4d,0x632d,0x5b0d,0x7baf,0xdefb,0xd6ba,0xef9e,0xef9e,0xf7be,0xefbe,0xef9e,0xef9e,0xe7bf,0x8c51,0xffff,0xef9e,0xef9d,0xe79e,0xefbe,0xf7be,0xef9e,0xefbe,0xefbe,0xefde,0xefbe,0xefbe,0xce9b,0xce9a,0x6bd0,0x62ec,0x632d,0x5b4d,0x5aab,0xef9e,0xad96,0xefbe,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xef9e,0xf7be,0xdfbf,0x8c52,0xf7df,0x632c,0xffff,0xef9e,0xe79d,0xef9e,0xe79e,0xef9e,0xef7d,0xe75c,0xefbe,0x7c10,0xa5b8,0x422a,0x5acc,0x52eb,0x4a49,0xd6da,0x8c92,0xef9d,0xe75d,0xef7e,0xdf5d,0xe75d,0xef7d,0xe77d,0xe79e,0x9d36,0x630d,0x9d55,0x636d,0xbdb6,0xe77d,0xe73c,0xe75d,0xe75d,0xe75c,0xdf5c,0xdf3c,0xe77d,0x7c52,0xcedb,0x2988,0x4a6a,0x4a69,0x3985,0xc638,0x73ae,0xdf3c,0xdf1c,0xdf1c,0xd71c,0xdf3c,0xd71b,0xd71c,0xdf7e,0x6b2d,0xf7ff,0x94d4,0x7bae,0x8c93,0xad94,0xdf3c,0xd6fb,0xcedb,0xd6fc,0xd71c,0xceda,0xd73c,0x7bf0,0xce7a,0x2167,0x39e8,0x39c7,0x2925,0x8c90,0x52ec,0xceda,0xc69a,0xc6da,0xceba,0xc69a,0xc699,0xd71b,0x3188,0xc658,0x6bd0,0xa534,0x6b90,0x9555,0x9494,0x52aa,0xce99,0xc659,0xbe79,0xbe79,0xbe38,0xbe58,0x8c32,0xce9a,0x2126,0x2986,0x3166,0x2124,0x532a,0x3a09,0xc678,0xc659,0xbdf8,0xbe18,0xbe19,0xb5f8,0xb5f7,0xb5d7,0xb5f7,0xadd7,0x9534,0x84d2,0xb638,0xb5b8,0xb5d7,0xb5f7,0xb5d7,0xadd7,0xadb6,0xadb7,0xad96,0x8c32,0xbe39,0x2106,0x2145,0x1904,0x1905,0x1924,0x0061,0x9534,0x536d,0xadb6,0x9d54,0x9d55,0x9d34,0x9554,0x9d34,0x9d54,0x9514,0x9d35,0x9d35,0x2166,0xa5b6,0x9514,0x9514,0x9514,0x9514,0x8d34,0x9534,0x9514,0x8d13,0x9d55,0x4acc,0x83d1,0x1083,0x1082,0x7c0e,0xa536,0x1023,0x1904,0x1924,0x1924,0x10c4,0x31a5,0x52a9,0x5aea,0x630b,0x630b, +0xd77c,0x532c,0x52a9,0x52c9,0x52ca,0x52a9,0x4269,0x21e6,0x3a48,0x3229,0x3a49,0x3a29,0x8baf,0xd79d,0x2a8b,0x31e8,0x3a08,0x39e8,0x39e8,0x3208,0x3208,0x39e8,0x39e7,0x3a08,0x41e8,0x39e8,0x31e8,0x3208,0x4207,0x4a28,0x4229,0x4209,0x4228,0x3a28,0x3a09,0x3a28,0x4229,0x4229,0x3a29,0x4249,0x4229,0x4229,0x4229,0x4229,0x4249,0x526a,0x39e8,0xa492,0x8c72,0xe75d,0xdf3c,0xdf5c,0xdf3c,0xe75d,0xe75d,0xdf5d,0xe77d,0xcefb,0x4209,0xffde,0xf7de,0xe79d,0xdf5d,0xdf7d,0xe75d,0xe77d,0xe75d,0xe75d,0xe77d,0xefff,0xad76,0xa659,0x4249,0x52ab,0x52cb,0x7b4e,0xe75d,0xd6ba,0xf7be,0xe77d,0xe79d,0xef9d,0xef9d,0xef9d,0xefbd,0xefdf,0xc69a,0x73af,0xdf7d,0x736d,0xffdf,0xf7be,0xefbe,0xef9d,0xef9d,0xef9e,0xef9d,0xef9d,0xcedb,0xc659,0x532e,0x532d,0x530c,0x5b4c,0x83cf,0xdf1c,0xd6ba,0xef9e,0xef9e,0xef9e,0xefbe,0xefbe,0xef9e,0xefff,0x7c52,0xe6db,0xffff,0xf7ff,0xffff,0xef5d,0xe73c,0xefbe,0xef9e,0xf79e,0xf7be,0xefbe,0xf7be,0xcebb,0xc69a,0x6bd0,0x630d,0x5b0d,0x632d,0x62ca,0xef9e,0xad55,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xe79e,0xef9e,0xef9d,0xefdf,0x7c31,0x734e,0xbdd7,0xf7fe,0xe77d,0xe77d,0xef9e,0xe79d,0xef9d,0xe77d,0xef7d,0xefbe,0x7bf0,0xa5d8,0x3a6a,0x52cb,0x52ec,0x4a29,0xdeda,0x8472,0xef9d,0xe75c,0xe77d,0xe75c,0xe77d,0xef7d,0xe75d,0xe79d,0x9d36,0x9cf3,0xf7df,0xbe79,0x52ea,0xef7d,0xe75c,0xe75c,0xe77d,0xe75c,0xe77d,0xdf5c,0xef7d,0x8492,0xc69a,0x2987,0x526a,0x4a6a,0x2965,0xc659,0x7bcf,0xe77c,0xdf1c,0xdf1c,0xdf1c,0xd71b,0xd71b,0xd71c,0xe79e,0x6b4d,0xefbd,0xf7df,0x5b4e,0x41e9,0xad53,0xe75c,0xd6db,0xdf1c,0xdefb,0xdedb,0xcedb,0xd73c,0x7c11,0xce5a,0x3188,0x39e8,0x39c7,0x2104,0x8c90,0x5b0c,0xceda,0xc6ba,0xc699,0xc699,0xc699,0xc6ba,0xcefc,0x3188,0xbe36,0xce9c,0x3988,0x4228,0xcf1a,0x8c73,0x4a8a,0xc699,0xc659,0xbe59,0xbe79,0xb658,0xbe58,0x8411,0xce9a,0x2146,0x29a7,0x2966,0x2124,0x52ea,0x3a08,0xbe57,0xb5f8,0xb618,0xb617,0xb5f8,0xb5f8,0xb5d7,0xb5f7,0xadd6,0xb5f7,0xbdd7,0xbe18,0xb5d7,0xadb7,0xadd6,0xadf7,0xb5f7,0xadb6,0xadf7,0xa5b6,0xadb6,0x7bf0,0xadf7,0x2926,0x2926,0x2925,0x1904,0x1904,0x0041,0x9534,0x536e,0xadd6,0x9d55,0x9514,0x9534,0x9d55,0x9d34,0x9d34,0x8d14,0x9514,0x9555,0x8513,0x9d55,0x9534,0x9534,0x9514,0x9514,0x94f3,0x9514,0x9514,0x8cf4,0x9d75,0x52cd,0x7b90,0x0883,0x0882,0x6bad,0x9d56,0x0823,0x18c4,0x1904,0x2164,0x18e4,0x31c5,0x4a88,0x5b0a,0x62ea,0x630a, +0xcf7d,0x4b0b,0x5aca,0x5ac9,0x5ac9,0x52c9,0x4269,0x31e7,0x3a08,0x4229,0x4249,0x31e8,0x93d0,0xd77d,0x2a8b,0x29e7,0x3a08,0x41e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31e7,0x41e8,0x4208,0x3a28,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x4228,0x3a28,0x3a49,0x3a29,0x3a28,0x422a,0x3a29,0x3a49,0x4229,0x4249,0x3a49,0x4249,0x4269,0x4a6a,0x39e9,0xa492,0x8c72,0xe77d,0xdf3c,0xe75d,0xe75d,0xdf5c,0xe75d,0xe73c,0xe7be,0x7cd3,0x4a2a,0x7b6e,0x732d,0x9cd3,0xefbe,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xefff,0xad97,0xb67a,0x424a,0x52cb,0x52ab,0x8baf,0xdf3c,0xd69a,0xefbe,0xe79d,0xe77d,0xef9d,0xef7d,0xe79d,0xe79d,0xe7be,0x634d,0xef7d,0xf7ff,0xa5d7,0xad55,0xefbd,0xef9e,0xefbe,0xef9e,0xef9e,0xef9e,0xefbe,0xd6fc,0xc659,0x536e,0x5b2d,0x5aed,0x5b0c,0x83af,0xdefb,0xd6ba,0xe79e,0xefbe,0xefbd,0xef9e,0xef9e,0xefbe,0xefbe,0xd75d,0x6b8f,0x9cb2,0xa514,0x7c31,0x8431,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xef9e,0xef9e,0xd6dc,0xce7a,0x63af,0x5b2d,0x5b2d,0x5b0c,0x62eb,0xefbe,0xa555,0xefbe,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef9e,0xef7e,0xe79d,0xbe7a,0x3a08,0xf7be,0xe75d,0xe77d,0xe77d,0xef7e,0xef7e,0xe79d,0xe77d,0xef7d,0xf7de,0x7c10,0xa5d7,0x4aab,0x5acb,0x52ec,0x424a,0xdefb,0x8492,0xe79d,0xe77d,0xdf7d,0xe77d,0xe77d,0xef7d,0xe75d,0xe79e,0x94f5,0x7bae,0xce59,0x6bae,0x8c90,0xe75d,0xe75c,0xe75c,0xe73c,0xdf3c,0xe73c,0xdf3c,0xdf7c,0x8472,0xc69a,0x2967,0x5249,0x3a49,0x2987,0xc638,0x7bef,0xe75c,0xd71b,0xd71b,0xdf1c,0xdf1b,0xd71c,0xdf1c,0xdf5e,0x6b6e,0xe79d,0xd71b,0xcebc,0x2126,0x9d53,0xd73b,0xd6fb,0xdefb,0xd6fb,0xcedb,0xceba,0xd71c,0x7c30,0xce3a,0x3188,0x39e9,0x39c7,0x3125,0x8c4f,0x52cc,0xceda,0xce99,0xc699,0xc69a,0xc6ba,0xc69a,0xd6fc,0x2967,0xadf6,0xd6dc,0x4a4a,0x636d,0xcedb,0x8473,0x4a8a,0xbe58,0xbe58,0xbe58,0xbe79,0xbe38,0xbe38,0x7c11,0xc6ba,0x2926,0x29a6,0x2986,0x2905,0x52a9,0x4249,0xbe58,0xb618,0xb618,0xb618,0xb618,0xb5f8,0xb5d7,0xb5f7,0xadf7,0xadf7,0xb5d7,0xb5f7,0xadd7,0xb5d7,0xadd7,0xadd6,0xadb6,0xa5b6,0xadd7,0xadb6,0xa5b6,0x7c11,0xadd7,0x3127,0x2125,0x1904,0x1905,0x1905,0x0021,0x9554,0x5b4d,0xadb6,0x9d55,0xa535,0x9d75,0x9d55,0x9d34,0x9d34,0x9d14,0x9d35,0x9d35,0x4269,0x9d34,0x9cf4,0x9514,0x9514,0x9514,0x94f3,0x9514,0x8d14,0x8cf3,0xad76,0x52cc,0x8411,0x18a3,0x08a3,0x5b4c,0xa597,0x1023,0x18e4,0x2104,0x2965,0x1104,0x21c5,0x4a88,0x52ea,0x5aea,0x630a, +0xd77d,0x4b0c,0x5aca,0x62c9,0x52c9,0x52c9,0x4a69,0x31c7,0x3a08,0x3a28,0x3a49,0x29e8,0x9410,0xdf7d,0x2a6b,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39c7,0x39e7,0x3207,0x31e8,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x4229,0x3a28,0x3a28,0x3208,0x3a29,0x4228,0x3a49,0x3a09,0x3a29,0x3a08,0x4249,0x3a49,0x3a49,0x3a49,0x4a69,0x39e9,0x9c71,0x94f3,0xe73c,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xdf5c,0xdf5d,0xd73c,0xcf1b,0xcf3c,0xcf3c,0xdf3c,0xefbe,0xe75c,0xe75d,0xe77d,0xe75d,0xe77d,0xe79d,0xefff,0xad97,0xb639,0x422a,0x52cb,0x4acc,0x834d,0xdf5c,0xce99,0xe79d,0xe77c,0xe77d,0xe79d,0xe77d,0xe77d,0xe79e,0xcefb,0xb5f6,0xf7de,0xe79e,0xefdf,0xa595,0xe79d,0xefbe,0xefbe,0xef9e,0xefbe,0xe79e,0xf79e,0xc6db,0xc67a,0x5b4f,0x5b0d,0x5b0c,0x52ec,0x7b4e,0xdf1c,0xd6ba,0xef9e,0xefbe,0xefbe,0xefbe,0xef9e,0xefbe,0xefbe,0xf7de,0xefff,0xb69a,0xa5b6,0xceda,0xffff,0xefbe,0xefbe,0xef9e,0xef9e,0xefbe,0xf7bf,0xefbe,0xc69a,0xcebb,0x638f,0x530c,0x5b4d,0x5b0c,0x5aca,0xf7be,0xad75,0xefde,0xef9e,0xef9e,0xefbe,0xefbe,0xefbe,0xefbe,0xef9d,0xe79d,0xdfbe,0x9d35,0xefbe,0xe79d,0xe79d,0xef9d,0xef7d,0xe77d,0xef7d,0xef9e,0xef7d,0xf7be,0x8451,0xadb7,0x426a,0x52cb,0x52cb,0x52ab,0xd6da,0x94d3,0xf7be,0xe77d,0xe75d,0xe75c,0xe75c,0xe75d,0xe75c,0xe77d,0xa5b7,0x5b4e,0x5b4d,0x8cd3,0xf7ff,0xdf3c,0xdf5c,0xdf3c,0xdf3c,0xdf3c,0xdf1c,0xd73c,0xdf5c,0x8472,0xc67a,0x2968,0x4a6a,0x3a09,0x2986,0xc679,0x6b8e,0xdf5c,0xd71c,0xd71b,0xd6fb,0xdefc,0xd6db,0xd6fb,0xd6fc,0x9554,0xdf5c,0xd6fa,0xd6fb,0xb618,0xbe78,0xcefa,0xcefb,0xd6fb,0xd6db,0xcedb,0xcedb,0xdf1c,0x7bf1,0xc5f9,0x3187,0x39e8,0x31c8,0x2925,0x7c4f,0x634d,0xceba,0xc679,0xce79,0xce99,0xce99,0xc67a,0xc69a,0x9535,0xbe58,0xbe79,0xa5d7,0xadf7,0xce9a,0xa5d7,0x9555,0xbe58,0xc659,0xc638,0xc658,0xbe58,0xc679,0x7bf0,0xc69a,0x2905,0x2986,0x3186,0x3145,0x4248,0x4a8b,0xbe18,0xb618,0xb5f8,0xb617,0xbdf7,0xb617,0xb5f7,0xbdf7,0xb5f8,0xb5f7,0xadd7,0xadd7,0xadf7,0xb5f7,0xb5f7,0xadd7,0xa5b6,0xa5b7,0xadb6,0xa5b6,0xb637,0x7bf0,0xadf7,0x2106,0x2125,0x1904,0x1124,0x1124,0x0041,0x8cf3,0x52aa,0xb5d6,0xad76,0xa555,0xa555,0xa555,0xa575,0x9d54,0x9d55,0xa555,0x9d34,0xa575,0x9d34,0x9514,0x9d14,0x9d35,0x9d74,0x9d14,0x9d34,0x9d15,0xa514,0xa555,0x52ec,0x83d1,0x10a3,0x10a3,0x536c,0xad97,0x1043,0x1904,0x1124,0x2945,0x20e3,0x29e6,0x4aa8,0x5b09,0x5aea,0x5b0a, +0xcf5c,0x42eb,0x52c9,0x5ae9,0x52ca,0x52c9,0x4a69,0x31a7,0x4229,0x3a49,0x3a29,0x3a08,0x9410,0xd77d,0x2229,0x31e8,0x31e9,0x39e8,0x39e7,0x3208,0x3209,0x31c8,0x31c8,0x39c8,0x3a08,0x39e8,0x3a08,0x3208,0x3228,0x31e8,0x4208,0x4a29,0x4249,0x3a28,0x3a29,0x4209,0x4209,0x4a28,0x3a28,0x3a29,0x3a48,0x4249,0x4249,0x4249,0x3a28,0x4229,0x4229,0x836e,0xbe79,0xa555,0xd69a,0xd69a,0xd69a,0xd6ba,0xd6ba,0xd6fa,0xdefb,0xe71c,0xe71c,0xdefb,0xe6fb,0xe71b,0xdf1b,0xdf1c,0xdf1c,0xdf1b,0xe71b,0xe73c,0xdf1c,0x94f4,0xcebb,0x5baf,0x4a8a,0x4aab,0x4aab,0x62cc,0xef7d,0xbe18,0xef9d,0xf7de,0xf7bd,0xf7de,0xf7fe,0xffff,0xffff,0xf7df,0xffff,0xffff,0xf7df,0xffff,0xffff,0xf7ff,0xffff,0xffdf,0xffff,0xffff,0xffdf,0xffdf,0xa556,0xef7e,0x4aec,0x632d,0x5aec,0x630d,0x7aec,0xf7de,0xc638,0xf7df,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa5d6,0xefbe,0x636e,0x5b2c,0x632d,0x632d,0x5aab,0xef5c,0xb638,0xef7d,0xffff,0xffff,0xffff,0xf7de,0xf7fe,0xf7fe,0xf7de,0xf7df,0xffff,0xffff,0xffdf,0xf7fe,0xfffe,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd679,0xbe38,0x9d14,0x4aab,0x5b0d,0x52eb,0x52ab,0xc5f7,0xb5b7,0xdf1b,0xffbe,0xf7be,0xf7de,0xf7de,0xf7df,0xf7be,0xffde,0xffff,0xf7ff,0xf7ff,0xf7df,0xf79e,0xef9e,0xf79e,0xef7d,0xef9d,0xef9d,0xef9d,0xef9d,0xe73c,0x9d14,0xc65a,0x31c8,0x4a6a,0x426a,0x39a7,0xc5f7,0x7c50,0xdefb,0xe73c,0xe75c,0xe75d,0xe75c,0xef9d,0xef9d,0xe75d,0xdf5c,0xdf3c,0xdefb,0xdf1b,0xe73b,0xdf3b,0xdf1b,0xe73c,0xdf1b,0xdf1b,0xd6fb,0xd6fb,0xce79,0x94f4,0xb557,0x31a7,0x31c7,0x31e7,0x2987,0x6b8d,0xa515,0xad34,0xdefb,0xdf3c,0xdf1b,0xdf3b,0xdefb,0xdedb,0xdefb,0xdefb,0xdf1b,0xdefb,0xd6db,0xd6db,0xce9a,0xce7a,0xce9a,0xceba,0xce99,0xce59,0xce59,0xc5f7,0x73af,0xce7b,0x18c5,0x3186,0x2945,0x2165,0x2986,0xad55,0x736e,0xbdf7,0xc658,0xbe37,0xbdd7,0xb5f7,0xbdf7,0xbdb6,0xb5f7,0xb5d7,0xad96,0xb5b7,0xb5b7,0xad95,0x9cf3,0xa535,0x94f4,0x9d14,0xa514,0x9cf3,0x8410,0x6b6e,0xad36,0x18c4,0x1924,0x1104,0x1904,0x1925,0x1082,0x5b2b,0x6b6e,0x424a,0x73af,0x736d,0x6b4d,0x6b4d,0x638d,0x634d,0x634d,0x634d,0x630c,0x528a,0x5aaa,0x5aec,0x4a69,0x528a,0x52aa,0x4a8a,0x4a8a,0x528a,0x4269,0x42aa,0x8451,0x3968,0x08a4,0x10c3,0x532a,0xa597,0x1043,0x1904,0x1124,0x2125,0x20c3,0x3185,0x4a87,0x52e9,0x5aea,0x5b0a, +0xcf5c,0x430c,0x52c9,0x5ac9,0x52ca,0x52ca,0x4a49,0x3186,0x4a49,0x4249,0x3a29,0x3a49,0x9c10,0xd77c,0x224a,0x31c7,0x3a09,0x3208,0x31e7,0x3208,0x39e8,0x31e7,0x31c8,0x31e8,0x39e8,0x3a07,0x3208,0x31e8,0x3a08,0x3a08,0x3a28,0x4229,0x4228,0x3a08,0x3a29,0x3a08,0x4209,0x41e7,0x3a48,0x3a08,0x4229,0x4228,0x4a49,0x4208,0x4208,0x4a4a,0x426a,0x526a,0xa4b3,0xc679,0xb5d6,0xad96,0xad96,0xadb6,0xb5d8,0xadd7,0xadd7,0xadb7,0xad97,0xadb7,0xb5f7,0xbe17,0xbdf7,0xbe18,0xbe18,0xb618,0xbe18,0xbe58,0xbe58,0xdf1c,0xb5d7,0x3a29,0x4aab,0x52cb,0x52cb,0x4a6a,0xb4d3,0xe75d,0xbe38,0xc638,0xbdf7,0xbdf7,0xbdf7,0xc618,0xb617,0xbdf7,0xbdf7,0xc638,0xbdf8,0xbe18,0xb5b7,0xbdf8,0xbe18,0xbdf7,0xbe18,0xbdf8,0xbe18,0xbe18,0xef5d,0xad97,0x4acb,0x630c,0x62ec,0x630c,0x5aab,0xb535,0xe73c,0xb5f7,0xb5b7,0xb5d7,0xb5d7,0xadb6,0xadb6,0xa596,0xad96,0xb5b6,0xb596,0xb5b6,0xb5b6,0xadb6,0xad96,0xad96,0xb5b6,0xbdd7,0xbdb7,0xbdf7,0xadb6,0xdf3c,0xc618,0x5b0c,0x5b0c,0x630d,0x5b2d,0x52ab,0x7bae,0xf7be,0xb5f7,0xad55,0xb575,0xb596,0xb596,0xb5b7,0xb5b6,0xb595,0xb596,0xbdb7,0xbd96,0xad96,0xad75,0xa535,0xa556,0xa555,0x9d55,0x9d14,0x94d4,0x9cf4,0xbdf7,0xd6bb,0x5aab,0x5acb,0x5acb,0x5aeb,0x4acb,0x52cb,0xdedb,0xbe17,0xad96,0xad96,0xad96,0xa5b6,0xa596,0xa575,0xa555,0x9d35,0xa554,0xa554,0xa555,0xa555,0x9d14,0xa555,0xad55,0xa534,0x9d34,0x94f4,0xa534,0xa595,0xe75d,0x632e,0x4229,0x4a49,0x4249,0x4a4a,0x5269,0xdf7c,0xb5d7,0xad35,0xa514,0xa514,0xa534,0xad35,0xa514,0x9cd4,0x9d14,0x9cd4,0xa4f4,0x9cf3,0x9cf3,0x9d14,0x9514,0x94f4,0x94f4,0x9cf4,0x9cf4,0x94b2,0xad75,0xd69b,0x3147,0x41e7,0x39c7,0x31e7,0x31c8,0x31a6,0xce79,0xa535,0x8c92,0x84d3,0x84b3,0x7c30,0x7c51,0x8431,0x8431,0x7c30,0x8c71,0x8471,0x8c71,0x8450,0x8450,0x8470,0x8451,0x7c10,0x7c10,0x7c10,0x7430,0x8491,0xbdf8,0x524b,0x2146,0x2166,0x2145,0x2985,0x2104,0x8451,0xbdb7,0x7bd0,0x8431,0x7bef,0x7bf0,0x8410,0x83f0,0x8c72,0x73d0,0x73f0,0x7c11,0x7bf0,0x73af,0x7bf0,0x9491,0x7c51,0x8451,0x8c51,0x8410,0x740f,0x8492,0x9d14,0x3987,0x18c4,0x1905,0x1924,0x1904,0x1105,0x1904,0x18a2,0x736e,0x94f3,0x7c30,0x8430,0x8410,0x7bcf,0x73cf,0x73ae,0x7baf,0x8410,0x7c10,0x8471,0x8430,0x73cf,0x7c31,0x8471,0x8451,0x8430,0x83f0,0x8c31,0x8c71,0x8c93,0x522a,0x1063,0x1904,0x10c2,0x4b2a,0xadb7,0x1043,0x10e5,0x1925,0x1945,0x1905,0x2186,0x4288,0x52ea,0x5aea,0x530a, +0xcf5c,0x4b0b,0x4aa8,0x52c9,0x52c9,0x52a9,0x4a48,0x3186,0x4249,0x4249,0x3228,0x3209,0x9c31,0xcf3c,0x2a6a,0x31e7,0x4a29,0x41e8,0x3a08,0x3208,0x39e8,0x39e8,0x39e8,0x41e8,0x39e7,0x31e7,0x3208,0x31e8,0x3208,0x3a08,0x3a08,0x4228,0x4249,0x3a28,0x4229,0x4209,0x3a29,0x4249,0x3a49,0x4229,0x4229,0x3a49,0x4249,0x4229,0x4a49,0x4249,0x4229,0x424a,0x39c8,0x522a,0x526a,0x5a8a,0x62ab,0x5aab,0x62ab,0x62ec,0x6b0d,0x62ec,0x62cc,0x6aec,0x732d,0x732d,0x730d,0x734e,0x736e,0x6b2d,0x7b4d,0x736d,0x630c,0x4a6a,0x4a29,0x526a,0x528b,0x52aa,0x428b,0x4a8b,0x4a4a,0x732c,0xacf4,0xad14,0xacf4,0xad14,0xad35,0xb535,0xa514,0xad35,0xad55,0xa514,0xb535,0xa4f4,0xad35,0xad14,0xb534,0xbd55,0xad35,0xa4f4,0xb535,0xb515,0x6b4e,0x4aab,0x5b2c,0x530c,0x530c,0x52ec,0x530c,0x5a8a,0x83cf,0xc5b6,0xce37,0xc5f7,0xce38,0xc5f7,0xc617,0xce38,0xce18,0xc5f8,0xc5f8,0xc638,0xce59,0xd67a,0xdeba,0xd699,0xce58,0xce59,0xd6ba,0xd69a,0xc5f8,0x8c72,0x424a,0x6b0d,0x630c,0x52ec,0x5b2d,0x5b0c,0x52ab,0x5aab,0xacb3,0xbd55,0xbd76,0xbd76,0xbd96,0xbdb6,0xb534,0xb555,0xbd76,0xad35,0xad14,0xb575,0xa514,0xad14,0xa4f3,0xa4f3,0x9cf3,0xa514,0xad34,0xa4f4,0x8411,0x39e9,0x52ab,0x52cb,0x52aa,0x5aab,0x5aab,0x52cb,0x5269,0xad14,0xb576,0xb555,0xb596,0xb576,0xb576,0xad35,0xad55,0xbd96,0xb595,0xb596,0xb5b6,0xb596,0xad75,0xad55,0xad14,0xa534,0xad54,0xb595,0xad54,0x8c52,0x4a4a,0x3208,0x4249,0x4229,0x4249,0x4a29,0x4a29,0x41c7,0x83d0,0x9492,0x9cf3,0x9cf3,0x9cd3,0x94f3,0x9cf4,0x94b3,0x9472,0x9491,0x9471,0x8411,0x8c52,0x8c72,0x8c52,0x8c72,0x8c51,0x9451,0x9451,0x9471,0x7b0c,0x3987,0x2986,0x31e7,0x31c7,0x29c8,0x31a7,0x39c6,0x2944,0x736d,0x9c92,0x9c71,0x9451,0x9451,0x9450,0x8c30,0x9471,0x840f,0x8c10,0x8bf0,0x8bf0,0x83af,0x83ae,0x8bae,0x7b4d,0x734e,0x736e,0x736d,0x736d,0x62cb,0x3926,0x2925,0x2966,0x2166,0x2166,0x2966,0x3166,0x10c2,0x3166,0x5a8a,0x6b0c,0x6acb,0x5aaa,0x5aaa,0x5a6a,0x6249,0x5209,0x49c8,0x41c8,0x39c7,0x39a7,0x3986,0x3146,0x3925,0x2904,0x28e4,0x28e3,0x28e3,0x20c3,0x10a2,0x18e4,0x1904,0x20e4,0x1904,0x2105,0x18e4,0x2104,0x1924,0x1882,0x1841,0x1021,0x1021,0x1021,0x1020,0x1000,0x0821,0x0801,0x1001,0x0820,0x1021,0x0821,0x1021,0x1001,0x1021,0x1061,0x1042,0x1021,0x0801,0x0821,0x1062,0x18a3,0x18e4,0x18e4,0x10a2,0x4ae9,0xb5b7,0x1064,0x10e4,0x1904,0x2165,0x1905,0x29c5,0x4288,0x52ca,0x52ea,0x52ea, +0xcf7c,0x4aeb,0x52c9,0x5ac9,0x52a9,0x52ca,0x4a48,0x31a5,0x3a28,0x3a49,0x3a28,0x424a,0x9411,0xcf5c,0x2a4a,0x31e7,0x3a08,0x39e8,0x39e8,0x3208,0x39e7,0x39c8,0x31e8,0x39e8,0x31e8,0x31e8,0x31c7,0x3208,0x3208,0x3a08,0x3a09,0x3a08,0x4248,0x3208,0x3a08,0x3a29,0x3a29,0x4229,0x3a49,0x3a48,0x3a28,0x3a49,0x3a69,0x3a08,0x4228,0x4209,0x4249,0x4249,0x4249,0x424a,0x4249,0x424a,0x4249,0x3a6a,0x4229,0x422a,0x424a,0x424a,0x4a49,0x4229,0x4249,0x426a,0x3a4a,0x426a,0x4a69,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x428a,0x4aaa,0x4a8a,0x52ab,0x52ab,0x4aab,0x52ab,0x52cb,0x528b,0x524b,0x528b,0x52ab,0x426a,0x4a6a,0x528a,0x52ab,0x4a8b,0x4a6a,0x526b,0x528b,0x4a8b,0x528b,0x52ac,0x4a8a,0x4a6a,0x52ab,0x52aa,0x5acb,0x4a8a,0x52ec,0x632c,0x5b0c,0x5b0d,0x530b,0x5b0c,0x52eb,0x5aec,0x630d,0x5aab,0x52eb,0x4a8a,0x5b0c,0x5aeb,0x5acb,0x5aeb,0x630b,0x52cc,0x52ac,0x5acb,0x62ec,0x62cd,0x62cc,0x630c,0x5acb,0x52ed,0x42ac,0x4acc,0x52cb,0x5b0b,0x530c,0x4aeb,0x52eb,0x5b0c,0x5b0d,0x52ec,0x52eb,0x5aec,0x52cb,0x4aab,0x528b,0x4a8b,0x4a8b,0x52cb,0x528a,0x52cb,0x4aca,0x52ab,0x52cb,0x4a8a,0x4a8b,0x4a8b,0x4aab,0x52ca,0x4a8b,0x428a,0x528b,0x4a4a,0x4a6b,0x52ab,0x52ab,0x4aaa,0x4a6a,0x52cb,0x4a6a,0x52ab,0x528a,0x4249,0x4a2a,0x4a29,0x3a49,0x3a4a,0x4209,0x4229,0x4209,0x4229,0x424a,0x4208,0x41e8,0x41e8,0x4209,0x41e9,0x41e8,0x3a07,0x41e8,0x39e8,0x3208,0x31e8,0x424a,0x426a,0x4228,0x3a29,0x4249,0x4228,0x4249,0x3a28,0x3a09,0x31a7,0x31a6,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x39c8,0x31a7,0x31c7,0x29a7,0x3187,0x2967,0x3186,0x3166,0x3986,0x3186,0x29a7,0x2986,0x39e7,0x39e8,0x31c7,0x31e8,0x29c7,0x29a7,0x31a7,0x31a7,0x31c6,0x2985,0x2965,0x2965,0x3145,0x2945,0x2965,0x2145,0x2145,0x2944,0x2124,0x2105,0x2105,0x3125,0x2104,0x2124,0x2945,0x3125,0x2925,0x2126,0x2125,0x2944,0x3146,0x3166,0x2186,0x2186,0x2166,0x2166,0x2165,0x2945,0x2105,0x2105,0x1904,0x1904,0x10e3,0x2105,0x2104,0x2124,0x2105,0x1924,0x1944,0x2124,0x2104,0x1924,0x2124,0x1924,0x1924,0x1904,0x1905,0x2905,0x1904,0x1924,0x2125,0x18e4,0x18e5,0x20e3,0x18e4,0x18e4,0x2104,0x18e5,0x1904,0x2104,0x1904,0x10e4,0x1104,0x18e4,0x18e4,0x1103,0x18e4,0x18e5,0x18c4,0x10e4,0x10e4,0x18c3,0x18c3,0x18c3,0x18e4,0x10e3,0x18e3,0x20e3,0x10e2,0x18e3,0x10c4,0x18c4,0x10e3,0x18a2,0x3a88,0xad96,0x1064,0x18e4,0x1104,0x2125,0x18e4,0x2185,0x4a68,0x52ca,0x5aea,0x5aea, +0xcf5c,0x42ca,0x52c9,0x5ac9,0x52c9,0x52c9,0x3a48,0x29a6,0x3a48,0x3a69,0x3229,0x3a09,0x9c31,0xcf5d,0x3229,0x31e7,0x3a08,0x39e8,0x39e8,0x3208,0x3207,0x3a08,0x39c8,0x31c7,0x3208,0x3a08,0x39e8,0x39e8,0x3208,0x3a08,0x3a08,0x31e7,0x4228,0x3229,0x3a49,0x3a28,0x3209,0x39e7,0x3a28,0x3a49,0x4249,0x3a29,0x3a28,0x3a49,0x3a49,0x4229,0x4249,0x4a49,0x4269,0x3a49,0x4a69,0x424a,0x4a6a,0x4a6a,0x4a4a,0x526b,0x4a6a,0x4269,0x426a,0x426a,0x4a8a,0x4aab,0x4aab,0x4aab,0x4aab,0x4aaa,0x528b,0x528a,0x4aab,0x4aaa,0x528a,0x528a,0x3a6a,0x4aab,0x4aab,0x4a8b,0x52ab,0x5aac,0x52ac,0x5acc,0x52ab,0x52ec,0x52cc,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x52ac,0x52cc,0x4acc,0x52cc,0x52cc,0x4acb,0x4aeb,0x52ec,0x52eb,0x52cc,0x52eb,0x5aeb,0x5aec,0x5aec,0x52ec,0x5aec,0x52eb,0x52ec,0x5b2c,0x532c,0x5aec,0x632d,0x5b0d,0x5b2c,0x630d,0x5b0c,0x530c,0x5b2d,0x5b2c,0x5b0c,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b2d,0x5b0c,0x5b0d,0x630c,0x5aec,0x5b2c,0x530c,0x530c,0x530c,0x530c,0x52eb,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x530c,0x5b0c,0x5aec,0x62eb,0x5aeb,0x5b0c,0x5aec,0x52ec,0x52ec,0x52cc,0x52ec,0x52ec,0x52cb,0x52cc,0x52ac,0x52cb,0x5acc,0x52cc,0x52ab,0x528b,0x4aab,0x4aab,0x528b,0x426a,0x4a8b,0x4aab,0x5acb,0x4aaa,0x4a8a,0x4aaa,0x4aaa,0x528b,0x528a,0x4a8a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x428a,0x4a8a,0x4a8a,0x4a6a,0x3a4a,0x3a49,0x4269,0x4249,0x3a49,0x3a69,0x4208,0x4229,0x3a49,0x3a29,0x3a29,0x4229,0x39e9,0x3a29,0x3a28,0x39e8,0x4a29,0x3a09,0x3228,0x3208,0x3a08,0x39e8,0x3a28,0x3a08,0x4207,0x3a08,0x3a08,0x3a08,0x31e7,0x3a08,0x31e7,0x31c7,0x3208,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x31a7,0x39a7,0x31c6,0x39c6,0x31a7,0x3186,0x31a7,0x31a7,0x2987,0x3186,0x2987,0x3187,0x3187,0x29a7,0x2986,0x3186,0x3187,0x3186,0x2986,0x2966,0x2946,0x3166,0x2966,0x2965,0x2965,0x2166,0x2966,0x2945,0x2944,0x2165,0x2965,0x1945,0x2945,0x21a6,0x2145,0x2126,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2125,0x2125,0x2145,0x2124,0x1944,0x1924,0x2105,0x20e4,0x2104,0x1924,0x1904,0x20e5,0x2104,0x1924,0x18e4,0x10e4,0x10e4,0x1104,0x18e5,0x18e4,0x18c4,0x18c5,0x10e4,0x0904,0x1104,0x10e3,0x1903,0x18e3,0x18c4,0x1904,0x18c4,0x10e4,0x10e2,0x18c3,0x18a3,0x10e3,0x08e3,0x08c3,0x20e4,0x08c3,0x10c3,0x10e3,0x10a4,0x10c3,0x18a2,0x3a88,0xad96,0x1085,0x10e3,0x1904,0x2145,0x18e5,0x2985,0x4267,0x52c9,0x5aca,0x5aea, +0xcf7c,0x42cb,0x52c9,0x52c9,0x52ca,0x5ae9,0x4229,0x2985,0x3a29,0x4248,0x3a49,0x4209,0xa472,0xcf5c,0x2a09,0x31c7,0x4208,0x31e8,0x39e8,0x31c7,0x31e7,0x39e7,0x31e8,0x39e7,0x3a08,0x3a08,0x31e7,0x29e7,0x31e7,0x3a08,0x3208,0x2a08,0x3a08,0x3a29,0x39e9,0x3a49,0x3a49,0x3a28,0x3a28,0x3a29,0x4a29,0x4229,0x4229,0x4228,0x4a29,0x4a29,0x4269,0x4269,0x3a49,0x3a09,0x4a49,0x4269,0x4a6a,0x4a2a,0x4a4a,0x526b,0x4a49,0x4a49,0x4249,0x3a6a,0x4a6a,0x4a8b,0x4a8a,0x4a4b,0x428b,0x428a,0x4aab,0x4a8a,0x528a,0x4aaa,0x4a6a,0x4a8a,0x4a8b,0x4a8a,0x4aab,0x4acb,0x528a,0x528a,0x52ab,0x5acb,0x528b,0x52cb,0x52ab,0x52ab,0x4aab,0x52cb,0x52cb,0x52cb,0x4acb,0x4aab,0x4acc,0x4acb,0x52eb,0x530c,0x52cb,0x52cc,0x52eb,0x52cb,0x4aeb,0x4acb,0x52ec,0x5aec,0x5aec,0x5aec,0x52ec,0x5b0c,0x52ec,0x4aec,0x52cc,0x5b2d,0x530d,0x530c,0x5b2c,0x632d,0x5b2d,0x52ec,0x5b0d,0x5b2c,0x5b0c,0x5aed,0x52ec,0x5aec,0x5b0c,0x52ab,0x5acc,0x52ec,0x530c,0x530c,0x52ec,0x530c,0x5b2c,0x630c,0x52ec,0x52ec,0x630c,0x5b0c,0x5b0c,0x630d,0x5b0c,0x5b0c,0x52ec,0x5b2c,0x5aec,0x5b0d,0x52ec,0x52ac,0x52cc,0x5aac,0x4aab,0x4acb,0x52cb,0x52ac,0x52ab,0x52cb,0x4a8b,0x4aab,0x52ab,0x4a8a,0x4aab,0x52ab,0x4a8b,0x4aaa,0x52aa,0x52cb,0x528b,0x4aab,0x4a8a,0x52cb,0x52ab,0x526a,0x4a8a,0x42a9,0x4a8a,0x4aaa,0x4aaa,0x4a8a,0x426a,0x428a,0x426a,0x4a8a,0x428a,0x4229,0x3a4a,0x4249,0x4229,0x4249,0x4249,0x4249,0x4249,0x424a,0x4249,0x4249,0x4249,0x3a29,0x4229,0x4229,0x4229,0x3a08,0x4a28,0x3a08,0x3a28,0x3a08,0x39e8,0x4229,0x4208,0x31c8,0x3a07,0x3a08,0x39e8,0x39a7,0x31e7,0x31c7,0x39e7,0x39e7,0x31e8,0x31e8,0x29c7,0x29a6,0x31c7,0x31c8,0x39a8,0x39c7,0x31a7,0x31c7,0x29c6,0x29a7,0x3186,0x3186,0x31a7,0x2986,0x3186,0x2987,0x31c7,0x31a6,0x3187,0x3186,0x2986,0x3185,0x29a5,0x2186,0x2966,0x3186,0x2986,0x2966,0x2946,0x2946,0x2165,0x2165,0x2165,0x2945,0x2145,0x2145,0x2125,0x1925,0x1945,0x2146,0x2145,0x2125,0x1925,0x1925,0x1925,0x2125,0x2125,0x1925,0x1925,0x2925,0x2104,0x2104,0x2125,0x1905,0x2104,0x1903,0x1904,0x18e4,0x2105,0x20e4,0x1103,0x1104,0x1905,0x1924,0x1903,0x1904,0x10e4,0x18e5,0x10e4,0x18e4,0x18e4,0x20e4,0x20c3,0x20c3,0x10c4,0x18c3,0x18e3,0x18e3,0x10e3,0x08c3,0x18e4,0x10e3,0x10e3,0x10c2,0x10e3,0x10e3,0x18c4,0x18c3,0x10c4,0x10a4,0x18c3,0x1083,0x3a88,0xb5f7,0x1084,0x18e3,0x1904,0x2165,0x1925,0x2164,0x4a67,0x52c9,0x5ac9,0x5aea, +0xcf5c,0x4aca,0x52c9,0x52ca,0x52ca,0x52a9,0x3a48,0x2986,0x422a,0x4249,0x3a49,0x3a09,0xa492,0xc73c,0x2a09,0x3a08,0x4229,0x39e8,0x31e8,0x39c8,0x3a08,0x31e7,0x3207,0x39e7,0x3208,0x3a08,0x31c7,0x31e8,0x39e8,0x31e8,0x3207,0x3208,0x3a08,0x3a08,0x31e8,0x3a48,0x3a28,0x3a29,0x3a49,0x3a28,0x4229,0x3229,0x3a28,0x4248,0x4a29,0x4a49,0x4249,0x3a29,0x4a49,0x4a6a,0x4a49,0x4a69,0x424a,0x4a6a,0x426a,0x3a69,0x426a,0x424a,0x3a49,0x4289,0x426a,0x4a6a,0x4a6a,0x4a8b,0x4a8b,0x4a8b,0x428a,0x4a8a,0x4a69,0x528a,0x528a,0x4a8b,0x4a8a,0x4a8a,0x4aaa,0x52ab,0x52ab,0x528a,0x5aab,0x52cb,0x52cb,0x52cb,0x52cb,0x52aa,0x52ab,0x52ac,0x52cb,0x52cb,0x52cb,0x4aac,0x52ac,0x4acb,0x52eb,0x52cb,0x52cb,0x5aec,0x5acc,0x52cc,0x4aeb,0x4aeb,0x530b,0x5aeb,0x5aec,0x52ec,0x52ec,0x52ec,0x52ab,0x52cb,0x5aeb,0x530b,0x52ec,0x5b0c,0x632c,0x5aec,0x630c,0x5aed,0x52cc,0x530c,0x5b2d,0x52ec,0x5aec,0x5aec,0x52ec,0x5acd,0x52ec,0x530d,0x5b0d,0x630c,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x5aec,0x5b0d,0x5b0c,0x5aec,0x5b0c,0x52ec,0x52ec,0x5b0c,0x5b0d,0x5b0d,0x5aec,0x52ec,0x4aec,0x530c,0x52ab,0x4acb,0x4aab,0x52cc,0x52cb,0x52ab,0x4a8a,0x52cb,0x52ab,0x528b,0x528b,0x528b,0x4a6b,0x4a6b,0x52ab,0x4a8a,0x52ab,0x52ab,0x4a8b,0x52aa,0x52aa,0x4a8b,0x428b,0x4a6a,0x528a,0x4aaa,0x4a8a,0x528b,0x52ab,0x4a6a,0x428a,0x4a6a,0x4a6a,0x426a,0x426a,0x4a49,0x424a,0x4a69,0x3a49,0x3a49,0x4249,0x4249,0x4269,0x424a,0x3a48,0x4249,0x3a08,0x4229,0x4209,0x3a08,0x3a09,0x3a29,0x4228,0x3a28,0x3208,0x3208,0x3a08,0x3a08,0x3a08,0x39e9,0x39e7,0x4208,0x39e8,0x39e8,0x31e8,0x39e8,0x39c8,0x39c7,0x39e7,0x29a7,0x31a7,0x31e7,0x31c7,0x31c7,0x3166,0x31c7,0x2986,0x39a6,0x29a6,0x2986,0x31a6,0x39a7,0x31a7,0x3187,0x31c7,0x2987,0x3187,0x31a7,0x2166,0x3186,0x3166,0x2986,0x2986,0x2986,0x2966,0x2985,0x2186,0x2165,0x2146,0x2146,0x1945,0x2165,0x2145,0x2145,0x2146,0x2145,0x2145,0x2926,0x2945,0x2125,0x2145,0x2125,0x2945,0x2146,0x2145,0x2945,0x2125,0x1925,0x1925,0x2125,0x1925,0x2105,0x2104,0x1925,0x2104,0x1905,0x1904,0x1104,0x1903,0x10c3,0x18e4,0x1104,0x10e4,0x1104,0x18e4,0x20e3,0x1104,0x18e4,0x0904,0x18e4,0x18e4,0x1903,0x18e3,0x18e4,0x18c3,0x18e3,0x10c2,0x08e3,0x08e3,0x10a3,0x18c4,0x18c4,0x20c4,0x18c4,0x08c3,0x10c3,0x18c3,0x18e3,0x10c4,0x10c3,0x10e3,0x08a3,0x3a48,0xadf7,0x1083,0x18e4,0x1104,0x2145,0x2125,0x2164,0x4a88,0x5ae9,0x52ca,0x52ca, +0xc73c,0x42eb,0x52c9,0x5ac9,0x52c9,0x52c9,0x3a28,0x2986,0x424a,0x3a49,0x3249,0x31c8,0xbd35,0xbf1c,0x29e9,0x39e7,0x4208,0x39e8,0x39e8,0x39e8,0x3a07,0x3207,0x3207,0x39e7,0x3208,0x3a08,0x31c7,0x3a07,0x3a07,0x3a08,0x3207,0x3a28,0x4229,0x39e8,0x3a08,0x3228,0x3a29,0x4a4a,0x3a49,0x3228,0x4229,0x4229,0x4228,0x4249,0x4a29,0x4229,0x4249,0x4269,0x41e8,0x3a29,0x4269,0x4a6a,0x424a,0x4a8a,0x4249,0x3228,0x4228,0x4249,0x4269,0x4269,0x4269,0x424a,0x426a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x526a,0x52aa,0x4a8a,0x4a8a,0x4aab,0x4aaa,0x528a,0x528a,0x52aa,0x4a8a,0x52ab,0x52ab,0x52ab,0x52ab,0x528b,0x4a8b,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528b,0x52ab,0x52ab,0x52eb,0x52ab,0x5acc,0x52cb,0x52cc,0x4acb,0x52ec,0x5b0c,0x5b0c,0x5aec,0x5b0c,0x52eb,0x5aeb,0x52cc,0x4acc,0x4aeb,0x4b0b,0x52ec,0x52cc,0x5aec,0x530c,0x5b0b,0x5b0c,0x632d,0x532c,0x530c,0x5b0c,0x5aec,0x52cc,0x5aec,0x5b0c,0x5b0c,0x52ec,0x52ec,0x5aec,0x52ec,0x52ec,0x5aec,0x5aec,0x62ec,0x5b0c,0x636d,0x5b4c,0x532c,0x5b0c,0x630c,0x6b2d,0x530c,0x4b0c,0x5b0c,0x630c,0x5acc,0x52ab,0x4a6a,0x4aab,0x52ed,0x52ed,0x52cb,0x5acc,0x5acc,0x52eb,0x4acb,0x4aab,0x52ab,0x52ab,0x52ab,0x4a6a,0x52ab,0x528a,0x52cb,0x4aaa,0x4a6a,0x4aaa,0x4a8a,0x4a8b,0x4a6b,0x4a6a,0x4a8a,0x42aa,0x4a8a,0x528b,0x4a8b,0x4a8b,0x4a89,0x4a8a,0x4a69,0x4a49,0x4a69,0x4249,0x422a,0x3a69,0x3a69,0x3a49,0x4269,0x4249,0x4249,0x4248,0x3a29,0x3a28,0x4228,0x4208,0x3a29,0x3a29,0x3a28,0x3a08,0x3a28,0x3a29,0x3a08,0x3a28,0x3a08,0x3a28,0x3208,0x39e8,0x41c8,0x31a8,0x39e8,0x39e7,0x41e8,0x41e8,0x39a7,0x3a07,0x39c7,0x39a7,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x31a7,0x2987,0x3186,0x29a6,0x31a7,0x29a6,0x31a6,0x2986,0x3146,0x29a7,0x31a7,0x31a6,0x31a6,0x3186,0x3186,0x2186,0x2966,0x2186,0x2986,0x2966,0x3186,0x2145,0x1985,0x2166,0x2946,0x2946,0x2166,0x2945,0x1965,0x2145,0x2146,0x2145,0x2945,0x2165,0x2945,0x2925,0x2145,0x2105,0x2125,0x2945,0x2125,0x2125,0x2125,0x2125,0x2925,0x2924,0x2105,0x1925,0x2104,0x1903,0x1904,0x1104,0x1924,0x1904,0x18e4,0x10e5,0x18e4,0x10e3,0x10e4,0x18e4,0x18e4,0x18c4,0x10e3,0x1103,0x10e5,0x18c4,0x10e3,0x10e3,0x10c5,0x10c3,0x18e3,0x08e3,0x10e4,0x08c3,0x10a3,0x10a4,0x18c3,0x20c3,0x18c3,0x08c3,0x10c3,0x10c3,0x10e3,0x08e4,0x08e3,0x18e3,0x10a3,0x3206,0xadb7,0x1064,0x18e3,0x2124,0x1945,0x1124,0x2164,0x4247,0x52c9,0x5aca,0x5aca, +0xcf3b,0x42cb,0x52ea,0x4ac9,0x5ac9,0x5aa9,0x3a28,0x29c7,0x3a48,0x3a49,0x3229,0x31c8,0xa4b2,0xbf1b,0x29c9,0x39e7,0x39e7,0x29e7,0x3208,0x31e7,0x31e8,0x31e7,0x3207,0x3a08,0x31e8,0x3a08,0x39e8,0x3208,0x3208,0x39e8,0x31e7,0x31e8,0x4208,0x4228,0x4229,0x3a28,0x3a29,0x4208,0x4249,0x3229,0x4229,0x3a28,0x3a08,0x4229,0x4228,0x3a29,0x4269,0x4249,0x3a29,0x3a49,0x4269,0x4a69,0x4249,0x4249,0x4269,0x426a,0x4a48,0x4228,0x4269,0x3a49,0x3a49,0x426a,0x426a,0x4249,0x3a69,0x528a,0x4a6a,0x4269,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4a6a,0x4a89,0x4a8a,0x4aaa,0x528a,0x4aaa,0x4aab,0x528b,0x52ab,0x52cb,0x52cb,0x52cb,0x4aab,0x4aab,0x52ac,0x52ab,0x4acb,0x4acb,0x4aca,0x52ab,0x52cb,0x52cb,0x52cb,0x5aab,0x52cb,0x4acc,0x4acb,0x5b0b,0x5aec,0x52ec,0x52eb,0x5aec,0x52cb,0x5aec,0x530c,0x4aec,0x52eb,0x52eb,0x5aec,0x52ec,0x52cb,0x5b0c,0x52ec,0x52ec,0x530c,0x52eb,0x52cc,0x52cc,0x530c,0x5b0c,0x52ec,0x52cb,0x5aed,0x52cb,0x52cb,0x5b0c,0x52ec,0x52ec,0x5aec,0x5aec,0x5b0d,0x5acb,0x630c,0x5b0c,0x52ec,0x632d,0x52ec,0x52ec,0x5b0c,0x52ec,0x5acb,0x5aec,0x52cc,0x5aec,0x5aec,0x52cc,0x52cc,0x4aab,0x52ab,0x5aeb,0x52aa,0x52ab,0x52ab,0x4acb,0x4a8a,0x52ab,0x52ab,0x528a,0x528b,0x528b,0x526a,0x426a,0x4aaa,0x4a8a,0x42aa,0x4a6a,0x424a,0x424a,0x4269,0x4a8b,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x426a,0x424a,0x4a69,0x426a,0x424a,0x3a4a,0x4249,0x4249,0x426a,0x4249,0x4249,0x3a48,0x4248,0x4229,0x3a28,0x4228,0x4209,0x3a29,0x3a29,0x4229,0x3a08,0x4249,0x3a08,0x3a08,0x31e8,0x39e8,0x39e8,0x3208,0x31e8,0x39e8,0x31e8,0x31e8,0x4208,0x3228,0x3a08,0x39e8,0x31e7,0x3208,0x39c7,0x29c6,0x31c7,0x39a7,0x31a6,0x29c7,0x29a7,0x31a7,0x3987,0x3186,0x2987,0x2986,0x2986,0x21a6,0x29a6,0x29a6,0x3186,0x2966,0x3187,0x2186,0x2186,0x1986,0x2186,0x1986,0x2186,0x2166,0x3166,0x1985,0x2186,0x2966,0x2965,0x2966,0x2945,0x3145,0x1965,0x2145,0x2945,0x2145,0x2145,0x1945,0x2145,0x2125,0x2125,0x1925,0x2125,0x1925,0x2926,0x1925,0x2125,0x2124,0x2105,0x2124,0x1904,0x1905,0x2105,0x2104,0x18e3,0x1104,0x1904,0x2104,0x18e4,0x1104,0x1904,0x1103,0x1104,0x18e4,0x10e4,0x18e3,0x1903,0x0904,0x1904,0x10e4,0x10c4,0x10e4,0x10e4,0x10c3,0x18e3,0x08e3,0x1904,0x18c3,0x10c3,0x10e3,0x18c3,0x18e3,0x18c4,0x18c3,0x10e3,0x08e3,0x10e3,0x08e2,0x10e3,0x18e3,0x10a2,0x2a68,0xa5d7,0x18a5,0x10e4,0x1904,0x2145,0x1904,0x2144,0x4247,0x52ca,0x62ca,0x5aca, +0xc71a,0x4aea,0x52c9,0x52c9,0x5aaa,0x52c9,0x4207,0x29a6,0x3a49,0x4a49,0x4249,0x31c8,0xa4b3,0xbf1b,0x2209,0x31e7,0x39e8,0x2a08,0x31e8,0x39e8,0x31e8,0x31c7,0x39e8,0x39e8,0x39e8,0x3207,0x31e7,0x3208,0x3208,0x39e8,0x3a08,0x3a09,0x39e7,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4229,0x4229,0x3a29,0x4209,0x4229,0x4228,0x3a69,0x4249,0x4249,0x4269,0x3a29,0x3a29,0x4a28,0x3a69,0x4269,0x3a69,0x426a,0x4a69,0x4a8a,0x426a,0x4269,0x4269,0x426a,0x426a,0x426a,0x426a,0x4a8a,0x4249,0x4a8a,0x426a,0x4a8a,0x4a6a,0x4a8a,0x4a8a,0x4a89,0x428a,0x4aaa,0x4aaa,0x4a8a,0x4a8b,0x4aab,0x528b,0x52cb,0x52aa,0x52ab,0x4aab,0x4acb,0x4aab,0x52cc,0x4aab,0x4acc,0x4aaa,0x52cb,0x52cb,0x52cb,0x52cc,0x52cb,0x52cb,0x52cb,0x52cb,0x52cc,0x52cc,0x530d,0x4aec,0x5b0c,0x52eb,0x5aec,0x52ec,0x52ec,0x5aec,0x52ca,0x52ec,0x5aec,0x5b0d,0x5b0c,0x5b0c,0x5aec,0x52eb,0x630c,0x52ec,0x52cc,0x532c,0x530b,0x5b0c,0x4acc,0x52ed,0x5b0c,0x5b0c,0x52eb,0x5acb,0x5aec,0x52ec,0x530c,0x5b0c,0x5b0c,0x632d,0x5aec,0x4aaa,0x5aeb,0x52cb,0x52ec,0x5aec,0x52cc,0x52ec,0x530c,0x52ec,0x52cb,0x52cb,0x4aab,0x42ab,0x4aab,0x4aab,0x52ab,0x4aab,0x528b,0x52ab,0x52cb,0x52ab,0x52aa,0x4a8a,0x4a8b,0x4a8a,0x4a8a,0x526a,0x526b,0x4a8a,0x428a,0x428a,0x528b,0x4a8b,0x428a,0x4269,0x4a6a,0x426a,0x424a,0x4a4a,0x4a6a,0x4a6a,0x4269,0x4249,0x4a49,0x4249,0x4249,0x4a49,0x4249,0x3a49,0x3a4a,0x4249,0x3a28,0x3a28,0x4a49,0x3a08,0x4228,0x4229,0x4249,0x3a49,0x3a29,0x39e8,0x39e9,0x3a09,0x39e8,0x39e8,0x3208,0x39e7,0x3a08,0x39e8,0x41e8,0x39e8,0x39e8,0x31e8,0x3a08,0x4207,0x3a08,0x39e7,0x31c7,0x39e8,0x31c6,0x29c7,0x31c7,0x39a7,0x31a6,0x31a7,0x29a7,0x39a7,0x31a7,0x31a6,0x31a7,0x3186,0x3187,0x2987,0x29a6,0x31a7,0x2986,0x2985,0x2167,0x2946,0x2166,0x2146,0x2166,0x2166,0x2186,0x2146,0x2967,0x1965,0x2944,0x2966,0x2185,0x2165,0x2925,0x2926,0x2126,0x2125,0x2145,0x2145,0x2946,0x2145,0x2145,0x2945,0x2125,0x1125,0x1925,0x1925,0x1924,0x1904,0x2125,0x1944,0x1125,0x1925,0x1924,0x1904,0x2124,0x18e5,0x1105,0x18e4,0x18e4,0x18e4,0x18c4,0x20e4,0x20e3,0x1904,0x1904,0x20e3,0x18e4,0x1903,0x2104,0x18e3,0x10e3,0x08e4,0x10e4,0x18e4,0x10e4,0x10c4,0x10e3,0x10e2,0x18e3,0x10c4,0x08c3,0x08c3,0x18c2,0x10c3,0x08e3,0x1103,0x10e3,0x1103,0x18e3,0x10e3,0x10e2,0x10c2,0x18a1,0x3a89,0xa5b7,0x28e6,0x18c3,0x1903,0x2145,0x10e4,0x2124,0x4a67,0x52e9,0x62ca,0x62ca, +0xc6fa,0x42aa,0x5ac9,0x52c9,0x5ac9,0x52e9,0x3207,0x31e7,0x4248,0x4268,0x4249,0x39e9,0xacd3,0xc71b,0x21e9,0x31e8,0x3a08,0x31e8,0x39e8,0x31e7,0x31e7,0x41e7,0x39e8,0x31e8,0x31e8,0x39e8,0x31e8,0x39e8,0x39e8,0x39e8,0x3a09,0x3a29,0x3208,0x3a07,0x3a08,0x3a29,0x3a08,0x4209,0x4208,0x4208,0x4229,0x3a29,0x3a48,0x3a28,0x4248,0x3a68,0x4249,0x4249,0x4a48,0x4249,0x4229,0x4209,0x4249,0x4269,0x426a,0x4a89,0x4a69,0x4a69,0x4269,0x3a69,0x426a,0x428a,0x426a,0x424a,0x4269,0x428a,0x4a6a,0x4a6b,0x4a8a,0x4a69,0x4a69,0x4a89,0x428a,0x4a6a,0x52aa,0x4a6a,0x428a,0x4a8b,0x4a8a,0x4aac,0x52ab,0x4aab,0x4aaa,0x4aab,0x4aab,0x4a8b,0x4a6a,0x528b,0x4aab,0x52ab,0x52ac,0x52ab,0x52eb,0x52cb,0x5acb,0x4acb,0x52cb,0x52cb,0x52ab,0x52cb,0x5aec,0x5aec,0x5acc,0x5acb,0x5aeb,0x5b0c,0x530c,0x52eb,0x52cb,0x52eb,0x52ec,0x630d,0x62ed,0x62ec,0x5b0c,0x5aec,0x5b0c,0x5b2d,0x530c,0x4aec,0x4aec,0x4aeb,0x530c,0x52ec,0x5aec,0x5acc,0x52ec,0x4acb,0x52cb,0x52ec,0x530d,0x532c,0x52cb,0x5aec,0x5b0c,0x5b0c,0x5aec,0x52eb,0x52cb,0x5aec,0x5acc,0x5acc,0x5aec,0x530b,0x4aeb,0x52cc,0x52eb,0x52cb,0x52ab,0x4acc,0x52ac,0x528b,0x4aac,0x52ab,0x52cb,0x52ab,0x52ab,0x52cb,0x4a8a,0x52ab,0x4a8b,0x428a,0x52ab,0x52ab,0x428b,0x4a6a,0x52ab,0x42aa,0x4aab,0x4aab,0x4a8a,0x4a8a,0x428a,0x426a,0x426a,0x426a,0x4a6a,0x424a,0x424a,0x426a,0x4a49,0x4a49,0x4229,0x424a,0x424a,0x422a,0x4a49,0x4a49,0x4249,0x4229,0x4249,0x4229,0x4229,0x4249,0x4229,0x3a29,0x4229,0x4209,0x4229,0x3a08,0x39e8,0x3208,0x3a08,0x3a08,0x31e7,0x41e8,0x3a08,0x39e7,0x3a08,0x31c7,0x39c7,0x39e8,0x31a6,0x31c8,0x31a7,0x31c7,0x31c7,0x31c6,0x31c6,0x31a7,0x31a7,0x31c6,0x29a7,0x31a7,0x31a6,0x31c6,0x31c6,0x31a7,0x31a7,0x3187,0x31a6,0x2986,0x3186,0x2986,0x3186,0x2986,0x2145,0x2165,0x3185,0x3145,0x3186,0x3165,0x2185,0x2985,0x3166,0x2166,0x2146,0x2145,0x2945,0x2125,0x2146,0x2165,0x2145,0x2125,0x2945,0x2145,0x1925,0x2145,0x2145,0x1925,0x1925,0x2104,0x1924,0x1945,0x2125,0x1905,0x1924,0x1924,0x2124,0x1924,0x1904,0x1904,0x2105,0x20e4,0x18c3,0x18e3,0x18e3,0x1923,0x2124,0x18e4,0x18e4,0x10c5,0x18e3,0x10e4,0x10e3,0x08c4,0x10e4,0x10e3,0x1103,0x18e4,0x18a4,0x10c3,0x10c3,0x10e3,0x08e4,0x10c4,0x10c3,0x10a2,0x10e3,0x10c2,0x08c3,0x00c4,0x08e2,0x00e2,0x08c3,0x10c3,0x10c3,0x1063,0x3226,0xadd6,0x28a5,0x10e3,0x1903,0x2124,0x1924,0x2165,0x4227,0x5ac9,0x5aca,0x62ca, +0xbeda,0x42a9,0x5ae9,0x52c9,0x52c9,0x4aa9,0x4248,0x31a7,0x4229,0x3a69,0x3a49,0x41c8,0xb4f2,0xbefb,0x21c8,0x3a08,0x3a08,0x39e8,0x39c8,0x39e8,0x31e8,0x3a08,0x31e8,0x39e8,0x39e8,0x39e8,0x39e8,0x31e8,0x31e8,0x39e8,0x31e8,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x3a29,0x3a09,0x3a28,0x3a48,0x3a48,0x3a29,0x3a29,0x3a28,0x3a28,0x4249,0x3a08,0x3208,0x4249,0x4229,0x4248,0x3a49,0x3a4a,0x4249,0x4a49,0x4a4a,0x426a,0x3a49,0x4249,0x4a69,0x4269,0x4269,0x4249,0x4a6a,0x426a,0x426a,0x4a6a,0x426a,0x428a,0x426a,0x4a6a,0x4a4a,0x4a8b,0x4a8a,0x4aaa,0x4a8a,0x526b,0x528b,0x52ab,0x4a8a,0x42ab,0x52ca,0x52cb,0x4aab,0x528b,0x4a8a,0x528a,0x4aaa,0x52cb,0x4a8a,0x52cb,0x4aeb,0x52ab,0x4aab,0x4acb,0x52cb,0x42cb,0x52eb,0x4aab,0x52cc,0x52cb,0x52cc,0x5aeb,0x5aec,0x5aec,0x4acb,0x52cb,0x52cb,0x52ec,0x5aec,0x5aec,0x5b0c,0x5aeb,0x5b0c,0x5aec,0x52ec,0x530c,0x4b0b,0x530c,0x52ec,0x52cc,0x52cb,0x52cb,0x52eb,0x52cb,0x52cc,0x5aac,0x62ec,0x52cc,0x5acc,0x52ec,0x5b0d,0x530c,0x52ec,0x5acc,0x634e,0x4acb,0x4acb,0x5acc,0x5acc,0x52ab,0x52ab,0x52ec,0x52cb,0x52ab,0x4aab,0x4aac,0x52ab,0x52cc,0x52cc,0x4aab,0x4a8b,0x5aac,0x4aaa,0x52ab,0x4aab,0x4acb,0x4aab,0x4a8a,0x4aab,0x42ab,0x4aab,0x52ab,0x4a6b,0x4a8b,0x4aab,0x426a,0x4a8a,0x428a,0x4a8b,0x428a,0x426a,0x3a6a,0x426a,0x4269,0x4a69,0x4a8a,0x424a,0x426a,0x4269,0x4249,0x426a,0x4249,0x4a4a,0x4249,0x4249,0x4249,0x4248,0x4229,0x4229,0x4229,0x424a,0x3a49,0x4249,0x3a09,0x3a09,0x4208,0x4228,0x3a28,0x3208,0x31e8,0x31e8,0x31c8,0x3207,0x3a08,0x3a08,0x3a08,0x3208,0x31a8,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39c7,0x39e7,0x31c7,0x39e7,0x29a6,0x31a6,0x29a7,0x2987,0x31a6,0x29a6,0x29a6,0x2986,0x3186,0x3166,0x3166,0x29c7,0x31a7,0x3166,0x3165,0x3166,0x2966,0x2965,0x2946,0x2945,0x2185,0x2945,0x2166,0x2165,0x3166,0x2965,0x2946,0x2945,0x2966,0x2146,0x1965,0x2165,0x2145,0x1945,0x1945,0x2945,0x1925,0x1945,0x1925,0x2126,0x1925,0x2125,0x1925,0x1125,0x1924,0x1905,0x1905,0x1905,0x1904,0x1925,0x10e4,0x20e4,0x1104,0x2104,0x1904,0x1903,0x18e3,0x1903,0x1904,0x1904,0x1103,0x18e5,0x18e3,0x10e3,0x18e4,0x18e4,0x18e4,0x20e3,0x1103,0x18e3,0x08e3,0x18e3,0x18e3,0x18e2,0x08e3,0x10a3,0x18c3,0x08c3,0x08c3,0x10a3,0x10a3,0x10a3,0x10c3,0x08c3,0x10e3,0x10e3,0x10e3,0x08c2,0x29c5,0xb618,0x28a5,0x18e3,0x1903,0x2124,0x2144,0x2184,0x4248,0x5ac9,0x5ac9,0x5ac9, +0xb6da,0x42ca,0x5ac9,0x52ca,0x52ca,0x4ac9,0x3a28,0x29a6,0x4268,0x3a49,0x3a49,0x41e8,0xacf3,0xbefb,0x19c8,0x3a28,0x3a07,0x31e7,0x39c7,0x4208,0x3a07,0x41e8,0x39e7,0x31e8,0x31e8,0x31e8,0x3208,0x31e7,0x3a08,0x3a08,0x4208,0x39e8,0x31e8,0x4229,0x4209,0x3a08,0x4208,0x3a08,0x3a08,0x3228,0x3228,0x3a28,0x4209,0x3a09,0x4209,0x3a09,0x3a49,0x3a09,0x3a09,0x4229,0x4228,0x4229,0x3a69,0x4248,0x4269,0x4249,0x4229,0x4209,0x4229,0x4a49,0x4a6a,0x426a,0x3a8a,0x3a6a,0x4229,0x424a,0x4a8b,0x4a8a,0x4a6a,0x4a8b,0x4a6a,0x428b,0x4a6a,0x4a8a,0x428a,0x428b,0x4a8a,0x4a8a,0x4a8b,0x526a,0x528b,0x4a8b,0x52ab,0x4a8a,0x4a8b,0x52ab,0x52ab,0x528b,0x4aab,0x4aaa,0x52aa,0x4acb,0x4acb,0x4aab,0x52ac,0x4aab,0x4aab,0x52cb,0x52eb,0x4aab,0x52ac,0x52cb,0x4aeb,0x52cb,0x52cb,0x5acc,0x52cc,0x530d,0x52ec,0x4acc,0x5b0c,0x5aec,0x5b0c,0x5aed,0x52ec,0x5acb,0x5aec,0x5aec,0x5aec,0x52cc,0x5aec,0x52cb,0x52cb,0x52ab,0x52eb,0x52ab,0x5aac,0x52ec,0x52ec,0x52ab,0x5aec,0x5aeb,0x5b0c,0x5b0c,0x52eb,0x530c,0x5b0c,0x52cb,0x528b,0x52ab,0x52ab,0x4aab,0x52ab,0x62cb,0x52cb,0x4aab,0x52cb,0x4acc,0x528b,0x4aaa,0x52ab,0x4acb,0x4a6b,0x4aab,0x52ab,0x52cb,0x4a8a,0x52ab,0x4aab,0x4aab,0x4aab,0x52aa,0x528a,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4249,0x424a,0x3a69,0x4a6a,0x4a6a,0x424a,0x428a,0x426a,0x4269,0x3a8a,0x4a6a,0x4269,0x4a29,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4a49,0x3229,0x3a49,0x3a49,0x4249,0x4209,0x4208,0x4228,0x4208,0x3a08,0x3a08,0x31e8,0x3a08,0x31e8,0x39e9,0x3a28,0x39e8,0x39e7,0x3a07,0x3208,0x29e8,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x31a7,0x31c6,0x31c7,0x39c7,0x31c6,0x31c6,0x31a7,0x29a7,0x31a7,0x2987,0x31a7,0x2987,0x3186,0x39a6,0x3987,0x2986,0x31a7,0x2986,0x2985,0x2986,0x2986,0x2966,0x2145,0x2166,0x1946,0x2124,0x2946,0x2965,0x2945,0x2165,0x2145,0x2166,0x2166,0x2946,0x1965,0x1945,0x2125,0x2925,0x2125,0x2925,0x2124,0x1945,0x1145,0x2125,0x1925,0x2126,0x1905,0x1124,0x2125,0x20e5,0x2104,0x1904,0x1105,0x2124,0x1104,0x10e4,0x08e4,0x1904,0x18c5,0x1103,0x0904,0x1104,0x18e4,0x0904,0x2104,0x20e4,0x18e4,0x18c4,0x10c3,0x18e3,0x18e4,0x10e3,0x10e4,0x18e3,0x1103,0x18e3,0x10e3,0x10c3,0x08e3,0x08c3,0x18c3,0x10c3,0x08c2,0x10c3,0x08c3,0x18c3,0x10c3,0x10c3,0x08e3,0x08c3,0x10e3,0x00c2,0x29e6,0xadf8,0x28c5,0x18e4,0x1904,0x2125,0x1924,0x1944,0x4247,0x52ca,0x5aca,0x5b0a, +0xb6fa,0x4aaa,0x5ac9,0x52c9,0x52ca,0x4aa9,0x4228,0x29a7,0x3a29,0x3a48,0x3a28,0x41c8,0xb514,0xbedb,0x21a7,0x3a07,0x41c7,0x3207,0x3208,0x31e7,0x3a08,0x41e8,0x39e8,0x3a08,0x31e7,0x31e8,0x31e8,0x39e8,0x41e8,0x3a08,0x39e8,0x3a08,0x39e8,0x39c7,0x31e8,0x3208,0x3228,0x3a28,0x3a08,0x3a09,0x3a29,0x3a49,0x4228,0x3a08,0x4208,0x39e8,0x3a28,0x3a08,0x3a29,0x3a29,0x3a08,0x3a29,0x3a49,0x3a29,0x4249,0x4269,0x426a,0x4249,0x4249,0x4229,0x4a69,0x4a6a,0x4a4a,0x4a6b,0x426a,0x4a69,0x528a,0x4aaa,0x4a6b,0x426a,0x4a6a,0x428a,0x428a,0x428a,0x4a6b,0x4a6b,0x4a8a,0x4a6b,0x4aaa,0x4a8a,0x4aab,0x4a8a,0x4a8b,0x528b,0x4a8b,0x4a8a,0x528b,0x528b,0x4aac,0x4aab,0x4aac,0x4acc,0x52cc,0x52ab,0x52ab,0x4a8b,0x4aab,0x528b,0x4aab,0x52ab,0x4aab,0x4aab,0x52ab,0x52ac,0x52cb,0x52cb,0x5b0c,0x52ec,0x52eb,0x4acb,0x530c,0x52cc,0x5aac,0x52cb,0x52ec,0x530c,0x5aed,0x5aec,0x5b0c,0x530b,0x52cc,0x4acc,0x530d,0x52cb,0x52ec,0x52cc,0x5aeb,0x5aec,0x52ec,0x530c,0x52cc,0x52ab,0x52eb,0x5aeb,0x4aab,0x52ed,0x5b0c,0x52cb,0x4aab,0x4aca,0x52ab,0x52eb,0x52eb,0x52ca,0x52ab,0x52cb,0x5acb,0x52ac,0x4a8b,0x528a,0x52cb,0x4aeb,0x52ab,0x4a8b,0x4aab,0x4aab,0x528b,0x4aaa,0x4aaa,0x4aaa,0x528b,0x4a8a,0x526a,0x4aab,0x4a8a,0x4a6a,0x4a8b,0x4a4a,0x4a8a,0x528a,0x52cb,0x4a6a,0x4a49,0x4269,0x4a49,0x4a6a,0x4a69,0x4aab,0x426a,0x426a,0x426a,0x4a4a,0x4269,0x4249,0x4249,0x4269,0x4249,0x4a49,0x4a29,0x4269,0x4249,0x3a29,0x4229,0x3a49,0x3a09,0x39e8,0x4229,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x31e8,0x3a28,0x3208,0x31e8,0x31c7,0x3207,0x3208,0x3207,0x31e8,0x41e7,0x39c8,0x39c7,0x31c7,0x31c7,0x31c7,0x31a7,0x29c7,0x29a7,0x29a7,0x3186,0x31a7,0x3187,0x31a6,0x29a6,0x31a7,0x31a7,0x31a6,0x2986,0x3987,0x3186,0x2966,0x2186,0x3186,0x29a6,0x21a6,0x2966,0x2166,0x2186,0x2147,0x1105,0x1905,0x2945,0x2945,0x2966,0x1945,0x1966,0x1945,0x1925,0x1945,0x1945,0x2925,0x2146,0x2125,0x2145,0x2144,0x2145,0x1925,0x2905,0x2145,0x2125,0x1904,0x1924,0x2124,0x2105,0x1124,0x1105,0x1905,0x2905,0x1904,0x10e4,0x10e4,0x1904,0x1104,0x0903,0x10e4,0x1903,0x2104,0x20e4,0x20e5,0x18e4,0x18e4,0x18e4,0x10e4,0x18e4,0x10c4,0x10e4,0x10e3,0x10e3,0x10a3,0x18c3,0x18c3,0x08c3,0x08c4,0x10c2,0x08e2,0x10e3,0x08e2,0x10c2,0x18c4,0x18c3,0x08c3,0x18e3,0x10c2,0x08c3,0x10c3,0x08c3,0x3227,0xa5d7,0x28e6,0x18c3,0x1924,0x2125,0x1924,0x1944,0x3a67,0x52e9,0x5aca,0x5aeb, +0xb6fa,0x42aa,0x5aa9,0x52ca,0x5aca,0x52e9,0x3a08,0x29a6,0x3a28,0x4208,0x3a08,0x39a8,0xb554,0xaebb,0x2187,0x3207,0x4208,0x31e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x39e7,0x39e8,0x3208,0x31e8,0x39e8,0x39e8,0x3208,0x2a08,0x31e8,0x3208,0x3208,0x3228,0x3a28,0x3a28,0x3a08,0x3a08,0x3a29,0x3208,0x4228,0x5249,0x4249,0x4229,0x3a28,0x4229,0x4208,0x3a29,0x3a08,0x4228,0x4229,0x4229,0x3a49,0x4249,0x4249,0x4229,0x426a,0x4269,0x4229,0x4229,0x426a,0x3a4a,0x4a8b,0x3a6a,0x4a4a,0x4a8a,0x426a,0x424a,0x426a,0x4a6a,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4a69,0x4a6a,0x4a6a,0x4aaa,0x4aab,0x4a8a,0x4aaa,0x528a,0x4a8b,0x4a8a,0x4aab,0x4a8b,0x4aab,0x4acb,0x4aab,0x52ab,0x528b,0x52ab,0x52aa,0x528b,0x42ab,0x52ab,0x52ab,0x4a8b,0x52ab,0x52ac,0x52ab,0x62cb,0x5aab,0x52cb,0x5aec,0x52ec,0x52ab,0x52cb,0x4aeb,0x52cb,0x52eb,0x5acb,0x5acc,0x5aec,0x4aec,0x52ed,0x52cc,0x5aec,0x5b0c,0x5aeb,0x5aec,0x52ec,0x52eb,0x5aec,0x5acc,0x5aeb,0x5aeb,0x52ec,0x5aec,0x52cc,0x4acc,0x5aeb,0x5aeb,0x5aec,0x52cc,0x5acb,0x52cb,0x52cb,0x52cb,0x5acb,0x62ec,0x52cb,0x52ab,0x52ab,0x4aaa,0x4a8a,0x4aab,0x52cb,0x52ab,0x5acc,0x4acb,0x52cb,0x528b,0x4a8a,0x4269,0x4aab,0x528b,0x4a8b,0x4aca,0x52aa,0x4a8a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a8a,0x428a,0x528a,0x52ab,0x4a8b,0x4a4a,0x424a,0x426a,0x3a49,0x4a69,0x4a89,0x4a69,0x4a6a,0x4a49,0x4a4a,0x426a,0x3229,0x3a49,0x4249,0x4a69,0x4269,0x4a49,0x3a49,0x3a49,0x4a69,0x4a49,0x3228,0x3a29,0x3a29,0x31e7,0x3a09,0x3208,0x3209,0x31e9,0x39e8,0x3a08,0x3a08,0x3a08,0x31e7,0x3208,0x3208,0x31e7,0x39e8,0x39c7,0x39e7,0x31e7,0x39e7,0x39c7,0x39c8,0x31c7,0x39c7,0x31a7,0x3186,0x2186,0x31a7,0x29c6,0x2986,0x31a7,0x29a6,0x3186,0x29a6,0x29a6,0x31a6,0x2186,0x2187,0x2986,0x2986,0x29a6,0x31a6,0x2186,0x2966,0x2945,0x1966,0x2946,0x2145,0x2145,0x2945,0x2946,0x2966,0x1946,0x1945,0x1945,0x2145,0x2946,0x2146,0x2145,0x1945,0x1945,0x2145,0x2124,0x1925,0x2125,0x2925,0x2125,0x2125,0x1944,0x1124,0x1925,0x2105,0x2104,0x1904,0x1925,0x2105,0x1904,0x1104,0x1104,0x18e3,0x18e3,0x10e4,0x10e5,0x18e4,0x18e4,0x18e4,0x08e4,0x0104,0x08e3,0x18e3,0x18c4,0x1104,0x0904,0x10e4,0x18c3,0x10c3,0x08c4,0x1904,0x18e3,0x18e3,0x10c3,0x10a3,0x10c3,0x10e3,0x10c3,0x10c3,0x18c4,0x18e3,0x10c3,0x10e2,0x10e2,0x10c2,0x18e2,0x10c2,0x3227,0xa5b7,0x2906,0x18e3,0x1124,0x2125,0x2145,0x1984,0x3a47,0x4ae8,0x5ae9,0x5aea, +0xb6da,0x4a8a,0x5aea,0x52aa,0x5aca,0x5aca,0x31e6,0x31a6,0x3a48,0x3a09,0x3a09,0x4187,0xbd75,0xae9a,0x2187,0x3a28,0x39e7,0x41e8,0x3a08,0x39e8,0x3a08,0x3a08,0x3a07,0x39e8,0x3a08,0x3228,0x3208,0x39e8,0x39e7,0x39e8,0x3a08,0x3a08,0x31e8,0x3208,0x3208,0x39e8,0x4208,0x41e8,0x3a07,0x3208,0x3228,0x3a29,0x3a29,0x3a28,0x4229,0x4208,0x4228,0x4208,0x4229,0x3a08,0x4228,0x4249,0x4229,0x4249,0x4249,0x4249,0x4a49,0x4a6a,0x4249,0x4249,0x3a49,0x424a,0x4249,0x4249,0x4269,0x4269,0x4269,0x426a,0x424a,0x4269,0x426a,0x426a,0x4a8b,0x426a,0x4a49,0x5269,0x4a6a,0x426a,0x52ab,0x4aaa,0x52ab,0x428a,0x4aab,0x42aa,0x426a,0x4aaa,0x52aa,0x4aab,0x52cb,0x5acb,0x52ab,0x52ab,0x5aab,0x52ab,0x52cb,0x52ab,0x4aab,0x52ab,0x52cb,0x52cb,0x5acc,0x528b,0x4a8a,0x4aab,0x4acb,0x52ab,0x52ac,0x4aca,0x52cb,0x52eb,0x5acb,0x5acb,0x52cb,0x52ec,0x62ec,0x52cc,0x52eb,0x52cb,0x52cb,0x5aeb,0x5aec,0x5aeb,0x62ec,0x5b0c,0x5aec,0x52ec,0x52ec,0x52ec,0x5b0b,0x5b0c,0x530c,0x4acb,0x5b0c,0x5aec,0x5aec,0x52ec,0x52cb,0x4acb,0x52cc,0x52cc,0x52ab,0x52ab,0x4aeb,0x4acb,0x52ab,0x4acb,0x4acb,0x52ec,0x52cc,0x52ab,0x52ab,0x52ab,0x4acb,0x52ab,0x4aaa,0x428a,0x4acb,0x528b,0x42ab,0x4aaa,0x528a,0x4a8a,0x52ca,0x4aaa,0x428a,0x528a,0x528a,0x526a,0x4289,0x4a8b,0x4a6b,0x4a6a,0x4a69,0x3a49,0x426a,0x3a69,0x4269,0x4a69,0x4a8a,0x426a,0x4a49,0x426a,0x426a,0x3a29,0x3a49,0x4229,0x4a4a,0x4249,0x3a29,0x3a49,0x4229,0x4268,0x3a28,0x3a49,0x4229,0x3a28,0x3a08,0x41e9,0x3a08,0x3a29,0x3a09,0x3a08,0x3a28,0x39e8,0x39c8,0x31e8,0x31e8,0x31a7,0x31e7,0x31c8,0x39e7,0x31c7,0x31c7,0x29c6,0x31c7,0x39a8,0x39a7,0x31c7,0x31e7,0x39c7,0x31a6,0x39a7,0x31a6,0x2987,0x3987,0x3186,0x31a6,0x29a6,0x29a6,0x31a7,0x2186,0x2186,0x2986,0x29a6,0x2986,0x3166,0x2186,0x2146,0x2167,0x2966,0x2945,0x2945,0x2945,0x2965,0x2946,0x2145,0x2145,0x2166,0x2146,0x2166,0x1945,0x3165,0x2165,0x2145,0x2165,0x2945,0x1945,0x1145,0x2125,0x2925,0x2125,0x2125,0x2104,0x2124,0x2125,0x1105,0x20e5,0x2124,0x2125,0x1905,0x1104,0x1904,0x1904,0x1904,0x10e3,0x1905,0x10e4,0x18e4,0x18e4,0x18e4,0x2105,0x10c4,0x1904,0x2103,0x2104,0x10c4,0x10e4,0x18e4,0x18e4,0x18e3,0x10e3,0x10e4,0x10e3,0x18e2,0x10c2,0x08e3,0x10c3,0x10e3,0x00c4,0x08c4,0x08c3,0x08c2,0x08e3,0x08e3,0x08e3,0x08c3,0x18e3,0x18a3,0x29a6,0xadd7,0x3127,0x10e3,0x18e4,0x2125,0x1925,0x2143,0x4247,0x52c8,0x52ca,0x5aca, +0xb6ba,0x4aaa,0x5ae9,0x52ca,0x5aca,0x52ca,0x3a27,0x3186,0x4229,0x3a29,0x3a29,0x4187,0xbd54,0xaeba,0x2187,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x3208,0x3a08,0x39e8,0x41e9,0x4209,0x31e8,0x31c8,0x39c7,0x3a08,0x3a08,0x3a08,0x39e8,0x31e8,0x3a08,0x3a28,0x3a08,0x3a28,0x3a28,0x3a48,0x4249,0x3a08,0x3a29,0x3a29,0x4209,0x3a09,0x4208,0x3a09,0x3a28,0x3a28,0x3a29,0x3a48,0x3a28,0x3a29,0x3a49,0x3a69,0x4249,0x3a49,0x3a49,0x3a29,0x3269,0x424a,0x3a69,0x3a69,0x4249,0x4a49,0x4269,0x4a89,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x526b,0x4a6a,0x4a6a,0x4a6a,0x426a,0x4a6b,0x4a6a,0x528a,0x4aab,0x4a8b,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x528a,0x52ab,0x52cb,0x52cb,0x52ab,0x52ab,0x52cb,0x52ab,0x52ec,0x52cc,0x4aab,0x4aec,0x4acc,0x4aeb,0x4aca,0x52ab,0x52cc,0x52ab,0x52cb,0x52ac,0x52cc,0x4aca,0x4acb,0x52cb,0x52cb,0x5acc,0x52cb,0x52cb,0x5aec,0x52cb,0x52eb,0x4aab,0x4acb,0x52cb,0x52ab,0x630c,0x62ec,0x5aec,0x52ec,0x52ec,0x4b0c,0x52ec,0x5b0b,0x52ec,0x5b0c,0x52ab,0x5b0c,0x5b0c,0x52cc,0x52cb,0x52cc,0x52cb,0x52eb,0x52ec,0x5acc,0x52cc,0x52cc,0x52cc,0x52cb,0x5acc,0x52cb,0x52ec,0x52ac,0x52ac,0x528b,0x528b,0x4a8b,0x4a8a,0x528a,0x4a8a,0x52cb,0x4aab,0x4a8b,0x4a8a,0x4a8a,0x4a6b,0x4acb,0x4aaa,0x528a,0x528a,0x528a,0x528a,0x4a8a,0x528b,0x4a6b,0x426a,0x428a,0x4269,0x4a6a,0x4269,0x4269,0x4229,0x426a,0x4269,0x4269,0x426a,0x4269,0x4269,0x4289,0x4249,0x4229,0x4229,0x3a29,0x3a49,0x3a29,0x3a48,0x424a,0x4249,0x3a29,0x3a08,0x3a08,0x4209,0x4228,0x3a28,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x39c7,0x31e8,0x31e8,0x39c8,0x39e8,0x39e7,0x31c7,0x39c7,0x31c8,0x31c7,0x31a7,0x31c7,0x39c8,0x31c8,0x39c7,0x31a6,0x39a6,0x31a6,0x29a6,0x3186,0x3967,0x3186,0x29a6,0x2986,0x2986,0x29a7,0x3186,0x29a6,0x2986,0x2986,0x2986,0x2165,0x2166,0x2186,0x2165,0x2965,0x2165,0x3125,0x2125,0x2145,0x1925,0x2145,0x2146,0x2166,0x2145,0x2145,0x2945,0x2145,0x2945,0x2926,0x1945,0x2125,0x2945,0x2925,0x1925,0x2124,0x1925,0x2125,0x2124,0x2125,0x1125,0x1904,0x2125,0x2104,0x20e5,0x1904,0x1924,0x2104,0x2104,0x1904,0x1104,0x10e4,0x18e4,0x10e4,0x1104,0x2105,0x10e4,0x20c4,0x2104,0x1903,0x18c4,0x18e4,0x18e3,0x18e4,0x10e4,0x1104,0x08e4,0x18c4,0x08c3,0x10c3,0x00e3,0x08e3,0x08e3,0x08c3,0x10c3,0x08c3,0x10e3,0x10c2,0x08c2,0x00c3,0x08c4,0x10c3,0x18a3,0x2186,0xa5f7,0x3967,0x18e4,0x1904,0x2145,0x1945,0x1924,0x4227,0x52e9,0x5aca,0x5aea, +0xb699,0x42a9,0x5b09,0x52ea,0x52c9,0x52c9,0x3a27,0x31a6,0x39e9,0x3228,0x3a48,0x39a7,0xb554,0xaeba,0x2187,0x39e8,0x3a08,0x41e8,0x3a08,0x3228,0x3a29,0x3a08,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4228,0x4a08,0x4229,0x3a08,0x39e8,0x3208,0x3a29,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x41e8,0x4a49,0x3a29,0x4a29,0x4229,0x4209,0x3a29,0x3208,0x3208,0x3a49,0x3a29,0x4228,0x4229,0x3a49,0x3a49,0x3209,0x3a29,0x3a29,0x3249,0x3a49,0x3a49,0x426a,0x3a69,0x3a69,0x4289,0x4a29,0x4a69,0x4a4a,0x4a6a,0x52ab,0x4a8a,0x424a,0x4a6a,0x426a,0x4a6a,0x4a8a,0x4a8a,0x426a,0x4a4a,0x4a8b,0x4a6b,0x4a8a,0x428a,0x4a8a,0x4a8a,0x4a8a,0x42aa,0x4a8b,0x528b,0x52ab,0x5a8b,0x528a,0x4a8b,0x4aab,0x4aab,0x4aab,0x4aab,0x52ac,0x52ac,0x4aab,0x52ac,0x52ab,0x52ab,0x52cb,0x52ab,0x5aeb,0x52ec,0x52eb,0x4acb,0x52cb,0x52ec,0x5b0c,0x52cc,0x52cb,0x52eb,0x52cb,0x52cb,0x52ec,0x52ec,0x52eb,0x52ab,0x5aec,0x52eb,0x5aec,0x52ec,0x5acc,0x5aec,0x530d,0x5aed,0x5b0c,0x52ec,0x52cb,0x630c,0x52cc,0x52cb,0x5acb,0x52cb,0x52cc,0x52cb,0x5aca,0x5aeb,0x5aec,0x5aec,0x52cb,0x5acb,0x4aab,0x5acb,0x52ec,0x52eb,0x52ab,0x4a8b,0x52cb,0x52ab,0x52ab,0x52ab,0x528a,0x526a,0x528a,0x4aaa,0x4a8a,0x52ab,0x52cb,0x4aab,0x428a,0x428a,0x4a8a,0x4249,0x4a8a,0x4a6b,0x4a6a,0x428a,0x428a,0x3a6a,0x428a,0x4a8b,0x4a6a,0x528a,0x4a8a,0x428a,0x428a,0x4269,0x426a,0x424a,0x4a69,0x4a49,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4249,0x4249,0x3a29,0x3a48,0x424a,0x4229,0x3a29,0x3a29,0x3a08,0x3a28,0x3a28,0x3a28,0x39e8,0x3a08,0x3208,0x31e7,0x3208,0x3a08,0x39e7,0x39e7,0x41e7,0x39e8,0x39c7,0x39e7,0x31e7,0x31e7,0x29a7,0x29a8,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x3187,0x31a7,0x31a7,0x2986,0x3987,0x3187,0x31a6,0x31a5,0x3186,0x3186,0x2986,0x2986,0x2966,0x2985,0x1986,0x2966,0x2966,0x3166,0x3146,0x2165,0x2946,0x2166,0x2945,0x2144,0x2965,0x2946,0x2146,0x2165,0x2146,0x2125,0x1925,0x2145,0x2145,0x2125,0x1125,0x2125,0x2125,0x1945,0x1924,0x2144,0x1925,0x20e5,0x1925,0x2124,0x1904,0x2104,0x2105,0x1904,0x1925,0x1905,0x1904,0x1905,0x18e5,0x1104,0x18e4,0x10e4,0x1904,0x20e5,0x2103,0x1104,0x1903,0x10e4,0x10e3,0x10e3,0x10e4,0x10e4,0x10e4,0x18c2,0x10c3,0x10e4,0x10e3,0x0903,0x10c3,0x18e2,0x08c3,0x08c3,0x18c3,0x10e4,0x18e3,0x08c3,0x10c4,0x08c3,0x1882,0x2165,0xae17,0x41a8,0x20e4,0x1904,0x2125,0x2146,0x1924,0x4a27,0x52e9,0x5aea,0x630a, +0xb699,0x4289,0x5aea,0x52ea,0x5ae9,0x4ac9,0x3a28,0x2965,0x4249,0x424a,0x3229,0x3167,0xbd75,0xaeba,0x1987,0x29a7,0x31e7,0x31c8,0x31c7,0x29a7,0x31e7,0x3a08,0x3208,0x29a7,0x31c7,0x29c7,0x29a6,0x2986,0x31a6,0x31a7,0x2987,0x29c7,0x31e7,0x31a7,0x3208,0x3a09,0x3a09,0x3a08,0x3a28,0x39e8,0x3a08,0x3a28,0x39e8,0x3a08,0x4229,0x4208,0x31e8,0x31e8,0x3228,0x3208,0x39e8,0x3a09,0x3208,0x31e8,0x3a29,0x3a29,0x3a08,0x3a69,0x426a,0x4249,0x4209,0x4229,0x4a4a,0x424a,0x3a49,0x4a6a,0x422a,0x4a4a,0x4269,0x4289,0x4a8a,0x428a,0x528b,0x528a,0x4a8a,0x428b,0x428a,0x4a6a,0x4a8b,0x428b,0x428a,0x4aaa,0x52aa,0x4a8a,0x4aab,0x4a8a,0x428a,0x4a6a,0x4aab,0x52cb,0x52aa,0x4aaa,0x52cb,0x52ab,0x42cb,0x4aeb,0x52ab,0x5acc,0x52ab,0x528b,0x52cc,0x52cc,0x52ab,0x52cb,0x52eb,0x52eb,0x528b,0x528b,0x5acc,0x5aec,0x52ab,0x52cb,0x4acb,0x52eb,0x52cb,0x52cc,0x52ab,0x52eb,0x52eb,0x5aec,0x5aec,0x5acb,0x52ed,0x5acc,0x62ec,0x62ec,0x630d,0x5acb,0x52eb,0x5aab,0x5aab,0x62cc,0x5aab,0x5aab,0x52ab,0x52ec,0x52ab,0x5b0c,0x5acc,0x5a8a,0x62cb,0x62cb,0x62cb,0x62cc,0x52ab,0x5acb,0x52cb,0x62ec,0x62ab,0x52ab,0x5acc,0x62ec,0x5acb,0x6acc,0x62cb,0x5a8b,0x52ab,0x5acb,0x5acb,0x5acb,0x5aab,0x5aab,0x5a8b,0x5aab,0x5a8a,0x62ab,0x5aab,0x528a,0x5aab,0x528b,0x52aa,0x528a,0x5aab,0x528b,0x5229,0x4a29,0x52aa,0x528b,0x4aaa,0x4a6a,0x526b,0x4a6a,0x4a8a,0x4a69,0x4a49,0x4a69,0x5269,0x4229,0x4a49,0x3a08,0x4a29,0x4a69,0x4a69,0x4a28,0x49e8,0x39e8,0x3a28,0x4229,0x4a29,0x4209,0x4208,0x3a08,0x41e8,0x4207,0x3a08,0x39e7,0x39e7,0x31a7,0x39c7,0x39e7,0x31a7,0x29a5,0x2965,0x3186,0x3186,0x2987,0x2186,0x39c6,0x3186,0x2966,0x31c6,0x2985,0x3166,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2166,0x2966,0x2986,0x3186,0x2966,0x2945,0x2966,0x2966,0x2145,0x2965,0x1945,0x2165,0x2146,0x2946,0x3125,0x2985,0x1945,0x3146,0x2946,0x2965,0x2166,0x1145,0x1905,0x2905,0x1925,0x2146,0x2125,0x2145,0x1944,0x1924,0x1923,0x2125,0x2104,0x2125,0x1945,0x1124,0x2124,0x18e4,0x18c4,0x18e4,0x1904,0x1905,0x1905,0x1924,0x1104,0x1925,0x1924,0x10e4,0x10a3,0x1084,0x1104,0x08e3,0x08a3,0x10c3,0x08c3,0x10c3,0x10c2,0x10c2,0x10c3,0x08c3,0x1103,0x10e4,0x10e3,0x10e3,0x18e3,0x10a3,0x10a3,0x18e3,0x08a3,0x10c3,0x10a3,0x10e3,0x18c3,0x18c3,0x10a4,0x10a3,0x0882,0x1082,0x08e3,0x10c3,0x2164,0xa5b6,0x3167,0x1103,0x0925,0x1944,0x1945,0x1124,0x4247,0x4ac9,0x5b0a,0x5aea, +0xa678,0x42a9,0x5ae9,0x5aea,0x5ac9,0x52c9,0x4208,0x2966,0x3a29,0x4209,0x3209,0x3167,0xbd95,0xb6ba,0x2166,0x5b6d,0x4aed,0x530d,0x538e,0x532c,0x5b4c,0x638e,0x63af,0x5b4e,0x536e,0x53ae,0x5b6e,0x638e,0x5b6d,0x5b8e,0x63af,0x63af,0x5b6e,0x638f,0x636e,0x5bd0,0x4b4e,0x430d,0x4b4e,0x538f,0x534e,0x5baf,0x4aed,0x534d,0x638e,0x5baf,0x5b8e,0x4b4d,0x4b4e,0x63cf,0x5baf,0x63af,0x5b6e,0x4acc,0x530c,0x63cf,0x5b8d,0x636d,0x52ec,0x532d,0x532c,0x638e,0x5b6d,0x638e,0x4b4c,0x5b8e,0x4b0d,0x4acc,0x4acc,0x532c,0x4aec,0x4b0c,0x4acc,0x530d,0x4aec,0x42cb,0x4acb,0x4acb,0x4aac,0x4acb,0x52cb,0x530c,0x5aec,0x52ec,0x5b2d,0x4aec,0x4aec,0x52cc,0x530c,0x5b0c,0x530d,0x42ec,0x4b0d,0x52ec,0x5b0d,0x530c,0x530c,0x5b0d,0x530d,0x532d,0x5b0c,0x5b4d,0x530c,0x636e,0x4b2d,0x536e,0x5b6e,0x530d,0x6b8d,0x638e,0x632c,0x73af,0x5b2d,0x5bcf,0x4b4d,0x638e,0x63cf,0x63af,0x4aeb,0x62ec,0x7b0c,0x7aca,0x7a8b,0x728a,0x7aab,0x7aab,0x7aab,0x7aaa,0x72ca,0x72ab,0x72ab,0x7aab,0x72ab,0x7aab,0x7aab,0x72ab,0x72ab,0x728a,0x728b,0x7aab,0x7a6a,0x7a6a,0x7a8a,0x7aab,0x7aaa,0x7aaa,0x7a8a,0x726a,0x7acb,0x7aec,0x7a69,0x724a,0x7a6a,0x7229,0x7249,0x7a6a,0x7269,0x6a49,0x6a49,0x6a29,0x7a49,0x7249,0x7249,0x7229,0x7229,0x7229,0x7249,0x7269,0x7249,0x726a,0x6a49,0x6a29,0x6249,0x6a49,0x7269,0x726a,0x7a6a,0x7229,0x6a49,0x6229,0x6a08,0x6a29,0x6a49,0x6a49,0x6a49,0x6a28,0x6a28,0x6208,0x6208,0x6208,0x6a08,0x61e8,0x61e8,0x61c8,0x61c8,0x59c8,0x59a8,0x69c8,0x61e8,0x61c7,0x69e8,0x5208,0x3a07,0x39c7,0x532d,0x5b4e,0x4acb,0x4b0b,0x5b6e,0x320a,0x63af,0x42ab,0x6bae,0x4b0c,0x536d,0x326a,0x636e,0x424a,0x530c,0x428a,0x4a6b,0x4aab,0x422a,0x426a,0x4249,0x3a29,0x4a8a,0x530d,0x3a8b,0x2a29,0x3209,0x4a8b,0x4a8b,0x5aec,0x3a4a,0x322a,0x426b,0x4a8a,0x428b,0x4209,0x422a,0x426a,0x3a49,0x3a08,0x428a,0x42cc,0x3a4a,0x3187,0x31e8,0x31c9,0x4acc,0x530c,0x41c8,0x2966,0x39c8,0x4a6b,0x52cc,0x422a,0x31c7,0x2187,0x2a2a,0x3228,0x4208,0x4a29,0x4a6a,0x3a6a,0x2186,0x39e8,0x3a89,0x4b0c,0x3229,0x1926,0x1988,0x3a4a,0x3a8b,0x3229,0x426b,0x52eb,0x3a6a,0x29c9,0x3a49,0x4a6b,0x52ac,0x424a,0x2a08,0x2166,0x3a8a,0x5b6d,0x4a2a,0x2987,0x31a8,0x3208,0x4209,0x39c7,0x31e9,0x31e9,0x3a4a,0x29c7,0x21a7,0x3229,0x3a6a,0x39c8,0x2166,0x2166,0x31c7,0x3a49,0x3249,0x2966,0x2144,0x9d96,0x31a8,0x18e3,0x1925,0x2945,0x2145,0x1944,0x4247,0x52e9,0x5aea,0x5aea, +0xa658,0x42c9,0x52e9,0x5ac9,0x52ea,0x530a,0x4207,0x3166,0x422a,0x4a28,0x3a29,0x39a8,0xbd95,0xb6da,0x2946,0xadf7,0x9535,0xa555,0x9554,0x7451,0x94d3,0xadf7,0xad96,0x9514,0x9514,0x9d96,0x9d76,0xa596,0x9d75,0x8d55,0x9d55,0x9555,0xa535,0x9d36,0x9576,0xadb7,0x9d77,0x94d5,0x9cf5,0xb618,0xbe9a,0xb5d7,0x9d15,0xa596,0xadd7,0xbdf8,0xc679,0x9d55,0x9d35,0xb5f7,0xcefb,0xbe79,0x9d75,0x94f4,0xad96,0xce9a,0xcf1c,0xa535,0x9d35,0xa5f7,0xae17,0xbeba,0xb618,0x9d75,0xa638,0xb639,0xb639,0xbe78,0xbe9a,0xb658,0xc679,0xceda,0xadb8,0xcf1b,0xae59,0xadb7,0xc6ba,0xbe79,0xbe99,0xae59,0xb659,0xc69a,0xbe18,0xb618,0xcf1c,0xbe9a,0xadd7,0xae18,0xb659,0xcedb,0xcefb,0xa5f7,0x9d14,0xb639,0xcefb,0xc67a,0xae38,0x9514,0xb639,0xd6db,0xcedb,0xbe79,0xae58,0xdf9d,0xae38,0xb69a,0xdf1c,0xb65a,0xe79e,0xd6fc,0xef7e,0xdf9e,0xadb6,0xf7ff,0xb639,0xefde,0xefff,0xc6db,0x428a,0x7acb,0x82ca,0xa513,0xb5b6,0xb618,0xc659,0xbe18,0xbe38,0xbe37,0xbe38,0xc67a,0xbe59,0xb618,0xbe38,0xbe59,0xadf7,0xadf7,0xb618,0xb618,0xadd7,0xadf7,0xadd7,0xa596,0xadb7,0xadb7,0xadd7,0xadd7,0xb5d7,0xadf7,0xae17,0xb617,0xb617,0xbe38,0xbe58,0xbe38,0xbe38,0xbe58,0xbe58,0xbe79,0xb658,0xb679,0xbe59,0xbe18,0xb5d7,0xb5d7,0xbe39,0xbe59,0xb659,0xb639,0xae18,0xb658,0xbe59,0xb618,0xb5f7,0xb618,0xb638,0xc679,0xc67a,0xbe79,0xae59,0xae38,0xbe79,0xbe58,0xbe39,0xbe59,0xc67a,0xbe59,0xbe79,0xbe59,0xb658,0xbe59,0xbe59,0xbe79,0xb659,0xb658,0xbe79,0xbe79,0xbe7a,0xbe79,0xb638,0xb618,0x9bf1,0x79e9,0x4208,0x3a07,0xf7ff,0xe7be,0xc67a,0xceba,0xdf9e,0x6b8f,0xe7de,0x9514,0xe73b,0xb5d7,0xcf1b,0x7c51,0xdf3c,0x73d0,0xb618,0xad96,0x94f3,0xadb5,0xa597,0xadf8,0x8cd3,0x8411,0xb595,0xcedc,0xadf8,0x7c11,0x6b6e,0xa4f3,0xb618,0xb638,0x8451,0x8411,0x9cf4,0x9db6,0x8cd3,0x8cb4,0x9d55,0x9514,0x8cd3,0x638f,0x8cd3,0xb639,0xa5d8,0x636f,0x534d,0x7c32,0xad96,0xd6db,0x8c52,0x5aec,0x7bf0,0xad97,0xb618,0x8453,0x736e,0x7cb2,0x7c72,0x73f1,0x7c32,0x8493,0x8d15,0x7451,0x4acb,0x530c,0xa536,0xb618,0x7c71,0x5acc,0x52cd,0x9514,0xb618,0x73af,0x8432,0x7c32,0x8c53,0x632d,0x636e,0x9514,0x9d34,0x7c50,0x3acb,0x4aab,0x8431,0xb5b5,0x8410,0x52ab,0x632d,0x7bf0,0x6bd0,0x6bae,0x6bb0,0x7c31,0x73ef,0x52cc,0x52cc,0x7c10,0x9d35,0x7c11,0x4a49,0x4acc,0x73f0,0x8cb2,0x8451,0x528c,0x2146,0xa5d6,0x41a8,0x18e4,0x1925,0x2925,0x2145,0x2164,0x4a27,0x5aea,0x62ea,0x5aeb, +0xa637,0x4ae9,0x5aea,0x5ac9,0x52e9,0x52e9,0x3a28,0x3166,0x4229,0x3a28,0x3a28,0x3987,0xbd95,0xb6ba,0x2946,0xa596,0x94f4,0x9515,0x9d14,0x7c92,0x9514,0xae18,0xa5b6,0x9534,0x8cf4,0x94f4,0x9514,0xadb7,0x9514,0x9575,0x9d76,0x9d55,0x9cf4,0x9d55,0x9d96,0xa555,0x9d55,0x9cf4,0x9cd4,0xae17,0xae17,0xa596,0x9cd4,0x94b3,0xa5d7,0xc65a,0xbe79,0x8cb3,0x94b3,0xadd7,0xbe99,0xb618,0x9cf4,0x94d3,0xa595,0xceba,0xbe79,0xa555,0x94d3,0x9db6,0xadd7,0xbe79,0xa5b6,0x9d75,0xa5d7,0xb618,0xb638,0xadf7,0xae18,0xb618,0xbe18,0xbdd7,0xb596,0xceba,0xadf7,0xadb6,0xb618,0xbe58,0xae18,0xbe58,0xae18,0xadb7,0xb5d7,0xbe18,0xcefc,0xc679,0xa576,0xad77,0xbe19,0xd73c,0xdf1c,0xa576,0x9cd3,0xb5f8,0xd73c,0xd6fb,0xb5b7,0x9d34,0xb5f8,0xd6fb,0xcefb,0xb638,0xadd7,0xdf3d,0xad55,0xb67a,0xdefc,0xb639,0xdf5c,0xce9a,0xef7d,0xdf7d,0xad76,0xef9e,0xb5d8,0xf7de,0xe79d,0xc6fc,0x4a6a,0x82cb,0xacb1,0xefde,0xefbe,0xefbe,0xefbe,0xefbe,0xefbe,0xef9d,0xef9e,0xe79e,0xe79e,0xe79e,0xe79d,0xe77e,0xe79e,0xef9d,0xef7d,0xef9e,0xe79d,0xef9e,0xef9e,0xe79e,0xef9d,0xef7d,0xe79d,0xe77d,0xe77d,0xe77d,0xe79e,0xe7be,0xe77d,0xe79d,0xe77d,0xe77d,0xe77d,0xe77d,0xe79d,0xe77d,0xdf5d,0xe77d,0xe77d,0xe77d,0xdf5c,0xe77d,0xe77d,0xdf5d,0xe77d,0xe77d,0xdf5d,0xdf7d,0xe77d,0xe77d,0xd77c,0xdf5d,0xdf5c,0xe75d,0xe75d,0xdf5c,0xdf5c,0xe75d,0xe77d,0xdf5c,0xdf5c,0xd73c,0xd71c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xdf1c,0xdf1c,0xdf1c,0xdf1c,0xdefb,0xdf1c,0xe73e,0x61a9,0x59e8,0x39c6,0xef9e,0xcedb,0xb5d8,0xbe58,0xd71c,0x6b6e,0xdf7d,0x94f3,0xd71a,0xa576,0xce99,0x8451,0xceda,0x638e,0xb5f7,0x9d54,0x8cf4,0x9d55,0xad95,0xadb7,0x8472,0x6baf,0x9cf4,0xc6da,0xa596,0x738f,0x530d,0x94d3,0xb617,0xadf7,0x7c51,0x73ef,0x94b2,0x9d34,0x8451,0x94b4,0x9d34,0x9d14,0x8cb3,0x5b8e,0x8472,0xadd7,0xb5d7,0x636f,0x5b2d,0x7c31,0xb5d7,0xc679,0x7bd0,0x5aab,0x73af,0xa555,0x9d75,0x8451,0x7bd0,0x73ef,0x7c51,0x8411,0x7410,0x8cf3,0xa596,0x7410,0x4acb,0x5b2e,0x9514,0xadb6,0x7c51,0x4a4b,0x52ed,0x94f3,0xa575,0x73cf,0x8411,0x8c71,0x73cf,0x5b4e,0x5b6f,0x8472,0xa553,0x7c31,0x4acb,0x4a4a,0x8472,0x9d54,0x7bef,0x5acc,0x630d,0x6bcf,0x6baf,0x6b8e,0x73d0,0x7c11,0x6bae,0x3aab,0x428b,0x73f0,0x9513,0x6baf,0x426a,0x3a2a,0x6baf,0x8492,0x8472,0x4a6a,0x3187,0xa5d7,0x4188,0x18e4,0x1905,0x2145,0x1965,0x1944,0x4a27,0x52e9,0x62ea,0x5b0a, +0xa638,0x4aa9,0x5aea,0x5b0a,0x5aea,0x52ca,0x2a28,0x2966,0x424a,0x3a29,0x3a28,0x3967,0xc5b6,0xae7a,0x3167,0xa595,0x9d55,0x9d35,0x9514,0x8cb3,0x9d34,0xadd6,0xadd7,0x9514,0x84d3,0x8cf3,0x9535,0xadd7,0x9514,0x9d95,0x9d55,0x9d35,0x9d15,0x9d55,0x9d75,0x9d55,0x9d55,0x94f4,0x9cf5,0xa5f7,0xa617,0xadb7,0x94d4,0x94b4,0xa596,0xbe9a,0xb637,0x94b3,0x94f3,0xa5d7,0xbe9a,0xb659,0x94d4,0x9cd3,0xb5d6,0xd6fb,0xc659,0xa596,0x9cd3,0xa5b6,0xb618,0xce99,0xadb7,0xa596,0xa5d6,0xbe58,0xc679,0xb5f8,0xadf8,0xae18,0xbdf8,0xbdd8,0xb5d8,0xb658,0xb638,0xadd7,0xb5f8,0xbe38,0xb638,0xbe79,0xae18,0xb5d7,0xb5b7,0xc659,0xd71c,0xc69a,0xad96,0xa576,0xc659,0xd75c,0xd6fb,0xad96,0x9cb3,0xb618,0xdf3c,0xceda,0xb5d7,0xa555,0xb5f8,0xcedb,0xcedb,0xb618,0xadf7,0xdf5d,0xad76,0xbe79,0xe71c,0xae18,0xdf5c,0xc679,0xdf3b,0xe79e,0xad76,0xefbe,0xb5b7,0xf7be,0xe77d,0xcf1c,0x424a,0x8aab,0xb534,0xe79d,0xe77d,0xe77d,0xe79d,0xe77d,0xdf5c,0xe77d,0xe77d,0xe77e,0xe77d,0xe77d,0xe75c,0xe77d,0xe77d,0xe75d,0xe75d,0xdf7d,0xe77d,0xdf7c,0xdf7d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xdf5c,0xe75d,0xe75c,0xe75d,0xe77c,0xe77d,0xe73d,0xe75d,0xef7d,0xdf3c,0xdf5c,0xe77d,0xe73c,0xdf3c,0xdf5c,0xdf3c,0xdf5c,0xdf5d,0xdf3c,0xdf5c,0xdf5c,0xdf3c,0xdf5c,0xe75d,0xdf5d,0xdf3d,0xdf1c,0xdf3c,0xdf5c,0xdf3c,0xe73c,0xdf1c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xd71c,0xdf3c,0xd73c,0xd71c,0xd71b,0xd71b,0xd6fb,0xd6fc,0xd6fb,0xd6fb,0xd71b,0xd71b,0xd71b,0xcefb,0xd6fb,0xd6fb,0xd6fb,0xcefc,0xdf5d,0x59ea,0x61c8,0x31c6,0xdf5c,0xcedb,0xbe19,0xbe58,0xd6fb,0x6b4d,0xe77d,0xa596,0xd6da,0xa576,0xc699,0x8cb2,0xceda,0x6b8f,0xb618,0x9d55,0x8cd3,0x9d55,0xb596,0xad97,0x7432,0x63af,0x9d35,0xcefa,0xadb6,0x7bd0,0x6b4e,0x9d35,0xa5b6,0xadb6,0x8451,0x7c10,0x94f4,0x9d34,0x7c72,0x94d4,0x9d34,0xa554,0x8452,0x6b8f,0x8c93,0xb5f8,0xa5b5,0x6bb0,0x5b6d,0x7410,0xadb6,0xb617,0x6bef,0x52aa,0x7bcf,0x9d34,0x9555,0x8491,0x7bf0,0x8431,0x7c31,0x73af,0x7411,0x9534,0xa576,0x7411,0x42ac,0x5b2e,0x8cf4,0xadb6,0x7c50,0x528c,0x5b0d,0x8c92,0xa575,0x7c10,0x7c31,0x8472,0x73d0,0x530d,0x636e,0x8492,0xa554,0x7c31,0x428b,0x4aab,0x8492,0x9d73,0x7c10,0x52ec,0x5b0c,0x73d0,0x6baf,0x636e,0x73b0,0x8471,0x6baf,0x428b,0x3a8b,0x73f0,0x8d13,0x73d0,0x426a,0x3a49,0x6b8e,0x8cb2,0x7c51,0x4a4a,0x3186,0x9d75,0x41a9,0x1904,0x1925,0x2145,0x2186,0x2125,0x4227,0x52ea,0x62ea,0x5aea, +0x9e37,0x42aa,0x52ea,0x5aea,0x5aca,0x4aa9,0x3228,0x2966,0x4249,0x3a49,0x3a29,0x4187,0xbdb6,0xa67a,0x3947,0xa5b6,0x9d55,0x9d36,0x8d14,0x8cb3,0x9cf4,0xad96,0xadb6,0x9d35,0x8cd4,0x94d4,0x9d35,0xa5d7,0x8cf4,0x9534,0x9d76,0x94f4,0xa535,0x9d55,0x9d95,0x9d76,0x9d75,0x94f5,0x9d15,0x9d96,0xadf7,0x9596,0x94b4,0x9cf5,0xa577,0xbe9a,0xbe38,0x94b3,0x8cd3,0xa5b6,0xceba,0xbe7a,0x8cf4,0x9cf3,0xb5b6,0xcefa,0xc679,0xadb6,0x94d3,0xadd7,0xb618,0xbe79,0xa5b6,0x9d75,0xa5d6,0xbe59,0xbe79,0xb5f8,0xa5b6,0xb618,0xb617,0xb5f7,0xb5d8,0xbe58,0xb618,0xadb7,0xbe59,0xb5f7,0xb617,0xb659,0xb5f8,0xb5d8,0xb5d8,0xbe59,0xcefb,0xcebb,0xa576,0xa535,0xbe38,0xd73b,0xcf1b,0xad96,0x94f4,0xb618,0xdf3c,0xd6bb,0xad97,0xa535,0xb5f8,0xcedb,0xcedb,0xbe38,0xa5f7,0xdf5d,0xad76,0xbe9a,0xdefc,0xae18,0xe77d,0xc69a,0xd6fb,0xdf7e,0xad35,0xefde,0xadb7,0xefbe,0xe77e,0xd73d,0x4229,0x828b,0xbd34,0xefbe,0xdf5d,0xe75d,0xe77d,0xe79d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xdf5d,0xe77d,0xdf7d,0xdf5d,0xef7e,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe75d,0xdf5c,0xdf5c,0xe75c,0xe77e,0xce9a,0xadb6,0xce99,0xe75c,0xbdb5,0xbdd7,0xdf1a,0xe77c,0xc679,0xdf3b,0xdf3c,0xe75c,0xc638,0xad55,0xdf3c,0xbe39,0xb596,0xbdd6,0xdf3c,0xdf1c,0xdf5c,0xdf3c,0xdf3c,0xdf5c,0xdf3c,0xe73c,0xdf3c,0xd73c,0xd71c,0xd71c,0xdf3c,0xdf3c,0xd71c,0xd71c,0xd71c,0xd6fb,0xd6fb,0xd6fb,0xdf1c,0xd6fb,0xdf3c,0xcefb,0xcefb,0xd6db,0xd6fb,0xcedb,0xcefb,0xdf9e,0x59ea,0x6209,0x31c6,0xe77c,0xcedb,0xb5d8,0xbe58,0xcefb,0x6b4d,0xe7be,0xad76,0xceba,0xadb7,0xc678,0x8c93,0xceba,0x6b2e,0xbe38,0x9d35,0x8cd4,0xa555,0xb5d7,0xa555,0x7411,0x638f,0x9d55,0xcefb,0xc638,0x73cf,0x738e,0xa555,0xadb7,0xa575,0x94b4,0x8451,0x94f4,0x9534,0x8472,0x94d3,0x9d55,0x9513,0x7411,0x5b2d,0x8c93,0xbe38,0xa5b6,0x6bb0,0x5b0c,0x73f0,0xadf7,0xadd7,0x73ef,0x52aa,0x7b8f,0xa534,0x9534,0x8491,0x7bf0,0x8472,0x73f1,0x738e,0x7410,0x9cd2,0x9d36,0x7411,0x4aac,0x6b4e,0x9534,0xb5f8,0x7c11,0x52ec,0x630c,0x7c72,0x9533,0x73ef,0x7c11,0x8c92,0x73f0,0x530c,0x632e,0x9515,0x9534,0x7431,0x426a,0x4aab,0x7c52,0x9d34,0x7c10,0x52ec,0x636e,0x73af,0x6b8e,0x630d,0x73af,0x7c72,0x6baf,0x428c,0x426b,0x6bf0,0x8cf3,0x6bb0,0x3a29,0x3a08,0x6b6e,0x8cb2,0x8471,0x4a4b,0x2986,0x9d55,0x3988,0x18e3,0x1925,0x2125,0x2965,0x2105,0x4247,0x52ca,0x5b0a,0x62ea, +0x9e17,0x42aa,0x5aea,0x5ae9,0x5aca,0x52c9,0x3228,0x3187,0x4229,0x4228,0x3a08,0x3966,0xc5f7,0x9e7a,0x4168,0xadb6,0x9d55,0xa596,0x8cd3,0x8492,0x8cb3,0xa5d7,0xa5d6,0x9d55,0x8492,0x9514,0x9d35,0xa5b7,0x9535,0x9515,0x9d75,0x9514,0xa596,0x9d76,0x9575,0x9d96,0xa576,0x9515,0xa556,0x9db7,0xa5f6,0x9d96,0x94d4,0x9d14,0xad96,0xbe7a,0xb639,0x8c72,0x8c92,0xadb6,0xc699,0xbe58,0x9cf4,0x9cd3,0xadb6,0xc6da,0xbe79,0xad95,0x9d14,0xa576,0xbe58,0xbe99,0xa596,0xa555,0xadd6,0xbe59,0xc679,0xb5f8,0xadb6,0xbe59,0xae18,0xbe18,0xadb7,0xbe59,0xadd7,0xb617,0xc69a,0xadd7,0xb618,0xb699,0xb618,0xadb7,0xb5d7,0xc659,0xd71c,0xc69a,0xa576,0x9cf5,0xc659,0xd73c,0xdf3c,0xb5b7,0x9cf5,0xbe18,0xd71c,0xcefb,0xad96,0xa555,0xb618,0xc69a,0xcedb,0xb638,0xadf8,0xdf7d,0xad76,0xbe7a,0xd6db,0xb639,0xe77d,0xc69a,0xceba,0xdf9e,0xa535,0xefdf,0xadb7,0xef9d,0xe79d,0xcf1c,0x3a08,0x7a8b,0xb534,0xefbe,0xdf5d,0xe77d,0xe77d,0xdf5d,0xe77d,0xe77d,0xe75d,0xe79d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xe75d,0xe77d,0xe75d,0xdf5c,0xe73d,0xdf3c,0xefbf,0x8cb2,0xd73c,0xceba,0xdf5d,0x9452,0xbdf8,0xad75,0xf7ff,0x8cb3,0xa534,0xef9d,0xbe18,0xbdf7,0xc699,0xceba,0x8c32,0xce39,0xd71b,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf5c,0xdf3c,0xdf1c,0xdf3c,0xd71c,0xdf1c,0xdf3c,0xdf3c,0xd73c,0xd73c,0xd71c,0xd71b,0xd73c,0xd6fb,0xd6fb,0xdf3c,0xd6fb,0xd71c,0xd71c,0xd6fb,0xdefb,0xd6fb,0xd6fb,0xd6bb,0xe77e,0x620b,0x6208,0x31a6,0xe77d,0xcefb,0xbdf8,0xc658,0xcf1c,0x634d,0xdf7c,0xa535,0xceda,0xb5d7,0xbe38,0x8cb3,0xc699,0x6b0e,0xc679,0x9d14,0x94d4,0xa535,0xbe59,0x9d55,0x6bf0,0x63af,0x9534,0xd73c,0xbe38,0x73f0,0x6b4e,0x94f4,0xb5f7,0xa595,0x8cb3,0x8472,0x8cd3,0x94f3,0x8452,0x94d3,0xad75,0xa555,0x73f0,0x5b0d,0x7c72,0xc679,0xad96,0x638f,0x52ec,0x7431,0xadf7,0xb618,0x8431,0x5b0c,0x6b6e,0x9d75,0x9d54,0x7c71,0x7c30,0x84b3,0x7411,0x636d,0x8451,0x94d3,0x9d35,0x7c51,0x4a8b,0x636e,0x9534,0xbe58,0x8432,0x52cc,0x5acc,0x94d3,0x8cf3,0x7410,0x7c10,0x94d3,0x6bf0,0x52ec,0x5aec,0x9514,0x9534,0x7431,0x4249,0x52cc,0x7c51,0x9d54,0x73ef,0x5aec,0x6b8e,0x6bcf,0x6b6d,0x632d,0x73af,0x8472,0x638e,0x4acc,0x426b,0x7430,0x8d13,0x63f0,0x3a09,0x31e8,0x5b4e,0x8cb3,0x8471,0x426b,0x2985,0x9d55,0x39c9,0x18c3,0x1945,0x2146,0x2166,0x2125,0x4247,0x5aea,0x5aea,0x62eb, +0x9617,0x4aa9,0x5aea,0x5aca,0x52ca,0x5aaa,0x3228,0x31a7,0x3a09,0x3a29,0x3a09,0x3967,0xc5f7,0x9618,0x4188,0xa596,0xa5b7,0x9d75,0xa595,0x7c72,0x84b2,0xadf7,0xb658,0x94f4,0x7c51,0x8cf3,0x9d35,0xadb7,0x9d55,0x94b3,0x9555,0x9d35,0xadb7,0x9d76,0x9575,0x9d76,0xa556,0x9cf4,0x9d35,0x9dd7,0xadd7,0x9d76,0x94d4,0x94d4,0xa5b6,0xbe99,0xae18,0x94b3,0x9493,0xadb7,0xbe99,0xbe79,0xa535,0x94b3,0xad95,0xc6ba,0xc679,0xad76,0x94d3,0xa575,0xbe79,0xbe7a,0xa576,0x9d34,0xadf7,0xbe59,0xbe59,0xb5f8,0xa596,0xadd7,0xb618,0xbe18,0xb5d7,0xbe79,0xa5d7,0xadb6,0xbe79,0xadd7,0xb619,0xbeba,0xb638,0xad96,0xb5b7,0xbe18,0xcefb,0xbe79,0xad76,0xa515,0xc638,0xd75c,0xdf1c,0xad97,0x9d35,0xb5f8,0xd71c,0xd71c,0xb5b7,0x9d34,0xbe59,0xce9a,0xd6db,0xbe38,0xadf7,0xdf7d,0xad55,0xc69a,0xd6db,0xb659,0xe75d,0xc6ba,0xd6da,0xe7be,0xa4f4,0xefde,0xb5d7,0xef9d,0xe75c,0xcf1c,0x3a08,0x828b,0xb534,0xe79e,0xdf5d,0xe75d,0xe77d,0xe75d,0xe77d,0xe75d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xdf5c,0xe73c,0xdf3c,0xe75c,0xdf3c,0xdf5c,0xe77e,0xbe59,0x9d34,0xc658,0xdf7d,0x73cf,0x9d13,0xceda,0xc6da,0x9d55,0x8472,0xe75c,0xb5d8,0xe77d,0xdf3c,0xe77d,0x8cb3,0x9cf3,0xa554,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xd73c,0xdf3c,0xdf3c,0xd71b,0xd71b,0xdf1c,0xdf3c,0xe77d,0xd73c,0xd71c,0xdf3c,0xd71c,0xd71c,0xdf1c,0xd71c,0xd71c,0xdf3c,0xd6fb,0xcefb,0xd73c,0xd6fc,0xcedb,0xcefb,0xcefb,0xd6db,0xd75d,0x620b,0x5a08,0x31a7,0xe77d,0xcefb,0xbe39,0xc658,0xcf1c,0x636e,0xdf5c,0x9d35,0xceda,0xadb7,0xc699,0x9d15,0xc679,0x6b4e,0xce9a,0x94d4,0x8c93,0xa515,0xc679,0xa596,0x73f0,0x636e,0x94f4,0xd73b,0xb5f7,0x73ef,0x6b6e,0x94f4,0xa595,0xa555,0x8492,0x7c72,0x94f3,0x94d3,0x7c31,0x8c92,0xad96,0xa576,0x7410,0x532d,0x8c93,0xc659,0xa596,0x638f,0x52ec,0x7c31,0xadf7,0xbe39,0x8410,0x630c,0x6b6f,0x9d55,0x9513,0x8c92,0x8472,0x8492,0x7431,0x538e,0x7c30,0x94f4,0x9d35,0x8431,0x4a8b,0x63af,0x94d3,0xbe17,0x7c31,0x52ac,0x5b0d,0x8c93,0x9d34,0x73d0,0x8492,0x8cb3,0x73d0,0x3aab,0x4b0d,0x94d3,0x9d34,0x7c51,0x4229,0x52ab,0x7c71,0x9d74,0x6bcf,0x632d,0x6b4e,0x73ef,0x630d,0x5b0c,0x73f0,0x7c30,0x6baf,0x3a8c,0x3a6a,0x7430,0x9534,0x7410,0x3a09,0x31e8,0x638e,0x8cd3,0x7c50,0x424a,0x3187,0x9534,0x524b,0x10c3,0x1925,0x1946,0x2987,0x18e4,0x4227,0x5aea,0x62eb,0x630b, +0x9e17,0x42a8,0x5aea,0x5ac9,0x5ac9,0x4aa9,0x3a28,0x2985,0x3228,0x3a49,0x3a29,0x3167,0xc617,0x9e59,0x39a9,0xa575,0xadd6,0x9d75,0x8cb3,0x7c51,0x84d3,0xadd7,0xae18,0x84d3,0x8451,0x8c92,0x9d55,0xae18,0x9d55,0x94d3,0x9514,0xa575,0xadb7,0x9d76,0x9d55,0x9556,0xa576,0xa555,0x9535,0xa5d7,0xa617,0xa596,0x9d15,0x94f4,0xa596,0xb637,0xa5f8,0x8cb3,0x94b4,0xadb7,0xc6da,0xc69a,0x9d55,0x94b2,0xa575,0xc6ba,0xc69a,0xad76,0x94d3,0xadb6,0xbe58,0xc6ba,0xadb6,0x9d14,0xadd7,0xbe59,0xbe59,0xb5d8,0xadb7,0xadd7,0xb5f8,0xbe38,0xbe18,0xbe9a,0xa5d7,0xadb6,0xc6ba,0xadd8,0xb639,0xbe59,0xb638,0xad96,0xad96,0xbe18,0xceba,0xbe99,0xa556,0xa535,0xbe18,0xd75c,0xdf3c,0xad97,0x94d3,0xb618,0xd71b,0xd71b,0xadb6,0xa535,0xbe39,0xc69a,0xcebb,0xb618,0xadf7,0xe77d,0xb596,0xc6bb,0xd6ba,0xbe9a,0xef7d,0xc69a,0xdefb,0xdf7e,0xa514,0xefdf,0xb5f8,0xef9d,0xe77c,0xd73d,0x39c8,0x7a6a,0xad14,0xe77e,0xe77d,0xe75d,0xe77d,0xe77d,0xe75d,0xe77d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xdf5d,0xe77d,0xe77d,0xdf5d,0xe75c,0xdf5c,0xe75d,0xe75d,0xe75d,0xe75d,0xe75c,0xdf5c,0xd73d,0xad75,0xe79e,0x9513,0xe77e,0x9555,0xe79d,0xe73d,0x8cf3,0xb659,0xb659,0xc638,0xbeba,0xb5d7,0xb5f7,0xcefa,0x8cd4,0xc659,0xceba,0xd73c,0xdf1c,0xdf1c,0xe73c,0xdf3c,0xdf3c,0xdf3c,0xd71c,0xdf3c,0xdf3c,0xdf3c,0xdf3c,0xd71c,0xdf1c,0xdf1c,0xdf3c,0xd6fc,0xdf1c,0xdf1c,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd6db,0xd6fb,0xcf1b,0xd6fb,0xdf5e,0x59c9,0x6209,0x29a6,0xe77c,0xcefb,0xb619,0xc658,0xcefb,0x6b6f,0xe79d,0x9556,0xd71b,0xa596,0xceba,0x94d4,0xc699,0x6b6e,0xc679,0x9cf4,0x8492,0xa555,0xce99,0x9d75,0x73d0,0x632e,0x9d55,0xceda,0xb596,0x73cf,0x5b2d,0x9d14,0xa595,0x9d14,0x8cb3,0x8493,0x9514,0x8cb3,0x73f0,0x8c93,0xb5f7,0xa576,0x7c32,0x52ed,0x8cb3,0xbe59,0xadb6,0x6baf,0x4aac,0x7c11,0xadd7,0xae18,0x7c10,0x630d,0x73af,0x9533,0x8d13,0x7c51,0x8c92,0x8472,0x7c51,0x5b4e,0x7c31,0x9d36,0xa576,0x7c31,0x52ac,0x638e,0x94d3,0xb5d7,0x7c10,0x52ac,0x5aec,0x84d3,0x8cf3,0x73d0,0x7c31,0x8cb3,0x73f0,0x3a8c,0x4acd,0x9535,0xa535,0x7c10,0x3a09,0x4aab,0x7c51,0x9513,0x73cf,0x630d,0x634d,0x73cf,0x632d,0x634e,0x7c11,0x8492,0x6baf,0x3a6b,0x426a,0x73cf,0x9554,0x740f,0x39e8,0x39e8,0x5b6d,0x9514,0x7431,0x528a,0x31a8,0x8d13,0x4a4b,0x08c3,0x1104,0x2166,0x3946,0x2925,0x4227,0x5b0a,0x5aea,0x5b0a, +0x9df7,0x4ac9,0x52c9,0x52ca,0x52c9,0x52c9,0x3a08,0x2166,0x3a49,0x4229,0x31e8,0x2967,0xc617,0x9e39,0x41c9,0x9d55,0xb617,0xa5b6,0x8cd3,0x8451,0x8cb2,0xadd7,0xadf7,0x94f4,0x8c31,0x8472,0xa596,0xb638,0x9d75,0x8cd4,0x8cb3,0xa596,0xa5b6,0x9d76,0x9514,0x9535,0x9d76,0x9d35,0x9514,0xa5d7,0x9dd6,0xa5b7,0xa536,0xa515,0xa5b7,0xae38,0xadf7,0x8cd3,0x94b4,0xadd7,0xc6da,0xc679,0x9d14,0x8c92,0xa5b6,0xc6da,0xbe7a,0xadb7,0x94f4,0xa596,0xbe79,0xcefb,0xadd7,0xa576,0xa596,0xc679,0xbe79,0xb5f8,0xadd7,0xadd7,0xb5f8,0xbe18,0xb618,0xae18,0xa618,0xad96,0xc679,0xadb7,0xa5f8,0xb69a,0xb5f8,0xad96,0xad96,0xbe38,0xcefb,0xc69a,0xa576,0xa535,0xbe39,0xd75c,0xd73c,0xadb7,0x94b3,0xbe59,0xd71c,0xcefb,0xadb7,0xa555,0xb618,0xcedb,0xc69a,0xb618,0xadd7,0xe77d,0xb576,0xc6bb,0xd69a,0xb659,0xef7d,0xbe9a,0xdf1c,0xd77e,0x9d14,0xefdf,0xadd7,0xef7d,0xdf7d,0xcf5d,0x31a8,0x826b,0xb514,0xe75d,0xe73d,0xe75d,0xe77d,0xe75d,0xe77d,0xe77d,0xe77d,0xdf5d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe75d,0xe77d,0xdf5d,0xe75c,0xe77d,0xe77d,0xdf3c,0xe75c,0xe75d,0xdf3c,0xe77d,0xe77d,0xe77d,0xdf3c,0xdf7d,0xbe79,0xb5f7,0xc699,0xe79d,0xd6fb,0xdf3c,0xdf5c,0xc699,0xdf9d,0xdf7d,0xc6da,0xdf5d,0xbe38,0xb618,0xd73c,0xc69a,0xb5f7,0xbe37,0xd75c,0xdf3c,0xdf1c,0xdf1c,0xdf3c,0xdf3c,0xd73c,0xdf3c,0xdf1c,0xd71c,0xd71b,0xdf1c,0xd71c,0xd71c,0xdf1c,0xdf3d,0xd71c,0xd6fb,0xdf1c,0xd71c,0xd71b,0xd6fb,0xd6fb,0xd6fb,0xd71c,0xcedb,0xcedb,0xd6fb,0xd6fb,0xdf5d,0x5a09,0x61c8,0x31e7,0xe77b,0xd6fb,0xb639,0xb617,0xd6fc,0x630d,0xdf7d,0xa577,0xdf1b,0xa576,0xce79,0x94b3,0xceda,0x632e,0xbe79,0x8c72,0x7c72,0x9d76,0xc679,0xadb7,0x6b8f,0x634e,0xa575,0xceda,0xadb7,0x73f0,0x632d,0x9cf4,0xa5b6,0x9514,0x8c92,0x94d4,0x94f3,0x7451,0x73cf,0x8cd3,0xb618,0xa576,0x6c30,0x4acc,0x8492,0xbe79,0xad96,0x6bd0,0x4aac,0x73d0,0xb5f7,0xb659,0x7c31,0x5aed,0x6baf,0x9512,0x9513,0x6c10,0x8492,0x8c93,0x7c11,0x636e,0x73f0,0x9d55,0xadb7,0x7411,0x4aac,0x5b6e,0x9514,0xadb7,0x7c31,0x5acd,0x52ac,0x8cd2,0x84d3,0x6c10,0x8431,0x9cd4,0x6bb0,0x4acc,0x4a8c,0x9555,0xa555,0x7c11,0x3a29,0x4acb,0x7c51,0x9533,0x7bf0,0x630c,0x634d,0x6baf,0x5b4d,0x5b0c,0x7411,0x94d3,0x6b8f,0x3a6b,0x426a,0x7c31,0x9554,0x6bef,0x3a09,0x3208,0x5b4e,0x8cd3,0x7c51,0x52ab,0x39c9,0x9514,0x5aad,0x00c3,0x1905,0x2165,0x2967,0x2125,0x39e6,0x5309,0x5b0a,0x5aea, +0x8dd6,0x4aa9,0x5aea,0x5aea,0x52c9,0x4ac9,0x4208,0x3186,0x3a49,0x3a28,0x39e8,0x3167,0xce37,0x9e19,0x41c8,0x9d55,0x9d76,0x9d96,0x8cd3,0x9493,0x9492,0xadd7,0xadf7,0x94f4,0x8411,0x8492,0xa596,0xb638,0x9d55,0x8cb3,0x94d4,0x9d76,0xadd7,0xa596,0x8cf3,0x9575,0xa596,0x9514,0x9d35,0xa5d7,0xa596,0x9d96,0xa515,0xad15,0xa5f7,0xae18,0xb618,0x94b3,0x9493,0xadf7,0xbeba,0xbe9a,0x9d14,0x8c71,0xadb7,0xc6fa,0xbe79,0xb577,0x9cb3,0xa576,0xc6ba,0xc6ba,0xadf7,0x9d14,0xa575,0xc69a,0xbe79,0xb5f7,0xa5b6,0xb5f7,0xc679,0xbdf8,0xb618,0xae18,0xa5b6,0xadb6,0xbe18,0xb5f7,0xadf7,0xb6ba,0xb638,0xa576,0xad76,0xbe39,0xd73c,0xc69a,0xa556,0x9cf4,0xc659,0xd73b,0xd71c,0xa576,0x94b3,0xb5f7,0xd6fc,0xcefb,0xb5f8,0xa555,0xadd7,0xc699,0xc67a,0xb618,0xae18,0xdf5d,0xad56,0xcedb,0xd6bb,0xae59,0xe75c,0xcebb,0xe73c,0xe79e,0xa515,0xefdf,0xadd7,0xf77d,0xdf7d,0xcf3d,0x3a0a,0x826a,0xacf4,0xe77d,0xe75d,0xe77d,0xdf5c,0xdf5d,0xdf3c,0xe77d,0xe77d,0xdf5d,0xdf5d,0xe75d,0xe75d,0xdf5d,0xdf7d,0xe75d,0xe75d,0xe75d,0xe75d,0xdf5d,0xe75c,0xe77d,0xe75d,0xe75d,0xdf5c,0xe75d,0xdf5c,0xdf3c,0xdf5c,0xe75d,0xe75d,0xd73c,0xdf7c,0xdf5c,0xd75c,0xdf3d,0xdf5d,0xdf5d,0xdf5c,0xdf3c,0xd6fc,0xdf3c,0xdf3c,0xdf5c,0xd73c,0xdf5c,0xdf3c,0xdf5c,0xd73c,0xdf3c,0xd71c,0xdf3d,0xd71c,0xdf1c,0xdf1c,0xdf3c,0xd71c,0xdf3d,0xdf3c,0xdf3c,0xdf1b,0xdf1c,0xdf1b,0xd71c,0xdf1c,0xdefc,0xdf1c,0xd6fc,0xcefb,0xd6fb,0xdf1c,0xd71c,0xd71c,0xd6fc,0xd6fc,0xd6fb,0xd6fb,0xd6db,0xcefb,0xcefa,0xdf7e,0x61ea,0x6208,0x39a6,0xe77c,0xd6db,0xc69a,0xb617,0xd71c,0x5acc,0xdf7c,0xad97,0xd6da,0xad96,0xbe17,0x94d4,0xc679,0x5b0e,0xc659,0x8431,0x8471,0xa575,0xceba,0xadb7,0x6bb0,0x636e,0x9d55,0xc6ba,0xadb7,0x73cf,0x634e,0x9d14,0xadb6,0x8cf4,0x8493,0x94f3,0x94f3,0x7c72,0x6baf,0x9cf5,0xb619,0x9d55,0x7410,0x52ed,0x7cb2,0xbe79,0xa595,0x63cf,0x52cd,0x6bf0,0xb5f7,0xadd6,0x7c31,0x5b2d,0x73f0,0x9533,0x9513,0x7c10,0x8452,0x8c92,0x8471,0x5aed,0x6bf0,0xa555,0xadd7,0x73f0,0x426b,0x5b6e,0x9d54,0xb5d7,0x8493,0x52cc,0x632d,0x94b2,0x84b2,0x6c10,0x8c72,0x9cd4,0x73af,0x42cd,0x4aac,0x9534,0xa596,0x7411,0x3a4a,0x52eb,0x7c51,0x8d33,0x6baf,0x632e,0x6b6e,0x5b8e,0x5b4c,0x530c,0x73f0,0x8cd3,0x638f,0x3209,0x3a4a,0x7c30,0x8cf3,0x7431,0x3a29,0x3229,0x634e,0x8cd3,0x8cb2,0x4a6b,0x3a09,0x8cf3,0x528c,0x08a4,0x1124,0x2985,0x3186,0x2944,0x4a27,0x5ae9,0x62ea,0x5aea, +0x8dd6,0x4aaa,0x5aca,0x5aca,0x52ca,0x4aa9,0x3207,0x29a6,0x3a48,0x3a28,0x3a09,0x39a8,0xce37,0x95d8,0x5209,0x9d55,0xa597,0xa576,0x8cb3,0x8cb3,0x8cb2,0xb638,0xadf7,0x8cd3,0x8451,0x8451,0xadd7,0xadf7,0xa535,0x8c51,0x8c93,0x9d55,0xadf7,0xa595,0x94f4,0x9535,0xa576,0x9d76,0x9535,0x9d96,0x9db6,0x9d55,0x94f4,0x94b4,0x9d96,0xa5f7,0xa5f7,0x9453,0x9473,0xadd7,0xb69a,0xb638,0x9d14,0x8c31,0xad76,0xbeba,0xc6bb,0xa555,0x9472,0xa576,0xc69a,0xc699,0xb638,0x94d3,0xa595,0xbe79,0xbe59,0xadf7,0xa596,0xadd7,0xbe79,0xb5d7,0xbe17,0xbeda,0x9515,0xbe38,0xbe39,0xb5f8,0xadf7,0xb699,0xae18,0x9d55,0xa575,0xb618,0xcf3c,0xc69a,0x9d35,0x9cf5,0xbe39,0xd73c,0xd73c,0xa596,0x94b3,0xb5f8,0xcefc,0xcefb,0xb5f8,0x9d55,0xb5f7,0xd71a,0xc679,0xc659,0xb618,0xdf7d,0xa556,0xc6db,0xce9a,0xbe79,0xe77d,0xc69a,0xceda,0xe79e,0xad76,0xefbe,0xb5f8,0xef7d,0xdf5d,0xcf1c,0x3a4a,0x7a2a,0xb4f4,0xef7e,0xdf3c,0xdf5d,0xdf5c,0xdf5c,0xdf5d,0xe75d,0xdf3c,0xdf5d,0xdf5d,0xdf5c,0xdf5d,0xe77d,0xdf5c,0xdf5d,0xe75c,0xdf3c,0xdf3c,0xdf3c,0xdf5c,0xdf3c,0xdf5d,0xdf5c,0xdf5d,0xdf3c,0xdf5c,0xdf5d,0xdf5c,0xe75d,0xdf1c,0xdf3c,0xdf1c,0xdf3c,0xdf3c,0xdf1b,0xdf1c,0xdf3c,0xdf3c,0xd71b,0xdf3c,0xdf1c,0xdf1c,0xd6fb,0xdf1c,0xdf3c,0xdf1c,0xdf3c,0xdf1c,0xd71c,0xd71c,0xdf3c,0xd71c,0xd71c,0xdf3c,0xdf5d,0xd75c,0xdf3c,0xdf3c,0xd73c,0xdf3c,0xdf3c,0xd71b,0xdf1c,0xdf1b,0xd71c,0xd6fc,0xd6fb,0xd6fb,0xd6fb,0xd6fb,0xd71c,0xd6fb,0xd6db,0xd71c,0xcedb,0xcedb,0xd6db,0xd6fb,0xcefa,0xe77e,0x6168,0x6248,0x3185,0xe77c,0xcedb,0xc67a,0xbe58,0xd73c,0x630c,0xdf5c,0xad97,0xd6ba,0xadb8,0xadb6,0x9cf4,0xbe59,0x5b4e,0xc679,0x9492,0x8452,0xad96,0xd6db,0xa596,0x6baf,0x5b2e,0x9d35,0xcefa,0xadd7,0x73d0,0x636e,0xa534,0xad95,0x7cb2,0x8cf4,0x9514,0x9d14,0x8473,0x6bb0,0x9d14,0xbe59,0x9535,0x63d0,0x5b0e,0x8452,0xceda,0x9d95,0x638e,0x5b4d,0x7410,0xb5d6,0xadb6,0x8450,0x632d,0x7bcf,0x9d33,0x8cd2,0x7c10,0x9473,0x94b3,0x8451,0x4acd,0x6baf,0xa596,0xadd7,0x73f1,0x426b,0x5b6e,0x9513,0xa5b6,0x7430,0x5aec,0x6b4d,0x8471,0x84b1,0x6bf0,0x8452,0x8c72,0x6bd0,0x3acd,0x4aac,0x94f4,0xa595,0x6bcf,0x422a,0x528b,0x7c30,0x7cb2,0x636e,0x6b8f,0x6b4e,0x6baf,0x530c,0x52cb,0x6bef,0x8492,0x63ae,0x322a,0x3a4a,0x7410,0x8d14,0x63af,0x3a4a,0x31c9,0x5b2c,0x9d75,0x7c51,0x526a,0x4a49,0x84b2,0x5a8c,0x18a4,0x1124,0x2965,0x2966,0x2104,0x3a07,0x5aa9,0x62ea,0x5aca, +0x8d95,0x4aa9,0x52ca,0x5aca,0x52c9,0x52c9,0x3207,0x3186,0x3a29,0x3a09,0x39e8,0x39a8,0xce37,0x8db7,0x5a49,0x9d54,0xa595,0x9514,0x94d4,0x8cb3,0x9493,0xb596,0xad96,0xa575,0x8472,0x94f3,0xad75,0xbdd8,0xad35,0x9472,0x94b4,0xa555,0xce9a,0xadd6,0xa535,0x94f4,0xbdf8,0xbe19,0xb5b7,0xadb7,0x94f5,0xb618,0x94f4,0x9cd4,0xadf7,0xb678,0xa5d7,0x9452,0x9472,0xc618,0xceba,0xc659,0xa575,0x9cd4,0xb597,0xd6db,0xd71c,0xa576,0xa4f4,0xad76,0xce79,0xdefb,0xb5f8,0x94d3,0xad97,0xbe39,0xceba,0xb618,0xa596,0xadb7,0xc639,0xbe39,0xbdf8,0xc69a,0x9d36,0xc679,0xbe39,0xbe58,0xb5f7,0xbe7a,0xbe39,0x9d35,0xb5b6,0xbe39,0xd71c,0xc6bb,0xa535,0x9cf4,0xbe38,0xc6ba,0xdf3c,0xad76,0xa4f4,0xbe38,0xd71c,0xd6fb,0xbe17,0x94f4,0xbdf8,0xc699,0xc659,0xbe79,0xb618,0xe77d,0xad15,0xbedb,0xce9a,0xb659,0xef5d,0xc67a,0xd6da,0xdfbf,0x9d14,0xefdf,0xb5d7,0xf77d,0xe77d,0xcf1d,0x3a29,0x828b,0x92ec,0xf73d,0xef5d,0xef5c,0xef7d,0xf79e,0xef5d,0xef9d,0xef7d,0xef7d,0xf7be,0xef9d,0xef7d,0xf79e,0xf79d,0xf77d,0xf77d,0xef7c,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef7d,0xef5c,0xef5d,0xef5d,0xef3c,0xef3c,0xffbe,0xef7d,0xef7d,0xef5d,0xef7d,0xf75c,0xef7d,0xef5d,0xf77d,0xf77d,0xef5d,0xe71c,0xe6fb,0xef3c,0xef3c,0xef1c,0xef1c,0xf73c,0xeefb,0xef1b,0xef3c,0xe71b,0xeefb,0xeefb,0xe6fb,0xe6fb,0xe6db,0xdedb,0xe6db,0xde9a,0xde79,0xde9a,0xe6da,0xdedb,0xdeda,0xe6da,0xe6db,0xde9a,0xdeba,0xde9a,0xe6db,0xe6bb,0xe6bb,0xde7a,0xde7a,0xde9a,0xde7a,0xde79,0xde9a,0xde9a,0xde79,0xb4d4,0x6987,0x5228,0x2986,0xef7c,0xceba,0xceba,0xbe38,0xdf3c,0x632c,0xe75d,0xad97,0xd6ba,0xb5f8,0xa5b6,0x9cf4,0xc638,0x632e,0xc679,0x8492,0x8472,0xb5b7,0xd69b,0xad96,0x6b8f,0x5b2e,0xa596,0xceba,0xb5f8,0x7bf0,0x6b8f,0xad55,0xad55,0x8472,0x94f5,0x9d56,0x94f4,0x8472,0x6bb1,0x9d14,0xc638,0xad76,0x7412,0x5acd,0x8c92,0xdedb,0xadd7,0x73d0,0x636e,0x7c52,0xb5f7,0xb5f7,0x7c10,0x634e,0x7c31,0x9514,0x9514,0x8472,0x94d3,0x9d34,0x7c11,0x4b0d,0x6bb0,0xad96,0xb5d7,0x7c11,0x52ad,0x6b70,0x9d54,0xb5d7,0x94b2,0x632e,0x7b6f,0x8c51,0x8cb1,0x7c50,0x9472,0x9d14,0x7c52,0x42ac,0x52cc,0xa516,0xa575,0x73cf,0x528b,0x5a6b,0x9491,0x9cf3,0x7bcf,0x636e,0x83d0,0x83f1,0x5aed,0x632c,0x8432,0x9cd4,0x73d0,0x4a49,0x426b,0x8451,0xa555,0x73af,0x4a8b,0x41e9,0x6b6d,0x94f4,0x7bef,0x5acb,0x5acb,0x84b3,0x5aad,0x18a3,0x18e3,0x2125,0x29a7,0x2124,0x4227,0x52a9,0x5aea,0x5aea, +0x8d95,0x4289,0x52a8,0x52c9,0x52aa,0x4aaa,0x3207,0x29a6,0x3a49,0x3a09,0x41e9,0x3167,0xc658,0x7d96,0x31a7,0x41e9,0x39e9,0x31c8,0x39e9,0x4209,0x39c8,0x39e9,0x4229,0x3208,0x31c8,0x41e8,0x41e9,0x4209,0x4229,0x4a09,0x41c8,0x41e9,0x524a,0x5229,0x5229,0x4209,0x5209,0x5a2a,0x624a,0x4208,0x4a28,0x5a8a,0x522a,0x4a6b,0x5acb,0x5acd,0x5aac,0x4a29,0x522a,0x628b,0x5a6b,0x62cc,0x5a6b,0x5a6b,0x628d,0x6b0c,0x734e,0x730c,0x6aab,0x730d,0x6b0d,0x7b8f,0x5aed,0x8bf0,0x83cf,0x7b8f,0x8c51,0x736e,0x630d,0x7b8e,0x940f,0x9430,0x8bf0,0x83d0,0x736f,0x9c93,0x9c72,0xad13,0x9452,0xa4f4,0x9452,0x8c11,0x8c11,0x9452,0xa4f4,0x9493,0x9413,0x9411,0x9cb4,0xa4f5,0xbd56,0x9473,0x83f1,0x9492,0xad55,0xbdb7,0x9cf4,0x8452,0x9cd4,0xb576,0xb576,0xacf4,0x9472,0xce19,0x9cb3,0xbdd8,0xd638,0xad96,0xd65a,0xbe39,0xc638,0xce9b,0x9c72,0xeefc,0xa4b3,0xe67a,0xe6bb,0xbe39,0x3a6a,0x6a8b,0x928c,0x8a6b,0x826b,0x82ac,0x7acb,0x728b,0x82ab,0x82ab,0x7aab,0x7a8b,0x7a6b,0x7a4b,0x724a,0x726b,0x7a8b,0x724a,0x7a8b,0x7acc,0x7aab,0x7a8b,0x7a6b,0x7a6b,0x7a6a,0x726a,0x7249,0x7229,0x7a4a,0x7a4a,0x726a,0x7a6a,0x7a4a,0x7a6a,0x7a4a,0x7229,0x6a29,0x6a29,0x7209,0x7209,0x7209,0x6a09,0x6a09,0x7209,0x69e9,0x69e8,0x71e8,0x71e9,0x7209,0x7a08,0x71e8,0x69c8,0x71e8,0x71e8,0x71c8,0x71c8,0x71e8,0x71a8,0x69c8,0x71e9,0x71e9,0x71c8,0x71c8,0x79c8,0x71c8,0x69a7,0x71a8,0x7187,0x6987,0x71c8,0x71e9,0x71c7,0x7188,0x7188,0x71c8,0x71c7,0x71c8,0x69a7,0x6146,0x71a7,0x71a7,0x7167,0x71a8,0x69c8,0x41e7,0x31c7,0xcdf7,0xc5d7,0xc597,0xa4d3,0xc5b7,0x5a2a,0xbd56,0x9c32,0xa4b3,0x9452,0x734d,0x734e,0x83af,0x522b,0x9451,0x628b,0x628b,0x6b0d,0x83d0,0x83b0,0x522b,0x4a0b,0x6b0d,0x736f,0x6b0d,0x524a,0x520a,0x5a4b,0x4a09,0x5a6b,0x4a4a,0x6b4d,0x5a8a,0x5208,0x4a08,0x528a,0x522a,0x4a29,0x49e8,0x3146,0x49a8,0x524a,0x5209,0x3146,0x3166,0x31a7,0x4229,0x4a49,0x39a8,0x3946,0x3967,0x4a09,0x4a49,0x49c8,0x5249,0x49c8,0x4a28,0x2926,0x41a8,0x626b,0x522a,0x39c7,0x3146,0x3987,0x4a08,0x622a,0x41c8,0x3167,0x3987,0x39a7,0x41c7,0x4146,0x3926,0x3925,0x3925,0x2083,0x2905,0x41a6,0x3146,0x2924,0x20e4,0x20c4,0x3165,0x28e5,0x2904,0x20e5,0x3105,0x28c4,0x2084,0x18a2,0x2905,0x3106,0x20a4,0x2084,0x1083,0x18e4,0x18e4,0x18e3,0x10c4,0x1083,0x18c3,0x18a3,0x18a2,0x18a3,0x0841,0x7d13,0x6b0e,0x10c3,0x10e4,0x1924,0x3186,0x2165,0x3206,0x52a9,0x5aea,0x5ae9, +0x8555,0x42ca,0x52c9,0x52c9,0x52ca,0x4aa9,0x3208,0x2967,0x4269,0x4208,0x3a08,0x39a7,0xce58,0x8576,0x1145,0x3209,0x31e8,0x31e8,0x31c7,0x31c8,0x31c8,0x31e7,0x29c7,0x31e9,0x31e8,0x3a08,0x39c8,0x39a8,0x31c7,0x3a08,0x41e8,0x31a7,0x31c7,0x31c7,0x31e7,0x31e8,0x31c8,0x31a7,0x3187,0x31c7,0x31a7,0x3187,0x31c7,0x29e7,0x29c8,0x29a8,0x31a8,0x39e8,0x3a08,0x3a08,0x3a08,0x3a09,0x320a,0x3a09,0x31e8,0x39e8,0x3a08,0x3a08,0x4209,0x39e8,0x4209,0x4208,0x4229,0x31c8,0x31e9,0x422a,0x4229,0x4229,0x41e9,0x41e8,0x3a0a,0x3a09,0x4249,0x4229,0x3a29,0x31e9,0x39e8,0x4208,0x3a09,0x39e8,0x3a09,0x4209,0x39c8,0x41e9,0x420a,0x3a09,0x4229,0x39e9,0x39e9,0x4209,0x41e9,0x3a08,0x4228,0x4a29,0x4a49,0x4209,0x3a08,0x39c9,0x4a09,0x5249,0x4a49,0x4228,0x4208,0x41e8,0x4209,0x39c8,0x41c8,0x31e8,0x41e8,0x41e9,0x4a29,0x39e9,0x4a29,0x4a09,0x4a09,0x4a0a,0x49ea,0x4229,0x4a8a,0x4a6b,0x5a8b,0x6aab,0x728b,0x7a8b,0x7a8a,0x72ab,0x72ab,0x7aab,0x728b,0x72ab,0x72ab,0x728b,0x7a8b,0x72cb,0x72ab,0x7aab,0x72cb,0x72ab,0x7aab,0x72ab,0x72ab,0x726b,0x72ab,0x728a,0x726b,0x728b,0x72ab,0x72ab,0x6a6b,0x628a,0x6a8a,0x6aab,0x7aab,0x728b,0x6a8b,0x728b,0x726b,0x726a,0x6a69,0x6a6a,0x6a6a,0x726a,0x726a,0x726b,0x726a,0x6a4a,0x724a,0x7a69,0x6a69,0x726a,0x724a,0x6a4a,0x6a49,0x7249,0x7249,0x6a49,0x6269,0x6a29,0x722a,0x7209,0x6a49,0x7249,0x6229,0x6249,0x6249,0x6249,0x5a29,0x6249,0x5a29,0x5a28,0x5a08,0x5a09,0x5a08,0x5a08,0x5a08,0x5a08,0x6208,0x6208,0x5a08,0x5a28,0x51e8,0x41e8,0x29c7,0x31c8,0x2925,0x2125,0x2124,0x2905,0x2905,0x2146,0x2925,0x2945,0x2925,0x2945,0x3165,0x2165,0x2146,0x2185,0x2145,0x2925,0x2966,0x2966,0x2105,0x1905,0x2126,0x2106,0x20e5,0x2945,0x2965,0x2965,0x2946,0x2126,0x2945,0x2925,0x1925,0x1124,0x1924,0x2925,0x2924,0x2124,0x1945,0x2145,0x2105,0x2105,0x2145,0x1925,0x2105,0x2145,0x2104,0x1904,0x1124,0x2925,0x2104,0x2104,0x2105,0x2905,0x1904,0x1904,0x18c3,0x2105,0x10e4,0x1904,0x18e4,0x10e3,0x10a3,0x08c3,0x10e4,0x18e4,0x08c3,0x10a4,0x18c3,0x10e4,0x00e3,0x08e4,0x08a4,0x10c4,0x10c4,0x1104,0x10c4,0x10e5,0x08c4,0x08c3,0x10e4,0x1104,0x18e4,0x10c3,0x10a4,0x18c4,0x18c2,0x18c3,0x18c4,0x18a4,0x18c4,0x08c4,0x00e3,0x00c2,0x08a3,0x10a3,0x18e3,0x08a3,0x08a3,0x10c3,0x08e3,0x10c4,0x08c3,0x10c3,0x08e3,0x0903,0x0020,0x8513,0x630d,0x10a3,0x18e4,0x1925,0x3166,0x2145,0x3207,0x4ac9,0x52e9,0x62e9, +0x7d54,0x4ac9,0x5ac9,0x5aca,0x52aa,0x4a89,0x3208,0x3166,0x4a4a,0x3229,0x3208,0x41a7,0xce58,0x7555,0x1966,0x31e8,0x31e8,0x39e8,0x39e8,0x29c7,0x39e8,0x3a08,0x3228,0x3207,0x29e7,0x39c7,0x31e7,0x3208,0x31c8,0x39e8,0x39e7,0x39c7,0x31e7,0x29e8,0x3208,0x3207,0x31e7,0x39e8,0x39e8,0x39e8,0x39e8,0x39e7,0x3a08,0x3207,0x2a08,0x29e9,0x31e8,0x3a08,0x3208,0x3a29,0x3a08,0x4228,0x3208,0x4229,0x3a28,0x3a09,0x3a28,0x3a48,0x3a89,0x3269,0x3a29,0x3a29,0x4209,0x4229,0x4228,0x4269,0x3a49,0x3a49,0x4249,0x4249,0x4249,0x424a,0x4a69,0x4249,0x424a,0x4a69,0x4aab,0x4a6b,0x428a,0x4a8a,0x428a,0x42ab,0x4a8a,0x4a6a,0x4249,0x426a,0x426a,0x3a69,0x4a6b,0x4a8a,0x42aa,0x428a,0x4a6a,0x4a4a,0x52cb,0x4a8a,0x426b,0x426b,0x426a,0x42ab,0x4acb,0x52aa,0x4a8a,0x42ab,0x4aab,0x4aaa,0x4aab,0x4aca,0x52aa,0x4a4b,0x4a8a,0x4a8b,0x528a,0x52aa,0x4aab,0x4aab,0x428a,0x428b,0x4a8b,0x42ab,0x426a,0x4a6a,0x4a8b,0x528b,0x4289,0x4a6a,0x4a8b,0x426a,0x42ab,0x4aaa,0x52aa,0x4a6a,0x4a8a,0x52cb,0x428a,0x4a8a,0x4a8b,0x4a8b,0x4a8b,0x428a,0x4a6b,0x4a8b,0x4a8a,0x4aab,0x528b,0x4a8b,0x4a6a,0x426a,0x3a6a,0x4a8b,0x4a4a,0x422a,0x4a89,0x424a,0x4a6a,0x424a,0x4a4a,0x4249,0x4a4a,0x4249,0x3a4a,0x424a,0x4249,0x4269,0x4a49,0x4a29,0x4249,0x3a49,0x3228,0x3a09,0x3a09,0x3a29,0x4229,0x4209,0x3a27,0x4248,0x4228,0x3a28,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x3a28,0x4249,0x3a08,0x3a28,0x3a09,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x39e7,0x31e8,0x39c8,0x3a07,0x3a07,0x39e8,0x31e7,0x39a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x39c8,0x29c7,0x29a7,0x29c7,0x29a7,0x31a7,0x31c7,0x29a6,0x31c7,0x29a7,0x29a7,0x2987,0x3187,0x2987,0x2986,0x29a6,0x2186,0x2166,0x2987,0x2967,0x2186,0x2966,0x2986,0x2966,0x2966,0x3165,0x2166,0x1946,0x2166,0x2165,0x2165,0x1965,0x2166,0x1966,0x1965,0x2166,0x2165,0x2145,0x2166,0x2165,0x2945,0x2145,0x1905,0x2125,0x2125,0x2126,0x1925,0x1945,0x2905,0x2104,0x2124,0x1924,0x1925,0x1905,0x10e4,0x1125,0x1904,0x1944,0x0924,0x1124,0x2105,0x1925,0x1924,0x1904,0x08e4,0x18e5,0x1904,0x10c4,0x1104,0x1105,0x1105,0x18e4,0x10e5,0x10c5,0x10c3,0x10c4,0x18e4,0x18e3,0x10e3,0x10c3,0x18c3,0x20c3,0x18c3,0x08c3,0x18e3,0x08e3,0x10c3,0x08a3,0x08c2,0x08e2,0x00e2,0x10e2,0x10a3,0x00c3,0x08e2,0x10c2,0x18a3,0x10e3,0x08c3,0x10c3,0x18e3,0x0000,0x8513,0x630e,0x0862,0x18e3,0x1924,0x2966,0x1904,0x3a06,0x4aa8,0x52c9,0x5aea, +0x7d34,0x4a89,0x52c9,0x52c9,0x52ca,0x4aa9,0x31e7,0x2945,0x4229,0x3a08,0x3208,0x41a7,0xc658,0x7575,0x2186,0x3228,0x31c7,0x31e7,0x31c8,0x31e8,0x31c7,0x31c7,0x31c8,0x31c7,0x31c7,0x31a8,0x31a8,0x29c8,0x31c8,0x31c7,0x3207,0x31c7,0x39e8,0x3a08,0x3208,0x31e7,0x29c7,0x31c7,0x31e7,0x39c7,0x2986,0x29a7,0x31c7,0x31e8,0x3208,0x31e8,0x3207,0x3208,0x3a08,0x39e8,0x3a08,0x3a08,0x3208,0x3a08,0x3a08,0x3a08,0x4228,0x4248,0x4249,0x424a,0x4248,0x4229,0x4229,0x4249,0x3a49,0x3a69,0x4249,0x426a,0x424a,0x3a4a,0x426a,0x426a,0x4a6a,0x4249,0x426a,0x4a69,0x426a,0x4a8a,0x4a8a,0x4a6a,0x4289,0x426a,0x428a,0x3a4a,0x4289,0x424a,0x4a69,0x4269,0x426a,0x3a49,0x3a6a,0x4a8b,0x4a4a,0x426a,0x428a,0x4269,0x426a,0x4aaa,0x4a8a,0x4a8a,0x42aa,0x428b,0x428a,0x428a,0x426a,0x426a,0x4a8b,0x4a6a,0x528b,0x4a8b,0x4a8a,0x4a8a,0x426a,0x4a6b,0x4a6a,0x4aab,0x42aa,0x428a,0x4a8b,0x4a8b,0x4a8b,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a6a,0x4a6b,0x4a8b,0x428a,0x4a8a,0x4a6a,0x42aa,0x4a8b,0x4a8b,0x4a8b,0x4a8a,0x4a6a,0x4a69,0x4a6a,0x4a8a,0x3a6a,0x4249,0x4a6a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x3a4a,0x4249,0x4a6a,0x4a4a,0x422a,0x4269,0x4249,0x4a6a,0x3a4a,0x424a,0x4a49,0x424a,0x3a4a,0x422a,0x422a,0x422a,0x4269,0x4229,0x4229,0x3a69,0x3a69,0x3a49,0x4269,0x4249,0x4229,0x3a28,0x3249,0x3a28,0x4229,0x4229,0x3249,0x3a08,0x4208,0x3a29,0x3a09,0x3a09,0x3229,0x3a28,0x3a28,0x3a29,0x3a09,0x3208,0x3a08,0x3a08,0x3a08,0x3207,0x3208,0x39e7,0x31e8,0x31c7,0x2a07,0x31c7,0x39c8,0x31c7,0x39c8,0x31a7,0x39c8,0x21c7,0x31c7,0x31a7,0x31c8,0x31c7,0x39a7,0x29a7,0x31a7,0x31a6,0x31c7,0x31e7,0x29c7,0x2986,0x29a6,0x2986,0x31a6,0x29a6,0x1987,0x2986,0x2986,0x2966,0x2186,0x2966,0x1986,0x2966,0x2967,0x2146,0x2966,0x31a6,0x2966,0x2166,0x2946,0x2946,0x2166,0x2165,0x2166,0x2166,0x2145,0x2165,0x2145,0x2145,0x2945,0x2145,0x1925,0x1945,0x2125,0x2145,0x2125,0x2145,0x2144,0x1945,0x2105,0x1904,0x2104,0x1925,0x2124,0x2104,0x1905,0x1105,0x1904,0x1905,0x1905,0x18e5,0x18e4,0x0904,0x1904,0x18e4,0x10e4,0x18e5,0x08e4,0x18e4,0x1103,0x1103,0x1103,0x18e4,0x10c4,0x10c4,0x18e4,0x10a4,0x10c4,0x18e3,0x18c3,0x10e3,0x18e3,0x18e3,0x08c3,0x10c2,0x18c3,0x08e3,0x10c2,0x18c4,0x08c3,0x08c3,0x10e3,0x08c3,0x18a3,0x18e3,0x10e3,0x10c2,0x10c3,0x08a3,0x08c4,0x08c3,0x10a3,0x0000,0x7d33,0x6b50,0x1063,0x10e3,0x1144,0x2986,0x2103,0x4226,0x52c8,0x52ea,0x5aca, +0x7d14,0x52c9,0x52c9,0x52a9,0x52aa,0x4a89,0x3208,0x1966,0x3a28,0x3208,0x3228,0x39a7,0xce99,0x8596,0x1945,0x39e8,0x39c7,0x31e7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c8,0x31c8,0x31c7,0x31e8,0x31e8,0x31e7,0x31c8,0x39c8,0x29e7,0x31c8,0x31c8,0x31c8,0x39c7,0x29e7,0x29e7,0x31e8,0x31c8,0x39c7,0x39e7,0x2a08,0x3228,0x3208,0x3a09,0x3229,0x3208,0x39e8,0x3a09,0x39e8,0x3a07,0x39e8,0x3a09,0x4208,0x3a08,0x4209,0x39e8,0x3a48,0x3a28,0x3a08,0x4228,0x4228,0x3a29,0x4209,0x3a49,0x424a,0x3a49,0x4249,0x424a,0x3a49,0x426a,0x4a49,0x4a4a,0x4a6a,0x3a8a,0x426a,0x426a,0x426a,0x426a,0x428a,0x4a6a,0x428a,0x3a6a,0x3a4a,0x426a,0x3a6a,0x426a,0x4a6a,0x426a,0x3a6a,0x426a,0x4a6a,0x4a4a,0x4a6a,0x426a,0x4a8a,0x4a6a,0x428a,0x428a,0x42aa,0x428b,0x4a8b,0x426b,0x426b,0x426a,0x426a,0x4a8a,0x4a8a,0x424a,0x4a6a,0x4a8a,0x4aab,0x428b,0x428b,0x428a,0x4a8b,0x428b,0x426a,0x4aab,0x4a8b,0x428a,0x4a8a,0x4aab,0x4a8b,0x4a8b,0x528a,0x4a6a,0x426a,0x428a,0x4a8a,0x424a,0x3a8a,0x428b,0x426a,0x4a8b,0x4a6b,0x4a4a,0x4a6a,0x4269,0x426a,0x428a,0x426a,0x426a,0x426a,0x3a4a,0x4269,0x4269,0x424a,0x424a,0x4a4a,0x4a6a,0x424a,0x426a,0x424a,0x4269,0x4249,0x3a4a,0x3a49,0x4a49,0x3a4a,0x3a29,0x3a29,0x424a,0x4229,0x3a29,0x422a,0x4249,0x3229,0x3a29,0x3a29,0x3a29,0x4229,0x4208,0x3a28,0x4228,0x4249,0x3a09,0x3a29,0x3a09,0x4229,0x3a29,0x3a09,0x3a29,0x3a28,0x3a28,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x3208,0x31e8,0x3208,0x39e8,0x31e8,0x39e8,0x31a7,0x31e8,0x31c8,0x39e7,0x31e7,0x39e7,0x39a7,0x31c8,0x29c8,0x31a7,0x39a7,0x3187,0x29e6,0x29a7,0x29c7,0x31c7,0x39a7,0x31a7,0x31c7,0x31a7,0x3186,0x29a6,0x21a7,0x2986,0x2186,0x2186,0x31a7,0x2986,0x2186,0x2946,0x2965,0x2986,0x2986,0x2166,0x21a6,0x1966,0x2166,0x2186,0x1966,0x2166,0x2966,0x2966,0x2966,0x2146,0x2145,0x2165,0x2965,0x1925,0x2165,0x2145,0x2145,0x2145,0x1966,0x1924,0x1945,0x2125,0x2145,0x2125,0x2125,0x1904,0x2125,0x1904,0x1924,0x2125,0x1904,0x2105,0x2104,0x2105,0x18c4,0x2104,0x0904,0x1905,0x2105,0x1904,0x10e4,0x1104,0x18e4,0x1104,0x20e4,0x10e3,0x18e3,0x1104,0x1104,0x10e3,0x10c3,0x18c4,0x10e4,0x18a4,0x10c3,0x10c3,0x10e3,0x18e3,0x18c3,0x08c4,0x10a3,0x18c3,0x08c3,0x08c4,0x18c3,0x10c2,0x08c3,0x08a3,0x08c3,0x08c3,0x18a3,0x10c3,0x10a2,0x08c3,0x08c3,0x10c3,0x08a3,0x10e3,0x0000,0x7d13,0x6b90,0x1063,0x10e4,0x1125,0x2986,0x2124,0x39e6,0x5aa8,0x5aca,0x5aca, +0x7513,0x4aa9,0x52c9,0x52a9,0x52a9,0x4aa9,0x31e8,0x1967,0x3a08,0x3228,0x3208,0x39e8,0xce79,0x7d56,0x2126,0x39c7,0x31c6,0x31e7,0x29a7,0x29c7,0x31c7,0x39c7,0x29c7,0x29c7,0x31c8,0x29e8,0x31c7,0x31e8,0x39c8,0x31c8,0x31c7,0x31a7,0x29c6,0x31c7,0x39e7,0x29e7,0x31e7,0x31c7,0x31e8,0x39c8,0x39e7,0x31e8,0x2a08,0x39e8,0x31e8,0x3a49,0x2a28,0x3208,0x3a08,0x3208,0x3a08,0x41e8,0x4209,0x3a08,0x3208,0x3a29,0x3a29,0x4229,0x3a29,0x3a49,0x4269,0x4249,0x3a28,0x4209,0x3a29,0x3a49,0x4229,0x3a29,0x3a49,0x4249,0x3a4a,0x4229,0x426a,0x4a8a,0x4228,0x3a29,0x3a49,0x3a6a,0x4a6a,0x426a,0x426a,0x4a6a,0x4a4a,0x424a,0x4269,0x3a49,0x3a4a,0x4a6a,0x426a,0x3a6a,0x4a6a,0x4a49,0x4249,0x4a4a,0x426b,0x428a,0x4a6a,0x4a8a,0x4a8b,0x428a,0x426b,0x4a8b,0x4a6a,0x428a,0x428a,0x3a49,0x4a8a,0x426a,0x426a,0x4a6a,0x4a6b,0x428b,0x3a8a,0x426a,0x4a8b,0x4a6b,0x4a6b,0x4a6a,0x4a8b,0x4a6b,0x4a6a,0x4a6a,0x428a,0x428a,0x4a8a,0x4a6a,0x4a6a,0x426a,0x426a,0x4a8a,0x4a8a,0x426b,0x426a,0x4a6a,0x428a,0x4269,0x4269,0x4a6a,0x4a6a,0x4a6a,0x426a,0x426b,0x426b,0x426a,0x424a,0x428a,0x4a89,0x4a4a,0x426a,0x426a,0x426a,0x3a69,0x4269,0x426a,0x3a69,0x4269,0x426a,0x4269,0x3a49,0x424a,0x4249,0x422a,0x426a,0x424a,0x4249,0x3a29,0x4229,0x3a29,0x4249,0x3a29,0x3a49,0x4249,0x4249,0x3a49,0x4248,0x3a49,0x3a29,0x3a29,0x3208,0x3a28,0x3a28,0x3a08,0x3a08,0x3a28,0x4229,0x3a28,0x3a28,0x3a08,0x3208,0x3a08,0x3228,0x31e8,0x2a08,0x31e8,0x31c8,0x39c8,0x39c8,0x31e7,0x31e8,0x39e7,0x39c6,0x29c7,0x31e8,0x29e8,0x3207,0x3207,0x39a7,0x3987,0x31a7,0x31a7,0x31a7,0x31a7,0x3187,0x29a6,0x31a7,0x31a7,0x3187,0x31a6,0x3986,0x3187,0x21a6,0x2986,0x3186,0x2986,0x2986,0x2186,0x2186,0x19a6,0x2186,0x2987,0x2986,0x2166,0x1945,0x2986,0x2186,0x2946,0x2146,0x2146,0x2104,0x2145,0x2166,0x2185,0x2165,0x3145,0x2145,0x2165,0x1966,0x2125,0x2125,0x2125,0x2125,0x1925,0x1945,0x1925,0x1924,0x1924,0x1124,0x1924,0x1104,0x10e4,0x1105,0x2104,0x2104,0x1904,0x1905,0x1905,0x2105,0x2105,0x10e3,0x18c3,0x2103,0x2104,0x10e4,0x1104,0x10e4,0x10e4,0x10e4,0x1904,0x1103,0x10e3,0x18e4,0x20e4,0x08a4,0x10c4,0x08e3,0x08e3,0x10e4,0x18e3,0x10e3,0x18c3,0x18a3,0x10a3,0x10e3,0x08e4,0x08a3,0x08c2,0x08e2,0x08c3,0x10c3,0x08a3,0x10c3,0x08c3,0x10a3,0x10c3,0x08c2,0x10c3,0x10c3,0x08c3,0x0020,0x8cf2,0x736f,0x08a3,0x1903,0x2144,0x2966,0x3145,0x31e6,0x4ac9,0x5aea,0x5aaa, +0x7513,0x42a8,0x52c9,0x52a9,0x52c9,0x4aa9,0x3a08,0x31c7,0x3a29,0x3a29,0x3228,0x4a09,0xbe58,0x64d3,0x2986,0x31e8,0x31c7,0x39e7,0x31c7,0x31e7,0x31e7,0x31a7,0x31a8,0x31c8,0x39c7,0x29e7,0x31c7,0x31c7,0x39c8,0x29c7,0x31c7,0x39c8,0x29c7,0x31c7,0x39e7,0x31e8,0x31c8,0x29c7,0x31c8,0x39c7,0x39c7,0x39e8,0x3a08,0x39e8,0x3208,0x3a28,0x3209,0x3a08,0x39e8,0x3207,0x3208,0x3208,0x3a28,0x3a48,0x3a09,0x3a28,0x4228,0x4229,0x4249,0x3a29,0x3a08,0x4229,0x4249,0x3a49,0x3a49,0x3a29,0x422a,0x4229,0x3a49,0x4269,0x426a,0x4a6a,0x426a,0x4249,0x4229,0x4289,0x428a,0x3a6a,0x426a,0x426a,0x424a,0x4a69,0x4a4a,0x4a49,0x4249,0x4a4a,0x3a29,0x424a,0x424a,0x424a,0x424a,0x424a,0x4229,0x4a4a,0x422a,0x3a8a,0x426a,0x426a,0x4a8b,0x4269,0x4a6a,0x426a,0x4a6a,0x4a69,0x4269,0x428a,0x428a,0x426a,0x428a,0x4269,0x426a,0x428a,0x428a,0x4269,0x4a6a,0x4a6a,0x4a6a,0x4a6b,0x428b,0x426a,0x428a,0x426a,0x4a8a,0x4a6a,0x426a,0x426a,0x426a,0x428a,0x424a,0x526b,0x4a6a,0x4a6a,0x424a,0x424a,0x4269,0x4249,0x4a4a,0x4a6b,0x4a8b,0x4a69,0x4269,0x428a,0x426a,0x426a,0x3a2a,0x4a6a,0x4269,0x4a4a,0x426a,0x426a,0x4269,0x3a4a,0x426a,0x4a6a,0x4269,0x4269,0x4269,0x4269,0x3a4a,0x4269,0x424a,0x4229,0x4249,0x4249,0x3a4a,0x3228,0x3a29,0x3a49,0x426a,0x4a2a,0x3a49,0x4229,0x4249,0x3229,0x3a48,0x4229,0x3a29,0x3a08,0x3a28,0x3a08,0x4228,0x4a09,0x4209,0x3a09,0x3a08,0x3a09,0x3229,0x3a08,0x3a08,0x39e8,0x3a09,0x3208,0x3a08,0x31c7,0x39e7,0x39e7,0x29c7,0x31e7,0x31e7,0x31c7,0x39c8,0x31c8,0x31e8,0x29a7,0x41c8,0x31c7,0x29c7,0x31a8,0x29a7,0x31c7,0x31a7,0x3187,0x3187,0x31a7,0x31c7,0x31a7,0x2966,0x3186,0x31a7,0x31c7,0x2987,0x3167,0x29a6,0x21a6,0x2186,0x2166,0x2167,0x2166,0x2166,0x2966,0x2166,0x2965,0x2965,0x2985,0x2166,0x2966,0x2166,0x2146,0x1965,0x1965,0x1965,0x1965,0x2165,0x2965,0x2165,0x2145,0x1945,0x2905,0x2125,0x2125,0x2925,0x1925,0x1945,0x1925,0x1925,0x1925,0x1104,0x1925,0x1924,0x1104,0x1905,0x1924,0x1905,0x1904,0x2105,0x1904,0x20e4,0x18c4,0x1103,0x10e3,0x1104,0x10e3,0x10e4,0x18e4,0x1904,0x1104,0x0904,0x10e4,0x10e3,0x00e3,0x10e3,0x18e3,0x18c3,0x10e4,0x00e4,0x10e4,0x10e3,0x18e4,0x10c3,0x08c3,0x10c3,0x10e4,0x18c3,0x08a3,0x08c3,0x08c2,0x00c2,0x08c2,0x10c3,0x10c3,0x08c3,0x10a3,0x10c3,0x08a3,0x08c2,0x08c2,0x08c3,0x10e4,0x0021,0x7cd1,0x734f,0x10a4,0x1904,0x1924,0x2966,0x2925,0x31e7,0x4aa9,0x5aea,0x5aca, +0x74f3,0x4aa9,0x52c9,0x52c9,0x4ac9,0x4aa8,0x3a08,0x39c7,0x4209,0x39e8,0x3a09,0x49e9,0xc6b9,0x6cb4,0x31a7,0x3208,0x31c7,0x3a07,0x3a08,0x31e7,0x21a7,0x31a7,0x31c7,0x31c7,0x31c7,0x29c7,0x31a7,0x31a7,0x31c7,0x31c7,0x39a8,0x39e8,0x31c7,0x31e7,0x29c7,0x31c8,0x31e8,0x31c7,0x39c8,0x41e8,0x31c7,0x31c7,0x31e7,0x31e8,0x31e8,0x3228,0x3228,0x31e8,0x39e8,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x3a09,0x3a09,0x39e8,0x39e8,0x4208,0x4209,0x4228,0x424a,0x3229,0x4229,0x3a49,0x3a48,0x3a49,0x4249,0x4249,0x4249,0x426a,0x4249,0x424a,0x3a49,0x3a29,0x4269,0x428a,0x426a,0x424a,0x4a4a,0x4a4a,0x4229,0x4249,0x4a8a,0x3a49,0x4249,0x3a69,0x4249,0x3a4a,0x4249,0x426a,0x3a6a,0x4249,0x4269,0x4269,0x3a6a,0x3a69,0x3a8a,0x3a4a,0x3a69,0x4a8a,0x3a69,0x4249,0x428a,0x4289,0x3a49,0x426b,0x428a,0x428a,0x424a,0x424a,0x426a,0x424b,0x4229,0x426a,0x426a,0x3a69,0x3a6a,0x426a,0x3a8a,0x428a,0x428b,0x428b,0x4a6a,0x4aaa,0x426a,0x4a8a,0x4a8a,0x528a,0x526b,0x4a8a,0x426a,0x4a6a,0x4a6a,0x426a,0x426a,0x426a,0x424a,0x4a8a,0x4289,0x4a69,0x3a6a,0x3a8a,0x426a,0x424a,0x426a,0x4269,0x4289,0x426a,0x4a69,0x4269,0x3a6a,0x424a,0x4249,0x4249,0x4a49,0x422a,0x4249,0x3a69,0x4269,0x4249,0x4229,0x4249,0x4249,0x4248,0x4249,0x3a4a,0x3a4a,0x4269,0x4248,0x4a49,0x4229,0x3a49,0x3a28,0x4228,0x4249,0x3a29,0x3209,0x3208,0x3a08,0x4208,0x4209,0x4209,0x3a08,0x39e8,0x39e9,0x3208,0x39e8,0x3208,0x3208,0x39e8,0x39e8,0x3a08,0x31c7,0x39c7,0x31c7,0x39e7,0x31e7,0x31e8,0x31e7,0x31c8,0x31c8,0x39c7,0x31a7,0x39a7,0x3187,0x31c7,0x2987,0x19a7,0x29c7,0x31a7,0x31a7,0x29a7,0x29a7,0x3187,0x2987,0x2987,0x3186,0x29a6,0x29a6,0x2986,0x3187,0x2986,0x31a6,0x29a6,0x2986,0x2946,0x2166,0x2166,0x2186,0x2166,0x2966,0x2986,0x2185,0x2146,0x2946,0x2146,0x2946,0x2165,0x2145,0x2145,0x2165,0x2145,0x2146,0x1925,0x1925,0x2105,0x2125,0x2125,0x2925,0x2905,0x1925,0x1925,0x1925,0x2145,0x1925,0x1905,0x2104,0x2125,0x1904,0x1904,0x1924,0x1904,0x18e4,0x1904,0x2104,0x1924,0x18e4,0x18e4,0x10a4,0x10e5,0x18e4,0x1105,0x18e4,0x18c4,0x1904,0x1904,0x10e4,0x10c4,0x10c3,0x10c3,0x10c3,0x18e4,0x10e3,0x0903,0x10c3,0x18c4,0x10e3,0x20c3,0x08a4,0x0082,0x18c4,0x10c3,0x08a3,0x10c3,0x10c2,0x10c3,0x00c2,0x08c3,0x08c3,0x10c3,0x08a2,0x10c3,0x10c3,0x10c2,0x10e2,0x08e3,0x1104,0x0021,0x7cd1,0x7b8f,0x1083,0x1124,0x1104,0x2165,0x2125,0x3207,0x4aa9,0x5aca,0x5aca, +0x74f3,0x42a9,0x4ac9,0x4ac9,0x4aa9,0x4289,0x3207,0x31e7,0x39e9,0x4208,0x4209,0x49c8,0xc6b9,0x6c93,0x2186,0x3a08,0x3208,0x31e7,0x31c8,0x39e7,0x31e7,0x31e7,0x29c7,0x29c7,0x31c7,0x29c7,0x29c7,0x31c8,0x31c7,0x31c7,0x29e8,0x31e7,0x39c7,0x31c7,0x31e8,0x29c7,0x31c7,0x31e7,0x31e8,0x31c7,0x29e8,0x31e8,0x3208,0x31e7,0x39e9,0x4208,0x3a08,0x3208,0x3a07,0x3a27,0x3a08,0x3208,0x3a08,0x39e7,0x4229,0x3a49,0x4229,0x4229,0x4229,0x4208,0x3a49,0x4229,0x4209,0x3a08,0x3a08,0x4249,0x3a49,0x4269,0x4249,0x3a4a,0x4249,0x3a49,0x3a49,0x3a29,0x3249,0x4269,0x3a69,0x426a,0x424a,0x3a4a,0x426a,0x426a,0x4a6a,0x4a8a,0x3249,0x4249,0x424a,0x422a,0x422a,0x3a4a,0x426a,0x426a,0x4269,0x426a,0x4a6a,0x426a,0x4a8a,0x4a6a,0x426a,0x426a,0x428a,0x4a6a,0x424a,0x426a,0x4269,0x426a,0x426a,0x3a8a,0x3a69,0x426a,0x4269,0x4249,0x3a6a,0x426a,0x424a,0x426a,0x428a,0x428a,0x426a,0x3a6a,0x426b,0x3a6a,0x428b,0x4a6a,0x4aab,0x3a6a,0x4a8b,0x428b,0x3a8a,0x4a6b,0x4a6a,0x428a,0x4a8a,0x3a69,0x3a6a,0x3a6a,0x426a,0x426a,0x424a,0x424a,0x426a,0x4269,0x4269,0x424a,0x424a,0x426a,0x4269,0x424a,0x426a,0x4a6a,0x4a4a,0x424a,0x424a,0x424a,0x4269,0x4249,0x3a29,0x4249,0x3a69,0x3a49,0x4229,0x4209,0x4a29,0x4a49,0x4229,0x4249,0x424a,0x3229,0x3a29,0x3a08,0x4208,0x3a09,0x3a09,0x3a09,0x3208,0x3a08,0x4208,0x2a08,0x3a08,0x3a08,0x3a29,0x39e9,0x39c8,0x31c8,0x39e9,0x31e8,0x39e8,0x39e8,0x39e8,0x3a07,0x31e8,0x31c8,0x31c8,0x31c7,0x31c8,0x31c7,0x39c7,0x31e7,0x31c7,0x31c8,0x29a7,0x29a7,0x39c8,0x31a7,0x39c7,0x31a7,0x21a7,0x31a6,0x3187,0x31a7,0x3186,0x29a7,0x3187,0x29a6,0x2986,0x3187,0x2986,0x31a6,0x29a7,0x29a7,0x2986,0x3187,0x3187,0x3166,0x3186,0x29a6,0x3186,0x2987,0x2966,0x2986,0x2166,0x2166,0x2966,0x2966,0x2146,0x2166,0x2166,0x2165,0x2146,0x2145,0x2166,0x2166,0x1965,0x1144,0x1145,0x1945,0x2925,0x2125,0x1945,0x2945,0x2125,0x1925,0x1945,0x1125,0x2145,0x1904,0x2105,0x1905,0x2144,0x2104,0x2104,0x2104,0x1904,0x1905,0x1904,0x1904,0x18e4,0x10e4,0x1905,0x18e3,0x1903,0x10e4,0x1124,0x1103,0x10e4,0x1904,0x0903,0x1104,0x10e3,0x20e3,0x18e4,0x18c4,0x10e3,0x08e4,0x08e2,0x10c3,0x08e3,0x18e3,0x18c3,0x08c3,0x08e3,0x08c3,0x10e4,0x10a3,0x08c3,0x08e2,0x08c2,0x10c3,0x18c2,0x08e2,0x10e3,0x18c3,0x10c3,0x10c3,0x08e3,0x18c3,0x18e4,0x1103,0x0041,0x7491,0x7bb0,0x0863,0x1924,0x1945,0x2185,0x2125,0x3206,0x4ac9,0x52ea,0x5aea, +0x74d2,0x4aa9,0x4ac9,0x4ac9,0x4ac9,0x4aa8,0x3206,0x31e7,0x3209,0x3a29,0x3a09,0x4a09,0xc678,0x74d4,0x2187,0x3a29,0x3a29,0x3a08,0x31e8,0x31c8,0x31e7,0x31e7,0x31e7,0x39a7,0x39c7,0x29c7,0x21c7,0x29a7,0x29c7,0x31c7,0x29e8,0x31c7,0x39c7,0x31c7,0x31c7,0x31e7,0x39e8,0x3a08,0x31e7,0x31c7,0x3227,0x31e7,0x31e8,0x3207,0x3a28,0x3a07,0x31e7,0x31e8,0x39e8,0x3208,0x39e8,0x3a08,0x3a29,0x3a29,0x3a29,0x3a29,0x3208,0x3a29,0x3a09,0x3a29,0x3a29,0x3a29,0x3a28,0x3228,0x3a49,0x3a29,0x3a4a,0x424a,0x426a,0x3a49,0x3249,0x4229,0x4229,0x4229,0x4229,0x426a,0x3a4a,0x4249,0x4a6a,0x426b,0x424a,0x4249,0x4248,0x4228,0x4269,0x4249,0x422a,0x3a2a,0x4249,0x4269,0x4249,0x422a,0x426a,0x4269,0x424a,0x426a,0x426a,0x4249,0x426a,0x3a4a,0x3a6a,0x426a,0x4269,0x4a6a,0x4249,0x4249,0x426a,0x3a6a,0x426a,0x4249,0x4249,0x4269,0x4a6a,0x426a,0x3a49,0x4269,0x426a,0x426a,0x426a,0x3a69,0x4a8a,0x3a6a,0x4249,0x4269,0x426a,0x428a,0x3a8a,0x428b,0x426a,0x426a,0x4a6a,0x428a,0x4a6a,0x4269,0x428a,0x426a,0x4a4a,0x3a69,0x4269,0x4269,0x4269,0x3a49,0x426a,0x4269,0x4289,0x4269,0x4a49,0x4249,0x4249,0x424a,0x4a49,0x4249,0x4269,0x4249,0x422a,0x4249,0x3a49,0x4249,0x4229,0x3a49,0x4229,0x3a29,0x424a,0x3a29,0x4209,0x4229,0x3a29,0x3a09,0x4229,0x3a29,0x3a29,0x3a29,0x3208,0x3a29,0x3a08,0x4208,0x3a08,0x3208,0x3a08,0x3a28,0x3a09,0x39c8,0x3a09,0x31e9,0x31e8,0x31c7,0x39e7,0x39e8,0x39c8,0x41e8,0x39e8,0x31e8,0x31c7,0x39e8,0x31c7,0x29e7,0x39c8,0x31c7,0x31e7,0x39c7,0x31c7,0x29a7,0x31c7,0x29c6,0x29a7,0x31a6,0x31c7,0x31a7,0x21a6,0x29a6,0x31a6,0x29c6,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x3186,0x2987,0x3186,0x3186,0x29a6,0x29a6,0x2986,0x2986,0x19a6,0x2166,0x2986,0x2986,0x2165,0x2185,0x1985,0x2146,0x2146,0x2145,0x2165,0x1925,0x1965,0x1965,0x1945,0x2165,0x1925,0x1925,0x1925,0x2145,0x2145,0x1145,0x2145,0x2925,0x1925,0x1945,0x1924,0x1925,0x1925,0x18e4,0x1924,0x2145,0x2124,0x1924,0x2104,0x1904,0x2104,0x1104,0x20e4,0x20e4,0x1904,0x1904,0x18e5,0x18e4,0x1104,0x1904,0x1104,0x10e4,0x18e4,0x10e4,0x08e4,0x18e4,0x1904,0x10c4,0x10e4,0x08e3,0x08e4,0x0903,0x18e3,0x10c3,0x08e4,0x18c3,0x18c4,0x18c4,0x10e3,0x08e3,0x10c3,0x10a3,0x10c3,0x00c3,0x08c2,0x08c1,0x10c2,0x10c2,0x08c2,0x08e3,0x18e4,0x18e4,0x18e4,0x10c4,0x1104,0x0061,0x8513,0x7370,0x1084,0x1944,0x1925,0x2166,0x1165,0x3a07,0x4aa9,0x4ae9,0x52ea, +0x74d3,0x5269,0x52c9,0x4aa9,0x52a9,0x4a89,0x3207,0x31c7,0x3228,0x3a28,0x3a09,0x41c9,0xad96,0x8db7,0x21c8,0x3208,0x3a08,0x3a08,0x31e8,0x31e7,0x31e7,0x29e7,0x31c8,0x29c8,0x31c7,0x31c6,0x31e6,0x31a6,0x29c6,0x29e7,0x3207,0x29c7,0x31e8,0x39c7,0x39e7,0x39e8,0x31a7,0x3a08,0x3208,0x31e8,0x3207,0x29e7,0x3208,0x3208,0x3a08,0x3a09,0x3a08,0x41e8,0x41e9,0x31e8,0x3207,0x3a28,0x3a49,0x3a28,0x3a29,0x3228,0x4229,0x3a08,0x3a29,0x3a09,0x4248,0x3a08,0x3a28,0x3a49,0x3a49,0x3249,0x3a49,0x4269,0x3a49,0x3a6a,0x3a4a,0x424a,0x4269,0x4249,0x424a,0x428a,0x428a,0x426a,0x428b,0x4a8b,0x426a,0x428a,0x4a6a,0x4a6a,0x426a,0x428a,0x4269,0x3a49,0x428a,0x4a8a,0x428a,0x426a,0x4229,0x4a4a,0x4a8a,0x4a8a,0x4a4a,0x4a4a,0x4a6b,0x426b,0x424a,0x4a6a,0x4a69,0x4a6a,0x4a8a,0x426a,0x426a,0x428b,0x4a8b,0x4a4a,0x4a4a,0x4a4b,0x4a69,0x4a49,0x4249,0x426a,0x4a6a,0x426a,0x428a,0x426a,0x426a,0x426a,0x4a6a,0x4269,0x424a,0x426a,0x4a6a,0x4249,0x4249,0x4a69,0x4a49,0x424a,0x422a,0x3229,0x3a69,0x4a69,0x4269,0x4249,0x424a,0x3a49,0x4a8a,0x4a69,0x3a8a,0x3a6a,0x3a49,0x4269,0x4249,0x426a,0x3a69,0x3a4a,0x422a,0x4a4a,0x428a,0x4249,0x3a4a,0x426a,0x4269,0x3a28,0x4249,0x3a49,0x4229,0x424a,0x424a,0x3a49,0x4249,0x424a,0x3a29,0x3a08,0x4229,0x3a29,0x3a49,0x3a49,0x3a28,0x31c8,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x4229,0x3a09,0x39e8,0x4229,0x39e9,0x39e9,0x39e8,0x39c7,0x41e8,0x39c7,0x39c7,0x39e8,0x31e8,0x31e7,0x39e7,0x31a6,0x29e7,0x31c7,0x31a7,0x39c7,0x41e7,0x39e8,0x31a7,0x31c7,0x31c7,0x39a6,0x39c7,0x31c8,0x31e7,0x21a6,0x2187,0x29a6,0x2986,0x29a7,0x3187,0x3186,0x3186,0x29a6,0x29a7,0x31c7,0x31c7,0x2986,0x2987,0x2986,0x29a6,0x31c6,0x29a6,0x2186,0x29a7,0x2166,0x2986,0x3187,0x3186,0x2966,0x2166,0x1945,0x2165,0x2166,0x1945,0x2946,0x2185,0x2165,0x1945,0x2145,0x2146,0x1946,0x1945,0x1945,0x2145,0x2145,0x2145,0x1945,0x1945,0x1964,0x1924,0x1926,0x1945,0x2125,0x1904,0x2144,0x1904,0x2105,0x2124,0x2105,0x1904,0x1104,0x18e4,0x18e4,0x1924,0x1104,0x1905,0x1103,0x0904,0x1903,0x1904,0x18e4,0x2103,0x18e5,0x1104,0x1103,0x08e3,0x10e4,0x10e3,0x10c4,0x1104,0x18c5,0x10c3,0x10c3,0x10e4,0x18c4,0x18e3,0x10c3,0x18e2,0x10e3,0x10c3,0x10c3,0x18c3,0x10c3,0x08e3,0x18e3,0x20e3,0x10c3,0x18c4,0x1904,0x2104,0x2104,0x1104,0x2104,0x1103,0x2186,0x8d54,0x6ace,0x18c4,0x1145,0x2166,0x2966,0x2986,0x3a07,0x4aa9,0x52ea,0x52e9, +0x74b2,0x4a89,0x52c9,0x4ac9,0x52a9,0x4a68,0x3207,0x31a6,0x3a08,0x4209,0x3a29,0x31e9,0x8c10,0xbe58,0x6c92,0x3aec,0x428b,0x426a,0x426a,0x3a6a,0x3a8a,0x428b,0x3a8a,0x328a,0x3249,0x3a6a,0x3269,0x3249,0x328a,0x328b,0x3a8a,0x3a6a,0x328b,0x326a,0x324a,0x324a,0x324a,0x3229,0x3209,0x3229,0x2a09,0x2a09,0x2a09,0x2a29,0x2a0a,0x29e9,0x2a29,0x2a08,0x2a09,0x2a29,0x29e7,0x29c7,0x21c7,0x21a8,0x29e8,0x2a08,0x21e8,0x21c7,0x29c8,0x29c8,0x31e8,0x29a7,0x29a7,0x31c8,0x29c8,0x29c8,0x29c7,0x31e8,0x3209,0x21a8,0x2988,0x29a8,0x29a7,0x31a8,0x29a8,0x29c8,0x21e8,0x21c8,0x21a8,0x21a8,0x29e8,0x21c7,0x29e8,0x29e8,0x21c8,0x29c8,0x31c8,0x29e8,0x29e8,0x31e8,0x29e9,0x3209,0x31e8,0x3209,0x3208,0x31e8,0x31e8,0x3a08,0x29c7,0x29c8,0x29e8,0x21c7,0x29c7,0x29c7,0x29a7,0x21c7,0x29c7,0x29c8,0x29c7,0x29c8,0x31c8,0x29a8,0x29c7,0x29e8,0x29e8,0x29c8,0x3228,0x3208,0x31e8,0x31e8,0x29c8,0x29e7,0x31e7,0x31e8,0x31e8,0x31e8,0x29e8,0x31e8,0x3209,0x31e8,0x29c7,0x29c8,0x31c8,0x31c8,0x29c8,0x29c8,0x31e8,0x39e8,0x29e8,0x31e8,0x3208,0x39e8,0x31e8,0x3a08,0x39e9,0x31c8,0x31a8,0x39e9,0x31c8,0x29a7,0x31c7,0x31e8,0x29e8,0x29e8,0x31e8,0x31e8,0x2a08,0x29a7,0x21a7,0x31c8,0x3187,0x29a8,0x31a8,0x2987,0x3187,0x2987,0x39a7,0x31a7,0x29c7,0x29a7,0x29a6,0x29a7,0x2987,0x19a7,0x2186,0x2187,0x2967,0x2966,0x2987,0x2987,0x2967,0x2987,0x21a7,0x1987,0x2187,0x31a8,0x29c8,0x21a7,0x2987,0x2166,0x1966,0x2166,0x2145,0x2166,0x2986,0x2185,0x1965,0x2166,0x2946,0x2145,0x2146,0x2946,0x2165,0x1965,0x2125,0x2145,0x1965,0x1965,0x2145,0x2145,0x2145,0x2145,0x2146,0x1925,0x1925,0x1925,0x1925,0x1124,0x1104,0x1925,0x1946,0x1905,0x1125,0x1145,0x1145,0x1104,0x1145,0x1925,0x1924,0x1904,0x1105,0x1105,0x1104,0x1104,0x0904,0x1905,0x18e4,0x1925,0x18e4,0x10e4,0x1104,0x10e4,0x1105,0x1105,0x1125,0x1125,0x1104,0x18e3,0x0903,0x1105,0x10e4,0x08e4,0x0903,0x08c3,0x08c4,0x08e4,0x1104,0x1104,0x1103,0x1124,0x1104,0x10e4,0x10e4,0x10e3,0x1104,0x08c3,0x08e4,0x08e4,0x0904,0x10e4,0x08e4,0x08e4,0x10e4,0x10c4,0x1105,0x1104,0x10e5,0x10c4,0x08c4,0x00a3,0x08c3,0x08e3,0x08c3,0x10c3,0x10e4,0x08e4,0x1105,0x10c3,0x10c3,0x08c4,0x08c4,0x0904,0x08e4,0x10c3,0x08c3,0x0882,0x1083,0x1083,0x0883,0x08c3,0x08e4,0x1145,0x1925,0x1125,0x0904,0x1144,0x1923,0x3228,0x7471,0x8c52,0x2906,0x2125,0x2165,0x2966,0x3166,0x2945,0x39e7,0x52a9,0x52ea,0x52ea, +0x74b2,0x4aa9,0x52a9,0x52a9,0x52c9,0x4a89,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e8,0x524a,0x9cd3,0xc679,0xbeda,0xc6da,0xc6fb,0xc6da,0xc6da,0xc6fb,0xc6db,0xc6db,0xbedb,0xc6fb,0xc6fb,0xcf3c,0xd75c,0xcf3c,0xcf5c,0xc71b,0xc71c,0xcf7c,0xcf7d,0xcf5c,0xc75c,0xcf5d,0xc71c,0xc75d,0xbf5d,0xc73b,0xc75c,0xc73c,0xc73c,0xcf5d,0xc75c,0xcf7d,0xc75c,0xc71c,0xc6fc,0xbebb,0xb6ba,0xbeda,0xbefb,0xbefb,0xbf1b,0xbefa,0xbedb,0xbf1b,0xbf1b,0xc71c,0xcf5c,0xbf1b,0xbf1b,0xb6fb,0xb71c,0xbf1b,0xbefb,0xbefb,0xbf1b,0xcf3c,0xc75c,0xb6fb,0xbedb,0xb6db,0xb6db,0xb6db,0xbedb,0xbefb,0xb6fb,0xc71c,0xb6da,0xbefb,0xbefb,0xbedb,0xb6fb,0xb6fb,0xb6fb,0xbefb,0xbf3c,0xcf7e,0xcf7d,0xbf3c,0xbf1c,0xbf1b,0xbf3c,0xb6ba,0xbefb,0xb6db,0xb6db,0xbeda,0xb6db,0xb69a,0xaeba,0xb6fb,0xb6ba,0xb6ba,0xae99,0xae79,0xae59,0xa659,0xae7a,0xae59,0xa638,0xa659,0xa679,0xae38,0xae59,0xa679,0xa679,0xa679,0xa659,0xa638,0xae59,0xa659,0x9e38,0x9df7,0xa618,0xa659,0xa659,0x9e38,0x9df8,0x95d7,0xa659,0x95f6,0x95d6,0x9df7,0x95d7,0x95f7,0x95f8,0x9db6,0x9db6,0x95b6,0x9595,0x95b6,0x9576,0x8d55,0x9596,0x8d95,0x8d76,0x9596,0x95b6,0x95d6,0x95b6,0x8d95,0x9595,0x9df7,0xa618,0xa638,0x9e39,0x9618,0x9e59,0x9e18,0xa5f8,0x9dd6,0x95b7,0x95f7,0x9dd7,0x9dd7,0x95f6,0x95d6,0x9dd7,0x9df8,0xae59,0xa659,0xae79,0xa639,0xa638,0x9e18,0xa659,0xae9a,0xae9a,0xb6ba,0xb6db,0xbedb,0xae7a,0xb6ba,0xbeba,0xb69a,0xae9a,0xb6ba,0xb69a,0xbedb,0xae79,0xae58,0xae38,0xae59,0xae79,0xae9a,0xb69a,0xae79,0xae78,0xae99,0xae99,0xaeba,0xb6db,0xb6bb,0xb6fb,0xb6fa,0xb6da,0xb6da,0xb6db,0xae9a,0xbebb,0xbedb,0xb6ba,0xbe9a,0xb6da,0xb6fa,0xbefb,0xb6da,0xc6fc,0xb6db,0xaeba,0xb6db,0xb6ba,0xb6ba,0xb6db,0xbefb,0xbefb,0xaeba,0xae59,0xb699,0xb69a,0xb679,0xb699,0xb69a,0xb69a,0xae79,0xa67a,0xae7a,0xb679,0xb679,0xa658,0xa659,0xae7a,0xae7a,0xa679,0xb659,0xae39,0xa618,0xae39,0xae39,0xa617,0xae58,0xae59,0xb659,0xb618,0xae18,0xae18,0xae38,0xae18,0xa618,0x9dd7,0xa5f7,0xa5b7,0xa5f8,0x9df8,0xa5d7,0xa5d6,0x95d7,0x95d7,0xa5f7,0xa617,0x9df8,0x9dd7,0x9df8,0x9df8,0x9dd7,0x9db7,0x9dd7,0x95b7,0x8d76,0x95b6,0x9576,0x9db6,0x9db7,0x8db6,0x8db6,0x9dd7,0x9576,0x9555,0x9d35,0x9555,0x9556,0x8d76,0x8d76,0x9535,0x8d33,0x8d34,0x9555,0x8d14,0x8d34,0x9534,0x8d14,0x8d15,0x8d14,0x8cf3,0x9492,0x41e8,0x1925,0x2105,0x2965,0x3165,0x2186,0x3145,0x3a07,0x5289,0x5aea,0x5aea, +0x6c91,0x4ac9,0x52a9,0x4ac9,0x52ca,0x4a89,0x39e6,0x31a6,0x3228,0x3a29,0x3a08,0x3a08,0x3a09,0x49e9,0x6aec,0x736e,0x83af,0x83f0,0x8c10,0x8c31,0x8411,0x83cf,0x83ef,0x8c10,0x8c11,0x83f0,0x8c11,0x9431,0x9411,0x9472,0x9c72,0x9c72,0x9c52,0x9431,0x9431,0x9451,0x9451,0x9452,0x9432,0x9432,0x8bf1,0x9472,0x9cb2,0xa4b3,0x9c73,0x9cb3,0xad14,0xb4f4,0xad14,0xb575,0xad55,0xbd96,0xb575,0xad13,0xad14,0xad14,0xb534,0xc5b6,0xb555,0xad14,0xb555,0xbd76,0xb555,0xbd54,0xb555,0xbd76,0xbd75,0xbd96,0xc5b6,0xcdd7,0xbdd7,0xc5d8,0xc618,0xc618,0xce39,0xc618,0xce18,0xc5f8,0xc5d8,0xd659,0xce38,0xd639,0xcdf8,0xd639,0xd639,0xce18,0xce18,0xce38,0xd639,0xd679,0xce59,0xce38,0xce39,0xce19,0xce19,0xce18,0xd679,0xce7a,0xd69a,0xd67a,0xdeba,0xdedb,0xdf1b,0xdedb,0xd6ba,0xd679,0xdefb,0xdefb,0xdeda,0xdeba,0xdeba,0xd6ba,0xd6ba,0xdeba,0xdeba,0xd6ba,0xde9a,0xdeba,0xde9a,0xdeba,0xe6fb,0xe6fa,0xe6db,0xdeda,0xdeba,0xdeda,0xd6db,0xdedb,0xe6fb,0xde9a,0xdeba,0xdefb,0xdefb,0xdefc,0xdedb,0xe6fb,0xef3c,0xef7d,0xe71c,0xe71c,0xe71c,0xe71c,0xe6fb,0xe73b,0xe71c,0xef7d,0xef7d,0xe71c,0xe73c,0xe77d,0xe73d,0xe71c,0xe6fc,0xe71c,0xe71b,0xdf1b,0xe73c,0xe71c,0xdf3c,0xdefb,0xdefb,0xe71c,0xef3d,0xe73d,0xe71c,0xe73c,0xef3c,0xe73c,0xe73c,0xdefb,0xdefb,0xdf1b,0xe71c,0xe6db,0xe6db,0xde9a,0xd69a,0xdeba,0xdeba,0xe6db,0xd67a,0xce39,0xce38,0xd638,0xd638,0xd659,0xd659,0xce18,0xc5d7,0xcdf7,0xc5d7,0xc5d7,0xc5d7,0xbd96,0xcdf8,0xc617,0xc5d7,0xbdb7,0xbdb6,0xc5d7,0xbdd7,0xbd55,0xc597,0xc5b7,0xc5d7,0xbd96,0xb576,0xb596,0xbdb6,0xc5f7,0xc5d8,0xbd96,0xb555,0xbd96,0xbd75,0xad34,0xad34,0xad34,0xb534,0xb534,0xad14,0xb514,0xa4d4,0xa4f3,0xa4f3,0x9cb3,0xa4b3,0xa4d3,0x9c92,0x9c52,0xa493,0xa4b3,0x9c72,0x9471,0x9471,0x8c31,0x8bf0,0x83af,0x7b8e,0x8bf0,0x8baf,0x7b4e,0x7b2e,0x734e,0x7b6e,0x83ae,0x838e,0x7b8d,0x7b6e,0x734e,0x736e,0x7b8f,0x834e,0x7b2c,0x7b0c,0x72eb,0x730c,0x72ec,0x6acb,0x72ec,0x730c,0x62cc,0x62ac,0x62cc,0x6acb,0x6a6a,0x6a8b,0x62cb,0x628a,0x6249,0x624a,0x626b,0x5a8b,0x5a4a,0x5228,0x524a,0x4a2a,0x522a,0x4a28,0x4a09,0x49e9,0x49e8,0x41e8,0x49c8,0x49c8,0x5228,0x49e8,0x49e7,0x4187,0x4187,0x41a7,0x49a8,0x4186,0x41a7,0x39a8,0x3966,0x3146,0x3946,0x3166,0x3186,0x39a7,0x39a7,0x41a8,0x41c8,0x39c7,0x5209,0x49e8,0x3987,0x2925,0x2145,0x2165,0x2966,0x2986,0x3186,0x31a6,0x2144,0x3206,0x52a9,0x5b0a,0x5aea, +0x6c50,0x52aa,0x52a9,0x52c9,0x52c9,0x4a88,0x31a6,0x39e7,0x3a29,0x3a28,0x3a29,0x3a28,0x3228,0x3228,0x39e8,0x29a7,0x2166,0x3187,0x31a7,0x3187,0x31a8,0x3a08,0x31c7,0x29a7,0x31a7,0x2966,0x2946,0x2145,0x2145,0x2146,0x2166,0x2145,0x2946,0x2946,0x2187,0x2967,0x2167,0x2126,0x2966,0x2966,0x2967,0x3167,0x2966,0x2967,0x2947,0x2966,0x3187,0x3166,0x2966,0x2146,0x2146,0x2126,0x2946,0x2987,0x2167,0x2967,0x2946,0x3146,0x3967,0x2966,0x2967,0x2967,0x3166,0x3146,0x3166,0x31a7,0x31a8,0x2987,0x2987,0x2967,0x31a7,0x3168,0x3187,0x3187,0x3167,0x2967,0x3988,0x31a7,0x31a7,0x39e9,0x3187,0x39a8,0x41c8,0x3987,0x3187,0x3988,0x3988,0x39a7,0x3987,0x39a8,0x31a7,0x31c8,0x39a8,0x31a8,0x39c8,0x41a8,0x39a8,0x39a7,0x3987,0x3987,0x41a8,0x4188,0x4188,0x4188,0x4188,0x41a8,0x3988,0x4187,0x41a8,0x41c8,0x31a8,0x39a8,0x39a8,0x41a8,0x39a8,0x39c8,0x41e8,0x39c8,0x39a9,0x31c8,0x39e9,0x39c8,0x39e8,0x39c8,0x39a8,0x39c8,0x39c9,0x41c9,0x39c8,0x39a8,0x39e8,0x39e8,0x41e8,0x39c8,0x39a8,0x41c8,0x49e9,0x49e9,0x41c9,0x49c8,0x41a8,0x49c8,0x49e8,0x4a09,0x49c9,0x51e9,0x49c8,0x41c8,0x41a8,0x49e9,0x3988,0x41c8,0x41e8,0x41c8,0x41e8,0x41c8,0x49c8,0x41c8,0x41c8,0x41c8,0x41a8,0x39a8,0x3988,0x41a8,0x41c8,0x49c8,0x4187,0x3987,0x3988,0x3987,0x3987,0x3187,0x3167,0x3967,0x3987,0x3987,0x3166,0x3967,0x3946,0x3986,0x2946,0x3946,0x3146,0x3146,0x3166,0x2926,0x2946,0x2966,0x3146,0x3125,0x2926,0x2925,0x2925,0x2925,0x3125,0x2905,0x2905,0x2925,0x3125,0x2905,0x2925,0x2925,0x2105,0x20e4,0x2105,0x2124,0x2905,0x3104,0x2104,0x28e5,0x28e5,0x28e4,0x20c4,0x18e5,0x20e4,0x20e5,0x2904,0x2104,0x28e4,0x20c3,0x20a4,0x20c4,0x20c4,0x20c4,0x20c3,0x20e4,0x20c4,0x18e3,0x18c4,0x18e4,0x18c4,0x20c4,0x20a4,0x10c4,0x10a3,0x20c4,0x20e4,0x1125,0x1905,0x18c3,0x20c4,0x20a4,0x20c4,0x20e4,0x18a3,0x10a3,0x18c4,0x10c3,0x10c4,0x18c4,0x08a4,0x08a3,0x10c4,0x08a3,0x10c3,0x18c4,0x10c3,0x08a3,0x10a4,0x0883,0x10a4,0x1084,0x0883,0x10c3,0x18a4,0x18a3,0x18a3,0x10a3,0x0883,0x0863,0x0863,0x0883,0x10c4,0x10a4,0x10c4,0x10c3,0x08a3,0x0884,0x0883,0x18a4,0x1082,0x10a3,0x00a3,0x0882,0x0882,0x0882,0x1083,0x1082,0x1083,0x1082,0x1082,0x1882,0x1083,0x1083,0x1063,0x1083,0x0883,0x00a3,0x08a2,0x10a2,0x10c3,0x20e4,0x10c4,0x10e4,0x10e4,0x18c4,0x10c3,0x20e5,0x1904,0x1945,0x1965,0x2165,0x3186,0x31c6,0x31c6,0x2125,0x3a06,0x4ac9,0x5b0a,0x5aea, +0x6c50,0x52a9,0x5aa9,0x52a8,0x52c9,0x4a68,0x31c6,0x3a28,0x3a29,0x4249,0x3a29,0x3a28,0x3228,0x3a08,0x39c8,0x29c7,0x31c8,0x29c7,0x31e8,0x3208,0x3a09,0x39e9,0x3a09,0x3208,0x3208,0x31e8,0x29c7,0x29e7,0x3208,0x31c7,0x31e7,0x3a07,0x3a07,0x31e7,0x3207,0x3208,0x3208,0x4228,0x3a28,0x39e8,0x3208,0x31e8,0x3a08,0x3208,0x3228,0x3a48,0x3a28,0x39e8,0x3a28,0x3a09,0x3a08,0x3a09,0x3a29,0x3209,0x3a09,0x3a07,0x3a08,0x3a09,0x3a09,0x3a29,0x3a49,0x3a28,0x4209,0x4a09,0x3a28,0x3a29,0x4209,0x4229,0x4228,0x3a49,0x4249,0x4a4a,0x4a49,0x3a29,0x3a4a,0x4229,0x3a2a,0x3a29,0x3a09,0x4249,0x4229,0x4a29,0x4249,0x3a49,0x3a49,0x3a28,0x3a09,0x3a29,0x3249,0x3a49,0x3a4a,0x3a29,0x4a2a,0x4249,0x3a28,0x3a49,0x3269,0x4269,0x3a69,0x3a49,0x3a49,0x4249,0x4249,0x3a49,0x4249,0x3a29,0x4229,0x4249,0x424a,0x3a4a,0x3a2a,0x3a4a,0x4269,0x4269,0x3a69,0x4249,0x4269,0x4249,0x3a4a,0x426a,0x4a4a,0x4a4a,0x3a6a,0x3a6a,0x424a,0x422a,0x422a,0x424a,0x426a,0x4a49,0x4a6a,0x4a6b,0x426b,0x426a,0x426a,0x424a,0x4a4a,0x426a,0x426a,0x428a,0x428a,0x426a,0x424a,0x4a8a,0x3a4a,0x426a,0x3a49,0x3a49,0x3a49,0x3a69,0x3a69,0x4a8a,0x4a49,0x4a6a,0x4249,0x4249,0x4229,0x4a49,0x4269,0x3a49,0x4249,0x4229,0x4229,0x3a29,0x3a08,0x424a,0x3229,0x4249,0x422a,0x3a49,0x3a29,0x3229,0x3a09,0x3a28,0x4229,0x3a08,0x3a28,0x3a29,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x39e8,0x39e8,0x3208,0x39e8,0x31e8,0x31c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31a6,0x39e7,0x39e7,0x31c7,0x29c7,0x31c8,0x31c8,0x39e8,0x39c7,0x31e7,0x31a6,0x39a6,0x2986,0x31a7,0x39c7,0x39a7,0x3187,0x3187,0x31a7,0x2187,0x29a6,0x29a6,0x29a6,0x2986,0x3187,0x2987,0x31a6,0x3187,0x3187,0x2166,0x2967,0x2987,0x2986,0x2986,0x2946,0x3166,0x3166,0x1965,0x2965,0x3166,0x2925,0x2185,0x2146,0x2946,0x1966,0x1966,0x2166,0x1965,0x2146,0x2165,0x1945,0x2165,0x2965,0x2145,0x1945,0x2145,0x2145,0x1945,0x1945,0x2125,0x2945,0x2145,0x1925,0x2105,0x2126,0x1925,0x1925,0x1944,0x2125,0x1925,0x1905,0x1925,0x2124,0x2105,0x1905,0x1924,0x10e5,0x1104,0x1104,0x1104,0x10e5,0x1904,0x1104,0x1104,0x1904,0x2104,0x20e4,0x1904,0x1104,0x1103,0x1904,0x20c4,0x18c4,0x10e4,0x08e3,0x1904,0x10c4,0x10e4,0x20e4,0x08e3,0x1123,0x1104,0x0925,0x0924,0x1945,0x2165,0x2145,0x2145,0x2144,0x1945,0x2145,0x1945,0x1945,0x2966,0x2946,0x2966,0x29c7,0x31c7,0x2966,0x2124,0x4267,0x4aea,0x5b0b,0x5b0a, +0x6c51,0x52c9,0x5ac9,0x52c8,0x4ac8,0x3a68,0x3227,0x3a49,0x3a4a,0x3a69,0x3a49,0x3a29,0x3208,0x3207,0x31e7,0x2a08,0x31e7,0x2a07,0x31e8,0x3208,0x3208,0x31e8,0x3208,0x3208,0x3208,0x31c8,0x29c7,0x31c7,0x31c7,0x29a7,0x29c7,0x39c7,0x31e7,0x31c7,0x39c7,0x31c7,0x3208,0x3a08,0x29e8,0x29e7,0x3208,0x31e8,0x39e8,0x39c8,0x39e7,0x31c7,0x29e7,0x31e8,0x39e8,0x39e8,0x31e8,0x31c8,0x31c8,0x31a7,0x39e7,0x31e8,0x31e7,0x3a08,0x3a08,0x3a28,0x3a29,0x3a08,0x3208,0x39e8,0x3209,0x39e8,0x3a09,0x3228,0x4229,0x3a29,0x3a28,0x3a09,0x3a28,0x4228,0x4229,0x4249,0x3249,0x3a29,0x3a29,0x3229,0x3a49,0x4a49,0x3a28,0x3a29,0x3a49,0x3a69,0x3a69,0x4249,0x4249,0x426a,0x426a,0x3a49,0x4269,0x424a,0x3a4a,0x426a,0x4269,0x424a,0x4249,0x428a,0x3a69,0x426a,0x4249,0x4249,0x424a,0x426a,0x3a6a,0x4249,0x4269,0x3a49,0x424a,0x3a6a,0x4249,0x4269,0x3a6a,0x424a,0x426a,0x4229,0x4249,0x4269,0x4269,0x4a49,0x4249,0x3a49,0x4269,0x424a,0x424a,0x4269,0x4a49,0x4a49,0x4a49,0x4229,0x424a,0x428a,0x424a,0x424a,0x424b,0x3a4a,0x3a49,0x426a,0x4269,0x4249,0x424a,0x3a6a,0x3a6a,0x426a,0x3a69,0x3a6a,0x4269,0x4269,0x426a,0x426a,0x426a,0x3a89,0x3a69,0x4269,0x3a29,0x4249,0x426a,0x3a69,0x4289,0x3a49,0x3a29,0x422a,0x3249,0x3229,0x3a4a,0x422a,0x3a29,0x3229,0x3a29,0x3a28,0x4228,0x3a08,0x4209,0x3a08,0x3a28,0x3a08,0x31c8,0x4229,0x3a08,0x3a08,0x3208,0x29e8,0x3208,0x3a08,0x3a08,0x39e8,0x3209,0x31e7,0x39e8,0x39a7,0x4208,0x3a08,0x31e8,0x39e7,0x39e7,0x31c7,0x31e7,0x2986,0x31e7,0x31c7,0x31c7,0x31c7,0x31c7,0x39c7,0x2987,0x39a7,0x3187,0x29a6,0x29c6,0x29a6,0x31a7,0x31a7,0x21a6,0x21a6,0x31a7,0x31a7,0x29a6,0x3186,0x3186,0x31a7,0x2986,0x2986,0x3186,0x3166,0x2985,0x29a6,0x21a6,0x2166,0x2166,0x2166,0x2966,0x1966,0x2166,0x2985,0x2965,0x2186,0x1946,0x2146,0x2966,0x2966,0x2946,0x1146,0x1946,0x2145,0x1925,0x2966,0x2145,0x2165,0x2145,0x2965,0x2945,0x1945,0x2166,0x2125,0x2145,0x2145,0x1945,0x2145,0x1925,0x1125,0x1945,0x1925,0x1924,0x1145,0x1925,0x1924,0x1904,0x2125,0x1905,0x1925,0x1905,0x1924,0x1924,0x1105,0x1125,0x2104,0x1905,0x1124,0x2124,0x2125,0x1905,0x1105,0x1104,0x1104,0x1925,0x2104,0x20c4,0x1924,0x1904,0x1905,0x1925,0x1924,0x1924,0x1125,0x1945,0x1945,0x1145,0x1945,0x2145,0x2145,0x2185,0x2965,0x2146,0x1965,0x2945,0x2945,0x2145,0x2965,0x2986,0x2986,0x2987,0x31a7,0x2965,0x31e6,0x4aa8,0x5aea,0x630b,0x632a, +0x6cb1,0x4ac9,0x52c9,0x4ac9,0x4ac9,0x3a68,0x4227,0x4aaa,0x3a8a,0x4289,0x4269,0x3a49,0x3228,0x3a07,0x31e8,0x31e8,0x2987,0x31e8,0x29e7,0x31a7,0x31c7,0x29e7,0x31e8,0x31e8,0x39c8,0x31c8,0x29c7,0x31c7,0x31c8,0x29c8,0x31c8,0x31c8,0x31c8,0x31c7,0x31c7,0x39e8,0x3208,0x31e7,0x31c8,0x31c7,0x39e8,0x3a08,0x31e7,0x39e8,0x3a08,0x3a08,0x3228,0x3a08,0x3a08,0x3a08,0x39c8,0x3a08,0x31c8,0x31c7,0x3208,0x3208,0x3208,0x4228,0x3a08,0x3a08,0x3209,0x31e8,0x3a28,0x3a28,0x3229,0x3a29,0x4229,0x3249,0x4249,0x3a49,0x4229,0x4a49,0x4a49,0x4249,0x424a,0x3a4a,0x4249,0x4a49,0x3a49,0x3269,0x4249,0x4249,0x3a69,0x3a4a,0x4229,0x4a69,0x3a49,0x3a6a,0x3a6a,0x426a,0x428a,0x4249,0x424a,0x424a,0x426a,0x4a8b,0x4a6b,0x426a,0x4249,0x428b,0x3a6a,0x426a,0x4a6a,0x4a6a,0x4269,0x3a89,0x42aa,0x428a,0x428a,0x3a49,0x4a8a,0x428a,0x426a,0x426a,0x426a,0x4a6a,0x3a48,0x4249,0x4a6a,0x4a6a,0x426a,0x4a4a,0x4269,0x3a49,0x4249,0x3a29,0x4269,0x4249,0x4249,0x3a49,0x3a4a,0x3a49,0x3a49,0x424a,0x3a69,0x4249,0x4a4a,0x424a,0x4249,0x4269,0x424a,0x426a,0x4249,0x4269,0x426a,0x428a,0x426a,0x4249,0x4269,0x426a,0x4269,0x426b,0x428a,0x426a,0x3a6a,0x424a,0x4249,0x4269,0x426a,0x426a,0x426a,0x424a,0x424a,0x426a,0x424a,0x424a,0x424a,0x4229,0x4229,0x3a29,0x4229,0x3a48,0x3a28,0x3a08,0x3a08,0x3229,0x4229,0x3209,0x4249,0x4229,0x3a09,0x3a28,0x3a29,0x31e8,0x3a08,0x3a28,0x3a28,0x3a08,0x3a08,0x31e8,0x31e8,0x3a08,0x3a08,0x31e7,0x31e8,0x41e8,0x4208,0x31e8,0x39c8,0x29a7,0x31e7,0x39c7,0x31c7,0x31e7,0x39e8,0x39e9,0x29c8,0x31a7,0x39a7,0x3187,0x29c7,0x29e7,0x29c7,0x31a7,0x21a7,0x29c7,0x29e7,0x31a7,0x31c8,0x31c7,0x29a6,0x3187,0x2987,0x21a7,0x2986,0x2986,0x3186,0x29a7,0x2987,0x2987,0x2987,0x2166,0x2966,0x2966,0x2966,0x1985,0x29a5,0x29a6,0x2966,0x2146,0x2966,0x2987,0x2966,0x1946,0x1945,0x2165,0x2145,0x2166,0x1965,0x2165,0x2946,0x2966,0x2165,0x1965,0x2186,0x2166,0x1986,0x2186,0x2165,0x2966,0x2166,0x2146,0x2986,0x2186,0x3166,0x3165,0x2145,0x2146,0x2166,0x2165,0x2966,0x2966,0x2166,0x1945,0x2166,0x1945,0x1965,0x1946,0x1945,0x1945,0x2144,0x2145,0x1945,0x1965,0x2945,0x2945,0x2946,0x2126,0x2125,0x2946,0x1965,0x2985,0x2985,0x2165,0x2165,0x2165,0x1945,0x2146,0x1965,0x1145,0x2146,0x1965,0x21a6,0x2186,0x1966,0x2965,0x2965,0x2166,0x2166,0x31a6,0x29a6,0x31a6,0x3186,0x3186,0x39e6,0x4267,0x4ae9,0x5b2b,0x630b,0x630b, +0x7d33,0x4aa8,0x52ea,0x52c9,0x52c9,0x4ac9,0x5289,0x5289,0x426a,0x426a,0x4269,0x3a69,0x3a48,0x3a08,0x3a28,0x3208,0x3208,0x3207,0x3207,0x3208,0x3208,0x31e7,0x31e8,0x39e8,0x3a08,0x3a08,0x3a08,0x41e8,0x31e7,0x3a08,0x31c8,0x31e8,0x3a28,0x3228,0x3208,0x3a08,0x3a08,0x3a08,0x3208,0x3229,0x3a28,0x3a29,0x3209,0x3208,0x3a09,0x3249,0x3228,0x3a29,0x3a29,0x4229,0x3a08,0x3a29,0x3a49,0x3a4a,0x4229,0x3228,0x3249,0x3a49,0x3a49,0x3a29,0x424a,0x4249,0x3a49,0x3228,0x3a29,0x3229,0x424a,0x426a,0x4a69,0x3a6a,0x3a6a,0x4a69,0x4a6a,0x4a6a,0x426a,0x3a8a,0x3a8a,0x4249,0x4269,0x426a,0x428a,0x426a,0x428a,0x426a,0x426a,0x4a8a,0x3a6a,0x428b,0x3a6a,0x3a6a,0x428b,0x428a,0x42aa,0x428a,0x4a8b,0x4a8b,0x4a8a,0x52cb,0x4a8a,0x4aab,0x4a8b,0x4aab,0x428b,0x428b,0x4269,0x3a6a,0x4a6a,0x428b,0x4a8a,0x4a8b,0x4acb,0x4a6b,0x426a,0x426a,0x528a,0x4a6a,0x4a6b,0x426a,0x4a8a,0x426b,0x426a,0x42aa,0x4a6a,0x426a,0x426a,0x4a8a,0x4269,0x426a,0x4269,0x428a,0x4a6a,0x426a,0x426a,0x4a6a,0x426a,0x428b,0x426a,0x3a6a,0x426b,0x426a,0x426a,0x426a,0x424a,0x4a4a,0x4a6a,0x426a,0x426a,0x426a,0x4a69,0x426a,0x4a6a,0x4a6b,0x428b,0x428a,0x428a,0x426b,0x426a,0x426a,0x426b,0x428a,0x4a8a,0x4a8b,0x4a8b,0x426a,0x426a,0x526a,0x424a,0x4a4a,0x426a,0x3a6a,0x4269,0x3a89,0x426a,0x426a,0x424a,0x424a,0x424a,0x3a29,0x4249,0x424a,0x3a4a,0x3a28,0x3a69,0x3a09,0x3a09,0x3a09,0x3a29,0x3209,0x3a29,0x4209,0x4249,0x3a49,0x3a4a,0x3a08,0x3a08,0x3a29,0x3a08,0x3a28,0x3a28,0x3a29,0x3a09,0x3208,0x3208,0x3a09,0x3a08,0x3208,0x3227,0x3208,0x4209,0x2a08,0x3208,0x3a07,0x3a08,0x31e8,0x31c7,0x39e8,0x29c7,0x29e8,0x31c7,0x31e7,0x3208,0x39e8,0x31a8,0x31c8,0x31c8,0x21c6,0x31c7,0x29c7,0x29a7,0x39c8,0x39c7,0x31c7,0x29a7,0x31a7,0x29a6,0x21a6,0x2986,0x29a7,0x31c7,0x29e7,0x31c7,0x31c7,0x31c7,0x29c7,0x29a7,0x2987,0x29a7,0x31a7,0x2986,0x2986,0x29a6,0x21a6,0x21a7,0x2986,0x29a7,0x31a7,0x29a6,0x31a6,0x29c7,0x29a7,0x29c7,0x31a7,0x31a7,0x3186,0x29a7,0x29a6,0x29c7,0x2986,0x31a6,0x3187,0x2986,0x31a6,0x2985,0x2166,0x2986,0x1985,0x2186,0x2186,0x21a6,0x2166,0x2966,0x3186,0x2946,0x2967,0x3186,0x2985,0x21a5,0x2185,0x2166,0x2186,0x2985,0x2985,0x2186,0x2966,0x2146,0x2146,0x2166,0x2965,0x2146,0x2145,0x2146,0x2986,0x2186,0x2186,0x2165,0x3185,0x2986,0x2986,0x2186,0x3a08,0x2166,0x29a5,0x3185,0x39c7,0x3a47,0x52a9,0x5aea,0x5b0a,0x632a,0x5b2b, +0x8df7,0x4aeb,0x52ea,0x5aea,0x5b0a,0x5aea,0x52ea,0x5289,0x4268,0x42aa,0x4289,0x4289,0x428a,0x4249,0x4a69,0x3a69,0x3a08,0x3a48,0x3228,0x3a49,0x4249,0x4249,0x3a49,0x3a49,0x3a49,0x3a49,0x4249,0x4249,0x3a49,0x3a8a,0x3269,0x3a69,0x3208,0x31e8,0x3a28,0x3a29,0x3229,0x3a6a,0x3229,0x3229,0x3a4a,0x3a29,0x4229,0x4249,0x3a4a,0x3a6a,0x3a49,0x3a29,0x3a29,0x4249,0x4249,0x4269,0x426a,0x426a,0x4a6a,0x4a6a,0x428a,0x428a,0x4249,0x428a,0x4a8b,0x4a8a,0x428a,0x3a8b,0x3a8a,0x3a6a,0x4a6a,0x528b,0x4a8a,0x42ab,0x42cb,0x4aab,0x4a8a,0x4a8a,0x42ab,0x42cb,0x428b,0x4a8b,0x4a8a,0x4aab,0x4aab,0x4aab,0x52cb,0x52eb,0x4acb,0x52ab,0x4acb,0x4acb,0x4acb,0x52cb,0x52cc,0x52ab,0x4acb,0x4aab,0x4acc,0x52cc,0x52cb,0x4acc,0x52cb,0x52ab,0x52eb,0x52ec,0x4acc,0x4aab,0x52cb,0x4aab,0x52ab,0x4aab,0x52ab,0x4acb,0x4acb,0x4a8b,0x52ab,0x4aaa,0x52aa,0x4aab,0x4aab,0x4a8a,0x52ab,0x4a8b,0x42aa,0x4aaa,0x428a,0x4a8a,0x428a,0x4a8a,0x426a,0x4a8a,0x4aab,0x4a8a,0x4a89,0x4aab,0x426a,0x4a6a,0x4a6a,0x4a6a,0x4a8a,0x428a,0x428a,0x4a8a,0x4aaa,0x42aa,0x428a,0x4a6a,0x4aaa,0x4a8a,0x52ab,0x42aa,0x4aab,0x4aab,0x4a6a,0x4a8b,0x52ab,0x428b,0x4a8a,0x428a,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x528b,0x528b,0x4a8b,0x428a,0x42aa,0x4a8a,0x428a,0x52ab,0x42aa,0x52ab,0x4a8a,0x428a,0x4aaa,0x4acb,0x4a8b,0x4a6b,0x4a8a,0x4269,0x4a6a,0x4a8a,0x4a8a,0x428a,0x426a,0x426a,0x426a,0x422a,0x428a,0x428a,0x4269,0x3a49,0x4248,0x4a69,0x4249,0x4249,0x428a,0x3a49,0x4a6a,0x4229,0x424a,0x4269,0x4269,0x3a48,0x4229,0x4249,0x3a28,0x3a49,0x4249,0x4228,0x4228,0x3a27,0x4229,0x3a08,0x4208,0x3a28,0x3a28,0x3228,0x39e8,0x3208,0x3a27,0x3a07,0x4208,0x4208,0x39e9,0x39e8,0x39c7,0x29e7,0x31e7,0x3207,0x39e8,0x39c7,0x39e8,0x31e7,0x31c7,0x29a7,0x31c7,0x31e6,0x39c7,0x31c7,0x31a7,0x3188,0x31c7,0x31c7,0x31a6,0x39a7,0x3186,0x2966,0x29c7,0x3186,0x3166,0x3187,0x31a6,0x31a6,0x31a6,0x31c6,0x29c6,0x3186,0x3186,0x3186,0x21a5,0x2986,0x3185,0x31a6,0x3166,0x31a6,0x31a6,0x29a6,0x31a6,0x3165,0x29a5,0x2965,0x3186,0x2985,0x2965,0x2186,0x2186,0x1944,0x2945,0x2125,0x3165,0x2165,0x2165,0x2965,0x2986,0x2965,0x2985,0x2965,0x2165,0x2145,0x3165,0x2965,0x2185,0x3164,0x2965,0x2945,0x2165,0x2145,0x2986,0x2945,0x2165,0x2946,0x2985,0x2185,0x2985,0x29a6,0x2985,0x31a6,0x31a5,0x31a5,0x2985,0x29a6,0x2185,0x29a5,0x31e6,0x3a27,0x4288,0x52ea,0x5aea,0x5b0a,0x5b2b,0x5b2a, +0xae99,0x4baf,0x530a,0x530a,0x630b,0x630b,0x5b2b,0x52ea,0x4ac9,0x4aaa,0x526a,0x5b0c,0x5b4c,0x634c,0x73ae,0x52ca,0x4228,0x4289,0x3a48,0x4269,0x630b,0x634c,0x530b,0x4a89,0x52aa,0x4a49,0x4a69,0x52ca,0x5b4c,0x638d,0x4a8a,0x4aa9,0x634c,0x6bce,0x638d,0x63ad,0x6bad,0x6b8d,0x6bed,0x6bcd,0x4aaa,0x4248,0x4268,0x4249,0x4269,0x4269,0x4269,0x4269,0x4a49,0x4248,0x3a68,0x4268,0x4a6a,0x4269,0x4a69,0x4a69,0x4229,0x426a,0x4a49,0x4a89,0x4269,0x52ab,0x4a6a,0x4a89,0x4a6a,0x4aaa,0x4268,0x4248,0x426a,0x4a6a,0x4a8a,0x4aab,0x4aaa,0x4a69,0x4a8a,0x4aaa,0x5289,0x528a,0x4a6a,0x528b,0x52aa,0x52ca,0x52ab,0x52ab,0x52aa,0x528b,0x4acb,0x52aa,0x4aaa,0x528a,0x5acb,0x52ab,0x4aaa,0x5acb,0x5acb,0x52cb,0x52aa,0x4249,0x4a4a,0x526a,0x52aa,0x528a,0x52aa,0x4269,0x4a8a,0x52ab,0x528a,0x4a89,0x4a8a,0x4a69,0x4a8a,0x428a,0x4a8a,0x4aa9,0x4aa9,0x4aaa,0x4249,0x4a68,0x52a9,0x4a69,0x4269,0x428a,0x4a69,0x528a,0x4a89,0x4aca,0x528a,0x4a69,0x4a6a,0x4aa9,0x4a48,0x3a28,0x4269,0x42aa,0x4269,0x4a49,0x4aa9,0x42aa,0x4a8a,0x4a8a,0x4aa9,0x4a69,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a89,0x4a28,0x4a6a,0x4248,0x5289,0x4a89,0x3a69,0x3249,0x4249,0x4289,0x4269,0x4a49,0x4269,0x4249,0x4249,0x424a,0x4229,0x5268,0x4a68,0x4228,0x4249,0x4a28,0x4228,0x4228,0x4229,0x4248,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x3a48,0x3a28,0x3a08,0x4228,0x4249,0x4228,0x4207,0x39e7,0x39e7,0x41e7,0x39e8,0x4227,0x31e7,0x3a48,0x3a27,0x4228,0x4248,0x4207,0x4228,0x3a07,0x31c6,0x3a08,0x39e7,0x3228,0x3248,0x39e7,0x41e7,0x39a6,0x39e7,0x41e7,0x39e7,0x31a7,0x39c6,0x39a6,0x39c7,0x39e7,0x31c7,0x39e6,0x31c6,0x3a08,0x31c6,0x39e6,0x3a07,0x31c6,0x39e7,0x31a6,0x3a07,0x31c6,0x31c6,0x3a07,0x31e7,0x31c6,0x39c6,0x31c6,0x31a6,0x31e7,0x39e6,0x4207,0x3a07,0x29a6,0x31c7,0x39e7,0x41e7,0x39e7,0x31c6,0x3a06,0x39c7,0x31c7,0x39c6,0x3a06,0x39e6,0x3a07,0x3a06,0x31e6,0x3a07,0x3206,0x3207,0x4207,0x3a06,0x4227,0x4227,0x3a07,0x4227,0x3a26,0x39e7,0x3a07,0x31e6,0x4206,0x4227,0x39e7,0x39e6,0x4227,0x4206,0x39e7,0x4228,0x4207,0x4206,0x4207,0x39e6,0x4207,0x41e7,0x4206,0x3a27,0x3a06,0x3a27,0x3a26,0x3a07,0x3206,0x3a07,0x3a07,0x4207,0x4206,0x31e6,0x39e7,0x39e6,0x4205,0x3a06,0x39e6,0x39e6,0x3206,0x3206,0x3207,0x41e7,0x39e6,0x3206,0x3a07,0x3a06,0x3a07,0x3226,0x4226,0x3a06,0x4227,0x3a07,0x3a27,0x4248,0x4248,0x5289,0x5aaa,0x5aca,0x5aca,0x5b0a,0x5b0b,0x5b2b, +0xc698,0x95f8,0x4b2c,0x5b4b,0x5b0b,0x632b,0x5b0b,0x5b0b,0x530a,0x5aea,0x52aa,0x4a89,0x52a9,0x52aa,0x5289,0x5289,0x5289,0x4aa9,0x4aa9,0x4ac9,0x52a9,0x52a9,0x52a9,0x5a89,0x4a89,0x52a9,0x5289,0x5289,0x52a9,0x4a89,0x5269,0x5289,0x5289,0x5269,0x4a68,0x4a8a,0x4a8a,0x52a9,0x5aa9,0x5289,0x4aa9,0x52c9,0x52a8,0x52a9,0x52a9,0x52aa,0x52a9,0x52c9,0x52c9,0x4aca,0x52ca,0x5aca,0x52ca,0x4ac9,0x52ea,0x52aa,0x52c9,0x52ca,0x52ca,0x4ac9,0x52ca,0x52ea,0x52e9,0x5ae9,0x5aca,0x52ca,0x4aca,0x52ea,0x52ca,0x4aca,0x52ca,0x5aca,0x52ea,0x52e9,0x52ea,0x52ca,0x52c9,0x5aca,0x52cb,0x52ea,0x5aea,0x5aea,0x5aea,0x5aea,0x52eb,0x530a,0x52ea,0x52ea,0x5aea,0x5aea,0x5aeb,0x52ea,0x5aea,0x5b0b,0x5b0a,0x632b,0x5b0b,0x5b0b,0x5b0c,0x52eb,0x530b,0x530a,0x5b0a,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632b,0x630b,0x632b,0x5b2b,0x630b,0x632b,0x5b0a,0x5b2b,0x5b0b,0x630b,0x5b2b,0x5b2b,0x632b,0x632b,0x632b,0x632b,0x5b4b,0x5b2b,0x5b4b,0x5b2b,0x632b,0x632b,0x5b2b,0x5b2c,0x5b2b,0x5b2b,0x634b,0x634a,0x5b2b,0x5b0b,0x5b2b,0x632b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x5b0b,0x630b,0x5b0a,0x5b0b,0x5b2b,0x632b,0x5b4a,0x5b2a,0x5b0b,0x632a,0x5b0a,0x530a,0x530b,0x52eb,0x530b,0x52ea,0x5aea,0x5b0a,0x5b0b,0x52ea,0x5aea,0x5aca,0x52ea,0x52eb,0x52cb,0x5aeb,0x5aeb,0x52cb,0x5aca,0x52cb,0x52eb,0x52ea,0x52ea,0x5aea,0x52ca,0x52ca,0x5aea,0x5aca,0x52ca,0x5aaa,0x52ca,0x52c9,0x52ca,0x52ca,0x52c9,0x52a8,0x52a9,0x5aa9,0x52e9,0x52c9,0x52c9,0x52aa,0x52aa,0x5aaa,0x5aea,0x5aaa,0x4ac9,0x52a9,0x52a8,0x52c9,0x52a9,0x52a9,0x52c9,0x52a9,0x5ac9,0x4aa9,0x52aa,0x5aaa,0x52c9,0x52a9,0x4aa9,0x52a9,0x4ac9,0x52a8,0x52a9,0x5aa9,0x52a9,0x52a9,0x52a9,0x52a9,0x4ac9,0x42a8,0x4aa9,0x52a9,0x52a9,0x4aa9,0x52a9,0x4aa9,0x4aa9,0x4a89,0x4a89,0x5289,0x5289,0x5289,0x4a88,0x4a89,0x4a88,0x5289,0x5288,0x4a89,0x4a88,0x4a88,0x4a68,0x4a68,0x4288,0x4288,0x4a68,0x5287,0x5288,0x4a68,0x4a88,0x4aa8,0x4a88,0x4a89,0x4a88,0x4a88,0x4a67,0x5288,0x4aa8,0x4288,0x4a88,0x4a88,0x4a68,0x4a68,0x4268,0x4a68,0x4268,0x4a68,0x4288,0x4a68,0x4a68,0x5247,0x4a67,0x4a68,0x4267,0x4a67,0x4a47,0x4247,0x4228,0x4a68,0x4a48,0x4a48,0x4227,0x4a48,0x4a47,0x4248,0x3a48,0x4247,0x4227,0x4227,0x4227,0x4227,0x3a47,0x3a47,0x3a47,0x4227,0x3a27,0x3a46,0x4a27,0x4247,0x4247,0x4247,0x4248,0x4a48,0x5248,0x5288,0x52a9,0x52aa,0x5aca,0x52eb,0x5aea,0x534a, +0xce57,0xdfbe,0x7d56,0x52eb,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2a,0x62e9,0x62ca,0x62e9,0x5b09,0x5aea,0x5aea,0x5aea,0x5aea,0x52ea,0x5aea,0x52ea,0x5b0a,0x5aea,0x5aca,0x5aca,0x52ea,0x5aca,0x5aea,0x5ac9,0x52ea,0x5ae9,0x5aea,0x5aea,0x530a,0x52ea,0x5b0a,0x52ea,0x5ae9,0x5aea,0x5aea,0x5b09,0x5aea,0x5aeb,0x5aeb,0x5aea,0x5b0a,0x630a,0x5b0a,0x5b0a,0x5b0a,0x5b0a,0x630a,0x632a,0x630b,0x630b,0x5b2b,0x5b2a,0x5b0a,0x632b,0x5b2b,0x5b2b,0x632a,0x5b2b,0x5b2b,0x632b,0x632b,0x632b,0x632a,0x634b,0x632b,0x632a,0x632b,0x5b2a,0x632b,0x632b,0x632b,0x632b,0x632b,0x632b,0x632c,0x634b,0x6b2a,0x632a,0x632b,0x632b,0x634b,0x6b2b,0x5b6c,0x636b,0x6b6b,0x634b,0x636b,0x6b4c,0x634b,0x634b,0x6b6b,0x6b6b,0x634c,0x6b4c,0x636c,0x636b,0x6b6c,0x6b6b,0x6b6b,0x636c,0x636b,0x636c,0x5b6c,0x636b,0x6b6c,0x736c,0x736b,0x736c,0x634c,0x6b6c,0x636c,0x636c,0x736c,0x738c,0x6b6c,0x6b6b,0x6b6b,0x636c,0x6b6c,0x6b6c,0x6b6c,0x636c,0x6b6c,0x6b6c,0x6b8c,0x6b8c,0x6b8c,0x738c,0x6b6c,0x636c,0x6b8c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b8c,0x638c,0x636c,0x6b6c,0x636b,0x5b6b,0x636c,0x636c,0x734c,0x6b6b,0x636c,0x634c,0x636b,0x6b6c,0x6b4b,0x634c,0x634c,0x634c,0x634b,0x6b4a,0x632b,0x632b,0x632b,0x632b,0x5b4b,0x5b4b,0x632b,0x632b,0x632b,0x5b6b,0x632b,0x632b,0x632b,0x630b,0x630c,0x632b,0x5b0b,0x632b,0x5b2b,0x5b2a,0x5b0a,0x632a,0x630b,0x630b,0x630a,0x5b0a,0x5b0a,0x630a,0x630b,0x630a,0x630a,0x5b0a,0x630b,0x62eb,0x630b,0x630b,0x5b0a,0x5aea,0x5aeb,0x5aea,0x5aea,0x5aea,0x5aea,0x5ae9,0x5aeb,0x5aea,0x5aca,0x5aca,0x52ea,0x5aea,0x5aea,0x5aca,0x5aca,0x5aca,0x5aca,0x62c9,0x5ac9,0x5ae9,0x5aca,0x5aea,0x5aca,0x52a9,0x5ac9,0x5aaa,0x5aca,0x5aa9,0x5aa9,0x5ac9,0x52c9,0x52c9,0x52ca,0x5ac9,0x5ac9,0x52a9,0x52a9,0x5aa9,0x52a9,0x52a9,0x5a89,0x5a89,0x5289,0x52a9,0x52a9,0x5a88,0x5aa8,0x5288,0x5289,0x52a9,0x4a89,0x5288,0x4aa8,0x4a88,0x5289,0x4a88,0x52a8,0x5288,0x5a88,0x5289,0x5289,0x5289,0x4a89,0x4a89,0x5289,0x5288,0x5288,0x5289,0x5288,0x4a88,0x4a88,0x5288,0x4a88,0x5288,0x4a88,0x4a88,0x4288,0x4a68,0x4a68,0x4a87,0x4a88,0x5268,0x5248,0x4a68,0x4a48,0x4268,0x4a68,0x4a67,0x4a47,0x4a68,0x4a67,0x4a68,0x4247,0x5247,0x4a47,0x4a47,0x4a27,0x4a27,0x4a67,0x4a47,0x4a47,0x4a47,0x4a27,0x4247,0x4247,0x3a27,0x3a27,0x4a27,0x4a27,0x4a27,0x4247,0x4247,0x4247,0x4247,0x4a48,0x5289,0x52a8,0x52c9,0x52a9,0x52ea,0x4b0a,0x8d13, +0xbe16,0xded9,0xd77e,0x8514,0x52ea,0x5b4b,0x5b6a,0x5b2a,0x5b0b,0x630b,0x530a,0x5ae9,0x52ea,0x5b0a,0x5b09,0x5ae9,0x5b0a,0x52ea,0x52ea,0x5aea,0x5ae9,0x62ea,0x5aeb,0x62ea,0x5aea,0x62ea,0x62ea,0x62ea,0x5aea,0x5aea,0x52ea,0x52ea,0x5aea,0x5aea,0x5ac9,0x5b0a,0x5aea,0x5aea,0x5b0a,0x62ea,0x5b0a,0x5b0a,0x5aea,0x5b0a,0x5b0a,0x5b0a,0x630a,0x632a,0x5b0b,0x630b,0x632b,0x630a,0x632a,0x630b,0x630b,0x634b,0x5b4a,0x632a,0x632b,0x632b,0x5b2b,0x5b4b,0x632b,0x634b,0x5b2b,0x634b,0x634b,0x634b,0x634b,0x5b4b,0x634b,0x632b,0x6b4b,0x6b4b,0x634c,0x634b,0x634b,0x634b,0x5b4b,0x634b,0x6b4b,0x6b4b,0x6b2b,0x634b,0x634b,0x6b4b,0x734b,0x6b4b,0x6b6b,0x6b6b,0x6b4c,0x6b6c,0x6b6c,0x6b4c,0x6b4c,0x6b4c,0x6b4c,0x6b6c,0x734c,0x6b6c,0x6b4c,0x6b4c,0x6b6c,0x638c,0x638c,0x6b8c,0x6b6c,0x6b6c,0x6b6c,0x736c,0x736c,0x6b8c,0x738c,0x6b6c,0x734c,0x736c,0x6b8c,0x736c,0x6b6c,0x736c,0x738d,0x6b6c,0x6b6c,0x738c,0x73ac,0x73ac,0x738c,0x738c,0x6b6c,0x73ac,0x6bac,0x6bac,0x6bac,0x738c,0x6b6c,0x736d,0x6b6c,0x6b6c,0x738c,0x736d,0x736c,0x6b8c,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x636c,0x636b,0x6b4b,0x6b6c,0x6b6c,0x634b,0x636b,0x634c,0x6b4c,0x634c,0x5b6c,0x634c,0x6b4c,0x634b,0x6b2c,0x6b4c,0x732b,0x6b4b,0x6b4b,0x6b4b,0x634b,0x634b,0x634b,0x632c,0x5b4b,0x634b,0x634b,0x6b2b,0x632b,0x632b,0x632b,0x632b,0x632b,0x632b,0x630b,0x632b,0x632b,0x5b2b,0x5b0b,0x632b,0x630a,0x5b0a,0x630a,0x630a,0x5b0b,0x5b0b,0x630b,0x6b0a,0x630b,0x5b0b,0x5aea,0x5b0a,0x5b0a,0x5b2b,0x5b0a,0x5b0a,0x630a,0x62ea,0x630a,0x5b0a,0x5aea,0x62ea,0x5aea,0x62ea,0x5aea,0x5aca,0x62ca,0x5aca,0x52e9,0x5ae9,0x5ae9,0x5ae9,0x5aea,0x5ae9,0x5aca,0x52ca,0x5aca,0x5aca,0x62ca,0x5aea,0x62a9,0x5aaa,0x5aaa,0x52aa,0x52a9,0x52ea,0x5ae9,0x5ac9,0x52ca,0x52ca,0x5aaa,0x5aaa,0x52a9,0x5aa9,0x52a9,0x5aa9,0x5aa9,0x5aa9,0x52a9,0x5289,0x5aa9,0x52a9,0x52c9,0x52a8,0x52a8,0x52a9,0x5269,0x5a89,0x52a8,0x52a9,0x5a89,0x5a69,0x5289,0x5288,0x5a88,0x5289,0x5aa9,0x5a88,0x52a8,0x52a9,0x52a8,0x52a8,0x4aa8,0x4a89,0x5289,0x5269,0x5289,0x5288,0x5288,0x5268,0x4a68,0x4a88,0x4a88,0x5288,0x4a88,0x4a68,0x5268,0x4268,0x4a69,0x4247,0x4a68,0x4a68,0x4267,0x4a68,0x4a67,0x5268,0x4247,0x4a47,0x4a48,0x4a27,0x4248,0x4227,0x4a47,0x4a47,0x4a47,0x4a27,0x4a47,0x4247,0x4a27,0x4a48,0x4a27,0x4a27,0x4227,0x4228,0x4a27,0x4a47,0x4a47,0x4a48,0x5288,0x52a8,0x4268,0x636c,0x84b1,0x94b3, +0xadb5,0xc617,0xceb9,0xcf3c,0x9df7,0x63ee,0x530a,0x52e9,0x52c9,0x4aa9,0x52c9,0x52ca,0x5aca,0x5aca,0x52c9,0x5aea,0x5b0a,0x5aea,0x62ea,0x62ea,0x5aea,0x5aea,0x5ae9,0x630a,0x5b0a,0x5aea,0x5aea,0x5b0a,0x5b0a,0x5aea,0x5aca,0x5aea,0x52ca,0x5aea,0x62ea,0x5aea,0x5aea,0x5b0a,0x5b0b,0x630b,0x630a,0x6b0b,0x630a,0x5b0a,0x5b2a,0x630a,0x630a,0x630a,0x632b,0x632b,0x632b,0x5b0b,0x5b2b,0x5b4a,0x5b2a,0x5b2a,0x632b,0x632b,0x632a,0x632b,0x634b,0x5b4b,0x634b,0x636b,0x636b,0x6b4c,0x634b,0x632c,0x634c,0x5b6c,0x634c,0x632c,0x634b,0x634b,0x634c,0x6b4b,0x6b4b,0x6b4c,0x636c,0x6b6c,0x6b4b,0x738c,0x6b4b,0x6b6c,0x6b6c,0x634c,0x6b4c,0x6b4c,0x6b4c,0x6b6c,0x6b8c,0x6b6c,0x636b,0x6b6c,0x736c,0x736c,0x6b6c,0x6b6c,0x738c,0x738c,0x6b8c,0x6b6c,0x6b6c,0x6b8c,0x6b6c,0x6b6d,0x738c,0x6b8c,0x6b8c,0x6b8c,0x6b8d,0x738c,0x738c,0x6b8c,0x6b8c,0x738c,0x736c,0x738d,0x73ad,0x738c,0x6b8c,0x6b8c,0x6b8c,0x736c,0x736d,0x738c,0x738c,0x6b6c,0x6b8c,0x738c,0x738d,0x738d,0x738c,0x6b8c,0x6b8c,0x738c,0x738c,0x738c,0x6b6c,0x6b6c,0x6b8c,0x6b8c,0x738c,0x6b6c,0x6b8d,0x6b8c,0x6b8c,0x734c,0x6b6c,0x6b6c,0x736c,0x6b8c,0x6b8c,0x6b6c,0x6b6c,0x6b4c,0x6b4c,0x6b4c,0x6b4b,0x734c,0x6b4c,0x6b4c,0x6b4b,0x634b,0x6b4b,0x6b6b,0x6b4b,0x634b,0x5b2b,0x632b,0x632b,0x6b4c,0x632b,0x632b,0x634b,0x632b,0x632b,0x632b,0x6b2b,0x6b2b,0x632a,0x5b2b,0x632b,0x5b0a,0x632a,0x630a,0x630a,0x5b0b,0x5aea,0x630a,0x630b,0x630a,0x5aea,0x62ea,0x62ea,0x630a,0x5b0a,0x5aea,0x5aea,0x5aea,0x62eb,0x62ca,0x5aaa,0x5aea,0x52c9,0x5ae9,0x5ac9,0x62e9,0x62ca,0x5aa9,0x5ac9,0x5aca,0x5aca,0x52a9,0x5aca,0x5ac9,0x5ae9,0x52a9,0x52a9,0x52a9,0x5a89,0x52a9,0x4a69,0x5289,0x5aa9,0x5289,0x5a89,0x5269,0x5269,0x5289,0x4a67,0x52a8,0x5288,0x5288,0x4a68,0x4a68,0x4a68,0x4a68,0x4a88,0x4a68,0x4a88,0x5247,0x5248,0x4a48,0x4a68,0x4a68,0x4a48,0x4a28,0x4a48,0x4247,0x4247,0x4a47,0x4a48,0x5248,0x4a47,0x4a48,0x4a48,0x4248,0x4248,0x4228,0x4227,0x4227,0x4248,0x4227,0x4227,0x4247,0x4247,0x4227,0x4227,0x4227,0x4a27,0x4247,0x4247,0x3a27,0x4227,0x4227,0x3a27,0x4a27,0x4207,0x4207,0x4227,0x4207,0x4207,0x4207,0x4227,0x3a26,0x4207,0x41e7,0x4207,0x3a07,0x3a07,0x4207,0x4227,0x3a26,0x3207,0x3a27,0x3a27,0x39e7,0x4207,0x41e7,0x4228,0x3a07,0x3a06,0x4a27,0x4227,0x4227,0x4227,0x4207,0x3a07,0x3a08,0x39e7,0x4227,0x4227,0x4228,0x4a48,0x52ea,0x5b8d,0x7c50,0x7c0f,0x73ae, +0xa574,0xb5b5,0xbdf6,0xce57,0xc6fa,0xae79,0x8533,0x640f,0x5b6c,0x534c,0x530b,0x532a,0x4aea,0x4aea,0x4aea,0x4aea,0x52ca,0x4aca,0x52ea,0x530b,0x530b,0x52ea,0x52ea,0x530a,0x52ca,0x4aea,0x4aea,0x4b0a,0x52ea,0x52ea,0x52ea,0x52ea,0x52eb,0x4aea,0x4ae9,0x4aca,0x530b,0x52eb,0x52eb,0x52ea,0x52ea,0x52ea,0x5aea,0x530a,0x530a,0x5b0a,0x5b0b,0x5b0b,0x530a,0x530a,0x530b,0x530b,0x530b,0x5b2b,0x532c,0x4b0b,0x532b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x530b,0x530b,0x52eb,0x530b,0x532b,0x5b0b,0x5b2b,0x530b,0x530a,0x5aeb,0x5b0b,0x532b,0x530c,0x5b2b,0x5b0b,0x5b0b,0x530b,0x4b2b,0x532b,0x5b2b,0x5b2b,0x532c,0x534d,0x5b4c,0x5b2c,0x532c,0x534c,0x5b2c,0x5b2b,0x5b4c,0x5b2b,0x5b2c,0x532c,0x5b2b,0x5b4b,0x534b,0x5b4b,0x5b4b,0x534b,0x5b6c,0x534c,0x532b,0x5b4c,0x5b4c,0x5b2c,0x5b4c,0x5b4c,0x5b6c,0x5b6c,0x5b6c,0x5b6c,0x636c,0x634c,0x5b4c,0x5b6c,0x636d,0x634c,0x5b6c,0x5b6d,0x636d,0x5b8d,0x5b6c,0x5b6c,0x636d,0x638d,0x63ad,0x638d,0x638d,0x638d,0x636d,0x636d,0x5b6d,0x5b6d,0x638e,0x638e,0x638d,0x6b6d,0x638d,0x6b8d,0x638d,0x636d,0x636d,0x5b8c,0x638d,0x5b8d,0x5b6d,0x5b4d,0x638d,0x5b8d,0x5b8d,0x636d,0x636d,0x5b8d,0x5b8d,0x5b8d,0x638d,0x636c,0x636c,0x636c,0x5b8c,0x636c,0x634c,0x5b4c,0x5b6c,0x5b4c,0x5b6c,0x5b8c,0x5b6c,0x636c,0x5b2c,0x5b6c,0x5b6d,0x5b4c,0x636c,0x636d,0x5b4c,0x534d,0x5b4c,0x5b4b,0x5b6c,0x5b4b,0x5b4b,0x5b4c,0x536c,0x536c,0x5b6c,0x638d,0x636d,0x5b2c,0x5b4c,0x5b6c,0x636c,0x636b,0x634c,0x634c,0x5b4c,0x5b6c,0x5b4c,0x5b4c,0x5b4c,0x5b6c,0x636c,0x63ad,0x5b4c,0x636c,0x638d,0x5b6d,0x5b8d,0x5b8d,0x5b6d,0x536c,0x5b8d,0x5b6d,0x536c,0x5b8d,0x638d,0x5bad,0x63ae,0x5bad,0x5b8d,0x5b8d,0x6bae,0x5bad,0x638d,0x6bce,0x6bce,0x5b8d,0x638d,0x6b8d,0x638d,0x63ad,0x5bad,0x6bee,0x6bce,0x63ce,0x6bce,0x63cd,0x6bce,0x6bee,0x6c0e,0x73ef,0x6bee,0x6c0e,0x6bee,0x73ee,0x740f,0x6c0e,0x6c2e,0x6c0f,0x73ef,0x740f,0x742f,0x740f,0x740f,0x7410,0x742f,0x7470,0x6c2f,0x7c4f,0x7450,0x7450,0x7470,0x7c90,0x7c50,0x7c70,0x8470,0x7c70,0x7c70,0x7c50,0x7c70,0x7c71,0x7c91,0x7c90,0x7450,0x6c70,0x7c2f,0x7c4f,0x7c90,0x7c70,0x7c70,0x7450,0x7c70,0x7c71,0x7470,0x742f,0x7c50,0x7c30,0x7430,0x6c50,0x7450,0x7c2f,0x7c2f,0x7450,0x73ef,0x740f,0x744f,0x744f,0x740f,0x6bef,0x6c0f,0x6bee,0x63ce,0x6bee,0x6bee,0x6bee,0x73ce,0x6bae,0x6bcf,0x6bee,0x73ef,0x73ef,0x7bef,0x7c0f,0x7bef,0x6bce,0x6b8d,0x6b4c,0x636d}; diff --git a/MCUME_teensy/teensyo2em/table.c b/MCUME_teensy/teensyo2em/table.c new file mode 100644 index 0000000..d7569db --- /dev/null +++ b/MCUME_teensy/teensyo2em/table.c @@ -0,0 +1,341 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * 8048 Mnemonics + */ + + +#include "cpu.h" +#include "table.h" + + +struct lookup_tag lookup[] = { + + /* 00 */ {"NOP",1,0}, + /* 01 */ {"ILL",1,0}, + /* 02 */ {"OUTL BUS,A",1,0}, + /* 03 */ {"ADD A,",2,1}, + + /* 04 */ {"JMP",2,2}, + /* 05 */ {"EN I",1,0}, + /* 06 */ {"ILL",1,0}, + /* 07 */ {"DEC A",1,0}, + + /* 08 */ {"INS A,BUS",1,0}, + /* 09 */ {"IN A,P1",1,0}, + /* 0A */ {"IN A,P2",1,0}, + /* 0B */ {"ILL",1,0}, + + /* 0C */ {"MOVD A,P4",1,0}, + /* 0D */ {"MOVD A,P5",1,0}, + /* 0E */ {"MOVD A,P6",1,0}, + /* 0F */ {"MOVD A,P7",1,0}, + + /* 10 */ {"INC @R0",1,0}, + /* 11 */ {"INC @R1",1,0}, + /* 12 */ {"JB0",2,3}, + /* 13 */ {"ADDC A,",2,1}, + + /* 14 */ {"CALL",2,2}, + /* 15 */ {"DIS I",1,0}, + /* 16 */ {"JTF",2,3}, + /* 17 */ {"INC A",1,0}, + + /* 18 */ {"INC R0",1,0}, + /* 19 */ {"INC R1",1,0}, + /* 1A */ {"INC R2",1,0}, + /* 1B */ {"INC R3",1,0}, + + /* 1C */ {"INC R4",1,0}, + /* 1D */ {"INC R5",1,0}, + /* 1E */ {"INC R6",1,0}, + /* 1F */ {"INC R7",1,0}, + + /* 20 */ {"XCH A,@R0",1,0}, + /* 21 */ {"XCH A,@R1",1,0}, + /* 22 */ {"ILL",1,0}, + /* 23 */ {"MOV A,",2,1}, + + /* 24 */ {"JMP",2,2}, + /* 25 */ {"EN TCNTI",1,0}, + /* 26 */ {"JNT0",2,3}, + /* 27 */ {"CLR A",1,0}, + + /* 28 */ {"XCH A,R0",1,0}, + /* 29 */ {"XCH A,R1",1,0}, + /* 2A */ {"XCH A,R2",1,0}, + /* 2B */ {"XCH A,R3",1,0}, + + /* 2C */ {"XCH A,R4",1,0}, + /* 2D */ {"XCH A,R5",1,0}, + /* 2E */ {"XCH A,R6",1,0}, + /* 2F */ {"XCH A,R7",1,0}, + + /* 30 */ {"XCHD A,@R0",1,0}, + /* 31 */ {"XCHD A,@R1",1,0}, + /* 32 */ {"JB1",2,3}, + /* 33 */ {"ILL",1,0}, + + /* 34 */ {"CALL",2,2}, + /* 35 */ {"DIS TCNTI",1,0}, + /* 36 */ {"JT0",2,3}, + /* 37 */ {"CPL A",1,0}, + + /* 38 */ {"ILL",1,0}, + /* 39 */ {"OUTL P1,A",1,0}, + /* 3A */ {"OUTL P2,A",1,0}, + /* 3B */ {"ILL",1,0}, + + /* 3C */ {"MOVD P4,A",1,0}, + /* 3D */ {"MOVD P5,A",1,0}, + /* 3E */ {"MOVD P6,A",1,0}, + /* 3F */ {"MOVD P7,A",1,0}, + + /* 40 */ {"ORL A,@R0",1,0}, + /* 41 */ {"ORL A,@R1",1,0}, + /* 42 */ {"MOV A,T",1,0}, + /* 43 */ {"ORL A,",2,1}, + + /* 44 */ {"JMP",2,2}, + /* 45 */ {"STRT CNT",1,0}, + /* 46 */ {"JNT1",2,3}, + /* 47 */ {"SWAP",1,0}, + + /* 48 */ {"ORL A,R0",1,0}, + /* 49 */ {"ORL A,R1",1,0}, + /* 4A */ {"ORL A,R2",1,0}, + /* 4B */ {"ORL A,R3",1,0}, + + /* 4C */ {"ORL A,R4",1,0}, + /* 4D */ {"ORL A,R5",1,0}, + /* 4E */ {"ORL A,R6",1,0}, + /* 4F */ {"ORL A,R7",1,0}, + + /* 50 */ {"ANL A,@R0",1,0}, + /* 51 */ {"ANL A,@R1",1,0}, + /* 52 */ {"JB2",2,3}, + /* 53 */ {"ANL A,",2,1}, + + /* 54 */ {"CALL",2,2}, + /* 55 */ {"STRT T",1,0}, + /* 56 */ {"JT1",2,3}, + /* 57 */ {"ILL",1,0}, + + /* 58 */ {"ANL A,R0",1,0}, + /* 59 */ {"ANL A,R1",1,0}, + /* 5A */ {"ANL A,R2",1,0}, + /* 5B */ {"ANL A,R3",1,0}, + + /* 5C */ {"ANL A,R4",1,0}, + /* 5D */ {"ANL A,R5",1,0}, + /* 5E */ {"ANL A,R6",1,0}, + /* 5F */ {"ANL A,R7",1,0}, + + /* 60 */ {"ADD A,@R0",1,0}, + /* 61 */ {"ADD A,@R1",1,0}, + /* 62 */ {"MOV T,A",1,0}, + /* 63 */ {"ILL",1,0}, + + /* 64 */ {"JMP",2,2}, + /* 65 */ {"STOP TCNT",1,0}, + /* 66 */ {"ILL",1,0}, + /* 67 */ {"RRC A",1,0}, + + /* 68 */ {"ADD A,R0",1,0}, + /* 69 */ {"ADD A,R1",1,0}, + /* 6A */ {"ADD A,R2",1,0}, + /* 6B */ {"ADD A,R3",1,0}, + + /* 6C */ {"ADD A,R4",1,0}, + /* 6D */ {"ADD A,R5",1,0}, + /* 6E */ {"ADD A,R6",1,0}, + /* 6F */ {"ADD A,R7",1,0}, + + /* 70 */ {"ADDC A,@R0",1,0}, + /* 71 */ {"ADDC A,@R1",1,0}, + /* 72 */ {"JB3",2,3}, + /* 73 */ {"ILL",1,0}, + + /* 74 */ {"CALL",2,2}, + /* 75 */ {"ENT0 CLK",1,0}, + /* 76 */ {"JF1",2,3}, + /* 77 */ {"RR A",1,0}, + + /* 78 */ {"ADDC A,R0",1,0}, + /* 79 */ {"ADDC A,R1",1,0}, + /* 7A */ {"ADDC A,R2",1,0}, + /* 7B */ {"ADDC A,R3",1,0}, + + /* 7C */ {"ADDC A,R4",1,0}, + /* 7D */ {"ADDC A,R5",1,0}, + /* 7E */ {"ADDC A,R6",1,0}, + /* 7F */ {"ADDC A,R7",1,0}, + + /* 80 */ {"MOVX A,@R0",1,0}, + /* 81 */ {"MOVX A,@R1",1,0}, + /* 82 */ {"ILL",1,0}, + /* 83 */ {"RET",1,0}, + + /* 84 */ {"JMP",2,2}, + /* 85 */ {"CLR F0",1,0}, + /* 86 */ {"JNI",2,3}, + /* 87 */ {"ILL",1,0}, + + /* 88 */ {"ORL BUS,",2,1}, + /* 89 */ {"ORL P1,",2,1}, + /* 8A */ {"ORL P2,",2,1}, + /* 8B */ {"ILL",1,0}, + + /* 8C */ {"ORLD P4,A",1,0}, + /* 8D */ {"ORLD P5,A",1,0}, + /* 8E */ {"ORLD P6,A",1,0}, + /* 8F */ {"ORLD P7,A",1,0}, + + /* 90 */ {"MOVX @R0,A",1,0}, + /* 91 */ {"MOVX @R1,A",1,0}, + /* 92 */ {"JB4",2,3}, + /* 93 */ {"RETR",1,0}, + + /* 94 */ {"CALL",2,2}, + /* 95 */ {"CPL F0",1,0}, + /* 96 */ {"JNZ",2,3}, + /* 97 */ {"CLR C",1,0}, + + /* 98 */ {"ANL BUS,",2,1}, + /* 99 */ {"ANL P1,",2,1}, + /* 9A */ {"ANL P2,",2,1}, + /* 9B */ {"ILL",1,0}, + + /* 9C */ {"ANLD P4,A",1,0}, + /* 9D */ {"ANLD P5,A",1,0}, + /* 9E */ {"ANLD P6,A",1,0}, + /* 9F */ {"ANLD P7,A",1,0}, + + /* A0 */ {"MOV @R0,A",1,0}, + /* A1 */ {"MOV @R1,A",1,0}, + /* A2 */ {"ILL",1,0}, + /* A3 */ {"MOVP A,@A",1,0}, + + /* A4 */ {"JMP",2,2}, + /* A5 */ {"CLR F1",1,0}, + /* A6 */ {"ILL",1,0}, + /* A7 */ {"CPL C",1,0}, + + /* A8 */ {"MOV R0,A",1,0}, + /* A9 */ {"MOV R1,A",1,0}, + /* AA */ {"MOV R2,A",1,0}, + /* AB */ {"MOV R3,A",1,0}, + /* AC */ {"MOV R4,A",1,0}, + /* AD */ {"MOV R5,A",1,0}, + /* AE */ {"MOV R6,A",1,0}, + /* AF */ {"MOV R7,A",1,0}, + + /* B0 */ {"MOV @R0,",2,1}, + /* B1 */ {"MOV @R1,",2,1}, + /* B2 */ {"JB5",2,3}, + /* B3 */ {"JMPP @A",1,0}, + + /* B4 */ {"CALL",2,2}, + /* B5 */ {"CPL F1",1,0}, + /* B6 */ {"JF0",2,3}, + /* B7 */ {"ILL",1,0}, + + /* B8 */ {"MOV R0,",2,1}, + /* B9 */ {"MOV R1,",2,1}, + /* BA */ {"MOV R2,",2,1}, + /* BB */ {"MOV R3,",2,1}, + + /* BC */ {"MOV R4,",2,1}, + /* BD */ {"MOV R5,",2,1}, + /* BE */ {"MOV R6,",2,1}, + /* BF */ {"MOV R7,",2,1}, + + /* C0 */ {"ILL",1,0}, + /* C1 */ {"ILL",1,0}, + /* C2 */ {"ILL",1,0}, + /* C3 */ {"ILL",1,0}, + + /* C4 */ {"JMP",2,2}, + /* C5 */ {"SEL RB0",1,0}, + /* C6 */ {"JZ",2,3}, + /* C7 */ {"MOV A,PSW",1,0}, + + /* C8 */ {"DEC R0",1,0}, + /* C9 */ {"DEC R1",1,0}, + /* CA */ {"DEC R2",1,0}, + /* CB */ {"DEC R3",1,0}, + + /* CC */ {"DEC R4",1,0}, + /* CD */ {"DEC R5",1,0}, + /* CE */ {"DEC R6",1,0}, + /* CF */ {"DEC R7",1,0}, + + /* D0 */ {"XRL A,@R0",1,0}, + /* D1 */ {"XRL A,@R1",1,0}, + /* D2 */ {"JB6",2,3}, + /* D3 */ {"XRL A,",2,1}, + + /* D4 */ {"CALL",2,2}, + /* D5 */ {"SEL RB1",1,0}, + /* D6 */ {"ILL",1,0}, + /* D7 */ {"MOV PSW,A",1,0}, + + /* D8 */ {"XRL A,R0",1,0}, + /* D9 */ {"XRL A,R1",1,0}, + /* DA */ {"XRL A,R2",1,0}, + /* DB */ {"XRL A,R3",1,0}, + /* DC */ {"XRL A,R4",1,0}, + /* DD */ {"XRL A,R5",1,0}, + /* DE */ {"XRL A,R6",1,0}, + /* DF */ {"XRL A,R7",1,0}, + + /* E0 */ {"ILL",1,0}, + /* E1 */ {"ILL",1,0}, + /* E2 */ {"ILL",1,0}, + /* E3 */ {"MOVP3 A,@A",1,0}, + + /* E4 */ {"JMP",2,2}, + /* E5 */ {"SEL MB0",1,0}, + /* E6 */ {"JNC",2,3}, + /* E7 */ {"RL A",1,0}, + + /* E8 */ {"DJNZ R0,",2,3}, + /* E9 */ {"DJNZ R1,",2,3}, + /* EA */ {"DJNZ R2,",2,3}, + /* EB */ {"DJNZ R3,",2,3}, + /* EC */ {"DJNZ R4,",2,3}, + /* ED */ {"DJNZ R5,",2,3}, + /* EE */ {"DJNZ R6,",2,3}, + /* EF */ {"DJNZ R7,",2,3}, + + /* F0 */ {"MOV A,@R0",1,0}, + /* F1 */ {"MOV A,@R1",1,0}, + /* F2 */ {"JB7",2,3}, + /* F3 */ {"ILL",1,0}, + + /* F4 */ {"CALL",2,2}, + /* F5 */ {"SEL MB1",1,0}, + /* F6 */ {"JC",2,3}, + /* F7 */ {"RLC A",1,0}, + + /* F8 */ {"MOV A,R0",1,0}, + /* F9 */ {"MOV A,R1",1,0}, + /* FA */ {"MOV A,R2",1,0}, + /* FB */ {"MOV A,R3",1,0}, + /* FC */ {"MOV A,R4",1,0}, + /* FD */ {"MOV A,R5",1,0}, + /* FE */ {"MOV A,R6",1,0}, + /* FF */ {"MOV A,R7",1,0} + +}; + + diff --git a/MCUME_teensy/teensyo2em/table.h b/MCUME_teensy/teensyo2em/table.h new file mode 100644 index 0000000..2c80c59 --- /dev/null +++ b/MCUME_teensy/teensyo2em/table.h @@ -0,0 +1,10 @@ +#ifndef __TABLE_H +#define __TABLE_H + +extern struct lookup_tag { + signed char *mnemonic; //JMH + unsigned char bytes; + unsigned char type; +} lookup[]; + +#endif diff --git a/MCUME_teensy/teensyo2em/teensyo2em.ino b/MCUME_teensy/teensyo2em/teensyo2em.ino new file mode 100644 index 0000000..8ef6c9e --- /dev/null +++ b/MCUME_teensy/teensyo2em/teensyo2em.ino @@ -0,0 +1,273 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "Oddemu.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensyo2em/tft_t_dma.cpp b/MCUME_teensy/teensyo2em/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensyo2em/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensyo2em/tft_t_dma_config.h b/MCUME_teensy/teensyo2em/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensyo2em/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensyo2em/types.h b/MCUME_teensy/teensyo2em/types.h new file mode 100644 index 0000000..885e605 --- /dev/null +++ b/MCUME_teensy/teensyo2em/types.h @@ -0,0 +1,9 @@ +#ifndef TYPES_H +#define TYPES_H + +typedef unsigned char Byte; +typedef unsigned short ADDRESS; +#define INLINE + +#endif /* TYPES_H */ + diff --git a/MCUME_teensy/teensyo2em/vdc.c b/MCUME_teensy/teensyo2em/vdc.c new file mode 100644 index 0000000..043e61e --- /dev/null +++ b/MCUME_teensy/teensyo2em/vdc.c @@ -0,0 +1,468 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * O2 Video Display Controller emulation + */ + + +#include +#include +#include +#include "types.h" +#include "vmachine.h" +#include "config.h" +#include "cset.h" +#include "cpu.h" +#include "vpp.h" +#include "vdc.h" + +#include "emuapi.h" + + +typedef struct +{ + unsigned char r; + unsigned char g; + unsigned char b; +} PALETTE_ENTRY; + + +#define COL_SP0 0x01 +#define COL_SP1 0x02 +#define COL_SP2 0x04 +#define COL_SP3 0x08 +#define COL_VGRID 0x10 +#define COL_HGRID 0x20 +#define COL_VPP 0x40 +#define COL_CHAR 0x80 + +#define X_START 8 +#define Y_START 24 + +static const long colortable[16]={ + 0x000000, + 0x0e3dd4, + 0x00981b, + 0x00bbd9, + 0xc70008, + 0xcc16b3, + 0x9d8710, + 0xe1dee1, + 0x5f6e6b, + 0x6aa1ff, + 0x3df07a, + 0x31ffff, + 0xff4255, + 0xff98ff, + 0xd9ad5d, + 0xffffff +}; + + + + +/* The pointer to the graphics buffer And palette */ + +static PALETTE_ENTRY colors[256]; +static Byte * vscreen=0; //[BMPW*BMPH]; + +/* Collision buffer */ +static Byte * colbuf=0; //[BMPW*BMPH]; + +Byte coltab[256]; + +long clip_low; +long clip_high; + + +static void create_cmap(void); +static void draw_char(Byte ypos,Byte xpos,Byte chr,Byte col); +static void draw_grid(void); +INLINE extern void mputvid(unsigned int ad, unsigned int len, Byte d, Byte c); + + +unsigned char * getGBuf(void) +{ + return(vscreen); +} + +void draw_region(void){ + int i; + + //emu_printi(last_line); + + if (regionoff == 0xffff) + i = master_clk/(LINECNT-1)-5; + else + i = master_clk/22+regionoff; + //i = snapline(i, VDCwrite[0xA0], 0); + + if (i<0) i=0; + +#ifdef HALFHEIGHT + i = i>>1; +#else +#endif + + clip_low = last_line * (long)BMPW; + clip_high = i * (long)BMPW; + if (clip_high > BMPW*BMPH) clip_high = BMPW*BMPH; + if (clip_low < 0) clip_low=0; + if (clip_low < clip_high) draw_display(); + last_line=i; +} + + +#define fastmputvid1(ad,d,c) if ((ad > (unsigned long)clip_low) && (ad < (unsigned long)clip_high)) { vscreen[ad]=d; colbuf[ad] |= c; coltab[c] |= colbuf[ad];} +#define fastmputvid2(ad,d,c) if ((ad > (unsigned long)clip_low) && (ad < (unsigned long)clip_high)) { vscreen[ad]=d; colbuf[ad] |= c; coltab[c] |= colbuf[ad];vscreen[ad+1]=d; colbuf[ad+1] |= c; coltab[c] |= colbuf[ad+1];} +//#define fastmputvid1(ad,d,c) mputvid(ad,1,d,c); +//#define fastmputvid2(ad,d,c) mputvid(ad,2,d,c); + + +INLINE void mputvid(unsigned int ad, unsigned int len, Byte d, Byte c){ + if ((ad > (unsigned long)clip_low) && (ad < (unsigned long)clip_high)) { + unsigned int i; +// JMH + Byte d1; + d1 = d; + if ( ((len & 3)==0) && (sizeof(unsigned long) == 4) && ((ad & 3) == 0) ) + { + unsigned long dddd = (((unsigned long)d1) & 0xff) | ((((unsigned long)d1) & 0xff) << 8) | ((((unsigned long)d1) & 0xff) << 16) | ((((unsigned long)d1) & 0xff) << 24); + unsigned long cccc = (((unsigned long)c) & 0xff) | ((((unsigned long)c) & 0xff) << 8) | ((((unsigned long)c) & 0xff) << 16) | ((((unsigned long)c) & 0xff) << 24); + for (i=0; i>2; i++) { + *((unsigned long*)(vscreen+ad)) = dddd; + cccc |= *((unsigned long*)(colbuf+ad)); + *((unsigned long*)(colbuf+ad)) = cccc; + coltab[c] |= ((cccc | (cccc >> 8) | (cccc >> 16) | (cccc >> 24)) & 0xff); + ad += 4; + } + } else + { + for (i=0; i> 16; //18; + colors[i+32].g = colors[i].g = (colortable[i] & 0x00ff00) >> 8; //10; + colors[i+32].b = colors[i].b = (colortable[i] & 0x0000ff) >> 0; //2; + } + + for (i = 16; i < 32; i++) { + /* Half-bright colors for the 50% scanlines */ + colors[i+32].r = colors[i].r = colors[i-16].r/2; + colors[i+32].g = colors[i].g = colors[i-16].g/2; + colors[i+32].b = colors[i].b = colors[i-16].b/2; + } + + for (i = 64; i < 256; i++) colors[i].r = colors[i].g = colors[i].b = 0; + + for (i=0;i<256;i++) + { + emu_SetPaletteEntry(colors[i].r, colors[i].g, colors[i].b, i); + } + +} + +static void draw_char(Byte ypos,Byte xpos,Byte chr,Byte col){ + int j,c; + Byte cl,d1; + int y,b,n; + unsigned int pnt; + +#ifdef HALFHEIGHT + y = ypos>>1; +#else + y=(ypos & 0xFE); +#endif + pnt = y * BMPW + (xpos-8)+BORDERW; + + ypos = ypos >> 1; + n = 8 - (ypos % 8) - (chr % 8); + if (n < 3) n = n + 7; + +#ifdef HALFHEIGHT + if ((pnt+BMPW*n >= (unsigned long)clip_low) && (pnt <= (unsigned long)clip_high)) { +#else + if ((pnt+BMPW*2*n >= (unsigned long)clip_low) && (pnt <= (unsigned long)clip_high)) { +#endif + + c=(int)chr + ypos; + if (col & 0x01) c+=256; + if (c > 511) c=c-512; + + cl = ((col & 0x0E) >> 1); + cl = ((cl&2) | ((cl&1)<<2) | ((cl&4)>>2)) + 8; + +#ifdef HALFHEIGHT + if ((y>0) && (y<112) && (xpos<157)) { +#else + if ((y>0) && (y<232) && (xpos<157)) { +#endif + for (j=0; j> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); + color = ColorVector[j*24+25]; + fastmputvid2(pn1+BMPW, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#ifdef HALFHEIGHT +#else + color = ColorVector[j*24+26]; + fastmputvid2(pn1+BMPW*2, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#endif + } + } + } + + // horizontal + mask=0x01; + for(j=0; j<9; j++) { +#ifdef HALFHEIGHT + pnt = (((j*12)+12) * BMPW); +#else + pnt = (((j*24)+24) * BMPW); +#endif + for (i=0; i<9; i++) { + pn1 = pnt + (i * 16) + BORDERW; +#ifdef HALFHEIGHT + if ((pn1+BMPW*2 >= (unsigned long)clip_low) && (pn1 <= (unsigned long)clip_high)) { +#else + if ((pn1+BMPW*3 >= (unsigned long)clip_low) && (pn1 <= (unsigned long)clip_high)) { +#endif + d=VDCwrite[0xC0 + i]; + if (j == 8) { + d=VDCwrite[0xD0+i]; + mask=1; + } + if (d & mask) { + color = ColorVector[j*24+24]; + mputvid(pn1, 18, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); + color = ColorVector[j*24+25]; + mputvid(pn1+BMPW, 18, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#ifdef HALFHEIGHT +#else + color = ColorVector[j*24+26]; + mputvid(pn1+BMPW*2, 18, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_HGRID); +#endif + } + } + } + mask = mask << 1; + } + + // vertical + mask=0x01; + w=2; + if (VDCwrite[0xA0] & 0x80) w=16; + for(j=0; j<10; j++) { + pnt=(j*16); + mask=0x01; + d=VDCwrite[0xE0+j]; + for (x=0; x<8; x++) { +#ifdef HALFHEIGHT + pn1 = pnt + (((x*12)+12) * BMPW) + BORDERW; +#else + pn1 = pnt + (((x*24)+24) * BMPW) + BORDERW; +#endif + if (d & mask) { +#ifdef HALFHEIGHT + for(i=0; i<12; i++) { +#else + for(i=0; i<24; i++) { +#endif + if ((pn1 >= (unsigned long)clip_low) && (pn1 <= (unsigned long)clip_high)) { + color = ColorVector[x*24+24+i]; + mputvid(pn1, w, (color & 0x07) | ((color & 0x40) >> 3) | (color & 0x80 ? 0 : 8), COL_VGRID); + } + pn1+=BMPW; + } + } + mask = mask << 1; + } + } + +} + + +void finish_display(void){ + vpp_finish_bmp(vscreen, 9, 5, BMPW-9, BMPH-5, BMPW, BMPH); +} + + +void clear_collision(void){ + load_colplus(colbuf); + coltab[0x01]=coltab[0x02]=0; + coltab[0x04]=coltab[0x08]=0; + coltab[0x10]=coltab[0x20]=0; + coltab[0x40]=coltab[0x80]=0; +} + + +void draw_display(void){ + int i,j,x,sm,t; + Byte y,xt,yt,b,d1,cl,c; + unsigned int pnt,pnt2; + +#ifdef HALFHEIGHT + for (i=clip_low/BMPW; i> 3) | (ColorVector[i<<1] & 0x80 ? 0 : 8), BMPW); + } +#else + for (i=clip_low/BMPW; i> 3) | (ColorVector[i] & 0x80 ? 0 : 8), BMPW); + } +#endif + + if (VDCwrite[0xA0] & 0x08) draw_grid(); + + if (useforen && (!(VDCwrite[0xA0] & 0x20))) return; + + for(i=0x10; i<0x40; i+=4) draw_char(VDCwrite[i],VDCwrite[i+1],VDCwrite[i+2],VDCwrite[i+3]); + + pnt=0x40; + for(i=0; i<4; i++) { + x=y=248; + for (j=0; j<4; j++){ + xt = VDCwrite[pnt+j*4+1]; + yt = VDCwrite[pnt+j*4]; + if ((xt<240) && (yt<240)){ + x=xt; + y=yt; + break; + } + } + for(j=0; j<4; j++) { + draw_char(y,x,VDCwrite[pnt+2],VDCwrite[pnt+3]); + x+=16; + pnt+=4; + } + } + + c=8; + for (i=12; i>=0; i -=4) { + pnt2 = 0x80 + (i * 2); +#ifdef HALFHEIGHT + y = VDCwrite[i]>>1; +#else + y = VDCwrite[i]; +#endif + x = VDCwrite[i+1]-8; + t = VDCwrite[i+2]; + cl = ((t & 0x38) >> 3); + cl = ((cl&2) | ((cl&1)<<2) | ((cl&4)>>2)) + 8; +//#ifdef HALFHEIGHT +// if ((x<164) && (y>0) && (y<112)) { +//#else + if ((x<164) && (y>0) && (y<232)) { +//#endif + pnt = y * BMPW + x + BORDERW + sproff; + if ((pnt+BMPW*16 >= (unsigned long)clip_low) && (pnt <= (unsigned long)clip_high)) { + for (j=0; j<8; j++) { + sm = (((j%2==0) && (((t>>1) & 1) != (t & 1))) || ((j%2==1) && (t & 1))) ? 1 : 0; + d1 = VDCwrite[pnt2++]; + for (b=0; b<8; b++) { + if (d1 & 0x01) { +#ifdef HALFHEIGHT + if ((x+b+sm<160) && (y+j<129)) { +#else + if ((x+b+sm<160) && (y+j<249)) { +#endif + fastmputvid1(sm+pnt,cl,c); +#ifdef HALFHEIGHT +#else + fastmputvid1(sm+pnt+BMPW,cl,c); +#endif + } + } + pnt += 1; + d1 = d1 >> 1; + } +#ifdef HALFHEIGHT + pnt += BMPW-8; +#else + pnt += BMPW*2-8; +#endif + } + } + } + c = c >> 1; + } +} + + + + +void close_display(void) +{ +} + +void init_display(void) +{ + if (vscreen==0) vscreen = (Byte *)emu_Malloc(BMPW*BMPH); + if (colbuf == 0) colbuf = (Byte *)emu_Malloc(BMPW*BMPH); + + create_cmap(); + memset(colbuf,0,BMPW*BMPH); +} + diff --git a/MCUME_teensy/teensyo2em/vdc.h b/MCUME_teensy/teensyo2em/vdc.h new file mode 100644 index 0000000..9aae77a --- /dev/null +++ b/MCUME_teensy/teensyo2em/vdc.h @@ -0,0 +1,30 @@ +#ifndef __VDC_H +#define __VDC_H + +#define HALFHEIGHT 1 + +#define BORDERW 8 +#define BMPW (160+BORDERW) // 320 +#ifdef HALFHEIGHT +#define BMPH 120 +#else +#define BMPH 240 +#endif + + +extern Byte coltab[]; +extern long clip_low; +extern long clip_high; + +extern unsigned char * getGBuf(void); + +void init_display(void); +void draw_display(void); +void draw_region(void); +void finish_display(); +void close_display(void); +void clear_collision(void); + +#endif + + diff --git a/MCUME_teensy/teensyo2em/vmachine.c b/MCUME_teensy/teensyo2em/vmachine.c new file mode 100644 index 0000000..cc1242c --- /dev/null +++ b/MCUME_teensy/teensyo2em/vmachine.c @@ -0,0 +1,608 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * Main O2 machine emulation + */ + +#include +#include +#include +#include "audio.h" +#include "types.h" +#include "cpu.h" +#include "config.h" +#include "vdc.h" +//#include "vpp.h" +#include "vmachine.h" + +#include "emuapi.h" + +static Byte x_latch,y_latch; +static Byte line_count; +static int fps=FPS_NTSC; + +//static Byte snapedlines[MAXLINES+2*MAXSNAP][256][2]; //500+2*50 *256*2 600*512 + +int evblclk=EVBLCLK_NTSC; + +struct resource app_data; +int frame=0; +Byte dbstick1,dbstick2; + +int int_clk; /* counter for length of /INT pulses */ +int master_clk; /* Master clock */ +int h_clk; /* horizontal clock */ +unsigned long clk_counter; +int last_line; +int key2vcnt=0; +int mstate; +int ccolflag=0; + +int pendirq=0; +int enahirq=1; +int useforen=0; +long regionoff=0xffff; +int mxsnap=2; +int sproff=0; +int tweakedaudio=0; + +Byte rom1[5120]; +Byte rom2[5120]; +Byte rom3[5120]; +Byte rom4[5120]; + +Byte intRAM[64]; +Byte extRAM[256]; +Byte extROM[1024]; +Byte VDCwrite[256]; +Byte ColorVector[MAXLINES]; +Byte AudioVector[MAXLINES]; +Byte *rom, *orom; + +int key2[128]; + +#define KEY_0 0 +#define KEY_1 1 +#define KEY_2 2 +#define KEY_3 3 +#define KEY_4 4 +#define KEY_5 5 +#define KEY_6 6 +#define KEY_7 7 +#define KEY_8 8 +#define KEY_9 9 +#define KEY_A 10 +#define KEY_B 11 +#define KEY_C 12 +#define KEY_D 13 +#define KEY_E 14 +#define KEY_F 15 +#define KEY_G 16 +#define KEY_H 17 +#define KEY_I 18 +#define KEY_J 19 +#define KEY_K 20 +#define KEY_L 21 +#define KEY_M 22 +#define KEY_N 23 +#define KEY_O 24 +#define KEY_P 25 +#define KEY_Q 26 +#define KEY_R 27 +#define KEY_S 28 +#define KEY_T 29 +#define KEY_U 30 +#define KEY_V 31 +#define KEY_W 32 +#define KEY_X 33 +#define KEY_Y 34 +#define KEY_Z 35 +#define KEY_PLUS 35 +#define KEY_MINUS 36 +#define KEY_SLASH 38 +#define KEY_ASTERISK 39 + +#define KEY_SPACE 40 +#define KEY_EQUALS 41 +#define KEY_DEL 42 +#define KEY_ENTER 43 +#define KEY_STOP 44 +#define KEY_SLASH_PAD 45 +#define KEY_PLUS_PAD 46 + +static unsigned int key_map[6][8]= { + {KEY_0,KEY_1,KEY_2,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7}, + {KEY_8,KEY_9,0,0,KEY_SPACE,KEY_SLASH,KEY_L,KEY_P}, + {KEY_PLUS_PAD,KEY_W,KEY_E,KEY_R,KEY_T,KEY_U,KEY_I,KEY_O}, + {KEY_Q,KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K}, + {KEY_A,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_M,KEY_STOP}, + {KEY_MINUS,KEY_ASTERISK,KEY_SLASH_PAD,KEY_EQUALS,KEY_Y,KEY_N,KEY_DEL,KEY_ENTER} +}; + + +static void do_kluges(void); +static void setvideomode(int t); + +void run(void){ + cpu_exec(); +} + + +void handle_vbl(void){ + update_audio(); +// update_voice(); +// } + if (!ccolflag) { + clear_collision(); + ccolflag=1; + } + draw_region(); + ext_IRQ(); + mstate = 1; +} + + +void handle_evbl(void){ + static long last=0; + static int rest_cnt=0; + int i; + + i = (15*app_data.speed/100); + rest_cnt = (rest_cnt+1)%(i<5?5:i); + last_line=0; + master_clk -= evblclk; + frame++; + ccolflag=0; + if (!app_data.debug) { + finish_display(); + } + + for (i=0; i 10) { + key2vcnt=0; + for (i=0; i<128; i++) key2[i] = 0; + dbstick1 = dbstick2 = 0; + } + mstate=0; +} + + +void init_system(void){ + int i,j,k; + + last_line=0; + dbstick1=0x00; + dbstick2=0x00; + mstate=0; + master_clk=0; + h_clk=0; + line_count=0; + itimer=0; + clk_counter=0; + for(i=0; i<256; i++) { + VDCwrite[i]=0; + extRAM[i]=0; + } + for(i=0; i<64; i++) { + intRAM[i]=0; + } + for (i=0; i 16) || (master_clk > VBLCLK)) + return 1; + else + return 0; +} + + +void write_p1(Byte d){ + if ((d & 0x80) != (p1 & 0x80)) { + int i,l; + //l = snapline((int)((float)master_clk/22.0+0.5), VDCwrite[0xA3], 1); + for (i=l; i VBLCLK) d = d | 0x08; + if (h_clk < (LINECNT-7)) d = d | 0x01; + if (sound_IRQ) d = d | 0x04; + sound_IRQ=0; + return d; + case 0xA2: + si = VDCwrite[0xA2]; + m=0x01; + d=0; + for(i=0; i<8; i++) { + if (si & m) { + if (coltab[1] & m) d = d | (coltab[1] & (m ^ 0xFF)); + if (coltab[2] & m) d = d | (coltab[2] & (m ^ 0xFF)); + if (coltab[4] & m) d = d | (coltab[4] & (m ^ 0xFF)); + if (coltab[8] & m) d = d | (coltab[8] & (m ^ 0xFF)); + if (coltab[0x10] & m) d = d | (coltab[0x10] & (m ^ 0xFF)); + if (coltab[0x20] & m) d = d | (coltab[0x20] & (m ^ 0xFF)); + if (coltab[0x80] & m) d = d | (coltab[0x80] & (m ^ 0xFF)); + } + m = m << 1; + } + return d; + case 0xA5: + if (!(VDCwrite[0xA0] & 0x02)) { + return x_latch; + } + else { + x_latch = h_clk * 12; + return x_latch; + } + case 0xA4: + if (!(VDCwrite[0xA0] & 0x02)) { + return y_latch; + } + else { + y_latch = master_clk/22; + if (y_latch > 241) y_latch=0xFF; + return y_latch; + } + default: + return VDCwrite[adr]; + } + } else if (!(p1 & 0x10)) { + /* Handle ext RAM Read */ + return extRAM[adr & 0xFF]; + //} else if (!(p1 & 0x20)) { + // /* Read a Videopac+ register */ + // return vpp_read(adr); + } else if (app_data.exrom && (p1 & 0x02)) { + /* Handle read from exrom */ + return extROM[(p2 << 8) | (adr & 0xFF)]; + } + + return 0; +} + + +Byte in_bus(void){ + Byte si=0,d=0,mode=0,jn=0; + int key; + + + if ((p1 & 0x08) && (p1 & 0x10)) { + /* Handle joystick read */ + if (!(p1 & 0x04)) { + si = (p2 & 7); + } + d=0xFF; + /* Get current input */ + key = emu_ReadKeys(); + + app_data.stick[0]=0; + app_data.stick[1]=1; + /* + if ( emu_GetPad() & 0x80 ) + { + app_data.stick[0]=1; + app_data.stick[1]=0; + } + else + { + app_data.stick[0]=0; + app_data.stick[1]=1; + } + + + if (si == 1) { + mode = app_data.stick[0]; + jn = 0; + } else { + mode = app_data.stick[1]; + jn = 1; + } + */ + mode=1; + if (key & 0x8000) jn=1; + else jn=0; + + switch(mode) { + case 1: + if (key & MASK_JOY2_RIGHT) d &= 0xF7; + if (key & MASK_JOY2_LEFT) d &= 0xFD; + if (key & MASK_JOY2_UP) d &= 0xFE; + if (key & MASK_JOY2_DOWN) d &= 0xFB; + if (key & MASK_JOY2_BTN) d &= 0xEF; + break; + + case 2: + /* Get current input */ +// key = emu_GetPad(); +// if (key & JKEY_PLEFT) d &= 0xF7; +// if (key & JKEY_PRIGHT) d &= 0xFD; +// if (key & JKEY_PUP) d &= 0xFE; +// if (key & JKEY_PDOWN) d &= 0xFB; +// if (key & JKEY_PSPACE) d &= 0xEF; + break; + } + if (si == 1) { + if (dbstick1) d = dbstick1; + } else { + if (dbstick2) d = dbstick2; + } + } + return d; +} + + +void ext_write(Byte dat, ADDRESS adr){ + int i; + + if (!(p1 & 0x08)) { + /* Handle VDC Write */ + if (adr == 0xA0){ + if ((VDCwrite[0xA0] & 0x02) && !(dat & 0x02)) { + y_latch = master_clk/22; + x_latch = h_clk * 12; + if (y_latch > 241) y_latch=0xFF; + } + if ((master_clk <= VBLCLK) && (VDCwrite[0xA0] != dat)) { + if (!ccolflag) { + clear_collision(); + ccolflag=1; + } + draw_region(); + } + } else if (adr == 0xA2) { + clear_collision(); + ccolflag=1; + } else if (adr == 0xA3){ + int l; + //l = snapline((int)((float)master_clk/22.0+0.5), dat, 1); + for (i=l; i= 0xE8) && (adr <= 0xEF)) +// set_voice_bank(adr-0xE7); +// else if (((adr >= 0x80) && (adr <= 0xDF)) || ((adr >= 0xF0) && (adr <= 0xFF))) +// trigger_voice(adr); + } + } + //} else if (!(p1 & 0x20)) { + // /* Write to a Videopac+ register */ + // vpp_write(dat,adr); + } +} + + +static void do_kluges(void){ + if (app_data.crc == 0xA7344D1F) pendirq=1; /* Atlantis */ + if (app_data.crc == 0xFB83171E) pendirq=1; /* Blockout*/ + if (app_data.crc == 0x881CEAE4) pendirq=1; /* Wall Street */ + + if (app_data.crc == 0x9E42E766) useforen=1; /* Turtles */ + if (app_data.crc == 0x1C750349) useforen=1; /* Turtles (European version) */ + if (app_data.crc == 0x202F2749) useforen=1; /* Q*bert */ + + if (app_data.crc == 0xFB83171E) enahirq=0; /* Blockout*/ + + if (app_data.crc == 0xFB83171E) regionoff=1; /* Blockout*/ + if (app_data.crc == 0x202F2749) regionoff=1; /* Q*bert */ + if (app_data.crc == 0x5216771A) regionoff=1; /* Popeye */ + if (app_data.crc == 0x0C2E4811) regionoff=12; /* Out of this World! / Helicopter Rescue! */ + if (app_data.crc == 0x67069924) regionoff=11; /* Smithereens! */ + if (app_data.crc == 0x44D1A8A5) regionoff=11; /* Smithereens! (European version) */ + if (app_data.crc == 0xB936BD78) regionoff=12; /* Type & Tell */ + if (app_data.crc == 0xDC30AD3D) regionoff=10; /* Dynasty! */ + if (app_data.crc == 0x7810BAD5) regionoff=10; /* Dynasty! (European) */ + if (app_data.crc == 0xA7344D1F) regionoff=0; /* Atlantis */ + if (app_data.crc == 0xD0BC4EE6) regionoff=12; /* Frogger */ + if (app_data.crc == 0x825976A9) regionoff=0; /* Mousing Cat 8kb */ + if (app_data.crc == 0xF390BFEC) regionoff=0; /* Mousing Cat 4kb */ + if (app_data.crc == 0x3BFEF56B) regionoff=1; /* Four in 1 Row! */ + if (app_data.crc == 0x9BFC3E01) regionoff=10; /* Demon Attack */ + if (app_data.crc == 0x6CEBAB74) regionoff=12; /* P.T. Barnum's Acrobats! (European version) */ + if (app_data.crc == 0xE7B26A56) regionoff=12; /* P.T. Barnum's Acrobats! (European version - Extra keys) */ + + if (app_data.crc == 0xFB83171E) mxsnap=3; /* Blockout*/ + if (app_data.crc == 0xA57E1724) mxsnap=12; /* Catch the Ball / Noughts and Crosses */ + if (app_data.crc == 0xFD179F6D) mxsnap=3; /* Clay Pigeon! */ + if (app_data.crc == 0x9BFC3E01) mxsnap=0; /* Demon Attack */ + if (app_data.crc == 0x9C9DDDF9) mxsnap=3; /* Verkehr */ + if (app_data.crc == 0x95936B07) mxsnap=3; /* Super Cobra */ + if (app_data.crc == 0x881CEAE4) mxsnap=3; /* Wall Street */ + if (app_data.crc == 0x9E42E766) mxsnap=0; /* Turtles */ + if (app_data.crc == 0x1C750349) mxsnap=0; /* Turtles (European version) */ + if (app_data.crc == 0xD0BC4EE6) mxsnap=3; /* Frogger */ + if (app_data.crc == 0x3BFEF56B) mxsnap=6; /* Four in 1 Row! */ + + if (app_data.crc == 0xA7344D1F) setvideomode(1); /* Atlantis */ + if (app_data.crc == 0x39E31BF0) setvideomode(1); /* Jake */ + if (app_data.crc == 0x3351FEDA) setvideomode(1); /* Power Lords */ + if (app_data.crc == 0x40AE062D) setvideomode(1); /* Power Lords (alternate) */ + if (app_data.crc == 0xD158EEBA) setvideomode(1); /* Labirinth */ + if (app_data.crc == 0x26B0FF5B) setvideomode(1); /* Nightmare */ + if (app_data.crc == 0xDF36683F) setvideomode(1); /* Shark Hunter */ + if (app_data.crc == 0xAF307559) setvideomode(1); /* Super Bee 8Kb */ + if (app_data.crc == 0x9585D511) setvideomode(1); /* Super Bee 4Kb */ + if (app_data.crc == 0x58FA6766) setvideomode(1); /* War of the Nerves */ + if (app_data.crc == 0x58FA6766) setvideomode(1); /* War of the Nerves */ + if (app_data.crc == 0x39989464) setvideomode(1); /* Hockey! / Soccer! */ + if (app_data.crc == 0xB47F3E0B) setvideomode(1); /* Kill the Attacking Aliens Demo */ + if (app_data.crc == 0x3BFEF56B) setvideomode(1); /* Four in 1 Row! */ + if (app_data.crc == 0x68560DC7) setvideomode(1); /* Jopac Moto Crash */ + if (app_data.crc == 0x202F2749) setvideomode(0); /* Q*bert */ + if (app_data.crc == 0xFB83171E) setvideomode(0); /* Blockout*/ + if (app_data.crc == 0x9BFC3E01) setvideomode(0); /* Demon Attack */ + if (app_data.crc == 0x239DF97D) setvideomode(0); /* Pachinko! */ + if ((app_data.crc == 0xF390BFEC) || (app_data.crc == 0x825976A9)){ /* Mousing Cat */ + setvideomode(1); + evblclk=7642; + } + if (app_data.crc == 0xD0BC4EE6) { /* Frogger */ + setvideomode(1); + evblclk=7642; + } + if ((app_data.crc == 0x2DCB77F0) || (app_data.crc == 0xF6882734)) { /* Depth Charge / Marksman */ + setvideomode(1); + evblclk=9000; + } + if (app_data.crc == 0x881CEAE4) { /* Wall Street */ + setvideomode(1); + evblclk=6100; + } + + if (app_data.crc == 0xD0BC4EE6) tweakedaudio=1; /* Frogger */ + if (app_data.crc == 0x5216771A) tweakedaudio=1; /* Popeye */ + if (app_data.crc == 0xAFB23F89) tweakedaudio=1; /* Musician */ + + if (app_data.crc == 0xD3B09FEC) sproff=1; /* Volleyball! */ +} + +/* +int snapline(int pos, Byte reg, int t){ + int i; + for (i=0; i (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * Videopac+ G7400 emulation + */ + + +#include +#include +#include +#include "types.h" +#include "vmachine.h" +#include "vdc.h" +#include "vpp_cset.h" +#include "vpp.h" + +#include "emuapi.h" + +typedef struct +{ + int w; + int h; + unsigned char * line; + // unsigned char line[320][250]; +} BITMAP; + +static void clear(BITMAP * bmp) +{ + int i,j; + bmp->line = (unsigned char *)emu_Malloc(BMPW*(BMPH+10)); + + + for(i=0;ih;i++) + for(j=0;jw;j++) + //bmp->line[i][j] = 0; + *bmp->line++ = 0; +} + + +static void vpp_draw_char(int x, int y, Byte ch, Byte c0, Byte c1, Byte ext, Byte dw, Byte dh, Byte ul); +static void vpp_update_screen(void); + + +static Byte LumReg = 0xff, TraReg = 0xff; +static BITMAP svppbmp; +static BITMAP * vppbmp = &svppbmp; +//static Byte *colplus = NULL; +//static Byte colplus[BMPW*BMPH]; +static int vppon = 1; +static int vpp_cx = 0; +static int vpp_cy = 0; +static Byte vpp_data = 0; +static int inc_curs=1; +static int slice=0; +static int vpp_y0=0; +static Byte vpp_r=0; +static Byte dchars[2][960]; +static Byte vpp_mem[40][32][4]; +static int frame_cnt=0; +static int blink_st=0; +static int slicemode=0; +static int need_update=0; + + + + +Byte read_PB(Byte p){ + p &= 0x3; + switch (p) { + case 0: + return LumReg >> 4; + break; + case 1: + return LumReg & 0xf; + break; + case 2: + return TraReg >> 4; + break; + case 3: + return TraReg & 0xf; + break; + } + return 0; +} + + +void write_PB(Byte p, Byte val){ + p &= 0x3; + val &= 0xf; + + switch (p) { + case 0: + LumReg = (val<<4) | (LumReg & 0xf); + break; + case 1: + LumReg = (LumReg & 0xf0) | val; + break; + case 2: + TraReg = (val<<4) | (TraReg & 0xf); + break; + case 3: + TraReg = (TraReg & 0xf0) | val; + break; + } + need_update = 1; +} + + +Byte vpp_read(ADDRESS adr){ + Byte t; + switch (adr){ + case 4: + return vpp_mem[vpp_cx][vpp_cy][1]; + case 5: + if (slicemode) { + Byte ext, chr; + chr = vpp_mem[vpp_cx][vpp_cy][0]; + ext = (vpp_mem[vpp_cx][vpp_cy][1] & 0x80) ? 1 : 0; + if (chr < 0xA0) + t = 0; + else { + t = dchars[ext][(chr-0xA0)*10+slice]; + t = ((t&0x80)>>7) | ((t&0x40)>>5) | ((t&0x20)>>3) | ((t&0x10)>>1) | ((t&0x08)<<1) | ((t&0x04)<<3) | ((t&0x02)<<5) | ((t&0x01)<<7); + } + slice = (slice+1) % 10; + } else { + t = vpp_mem[vpp_cx][vpp_cy][0]; + if (inc_curs) { + vpp_cx++; + if (vpp_cx >= 40) { + vpp_cx = 0; + vpp_cy++; + if (vpp_cy >= 24) vpp_cy = 0; + } + } + } + return t; + case 6: + return 0; + default: + return 0; + } +} + + +void vpp_write(Byte dat, ADDRESS adr){ + switch (adr) { + case 0: + if (!slicemode) vpp_mem[vpp_cx][vpp_cy][1] = dat; + break; + case 1: + if (slicemode) { + Byte ext, chr; + chr = vpp_mem[vpp_cx][vpp_cy][0]; + ext = (vpp_mem[vpp_cx][vpp_cy][1] & 0x80) ? 1 : 0; + if (chr >= 0xA0) dchars[ext][(chr-0xA0)*10+slice] = ((dat&0x80)>>7) | ((dat&0x40)>>5) | ((dat&0x20)>>3) | ((dat&0x10)>>1) | ((dat&0x08)<<1) | ((dat&0x04)<<3) | ((dat&0x02)<<5) | ((dat&0x01)<<7); + slice = (slice+1) % 10; + } else { + vpp_mem[vpp_cx][vpp_cy][0] = dat; + if ((dat>0x7f) && (dat<0xa0) && (!(vpp_mem[vpp_cx][vpp_cy][1] & 0x80))) { + vpp_mem[vpp_cx][vpp_cy][2] = dat; + vpp_mem[vpp_cx][vpp_cy][3] = vpp_mem[vpp_cx][vpp_cy][1]; + } else { + vpp_mem[vpp_cx][vpp_cy][2] = vpp_mem[vpp_cx][vpp_cy][3] = 0; + } + if (inc_curs) { + vpp_cx++; + if (vpp_cx >= 40) { + vpp_cx = 0; + vpp_cy++; + if (vpp_cy >= 24) vpp_cy = 0; + } + } + } + break; + case 2: + vpp_data = dat; + break; + case 3: + switch (dat & 0xe0) { + case 0x00: /* plus_cmd_brow */ + vpp_cy = vpp_data & 0x1f; + vpp_cx = 0; + break; + case 0x20: /* plus_cmd_loady */ + vpp_cy = vpp_data & 0x1f; + break; + case 0x40: /* plus_cmd_loadx */ + vpp_cx = vpp_data % 40; + break; + case 0x60: /* plus_cmd_incc */ + vpp_cx++; + if (vpp_cx >= 40) { + vpp_cx = 0; + vpp_cy++; + if (vpp_cy >= 24) vpp_cy = 0; + } + break; + case 0x80: /* plus_cmd_loadm */ + slicemode = 0; + slice = (vpp_data & 0x1f) % 10; + switch (vpp_data & 0xe0) { + case 0x00: /* plus_loadm_wr */ + inc_curs = 1; + break; + case 0x20: /* plus_loadm_rd */ + inc_curs = 1; + break; + case 0x40: /* plus_loadm_wrni */ + inc_curs = 0; + break; + case 0x60: /* plus_loadm_rdni */ + inc_curs = 0; + break; + case 0x80: /* plus_loadm_wrsl */ + slicemode = 1; + break; + case 0xA0: /* plus_loadm_rdsl */ + slicemode = 1; + break; + default: + break; + } + break; + case 0xA0: /* plus_cmd_loadr */ + vpp_r = vpp_data; + break; + case 0xC0: /* plus_cmd_loady0 */ + vpp_y0 = (vpp_data & 0x1f) % 24; + break; + default: + break; + } + break; + default: + break; + } + + need_update = 1; +} + + +void vpp_finish_bmp(Byte *vmem, int offx, int offy, int w, int h, int totw, int toth){ + int i, x, y, t, c, nc, clrx, clry; + int tcol[16], m[8] = {0x01, 0x10, 0x04, 0x40, 0x02, 0x20, 0x08, 0x80}; + Byte *pnt, *pnt2, *pnt3; + + if (vppon) { + //memset(colplus,0,BMPW*BMPH); + vppon=0; + } + + if (TraReg == 0xff) return; + + vppon=1; + + frame_cnt--; + if (frame_cnt<=0) { + frame_cnt = 100; + blink_st = 1-blink_st; + need_update = 1; + } + + if (need_update) vpp_update_screen(); + + for (i=0; i<8; i++) tcol[i] = tcol[i+8] = !(TraReg & m[i]); + + if (w > totw-offx) w = totw-offx; + if (h > toth-offy) h = toth-offy; + + if (w > vppbmp->w) w = vppbmp->w; + if (h > vppbmp->h) h = vppbmp->h; + + clrx = clry = 0; + for (i=0; (!clrx) && (iline[y]; + pnt2 = (Byte *)&vppbmp->line[y*320]; + + x=0; + while (x < w) { + pnt3 = pnt; + c = *pnt++; + t = x++; + + if ((((x+offx) & 3) == 0) && (sizeof(unsigned long)==4)) { + unsigned long cccc, dddd, *p = (unsigned long*) pnt; + int t2=x, w2=w-4; + cccc = (((unsigned long)c) & 0xff) | ((((unsigned long)c) & 0xff) << 8) | ((((unsigned long)c) & 0xff) << 16) | ((((unsigned long)c) & 0xff) << 24); + dddd = *p++; + while ((x39) || (y>24) || (ext>1)) return; + + d = (dh==2) ? 5 : 0; + + for (yy=0; yy<10; yy++) { + if (ul && (d==9)) + k = 255; + else if (ch >= 0xA0) + k = dchars[ext][(ch-0xA0)*10 + d]; + else if (ch >= 0x80) + k = 255; + else + k = vpp_cset[ext][ch * 10 + d]; + + m = (dw==2) ? 0x08 : 0x80; + + for (xx=0; xx<8; xx++) { + //vppbmp->line[y*10+yy][x*8+xx] = (k & m) ? c1 : c0; + vppbmp->line[(y*10+yy)*320+ x*8+xx] = (k & m) ? c1 : c0; + if ((xx%2) || (dw==0)) m >>= 1; + } + if ((yy%2) || (dh==0)) d++; + } +} + + +static void vpp_update_screen(void){ + int i,x,y,l,chr,attr,ext,c0,c1,dw,dh,hpar,vpar,lvd,lhd,ser_chr,ser_atr,ul,conc,box; + int tlum[8], m[8] = {0x01, 0x10, 0x04, 0x40, 0x02, 0x20, 0x08, 0x80}; + + clear(vppbmp); + + for (i=0; i<8; i++) tlum[i] = (LumReg & m[i]) ? 0 : 8; + + vpar = lvd = 0; + for (y=0; y<25; y++) { + + vpar = (lvd==0) ? 0 : 1-vpar; + + l = (y==0) ? 31 : (y-1+vpp_y0)%24; + c0 = ul = conc = box = 0; + + hpar = lhd = 0; + for (x=0; x<40; x++) { + hpar = (lhd==0) ? 0 : 1-hpar; + + chr = vpp_mem[x][l][0]; + attr = vpp_mem[x][l][1]; + c1 = attr & 0x7; + c1 = ((c1&2) | ((c1&1)<<2) | ((c1&4)>>2)); + ext = (attr & 0x80) ? 1 : 0; + + ser_chr = vpp_mem[x][l][2]; + ser_atr = vpp_mem[x][l][3]; + if (ser_chr) { + c0 = (ser_atr>>4) & 0x7; + c0 = ((c0&2) | ((c0&1)<<2) | ((c0&4)>>2)); + ul = ser_chr & 4; + conc = ser_chr & 1; + box = ser_chr & 2; + } + + if (ext) { + c0 = (attr>>4) & 0x7; + c0 = ((c0&2) | ((c0&1)<<2) | ((c0&4)>>2)); + dw = dh = 0; + } else { + dw = (attr & 0x20) ? (hpar ? 2 : 1) : 0; + dh = (attr & 0x10) ? (vpar ? 2 : 1) : 0; + if (dw) lhd=1; + if (dh) lvd=1; + } + + if ((vpp_r & 0x80) && (!(attr & 8)) && (!blink_st)) c1=c0; + + if (((y == 0) && (vpp_r & 8)) || ((y != 0) && (vpp_r & 1))) { + if ((!conc) || (!(vpp_r & 4))) { + if (box || (!(vpp_r & 2))) { + if ((!ext) && (attr & 0x40)) + vpp_draw_char(x, y, chr, c1|tlum[c1], c0|tlum[c0], ext, dw, dh, ul); + else + vpp_draw_char(x, y, chr, c0|tlum[c0], c1|tlum[c1], ext, dw, dh, ul); + } else { + vpp_draw_char(x, y, 255, (app_data.openb) ? 16 : 0, 0, 0, 0, 0, 0); + } + } + } + } + + } + + if (vpp_r & 0x20) { + for (y = vppbmp->h-1; y >= 10; y--) +// for (x = 0; x < vppbmp->w; x++) vppbmp->line[y][x] = vppbmp->line[(y-10)/2+10][x]; + for (x = 0; x < vppbmp->w; x++) vppbmp->line[y*320+x] = vppbmp->line[((y-10)/2+10)*320 + x]; + } + + need_update=0; +} + + +void load_colplus(Byte *col){ + if (vppon) { + //memcpy(col,colplus,BMPW*BMPH); + } + else + memset(col,0,BMPW*BMPH); +} + +void init_vpp(void){ + int i,j,k; + + vppbmp->w = 320; + vppbmp->h = 250; + +// if ((!vppbmp) || (!colplus)) { +// fprintf(stderr,"Could not allocate memory for Videopac+ screen buffer.\n"); +// exit(EXIT_FAILURE); +// } + + clear(vppbmp); + //memset(colplus,0,BMPW*BMPH); + + LumReg = TraReg = 0xff; + vpp_cx = 0; + vpp_cy = 0; + vpp_y0 = 0; + vpp_r = 0; + inc_curs = 1; + vpp_data = 0; + frame_cnt=0; + blink_st=0; + slice = 0; + slicemode=0; + need_update = 1; + vppon = 1; + + for (i=0; i<2; i++) + for (j=0; j<960; j++) dchars[i][j] = 0; + + for (i=0; i<40; i++) + for (j=0; j<32; j++) + for (k=0; k<4; k++) vpp_mem[i][j][k] = 0; +} + diff --git a/MCUME_teensy/teensyo2em/vpp.h b/MCUME_teensy/teensyo2em/vpp.h new file mode 100644 index 0000000..e3f8df6 --- /dev/null +++ b/MCUME_teensy/teensyo2em/vpp.h @@ -0,0 +1,12 @@ +#ifndef __VPP_H +#define __VPP_H + +Byte read_PB(Byte p); +void write_PB(Byte p, Byte val); +Byte vpp_read(ADDRESS adr); +void vpp_write(Byte dat, ADDRESS adr); +void vpp_finish_bmp(Byte *vmem, int offx, int offy, int w, int h, int totw, int toth); +void init_vpp(void); +void load_colplus(Byte *col); + +#endif diff --git a/MCUME_teensy/teensyo2em/vpp_cset.c b/MCUME_teensy/teensyo2em/vpp_cset.c new file mode 100644 index 0000000..0ae7de8 --- /dev/null +++ b/MCUME_teensy/teensyo2em/vpp_cset.c @@ -0,0 +1,284 @@ + +/* + * O2EM Freeware Odyssey2 / Videopac+ Emulator + * + * Created by Daniel Boris (c) 1997,1998 + * + * Developed by Andre de la Rocha + * + * http://o2em.sourceforge.net + * + * + * + * Videopac+ character table + */ + + +#include "types.h" +#include "vpp_cset.h" + + +const Byte vpp_cset[2][1280] = { + { + /* Alphanumeric */ + 0x00,0x38,0x44,0x40,0x20,0x10,0x00,0x10,0x00,0x00, + 0x00,0x10,0x28,0x00,0x38,0x44,0x7c,0x44,0x00,0x00, + 0x00,0x08,0x10,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x08,0x14,0x10,0x38,0x10,0x24,0x3c,0x00,0x00, + 0x00,0x10,0x38,0x50,0x38,0x14,0x54,0x38,0x10,0x00, + 0x00,0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x10,0x20, + 0x00,0x28,0x28,0x7c,0x28,0x7c,0x28,0x28,0x00,0x00, + 0x00,0x20,0x18,0x00,0x38,0x44,0x7c,0x44,0x00,0x00, + 0x00,0x20,0x18,0x00,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x10,0x08,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x3c,0x50,0x50,0x58,0x50,0x50,0x3c,0x00,0x00, + 0x00,0x08,0x14,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x00,0x10,0x20,0x7f,0x20,0x10,0x00,0x00,0x00, + 0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,0x10, + 0x00,0x00,0x08,0x04,0xfe,0x04,0x08,0x00,0x00,0x00, + 0x10,0x10,0x10,0x10,0x10,0x10,0x54,0x38,0x10,0x00, + 0x00,0x18,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x7c,0x00,0x00, + 0x00,0x08,0x10,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x28,0x00,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x28,0x00,0x30,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x00,0x00,0x38,0x40,0x40,0x40,0x38,0x10,0x20, + 0x00,0x10,0x28,0x00,0x44,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x20,0x10,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x00,0x10,0x00,0x7c,0x00,0x10,0x00,0x00,0x00, + 0x00,0x20,0x10,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x52,0x5e,0x50,0x3e,0x00,0x00, + 0x00,0x10,0x28,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x40,0xc0,0x40,0x44,0x4c,0x14,0x3e,0x04,0x00, + 0x00,0x40,0xc0,0x40,0x4c,0x52,0x04,0x08,0x1e,0x00, + 0x00,0xe0,0x20,0x40,0x24,0xcc,0x14,0x3e,0x04,0x00, + 0x00,0x10,0x28,0x00,0x38,0x44,0x44,0x38,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x00,0x00, + 0x00,0x28,0x28,0x28,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x28,0x00,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00, + 0x00,0x10,0x28,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x60,0x64,0x08,0x10,0x20,0x4c,0x0c,0x00,0x00, + 0x00,0x20,0x50,0x50,0x20,0x54,0x48,0x34,0x00,0x00, + 0x00,0x10,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00,0x00, + 0x00,0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00,0x00, + 0x00,0x10,0x54,0x38,0x10,0x38,0x54,0x10,0x00,0x00, + 0x00,0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x40,0x00, + 0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, + 0x01,0x02,0x02,0x04,0x08,0x10,0x20,0x20,0x40,0x80, + 0x00,0x10,0x28,0x44,0x44,0x44,0x28,0x10,0x00,0x00, + 0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x00,0x38,0x44,0x04,0x18,0x20,0x40,0x7c,0x00,0x00, + 0x00,0x7c,0x04,0x08,0x18,0x04,0x44,0x38,0x00,0x00, + 0x00,0x08,0x18,0x28,0x48,0x7c,0x08,0x08,0x00,0x00, + 0x00,0x7c,0x40,0x78,0x04,0x04,0x44,0x38,0x00,0x00, + 0x00,0x18,0x20,0x40,0x78,0x44,0x44,0x38,0x00,0x00, + 0x00,0x7c,0x04,0x08,0x10,0x20,0x20,0x20,0x00,0x00, + 0x00,0x38,0x44,0x44,0x38,0x44,0x44,0x38,0x00,0x00, + 0x00,0x38,0x44,0x44,0x3c,0x04,0x04,0x38,0x00,0x00, + 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x20,0x40,0x00, + 0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x00, + 0x00,0x00,0x00,0x7c,0x00,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00,0x00, + 0x00,0x38,0x44,0x04,0x08,0x10,0x00,0x10,0x00,0x00, + 0x00,0x38,0x44,0x5c,0x54,0x5c,0x40,0x38,0x00,0x00, + 0x00,0x38,0x44,0x44,0x44,0x7c,0x44,0x44,0x00,0x00, + 0x00,0x78,0x44,0x44,0x78,0x44,0x44,0x78,0x00,0x00, + 0x00,0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x00,0x00, + 0x00,0x78,0x44,0x44,0x44,0x44,0x44,0x78,0x00,0x00, + 0x00,0x7c,0x40,0x40,0x70,0x40,0x40,0x7c,0x00,0x00, + 0x00,0x7c,0x40,0x40,0x70,0x40,0x40,0x40,0x00,0x00, + 0x00,0x38,0x44,0x40,0x40,0x4c,0x44,0x3c,0x00,0x00, + 0x00,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x00,0x00, + 0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x1c,0x08,0x08,0x08,0x08,0x48,0x30,0x00,0x00, + 0x00,0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x00,0x00, + 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7c,0x00,0x00, + 0x00,0x44,0x6c,0x54,0x44,0x44,0x44,0x44,0x00,0x00, + 0x00,0x44,0x44,0x64,0x54,0x4c,0x44,0x44,0x00,0x00, + 0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x78,0x44,0x44,0x78,0x40,0x40,0x40,0x00,0x00, + 0x00,0x38,0x44,0x44,0x44,0x54,0x48,0x34,0x00,0x00, + 0x00,0x78,0x44,0x44,0x78,0x50,0x48,0x44,0x00,0x00, + 0x00,0x38,0x44,0x40,0x38,0x04,0x44,0x38,0x00,0x00, + 0x00,0x7c,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, + 0x00,0x44,0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x44,0x44,0x44,0x28,0x28,0x10,0x10,0x00,0x00, + 0x00,0x44,0x44,0x44,0x54,0x54,0x54,0x28,0x00,0x00, + 0x00,0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x00,0x00, + 0x00,0x44,0x44,0x28,0x10,0x10,0x10,0x10,0x00,0x00, + 0x00,0x7c,0x04,0x08,0x10,0x20,0x40,0x7c,0x00,0x00, + 0x00,0x1c,0x10,0x10,0x10,0x10,0x10,0x1c,0x00,0x00, + 0x80,0x40,0x40,0x20,0x10,0x08,0x04,0x04,0x02,0x01, + 0x00,0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00,0x00, + 0x00,0x10,0x28,0x00,0x30,0x10,0x10,0x38,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, + 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x40,0x40,0x78,0x44,0x44,0x44,0x78,0x00,0x00, + 0x00,0x00,0x00,0x38,0x40,0x40,0x40,0x38,0x00,0x00, + 0x00,0x04,0x04,0x3c,0x44,0x44,0x44,0x3c,0x00,0x00, + 0x00,0x00,0x00,0x38,0x44,0x7c,0x40,0x38,0x00,0x00, + 0x00,0x18,0x24,0x20,0x70,0x20,0x20,0x20,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x44,0x44,0x3c,0x04,0x24,0x18, + 0x00,0x40,0x40,0x58,0x64,0x44,0x44,0x44,0x00,0x00, + 0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x08,0x00,0x18,0x08,0x08,0x08,0x08,0x48,0x30, + 0x00,0x20,0x20,0x24,0x28,0x30,0x28,0x24,0x00,0x00, + 0x00,0x30,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00, + 0x00,0x00,0x00,0x68,0x54,0x54,0x54,0x54,0x00,0x00, + 0x00,0x00,0x00,0x58,0x64,0x44,0x44,0x44,0x00,0x00, + 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00, + 0x00,0x00,0x00,0x78,0x44,0x44,0x44,0x78,0x40,0x40, + 0x00,0x00,0x00,0x3c,0x44,0x44,0x44,0x3c,0x04,0x04, + 0x00,0x00,0x00,0x58,0x64,0x40,0x40,0x40,0x00,0x00, + 0x00,0x00,0x00,0x38,0x40,0x38,0x04,0x78,0x00,0x00, + 0x00,0x20,0x20,0x38,0x20,0x20,0x20,0x18,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x44,0x4c,0x34,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x28,0x28,0x10,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x54,0x54,0x28,0x00,0x00, + 0x00,0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, + 0x00,0x00,0x00,0x44,0x44,0x4c,0x34,0x04,0x44,0x38, + 0x00,0x00,0x00,0x7c,0x08,0x10,0x20,0x7c,0x00,0x00, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, + 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, + { + /* Separated semi-graphic */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00, + 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00, + 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00, + 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00, + /* Mosaic semi-graphic */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff, + 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff, + 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff, + 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff} +}; + diff --git a/MCUME_teensy/teensyo2em/vpp_cset.h b/MCUME_teensy/teensyo2em/vpp_cset.h new file mode 100644 index 0000000..4505177 --- /dev/null +++ b/MCUME_teensy/teensyo2em/vpp_cset.h @@ -0,0 +1,6 @@ +#ifndef __VPP_CSET_H +#define __VPP_CSET_H + +extern const Byte vpp_cset[2][1280]; + +#endif diff --git a/MCUME_teensy/teensyspeccy/.DS_Store b/MCUME_teensy/teensyspeccy/.DS_Store new file mode 100644 index 0000000..f7a8f99 Binary files /dev/null and b/MCUME_teensy/teensyspeccy/.DS_Store differ diff --git a/MCUME_teensy/teensyspeccy/AY8910.c b/MCUME_teensy/teensyspeccy/AY8910.c new file mode 100644 index 0000000..9c3984b --- /dev/null +++ b/MCUME_teensy/teensyspeccy/AY8910.c @@ -0,0 +1,315 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.c **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.h for declarations. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "AY8910.h" +#include "emuapi.h" +#include + +static const unsigned char Envelopes[16][32] = +{ + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }, + { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } +}; + +static const int Volumes[16] = +{ 0,1,2,4,6,8,11,16,23,32,45,64,90,128,180,255 }; +//{ 0,16,33,50,67,84,101,118,135,152,169,186,203,220,237,254 }; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First) +{ + static byte RegInit[16] = + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00 + }; + int J; + + /* Reset state */ + memcpy(D->R,RegInit,sizeof(D->R)); + D->EPhase = 0; + D->Clock = ClockHz>>4; + D->First = First; + D->Sync = AY8910_ASYNC; + D->Changed = 0x00; + D->EPeriod = 0; + D->ECount = 0; + D->Latch = 0x00; + + /* Set sound types */ + //SetSound(0+First,SND_MELODIC); + //SetSound(1+First,SND_MELODIC); + //SetSound(2+First,SND_MELODIC); + //SetSound(3+First,SND_NOISE); + //SetSound(4+First,SND_NOISE); + //SetSound(5+First,SND_NOISE); + + /* Silence all channels */ + for(J=0;JFreq[J]=D->Volume[J]=0; +#if HAS_SND + emu_sndPlaySound(J+First, 0, 0); +#endif + //Sound(J+First,0,0); + } +} + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V) +{ + D->Latch=V&0x0F; +} + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V) +{ + Write8910(D,D->Latch,V); +} + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D) +{ + return(D->R[D->Latch]); +} + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V) +{ + register int J,I; + + switch(R) + { + case 1: + case 3: + case 5: + V&=0x0F; + /* Fall through */ + case 0: + case 2: + case 4: + /* Write value */ + D->R[R]=V; + /* Exit if the channel is silenced */ + if(D->R[7]&(1<<(R>>1))) return; + /* Go to the first register in the pair */ + R&=0xFE; + /* Compute frequency */ + J=((int)(D->R[R+1]&0x0F)<<8)+D->R[R]; + /* Compute channel number */ + R>>=1; + /* Assign frequency */ + D->Freq[R]=D->Clock/(J? J:0x1000); + /* Compute changed channels mask */ + D->Changed|=1<R[6]=V&=0x1F; + /* Exit if noise channels are silenced */ + if(!(~D->R[7]&0x38)) return; + /* Compute and assign noise frequency */ + /* Shouldn't do <<2, but need to keep frequency down */ + J=D->Clock/((V&0x1F? (V&0x1F):0x20)<<2); + if(!(D->R[7]&0x08)) D->Freq[3]=J; + if(!(D->R[7]&0x10)) D->Freq[4]=J; + if(!(D->R[7]&0x20)) D->Freq[5]=J; + /* Compute changed channels mask */ + D->Changed|=0x38&~D->R[7]; + break; + + case 7: + /* Find changed channels */ + R=(V^D->R[7])&0x3F; + D->Changed|=R; + /* Write value */ + D->R[7]=V; + /* Update frequencies */ + for(J=0;R&&(J>=1,V>>=1) + if(R&1) + { + if(V&1) D->Freq[J]=0; + else if(J<3) + { + I=((int)(D->R[J*2+1]&0x0F)<<8)+D->R[J*2]; + D->Freq[J]=D->Clock/(I? I:0x1000); + } + else + { + /* Shouldn't do <<2, but need to keep frequency down */ + I=D->R[6]&0x1F; + D->Freq[J]=D->Clock/((I? I:0x20)<<2); + } + } + break; + + case 8: + case 9: + case 10: + /* Write value */ + D->R[R]=V&=0x1F; + /* Compute channel number */ + R-=8; + /* Compute and assign new volume */ + J=Volumes[V&0x10? Envelopes[D->R[13]&0x0F][D->EPhase]:(V&0x0F)]; + D->Volume[R]=J; + D->Volume[R+3]=(J+1)>>1; + /* Compute changed channels mask */ + D->Changed|=(0x09<R[7]; + break; + + case 11: + case 12: + /* Write value */ + D->R[R]=V; + /* Compute envelope period (why not <<4?) */ + J=((int)D->R[12]<<8)+D->R[11]; + D->EPeriod=1000*(J? J:0x10000)/D->Clock; + /* No channels changed */ + return; + + case 13: + /* Write value */ + D->R[R]=V&=0x0F; + /* Reset envelope */ + D->ECount = 0; + D->EPhase = 0; + for(J=0;JR[J+8]&0x10) + { + I = Volumes[Envelopes[V][0]]; + D->Volume[J] = I; + D->Volume[J+3] = (I+1)>>1; + D->Changed |= (0x09<R[7]; + } + break; + + case 14: + case 15: + /* Write value */ + D->R[R]=V; + /* No channels changed */ + return; + + default: + /* Wrong register, do nothing */ + return; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS) +{ + register int J,I; + + /* Exit if no envelope running */ + if(!D->EPeriod) return; + + /* Count milliseconds */ + D->ECount += mS; + if(D->ECountEPeriod) return; + + /* Count steps */ + J = D->ECount/D->EPeriod; + D->ECount -= J*D->EPeriod; + + /* Count phases */ + D->EPhase += J; + if(D->EPhase>31) + D->EPhase = (D->R[13]&0x09)==0x08? (D->EPhase&0x1F):31; + + /* Set envelope volumes for relevant channels */ + for(I=0;I<3;++I) + if(D->R[I+8]&0x10) + { + J = Volumes[Envelopes[D->R[13]&0x0F][D->EPhase]]; + D->Volume[I] = J; + D->Volume[I+3] = (J+1)>>1; + D->Changed |= (0x09<R[7]; + } + + /* For asynchronous mode, make Sound() calls right away */ + if(!D->Sync&&D->Changed) Sync8910(D,AY8910_FLUSH); +} + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync) +{ + register int J,I; + + /* Hit MIDI drums for noise channels, if requested */ + if(Sync&AY8910_DRUMS) + { + Sync&=~AY8910_DRUMS; + J = (D->Freq[3]? D->Volume[3]:0) + + (D->Freq[4]? D->Volume[4]:0) + + (D->Freq[5]? D->Volume[5]:0); + if(J) { + //Drum(DRM_MIDI|28,(J+2)/3); + } + } + + if(Sync!=AY8910_FLUSH) D->Sync=Sync; + + for(J=0,I=D->Changed;I&&(J>=1) + if(I&1) { +#if HAS_SND + emu_sndPlaySound(J+D->First, D->Volume[J], D->Freq[J]); +#endif + //Sound(J+D->First,D->Freq[J],D->Volume[J]); + } + + D->Changed=0x00; +} diff --git a/MCUME_teensy/teensyspeccy/AY8910.h b/MCUME_teensy/teensyspeccy/AY8910.h new file mode 100755 index 0000000..b833cc6 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/AY8910.h @@ -0,0 +1,97 @@ +/** EMULib Emulation Library *********************************/ +/** **/ +/** AY8910.h **/ +/** **/ +/** This file contains emulation for the AY8910 sound chip **/ +/** produced by General Instruments, Yamaha, etc. See **/ +/** AY8910.c for the actual code. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1996-2014 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef AY8910_H +#define AY8910_H +#ifdef __cplusplus +extern "C" { +#endif + +#define AY8910_CHANNELS 6 /* 3 melodic + 3 noise chanls */ + +#define AY8910_ASYNC 0 /* Asynchronous emulation */ +#define AY8910_SYNC 1 /* Synchronous emulation */ +#define AY8910_FLUSH 2 /* Flush buffers only */ +#define AY8910_DRUMS 0x80 /* Hit drums for noise chnls */ + +#ifndef BYTE_TYPE_DEFINED +#define BYTE_TYPE_DEFINED +typedef unsigned char byte; +#endif + +/** AY8910 ***************************************************/ +/** This data structure stores AY8910 state. **/ +/*************************************************************/ +typedef struct +{ + byte R[16]; /* PSG registers contents */ + int Freq[AY8910_CHANNELS]; /* Frequencies (0 for off) */ + int Volume[AY8910_CHANNELS]; /* Volumes (0..255) */ + int Clock; /* Base clock used by PSG */ + int First; /* First used Sound() channel */ + byte Changed; /* Bitmap of changed channels */ + byte Sync; /* AY8910_SYNC/AY8910_ASYNC */ + byte Latch; /* Latch for the register num */ + int EPeriod; /* Envelope step in msecs */ + int ECount; /* Envelope step counter */ + int EPhase; /* Envelope phase */ +} AY8910; + +/** Reset8910() **********************************************/ +/** Reset the sound chip and use sound channels from the **/ +/** one given in First. **/ +/*************************************************************/ +void Reset8910(register AY8910 *D,int ClockHz,int First); + +/** Write8910() **********************************************/ +/** Call this function to output a value V into the sound **/ +/** chip. **/ +/*************************************************************/ +void Write8910(register AY8910 *D,register byte R,register byte V); + +/** WrCtrl8910() *********************************************/ +/** Write a value V to the PSG Control Port. **/ +/*************************************************************/ +void WrCtrl8910(AY8910 *D,byte V); + +/** WrData8910() *********************************************/ +/** Write a value V to the PSG Data Port. **/ +/*************************************************************/ +void WrData8910(AY8910 *D,byte V); + +/** RdData8910() *********************************************/ +/** Read a value from the PSG Data Port. **/ +/*************************************************************/ +byte RdData8910(AY8910 *D); + +/** Sync8910() ***********************************************/ +/** Flush all accumulated changes by issuing Sound() calls **/ +/** and set the synchronization on/off. The second argument **/ +/** should be AY8910_SYNC/AY8910_ASYNC to set/reset sync, **/ +/** or AY8910_FLUSH to leave sync mode as it is. To emulate **/ +/** noise channels with MIDI drums, OR second argument with **/ +/** AY8910_DRUMS. **/ +/*************************************************************/ +void Sync8910(register AY8910 *D,register byte Sync); + +/** Loop8910() ***********************************************/ +/** Call this function periodically to update volume **/ +/** envelopes. Use mS to pass the time since the last call **/ +/** of Loop8910() in milliseconds. **/ +/*************************************************************/ +void Loop8910(register AY8910 *D,int mS); + +#ifdef __cplusplus +} +#endif +#endif /* AY8910_H */ diff --git a/MCUME_teensy/teensyspeccy/AudioPlaySystem.cpp b/MCUME_teensy/teensyspeccy/AudioPlaySystem.cpp new file mode 100644 index 0000000..2130a5d --- /dev/null +++ b/MCUME_teensy/teensyspeccy/AudioPlaySystem.cpp @@ -0,0 +1,201 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} + +void AudioPlaySystem::buzz(int size, int val) { +} +#endif + diff --git a/MCUME_teensy/teensyspeccy/AudioPlaySystem.h b/MCUME_teensy/teensyspeccy/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensyspeccy/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensyspeccy/Codes.h b/MCUME_teensy/teensyspeccy/Codes.h new file mode 100755 index 0000000..2dcee81 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/Codes.h @@ -0,0 +1,385 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Codes.h **/ +/** **/ +/** This file contains implementation for the main table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=6;M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { R->ICount-=6;M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=6;M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { R->ICount-=6;M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->HL.B.h);break; +case ADD_L: M_ADD(R->HL.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->HL.W);M_ADD(I);break; +case ADD_BYTE: I=OpZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->HL.B.h);break; +case SUB_L: M_SUB(R->HL.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->HL.W);M_SUB(I);break; +case SUB_BYTE: I=OpZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->HL.B.h);break; +case AND_L: M_AND(R->HL.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->HL.W);M_AND(I);break; +case AND_BYTE: I=OpZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->HL.B.h);break; +case OR_L: M_OR(R->HL.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->HL.W);M_OR(I);break; +case OR_BYTE: I=OpZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->HL.B.h);break; +case ADC_L: M_ADC(R->HL.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->HL.W);M_ADC(I);break; +case ADC_BYTE: I=OpZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->HL.B.h);break; +case SBC_L: M_SBC(R->HL.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->HL.W);M_SBC(I);break; +case SBC_BYTE: I=OpZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->HL.B.h);break; +case XOR_L: M_XOR(R->HL.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->HL.W);M_XOR(I);break; +case XOR_BYTE: I=OpZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->HL.B.h);break; +case CP_L: M_CP(R->HL.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->HL.W);M_CP(I);break; +case CP_BYTE: I=OpZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(HL);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->HL.W;JumpZ80(R->PC.W);break; +case LD_SP_HL: R->SP.W=R->HL.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(HL,BC);break; +case ADD_HL_DE: M_ADDW(HL,DE);break; +case ADD_HL_HL: M_ADDW(HL,HL);break; +case ADD_HL_SP: M_ADDW(HL,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->HL.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->HL.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->HL.B.h);break; +case DEC_L: M_DEC(R->HL.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->HL.W);M_DEC(I);WrZ80(R->HL.W,I);break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->HL.B.h);break; +case INC_L: M_INC(R->HL.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->HL.W);M_INC(I);WrZ80(R->HL.W,I);break; + +case RLCA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=R->AF.B.h&0x80? C_FLAG:0; + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(HL);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(HL);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { R->ICount-=5;M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: I=OpZ80(R->PC.W++);OutZ80(I|(R->AF.W&0xFF00),R->AF.B.h);break; +case INA: I=OpZ80(R->PC.W++);R->AF.B.h=InZ80(I|(R->AF.W&0xFF00));break; + +case HALT: + R->PC.W--; + R->IFF|=IFF_HALT; + R->IBackup=0; + R->ICount=0; + break; + +case DI: + if(R->IFF&IFF_EI) R->ICount+=R->IBackup-1; + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + break; + +case EI: + if(!(R->IFF&(IFF_1|IFF_EI))) + { + R->IFF|=IFF_2|IFF_EI; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->HL.B.h=R->BC.B.h;break; +case LD_L_B: R->HL.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: WrZ80(R->HL.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->HL.B.h=R->BC.B.l;break; +case LD_L_C: R->HL.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: WrZ80(R->HL.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->HL.B.h=R->DE.B.h;break; +case LD_L_D: R->HL.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: WrZ80(R->HL.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->HL.B.h=R->DE.B.l;break; +case LD_L_E: R->HL.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: WrZ80(R->HL.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->HL.B.h;break; +case LD_C_H: R->BC.B.l=R->HL.B.h;break; +case LD_D_H: R->DE.B.h=R->HL.B.h;break; +case LD_E_H: R->DE.B.l=R->HL.B.h;break; +case LD_H_H: R->HL.B.h=R->HL.B.h;break; +case LD_L_H: R->HL.B.l=R->HL.B.h;break; +case LD_A_H: R->AF.B.h=R->HL.B.h;break; +case LD_xHL_H: WrZ80(R->HL.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->HL.B.l;break; +case LD_C_L: R->BC.B.l=R->HL.B.l;break; +case LD_D_L: R->DE.B.h=R->HL.B.l;break; +case LD_E_L: R->DE.B.l=R->HL.B.l;break; +case LD_H_L: R->HL.B.h=R->HL.B.l;break; +case LD_L_L: R->HL.B.l=R->HL.B.l;break; +case LD_A_L: R->AF.B.h=R->HL.B.l;break; +case LD_xHL_L: WrZ80(R->HL.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->HL.B.h=R->AF.B.h;break; +case LD_L_A: R->HL.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: WrZ80(R->HL.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->HL.W);break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->HL.W);break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->HL.W);break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->HL.W);break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->HL.W);break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->HL.W);break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->HL.W);break; + +case LD_B_BYTE: R->BC.B.h=OpZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=OpZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=OpZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=OpZ80(R->PC.W++);break; +case LD_H_BYTE: R->HL.B.h=OpZ80(R->PC.W++);break; +case LD_L_BYTE: R->HL.B.l=OpZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=OpZ80(R->PC.W++);break; +case LD_xHL_BYTE: WrZ80(R->HL.W,OpZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; + +case LD_HL_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->HL.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->HL.B.h); + R->HL.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; + +default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-1),R->PC.W-1 + ); + break; diff --git a/MCUME_teensy/teensyspeccy/CodesCB.h b/MCUME_teensy/teensyspeccy/CodesCB.h new file mode 100755 index 0000000..15fcb4f --- /dev/null +++ b/MCUME_teensy/teensyspeccy/CodesCB.h @@ -0,0 +1,204 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesCB.h **/ +/** **/ +/** This file contains implementation for the CB table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_B: M_RLC(R->BC.B.h);break; case RLC_C: M_RLC(R->BC.B.l);break; +case RLC_D: M_RLC(R->DE.B.h);break; case RLC_E: M_RLC(R->DE.B.l);break; +case RLC_H: M_RLC(R->HL.B.h);break; case RLC_L: M_RLC(R->HL.B.l);break; +case RLC_xHL: I=RdZ80(R->HL.W);M_RLC(I);WrZ80(R->HL.W,I);break; +case RLC_A: M_RLC(R->AF.B.h);break; + +case RRC_B: M_RRC(R->BC.B.h);break; case RRC_C: M_RRC(R->BC.B.l);break; +case RRC_D: M_RRC(R->DE.B.h);break; case RRC_E: M_RRC(R->DE.B.l);break; +case RRC_H: M_RRC(R->HL.B.h);break; case RRC_L: M_RRC(R->HL.B.l);break; +case RRC_xHL: I=RdZ80(R->HL.W);M_RRC(I);WrZ80(R->HL.W,I);break; +case RRC_A: M_RRC(R->AF.B.h);break; + +case RL_B: M_RL(R->BC.B.h);break; case RL_C: M_RL(R->BC.B.l);break; +case RL_D: M_RL(R->DE.B.h);break; case RL_E: M_RL(R->DE.B.l);break; +case RL_H: M_RL(R->HL.B.h);break; case RL_L: M_RL(R->HL.B.l);break; +case RL_xHL: I=RdZ80(R->HL.W);M_RL(I);WrZ80(R->HL.W,I);break; +case RL_A: M_RL(R->AF.B.h);break; + +case RR_B: M_RR(R->BC.B.h);break; case RR_C: M_RR(R->BC.B.l);break; +case RR_D: M_RR(R->DE.B.h);break; case RR_E: M_RR(R->DE.B.l);break; +case RR_H: M_RR(R->HL.B.h);break; case RR_L: M_RR(R->HL.B.l);break; +case RR_xHL: I=RdZ80(R->HL.W);M_RR(I);WrZ80(R->HL.W,I);break; +case RR_A: M_RR(R->AF.B.h);break; + +case SLA_B: M_SLA(R->BC.B.h);break; case SLA_C: M_SLA(R->BC.B.l);break; +case SLA_D: M_SLA(R->DE.B.h);break; case SLA_E: M_SLA(R->DE.B.l);break; +case SLA_H: M_SLA(R->HL.B.h);break; case SLA_L: M_SLA(R->HL.B.l);break; +case SLA_xHL: I=RdZ80(R->HL.W);M_SLA(I);WrZ80(R->HL.W,I);break; +case SLA_A: M_SLA(R->AF.B.h);break; + +case SRA_B: M_SRA(R->BC.B.h);break; case SRA_C: M_SRA(R->BC.B.l);break; +case SRA_D: M_SRA(R->DE.B.h);break; case SRA_E: M_SRA(R->DE.B.l);break; +case SRA_H: M_SRA(R->HL.B.h);break; case SRA_L: M_SRA(R->HL.B.l);break; +case SRA_xHL: I=RdZ80(R->HL.W);M_SRA(I);WrZ80(R->HL.W,I);break; +case SRA_A: M_SRA(R->AF.B.h);break; + +case SLL_B: M_SLL(R->BC.B.h);break; case SLL_C: M_SLL(R->BC.B.l);break; +case SLL_D: M_SLL(R->DE.B.h);break; case SLL_E: M_SLL(R->DE.B.l);break; +case SLL_H: M_SLL(R->HL.B.h);break; case SLL_L: M_SLL(R->HL.B.l);break; +case SLL_xHL: I=RdZ80(R->HL.W);M_SLL(I);WrZ80(R->HL.W,I);break; +case SLL_A: M_SLL(R->AF.B.h);break; + +case SRL_B: M_SRL(R->BC.B.h);break; case SRL_C: M_SRL(R->BC.B.l);break; +case SRL_D: M_SRL(R->DE.B.h);break; case SRL_E: M_SRL(R->DE.B.l);break; +case SRL_H: M_SRL(R->HL.B.h);break; case SRL_L: M_SRL(R->HL.B.l);break; +case SRL_xHL: I=RdZ80(R->HL.W);M_SRL(I);WrZ80(R->HL.W,I);break; +case SRL_A: M_SRL(R->AF.B.h);break; + +case BIT0_B: M_BIT(0,R->BC.B.h);break; case BIT0_C: M_BIT(0,R->BC.B.l);break; +case BIT0_D: M_BIT(0,R->DE.B.h);break; case BIT0_E: M_BIT(0,R->DE.B.l);break; +case BIT0_H: M_BIT(0,R->HL.B.h);break; case BIT0_L: M_BIT(0,R->HL.B.l);break; +case BIT0_xHL: I=RdZ80(R->HL.W);M_BIT(0,I);break; +case BIT0_A: M_BIT(0,R->AF.B.h);break; + +case BIT1_B: M_BIT(1,R->BC.B.h);break; case BIT1_C: M_BIT(1,R->BC.B.l);break; +case BIT1_D: M_BIT(1,R->DE.B.h);break; case BIT1_E: M_BIT(1,R->DE.B.l);break; +case BIT1_H: M_BIT(1,R->HL.B.h);break; case BIT1_L: M_BIT(1,R->HL.B.l);break; +case BIT1_xHL: I=RdZ80(R->HL.W);M_BIT(1,I);break; +case BIT1_A: M_BIT(1,R->AF.B.h);break; + +case BIT2_B: M_BIT(2,R->BC.B.h);break; case BIT2_C: M_BIT(2,R->BC.B.l);break; +case BIT2_D: M_BIT(2,R->DE.B.h);break; case BIT2_E: M_BIT(2,R->DE.B.l);break; +case BIT2_H: M_BIT(2,R->HL.B.h);break; case BIT2_L: M_BIT(2,R->HL.B.l);break; +case BIT2_xHL: I=RdZ80(R->HL.W);M_BIT(2,I);break; +case BIT2_A: M_BIT(2,R->AF.B.h);break; + +case BIT3_B: M_BIT(3,R->BC.B.h);break; case BIT3_C: M_BIT(3,R->BC.B.l);break; +case BIT3_D: M_BIT(3,R->DE.B.h);break; case BIT3_E: M_BIT(3,R->DE.B.l);break; +case BIT3_H: M_BIT(3,R->HL.B.h);break; case BIT3_L: M_BIT(3,R->HL.B.l);break; +case BIT3_xHL: I=RdZ80(R->HL.W);M_BIT(3,I);break; +case BIT3_A: M_BIT(3,R->AF.B.h);break; + +case BIT4_B: M_BIT(4,R->BC.B.h);break; case BIT4_C: M_BIT(4,R->BC.B.l);break; +case BIT4_D: M_BIT(4,R->DE.B.h);break; case BIT4_E: M_BIT(4,R->DE.B.l);break; +case BIT4_H: M_BIT(4,R->HL.B.h);break; case BIT4_L: M_BIT(4,R->HL.B.l);break; +case BIT4_xHL: I=RdZ80(R->HL.W);M_BIT(4,I);break; +case BIT4_A: M_BIT(4,R->AF.B.h);break; + +case BIT5_B: M_BIT(5,R->BC.B.h);break; case BIT5_C: M_BIT(5,R->BC.B.l);break; +case BIT5_D: M_BIT(5,R->DE.B.h);break; case BIT5_E: M_BIT(5,R->DE.B.l);break; +case BIT5_H: M_BIT(5,R->HL.B.h);break; case BIT5_L: M_BIT(5,R->HL.B.l);break; +case BIT5_xHL: I=RdZ80(R->HL.W);M_BIT(5,I);break; +case BIT5_A: M_BIT(5,R->AF.B.h);break; + +case BIT6_B: M_BIT(6,R->BC.B.h);break; case BIT6_C: M_BIT(6,R->BC.B.l);break; +case BIT6_D: M_BIT(6,R->DE.B.h);break; case BIT6_E: M_BIT(6,R->DE.B.l);break; +case BIT6_H: M_BIT(6,R->HL.B.h);break; case BIT6_L: M_BIT(6,R->HL.B.l);break; +case BIT6_xHL: I=RdZ80(R->HL.W);M_BIT(6,I);break; +case BIT6_A: M_BIT(6,R->AF.B.h);break; + +case BIT7_B: M_BIT(7,R->BC.B.h);break; case BIT7_C: M_BIT(7,R->BC.B.l);break; +case BIT7_D: M_BIT(7,R->DE.B.h);break; case BIT7_E: M_BIT(7,R->DE.B.l);break; +case BIT7_H: M_BIT(7,R->HL.B.h);break; case BIT7_L: M_BIT(7,R->HL.B.l);break; +case BIT7_xHL: I=RdZ80(R->HL.W);M_BIT(7,I);break; +case BIT7_A: M_BIT(7,R->AF.B.h);break; + +case RES0_B: M_RES(0,R->BC.B.h);break; case RES0_C: M_RES(0,R->BC.B.l);break; +case RES0_D: M_RES(0,R->DE.B.h);break; case RES0_E: M_RES(0,R->DE.B.l);break; +case RES0_H: M_RES(0,R->HL.B.h);break; case RES0_L: M_RES(0,R->HL.B.l);break; +case RES0_xHL: I=RdZ80(R->HL.W);M_RES(0,I);WrZ80(R->HL.W,I);break; +case RES0_A: M_RES(0,R->AF.B.h);break; + +case RES1_B: M_RES(1,R->BC.B.h);break; case RES1_C: M_RES(1,R->BC.B.l);break; +case RES1_D: M_RES(1,R->DE.B.h);break; case RES1_E: M_RES(1,R->DE.B.l);break; +case RES1_H: M_RES(1,R->HL.B.h);break; case RES1_L: M_RES(1,R->HL.B.l);break; +case RES1_xHL: I=RdZ80(R->HL.W);M_RES(1,I);WrZ80(R->HL.W,I);break; +case RES1_A: M_RES(1,R->AF.B.h);break; + +case RES2_B: M_RES(2,R->BC.B.h);break; case RES2_C: M_RES(2,R->BC.B.l);break; +case RES2_D: M_RES(2,R->DE.B.h);break; case RES2_E: M_RES(2,R->DE.B.l);break; +case RES2_H: M_RES(2,R->HL.B.h);break; case RES2_L: M_RES(2,R->HL.B.l);break; +case RES2_xHL: I=RdZ80(R->HL.W);M_RES(2,I);WrZ80(R->HL.W,I);break; +case RES2_A: M_RES(2,R->AF.B.h);break; + +case RES3_B: M_RES(3,R->BC.B.h);break; case RES3_C: M_RES(3,R->BC.B.l);break; +case RES3_D: M_RES(3,R->DE.B.h);break; case RES3_E: M_RES(3,R->DE.B.l);break; +case RES3_H: M_RES(3,R->HL.B.h);break; case RES3_L: M_RES(3,R->HL.B.l);break; +case RES3_xHL: I=RdZ80(R->HL.W);M_RES(3,I);WrZ80(R->HL.W,I);break; +case RES3_A: M_RES(3,R->AF.B.h);break; + +case RES4_B: M_RES(4,R->BC.B.h);break; case RES4_C: M_RES(4,R->BC.B.l);break; +case RES4_D: M_RES(4,R->DE.B.h);break; case RES4_E: M_RES(4,R->DE.B.l);break; +case RES4_H: M_RES(4,R->HL.B.h);break; case RES4_L: M_RES(4,R->HL.B.l);break; +case RES4_xHL: I=RdZ80(R->HL.W);M_RES(4,I);WrZ80(R->HL.W,I);break; +case RES4_A: M_RES(4,R->AF.B.h);break; + +case RES5_B: M_RES(5,R->BC.B.h);break; case RES5_C: M_RES(5,R->BC.B.l);break; +case RES5_D: M_RES(5,R->DE.B.h);break; case RES5_E: M_RES(5,R->DE.B.l);break; +case RES5_H: M_RES(5,R->HL.B.h);break; case RES5_L: M_RES(5,R->HL.B.l);break; +case RES5_xHL: I=RdZ80(R->HL.W);M_RES(5,I);WrZ80(R->HL.W,I);break; +case RES5_A: M_RES(5,R->AF.B.h);break; + +case RES6_B: M_RES(6,R->BC.B.h);break; case RES6_C: M_RES(6,R->BC.B.l);break; +case RES6_D: M_RES(6,R->DE.B.h);break; case RES6_E: M_RES(6,R->DE.B.l);break; +case RES6_H: M_RES(6,R->HL.B.h);break; case RES6_L: M_RES(6,R->HL.B.l);break; +case RES6_xHL: I=RdZ80(R->HL.W);M_RES(6,I);WrZ80(R->HL.W,I);break; +case RES6_A: M_RES(6,R->AF.B.h);break; + +case RES7_B: M_RES(7,R->BC.B.h);break; case RES7_C: M_RES(7,R->BC.B.l);break; +case RES7_D: M_RES(7,R->DE.B.h);break; case RES7_E: M_RES(7,R->DE.B.l);break; +case RES7_H: M_RES(7,R->HL.B.h);break; case RES7_L: M_RES(7,R->HL.B.l);break; +case RES7_xHL: I=RdZ80(R->HL.W);M_RES(7,I);WrZ80(R->HL.W,I);break; +case RES7_A: M_RES(7,R->AF.B.h);break; + +case SET0_B: M_SET(0,R->BC.B.h);break; case SET0_C: M_SET(0,R->BC.B.l);break; +case SET0_D: M_SET(0,R->DE.B.h);break; case SET0_E: M_SET(0,R->DE.B.l);break; +case SET0_H: M_SET(0,R->HL.B.h);break; case SET0_L: M_SET(0,R->HL.B.l);break; +case SET0_xHL: I=RdZ80(R->HL.W);M_SET(0,I);WrZ80(R->HL.W,I);break; +case SET0_A: M_SET(0,R->AF.B.h);break; + +case SET1_B: M_SET(1,R->BC.B.h);break; case SET1_C: M_SET(1,R->BC.B.l);break; +case SET1_D: M_SET(1,R->DE.B.h);break; case SET1_E: M_SET(1,R->DE.B.l);break; +case SET1_H: M_SET(1,R->HL.B.h);break; case SET1_L: M_SET(1,R->HL.B.l);break; +case SET1_xHL: I=RdZ80(R->HL.W);M_SET(1,I);WrZ80(R->HL.W,I);break; +case SET1_A: M_SET(1,R->AF.B.h);break; + +case SET2_B: M_SET(2,R->BC.B.h);break; case SET2_C: M_SET(2,R->BC.B.l);break; +case SET2_D: M_SET(2,R->DE.B.h);break; case SET2_E: M_SET(2,R->DE.B.l);break; +case SET2_H: M_SET(2,R->HL.B.h);break; case SET2_L: M_SET(2,R->HL.B.l);break; +case SET2_xHL: I=RdZ80(R->HL.W);M_SET(2,I);WrZ80(R->HL.W,I);break; +case SET2_A: M_SET(2,R->AF.B.h);break; + +case SET3_B: M_SET(3,R->BC.B.h);break; case SET3_C: M_SET(3,R->BC.B.l);break; +case SET3_D: M_SET(3,R->DE.B.h);break; case SET3_E: M_SET(3,R->DE.B.l);break; +case SET3_H: M_SET(3,R->HL.B.h);break; case SET3_L: M_SET(3,R->HL.B.l);break; +case SET3_xHL: I=RdZ80(R->HL.W);M_SET(3,I);WrZ80(R->HL.W,I);break; +case SET3_A: M_SET(3,R->AF.B.h);break; + +case SET4_B: M_SET(4,R->BC.B.h);break; case SET4_C: M_SET(4,R->BC.B.l);break; +case SET4_D: M_SET(4,R->DE.B.h);break; case SET4_E: M_SET(4,R->DE.B.l);break; +case SET4_H: M_SET(4,R->HL.B.h);break; case SET4_L: M_SET(4,R->HL.B.l);break; +case SET4_xHL: I=RdZ80(R->HL.W);M_SET(4,I);WrZ80(R->HL.W,I);break; +case SET4_A: M_SET(4,R->AF.B.h);break; + +case SET5_B: M_SET(5,R->BC.B.h);break; case SET5_C: M_SET(5,R->BC.B.l);break; +case SET5_D: M_SET(5,R->DE.B.h);break; case SET5_E: M_SET(5,R->DE.B.l);break; +case SET5_H: M_SET(5,R->HL.B.h);break; case SET5_L: M_SET(5,R->HL.B.l);break; +case SET5_xHL: I=RdZ80(R->HL.W);M_SET(5,I);WrZ80(R->HL.W,I);break; +case SET5_A: M_SET(5,R->AF.B.h);break; + +case SET6_B: M_SET(6,R->BC.B.h);break; case SET6_C: M_SET(6,R->BC.B.l);break; +case SET6_D: M_SET(6,R->DE.B.h);break; case SET6_E: M_SET(6,R->DE.B.l);break; +case SET6_H: M_SET(6,R->HL.B.h);break; case SET6_L: M_SET(6,R->HL.B.l);break; +case SET6_xHL: I=RdZ80(R->HL.W);M_SET(6,I);WrZ80(R->HL.W,I);break; +case SET6_A: M_SET(6,R->AF.B.h);break; + +case SET7_B: M_SET(7,R->BC.B.h);break; case SET7_C: M_SET(7,R->BC.B.l);break; +case SET7_D: M_SET(7,R->DE.B.h);break; case SET7_E: M_SET(7,R->DE.B.l);break; +case SET7_H: M_SET(7,R->HL.B.h);break; case SET7_L: M_SET(7,R->HL.B.l);break; +case SET7_xHL: I=RdZ80(R->HL.W);M_SET(7,I);WrZ80(R->HL.W,I);break; +case SET7_A: M_SET(7,R->AF.B.h);break; diff --git a/MCUME_teensy/teensyspeccy/CodesED.h b/MCUME_teensy/teensyspeccy/CodesED.h new file mode 100755 index 0000000..e6deae5 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/CodesED.h @@ -0,0 +1,304 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesED.h **/ +/** **/ +/** This file contains implementation for the ED table of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +/** This is a special patch for emulating BIOS calls: ********/ +case DB_FE: PatchZ80(R);break; +/*************************************************************/ + +case ADC_HL_BC: M_ADCW(BC);break; +case ADC_HL_DE: M_ADCW(DE);break; +case ADC_HL_HL: M_ADCW(HL);break; +case ADC_HL_SP: M_ADCW(SP);break; + +case SBC_HL_BC: M_SBCW(BC);break; +case SBC_HL_DE: M_SBCW(DE);break; +case SBC_HL_HL: M_SBCW(HL);break; +case SBC_HL_SP: M_SBCW(SP);break; + +case LD_xWORDe_HL: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->HL.B.l); + WrZ80(J.W,R->HL.B.h); + break; +case LD_xWORDe_DE: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->DE.B.l); + WrZ80(J.W,R->DE.B.h); + break; +case LD_xWORDe_BC: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->BC.B.l); + WrZ80(J.W,R->BC.B.h); + break; +case LD_xWORDe_SP: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->SP.B.l); + WrZ80(J.W,R->SP.B.h); + break; + +case LD_HL_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->HL.B.l=RdZ80(J.W++); + R->HL.B.h=RdZ80(J.W); + break; +case LD_DE_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->DE.B.l=RdZ80(J.W++); + R->DE.B.h=RdZ80(J.W); + break; +case LD_BC_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->BC.B.l=RdZ80(J.W++); + R->BC.B.h=RdZ80(J.W); + break; +case LD_SP_xWORDe: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->SP.B.l=RdZ80(J.W++); + R->SP.B.h=RdZ80(J.W); + break; + +case RRD: + I=RdZ80(R->HL.W); + J.B.l=(I>>4)|(R->AF.B.h<<4); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I&0x0F)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; +case RLD: + I=RdZ80(R->HL.W); + J.B.l=(I<<4)|(R->AF.B.h&0x0F); + WrZ80(R->HL.W,J.B.l); + R->AF.B.h=(I>>4)|(R->AF.B.h&0xF0); + R->AF.B.l=PZSTable[R->AF.B.h]|(R->AF.B.l&C_FLAG); + break; + +case LD_A_I: + R->AF.B.h=R->I; + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&IFF_2? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_A_R: + R->R++; + R->AF.B.h=(byte)(R->R-R->ICount); + R->AF.B.l=(R->AF.B.l&C_FLAG)|(R->IFF&IFF_2? P_FLAG:0)|ZSTable[R->AF.B.h]; + break; + +case LD_I_A: R->I=R->AF.B.h;break; +case LD_R_A: break; + +case IM_0: R->IFF&=~(IFF_IM1|IFF_IM2);break; +case IM_1: R->IFF=(R->IFF&~IFF_IM2)|IFF_IM1;break; +case IM_2: R->IFF=(R->IFF&~IFF_IM1)|IFF_IM2;break; + +case RETI: +case RETN: if(R->IFF&IFF_2) R->IFF|=IFF_1; else R->IFF&=~IFF_1; + M_RET;break; + +case NEG: I=R->AF.B.h;R->AF.B.h=0;M_SUB(I);break; + +case IN_B_xC: M_IN(R->BC.B.h);break; +case IN_C_xC: M_IN(R->BC.B.l);break; +case IN_D_xC: M_IN(R->DE.B.h);break; +case IN_E_xC: M_IN(R->DE.B.l);break; +case IN_H_xC: M_IN(R->HL.B.h);break; +case IN_L_xC: M_IN(R->HL.B.l);break; +case IN_A_xC: M_IN(R->AF.B.h);break; +case IN_F_xC: M_IN(J.B.l);break; + +case OUT_xC_B: OutZ80(R->BC.W,R->BC.B.h);break; +case OUT_xC_C: OutZ80(R->BC.W,R->BC.B.l);break; +case OUT_xC_D: OutZ80(R->BC.W,R->DE.B.h);break; +case OUT_xC_E: OutZ80(R->BC.W,R->DE.B.l);break; +case OUT_xC_H: OutZ80(R->BC.W,R->HL.B.h);break; +case OUT_xC_L: OutZ80(R->BC.W,R->HL.B.l);break; +case OUT_xC_A: OutZ80(R->BC.W,R->AF.B.h);break; + +case INI: + WrZ80(R->HL.W++,InZ80(R->BC.W)); + --R->BC.B.h; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INIR: + do + { + WrZ80(R->HL.W++,InZ80(R->BC.W)); + --R->BC.B.h;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case IND: + WrZ80(R->HL.W--,InZ80(R->BC.W)); + --R->BC.B.h; + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG); + break; + +case INDR: + do + { + WrZ80(R->HL.W--,InZ80(R->BC.W)); + --R->BC.B.h;R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) { R->AF.B.l=N_FLAG;R->PC.W-=2; } + else { R->AF.B.l=Z_FLAG|N_FLAG;R->ICount+=5; } + break; + +case OUTI: + --R->BC.B.h; + I=RdZ80(R->HL.W++); + OutZ80(R->BC.W,I); + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG)|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + break; + +case OTIR: + do + { + --R->BC.B.h; + I=RdZ80(R->HL.W++); + OutZ80(R->BC.W,I); + R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) + { + R->AF.B.l=N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->PC.W-=2; + } + else + { + R->AF.B.l=Z_FLAG|N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->ICount+=5; + } + break; + +case OUTD: + --R->BC.B.h; + I=RdZ80(R->HL.W--); + OutZ80(R->BC.W,I); + R->AF.B.l=N_FLAG|(R->BC.B.h? 0:Z_FLAG)|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + break; + +case OTDR: + do + { + --R->BC.B.h; + I=RdZ80(R->HL.W--); + OutZ80(R->BC.W,I); + R->ICount-=21; + } + while(R->BC.B.h&&(R->ICount>0)); + if(R->BC.B.h) + { + R->AF.B.l=N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->PC.W-=2; + } + else + { + R->AF.B.l=Z_FLAG|N_FLAG|(R->HL.B.l+I>255? (C_FLAG|H_FLAG):0); + R->ICount+=5; + } + break; + +case LDI: + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + --R->BC.W; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDIR: + do + { + WrZ80(R->DE.W++,RdZ80(R->HL.W++)); + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case LDD: + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + --R->BC.W; + R->AF.B.l=(R->AF.B.l&~(N_FLAG|H_FLAG|P_FLAG))|(R->BC.W? P_FLAG:0); + break; + +case LDDR: + do + { + WrZ80(R->DE.W--,RdZ80(R->HL.W--)); + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&(R->ICount>0)); + R->AF.B.l&=~(N_FLAG|H_FLAG|P_FLAG); + if(R->BC.W) { R->AF.B.l|=N_FLAG;R->PC.W-=2; } + else R->ICount+=5; + break; + +case CPI: + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + --R->BC.W; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPIR: + do + { + I=RdZ80(R->HL.W++); + J.B.l=R->AF.B.h-I; + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&J.B.l&&(R->ICount>0)); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; + +case CPD: + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + --R->BC.W; + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + break; + +case CPDR: + do + { + I=RdZ80(R->HL.W--); + J.B.l=R->AF.B.h-I; + --R->BC.W;R->ICount-=21; + } + while(R->BC.W&&J.B.l); + R->AF.B.l = + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[J.B.l]| + ((R->AF.B.h^I^J.B.l)&H_FLAG)|(R->BC.W? P_FLAG:0); + if(R->BC.W&&J.B.l) R->PC.W-=2; else R->ICount+=5; + break; diff --git a/MCUME_teensy/teensyspeccy/CodesXCB.h b/MCUME_teensy/teensyspeccy/CodesXCB.h new file mode 100755 index 0000000..d0873ce --- /dev/null +++ b/MCUME_teensy/teensyspeccy/CodesXCB.h @@ -0,0 +1,64 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXCB.h **/ +/** **/ +/** This file contains implementation for FD/DD-CB tables **/ +/** of Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case RLC_xHL: I=RdZ80(J.W);M_RLC(I);WrZ80(J.W,I);break; +case RRC_xHL: I=RdZ80(J.W);M_RRC(I);WrZ80(J.W,I);break; +case RL_xHL: I=RdZ80(J.W);M_RL(I);WrZ80(J.W,I);break; +case RR_xHL: I=RdZ80(J.W);M_RR(I);WrZ80(J.W,I);break; +case SLA_xHL: I=RdZ80(J.W);M_SLA(I);WrZ80(J.W,I);break; +case SRA_xHL: I=RdZ80(J.W);M_SRA(I);WrZ80(J.W,I);break; +case SLL_xHL: I=RdZ80(J.W);M_SLL(I);WrZ80(J.W,I);break; +case SRL_xHL: I=RdZ80(J.W);M_SRL(I);WrZ80(J.W,I);break; + +case BIT0_B: case BIT0_C: case BIT0_D: case BIT0_E: +case BIT0_H: case BIT0_L: case BIT0_A: +case BIT0_xHL: I=RdZ80(J.W);M_BIT(0,I);break; +case BIT1_B: case BIT1_C: case BIT1_D: case BIT1_E: +case BIT1_H: case BIT1_L: case BIT1_A: +case BIT1_xHL: I=RdZ80(J.W);M_BIT(1,I);break; +case BIT2_B: case BIT2_C: case BIT2_D: case BIT2_E: +case BIT2_H: case BIT2_L: case BIT2_A: +case BIT2_xHL: I=RdZ80(J.W);M_BIT(2,I);break; +case BIT3_B: case BIT3_C: case BIT3_D: case BIT3_E: +case BIT3_H: case BIT3_L: case BIT3_A: +case BIT3_xHL: I=RdZ80(J.W);M_BIT(3,I);break; +case BIT4_B: case BIT4_C: case BIT4_D: case BIT4_E: +case BIT4_H: case BIT4_L: case BIT4_A: +case BIT4_xHL: I=RdZ80(J.W);M_BIT(4,I);break; +case BIT5_B: case BIT5_C: case BIT5_D: case BIT5_E: +case BIT5_H: case BIT5_L: case BIT5_A: +case BIT5_xHL: I=RdZ80(J.W);M_BIT(5,I);break; +case BIT6_B: case BIT6_C: case BIT6_D: case BIT6_E: +case BIT6_H: case BIT6_L: case BIT6_A: +case BIT6_xHL: I=RdZ80(J.W);M_BIT(6,I);break; +case BIT7_B: case BIT7_C: case BIT7_D: case BIT7_E: +case BIT7_H: case BIT7_L: case BIT7_A: +case BIT7_xHL: I=RdZ80(J.W);M_BIT(7,I);break; + +case RES0_xHL: I=RdZ80(J.W);M_RES(0,I);WrZ80(J.W,I);break; +case RES1_xHL: I=RdZ80(J.W);M_RES(1,I);WrZ80(J.W,I);break; +case RES2_xHL: I=RdZ80(J.W);M_RES(2,I);WrZ80(J.W,I);break; +case RES3_xHL: I=RdZ80(J.W);M_RES(3,I);WrZ80(J.W,I);break; +case RES4_xHL: I=RdZ80(J.W);M_RES(4,I);WrZ80(J.W,I);break; +case RES5_xHL: I=RdZ80(J.W);M_RES(5,I);WrZ80(J.W,I);break; +case RES6_xHL: I=RdZ80(J.W);M_RES(6,I);WrZ80(J.W,I);break; +case RES7_xHL: I=RdZ80(J.W);M_RES(7,I);WrZ80(J.W,I);break; + +case SET0_xHL: I=RdZ80(J.W);M_SET(0,I);WrZ80(J.W,I);break; +case SET1_xHL: I=RdZ80(J.W);M_SET(1,I);WrZ80(J.W,I);break; +case SET2_xHL: I=RdZ80(J.W);M_SET(2,I);WrZ80(J.W,I);break; +case SET3_xHL: I=RdZ80(J.W);M_SET(3,I);WrZ80(J.W,I);break; +case SET4_xHL: I=RdZ80(J.W);M_SET(4,I);WrZ80(J.W,I);break; +case SET5_xHL: I=RdZ80(J.W);M_SET(5,I);WrZ80(J.W,I);break; +case SET6_xHL: I=RdZ80(J.W);M_SET(6,I);WrZ80(J.W,I);break; +case SET7_xHL: I=RdZ80(J.W);M_SET(7,I);WrZ80(J.W,I);break; diff --git a/MCUME_teensy/teensyspeccy/CodesXX.h b/MCUME_teensy/teensyspeccy/CodesXX.h new file mode 100755 index 0000000..970b30e --- /dev/null +++ b/MCUME_teensy/teensyspeccy/CodesXX.h @@ -0,0 +1,396 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** CodesXX.h **/ +/** **/ +/** This file contains implementation for FD/DD tables of **/ +/** Z80 commands. It is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +case JR_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_NC: if(R->AF.B.l&C_FLAG) R->PC.W++; else { R->ICount-=5;M_JR; } break; +case JR_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; +case JR_C: if(R->AF.B.l&C_FLAG) { R->ICount-=5;M_JR; } else R->PC.W++; break; + +case JP_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { M_JP; } break; +case JP_Z: if(R->AF.B.l&Z_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_C: if(R->AF.B.l&C_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_PE: if(R->AF.B.l&P_FLAG) { M_JP; } else R->PC.W+=2; break; +case JP_M: if(R->AF.B.l&S_FLAG) { M_JP; } else R->PC.W+=2; break; + +case RET_NZ: if(!(R->AF.B.l&Z_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_NC: if(!(R->AF.B.l&C_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_PO: if(!(R->AF.B.l&P_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_P: if(!(R->AF.B.l&S_FLAG)) { R->ICount-=6;M_RET; } break; +case RET_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=6;M_RET; } break; +case RET_C: if(R->AF.B.l&C_FLAG) { R->ICount-=6;M_RET; } break; +case RET_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=6;M_RET; } break; +case RET_M: if(R->AF.B.l&S_FLAG) { R->ICount-=6;M_RET; } break; + +case CALL_NZ: if(R->AF.B.l&Z_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_NC: if(R->AF.B.l&C_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_PO: if(R->AF.B.l&P_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_P: if(R->AF.B.l&S_FLAG) R->PC.W+=2; else { R->ICount-=7;M_CALL; } break; +case CALL_Z: if(R->AF.B.l&Z_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_C: if(R->AF.B.l&C_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_PE: if(R->AF.B.l&P_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; +case CALL_M: if(R->AF.B.l&S_FLAG) { R->ICount-=7;M_CALL; } else R->PC.W+=2; break; + +case ADD_B: M_ADD(R->BC.B.h);break; +case ADD_C: M_ADD(R->BC.B.l);break; +case ADD_D: M_ADD(R->DE.B.h);break; +case ADD_E: M_ADD(R->DE.B.l);break; +case ADD_H: M_ADD(R->XX.B.h);break; +case ADD_L: M_ADD(R->XX.B.l);break; +case ADD_A: M_ADD(R->AF.B.h);break; +case ADD_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_ADD(I);break; +case ADD_BYTE: I=OpZ80(R->PC.W++);M_ADD(I);break; + +case SUB_B: M_SUB(R->BC.B.h);break; +case SUB_C: M_SUB(R->BC.B.l);break; +case SUB_D: M_SUB(R->DE.B.h);break; +case SUB_E: M_SUB(R->DE.B.l);break; +case SUB_H: M_SUB(R->XX.B.h);break; +case SUB_L: M_SUB(R->XX.B.l);break; +case SUB_A: R->AF.B.h=0;R->AF.B.l=N_FLAG|Z_FLAG;break; +case SUB_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_SUB(I);break; +case SUB_BYTE: I=OpZ80(R->PC.W++);M_SUB(I);break; + +case AND_B: M_AND(R->BC.B.h);break; +case AND_C: M_AND(R->BC.B.l);break; +case AND_D: M_AND(R->DE.B.h);break; +case AND_E: M_AND(R->DE.B.l);break; +case AND_H: M_AND(R->XX.B.h);break; +case AND_L: M_AND(R->XX.B.l);break; +case AND_A: M_AND(R->AF.B.h);break; +case AND_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_AND(I);break; +case AND_BYTE: I=OpZ80(R->PC.W++);M_AND(I);break; + +case OR_B: M_OR(R->BC.B.h);break; +case OR_C: M_OR(R->BC.B.l);break; +case OR_D: M_OR(R->DE.B.h);break; +case OR_E: M_OR(R->DE.B.l);break; +case OR_H: M_OR(R->XX.B.h);break; +case OR_L: M_OR(R->XX.B.l);break; +case OR_A: M_OR(R->AF.B.h);break; +case OR_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_OR(I);break; +case OR_BYTE: I=OpZ80(R->PC.W++);M_OR(I);break; + +case ADC_B: M_ADC(R->BC.B.h);break; +case ADC_C: M_ADC(R->BC.B.l);break; +case ADC_D: M_ADC(R->DE.B.h);break; +case ADC_E: M_ADC(R->DE.B.l);break; +case ADC_H: M_ADC(R->XX.B.h);break; +case ADC_L: M_ADC(R->XX.B.l);break; +case ADC_A: M_ADC(R->AF.B.h);break; +case ADC_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_ADC(I);break; +case ADC_BYTE: I=OpZ80(R->PC.W++);M_ADC(I);break; + +case SBC_B: M_SBC(R->BC.B.h);break; +case SBC_C: M_SBC(R->BC.B.l);break; +case SBC_D: M_SBC(R->DE.B.h);break; +case SBC_E: M_SBC(R->DE.B.l);break; +case SBC_H: M_SBC(R->XX.B.h);break; +case SBC_L: M_SBC(R->XX.B.l);break; +case SBC_A: M_SBC(R->AF.B.h);break; +case SBC_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_SBC(I);break; +case SBC_BYTE: I=OpZ80(R->PC.W++);M_SBC(I);break; + +case XOR_B: M_XOR(R->BC.B.h);break; +case XOR_C: M_XOR(R->BC.B.l);break; +case XOR_D: M_XOR(R->DE.B.h);break; +case XOR_E: M_XOR(R->DE.B.l);break; +case XOR_H: M_XOR(R->XX.B.h);break; +case XOR_L: M_XOR(R->XX.B.l);break; +case XOR_A: R->AF.B.h=0;R->AF.B.l=P_FLAG|Z_FLAG;break; +case XOR_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_XOR(I);break; +case XOR_BYTE: I=OpZ80(R->PC.W++);M_XOR(I);break; + +case CP_B: M_CP(R->BC.B.h);break; +case CP_C: M_CP(R->BC.B.l);break; +case CP_D: M_CP(R->DE.B.h);break; +case CP_E: M_CP(R->DE.B.l);break; +case CP_H: M_CP(R->XX.B.h);break; +case CP_L: M_CP(R->XX.B.l);break; +case CP_A: R->AF.B.l=N_FLAG|Z_FLAG;break; +case CP_xHL: I=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++)); + M_CP(I);break; +case CP_BYTE: I=OpZ80(R->PC.W++);M_CP(I);break; + +case LD_BC_WORD: M_LDWORD(BC);break; +case LD_DE_WORD: M_LDWORD(DE);break; +case LD_HL_WORD: M_LDWORD(XX);break; +case LD_SP_WORD: M_LDWORD(SP);break; + +case LD_PC_HL: R->PC.W=R->XX.W;JumpZ80(R->PC.W);break; +case LD_SP_HL: R->SP.W=R->XX.W;break; +case LD_A_xBC: R->AF.B.h=RdZ80(R->BC.W);break; +case LD_A_xDE: R->AF.B.h=RdZ80(R->DE.W);break; + +case ADD_HL_BC: M_ADDW(XX,BC);break; +case ADD_HL_DE: M_ADDW(XX,DE);break; +case ADD_HL_HL: M_ADDW(XX,XX);break; +case ADD_HL_SP: M_ADDW(XX,SP);break; + +case DEC_BC: R->BC.W--;break; +case DEC_DE: R->DE.W--;break; +case DEC_HL: R->XX.W--;break; +case DEC_SP: R->SP.W--;break; + +case INC_BC: R->BC.W++;break; +case INC_DE: R->DE.W++;break; +case INC_HL: R->XX.W++;break; +case INC_SP: R->SP.W++;break; + +case DEC_B: M_DEC(R->BC.B.h);break; +case DEC_C: M_DEC(R->BC.B.l);break; +case DEC_D: M_DEC(R->DE.B.h);break; +case DEC_E: M_DEC(R->DE.B.l);break; +case DEC_H: M_DEC(R->XX.B.h);break; +case DEC_L: M_DEC(R->XX.B.l);break; +case DEC_A: M_DEC(R->AF.B.h);break; +case DEC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_DEC(I); + WrZ80(R->XX.W+(offset)OpZ80(R->PC.W++),I); + break; + +case INC_B: M_INC(R->BC.B.h);break; +case INC_C: M_INC(R->BC.B.l);break; +case INC_D: M_INC(R->DE.B.h);break; +case INC_E: M_INC(R->DE.B.l);break; +case INC_H: M_INC(R->XX.B.h);break; +case INC_L: M_INC(R->XX.B.l);break; +case INC_A: M_INC(R->AF.B.h);break; +case INC_xHL: I=RdZ80(R->XX.W+(offset)RdZ80(R->PC.W));M_INC(I); + WrZ80(R->XX.W+(offset)OpZ80(R->PC.W++),I); + break; + +case RLCA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|I; + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RLA: + I=(R->AF.B.h&0x80? C_FLAG:0); + R->AF.B.h=(R->AF.B.h<<1)|(R->AF.B.l&C_FLAG); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRCA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(I? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; +case RRA: + I=R->AF.B.h&0x01; + R->AF.B.h=(R->AF.B.h>>1)|(R->AF.B.l&C_FLAG? 0x80:0); + R->AF.B.l=(R->AF.B.l&~(C_FLAG|N_FLAG|H_FLAG))|I; + break; + +case RST00: M_RST(0x0000);break; +case RST08: M_RST(0x0008);break; +case RST10: M_RST(0x0010);break; +case RST18: M_RST(0x0018);break; +case RST20: M_RST(0x0020);break; +case RST28: M_RST(0x0028);break; +case RST30: M_RST(0x0030);break; +case RST38: M_RST(0x0038);break; + +case PUSH_BC: M_PUSH(BC);break; +case PUSH_DE: M_PUSH(DE);break; +case PUSH_HL: M_PUSH(XX);break; +case PUSH_AF: M_PUSH(AF);break; + +case POP_BC: M_POP(BC);break; +case POP_DE: M_POP(DE);break; +case POP_HL: M_POP(XX);break; +case POP_AF: M_POP(AF);break; + +case DJNZ: if(--R->BC.B.h) { R->ICount-=5;M_JR; } else R->PC.W++;break; +case JP: M_JP;break; +case JR: M_JR;break; +case CALL: M_CALL;break; +case RET: M_RET;break; +case SCF: S(C_FLAG);R(N_FLAG|H_FLAG);break; +case CPL: R->AF.B.h=~R->AF.B.h;S(N_FLAG|H_FLAG);break; +case NOP: break; +case OUTA: I=OpZ80(R->PC.W++);OutZ80(I|(R->AF.W&0xFF00),R->AF.B.h);break; +case INA: I=OpZ80(R->PC.W++);R->AF.B.h=InZ80(I|(R->AF.W&0xFF00));break; + +case HALT: + R->PC.W--; + R->IFF|=IFF_HALT; + R->IBackup=0; + R->ICount=0; + break; + +case DI: + if(R->IFF&IFF_EI) R->ICount+=R->IBackup-1; + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + break; + +case EI: + if(!(R->IFF&(IFF_1|IFF_EI))) + { + R->IFF|=IFF_2|IFF_EI; + R->IBackup=R->ICount; + R->ICount=1; + } + break; + +case CCF: + R->AF.B.l^=C_FLAG;R(N_FLAG|H_FLAG); + R->AF.B.l|=R->AF.B.l&C_FLAG? 0:H_FLAG; + break; + +case EXX: + J.W=R->BC.W;R->BC.W=R->BC1.W;R->BC1.W=J.W; + J.W=R->DE.W;R->DE.W=R->DE1.W;R->DE1.W=J.W; + J.W=R->HL.W;R->HL.W=R->HL1.W;R->HL1.W=J.W; + break; + +case EX_DE_HL: J.W=R->DE.W;R->DE.W=R->HL.W;R->HL.W=J.W;break; +case EX_AF_AF: J.W=R->AF.W;R->AF.W=R->AF1.W;R->AF1.W=J.W;break; + +case LD_B_B: R->BC.B.h=R->BC.B.h;break; +case LD_C_B: R->BC.B.l=R->BC.B.h;break; +case LD_D_B: R->DE.B.h=R->BC.B.h;break; +case LD_E_B: R->DE.B.l=R->BC.B.h;break; +case LD_H_B: R->XX.B.h=R->BC.B.h;break; +case LD_L_B: R->XX.B.l=R->BC.B.h;break; +case LD_A_B: R->AF.B.h=R->BC.B.h;break; +case LD_xHL_B: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.h);break; + +case LD_B_C: R->BC.B.h=R->BC.B.l;break; +case LD_C_C: R->BC.B.l=R->BC.B.l;break; +case LD_D_C: R->DE.B.h=R->BC.B.l;break; +case LD_E_C: R->DE.B.l=R->BC.B.l;break; +case LD_H_C: R->XX.B.h=R->BC.B.l;break; +case LD_L_C: R->XX.B.l=R->BC.B.l;break; +case LD_A_C: R->AF.B.h=R->BC.B.l;break; +case LD_xHL_C: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->BC.B.l);break; + +case LD_B_D: R->BC.B.h=R->DE.B.h;break; +case LD_C_D: R->BC.B.l=R->DE.B.h;break; +case LD_D_D: R->DE.B.h=R->DE.B.h;break; +case LD_E_D: R->DE.B.l=R->DE.B.h;break; +case LD_H_D: R->XX.B.h=R->DE.B.h;break; +case LD_L_D: R->XX.B.l=R->DE.B.h;break; +case LD_A_D: R->AF.B.h=R->DE.B.h;break; +case LD_xHL_D: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.h);break; + +case LD_B_E: R->BC.B.h=R->DE.B.l;break; +case LD_C_E: R->BC.B.l=R->DE.B.l;break; +case LD_D_E: R->DE.B.h=R->DE.B.l;break; +case LD_E_E: R->DE.B.l=R->DE.B.l;break; +case LD_H_E: R->XX.B.h=R->DE.B.l;break; +case LD_L_E: R->XX.B.l=R->DE.B.l;break; +case LD_A_E: R->AF.B.h=R->DE.B.l;break; +case LD_xHL_E: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->DE.B.l);break; + +case LD_B_H: R->BC.B.h=R->XX.B.h;break; +case LD_C_H: R->BC.B.l=R->XX.B.h;break; +case LD_D_H: R->DE.B.h=R->XX.B.h;break; +case LD_E_H: R->DE.B.l=R->XX.B.h;break; +case LD_H_H: R->XX.B.h=R->XX.B.h;break; +case LD_L_H: R->XX.B.l=R->XX.B.h;break; +case LD_A_H: R->AF.B.h=R->XX.B.h;break; +case LD_xHL_H: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.h);break; + +case LD_B_L: R->BC.B.h=R->XX.B.l;break; +case LD_C_L: R->BC.B.l=R->XX.B.l;break; +case LD_D_L: R->DE.B.h=R->XX.B.l;break; +case LD_E_L: R->DE.B.l=R->XX.B.l;break; +case LD_H_L: R->XX.B.h=R->XX.B.l;break; +case LD_L_L: R->XX.B.l=R->XX.B.l;break; +case LD_A_L: R->AF.B.h=R->XX.B.l;break; +case LD_xHL_L: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->HL.B.l);break; + +case LD_B_A: R->BC.B.h=R->AF.B.h;break; +case LD_C_A: R->BC.B.l=R->AF.B.h;break; +case LD_D_A: R->DE.B.h=R->AF.B.h;break; +case LD_E_A: R->DE.B.l=R->AF.B.h;break; +case LD_H_A: R->XX.B.h=R->AF.B.h;break; +case LD_L_A: R->XX.B.l=R->AF.B.h;break; +case LD_A_A: R->AF.B.h=R->AF.B.h;break; +case LD_xHL_A: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h);break; + +case LD_xBC_A: WrZ80(R->BC.W,R->AF.B.h);break; +case LD_xDE_A: WrZ80(R->DE.W,R->AF.B.h);break; + +case LD_B_xHL: R->BC.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_C_xHL: R->BC.B.l=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_D_xHL: R->DE.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_E_xHL: R->DE.B.l=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_H_xHL: R->HL.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_L_xHL: R->HL.B.l=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; +case LD_A_xHL: R->AF.B.h=RdZ80(R->XX.W+(offset)OpZ80(R->PC.W++));break; + +case LD_B_BYTE: R->BC.B.h=OpZ80(R->PC.W++);break; +case LD_C_BYTE: R->BC.B.l=OpZ80(R->PC.W++);break; +case LD_D_BYTE: R->DE.B.h=OpZ80(R->PC.W++);break; +case LD_E_BYTE: R->DE.B.l=OpZ80(R->PC.W++);break; +case LD_H_BYTE: R->XX.B.h=OpZ80(R->PC.W++);break; +case LD_L_BYTE: R->XX.B.l=OpZ80(R->PC.W++);break; +case LD_A_BYTE: R->AF.B.h=OpZ80(R->PC.W++);break; +case LD_xHL_BYTE: J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + WrZ80(J.W,OpZ80(R->PC.W++));break; + +case LD_xWORD_HL: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W++,R->XX.B.l); + WrZ80(J.W,R->XX.B.h); + break; + +case LD_HL_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->XX.B.l=RdZ80(J.W++); + R->XX.B.h=RdZ80(J.W); + break; + +case LD_A_xWORD: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + R->AF.B.h=RdZ80(J.W); + break; + +case LD_xWORD_A: + J.B.l=OpZ80(R->PC.W++); + J.B.h=OpZ80(R->PC.W++); + WrZ80(J.W,R->AF.B.h); + break; + +case EX_HL_xSP: + J.B.l=RdZ80(R->SP.W);WrZ80(R->SP.W++,R->XX.B.l); + J.B.h=RdZ80(R->SP.W);WrZ80(R->SP.W--,R->XX.B.h); + R->XX.W=J.W; + break; + +case DAA: + J.W=R->AF.B.h; + if(R->AF.B.l&C_FLAG) J.W|=256; + if(R->AF.B.l&H_FLAG) J.W|=512; + if(R->AF.B.l&N_FLAG) J.W|=1024; + R->AF.W=DAATable[J.W]; + break; diff --git a/MCUME_teensy/teensyspeccy/ConDebug.c b/MCUME_teensy/teensyspeccy/ConDebug.c new file mode 100755 index 0000000..4fa78f0 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/ConDebug.c @@ -0,0 +1,276 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** ConDebug.c **/ +/** **/ +/** This file contains a console version of the built-in **/ +/** debugger, using EMULib's Console.c. When -DCONDEBUG is **/ +/** ommitted, ConDebug.c just includes the default command **/ +/** line based debugger (Debug.c). **/ +/** **/ +/** Copyright (C) Marat Fayzullin 2005-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifdef DEBUG + +#ifndef CONDEBUG +/** Normal DebugZ80() ****************************************/ +/** When CONDEBUG #undefined, we use plain command line. **/ +/*************************************************************/ +#include "Debug.c" + +#else +/** Console DebugZ80() ***************************************/ +/** When CONDEBUG #defined, we use EMULib console. **/ +/*************************************************************/ + +#include "Z80.h" +#include "Console.h" +#include + +#define DebugZ80 OriginalDebugZ80 +#include "Debug.c" +#undef DebugZ80 + +#define CLR_BACK PIXEL(255,255,255) +#define CLR_TEXT PIXEL(0,0,0) +#define CLR_DIALOG PIXEL(0,100,0) +#define CLR_PC PIXEL(255,0,0) +#define CLR_SP PIXEL(0,0,100) + +static byte ChrDump(byte C) +{ + return((C>=32)&&(C<128)? C:'.'); +} + +/** DebugZ80() ***********************************************/ +/** This function should exist if DEBUG is #defined. When **/ +/** Trace!=0, it is called after each command executed by **/ +/** the CPU, and given the Z80 registers. **/ +/*************************************************************/ +byte DebugZ80(Z80 *R) +{ + char S[1024]; + word A,Addr,ABuf[20]; + int J,I,K,X,Y,MemoryDump,DrawWindow,ExitNow; + + /* If we don't have enough screen estate... */ + if((VideoW<32*8)||(VideoH<23*8)) + { + /* Show warning message */ + CONMsg( + -1,-1,-1,-1,PIXEL(255,255,255),PIXEL(255,0,0), + "Error","Screen is\0too small!\0\0" + ); + /* Continue emulation */ + R->Trace=0; + return(1); + } + + X = ((VideoW>>3)-32)>>1; + Y = ((VideoH>>3)-23)>>1; + Addr = R->PC.W; + A = ~Addr; + K = 0; + + for(DrawWindow=1,MemoryDump=ExitNow=0;!ExitNow&&VideoImg;) + { + if(DrawWindow) + { + CONWindow(X,Y,32,23,CLR_TEXT,CLR_BACK,"Z80 Debugger"); + + sprintf(S,"PC %04X",R->PC.W); + CONSetColor(CLR_BACK,CLR_PC); + CONPrint(X+24,Y+18,S); + sprintf(S,"SP %04X",R->SP.W); + CONSetColor(CLR_BACK,CLR_SP); + CONPrint(X+24,Y+19,S); + + CONSetColor(CLR_TEXT,CLR_BACK); + sprintf(S, + " %c%c%c%c%c%c\n\n" + "AF %04X\nBC %04X\nDE %04X\nHL %04X\nIX %04X\nIY %04X\n\n" + "AF'%04X\nBC'%04X\nDE'%04X\nHL'%04X\n\n" + "IR %02X%02X", + R->AF.B.l&0x80? 'S':'.',R->AF.B.l&0x40? 'Z':'.',R->AF.B.l&0x10? 'H':'.', + R->AF.B.l&0x04? 'P':'.',R->AF.B.l&0x02? 'N':'.',R->AF.B.l&0x01? 'C':'.', + R->AF.W,R->BC.W,R->DE.W,R->HL.W, + R->IX.W,R->IY.W, + R->AF1.W,R->BC1.W,R->DE1.W,R->HL1.W, + R->I,R->R + ); + CONPrint(X+24,Y+2,S); + sprintf(S, + "%s %s", + R->IFF&0x04? "IM2":R->IFF&0x02? "IM1":"IM0", + R->IFF&0x01? "EI":"DI" + ); + CONPrint(X+25,Y+21,S); + DrawWindow=0; + A=~Addr; + } + + /* If top address has changed... */ + if(A!=Addr) + { + /* Clear display */ + CONBox((X+1)<<3,(Y+2)<<3,23*8,20*8,CLR_BACK); + + if(MemoryDump) + { + /* Draw memory dump */ + for(J=0,A=Addr;J<20;J++,A+=4) + { + if(A==R->PC.W) CONSetColor(CLR_BACK,CLR_PC); + else if(A==R->SP.W) CONSetColor(CLR_BACK,CLR_SP); + else CONSetColor(CLR_TEXT,CLR_BACK); + sprintf(S,"%04X%c",A,A==R->PC.W? CON_MORE:A==R->SP.W? CON_LESS:':'); + CONPrint(X+1,Y+J+2,S); + + CONSetColor(CLR_TEXT,CLR_BACK); + sprintf(S, + "%02X %02X %02X %02X %c%c%c%c", + RdZ80(A),RdZ80(A+1),RdZ80(A+2),RdZ80(A+3), + ChrDump(RdZ80(A)),ChrDump(RdZ80(A+1)), + ChrDump(RdZ80(A+2)),ChrDump(RdZ80(A+3)) + ); + CONPrint(X+7,Y+J+2,S); + } + } + else + { + /* Draw listing */ + for(J=0,A=Addr;J<20;J++) + { + if(A==R->PC.W) CONSetColor(CLR_BACK,CLR_PC); + else if(A==R->SP.W) CONSetColor(CLR_BACK,CLR_SP); + else CONSetColor(CLR_TEXT,CLR_BACK); + sprintf(S,"%04X%c",A,A==R->PC.W? CON_MORE:A==R->SP.W? CON_LESS:':'); + CONPrint(X+1,Y+J+2,S); + + ABuf[J]=A; + A+=DAsm(S,A); + + CONSetColor(CLR_TEXT,CLR_BACK); + CONPrintN(X+7,Y+J+2,S,23); + } + } + + /* Display redrawn */ + A=Addr; + } + + /* Draw pointer */ + CONChar(X+6,Y+K+2,CON_ARROW); + + /* Show screen buffer */ + ShowVideo(); + + /* Get key code */ + I=WaitKey(); + + /* Clear pointer */ + CONChar(X+6,Y+K+2,' '); + + /* Get and process key code */ + switch(I) + { + case 'H': + CONMsg( + -1,-1,-1,-1, + CLR_BACK,CLR_DIALOG, + "Debugger Help", + "ENTER - Execute next opcode\0" + " UP - Previous opcode\0" + " DOWN - Next opcode\0" + " LEFT - Page up\0" + "RIGHT - Page down\0" + " H - This help page\0" + " G - Go to address\0" + " D - Disassembler view\0" + " M - Memory dump view\0" + " S - Show stack\0" + " J - Jump to cursor\0" + " R - Run to cursor\0" + " C - Continue execution\0" + " Q - Quit emulator\0" + ); + DrawWindow=1; + break; + case CON_UP: + if(K) --K; + else + if(MemoryDump) Addr-=4; + else for(--Addr;Addr+DAsm(S,Addr)>A;--Addr); + break; + case CON_DOWN: + if(K<19) ++K; + else + if(MemoryDump) Addr+=4; + else Addr+=DAsm(S,Addr); + break; + case CON_LEFT: + if(MemoryDump) + Addr-=4*20; + else + { + for(I=20,Addr=~A;(Addr>A)||((A^Addr)&~Addr&0x8000);++I) + for(J=0,Addr=A-I;J<20;++J) Addr+=DAsm(S,Addr); + Addr=A-I+1; + } + break; + case CON_RIGHT: + if(MemoryDump) + Addr+=4*20; + else + for(J=0;J<20;++J) Addr+=DAsm(S,Addr); + break; + case CON_OK: + ExitNow=1; + break; + case 'Q': + return(0); + case CON_EXIT: + case 'C': + R->Trap=0xFFFF; + R->Trace=0; + ExitNow=1; + break; + case 'R': + R->Trap=ABuf[K]; + R->Trace=0; + ExitNow=1; + break; + case 'M': + MemoryDump=1; + A=~Addr; + break; + case 'S': + MemoryDump=1; + Addr=R->SP.W; + K=0; + A=~Addr; + break; + case 'D': + MemoryDump=0; + A=~Addr; + break; + case 'G': + if(CONInput(-1,-1,CLR_BACK,CLR_DIALOG,"Go to Address:",S,5|CON_HEX)) + { Addr=strtol(S,0,16);K=0; } + DrawWindow=1; + break; + case 'J': + R->PC.W=ABuf[K]; + A=~Addr; + break; + } + } + + /* Continue emulation */ + return(1); +} + +#endif /* CONDEBUG */ +#endif /* DEBUG */ diff --git a/MCUME_teensy/teensyspeccy/Tables.h b/MCUME_teensy/teensyspeccy/Tables.h new file mode 100755 index 0000000..ba1ebee --- /dev/null +++ b/MCUME_teensy/teensyspeccy/Tables.h @@ -0,0 +1,447 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Tables.h **/ +/** **/ +/** This file contains tables of used by Z80 emulation to **/ +/** compute SIGN,ZERO, PARITY flags, and decimal correction **/ +/** There are also timing tables for Z80 opcodes. This file **/ +/** is included from Z80.c. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +static const byte Cycles[256] = +{ + 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, + 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4, + 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, + 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, + 5,10,10,10,10,11, 7,11, 5,10,10, 0,10,17, 7,11, + 5,10,10,11,10,11, 7,11, 5, 4,10,11,10, 0, 7,11, + 5,10,10,19,10,11, 7,11, 5, 4,10, 4,10, 0, 7,11, + 5,10,10, 4,10,11, 7,11, 5, 6,10, 4,10, 0, 7,11 +}; + +static const byte CyclesCB[256] = +{ + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, + 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8 +}; + +static const byte CyclesED[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12,12,15,20, 8,14, 8, 9,12,12,15,20, 0,14, 0, 9, + 12,12,15,20, 0, 0, 8, 9,12,12,15,20, 0, 0, 8, 9, + 12,12,15,20, 0, 0, 0,18,12,12,15,20, 0, 0, 0,18, + 12, 0,15,20, 0, 0, 0, 0,12,12,15,20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16,16,16,16, 0, 0, 0, 0,16,16,16,16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const byte CyclesXX[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0,14,20,10, 9, 9, 9, 0, 0,15,20,10, 9, 9, 9, 0, + 0, 0, 0, 0,23,23,19, 0, 0,15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 9, 9, 9, 9, 9, 9,19, 9, 9, 9, 9, 9, 9, 9,19, 9, + 19,19,19,19,19,19,19,19, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 9, 9,19, 0, 0, 0, 0, 0, 9, 9,19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,14, 0,23, 0,15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0 +}; + +static const byte CyclesXXCB[256] = +{ + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0, + 0, 0, 0, 0, 0, 0,23, 0, 0, 0, 0, 0, 0, 0,23, 0 +}; + +static const byte ZSTable[256] = +{ + Z_FLAG,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG, + S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG,S_FLAG +}; + +static const byte PZSTable[256] = +{ + Z_FLAG|P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0,0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG, + 0,P_FLAG,P_FLAG,0,P_FLAG,0,0,P_FLAG,P_FLAG,0,0,P_FLAG,0,P_FLAG,P_FLAG,0, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG,S_FLAG|P_FLAG,S_FLAG|P_FLAG,S_FLAG, + S_FLAG|P_FLAG,S_FLAG,S_FLAG,S_FLAG|P_FLAG +}; + +static const word DAATable[2048] = +{ + 0x0044,0x0100,0x0200,0x0304,0x0400,0x0504,0x0604,0x0700, + 0x0808,0x090C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1000,0x1104,0x1204,0x1300,0x1404,0x1500,0x1600,0x1704, + 0x180C,0x1908,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2020,0x2124,0x2224,0x2320,0x2424,0x2520,0x2620,0x2724, + 0x282C,0x2928,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3024,0x3120,0x3220,0x3324,0x3420,0x3524,0x3624,0x3720, + 0x3828,0x392C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4000,0x4104,0x4204,0x4300,0x4404,0x4500,0x4600,0x4704, + 0x480C,0x4908,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5004,0x5100,0x5200,0x5304,0x5400,0x5504,0x5604,0x5700, + 0x5808,0x590C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6024,0x6120,0x6220,0x6324,0x6420,0x6524,0x6624,0x6720, + 0x6828,0x692C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7020,0x7124,0x7224,0x7320,0x7424,0x7520,0x7620,0x7724, + 0x782C,0x7928,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8080,0x8184,0x8284,0x8380,0x8484,0x8580,0x8680,0x8784, + 0x888C,0x8988,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9084,0x9180,0x9280,0x9384,0x9480,0x9584,0x9684,0x9780, + 0x9888,0x998C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6025,0x6121,0x6221,0x6325,0x6421,0x6525,0x6625,0x6721, + 0x6829,0x692D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7021,0x7125,0x7225,0x7321,0x7425,0x7521,0x7621,0x7725, + 0x782D,0x7929,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8081,0x8185,0x8285,0x8381,0x8485,0x8581,0x8681,0x8785, + 0x888D,0x8989,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9085,0x9181,0x9281,0x9385,0x9481,0x9585,0x9685,0x9781, + 0x9889,0x998D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA0A5,0xA1A1,0xA2A1,0xA3A5,0xA4A1,0xA5A5,0xA6A5,0xA7A1, + 0xA8A9,0xA9AD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB0A1,0xB1A5,0xB2A5,0xB3A1,0xB4A5,0xB5A1,0xB6A1,0xB7A5, + 0xB8AD,0xB9A9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC085,0xC181,0xC281,0xC385,0xC481,0xC585,0xC685,0xC781, + 0xC889,0xC98D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD081,0xD185,0xD285,0xD381,0xD485,0xD581,0xD681,0xD785, + 0xD88D,0xD989,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE0A1,0xE1A5,0xE2A5,0xE3A1,0xE4A5,0xE5A1,0xE6A1,0xE7A5, + 0xE8AD,0xE9A9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF0A5,0xF1A1,0xF2A1,0xF3A5,0xF4A1,0xF5A5,0xF6A5,0xF7A1, + 0xF8A9,0xF9AD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701, + 0x0809,0x090D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705, + 0x180D,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725, + 0x282D,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721, + 0x3829,0x392D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705, + 0x480D,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701, + 0x5809,0x590D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0604,0x0700,0x0808,0x090C,0x0A0C,0x0B08,0x0C0C,0x0D08, + 0x0E08,0x0F0C,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510, + 0x1600,0x1704,0x180C,0x1908,0x1A08,0x1B0C,0x1C08,0x1D0C, + 0x1E0C,0x1F08,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530, + 0x2620,0x2724,0x282C,0x2928,0x2A28,0x2B2C,0x2C28,0x2D2C, + 0x2E2C,0x2F28,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534, + 0x3624,0x3720,0x3828,0x392C,0x3A2C,0x3B28,0x3C2C,0x3D28, + 0x3E28,0x3F2C,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510, + 0x4600,0x4704,0x480C,0x4908,0x4A08,0x4B0C,0x4C08,0x4D0C, + 0x4E0C,0x4F08,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514, + 0x5604,0x5700,0x5808,0x590C,0x5A0C,0x5B08,0x5C0C,0x5D08, + 0x5E08,0x5F0C,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534, + 0x6624,0x6720,0x6828,0x692C,0x6A2C,0x6B28,0x6C2C,0x6D28, + 0x6E28,0x6F2C,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530, + 0x7620,0x7724,0x782C,0x7928,0x7A28,0x7B2C,0x7C28,0x7D2C, + 0x7E2C,0x7F28,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590, + 0x8680,0x8784,0x888C,0x8988,0x8A88,0x8B8C,0x8C88,0x8D8C, + 0x8E8C,0x8F88,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594, + 0x9684,0x9780,0x9888,0x998C,0x9A8C,0x9B88,0x9C8C,0x9D88, + 0x9E88,0x9F8C,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x6625,0x6721,0x6829,0x692D,0x6A2D,0x6B29,0x6C2D,0x6D29, + 0x6E29,0x6F2D,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531, + 0x7621,0x7725,0x782D,0x7929,0x7A29,0x7B2D,0x7C29,0x7D2D, + 0x7E2D,0x7F29,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591, + 0x8681,0x8785,0x888D,0x8989,0x8A89,0x8B8D,0x8C89,0x8D8D, + 0x8E8D,0x8F89,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595, + 0x9685,0x9781,0x9889,0x998D,0x9A8D,0x9B89,0x9C8D,0x9D89, + 0x9E89,0x9F8D,0xA0B5,0xA1B1,0xA2B1,0xA3B5,0xA4B1,0xA5B5, + 0xA6A5,0xA7A1,0xA8A9,0xA9AD,0xAAAD,0xABA9,0xACAD,0xADA9, + 0xAEA9,0xAFAD,0xB0B1,0xB1B5,0xB2B5,0xB3B1,0xB4B5,0xB5B1, + 0xB6A1,0xB7A5,0xB8AD,0xB9A9,0xBAA9,0xBBAD,0xBCA9,0xBDAD, + 0xBEAD,0xBFA9,0xC095,0xC191,0xC291,0xC395,0xC491,0xC595, + 0xC685,0xC781,0xC889,0xC98D,0xCA8D,0xCB89,0xCC8D,0xCD89, + 0xCE89,0xCF8D,0xD091,0xD195,0xD295,0xD391,0xD495,0xD591, + 0xD681,0xD785,0xD88D,0xD989,0xDA89,0xDB8D,0xDC89,0xDD8D, + 0xDE8D,0xDF89,0xE0B1,0xE1B5,0xE2B5,0xE3B1,0xE4B5,0xE5B1, + 0xE6A1,0xE7A5,0xE8AD,0xE9A9,0xEAA9,0xEBAD,0xECA9,0xEDAD, + 0xEEAD,0xEFA9,0xF0B5,0xF1B1,0xF2B1,0xF3B5,0xF4B1,0xF5B5, + 0xF6A5,0xF7A1,0xF8A9,0xF9AD,0xFAAD,0xFBA9,0xFCAD,0xFDA9, + 0xFEA9,0xFFAD,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515, + 0x0605,0x0701,0x0809,0x090D,0x0A0D,0x0B09,0x0C0D,0x0D09, + 0x0E09,0x0F0D,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511, + 0x1601,0x1705,0x180D,0x1909,0x1A09,0x1B0D,0x1C09,0x1D0D, + 0x1E0D,0x1F09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531, + 0x2621,0x2725,0x282D,0x2929,0x2A29,0x2B2D,0x2C29,0x2D2D, + 0x2E2D,0x2F29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535, + 0x3625,0x3721,0x3829,0x392D,0x3A2D,0x3B29,0x3C2D,0x3D29, + 0x3E29,0x3F2D,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511, + 0x4601,0x4705,0x480D,0x4909,0x4A09,0x4B0D,0x4C09,0x4D0D, + 0x4E0D,0x4F09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515, + 0x5605,0x5701,0x5809,0x590D,0x5A0D,0x5B09,0x5C0D,0x5D09, + 0x5E09,0x5F0D,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535, + 0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702, + 0x080A,0x090E,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706, + 0x180E,0x190A,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726, + 0x282E,0x292A,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722, + 0x382A,0x392E,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706, + 0x480E,0x490A,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702, + 0x580A,0x590E,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722, + 0x682A,0x692E,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726, + 0x782E,0x792A,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786, + 0x888E,0x898A,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x9086,0x9182,0x9282,0x9386,0x9482,0x9586,0x9686,0x9782, + 0x988A,0x998E,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xA0A7,0xA1A3,0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3, + 0xA8AB,0xA9AF,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xB0A3,0xB1A7,0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7, + 0xB8AF,0xB9AB,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xC087,0xC183,0xC283,0xC387,0xC483,0xC587,0xC687,0xC783, + 0xC88B,0xC98F,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xD083,0xD187,0xD287,0xD383,0xD487,0xD583,0xD683,0xD787, + 0xD88F,0xD98B,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xE0A3,0xE1A7,0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7, + 0xE8AF,0xE9AB,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xF0A7,0xF1A3,0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3, + 0xF8AB,0xF9AF,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703, + 0x080B,0x090F,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707, + 0x180F,0x190B,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727, + 0x282F,0x292B,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723, + 0x382B,0x392F,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707, + 0x480F,0x490B,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703, + 0x580B,0x590F,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723, + 0x682B,0x692F,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727, + 0x782F,0x792B,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787, + 0x888F,0x898B,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783, + 0x988B,0x998F,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0xFABE,0xFBBA,0xFCBE,0xFDBA,0xFEBA,0xFFBE,0x0046,0x0102, + 0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080A,0x090E, + 0x0A1E,0x0B1A,0x0C1E,0x0D1A,0x0E1A,0x0F1E,0x1002,0x1106, + 0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180E,0x190A, + 0x1A1A,0x1B1E,0x1C1A,0x1D1E,0x1E1E,0x1F1A,0x2022,0x2126, + 0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282E,0x292A, + 0x2A3A,0x2B3E,0x2C3A,0x2D3E,0x2E3E,0x2F3A,0x3026,0x3122, + 0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382A,0x392E, + 0x3A3E,0x3B3A,0x3C3E,0x3D3A,0x3E3A,0x3F3E,0x4002,0x4106, + 0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480E,0x490A, + 0x4A1A,0x4B1E,0x4C1A,0x4D1E,0x4E1E,0x4F1A,0x5006,0x5102, + 0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580A,0x590E, + 0x5A1E,0x5B1A,0x5C1E,0x5D1A,0x5E1A,0x5F1E,0x6026,0x6122, + 0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682A,0x692E, + 0x6A3E,0x6B3A,0x6C3E,0x6D3A,0x6E3A,0x6F3E,0x7022,0x7126, + 0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782E,0x792A, + 0x7A3A,0x7B3E,0x7C3A,0x7D3E,0x7E3E,0x7F3A,0x8082,0x8186, + 0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888E,0x898A, + 0x8A9A,0x8B9E,0x8C9A,0x8D9E,0x8E9E,0x8F9A,0x9086,0x9182, + 0x9282,0x9386,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F, + 0x9A9F,0x9B9B,0x9C9F,0x9D9B,0x9E9B,0x9F9F,0xA0A7,0xA1A3, + 0xA2A3,0xA3A7,0xA4A3,0xA5A7,0xA6A7,0xA7A3,0xA8AB,0xA9AF, + 0xAABF,0xABBB,0xACBF,0xADBB,0xAEBB,0xAFBF,0xB0A3,0xB1A7, + 0xB2A7,0xB3A3,0xB4A7,0xB5A3,0xB6A3,0xB7A7,0xB8AF,0xB9AB, + 0xBABB,0xBBBF,0xBCBB,0xBDBF,0xBEBF,0xBFBB,0xC087,0xC183, + 0xC283,0xC387,0xC483,0xC587,0xC687,0xC783,0xC88B,0xC98F, + 0xCA9F,0xCB9B,0xCC9F,0xCD9B,0xCE9B,0xCF9F,0xD083,0xD187, + 0xD287,0xD383,0xD487,0xD583,0xD683,0xD787,0xD88F,0xD98B, + 0xDA9B,0xDB9F,0xDC9B,0xDD9F,0xDE9F,0xDF9B,0xE0A3,0xE1A7, + 0xE2A7,0xE3A3,0xE4A7,0xE5A3,0xE6A3,0xE7A7,0xE8AF,0xE9AB, + 0xEABB,0xEBBF,0xECBB,0xEDBF,0xEEBF,0xEFBB,0xF0A7,0xF1A3, + 0xF2A3,0xF3A7,0xF4A3,0xF5A7,0xF6A7,0xF7A3,0xF8AB,0xF9AF, + 0xFABF,0xFBBB,0xFCBF,0xFDBB,0xFEBB,0xFFBF,0x0047,0x0103, + 0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080B,0x090F, + 0x0A1F,0x0B1B,0x0C1F,0x0D1B,0x0E1B,0x0F1F,0x1003,0x1107, + 0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180F,0x190B, + 0x1A1B,0x1B1F,0x1C1B,0x1D1F,0x1E1F,0x1F1B,0x2023,0x2127, + 0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282F,0x292B, + 0x2A3B,0x2B3F,0x2C3B,0x2D3F,0x2E3F,0x2F3B,0x3027,0x3123, + 0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382B,0x392F, + 0x3A3F,0x3B3B,0x3C3F,0x3D3B,0x3E3B,0x3F3F,0x4003,0x4107, + 0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480F,0x490B, + 0x4A1B,0x4B1F,0x4C1B,0x4D1F,0x4E1F,0x4F1B,0x5007,0x5103, + 0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580B,0x590F, + 0x5A1F,0x5B1B,0x5C1F,0x5D1B,0x5E1B,0x5F1F,0x6027,0x6123, + 0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682B,0x692F, + 0x6A3F,0x6B3B,0x6C3F,0x6D3B,0x6E3B,0x6F3F,0x7023,0x7127, + 0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782F,0x792B, + 0x7A3B,0x7B3F,0x7C3B,0x7D3F,0x7E3F,0x7F3B,0x8083,0x8187, + 0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888F,0x898B, + 0x8A9B,0x8B9F,0x8C9B,0x8D9F,0x8E9F,0x8F9B,0x9087,0x9183, + 0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988B,0x998F +}; diff --git a/MCUME_teensy/teensyspeccy/Z80.c b/MCUME_teensy/teensyspeccy/Z80.c new file mode 100644 index 0000000..5dc017c --- /dev/null +++ b/MCUME_teensy/teensyspeccy/Z80.c @@ -0,0 +1,685 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.c **/ +/** **/ +/** This file contains implementation for Z80 CPU. Don't **/ +/** forget to provide RdZ80(), WrZ80(), InZ80(), OutZ80(), **/ +/** LoopZ80(), and PatchZ80() functions to accomodate the **/ +/** emulated machine's architecture. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ + +#include "Z80.h" +#include "Tables.h" +#include + +/** INLINE ***************************************************/ +/** C99 standard has "inline", but older compilers used **/ +/** __inline for the same purpose. **/ +/*************************************************************/ +#ifdef __C99__ +#define INLINE static inline +#else +#define INLINE static __inline +#endif + +/** System-Dependent Stuff ***********************************/ +/** This is system-dependent code put here to speed things **/ +/** up. It has to stay inlined to be fast. **/ +/*************************************************************/ +#ifdef COLEM +#define RdZ80 RDZ80 +extern byte *ROMPage[]; +INLINE byte RdZ80(word A) { return(ROMPage[A>>13][A&0x1FFF]); } +#endif + +#ifdef SPECCY +#define RdZ80 RDZ80 +#define WrZ80 WRZ80 +extern byte *Page[],*ROM; +INLINE byte RdZ80(word A) { return(Page[A>>13][A&0x1FFF]); } +INLINE void WrZ80(word A,byte V) { if(Page[A>>13]>13][A&0x1FFF]=V; } +#endif + +#ifdef MG +#define RdZ80 RDZ80 +extern byte *Page[]; +INLINE byte RdZ80(word A) { return(Page[A>>13][A&0x1FFF]); } +#endif + +#ifdef FMSX +#define FAST_RDOP +extern byte *RAM[]; +INLINE byte OpZ80(word A) { return(RAM[A>>13][A&0x1FFF]); } +#endif + +/** FAST_RDOP ************************************************/ +/** With this #define not present, RdZ80() should perform **/ +/** the functions of OpZ80(). **/ +/*************************************************************/ +#ifndef FAST_RDOP +#define OpZ80(A) RdZ80(A) +#endif + +#define S(Fl) R->AF.B.l|=Fl +#define R(Fl) R->AF.B.l&=~(Fl) +#define FLAGS(Rg,Fl) R->AF.B.l=Fl|ZSTable[Rg] + +#define M_RLC(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|R->AF.B.l;R->AF.B.l|=PZSTable[Rg] +#define M_RRC(Rg) \ + R->AF.B.l=Rg&0x01;Rg=(Rg>>1)|(R->AF.B.l<<7);R->AF.B.l|=PZSTable[Rg] +#define M_RL(Rg) \ + if(Rg&0x80) \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg<<1)|(R->AF.B.l&C_FLAG); \ + R->AF.B.l=PZSTable[Rg]; \ + } +#define M_RR(Rg) \ + if(Rg&0x01) \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]|C_FLAG; \ + } \ + else \ + { \ + Rg=(Rg>>1)|(R->AF.B.l<<7); \ + R->AF.B.l=PZSTable[Rg]; \ + } + +#define M_SLA(Rg) \ + R->AF.B.l=Rg>>7;Rg<<=1;R->AF.B.l|=PZSTable[Rg] +#define M_SRA(Rg) \ + R->AF.B.l=Rg&C_FLAG;Rg=(Rg>>1)|(Rg&0x80);R->AF.B.l|=PZSTable[Rg] + +#define M_SLL(Rg) \ + R->AF.B.l=Rg>>7;Rg=(Rg<<1)|0x01;R->AF.B.l|=PZSTable[Rg] +#define M_SRL(Rg) \ + R->AF.B.l=Rg&0x01;Rg>>=1;R->AF.B.l|=PZSTable[Rg] + +#define M_BIT(Bit,Rg) \ + R->AF.B.l=(R->AF.B.l&C_FLAG)|H_FLAG|PZSTable[Rg&(1<Rg.B.l=OpZ80(R->SP.W++);R->Rg.B.h=OpZ80(R->SP.W++) +#define M_PUSH(Rg) \ + WrZ80(--R->SP.W,R->Rg.B.h);WrZ80(--R->SP.W,R->Rg.B.l) + +#define M_CALL \ + J.B.l=OpZ80(R->PC.W++);J.B.h=OpZ80(R->PC.W++); \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l); \ + R->PC.W=J.W; \ + JumpZ80(J.W) + +#define M_JP J.B.l=OpZ80(R->PC.W++);J.B.h=OpZ80(R->PC.W);R->PC.W=J.W;JumpZ80(J.W) +#define M_JR R->PC.W+=(offset)OpZ80(R->PC.W)+1;JumpZ80(R->PC.W) +#define M_RET R->PC.B.l=OpZ80(R->SP.W++);R->PC.B.h=OpZ80(R->SP.W++);JumpZ80(R->PC.W) + +#define M_RST(Ad) \ + WrZ80(--R->SP.W,R->PC.B.h);WrZ80(--R->SP.W,R->PC.B.l);R->PC.W=Ad;JumpZ80(Ad) + +#define M_LDWORD(Rg) \ + R->Rg.B.l=OpZ80(R->PC.W++);R->Rg.B.h=OpZ80(R->PC.W++) + +#define M_ADD(Rg) \ + J.W=R->AF.B.h+Rg; \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SUB(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_ADC(Rg) \ + J.W=R->AF.B.h+Rg+(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + (~(R->AF.B.h^Rg)&(Rg^J.B.l)&0x80? V_FLAG:0)| \ + J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_SBC(Rg) \ + J.W=R->AF.B.h-Rg-(R->AF.B.l&C_FLAG); \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG); \ + R->AF.B.h=J.B.l + +#define M_CP(Rg) \ + J.W=R->AF.B.h-Rg; \ + R->AF.B.l= \ + ((R->AF.B.h^Rg)&(R->AF.B.h^J.B.l)&0x80? V_FLAG:0)| \ + N_FLAG|-J.B.h|ZSTable[J.B.l]| \ + ((R->AF.B.h^Rg^J.B.l)&H_FLAG) + +#define M_AND(Rg) R->AF.B.h&=Rg;R->AF.B.l=H_FLAG|PZSTable[R->AF.B.h] +#define M_OR(Rg) R->AF.B.h|=Rg;R->AF.B.l=PZSTable[R->AF.B.h] +#define M_XOR(Rg) R->AF.B.h^=Rg;R->AF.B.l=PZSTable[R->AF.B.h] + +#define M_IN(Rg) \ + Rg=InZ80(R->BC.W); \ + R->AF.B.l=PZSTable[Rg]|(R->AF.B.l&C_FLAG) + +#define M_INC(Rg) \ + Rg++; \ + R->AF.B.l= \ + (R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x80? V_FLAG:0)|(Rg&0x0F? 0:H_FLAG) + +#define M_DEC(Rg) \ + Rg--; \ + R->AF.B.l= \ + N_FLAG|(R->AF.B.l&C_FLAG)|ZSTable[Rg]| \ + (Rg==0x7F? V_FLAG:0)|((Rg&0x0F)==0x0F? H_FLAG:0) + +#define M_ADDW(Rg1,Rg2) \ + J.W=(R->Rg1.W+R->Rg2.W)&0xFFFF; \ + R->AF.B.l= \ + (R->AF.B.l&~(H_FLAG|N_FLAG|C_FLAG))| \ + ((R->Rg1.W^R->Rg2.W^J.W)&0x1000? H_FLAG:0)| \ + (((long)R->Rg1.W+(long)R->Rg2.W)&0x10000? C_FLAG:0); \ + R->Rg1.W=J.W + +#define M_ADCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W+R->Rg.W+I)&0xFFFF; \ + R->AF.B.l= \ + (((long)R->HL.W+(long)R->Rg.W+(long)I)&0x10000? C_FLAG:0)| \ + (~(R->HL.W^R->Rg.W)&(R->Rg.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +#define M_SBCW(Rg) \ + I=R->AF.B.l&C_FLAG;J.W=(R->HL.W-R->Rg.W-I)&0xFFFF; \ + R->AF.B.l= \ + N_FLAG| \ + (((long)R->HL.W-(long)R->Rg.W-(long)I)&0x10000? C_FLAG:0)| \ + ((R->HL.W^R->Rg.W)&(R->HL.W^J.W)&0x8000? V_FLAG:0)| \ + ((R->HL.W^R->Rg.W^J.W)&0x1000? H_FLAG:0)| \ + (J.W? 0:Z_FLAG)|(J.B.h&S_FLAG); \ + R->HL.W=J.W + +enum Codes +{ + NOP,LD_BC_WORD,LD_xBC_A,INC_BC,INC_B,DEC_B,LD_B_BYTE,RLCA, + EX_AF_AF,ADD_HL_BC,LD_A_xBC,DEC_BC,INC_C,DEC_C,LD_C_BYTE,RRCA, + DJNZ,LD_DE_WORD,LD_xDE_A,INC_DE,INC_D,DEC_D,LD_D_BYTE,RLA, + JR,ADD_HL_DE,LD_A_xDE,DEC_DE,INC_E,DEC_E,LD_E_BYTE,RRA, + JR_NZ,LD_HL_WORD,LD_xWORD_HL,INC_HL,INC_H,DEC_H,LD_H_BYTE,DAA, + JR_Z,ADD_HL_HL,LD_HL_xWORD,DEC_HL,INC_L,DEC_L,LD_L_BYTE,CPL, + JR_NC,LD_SP_WORD,LD_xWORD_A,INC_SP,INC_xHL,DEC_xHL,LD_xHL_BYTE,SCF, + JR_C,ADD_HL_SP,LD_A_xWORD,DEC_SP,INC_A,DEC_A,LD_A_BYTE,CCF, + LD_B_B,LD_B_C,LD_B_D,LD_B_E,LD_B_H,LD_B_L,LD_B_xHL,LD_B_A, + LD_C_B,LD_C_C,LD_C_D,LD_C_E,LD_C_H,LD_C_L,LD_C_xHL,LD_C_A, + LD_D_B,LD_D_C,LD_D_D,LD_D_E,LD_D_H,LD_D_L,LD_D_xHL,LD_D_A, + LD_E_B,LD_E_C,LD_E_D,LD_E_E,LD_E_H,LD_E_L,LD_E_xHL,LD_E_A, + LD_H_B,LD_H_C,LD_H_D,LD_H_E,LD_H_H,LD_H_L,LD_H_xHL,LD_H_A, + LD_L_B,LD_L_C,LD_L_D,LD_L_E,LD_L_H,LD_L_L,LD_L_xHL,LD_L_A, + LD_xHL_B,LD_xHL_C,LD_xHL_D,LD_xHL_E,LD_xHL_H,LD_xHL_L,HALT,LD_xHL_A, + LD_A_B,LD_A_C,LD_A_D,LD_A_E,LD_A_H,LD_A_L,LD_A_xHL,LD_A_A, + ADD_B,ADD_C,ADD_D,ADD_E,ADD_H,ADD_L,ADD_xHL,ADD_A, + ADC_B,ADC_C,ADC_D,ADC_E,ADC_H,ADC_L,ADC_xHL,ADC_A, + SUB_B,SUB_C,SUB_D,SUB_E,SUB_H,SUB_L,SUB_xHL,SUB_A, + SBC_B,SBC_C,SBC_D,SBC_E,SBC_H,SBC_L,SBC_xHL,SBC_A, + AND_B,AND_C,AND_D,AND_E,AND_H,AND_L,AND_xHL,AND_A, + XOR_B,XOR_C,XOR_D,XOR_E,XOR_H,XOR_L,XOR_xHL,XOR_A, + OR_B,OR_C,OR_D,OR_E,OR_H,OR_L,OR_xHL,OR_A, + CP_B,CP_C,CP_D,CP_E,CP_H,CP_L,CP_xHL,CP_A, + RET_NZ,POP_BC,JP_NZ,JP,CALL_NZ,PUSH_BC,ADD_BYTE,RST00, + RET_Z,RET,JP_Z,PFX_CB,CALL_Z,CALL,ADC_BYTE,RST08, + RET_NC,POP_DE,JP_NC,OUTA,CALL_NC,PUSH_DE,SUB_BYTE,RST10, + RET_C,EXX,JP_C,INA,CALL_C,PFX_DD,SBC_BYTE,RST18, + RET_PO,POP_HL,JP_PO,EX_HL_xSP,CALL_PO,PUSH_HL,AND_BYTE,RST20, + RET_PE,LD_PC_HL,JP_PE,EX_DE_HL,CALL_PE,PFX_ED,XOR_BYTE,RST28, + RET_P,POP_AF,JP_P,DI,CALL_P,PUSH_AF,OR_BYTE,RST30, + RET_M,LD_SP_HL,JP_M,EI,CALL_M,PFX_FD,CP_BYTE,RST38 +}; + +enum CodesCB +{ + RLC_B,RLC_C,RLC_D,RLC_E,RLC_H,RLC_L,RLC_xHL,RLC_A, + RRC_B,RRC_C,RRC_D,RRC_E,RRC_H,RRC_L,RRC_xHL,RRC_A, + RL_B,RL_C,RL_D,RL_E,RL_H,RL_L,RL_xHL,RL_A, + RR_B,RR_C,RR_D,RR_E,RR_H,RR_L,RR_xHL,RR_A, + SLA_B,SLA_C,SLA_D,SLA_E,SLA_H,SLA_L,SLA_xHL,SLA_A, + SRA_B,SRA_C,SRA_D,SRA_E,SRA_H,SRA_L,SRA_xHL,SRA_A, + SLL_B,SLL_C,SLL_D,SLL_E,SLL_H,SLL_L,SLL_xHL,SLL_A, + SRL_B,SRL_C,SRL_D,SRL_E,SRL_H,SRL_L,SRL_xHL,SRL_A, + BIT0_B,BIT0_C,BIT0_D,BIT0_E,BIT0_H,BIT0_L,BIT0_xHL,BIT0_A, + BIT1_B,BIT1_C,BIT1_D,BIT1_E,BIT1_H,BIT1_L,BIT1_xHL,BIT1_A, + BIT2_B,BIT2_C,BIT2_D,BIT2_E,BIT2_H,BIT2_L,BIT2_xHL,BIT2_A, + BIT3_B,BIT3_C,BIT3_D,BIT3_E,BIT3_H,BIT3_L,BIT3_xHL,BIT3_A, + BIT4_B,BIT4_C,BIT4_D,BIT4_E,BIT4_H,BIT4_L,BIT4_xHL,BIT4_A, + BIT5_B,BIT5_C,BIT5_D,BIT5_E,BIT5_H,BIT5_L,BIT5_xHL,BIT5_A, + BIT6_B,BIT6_C,BIT6_D,BIT6_E,BIT6_H,BIT6_L,BIT6_xHL,BIT6_A, + BIT7_B,BIT7_C,BIT7_D,BIT7_E,BIT7_H,BIT7_L,BIT7_xHL,BIT7_A, + RES0_B,RES0_C,RES0_D,RES0_E,RES0_H,RES0_L,RES0_xHL,RES0_A, + RES1_B,RES1_C,RES1_D,RES1_E,RES1_H,RES1_L,RES1_xHL,RES1_A, + RES2_B,RES2_C,RES2_D,RES2_E,RES2_H,RES2_L,RES2_xHL,RES2_A, + RES3_B,RES3_C,RES3_D,RES3_E,RES3_H,RES3_L,RES3_xHL,RES3_A, + RES4_B,RES4_C,RES4_D,RES4_E,RES4_H,RES4_L,RES4_xHL,RES4_A, + RES5_B,RES5_C,RES5_D,RES5_E,RES5_H,RES5_L,RES5_xHL,RES5_A, + RES6_B,RES6_C,RES6_D,RES6_E,RES6_H,RES6_L,RES6_xHL,RES6_A, + RES7_B,RES7_C,RES7_D,RES7_E,RES7_H,RES7_L,RES7_xHL,RES7_A, + SET0_B,SET0_C,SET0_D,SET0_E,SET0_H,SET0_L,SET0_xHL,SET0_A, + SET1_B,SET1_C,SET1_D,SET1_E,SET1_H,SET1_L,SET1_xHL,SET1_A, + SET2_B,SET2_C,SET2_D,SET2_E,SET2_H,SET2_L,SET2_xHL,SET2_A, + SET3_B,SET3_C,SET3_D,SET3_E,SET3_H,SET3_L,SET3_xHL,SET3_A, + SET4_B,SET4_C,SET4_D,SET4_E,SET4_H,SET4_L,SET4_xHL,SET4_A, + SET5_B,SET5_C,SET5_D,SET5_E,SET5_H,SET5_L,SET5_xHL,SET5_A, + SET6_B,SET6_C,SET6_D,SET6_E,SET6_H,SET6_L,SET6_xHL,SET6_A, + SET7_B,SET7_C,SET7_D,SET7_E,SET7_H,SET7_L,SET7_xHL,SET7_A +}; + +enum CodesED +{ + DB_00,DB_01,DB_02,DB_03,DB_04,DB_05,DB_06,DB_07, + DB_08,DB_09,DB_0A,DB_0B,DB_0C,DB_0D,DB_0E,DB_0F, + DB_10,DB_11,DB_12,DB_13,DB_14,DB_15,DB_16,DB_17, + DB_18,DB_19,DB_1A,DB_1B,DB_1C,DB_1D,DB_1E,DB_1F, + DB_20,DB_21,DB_22,DB_23,DB_24,DB_25,DB_26,DB_27, + DB_28,DB_29,DB_2A,DB_2B,DB_2C,DB_2D,DB_2E,DB_2F, + DB_30,DB_31,DB_32,DB_33,DB_34,DB_35,DB_36,DB_37, + DB_38,DB_39,DB_3A,DB_3B,DB_3C,DB_3D,DB_3E,DB_3F, + IN_B_xC,OUT_xC_B,SBC_HL_BC,LD_xWORDe_BC,NEG,RETN,IM_0,LD_I_A, + IN_C_xC,OUT_xC_C,ADC_HL_BC,LD_BC_xWORDe,DB_4C,RETI,DB_,LD_R_A, + IN_D_xC,OUT_xC_D,SBC_HL_DE,LD_xWORDe_DE,DB_54,DB_55,IM_1,LD_A_I, + IN_E_xC,OUT_xC_E,ADC_HL_DE,LD_DE_xWORDe,DB_5C,DB_5D,IM_2,LD_A_R, + IN_H_xC,OUT_xC_H,SBC_HL_HL,LD_xWORDe_HL,DB_64,DB_65,DB_66,RRD, + IN_L_xC,OUT_xC_L,ADC_HL_HL,LD_HL_xWORDe,DB_6C,DB_6D,DB_6E,RLD, + IN_F_xC,DB_71,SBC_HL_SP,LD_xWORDe_SP,DB_74,DB_75,DB_76,DB_77, + IN_A_xC,OUT_xC_A,ADC_HL_SP,LD_SP_xWORDe,DB_7C,DB_7D,DB_7E,DB_7F, + DB_80,DB_81,DB_82,DB_83,DB_84,DB_85,DB_86,DB_87, + DB_88,DB_89,DB_8A,DB_8B,DB_8C,DB_8D,DB_8E,DB_8F, + DB_90,DB_91,DB_92,DB_93,DB_94,DB_95,DB_96,DB_97, + DB_98,DB_99,DB_9A,DB_9B,DB_9C,DB_9D,DB_9E,DB_9F, + LDI,CPI,INI,OUTI,DB_A4,DB_A5,DB_A6,DB_A7, + LDD,CPD,IND,OUTD,DB_AC,DB_AD,DB_AE,DB_AF, + LDIR,CPIR,INIR,OTIR,DB_B4,DB_B5,DB_B6,DB_B7, + LDDR,CPDR,INDR,OTDR,DB_BC,DB_BD,DB_BE,DB_BF, + DB_C0,DB_C1,DB_C2,DB_C3,DB_C4,DB_C5,DB_C6,DB_C7, + DB_C8,DB_C9,DB_CA,DB_CB,DB_CC,DB_CD,DB_CE,DB_CF, + DB_D0,DB_D1,DB_D2,DB_D3,DB_D4,DB_D5,DB_D6,DB_D7, + DB_D8,DB_D9,DB_DA,DB_DB,DB_DC,DB_DD,DB_DE,DB_DF, + DB_E0,DB_E1,DB_E2,DB_E3,DB_E4,DB_E5,DB_E6,DB_E7, + DB_E8,DB_E9,DB_EA,DB_EB,DB_EC,DB_ED,DB_EE,DB_EF, + DB_F0,DB_F1,DB_F2,DB_F3,DB_F4,DB_F5,DB_F6,DB_F7, + DB_F8,DB_F9,DB_FA,DB_FB,DB_FC,DB_FD,DB_FE,DB_FF +}; + +static void CodesCB(register Z80 *R) +{ + register byte I; + + I=OpZ80(R->PC.W++); + R->ICount-=CyclesCB[I]; + switch(I) + { +#include "CodesCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: CB %02X at PC=%04X\n", + (long)(R->User),OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IX + J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD CB %02X %02X at PC=%04X\n", + (long)(R->User),OpZ80(R->PC.W-2),OpZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesFDCB(register Z80 *R) +{ + register pair J; + register byte I; + +#define XX IY + J.W=R->XX.W+(offset)OpZ80(R->PC.W++); + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXXCB[I]; + switch(I) + { +#include "CodesXCB.h" + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: FD CB %02X %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-2),OpZ80(R->PC.W-1),R->PC.W-4 + ); + } +#undef XX +} + +static void CodesED(register Z80 *R) +{ + register byte I; + register pair J; + + I=OpZ80(R->PC.W++); + R->ICount-=CyclesED[I]; + switch(I) + { +#include "CodesED.h" + case PFX_ED: + R->PC.W--;break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: ED %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +} + +static void CodesDD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IX + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesDDCB(R);break; + default: + if(R->TrapBadOps) + printf + ( + "[Z80 %lX] Unrecognized instruction: DD %02X at PC=%04X\n", + (long)R->User,OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +static void CodesFD(register Z80 *R) +{ + register byte I; + register pair J; + +#define XX IY + I=OpZ80(R->PC.W++); + R->ICount-=CyclesXX[I]; + switch(I) + { +#include "CodesXX.h" + case PFX_FD: + case PFX_DD: + R->PC.W--;break; + case PFX_CB: + CodesFDCB(R);break; + default: + printf + ( + "Unrecognized instruction: FD %02X at PC=%04X\n", + OpZ80(R->PC.W-1),R->PC.W-2 + ); + } +#undef XX +} + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the register struct **/ +/** before starting execution with Z80(). It sets the **/ +/** registers to their supposed initial values. **/ +/*************************************************************/ +void ResetZ80(Z80 *R, register int Cycles) +{ + R->IPeriod = Cycles; + R->PC.W = 0x0000; + R->SP.W = 0xF000; + R->AF.W = 0x0000; + R->BC.W = 0x0000; + R->DE.W = 0x0000; + R->HL.W = 0x0000; + R->AF1.W = 0x0000; + R->BC1.W = 0x0000; + R->DE1.W = 0x0000; + R->HL1.W = 0x0000; + R->IX.W = 0x0000; + R->IY.W = 0x0000; + R->I = 0x00; + R->R = 0x00; + R->IFF = 0x00; + R->ICount = R->IPeriod; + R->IRequest = INT_NONE; + R->IBackup = 0; + + JumpZ80(R->PC.W); +} + +/** ExecZ80() ************************************************/ +/** This function will execute given number of Z80 cycles. **/ +/** It will then return the number of cycles left, possibly **/ +/** negative, and current register values in R. **/ +/*************************************************************/ +#ifdef EXECZ80 +int ExecZ80(register Z80 *R,register int RunCycles) +{ + register byte I; + register pair J; + + for(R->ICount=RunCycles;;) + { + while(R->ICount>0) + { +#ifdef DEBUG + /* Turn tracing on when reached trap address */ + if(R->PC.W==R->Trap) R->Trace=1; + /* Call single-step debugger, exit if requested */ + if(R->Trace) + if(!DebugZ80(R)) return(R->ICount); +#endif + + /* Read opcode and count cycles */ + I=OpZ80(R->PC.W++); + /* Count cycles */ + R->ICount-=Cycles[I]; + + /* Interpret opcode */ + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + } + + /* Unless we have come here after EI, exit */ + if(!(R->IFF&IFF_EI)) return(R->ICount); + else + { + /* Done with AfterEI state */ + R->IFF=(R->IFF&~IFF_EI)|IFF_1; + /* Restore the ICount */ + R->ICount+=R->IBackup-1; + /* Interrupt CPU if needed */ + if((R->IRequest!=INT_NONE)&&(R->IRequest!=INT_QUIT)) IntZ80(R,R->IRequest); + } + } +} +#endif /* EXECZ80 */ + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(Z80 *R,word Vector) +{ + /* If HALTed, take CPU off HALT instruction */ + if(R->IFF&IFF_HALT) { R->PC.W++;R->IFF&=~IFF_HALT; } + + if((R->IFF&IFF_1)||(Vector==INT_NMI)) + { + /* Save PC on stack */ + M_PUSH(PC); + + /* Automatically reset IRequest if needed */ + if(R->IAutoReset&&(Vector==R->IRequest)) R->IRequest=INT_NONE; + + /* If it is NMI... */ + if(Vector==INT_NMI) + { + /* Clear IFF1 */ + R->IFF&=~(IFF_1|IFF_EI); + /* Jump to hardwired NMI vector */ + R->PC.W=0x0066; + JumpZ80(0x0066); + /* Done */ + return; + } + + /* Further interrupts off */ + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + + /* If in IM2 mode... */ + if(R->IFF&IFF_IM2) + { + /* Make up the vector address */ + Vector=(Vector&0xFF)|((word)(R->I)<<8); + /* Read the vector */ + R->PC.B.l=RdZ80(Vector++); + R->PC.B.h=RdZ80(Vector); + JumpZ80(R->PC.W); + /* Done */ + return; + } + + /* If in IM1 mode, just jump to hardwired IRQ vector */ + if(R->IFF&IFF_IM1) { R->PC.W=0x0038;JumpZ80(0x0038);return; } + + /* If in IM0 mode... */ + + /* Jump to a vector */ + switch(Vector) + { + case INT_RST00: R->PC.W=0x0000;JumpZ80(0x0000);break; + case INT_RST08: R->PC.W=0x0008;JumpZ80(0x0008);break; + case INT_RST10: R->PC.W=0x0010;JumpZ80(0x0010);break; + case INT_RST18: R->PC.W=0x0018;JumpZ80(0x0018);break; + case INT_RST20: R->PC.W=0x0020;JumpZ80(0x0020);break; + case INT_RST28: R->PC.W=0x0028;JumpZ80(0x0028);break; + case INT_RST30: R->PC.W=0x0030;JumpZ80(0x0030);break; + case INT_RST38: R->PC.W=0x0038;JumpZ80(0x0038);break; + } + } +} + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +#ifndef EXECZ80 +word RunZ80(Z80 *R) +{ + register byte I; + register pair J; + + for(;;) + { +#ifdef DEBUG + /* Turn tracing on when reached trap address */ + if(R->PC.W==R->Trap) R->Trace=1; + /* Call single-step debugger, exit if requested */ + if(R->Trace) + if(!DebugZ80(R)) return(R->PC.W); +#endif + + I=OpZ80(R->PC.W++); + R->ICount-=Cycles[I]; + + switch(I) + { +#include "Codes.h" + case PFX_CB: CodesCB(R);break; + case PFX_ED: CodesED(R);break; + case PFX_FD: CodesFD(R);break; + case PFX_DD: CodesDD(R);break; + } + + /* If cycle counter expired... */ + if(R->ICount<=0) + { + /* If we have come after EI, get address from IRequest */ + /* Otherwise, get it from the loop handler */ + if(R->IFF&IFF_EI) + { + R->IFF=(R->IFF&~IFF_EI)|IFF_1; /* Done with AfterEI state */ + R->ICount+=R->IBackup-1; /* Restore the ICount */ + + /* Call periodic handler or set pending IRQ */ + if(R->ICount>0) J.W=R->IRequest; + else + { + J.W=LoopZ80(R); /* Call periodic handler */ + R->ICount+=R->IPeriod; /* Reset the cycle counter */ + if(J.W==INT_NONE) J.W=R->IRequest; /* Pending IRQ */ + } + } + else + { + J.W=LoopZ80(R); /* Call periodic handler */ + R->ICount+=R->IPeriod; /* Reset the cycle counter */ + if(J.W==INT_NONE) J.W=R->IRequest; /* Pending IRQ */ + } + + if(J.W==INT_QUIT) return(R->PC.W); /* Exit if INT_QUIT */ + if(J.W!=INT_NONE) IntZ80(R,J.W); /* Int-pt if needed */ + } + } + + /* Execution stopped */ + return(R->PC.W); +} +#endif /* !EXECZ80 */ diff --git a/MCUME_teensy/teensyspeccy/Z80.h b/MCUME_teensy/teensyspeccy/Z80.h new file mode 100644 index 0000000..87a6b40 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/Z80.h @@ -0,0 +1,193 @@ +/** Z80: portable Z80 emulator *******************************/ +/** **/ +/** Z80.h **/ +/** **/ +/** This file contains declarations relevant to emulation **/ +/** of Z80 CPU. **/ +/** **/ +/** Copyright (C) Marat Fayzullin 1994-2007 **/ +/** You are not allowed to distribute this software **/ +/** commercially. Please, notify me, if you make any **/ +/** changes to this file. **/ +/*************************************************************/ +#ifndef Z80_H +#define Z80_H + + #include + + +#define EXECZ80 // run a few cycles + +#ifdef __cplusplus +extern "C" { +#endif + + /* Compilation options: */ +/* #define DEBUG */ /* Compile debugging version */ +#define LSB_FIRST /* Compile for low-endian CPU */ +// #define MSB_FIRST /* Compile for hi-endian CPU */ + + /* LoopZ80() may return: */ +#define INT_RST00 0x00C7 /* RST 00h */ +#define INT_RST08 0x00CF /* RST 08h */ +#define INT_RST10 0x00D7 /* RST 10h */ +#define INT_RST18 0x00DF /* RST 18h */ +#define INT_RST20 0x00E7 /* RST 20h */ +#define INT_RST28 0x00EF /* RST 28h */ +#define INT_RST30 0x00F7 /* RST 30h */ +#define INT_RST38 0x00FF /* RST 38h */ +#define INT_IRQ INT_RST38 /* Default IRQ opcode is FFh */ +#define INT_NMI 0xFFFD /* Non-maskable interrupt */ +#define INT_NONE 0xFFFF /* No interrupt required */ +#define INT_QUIT 0xFFFE /* Exit the emulation */ + + /* Bits in Z80 F register: */ +#define S_FLAG 0x80 /* 1: Result negative */ +#define Z_FLAG 0x40 /* 1: Result is zero */ +#define H_FLAG 0x10 /* 1: Halfcarry/Halfborrow */ +#define P_FLAG 0x04 /* 1: Result is even */ +#define V_FLAG 0x04 /* 1: Overflow occured */ +#define N_FLAG 0x02 /* 1: Subtraction occured */ +#define C_FLAG 0x01 /* 1: Carry/Borrow occured */ + + /* Bits in IFF flip-flops: */ +#define IFF_1 0x01 /* IFF1 flip-flop */ +#define IFF_IM1 0x02 /* 1: IM1 mode */ +#define IFF_IM2 0x04 /* 1: IM2 mode */ +#define IFF_2 0x08 /* IFF2 flip-flop */ +#define IFF_EI 0x20 /* 1: EI pending */ +#define IFF_HALT 0x80 /* 1: CPU HALTed */ + +/** Simple Datatypes *****************************************/ +/** NOTICE: sizeof(byte)=1 and sizeof(word)=2 **/ +/*************************************************************/ +#ifndef BYTE_TYPE_DEFINED +#define BYTE_TYPE_DEFINED +typedef uint8_t byte; +#endif +#ifndef WORD_TYPE_DEFINED +#define WORD_TYPE_DEFINED +typedef uint16_t word; +#endif +typedef int8_t offset; + +/** Structured Datatypes *************************************/ +/** NOTICE: #define LSB_FIRST for machines where least **/ +/** signifcant byte goes first. **/ +/*************************************************************/ +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h; } B; +#else + struct { byte h,l; } B; +#endif + word W; +} pair; + +typedef struct +{ + pair AF,BC,DE,HL,IX,IY,PC,SP; /* Main registers */ + pair AF1,BC1,DE1,HL1; /* Shadow registers */ + byte IFF,I; /* Interrupt registers */ + byte R; /* Refresh register */ + + int IPeriod,ICount; /* Set IPeriod to number of CPU cycles */ + /* between calls to LoopZ80() */ + int IBackup; /* Private, don't touch */ + word IRequest; /* Set to address of pending IRQ */ + byte IAutoReset; /* Set to 1 to autom. reset IRequest */ + byte TrapBadOps; /* Set to 1 to warn of illegal opcodes */ + word Trap; /* Set Trap to address to trace from */ + byte Trace; /* Set Trace=1 to start tracing */ + void *User; /* Arbitrary user data (ID,RAM*,etc.) */ +} Z80; + +/** ResetZ80() ***********************************************/ +/** This function can be used to reset the registers before **/ +/** starting execution with RunZ80(). It sets registers to **/ +/** their initial values. **/ +/*************************************************************/ +void ResetZ80(register Z80 *R, register int Cycles); + +/** ExecZ80() ************************************************/ +/** This function will execute given number of Z80 cycles. **/ +/** It will then return the number of cycles left, possibly **/ +/** negative, and current register values in R. **/ +/*************************************************************/ +#ifdef EXECZ80 +int ExecZ80(register Z80 *R,register int RunCycles); +#endif + +/** IntZ80() *************************************************/ +/** This function will generate interrupt of given vector. **/ +/*************************************************************/ +void IntZ80(register Z80 *R,register word Vector); + +/** RunZ80() *************************************************/ +/** This function will run Z80 code until an LoopZ80() call **/ +/** returns INT_QUIT. It will return the PC at which **/ +/** emulation stopped, and current register values in R. **/ +/*************************************************************/ +#ifndef EXECZ80 +word RunZ80(register Z80 *R); +#endif + +/** RdZ80()/WrZ80() ******************************************/ +/** These functions are called when access to RAM occurs. **/ +/** They allow to control memory access. **/ +/************************************ TO BE WRITTEN BY USER **/ +void WrZ80(register word Addr,register byte Value); +byte RdZ80(register word Addr); + +/** InZ80()/OutZ80() *****************************************/ +/** Z80 emulation calls these functions to read/write from **/ +/** I/O ports. There can be 65536 I/O ports, but only first **/ +/** 256 are usually used. **/ +/************************************ TO BE WRITTEN BY USER **/ +void OutZ80(register word Port,register byte Value); +byte InZ80(register word Port); + +/** PatchZ80() ***********************************************/ +/** Z80 emulation calls this function when it encounters a **/ +/** special patch command (ED FE) provided for user needs. **/ +/** For example, it can be called to emulate BIOS calls, **/ +/** such as disk and tape access. Replace it with an empty **/ +/** macro for no patching. **/ +/************************************ TO BE WRITTEN BY USER **/ +void PatchZ80(register Z80 *R); + +/** DebugZ80() ***********************************************/ +/** This function should exist if DEBUG is #defined. When **/ +/** Trace!=0, it is called after each command executed by **/ +/** the CPU, and given the Z80 registers. Emulation exits **/ +/** if DebugZ80() returns 0. **/ +/*************************************************************/ +#ifdef DEBUG +byte DebugZ80(register Z80 *R); +#endif + +/** LoopZ80() ************************************************/ +/** Z80 emulation calls this function periodically to check **/ +/** if the system hardware requires any interrupts. This **/ +/** function must return an address of the interrupt vector **/ +/** (0x0038, 0x0066, etc.) or INT_NONE for no interrupt. **/ +/** Return INT_QUIT to exit the emulation loop. **/ +/************************************ TO BE WRITTEN BY USER **/ +word LoopZ80(register Z80 *R); + +/** JumpZ80() ************************************************/ +/** Z80 emulation calls this function when it executes a **/ +/** JP, JR, CALL, RST, or RET. You can use JumpZ80() to **/ +/** trap these opcodes and switch memory layout. **/ +/************************************ TO BE WRITTEN BY USER **/ +#ifndef JUMPZ80 +#define JumpZ80(PC) +#else +void JumpZ80(word PC); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* Z80_H */ diff --git a/MCUME_teensy/teensyspeccy/altz80/macros.h b/MCUME_teensy/teensyspeccy/altz80/macros.h new file mode 100755 index 0000000..27b8773 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/macros.h @@ -0,0 +1,403 @@ +/*===================================================================== + Macros.c -> Macros used on the opcode execution. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + ======================================================================*/ + +/* defines for the registers: faster access to them when coding... */ + +#define r_PC regs->PC.W +#define r_PCl regs->PC.B.l +#define r_PCh regs->PC.B.h +#define r_SP regs->SP.W +#define r_IFF1 regs->IFF1 +#define r_IFF2 regs->IFF2 +#define r_R regs->R.W + +#define r_AF regs->AF.W +#define r_A regs->AF.B.h +#define r_F regs->AF.B.l +#define r_BC regs->BC.W +#define r_B regs->BC.B.h +#define r_C regs->BC.B.l +#define r_DE regs->DE.W +#define r_D regs->DE.B.h +#define r_E regs->DE.B.l +#define r_HL regs->HL.W +#define r_H regs->HL.B.h +#define r_L regs->HL.B.l +#define r_IX regs->IX.W +#define r_IXh regs->IX.B.h +#define r_IXl regs->IX.B.l +#define r_IY regs->IY.W +#define r_IYh regs->IY.B.h +#define r_IYl regs->IY.B.l + +#define r_AFs regs->AFs.W +#define r_As regs->AFs.B.h +#define r_Fs regs->AFs.B.l +#define r_BCs regs->BCs.W +#define r_Bs regs->BCs.B.h +#define r_Cs regs->BCs.B.l +#define r_DEs regs->DEs.W +#define r_Ds regs->DEs.B.h +#define r_Es regs->DEs.B.l +#define r_HLs regs->HLs.W +#define r_Hs regs->HLs.B.h +#define r_Ls regs->HLs.B.l +#define r_IXs regs->IX.W +#define r_IXhs regs->IX.B.h +#define r_IXls regs->IX.B.l +#define r_IYs regs->IY.W +#define r_IYhs regs->IY.B.h +#define r_IYls regs->IY.B.l + +#define r_op ops.W +#define r_oph ops.B.h +#define r_opl ops.B.l +#define r_tmp tmpreg2.W +#define r_tmph tmpreg2.B.h +#define r_tmpl tmpreg2.B.l +#define r_mem mread.W +#define r_memh mread.B.h +#define r_meml mread.B.l + +#ifndef _DISASM_ +/*--- Flag tables by Philip Kendall, taken from it's fuse emulator -*/ +/*--- I was having headache trying to emulate correctly the FLAGS, + so I finished using the FLAG tables used by P. Kendall. ------*/ +#define FLAG_C 0x01 +#define FLAG_N 0x02 +#define FLAG_P 0x04 +#define FLAG_V FLAG_P +#define FLAG_3 0x08 +#define FLAG_H 0x10 +#define FLAG_5 0x20 +#define FLAG_Z 0x40 +#define FLAG_S 0x80 + +#endif // ifndef _DISASM_ + + +/*--- Memory Read from the A address on no bank machines -------------*/ +//#define Z80ReadMem(A) ((regs->RAM[(A)])) +#define Z80ReadMem(A) readmem(A) + +// return( regs->RAM[A] ); + + +/* macros to change the ICount register */ +#define AddCycles(n) regs->ICount-=(n) + +#define SubCycles(n) regs->ICount+=(n) + +//#define AddR(n) r_R = (r_R+(n)) +#define AddR(n) r_R = ((r_R & 0x80) | ((r_R+(n)) & 0x7f )) +#define SubR(n) r_R = ((r_R & 0x80) | ((r_R-(n)) & 0x7f )) + + +/* setting and resetting the flag bits: */ +#define SET_FLAG(flag) (r_F |= (flag)) + +#define RESET_FLAG(flag) (r_F &= ~(flag)) + +#define TEST_FLAG(flag) (r_F & (flag)) + + +/* store a given register in the stack (hi and lo bytes) */ +#define PUSH(rreg) \ + Z80WriteMem( --(r_SP), regs->rreg.B.h, regs); \ + Z80WriteMem( --(r_SP), regs->rreg.B.l, regs) + +#define POP(rreg)\ + regs->rreg.B.l = Z80ReadMem(r_SP); r_SP++;\ + regs->rreg.B.h = Z80ReadMem(r_SP); r_SP++ + +#define PUSH_IXYr() \ + Z80WriteMem( --(r_SP), REGH, regs); \ + Z80WriteMem( --(r_SP), REGL, regs) + +#define POP_IXYr()\ + REGL = Z80ReadMem(r_SP); r_SP++; \ + REGH = Z80ReadMem(r_SP); r_SP++ + +#define RST(rstval) PUSH(PC); r_PC=(rstval) + + +/*--- Move data to mem or regs --------------------------------------*/ +#define LD_r_r(dreg, sreg) (dreg) = (sreg) + +#define STORE_r(daddreg, sreg) Z80WriteMem((daddreg), (sreg), regs) + +#define STORE_nn_rr(dreg) \ + r_opl = Z80ReadMem(r_PC); r_PC++;\ + r_oph = Z80ReadMem(r_PC); r_PC++; \ + r_tmp = dreg; \ + Z80WriteMem((r_op),r_tmpl, regs); \ + Z80WriteMem((r_op+1),r_tmph, regs) + +#define STORE_nn_r(sreg) \ + r_opl = Z80ReadMem(r_PC); r_PC++; \ + r_oph = Z80ReadMem(r_PC); r_PC++; \ + Z80WriteMem((r_op),(sreg), regs) + +#define LOAD_r(dreg, saddreg) (dreg)=Z80ReadMem((saddreg)) + +#define LOAD_rr_nn(dreg) r_opl = Z80ReadMem(r_PC); r_PC++; \ + r_oph = Z80ReadMem(r_PC); r_PC++; \ + r_tmpl = Z80ReadMem(r_op); \ + r_tmph = Z80ReadMem((r_op)+1); \ + dreg=r_tmp + + +#define LOAD_r_nn(dreg) r_opl = Z80ReadMem(r_PC); r_PC++; \ + r_oph = Z80ReadMem(r_PC); r_PC++; \ + dreg = Z80ReadMem(r_op) + +#define LD_r_n(reg) (reg) = Z80ReadMem(r_PC++) + +#define LD_rr_nn(reg) r_opl = Z80ReadMem(r_PC); r_PC++; \ + r_oph = Z80ReadMem(r_PC); r_PC++; \ + reg = r_op + +#define EX(reg1,reg2) r_opl=(reg1); (reg1)=(reg2); (reg2)=r_opl + +#define EX_WORD(reg1,reg2) r_op=(reg1); (reg1)=(reg2); (reg2)=r_op + +/*--- Increments/Decrements -----------------------------------------*/ +#define INC(reg) (reg)++; \ + r_F = ( r_F & FLAG_C ) | ( (reg)==0x80 ? FLAG_V : 0 ) | \ + ( (reg)&0x0f ? 0 : FLAG_H ) | ( (reg) ? 0 : FLAG_Z ) | \ + sz53_table[(reg)] + +#define DEC(reg) \ + r_F = ( r_F & FLAG_C ) | ( (reg)&0x0f ? 0 : FLAG_H ) | FLAG_N; \ + (reg)--; \ + r_F |= ( (reg)==0x7f ? FLAG_V : 0 ) | sz53_table[(reg)] + +// COMMENTS: +// it was: +// r_F |= ( (reg)==0x79 ? FLAG_V : 0 ) | sz53_table[(reg)] +// But Kak pointed my was not 0x79 -> 0x7F, changed 7-3-2001 + + +/*--- Bit operations ------------------------------------------------*/ +#define BIT_RES(b,reg) reg &= ~(0x1<>7 ); \ + r_F = ( (reg) & FLAG_C ) | sz53p_table[(reg)] + +#define RRC(reg) r_F = (reg) & FLAG_C; \ + (reg) = ( (reg)>>1 ) | ( (reg)<<7 );\ + r_F |= sz53p_table[(reg)] + +#define RL(reg) r_opl = (reg); \ + (reg) = ( (reg)<<1 ) | ( r_F & FLAG_C ); \ + r_F = ( r_opl >> 7 ) | sz53p_table[(reg)] + +#define RR(reg) r_opl = (reg); \ + (reg) = ( (reg)>>1 ) | ( r_F << 7 );\ + r_F = ( r_opl & FLAG_C ) | sz53p_table[(reg)] + +#define SLA(reg) r_F = (reg) >> 7;\ + (reg) <<= 1;\ + r_F |= sz53p_table[(reg)] + +#define SRA(reg) r_F = (reg) & FLAG_C; \ + (reg) = ( (reg) & 0x80 ) | ( (reg) >> 1 );\ + r_F |= sz53p_table[(reg)] + +#define SLL(reg) r_F = (reg) >> 7;\ + (reg) = ( (reg) << 1 ) | 0x01;\ + r_F |= sz53p_table[(reg)] + +#define SRL(reg) r_F = (reg) & FLAG_C;\ + (reg) >>= 1;\ + r_F |= sz53p_table[(reg)] + + + +/*--- JP operations -------------------------------------------------*/ +#define JP_nn() r_opl = Z80ReadMem(r_PC); \ + r_PC++; \ + r_oph = Z80ReadMem(r_PC); \ + r_PC = r_op + +#define JR_n() r_PC += (offset) (Z80ReadMem(r_PC)); r_PC++ + +#define RET_nn() r_PCl = Z80ReadMem (r_SP); r_SP++; \ + r_PCh = Z80ReadMem (r_SP); r_SP++; + +#define CALL_nn() r_opl = Z80ReadMem (r_PC); r_PC++; \ + r_oph = Z80ReadMem (r_PC); r_PC++; \ + Z80WriteMem( --(r_SP), r_PCh, regs ); \ + Z80WriteMem( --(r_SP), r_PCl, regs ); \ + r_PC = r_op + + +/*--- ALU operations ------------------------------------------------*/ +#define AND(reg) r_A &= (reg); \ + r_F = FLAG_H | sz53p_table[r_A] + +#define OR(reg) r_A |= (reg); \ + r_F = sz53p_table[r_A] + +#define XOR(reg) r_A ^= (reg); \ + r_F = sz53p_table[r_A] + +#define AND_mem(raddress) r_opl = Z80ReadMem(raddress); \ + r_A &= (r_opl); \ + r_F = FLAG_H | sz53p_table[r_A] + +#define OR_mem(raddress) r_opl = Z80ReadMem(raddress); \ + r_A |= (r_opl); \ + r_F = sz53p_table[r_A] + +#define XOR_mem(raddress) r_opl = Z80ReadMem(raddress); \ + r_A ^= (r_opl); \ + r_F = sz53p_table[r_A] + +#define ADD(val) tempword = r_A + (val); \ + r_oph = ((r_A&0x88)>>3)|(((val)&0x88)>>2) | \ + ( (tempword & 0x88) >> 1 ); \ + r_A = tempword; \ + r_F = ( tempword & 0x100 ? FLAG_C : 0 ) | \ + halfcarry_add_table[ r_oph & 0x07] | \ + overflow_add_table[ r_oph >> 4] | \ + sz53_table[r_A] + +#define ADD_WORD(value1,value2) \ + tempdword = (value1) + (value2); \ + r_oph = ( ( (value1) & 0x0800 ) >> 11 ) | \ + ( ( (value2) & 0x0800 ) >> 10 ) | \ + ( ( tempdword & 0x0800 ) >> 9 ); \ + (value1) = tempdword; \ + r_F = ( r_F & ( FLAG_V | FLAG_Z | FLAG_S ) ) | \ + ( tempdword & 0x10000 ? FLAG_C : 0 ) | \ + (( tempdword >> 8 ) & ( FLAG_3 | FLAG_5 ) ) | \ + halfcarry_add_table[r_oph] + +#define ADC(value) \ + tempword = r_A + (value) + ( r_F & FLAG_C ); \ + r_oph = ( (r_A & 0x88) >> 3 ) | ( ( (value) & 0x88 ) >> 2 ) |\ + ( (tempword & 0x88) >> 1 ); \ + r_A = tempword; \ + r_F = ( tempword & 0x100 ? FLAG_C : 0 ) | \ + halfcarry_add_table[r_oph & 0x07] | \ + overflow_add_table[r_oph >> 4] | \ + sz53_table[r_A] + +#define ADC_WORD(value) \ + tempdword= r_HL + (value) + ( r_F & FLAG_C ); \ + r_oph = ( ( r_HL & 0x8800 ) >> 11 ) | \ + ( ( (value) & 0x8800 ) >> 10 ) | \ + ( ( tempdword & 0x8800 ) >> 9 ); \ + r_HL = tempdword; \ + r_F = ( tempdword & 0x10000 ? FLAG_C : 0 )| \ + overflow_add_table[r_oph >> 4] | \ + ( r_H & ( FLAG_3 | FLAG_5 | FLAG_S ) ) | \ + halfcarry_add_table[ r_oph & 0x0f ]| \ + ( r_HL ? 0 : FLAG_Z ) + +#define SUB(value) \ + tempword = r_A - (value);\ + r_opl = ( (r_A & 0x88) >> 3 ) | \ + ( ( (value) & 0x88 ) >> 2 ) | \ + ( (tempword & 0x88) >> 1 ); \ + r_A = tempword; \ + r_F = ( tempword & 0x100 ? FLAG_C : 0 ) | FLAG_N | \ + halfcarry_sub_table[r_opl & 0x07] | \ + overflow_sub_table[r_opl >> 4] | \ + sz53_table[r_A] + +#define SBC(value) \ + tempword = r_A - (value) - ( r_F & FLAG_C ); \ + r_opl = ( (r_A & 0x88) >> 3 ) | \ + ( ( (value) & 0x88 ) >> 2 ) | \ + ( (tempword & 0x88) >> 1 ); \ + r_A = tempword; \ + r_F = ( tempword & 0x100 ? FLAG_C : 0 ) | FLAG_N | \ + halfcarry_sub_table[r_opl & 0x07] | \ + overflow_sub_table[r_opl >> 4] | \ + sz53_table[r_A] + + +#define SBC_WORD(Rg) \ + tempword=r_F & C_FLAG; r_op=(r_HL-Rg-tempword)&0xFFFF; \ + r_F= \ + N_FLAG| \ + (((long)r_HL-(long)Rg-(long)tempword)&0x10000? C_FLAG:0)| \ + ((r_HL^Rg)&(r_HL^r_op)&0x8000? O_FLAG:0)| \ + ((r_HL^Rg^r_op)&0x1000? H_FLAG:0)| \ + (r_op? 0:Z_FLAG)|(r_oph&S_FLAG); \ + r_HL=r_op + +#define CP(value) \ + tempword = r_A - (value);\ + r_opl = ( (r_A & 0x88) >> 3 ) | ( ( (value) & 0x88 ) >> 2 ) | \ + ( (tempword & 0x88) >> 1 ); \ + r_F = ( tempword & 0x100 ? FLAG_C : ( tempword ? 0 : FLAG_Z ) ) | FLAG_N |\ + halfcarry_sub_table[r_opl & 0x07] | \ + overflow_sub_table[r_opl >> 4] | \ + ( value & ( FLAG_3 | FLAG_5 ) ) | \ + ( tempword & FLAG_S ) + +#define NEG_A() r_opl = r_A; r_A=0; SUB(r_opl) + +/*--- MISC operations -----------------------------------------------*/ +#define IN_PORT(reg,port) (reg)=Z80InPort(regs,(port)); \ + r_F = ( r_F & FLAG_C) | sz53p_table[(reg)] diff --git a/MCUME_teensy/teensyspeccy/altz80/op_cb.h b/MCUME_teensy/teensyspeccy/altz80/op_cb.h new file mode 100755 index 0000000..162ef8f --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/op_cb.h @@ -0,0 +1,1109 @@ +/*==================================================================== + opcodes_cb.c -> This file executes the CB PREFIX opcodes. + + When you find the CB opcode, it means that you must fetch another + byte from memory and treat it as a new opcode with different + meaning than the single-byte opcodes. This is a common way to extend + the number of opcodes (8 bits of instruction word = just 256 opcodes) + and it's called an OPCODE PREFIX (now we have another 256 new opcodes + by using this trick). + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + =====================================================================*/ + +/* 8 clock cycles minimum = CB opcode = 4+4 */ + +opcode = Z80ReadMem (r_PC); +r_PC++; + +switch (opcode) + { + + case RLC_B: + RLC (r_B); + AddCycles (4 + 4); + break; + case RLC_C: + RLC (r_C); + AddCycles (4 + 4); + break; + case RLC_D: + RLC (r_D); + AddCycles (4 + 4); + break; + case RLC_E: + RLC (r_E); + AddCycles (4 + 4); + break; + case RLC_H: + RLC (r_H); + AddCycles (4 + 4); + break; + case RLC_L: + RLC (r_L); + AddCycles (4 + 4); + break; + case RLC_xHL: + r_meml = Z80ReadMem (r_HL); + RLC (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case RLC_A: + RLC (r_A); + AddCycles (4 + 4); + break; + + case RRC_B: + RRC (r_B); + AddCycles (4 + 4); + break; + case RRC_C: + RRC (r_C); + AddCycles (4 + 4); + break; + case RRC_D: + RRC (r_D); + AddCycles (4 + 4); + break; + case RRC_E: + RRC (r_E); + AddCycles (4 + 4); + break; + case RRC_H: + RRC (r_H); + AddCycles (4 + 4); + break; + case RRC_L: + RRC (r_L); + AddCycles (4 + 4); + break; + case RRC_xHL: + r_meml = Z80ReadMem (r_HL); + RRC (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case RRC_A: + RRC (r_A); + AddCycles (4 + 4); + break; + + case RL_B: + RL (r_B); + AddCycles (4 + 4); + break; + case RL_C: + RL (r_C); + AddCycles (4 + 4); + break; + case RL_D: + RL (r_D); + AddCycles (4 + 4); + break; + case RL_E: + RL (r_E); + AddCycles (4 + 4); + break; + case RL_H: + RL (r_H); + AddCycles (4 + 4); + break; + case RL_L: + RL (r_L); + AddCycles (4 + 4); + break; + case RL_xHL: + r_meml = Z80ReadMem (r_HL); + RL (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case RL_A: + RL (r_A); + AddCycles (4 + 4); + break; + + case RR_B: + RR (r_B); + AddCycles (4 + 4); + break; + case RR_C: + RR (r_C); + AddCycles (4 + 4); + break; + case RR_D: + RR (r_D); + AddCycles (4 + 4); + break; + case RR_E: + RR (r_E); + AddCycles (4 + 4); + break; + case RR_H: + RR (r_H); + AddCycles (4 + 4); + break; + case RR_L: + RR (r_L); + AddCycles (4 + 4); + break; + case RR_xHL: + r_meml = Z80ReadMem (r_HL); + RR (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case RR_A: + RR (r_A); + AddCycles (4 + 4); + break; + + case SLA_B: + SLA (r_B); + AddCycles (4 + 4); + break; + case SLA_C: + SLA (r_C); + AddCycles (4 + 4); + break; + case SLA_D: + SLA (r_D); + AddCycles (4 + 4); + break; + case SLA_E: + SLA (r_E); + AddCycles (4 + 4); + break; + case SLA_H: + SLA (r_H); + AddCycles (4 + 4); + break; + case SLA_L: + SLA (r_L); + AddCycles (4 + 4); + break; + case SLA_xHL: + r_meml = Z80ReadMem (r_HL); + SLA (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case SLA_A: + SLA (r_A); + AddCycles (4 + 4); + break; + + case SRA_B: + SRA (r_B); + AddCycles (4 + 4); + break; + case SRA_C: + SRA (r_C); + AddCycles (4 + 4); + break; + case SRA_D: + SRA (r_D); + AddCycles (4 + 4); + break; + case SRA_E: + SRA (r_E); + AddCycles (4 + 4); + break; + case SRA_H: + SRA (r_H); + AddCycles (4 + 4); + break; + case SRA_L: + SRA (r_L); + AddCycles (4 + 4); + break; + case SRA_xHL: + r_meml = Z80ReadMem (r_HL); + SRA (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case SRA_A: + SRA (r_A); + AddCycles (4 + 4); + break; + + case SLL_B: + SLL (r_B); + AddCycles (4 + 4); + break; + case SLL_C: + SLL (r_C); + AddCycles (4 + 4); + break; + case SLL_D: + SLL (r_D); + AddCycles (4 + 4); + break; + case SLL_E: + SLL (r_E); + AddCycles (4 + 4); + break; + case SLL_H: + SLL (r_H); + AddCycles (4 + 4); + break; + case SLL_L: + SLL (r_L); + AddCycles (4 + 4); + break; + case SLL_xHL: + r_meml = Z80ReadMem (r_HL); + SLL (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case SLL_A: + SLL (r_A); + AddCycles (4 + 4); + break; + + case SRL_B: + SRL (r_B); + AddCycles (4 + 4); + break; + case SRL_C: + SRL (r_C); + AddCycles (4 + 4); + break; + case SRL_D: + SRL (r_D); + AddCycles (4 + 4); + break; + case SRL_E: + SRL (r_E); + AddCycles (4 + 4); + break; + case SRL_H: + SRL (r_H); + AddCycles (4 + 4); + break; + case SRL_L: + SRL (r_L); + AddCycles (4 + 4); + break; + case SRL_xHL: + r_meml = Z80ReadMem (r_HL); + SRL (r_meml); + Z80WriteMem (r_HL, r_meml, regs); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case SRL_A: + SRL (r_A); + AddCycles (4 + 4); + break; + + case BIT_0_B: + BIT_BIT (0, r_B); + AddCycles (4 + 4); + break; + case BIT_0_C: + BIT_BIT (0, r_C); + AddCycles (4 + 4); + break; + case BIT_0_D: + BIT_BIT (0, r_D); + AddCycles (4 + 4); + break; + case BIT_0_E: + BIT_BIT (0, r_E); + AddCycles (4 + 4); + break; + case BIT_0_H: + BIT_BIT (0, r_H); + AddCycles (4 + 4); + break; + case BIT_0_L: + BIT_BIT (0, r_L); + AddCycles (4 + 4); + break; + case BIT_0_xHL: + BIT_mem_BIT (0, r_HL); + AddCycles (12); + break; + case BIT_0_A: + BIT_BIT (0, r_A); + AddCycles (4 + 4); + break; + + case BIT_1_B: + BIT_BIT (1, r_B); + AddCycles (4 + 4); + break; + case BIT_1_C: + BIT_BIT (1, r_C); + AddCycles (4 + 4); + break; + case BIT_1_D: + BIT_BIT (1, r_D); + AddCycles (4 + 4); + break; + case BIT_1_E: + BIT_BIT (1, r_E); + AddCycles (4 + 4); + break; + case BIT_1_H: + BIT_BIT (1, r_H); + AddCycles (4 + 4); + break; + case BIT_1_L: + BIT_BIT (1, r_L); + AddCycles (4 + 4); + break; + case BIT_1_xHL: + BIT_mem_BIT (1, r_HL); + AddCycles (12); + break; + case BIT_1_A: + BIT_BIT (1, r_A); + AddCycles (4 + 4); + break; + + case BIT_2_B: + BIT_BIT (2, r_B); + AddCycles (4 + 4); + break; + case BIT_2_C: + BIT_BIT (2, r_C); + AddCycles (4 + 4); + break; + case BIT_2_D: + BIT_BIT (2, r_D); + AddCycles (4 + 4); + break; + case BIT_2_E: + BIT_BIT (2, r_E); + AddCycles (4 + 4); + break; + case BIT_2_H: + BIT_BIT (2, r_H); + AddCycles (4 + 4); + break; + case BIT_2_L: + BIT_BIT (2, r_L); + AddCycles (4 + 4); + break; + case BIT_2_xHL: + BIT_mem_BIT (2, r_HL); + AddCycles (12); + break; + case BIT_2_A: + BIT_BIT (2, r_A); + AddCycles (4 + 4); + break; + + case BIT_3_B: + BIT_BIT (3, r_B); + AddCycles (4 + 4); + break; + case BIT_3_C: + BIT_BIT (3, r_C); + AddCycles (4 + 4); + break; + case BIT_3_D: + BIT_BIT (3, r_D); + AddCycles (4 + 4); + break; + case BIT_3_E: + BIT_BIT (3, r_E); + AddCycles (4 + 4); + break; + case BIT_3_H: + BIT_BIT (3, r_H); + AddCycles (4 + 4); + break; + case BIT_3_L: + BIT_BIT (3, r_L); + AddCycles (4 + 4); + break; + case BIT_3_xHL: + BIT_mem_BIT (3, r_HL); + AddCycles (12); + break; + case BIT_3_A: + BIT_BIT (3, r_A); + AddCycles (4 + 4); + break; + + case BIT_4_B: + BIT_BIT (4, r_B); + AddCycles (4 + 4); + break; + case BIT_4_C: + BIT_BIT (4, r_C); + AddCycles (4 + 4); + break; + case BIT_4_D: + BIT_BIT (4, r_D); + AddCycles (4 + 4); + break; + case BIT_4_E: + BIT_BIT (4, r_E); + AddCycles (4 + 4); + break; + case BIT_4_H: + BIT_BIT (4, r_H); + AddCycles (4 + 4); + break; + case BIT_4_L: + BIT_BIT (4, r_L); + AddCycles (4 + 4); + break; + case BIT_4_xHL: + BIT_mem_BIT (4, r_HL); + AddCycles (12); + break; + case BIT_4_A: + BIT_BIT (4, r_A); + AddCycles (4 + 4); + break; + + case BIT_5_B: + BIT_BIT (5, r_B); + AddCycles (4 + 4); + break; + case BIT_5_C: + BIT_BIT (5, r_C); + AddCycles (4 + 4); + break; + case BIT_5_D: + BIT_BIT (5, r_D); + AddCycles (4 + 4); + break; + case BIT_5_E: + BIT_BIT (5, r_E); + AddCycles (4 + 4); + break; + case BIT_5_H: + BIT_BIT (5, r_H); + AddCycles (4 + 4); + break; + case BIT_5_L: + BIT_BIT (5, r_L); + AddCycles (4 + 4); + break; + case BIT_5_xHL: + BIT_mem_BIT (5, r_HL); + AddCycles (12); + break; + case BIT_5_A: + BIT_BIT (5, r_A); + AddCycles (4 + 4); + break; + + case BIT_6_B: + BIT_BIT (6, r_B); + AddCycles (4 + 4); + break; + case BIT_6_C: + BIT_BIT (6, r_C); + AddCycles (4 + 4); + break; + case BIT_6_D: + BIT_BIT (6, r_D); + AddCycles (4 + 4); + break; + case BIT_6_E: + BIT_BIT (6, r_E); + AddCycles (4 + 4); + break; + case BIT_6_H: + BIT_BIT (6, r_H); + AddCycles (4 + 4); + break; + case BIT_6_L: + BIT_BIT (6, r_L); + AddCycles (4 + 4); + break; + case BIT_6_xHL: + BIT_mem_BIT (6, r_HL); + AddCycles (12); + break; + case BIT_6_A: + BIT_BIT (6, r_A); + AddCycles (4 + 4); + break; + + case BIT_7_B: + BIT_BIT7 (r_B); + AddCycles (4 + 4); + break; + case BIT_7_C: + BIT_BIT7 (r_C); + AddCycles (4 + 4); + break; + case BIT_7_D: + BIT_BIT7 (r_D); + AddCycles (4 + 4); + break; + case BIT_7_E: + BIT_BIT7 (r_E); + AddCycles (4 + 4); + break; + case BIT_7_H: + BIT_BIT7 (r_H); + AddCycles (4 + 4); + break; + case BIT_7_L: + BIT_BIT7 (r_L); + AddCycles (4 + 4); + break; + case BIT_7_xHL: + BIT_mem_BIT7 (r_HL); + AddCycles (12); + break; + case BIT_7_A: + BIT_BIT7 (r_A); + AddCycles (4 + 4); + break; + + case RES_0_B: + BIT_RES (0, r_B); + AddCycles (4 + 4); + break; + case RES_0_C: + BIT_RES (0, r_C); + AddCycles (4 + 4); + break; + case RES_0_D: + BIT_RES (0, r_D); + AddCycles (4 + 4); + break; + case RES_0_E: + BIT_RES (0, r_E); + AddCycles (4 + 4); + break; + case RES_0_H: + BIT_RES (0, r_H); + AddCycles (4 + 4); + break; + case RES_0_L: + BIT_RES (0, r_L); + AddCycles (4 + 4); + break; + case RES_0_xHL: + BIT_mem_RES (0, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_0_A: + BIT_RES (0, r_A); + AddCycles (4 + 4); + break; + + case RES_1_B: + BIT_RES (1, r_B); + AddCycles (4 + 4); + break; + case RES_1_C: + BIT_RES (1, r_C); + AddCycles (4 + 4); + break; + case RES_1_D: + BIT_RES (1, r_D); + AddCycles (4 + 4); + break; + case RES_1_E: + BIT_RES (1, r_E); + AddCycles (4 + 4); + break; + case RES_1_H: + BIT_RES (1, r_H); + AddCycles (4 + 4); + break; + case RES_1_L: + BIT_RES (1, r_L); + AddCycles (4 + 4); + break; + case RES_1_xHL: + BIT_mem_RES (1, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_1_A: + BIT_RES (1, r_A); + AddCycles (4 + 4); + break; + + case RES_2_B: + BIT_RES (2, r_B); + AddCycles (4 + 4); + break; + case RES_2_C: + BIT_RES (2, r_C); + AddCycles (4 + 4); + break; + case RES_2_D: + BIT_RES (2, r_D); + AddCycles (4 + 4); + break; + case RES_2_E: + BIT_RES (2, r_E); + AddCycles (4 + 4); + break; + case RES_2_H: + BIT_RES (2, r_H); + AddCycles (4 + 4); + break; + case RES_2_L: + BIT_RES (2, r_L); + AddCycles (4 + 4); + break; + case RES_2_xHL: + BIT_mem_RES (2, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_2_A: + BIT_RES (2, r_A); + AddCycles (4 + 4); + break; + + case RES_3_B: + BIT_RES (3, r_B); + AddCycles (4 + 4); + break; + case RES_3_C: + BIT_RES (3, r_C); + AddCycles (4 + 4); + break; + case RES_3_D: + BIT_RES (3, r_D); + AddCycles (4 + 4); + break; + case RES_3_E: + BIT_RES (3, r_E); + AddCycles (4 + 4); + break; + case RES_3_H: + BIT_RES (3, r_H); + AddCycles (4 + 4); + break; + case RES_3_L: + BIT_RES (3, r_L); + AddCycles (4 + 4); + break; + case RES_3_xHL: + BIT_mem_RES (3, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_3_A: + BIT_RES (3, r_A); + AddCycles (4 + 4); + break; + + case RES_4_B: + BIT_RES (4, r_B); + AddCycles (4 + 4); + break; + case RES_4_C: + BIT_RES (4, r_C); + AddCycles (4 + 4); + break; + case RES_4_D: + BIT_RES (4, r_D); + AddCycles (4 + 4); + break; + case RES_4_E: + BIT_RES (4, r_E); + AddCycles (4 + 4); + break; + case RES_4_H: + BIT_RES (4, r_H); + AddCycles (4 + 4); + break; + case RES_4_L: + BIT_RES (4, r_L); + AddCycles (4 + 4); + break; + case RES_4_xHL: + BIT_mem_RES (4, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_4_A: + BIT_RES (4, r_A); + AddCycles (4 + 4); + break; + + case RES_5_B: + BIT_RES (5, r_B); + AddCycles (4 + 4); + break; + case RES_5_C: + BIT_RES (5, r_C); + AddCycles (4 + 4); + break; + case RES_5_D: + BIT_RES (5, r_D); + AddCycles (4 + 4); + break; + case RES_5_E: + BIT_RES (5, r_E); + AddCycles (4 + 4); + break; + case RES_5_H: + BIT_RES (5, r_H); + AddCycles (4 + 4); + break; + case RES_5_L: + BIT_RES (5, r_L); + AddCycles (4 + 4); + break; + case RES_5_xHL: + BIT_mem_RES (5, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_5_A: + BIT_RES (5, r_A); + AddCycles (4 + 4); + break; + + case RES_6_B: + BIT_RES (6, r_B); + AddCycles (4 + 4); + break; + case RES_6_C: + BIT_RES (6, r_C); + AddCycles (4 + 4); + break; + case RES_6_D: + BIT_RES (6, r_D); + AddCycles (4 + 4); + break; + case RES_6_E: + BIT_RES (6, r_E); + AddCycles (4 + 4); + break; + case RES_6_H: + BIT_RES (6, r_H); + AddCycles (4 + 4); + break; + case RES_6_L: + BIT_RES (6, r_L); + AddCycles (4 + 4); + break; + case RES_6_xHL: + BIT_mem_RES (6, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_6_A: + BIT_RES (6, r_A); + AddCycles (4 + 4); + break; + + case RES_7_B: + BIT_RES (7, r_B); + AddCycles (4 + 4); + break; + case RES_7_C: + BIT_RES (7, r_C); + AddCycles (4 + 4); + break; + case RES_7_D: + BIT_RES (7, r_D); + AddCycles (4 + 4); + break; + case RES_7_E: + BIT_RES (7, r_E); + AddCycles (4 + 4); + break; + case RES_7_H: + BIT_RES (7, r_H); + AddCycles (4 + 4); + break; + case RES_7_L: + BIT_RES (7, r_L); + AddCycles (4 + 4); + break; + case RES_7_xHL: + BIT_mem_RES (7, r_HL); + AddCycles (4 + 4 + 7); + break; + case RES_7_A: + BIT_RES (7, r_A); + AddCycles (4 + 4); + break; + + case SET_0_B: + BIT_SET (0, r_B); + AddCycles (4 + 4); + break; + case SET_0_C: + BIT_SET (0, r_C); + AddCycles (4 + 4); + break; + case SET_0_D: + BIT_SET (0, r_D); + AddCycles (4 + 4); + break; + case SET_0_E: + BIT_SET (0, r_E); + AddCycles (4 + 4); + break; + case SET_0_H: + BIT_SET (0, r_H); + AddCycles (4 + 4); + break; + case SET_0_L: + BIT_SET (0, r_L); + AddCycles (4 + 4); + break; + case SET_0_xHL: + BIT_mem_SET (0, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_0_A: + BIT_SET (0, r_A); + AddCycles (4 + 4); + break; + + case SET_1_B: + BIT_SET (1, r_B); + AddCycles (4 + 4); + break; + case SET_1_C: + BIT_SET (1, r_C); + AddCycles (4 + 4); + break; + case SET_1_D: + BIT_SET (1, r_D); + AddCycles (4 + 4); + break; + case SET_1_E: + BIT_SET (1, r_E); + AddCycles (4 + 4); + break; + case SET_1_H: + BIT_SET (1, r_H); + AddCycles (4 + 4); + break; + case SET_1_L: + BIT_SET (1, r_L); + AddCycles (4 + 4); + break; + case SET_1_xHL: + BIT_mem_SET (1, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_1_A: + BIT_SET (1, r_A); + AddCycles (4 + 4); + break; + + case SET_2_B: + BIT_SET (2, r_B); + AddCycles (4 + 4); + break; + case SET_2_C: + BIT_SET (2, r_C); + AddCycles (4 + 4); + break; + case SET_2_D: + BIT_SET (2, r_D); + AddCycles (4 + 4); + break; + case SET_2_E: + BIT_SET (2, r_E); + AddCycles (4 + 4); + break; + case SET_2_H: + BIT_SET (2, r_H); + AddCycles (4 + 4); + break; + case SET_2_L: + BIT_SET (2, r_L); + AddCycles (4 + 4); + break; + case SET_2_xHL: + BIT_mem_SET (2, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_2_A: + BIT_SET (2, r_A); + AddCycles (4 + 4); + break; + + case SET_3_B: + BIT_SET (3, r_B); + AddCycles (4 + 4); + break; + case SET_3_C: + BIT_SET (3, r_C); + AddCycles (4 + 4); + break; + case SET_3_D: + BIT_SET (3, r_D); + AddCycles (4 + 4); + break; + case SET_3_E: + BIT_SET (3, r_E); + AddCycles (4 + 4); + break; + case SET_3_H: + BIT_SET (3, r_H); + AddCycles (4 + 4); + break; + case SET_3_L: + BIT_SET (3, r_L); + AddCycles (4 + 4); + break; + case SET_3_xHL: + BIT_mem_SET (3, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_3_A: + BIT_SET (3, r_A); + AddCycles (4 + 4); + break; + + case SET_4_B: + BIT_SET (4, r_B); + AddCycles (4 + 4); + break; + case SET_4_C: + BIT_SET (4, r_C); + AddCycles (4 + 4); + break; + case SET_4_D: + BIT_SET (4, r_D); + AddCycles (4 + 4); + break; + case SET_4_E: + BIT_SET (4, r_E); + AddCycles (4 + 4); + break; + case SET_4_H: + BIT_SET (4, r_H); + AddCycles (4 + 4); + break; + case SET_4_L: + BIT_SET (4, r_L); + AddCycles (4 + 4); + break; + case SET_4_xHL: + BIT_mem_SET (4, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_4_A: + BIT_SET (4, r_A); + AddCycles (4 + 4); + break; + + case SET_5_B: + BIT_SET (5, r_B); + AddCycles (4 + 4); + break; + case SET_5_C: + BIT_SET (5, r_C); + AddCycles (4 + 4); + break; + case SET_5_D: + BIT_SET (5, r_D); + AddCycles (4 + 4); + break; + case SET_5_E: + BIT_SET (5, r_E); + AddCycles (4 + 4); + break; + case SET_5_H: + BIT_SET (5, r_H); + AddCycles (4 + 4); + break; + case SET_5_L: + BIT_SET (5, r_L); + AddCycles (4 + 4); + break; + case SET_5_xHL: + BIT_mem_SET (5, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_5_A: + BIT_SET (5, r_A); + AddCycles (4 + 4); + break; + + case SET_6_B: + BIT_SET (6, r_B); + AddCycles (4 + 4); + break; + case SET_6_C: + BIT_SET (6, r_C); + AddCycles (4 + 4); + break; + case SET_6_D: + BIT_SET (6, r_D); + AddCycles (4 + 4); + break; + case SET_6_E: + BIT_SET (6, r_E); + AddCycles (4 + 4); + break; + case SET_6_H: + BIT_SET (6, r_H); + AddCycles (4 + 4); + break; + case SET_6_L: + BIT_SET (6, r_L); + AddCycles (4 + 4); + break; + case SET_6_xHL: + BIT_mem_SET (6, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_6_A: + BIT_SET (6, r_A); + AddCycles (4 + 4); + break; + + case SET_7_B: + BIT_SET (7, r_B); + AddCycles (4 + 4); + break; + case SET_7_C: + BIT_SET (7, r_C); + AddCycles (4 + 4); + break; + case SET_7_D: + BIT_SET (7, r_D); + AddCycles (4 + 4); + break; + case SET_7_E: + BIT_SET (7, r_E); + AddCycles (4 + 4); + break; + case SET_7_H: + BIT_SET (7, r_H); + AddCycles (4 + 4); + break; + case SET_7_L: + BIT_SET (7, r_L); + AddCycles (4 + 4); + break; + case SET_7_xHL: + BIT_mem_SET (7, r_HL); + AddCycles (4 + 4 + 7); + break; + case SET_7_A: + BIT_SET (7, r_A); + AddCycles (4 + 4); + break; + + } diff --git a/MCUME_teensy/teensyspeccy/altz80/op_dd_fd.h b/MCUME_teensy/teensyspeccy/altz80/op_dd_fd.h new file mode 100755 index 0000000..152e3f6 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/op_dd_fd.h @@ -0,0 +1,483 @@ +/*==================================================================== + opcodes_dd_fd.c -> This file executes the DD/FD PREFIX opcodes. + + The DD prefix "creates" some new instructions by changing HL to IX + on the opcode defined by the next byte on memory. + + The FD prefix "creates" some new instructions by changing HL to IY + on the opcode defined by the next byte on memory. + + Change the REGISTER variable to IX or HY before including this file. + Something like: + + #define REGISTER regs->IX + #include "op_dd_fd.c" + #undef REGISTER + + On this code, this REGISTER variable is used as REGISTER.W or + REGISTER.B.h and REGISTER.B.l ... + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + =====================================================================*/ + +/* 8 clock cycles minimum = DD opcode = FD opcode = 4 + 4 */ + +#define REG REGISTER.W +#define REGL REGISTER.B.l +#define REGH REGISTER.B.h + +opcode = Z80ReadMem (r_PC); +regs->PC.W++; +//r_PC++; + +switch (opcode) + { + case ADD_IXY_BC: + ADD_WORD (REG, r_BC); + AddCycles (4 + 4 + 7); + break; + case ADD_IXY_DE: + ADD_WORD (REG, r_DE); + AddCycles (4 + 4 + 7); + break; + case ADD_IXY_SP: + ADD_WORD (REG, r_SP); + AddCycles (4 + 4 + 7); + break; + case ADD_IXY_IXY: + ADD_WORD (REG, REG); + AddCycles (4 + 4 + 7); + break; + case DEC_IXY: + REG--; + AddCycles (4 + 4 + 2); + break; + case INC_IXY: + REG++; + AddCycles (4 + 4); + break; + + case JP_IXY: + r_PC = REG; + AddCycles (4 + 4); + break; + case LD_SP_IXY: + r_SP = REG; + AddCycles (4 + 4 + 2); + break; + + case PUSH_IXY: + PUSH_IXYr (); + AddCycles (4 + 4 + 3 + 3 + 1); + break; + case POP_IXY: + POP_IXYr (); + AddCycles (4 + 4 + 3 + 3); + break; + + case EX_IXY_xSP: + r_meml = Z80ReadMem (r_SP); + r_memh = Z80ReadMem (r_SP + 1); + Z80WriteMem (r_SP, REGL, regs); + Z80WriteMem (r_SP + 1, REGH, regs); + REGL = r_meml; + REGH = r_memh; + AddCycles (4 + 4 + 3 + 3 + 3 + 3 + 3); + break; + + case LD_A_xIXY: + r_A = Z80ReadMem (REG + ((offset) Z80ReadMem (r_PC))); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_B_xIXY: + r_B = Z80ReadMem (REG + ((offset) Z80ReadMem (r_PC))); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_C_xIXY: + r_C = Z80ReadMem (REG + ((offset) Z80ReadMem (r_PC))); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_D_xIXY: + r_D = Z80ReadMem (REG + ((offset) Z80ReadMem (r_PC))); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_E_xIXY: + r_E = Z80ReadMem (REG + ((offset) Z80ReadMem (r_PC))); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + + case LD_xIXY_A: + Z80WriteMem (REG + (offset) Z80ReadMem (r_PC), r_A, regs); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_xIXY_B: + Z80WriteMem (REG + (offset) Z80ReadMem (r_PC), r_B, regs); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_xIXY_C: + Z80WriteMem (REG + (offset) Z80ReadMem (r_PC), r_C, regs); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_xIXY_D: + Z80WriteMem (REG + (offset) Z80ReadMem (r_PC), r_D, regs); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_xIXY_E: + Z80WriteMem (REG + (offset) Z80ReadMem (r_PC), r_E, regs); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + + case INC_xIXY: + r_mem = REG + (offset) Z80ReadMem (r_PC); + r_PC++; + tmpreg.B.l = Z80ReadMem (r_mem); + INC (tmpreg.B.l); + Z80WriteMem (r_mem, tmpreg.B.l, regs); + AddCycles (4 + 3 + 3 + 3 + 3 + 3 + 3 + 1); + break; + case DEC_xIXY: + r_mem = REG + (offset) Z80ReadMem (r_PC); + r_PC++; + tmpreg.B.l = Z80ReadMem (r_mem); + DEC (tmpreg.B.l); + Z80WriteMem (r_mem, tmpreg.B.l, regs); + AddCycles (4 + 3 + 3 + 3 + 3 + 3 + 3 + 1); + break; + + case ADC_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + ADC (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case SBC_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + SBC (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case ADD_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + ADD (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case SUB_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + SUB (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case AND_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + AND (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case OR_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + OR (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case XOR_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + XOR (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + + case CP_xIXY: + r_meml = Z80ReadMem (REG + (offset) Z80ReadMem (r_PC)); + r_PC++; + CP (r_meml); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + + case LD_IXY_NN: + REGL = Z80ReadMem (r_PC); + r_PC++; + REGH = Z80ReadMem (r_PC); + r_PC++; + AddCycles (4 + 1 + 3 + 3 + 3); + break; + + case LD_xIXY_N: + r_mem = REG + (offset) Z80ReadMem (r_PC); + r_PC++; + Z80WriteMem (r_mem, Z80ReadMem (r_PC), regs); + r_PC++; + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + + case LD_IXY_xNN: + LOAD_rr_nn (REG); + AddCycles (4 + 3 + 3 + 3 + 3 + 3 + 1); + break; + + case LD_xNN_IXY: + STORE_nn_rr (REG); + AddCycles (4 + 3 + 3 + 3 + 3 + 3 + 1); + break; + + +/* some undocumented opcodes: may be wrong: */ + case LD_A_IXYh: + r_A = REGH; + AddCycles (4 + 4); + break; + case LD_A_IXYl: + r_A = REGL; + AddCycles (4 + 4); + break; + case LD_B_IXYh: + r_B = REGH; + AddCycles (4 + 4); + break; + case LD_B_IXYl: + r_B = REGL; + AddCycles (4 + 4); + break; + case LD_C_IXYh: + r_C = REGH; + AddCycles (4 + 4); + break; + case LD_C_IXYl: + r_C = REGL; + AddCycles (4 + 4); + break; + case LD_D_IXYh: + r_D = REGH; + AddCycles (4 + 4); + break; + case LD_D_IXYl: + r_D = REGL; + AddCycles (4 + 4); + break; + case LD_E_IXYh: + r_E = REGH; + AddCycles (4 + 4); + break; + case LD_E_IXYl: + r_E = REGL; + AddCycles (4 + 4); + break; + case LD_IXYh_A: + REGH = r_A; + AddCycles (4 + 4); + break; + case LD_IXYh_B: + REGH = r_B; + AddCycles (4 + 4); + break; + case LD_IXYh_C: + REGH = r_C; + AddCycles (4 + 4); + break; + case LD_IXYh_D: + REGH = r_D; + AddCycles (4 + 4); + break; + case LD_IXYh_E: + REGH = r_E; + AddCycles (4 + 4); + break; + case LD_IXYh_IXYh: + AddCycles (4 + 4); + break; + case LD_IXYh_IXYl: + REGH = REGL; + AddCycles (4 + 4); + break; + case LD_IXYl_A: + REGL = r_A; + AddCycles (4 + 4); + break; + case LD_IXYl_B: + REGL = r_B; + AddCycles (4 + 4); + break; + case LD_IXYl_C: + REGL = r_C; + AddCycles (4 + 4); + break; + case LD_IXYl_D: + REGL = r_D; + AddCycles (4 + 4); + break; + case LD_IXYl_E: + REGL = r_E; + AddCycles (4 + 4); + break; + case LD_IXYl_IXYh: + REGL = REGH; + AddCycles (4 + 4); + break; + case LD_IXYl_IXYl: + AddCycles (4 + 4); + break; + case LD_IXYh_N: + REGH = Z80ReadMem (r_PC); + r_PC++; + AddCycles (4 + 4 + 3); + break; + case LD_IXYl_N: + REGL = Z80ReadMem (r_PC); + r_PC++; + AddCycles (4 + 4 + 3); + break; + + + case ADD_IXYh: + ADD (REGH); + AddCycles (4 + 4); + break; + case ADD_IXYl: + ADD (REGL); + AddCycles (4 + 4); + break; + case ADC_IXYh: + ADC (REGH); + AddCycles (4 + 4); + break; + case ADC_IXYl: + ADC (REGL); + AddCycles (4 + 4); + break; + case SUB_IXYh: + SUB (REGH); + AddCycles (4 + 4); + break; + case SUB_IXYl: + SUB (REGL); + AddCycles (4 + 4); + break; + case SBC_IXYh: + SBC (REGH); + AddCycles (4 + 4); + break; + case SBC_IXYl: + SBC (REGL); + AddCycles (4 + 4); + break; + case AND_IXYh: + AND (REGH); + AddCycles (4 + 4); + break; + case AND_IXYl: + AND (REGL); + AddCycles (4 + 4); + break; + case XOR_IXYh: + XOR (REGH); + AddCycles (4 + 4); + break; + case XOR_IXYl: + XOR (REGL); + AddCycles (4 + 4); + break; + case OR_IXYh: + OR (REGH); + AddCycles (4 + 4); + break; + case OR_IXYl: + OR (REGL); + AddCycles (4 + 4); + break; + case CP_IXYh: + CP (REGH); + AddCycles (4 + 4); + break; + case CP_IXYl: + CP (REGL); + AddCycles (4 + 4); + break; + case INC_IXYh: + INC (REGH); + AddCycles (4 + 4); + break; + case INC_IXYl: + INC (REGL); + AddCycles (4 + 4); + break; + case DEC_IXYh: + DEC (REGH); + AddCycles (4 + 4); + break; + case DEC_IXYl: + DEC (REGL); + AddCycles (4 + 4); + break; + + case LD_xIXY_H: + r_meml = Z80ReadMem (r_PC); + r_PC++; + Z80WriteMem (REG + (offset) (r_meml), r_H, regs); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_xIXY_L: + r_meml = Z80ReadMem (r_PC); + r_PC++; + Z80WriteMem (REG + (offset) (r_meml), r_L, regs); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_H_xIXY: + r_meml = Z80ReadMem (r_PC); + r_PC++; + r_H = Z80ReadMem (REG + (offset) (r_meml)); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + case LD_L_xIXY: + r_meml = Z80ReadMem (r_PC); + r_PC++; + r_L = Z80ReadMem (REG + (offset) (r_meml)); + AddCycles (4 + 3 + 3 + 3 + 3 + 3); + break; + + case PREFIX_CB: +#include "opddfdcb.h" + break; + +/* +case PREFIX_DD: +case PREFIX_FD: AddCycles( 4 ); + r_PC--; // decode it the next time :) + break; +*/ + + default: + AddCycles (4); + r_PC--; /* decode it the next time :) */ + SubR (1); + + break; + } + +#undef REG +#undef REGL +#undef REGH diff --git a/MCUME_teensy/teensyspeccy/altz80/op_ed.h b/MCUME_teensy/teensyspeccy/altz80/op_ed.h new file mode 100755 index 0000000..361c2c5 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/op_ed.h @@ -0,0 +1,602 @@ +/*==================================================================== + opcodes_ed.c -> This file executes the ED opcodes. + + Another prefix that "creates" new instructions. This prefix also + introduces some undocumented opcodes that we've tried to include + here. Maybe their implementation it's wrong: if you can find any + mistake about how we have implemented/interpreted them, please + let us know. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + =====================================================================*/ + +/* 8 clock cycles minimum = ED opcode = 4 + 4 */ + +opcode = Z80ReadMem (r_PC); +r_PC++; + +switch (opcode) + { + case LD_BC_xNNe: + LOAD_rr_nn (r_BC); + AddCycles (4 + 4 + 12); + break; + case LD_DE_xNNe: + LOAD_rr_nn (r_DE); + AddCycles (4 + 4 + 12); + break; + case LD_HL_xNNe: + LOAD_rr_nn (r_HL); + AddCycles (4 + 4 + 12); + break; + case LD_SP_xNNe: + LOAD_rr_nn (r_SP); + AddCycles (4 + 4 + 12); + break; + + case LD_xNNe_BC: + STORE_nn_rr (r_BC); + AddCycles (4 + 4 + 12); + break; + case LD_xNNe_DE: + STORE_nn_rr (r_DE); + AddCycles (4 + 4 + 12); + break; + case LD_xNNe_HL: + STORE_nn_rr (r_HL); + AddCycles (4 + 4 + 12); + break; + case LD_xNNe_SP: + STORE_nn_rr (r_SP); + AddCycles (4 + 4 + 12); + break; + + case NEG: + case ED_5C: + case ED_74: + case ED_7C: + case ED_6C: + case ED_54: + case ED_4C: + case ED_64: + NEG_A (); + AddCycles (4 + 4); + break; + + case RETI: + case RETN: + case ED_65: + case ED_6D: + case ED_75: + case ED_7D: + case ED_5D: + case ED_55: + r_IFF1 = r_IFF2; + RET_nn (); + AddCycles (4 + 4 + 6); + break; + + case IM_0: + case ED_4E: /* * IM 0/1 */ + case ED_6E: + case ED_66: + regs->IM = 0; + AddCycles (4 + 4); + break; /* * IM 0 */ + + + case IM_1: + case ED_76: + regs->IM = 1; + AddCycles (4 + 4); + break; + + case IM_2: + case ED_7E: + regs->IM = 2; + AddCycles (4 + 4); + break; + + case ED_77: + case ED_7F: + AddCycles (4 + 4); + break; /* * NOP */ + + case OUT_xC_B: + Z80OutPort (regs, r_BC, r_B); + AddCycles (4 + 4 + 4); + break; + case OUT_xC_C: + Z80OutPort (regs, r_BC, r_C); + AddCycles (4 + 4 + 4); + break; + case OUT_xC_D: + Z80OutPort (regs, r_BC, r_D); + AddCycles (4 + 4 + 4); + break; + case OUT_xC_E: + Z80OutPort (regs, r_BC, r_E); + AddCycles (4 + 4 + 4); + break; + case OUT_xC_H: + Z80OutPort (regs, r_BC, r_H); + AddCycles (4 + 4 + 4); + break; + case OUT_xC_L: + Z80OutPort (regs, r_BC, r_L); + AddCycles (4 + 4 + 4); + break; + case OUT_xC_A: + Z80OutPort (regs, r_BC, r_A); + AddCycles (4 + 4 + 4); + break; + /* * OUT (C), 0 */ + case ED_71: + Z80OutPort (regs, r_BC, 0); + AddCycles (4 + 4 + 4); + break; + + case IN_B_xC: + IN_PORT (r_B, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_C_xC: + IN_PORT (r_C, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_D_xC: + IN_PORT (r_D, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_E_xC: + IN_PORT (r_E, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_L_xC: + IN_PORT (r_L, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_H_xC: + IN_PORT (r_H, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_A_xC: + IN_PORT (r_A, r_BC); + AddCycles (4 + 4 + 4); + break; + case IN_F_xC: + IN_PORT (r_meml, r_BC); + AddCycles (4 + 4 + 4); + break; + + case LD_A_I: + r_A = regs->I; + r_F = (r_F & FLAG_C) | sz53_table[r_A] | (regs->IFF2 ? FLAG_V : 0); + AddCycles (4 + 4 + 1); + break; + + case LD_I_A: + regs->I = r_A; + AddCycles (4 + 4 + 1); + break; + + + case LD_A_R: + r_A = (regs->R.W & 0x7f) | (regs->R.W & 0x80); + r_F = (r_F & FLAG_C) | sz53_table[r_A] | (regs->IFF2 ? FLAG_V : 0); + AddCycles (4 + 4 + 1); + break; + + case LD_R_A: + regs->R.W = r_A; + AddCycles (4 + 4 + 1); + break; + + + case ADC_HL_BC: + ADC_WORD (r_BC); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + case ADC_HL_DE: + ADC_WORD (r_DE); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + case ADC_HL_HL: + ADC_WORD (r_HL); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + case ADC_HL_SP: + ADC_WORD (r_SP); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + + case SBC_HL_BC: + SBC_WORD (r_BC); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + case SBC_HL_DE: + SBC_WORD (r_DE); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + case SBC_HL_HL: + SBC_WORD (r_HL); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + case SBC_HL_SP: + SBC_WORD (r_SP); + AddCycles (4 + 4 + 4 + 1 + 2); + break; + + case RRD: + r_meml = Z80ReadMem (r_HL); + Z80WriteMem (r_HL, (r_A << 4) | (r_meml >> 4), regs); + r_A = (r_A & 0xf0) | (r_meml & 0x0f); + r_F = (r_F & FLAG_C) | sz53p_table[r_A]; + AddCycles (4 + 4 + 10); + break; + + case RLD: + r_meml = Z80ReadMem (r_HL); + Z80WriteMem (r_HL, (r_meml << 4) | (r_A & 0x0f), regs); + r_A = (r_A & 0xf0) | (r_meml >> 4); + r_F = (r_F & FLAG_C) | sz53p_table[r_A]; + AddCycles (4 + 4 + 10); + break; + + case LDI: + r_meml = Z80ReadMem (r_HL); + r_HL++; + Z80WriteMem (r_DE, r_meml, regs); + r_DE++; + r_BC--; + r_meml += r_A; + r_F = (r_F & (FLAG_C | FLAG_Z | FLAG_S)) | + (r_BC ? FLAG_V : 0) | (r_meml & FLAG_3) | + ((r_meml & 0x02) ? FLAG_5 : 0); + AddCycles (4 + 4 + 4 + 4); + break; + + case LDIR: + r_meml = Z80ReadMem (r_HL); + r_HL++; + Z80WriteMem (r_DE, r_meml, regs); + r_DE++; + r_BC--; + r_meml += r_A; + r_F = (r_F & (FLAG_C | FLAG_Z | FLAG_S)) + | (r_meml & FLAG_3) | ((r_meml & 0x02) ? FLAG_5 : 0) ; +// | (r_BC ? FLAG_V : 0) ; + AddCycles (4 + 4 + 4 + 4); + if (r_BC) + { + r_PC -= 2; + AddCycles (5); + } + break; + case LDD: + r_meml = Z80ReadMem (r_HL); + r_HL--; + Z80WriteMem (r_DE, r_meml, regs); + r_DE--; + r_BC--; + r_meml += r_A; + r_F = (r_F & (FLAG_C | FLAG_Z | FLAG_S)) | + (r_BC ? FLAG_V : 0) | (r_meml & FLAG_3) | + ((r_meml & 0x02) ? FLAG_5 : 0); + AddCycles (4 + 4 + 4 + 4); + break; + + + case LDDR: + r_meml = Z80ReadMem (r_HL); + Z80WriteMem (r_DE, r_meml, regs); + r_HL--; + r_DE--; + r_BC--; + r_meml += r_A; + r_F = (r_F & (FLAG_C | FLAG_Z | FLAG_S)) + | (r_meml & FLAG_3) | ((r_meml & 0x02) ? FLAG_5 : 0) ; +// | (r_BC ? FLAG_V : 0) ; + AddCycles (4 + 4 + 4 + 4 + 1); + if (r_BC) + { + r_PC -= 2; + AddCycles (4); + } + break; + + // I had lots of problems with CPI, INI, CPD, IND, OUTI, OUTD and so... + // Thanks a lot to Philip Kendall for letting me to take a look to his + // fuse emulator and allowing me to use their flag routines :-) + case CPI: + r_meml = Z80ReadMem (r_HL); + r_memh = r_A - r_meml; + r_opl = ((r_A & 0x08) >> 3) | + (((r_meml) & 0x08) >> 2) | ((r_meml & 0x08) >> 1); + r_HL++; + r_BC--; + r_F = (r_F & FLAG_C) | + (r_BC ? (FLAG_V | FLAG_N) : FLAG_N) | + halfcarry_sub_table[r_opl] | (r_memh ? 0 : FLAG_Z) | (r_memh & FLAG_S); + if (r_F & FLAG_H) + r_memh--; + r_F |= (r_memh & FLAG_3) | ((r_memh & 0x02) ? FLAG_5 : 0); + AddCycles (4 + 4 + 4 + 4); + break; + + case CPIR: + r_meml = Z80ReadMem (r_HL); + r_memh = r_A - r_meml; + r_opl = ((r_A & 0x08) >> 3) | + (((r_meml) & 0x08) >> 2) | ((r_meml & 0x08) >> 1); + r_HL++; + r_BC--; + r_F = (r_F & FLAG_C) | + (r_BC ? (FLAG_V | FLAG_N) : FLAG_N) | + halfcarry_sub_table[r_opl] | (r_memh ? 0 : FLAG_Z) | (r_memh & FLAG_S); + if (r_F & FLAG_H) + r_memh--; + r_F |= (r_memh & FLAG_3) | ((r_memh & 0x02) ? FLAG_5 : 0); + if ((r_F & (FLAG_V | FLAG_Z)) == FLAG_V) + { + AddCycles (5); + r_PC -= 2; + } + AddCycles (4 + 4 + 4 + 4); + break; + + case CPD: + r_meml = Z80ReadMem (r_HL); + r_memh = r_A - r_meml; + r_opl = ((r_A & 0x08) >> 3) | + (((r_meml) & 0x08) >> 2) | ((r_memh & 0x08) >> 1); + r_HL--; + r_BC--; + r_F = (r_F & FLAG_C) | + (r_BC ? (FLAG_V | FLAG_N) : FLAG_N) | + halfcarry_sub_table[r_opl] | (r_memh ? 0 : FLAG_Z) | (r_memh & FLAG_S); + if (r_F & FLAG_H) + r_memh--; + r_F |= (r_memh & FLAG_3) | ((r_memh & 0x02) ? FLAG_5 : 0); + AddCycles (4 + 4 + 4 + 4); + break; + + case CPDR: + r_meml = Z80ReadMem (r_HL); + r_memh = r_A - r_meml; + r_opl = ((r_A & 0x08) >> 3) | + (((r_meml) & 0x08) >> 2) | ((r_memh & 0x08) >> 1); + r_HL--; + r_BC--; + r_F = (r_F & FLAG_C) | + (r_BC ? (FLAG_V | FLAG_N) : FLAG_N) | + halfcarry_sub_table[r_opl] | (r_memh ? 0 : FLAG_Z) | (r_memh & FLAG_S); + if (r_F & FLAG_H) + r_memh--; + r_F |= (r_memh & FLAG_3) | ((r_memh & 0x02) ? FLAG_5 : 0); + if ((r_F & (FLAG_V | FLAG_Z)) == FLAG_V) + { + AddCycles (5); + r_PC -= 2; + } + AddCycles (4 + 4 + 4 + 4); + break; + + // I/O block instructions by Metalbrain - 14-5-2001 + case IND: + r_meml = Z80InPort (regs, (r_BC)); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80WriteMem (r_HL, r_meml, regs); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl--; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_dec1_table[(r_opl)]); + r_HL--; + AddCycles (4 + 4 + 4 + 4); + break; + + case INDR: + r_meml = Z80InPort (regs, (r_BC)); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80WriteMem (r_HL, r_meml, regs); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl--; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_dec1_table[(r_opl)]); + r_HL--; + if (r_B) + { + r_PC -= 2; + AddCycles (5); + } + AddCycles (4 + 4 + 4 + 4); + break; + + case INI: + r_meml = Z80InPort (regs, (r_BC)); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80WriteMem (r_HL, r_meml, regs); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl++; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_inc1_table[(r_opl)]); + r_HL++; + AddCycles (4 + 4 + 4 + 4); + break; + + + case INIR: + r_meml = Z80InPort (regs, (r_BC)); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80WriteMem (r_HL, r_meml, regs); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl++; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_inc1_table[(r_opl)]); + r_HL++; + if (r_B) + { + r_PC -= 2; + AddCycles (5); + } + AddCycles (4 + 4 + 4 + 4); + break; + + case OUTI: + r_meml = Z80ReadMem (r_HL); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80OutPort (regs, r_BC, r_meml); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl++; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_inc1_table[(r_opl)]); + r_HL++; + AddCycles (4 + 4 + 4 + 4); + break; + + case OTIR: + r_meml = Z80ReadMem (r_HL); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80OutPort (regs, r_BC, r_meml); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl++; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_inc1_table[(r_opl)]); + r_HL++; + if (r_B) + { + r_PC -= 2; + AddCycles (5); + } + AddCycles (4 + 4 + 4 + 4); + break; + + + case OUTD: + r_meml = Z80ReadMem (r_HL); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80OutPort (regs, r_BC, r_meml); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl--; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_dec1_table[(r_opl)]); + r_HL--; + AddCycles (4 + 4 + 4 + 4); + break; + + case OTDR: + r_meml = Z80ReadMem (r_HL); + r_memh = 0; + r_F = (r_F & FLAG_C) | ((r_B) & 0x0f ? 0 : FLAG_H) | FLAG_N; + (r_B)--; + r_F |= ((r_B) == 0x7f ? FLAG_V : 0) | sz53_table[(r_B)]; + r_F &= 0xE8; + Z80OutPort (regs, r_BC, r_meml); + r_F |= ((r_meml & 0x80) >> 6); + r_opl = r_C; + r_oph = 0; + r_opl--; + r_op += r_mem; + r_oph += (r_oph << 4); + r_F |= r_oph; + r_opl = (r_meml & 7) + ((r_C & 7) << 3); + r_F |= (ioblock_2_table[(r_B)] ^ ioblock_dec1_table[(r_opl)]); + r_HL--; + if (r_B) + { + r_PC -= 2; + AddCycles (5); + } + AddCycles (4 + 4 + 4 + 4); + break; + +// End of Metalbrain's contribution + + case PREFIX_ED: + AddCycles (4); /* ED ED xx = 12 cycles min = 4+8 */ + r_PC--; + break; + + default: +// exit(1); + AddCycles (4 + 4); /* Just a NOP */ + break; + } diff --git a/MCUME_teensy/teensyspeccy/altz80/opcodes.h b/MCUME_teensy/teensyspeccy/altz80/opcodes.h new file mode 100755 index 0000000..e8fee4c --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/opcodes.h @@ -0,0 +1,1539 @@ +/*==================================================================== + opcodes.c -> This file executes the single-byte Z80 opcodes. + + The CPU fetchs the byte pointed by the PC register (Program Counter) + into de IR (Instruction Register) and decodes it. The value of this + fetched byte (opcode) determines what operation the CPU must do. + On Z80 (which uses 8 bit for the IW register) this means that we + can have 256 (2^8) different opcodes. The z80 uses a simple trick + called PREFIXES to obtain more opcodes by using more than one byte + in the decoding (see opcodes_cb.c to know how it does it). + + This file executes the whole list of single-byte opcodes. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + =====================================================================*/ + +/* About the AddCycles(4) -> Remember that reading from memory + takes 3 cycles plus 1 of the decoding. + Add 3 cycles for each operand fetch, and + 3 more for each memory write/read. */ + + +case NOP: +AddCycles (4); +break; +case LD_BC_NN: +LD_rr_nn (r_BC); +AddCycles (4 + 3 + 3); +break; +case LD_xBC_A: +STORE_r (r_BC, r_A); +AddCycles (4 + 3); +break; +case INC_BC: +r_BC++; +AddCycles (4 + 2); +break; + +case INC_B: +INC (r_B); +AddCycles (4); +break; +case DEC_B: +DEC (r_B); +AddCycles (4); +break; + +case LD_B_N: +LD_r_n (r_B); +AddCycles (4 + 3); +break; + +case EX_AF_AF: +EX_WORD (r_AF, r_AFs); +AddCycles (4); +break; + +case LD_A_xBC: +LOAD_r (r_A, r_BC); +AddCycles (4 + 3); +break; + +case DEC_BC: +r_BC--; +AddCycles (4 + 2); +break; + +case INC_C: +INC (r_C); +AddCycles (4); +break; + +case DEC_C: +DEC (r_C); +AddCycles (4); +break; + +case LD_C_N: +LD_r_n (r_C); +AddCycles (4 + 3); +break; + +case LD_DE_NN: +LD_rr_nn (r_DE); +AddCycles (4 + 3 + 3); +break; + +case LD_xDE_A: +STORE_r (r_DE, r_A); +AddCycles (4 + 3); +break; + +case INC_DE: +r_DE++; +AddCycles (4 + 2); +break; + +case INC_D: +INC (r_D); +AddCycles (4); +break; + +case DEC_D: +DEC (r_D); +AddCycles (4); +break; + +case LD_D_N: +LD_r_n (r_D); +AddCycles (4 + 3); +break; + +case ADD_HL_BC: +ADD_WORD (r_HL, r_BC); +AddCycles (4 + 3 + 3 + 1); +break; +case ADD_HL_DE: +ADD_WORD (r_HL, r_DE); +AddCycles (4 + 3 + 3 + 1); +break; +case ADD_HL_HL: +ADD_WORD (r_HL, r_HL); +AddCycles (4 + 3 + 3 + 1); +break; +case ADD_HL_SP: +ADD_WORD (r_HL, r_SP); +AddCycles (4 + 3 + 3 + 1); +break; + +case LD_A_xDE: +LOAD_r (r_A, r_DE); +AddCycles (4 + 3); +break; + +case DEC_DE: +r_DE--; +AddCycles (4 + 2); +break; + +case INC_E: +INC (r_E); +AddCycles (4); +break; + +case DEC_E: +DEC (r_E); +AddCycles (4); +break; + +case LD_E_N: +LD_r_n (r_E); +AddCycles (4 + 3); +break; + +case LD_HL_NN: +LD_rr_nn (r_HL); +AddCycles (4 + 3 + 3); +break; + +case LD_xNN_HL: +STORE_nn_rr (r_HL); +AddCycles (4 + 3 + 3 + 3 + 3); +break; + +case INC_HL: +r_HL++; +AddCycles (4 + 2); +break; + +case INC_H: +INC (r_H); +AddCycles (4); +break; + +case DEC_H: +DEC (r_H); +AddCycles (4); +break; + +case LD_H_N: +LD_r_n (r_H); +AddCycles (4 + 3); +break; + +case LD_HL_xNN: +LOAD_rr_nn (r_HL); +AddCycles (4 + 3 + 3 + 3 + 3); +break; + +case DEC_HL: +r_HL--; +AddCycles (4 + 2); +break; + +case INC_L: +INC (r_L); +AddCycles (4); +break; + +case DEC_L: +DEC (r_L); +AddCycles (4); +break; + +case LD_L_N: +LD_r_n (r_L); +AddCycles (4 + 3); +break; + +case LD_SP_NN: +LD_rr_nn (r_SP); +AddCycles (10); +break; + +case LD_xNN_A: +STORE_nn_r (r_A); +AddCycles (13); +break; + +case INC_SP: +r_SP++; +AddCycles (6); +break; + +case LD_xHL_N: +r_meml = Z80ReadMem (r_PC); +r_PC++; +STORE_r (r_HL, r_meml); +AddCycles (10); +break; + +case LD_A_xNN: +LOAD_r_nn (r_A); +AddCycles (13); +break; + +case DEC_SP: +r_SP--; +AddCycles (6); +break; + +case INC_A: +INC (r_A); +AddCycles (4); +break; + +case DEC_A: +DEC (r_A); +AddCycles (4); +break; + +case LD_A_N: +LD_r_n (r_A); +AddCycles (4 + 3); +break; + +case LD_B_B: +LD_r_r (r_B, r_B); +AddCycles (4); +break; + +case LD_B_C: +LD_r_r (r_B, r_C); +AddCycles (4); +break; + +case LD_B_D: +LD_r_r (r_B, r_D); +AddCycles (4); +break; + +case LD_B_E: +LD_r_r (r_B, r_E); +AddCycles (4); +break; + +case LD_B_H: +LD_r_r (r_B, r_H); +AddCycles (4); +break; + +case LD_B_L: +LD_r_r (r_B, r_L); +AddCycles (4); +break; + +case LD_B_xHL: +LOAD_r (r_B, r_HL); +AddCycles (4 + 3); +break; + +case LD_B_A: +LD_r_r (r_B, r_A); +AddCycles (4); +break; + +case LD_C_B: +LD_r_r (r_C, r_B); +AddCycles (4); +break; + +case LD_C_C: +LD_r_r (r_C, r_C); +AddCycles (4); +break; + +case LD_C_D: +LD_r_r (r_C, r_D); +AddCycles (4); +break; + +case LD_C_E: +LD_r_r (r_C, r_E); +AddCycles (4); +break; +case LD_C_H: +LD_r_r (r_C, r_H); +AddCycles (4); +break; + +case LD_C_L: +LD_r_r (r_C, r_L); +AddCycles (4); +break; + +case LD_C_xHL: +LOAD_r (r_C, r_HL); +AddCycles (4 + 3); +break; + +case LD_C_A: +LD_r_r (r_C, r_A); +AddCycles (4); +break; + +case LD_D_B: +LD_r_r (r_D, r_B); +AddCycles (4); +break; + +case LD_D_C: +LD_r_r (r_D, r_C); +AddCycles (4); +break; + +case LD_D_D: +LD_r_r (r_D, r_D); +AddCycles (4); +break; + +case LD_D_E: +LD_r_r (r_D, r_E); +AddCycles (4); +break; + +case LD_D_H: +LD_r_r (r_D, r_H); +AddCycles (4); +break; + +case LD_D_L: +LD_r_r (r_D, r_L); +AddCycles (4); +break; + +case LD_D_xHL: +LOAD_r (r_D, r_HL); +AddCycles (4 + 3); +break; + +case LD_D_A: +LD_r_r (r_D, r_A); +AddCycles (4); +break; + +case LD_E_B: +LD_r_r (r_E, r_B); +AddCycles (4); +break; + +case LD_E_C: +LD_r_r (r_E, r_C); +AddCycles (4); +break; + +case LD_E_D: +LD_r_r (r_E, r_D); +AddCycles (4); +break; + +case LD_E_E: +LD_r_r (r_E, r_E); +AddCycles (4); +break; + +case LD_E_H: +LD_r_r (r_E, r_H); +AddCycles (4); +break; + +case LD_E_L: +LD_r_r (r_E, r_L); +AddCycles (4); +break; + +case LD_E_xHL: +LOAD_r (r_E, r_HL); +AddCycles (4 + 3); +break; + +case LD_E_A: +LD_r_r (r_E, r_A); +AddCycles (4); +break; + +case LD_H_B: +LD_r_r (r_H, r_B); +AddCycles (4); +break; + +case LD_H_C: +LD_r_r (r_H, r_C); +AddCycles (4); +break; + +case LD_H_D: +LD_r_r (r_H, r_D); +AddCycles (4); +break; + +case LD_H_E: +LD_r_r (r_H, r_E); +AddCycles (4); +break; + +case LD_H_H: +LD_r_r (r_H, r_H); +AddCycles (4); +break; + +case LD_H_L: +LD_r_r (r_H, r_L); +AddCycles (4); +break; + +case LD_H_xHL: +LOAD_r (r_H, r_HL); +AddCycles (4 + 3); +break; + +case LD_H_A: +LD_r_r (r_H, r_A); +AddCycles (4); +break; + +case LD_L_B: +LD_r_r (r_L, r_B); +AddCycles (4); +break; + +case LD_L_C: +LD_r_r (r_L, r_C); +AddCycles (4); +break; + +case LD_L_D: +LD_r_r (r_L, r_D); +AddCycles (4); +break; + +case LD_L_E: +LD_r_r (r_L, r_E); +AddCycles (4); +break; + +case LD_L_H: +LD_r_r (r_L, r_H); +AddCycles (4); +break; + +case LD_L_L: +LD_r_r (r_L, r_L); +AddCycles (4); +break; + +case LD_L_xHL: +LOAD_r (r_L, r_HL); +AddCycles (7); +break; + +case LD_L_A: +LD_r_r (r_L, r_A); +AddCycles (4); +break; + +case LD_xHL_B: +STORE_r (r_HL, r_B); +AddCycles (4 + 3); +break; + +case LD_xHL_C: +STORE_r (r_HL, r_C); +AddCycles (4 + 3); +break; + +case LD_xHL_D: +STORE_r (r_HL, r_D); +AddCycles (4 + 3); +break; + +case LD_xHL_E: +STORE_r (r_HL, r_E); +AddCycles (4 + 3); +break; + +case LD_xHL_H: +STORE_r (r_HL, r_H); +AddCycles (4 + 3); +break; + +case LD_xHL_L: +STORE_r (r_HL, r_L); +AddCycles (4 + 3); +break; + +case LD_xHL_A: +STORE_r (r_HL, r_A); +AddCycles (4 + 3); +break; + +case LD_A_B: +LD_r_r (r_A, r_B); +AddCycles (4); +break; + +case LD_A_C: +LD_r_r (r_A, r_C); +AddCycles (4); +break; + +case LD_A_D: +LD_r_r (r_A, r_D); +AddCycles (4); +break; + +case LD_A_E: +LD_r_r (r_A, r_E); +AddCycles (4); +break; + +case LD_A_H: +LD_r_r (r_A, r_H); +AddCycles (4); +break; + +case LD_A_L: +LD_r_r (r_A, r_L); +AddCycles (4); +break; + +case LD_A_xHL: +LOAD_r (r_A, r_HL); +AddCycles (4 + 3); +break; + +case LD_A_A: +LD_r_r (r_A, r_A); +AddCycles (4); +break; + +case LD_SP_HL: +LD_r_r (r_SP, r_HL); +AddCycles (6); +break; + +case ADD_B: +ADD (r_B); +AddCycles (4); +break; +case ADD_C: +ADD (r_C); +AddCycles (4); +break; +case ADD_D: +ADD (r_D); +AddCycles (4); +break; +case ADD_E: +ADD (r_E); +AddCycles (4); +break; +case ADD_H: +ADD (r_H); +AddCycles (4); +break; +case ADD_L: +ADD (r_L); +AddCycles (4); +break; +case ADD_xHL: +r_meml = Z80ReadMem (r_HL); +ADD (r_meml); +AddCycles (4 + 3); +break; +case ADD_A: +ADD (r_A); +AddCycles (4); +break; +case ADC_B: +ADC (r_B); +AddCycles (4); +break; +case ADC_C: +ADC (r_C); +AddCycles (4); +break; +case ADC_D: +ADC (r_D); +AddCycles (4); +break; +case ADC_E: +ADC (r_E); +AddCycles (4); +break; +case ADC_H: +ADC (r_H); +AddCycles (4); +break; +case ADC_L: +ADC (r_L); +AddCycles (4); +break; +case ADC_xHL: +r_meml = Z80ReadMem (r_HL); +ADC (r_meml); +AddCycles (4 + 3); +break; +case ADC_A: +ADC (r_A); +AddCycles (4); +break; +case ADC_N: +r_meml = Z80ReadMem (r_PC); +r_PC++; +ADC (r_meml); +AddCycles (4 + 3); +break; + +case SUB_A: +SUB (r_A); +AddCycles (4); +break; +case SUB_B: +SUB (r_B); +AddCycles (4); +break; +case SUB_C: +SUB (r_C); +AddCycles (4); +break; +case SUB_D: +SUB (r_D); +AddCycles (4); +break; +case SUB_E: +SUB (r_E); +AddCycles (4); +break; +case SUB_H: +SUB (r_H); +AddCycles (4); +break; +case SUB_L: +SUB (r_L); +AddCycles (4); +break; +case SUB_xHL: +r_meml = Z80ReadMem (r_HL); +SUB (r_meml); +AddCycles (4 + 3); +break; +case SUB_N: +r_meml = Z80ReadMem (r_PC); +r_PC++; +SUB (r_meml); +AddCycles (4 + 3); +break; + +case SBC_A: +SBC (r_A); +AddCycles (4); +break; +case SBC_B: +SBC (r_B); +AddCycles (4); +break; +case SBC_C: +SBC (r_C); +AddCycles (4); +break; +case SBC_D: +SBC (r_D); +AddCycles (4); +break; +case SBC_E: +SBC (r_E); +AddCycles (4); +break; +case SBC_H: +SBC (r_H); +AddCycles (4); +break; +case SBC_L: +SBC (r_L); +AddCycles (4); +break; +case SBC_xHL: +r_meml = Z80ReadMem (r_HL); +SBC (r_meml); +AddCycles (4 + 3); +break; +case SBC_N: +r_meml = Z80ReadMem (r_PC); +r_PC++; +SBC (r_meml); +AddCycles (4); +break; + +case AND_B: +AND (r_B); +AddCycles (4); +break; +case AND_C: +AND (r_C); +AddCycles (4); +break; +case AND_D: +AND (r_D); +AddCycles (4); +break; +case AND_E: +AND (r_E); +AddCycles (4); +break; +case AND_H: +AND (r_H); +AddCycles (4); +break; +case AND_L: +AND (r_L); +AddCycles (4); +break; +case AND_xHL: +AND_mem (r_HL); +AddCycles (4 + 3); +break; +case AND_A: +AND (r_A); +AddCycles (4); +break; +case XOR_B: +XOR (r_B); +AddCycles (4); +break; +case XOR_C: +XOR (r_C); +AddCycles (4); +break; +case XOR_D: +XOR (r_D); +AddCycles (4); +break; +case XOR_E: +XOR (r_E); +AddCycles (4); +break; +case XOR_H: +XOR (r_H); +AddCycles (4); +break; +case XOR_L: +XOR (r_L); +AddCycles (4); +break; +case XOR_xHL: +XOR_mem (r_HL); +AddCycles (4 + 3); +break; +case XOR_A: +XOR (r_A); +AddCycles (4); +break; +case OR_B: +OR (r_B); +AddCycles (4); +break; +case OR_C: +OR (r_C); +AddCycles (4); +break; +case OR_D: +OR (r_D); +AddCycles (4); +break; +case OR_E: +OR (r_E); +AddCycles (4); +break; +case OR_H: +OR (r_H); +AddCycles (4); +break; +case OR_L: +OR (r_L); +AddCycles (4); +break; +case OR_xHL: +OR_mem (r_HL); +AddCycles (4 + 3); +break; +case OR_A: +OR (r_A); +AddCycles (4); +break; +case CP_A: +CP (r_A); +AddCycles (4); +break; +case CP_B: +CP (r_B); +AddCycles (4); +break; +case CP_C: +CP (r_C); +AddCycles (4); +break; +case CP_D: +CP (r_D); +AddCycles (4); +break; +case CP_E: +CP (r_E); +AddCycles (4); +break; +case CP_H: +CP (r_H); +AddCycles (4); +break; +case CP_L: +CP (r_L); +AddCycles (4); +break; +case CP_xHL: +r_meml = Z80ReadMem (r_HL); +CP (r_meml); +AddCycles (4 + 3); +break; +case CP_N: +r_meml = Z80ReadMem (r_PC); +r_PC++; +CP (r_meml); +AddCycles (4 + 3); +break; + +case RET_Z: +if (TEST_FLAG (Z_FLAG)) + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } +else + { + AddCycles (4 + 1); + } + +break; + +case RET_C: +if (TEST_FLAG (C_FLAG)) + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } +else + { + AddCycles (4 + 1); + } + +break; + +case RET_M: +if (TEST_FLAG (S_FLAG)) + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } +else + { + AddCycles (4 + 1); + } + +break; + +case RET_PE: +if (TEST_FLAG (P_FLAG)) + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } +else + { + AddCycles (4 + 1); + } + +break; + +case RET_PO: +if (TEST_FLAG (P_FLAG)) + { + AddCycles (4 + 1); + } +else + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } + +break; + +case RET_P: +if (TEST_FLAG (S_FLAG)) + { + AddCycles (4 + 1); + } +else + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } + +break; + +case RET: +RET_nn (); +AddCycles (4 + 3 + 3); +break; + +case RET_NZ: +if (TEST_FLAG (Z_FLAG)) + { + AddCycles (4 + 1); + } +else + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } + +break; + +case RET_NC: +if (TEST_FLAG (C_FLAG)) + { + AddCycles (4 + 1); + } +else + { + RET_nn (); + AddCycles (4 + 1 + 3 + 3); + } + +break; + +case ADD_N: +r_meml = Z80ReadMem (r_PC); +r_PC++; +ADD (r_meml); +AddCycles (4 + 3); +break; + +case JR: +JR_n (); +AddCycles (4 + 3 + 3 + 2); +break; + +case JR_NZ: +if (TEST_FLAG (Z_FLAG)) + { + r_PC++; + AddCycles (4 + 3); + } +else + { + JR_n (); + AddCycles (4 + 8); + } + +break; + +case JR_Z: +if (TEST_FLAG (Z_FLAG)) + { + JR_n (); + AddCycles (4 + 8); + } +else + { + r_PC++; + AddCycles (4 + 3); + } + +break; + +case JR_NC: +if (TEST_FLAG (C_FLAG)) + { + r_PC++; + AddCycles (4 + 3); + } +else + { + JR_n (); + AddCycles (4 + 8); + } + +break; + +case JR_C: +if (TEST_FLAG (C_FLAG)) + { + JR_n (); + AddCycles (4 + 8); + } +else + { + r_PC++; + AddCycles (4 + 3); + } + +break; + +case JP_NZ: +if (TEST_FLAG (Z_FLAG)) + { + r_PC += 2; + } +else + { + JP_nn (); + } + +AddCycles (4 + 3 + 3); +break; + +case JP: +JP_nn (); +AddCycles (4 + 3 + 3); +break; + +case JP_Z: +if (TEST_FLAG (Z_FLAG)) + { + JP_nn (); + } +else + { + r_PC += 2; + } + +AddCycles (4 + 3 + 3); +break; + +case JP_NC: +if (TEST_FLAG (C_FLAG)) + { + r_PC += 2; + } +else + { + JP_nn (); + } + +AddCycles (4 + 3 + 3); +break; + +case JP_C: +if (TEST_FLAG (C_FLAG)) + { + JP_nn (); + } +else + { + r_PC += 2; + } + +AddCycles (4 + 3 + 3); +break; + +case JP_PO: +if (TEST_FLAG (P_FLAG)) + { + r_PC += 2; + } +else + { + JP_nn (); + } + +AddCycles (4 + 3 + 3); +break; + +case JP_PE: +if (TEST_FLAG (P_FLAG)) + { + JP_nn (); + } +else + { + r_PC += 2; + } + +AddCycles (4 + 3 + 3); +break; + +case JP_P: +if (TEST_FLAG (S_FLAG)) + { + r_PC += 2; + } +else + { + JP_nn (); + } + +AddCycles (4 + 3 + 3); +break; + + +case JP_M: +if (TEST_FLAG (S_FLAG)) + { + JP_nn (); + } +else + { + r_PC += 2; + } + +AddCycles (4 + 3 + 3); +break; + +case JP_xHL: +r_PC = r_HL; +AddCycles (4); +break; + +case CPL: +r_A ^= 0xFF; +r_F = (r_F & (FLAG_C | FLAG_P | FLAG_Z | FLAG_S)) | + (r_A & (FLAG_3 | FLAG_5)) | (FLAG_N | FLAG_H); +AddCycles (4); +break; + +case INC_xHL: +r_meml = Z80ReadMem (r_HL); +INC (r_meml); +Z80WriteMem (r_HL, r_meml, regs); +AddCycles (4 + 3 + 3 + 1); +break; + +case DEC_xHL: +r_meml = Z80ReadMem (r_HL); +DEC (r_meml); +Z80WriteMem (r_HL, r_meml, regs); +AddCycles (4 + 3 + 3 + 1); +break; + +case SCF: +r_F = r_F | FLAG_C; +r_F &= FLAG_Z | FLAG_S | FLAG_P; +if (r_F & FLAG_H) + r_F ^= FLAG_H; +r_F |= FLAG_C; +AddCycles (4); +break; + +case CCF: +r_F = (r_F & (FLAG_P | FLAG_Z | FLAG_S)) | + ((r_F & FLAG_C) ? FLAG_H : FLAG_C) | (r_A & (FLAG_3 | FLAG_5)); +AddCycles (4); +break; + +case HALT: +regs->halted = 1; +AddCycles (4); +break; + +case POP_BC: +POP (BC); +AddCycles (10); +break; +case PUSH_BC: +PUSH (BC); +AddCycles (11); +break; +case POP_HL: +POP (HL); +AddCycles (10); +break; +case PUSH_HL: +PUSH (HL); +AddCycles (11); +break; +case POP_AF: +POP (AF); +AddCycles (10); +break; +case PUSH_AF: +PUSH (AF); +AddCycles (11); +break; +case POP_DE: +POP (DE); +AddCycles (10); +break; +case PUSH_DE: +PUSH (DE); +AddCycles (11); +break; + +case RLCA: +r_A = (r_A << 1) | (r_A >> 7); +r_F = (r_F & (FLAG_P | FLAG_Z | FLAG_S)) | (r_A & (FLAG_C | FLAG_3 | FLAG_5)); +AddCycles (4); +break; + +case RRCA: +r_F = (r_F & (FLAG_P | FLAG_Z | FLAG_S)) | (r_A & FLAG_C); +r_A = (r_A >> 1) | (r_A << 7); +r_F |= (r_A & (FLAG_3 | FLAG_5)); +AddCycles (4); +break; + +case DJNZ: +r_B--; +if (r_B) + { + JR_n (); + AddCycles (13); + } +else + { + r_PC++; + AddCycles (8); + } + +break; + +case RLA: +r_meml = r_A; +r_A = (r_A << 1) | (r_F & FLAG_C); +r_F = (r_F & (FLAG_P | FLAG_Z | FLAG_S)) | + (r_A & (FLAG_3 | FLAG_5)) | (r_meml >> 7); +AddCycles (4); +break; + +case RRA: +r_meml = r_A; +r_A = (r_A >> 1) | (r_F << 7); +r_F = (r_F & (FLAG_P | FLAG_Z | FLAG_S)) | + (r_A & (FLAG_3 | FLAG_5)) | (r_meml & FLAG_C); +AddCycles (4); +break; + +case DAA: +r_meml = 0; +r_memh = (r_F & FLAG_C); +if ((r_F & FLAG_H) || ((r_A & 0x0f) > 9)) + r_meml = 6; +if (r_memh || (r_A > 0x9f)) + r_meml |= 0x60; +if (r_A > 0x99) + r_memh = 1; +if (r_F & FLAG_N) + { + SUB (r_meml); + } +else + { + if ((r_A > 0x90) && ((r_A & 0x0f) > 9)) + r_meml |= 0x60; + ADD (r_meml); + } + +r_F = (r_F & ~(FLAG_C | FLAG_P)) | r_memh | parity_table[r_A]; +AddCycles (4); +break; + +case OUT_N_A: +Z80OutPort (regs, Z80ReadMem (r_PC), r_A); +r_PC++; +AddCycles (11); +break; + +case IN_A_N: +r_A = Z80InPort (regs, Z80ReadMem (r_PC) + (r_A << 8)); +r_PC++; +AddCycles (11); +break; + +case EX_HL_xSP: +r_meml = Z80ReadMem (r_SP); +r_memh = Z80ReadMem (r_SP + 1); +Z80WriteMem (r_SP, r_L, regs); +Z80WriteMem (r_SP + 1, r_H, regs); +r_L = r_meml; +r_H = r_memh; +AddCycles (19); +break; + +case EXX: +EX_WORD (r_BC, r_BCs); +EX_WORD (r_DE, r_DEs); +EX_WORD (r_HL, r_HLs); +AddCycles (4); +break; + +case EX_DE_HL: +EX_WORD (r_DE, r_HL); +AddCycles (4); +break; + +case AND_N: +AND_mem (r_PC); +r_PC++; +AddCycles (4 + 3); +break; + +case XOR_N: +XOR_mem (r_PC); +r_PC++; +AddCycles (4 + 3); +break; + +case OR_N: +OR_mem (r_PC); +r_PC++; +AddCycles (4 + 3); +break; + +case DI: +r_IFF1 = r_IFF2 = 0; +AddCycles (4); +break; + +case CALL: +CALL_nn (); +AddCycles (4 + 3 + 3 + 3 + 3 + 1); +break; + +case CALL_NZ: +if (TEST_FLAG (Z_FLAG)) + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } +else + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } + +break; + +case CALL_NC: +if (TEST_FLAG (C_FLAG)) + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } +else + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } + +break; + +case CALL_PO: +if (TEST_FLAG (P_FLAG)) + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } +else + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } + +break; + +case CALL_P: +if (TEST_FLAG (S_FLAG)) + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } +else + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } + +break; + + +case CALL_Z: +if (TEST_FLAG (Z_FLAG)) + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } +else + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } + +break; + +case CALL_C: +if (TEST_FLAG (C_FLAG)) + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 4); + } +else + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } + +break; + +case CALL_PE: +if (TEST_FLAG (P_FLAG)) + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } +else + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } + +break; + +case CALL_M: +if (TEST_FLAG (S_FLAG)) + { + CALL_nn (); + AddCycles (4 + 3 + 3 + 3 + 3 + 1); + } +else + { + r_PC += 2; + AddCycles (4 + 3 + 3); + } + +break; + +case EI: +r_IFF1 = r_IFF2 = 1; + /* + Why Marat Fayzullin does this? -> + + regs->IFF2 |= 0x01; + if( regs->IRequest != INT_NOINT ) + { + regs->IBackup = regs->ICount; + regs->ICount = 0x1; + r_IFF |= 0x20; + } */ +AddCycles (4); +break; + +case RST_00: +RST (0x00); +AddCycles (11); +break; +case RST_08: +RST (0x08); +AddCycles (11); +break; +case RST_10: +RST (0x10); +AddCycles (11); +break; +case RST_18: +RST (0x18); +AddCycles (11); +break; +case RST_20: +RST (0x20); +AddCycles (11); +break; +case RST_28: +RST (0x28); +AddCycles (11); +break; +case RST_30: +RST (0x30); +AddCycles (11); +break; +case RST_38: +RST (0x38); +AddCycles (11); +break; + +default: +// exit(1); +break; diff --git a/MCUME_teensy/teensyspeccy/altz80/opddfdcb.h b/MCUME_teensy/teensyspeccy/altz80/opddfdcb.h new file mode 100755 index 0000000..9099fce --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/opddfdcb.h @@ -0,0 +1,270 @@ +/*==================================================================== + opcodes_ddfdcb.c -> This file executes the DD/FD CB PREFIX opcodes. + + Those are the double prefix opcodes. We found the DD prefix, which + means that we must treat HL as IX, and then we found the CB prefix, + so we must apply this rule to the CB PREFIX list of opcodes. A + signed byte displacement is also added, and it's located BEFORE + the DD CB opcode: + + ie: CB 2E = SRA (HL) + DD CB xx 2E = SRA (IX+xx) + + (or...) + + Those are the double prefix opcodes. We found the FD prefix, which + means that we must treat HL as IY, and then we found the CB prefix, + so we must apply this rule to the CB PREFIX list of opcodes. A + signed byte displacement is also added, and it's located BEFORE + the FD CB opcode: + + ie: CB 2E = SRA (HL) + FD CB xx 2E = SRA (IY+xx) + + Call here using something like #define REGISTER regs->IX + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + =====================================================================*/ + +#include "macros.h" + +/* 15 clock cycles minimum = FD/DD CB xx opcode = 4 + 4 + 3 + 4 */ + +tmpreg.W = REGISTER.W + (offset) Z80ReadMem (r_PC); + +regs->PC.W++; +//r_PC++; +r_meml = Z80ReadMem (tmpreg.W); +opcode = Z80ReadMem (r_PC); +r_PC++; + +switch (opcode) + { + + case RLC_xIXY: + RLC (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case RRC_xIXY: + RRC (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case RL_xIXY: + RL (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case RR_xIXY: + RR (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case SLA_xIXY: + SLA (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case SRA_xIXY: + SRA (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case SLL_xIXY: + SLL (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case SRL_xIXY: + SRL (r_meml); + Z80WriteMem (tmpreg.W, r_meml, regs); + AddCycles (23); + break; + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x47: + case BIT_0_xIXY: + BIT_BIT (0, r_meml); + AddCycles (15 + 5); + break; + + case 0x48: + case 0x49: + case 0x4a: + case 0x4b: + case 0x4c: + case 0x4d: + case 0x4f: + case BIT_1_xIXY: + BIT_BIT (1, r_meml); + AddCycles (15 + 5); + break; + + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x57: + case BIT_2_xIXY: + BIT_BIT (2, r_meml); + AddCycles (15 + 5); + break; + + case 0x58: + case 0x59: + case 0x5a: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x5f: + case BIT_3_xIXY: + BIT_BIT (3, r_meml); + AddCycles (15 + 5); + break; + + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x67: + case BIT_4_xIXY: + BIT_BIT (4, r_meml); + AddCycles (15 + 5); + break; + + case 0x68: + case 0x69: + case 0x6a: + case 0x6b: + case 0x6c: + case 0x6d: + case 0x6f: + case BIT_5_xIXY: + BIT_BIT (5, r_meml); + AddCycles (15 + 5); + break; + + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x77: + case BIT_6_xIXY: + BIT_BIT (6, r_meml); + AddCycles (15 + 5); + break; + case 0x78: + case 0x79: + case 0x7a: + case 0x7b: + case 0x7c: + case 0x7d: + case 0x7f: + case BIT_7_xIXY: + BIT_BIT7 (r_meml); + AddCycles (15 + 5); + break; + + case RES_0_xIXY: + BIT_RES_mem (0, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_1_xIXY: + BIT_RES_mem (1, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_2_xIXY: + BIT_RES_mem (2, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_3_xIXY: + BIT_RES_mem (3, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_4_xIXY: + BIT_RES_mem (4, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_5_xIXY: + BIT_RES_mem (5, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_6_xIXY: + BIT_RES_mem (6, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case RES_7_xIXY: + BIT_RES_mem (7, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_0_xIXY: + BIT_SET_mem (0, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_1_xIXY: + BIT_SET_mem (1, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_2_xIXY: + BIT_SET_mem (2, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_3_xIXY: + BIT_SET_mem (3, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_4_xIXY: + BIT_SET_mem (4, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_5_xIXY: + BIT_SET_mem (5, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_6_xIXY: + BIT_SET_mem (6, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + case SET_7_xIXY: + BIT_SET_mem (7, tmpreg.W, r_meml); + AddCycles (15 + 5 + 3); + break; + + +/* + I must still include the undocumented opcodes such as: + LD B, RLC(REGISTER+dd) and so on ... + +*/ + default: + AddCycles (15); +// exit(1); + + break; + } diff --git a/MCUME_teensy/teensyspeccy/altz80/tables.h b/MCUME_teensy/teensyspeccy/altz80/tables.h new file mode 100755 index 0000000..d7967f8 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/tables.h @@ -0,0 +1,822 @@ +/*===================================================================== + tables.h -> Header file containing the defines for Z80 opcodes. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + ======================================================================*/ + +#ifndef TABLES_H +#define TABLES_H + +/*--- One byte opcodes: ----------------------------------------------*/ +#define NOP 0 +#define LD_BC_NN 1 +#define LD_xBC_A 2 +#define INC_BC 3 +#define INC_B 4 +#define DEC_B 5 +#define LD_B_N 6 +#define RLCA 7 +#define EX_AF_AF 8 +#define ADD_HL_BC 9 +#define LD_A_xBC 10 +#define DEC_BC 11 +#define INC_C 12 +#define DEC_C 13 +#define LD_C_N 14 +#define RRCA 15 +#define DJNZ 16 +#define LD_DE_NN 17 +#define LD_xDE_A 18 +#define INC_DE 19 +#define INC_D 20 +#define DEC_D 21 +#define LD_D_N 22 +#define RLA 23 +#define JR 24 +#define ADD_HL_DE 25 +#define LD_A_xDE 26 +#define DEC_DE 27 +#define INC_E 28 +#define DEC_E 29 +#define LD_E_N 30 +#define RRA 31 +#define JR_NZ 32 +#define LD_HL_NN 33 +#define LD_xNN_HL 34 +#define INC_HL 35 +#define INC_H 36 +#define DEC_H 37 +#define LD_H_N 38 +#define DAA 39 +#define JR_Z 40 +#define ADD_HL_HL 41 +#define LD_HL_xNN 42 +#define DEC_HL 43 +#define INC_L 44 +#define DEC_L 45 +#define LD_L_N 46 +#define CPL 47 +#define JR_NC 48 +#define LD_SP_NN 49 +#define LD_xNN_A 50 +#define INC_SP 51 +#define INC_xHL 52 +#define DEC_xHL 53 +#define LD_xHL_N 54 +#define SCF 55 +#define JR_C 56 +#define ADD_HL_SP 57 +#define LD_A_xNN 58 +#define DEC_SP 59 +#define INC_A 60 +#define DEC_A 61 +#define LD_A_N 62 +#define CCF 63 +#define LD_B_B 64 +#define LD_B_C 65 +#define LD_B_D 66 +#define LD_B_E 67 +#define LD_B_H 68 +#define LD_B_L 69 +#define LD_B_xHL 70 +#define LD_B_A 71 +#define LD_C_B 72 +#define LD_C_C 73 +#define LD_C_D 74 +#define LD_C_E 75 +#define LD_C_H 76 +#define LD_C_L 77 +#define LD_C_xHL 78 +#define LD_C_A 79 +#define LD_D_B 80 +#define LD_D_C 81 +#define LD_D_D 82 +#define LD_D_E 83 +#define LD_D_H 84 +#define LD_D_L 85 +#define LD_D_xHL 86 +#define LD_D_A 87 +#define LD_E_B 88 +#define LD_E_C 89 +#define LD_E_D 90 +#define LD_E_E 91 +#define LD_E_H 92 +#define LD_E_L 93 +#define LD_E_xHL 94 +#define LD_E_A 95 +#define LD_H_B 96 +#define LD_H_C 97 +#define LD_H_D 98 +#define LD_H_E 99 +#define LD_H_H 100 +#define LD_H_L 101 +#define LD_H_xHL 102 +#define LD_H_A 103 +#define LD_L_B 104 +#define LD_L_C 105 +#define LD_L_D 106 +#define LD_L_E 107 +#define LD_L_H 108 +#define LD_L_L 109 +#define LD_L_xHL 110 +#define LD_L_A 111 +#define LD_xHL_B 112 +#define LD_xHL_C 113 +#define LD_xHL_D 114 +#define LD_xHL_E 115 +#define LD_xHL_H 116 +#define LD_xHL_L 117 +#define HALT 118 +#define LD_xHL_A 119 +#define LD_A_B 120 +#define LD_A_C 121 +#define LD_A_D 122 +#define LD_A_E 123 +#define LD_A_H 124 +#define LD_A_L 125 +#define LD_A_xHL 126 +#define LD_A_A 127 +#define ADD_B 128 +#define ADD_C 129 +#define ADD_D 130 +#define ADD_E 131 +#define ADD_H 132 +#define ADD_L 133 +#define ADD_xHL 134 +#define ADD_A 135 +#define ADC_B 136 +#define ADC_C 137 +#define ADC_D 138 +#define ADC_E 139 +#define ADC_H 140 +#define ADC_L 141 +#define ADC_xHL 142 +#define ADC_A 143 +#define SUB_B 144 +#define SUB_C 145 +#define SUB_D 146 +#define SUB_E 147 +#define SUB_H 148 +#define SUB_L 149 +#define SUB_xHL 150 +#define SUB_A 151 +#define SBC_B 152 +#define SBC_C 153 +#define SBC_D 154 +#define SBC_E 155 +#define SBC_H 156 +#define SBC_L 157 +#define SBC_xHL 158 +#define SBC_A 159 +#define AND_B 160 +#define AND_C 161 +#define AND_D 162 +#define AND_E 163 +#define AND_H 164 +#define AND_L 165 +#define AND_xHL 166 +#define AND_A 167 +#define XOR_B 168 +#define XOR_C 169 +#define XOR_D 170 +#define XOR_E 171 +#define XOR_H 172 +#define XOR_L 173 +#define XOR_xHL 174 +#define XOR_A 175 +#define OR_B 176 +#define OR_C 177 +#define OR_D 178 +#define OR_E 179 +#define OR_H 180 +#define OR_L 181 +#define OR_xHL 182 +#define OR_A 183 +#define CP_B 184 +#define CP_C 185 +#define CP_D 186 +#define CP_E 187 +#define CP_H 188 +#define CP_L 189 +#define CP_xHL 190 +#define CP_A 191 +#define RET_NZ 192 +#define POP_BC 193 +#define JP_NZ 194 +#define JP 195 +#define CALL_NZ 196 +#define PUSH_BC 197 +#define ADD_N 198 +#define RST_00 199 +#define RET_Z 200 +#define RET 201 +#define JP_Z 202 +#define PREFIX_CB 203 +#define CALL_Z 204 +#define CALL 205 +#define ADC_N 206 +#define RST_08 207 +#define RET_NC 208 +#define POP_DE 209 +#define JP_NC 210 +#define OUT_N_A 211 +#define CALL_NC 212 +#define PUSH_DE 213 +#define SUB_N 214 +#define RST_10 215 +#define RET_C 216 +#define EXX 217 +#define JP_C 218 +#define IN_A_N 219 +#define CALL_C 220 +#define PREFIX_DD 221 +#define SBC_N 222 +#define RST_18 223 +#define RET_PO 224 +#define POP_HL 225 +#define JP_PO 226 +#define EX_HL_xSP 227 +#define CALL_PO 228 +#define PUSH_HL 229 +#define AND_N 230 +#define RST_20 231 +#define RET_PE 232 +#define JP_xHL 233 +#define JP_PE 234 +#define EX_DE_HL 235 +#define CALL_PE 236 +#define PREFIX_ED 237 +#define XOR_N 238 +#define RST_28 239 +#define RET_P 240 +#define POP_AF 241 +#define JP_P 242 +#define DI 243 +#define CALL_P 244 +#define PUSH_AF 245 +#define OR_N 246 +#define RST_30 247 +#define RET_M 248 +#define LD_SP_HL 249 +#define JP_M 250 +#define EI 251 +#define CALL_M 252 +#define PREFIX_FD 253 +#define CP_N 254 +#define RST_38 255 + +/*--- CB Prefix opcodes: ---------------------------------------------*/ +#define RLC_B 0 +#define RLC_C 1 +#define RLC_D 2 +#define RLC_E 3 +#define RLC_H 4 +#define RLC_L 5 +#define RLC_xHL 6 +#define RLC_A 7 +#define RRC_B 8 +#define RRC_C 9 +#define RRC_D 10 +#define RRC_E 11 +#define RRC_H 12 +#define RRC_L 13 +#define RRC_xHL 14 +#define RRC_A 15 +#define RL_B 16 +#define RL_C 17 +#define RL_D 18 +#define RL_E 19 +#define RL_H 20 +#define RL_L 21 +#define RL_xHL 22 +#define RL_A 23 +#define RR_B 24 +#define RR_C 25 +#define RR_D 26 +#define RR_E 27 +#define RR_H 28 +#define RR_L 29 +#define RR_xHL 30 +#define RR_A 31 +#define SLA_B 32 +#define SLA_C 33 +#define SLA_D 34 +#define SLA_E 35 +#define SLA_H 36 +#define SLA_L 37 +#define SLA_xHL 38 +#define SLA_A 39 +#define SRA_B 40 +#define SRA_C 41 +#define SRA_D 42 +#define SRA_E 43 +#define SRA_H 44 +#define SRA_L 45 +#define SRA_xHL 46 +#define SRA_A 47 +#define SLL_B 48 +#define SLL_C 49 +#define SLL_D 50 +#define SLL_E 51 +#define SLL_H 52 +#define SLL_L 53 +#define SLL_xHL 54 +#define SLL_A 55 +#define SRL_B 56 +#define SRL_C 57 +#define SRL_D 58 +#define SRL_E 59 +#define SRL_H 60 +#define SRL_L 61 +#define SRL_xHL 62 +#define SRL_A 63 +#define BIT_0_B 64 +#define BIT_0_C 65 +#define BIT_0_D 66 +#define BIT_0_E 67 +#define BIT_0_H 68 +#define BIT_0_L 69 +#define BIT_0_xHL 70 +#define BIT_0_A 71 +#define BIT_1_B 72 +#define BIT_1_C 73 +#define BIT_1_D 74 +#define BIT_1_E 75 +#define BIT_1_H 76 +#define BIT_1_L 77 +#define BIT_1_xHL 78 +#define BIT_1_A 79 +#define BIT_2_B 80 +#define BIT_2_C 81 +#define BIT_2_D 82 +#define BIT_2_E 83 +#define BIT_2_H 84 +#define BIT_2_L 85 +#define BIT_2_xHL 86 +#define BIT_2_A 87 +#define BIT_3_B 88 +#define BIT_3_C 89 +#define BIT_3_D 90 +#define BIT_3_E 91 +#define BIT_3_H 92 +#define BIT_3_L 93 +#define BIT_3_xHL 94 +#define BIT_3_A 95 +#define BIT_4_B 96 +#define BIT_4_C 97 +#define BIT_4_D 98 +#define BIT_4_E 99 +#define BIT_4_H 100 +#define BIT_4_L 101 +#define BIT_4_xHL 102 +#define BIT_4_A 103 +#define BIT_5_B 104 +#define BIT_5_C 105 +#define BIT_5_D 106 +#define BIT_5_E 107 +#define BIT_5_H 108 +#define BIT_5_L 109 +#define BIT_5_xHL 110 +#define BIT_5_A 111 +#define BIT_6_B 112 +#define BIT_6_C 113 +#define BIT_6_D 114 +#define BIT_6_E 115 +#define BIT_6_H 116 +#define BIT_6_L 117 +#define BIT_6_xHL 118 +#define BIT_6_A 119 +#define BIT_7_B 120 +#define BIT_7_C 121 +#define BIT_7_D 122 +#define BIT_7_E 123 +#define BIT_7_H 124 +#define BIT_7_L 125 +#define BIT_7_xHL 126 +#define BIT_7_A 127 +#define RES_0_B 128 +#define RES_0_C 129 +#define RES_0_D 130 +#define RES_0_E 131 +#define RES_0_H 132 +#define RES_0_L 133 +#define RES_0_xHL 134 +#define RES_0_A 135 +#define RES_1_B 136 +#define RES_1_C 137 +#define RES_1_D 138 +#define RES_1_E 139 +#define RES_1_H 140 +#define RES_1_L 141 +#define RES_1_xHL 142 +#define RES_1_A 143 +#define RES_2_B 144 +#define RES_2_C 145 +#define RES_2_D 146 +#define RES_2_E 147 +#define RES_2_H 148 +#define RES_2_L 149 +#define RES_2_xHL 150 +#define RES_2_A 151 +#define RES_3_B 152 +#define RES_3_C 153 +#define RES_3_D 154 +#define RES_3_E 155 +#define RES_3_H 156 +#define RES_3_L 157 +#define RES_3_xHL 158 +#define RES_3_A 159 +#define RES_4_B 160 +#define RES_4_C 161 +#define RES_4_D 162 +#define RES_4_E 163 +#define RES_4_H 164 +#define RES_4_L 165 +#define RES_4_xHL 166 +#define RES_4_A 167 +#define RES_5_B 168 +#define RES_5_C 169 +#define RES_5_D 170 +#define RES_5_E 171 +#define RES_5_H 172 +#define RES_5_L 173 +#define RES_5_xHL 174 +#define RES_5_A 175 +#define RES_6_B 176 +#define RES_6_C 177 +#define RES_6_D 178 +#define RES_6_E 179 +#define RES_6_H 180 +#define RES_6_L 181 +#define RES_6_xHL 182 +#define RES_6_A 183 +#define RES_7_B 184 +#define RES_7_C 185 +#define RES_7_D 186 +#define RES_7_E 187 +#define RES_7_H 188 +#define RES_7_L 189 +#define RES_7_xHL 190 +#define RES_7_A 191 +#define SET_0_B 192 +#define SET_0_C 193 +#define SET_0_D 194 +#define SET_0_E 195 +#define SET_0_H 196 +#define SET_0_L 197 +#define SET_0_xHL 198 +#define SET_0_A 199 +#define SET_1_B 200 +#define SET_1_C 201 +#define SET_1_D 202 +#define SET_1_E 203 +#define SET_1_H 204 +#define SET_1_L 205 +#define SET_1_xHL 206 +#define SET_1_A 207 +#define SET_2_B 208 +#define SET_2_C 209 +#define SET_2_D 210 +#define SET_2_E 211 +#define SET_2_H 212 +#define SET_2_L 213 +#define SET_2_xHL 214 +#define SET_2_A 215 +#define SET_3_B 216 +#define SET_3_C 217 +#define SET_3_D 218 +#define SET_3_E 219 +#define SET_3_H 220 +#define SET_3_L 221 +#define SET_3_xHL 222 +#define SET_3_A 223 +#define SET_4_B 224 +#define SET_4_C 225 +#define SET_4_D 226 +#define SET_4_E 227 +#define SET_4_H 228 +#define SET_4_L 229 +#define SET_4_xHL 230 +#define SET_4_A 231 +#define SET_5_B 232 +#define SET_5_C 233 +#define SET_5_D 234 +#define SET_5_E 235 +#define SET_5_H 236 +#define SET_5_L 237 +#define SET_5_xHL 238 +#define SET_5_A 239 +#define SET_6_B 240 +#define SET_6_C 241 +#define SET_6_D 242 +#define SET_6_E 243 +#define SET_6_H 244 +#define SET_6_L 245 +#define SET_6_xHL 246 +#define SET_6_A 247 +#define SET_7_B 248 +#define SET_7_C 249 +#define SET_7_D 250 +#define SET_7_E 251 +#define SET_7_H 252 +#define SET_7_L 253 +#define SET_7_xHL 254 +#define SET_7_A 255 + +/*--- ED opcodes: ----------------------------------------------------*/ +#define IN_B_xC 64 +#define OUT_xC_B 65 +#define SBC_HL_BC 66 +#define LD_xNNe_BC 67 +#define NEG 68 +#define RETN 69 +#define IM_0 70 +#define LD_I_A 71 +#define IN_C_xC 72 +#define OUT_xC_C 73 +#define ADC_HL_BC 74 +#define LD_BC_xNNe 75 +#define ED_4C 76 /* * NEG */ +#define RETI 77 +#define ED_4E 78 /* * IM 0/1 */ +#define LD_R_A 79 +#define IN_D_xC 80 +#define OUT_xC_D 81 +#define SBC_HL_DE 82 +#define LD_xNNe_DE 83 +#define ED_54 84 /* * NEG */ +#define ED_55 85 /* * RET */ +#define IM_1 86 +#define LD_A_I 87 +#define IN_E_xC 88 +#define OUT_xC_E 89 +#define ADC_HL_DE 90 +#define LD_DE_xNNe 91 +#define ED_5C 92 /* * NEG */ +#define ED_5D 93 /* * RET */ +#define IM_2 94 +#define LD_A_R 95 +#define IN_H_xC 96 +#define OUT_xC_H 97 +#define SBC_HL_HL 98 +#define LD_xNNe_HL 99 +#define ED_64 100 /* * NEG */ +#define ED_65 101 /* * RET */ +#define ED_66 102 /* * IM 0 */ +#define RRD 103 +#define IN_L_xC 104 +#define OUT_xC_L 105 +#define ADC_HL_HL 106 +#define LD_HL_xNNe 107 +#define ED_6C 108 /* * NEG */ +#define ED_6D 109 /* * RET */ +#define ED_6E 110 /* * IM 0 */ +#define RLD 111 +#define IN_F_xC 112 +#define ED_71 113 /* * OUT (C), 0 */ +#define SBC_HL_SP 114 +#define LD_xNNe_SP 115 +#define ED_74 116 /* * NEG */ +#define ED_75 117 /* * RET */ +#define ED_76 118 /* * IM 1 */ +#define ED_77 119 /* * NOP */ +#define IN_A_xC 120 +#define OUT_xC_A 121 +#define ADC_HL_SP 122 +#define LD_SP_xNNe 123 +#define ED_7C 124 /* * NEG */ +#define ED_7D 125 /* * RET */ +#define ED_7E 126 /* * IM 2 */ +#define ED_7F 127 /* * NOP */ +#define LDI 160 +#define CPI 161 +#define INI 162 +#define OUTI 163 +#define LDD 168 +#define CPD 169 +#define IND 170 +#define OUTD 171 +#define LDIR 176 +#define CPIR 177 +#define INIR 178 +#define OTIR 179 +#define LDDR 184 +#define CPDR 185 +#define INDR 186 +#define OTDR 187 +#define ED_FE 254 + +/*--- DD xx opcodes: -------------------------------------------------*/ +/* Those are the DD xx opcodes where HL is treated as IX + a + signed byte displacement n when required: DD opcode n: */ + +/*--- FD xx opcodes: -------------------------------------------------*/ +/* Those are the FD xx opcodes where HL is treated as IY + a + signed byte displacement n when required: FD opcode n: */ + +#define ADD_IXY_BC 9 +#define ADD_IXY_DE 25 +#define LD_IXY_NN 33 +#define LD_xNN_IXY 34 +#define INC_IXY 35 +#define INC_IXYh 36 +#define DEC_IXYh 37 +#define LD_IXYh_N 38 +#define ADD_IXY_IXY 41 +#define LD_IXY_xNN 42 +#define DEC_IXY 43 +#define INC_IXYl 44 +#define DEC_IXYl 45 +#define LD_IXYl_N 46 +#define INC_xIXY 52 +#define DEC_xIXY 53 +#define LD_xIXY_N 54 +#define ADD_IXY_SP 57 +#define LD_B_IXYh 68 +#define LD_B_IXYl 69 +#define LD_B_xIXY 70 +#define LD_C_IXYh 76 +#define LD_C_IXYl 77 +#define LD_C_xIXY 78 +#define LD_D_IXYh 84 +#define LD_D_IXYl 85 +#define LD_D_xIXY 86 +#define LD_E_IXYh 92 +#define LD_E_IXYl 93 +#define LD_E_xIXY 94 +#define LD_IXYh_B 96 +#define LD_IXYh_C 97 +#define LD_IXYh_D 98 +#define LD_IXYh_E 99 +#define LD_IXYh_IXYh 100 +#define LD_IXYh_IXYl 101 +#define LD_H_xIXY 102 +#define LD_IXYh_A 103 +#define LD_IXYl_B 104 +#define LD_IXYl_C 105 +#define LD_IXYl_D 106 +#define LD_IXYl_E 107 +#define LD_IXYl_IXYh 108 +#define LD_IXYl_IXYl 109 +#define LD_L_xIXY 110 +#define LD_IXYl_A 111 +#define LD_xIXY_B 112 +#define LD_xIXY_C 113 +#define LD_xIXY_D 114 +#define LD_xIXY_E 115 +#define LD_xIXY_H 116 +#define LD_xIXY_L 117 +#define LD_xIXY_A 119 +#define LD_A_IXYh 124 +#define LD_A_IXYl 125 +#define LD_A_xIXY 126 +#define ADD_IXYh 132 +#define ADD_IXYl 133 +#define ADD_xIXY 134 +#define ADC_IXYh 140 +#define ADC_IXYl 141 +#define ADC_xIXY 142 +#define SUB_IXYh 148 +#define SUB_IXYl 149 +#define SUB_xIXY 150 +#define SBC_IXYh 156 +#define SBC_IXYl 157 +#define SBC_xIXY 158 +#define AND_IXYh 164 +#define AND_IXYl 165 +#define AND_xIXY 166 +#define XOR_IXYh 172 +#define XOR_IXYl 173 +#define XOR_xIXY 174 +#define OR_IXYh 180 +#define OR_IXYl 181 +#define OR_xIXY 182 +#define CP_IXYh 188 +#define CP_IXYl 189 +#define CP_xIXY 190 +#define POP_IXY 225 +#define EX_IXY_xSP 227 +#define PUSH_IXY 229 +#define JP_IXY 233 +#define LD_SP_IXY 249 + +/*--- DD CB Prefix opcodes: ------------------------------------------*/ +/* Those are the CB xx opcodes where HL is treated as IX + a + signed byte displacement n: DD CB n opcode: */ +/*--- FD CB Prefix opcodes: ------------------------------------------*/ +/* Those are the CB xx opcodes where HL is treated as IY + a + signed byte displacement n: FD CB n opcode: */ + +#define RLC_IXYh 4 +#define RLC_IXYl 5 +#define RLC_xIXY 6 +#define RRC_IXYh 12 +#define RRC_IXYl 13 +#define RRC_xIXY 14 +#define RL_IXYh 20 +#define RL_IXYl 21 +#define RL_xIXY 22 +#define RR_IXYh 28 +#define RR_IXYl 29 +#define RR_xIXY 30 +#define SLA_IXYh 36 +#define SLA_IXYl 37 +#define SLA_xIXY 38 +#define SRA_IXYh 44 +#define SRA_IXYl 45 +#define SRA_xIXY 46 +#define SLL_IXYh 52 +#define SLL_IXYl 53 +#define SLL_xIXY 54 +#define SRL_IXYh 60 +#define SRL_IXYl 61 +#define SRL_xIXY 62 +#define BIT_0_IXYh 68 +#define BIT_0_IXYl 69 +#define BIT_0_xIXY 70 +#define BIT_1_IXYh 76 +#define BIT_1_IXYl 77 +#define BIT_1_xIXY 78 +#define BIT_2_IXYh 84 +#define BIT_2_IXYl 85 +#define BIT_2_xIXY 86 +#define BIT_3_IXYh 92 +#define BIT_3_IXYl 93 +#define BIT_3_xIXY 94 +#define BIT_4_IXYh 100 +#define BIT_4_IXYl 101 +#define BIT_4_xIXY 102 +#define BIT_5_IXYh 108 +#define BIT_5_IXYl 109 +#define BIT_5_xIXY 110 +#define BIT_6_IXYh 116 +#define BIT_6_IXYl 117 +#define BIT_6_xIXY 118 +#define BIT_7_IXYh 124 +#define BIT_7_IXYl 125 +#define BIT_7_xIXY 126 +#define RES_0_IXYh 132 +#define RES_0_IXYl 133 +#define RES_0_xIXY 134 +#define RES_1_IXYh 140 +#define RES_1_IXYl 141 +#define RES_1_xIXY 142 +#define RES_2_IXYh 148 +#define RES_2_IXYl 149 +#define RES_2_xIXY 150 +#define RES_3_IXYh 156 +#define RES_3_IXYl 157 +#define RES_3_xIXY 158 +#define RES_4_IXYh 164 +#define RES_4_IXYl 165 +#define RES_4_xIXY 166 +#define RES_5_IXYh 172 +#define RES_5_IXYl 173 +#define RES_5_xIXY 174 +#define RES_6_IXYh 180 +#define RES_6_IXYl 181 +#define RES_6_xIXY 182 +#define RES_7_IXYh 188 +#define RES_7_IXYl 189 +#define RES_7_xIXY 190 +#define SET_0_IXYh 196 +#define SET_0_IXYl 197 +#define SET_0_xIXY 198 +#define SET_1_IXYh 204 +#define SET_1_IXYl 205 +#define SET_1_xIXY 206 +#define SET_2_IXYh 212 +#define SET_2_IXYl 213 +#define SET_2_xIXY 214 +#define SET_3_IXYh 220 +#define SET_3_IXYl 221 +#define SET_3_xIXY 222 +#define SET_4_IXYh 228 +#define SET_4_IXYl 229 +#define SET_4_xIXY 230 +#define SET_5_IXYh 236 +#define SET_5_IXYl 237 +#define SET_5_xIXY 238 +#define SET_6_IXYh 244 +#define SET_6_IXYl 245 +#define SET_6_xIXY 246 +#define SET_7_IXYh 252 +#define SET_7_IXYl 253 +#define SET_7_xIXY 254 + +#endif diff --git a/MCUME_teensy/teensyspeccy/altz80/z80.c b/MCUME_teensy/teensyspeccy/altz80/z80.c new file mode 100644 index 0000000..6604976 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/z80.c @@ -0,0 +1,405 @@ +/*===================================================================== + z80.c -> Main File related to the Z80 emulation code. + + Please read documentation files to know how this works :) + + Thanks go to Marat Fayzullin (read z80.h for more info), Ra�l Gomez + (check his great R80 Spectrum emulator!), Philip Kendall (some code + of this emulator, such as the flags lookup tabled are from his fuse + Spectrum emulator) and more people I forget to name here ... + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + ======================================================================*/ + + +#include +#include "z80.h" +#include "tables.h" +#include "macros.h" + +extern int debug; + +// previously in macros.c + +/* Whether a half carry occured or not can be determined by looking at + the 3rd bit of the two arguments and the result; these are hashed + into this table in the form r12, where r is the 3rd bit of the + result, 1 is the 3rd bit of the 1st argument and 2 is the + third bit of the 2nd argument; the tables differ for add and subtract + operations */ +byte halfcarry_add_table[] = { 0, FLAG_H, FLAG_H, FLAG_H, 0, 0, 0, FLAG_H }; +byte halfcarry_sub_table[] = { 0, 0, FLAG_H, 0, FLAG_H, 0, FLAG_H, FLAG_H }; + +/* Similarly, overflow can be determined by looking at the 7th bits; again + the hash into this table is r12 */ +byte overflow_add_table[] = { 0, 0, 0, FLAG_V, FLAG_V, 0, 0, 0 }; +byte overflow_sub_table[] = { 0, FLAG_V, 0, 0, 0, 0, FLAG_V, 0 }; + +/* Some more tables; initialised in z80_init_tables() */ +byte sz53_table[0x100]; /* The S, Z, 5 and 3 bits of the temp value */ +byte parity_table[0x100]; /* The parity of the temp value */ +byte sz53p_table[0x100]; /* OR the above two tables together */ +/*------------------------------------------------------------------*/ + +// Contributed by Metalbrain to implement OUTI, etc. +byte ioblock_inc1_table[64]; +byte ioblock_dec1_table[64]; +byte ioblock_2_table[0x100]; + +/*--- Memory Write/Read on the A address on no bank machines -------------*/ +void Z80WriteMem (word where, word A, Z80 * regs) +{ + WrZ80(where, (byte)A); +} + + +int Z80ReadMem(word where) +{ + return RdZ80(where); +} + + +/*==================================================================== + void Z80Reset( Z80 *regs, int cycles ) + + This function simulates a z80 reset by setting the registers + to the values they are supposed to take on a real z80 reset. + You must pass it the Z80 register structure and the number + of cycles required to check for interrupts and do special + hardware checking/updating. + ===================================================================*/ +void +ResetZ80 (Z80 * regs, int int_cycles) +{ + /* reset PC and the rest of main registers: */ + regs->PC.W = regs->R.W = 0x0000; + + regs->AF.W = regs->BC.W = regs->DE.W = regs->HL.W = + regs->AFs.W = regs->BCs.W = regs->DEs.W = regs->HLs.W = + regs->IX.W = regs->IY.W = 0x0000; + + /* Make the stack point to $F000 */ + regs->SP.W = 0xF000; + + /* reset variables to their default values */ + regs->I = 0x00; + regs->IFF1 = regs->IFF2 = regs->IM = regs->halted = 0x00; + regs->ICount = regs->IPeriod = int_cycles; + + regs->IRequest = INT_NOINT; + regs->we_are_on_ddfd = regs->dobreak = regs->BorderColor = 0; + +} + +/*==================================================================== + word Z80Run( Z80 *regs, int numopcodes ) + + This function does the whole Z80 simulation. It consists on a + for(;;) loop (as stated on Marat's Fayzullin HOWTO -How to + Write a Computer Emulator-) which fetchs the next opcode, + interprets it (using a switch statement) and then it's + executed in the right CASE: of that switch. I've put the different + case statements into C files included here with #include to + make this more readable (and programming easier! :). + + This function will change regs->ICount register and will execute + an interrupt when it reaches 0 (or <0). You can then do anything + related to your machine emulation here, using the Z80Hardware() + function. This function must be filled by yourself: put there + the code related to the emulated machine hardware, such as + screen redrawing, sound playing and so on. This functions can + return an special value to make Z80Run stop the emulation (and + return to the caller): that's INT_QUIT. If there is time to + execute an interrupt, please return INT_IRQ or INT_NMI. Return + INT_NOINT if there is no time for an interrupt :) . + + Z80Execute() will change PC and all the z80 registers acording + to the executed opcode, and those values will be returned when + a INT_QUIT is received. + + Pass as numcycles the number of clock cycle you want to execute + z80 opcodes for or < 0 (negative) to execute "infinite" opcodes. + ===================================================================*/ +word +ExecZ80 (Z80 * regs, int numcycles) +{ + /* opcode and temp variables */ + register byte opcode; + eword tmpreg, ops, mread, tmpreg2; + unsigned long tempdword; + register int loop; + unsigned short tempword; + + /* emulate cycles */ + loop = (regs->ICount - numcycles); + + /* this is the emulation main loop */ + while (regs->ICount > loop) + { +#ifdef DEBUG + /* test if we have reached the trap address */ + if (regs->PC.W == regs->TrapAddress && regs->dobreak != 0) + return (regs->PC.W); +#endif + + if (regs->halted == 1) + { + r_PC--; + AddCycles (4); + } + + /* read the opcode from memory (pointed by PC) */ + opcode = Z80ReadMem (regs->PC.W); + regs->PC.W++; + + /* increment the R register and decode the instruction */ + AddR (1); + switch (opcode) + { +#include "opcodes.h" + case PREFIX_CB: + AddR (1); +#include "op_cb.h" + break; + case PREFIX_ED: + AddR (1); +#include "op_ed.h" + break; + case PREFIX_DD: + case PREFIX_FD: + AddR (1); + if (opcode == PREFIX_DD) + { +#define REGISTER regs->IX + regs->we_are_on_ddfd = WE_ARE_ON_DD; +#include "op_dd_fd.h" + + +#undef REGISTER + } + else + { +#define REGISTER regs->IY + regs->we_are_on_ddfd = WE_ARE_ON_FD; +#include "op_dd_fd.h" +#undef REGISTER + } + regs->we_are_on_ddfd = 0; + break; + } + + /* patch ROM loading routine */ + // address contributed by Ignacio Burgue�o :) +// if( r_PC == 0x0569 ) + if (r_PC >= 0x0556 && r_PC <= 0x056c) + Z80Patch (regs); + + /* check if it's time to do other hardware emulation */ + if (regs->ICount <= 0) { +// if (regs->petint==1) { + regs->petint=0; +/* tmpreg.W = Z80Hardware (regs); */ //Z80Hardware alwais return INT_NOINT + regs->ICount += regs->IPeriod; + loop = regs->ICount + loop; + + /* check if we must exit the emulation or there is an INT */ +/* if (tmpreg.W == INT_QUIT) + return (regs->PC.W); + if (tmpreg.W != INT_NOINT) */ + Z80Interrupt (regs, tmpreg.W); + } + } + + return (regs->PC.W); +} + + + +/*==================================================================== + void Z80Interrupt( Z80 *regs, word ivec ) + ===================================================================*/ +void +Z80Interrupt (Z80 * regs, word ivec) +{ + word intaddress; + + /* unhalt the computer */ + if (regs->halted == 1) + regs->halted = 0; + + if (regs->IFF1) + { + PUSH (PC); + regs->IFF1 = 0; + switch (regs->IM) + { + case 0: + r_PC = 0x0038; + AddCycles (12); + break; + case 1: + r_PC = 0x0038; + AddCycles (13); + break; + case 2: + intaddress = (((regs->I & 0xFF) << 8) | 0xFF); + regs->PC.B.l = Z80ReadMem (intaddress); + regs->PC.B.h = Z80ReadMem (intaddress + 1); + AddCycles (19); + break; + } + + } + +} + + +/*==================================================================== + word Z80Hardware(register Z80 *regs) + + Do here your emulated machine hardware emulation. Read Z80Execute() + to know about how to quit emulation and generate interrupts. + ===================================================================*/ +word +Z80Hardware (register Z80 * regs) +{ + if (debug != 1) + { + ; + } + return (INT_IRQ); +} + + +/*==================================================================== + void Z80Patch( register Z80 *regs ) + + Write here your patches to some z80 opcodes that are quite related + to the emulated machines (i.e. maybe accessing to the I/O ports + and so on), such as ED_FE opcode: + + case ED_FE: Z80Patch(regs); + break; + + This allows "BIOS" patching (cassette loading, keyboard ...). + ===================================================================*/ +void +Z80Patch (register Z80 * regs) +{ + PatchZ80(regs); +// QUE ALGUIEN ME EXPLIQUE por que hay dos tapfile ??? +/* + extern FILE *tapfile; + extern tipo_emuopt emuopt; + if (emuopt.tapefile[0] != 0) + { + // AS_printf("Z80patch:%x\n",tapfile); + LoadTAP (regs, tapfile); + POP (PC); + } +*/ +} + +/*==================================================================== + byte Z80MemRead( register word address ) + + This function reads from the given memory address. It is not inlined, + and it's written for debugging purposes. + ===================================================================*/ +byte +Z80MemRead (register word address, Z80 * regs) +{ + return (Z80ReadMem (address)); +} + + +/*==================================================================== + void Z80MemWrite( register word address, register byte value ) + + This function writes on memory the given value. It is not inlined, + ands it's written for debugging purposes. + ===================================================================*/ +void +Z80MemWrite (register word address, register byte value, Z80 * regs) +{ + Z80WriteMem (address, value, regs); +} + + +/*==================================================================== + byte Z80InPort(register Z80 *regs, eregister word port ) + + This function reads from the given I/O port. It is not inlined, + and it's written for debugging purposes. + ===================================================================*/ +byte +Z80InPort (register Z80 * regs, register word port) +{ + return (InZ80(port)); +} + + +/*==================================================================== + void Z80OutPort( register word port, register byte value ) + + This function outs a value to a given I/O port. It is not inlined, + and it's written for debugging purposes. + ===================================================================*/ +void +Z80OutPort (register Z80 * regs, register word port, register byte value) +{ +/* change border colour */ + if (!(port & 0x01)) { + regs->BorderColor = (value & 0x07); + } + OutZ80(port,value); +} + + + +/*==================================================================== + static void Z80FlagTables ( void ); + + Creates a look-up table for future flag setting... + Taken from fuse's sources. Thanks to Philip Kendall. + ===================================================================*/ +void +Z80FlagTables (void) +{ + int i, j, k; + byte parity; + + for (i = 0; i < 0x100; i++) + { + sz53_table[i] = i & (FLAG_3 | FLAG_5 | FLAG_S); + j = i; + parity = 0; + for (k = 0; k < 8; k++) + { + parity ^= j & 1; + j >>= 1; + } + parity_table[i] = (parity ? 0 : FLAG_P); + sz53p_table[i] = sz53_table[i] | parity_table[i]; + } + + sz53_table[0] |= FLAG_Z; + sz53p_table[0] |= FLAG_Z; +} + + diff --git a/MCUME_teensy/teensyspeccy/altz80/z80.h b/MCUME_teensy/teensyspeccy/altz80/z80.h new file mode 100644 index 0000000..c3d7df1 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/z80.h @@ -0,0 +1,244 @@ +/*===================================================================== + z80.c -> Header file related to the Z80 emulation code. + + Please read documentation files to know how this works :) + + Thanks to Marat Fayzullin for writing the "How to write a Computer + Eemulator" HOWTO. This emulator is based on his tutorials and the + code organization (very readable!) of his "Z80 Portable Emulator". + I've learnt a lot from it, and I've taken some ideas of his code + to write this emulator.I think that almost all of the undocumented + Z80 opcodes are covered on this emulator. I also asked Marat + Fayzullin (by email) about ideas and so on (his Z80 emulator is + quite good, so go check it :-). + + Of course, I can't forget Ra�l Gomez (he answered me thousands + of email questions) and Philip Kendall. Whitout his ___kind___ + people surely you won't be reading this file now... + + "Programming the Z80" (from Rodnay Zaks) and the comp.sys.sinclair + FAQ were another excelent sources of info! + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Copyright (c) 2000 Santiago Romero Iglesias. + Email: sromero@escomposlinux.org + ======================================================================*/ + + +#ifndef Z80_H +#define Z80_H + +#define USING_ALLEGRO + +#define DEBUG +#define _DEV_DEBUG_ /* development debugging */ +#define LOW_ENDIAN +/*#define HI_ENDIAN */ + +/* Used by the Z80Debug() function */ +#define DEBUG_OK 1 +#define DEBUG_QUIT 0 + + + +/*=== Some common standard data types: ==============================*/ +typedef unsigned char byte; +typedef unsigned char uint8_t; + +typedef unsigned short word; +typedef unsigned short uint16_t; + +typedef unsigned long dword; + +typedef signed char offset; + + +/*--- Thanks to Philip Kendall for it's help using the flags --------*/ +extern byte halfcarry_add_table[]; + +extern byte halfcarry_sub_table[]; + +extern byte overflow_add_table[]; + +extern byte overflow_sub_table[]; + +extern byte sz53_table[]; + +extern byte sz53p_table[]; + +extern byte parity_table[]; + + +extern byte ioblock_inc1_table[]; + +extern byte ioblock_dec1_table[]; + +extern byte ioblock_2_table[]; + + + +/*===================================================================== + Z80 Flag Register: --------------------------------- + | 7 6 5 4 3 2 1 0 | + --------------------------------- + | S Z x H x O/P N C | + --------------------------------- + If (1) means that: S = Negative result. + Z = Zero result. + x = special cases (by opcode) + H = Halfcarry/borrow. + O/P = Overflow/Parity Flag. + N = Substraction. + C = Carry/borrow. + ====================================================================*/ +#define S_FLAG 0x80 +#define Z_FLAG 0x40 +#define H_FLAG 0x10 +#define P_FLAG 0x04 +#define O_FLAG 0x04 +#define N_FLAG 0x02 +#define C_FLAG 0x01 + + +/* + Defines for interrupts and special Z80Hardware() codes: +======================================================================= + INT_QUIT = Exit the emulation (for Z80Run()) + INT_NOINT = No interrupt required + INT_IRQ = Standard RST 38h interrupt + INT_NMI = Non-maskerable interrupt +*/ +#define INT_QUIT 0xFFFE +#define INT_NOINT 0xFFFF +#define INT_IRQ 0x0038 +#define INT_NMI 0x0066 + + + +/*=== A register is defined as follows: =============================*/ +typedef union +{ + +#ifdef LOW_ENDIAN + struct + { + +byte l, h; + +} + B; + +#else /* + */ + struct + { + +byte h, l; + +} + B; + +#endif /* + */ + word W; + +} +eword; + + + +#define WE_ARE_ON_DD 1 +#define WE_ARE_ON_FD 2 + +/*=== Now we define the Z80 registers using the previous definition =*/ +typedef struct +{ + +char machine_type; + +byte * RAM; + +int we_are_on_ddfd; + + + /* general and shadow z80 registers */ + eword AF, BC, DE, HL, IX, IY, PC, SP, R, +AFs, BCs, DEs, HLs; + + + /* IFF and I registers, used on interrupts. */ + byte IFF1, IFF2, I, halted; + +char IM; + +word IRequest; + + + /* the following is to take care of cycle counting */ + int IPeriod, ICount, IBackup; + int petint; + + /* DecodingErrors = set this to 1 for debugging purposes in order + to trap undocumented or non implemented opcodes. + Trace = set this to 1 to start tracing. It's also set + when PC reaches TrapAddress value. */ + byte DecodingErrors; + +word TrapAddress; + +byte Trace, dobreak; + +byte BorderColor; + + +} +Z80; + + + +/*==================================================================== + Function declarations, read the .c file to know what they do. + ===================================================================*/ +void ResetZ80 (register Z80 * regs, int); + +void Z80Interrupt (register Z80 *, register word); + +word ExecZ80 (register Z80 *, int); + +byte Z80MemRead (register word, Z80 *); + +void Z80MemWrite (register word, register byte, Z80 *); + +byte Z80InPort (register Z80 * regs, register word); + +void Z80OutPort (register Z80 * regs, register word, register byte); + +void Z80Patch (register Z80 *); + +byte Z80Debug (register Z80 *); + +word Z80Hardware (register Z80 *); + + +void Z80FlagTables (void); + +word ParseOpcode (char *, char *, char *, word, Z80 *); + +word Z80Dissasembler (Z80 *, char *, char *); + + +#endif /* + */ diff --git a/MCUME_teensy/teensyspeccy/altz80/zx_filetyp_z80.c b/MCUME_teensy/teensyspeccy/altz80/zx_filetyp_z80.c new file mode 100644 index 0000000..361b1a4 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/altz80/zx_filetyp_z80.c @@ -0,0 +1,362 @@ +//-------------------------------------------------------------- +// File derived from: +// Datum : 27.01.2014 +// Version : 1.0 +// Autor : UB +// EMail : mc-4u(@)t-online.de +// Web : www.mikrocontroller-4u.de +//-------------------------------------------------------------- +#include "zx_filetyp_z80.h" +#include "emuapi.h" + + +//-------------------------------------------------------------- +// interne Funktionen +//-------------------------------------------------------------- +const uint8_t* p_decompFlashBlock(const uint8_t *block_adr); + + +void ZX_ReadFromFlash_SNA(Z80 *regs, const char * filename) +{ + uint8_t snafile[27]; + if (emu_FileOpen(filename)) { + if (emu_FileRead(&snafile[0], sizeof(snafile)) == sizeof(snafile)) { + // Load Z80 registers from SNA + regs->I = snafile[ 0]; + regs->HLs.B.l = snafile[ 1]; + regs->HLs.B.h = snafile[ 2]; + regs->DEs.B.l = snafile[ 3]; + regs->DEs.B.h = snafile[ 4]; + regs->BCs.B.l = snafile[ 5]; + regs->BCs.B.h = snafile[ 6]; + regs->AFs.B.l = snafile[ 7]; + regs->AFs.B.h = snafile[ 8]; + regs->HL.B.l = snafile[ 9]; + regs->HL.B.h = snafile[10]; + regs->DE.B.l = snafile[11]; + regs->DE.B.h = snafile[12]; + regs->BC.B.l = snafile[13]; + regs->BC.B.h = snafile[14]; + regs->IY.B.l = snafile[15]; + regs->IY.B.h = snafile[16]; + regs->IX.B.l = snafile[17]; + regs->IX.B.h = snafile[18]; + regs->IFF1 = regs->IFF2 = (snafile[19]&0x04) >>2; + regs->R.W = snafile[20]; + regs->AF.B.l = snafile[21]; + regs->AF.B.h = snafile[22]; + regs->SP.B.l =snafile[23]; + regs->SP.B.h =snafile[24]; + regs->IM = snafile[25]; + regs->BorderColor = snafile[26]; + + + // load RAM from SNA + int direc; + uint8_t b; + for (direc=0;direc!=0xbfff;direc++) + { + emu_FileRead(&b, 1); + WrZ80(direc+0x4000, b); + } + emu_FileClose(); + // SP to PC for SNA run + regs->PC.B.l = Z80MemRead(regs->SP.W, regs); + regs->SP.W++; + regs->PC.B.h = Z80MemRead(regs->SP.W, regs); + regs->SP.W++; + } + } +} + +//-------------------------------------------------------------- +// Unpack data from a file ( type = * .Z80 ) from flash +// And copy them to the memory of the ZX - Spectrum +// +// Data = pointer to the start of data +// Length = number of bytes +//-------------------------------------------------------------- +void ZX_ReadFromFlash_Z80(Z80 *R, const uint8_t *data, uint16_t length) +{ + const uint8_t *ptr; + const uint8_t *akt_block,*next_block; + uint8_t value1,value2; + uint8_t flag_version=0; + uint8_t flag_compressed=0; + uint16_t header_len; + uint16_t cur_addr; + + if(length==0) return; + if(length>0xC020) return; + + //---------------------------------- + // parsing header + // Byte : [0...29] + //---------------------------------- + + // Set pointer to data beginning + ptr=data; + + R->AF.B.h=*(ptr++); // A [0] + R->AF.B.l=*(ptr++); // F [1] + R->BC.B.l=*(ptr++); // C [2] + R->BC.B.h=*(ptr++); // B [3] + R->HL.B.l=*(ptr++); // L [4] + R->HL.B.h=*(ptr++); // H [5] + + // PC [6+7] + value1=*(ptr++); + value2=*(ptr++); + R->PC.W=(value2<<8)|value1; + if(R->PC.W==0x0000) { + flag_version=1; + } + else { + flag_version=0; + } + + // SP [8+9] + value1=*(ptr++); + value2=*(ptr++); + R->SP.W=(value2<<8)|value1; + + R->I=*(ptr++); // I [10] + R->R.W=*(ptr++); // R [11] + + // Comressed-Flag & Border [12] + value1=*(ptr++); + value2=((value1&0x0E)>>1); + OutZ80(0xFE, value2); // BorderColor + if((value1&0x20)!=0) { + flag_compressed=1; + } else { + flag_compressed=0; + } + + R->DE.B.l=*(ptr++); // E [13] + R->DE.B.h=*(ptr++); // D [14] + R->BCs.B.l=*(ptr++); // C1 [15] + R->BCs.B.h=*(ptr++); // B1 [16] + R->DEs.B.l=*(ptr++); // E1 [17] + R->DEs.B.h=*(ptr++); // D1 [18] + R->HLs.B.l=*(ptr++); // L1 [19] + R->HLs.B.h=*(ptr++); // H1 [20] + R->AFs.B.h=*(ptr++); // A1 [21] + R->AFs.B.l=*(ptr++); // F1 [22] + R->IY.B.l=*(ptr++); // Y [23] + R->IY.B.h=*(ptr++); // I [24] + R->IX.B.l=*(ptr++); // X [25] + R->IX.B.h=*(ptr++); // I [26] + +//regs->IFF1 +//#define IFF_1 0x01 /* IFF1 flip-flop */ +//#define IFF_IM1 0x02 /* 1: IM1 mode */ +//#define IFF_IM2 0x04 /* 1: IM2 mode */ +//#define IFF_2 0x08 /* IFF2 flip-flop */ +//#define IFF_EI 0x20 /* 1: EI pending */ +//#define IFF_HALT 0x80 /* 1: CPU HALTed */ + +#define IM1 0x01 /* 1: IM1 mode */ +#define IM2 0x02 /* 1: IM2 mode */ + +//byte IFF1, IFF2, I, halted; + + R->IFF1=0; + R->IFF2=0; +// R->I=0; +// R->halted=0; + + // Interrupt-Flag [27] + value1=*(ptr++); + if(value1!=0) { + // EI + //R->IFF|=IFF_2|IFF_EI; + R->IFF2=1; + R->I=1; + } + else { + // DI + //R->IFF&=~(IFF_1|IFF_2|IFF_EI); + } + value1=*(ptr++); // nc [28] + // Interrupt-Mode [29] + value1=*(ptr++); + if((value1&0x01)!=0) { + //R->IFF|=IFF_IM1; + R->IM|=IM1; + R->IFF1|=IM1; + } + else { + //R->IFF&=~IFF_IM1; + } + if((value1&0x02)!=0) { + R->IM|=IM2; + R->IFF2|=IM2; + //R->IFF|=IFF_IM2; + } + else { + //R->IFF&=~IFF_IM2; + } + + // restliche Register + R->ICount = R->IPeriod; + R->IRequest = INT_NOINT; + R->IBackup = 0; + + //---------------------------------- + // save the data in RAM + // Byte : [30...n] + //---------------------------------- + + cur_addr=0x4000; // RAM start + + + if(flag_version==0) { + //----------------------- + // old Version + //----------------------- + if(flag_compressed==1) { + //----------------------- + // compressed + //----------------------- + while(ptr<(data+length)) { + value1=*(ptr++); + if(value1!=0xED) { + WrZ80(cur_addr++, value1); + } + else { + value2=*(ptr++); + if(value2!=0xED) { + WrZ80(cur_addr++, value1); + WrZ80(cur_addr++, value2); + } + else { + value1=*(ptr++); + value2=*(ptr++); + while(value1--) { + WrZ80(cur_addr++, value2); + } + } + } + } + } + else { + //----------------------- + // raw (uncompressed) + //----------------------- + while(ptr<(data+length)) { + value1=*(ptr++); + WrZ80(cur_addr++, value1); + } + } + } + else { + //----------------------- + // new Version + //----------------------- + // Header Laenge [30+31] + value1=*(ptr++); + value2=*(ptr++); + header_len=(value2<<8)|value1; + akt_block=(uint8_t*)(ptr+header_len); + // PC [32+33] + value1=*(ptr++); + value2=*(ptr++); + R->PC.W=(value2<<8)|value1; + + //------------------------ + // 1st block parsing + //------------------------ + next_block=p_decompFlashBlock(akt_block); + //------------------------ + // all other parsing + //------------------------ + while(next_block +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensyspeccy/emuapi.h b/MCUME_teensy/teensyspeccy/emuapi.h new file mode 100644 index 0000000..69cfbf1 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/emuapi.h @@ -0,0 +1,141 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +#define HAS_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " SPECTRUM Emulator " +#define ROMSDIR "spec" + +#define emu_Init(ROM) {spec_Init(); spec_Start(ROM);} +#define emu_Step(x) {spec_Step();} +#define emu_Input(x) {} + +#define PALETTE_SIZE 16 +#define VID_FRAME_SKIP 0x3 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 225 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,27,27,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,14,28,28,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,20,28,28,28,28,28,28,28,28,28,28, + TAREA_NEW_ROW,30,28,28,28,28,28,28,28,28,28, + TAREA_END}; +/* + {25, 6,27,29,224}, // vcxz + {10, 9, 7,22, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +*/ + +const unsigned short keys[] = { + 30,31,32,33,34,35,36,37,38,39, + 0, 20,26, 8,21,23,28,25,12,18,19, + 0, 4, 9, 7,22, 4,11,13,14,15,40, + 25, 6,27,29,224,5,17,16,225,44 + }; + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0, 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0, 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401, + }; +#endif + +#endif + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + diff --git a/MCUME_teensy/teensyspeccy/font8x8.h b/MCUME_teensy/teensyspeccy/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensyspeccy/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensyspeccy/iopins.h b/MCUME_teensy/teensyspeccy/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensyspeccy/keyboard_osd.h b/MCUME_teensy/teensyspeccy/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensyspeccy/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensyspeccy/logo.h b/MCUME_teensy/teensyspeccy/logo.h new file mode 100644 index 0000000..f7c66e9 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/logo.h @@ -0,0 +1,173 @@ +const uint16_t logo[] PROGMEM = { +0x0140,0x00ac,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa125, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc987, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xf9e8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xd187,0xf9e8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xf9e8,0xf1c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xd187,0xf9e8,0xf1c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xf9c8,0xf9c8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9c8,0xf9c8,0xf9a8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9c8,0xf9c8,0xfa48, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd48, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8,0xf9c8,0xf9c8,0xfec8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc48,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0840,0x0860,0x0840,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0860,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0020,0x0000,0x0020,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x31a6,0x39e7,0x4208,0x2965,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x2965,0x31a6,0x4208,0x3186,0x31a6,0x2965,0x39c7,0x2965,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0000,0x0000,0x0000,0x0000,0x0801,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0001,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa534,0xffff,0xe71c,0xdefb,0xffdf,0xef7d,0xf7be,0xf7be,0xf7be,0xef7d,0xffdf,0xef7d,0xdefb,0xf7be,0xef7d,0xf7be,0xef7d,0xef7d,0x2965,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0007,0x0002,0x0000,0x0001,0x0000,0x0002,0x0001,0x0001,0x0003,0x0006,0x0006,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x58a3,0x2021,0x0800,0x58a3,0x4882,0x2841,0x4882,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1002,0x0020,0x0000,0x0000,0x1002,0x0000,0x0000,0x3006,0x1803,0x0801,0x3006,0x3006,0x1002,0x0000,0x0801,0x2004,0x2805,0x2805,0x0000,0x1002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x00e0,0x0040,0x09e0,0x00a0,0x0040,0x01c0,0x0180,0x00c0,0x01a0,0x0180,0x00a0,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x108a,0x0845,0x0000,0x0824,0x0824,0x0000,0x0824,0x0000,0x0002,0x0000,0x0824,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x18e1,0x18c0,0x2941,0x5ac3,0x5282,0x2121,0x0860,0x0000,0x2101,0x1080,0x0020,0x0000,0x52a2,0x2121,0x0020,0x10a0,0x18e1,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x18e3,0x0841,0x2124,0x2104,0x18c3,0x2945,0x4228,0x39c7,0x4a49,0x4a69,0x39c7,0x4208,0x5aeb,0x31a6,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x0000,0xb596,0xffdf,0x94b2,0xc638,0xbdf7,0xc618,0xffff,0xffff,0xdedb,0xbdf7,0xf79e,0xbdd7,0xb5b6,0xc638,0xce79,0xdedb,0xd6ba,0xffff,0x2965,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0020,0x000c,0x000c,0x000a,0x000c,0x0006,0x0020,0x000b,0x0004,0x000a,0x000d,0x000c,0x000b,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa125,0x8904,0xa125,0xa945,0x8104,0xa125,0xb946,0x68c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0020,0x600c,0x500a,0x680d,0x3006,0x580b,0x3807,0x4008,0x600c,0x4809,0x600c,0x600d,0x480a,0x680d,0x4809,0x500a,0x500a,0x780f,0x600c,0x1803,0x580b,0x4008,0x0000,0x0801,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a40,0x0b40,0x0a40,0x0b20,0x0b20,0x0ac0,0x0b40,0x0b40,0x0aa0,0x0b20,0x0b40,0x0a80,0x0b60,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x18ce,0x2935,0x20f1,0x2935,0x0000,0x20f2,0x18ac,0x2913,0x188b,0x2914,0x20d0,0x20f1,0x108a,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c0,0x0000,0xa545,0x10a0,0x8424,0xbde6,0xa545,0x8c44,0xa525,0x52a2,0x0000,0x9ce5,0x52a2,0x0000,0x73a3,0xad85,0x94a4,0xa525,0x3181,0x94a5,0x5282,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x528a,0x94b2,0x2104,0xbdd7,0x7bef,0x10a2,0x9cd3,0xc618,0x8430,0x9cf3,0xce79,0x7bef,0xbdd7,0x9cf3,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xb575,0xf7be,0x9492,0xc638,0xb596,0xbdf7,0xffff,0xef5d,0xad55,0xdedb,0x94b2,0xc618,0xffff,0xef5d,0x7bef,0xd69a,0xffff,0xf79e,0x3186,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0020,0x000c,0x000c,0x000a,0x000c,0x0005,0x0020,0x000c,0x0003,0x000a,0x000e,0x000b,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xb146,0x80e4,0xa945,0x9925,0x0000,0x9925,0x0000,0x9925,0x50a2,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0020,0x580b,0x680d,0x600d,0x680d,0x4008,0x580b,0x680d,0x4008,0x500b,0x680d,0x580c,0x0040,0x580b,0x680d,0x700e,0x0000,0x580b,0x1002,0x580b,0x4008,0x600c,0x2805,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0a60,0x0ac0,0x0b40,0x0b60,0x0a80,0x0b60,0x0b00,0x0000,0x0b20,0x0b20,0x0000,0x0ae0,0x0b80,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0023,0x0000,0x2915,0x0846,0x0000,0x20cf,0x2935,0x20f2,0x2914,0x18ce,0x2913,0x2935,0x2935,0x3137,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x0000,0x73a3,0xb585,0x94a4,0xad65,0xa505,0x0000,0x9d05,0x4a62,0x0000,0xa505,0x4a62,0x0000,0xad65,0x0000,0x8c44,0xc626,0x2961,0x9ce5,0x52a2,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x52aa,0x9cf3,0x31a6,0xb5b6,0xbdd7,0xb5b6,0x94b2,0x8430,0x39c7,0x31a6,0x9492,0x0000,0xce59,0x39c7,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xad75,0xf79e,0x8c71,0xce59,0xa534,0xad55,0xef7d,0xdedb,0x8430,0xad55,0x8c71,0xbdd7,0xe73c,0xc638,0xa514,0xc638,0xef5d,0xf79e,0x2965,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0002,0x0020,0x000c,0x000b,0x000b,0x000d,0x0009,0x0002,0x000c,0x0008,0x000b,0x000e,0x000b,0x0005,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xb146,0x70c3,0x9925,0x9925,0x2841,0xa145,0x78e4,0x9105,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0020,0x600c,0x2805,0x500a,0x700f,0x600c,0x700e,0x680d,0x4809,0x680d,0x700e,0x580b,0x1803,0x600c,0x3006,0x700f,0x1803,0x600c,0x2004,0x600c,0x680d,0x700f,0x2805,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0a80,0x0b80,0x0b80,0x0b60,0x0a20,0x0b20,0x0b00,0x00c0,0x0b40,0x0b00,0x00e0,0x0b40,0x01a0,0x13c0,0x0180,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0x0000,0x2913,0x18ce,0x18ce,0x0000,0x3157,0x1068,0x2914,0x2936,0x3157,0x3137,0x1089,0x3158,0x1089,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e0,0x0000,0xbe06,0x4222,0x9d05,0x9d05,0x2961,0xad65,0x7c04,0x18e1,0xad65,0x7c04,0x2121,0xa505,0x7383,0x9cc5,0xad65,0xad85,0xb5c6,0x4222,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4228,0xb5b6,0xad75,0xb596,0xa514,0x738e,0xa514,0xad55,0x630c,0x4a69,0xa534,0x3186,0xc638,0x630c,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0x0000,0xb5b6,0xffff,0xc618,0xce79,0xffdf,0xc638,0xbdf7,0xdefb,0xf7be,0xffff,0xef5d,0xe73c,0xc618,0xf79e,0xf79e,0xffff,0xef5d,0xffff,0x3186,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0008,0x080c,0x0807,0x0808,0x080d,0x000b,0x0024,0x080c,0x0008,0x0828,0x080c,0x000b,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68e4,0x0000,0x60a3,0x80e4,0xa125,0x8925,0x78e4,0xa125,0x2861,0x0040,0x1041,0x0000,0x0020,0x0000,0x0000,0x0020,0x0841,0x0000,0x0020,0x0841,0x0000,0x0020,0x0000,0x0020,0x0000,0x0801,0x0040,0x4008,0x1843,0x3807,0x4809,0x0040,0x3007,0x2806,0x580b,0x580b,0x4809,0x600c,0x500b,0x4009,0x0801,0x3807,0x1823,0x4008,0x1823,0x4008,0x0000,0x3807,0x2044,0x0040,0x0000,0x0841,0x0841,0x0000,0x0000,0x00e0,0x1301,0x12e1,0x0a40,0x0000,0x09e1,0x0a80,0x0b20,0x0ac1,0x0a40,0x1321,0x0ac0,0x0a40,0x0881,0x09e1,0x0921,0x0801,0x0000,0x0020,0x0861,0x0841,0x0000,0x0841,0x0841,0x0000,0x0000,0x0001,0x0000,0x0845,0x2914,0x20d0,0x0000,0x18cd,0x0844,0x18ad,0x0000,0x108a,0x20d0,0x0000,0x18ab,0x1067,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x0000,0x6b43,0x18e0,0x7383,0xa545,0x9485,0x7bc4,0xad65,0x94a4,0x7bc4,0xad65,0x9cc5,0x31c1,0xa525,0x7383,0x2141,0x8404,0x6343,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x632c,0x7bcf,0x52aa,0x630c,0x0000,0x738e,0xa514,0x6b6d,0x2124,0x6b6d,0x0020,0x9cf3,0xa534,0x6b6d,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0020,0x0861,0x0020,0x0000,0x0020,0x0000,0x0020,0x0861,0x0020,0x0020,0x0000,0x0020,0x0841,0x0841,0x0000,0x0841,0x0020,0x0000,0x0841,0x0841,0x0000,0x0000,0x1082,0x0000,0x73ae,0xb5b6,0xb5b6,0xb5b6,0xad75,0xbdd7,0xbdd7,0xb5b6,0xad75,0xad55,0xb596,0xb596,0xbdd7,0xb596,0xb596,0xad75,0xb5b6,0xa534,0x2124,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf1c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0020,0x0000,0x0000,0x0081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0841,0x0000,0x0861,0x0000,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0801,0x0841,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0861,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0860,0x0862,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0860,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0840,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0000,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9c8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2125,0x5acb,0x4a6a,0x2945,0x4a6a,0x0000,0x31a6,0x4208,0x39e8,0x4a49,0x4a69,0x1083,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x2145,0x528a,0x0000,0x0000,0x2904,0x0000,0x4a49,0x5aaa,0x0000,0x2124,0x630c,0x31a6,0x0000,0x2104,0x0020,0x0000,0x2945,0x52aa,0x0000,0x2945,0x528a,0x0000,0x2104,0x0000,0x3186,0x0000,0x0000,0x39c7,0x4a49,0x4a49,0x2945,0x5aeb,0x2104,0x0000,0x10a2,0x18c3,0x2945,0x5aab,0x528a,0x1042,0x20e4,0x1082,0x18a3,0x39c7,0x4228,0x2965,0x4a69,0x0000,0x2124,0x5acb,0x528a,0x0000,0x528a,0x2945,0x0000,0x0821,0x10a2,0x4248,0x39e7,0x0000,0x0000,0x2945,0x18e3,0x10a1,0x2124,0x0000,0x2124,0x10a2,0x10c2,0x39c7,0x4228,0x2965,0x4a69,0x0000,0x2124,0x5acb,0x528a,0x0000,0x528a,0x2945,0x0000,0x0861,0x0000,0x0000,0x0000,0x10a4,0x0002,0x0000,0x2125,0x2104,0x0000,0x0000,0x0000,0x0842,0x0000,0x0002,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a1,0x18c2,0x2965,0x52ca,0x3185,0x18e2,0x18e1,0x10a0,0x10a0,0x18c0,0x10a0,0x0840,0x18c0,0x1080,0x0840,0x10a0,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x31a6,0x31a6,0x0000,0x0861,0x18c3,0x1082,0x0020,0x1082,0x0000,0x18c3,0x18c3,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x0000,0x0000,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x52aa,0x3186,0x1082,0x5aeb,0x2945,0x0000,0x2124,0x0000,0x2104,0x5aeb,0x2104,0x0000,0x2104,0x18e3,0x31a6,0x4a49,0x0000,0x528a,0x2965,0x0000,0x528a,0x52aa,0x0861,0x0000,0x0020,0x0000,0x0841,0x528a,0x31a6,0x0000,0x4a69,0x630c,0x4208,0x2124,0x18c3,0x18c3,0x4a69,0x630c,0x4208,0x4a69,0x528a,0x4208,0x4a49,0x630c,0x31a6,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0x9cf3,0xad75,0x8430,0xa534,0xbdf7,0x5aeb,0x7bcf,0xc638,0x5aeb,0xd69a,0xa534,0x1082,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x9cf3,0xad55,0x632c,0x632c,0x9cd3,0x52aa,0xbdd7,0x94b2,0x8c51,0x94b2,0x9cf3,0x630c,0x4228,0x9cf3,0x0000,0x2965,0x9cf3,0xad55,0x7bcf,0x94b2,0xa534,0x9492,0x8430,0x73ae,0x7bcf,0x0000,0x0000,0x630c,0xd69a,0x9cd3,0xa514,0xa534,0x8c71,0xad55,0x39c7,0x8430,0xbdd7,0xa534,0x9cd3,0x0000,0x9cf3,0x39c7,0x8c51,0xa514,0xbdd7,0x9cf3,0xbdf7,0x5acb,0x9cd3,0xad75,0x8c71,0x7bcf,0xad55,0x9cf3,0x2124,0x0000,0x0000,0xc638,0x94b2,0xb5b6,0x4a69,0xb596,0x8430,0x39c7,0xa514,0x0000,0xa514,0x39c7,0x8c51,0xa514,0xbdd7,0x9cf3,0xbdf7,0x5acb,0x9cd3,0xad75,0x8c71,0x7bcf,0xad55,0x9cf3,0x2124,0x0000,0x0020,0x0000,0x1082,0x0000,0x0000,0x7bcf,0xbdd7,0xad75,0x2945,0x4a69,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0000,0x94b2,0xce59,0x94b2,0x0000,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x10a2,0x6b6d,0x9cf3,0x9cf3,0x6b6d,0x10a2,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x4208,0x632c,0xce79,0x9cd3,0x4a69,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x73ae,0xa534,0x7bcf,0xa534,0xa534,0x9cd3,0x4208,0x9cf3,0x5aeb,0x9cd3,0xad55,0x8c71,0xad55,0x0000,0x8410,0xa514,0xbdf7,0x6b6d,0xad75,0x9492,0x8410,0x9cf3,0x9492,0x2104,0x0000,0x0861,0x0000,0x4208,0xc638,0x9492,0x52aa,0xbdf7,0x94b2,0x9492,0x94b2,0x0000,0x4a49,0xbdf7,0x9cd3,0x738e,0xa514,0xce79,0x7bef,0xbdd7,0x9cf3,0x738e,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa534,0xa514,0x0000,0x9cf3,0x0000,0x9cd3,0x738e,0x9492,0x0000,0x9cd3,0x39e7,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x5acb,0x9cf3,0x0000,0x5acb,0xad55,0x6b6d,0xb5b6,0xb5b6,0x9cd3,0x8c51,0x9492,0x8c51,0x0000,0x528a,0x9cf3,0x0000,0x5acb,0x9cd3,0x0000,0xc638,0x9492,0x0000,0x528a,0xd69a,0x7bcf,0x0000,0x10a2,0x18e3,0x0000,0x9cd3,0x10a2,0x9cd3,0xb5b6,0x8430,0xad75,0x2945,0x8c51,0xc618,0x94b2,0x0000,0x0000,0xa514,0x4208,0x94b2,0x738e,0x7bef,0x9492,0x18e3,0x9492,0xbdf7,0x9cd3,0x0000,0xad55,0x0000,0x94b2,0x5acb,0x0000,0x0000,0x8c71,0x632c,0xb5b6,0xad75,0xb596,0x8c71,0x4a49,0xa514,0x0000,0xa514,0x4228,0x94b2,0x738e,0x7bef,0x9492,0x18e3,0x9492,0xbdf7,0x9cd3,0x0000,0xad55,0x0000,0x94b2,0x5acb,0x0000,0x0861,0x1082,0x0000,0x632c,0xbdf7,0x8c51,0x0000,0xb596,0xbdd7,0xce79,0xad55,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0xad75,0xbdd7,0x39e7,0xbdd7,0xad75,0x2945,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa514,0xef5d,0x5acb,0x5acb,0xef5d,0xa514,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4208,0xd6ba,0xb5b6,0xc618,0x6b6d,0x2124,0xb5b6,0x9cf3,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xa514,0x7bef,0x9492,0xad75,0xb596,0x8430,0xad55,0x73ae,0x9cf3,0xbdd7,0xa534,0x8c71,0xb575,0xad75,0xbdf7,0x6b4d,0x7bef,0x9cd3,0x39c7,0x0000,0x7bcf,0x9cf3,0x5acb,0x0000,0x0861,0x0841,0x0000,0x5acb,0x8c71,0x18e3,0xbdf7,0xbdd7,0x3186,0x31a6,0xa514,0x0000,0x4228,0xc638,0x39e7,0x0000,0x4228,0x9492,0x0000,0xce59,0x39c7,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0xad55,0x9cf3,0x2965,0xad55,0x8410,0x8c51,0x73ae,0xbdd7,0x0000,0xad55,0x5acb,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4a49,0xa534,0x4a69,0x8430,0xc638,0xad55,0xc638,0xad55,0x4208,0x0000,0x52aa,0x9cd3,0x9492,0x39c7,0xb5b6,0x31a6,0x632c,0xa514,0x632c,0xb5b6,0x9cd3,0x528a,0x8c51,0xb596,0x8430,0x4a49,0x0000,0x18c3,0x0000,0xad75,0x4208,0x9cd3,0xbdd7,0x73ae,0x94b2,0x738e,0x9492,0xc618,0x94b2,0x528a,0x0000,0x4228,0xbdd7,0x8c51,0x630c,0xad75,0x9cf3,0x8c51,0x8410,0xb596,0x9cd3,0x3186,0x9cf3,0x6b6d,0xa514,0x4a69,0x0000,0x0000,0xb596,0x8c71,0x8c71,0x8430,0xad75,0x7bef,0xbdd7,0x5acb,0xa514,0x5acb,0xbdd7,0x8c51,0x630c,0xad75,0x9cf3,0x8c51,0x8410,0xb596,0x9cd3,0x3186,0x9cf3,0x6b6d,0xa514,0x4a69,0x0000,0x0841,0x0841,0x0000,0x2965,0x7bcf,0x9cd3,0x9492,0xbdf7,0x8c51,0x9cf3,0x73ae,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2104,0xb5b6,0xb596,0x5aeb,0xb596,0xb5b6,0x2104,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x738e,0xad75,0xad75,0x738e,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x9cd3,0x8c71,0xa534,0xb596,0x8c51,0x94b2,0x52aa,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0x9cd3,0x8410,0xb5b6,0xbdd7,0xb596,0x738e,0xa534,0xb5b6,0xbdf7,0xbdf7,0x8410,0x0000,0xa534,0x6b6d,0xa534,0x8c71,0xa534,0x9492,0x7bcf,0x6b6d,0x4208,0x6b6d,0xb5b6,0x4228,0x0000,0x1082,0x0000,0x52aa,0xb596,0x738e,0x9cd3,0xbdf7,0x5acb,0x6b4d,0xb596,0x31a6,0x6b4d,0xc618,0x632c,0x2945,0x5acb,0xa514,0x3186,0xc638,0x630c,0x39e7,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x738e,0xa534,0x9492,0x7bcf,0xad55,0x0000,0x6b4d,0xad55,0x0000,0x6b4d,0x39c7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0861,0x0000,0x73ae,0xa514,0x5acb,0x5acb,0x0000,0x8410,0x5aeb,0x0000,0x2945,0x9cd3,0x94b2,0x2965,0x18e3,0x9cf3,0xad55,0x632c,0x6b4d,0xa534,0x1082,0x738e,0xa514,0x5acb,0x5acb,0x31a6,0x6b6d,0x0000,0x18c3,0x0000,0x6b6d,0x2124,0x6b4d,0x0000,0x6b4d,0x4228,0xa514,0x6b4d,0x6b4d,0xa534,0x9cd3,0x2104,0x0000,0x738e,0x2945,0x6b6d,0xa514,0x73ae,0xad55,0x0000,0x6b6d,0xa534,0x94b2,0x39c7,0xa514,0x73ae,0x0000,0x0000,0x18c3,0xa534,0x8410,0x5aeb,0x1082,0x632c,0x3186,0x738e,0x1082,0xb596,0x1082,0x738e,0x2945,0x6b6d,0xa514,0x73ae,0xad55,0x0000,0x6b4d,0xa534,0x94b2,0x31a6,0xa514,0x73ae,0x0000,0x0861,0x0000,0x0000,0x0020,0x0000,0x0000,0x0861,0x8c71,0x73ae,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x4a69,0x9cd3,0x4a69,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x9cf3,0x9cf3,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0xa514,0x52aa,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0x9cd3,0x94b2,0x73ae,0x0000,0x632c,0x7bef,0x0000,0x52aa,0x8410,0x18e3,0x0000,0x738e,0x0861,0x52aa,0x8410,0xa514,0x3186,0xa514,0x73ae,0x6b4d,0xad55,0x6b6d,0x0000,0x0861,0x0841,0x0000,0x2104,0xa534,0x7bcf,0x0000,0x9cf3,0xa514,0x73ae,0x94b2,0xa534,0x73ae,0x9492,0xa534,0x6b4d,0x2124,0x6b6d,0x0000,0x9cf3,0xa534,0x6b6d,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x1082,0x0000,0x0000,0x0861,0x10a2,0x18e3,0x18e3,0x18e3,0x10a2,0x0841,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x18c3,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0841,0x0861,0x18c3,0x0020,0x0000,0x0000,0x2104,0x18e3,0x18c3,0x0841,0x0861,0x0841,0x10a2,0x18e3,0x18e3,0x18e3,0x10a2,0x0841,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x18e3,0x0000,0x0000,0x0000,0x18e3,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x18e3,0x18e3,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0841,0x0000,0x0000,0x0841,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x10a2,0x18e3,0x18c3,0x18e3,0x10a2,0x0841,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x18e3,0x18e3,0x10a2,0x0000,0x0000,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x18e3,0x18e3,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x18c3,0x0000,0x0000,0x0000,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3186,0x4a49,0x4228,0x4228,0x4a49,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x2965,0x0861,0x18e3,0x18e3,0x2965,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x18e3,0x4208,0x4228,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x2945,0x2124,0x18e3,0x2124,0x39e7,0x4208,0x4a69,0x4228,0x0000,0x0861,0x1082,0x0000,0x0000,0x0000,0x0020,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4a69,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x31a6,0x18e3,0x2945,0x2124,0x31a6,0x4a49,0x39e7,0x52aa,0x2945,0x1082,0x0841,0x18c3,0x1082,0x0000,0x0000,0x0861,0x4228,0x4228,0x4208,0x4208,0x4a49,0x4228,0x4208,0x4208,0x4228,0x4208,0x4228,0x39e7,0x18e3,0x2104,0x18e3,0x2124,0x39e7,0x4208,0x4a69,0x4a49,0x0000,0x18e3,0x1082,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x2965,0x0861,0x18e3,0x18e3,0x2965,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x18e3,0x2104,0x10a2,0x18c3,0x39e7,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4228,0x4a69,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x2965,0x18c3,0x2104,0x18c3,0x2965,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4228,0x4228,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x18c3,0x10a2,0x10a2,0x18c3,0x39e7,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4208,0x4208,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x4228,0x52aa,0x2104,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad75,0xb5b6,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x18c3,0x2104,0x2965,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xad75,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2124,0x2104,0x2104,0x39e7,0x4228,0x4208,0x4208,0x4228,0x3186,0x8430,0xb5b6,0xad55,0xb5b6,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2965,0x2965,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xb5b6,0xb596,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x18e3,0x2124,0x2945,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad75,0xb596,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x2104,0x2104,0x2124,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xad75,0xb596,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x1082,0x2124,0x18e3,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xb5b6,0xad55,0xb596,0x8430,0x31a6,0x39e7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2104,0x39e7,0x4228,0x4208,0x4208,0x4228,0x4208,0x4a69,0xad75,0xb5b6,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x2104,0x2104,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2945,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7de4,0x04a0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2104,0x9492,0x8c71,0x2965,0x4228,0x4208,0x4208,0x4a49,0x10a2,0xb5b6,0xffff,0xb5b6,0x632c,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x630c,0xb596,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4228,0x31a6,0x6b6d,0xb596,0x4a69,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x9cd3,0xb5b6,0xad55,0x528a,0x39e7,0x4208,0x4208,0x4a49,0x2104,0xb596,0x7bcf,0x39e7,0x7bcf,0xb596,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x2104,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xad55,0xa534,0xa534,0x4a69,0x39e7,0x4208,0x4208,0x4a49,0x10a2,0xb5b6,0xffff,0xbdf7,0x7bcf,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb5b6,0x9cd3,0x31a6,0x4228,0x4208,0x4228,0x31a6,0x6b6d,0xb596,0x528a,0xffff,0xffff,0x528a,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c71,0xbdf7,0xa534,0xad75,0x4a69,0x39e7,0x4208,0x4208,0x4a49,0x2104,0xb596,0x7bcf,0x4a49,0x8c71,0xb596,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb5b6,0xad55,0x528a,0x39e7,0x4208,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb596,0xa514,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2ce1,0x04c0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x7bef,0xffff,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x4a49,0x18e3,0xad75,0xffff,0xce79,0xb5b6,0xad75,0x2124,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2965,0x8c51,0x9cf3,0x738e,0xf79e,0x52aa,0x39e7,0x4228,0x4228,0x39c7,0x630c,0xce59,0xad55,0xf7be,0xf79e,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xb596,0x4228,0xce59,0xc618,0x0000,0x4a49,0x4208,0x4a49,0x2104,0xad55,0xbdf7,0xa514,0xbdf7,0xad55,0x2124,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x7bef,0xffff,0xbdd7,0x1082,0x4a49,0x4208,0x4228,0x39e7,0x528a,0xf79e,0xf7be,0xad55,0xce59,0x630c,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffff,0x9cd3,0x632c,0x39e7,0x4208,0x4208,0x4208,0x4a49,0x18e3,0xad75,0xffff,0xa514,0x39e7,0xad55,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce59,0x4228,0xad55,0x4a49,0x4208,0x4208,0x4228,0x39c7,0x630c,0xce59,0xa534,0xa534,0xce59,0x630c,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x2965,0x94b2,0x9cf3,0x73ae,0xf7be,0x52aa,0x39e7,0x4228,0x4208,0x4a49,0x2104,0xad55,0xc618,0x6b4d,0x4a69,0xad55,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf7be,0x528a,0xce59,0xc618,0x0000,0x4a49,0x4208,0x4228,0x39e7,0x52aa,0xef7d,0xffdf,0xffdf,0xef7d,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x1082,0xbdf7,0xce59,0x5aeb,0xf79e,0x52aa,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf79e,0x738e,0xef7d,0xbdb6,0x10a2,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf1c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xc638,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x4a49,0x10a2,0xbdd7,0xffff,0xffff,0xffff,0xbdd7,0x10a2,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x0000,0x528a,0xf79e,0x52aa,0x39e7,0x4228,0x4228,0x39e7,0x528a,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x31a6,0x94b2,0xd6ba,0x9cd3,0x2124,0x4228,0x4208,0x4a49,0x1082,0xbdd7,0xffff,0xffff,0xffff,0xbdd7,0x10a2,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0xce79,0xf79e,0xb596,0x1082,0x4a49,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0x528a,0xb596,0x6b6d,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad55,0xb596,0xc638,0x4228,0x4208,0x4208,0x4208,0x4a49,0x10a2,0xb5b6,0xffff,0xbdf7,0x7bcf,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x1082,0xbdd7,0xdefb,0x9cf3,0x7bcf,0x31a6,0x4228,0x4208,0x4228,0x39e7,0x528a,0xffff,0xffff,0x528a,0xb596,0x6b6d,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x0000,0xbdd7,0xbdf7,0x10a2,0x4a49,0x4208,0x4208,0x4a49,0x1082,0xbdd7,0xffff,0xc618,0x7bcf,0xb5b6,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39e7,0x4228,0xd6ba,0xad55,0xd69a,0x9cd3,0x2124,0x4228,0x4208,0x4228,0x39e7,0x52aa,0xffff,0xffff,0xffff,0xffff,0x52aa,0x31a6,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x1082,0xbdf7,0xce59,0x5acb,0xf79e,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5aeb,0xe73c,0x8410,0xef7d,0xbdd7,0x1082,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9c8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xbdd7,0xbdf7,0x0000,0x4a49,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad75,0xb5b6,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x39c7,0xd69a,0x8c71,0x2965,0x4228,0x4208,0x4208,0x39e7,0x4a69,0xad75,0xad96,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x4228,0xc638,0xb5b6,0x1082,0x4a49,0x4208,0x4228,0x3186,0x8430,0xb5b6,0xad75,0xb5b6,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2124,0xa514,0xdefb,0xbdf7,0xc638,0x18e3,0x4228,0x4208,0x4208,0x4208,0x4a69,0xad75,0xb5b6,0xad75,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x0000,0x0000,0xc638,0xc638,0x0000,0x4a49,0x4208,0x4228,0x2986,0x8430,0xbdd7,0xad55,0xb596,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xc618,0xc638,0x5aeb,0xf79e,0x52aa,0x39e7,0x4228,0x4208,0x39e7,0x4a69,0xad75,0xb596,0xad75,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x5aeb,0xef5d,0x5aeb,0x39c7,0x4228,0x4208,0x4208,0x4228,0x3186,0x8430,0xbdd7,0xad55,0xb596,0x8430,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xe73c,0x5aeb,0xc618,0xb5b6,0x1082,0x4a49,0x4208,0x4208,0x41e8,0x4a69,0xad75,0xb5b6,0xb5b6,0xad75,0x4a69,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x9cf3,0xad75,0xef7d,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf7be,0xad55,0xbdd7,0xc618,0x0000,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xd69a,0xd69a,0x39c7,0x4228,0x4208,0x4208,0x4208,0x4228,0x3986,0x10a2,0x18e3,0x10a2,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xe71c,0xb5b6,0x4a69,0x4a49,0x4208,0x4208,0x4208,0x4208,0x3a08,0x30e3,0x48a3,0x00c3,0x20e3,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xb596,0x528a,0xce79,0xc618,0x0000,0x4a49,0x4208,0x4208,0x4228,0x3186,0x20a2,0x10e3,0x10a2,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2965,0x9492,0xa534,0xe71c,0xe71c,0x3186,0x4228,0x4208,0x4208,0x4208,0x3208,0x10e3,0x00c3,0x2124,0x2104,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xb596,0x73ae,0xd6ba,0x9492,0x2945,0x4228,0x4208,0x4208,0x5a28,0x2986,0x2882,0x1904,0x2104,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce59,0x5aeb,0xf79e,0x52aa,0x39e7,0x4228,0x3a08,0x4a08,0x4208,0x20e3,0x18c3,0x2124,0x2104,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x0000,0xc638,0xce59,0x0000,0x4a49,0x4208,0x4208,0x3a08,0x4208,0x4a28,0x3186,0x1082,0x2104,0x2104,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf7be,0x5aeb,0xce59,0xc618,0x0000,0x4a49,0x4208,0x4208,0x3a08,0x5208,0x18e3,0x18c3,0x18c3,0x18e3,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x8430,0x8c71,0x630c,0xf79e,0x52aa,0x39e7,0x4228,0x4208,0x4208,0x4a08,0x4a08,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x4a69,0xffff,0x94b2,0xc638,0xbdf7,0x0841,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x7bef,0xb5b6,0xb5b6,0x7bef,0x31a6,0x4228,0x4208,0x3208,0x6208,0xa208,0x3249,0x4a49,0x4a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x3186,0x8410,0xbdf7,0xa514,0xad55,0x4a49,0x4208,0x4208,0x4208,0x3a08,0x4a08,0xaa29,0xba29,0x8229,0x3a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x9cd3,0xb596,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x3208,0xa208,0xc229,0x6a49,0x3a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x0000,0x8c51,0x8c51,0x2945,0x4228,0x4208,0x4208,0x3208,0x9208,0xd229,0x7249,0x3a49,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x94b2,0xbdd7,0x8c71,0x18e3,0x4228,0x4208,0x3a08,0x5a08,0xd1e8,0x9a08,0x8a49,0x3249,0x4a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0xa9e8,0x7a08,0x2a49,0x4a49,0x4249,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3208,0xa9e8,0x6208,0x3a28,0x4a49,0x4a49,0x4a49,0x4228,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb596,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x2a08,0x8a08,0x8208,0x3249,0x4a49,0x4a49,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x630c,0xb5b6,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4a08,0xa1e8,0x4a08,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8430,0xad55,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4a08,0x4208,0x4208,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x31a6,0x18c3,0x18c3,0x31a6,0x4228,0x4208,0x4208,0x3208,0x6a08,0xa9e8,0x2208,0x4a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x0861,0x2945,0x2124,0x4208,0x4208,0x4208,0x4208,0x3208,0x6a08,0xb1e8,0xd1e8,0xb9e8,0x1a08,0x4a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2124,0x18e3,0x2104,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0xc9e8,0xe9e8,0x9208,0x2a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x3186,0x3186,0x4228,0x4208,0x4208,0x4208,0x4208,0xb1e8,0xd9e8,0x6208,0x3a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2124,0x18c3,0x2965,0x4228,0x4208,0x4208,0x4208,0x3a08,0x6208,0xa1e8,0x3208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x2104,0x2104,0x2965,0x4228,0x4208,0x3a08,0x5208,0xb1e8,0x9208,0x6a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x3a08,0x5208,0x7a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2104,0x39e7,0x4208,0x4208,0x4a08,0x2208,0xa9e8,0x6208,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39c7,0x18c3,0x2104,0x2965,0x4228,0x4208,0x4208,0x4208,0x4a08,0x1208,0xa9e8,0x6a08,0x3208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x2124,0x2104,0x39e7,0x4208,0x4208,0x4208,0x3208,0x2208,0x2208,0x2208,0x2208,0x3208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x3a08,0x5a08,0x8a08,0x3208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4a49,0x4208,0x4208,0x4208,0x4208,0x3a08,0x6208,0xb1e8,0xb9e8,0x8208,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0xc1e8,0xe1e8,0x8208,0x2a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4228,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0xb1e8,0xe1e8,0x7208,0x3a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x3208,0xa208,0xa9e8,0x8a08,0x2a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x3208,0x6a08,0xa9e8,0xa9e8,0x8208,0x3208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x3208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4a08,0x2208,0xa208,0x7a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x3208,0xa9e8,0x6208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4228,0x4208,0x4208,0x3208,0x7a08,0xa9e8,0xa208,0xa208,0xa9e8,0x7a08,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x49e7,0x69e7,0x31e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x31e7,0x81c7,0x99c7,0x31e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x31e7,0x69e7,0x81c7,0x49e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x71e7,0x81c7,0x29e7,0x41e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x51e7,0x69e7,0x89c7,0x91c7,0x21e7,0x41e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x29e7,0x81c7,0x91c7,0x69e7,0x31e7,0x41e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x59e7,0x71e7,0x31e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x51e7,0x79c7,0x31e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x51e7,0x69e7,0x61e7,0x61e7,0x69e7,0x51e7,0x39e7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x14c0,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4aaa,0x42aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x52aa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x4aaa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x4aaa,0x42aa,0x52aa,0x52aa,0x5aaa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x42aa,0x4aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x5269,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x4aaa,0x42aa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x4aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x52aa,0x4aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x5aaa,0x5aaa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x630c,0x5b0c,0x4b0c,0x530c,0x530c,0x4b0c,0x4b0c,0x630c,0x630c,0x4b0c,0x4b0c,0x530c,0x530c,0x630c,0x530c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x530c,0x530c,0x630c,0x530c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x5aeb,0x630c,0x530c,0x4b0c,0x530c,0x5b0c,0x5b0c,0x530c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x532c,0x5b0c,0x4b0c,0x4b0c,0x5b0c,0x4b0c,0x4b0c,0x530c,0x530c,0x630c,0x5b0c,0x630c,0x630c,0x5b0c,0x530c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a2,0x4aeb,0x530c,0x530c,0x5b0c,0x630c,0x5b0c,0x4b0c,0x530c,0x630c,0x4b0c,0x530c,0x5b0c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x530c,0x5b0c,0x18a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x530c,0x5b0c,0x4b0c,0x5b0c,0x5b0c,0x630c,0x530c,0x4b0c,0x4b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x530c,0x530c,0x4b0c,0x530c,0x630c,0x530c,0x5b0c,0x630c,0x4b0c,0x530c,0x530c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x5b0c,0x530c,0x4b0c,0x5b0c,0x4b0c,0x530c,0x530c,0x630c,0x530c,0x530c,0x430c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a2,0x4aeb,0x530c,0x630c,0x530c,0x5b0c,0x5b0c,0x4b0c,0x4b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x5b0c,0x530c,0x4b0c,0x5b0c,0x4b0c,0x4b0c,0x5b0c,0x530c,0x5b0c,0x5b0c,0x630c,0x530c,0x630c,0x4b0c,0x4b0c,0x530c,0x6b2c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa083,0x0000,0x6000,0x9883,0x8801,0x7000,0x9863,0x9022,0x0000,0x0000,0x9042,0x9862,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2861,0x90c4,0x9842,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68a3,0x2800,0x0000,0x6800,0x9862,0x7000,0x2000,0x4800,0x7800,0x9862,0x9022,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x7042,0x9842,0x2800,0x9042,0x8802,0x3000,0x9022,0x9862,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x5000,0x6800,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2820,0x9883,0x6800,0x5800,0x2800,0x0000,0x1000,0x9863,0x6800,0x0000,0x9042,0x8802,0x7000,0x9863,0x9022,0x0000,0x0000,0x0800,0x6800,0x5000,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x3882,0x6842,0x2800,0x6000,0x6000,0x9862,0x3800,0x5800,0x1000,0x6800,0x8802,0x9863,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0x9883,0x8801,0x6800,0xa083,0x6800,0x0000,0x7000,0x2800,0x0000,0x9042,0x8801,0x7000,0x9863,0x9022,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2061,0x98c4,0x9002,0x0000,0x6800,0x9863,0x2000,0x9862,0x7800,0x6000,0x0000,0x6800,0x8802,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2820,0x9863,0x7000,0x0000,0x7800,0x1800,0x5800,0xa083,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2861,0x90c4,0x9862,0x5800,0x6000,0x9863,0x2800,0x9042,0x8802,0x4000,0x6000,0x2800,0x6000,0x1800,0x7000,0x0000,0x9042,0xa083,0x6000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x8104,0x8104,0xb166,0x9945,0x2882,0xa966,0x9125,0x48c3,0x0061,0x48c3,0xc186,0x50c3,0x58e3,0xc9a7,0x9125,0x9945,0x0040,0x1882,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0x50c3,0x58c3,0xc9a7,0x9125,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x58c3,0x0020,0x68e4,0xa946,0xa145,0xb166,0x9125,0xc186,0x9125,0x48c3,0x1882,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa145,0x60e4,0xb166,0xa966,0x8104,0xb166,0xb166,0x58e3,0x60e3,0xc9a7,0x9125,0x9945,0x0040,0x1061,0xb986,0xd9c7,0x7104,0x0040,0x1882,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x7904,0x58c3,0xa966,0x58c3,0x0000,0x9945,0x70e4,0x9125,0xb166,0x9145,0x30a2,0xa146,0x9945,0x48c3,0x2082,0x0040,0x7104,0xd9c7,0xb986,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc987,0xb166,0xb986,0x9125,0x60e4,0xb986,0x9125,0x1882,0xc187,0xb166,0x60e4,0x38a2,0x0061,0x1062,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9945,0x2882,0xa966,0x8925,0x9945,0x9125,0x7904,0x7904,0xa145,0x9945,0x30a2,0xa146,0x9945,0x48c3,0x1882,0x0861,0x1061,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xb966,0x8104,0xb166,0x9125,0x7104,0x9125,0xa146,0x8125,0xc987,0x9125,0x9945,0x60e4,0xb966,0x1082,0x1062,0x1061,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x7904,0x60e3,0x8104,0x7904,0x8925,0x30a2,0xb166,0x7104,0x0061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0x50c3,0x60e3,0xa145,0x60e4,0xb166,0xa966,0x7904,0xb166,0xc186,0xb966,0xb166,0x7904,0x8104,0x70e4,0x68e4,0xb966,0x1062,0x1082,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x0800,0x9104,0xb966,0x9925,0x0000,0xa125,0xa945,0x0000,0x0000,0x4082,0xc986,0x4882,0x3862,0x9925,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc986,0x4882,0x3862,0x9925,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x3862,0x0000,0x4882,0x8104,0x80e4,0x9105,0xb966,0xb146,0x9125,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9105,0x0000,0xb966,0xb966,0x8904,0x58a3,0xc166,0x2841,0x3041,0x9925,0xa945,0xa125,0x0000,0x2041,0xc986,0xe1a7,0x8104,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x3061,0x0000,0xa125,0x3862,0x0000,0xa945,0x0000,0x9105,0x60a3,0x78e4,0x8904,0xa945,0x9925,0x0000,0x0800,0x0000,0x8104,0xe1a7,0xc986,0x1000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x70c3,0xb146,0x8904,0x0000,0xb146,0x8904,0x8104,0x9104,0xb966,0x3862,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x9925,0x0000,0x9925,0xd9a7,0x68c3,0xa125,0xa145,0xc166,0x50a2,0x80e4,0x8904,0xa945,0x9925,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc166,0x80e4,0x68c3,0x9105,0x0000,0x9925,0x78e4,0x70c3,0x9105,0xa945,0x9925,0x2041,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x3061,0x0000,0xb145,0xa125,0xc166,0x2041,0x9105,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc986,0x4882,0x4882,0x9925,0x0000,0xb966,0xc166,0xb966,0x50a2,0xa125,0x70e4,0xa945,0xb966,0xa945,0xa125,0x2041,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xb966,0x50a2,0x9125,0xa945,0x8104,0x9925,0x3061,0x0000,0x0000,0x5082,0x9105,0x0000,0x58a3,0x8904,0x3862,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9105,0x0000,0x58a3,0x8904,0x3862,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xb146,0x8904,0x8904,0xb966,0x9925,0x3061,0x8904,0xb146,0xa125,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x9925,0xa125,0x9104,0x8904,0x0000,0x4082,0xb966,0x9105,0x8904,0x8104,0x4082,0xa125,0x0000,0x0000,0x9925,0xb966,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa945,0x8904,0xa125,0xb146,0x8904,0x78e4,0xa945,0x9105,0x70c3,0x9925,0x9104,0xa125,0xa125,0x9105,0x2041,0x0000,0x50a2,0xb966,0x9925,0x0000,0x1000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9104,0x1821,0xa125,0x8904,0xa945,0x60a3,0x68c3,0xa945,0x4062,0xb966,0x9925,0x68c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x8104,0x9925,0x58a3,0x78e4,0xa125,0x68c3,0x9925,0x8104,0x9105,0x9104,0xa125,0xa125,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9105,0x0000,0x2041,0x9925,0xa945,0x68c3,0xb966,0x9925,0x80e4,0x4082,0x9925,0x3061,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa945,0x8904,0xa125,0x68c3,0xa125,0x3061,0x9105,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9104,0x0000,0x3061,0x9925,0xa125,0x9104,0x80e4,0x58a3,0x9105,0x8904,0x1000,0xb146,0x9105,0x68c3,0x9105,0x3061,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14e0,0x14e1, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x4882,0x0000,0x2041,0x50a3,0x4882,0x2041,0x1820,0x0000,0x0000,0x0800,0x2041,0x0800,0x0800,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x0800,0x0800,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x50a2,0x4882,0x3061,0x4082,0x2041,0x0800,0x0800,0x2841,0x50a2,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x5082,0x0000,0x2041,0x1020,0x0000,0x4082,0x58a3,0x3861,0x1820,0x0000,0x1820,0x0000,0x0000,0x0800,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x2841,0x1000,0x50a2,0x5082,0x0000,0x5082,0x2021,0x2841,0x60a3,0x1821,0x0800,0x58a3,0x5082,0x0800,0x0000,0x0000,0x1820,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x2021,0x1820,0x0000,0x2041,0x5082,0x0000,0x0000,0x0800,0x0000,0x4082,0x58a3,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x50a3,0x4882,0x2841,0x0000,0x2041,0x2841,0x0000,0x0000,0x3862,0x60a3,0x1821,0x0800,0x58a3,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x1820,0x0000,0x2041,0x5082,0x0000,0x4082,0x3061,0x1820,0x0000,0x1820,0x0800,0x2021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x2841,0x0800,0x0000,0x0800,0x1000,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x1000,0x0000,0x2841,0x5082,0x0000,0x2041,0x0000,0x3061,0x1820,0x1000,0x2041,0x0000,0x0000,0x1821,0x0800,0x2021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0,0x14e0,0x14e0,0x14e0,0x14e0,0x14e0, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e0,0x14e0,0x14c4, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7de4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2ce1,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0040,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0040,0x0020,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x00a0,0x09e0,0x0120,0x0140,0x0120,0x0000,0x0000,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x00e0,0x0000,0x01a0,0x00c0,0x0000,0x01a0,0x01a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0120,0x0160,0x0180,0x0000,0x0080,0x0000,0x0060,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0100,0x0160,0x00a0,0x0000,0x0060,0x0120,0x0160,0x0160,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x01a0,0x0000,0x0000,0x0000,0x0080,0x0160,0x00e0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0180,0x0120,0x0160,0x0160,0x00c0,0x01c0,0x00a0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x00c0,0x0180,0x0000,0x00a0,0x0080,0x0080,0x0160,0x01a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x00e0,0x0000,0x01a0,0x00a0,0x0060,0x0180,0x0000,0x00a0,0x01a0,0x0180,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x01a0,0x0000,0x0160,0x01c0,0x0100,0x0140,0x01c0,0x0120,0x0080,0x0000,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0120,0x0160,0x0180,0x0000,0x0080,0x0000,0x00a0,0x01c0,0x00a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x00e0,0x0b00,0x0ae0,0x0a00,0x13c0,0x0ae0,0x0b60,0x01a0,0x0ae0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0a40,0x0b40,0x0ae0,0x0a80,0x0b00,0x0ac0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x09e0,0x1400,0x0b20,0x00e0,0x0b00,0x01c0,0x0b20,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a80,0x0ba0,0x0b20,0x0a80,0x0aa0,0x0aa0,0x13e0,0x0b40,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ac0,0x0ae0,0x0b80,0x0180,0x0b40,0x0ba0,0x0b00,0x00e0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a60,0x0b20,0x0aa0,0x0a00,0x1400,0x0ae0,0x0b20,0x0b20,0x0b00,0x00e0,0x0000,0x00e0,0x13c0,0x0b20,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b00,0x0b20,0x0ac0,0x0a80,0x0000,0x0b60,0x0b60,0x0ae0,0x0a60,0x0000,0x0000,0x0aa0,0x1400,0x01c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0a40,0x0b40,0x0ac0,0x0b20,0x0ba0,0x01a0,0x0ae0,0x0b40,0x0ae0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ac0,0x0ae0,0x0b80,0x0ae0,0x0aa0,0x0b80,0x0ae0,0x0ac0,0x0a80,0x0a40,0x0a60,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x09e0,0x1400,0x0b20,0x00e0,0x0b00,0x01c0,0x0b00,0x0b40,0x0b00,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00e0,0x0b00,0x0aa0,0x0000,0x0aa0,0x0a00,0x0b80,0x0b80,0x0ae0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0100,0x0000,0x0b60,0x0000,0x0ac0,0x0b00,0x0ae0,0x01c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b00,0x0060,0x0ae0,0x0a60,0x0b00,0x0b60,0x0b60,0x0ba0,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x0aa0,0x0aa0,0x0b80,0x0ba0,0x0000,0x0ac0,0x0140,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0ae0,0x0ac0,0x0b80,0x0b60,0x0b80,0x0a60,0x0100,0x0b40,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a40,0x0b00,0x09e0,0x0000,0x0b00,0x0060,0x0b00,0x0b60,0x0ae0,0x00e0,0x0000,0x01c0,0x1420,0x0b00,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01c0,0x0b00,0x0000,0x01a0,0x13c0,0x0b40,0x0b80,0x0b80,0x0b00,0x0a40,0x0000,0x0000,0x0b40,0x1420,0x0160,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0100,0x0000,0x0b60,0x0000,0x0aa0,0x13a0,0x0000,0x0ac0,0x13a0,0x0ae0,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x13c0,0x0ac0,0x0ae0,0x13a0,0x0100,0x0080,0x13e0,0x00e0,0x0040,0x1400,0x0a40,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b00,0x0060,0x0ae0,0x0a60,0x0b00,0x0b80,0x0b00,0x0b00,0x0100,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b00,0x0ac0,0x0b20,0x0ac0,0x0ac0,0x0a80,0x0b80,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0a40,0x09c0,0x0b40,0x0a00,0x0b20,0x09c0,0x0a00,0x0b80,0x0140,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b40,0x0120,0x0b40,0x0b60,0x13a0,0x13a0,0x0180,0x13e0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a00,0x0b40,0x0b00,0x09c0,0x13e0,0x00e0,0x0b20,0x09c0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x13a0,0x0b20,0x0a20,0x0ae0,0x0a40,0x13e0,0x0b00,0x0a60,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0a20,0x0b80,0x00c0,0x0b40,0x0140,0x0ae0,0x0b80,0x0a80,0x0000,0x0000,0x09c0,0x1460,0x0b60,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x0b40,0x0160,0x0aa0,0x0b40,0x09e0,0x13c0,0x0b60,0x0b40,0x0120,0x0000,0x0000,0x0b40,0x1460,0x09c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0a40,0x09c0,0x0b40,0x0a20,0x0ae0,0x13a0,0x0a60,0x0a80,0x0b60,0x0ae0,0x0180,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b80,0x00c0,0x0140,0x13c0,0x09a0,0x09e0,0x13c0,0x09a0,0x0a00,0x0b80,0x0a80,0x0160,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b40,0x0120,0x0b40,0x0b60,0x13a0,0x13c0,0x0ac0,0x0b20,0x0140,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf9c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b00,0x0ae0,0x0100,0x0b20,0x0a80,0x01c0,0x0020,0x0200,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x00c0,0x0b20,0x0260,0x0080,0x0b20,0x0200,0x01e0,0x0b40,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0220,0x00a0,0x0200,0x0000,0x0180,0x0a80,0x0000,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b00,0x0220,0x0060,0x01e0,0x00c0,0x0200,0x0100,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x01c0,0x0040,0x0a80,0x01c0,0x0000,0x0220,0x0b00,0x0260,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x0b20,0x0220,0x0000,0x0220,0x00a0,0x0200,0x0000,0x0200,0x0100,0x0000,0x00c0,0x0a80,0x0120,0x0000,0x0020,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0240,0x0b20,0x01a0,0x01c0,0x0000,0x0a80,0x0180,0x00a0,0x0220,0x0000,0x0020,0x01c0,0x0240,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x00c0,0x0b20,0x0260,0x0080,0x0b20,0x0200,0x0200,0x0b40,0x0000,0x0200,0x0b20,0x0ae0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x0200,0x0000,0x00e0,0x0b00,0x0b20,0x0240,0x0ac0,0x0b20,0x0a80,0x0180,0x0100,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0220,0x00a0,0x0200,0x0000,0x0180,0x0a80,0x0b20,0x0220,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1800,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x1042,0x1803,0x1803,0x1843,0x0861,0x0801,0x0881,0x0861,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x0801,0x18c3,0x0801,0x1803,0x1843,0x0801,0x0801,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0821,0x1002,0x1903,0x1883,0x1803,0x0861,0x0801,0x0801,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x1002,0x18e3,0x1883,0x18a3,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x0841,0x0801,0x1863,0x18e3,0x1803,0x0801,0x0801,0x0881,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x18c3,0x1002,0x10a2,0x1803,0x0841,0x0801,0x0821,0x1061,0x1001,0x1001,0x1001,0x1081,0x1861,0x1861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0801,0x0801,0x1883,0x0801,0x18c3,0x1803,0x0801,0x0821,0x0801,0x0881,0x0861,0x0801,0x1801,0x1081,0x1061,0x1861,0x1061,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x0801,0x1082,0x1803,0x1883,0x1002,0x0801,0x0861,0x0801,0x0801,0x0801,0x1041,0x1061,0x1061,0x1861,0x1861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x0881,0x1062,0x1803,0x1803,0x1803,0x0801,0x0801,0x0801,0x0801,0x0801,0x0801,0x0881,0x1061,0x1061,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0801,0x0841,0x1863,0x18e3,0x18a3,0x1002,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x2082,0x0000,0xa925,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4228,0x39e7,0x1903,0x1903,0x2965,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x18c3,0x4228,0x2985,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x3208,0x2a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4228,0x2985,0x10a2,0x2124,0x2124,0x39e7,0x4208,0x3a08,0x2a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4248,0x2965,0x10c2,0x1903,0x2965,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x3a07,0x2124,0x10a2,0x2124,0x3a07,0x4208,0x4208,0x4208,0x3a08,0x2a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2945,0x3186,0x3186,0x2965,0x4228,0x3a08,0x4208,0x2a08,0x3a08,0x3208,0x3a08,0x3a08,0x2a08,0x1a08,0x3a08,0x41e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x3a07,0x18e3,0x4208,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x1a08,0x3208,0x3208,0x1a08,0x3208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x10e2,0x10c2,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x2a08,0x3a08,0x3208,0x1208,0x2208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x39e7,0x1903,0x1903,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2945,0x4228,0x39e7,0x18e3,0x2104,0x1903,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x628a,0xea09,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x3208,0x6208,0x7a08,0x1228,0x2a08,0x3208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x2965,0x8c51,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3208,0x7a08,0x8a08,0x5a08,0x3208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x3186,0x8430,0xb5b6,0xad75,0xa534,0x4a49,0x3a08,0x5208,0x8208,0x3208,0x3208,0x2208,0x2a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x8430,0xb5b6,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x3208,0x6208,0x7a08,0x3208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0xa534,0xb5b6,0xa534,0x4a49,0x4208,0x4208,0x3a08,0x5208,0x8208,0x2a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x8c71,0x8430,0x8430,0x8c71,0x2965,0x4a28,0x2a08,0x8a08,0x5208,0x7a08,0x5a08,0x6a08,0x9208,0xa9e8,0x5228,0x29c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39e7,0x4a69,0xad75,0x39e7,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3a08,0x5208,0xa9e8,0x7a08,0x7a08,0xb1e8,0x8208,0x31e7,0x5aaa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x31a6,0x7bef,0xb5b6,0xb5b6,0x7bef,0x31a6,0x4228,0x4208,0x4208,0x2a08,0x8a08,0x5208,0x7208,0xb1e8,0xa208,0x4a28,0x31c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x8c51,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x5208,0x5208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0xad75,0xad75,0x528a,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4228,0x31c7,0x7b8e,0xfa6a,0xf9a7,0xf9e8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41fe,0x419f,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce79,0x632c,0xf79e,0x52aa,0x39e7,0x3a28,0x5a08,0x99e8,0x6208,0x99e8,0xa9e8,0x7a08,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xf7be,0x73ae,0xce79,0xc638,0x0000,0x4a49,0x4208,0x3a08,0x8a08,0x8a08,0x5a08,0x99e8,0x5a08,0x3a08,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc638,0xce79,0x31a6,0x6b6d,0x4228,0x4208,0x3a08,0x8a08,0x8208,0x7208,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xc638,0xce59,0x4a49,0xffdf,0x52aa,0x39c7,0x4228,0x4208,0x3a08,0x5a08,0x99e8,0x5a08,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x39e7,0x7bcf,0xffdf,0x7bcf,0x39e7,0x4208,0x4208,0x4208,0x3a08,0x8a08,0x8a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x0000,0xd69a,0xb596,0xb596,0xd69a,0x0000,0x3a49,0x8208,0x8a08,0x8a08,0xb9e8,0xb1e8,0x99e8,0xc1e8,0x8208,0x9a08,0x49c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xffdf,0x31a6,0xc638,0xce59,0x0000,0x4a49,0x4208,0x4208,0x2208,0xa1e8,0x8208,0x99e8,0xc1e8,0x8a08,0xa9e8,0x59e7,0x4aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xd69a,0xd69a,0x39c7,0x4228,0x4208,0x4208,0x3208,0x8208,0x8a08,0x99e8,0x5208,0xb9e8,0x8208,0x3a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xbdf7,0xce79,0x632c,0xf79e,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4a08,0x1208,0xb1e8,0xb1e8,0x1208,0x4a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffdf,0x4a69,0xce59,0xc638,0x0000,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x5208,0x4a08,0x4228,0x31c7,0x7b6d,0xf26a,0xf9a7,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bd3,0x413f,0x41df,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc618,0xb5b6,0x2104,0xef7d,0x5acb,0x39c7,0x3228,0x8a08,0x9208,0x2208,0x8208,0x8a08,0x6a08,0x3a08,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xe73c,0xad75,0xd6ba,0xbdd7,0x0861,0x4a49,0x4208,0x4a08,0xa9e8,0x5208,0x0208,0x9208,0x8a08,0x2a08,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x1082,0xbdd7,0xdefb,0x94b2,0x4228,0x39e7,0x4208,0x3208,0x5208,0xa9e8,0x6a08,0x8a08,0x8208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xbdd7,0xdefb,0xb596,0xce59,0x4228,0x4208,0x4208,0x4208,0x2a08,0x8a08,0x9208,0x1208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x528a,0xef5d,0x528a,0x39c7,0x4228,0x4208,0x4208,0x3208,0x4a08,0xa9e8,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x9492,0xd69a,0xd69a,0x9492,0x3145,0x2228,0xb1e8,0xb1e8,0xc1e8,0xb1e8,0x9208,0xc1e8,0xb1e8,0x3208,0xaa08,0x61c7,0x636d,0x3165,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x39c7,0xbdf7,0xbdf7,0x0020,0x4a49,0x4208,0x4a08,0x2208,0xb1e8,0x3a08,0x9208,0xb9e8,0xd1e8,0x8a08,0x21e7,0x5aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xbdf7,0xbdf7,0x0000,0x4a49,0x4208,0x4a08,0x1a08,0xb1e8,0xa9e8,0xc9e8,0x4a08,0x99e8,0x6208,0x3228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc618,0xbdd7,0x2124,0xef7d,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x3a08,0x6208,0x5a08,0x3a08,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef7d,0xa534,0xce79,0x94b2,0x2945,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x5a08,0xb1e8,0x9208,0x3228,0x39c7,0x7b6d,0xf26a,0xf9a7,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e1,0x14e0,0x14e0,0x3ada,0x415f,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0841,0xc618,0xc638,0x3186,0xef7d,0x5acb,0x39c7,0x4228,0x2a08,0x8a08,0x8a08,0x9208,0xa9e8,0x7a08,0x3208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xef7d,0xffdf,0xffff,0xad75,0x18e3,0x4a49,0x4208,0x3a08,0x5208,0x9a08,0x8a08,0x8a08,0x2a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0861,0xbdf7,0xc638,0x4228,0x4208,0x4208,0x4208,0x4a08,0xa1e8,0x4a08,0x7208,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x10a2,0xbdf7,0xc638,0xdefb,0x8c71,0x1082,0x4a49,0x4208,0x4208,0x4208,0x2a08,0x8a08,0x8208,0x3208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x5acb,0xef5d,0x5acb,0x39c7,0x4228,0x4208,0x3a08,0x4a08,0xa1e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xce59,0xce59,0x0000,0x4a49,0x2208,0xa1e8,0x7a08,0x99e8,0xb9e8,0x4a08,0x9a08,0xb9e8,0xb9e8,0x7a08,0x29c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x2104,0xbdd7,0xc618,0x0000,0x4a49,0x4208,0x4208,0x3208,0x8208,0xb1e8,0x9a08,0xa1e8,0x6a08,0x9208,0x49e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xbdf7,0xbdf7,0x0000,0x4a49,0x4208,0x4208,0x2208,0xa1e8,0x7a08,0xa9e8,0x5208,0x99e8,0x6a08,0x3a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc618,0xbdd7,0x2124,0xef7d,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x4208,0x2208,0x9a08,0xa9e8,0x1a08,0x4a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0x7bef,0x5acb,0x3186,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x5208,0x4a08,0x4228,0x31c7,0x7b6d,0xf26a,0xf9a7,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x14c0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x10a2,0xb5b6,0xf7be,0xdefb,0xef5d,0x52aa,0x4208,0x4228,0x4208,0x3a08,0x5228,0x2a49,0x2228,0x3a48,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a69,0x1082,0xc618,0xf79e,0xf7be,0x632c,0x39c7,0x4a49,0x4249,0x4208,0x3a28,0x4a28,0x5a08,0x3a28,0x4208,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4a49,0x0000,0xc638,0xce79,0x4228,0x6b6d,0x4228,0x4208,0x5249,0x4a28,0x3a28,0x4249,0x2a49,0x2a28,0x4228,0x4228,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xce59,0xbdd7,0x73ae,0xef5d,0x39e7,0x4208,0x4228,0x4a49,0x4228,0x4228,0x3a08,0x5228,0x4228,0x4208,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39c7,0x5acb,0xf7be,0x5aeb,0x4208,0x4228,0x4208,0x4228,0x4a08,0x4a28,0x3a28,0x4228,0x4228,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x4a69,0x0861,0xc638,0xce59,0x10a2,0x4a69,0x4a49,0x4a28,0x3a28,0x4208,0x5228,0x4a28,0x4a49,0x5228,0x6a28,0x3a28,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xf79e,0x632c,0xce79,0xbdf7,0x0841,0x4a49,0x4208,0x4208,0x4208,0x3208,0x6a28,0x5249,0x4a28,0x4249,0x5229,0x41e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39c7,0xd6ba,0xd69a,0x39c7,0x4228,0x4228,0x4a49,0x4228,0x4a28,0x3a28,0x4208,0x4a28,0x4a28,0x4a49,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0861,0xbdf7,0xce79,0x632c,0xf7be,0x5acb,0x39e7,0x4228,0x4a49,0x4228,0x4228,0x3a08,0x7228,0x6229,0x4249,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xf7be,0x528a,0x39c7,0x4a69,0x4208,0x4a49,0x4a49,0x4208,0x4a49,0x4228,0x4228,0x4208,0x4228,0x4228,0x4a49,0x31e7,0x7b6d,0xf26a,0xf9a7,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x41bf,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xa514,0xc618,0xc638,0x2124,0x39c7,0x31a6,0x4228,0x4208,0x2986,0x2904,0x41e7,0x2924,0x18c3,0x31a6,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2945,0x8c51,0x8c71,0x9492,0x4208,0x4208,0x2104,0x2124,0x4208,0x41e7,0x2965,0x3a08,0x31a6,0x4208,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x3186,0x8430,0xb5b6,0xad55,0xa534,0x4a49,0x39e7,0x2124,0x2145,0x39c7,0x2924,0x2904,0x3186,0x3186,0x39c7,0x3186,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c71,0x8c71,0x2965,0xad75,0x528a,0x4208,0x3186,0x18e3,0x31a6,0x31a6,0x41e7,0x31c7,0x2945,0x39e7,0x31a6,0x39e7,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x39e7,0x4a69,0xad55,0x4208,0x18c3,0x3186,0x4228,0x2965,0x3a08,0x3186,0x39e7,0x39c7,0x2965,0x2104,0x39e7,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x2104,0x18c3,0x8430,0x7bef,0x0000,0x39c7,0x18c3,0x2145,0x3186,0x3a08,0x31c6,0x2965,0x1904,0x31a6,0x2186,0x41e7,0x2965,0x6b4d,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c51,0xb596,0xad55,0x52aa,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4228,0x2186,0x1904,0x3186,0x2104,0x2145,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x31a6,0x7bef,0xad55,0xad75,0x73ae,0x3186,0x31a6,0x2124,0x2945,0x31c7,0x31a6,0x3a08,0x3186,0x2145,0x18c3,0x39c7,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x7bcf,0x0861,0x4208,0x3186,0x2124,0x39c7,0x39c7,0x41e7,0x2186,0x1945,0x2104,0x31a6,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad55,0x4a69,0x18e3,0x2945,0x39e7,0x2124,0x2124,0x39e7,0x2104,0x2965,0x3186,0x4208,0x3186,0x2945,0x20e3,0x2145,0x7b8e,0xf26a,0xf9a7,0xf9a8,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x18e3,0x2965,0xb5b6,0xa514,0x632c,0x7bef,0x39c7,0x39c7,0x8430,0xad75,0x52aa,0xa534,0xb5b6,0x7bef,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2945,0x39c7,0xa534,0x8430,0x39c7,0xad55,0xa534,0x4a49,0x5acb,0x8c51,0x4a49,0x7bef,0x528a,0x8410,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x3186,0x18c3,0x2124,0x2124,0x39e7,0x4a69,0xad55,0xa514,0x5aeb,0xa514,0xad55,0x8c71,0x7bef,0x5acb,0x8430,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x2965,0x4228,0x18c3,0x4208,0x3186,0x8410,0xb596,0x7bcf,0x7bcf,0x528a,0x738e,0x94b2,0x4a69,0x7bcf,0x5aeb,0x3186,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4228,0x0000,0x8410,0xb596,0x8410,0x18e3,0x8c71,0x528a,0x7bef,0x5acb,0x6b6d,0x94b2,0xad75,0x528a,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x8430,0xb596,0x7bcf,0x738e,0xad55,0x9cf3,0x8410,0xb5b6,0xa514,0x8430,0x4a69,0x738e,0x9492,0xb596,0x7bcf,0x8410,0x52aa,0x738e,0x7bef,0x2124,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2104,0x2104,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x8430,0xad55,0x8430,0xad75,0xa534,0x4228,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0xa514,0x7bef,0x73ae,0x4a49,0x8c51,0xa514,0xa514,0x6b4d,0x7bcf,0x4a69,0x8430,0xa514,0xb5b6,0x7bef,0x2945,0x738e,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x39e7,0x18e3,0x3186,0x9cf3,0xa534,0x4a49,0x8410,0xad55,0x632c,0x738e,0x52aa,0x8c51,0x9cf3,0xad75,0x8410,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x18c3,0x4a69,0xad55,0xa514,0x5aeb,0xa534,0xa514,0x5acb,0xad75,0x9492,0x7bef,0x4a49,0x8430,0x9cf3,0xbdb6,0x73cf,0x732c,0xfa6a,0xf9e7,0xf008,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39e7,0x6b6d,0xbdf7,0x8c71,0xbdf7,0xa534,0x2104,0x6b6d,0xad75,0x7bef,0xa514,0x7bcf,0xc618,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x6b6d,0xbdd7,0x8410,0xa534,0xbdd7,0x8c71,0xad75,0x8c71,0x8c51,0xa534,0x9cf3,0x528a,0xb596,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4a49,0x31a6,0x6b4d,0xc618,0x8430,0xbdd7,0xbdf7,0x738e,0x73ae,0xd69a,0xc618,0xb5b6,0x1082,0x5acb,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x4228,0x4208,0x4a49,0x4a49,0x18e3,0xb5b6,0x9cd3,0xa534,0xc618,0x5aeb,0x9cf3,0xce79,0xb596,0xad75,0x6b6d,0x2945,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2945,0xb5b6,0x94b2,0xad55,0x9cf3,0x8c51,0x8c51,0xbdf7,0xbdd7,0xa514,0xc638,0x8c51,0xa514,0x4a69,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0xb5b6,0x9cd3,0xa514,0xc638,0xa514,0x632c,0x4228,0xc618,0x73ae,0xad75,0x632c,0x9cf3,0xce79,0x9492,0xa534,0xce59,0xb5b6,0xad55,0x8c71,0x18c3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a49,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x3186,0x7bef,0xb596,0xad55,0xa534,0x630c,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0xbdf7,0x94b2,0xd69a,0x94b2,0xbdf7,0xbdd7,0x9492,0xbdf7,0x9cf3,0x630c,0xad75,0x73ae,0xc618,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39e7,0x6b6d,0xc638,0x8c71,0xbdd7,0xa514,0x7bcf,0xbdf7,0xb596,0x9492,0x8410,0xc638,0x73ae,0x5acb,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x39e7,0x6b4d,0xc618,0x8c71,0xbdf7,0xb5b6,0x9492,0x9cf3,0xad75,0x9492,0xd69a,0x9cf3,0xa534,0x7bcf,0xc618,0x31c7,0x7b6e,0xf26a,0xf9a7,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39c7,0x630c,0xce79,0x94b2,0x7bcf,0xa514,0x0000,0x6b6d,0xa514,0x39c7,0xad75,0x4a69,0xad55,0x18c3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x31a6,0x6b6d,0x9cd3,0x4a49,0xc618,0xce59,0xc638,0x6b6d,0xce59,0xad55,0xce59,0xa534,0x9492,0xad55,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x5aeb,0xd6ba,0xc618,0x632c,0xce79,0x528a,0x528a,0xb596,0x8c71,0xa534,0x2104,0x5acb,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4a49,0x2124,0xa534,0xdefb,0x8410,0xad55,0x4a69,0x9cd3,0xbdf7,0x94b2,0xd69a,0x630c,0x3186,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2124,0xa534,0xe71c,0x7bef,0xad75,0xb5b6,0xc618,0xb5b6,0x9cd3,0xce59,0xbdd7,0x31a6,0xad75,0x6b4d,0x4a49,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x1082,0x0000,0xad55,0xdefb,0x8410,0xa534,0xad55,0x18c3,0x0861,0xad55,0x528a,0xad55,0x4a69,0x94b2,0xc618,0xdedb,0x8430,0x94b2,0x9cf3,0xce79,0x8410,0x2104,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x632c,0x9492,0xa514,0xb5b6,0x31a6,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x2104,0x9cd3,0x8410,0xa514,0xb596,0xc618,0xc618,0x9cd3,0x7bef,0xa514,0x4228,0xad55,0x528a,0xad55,0x18e3,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x39c7,0x630c,0xce79,0x94b2,0x7bef,0xa514,0x2965,0xc618,0xce59,0x8430,0x4a49,0xce79,0x5acb,0x18e3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x630c,0xce79,0x94b2,0x6b6d,0xd69a,0xce59,0x2965,0x9cd3,0x8410,0xa514,0xb5b6,0xad55,0x4a69,0xad55,0x0000,0x7b8e,0xf26a,0xf987,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x5aeb,0xc638,0xad55,0x8430,0x9cf3,0xb596,0x7bcf,0x5acb,0xa534,0x2104,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x3186,0x5acb,0xce59,0x9cd3,0x73ae,0x9cd3,0x6b6d,0x9cd3,0xa514,0x7bcf,0xad55,0x9cf3,0xbdf7,0x7bef,0x2965,0x39c7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x2965,0x6b4d,0x9cd3,0x6b6d,0x94b2,0xbdd7,0x9cf3,0x9cd3,0x94b2,0x4a49,0xad55,0x1082,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0xa514,0x6b6d,0x8c71,0x8c51,0xb596,0x9cd3,0xad75,0x4a49,0xa534,0x632c,0x2124,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0xa514,0x738e,0x8c51,0xad55,0x7bef,0x9cf3,0xbdd7,0x4a49,0x9cd3,0xbdf7,0xbdd7,0x7bef,0x2945,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0861,0x0000,0xa514,0x738e,0x8430,0xad75,0xb596,0xa514,0x2965,0xa534,0x5aeb,0x7bcf,0xb596,0x9cd3,0xa534,0x6b6d,0x8c51,0xad75,0x4a69,0xa514,0x8c51,0x18e3,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0x8c71,0xc638,0x9cf3,0x52aa,0x3186,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39c7,0xce59,0xa534,0x9492,0x528a,0xc618,0x9492,0x0000,0x4a49,0xa534,0xb596,0x7bcf,0x5acb,0xa534,0x2104,0x39c7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x4a49,0xa534,0xad55,0x9cf3,0x9492,0x7bef,0x9cd3,0xbdd7,0xa534,0x8410,0x2124,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x6b4d,0x9cd3,0x73ae,0x8410,0xc618,0xa534,0x9492,0x5aeb,0xa534,0x528a,0xad55,0x1041,0x838e,0xf28a,0xf8e7,0xfc48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x41bf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x5aaa,0x62eb,0x5acb,0x52aa,0x6b6d,0x7bef,0x630c,0x5aeb,0x7bcf,0x4a49,0x5acb,0x5acb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x5aaa,0x52aa,0x52aa,0x528a,0x738e,0x630c,0x5269,0x62eb,0x5269,0x632c,0x52aa,0x4a69,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aeb,0x528a,0x630c,0x6b6d,0x7bef,0x6b4d,0x5acb,0x5acb,0x5aeb,0x4a69,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x52aa,0x52aa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x5aaa,0x62eb,0x528a,0x630c,0x528a,0x7bae,0x62eb,0x5aaa,0x5acb,0x5acb,0x5acb,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x5aaa,0x5a8a,0x62eb,0x528a,0x62eb,0x630c,0x4a49,0x5aaa,0x62eb,0x5aaa,0x5aaa,0x630c,0x73ae,0x4a69,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3145,0x62eb,0x528a,0x5aeb,0x632c,0x7bcf,0x73ae,0x52aa,0x5acb,0x5acb,0x4a49,0x7bcf,0x5aeb,0x52aa,0x528a,0x5aeb,0x630c,0x52aa,0x528a,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x632c,0x6b6d,0x5aeb,0x5acb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x5aaa,0x528a,0x5acb,0x738e,0x6b2c,0x5acb,0x52aa,0x5aeb,0x5aeb,0x5acb,0x4a69,0x5aeb,0x7bcf,0x4a49,0x5acb,0x5acb,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x62eb,0x5acb,0x5269,0x62eb,0x73ae,0x4a69,0x5aeb,0x4a69,0x630c,0x6b6d,0x7bef,0x632c,0x4a69,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x5aaa,0x5aaa,0x52aa,0x5aeb,0x5acb,0x52aa,0x5aeb,0x4a69,0x632c,0x6b6d,0x632c,0x5acb,0x52aa,0x5acb,0x52aa,0x42cb,0x1a49,0x73ce,0xf2aa,0xf807,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3a08,0x5b2c,0x630c,0x530c,0x4b0c,0x52eb,0x530c,0x630c,0x52cb,0x5aaa,0x5aeb,0x630c,0x5acb,0x632c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a2,0x52eb,0x5b0c,0x630c,0x4b0c,0x4acb,0x5aeb,0x530c,0x4aeb,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3a08,0x5b2c,0x630c,0x4b0c,0x4b0c,0x530c,0x530c,0x630c,0x530b,0x630c,0x5aeb,0x5aeb,0x52aa,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x5aeb,0x5b0c,0x530c,0x4b0c,0x530c,0x530c,0x4b0c,0x52eb,0x5b0c,0x4aeb,0x530c,0x3aaa,0x4aeb,0x530c,0x630c,0x530c,0x5b0c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x530c,0x4b0c,0x4b0c,0x52eb,0x4b0c,0x4aeb,0x5aeb,0x5b0c,0x4b0b,0x5aeb,0x4b0c,0x4b0b,0x52eb,0x5acb,0x632c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x00a2,0x42cb,0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x630c,0x630c,0x630c,0x632c,0x5acb,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x5b2c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x5acb,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x42eb,0x530c,0x530c,0x5acb,0x52eb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x5acb,0x632c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x532c,0x5b0c,0x5b0c,0x630c,0x52eb,0x530c,0x4b0c,0x52eb,0x5acb,0x630c,0x630c,0x630c,0x5aeb,0x5aeb,0x52aa,0x5aeb,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a2,0x5aeb,0x530c,0x4b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x630c,0x5b0c,0x730c,0xc34d,0xcb6e,0xcb6d,0xf208,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41be,0x41bf,0x2935, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0x7000,0x0000,0x6800,0x9863,0x7000,0x6000,0x0000,0x6800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x7000,0x2800,0x0000,0x9863,0x7000,0x0800,0x9022,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0x7000,0x0000,0x9042,0xa083,0x7000,0x6000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0x2000,0x5000,0x7800,0x9863,0x8801,0x6800,0xa083,0x5800,0x6000,0x9863,0x6800,0x9883,0x8802,0x6800,0x0000,0x5800,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3882,0x6842,0x2000,0x7000,0x8802,0x9863,0x6800,0x8822,0x9042,0x0000,0x6800,0x9062,0x3800,0x9022,0x9883,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0x9883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1841,0x98e4,0x6800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x9883,0x7800,0x6000,0x0000,0x6800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x7042,0x9842,0x3800,0x5800,0x0800,0x6800,0x8802,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x1800,0x8802,0x9022,0x2000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x9862,0xf987,0xf967,0xf987,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7de4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41bf,0x20cf, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x8925,0x7104,0x8925,0xa966,0x68e4,0x50c3,0xc9a7,0x8925,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0x8104,0x7904,0xa146,0x7104,0x58c3,0xa145,0x9145,0x50c3,0x0061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x8905,0x7904,0x70e4,0x68e4,0xb166,0x48c3,0xd1a7,0x9125,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x3082,0x8925,0xc187,0x9125,0x3082,0xa966,0x8925,0x9945,0x8125,0xa145,0x9945,0x9945,0x2882,0xa946,0x58e3,0xa146,0x50c3,0x0061,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc987,0xb166,0xc186,0xb166,0x58e3,0x68e4,0xb966,0x7104,0xb166,0x9945,0x7904,0x9125,0xb966,0x60e4,0x38a2,0x0061,0x1062,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa145,0x7904,0x0061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7904,0xa966,0x0000,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0xb166,0x8104,0xc987,0x9125,0x9945,0x0040,0x1882,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa145,0x60e4,0xb966,0x9125,0x48c3,0xa145,0x60e3,0xb966,0x1082,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x9125,0x9945,0x9125,0x9125,0x2882,0x0061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x0061,0xd1a7,0xf9e8,0xf1e8,0xf228,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2ce1,0x04c0,0x14e0,0x14e1,0x14e0,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399d,0x0002, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0xa125,0xa125,0x3862,0x9925,0x9105,0x9105,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xa945,0xb146,0xb966,0x1020,0x0000,0x2841,0x80e4,0x9925,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0xa125,0xa125,0x2041,0x9125,0x2841,0x9925,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0x8904,0x8104,0xa945,0x9925,0x0000,0x9925,0xd987,0x78e4,0x3061,0x80e4,0x9105,0xa945,0x0000,0x0000,0xc986,0x80e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x70e4,0xa945,0xb966,0x3061,0x1000,0xd187,0xb146,0x58a3,0x9925,0x80e4,0xb146,0xb966,0x4062,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x8904,0x68c3,0x9105,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9105,0x0000,0xc166,0x8104,0x2021,0x9925,0x2841,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x50a2,0xb146,0x9925,0x0000,0x9925,0x58a3,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x68c3,0xa125,0x80e4,0x9925,0x9925,0x8104,0x4082,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x68c3,0x9925,0x8904,0xa125,0x9105,0x70c3,0x9105,0x9925,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa125,0x68c3,0x9105,0x3861,0x9105,0x3862,0x9105,0x3862,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb146,0x58a3,0x9104,0xa945,0x8104,0x9925,0x58a3,0x78e4,0x8904,0xb966,0x9105,0x3862,0x0000,0x0000,0x9105,0x4082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9104,0x0800,0xb146,0xa945,0x9105,0x9104,0x80e4,0x60a3,0x78e4,0x9104,0xa125,0xb146,0xa945,0x9925,0x68c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa945,0x9925,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc166,0x9925,0x80e4,0x4082,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x9925,0xa125,0x78e4,0x9105,0xa945,0x68c3,0x4082,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x9105,0x9925,0x9105,0x9105,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x2041,0x50a2,0x5082,0x0000,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x1000,0x0000,0x5082,0x2041,0x2841,0x60a3,0x2041,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x1821,0x0800,0x1821,0x0800,0x2041,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x2041,0x50a2,0x4882,0x2841,0x0000,0x2021,0x3862,0x4082,0x2041,0x1820,0x0000,0x0000,0x2041,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x2021,0x1020,0x1820,0x4082,0x58a3,0x3861,0x1820,0x0000,0x2041,0x2021,0x58a3,0x1821,0x4082,0x58a3,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x4882,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x4882,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x4082,0x3061,0x1820,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0x50a2,0x0000,0x2841,0x5082,0x0000,0x1000,0x1821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3041,0x9105,0x9125,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x419e,0x1067,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x1020,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x1820,0x1820,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x3136,0x0000,0x0023, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0040,0x0000,0x0040,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0040,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0040,0x0000,0x0000,0x0060,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x41be,0x0824,0x0000,0x0001, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x01a0,0x0000,0x0160,0x01c0,0x0100,0x0000,0x00a0,0x0000,0x0160,0x00c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x09c0,0x00a0,0x0040,0x01c0,0x0180,0x0000,0x0180,0x0180,0x0120,0x0160,0x0180,0x0000,0x0180,0x00a0,0x0040,0x09e0,0x00a0,0x0040,0x01c0,0x0180,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0160,0x00c0,0x0000,0x0000,0x0080,0x0000,0x0180,0x0160,0x0100,0x0000,0x00a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x01a0,0x0000,0x01a0,0x0100,0x0000,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0000,0x0160,0x01a0,0x0000,0x00a0,0x09e0,0x0100,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x01a0,0x0000,0x0180,0x00a0,0x0040,0x09c0,0x00a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x0040,0x0080,0x0000,0x0080,0x0000,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0040,0x0000,0x00a0,0x01a0,0x0180,0x00a0,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0080,0x0060,0x0000,0x00a0,0x09e0,0x0100,0x0140,0x01a0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0000,0x0001, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ac0,0x0ae0,0x0b80,0x0b00,0x0a00,0x0a00,0x0ae0,0x0180,0x13c0,0x0ae0,0x00e0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0b40,0x0ac0,0x0b40,0x0b40,0x0aa0,0x0a80,0x0b00,0x0aa0,0x0a00,0x1400,0x0b00,0x0a40,0x0b40,0x0ac0,0x0b20,0x0b20,0x0ac0,0x0b40,0x0b40,0x0ae0,0x00a0,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0b00,0x0080,0x0a20,0x0b00,0x00e0,0x0b20,0x1400,0x01c0,0x0a00,0x0b00,0x00c0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a60,0x0b20,0x0aa0,0x0a60,0x0b20,0x0a40,0x0b60,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0ae0,0x01a0,0x0ba0,0x0ae0,0x0aa0,0x0ae0,0x0b00,0x0a00,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a60,0x0b20,0x0aa0,0x0a60,0x0b40,0x0ac0,0x0b20,0x0b20,0x0b00,0x00e0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0ae0,0x0100,0x0ae0,0x09c0,0x0ae0,0x01c0,0x0ae0,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x01a0,0x0000,0x0b00,0x0b60,0x0a80,0x0b60,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0ae0,0x0100,0x0b40,0x0ae0,0x0ae0,0x0a80,0x0b80,0x0ae0,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2913,0x0000,0x0023,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0ae0,0x0aa0,0x13c0,0x0100,0x00c0,0x0b60,0x0a00,0x0ba0,0x0a60,0x0100,0x0b40,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0b80,0x0a80,0x0b60,0x0b00,0x0000,0x0a40,0x0b00,0x09e0,0x0000,0x0b00,0x0060,0x0b20,0x0000,0x0aa0,0x13c0,0x0b60,0x0a80,0x0b60,0x0b00,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0aa0,0x0080,0x13a0,0x0b00,0x0a60,0x0ae0,0x0080,0x0ae0,0x0040,0x0b60,0x0a40,0x0b20,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a40,0x0b00,0x0140,0x0b00,0x0a60,0x0ae0,0x0b20,0x0b60,0x0ba0,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x0b40,0x0a20,0x0b80,0x0b60,0x0ac0,0x0ac0,0x0ac0,0x0aa0,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0a40,0x0b00,0x0140,0x0b20,0x00e0,0x0aa0,0x13c0,0x0b40,0x0ae0,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b00,0x0100,0x0b80,0x0b00,0x0a20,0x0ba0,0x0ac0,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0180,0x0000,0x0b20,0x0b20,0x0000,0x0ae0,0x0b80,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0ae0,0x00a0,0x0b60,0x0ac0,0x0a80,0x0180,0x13c0,0x0b00,0x0a40,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x419e,0x1068,0x0000,0x0001,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x13a0,0x0b20,0x09e0,0x13c0,0x09c0,0x09e0,0x13e0,0x0b40,0x13c0,0x0b00,0x0a60,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b00,0x1380,0x0a20,0x0b20,0x0b00,0x0160,0x00e0,0x0a20,0x0b80,0x00c0,0x0b40,0x0140,0x0ae0,0x0a20,0x0ae0,0x0b80,0x0b80,0x0a20,0x0b20,0x0b00,0x0180,0x0040,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0b60,0x0a20,0x0ae0,0x13c0,0x0b60,0x0b40,0x0140,0x0b40,0x00e0,0x13e0,0x0b60,0x0b60,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0a40,0x0b40,0x0b60,0x0a60,0x0b80,0x13a0,0x0180,0x13e0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0160,0x13e0,0x0b40,0x13c0,0x0b60,0x0ac0,0x0ac0,0x0120,0x0b00,0x0b00,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0a40,0x0b40,0x0b40,0x0b20,0x0b20,0x0b40,0x0b80,0x0a80,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0ac0,0x0b80,0x0a20,0x13c0,0x0b40,0x13c0,0x0b20,0x0160,0x0120,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a60,0x0080,0x0b40,0x0b00,0x00e0,0x0b40,0x09a0,0x13c0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b20,0x0a00,0x0b00,0x0120,0x0ae0,0x0b60,0x0b60,0x0b40,0x0100,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf008,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x01c0,0x0060,0x0240,0x0ac0,0x0b20,0x0a60,0x0180,0x0000,0x0240,0x0b00,0x0260,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0220,0x0000,0x01e0,0x0a80,0x0b20,0x0ac0,0x0220,0x0b20,0x0220,0x0000,0x0220,0x00e0,0x0080,0x0b20,0x0200,0x01e0,0x0020,0x01e0,0x0280,0x1321,0x0ae0,0x00a0,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b20,0x0240,0x0060,0x01e0,0x0000,0x0200,0x00c0,0x0200,0x00c0,0x01c0,0x0000,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x0b40,0x0200,0x0080,0x0b00,0x0ae0,0x0240,0x0040,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0120,0x01c0,0x0000,0x0240,0x0ae0,0x0ae0,0x0140,0x0ae0,0x0ae0,0x00e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x0b40,0x0200,0x00c0,0x0ac0,0x0200,0x0240,0x0000,0x0220,0x0100,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0120,0x0200,0x00c0,0x01c0,0x0000,0x0240,0x0ae0,0x0b40,0x0200,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0240,0x0b20,0x0ac0,0x0240,0x0040,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0240,0x0b20,0x0100,0x0ae0,0x0ac0,0x0180,0x01c0,0x00a0,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf828,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x0821,0x1002,0x1803,0x1003,0x0801,0x1001,0x1881,0x1801,0x1001,0x1801,0x1881,0x1061,0x1861,0x1061,0x1061,0x1861,0x1061,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0841,0x1002,0x1803,0x1803,0x1803,0x0801,0x0801,0x0801,0x1081,0x1001,0x1021,0x1041,0x1801,0x1001,0x1001,0x1841,0x1801,0x1002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x18e3,0x1883,0x18e3,0x0801,0x0841,0x1001,0x1821,0x1001,0x1881,0x1801,0x1081,0x1861,0x1861,0x1061,0x1861,0x1861,0x0800,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x1002,0x18c3,0x1803,0x1803,0x0801,0x0861,0x0801,0x0801,0x1861,0x1861,0x1061,0x1061,0x1861,0x1061,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0801,0x08a1,0x0801,0x1003,0x1803,0x1883,0x0801,0x1801,0x1801,0x1061,0x1061,0x0861,0x1061,0x1861,0x1861,0x1061,0x1061,0x1061,0x1000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x18c3,0x0801,0x1803,0x1803,0x0841,0x0801,0x0821,0x0861,0x1061,0x1861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0801,0x0801,0x0821,0x0801,0x18e3,0x1803,0x0801,0x0801,0x0801,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x1843,0x0801,0x1003,0x1803,0x0841,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0801,0x0801,0x0801,0x1803,0x0801,0x0801,0x0801,0x0821,0x0801,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x1861,0x0020,0x70e4,0xf1c8,0xf1c8,0xf1e8,0xf1a8,0xf268,0xf768,0xf7c8,0xf7c8,0xf7c8,0xf7c8,0xf7c8,0x7da4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x39e7,0x10e2,0x2985,0x4228,0x3a08,0x2208,0x2a08,0x3208,0x1a08,0x2208,0x3a08,0x2208,0x3208,0x3208,0x1a08,0x29e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x1903,0x1903,0x2124,0x4208,0x4208,0x4208,0x2a08,0x3a08,0x3208,0x3a08,0x2228,0x3208,0x3208,0x1a08,0x2208,0x3a07,0x52aa,0x1903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x3a07,0x18e3,0x18c3,0x2945,0x4228,0x4207,0x3208,0x1a08,0x3208,0x2208,0x1a08,0x3208,0x2208,0x2208,0x3208,0x2208,0x21e7,0x4249,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4248,0x2965,0x10a2,0x2124,0x2124,0x3a07,0x4208,0x4208,0x3a08,0x2208,0x1a08,0x3208,0x3208,0x1a08,0x3a08,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x4228,0x2965,0x10c2,0x2124,0x4228,0x2208,0x1a08,0x2a08,0x3208,0x4208,0x2a08,0x2208,0x2208,0x2a08,0x3208,0x39e7,0x3a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x18e3,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x3a08,0x2a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4208,0x4228,0x2965,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x3a07,0x18e3,0x4228,0x2985,0x2144,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4228,0x39e7,0x1903,0x3a07,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4208,0x4208,0x4208,0x3a08,0x5208,0x5a08,0x5208,0x5208,0x5208,0x5228,0x52a8,0x52a8,0x52a8,0x52a8,0x52a8,0x52a8,0x29a7,0x53ca,0x2503,0x0cc0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x41bf,0x1068,0x0000,0x0001,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xb5b6,0x8c51,0x2986,0x5228,0xa208,0x9a08,0x8208,0xb1e8,0xa208,0x5208,0xa9e8,0x7a08,0x7a08,0xb208,0x79e7,0x4aaa,0x6b2c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xad55,0xb5b6,0x9cd3,0x39c7,0x4a28,0x3208,0x8208,0x5208,0x7208,0x6208,0xa9e8,0x7a08,0x7208,0xb1e8,0xa208,0x41c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39e7,0x4a69,0xad75,0xb5b6,0x8c71,0x2104,0x3a49,0x7a08,0xa9e8,0x8208,0x9a08,0xb1e8,0x8208,0x9a08,0xa9e8,0x8208,0xa208,0x99c7,0x62aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x31a6,0x8430,0xb5b6,0xad75,0xa534,0x4a49,0x4208,0x4208,0x4a08,0xa208,0xb1e8,0x7208,0x7a08,0xa9e8,0x5208,0x3a08,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4a49,0x2104,0x8c71,0xbdd7,0x94b2,0x41c7,0xa208,0xb1e8,0x8a08,0x6a08,0x4208,0x8208,0x9a08,0xa9e8,0x8a08,0x7a08,0x41e7,0x8aaa,0x5b2c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x4208,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x3208,0x5a08,0x8a08,0x2a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x2965,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x3208,0x3208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x31a6,0x8430,0x94b2,0x2945,0x4228,0x4208,0x4208,0x3a08,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a69,0xad55,0x4a69,0x39e7,0x4228,0x4208,0x4208,0x4208,0x3208,0x2208,0x2a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x39e8,0x39e8,0x4208,0x39a7,0x738e,0x3506,0x04c0,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0001,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x18c3,0xbdf7,0xd6ba,0xe71c,0x4b0c,0x99a7,0xa208,0x6a08,0x3a08,0xb9e8,0x7208,0xa1e8,0x8208,0x99e8,0xc1e8,0x9208,0xb1c7,0x6a8a,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0841,0xc638,0xce59,0x4228,0xb596,0x4a49,0x4208,0x1a08,0xb1e8,0xb1e8,0xa1e8,0xb9e8,0x7208,0xa9e8,0x6208,0xb9e8,0x8208,0x31c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf7be,0x7bcf,0xdedb,0x8c92,0x5145,0xba08,0x8208,0x4a08,0x8208,0xb9e8,0x6208,0xc1e8,0x6a08,0x7a08,0xb9e8,0x91c7,0xaa8a,0x4b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xc638,0xce79,0x31a6,0x6b6d,0x4228,0x4208,0x4208,0x3a08,0x8208,0xb9e8,0x6208,0xa9e8,0x7a08,0xa1e8,0x2208,0x4a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2945,0x9492,0xdedb,0x6b6d,0xad55,0x4249,0x81e8,0xb1e8,0x6a08,0xb1e8,0x7208,0xc1e8,0xb9e8,0x7208,0x7208,0xd1e8,0x99c7,0xaa8a,0x530c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffdf,0x0000,0xbdf7,0xce59,0x0000,0x4a49,0x4208,0x4208,0xb1e8,0xd9e8,0x7208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x0000,0xce59,0xce59,0x0000,0x4a49,0x4208,0x4208,0x6208,0x6a08,0x5a08,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xf7be,0x528a,0xe71c,0x9cd3,0x2124,0x4228,0x4208,0x4208,0x4208,0xb1e8,0x8208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x5acb,0xf7be,0x5acb,0x39c7,0x4228,0x4208,0x4208,0x3208,0x7a08,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x4a49,0x4228,0x4228,0x4208,0x4228,0x4a28,0x4a49,0x4228,0x4a48,0x4a49,0x4228,0x4a49,0x4a49,0x4228,0x39c7,0x6bad,0x3505,0x04c0,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41be,0x41bf,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xef7d,0x10a2,0xbdd7,0xbdf7,0x1820,0x9229,0xa1e8,0x3208,0xa1e8,0x4a08,0xa9e8,0x4208,0x9208,0xc1e8,0xb1e8,0x79e7,0x4aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x2965,0x9492,0xdedb,0x8c51,0x0000,0x39e7,0x4a28,0x2a08,0x99e8,0x9a08,0xc1e8,0xb9e8,0x2a08,0xa1e8,0x5a08,0x99e8,0x6208,0x29c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x2104,0xbdd7,0xce38,0x0000,0x7249,0xa1e8,0x7a08,0x5a08,0xa1e8,0x4208,0xc9e8,0x5208,0x4a08,0xc9e8,0x91c7,0x62aa,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xbdd7,0xdefb,0x9492,0x4208,0x39e7,0x4208,0x4208,0x3208,0x6208,0x99e8,0x5a08,0xa1e8,0x3a08,0xb1e8,0x2208,0x4a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc638,0xbdd7,0x10a2,0x4a28,0x3208,0x6208,0x99e8,0x4a08,0xc9e8,0xb1e8,0xb9e8,0xb9e8,0x5208,0x5208,0xa9e8,0xb1c7,0xba8a,0x4b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef7d,0xa534,0xdefb,0xbdd7,0x1082,0x4a49,0x4208,0x3a08,0x7208,0xa1e8,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x0861,0xbdf7,0xbdf7,0x0020,0x4a49,0x4208,0x4a08,0xa1e8,0xa9e8,0x7a08,0x3208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0xe73c,0x8c71,0x10a2,0x4a49,0x4208,0x4208,0x3a08,0x7208,0xd9e8,0xb1e8,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5acb,0xef5d,0x5acb,0x39e7,0x4228,0x4208,0x4208,0x3a08,0x6a08,0x8a08,0x8208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x2124,0x2104,0x3186,0x3186,0x4208,0x3186,0x2945,0x18e3,0x3186,0x2124,0x2104,0x3186,0x2124,0x2124,0x4208,0x39c7,0x6bad,0x3505,0x04c2,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf79e,0xa534,0xdefb,0xb5d7,0x6062,0xa229,0xa9e8,0x3a08,0xa1e8,0x5a08,0x7a08,0xb1e8,0x9a08,0xa9e8,0x5208,0x19e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x1082,0x4a69,0xbdd7,0xce79,0x4228,0x4208,0x2208,0xa1e8,0x5208,0x99e8,0x9a08,0xa9e8,0xa9e8,0x3208,0xa1e8,0x6a08,0x29c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef7d,0x2104,0xbdd7,0xc638,0x1800,0x9a29,0xa9e8,0x8208,0x5a08,0xa1e8,0x4a08,0xc1e8,0x99e8,0x9a08,0x9a08,0x01e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x10a2,0xbdf7,0xce59,0x528a,0x4a69,0x4208,0x4208,0x4208,0x3208,0x6a08,0xa1e8,0x3208,0xa9e8,0xb1e8,0x8208,0x3208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0000,0xc638,0xb5b6,0x632c,0xf79e,0x4a8a,0x61c7,0x9a08,0x5a08,0x9a08,0x3a08,0xb1e8,0xb9e8,0xa1e8,0x9a08,0x9208,0x59e7,0xb28a,0x4b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef7d,0x632c,0xc638,0xbdf7,0x0841,0x4a49,0x4208,0x3208,0x6a08,0xa9e8,0x1a08,0x4a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x52aa,0x0000,0xbdf7,0xc618,0x0000,0x4a49,0x4208,0x4208,0x2a08,0x2208,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0xe73c,0x8c71,0x10a2,0x4a49,0x4208,0x4208,0x4208,0x2208,0x7208,0x4208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5acb,0xef5d,0x4a69,0x2965,0x4208,0x4208,0x4208,0x3208,0x7a08,0xa9e8,0x99e8,0x4a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xa534,0xad55,0x8c71,0x7bef,0x4a49,0x8430,0xa514,0xb5b6,0x8430,0x9cf3,0xad75,0x8430,0xa514,0xa534,0x52aa,0x3186,0x6bad,0x3505,0x04c1,0x1500,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xffdf,0x632c,0xd679,0xc638,0x3000,0x7a49,0x4a08,0x3a28,0x5228,0x4a49,0x3a28,0x6a28,0x4a08,0x4228,0x4a08,0x41e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c51,0x94b2,0x5aeb,0xf7be,0x5acb,0x4208,0x4228,0x4a08,0x4a28,0x4a08,0x3a28,0x6a08,0x5228,0x3a48,0x5249,0x4a28,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xf7be,0x7bcf,0xdedb,0x9492,0x2945,0x6a28,0x6a29,0x3228,0x4208,0x5249,0x4228,0x6228,0x7208,0x5a28,0x4a08,0x41e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x0000,0xce59,0xc638,0x0000,0x4a49,0x4208,0x4208,0x4a49,0x4a49,0x4228,0x4a28,0x3a49,0x5208,0x6a29,0x3a49,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x2945,0x9492,0xdedb,0x738e,0xffdf,0x5b0c,0x41e7,0x4a28,0x4a49,0x4a28,0x4a28,0x4a49,0x6228,0x7208,0x5a29,0x4a28,0x39e7,0x5aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xffdf,0x2945,0xc618,0xce59,0x0000,0x4a49,0x4a49,0x4228,0x5a28,0x7a08,0x3a28,0x4a28,0x4a49,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xef5d,0x632c,0xce79,0xbdf7,0x0861,0x4a49,0x4208,0x4a49,0x4a28,0x4a08,0x4a28,0x4208,0x4228,0x4a49,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xf7be,0x528a,0xe71c,0x9cd3,0x2124,0x4a49,0x4a49,0x4208,0x4a49,0x3a28,0x4228,0x4a49,0x4228,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x5acb,0xf7be,0x7bcf,0x632c,0x4228,0x4228,0x4208,0x4208,0x3a49,0x2a49,0x2a28,0x4228,0x4a49,0x4228,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39c7,0x632c,0xce59,0x738e,0x73ae,0xd6ba,0x9cf3,0xa534,0x7bcf,0xbdf7,0x6b4d,0xce59,0x6b6d,0x7bcf,0xbdf7,0x8c71,0xad55,0x1062,0x73ae,0x3506,0x04c0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4a69,0xad55,0x2965,0x8c51,0x8c71,0x1944,0x19a6,0x3a08,0x3186,0x2124,0x2104,0x3166,0x21a6,0x3a08,0x3186,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x630c,0xb596,0xb596,0x8c51,0x2104,0x2124,0x39c7,0x39e7,0x2965,0x4208,0x31a6,0x3208,0x2986,0x2924,0x1904,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4a69,0xad75,0xb5b6,0x8c71,0x18e3,0x4249,0x3208,0x0103,0x3186,0x4228,0x18e3,0x3165,0x2986,0x29e7,0x2986,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x3186,0x8c71,0x8c71,0x2965,0x4228,0x4208,0x4208,0x2124,0x2104,0x31a6,0x31a6,0x2104,0x39e7,0x0124,0x2924,0x39e7,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4a49,0x18e3,0x8c71,0xb5b6,0xad55,0x3186,0x2965,0x3a08,0x2104,0x31a6,0x31a6,0x10c3,0x1924,0x29e7,0x1104,0x3186,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xa514,0x2945,0x8c51,0x7bef,0x10a2,0x4208,0x2124,0x2945,0x2986,0x3208,0x39a7,0x2965,0x2104,0x3186,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x8c71,0xb596,0xad55,0x4a49,0x39c7,0x4228,0x39e7,0x2104,0x3186,0x4228,0x2965,0x39e7,0x31a6,0x18e3,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xad75,0x39c7,0x7bef,0x94b2,0x2965,0x39c7,0x2104,0x39e7,0x2124,0x2945,0x31a6,0x18e3,0x2124,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a69,0xad75,0xad75,0xa534,0x4228,0x3186,0x4228,0x3a08,0x2924,0x2904,0x3986,0x2945,0x18c3,0x31a6,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39c7,0x630c,0xce79,0x528a,0x52aa,0xad55,0xb5b6,0xad55,0x528a,0xa534,0x4228,0xce79,0x528a,0x4228,0xd6ba,0xc638,0x4a49,0x39a7,0x6bad,0x3506,0x04e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x18e3,0x4228,0x3186,0x2124,0x5acb,0x8430,0x4228,0x8c51,0x9cf3,0xad75,0x8c71,0x738e,0x528a,0x8410,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39c7,0x18c3,0x2124,0x2104,0x8410,0xb596,0x73ae,0x528a,0x8c51,0x4a28,0x7bef,0x4a69,0x8430,0x9cf3,0xad75,0x8410,0x2945,0x738e,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x18e3,0x18e3,0x2965,0x4a49,0x39e7,0x4a49,0xb575,0x8c51,0x3186,0xad75,0x9492,0x7bcf,0x5acb,0x8430,0x3186,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x2965,0x4228,0x4208,0x39e7,0x4a69,0xa534,0xad75,0x7bcf,0x7bef,0xad75,0x5acb,0xa534,0xa534,0x52aa,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x2965,0x1082,0x31a6,0xad55,0x8430,0x4a49,0xad75,0x7bef,0x73ae,0xb5b6,0xa534,0x5aaa,0xad75,0x8430,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0x9cf3,0x8430,0x39c7,0xa534,0x8430,0x4a49,0xa534,0x9cf3,0x8430,0x5269,0x738e,0x9492,0xad75,0x8410,0x39e7,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x2965,0x2124,0x0000,0x7bef,0x5acb,0x31a6,0x528a,0xad75,0x8430,0x18c3,0x9492,0x528a,0x7bef,0xb596,0x528a,0x3186,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x2104,0x39c7,0x73ae,0x4a49,0x2965,0x8410,0xad75,0x5acb,0xa514,0x9cf3,0x8430,0xb5b6,0xa534,0x4a49,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x18e3,0x2104,0x18e3,0x52aa,0x8410,0x3186,0x528a,0xa534,0xad75,0x8430,0x9cf3,0xb5b6,0x7bef,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x630c,0xc638,0xa514,0x9cf3,0x94b2,0x630c,0xa534,0x5acb,0xa534,0x4a69,0xc638,0xa514,0x9cf3,0x94b2,0x7bcf,0x8430,0x2104,0x73ad,0x34e7,0x0500,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x419e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x4208,0x4228,0x39e7,0x630c,0xd6ba,0x94b2,0xbdf7,0xc618,0x738e,0x8410,0xa534,0x528a,0xb596,0x2104,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x39e7,0x632c,0xbdf7,0x8410,0x5aeb,0x9cd3,0x8430,0xa534,0xa514,0x4228,0xce59,0xbdf7,0x7bcf,0x5aeb,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a49,0x4a49,0x4228,0x4208,0x31a6,0x6b6d,0xb5b6,0x8c51,0x8410,0xb596,0x9492,0xce59,0xc618,0xb5b6,0x18e3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x4228,0x4208,0x4228,0x31a6,0x632c,0xce59,0x6b4d,0x73ae,0xad75,0x7bcf,0xbdf7,0xb5b6,0x8c71,0xa534,0x2945,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x3186,0xa534,0x9cd3,0x8c71,0xad75,0x7bef,0xad75,0x632c,0xbdf7,0x7bcf,0xa514,0x7bef,0xad75,0x630c,0x4a69,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x2945,0xa534,0x9cd3,0x8c71,0xb596,0x8410,0xa514,0xbdd7,0xa514,0x5acb,0xad75,0x632c,0x9cf3,0xce59,0x9cd3,0xad75,0x5aeb,0x3186,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x2945,0xb596,0x73ae,0x10a2,0xad55,0x8410,0xa534,0x9cf3,0x8c51,0x8c71,0xbdd7,0x8c71,0xa514,0x4a69,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a69,0x2104,0xb596,0x73ae,0x2104,0x7bef,0xb5b6,0x9cd3,0xa534,0x6b4d,0x39e7,0xbdf7,0x8430,0x39c7,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x39c7,0x6b6d,0xb596,0x10a2,0x6b6d,0xce59,0x73ae,0x528a,0x8430,0xbdf7,0x4228,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x630c,0x738e,0x5acb,0x4a49,0x4208,0x4a49,0x4228,0x4a49,0x39e7,0x630c,0x738e,0x5acb,0x4a49,0x39e7,0x52aa,0x31a6,0x6bad,0x3505,0x04c0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4228,0x31a6,0x6b4d,0xad55,0xb596,0xc618,0xc618,0x52aa,0x52aa,0xb5b6,0x8c71,0xad55,0x2945,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4228,0x39c7,0x738e,0xa514,0x9cf3,0xc638,0xb596,0xbdf7,0x94b2,0x94b2,0x9cf3,0xc638,0x5aeb,0x2104,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x31a6,0x6b6d,0x9cd3,0x5acb,0xa534,0x8c51,0x8410,0xad55,0x8c71,0xa534,0x2945,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4228,0x39c7,0x630c,0xd69a,0x632c,0x632c,0xa534,0x2965,0xc618,0xce59,0xce59,0x4a49,0x4208,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2124,0xad75,0x8c51,0xb596,0xc618,0x2965,0xa534,0x5acb,0xa514,0x528a,0xad75,0x39c7,0xa514,0x6b6d,0x4a49,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x2945,0xad55,0x8c51,0xb596,0xc618,0x2965,0xa514,0x73ae,0x8c71,0x9cd3,0xbdd7,0x4228,0x94b2,0xc638,0xa534,0xad55,0x5acb,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4a49,0x2124,0xad55,0x5aeb,0x0000,0xb5b6,0x4208,0x9492,0xce79,0xad75,0xc618,0xbdf7,0x3186,0xad75,0x6b4d,0x4a49,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4a49,0x2124,0xad55,0x5acb,0x0000,0x630c,0x9cf3,0x2945,0x94b2,0xad55,0x3186,0xa534,0x632c,0x31a6,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4208,0x4228,0x31a6,0x6b6d,0xa534,0x0000,0x5aeb,0xce79,0x5aeb,0x0000,0x6b4d,0xa534,0x18c3,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x31a6,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39c7,0x31a6,0x39e7,0x4208,0x4228,0x4208,0x39c7,0x6b8d,0x3505,0x04c3,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x3136,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x2965,0x6b4d,0x9cd3,0x528a,0xbdd7,0xb5b6,0xa534,0x8430,0xa514,0xbdd7,0x7bef,0x2965,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39c7,0x4228,0x9cd3,0xa514,0x9cf3,0xa514,0x8410,0x9cd3,0x73ae,0xb5b6,0x5acb,0xc618,0xa514,0x8410,0x2104,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3186,0x5acb,0xce59,0xa514,0x4a49,0xce59,0xa534,0x9492,0x4a69,0xa534,0x18e3,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x2965,0x632c,0x9cf3,0x0000,0x528a,0xa534,0xad55,0x9cf3,0x9492,0x73ae,0x8410,0x2965,0x39c7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x4208,0x2945,0x8430,0xa534,0xbdf7,0x94b2,0xad75,0xad55,0x3186,0xa534,0x5aeb,0x7bcf,0xb596,0xa534,0x4228,0x4a69,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x2965,0x8410,0xa534,0xbdf7,0x94b2,0xad75,0xa514,0x8410,0xa514,0xa514,0x8c51,0xb596,0x9cd3,0xad75,0xad75,0xa514,0x528a,0x2965,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x4208,0x18c3,0xa534,0xbdf7,0x94b2,0x8430,0xb596,0x9cd3,0xad55,0x7bef,0x9cf3,0xbdd7,0xbdd7,0x7bef,0x2945,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x4208,0x18c3,0xa534,0xbdf7,0x94b2,0x9492,0xce59,0x73ae,0xa514,0xad55,0x39c7,0xa514,0x632c,0x3186,0x4208,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3186,0x5aeb,0xc638,0xa534,0x9492,0xbdd7,0xa534,0x7bcf,0x5aeb,0xa534,0x18e3,0x4208,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x41e7,0x41e7,0x41e7,0x41e7,0x41e7,0x4207,0x4227,0x4227,0x4227,0x4227,0x4228,0x4227,0x3a07,0x3a07,0x4228,0x31a6,0x6b8d,0x3520,0x1c2e,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aeb,0x52aa,0x5acb,0x6b6d,0x7bef,0x630c,0x528a,0x5aeb,0x4a69,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x7bcf,0x73ae,0x4a69,0x52aa,0x4a49,0x5aeb,0x528a,0x52aa,0x528a,0x738e,0x7bef,0x6b4d,0x4a49,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x738e,0x630c,0x4a69,0x738e,0x632c,0x5acb,0x5acb,0x5aeb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5aeb,0x5acb,0x4a69,0x5aeb,0x73ae,0x4a69,0x5aeb,0x528a,0x632c,0x528a,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x4a49,0x73ae,0x738e,0x4a49,0x7bcf,0x5aeb,0x4a69,0x5aeb,0x5acb,0x4a49,0x7bcf,0x5aeb,0x4a49,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x4a49,0x7bae,0x738e,0x4a49,0x7bcf,0x5aeb,0x630c,0x8410,0x62eb,0x4208,0x7bcf,0x5aeb,0x5aaa,0x8410,0x62eb,0x4a69,0x528a,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0800,0x4a49,0x52aa,0x52aa,0x52aa,0x528a,0x5aeb,0x7bcf,0x73ae,0x4a69,0x73ae,0x5aeb,0x52aa,0x5269,0x52aa,0x630c,0x73ae,0x4a69,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x2965,0x5aaa,0x5aaa,0x52aa,0x5a8a,0x62eb,0x7bcf,0x7bae,0x6b4d,0x6b6d,0x6b4d,0x8410,0x62eb,0x5269,0x62eb,0x5aaa,0x52aa,0x5aaa,0x4a69,0x7bcf,0x2965,0x0000,0x1041,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x52aa,0x5aaa,0x736d,0x7bef,0x6b2c,0x736d,0x7bef,0x632c,0x528a,0x5aeb,0x528a,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x328a,0x328a,0x328a,0x328a,0x32aa,0x322a,0x316a,0x31aa,0x318a,0x318a,0x318a,0x41ea,0x524a,0x524a,0x524a,0x49e9,0x7baf,0x3520,0x2b56,0x411f,0x41df,0x41bf,0x41bf,0x41be,0x0824,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4208,0x6b2c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x52aa,0x5aeb,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x5acb,0x5acb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5acb,0x52aa,0x5aeb,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5acb,0x5aeb,0x630c,0x5acb,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18a2,0x5aeb,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x5acb,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x630c,0x630c,0x630c,0x632c,0x5acb,0x5acb,0x632c,0x5acb,0x5aeb,0x632c,0x630c,0x630c,0x632c,0x5acb,0x5aeb,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x08a2,0x4aeb,0x5b2c,0x4acb,0x42cb,0x5b0c,0x3aaa,0x52eb,0x5aeb,0x3aaa,0x52eb,0x5b2c,0x52cb,0x630c,0x530c,0x3aaa,0x4aeb,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x632c,0x5b0c,0x5b0c,0x530c,0x5b0c,0x4aca,0x5acb,0x632c,0x5acb,0x630c,0x5b0c,0x530c,0x5b0c,0x5aeb,0x5acb,0x632c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a2,0x4aeb,0x530c,0x5b0c,0x4b0c,0x52eb,0x4aaa,0x3acb,0x52eb,0x52cb,0x42cb,0x42aa,0x52eb,0x4b0c,0x4aeb,0x530c,0x5b0c,0x5b0c,0x5b0c,0x630c,0x18a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3a08,0x5b2c,0x630c,0x4b0c,0x4b0c,0x530c,0x530c,0x42cb,0x4aaa,0x4aeb,0x42cb,0x52aa,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0x6b0c,0xc36d,0xcb6d,0xcb6d,0xcb8d,0xcaed,0xcced,0xcead,0xce6d,0xce6d,0xce6d,0xd68e,0xa5ad,0x548c,0x64ac,0x64ac,0x64ac,0x64cb,0x24c6,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0020,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68a3,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3062,0x6821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3062,0x6842,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2820,0x9883,0x6800,0x6000,0x9883,0x6800,0xa0a3,0x6000,0x0000,0x9883,0x6800,0x5800,0x3000,0x0000,0x6800,0x9883,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3882,0x6001,0x1800,0x5800,0x2000,0x7000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x2800,0x7800,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2821,0x9042,0x9022,0x2800,0x9862,0x6800,0x6000,0xa0a3,0x5800,0x6000,0xa083,0x8842,0x7000,0x9863,0x8802,0x7000,0x1800,0x5800,0x2800,0x0000,0x0000,0x70e4,0x58a3,0x0000,0x0000,0x0000,0x0800,0x0000,0x3800,0x7000,0x0000,0x9042,0xa083,0x6800,0x8802,0xa0a3,0x6800,0x8842,0x9062,0x2000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3000,0xf967,0xf987,0xf987,0xf987,0xf947,0xfec7,0xffe7,0xffe7,0xffe7,0xffe7,0xffe7,0xaea3,0x0480,0x0ce0,0x04e0,0x04e0,0x04e0,0x1ca8,0x41fe,0x419f,0x41bf,0x41bf,0x41bf,0x2913,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x9925,0x8925,0x60e3,0x0061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x50c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0xa145,0x50c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x9945,0x58c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x9925,0x58c3,0x0041,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x7104,0x60e3,0x7904,0xa146,0xa145,0x8925,0x9945,0xb166,0x7104,0x58c3,0xa966,0x58c3,0x0000,0xa966,0x9945,0x48c3,0x1882,0x0861,0x1061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9925,0x2082,0xb166,0x7904,0x7904,0x9945,0x9945,0x0041,0x2082,0x0861,0x0061,0xa966,0xd9c7,0x58c3,0x0061,0x1082,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x9945,0x38a2,0x9945,0x7904,0x58c3,0xb166,0x8925,0x9945,0xb986,0x9145,0x3082,0xa966,0x9945,0x2882,0xa966,0xa966,0xa145,0x58c3,0x0040,0x58a3,0xd9a7,0xa945,0x0000,0x0000,0x0800,0x0000,0x2841,0x8905,0x7904,0x70e4,0x68e4,0xb966,0x0061,0x7104,0xb166,0x50c3,0xb966,0x7904,0x9945,0x0020,0x1882,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa145,0xf9e8,0xf1e8,0xf1e8,0xf1c8,0xf248,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x4522,0x04c1,0x1ce2,0x1ce2,0x1cc4,0x1500,0x2bd3,0x413f,0x41df,0x41bf,0x41bf,0x419e,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x1820,0x70e4,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xa125,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0xa125,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x80e4,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0x2841,0x0000,0x5082,0x80e4,0x8904,0xd9a7,0x68c3,0x9925,0x3061,0x0000,0xa125,0x3862,0x0000,0xa125,0x9925,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2841,0x9925,0x80e4,0x9105,0xb966,0xa125,0xc166,0x8104,0x0000,0x0000,0x1000,0x0000,0x9925,0xd187,0x58a3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x8104,0x8904,0xa945,0x2841,0x0000,0x9925,0xd987,0x68c3,0x9925,0xa125,0x0000,0xa125,0xa125,0x0000,0x9104,0x8904,0xc986,0x4082,0x0000,0x4882,0xd187,0xa125,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0xa125,0xa125,0x2041,0x9925,0x0000,0x5082,0x9105,0x0800,0xc987,0xb966,0x1820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e1,0x14e0,0x14e0,0x3ada,0x415f,0x41bf,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x9925,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x78e4,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x78e4,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x9925,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0xa945,0x8904,0x8904,0xb966,0x9104,0x58a3,0x80e4,0x78e4,0xa945,0x8904,0xa125,0xb146,0x8104,0xa125,0xa145,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x70c3,0xa945,0x4882,0xa125,0x60a3,0xa945,0xb146,0xa125,0x68c3,0x0000,0x1020,0xa125,0xc166,0x2841,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0x9925,0x9105,0x78e4,0xa945,0x8904,0x9925,0x58a3,0x78e4,0xa125,0xa945,0x8104,0xa125,0xa945,0x8104,0xa125,0x2841,0x9925,0x5082,0x0000,0x58a3,0xc986,0x8104,0x0000,0x0800,0x0800,0x0000,0x4882,0xa125,0x68c3,0x9105,0x3061,0x9925,0x0000,0x50a2,0x9105,0x3862,0x9104,0x60a3,0x70c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x1820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x2041,0x2841,0x4082,0x2841,0x0000,0x2841,0x0000,0x5082,0x2841,0x1000,0x50a2,0x4882,0x2841,0x50a2,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x1000,0x0000,0x1820,0x4062,0x58a3,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3061,0x60a3,0x2041,0x0000,0x50a2,0x2841,0x1000,0x0000,0x2041,0x3061,0x50a2,0x4882,0x2841,0x50a2,0x4882,0x2041,0x0800,0x1000,0x1000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0000,0x1821,0x0800,0x2021,0x0000,0x1000,0x1821,0x0800,0x2041,0x0000,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x1020,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x41bf,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0xc986,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x14c0,0x14e0,0x14e0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41be,0x41bf,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0020,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0040,0x0000,0x0080,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0140,0x01c0,0x0120,0x0040,0x0000,0x0080,0x0160,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0040,0x0000,0x00a0,0x01c0,0x00a0,0x0000,0x09e0,0x0080,0x00a0,0x0160,0x00a0,0x0000,0x0060,0x0120,0x0160,0x0160,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x00a0,0x0000,0x0040,0x00a0,0x0000,0x0060,0x0160,0x00a0,0x0080,0x09e0,0x0120,0x0160,0x0160,0x0120,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x01c0,0x00a0,0x00c0,0x0160,0x00a0,0x0000,0x00a0,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0160,0x0120,0x0000,0x0000,0x00c0,0x0080,0x0000,0x00e0,0x0140,0x01c0,0x0100,0x0060,0x0080,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x01c0,0x0080,0x00a0,0x0160,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x01a0,0x0000,0x0b40,0x0a60,0x0aa0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x0ba0,0x0ae0,0x0ac0,0x0ac0,0x0120,0x0b60,0x0b60,0x0b00,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x01a0,0x0000,0x0b20,0x0b40,0x0aa0,0x0b40,0x0b20,0x0ac0,0x0ac0,0x0ba0,0x0b20,0x0a80,0x0aa0,0x0aa0,0x13e0,0x0b40,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b00,0x0000,0x01a0,0x0b00,0x0000,0x0000,0x13e0,0x0aa0,0x0ae0,0x0b00,0x0a00,0x0b20,0x1400,0x09e0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0b40,0x0ac0,0x0ac0,0x0ba0,0x0b20,0x0a60,0x0ac0,0x01a0,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x13c0,0x0ae0,0x0b80,0x0180,0x0b80,0x0a80,0x0a20,0x0ac0,0x0b80,0x0ae0,0x0ae0,0x0aa0,0x0040,0x0b20,0x0000,0x0000,0x0aa0,0x1400,0x01c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0b40,0x0ac0,0x0aa0,0x13e0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2935,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0180,0x0000,0x0b00,0x0b60,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0140,0x13c0,0x0140,0x0000,0x0a60,0x0b40,0x0180,0x13a0,0x0ae0,0x0a60,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b00,0x0180,0x0000,0x0b20,0x0b40,0x0aa0,0x0b40,0x0b60,0x0ac0,0x01c0,0x0a80,0x0aa0,0x0b80,0x0ba0,0x0000,0x0ac0,0x0140,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x01a0,0x0b00,0x0000,0x01a0,0x0b00,0x0000,0x0000,0x0ac0,0x01a0,0x0ae0,0x0a80,0x0000,0x0120,0x0ae0,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0b20,0x0ae0,0x09c0,0x0a80,0x0aa0,0x0b80,0x0b80,0x0160,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0ac0,0x0a00,0x0b80,0x0b60,0x0b40,0x13e0,0x0a40,0x00a0,0x13e0,0x0100,0x0000,0x0b20,0x0b40,0x0a40,0x0000,0x0000,0x0b40,0x1420,0x0160,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b20,0x0b40,0x0ae0,0x01a0,0x0ac0,0x0000,0x0080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a60,0x00a0,0x0b40,0x09a0,0x13c0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x13c0,0x09c0,0x0180,0x0ae0,0x0a60,0x0b00,0x0b60,0x0120,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a60,0x0080,0x0b40,0x0a80,0x0000,0x0b00,0x0b80,0x0a60,0x09c0,0x0b40,0x0b00,0x09c0,0x13e0,0x00e0,0x0b20,0x09c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0180,0x0b80,0x00e0,0x0a00,0x0b60,0x0160,0x00a0,0x0b80,0x09e0,0x0140,0x0b00,0x0ac0,0x0140,0x0b40,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0ae0,0x0b00,0x0a80,0x0b40,0x0b00,0x09c0,0x13c0,0x0180,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0000,0x0b60,0x0ac0,0x0ac0,0x0a60,0x13e0,0x0b20,0x0a80,0x0a20,0x13a0,0x09e0,0x0080,0x09c0,0x13a0,0x0000,0x0080,0x0000,0x0b40,0x1460,0x09c0,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0080,0x0000,0x0b40,0x0a80,0x0000,0x09e0,0x0b80,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf1e8,0xf188,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0240,0x0040,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00c0,0x0b00,0x0b00,0x0a80,0x01e0,0x0000,0x0aa0,0x01c0,0x0000,0x0060,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x0ac0,0x0220,0x00a0,0x0000,0x0220,0x0000,0x01e0,0x0a80,0x0b00,0x0220,0x0060,0x01e0,0x00c0,0x0200,0x0100,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00a0,0x0b00,0x0b20,0x0240,0x0ae0,0x0b40,0x0220,0x0b00,0x0240,0x0ac0,0x0ae0,0x00a0,0x00e0,0x0220,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0a20,0x0b40,0x01e0,0x0200,0x0b20,0x0220,0x0060,0x01c0,0x0120,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0060,0x0b20,0x0a80,0x01c0,0x0000,0x0a60,0x01a0,0x0100,0x0240,0x0ac0,0x0b20,0x0200,0x0080,0x0200,0x0000,0x0020,0x0000,0x01c0,0x0240,0x0000,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0200,0x00c0,0x0000,0x0220,0x0b20,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0xd187,0xf9e8,0xf9c8,0xfa08,0xf808,0xfd88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x04c0,0x14e0,0x14e0,0x14e0,0x14e0,0x14e0,0x3afa,0x415f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x18c3,0x0841,0x18c3,0x18e3,0x1082,0x0861,0x18e3,0x18e3,0x18e3,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x1002,0x1082,0x1002,0x0821,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x1002,0x0801,0x1082,0x0802,0x0801,0x0881,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x0801,0x1062,0x10a2,0x0801,0x0861,0x0801,0x0801,0x0801,0x0801,0x1861,0x1001,0x0841,0x0801,0x0801,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x1002,0x0801,0x0802,0x0802,0x0801,0x0801,0x0801,0x0801,0x0821,0x0821,0x1001,0x0881,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0801,0x0801,0x1002,0x1002,0x0801,0x0861,0x0801,0x0801,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0801,0x0801,0x0801,0x1082,0x0801,0x0802,0x1042,0x0801,0x0801,0x0801,0x0801,0x0841,0x0801,0x0881,0x0861,0x0861,0x0801,0x0801,0x0040,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x0801,0x0821,0x0881,0x1002,0x0801,0x1062,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x38c3,0xe967,0xe966,0xf1e8,0xe9c7,0xe806,0xf567,0xf7e8,0xf7a8,0xf7c8,0xf7a8,0xffe9,0x9e24,0x0460,0x24c2,0x1cc1,0x1cc2,0x14c0,0x1c87,0x41de,0x41be,0x397f,0x399f,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x4208,0x39c7,0x18e3,0x18e3,0x2104,0x4228,0x2945,0x0841,0x39e7,0x4208,0x18c3,0x2104,0x18e3,0x39e7,0x2965,0x2104,0x18c3,0x31a6,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x3a07,0x31a6,0x3186,0x39c7,0x39c7,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x39e7,0x4208,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x3208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x3a07,0x4228,0x31a6,0x31a6,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x1a08,0x3208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x39e7,0x4208,0x3a07,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x3208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x31c6,0x31a6,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x3a07,0x4208,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a07,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x4a49,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x630c,0x6b4d,0x2965,0x6b2c,0x7b6d,0x4186,0x730c,0x7b8e,0x62ea,0x4a87,0x5ae9,0x5287,0x5ae9,0x4a67,0x5b0a,0x3a27,0x4248,0x4248,0x4248,0x4248,0x4248,0x422a,0x39e8,0x5ad3,0x49ff,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39e7,0x52aa,0xad55,0xb596,0x9cd3,0x0000,0x9492,0xbdf7,0x4228,0x4228,0xad75,0xa534,0xad55,0x4a69,0x8430,0xad55,0xad75,0x632c,0x39c7,0x4228,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x6b4d,0x6b6d,0x5acb,0x52aa,0x4208,0x4228,0x4208,0x4208,0x5a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x52aa,0x39e7,0x4a69,0x528a,0x4208,0x4208,0x4208,0x3a08,0x6a08,0x5208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x630c,0x630c,0x31a6,0x4228,0x4208,0x4208,0x3a08,0x5a08,0xa9e8,0x8208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4228,0x528a,0x4208,0x4a69,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4208,0x3a08,0x7a08,0x5208,0x3a08,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x630c,0x6b6d,0x4208,0x39e7,0x4228,0x4208,0x4208,0x4208,0x4208,0x3a08,0x4208,0x3208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x31a6,0x528a,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x528a,0x4208,0x4a69,0x4a69,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x738e,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x3228,0x2208,0x3208,0x3a08,0x4208,0x2a08,0x3208,0x3a08,0x2a08,0x2a08,0x2208,0x4208,0x3208,0x2208,0x3a08,0x3228,0x39e7,0x52aa,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x630c,0xc638,0x9cf3,0x9cf3,0xbdf7,0x9cf3,0x9d14,0xbdf7,0xa555,0x7bcf,0x73af,0xa514,0x738e,0x94b3,0x8410,0x8c31,0x3166,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c5,0x738e,0x525f,0x397e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0841,0xbdd7,0xce79,0x632c,0xa514,0x94b2,0xce79,0x9cd3,0xd69a,0x52aa,0xffdf,0x8430,0xdedb,0xbdf7,0xe71c,0x9cd3,0xad55,0x7bef,0x3186,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a49,0xa534,0xad55,0xf79e,0x8c51,0x2965,0x4228,0x3a08,0x5208,0xd9e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xe73c,0x4208,0xbdd7,0xbdd7,0x1082,0x4a49,0x3208,0x7a08,0xa9e8,0xa1e8,0x4a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x94b2,0xce59,0xce59,0x8c71,0x2965,0x4228,0x4208,0x3208,0x7a08,0x6a08,0xb1e8,0x6208,0x3a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x5acb,0xef5d,0x3186,0xbdd7,0xbdf7,0x0841,0x4a49,0x4208,0x4208,0x3208,0x6a08,0xa9e8,0x2a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18e3,0xb5b6,0xdedb,0xa534,0xd69a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x9208,0xb1e8,0x6208,0x3a08,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xf79e,0x738e,0xb596,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x2208,0x3a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x52aa,0xef5d,0x4208,0xbdd7,0xbdf7,0x0861,0x4a49,0x4208,0x4208,0x4208,0x2a08,0x2a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1061,0x3208,0x7a08,0xa9e8,0x8a08,0x7208,0x4208,0x8a08,0x7a08,0x5a08,0x8a08,0x99e8,0xa1e8,0x4a08,0x8208,0xa9e8,0x6208,0x7a08,0x31e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x31a6,0x632c,0xc638,0x9cd3,0xa534,0xc618,0xa534,0x9cd3,0xc638,0x52aa,0x5269,0xb5b6,0x8410,0xbdd7,0xce79,0x8c71,0x2103,0x4248,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c6,0x6b6f,0x523f,0x397d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x0000,0xce59,0xbdd7,0x0000,0x2104,0xc638,0xdefb,0x9cd3,0xf7be,0x6b6d,0xef7d,0xad75,0xa534,0x528a,0x9cd3,0x9cd3,0xc638,0x9492,0x2945,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x0000,0x8410,0xdefb,0x2965,0x4228,0x4208,0x4208,0x4208,0x6208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x18e3,0xbdf7,0xce59,0xdefb,0x632c,0x39c7,0x4a28,0x2a08,0x9208,0xc1e8,0x3208,0x4a08,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xf79e,0x5acb,0x39e7,0x5aeb,0x39e7,0x4208,0x4208,0x4208,0x2208,0x7208,0x8208,0x3208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xef7d,0x4228,0xc618,0xbdf7,0x0841,0x4a49,0x4208,0x3a08,0x4a08,0xa9e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x1082,0xc618,0xc638,0x528a,0xef7d,0x52aa,0x39e7,0x4228,0x4208,0x3a08,0x4a08,0xb9e8,0xd9e8,0x8208,0x3208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x528a,0xffff,0xce59,0xbdd7,0xc618,0x0000,0x4a49,0x4208,0x4208,0xa1e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xffff,0xbdf7,0xf7be,0xbdd7,0x10a2,0x4a49,0x4208,0x4208,0x2a08,0x9208,0x9208,0x2a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0061,0x5a08,0xb9e8,0x7a08,0x7208,0xa9e8,0x6a08,0xc1e8,0xc1e8,0xb9e8,0xc1e8,0xb1e8,0x9208,0xb1e8,0xa1e8,0x7a08,0xb9e8,0xa208,0x29e7,0x5aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x39e7,0x6b6d,0xc638,0x9492,0xb5b6,0xbdf7,0xb596,0x73ae,0xce59,0x73ae,0x7bcf,0xce79,0xb5b6,0xce79,0xb596,0x9cd3,0x6b4d,0x4208,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c6,0x6b6e,0x525f,0x28f6,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0x94b2,0xd6ba,0xb596,0xbdf7,0xbdd7,0xc638,0x6b6d,0xef5d,0x6b6d,0xe73c,0x4a49,0x2104,0x4208,0xc618,0xa514,0xd6ba,0xa514,0x2945,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4228,0x2965,0xe71c,0x94b2,0x2124,0x4228,0x4208,0x3a08,0x5208,0xd9e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x31a6,0x5acb,0xffff,0xbdd7,0x10a2,0x4a49,0x4208,0x2208,0x9a08,0xb1e8,0x5a08,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xef5d,0x5acb,0x39c7,0x31a6,0x4228,0x4208,0x4208,0x4208,0x3208,0x8208,0x5208,0x3a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x10a2,0xc618,0xc638,0xdefb,0x632c,0x39c7,0x4228,0x4208,0x2a08,0x8a08,0x8a08,0x2208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xbdd7,0xe71c,0xb596,0xd69a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x5a08,0x7208,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5aeb,0xe73c,0xb5b6,0xf79e,0xb5b6,0x10a2,0x4a49,0x3a08,0x5208,0xb1e8,0x5208,0x3a08,0x4208,0x4208,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x52aa,0xf79e,0xf79e,0xffff,0xb596,0x18c3,0x4a49,0x4208,0x4208,0x2a08,0x9208,0x9208,0x2a08,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1061,0x3208,0x7208,0xa1e8,0x7a08,0x8a08,0xc9e8,0x6208,0xa9e8,0x8208,0xb1e8,0xb9e8,0x9a08,0xa9e8,0x9a08,0x2a08,0xc1e8,0x9208,0x01e7,0x4aaa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e7,0x0841,0x18e3,0xa514,0x9cd3,0x528a,0x52aa,0x31a6,0x8c71,0x9cd3,0x9cd3,0x9492,0x6b6d,0x10a2,0x7bcf,0x630c,0x4a69,0x6b4d,0x0000,0x10a2,0x4208,0x4208,0x4208,0x4208,0x4228,0x39c6,0x6b6f,0x525f,0x106f,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x0000,0x4228,0x6b4d,0x2104,0x4a49,0x39c7,0x10a2,0x39e7,0x18e3,0x39e7,0x31a6,0x2945,0x18e3,0x3186,0x6b4d,0x4228,0x0000,0x39c7,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x18e3,0x94b2,0xd6ba,0x0000,0x39e7,0x4a49,0x4208,0x4228,0x4a49,0x5a08,0x4a49,0x4228,0x4228,0x4228,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x18c3,0xbdf7,0xce59,0xdefb,0x632c,0x39c7,0x4a28,0x3a49,0x8a29,0xaa08,0xa208,0x4a28,0x4208,0x4a49,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x528a,0xf79e,0x5acb,0x4208,0x630c,0x39e7,0x4228,0x4a49,0x4228,0x4228,0x5208,0x4a28,0x4228,0x4a49,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4228,0x0861,0xbdd7,0xd69a,0xdefb,0x5acb,0x39e7,0x4228,0x4a49,0x4228,0x5228,0x3a08,0x4208,0x4228,0x4a49,0x4228,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x31a6,0x18c3,0xc638,0xb5b6,0x0000,0xffdf,0x630c,0x39e7,0x4a49,0x4228,0x4a49,0x4228,0x3a08,0x3a49,0x4249,0x4228,0x4249,0x4a49,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x5acb,0xef7d,0x632c,0xffff,0xbdb6,0x18e3,0x4a69,0x4249,0x4a28,0x4228,0x3a08,0x4228,0x4228,0x4a49,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5aeb,0xef5d,0xb5b6,0xdedb,0xbdf7,0x10a2,0x4a49,0x4228,0x4208,0x4a28,0x2a28,0x3249,0x4a28,0x4228,0x4a49,0x4a49,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0061,0x4a08,0x9a08,0xa9e8,0x8208,0x5a08,0x9a08,0x5208,0xa1e8,0x4a08,0xb9e8,0xb9e8,0xa1e8,0x9208,0xa1e8,0xb1e8,0x9208,0xc1e8,0xa9c7,0x8a8a,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x39e7,0x528a,0xb5b6,0xce59,0x73ae,0x6b6d,0xbdf7,0xc618,0x8c51,0x0000,0x73ae,0xad75,0x2965,0x1082,0x8c51,0xc638,0x7bef,0x7bcf,0xbdf7,0xc638,0xbdd7,0x4a69,0x39e7,0x4208,0x4208,0x4228,0x39c6,0x6b6f,0x523e,0x0004,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0x8c51,0xad55,0xad55,0x632c,0xa534,0x2965,0x8430,0x94b2,0x9cd3,0xb5b6,0x9cf3,0x8c51,0xb596,0xa534,0x9cf3,0x7bcf,0xb575,0xb5b6,0x7bef,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x31a6,0xdedb,0xd69a,0xa534,0x7bcf,0x0000,0x4208,0x3186,0x2104,0x31e7,0x2124,0x2945,0x39c7,0x31a6,0x4208,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x52aa,0xe71c,0x2104,0xb5b6,0xb596,0x10a2,0x4228,0x2924,0x0104,0x11c7,0x21e7,0x2965,0x4228,0x2104,0x2124,0x39e7,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2965,0x94b2,0xce59,0xc618,0x7bef,0x2124,0x31a6,0x2104,0x39c7,0x3186,0x3a08,0x3186,0x2945,0x18c3,0x31a6,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xf7be,0xb596,0x2104,0x4a49,0x3186,0x2104,0x39a6,0x29a6,0x4228,0x4208,0x3186,0x2104,0x31a6,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x3186,0x0000,0xad55,0xdedb,0xad55,0xc638,0x39c7,0x2124,0x2945,0x39e7,0x2104,0x3186,0x4208,0x2904,0x2104,0x3186,0x2124,0x2945,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39e7,0x52aa,0xef5d,0x3186,0xb596,0xbdf7,0x0000,0x3186,0x2104,0x2965,0x31a6,0x4208,0x2965,0x2945,0x18c3,0x31a6,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x39e7,0x5acb,0xdefb,0x632c,0xbdf7,0xbdd7,0x0000,0x4228,0x31a6,0x41e7,0x31a6,0x39c7,0x2924,0x2945,0x3186,0x2104,0x2945,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x6a08,0x6208,0x0208,0x3208,0x3a08,0x4208,0x4208,0x3208,0x2a08,0x5208,0x5a08,0x0208,0x4208,0x5208,0x0208,0x5a08,0x69e7,0x62aa,0x5b0c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4a49,0x1082,0xbdd7,0xe73c,0xbdd7,0xe71c,0xce59,0xef7d,0xbdf7,0xf7be,0x4228,0xd6ba,0xffff,0x8410,0x7bef,0xffdf,0xd69a,0xdefb,0xce59,0xef5d,0xa534,0xbdf7,0x4a69,0x39e7,0x4208,0x4208,0x4228,0x39c5,0x7370,0x4a1a,0x0000,0x0020,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x4a69,0xf79e,0x9cd3,0xad55,0x8c71,0xf7be,0x632c,0xd69a,0xc638,0x630c,0xffff,0x630c,0xc618,0xdefb,0x73ae,0x738e,0x39e7,0xd69a,0xd69a,0x39c7,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4a49,0x5acb,0x630c,0x6b4d,0x9492,0xad75,0x528a,0x8410,0xad75,0x5acb,0xa534,0x9cf3,0x6b4d,0x73ae,0x4228,0x8410,0x2945,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x39c7,0x9492,0xad55,0x73ae,0x8430,0x2965,0x528a,0xa534,0xb575,0x7bcf,0x528a,0x8c71,0x39c7,0xad55,0xa514,0x52aa,0x39c7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x5acb,0x9cd3,0xad55,0x52aa,0x8410,0xad55,0x630c,0x8410,0x4228,0x8430,0x9cf3,0xb5b6,0x7bef,0x31a6,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x52aa,0x4a49,0x4208,0x31a6,0x8430,0xad75,0x6b6d,0x7bef,0x39c7,0x39e7,0x8410,0xb596,0x7bef,0x31a6,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0841,0x0000,0x39e7,0xad55,0xa534,0x6b4d,0xa514,0xad55,0x52aa,0xa534,0xa514,0x5acb,0xad75,0x8c51,0x39c7,0xa534,0xad75,0x8430,0xa514,0xa534,0x4a69,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x4a69,0x52aa,0x8c51,0x528a,0x8c51,0x9cf3,0xad55,0x9492,0x73ae,0x4208,0x8c71,0x9cf3,0xb5b6,0x7bef,0x2965,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x3186,0x8c71,0xad55,0x8430,0x3186,0x8c71,0x52aa,0x7bcf,0x528a,0x7bcf,0x632c,0xa514,0x9cf3,0x8c51,0xad75,0xa534,0x4228,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x3208,0x4a08,0xa1e8,0x99e8,0x8208,0x4208,0x6a08,0x9208,0xa1e8,0x8208,0xa1e8,0x99e8,0x8208,0xa9e8,0xa1e8,0x4208,0x29e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4a49,0x0861,0xbdd7,0xef7d,0x738e,0x1082,0xc618,0xbdd7,0x2945,0xef7d,0xad55,0xc638,0x73ae,0xce79,0xc618,0xc638,0x0000,0x39e7,0xbdd7,0xe71c,0xa514,0x2965,0x39e7,0x4228,0x4208,0x4208,0x4228,0x39c5,0x7391,0x39d3,0x0000,0x0843,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x39e7,0x9cf3,0x9cd3,0xc618,0x9cf3,0xef5d,0xad55,0xe71c,0xb5b6,0x0000,0xf79e,0x0000,0xb5b6,0xe71c,0x9492,0x4a49,0x0000,0xbdf7,0xbdf7,0x0000,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39e7,0x2965,0x5acb,0xad75,0x6b4d,0x9492,0xad55,0x7bcf,0xbdf7,0xbdd7,0x9492,0xbdf7,0xa534,0x73ae,0xb596,0x0861,0x738e,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x31a6,0x632c,0xad75,0x632c,0x94b2,0xad55,0x18e3,0x6b6d,0xce59,0x73ae,0x632c,0x9cd3,0x8430,0xa514,0xbdd7,0x8c71,0xa534,0x18e3,0x5acb,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x39c7,0x5aeb,0xad75,0x6b4d,0x9492,0xad55,0x7bcf,0xbdd7,0xce79,0x9cf3,0xa534,0x7bcf,0xc618,0x4228,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x39e7,0x4208,0x39c7,0x632c,0xb596,0x632c,0x9cd3,0xad75,0x2104,0x632c,0xbdd7,0x8410,0x528a,0x4208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x5acb,0xc638,0x8c71,0xad75,0x9cf3,0x7bcf,0xbdf7,0xb5b6,0x8c51,0xbdf7,0xad75,0x8430,0xa514,0xc618,0x738e,0x7bcf,0xbdf7,0x8c71,0xa514,0x5aeb,0x31a6,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x3186,0x630c,0xd6ba,0x94b2,0xbdf7,0xbdf7,0x73ae,0x6b4d,0x9cf3,0x94b2,0x8c51,0x7bef,0xc618,0x4228,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x18e3,0xb596,0x9cf3,0xad55,0x9cd3,0x8c51,0x8c71,0xbdd7,0x630c,0x9cf3,0xbdf7,0xa514,0x52aa,0xb596,0xa534,0x6b4d,0x39e7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x2a08,0xa1e8,0xa1e8,0x5208,0xa9e8,0x7a08,0xa9e8,0x9a08,0xa9e8,0xa9e8,0xa1e8,0x6208,0x4208,0xb9e8,0x8208,0x3a08,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x39c7,0xb596,0xffff,0xbdf7,0xb596,0xffff,0xf7be,0xc618,0xbdf7,0xe73c,0xbdd7,0xe73c,0xce79,0xb5b6,0x0861,0x0000,0xb5b6,0xef7d,0xb596,0x528a,0x39e7,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x3167,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0xc618,0xa514,0xce79,0xad55,0xe71c,0x18c3,0xb596,0xbdf7,0x9cd3,0xf7be,0x9cd3,0xbdf7,0xb5b6,0x0000,0x4a69,0x1082,0xbdf7,0xbdf7,0x1082,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4228,0x31a6,0x738e,0xad55,0x0000,0x7bef,0xa514,0x2965,0xc638,0xc618,0xa514,0x4228,0x9492,0xd69a,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x3186,0x738e,0xad55,0x0000,0x73ae,0xa534,0x0000,0x5aeb,0xce79,0x528a,0x528a,0xce79,0xad75,0xc638,0xce59,0xce59,0x4a49,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x3186,0x738e,0xad55,0x0000,0x7bef,0xa514,0x2945,0xce59,0x9cd3,0xbdd7,0xad55,0x4a69,0xad55,0x18c3,0x4a49,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4208,0x4228,0x4228,0x3186,0x738e,0xad55,0x0000,0x73ae,0xa534,0x0000,0x3186,0x738e,0xa534,0x8430,0x3186,0x4208,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x52aa,0xc638,0x94b2,0xb596,0x9cd3,0x3186,0xc618,0xce59,0xc618,0x738e,0x9cd3,0x4a49,0xc618,0xc618,0x5acb,0x4228,0xd6ba,0xc638,0x4208,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4228,0x31a6,0x6b4d,0xad55,0xb596,0xc618,0xc618,0x630c,0x0000,0x8c71,0xbdd7,0x39c7,0x630c,0xa534,0x18c3,0x4228,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4a49,0x2104,0xad75,0xbdf7,0x6b4d,0xb596,0xb5b6,0xc618,0xc638,0x39c7,0xa514,0x73ae,0x8c71,0x9cd3,0xb5b6,0xa534,0x1082,0x31a6,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x4208,0x4208,0x4a08,0x9208,0x9208,0xb1e8,0xb1e8,0xc1e8,0x7a08,0x8a08,0xa208,0xb1e8,0x3a08,0x1208,0xa208,0x6208,0x3208,0x39e7,0x52aa,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x4208,0x4208,0x4208,0x4228,0x2965,0x9492,0x8430,0x6b6d,0xef7d,0xce79,0xc618,0x4228,0x18e3,0xb5b6,0xef7d,0xc618,0xe73c,0xc618,0xe73c,0x5aeb,0xa514,0xce59,0xbdf7,0x0000,0x5aeb,0x4228,0x4208,0x4208,0x4208,0x4228,0x39c7,0x6b6d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x31a6,0x4228,0x738e,0x5acb,0x2945,0x528a,0x4208,0x4a49,0x4a49,0x630c,0x52aa,0x630c,0x4a49,0x4a49,0x4208,0x39e7,0x39c7,0x4a49,0x4a49,0x39c7,0x39e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39c7,0x4a49,0xa534,0xad75,0x8430,0xa514,0xad75,0x9cf3,0x94b2,0x0000,0x3186,0x5aeb,0x9cf3,0x10a2,0x39e7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x1082,0x39c7,0x4a49,0xa534,0xad55,0x9492,0xc618,0xa534,0x9492,0xbdf7,0xa514,0x94b2,0xa534,0x73ae,0xbdf7,0x8c71,0x7bcf,0x8410,0x2124,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39c7,0x4a49,0xa534,0xad75,0x8430,0xa514,0xad75,0x9cf3,0x9492,0x5aeb,0xa534,0x528a,0xa534,0x18e3,0x4228,0x31a6,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4a49,0xa534,0xad55,0x9492,0xc618,0xad55,0x8410,0x9492,0xad55,0x8c51,0x2945,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0861,0x0000,0x528a,0xc618,0x9cf3,0x8c71,0x9cf3,0xad75,0x9cf3,0x9492,0x738e,0x94b2,0xc618,0x9cf3,0x6b4d,0xc618,0x9cf3,0x9cd3,0x9492,0x7bcf,0x7bef,0x630c,0x3186,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x39e7,0x39e7,0x39e7,0x2965,0x6b4d,0x9cd3,0x528a,0xbdd7,0xb5b6,0xa514,0x9cd3,0x9cd3,0x5aeb,0xa514,0x52aa,0xa534,0x2104,0x39e7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4228,0x18e3,0xa514,0x5acb,0x0000,0xa534,0x7bef,0xa514,0x9cd3,0xad75,0xa514,0x8410,0xa514,0x9cd3,0xad75,0xad75,0xa514,0x39e7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0861,0x41e7,0x29e7,0x79c7,0xa1c7,0x99c7,0xa9c7,0x39e7,0x89c7,0xa1c7,0xb9c7,0x99c7,0x51e7,0x31e7,0x21e7,0xa1c7,0x61e7,0x31e7,0x39c7,0x528a,0x630c,0x0000,0x0861,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x4208,0x39e7,0x39e7,0x39e7,0x4208,0x2104,0x9492,0xffdf,0xf79e,0xc5f7,0xbdd7,0xbdd7,0x1000,0x20a2,0xbdf7,0xb595,0x0000,0xef5c,0x5aeb,0xd6ba,0xffff,0xce79,0xad75,0xffdf,0xef7d,0xe73c,0x4a8a,0x39c8,0x39e8,0x39e8,0x4208,0x31a7,0x6b4d,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x52aa,0x4a49,0x4a69,0x52aa,0x528a,0x52aa,0x528a,0x528a,0x4a49,0x4a69,0x4a49,0x528a,0x528a,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x52aa,0x52aa,0x5aaa,0x5269,0x62eb,0x7bcf,0x4a28,0x630c,0x7bae,0x4a69,0x5aeb,0x5acb,0x52aa,0x5acb,0x5aeb,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x5249,0x528a,0x62eb,0x7bcf,0x4a49,0x6b6d,0x7bef,0x6b2c,0x6b6d,0x7bef,0x6b4d,0x528a,0x4a49,0x5aeb,0x5aeb,0x528a,0x632c,0x4a69,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x52aa,0x52aa,0x5269,0x5aeb,0x7bcf,0x4a28,0x630c,0x7bae,0x5269,0x62eb,0x52aa,0x5acb,0x5aaa,0x5aeb,0x528a,0x52aa,0x4a69,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a69,0x62eb,0x7bcf,0x4a49,0x736d,0x7bef,0x6b4d,0x7bae,0x7bcf,0x4a49,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0841,0x0000,0x2945,0x738e,0x7bcf,0x4208,0x630c,0x7bae,0x4a69,0x62eb,0x528a,0x630c,0x738e,0x630c,0x4a49,0x738e,0x83ef,0x6b4d,0x5acb,0x528a,0x5aeb,0x73ae,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x5aaa,0x52aa,0x52aa,0x52aa,0x62eb,0x5aaa,0x5acb,0x736d,0x83ef,0x6b4d,0x5aaa,0x528a,0x5aeb,0x52aa,0x5aeb,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0820,0x0000,0x3165,0x5aaa,0x528a,0x5aeb,0x5aeb,0x5aaa,0x5acb,0x4a49,0x5aaa,0x5269,0x7bcf,0x5aeb,0x630c,0x8410,0x5acb,0x5aaa,0x83ef,0x7bcf,0x528a,0x7bcf,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x4a49,0x52aa,0x62aa,0x828a,0x5aaa,0x52aa,0x5aaa,0x5aaa,0x62aa,0x6aaa,0x5aaa,0x5aaa,0x52aa,0x52aa,0x5aaa,0x52aa,0x52aa,0x528a,0x632c,0x632c,0x0000,0x1082,0x0000,0x0000,0x0000,0x0020,0x0000,0x2965,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4228,0x62eb,0x636d,0x2a69,0x3aaa,0x42eb,0x328a,0x326a,0x420b,0x420b,0x39ca,0x4a4c,0x2949,0x2129,0x6b0d,0x49e9,0x524a,0x6aed,0x6aed,0x62ed,0x5288,0x5286,0x5286,0x5286,0x52a6,0x4a65,0x7bce,0x2965,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x5b0c,0x530c,0x4b0c,0x530c,0x52eb,0x3aaa,0x532c,0x52eb,0x3aaa,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x1a08,0x5b2c,0x52eb,0x5acb,0x530c,0x52cb,0x52aa,0x52eb,0x5aeb,0x52aa,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x42eb,0x530c,0x630c,0x530c,0x5aeb,0x4aaa,0x4b0c,0x52eb,0x4acb,0x4b0c,0x4aeb,0x530c,0x4aeb,0x530c,0x630c,0x630c,0x630c,0x630c,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x2208,0x532c,0x530c,0x5b0c,0x630c,0x630c,0x5b0c,0x52eb,0x5acb,0x5b0c,0x42cb,0x4aaa,0x52eb,0x5acb,0x4acb,0x632c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x00a2,0x3aaa,0x52cb,0x5b2c,0x42eb,0x4acb,0x5b0c,0x4aeb,0x630c,0x4aeb,0x4acb,0x52eb,0x632c,0x52cb,0x4aaa,0x42cb,0x4b0b,0x630c,0x5aeb,0x630c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x3208,0x532c,0x5b0c,0x5b0c,0x630c,0x52eb,0x4b0c,0x4aeb,0x4acb,0x42aa,0x4acb,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0800,0x0082,0x4aeb,0x530c,0x5b0c,0x5b0c,0x530c,0x5b0c,0x5b0c,0x530b,0x4b0c,0x42aa,0x52eb,0x42eb,0x4aaa,0x5b0c,0x4b0b,0x42aa,0x4acb,0x4b0c,0x4b0c,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4228,0x632c,0x5b0c,0x530c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4228,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x4aeb,0x930c,0xd36e,0xc34d,0xcb4d,0xcb4d,0xcbed,0xce4d,0xce6d,0xce6d,0xce6d,0xce6e,0xce6e,0x6cab,0x64ac,0x64ac,0x5c8b,0x5c8b,0x5caa,0x6c14,0x6b3a,0x6b59,0x6b59,0x6b59,0x6b59,0x630d,0x10a1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0xa083,0x5800,0x6000,0x9883,0x8801,0x7000,0x9883,0x8801,0x6800,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1841,0x98e4,0x7800,0x6000,0x0000,0x7800,0x4800,0x2800,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0xa083,0x6000,0x0000,0x7800,0x1800,0x5800,0xa083,0x5800,0x6000,0x9883,0x8802,0x6800,0xa083,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2861,0x90c4,0x9842,0x7000,0x5800,0x0000,0x0000,0x3000,0x7000,0x0000,0x6800,0x9883,0x7801,0x4800,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x68c3,0xa0a3,0x5800,0x6000,0xa0a3,0x5800,0x6000,0x9883,0x2000,0x9062,0x6000,0x6000,0x0000,0x4800,0x7001,0xa083,0x9042,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x7042,0x9842,0x3800,0x5800,0x1000,0x6800,0x8802,0x9883,0x6800,0x8862,0x9062,0x2000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70c3,0x9863,0x7000,0x2000,0x5000,0x7000,0x1000,0x5000,0x7800,0x9863,0x8842,0x6800,0xa083,0x6000,0x0000,0x9042,0x8842,0x7000,0x9863,0x9022,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xd125,0xf987,0xf987,0xf9c7,0xf807,0xfd27,0xffe7,0xffe7,0xffe7,0xffe7,0xffe7,0xdf65,0x04e0,0x04e0,0x04e0,0x04e0,0x04e0,0x04c2,0x31fe,0x391f,0x395f,0x395f,0x395f,0x28fb,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9925,0x9125,0xb966,0x9945,0x3082,0xa966,0x9945,0x2882,0xa966,0x8925,0xa966,0x48a3,0x0061,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0xb166,0x8104,0xc987,0x8925,0xb166,0xa966,0x8925,0x48c3,0x0061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9125,0xa145,0x8925,0x7904,0x7904,0xb166,0x9125,0x9945,0xb986,0x9945,0x2882,0xa966,0x8125,0xa146,0x48c3,0x0061,0x1062,0x0861,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xc166,0x50c3,0x68e4,0xa146,0x0020,0x38a2,0x8925,0x7104,0x8925,0xa966,0x68e4,0x60e3,0xa966,0x68e4,0xa966,0x0020,0x1882,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0x9925,0x9125,0xb966,0x8104,0x9945,0x8125,0xa146,0x8925,0x8925,0x7904,0xb166,0x68e4,0xa966,0x50c3,0xb166,0x7104,0x0061,0x1061,0x1061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0xa145,0x60e3,0xb986,0x9125,0x1882,0xc187,0xb166,0x58e3,0x68e4,0xb166,0x7904,0x9945,0x0020,0x1882,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x68c3,0xa946,0xa145,0xb166,0x9125,0xc187,0x1882,0x9125,0xc187,0x9125,0x3082,0xa966,0x8925,0x9945,0xa966,0x9945,0x30a2,0xa146,0x9945,0x48c3,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0061,0x40a3,0xf1e8,0xf1e8,0xf1e8,0xf1e8,0xf1c8,0xfec8,0xffe8,0xffe8,0xffe8,0xf7e8,0xffe9,0xae86,0x0460,0x2ce2,0x1ce2,0x1cc2,0x1ce0,0x1ca8,0x41fe,0x41bf,0x41df,0x41be,0x41df,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xa125,0x8904,0xa945,0x9925,0x0000,0xa125,0xa125,0x0000,0x9925,0xb146,0x68c3,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x8904,0x68c3,0x9105,0xa945,0xb146,0xc166,0x78e4,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xb146,0x5082,0xa945,0xa945,0xb146,0xb146,0xb146,0x50a2,0x9925,0xa125,0x0000,0x9925,0xd987,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4082,0xc986,0x4882,0x4082,0x9925,0x0000,0x4082,0xc166,0xa125,0xa125,0x3862,0x9925,0x8904,0xb966,0xa945,0xa125,0x0000,0x1820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xa125,0x8904,0xa125,0xd187,0x78e4,0x3061,0x8104,0x9104,0x78e4,0xa945,0xb146,0xa945,0xc166,0x1820,0x9105,0x4882,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x58a3,0x9105,0x0000,0xb146,0x8904,0x8104,0x9104,0xb966,0x3061,0x1000,0xc987,0xb966,0x1820,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4882,0x8104,0x80e4,0x9105,0xc166,0x9104,0x8104,0x8904,0xa945,0x9925,0x0000,0x9925,0xd987,0x78e4,0x0000,0x8904,0x8904,0xa945,0x9925,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x8904,0xa125,0xa945,0x8104,0xa125,0xa945,0x8104,0x9925,0x3061,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc166,0x9925,0x80e4,0x3061,0xb966,0x78e4,0x70c3,0x78e4,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1020,0x0000,0x9925,0x3862,0x0000,0x9925,0x68c3,0x9105,0xa945,0x3041,0x0000,0x9925,0xa945,0x8104,0x9925,0x50a2,0x8904,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x5082,0x9105,0x0000,0x4882,0xc166,0x9925,0x8904,0x9925,0x68c3,0xa125,0x80e4,0x9925,0x9925,0x80e4,0x1000,0x9925,0x0000,0x1020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0x9925,0xa945,0x8904,0x9925,0x58a3,0x78e4,0x8904,0xc166,0x70c3,0x9925,0xb146,0xa945,0x0000,0x8904,0x3862,0x9105,0x5082,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x9925,0xa945,0x60a3,0x68c3,0xa945,0x4062,0xb966,0x9105,0x9104,0x80e4,0x60c3,0x70c3,0x0000,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x80e4,0xb966,0x9925,0x2841,0x9925,0x4882,0xa945,0x60a3,0x9104,0xa945,0x8104,0x9925,0x58a3,0x80e4,0x70c3,0x9925,0x9104,0xa125,0xa125,0x9105,0x2041,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x58a3,0x2041,0x0800,0x58a3,0x4882,0x2841,0x50a2,0x4882,0x2041,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x4082,0x3061,0x1820,0x0000,0x2041,0x2021,0x0000,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2021,0x1821,0x0800,0x1821,0x0000,0x0000,0x2041,0x1821,0x0000,0x2041,0x50a3,0x4882,0x2841,0x0000,0x2041,0x1821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x2041,0x0800,0x0000,0x4062,0x50a3,0x3862,0x0000,0x0000,0x2041,0x50a2,0x5082,0x0000,0x2041,0x1820,0x2021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2041,0x58a3,0x2041,0x0800,0x0000,0x2021,0x3862,0x4082,0x0000,0x5082,0x4082,0x1820,0x1820,0x2041,0x0800,0x1821,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0x5082,0x0000,0x0000,0x0800,0x0000,0x4082,0x58a3,0x3861,0x1820,0x0000,0x3061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3061,0x4082,0x2041,0x0800,0x1020,0x0000,0x0800,0x0000,0x2041,0x50a2,0x4882,0x2841,0x0000,0x1821,0x4062,0x58a3,0x1821,0x0800,0x58a3,0x5082,0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x1000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x4062,0xf1c8,0xf9c8,0xf1c8,0xf9e8,0xf988,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0800,0x0800,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0800,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0x9925,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x419e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xd187,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x04c0,0x14e0,0x14e0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x399e,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf9c8,0xfa08,0xf848,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f,0x41bf,0x41bf,0x41bf,0x2935,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xffa8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x419e,0x0867,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x3501,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd48,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfec8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41bf,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd727,0x04c0,0x14e0,0x14e0,0x14e1,0x14e0,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1000,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xae85,0x0460,0x24e1,0x14e0,0x14e1,0x14e0,0x14c4,0x41de,0x419f,0x41bf,0x41be,0x41bf,0x2935,0x0000,0x0823,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf9c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x85e4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1821,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x1ce0,0x0cc0,0x14e0,0x14e0,0x14c3,0x0d00,0x3376,0x411f,0x41df,0x41bf,0x41bf,0x399d,0x0002,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0xc987,0xf9e8,0xf1c8,0xfa08,0xf808,0xfd68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2936,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2041,0xf1c8,0xf9c8,0xf1c8,0xfa08,0xf888,0xfdc8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca7,0x41de,0x419f,0x41bf,0x41bf,0x41bf,0x2914,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x70e4,0xf9c8,0xf9c8,0xf9c8,0xf9a8,0xf9e8,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x419e,0x1067,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc68,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xefc8,0x3501,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa28,0xf808,0xfda8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6c6,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x14c2,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x3136,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x3862,0xf1c8,0xf9c8,0xf1c8,0xf9c8,0xf9c8,0xfea8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0x7dc4,0x04a0,0x1ce0,0x14e0,0x14c2,0x14e0,0x242f,0x419f,0x41bf,0x41bf,0x41bf,0x41bf,0x20cf,0x0000,0x0002,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa125,0xf9e8,0xf1c8,0xf9e8,0xf9a8,0xfa28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x2d01,0x04c0,0x14e0,0x14e0,0x14c3,0x0d00,0x3395,0x411f,0x41de,0x41bf,0x41bf,0x41be,0x0824,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xa945,0xf9e8,0xf1c8,0xf9e8,0xf908,0xfc28,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xd747,0x0cc0,0x14e0,0x14e0,0x14e1,0x14e1,0x14e0,0x3afa,0x417f,0x41bf,0x41bf,0x41bf,0x317a,0x0000,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x1020,0xe9c7,0xf9c8,0xf1c8,0xfa08,0xf808,0xfde8,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xa665,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1ca8,0x41bf,0x419f,0x41bf,0x41bf,0x41bf,0x2913,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1000,0x0000,0x78e4,0xf9c8,0xf1c8,0xf9e8,0xf9a8,0xfa48,0xff88,0xffe8,0xffe8,0xffe8,0xffe8,0xf7e8,0x4522,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x2bb4,0x413f,0x41bf,0x41bf,0x41bf,0x419e,0x1068,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1820,0x0000,0xb146,0xf9e8,0xf1c8,0xf9e8,0xf988,0xfac8,0xffc8,0xffe8,0xffe8,0xffe8,0xffe8,0xf7c8,0x3501,0x04c0,0x1ce0,0x14e0,0x14c3,0x0d00,0x3376,0x413f,0x41df,0x41bf,0x41bf,0x399d,0x0845,0x0000,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x2841,0xe9c8,0xf9c8,0xf1c8,0xfa08,0xf808,0xfd88,0xffe8,0xffe8,0xffe8,0xffe8,0xffe8,0xb6a5,0x0480,0x24e1,0x14e0,0x14e1,0x14e0,0x1cc5,0x3a1d,0x419f,0x41bf,0x41bf,0x41bf,0x2935,0x0000,0x0023,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000}; diff --git a/MCUME_teensy/teensyspeccy/spec.c b/MCUME_teensy/teensyspeccy/spec.c new file mode 100644 index 0000000..731931b --- /dev/null +++ b/MCUME_teensy/teensyspeccy/spec.c @@ -0,0 +1,393 @@ +#include "Z80.h" +#include "spectrum.rom.h" +#include "emuapi.h" +#include "zx_filetyp_z80.h" + +#include "AY8910.h" + + +#define WIDTH 320 +#define HEIGHT 192 + +#define CYCLES_PER_FRAME 69888 //3500000/50 + +typedef struct { + int port_ff; // 0xff = emulate the port, 0x00 alwais 0xFF + int ts_lebo; // left border t states + int ts_grap; // graphic zone t states + int ts_ribo; // right border t states + int ts_hore; // horizontal retrace t states + int ts_line; // to speed the calc, the sum of 4 abobe + int line_poin; // lines in retraze post interrup + int line_upbo; // lines of upper border + int line_grap; // lines of graphic zone = 192 + int line_bobo; // lines of bottom border + int line_retr; // lines of the retrace + /* + int TSTATES_PER_LINE; + int TOP_BORDER_LINES; + int SCANLINES; + int BOTTOM_BORDER_LINES; + int tstate_border_left; + int tstate_graphic_zone; + int tstate_border_right; + int hw_model; + int int_type; + int videopage; + int BANKM; + int BANK678; + */ +} HWOptions ; + +static HWOptions hwopt = { 0xFF, 24, 128, 24, 48, 224, 16, 48, 192, 48, 8 }; +//224, 64, 192, 56, 24, 128, 72}; + +struct { unsigned char R,G,B; } Palette[16] = { + { 0, 0, 0}, + { 0, 0, 205}, + { 205, 0, 0}, + { 205, 0, 205}, + { 0, 205, 0}, + { 0, 205, 205}, + { 205, 205, 0}, + { 212, 212, 212}, + { 0, 0, 0}, + { 0, 0, 255}, + { 255, 0, 0}, + { 255, 0, 255}, + { 0, 255, 0}, + { 0, 255, 255}, + { 255, 255, 0}, + { 255, 255, 255} +}; + +const byte map_qw[8][5] = { + {25, 6,27,29,224}, // vcxz + {10, 9, 7,22, 4}, // gfdsa + {23,21, 8,26,20}, // trewq + {34,33,32,31,30}, // 54321 + {35,36,37,38,39}, // 67890 + {28,24,12,18,19}, // yuiop + {11,13,14,15,40}, // hjkl + { 5,17,16,225,44}, // bnm +}; + +static byte Z80_RAM[0xC000]; // 48k RAM +static Z80 myCPU; +static byte * volatile VRAM=Z80_RAM; // What will be displayed. Generally ZX VRAM, can be changed for alt screens. + +//extern const byte rom_zx48_rom[]; // 16k ROM +static byte key_ram[8]={ + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; // Keyboard buffer +byte out_ram; // Output (fe port) +static byte kempston_ram; // Kempston-Joystick Buffer + +static int v_border=0; +static int h_border=32; +static int bordercolor=0; +static byte * XBuf=0; + +static int lastaudio=CYCLES_PER_FRAME; +static byte buzzer_val; + + +void displayscanline(int y, int f_flash) +{ + int x, row, col, dir_p, dir_a, pixeles, tinta, papel, atributos; + + row = y + v_border; // 4 & 32 = graphical screen offset + col = 0; // 32+256+32=320 4+192+4=200 (res=320x200) + + for (x = 0; x < h_border; x++) { + XBuf[col++] = bordercolor; + } + + dir_p = ((y & 0xC0) << 5) + ((y & 0x07) << 8) + ((y & 0x38) << 2); + dir_a = 0x1800 + (32 * (y >> 3)); + + for (x = 0; x < 32; x++) + { + pixeles= VRAM[dir_p++]; + atributos=VRAM[dir_a++]; + + if (((atributos & 0x80) == 0) || (f_flash == 0)) + { + tinta = (atributos & 0x07) + ((atributos & 0x40) >> 3); + papel = (atributos & 0x78) >> 3; + } + else + { + papel = (atributos & 0x07) + ((atributos & 0x40) >> 3); + tinta = (atributos & 0x78) >> 3; + } + XBuf[col++] = ((pixeles & 0x80) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x40) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x20) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x10) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x08) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x04) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x02) ? tinta : papel); + XBuf[col++] = ((pixeles & 0x01) ? tinta : papel); + } + + for (x = 0; x < h_border; x++) { + XBuf[col++] = bordercolor; + } + + emu_DrawLine(XBuf, WIDTH, HEIGHT, y); +} + +static void displayScreen(void) { + int y; + static int f_flash = 1, f_flash2 = 0; + f_flash2 = (f_flash2++) % 32; + if (f_flash2 < 16) + f_flash = 1; + else + f_flash = 0; + + for (y = 0; y < HEIGHT; y++) + displayscanline (y, f_flash); + + emu_DrawVsync(); +} + + + +static void InitKeyboard(void){ + memset(key_ram, 0xff, sizeof(key_ram)); +} + +static void UpdateKeyboard (void) +{ + int nb_keys=0; + int k = emu_GetPad(); + int hk = emu_ReadI2CKeyboard(); + if ( (k == 0) && (hk == 0) ) { + memset(key_ram, 0xff, sizeof(key_ram)); + } + else { + // scan all possibilities + for (int j=0;j<8;j++) { + for(int i=0;i<5;i++){ + if ( (k == map_qw[j][i]) || (hk == map_qw[j][i]) ) { + key_ram[j] &= ~ (1<<(4-i)); + nb_keys++; + } + } + } + } +} + + +#define MAX_Z80SIZE 49152 + + +int endsWith(const char * s, const char * suffix) +{ + int retval = 0; + int len = strlen(s); + int slen = strlen(suffix); + if (len > slen ) { + if (!strcmp(&s[len-slen], suffix)) { + retval = 1; + } + } + return (retval); +} + +void spec_Start(char * filename) { + memset(Z80_RAM, 0, 0xC000); + if ( (endsWith(filename, "SNA")) || (endsWith(filename, "sna")) ) { + ZX_ReadFromFlash_SNA(&myCPU, filename); + } + else if ( (endsWith(filename, "Z80")) || (endsWith(filename, "z80")) ) { + unsigned char * game = emu_Malloc(MAX_Z80SIZE); + int size = emu_LoadFile(filename, game, MAX_Z80SIZE); + ZX_ReadFromFlash_Z80(&myCPU, game,size); + emu_Free(game); + } +#if HAS_SND + emu_sndInit(); +#endif +} + +static AY8910 ay; + +void spec_Init(void) { + int J; + /* Set up the palette */ + for(J=0;J<16;J++) + emu_SetPaletteEntry(Palette[J].R,Palette[J].G,Palette[J].B, J); + + InitKeyboard(); + + Reset8910(&ay,3500000,0); + + + if (XBuf == 0) XBuf = (byte *)emu_Malloc(WIDTH); + VRAM = Z80_RAM; + memset(Z80_RAM, 0, sizeof(Z80_RAM)); + + ResetZ80(&myCPU, CYCLES_PER_FRAME); +#if ALT_Z80CORE + myCPU.RAM = Z80_RAM; + Z80FlagTables(); +#endif +} + + + +void spec_Step(void) { +// 32+256+32 +//#define NBLINES (48+192+56+16) + + // Now run the emulator for all the real screen (192 lines) + /* + int scanl; + for (scanl = 0; scanl < NBLINES; scanl++) { + int ref=0; + emu_resetus(); + ExecZ80(&myCPU,hwopt.ts_line); + while (emu_us() < (20000/NBLINES)) { + } + } + */ + + ExecZ80(&myCPU,CYCLES_PER_FRAME); // 3.5MHz ticks for 6 lines @ 30 kHz = 700 cycles +#if ALT_Z80CORE +#else + IntZ80(&myCPU,INT_IRQ); // must be called every 20ms +#endif + displayScreen(); + + int k=emu_ReadKeys(); + + kempston_ram = 0x00; + if (k & MASK_JOY2_BTN) + kempston_ram |= 0x10; //Fire + if (k & MASK_JOY2_UP) + kempston_ram |= 0x8; //Up + if (k & MASK_JOY2_DOWN) + kempston_ram |= 0x4; //Down + if (k & MASK_JOY2_RIGHT) + kempston_ram |= 0x2; //Right + if (k & MASK_JOY2_LEFT) + kempston_ram |= 0x1; //Left + + + UpdateKeyboard(); + + Loop8910(&ay,20); +} + + + +#define BASERAM 0x4000 + + +void WrZ80(register word Addr,register byte Value) +{ + if (Addr >= BASERAM) + Z80_RAM[Addr-BASERAM]=Value; +} + +byte RdZ80(register word Addr) +{ + if (Addr>8) { + case 0xFE : return key_ram[0]; break; + case 0xFD : return key_ram[1]; break; + case 0xFB : return key_ram[2]; break; + case 0xF7 : return key_ram[3]; break; + case 0xEF : return key_ram[4]; break; + case 0xDF : return key_ram[5]; break; + case 0xBF : return key_ram[6]; break; + case 0x7F : return key_ram[7]; break; + } + } + + if ((port & 0xFF) == 0xFF) { + if (hwopt.port_ff == 0xFF) { + return 0xFF; + } + else { + //code = 1; + //if (code == 0xFF) code = 0x00; + return 1; + } + } + return 0xFF; +} + + +void PatchZ80(register Z80 *R) +{ + // nothing to do +} + +/* +word LoopZ80(register Z80 *R) +{ + // no interrupt triggered + return INT_NONE; +} +*/ diff --git a/MCUME_teensy/teensyspeccy/spec.h b/MCUME_teensy/teensyspeccy/spec.h new file mode 100644 index 0000000..d88e163 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/spec.h @@ -0,0 +1,4 @@ +extern void spec_Init(void); +extern void spec_Step(void); +extern void spec_Start(char * filename); + diff --git a/MCUME_teensy/teensyspeccy/spectrum.rom.h b/MCUME_teensy/teensyspeccy/spectrum.rom.h new file mode 100755 index 0000000..1a9f0aa --- /dev/null +++ b/MCUME_teensy/teensyspeccy/spectrum.rom.h @@ -0,0 +1,1373 @@ +#ifndef SPECTRUM_ROM_H +#define SPECTRUM_ROM_H + +static const unsigned char rom_zx48_rom[] = { + 0xf3, 0xaf, 0x11, 0xff, 0xff, 0xc3, 0xcb, 0x11, 0x2a, 0x5d, 0x5c, 0x22, + 0x5f, 0x5c, 0x18, 0x43, 0xc3, 0xf2, 0x15, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x2a, 0x5d, 0x5c, 0x7e, 0xcd, 0x7d, 0x00, 0xd0, 0xcd, 0x74, 0x00, 0x18, + 0xf7, 0xff, 0xff, 0xff, 0xc3, 0x5b, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc5, 0x2a, 0x61, 0x5c, 0xe5, 0xc3, 0x9e, 0x16, 0xf5, 0xe5, 0x2a, 0x78, + 0x5c, 0x23, 0x22, 0x78, 0x5c, 0x7c, 0xb5, 0x20, 0x03, 0xfd, 0x34, 0x40, + 0xc5, 0xd5, 0xcd, 0xbf, 0x02, 0xd1, 0xc1, 0xe1, 0xf1, 0xfb, 0xc9, 0xe1, + 0x6e, 0xfd, 0x75, 0x00, 0xed, 0x7b, 0x3d, 0x5c, 0xc3, 0xc5, 0x16, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xe5, 0x2a, 0xb0, 0x5c, 0x7c, + 0xb5, 0x20, 0x01, 0xe9, 0xe1, 0xf1, 0xed, 0x45, 0x2a, 0x5d, 0x5c, 0x23, + 0x22, 0x5d, 0x5c, 0x7e, 0xc9, 0xfe, 0x21, 0xd0, 0xfe, 0x0d, 0xc8, 0xfe, + 0x10, 0xd8, 0xfe, 0x18, 0x3f, 0xd8, 0x23, 0xfe, 0x16, 0x38, 0x01, 0x23, + 0x37, 0x22, 0x5d, 0x5c, 0xc9, 0xbf, 0x52, 0x4e, 0xc4, 0x49, 0x4e, 0x4b, + 0x45, 0x59, 0xa4, 0x50, 0xc9, 0x46, 0xce, 0x50, 0x4f, 0x49, 0x4e, 0xd4, + 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0xa4, 0x41, 0x54, 0x54, 0xd2, 0x41, + 0xd4, 0x54, 0x41, 0xc2, 0x56, 0x41, 0x4c, 0xa4, 0x43, 0x4f, 0x44, 0xc5, + 0x56, 0x41, 0xcc, 0x4c, 0x45, 0xce, 0x53, 0x49, 0xce, 0x43, 0x4f, 0xd3, + 0x54, 0x41, 0xce, 0x41, 0x53, 0xce, 0x41, 0x43, 0xd3, 0x41, 0x54, 0xce, + 0x4c, 0xce, 0x45, 0x58, 0xd0, 0x49, 0x4e, 0xd4, 0x53, 0x51, 0xd2, 0x53, + 0x47, 0xce, 0x41, 0x42, 0xd3, 0x50, 0x45, 0x45, 0xcb, 0x49, 0xce, 0x55, + 0x53, 0xd2, 0x53, 0x54, 0x52, 0xa4, 0x43, 0x48, 0x52, 0xa4, 0x4e, 0x4f, + 0xd4, 0x42, 0x49, 0xce, 0x4f, 0xd2, 0x41, 0x4e, 0xc4, 0x3c, 0xbd, 0x3e, + 0xbd, 0x3c, 0xbe, 0x4c, 0x49, 0x4e, 0xc5, 0x54, 0x48, 0x45, 0xce, 0x54, + 0xcf, 0x53, 0x54, 0x45, 0xd0, 0x44, 0x45, 0x46, 0x20, 0x46, 0xce, 0x43, + 0x41, 0xd4, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0xd4, 0x4d, 0x4f, 0x56, 0xc5, + 0x45, 0x52, 0x41, 0x53, 0xc5, 0x4f, 0x50, 0x45, 0x4e, 0x20, 0xa3, 0x43, + 0x4c, 0x4f, 0x53, 0x45, 0x20, 0xa3, 0x4d, 0x45, 0x52, 0x47, 0xc5, 0x56, + 0x45, 0x52, 0x49, 0x46, 0xd9, 0x42, 0x45, 0x45, 0xd0, 0x43, 0x49, 0x52, + 0x43, 0x4c, 0xc5, 0x49, 0x4e, 0xcb, 0x50, 0x41, 0x50, 0x45, 0xd2, 0x46, + 0x4c, 0x41, 0x53, 0xc8, 0x42, 0x52, 0x49, 0x47, 0x48, 0xd4, 0x49, 0x4e, + 0x56, 0x45, 0x52, 0x53, 0xc5, 0x4f, 0x56, 0x45, 0xd2, 0x4f, 0x55, 0xd4, + 0x4c, 0x50, 0x52, 0x49, 0x4e, 0xd4, 0x4c, 0x4c, 0x49, 0x53, 0xd4, 0x53, + 0x54, 0x4f, 0xd0, 0x52, 0x45, 0x41, 0xc4, 0x44, 0x41, 0x54, 0xc1, 0x52, + 0x45, 0x53, 0x54, 0x4f, 0x52, 0xc5, 0x4e, 0x45, 0xd7, 0x42, 0x4f, 0x52, + 0x44, 0x45, 0xd2, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0xc5, 0x44, + 0x49, 0xcd, 0x52, 0x45, 0xcd, 0x46, 0x4f, 0xd2, 0x47, 0x4f, 0x20, 0x54, + 0xcf, 0x47, 0x4f, 0x20, 0x53, 0x55, 0xc2, 0x49, 0x4e, 0x50, 0x55, 0xd4, + 0x4c, 0x4f, 0x41, 0xc4, 0x4c, 0x49, 0x53, 0xd4, 0x4c, 0x45, 0xd4, 0x50, + 0x41, 0x55, 0x53, 0xc5, 0x4e, 0x45, 0x58, 0xd4, 0x50, 0x4f, 0x4b, 0xc5, + 0x50, 0x52, 0x49, 0x4e, 0xd4, 0x50, 0x4c, 0x4f, 0xd4, 0x52, 0x55, 0xce, + 0x53, 0x41, 0x56, 0xc5, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x49, 0x5a, + 0xc5, 0x49, 0xc6, 0x43, 0x4c, 0xd3, 0x44, 0x52, 0x41, 0xd7, 0x43, 0x4c, + 0x45, 0x41, 0xd2, 0x52, 0x45, 0x54, 0x55, 0x52, 0xce, 0x43, 0x4f, 0x50, + 0xd9, 0x42, 0x48, 0x59, 0x36, 0x35, 0x54, 0x47, 0x56, 0x4e, 0x4a, 0x55, + 0x37, 0x34, 0x52, 0x46, 0x43, 0x4d, 0x4b, 0x49, 0x38, 0x33, 0x45, 0x44, + 0x58, 0x0e, 0x4c, 0x4f, 0x39, 0x32, 0x57, 0x53, 0x5a, 0x20, 0x0d, 0x50, + 0x30, 0x31, 0x51, 0x41, 0xe3, 0xc4, 0xe0, 0xe4, 0xb4, 0xbc, 0xbd, 0xbb, + 0xaf, 0xb0, 0xb1, 0xc0, 0xa7, 0xa6, 0xbe, 0xad, 0xb2, 0xba, 0xe5, 0xa5, + 0xc2, 0xe1, 0xb3, 0xb9, 0xc1, 0xb8, 0x7e, 0xdc, 0xda, 0x5c, 0xb7, 0x7b, + 0x7d, 0xd8, 0xbf, 0xae, 0xaa, 0xab, 0xdd, 0xde, 0xdf, 0x7f, 0xb5, 0xd6, + 0x7c, 0xd5, 0x5d, 0xdb, 0xb6, 0xd9, 0x5b, 0xd7, 0x0c, 0x07, 0x06, 0x04, + 0x05, 0x08, 0x0a, 0x0b, 0x09, 0x0f, 0xe2, 0x2a, 0x3f, 0xcd, 0xc8, 0xcc, + 0xcb, 0x5e, 0xac, 0x2d, 0x2b, 0x3d, 0x2e, 0x2c, 0x3b, 0x22, 0xc7, 0x3c, + 0xc3, 0x3e, 0xc5, 0x2f, 0xc9, 0x60, 0xc6, 0x3a, 0xd0, 0xce, 0xa8, 0xca, + 0xd3, 0xd4, 0xd1, 0xd2, 0xa9, 0xcf, 0x2e, 0x2f, 0x11, 0xff, 0xff, 0x01, + 0xfe, 0xfe, 0xed, 0x78, 0x2f, 0xe6, 0x1f, 0x28, 0x0e, 0x67, 0x7d, 0x14, + 0xc0, 0xd6, 0x08, 0xcb, 0x3c, 0x30, 0xfa, 0x53, 0x5f, 0x20, 0xf4, 0x2d, + 0xcb, 0x00, 0x38, 0xe6, 0x7a, 0x3c, 0xc8, 0xfe, 0x28, 0xc8, 0xfe, 0x19, + 0xc8, 0x7b, 0x5a, 0x57, 0xfe, 0x18, 0xc9, 0xcd, 0x8e, 0x02, 0xc0, 0x21, + 0x00, 0x5c, 0xcb, 0x7e, 0x20, 0x07, 0x23, 0x35, 0x2b, 0x20, 0x02, 0x36, + 0xff, 0x7d, 0x21, 0x04, 0x5c, 0xbd, 0x20, 0xee, 0xcd, 0x1e, 0x03, 0xd0, + 0x21, 0x00, 0x5c, 0xbe, 0x28, 0x2e, 0xeb, 0x21, 0x04, 0x5c, 0xbe, 0x28, + 0x27, 0xcb, 0x7e, 0x20, 0x04, 0xeb, 0xcb, 0x7e, 0xc8, 0x5f, 0x77, 0x23, + 0x36, 0x05, 0x23, 0x3a, 0x09, 0x5c, 0x77, 0x23, 0xfd, 0x4e, 0x07, 0xfd, + 0x56, 0x01, 0xe5, 0xcd, 0x33, 0x03, 0xe1, 0x77, 0x32, 0x08, 0x5c, 0xfd, + 0xcb, 0x01, 0xee, 0xc9, 0x23, 0x36, 0x05, 0x23, 0x35, 0xc0, 0x3a, 0x0a, + 0x5c, 0x77, 0x23, 0x7e, 0x18, 0xea, 0x42, 0x16, 0x00, 0x7b, 0xfe, 0x27, + 0xd0, 0xfe, 0x18, 0x20, 0x03, 0xcb, 0x78, 0xc0, 0x21, 0x05, 0x02, 0x19, + 0x7e, 0x37, 0xc9, 0x7b, 0xfe, 0x3a, 0x38, 0x2f, 0x0d, 0xfa, 0x4f, 0x03, + 0x28, 0x03, 0xc6, 0x4f, 0xc9, 0x21, 0xeb, 0x01, 0x04, 0x28, 0x03, 0x21, + 0x05, 0x02, 0x16, 0x00, 0x19, 0x7e, 0xc9, 0x21, 0x29, 0x02, 0xcb, 0x40, + 0x28, 0xf4, 0xcb, 0x5a, 0x28, 0x0a, 0xfd, 0xcb, 0x30, 0x5e, 0xc0, 0x04, + 0xc0, 0xc6, 0x20, 0xc9, 0xc6, 0xa5, 0xc9, 0xfe, 0x30, 0xd8, 0x0d, 0xfa, + 0x9d, 0x03, 0x20, 0x19, 0x21, 0x54, 0x02, 0xcb, 0x68, 0x28, 0xd3, 0xfe, + 0x38, 0x30, 0x07, 0xd6, 0x20, 0x04, 0xc8, 0xc6, 0x08, 0xc9, 0xd6, 0x36, + 0x04, 0xc8, 0xc6, 0xfe, 0xc9, 0x21, 0x30, 0x02, 0xfe, 0x39, 0x28, 0xba, + 0xfe, 0x30, 0x28, 0xb6, 0xe6, 0x07, 0xc6, 0x80, 0x04, 0xc8, 0xee, 0x0f, + 0xc9, 0x04, 0xc8, 0xcb, 0x68, 0x21, 0x30, 0x02, 0x20, 0xa4, 0xd6, 0x10, + 0xfe, 0x22, 0x28, 0x06, 0xfe, 0x20, 0xc0, 0x3e, 0x5f, 0xc9, 0x3e, 0x40, + 0xc9, 0xf3, 0x7d, 0xcb, 0x3d, 0xcb, 0x3d, 0x2f, 0xe6, 0x03, 0x4f, 0x06, + 0x00, 0xdd, 0x21, 0xd1, 0x03, 0xdd, 0x09, 0x3a, 0x48, 0x5c, 0xe6, 0x38, + 0x0f, 0x0f, 0x0f, 0xf6, 0x08, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x0d, 0x20, + 0xfd, 0x0e, 0x3f, 0x05, 0xc2, 0xd6, 0x03, 0xee, 0x10, 0xd3, 0xfe, 0x44, + 0x4f, 0xcb, 0x67, 0x20, 0x09, 0x7a, 0xb3, 0x28, 0x09, 0x79, 0x4d, 0x1b, + 0xdd, 0xe9, 0x4d, 0x0c, 0xdd, 0xe9, 0xfb, 0xc9, 0xef, 0x31, 0x27, 0xc0, + 0x03, 0x34, 0xec, 0x6c, 0x98, 0x1f, 0xf5, 0x04, 0xa1, 0x0f, 0x38, 0x21, + 0x92, 0x5c, 0x7e, 0xa7, 0x20, 0x5e, 0x23, 0x4e, 0x23, 0x46, 0x78, 0x17, + 0x9f, 0xb9, 0x20, 0x54, 0x23, 0xbe, 0x20, 0x50, 0x78, 0xc6, 0x3c, 0xf2, + 0x25, 0x04, 0xe2, 0x6c, 0x04, 0x06, 0xfa, 0x04, 0xd6, 0x0c, 0x30, 0xfb, + 0xc6, 0x0c, 0xc5, 0x21, 0x6e, 0x04, 0xcd, 0x06, 0x34, 0xcd, 0xb4, 0x33, + 0xef, 0x04, 0x38, 0xf1, 0x86, 0x77, 0xef, 0xc0, 0x02, 0x31, 0x38, 0xcd, + 0x94, 0x1e, 0xfe, 0x0b, 0x30, 0x22, 0xef, 0xe0, 0x04, 0xe0, 0x34, 0x80, + 0x43, 0x55, 0x9f, 0x80, 0x01, 0x05, 0x34, 0x35, 0x71, 0x03, 0x38, 0xcd, + 0x99, 0x1e, 0xc5, 0xcd, 0x99, 0x1e, 0xe1, 0x50, 0x59, 0x7a, 0xb3, 0xc8, + 0x1b, 0xc3, 0xb5, 0x03, 0xcf, 0x0a, 0x89, 0x02, 0xd0, 0x12, 0x86, 0x89, + 0x0a, 0x97, 0x60, 0x75, 0x89, 0x12, 0xd5, 0x17, 0x1f, 0x89, 0x1b, 0x90, + 0x41, 0x02, 0x89, 0x24, 0xd0, 0x53, 0xca, 0x89, 0x2e, 0x9d, 0x36, 0xb1, + 0x89, 0x38, 0xff, 0x49, 0x3e, 0x89, 0x43, 0xff, 0x6a, 0x73, 0x89, 0x4f, + 0xa7, 0x00, 0x54, 0x89, 0x5c, 0x00, 0x00, 0x00, 0x89, 0x69, 0x14, 0xf6, + 0x24, 0x89, 0x76, 0xf1, 0x10, 0x05, 0xcd, 0xfb, 0x24, 0x3a, 0x3b, 0x5c, + 0x87, 0xfa, 0x8a, 0x1c, 0xe1, 0xd0, 0xe5, 0xcd, 0xf1, 0x2b, 0x62, 0x6b, + 0x0d, 0xf8, 0x09, 0xcb, 0xfe, 0xc9, 0x21, 0x3f, 0x05, 0xe5, 0x21, 0x80, + 0x1f, 0xcb, 0x7f, 0x28, 0x03, 0x21, 0x98, 0x0c, 0x08, 0x13, 0xdd, 0x2b, + 0xf3, 0x3e, 0x02, 0x47, 0x10, 0xfe, 0xd3, 0xfe, 0xee, 0x0f, 0x06, 0xa4, + 0x2d, 0x20, 0xf5, 0x05, 0x25, 0xf2, 0xd8, 0x04, 0x06, 0x2f, 0x10, 0xfe, + 0xd3, 0xfe, 0x3e, 0x0d, 0x06, 0x37, 0x10, 0xfe, 0xd3, 0xfe, 0x01, 0x0e, + 0x3b, 0x08, 0x6f, 0xc3, 0x07, 0x05, 0x7a, 0xb3, 0x28, 0x0c, 0xdd, 0x6e, + 0x00, 0x7c, 0xad, 0x67, 0x3e, 0x01, 0x37, 0xc3, 0x25, 0x05, 0x6c, 0x18, + 0xf4, 0x79, 0xcb, 0x78, 0x10, 0xfe, 0x30, 0x04, 0x06, 0x42, 0x10, 0xfe, + 0xd3, 0xfe, 0x06, 0x3e, 0x20, 0xef, 0x05, 0xaf, 0x3c, 0xcb, 0x15, 0xc2, + 0x14, 0x05, 0x1b, 0xdd, 0x23, 0x06, 0x31, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, + 0xd0, 0x7a, 0x3c, 0xc2, 0xfe, 0x04, 0x06, 0x3b, 0x10, 0xfe, 0xc9, 0xf5, + 0x3a, 0x48, 0x5c, 0xe6, 0x38, 0x0f, 0x0f, 0x0f, 0xd3, 0xfe, 0x3e, 0x7f, + 0xdb, 0xfe, 0x1f, 0xfb, 0x38, 0x02, 0xcf, 0x0c, 0xf1, 0xc9, 0x14, 0x08, + 0x15, 0xf3, 0x3e, 0x0f, 0xd3, 0xfe, 0x21, 0x3f, 0x05, 0xe5, 0xdb, 0xfe, + 0x1f, 0xe6, 0x20, 0xf6, 0x02, 0x4f, 0xbf, 0xc0, 0xcd, 0xe7, 0x05, 0x30, + 0xfa, 0x21, 0x15, 0x04, 0x10, 0xfe, 0x2b, 0x7c, 0xb5, 0x20, 0xf9, 0xcd, + 0xe3, 0x05, 0x30, 0xeb, 0x06, 0x9c, 0xcd, 0xe3, 0x05, 0x30, 0xe4, 0x3e, + 0xc6, 0xb8, 0x30, 0xe0, 0x24, 0x20, 0xf1, 0x06, 0xc9, 0xcd, 0xe7, 0x05, + 0x30, 0xd5, 0x78, 0xfe, 0xd4, 0x30, 0xf4, 0xcd, 0xe7, 0x05, 0xd0, 0x79, + 0xee, 0x03, 0x4f, 0x26, 0x00, 0x06, 0xb0, 0x18, 0x1f, 0x08, 0x20, 0x07, + 0x30, 0x0f, 0xdd, 0x75, 0x00, 0x18, 0x0f, 0xcb, 0x11, 0xad, 0xc0, 0x79, + 0x1f, 0x4f, 0x13, 0x18, 0x07, 0xdd, 0x7e, 0x00, 0xad, 0xc0, 0xdd, 0x23, + 0x1b, 0x08, 0x06, 0xb2, 0x2e, 0x01, 0xcd, 0xe3, 0x05, 0xd0, 0x3e, 0xcb, + 0xb8, 0xcb, 0x15, 0x06, 0xb0, 0xd2, 0xca, 0x05, 0x7c, 0xad, 0x67, 0x7a, + 0xb3, 0x20, 0xca, 0x7c, 0xfe, 0x01, 0xc9, 0xcd, 0xe7, 0x05, 0xd0, 0x3e, + 0x16, 0x3d, 0x20, 0xfd, 0xa7, 0x04, 0xc8, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, + 0xd0, 0xa9, 0xe6, 0x20, 0x28, 0xf3, 0x79, 0x2f, 0x4f, 0xe6, 0x07, 0xf6, + 0x08, 0xd3, 0xfe, 0x37, 0xc9, 0xf1, 0x3a, 0x74, 0x5c, 0xd6, 0xe0, 0x32, + 0x74, 0x5c, 0xcd, 0x8c, 0x1c, 0xcd, 0x30, 0x25, 0x28, 0x3c, 0x01, 0x11, + 0x00, 0x3a, 0x74, 0x5c, 0xa7, 0x28, 0x02, 0x0e, 0x22, 0xf7, 0xd5, 0xdd, + 0xe1, 0x06, 0x0b, 0x3e, 0x20, 0x12, 0x13, 0x10, 0xfc, 0xdd, 0x36, 0x01, + 0xff, 0xcd, 0xf1, 0x2b, 0x21, 0xf6, 0xff, 0x0b, 0x09, 0x03, 0x30, 0x0f, + 0x3a, 0x74, 0x5c, 0xa7, 0x20, 0x02, 0xcf, 0x0e, 0x78, 0xb1, 0x28, 0x0a, + 0x01, 0x0a, 0x00, 0xdd, 0xe5, 0xe1, 0x23, 0xeb, 0xed, 0xb0, 0xdf, 0xfe, + 0xe4, 0x20, 0x49, 0x3a, 0x74, 0x5c, 0xfe, 0x03, 0xca, 0x8a, 0x1c, 0xe7, + 0xcd, 0xb2, 0x28, 0xcb, 0xf9, 0x30, 0x0b, 0x21, 0x00, 0x00, 0x3a, 0x74, + 0x5c, 0x3d, 0x28, 0x15, 0xcf, 0x01, 0xc2, 0x8a, 0x1c, 0xcd, 0x30, 0x25, + 0x28, 0x18, 0x23, 0x7e, 0xdd, 0x77, 0x0b, 0x23, 0x7e, 0xdd, 0x77, 0x0c, + 0x23, 0xdd, 0x71, 0x0e, 0x3e, 0x01, 0xcb, 0x71, 0x28, 0x01, 0x3c, 0xdd, + 0x77, 0x00, 0xeb, 0xe7, 0xfe, 0x29, 0x20, 0xda, 0xe7, 0xcd, 0xee, 0x1b, + 0xeb, 0xc3, 0x5a, 0x07, 0xfe, 0xaa, 0x20, 0x1f, 0x3a, 0x74, 0x5c, 0xfe, + 0x03, 0xca, 0x8a, 0x1c, 0xe7, 0xcd, 0xee, 0x1b, 0xdd, 0x36, 0x0b, 0x00, + 0xdd, 0x36, 0x0c, 0x1b, 0x21, 0x00, 0x40, 0xdd, 0x75, 0x0d, 0xdd, 0x74, + 0x0e, 0x18, 0x4d, 0xfe, 0xaf, 0x20, 0x4f, 0x3a, 0x74, 0x5c, 0xfe, 0x03, + 0xca, 0x8a, 0x1c, 0xe7, 0xcd, 0x48, 0x20, 0x20, 0x0c, 0x3a, 0x74, 0x5c, + 0xa7, 0xca, 0x8a, 0x1c, 0xcd, 0xe6, 0x1c, 0x18, 0x0f, 0xcd, 0x82, 0x1c, + 0xdf, 0xfe, 0x2c, 0x28, 0x0c, 0x3a, 0x74, 0x5c, 0xa7, 0xca, 0x8a, 0x1c, + 0xcd, 0xe6, 0x1c, 0x18, 0x04, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xee, 0x1b, + 0xcd, 0x99, 0x1e, 0xdd, 0x71, 0x0b, 0xdd, 0x70, 0x0c, 0xcd, 0x99, 0x1e, + 0xdd, 0x71, 0x0d, 0xdd, 0x70, 0x0e, 0x60, 0x69, 0xdd, 0x36, 0x00, 0x03, + 0x18, 0x44, 0xfe, 0xca, 0x28, 0x09, 0xcd, 0xee, 0x1b, 0xdd, 0x36, 0x0e, + 0x80, 0x18, 0x17, 0x3a, 0x74, 0x5c, 0xa7, 0xc2, 0x8a, 0x1c, 0xe7, 0xcd, + 0x82, 0x1c, 0xcd, 0xee, 0x1b, 0xcd, 0x99, 0x1e, 0xdd, 0x71, 0x0d, 0xdd, + 0x70, 0x0e, 0xdd, 0x36, 0x00, 0x00, 0x2a, 0x59, 0x5c, 0xed, 0x5b, 0x53, + 0x5c, 0x37, 0xed, 0x52, 0xdd, 0x75, 0x0b, 0xdd, 0x74, 0x0c, 0x2a, 0x4b, + 0x5c, 0xed, 0x52, 0xdd, 0x75, 0x0f, 0xdd, 0x74, 0x10, 0xeb, 0x3a, 0x74, + 0x5c, 0xa7, 0xca, 0x70, 0x09, 0xe5, 0x01, 0x11, 0x00, 0xdd, 0x09, 0xdd, + 0xe5, 0x11, 0x11, 0x00, 0xaf, 0x37, 0xcd, 0x56, 0x05, 0xdd, 0xe1, 0x30, + 0xf2, 0x3e, 0xfe, 0xcd, 0x01, 0x16, 0xfd, 0x36, 0x52, 0x03, 0x0e, 0x80, + 0xdd, 0x7e, 0x00, 0xdd, 0xbe, 0xef, 0x20, 0x02, 0x0e, 0xf6, 0xfe, 0x04, + 0x30, 0xd9, 0x11, 0xc0, 0x09, 0xc5, 0xcd, 0x0a, 0x0c, 0xc1, 0xdd, 0xe5, + 0xd1, 0x21, 0xf0, 0xff, 0x19, 0x06, 0x0a, 0x7e, 0x3c, 0x20, 0x03, 0x79, + 0x80, 0x4f, 0x13, 0x1a, 0xbe, 0x23, 0x20, 0x01, 0x0c, 0xd7, 0x10, 0xf6, + 0xcb, 0x79, 0x20, 0xb3, 0x3e, 0x0d, 0xd7, 0xe1, 0xdd, 0x7e, 0x00, 0xfe, + 0x03, 0x28, 0x0c, 0x3a, 0x74, 0x5c, 0x3d, 0xca, 0x08, 0x08, 0xfe, 0x02, + 0xca, 0xb6, 0x08, 0xe5, 0xdd, 0x6e, 0xfa, 0xdd, 0x66, 0xfb, 0xdd, 0x5e, + 0x0b, 0xdd, 0x56, 0x0c, 0x7c, 0xb5, 0x28, 0x0d, 0xed, 0x52, 0x38, 0x26, + 0x28, 0x07, 0xdd, 0x7e, 0x00, 0xfe, 0x03, 0x20, 0x1d, 0xe1, 0x7c, 0xb5, + 0x20, 0x06, 0xdd, 0x6e, 0x0d, 0xdd, 0x66, 0x0e, 0xe5, 0xdd, 0xe1, 0x3a, + 0x74, 0x5c, 0xfe, 0x02, 0x37, 0x20, 0x01, 0xa7, 0x3e, 0xff, 0xcd, 0x56, + 0x05, 0xd8, 0xcf, 0x1a, 0xdd, 0x5e, 0x0b, 0xdd, 0x56, 0x0c, 0xe5, 0x7c, + 0xb5, 0x20, 0x06, 0x13, 0x13, 0x13, 0xeb, 0x18, 0x0c, 0xdd, 0x6e, 0xfa, + 0xdd, 0x66, 0xfb, 0xeb, 0x37, 0xed, 0x52, 0x38, 0x09, 0x11, 0x05, 0x00, + 0x19, 0x44, 0x4d, 0xcd, 0x05, 0x1f, 0xe1, 0xdd, 0x7e, 0x00, 0xa7, 0x28, + 0x3e, 0x7c, 0xb5, 0x28, 0x13, 0x2b, 0x46, 0x2b, 0x4e, 0x2b, 0x03, 0x03, + 0x03, 0xdd, 0x22, 0x5f, 0x5c, 0xcd, 0xe8, 0x19, 0xdd, 0x2a, 0x5f, 0x5c, + 0x2a, 0x59, 0x5c, 0x2b, 0xdd, 0x4e, 0x0b, 0xdd, 0x46, 0x0c, 0xc5, 0x03, + 0x03, 0x03, 0xdd, 0x7e, 0xfd, 0xf5, 0xcd, 0x55, 0x16, 0x23, 0xf1, 0x77, + 0xd1, 0x23, 0x73, 0x23, 0x72, 0x23, 0xe5, 0xdd, 0xe1, 0x37, 0x3e, 0xff, + 0xc3, 0x02, 0x08, 0xeb, 0x2a, 0x59, 0x5c, 0x2b, 0xdd, 0x22, 0x5f, 0x5c, + 0xdd, 0x4e, 0x0b, 0xdd, 0x46, 0x0c, 0xc5, 0xcd, 0xe5, 0x19, 0xc1, 0xe5, + 0xc5, 0xcd, 0x55, 0x16, 0xdd, 0x2a, 0x5f, 0x5c, 0x23, 0xdd, 0x4e, 0x0f, + 0xdd, 0x46, 0x10, 0x09, 0x22, 0x4b, 0x5c, 0xdd, 0x66, 0x0e, 0x7c, 0xe6, + 0xc0, 0x20, 0x0a, 0xdd, 0x6e, 0x0d, 0x22, 0x42, 0x5c, 0xfd, 0x36, 0x0a, + 0x00, 0xd1, 0xdd, 0xe1, 0x37, 0x3e, 0xff, 0xc3, 0x02, 0x08, 0xdd, 0x4e, + 0x0b, 0xdd, 0x46, 0x0c, 0xc5, 0x03, 0xf7, 0x36, 0x80, 0xeb, 0xd1, 0xe5, + 0xe5, 0xdd, 0xe1, 0x37, 0x3e, 0xff, 0xcd, 0x02, 0x08, 0xe1, 0xed, 0x5b, + 0x53, 0x5c, 0x7e, 0xe6, 0xc0, 0x20, 0x19, 0x1a, 0x13, 0xbe, 0x23, 0x20, + 0x02, 0x1a, 0xbe, 0x1b, 0x2b, 0x30, 0x08, 0xe5, 0xeb, 0xcd, 0xb8, 0x19, + 0xe1, 0x18, 0xec, 0xcd, 0x2c, 0x09, 0x18, 0xe2, 0x7e, 0x4f, 0xfe, 0x80, + 0xc8, 0xe5, 0x2a, 0x4b, 0x5c, 0x7e, 0xfe, 0x80, 0x28, 0x25, 0xb9, 0x28, + 0x08, 0xc5, 0xcd, 0xb8, 0x19, 0xc1, 0xeb, 0x18, 0xf0, 0xe6, 0xe0, 0xfe, + 0xa0, 0x20, 0x12, 0xd1, 0xd5, 0xe5, 0x23, 0x13, 0x1a, 0xbe, 0x20, 0x06, + 0x17, 0x30, 0xf7, 0xe1, 0x18, 0x03, 0xe1, 0x18, 0xe0, 0x3e, 0xff, 0xd1, + 0xeb, 0x3c, 0x37, 0xcd, 0x2c, 0x09, 0x18, 0xc4, 0x20, 0x10, 0x08, 0x22, + 0x5f, 0x5c, 0xeb, 0xcd, 0xb8, 0x19, 0xcd, 0xe8, 0x19, 0xeb, 0x2a, 0x5f, + 0x5c, 0x08, 0x08, 0xd5, 0xcd, 0xb8, 0x19, 0x22, 0x5f, 0x5c, 0x2a, 0x53, + 0x5c, 0xe3, 0xc5, 0x08, 0x38, 0x07, 0x2b, 0xcd, 0x55, 0x16, 0x23, 0x18, + 0x03, 0xcd, 0x55, 0x16, 0x23, 0xc1, 0xd1, 0xed, 0x53, 0x53, 0x5c, 0xed, + 0x5b, 0x5f, 0x5c, 0xc5, 0xd5, 0xeb, 0xed, 0xb0, 0xe1, 0xc1, 0xd5, 0xcd, + 0xe8, 0x19, 0xd1, 0xc9, 0xe5, 0x3e, 0xfd, 0xcd, 0x01, 0x16, 0xaf, 0x11, + 0xa1, 0x09, 0xcd, 0x0a, 0x0c, 0xfd, 0xcb, 0x02, 0xee, 0xcd, 0xd4, 0x15, + 0xdd, 0xe5, 0x11, 0x11, 0x00, 0xaf, 0xcd, 0xc2, 0x04, 0xdd, 0xe1, 0x06, + 0x32, 0x76, 0x10, 0xfd, 0xdd, 0x5e, 0x0b, 0xdd, 0x56, 0x0c, 0x3e, 0xff, + 0xdd, 0xe1, 0xc3, 0xc2, 0x04, 0x80, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, + 0x74, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, + 0xae, 0x0d, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x3a, 0xa0, 0x0d, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3a, 0xa0, 0x0d, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, + 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0xa0, 0x0d, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x3a, 0xa0, 0xcd, 0x03, 0x0b, 0xfe, 0x20, 0xd2, 0xd9, 0x0a, + 0xfe, 0x06, 0x38, 0x69, 0xfe, 0x18, 0x30, 0x65, 0x21, 0x0b, 0x0a, 0x5f, + 0x16, 0x00, 0x19, 0x5e, 0x19, 0xe5, 0xc3, 0x03, 0x0b, 0x4e, 0x57, 0x10, + 0x29, 0x54, 0x53, 0x52, 0x37, 0x50, 0x4f, 0x5f, 0x5e, 0x5d, 0x5c, 0x5b, + 0x5a, 0x54, 0x53, 0x0c, 0x3e, 0x22, 0xb9, 0x20, 0x11, 0xfd, 0xcb, 0x01, + 0x4e, 0x20, 0x09, 0x04, 0x0e, 0x02, 0x3e, 0x18, 0xb8, 0x20, 0x03, 0x05, + 0x0e, 0x21, 0xc3, 0xd9, 0x0d, 0x3a, 0x91, 0x5c, 0xf5, 0xfd, 0x36, 0x57, + 0x01, 0x3e, 0x20, 0xcd, 0x65, 0x0b, 0xf1, 0x32, 0x91, 0x5c, 0xc9, 0xfd, + 0xcb, 0x01, 0x4e, 0xc2, 0xcd, 0x0e, 0x0e, 0x21, 0xcd, 0x55, 0x0c, 0x05, + 0xc3, 0xd9, 0x0d, 0xcd, 0x03, 0x0b, 0x79, 0x3d, 0x3d, 0xe6, 0x10, 0x18, + 0x5a, 0x3e, 0x3f, 0x18, 0x6c, 0x11, 0x87, 0x0a, 0x32, 0x0f, 0x5c, 0x18, + 0x0b, 0x11, 0x6d, 0x0a, 0x18, 0x03, 0x11, 0x87, 0x0a, 0x32, 0x0e, 0x5c, + 0x2a, 0x51, 0x5c, 0x73, 0x23, 0x72, 0xc9, 0x11, 0xf4, 0x09, 0xcd, 0x80, + 0x0a, 0x2a, 0x0e, 0x5c, 0x57, 0x7d, 0xfe, 0x16, 0xda, 0x11, 0x22, 0x20, + 0x29, 0x44, 0x4a, 0x3e, 0x1f, 0x91, 0x38, 0x0c, 0xc6, 0x02, 0x4f, 0xfd, + 0xcb, 0x01, 0x4e, 0x20, 0x16, 0x3e, 0x16, 0x90, 0xda, 0x9f, 0x1e, 0x3c, + 0x47, 0x04, 0xfd, 0xcb, 0x02, 0x46, 0xc2, 0x55, 0x0c, 0xfd, 0xbe, 0x31, + 0xda, 0x86, 0x0c, 0xc3, 0xd9, 0x0d, 0x7c, 0xcd, 0x03, 0x0b, 0x81, 0x3d, + 0xe6, 0x1f, 0xc8, 0x57, 0xfd, 0xcb, 0x01, 0xc6, 0x3e, 0x20, 0xcd, 0x3b, + 0x0c, 0x15, 0x20, 0xf8, 0xc9, 0xcd, 0x24, 0x0b, 0xfd, 0xcb, 0x01, 0x4e, + 0x20, 0x1a, 0xfd, 0xcb, 0x02, 0x46, 0x20, 0x08, 0xed, 0x43, 0x88, 0x5c, + 0x22, 0x84, 0x5c, 0xc9, 0xed, 0x43, 0x8a, 0x5c, 0xed, 0x43, 0x82, 0x5c, + 0x22, 0x86, 0x5c, 0xc9, 0xfd, 0x71, 0x45, 0x22, 0x80, 0x5c, 0xc9, 0xfd, + 0xcb, 0x01, 0x4e, 0x20, 0x14, 0xed, 0x4b, 0x88, 0x5c, 0x2a, 0x84, 0x5c, + 0xfd, 0xcb, 0x02, 0x46, 0xc8, 0xed, 0x4b, 0x8a, 0x5c, 0x2a, 0x86, 0x5c, + 0xc9, 0xfd, 0x4e, 0x45, 0x2a, 0x80, 0x5c, 0xc9, 0xfe, 0x80, 0x38, 0x3d, + 0xfe, 0x90, 0x30, 0x26, 0x47, 0xcd, 0x38, 0x0b, 0xcd, 0x03, 0x0b, 0x11, + 0x92, 0x5c, 0x18, 0x47, 0x21, 0x92, 0x5c, 0xcd, 0x3e, 0x0b, 0xcb, 0x18, + 0x9f, 0xe6, 0x0f, 0x4f, 0xcb, 0x18, 0x9f, 0xe6, 0xf0, 0xb1, 0x0e, 0x04, + 0x77, 0x23, 0x0d, 0x20, 0xfb, 0xc9, 0xd6, 0xa5, 0x30, 0x09, 0xc6, 0x15, + 0xc5, 0xed, 0x4b, 0x7b, 0x5c, 0x18, 0x0b, 0xcd, 0x10, 0x0c, 0xc3, 0x03, + 0x0b, 0xc5, 0xed, 0x4b, 0x36, 0x5c, 0xeb, 0x21, 0x3b, 0x5c, 0xcb, 0x86, + 0xfe, 0x20, 0x20, 0x02, 0xcb, 0xc6, 0x26, 0x00, 0x6f, 0x29, 0x29, 0x29, + 0x09, 0xc1, 0xeb, 0x79, 0x3d, 0x3e, 0x21, 0x20, 0x0e, 0x05, 0x4f, 0xfd, + 0xcb, 0x01, 0x4e, 0x28, 0x06, 0xd5, 0xcd, 0xcd, 0x0e, 0xd1, 0x79, 0xb9, + 0xd5, 0xcc, 0x55, 0x0c, 0xd1, 0xc5, 0xe5, 0x3a, 0x91, 0x5c, 0x06, 0xff, + 0x1f, 0x38, 0x01, 0x04, 0x1f, 0x1f, 0x9f, 0x4f, 0x3e, 0x08, 0xa7, 0xfd, + 0xcb, 0x01, 0x4e, 0x28, 0x05, 0xfd, 0xcb, 0x30, 0xce, 0x37, 0xeb, 0x08, + 0x1a, 0xa0, 0xae, 0xa9, 0x12, 0x08, 0x38, 0x13, 0x14, 0x23, 0x3d, 0x20, + 0xf2, 0xeb, 0x25, 0xfd, 0xcb, 0x01, 0x4e, 0xcc, 0xdb, 0x0b, 0xe1, 0xc1, + 0x0d, 0x23, 0xc9, 0x08, 0x3e, 0x20, 0x83, 0x5f, 0x08, 0x18, 0xe6, 0x7c, + 0x0f, 0x0f, 0x0f, 0xe6, 0x03, 0xf6, 0x58, 0x67, 0xed, 0x5b, 0x8f, 0x5c, + 0x7e, 0xab, 0xa2, 0xab, 0xfd, 0xcb, 0x57, 0x76, 0x28, 0x08, 0xe6, 0xc7, + 0xcb, 0x57, 0x20, 0x02, 0xee, 0x38, 0xfd, 0xcb, 0x57, 0x66, 0x28, 0x08, + 0xe6, 0xf8, 0xcb, 0x6f, 0x20, 0x02, 0xee, 0x07, 0x77, 0xc9, 0xe5, 0x26, + 0x00, 0xe3, 0x18, 0x04, 0x11, 0x95, 0x00, 0xf5, 0xcd, 0x41, 0x0c, 0x38, + 0x09, 0x3e, 0x20, 0xfd, 0xcb, 0x01, 0x46, 0xcc, 0x3b, 0x0c, 0x1a, 0xe6, + 0x7f, 0xcd, 0x3b, 0x0c, 0x1a, 0x13, 0x87, 0x30, 0xf5, 0xd1, 0xfe, 0x48, + 0x28, 0x03, 0xfe, 0x82, 0xd8, 0x7a, 0xfe, 0x03, 0xd8, 0x3e, 0x20, 0xd5, + 0xd9, 0xd7, 0xd9, 0xd1, 0xc9, 0xf5, 0xeb, 0x3c, 0xcb, 0x7e, 0x23, 0x28, + 0xfb, 0x3d, 0x20, 0xf8, 0xeb, 0xf1, 0xfe, 0x20, 0xd8, 0x1a, 0xd6, 0x41, + 0xc9, 0xfd, 0xcb, 0x01, 0x4e, 0xc0, 0x11, 0xd9, 0x0d, 0xd5, 0x78, 0xfd, + 0xcb, 0x02, 0x46, 0xc2, 0x02, 0x0d, 0xfd, 0xbe, 0x31, 0x38, 0x1b, 0xc0, + 0xfd, 0xcb, 0x02, 0x66, 0x28, 0x16, 0xfd, 0x5e, 0x2d, 0x1d, 0x28, 0x5a, + 0x3e, 0x00, 0xcd, 0x01, 0x16, 0xed, 0x7b, 0x3f, 0x5c, 0xfd, 0xcb, 0x02, + 0xa6, 0xc9, 0xcf, 0x04, 0xfd, 0x35, 0x52, 0x20, 0x45, 0x3e, 0x18, 0x90, + 0x32, 0x8c, 0x5c, 0x2a, 0x8f, 0x5c, 0xe5, 0x3a, 0x91, 0x5c, 0xf5, 0x3e, + 0xfd, 0xcd, 0x01, 0x16, 0xaf, 0x11, 0xf8, 0x0c, 0xcd, 0x0a, 0x0c, 0xfd, + 0xcb, 0x02, 0xee, 0x21, 0x3b, 0x5c, 0xcb, 0xde, 0xcb, 0xae, 0xd9, 0xcd, + 0xd4, 0x15, 0xd9, 0xfe, 0x20, 0x28, 0x45, 0xfe, 0xe2, 0x28, 0x41, 0xf6, + 0x20, 0xfe, 0x6e, 0x28, 0x3b, 0x3e, 0xfe, 0xcd, 0x01, 0x16, 0xf1, 0x32, + 0x91, 0x5c, 0xe1, 0x22, 0x8f, 0x5c, 0xcd, 0xfe, 0x0d, 0xfd, 0x46, 0x31, + 0x04, 0x0e, 0x21, 0xc5, 0xcd, 0x9b, 0x0e, 0x7c, 0x0f, 0x0f, 0x0f, 0xe6, + 0x03, 0xf6, 0x58, 0x67, 0x11, 0xe0, 0x5a, 0x1a, 0x4e, 0x06, 0x20, 0xeb, + 0x12, 0x71, 0x13, 0x23, 0x10, 0xfa, 0xc1, 0xc9, 0x80, 0x73, 0x63, 0x72, + 0x6f, 0x6c, 0x6c, 0xbf, 0xcf, 0x0c, 0xfe, 0x02, 0x38, 0x80, 0xfd, 0x86, + 0x31, 0xd6, 0x19, 0xd0, 0xed, 0x44, 0xc5, 0x47, 0x2a, 0x8f, 0x5c, 0xe5, + 0x2a, 0x91, 0x5c, 0xe5, 0xcd, 0x4d, 0x0d, 0x78, 0xf5, 0x21, 0x6b, 0x5c, + 0x46, 0x78, 0x3c, 0x77, 0x21, 0x89, 0x5c, 0xbe, 0x38, 0x03, 0x34, 0x06, + 0x18, 0xcd, 0x00, 0x0e, 0xf1, 0x3d, 0x20, 0xe8, 0xe1, 0xfd, 0x75, 0x57, + 0xe1, 0x22, 0x8f, 0x5c, 0xed, 0x4b, 0x88, 0x5c, 0xfd, 0xcb, 0x02, 0x86, + 0xcd, 0xd9, 0x0d, 0xfd, 0xcb, 0x02, 0xc6, 0xc1, 0xc9, 0xaf, 0x2a, 0x8d, + 0x5c, 0xfd, 0xcb, 0x02, 0x46, 0x28, 0x04, 0x67, 0xfd, 0x6e, 0x0e, 0x22, + 0x8f, 0x5c, 0x21, 0x91, 0x5c, 0x20, 0x02, 0x7e, 0x0f, 0xae, 0xe6, 0x55, + 0xae, 0x77, 0xc9, 0xcd, 0xaf, 0x0d, 0x21, 0x3c, 0x5c, 0xcb, 0xae, 0xcb, + 0xc6, 0xcd, 0x4d, 0x0d, 0xfd, 0x46, 0x31, 0xcd, 0x44, 0x0e, 0x21, 0xc0, + 0x5a, 0x3a, 0x8d, 0x5c, 0x05, 0x18, 0x07, 0x0e, 0x20, 0x2b, 0x77, 0x0d, + 0x20, 0xfb, 0x10, 0xf7, 0xfd, 0x36, 0x31, 0x02, 0x3e, 0xfd, 0xcd, 0x01, + 0x16, 0x2a, 0x51, 0x5c, 0x11, 0xf4, 0x09, 0xa7, 0x73, 0x23, 0x72, 0x23, + 0x11, 0xa8, 0x10, 0x3f, 0x38, 0xf6, 0x01, 0x21, 0x17, 0x18, 0x2a, 0x21, + 0x00, 0x00, 0x22, 0x7d, 0x5c, 0xfd, 0xcb, 0x30, 0x86, 0xcd, 0x94, 0x0d, + 0x3e, 0xfe, 0xcd, 0x01, 0x16, 0xcd, 0x4d, 0x0d, 0x06, 0x18, 0xcd, 0x44, + 0x0e, 0x2a, 0x51, 0x5c, 0x11, 0xf4, 0x09, 0x73, 0x23, 0x72, 0xfd, 0x36, + 0x52, 0x01, 0x01, 0x21, 0x18, 0x21, 0x00, 0x5b, 0xfd, 0xcb, 0x01, 0x4e, + 0x20, 0x12, 0x78, 0xfd, 0xcb, 0x02, 0x46, 0x28, 0x05, 0xfd, 0x86, 0x31, + 0xd6, 0x18, 0xc5, 0x47, 0xcd, 0x9b, 0x0e, 0xc1, 0x3e, 0x21, 0x91, 0x5f, + 0x16, 0x00, 0x19, 0xc3, 0xdc, 0x0a, 0x06, 0x17, 0xcd, 0x9b, 0x0e, 0x0e, + 0x08, 0xc5, 0xe5, 0x78, 0xe6, 0x07, 0x78, 0x20, 0x0c, 0xeb, 0x21, 0xe0, + 0xf8, 0x19, 0xeb, 0x01, 0x20, 0x00, 0x3d, 0xed, 0xb0, 0xeb, 0x21, 0xe0, + 0xff, 0x19, 0xeb, 0x47, 0xe6, 0x07, 0x0f, 0x0f, 0x0f, 0x4f, 0x78, 0x06, + 0x00, 0xed, 0xb0, 0x06, 0x07, 0x09, 0xe6, 0xf8, 0x20, 0xdb, 0xe1, 0x24, + 0xc1, 0x0d, 0x20, 0xcd, 0xcd, 0x88, 0x0e, 0x21, 0xe0, 0xff, 0x19, 0xeb, + 0xed, 0xb0, 0x06, 0x01, 0xc5, 0xcd, 0x9b, 0x0e, 0x0e, 0x08, 0xc5, 0xe5, + 0x78, 0xe6, 0x07, 0x0f, 0x0f, 0x0f, 0x4f, 0x78, 0x06, 0x00, 0x0d, 0x54, + 0x5d, 0x36, 0x00, 0x13, 0xed, 0xb0, 0x11, 0x01, 0x07, 0x19, 0x3d, 0xe6, + 0xf8, 0x47, 0x20, 0xe5, 0xe1, 0x24, 0xc1, 0x0d, 0x20, 0xdc, 0xcd, 0x88, + 0x0e, 0x62, 0x6b, 0x13, 0x3a, 0x8d, 0x5c, 0xfd, 0xcb, 0x02, 0x46, 0x28, + 0x03, 0x3a, 0x48, 0x5c, 0x77, 0x0b, 0xed, 0xb0, 0xc1, 0x0e, 0x21, 0xc9, + 0x7c, 0x0f, 0x0f, 0x0f, 0x3d, 0xf6, 0x50, 0x67, 0xeb, 0x61, 0x68, 0x29, + 0x29, 0x29, 0x29, 0x29, 0x44, 0x4d, 0xc9, 0x3e, 0x18, 0x90, 0x57, 0x0f, + 0x0f, 0x0f, 0xe6, 0xe0, 0x6f, 0x7a, 0xe6, 0x18, 0xf6, 0x40, 0x67, 0xc9, + 0xf3, 0x06, 0xb0, 0x21, 0x00, 0x40, 0xe5, 0xc5, 0xcd, 0xf4, 0x0e, 0xc1, + 0xe1, 0x24, 0x7c, 0xe6, 0x07, 0x20, 0x0a, 0x7d, 0xc6, 0x20, 0x6f, 0x3f, + 0x9f, 0xe6, 0xf8, 0x84, 0x67, 0x10, 0xe7, 0x18, 0x0d, 0xf3, 0x21, 0x00, + 0x5b, 0x06, 0x08, 0xc5, 0xcd, 0xf4, 0x0e, 0xc1, 0x10, 0xf9, 0x3e, 0x04, + 0xd3, 0xfb, 0xfb, 0x21, 0x00, 0x5b, 0xfd, 0x75, 0x46, 0xaf, 0x47, 0x77, + 0x23, 0x10, 0xfc, 0xfd, 0xcb, 0x30, 0x8e, 0x0e, 0x21, 0xc3, 0xd9, 0x0d, + 0x78, 0xfe, 0x03, 0x9f, 0xe6, 0x02, 0xd3, 0xfb, 0x57, 0xcd, 0x54, 0x1f, + 0x38, 0x0a, 0x3e, 0x04, 0xd3, 0xfb, 0xfb, 0xcd, 0xdf, 0x0e, 0xcf, 0x0c, + 0xdb, 0xfb, 0x87, 0xf8, 0x30, 0xeb, 0x0e, 0x20, 0x5e, 0x23, 0x06, 0x08, + 0xcb, 0x12, 0xcb, 0x13, 0xcb, 0x1a, 0xdb, 0xfb, 0x1f, 0x30, 0xfb, 0x7a, + 0xd3, 0xfb, 0x10, 0xf0, 0x0d, 0x20, 0xe9, 0xc9, 0x2a, 0x3d, 0x5c, 0xe5, + 0x21, 0x7f, 0x10, 0xe5, 0xed, 0x73, 0x3d, 0x5c, 0xcd, 0xd4, 0x15, 0xf5, + 0x16, 0x00, 0xfd, 0x5e, 0xff, 0x21, 0xc8, 0x00, 0xcd, 0xb5, 0x03, 0xf1, + 0x21, 0x38, 0x0f, 0xe5, 0xfe, 0x18, 0x30, 0x31, 0xfe, 0x07, 0x38, 0x2d, + 0xfe, 0x10, 0x38, 0x3a, 0x01, 0x02, 0x00, 0x57, 0xfe, 0x16, 0x38, 0x0c, + 0x03, 0xfd, 0xcb, 0x37, 0x7e, 0xca, 0x1e, 0x10, 0xcd, 0xd4, 0x15, 0x5f, + 0xcd, 0xd4, 0x15, 0xd5, 0x2a, 0x5b, 0x5c, 0xfd, 0xcb, 0x07, 0x86, 0xcd, + 0x55, 0x16, 0xc1, 0x23, 0x70, 0x23, 0x71, 0x18, 0x0a, 0xfd, 0xcb, 0x07, + 0x86, 0x2a, 0x5b, 0x5c, 0xcd, 0x52, 0x16, 0x12, 0x13, 0xed, 0x53, 0x5b, + 0x5c, 0xc9, 0x5f, 0x16, 0x00, 0x21, 0x99, 0x0f, 0x19, 0x5e, 0x19, 0xe5, + 0x2a, 0x5b, 0x5c, 0xc9, 0x09, 0x66, 0x6a, 0x50, 0xb5, 0x70, 0x7e, 0xcf, + 0xd4, 0x2a, 0x49, 0x5c, 0xfd, 0xcb, 0x37, 0x6e, 0xc2, 0x97, 0x10, 0xcd, + 0x6e, 0x19, 0xcd, 0x95, 0x16, 0x7a, 0xb3, 0xca, 0x97, 0x10, 0xe5, 0x23, + 0x4e, 0x23, 0x46, 0x21, 0x0a, 0x00, 0x09, 0x44, 0x4d, 0xcd, 0x05, 0x1f, + 0xcd, 0x97, 0x10, 0x2a, 0x51, 0x5c, 0xe3, 0xe5, 0x3e, 0xff, 0xcd, 0x01, + 0x16, 0xe1, 0x2b, 0xfd, 0x35, 0x0f, 0xcd, 0x55, 0x18, 0xfd, 0x34, 0x0f, + 0x2a, 0x59, 0x5c, 0x23, 0x23, 0x23, 0x23, 0x22, 0x5b, 0x5c, 0xe1, 0xcd, + 0x15, 0x16, 0xc9, 0xfd, 0xcb, 0x37, 0x6e, 0x20, 0x08, 0x21, 0x49, 0x5c, + 0xcd, 0x0f, 0x19, 0x18, 0x6d, 0xfd, 0x36, 0x00, 0x10, 0x18, 0x1d, 0xcd, + 0x31, 0x10, 0x18, 0x05, 0x7e, 0xfe, 0x0d, 0xc8, 0x23, 0x22, 0x5b, 0x5c, + 0xc9, 0xcd, 0x31, 0x10, 0x01, 0x01, 0x00, 0xc3, 0xe8, 0x19, 0xcd, 0xd4, + 0x15, 0xcd, 0xd4, 0x15, 0xe1, 0xe1, 0xe1, 0x22, 0x3d, 0x5c, 0xfd, 0xcb, + 0x00, 0x7e, 0xc0, 0xf9, 0xc9, 0x37, 0xcd, 0x95, 0x11, 0xed, 0x52, 0x19, + 0x23, 0xc1, 0xd8, 0xc5, 0x44, 0x4d, 0x62, 0x6b, 0x23, 0x1a, 0xe6, 0xf0, + 0xfe, 0x10, 0x20, 0x09, 0x23, 0x1a, 0xd6, 0x17, 0xce, 0x00, 0x20, 0x01, + 0x23, 0xa7, 0xed, 0x42, 0x09, 0xeb, 0x38, 0xe6, 0xc9, 0xfd, 0xcb, 0x37, + 0x6e, 0xc0, 0x2a, 0x49, 0x5c, 0xcd, 0x6e, 0x19, 0xeb, 0xcd, 0x95, 0x16, + 0x21, 0x4a, 0x5c, 0xcd, 0x1c, 0x19, 0xcd, 0x95, 0x17, 0x3e, 0x00, 0xc3, + 0x01, 0x16, 0xfd, 0xcb, 0x37, 0x7e, 0x28, 0xa8, 0xc3, 0x81, 0x0f, 0xfd, + 0xcb, 0x30, 0x66, 0x28, 0xa1, 0xfd, 0x36, 0x00, 0xff, 0x16, 0x00, 0xfd, + 0x5e, 0xfe, 0x21, 0x90, 0x1a, 0xcd, 0xb5, 0x03, 0xc3, 0x30, 0x0f, 0xe5, + 0xcd, 0x90, 0x11, 0x2b, 0xcd, 0xe5, 0x19, 0x22, 0x5b, 0x5c, 0xfd, 0x36, + 0x07, 0x00, 0xe1, 0xc9, 0xfd, 0xcb, 0x02, 0x5e, 0xc4, 0x1d, 0x11, 0xa7, + 0xfd, 0xcb, 0x01, 0x6e, 0xc8, 0x3a, 0x08, 0x5c, 0xfd, 0xcb, 0x01, 0xae, + 0xf5, 0xfd, 0xcb, 0x02, 0x6e, 0xc4, 0x6e, 0x0d, 0xf1, 0xfe, 0x20, 0x30, + 0x52, 0xfe, 0x10, 0x30, 0x2d, 0xfe, 0x06, 0x30, 0x0a, 0x47, 0xe6, 0x01, + 0x4f, 0x78, 0x1f, 0xc6, 0x12, 0x18, 0x2a, 0x20, 0x09, 0x21, 0x6a, 0x5c, + 0x3e, 0x08, 0xae, 0x77, 0x18, 0x0e, 0xfe, 0x0e, 0xd8, 0xd6, 0x0d, 0x21, + 0x41, 0x5c, 0xbe, 0x77, 0x20, 0x02, 0x36, 0x00, 0xfd, 0xcb, 0x02, 0xde, + 0xbf, 0xc9, 0x47, 0xe6, 0x07, 0x4f, 0x3e, 0x10, 0xcb, 0x58, 0x20, 0x01, + 0x3c, 0xfd, 0x71, 0xd3, 0x11, 0x0d, 0x11, 0x18, 0x06, 0x3a, 0x0d, 0x5c, + 0x11, 0xa8, 0x10, 0x2a, 0x4f, 0x5c, 0x23, 0x23, 0x73, 0x23, 0x72, 0x37, + 0xc9, 0xcd, 0x4d, 0x0d, 0xfd, 0xcb, 0x02, 0x9e, 0xfd, 0xcb, 0x02, 0xae, + 0x2a, 0x8a, 0x5c, 0xe5, 0x2a, 0x3d, 0x5c, 0xe5, 0x21, 0x67, 0x11, 0xe5, + 0xed, 0x73, 0x3d, 0x5c, 0x2a, 0x82, 0x5c, 0xe5, 0x37, 0xcd, 0x95, 0x11, + 0xeb, 0xcd, 0x7d, 0x18, 0xeb, 0xcd, 0xe1, 0x18, 0x2a, 0x8a, 0x5c, 0xe3, + 0xeb, 0xcd, 0x4d, 0x0d, 0x3a, 0x8b, 0x5c, 0x92, 0x38, 0x26, 0x20, 0x06, + 0x7b, 0xfd, 0x96, 0x50, 0x30, 0x1e, 0x3e, 0x20, 0xd5, 0xcd, 0xf4, 0x09, + 0xd1, 0x18, 0xe9, 0x16, 0x00, 0xfd, 0x5e, 0xfe, 0x21, 0x90, 0x1a, 0xcd, + 0xb5, 0x03, 0xfd, 0x36, 0x00, 0xff, 0xed, 0x5b, 0x8a, 0x5c, 0x18, 0x02, + 0xd1, 0xe1, 0xe1, 0x22, 0x3d, 0x5c, 0xc1, 0xd5, 0xcd, 0xd9, 0x0d, 0xe1, + 0x22, 0x82, 0x5c, 0xfd, 0x36, 0x26, 0x00, 0xc9, 0x2a, 0x61, 0x5c, 0x2b, + 0xa7, 0xed, 0x5b, 0x59, 0x5c, 0xfd, 0xcb, 0x37, 0x6e, 0xc8, 0xed, 0x5b, + 0x61, 0x5c, 0xd8, 0x2a, 0x63, 0x5c, 0xc9, 0x7e, 0xfe, 0x0e, 0x01, 0x06, + 0x00, 0xcc, 0xe8, 0x19, 0x7e, 0x23, 0xfe, 0x0d, 0x20, 0xf1, 0xc9, 0xf3, + 0x3e, 0xff, 0xed, 0x5b, 0xb2, 0x5c, 0xd9, 0xed, 0x4b, 0xb4, 0x5c, 0xed, + 0x5b, 0x38, 0x5c, 0x2a, 0x7b, 0x5c, 0xd9, 0x47, 0x3e, 0x07, 0xd3, 0xfe, + 0x3e, 0x3f, 0xed, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6b, + 0x36, 0x02, 0x2b, 0xbc, 0x20, 0xfa, 0xa7, 0xed, 0x52, 0x19, 0x23, 0x30, + 0x06, 0x35, 0x28, 0x03, 0x35, 0x28, 0xf3, 0x2b, 0xd9, 0xed, 0x43, 0xb4, + 0x5c, 0xed, 0x53, 0x38, 0x5c, 0x22, 0x7b, 0x5c, 0xd9, 0x04, 0x28, 0x19, + 0x22, 0xb4, 0x5c, 0x11, 0xaf, 0x3e, 0x01, 0xa8, 0x00, 0xeb, 0xed, 0xb8, + 0xeb, 0x23, 0x22, 0x7b, 0x5c, 0x2b, 0x01, 0x40, 0x00, 0xed, 0x43, 0x38, + 0x5c, 0x22, 0xb2, 0x5c, 0x21, 0x00, 0x3c, 0x22, 0x36, 0x5c, 0x2a, 0xb2, + 0x5c, 0x36, 0x3e, 0x2b, 0xf9, 0x2b, 0x2b, 0x22, 0x3d, 0x5c, 0xed, 0x56, + 0xfd, 0x21, 0x3a, 0x5c, 0xfb, 0x21, 0xb6, 0x5c, 0x22, 0x4f, 0x5c, 0x11, + 0xaf, 0x15, 0x01, 0x15, 0x00, 0xeb, 0xed, 0xb0, 0xeb, 0x2b, 0x22, 0x57, + 0x5c, 0x23, 0x22, 0x53, 0x5c, 0x22, 0x4b, 0x5c, 0x36, 0x80, 0x23, 0x22, + 0x59, 0x5c, 0x36, 0x0d, 0x23, 0x36, 0x80, 0x23, 0x22, 0x61, 0x5c, 0x22, + 0x63, 0x5c, 0x22, 0x65, 0x5c, 0x3e, 0x38, 0x32, 0x8d, 0x5c, 0x32, 0x8f, + 0x5c, 0x32, 0x48, 0x5c, 0x21, 0x23, 0x05, 0x22, 0x09, 0x5c, 0xfd, 0x35, + 0xc6, 0xfd, 0x35, 0xca, 0x21, 0xc6, 0x15, 0x11, 0x10, 0x5c, 0x01, 0x0e, + 0x00, 0xed, 0xb0, 0xfd, 0xcb, 0x01, 0xce, 0xcd, 0xdf, 0x0e, 0xfd, 0x36, + 0x31, 0x02, 0xcd, 0x6b, 0x0d, 0xaf, 0x11, 0x38, 0x15, 0xcd, 0x0a, 0x0c, + 0xfd, 0xcb, 0x02, 0xee, 0x18, 0x07, 0xfd, 0x36, 0x31, 0x02, 0xcd, 0x95, + 0x17, 0xcd, 0xb0, 0x16, 0x3e, 0x00, 0xcd, 0x01, 0x16, 0xcd, 0x2c, 0x0f, + 0xcd, 0x17, 0x1b, 0xfd, 0xcb, 0x00, 0x7e, 0x20, 0x12, 0xfd, 0xcb, 0x30, + 0x66, 0x28, 0x40, 0x2a, 0x59, 0x5c, 0xcd, 0xa7, 0x11, 0xfd, 0x36, 0x00, + 0xff, 0x18, 0xdd, 0x2a, 0x59, 0x5c, 0x22, 0x5d, 0x5c, 0xcd, 0xfb, 0x19, + 0x78, 0xb1, 0xc2, 0x5d, 0x15, 0xdf, 0xfe, 0x0d, 0x28, 0xc0, 0xfd, 0xcb, + 0x30, 0x46, 0xc4, 0xaf, 0x0d, 0xcd, 0x6e, 0x0d, 0x3e, 0x19, 0xfd, 0x96, + 0x4f, 0x32, 0x8c, 0x5c, 0xfd, 0xcb, 0x01, 0xfe, 0xfd, 0x36, 0x00, 0xff, + 0xfd, 0x36, 0x0a, 0x01, 0xcd, 0x8a, 0x1b, 0x76, 0xfd, 0xcb, 0x01, 0xae, + 0xfd, 0xcb, 0x30, 0x4e, 0xc4, 0xcd, 0x0e, 0x3a, 0x3a, 0x5c, 0x3c, 0xf5, + 0x21, 0x00, 0x00, 0xfd, 0x74, 0x37, 0xfd, 0x74, 0x26, 0x22, 0x0b, 0x5c, + 0x21, 0x01, 0x00, 0x22, 0x16, 0x5c, 0xcd, 0xb0, 0x16, 0xfd, 0xcb, 0x37, + 0xae, 0xcd, 0x6e, 0x0d, 0xfd, 0xcb, 0x02, 0xee, 0xf1, 0x47, 0xfe, 0x0a, + 0x38, 0x02, 0xc6, 0x07, 0xcd, 0xef, 0x15, 0x3e, 0x20, 0xd7, 0x78, 0x11, + 0x91, 0x13, 0xcd, 0x0a, 0x0c, 0xaf, 0x11, 0x36, 0x15, 0xcd, 0x0a, 0x0c, + 0xed, 0x4b, 0x45, 0x5c, 0xcd, 0x1b, 0x1a, 0x3e, 0x3a, 0xd7, 0xfd, 0x4e, + 0x0d, 0x06, 0x00, 0xcd, 0x1b, 0x1a, 0xcd, 0x97, 0x10, 0x3a, 0x3a, 0x5c, + 0x3c, 0x28, 0x1b, 0xfe, 0x09, 0x28, 0x04, 0xfe, 0x15, 0x20, 0x03, 0xfd, + 0x34, 0x0d, 0x01, 0x03, 0x00, 0x11, 0x70, 0x5c, 0x21, 0x44, 0x5c, 0xcb, + 0x7e, 0x28, 0x01, 0x09, 0xed, 0xb8, 0xfd, 0x36, 0x0a, 0xff, 0xfd, 0xcb, + 0x01, 0x9e, 0xc3, 0xac, 0x12, 0x80, 0x4f, 0xcb, 0x4e, 0x45, 0x58, 0x54, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x46, 0x4f, 0xd2, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x66, 0x6f, 0x75, 0x6e, 0xe4, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x20, 0x77, 0x72, 0x6f, 0x6e, 0xe7, 0x4f, 0x75, 0x74, + 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0xf9, 0x4f, 0x75, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0xee, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6f, 0x20, 0x62, 0x69, + 0xe7, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x20, 0x47, 0x4f, 0x53, 0x55, 0xc2, 0x45, 0x6e, 0x64, + 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x6c, 0xe5, 0x53, 0x54, 0x4f, 0x50, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0xf4, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0xf4, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6f, 0x75, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x61, 0x6e, 0x67, 0xe5, 0x4e, 0x6f, + 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x42, 0x41, + 0x53, 0x49, 0xc3, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x20, 0x2d, 0x20, 0x43, + 0x4f, 0x4e, 0x54, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xf3, 0x4f, + 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x41, 0x54, 0xc1, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, + 0x61, 0x6d, 0xe5, 0x4e, 0x6f, 0x20, 0x72, 0x6f, 0x6f, 0x6d, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0xe5, 0x53, 0x54, 0x4f, 0x50, 0x20, + 0x69, 0x6e, 0x20, 0x49, 0x4e, 0x50, 0x55, 0xd4, 0x46, 0x4f, 0x52, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x4e, 0x45, 0x58, 0xd4, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x49, 0x2f, 0x4f, 0x20, + 0x64, 0x65, 0x76, 0x69, 0x63, 0xe5, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0xf2, 0x42, 0x52, 0x45, 0x41, + 0x4b, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0xed, 0x52, 0x41, 0x4d, 0x54, 0x4f, 0x50, 0x20, 0x6e, 0x6f, 0x20, + 0x67, 0x6f, 0x6f, 0xe4, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x20, 0x6c, 0x6f, 0x73, 0xf4, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0xed, 0x46, 0x4e, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x45, 0xc6, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0xf2, 0x54, 0x61, 0x70, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x20, 0x65, 0x72, 0x72, 0x6f, 0xf2, 0x2c, 0xa0, 0x7f, 0x20, 0x31, + 0x39, 0x38, 0x32, 0x20, 0x53, 0x69, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x72, + 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x4c, 0x74, + 0xe4, 0x3e, 0x10, 0x01, 0x00, 0x00, 0xc3, 0x13, 0x13, 0xed, 0x43, 0x49, + 0x5c, 0x2a, 0x5d, 0x5c, 0xeb, 0x21, 0x55, 0x15, 0xe5, 0x2a, 0x61, 0x5c, + 0x37, 0xed, 0x52, 0xe5, 0x60, 0x69, 0xcd, 0x6e, 0x19, 0x20, 0x06, 0xcd, + 0xb8, 0x19, 0xcd, 0xe8, 0x19, 0xc1, 0x79, 0x3d, 0xb0, 0x28, 0x28, 0xc5, + 0x03, 0x03, 0x03, 0x03, 0x2b, 0xed, 0x5b, 0x53, 0x5c, 0xd5, 0xcd, 0x55, + 0x16, 0xe1, 0x22, 0x53, 0x5c, 0xc1, 0xc5, 0x13, 0x2a, 0x61, 0x5c, 0x2b, + 0x2b, 0xed, 0xb8, 0x2a, 0x49, 0x5c, 0xeb, 0xc1, 0x70, 0x2b, 0x71, 0x2b, + 0x73, 0x2b, 0x72, 0xf1, 0xc3, 0xa2, 0x12, 0xf4, 0x09, 0xa8, 0x10, 0x4b, + 0xf4, 0x09, 0xc4, 0x15, 0x53, 0x81, 0x0f, 0xc4, 0x15, 0x52, 0xf4, 0x09, + 0xc4, 0x15, 0x50, 0x80, 0xcf, 0x12, 0x01, 0x00, 0x06, 0x00, 0x0b, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x10, 0x00, 0xfd, 0xcb, 0x02, 0x6e, + 0x20, 0x04, 0xfd, 0xcb, 0x02, 0xde, 0xcd, 0xe6, 0x15, 0xd8, 0x28, 0xfa, + 0xcf, 0x07, 0xd9, 0xe5, 0x2a, 0x51, 0x5c, 0x23, 0x23, 0x18, 0x08, 0x1e, + 0x30, 0x83, 0xd9, 0xe5, 0x2a, 0x51, 0x5c, 0x5e, 0x23, 0x56, 0xeb, 0xcd, + 0x2c, 0x16, 0xe1, 0xd9, 0xc9, 0x87, 0xc6, 0x16, 0x6f, 0x26, 0x5c, 0x5e, + 0x23, 0x56, 0x7a, 0xb3, 0x20, 0x02, 0xcf, 0x17, 0x1b, 0x2a, 0x4f, 0x5c, + 0x19, 0x22, 0x51, 0x5c, 0xfd, 0xcb, 0x30, 0xa6, 0x23, 0x23, 0x23, 0x23, + 0x4e, 0x21, 0x2d, 0x16, 0xcd, 0xdc, 0x16, 0xd0, 0x16, 0x00, 0x5e, 0x19, + 0xe9, 0x4b, 0x06, 0x53, 0x12, 0x50, 0x1b, 0x00, 0xfd, 0xcb, 0x02, 0xc6, + 0xfd, 0xcb, 0x01, 0xae, 0xfd, 0xcb, 0x30, 0xe6, 0x18, 0x04, 0xfd, 0xcb, + 0x02, 0x86, 0xfd, 0xcb, 0x01, 0x8e, 0xc3, 0x4d, 0x0d, 0xfd, 0xcb, 0x01, + 0xce, 0xc9, 0x01, 0x01, 0x00, 0xe5, 0xcd, 0x05, 0x1f, 0xe1, 0xcd, 0x64, + 0x16, 0x2a, 0x65, 0x5c, 0xeb, 0xed, 0xb8, 0xc9, 0xf5, 0xe5, 0x21, 0x4b, + 0x5c, 0x3e, 0x0e, 0x5e, 0x23, 0x56, 0xe3, 0xa7, 0xed, 0x52, 0x19, 0xe3, + 0x30, 0x09, 0xd5, 0xeb, 0x09, 0xeb, 0x72, 0x2b, 0x73, 0x23, 0xd1, 0x23, + 0x3d, 0x20, 0xe8, 0xeb, 0xd1, 0xf1, 0xa7, 0xed, 0x52, 0x44, 0x4d, 0x03, + 0x19, 0xeb, 0xc9, 0x00, 0x00, 0xeb, 0x11, 0x8f, 0x16, 0x7e, 0xe6, 0xc0, + 0x20, 0xf7, 0x56, 0x23, 0x5e, 0xc9, 0x2a, 0x63, 0x5c, 0x2b, 0xcd, 0x55, + 0x16, 0x23, 0x23, 0xc1, 0xed, 0x43, 0x61, 0x5c, 0xc1, 0xeb, 0x23, 0xc9, + 0x2a, 0x59, 0x5c, 0x36, 0x0d, 0x22, 0x5b, 0x5c, 0x23, 0x36, 0x80, 0x23, + 0x22, 0x61, 0x5c, 0x2a, 0x61, 0x5c, 0x22, 0x63, 0x5c, 0x2a, 0x63, 0x5c, + 0x22, 0x65, 0x5c, 0xe5, 0x21, 0x92, 0x5c, 0x22, 0x68, 0x5c, 0xe1, 0xc9, + 0xed, 0x5b, 0x59, 0x5c, 0xc3, 0xe5, 0x19, 0x23, 0x7e, 0xa7, 0xc8, 0xb9, + 0x23, 0x20, 0xf8, 0x37, 0xc9, 0xcd, 0x1e, 0x17, 0xcd, 0x01, 0x17, 0x01, + 0x00, 0x00, 0x11, 0xe2, 0xa3, 0xeb, 0x19, 0x38, 0x07, 0x01, 0xd4, 0x15, + 0x09, 0x4e, 0x23, 0x46, 0xeb, 0x71, 0x23, 0x70, 0xc9, 0xe5, 0x2a, 0x4f, + 0x5c, 0x09, 0x23, 0x23, 0x23, 0x4e, 0xeb, 0x21, 0x16, 0x17, 0xcd, 0xdc, + 0x16, 0x4e, 0x06, 0x00, 0x09, 0xe9, 0x4b, 0x05, 0x53, 0x03, 0x50, 0x01, + 0xe1, 0xc9, 0xcd, 0x94, 0x1e, 0xfe, 0x10, 0x38, 0x02, 0xcf, 0x17, 0xc6, + 0x03, 0x07, 0x21, 0x10, 0x5c, 0x4f, 0x06, 0x00, 0x09, 0x4e, 0x23, 0x46, + 0x2b, 0xc9, 0xef, 0x01, 0x38, 0xcd, 0x1e, 0x17, 0x78, 0xb1, 0x28, 0x16, + 0xeb, 0x2a, 0x4f, 0x5c, 0x09, 0x23, 0x23, 0x23, 0x7e, 0xeb, 0xfe, 0x4b, + 0x28, 0x08, 0xfe, 0x53, 0x28, 0x04, 0xfe, 0x50, 0x20, 0xcf, 0xcd, 0x5d, + 0x17, 0x73, 0x23, 0x72, 0xc9, 0xe5, 0xcd, 0xf1, 0x2b, 0x78, 0xb1, 0x20, + 0x02, 0xcf, 0x0e, 0xc5, 0x1a, 0xe6, 0xdf, 0x4f, 0x21, 0x7a, 0x17, 0xcd, + 0xdc, 0x16, 0x30, 0xf1, 0x4e, 0x06, 0x00, 0x09, 0xc1, 0xe9, 0x4b, 0x06, + 0x53, 0x08, 0x50, 0x0a, 0x00, 0x1e, 0x01, 0x18, 0x06, 0x1e, 0x06, 0x18, + 0x02, 0x1e, 0x10, 0x0b, 0x78, 0xb1, 0x20, 0xd5, 0x57, 0xe1, 0xc9, 0x18, + 0x90, 0xed, 0x73, 0x3f, 0x5c, 0xfd, 0x36, 0x02, 0x10, 0xcd, 0xaf, 0x0d, + 0xfd, 0xcb, 0x02, 0xc6, 0xfd, 0x46, 0x31, 0xcd, 0x44, 0x0e, 0xfd, 0xcb, + 0x02, 0x86, 0xfd, 0xcb, 0x30, 0xc6, 0x2a, 0x49, 0x5c, 0xed, 0x5b, 0x6c, + 0x5c, 0xa7, 0xed, 0x52, 0x19, 0x38, 0x22, 0xd5, 0xcd, 0x6e, 0x19, 0x11, + 0xc0, 0x02, 0xeb, 0xed, 0x52, 0xe3, 0xcd, 0x6e, 0x19, 0xc1, 0xc5, 0xcd, + 0xb8, 0x19, 0xc1, 0x09, 0x38, 0x0e, 0xeb, 0x56, 0x23, 0x5e, 0x2b, 0xed, + 0x53, 0x6c, 0x5c, 0x18, 0xed, 0x22, 0x6c, 0x5c, 0x2a, 0x6c, 0x5c, 0xcd, + 0x6e, 0x19, 0x28, 0x01, 0xeb, 0xcd, 0x33, 0x18, 0xfd, 0xcb, 0x02, 0xa6, + 0xc9, 0x3e, 0x03, 0x18, 0x02, 0x3e, 0x02, 0xfd, 0x36, 0x02, 0x00, 0xcd, + 0x30, 0x25, 0xc4, 0x01, 0x16, 0xdf, 0xcd, 0x70, 0x20, 0x38, 0x14, 0xdf, + 0xfe, 0x3b, 0x28, 0x04, 0xfe, 0x2c, 0x20, 0x06, 0xe7, 0xcd, 0x82, 0x1c, + 0x18, 0x08, 0xcd, 0xe6, 0x1c, 0x18, 0x03, 0xcd, 0xde, 0x1c, 0xcd, 0xee, + 0x1b, 0xcd, 0x99, 0x1e, 0x78, 0xe6, 0x3f, 0x67, 0x69, 0x22, 0x49, 0x5c, + 0xcd, 0x6e, 0x19, 0x1e, 0x01, 0xcd, 0x55, 0x18, 0xd7, 0xfd, 0xcb, 0x02, + 0x66, 0x28, 0xf6, 0x3a, 0x6b, 0x5c, 0xfd, 0x96, 0x4f, 0x20, 0xee, 0xab, + 0xc8, 0xe5, 0xd5, 0x21, 0x6c, 0x5c, 0xcd, 0x0f, 0x19, 0xd1, 0xe1, 0x18, + 0xe0, 0xed, 0x4b, 0x49, 0x5c, 0xcd, 0x80, 0x19, 0x16, 0x3e, 0x28, 0x05, + 0x11, 0x00, 0x00, 0xcb, 0x13, 0xfd, 0x73, 0x2d, 0x7e, 0xfe, 0x40, 0xc1, + 0xd0, 0xc5, 0xcd, 0x28, 0x1a, 0x23, 0x23, 0x23, 0xfd, 0xcb, 0x01, 0x86, + 0x7a, 0xa7, 0x28, 0x05, 0xd7, 0xfd, 0xcb, 0x01, 0xc6, 0xd5, 0xeb, 0xfd, + 0xcb, 0x30, 0x96, 0x21, 0x3b, 0x5c, 0xcb, 0x96, 0xfd, 0xcb, 0x37, 0x6e, + 0x28, 0x02, 0xcb, 0xd6, 0x2a, 0x5f, 0x5c, 0xa7, 0xed, 0x52, 0x20, 0x05, + 0x3e, 0x3f, 0xcd, 0xc1, 0x18, 0xcd, 0xe1, 0x18, 0xeb, 0x7e, 0xcd, 0xb6, + 0x18, 0x23, 0xfe, 0x0d, 0x28, 0x06, 0xeb, 0xcd, 0x37, 0x19, 0x18, 0xe0, + 0xd1, 0xc9, 0xfe, 0x0e, 0xc0, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x7e, + 0xc9, 0xd9, 0x2a, 0x8f, 0x5c, 0xe5, 0xcb, 0xbc, 0xcb, 0xfd, 0x22, 0x8f, + 0x5c, 0x21, 0x91, 0x5c, 0x56, 0xd5, 0x36, 0x00, 0xcd, 0xf4, 0x09, 0xe1, + 0xfd, 0x74, 0x57, 0xe1, 0x22, 0x8f, 0x5c, 0xd9, 0xc9, 0x2a, 0x5b, 0x5c, + 0xa7, 0xed, 0x52, 0xc0, 0x3a, 0x41, 0x5c, 0xcb, 0x07, 0x28, 0x04, 0xc6, + 0x43, 0x18, 0x16, 0x21, 0x3b, 0x5c, 0xcb, 0x9e, 0x3e, 0x4b, 0xcb, 0x56, + 0x28, 0x0b, 0xcb, 0xde, 0x3c, 0xfd, 0xcb, 0x30, 0x5e, 0x28, 0x02, 0x3e, + 0x43, 0xd5, 0xcd, 0xc1, 0x18, 0xd1, 0xc9, 0x5e, 0x23, 0x56, 0xe5, 0xeb, + 0x23, 0xcd, 0x6e, 0x19, 0xcd, 0x95, 0x16, 0xe1, 0xfd, 0xcb, 0x37, 0x6e, + 0xc0, 0x72, 0x2b, 0x73, 0xc9, 0x7b, 0xa7, 0xf8, 0x18, 0x0d, 0xaf, 0x09, + 0x3c, 0x38, 0xfc, 0xed, 0x42, 0x3d, 0x28, 0xf1, 0xc3, 0xef, 0x15, 0xcd, + 0x1b, 0x2d, 0x30, 0x30, 0xfe, 0x21, 0x38, 0x2c, 0xfd, 0xcb, 0x01, 0x96, + 0xfe, 0xcb, 0x28, 0x24, 0xfe, 0x3a, 0x20, 0x0e, 0xfd, 0xcb, 0x37, 0x6e, + 0x20, 0x16, 0xfd, 0xcb, 0x30, 0x56, 0x28, 0x14, 0x18, 0x0e, 0xfe, 0x22, + 0x20, 0x0a, 0xf5, 0x3a, 0x6a, 0x5c, 0xee, 0x04, 0x32, 0x6a, 0x5c, 0xf1, + 0xfd, 0xcb, 0x01, 0xd6, 0xd7, 0xc9, 0xe5, 0x2a, 0x53, 0x5c, 0x54, 0x5d, + 0xc1, 0xcd, 0x80, 0x19, 0xd0, 0xc5, 0xcd, 0xb8, 0x19, 0xeb, 0x18, 0xf4, + 0x7e, 0xb8, 0xc0, 0x23, 0x7e, 0x2b, 0xb9, 0xc9, 0x23, 0x23, 0x23, 0x22, + 0x5d, 0x5c, 0x0e, 0x00, 0x15, 0xc8, 0xe7, 0xbb, 0x20, 0x04, 0xa7, 0xc9, + 0x23, 0x7e, 0xcd, 0xb6, 0x18, 0x22, 0x5d, 0x5c, 0xfe, 0x22, 0x20, 0x01, + 0x0d, 0xfe, 0x3a, 0x28, 0x04, 0xfe, 0xcb, 0x20, 0x04, 0xcb, 0x41, 0x28, + 0xdf, 0xfe, 0x0d, 0x20, 0xe3, 0x15, 0x37, 0xc9, 0xe5, 0x7e, 0xfe, 0x40, + 0x38, 0x17, 0xcb, 0x6f, 0x28, 0x14, 0x87, 0xfa, 0xc7, 0x19, 0x3f, 0x01, + 0x05, 0x00, 0x30, 0x02, 0x0e, 0x12, 0x17, 0x23, 0x7e, 0x30, 0xfb, 0x18, + 0x06, 0x23, 0x23, 0x4e, 0x23, 0x46, 0x23, 0x09, 0xd1, 0xa7, 0xed, 0x52, + 0x44, 0x4d, 0x19, 0xeb, 0xc9, 0xcd, 0xdd, 0x19, 0xc5, 0x78, 0x2f, 0x47, + 0x79, 0x2f, 0x4f, 0x03, 0xcd, 0x64, 0x16, 0xeb, 0xe1, 0x19, 0xd5, 0xed, + 0xb0, 0xe1, 0xc9, 0x2a, 0x59, 0x5c, 0x2b, 0x22, 0x5d, 0x5c, 0xe7, 0x21, + 0x92, 0x5c, 0x22, 0x65, 0x5c, 0xcd, 0x3b, 0x2d, 0xcd, 0xa2, 0x2d, 0x38, + 0x04, 0x21, 0xf0, 0xd8, 0x09, 0xda, 0x8a, 0x1c, 0xc3, 0xc5, 0x16, 0xd5, + 0xe5, 0xaf, 0xcb, 0x78, 0x20, 0x20, 0x60, 0x69, 0x1e, 0xff, 0x18, 0x08, + 0xd5, 0x56, 0x23, 0x5e, 0xe5, 0xeb, 0x1e, 0x20, 0x01, 0x18, 0xfc, 0xcd, + 0x2a, 0x19, 0x01, 0x9c, 0xff, 0xcd, 0x2a, 0x19, 0x0e, 0xf6, 0xcd, 0x2a, + 0x19, 0x7d, 0xcd, 0xef, 0x15, 0xe1, 0xd1, 0xc9, 0xb1, 0xcb, 0xbc, 0xbf, + 0xc4, 0xaf, 0xb4, 0x93, 0x91, 0x92, 0x95, 0x98, 0x98, 0x98, 0x98, 0x98, + 0x98, 0x98, 0x7f, 0x81, 0x2e, 0x6c, 0x6e, 0x70, 0x48, 0x94, 0x56, 0x3f, + 0x41, 0x2b, 0x17, 0x1f, 0x37, 0x77, 0x44, 0x0f, 0x59, 0x2b, 0x43, 0x2d, + 0x51, 0x3a, 0x6d, 0x42, 0x0d, 0x49, 0x5c, 0x44, 0x15, 0x5d, 0x01, 0x3d, + 0x02, 0x06, 0x00, 0x67, 0x1e, 0x06, 0xcb, 0x05, 0xf0, 0x1c, 0x06, 0x00, + 0xed, 0x1e, 0x00, 0xee, 0x1c, 0x00, 0x23, 0x1f, 0x04, 0x3d, 0x06, 0xcc, + 0x06, 0x05, 0x03, 0x1d, 0x04, 0x00, 0xab, 0x1d, 0x05, 0xcd, 0x1f, 0x05, + 0x89, 0x20, 0x05, 0x02, 0x2c, 0x05, 0xb2, 0x1b, 0x00, 0xb7, 0x11, 0x03, + 0xa1, 0x1e, 0x05, 0xf9, 0x17, 0x08, 0x00, 0x80, 0x1e, 0x03, 0x4f, 0x1e, + 0x00, 0x5f, 0x1e, 0x03, 0xac, 0x1e, 0x00, 0x6b, 0x0d, 0x09, 0x00, 0xdc, + 0x22, 0x06, 0x00, 0x3a, 0x1f, 0x05, 0xed, 0x1d, 0x05, 0x27, 0x1e, 0x03, + 0x42, 0x1e, 0x09, 0x05, 0x82, 0x23, 0x00, 0xac, 0x0e, 0x05, 0xc9, 0x1f, + 0x05, 0xf5, 0x17, 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x00, 0xf8, 0x03, 0x09, + 0x05, 0x20, 0x23, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x00, 0x7a, + 0x1e, 0x06, 0x00, 0x94, 0x22, 0x05, 0x60, 0x1f, 0x06, 0x2c, 0x0a, 0x00, + 0x36, 0x17, 0x06, 0x00, 0xe5, 0x16, 0x0a, 0x00, 0x93, 0x17, 0x0a, 0x2c, + 0x0a, 0x00, 0x93, 0x17, 0x0a, 0x00, 0x93, 0x17, 0x00, 0x93, 0x17, 0xfd, + 0xcb, 0x01, 0xbe, 0xcd, 0xfb, 0x19, 0xaf, 0x32, 0x47, 0x5c, 0x3d, 0x32, + 0x3a, 0x5c, 0x18, 0x01, 0xe7, 0xcd, 0xbf, 0x16, 0xfd, 0x34, 0x0d, 0xfa, + 0x8a, 0x1c, 0xdf, 0x06, 0x00, 0xfe, 0x0d, 0x28, 0x7a, 0xfe, 0x3a, 0x28, + 0xeb, 0x21, 0x76, 0x1b, 0xe5, 0x4f, 0xe7, 0x79, 0xd6, 0xce, 0xda, 0x8a, + 0x1c, 0x4f, 0x21, 0x48, 0x1a, 0x09, 0x4e, 0x09, 0x18, 0x03, 0x2a, 0x74, + 0x5c, 0x7e, 0x23, 0x22, 0x74, 0x5c, 0x01, 0x52, 0x1b, 0xc5, 0x4f, 0xfe, + 0x20, 0x30, 0x0c, 0x21, 0x01, 0x1c, 0x06, 0x00, 0x09, 0x4e, 0x09, 0xe5, + 0xdf, 0x05, 0xc9, 0xdf, 0xb9, 0xc2, 0x8a, 0x1c, 0xe7, 0xc9, 0xcd, 0x54, + 0x1f, 0x38, 0x02, 0xcf, 0x14, 0xfd, 0xcb, 0x0a, 0x7e, 0x20, 0x71, 0x2a, + 0x42, 0x5c, 0xcb, 0x7c, 0x28, 0x14, 0x21, 0xfe, 0xff, 0x22, 0x45, 0x5c, + 0x2a, 0x61, 0x5c, 0x2b, 0xed, 0x5b, 0x59, 0x5c, 0x1b, 0x3a, 0x44, 0x5c, + 0x18, 0x33, 0xcd, 0x6e, 0x19, 0x3a, 0x44, 0x5c, 0x28, 0x19, 0xa7, 0x20, + 0x43, 0x47, 0x7e, 0xe6, 0xc0, 0x78, 0x28, 0x0f, 0xcf, 0xff, 0xc1, 0xcd, + 0x30, 0x25, 0xc8, 0x2a, 0x55, 0x5c, 0x3e, 0xc0, 0xa6, 0xc0, 0xaf, 0xfe, + 0x01, 0xce, 0x00, 0x56, 0x23, 0x5e, 0xed, 0x53, 0x45, 0x5c, 0x23, 0x5e, + 0x23, 0x56, 0xeb, 0x19, 0x23, 0x22, 0x55, 0x5c, 0xeb, 0x22, 0x5d, 0x5c, + 0x57, 0x1e, 0x00, 0xfd, 0x36, 0x0a, 0xff, 0x15, 0xfd, 0x72, 0x0d, 0xca, + 0x28, 0x1b, 0x14, 0xcd, 0x8b, 0x19, 0x28, 0x08, 0xcf, 0x16, 0xcd, 0x30, + 0x25, 0xc0, 0xc1, 0xc1, 0xdf, 0xfe, 0x0d, 0x28, 0xba, 0xfe, 0x3a, 0xca, + 0x28, 0x1b, 0xc3, 0x8a, 0x1c, 0x0f, 0x1d, 0x4b, 0x09, 0x67, 0x0b, 0x7b, + 0x8e, 0x71, 0xb4, 0x81, 0xcf, 0xcd, 0xde, 0x1c, 0xbf, 0xc1, 0xcc, 0xee, + 0x1b, 0xeb, 0x2a, 0x74, 0x5c, 0x4e, 0x23, 0x46, 0xeb, 0xc5, 0xc9, 0xcd, + 0xb2, 0x28, 0xfd, 0x36, 0x37, 0x00, 0x30, 0x08, 0xfd, 0xcb, 0x37, 0xce, + 0x20, 0x18, 0xcf, 0x01, 0xcc, 0x96, 0x29, 0xfd, 0xcb, 0x01, 0x76, 0x20, + 0x0d, 0xaf, 0xcd, 0x30, 0x25, 0xc4, 0xf1, 0x2b, 0x21, 0x71, 0x5c, 0xb6, + 0x77, 0xeb, 0xed, 0x43, 0x72, 0x5c, 0x22, 0x4d, 0x5c, 0xc9, 0xc1, 0xcd, + 0x56, 0x1c, 0xcd, 0xee, 0x1b, 0xc9, 0x3a, 0x3b, 0x5c, 0xf5, 0xcd, 0xfb, + 0x24, 0xf1, 0xfd, 0x56, 0x01, 0xaa, 0xe6, 0x40, 0x20, 0x24, 0xcb, 0x7a, + 0xc2, 0xff, 0x2a, 0xc9, 0xcd, 0xb2, 0x28, 0xf5, 0x79, 0xf6, 0x9f, 0x3c, + 0x20, 0x14, 0xf1, 0x18, 0xa9, 0xe7, 0xcd, 0x82, 0x1c, 0xfe, 0x2c, 0x20, + 0x09, 0xe7, 0xcd, 0xfb, 0x24, 0xfd, 0xcb, 0x01, 0x76, 0xc0, 0xcf, 0x0b, + 0xcd, 0xfb, 0x24, 0xfd, 0xcb, 0x01, 0x76, 0xc8, 0x18, 0xf4, 0xfd, 0xcb, + 0x01, 0x7e, 0xfd, 0xcb, 0x02, 0x86, 0xc4, 0x4d, 0x0d, 0xf1, 0x3a, 0x74, + 0x5c, 0xd6, 0x13, 0xcd, 0xfc, 0x21, 0xcd, 0xee, 0x1b, 0x2a, 0x8f, 0x5c, + 0x22, 0x8d, 0x5c, 0x21, 0x91, 0x5c, 0x7e, 0x07, 0xae, 0xe6, 0xaa, 0xae, + 0x77, 0xc9, 0xcd, 0x30, 0x25, 0x28, 0x13, 0xfd, 0xcb, 0x02, 0x86, 0xcd, + 0x4d, 0x0d, 0x21, 0x90, 0x5c, 0x7e, 0xf6, 0xf8, 0x77, 0xfd, 0xcb, 0x57, + 0xb6, 0xdf, 0xcd, 0xe2, 0x21, 0x18, 0x9f, 0xc3, 0x05, 0x06, 0xfe, 0x0d, + 0x28, 0x04, 0xfe, 0x3a, 0x20, 0x9c, 0xcd, 0x30, 0x25, 0xc8, 0xef, 0xa0, + 0x38, 0xc9, 0xcf, 0x08, 0xc1, 0xcd, 0x30, 0x25, 0x28, 0x0a, 0xef, 0x02, + 0x38, 0xeb, 0xcd, 0xe9, 0x34, 0xda, 0xb3, 0x1b, 0xc3, 0x29, 0x1b, 0xfe, + 0xcd, 0x20, 0x09, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xee, 0x1b, 0x18, 0x06, + 0xcd, 0xee, 0x1b, 0xef, 0xa1, 0x38, 0xef, 0xc0, 0x02, 0x01, 0xe0, 0x01, + 0x38, 0xcd, 0xff, 0x2a, 0x22, 0x68, 0x5c, 0x2b, 0x7e, 0xcb, 0xfe, 0x01, + 0x06, 0x00, 0x09, 0x07, 0x38, 0x06, 0x0e, 0x0d, 0xcd, 0x55, 0x16, 0x23, + 0xe5, 0xef, 0x02, 0x02, 0x38, 0xe1, 0xeb, 0x0e, 0x0a, 0xed, 0xb0, 0x2a, + 0x45, 0x5c, 0xeb, 0x73, 0x23, 0x72, 0xfd, 0x56, 0x0d, 0x14, 0x23, 0x72, + 0xcd, 0xda, 0x1d, 0xd0, 0xfd, 0x46, 0x38, 0x2a, 0x45, 0x5c, 0x22, 0x42, + 0x5c, 0x3a, 0x47, 0x5c, 0xed, 0x44, 0x57, 0x2a, 0x5d, 0x5c, 0x1e, 0xf3, + 0xc5, 0xed, 0x4b, 0x55, 0x5c, 0xcd, 0x86, 0x1d, 0xed, 0x43, 0x55, 0x5c, + 0xc1, 0x38, 0x11, 0xe7, 0xf6, 0x20, 0xb8, 0x28, 0x03, 0xe7, 0x18, 0xe8, + 0xe7, 0x3e, 0x01, 0x92, 0x32, 0x44, 0x5c, 0xc9, 0xcf, 0x11, 0x7e, 0xfe, + 0x3a, 0x28, 0x18, 0x23, 0x7e, 0xe6, 0xc0, 0x37, 0xc0, 0x46, 0x23, 0x4e, + 0xed, 0x43, 0x42, 0x5c, 0x23, 0x4e, 0x23, 0x46, 0xe5, 0x09, 0x44, 0x4d, + 0xe1, 0x16, 0x00, 0xc5, 0xcd, 0x8b, 0x19, 0xc1, 0xd0, 0x18, 0xe0, 0xfd, + 0xcb, 0x37, 0x4e, 0xc2, 0x2e, 0x1c, 0x2a, 0x4d, 0x5c, 0xcb, 0x7e, 0x28, + 0x1f, 0x23, 0x22, 0x68, 0x5c, 0xef, 0xe0, 0xe2, 0x0f, 0xc0, 0x02, 0x38, + 0xcd, 0xda, 0x1d, 0xd8, 0x2a, 0x68, 0x5c, 0x11, 0x0f, 0x00, 0x19, 0x5e, + 0x23, 0x56, 0x23, 0x66, 0xeb, 0xc3, 0x73, 0x1e, 0xcf, 0x00, 0xef, 0xe1, + 0xe0, 0xe2, 0x36, 0x00, 0x02, 0x01, 0x03, 0x37, 0x00, 0x04, 0x38, 0xa7, + 0xc9, 0x38, 0x37, 0xc9, 0xe7, 0xcd, 0x1f, 0x1c, 0xcd, 0x30, 0x25, 0x28, + 0x29, 0xdf, 0x22, 0x5f, 0x5c, 0x2a, 0x57, 0x5c, 0x7e, 0xfe, 0x2c, 0x28, + 0x09, 0x1e, 0xe4, 0xcd, 0x86, 0x1d, 0x30, 0x02, 0xcf, 0x0d, 0xcd, 0x77, + 0x00, 0xcd, 0x56, 0x1c, 0xdf, 0x22, 0x57, 0x5c, 0x2a, 0x5f, 0x5c, 0xfd, + 0x36, 0x26, 0x00, 0xcd, 0x78, 0x00, 0xdf, 0xfe, 0x2c, 0x28, 0xc9, 0xcd, + 0xee, 0x1b, 0xc9, 0xcd, 0x30, 0x25, 0x20, 0x0b, 0xcd, 0xfb, 0x24, 0xfe, + 0x2c, 0xc4, 0xee, 0x1b, 0xe7, 0x18, 0xf5, 0x3e, 0xe4, 0x47, 0xed, 0xb9, + 0x11, 0x00, 0x02, 0xc3, 0x8b, 0x19, 0xcd, 0x99, 0x1e, 0x60, 0x69, 0xcd, + 0x6e, 0x19, 0x2b, 0x22, 0x57, 0x5c, 0xc9, 0xcd, 0x99, 0x1e, 0x78, 0xb1, + 0x20, 0x04, 0xed, 0x4b, 0x78, 0x5c, 0xed, 0x43, 0x76, 0x5c, 0xc9, 0x2a, + 0x6e, 0x5c, 0xfd, 0x56, 0x36, 0x18, 0x0c, 0xcd, 0x99, 0x1e, 0x60, 0x69, + 0x16, 0x00, 0x7c, 0xfe, 0xf0, 0x30, 0x2c, 0x22, 0x42, 0x5c, 0xfd, 0x72, + 0x0a, 0xc9, 0xcd, 0x85, 0x1e, 0xed, 0x79, 0xc9, 0xcd, 0x85, 0x1e, 0x02, + 0xc9, 0xcd, 0xd5, 0x2d, 0x38, 0x15, 0x28, 0x02, 0xed, 0x44, 0xf5, 0xcd, + 0x99, 0x1e, 0xf1, 0xc9, 0xcd, 0xd5, 0x2d, 0x18, 0x03, 0xcd, 0xa2, 0x2d, + 0x38, 0x01, 0xc8, 0xcf, 0x0a, 0xcd, 0x67, 0x1e, 0x01, 0x00, 0x00, 0xcd, + 0x45, 0x1e, 0x18, 0x03, 0xcd, 0x99, 0x1e, 0x78, 0xb1, 0x20, 0x04, 0xed, + 0x4b, 0xb2, 0x5c, 0xc5, 0xed, 0x5b, 0x4b, 0x5c, 0x2a, 0x59, 0x5c, 0x2b, + 0xcd, 0xe5, 0x19, 0xcd, 0x6b, 0x0d, 0x2a, 0x65, 0x5c, 0x11, 0x32, 0x00, + 0x19, 0xd1, 0xed, 0x52, 0x30, 0x08, 0x2a, 0xb4, 0x5c, 0xa7, 0xed, 0x52, + 0x30, 0x02, 0xcf, 0x15, 0xeb, 0x22, 0xb2, 0x5c, 0xd1, 0xc1, 0x36, 0x3e, + 0x2b, 0xf9, 0xc5, 0xed, 0x73, 0x3d, 0x5c, 0xeb, 0xe9, 0xd1, 0xfd, 0x66, + 0x0d, 0x24, 0xe3, 0x33, 0xed, 0x4b, 0x45, 0x5c, 0xc5, 0xe5, 0xed, 0x73, + 0x3d, 0x5c, 0xd5, 0xcd, 0x67, 0x1e, 0x01, 0x14, 0x00, 0x2a, 0x65, 0x5c, + 0x09, 0x38, 0x0a, 0xeb, 0x21, 0x50, 0x00, 0x19, 0x38, 0x03, 0xed, 0x72, + 0xd8, 0x2e, 0x03, 0xc3, 0x55, 0x00, 0x01, 0x00, 0x00, 0xcd, 0x05, 0x1f, + 0x44, 0x4d, 0xc9, 0xc1, 0xe1, 0xd1, 0x7a, 0xfe, 0x3e, 0x28, 0x0b, 0x3b, + 0xe3, 0xeb, 0xed, 0x73, 0x3d, 0x5c, 0xc5, 0xc3, 0x73, 0x1e, 0xd5, 0xe5, + 0xcf, 0x06, 0xcd, 0x99, 0x1e, 0x76, 0x0b, 0x78, 0xb1, 0x28, 0x0c, 0x78, + 0xa1, 0x3c, 0x20, 0x01, 0x03, 0xfd, 0xcb, 0x01, 0x6e, 0x28, 0xee, 0xfd, + 0xcb, 0x01, 0xae, 0xc9, 0x3e, 0x7f, 0xdb, 0xfe, 0x1f, 0xd8, 0x3e, 0xfe, + 0xdb, 0xfe, 0x1f, 0xc9, 0xcd, 0x30, 0x25, 0x28, 0x05, 0x3e, 0xce, 0xc3, + 0x39, 0x1e, 0xfd, 0xcb, 0x01, 0xf6, 0xcd, 0x8d, 0x2c, 0x30, 0x16, 0xe7, + 0xfe, 0x24, 0x20, 0x05, 0xfd, 0xcb, 0x01, 0xb6, 0xe7, 0xfe, 0x28, 0x20, + 0x3c, 0xe7, 0xfe, 0x29, 0x28, 0x20, 0xcd, 0x8d, 0x2c, 0xd2, 0x8a, 0x1c, + 0xeb, 0xe7, 0xfe, 0x24, 0x20, 0x02, 0xeb, 0xe7, 0xeb, 0x01, 0x06, 0x00, + 0xcd, 0x55, 0x16, 0x23, 0x23, 0x36, 0x0e, 0xfe, 0x2c, 0x20, 0x03, 0xe7, + 0x18, 0xe0, 0xfe, 0x29, 0x20, 0x13, 0xe7, 0xfe, 0x3d, 0x20, 0x0e, 0xe7, + 0x3a, 0x3b, 0x5c, 0xf5, 0xcd, 0xfb, 0x24, 0xf1, 0xfd, 0xae, 0x01, 0xe6, + 0x40, 0xc2, 0x8a, 0x1c, 0xcd, 0xee, 0x1b, 0xcd, 0x30, 0x25, 0xe1, 0xc8, + 0xe9, 0x3e, 0x03, 0x18, 0x02, 0x3e, 0x02, 0xcd, 0x30, 0x25, 0xc4, 0x01, + 0x16, 0xcd, 0x4d, 0x0d, 0xcd, 0xdf, 0x1f, 0xcd, 0xee, 0x1b, 0xc9, 0xdf, + 0xcd, 0x45, 0x20, 0x28, 0x0d, 0xcd, 0x4e, 0x20, 0x28, 0xfb, 0xcd, 0xfc, + 0x1f, 0xcd, 0x4e, 0x20, 0x28, 0xf3, 0xfe, 0x29, 0xc8, 0xcd, 0xc3, 0x1f, + 0x3e, 0x0d, 0xd7, 0xc9, 0xdf, 0xfe, 0xac, 0x20, 0x0d, 0xcd, 0x79, 0x1c, + 0xcd, 0xc3, 0x1f, 0xcd, 0x07, 0x23, 0x3e, 0x16, 0x18, 0x10, 0xfe, 0xad, + 0x20, 0x12, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xc3, 0x1f, 0xcd, 0x99, 0x1e, + 0x3e, 0x17, 0xd7, 0x79, 0xd7, 0x78, 0xd7, 0xc9, 0xcd, 0xf2, 0x21, 0xd0, + 0xcd, 0x70, 0x20, 0xd0, 0xcd, 0xfb, 0x24, 0xcd, 0xc3, 0x1f, 0xfd, 0xcb, + 0x01, 0x76, 0xcc, 0xf1, 0x2b, 0xc2, 0xe3, 0x2d, 0x78, 0xb1, 0x0b, 0xc8, + 0x1a, 0x13, 0xd7, 0x18, 0xf7, 0xfe, 0x29, 0xc8, 0xfe, 0x0d, 0xc8, 0xfe, + 0x3a, 0xc9, 0xdf, 0xfe, 0x3b, 0x28, 0x14, 0xfe, 0x2c, 0x20, 0x0a, 0xcd, + 0x30, 0x25, 0x28, 0x0b, 0x3e, 0x06, 0xd7, 0x18, 0x06, 0xfe, 0x27, 0xc0, + 0xcd, 0xf5, 0x1f, 0xe7, 0xcd, 0x45, 0x20, 0x20, 0x01, 0xc1, 0xbf, 0xc9, + 0xfe, 0x23, 0x37, 0xc0, 0xe7, 0xcd, 0x82, 0x1c, 0xa7, 0xcd, 0xc3, 0x1f, + 0xcd, 0x94, 0x1e, 0xfe, 0x10, 0xd2, 0x0e, 0x16, 0xcd, 0x01, 0x16, 0xa7, + 0xc9, 0xcd, 0x30, 0x25, 0x28, 0x08, 0x3e, 0x01, 0xcd, 0x01, 0x16, 0xcd, + 0x6e, 0x0d, 0xfd, 0x36, 0x02, 0x01, 0xcd, 0xc1, 0x20, 0xcd, 0xee, 0x1b, + 0xed, 0x4b, 0x88, 0x5c, 0x3a, 0x6b, 0x5c, 0xb8, 0x38, 0x03, 0x0e, 0x21, + 0x47, 0xed, 0x43, 0x88, 0x5c, 0x3e, 0x19, 0x90, 0x32, 0x8c, 0x5c, 0xfd, + 0xcb, 0x02, 0x86, 0xcd, 0xd9, 0x0d, 0xc3, 0x6e, 0x0d, 0xcd, 0x4e, 0x20, + 0x28, 0xfb, 0xfe, 0x28, 0x20, 0x0e, 0xe7, 0xcd, 0xdf, 0x1f, 0xdf, 0xfe, + 0x29, 0xc2, 0x8a, 0x1c, 0xe7, 0xc3, 0xb2, 0x21, 0xfe, 0xca, 0x20, 0x11, + 0xe7, 0xcd, 0x1f, 0x1c, 0xfd, 0xcb, 0x37, 0xfe, 0xfd, 0xcb, 0x01, 0x76, + 0xc2, 0x8a, 0x1c, 0x18, 0x0d, 0xcd, 0x8d, 0x2c, 0xd2, 0xaf, 0x21, 0xcd, + 0x1f, 0x1c, 0xfd, 0xcb, 0x37, 0xbe, 0xcd, 0x30, 0x25, 0xca, 0xb2, 0x21, + 0xcd, 0xbf, 0x16, 0x21, 0x71, 0x5c, 0xcb, 0xb6, 0xcb, 0xee, 0x01, 0x01, + 0x00, 0xcb, 0x7e, 0x20, 0x0b, 0x3a, 0x3b, 0x5c, 0xe6, 0x40, 0x20, 0x02, + 0x0e, 0x03, 0xb6, 0x77, 0xf7, 0x36, 0x0d, 0x79, 0x0f, 0x0f, 0x30, 0x05, + 0x3e, 0x22, 0x12, 0x2b, 0x77, 0x22, 0x5b, 0x5c, 0xfd, 0xcb, 0x37, 0x7e, + 0x20, 0x2c, 0x2a, 0x5d, 0x5c, 0xe5, 0x2a, 0x3d, 0x5c, 0xe5, 0x21, 0x3a, + 0x21, 0xe5, 0xfd, 0xcb, 0x30, 0x66, 0x28, 0x04, 0xed, 0x73, 0x3d, 0x5c, + 0x2a, 0x61, 0x5c, 0xcd, 0xa7, 0x11, 0xfd, 0x36, 0x00, 0xff, 0xcd, 0x2c, + 0x0f, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0xb9, 0x21, 0x18, 0x03, 0xcd, 0x2c, + 0x0f, 0xfd, 0x36, 0x22, 0x00, 0xcd, 0xd6, 0x21, 0x20, 0x0a, 0xcd, 0x1d, + 0x11, 0xed, 0x4b, 0x82, 0x5c, 0xcd, 0xd9, 0x0d, 0x21, 0x71, 0x5c, 0xcb, + 0xae, 0xcb, 0x7e, 0xcb, 0xbe, 0x20, 0x1c, 0xe1, 0xe1, 0x22, 0x3d, 0x5c, + 0xe1, 0x22, 0x5f, 0x5c, 0xfd, 0xcb, 0x01, 0xfe, 0xcd, 0xb9, 0x21, 0x2a, + 0x5f, 0x5c, 0xfd, 0x36, 0x26, 0x00, 0x22, 0x5d, 0x5c, 0x18, 0x17, 0x2a, + 0x63, 0x5c, 0xed, 0x5b, 0x61, 0x5c, 0x37, 0xed, 0x52, 0x44, 0x4d, 0xcd, + 0xb2, 0x2a, 0xcd, 0xff, 0x2a, 0x18, 0x03, 0xcd, 0xfc, 0x1f, 0xcd, 0x4e, + 0x20, 0xca, 0xc1, 0x20, 0xc9, 0x2a, 0x61, 0x5c, 0x22, 0x5d, 0x5c, 0xdf, + 0xfe, 0xe2, 0x28, 0x0c, 0x3a, 0x71, 0x5c, 0xcd, 0x59, 0x1c, 0xdf, 0xfe, + 0x0d, 0xc8, 0xcf, 0x0b, 0xcd, 0x30, 0x25, 0xc8, 0xcf, 0x10, 0x2a, 0x51, + 0x5c, 0x23, 0x23, 0x23, 0x23, 0x7e, 0xfe, 0x4b, 0xc9, 0xe7, 0xcd, 0xf2, + 0x21, 0xd8, 0xdf, 0xfe, 0x2c, 0x28, 0xf6, 0xfe, 0x3b, 0x28, 0xf2, 0xc3, + 0x8a, 0x1c, 0xfe, 0xd9, 0xd8, 0xfe, 0xdf, 0x3f, 0xd8, 0xf5, 0xe7, 0xf1, + 0xd6, 0xc9, 0xf5, 0xcd, 0x82, 0x1c, 0xf1, 0xa7, 0xcd, 0xc3, 0x1f, 0xf5, + 0xcd, 0x94, 0x1e, 0x57, 0xf1, 0xd7, 0x7a, 0xd7, 0xc9, 0xd6, 0x11, 0xce, + 0x00, 0x28, 0x1d, 0xd6, 0x02, 0xce, 0x00, 0x28, 0x56, 0xfe, 0x01, 0x7a, + 0x06, 0x01, 0x20, 0x04, 0x07, 0x07, 0x06, 0x04, 0x4f, 0x7a, 0xfe, 0x02, + 0x30, 0x16, 0x79, 0x21, 0x91, 0x5c, 0x18, 0x38, 0x7a, 0x06, 0x07, 0x38, + 0x05, 0x07, 0x07, 0x07, 0x06, 0x38, 0x4f, 0x7a, 0xfe, 0x0a, 0x38, 0x02, + 0xcf, 0x13, 0x21, 0x8f, 0x5c, 0xfe, 0x08, 0x38, 0x0b, 0x7e, 0x28, 0x07, + 0xb0, 0x2f, 0xe6, 0x24, 0x28, 0x01, 0x78, 0x4f, 0x79, 0xcd, 0x6c, 0x22, + 0x3e, 0x07, 0xba, 0x9f, 0xcd, 0x6c, 0x22, 0x07, 0x07, 0xe6, 0x50, 0x47, + 0x3e, 0x08, 0xba, 0x9f, 0xae, 0xa0, 0xae, 0x77, 0x23, 0x78, 0xc9, 0x9f, + 0x7a, 0x0f, 0x06, 0x80, 0x20, 0x03, 0x0f, 0x06, 0x40, 0x4f, 0x7a, 0xfe, + 0x08, 0x28, 0x04, 0xfe, 0x02, 0x30, 0xbd, 0x79, 0x21, 0x8f, 0x5c, 0xcd, + 0x6c, 0x22, 0x79, 0x0f, 0x0f, 0x0f, 0x18, 0xd8, 0xcd, 0x94, 0x1e, 0xfe, + 0x08, 0x30, 0xa9, 0xd3, 0xfe, 0x07, 0x07, 0x07, 0xcb, 0x6f, 0x20, 0x02, + 0xee, 0x07, 0x32, 0x48, 0x5c, 0xc9, 0x3e, 0xaf, 0x90, 0xda, 0xf9, 0x24, + 0x47, 0xa7, 0x1f, 0x37, 0x1f, 0xa7, 0x1f, 0xa8, 0xe6, 0xf8, 0xa8, 0x67, + 0x79, 0x07, 0x07, 0x07, 0xa8, 0xe6, 0xc7, 0xa8, 0x07, 0x07, 0x6f, 0x79, + 0xe6, 0x07, 0xc9, 0xcd, 0x07, 0x23, 0xcd, 0xaa, 0x22, 0x47, 0x04, 0x7e, + 0x07, 0x10, 0xfd, 0xe6, 0x01, 0xc3, 0x28, 0x2d, 0xcd, 0x07, 0x23, 0xcd, + 0xe5, 0x22, 0xc3, 0x4d, 0x0d, 0xed, 0x43, 0x7d, 0x5c, 0xcd, 0xaa, 0x22, + 0x47, 0x04, 0x3e, 0xfe, 0x0f, 0x10, 0xfd, 0x47, 0x7e, 0xfd, 0x4e, 0x57, + 0xcb, 0x41, 0x20, 0x01, 0xa0, 0xcb, 0x51, 0x20, 0x02, 0xa8, 0x2f, 0x77, + 0xc3, 0xdb, 0x0b, 0xcd, 0x14, 0x23, 0x47, 0xc5, 0xcd, 0x14, 0x23, 0x59, + 0xc1, 0x51, 0x4f, 0xc9, 0xcd, 0xd5, 0x2d, 0xda, 0xf9, 0x24, 0x0e, 0x01, + 0xc8, 0x0e, 0xff, 0xc9, 0xdf, 0xfe, 0x2c, 0xc2, 0x8a, 0x1c, 0xe7, 0xcd, + 0x82, 0x1c, 0xcd, 0xee, 0x1b, 0xef, 0x2a, 0x3d, 0x38, 0x7e, 0xfe, 0x81, + 0x30, 0x05, 0xef, 0x02, 0x38, 0x18, 0xa1, 0xef, 0xa3, 0x38, 0x36, 0x83, + 0xef, 0xc5, 0x02, 0x38, 0xcd, 0x7d, 0x24, 0xc5, 0xef, 0x31, 0xe1, 0x04, + 0x38, 0x7e, 0xfe, 0x80, 0x30, 0x08, 0xef, 0x02, 0x02, 0x38, 0xc1, 0xc3, + 0xdc, 0x22, 0xef, 0xc2, 0x01, 0xc0, 0x02, 0x03, 0x01, 0xe0, 0x0f, 0xc0, + 0x01, 0x31, 0xe0, 0x01, 0x31, 0xe0, 0xa0, 0xc1, 0x02, 0x38, 0xfd, 0x34, + 0x62, 0xcd, 0x94, 0x1e, 0x6f, 0xe5, 0xcd, 0x94, 0x1e, 0xe1, 0x67, 0x22, + 0x7d, 0x5c, 0xc1, 0xc3, 0x20, 0x24, 0xdf, 0xfe, 0x2c, 0x28, 0x06, 0xcd, + 0xee, 0x1b, 0xc3, 0x77, 0x24, 0xe7, 0xcd, 0x82, 0x1c, 0xcd, 0xee, 0x1b, + 0xef, 0xc5, 0xa2, 0x04, 0x1f, 0x31, 0x30, 0x30, 0x00, 0x06, 0x02, 0x38, + 0xc3, 0x77, 0x24, 0xc0, 0x02, 0xc1, 0x02, 0x31, 0x2a, 0xe1, 0x01, 0xe1, + 0x2a, 0x0f, 0xe0, 0x05, 0x2a, 0xe0, 0x01, 0x3d, 0x38, 0x7e, 0xfe, 0x81, + 0x30, 0x07, 0xef, 0x02, 0x02, 0x38, 0xc3, 0x77, 0x24, 0xcd, 0x7d, 0x24, + 0xc5, 0xef, 0x02, 0xe1, 0x01, 0x05, 0xc1, 0x02, 0x01, 0x31, 0xe1, 0x04, + 0xc2, 0x02, 0x01, 0x31, 0xe1, 0x04, 0xe2, 0xe5, 0xe0, 0x03, 0xa2, 0x04, + 0x31, 0x1f, 0xc5, 0x02, 0x20, 0xc0, 0x02, 0xc2, 0x02, 0xc1, 0xe5, 0x04, + 0xe0, 0xe2, 0x04, 0x0f, 0xe1, 0x01, 0xc1, 0x02, 0xe0, 0x04, 0xe2, 0xe5, + 0x04, 0x03, 0xc2, 0x2a, 0xe1, 0x2a, 0x0f, 0x02, 0x38, 0x1a, 0xfe, 0x81, + 0xc1, 0xda, 0x77, 0x24, 0xc5, 0xef, 0x01, 0x38, 0x3a, 0x7d, 0x5c, 0xcd, + 0x28, 0x2d, 0xef, 0xc0, 0x0f, 0x01, 0x38, 0x3a, 0x7e, 0x5c, 0xcd, 0x28, + 0x2d, 0xef, 0xc5, 0x0f, 0xe0, 0xe5, 0x38, 0xc1, 0x05, 0x28, 0x3c, 0x18, + 0x14, 0xef, 0xe1, 0x31, 0xe3, 0x04, 0xe2, 0xe4, 0x04, 0x03, 0xc1, 0x02, + 0xe4, 0x04, 0xe2, 0xe3, 0x04, 0x0f, 0xc2, 0x02, 0x38, 0xc5, 0xef, 0xc0, + 0x02, 0xe1, 0x0f, 0x31, 0x38, 0x3a, 0x7d, 0x5c, 0xcd, 0x28, 0x2d, 0xef, + 0x03, 0xe0, 0xe2, 0x0f, 0xc0, 0x01, 0xe0, 0x38, 0x3a, 0x7e, 0x5c, 0xcd, + 0x28, 0x2d, 0xef, 0x03, 0x38, 0xcd, 0xb7, 0x24, 0xc1, 0x10, 0xc6, 0xef, + 0x02, 0x02, 0x01, 0x38, 0x3a, 0x7d, 0x5c, 0xcd, 0x28, 0x2d, 0xef, 0x03, + 0x01, 0x38, 0x3a, 0x7e, 0x5c, 0xcd, 0x28, 0x2d, 0xef, 0x03, 0x38, 0xcd, + 0xb7, 0x24, 0xc3, 0x4d, 0x0d, 0xef, 0x31, 0x28, 0x34, 0x32, 0x00, 0x01, + 0x05, 0xe5, 0x01, 0x05, 0x2a, 0x38, 0xcd, 0xd5, 0x2d, 0x38, 0x06, 0xe6, + 0xfc, 0xc6, 0x04, 0x30, 0x02, 0x3e, 0xfc, 0xf5, 0xcd, 0x28, 0x2d, 0xef, + 0xe5, 0x01, 0x05, 0x31, 0x1f, 0xc4, 0x02, 0x31, 0xa2, 0x04, 0x1f, 0xc1, + 0x01, 0xc0, 0x02, 0x31, 0x04, 0x31, 0x0f, 0xa1, 0x03, 0x1b, 0xc3, 0x02, + 0x38, 0xc1, 0xc9, 0xcd, 0x07, 0x23, 0x79, 0xb8, 0x30, 0x06, 0x69, 0xd5, + 0xaf, 0x5f, 0x18, 0x07, 0xb1, 0xc8, 0x68, 0x41, 0xd5, 0x16, 0x00, 0x60, + 0x78, 0x1f, 0x85, 0x38, 0x03, 0xbc, 0x38, 0x07, 0x94, 0x4f, 0xd9, 0xc1, + 0xc5, 0x18, 0x04, 0x4f, 0xd5, 0xd9, 0xc1, 0x2a, 0x7d, 0x5c, 0x78, 0x84, + 0x47, 0x79, 0x3c, 0x85, 0x38, 0x0d, 0x28, 0x0d, 0x3d, 0x4f, 0xcd, 0xe5, + 0x22, 0xd9, 0x79, 0x10, 0xd9, 0xd1, 0xc9, 0x28, 0xf3, 0xcf, 0x0a, 0xdf, + 0x06, 0x00, 0xc5, 0x4f, 0x21, 0x96, 0x25, 0xcd, 0xdc, 0x16, 0x79, 0xd2, + 0x84, 0x26, 0x06, 0x00, 0x4e, 0x09, 0xe9, 0xcd, 0x74, 0x00, 0x03, 0xfe, + 0x0d, 0xca, 0x8a, 0x1c, 0xfe, 0x22, 0x20, 0xf3, 0xcd, 0x74, 0x00, 0xfe, + 0x22, 0xc9, 0xe7, 0xfe, 0x28, 0x20, 0x06, 0xcd, 0x79, 0x1c, 0xdf, 0xfe, + 0x29, 0xc2, 0x8a, 0x1c, 0xfd, 0xcb, 0x01, 0x7e, 0xc9, 0xcd, 0x07, 0x23, + 0x2a, 0x36, 0x5c, 0x11, 0x00, 0x01, 0x19, 0x79, 0x0f, 0x0f, 0x0f, 0xe6, + 0xe0, 0xa8, 0x5f, 0x79, 0xe6, 0x18, 0xee, 0x40, 0x57, 0x06, 0x60, 0xc5, + 0xd5, 0xe5, 0x1a, 0xae, 0x28, 0x04, 0x3c, 0x20, 0x1a, 0x3d, 0x4f, 0x06, + 0x07, 0x14, 0x23, 0x1a, 0xae, 0xa9, 0x20, 0x0f, 0x10, 0xf7, 0xc1, 0xc1, + 0xc1, 0x3e, 0x80, 0x90, 0x01, 0x01, 0x00, 0xf7, 0x12, 0x18, 0x0a, 0xe1, + 0x11, 0x08, 0x00, 0x19, 0xd1, 0xc1, 0x10, 0xd3, 0x48, 0xc3, 0xb2, 0x2a, + 0xcd, 0x07, 0x23, 0x79, 0x0f, 0x0f, 0x0f, 0x4f, 0xe6, 0xe0, 0xa8, 0x6f, + 0x79, 0xe6, 0x03, 0xee, 0x58, 0x67, 0x7e, 0xc3, 0x28, 0x2d, 0x22, 0x1c, + 0x28, 0x4f, 0x2e, 0xf2, 0x2b, 0x12, 0xa8, 0x56, 0xa5, 0x57, 0xa7, 0x84, + 0xa6, 0x8f, 0xc4, 0xe6, 0xaa, 0xbf, 0xab, 0xc7, 0xa9, 0xce, 0x00, 0xe7, + 0xc3, 0xff, 0x24, 0xdf, 0x23, 0xe5, 0x01, 0x00, 0x00, 0xcd, 0x0f, 0x25, + 0x20, 0x1b, 0xcd, 0x0f, 0x25, 0x28, 0xfb, 0xcd, 0x30, 0x25, 0x28, 0x11, + 0xf7, 0xe1, 0xd5, 0x7e, 0x23, 0x12, 0x13, 0xfe, 0x22, 0x20, 0xf8, 0x7e, + 0x23, 0xfe, 0x22, 0x28, 0xf2, 0x0b, 0xd1, 0x21, 0x3b, 0x5c, 0xcb, 0xb6, + 0xcb, 0x7e, 0xc4, 0xb2, 0x2a, 0xc3, 0x12, 0x27, 0xe7, 0xcd, 0xfb, 0x24, + 0xfe, 0x29, 0xc2, 0x8a, 0x1c, 0xe7, 0xc3, 0x12, 0x27, 0xc3, 0xbd, 0x27, + 0xcd, 0x30, 0x25, 0x28, 0x28, 0xed, 0x4b, 0x76, 0x5c, 0xcd, 0x2b, 0x2d, + 0xef, 0xa1, 0x0f, 0x34, 0x37, 0x16, 0x04, 0x34, 0x80, 0x41, 0x00, 0x00, + 0x80, 0x32, 0x02, 0xa1, 0x03, 0x31, 0x38, 0xcd, 0xa2, 0x2d, 0xed, 0x43, + 0x76, 0x5c, 0x7e, 0xa7, 0x28, 0x03, 0xd6, 0x10, 0x77, 0x18, 0x09, 0xcd, + 0x30, 0x25, 0x28, 0x04, 0xef, 0xa3, 0x38, 0x34, 0xe7, 0xc3, 0xc3, 0x26, + 0x01, 0x5a, 0x10, 0xe7, 0xfe, 0x23, 0xca, 0x0d, 0x27, 0x21, 0x3b, 0x5c, + 0xcb, 0xb6, 0xcb, 0x7e, 0x28, 0x1f, 0xcd, 0x8e, 0x02, 0x0e, 0x00, 0x20, + 0x13, 0xcd, 0x1e, 0x03, 0x30, 0x0e, 0x15, 0x5f, 0xcd, 0x33, 0x03, 0xf5, + 0x01, 0x01, 0x00, 0xf7, 0xf1, 0x12, 0x0e, 0x01, 0x06, 0x00, 0xcd, 0xb2, + 0x2a, 0xc3, 0x12, 0x27, 0xcd, 0x22, 0x25, 0xc4, 0x35, 0x25, 0xe7, 0xc3, + 0xdb, 0x25, 0xcd, 0x22, 0x25, 0xc4, 0x80, 0x25, 0xe7, 0x18, 0x48, 0xcd, + 0x22, 0x25, 0xc4, 0xcb, 0x22, 0xe7, 0x18, 0x3f, 0xcd, 0x88, 0x2c, 0x30, + 0x56, 0xfe, 0x41, 0x30, 0x3c, 0xcd, 0x30, 0x25, 0x20, 0x23, 0xcd, 0x9b, + 0x2c, 0xdf, 0x01, 0x06, 0x00, 0xcd, 0x55, 0x16, 0x23, 0x36, 0x0e, 0x23, + 0xeb, 0x2a, 0x65, 0x5c, 0x0e, 0x05, 0xa7, 0xed, 0x42, 0x22, 0x65, 0x5c, + 0xed, 0xb0, 0xeb, 0x2b, 0xcd, 0x77, 0x00, 0x18, 0x0e, 0xdf, 0x23, 0x7e, + 0xfe, 0x0e, 0x20, 0xfa, 0x23, 0xcd, 0xb4, 0x33, 0x22, 0x5d, 0x5c, 0xfd, + 0xcb, 0x01, 0xf6, 0x18, 0x14, 0xcd, 0xb2, 0x28, 0xda, 0x2e, 0x1c, 0xcc, + 0x96, 0x29, 0x3a, 0x3b, 0x5c, 0xfe, 0xc0, 0x38, 0x04, 0x23, 0xcd, 0xb4, + 0x33, 0x18, 0x33, 0x01, 0xdb, 0x09, 0xfe, 0x2d, 0x28, 0x27, 0x01, 0x18, + 0x10, 0xfe, 0xae, 0x28, 0x20, 0xd6, 0xaf, 0xda, 0x8a, 0x1c, 0x01, 0xf0, + 0x04, 0xfe, 0x14, 0x28, 0x14, 0xd2, 0x8a, 0x1c, 0x06, 0x10, 0xc6, 0xdc, + 0x4f, 0xfe, 0xdf, 0x30, 0x02, 0xcb, 0xb1, 0xfe, 0xee, 0x38, 0x02, 0xcb, + 0xb9, 0xc5, 0xe7, 0xc3, 0xff, 0x24, 0xdf, 0xfe, 0x28, 0x20, 0x0c, 0xfd, + 0xcb, 0x01, 0x76, 0x20, 0x17, 0xcd, 0x52, 0x2a, 0xe7, 0x18, 0xf0, 0x06, + 0x00, 0x4f, 0x21, 0x95, 0x27, 0xcd, 0xdc, 0x16, 0x30, 0x06, 0x4e, 0x21, + 0xed, 0x26, 0x09, 0x46, 0xd1, 0x7a, 0xb8, 0x38, 0x3a, 0xa7, 0xca, 0x18, + 0x00, 0xc5, 0x21, 0x3b, 0x5c, 0x7b, 0xfe, 0xed, 0x20, 0x06, 0xcb, 0x76, + 0x20, 0x02, 0x1e, 0x99, 0xd5, 0xcd, 0x30, 0x25, 0x28, 0x09, 0x7b, 0xe6, + 0x3f, 0x47, 0xef, 0x3b, 0x38, 0x18, 0x09, 0x7b, 0xfd, 0xae, 0x01, 0xe6, + 0x40, 0xc2, 0x8a, 0x1c, 0xd1, 0x21, 0x3b, 0x5c, 0xcb, 0xf6, 0xcb, 0x7b, + 0x20, 0x02, 0xcb, 0xb6, 0xc1, 0x18, 0xc1, 0xd5, 0x79, 0xfd, 0xcb, 0x01, + 0x76, 0x20, 0x15, 0xe6, 0x3f, 0xc6, 0x08, 0x4f, 0xfe, 0x10, 0x20, 0x04, + 0xcb, 0xf1, 0x18, 0x08, 0x38, 0xd7, 0xfe, 0x17, 0x28, 0x02, 0xcb, 0xf9, + 0xc5, 0xe7, 0xc3, 0xff, 0x24, 0x2b, 0xcf, 0x2d, 0xc3, 0x2a, 0xc4, 0x2f, + 0xc5, 0x5e, 0xc6, 0x3d, 0xce, 0x3e, 0xcc, 0x3c, 0xcd, 0xc7, 0xc9, 0xc8, + 0xca, 0xc9, 0xcb, 0xc5, 0xc7, 0xc6, 0xc8, 0x00, 0x06, 0x08, 0x08, 0x0a, + 0x02, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0xcd, 0x30, 0x25, + 0x20, 0x35, 0xe7, 0xcd, 0x8d, 0x2c, 0xd2, 0x8a, 0x1c, 0xe7, 0xfe, 0x24, + 0xf5, 0x20, 0x01, 0xe7, 0xfe, 0x28, 0x20, 0x12, 0xe7, 0xfe, 0x29, 0x28, + 0x10, 0xcd, 0xfb, 0x24, 0xdf, 0xfe, 0x2c, 0x20, 0x03, 0xe7, 0x18, 0xf5, + 0xfe, 0x29, 0xc2, 0x8a, 0x1c, 0xe7, 0x21, 0x3b, 0x5c, 0xcb, 0xb6, 0xf1, + 0x28, 0x02, 0xcb, 0xf6, 0xc3, 0x12, 0x27, 0xe7, 0xe6, 0xdf, 0x47, 0xe7, + 0xd6, 0x24, 0x4f, 0x20, 0x01, 0xe7, 0xe7, 0xe5, 0x2a, 0x53, 0x5c, 0x2b, + 0x11, 0xce, 0x00, 0xc5, 0xcd, 0x86, 0x1d, 0xc1, 0x30, 0x02, 0xcf, 0x18, + 0xe5, 0xcd, 0xab, 0x28, 0xe6, 0xdf, 0xb8, 0x20, 0x08, 0xcd, 0xab, 0x28, + 0xd6, 0x24, 0xb9, 0x28, 0x0c, 0xe1, 0x2b, 0x11, 0x00, 0x02, 0xc5, 0xcd, + 0x8b, 0x19, 0xc1, 0x18, 0xd7, 0xa7, 0xcc, 0xab, 0x28, 0xd1, 0xd1, 0xed, + 0x53, 0x5d, 0x5c, 0xcd, 0xab, 0x28, 0xe5, 0xfe, 0x29, 0x28, 0x42, 0x23, + 0x7e, 0xfe, 0x0e, 0x16, 0x40, 0x28, 0x07, 0x2b, 0xcd, 0xab, 0x28, 0x23, + 0x16, 0x00, 0x23, 0xe5, 0xd5, 0xcd, 0xfb, 0x24, 0xf1, 0xfd, 0xae, 0x01, + 0xe6, 0x40, 0x20, 0x2b, 0xe1, 0xeb, 0x2a, 0x65, 0x5c, 0x01, 0x05, 0x00, + 0xed, 0x42, 0x22, 0x65, 0x5c, 0xed, 0xb0, 0xeb, 0x2b, 0xcd, 0xab, 0x28, + 0xfe, 0x29, 0x28, 0x0d, 0xe5, 0xdf, 0xfe, 0x2c, 0x20, 0x0d, 0xe7, 0xe1, + 0xcd, 0xab, 0x28, 0x18, 0xbe, 0xe5, 0xdf, 0xfe, 0x29, 0x28, 0x02, 0xcf, + 0x19, 0xd1, 0xeb, 0x22, 0x5d, 0x5c, 0x2a, 0x0b, 0x5c, 0xe3, 0x22, 0x0b, + 0x5c, 0xd5, 0xe7, 0xe7, 0xcd, 0xfb, 0x24, 0xe1, 0x22, 0x5d, 0x5c, 0xe1, + 0x22, 0x0b, 0x5c, 0xe7, 0xc3, 0x12, 0x27, 0x23, 0x7e, 0xfe, 0x21, 0x38, + 0xfa, 0xc9, 0xfd, 0xcb, 0x01, 0xf6, 0xdf, 0xcd, 0x8d, 0x2c, 0xd2, 0x8a, + 0x1c, 0xe5, 0xe6, 0x1f, 0x4f, 0xe7, 0xe5, 0xfe, 0x28, 0x28, 0x28, 0xcb, + 0xf1, 0xfe, 0x24, 0x28, 0x11, 0xcb, 0xe9, 0xcd, 0x88, 0x2c, 0x30, 0x0f, + 0xcd, 0x88, 0x2c, 0x30, 0x16, 0xcb, 0xb1, 0xe7, 0x18, 0xf6, 0xe7, 0xfd, + 0xcb, 0x01, 0xb6, 0x3a, 0x0c, 0x5c, 0xa7, 0x28, 0x06, 0xcd, 0x30, 0x25, + 0xc2, 0x51, 0x29, 0x41, 0xcd, 0x30, 0x25, 0x20, 0x08, 0x79, 0xe6, 0xe0, + 0xcb, 0xff, 0x4f, 0x18, 0x37, 0x2a, 0x4b, 0x5c, 0x7e, 0xe6, 0x7f, 0x28, + 0x2d, 0xb9, 0x20, 0x22, 0x17, 0x87, 0xf2, 0x3f, 0x29, 0x38, 0x30, 0xd1, + 0xd5, 0xe5, 0x23, 0x1a, 0x13, 0xfe, 0x20, 0x28, 0xfa, 0xf6, 0x20, 0xbe, + 0x28, 0xf4, 0xf6, 0x80, 0xbe, 0x20, 0x06, 0x1a, 0xcd, 0x88, 0x2c, 0x30, + 0x15, 0xe1, 0xc5, 0xcd, 0xb8, 0x19, 0xeb, 0xc1, 0x18, 0xce, 0xcb, 0xf8, + 0xd1, 0xdf, 0xfe, 0x28, 0x28, 0x09, 0xcb, 0xe8, 0x18, 0x0d, 0xd1, 0xd1, + 0xd1, 0xe5, 0xdf, 0xcd, 0x88, 0x2c, 0x30, 0x03, 0xe7, 0x18, 0xf8, 0xe1, + 0xcb, 0x10, 0xcb, 0x70, 0xc9, 0x2a, 0x0b, 0x5c, 0x7e, 0xfe, 0x29, 0xca, + 0xef, 0x28, 0x7e, 0xf6, 0x60, 0x47, 0x23, 0x7e, 0xfe, 0x0e, 0x28, 0x07, + 0x2b, 0xcd, 0xab, 0x28, 0x23, 0xcb, 0xa8, 0x78, 0xb9, 0x28, 0x12, 0x23, + 0x23, 0x23, 0x23, 0x23, 0xcd, 0xab, 0x28, 0xfe, 0x29, 0xca, 0xef, 0x28, + 0xcd, 0xab, 0x28, 0x18, 0xd9, 0xcb, 0x69, 0x20, 0x0c, 0x23, 0xed, 0x5b, + 0x65, 0x5c, 0xcd, 0xc0, 0x33, 0xeb, 0x22, 0x65, 0x5c, 0xd1, 0xd1, 0xaf, + 0x3c, 0xc9, 0xaf, 0x47, 0xcb, 0x79, 0x20, 0x4b, 0xcb, 0x7e, 0x20, 0x0e, + 0x3c, 0x23, 0x4e, 0x23, 0x46, 0x23, 0xeb, 0xcd, 0xb2, 0x2a, 0xdf, 0xc3, + 0x49, 0x2a, 0x23, 0x23, 0x23, 0x46, 0xcb, 0x71, 0x28, 0x0a, 0x05, 0x28, + 0xe8, 0xeb, 0xdf, 0xfe, 0x28, 0x20, 0x61, 0xeb, 0xeb, 0x18, 0x24, 0xe5, + 0xdf, 0xe1, 0xfe, 0x2c, 0x28, 0x20, 0xcb, 0x79, 0x28, 0x52, 0xcb, 0x71, + 0x20, 0x06, 0xfe, 0x29, 0x20, 0x3c, 0xe7, 0xc9, 0xfe, 0x29, 0x28, 0x6c, + 0xfe, 0xcc, 0x20, 0x32, 0xdf, 0x2b, 0x22, 0x5d, 0x5c, 0x18, 0x5e, 0x21, + 0x00, 0x00, 0xe5, 0xe7, 0xe1, 0x79, 0xfe, 0xc0, 0x20, 0x09, 0xdf, 0xfe, + 0x29, 0x28, 0x51, 0xfe, 0xcc, 0x28, 0xe5, 0xc5, 0xe5, 0xcd, 0xee, 0x2a, + 0xe3, 0xeb, 0xcd, 0xcc, 0x2a, 0x38, 0x19, 0x0b, 0xcd, 0xf4, 0x2a, 0x09, + 0xd1, 0xc1, 0x10, 0xb3, 0xcb, 0x79, 0x20, 0x66, 0xe5, 0xcb, 0x71, 0x20, + 0x13, 0x42, 0x4b, 0xdf, 0xfe, 0x29, 0x28, 0x02, 0xcf, 0x02, 0xe7, 0xe1, + 0x11, 0x05, 0x00, 0xcd, 0xf4, 0x2a, 0x09, 0xc9, 0xcd, 0xee, 0x2a, 0xe3, + 0xcd, 0xf4, 0x2a, 0xc1, 0x09, 0x23, 0x42, 0x4b, 0xeb, 0xcd, 0xb1, 0x2a, + 0xdf, 0xfe, 0x29, 0x28, 0x07, 0xfe, 0x2c, 0x20, 0xdb, 0xcd, 0x52, 0x2a, + 0xe7, 0xfe, 0x28, 0x28, 0xf8, 0xfd, 0xcb, 0x01, 0xb6, 0xc9, 0xcd, 0x30, + 0x25, 0xc4, 0xf1, 0x2b, 0xe7, 0xfe, 0x29, 0x28, 0x50, 0xd5, 0xaf, 0xf5, + 0xc5, 0x11, 0x01, 0x00, 0xdf, 0xe1, 0xfe, 0xcc, 0x28, 0x17, 0xf1, 0xcd, + 0xcd, 0x2a, 0xf5, 0x50, 0x59, 0xe5, 0xdf, 0xe1, 0xfe, 0xcc, 0x28, 0x09, + 0xfe, 0x29, 0xc2, 0x8a, 0x1c, 0x62, 0x6b, 0x18, 0x13, 0xe5, 0xe7, 0xe1, + 0xfe, 0x29, 0x28, 0x0c, 0xf1, 0xcd, 0xcd, 0x2a, 0xf5, 0xdf, 0x60, 0x69, + 0xfe, 0x29, 0x20, 0xe6, 0xf1, 0xe3, 0x19, 0x2b, 0xe3, 0xa7, 0xed, 0x52, + 0x01, 0x00, 0x00, 0x38, 0x07, 0x23, 0xa7, 0xfa, 0x20, 0x2a, 0x44, 0x4d, + 0xd1, 0xfd, 0xcb, 0x01, 0xb6, 0xcd, 0x30, 0x25, 0xc8, 0xaf, 0xfd, 0xcb, + 0x01, 0xb6, 0xc5, 0xcd, 0xa9, 0x33, 0xc1, 0x2a, 0x65, 0x5c, 0x77, 0x23, + 0x73, 0x23, 0x72, 0x23, 0x71, 0x23, 0x70, 0x23, 0x22, 0x65, 0x5c, 0xc9, + 0xaf, 0xd5, 0xe5, 0xf5, 0xcd, 0x82, 0x1c, 0xf1, 0xcd, 0x30, 0x25, 0x28, + 0x12, 0xf5, 0xcd, 0x99, 0x1e, 0xd1, 0x78, 0xb1, 0x37, 0x28, 0x05, 0xe1, + 0xe5, 0xa7, 0xed, 0x42, 0x7a, 0xde, 0x00, 0xe1, 0xd1, 0xc9, 0xeb, 0x23, + 0x5e, 0x23, 0x56, 0xc9, 0xcd, 0x30, 0x25, 0xc8, 0xcd, 0xa9, 0x30, 0xda, + 0x15, 0x1f, 0xc9, 0x2a, 0x4d, 0x5c, 0xfd, 0xcb, 0x37, 0x4e, 0x28, 0x5e, + 0x01, 0x05, 0x00, 0x03, 0x23, 0x7e, 0xfe, 0x20, 0x28, 0xfa, 0x30, 0x0b, + 0xfe, 0x10, 0x38, 0x11, 0xfe, 0x16, 0x30, 0x0d, 0x23, 0x18, 0xed, 0xcd, + 0x88, 0x2c, 0x38, 0xe7, 0xfe, 0x24, 0xca, 0xc0, 0x2b, 0x79, 0x2a, 0x59, + 0x5c, 0x2b, 0xcd, 0x55, 0x16, 0x23, 0x23, 0xeb, 0xd5, 0x2a, 0x4d, 0x5c, + 0x1b, 0xd6, 0x06, 0x47, 0x28, 0x11, 0x23, 0x7e, 0xfe, 0x21, 0x38, 0xfa, + 0xf6, 0x20, 0x13, 0x12, 0x10, 0xf4, 0xf6, 0x80, 0x12, 0x3e, 0xc0, 0x2a, + 0x4d, 0x5c, 0xae, 0xf6, 0x20, 0xe1, 0xcd, 0xea, 0x2b, 0xe5, 0xef, 0x02, + 0x38, 0xe1, 0x01, 0x05, 0x00, 0xa7, 0xed, 0x42, 0x18, 0x40, 0xfd, 0xcb, + 0x01, 0x76, 0x28, 0x06, 0x11, 0x06, 0x00, 0x19, 0x18, 0xe7, 0x2a, 0x4d, + 0x5c, 0xed, 0x4b, 0x72, 0x5c, 0xfd, 0xcb, 0x37, 0x46, 0x20, 0x30, 0x78, + 0xb1, 0xc8, 0xe5, 0xf7, 0xd5, 0xc5, 0x54, 0x5d, 0x23, 0x36, 0x20, 0xed, + 0xb8, 0xe5, 0xcd, 0xf1, 0x2b, 0xe1, 0xe3, 0xa7, 0xed, 0x42, 0x09, 0x30, + 0x02, 0x44, 0x4d, 0xe3, 0xeb, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, + 0xd1, 0xe1, 0xeb, 0x78, 0xb1, 0xc8, 0xd5, 0xed, 0xb0, 0xe1, 0xc9, 0x2b, + 0x2b, 0x2b, 0x7e, 0xe5, 0xc5, 0xcd, 0xc6, 0x2b, 0xc1, 0xe1, 0x03, 0x03, + 0x03, 0xc3, 0xe8, 0x19, 0x3e, 0xdf, 0x2a, 0x4d, 0x5c, 0xa6, 0xf5, 0xcd, + 0xf1, 0x2b, 0xeb, 0x09, 0xc5, 0x2b, 0x22, 0x4d, 0x5c, 0x03, 0x03, 0x03, + 0x2a, 0x59, 0x5c, 0x2b, 0xcd, 0x55, 0x16, 0x2a, 0x4d, 0x5c, 0xc1, 0xc5, + 0x03, 0xed, 0xb8, 0xeb, 0x23, 0xc1, 0x70, 0x2b, 0x71, 0xf1, 0x2b, 0x77, + 0x2a, 0x59, 0x5c, 0x2b, 0xc9, 0x2a, 0x65, 0x5c, 0x2b, 0x46, 0x2b, 0x4e, + 0x2b, 0x56, 0x2b, 0x5e, 0x2b, 0x7e, 0x22, 0x65, 0x5c, 0xc9, 0xcd, 0xb2, + 0x28, 0xc2, 0x8a, 0x1c, 0xcd, 0x30, 0x25, 0x20, 0x08, 0xcb, 0xb1, 0xcd, + 0x96, 0x29, 0xcd, 0xee, 0x1b, 0x38, 0x08, 0xc5, 0xcd, 0xb8, 0x19, 0xcd, + 0xe8, 0x19, 0xc1, 0xcb, 0xf9, 0x06, 0x00, 0xc5, 0x21, 0x01, 0x00, 0xcb, + 0x71, 0x20, 0x02, 0x2e, 0x05, 0xeb, 0xe7, 0x26, 0xff, 0xcd, 0xcc, 0x2a, + 0xda, 0x20, 0x2a, 0xe1, 0xc5, 0x24, 0xe5, 0x60, 0x69, 0xcd, 0xf4, 0x2a, + 0xeb, 0xdf, 0xfe, 0x2c, 0x28, 0xe8, 0xfe, 0x29, 0x20, 0xbb, 0xe7, 0xc1, + 0x79, 0x68, 0x26, 0x00, 0x23, 0x23, 0x29, 0x19, 0xda, 0x15, 0x1f, 0xd5, + 0xc5, 0xe5, 0x44, 0x4d, 0x2a, 0x59, 0x5c, 0x2b, 0xcd, 0x55, 0x16, 0x23, + 0x77, 0xc1, 0x0b, 0x0b, 0x0b, 0x23, 0x71, 0x23, 0x70, 0xc1, 0x78, 0x23, + 0x77, 0x62, 0x6b, 0x1b, 0x36, 0x00, 0xcb, 0x71, 0x28, 0x02, 0x36, 0x20, + 0xc1, 0xed, 0xb8, 0xc1, 0x70, 0x2b, 0x71, 0x2b, 0x3d, 0x20, 0xf8, 0xc9, + 0xcd, 0x1b, 0x2d, 0x3f, 0xd8, 0xfe, 0x41, 0x3f, 0xd0, 0xfe, 0x5b, 0xd8, + 0xfe, 0x61, 0x3f, 0xd0, 0xfe, 0x7b, 0xc9, 0xfe, 0xc4, 0x20, 0x19, 0x11, + 0x00, 0x00, 0xe7, 0xd6, 0x31, 0xce, 0x00, 0x20, 0x0a, 0xeb, 0x3f, 0xed, + 0x6a, 0xda, 0xad, 0x31, 0xeb, 0x18, 0xef, 0x42, 0x4b, 0xc3, 0x2b, 0x2d, + 0xfe, 0x2e, 0x28, 0x0f, 0xcd, 0x3b, 0x2d, 0xfe, 0x2e, 0x20, 0x28, 0xe7, + 0xcd, 0x1b, 0x2d, 0x38, 0x22, 0x18, 0x0a, 0xe7, 0xcd, 0x1b, 0x2d, 0xda, + 0x8a, 0x1c, 0xef, 0xa0, 0x38, 0xef, 0xa1, 0xc0, 0x02, 0x38, 0xdf, 0xcd, + 0x22, 0x2d, 0x38, 0x0b, 0xef, 0xe0, 0xa4, 0x05, 0xc0, 0x04, 0x0f, 0x38, + 0xe7, 0x18, 0xef, 0xfe, 0x45, 0x28, 0x03, 0xfe, 0x65, 0xc0, 0x06, 0xff, + 0xe7, 0xfe, 0x2b, 0x28, 0x05, 0xfe, 0x2d, 0x20, 0x02, 0x04, 0xe7, 0xcd, + 0x1b, 0x2d, 0x38, 0xcb, 0xc5, 0xcd, 0x3b, 0x2d, 0xcd, 0xd5, 0x2d, 0xc1, + 0xda, 0xad, 0x31, 0xa7, 0xfa, 0xad, 0x31, 0x04, 0x28, 0x02, 0xed, 0x44, + 0xc3, 0x4f, 0x2d, 0xfe, 0x30, 0xd8, 0xfe, 0x3a, 0x3f, 0xc9, 0xcd, 0x1b, + 0x2d, 0xd8, 0xd6, 0x30, 0x4f, 0x06, 0x00, 0xfd, 0x21, 0x3a, 0x5c, 0xaf, + 0x5f, 0x51, 0x48, 0x47, 0xcd, 0xb6, 0x2a, 0xef, 0x38, 0xa7, 0xc9, 0xf5, + 0xef, 0xa0, 0x38, 0xf1, 0xcd, 0x22, 0x2d, 0xd8, 0xef, 0x01, 0xa4, 0x04, + 0x0f, 0x38, 0xcd, 0x74, 0x00, 0x18, 0xf1, 0x07, 0x0f, 0x30, 0x02, 0x2f, + 0x3c, 0xf5, 0x21, 0x92, 0x5c, 0xcd, 0x0b, 0x35, 0xef, 0xa4, 0x38, 0xf1, + 0xcb, 0x3f, 0x30, 0x0d, 0xf5, 0xef, 0xc1, 0xe0, 0x00, 0x04, 0x04, 0x33, + 0x02, 0x05, 0xe1, 0x38, 0xf1, 0x28, 0x08, 0xf5, 0xef, 0x31, 0x04, 0x38, + 0xf1, 0x18, 0xe5, 0xef, 0x02, 0x38, 0xc9, 0x23, 0x4e, 0x23, 0x7e, 0xa9, + 0x91, 0x5f, 0x23, 0x7e, 0x89, 0xa9, 0x57, 0xc9, 0x0e, 0x00, 0xe5, 0x36, + 0x00, 0x23, 0x71, 0x23, 0x7b, 0xa9, 0x91, 0x77, 0x23, 0x7a, 0x89, 0xa9, + 0x77, 0x23, 0x36, 0x00, 0xe1, 0xc9, 0xef, 0x38, 0x7e, 0xa7, 0x28, 0x05, + 0xef, 0xa2, 0x0f, 0x27, 0x38, 0xef, 0x02, 0x38, 0xe5, 0xd5, 0xeb, 0x46, + 0xcd, 0x7f, 0x2d, 0xaf, 0x90, 0xcb, 0x79, 0x42, 0x4b, 0x7b, 0xd1, 0xe1, + 0xc9, 0x57, 0x17, 0x9f, 0x5f, 0x4f, 0xaf, 0x47, 0xcd, 0xb6, 0x2a, 0xef, + 0x34, 0xef, 0x1a, 0x20, 0x9a, 0x85, 0x04, 0x27, 0x38, 0xcd, 0xa2, 0x2d, + 0xd8, 0xf5, 0x05, 0x04, 0x28, 0x03, 0xf1, 0x37, 0xc9, 0xf1, 0xc9, 0xef, + 0x31, 0x36, 0x00, 0x0b, 0x31, 0x37, 0x00, 0x0d, 0x02, 0x38, 0x3e, 0x30, + 0xd7, 0xc9, 0x2a, 0x38, 0x3e, 0x2d, 0xd7, 0xef, 0xa0, 0xc3, 0xc4, 0xc5, + 0x02, 0x38, 0xd9, 0xe5, 0xd9, 0xef, 0x31, 0x27, 0xc2, 0x03, 0xe2, 0x01, + 0xc2, 0x02, 0x38, 0x7e, 0xa7, 0x20, 0x47, 0xcd, 0x7f, 0x2d, 0x06, 0x10, + 0x7a, 0xa7, 0x20, 0x06, 0xb3, 0x28, 0x09, 0x53, 0x06, 0x08, 0xd5, 0xd9, + 0xd1, 0xd9, 0x18, 0x57, 0xef, 0xe2, 0x38, 0x7e, 0xd6, 0x7e, 0xcd, 0xc1, + 0x2d, 0x57, 0x3a, 0xac, 0x5c, 0x92, 0x32, 0xac, 0x5c, 0x7a, 0xcd, 0x4f, + 0x2d, 0xef, 0x31, 0x27, 0xc1, 0x03, 0xe1, 0x38, 0xcd, 0xd5, 0x2d, 0xe5, + 0x32, 0xa1, 0x5c, 0x3d, 0x17, 0x9f, 0x3c, 0x21, 0xab, 0x5c, 0x77, 0x23, + 0x86, 0x77, 0xe1, 0xc3, 0xcf, 0x2e, 0xd6, 0x80, 0xfe, 0x1c, 0x38, 0x13, + 0xcd, 0xc1, 0x2d, 0xd6, 0x07, 0x47, 0x21, 0xac, 0x5c, 0x86, 0x77, 0x78, + 0xed, 0x44, 0xcd, 0x4f, 0x2d, 0x18, 0x92, 0xeb, 0xcd, 0xba, 0x2f, 0xd9, + 0xcb, 0xfa, 0x7d, 0xd9, 0xd6, 0x80, 0x47, 0xcb, 0x23, 0xcb, 0x12, 0xd9, + 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0x21, 0xaa, 0x5c, 0x0e, 0x05, 0x7e, 0x8f, + 0x27, 0x77, 0x2b, 0x0d, 0x20, 0xf8, 0x10, 0xe7, 0xaf, 0x21, 0xa6, 0x5c, + 0x11, 0xa1, 0x5c, 0x06, 0x09, 0xed, 0x6f, 0x0e, 0xff, 0xed, 0x6f, 0x20, + 0x04, 0x0d, 0x0c, 0x20, 0x0a, 0x12, 0x13, 0xfd, 0x34, 0x71, 0xfd, 0x34, + 0x72, 0x0e, 0x00, 0xcb, 0x40, 0x28, 0x01, 0x23, 0x10, 0xe7, 0x3a, 0xab, + 0x5c, 0xd6, 0x09, 0x38, 0x0a, 0xfd, 0x35, 0x71, 0x3e, 0x04, 0xfd, 0xbe, + 0x6f, 0x18, 0x41, 0xef, 0x02, 0xe2, 0x38, 0xeb, 0xcd, 0xba, 0x2f, 0xd9, + 0x3e, 0x80, 0x95, 0x2e, 0x00, 0xcb, 0xfa, 0xd9, 0xcd, 0xdd, 0x2f, 0xfd, + 0x7e, 0x71, 0xfe, 0x08, 0x38, 0x06, 0xd9, 0xcb, 0x12, 0xd9, 0x18, 0x20, + 0x01, 0x00, 0x02, 0x7b, 0xcd, 0x8b, 0x2f, 0x5f, 0x7a, 0xcd, 0x8b, 0x2f, + 0x57, 0xc5, 0xd9, 0xc1, 0x10, 0xf1, 0x21, 0xa1, 0x5c, 0x79, 0xfd, 0x4e, + 0x71, 0x09, 0x77, 0xfd, 0x34, 0x71, 0x18, 0xd3, 0xf5, 0x21, 0xa1, 0x5c, + 0xfd, 0x4e, 0x71, 0x06, 0x00, 0x09, 0x41, 0xf1, 0x2b, 0x7e, 0xce, 0x00, + 0x77, 0xa7, 0x28, 0x05, 0xfe, 0x0a, 0x3f, 0x30, 0x08, 0x10, 0xf1, 0x36, + 0x01, 0x04, 0xfd, 0x34, 0x72, 0xfd, 0x70, 0x71, 0xef, 0x02, 0x38, 0xd9, + 0xe1, 0xd9, 0xed, 0x4b, 0xab, 0x5c, 0x21, 0xa1, 0x5c, 0x78, 0xfe, 0x09, + 0x38, 0x04, 0xfe, 0xfc, 0x38, 0x26, 0xa7, 0xcc, 0xef, 0x15, 0xaf, 0x90, + 0xfa, 0x52, 0x2f, 0x47, 0x18, 0x0c, 0x79, 0xa7, 0x28, 0x03, 0x7e, 0x23, + 0x0d, 0xcd, 0xef, 0x15, 0x10, 0xf4, 0x79, 0xa7, 0xc8, 0x04, 0x3e, 0x2e, + 0xd7, 0x3e, 0x30, 0x10, 0xfb, 0x41, 0x18, 0xe6, 0x50, 0x15, 0x06, 0x01, + 0xcd, 0x4a, 0x2f, 0x3e, 0x45, 0xd7, 0x4a, 0x79, 0xa7, 0xf2, 0x83, 0x2f, + 0xed, 0x44, 0x4f, 0x3e, 0x2d, 0x18, 0x02, 0x3e, 0x2b, 0xd7, 0x06, 0x00, + 0xc3, 0x1b, 0x1a, 0xd5, 0x6f, 0x26, 0x00, 0x5d, 0x54, 0x29, 0x29, 0x19, + 0x29, 0x59, 0x19, 0x4c, 0x7d, 0xd1, 0xc9, 0x7e, 0x36, 0x00, 0xa7, 0xc8, + 0x23, 0xcb, 0x7e, 0xcb, 0xfe, 0x2b, 0xc8, 0xc5, 0x01, 0x05, 0x00, 0x09, + 0x41, 0x4f, 0x37, 0x2b, 0x7e, 0x2f, 0xce, 0x00, 0x77, 0x10, 0xf8, 0x79, + 0xc1, 0xc9, 0xe5, 0xf5, 0x4e, 0x23, 0x46, 0x77, 0x23, 0x79, 0x4e, 0xc5, + 0x23, 0x4e, 0x23, 0x46, 0xeb, 0x57, 0x5e, 0xd5, 0x23, 0x56, 0x23, 0x5e, + 0xd5, 0xd9, 0xd1, 0xe1, 0xc1, 0xd9, 0x23, 0x56, 0x23, 0x5e, 0xf1, 0xe1, + 0xc9, 0xa7, 0xc8, 0xfe, 0x21, 0x30, 0x16, 0xc5, 0x47, 0xd9, 0xcb, 0x2d, + 0xcb, 0x1a, 0xcb, 0x1b, 0xd9, 0xcb, 0x1a, 0xcb, 0x1b, 0x10, 0xf2, 0xc1, + 0xd0, 0xcd, 0x04, 0x30, 0xc0, 0xd9, 0xaf, 0x2e, 0x00, 0x57, 0x5d, 0xd9, + 0x11, 0x00, 0x00, 0xc9, 0x1c, 0xc0, 0x14, 0xc0, 0xd9, 0x1c, 0x20, 0x01, + 0x14, 0xd9, 0xc9, 0xeb, 0xcd, 0x6e, 0x34, 0xeb, 0x1a, 0xb6, 0x20, 0x26, + 0xd5, 0x23, 0xe5, 0x23, 0x5e, 0x23, 0x56, 0x23, 0x23, 0x23, 0x7e, 0x23, + 0x4e, 0x23, 0x46, 0xe1, 0xeb, 0x09, 0xeb, 0x8e, 0x0f, 0xce, 0x00, 0x20, + 0x0b, 0x9f, 0x77, 0x23, 0x73, 0x23, 0x72, 0x2b, 0x2b, 0x2b, 0xd1, 0xc9, + 0x2b, 0xd1, 0xcd, 0x93, 0x32, 0xd9, 0xe5, 0xd9, 0xd5, 0xe5, 0xcd, 0x9b, + 0x2f, 0x47, 0xeb, 0xcd, 0x9b, 0x2f, 0x4f, 0xb8, 0x30, 0x03, 0x78, 0x41, + 0xeb, 0xf5, 0x90, 0xcd, 0xba, 0x2f, 0xcd, 0xdd, 0x2f, 0xf1, 0xe1, 0x77, + 0xe5, 0x68, 0x61, 0x19, 0xd9, 0xeb, 0xed, 0x4a, 0xeb, 0x7c, 0x8d, 0x6f, + 0x1f, 0xad, 0xd9, 0xeb, 0xe1, 0x1f, 0x30, 0x08, 0x3e, 0x01, 0xcd, 0xdd, + 0x2f, 0x34, 0x28, 0x23, 0xd9, 0x7d, 0xe6, 0x80, 0xd9, 0x23, 0x77, 0x2b, + 0x28, 0x1f, 0x7b, 0xed, 0x44, 0x3f, 0x5f, 0x7a, 0x2f, 0xce, 0x00, 0x57, + 0xd9, 0x7b, 0x2f, 0xce, 0x00, 0x5f, 0x7a, 0x2f, 0xce, 0x00, 0x30, 0x07, + 0x1f, 0xd9, 0x34, 0xca, 0xad, 0x31, 0xd9, 0x57, 0xd9, 0xaf, 0xc3, 0x55, + 0x31, 0xc5, 0x06, 0x10, 0x7c, 0x4d, 0x21, 0x00, 0x00, 0x29, 0x38, 0x0a, + 0xcb, 0x11, 0x17, 0x30, 0x03, 0x19, 0x38, 0x02, 0x10, 0xf3, 0xc1, 0xc9, + 0xcd, 0xe9, 0x34, 0xd8, 0x23, 0xae, 0xcb, 0xfe, 0x2b, 0xc9, 0x1a, 0xb6, + 0x20, 0x22, 0xd5, 0xe5, 0xd5, 0xcd, 0x7f, 0x2d, 0xeb, 0xe3, 0x41, 0xcd, + 0x7f, 0x2d, 0x78, 0xa9, 0x4f, 0xe1, 0xcd, 0xa9, 0x30, 0xeb, 0xe1, 0x38, + 0x0a, 0x7a, 0xb3, 0x20, 0x01, 0x4f, 0xcd, 0x8e, 0x2d, 0xd1, 0xc9, 0xd1, + 0xcd, 0x93, 0x32, 0xaf, 0xcd, 0xc0, 0x30, 0xd8, 0xd9, 0xe5, 0xd9, 0xd5, + 0xeb, 0xcd, 0xc0, 0x30, 0xeb, 0x38, 0x5a, 0xe5, 0xcd, 0xba, 0x2f, 0x78, + 0xa7, 0xed, 0x62, 0xd9, 0xe5, 0xed, 0x62, 0xd9, 0x06, 0x21, 0x18, 0x11, + 0x30, 0x05, 0x19, 0xd9, 0xed, 0x5a, 0xd9, 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, + 0xd9, 0xcb, 0x1c, 0xcb, 0x1d, 0xd9, 0xcb, 0x18, 0xcb, 0x19, 0xd9, 0xcb, + 0x19, 0x1f, 0x10, 0xe4, 0xeb, 0xd9, 0xeb, 0xd9, 0xc1, 0xe1, 0x78, 0x81, + 0x20, 0x01, 0xa7, 0x3d, 0x3f, 0x17, 0x3f, 0x1f, 0xf2, 0x46, 0x31, 0x30, + 0x68, 0xa7, 0x3c, 0x20, 0x08, 0x38, 0x06, 0xd9, 0xcb, 0x7a, 0xd9, 0x20, + 0x5c, 0x77, 0xd9, 0x78, 0xd9, 0x30, 0x15, 0x7e, 0xa7, 0x3e, 0x80, 0x28, + 0x01, 0xaf, 0xd9, 0xa2, 0xcd, 0xfb, 0x2f, 0x07, 0x77, 0x38, 0x2e, 0x23, + 0x77, 0x2b, 0x18, 0x29, 0x06, 0x20, 0xd9, 0xcb, 0x7a, 0xd9, 0x20, 0x12, + 0x07, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0xcb, 0x13, 0xcb, 0x12, 0xd9, 0x35, + 0x28, 0xd7, 0x10, 0xea, 0x18, 0xd7, 0x17, 0x30, 0x0c, 0xcd, 0x04, 0x30, + 0x20, 0x07, 0xd9, 0x16, 0x80, 0xd9, 0x34, 0x28, 0x18, 0xe5, 0x23, 0xd9, + 0xd5, 0xd9, 0xc1, 0x78, 0x17, 0xcb, 0x16, 0x1f, 0x77, 0x23, 0x71, 0x23, + 0x72, 0x23, 0x73, 0xe1, 0xd1, 0xd9, 0xe1, 0xd9, 0xc9, 0xcf, 0x05, 0xcd, + 0x93, 0x32, 0xeb, 0xaf, 0xcd, 0xc0, 0x30, 0x38, 0xf4, 0xeb, 0xcd, 0xc0, + 0x30, 0xd8, 0xd9, 0xe5, 0xd9, 0xd5, 0xe5, 0xcd, 0xba, 0x2f, 0xd9, 0xe5, + 0x60, 0x69, 0xd9, 0x61, 0x68, 0xaf, 0x06, 0xdf, 0x18, 0x10, 0x17, 0xcb, + 0x11, 0xd9, 0xcb, 0x11, 0xcb, 0x10, 0xd9, 0x29, 0xd9, 0xed, 0x6a, 0xd9, + 0x38, 0x10, 0xed, 0x52, 0xd9, 0xed, 0x52, 0xd9, 0x30, 0x0f, 0x19, 0xd9, + 0xed, 0x5a, 0xd9, 0xa7, 0x18, 0x08, 0xa7, 0xed, 0x52, 0xd9, 0xed, 0x52, + 0xd9, 0x37, 0x04, 0xfa, 0xd2, 0x31, 0xf5, 0x28, 0xe1, 0x5f, 0x51, 0xd9, + 0x59, 0x50, 0xf1, 0xcb, 0x18, 0xf1, 0xcb, 0x18, 0xd9, 0xc1, 0xe1, 0x78, + 0x91, 0xc3, 0x3d, 0x31, 0x7e, 0xa7, 0xc8, 0xfe, 0x81, 0x30, 0x06, 0x36, + 0x00, 0x3e, 0x20, 0x18, 0x51, 0xfe, 0x91, 0x20, 0x1a, 0x23, 0x23, 0x23, + 0x3e, 0x80, 0xa6, 0x2b, 0xb6, 0x2b, 0x20, 0x03, 0x3e, 0x80, 0xae, 0x2b, + 0x20, 0x36, 0x77, 0x23, 0x36, 0xff, 0x2b, 0x3e, 0x18, 0x18, 0x33, 0x30, + 0x2c, 0xd5, 0x2f, 0xc6, 0x91, 0x23, 0x56, 0x23, 0x5e, 0x2b, 0x2b, 0x0e, + 0x00, 0xcb, 0x7a, 0x28, 0x01, 0x0d, 0xcb, 0xfa, 0x06, 0x08, 0x90, 0x80, + 0x38, 0x04, 0x5a, 0x16, 0x00, 0x90, 0x28, 0x07, 0x47, 0xcb, 0x3a, 0xcb, + 0x1b, 0x10, 0xfa, 0xcd, 0x8e, 0x2d, 0xd1, 0xc9, 0x7e, 0xd6, 0xa0, 0xf0, + 0xed, 0x44, 0xd5, 0xeb, 0x2b, 0x47, 0xcb, 0x38, 0xcb, 0x38, 0xcb, 0x38, + 0x28, 0x05, 0x36, 0x00, 0x2b, 0x10, 0xfb, 0xe6, 0x07, 0x28, 0x09, 0x47, + 0x3e, 0xff, 0xcb, 0x27, 0x10, 0xfc, 0xa6, 0x77, 0xeb, 0xd1, 0xc9, 0xcd, + 0x96, 0x32, 0xeb, 0x7e, 0xa7, 0xc0, 0xd5, 0xcd, 0x7f, 0x2d, 0xaf, 0x23, + 0x77, 0x2b, 0x77, 0x06, 0x91, 0x7a, 0xa7, 0x20, 0x08, 0xb3, 0x42, 0x28, + 0x10, 0x53, 0x58, 0x06, 0x89, 0xeb, 0x05, 0x29, 0x30, 0xfc, 0xcb, 0x09, + 0xcb, 0x1c, 0xcb, 0x1d, 0xeb, 0x2b, 0x73, 0x2b, 0x72, 0x2b, 0x70, 0xd1, + 0xc9, 0x00, 0xb0, 0x00, 0x40, 0xb0, 0x00, 0x01, 0x30, 0x00, 0xf1, 0x49, + 0x0f, 0xda, 0xa2, 0x40, 0xb0, 0x00, 0x0a, 0x8f, 0x36, 0x3c, 0x34, 0xa1, + 0x33, 0x0f, 0x30, 0xca, 0x30, 0xaf, 0x31, 0x51, 0x38, 0x1b, 0x35, 0x24, + 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, + 0x35, 0x14, 0x30, 0x2d, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x3b, + 0x35, 0x3b, 0x35, 0x3b, 0x35, 0x9c, 0x35, 0xde, 0x35, 0xbc, 0x34, 0x45, + 0x36, 0x6e, 0x34, 0x69, 0x36, 0xde, 0x35, 0x74, 0x36, 0xb5, 0x37, 0xaa, + 0x37, 0xda, 0x37, 0x33, 0x38, 0x43, 0x38, 0xe2, 0x37, 0x13, 0x37, 0xc4, + 0x36, 0xaf, 0x36, 0x4a, 0x38, 0x92, 0x34, 0x6a, 0x34, 0xac, 0x34, 0xa5, + 0x34, 0xb3, 0x34, 0x1f, 0x36, 0xc9, 0x35, 0x01, 0x35, 0xc0, 0x33, 0xa0, + 0x36, 0x86, 0x36, 0xc6, 0x33, 0x7a, 0x36, 0x06, 0x35, 0xf9, 0x34, 0x9b, + 0x36, 0x83, 0x37, 0x14, 0x32, 0xa2, 0x33, 0x4f, 0x2d, 0x97, 0x32, 0x49, + 0x34, 0x1b, 0x34, 0x2d, 0x34, 0x0f, 0x34, 0xcd, 0xbf, 0x35, 0x78, 0x32, + 0x67, 0x5c, 0xd9, 0xe3, 0xd9, 0xed, 0x53, 0x65, 0x5c, 0xd9, 0x7e, 0x23, + 0xe5, 0xa7, 0xf2, 0x80, 0x33, 0x57, 0xe6, 0x60, 0x0f, 0x0f, 0x0f, 0x0f, + 0xc6, 0x7c, 0x6f, 0x7a, 0xe6, 0x1f, 0x18, 0x0e, 0xfe, 0x18, 0x30, 0x08, + 0xd9, 0x01, 0xfb, 0xff, 0x54, 0x5d, 0x09, 0xd9, 0x07, 0x6f, 0x11, 0xd7, + 0x32, 0x26, 0x00, 0x19, 0x5e, 0x23, 0x56, 0x21, 0x65, 0x33, 0xe3, 0xd5, + 0xd9, 0xed, 0x4b, 0x66, 0x5c, 0xc9, 0xf1, 0x3a, 0x67, 0x5c, 0xd9, 0x18, + 0xc3, 0xd5, 0xe5, 0x01, 0x05, 0x00, 0xcd, 0x05, 0x1f, 0xe1, 0xd1, 0xc9, + 0xed, 0x5b, 0x65, 0x5c, 0xcd, 0xc0, 0x33, 0xed, 0x53, 0x65, 0x5c, 0xc9, + 0xcd, 0xa9, 0x33, 0xed, 0xb0, 0xc9, 0x62, 0x6b, 0xcd, 0xa9, 0x33, 0xd9, + 0xe5, 0xd9, 0xe3, 0xc5, 0x7e, 0xe6, 0xc0, 0x07, 0x07, 0x4f, 0x0c, 0x7e, + 0xe6, 0x3f, 0x20, 0x02, 0x23, 0x7e, 0xc6, 0x50, 0x12, 0x3e, 0x05, 0x91, + 0x23, 0x13, 0x06, 0x00, 0xed, 0xb0, 0xc1, 0xe3, 0xd9, 0xe1, 0xd9, 0x47, + 0xaf, 0x05, 0xc8, 0x12, 0x13, 0x18, 0xfa, 0xa7, 0xc8, 0xf5, 0xd5, 0x11, + 0x00, 0x00, 0xcd, 0xc8, 0x33, 0xd1, 0xf1, 0x3d, 0x18, 0xf2, 0x4f, 0x07, + 0x07, 0x81, 0x4f, 0x06, 0x00, 0x09, 0xc9, 0xd5, 0x2a, 0x68, 0x5c, 0xcd, + 0x06, 0x34, 0xcd, 0xc0, 0x33, 0xe1, 0xc9, 0x62, 0x6b, 0xd9, 0xe5, 0x21, + 0xc5, 0x32, 0xd9, 0xcd, 0xf7, 0x33, 0xcd, 0xc8, 0x33, 0xd9, 0xe1, 0xd9, + 0xc9, 0xe5, 0xeb, 0x2a, 0x68, 0x5c, 0xcd, 0x06, 0x34, 0xeb, 0xcd, 0xc0, + 0x33, 0xeb, 0xe1, 0xc9, 0x06, 0x05, 0x1a, 0x4e, 0xeb, 0x12, 0x71, 0x23, + 0x13, 0x10, 0xf7, 0xeb, 0xc9, 0x47, 0xcd, 0x5e, 0x33, 0x31, 0x0f, 0xc0, + 0x02, 0xa0, 0xc2, 0x31, 0xe0, 0x04, 0xe2, 0xc1, 0x03, 0x38, 0xcd, 0xc6, + 0x33, 0xcd, 0x62, 0x33, 0x0f, 0x01, 0xc2, 0x02, 0x35, 0xee, 0xe1, 0x03, + 0x38, 0xc9, 0x06, 0xff, 0x18, 0x06, 0xcd, 0xe9, 0x34, 0xd8, 0x06, 0x00, + 0x7e, 0xa7, 0x28, 0x0b, 0x23, 0x78, 0xe6, 0x80, 0xb6, 0x17, 0x3f, 0x1f, + 0x77, 0x2b, 0xc9, 0xd5, 0xe5, 0xcd, 0x7f, 0x2d, 0xe1, 0x78, 0xb1, 0x2f, + 0x4f, 0xcd, 0x8e, 0x2d, 0xd1, 0xc9, 0xcd, 0xe9, 0x34, 0xd8, 0xd5, 0x11, + 0x01, 0x00, 0x23, 0xcb, 0x16, 0x2b, 0x9f, 0x4f, 0xcd, 0x8e, 0x2d, 0xd1, + 0xc9, 0xcd, 0x99, 0x1e, 0xed, 0x78, 0x18, 0x04, 0xcd, 0x99, 0x1e, 0x0a, + 0xc3, 0x28, 0x2d, 0xcd, 0x99, 0x1e, 0x21, 0x2b, 0x2d, 0xe5, 0xc5, 0xc9, + 0xcd, 0xf1, 0x2b, 0x0b, 0x78, 0xb1, 0x20, 0x23, 0x1a, 0xcd, 0x8d, 0x2c, + 0x38, 0x09, 0xd6, 0x90, 0x38, 0x19, 0xfe, 0x15, 0x30, 0x15, 0x3c, 0x3d, + 0x87, 0x87, 0x87, 0xfe, 0xa8, 0x30, 0x0c, 0xed, 0x4b, 0x7b, 0x5c, 0x81, + 0x4f, 0x30, 0x01, 0x04, 0xc3, 0x2b, 0x2d, 0xcf, 0x09, 0xe5, 0xc5, 0x47, + 0x7e, 0x23, 0xb6, 0x23, 0xb6, 0x23, 0xb6, 0x78, 0xc1, 0xe1, 0xc0, 0x37, + 0xc9, 0xcd, 0xe9, 0x34, 0xd8, 0x3e, 0xff, 0x18, 0x06, 0xcd, 0xe9, 0x34, + 0x18, 0x05, 0xaf, 0x23, 0xae, 0x2b, 0x07, 0xe5, 0x3e, 0x00, 0x77, 0x23, + 0x77, 0x23, 0x17, 0x77, 0x1f, 0x23, 0x77, 0x23, 0x77, 0xe1, 0xc9, 0xeb, + 0xcd, 0xe9, 0x34, 0xeb, 0xd8, 0x37, 0x18, 0xe7, 0xeb, 0xcd, 0xe9, 0x34, + 0xeb, 0xd0, 0xa7, 0x18, 0xde, 0xeb, 0xcd, 0xe9, 0x34, 0xeb, 0xd0, 0xd5, + 0x1b, 0xaf, 0x12, 0x1b, 0x12, 0xd1, 0xc9, 0x78, 0xd6, 0x08, 0xcb, 0x57, + 0x20, 0x01, 0x3d, 0x0f, 0x30, 0x08, 0xf5, 0xe5, 0xcd, 0x3c, 0x34, 0xd1, + 0xeb, 0xf1, 0xcb, 0x57, 0x20, 0x07, 0x0f, 0xf5, 0xcd, 0x0f, 0x30, 0x18, + 0x33, 0x0f, 0xf5, 0xcd, 0xf1, 0x2b, 0xd5, 0xc5, 0xcd, 0xf1, 0x2b, 0xe1, + 0x7c, 0xb5, 0xe3, 0x78, 0x20, 0x0b, 0xb1, 0xc1, 0x28, 0x04, 0xf1, 0x3f, + 0x18, 0x16, 0xf1, 0x18, 0x13, 0xb1, 0x28, 0x0d, 0x1a, 0x96, 0x38, 0x09, + 0x20, 0xed, 0x0b, 0x13, 0x23, 0xe3, 0x2b, 0x18, 0xdf, 0xc1, 0xf1, 0xa7, + 0xf5, 0xef, 0xa0, 0x38, 0xf1, 0xf5, 0xdc, 0x01, 0x35, 0xf1, 0xf5, 0xd4, + 0xf9, 0x34, 0xf1, 0x0f, 0xd4, 0x01, 0x35, 0xc9, 0xcd, 0xf1, 0x2b, 0xd5, + 0xc5, 0xcd, 0xf1, 0x2b, 0xe1, 0xe5, 0xd5, 0xc5, 0x09, 0x44, 0x4d, 0xf7, + 0xcd, 0xb2, 0x2a, 0xc1, 0xe1, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0xc1, + 0xe1, 0x78, 0xb1, 0x28, 0x02, 0xed, 0xb0, 0x2a, 0x65, 0x5c, 0x11, 0xfb, + 0xff, 0xe5, 0x19, 0xd1, 0xc9, 0xcd, 0xd5, 0x2d, 0x38, 0x0e, 0x20, 0x0c, + 0xf5, 0x01, 0x01, 0x00, 0xf7, 0xf1, 0x12, 0xcd, 0xb2, 0x2a, 0xeb, 0xc9, + 0xcf, 0x0a, 0x2a, 0x5d, 0x5c, 0xe5, 0x78, 0xc6, 0xe3, 0x9f, 0xf5, 0xcd, + 0xf1, 0x2b, 0xd5, 0x03, 0xf7, 0xe1, 0xed, 0x53, 0x5d, 0x5c, 0xd5, 0xed, + 0xb0, 0xeb, 0x2b, 0x36, 0x0d, 0xfd, 0xcb, 0x01, 0xbe, 0xcd, 0xfb, 0x24, + 0xdf, 0xfe, 0x0d, 0x20, 0x07, 0xe1, 0xf1, 0xfd, 0xae, 0x01, 0xe6, 0x40, + 0xc2, 0x8a, 0x1c, 0x22, 0x5d, 0x5c, 0xfd, 0xcb, 0x01, 0xfe, 0xcd, 0xfb, + 0x24, 0xe1, 0x22, 0x5d, 0x5c, 0x18, 0xa0, 0x01, 0x01, 0x00, 0xf7, 0x22, + 0x5b, 0x5c, 0xe5, 0x2a, 0x51, 0x5c, 0xe5, 0x3e, 0xff, 0xcd, 0x01, 0x16, + 0xcd, 0xe3, 0x2d, 0xe1, 0xcd, 0x15, 0x16, 0xd1, 0x2a, 0x5b, 0x5c, 0xa7, + 0xed, 0x52, 0x44, 0x4d, 0xcd, 0xb2, 0x2a, 0xeb, 0xc9, 0xcd, 0x94, 0x1e, + 0xfe, 0x10, 0xd2, 0x9f, 0x1e, 0x2a, 0x51, 0x5c, 0xe5, 0xcd, 0x01, 0x16, + 0xcd, 0xe6, 0x15, 0x01, 0x00, 0x00, 0x30, 0x03, 0x0c, 0xf7, 0x12, 0xcd, + 0xb2, 0x2a, 0xe1, 0xcd, 0x15, 0x16, 0xc3, 0xbf, 0x35, 0xcd, 0xf1, 0x2b, + 0x78, 0xb1, 0x28, 0x01, 0x1a, 0xc3, 0x28, 0x2d, 0xcd, 0xf1, 0x2b, 0xc3, + 0x2b, 0x2d, 0xd9, 0xe5, 0x21, 0x67, 0x5c, 0x35, 0xe1, 0x20, 0x04, 0x23, + 0xd9, 0xc9, 0xd9, 0x5e, 0x7b, 0x17, 0x9f, 0x57, 0x19, 0xd9, 0xc9, 0x13, + 0x13, 0x1a, 0x1b, 0x1b, 0xa7, 0x20, 0xef, 0xd9, 0x23, 0xd9, 0xc9, 0xf1, + 0xd9, 0xe3, 0xd9, 0xc9, 0xef, 0xc0, 0x02, 0x31, 0xe0, 0x05, 0x27, 0xe0, + 0x01, 0xc0, 0x04, 0x03, 0xe0, 0x38, 0xc9, 0xef, 0x31, 0x36, 0x00, 0x04, + 0x3a, 0x38, 0xc9, 0x31, 0x3a, 0xc0, 0x03, 0xe0, 0x01, 0x30, 0x00, 0x03, + 0xa1, 0x03, 0x38, 0xc9, 0xef, 0x3d, 0x34, 0xf1, 0x38, 0xaa, 0x3b, 0x29, + 0x04, 0x31, 0x27, 0xc3, 0x03, 0x31, 0x0f, 0xa1, 0x03, 0x88, 0x13, 0x36, + 0x58, 0x65, 0x66, 0x9d, 0x78, 0x65, 0x40, 0xa2, 0x60, 0x32, 0xc9, 0xe7, + 0x21, 0xf7, 0xaf, 0x24, 0xeb, 0x2f, 0xb0, 0xb0, 0x14, 0xee, 0x7e, 0xbb, + 0x94, 0x58, 0xf1, 0x3a, 0x7e, 0xf8, 0xcf, 0xe3, 0x38, 0xcd, 0xd5, 0x2d, + 0x20, 0x07, 0x38, 0x03, 0x86, 0x30, 0x09, 0xcf, 0x05, 0x38, 0x07, 0x96, + 0x30, 0x04, 0xed, 0x44, 0x77, 0xc9, 0xef, 0x02, 0xa0, 0x38, 0xc9, 0xef, + 0x3d, 0x31, 0x37, 0x00, 0x04, 0x38, 0xcf, 0x09, 0xa0, 0x02, 0x38, 0x7e, + 0x36, 0x80, 0xcd, 0x28, 0x2d, 0xef, 0x34, 0x38, 0x00, 0x03, 0x01, 0x31, + 0x34, 0xf0, 0x4c, 0xcc, 0xcc, 0xcd, 0x03, 0x37, 0x00, 0x08, 0x01, 0xa1, + 0x03, 0x01, 0x38, 0x34, 0xef, 0x01, 0x34, 0xf0, 0x31, 0x72, 0x17, 0xf8, + 0x04, 0x01, 0xa2, 0x03, 0xa2, 0x03, 0x31, 0x34, 0x32, 0x20, 0x04, 0xa2, + 0x03, 0x8c, 0x11, 0xac, 0x14, 0x09, 0x56, 0xda, 0xa5, 0x59, 0x30, 0xc5, + 0x5c, 0x90, 0xaa, 0x9e, 0x70, 0x6f, 0x61, 0xa1, 0xcb, 0xda, 0x96, 0xa4, + 0x31, 0x9f, 0xb4, 0xe7, 0xa0, 0xfe, 0x5c, 0xfc, 0xea, 0x1b, 0x43, 0xca, + 0x36, 0xed, 0xa7, 0x9c, 0x7e, 0x5e, 0xf0, 0x6e, 0x23, 0x80, 0x93, 0x04, + 0x0f, 0x38, 0xc9, 0xef, 0x3d, 0x34, 0xee, 0x22, 0xf9, 0x83, 0x6e, 0x04, + 0x31, 0xa2, 0x0f, 0x27, 0x03, 0x31, 0x0f, 0x31, 0x0f, 0x31, 0x2a, 0xa1, + 0x03, 0x31, 0x37, 0xc0, 0x00, 0x04, 0x02, 0x38, 0xc9, 0xa1, 0x03, 0x01, + 0x36, 0x00, 0x02, 0x1b, 0x38, 0xc9, 0xef, 0x39, 0x2a, 0xa1, 0x03, 0xe0, + 0x00, 0x06, 0x1b, 0x33, 0x03, 0xef, 0x39, 0x31, 0x31, 0x04, 0x31, 0x0f, + 0xa1, 0x03, 0x86, 0x14, 0xe6, 0x5c, 0x1f, 0x0b, 0xa3, 0x8f, 0x38, 0xee, + 0xe9, 0x15, 0x63, 0xbb, 0x23, 0xee, 0x92, 0x0d, 0xcd, 0xed, 0xf1, 0x23, + 0x5d, 0x1b, 0xea, 0x04, 0x38, 0xc9, 0xef, 0x31, 0x1f, 0x01, 0x20, 0x05, + 0x38, 0xc9, 0xcd, 0x97, 0x32, 0x7e, 0xfe, 0x81, 0x38, 0x0e, 0xef, 0xa1, + 0x1b, 0x01, 0x05, 0x31, 0x36, 0xa3, 0x01, 0x00, 0x06, 0x1b, 0x33, 0x03, + 0xef, 0xa0, 0x01, 0x31, 0x31, 0x04, 0x31, 0x0f, 0xa1, 0x03, 0x8c, 0x10, + 0xb2, 0x13, 0x0e, 0x55, 0xe4, 0x8d, 0x58, 0x39, 0xbc, 0x5b, 0x98, 0xfd, + 0x9e, 0x00, 0x36, 0x75, 0xa0, 0xdb, 0xe8, 0xb4, 0x63, 0x42, 0xc4, 0xe6, + 0xb5, 0x09, 0x36, 0xbe, 0xe9, 0x36, 0x73, 0x1b, 0x5d, 0xec, 0xd8, 0xde, + 0x63, 0xbe, 0xf0, 0x61, 0xa1, 0xb3, 0x0c, 0x04, 0x0f, 0x38, 0xc9, 0xef, + 0x31, 0x31, 0x04, 0xa1, 0x03, 0x1b, 0x28, 0xa1, 0x0f, 0x05, 0x24, 0x31, + 0x0f, 0x38, 0xc9, 0xef, 0x22, 0xa3, 0x03, 0x1b, 0x38, 0xc9, 0xef, 0x31, + 0x30, 0x00, 0x1e, 0xa2, 0x38, 0xef, 0x01, 0x31, 0x30, 0x00, 0x07, 0x25, + 0x04, 0x38, 0xc3, 0xc4, 0x36, 0x02, 0x31, 0x30, 0x00, 0x09, 0xa0, 0x01, + 0x37, 0x00, 0x06, 0xa1, 0x01, 0x05, 0x02, 0xa1, 0x38, 0xc9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x24, 0x24, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7e, 0x24, 0x24, 0x7e, 0x24, 0x00, + 0x00, 0x08, 0x3e, 0x28, 0x3e, 0x0a, 0x3e, 0x08, 0x00, 0x62, 0x64, 0x08, + 0x10, 0x26, 0x46, 0x00, 0x00, 0x10, 0x28, 0x10, 0x2a, 0x44, 0x3a, 0x00, + 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00, + 0x00, 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x00, 0x00, 0x00, 0x08, 0x08, + 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x3c, 0x46, 0x4a, 0x52, 0x62, 0x3c, 0x00, 0x00, 0x18, 0x28, 0x08, + 0x08, 0x08, 0x3e, 0x00, 0x00, 0x3c, 0x42, 0x02, 0x3c, 0x40, 0x7e, 0x00, + 0x00, 0x3c, 0x42, 0x0c, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x08, 0x18, 0x28, + 0x48, 0x7e, 0x08, 0x00, 0x00, 0x7e, 0x40, 0x7c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0x3c, 0x40, 0x7c, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7e, 0x02, 0x04, + 0x08, 0x10, 0x10, 0x00, 0x00, 0x3c, 0x42, 0x3c, 0x42, 0x42, 0x3c, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x3e, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x20, + 0x00, 0x00, 0x04, 0x08, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, + 0x00, 0x3c, 0x42, 0x04, 0x08, 0x00, 0x08, 0x00, 0x00, 0x3c, 0x4a, 0x56, + 0x5e, 0x40, 0x3c, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x00, + 0x00, 0x7c, 0x42, 0x7c, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x3c, 0x42, 0x40, + 0x40, 0x42, 0x3c, 0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x44, 0x78, 0x00, + 0x00, 0x7e, 0x40, 0x7c, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x7e, 0x40, 0x7c, + 0x40, 0x40, 0x40, 0x00, 0x00, 0x3c, 0x42, 0x40, 0x4e, 0x42, 0x3c, 0x00, + 0x00, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x00, 0x00, 0x3e, 0x08, 0x08, + 0x08, 0x08, 0x3e, 0x00, 0x00, 0x02, 0x02, 0x02, 0x42, 0x42, 0x3c, 0x00, + 0x00, 0x44, 0x48, 0x70, 0x48, 0x44, 0x42, 0x00, 0x00, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x7e, 0x00, 0x00, 0x42, 0x66, 0x5a, 0x42, 0x42, 0x42, 0x00, + 0x00, 0x42, 0x62, 0x52, 0x4a, 0x46, 0x42, 0x00, 0x00, 0x3c, 0x42, 0x42, + 0x42, 0x42, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, 0x7c, 0x40, 0x40, 0x00, + 0x00, 0x3c, 0x42, 0x42, 0x52, 0x4a, 0x3c, 0x00, 0x00, 0x7c, 0x42, 0x42, + 0x7c, 0x44, 0x42, 0x00, 0x00, 0x3c, 0x40, 0x3c, 0x02, 0x42, 0x3c, 0x00, + 0x00, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x42, 0x42, 0x42, + 0x42, 0x42, 0x3c, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, + 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x24, 0x00, 0x00, 0x42, 0x24, 0x18, + 0x18, 0x24, 0x42, 0x00, 0x00, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00, + 0x00, 0x7e, 0x04, 0x08, 0x10, 0x20, 0x7e, 0x00, 0x00, 0x0e, 0x08, 0x08, + 0x08, 0x08, 0x0e, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, + 0x00, 0x70, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00, 0x10, 0x38, 0x54, + 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x1c, 0x22, 0x78, 0x20, 0x20, 0x7e, 0x00, 0x00, 0x00, 0x38, 0x04, + 0x3c, 0x44, 0x3c, 0x00, 0x00, 0x20, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x00, + 0x00, 0x00, 0x1c, 0x20, 0x20, 0x20, 0x1c, 0x00, 0x00, 0x04, 0x04, 0x3c, + 0x44, 0x44, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c, 0x00, + 0x00, 0x0c, 0x10, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x3c, 0x44, + 0x44, 0x3c, 0x04, 0x38, 0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x00, + 0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x38, 0x00, 0x00, 0x04, 0x00, 0x04, + 0x04, 0x04, 0x24, 0x18, 0x00, 0x20, 0x28, 0x30, 0x30, 0x28, 0x24, 0x00, + 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x68, 0x54, + 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00, + 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x78, 0x44, + 0x44, 0x78, 0x40, 0x40, 0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x06, + 0x00, 0x00, 0x1c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x38, 0x40, + 0x38, 0x04, 0x78, 0x00, 0x00, 0x10, 0x38, 0x10, 0x10, 0x10, 0x0c, 0x00, + 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x44, 0x44, + 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x44, 0x54, 0x54, 0x54, 0x28, 0x00, + 0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, + 0x44, 0x3c, 0x04, 0x38, 0x00, 0x00, 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, + 0x00, 0x0e, 0x08, 0x30, 0x08, 0x08, 0x0e, 0x00, 0x00, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x00, 0x00, 0x70, 0x10, 0x0c, 0x10, 0x10, 0x70, 0x00, + 0x00, 0x14, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x99, 0xa1, + 0xa1, 0x99, 0x42, 0x3c +}; + +#endif diff --git a/MCUME_teensy/teensyspeccy/teensyspeccy.ino b/MCUME_teensy/teensyspeccy/teensyspeccy.ino new file mode 100644 index 0000000..132973b --- /dev/null +++ b/MCUME_teensy/teensyspeccy/teensyspeccy.ino @@ -0,0 +1,275 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "spec.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif + + + diff --git a/MCUME_teensy/teensyspeccy/tft_t_dma.cpp b/MCUME_teensy/teensyspeccy/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 192 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensyspeccy/tft_t_dma_config.h b/MCUME_teensy/teensyspeccy/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensyspeccy/zx_filetyp_z80.c b/MCUME_teensy/teensyspeccy/zx_filetyp_z80.c new file mode 100644 index 0000000..31918a2 --- /dev/null +++ b/MCUME_teensy/teensyspeccy/zx_filetyp_z80.c @@ -0,0 +1,347 @@ +//-------------------------------------------------------------- +// File derived from: +// Datum : 27.01.2014 +// Version : 1.0 +// Autor : UB +// EMail : mc-4u(@)t-online.de +// Web : www.mikrocontroller-4u.de +//-------------------------------------------------------------- +#include "zx_filetyp_z80.h" +#include "emuapi.h" + +//------------------------------------------------------------- +extern uint8_t out_ram; + +//-------------------------------------------------------------- +// interne Funktionen +//-------------------------------------------------------------- +const uint8_t* p_decompFlashBlock(const uint8_t *block_adr); + + +void ZX_ReadFromFlash_SNA(Z80 *regs, const char * filename) +{ + uint8_t snafile[27]; + if (emu_FileOpen(filename)) { + if (emu_FileRead(&snafile[0], sizeof(snafile)) == sizeof(snafile)) { + // Load Z80 registers from SNA + regs->I = snafile[ 0]; + regs->HL1.B.l = snafile[ 1]; + regs->HL1.B.h = snafile[ 2]; + regs->DE1.B.l = snafile[ 3]; + regs->DE1.B.h = snafile[ 4]; + regs->BC1.B.l = snafile[ 5]; + regs->BC1.B.h = snafile[ 6]; + regs->AF1.B.l = snafile[ 7]; + regs->AF1.B.h = snafile[ 8]; + regs->HL.B.l = snafile[ 9]; + regs->HL.B.h = snafile[10]; + regs->DE.B.l = snafile[11]; + regs->DE.B.h = snafile[12]; + regs->BC.B.l = snafile[13]; + regs->BC.B.h = snafile[14]; + regs->IY.B.l = snafile[15]; + regs->IY.B.h = snafile[16]; + regs->IX.B.l = snafile[17]; + regs->IX.B.h = snafile[18]; + //#define IFF_1 0x01 /* IFF1 flip-flop */ +//#define IFF_IM1 0x02 /* 1: IM1 mode */ +//#define IFF_IM2 0x04 /* 1: IM2 mode */ +//#define IFF_2 0x08 /* IFF2 flip-flop */ +//#define IFF_EI 0x20 /* 1: EI pending */ +//#define IFF_HALT 0x80 /* 1: CPU HALTed */ + regs->R = snafile[20]; //R.W + regs->AF.B.l = snafile[21]; + regs->AF.B.h = snafile[22]; + regs->SP.B.l =snafile[23]; + regs->SP.B.h =snafile[24]; + regs->IFF = 0; + regs->IFF |= (((snafile[19]&0x04) >>2)?IFF_1:0); //regs->IFF1 = regs->IFF2 = ... + regs->IFF |= (((snafile[19]&0x04) >>2)?IFF_2:0); + regs->IFF |= (snafile[25]<< 1); // regs->IM = snafile[25]; + //regs->BorderColor = snafile[26]; + + + + // load RAM from SNA + int direc; + uint8_t b; + for (direc=0;direc!=0xbfff;direc++) + { + emu_FileRead(&b, 1); + WrZ80(direc+0x4000, b); + } + emu_FileClose(); + // SP to PC for SNA run + regs->PC.B.l = RdZ80(regs->SP.W); + regs->SP.W++; + regs->PC.B.h = RdZ80(regs->SP.W); + regs->SP.W++; + } + } +} + +//-------------------------------------------------------------- +// Unpack data from a file ( type = * .Z80 ) from flash +// And copy them to the memory of the ZX - Spectrum +// +// Data = pointer to the start of data +// Length = number of bytes +//-------------------------------------------------------------- +void ZX_ReadFromFlash_Z80(Z80 *R, const uint8_t *data, uint16_t length) +{ + const uint8_t *ptr; + const uint8_t *akt_block,*next_block; + uint8_t value1,value2; + uint8_t flag_version=0; + uint8_t flag_compressed=0; + uint16_t header_len; + uint16_t cur_addr; + + if(length==0) return; + if(length>0xC020) return; + + //---------------------------------- + // parsing header + // Byte : [0...29] + //---------------------------------- + + // Set pointer to data beginning + ptr=data; + + R->AF.B.h=*(ptr++); // A [0] + R->AF.B.l=*(ptr++); // F [1] + R->BC.B.l=*(ptr++); // C [2] + R->BC.B.h=*(ptr++); // B [3] + R->HL.B.l=*(ptr++); // L [4] + R->HL.B.h=*(ptr++); // H [5] + + // PC [6+7] + value1=*(ptr++); + value2=*(ptr++); + R->PC.W=(value2<<8)|value1; + if(R->PC.W==0x0000) { + flag_version=1; + } + else { + flag_version=0; + } + + // SP [8+9] + value1=*(ptr++); + value2=*(ptr++); + R->SP.W=(value2<<8)|value1; + + R->I=*(ptr++); // I [10] + R->R=*(ptr++); // R [11] + + // Comressed-Flag & Border [12] + value1=*(ptr++); + value2=((value1&0x0E)>>1); + OutZ80(0xFE, value2); // BorderColor + if((value1&0x20)!=0) { + flag_compressed=1; + } else { + flag_compressed=0; + } + + R->DE.B.l=*(ptr++); // E [13] + R->DE.B.h=*(ptr++); // D [14] + R->BC1.B.l=*(ptr++); // C1 [15] + R->BC1.B.h=*(ptr++); // B1 [16] + R->DE1.B.l=*(ptr++); // E1 [17] + R->DE1.B.h=*(ptr++); // D1 [18] + R->HL1.B.l=*(ptr++); // L1 [19] + R->HL1.B.h=*(ptr++); // H1 [20] + R->AF1.B.h=*(ptr++); // A1 [21] + R->AF1.B.l=*(ptr++); // F1 [22] + R->IY.B.l=*(ptr++); // Y [23] + R->IY.B.h=*(ptr++); // I [24] + R->IX.B.l=*(ptr++); // X [25] + R->IX.B.h=*(ptr++); // I [26] + + // Interrupt-Flag [27] + value1=*(ptr++); + if(value1!=0) { + // EI + R->IFF|=IFF_2|IFF_EI; + } + else { + // DI + R->IFF&=~(IFF_1|IFF_2|IFF_EI); + } + value1=*(ptr++); // nc [28] + // Interrupt-Mode [29] + value1=*(ptr++); + if((value1&0x01)!=0) { + R->IFF|=IFF_IM1; + } + else { + R->IFF&=~IFF_IM1; + } + if((value1&0x02)!=0) { + R->IFF|=IFF_IM2; + } + else { + R->IFF&=~IFF_IM2; + } + + // restliche Register + R->ICount = R->IPeriod; + R->IRequest = INT_NONE; + R->IBackup = 0; + + //---------------------------------- + // save the data in RAM + // Byte : [30...n] + //---------------------------------- + + cur_addr=0x4000; // RAM start + + + if(flag_version==0) { + //----------------------- + // old Version + //----------------------- + if(flag_compressed==1) { + //----------------------- + // compressed + //----------------------- + while(ptr<(data+length)) { + value1=*(ptr++); + if(value1!=0xED) { + WrZ80(cur_addr++, value1); + } + else { + value2=*(ptr++); + if(value2!=0xED) { + WrZ80(cur_addr++, value1); + WrZ80(cur_addr++, value2); + } + else { + value1=*(ptr++); + value2=*(ptr++); + while(value1--) { + WrZ80(cur_addr++, value2); + } + } + } + } + } + else { + //----------------------- + // raw (uncompressed) + //----------------------- + while(ptr<(data+length)) { + value1=*(ptr++); + WrZ80(cur_addr++, value1); + } + } + } + else { + //----------------------- + // new Version + //----------------------- + // Header Laenge [30+31] + value1=*(ptr++); + value2=*(ptr++); + header_len=(value2<<8)|value1; + akt_block=(uint8_t*)(ptr+header_len); + // PC [32+33] + value1=*(ptr++); + value2=*(ptr++); + R->PC.W=(value2<<8)|value1; + + //------------------------ + // 1st block parsing + //------------------------ + next_block=p_decompFlashBlock(akt_block); + //------------------------ + // all other parsing + //------------------------ + while(next_block +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensyvcs/AudioPlaySystem.h b/MCUME_teensy/teensyvcs/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensyvcs/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensyvcs/Collision.c b/MCUME_teensy/teensyvcs/Collision.c new file mode 100644 index 0000000..a4b1f3b --- /dev/null +++ b/MCUME_teensy/teensyvcs/Collision.c @@ -0,0 +1,116 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: collision.c,v 1.10 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* The 2600 collision detection code */ + +#include + +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "col_mask.h" +#include "collision.h" + +#include "emuapi.h" + +/* + There are 6 different objects on the screen. Each takes one bit of the + collision vector. + Bit 0: Player 0 + Bit 1: Player 1 + Bit 2: Missile 0 + Bit 3: Missile 1 + Bit 4: Ball + Bit 5: Playfield + */ + +/* The collision vector */ +BYTE *colvect=0; + +/* The collision lookup table */ +unsigned short col_table[256]; + +/* The collision state */ +unsigned short col_state; + +/* Resets the collision registers of the tia */ +__inline void +reset_collisions (void) +{ + col_state=0; +} + +/* Does collision testing on the pixel b */ +/* b: byte to test for collisions */ +/* Used to build up the collision table */ +int +set_collisions (BYTE b) +{ + int res=0; + + if ((b & ML0_MASK) && (b & PL1_MASK)) + res |= M0P1_MASK; + if ((b & ML0_MASK) && (b & PL0_MASK)) + res |= M0P0_MASK; + if ((b & ML1_MASK) && (b & PL0_MASK)) + res |= M1P0_MASK; + if ((b & ML1_MASK) && (b & PL1_MASK)) + res |= M1P1_MASK; + + if ((b & PL0_MASK) && (b & PF_MASK)) + res |= P0PF_MASK; + if ((b & PL0_MASK) && (b & BL_MASK)) + res |= P0BL_MASK; + if ((b & PL1_MASK) && (b & PF_MASK)) + res |= P1PF_MASK ; + if ((b & PL1_MASK) && (b & BL_MASK)) + res |= P1BL_MASK; + + if ((b & ML0_MASK) && (b & PF_MASK)) + res |= M0PF_MASK; + if ((b & ML0_MASK) && (b & BL_MASK)) + res |= M0BL_MASK; + if ((b & ML1_MASK) && (b & PF_MASK)) + res |= M1PF_MASK; + if ((b & ML1_MASK) && (b & BL_MASK)) + res |= M1BL_MASK; + + if ((b & BL_MASK) && (b & PF_MASK)) + res |=BLPF_MASK; + if ((b & PL0_MASK) && (b & PL1_MASK)) + res |=P0P1_MASK ; + if ((b & ML0_MASK) && (b & ML1_MASK)) + res |=M0M1_MASK ; + + return res; +} + + +void +init_collisions(void) +{ + int i; + + /* Set up the collision lookup table */ + for (i = 0; i < 256; i++) + col_table[i] = set_collisions(i); + + /* Get the colvect 8 byte aligned */ + if (colvect == 0) colvect=(BYTE *)emu_Malloc(28*8);//calloc(28, 8); + + reset_collisions(); +} diff --git a/MCUME_teensy/teensyvcs/Config.h b/MCUME_teensy/teensyvcs/Config.h new file mode 100644 index 0000000..1cc916e --- /dev/null +++ b/MCUME_teensy/teensyvcs/Config.h @@ -0,0 +1,14 @@ +/* + * "Hacked" and faster CPU emulation + * For CPU debugging, NORMAL (preferred) or HACK2 should be used. + */ + +//#define HACKED /* yes */ + +/* + * If you do NOT want to emulate undocumented commands, uncomment + * the line below, and also select "NORMAL" CPU emulation. + */ + +/*#define NO_UNDOC_CMDS*/ /* no */ + diff --git a/MCUME_teensy/teensyvcs/Cpu.c b/MCUME_teensy/teensyvcs/Cpu.c new file mode 100644 index 0000000..c7292cb --- /dev/null +++ b/MCUME_teensy/teensyvcs/Cpu.c @@ -0,0 +1,4980 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: cpu.c,v 1.11.1.11 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +/* + * 6507 CPU emulation + * + * Originally from X64 + * Modified by Alex Hornby for use in x2600 + * See COPYING for license terms + */ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +#include +#include +#include "types.h" +#include "cpu.h" +#include "macro.h" +#include "vmachine.h" +#include "memory.h" +#include "display.h" +#include "exmacro.h" +#include "exmacro.h" +#include "Atari2600EmulatorGlobals.h" + +extern int pausing; + +/* CPU internals */ +ADDRESS program_counter; +BYTE x_register, y_register, stack_pointer; +BYTE accumulator, status_register; +int zero_flag; +int sign_flag; +int overflow_flag; +int break_flag; +int decimal_flag; +int interrupt_flag; +int carry_flag; + +/* CPU Clock counts */ +/* Aggregate */ +CLOCK clk; +/* Current instruction */ +CLOCK clkcount = 0; + +/* Electron beam adjustment values for nine and twelve colour clock ins. */ +#define BEAMNINE 5 +#define BEAMTWELVE 9 +int beamadj; + +/* Used in undocumented 6507 instructions */ +/* These are unusual and have no discernable use, but here it is. */ +/* val: register to be acted upon */ +/* address: address to take high byte from */ +/* index: index to add to calculated address */ +#ifndef NO_UNDOC_CMDS +void +u_stoshr (unsigned int val, ADDRESS address, BYTE index) +{ + val &= (((address >> 8) + 1) & 0xff); + if (((address & 0xff) + index) > 0xff) + address = val; + STORE ((address + index), val); +} +#endif /* UNDOC */ + +/* Initialise the CPU */ +/* addr: reset vector address */ +/* Called from init_hardware() */ +void +init_cpu (ADDRESS addr) +{ + SET_SR (0x20); + AC=0; + XR=0; + YR=0; + SP = 0xff; + pc6507 = LOAD_ADDR (addr); + clk = 0; + clkcount = 0; +} + +/* The main emulation loop, performs the CPU emulation */ +void +mainloop (void) +{ + register BYTE b; +// init_hardware (); + +// int i=6000; + int i=15200/2; + +while (i--) +{ + + do_screen (clkcount); + b = LOADEXEC (pc6507); + beamadj = 0; + + switch (b) + { + case 0: + { + pc6507++; + /* Force break. */ + + SET_BREAK (1); /* Set break status. */ + PUSH (UPPER (pc6507)); + PUSH (LOWER (pc6507)); /* Push return address into the stack. */ + PUSH (GET_SR ()); /* Push status register into the stack. */ + SET_INTERRUPT (1); /* Disable interrupts. */ + pc6507 = LOAD_ADDR ((ADDRESS) 65534); /* Jump using BRK vector (0xfffe). */ + clkcount = 7; + } + break; + + case 1: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 6; + } + + break; + + case 2: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 3: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 4: + { + pc6507 += 2; + + clkcount = 3; + } + + break; + + case 5: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 3; + } + + break; + + case 6: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 7: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 8: + { + register unsigned src = GET_SR (); + pc6507++; + + PUSH (src); + /* First push item onto stack and then decrement SP. */ + clkcount = 3; + } + + break; + + case 9: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 10: + { + register unsigned src = AC; + pc6507++; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 11: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 12: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 13: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 14: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 15: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 16: +/* BPL, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if sign flag is clear. */ + if (!IF_SIGN ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 17: +/* ORA, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + + /* If low byte of address + index reg is > 0xff then extra cycle */ + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 18: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 19: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 20: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 21: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 22: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 23: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 24: + { + pc6507++; + + + SET_CARRY ((0)); + clkcount = 2; + } + + break; + + case 25: +/* ORA, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 26: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 27: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 28: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 29: +/* ORA, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src |= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 30: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + SET_CARRY (src & 0x80); + src <<= 1; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 31: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* src = asl(src); AC = ora(src); */ + + SET_CARRY (src & 0x80); /* ASL+ORA */ + src <<= 1; + src |= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 32: + { + register p2 = load_abs_addr (); + register unsigned src = p2; + pc6507 += 3; + /* Jump to subroutine. */ + pc6507--; + PUSH ((pc6507 >> 8) & 0xff); /* Push return address onto the stack. */ + PUSH (pc6507 & 0xff); + + pc6507 = (src); + clkcount = 6; + } + + break; + + case 33: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 6; + } + + break; + + case 34: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 35: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 36: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_OVERFLOW (0x40 & src); /* Copy bit 6 to OVERFLOW flag. */ + SET_ZERO (src & AC); + clkcount = 3; + } + + break; + + case 37: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 3; + } + + break; + + case 38: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 39: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 40: + { + register unsigned src; + pc6507++; + + /* First increment stack pointer and then pull item from stack. */ + src = PULL (); + + SET_SR ((src)); + clkcount = 4; + } + + break; + + case 41: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 42: + { + register unsigned src = AC; + pc6507++; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 43: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 44: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_OVERFLOW (0x40 & src); /* Copy bit 6 to OVERFLOW flag. */ + SET_ZERO (src & AC); + clkcount = 4; + } + + break; + + case 45: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 46: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 47: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 48: +/* BMI, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if sign flag is set. */ + if (IF_SIGN ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 49: +/* AND, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 50: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 51: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 52: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 53: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 54: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 55: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 56: + { + pc6507++; + + + SET_CARRY ((1)); + clkcount = 2; + } + + break; + + case 57: +/* AND, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 58: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 59: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 60: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 61: +/* AND, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + src &= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 62: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + src <<= 1; + if (IF_CARRY ()) + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 63: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* src = rol(src); AC = and(src); */ + + src <<= 1; + if (IF_CARRY ()) /* ROL+AND */ + src |= 0x1; + SET_CARRY (src > 0xff); + src &= 0xff; + + AC &= src; + SET_SIGN (AC); + SET_ZERO (AC); + /* rotated, not disturbed */ + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 64: + { + register unsigned src; + pc6507++; + /* Return from interrupt. */ + /* Load program status and program counter from stack. */ + src = PULL (); + SET_SR (src); + src = PULL (); + src |= (PULL () << 8); /* Load return address from stack. */ + + pc6507 = (src); + clkcount = 6; + } + + break; + + case 65: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 6; + } + + break; + + case 66: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 67: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 68: + { + pc6507 += 2; + + clkcount = 3; + } + + break; + + case 69: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 3; + } + + break; + + case 70: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 71: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 72: +/* PHA, IMPLIED */ + { + register unsigned src = AC; + pc6507++; + + beamadj = BEAMNINE; + PUSH (src); + /* First push item onto stack and then decrement SP. */ + clkcount = 3; + } + + break; + + case 73: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 2; + } + + break; + + case 74: + { + register unsigned src = AC; + pc6507++; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 75: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 76: + { + register p2 = load_abs_addr (); + register unsigned src = p2; + pc6507 += 3; + + + pc6507 = (src); + clkcount = 3; + } + + break; + + case 77: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 4; + } + + break; + + case 78: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 79: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 80: +/* BVC, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if overflow flag is clear. */ + if (!IF_OVERFLOW ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 81: +/* EOR, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + } + + break; + + case 82: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 83: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 84: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 85: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + clkcount = 4; + } + + break; + + case 86: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 87: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 88: + { + pc6507++; + + + SET_INTERRUPT ((0)); + clkcount = 2; + } + + break; + + case 89: +/* EOR, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + } + + break; + + case 90: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 91: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 92: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 93: +/* EOR, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src ^= AC; + SET_SIGN (src); + SET_ZERO (src); + + AC = (src & 0xff); + } + + break; + + case 94: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 95: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* src = lsr(src); AC = eor(src); */ + + SET_CARRY (src & 0x01); /* LSR+EOR */ + src >>= 1; + src ^= AC; + src &= 0xff; + SET_SIGN (src); + SET_ZERO (src); + + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 96: + { + register unsigned src; + pc6507++; + /* Return from subroutine. */ + src = PULL (); + src += ((PULL ()) << 8) + 1; /* Load return address from stack and add 1. */ + + pc6507 = (src); + clkcount = 6; + } + + break; + + case 97: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 6; + } + + break; + + case 98: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 99: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (LOAD_ZERO_ADDR (p1 + XR), ((BYTE) temp)); + clkcount = 8; + } + + break; + + case 100: + { + pc6507 += 2; + + clkcount = 3; + } + + break; + + case 101: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 3; + } + + break; + + case 102: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 103: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE_ZERO (p1, ((BYTE) temp)); + clkcount = 5; + } + + break; + + case 104: +/* PLA, IMPLIED */ + { + register unsigned src; + pc6507++; + + clkcount = 4; + /* First increment stack pointer and then pull item from stack. */ + src = PULL (); + SET_SIGN (src); /* Change sign and zero flag accordingly. */ + SET_ZERO (src); + + AC = (src); + } + + break; + + case 105: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 2; + } + + break; + + case 106: + { + register unsigned src = AC; + pc6507++; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 107: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 108: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD_ADDR (p2); + pc6507 += 3; + + + pc6507 = (src); + clkcount = 5; + } + + break; + + case 109: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 3; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 4; + } + + break; + + case 110: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 111: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp; + pc6507 += 3; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (p2, ((BYTE) temp)); + clkcount = 6; + } + + break; + + case 112: +/* BVS, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if overflow flag is set. */ + if (IF_OVERFLOW ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 113: + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + } + + break; + + case 114: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 115: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (LOAD_ZERO_ADDR (p1) + YR, ((BYTE) temp)); + clkcount = 8; + } + + break; + + case 116: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 117: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 2; + + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + clkcount = 4; + } + + break; + + case 118: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 119: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE_ZERO (p1 + XR, ((BYTE) temp)); + clkcount = 6; + } + + break; + + case 120: + { + pc6507++; + + + SET_INTERRUPT ((1)); + clkcount = 2; + } + + break; + + case 121: +/* ADC, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 3; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + } + + break; + + case 122: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 123: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (p2 + YR, ((BYTE) temp)); + clkcount = 7; + } + + break; + + case 124: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 125: +/* ADC, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp = src + AC + (IF_CARRY ()? 1 : 0); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_ZERO (temp & 0xff); /* This is not valid in decimal mode */ + + /* + * In decimal mode this is "correct" but not exact emulation. However, + * the probability of different result when using undefined BCD codes is + * less than 6% + * Sign and Overflow are set between BCD fixup of the two digits -MSM + */ + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (src & 0xf) + (IF_CARRY ()? 1 : 0)) > 9) + temp += 6; + + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + + if (temp > 0x99) + temp += 96; + + SET_CARRY (temp > 0x99); + } + else + { + SET_SIGN (temp); + SET_OVERFLOW (!((AC ^ src) & 0x80) && ((AC ^ temp) & 0x80)); + SET_CARRY (temp > 0xff); + } + + AC = ((BYTE) temp); + } + + break; + + case 126: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + if (IF_CARRY ()) + src |= 0x100; + SET_CARRY (src & 0x01); + src >>= 1; + + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 127: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ror(src); AC = adc(src); + * the real operation discovered by msmakela + * ADC only does the BCD fixup */ + + temp = src >> 1; /* ROR+ADC */ + if (IF_CARRY ()) + temp |= 0x80; + + SET_SIGN (temp); + SET_ZERO (temp); /* Set flags like ROR does */ + + SET_OVERFLOW ((temp ^ src) & 0x40); /* ROR causes this ? */ + + if (IF_DECIMAL ()) + { + if ((src & 0x0f) > 4) /* half of the normal */ + temp = (temp & 0xf0) | ((temp + 6) & 0xf); + if (src > 0x4f) + temp += 96; + + SET_CARRY (src > 0x4f); + } + else + { + SET_CARRY (src & 0x80); /* 8502 behaviour */ + } + + + STORE (p2 + XR, ((BYTE) temp)); + clkcount = 7; + } + + break; + + case 128: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 129: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + pc6507 += 2; + + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 6; + } + + break; + + case 130: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 131: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 6; + } + + break; + + case 132: +/* STY, ZERO_PAGE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = YR; + + clkcount = 3; + pc6507 += 2; + + beamadj = BEAMNINE; + STORE_ZERO (p1, (src)); + } + + break; + + case 133: +/* STA, ZERO_PAGE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + + clkcount = 3; + pc6507 += 2; + + beamadj = BEAMNINE; + STORE_ZERO (p1, (src)); + } + + break; + + case 134: +/* STX, ZERO_PAGE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = XR; + + clkcount = 3; + pc6507 += 2; + + beamadj = BEAMNINE; + STORE_ZERO (p1, (src)); + } + + break; + + case 135: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + STORE_ZERO (p1, (src)); + clkcount = 3; + } + + break; + + case 136: + { + register unsigned src = YR; + pc6507++; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 137: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 138: + { + register unsigned src = XR; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 139: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = ((AC | 0xee) & XR & p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 140: +/* STY, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = YR; + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 141: +/* STA, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = AC; + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 142: +/* STA, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = XR; + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 143: +/* STX, ABSOLUTE */ + { + register p2 = load_abs_addr (); + register unsigned src = (AC & XR); + pc6507 += 3; + + beamadj = BEAMTWELVE; + STORE (p2, (src)); + clkcount = 4; + } + + break; + + case 144: +/* BCC, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register hb; + register unsigned src = p1; + pc6507 += 2; + /* Branch if carry flag is clear. */ + if (!IF_CARRY ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 145: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + pc6507 += 2; + + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 6; + } + + break; + + case 146: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 147: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + u_stoshr (src, LOAD_ZERO_ADDR (p1), YR); + clkcount = 6; + } + + break; + + case 148: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = YR; + clkcount = 4; + pc6507 += 2; + + beamadj = BEAMTWELVE; + STORE_ZERO (p1 + XR, (src)); + } + + break; + + case 149: +/* STA, ZERO_PAGE_X */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = AC; + clkcount = 4; + pc6507 += 2; + + beamadj = BEAMTWELVE; + STORE_ZERO (p1 + XR, (src)); + } + + break; + + case 150: +/* STX, ZERO_PAGE_Y */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = XR; + clkcount = 4; + pc6507 += 2; + + beamadj = BEAMTWELVE; + STORE_ZERO (p1 + YR, (src)); + } + + break; + + case 151: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & XR); + pc6507 += 2; + + + STORE_ZERO (p1 + YR, (src)); + clkcount = 4; + } + + break; + + case 152: + { + register unsigned src = YR; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 153: + { + register p2 = load_abs_addr (); + register unsigned src = AC; + pc6507 += 3; + + + STORE (p2 + YR, (src)); + clkcount = 5; + } + + break; + + case 154: + { + register unsigned src = XR; + pc6507++; + + + SP = (src); + clkcount = 2; + } + + break; + + case 155: + { + register unsigned src = (AC & XR); + pc6507 += 3; + + + SP = src; /* SHS */ ; + clkcount = 5; + } + + break; + + case 156: + { + register p2 = load_abs_addr (); + register unsigned src = YR; + pc6507 += 3; + + + u_stoshr (src, p2, XR); + clkcount = 5; + } + + break; + + case 157: + { + register p2 = load_abs_addr (); + register unsigned src = AC; + pc6507 += 3; + + + STORE (p2 + XR, (src)); + clkcount = 5; + } + + break; + + case 158: + { + register p2 = load_abs_addr (); + register unsigned src = XR; + pc6507 += 3; + + + u_stoshr (src, p2, YR); + clkcount = 5; + } + + break; + + case 159: + { + register p2 = load_abs_addr (); + register unsigned src = (AC & XR); + pc6507 += 3; + + + u_stoshr (src, p2, YR); + clkcount = 5; + } + + break; + + case 160: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 161: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 6; + } + + break; + + case 162: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 163: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 6; + } + + break; + + case 164: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 3; + } + + break; + + case 165: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 3; + } + + break; + + case 166: +/* LDX, ZERO_PAGE */ + { + register p1 = LOADEXEC (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + + clkcount = 3; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + } + + break; + + case 167: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 3; + } + + break; + + case 168: + { + register unsigned src = AC; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 169: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 2; + } + + break; + + case 170: + { + register unsigned src = AC; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 171: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = (AC & p1); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 2; + } + + break; + + case 172: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 4; + } + + break; + + case 173: /* LDA absolute */ + { + register p2 = load_abs_addr (); + register unsigned src; + clkcount = 4; + src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 174: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 4; + } + + break; + + case 175: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 4; + } + + break; + + case 176: +/* BCS, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if carry flag is set. */ + if (IF_CARRY ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 177: +/* LDA, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 178: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 179: +/* LAX, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + } + + break; + + case 180: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 4; + } + + break; + + case 181: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + clkcount = 4; + } + + break; + + case 182: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + YR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 4; + } + + break; + + case 183: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + YR); + pc6507 += 2; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + clkcount = 4; + } + + break; + + case 184: + { + pc6507++; + + + SET_OVERFLOW ((0)); + clkcount = 2; + } + + break; + + case 185: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 186: + { + register unsigned src = SP; + pc6507++; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 187: + { + register p2 = load_abs_addr (); + register unsigned src = (SP & LOAD (p2 + YR)); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = SP = (src); + } + + break; + + case 188: +/* LDY, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + } + + break; + + case 189: +/* LDA, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = (src); + } + + break; + + case 190: +/* LDX, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + } + + break; + + case 191: +/* LAX, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + SET_SIGN (src); + SET_ZERO (src); + + AC = XR = (src); + } + + break; + + case 192: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = YR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 2; + } + + break; + + case 193: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 6; + } + + break; + + case 194: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 195: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 196: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = YR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 3; + } + + break; + + case 197: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 3; + } + + break; + + case 198: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 199: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 200: + { + register unsigned src = YR; + pc6507++; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + YR = (src); + clkcount = 2; + } + + break; + + case 201: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 2; + } + + break; + + case 202: + { + register unsigned src = XR; + pc6507++; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 203: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = (AC & XR) - src; /* Carry is ignored (CMP) */ + /* Overflow flag may be affected */ + SET_CARRY (src < 0x100); + + src &= 0xff; /* No decimal mode */ + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 204: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = YR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 205: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 206: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 207: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 208: +/* BNE, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if zero flag is clear. */ + if (!IF_ZERO ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 209: +/* CMP, INDIRECT_Y */ + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + pc6507 += 2; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + } + + break; + + case 210: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + ////mon (pc6507); + } + + break; + + case 211: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 212: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 213: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 214: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 215: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 216: + { + pc6507++; + + + SET_DECIMAL ((0)); + clkcount = 2; + } + + break; + + case 217: +/* CMP, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + } + + break; + + case 218: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 219: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + pc6507 += 3; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 220: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 221: +/* CMP, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + src = AC - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + } + + break; + + case 222: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + src = (src - 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 223: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + /* cmp(--src & 0xff)); */ + + src = (src - 1) & 0xff; /* DEC+CMP */ + SET_CARRY (AC >= src); + SET_SIGN (AC - src); + SET_ZERO (AC != src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 224: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + pc6507 += 2; + + src = XR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 2; + } + + break; + + case 225: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 6; + } + + break; + + case 226: + { + pc6507 += 2; + + clkcount = 2; + } + + break; + + case 227: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1 + XR)); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (LOAD_ZERO_ADDR (p1 + XR), (src)); + clkcount = 8; + } + + break; + + case 228: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = XR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 3; + } + + break; + + case 229: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 3; + } + + break; + + case 230: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + pc6507 += 2; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 231: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE_ZERO (p1, (src)); + clkcount = 5; + } + + break; + + case 232: + { + register unsigned src = XR; + pc6507++; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + XR = (src); + clkcount = 2; + } + + break; + + case 233: +/* SBC, IMMEDIATE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + if (!IF_DECIMAL ()) + { + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + SET_CARRY (temp < 0x100); + AC = (temp & 0xff); + + } + else + { + int bcd1, bcd2; + BYTE old_A; + int C = IF_CARRY ()? 1 : 0; + + old_A = AC; + + bcd1 = fromBCD (AC); + bcd2 = fromBCD (src); + + bcd1 = bcd1 - bcd2 - !C; + + if (bcd1 < 0) + bcd1 = 100 - (-bcd1); + AC = toBCD (bcd1); + + SET_CARRY ((old_A < (src + !C)) ? 0 : 1); + SET_OVERFLOW ((old_A ^ AC) & 0x80); + } + clkcount = 2; + } + + break; + + case 234: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 235: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 2; + } + + break; + + case 236: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = XR - src; + SET_CARRY (src < 0x100); + SET_SIGN (src); + SET_ZERO (src &= 0xff); + clkcount = 4; + } + + break; + + case 237: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 3; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 4; + } + + break; + + case 238: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + pc6507 += 3; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 239: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2); + register unsigned int temp; + pc6507 += 3; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (p2, (src)); + clkcount = 6; + } + + break; + + case 240: +/* BEQ, RELATIVE */ + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = p1; + register BYTE hb; + pc6507 += 2; + /* Branch if zero flag is set. */ + if (IF_ZERO ()) + { + hb = UPPER (pc6507); + pc6507 = REL_ADDR (pc6507, src); + if (brtest (hb)) + /* Same page */ + clkcount = 3; + else + /* Different page */ + clkcount = 4; + } + else + clkcount = 2; + } + + break; + + case 241: + { + register p1 = LOAD (pc6507 + 1); + register ADDRESS p2 = LOAD_ZERO_ADDR (p1); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 6; + else + /* Same page */ + clkcount = 5; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + } + + break; + + case 242: + { + pc6507++; // KILL Instruction + /* No such opcode. */ + //(void) printf ("Illegal instruction.\n"); + //verflg = 1; + //--pc6507; + //show(); + //mon (pc6507); + } + + break; + + case 243: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD (LOAD_ZERO_ADDR (p1) + YR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (LOAD_ZERO_ADDR (p1) + YR, (src)); + clkcount = 8; + } + + break; + + case 244: + { + pc6507 += 2; + + clkcount = 4; + } + + break; + + case 245: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 2; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + clkcount = 4; + } + + break; + + case 246: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + pc6507 += 2; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 247: + { + register p1 = LOAD (pc6507 + 1); + register unsigned src = LOAD_ZERO (p1 + XR); + register unsigned int temp; + pc6507 += 2; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE_ZERO (p1 + XR, (src)); + clkcount = 6; + } + + break; + + case 248: +/* SED, IMPLIED */ + { + pc6507++; + + SET_DECIMAL ((1)); + clkcount = 2; + } + + break; + + case 249: +/* SBC, ABSOLUTE_Y */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 3; + + if (pagetest (p2, YR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + } + + break; + + case 250: + { + pc6507++; + + clkcount = 2; + } + + break; + + case 251: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + YR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (p2 + YR, (src)); + clkcount = 7; + } + + break; + + case 252: + { + pc6507 += 3; + + clkcount = 4; + } + + break; + + case 253: +/* SBC, ABSOLUTE_X */ + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp = AC - src - (IF_CARRY ()? 0 : 1); + pc6507 += 3; + + if (pagetest (p2, XR)) + /* Over page */ + clkcount = 5; + else + /* Same page */ + clkcount = 4; + + /* + * SBC is not exact either. It has 6% different results too. + */ + + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = (temp & 0xff); + } + + break; + + case 254: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + pc6507 += 3; + + src = (src + 1) & 0xff; + SET_SIGN (src); + SET_ZERO (src); + + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + case 255: + { + register p2 = load_abs_addr (); + register unsigned src = LOAD (p2 + XR); + register unsigned int temp; + pc6507 += 3; + + + /* src = ++src & 0xff; AC = sbc(src); */ + + src = ((src + 1) & 0xff); /* INC+SBC */ + + temp = AC - src - (IF_CARRY ()? 0 : 1); + + SET_SIGN (temp); + SET_ZERO (temp & 0xff); /* Sign and Zero are invalid in decimal mode */ + + SET_OVERFLOW (((AC ^ temp) & 0x80) && ((AC ^ src) & 0x80)); + + if (IF_DECIMAL ()) + { + if (((AC & 0xf) + (IF_CARRY ()? 1 : 0)) < (src & 0xf)) + temp -= 6; + if (temp > 0x99) + temp -= 0x60; + } + SET_CARRY (temp < 0x100); + + AC = temp; + /* src saved */ + STORE (p2 + XR, (src)); + clkcount = 7; + } + + break; + + + + } /* switch */ + + clk += clkcount; + + } /* while(!pausing) */ + + +bThreadRunning = 0; +pausing = 0; + +} /* mainloop */ diff --git a/MCUME_teensy/teensyvcs/Display.c b/MCUME_teensy/teensyvcs/Display.c new file mode 100644 index 0000000..fa5a026 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Display.c @@ -0,0 +1,108 @@ +/***************************************************************************** + + This file is part of Virtual VCS, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + Modified 1996 by Daniel Boris + Modified 2001 by Stuart Russell + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: display.c,v 1.23 1996/03/21 15:52:38 alex Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* + Display handling code. +*/ + +#include +#include +#include "types.h" +#include "btypes.h" +#include "vmachine.h" +#include "address.h" +#include "colours.h" +#include "resource.h" +#include "display.h" +#include "emuapi.h" + + +int vwidth,vheight,theight; +uint8 * VBuf=0; //[(160)*192+8]; +char coltable[256]; + +/* The refresh skipping counter */ +int tv_counter=0; + +/* Set up the colormap - original is 24bit! +//------------------------------------------------------------------------------------ +// we use a 16 bit color palette (rrrrrggggggbbbbb). This should change based +// on the PDA device (E-125). +//------------------------------------------------------------------------------------*/ +static void create_cmap(void) +{ + int i; + unsigned char red,green,blue; + + /* Initialise parts of the colors array */ + for(i=0; i< 256; i++) + { + red = (unsigned char)((colortable[i] & 0xff0000) >> 16); + green = (unsigned char)((colortable[i] & 0x00ff00) >> 8); + blue = (unsigned char)(colortable[i] & 0x0000ff); + emu_SetPaletteEntry(red,green,blue,i); + } +} + + +/* Create the main application shell */ +static void create_window() +{ + int i; + + theight = tv_height; + vheight = tv_height; + vwidth = tv_width; + create_cmap(); + for(i=0; i<256; i++) coltable[i]=1; + coltable[0]=coltable[1]=coltable[2]=coltable[4]=0; + coltable[8]=coltable[16]=coltable[32]=coltable[64]=0; + coltable[128]=0; +} + + +/* The main initialiser for the X stuff */ +int tv_on() +{ + /* Get the basic colors */ + unsigned long m; + + if (VBuf == 0) VBuf = (uint8 *)emu_Malloc((160)*192+8); + + create_window(); + + // if pointer size is 4 bytes, make sure the + // buffer is aligned on an 8 byte boundary. + if(sizeof(uint8*)==4) + { + m=(unsigned long)VBuf; + m+=8; + m&=0xFFFFFFF8; + VBuf=(uint8*)m; + } + memset(VBuf,128,160*192); + return(1); +} + + + + + + + diff --git a/MCUME_teensy/teensyvcs/Exmacro.c b/MCUME_teensy/teensyvcs/Exmacro.c new file mode 100644 index 0000000..23566bf --- /dev/null +++ b/MCUME_teensy/teensyvcs/Exmacro.c @@ -0,0 +1,69 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: exmacro.c,v 1.6 1996/08/26 15:04:20 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* Things that used to be macros, but are now __inline functions. + Done for ease of debugging */ + +#include "types.h" +#include "extern.h" +#include "macro.h" +#include "memory.h" +#include "exmacro.h" + +/* Loads an absolute address uising the quicker load mechanism */ +__inline ADDRESS +load_abs_addr (void) +{ + return (LOADEXEC (pc6507 + 1) | (LOADEXEC (pc6507 + 2) << 8)); +} + +/* Used in variable cycle time indexed addressing */ +/* a: address to be incremented */ +/* b: increment value */ +/* returns: TRUE if an address increment will cross a page boundary */ +__inline int +pagetest (ADDRESS a, BYTE b) +{ + return (LOWER (a) + b > 0xff); +} + +/* Used in variable cycle time branches */ +/* a: high byte of new address */ +/* returns: TRUE if a branch is to the same page */ +__inline int +brtest (BYTE a) +{ + return (UPPER (pc6507) == (a)); +} + +/* Convert from binary to BCD (Binary Coded Decimal) */ +/* a: binary value */ +/* returns: BCD value */ +__inline int +toBCD (int a) +{ + return (((a % 100) / 10) << 4) | (a % 10); +} + +/* Convert from BCD to binary */ +/* a: BCD value */ +/* returns: binary value */ +__inline int +fromBCD (int a) +{ + return ((a >> 4) & 0xf) * 10 + (a & 0xf); +} diff --git a/MCUME_teensy/teensyvcs/Keyboard.c b/MCUME_teensy/teensyvcs/Keyboard.c new file mode 100644 index 0000000..590c337 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Keyboard.c @@ -0,0 +1,115 @@ +/***************************************************************************** + + This file is part of Virtual VCS, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Daniel Boris. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + +******************************************************************************/ +/* + This module has been completely re-written since X2600 + This has been hacked for the E-125 by Stuart Russell +*/ + +#include +#include +#include +#include "keyboard.h" +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "extern.h" +#include "memory.h" +#include "display.h" +#include "resource.h" + +#include "emuapi.h" + +// this returns a byte from the key state buffer. +// example: KEY(0) will be expanded to: keys[SCANCODE_0] +//#define KEY(__a) keys[SCANCODE_##__a] + +extern char *KeyboardGetstate(void); +extern int pausing; +extern int nOptions_Color; +extern int nOptions_P1Diff; +extern int nOptions_P2Diff; + + +void keyjoy(void) { + int key; + BYTE v1,v2; + + v1=v2=0x0f; + // read the keyboard state. The return value (in keys) is a pointer to a + // 256 byte buffer which holds the state of all the keyboard keys. If a + // byte's upper bit is set to 1, the key is pressed. + + + key = emu_ReadKeys(); + if (key & MASK_JOY2_UP) v1 &= 0x0E; + if (key & MASK_JOY2_DOWN) v1 &= 0x0D; + if (key & MASK_JOY2_RIGHT) v1 &= 0x0B; + if (key & MASK_JOY2_LEFT) v1 &= 0x07; + + riotRead[0x280]=(v1 << 4) | v2; +} + + +void keycons(void) { +//--------------------------------------------------------- +// This function reads the state of the joysticks (buttons) +//--------------------------------------------------------- + int key = emu_ReadKeys();; + int sw = emu_GetPad() & 0xff; + + // read the keyboard state. The return value (in keys) is a pointer to a + // 256 byte buffer which holds the state of all the keyboard keys. If a + // byte's upper bit is set to 1, the key is pressed. + + riotRead[SWCHB] |= 0x03; + + if ( (key & MASK_KEY_USER3) | (sw == 2) ) // + nOptions_Color = !nOptions_Color; + + if (!nOptions_Color) + riotRead[SWCHB] &= 0xF7; /* BW */ + else + riotRead[SWCHB] |= 0x08; /* Color */ + + + if ( (key & MASK_KEY_USER1) | (sw == 4) ) + riotRead[SWCHB] &= 0xFE; /* Reset */ + if ( (key & MASK_KEY_USER2) | (sw == 3) ) + riotRead[SWCHB] &= 0xFD; /* Select */ + + if (nOptions_P1Diff) riotRead[SWCHB] &= 0xBF; /* P0 amateur */ + else riotRead[SWCHB] |= 0x40; /* P0 pro */ + + if (nOptions_P2Diff) riotRead[SWCHB] &= 0x7f; /* P1 amateur */ + else riotRead[SWCHB] |= 0x80; /* P1 pro */ +} + +void keytrig(void) { + int key; + + // read the keyboard state. The return value (in keys) is a pointer to a + // 256 byte buffer which holds the state of all the keyboard keys. If a + // byte's upper bit is set to 1, the key is pressed. + + key = emu_ReadKeys(); + + if (!(tiaWrite[VBLANK] & 0x40)) { + tiaRead[INPT5]=0x80; + if (key & 0x10) + tiaRead[INPT4]=0x00; + else + tiaRead[INPT4]=0x80; + } +} + diff --git a/MCUME_teensy/teensyvcs/Memory.c b/MCUME_teensy/teensyvcs/Memory.c new file mode 100644 index 0000000..ede0379 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Memory.c @@ -0,0 +1,785 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: memory.c,v 2.23 1997/04/06 02:19:12 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* + * Holds the memory access routines to both memory and memory mapped + * i/o, hence memory.c + * + * Uses GNU C extensions. + */ + +#include +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "display.h" +#include "raster.h" +#include "tiasound.h" +#include "collision.h" +#include "col_mask.h" +#include "options.h" +#include "keyboard.h" +#include "sound.h" +#include "resource.h" + + +extern CLOCK clkcount; +extern CLOCK clk; +extern int beamadj; +//extern keyboard_keypad(); +extern keytrig(); +extern keyjoy(); +extern keycons(); +extern int nOptions_Landscape; +extern int nOptions_SoundOn; + + +/* Undecoded Read, for executable code etc. */ +/* a: address to read */ +/* returns: byte at address a */ +BYTE +undecRead (ADDRESS a) +{ + if (a & 0x1000) + return theRom[a & 0xfff]; + else + return theRam[a & 0x7f]; +} + + +__inline void +bank_switch_write (ADDRESS a, BYTE b) +{ + a&=0xfff; + switch (base_opts.bank) + { + + case 1: + /* Atari 8k F8 */ + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + } + break; + + case 2: + /* Atari 16k F6 */ + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + break; + + case 3: + /* Parker Brothers 8k E0 */ + { + ADDRESS a1; + if (a > 0xfdf && a < 0xfe8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0],&theCart[a1],0x400); + } + else if (a > 0xfe7 && a < 0xff0) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x400],&theCart[a1],0x400); + } + else if (a > 0xfef && a < 0xff8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x800],&theCart[a1],0x400); + } + } + break; + + case 4: + /* CBS Ram Plus FA */ + if (a < 0x100) + cartRam[a & 0xff]=b; + else + { + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + case 0xffa: + theRom = &theCart[8192]; + break; + } + } + break; + + case 5: + /* Atari 16k + super chip ram F6SC */ + if (a < 0x80) + cartRam[a & 0x7f] = b; + else + { + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + } + break; + } +} + +__inline BYTE +bank_switch_read (ADDRESS a) +{ + BYTE res; + + a&=0xfff; + switch (base_opts.bank) + { + case 1: + /* Atari 8k F8 */ + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + } + res=theRom[a]; + break; + + case 2: + /* Atari 16k F6 */ + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + res=theRom[a]; + break; + + case 3: + /* Parker Brothers 8k E0 */ + /* Parker Brothers 8k E0 */ + { + ADDRESS a1; + if (a > 0xfdf && a < 0xfe8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0],&theCart[a1],0x400); + } + else if (a > 0xfe7 && a < 0xff0) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x400],&theCart[a1],0x400); + } + else if (a > 0xfef && a < 0xff8) + { + a1=(a&0x07)<<10; + memcpy(&cartScratch[0x800],&theCart[a1],0x400); + } + } + res=theRom[a]; + break; + + case 4: + /* CBS Ram Plus FA */ + if (a > 0xff && a < 0x200) + res=cartRam[a & 0xff]; + else + { + switch (a) + { + case 0xff8: + theRom = &theCart[0]; + break; + case 0xff9: + theRom = &theCart[4096]; + break; + case 0xffa: + theRom = &theCart[8192]; + break; + } + res=theRom[a]; + } + break; + + case 5: + /* Atari 16k + super chip ram F6SC */ + if (a > 0x7f && a < 0x100) + res=cartRam[a & 0x7f]; + else + { + switch (a) + { + case 0xff6: + theRom = &theCart[0]; + break; + case 0xff7: + theRom = &theCart[4096]; + break; + case 0xff8: + theRom = &theCart[8192]; + break; + case 0xff9: + theRom = &theCart[12288]; + break; + } + res=theRom[a]; + } + break; + default: + res=theRom[a]; + break; + } + return res; +} + + +/* Decoded write to memory */ +/* a: address written to */ +/* b: byte value written */ +void +decWrite (ADDRESS a, BYTE b) +{ + int i; + + /* A Write to the ROM area */ + if (a & 0x1000) + { + bank_switch_write (a,b); + } + /* A Write to the RAM area in Page 0 and 1 */ + else if ((a & 0x280) == 0x80) + { + theRam[a & 0x7f] = b; + } + /* TIA */ + else if (!(a & 0x80)) + { + switch (a & 0x7f) + { + case VSYNC: + if (b & 0x02) + { + /* Start vertical sync */ + vbeam_state = VSYNCSTATE; + } + break; + case VBLANK: + do_vblank (b); + /* Ground paddle pots */ + if (b & 0x80) + { + /* Grounded ports */ + tiaRead[INPT0] = 0x00; + tiaRead[INPT1] = 0x00; + } + else + { + /* Processor now measures time for a logic 1 to appear + at each paddle port */ + tiaRead[INPT0] = 0x80; + tiaRead[INPT1] = 0x80; + paddle[0].val = clk; + paddle[1].val = clk; + } + /* Logic for dumped input ports */ + if (b & 0x40) + { + if (tiaWrite[VBLANK] & 0x40) + { + tiaRead[INPT4] = 0x80; + tiaRead[INPT5] = 0x80; + } +// else +// { +// //read_trigger (); +// } + } + tiaWrite[VBLANK] = b; + break; + case WSYNC: + /* Skip to HSYNC pulse */ + do_hsync (); + break; + case RSYNC: + /* used in chip testing */ + //dbg_message(DBG_LOTS,"ARGHH an undocumented RSYNC!\n"); + break; + case NUSIZ0: + /* + printf("P0 nusize: ebeamx=%d, ebeamy=%d, nusize=%02x\n", + ebeamx, ebeamy, (int)b); + */ + pl[0].nusize = b & 0x07; + ml[0].width = (b & 0x30) >> 4; + break; + case NUSIZ1: + /* + printf("P1 nusize: ebeamx=%d, ebeamy=%d, nusize=%02x\n", + ebeamx, ebeamy, (int)b); + */ + pl[1].nusize = b & 0x07; + ml[1].width = (b & 0x30) >> 4; + break; + case COLUP0: + do_unified_change (0, b); + break; + case COLUP1: + do_unified_change (1, b); + break; + case COLUPF: + do_unified_change (2, b); + break; + case COLUBK: + /*printf("BKcolour = %d, line=%d\n", (int)(b>>1), ebeamy); */ + do_unified_change (3, b); + break; + case CTRLPF: + tiaWrite[CTRLPF] = b & 0x37; /* Bitmask 00110111 */ + do_pfraster_change (0, 3, b & 0x01); /* Reflection */ + + /* Normal/Alternate priority */ + do_unified_change(4, (b & 0x04)); + + /* Scores/Not scores */ + do_unified_change(5, (b & 0x02)); + + break; + case REFP0: + pl[0].reflect = (b & 0x08) >> 3; + break; + case REFP1: + pl[1].reflect = (b & 0x08) >> 3; + break; + case PF0: + do_pfraster_change (0, 0, b & 0xf0); + break; + case PF1: + do_pfraster_change (0, 1, b); + break; + case PF2: + do_pfraster_change (0, 2, b); + break; + case RESP0: + /* Ghost in pacman! + if(beamadj == 0) { + printf("RESP0: ebeamx=%d, ebeamy=%d\n", + ebeamx, ebeamy); + show(); + } */ + pl[0].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (pl[0].x < 0) + pl[0].x = 0; + break; + case RESP1: + /*if(beamadj == 0) { + printf("RESP1: ebeamx=%d, ebeamy=%d\n", + ebeamx, ebeamy); + show(); + } */ + pl[1].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (pl[1].x < 0) + pl[1].x = 0; + break; + case RESM0: + ml[0].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (ml[0].x < 0) + ml[0].x = 0; + break; + case RESM1: + ml[1].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (ml[1].x < 0) + ml[1].x = 0; + break; + case RESBL: + ml[2].x = ebeamx + beamadj; + /* As per page 20 Stella Programmers Guide */ + if (ml[2].x < 0) + ml[2].x = 0; + break; + case AUDC0: + if (nOptions_SoundOn) Update_tia_sound(AUDC0,b & 0x0f); + break; + case AUDC1: + if (nOptions_SoundOn) Update_tia_sound(AUDC1,b & 0x0f); + break; + case AUDF0: + if (nOptions_SoundOn) Update_tia_sound(AUDF0,b & 0x1f); + break; + case AUDF1: + if (nOptions_SoundOn) Update_tia_sound(AUDF1,b & 0x1f); + break; + case AUDV0: + if (nOptions_SoundOn) Update_tia_sound(AUDV0 , b & 0x0f); + break; + case AUDV1: + if (nOptions_SoundOn) Update_tia_sound(AUDV1 , b & 0x0f); + break; + case GRP0: + do_plraster_change (0, 0, b); + do_plraster_change (1, 1, b); + break; + case GRP1: + do_plraster_change (1, 0, b); + do_plraster_change (0, 1, b); + ml[2].vdel = ml[2].enabled; + break; + case ENAM0: + ml[0].enabled = b & 0x02; + if (tiaWrite[RESMP0]) + ml[0].enabled = 0; + break; + case ENAM1: + ml[1].enabled = b & 0x02; + if (tiaWrite[RESMP1]) + ml[1].enabled = 0; + break; + case ENABL: + ml[2].enabled = b & 0x02; + break; + case HMP0: + pl[0].hmm = (b >> 4); + break; + case HMP1: + pl[1].hmm = (b >> 4); + break; + case HMM0: + ml[0].hmm = (b >> 4); + break; + case HMM1: + ml[1].hmm = (b >> 4); + break; + case HMBL: + ml[2].hmm = (b >> 4); + break; + case VDELP0: + pl[0].vdel_flag = b & 0x01; + break; + case VDELP1: + pl[1].vdel_flag = b & 0x01; + break; + case VDELBL: + ml[2].vdel_flag = b & 0x01; + break; + case RESMP0: + tiaWrite[RESMP0] = b & 0x02; + if (b & 0x02) + { + ml[0].x = pl[0].x + 4; + ml[0].enabled = 0; + } + break; + case RESMP1: + tiaWrite[RESMP1] = b & 0x02; + if (b & 0x02) + { + ml[1].x = pl[1].x + 4; + ml[1].enabled = 0; + } + break; + case HMOVE: + /* Player 0 */ + if (pl[0].hmm & 0x08) + pl[0].x += ((pl[0].hmm ^ 0x0f) + 1); + else + pl[0].x -= pl[0].hmm; + if (pl[0].x > 160) + pl[0].x = -68; + else if (pl[0].x < -68) + pl[0].x = 160; + + /* Player 2 */ + if (pl[1].hmm & 0x08) + pl[1].x += ((pl[1].hmm ^ 0x0f) + 1); + else + pl[1].x -= pl[1].hmm; + if (pl[1].x > 160) + pl[1].x = -68; + else if (pl[1].x < -68) + pl[1].x = 160; + + /* Missiles */ + for (i = 0; i < 3; i++) + { + if (ml[i].hmm & 0x08) + ml[i].x += ((ml[i].hmm ^ 0x0f) + 1); + else + ml[i].x -= ml[i].hmm; + if (ml[i].x > 160) + ml[i].x = -68; + else if (ml[i].x < -68) + ml[i].x = 160; + } + break; + case HMCLR: + pl[0].hmm = 0; + pl[1].hmm = 0; + for (i = 0; i < 3; i++) + ml[i].hmm = 0; + break; + case CXCLR: + col_state=0; + break; + } + } + else + { + switch (a & 0x2ff) + { + /* RIOT I/O ports */ + case SWCHA: + riotWrite[SWCHA] = b; + break; + case SWACNT: + riotWrite[SWACNT] = b; + break; + case SWCHB: + case SWBCNT: + /* Do nothing */ + break; + + /* Timer ports */ + case TIM1T: + set_timer (0, b, clkcount); + break; + case TIM8T: + set_timer (3, b, clkcount); + break; + case TIM64T: + set_timer (6, b, clkcount); + break; + case T1024T: + set_timer (10, b, clkcount); + break; + default: + //printf ("Unknown write %x\n", a); + //show (); + break; + } + } +} + + +/* Decoded read from memory */ +/* a: address to read */ +/* returns: byte value from address a */ +BYTE +decRead (ADDRESS a) +{ + BYTE res = 65; + + if (a & 0x1000) + { + a = a & 0xfff; + if (base_opts.bank != 0) + res= bank_switch_read (a); + else + res = theRom[a]; + } + else if ((a & 0x280) == 0x80) + { + res = theRam[a & 0x7f]; + } + else if (!(a & 0x80)) + { + switch (a & 0x0f) + { + /* TIA */ + case CXM0P: + res = (col_state & CXM0P_MASK) << 6; + break; + case CXM1P: + res = (col_state & CXM1P_MASK) << 4; + break; + case CXP0FB: + res = (col_state & CXP0FB_MASK) << 2; + break; + case CXP1FB: + res = (col_state & CXP1FB_MASK); + break; + case CXM0FB: + res = (col_state & CXM0FB_MASK) >> 2; + break; + case CXM1FB: + res = (col_state & CXM1FB_MASK) >> 4; + break; + case CXBLPF: + res = (col_state & CXBLPF_MASK) >> 5; + break; + case CXPPMM: + res = (col_state & CXPPMM_MASK) >> 7; + break; + case INPT0: + if (base_opts.lcon== PADDLE) + { + tiaRead[INPT0] = do_paddle (0); + } + else if (base_opts.lcon== KEYPAD) + tiaRead[INPT0] = do_keypad (0, 0); + res = tiaRead[INPT0]; + break; + case INPT1: + if (base_opts.lcon== PADDLE) + { + tiaRead[INPT1] = do_paddle (1); + } + if (base_opts.lcon== KEYPAD) + tiaRead[INPT1]=do_keypad (0, 1); + res = tiaRead[INPT1]; + break; + case INPT2: + if (base_opts.rcon == KEYPAD) + tiaRead[INPT1]=do_keypad (1, 0); + res = tiaRead[INPT2]; + break; + case INPT3: + if (base_opts.rcon == KEYPAD) + tiaRead[INPT3]=do_keypad ( 1, 1); + res = tiaRead[INPT3]; + break; + case INPT4: + switch (base_opts.lcon) + { + case KEYPAD: + tiaRead[INPT4]=do_keypad ( 0, 2); + break; + case STICK: + case PADDLE: + keytrig(); + res=tiaRead[INPT4]; + break; + } + res =tiaRead[INPT4]; + break; + case INPT5: + switch (base_opts.rcon) + { + case KEYPAD: + tiaRead[INPT5]=do_keypad (1, 2); + break; + case STICK: + case PADDLE: + keytrig(); + res=tiaRead[INPT5]; + break; + } + res = tiaRead[INPT5]; + break; + case 0x0e: + case 0x0f: + res = 0x0f; + /* RAM, mapped to page 0 and 1 */ + } + } + else + { + switch (a & 0x2ff) + { + /* Timer output */ + case INTIM: + case 0x285: + case 0x286: + case TIM1T: + case TIM8T: + case TIM64T: + case T1024T: + res = do_timer (clkcount); + /*printf("Timer is %d res is %d\n", res, timer_res); */ + break; + case SWCHA: + switch (base_opts.lcon) + { + case PADDLE: + if (base_opts.lcon == PADDLE) + { + keytrig(); + res=tiaRead[INPT4]; + } + else if (base_opts.rcon == PADDLE) + { + keytrig(); + res=tiaRead[INPT4]; + } + break; + case STICK: + keyjoy(); + res=riotRead[SWCHA]; + break; + } + res = riotRead[SWCHA]; + break; + /* Switch B is hardwired to input */ + case SWCHB: + case SWCHB + 0x100: + keycons (); + res = riotRead[SWCHB]; + break; + default: + //printf ("Unknown read 0x%x\n", a & 0x2ff); + //show (); + res = 65; + break; + } + } + return res; +} + diff --git a/MCUME_teensy/teensyvcs/Memory.h b/MCUME_teensy/teensyvcs/Memory.h new file mode 100644 index 0000000..303c932 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Memory.h @@ -0,0 +1,32 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: memory.h,v 1.5 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + +/* + Prototypes for the memory interface. + */ + +#ifndef VCSMEMORY_H +#define VCSMEMORY_H + +__inline BYTE +undecRead (ADDRESS a); + +void +decWrite ( ADDRESS a, BYTE b); + +BYTE +decRead (ADDRESS a); + +#endif diff --git a/MCUME_teensy/teensyvcs/Options.c b/MCUME_teensy/teensyvcs/Options.c new file mode 100644 index 0000000..4ee7a28 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Options.c @@ -0,0 +1,50 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: options.c,v 1.7 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* Command Line Option Parser */ +#include "config.h" +#include +#include + +/* *INDENT-OFF* */ +/* Options common to all ports of x2600 */ +struct BaseOptions { +// int rr;// unused + int tvtype; + int lcon; + int rcon; + int bank; + int magstep; + char filename[80]; + int sound; + int swap; + int realjoy; + int limit; + int mousey; + int mitshm; + int dbg_level; +} base_opts={0,1,1,1,1,"",1,1,1,1,1,0,0}; + +char *argv[64]; +int argc; + +// was written as "(int argc, char **argv)" +void parse_options(void) +{ +// base_opts.lcon = 1; +} + diff --git a/MCUME_teensy/teensyvcs/Raster.c b/MCUME_teensy/teensyvcs/Raster.c new file mode 100644 index 0000000..5012b33 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Raster.c @@ -0,0 +1,833 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: raster.c,v 1.30 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* Raster graphics procedures */ + +#include +#include "btypes.h" +//#include "systypes.h" +#include "types.h" +#include "address.h" +#include "vmachine.h" +#include "display.h" +#include "collision.h" +#include "options.h" + +/* Color lookup tables. Used to speed up rendering */ +/* The current colour lookup table */ +unsigned int *colour_lookup; + +/* Colour table */ +#define P0M0_COLOUR 0 +#define P1M1_COLOUR 1 +#define PFBL_COLOUR 2 +#define BK_COLOUR 3 + +unsigned int colour_table[4]; +extern BYTE *VBuf; + +extern int tv_field; +extern int nOptions_Interlace; +extern byte nOptions_SkipFrames; + +/* normal/alternate, not scores/scores*/ +int norm_val, scores_val; +int *colour_ptrs[2][3]; + +/* Normal priority */ +static int colour_normal[64]; +static int colour_normscoresl[64]; +static int colour_normscoresr[64]; + +/* Alternate priority */ +static int colour_alternate[64]; +static int colour_altscoresl[64]; +static int colour_altscoresr[64]; + +/* Playfield screen position */ +uint32 *pf_pos; +unsigned int line_ptr;//changed + +/* Draw playfield register PF0 */ +/* pf: playfield structure */ +/* dir: 1=normal, 0=mirrored */ +__inline void +draw_pf0 (PlayField *pf, int dir) +{ + int pfm; /* playfield mask */ + /* 1=forward */ + if (dir) + { + for (pfm = 0x10; pfm < 0x100; pfm <<= 1) + { + if (pf->pf0 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos++; + } + } + else + { + for (pfm = 0x80; pfm > 0x08; pfm >>= 1) + { + if (pf->pf0 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos++; + } + } +} + +/* Draw playfield register PF1 */ +/* pf: playfield structure */ +/* dir: 1=normal, 0=mirrored */ +__inline void +draw_pf1 (PlayField *pf, int dir) +{ + int pfm; /* playfield mask */ + /* 1=forward */ + if (dir) + { + /* do PF1 */ + for (pfm = 0x80; pfm > 0; pfm >>= 1) + { + if (pf->pf1 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } + else + { + /* do PF1 */ + for (pfm = 0x01; pfm < 0x100; pfm <<= 1) + { + if (pf->pf1 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } +} + +/* Draw playfield register PF2 */ +/* pf: playfield structure */ +/* dir: 1=normal, 0=mirrored */ +__inline void +draw_pf2 ( PlayField *pf, int dir) +{ + int pfm; /* playfield mask */ + /* 1=forward */ + if (dir) + { + /* do PF2 */ + for (pfm = 0x01; pfm < 0x100; pfm <<= 1) + { + if (pf->pf2 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } + else + { + for (pfm = 0x80; pfm > 0; pfm >>= 1) + { + if (pf->pf2 & pfm) + *(pf_pos++) = PF_MASK32; + else + pf_pos ++; + } + } +} + +/* Update from the playfield display list */ +/* num: playfield to use. Now depreciated as only pf[0] is used */ +/* nextx: the start position of the next playfield element */ +/* pfc: the number of the next playfield change structure */ +/* pf_max: the highest playfield change structure */ +__inline void +pf_update (int num, int nextx, int *pfc, int pf_max) +{ + for (; (*pfc < pf_max) && (nextx + 3 > pf_change[num][*pfc].x); (*pfc)++) + { + use_pfraster_change (&pf[num], &pf_change[num][*pfc]); + } +} + +/* Draw the playfield */ +void +draw_playfield (void) +{ + const int num = 0; /* Stick to one playfield */ + int pfc = 0; + int pf_max = pf_change_count[num]; + + pf_pos = (uint32 *)colvect; + /* First half of playfield */ + + pf_update (num, 0, &pfc, pf_max); + draw_pf0 (&pf[0], 1); + pf_update (num, 16, &pfc, pf_max); + draw_pf1 (&pf[0], 1); + pf_update (num, 48, &pfc, pf_max); + draw_pf2 (&pf[0], 1); + + pf_update (num, 80, &pfc, pf_max); + /* Second half of playfield */ + if (pf[0].ref) + { + draw_pf2 (&pf[0], 0); + pf_update (num, 112, &pfc, pf_max); + draw_pf1 (&pf[0], 0); + pf_update (num, 144, &pfc, pf_max); + draw_pf0 (&pf[0], 0); + } + else + { + draw_pf0 (&pf[0], 1); + pf_update (num, 96, &pfc, pf_max); + draw_pf1 (&pf[0], 1); + pf_update (num, 128, &pfc, pf_max); + draw_pf2 (&pf[0], 1); + } + /* Use last changes */ + for (; pfc < pf_max; pfc++) + use_pfraster_change (&pf[num], &pf_change[num][pfc]); + + pf_change_count[num] = 0; +} + +/* Draws a normal (8 clocks) sized player */ +/* p: the player to draw */ +/* x: the position to draw it */ +__inline void +pl_normal ( Player *p, int x) +{ + /* Set pointer to start of player graphic */ + BYTE *ptr = colvect + x; + BYTE mask; + BYTE gr; + + if (p->vdel_flag) + gr = p->vdel; + else + gr = p->grp; + + if (p->reflect) + { + /* Reflected: start with D0 of GRP on left */ + for (mask = 0x01; mask > 0; mask <<= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + } + else + ptr++; + } + } + else + { + /* Unreflected: start with D7 of GRP on left */ + for (mask = 0x80; mask > 0; mask >>= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + } + else + ptr++; + } + } +} + +/* Draws a double width ( 16 clocks ) player */ +/* p: the player to draw */ +/* x: the position to draw it */ +__inline void +pl_double ( Player *p, int x) +{ + /* Set pointer to start of player graphic */ + BYTE *ptr = colvect + (x); + BYTE mask; + BYTE gr; + + if (p->vdel_flag) + gr = p->vdel; + else + gr = p->grp; + + if (p->reflect) + { + for (mask = 0x01; mask > 0; mask <<= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 2; + } + } + else + { + for (mask = 0x80; mask > 0; mask >>= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 2; + } + } +} + +/* Draws a quad sized ( 32 clocks) player */ +/* p: the player to draw */ +/* x: the position to draw it */ +__inline void +pl_quad ( Player *p, int x) +{ + /* Set pointer to start of player graphic */ + BYTE *ptr = colvect + x; + BYTE mask; + BYTE gr; + + if (p->vdel_flag) + gr = p->vdel; + else + gr = p->grp; + + if (p->reflect) + { + for (mask = 0x01; mask > 0; mask <<= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 4; + } + } + else + { + for (mask = 0x80; mask > 0; mask >>= 1) + { + if (gr & mask) + { + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + *(ptr++) |= p->mask; + } + else + ptr += 4; + } + } +} + +/* Consume the player display list */ +__inline void +pl_update (int num, int nextx, int *plc, int pl_max) +{ + for (; (*plc < pl_max) && (nextx > pl_change[num][*plc].x); (*plc)++) + { + use_plraster_change (&pl[num], &pl_change[num][*plc]); + } +} + +/* Draw a player graphic */ +/* line: the vertical position of the raster */ +/* num: the number of player to draw, current 0 or 1 for P0 and P1 */ +static __inline void +pl_draw (int num) +{ + int plc = 0; + int pl_max = pl_change_count[num]; + int nextx; + + pl_update (num, pl[num].x, &plc, pl_max); + if (pl[num].x >= 0 && pl[num].x < tv_width) + { + + /*if(pl_max > plc) + use_plraster_change( &pl[num], &pl_change[num][plc++]); */ + switch (pl[num].nusize) + { + case 0: + /* One copy */ + pl_normal (&pl[num], pl[num].x); + break; + case 1: + /* Two copies close */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 8; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 2: + /* Two copies medium */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 24; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 3: + /* Three copies close */ + /* Pacman score line */ + pl_normal (&pl[num], pl[num].x); + + nextx = pl[num].x + 16; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + + nextx = pl[num].x + 32; + pl_update (num, nextx, &plc, pl_max); + + pl_normal (&pl[num], nextx); + break; + case 4: + /* Two copies wide */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 56; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 5: + /* Double sized player */ + pl_double (&pl[num], pl[num].x); + break; + case 6: + /* Three copies medium */ + pl_normal (&pl[num], pl[num].x); + nextx = pl[num].x + 8 + 24; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + nextx = pl[num].x + 8 + 56; + pl_update (num, nextx, &plc, pl_max); + pl_normal (&pl[num], nextx); + break; + case 7: + /* Quad sized player */ + pl_quad (&pl[num], pl[num].x); + break; + } + } + /* Use last changes */ + for (; plc < pl_max; plc++) + use_plraster_change (&pl[num], &pl_change[num][plc]); + pl_change_count[num] = 0; +} + + +/* Draw the ball graphic */ +/* line: the vertical position of the raster */ +static __inline void +draw_ball (void) +{ + int i; + BYTE *blptr; + BYTE e; + + if (ml[2].vdel_flag) + e = ml[2].vdel; + else + e = ml[2].enabled; + + if (e && ml[2].x >= 0) + { + blptr = colvect + (ml[2].x); + switch (tiaWrite[CTRLPF] >> 4) + { + case 3: + /* Eight clocks */ + for (i = 0; i < 8; i++) + *(blptr++) |= BL_MASK; + break; + case 2: + /* Four clocks */ + for (i = 0; i < 4; i++) + *(blptr++) |= BL_MASK; + break; + case 1: + /* Two clocks */ + for (i = 0; i < 2; i++) + *(blptr++) |= BL_MASK; + break; + case 0: + /* One clock */ + *(blptr++) |= BL_MASK; + break; + } + } +} + + +/* Draw a missile graphic */ +static __inline void +do_missile (int num, BYTE * misptr) +{ + int i; + + switch (ml[num].width) + { + case 0: + /* one clock */ + *(misptr++) |= ml[num].mask; + break; + case 1: + /* two clocks */ + for (i = 0; i < 2; i++) + *(misptr++) |= ml[num].mask; + break; + case 2: + /* four clocks */ + for (i = 0; i < 4; i++) + *(misptr++) |= ml[num].mask; + break; + case 3: + /* Eight clocks */ + for (i = 0; i < 8; i++) + *(misptr++) |= ml[num].mask; + break; + } /* switch */ +} + +/* Draw a missile taking into account the player's position. */ +/* line: the vertical position of the raster */ +/* num: 0 for M0, 1 for M1 */ +static __inline void +draw_missile (int num) +{ + BYTE *misptr; + + if (ml[num].enabled && ml[num].x >= 0) + { + switch (pl[num].nusize) + { + case 0: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + break; + case 1: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 16; + do_missile (num, misptr); + break; + case 2: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 32; + do_missile (num, misptr); + break; + case 3: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 16; + do_missile (num, misptr); + misptr = misptr + 16; + do_missile (num, misptr); + break; + case 4: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 64; + do_missile (num, misptr); + break; + case 5: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + break; + case 6: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + misptr = misptr + 32; + do_missile (num, misptr); + misptr = misptr + 32; + do_missile (num, misptr); + break; + case 7: + misptr = colvect + (ml[num].x); + do_missile (num, misptr); + break; + + } + + } /* If */ +} + + +/* Construct one tv raster line colvect */ +/* line: the vertical position of the raster */ +__inline void +tv_rasterise (int line) +{ + +// if (tv_field && nOptions_Interlace) line +=222; + line_ptr = line * vwidth; + + /* Draw the playfield first */ + draw_playfield (); + + /* Do the ball */ + draw_ball (); + + /* Do the player 1 graphics */ + draw_missile (1); + pl_draw (1); + + /* Do the player 0 graphics */ + draw_missile (0); + pl_draw (0); +} + +/* Reset the collision vector */ +__inline void +reset_vector (void) +{ + int i; + uint32 *cpos=(uint32 *)colvect; + for (i = 0; i < 40; i++) + cpos[i] = 0; +} + + +/* draw the collision vector */ +/* Quick version with no magnification */ +__inline void +draw_vector_q (void) +{ + int i; + int uct = 0; + int colind, colval; + unsigned int pad; + unsigned int tv_ptr; + tv_ptr=line_ptr; + + /* Check for scores */ + if(scores_val ==2) + { + scores_val=1; + colour_lookup=colour_ptrs[norm_val][scores_val]; + } + + /* Use starting changes */ + while (uct < unified_count && unified[uct].x < 0) + use_unified_change (&unified[uct++]); + + for (i = 0; i < 80; i++) + { + if (uct < unified_count && unified[uct].x == i) + use_unified_change (&unified[uct++]); + + if((colval=colvect[i])){ + + /* Collision detection */ + col_state|=col_table[colval]; + + colind=colour_lookup[colval]; + pad=colour_table[colind]; + } else + pad=colour_table[BK_COLOUR]; + + VBuf[tv_ptr++] = pad; + } + + /* Check for scores */ + if(scores_val ==1) + { + scores_val=2; + colour_lookup=colour_ptrs[norm_val][scores_val]; + } + for (i = 80; i < 160; i++) + { + if (uct < unified_count && unified[uct].x == i) + use_unified_change (&unified[uct++]); + + if((colval=colvect[i])){ + + /* Collision detection */ + col_state|=col_table[colval]; + + colind=colour_lookup[colval]; + pad=colour_table[colind]; + } else + pad=colour_table[BK_COLOUR]; + + VBuf[tv_ptr++] = pad; + } + + while (uct < unified_count) + use_unified_change (&unified[uct++]); + unified_count = 0; +} + +/* Used for when running in frame skipping mode */ +static __inline void +update_registers (void) +{ + int i, num; + + /* Playfield */ + for (i = 0; i < pf_change_count[0]; i++) + use_pfraster_change (&pf[0], &pf_change[0][i]); + pf_change_count[0] = 0; + + /* Player graphics */ + for (num = 0; num < 2; num++) + { + for (i = 0; i < pl_change_count[num]; i++) + use_plraster_change (&pl[num], &pl_change[num][i]); + pl_change_count[num] = 0; + } + + /* Unified */ + for (i = 0; i < unified_count; i++) + use_unified_change (&unified[i]); + unified_count = 0; +} + +/* Main raster function, will have switches for different magsteps */ +/* line: the vertical position of the raster */ +void +tv_raster (int line) +{ +// if ( ((tv_counter % nOptions_SkipFrames) != 0) || (line > theight) ) + if (line > theight) + { + update_registers (); + } + else + { + reset_vector(); + tv_rasterise (line); + draw_vector_q (); + } +} + +void +init_raster (void) +{ + int i,val; + + init_collisions(); + + /* Normal Priority */ + for (i=0; i<64; i++) + { + if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else if (i & (BL_MASK | PF_MASK)) + val = PFBL_COLOUR; + else + val = BK_COLOUR; + colour_normal[i]=val; + } + + /* Alternate Priority */ + for (i=0; i<64; i++) + { + if (i & (BL_MASK | PF_MASK)) + val = PFBL_COLOUR; + else if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_alternate[i]=val; + } + + /* Normal Scores Left */ + for (i=0; i<64; i++) + { + if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else if (i & (BL_MASK | PF_MASK)) + /* Use P1 colour */ + val = P0M0_COLOUR; + else + val = BK_COLOUR; + colour_normscoresl[i]=val; + } + + /* Normal Scores Right */ + for (i=0; i<64; i++) + { + if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else if (i & (BL_MASK | PF_MASK)) + /* Use P1 colour */ + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_normscoresr[i]=val; + } + + /* Alternate Scores Left*/ + for (i=0; i<64; i++) + { + if (i & (BL_MASK | PF_MASK)) + val = P0M0_COLOUR; + else if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_altscoresl[i]=val; + } + + /* Alternate Scores Right*/ + for (i=0; i<64; i++) + { + if (i & (BL_MASK | PF_MASK)) + val = P1M1_COLOUR; + else if (i & (PL0_MASK | ML0_MASK)) + val = P0M0_COLOUR; + else if (i & (PL1_MASK | ML1_MASK)) + val = P1M1_COLOUR; + else + val = BK_COLOUR; + colour_altscoresr[i]=val; + } + + colour_ptrs[0][0]=colour_normal; + colour_ptrs[1][0]=colour_alternate; + colour_ptrs[0][1]=colour_normscoresl; + colour_ptrs[1][1]=colour_altscoresl; + colour_ptrs[0][2]=colour_normscoresr; + colour_ptrs[1][2]=colour_altscoresr; + norm_val=0; scores_val=0; + + colour_lookup=colour_normal; +} diff --git a/MCUME_teensy/teensyvcs/Table.c b/MCUME_teensy/teensyvcs/Table.c new file mode 100644 index 0000000..d6e50d3 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Table.c @@ -0,0 +1,645 @@ + + + + + +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for Details. + + $Id: table.c,v 1.4 1996/08/26 15:04:20 ahornby Exp $ +******************************************************************************/ + +/* + * $Id: table.c,v 1.4 1996/08/26 15:04:20 ahornby Exp $ + * + * This was part of the x64 Commodore 64 emulator. + * See README for copyright notice + * + * This file contains lookup-table which is used to translate + * MOS6502 machine instructions. Machine code is used as index + * to array called lookup. Pointer to function is then fetched + * from array and function is called. + * Timing of the undocumented opcodes is based on information + * in an article in C=Lehti by Kai Lindfors and Topi Maurola. + * + * + * Written by + * Vesa-Matti Puro (vmp@lut.fi) + * Jarkko Sonninen (sonninen@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + */ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +#include "cpu.h" +#include "mnemonic.h" + + +/* + * The "mnemonic.h" file contains #defines for BRK, ORA, NOOP... which + * are character strings, i.e. #define BRK "BRK" + * #define ORA "ORA" . . . Used mainly to reduce typing... + * + * There are #defines for addressing modes i.e. IMPLIED, INDIRECT_X, + * ZERO_PAGE in "cpu.h"... These can be used to make a diassembler. + */ +#include + +PROGMEM int clength[] = +{1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 0}; + +PROGMEM struct lookup_tag lookup[] = +{ + +/**** Positive ****/ + + /* 00 */ + {BRK, IMPLIED, M_NONE, M_PC, 7, 0}, /* Pseudo Absolute */ + /* 01 */ + {ORA, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* 02 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 03 */ + {SLO, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 04 */ + {NOOP, ZERO_PAGE, M_NONE, M_NONE, 3, 0}, + /* 05 */ + {ORA, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 06 */ + {ASL, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 07 */ + {SLO, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 08 */ + {PHP, IMPLIED, M_SR, M_NONE, 3, 0}, + /* 09 */ + {ORA, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 0a */ + {ASL, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 0b */ + {ANC, IMMEDIATE, M_ACIM, M_ACNC, 2, 0}, + + /* 0c */ + {NOOP, ABSOLUTE, M_NONE, M_NONE, 4, 0}, + /* 0d */ + {ORA, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 0e */ + {ASL, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 0f */ + {SLO, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 10 */ + {BPL, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 11 */ + {ORA, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 12 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 13 */ + {SLO, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 14 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 15 */ + {ORA, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 16 */ + {ASL, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 17 */ + {SLO, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 18 */ + {CLC, IMPLIED, M_NONE, M_FC, 2, 0}, + /* 19 */ + {ORA, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 1a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 1b */ + {SLO, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 1c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 1d */ + {ORA, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 1e */ + {ASL, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 1f */ + {SLO, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* 20 */ + {JSR, ABSOLUTE, M_ADDR, M_PC, 6, 0}, + /* 21 */ + {AND, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect ,X) */ + /* 22 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 23 */ + {RLA, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 24 */ + {BIT, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* 25 */ + {AND, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 26 */ + {ROL, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 27 */ + {RLA, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 28 */ + {PLP, IMPLIED, M_NONE, M_SR, 4, 0}, + /* 29 */ + {AND, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 2a */ + {ROL, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 2b */ + {ANC, IMMEDIATE, M_ACIM, M_ACNC, 2, 0}, + + /* 2c */ + {BIT, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* 2d */ + {AND, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 2e */ + {ROL, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 2f */ + {RLA, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 30 */ + {BMI, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 31 */ + {AND, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 32 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 33 */ + {RLA, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 34 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 35 */ + {AND, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 36 */ + {ROL, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 37 */ + {RLA, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 38 */ + {SEC, IMPLIED, M_NONE, M_FC, 2, 0}, + /* 39 */ + {AND, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 3a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 3b */ + {RLA, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 3c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 3d */ + {AND, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 3e */ + {ROL, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 3f */ + {RLA, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* 40 */ + {RTI, IMPLIED, M_NONE, M_PC, 6, 0}, + /* 41 */ + {EOR, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* 42 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 43 */ + {SRE, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 44 */ + {NOOP, ZERO_PAGE, M_NONE, M_NONE, 3, 0}, + /* 45 */ + {EOR, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 46 */ + {LSR, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 47 */ + {SRE, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 48 */ + {PHA, IMPLIED, M_AC, M_NONE, 3, 0}, + /* 49 */ + {EOR, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 4a */ + {LSR, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 4b */ + {ASR, IMMEDIATE, M_ACIM, M_AC, 2, 0}, /* (AC & IMM) >>1 */ + + /* 4c */ + {JMP, ABSOLUTE, M_ADDR, M_PC, 3, 0}, /* Absolute */ + /* 4d */ + {EOR, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 4e */ + {LSR, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 4f */ + {SRE, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 50 */ + {BVC, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 51 */ + {EOR, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 52 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 53 */ + {SRE, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 54 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 55 */ + {EOR, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 56 */ + {LSR, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 57 */ + {SRE, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 58 */ + {CLI, IMPLIED, M_NONE, M_FI, 2, 0}, + /* 59 */ + {EOR, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 5a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 5b */ + {SRE, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 5c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 5d */ + {EOR, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 5e */ + {LSR, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 5f */ + {SRE, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* 60 */ + {RTS, IMPLIED, M_NONE, M_PC, 6, 0}, + /* 61 */ + {ADC, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* 62 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* 63 */ + {RRA, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* 64 */ + {NOOP, ZERO_PAGE, M_NONE, M_NONE, 3, 0}, + /* 65 */ + {ADC, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* 66 */ + {ROR, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* 67 */ + {RRA, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* 68 */ + {PLA, IMPLIED, M_NONE, M_AC, 4, 0}, + /* 69 */ + {ADC, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* 6a */ + {ROR, ACCUMULATOR, M_AC, M_AC, 2, 0}, /* Accumulator */ + /* 6b */ + {ARR, IMMEDIATE, M_ACIM, M_AC, 2, 0}, /* ARR isn't typo */ + + /* 6c */ + {JMP, ABS_INDIRECT, M_AIND, M_PC, 5, 0}, /* Indirect */ + /* 6d */ + {ADC, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* 6e */ + {ROR, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* 6f */ + {RRA, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* 70 */ + {BVS, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 71 */ + {ADC, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* 72 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT relative? */ + /* 73 */ + {RRA, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* 74 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* 75 */ + {ADC, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* 76 */ + {ROR, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* 77 */ + {RRA, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* 78 */ + {SEI, IMPLIED, M_NONE, M_FI, 2, 0}, + /* 79 */ + {ADC, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* 7a */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* 7b */ + {RRA, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* 7c */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* 7d */ + {ADC, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* 7e */ + {ROR, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* 7f */ + {RRA, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + +/**** Negative ****/ + + /* 80 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* 81 */ + {STA, INDIRECT_X, M_AC, M_INDX, 6, 0}, /* (Indirect,X) */ + /* 82 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* 83 */ + {SAX, INDIRECT_X, M_ANXR, M_INDX, 6, 0}, + + /* 84 */ + {STY, ZERO_PAGE, M_YR, M_ZERO, 3, 0}, /* Zeropage */ + /* 85 */ + {STA, ZERO_PAGE, M_AC, M_ZERO, 3, 0}, /* Zeropage */ + /* 86 */ + {STX, ZERO_PAGE, M_XR, M_ZERO, 3, 0}, /* Zeropage */ + /* 87 */ + {SAX, ZERO_PAGE, M_ANXR, M_ZERO, 3, 0}, + + /* 88 */ + {DEY, IMPLIED, M_YR, M_YR, 2, 0}, + /* 89 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* 8a */ + {TXA, IMPLIED, M_XR, M_AC, 2, 0}, +/**** very abnormal: usually AC = AC | #$EE & XR & #$oper ****/ + /* 8b */ + {ANE, IMMEDIATE, M_AXIM, M_AC, 2, 0}, + + /* 8c */ + {STY, ABSOLUTE, M_YR, M_ABS, 4, 0}, /* Absolute */ + /* 8d */ + {STA, ABSOLUTE, M_AC, M_ABS, 4, 0}, /* Absolute */ + /* 8e */ + {STX, ABSOLUTE, M_XR, M_ABS, 4, 0}, /* Absolute */ + /* 8f */ + {SAX, ABSOLUTE, M_ANXR, M_ABS, 4, 0}, + + /* 90 */ + {BCC, RELATIVE, M_REL, M_NONE, 2, 0}, + /* 91 */ + {STA, INDIRECT_Y, M_AC, M_INDY, 6, 0}, /* (Indirect),Y */ + /* 92 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT relative? */ + /* 93 */ + {SHA, INDIRECT_Y, M_ANXR, M_STH0, 6, 0}, + + /* 94 */ + {STY, ZERO_PAGE_X, M_YR, M_ZERX, 4, 0}, /* Zeropage,X */ + /* 95 */ + {STA, ZERO_PAGE_X, M_AC, M_ZERX, 4, 0}, /* Zeropage,X */ + /* 96 */ + {STX, ZERO_PAGE_Y, M_XR, M_ZERY, 4, 0}, /* Zeropage,Y */ + /* 97 */ + {SAX, ZERO_PAGE_Y, M_ANXR, M_ZERY, 4, 0}, + + /* 98 */ + {TYA, IMPLIED, M_YR, M_AC, 2, 0}, + /* 99 */ + {STA, ABSOLUTE_Y, M_AC, M_ABSY, 5, 0}, /* Absolute,Y */ + /* 9a */ + {TXS, IMPLIED, M_XR, M_SP, 2, 0}, +/*** This is very mysterious command ... */ + /* 9b */ + {SHS, ABSOLUTE_Y, M_ANXR, M_STH3, 5, 0}, + + /* 9c */ + {SHY, ABSOLUTE_X, M_YR, M_STH2, 5, 0}, + /* 9d */ + {STA, ABSOLUTE_X, M_AC, M_ABSX, 5, 0}, /* Absolute,X */ + /* 9e */ + {SHX, ABSOLUTE_Y, M_XR, M_STH1, 5, 0}, + /* 9f */ + {SHA, ABSOLUTE_Y, M_ANXR, M_STH1, 5, 0}, + + /* a0 */ + {LDY, IMMEDIATE, M_IMM, M_YR, 2, 0}, /* Immediate */ + /* a1 */ + {LDA, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (indirect,X) */ + /* a2 */ + {LDX, IMMEDIATE, M_IMM, M_XR, 2, 0}, /* Immediate */ + /* a3 */ + {LAX, INDIRECT_X, M_INDX, M_ACXR, 6, 0}, /* (indirect,X) */ + + /* a4 */ + {LDY, ZERO_PAGE, M_ZERO, M_YR, 3, 0}, /* Zeropage */ + /* a5 */ + {LDA, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* a6 */ + {LDX, ZERO_PAGE, M_ZERO, M_XR, 3, 0}, /* Zeropage */ + /* a7 */ + {LAX, ZERO_PAGE, M_ZERO, M_ACXR, 3, 0}, + + /* a8 */ + {TAY, IMPLIED, M_AC, M_YR, 2, 0}, + /* a9 */ + {LDA, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* aa */ + {TAX, IMPLIED, M_AC, M_XR, 2, 0}, + /* ab */ + {LXA, IMMEDIATE, M_ACIM, M_ACXR, 2, 0}, /* LXA isn't a typo */ + + /* ac */ + {LDY, ABSOLUTE, M_ABS, M_YR, 4, 0}, /* Absolute */ + /* ad */ + {LDA, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* ae */ + {LDX, ABSOLUTE, M_ABS, M_XR, 4, 0}, /* Absolute */ + /* af */ + {LAX, ABSOLUTE, M_ABS, M_ACXR, 4, 0}, + + /* b0 */ + {BCS, RELATIVE, M_REL, M_NONE, 2, 0}, + /* b1 */ + {LDA, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (indirect),Y */ + /* b2 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* b3 */ + {LAX, INDIRECT_Y, M_INDY, M_ACXR, 5, 1}, + + /* b4 */ + {LDY, ZERO_PAGE_X, M_ZERX, M_YR, 4, 0}, /* Zeropage,X */ + /* b5 */ + {LDA, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* b6 */ + {LDX, ZERO_PAGE_Y, M_ZERY, M_XR, 4, 0}, /* Zeropage,Y */ + /* b7 */ + {LAX, ZERO_PAGE_Y, M_ZERY, M_ACXR, 4, 0}, + + /* b8 */ + {CLV, IMPLIED, M_NONE, M_FV, 2, 0}, + /* b9 */ + {LDA, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* ba */ + {TSX, IMPLIED, M_SP, M_XR, 2, 0}, + /* bb */ + {LAS, ABSOLUTE_Y, M_SABY, M_ACXS, 4, 1}, + + /* bc */ + {LDY, ABSOLUTE_X, M_ABSX, M_YR, 4, 1}, /* Absolute,X */ + /* bd */ + {LDA, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* be */ + {LDX, ABSOLUTE_Y, M_ABSY, M_XR, 4, 1}, /* Absolute,Y */ + /* bf */ + {LAX, ABSOLUTE_Y, M_ABSY, M_ACXR, 4, 1}, + + /* c0 */ + {CPY, IMMEDIATE, M_IMM, M_NONE, 2, 0}, /* Immediate */ + /* c1 */ + {CMP, INDIRECT_X, M_INDX, M_NONE, 6, 0}, /* (Indirect,X) */ + /* c2 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, /* occasional TILT */ + /* c3 */ + {DCP, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* c4 */ + {CPY, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* c5 */ + {CMP, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* c6 */ + {DEC, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* c7 */ + {DCP, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* c8 */ + {INY, IMPLIED, M_YR, M_YR, 2, 0}, + /* c9 */ + {CMP, IMMEDIATE, M_IMM, M_NONE, 2, 0}, /* Immediate */ + /* ca */ + {DEX, IMPLIED, M_XR, M_XR, 2, 0}, + /* cb */ + {SBX, IMMEDIATE, M_IMM, M_XR, 2, 0}, + + /* cc */ + {CPY, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* cd */ + {CMP, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* ce */ + {DEC, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* cf */ + {DCP, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* d0 */ + {BNE, RELATIVE, M_REL, M_NONE, 2, 0}, + /* d1 */ + {CMP, INDIRECT_Y, M_INDY, M_NONE, 5, 1}, /* (Indirect),Y */ + /* d2 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* d3 */ + {DCP, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* d4 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* d5 */ + {CMP, ZERO_PAGE_X, M_ZERX, M_NONE, 4, 0}, /* Zeropage,X */ + /* d6 */ + {DEC, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* d7 */ + {DCP, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* d8 */ + {CLD, IMPLIED, M_NONE, M_FD, 2, 0}, + /* d9 */ + {CMP, ABSOLUTE_Y, M_ABSY, M_NONE, 4, 1}, /* Absolute,Y */ + /* da */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* db */ + {DCP, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* dc */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* dd */ + {CMP, ABSOLUTE_X, M_ABSX, M_NONE, 4, 1}, /* Absolute,X */ + /* de */ + {DEC, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* df */ + {DCP, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, + + /* e0 */ + {CPX, IMMEDIATE, M_IMM, M_NONE, 2, 0}, /* Immediate */ + /* e1 */ + {SBC, INDIRECT_X, M_INDX, M_AC, 6, 0}, /* (Indirect,X) */ + /* e2 */ + {NOOP, IMMEDIATE, M_NONE, M_NONE, 2, 0}, + /* e3 */ + {ISB, INDIRECT_X, M_INDX, M_INDX, 8, 0}, + + /* e4 */ + {CPX, ZERO_PAGE, M_ZERO, M_NONE, 3, 0}, /* Zeropage */ + /* e5 */ + {SBC, ZERO_PAGE, M_ZERO, M_AC, 3, 0}, /* Zeropage */ + /* e6 */ + {INC, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, /* Zeropage */ + /* e7 */ + {ISB, ZERO_PAGE, M_ZERO, M_ZERO, 5, 0}, + + /* e8 */ + {INX, IMPLIED, M_XR, M_XR, 2, 0}, + /* e9 */ + {SBC, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* Immediate */ + /* ea */ + {NOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* eb */ + {USBC, IMMEDIATE, M_IMM, M_AC, 2, 0}, /* same as e9 */ + + /* ec */ + {CPX, ABSOLUTE, M_ABS, M_NONE, 4, 0}, /* Absolute */ + /* ed */ + {SBC, ABSOLUTE, M_ABS, M_AC, 4, 0}, /* Absolute */ + /* ee */ + {INC, ABSOLUTE, M_ABS, M_ABS, 6, 0}, /* Absolute */ + /* ef */ + {ISB, ABSOLUTE, M_ABS, M_ABS, 6, 0}, + + /* f0 */ + {BEQ, RELATIVE, M_REL, M_NONE, 2, 0}, + /* f1 */ + {SBC, INDIRECT_Y, M_INDY, M_AC, 5, 1}, /* (Indirect),Y */ + /* f2 */ + {JAM, IMPLIED, M_NONE, M_NONE, 0, 0}, /* TILT */ + /* f3 */ + {ISB, INDIRECT_Y, M_INDY, M_INDY, 8, 0}, + + /* f4 */ + {NOOP, ZERO_PAGE_X, M_NONE, M_NONE, 4, 0}, + /* f5 */ + {SBC, ZERO_PAGE_X, M_ZERX, M_AC, 4, 0}, /* Zeropage,X */ + /* f6 */ + {INC, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, /* Zeropage,X */ + /* f7 */ + {ISB, ZERO_PAGE_X, M_ZERX, M_ZERX, 6, 0}, + + /* f8 */ + {SED, IMPLIED, M_NONE, M_FD, 2, 0}, + /* f9 */ + {SBC, ABSOLUTE_Y, M_ABSY, M_AC, 4, 1}, /* Absolute,Y */ + /* fa */ + {NOOP, IMPLIED, M_NONE, M_NONE, 2, 0}, + /* fb */ + {ISB, ABSOLUTE_Y, M_ABSY, M_ABSY, 7, 0}, + + /* fc */ + {NOOP, ABSOLUTE_X, M_NONE, M_NONE, 4, 1}, + /* fd */ + {SBC, ABSOLUTE_X, M_ABSX, M_AC, 4, 1}, /* Absolute,X */ + /* fe */ + {INC, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0}, /* Absolute,X */ + /* ff */ + {ISB, ABSOLUTE_X, M_ABSX, M_ABSX, 7, 0} +}; diff --git a/MCUME_teensy/teensyvcs/Tiasound.c b/MCUME_teensy/teensyvcs/Tiasound.c new file mode 100644 index 0000000..1d87b6c --- /dev/null +++ b/MCUME_teensy/teensyvcs/Tiasound.c @@ -0,0 +1,616 @@ +/*****************************************************************************/ +/* */ +/* Module: TIA Chip Sound Simulator */ +/* Purpose: To emulate the sound generation hardware of the Atari TIA chip. */ +/* Author: Ron Fries */ +/* */ +/* Revision History: */ +/* 10-Sep-96 - V1.0 - Initial Release */ +/* 14-Jan-97 - V1.1 - Cleaned up sound output by eliminating counter */ +/* reset. */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* TiaSound is Copyright(c) 1996 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ +#include "Atari2600EmulatorGlobals.h" + +#include "emuapi.h" + + +/* define some data types to keep it platform independent */ +#define int8 char +#define int16 short +#define int32 int + +#define uint8 unsigned int8 +#define uint16 unsigned int16 +#define uint32 unsigned int32 + + +/* CONSTANT DEFINITIONS */ + +/* definitions for AUDCx (15, 16) */ +#define SET_TO_1 0x00 /* 0000 */ +#define POLY4 0x01 /* 0001 */ +#define DIV31_POLY4 0x02 /* 0010 */ +#define POLY5_POLY4 0x03 /* 0011 */ +#define PURE1 0x04 /* 0100 */ +#define PURE2 0x05 /* 0101 */ +#define DIV31_PURE 0x06 /* 0110 */ +#define POLY5_2 0x07 /* 0111 */ +#define POLY9 0x08 /* 1000 */ +#define POLY5 0x09 /* 1001 */ +#define DIV31_POLY5 0x0a /* 1010 */ +#define POLY5_POLY5 0x0b /* 1011 */ +#define DIV3_PURE 0x0c /* 1100 */ +#define DIV3_PURE2 0x0d /* 1101 */ +#define DIV93_PURE 0x0e /* 1110 */ +#define DIV3_POLY5 0x0f /* 1111 */ + +#define DIV3_MASK 0x0c + +#define AUDC0 0x15 +#define AUDC1 0x16 +#define AUDF0 0x17 +#define AUDF1 0x18 +#define AUDV0 0x19 +#define AUDV1 0x1a + +/* the size (in entries) of the 4 polynomial tables */ +#define POLY4_SIZE 0x000f +#define POLY5_SIZE 0x001f +#define POLY9_SIZE 0x01ff + +/* channel definitions */ +#define CHAN1 0 +#define CHAN2 1 + +//#define FALSE 0 +//#define TRUE 1 + + +/* LOCAL GLOBAL VARIABLE DEFINITIONS */ + +/* structures to hold the 6 tia sound control bytes */ +uint8 AUDC[2]; /* AUDCx (15, 16) */ +uint8 AUDF[2]; /* AUDFx (17, 18) */ +uint8 AUDV[2]; /* AUDVx (19, 1A) */ + +static uint8 Outvol[2]; /* last output volume for each channel */ + + +/* Initialze the bit patterns for the polynomials. */ + +/* The 4bit and 5bit patterns are the identical ones used in the tia chip. */ +/* Though the patterns could be packed with 8 bits per byte, using only a */ +/* single bit per byte keeps the math simple, which is important for */ +/* efficient processing. */ + +static uint8 Bit4[POLY4_SIZE] = + { 1,1,0,1,1,1,0,0,0,0,1,0,1,0,0 }; + +static uint8 Bit5[POLY5_SIZE] = + { 0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1 }; + +/* I've treated the 'Div by 31' counter as another polynomial because of */ +/* the way it operates. It does not have a 50% duty cycle, but instead */ +/* has a 13:18 ratio (of course, 13+18 = 31). This could also be */ +/* implemented by using counters. */ + +static uint8 Div31[POLY5_SIZE] = + { 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 }; + +/* Rather than have a table with 511 entries, I use a random number */ +/* generator. */ + +static uint8 Bit9[POLY9_SIZE]; + +static uint8 P4[2]; /* Position pointer for the 4-bit POLY array */ +static uint8 P5[2]; /* Position pointer for the 5-bit POLY array */ +static uint16 P9[2]; /* Position pointer for the 9-bit POLY array */ + +static uint8 Div_n_cnt[2]; /* Divide by n counter. one for each channel */ +static uint8 Div_n_max[2]; /* Divide by n maximum, one for each channel */ + + +/* In my routines, I treat the sample output as another divide by N counter. */ +/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */ +/* which has 8 binary digits to the right of the decimal point. */ + +static uint16 Samp_n_max; /* Sample max, multiplied by 256 */ +static uint16 Samp_n_cnt; /* Sample cnt. */ + +extern unsigned char *sounddata; +/*****************************************************************************/ +/* Module: Tia_sound_init() */ +/* Purpose: to handle the power-up initialization functions */ +/* these functions should only be executed on a cold-restart */ +/* */ +/* Author: Ron Fries */ +/* Date: September 10, 1996 */ +/* */ +/* Inputs: sample_freq - the value for the '30 Khz' Tia audio clock */ +/* playback_freq - the playback frequency in samples per second */ +/* */ +/* Outputs: Adjusts local globals - no return value */ +/* */ +/*****************************************************************************/ + +void Tia_sound_init (uint16 sample_freq, uint16 playback_freq) +{ + uint8 chan; + int16 n; + + /* fill the 9bit polynomial with random bits */ + for (n=0; n 1) + { + /* decrement and loop */ + Div_n_cnt[chan]--; + } + /* otherwise if we've reached the bottom */ + else if (Div_n_cnt[chan] == 1) + { + /* reset the counter */ + Div_n_cnt[chan] = Div_n_max[chan]; + + /* the P5 counter has multiple uses, so we inc it here */ + P5[chan]++; + if (P5[chan] == POLY5_SIZE) + P5[chan] = 0; + + /* check clock modifier for clock tick */ + + /* if we're using pure tones OR + we're using DIV31 and the DIV31 bit is set OR + we're using POLY5 and the POLY5 bit is set */ + if (((AUDC[chan] & 0x02) == 0) || + (((AUDC[chan] & 0x01) == 0) && Div31[P5[chan]]) || + (((AUDC[chan] & 0x01) == 1) && Bit5[P5[chan]])) + { + if (AUDC[chan] & 0x04) /* pure modified clock selected */ + { + if (Outvol[chan]) /* if the output was set */ + Outvol[chan] = 0; /* turn it off */ + else + Outvol[chan] = AUDV[chan]; /* else turn it on */ + } + else if (AUDC[chan] & 0x08) /* check for p5/p9 */ + { + if (AUDC[chan] == POLY9) /* check for poly9 */ + { + /* inc the poly9 counter */ + P9[chan]++; + if (P9[chan] == POLY9_SIZE) + P9[chan] = 0; + + if (Bit9[P9[chan]]) /* if poly9 bit is set */ + Outvol[chan] = AUDV[chan]; + else + Outvol[chan] = 0; + } + else /* must be poly5 */ + { + if (Bit5[P5[chan]]) + Outvol[chan] = AUDV[chan]; + else + Outvol[chan] = 0; + } + } + else /* poly4 is the only remaining option */ + { + /* inc the poly4 counter */ + P4[chan]++; + if (P4[chan] == POLY4_SIZE) + P4[chan] = 0; + + if (Bit4[P4[chan]]) + Outvol[chan] = AUDV[chan]; + else + Outvol[chan] = 0; + } + } + } + } + + /* decrement the sample counter - value is 256 since the lower + byte contains the fractional part */ + Samp_n_cnt -= 256; + + /* if the count down has reached zero */ + if (Samp_n_cnt < 256) + { + /* adjust the sample counter */ + Samp_n_cnt += Samp_n_max; + + /* calculate the latest output value and place in buffer */ + *(buffer++) = Outvol[0] + Outvol[1]; + /* and indicate one less byte to process */ + n--; + } + } +} + + +/*****************************************************************************/ +/* Module: Tia_process() */ +/* Purpose: To fill the output buffer with the sound output based on the */ +/* tia chip parameters. This routine has been optimized. */ +/* */ +/* Author: Ron Fries */ +/* Date: September 10, 1996 */ +/* */ +/* Inputs: *buffer - pointer to the buffer where the audio output will */ +/* be placed */ +/* n - size of the playback buffer */ +/* */ +/* Outputs: the buffer will be filled with n bytes of audio - no return val */ +/* */ +/*****************************************************************************/ + +void Tia_process_2 ( unsigned short *buffer, uint16 n) +{ + uint8 audc0,audv0,audc1,audv1; + uint8 div_n_cnt0,div_n_cnt1; + uint8 p5_0, p5_1,outvol_0,outvol_1; + + audc0 = AUDC[0]; + audv0 = AUDV[0]; + audc1 = AUDC[1]; + audv1 = AUDV[1]; + + /* make temporary local copy */ + p5_0 = P5[0]; + p5_1 = P5[1]; + outvol_0 = Outvol[0]; + outvol_1 = Outvol[1]; + div_n_cnt0 = Div_n_cnt[0]; + div_n_cnt1 = Div_n_cnt[1]; + + /* loop until the buffer is filled */ + while (n) + { + /* Process channel 0 */ + if (div_n_cnt0 > 1) + { + div_n_cnt0--; + } + else if (div_n_cnt0 == 1) + { + div_n_cnt0 = Div_n_max[0]; + + /* the P5 counter has multiple uses, so we inc it here */ + p5_0++; + if (p5_0 == POLY5_SIZE) + p5_0 = 0; + + /* check clock modifier for clock tick */ + if (((audc0 & 0x02) == 0) || + (((audc0 & 0x01) == 0) && Div31[p5_0]) || + (((audc0 & 0x01) == 1) && Bit5[p5_0])) + { + if (audc0 & 0x04) /* pure modified clock selected */ + { + if (outvol_0) /* if the output was set */ + outvol_0 = 0; /* turn it off */ + else + outvol_0 = audv0; /* else turn it on */ + } + else if (audc0 & 0x08) /* check for p5/p9 */ + { + if (audc0 == POLY9) /* check for poly9 */ + { + /* inc the poly9 counter */ + P9[0]++; + if (P9[0] == POLY9_SIZE) + P9[0] = 0; + + if (Bit9[P9[0]]) + outvol_0 = audv0; + else + outvol_0 = 0; + } + else /* must be poly5 */ + { + if (Bit5[p5_0]) + outvol_0 = audv0; + else + outvol_0 = 0; + } + } + else /* poly4 is the only remaining option */ + { + /* inc the poly4 counter */ + P4[0]++; + if (P4[0] == POLY4_SIZE) + P4[0] = 0; + + if (Bit4[P4[0]]) + outvol_0 = audv0; + else + outvol_0 = 0; + } + } + } + + + /* Process channel 1 */ + if (div_n_cnt1 > 1) + { + div_n_cnt1--; + } + else if (div_n_cnt1 == 1) + { + div_n_cnt1 = Div_n_max[1]; + + /* the P5 counter has multiple uses, so we inc it here */ + p5_1++; + if (p5_1 == POLY5_SIZE) + p5_1 = 0; + + /* check clock modifier for clock tick */ + if (((audc1 & 0x02) == 0) || + (((audc1 & 0x01) == 0) && Div31[p5_1]) || + (((audc1 & 0x01) == 1) && Bit5[p5_1])) + { + if (audc1 & 0x04) /* pure modified clock selected */ + { + if (outvol_1) /* if the output was set */ + outvol_1 = 0; /* turn it off */ + else + outvol_1 = audv1; /* else turn it on */ + } + else if (audc1 & 0x08) /* check for p5/p9 */ + { + if (audc1 == POLY9) /* check for poly9 */ + { + /* inc the poly9 counter */ + P9[1]++; + if (P9[1] == POLY9_SIZE) + P9[1] = 0; + + if (Bit9[P9[1]]) + outvol_1 = audv1; + else + outvol_1 = 0; + } + else /* must be poly5 */ + { + if (Bit5[p5_1]) + outvol_1 = audv1; + else + outvol_1 = 0; + } + } + else /* poly4 is the only remaining option */ + { + /* inc the poly4 counter */ + P4[1]++; + if (P4[1] == POLY4_SIZE) + P4[1] = 0; + + if (Bit4[P4[1]]) + outvol_1 = audv1; + else + outvol_1 = 0; + } + } + } + + /* decrement the sample counter - value is 256 since the lower + byte contains the fractional part */ + Samp_n_cnt -= 256; + + /* if the count down has reached zero */ + if (Samp_n_cnt < 256) + { + /* adjust the sample counter */ + Samp_n_cnt += Samp_n_max; + + /* calculate the latest output value and place in buffer */ + *(buffer++) = (outvol_0 + outvol_1)*256; + + /* and indicate one less byte to process */ + n--; + } + } + + /* save for next round */ + P5[0] = p5_0; + P5[1] = p5_1; + Outvol[0] = outvol_0; + Outvol[1] = outvol_1; + Div_n_cnt[0] = div_n_cnt0; + Div_n_cnt[1] = div_n_cnt1; + +} + + + diff --git a/MCUME_teensy/teensyvcs/Vcsemu.c b/MCUME_teensy/teensyvcs/Vcsemu.c new file mode 100644 index 0000000..a70bbca --- /dev/null +++ b/MCUME_teensy/teensyvcs/Vcsemu.c @@ -0,0 +1,72 @@ +#include "options.h" +#include "vcsemu.h" +#include "types.h" +#include "vmachine.h" + +#include "emuapi.h" + +/**************************************************************************** +* Local macros / typedefs +****************************************************************************/ + +/**************************************************************************** +* Global data +****************************************************************************/ + +/**************************************************************************** +* Imported procedures +****************************************************************************/ +extern void mainloop(void); + +/**************************************************************************** +* Local procedures +****************************************************************************/ + +/**************************************************************************** +* Exported procedures +****************************************************************************/ +void vcs_Init(void) +{ + init_machine(); + init_hardware(); + tv_on(); +} + + +void vcs_Start(char * filename) +{ + int size = emu_LoadFile(filename, (char *)theCart, 16384); + + + if (size > 16384) + size = 16384; + + rom_size = size; + if (size == 2048) + { + memcpy (&theCart[2048], &theCart[0], 2048); + rom_size = 4096; + } + else if (size < 2048) + { + theCart[0x0ffc] = 0x00; + theCart[0x0ffd] = 0xf0; + rom_size = 4096; + } + + init_hardware(); + init_banking(); +} + + +void vcs_Step(void) +{ + //emu_printf("s"); + mainloop(); +} + + + + + + diff --git a/MCUME_teensy/teensyvcs/Vcsemu.h b/MCUME_teensy/teensyvcs/Vcsemu.h new file mode 100644 index 0000000..5811f77 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Vcsemu.h @@ -0,0 +1,9 @@ +extern void vcs_Init(void); +extern void vcs_Start(char * filename); +extern void vcs_Stop(void); +extern void vcs_Step(void); + + + + + diff --git a/MCUME_teensy/teensyvcs/Vmachine.c b/MCUME_teensy/teensyvcs/Vmachine.c new file mode 100644 index 0000000..09aa293 --- /dev/null +++ b/MCUME_teensy/teensyvcs/Vmachine.c @@ -0,0 +1,731 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: vmachine.c,v 2.22 1997/11/22 14:27:47 ahornby Exp $ +******************************************************************************/ +//This file was modified from its original version for use in PocketVCS +// by Stuart Russell + +/* + The virtual machine. Contains the RIOT timer code, and hardware + initialisation. + */ + +#include +#include "types.h" +#include "address.h" +#include "options.h" +#include "display.h" +#include "raster.h" +#include "cpu.h" +#include "collision.h" +#include "sound.h" +#include "vmachine.h" +#include "tiasound.h" + +#include "emuapi.h" + +#define snd 1 + +extern void BlitScreen(void); +extern int nOptions_SoundBufSize; +extern int nOptions_SoundOn; +int Touchpadx=0; +int Touchpady=0; +//extern int Touchpadx; +//extern int Touchpady; +extern int nOptions_Landscape; +extern int nOptions_SkipFrames; + + + +/* The Rom define might need altering for paged carts */ +/* Enough for 16k carts */ +int rom_size; + +/* Used as a simple file buffer to store the data */ +// JMH +//BYTE theCart[16384]; +//BYTE theCart[4096]; +BYTE * theCart=0; + +/* Scratch area for those banking types that require memcpy() */ +//BYTE cartScratch[4096]; +BYTE * cartScratch=0; +/* Area for those carts containing RAM */ +//BYTE cartRam[1024]; +BYTE * cartRam=0; + +/* Pointer to start of ROM data */ +BYTE *theRom; + +BYTE theRam[128]; +BYTE tiaRead[0x0e]; +BYTE tiaWrite[0x2d]; +BYTE keypad[2][4]; + +/* These don't strictly need so much space */ +BYTE riotRead[0x298]; +BYTE riotWrite[0x298]; + +/* + Hardware addresses not programmer accessible + */ + +/* Set if whole emulator is reset */ +int reset_flag = 0; + +/* The timer resolution, can be 1,8,64,1024 */ +int timer_res = 32; +int timer_count = 0; +int timer_clks = 0; +extern CLOCK clk; +extern int beamadj; + +/* Electron beam position */ +int ebeamx, ebeamy, sbeamx; + +/* The state of the electron beam */ +#define VSYNCSTATE 1 +#define VBLANKSTATE 2 +#define HSYNCSTATE 4 +#define DRAWSTATE 8 +#define OVERSTATE 16 +int vbeam_state; /* 1 2 8 or 16 */ +int hbeam_state; /* 4 8 or 16 */ + +/* The tv size, varies with PAL/NTSC */ +int tv_width, tv_height, tv_vsync, tv_vblank, tv_overscan, tv_frame, tv_hertz, + tv_hsync; + + +PlayField pf[2]; + +Paddle paddle[4]; + +Player pl[2]; + +Missile ml[3]; + + + +#define MAXLIST 80 +/* The various display lists */ +struct RasterChange pl_change[2][MAXLIST], pf_change[1][MAXLIST], unified[MAXLIST]; + +/* The display list counters */ +int pl_change_count[2], pf_change_count[1], unified_count; + + +/*************************************************************************** + Let the functions begin! +****************************************************************************/ +void +init_machine (void) +{ + if (theCart == 0) theCart = (BYTE *)emu_Malloc(16384); + if (cartScratch == 0) cartScratch = (BYTE *)emu_Malloc(4096); + if (cartRam == 0) cartRam = (BYTE *)emu_Malloc(1024); +} + +/* Device independent screen initialisations */ +void +init_screen (void) +{ + + /* Set the electron beam to the top left */ + ebeamx = -tv_hsync; + ebeamy = 0; + sbeamx = 0; + vbeam_state = VSYNCSTATE; + hbeam_state = OVERSTATE; + + tv_vsync = 3; + tv_hsync = 68; + switch (base_opts.tvtype) + { + case NTSC: + tv_width = 160; + tv_height = 192; + tv_vblank = 40; + tv_overscan = 30; + tv_frame = 262; + tv_hertz = 60; + break; + case PAL: + case SECAM: + tv_width = 160; + tv_height = 228; + tv_vblank = 48; + tv_overscan = 36; + tv_frame = 312; + tv_hertz = 50; + break; + } + +} + +/* Displays the tv screen */ +void tv_display (void) +{ + /* Only display if the frame is a valid one. */ + //if ( (tv_counter % nOptions_SkipFrames) == 0) + //{ + emu_DrawScreen(VBuf, tv_width, tv_height, tv_width); + emu_DrawVsync(); + //} + //tv_counter++; +} + +/* Initialise the RIOT (also known as PIA) */ +void +init_riot (void) +{ + int i; + + /* Reset the arrays */ + for(i=0; i< 0x298;i++) + { + riotRead[i]=0; + riotWrite[i]=0; + } + + /* Wipe the RAM */ + for (i = 0; i < 0x80; i++) + theRam[i] = 0; + + /* Set the timer to zero */ + riotRead[INTIM] = 0; + + /* Set the joysticks and switches to input */ + riotWrite[SWACNT] = 0; + riotWrite[SWBCNT] = 0; + + /* Centre the joysticks */ + riotRead[SWCHA] = 0xff; + riotRead[SWCHB] = 0x0b; + + /* Set the counter resolution */ + timer_res = 32; + timer_count = 0; + timer_clks = 0; +} + +/* Initialise the television interface adaptor (TIA) */ +void +init_tia (void) +{ + int i; + for(i=0; i< 0x2d;i++) + { + tiaWrite[i]=0; + } + for(i=0; i< 0x0e;i++) + { + tiaRead[i]=0; + } + + tiaWrite[CTRLPF] = 0x00; + for (i = 0; i < 2; i++) + { + pl[i].hmm = 0x0; + pl[i].x = 0x0; + pl[i].nusize = 0; + pl[i].grp = 0; + pl[i].vdel = 0; + pl[i].vdel_flag = 0; + pl_change_count[i] = 0; + } + + pl[0].mask = PL0_MASK; + pl[1].mask = PL1_MASK; + ml[0].mask = ML0_MASK; + ml[1].mask = ML1_MASK; + reset_collisions (); + + pf_change_count[0] = 0; + unified_count = 0; + for (i = 0; i < 3; i++) + { + ml[i].x = 0; + ml[i].hmm = 0; + ml[i].enabled = 0; + ml[i].locked = 0; + ml[i].width = 0; + ml[i].vdel = 0; + ml[i].vdel_flag = 0; + } + + tiaWrite[VBLANK] = 0; + tiaRead[INPT4] = 0x80; + tiaRead[INPT5] = 0x80; + + /* Set up the colour table */ + colour_table[P0M0_COLOUR]= 0; + colour_table[P1M1_COLOUR]= 0; + colour_table[PFBL_COLOUR] = 0; + colour_table[BK_COLOUR] = 0; +} + +void +init_memory(void) +{ + int i; + for(i=0;i<1024; i++) + cartRam[i]=0; + for(i=0; i<128;i++) + theRam[i]=0; +} + +void +init_banking (void) +{ + /* Set to the first bank */ + //dbg_message(DBG_NORMAL, "rom_size is set at %d bytes\n", rom_size); + if (rom_size == 2048) + theRom = &theCart[rom_size - 2048]; + else + theRom = &theCart[rom_size - 4096]; + //JMH + //switch(base_opts.bank) + // { + // case 3: + // /* Parker Brothers 8k E0 */ + // memcpy(&cartScratch[0xc00],&theCart[0x1c00],1024); + // memcpy(&cartScratch[0],&theCart[0],3072); + // theRom=cartScratch; + // break; + // default: + // break; + // } +} + +extern void init_cpu( ADDRESS addr); + +/* Main hardware startup */ +void +init_hardware (void) +{ +// dbg_message(DBG_NORMAL,"Setting Up hardware\n"); + init_screen (); + init_riot (); + init_tia (); + init_raster (); + init_memory(); + init_banking(); + init_cpu (0xfffc); +} + +/* Do a raster change */ +__inline void +do_raster_change (int i, int type, int val, struct RasterChange *rc) +{ + rc->x = ebeamx + beamadj; + rc->type = type; + rc->val = val; +} + +/* Do a raster change on the unified list */ +/* type: type of change */ +/* val: value of change */ +__inline void +do_unified_change (int type, int val) +{ + if (unified_count < MAXLIST) + { + unified[unified_count].x = ebeamx + beamadj; + unified[unified_count].type = type; + unified[unified_count].val = val; + unified_count++; + } +} + +/* Do a player raster change */ +/* i: player to change. 0 or 1 */ +/* type: type of change */ +/* val: value of change */ +__inline void +do_plraster_change (int i, int type, int val) +{ + int plc = pl_change_count[i]; + /*printf("Raster change i=%d, x=%d, type=%d, val=%d\n", i, x, type, val); */ + if (plc < MAXLIST) + { + do_raster_change (i, type, val, &pl_change[i][plc]); + if (type == 1) + pl_change[i][plc].x -= 3; + pl_change_count[i]++; + } +} + +/* Do a playfield raster change */ +/* i: playfield to change. Depreciated, as 0 is now only one used */ +/* type: type of change */ +/* val: value of change */ +__inline void +do_pfraster_change (int i, int type, int val) +{ + int pfc = pf_change_count[i]; + /* + if(ebeamy>=100) { + printf("Raster change i=%d, x=%d, type=%d, val=%d\n", + i, ebeamx+beamadj, type, val); + //show(); + } + */ + if (pfc < MAXLIST) + { + do_raster_change (i, type, val, &pf_change[i][pfc]); + pf_change_count[i]++; + } +} + + +/* Use a unified change */ +/* rc: unified change structure to use */ +__inline void +use_unified_change (struct RasterChange *rc) +{ + switch (rc->type) + { + case 0: + /* P0MO colour */ + colour_table[P0M0_COLOUR] = rc->val; + break; + case 1: + /* POM0 colour */ + colour_table[P1M1_COLOUR] = rc->val; + break; + case 2: + /* PFBL colour */ + colour_table[PFBL_COLOUR] = rc->val; + break; + case 3: + /* BK colour */ + colour_table[BK_COLOUR] = rc->val; + break; + case 4: + /* Priority change Normal */ + if(rc->val) + norm_val=1; + else + norm_val=0; + colour_lookup=colour_ptrs[norm_val][scores_val]; + break; + case 5: + /* Priority change Scores */ + if(rc->val) + { + if(rc->x < 80) + scores_val=1; + else + scores_val=2; + } + else + scores_val=0; + colour_lookup=colour_ptrs[norm_val][scores_val]; + break; + } +} + +/* Use a playfield change */ +/* pl: playfield to change */ +/* rc: change to make */ +__inline void +use_pfraster_change (PlayField *pl, struct RasterChange *rc) +{ + switch (rc->type) + { + case 0: + /* PF0 */ + pl->pf0 = rc->val; + break; + case 1: + /* PF1 */ + pl->pf1 = rc->val; + break; + case 2: + /* PF2 */ + pl->pf2 = rc->val; + break; + case 3: + /* Reflection */ + pl->ref = rc->val; + break; + } +} + +/* Use a player change */ +/* pl: player to change */ +/* rc: change to make */ +__inline void +use_plraster_change ( Player *pl, struct RasterChange *rc) +{ + switch (rc->type) + { + case 0: + /* GRP */ + pl->grp = rc->val; + break; + /* Vertical delay */ + case 1: + pl->vdel = pl->grp; + break; + } +} + + +int +do_paddle (int padnum) +{ + int res = 0x00; + int x=0; + if ((tiaWrite[VBLANK] & 0x80) == 0) + { + if (!nOptions_Landscape){ + x=240-Touchpadx; + x=x*66; + if (paddle[padnum].val > x) + res=0x80; + + }else{ + x=320-Touchpady; + x=x*50; + if (paddle[padnum].val > x) + res=0x80; + } + + if (x > clk) + res = 0x00; + } + return res; +} + +/* Calculate the keypad rows */ +/* i.e. when reading from INPTx we don't know the row */ +BYTE +do_keypad (int pad, int col) +{ + BYTE res= 0x80; + +// read_keypad(pad); + + /* Bottom row */ + if(pad==0) { + if( (riotWrite[SWCHA] & 0x80) && keypad[pad][col]==3) + res=0x00; + /* Third row */ + if( (riotWrite[SWCHA] & 0x40) && keypad[pad][col]==2) + res=0x00; + if( (riotWrite[SWCHA] & 0x20) && keypad[pad][col]==1) + res=0x00; + if( (riotWrite[SWCHA] & 0x10) && keypad[pad][col]==0) + res=0x00; + } + else { + /* Bottom row */ + if( (riotWrite[SWCHA] & 0x80) && keypad[pad][col]==3) + res=0x00; + /* Third row */ + if( (riotWrite[SWCHA] & 0x40) && keypad[pad][col]==2) + res=0x00; + if( (riotWrite[SWCHA] & 0x20) && keypad[pad][col]==1) + res=0x00; + if( (riotWrite[SWCHA] & 0x10) && keypad[pad][col]==0) + res=0x00; + } + return res; +} + + +/* + Called when the timer is set . + Note that res is the bit shift, not absolute value. + Assumes that any timer interval set will last longer than the instruction + setting it. + */ +/* res: timer interval resolution as a bit shift value */ +/* count: the number of intervals to set */ +/* clkadj: the number of CPU cycles into the current instruction */ +void +set_timer (int res, int count, int clkadj) +{ + timer_count = count << res; + timer_clks = clk + clkadj; + timer_res = res; +} + +/* New timer code, now only called on a read of INTIM */ +/* clkadj: the number of CPU cycles into the current instruction */ +/* returns: the current timer value */ +BYTE +do_timer (int clkadj) +{ + BYTE result; + int delta; + int value; + + delta = clk - timer_clks; + value = delta >> timer_res; + if (delta <= timer_count) + { /* Timer is still going down in res intervals */ + result = value; + } + else + { + if (value == 0) + /* Timer is in holding period */ + result = 0; + else + { + /* Timer is descending from 0xff in clock intervals */ + set_timer (0, 0xff, clkadj); + result = 0; + } + } + + /* printf("Timer result=%d\n", result); */ + return result; +} + +#ifdef snd +//extern unsigned char *sounddata; +//#define SoundBufSize 256 +//unsigned char sounddata[SoundBufSize]; +#endif + +/* Do the screen related part of a write to VBLANK */ +/* b: the byte written */ +void +do_vblank (BYTE b) +{ + + if (b & 0x02) + { + /* Start vertical blank */ + vbeam_state = VBLANKSTATE; +#ifdef snd +// Tia_process(sounddata, SoundBufSize); +// CESound_play_sample(sounddata, nOptions_SoundBufSize); +#endif + /* Also means we can update screen */ + tv_display (); + } + else + { + /* End vblank, and start first hsync drawing */ + int i; + + vbeam_state = DRAWSTATE; + hbeam_state = HSYNCSTATE; + /* Set up the screen */ + for (i = 0; i < unified_count; i++) + use_unified_change (&unified[i]); + /* Hope for a WSYNC, but just in case */ + ebeamx = -tv_hsync; + ebeamy = 0; + } +} + + +//int count = 1; + +/* do a horizontal sync */ +void +do_hsync (void) +{ + /* Only perform heavy stuff if electron beam is in correct position */ + if (vbeam_state == DRAWSTATE && (ebeamx > -tv_hsync)) + { +// if (!(count--)) +// { +// count = 2; + tv_raster (ebeamy); + +// } + /* Fix the clock value */ + clk += (ebeamx - tv_width) / 3; + ebeamy++; + } + hbeam_state = HSYNCSTATE; + ebeamx = -tv_hsync; + sbeamx = 0; +} + +/* Main screen logic */ +/* clks: CPU clock length of last instruction */ +__inline void +do_screen (int clks) +{ + switch (vbeam_state) + { + case VSYNCSTATE: + case VBLANKSTATE: + switch (hbeam_state) + { + case HSYNCSTATE: + ebeamx += clks * 3; + if (ebeamx >= 0) + { + hbeam_state = DRAWSTATE; + } + break; + case DRAWSTATE: + ebeamx += clks * 3; + if (ebeamx >= tv_width) + { + ebeamx -= (tv_hsync + tv_width); + /* Insert hsync stuff here */ + sbeamx = ebeamx; + hbeam_state = HSYNCSTATE; + } + break; + case OVERSTATE: + break; + } + break; + case DRAWSTATE: + switch (hbeam_state) + { + case HSYNCSTATE: + ebeamx += clks * 3; + if (ebeamx >= 0) + { + hbeam_state = DRAWSTATE; + } + break; + case DRAWSTATE: + ebeamx += clks * 3; + if (ebeamx >= tv_width) + { + /* Insert hsync stuff here */ + sbeamx = ebeamx; + ebeamx -= (tv_hsync + tv_width); + tv_raster (ebeamy); + ebeamy++; + hbeam_state = HSYNCSTATE; + } + if (ebeamy >= tv_height + tv_overscan) + { + vbeam_state = OVERSTATE; + ebeamy = 0; + } + break; + case OVERSTATE: + break; + } + break; + case OVERSTATE: + break; + } +} + diff --git a/MCUME_teensy/teensyvcs/address.h b/MCUME_teensy/teensyvcs/address.h new file mode 100644 index 0000000..1d694e4 --- /dev/null +++ b/MCUME_teensy/teensyvcs/address.h @@ -0,0 +1,110 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: address.h,v 1.4 1996/04/01 14:51:50 alex Exp $ +******************************************************************************/ + +#ifndef ADDRESS_H +#define ADDRESS_H + +/* Contains the addresses of the 2600 hardware */ +/* $Id: address.h,v 1.4 1996/04/01 14:51:50 alex Exp $ */ + +/* TIA Write Addresses (6 bit) */ + +#define VSYNC 0x00 +#define VBLANK 0x01 +#define WSYNC 0x02 +#define RSYNC 0x03 +#define NUSIZ0 0x04 +#define NUSIZ1 0x05 +#define COLUP0 0x06 +#define COLUP1 0x07 +#define COLUPF 0x08 +#define COLUBK 0x09 +#define CTRLPF 0x0A +#define REFP0 0x0B +#define REFP1 0x0C +#define PF0 0x0D +#define PF1 0x0E +#define PF2 0x0F +#define RESP0 0x10 +#define RESP1 0x11 +#define RESM0 0x12 +#define RESM1 0x13 +#define RESBL 0x14 +#define AUDC0 0x15 +#define AUDC1 0x16 +#define AUDF0 0x17 +#define AUDF1 0x18 +#define AUDV0 0x19 +#define AUDV1 0x1A +#define GRP0 0x1B +#define GRP1 0x1C +#define ENAM0 0x1D +#define ENAM1 0x1E +#define ENABL 0x1F +#define HMP0 0x20 +#define HMP1 0x21 +#define HMM0 0x22 +#define HMM1 0x23 +#define HMBL 0x24 +#define VDELP0 0x25 +#define VDELP1 0x26 +#define VDELBL 0x27 +#define RESMP0 0x28 +#define RESMP1 0x29 +#define HMOVE 0x2A +#define HMCLR 0x2B +#define CXCLR 0x2C + +/* TIA Read Addresses */ +#define CXM0P 0x0 +#define CXM1P 0x1 +#define CXP0FB 0x2 +#define CXP1FB 0x3 +#define CXM0FB 0x4 +#define CXM1FB 0x5 +#define CXBLPF 0x6 +#define CXPPMM 0x7 +#define INPT0 0x8 +#define INPT1 0x9 +#define INPT2 0xA +#define INPT3 0xB +#define INPT4 0xC +#define INPT5 0xD + +/* RIOT Addresses */ + +#define RAM 0x80 /* till 0xff */ +#define SWCHA 0x280 +#define SWACNT 0x281 +#define SWCHB 0x282 +#define SWBCNT 0x283 +#define INTIM 0x284 + +#define TIM1T 0x294 +#define TIM8T 0x295 +#define TIM64T 0x296 +#define T1024T 0x297 + +#define ROM 0xE000 /* To FFFF,0x1000-1FFF */ + +#endif + + + + + + + + diff --git a/MCUME_teensy/teensyvcs/bmpjoy.h b/MCUME_teensy/teensyvcs/bmpjoy.h new file mode 100644 index 0000000..87194a2 --- /dev/null +++ b/MCUME_teensy/teensyvcs/bmpjoy.h @@ -0,0 +1,41 @@ +const uint16_t PROGMEM bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensyvcs/bmptft.h b/MCUME_teensy/teensyvcs/bmptft.h new file mode 100644 index 0000000..332a7db --- /dev/null +++ b/MCUME_teensy/teensyvcs/bmptft.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyvcs/bmpvbar.h b/MCUME_teensy/teensyvcs/bmpvbar.h new file mode 100644 index 0000000..2fd0b35 --- /dev/null +++ b/MCUME_teensy/teensyvcs/bmpvbar.h @@ -0,0 +1,152 @@ +const uint16_t PROGMEM bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyvcs/bmpvga.h b/MCUME_teensy/teensyvcs/bmpvga.h new file mode 100644 index 0000000..d238658 --- /dev/null +++ b/MCUME_teensy/teensyvcs/bmpvga.h @@ -0,0 +1,40 @@ +const uint16_t PROGMEM bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyvcs/btypes.h b/MCUME_teensy/teensyvcs/btypes.h new file mode 100644 index 0000000..6431958 --- /dev/null +++ b/MCUME_teensy/teensyvcs/btypes.h @@ -0,0 +1,47 @@ +#ifndef BASICTYPES_H +#define BASICTYPES_H + +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned long uint32; + +typedef signed char int8; +typedef signed short int16; +typedef signed long int32; + + +typedef unsigned char byte; +typedef unsigned short word; +typedef signed char offset; +typedef union +{ +#ifdef LSB_FIRST + struct { unsigned long l,h; } DW; +#else + struct { unsigned long h,l; } DW; +#endif +// unsigned long long LL; +} ullong; + +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h,a,b; } B; +#else + struct { byte b,a,h,l; } B; +#endif + unsigned long DW; +} dpair; + +typedef union +{ +#ifdef LSB_FIRST + struct { byte l,h; } B; +#else + struct { byte h,l; } B; +#endif + word W; +} pair; +//END Added from NES + +#endif diff --git a/MCUME_teensy/teensyvcs/c26def.h b/MCUME_teensy/teensyvcs/c26def.h new file mode 100644 index 0000000..5f479e9 --- /dev/null +++ b/MCUME_teensy/teensyvcs/c26def.h @@ -0,0 +1,101 @@ +#ifndef C26DEF_H +#define C26DEF_H + +/* + Common 2600 (.c26) format v1.0 specification + ------------------------------------- + Alex Hornby, ahornby@zetnet.co.uk + + + Introduction + ============ + + Common 2600 file format definitions. For discussion and suggestions for + improvement, e-mail ahornby@zetnet.co.uk. I would like to see a fully + comprehensive 2600 file format develop so please copy this structure + and use it in your emulators. + + The format has been developed due to the multitude of different banking + schemes for 2600 cartridges, along with the need to select an appropriate + control device for each game. Using the .c26 format you will be able to + load games without giving loads of command line switches. + + Philosophy + ========== + To avoid the format splitting into several competing ones, please do + not alter the format without discussing it first. I'm not trying to be + bossy, just to keep the common format truly common. + + Tags + ==== + The format is tagged so as to be extensible and allow both forward and + backward compatibility. It also means that information that is not + needed or known does not have to be stored. e.g. If the cartridge image + is not a saved game then I do not need the game state tags. + + The format is a system of tags each being a tag type and the length of + data in that section. If a tag is not recognised then it should + be ignored. Each tag is a zero terminated string followed by a 32bit + signed integer describing the length. If the tag is small the the length + integer can constitute the data item. + + Case is NOT important in tag names + + Cross Platform Notes + ==================== + Note that integers are stored in the Intel/DEC Alpha style. + All strings are zero terminated . +*/ + +/* + Defined TAGS + ============ + + + Audit tags: All files should include these tags at the start of the file. + + VERSION: Gives file format version as an integer. Currently 1 + WRITER: Name of program that wrote file. + + + Cartridge Information tags: useful for collectors. + + CARTNAME: Name of cartridge. + CARTMAN: Manufacturer of cartridge. + CARTAUTHOR: Name of programmer/programming team who wrote cartridge. + CARTSERIAL: Serial number of the cartridge. + + + Cartridge operation tags: necessary for the running of the game. + + TVTYPE: integer, 0=NTSC 1=PAL. + CONTROLLERS: Left controller BYTE then Right controller BYTE. + BANKING: Bank switching scheme. + DATA: Cartridge ROM data. + + + Game state tags: used for saved games. + + CPUREGS: CPU registers. + GAMEREGS: TIA and PIA registers. + PIARAM: The 128 bytes of RAM from the PIA. + + CARTRAM: Cartridge RAM, if supported by the BANKING type + + */ +enum TAGTYPE { VERSION=-1, WRITER=1, + CARTNAME=2, CARTMAN=3, CARTAUTHOR=4, CARTSERIAL=5, + TVTYPE=-2, CONTROLLERS=-3, BANKING=-4, DATA=6, + CPUREGS=7, GAMEREGS=8, PIARAM=9, CARTRAM=10 }; + +char *tag_desc[]={ "VERSION", "WRITER", + "CARTNAME", "CARTMAN", "CARTAUTHOR", "CARTSERIAL", + "TVTYPE", "CONTROLLERS", "BANKING", "DATA", + "CPUREGS", "GAMEREGS", "PIARAM", "CARTRAM"}; + + +/* Tag structure */ + +struct c26_tag { + int type; + int len; +}; + + +#endif diff --git a/MCUME_teensy/teensyvcs/col_mask.h b/MCUME_teensy/teensyvcs/col_mask.h new file mode 100644 index 0000000..d8d0558 --- /dev/null +++ b/MCUME_teensy/teensyvcs/col_mask.h @@ -0,0 +1,45 @@ +#ifndef COL_MASK_H +#define COL_MASK_H + +#define PL0_MASK 0x01 +#define PL1_MASK 0x02 +#define ML0_MASK 0x04 +#define ML1_MASK 0x08 +#define BL_MASK 0x10 +#define PF_MASK 0x20 +#define PF_MASK32 0x20202020 + +#define M0P0_MASK 0x01 +#define M0P1_MASK 0x02 + +#define M1P1_MASK 0x04 +#define M1P0_MASK 0x08 + +#define P0BL_MASK 0x10 +#define P0PF_MASK 0x20 + +#define P1BL_MASK 0x40 +#define P1PF_MASK 0x80 + +#define M0BL_MASK 0x100 +#define M0PF_MASK 0x200 + +#define M1BL_MASK 0x400 +#define M1PF_MASK 0x800 + +#define BLPF_MASK 0x1000 + +#define M0M1_MASK 0x2000 +#define P0P1_MASK 0x4000 + +#define CXM0P_MASK (M0P1_MASK | M0P0_MASK) +#define CXM1P_MASK (M1P0_MASK | M1P1_MASK) +#define CXP0FB_MASK (P0PF_MASK | P0BL_MASK) +#define CXP1FB_MASK (P1PF_MASK | P1BL_MASK) +#define CXM0FB_MASK (M0PF_MASK | M0BL_MASK) +#define CXM1FB_MASK (M1PF_MASK | M1BL_MASK) +#define CXBLPF_MASK BLPF_MASK +#define CXPPMM_MASK (P0P1_MASK | M0M1_MASK) + +#endif + diff --git a/MCUME_teensy/teensyvcs/collision.h b/MCUME_teensy/teensyvcs/collision.h new file mode 100644 index 0000000..b2d5466 --- /dev/null +++ b/MCUME_teensy/teensyvcs/collision.h @@ -0,0 +1,49 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: collision.h,v 1.5 1996/08/29 16:03:24 ahornby Exp $ +******************************************************************************/ + +/* + Defines for the hardware collision detection. + */ + +//#ifndef COLLISION_H +#define COLLISION_H + +#include "col_mask.h" + +/* The collsion vector */ +extern BYTE* colvect; + +/* The collision lookup table */ +extern unsigned short col_table[256]; + +/* The collision state */ +extern unsigned short col_state; + +extern void +init_collisions(void); + +extern __inline void +reset_collisions(void); + +extern int +set_collisions(BYTE b); + +//#endif + + + + + + diff --git a/MCUME_teensy/teensyvcs/colours.h b/MCUME_teensy/teensyvcs/colours.h new file mode 100644 index 0000000..c935b76 --- /dev/null +++ b/MCUME_teensy/teensyvcs/colours.h @@ -0,0 +1,102 @@ +static long colortable[256] = +{ + /* Grey */ + 0x0, 0x1c1c1c, 0x393939, 0x595959, + 0x797979, 0x929292, 0xababab, 0xbcbcbc, + 0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec, + 0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff, + + /* Gold */ + 0x391701, 0x5e2304, 0x833008, 0xa54716, + 0xc85f24, 0xe37820, 0xff911d, 0xffab1d, + 0xffc51d, 0xffce34, 0xffd84c, 0xffe651, + 0xfff456, 0xfff977, 0xffff98, 0xffff98, + + /* Orange */ + 0x451904, 0x721e11, 0x9f241e, 0xb33a20, + 0xc85122, 0xe36920, 0xff811e, 0xff8c25, + 0xff982c, 0xffae38, 0xffc545, 0xffc559, + 0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1, + + /* Red Orange */ + 0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119, + 0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161, + 0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e, + 0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce, + + /* Pink */ + 0x50568, 0x3b136d, 0x712272, 0x8b2a8c, + 0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd, + 0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd, + 0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff, + + /* Purple */ + 0x280479, 0x400984, 0x590f90, 0x70249d, + 0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed, + 0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff, + 0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff, + + /* Blue Purple */ + 0x35088a, 0x420aad, 0x500cd0, 0x6428d0, + 0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec, + 0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff, + 0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff, + + /* Blue */ + 0x51e81, 0x626a5, 0x82fca, 0x263dd4, + 0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff, + 0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff, + 0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff, + + /* Blue */ + 0xc048b, 0x2218a0, 0x382db5, 0x483ec7, + 0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff, + 0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff, + 0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff, + + /* Light Blue */ + 0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac, + 0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec, + 0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff, + 0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff, + + /* Turquoise */ + 0x2f4302, 0x395202, 0x446103, 0x417a12, + 0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55, + 0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d, + 0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6, + + /* Green blue */ + 0xa4108, 0xd540a, 0x10680d, 0x137d0f, + 0x169212, 0x19a514, 0x1cb917, 0x1ec919, + 0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d, + 0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a, + + /* Green */ + 0x4410b, 0x5530e, 0x66611, 0x77714, + 0x88817, 0x99b1a, 0xbaf1d, 0x48c41f, + 0x86d922, 0x8fe924, 0x99f927, 0xa8fc41, + 0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81, + + /* Yellow Green */ + 0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e, + 0x4f7420, 0x598324, 0x649228, 0x82a12e, + 0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945, + 0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53, + + /* Orange Green */ + 0x263001, 0x243803, 0x234005, 0x51541b, + 0x806931, 0x978135, 0xaf993a, 0xc2a73e, + 0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836, + 0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d, + + /* Light Orange */ + 0x401a02, 0x581f05, 0x702408, 0x8d3a13, + 0xab511f, 0xb56427, 0xbf7730, 0xd0853a, + 0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c, + 0xffc160, 0xffc671, 0xffcb83, 0xffcb83, +}; + + + + diff --git a/MCUME_teensy/teensyvcs/cpu.h b/MCUME_teensy/teensyvcs/cpu.h new file mode 100644 index 0000000..95a4b70 --- /dev/null +++ b/MCUME_teensy/teensyvcs/cpu.h @@ -0,0 +1,182 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: cpu.h,v 1.6 1997/11/22 14:29:54 ahornby Exp $ +******************************************************************************/ +/* + * + * This file was part of x64. + * + * This file contains useful stuff when you are creating + * virtual machine like MCS6510 based microcomputer. + * + * Included are: + * o registers + * o flags in PSW + * o addressing modes + * + * Written by + * Vesa-Matti Puro (vmp@lut.fi) + * Jarkko Sonninen (sonninen@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + * + */ + +#ifndef X2600_CPU_H +#define X2600_CPU_H + +#include "types.h" + +/* 6507 Registers. */ +#define AC accumulator +#define XR x_register +#define YR y_register +#define SP stack_pointer +#define pc6507 program_counter +#define PCH ((pc6507>>8)&0xff) +#define PCL (pc6507&0xff) + +#define ZF zero_flag +#define SF sign_flag +#define OF overflow_flag +#define BF break_flag +#define DF decimal_flag +#define IF interrupt_flag +#define CF carry_flag + + +/* Masks which indicate location of status flags in PSW. */ +#define S_SIGN 0x80 +#define S_OVERFLOW 0x40 +#define S_NOTUSED 0x20 +#define S_BREAK 0x10 +#define S_DECIMAL 0x08 +#define S_INTERRUPT 0x04 +#define S_ZERO 0x02 +#define S_CARRY 0x01 + + +/* ADDRESSING MODES */ + +#define IMPLIED 0 +#define ACCUMULATOR 1 +#define IMMEDIATE 2 + +#define ZERO_PAGE 3 +#define ZERO_PAGE_X 4 +#define ZERO_PAGE_Y 5 + +#define ABSOLUTE 6 +#define ABSOLUTE_X 7 +#define ABSOLUTE_Y 8 + +#define ABS_INDIRECT 9 +#define INDIRECT_X 10 +#define INDIRECT_Y 11 + +#define RELATIVE 12 + +#define ASS_CODE 13 + + +/* + * Declaration for lookup-table which is used to translate MOS6502 + * machine instructions. Machine code is used as index to array called + * lookup. Pointer to function is then fetched from array and function + * is called. + */ + +extern struct lookup_tag { + char *mnemonic; /* Selfdocumenting? */ + short addr_mode; + unsigned char source; + unsigned char destination; + unsigned char cycles; + unsigned char pbc_fix; /* Cycle for Page Boundary Crossing */ +} lookup[]; + + +/* Addressing mode (addr_mode) is used when instruction is diassembled + * or assembled by diassembler or assembler. This is used i.e. + * in function char *sprint_opcode() in the file misc.c. + * + * MOS6502 addressing modes are #defined in the file "vmachine.h". + * + * Mnemonic is character string telling the name of the instruction. + */ + +#define M_NONE 0 +#define M_AC 1 +#define M_XR 2 +#define M_YR 3 +#define M_SP 4 +#define M_SR 5 +#define M_PC 6 +#define M_IMM 7 +#define M_ZERO 8 +#define M_ZERX 9 +#define M_ZERY 10 +#define M_ABS 11 +#define M_ABSX 12 +#define M_ABSY 13 +#define M_AIND 14 +#define M_INDX 15 +#define M_INDY 16 +#define M_REL 17 +#define M_FC 18 +#define M_FD 19 +#define M_FI 20 +#define M_FV 21 +#define M_ADDR 22 +#define M_ 23 + +#ifndef NO_UNDOC_CMDS +#define M_ACIM 24 /* Source: AC & IMMED (bus collision) */ +#define M_ANXR 25 /* Source: AC & XR (bus collision) */ +#define M_AXIM 26 /* Source: (AC | #EE) & XR & IMMED (bus collision) */ +#define M_ACNC 27 /* Dest: M_AC and Carry = Negative */ +#define M_ACXR 28 /* Dest: M_AC, M_XR */ + +#define M_SABY 29 /* Source: (ABS_Y & SP) (bus collision) */ +#define M_ACXS 30 /* Dest: M_AC, M_XR, M_SP */ +#define M_STH0 31 /* Dest: Store (src & Addr_Hi+1) to (Addr +0x100) */ +#define M_STH1 32 +#define M_STH2 33 +#define M_STH3 34 + +#else +#define M_ACIM M_NONE +#define M_ANXR M_NONE +#define M_AXIM M_NONE +#define M_ACNC M_NONE +#define M_ACXR M_NONE + +#define M_SABY M_NONE +#define M_ACXS M_NONE +#define M_STH0 M_NONE +#define M_STH1 M_NONE +#define M_STH2 M_NONE +#define M_STH3 M_NONE +#endif + + + +#endif /* X2600_CPU_H */ + + + + + + + + diff --git a/MCUME_teensy/teensyvcs/display.h b/MCUME_teensy/teensyvcs/display.h new file mode 100644 index 0000000..c4c15c6 --- /dev/null +++ b/MCUME_teensy/teensyvcs/display.h @@ -0,0 +1,34 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: display.h,v 1.13 1997/11/22 14:29:54 ahornby Exp $ +******************************************************************************/ + +/* + Defines for the X11 display code. + */ + +#ifndef DISPLAY_H +#define DISPLAY_H + +int tv_on(void); +void tv_display(void); + +extern int vwidth,vheight,theight; +extern int tv_counter; +extern unsigned char * VBuf; + +#endif + + + + diff --git a/MCUME_teensy/teensyvcs/emuapi.cpp b/MCUME_teensy/teensyvcs/emuapi.cpp new file mode 100644 index 0000000..5f2a450 --- /dev/null +++ b/MCUME_teensy/teensyvcs/emuapi.cpp @@ -0,0 +1,1046 @@ +#define KEYMAP_PRESENT 1 + +extern "C" { + #include "emuapi.h" + #include "iopins.h" +} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensyvcs/emuapi.h b/MCUME_teensy/teensyvcs/emuapi.h new file mode 100644 index 0000000..1511c06 --- /dev/null +++ b/MCUME_teensy/teensyvcs/emuapi.h @@ -0,0 +1,118 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +//#define HAS_SND 1 +//#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " Atari2600 Emulator " +#define ROMSDIR "2600" + +#define emu_Init(ROM) {vcs_Init();vcs_Start(ROM);} +#define emu_Step() {vcs_Step();} +#define emu_Input(x) {} + +#define PALETTE_SIZE 256 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +//#define SINGLELINE_RENDERING 1 + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 4 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 8 +#define KEYBOARD_Y 50 +#define KEYBOARD_KEY_H 38 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[] = { + TAREA_XY,KEYBOARD_X,KEYBOARD_Y, + TAREA_WH,KEYBOARD_KEY_W,KEYBOARD_KEY_H, + TAREA_NEW_ROW,40,40,140,40,40, + TAREA_END}; + +const unsigned short keys[] = { + 1,2,ACTION_NONE,3,4 + }; + +#endif + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + + diff --git a/MCUME_teensy/teensyvcs/exmacro.h b/MCUME_teensy/teensyvcs/exmacro.h new file mode 100644 index 0000000..d67b51a --- /dev/null +++ b/MCUME_teensy/teensyvcs/exmacro.h @@ -0,0 +1,30 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: exmacro.h,v 1.5 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + +/* + Defines __inline functions that would otherwise be macros. + */ + +//#ifndef EXMACRO_H +//#define EXMACRO_H + +extern __inline ADDRESS load_abs_addr(void); +extern __inline int pagetest( ADDRESS a, BYTE b); +extern __inline int brtest( BYTE a); +extern __inline int toBCD( int a); +extern __inline int fromBCD( int a); + +//#endif + diff --git a/MCUME_teensy/teensyvcs/extern.h b/MCUME_teensy/teensyvcs/extern.h new file mode 100644 index 0000000..0aa5143 --- /dev/null +++ b/MCUME_teensy/teensyvcs/extern.h @@ -0,0 +1,62 @@ +/* + $Id: extern.h,v 1.2 1995/12/12 16:21:39 alex Exp alex $ + */ + +#ifndef VCSEXTERN_H +#define VCSEXTERN_H + + +#include "types.h" /* for BYTE, ADDRESS, etc. types and structures */ +/* #include "proto.h" */ + +extern char *progname; +extern int clength[]; + +extern BYTE accumulator; +extern BYTE x_register; +extern BYTE y_register; +extern BYTE stack_pointer; +extern BYTE status_register; +extern ADDRESS program_counter; +extern CLOCK clk; + +extern int zero_flag; +extern int sign_flag; +extern int overflow_flag; +extern int break_flag; +extern int decimal_flag; +extern int interrupt_flag; +extern int carry_flag; + +/* Debugging */ +extern int hexflg; +extern int verflg; +extern int traceflg; +extern int debugflg; +extern int runflg; + +extern int autodump; +extern int reuflg; + + +/* Memory */ + +extern int module; + +/* Keyboard & joystick */ + +#ifdef JOYSTICK +extern void joystick(void) ; +extern void joyini(void) ; +extern void joyclose(void); + +extern int joyfd ; +#endif + +#endif + + + + + + diff --git a/MCUME_teensy/teensyvcs/font8x8.h b/MCUME_teensy/teensyvcs/font8x8.h new file mode 100644 index 0000000..4f773da --- /dev/null +++ b/MCUME_teensy/teensyvcs/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +const unsigned char font8x8[128][8] PROGMEM = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensyvcs/iopins.h b/MCUME_teensy/teensyvcs/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensyvcs/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensyvcs/keyboard.h b/MCUME_teensy/teensyvcs/keyboard.h new file mode 100644 index 0000000..0da9978 --- /dev/null +++ b/MCUME_teensy/teensyvcs/keyboard.h @@ -0,0 +1,7 @@ +#ifndef KEYBOARD_H +#define KEYBOARD_H + +void init_keyboard(void); +void keyboard(void); + +#endif diff --git a/MCUME_teensy/teensyvcs/keyboard_osd.h b/MCUME_teensy/teensyvcs/keyboard_osd.h new file mode 100644 index 0000000..4c31e6f --- /dev/null +++ b/MCUME_teensy/teensyvcs/keyboard_osd.h @@ -0,0 +1,19 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif diff --git a/MCUME_teensy/teensyvcs/logo.h b/MCUME_teensy/teensyvcs/logo.h new file mode 100644 index 0000000..41390c2 --- /dev/null +++ b/MCUME_teensy/teensyvcs/logo.h @@ -0,0 +1,194 @@ +const uint16_t logo[] PROGMEM = { +0x0140,0x00c1,0x39e7,0x39c6,0x3a07,0x3a07,0x39e7,0x4227,0x39e6,0x39c6,0x39e7,0x39c7,0x39e6,0x31c6,0x39c6,0x39c6,0x39c6,0x39c6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x31c6,0x31c6,0x31e6,0x31c6,0x3a07,0x31c6,0x39e6,0x31e6,0x39e7,0x39e7,0x31c6,0x39e6,0x39e6,0x3a07,0x39e7,0x31c6,0x3a07,0x4228,0x3a07,0x4228,0x4228,0x4248,0x3a07,0x4227,0x4227,0x3a27,0x3a27,0x39e7,0x3a07,0x3a08,0x39e7,0x31e6,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a5,0x39c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x29a5,0x31c6,0x31a6,0x2985,0x3185,0x31a6,0x31c6,0x31a6,0x31a5,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31e6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x31c6,0x31c6,0x31a5,0x31a5,0x31a6,0x31a5,0x31c6,0x2985,0x2985,0x3185,0x3185,0x2985,0x2965,0x2985,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x3185,0x2985,0x31a6,0x3185,0x31a5,0x31a6,0x31a5,0x31a5,0x31a6,0x3185,0x3185,0x3185,0x3185,0x31a6,0x31a6,0x2985,0x31a6,0x31a5,0x31a5,0x31a5,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x3185,0x31a6,0x31a5,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2985,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x3186,0x3186,0x39c6,0x4208,0x4208,0x39c7,0x39e7,0x39e7,0x31a6,0x3185,0x31a6,0x3185,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x31a6,0x3185,0x31a6,0x31a6,0x31a6,0x31a5,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3185,0x3186,0x39c6,0x39c7,0x39c6,0x31a6,0x39c6,0x31c6,0x3186,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x39c7,0x39c7,0x39e7,0x31a6,0x39c6,0x39c6,0x39c6,0x39c6,0x39c7,0x39c7,0x39a6,0x31a6,0x31c6,0x39c6,0x39c6,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x4207,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4208,0x39c6,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39c6,0x39c7,0x39e7,0x39e7,0x39e7,0x4208,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39c7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x4208,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4207,0x39c7,0x4207,0x39e7,0x39c7,0x4207,0x39e7,0x3a07,0x4208,0x4208,0x4248,0x4228,0x3a07,0x4207,0x4228,0x41e7,0x4208,0x3a07,0x3a07, +0x3185,0x31c6,0x39e7,0x31c6,0x31a6,0x3185,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a5,0x31a6,0x2965,0x31a6,0x31a6,0x31c6,0x31c6,0x39e6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x39e6,0x39e7,0x31a5,0x3185,0x31c6,0x39c6,0x31a6,0x31c6,0x31a5,0x31a5,0x31a6,0x2985,0x31c6,0x31a5,0x31a6,0x31c6,0x39c6,0x39c6,0x39c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x39e7,0x31c6,0x29a5,0x2985,0x2985,0x31a6,0x39e6,0x31c6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a5,0x39c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a5,0x31c6,0x39e6,0x39e7,0x31a6,0x39c6,0x39c6,0x3a07,0x39e6,0x31c6,0x39c6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x31c6,0x31a6,0x31c6,0x39e6,0x39e7,0x31c6,0x3a07,0x39e6,0x3a07,0x39e7,0x3a07,0x31e6,0x31c6,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x31a6,0x39e6,0x31c6,0x39e7,0x39e6,0x3a07,0x3a07,0x3a07,0x39e7,0x4207,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x39c6,0x39e6,0x39c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x39c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x39e7,0x39e7,0x31c6,0x39e7,0x31a6,0x31c6,0x31c6,0x39c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x39c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4207,0x3a07,0x39e7,0x39c7,0x39e7,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x4207,0x39e7,0x39c6,0x4207,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4207,0x3a07,0x4207,0x3a07,0x4207,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39c6,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x3a07,0x4228,0x3a07,0x31c6,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4208,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39c6,0x39e7,0x31c6,0x31a6,0x39e7,0x39e7,0x39c6,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39a6,0x39c6,0x31a6,0x39c6,0x31a6,0x39c7,0x39e7,0x39c7,0x4207,0x39e7,0x39e7,0x39c7,0x31a6,0x39c6,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x3a07,0x39c6,0x31c6,0x39e7,0x3a07,0x39e7,0x39c7,0x4207,0x4208,0x39e7,0x31c6,0x39e7,0x39e7,0x31a6,0x39c6,0x39c7,0x39c6,0x31a6,0x3185,0x39c7,0x39c6,0x31a6,0x39c7,0x31a6,0x39c7,0x31a6,0x3186,0x3a07,0x39e7,0x39e7,0x31c6,0x39c6,0x31c6,0x39c7,0x31c6,0x31c6,0x31c6,0x31a6,0x39c7,0x39c6,0x39e7,0x39c6,0x31a6,0x31a6,0x39e7, +0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x31c6,0x3185,0x39c6,0x31c6,0x39c6,0x39e7,0x31a6,0x39c6,0x39c6,0x31a6,0x31c6,0x39e7,0x39e6,0x39c6,0x31a6,0x31c6,0x31a6,0x31c6,0x39e6,0x39e6,0x39e6,0x39e7,0x39e7,0x39c6,0x39e7,0x39e7,0x39e6,0x31c6,0x31c6,0x39c6,0x39e6,0x39c6,0x31a5,0x31a5,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x39c6,0x31a6,0x31a6,0x31c6,0x31a5,0x31a5,0x31a5,0x31c6,0x31a6,0x31a6,0x3185,0x31c6,0x31c6,0x39e6,0x39e7,0x31c6,0x31a6,0x3a07,0x31c6,0x3a07,0x31c6,0x3a07,0x39e7,0x39e6,0x39c6,0x39e6,0x39e6,0x31c6,0x31c6,0x39e6,0x31c6,0x39e7,0x39c6,0x31c6,0x31c6,0x39e7,0x39e6,0x39c6,0x39c6,0x31c6,0x39e7,0x39e7,0x31c6,0x3a07,0x3a07,0x31c6,0x31c6,0x2985,0x31e6,0x39e7,0x31c6,0x31a6,0x39c7,0x39c6,0x39e7,0x31a6,0x39e6,0x31a6,0x39e6,0x3a07,0x39c6,0x3a07,0x3a07,0x3a07,0x31c6,0x31c6,0x39e6,0x39e7,0x39e7,0x31a6,0x31a6,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x31c6,0x31a6,0x39c7,0x31a6,0x39e7,0x31c6,0x39e7,0x31c6,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x39e7,0x3a07,0x39e7,0x31e7,0x31c6,0x39e7,0x31c6,0x31c6,0x3a07,0x39e7,0x31a6,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x3a07,0x4228,0x4208,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x4207,0x4227,0x39e7,0x3a07,0x39e7,0x4207,0x4208,0x39e7,0x4228,0x3a07,0x4207,0x3a07,0x4227,0x4207,0x4228,0x4228,0x4207,0x4228,0x3a07,0x4208,0x4207,0x4228,0x4228,0x4228,0x4228,0x4227,0x4228,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x4207,0x4208,0x4208,0x3a07,0x4208,0x4228,0x4228,0x3a08,0x4208,0x39e7,0x39e7,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4207,0x4228,0x4208,0x4248,0x4228,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4208,0x4228,0x4228,0x39e7,0x4248,0x4a89,0x4207,0x4207,0x4208,0x3a07,0x4208,0x39e7,0x39e7,0x3a07,0x4228,0x4207,0x4207,0x39e7,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4208,0x3a07,0x3a07,0x4228,0x4228,0x4208,0x39e7,0x3a07,0x39e7,0x4208,0x4207,0x3a07,0x4208,0x39e7,0x3a07,0x39e7,0x4228,0x4248,0x4207,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x3a08,0x3a07,0x4207,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x31c6,0x3a07,0x4207,0x31c6,0x39e7,0x39e7,0x39c6,0x3a07,0x3a07,0x39e7,0x39c7,0x39c7,0x3a07,0x3a07,0x3a07,0x4228,0x39c7,0x39e7,0x39c6,0x39c7, +0x39e6,0x39e7,0x39c6,0x39e6,0x39e7,0x3a07,0x39e7,0x39e7,0x39c6,0x39e7,0x39e7,0x3a07,0x4227,0x39e7,0x39e6,0x31c6,0x3a07,0x39e6,0x39e7,0x39e6,0x39e7,0x31c6,0x3a07,0x39c6,0x31a6,0x31a6,0x31c6,0x39e6,0x3a07,0x39e7,0x31c6,0x39c6,0x31c6,0x31a5,0x39c6,0x31c6,0x31c6,0x31a6,0x3a07,0x3a07,0x31a6,0x31a5,0x39e6,0x39e6,0x39e6,0x31a6,0x2965,0x31c6,0x39e6,0x31a6,0x31c6,0x39e7,0x31a6,0x39c6,0x39c6,0x39e7,0x31c6,0x39e6,0x3a07,0x3a07,0x31c6,0x39e7,0x39e6,0x31c6,0x31c6,0x3a07,0x3a07,0x31a6,0x39c6,0x39e6,0x39c6,0x31c6,0x31e6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x3a07,0x4207,0x31c6,0x3a07,0x31a6,0x39e7,0x39e6,0x39c6,0x39e7,0x3a07,0x31e7,0x39e7,0x2986,0x31c6,0x31a6,0x39e7,0x39e6,0x3a07,0x39e7,0x31c6,0x39e6,0x31c6,0x39e6,0x39e6,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x31c6,0x4228,0x4248,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x31e7,0x31c6,0x39c6,0x39e7,0x31e7,0x31e7,0x3a07,0x39e7,0x39e7,0x39e7,0x31e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x4207,0x3a07,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x31c6,0x31c6,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x4248,0x3a07,0x39c6,0x39e7,0x39c7,0x31c6,0x3a07,0x4228,0x3a28,0x4228,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x4228,0x3a07,0x4207,0x4227,0x4207,0x4207,0x4248,0x4248,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4207,0x3a07,0x4207,0x4207,0x3a07,0x4248,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4207,0x4228,0x4248,0x4208,0x39e7,0x4228,0x4228,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x4248,0x4208,0x3a07,0x4248,0x4228,0x4a48,0x4248,0x3a07,0x4228,0x3a07,0x4207,0x3a07,0x39e7,0x4248,0x4228,0x39e7,0x4228,0x4248,0x4208,0x4207,0x4208,0x4228,0x4228,0x4248,0x4228,0x4248,0x4228,0x4a48,0x4228,0x4208,0x4208,0x4228,0x4228,0x4207,0x4208,0x4228,0x4228,0x4228,0x4207,0x4208,0x4228,0x39c7,0x4207,0x4228,0x4207,0x4228,0x4228,0x4228,0x4207,0x4228,0x4228,0x39e7,0x39e7,0x4a48,0x3a07,0x3a07,0x4208,0x4228,0x4207,0x4228,0x4228,0x39e7,0x4228,0x4207,0x3a07,0x4207,0x4228,0x4208,0x3a07,0x4208,0x4228,0x4248,0x4208,0x4208,0x4a69,0x4228,0x4207,0x4228,0x4208,0x39e7,0x39e7,0x4228,0x4207,0x39e7,0x39e7,0x39e7,0x4207,0x3a07,0x39e7,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x4207,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x3a07,0x4248,0x4207,0x31a6,0x4208,0x4208,0x39e7,0x39a6,0x39c6,0x3a07,0x3a08,0x4228,0x3a08,0x39c7,0x4208,0x3186,0x39c7, +0x31a5,0x31a6,0x39e6,0x3a07,0x31c6,0x39c6,0x4227,0x4228,0x4207,0x31c6,0x39c6,0x39e6,0x39c6,0x39e6,0x39e6,0x31c6,0x39e6,0x39e7,0x39e7,0x39e7,0x39e6,0x31c6,0x4227,0x31a6,0x31a6,0x39e7,0x31c6,0x3a07,0x3a07,0x4227,0x3a07,0x31c6,0x3a07,0x39e6,0x31c6,0x31a5,0x3185,0x39c6,0x39e6,0x39e7,0x4207,0x39e6,0x31c6,0x31a6,0x3185,0x31a6,0x31a6,0x39c6,0x31a6,0x31c6,0x3a07,0x39e7,0x31c6,0x31c6,0x39e6,0x39e6,0x31c6,0x31a6,0x31a5,0x2985,0x39e6,0x31c6,0x39e7,0x31c6,0x39c6,0x39e7,0x31a6,0x39e6,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x39c6,0x31c6,0x31a6,0x31c6,0x3a07,0x39e6,0x3a07,0x3a07,0x3a07,0x39e6,0x3a07,0x31c6,0x39e6,0x39e7,0x4248,0x3a27,0x3a27,0x3a07,0x4227,0x31a6,0x39e7,0x39e7,0x39e7,0x39c7,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x4227,0x39e7,0x31a5,0x39e7,0x4227,0x4228,0x39e7,0x3a07,0x3a07,0x39e7,0x4227,0x31c6,0x31c6,0x39e7,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x39e7,0x39e6,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x31c6,0x3a07,0x39e7,0x39e6,0x4207,0x39e7,0x3a07,0x3a07,0x3a07,0x4208,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x39e7,0x3a07,0x39e7,0x4208,0x4228,0x3a07,0x4207,0x3a07,0x4207,0x4207,0x4248,0x4248,0x4208,0x4228,0x4207,0x4228,0x4228,0x4248,0x3a07,0x4207,0x4228,0x4228,0x4228,0x4207,0x4a69,0x4208,0x39e7,0x4228,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x3a07,0x4248,0x4228,0x4207,0x4248,0x3a07,0x4228,0x4228,0x4248,0x4a48,0x4228,0x4228,0x4248,0x4228,0x4208,0x4228,0x3a07,0x4228,0x4248,0x4a69,0x4a48,0x4228,0x4228,0x4248,0x4a48,0x4228,0x4228,0x4248,0x4248,0x4207,0x4248,0x4a48,0x4228,0x4a69,0x4248,0x4228,0x4a49,0x4a69,0x4228,0x4a49,0x4228,0x3a07,0x4228,0x4228,0x4207,0x4228,0x4228,0x4228,0x4208,0x4a69,0x4228,0x4a48,0x4228,0x39e7,0x4228,0x4228,0x4248,0x4a69,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a48,0x4208,0x4a48,0x4248,0x4248,0x4248,0x4a48,0x4228,0x4228,0x4207,0x3a07,0x4228,0x4228,0x4248,0x4a69,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x4228,0x4228,0x4228,0x4a49,0x4228,0x3a07,0x4a69,0x4a69,0x4208,0x3a07,0x31c6,0x39e7,0x4228,0x4228,0x39c7,0x39c6,0x4228,0x4a48,0x39e7,0x3a07,0x4207,0x4228,0x3a08,0x39e7,0x39c6,0x39c7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39c7,0x3a08,0x4a49,0x31c6,0x39e7,0x39e7,0x39e7, +0x39e7,0x31a6,0x39c6,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x4207,0x3a07,0x3a07,0x39e7,0x4207,0x4207,0x4248,0x39e6,0x39e7,0x4228,0x3a07,0x39e7,0x4207,0x39e6,0x39e6,0x3a07,0x39e7,0x39e6,0x39e6,0x31c6,0x39e6,0x3a07,0x39e6,0x39c6,0x39e7,0x3a07,0x31c6,0x39e7,0x31a6,0x31a6,0x3185,0x31a6,0x31c6,0x4227,0x3a07,0x31e6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x3a07,0x31c6,0x39e7,0x31a5,0x31c6,0x31c6,0x3a07,0x3a07,0x39e7,0x39e7,0x31e6,0x4207,0x39c6,0x39c6,0x39e7,0x39c6,0x31c6,0x31c6,0x39e6,0x31a6,0x31a6,0x3a07,0x31a6,0x31a6,0x31c6,0x3185,0x39c6,0x39e7,0x3a07,0x4248,0x3a07,0x4227,0x31e6,0x31c6,0x4248,0x31e6,0x3a07,0x4248,0x3a07,0x3a07,0x3a27,0x4227,0x4227,0x4207,0x4207,0x31c6,0x39e7,0x39e7,0x3a07,0x39c7,0x31e6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4207,0x3a07,0x3a07,0x3a07,0x39e7,0x4207,0x39e7,0x39e7,0x3a07,0x4227,0x39c6,0x39e7,0x39e7,0x39e7,0x3a07,0x31e7,0x31a6,0x3a27,0x3a07,0x39e7,0x39e7,0x39c7,0x3a07,0x3a07,0x3a07,0x4228,0x3a28,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x39e6,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x4208,0x3a07,0x3a07,0x31e7,0x3a07,0x4207,0x4228,0x39e7,0x4207,0x4248,0x4228,0x39e7,0x3a07,0x4228,0x4207,0x4207,0x4207,0x39e7,0x4228,0x4228,0x39e7,0x4207,0x4228,0x4227,0x3a27,0x4228,0x4228,0x3a07,0x4207,0x4228,0x4228,0x3a07,0x4228,0x39e7,0x3a07,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x4228,0x4227,0x4208,0x3a07,0x4208,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x4248,0x4208,0x4228,0x4228,0x4248,0x4a49,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4208,0x4228,0x4228,0x4228,0x4a48,0x4248,0x39e7,0x4228,0x4248,0x4248,0x4228,0x4228,0x4208,0x4a48,0x4228,0x4248,0x4228,0x4a69,0x4aaa,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x39e7,0x4248,0x4a48,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x4208,0x4228,0x4a69,0x4a69,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4228,0x4248,0x4228,0x4208,0x4a69,0x4248,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4208,0x3a07,0x4a48,0x4228,0x3a07,0x4228,0x4228,0x4248,0x3a07,0x4208,0x4a69,0x4208,0x39c7,0x4208,0x4228,0x4248,0x4a49,0x4248,0x4208,0x3a08,0x4228,0x4228,0x4207,0x3a07,0x31a6,0x39c6,0x4228,0x3a07,0x4207,0x4a48,0x39c7,0x39e7,0x39e7,0x39e7,0x4248,0x3a07,0x3a07,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4228,0x39e7,0x39e7,0x39c7,0x39e7, +0x31a6,0x39e7,0x31a6,0x3186,0x39e7,0x39e6,0x31c6,0x4207,0x4207,0x39e7,0x4227,0x31a5,0x39e7,0x3a07,0x4207,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x4227,0x4227,0x39e6,0x39e7,0x4207,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x39c6,0x4227,0x39e7,0x4207,0x4227,0x3a07,0x31c6,0x39e7,0x4207,0x4207,0x3a07,0x39c6,0x3a07,0x3a07,0x31c6,0x31c6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x31a6,0x39e7,0x31a6,0x39c6,0x39e6,0x31c6,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4227,0x4227,0x39e6,0x3a27,0x3a07,0x31c6,0x39e7,0x3a07,0x3a07,0x39c6,0x31c6,0x4228,0x3a07,0x31c6,0x3a07,0x31c6,0x3a27,0x3a07,0x39e7,0x39c6,0x3a07,0x31e6,0x4248,0x3a07,0x39e7,0x3a07,0x39e7,0x39c6,0x4228,0x39e7,0x39e7,0x31c6,0x4207,0x4227,0x39c6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a27,0x3a27,0x4227,0x3a07,0x3a07,0x4248,0x4227,0x3a07,0x4228,0x3a07,0x31e7,0x31c6,0x39e7,0x39e7,0x39e6,0x3a07,0x3a07,0x39e7,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x4248,0x39e7,0x31e7,0x31c6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x4a68,0x4228,0x4207,0x3a07,0x3a07,0x31c6,0x39e7,0x31c7,0x3a28,0x4228,0x31e7,0x4228,0x3a07,0x4248,0x3a07,0x4207,0x4228,0x4248,0x3a27,0x4228,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x39e7,0x4207,0x4a68,0x4228,0x4207,0x4a68,0x4269,0x4228,0x3a07,0x4248,0x4228,0x3a07,0x4207,0x4228,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x4228,0x4248,0x4228,0x3a08,0x4228,0x4228,0x3a07,0x4208,0x4228,0x4a49,0x4228,0x4228,0x3a08,0x4248,0x4248,0x4248,0x4228,0x4248,0x5289,0x4228,0x4a48,0x4207,0x4248,0x4207,0x4208,0x4248,0x4a48,0x4a69,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x4208,0x4208,0x4a69,0x4228,0x4208,0x4248,0x39c6,0x4207,0x4a49,0x3a07,0x4228,0x4a49,0x4228,0x4a49,0x4228,0x4207,0x4228,0x4228,0x4228,0x4248,0x4248,0x3a07,0x4248,0x4207,0x4a49,0x4a69,0x4207,0x4208,0x4a49,0x4248,0x4248,0x4a69,0x4228,0x4228,0x4208,0x4248,0x4248,0x4a69,0x4228,0x3a07,0x4228,0x4a89,0x4228,0x4228,0x4228,0x3a07,0x4a48,0x4228,0x4228,0x4248,0x4228,0x4228,0x4248,0x4228,0x4228,0x4a49,0x4a69,0x4228,0x31a7,0x4228,0x4208,0x4208,0x4249,0x4208,0x4228,0x4248,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e7,0x4248,0x39e7,0x4a69,0x4208,0x3a07,0x4a49,0x4a49,0x4a49,0x4228,0x31c7,0x4a69,0x3a08,0x39e7,0x4208,0x4228,0x31c7,0x4208,0x4208,0x31a6,0x39e7, +0x31a6,0x4248,0x4207,0x31c6,0x4208,0x3a07,0x39c6,0x39e7,0x4227,0x3a07,0x3a07,0x39e7,0x31c6,0x4228,0x3a07,0x4248,0x4227,0x3a07,0x31c6,0x4207,0x4227,0x39e6,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x31a6,0x39c6,0x3a07,0x39c6,0x31c6,0x3a07,0x31a6,0x3a07,0x3a07,0x4227,0x39e6,0x39e7,0x31c6,0x39e6,0x31a6,0x39e7,0x31c6,0x31c6,0x39c6,0x39c6,0x39e7,0x3a07,0x39e6,0x39e7,0x39e7,0x31c6,0x39c6,0x39e6,0x31c6,0x31c6,0x31c6,0x39e7,0x4207,0x39c6,0x31a6,0x31c6,0x39e7,0x3a07,0x31c6,0x39e7,0x4228,0x3a07,0x4207,0x39e6,0x39e7,0x39e6,0x29a5,0x39e7,0x3a07,0x39e6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x31a6,0x39e7,0x31a5,0x31c6,0x4227,0x4228,0x3a07,0x31a6,0x4207,0x39e7,0x4207,0x39e6,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x31e6,0x39e7,0x3a27,0x3a07,0x39e7,0x39c6,0x39e7,0x39e7,0x3a28,0x39e7,0x3a07,0x31c6,0x3a07,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x31c6,0x31c6,0x3a07,0x31c6,0x39e7,0x31a6,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x4248,0x4a48,0x3a07,0x3a07,0x4208,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x3a07,0x4227,0x3a27,0x4a68,0x39e7,0x3a08,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4207,0x4208,0x4a48,0x4227,0x4227,0x4228,0x4269,0x3a07,0x3a07,0x4228,0x4228,0x3a07,0x4208,0x39e7,0x4228,0x4228,0x3a07,0x4207,0x39e7,0x3a08,0x3a07,0x39e7,0x4208,0x4228,0x4228,0x4248,0x39e7,0x3a07,0x4228,0x4207,0x4248,0x4248,0x4228,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4208,0x4248,0x4a48,0x4248,0x4a49,0x4228,0x4a69,0x4228,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a49,0x4a69,0x4248,0x4248,0x4a48,0x4228,0x3a07,0x4a69,0x4a69,0x3a07,0x4a48,0x4208,0x4208,0x4228,0x4228,0x4a48,0x4248,0x4a69,0x4a69,0x4248,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x4208,0x4207,0x4a48,0x4207,0x4208,0x5289,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a89,0x4207,0x4228,0x4a69,0x5289,0x4248,0x4248,0x4228,0x4a69,0x4228,0x4228,0x4248,0x4248,0x3a07,0x4208,0x4248,0x4228,0x4228,0x4a48,0x4a49,0x3a07,0x4208,0x4248,0x4248,0x4228,0x4208,0x4a49,0x4a69,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a48,0x4208,0x31c6,0x39e7,0x3a07,0x4248,0x4248,0x39c7,0x39e7,0x3a07,0x4208,0x4228,0x31c6,0x3a07,0x4208,0x4207,0x4208,0x39e7,0x31a6,0x4208,0x4a49,0x39e7,0x31c7, +0x39e7,0x4207,0x3a07,0x39e7,0x31a6,0x39c6,0x39e7,0x39e6,0x4a48,0x39e6,0x3a07,0x39e7,0x31c6,0x39c6,0x39c6,0x4207,0x4207,0x4227,0x4207,0x39c6,0x39e7,0x4248,0x4227,0x31c6,0x4227,0x39e7,0x3a07,0x31c6,0x31a6,0x31c6,0x39e7,0x39c6,0x4227,0x39e7,0x3a07,0x3a07,0x39e6,0x31c6,0x4207,0x39e6,0x39e7,0x31c6,0x39e6,0x31a6,0x39c6,0x31a6,0x39e7,0x31a5,0x39c6,0x4247,0x4227,0x39e7,0x31c6,0x31e6,0x4248,0x2985,0x4207,0x39e7,0x39e7,0x4227,0x2985,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x4227,0x39c6,0x39e6,0x31a6,0x31a6,0x31a6,0x4228,0x3a27,0x3a07,0x39e7,0x39e7,0x4207,0x3a07,0x31e6,0x39e7,0x3a07,0x3a07,0x39e6,0x31c6,0x4228,0x4248,0x3a07,0x31e6,0x3a07,0x3a07,0x3a07,0x4228,0x4248,0x4227,0x4228,0x3a07,0x4207,0x3a08,0x3a07,0x3a07,0x39e7,0x3a28,0x3a07,0x39e7,0x3a07,0x39e6,0x4207,0x31c6,0x31c6,0x4227,0x3a07,0x31e6,0x31e6,0x3a07,0x31a6,0x3a07,0x4228,0x39e7,0x2985,0x39e7,0x39e7,0x3a07,0x4227,0x3a07,0x4228,0x39e6,0x3a07,0x4227,0x39e7,0x39e7,0x31c6,0x31e7,0x4228,0x4227,0x4228,0x31c6,0x3a07,0x4248,0x4228,0x4207,0x4227,0x39c6,0x39e7,0x39e7,0x3a07,0x4208,0x39e7,0x39e7,0x39e7,0x3185,0x39c6,0x4228,0x31a6,0x31c6,0x3a07,0x3a27,0x4227,0x4248,0x39c6,0x4228,0x4248,0x39e7,0x4248,0x4248,0x39e7,0x3a07,0x4227,0x4248,0x4228,0x4228,0x39e7,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4207,0x4248,0x4248,0x4208,0x4248,0x4228,0x3a07,0x39e7,0x4227,0x4a68,0x4227,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x4a68,0x4228,0x39e7,0x4248,0x4248,0x3a07,0x4228,0x4227,0x4228,0x4208,0x4228,0x4248,0x4a48,0x4228,0x4228,0x4228,0x4208,0x4228,0x4248,0x4248,0x4248,0x4a49,0x4a69,0x4a69,0x4248,0x4a89,0x4a69,0x4248,0x4249,0x4aaa,0x4269,0x4228,0x4228,0x4a69,0x4a48,0x3a07,0x4a49,0x4a69,0x4a69,0x4228,0x4a49,0x3a07,0x4a69,0x4a89,0x4a69,0x4a48,0x52aa,0x52aa,0x4a89,0x4248,0x3a28,0x4228,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4208,0x4228,0x4228,0x52ca,0x4a89,0x4228,0x4a69,0x4a69,0x52aa,0x4248,0x4248,0x4228,0x4248,0x5289,0x4248,0x4a48,0x4248,0x4228,0x4249,0x4248,0x52a9,0x4a48,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x4228,0x4248,0x39e7,0x4a69,0x4228,0x4207,0x39e7,0x4228,0x4248,0x3a07,0x4208,0x4a49,0x3a07,0x4207,0x4207,0x4228,0x4228,0x4227,0x4a48,0x4248,0x52a9,0x4207,0x31c6,0x4a48,0x31a6,0x4228,0x4a48,0x31a6,0x3a07,0x5289,0x4a68,0x4207,0x4a48,0x31a6,0x39e7,0x3a08,0x4208,0x3a08, +0x3a07,0x3a07,0x4207,0x39e6,0x2985,0x39c6,0x4a48,0x3a07,0x39e6,0x3a07,0x39c6,0x39e7,0x3a07,0x39e6,0x39e7,0x39e7,0x3a07,0x39e6,0x31c6,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x31a6,0x39e7,0x31a6,0x31c6,0x4207,0x31a6,0x2965,0x4207,0x4227,0x31c6,0x39e7,0x3a07,0x39c6,0x39e7,0x3a07,0x4248,0x4207,0x4227,0x31e6,0x31c6,0x31a6,0x39e6,0x31a6,0x31c6,0x3a07,0x4207,0x39e7,0x31a6,0x31a6,0x52a9,0x31a4,0x4248,0x3a06,0x39e6,0x4a68,0x3185,0x31c6,0x39e6,0x39e6,0x39e6,0x3a07,0x3a07,0x39e6,0x31e6,0x3a07,0x39c6,0x39e6,0x4207,0x39e6,0x39e7,0x4227,0x31c6,0x31c6,0x39e6,0x4228,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x3a07,0x3a07,0x3a27,0x3a27,0x39e7,0x31e6,0x3a27,0x3a07,0x4248,0x4227,0x3a07,0x4228,0x3a07,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x3a27,0x3a07,0x31e6,0x3a07,0x4a48,0x39e7,0x4268,0x52c9,0x4a47,0x52a8,0x4207,0x3a27,0x39e7,0x31a6,0x4248,0x4228,0x4228,0x4a89,0x4a68,0x4247,0x4248,0x52a8,0x4a67,0x4a89,0x4a89,0x4227,0x632b,0x39e6,0x39c6,0x39e7,0x31c7,0x39e7,0x31e7,0x3a07,0x3a07,0x4228,0x4207,0x3a07,0x39e7,0x39c6,0x3a07,0x4a48,0x4228,0x4248,0x4228,0x3a07,0x4248,0x39e7,0x3185,0x4207,0x4227,0x4a89,0x39e6,0x4228,0x39c6,0x31c6,0x4227,0x5266,0x3a06,0x4a88,0x3a07,0x4a68,0x4207,0x4248,0x4268,0x4248,0x4228,0x4248,0x4227,0x4207,0x4228,0x4248,0x4227,0x3a27,0x4228,0x4228,0x39e7,0x39e7,0x4207,0x4228,0x4248,0x31c6,0x4248,0x4a89,0x4227,0x4228,0x39c6,0x4248,0x4248,0x3a07,0x4a68,0x4247,0x4227,0x4a69,0x4a48,0x4248,0x4228,0x4a69,0x4a68,0x4227,0x4a49,0x4248,0x52ca,0x4a48,0x5ac9,0x4248,0x4228,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4a48,0x4248,0x4248,0x4248,0x4a49,0x528a,0x4248,0x4207,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x4208,0x528a,0x4a89,0x4a49,0x4248,0x4228,0x4a69,0x4a48,0x4248,0x4a49,0x4a69,0x4228,0x4a89,0x4a69,0x3a07,0x4a89,0x4a89,0x4248,0x4a69,0x4a48,0x4a89,0x4a89,0x4228,0x4228,0x4208,0x4207,0x6b8d,0x6b8c,0x634b,0x5aea,0x52ca,0x5aea,0x52ca,0x5aca,0x6b4c,0x52a9,0x4a69,0x4228,0x4a69,0x4248,0x4a68,0x4a69,0x4228,0x4a48,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4248,0x4228,0x4228,0x4248,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4a89,0x3a28,0x4248,0x4228,0x3a07,0x39e7,0x4228,0x4a48,0x31a5,0x52a9,0x52a9,0x4a68,0x4247,0x4226,0x5ac8,0x39c6,0x3185,0x4a68,0x4227,0x39e6,0x4207,0x4227,0x39e6,0x39e6,0x4248,0x3a07,0x4a48,0x2985,0x4208,0x4228,0x39c7,0x39e7, +0x39e7,0x39c6,0x39e6,0x31c6,0x39e7,0x3a07,0x3a07,0x31a6,0x39e6,0x3a07,0x3a07,0x39c6,0x4227,0x4248,0x3a07,0x3a07,0x39c6,0x39c6,0x4a68,0x3a07,0x31c6,0x31c6,0x39c6,0x4207,0x39c6,0x39e6,0x39e7,0x39c6,0x3a07,0x39e6,0x31a6,0x39e7,0x39c6,0x39e6,0x3a07,0x31a6,0x39e7,0x3a07,0x31c6,0x31a6,0x3a07,0x39e6,0x39e7,0x4248,0x3a07,0x3186,0x31a6,0x4208,0x39e7,0x31c6,0x39c6,0x31c6,0x39c6,0x2985,0x4a68,0x31a5,0x4228,0x3a07,0x4228,0x4a68,0x2985,0x3a07,0x3a07,0x31c6,0x31a6,0x39e6,0x39e6,0x31a5,0x4227,0x39e7,0x4207,0x4a68,0x3a07,0x31c6,0x4248,0x39e7,0x3185,0x39c6,0x39e7,0x3a07,0x4228,0x31c6,0x39e6,0x3a07,0x4227,0x3a27,0x3a07,0x39e7,0x31e6,0x4248,0x3a07,0x4228,0x31c6,0x4228,0x3a07,0x31c6,0x3a27,0x4207,0x3a07,0x31c6,0x3a28,0x31c6,0x3a28,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x31c7,0x31c6,0x4248,0x4248,0x4248,0x4227,0x4248,0x39e7,0x39e7,0x4227,0x39e6,0x3a07,0x3a07,0x3a07,0x4248,0x31c6,0x4247,0x4207,0x39e6,0x4a69,0x31a6,0x4a88,0x4207,0x39e7,0x3a07,0x3a07,0x31e6,0x3a07,0x3a07,0x31c6,0x4207,0x3a07,0x3a07,0x39c7,0x3a07,0x4228,0x4228,0x4228,0x4207,0x3a08,0x4248,0x4207,0x4227,0x39c6,0x4248,0x39e6,0x4207,0x39e7,0x5ae9,0x4a66,0x5286,0x4a67,0x5ae9,0x39e7,0x52a8,0x4a87,0x4247,0x4248,0x4248,0x4248,0x4a68,0x4248,0x4268,0x4228,0x4228,0x3a07,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4248,0x4248,0x4227,0x39e7,0x4a48,0x4228,0x4228,0x4228,0x4248,0x4a48,0x4248,0x4248,0x5289,0x4a88,0x39e7,0x4248,0x5289,0x4207,0x4a48,0x4228,0x4248,0x528a,0x4227,0x4a69,0x4a68,0x5288,0x4228,0x4207,0x4228,0x4a69,0x4228,0x4a48,0x4a49,0x4a69,0x4a49,0x4a69,0x4a69,0x4248,0x4248,0x4a49,0x4228,0x4a48,0x4a89,0x4a49,0x4a48,0x4a69,0x4228,0x4a69,0x4248,0x4248,0x4a69,0x4228,0x5289,0x5289,0x4248,0x4228,0x4228,0x4a48,0x4a69,0x5289,0x4a49,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4249,0x4a49,0x4248,0x632b,0x738d,0x6b8c,0x52a9,0x5b0b,0x6b6d,0x5aeb,0x4a69,0x5aeb,0x52ca,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x4228,0x4249,0x4248,0x4a89,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4228,0x4228,0x4a48,0x4228,0x4228,0x4207,0x4248,0x39e7,0x4208,0x4248,0x4228,0x39e7,0x3a07,0x4208,0x3a07,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x5288,0x4a68,0x5288,0x5aa8,0x4a68,0x4a68,0x4a48,0x4a89,0x4207,0x4228,0x4a89,0x4207,0x39e7,0x52aa,0x4a69,0x4a69,0x4228,0x4248,0x4228,0x39e7,0x3a08, +0x39e7,0x31a6,0x39e7,0x3a07,0x39e6,0x4227,0x39e7,0x4a48,0x4227,0x3a07,0x39e6,0x4207,0x39e7,0x3a07,0x4227,0x3a07,0x4208,0x3a07,0x4227,0x4227,0x31a6,0x4248,0x4207,0x31c6,0x39e7,0x4228,0x4227,0x4228,0x4207,0x39e6,0x3185,0x3a07,0x3a07,0x39e7,0x39e7,0x4227,0x39e6,0x31c6,0x39c6,0x39c6,0x39e7,0x4207,0x3a07,0x39e6,0x31a6,0x39c6,0x4a48,0x39e6,0x39e6,0x4a47,0x39e6,0x4248,0x4228,0x39c6,0x3186,0x31a5,0x31c6,0x39c6,0x39c7,0x31e7,0x31a6,0x39e7,0x39e7,0x3a07,0x39c6,0x39c6,0x3185,0x31a5,0x31c6,0x31c6,0x3a07,0x39e7,0x39c6,0x3a07,0x3a07,0x3a07,0x39c6,0x3a07,0x39e6,0x3a07,0x3a07,0x39e7,0x39e7,0x31c6,0x39e7,0x4248,0x39e7,0x39e6,0x39e7,0x3a07,0x3a07,0x4228,0x31c6,0x4248,0x39e7,0x4228,0x39e7,0x31e7,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a07,0x39e7,0x29a6,0x31c6,0x39e7,0x39e6,0x3a07,0x39e7,0x31c6,0x39e7,0x3a07,0x4228,0x31c6,0x4228,0x3a07,0x31c6,0x31c6,0x4228,0x4207,0x39e7,0x3a08,0x39e6,0x31c6,0x39e7,0x39e6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x4228,0x39e7,0x4207,0x4207,0x4248,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x39e7,0x31a7,0x31c6,0x39c6,0x4228,0x4a68,0x4a48,0x4207,0x4a48,0x4248,0x4247,0x4248,0x4a68,0x4227,0x4228,0x4248,0x3a07,0x4228,0x4227,0x4207,0x4228,0x4228,0x3a07,0x4248,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4208,0x4a49,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x4228,0x4207,0x4228,0x4207,0x4248,0x4208,0x4207,0x4227,0x4227,0x3a08,0x4248,0x4208,0x4228,0x4248,0x4208,0x4a69,0x4248,0x3a07,0x4228,0x4208,0x4228,0x4208,0x4228,0x4a89,0x4248,0x4248,0x4248,0x4a89,0x4248,0x4a69,0x4a69,0x4a48,0x4a69,0x4a89,0x4a8a,0x528a,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4248,0x4228,0x4248,0x4228,0x4a69,0x528a,0x528a,0x4228,0x4a89,0x4a69,0x4208,0x4a69,0x4a69,0x4208,0x4a69,0x4a89,0x4a69,0x52aa,0x3a07,0x4207,0x4228,0x630b,0x4a49,0x52aa,0x5aeb,0x4a69,0x4a69,0x52a9,0x4228,0x4a69,0x4a69,0x4a89,0x52aa,0x3a08,0x4a89,0x4a89,0x4228,0x4a69,0x4a89,0x4a69,0x4228,0x4228,0x4a69,0x4a48,0x4248,0x4a48,0x3a07,0x4228,0x3a07,0x4a49,0x4228,0x4208,0x4208,0x4228,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4248,0x4a89,0x4228,0x39e7,0x3a07,0x39e7,0x4228,0x4a48,0x4a68,0x3a06,0x4228,0x4208,0x4228,0x39c7,0x3a07,0x4208,0x4a49,0x4a49,0x4a69,0x4228,0x528a,0x528a,0x4228,0x3a08,0x4249, +0x39e7,0x3a07,0x4207,0x4227,0x39e6,0x39e6,0x3a07,0x4207,0x3a07,0x39e6,0x31a6,0x3a07,0x4207,0x39c6,0x4248,0x39e7,0x39e7,0x39e7,0x3a07,0x39e6,0x3a27,0x4a68,0x3a07,0x4228,0x3a07,0x4248,0x4227,0x3a07,0x4227,0x3a07,0x31a6,0x39e6,0x39e7,0x39e6,0x39e7,0x4207,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x4207,0x31a6,0x5289,0x52a9,0x4a67,0x52a8,0x52a8,0x52a8,0x39e6,0x3a06,0x4a68,0x4a47,0x4207,0x3a06,0x4206,0x4247,0x39e7,0x4248,0x4a48,0x4227,0x4248,0x4a48,0x39e7,0x4227,0x31a5,0x4a48,0x3a26,0x4247,0x31c6,0x3a07,0x4228,0x3a27,0x3a07,0x39e7,0x39e7,0x31a6,0x4207,0x3a07,0x4a89,0x4248,0x4228,0x4227,0x4227,0x4228,0x39e7,0x39c7,0x3a28,0x4228,0x3a07,0x4248,0x3a07,0x3a07,0x3a08,0x3a07,0x31c6,0x3a07,0x4228,0x39e7,0x4228,0x3a07,0x31e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a28,0x3a28,0x39e7,0x31a6,0x31e7,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x31e6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x4228,0x31e6,0x31a5,0x4227,0x4227,0x39e7,0x39e7,0x39e6,0x3a27,0x4248,0x39e7,0x31c7,0x4228,0x3a07,0x3a27,0x3a07,0x4228,0x3a07,0x4228,0x3a07,0x4207,0x4228,0x4228,0x3a27,0x39e7,0x4227,0x4a68,0x4207,0x4248,0x31e7,0x3a28,0x4228,0x3a07,0x4228,0x4268,0x4228,0x4248,0x4207,0x4248,0x4a68,0x4248,0x4248,0x4a48,0x4a48,0x4248,0x4268,0x4248,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4248,0x39e7,0x4207,0x4207,0x4208,0x31a6,0x39e7,0x4228,0x3a07,0x4207,0x4228,0x4228,0x3a07,0x4228,0x4208,0x4207,0x4228,0x4207,0x3a07,0x4248,0x4228,0x4248,0x4228,0x4228,0x39e7,0x4a69,0x4248,0x4248,0x3a28,0x4a69,0x4228,0x4269,0x3a07,0x4a69,0x4a69,0x4248,0x4228,0x4a89,0x4228,0x4a69,0x4a89,0x4a49,0x4a49,0x4a49,0x4248,0x4248,0x4a69,0x4a89,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x4a89,0x4269,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x3a07,0x4248,0x4228,0x52aa,0x52aa,0x630b,0x6b4c,0x52a9,0x632b,0x6b8c,0x5289,0x634c,0x7bee,0x6b8d,0x632b,0x73cd,0x632b,0x73ad,0x6b6c,0x5289,0x52aa,0x52a9,0x52a9,0x4a69,0x5289,0x4a68,0x52aa,0x4a69,0x4a89,0x630b,0x5289,0x4a68,0x4a69,0x4a69,0x4a89,0x4a48,0x4a68,0x4228,0x4207,0x4248,0x4228,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4a69,0x4a69,0x4248,0x4228,0x4228,0x3a07,0x4208,0x4228,0x4248,0x3a07,0x4207,0x4208,0x3a07,0x4228,0x4a69,0x5289,0x4a47,0x4206,0x5aea,0x52a9,0x4a68,0x3a07,0x5289,0x39e7,0x4228,0x4228,0x5289,0x4a69,0x4a69,0x4a49,0x4207,0x39c7, +0x3a07,0x4227,0x3a07,0x4207,0x39e7,0x39e7,0x4207,0x4227,0x4207,0x4227,0x3a07,0x39c6,0x3a07,0x3a07,0x4207,0x4207,0x3a07,0x3a07,0x4227,0x4227,0x4207,0x4a48,0x4a68,0x4268,0x4227,0x4248,0x4227,0x39e7,0x39e6,0x39e7,0x4a48,0x4207,0x39e7,0x39e7,0x4a68,0x3a07,0x31a6,0x4207,0x4a68,0x3a07,0x39e7,0x39c6,0x4227,0x31a6,0x4228,0x4227,0x4a48,0x4207,0x4247,0x52c9,0x4a67,0x4a68,0x39e7,0x4a88,0x4a48,0x4227,0x39e6,0x4a88,0x4227,0x39e7,0x4a68,0x4a68,0x39e6,0x4a48,0x31a6,0x4a48,0x39e6,0x4227,0x4a48,0x4a68,0x2965,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x31c6,0x3a07,0x3a27,0x4228,0x31e6,0x31c6,0x3a07,0x4228,0x4228,0x4227,0x3a07,0x39e7,0x3a07,0x4248,0x4248,0x3a08,0x31e7,0x31e7,0x3a07,0x39e7,0x31e6,0x31a6,0x39e7,0x39e7,0x4228,0x3a07,0x31c7,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x39c6,0x39e7,0x31c6,0x31c6,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x31c6,0x3a07,0x4248,0x39e7,0x39e7,0x4228,0x4227,0x39e6,0x4227,0x4207,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x3a27,0x3a07,0x3a28,0x4228,0x3a07,0x4248,0x4248,0x3a07,0x4228,0x4248,0x4228,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x3a07,0x39e7,0x3a28,0x4228,0x4228,0x3a07,0x39e7,0x3a28,0x3a27,0x4a68,0x4248,0x4228,0x4a69,0x4a89,0x4a69,0x4248,0x4a68,0x4a89,0x4a68,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a68,0x3a07,0x4a69,0x4248,0x4207,0x4a48,0x4a69,0x39e7,0x4a48,0x3a07,0x39e7,0x4228,0x4248,0x4227,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4a89,0x4a69,0x4a48,0x4228,0x4a48,0x4228,0x39c6,0x4a89,0x4a48,0x4228,0x4248,0x4228,0x4228,0x4269,0x4248,0x4a69,0x4a69,0x4a69,0x4a49,0x528a,0x4248,0x4a69,0x528a,0x4248,0x5289,0x4a49,0x4228,0x4a89,0x528a,0x4a49,0x4a89,0x4a89,0x4208,0x4a89,0x52aa,0x4248,0x4a48,0x4a69,0x4208,0x4248,0x4248,0x4a68,0x4248,0x4228,0x4228,0x4a48,0x4228,0x4a69,0x632b,0x6b4c,0x630b,0x6b8c,0x73ad,0x6b6c,0x632b,0x6b6c,0x8c91,0x634c,0x5b0a,0x5b0a,0x7bee,0x6b8d,0x5aca,0x6b6c,0x5aea,0x5289,0x52a9,0x52a9,0x52a9,0x52ca,0x52a9,0x5aca,0x5aea,0x4a68,0x4228,0x4a69,0x4a89,0x4a69,0x4a69,0x4207,0x4a69,0x4228,0x4248,0x4a49,0x4208,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4248,0x4228,0x4228,0x4a69,0x4248,0x4a49,0x4a69,0x3a07,0x39e7,0x4228,0x4a69,0x4228,0x4207,0x4228,0x4a68,0x4a48,0x4227,0x632a,0x5ac8,0x5288,0x39c6,0x4207,0x4248,0x39e7,0x3a07,0x4a49,0x4a69,0x4207,0x4207,0x4228,0x31c7, +0x4227,0x4a89,0x4248,0x39e6,0x39c6,0x4207,0x4a48,0x4248,0x39c6,0x4227,0x4228,0x4228,0x4207,0x4a68,0x39e7,0x39e6,0x4a68,0x4227,0x4227,0x4248,0x3a07,0x39e7,0x4a68,0x4268,0x4a68,0x4227,0x4207,0x39e6,0x4228,0x3a07,0x39c6,0x39c6,0x3a07,0x31c6,0x4248,0x4227,0x31c6,0x39e7,0x31a6,0x39e6,0x39e7,0x31a6,0x39e7,0x39e7,0x39c7,0x39c6,0x4227,0x39e7,0x31c6,0x4227,0x39e6,0x4a68,0x3a07,0x4a48,0x4227,0x4228,0x4227,0x39e6,0x3a07,0x39e7,0x3a07,0x4248,0x31a6,0x4227,0x31a6,0x39e7,0x31c6,0x4207,0x4227,0x4a68,0x3a07,0x39e7,0x31c6,0x31c6,0x39e7,0x3a07,0x39e7,0x4227,0x3a07,0x3a07,0x4248,0x4227,0x3a07,0x4207,0x3a07,0x3a07,0x4228,0x4227,0x3a07,0x3a07,0x3a27,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x4228,0x3a28,0x3a07,0x39e7,0x4228,0x3a07,0x4248,0x3a07,0x39e7,0x31c6,0x39e7,0x3a07,0x39c6,0x31c6,0x3a07,0x31e7,0x39e7,0x3a28,0x31c6,0x39e7,0x31c6,0x3a07,0x4228,0x4248,0x3a07,0x3a07,0x3a08,0x4248,0x3a07,0x39e7,0x4228,0x3a07,0x3a07,0x31e6,0x4248,0x4227,0x3a07,0x4227,0x4248,0x39e7,0x4228,0x4227,0x3a07,0x39e7,0x39e7,0x3a07,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x31e6,0x39e7,0x4228,0x39e7,0x4208,0x3a07,0x4248,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x4248,0x4a48,0x4248,0x4248,0x4a48,0x52aa,0x4248,0x4a48,0x4228,0x4248,0x4248,0x4248,0x4248,0x4a48,0x4228,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4228,0x4228,0x3a07,0x4a69,0x3a07,0x4228,0x39e7,0x3a07,0x4227,0x4228,0x4228,0x4228,0x4207,0x4228,0x4228,0x4228,0x4a69,0x4a49,0x4a69,0x4228,0x4248,0x4a49,0x39e7,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4208,0x4a49,0x4a69,0x52aa,0x4248,0x4a69,0x4a69,0x4a89,0x5aeb,0x4269,0x528a,0x52aa,0x3a07,0x52aa,0x4a69,0x5289,0x4a89,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x5acb,0x6b4c,0x4a48,0x52a9,0x6b6c,0x5aea,0x4a69,0x4a69,0x52aa,0x52ca,0x52ca,0x4a69,0x4a68,0x4a89,0x4a68,0x5aca,0x632b,0x4a69,0x5aea,0x5aeb,0x52a9,0x630b,0x52aa,0x632c,0x5aea,0x632b,0x634c,0x4a69,0x5289,0x5289,0x4248,0x4a48,0x4a89,0x4a69,0x4a49,0x4a48,0x4228,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x4a89,0x4228,0x4a89,0x528a,0x4228,0x4208,0x3a08,0x4228,0x4228,0x4a69,0x4a69,0x39e7,0x4a69,0x4228,0x4a48,0x52a9,0x52ca,0x4a48,0x4a68,0x5289,0x4228,0x4228,0x4228,0x4a48,0x4a69,0x4228,0x39c6,0x3a07,0x4228,0x4228,0x39e7, +0x4227,0x4a48,0x4a68,0x4a48,0x4227,0x4a48,0x4247,0x4247,0x4228,0x4a48,0x4228,0x4248,0x4248,0x4248,0x4a68,0x4227,0x4227,0x39c6,0x3a07,0x4207,0x4207,0x4227,0x3a07,0x4227,0x4a69,0x4207,0x4228,0x39e6,0x39e6,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x4248,0x4207,0x31c6,0x39c6,0x2964,0x3a07,0x4228,0x31a6,0x39e7,0x3a07,0x39e7,0x39e7,0x4207,0x4228,0x39e7,0x3a07,0x39e7,0x39c6,0x4207,0x3a07,0x3a27,0x39e6,0x4207,0x4227,0x4248,0x3a07,0x31e6,0x31c6,0x3a07,0x31c6,0x3a07,0x39e6,0x31c6,0x39e7,0x31c6,0x31c6,0x3a07,0x39e7,0x4228,0x4207,0x3a07,0x3a07,0x31a6,0x4207,0x4227,0x3a07,0x3a27,0x39e7,0x39c6,0x39e6,0x31c6,0x4227,0x4248,0x3a07,0x3a27,0x4228,0x4a68,0x3a28,0x31c6,0x39c7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a27,0x3a07,0x3a07,0x4a69,0x4228,0x39e7,0x39e7,0x3a07,0x31c6,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x31c6,0x31c6,0x4228,0x4248,0x4228,0x3a28,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x4207,0x4227,0x4227,0x4207,0x4228,0x3a07,0x4a48,0x4207,0x31a6,0x4228,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x4228,0x4228,0x4228,0x39e7,0x3a28,0x3a07,0x4228,0x4268,0x3a07,0x3a28,0x3a07,0x3a07,0x4a69,0x4a49,0x4228,0x3a07,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4207,0x4248,0x4a69,0x4a48,0x4a68,0x4a68,0x4248,0x4228,0x4228,0x4248,0x4228,0x4228,0x4a48,0x4a49,0x4228,0x4a68,0x4248,0x4228,0x4a69,0x4248,0x4248,0x4228,0x4228,0x3a08,0x4248,0x4a49,0x4208,0x4207,0x4228,0x4a48,0x4228,0x4248,0x4a69,0x4228,0x3a07,0x4228,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4a8a,0x4249,0x4a69,0x4248,0x4269,0x4a69,0x4a68,0x4a69,0x4a89,0x4248,0x4a69,0x4a69,0x4a89,0x4a69,0x4a48,0x4a89,0x4249,0x4a89,0x4a89,0x5289,0x4228,0x4248,0x4269,0x4248,0x4a89,0x528a,0x4a48,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a48,0x4a69,0x4a69,0x52ca,0x52ca,0x4228,0x4a69,0x4a69,0x4228,0x4228,0x52aa,0x52ca,0x4249,0x4228,0x52aa,0x4228,0x4a69,0x5289,0x528a,0x4a69,0x4228,0x52aa,0x5289,0x4248,0x4228,0x4a48,0x4a69,0x4a69,0x4228,0x4a69,0x4a48,0x4228,0x4a69,0x4a69,0x52a9,0x4a69,0x4a69,0x4a69,0x4a48,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a69,0x4a69,0x4228,0x4a89,0x4207,0x4a69,0x4a69,0x39e7,0x4a69,0x3a07,0x4228,0x4228,0x39e7,0x4228,0x39e7,0x4a48,0x4248,0x4208,0x4a48,0x4228,0x39e7,0x4227,0x52a9,0x4248,0x4a49,0x5289,0x4228,0x4228,0x4a48,0x52aa,0x4a69,0x4207,0x39e7,0x39e7,0x4a89,0x4228,0x39e7, +0x39e7,0x31c6,0x4227,0x4227,0x4a48,0x4a48,0x4227,0x4227,0x3a07,0x4248,0x39e7,0x3a07,0x4228,0x3a07,0x4228,0x4227,0x52a9,0x5289,0x3a07,0x39e7,0x3a07,0x4227,0x4248,0x4248,0x4228,0x39e7,0x4228,0x39e7,0x3a07,0x39e7,0x4207,0x4227,0x4227,0x39c6,0x4207,0x4227,0x4248,0x4228,0x4227,0x3a07,0x3a07,0x3a07,0x4207,0x39e6,0x39e7,0x4227,0x3a07,0x3a07,0x3a07,0x39e7,0x4227,0x4248,0x3a07,0x39e7,0x31a6,0x4227,0x4227,0x4207,0x31c6,0x4227,0x4a68,0x39e6,0x4227,0x3a07,0x39e7,0x39e6,0x3a07,0x39e7,0x39c6,0x4207,0x39e6,0x3a07,0x4228,0x4248,0x4227,0x3a07,0x31c6,0x39e7,0x4227,0x4227,0x4228,0x4207,0x4207,0x4227,0x3a07,0x4248,0x4268,0x4228,0x4228,0x39e7,0x4228,0x4268,0x3a07,0x39e7,0x3a28,0x4228,0x3a28,0x3a07,0x4248,0x3a07,0x3a07,0x3a07,0x4228,0x31c6,0x39e7,0x39e7,0x4228,0x3185,0x3a27,0x4248,0x3a07,0x39e7,0x3a07,0x4228,0x4227,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x3a07,0x3a07,0x3a27,0x3a07,0x3a07,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4a68,0x3a07,0x4228,0x3a07,0x4228,0x4227,0x4227,0x4228,0x4248,0x4228,0x4228,0x4208,0x4228,0x3a27,0x3a07,0x4228,0x4248,0x39e7,0x39e7,0x4228,0x4a69,0x4208,0x4208,0x4208,0x3a07,0x4248,0x4a48,0x4228,0x4228,0x4248,0x4248,0x4248,0x4a48,0x4a68,0x52a9,0x4227,0x4227,0x4a48,0x4a68,0x4248,0x4228,0x4248,0x4248,0x4a89,0x4a48,0x4248,0x4a89,0x4248,0x4a69,0x4a48,0x4a69,0x4a69,0x4248,0x4a49,0x4248,0x4a68,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a89,0x4248,0x4248,0x4a48,0x4a69,0x4a69,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4a49,0x4a89,0x4a69,0x52aa,0x4a69,0x4a49,0x4a69,0x5aeb,0x52a9,0x4a89,0x4228,0x4207,0x4228,0x4a69,0x52aa,0x4a8a,0x4a89,0x4a49,0x52aa,0x4248,0x4248,0x4248,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x39e7,0x4248,0x4a69,0x5289,0x4a89,0x4a49,0x4248,0x4a69,0x4a89,0x4a89,0x4228,0x4a48,0x4a48,0x4a48,0x52aa,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4a89,0x5289,0x4a49,0x4228,0x4208,0x4a69,0x4a69,0x4a69,0x4a89,0x4228,0x4a69,0x4a89,0x4228,0x4248,0x4208,0x4a48,0x52aa,0x4228,0x4228,0x4a89,0x4a89,0x528a,0x4a69,0x4a49,0x4a89,0x4228,0x4228,0x4a69,0x4269,0x5aeb,0x4a89,0x4228,0x4a69,0x4228,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4a69,0x52aa,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4228,0x4207,0x4228,0x4a89,0x4228,0x4208,0x4228,0x39e7,0x4a49,0x5289,0x4a48,0x4227,0x39e7,0x3a07,0x3a07, +0x4207,0x39c7,0x4248,0x4248,0x4227,0x4207,0x3a07,0x4207,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4207,0x4a68,0x4227,0x4a88,0x4a48,0x39e7,0x3a07,0x4207,0x3a07,0x4208,0x4a48,0x4227,0x4207,0x4248,0x39e7,0x4207,0x39e7,0x39e6,0x4a48,0x4227,0x39e7,0x4227,0x4a68,0x4227,0x3a07,0x3a07,0x4227,0x3a07,0x4227,0x3a07,0x3a07,0x4227,0x4248,0x4227,0x4227,0x4227,0x4227,0x39e7,0x4227,0x4248,0x4248,0x4a68,0x4227,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4227,0x39e7,0x31c6,0x39e7,0x3a07,0x4228,0x4a69,0x3a07,0x4248,0x4207,0x39e7,0x3a07,0x31a6,0x39e6,0x4207,0x4228,0x3a07,0x4248,0x4a68,0x4228,0x4227,0x39e6,0x3a07,0x3a07,0x4227,0x4248,0x4228,0x39e7,0x4228,0x3a07,0x3a07,0x3a27,0x4228,0x4228,0x3a07,0x4248,0x4228,0x4248,0x3a07,0x3a07,0x3a07,0x39e7,0x39c6,0x39e7,0x31a6,0x39e7,0x31c6,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a07,0x4248,0x4228,0x3a08,0x4228,0x4228,0x4227,0x4248,0x3a27,0x3a07,0x3a27,0x4269,0x4248,0x4228,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4227,0x4248,0x4228,0x4228,0x4248,0x3a07,0x4207,0x4248,0x4a69,0x3a07,0x4228,0x4a69,0x4248,0x4228,0x4a69,0x4228,0x4207,0x4228,0x4228,0x4a68,0x3a07,0x4228,0x4248,0x4228,0x4248,0x4208,0x4248,0x4a69,0x4a89,0x4a68,0x4a69,0x4a48,0x52a8,0x4a68,0x4228,0x4248,0x4248,0x4a89,0x4a68,0x4227,0x4a88,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4a69,0x4a89,0x4a49,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4a48,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4248,0x4a49,0x4a89,0x4228,0x4228,0x4a89,0x4248,0x4249,0x4a89,0x4a69,0x4a49,0x4228,0x4248,0x4a89,0x4a89,0x4228,0x4aaa,0x4248,0x4a89,0x52eb,0x4248,0x4a69,0x4a89,0x52aa,0x4a48,0x4a48,0x4248,0x4a69,0x4228,0x4a69,0x52ca,0x4a49,0x4a49,0x4a89,0x52aa,0x4a69,0x4228,0x4a48,0x4248,0x4a89,0x4a69,0x4a69,0x4248,0x4a48,0x4a69,0x4a69,0x4a69,0x52aa,0x52aa,0x52ca,0x4a69,0x4248,0x4a48,0x4228,0x4228,0x4a69,0x4a69,0x528a,0x4a69,0x4228,0x4a49,0x4a69,0x5289,0x4a69,0x4a89,0x52aa,0x5289,0x528a,0x4a69,0x4a89,0x4a89,0x4248,0x4248,0x4a89,0x4a69,0x4a89,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4228,0x4248,0x4a49,0x4a49,0x4228,0x4228,0x4208,0x4a48,0x4208,0x4248,0x39e7,0x4208,0x4228,0x4a48,0x4a49,0x5289,0x4228,0x4228,0x39e7,0x4248,0x4a48, +0x4a48,0x4207,0x4227,0x4248,0x4a68,0x4a68,0x4a68,0x4a48,0x4248,0x4248,0x4228,0x4207,0x4228,0x4a88,0x4228,0x39c7,0x4a68,0x4a68,0x4207,0x31a6,0x4227,0x4a69,0x4227,0x39c6,0x4228,0x4228,0x39e7,0x4207,0x4207,0x4a68,0x4248,0x4228,0x4227,0x3a07,0x4207,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4227,0x4227,0x3a07,0x4227,0x3a07,0x4227,0x4227,0x4a48,0x4a69,0x4248,0x4248,0x4228,0x4a68,0x4a68,0x4248,0x3a07,0x4228,0x4268,0x4a68,0x3a07,0x3a07,0x4228,0x31c6,0x3a07,0x3a07,0x4207,0x39e7,0x39e6,0x3a07,0x39e6,0x4227,0x3a07,0x3a07,0x39c6,0x39c6,0x39e7,0x4248,0x3a07,0x3a27,0x4248,0x4227,0x4207,0x4248,0x3a07,0x4228,0x4a69,0x39e7,0x4228,0x4227,0x4248,0x4248,0x4248,0x4228,0x3a27,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x4208,0x4228,0x4248,0x4227,0x39e7,0x3a07,0x3a07,0x4228,0x4208,0x3a07,0x4248,0x39e7,0x31e6,0x4248,0x4248,0x4248,0x4228,0x4248,0x3a07,0x39e7,0x39e7,0x3a27,0x4227,0x4207,0x3a27,0x3a07,0x4268,0x4228,0x4228,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4a68,0x4228,0x39e6,0x4207,0x4248,0x4248,0x4227,0x4248,0x4207,0x4248,0x4248,0x4248,0x4a89,0x4228,0x4a69,0x4269,0x4248,0x4227,0x4a68,0x4a68,0x4248,0x4248,0x4228,0x4a48,0x4a48,0x4228,0x4a69,0x4228,0x4a68,0x4a68,0x4a68,0x4a69,0x5289,0x4a68,0x4248,0x4207,0x4228,0x5289,0x4a89,0x4a48,0x52a9,0x4a68,0x4a89,0x4a48,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4228,0x4a69,0x4a48,0x4a69,0x4a89,0x4a69,0x4a48,0x4a89,0x5289,0x5289,0x4a89,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x5289,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x528a,0x4a89,0x52aa,0x4a69,0x4a69,0x528a,0x4248,0x4a69,0x4a89,0x4228,0x4249,0x4228,0x4a89,0x4a69,0x4228,0x4a69,0x4a89,0x528a,0x4a89,0x4a69,0x4269,0x4a69,0x5b0b,0x52ca,0x4a89,0x4a89,0x528a,0x4a89,0x52aa,0x4a48,0x52aa,0x5289,0x4248,0x4a69,0x4a69,0x4a48,0x4228,0x4248,0x4248,0x4228,0x4a48,0x4248,0x4a89,0x52aa,0x5289,0x4a89,0x52aa,0x52aa,0x52aa,0x4a49,0x4a89,0x4a89,0x4268,0x4a89,0x4248,0x4a69,0x528a,0x4228,0x4a69,0x4248,0x4228,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x5289,0x52ca,0x4a89,0x4a68,0x4a48,0x4a48,0x4a69,0x4a69,0x5289,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x52aa,0x4a89,0x4a89,0x4a48,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4227,0x4a89,0x52aa,0x4a69,0x4a69,0x5289,0x4228,0x4228,0x4228,0x4207,0x4208,0x4a48,0x4228,0x4208,0x4248,0x3a08,0x3a08,0x52aa,0x4a69,0x4a48,0x4a48,0x4a49,0x4207,0x3a07,0x4a49, +0x3a07,0x3a07,0x4a69,0x4a48,0x4227,0x4a48,0x4248,0x4a48,0x4a89,0x5289,0x4a48,0x4228,0x4a68,0x5289,0x39e6,0x4248,0x4a89,0x5289,0x4248,0x4248,0x4228,0x4a48,0x4a48,0x4248,0x4207,0x4227,0x4248,0x3a07,0x4248,0x4227,0x4207,0x4207,0x4248,0x4227,0x4a69,0x39e7,0x39e7,0x3a07,0x4248,0x4228,0x4227,0x4228,0x4228,0x4248,0x4a69,0x4207,0x4248,0x4248,0x4208,0x4248,0x4268,0x3a07,0x4a89,0x4248,0x4a68,0x4207,0x4a48,0x4248,0x4207,0x3a07,0x4247,0x3a07,0x4207,0x4248,0x4248,0x3a07,0x4227,0x39e7,0x31e6,0x4248,0x3a07,0x39e7,0x4207,0x3a07,0x4207,0x4228,0x4228,0x31c6,0x4228,0x4227,0x4a48,0x4228,0x4227,0x3a07,0x3a07,0x4228,0x3a07,0x4248,0x4228,0x3a27,0x4a68,0x4228,0x3a07,0x31c6,0x3a27,0x4228,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x4228,0x4228,0x3a07,0x39e6,0x3a07,0x31e6,0x39e7,0x4228,0x4228,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4248,0x4248,0x39e7,0x4228,0x4228,0x4248,0x4248,0x4248,0x4a69,0x4268,0x4268,0x4248,0x4227,0x3a07,0x4207,0x4207,0x4227,0x4268,0x4268,0x4248,0x4248,0x4268,0x4227,0x4268,0x4a89,0x4a48,0x4207,0x4248,0x4228,0x4a68,0x4a68,0x4248,0x4248,0x4248,0x4248,0x4a68,0x4227,0x4248,0x4a49,0x4228,0x4248,0x4a89,0x4a48,0x4a69,0x4a68,0x4248,0x4a68,0x4228,0x4a69,0x52aa,0x4a68,0x4a68,0x52a8,0x4a89,0x4a69,0x4a48,0x4a69,0x4a68,0x4a89,0x52a9,0x4248,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x5289,0x4a89,0x4a69,0x4228,0x4a48,0x4248,0x4a8a,0x4a69,0x4a49,0x4a89,0x4a89,0x4a69,0x4248,0x4a69,0x52aa,0x4aaa,0x4a89,0x4a69,0x528a,0x52aa,0x4a89,0x4a89,0x52aa,0x4a69,0x4a69,0x4248,0x4228,0x4a69,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x52aa,0x52aa,0x4a69,0x4a69,0x4a89,0x52cb,0x4228,0x4a89,0x4a69,0x5289,0x4a89,0x52a9,0x52aa,0x5289,0x5289,0x4a69,0x52aa,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4228,0x5aca,0x52aa,0x4a69,0x4a89,0x52aa,0x52ca,0x52ca,0x52aa,0x528a,0x4a69,0x4a89,0x4a48,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4a89,0x4228,0x4a69,0x4a48,0x4228,0x4a89,0x4a69,0x4a69,0x4248,0x4a48,0x4a89,0x4a89,0x4a69,0x4a49,0x52aa,0x4a69,0x4a69,0x5289,0x4248,0x4a48,0x4228,0x4a69,0x4a69,0x4a49,0x4a69,0x4248,0x4a89,0x4a69,0x4a89,0x52aa,0x4248,0x4a69,0x3a07,0x4228,0x4a69,0x4228,0x4248,0x4a48,0x3a07,0x4248,0x4207,0x4228,0x4a48,0x4248,0x4228,0x4249,0x4248,0x39e7,0x4208,0x4228,0x4a48,0x4207,0x3a07,0x39e7, +0x4248,0x4a68,0x4a68,0x4248,0x3a07,0x4a68,0x4a68,0x4228,0x4248,0x4a68,0x4a48,0x4248,0x4228,0x4a68,0x4207,0x4248,0x4a69,0x4207,0x4a89,0x4248,0x4a69,0x4248,0x3a07,0x4228,0x4a48,0x3a07,0x31c6,0x3a07,0x4227,0x39e6,0x39c6,0x4207,0x4207,0x3a07,0x4207,0x4207,0x39e7,0x3a07,0x4228,0x39e7,0x4207,0x4207,0x4207,0x4248,0x4a68,0x4a68,0x4248,0x4a48,0x3a07,0x4248,0x4248,0x4227,0x4248,0x4248,0x4228,0x3a07,0x4207,0x4248,0x4227,0x4248,0x4a88,0x3a27,0x3a07,0x39e7,0x4a68,0x4207,0x39e7,0x4227,0x4228,0x39e7,0x39e7,0x4248,0x39e7,0x31a6,0x39e7,0x4207,0x39e7,0x39e7,0x3a07,0x4227,0x4248,0x4228,0x4228,0x4228,0x4228,0x4227,0x4248,0x3a07,0x4248,0x4248,0x4228,0x3a07,0x4228,0x4228,0x39e7,0x4228,0x4228,0x31e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4a48,0x3a07,0x39e7,0x3a27,0x3a07,0x3a27,0x4227,0x4248,0x4228,0x4228,0x4207,0x3a07,0x3a07,0x4228,0x4248,0x4228,0x4227,0x4207,0x4248,0x4228,0x4228,0x4a68,0x3a07,0x4248,0x4248,0x4268,0x4268,0x4227,0x4248,0x4a69,0x4a68,0x4248,0x4248,0x4227,0x4268,0x4268,0x4248,0x4a68,0x4a69,0x4248,0x4a69,0x4248,0x4a68,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4a89,0x4a68,0x4248,0x4a48,0x4a69,0x4a48,0x4a69,0x4a68,0x4a69,0x4a68,0x5aea,0x4a68,0x4248,0x4248,0x4a89,0x4a69,0x4a69,0x52a9,0x52a9,0x4a69,0x52a9,0x4a89,0x5289,0x4a68,0x4a69,0x4a68,0x4a48,0x4228,0x4a69,0x4a68,0x4a89,0x4a48,0x4a48,0x5289,0x4248,0x4a89,0x4a69,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4248,0x52aa,0x4a69,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x52ca,0x52aa,0x4a69,0x4a69,0x52aa,0x52aa,0x4a89,0x4a89,0x4a69,0x4a89,0x5289,0x52aa,0x4a48,0x4a89,0x4a89,0x4a89,0x4a8a,0x52ca,0x5aca,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x52aa,0x4a69,0x528a,0x52aa,0x4a89,0x4a89,0x5289,0x52aa,0x4a89,0x528a,0x4a89,0x52aa,0x52ca,0x4a89,0x4a69,0x52aa,0x52aa,0x52ca,0x4a49,0x52aa,0x4a69,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4a69,0x4228,0x4a89,0x4a49,0x5289,0x4a69,0x4248,0x4a69,0x5289,0x4a89,0x4a69,0x4a69,0x4a68,0x5289,0x4a48,0x4a89,0x4a89,0x4a69,0x5289,0x4a89,0x4a89,0x4248,0x4a89,0x4a69,0x4228,0x4a69,0x4a49,0x4a89,0x4269,0x4248,0x4228,0x52aa,0x4a69,0x4a48,0x4a89,0x3a08,0x4a48,0x4a69,0x4228,0x4a69,0x4228,0x4a48,0x4a89,0x39c7,0x4228,0x4228,0x31c7,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x4228,0x4207,0x3a07,0x39e7, +0x4a69,0x4248,0x3a07,0x4207,0x4208,0x4a48,0x4a48,0x4248,0x4248,0x4a48,0x4a48,0x4247,0x4227,0x4227,0x4228,0x4207,0x4a68,0x4227,0x4a68,0x4248,0x4a68,0x4a68,0x4228,0x4248,0x3a07,0x4227,0x4a89,0x4248,0x39e6,0x4228,0x39e6,0x4207,0x4228,0x4248,0x4248,0x4207,0x4207,0x39e7,0x3a07,0x4207,0x39e7,0x4a68,0x4248,0x4248,0x4227,0x4a89,0x4248,0x4a89,0x4a68,0x4a48,0x3a07,0x4248,0x4a89,0x3a07,0x4a48,0x4a48,0x4207,0x4207,0x4248,0x4a68,0x4268,0x4227,0x4228,0x4a89,0x4227,0x3a07,0x4228,0x4227,0x39e7,0x39e7,0x3a07,0x39e6,0x31a5,0x39e7,0x4207,0x39c7,0x39e7,0x4228,0x4227,0x4227,0x39e7,0x31c6,0x4228,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4228,0x39e7,0x3a07,0x4228,0x3a27,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x4228,0x31c6,0x3a07,0x4227,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x4227,0x3a07,0x4228,0x4248,0x4228,0x4207,0x3a07,0x3a07,0x4248,0x4a69,0x4228,0x4248,0x4248,0x4228,0x4228,0x4a69,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4a89,0x3a07,0x4a68,0x4a68,0x4228,0x4268,0x4a69,0x4268,0x4a89,0x4a68,0x4248,0x4a48,0x4a69,0x4a89,0x4248,0x4248,0x4a69,0x4a69,0x3a27,0x4a68,0x4248,0x4248,0x4a69,0x4a68,0x4a89,0x4228,0x4228,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4a68,0x52c9,0x52a9,0x5289,0x4a68,0x4a89,0x4a68,0x4a68,0x5ac9,0x5289,0x4a69,0x4a89,0x4a69,0x4a69,0x4a89,0x4a68,0x4a69,0x4a69,0x4a48,0x4a69,0x4a89,0x4a89,0x4a48,0x4228,0x4228,0x4249,0x4a89,0x4248,0x4a48,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x52aa,0x4a89,0x4248,0x52aa,0x5289,0x528a,0x4a69,0x4a89,0x4a89,0x4a89,0x4a48,0x5289,0x5aeb,0x4a89,0x4a89,0x5289,0x4a69,0x4a89,0x4a89,0x4a69,0x52ea,0x4248,0x5b0b,0x5b0b,0x4a69,0x528a,0x4a69,0x52ca,0x52aa,0x4a49,0x52aa,0x52aa,0x5289,0x52aa,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x52aa,0x4a89,0x5289,0x52ca,0x4a89,0x5289,0x4a89,0x4a89,0x5aeb,0x52aa,0x5b2c,0x52ca,0x4a89,0x52aa,0x5289,0x52aa,0x5aeb,0x4a89,0x528a,0x528a,0x52aa,0x4a48,0x4a69,0x4a69,0x4a49,0x4a69,0x4248,0x4249,0x5289,0x4a69,0x4a69,0x4a89,0x4a89,0x52aa,0x528a,0x4a69,0x5289,0x4a69,0x4a69,0x52aa,0x5289,0x5aca,0x52ca,0x52aa,0x4248,0x4a48,0x4a69,0x4a69,0x4a69,0x4a68,0x4228,0x4a69,0x5289,0x4a69,0x4a69,0x4a69,0x4228,0x52aa,0x4a48,0x4a69,0x4a69,0x4a69,0x4a69,0x4249,0x4228,0x31c6,0x4a69,0x3a07,0x39e7,0x4a69,0x4228,0x4a69,0x4208,0x39e7,0x4a48,0x528a,0x4228, +0x4228,0x4207,0x4248,0x4248,0x4a68,0x4207,0x4248,0x4207,0x4a68,0x4a48,0x4248,0x4228,0x4a68,0x4248,0x4227,0x4228,0x4228,0x4268,0x4a48,0x4a48,0x4228,0x5289,0x4228,0x4228,0x4a68,0x4248,0x4a89,0x4227,0x3a07,0x4248,0x4248,0x3a07,0x4a68,0x4248,0x4228,0x4227,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4a89,0x52a9,0x4228,0x4248,0x4248,0x4227,0x4a89,0x3a27,0x4248,0x4247,0x4248,0x3a07,0x4227,0x4227,0x4248,0x4a68,0x4228,0x4248,0x4a89,0x4268,0x4a68,0x4a69,0x3a07,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x39e7,0x4248,0x4248,0x39e7,0x31a6,0x39e7,0x4a48,0x4248,0x4a69,0x39e7,0x4228,0x3a28,0x4249,0x4228,0x4248,0x4248,0x4248,0x3a07,0x4a68,0x4228,0x39e7,0x4228,0x4228,0x39e7,0x39e7,0x4228,0x4248,0x39e7,0x3a07,0x4248,0x3a07,0x3a07,0x39e7,0x3a07,0x31e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x4248,0x3a27,0x4268,0x4228,0x4a68,0x4228,0x39e7,0x39e7,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4a48,0x4248,0x4248,0x4268,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4227,0x4228,0x4268,0x4268,0x4248,0x4a68,0x4248,0x4a89,0x4a89,0x4248,0x4248,0x4a68,0x4227,0x4248,0x4248,0x4228,0x4a69,0x4248,0x4a48,0x4228,0x4248,0x4268,0x4a69,0x4a69,0x4a89,0x4248,0x4a89,0x4a89,0x4aa9,0x52a9,0x4227,0x52c9,0x52a8,0x4a48,0x4a68,0x52a9,0x5288,0x4a68,0x4a89,0x4a89,0x4a69,0x4a69,0x5289,0x4a89,0x4248,0x4a69,0x4a89,0x4248,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a68,0x52aa,0x4248,0x4a48,0x4a69,0x4a89,0x4a8a,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4228,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x5b2c,0x52aa,0x5289,0x4a89,0x4a48,0x4a49,0x4a49,0x4aaa,0x52aa,0x4a8a,0x5aeb,0x5aeb,0x52aa,0x4a69,0x52eb,0x632c,0x4a69,0x52aa,0x4a89,0x4a49,0x528a,0x4a69,0x4a69,0x4a69,0x4a89,0x52ca,0x4a69,0x4248,0x5289,0x4a89,0x4a89,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x52a9,0x4a69,0x4a89,0x4a69,0x4a89,0x52aa,0x52aa,0x4a89,0x4a89,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x5aca,0x52aa,0x4a69,0x4a68,0x5289,0x4a89,0x4228,0x5289,0x52aa,0x528a,0x4a69,0x4a89,0x52ca,0x4a89,0x5289,0x52aa,0x52a9,0x52ca,0x4a69,0x4a68,0x4a89,0x52aa,0x52a9,0x4a89,0x4a48,0x528a,0x4a48,0x52aa,0x52aa,0x4a68,0x4a69,0x52aa,0x4a89,0x4a69,0x4a69,0x4248,0x4a89,0x4a48,0x4a89,0x52aa,0x4a69,0x4a28,0x4228,0x4a69,0x4a49,0x4248,0x4268,0x3a07,0x3a07,0x528a,0x4a69,0x4a48,0x4a48,0x4a89,0x4a69,0x39c6,0x4228,0x528a,0x4228, +0x4248,0x4248,0x4248,0x4a69,0x4a68,0x4a89,0x4a68,0x4248,0x4207,0x4a48,0x4228,0x4228,0x4248,0x3a07,0x4228,0x4207,0x4228,0x4248,0x39e6,0x4248,0x4248,0x4248,0x4228,0x4a48,0x4a68,0x4a68,0x4a48,0x4a48,0x4a68,0x4a68,0x4228,0x4248,0x4248,0x4227,0x4228,0x4a69,0x4207,0x4227,0x4228,0x4248,0x4248,0x4248,0x4248,0x4207,0x4228,0x4a48,0x4a68,0x4227,0x4a68,0x4248,0x4227,0x4a68,0x4a68,0x4a68,0x39e6,0x4268,0x4248,0x4248,0x4a48,0x52a9,0x4a68,0x3a07,0x3a07,0x4228,0x4248,0x4a89,0x3a07,0x4248,0x4228,0x4227,0x4228,0x4248,0x3a07,0x4227,0x4a68,0x3a27,0x31c6,0x3a07,0x4248,0x4228,0x4248,0x4a68,0x4269,0x4228,0x4228,0x4a69,0x4a69,0x4227,0x4248,0x3a07,0x4207,0x4248,0x4228,0x4248,0x3a28,0x4228,0x4228,0x3a07,0x39e7,0x4228,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4248,0x4248,0x4268,0x4248,0x3a07,0x4248,0x4a68,0x3a07,0x3a07,0x4a68,0x4a69,0x3a07,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4227,0x4227,0x4228,0x4248,0x4a89,0x4227,0x4268,0x4268,0x4a69,0x4248,0x3a07,0x3a27,0x4268,0x4248,0x4a69,0x4a68,0x4a68,0x4248,0x4268,0x4a69,0x4248,0x4a48,0x4228,0x4a68,0x4a89,0x4a68,0x4228,0x4a68,0x4a89,0x4248,0x4a69,0x4a69,0x4a48,0x4a48,0x4a69,0x52ca,0x4aa9,0x4a89,0x52a9,0x5289,0x4228,0x4a89,0x52c9,0x52a9,0x52a9,0x4a89,0x52a9,0x4a69,0x5289,0x4a69,0x4a69,0x4a89,0x4a69,0x5289,0x5289,0x52a9,0x4a69,0x4a89,0x52a9,0x4a48,0x52aa,0x4a89,0x4a89,0x52a9,0x4a48,0x4a69,0x4aaa,0x4a89,0x52aa,0x52a9,0x5289,0x4a89,0x4248,0x4a69,0x4a69,0x4a49,0x4a69,0x52a9,0x4a89,0x52aa,0x4a69,0x528a,0x4a89,0x4aa9,0x4a89,0x528a,0x4a89,0x4a89,0x528a,0x52ca,0x528a,0x52aa,0x52aa,0x52ca,0x5b0b,0x5b0b,0x4a89,0x5289,0x52aa,0x4a89,0x528a,0x52aa,0x4a69,0x4a49,0x52aa,0x5aeb,0x4a48,0x5289,0x52a9,0x52a9,0x4a89,0x4a89,0x4a89,0x52aa,0x4a69,0x528a,0x5289,0x52aa,0x52aa,0x528a,0x4a69,0x52ca,0x52ca,0x52ca,0x5289,0x4a89,0x52aa,0x4a48,0x52ca,0x52aa,0x52ca,0x4a89,0x52aa,0x4a69,0x5aea,0x5aca,0x4a89,0x5289,0x52aa,0x52aa,0x4a89,0x4a89,0x52aa,0x4a69,0x4a68,0x5289,0x52a9,0x52aa,0x52aa,0x4a89,0x52aa,0x4a89,0x4a68,0x52aa,0x4a89,0x4a48,0x4a48,0x52aa,0x4a89,0x4a89,0x4a48,0x52aa,0x5aca,0x528a,0x4a69,0x4a69,0x4a48,0x4a69,0x5289,0x5289,0x4228,0x4208,0x5289,0x5289,0x4a69,0x4248,0x4228,0x4228,0x4208,0x39e7,0x4a89,0x528a,0x4208,0x4228,0x4228,0x4a49,0x4208,0x4248,0x4228,0x4228, +0x3a07,0x4227,0x3a07,0x4227,0x4a69,0x4a89,0x4a68,0x4a68,0x4a69,0x39e7,0x4a48,0x4248,0x4a69,0x4a48,0x4a68,0x4248,0x4a89,0x4a68,0x4227,0x4a68,0x4228,0x3a07,0x4a48,0x4227,0x4227,0x39e7,0x4227,0x4248,0x4a68,0x4a48,0x39e7,0x3a07,0x4a48,0x3a07,0x4228,0x4a69,0x4248,0x3a07,0x31c6,0x4a69,0x4a68,0x4248,0x4248,0x4248,0x4207,0x4248,0x4a68,0x4248,0x4a89,0x4248,0x4a68,0x3a07,0x4a48,0x4227,0x4268,0x4a68,0x52a9,0x4248,0x4248,0x4228,0x4a48,0x4a48,0x3a07,0x4228,0x4227,0x4227,0x4a69,0x3a07,0x4248,0x3a07,0x3a07,0x4207,0x3a27,0x4a69,0x4268,0x4227,0x4a68,0x4268,0x4228,0x4248,0x4248,0x4a69,0x4248,0x3a07,0x4248,0x4248,0x4228,0x4a48,0x3a07,0x3a07,0x4248,0x4207,0x4207,0x4248,0x4228,0x3a28,0x3a07,0x3a07,0x39e7,0x3a07,0x4248,0x4248,0x3a07,0x4248,0x3a07,0x3a07,0x4268,0x4207,0x39e7,0x3a27,0x4248,0x39e7,0x3a07,0x4228,0x4248,0x4248,0x3a28,0x3a27,0x4268,0x4227,0x4248,0x4228,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4207,0x4248,0x4248,0x4a89,0x4a89,0x3a27,0x4248,0x4268,0x4248,0x4207,0x4248,0x4a89,0x4a89,0x4227,0x4a68,0x4a68,0x4a69,0x4a69,0x4a68,0x4a68,0x4248,0x4a68,0x4a68,0x4228,0x3a07,0x4a68,0x4a69,0x4248,0x4268,0x4248,0x4268,0x4a48,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x5289,0x4a89,0x4a89,0x52a9,0x4a89,0x52aa,0x4a89,0x4a69,0x5289,0x52a9,0x5aca,0x52ca,0x52aa,0x4a89,0x4a89,0x5289,0x4a69,0x4a89,0x4a69,0x52aa,0x4a89,0x4a69,0x4a89,0x52ea,0x52ca,0x52a9,0x52a9,0x4a69,0x4a89,0x52aa,0x5289,0x4a89,0x4aaa,0x4a89,0x4a89,0x52aa,0x52cb,0x52ca,0x52aa,0x4a89,0x52aa,0x52aa,0x4a69,0x52ca,0x52ca,0x4a89,0x5aca,0x52aa,0x5289,0x4a89,0x5289,0x5aeb,0x52aa,0x5aeb,0x5aca,0x52aa,0x632c,0x4a89,0x5aca,0x52aa,0x4a69,0x52aa,0x528a,0x52aa,0x52aa,0x5aca,0x52ca,0x4a69,0x52aa,0x5aca,0x52aa,0x4a68,0x4a89,0x4a69,0x4a89,0x52aa,0x5289,0x4a69,0x4aa9,0x52ca,0x4a89,0x5aeb,0x52ca,0x4a89,0x52ca,0x52aa,0x4a69,0x5b0b,0x52aa,0x5aeb,0x5aea,0x4aaa,0x4a69,0x4a89,0x4a69,0x52a9,0x52ca,0x52aa,0x52a9,0x52a9,0x52aa,0x528a,0x4a69,0x4a69,0x4248,0x52a9,0x52a9,0x4a69,0x4a89,0x4a48,0x4a69,0x4a89,0x4a69,0x52aa,0x5289,0x5289,0x4a69,0x4a49,0x4a48,0x4a69,0x4248,0x52aa,0x5aeb,0x4a69,0x4a69,0x4a69,0x4a69,0x4a48,0x4a69,0x4a69,0x4228,0x4a69,0x4a49,0x4a69,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a49,0x4248,0x4a69,0x4a48,0x4a49,0x4208,0x4208,0x4a49,0x4a48,0x4248,0x4249, +0x4a68,0x4227,0x4248,0x4248,0x4a69,0x4a89,0x4a68,0x4a68,0x52a9,0x5289,0x4248,0x4a68,0x4a48,0x4a68,0x4a68,0x4248,0x4a89,0x4a89,0x4228,0x4a48,0x4227,0x4228,0x4228,0x4247,0x4a89,0x4207,0x39e7,0x3a07,0x4a48,0x4248,0x4248,0x4227,0x4248,0x4a48,0x4a48,0x39e6,0x4a68,0x4a89,0x4207,0x39e6,0x4227,0x3a27,0x4247,0x4227,0x4248,0x4228,0x4a89,0x4a68,0x4248,0x4a89,0x4a68,0x4248,0x4268,0x4227,0x4248,0x4a88,0x4228,0x4248,0x4248,0x4247,0x4a88,0x4a68,0x4228,0x4248,0x4268,0x4248,0x4228,0x4268,0x4268,0x4227,0x4228,0x31a6,0x3a27,0x4a69,0x4a68,0x4268,0x4a68,0x4248,0x4269,0x4248,0x4268,0x4248,0x4248,0x4248,0x3a07,0x3a27,0x3a07,0x4228,0x4a68,0x4248,0x4248,0x3a07,0x4228,0x4a48,0x4207,0x4248,0x4228,0x4228,0x3a07,0x4248,0x4268,0x4227,0x3a07,0x4a69,0x4227,0x39e7,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x3a27,0x4227,0x4248,0x4248,0x4268,0x4248,0x3a27,0x4248,0x4a89,0x4a89,0x4228,0x4248,0x4268,0x4a89,0x4228,0x4228,0x4268,0x4a88,0x4a68,0x4a68,0x4248,0x4a89,0x4268,0x4a89,0x4a69,0x4a69,0x4248,0x4a68,0x4a68,0x4a69,0x4248,0x4a89,0x5289,0x4248,0x4a69,0x4248,0x4248,0x4a68,0x4a68,0x4a89,0x4248,0x4268,0x4a89,0x4248,0x5289,0x4a69,0x4248,0x4228,0x4a69,0x4a89,0x4a69,0x4a68,0x52a9,0x4a89,0x4a89,0x4a68,0x4a89,0x4a89,0x52a9,0x52ca,0x52a9,0x52aa,0x52a9,0x52c9,0x52a9,0x5289,0x4a89,0x4a89,0x5aea,0x52a9,0x52ca,0x52ca,0x52ca,0x5289,0x4a68,0x52a9,0x4a89,0x52a9,0x52ea,0x4a89,0x4a89,0x52a9,0x4a89,0x52ca,0x52aa,0x52ca,0x52ca,0x5aea,0x52aa,0x4a89,0x4a89,0x52aa,0x52aa,0x52ca,0x5b0b,0x52ca,0x52aa,0x52aa,0x4a89,0x4a69,0x4a89,0x52aa,0x52ca,0x4a69,0x52ca,0x52ca,0x52ca,0x5aca,0x52ca,0x52ca,0x52a9,0x52a9,0x5289,0x528a,0x4a89,0x4a89,0x4a89,0x5acb,0x528a,0x52aa,0x52aa,0x4a89,0x52aa,0x632c,0x4a89,0x4a89,0x5289,0x52ca,0x5289,0x52ca,0x528a,0x52aa,0x4a69,0x52ca,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x5aeb,0x52ca,0x52ca,0x5289,0x52aa,0x632c,0x5aca,0x4a89,0x5aeb,0x5aeb,0x52aa,0x52ca,0x52aa,0x4a49,0x52ca,0x52aa,0x4a69,0x5289,0x52aa,0x52aa,0x4a69,0x4a69,0x4a89,0x52ca,0x5aca,0x4a89,0x52aa,0x4a69,0x4a69,0x4228,0x4a69,0x4a89,0x4a69,0x5289,0x4a69,0x4a48,0x4a69,0x4228,0x4a69,0x5289,0x5289,0x4a69,0x528a,0x52aa,0x52aa,0x4a48,0x4a49,0x4a69,0x4a69,0x4a89,0x4248,0x4a69,0x4228,0x4a69,0x4a89,0x4228,0x4a49,0x4a69,0x4a49,0x4a48,0x4207,0x4228,0x4a89,0x4a48,0x4a69,0x52aa,0x4a49,0x4a69,0x4a49, +0x4a69,0x4227,0x4228,0x4a69,0x4228,0x4a48,0x4a69,0x52a9,0x4a69,0x4a48,0x4a89,0x52a9,0x52ca,0x4248,0x5289,0x4a89,0x4a68,0x4a89,0x52a9,0x4a68,0x4228,0x52a9,0x4248,0x4228,0x4a89,0x4248,0x4a48,0x4a68,0x4228,0x4227,0x4a68,0x4a68,0x4248,0x4a69,0x4a68,0x4a68,0x4a68,0x4a89,0x4a48,0x4227,0x4248,0x4248,0x4248,0x4228,0x4227,0x4227,0x4a89,0x4a68,0x3a07,0x4a68,0x4248,0x52a9,0x4aa9,0x4248,0x4aa9,0x4248,0x4268,0x4a89,0x4a68,0x52c9,0x4a89,0x4a68,0x4a89,0x4247,0x39e6,0x4a89,0x4268,0x3a07,0x4a89,0x4a69,0x4a89,0x3a27,0x4228,0x3a07,0x4268,0x4268,0x4a89,0x4a89,0x4248,0x4228,0x4a89,0x4248,0x3a27,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4a69,0x4228,0x4248,0x4248,0x4a48,0x4248,0x4228,0x3a27,0x4a69,0x4a69,0x4269,0x4228,0x4228,0x4a69,0x4248,0x4248,0x3a07,0x3a27,0x4248,0x4228,0x4248,0x4248,0x4268,0x4248,0x4248,0x52ca,0x4248,0x4228,0x4268,0x4248,0x4228,0x4a68,0x4a69,0x4248,0x4228,0x4248,0x4aa9,0x4a68,0x4248,0x4248,0x52c9,0x4aa9,0x52a9,0x4a68,0x4268,0x4a68,0x4aa9,0x52a9,0x4a48,0x4a89,0x4a89,0x4a88,0x4a89,0x4a68,0x4248,0x4a68,0x4248,0x4a68,0x4a89,0x4248,0x4a89,0x4a69,0x4227,0x4a48,0x4a69,0x4a68,0x4a69,0x4a69,0x4a89,0x4a68,0x52aa,0x52aa,0x4a69,0x4a89,0x4a89,0x52aa,0x4a69,0x4a69,0x4a68,0x4a89,0x4a89,0x52a9,0x52a9,0x52ca,0x52ca,0x4a89,0x52a9,0x52c9,0x52a9,0x4a89,0x52ca,0x52c9,0x5aca,0x5b0b,0x52aa,0x52a9,0x52a9,0x4a89,0x52a9,0x52ca,0x52ca,0x52ca,0x4a89,0x4a69,0x4aa9,0x4a89,0x52aa,0x5289,0x5289,0x528a,0x4a89,0x4aaa,0x52aa,0x4a89,0x4a89,0x52a9,0x5289,0x4aaa,0x4aaa,0x4a89,0x4aaa,0x4a68,0x52ca,0x52eb,0x4a69,0x4a49,0x4a89,0x4a89,0x4a89,0x52aa,0x52ca,0x5acb,0x52aa,0x4a89,0x4a69,0x5289,0x52aa,0x52ca,0x4a69,0x52ca,0x5aeb,0x5aea,0x5b0b,0x52aa,0x52aa,0x4a89,0x4a69,0x52aa,0x52aa,0x4a69,0x5289,0x5289,0x52aa,0x4a89,0x52ca,0x5aca,0x4a69,0x4228,0x4a89,0x4a89,0x528a,0x52aa,0x4a89,0x4a69,0x4a89,0x5289,0x52ca,0x52aa,0x5aca,0x5aeb,0x52aa,0x52ca,0x5aca,0x5aea,0x5289,0x4a89,0x52ca,0x52ca,0x528a,0x528a,0x4a89,0x4a69,0x52ca,0x4a69,0x4a89,0x5289,0x4a69,0x4a69,0x4a69,0x52a9,0x4a69,0x4a49,0x4248,0x4a69,0x52aa,0x4a69,0x528a,0x4a49,0x4a48,0x4a69,0x4248,0x4a69,0x52aa,0x4a48,0x4a69,0x5289,0x4a48,0x4a89,0x4a48,0x4a69,0x4a69,0x4a69,0x4a48,0x4a48,0x4a48,0x4a69,0x4a69,0x4a69,0x4a89,0x528a,0x4a89,0x3a28,0x4228,0x4a69,0x4a8a,0x4a69,0x4a48,0x4a69,0x4228,0x4248,0x528a,0x4a69, +0x4248,0x4228,0x4a48,0x4a48,0x4a69,0x4a48,0x5289,0x4227,0x4248,0x4a28,0x4a48,0x4a48,0x5289,0x4207,0x4228,0x4a48,0x4248,0x4227,0x4a48,0x4207,0x4a68,0x52a9,0x4227,0x4207,0x4228,0x4a48,0x4248,0x4228,0x4a69,0x5289,0x4a69,0x5289,0x4228,0x4228,0x4207,0x4228,0x4a68,0x4a88,0x4248,0x4a68,0x52ca,0x4227,0x4228,0x4207,0x4227,0x4a89,0x4248,0x4227,0x4a89,0x52aa,0x52a9,0x4a89,0x4268,0x4a89,0x52ca,0x52a9,0x4a89,0x3a07,0x4a68,0x52ca,0x4a89,0x4248,0x5289,0x52c9,0x4227,0x4a48,0x4a69,0x4a89,0x52aa,0x4a68,0x4248,0x4a69,0x4a89,0x4a68,0x52a9,0x4a88,0x4248,0x4a69,0x4268,0x3a28,0x3a27,0x4268,0x4a69,0x4248,0x4a68,0x4a89,0x4a68,0x4a69,0x4248,0x4248,0x4a69,0x4268,0x4a89,0x4248,0x4a69,0x4248,0x4227,0x4a69,0x4a69,0x4268,0x4248,0x4a69,0x4248,0x4227,0x4228,0x4228,0x4268,0x4228,0x4248,0x4268,0x4268,0x4a69,0x4228,0x4a89,0x4a69,0x4248,0x4248,0x52aa,0x4268,0x4268,0x4a89,0x4a69,0x52a9,0x4a68,0x4a68,0x52aa,0x4268,0x4a68,0x4268,0x4227,0x4a89,0x52ca,0x4a89,0x4a68,0x52c9,0x5289,0x4a68,0x52a9,0x4a68,0x4aa9,0x4a88,0x4a89,0x4a89,0x52a9,0x52aa,0x4a89,0x4a89,0x4248,0x4a69,0x5289,0x4a89,0x4a89,0x4a89,0x4a89,0x4a68,0x3a07,0x4a68,0x52aa,0x5289,0x4a89,0x4248,0x4248,0x4a89,0x4a89,0x4a69,0x4a68,0x4a89,0x4a89,0x5289,0x4a89,0x4a89,0x52ca,0x52a9,0x5289,0x52a9,0x52a9,0x52ca,0x5aea,0x52ca,0x52a9,0x52a9,0x52ca,0x52ca,0x52ca,0x5289,0x52aa,0x4a89,0x52ca,0x52aa,0x4a89,0x52aa,0x5289,0x52a9,0x4a68,0x4a69,0x52aa,0x52aa,0x4a69,0x528a,0x52aa,0x52ca,0x4a89,0x4248,0x4a89,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x52aa,0x5b0b,0x4aa9,0x5289,0x5acb,0x528a,0x52aa,0x4a89,0x52aa,0x5b0b,0x52ca,0x52aa,0x52aa,0x52aa,0x52ca,0x5aeb,0x5aeb,0x4a69,0x52aa,0x632b,0x630b,0x52ca,0x52ca,0x52ca,0x5aca,0x52aa,0x5289,0x5aca,0x4a89,0x52aa,0x52aa,0x4a69,0x52aa,0x52ca,0x52aa,0x52aa,0x4a48,0x5289,0x52ca,0x52ca,0x5aca,0x52aa,0x52aa,0x52ca,0x52aa,0x52ca,0x5aeb,0x5aca,0x5acb,0x52ca,0x52aa,0x5aca,0x5289,0x4a69,0x52aa,0x52ca,0x4a89,0x52aa,0x52aa,0x630b,0x52aa,0x4a89,0x4a68,0x4a69,0x5289,0x52aa,0x5aca,0x4228,0x52a9,0x4248,0x4a69,0x4a49,0x4a49,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a48,0x4a69,0x4a89,0x4a69,0x4a89,0x4a48,0x52aa,0x52aa,0x52aa,0x4a69,0x4a69,0x4228,0x4a89,0x4228,0x4228,0x4a89,0x4248,0x4a69,0x52aa,0x52aa,0x4a69,0x4a69,0x4208,0x4208,0x4228,0x4a69,0x52aa,0x4a69,0x4228,0x4228,0x4228,0x4207, +0x634c,0x5b2b,0x5b2b,0x5b2b,0x636c,0x5b0b,0x634c,0x6bad,0x5b0b,0x5b0b,0x52ca,0x52a9,0x634c,0x636c,0x5b2b,0x52ea,0x5aeb,0x636c,0x5b2b,0x52ea,0x5b0b,0x4aa9,0x5aea,0x52ca,0x4a89,0x4a68,0x4a89,0x4a69,0x4a89,0x52a9,0x4a89,0x52a9,0x52ca,0x4a89,0x4a89,0x4a89,0x52ca,0x4a69,0x4a89,0x4268,0x4a89,0x4a69,0x4248,0x4a69,0x4a89,0x4268,0x4a68,0x4a69,0x4a69,0x4a89,0x4228,0x4a69,0x4a69,0x4248,0x4248,0x52a9,0x4a68,0x4a89,0x4a89,0x4248,0x4a68,0x4a89,0x4a89,0x4a89,0x4a89,0x4268,0x4a89,0x4a69,0x4a68,0x4228,0x4249,0x4248,0x4228,0x4268,0x4248,0x4a69,0x3a07,0x4a69,0x4269,0x4248,0x4248,0x4268,0x4268,0x4a89,0x4a68,0x4248,0x4269,0x4a69,0x4a69,0x4268,0x4248,0x4a69,0x4a89,0x4a69,0x4269,0x4248,0x4248,0x39e7,0x4248,0x4248,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4248,0x4227,0x4248,0x4228,0x4a68,0x4a69,0x4228,0x31c6,0x4248,0x4248,0x4aa9,0x4a89,0x4a89,0x4a89,0x4a89,0x4227,0x4248,0x4248,0x4248,0x4a68,0x4269,0x4a69,0x4268,0x4248,0x4248,0x4a69,0x4a69,0x4a89,0x52aa,0x4a88,0x4a88,0x5aca,0x4a68,0x4248,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x528a,0x4a69,0x4a89,0x4a89,0x4248,0x4248,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a68,0x4248,0x4a69,0x4a89,0x4268,0x4a69,0x4a69,0x4a89,0x4a48,0x52aa,0x52aa,0x52a9,0x4a68,0x4a68,0x4a48,0x4a69,0x4a89,0x52ca,0x52ea,0x52a9,0x52aa,0x4a89,0x4a89,0x52a9,0x52a9,0x4a89,0x52aa,0x52a9,0x52aa,0x4a89,0x5289,0x5289,0x4248,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x52aa,0x52aa,0x4a89,0x4248,0x4a69,0x4a69,0x4228,0x4228,0x4a69,0x4a89,0x4a89,0x4a89,0x5289,0x52aa,0x4a69,0x52aa,0x4a89,0x4a89,0x52aa,0x52aa,0x4a89,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x4248,0x4248,0x4248,0x4a89,0x4228,0x52aa,0x52a9,0x4248,0x52aa,0x4248,0x4a89,0x4a69,0x5289,0x4a89,0x4a69,0x4a69,0x52ca,0x5289,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a48,0x4a69,0x4248,0x4a89,0x4a89,0x4a48,0x52aa,0x52aa,0x52aa,0x528a,0x5acb,0x52aa,0x52ca,0x4a89,0x4a69,0x4248,0x52ca,0x52aa,0x4a69,0x4a49,0x52aa,0x4a69,0x4228,0x6348,0x6328,0x4228,0x4227,0x4a69,0x4a89,0x4a49,0x39e7,0x4a89,0x4a69,0x4248,0x52aa,0x4a48,0x4a69,0x4a49,0x4a48,0x4a69,0x52aa,0x4a69,0x4a89,0x4a69,0x4a49,0x4a49,0x4a69,0x4a48,0x4228,0x52aa,0x52aa,0x4228,0x4a69,0x4a69,0x4a49,0x4248,0x4248,0x4a69,0x52cb,0x5aeb,0x52aa,0x4a89,0x528a,0x52aa,0x5b0c,0x528a,0x52aa,0x5aeb,0x52cb,0x5aeb,0x5acb,0x5aeb,0x634d,0x5aeb,0x5aca, +0x6bad,0x638c,0x73ce,0x73ee,0x73ce,0x6bad,0x73ce,0x7c0f,0x740e,0x73ee,0x6bad,0x6b8d,0x73cd,0x740f,0x7c70,0x73ee,0x636c,0x6bad,0x73cd,0x636c,0x73ee,0x6bac,0x73ed,0x636c,0x636c,0x5b2b,0x6b8c,0x5b2b,0x636c,0x6bcd,0x638d,0x5b2b,0x634c,0x636c,0x636c,0x636c,0x636c,0x5b2b,0x636c,0x634c,0x5b0b,0x636c,0x5b0b,0x6b6c,0x634c,0x5b0a,0x52ea,0x5b0b,0x6b8c,0x636c,0x5b2b,0x5b0b,0x5aeb,0x5b2b,0x5aea,0x5b0b,0x52a9,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x632c,0x52ca,0x5b0b,0x5b2c,0x5b2b,0x530b,0x5b2b,0x52ca,0x4aca,0x52ca,0x4aa9,0x5b2b,0x52ea,0x4268,0x5b0b,0x52ea,0x52ca,0x52ca,0x4aaa,0x4a89,0x530b,0x52ca,0x4248,0x4a69,0x4248,0x4a8a,0x636a,0x5b2a,0x4a69,0x4ac9,0x4a89,0x52ca,0x52ca,0x4a89,0x52aa,0x52aa,0x4a89,0x3a28,0x4269,0x4a68,0x4268,0x4268,0x4aaa,0x4a89,0x4a89,0x4248,0x4a89,0x3a28,0x4228,0x3a07,0x4a89,0x4268,0x4a69,0x4268,0x3a27,0x4269,0x52aa,0x4a89,0x4a89,0x4248,0x4268,0x4248,0x4a89,0x4a89,0x4aa9,0x52ca,0x4268,0x4a68,0x4a89,0x4228,0x4aa9,0x52aa,0x52ca,0x52aa,0x4a89,0x4a89,0x4aa9,0x52aa,0x4aa9,0x4a89,0x5b0b,0x5b0b,0x5aeb,0x5aea,0x5289,0x4a89,0x52ca,0x4a89,0x52aa,0x52aa,0x4a89,0x52ca,0x4a89,0x5aeb,0x5b0b,0x52aa,0x52ea,0x5b0b,0x5b0b,0x634c,0x5aeb,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b2b,0x632b,0x52ea,0x5b0b,0x634c,0x632c,0x5aeb,0x6b6c,0x52ea,0x5b2b,0x632b,0x630b,0x5aea,0x5b2b,0x6bad,0x632b,0x5aeb,0x6b8d,0x6b8d,0x632c,0x5aeb,0x634c,0x634c,0x6bad,0x6b8d,0x636d,0x6b6d,0x5b0b,0x6b6c,0x6b8d,0x6b8d,0x6b6c,0x73ad,0x6b6d,0x634c,0x634c,0x6b6d,0x634c,0x6b8d,0x73ce,0x73ee,0x636c,0x73ef,0x73ee,0x73ce,0x7c0f,0x73ce,0x73ce,0x73ee,0x6bad,0x8c91,0x8450,0x6b8d,0x73ce,0x8c71,0x8450,0x73ce,0x73ee,0x7c0f,0x7bee,0x7c0f,0x7c2f,0x7bee,0x8c91,0x94d2,0x8c71,0x842f,0x7bef,0x7c0f,0x73ce,0x7bee,0x73ce,0x8c70,0x7bee,0x5b2b,0x8450,0x7c2f,0x73ae,0x7c0f,0x6b8d,0x7c0f,0x7bef,0x8470,0x7c2f,0x7bee,0x7bee,0x73ee,0x7c0f,0x9cf2,0x8c71,0x7bee,0x94b1,0x94b1,0x94b1,0x8430,0x7c0f,0x8c71,0x7bee,0x8c70,0x8470,0x9d34,0x7bef,0x7c0f,0x94b1,0x73ae,0x8c71,0x8c71,0x8c91,0x8cb1,0x9cf2,0x94b2,0x73ce,0x8430,0x7bef,0x73ae,0x7bef,0x94b1,0x9cf3,0x8c71,0x8430,0x8c50,0x94d2,0x7c0f,0x8c91,0x94d2,0x73ce,0x842f,0x8450,0x94b1,0x7c0f,0x8430,0x842f,0x8c71,0x8c71,0x9d13,0x8c71,0x9cf2,0x94b2,0x8c71,0x8c71,0x94d2,0x94b2,0x94b2,0x9d13,0x94d2,0x94b2,0x8430,0x9cf3,0x8c71,0x8430,0x9cf3,0x9491,0x9cf3,0x9491, +0x5b0b,0x630b,0x634c,0x6b6c,0x634c,0x5b0b,0x6b8d,0x638d,0x636c,0x636c,0x634c,0x634c,0x636c,0x634b,0x6b8c,0x73ee,0x634c,0x5b0b,0x634c,0x5b2b,0x636c,0x634b,0x5b0b,0x636c,0x636c,0x634b,0x636c,0x634c,0x634c,0x636c,0x634c,0x63ad,0x636c,0x634c,0x636c,0x634c,0x638c,0x636c,0x636c,0x636c,0x636c,0x6b8d,0x6b8d,0x6bad,0x6bad,0x634b,0x634c,0x638c,0x6bad,0x636c,0x638d,0x636c,0x636c,0x634c,0x6b8c,0x6b8c,0x5b0b,0x634c,0x634c,0x634c,0x636c,0x636c,0x636c,0x5b2b,0x636c,0x6b8d,0x634c,0x634c,0x634c,0x636c,0x636c,0x636c,0x6bad,0x636c,0x5b0b,0x52ea,0x5b4b,0x5b2b,0x634c,0x5b0b,0x634c,0x634c,0x634c,0x5b0b,0x52ea,0x5b2b,0x5b2c,0x6bcc,0x73cd,0x5b2b,0x634c,0x634c,0x632c,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b2c,0x634c,0x5b2b,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2c,0x634c,0x5b0b,0x5b2c,0x5b2c,0x4aa9,0x5aeb,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x52ca,0x52aa,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b0b,0x52ca,0x52aa,0x52eb,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x52eb,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x632b,0x5b0b,0x5aea,0x5aeb,0x52ea,0x5aeb,0x5aca,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x632c,0x5aea,0x5aea,0x632b,0x52aa,0x632c,0x632c,0x5b0b,0x634c,0x632b,0x632b,0x632b,0x632c,0x634c,0x5aeb,0x632c,0x73ad,0x5b0b,0x632b,0x632c,0x634c,0x634c,0x6b6c,0x634c,0x5b2b,0x52ca,0x6b6c,0x6b6c,0x6b6c,0x6b6c,0x6b8d,0x73ad,0x6bad,0x6b8d,0x6b8d,0x634c,0x632c,0x738d,0x6b8d,0x634c,0x6b8d,0x6b8d,0x73ae,0x73ae,0x6b8d,0x6b8d,0x73ce,0x6b8d,0x6b8d,0x73ce,0x6bad,0x73ce,0x73ce,0x73ce,0x738d,0x73ce,0x73ad,0x73ad,0x73ce,0x73ce,0x73ce,0x73ae,0x73ae,0x8430,0x8c71,0x7c0f,0x73ce,0x842f,0x8430,0x8430,0x73ce,0x8430,0x94b2,0x842f,0x842f,0x8430,0x7bee,0x73ce,0x7c0f,0x73ce,0x73ee,0x8430,0x7c0f,0x7bee,0x7c0f,0x73ce,0x73ce,0x8c50,0x8430,0x7bef,0x8430,0x73ce,0x7c0f,0x8470,0x73ee,0x7c0f,0x8410,0x8c71,0x73ce,0x7bef,0x8c50,0x840f,0x840f,0x842f,0x73ce,0x7bef,0x8c71,0x8450,0x73ad,0x8471,0x7c2f,0x8430,0x73ee,0x7bef,0x8471,0x7bef,0x7c0f,0x94b2,0x94b1,0x73ce,0x7bce,0x7c0e,0x7bcd,0x73ad,0x73cd,0x842f,0x7c0f,0x8430,0x8c50,0x8450,0x8430,0x840f,0x842f,0x7c0f,0x73ce,0x7bee,0x7bce,0x7bef,0x7c0f,0x8450,0x7c0f,0x73ae,0x738d,0x7bee,0x7bef,0x6b8d,0x840f,0x7bef,0x73ae,0x7bef,0x8430,0x7c0f,0x738d,0x7bef,0x634c,0x73ae,0x73ce,0x73ae,0x738d,0x738d,0x6b6d,0x6b4c,0x6b8d, +0x5b2b,0x6b4c,0x73ad,0x6b8d,0x634c,0x5b0b,0x6bad,0x73ce,0x634c,0x634c,0x6bad,0x5b0b,0x636c,0x6b6c,0x6b6c,0x6b8d,0x6b8d,0x6b6c,0x636c,0x632c,0x636c,0x634c,0x632b,0x634c,0x6b8c,0x636c,0x6b8c,0x6b8d,0x634c,0x636c,0x638d,0x6b8d,0x634c,0x6b8d,0x6b8d,0x6b8d,0x636c,0x5b0b,0x5b0b,0x6b8d,0x73ce,0x6b8d,0x6bad,0x636c,0x6b6d,0x6b8d,0x634c,0x634c,0x6b8d,0x636c,0x5b4c,0x636c,0x5b2b,0x634c,0x6bad,0x6b8c,0x638c,0x634c,0x636c,0x5b2b,0x634c,0x638d,0x636c,0x636c,0x636c,0x6b8d,0x636c,0x5b0b,0x632c,0x632c,0x6b8d,0x636c,0x52eb,0x634c,0x5b0b,0x634c,0x5b2c,0x5b2b,0x636d,0x636c,0x6bad,0x5b4c,0x636c,0x6b8d,0x5b2b,0x52eb,0x5b0b,0x4aca,0x5b2b,0x634c,0x634c,0x5b0b,0x5aea,0x52ca,0x5b2c,0x636c,0x634c,0x5b2c,0x634c,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x5b0b,0x636c,0x632c,0x52ca,0x52ca,0x5b2c,0x52eb,0x5b2b,0x634c,0x5b2b,0x5b0b,0x5b2c,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x52aa,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52aa,0x52ca,0x4269,0x52ca,0x5b2c,0x634c,0x52ca,0x52ca,0x52ca,0x5b2b,0x636c,0x5b2b,0x5b0b,0x5aeb,0x5b0a,0x632b,0x6b6c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b2b,0x5b0b,0x632c,0x5b0b,0x4a89,0x52ca,0x5b0b,0x5b0b,0x5b2b,0x5aeb,0x52ca,0x632b,0x634c,0x5aeb,0x5b0b,0x632b,0x52ca,0x636c,0x5b2b,0x6b6d,0x6b8d,0x632c,0x5aeb,0x632c,0x634c,0x5b2b,0x632c,0x634c,0x636c,0x632c,0x5b0b,0x634c,0x636c,0x634c,0x634c,0x6b8d,0x634c,0x634c,0x634c,0x6b6c,0x6b6d,0x73ad,0x6b6c,0x6b8d,0x632c,0x632b,0x632c,0x6b6d,0x632c,0x73ef,0x6b8d,0x6b6d,0x632c,0x6b8d,0x6b6d,0x5aeb,0x6b8d,0x632c,0x5aeb,0x634c,0x634c,0x632b,0x632b,0x6b4c,0x6b6d,0x6b6d,0x6b8d,0x634c,0x634c,0x6b8d,0x636c,0x634c,0x636d,0x6bae,0x73ce,0x6b8d,0x6bae,0x5b0b,0x6b6d,0x73ae,0x632c,0x5b0b,0x632c,0x6b4c,0x6b6d,0x73ae,0x6b8d,0x6b6d,0x636c,0x6b6d,0x73ef,0x73ae,0x73ae,0x73ae,0x7bef,0x7c0f,0x6b8d,0x73ae,0x73ae,0x632c,0x632c,0x634c,0x6b6d,0x7bef,0x73ae,0x636d,0x73ae,0x7bee,0x6b8d,0x73ae,0x73ae,0x632c,0x6b4c,0x73ad,0x73ae,0x73ae,0x6b6d,0x73ad,0x6b4c,0x6b8d,0x73ce,0x634c,0x632c,0x73ad,0x6b6d,0x6b6c,0x632c,0x6b8d,0x738c,0x73ac,0x73ad,0x738d,0x73ad,0x73ad,0x6b8d,0x73ae,0x738d,0x6b8d,0x634c,0x6b4c,0x738d,0x73ae,0x5b0b,0x634c,0x6b6d,0x6b6d,0x632c,0x634c,0x6b4c,0x632c,0x630c,0x632c,0x52ca,0x632c,0x6b6d,0x5b0b,0x5aeb,0x6b8d,0x738e,0x5b0b,0x630c,0x632c,0x6b6d,0x6b4d,0x634c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b, +0x632c,0x634c,0x6b6c,0x5b2b,0x5b2c,0x634c,0x634c,0x5b0b,0x5aeb,0x5b2c,0x634c,0x632c,0x636c,0x636d,0x5b2b,0x6b6d,0x634c,0x5b0b,0x634c,0x5b2b,0x52ca,0x5b2b,0x638d,0x634c,0x5b0b,0x638d,0x636d,0x636c,0x636c,0x636c,0x52ea,0x5b0b,0x632c,0x638d,0x6b8d,0x634c,0x5b4c,0x634c,0x52eb,0x5b4c,0x5b2b,0x5b0b,0x636c,0x5b2c,0x52eb,0x5b2b,0x5b2b,0x5b2b,0x634c,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x634c,0x52ea,0x634c,0x530b,0x52ea,0x634c,0x634c,0x5b0b,0x5b2b,0x5b0b,0x530b,0x5b0b,0x52eb,0x5b2b,0x5aeb,0x52ea,0x530b,0x4aca,0x530b,0x636c,0x5b2b,0x5b2b,0x5b0b,0x52eb,0x5b0b,0x530b,0x52eb,0x5b0b,0x530b,0x5b2c,0x530b,0x52ea,0x4a8a,0x4a8a,0x52eb,0x634c,0x52ea,0x52ca,0x5b2c,0x52eb,0x52ca,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5aeb,0x5b2c,0x5b0b,0x4aaa,0x52ea,0x52ea,0x5b2b,0x634c,0x4a89,0x5aeb,0x52aa,0x4a89,0x52ea,0x52eb,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x634c,0x632c,0x5b0b,0x52ea,0x52ca,0x4a89,0x5aea,0x5b2b,0x5b0b,0x5aeb,0x5b2b,0x52eb,0x4a69,0x52eb,0x4aaa,0x4a89,0x52ca,0x5b0b,0x5b0b,0x52aa,0x52eb,0x5b0b,0x52ca,0x634c,0x5aea,0x52ca,0x632b,0x5aea,0x5aeb,0x52ea,0x52ca,0x52ca,0x5b2b,0x5b0b,0x52ca,0x52ca,0x5aeb,0x52aa,0x5aeb,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x52ca,0x52ca,0x52aa,0x52ca,0x5b0b,0x52a9,0x5b0b,0x5b0b,0x5aeb,0x4a89,0x5aeb,0x632c,0x52ca,0x52cb,0x5b0c,0x632c,0x5aeb,0x52eb,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5acb,0x636c,0x6bad,0x632c,0x5aeb,0x632c,0x634c,0x634c,0x634c,0x52eb,0x5b2c,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636c,0x632c,0x6b6d,0x632c,0x5aeb,0x5aeb,0x634c,0x634c,0x630b,0x52aa,0x634c,0x632c,0x52ca,0x5b0b,0x6b8d,0x634c,0x6b8d,0x6b8d,0x73ce,0x6b6d,0x634c,0x6b6d,0x73ae,0x634c,0x632c,0x6b6d,0x6b6d,0x5aeb,0x6b8d,0x6b6d,0x5b0c,0x73ce,0x73ce,0x636d,0x634c,0x7c0f,0x73cf,0x630c,0x6b6d,0x6b6d,0x73ce,0x6b6d,0x73ae,0x634c,0x73ce,0x6b8d,0x7bef,0x73ce,0x6b8d,0x73ae,0x6b8d,0x632c,0x73ce,0x6b6c,0x636c,0x6bae,0x6b8d,0x634d,0x6b6d,0x6b6c,0x7bce,0x7bef,0x73ce,0x632c,0x6b4c,0x840f,0x7bce,0x6b6d,0x6b6d,0x6b6d,0x634c,0x6b6d,0x6b6d,0x738d,0x7bce,0x634b,0x6b6c,0x73ae,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x632c,0x632c,0x6b6d,0x634c,0x630b,0x634c,0x73ae,0x6b8d,0x634d,0x5b0c,0x632c,0x5b0b,0x6b6d,0x5aeb,0x632c,0x632c,0x632c,0x634c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630c,0x738e,0x5b0c,0x5acb,0x632b,0x632c,0x5aeb,0x5aeb,0x632c,0x52ca,0x4a89,0x6b6d, +0x52ca,0x5289,0x5aea,0x52a9,0x5aeb,0x5aca,0x5289,0x4a68,0x4a89,0x5aeb,0x52ca,0x632c,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x52ca,0x4aa9,0x4a69,0x52aa,0x52eb,0x52eb,0x52ca,0x52ca,0x4a89,0x5aeb,0x52aa,0x4a89,0x52eb,0x5b2b,0x4aa9,0x5b0c,0x5aeb,0x5b0b,0x5b2c,0x634c,0x634c,0x5b0b,0x5b0b,0x52ca,0x636d,0x73ce,0x632c,0x5b0b,0x52eb,0x5b2c,0x6bad,0x5b0b,0x52ca,0x5b0b,0x5aeb,0x52ca,0x636c,0x5b0b,0x530b,0x52ea,0x52ca,0x5aeb,0x52ca,0x5b0b,0x52ca,0x5b0b,0x52aa,0x5b0b,0x52cb,0x52aa,0x52ca,0x52eb,0x4aaa,0x52eb,0x52ca,0x5b0b,0x52eb,0x52eb,0x52ca,0x632c,0x5aeb,0x52aa,0x5b0b,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4a69,0x5aeb,0x52ca,0x52ca,0x4248,0x4a89,0x4a89,0x5b0b,0x4aaa,0x4aa9,0x52ea,0x52eb,0x52ca,0x52ca,0x52ca,0x52eb,0x4a89,0x4a89,0x52aa,0x52aa,0x4a89,0x4a69,0x4aa9,0x52ca,0x5b0b,0x52ea,0x52ca,0x4a89,0x52ea,0x4a89,0x4a89,0x4a69,0x4a69,0x5aeb,0x5b0b,0x52ca,0x52aa,0x52ca,0x5b0b,0x52ca,0x4a89,0x4a89,0x4a89,0x4248,0x5aeb,0x4aaa,0x4a69,0x4a89,0x4a69,0x52aa,0x52aa,0x4248,0x4a69,0x4a89,0x4a89,0x4aa9,0x4a69,0x52aa,0x52aa,0x52cb,0x4a89,0x4a89,0x52a9,0x4a89,0x4a69,0x5289,0x52ca,0x4a89,0x4a89,0x4a69,0x4a69,0x4269,0x52ca,0x52a9,0x4a89,0x52a9,0x52ca,0x52ca,0x52aa,0x4a89,0x4a69,0x4269,0x5aeb,0x52aa,0x52aa,0x52ca,0x4a89,0x52aa,0x52ca,0x4aa9,0x4a89,0x52aa,0x5aeb,0x5b0b,0x4a89,0x4248,0x52ca,0x4a89,0x4a69,0x52ca,0x5289,0x4a69,0x52aa,0x4a69,0x4a89,0x52ca,0x5aeb,0x52aa,0x5b2b,0x4a89,0x5aca,0x5b0b,0x52ca,0x5b0b,0x634c,0x52ca,0x52aa,0x52ca,0x6b8d,0x5b0b,0x632c,0x5b2c,0x5b0b,0x632c,0x632c,0x5aeb,0x5aeb,0x5aeb,0x630b,0x632c,0x630b,0x634c,0x5aeb,0x632c,0x630c,0x634c,0x5b0b,0x632c,0x634c,0x5aeb,0x630c,0x4a89,0x6b6d,0x634c,0x634c,0x5aeb,0x52cb,0x634d,0x632c,0x5b0b,0x630c,0x630c,0x738d,0x6b6d,0x5aec,0x634c,0x634c,0x6b6d,0x6b4c,0x5aeb,0x5b0b,0x6b6d,0x634c,0x632c,0x52ca,0x5aeb,0x6b6d,0x738e,0x630b,0x6b6d,0x634c,0x632c,0x632c,0x5aca,0x632c,0x632c,0x634c,0x73ae,0x632c,0x5b0c,0x632c,0x632c,0x52ca,0x5b0b,0x6b8d,0x632c,0x632c,0x6b4c,0x632c,0x632c,0x6b6d,0x632c,0x52ca,0x630b,0x632c,0x5aeb,0x6b4c,0x632c,0x634c,0x6b6d,0x5aeb,0x5aeb,0x632c,0x5aeb,0x634d,0x6b6d,0x630c,0x5aeb,0x632c,0x632c,0x630c,0x5b0c,0x5b0b,0x52aa,0x5acb,0x5b0b,0x52aa,0x5aeb,0x632c,0x52aa,0x5aeb,0x630c,0x5b0b,0x52aa,0x52aa,0x5acb,0x5acb,0x5aeb,0x4a69,0x5289,0x52aa,0x4a69,0x52aa,0x52aa,0x4228,0x4a48,0x4a89, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x1020,0x1080,0x2103,0x2103,0x1080,0x18e2,0x2103,0x2103,0x20e2,0x20e2,0x1060,0x18c2,0x20e2,0x20e2,0x2123,0x2103,0x18a1,0x2103,0x2944,0x2923,0x2923,0x2923,0x3185,0x2123,0x3185,0x2944,0x3a07,0x4a48,0x2943,0x39c6,0x31a6,0x31a5,0x3185,0x2944,0x2944,0x2964,0x31a5,0x39c6,0x31a5,0x2964,0x39c6,0x31a5,0x2964,0x3185,0x3185,0x31a5,0x31a5,0x39e6,0x31c6,0x39e6,0x3185,0x3185,0x2964,0x39c6,0x39e6,0x31a5,0x3185,0x39e6,0x2964,0x3185,0x31a5,0x39e6,0x31a5,0x31a5,0x31c6,0x31a5,0x31a5,0x3185,0x31a5,0x2964,0x31a5,0x39e6,0x3185,0x2144,0x2944,0x2985,0x2965,0x2964,0x3185,0x39c6,0x39c6,0x2944,0x31a5,0x2964,0x31a6,0x31c6,0x2944,0x31a5,0x39e6,0x39e7,0x39c6,0x2964,0x39e6,0x39e6,0x3185,0x39c6,0x31a5,0x39c6,0x31c6,0x2985,0x39e7,0x31a6,0x3185,0x2944,0x31a5,0x39e6,0x31c6,0x2985,0x3185,0x31a5,0x39c6,0x3a07,0x39c6,0x39e6,0x2923,0x2923,0x2964,0x2943,0x31a5,0x39e6,0x2965,0x3185,0x2944,0x2985,0x39e7,0x31c6,0x31a5,0x31c6,0x39c6,0x3185,0x39e7,0x39e7,0x3185,0x3185,0x39a6,0x39c6,0x2964,0x31a5,0x39e6,0x2923,0x2102,0x31a5,0x3165,0x3185,0x39c6,0x31a6,0x3185,0x3164,0x2923,0x31a5,0x3185,0x3185,0x39e6,0x39e6,0x3a07,0x39e6,0x39c6,0x39c6,0x4227,0x39a5,0x39a6,0x39a6,0x4207,0x4227,0x39c6,0x4207,0x39e7,0x39e6,0x4207,0x39e6,0x31a5,0x39c6,0x39e6,0x4207,0x39e6,0x39c6,0x39e7,0x39e7,0x4207,0x39a6,0x39e7,0x31a5,0x4207,0x39e6,0x31a6,0x39e7,0x39c6,0x4a48,0x4206,0x39e6,0x4207,0x39c6,0x39e6,0x4a28,0x4207,0x39c6,0x4207,0x4227,0x4207,0x4207,0x4228,0x4207,0x4207,0x39e7,0x39c6,0x4207,0x4228,0x3a07,0x4207,0x39c6,0x39e7,0x39e6,0x39e7,0x4a49,0x31a6,0x39c6,0x39e7,0x4208,0x31a6,0x4228,0x39e7,0x4227,0x4207,0x39c7,0x39e7,0x3185,0x4207,0x4228,0x39e6,0x39c6,0x31a5,0x39c6,0x39a6,0x39c6,0x39e6,0x39c6,0x31a5,0x39c6,0x4207,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39e6,0x4207,0x31a5,0x3a07,0x4207,0x4207,0x4227,0x4228,0x39c6,0x4207,0x39e6,0x39c6,0x39c6,0x4207,0x41e7,0x39c6,0x31a5,0x39c6,0x31a6,0x39c7,0x39e7,0x39c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a5,0x39c6,0x31a6,0x31a6,0x3185,0x2965,0x2965,0x31a6,0x31a5,0x3185,0x2965,0x3185,0x39c6,0x31c6,0x2965,0x2985,0x2965,0x2944,0x39a6,0x3185,0x2124,0x18e3,0x1081,0x0862,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0840,0x0000,0x0862,0x0000,0x0000, +0x1126,0x0905,0x00a5,0x0065,0x0065,0x0025,0x0004,0x0004,0x0004,0x0004,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0001,0x0002,0x0003,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0001,0x0003,0x0003,0x0000,0x0001,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0001,0x0001,0x0021, +0xeeec,0xeecc,0xeecb,0xeecc,0xeeac,0xeecc,0xe6ab,0xe6ab,0xe6ac,0xe6ac,0xe6cc,0xe6ac,0xe6ad,0xe6ac,0xe68c,0xe6ac,0xe6ac,0xe66a,0xe66b,0xe68c,0xe6ad,0xe68d,0xe66d,0xde4c,0xde4c,0xde4d,0xde6d,0xde4d,0xde2b,0xd60b,0xde4d,0xde4d,0xe64c,0xde2b,0xe60a,0xde2b,0xdde8,0xaca7,0x8be9,0x9406,0xc589,0xde2c,0xe64b,0xe64b,0xde2a,0xde09,0xde2a,0xde2a,0xde2a,0xd5e9,0xd5ea,0xde2a,0xde28,0xde29,0xde29,0xde49,0xde29,0xe649,0xe649,0xe648,0xe649,0xe649,0xe649,0xe669,0xde49,0xe669,0xe668,0xde27,0xd5e7,0xde07,0xde27,0xe628,0xe627,0xe627,0xe647,0xe667,0xe668,0xe668,0xe626,0xde05,0xde06,0xe626,0xe626,0xe606,0xe606,0xe626,0xe626,0xe626,0xe627,0xe627,0xe627,0xe626,0xe606,0xdde5,0xdde5,0xe5e4,0xdde4,0xddc4,0xddc4,0xdde4,0xddc4,0xe5e4,0xddc4,0xdd82,0xdd62,0xdd83,0xdd83,0xdd83,0xdda3,0xe5c4,0xe605,0xdde4,0xdda3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5c3,0xe5a3,0xddc3,0xdda3,0xdd83,0xddc3,0xddc3,0xdd83,0xdda3,0xdda3,0xdd83,0xdd82,0xdd64,0xd543,0xd543,0xd544,0xd584,0xdda4,0xdda4,0xddc4,0xdda3,0xdda4,0xdda4,0xdda4,0xdda4,0xdda5,0xdda5,0xdd85,0xd585,0xd565,0xdd85,0xe5c5,0xdda5,0xdd85,0xdda5,0xddc5,0xe5e6,0xe606,0xe5e6,0xe5e7,0xe5e7,0xde06,0xd5a7,0xddc6,0xddc6,0xcd87,0xcd86,0xd586,0xddc7,0xe607,0xdde6,0xd5a6,0xcd66,0xcd87,0xcd66,0xcd86,0xddc6,0xddc6,0xdde7,0xe607,0xe607,0xe5e7,0xdde7,0xde07,0xde27,0xe627,0xdde6,0xdde7,0xddc7,0xdde7,0xdde7,0xdde7,0xe627,0xe627,0xe607,0xe647,0xde07,0xde08,0xe608,0xdde8,0xdde7,0xdde7,0xde07,0xde07,0xde07,0xde28,0xe628,0xde07,0xe608,0xdde7,0xddc7,0xddc7,0xdde7,0xddc8,0xdde7,0xdde7,0xde08,0xddc7,0xc528,0xde08,0xe648,0xe628,0xde08,0xde07,0xe628,0xe627,0xde08,0xe627,0xcd67,0xb508,0xcda8,0xdde8,0xe647,0xe627,0xe647,0xe667,0xe627,0xcd67,0xbd28,0xe647,0xe647,0xe647,0xe628,0xddc7,0xddc7,0xdde7,0xdde7,0xddc7,0xddc8,0xd5c8,0xd5a8,0xd5a8,0xd588,0xddc7,0xd5a7,0xc567,0xcd88,0xd5c8,0xdde8,0xdde8,0xd5c8,0xd5a7,0xddc8,0xdda7,0xddc7,0xddc8,0xddc7,0xddc8,0xdde8,0xd5a7,0xd587,0xcd67,0xcd47,0xc527,0xb4e7,0xc547,0xa4a9,0x8c28,0xa4c8,0x9c68,0x8c29,0xa4a8,0xb4e8,0xbd28,0xb509,0xbd08,0xbd27,0xc527,0xc527,0xc548,0xc527,0xcd27,0xc527,0xc547,0xbd27,0xbd07,0xa4a8,0xa488,0xcd68,0xcd67,0xcd68,0xc547,0xc547,0xc548,0xc568,0xc548,0xc528,0xd588,0xcd67,0xcd88,0xc549,0xcd88,0xd5a8,0xd5c7,0xd5a7,0xd5c8,0xd5a7,0xd5a7,0xcd68,0xbd48,0xa4c9, +0xb484,0xb484,0xb484,0xb484,0xb484,0xb4a4,0xb4a4,0xb483,0xb484,0xb4a4,0xbcc4,0xbca4,0xbca4,0xbca4,0xb4a4,0xb4a4,0xb4a4,0xbcc4,0xbcc5,0xbca4,0xb4a4,0xb484,0xb484,0xac64,0xb464,0xac64,0xb484,0xb484,0xac84,0xa444,0xac65,0xb484,0xbcc4,0xbcc4,0xbcc3,0xbce4,0xc4e3,0xbce5,0xc507,0xc503,0xc567,0xbd07,0xc4e3,0xc4e4,0xc4c3,0xc4c3,0xc4c3,0xc4c4,0xbca3,0xbca3,0xc4e4,0xc4e3,0xc4e3,0xc503,0xc503,0xc4e3,0xc4e3,0xc4e3,0xc4e3,0xc503,0xc4e3,0xcd03,0xcd03,0xcd03,0xc503,0xc4e4,0xc523,0xc543,0xc523,0xc523,0xc503,0xc4e3,0xc4c3,0xc4e3,0xcd03,0xcd03,0xcd03,0xcd03,0xc4e3,0xc503,0xc4e3,0xc4c3,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xc4e2,0xcce2,0xc4c2,0xc4c2,0xc4c2,0xc4e2,0xc4c2,0xc4c1,0xc4c2,0xc4e2,0xc4e2,0xccc1,0xccc2,0xcce2,0xc4a1,0xc4c2,0xccc2,0xc4c1,0xc4a2,0xc4a2,0xc4a1,0xccc3,0xc4c2,0xc4a1,0xc4c2,0xc4c3,0xc4c2,0xc4c2,0xc4c2,0xc4a2,0xc4a1,0xc4c2,0xccc3,0xccc2,0xc4c1,0xc4c2,0xc4c3,0xc4c3,0xc4a1,0xc4a2,0xc4c1,0xbc82,0xc4a3,0xc4c2,0xc4c1,0xc4e2,0xc4e3,0xbcc2,0xc4c2,0xcce3,0xc4c2,0xc4e2,0xc4c3,0xccc4,0xc4a3,0xc483,0xc4a3,0xc4a3,0xc4a3,0xc4a3,0xc4c4,0xc4e4,0xc4c3,0xc4e4,0xc4c4,0xc4a2,0xc4a4,0xc483,0xbc63,0xb464,0xb463,0xac64,0xac64,0xb483,0xa403,0xa424,0x9bc5,0xa404,0xbca3,0xbc84,0xbca4,0xb464,0xb464,0xbce4,0xc4e5,0xc4c3,0xc4c4,0xc4c5,0xbca3,0xbca3,0xbca3,0xbca4,0xb4a5,0xbcc5,0xc4c4,0xc484,0xc484,0xc4c5,0xbc85,0xb486,0xbca5,0xbcc4,0xc4e6,0xc4e6,0xc505,0xc4c5,0xc4a5,0xc4c5,0xbca6,0xbcc6,0xbce5,0xc525,0xc546,0xc546,0xc546,0xc525,0xc525,0xcd67,0xc547,0xc526,0xc547,0xc568,0xc547,0xc546,0xc546,0xc567,0xbd06,0xa447,0xbd26,0xc546,0xbd06,0xbce6,0xc526,0xc546,0xc526,0xc526,0xc506,0xb466,0x9407,0x9c26,0xa486,0xb4c6,0xbd06,0xc526,0xc546,0xc526,0xb466,0xac67,0xc526,0xc526,0xc526,0xbd26,0xbd06,0xc526,0xc527,0xbd07,0xbd07,0xbd07,0xbd08,0xbd27,0xbd07,0xbd27,0xc547,0xbd27,0xbd28,0xbd48,0xbd48,0xbd48,0xbd29,0xbd29,0xbd29,0xbd49,0xbd48,0xbd48,0xbd49,0xbd49,0xbd49,0xbd49,0xbd49,0xbd08,0xacc9,0xacc9,0xacc8,0x9c89,0xa4c9,0x8c2a,0x7bea,0x8c09,0x8c2a,0x840a,0x8c49,0x9c88,0xaca8,0xa489,0x9c48,0x9448,0xa488,0xa468,0x9c69,0x9c69,0x9c68,0x9c48,0x9c48,0x9428,0x8c08,0x83c9,0x83a9,0x9c49,0x9c49,0x9429,0x8c08,0x8c08,0x83e8,0x83e8,0x83e8,0x83e8,0x8c28,0x8c08,0x8c08,0x7b69,0x83a8,0x8be8,0x8c07,0x8be7,0x8c07,0x8be7,0x83c7,0x7ba8,0x7b88,0x7349, +0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0004,0x0005,0x0003,0x0002,0x0004,0x0005,0x0003,0x0004,0x0005,0x0002,0x0005,0x0005,0x0004,0x0005,0x0004,0x0002,0x0004,0x0005,0x0005,0x0004,0x0002,0x0004,0x0005,0x0004,0x0004,0x0005,0x0004,0x0003,0x0002,0x0002,0x0003,0x0004,0x0005,0x0005,0x0005,0x0005,0x0003,0x0003,0x0005,0x0005,0x0005,0x0005,0x0005,0x0002,0x0004,0x0006,0x0005,0x0002,0x0003,0x0006,0x0006,0x0003,0x0005,0x0006,0x0004,0x0005,0x0004,0x0004,0x0006,0x0003,0x0003,0x0006,0x0004,0x0004,0x0006,0x0066,0x0004,0x0004,0x0006,0x0006,0x0005,0x0003,0x0005,0x0007,0x0006,0x0006,0x0005,0x0003,0x0002,0x0002,0x0003,0x0006,0x0006,0x0006,0x0005,0x0003,0x0006,0x0005,0x0005,0x0006,0x0004,0x0004,0x0006,0x0005,0x0006,0x0004,0x0005,0x0047,0x0047,0x0006,0x0004,0x0007,0x0007,0x0006,0x0005,0x0005,0x0008,0x0007,0x0004,0x0005,0x0028,0x0068,0x0005,0x0005,0x0005,0x0006,0x00a7,0x0006,0x0004,0x0004,0x0004,0x0004,0x0003,0x0004,0x0004,0x0004,0x0003,0x0004,0x0004,0x0004,0x0003,0x0004,0x0004,0x0003,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0003,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0003,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0005,0x0005,0x0004,0x0004,0x0004,0x0004,0x0004,0x0003,0x0003,0x0004,0x0003,0x0003,0x0005,0x0003,0x0003,0x0003,0x0003,0x0004,0x0004,0x1004,0x0003,0x0004,0x1844,0x1804,0x2024,0x2064,0x0004,0x3104,0x2924,0x00a7,0x0005,0x0004,0x0005,0x0004,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x00a5,0x0025,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0005,0x0065, +0x3143,0x3143,0x3164,0x3163,0x2963,0x2943,0x2943,0x2943,0x2943,0x2942,0x2943,0x2942,0x3184,0x3164,0x2922,0x2923,0x2943,0x3163,0x2922,0x3143,0x2943,0x2101,0x2922,0x2922,0x2102,0x2102,0x2922,0x2102,0x2102,0x2102,0x2102,0x2922,0x2902,0x2922,0x2922,0x2901,0x2922,0x2922,0x2102,0x2102,0x2122,0x2922,0x2101,0x2922,0x2922,0x2922,0x2942,0x2101,0x20e0,0x2101,0x2922,0x2101,0x2101,0x2922,0x2101,0x2101,0x2101,0x20e1,0x20e1,0x2101,0x20e1,0x2101,0x2102,0x2122,0x2101,0x2101,0x2101,0x2922,0x2122,0x2101,0x2101,0x2902,0x2101,0x2102,0x2101,0x2101,0x2101,0x2101,0x20e1,0x20e1,0x20c0,0x20e0,0x20e0,0x20e0,0x20c0,0x20e0,0x20c0,0x20c0,0x20c0,0x20c0,0x20c0,0x20e0,0x20c0,0x18c0,0x18c0,0x20e0,0x20c0,0x20c0,0x20c0,0x20e0,0x18c0,0x2922,0x2102,0x18c0,0x20c0,0x20e0,0x2101,0x20e1,0x20e1,0x2102,0x20c0,0x2102,0x2922,0x2101,0x20e1,0x20c0,0x20c0,0x2102,0x2122,0x2922,0x2902,0x20e0,0x20c0,0x2122,0x2942,0x2922,0x20e0,0x20e0,0x20e0,0x20c0,0x20e1,0x20e0,0x18c0,0x2102,0x2122,0x2922,0x20e0,0x20e0,0x20e0,0x20e0,0x2902,0x2942,0x2922,0x20c0,0x20c0,0x2101,0x2902,0x2102,0x20e1,0x20e1,0x2902,0x2922,0x2101,0x2101,0x2122,0x2922,0x28e1,0x20c0,0x20e1,0x2901,0x20e1,0x20e0,0x20e1,0x2101,0x2902,0x2922,0x2922,0x2922,0x2901,0x2902,0x2922,0x2923,0x2923,0x2922,0x2942,0x2943,0x2943,0x2902,0x2901,0x28e1,0x2901,0x20e1,0x2101,0x2943,0x2923,0x2902,0x2902,0x2943,0x2102,0x20e1,0x2923,0x2922,0x2902,0x2943,0x3163,0x2943,0x2922,0x3163,0x2943,0x3164,0x3184,0x2942,0x2963,0x3164,0x3164,0x3164,0x2943,0x3163,0x2943,0x2943,0x2943,0x2964,0x3184,0x3163,0x3184,0x3184,0x3163,0x2943,0x3163,0x2943,0x2943,0x2922,0x2942,0x2943,0x2943,0x2942,0x2943,0x2923,0x2103,0x2923,0x2943,0x2943,0x2922,0x2963,0x2963,0x2943,0x2963,0x3984,0x39c3,0x39c3,0x39a3,0x3163,0x3163,0x39c4,0x41c4,0x2983,0x39a4,0x41e4,0x39a4,0x41e5,0x41c4,0x39a4,0x41e4,0x41c4,0x3185,0x3184,0x3184,0x3184,0x3185,0x3184,0x3184,0x31a5,0x31a4,0x31a4,0x39c5,0x39a5,0x39a5,0x31a5,0x3184,0x3184,0x3184,0x39a5,0x39c5,0x3185,0x3184,0x2964,0x3184,0x2964,0x3185,0x3184,0x3185,0x41c4,0x39e4,0x39e4,0x39a4,0x2963,0x39c4,0x41e5,0x3183,0x3184,0x41c5,0x31a4,0x39a4,0x41c4,0x3184,0x39c4,0x41e5,0x39e6,0x31a5,0x31a5,0x3164,0x2964,0x2964,0x2964,0x2964,0x2944,0x2944,0x2964,0x2964,0x2965,0x2964,0x2964,0x2964,0x2964,0x2964,0x3184,0x3185,0x3185,0x2944,0x3185, +0x52ca,0x52ca,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x4a89,0x52ca,0x4aaa,0x4a89,0x4a89,0x4a69,0x4269,0x4aaa,0x4289,0x4a89,0x4aaa,0x52ca,0x4aa9,0x4a89,0x4269,0x4268,0x4a89,0x4aa9,0x4a89,0x4a89,0x4a69,0x4269,0x4248,0x4a69,0x4a69,0x4269,0x4aaa,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4269,0x4269,0x4228,0x4248,0x4a89,0x4a69,0x4228,0x4248,0x4a89,0x4a69,0x4269,0x4a89,0x4269,0x4268,0x4aa9,0x4aa9,0x4aa9,0x4289,0x4a89,0x4289,0x4269,0x4268,0x4227,0x4a68,0x4a89,0x4248,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a68,0x4248,0x3a27,0x4228,0x4248,0x4248,0x4248,0x3a28,0x3a28,0x4268,0x4269,0x3a28,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x4269,0x3a28,0x3a28,0x3a28,0x4228,0x4269,0x3a28,0x4228,0x4269,0x4249,0x3a28,0x3a07,0x4248,0x4268,0x4268,0x4228,0x39e7,0x3a07,0x4248,0x3a07,0x3a28,0x4228,0x39e7,0x4228,0x4228,0x4248,0x4248,0x3a07,0x3a08,0x4228,0x3a28,0x3a28,0x4248,0x3a07,0x3a07,0x4268,0x4248,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x31c7,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x39e7,0x39e7,0x4228,0x3a28,0x3a27,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x3a08,0x4248,0x3a07,0x3a07,0x4228,0x3a07,0x3a08,0x4228,0x3a07,0x3a08,0x3a28,0x3a28,0x4228,0x3a07,0x4248,0x4248,0x4248,0x4a69,0x4208,0x4a49,0x4a69,0x4249,0x4228,0x4248,0x4228,0x4208,0x4228,0x4208,0x3a07,0x4228,0x3a07,0x39e7,0x4228,0x4228,0x3a28,0x4228,0x4249,0x4228,0x4228,0x4249,0x4248,0x4228,0x4248,0x4248,0x4a69,0x4248,0x4228,0x4228,0x4a69,0x4a69,0x4249,0x4228,0x4a69,0x4a8a,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x528a,0x4a8a,0x4a69,0x4a89,0x52aa,0x4a8a,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4a89,0x52a9,0x4a8a,0x4248,0x4248,0x52aa,0x528a,0x52a9,0x5aea,0x5289,0x5289,0x3a29,0x3249,0x3229,0x4a8a,0x52aa,0x4229,0x4249,0x52a9,0x4269,0x3a28,0x4a69,0x3a49,0x3a48,0x4aaa,0x4a69,0x4249,0x4a89,0x5aca,0x52ca,0x4a89,0x4a89,0x52aa,0x4a89,0x4a69,0x528a,0x52aa,0x52aa,0x5aea,0x52ca,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x4a89,0x4a89,0x4a69,0x528a,0x52aa,0x4a8a,0x4a8a,0x52a9,0x3a6a,0x4229,0x41e8,0x3209,0x52c9,0x52a9,0x39e8,0x4a89,0x4a89,0x3a29,0x4a49,0x4a89,0x4228,0x4248,0x4a48,0x4207,0x4a89,0x52c9,0x52aa,0x5289,0x5289,0x4a89,0x4a89,0x4a89,0x4a8a,0x4a89,0x528a,0x52ca,0x4a69,0x4a69,0x4a69,0x4a48,0x528a,0x4a89,0x52ca,0x4a69,0x528a,0x5aca,0x52aa, +0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b2b,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x52eb,0x52eb,0x52eb,0x530b,0x5b0b,0x52eb,0x530b,0x5b2b,0x5b2b,0x5b0b,0x530b,0x5b0b,0x530b,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x530b,0x52eb,0x52eb,0x52eb,0x530b,0x52eb,0x52ca,0x52ea,0x52ea,0x4aaa,0x52ca,0x52eb,0x52eb,0x52eb,0x52ea,0x52ea,0x52ea,0x530b,0x530b,0x530b,0x52eb,0x530b,0x530b,0x52ea,0x530b,0x530b,0x52ca,0x52ea,0x52ea,0x52eb,0x5b0b,0x52ea,0x52eb,0x52eb,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aca,0x4aca,0x52ea,0x530b,0x530b,0x530b,0x4aca,0x52ea,0x5b2b,0x52eb,0x52eb,0x5b2c,0x5b2c,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x530b,0x52eb,0x52eb,0x52eb,0x5b0b,0x5b2b,0x4289,0x4aa9,0x5b2b,0x530b,0x52eb,0x3a28,0x4a89,0x4269,0x4248,0x52ea,0x3a48,0x31e6,0x3a28,0x4248,0x52ca,0x530b,0x4288,0x3206,0x3a47,0x4288,0x52ea,0x5b0b,0x4268,0x3227,0x3a27,0x4aa9,0x5b0b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x4a89,0x3a48,0x4268,0x52eb,0x5aeb,0x52eb,0x5b0b,0x4248,0x4247,0x4268,0x5b0b,0x5b0b,0x52ca,0x4248,0x4289,0x52ea,0x52eb,0x4248,0x39e6,0x4a89,0x4aa9,0x3a48,0x4248,0x4a89,0x5b2b,0x52eb,0x4a89,0x52aa,0x5b0b,0x4268,0x52aa,0x4aa9,0x3a28,0x4269,0x3a48,0x52ca,0x4aaa,0x4248,0x3a27,0x4a89,0x5aeb,0x4a89,0x4aaa,0x4aaa,0x52eb,0x5b2c,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x4248,0x3a07,0x52ca,0x5aeb,0x4269,0x52aa,0x632c,0x52eb,0x4aaa,0x634c,0x5b0b,0x4a89,0x52eb,0x634c,0x52ea,0x4a89,0x52eb,0x4aca,0x5b4c,0x5b0b,0x52ca,0x52ca,0x52aa,0x634c,0x5aeb,0x52cb,0x634c,0x636c,0x632c,0x52ca,0x5b0b,0x632c,0x52eb,0x632c,0x634c,0x634c,0x634c,0x634c,0x6b8d,0x636d,0x636d,0x6b8d,0x634c,0x634c,0x636d,0x6b6d,0x634d,0x632c,0x634c,0x6b8d,0x6b4d,0x634d,0x6b8d,0x634c,0x5b0c,0xac8b,0xdd8a,0xc4c9,0x7bab,0x52ec,0x9c4a,0xbcc9,0x52ed,0x8beb,0xd529,0x736b,0xa44b,0xd549,0x8beb,0xcd4a,0xdd69,0x8beb,0x634d,0x6b4c,0x634d,0x6b8e,0x6b6d,0x634d,0x634d,0x6b6d,0x6b6d,0x634d,0x6b8e,0x6b8d,0x6b8d,0x6b8e,0x6b6d,0x6b4d,0x6b6d,0x634c,0x634c,0x634d,0x634d,0x634c,0x6b6d,0x632c,0x636c,0x634d,0x940b,0xe5c9,0xedc9,0xac49,0x630c,0x738c,0xc528,0x838b,0x530c,0xd529,0xc4c9,0x5b0c,0xdd89,0xbc89,0xa46a,0xedc9,0xcce9,0x632c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x634c,0x6b4d,0x632c,0x634c,0x630c,0x634c,0x634c,0x634c,0x634c,0x6b4d,0x634c,0x634d,0x634d,0x6b4d,0x632c, +0x52ea,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x530b,0x52eb,0x52eb,0x52ea,0x52ca,0x52ca,0x52eb,0x52ca,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x5aeb,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x52ca,0x5aeb,0x5acb,0x52eb,0x52ca,0x5aeb,0x52ea,0x52ca,0x52ca,0x52aa,0x52ca,0x4a8a,0x4aaa,0x4aca,0x4aca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aca,0x52ea,0x52eb,0x52ca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aa9,0x4aca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ea,0x4aa9,0x4a89,0x4aa9,0x4aa9,0x4aca,0x4aaa,0x4aa9,0x52ca,0x4aaa,0x4aa9,0x52ca,0x52ca,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aa9,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aaa,0x52ca,0x52ea,0x52ea,0x4aca,0x4aca,0x5b0b,0x638d,0xa575,0x9513,0x530b,0x5b2b,0x6b8d,0xadb5,0x8470,0x8c91,0x9d13,0x530a,0x9d33,0xad95,0xa574,0x8cb1,0x52ea,0x52c9,0x8cb1,0xad95,0xadb5,0x9d33,0x5b2b,0x4aa9,0x7c50,0xadb5,0xa594,0x73ce,0x4ac9,0x5b2b,0x52eb,0x5b2b,0x634c,0x52ea,0x8470,0xa574,0x9513,0x5b4b,0x52ca,0x5b0b,0x52ea,0x8cd2,0xad95,0x94f2,0x5b2b,0x52ea,0x73ce,0xa554,0x94d2,0x5b2b,0x5aeb,0x94d2,0xad74,0x73ee,0x73ee,0x9d33,0x94f2,0x8490,0x530a,0x638c,0x9d13,0x740f,0x5b2b,0x94f2,0x7c0f,0x8450,0xa554,0x9d33,0xa533,0x73ce,0x8c91,0x9d33,0x9d13,0x8470,0x636c,0x94d2,0x9d13,0x9d12,0x73cd,0x5b2b,0x634c,0x5b2b,0x630c,0x52eb,0x8cb1,0xa554,0x636c,0x5b0b,0x94d2,0x7c0f,0x52aa,0x8450,0x9d13,0x636c,0x73ee,0xad74,0x8c91,0x5b0b,0x8450,0x9d13,0x9cf3,0x9d34,0x7c50,0x8450,0xa534,0x9d13,0x94d2,0x73ce,0x9cf3,0x9d13,0x6bad,0x632b,0x8451,0xad75,0x8cb1,0x8470,0xa554,0x8c90,0x844f,0x8c91,0x7c0f,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5aeb,0x5aeb,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x4acb,0x940a,0xedc8,0xbca8,0xcd28,0xa448,0x3a6b,0xd549,0xfde7,0x732a,0x93ea,0xfe88,0xac48,0xdd89,0xfe27,0xa429,0xede9,0xd528,0x83ab,0x5b0c,0x630b,0x5b0c,0x634d,0x630c,0x632c,0x632c,0x634d,0x634d,0x634d,0x6b6d,0x6b6d,0x634d,0x5b0c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x630c,0x6b6b,0xedc9,0xd548,0xcd29,0xdd67,0x5aaa,0xac8a,0xfea7,0xbc88,0x428b,0xf5e8,0xede7,0x9c08,0xfea7,0xd507,0xc529,0xfe28,0xbc89,0x5aeb,0x5aeb,0x630b,0x5acb,0x5aeb,0x632c,0x5aeb,0x5aeb,0x5aeb,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b2c,0x632c,0x632c,0x5b0c, +0x52aa,0x52ca,0x52ea,0x52eb,0x52ea,0x52eb,0x530b,0x52ea,0x52eb,0x52ca,0x52ca,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x52eb,0x52cb,0x52ca,0x4aca,0x42cb,0x52ca,0x4aca,0x4aca,0x42ca,0x4aea,0x52aa,0x52eb,0x52eb,0x52eb,0x4aca,0x4aeb,0x530b,0x52ca,0x52eb,0x4aea,0x42aa,0x42ca,0x52ca,0x52ca,0x4aca,0x52ea,0x4aca,0x4aaa,0x52ca,0x4aaa,0x4aca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x52ca,0x52ca,0x4aaa,0x52ca,0x4aca,0x52ea,0x4aaa,0x52ca,0x428a,0x326a,0x3a8a,0x3a6a,0x4aaa,0x52ca,0x42aa,0x4aaa,0x52ca,0x3a8a,0x326a,0x3a8a,0x428a,0x4aaa,0x428a,0x4aca,0x3a6a,0x326a,0x52ca,0x426a,0x3a6a,0x52ea,0x52ca,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52eb,0x530b,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x4aca,0x4aca,0x52ca,0x52ca,0x5aeb,0x530b,0xdf3b,0xefde,0x740e,0x3a68,0xa574,0xffff,0x9d33,0xceb9,0xef9d,0x6bad,0xe79d,0xffff,0xf7de,0xf7fe,0xc678,0x42a8,0xceda,0xffff,0xf7de,0xe75c,0x52ea,0xa594,0xf7de,0xffff,0xf7ff,0xe77c,0x8470,0x52ea,0x634c,0x634b,0x52ea,0xb5f6,0xf7fe,0xffff,0xf7ff,0xdf1b,0x73ee,0x52ca,0xc638,0xffff,0xffff,0xffff,0xd6da,0x5b0b,0x9d33,0xffff,0xefbd,0x7c0e,0x73ee,0xefbd,0xffff,0xa574,0xbe17,0xffff,0xf7fe,0xf7ff,0xb5b5,0x8470,0xffff,0xb5b6,0x6b8d,0xf7ff,0xb616,0xc678,0xffff,0xf7de,0xffff,0xa574,0xdf3b,0xffff,0xffff,0xd6ba,0x8450,0xf7de,0xffff,0xffff,0xe75c,0x7c0f,0x52ca,0x6b4c,0x52aa,0xad95,0xf7de,0xffff,0xef7d,0x7bee,0xe77d,0xe73c,0x5b0b,0xe75d,0xe77c,0x73ce,0xe73c,0xfffe,0xffff,0xa554,0xbe38,0xffff,0xf7de,0xffff,0xbe37,0xc699,0xffff,0xffff,0xef9d,0x8c91,0xef9e,0xffff,0xa554,0x52ea,0xdefb,0xffff,0xd6b9,0x8cd1,0xd6da,0xc658,0xdf3b,0xe75c,0x9cf3,0x5aca,0x5b0b,0x5aeb,0x5b0c,0x5aeb,0x632c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x630b,0x326b,0xc509,0xd508,0x7b89,0xe588,0xc4e7,0x8bea,0xe589,0xe588,0xb488,0x8bca,0xf5e8,0xedc8,0xee08,0xf5e8,0xac49,0xee49,0xe5a8,0x8bca,0x5b0c,0x632b,0x634c,0x630b,0x5b2c,0x5b2c,0x5aeb,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x634c,0x634c,0x632c,0x630b,0x630b,0x632c,0x5b0b,0x62eb,0x52cb,0x83eb,0xf5e8,0x8369,0xcd28,0xedc8,0x93c9,0xd569,0xeda9,0xe5a8,0x730a,0xe589,0xf5e8,0xede7,0xf5e8,0xccc8,0xbcea,0xfe28,0xccc9,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x634c,0x632c,0x630c,0x5b0c,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x632c,0x5b0c,0x630b,0x632c,0x5b0c,0x632c, +0x5b0b,0x5b0b,0x52ca,0x52eb,0x52ca,0x52ea,0x52ea,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x52ea,0x52ca,0x530b,0x9b2b,0xdb4b,0xd32a,0x62aa,0x9b0a,0xe34a,0xdb4a,0x82ca,0xb32a,0xa2a9,0xa32b,0xab2a,0x9b0a,0xb309,0xbb2a,0xdb6a,0x930a,0xb30a,0xe34b,0xbb2a,0x5aca,0x52ca,0x4aca,0x4aca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4a89,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aa9,0x4aca,0x4aaa,0x428a,0xac69,0xd548,0xc4e7,0xb4a7,0x93e9,0x2a6a,0xac49,0x9c08,0x52ea,0xbd08,0xd528,0xbca8,0xb4a8,0x7b68,0xb4a8,0x93e9,0xcd28,0xcd08,0x7349,0xb4a8,0xd567,0x9c29,0x428a,0x52ca,0x4aca,0x52eb,0x52ca,0x52ca,0x52ea,0x530b,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x52ea,0x4aca,0x52ca,0x52ca,0x4289,0x9d33,0xf7ff,0xadb5,0x3226,0xd6fa,0xe79d,0x4ac9,0xd6fa,0xe77c,0x6bad,0xe79d,0xd71a,0x73ce,0xce99,0xffff,0x94d1,0xc699,0xefde,0x9d33,0x740e,0x7c0f,0xefdd,0xe77d,0x9d33,0xad95,0xf7de,0xdf1b,0x5b2b,0x5b2b,0x52ca,0x8cb1,0xf7fe,0xdf3b,0xa554,0xbe38,0xffff,0xc699,0x94f2,0xffff,0xd6da,0x9d13,0xceb9,0xffff,0xb5f7,0x94f2,0xf7de,0xfffe,0xa573,0x9d54,0xf7ff,0xffde,0xa574,0xb617,0xffff,0xa554,0xdf3b,0xef9d,0x94f2,0xffff,0xad95,0x636c,0xf7de,0xc637,0x5b2b,0xc678,0xf7de,0xa554,0x638c,0xdf5c,0xef7d,0xa554,0x8470,0x8490,0xf7ff,0xce79,0xadb6,0xffff,0xc637,0x4247,0x634c,0x4a89,0xdf5c,0xefbe,0xa554,0xd6fa,0x844f,0xadb6,0xffff,0xd6ba,0xffff,0xa533,0x9d13,0xffff,0xbe17,0xc658,0xbe17,0x6bce,0xc679,0xffff,0xc658,0x7c0f,0xceb9,0xf7de,0xb5d7,0x9d13,0x7c2f,0xef7d,0xffff,0xce99,0x7c4f,0xf7be,0xffff,0xd6da,0x7c2f,0xb5b5,0xad95,0xe77c,0xdf3b,0x8c91,0x52ca,0x5b2c,0x5b0b,0x5aeb,0x5b0b,0x5b2c,0x632c,0x52eb,0x5b0b,0x52cb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x4aaa,0x83ea,0xe5a8,0xdd47,0xfe27,0xc4c8,0xc509,0xf5e7,0xe5a8,0xdd87,0xac89,0xcd09,0xedc8,0xdd48,0xdd88,0xac89,0xee29,0xd508,0x7b8a,0x5b0c,0x6b4d,0x5b0b,0x5b0c,0x632c,0x5b0b,0x632c,0x632c,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x630c,0x5b0c,0x5b0b,0x632c,0x6b6d,0x630c,0x630c,0x632c,0x630b,0x632c,0x630c,0x5aeb,0x630c,0x5b0b,0xddc9,0xede7,0xf628,0xf608,0xa3e9,0xf629,0xeda8,0xfe48,0xb469,0xdd48,0xd549,0xf647,0xccc8,0xcd28,0xc509,0xfe48,0xbca9,0x632c,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x630c,0x5aeb,0x634d,0x634c,0x5b0c,0x5b0c,0x632c,0x630c,0x632c,0x5b0c,0x630c,0x632c,0x5b0c,0x632c, +0x5b2c,0x52eb,0x52eb,0x52aa,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52ca,0x52ca,0x52aa,0x52ca,0x530b,0x52ea,0x52ca,0x3aca,0xc34b,0xeb2a,0xeb6a,0xd32a,0xeb6b,0xcb2a,0xdb6b,0xe309,0xcbac,0xe42d,0xe36a,0xeb8a,0xdb4a,0xcb2a,0xe36a,0xe329,0x8ae9,0xeb8b,0xdb2a,0xf38a,0xa30a,0x3acb,0x52ca,0x530b,0x52ca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4a89,0x4aa9,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4a89,0x4289,0x9c09,0xf626,0xb489,0xcd08,0xd547,0x42aa,0xe5a6,0x9be9,0x3a8a,0xc4e8,0xfe07,0x9c08,0xd547,0xedc6,0xd547,0xa448,0xeda6,0xe5a7,0xcd07,0xedc8,0xe5a7,0x8bc9,0x4aca,0x52ca,0x4aca,0x52ea,0x52ea,0x52ca,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x4aca,0x4aca,0x4aaa,0x52ca,0x52ea,0x52ca,0x52ca,0x4aca,0x638d,0xe79d,0xdf1b,0x7c4f,0xf7fe,0xbe58,0x21a4,0xd6fa,0xe77c,0x636c,0xe77c,0xd6da,0x3a25,0x7c0f,0xf7fe,0xb616,0xc678,0xf7fe,0xf7fe,0xdf1b,0x9d33,0xffff,0xa574,0x3206,0x3206,0xbe17,0xf7fe,0x7c2f,0x5b2b,0x4289,0xadb5,0xf7fe,0x8cb1,0x52ea,0x530b,0x7c0f,0x6bad,0xc698,0xefbd,0x638c,0x4268,0x5b2b,0xe77c,0xdf1b,0x9d33,0xf7de,0xf7de,0xd6da,0xceb9,0xf7de,0xffde,0xa574,0xb616,0xffff,0xb5f6,0xef7d,0xef7c,0x8cd2,0xffff,0xadb5,0x638c,0xf7de,0xc658,0x0961,0xad95,0xf7fe,0x7c0e,0x4aa9,0xdf3c,0xf7be,0xefbd,0xc678,0x8450,0xffff,0xbe17,0x9d13,0xffff,0xc638,0x4aa9,0x6b6d,0x4aca,0xbe17,0xffff,0xe73b,0x94f2,0x4288,0x6bae,0xe77d,0xffff,0xe73c,0x5b0b,0x7c0f,0xef9e,0xf7de,0xbe17,0x6b8d,0x4288,0x9d13,0xffff,0xa554,0x31c6,0xceb9,0xffff,0xef9d,0xdf1a,0x8470,0xef7d,0xffff,0xe77c,0xbe37,0xf7de,0xffff,0xdefa,0x6b6c,0x7bef,0x73ee,0x7c0f,0x7c0f,0x6b8d,0x632c,0x5aeb,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x52eb,0x52cb,0x5aca,0x5aeb,0x3a6b,0x93ea,0xd548,0xb489,0x5aca,0xacaa,0x9be9,0x7b8a,0xbceb,0xa44b,0x940a,0xa44a,0x9bea,0xac8a,0x8baa,0xc509,0xcd48,0x83ab,0x530c,0x6b4c,0x5aeb,0x5b2b,0x5b0b,0x5b0b,0x630c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x632c,0x5aeb,0x5aeb,0x630c,0x630b,0x5b0b,0x5b0b,0x630c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x52eb,0x5b0c,0x5aeb,0x736a,0xc549,0xcd48,0x8b8a,0x8bcb,0xb469,0x630a,0xb4aa,0xa429,0x9c29,0x93ea,0xa429,0x83aa,0xa44a,0x8baa,0xcd29,0xbcaa,0x5b0b,0x5b0b,0x630c,0x634c,0x5b0c,0x5aec,0x5aeb,0x5b0c,0x632c,0x5b0b,0x5b2c,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x5b0c,0x5b0c,0x5aeb,0x5b0c,0x5b0b,0x5b0b, +0x52ea,0x52ca,0x52eb,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52cb,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52aa,0x3aaa,0xb32b,0xf38b,0xeb4a,0xd30a,0xeb4a,0x3a89,0x62ca,0xf34b,0xab2b,0xf42d,0xfb6a,0xfb6a,0xfb6a,0xa2e9,0xdb4b,0xeb4a,0x92e9,0xdb6a,0xe34a,0xe34b,0x92ea,0x4b0b,0x52ea,0x52eb,0x52ca,0x4aaa,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x4aa9,0x4aa9,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x4aa9,0x4a89,0x52a9,0x4289,0xd547,0x7b69,0x7369,0xe5a7,0xbca8,0xd567,0x528a,0x3a8a,0x8389,0xdd66,0x21e9,0x93c9,0xfe27,0x93a9,0x9429,0xede7,0xedc7,0xbc88,0xdd68,0xede7,0x9c28,0x4aaa,0x52ea,0x52ea,0x4aca,0x52ea,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aca,0x52ca,0x4aaa,0x52ca,0x52eb,0x4288,0xbe58,0xefde,0xd71a,0xefdd,0x8c90,0x3205,0xd6da,0xe77c,0x638c,0xe79c,0xd6b9,0x0120,0x94d2,0xf7ff,0xadb5,0xc678,0xf7de,0xc658,0xa574,0x8cd1,0xf7ff,0xbe17,0x4288,0x4ac8,0xce99,0xf7de,0x73ee,0x5b0b,0x4289,0xa595,0xf7ff,0x9d33,0x4246,0x636c,0xa554,0x8cd1,0xbe37,0xf7fe,0x7c2f,0x4247,0x73cd,0xef9d,0xdf1b,0x9d13,0xf7be,0xce99,0xefbe,0xf7dd,0xce99,0xf7de,0xa594,0xb5f6,0xfffe,0xf7fe,0xf7de,0xa554,0x8450,0xffff,0xad95,0x530a,0xf7de,0xc658,0x3a46,0xad95,0xf7fe,0x8c90,0x52ea,0xe73c,0xf7be,0xd6da,0xb5d6,0x8470,0xefbe,0xf7de,0xf7de,0xe73c,0x8430,0x5aeb,0x634c,0x5b2b,0x6bad,0xb5d6,0xef7d,0xf7fe,0x94d2,0x3a07,0xbe38,0xffff,0xb5b5,0x4a89,0x632c,0x94f2,0xd6fb,0xffff,0xce79,0x4aa9,0x9d34,0xffff,0xad74,0x4a68,0xce79,0xffff,0xdefb,0xce78,0x844f,0xef9d,0xdefb,0xef9d,0xffde,0xdf1b,0xe77c,0xdf1b,0x5aea,0x6b6d,0x6b8d,0x632c,0x632c,0x634c,0x630b,0x52cb,0x5b0b,0x52cb,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x530b,0x4aaa,0x732a,0x4a8b,0x2a4a,0x4aa9,0x6b0a,0x52ab,0x5aeb,0x530b,0x4acb,0x630b,0x6b2b,0x4aeb,0x42cc,0x630b,0x52cb,0x326b,0x52cb,0x630a,0x6b2b,0x630c,0x632b,0x630c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x5b0b,0x632c,0x5b0c,0x5b0c,0x632c,0x5b0b,0x5b0b,0x5aeb,0x630b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52ca,0x5aeb,0x632b,0x52eb,0x62ea,0x5aca,0x428a,0x62eb,0x6b0a,0x734b,0x42ab,0x734a,0x630b,0x52cb,0x632a,0x7b8a,0x6b0b,0x6b4a,0x6b2a,0x5aea,0x630c,0x5b0b,0x5aeb,0x630c,0x632c,0x5aeb,0x5b0c,0x632c,0x5b0c,0x5b0c,0x632c,0x632c,0x632c,0x5aeb,0x5aeb,0x5b2c,0x632c,0x5b0c,0x5aeb,0x632c,0x5b0c,0x5aeb, +0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x32ca,0xbb2b,0xeb4b,0x82ca,0x6aca,0xeb8b,0xdb4a,0xe36b,0xeb4a,0x6a89,0xf36b,0xdb4a,0xdb4b,0xfbaa,0x72ca,0xe38b,0xe34a,0x930b,0xdb6b,0xfb8b,0xe329,0x5aca,0x5b0b,0x52ea,0x530b,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aa9,0x4aca,0x4aa9,0x4aa9,0x52aa,0xdd87,0x93e8,0x022a,0xd548,0xfe67,0xac48,0x426a,0x42aa,0x8bc9,0xe5c7,0x5ac9,0x6309,0xddc7,0x6308,0x9c0a,0xedc7,0x9c08,0x4a89,0xe5a7,0xeda7,0x8bc9,0x4acb,0x52ca,0x4aca,0x4aaa,0x52ea,0x4aca,0x52cb,0x4aca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4aca,0x52eb,0x52eb,0x52ca,0x52eb,0x4aa9,0x8491,0xefdd,0xffff,0xd6fa,0x5b2b,0x4ac9,0xd6fa,0xe79d,0x6bcd,0xe77c,0xef7d,0xc658,0xef9d,0xefde,0x73ee,0xc698,0xf7fe,0xc637,0xa574,0x638c,0xdf3c,0xf7ff,0xceb9,0xd6d9,0xffff,0xce99,0x52ea,0x634c,0x530b,0x7c0f,0xefbd,0xf7de,0xc658,0xd6fa,0xffff,0xbe57,0x8450,0xf7fe,0xe77c,0xbe17,0xe73b,0xffff,0xad95,0x94f2,0xf7fe,0x9d34,0xefbe,0xf79d,0xa573,0xf7fe,0xadb5,0xb5f6,0xffff,0xa554,0x6bad,0x4268,0x7c2f,0xf7fe,0xdf1b,0xc638,0xffff,0xbdf6,0x31e4,0xad95,0xfffe,0x8c90,0x4aea,0xdf3c,0xf7be,0xadb5,0x94d1,0x8470,0xf7be,0xe75c,0xf7fe,0xce99,0x52a9,0x6b6c,0x5b0b,0x52ea,0xdf1b,0xceba,0xbdf7,0xffff,0xb5b5,0x1943,0xa555,0xffff,0x9d13,0x29c5,0xa554,0xef7d,0xad95,0xf7be,0xe75c,0x52a9,0x9d33,0xffff,0xad95,0x4a68,0xceba,0xffff,0xbdf7,0x9d13,0x7c2f,0xf7de,0xbe17,0xdefb,0xffff,0xb5f6,0xe75c,0xe73c,0x634c,0x632c,0x5aeb,0x5b0b,0x5b2c,0x632c,0x52eb,0x5aeb,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aca,0x4a8b,0xac8a,0xe5c7,0xcce8,0x8bc9,0xe5a8,0xcd08,0x8be9,0xd569,0x62ea,0x8bca,0xe5a8,0xd548,0x734b,0xc50a,0xedc8,0xe5a8,0x9bea,0xc529,0xf5e8,0xcd28,0x6b4c,0x630c,0x5b0b,0x632c,0x5b2c,0x632c,0x630b,0x5b0b,0x5b0b,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5b0b,0x632c,0x630b,0x630b,0x630b,0x5b0b,0x5aeb,0x5aec,0x5b0b,0x5aeb,0x5aeb,0x52eb,0xa44a,0xee28,0xede7,0xabe9,0xbcc9,0xf628,0xa468,0xa449,0xee09,0xdd88,0x93c9,0xee09,0xdda7,0xa449,0xe5c8,0xf648,0xb4a9,0x52ab,0x630b,0x5b0c,0x5b0c,0x632c,0x630c,0x634c,0x632c,0x632c,0x632c,0x5b0c,0x630c,0x5b0b,0x5b0c,0x632c,0x5b2c,0x5b0b,0x632c,0x632c,0x632c,0x5b0c,0x5aec, +0x52ca,0x52ea,0x52aa,0x52ca,0x52eb,0x52ea,0x52ea,0x52eb,0x52eb,0x530b,0x52ea,0x52ca,0x52ca,0x4aca,0x4aaa,0x52ca,0x4aeb,0x932a,0xa30a,0x42ca,0x52ca,0x8b0a,0xd34b,0xc32a,0x82ca,0x42ea,0xab0a,0x92ea,0x8b0b,0xb32a,0x5b0b,0xab2a,0xd34b,0x92ea,0xa2ea,0x9aca,0xbb2a,0x72aa,0x52ca,0x52ea,0x52ea,0x4aca,0x52ca,0x4aaa,0x4aca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aa9,0x4aa9,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aa9,0x52aa,0x5aca,0xa468,0x7349,0x42aa,0x8bca,0xc508,0x7329,0x52aa,0x52a9,0x7349,0xaca8,0x52ca,0x5b0a,0xaca8,0x630a,0x7b89,0xa428,0x324a,0x4aaa,0xb489,0xd588,0x9c29,0x42aa,0x52ca,0x4aaa,0x52ca,0x52ca,0x4aca,0x4aca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ea,0x4aca,0x530b,0x52ca,0x4aca,0x52eb,0x532a,0xbe78,0xef9d,0x9d33,0x530a,0x52ea,0xc658,0xdf1b,0x6b8d,0xd6da,0xef9d,0xefbd,0xdf3b,0x9d12,0x4267,0xbe37,0xef9d,0xefbe,0xdf5b,0x5b4b,0x7c2f,0xd6fa,0xf7de,0xf7de,0xceb9,0x73ce,0x5b2b,0x5b4b,0x634c,0x52ca,0x9513,0xdf5c,0xf7fe,0xf7de,0xc699,0x6bad,0x52ea,0xa574,0xefbd,0xf7fe,0xefbd,0xbe37,0x52ea,0x94f2,0xefbd,0x8470,0xd6da,0xd6da,0x7c2f,0xefbe,0xad74,0xadd6,0xf7de,0x7c0e,0x52c9,0x638c,0x5b2b,0xc658,0xf7fe,0xfffe,0xdefb,0x73ee,0x4aa9,0xa574,0xefbd,0x8470,0x530a,0xdf1b,0xf7de,0xffff,0xd6da,0x7c0f,0xf7be,0xb5f6,0xc678,0xf7fe,0x9d33,0x5b0b,0x636c,0x5b0b,0xb5f7,0xffff,0xfffe,0xe71b,0x7c0e,0x4a88,0xa554,0xffff,0xa513,0x4a68,0x7c30,0xe77d,0xffff,0xf7bd,0xad74,0x4aa9,0x9d33,0xffde,0xad75,0x4a88,0xc679,0xf7ff,0xffff,0xf7bd,0x8c90,0xef9d,0xb5d6,0xb5f7,0xf7de,0x8450,0xdf3c,0xdf1b,0x634c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b0c,0x5b0c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x632c,0x5aeb,0x5b0c,0x52eb,0x5aeb,0x5aeb,0x52aa,0x5aea,0x426a,0xcd49,0xe5a7,0xa408,0x9409,0xf5e8,0xbca8,0x8bea,0xe5a8,0x6b2a,0x8c0b,0xede8,0xb4a8,0xac8a,0xedc8,0x9c0a,0xc4eb,0xb4a9,0x8bca,0xf5e8,0x93ea,0x632c,0x632c,0x5b0b,0x5b0c,0x5b2c,0x632c,0x630c,0x632c,0x5b0c,0x630c,0x5aeb,0x632c,0x632c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52eb,0x5aeb,0x5aeb,0x5b0b,0x42ab,0xac89,0xd508,0xcd09,0xe5a8,0xc509,0xf608,0x93a9,0xbce9,0xf608,0xb468,0x940a,0xf5e9,0xd548,0x7b6a,0xc4ea,0xe5a8,0x6b2a,0x632c,0x5b0b,0x5b0c,0x5b2c,0x5b0c,0x630c,0x5b0c,0x632c,0x5b0c,0x5b0c,0x5aeb,0x630c,0x632c,0x5b0c,0x632c,0x5b0c,0x5b0b,0x630b,0x632c,0x5b0b,0x5aeb,0x5aeb, +0x52eb,0x530b,0x5b0b,0x52ca,0x52eb,0x52eb,0x4aca,0x52ca,0x52eb,0x52eb,0x52ca,0x4aca,0x52eb,0x52ca,0x52ca,0x52ca,0x5aeb,0x5aeb,0x4aeb,0x62ea,0x5aea,0x4b0b,0x3acb,0x3aaa,0x52ea,0x5aca,0x4aea,0x52eb,0x52cb,0x42ca,0x5aeb,0x4b0b,0x3aca,0x4aaa,0x42aa,0x4aaa,0x3aa9,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x4aa9,0x4aa9,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aa9,0x424a,0x52ca,0x5b0a,0x52cb,0x324a,0x52ea,0x52ea,0x52eb,0x4aca,0x428a,0x5aeb,0x52ea,0x428a,0x52ca,0x4aca,0x52eb,0x5b0a,0x52c9,0x428a,0x3a8a,0x52eb,0x5b0b,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aca,0x4aca,0x52ca,0x52ca,0x52eb,0x52ca,0x52ea,0x52ea,0x4aca,0x52eb,0x52ca,0x52ca,0x4aca,0x4aca,0x52ea,0x5b2b,0x636c,0x63ad,0x5b4c,0x638d,0x636c,0x638c,0x6bcd,0x636b,0x6bac,0x6bcd,0x6bcd,0x5b2b,0x530a,0x636c,0x636b,0x6bcd,0x6bac,0x63ac,0x634b,0x530a,0x5b4b,0x7c4f,0x7c4f,0x530b,0x5b2b,0x636c,0x5b4b,0x636c,0x634c,0x52ea,0x636c,0x8490,0x8470,0x5b2b,0x636c,0x6b8d,0x5b0b,0x73ce,0x8cb1,0x7c2f,0x52ea,0x634c,0x6b8d,0x7c4f,0x638c,0x73ce,0x7c0e,0x636c,0x7c2f,0x6bad,0x6bce,0x8450,0x636c,0x634c,0x636c,0x5b4b,0x52ea,0x8470,0x8cb1,0x636c,0x5b2b,0x636c,0x6bad,0x844f,0x6b8c,0x634c,0x8450,0x8cb1,0x8470,0x7c2f,0x6b6c,0x8c91,0x73ee,0x6bad,0x94d2,0x8450,0x6b8d,0x6b8d,0x6bad,0x5b2b,0x94d2,0xa554,0x73cd,0x5b2b,0x636c,0x73ce,0x94b1,0x6bad,0x6b6c,0x632c,0x7c2f,0xa574,0x8c91,0x634c,0x6b8d,0x73ce,0x94d2,0x73ee,0x6b6c,0x842f,0x94f2,0x94d2,0x8c91,0x6b8d,0x94b1,0x7c0f,0x73ee,0x8c91,0x636c,0x8c91,0x8c71,0x6b8d,0x634c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x632c,0x5b0b,0x5b2c,0x5b2c,0x52eb,0x5aeb,0x5b0c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52cb,0x52eb,0x5aeb,0x83aa,0xd568,0xdd48,0x93e9,0xedc8,0xc4e9,0x8bea,0xe5a8,0x6aea,0x83cb,0xee09,0xbcc8,0xb4c9,0xe588,0x428b,0x7b8b,0x93c9,0x734b,0xddc8,0x83ab,0x4aec,0x5b0b,0x630c,0x5b0c,0x5b2c,0x5b0b,0x632c,0x634d,0x5b0b,0x632c,0x630c,0x5b0c,0x632c,0x5b0b,0x630b,0x630b,0x630c,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5b0b,0x5aeb,0x630b,0x4aab,0xac8a,0xf628,0xede8,0xa3e9,0xc529,0xee08,0x9be8,0x8bca,0xd569,0xe569,0x9c29,0xe5a9,0xdd48,0x736a,0xac8b,0xe5a8,0x52cb,0x632c,0x630c,0x5b0c,0x5aeb,0x630c,0x630c,0x5aeb,0x5b0b,0x632c,0x5b0c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x5aec,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0c, +0x52ca,0x52ea,0x530b,0x52eb,0x530b,0x52eb,0x52ca,0x52ea,0x52eb,0x52ea,0x4aaa,0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x5aca,0x52cb,0x52ca,0x52ca,0x52ca,0x5aea,0x5aca,0x52ea,0x5aeb,0x52ea,0x52ea,0x52ea,0x52ea,0x5b0a,0x52aa,0x52ca,0x52aa,0x52a9,0x52a9,0x4aaa,0x52ab,0x52ca,0x52ca,0x52ca,0x4aca,0x4aca,0x52ca,0x4aca,0x4a89,0x4aca,0x52eb,0x52eb,0x52ea,0x4aa9,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aca,0x4a89,0x4aaa,0x4aa9,0x4aca,0x4aa9,0x4aaa,0x52ca,0x52ca,0x52a9,0x52aa,0x4aca,0x52aa,0x52ea,0x52ea,0x4aaa,0x4aca,0x4aa9,0x52ca,0x52ea,0x4aca,0x52ca,0x52ca,0x530b,0x52ea,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ea,0x4aaa,0x52ea,0x52eb,0x52ea,0x52ea,0x52ca,0x4aca,0x4aca,0x52eb,0x52ea,0x52ea,0x52ea,0x52eb,0x636c,0x638c,0x636c,0x638d,0x636d,0x636c,0x636c,0x636d,0x634c,0x5b4c,0x634c,0x636c,0x6bad,0x636d,0x634c,0x5b2b,0x530b,0x5b0b,0x5b4c,0x638c,0x636c,0x5b2b,0x530b,0x636c,0x636c,0x634c,0x636c,0x636c,0x636c,0x636c,0x636c,0x5b2c,0x5b2b,0x636c,0x638d,0x636c,0x6b8d,0x5b4c,0x530b,0x5b2b,0x636c,0x6b6d,0x634c,0x5b2b,0x636c,0x5b4c,0x632c,0x634c,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x634c,0x634c,0x634c,0x634c,0x530a,0x52ea,0x5b4c,0x6b8d,0x636c,0x636c,0x634c,0x6b8d,0x636d,0x634c,0x5b2b,0x5b2b,0x634c,0x634c,0x5b4c,0x636d,0x6b8d,0x634c,0x636c,0x73ce,0x73ce,0x6b8d,0x6b8d,0x5b0b,0x52ca,0x636d,0x6b8d,0x6b8d,0x6b4c,0x5b2b,0x636c,0x6bad,0x6b8d,0x6b8d,0x5b2c,0x636c,0x73ce,0x6b8d,0x6b8d,0x634c,0x6b6d,0x6b8d,0x738d,0x632c,0x5b2c,0x636d,0x73ae,0x6b6d,0x6b8d,0x6b8d,0x634c,0x6b8d,0x634c,0x634c,0x636d,0x634c,0x5b2c,0x5b2c,0x634c,0x5b0c,0x632c,0x630b,0x630c,0x630c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x52cb,0x5aeb,0x5b0c,0x5b0b,0x5acb,0x5acb,0x52ec,0xc529,0xe5c8,0xe588,0xa429,0xee08,0xcd08,0x93ca,0xedc8,0xdd67,0xac69,0xee08,0xcd28,0x83ca,0xddca,0xe5c8,0xf628,0xc4c9,0x634b,0xddc9,0x8baa,0x530b,0x630b,0x632d,0x634c,0x632c,0x5b2c,0x5aeb,0x5b0c,0x5b0b,0x5b0b,0x632c,0x5b0c,0x632c,0x632c,0x630b,0x630b,0x630c,0x5b0c,0x5b0c,0x630c,0x5aec,0x5aeb,0x5aeb,0x632b,0x42ab,0xac4a,0xe588,0xe5c7,0x9c09,0xc52a,0xf648,0xa448,0xbca9,0xe5c8,0xe5e8,0xac49,0xee29,0xddc8,0x838a,0xa48b,0xdd89,0x5aec,0x632b,0x632c,0x5aeb,0x5b0c,0x630c,0x630c,0x634c,0x632c,0x5b0c,0x5b0c,0x5b0b,0x632c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c, +0x52eb,0x52cb,0x52eb,0x52eb,0x52ca,0x52cb,0x5aeb,0x52eb,0x52eb,0x52eb,0x52aa,0x4aaa,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52ea,0x52ca,0x4aaa,0x52aa,0x5aeb,0x52eb,0x530b,0x52ea,0x530b,0x530b,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4aa9,0x4aca,0x52ca,0x530b,0x530b,0x4aca,0x4aca,0x4aaa,0x4aa9,0x4aaa,0x4aca,0x52eb,0x52ca,0x52ea,0x4aca,0x4aaa,0x52ca,0x4aaa,0x4aca,0x4aaa,0x4a89,0x4a89,0x4a69,0x42a9,0x4a8a,0x4a8a,0x4aca,0x4aaa,0x4aa9,0x52eb,0x4aca,0x52ea,0x530b,0x4aca,0x52ea,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52eb,0x4aea,0x52aa,0x4aaa,0x4aca,0x52ca,0x4aaa,0x52aa,0x52aa,0x52ca,0x4aaa,0x52ca,0x4aca,0x52ca,0x52ea,0x4aca,0x52ea,0x4aca,0x52ea,0x52ea,0x52ea,0x52eb,0x530b,0x530b,0x5b2c,0x52eb,0x52eb,0x4aca,0x4269,0x4248,0x3a07,0x3a08,0x3a28,0x4248,0x4a69,0x4a89,0x4248,0x4268,0x4a89,0x4248,0x4a89,0x4248,0x3a07,0x4248,0x4289,0x4aa9,0x4a69,0x4248,0x4269,0x4269,0x4269,0x4a89,0x4a89,0x4249,0x4249,0x4249,0x4a69,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4aaa,0x4a89,0x52ca,0x52ca,0x4249,0x4269,0x530b,0x4a89,0x52ea,0x52ca,0x4a89,0x52ca,0x4aaa,0x4a69,0x4a89,0x4aaa,0x4aa9,0x52aa,0x52aa,0x4248,0x4a69,0x4a8a,0x4a89,0x4aaa,0x4269,0x4aaa,0x52eb,0x4aaa,0x4a89,0x52ca,0x52aa,0x4aca,0x52cb,0x52aa,0x52ea,0x52ca,0x52aa,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x52ca,0x52eb,0x52ca,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x52aa,0x52ca,0x52ca,0x52ca,0x52aa,0x52eb,0x52eb,0x52eb,0x52cb,0x52ca,0x52eb,0x52eb,0x52aa,0x5aeb,0x5aeb,0x52eb,0x52cb,0x52eb,0x5aeb,0x52eb,0x52ca,0x52aa,0x52aa,0x530b,0x634c,0x5b2c,0x634c,0x632c,0x632c,0x634c,0x632c,0x5b0c,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aec,0x738b,0xb4c9,0x83aa,0x632b,0xa46a,0xac4a,0x734a,0x9c2a,0xb4aa,0x8bcb,0x9c4b,0xacaa,0x736c,0x6b4b,0xacaa,0xa44a,0x5b0c,0x6b6c,0x93ea,0x6b4b,0x632c,0x632b,0x5b0b,0x632c,0x632c,0x632c,0x5b0c,0x630c,0x5b0c,0x5b0c,0x5b2c,0x5b2c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x632c,0x5b0b,0x5b0b,0x5aec,0x5aeb,0x5b0b,0x5b0c,0x7bab,0x7b8a,0x8bcb,0x8c09,0x836b,0xb4aa,0x93eb,0x6b6b,0xb4aa,0x93ea,0x6b2c,0xa44b,0xb4ca,0x7b8b,0x7b8b,0x8bcb,0x632c,0x632c,0x630c,0x5aeb,0x5aeb,0x5b0c,0x5b0b,0x632c,0x5b2c,0x5b0c,0x630c,0x630c,0x632c,0x632c,0x5b0c,0x5b0b,0x632c,0x630c,0x5b0c,0x632c,0x632c,0x5aeb,0x5b0c, +0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52cb,0x52eb,0x52eb,0x52eb,0x52eb,0x52aa,0x52ca,0x4aca,0x4aca,0x52ca,0x52ca,0x52ca,0x52ea,0x52eb,0x52eb,0x530b,0x52ca,0x52ca,0x52ca,0x52ea,0x4aaa,0x52ca,0x52ca,0x52ca,0x5b2b,0x52eb,0x52eb,0x52eb,0x530b,0x52ea,0x52aa,0x52aa,0x4aaa,0x52ca,0x4aca,0x52ca,0x4aca,0x4aca,0x52ea,0x52ca,0x52eb,0x52ea,0x4aaa,0x4aca,0x4aca,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4a89,0x4289,0x4269,0x4aa9,0x4aa9,0x4a89,0x4a89,0x4aaa,0x52eb,0x4aea,0x530a,0x4aca,0x4aaa,0x52ca,0x4a89,0x52ea,0x5b0b,0x52eb,0x4aca,0x52ca,0x5b0b,0x530b,0x4aca,0x4aca,0x52ea,0x52ca,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4aca,0x52ea,0x4aca,0x52ca,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x52eb,0x5b2b,0x5b2b,0x4aca,0x4248,0x39e7,0x2124,0x18e3,0x0881,0x10a2,0x10a2,0x0041,0x0041,0x0882,0x1082,0x18e3,0x0881,0x0861,0x1081,0x10a2,0x18c3,0x10c2,0x10a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x10a2,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10c2,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x1903,0x18c3,0x2124,0x2144,0x1903,0x1904,0x2145,0x18e3,0x2104,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2144,0x2144,0x2145,0x2945,0x2104,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2124,0x2145,0x2124,0x2124,0x2965,0x2945,0x2145,0x2145,0x2144,0x2145,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2125,0x2145,0x2145,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2965,0x2966,0x3186,0x31a7,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x2965,0x29a6,0x2124,0x2145,0x31e7,0x4269,0x4a8a,0x5b2c,0x6b6d,0x634c,0x634c,0x632c,0x5b2c,0x630c,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0c,0x5b0b,0x5aeb,0x52cb,0x52eb,0x52cb,0x5acb,0x52ea,0x52eb,0x5b0b,0x5aeb,0x428b,0x5aec,0x5aeb,0x52cc,0x4aab,0x632c,0x5b2d,0x4aec,0x52eb,0x4a8b,0x4aab,0x6b6d,0x634d,0x530d,0x4acc,0x632c,0x632c,0x52cb,0x632c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5b0c,0x630b,0x630c,0x5b0c,0x630c,0x5b0c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52cb,0x5aeb,0x42ac,0x52ec,0x52eb,0x42ac,0x52eb,0x5aeb,0x52ec,0x4acc,0x5b0b,0x630c,0x5b0c,0x632b,0x630c,0x632c,0x630c,0x630c,0x632c,0x5b0c,0x5b0b,0x5b2c,0x5b0c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x630c, +0x52eb,0x52cb,0x52cb,0x52cb,0x52ca,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x52ca,0x52aa,0x52ca,0x4aca,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x4a89,0x4aa9,0x4a89,0x52ca,0x52a9,0x4a89,0x4a89,0x4228,0x52a9,0x5b0b,0x52eb,0x52eb,0x52eb,0x4a89,0x52ca,0x52ea,0x52eb,0x4aca,0x4aca,0x4aaa,0x4aca,0x52eb,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x4a89,0x4289,0x4289,0x4289,0x4a89,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x52ea,0x636c,0x5b0b,0x4248,0x31e7,0x31e7,0x2986,0x31e7,0x4a89,0x52ca,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x4aaa,0x4aca,0x52ca,0x4aaa,0x52ca,0x4aca,0x4aca,0x52ca,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ea,0x4aca,0x52ea,0x52ea,0x52eb,0x530b,0x530b,0x5b6c,0x4aaa,0x39e7,0x2965,0x10e3,0x1903,0x2985,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x31a6,0x2124,0x2944,0x2144,0x2144,0x2124,0x2124,0x2124,0x2103,0x18e3,0x2103,0x18e3,0x1904,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2144,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2945,0x2144,0x2965,0x2965,0x2944,0x2965,0x2144,0x2985,0x2965,0x2945,0x2945,0x2145,0x2144,0x2965,0x2965,0x2985,0x31a6,0x3185,0x31c6,0x29a6,0x31a6,0x31c6,0x31c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x31a6,0x4248,0x39e7,0x39e7,0x4207,0x4a48,0x39e7,0x39c6,0x31c6,0x39e7,0x3a08,0x3a08,0x3a07,0x3a07,0x4a69,0x5acb,0x4228,0x4228,0x4228,0x4228,0x4a89,0x4a69,0x4a68,0x4a69,0x4aaa,0x52aa,0x52a9,0x52aa,0x52aa,0x52aa,0x4a89,0x52aa,0x52ca,0x39e7,0x1904,0x2124,0x39e7,0x52aa,0x5b0c,0x6bae,0x634c,0x632c,0x634c,0x632c,0x630c,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5b0b,0x5aca,0x52ca,0x52aa,0x630b,0x6b4c,0x630b,0x4a69,0x4207,0x39e7,0x31c6,0x5289,0x52aa,0x4248,0x5aeb,0x634c,0x632c,0x5b0b,0x5b0c,0x5b2c,0x5b0c,0x5aeb,0x5b2c,0x634c,0x5b0c,0x632c,0x5b0b,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0c,0x5aeb,0x632c,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5aca,0x5b0b,0x5aeb,0x5aca,0x4a69,0x31a6,0x31a6,0x39c6,0x3a07,0x3a07,0x4a89,0x52ca,0x5aeb,0x6b4d,0x632c,0x5b0c,0x632c,0x5b0b,0x630c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b0c,0x5aeb,0x632c,0x5b0b,0x5b0b,0x632c,0x630b,0x630c,0x5b0b,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b0c,0x5b0c, +0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52aa,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x52eb,0x5b0b,0x4aa9,0x52aa,0x4a69,0x4228,0x4aaa,0x3a08,0x4a69,0x4249,0x39e7,0x31a6,0x39e6,0x4a89,0x5b0b,0x530a,0x52ea,0x52aa,0x52ca,0x4aca,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x4aaa,0x52ca,0x52aa,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4a89,0x4aa9,0x4aaa,0x4aa9,0x4aa9,0x4aaa,0x4aaa,0x4aa9,0x4aca,0x52eb,0x52ea,0x5b0b,0x52ea,0x4269,0x31c7,0x31a6,0x31a6,0x2986,0x2985,0x4268,0x530a,0x5b4c,0x5b0b,0x530b,0x4aca,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aca,0x4aaa,0x52ca,0x52ea,0x52ca,0x52ea,0x52ea,0x530b,0x532b,0x5b4c,0x638d,0x3a08,0x2124,0x2965,0x4a69,0x4a69,0x31c6,0x31a6,0x2965,0x2124,0x2965,0x2965,0x2945,0x2965,0x1903,0x1903,0x2104,0x1903,0x18e3,0x18c3,0x18e3,0x18c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2103,0x1903,0x1904,0x1903,0x18e3,0x2104,0x2104,0x2124,0x2124,0x2945,0x3186,0x2124,0x2965,0x2965,0x2965,0x2145,0x2145,0x2944,0x2965,0x2965,0x3186,0x31c6,0x2985,0x31e7,0x29a6,0x29a6,0x31e7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x2985,0x2965,0x4248,0x39e7,0x39e7,0x4208,0x4a69,0x3a07,0x31c6,0x31a6,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4208,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4a89,0x4a69,0x4a69,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52ca,0x4a89,0x52ca,0x52ca,0x52eb,0x5b0b,0x52ca,0x52aa,0x4228,0x2144,0x4a49,0x3a08,0x52ca,0x638d,0x636c,0x634c,0x634c,0x632c,0x632c,0x632c,0x5b0c,0x5b0b,0x632c,0x5b0b,0x5aeb,0x52eb,0x5aeb,0x5aeb,0x5b0c,0x5b0b,0x5aeb,0x52cb,0x52aa,0x52cb,0x5aeb,0x5b0b,0x4a49,0x31a6,0x31a6,0x2986,0x39c7,0x2985,0x39c7,0x31a6,0x31c6,0x2985,0x4248,0x632c,0x634c,0x5b0c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x5b0c,0x5b2c,0x5b0c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x5acb,0x5aeb,0x4228,0x2965,0x2965,0x2945,0x2104,0x2104,0x2986,0x4228,0x4a8a,0x4249,0x3a08,0x52aa,0x634c,0x5b0c,0x632c,0x5b0c,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b0b,0x6b4c,0x632c,0x630c,0x5aeb,0x632c,0x5b0b,0x5aeb,0x632c,0x630c,0x5b0b,0x630c, +0x52ea,0x52ca,0x52ca,0x52ea,0x52eb,0x52ca,0x52aa,0x52ca,0x52ca,0x52aa,0x4aaa,0x4aca,0x52aa,0x52aa,0x4aca,0x52ca,0x4aaa,0x4aca,0x52ca,0x52ca,0x52ca,0x52ca,0x4a69,0x4228,0x2986,0x29a6,0x31c7,0x31c7,0x3a28,0x4269,0x3a07,0x0861,0x4228,0x632b,0x5b4b,0x5b0b,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x52ca,0x52ca,0x52ea,0x4aca,0x52c9,0x52ca,0x52ca,0x52ca,0x52aa,0x52ca,0x4aaa,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x4a89,0x4aa9,0x4aaa,0x4aca,0x530b,0x4289,0x4a89,0x4268,0x3a07,0x2965,0x2144,0x2124,0x2124,0x2144,0x2124,0x39e7,0x4aa9,0x5b2b,0x634c,0x530b,0x5b0b,0x52ea,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x52ea,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x5b2c,0x5b2c,0x5b2c,0x4249,0x2124,0x31e7,0x52ca,0x31a6,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x4228,0x5289,0x31a6,0x52ca,0x3a28,0x5b0b,0x6b8d,0x636c,0x634c,0x636c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b2b,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52ca,0x5b0b,0x632c,0x39e7,0x2104,0x2945,0x2124,0x2965,0x31c6,0x4248,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x5aeb,0x632c,0x634c,0x5b0c,0x5b2c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b2c,0x632c,0x630c,0x632c,0x632c,0x630b,0x632c,0x634c,0x5b0b,0x630c,0x632c,0x632c,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x5acb,0x5aeb,0x52cb,0x52ca,0x5b0b,0x39e7,0x2965,0x2965,0x2103,0x2124,0x3185,0x39c7,0x4228,0x3a08,0x39e8,0x4229,0x3a08,0x39e7,0x4a8a,0x632c,0x634c,0x630c,0x5acb,0x630c,0x5aeb,0x5aeb,0x5acb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x6b4c,0x630b,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0c,0x630c, +0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x52aa,0x52aa,0x5acb,0x52eb,0x5aca,0x6aaa,0x4aaa,0x52ca,0x62ca,0x52aa,0x5aca,0x62ca,0x5aeb,0x52aa,0x5b0a,0x52a9,0x39e7,0x2965,0x2124,0x2145,0x2945,0x2965,0x2965,0x3a07,0x6b8d,0x530b,0x10a2,0x4248,0x5b0a,0x5b0a,0x52ca,0x52ca,0x4aa9,0x52ca,0x5aea,0x428a,0x5ac9,0x5b0b,0x5b2c,0x52ca,0x52ea,0x630a,0x428a,0x52ea,0x52a9,0x52a9,0x5aca,0x42aa,0x5ac9,0x4a89,0x428a,0x52ca,0x5aca,0x52a9,0x4aaa,0x5b0b,0x52ea,0x52ca,0x3a27,0x4a89,0x2945,0x18c2,0x2944,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x18e3,0x39e7,0x4a69,0x4268,0x530b,0x530b,0x52ea,0x4aca,0x4aaa,0x4aca,0x4aca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52eb,0x52ca,0x52eb,0x52eb,0x5b4c,0x5b4c,0x4228,0x2144,0x4a89,0x632c,0x18e3,0x0000,0x0020,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0040,0x0020,0x0841,0x0841,0x0020,0x0020,0x0020,0x0841,0x0020,0x0020,0x0821,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0021,0x0841,0x0841,0x0841,0x0020,0x0841,0x0020,0x0821,0x0020,0x0020,0x0020,0x0841,0x0840,0x0020,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x10a2,0x0861,0x0000,0x0000,0x2945,0x4248,0x4a89,0x528a,0x4228,0x6b8d,0x6bad,0x634c,0x634d,0x632c,0x632c,0x634c,0x632c,0x630c,0x5aeb,0x5b0c,0x5b0c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52cb,0x5aeb,0x632c,0x3a07,0x2944,0x2104,0x2104,0x4208,0x4248,0x4208,0x4228,0x31c7,0x31a6,0x39c7,0x4228,0x4228,0x39e7,0x4a69,0x5b2c,0x5b2b,0x5b0b,0x5aec,0x630c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x632c,0x634d,0x632c,0x5b2c,0x5b0b,0x632c,0x630b,0x5b0c,0x5aeb,0x630c,0x630c,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x52ca,0x630b,0x4a49,0x2103,0x2965,0x18e3,0x2104,0x31a6,0x39c7,0x39e7,0x4208,0x4249,0x4229,0x31a7,0x31c7,0x31a7,0x31a6,0x52cb,0x634d,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x5aeb,0x52ca,0x630c,0x632c,0x630b,0x632c,0x632c,0x5aeb,0x5b0b,0x632c,0x632c,0x632c,0x5b0b,0x632c,0x5b0c,0x5b0c,0x5b0b, +0x530b,0x530b,0x52eb,0x52ea,0x52cb,0x4aaa,0x52ca,0x52ca,0x4aeb,0x82ea,0xe36b,0xf36b,0xcb2a,0x62aa,0xdb6b,0xa2c9,0x9aeb,0xcb2a,0x52ea,0x5aea,0x4a89,0x31c6,0x2144,0x2985,0x2944,0x2144,0x2124,0x2124,0x31c6,0x2145,0x1924,0x52ca,0x39e7,0x18e3,0x4a89,0x4248,0x52eb,0x4aca,0x4aaa,0x5aeb,0x42aa,0xac88,0xe5c7,0xe5a8,0x93ea,0x7329,0xdd68,0xe5c7,0xbcc8,0x52a9,0xbcc7,0x7b69,0x3a6a,0xac68,0xe5a7,0xdd87,0x8b88,0x8bc9,0xe5c7,0xddc7,0x8be9,0x52cb,0x5aea,0x31c7,0x4a89,0x2144,0x2104,0x31a6,0x39e7,0x2965,0x31a6,0x31e6,0x4207,0x2985,0x31a6,0x29a6,0x3a28,0x3a28,0x52ca,0x530b,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x4aca,0x4aca,0x4aca,0x4aaa,0x52eb,0x52ca,0x52ca,0x52eb,0x52eb,0x5b2c,0x52eb,0x2945,0x31a6,0x634c,0x3185,0x0000,0x1082,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0841,0x0841,0x0020,0x0000,0x0861,0x2124,0x10a2,0x0020,0x0841,0x0040,0x1082,0x0000,0x31a6,0x3a08,0x2986,0x39e7,0x5b2c,0x73ce,0x6b6d,0x634c,0x634d,0x634c,0x5b2c,0x634c,0x632c,0x632c,0x634c,0x632c,0x5b2c,0x632c,0x5acb,0x5acb,0x52cb,0x52cb,0x5b0c,0x528a,0x2944,0x2965,0x18c3,0x39e7,0x31a6,0x2124,0x2124,0x2124,0x2965,0x3185,0x2965,0x31a6,0x31c6,0x39e7,0x4a69,0x52aa,0x634c,0x5b4c,0x632c,0x5b2c,0x5b0c,0x632c,0x5b0c,0x630c,0x630b,0x5b0c,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x632c,0x630b,0x5b0b,0x5b0b,0x630c,0x5b0b,0x52cb,0x5aeb,0x5aeb,0x52ca,0x5acb,0x5aeb,0x52aa,0x3186,0x2965,0x18c2,0x18c3,0x18e3,0x18c3,0x1904,0x2945,0x2965,0x31a6,0x39e7,0x3a08,0x31c7,0x31a7,0x31a6,0x3a08,0x5b2c,0x632c,0x630c,0x630c,0x632c,0x5b0b,0x632c,0x634b,0x5b0b,0x5b0b,0x5aeb,0x5b2c,0x5b0b,0x630b,0x5b2b,0x632c,0x630c,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5aeb, +0x52ea,0x52eb,0x52eb,0x52ca,0x4aca,0x4aaa,0x4aca,0x52ca,0x42cb,0xdb4b,0xdb2a,0x92ea,0xf36b,0xbaea,0xeb6b,0xf38a,0xcb2a,0xdb4a,0x5aeb,0x5b0a,0x3a07,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2986,0x2145,0x10c3,0x2965,0x10c2,0x31a7,0x39e7,0x4a89,0x52eb,0x4aaa,0x3aaa,0x7baa,0xe5c7,0xa428,0xc508,0xaca8,0xc507,0xd548,0x9c09,0xedc7,0xac28,0xdd67,0x8368,0x6b49,0xe587,0x9c07,0xc4e8,0xdd47,0xb488,0xd547,0xcd27,0xd568,0x42ab,0x52a9,0x29a6,0x31a6,0x2104,0x31c7,0x31c7,0x3a07,0x2986,0x2986,0x39e6,0x3a27,0x2165,0x2124,0x31a6,0x3a08,0x3a08,0x31a6,0x4aca,0x4aea,0x4aca,0x4aaa,0x4aa9,0x4a89,0x4aaa,0x52ca,0x4aca,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aca,0x530b,0x52eb,0x530b,0x5b2c,0x3a08,0x0841,0x4a89,0x4a89,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0000,0x4208,0x2986,0x39e7,0x52ca,0x6bae,0x6b8d,0x636d,0x6b8d,0x632c,0x632c,0x636d,0x634c,0x634c,0x634c,0x5b0c,0x5b2c,0x5b0c,0x52cb,0x5aeb,0x52ca,0x5b0b,0x5acb,0x39c7,0x31a6,0x18e3,0x2124,0x2124,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x31a6,0x39e7,0x3a07,0x634c,0x632c,0x634c,0x734c,0x736b,0x738b,0x7bab,0x736c,0x5b0b,0x630c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x632c,0x632c,0x630c,0x5aeb,0x632c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x4a49,0x3186,0x2104,0x18c3,0x1082,0x1082,0x18e3,0x2124,0x2965,0x2965,0x31a6,0x39c6,0x3185,0x31a6,0x31a6,0x31a6,0x2986,0x52aa,0x632c,0x5b0c,0x632c,0x5b0b,0x630b,0x630b,0x630b,0x632c,0x5acb,0x52ca,0x5b0b,0x5b0b,0x630c,0x5b0b,0x632c,0x630b,0x630b,0x630c,0x632c,0x5b0b,0x5b0b, +0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x52cb,0x52eb,0xe36b,0xb2e9,0x026a,0xdb4a,0xd30a,0xdb4a,0xeb6b,0xfb8b,0xdb29,0x5aeb,0x5aeb,0x2965,0x20e3,0x2965,0x39c6,0x31a6,0x3186,0x2945,0x2124,0x2944,0x2124,0x2124,0x2945,0x2144,0x18e3,0x2104,0x31a6,0x4a89,0x4aca,0x52c9,0x2a4a,0x9c09,0xdd67,0x1209,0x5ac9,0x7b69,0xd568,0xac48,0x000a,0xdd67,0xc4a7,0xd548,0x7308,0x8369,0xe567,0x19a9,0x7349,0xeda7,0xac67,0xeda7,0xe587,0x9c29,0x4aca,0x4a68,0x2124,0x1903,0x2945,0x39e7,0x3a08,0x3a07,0x3a07,0x2104,0x31a6,0x39c6,0x2144,0x2145,0x2124,0x31a6,0x39e7,0x2124,0x4269,0x52eb,0x4aaa,0x4a89,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aca,0x4aca,0x4aca,0x52ca,0x530b,0x530b,0x5b2c,0x5b2c,0x4269,0x2104,0x52aa,0x2144,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0041,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0040,0x0040,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0020,0x0040,0x0020,0x0020,0x0040,0x0841,0x0041,0x0040,0x0040,0x0041,0x0040,0x0040,0x0040,0x0040,0x0840,0x0841,0x0841,0x0040,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0840,0x0841,0x0841,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x31c6,0x3a07,0x3a28,0x6b8e,0x6b8d,0x636d,0x6b8d,0x634c,0x634c,0x634c,0x636d,0x636d,0x634c,0x634c,0x5b2c,0x5b0b,0x5aeb,0x52cb,0x5b0b,0x634c,0x4a69,0x2985,0x2985,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x2104,0x2124,0x2945,0x2965,0x2945,0x2104,0x2945,0x39e7,0x3186,0x530b,0x6b4d,0x5b4c,0xd5a9,0xf628,0xee09,0xfe28,0xb4a9,0x52ec,0x632c,0x634c,0x634c,0x632c,0x630c,0x5b0b,0x5b0b,0x632c,0x5b2c,0x632c,0x5b0b,0x630c,0x632c,0x5b0b,0x5acb,0x52cb,0x52ca,0x3a07,0x3a07,0x18c3,0x10a2,0x1081,0x10a2,0x18c2,0x18e3,0x2124,0x2965,0x2965,0x2965,0x31a6,0x2124,0x2965,0x31a6,0x2986,0x4229,0x632c,0x52cc,0x940b,0xe5a8,0xe588,0xed89,0xdd48,0x7b6b,0x52eb,0x5aeb,0x5b0b,0x632c,0x630b,0x630b,0x632c,0x630b,0x632c,0x632c,0x5aeb,0x5b0b,0x630b, +0x52eb,0x52ca,0x4aca,0x52eb,0x52eb,0x52ca,0x4aaa,0x52aa,0x42ca,0xab0b,0xf36b,0xeb4a,0xf34a,0x92a9,0xeb4b,0xa30a,0xe38b,0xe34a,0x52ca,0x4a89,0x2124,0x18c3,0x3185,0x4227,0x31a6,0x2104,0x10a2,0x0861,0x0861,0x0881,0x10a2,0x18a3,0x1924,0x2104,0x18e3,0x2124,0x4228,0x4aaa,0x4aa9,0x4a89,0x5ae9,0xdd47,0xe567,0xedc7,0xb488,0xa428,0xede7,0xe567,0xeda7,0x8369,0xdd47,0xe567,0x8388,0xd547,0xe587,0xeda7,0xc4e8,0x9c07,0xe5a7,0xeda7,0x8bc8,0x4aca,0x52c9,0x1903,0x18c3,0x31c7,0x4228,0x31a6,0x2945,0x18c3,0x0020,0x0841,0x1082,0x10c2,0x2104,0x2145,0x2965,0x29a6,0x2124,0x3207,0x4aca,0x4aaa,0x4a89,0x4aaa,0x4a89,0x4a89,0x4a89,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aca,0x52eb,0x52eb,0x530b,0x5b4c,0x4228,0x1903,0x4248,0x18c2,0x0000,0x0021,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2104,0x39e7,0x3a07,0x39e7,0x634d,0x6b8d,0x6b8d,0x636d,0x634c,0x636d,0x634c,0x632c,0x634c,0x632c,0x634c,0x5b2c,0x5b0b,0x5aeb,0x52ca,0x5aeb,0x52ca,0x4249,0x2945,0x2124,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x1081,0x18c2,0x2104,0x2944,0x2124,0x18e3,0x2104,0x39c7,0x3186,0x52cb,0x738e,0x636d,0x8beb,0x9c0a,0x940a,0xa44b,0x83ab,0x5b0c,0x632c,0x634c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x632c,0x5b0c,0x5b0b,0x634c,0x632c,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x52ca,0x39e7,0x2985,0x18c3,0x10a2,0x0861,0x1081,0x1082,0x0841,0x0861,0x10a2,0x2104,0x2965,0x2965,0x18e3,0x2124,0x31a6,0x2986,0x39c7,0x5aeb,0x52eb,0x7bab,0xa46a,0xa44a,0xac4a,0x9c29,0x6b2b,0x630c,0x5aeb,0x5b0b,0x632c,0x630c,0x5b0b,0x630c,0x5aeb,0x5b0c,0x5b0c,0x5aeb,0x5b0b,0x5b0b, +0x52eb,0x52ca,0x52ca,0x52ea,0x4aca,0x4aaa,0x4a8a,0x52aa,0x5acb,0x52aa,0x9b0a,0xbb0a,0x82aa,0x4aaa,0x9b0a,0x62a9,0x7aca,0xa30b,0x5aea,0x4228,0x2964,0x10a2,0x31a6,0x4a48,0x10a2,0x0020,0x0020,0x0020,0x0841,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x18e3,0x2144,0x31e7,0x4a89,0x4a89,0x5289,0x4289,0x6b09,0xb488,0xa428,0x52a9,0x428a,0x9c29,0xbca8,0x7b48,0x4aaa,0x93e9,0xb468,0x7348,0x6309,0xb488,0xa408,0x4a8a,0x6b49,0x7b89,0x8be9,0x8be9,0x52cb,0x4267,0x18c3,0x1081,0x4228,0x4228,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x18e3,0x2144,0x29a6,0x2124,0x31c7,0x52ea,0x4aa9,0x4a89,0x4268,0x4a89,0x4aaa,0x4a89,0x4aaa,0x52aa,0x4aaa,0x52eb,0x52ca,0x52ea,0x52eb,0x52ea,0x5b6c,0x5b2c,0x3a07,0x18c3,0x31e7,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2145,0x4248,0x39e7,0x31c6,0x31e7,0x29a6,0x2165,0x2985,0x2986,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2985,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x31c6,0x31e7,0x31e7,0x31c7,0x31c7,0x31c6,0x31e7,0x39c7,0x39c7,0x39e7,0x31c7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a28,0x4249,0x4a49,0x4249,0x4a49,0x4a49,0x4a49,0x4248,0x4268,0x4a69,0x4a69,0x4a89,0x52aa,0x4a89,0x4228,0x4228,0x4a48,0x4a49,0x4248,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4a69,0x4a89,0x4248,0x4228,0x4228,0x3a07,0x2986,0x2124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x2124,0x4248,0x4228,0x39e7,0x636d,0x6b8d,0x6b6d,0x638d,0x636d,0x632c,0x6b6d,0x634c,0x634c,0x634c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x52cb,0x52cb,0x52aa,0x4228,0x18e3,0x2124,0x18c3,0x1082,0x0841,0x0841,0x0841,0x0841,0x0040,0x0861,0x18c2,0x2124,0x2124,0x10a2,0x18c3,0x31c7,0x2965,0x4a69,0x6b6d,0x6b6d,0x3a8c,0x226c,0x3aac,0x2a8c,0x52eb,0x632b,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x634d,0x634c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x52cb,0x2104,0x1082,0x18e3,0x1082,0x0841,0x0861,0x1081,0x1082,0x0861,0x0020,0x0840,0x20e3,0x2965,0x2104,0x2965,0x3186,0x2945,0x31a6,0x52ca,0x5aeb,0x52cb,0x2a6b,0x222c,0x1a6b,0x2a6b,0x5aeb,0x630c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x5aec,0x5b0c,0x630c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x630c, +0x52ea,0x52ca,0x52eb,0x52ca,0x4aaa,0x52ca,0x4aaa,0x52aa,0x52ea,0x52ca,0x3aaa,0x22aa,0x42aa,0x52aa,0x3aaa,0x4a8a,0x4aca,0x42ca,0x5b0b,0x4248,0x2124,0x2124,0x2965,0x2944,0x0020,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x1903,0x2124,0x31a6,0x4289,0x4289,0x4269,0x528a,0x4289,0x222a,0x3229,0x4a89,0x4aaa,0x3a6a,0x220a,0x4289,0x52a9,0x326a,0x220a,0x428a,0x4aaa,0x222a,0x324a,0x52ca,0x4269,0x4269,0x42aa,0x42aa,0x52ea,0x31c7,0x2104,0x18e2,0x31a6,0x2945,0x0000,0x0841,0x0020,0x0020,0x0020,0x0841,0x0861,0x0841,0x0020,0x1904,0x31c6,0x1903,0x31e7,0x4aaa,0x4aa9,0x4a89,0x4289,0x4a89,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4aaa,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x638d,0x638c,0x3a28,0x10c3,0x31c6,0x0881,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x4aaa,0x73ef,0x5b4c,0x5b6c,0x530b,0x4a89,0x3a48,0x4269,0x4aa9,0x530b,0x530b,0x530b,0x5b2b,0x5b2b,0x530b,0x4aca,0x4269,0x4269,0x3a48,0x4aaa,0x5b2b,0x5b2b,0x532b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x5b4c,0x5b4c,0x5b2c,0x5b4c,0x634c,0x634c,0x5b4c,0x634c,0x5b4c,0x5b2c,0x5b4c,0x634c,0x634c,0x5b4c,0x5b4c,0x5b4c,0x5b2c,0x632c,0x634c,0x636c,0x636d,0x638d,0x638d,0x636d,0x636d,0x636d,0x636c,0x636c,0x636d,0x636d,0x636d,0x634c,0x634c,0x6bae,0x6bae,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6bad,0x6bad,0x6bae,0x73ce,0x73ef,0x73ee,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x636c,0x6b6d,0x73ae,0x73ae,0x6b8d,0x6bae,0x6b6d,0x6bad,0x6bad,0x73ef,0x7c2f,0x7c2f,0x7c2f,0x52eb,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x2104,0x3a07,0x3a08,0x4228,0x636d,0x73ad,0x6b8d,0x638d,0x6bad,0x636d,0x6b6d,0x6b8d,0x634c,0x634c,0x632c,0x5b0c,0x5b0b,0x52eb,0x5aeb,0x52cb,0x4aaa,0x4228,0x10a2,0x18e3,0x18c3,0x0821,0x0841,0x0861,0x1082,0x10a2,0x18c2,0x0000,0x0000,0x0000,0x0000,0x2104,0x2124,0x39e7,0x2145,0x4249,0x634d,0x636c,0xbcca,0xcd49,0xc529,0xcd4a,0x940a,0x530c,0x634c,0x634c,0x634c,0x632c,0x5b0c,0x634c,0x630c,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x4aaa,0x18e3,0x10a2,0x18c3,0x1082,0x0020,0x0841,0x0020,0x0840,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x10c2,0x39e7,0x2145,0x2966,0x5acb,0x5aeb,0x7b8b,0xb4a9,0xac69,0xac89,0xac69,0x6b2b,0x5aeb,0x5b0b,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x630b,0x630b,0x632c,0x630b,0x630c, +0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x528a,0x52aa,0x4aa9,0x4a89,0x52aa,0x4a8a,0x52aa,0x52aa,0x4aea,0x52ea,0x2104,0x2124,0x2104,0x0840,0x0861,0x0881,0x10a2,0x10a2,0x1903,0x2104,0x18e3,0x1903,0x2103,0x18e3,0x18c3,0x18e3,0x39e7,0x4269,0x4248,0x4a69,0x4269,0x4a89,0x52a9,0x4aa9,0x4a89,0x4a8a,0x52ca,0x52c9,0x4aa9,0x4a8a,0x4aa9,0x52a9,0x4aaa,0x4ac9,0x4aa9,0x4a89,0x4a89,0x4a69,0x4aa9,0x52ca,0x4aca,0x4aca,0x4248,0x2104,0x2145,0x10c2,0x0040,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x1082,0x10a2,0x0861,0x2965,0x31a6,0x2124,0x3a08,0x4aaa,0x4aa9,0x4a89,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x52ca,0x530b,0x530b,0x532b,0x5b2c,0x5b2b,0x3a28,0x18c3,0x31c6,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4269,0x5b4c,0x5b2b,0x530b,0x4269,0x4249,0x3a28,0x3207,0x3207,0x3a28,0x4268,0x4269,0x4a89,0x4aa9,0x52ea,0x4269,0x3a08,0x3a08,0x3a28,0x52eb,0x530b,0x52eb,0x52ea,0x52ea,0x52ea,0x52ea,0x52ca,0x52ca,0x52ea,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x52ca,0x52eb,0x52eb,0x52eb,0x530b,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x530b,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ea,0x52eb,0x52ea,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x5b0b,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52cb,0x4aaa,0x4aca,0x52ca,0x52ca,0x52ca,0x5aeb,0x5b0c,0x5b0b,0x52cb,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x632c,0x6b8d,0x63ad,0x742f,0x5b0b,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0841,0x0000,0x31c7,0x5b0c,0x31a6,0x3a08,0x6b6d,0x6b6d,0x6b8e,0x634d,0x634d,0x6b8d,0x6b6d,0x634c,0x634c,0x5b4c,0x634c,0x632c,0x5b0b,0x5b0b,0x5b2c,0x5aeb,0x52aa,0x4208,0x1082,0x18c3,0x10a2,0x0020,0x0000,0x0000,0x0000,0x0800,0x0000,0x2123,0x6b6d,0x840f,0x5aeb,0x0000,0x18c3,0x4249,0x2945,0x4a68,0x5b2c,0x634c,0xbcca,0xcd69,0xcd69,0xcd88,0x9c2a,0x5aec,0x634c,0x634c,0x6b4d,0x632c,0x632c,0x6b6d,0x634d,0x632c,0x632c,0x630c,0x632c,0x5b0c,0x5b0c,0x634c,0x5aeb,0x5b0c,0x52aa,0x18c3,0x18c3,0x2104,0x0861,0x0000,0x0000,0x18c3,0x2124,0x2945,0x2965,0x10e3,0x31e7,0x7bce,0x9491,0x6b6d,0x0000,0x2104,0x3186,0x5aeb,0x52eb,0x8beb,0xd549,0xd569,0xd568,0xcd09,0x734b,0x5b2c,0x5b0b,0x5b0b,0x630b,0x630b,0x5b0b,0x630b,0x5b0b,0x5aeb,0x630b,0x630b,0x630b,0x630b, +0x4aca,0x4aaa,0x52ca,0x52eb,0x52ca,0x52ca,0x4aa9,0x4aaa,0x4aca,0x4aa9,0x4aaa,0x4a8a,0x4aa9,0x4a89,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52eb,0x4a89,0x2144,0x2144,0x2103,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x2124,0x2104,0x2103,0x1903,0x18e3,0x18e3,0x2124,0x31a6,0x4248,0x4249,0x3a68,0x4a89,0x4a69,0x4269,0x4a89,0x4aa9,0x52aa,0x52ca,0x52ca,0x52ca,0x52aa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x4a89,0x4a89,0x4aa9,0x4aa9,0x4269,0x4aaa,0x52ca,0x4aca,0x3a07,0x2124,0x2945,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x2124,0x2986,0x18e3,0x31c7,0x4aaa,0x4aaa,0x4a69,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aea,0x4aca,0x530b,0x4aca,0x530b,0x5b2c,0x5b6d,0x5b4c,0x31e6,0x18e3,0x31c6,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x4268,0x5b4c,0x530b,0x4248,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x3a08,0x3a08,0x3a08,0x4249,0x3a08,0x3a28,0x3a28,0x3a28,0x3a28,0x3a48,0x4a8a,0x4aaa,0x4aaa,0x4a89,0x4269,0x4a89,0x4a89,0x4a69,0x4248,0x4269,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x5aeb,0x52eb,0x52eb,0x52eb,0x52eb,0x5aeb,0x5aeb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52eb,0x52cb,0x52eb,0x52cb,0x4aaa,0x52cb,0x52cb,0x530c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb,0x52aa,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x52ca,0x52ea,0x636d,0x5aeb,0x0820,0x0000,0x0000,0x0000,0x0000,0x0020,0x0841,0x0020,0x0841,0x0000,0x2145,0x4a89,0x31c7,0x39e7,0x6b6d,0x6bad,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x632c,0x634c,0x634c,0x636d,0x634c,0x5b0c,0x634c,0x5b2c,0x5b2c,0x52cb,0x5b0b,0x4228,0x1061,0x1903,0x10a2,0x0020,0x18e3,0x4207,0x52ca,0x52eb,0x7c50,0xd6fa,0xf7de,0xffff,0xf7be,0xb5d7,0x2145,0x31c7,0x2966,0x4a69,0x632c,0x634c,0x42cd,0x226c,0x3aad,0x224c,0x52ec,0x634c,0x632c,0x6b6d,0x634c,0x632c,0x6b6d,0x632c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x630c,0x632c,0x630c,0x5b0c,0x52cb,0x2104,0x10a2,0x18e3,0x18c2,0x2944,0x5289,0x5b0b,0x632c,0x634c,0x638d,0x94f3,0xd6fb,0xf7df,0xffff,0xf7df,0xbdf8,0x2126,0x2965,0x5b0b,0x630b,0x52cb,0x3a6b,0x4aac,0x42cc,0x42cb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x632c,0x630c,0x630c,0x630c,0x5b0b,0x632c, +0x52ca,0x52ca,0x52ea,0x52ea,0x4aca,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4aaa,0x4a89,0x4289,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x4aca,0x31c7,0x2124,0x2965,0x2104,0x0840,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x10a2,0x18c3,0x2124,0x4227,0x4a89,0x4249,0x4249,0x4a69,0x4269,0x4a89,0x4a89,0x4aca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aa9,0x4a89,0x4aa9,0x4aa9,0x4aaa,0x4aa9,0x4289,0x4aa9,0x4aaa,0x52ca,0x3a07,0x1904,0x2124,0x1081,0x0841,0x0861,0x1081,0x10a2,0x18c2,0x18c3,0x18c3,0x10c2,0x10a2,0x1061,0x1904,0x2986,0x2104,0x2985,0x4289,0x4269,0x4269,0x52ca,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x4aca,0x52eb,0x530b,0x530b,0x530b,0x5b2b,0x638d,0x636d,0x39e7,0x18e3,0x31c6,0x10a2,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3a48,0x532b,0x4aaa,0x3a48,0x31c7,0x31c7,0x31e7,0x31e7,0x3a08,0x31e7,0x3a08,0x31e7,0x3a28,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x3a28,0x3a28,0x3a08,0x4248,0x4248,0x3a28,0x3a28,0x4249,0x4a89,0x4249,0x4228,0x4269,0x4269,0x4269,0x4269,0x4289,0x4289,0x4aaa,0x4aaa,0x4a89,0x4a89,0x4a89,0x4aaa,0x52ca,0x52aa,0x52aa,0x52ca,0x52ea,0x52ca,0x52ca,0x4aca,0x52ca,0x52eb,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52eb,0x52cb,0x52cb,0x52eb,0x52eb,0x52eb,0x52eb,0x52ca,0x52ca,0x52cb,0x4aaa,0x4aca,0x52ca,0x52aa,0x52ca,0x52eb,0x52eb,0x5aeb,0x52eb,0x52ca,0x52ca,0x52ca,0x4aaa,0x4a8a,0x4aaa,0x52ca,0x52eb,0x5b0b,0x5aeb,0x634c,0x52eb,0x0861,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0041,0x0000,0x2124,0x4a69,0x39e7,0x31c6,0x634d,0x6bce,0x6b8d,0x6b6d,0x6b8d,0x634c,0x634c,0x6b6d,0x634c,0x634c,0x632c,0x634c,0x634c,0x634c,0x5b2c,0x5aeb,0x5b0b,0x4249,0x10a2,0x2124,0x18e3,0x18c2,0x4248,0x6b8d,0x742f,0x9513,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xbe18,0x08c4,0x2986,0x4269,0x632d,0x6b6c,0x8c0b,0x9c2b,0x9c2b,0x942b,0x7bab,0x634c,0x6b4c,0x636c,0x632c,0x632c,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x634d,0x634c,0x632c,0x5b0b,0x5b0c,0x52cb,0x2945,0x1903,0x2124,0x2103,0x52a9,0x73ed,0x73ad,0x6b8d,0x740f,0x9d74,0xef9e,0xffff,0xffff,0xffff,0xffff,0xffff,0xc619,0x10c4,0x630c,0x5aeb,0x632b,0x7b8b,0x7b8b,0x7b8b,0x7b6b,0x632b,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x630c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x5b0b, +0x52eb,0x5b0b,0x4aca,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4a89,0x4289,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52eb,0x31c6,0x2124,0x2145,0x1903,0x0840,0x1082,0x10a2,0x18c3,0x2103,0x1903,0x2124,0x2124,0x18c3,0x18c3,0x18c2,0x18e3,0x2124,0x31c6,0x4a69,0x4a69,0x4a69,0x4268,0x4268,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aa9,0x4aaa,0x4aca,0x4aa9,0x4a89,0x4aaa,0x4aca,0x4aaa,0x4aa9,0x52ea,0x3a07,0x1904,0x2165,0x0881,0x0861,0x18e3,0x1903,0x1903,0x1903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x2104,0x2965,0x1904,0x31a6,0x4a69,0x4a69,0x4a89,0x4aaa,0x4aca,0x4aca,0x52ca,0x4a89,0x4aaa,0x52ca,0x52ea,0x52eb,0x5b2b,0x530b,0x530b,0x5b2c,0x5b4c,0x31c6,0x10c2,0x31c6,0x10a2,0x0020,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x3a48,0x4aea,0x3a28,0x3207,0x31e7,0x3207,0x31c7,0x31e7,0x31e7,0x29c6,0x31e7,0x31c7,0x3a28,0x3a28,0x31e7,0x39e7,0x31e7,0x31e7,0x3a28,0x4249,0x4269,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x3a48,0x3a48,0x4248,0x4249,0x4248,0x3a28,0x4269,0x4268,0x4269,0x4248,0x52ca,0x4aa9,0x4269,0x4248,0x4269,0x4aaa,0x4aaa,0x4aaa,0x52eb,0x52ea,0x4aca,0x52ca,0x4aaa,0x4aaa,0x52aa,0x52ca,0x4aaa,0x4aaa,0x52aa,0x52aa,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4aaa,0x4aaa,0x4aca,0x52cb,0x52ca,0x4aca,0x52aa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x5b2c,0x52eb,0x0821,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0841,0x0000,0x31a6,0x5b2c,0x31c6,0x31c6,0x634d,0x6bae,0x6b8d,0x636d,0x636c,0x6b6d,0x634c,0x6b6d,0x636d,0x636d,0x636d,0x634c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b2c,0x4a6a,0x1061,0x2124,0x2124,0x10a2,0x73ee,0x8470,0x740e,0xbe58,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7df,0x7c10,0x0000,0x52aa,0x6b4c,0x632d,0xc56a,0xe5e8,0xdda9,0xe5e8,0xa469,0x52ec,0x634c,0x632c,0x6b6d,0x634c,0x6b6c,0x6b4c,0x634c,0x634c,0x632c,0x634c,0x632c,0x632c,0x6b6d,0x634c,0x632c,0x632c,0x5aec,0x2124,0x2124,0x2965,0x1902,0x73cd,0x94b0,0x7c0f,0x8450,0x8490,0xceb9,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0x8452,0x4a48,0x530c,0x940a,0xe5c8,0xe5a8,0xe588,0xdd48,0x736b,0x632c,0x5aeb,0x5aeb,0x630b,0x630b,0x630c,0x630b,0x632c,0x6b6d,0x632c,0x5b0c,0x5b0b,0x5b0b, +0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x530b,0x4aca,0x4aaa,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aca,0x52ca,0x3a07,0x2124,0x2145,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2103,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x1904,0x2124,0x31a6,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4aa9,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x4a89,0x4aa9,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aca,0x31c6,0x2124,0x2945,0x10a2,0x18c3,0x0000,0x0000,0x0000,0x1882,0x2944,0x2124,0x18e3,0x10a2,0x10a2,0x18e3,0x2965,0x18e4,0x31e7,0x4aaa,0x4a89,0x4aaa,0x4289,0x52ca,0x4aca,0x4aca,0x4aaa,0x52ea,0x52ca,0x52ca,0x52ea,0x52ea,0x530b,0x5b2b,0x5b2b,0x5b2b,0x4248,0x10c2,0x31a6,0x1081,0x0820,0x0861,0x0000,0x0000,0x0020,0x0000,0x0000,0x0020,0x0000,0x4269,0x4aeb,0x3a28,0x3a28,0x3a28,0x3a28,0x3207,0x31e7,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x3a28,0x3a08,0x31c7,0x39c7,0x3a08,0x3a08,0x3a08,0x3a08,0x4249,0x4269,0x4248,0x4248,0x3a28,0x4248,0x4228,0x4248,0x4289,0x4aa9,0x4269,0x4248,0x4269,0x4268,0x4289,0x4289,0x4289,0x4aaa,0x4a89,0x4289,0x4269,0x4a69,0x4a69,0x4a89,0x4a69,0x4a89,0x4a89,0x4a69,0x4269,0x4aaa,0x4a8a,0x4a89,0x4a89,0x4a8a,0x4a89,0x4a69,0x4a8a,0x4a8a,0x4269,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4a8a,0x4a8a,0x4269,0x4269,0x4269,0x4269,0x4249,0x4249,0x4269,0x4269,0x4269,0x4a89,0x4a8a,0x4aaa,0x4a89,0x4a89,0x4aaa,0x4a8a,0x4aaa,0x4a89,0x4a8a,0x4aca,0x4aaa,0x5b2c,0x52cb,0x0840,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0020,0x0841,0x0000,0x2986,0x52eb,0x3a07,0x3a07,0x636d,0x6b8e,0x6b8d,0x6b6d,0x6b8d,0x636c,0x632c,0x634c,0x636d,0x634d,0x632c,0x5b2b,0x632c,0x634c,0x634d,0x5b0c,0x5b4c,0x4a8a,0x0820,0x2965,0x2104,0x2144,0x73ef,0x7c2f,0x5b4c,0xadf6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xa534,0x0000,0x52aa,0x634c,0x634c,0x5b0b,0x5b0c,0x52ec,0x5aeb,0x630c,0x632c,0x6b4c,0x634c,0x632c,0x632c,0x630b,0x630b,0x632c,0x634c,0x5b0c,0x5b0b,0x632c,0x632c,0x634c,0x5b0b,0x630b,0x6b6d,0x5acb,0x2965,0x2944,0x2124,0x2964,0x7bed,0x7c0f,0x73ce,0x7bef,0x6b8c,0xce99,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffdf,0xffff,0xa535,0x3207,0x632c,0x632b,0x736a,0x736a,0x738a,0x734a,0x634c,0x630c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x632c,0x632c,0x630c,0x630c,0x630c, +0x52eb,0x52ca,0x52ca,0x52ca,0x52ea,0x52eb,0x52ca,0x4aaa,0x52ca,0x52ca,0x4aaa,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aaa,0x4aca,0x31c6,0x2145,0x2985,0x10a1,0x0000,0x0000,0x0000,0x0000,0x2124,0x2103,0x1903,0x2103,0x18e3,0x10a2,0x1081,0x2124,0x2144,0x31c7,0x4aaa,0x4aca,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aca,0x4aca,0x4aaa,0x52ea,0x530b,0x4aca,0x4aaa,0x4aaa,0x4aca,0x52ca,0x4aca,0x4aca,0x4aca,0x4aaa,0x4aa9,0x4aca,0x52ea,0x52eb,0x4aa9,0x1923,0x2104,0x2986,0x0000,0x0000,0x5b0b,0x7c2f,0x638d,0x1944,0x0000,0x0000,0x18c3,0x10a2,0x1081,0x2104,0x2965,0x2124,0x3a07,0x4aaa,0x4aca,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aa9,0x4aaa,0x4aca,0x52cb,0x52eb,0x52ca,0x52ca,0x52eb,0x530b,0x530b,0x530b,0x31c6,0x10c2,0x2986,0x10a2,0x0020,0x0881,0x0081,0x08a1,0x08c1,0x08a1,0x0061,0x08c2,0x0000,0x4289,0x4aeb,0x3a48,0x3a28,0x3a07,0x3a28,0x3a07,0x31e7,0x31e7,0x31e7,0x31e7,0x39e7,0x31e7,0x31e7,0x31e7,0x31a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2986,0x31a6,0x39e7,0x3a07,0x4269,0x4269,0x3a08,0x3a28,0x4249,0x4269,0x3a08,0x4269,0x4aa9,0x4268,0x3a28,0x4249,0x4269,0x4249,0x4248,0x4249,0x4269,0x4269,0x4269,0x4a69,0x4269,0x4a89,0x4aaa,0x4a8a,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x4a89,0x4a89,0x4a89,0x4a8a,0x4a89,0x4a89,0x4289,0x4aaa,0x4a8a,0x4a8a,0x52cb,0x52eb,0x52ca,0x4a8a,0x4269,0x4269,0x4248,0x3a28,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a08,0x4228,0x4a69,0x4aaa,0x4289,0x4a89,0x4a69,0x4aaa,0x4a89,0x4a8a,0x4a89,0x4a8a,0x4acb,0x52eb,0x52ca,0x08a1,0x08a1,0x0020,0x0020,0x0040,0x0040,0x0840,0x0020,0x0841,0x0000,0x2124,0x4248,0x39e7,0x3a07,0x6b8d,0x73ae,0x6b8d,0x6b6d,0x6b6d,0x636c,0x634c,0x634c,0x634c,0x632c,0x632c,0x632b,0x634c,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x52aa,0x0020,0x2124,0x18c3,0x2965,0x638d,0x73ce,0x638c,0xa595,0xf7ff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x52aa,0x636d,0x6b4c,0x9c2b,0xacaa,0xa46a,0xa48a,0x83cb,0x634c,0x630b,0x632c,0x6b4d,0x632c,0x632c,0x632c,0x632b,0x632c,0x632c,0x632c,0x632c,0x630b,0x5b0c,0x632c,0x632c,0x632c,0x5aeb,0x3186,0x2965,0x2124,0x2103,0x6b8c,0x73ad,0x6b8d,0x6b8d,0x52e9,0xbe37,0xffff,0xffff,0xffff,0xffff,0xffff,0xffde,0xffdf,0x8c72,0x4aa9,0x634c,0x6b2a,0x7b4a,0x7b6a,0x836a,0x7b6a,0x632b,0x5b0b,0x5aeb,0x5b0c,0x632c,0x632c,0x5aeb,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x630c,0x632c, +0x52eb,0x52ca,0x52ca,0x4aca,0x4aca,0x4aca,0x52eb,0x4aca,0x4aaa,0x52ca,0x4aaa,0x52ea,0x4aca,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x52ca,0x31c6,0x2965,0x0880,0x2125,0x8c92,0xa554,0x94d2,0x636c,0x29a6,0x4228,0x4207,0x18e3,0x18c2,0x18e3,0x10a2,0x1904,0x2124,0x31a6,0x4aaa,0x4aca,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52ea,0x52ca,0x4aaa,0x52ca,0x4aca,0x4aca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aca,0x52ca,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aca,0x52ea,0x52ca,0x29a5,0x2124,0x2986,0x0000,0xadb6,0xef9d,0xefbd,0xe79d,0xd6fb,0xa554,0x4a88,0x10a2,0x1082,0x10a2,0x2145,0x2965,0x1904,0x3a08,0x52ea,0x52ca,0x4aca,0x4aca,0x52ea,0x4aaa,0x4aaa,0x52eb,0x530b,0x52ca,0x52ca,0x52eb,0x52ca,0x52eb,0x52eb,0x530b,0x5b2b,0x31a6,0x18a2,0x2985,0x0881,0x0841,0x10e2,0x08c1,0x0902,0x0922,0x08e1,0x0081,0x08a1,0x0000,0x4aca,0x530b,0x4aaa,0x4aca,0x4268,0x4aa9,0x4269,0x4248,0x3a28,0x3a07,0x31e7,0x3a08,0x31e7,0x29a6,0x29a6,0x2985,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x2124,0x18e3,0x1903,0x2165,0x31a6,0x31c7,0x4269,0x4289,0x3a28,0x3a28,0x4248,0x4269,0x4249,0x4248,0x4a89,0x4aa9,0x4aca,0x4aca,0x52cb,0x4aaa,0x4a8a,0x52ca,0x52ca,0x4aca,0x4aca,0x4aa9,0x4aaa,0x4aca,0x4aca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x52ca,0x52eb,0x52cb,0x52cb,0x52ab,0x4aaa,0x52aa,0x52ca,0x4aaa,0x52eb,0x5b2c,0x5b2c,0x52eb,0x4aaa,0x4aaa,0x4a89,0x4248,0x3a08,0x31c7,0x39e7,0x31e7,0x31c7,0x31c7,0x31c6,0x31c7,0x39e7,0x3a08,0x4a69,0x52aa,0x4aca,0x4aaa,0x4aaa,0x52cb,0x52ca,0x52cb,0x5b0c,0x52eb,0x5b2c,0x634d,0x5b0b,0x08c2,0x08e2,0x0020,0x0020,0x0040,0x0041,0x0861,0x0861,0x0861,0x0000,0x1904,0x4228,0x3186,0x31a6,0x6b6d,0x738d,0x6b6d,0x634d,0x634c,0x636c,0x636c,0x634c,0x632c,0x634d,0x6b4d,0x634c,0x636c,0x6bae,0x73ce,0x738d,0x6bae,0x52ca,0x0861,0x2124,0x2124,0x10a2,0x636c,0x7c50,0x7c90,0x84b1,0xe75c,0xffff,0xffff,0xffdf,0xffdf,0xffff,0xe75c,0x4229,0x2944,0x4a89,0x6b6d,0x636c,0xd589,0xf649,0xee49,0xf648,0xb469,0x4aeb,0x6b4c,0x632c,0x5b0b,0x632c,0x632c,0x5b0c,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x634d,0x630c,0x2965,0x2144,0x2965,0x18c2,0x4aa9,0x6b8c,0x6b8c,0x73ad,0x632b,0x94d2,0xefde,0xffff,0xffdf,0xffdf,0xffdf,0xffff,0xdefc,0x31c8,0x5aeb,0x4aab,0x9c4a,0xedc7,0xeda8,0xf5e8,0xe588,0x7b6b,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x630b,0x630b,0x5b0c,0x632c,0x630b,0x632b,0x632c,0x632c,0x632c, +0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ea,0x4aca,0x4aca,0x530b,0x52eb,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x3a07,0x10c3,0x31c8,0xc659,0xffff,0xf7fe,0xf7fe,0xe77c,0xadb5,0x638c,0x6b8d,0x52ea,0x10a1,0x1082,0x18e3,0x1903,0x2104,0x2986,0x52ca,0x4aca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ea,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52ea,0x52eb,0x52ca,0x4aaa,0x52ca,0x52eb,0x52ca,0x4aca,0x4aca,0x52ca,0x4aca,0x530b,0x4aaa,0x31a6,0x2145,0x0000,0x9d34,0xf7ff,0xf7de,0xf7de,0xf7de,0xffff,0xf7dd,0xad94,0x52ea,0x0000,0x18c2,0x2965,0x2965,0x1904,0x3a08,0x52ea,0x52ca,0x52ca,0x52ca,0x52ea,0x52eb,0x52ca,0x52ea,0x530b,0x530b,0x4aca,0x4aaa,0x52ea,0x530b,0x530b,0x530b,0x532b,0x39e7,0x18c2,0x2985,0x1082,0x0020,0x10c2,0x08c1,0x0901,0x0922,0x08e1,0x0081,0x0000,0x10a2,0x31e7,0x2965,0x31a6,0x39e7,0x29a6,0x29a6,0x31c6,0x2985,0x2144,0x1904,0x2986,0x2985,0x2124,0x2124,0x2144,0x2124,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2144,0x2103,0x2124,0x2124,0x2965,0x2965,0x31c6,0x31e7,0x31c6,0x31c6,0x31c6,0x39e7,0x3a28,0x4228,0x4228,0x4aa9,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4aaa,0x4aaa,0x4a89,0x4a69,0x4248,0x4269,0x4a69,0x4269,0x4a69,0x4a89,0x4a8a,0x4a89,0x4269,0x4a89,0x4a89,0x4269,0x4289,0x428a,0x4aaa,0x4269,0x4248,0x4269,0x4249,0x4a69,0x4a89,0x52aa,0x4a8a,0x4a8a,0x4aaa,0x4a89,0x3a08,0x39e7,0x39e7,0x39c7,0x31a6,0x31a6,0x3186,0x31a6,0x39e7,0x39e7,0x3a07,0x52ca,0x52eb,0x4aaa,0x52ca,0x52ca,0x52eb,0x52eb,0x5b2c,0x5b4c,0x5b0c,0x52aa,0x5b0b,0x1903,0x00c1,0x0040,0x0020,0x0040,0x0040,0x0841,0x10a2,0x1081,0x0020,0x1904,0x4228,0x31a6,0x31a6,0x634c,0x6b8d,0x6b8e,0x6b8d,0x6b4c,0x636c,0x636d,0x634c,0x636d,0x634c,0x634c,0x634c,0x634c,0x6b6d,0x6bae,0x634c,0x73ce,0x5b0b,0x0000,0x2124,0x2965,0x2944,0x4248,0x5b2c,0x63ad,0x636c,0x8cb2,0xe75c,0xffff,0xffff,0xffff,0xf79e,0x8430,0x1904,0x31a6,0x4a89,0x6b8d,0x6b4c,0x5b0b,0x62eb,0x62cb,0x630c,0x630b,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x5b0c,0x5b2c,0x632c,0x634c,0x630c,0x5b0b,0x632c,0x634d,0x632c,0x632c,0x634d,0x5aeb,0x2104,0x2945,0x31a6,0x39e7,0x4a68,0x634b,0x6b8c,0x6b6c,0x73ae,0x6b6c,0xadb5,0xf7de,0xffff,0xffff,0xffff,0xef5d,0x6b4d,0x10e1,0x5b0b,0x630b,0x5aca,0x62ea,0x6309,0x632a,0x632a,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b0c,0x5aeb,0x5b0b,0x5b0b,0x5b2c,0x632c,0x632c,0x632c,0x630c,0x630b, +0x52ea,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x52ea,0x52ea,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4aca,0x52eb,0x3a07,0x0000,0xbe3a,0xf7ff,0xf7df,0xffde,0xf7de,0xfffe,0xefbd,0x94f2,0x73ee,0x7c4f,0x31e6,0x0000,0x18e3,0x2104,0x2124,0x39e7,0x52eb,0x52ca,0x52eb,0x52ea,0x52ea,0x52ca,0x52ea,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x4aca,0x52eb,0x52eb,0x52ca,0x52ca,0x52ea,0x52ea,0x52ca,0x52ea,0x52ca,0x4aca,0x4aa9,0x29a6,0x1081,0x3208,0xd71c,0xefdd,0xf7dd,0xf7de,0xf7dd,0xf7dd,0xf7fe,0xceb9,0x7c0f,0x2164,0x0820,0x2965,0x2965,0x2124,0x4248,0x52eb,0x52eb,0x52eb,0x52ea,0x52ea,0x52eb,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x4aca,0x52ea,0x530b,0x52eb,0x530b,0x5b2b,0x31c6,0x18e3,0x2965,0x10a2,0x0861,0x10c2,0x08a1,0x08e1,0x0922,0x08e1,0x0081,0x0000,0x18e3,0x31c6,0x0820,0x18e3,0x2104,0x2124,0x2124,0x2124,0x1903,0x18c3,0x0882,0x1904,0x2144,0x2124,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2965,0x18c2,0x1903,0x2144,0x2165,0x2145,0x2144,0x2144,0x2144,0x2965,0x2144,0x2164,0x2144,0x2144,0x2124,0x2124,0x2124,0x2124,0x2144,0x1924,0x1903,0x2124,0x2965,0x2945,0x1903,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x2144,0x2965,0x2965,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2965,0x2144,0x10c2,0x4228,0x4a8a,0x39e7,0x39e7,0x31a5,0x2965,0x2145,0x2144,0x2124,0x2124,0x2144,0x2965,0x2965,0x31a6,0x4228,0x4a89,0x52ca,0x4a89,0x4a89,0x4a89,0x4aa9,0x5b0b,0x31a6,0x0000,0x4268,0x2144,0x00e1,0x0040,0x0020,0x0060,0x0060,0x0840,0x1081,0x1081,0x0020,0x2124,0x4248,0x31a6,0x31a6,0x6b8d,0x6b8d,0x636d,0x6b8d,0x73ad,0x6bad,0x634c,0x634c,0x636d,0x636d,0x636c,0x6b6d,0x634c,0x632c,0x6b6d,0x634c,0x73ae,0x5aeb,0x0000,0x2124,0x2144,0x2965,0x4248,0x5aeb,0x634c,0x6b6c,0x634c,0x8450,0xbe17,0xce79,0xb5d6,0x5acb,0x0000,0x4228,0x2945,0x4269,0x6b8d,0x6b6d,0xc56a,0xe5e9,0xddc9,0xe609,0xa46a,0x5b0c,0x630b,0x632c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x5b0b,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x5acb,0x1903,0x31a6,0x4208,0x3185,0x4248,0x5b0a,0x634c,0x5aca,0x52aa,0x5aeb,0x5aca,0x8c91,0xc617,0xce59,0xad75,0x4a69,0x0000,0x39c7,0x5aeb,0x52ec,0x83ea,0xcd28,0xc4e8,0xc4e8,0xc4e9,0x734b,0x5b0b,0x630b,0x5b0b,0x630c,0x5aeb,0x5aeb,0x5b0b,0x632b,0x632b,0x5b0c,0x630c,0x630c,0x630c, +0x52ea,0x52ea,0x52ca,0x4aaa,0x52ca,0x52ca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aaa,0x52ea,0x52ea,0x4aaa,0x4aaa,0x4aca,0x4aaa,0x4aca,0x52cb,0x2943,0x4aad,0xe79e,0xf7ff,0xf7de,0xffff,0xffff,0xf7de,0xf7ff,0xbe77,0x6bcd,0x8cb1,0x52c9,0x0000,0x18c3,0x18e3,0x18e3,0x3a28,0x5b4c,0x530b,0x52ea,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x52ea,0x52ca,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52eb,0x4aca,0x4aca,0x52ca,0x52ca,0x3a28,0x0000,0x532d,0xdf7d,0xf7bd,0xf7dd,0xffde,0xffde,0xf7bc,0xf7de,0xd6da,0x8470,0x4a89,0x0000,0x2145,0x2165,0x2104,0x4269,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x530b,0x52eb,0x52eb,0x52eb,0x52ea,0x52ea,0x4aca,0x4aaa,0x52ea,0x52ea,0x52ca,0x5b0b,0x5b4c,0x4a69,0x18e3,0x2145,0x1082,0x0840,0x10c2,0x1102,0x1142,0x0121,0x0901,0x08a1,0x0000,0x1903,0x3a07,0x0861,0x1082,0x0861,0x10c2,0x18e3,0x10a2,0x1082,0x0861,0x1082,0x0041,0x31c6,0x3a07,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x4a49,0x2965,0x29a6,0x2985,0x2945,0x31a6,0x39e7,0x39e7,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4269,0x4228,0x3a28,0x3a28,0x4228,0x3a08,0x39e7,0x3a08,0x3a07,0x3a08,0x3a28,0x4a89,0x3a28,0x4228,0x4248,0x3a08,0x3a08,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x4228,0x3a07,0x3a07,0x3a28,0x4248,0x3a48,0x4269,0x4a89,0x4aa9,0x4248,0x4269,0x4a69,0x39e7,0x1903,0x4a89,0x4a89,0x39e7,0x3a07,0x2103,0x31a6,0x52ea,0x52ca,0x39e7,0x4248,0x4248,0x4249,0x4a69,0x52aa,0x0861,0x10a2,0x18c2,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x0020,0x10a2,0x3a48,0x2184,0x0942,0x0020,0x0040,0x0060,0x0081,0x0020,0x0861,0x1082,0x0000,0x2965,0x528a,0x31a6,0x39e7,0x636d,0x6b8d,0x6b6d,0x6b8d,0x6bad,0x6b8d,0x632c,0x6b6d,0x634c,0x634c,0x6b6d,0x634c,0x634c,0x636c,0x634c,0x634c,0x6bae,0x52cb,0x10a2,0x2965,0x2945,0x1082,0x2124,0x3185,0x39c6,0x2985,0x2944,0x0000,0x0000,0x0000,0x0000,0x0000,0x2985,0x3a08,0x2986,0x4a69,0x6b6d,0x6b6d,0x9c4a,0xb4ea,0xb4ca,0xb4e9,0x8beb,0x530b,0x5b0b,0x630c,0x632c,0x634c,0x634c,0x632c,0x634d,0x632c,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x632c,0x630b,0x5aeb,0x5aeb,0x2945,0x2165,0x3a07,0x3185,0x2123,0x2103,0x18e3,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0x2965,0x2985,0x5aea,0x4aab,0x8bea,0xd548,0xd529,0xd548,0xd509,0x734a,0x5aeb,0x5aeb,0x5b0c,0x5b0c,0x630c,0x5b0c,0x632c,0x630b,0x632c,0x5b0c,0x5aeb,0x5aeb,0x5b0b, +0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52ea,0x52ca,0x52ca,0x4aaa,0x4aca,0x52ca,0x52eb,0x52eb,0x52ca,0x4aca,0x52ca,0x52ca,0x4aca,0x530b,0x18c0,0x6391,0xef9e,0xefdf,0xf7de,0xf7de,0xf7de,0xf7de,0xf7ff,0xced9,0x7c2e,0x8cb1,0x634b,0x0000,0x18e3,0x2103,0x2104,0x31c7,0x5b4c,0x530b,0x5b2b,0x530b,0x52ea,0x52ca,0x52ea,0x5b2b,0x52eb,0x52ca,0x5b0b,0x530b,0x52ca,0x52ca,0x52eb,0x530b,0x52ea,0x52ea,0x52eb,0x52ca,0x52eb,0x52ea,0x52ca,0x52ea,0x4aca,0x3a27,0x0000,0x3a8a,0xdf5d,0xfffe,0xffde,0xfffe,0xf7dd,0xf7bc,0xfffe,0xd6da,0x8490,0x52aa,0x0000,0x2165,0x2145,0x2144,0x4aaa,0x5b2c,0x5b4c,0x530b,0x5b2b,0x530b,0x52eb,0x530b,0x52eb,0x52eb,0x52ca,0x4aaa,0x4aca,0x4aca,0x52ea,0x52eb,0x530b,0x5b4c,0x3a48,0x18e3,0x2985,0x0881,0x0020,0x10e2,0x0922,0x1183,0x0962,0x0901,0x08a1,0x0000,0x1903,0x3a07,0x0000,0x0020,0x0841,0x0020,0x0040,0x0841,0x0020,0x0020,0x0000,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x0841,0x0840,0x0841,0x0841,0x0020,0x2965,0x2144,0x2985,0x2985,0x2124,0x2965,0x31a5,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2985,0x31c6,0x31a6,0x2985,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x2965,0x10a2,0x4a89,0x4a69,0x4228,0x4248,0x2103,0x2124,0x31a6,0x31c6,0x2965,0x2965,0x2965,0x2985,0x31a6,0x31c6,0x10a2,0x0841,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0040,0x1082,0x3a08,0x2184,0x0982,0x0060,0x0040,0x0060,0x0081,0x0841,0x0841,0x0841,0x0000,0x1904,0x4228,0x31c6,0x31e7,0x636d,0x6bae,0x636d,0x634c,0x6b8d,0x6b6d,0x634c,0x638d,0x636c,0x634c,0x632c,0x5b0b,0x636c,0x636d,0x634c,0x6b8d,0x73ce,0x5aeb,0x1081,0x31a6,0x2965,0x18c3,0x1082,0x0841,0x0020,0x0020,0x0000,0x10a2,0x18e3,0x18e3,0x2104,0x1082,0x31a6,0x4a8a,0x31a6,0x52a9,0x738d,0x634c,0x9c4a,0xac6a,0xac6a,0xb4aa,0x8bab,0x5b2c,0x630b,0x5aeb,0x634c,0x634c,0x632c,0x5b0c,0x5b2c,0x5b0c,0x5b0b,0x632c,0x5aeb,0x632c,0x634c,0x630b,0x5aea,0x5b0b,0x5aeb,0x2965,0x3a07,0x4228,0x2965,0x18e3,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x2104,0x2104,0x2965,0x31a6,0x2104,0x2965,0x5b0b,0x5aeb,0x6b0a,0x8ba9,0x8b8a,0x8ba9,0x8389,0x630b,0x5aeb,0x5acb,0x5b0c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x630c,0x52cb,0x52ca,0x5aeb,0x5aeb, +0x52ea,0x52eb,0x52ca,0x52eb,0x52eb,0x52cb,0x52eb,0x52eb,0x4aca,0x4aca,0x4aca,0x52eb,0x52ea,0x4aca,0x4aca,0x4aca,0x52aa,0x52ca,0x52eb,0x39e5,0x4a8d,0xe77e,0xf7ff,0xffde,0xf7de,0xf7de,0xf7be,0xf7ff,0xc657,0x73ed,0x8cb0,0x52ea,0x0000,0x18e3,0x2124,0x2104,0x4269,0x636c,0x5b2b,0x530b,0x52eb,0x52eb,0x4aca,0x4aca,0x52eb,0x4aca,0x52ea,0x52eb,0x52ca,0x52ea,0x52ea,0x52ea,0x52ea,0x52ea,0x530b,0x530b,0x52eb,0x52ca,0x52ea,0x52ca,0x4aca,0x4aaa,0x31a6,0x2124,0x0000,0xbe58,0xffff,0xffde,0xf7dd,0xf7dd,0xfffe,0xfffe,0xbe37,0x8490,0x3a07,0x0000,0x2965,0x2144,0x2144,0x4aaa,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x530b,0x530b,0x52ca,0x5b0b,0x52ea,0x4aca,0x4aaa,0x52ca,0x52ea,0x530b,0x532b,0x5b4c,0x4a89,0x18e3,0x31c6,0x0882,0x0000,0x10e2,0x1183,0x09a2,0x0962,0x0922,0x08c1,0x0000,0x1904,0x4228,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2144,0x1903,0x0861,0x1082,0x1061,0x1082,0x1082,0x10a2,0x0840,0x0861,0x10c3,0x2124,0x2985,0x2985,0x31c6,0x2145,0x2965,0x2965,0x2124,0x2145,0x2145,0x2144,0x2124,0x2144,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2986,0x31c6,0x31c6,0x31c7,0x31c6,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x3a07,0x3a07,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x4a89,0x4aaa,0x4aa9,0x4268,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x4248,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x39c7,0x2184,0x09c3,0x0060,0x0040,0x0060,0x0881,0x0841,0x0841,0x0841,0x0000,0x1904,0x3a08,0x31c6,0x31e7,0x6b8e,0x73ef,0x6b6d,0x6b6d,0x634c,0x6b4d,0x6b6d,0x6b6d,0x634c,0x634c,0x636c,0x6b6d,0x6b4c,0x636c,0x636d,0x6b6d,0x73ce,0x5aeb,0x10a2,0x31c7,0x2986,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0841,0x0020,0x0841,0x0000,0x39c7,0x5acb,0x31a6,0x528a,0x6b8d,0x632c,0xc529,0xdd88,0xdd69,0xdda8,0xa44a,0x532c,0x632c,0x632c,0x630b,0x632c,0x630c,0x630b,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0b,0x5aeb,0x6b4d,0x632c,0x5b0b,0x632c,0x5aeb,0x2124,0x3a28,0x3a08,0x2103,0x2124,0x2124,0x2124,0x2103,0x18c3,0x10a2,0x0861,0x0020,0x0841,0x0020,0x2945,0x39c7,0x2966,0x31a6,0x5aea,0x52cb,0x9c2a,0xe5a8,0xe588,0xe5c8,0xdd68,0x7349,0x5b0c,0x5aeb,0x5aeb,0x5b0b,0x630c,0x630c,0x5b0b,0x632c,0x52cb,0x52aa,0x52ca,0x5aeb,0x5aeb, +0x52eb,0x52ca,0x52ca,0x52eb,0x52eb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x4aaa,0x4aca,0x52ca,0x4aaa,0x4aca,0x52eb,0x3a07,0x0000,0xb5f9,0xffff,0xffff,0xffff,0xffdf,0xffff,0xdf5b,0x7c0d,0x6309,0x636c,0x2964,0x0000,0x18e3,0x2104,0x2124,0x31e7,0x636d,0x5b4c,0x5b0b,0x530b,0x52eb,0x52ea,0x4aca,0x52ea,0x4aca,0x52ea,0x52aa,0x52ca,0x52eb,0x52ea,0x52ca,0x52eb,0x52ca,0x4aca,0x4aca,0x4aca,0x52ca,0x4aca,0x52ea,0x4aca,0x4aa9,0x31c6,0x1904,0x0800,0x3a89,0xcefa,0xf7ff,0xffff,0xf7fe,0xe75c,0xb5f6,0x7c4f,0x5b2b,0x0000,0x1081,0x2124,0x2124,0x2124,0x4a89,0x5b4c,0x530b,0x5b2b,0x52ca,0x5b0b,0x52eb,0x530b,0x52ea,0x52ca,0x52eb,0x4aaa,0x4a89,0x4aaa,0x52ca,0x530b,0x532b,0x5b4c,0x4228,0x18e3,0x4248,0x1082,0x0000,0x10e2,0x1183,0x09c3,0x0982,0x0942,0x08e1,0x0060,0x0882,0x4aaa,0x5b2c,0x636c,0x5b4c,0x4289,0x4248,0x4228,0x4269,0x52ca,0x4248,0x3a07,0x3a07,0x2965,0x2145,0x2965,0x2144,0x2104,0x2144,0x31c7,0x2124,0x2965,0x2986,0x31c7,0x31c7,0x31c6,0x3a07,0x4248,0x4a69,0x4289,0x4249,0x4249,0x4289,0x4248,0x4248,0x4249,0x4248,0x4269,0x4269,0x4248,0x4269,0x4249,0x4269,0x4a69,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x52eb,0x52eb,0x52eb,0x52ca,0x52cb,0x52eb,0x52eb,0x52ca,0x52eb,0x52eb,0x530b,0x5b2b,0x530b,0x5b0c,0x5b0c,0x5b2c,0x5b2b,0x5b4c,0x530b,0x4289,0x52cb,0x52cb,0x4269,0x2986,0x2985,0x2965,0x2144,0x2124,0x2145,0x2966,0x2986,0x2986,0x4248,0x4a89,0x4aaa,0x634c,0x52aa,0x4a89,0x4aaa,0x4a89,0x52eb,0x5b2c,0x636d,0x5aeb,0x1122,0x11e3,0x0040,0x0040,0x0060,0x0881,0x0861,0x0841,0x0841,0x0000,0x2124,0x4228,0x39c7,0x39e7,0x6bae,0x73ef,0x73ce,0x6bae,0x636d,0x6b6d,0x6b6d,0x632c,0x6b6d,0x6b8d,0x638d,0x6b8d,0x634c,0x634c,0x636c,0x6b6d,0x7c0f,0x632c,0x18a2,0x31c7,0x2986,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0020,0x0000,0x0841,0x0020,0x31a7,0x52aa,0x31a6,0x4aaa,0x73cd,0x630c,0xa44a,0xcd08,0xc4e9,0xc509,0x8bea,0x5b0d,0x632c,0x630b,0x632c,0x632c,0x6b8d,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5aeb,0x632c,0x630c,0x2124,0x4228,0x4249,0x2944,0x2945,0x2104,0x2104,0x2103,0x18c3,0x18c3,0x0861,0x0000,0x0020,0x0020,0x2124,0x31a6,0x2125,0x3186,0x5aeb,0x5b2c,0x7b8b,0xac68,0xb468,0xb469,0xa428,0x6b2a,0x632c,0x5aeb,0x5aeb,0x5aeb,0x630c,0x632c,0x632c,0x630b,0x52aa,0x5aeb,0x5aeb,0x5acb,0x5aeb, +0x52ea,0x52eb,0x52ea,0x52eb,0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x52ca,0x52ca,0x4248,0x18c1,0x1905,0xbe39,0xf7df,0xf7fe,0xefde,0xced9,0x7c4f,0x3a27,0x4a89,0x31a6,0x0000,0x18c3,0x18c3,0x18e3,0x2124,0x3a07,0x5b6c,0x5b2b,0x52ea,0x4aca,0x52ea,0x52ca,0x4aca,0x52ca,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aaa,0x4aaa,0x52ca,0x4aca,0x4aaa,0x4aca,0x4aaa,0x31a6,0x10a2,0x2145,0x0000,0x2945,0x8cd2,0x9d54,0x94f2,0x73ee,0x636c,0x52ea,0x0040,0x0000,0x0881,0x2104,0x1904,0x2104,0x4269,0x530b,0x530a,0x52ea,0x52ea,0x5b0b,0x52eb,0x5b0b,0x52eb,0x4aca,0x4aca,0x4aca,0x4aaa,0x4aaa,0x4aa9,0x4aaa,0x530b,0x532b,0x39e7,0x1903,0x52ca,0x10a2,0x0000,0x10e2,0x1183,0x11c3,0x0982,0x0962,0x0901,0x0080,0x0841,0x4268,0x530b,0x5b2b,0x5b4c,0x4289,0x4269,0x4289,0x4aaa,0x4aca,0x4aaa,0x4289,0x4248,0x3a28,0x3a07,0x31e7,0x31a6,0x29a6,0x31a6,0x31c7,0x31c6,0x31a6,0x3a08,0x4269,0x31c6,0x3a07,0x4248,0x3a48,0x3a28,0x4248,0x4269,0x3a28,0x3a48,0x3a28,0x3a28,0x3a48,0x4249,0x4269,0x4248,0x4248,0x3a28,0x4248,0x4269,0x3a48,0x4248,0x4269,0x4269,0x3a28,0x31e7,0x3a07,0x3a07,0x4228,0x4248,0x3a28,0x4248,0x4269,0x4289,0x4269,0x4289,0x4a89,0x4a89,0x4a89,0x4aaa,0x4aca,0x4aca,0x4aca,0x52cb,0x52eb,0x52ea,0x530b,0x532c,0x4aeb,0x4aaa,0x4aaa,0x52eb,0x4aaa,0x4269,0x4248,0x4248,0x3a08,0x3a07,0x3a28,0x4228,0x4249,0x4269,0x52ca,0x52eb,0x5b2c,0x740f,0x6b8d,0x52eb,0x5b0b,0x5b0c,0x5b4c,0x5b2c,0x6bae,0x632c,0x0101,0x1a04,0x0040,0x0040,0x0060,0x0881,0x0861,0x0841,0x0841,0x0000,0x2965,0x52ca,0x31c6,0x4248,0x6bae,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x6bad,0x636c,0x632c,0x6b6d,0x6b6d,0x6b8d,0x5b2c,0x630c,0x634c,0x634c,0x6b8d,0x73ef,0x5aeb,0x18c3,0x31c7,0x31a6,0x0841,0x0882,0x1081,0x1081,0x10a2,0x1082,0x0861,0x0020,0x0000,0x0841,0x0000,0x39e7,0x4aaa,0x2945,0x4a69,0x738d,0x530c,0xd5aa,0xfea8,0xfe88,0xfe88,0xa449,0x52ec,0x6b4c,0x632c,0x632c,0x632c,0x634c,0x634c,0x634c,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x632b,0x5b0b,0x5aeb,0x634c,0x632c,0x2124,0x39e7,0x39e8,0x2124,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c2,0x0841,0x0020,0x0021,0x0020,0x2945,0x31a6,0x2104,0x29a5,0x630c,0x52cc,0x8c09,0xfe69,0xfe48,0xfe48,0xeda7,0x6b0b,0x52eb,0x5aeb,0x630c,0x630c,0x5b0c,0x632c,0x632c,0x5b0b,0x5aeb,0x5aca,0x5aca,0x5acb,0x5acb, +0x52eb,0x5b0b,0x52ea,0x52ca,0x52ca,0x52ca,0x4aca,0x52ca,0x4aca,0x3aca,0x4aca,0x52ea,0x4aca,0x3aaa,0x42ca,0x42aa,0x3aaa,0x42aa,0x52ca,0x3a07,0x2125,0x0840,0x0000,0x6b6d,0x8c91,0x73ee,0x31c5,0x0000,0x3186,0x2124,0x0840,0x10a2,0x1082,0x10a2,0x18e3,0x2124,0x3a07,0x5b2c,0x52eb,0x52eb,0x52ca,0x4aca,0x4aaa,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x4aaa,0x428a,0x4aca,0x4ac9,0x52ea,0x4aaa,0x4289,0x4aaa,0x4aaa,0x4aaa,0x4aaa,0x4aca,0x4a89,0x2985,0x18c3,0x18e3,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0x0021,0x0000,0x0841,0x0020,0x18e3,0x2104,0x1904,0x4269,0x530b,0x530b,0x532b,0x52ea,0x52ea,0x52eb,0x5b0b,0x530b,0x4aca,0x4aca,0x52ea,0x4aca,0x4aaa,0x52ca,0x52ca,0x5b2c,0x530b,0x2985,0x2144,0x5b4c,0x10a2,0x0820,0x10c2,0x1142,0x11c3,0x0982,0x0982,0x0922,0x0060,0x0000,0x5b4c,0x530b,0x4269,0x4289,0x4a89,0x4289,0x4269,0x4248,0x4289,0x4a89,0x4a89,0x4249,0x3a28,0x31c6,0x29a6,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x4269,0x4aca,0x5b4c,0x5b2b,0x52ea,0x530b,0x530b,0x5b2b,0x5b2b,0x5b4b,0x5b0b,0x530b,0x532b,0x5b2c,0x5b2b,0x5b4c,0x5b2b,0x530b,0x530b,0x530b,0x52eb,0x52eb,0x52eb,0x5b0b,0x530b,0x530b,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b4c,0x5b4c,0x5b4c,0x5b0b,0x52eb,0x52eb,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x530b,0x5b2b,0x636d,0x634d,0x634c,0x6bce,0x6bce,0x6bad,0x638d,0x52eb,0x6bae,0x740f,0x636c,0x5b2b,0x5b2b,0x4aaa,0x4aaa,0x4289,0x4aaa,0x4aca,0x4aaa,0x4acb,0x52eb,0x5b2c,0x52eb,0x4aca,0x52eb,0x4a89,0x4a89,0x4269,0x4249,0x4aaa,0x4a8a,0x634c,0x52eb,0x0122,0x19e4,0x0020,0x0040,0x0060,0x0881,0x0881,0x0040,0x0861,0x0000,0x2965,0x52aa,0x39c7,0x4228,0x6bae,0x73ce,0x6bad,0x6bae,0x738d,0x6b6d,0x634c,0x634d,0x6b6d,0x634c,0x636d,0x5b2c,0x5b2c,0x5b0b,0x6b8d,0x6bae,0x73ae,0x634c,0x2103,0x31e7,0x31c7,0x0820,0x0861,0x1081,0x0861,0x1082,0x1082,0x0861,0x0020,0x0020,0x0861,0x0841,0x31c7,0x4aab,0x4208,0x4a68,0x6b8d,0x530d,0xacaa,0xfe89,0xfe89,0xee28,0x7b4b,0x5b0c,0x632c,0x634c,0x632c,0x632c,0x636d,0x634c,0x634c,0x6b6d,0x634c,0x630c,0x5aeb,0x5b2c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x3185,0x31a7,0x39e7,0x2104,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18c2,0x0841,0x0020,0x0841,0x0000,0x2965,0x39c7,0x2125,0x2965,0x5aeb,0x632c,0x6b2b,0xede9,0xfe28,0xfe28,0xd508,0x528b,0x632b,0x632c,0x5b0c,0x632c,0x630c,0x5b0c,0x632c,0x630c,0x52ca,0x5aca,0x5aeb,0x5acb,0x5aeb, +0x52ea,0x52eb,0x52ea,0x52eb,0x52ca,0x52eb,0x5b0b,0x4aeb,0x62ea,0x82ca,0x5aca,0x4aea,0x6aca,0x8aea,0x7aeb,0x6aaa,0x82ca,0x7aea,0x52ca,0x39e6,0x10e3,0x2104,0x2924,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0000,0x0020,0x1081,0x1082,0x0020,0x1082,0x10a2,0x1903,0x39e7,0x52eb,0x52eb,0x5b0b,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x4aca,0x52ca,0x4a8a,0x4aca,0x630a,0x7389,0x52c9,0x52ca,0x4aaa,0x52c9,0x5ae9,0x52a9,0x52e9,0x52ea,0x5aea,0x630a,0x4aea,0x31c5,0x18c3,0x1903,0x18c3,0x1082,0x18e3,0x18e3,0x18c3,0x0861,0x0000,0x0840,0x0861,0x0000,0x0020,0x18e3,0x1904,0x1904,0x4a89,0x530b,0x532b,0x530b,0x5b2b,0x5b2b,0x5b2b,0x530b,0x530b,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x4aca,0x52eb,0x5b4c,0x636c,0x39e6,0x18c3,0x4aaa,0x10c2,0x0841,0x10a2,0x10e2,0x1163,0x0982,0x1163,0x08e2,0x0902,0x18e3,0x6b8d,0x4248,0x31a6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a07,0x31e7,0x3186,0x2965,0x2945,0x2985,0x31a6,0x31c6,0x39e7,0x29a6,0x31c6,0x39e7,0x3a07,0x4a89,0x4aaa,0x4a89,0x4248,0x4268,0x4a89,0x4aa9,0x4269,0x4aa9,0x4aca,0x4aaa,0x4a89,0x4a89,0x4aaa,0x52ea,0x4aaa,0x4a89,0x4aaa,0x4aca,0x4aaa,0x52ca,0x52ca,0x52eb,0x52ca,0x530b,0x5b2c,0x5b0b,0x52eb,0x530b,0x52ea,0x52eb,0x52ea,0x52eb,0x52eb,0x5b0b,0x530b,0x5b2c,0x5b0b,0x5b2c,0x530b,0x530b,0x530b,0x5b4c,0x5b4c,0x5b4c,0x6b8d,0x6bae,0x638d,0x5b2b,0x73ee,0x7c2f,0x63ad,0x530b,0x5b2c,0x5b2b,0x5b2c,0x5b0b,0x52eb,0x530b,0x5b2c,0x5b4c,0x636c,0x6b8d,0x6b8d,0x6bae,0x73ce,0x6bae,0x6bce,0x73ce,0x73ef,0x8450,0x8451,0x9d33,0x6b8d,0x0100,0x19e4,0x0000,0x0060,0x00a1,0x08a1,0x0861,0x0041,0x0020,0x0000,0x18e3,0x4228,0x31c7,0x39e7,0x6b8d,0x6bae,0x73ce,0x6bae,0x6b8d,0x738d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x632c,0x5b2c,0x634c,0x636c,0x6b6d,0x73ae,0x632c,0x0861,0x3a08,0x31c7,0x0000,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0020,0x0000,0x18c2,0x18c3,0x3a28,0x4aaa,0x39e7,0x52ca,0x73ad,0x634d,0x83eb,0xf669,0xfec9,0xdd88,0x630c,0x632c,0x632c,0x634c,0x632c,0x632c,0x636d,0x6b6d,0x6b4d,0x6b6d,0x634d,0x5b0b,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0c,0x632c,0x630c,0x3185,0x31c7,0x39c7,0x18e3,0x10a2,0x18c2,0x1081,0x10a2,0x1082,0x1082,0x0841,0x0000,0x18c3,0x10a2,0x2165,0x39e8,0x2945,0x2965,0x5aeb,0x6b4c,0x4acb,0xcd49,0xfe88,0xfe28,0xb449,0x4acb,0x630b,0x5b0c,0x632c,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0c,0x5acb,0x52ca,0x5aca,0x52ca,0x5aca, +0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x5aeb,0x4aeb,0x9b4b,0xeb6b,0xeb6b,0xe34a,0x82ca,0xdb6b,0xeb6a,0xab0a,0xd34b,0xeb6a,0xb2e9,0x5aea,0x4227,0x18e3,0x1904,0x1904,0x31c6,0x2944,0x10c2,0x1082,0x10a2,0x1082,0x1081,0x0840,0x0020,0x1081,0x18c3,0x10a2,0x2124,0x4248,0x5b0b,0x530b,0x52ca,0x52eb,0x52eb,0x4aaa,0x4aca,0x52ca,0x52eb,0x52ca,0x52ca,0x428a,0xbce8,0xede7,0xd528,0x5ae9,0x5ae9,0x3249,0xcd08,0xa448,0xc528,0xb488,0xb4c8,0xac88,0x322a,0x2984,0x10c3,0x18e3,0x1903,0x2103,0x1081,0x0020,0x0841,0x1081,0x1082,0x0861,0x0000,0x0840,0x18e3,0x1904,0x2104,0x2945,0x4aaa,0x530b,0x530b,0x52eb,0x530b,0x52ea,0x4aca,0x52ea,0x530b,0x530b,0x52ea,0x530b,0x5b2b,0x532b,0x530b,0x52ea,0x5b2b,0x5b4c,0x31c6,0x10a2,0x31e6,0x1082,0x1061,0x10c2,0x08a1,0x08a1,0x00a1,0x0080,0x0020,0x10c2,0x0881,0x0881,0x10a2,0x18e3,0x18e3,0x18c3,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2103,0x18e3,0x1903,0x1904,0x1903,0x18c3,0x18c2,0x18e3,0x10a2,0x1082,0x10c2,0x10c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10c2,0x10c3,0x18e3,0x18e3,0x1903,0x18c3,0x2985,0x31a6,0x10c2,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x2124,0x2144,0x2144,0x2144,0x2124,0x2144,0x2124,0x2144,0x2144,0x2144,0x2145,0x2165,0x2144,0x2124,0x2145,0x2124,0x2144,0x2965,0x2124,0x2124,0x31a6,0x2965,0x2985,0x39e7,0x39e7,0x31a6,0x31a6,0x31c6,0x39e7,0x3a07,0x4208,0x4228,0x4248,0x4248,0x4248,0x4269,0x4a89,0x4a89,0x52aa,0x52aa,0x52aa,0x5b2b,0x39e7,0x0983,0x1163,0x0000,0x0040,0x0881,0x0881,0x0861,0x0041,0x0040,0x0000,0x1904,0x4248,0x31a6,0x31a6,0x6bae,0x73ef,0x6bae,0x6b8d,0x6b8d,0x6b6d,0x73ae,0x6b8d,0x634c,0x6b8d,0x5b0b,0x5b0b,0x634c,0x634c,0x634c,0x634c,0x6bae,0x5b0b,0x18c2,0x3a08,0x3186,0x0841,0x0020,0x0020,0x0020,0x0861,0x0861,0x0020,0x0020,0x18e3,0x2945,0x2104,0x31e7,0x4269,0x31a6,0x4aaa,0x6b8d,0x6b6c,0x632c,0xe5e9,0xfea8,0xb48a,0x5b2c,0x6b4c,0x634d,0x632c,0x632d,0x6b4d,0x634d,0x634c,0x632c,0x6b6d,0x632c,0x632c,0x630c,0x5b0c,0x5b0b,0x5b0c,0x5aeb,0x630c,0x632c,0x3186,0x31c7,0x3a08,0x18c3,0x0861,0x0861,0x0861,0x0841,0x1082,0x0841,0x0000,0x1082,0x2965,0x18e3,0x2985,0x4229,0x2986,0x3186,0x5aeb,0x6b6d,0x5b0c,0x9c2a,0xfe48,0xf608,0x836a,0x52eb,0x630c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x5b0b,0x5b0c,0x5aeb,0x5aeb,0x52cb,0x52aa,0x52aa,0x52ca, +0x52ea,0x52eb,0x52eb,0x52ea,0x52ea,0x52ea,0x42ab,0xdbac,0xcb2a,0x52aa,0xe36a,0xd30a,0xdb6b,0xeb6a,0xa2c9,0xdb6b,0xf38b,0xab0a,0x5aca,0x3a06,0x2104,0x2144,0x2124,0x31c6,0x2985,0x18e3,0x1081,0x1081,0x10a2,0x10a2,0x1081,0x18e3,0x2944,0x1903,0x10a2,0x31a6,0x4228,0x530b,0x5b4c,0x52ea,0x52eb,0x52ea,0x4aca,0x52eb,0x4aca,0x52ea,0x52ca,0x52ca,0x3a6a,0xcd28,0xee07,0xdd87,0x8388,0xede7,0xb467,0xac88,0xe587,0xf5e7,0xedc7,0xe587,0x93c9,0x3a8a,0x39e6,0x2124,0x2104,0x2144,0x2965,0x2144,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x2124,0x31a5,0x2144,0x2986,0x31c7,0x4aaa,0x52ea,0x52eb,0x530b,0x52ea,0x52ea,0x52eb,0x530b,0x52eb,0x52eb,0x52ea,0x5b2c,0x5b2b,0x52ea,0x52ea,0x5b0b,0x5b4c,0x5b2b,0x3a07,0x10a2,0x31c6,0x10a2,0x0821,0x10a2,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0841,0x0041,0x0041,0x0041,0x0020,0x0000,0x0000,0x0000,0x0000,0x0020,0x0840,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0882,0x0882,0x0861,0x0861,0x0882,0x0881,0x0882,0x1082,0x10a2,0x0881,0x0861,0x1061,0x0861,0x0861,0x0881,0x1081,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x0020,0x0861,0x0861,0x0840,0x1082,0x0840,0x2104,0x4248,0x2986,0x4249,0x6bae,0x73ce,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x636d,0x634c,0x636c,0x636c,0x632c,0x632c,0x5b2c,0x632c,0x632c,0x636d,0x73ce,0x632c,0x2124,0x3a28,0x3a08,0x2103,0x1082,0x0041,0x0841,0x0861,0x0841,0x1082,0x2944,0x3185,0x2965,0x2965,0x4a8a,0x4249,0x31a7,0x4aaa,0x6b8d,0x73ad,0x5b2e,0xb50a,0xf648,0x838b,0x636d,0x6b4d,0x6b6d,0x636c,0x632c,0x634c,0x634d,0x634d,0x634c,0x634d,0x634c,0x632c,0x5b0c,0x5b0b,0x634c,0x630c,0x630b,0x632c,0x632c,0x3186,0x31c7,0x3a29,0x2124,0x1061,0x0841,0x0821,0x0861,0x0861,0x0861,0x2124,0x31a5,0x3186,0x18e3,0x31c7,0x4249,0x2986,0x31c6,0x630b,0x6b8d,0x632c,0x632b,0xf649,0xe5a8,0x5acb,0x632c,0x5b0b,0x5b0c,0x5b0b,0x630c,0x5b0b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5aeb, +0x530b,0x52eb,0x52ca,0x4aca,0x52eb,0x52ea,0x4aeb,0xdb8c,0xd34a,0x62cb,0xe34a,0xd30a,0xdb6b,0xe36a,0x9aca,0xdb6b,0xe36a,0xa30a,0x5aca,0x4207,0x2124,0x2124,0x2124,0x2985,0x31c6,0x2965,0x3186,0x3186,0x31a6,0x3185,0x2965,0x2985,0x3a07,0x10c2,0x31c7,0x4a69,0x4228,0x5b0b,0x52ea,0x530b,0x530b,0x4aca,0x4aca,0x4aca,0x4aa9,0x4aca,0x52ca,0x52ca,0x3a8a,0xcd48,0xe5a7,0xe5a8,0xa428,0xede7,0xbcc8,0x7349,0xfe47,0xe587,0xf5c7,0xedc7,0x52ca,0x532a,0x39e7,0x2986,0x2104,0x2965,0x29a6,0x2965,0x2965,0x2144,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x3a07,0x1924,0x31c7,0x39e7,0x4aca,0x4aca,0x52eb,0x52eb,0x52ea,0x52eb,0x52ea,0x4aca,0x52ca,0x52eb,0x52eb,0x530b,0x5b2b,0x532b,0x530b,0x530b,0x530b,0x5b4c,0x4a89,0x10c2,0x31e6,0x2124,0x0000,0x0861,0x10a2,0x0040,0x0020,0x0020,0x0820,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0020,0x0020,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0840,0x0840,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0841,0x0041,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0020,0x10a2,0x0881,0x0840,0x1082,0x0000,0x39e7,0x5aeb,0x2986,0x4aaa,0x73ce,0x6bad,0x6b6d,0x636d,0x6b8d,0x6b8d,0x634c,0x6b6d,0x634c,0x636d,0x636d,0x634d,0x634c,0x5b2b,0x634c,0x6b6d,0x73ae,0x6b8e,0x31a6,0x3a28,0x4249,0x2945,0x18e3,0x18c3,0x18c3,0x18e3,0x2945,0x39c7,0x4207,0x39e6,0x2944,0x3a28,0x52ec,0x426a,0x31c7,0x630b,0x6b8d,0x738d,0x6b6d,0x73ac,0x83cb,0x6b4c,0x6b8d,0x6b6d,0x632c,0x636d,0x6b6d,0x6b6d,0x636d,0x6b6d,0x6b4d,0x632c,0x6b6d,0x634d,0x5b0b,0x630b,0x632c,0x632c,0x630b,0x632c,0x6b6d,0x3a07,0x29a6,0x4a8a,0x31a7,0x1082,0x18e3,0x18e3,0x18c2,0x18a3,0x2965,0x31a6,0x39e6,0x39c6,0x2945,0x4229,0x31e8,0x2946,0x3a27,0x632c,0x6b6d,0x632c,0x5b0c,0x942a,0x93eb,0x634d,0x6b4c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0c,0x632c,0x5aeb,0x52cb,0x52cb,0x5b0b,0x52cb,0x5aeb, +0x52eb,0x52ea,0x52ea,0x52ea,0x52ca,0x52ca,0x4aeb,0x8aea,0xf38b,0xf38b,0xeb4a,0x82a9,0xdb6b,0x9ac9,0x02cb,0xdb6b,0xaaca,0x02aa,0x630b,0x4a69,0x2165,0x31a6,0x18e3,0x31a6,0x31a6,0x2965,0x3a07,0x3a07,0x4248,0x3a07,0x2985,0x3a27,0x39e7,0x0861,0x31a6,0x3a07,0x4aa9,0x5b2b,0x530b,0x52ea,0x4aea,0x4aca,0x4aca,0x4aca,0x4aa9,0x4aa9,0x4aaa,0x52ca,0x3a8a,0xc528,0xee07,0xd5a7,0x7349,0x530a,0x52c9,0x52e9,0xe5c8,0xa447,0xc528,0xd567,0x3269,0x5b0b,0x4a89,0x31c6,0x31a5,0x1903,0x39e7,0x31c6,0x2985,0x31e7,0x3a07,0x31c6,0x31c6,0x31c6,0x4248,0x31c6,0x1924,0x4228,0x39e7,0x52ca,0x4aa9,0x5b0b,0x5b2b,0x52ea,0x52ea,0x4aea,0x530b,0x52eb,0x4aca,0x52eb,0x52eb,0x530b,0x5b4c,0x5b2b,0x5b4c,0x5b2c,0x5b4c,0x5b0b,0x2985,0x39e7,0x4228,0x0000,0x18e3,0x18e3,0x0861,0x0000,0x0000,0x0000,0x0020,0x0040,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x10a2,0x10a2,0x0861,0x0020,0x0020,0x0000,0x0020,0x10a2,0x18c2,0x0861,0x0861,0x10a2,0x0000,0x52aa,0x4a69,0x3a08,0x4aaa,0x73ce,0x6bae,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x634c,0x636d,0x634c,0x636d,0x634c,0x636d,0x6b6d,0x634c,0x6bae,0x73cf,0x4228,0x3a28,0x4249,0x3186,0x2104,0x2104,0x18e3,0x2945,0x4228,0x3a08,0x4207,0x4207,0x2985,0x426a,0x428a,0x4a8a,0x4a89,0x6b4d,0x6b6d,0x6b8d,0x73ad,0x6b8d,0x6b6d,0x634c,0x6b6c,0x6b6d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x634c,0x6b6d,0x6b8e,0x6b6d,0x634c,0x634d,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x6b8d,0x5b0b,0x31c6,0x4a8a,0x426a,0x1082,0x18a2,0x2104,0x1062,0x3a07,0x31c8,0x2986,0x31a6,0x2944,0x3a08,0x3a28,0x31e7,0x3a08,0x52ca,0x6b6d,0x6b6d,0x6b4c,0x6b4c,0x4acc,0x5b0c,0x634c,0x634c,0x632c,0x632c,0x634d,0x5b0c,0x5b0b,0x5b0b,0x630c,0x5b0c,0x52cb,0x52eb,0x5aeb,0x5aeb,0x5aeb, +0x52ea,0x52eb,0x52ea,0x52ca,0x52ea,0x52ca,0x5aca,0x4aca,0x6acb,0x8aea,0x62aa,0x4aca,0x7aeb,0x6aea,0x5aeb,0x730b,0x72eb,0x5acb,0x5aeb,0x52ca,0x2965,0x3a28,0x31c6,0x1082,0x3186,0x39c7,0x39e6,0x39e7,0x3a07,0x31c6,0x31c6,0x4227,0x1903,0x18c3,0x3185,0x39e7,0x52ea,0x52eb,0x52eb,0x52ca,0x52ea,0x4aca,0x52ca,0x52ca,0x4aca,0x4aaa,0x4aca,0x4aaa,0x4aca,0x6b4a,0x83c9,0x6b0a,0x52ca,0x4ac9,0x52aa,0x5b0a,0x7349,0x5ae9,0x6b2a,0x6b49,0x52ea,0x52ea,0x52ca,0x31a5,0x4aaa,0x29a7,0x31a6,0x4248,0x31c6,0x3a07,0x31e7,0x4248,0x3a27,0x3a07,0x4248,0x2124,0x31c6,0x52ca,0x4aa9,0x530b,0x4aaa,0x530b,0x530b,0x52eb,0x52eb,0x4aea,0x52eb,0x52ea,0x52ca,0x52eb,0x52eb,0x52eb,0x52ea,0x530b,0x5b4c,0x636d,0x5b4c,0x52eb,0x31e7,0x2144,0x5b2c,0x29a6,0x0000,0x2124,0x18e3,0x1081,0x0861,0x0000,0x0840,0x1081,0x0860,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0861,0x10a2,0x1082,0x0000,0x0000,0x0000,0x0000,0x0841,0x10c2,0x10c2,0x1081,0x18e3,0x0000,0x2985,0x5aeb,0x31a6,0x4269,0x634d,0x73ce,0x6bae,0x6bae,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636d,0x634c,0x636d,0x6b6d,0x6b6d,0x634c,0x5b4c,0x6bce,0x73ce,0x632c,0x31c7,0x3a08,0x4249,0x31a6,0x2104,0x10a2,0x31a6,0x4a69,0x3a08,0x31a6,0x31a6,0x3a07,0x52aa,0x5b2c,0x5b0b,0x6b4c,0x6b8e,0x6b8e,0x6b8d,0x6b8d,0x6b6d,0x6b6c,0x634c,0x636c,0x634d,0x6b6d,0x6b6d,0x6b4d,0x6b6d,0x634c,0x634d,0x6b6d,0x634d,0x634c,0x6b8d,0x6b8d,0x634c,0x636c,0x632c,0x632c,0x6b6d,0x6b6d,0x6b8d,0x4248,0x4a69,0x5b0c,0x52cb,0x10a2,0x0841,0x0000,0x5aca,0x94d2,0x4229,0x1905,0x4208,0x4a8a,0x4249,0x4229,0x4228,0x632c,0x6b6d,0x634c,0x632c,0x632b,0x634c,0x630c,0x6b4d,0x632c,0x630c,0x632c,0x630c,0x632c,0x632c,0x630c,0x5b0c,0x630c,0x5aec,0x5b0b,0x5aeb,0x5aeb,0x5aca, +0x5b0b,0x5b0b,0x52ea,0x4aca,0x52ca,0x52ea,0x530b,0x5aeb,0x52ea,0x42eb,0x52eb,0x52ca,0x52cb,0x5b0b,0x5aeb,0x52cb,0x52eb,0x5aeb,0x5b0b,0x5b0b,0x4a89,0x4228,0x530a,0x29a5,0x0841,0x31a6,0x3a07,0x39e7,0x39e7,0x31a6,0x2965,0x18e3,0x10a2,0x2144,0x39e7,0x4aca,0x52ea,0x52ea,0x52eb,0x52ca,0x52eb,0x52ca,0x52ca,0x4aaa,0x52aa,0x4aaa,0x4aaa,0x4aca,0x52aa,0x4aca,0x3a8a,0x4aab,0x52ca,0x4aa9,0x52ca,0x52ca,0x4aaa,0x4aca,0x52aa,0x4aaa,0x52ea,0x52ea,0x52ca,0x4228,0x3a07,0x52ca,0x29a5,0x1903,0x31e7,0x4248,0x4228,0x52ea,0x52ca,0x3a07,0x2124,0x2125,0x31c6,0x52c9,0x530a,0x5b2b,0x52ea,0x4aca,0x52ca,0x52ca,0x530b,0x52ea,0x530b,0x4aca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x5b4c,0x5b4c,0x5b4c,0x4248,0x1923,0x4289,0x6bce,0x2144,0x0000,0x10a2,0x2124,0x2965,0x1081,0x10a2,0x18c2,0x18c2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0840,0x0861,0x0861,0x0841,0x0841,0x0840,0x0840,0x0840,0x0020,0x0020,0x0041,0x0020,0x0841,0x0840,0x0841,0x0841,0x0840,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0840,0x0861,0x1082,0x0861,0x0861,0x1081,0x0861,0x1081,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2144,0x2124,0x18e3,0x18c2,0x18e3,0x1903,0x18e3,0x10a2,0x0000,0x18c3,0x6b8d,0x4248,0x4a8a,0x52ca,0x6bae,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x6bae,0x6b8d,0x636d,0x6bae,0x6b6d,0x6b6d,0x73ad,0x636c,0x6b8d,0x6bae,0x6b8d,0x52ca,0x2144,0x4249,0x4a8a,0x4249,0x2124,0x2985,0x5b0b,0x4a69,0x39e7,0x3a28,0x4269,0x73cf,0x632c,0x52ca,0x73ae,0x6b6d,0x6bae,0x6b6d,0x634c,0x634d,0x632c,0x632c,0x636d,0x634c,0x634d,0x634c,0x6b8d,0x6b6d,0x634c,0x636d,0x636d,0x634c,0x634c,0x636d,0x6b6d,0x6b4c,0x6b6d,0x73ae,0x6b6d,0x6b6d,0x73ce,0x6b8e,0x5aeb,0x4248,0x6b6d,0x6bae,0x5b0c,0x3a08,0x1083,0x2123,0xbe14,0x7c0f,0x4a6a,0x52ca,0x52cb,0x52ab,0x4249,0x528a,0x6b4d,0x634d,0x632c,0x634c,0x630b,0x632c,0x630c,0x632c,0x6b6d,0x630b,0x634c,0x634d,0x634d,0x634d,0x630c,0x5b0c,0x5aeb,0x5aec,0x5aeb,0x5aca,0x5aca,0x5aca, +0x52eb,0x530b,0x52ea,0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x52eb,0x52cb,0x4aa9,0x4aaa,0x52ca,0x52cb,0x4aca,0x52ca,0x52ca,0x52ea,0x52ea,0x530b,0x530b,0x4aa9,0x52c9,0x73cd,0x3a27,0x2145,0x2103,0x2965,0x2144,0x2103,0x18e3,0x18e3,0x2124,0x31e7,0x4289,0x52eb,0x52ca,0x52eb,0x52ea,0x530b,0x52eb,0x52ca,0x52ea,0x4aaa,0x4aca,0x4aca,0x4aa9,0x4aaa,0x4aca,0x4aa9,0x4aa9,0x4aca,0x4aa9,0x4a8a,0x4aa9,0x4aca,0x52ca,0x4aaa,0x4ac9,0x4aaa,0x4aaa,0x52ea,0x530b,0x52eb,0x4a89,0x5b2b,0x5aea,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x29a6,0x2124,0x2985,0x2985,0x4269,0x4aaa,0x52eb,0x5b2b,0x530b,0x530b,0x52eb,0x52eb,0x530b,0x530b,0x52eb,0x530b,0x52eb,0x52ca,0x52ea,0x52eb,0x52ea,0x52ea,0x5b0b,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x3a07,0x2104,0x4aa9,0x6bad,0x4a68,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0020,0x1082,0x0841,0x0020,0x0821,0x0020,0x0000,0x0000,0x0000,0x0020,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4228,0x6b4c,0x4248,0x52aa,0x5aeb,0x634d,0x73ae,0x6bae,0x6bae,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x6b8d,0x6bae,0x73ae,0x6bad,0x636c,0x6b8d,0x73ae,0x634d,0x52aa,0x31c6,0x4269,0x52cb,0x52aa,0x4a89,0x52ca,0x4a89,0x4249,0x52cb,0x73cf,0x73ae,0x4a69,0x634c,0x73ae,0x6b6d,0x6b8d,0x73ce,0x634c,0x634c,0x6b4c,0x634d,0x634c,0x632c,0x636d,0x634c,0x6b6d,0x6b8d,0x634c,0x6b8d,0x636d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b8e,0x634c,0x632b,0x73cf,0x73ef,0x6b8e,0x6b4d,0x5aec,0x5b0b,0x632d,0x632d,0x632c,0x52cb,0x4249,0x4a69,0x6b8d,0x738e,0x634d,0x632c,0x6b4d,0x634c,0x632b,0x632c,0x632c,0x6b4c,0x6b4c,0x632c,0x634c,0x634d,0x634c,0x634d,0x630c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5aca,0x52ca, +0x52ca,0x52eb,0x52eb,0x52eb,0x5aeb,0x52eb,0x52eb,0x52ca,0x530b,0x52ea,0x4aaa,0x4aca,0x52ca,0x52ca,0x4ac9,0x4aaa,0x52ea,0x52ea,0x52ca,0x52eb,0x52eb,0x5b2b,0x52ca,0x4248,0x4228,0x4269,0x4a69,0x39e7,0x2985,0x2965,0x2965,0x2965,0x3a28,0x4aca,0x52ea,0x530b,0x52eb,0x530b,0x530b,0x5b2b,0x52eb,0x4aca,0x52ea,0x52ca,0x4aca,0x4aca,0x52ea,0x52ea,0x52ca,0x4aa9,0x4aaa,0x52ca,0x4aca,0x4aca,0x4aaa,0x4aca,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4aca,0x52ea,0x530b,0x52eb,0x5b0b,0x4aa9,0x4248,0x4269,0x2986,0x2965,0x2145,0x1904,0x18e3,0x2124,0x52ea,0x4ac9,0x52eb,0x5b0b,0x52ea,0x52eb,0x5b0b,0x5b2b,0x52eb,0x530b,0x530b,0x52ea,0x52ea,0x52ea,0x52ea,0x4aca,0x52eb,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x5b2c,0x5b2b,0x638d,0x52eb,0x3a07,0x18c2,0x3185,0x52aa,0x4a89,0x3a07,0x39e7,0x31a6,0x31c6,0x3a07,0x3a07,0x3a07,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x31c6,0x2986,0x2986,0x2965,0x2145,0x2144,0x2124,0x2145,0x2945,0x2965,0x2966,0x31a6,0x2965,0x2145,0x2124,0x2965,0x4248,0x2144,0x2145,0x2945,0x2124,0x2945,0x2145,0x2985,0x2986,0x2965,0x2985,0x2966,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x31c6,0x31c6,0x31c6,0x39e7,0x3a07,0x31c7,0x31e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39c7,0x39e7,0x4228,0x4248,0x4228,0x4a69,0x4249,0x4a69,0x4228,0x4248,0x4228,0x4208,0x4a69,0x4a8a,0x3a07,0x4249,0x4249,0x4a49,0x4a49,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x4a8a,0x4a89,0x5289,0x52aa,0x52ca,0x6b4c,0x6b4c,0x3a07,0x4a69,0x5b0b,0x5b0b,0x73ef,0x6bae,0x6b8d,0x636d,0x6bae,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x636d,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x5b0b,0x4a68,0x4a89,0x5b0c,0x634c,0x6b6d,0x6b8d,0x8450,0x8430,0x632c,0x52aa,0x5b2c,0x73cf,0x6bae,0x6bae,0x73ae,0x6b8d,0x6bae,0x6b6d,0x6b8d,0x6b8d,0x634c,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8e,0x636d,0x6b6d,0x6b6d,0x73ae,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x634c,0x636c,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x636d,0x6b8e,0x73ce,0x5aeb,0x73ae,0x840f,0x7bef,0x73ce,0x73af,0x73ce,0x6b8e,0x52ab,0x4249,0x52cb,0x6b8d,0x6b8d,0x6b6d,0x636d,0x634c,0x634d,0x632c,0x632c,0x630c,0x630c,0x6b6d,0x634c,0x634d,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x634c,0x5aec,0x5aeb,0x5aeb,0x5acb, +0x636c,0x5b0b,0x530b,0x530b,0x52eb,0x52eb,0x5b0b,0x52eb,0x52ca,0x52eb,0x52eb,0x52ca,0x52eb,0x530b,0x52ea,0x52ea,0x52ea,0x530b,0x5b2b,0x530b,0x5b0b,0x5b0b,0x636c,0x5b2b,0x4a89,0x4228,0x4228,0x39e7,0x4248,0x3a28,0x39e7,0x4a89,0x530b,0x5b2b,0x52ca,0x52eb,0x530b,0x530b,0x530b,0x5b0b,0x530b,0x530b,0x530b,0x530b,0x530b,0x52eb,0x52eb,0x52ea,0x52ea,0x4aca,0x4aca,0x4aaa,0x4aca,0x4aaa,0x52ca,0x52ca,0x4aca,0x52ca,0x52ca,0x52eb,0x4aaa,0x52eb,0x530b,0x52ea,0x52eb,0x5b2c,0x530b,0x52ca,0x4248,0x2965,0x39e7,0x2985,0x31c6,0x3a28,0x4aca,0x5b2c,0x5b4c,0x5b0b,0x5b2b,0x530b,0x530b,0x52ea,0x5b2b,0x530b,0x530b,0x530b,0x52eb,0x530b,0x52eb,0x52eb,0x5b2c,0x530b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x532b,0x530b,0x5b4c,0x638d,0x5b2b,0x3a28,0x0881,0x0020,0x1903,0x2986,0x39e7,0x31a6,0x31a6,0x31e6,0x31c6,0x31e7,0x2144,0x2985,0x29a6,0x2985,0x2985,0x3186,0x2965,0x31a6,0x2965,0x2165,0x2965,0x2945,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2945,0x2124,0x2104,0x2124,0x2124,0x31c6,0x2124,0x2144,0x2104,0x18c3,0x18e3,0x18c3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x18e3,0x2124,0x2124,0x1903,0x2124,0x2104,0x1904,0x2104,0x1903,0x1903,0x2124,0x2124,0x2144,0x2104,0x2103,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x3186,0x31a6,0x31c6,0x39e7,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4248,0x4a69,0x3a07,0x4249,0x4249,0x4a49,0x4a48,0x4248,0x4268,0x4a89,0x4a8a,0x4aaa,0x52aa,0x52ca,0x52ca,0x5aeb,0x5aea,0x5aeb,0x52ca,0x52ca,0x5aeb,0x630b,0x5aeb,0x4228,0x31c6,0x4a89,0x52aa,0x632c,0x7c2f,0x73ee,0x6bae,0x6b8d,0x6b8e,0x6bae,0x73ae,0x6b8d,0x6bae,0x6b8d,0x636d,0x6bae,0x6bad,0x6bad,0x6b8e,0x6bae,0x6bad,0x73ae,0x6b8d,0x6b6d,0x6bae,0x6b8d,0x6bad,0x6bae,0x6bae,0x6b6d,0x5b0b,0x5aeb,0x5b0b,0x6b6c,0x738d,0x634c,0x4aaa,0x52eb,0x6bae,0x73ef,0x6bae,0x6b8d,0x6bae,0x73ae,0x6b8d,0x6bae,0x6b8d,0x636d,0x634d,0x6b6d,0x738d,0x6b8d,0x6b6d,0x6b6d,0x6bae,0x634c,0x738e,0x73ae,0x6b8d,0x6b8d,0x6bad,0x6b6d,0x6b8e,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x6b6c,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x634c,0x5b2c,0x73ce,0x73ad,0x73ae,0x73ae,0x5b2c,0x4249,0x4aaa,0x632c,0x73ae,0x73ae,0x636c,0x6b6c,0x6b6d,0x6b8d,0x6b6d,0x6b4d,0x634c,0x632c,0x636c,0x634c,0x634d,0x634d,0x632c,0x632c,0x632d,0x632c,0x632c,0x5b0c,0x632c,0x630c,0x52cb,0x5b0c,0x5aeb, +0x5b2b,0x52eb,0x52eb,0x5b2b,0x530b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x52eb,0x530b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b2c,0x5b4c,0x5b4c,0x5b0b,0x5b2b,0x636c,0x5b4c,0x5b4c,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x5b4b,0x5b6c,0x5b4c,0x530b,0x530b,0x52ea,0x530b,0x530b,0x5b4c,0x530b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x52eb,0x530b,0x52eb,0x52ea,0x52eb,0x52ca,0x52ca,0x52ea,0x52ea,0x52eb,0x52ea,0x52ea,0x52ca,0x530b,0x52eb,0x530b,0x52ea,0x52ca,0x52eb,0x530b,0x530b,0x5b4c,0x5b4c,0x5b4c,0x5b4c,0x52eb,0x52eb,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b0b,0x5b2c,0x532b,0x5b2c,0x5b0b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x5b2b,0x532b,0x530b,0x52eb,0x530b,0x52eb,0x52eb,0x5b4c,0x530b,0x530b,0x5b4c,0x5b6c,0x5b4c,0x5b4c,0x4aaa,0x4248,0x2104,0x0841,0x1061,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0841,0x10a2,0x0000,0x0000,0x0000,0x0020,0x0000,0x1081,0x2144,0x2144,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x0000,0x0020,0x1904,0x2124,0x2944,0x2103,0x18c3,0x2124,0x2124,0x2144,0x2965,0x2124,0x1903,0x2124,0x0861,0x2965,0x2965,0x2104,0x2145,0x2104,0x2124,0x2124,0x2103,0x0861,0x0000,0x10a2,0x2104,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x08a2,0x2165,0x4228,0x4aaa,0x52eb,0x6bae,0x7bef,0x73ef,0x73ee,0x73ce,0x73ce,0x73ef,0x73ce,0x6b6d,0x6bae,0x73ce,0x73ae,0x73ce,0x73ce,0x73ad,0x73ce,0x73ce,0x6b8d,0x6bae,0x73ce,0x73ae,0x634c,0x636d,0x73ae,0x73ce,0x6b8e,0x6bae,0x6b8d,0x6b6d,0x6b6d,0x632c,0x5b0b,0x5aeb,0x632c,0x6b8e,0x73cf,0x73ce,0x73ce,0x6bad,0x6bad,0x6bae,0x6b8e,0x73ae,0x6b8d,0x6b6d,0x634d,0x634d,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x6b8e,0x6b8e,0x6b8d,0x6b8d,0x6bae,0x6b8e,0x73ae,0x6b8d,0x73ae,0x6b8d,0x73ae,0x6b8d,0x6b8e,0x6b8e,0x6b8d,0x738d,0x6b8d,0x6b8d,0x6b8d,0x738e,0x6b8e,0x6b6d,0x634d,0x632c,0x634c,0x5b0b,0x634d,0x6b8e,0x73ae,0x6b6d,0x634c,0x6b8d,0x6b6d,0x6b6d,0x6b6d,0x634c,0x634d,0x6b6d,0x634d,0x632c,0x6b6d,0x632c,0x634d,0x634d,0x6b6d,0x632c,0x632c,0x634c,0x634d,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c, +0x5b2c,0x530b,0x5b0b,0x5b4c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x530b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b0b,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x530b,0x5b2c,0x5b4c,0x5b4c,0x5b2c,0x5b4c,0x636c,0x5b4c,0x5b2c,0x530b,0x52eb,0x5b2c,0x5b2b,0x5b2b,0x5b2c,0x5b4c,0x5b2b,0x530b,0x532b,0x530b,0x5b2c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x5b2c,0x52eb,0x530b,0x530b,0x530b,0x5b2b,0x52ea,0x52ca,0x52ea,0x530b,0x530b,0x530b,0x5b0b,0x52eb,0x530b,0x530b,0x5b2c,0x532b,0x636c,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x532b,0x5b2b,0x530b,0x532b,0x530b,0x52eb,0x530b,0x5b2b,0x532b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x52ea,0x52ea,0x530b,0x530b,0x52ea,0x530b,0x530b,0x530b,0x5b6d,0x636d,0x636c,0x5b6c,0x5b4c,0x5b2c,0x52eb,0x4aeb,0x5b2c,0x532c,0x530b,0x530b,0x530b,0x530b,0x530b,0x530b,0x5b2c,0x530b,0x5b0b,0x52eb,0x5b2c,0x530b,0x530b,0x5b2c,0x5b2c,0x5b2c,0x532b,0x5b2c,0x5b4c,0x636c,0x530b,0x5b2c,0x638d,0x52eb,0x52eb,0x5b4c,0x636c,0x634c,0x636d,0x6bae,0x6bce,0x6bae,0x6bae,0x636d,0x63ad,0x638d,0x638d,0x6bae,0x636c,0x530b,0x5b2c,0x6bad,0x6b8d,0x6bae,0x636c,0x636d,0x638d,0x638d,0x63ad,0x6bce,0x6bce,0x63ae,0x6bce,0x636d,0x638d,0x6bce,0x5b6d,0x6bae,0x6bad,0x6b8d,0x6bae,0x6b8d,0x634c,0x5b4c,0x634d,0x6bae,0x5b2c,0x636d,0x634d,0x636d,0x634d,0x5b4d,0x634d,0x634d,0x634d,0x634c,0x636d,0x636d,0x634d,0x5b4c,0x5b4c,0x634c,0x636d,0x5b4c,0x5b0c,0x5b2c,0x5b2c,0x5b2c,0x5b2c,0x530b,0x5b2c,0x5b0c,0x5b2c,0x5b2c,0x634c,0x634c,0x5b0b,0x5b0b,0x5b2c,0x5b2c,0x634d,0x634d,0x6bae,0x740f,0x73ef,0x73cf,0x73ce,0x6b8d,0x738d,0x73ce,0x6bae,0x6b8d,0x6b8d,0x6bae,0x73ce,0x73ae,0x73ce,0x73ce,0x73ce,0x73ce,0x6bae,0x6b8d,0x73ce,0x6b8e,0x73ae,0x6b6d,0x6b6d,0x636c,0x6bae,0x6b8d,0x73ce,0x6bae,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x73ce,0x73ce,0x6b8e,0x6b8d,0x738e,0x6bae,0x6b8d,0x6b8e,0x73ae,0x738e,0x73ce,0x6b6d,0x6b6d,0x634c,0x6b6d,0x6b8e,0x6bad,0x6b8d,0x6b6d,0x6b8e,0x73ae,0x6b8d,0x6bae,0x6b8d,0x73ae,0x6b6d,0x6b8d,0x73ae,0x6b8e,0x6bae,0x6b8d,0x73ae,0x73ae,0x6b6d,0x738e,0x6b8d,0x73ae,0x6b8e,0x738e,0x73ae,0x738e,0x738e,0x73ae,0x73ae,0x73ae,0x73ae,0x73ae,0x6b6d,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b4d,0x6b8d,0x6b6d,0x634d,0x6b6d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x6b6d,0x6b6d,0x6b6d,0x6b6d,0x634d,0x634d,0x6b6d,0x634d,0x632c,0x5b0c, +0x5b2b,0x5b0b,0x5b2c,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x5b2b,0x530b,0x52eb,0x530b,0x530b,0x530b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b4c,0x5b4c,0x5b2b,0x530b,0x52ea,0x5b0b,0x530b,0x5b2c,0x5b2c,0x5b4c,0x5b4c,0x530b,0x532b,0x5b4c,0x5b2c,0x530b,0x5b2b,0x5b2c,0x5b4c,0x5b2b,0x530b,0x532c,0x530b,0x530b,0x530b,0x5b4c,0x530b,0x532b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x530b,0x530b,0x530b,0x530b,0x530b,0x5b2b,0x52eb,0x530b,0x530b,0x52ea,0x530b,0x52ea,0x4aca,0x5b0b,0x530b,0x5b2b,0x5b2b,0x5b2b,0x530b,0x5b2c,0x530b,0x5b2b,0x5b4c,0x530b,0x530b,0x532b,0x52eb,0x52ea,0x530b,0x52eb,0x52eb,0x530b,0x530b,0x530b,0x530b,0x5b2b,0x530b,0x530b,0x5b2b,0x5b0b,0x530b,0x52ea,0x530b,0x530b,0x52eb,0x530b,0x530b,0x530b,0x52eb,0x532b,0x5b2b,0x5b6c,0x5b6c,0x638d,0x63ad,0x638d,0x63ce,0x6bce,0x63ad,0x63ad,0x63ad,0x63ad,0x63ad,0x6bee,0x6bce,0x6bce,0x6bee,0x6bcd,0x6bae,0x63ae,0x6bce,0x63ad,0x6bce,0x6bae,0x6bce,0x6bce,0x63ce,0x6bee,0x6bee,0x63ae,0x6bce,0x6bce,0x6bce,0x63ad,0x63ad,0x6bce,0x638d,0x6bad,0x6bad,0x63ad,0x6bce,0x63ad,0x636d,0x638d,0x638d,0x63ae,0x638d,0x638d,0x638d,0x6bad,0x6bce,0x6bae,0x638d,0x6bad,0x6bad,0x63ad,0x6bce,0x63ae,0x63ae,0x6bce,0x6bae,0x6bae,0x6bce,0x638d,0x6bae,0x6bce,0x6bef,0x740f,0x6bce,0x6bce,0x73ee,0x73ee,0x73ef,0x73ef,0x6bce,0x73ef,0x7410,0x6bce,0x73cf,0x7410,0x740f,0x73ef,0x7c10,0x7c30,0x740f,0x73ef,0x7c50,0x7c30,0x7410,0x740f,0x7c10,0x7c30,0x740f,0x73ef,0x7c30,0x7c30,0x7410,0x740f,0x73ef,0x7c0f,0x7c0f,0x7c30,0x7c30,0x7c0f,0x73cf,0x7c0f,0x7c0f,0x73ce,0x73ce,0x7bef,0x73ef,0x73ef,0x73ce,0x73ef,0x73ce,0x6b8d,0x73ae,0x73ae,0x636d,0x636d,0x6bae,0x6b8e,0x636d,0x636d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x6bae,0x6b8d,0x6bae,0x6bad,0x6bae,0x6b6d,0x636d,0x6b8d,0x634c,0x6b6d,0x6b8d,0x6bad,0x6bae,0x73ae,0x634d,0x634d,0x6bae,0x6b8e,0x6b6d,0x636d,0x6bae,0x6b4d,0x6b8e,0x636d,0x634d,0x634c,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x632c,0x6b6d,0x6b6d,0x6b6d,0x636d,0x6b8e,0x638d,0x6b8d,0x6b6d,0x6b8d,0x634c,0x6b8d,0x6b8d,0x6b6d,0x6b8e,0x6b6d,0x6b6d,0x6b6d,0x73ae,0x6b8d,0x6b6d,0x634d,0x636d,0x634c,0x6b8d,0x6b8d,0x6b8e,0x6b8d,0x634c,0x634d,0x6b6d,0x6b6d,0x634d,0x632c,0x6b4d,0x6b6d,0x632c,0x6b6d,0x632c,0x632c,0x630c,0x634d,0x5b0c,0x632c,0x634c,0x634d,0x634d,0x6b8d,0x6b6d,0x634d,0x632c,0x634d,0x634d,0x632c,0x5b2c,0x5b0b,0x630c,0x5b0b,0x632c, +0x4a89,0x4aa9,0x4aca,0x4aa9,0x52aa,0x4aaa,0x52ca,0x52ca,0x52ea,0x52ea,0x4a89,0x4a89,0x4aca,0x4aaa,0x52ca,0x52ca,0x4a89,0x4aa9,0x4aa9,0x4a89,0x4aaa,0x4aca,0x4aca,0x4a89,0x52ca,0x4aaa,0x52aa,0x5b0b,0x5b0b,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4aca,0x4aca,0x4aca,0x4aa9,0x4aaa,0x4aaa,0x52ca,0x4aaa,0x4a89,0x4248,0x4289,0x4289,0x4289,0x4289,0x4268,0x4269,0x4269,0x4a89,0x4248,0x4269,0x4249,0x4269,0x4268,0x4269,0x4248,0x4248,0x4248,0x4269,0x4a89,0x4a89,0x4a89,0x4289,0x4289,0x4aca,0x52ca,0x4a89,0x4a89,0x4aaa,0x4aa9,0x4aa9,0x4a89,0x4a89,0x4a89,0x4a89,0x4aa9,0x4aa9,0x4aa9,0x4aaa,0x4aa9,0x4aa9,0x4aa9,0x4269,0x4269,0x4a89,0x4aaa,0x4aa9,0x4aa9,0x4aa9,0x4a89,0x4269,0x4289,0x4269,0x4268,0x4269,0x4269,0x4268,0x4a69,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4aca,0x52ea,0x4aaa,0x52ca,0x52ea,0x52ca,0x52ca,0x52eb,0x52eb,0x4aca,0x52ea,0x4aea,0x4aca,0x530b,0x52eb,0x52eb,0x52ea,0x52ca,0x4aaa,0x4aaa,0x5b0b,0x52ea,0x4aca,0x52ea,0x5b0b,0x52ea,0x52ea,0x52ea,0x52eb,0x4aca,0x52ea,0x530b,0x5b0b,0x4aca,0x52ea,0x52ea,0x52eb,0x52eb,0x52ea,0x52ea,0x52ca,0x52eb,0x52eb,0x52ca,0x52eb,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2c,0x5b2c,0x5b2c,0x52eb,0x52eb,0x5b2b,0x5b0b,0x52ea,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x636c,0x5b2b,0x5b4c,0x5b4c,0x5b2c,0x5b2c,0x634c,0x634c,0x636d,0x636c,0x636c,0x634c,0x636d,0x634d,0x636d,0x636d,0x634c,0x6bad,0x638d,0x6b8e,0x6bae,0x6bad,0x6bae,0x6bce,0x6bae,0x638d,0x6bae,0x6b8e,0x636d,0x6bad,0x73ce,0x6b8e,0x6b8e,0x73ae,0x6bae,0x6b8d,0x636d,0x6b8e,0x6b8d,0x636d,0x636d,0x6b8d,0x6b4d,0x634c,0x636d,0x636d,0x634c,0x634c,0x636d,0x634c,0x6b6d,0x738e,0x634c,0x6b6d,0x636d,0x6b6d,0x6b6d,0x636d,0x6b6d,0x6b8e,0x636d,0x634d,0x6b8d,0x6b8d,0x6b6d,0x6b6c,0x6b6d,0x6b8d,0x6b8e,0x73ae,0x6bad,0x6b6d,0x6b8d,0x6bad,0x634d,0x6b6d,0x6b6d,0x6b8e,0x636d,0x6b6d,0x634c,0x6b6d,0x634c,0x6b6d,0x6b8d,0x6b6d,0x6b6d,0x632c,0x6b6d,0x634c,0x634c,0x6b8d,0x634c,0x634d,0x634d,0x6b6c,0x634c,0x6b8d,0x6b6d,0x634c,0x634d,0x634d,0x632c,0x632c,0x6b6d,0x6b4c,0x632c,0x634c,0x634d,0x634c,0x634c,0x634c,0x634c,0x634c,0x634c,0x634c,0x634d,0x632d,0x634c,0x6b6d,0x634c,0x634c,0x6b6d,0x632c,0x634c,0x6b4c,0x6b6d,0x634c,0x634d,0x632c,0x632c,0x632c,0x632c,0x634d,0x634c,0x634c,0x5b0c,0x630c,0x634c,0x630c,0x630c,0x632c,0x632c,0x634d,0x632c, +0x2923,0x2123,0x2923,0x2963,0x2943,0x2943,0x31a5,0x3184,0x2964,0x2944,0x2923,0x2923,0x2123,0x2923,0x2123,0x2102,0x2102,0x2103,0x2102,0x2102,0x2944,0x2943,0x3164,0x2943,0x3185,0x3164,0x39c6,0x4206,0x39e6,0x3184,0x31a5,0x31a5,0x31a5,0x3164,0x2943,0x2964,0x2102,0x2102,0x2923,0x39c5,0x31a4,0x3184,0x2923,0x2102,0x2101,0x20e1,0x20e2,0x2102,0x2102,0x2102,0x2943,0x2923,0x20e1,0x20e2,0x2943,0x39c6,0x2102,0x20e2,0x20e2,0x2102,0x20e1,0x3164,0x3184,0x3184,0x2964,0x2943,0x39c5,0x39e6,0x2964,0x2923,0x3184,0x2923,0x2943,0x2944,0x2943,0x2122,0x2923,0x3164,0x3164,0x2943,0x2923,0x2923,0x2923,0x2923,0x2923,0x2923,0x2923,0x3164,0x3164,0x2923,0x2923,0x2122,0x2103,0x2103,0x2103,0x2102,0x2102,0x2102,0x2923,0x2944,0x2943,0x2923,0x2923,0x2943,0x2923,0x2923,0x2102,0x2943,0x31a5,0x2943,0x2943,0x2964,0x2964,0x2943,0x2943,0x2963,0x2963,0x2964,0x2922,0x2923,0x2943,0x31a5,0x2943,0x2943,0x2943,0x2964,0x2943,0x2943,0x2943,0x2923,0x2943,0x2923,0x2923,0x2102,0x2923,0x2943,0x2943,0x3164,0x3164,0x2963,0x2963,0x3164,0x2923,0x3164,0x3164,0x2964,0x2964,0x2963,0x3184,0x31a5,0x2964,0x2943,0x2964,0x2943,0x2943,0x2943,0x2944,0x2944,0x2123,0x2923,0x2923,0x2943,0x2923,0x2923,0x2943,0x3184,0x2964,0x2964,0x2943,0x2102,0x3164,0x2964,0x2944,0x2964,0x2943,0x2923,0x2943,0x2943,0x2944,0x2944,0x2964,0x3185,0x2124,0x2965,0x2964,0x3185,0x2964,0x3185,0x2943,0x2943,0x2943,0x3184,0x3185,0x3164,0x31a5,0x39c6,0x39c6,0x31a5,0x39e6,0x39c6,0x31a5,0x31a5,0x31a5,0x31a5,0x31a5,0x39e6,0x31e6,0x29a5,0x39c6,0x39e6,0x39c6,0x31c6,0x39e6,0x39e6,0x39a5,0x39a5,0x39e6,0x39e7,0x39c6,0x39c6,0x39c6,0x39c6,0x39e6,0x3a06,0x39c6,0x39c6,0x39e7,0x39e6,0x41e6,0x4207,0x39e7,0x39e7,0x4227,0x39e7,0x39c6,0x39e6,0x4207,0x39e7,0x4207,0x39e6,0x39e6,0x39c6,0x39e6,0x39e6,0x4227,0x39e7,0x39c6,0x4207,0x39e7,0x39e6,0x39e6,0x3a06,0x39e6,0x4207,0x39e6,0x39a6,0x39c6,0x39c6,0x39c6,0x39e6,0x39e6,0x39c6,0x39c6,0x39e6,0x39c6,0x39c6,0x39a6,0x39a6,0x39a6,0x39c5,0x4207,0x39c6,0x39c6,0x39c6,0x39e6,0x39e6,0x39c6,0x39a6,0x39e6,0x3a07,0x39a5,0x39c6,0x39e6,0x39c6,0x39a5,0x39c6,0x39c6,0x39c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4207,0x39e7,0x4207,0x3a07,0x39c6,0x31c6,0x39c6,0x4228,0x39c6,0x39c6,0x41e7,0x4207,0x3186,0x39c7,0x4207,0x31c6,0x3185,0x39e7,0x4227,0x4207,0x31a6,0x31a6,0x39e7,0x39c6,0x39e7,0x39c6, +0x0001,0x0001,0x0004,0x0003,0x0001,0x0002,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0003,0x0004,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0001,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0001,0x0001,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0002,0x0002,0x0002,0x0001,0x0001,0x0002,0x0002,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0001,0x0002,0x0002,0x0002,0x0001,0x0002,0x0001,0x0001,0x0001,0x0001,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0002,0x0001,0x0001,0x0000,0x0001,0x0001,0x0002,0x0002,0x0003,0x0003,0x0001,0x0001,0x0002,0x0002,0x0003,0x0003,0x0002,0x0002,0x0003,0x0001,0x0003,0x0002,0x0002,0x0002,0x0002,0x0003,0x0021,0x0003,0x0003,0x0002,0x0001,0x0001,0x0001,0x0001,0x0001,0x0002,0x0003,0x0001,0x0002,0x0002,0x0002,0x0003,0x0002,0x0002,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0004,0x0004,0x0003,0x0004,0x0004,0x0003,0x0003,0x0003,0x0002,0x0002,0x0002,0x0003,0x0003,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0002,0x0003,0x0003,0x0043,0x0063,0x0063,0x0043,0x0083,0x0062,0x0062,0x10c3,0x0083,0x08a3,0x08a3,0x10c2,0x10e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e2,0x18e3,0x1903,0x18e2,0x18e2,0x18e2,0x18c1,0x18e2, +0xac85,0xac84,0xa4a4,0x9c84,0x9c84,0x9c64,0x9c23,0x9c24,0x9c44,0x9404,0x9404,0x9c04,0x9404,0x93e4,0x93e3,0x93c3,0x8bc3,0x8bc3,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8bc4,0x8be4,0x8bc4,0x8bc4,0x93e4,0x93e4,0x9404,0x9424,0x9424,0x9424,0x9424,0x9424,0x9424,0x9444,0x9c64,0x9c64,0xa484,0xa484,0xa484,0x9c64,0xa4a5,0xa484,0x9c43,0x9c43,0xa463,0xac83,0xac83,0xac83,0xac83,0xaca2,0xb4c3,0xb4c3,0xb4c3,0xb4c3,0xb4a3,0xb4a3,0xb482,0xb4a3,0xb4c3,0xb4a2,0xb4a2,0xb4c2,0xb4c2,0xb4a2,0xb4a2,0xb4c2,0xb4c2,0xb4a2,0xb4a2,0xb4c2,0xb4a2,0xb482,0xb462,0xac62,0xb462,0xb462,0xb462,0xb442,0xb442,0xb442,0xb442,0xac42,0xac22,0xac22,0xac22,0xac42,0xac42,0xac42,0xac43,0xac43,0xac23,0xac23,0xac22,0xac22,0xa402,0xa402,0xa3e2,0xa402,0xa402,0xa422,0xa402,0xa403,0xa423,0xa423,0xa423,0xa423,0xa423,0xa443,0xa443,0xa443,0xa443,0xa443,0xac63,0xac63,0xac83,0xac63,0xac64,0xac43,0xac43,0xac23,0xac64,0xac84,0xa443,0xac83,0xac83,0xaca3,0xb4a3,0xb463,0xb464,0xb483,0xb4a3,0xb483,0xb4a3,0xbcc3,0xbce4,0xb4c4,0xb4c3,0xb4c3,0xb4c3,0xb4c3,0xb4c3,0xb4a3,0xb483,0xb4c3,0xb4a3,0xaca4,0x9c63,0x8c03,0x9423,0x9c64,0x9c63,0x9c43,0xa463,0xac84,0xac63,0xa464,0xb483,0xaca4,0x9c24,0x8be4,0x8c05,0x8c25,0x9445,0x9c44,0xa464,0xa484,0xaca4,0xacc5,0xb4c5,0xacc5,0xb485,0xb445,0xac25,0xa425,0xa425,0x9be6,0x9be6,0x9be5,0x93c4,0x93a5,0x8b85,0x7b45,0x9be6,0x9c06,0xa406,0xa406,0x9c06,0xa426,0x9bc6,0x9ba5,0x8b25,0x9365,0x9be5,0xa466,0xa467,0xa487,0x9c67,0x9c66,0x9426,0x8ba4,0x8bc5,0x9426,0x83a6,0x5a45,0x5245,0x7304,0x8c06,0x8be5,0x8bc4,0x7b44,0x8384,0x8be4,0x8be5,0x8be6,0x8c07,0x8be6,0x8b64,0x8344,0x8ba4,0x8ba3,0x7b65,0x5ae5,0x7325,0x7b44,0x7b64,0x83a4,0x5aa4,0x62c4,0x62a4,0x4204,0x62a4,0x8383,0x8383,0x8383,0x7b63,0x7b62,0x8361,0x8360,0x8ba2,0x8b80,0x8360,0x8342,0x72c2,0x72a2,0x8320,0x72c1,0x7b22,0x8b61,0x8b61,0x8b80,0x8b80,0x8360,0x8340,0x8320,0x8320,0x8320,0x7b00,0x8300,0x8300,0x8300,0x82e0,0x82e0,0x8300,0x8300,0x7ac0,0x7ac0,0x8300,0x8300,0x7ac0,0x7aa0,0x7260,0x7aa0,0x7260,0x6a80,0x6a60,0x6a80,0x6a60,0x72a0,0x7280,0x7280,0x7280,0x7240,0x7240,0x6200,0x51c0,0x4980,0x49e0,0x51e0,0x5200,0x51e0,0x49a0,0x4140,0x3900,0x30c0,0x3940,0x4120,0x3920,0x2880,0x2000,0x2840,0x28a0,0x28e0,0x1840,0x1000,0x0800,0x0000,0x0801,0x1001,0x0001,0x0001,0x0001,0x0001,0x0002,0x0002,0x0002,0x0003, +0xe669,0xde47,0xde68,0xde47,0xde47,0xde47,0xde26,0xde47,0xde47,0xde27,0xde27,0xde06,0xddc6,0xddc6,0xdde7,0xddc7,0xddc6,0xddc6,0xd5a6,0xd587,0xcd67,0xcd66,0xd587,0xd5a7,0xcd67,0xc547,0xcd67,0xd586,0xd586,0xd5a6,0xd5a6,0xd5c6,0xcda6,0xd5c6,0xcda6,0xcda6,0xd5c5,0xd5c4,0xdde5,0xd606,0xd606,0xd606,0xde05,0xd605,0xd605,0xd605,0xd5e4,0xd604,0xde04,0xde04,0xdde4,0xdde4,0xe625,0xde04,0xe624,0xde04,0xdde4,0xdde4,0xe623,0xe5e3,0xe5e3,0xe603,0xe623,0xee23,0xe623,0xe623,0xe603,0xdde2,0xe603,0xdde3,0xdde3,0xe602,0xee22,0xee82,0xe662,0xe622,0xee02,0xee03,0xdda2,0xdda3,0xe5c2,0xee02,0xede2,0xede2,0xee02,0xe5c2,0xe5e2,0xede2,0xee03,0xee03,0xee23,0xee44,0xf643,0xee23,0xee24,0xee43,0xee23,0xee23,0xee43,0xee23,0xee23,0xee23,0xee43,0xee23,0xee44,0xee44,0xe624,0xee24,0xf684,0xf684,0xee84,0xee85,0xee44,0xee65,0xee64,0xf664,0xf685,0xee64,0xee64,0xee65,0xee65,0xe625,0xee24,0xee45,0xd5e6,0xd5e6,0xe665,0xee65,0xee84,0xee65,0xee65,0xee25,0xee45,0xee45,0xe645,0xe645,0xe624,0xe645,0xe665,0xe645,0xde24,0xe625,0xe665,0xe664,0xe664,0xe624,0xee65,0xee85,0xee85,0xee65,0xe645,0xe625,0xde25,0xe625,0xe645,0xee65,0xee65,0xee65,0xee64,0xee65,0xee85,0xe665,0xe646,0xee66,0xee86,0xf6a7,0xf6a6,0xee86,0xee67,0xee87,0xee87,0xe687,0xe687,0xee87,0xee26,0xe5e7,0xddc7,0xddc7,0xdda7,0xd567,0xd588,0xd588,0xcd47,0xcd47,0xcd68,0xcd48,0xd588,0xd589,0xd569,0xcd49,0xc509,0xbd09,0xc509,0xcd29,0xd569,0xe608,0xee49,0xf6ea,0xf70a,0xf70b,0xf72b,0xf72b,0xeeeb,0xeeaa,0xf70b,0xf72b,0xf6ca,0xe66a,0xe64a,0xeeab,0xff2c,0xf70c,0xf6eb,0xeeab,0xf6ec,0xf70c,0xf72c,0xff4d,0xf74d,0xf70c,0xf6cb,0xe64b,0xf6cc,0xeeab,0xde6b,0xce2c,0xd64c,0xf6ed,0xeeac,0xe64a,0xd60b,0xd62c,0xe64b,0xd60c,0xde4c,0xf6ec,0xf70c,0xf70c,0xf70c,0xf70d,0xff2e,0xff0e,0xff2e,0xf70e,0xf70e,0xf6ee,0xe66d,0xd62d,0xeecd,0xeecd,0xe66c,0xeecd,0xeeee,0xff2e,0xff2f,0xff0e,0xff0e,0xff0e,0xfeee,0xff0f,0xf710,0xff30,0xff10,0xff10,0xff11,0xff31,0xff32,0xff32,0xff11,0xf711,0xff30,0xf70f,0xff30,0xff10,0xff31,0xff32,0xff32,0xff32,0xf711,0xf710,0xff10,0xf68c,0xfeed,0xff10,0xff10,0xff0f,0xff0f,0xf6ef,0xeecf,0xe6ef,0xe66d,0xe6ad,0xeeee,0xeeae,0xe68e,0xe68e,0xe6ae,0xde8e,0xdeae,0xe6ae,0xde6c,0xde6d,0xde8e,0xdeae,0xde8f,0xd66f,0xce4e,0xce4e,0xce4d,0xce2d,0xce2c,0xce4c,0xce2c,0xce2c,0xce2b,0xce2b,0xce2a,0xce29,0xce29,0xce09, +0x2926,0x0003,0x0004,0x0004,0x0004,0x0004,0x0004,0x0844,0x0004,0x18c4,0x18e4,0x0003,0x0004,0x2106,0x3a08,0x31c8,0x31c7,0x31e8,0x31c7,0x31c8,0x1148,0x1147,0x2167,0x2146,0x1127,0x0067,0x0106,0x1945,0x10e6,0x00e5,0x0065,0x0005,0x0005,0x0005,0x0005,0x0005,0x0004,0x0004,0x0005,0x0005,0x0004,0x0004,0x0003,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0004,0x0804,0x0003,0x0003,0x0003,0x0004,0x0004,0x0003,0x0003,0x0003,0x0003,0x0803,0x1803,0x0002,0x0002,0x0003,0x0002,0x0003,0x0002,0x0003,0x0803,0x1002,0x1802,0x0802,0x0802,0x2002,0x2002,0x0002,0x0003,0x0002,0x1802,0x1802,0x0802,0x2002,0x1002,0x0802,0x1802,0x2803,0x1002,0x1802,0x2802,0x2821,0x2821,0x2802,0x2882,0x2822,0x2002,0x2882,0x2822,0x3081,0x2862,0x2862,0x2002,0x2822,0x2882,0x1802,0x2002,0x3901,0x38e1,0x30a1,0x3082,0x2862,0x2801,0x2801,0x3061,0x3001,0x2001,0x2001,0x2802,0x2001,0x1801,0x1802,0x2061,0x0002,0x0002,0x1801,0x3063,0x3042,0x1802,0x2002,0x1802,0x2002,0x1802,0x0802,0x1002,0x0802,0x0002,0x0002,0x0802,0x0002,0x0002,0x0002,0x0002,0x0802,0x0803,0x2802,0x3002,0x3003,0x3003,0x3024,0x2804,0x1002,0x0001,0x1001,0x2001,0x2001,0x1801,0x2001,0x2801,0x2001,0x1001,0x1801,0x2801,0x3001,0x4144,0x4164,0x4124,0x38c4,0x3003,0x3084,0x2004,0x2003,0x2863,0x2843,0x2083,0x28e3,0x2903,0x3123,0x3923,0x41a3,0x41c3,0x41a3,0x41a3,0x49e3,0x5204,0x4183,0x41a3,0x3983,0x41a3,0x3143,0x2124,0x1944,0x00e4,0x39e4,0x4a24,0x3984,0x4143,0x49a3,0x49a4,0x49e5,0x4a05,0x51e5,0x5a86,0x5a85,0x5a45,0x62a5,0x6b26,0x6b06,0x62c7,0x6287,0x62a7,0x62a7,0x6b08,0x6b08,0x62e8,0x6ae8,0x7308,0x7308,0x6ae8,0x6b09,0x6b2a,0x6b4a,0x5aea,0x630a,0x6b4b,0x6b6b,0x738b,0x734a,0x62ea,0x6b6b,0x738b,0x7b8b,0x7bcb,0x83cb,0x7b8b,0x7bab,0x7bab,0x7bab,0x83ec,0x840c,0x83ec,0x83ed,0x83ed,0x7bed,0x840c,0x7c0d,0x7c0e,0x842e,0x8c6f,0x7c0e,0x840e,0x840e,0x8c4f,0x8c6f,0x948f,0x948f,0x94af,0x9caf,0x9cd0,0x9cf0,0x9cf0,0x9cf0,0x9cf1,0x9d11,0xa511,0xa532,0xa532,0xa511,0xa511,0xa532,0xa4f1,0xa531,0xad52,0xad93,0xb593,0xb5b3,0xbdb3,0xb593,0xb593,0xb592,0xad32,0xb593,0xb5d3,0xb5d3,0xbdf4,0xbdf3,0xbdd3,0xbdd3,0xbdf4,0xbdb3,0xb592,0xbdf3,0xbdd3,0xbdd3,0xbdd3,0xbdd3,0xbdd3,0xbdd3,0xb5b3,0xb592,0xb592,0xb592,0xb5b2,0xad51,0x7bab,0x7baa,0x7bca,0x73a9,0x73a9,0x73a9,0x7ba9,0x73a9,0x73a8,0x7bc9,0x7bc8,0x7bc8,0x7bc7,0x9cab,0xa4cc, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0000,0x0000,0x0000,0x0002,0x0002,0x0003,0x0004,0x0107,0x0086,0x0045,0x0106,0x1106,0x1106,0x08c6,0x10c6,0x1927,0x10e6,0x1907,0x00a6,0x0086,0x0846,0x1086,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0002,0x0003,0x0003,0x0004,0x0005, +0x3a28,0x3a28,0x4248,0x4248,0x3a08,0x39e7,0x3a28,0x3a07,0x3a07,0x4248,0x4228,0x31c6,0x4228,0x4228,0x4248,0x4248,0x3a07,0x39e7,0x39e7,0x4249,0x4228,0x31a6,0x3a07,0x3a07,0x31c7,0x39e7,0x3a07,0x3a27,0x31c6,0x31c6,0x39c7,0x3a07,0x31a6,0x3a07,0x3a07,0x31e6,0x31c6,0x31c7,0x3a07,0x31c6,0x39e7,0x39c7,0x39e7,0x39c7,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x3186,0x31c6,0x31a6,0x2985,0x2985,0x39e7,0x31c6,0x31a6,0x31a5,0x2144,0x2124,0x3186,0x31a6,0x2965,0x2965,0x31a5,0x31c7,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x2985,0x3186,0x2966,0x3186,0x2965,0x3a07,0x3a07,0x2985,0x3186,0x31a6,0x2965,0x2985,0x2965,0x31e7,0x31c6,0x2144,0x31a6,0x31e6,0x31c6,0x2964,0x2985,0x2985,0x31a6,0x2965,0x2964,0x2985,0x2985,0x31a6,0x2965,0x2985,0x31a5,0x2985,0x31c6,0x31c6,0x39e6,0x31c6,0x2964,0x2965,0x31c6,0x31a6,0x2985,0x2965,0x3a07,0x2985,0x2965,0x3a27,0x31a6,0x29a6,0x31c6,0x31c6,0x2964,0x2965,0x31e7,0x31e7,0x39e7,0x2144,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x31c7,0x2965,0x31a6,0x18e3,0x2985,0x2965,0x2965,0x39e7,0x31c7,0x2985,0x3186,0x4a69,0x3a08,0x31e7,0x2986,0x31a6,0x39e7,0x2944,0x2124,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x39e7,0x31c7,0x3a07,0x4207,0x39e7,0x39e6,0x4228,0x31c6,0x31a5,0x3a07,0x39e7,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4228,0x4248,0x39e7,0x4228,0x3a07,0x4228,0x4a48,0x4228,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x4a69,0x4a8a,0x4248,0x4a89,0x3a07,0x4227,0x5289,0x4a69,0x4a69,0x52aa,0x52aa,0x4248,0x52aa,0x4a69,0x4228,0x4a69,0x52aa,0x5289,0x4a89,0x4a69,0x52aa,0x52aa,0x52aa,0x4a69,0x5aea,0x52aa,0x52aa,0x52ca,0x5aeb,0x52aa,0x52aa,0x5aeb,0x5aeb,0x4a68,0x52a9,0x4a69,0x4248,0x52ca,0x52ca,0x52a9,0x4a89,0x52ca,0x5aeb,0x52aa,0x5b0b,0x632b,0x5b0b,0x5aea,0x5aca,0x52a9,0x52aa,0x52a9,0x52a9,0x52ca,0x52aa,0x52aa,0x632c,0x632c,0x5aca,0x52ca,0x52ca,0x5289,0x6b4d,0x5b0b,0x52ca,0x5aeb,0x52ca,0x5aea,0x5aca,0x5aca,0x5aca,0x52aa,0x5aeb,0x5aca,0x52aa,0x5acb,0x5289,0x5aea,0x5289,0x52a9,0x4a48,0x52aa,0x5aca,0x4a48,0x4a48,0x4a48,0x4207,0x4207,0x4207,0x39c6,0x39c7,0x4a49,0x4228,0x3185,0x39e7,0x31c6,0x2985,0x2924,0x20e2,0x2123,0x31a6,0x2924,0x2903,0x2103,0x2944,0x1881,0x1881,0x1880,0x0000,0x0000,0x0000,0x18e2,0x0860,0x0000,0x0840,0x1081,0x0020,0x0860,0x0860,0x0820,0x0820,0x10a1,0x0840,0x0840,0x1080,0x0820,0x0000, +0x638d,0x6bae,0x73ef,0x6bce,0x638d,0x636d,0x638d,0x6bce,0x6bce,0x6bce,0x6b8d,0x5b0b,0x6b8d,0x638d,0x636c,0x63ad,0x636c,0x636d,0x636c,0x636c,0x638d,0x636d,0x638d,0x6bce,0x636d,0x73ce,0x638d,0x636c,0x636c,0x634c,0x5b2b,0x634c,0x5b4c,0x638d,0x636c,0x638d,0x5b4c,0x634c,0x636c,0x634c,0x636d,0x5b2c,0x5b2b,0x5b2b,0x52eb,0x52ea,0x5b6c,0x5b2b,0x52ea,0x5b2c,0x5b2c,0x5b2b,0x530b,0x5b2c,0x52eb,0x52eb,0x52eb,0x5b0b,0x52ca,0x52eb,0x5b2c,0x5b2c,0x5b2c,0x5b0b,0x52ea,0x530b,0x52ea,0x52ea,0x52ea,0x5b0c,0x5b2b,0x5b2c,0x52eb,0x52ca,0x52eb,0x52ea,0x52ea,0x52eb,0x52ca,0x52ea,0x52eb,0x52ca,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x52ca,0x52eb,0x52ea,0x5b2b,0x530b,0x52ea,0x52eb,0x52eb,0x530b,0x530b,0x52ca,0x52ca,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x4aaa,0x4aa9,0x5b0b,0x5b4c,0x52ea,0x52ea,0x5b2c,0x634c,0x4aca,0x530b,0x5b4c,0x5b4c,0x530b,0x52eb,0x5b2b,0x5b0b,0x52ca,0x5b2c,0x52ea,0x52ea,0x5b2b,0x5b2b,0x636d,0x5b2b,0x52ca,0x530b,0x5b2c,0x52ea,0x636d,0x5b2c,0x5b2c,0x634c,0x4aa9,0x52ea,0x5b2b,0x5aeb,0x5aeb,0x530b,0x5b0b,0x52ea,0x634c,0x634c,0x52eb,0x5b2c,0x52eb,0x52ca,0x52eb,0x6b8d,0x6bad,0x6bcd,0x638d,0x636d,0x5b0b,0x5aeb,0x52ea,0x632c,0x632c,0x634c,0x5b2b,0x52eb,0x634c,0x636c,0x636c,0x634c,0x6b8d,0x636d,0x6b8d,0x636c,0x634c,0x73ce,0x6bad,0x634c,0x636c,0x634c,0x6b6d,0x6bae,0x638d,0x636d,0x6bad,0x73ce,0x738d,0x6b6d,0x6b6d,0x6bae,0x73ee,0x73ef,0x638d,0x73ce,0x73ae,0x73ce,0x73ee,0x73ef,0x8430,0x73ce,0x7bef,0x7c30,0x73ce,0x73ce,0x73ce,0x7c0f,0x7c2f,0x73ee,0x73ce,0x7c30,0x73ee,0x6bad,0x73ce,0x7c2f,0x7c0f,0x73ce,0x73ae,0x7bef,0x7c2f,0x73ce,0x73ce,0x7bef,0x7bef,0x8430,0x842f,0x8430,0x7c0f,0x7c0f,0x8450,0x7c0f,0x7bef,0x7bef,0x7c0f,0x7c0f,0x7c0f,0x8430,0x7c0f,0x7c0f,0x7c0f,0x7c2f,0x7c2f,0x8450,0x8471,0x8430,0x94b1,0x842f,0x7c0f,0x7c0f,0x7c0f,0x8450,0x8450,0x7bef,0x8450,0x8450,0x8c91,0x8c71,0x8430,0x7bee,0x840f,0x8c70,0x8430,0x8c50,0x8c71,0x8450,0x8c91,0x8c70,0x8450,0x8450,0x8c71,0x8c91,0x8c91,0x94b1,0x8c71,0x8c50,0x8c91,0x94b2,0x9491,0x8450,0x9491,0x9cf3,0x9cd2,0x8c70,0x8c70,0x94d2,0x94d2,0x8c70,0x8c91,0x8470,0x9491,0x8c51,0x8c50,0x8c50,0x8c71,0x842f,0x7bef,0x7bce,0x73ae,0x8450,0x8450,0x7bef,0x73ce,0x8450,0x8430,0x6bae,0x7c0f,0x7bef,0x73ae,0x6b8d,0x7c0f,0x73ae,0x7bef,0x738d,0x7bef,0x7bef,0x6b8d,0x73ae,0x7c10,0x73cf,0x6b6d,0x73ce,0x73ce,0x7bef,0x6b4d,0x6b4c, +0x636c,0x634c,0x740f,0x638d,0x636d,0x6bae,0x638d,0x73ce,0x6bae,0x73ce,0x6bad,0x5b2c,0x638d,0x638d,0x636c,0x638d,0x6bad,0x6b8d,0x638d,0x6bad,0x638d,0x6bad,0x5b4c,0x6b8d,0x638d,0x636c,0x638d,0x636c,0x6bad,0x638c,0x6b8d,0x636c,0x638d,0x636c,0x634c,0x6bad,0x636c,0x634c,0x638d,0x5b4c,0x5b4c,0x638d,0x5b4c,0x5b4c,0x638d,0x636c,0x636c,0x5b0b,0x52ea,0x5b4c,0x636d,0x5b4c,0x530b,0x634c,0x5b4c,0x530b,0x5b4c,0x634c,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x636c,0x5b0b,0x5b4c,0x530a,0x530b,0x5b2b,0x5b2b,0x52eb,0x530b,0x5b2b,0x530b,0x52eb,0x5b2c,0x5b4c,0x52ca,0x52ca,0x52ea,0x52ea,0x530a,0x52ea,0x52ca,0x4aca,0x5b2b,0x5b4c,0x5b2b,0x530b,0x530b,0x5b4c,0x5b2b,0x636c,0x5b2c,0x5b4c,0x52ca,0x52ca,0x530b,0x530b,0x52ca,0x530b,0x5b0b,0x5b0b,0x52ea,0x530b,0x52ea,0x5b2c,0x5b2c,0x52eb,0x636c,0x5b2b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x52ca,0x634c,0x634c,0x5b2b,0x4aaa,0x52ea,0x52ea,0x5b0b,0x5b4c,0x5b0b,0x5b0b,0x5aeb,0x636c,0x6bad,0x5b2b,0x5b2c,0x52aa,0x5b2b,0x636c,0x5b0b,0x52ea,0x52ea,0x4aa9,0x5aeb,0x636c,0x530b,0x5b4c,0x636c,0x6bce,0x5b4c,0x5b2b,0x5b4c,0x634c,0x5b0b,0x634c,0x6bad,0x634c,0x6bad,0x636d,0x5b2c,0x636c,0x638d,0x5b4c,0x634c,0x6b6c,0x6b8d,0x6bad,0x6b8d,0x636c,0x638d,0x636c,0x73ae,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x73ad,0x6bad,0x6b8d,0x6bad,0x73ae,0x73ad,0x6b8d,0x6bad,0x73ce,0x73ef,0x73ee,0x73ce,0x6b8d,0x73ce,0x6b8d,0x6b8d,0x6bad,0x73ee,0x7c2f,0x73ce,0x7c2f,0x7c0f,0x73ce,0x7bee,0x7bef,0x7bee,0x73ce,0x6bad,0x7c0f,0x73ce,0x73ce,0x73ee,0x7bef,0x7bee,0x73ce,0x73ee,0x7bef,0x7c0f,0x8450,0x8430,0x73ce,0x7bee,0x73ae,0x73ce,0x7bef,0x7c0f,0x73ce,0x73ce,0x7c0f,0x842f,0x8430,0x8450,0x7c0f,0x8450,0x7c0f,0x7bef,0x840f,0x7bee,0x7c0f,0x7bce,0x8430,0x8450,0x7c0f,0x842f,0x7c2f,0x842f,0x7c0f,0x840f,0x7c0f,0x8470,0x842f,0x8450,0x8450,0x8450,0x8450,0x8c70,0x8c71,0x8450,0x7bef,0x840f,0x842f,0x7c0f,0x7c0f,0x7c0f,0x8c71,0x8430,0x8c50,0x8430,0x8450,0x8c50,0x8450,0x7bef,0x8450,0x8450,0x7c0f,0x7bef,0x8c50,0x7c0f,0x8c50,0x840f,0x9491,0x94b1,0x8c70,0x8c71,0x8c50,0x7c0f,0x8c71,0x8430,0x8c71,0x8450,0x840f,0x8450,0x842f,0x840f,0x8c91,0x8c71,0x8450,0x842f,0x842f,0x8450,0x840f,0x840f,0x842f,0x7c0f,0x7c0f,0x7c0f,0x8430,0x842f,0x8450,0x7c0f,0x7bee,0x7c0f,0x8430,0x7c0f,0x7c0f,0x8430,0x73ce,0x7c0f,0x7bef,0x7bef,0x7bef,0x7c0f,0x8430,0x7bef,0x73ce,0x73ae,0x7bef,0x738d,0x73ae, +0x6b8d,0x6bce,0x6bad,0x6bce,0x6bae,0x5b2c,0x73ee,0x6bce,0x6bce,0x73ee,0x6bcd,0x636c,0x638d,0x638d,0x638d,0x638d,0x6b8d,0x636c,0x6b8d,0x6b8d,0x638d,0x6bce,0x636c,0x6bad,0x634c,0x636c,0x638d,0x6bad,0x6bcd,0x6b8d,0x6bad,0x6b8d,0x6bad,0x6bad,0x6b8d,0x6b8d,0x6b8d,0x636c,0x636d,0x6bad,0x6bce,0x6bce,0x634c,0x6bad,0x6b8d,0x636c,0x6b8d,0x636d,0x636d,0x638d,0x636d,0x636d,0x634c,0x634c,0x5b4c,0x5b4c,0x636c,0x636c,0x5b2b,0x5b2b,0x530b,0x6b8d,0x5b2c,0x5b2c,0x5b2c,0x530b,0x5b2b,0x636c,0x530b,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b2b,0x636c,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x52eb,0x52eb,0x52eb,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x530b,0x530b,0x5b6c,0x5b2c,0x5b4c,0x5b2c,0x5b0b,0x52eb,0x5b2c,0x530b,0x5b0b,0x634c,0x638d,0x5b4c,0x636c,0x5b2b,0x5b4c,0x5b0b,0x638d,0x5b2c,0x636c,0x636c,0x634c,0x6bad,0x5b2b,0x5b2c,0x52ca,0x530b,0x636c,0x6b8d,0x5b2c,0x636c,0x5b0b,0x636c,0x636d,0x5b4c,0x636c,0x5b2c,0x636c,0x638d,0x532b,0x636c,0x5b4c,0x5b4c,0x636c,0x638d,0x636c,0x5b2b,0x638d,0x636c,0x638d,0x5b2b,0x5b4c,0x634c,0x6bad,0x636c,0x636d,0x6b8d,0x6b8d,0x636c,0x636c,0x636c,0x636c,0x636d,0x6b8d,0x634c,0x634c,0x636d,0x636d,0x740f,0x73ce,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x6bad,0x6bce,0x73ee,0x6b8d,0x6bad,0x6b8d,0x6b8d,0x73ce,0x73ce,0x6b8d,0x6b8d,0x6bcd,0x7bef,0x73ce,0x73ad,0x7bef,0x6bad,0x740f,0x73ce,0x6bae,0x6bad,0x73ee,0x73ce,0x73ee,0x6bad,0x740f,0x73ee,0x73ce,0x73ae,0x7bef,0x73ce,0x73ce,0x7c50,0x7c0f,0x73ae,0x73ee,0x7c30,0x6bad,0x73ee,0x73ee,0x73ee,0x7c0f,0x73ce,0x7bee,0x8450,0x7c0f,0x8450,0x8470,0x7c0f,0x7c2f,0x7c0f,0x7c0f,0x7bef,0x7c0f,0x7c0f,0x7c0f,0x73ee,0x7c2f,0x8450,0x8430,0x7c2f,0x8450,0x7c0f,0x73ee,0x7bef,0x7bef,0x7c0f,0x842f,0x842f,0x840f,0x8c91,0x8c91,0x8450,0x7c2f,0x7c0f,0x7c0f,0x7c0f,0x94b1,0x8430,0x8430,0x8430,0x842f,0x8450,0x8c70,0x8450,0x8c91,0x8430,0x8450,0x7c0f,0x7c0f,0x7c0f,0x8430,0x8c70,0x8450,0x8c70,0x7c0f,0x8450,0x8c71,0x8c50,0x8c70,0x8c70,0x7c2f,0x8430,0x840f,0x8430,0x8c71,0x8c71,0x840f,0x8c50,0x8c50,0x8430,0x8430,0x8c91,0x8450,0x8430,0x8c71,0x8430,0x840f,0x840f,0x7c0f,0x7c0f,0x7c0f,0x7c0f,0x8430,0x8430,0x7bef,0x8430,0x8c70,0x842f,0x8430,0x7c0f,0x7bee,0x73ce,0x73ce,0x7bef,0x8450,0x8450,0x842f,0x7bce,0x7c0f,0x840f,0x7bef,0x73ce,0x73ce,0x7bce,0x7bef,0x7c0f,0x7bce,0x73ae,0x73ce,0x6bad,0x7bce,0x7bef,0x840f,0x73ae,0x7bef,0x73ce, +0x6bae,0x73ee,0x638d,0x6bad,0x6bce,0x6bad,0x740f,0x6bce,0x73ee,0x6bad,0x6bad,0x73ee,0x73ee,0x638d,0x636d,0x6bce,0x6bae,0x6bad,0x73ce,0x6bad,0x6bae,0x73ee,0x6bce,0x6bad,0x6bae,0x6bce,0x6bad,0x6bad,0x6bcd,0x6bad,0x634c,0x638d,0x638d,0x6bad,0x6bad,0x636c,0x636c,0x63ad,0x63ad,0x6bce,0x6bae,0x636c,0x6bae,0x636d,0x636c,0x636c,0x636d,0x636d,0x6bad,0x5b4c,0x5b2b,0x636c,0x636d,0x5b2c,0x638d,0x636d,0x634c,0x636d,0x634c,0x5b2c,0x5aeb,0x634c,0x5b4c,0x5b0b,0x5b0b,0x5b4c,0x5b4c,0x5b0b,0x530b,0x5b4c,0x636c,0x636c,0x5b4c,0x634c,0x5b2b,0x634c,0x5b4c,0x636c,0x636c,0x5b4c,0x5b2c,0x634c,0x636c,0x636c,0x5b2c,0x636c,0x5b0b,0x5b2c,0x638d,0x636c,0x636c,0x5b2c,0x636d,0x5b6c,0x5b6c,0x636c,0x638d,0x638d,0x5b4c,0x638c,0x636c,0x636c,0x636c,0x5b2b,0x638d,0x5b4c,0x636c,0x638d,0x530b,0x634c,0x5b2b,0x638d,0x5b4c,0x638d,0x6b8d,0x636c,0x5b4b,0x6bad,0x530b,0x5b2c,0x6bce,0x6b8d,0x634c,0x638d,0x636c,0x5b2b,0x636c,0x5b4c,0x5b2b,0x6bad,0x636c,0x6bad,0x73ee,0x6bad,0x638d,0x6bad,0x6bad,0x6bad,0x6bce,0x5b4c,0x6b8d,0x636c,0x636d,0x6bad,0x6b8d,0x6bce,0x6b8d,0x636d,0x73ae,0x73ce,0x6bce,0x638d,0x6bad,0x6bce,0x6bad,0x73ce,0x6bce,0x73ce,0x73ee,0x73ce,0x6bad,0x6bce,0x6bad,0x7c0f,0x6bce,0x6bce,0x6bad,0x6b8d,0x7c0f,0x6bce,0x7c0e,0x7c2f,0x6b8d,0x6bce,0x740e,0x7c0f,0x73ee,0x73ee,0x73ef,0x63ad,0x740f,0x73ce,0x73ee,0x73ee,0x6b8d,0x73ce,0x740f,0x740f,0x7c0f,0x73ce,0x7c0f,0x7c0f,0x7c0f,0x7c50,0x6bce,0x740f,0x8450,0x73ee,0x7bef,0x7c0f,0x73ee,0x8450,0x8450,0x7c2f,0x73ce,0x7c0f,0x73ee,0x7c0f,0x7c0f,0x8450,0x7c2f,0x73ee,0x8470,0x7c0f,0x7c50,0x7c2f,0x7bef,0x7c0f,0x7c2f,0x73ee,0x73ee,0x7bef,0x8450,0x8430,0x7bef,0x73ce,0x842f,0x7c0f,0x842f,0x8430,0x8470,0x7c0f,0x842f,0x8c71,0x7c0f,0x8430,0x842f,0x8c70,0x94d2,0x7bee,0x7c0f,0x842f,0x7c2f,0x7c0f,0x8c91,0x8450,0x842f,0x8450,0x8c70,0x842f,0x8c50,0x8450,0x8450,0x8470,0x8430,0x7bef,0x7c0f,0x7bee,0x8430,0x8430,0x842f,0x7bef,0x7bef,0x842f,0x7c2f,0x7bee,0x8c70,0x8430,0x8450,0x7bef,0x8450,0x8c50,0x8c70,0x7c0f,0x7bce,0x8450,0x8450,0x8c91,0x8c70,0x8c70,0x8450,0x8430,0x8c50,0x842f,0x8c70,0x8cb1,0x8c70,0x8c71,0x8430,0x8430,0x8430,0x8c70,0x842f,0x8450,0x7bee,0x7c0f,0x8c71,0x840f,0x8c71,0x8450,0x7c0f,0x8c50,0x8450,0x8410,0x7bef,0x8c91,0x842f,0x73ce,0x8430,0x8450,0x7bef,0x7bef,0x8430,0x73ee,0x7bef,0x8430,0x8c71,0x8430,0x7bef,0x7c0f, +0x6bae,0x73ce,0x6b8d,0x73ce,0x73ce,0x6b6d,0x6bad,0x636d,0x634c,0x636d,0x636d,0x638d,0x6bad,0x6bae,0x638d,0x636d,0x636d,0x634c,0x6b8d,0x636d,0x5aeb,0x5b2c,0x636c,0x5b4b,0x636c,0x6bce,0x638d,0x634c,0x6b8d,0x638c,0x6bad,0x6bae,0x6bad,0x636d,0x5b4c,0x634c,0x5b0b,0x636c,0x6b8d,0x5b4c,0x5b2b,0x636c,0x5b4c,0x5b4c,0x5b4c,0x634c,0x5b2c,0x5b2c,0x634c,0x634c,0x6b8d,0x636d,0x634c,0x5b0b,0x5b0b,0x5b2c,0x634c,0x5b2c,0x636c,0x5b0b,0x5b0b,0x634c,0x636d,0x5b0b,0x5b2b,0x5b4c,0x638d,0x5b2c,0x636c,0x636d,0x530b,0x5b2c,0x634c,0x5b2c,0x5b0b,0x52eb,0x5b4c,0x636c,0x636c,0x5b4c,0x5b0b,0x636d,0x52ea,0x5b2c,0x636d,0x636c,0x5b2b,0x52ea,0x5b4c,0x6b8d,0x6bad,0x5b2c,0x5b2b,0x5b0b,0x5b4c,0x5b4c,0x634c,0x634c,0x5b0b,0x632c,0x5b2c,0x636c,0x5b2c,0x636c,0x5b4c,0x636c,0x634c,0x636c,0x6bad,0x636c,0x638d,0x636c,0x636d,0x636d,0x6b8d,0x6bad,0x638d,0x73ee,0x636c,0x636c,0x6bad,0x634c,0x634c,0x636c,0x6bce,0x6bad,0x634c,0x636c,0x6bad,0x6b8d,0x636c,0x6bad,0x6b8d,0x636c,0x5b4c,0x6b8d,0x636c,0x636c,0x636c,0x636c,0x638d,0x636c,0x5b4c,0x638d,0x634c,0x5b4c,0x5b4c,0x634c,0x6bad,0x636c,0x638d,0x638d,0x638d,0x638d,0x634c,0x5b4c,0x6bad,0x6bad,0x636c,0x636c,0x73ce,0x638d,0x6bad,0x73ad,0x6bce,0x6bad,0x636c,0x6bad,0x73ce,0x634c,0x636c,0x73ae,0x636d,0x73ce,0x638d,0x6bad,0x73ee,0x6bad,0x5b4c,0x6bad,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x73ce,0x6bad,0x6bae,0x6bad,0x6b6d,0x73ae,0x73ee,0x6bad,0x73ce,0x73ce,0x6b8d,0x6b8d,0x6bad,0x6b8d,0x6bae,0x73ae,0x73ce,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x73ae,0x6bad,0x6b8d,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x73ce,0x73ce,0x6b6d,0x73ae,0x73ae,0x73ae,0x6bad,0x6b8d,0x73ce,0x6bad,0x6b6d,0x6b8d,0x6b6d,0x634c,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x634c,0x738d,0x6b8d,0x6bad,0x6b6d,0x634c,0x6b8d,0x6b8d,0x6b4c,0x6b8d,0x73ce,0x6bad,0x636c,0x73ae,0x6b8d,0x7bce,0x6b8d,0x6b8d,0x738d,0x6b8d,0x6b8d,0x73ae,0x73ad,0x6b6d,0x6b8d,0x6b6d,0x738e,0x73ae,0x6b8d,0x6b8d,0x73ce,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x73ce,0x6b6d,0x73ce,0x73ce,0x7bee,0x73ce,0x6b8d,0x73ae,0x7bce,0x73ae,0x73ce,0x738d,0x73ae,0x73ce,0x7bce,0x7bef,0x73ce,0x738d,0x73ce,0x8450,0x73ae,0x738d,0x73ae,0x73ce,0x7bee,0x7bce,0x7bce,0x840f,0x7bce,0x8450,0x8430,0x73ae,0x7bef,0x7bef,0x6b8d,0x73ae,0x7bef,0x8430,0x7bef,0x73ce,0x7bef,0x738e,0x73ae,0x73ce,0x73ae,0x73ce,0x7c10,0x7bef,0x8450,0x7bef,0x73ae,0x7c0f,0x73ee,0x73ce, +0x3a07,0x3a07,0x31c7,0x39e7,0x3a07,0x3186,0x31c7,0x3186,0x3186,0x31c7,0x39e7,0x2965,0x2985,0x3a08,0x31a6,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x2985,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x31c6,0x2986,0x2985,0x3185,0x31c6,0x31c6,0x2965,0x29a6,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2145,0x2985,0x2986,0x31c7,0x31a6,0x2985,0x2985,0x2985,0x2965,0x2144,0x2985,0x31c6,0x2944,0x3185,0x2965,0x2124,0x2945,0x2985,0x2965,0x31a6,0x2985,0x2986,0x31c6,0x2965,0x2124,0x2965,0x2124,0x2985,0x2144,0x2965,0x2985,0x2985,0x2985,0x2145,0x31a6,0x2965,0x2965,0x2144,0x2965,0x2965,0x2124,0x2144,0x2985,0x2985,0x2965,0x2965,0x2124,0x2965,0x2144,0x2945,0x2965,0x2965,0x2145,0x2124,0x31a6,0x3186,0x2144,0x2144,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2144,0x2945,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2124,0x2965,0x2144,0x2965,0x18e3,0x2144,0x2965,0x2944,0x2103,0x2965,0x2965,0x2124,0x1904,0x2965,0x2144,0x2124,0x2124,0x18e3,0x2144,0x2985,0x2144,0x2124,0x2965,0x2144,0x2144,0x2965,0x2965,0x2103,0x2144,0x2965,0x2144,0x2144,0x1903,0x2124,0x2965,0x2124,0x18e3,0x2144,0x2985,0x2123,0x2965,0x2985,0x2124,0x2945,0x2945,0x2945,0x2144,0x31a5,0x2144,0x2985,0x2124,0x2124,0x2144,0x2124,0x2945,0x2965,0x2144,0x2965,0x2944,0x2965,0x2144,0x2144,0x2965,0x2945,0x2965,0x3186,0x39e7,0x2965,0x2944,0x2124,0x2124,0x2985,0x31a5,0x2965,0x2124,0x2124,0x2965,0x2964,0x2944,0x2945,0x2985,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2965,0x2945,0x2124,0x2944,0x2965,0x2124,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2124,0x2944,0x31c6,0x3186,0x31a6,0x2945,0x2944,0x2965,0x2945,0x2965,0x2945,0x31a6,0x2985,0x2944,0x2965,0x3185,0x2985,0x2985,0x2944,0x2944,0x2965,0x3185,0x31c6,0x39c6,0x31a6,0x31a6,0x31c6,0x31a6,0x39c6,0x3185,0x39e7,0x39c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c7,0x31c6,0x39e7,0x4228,0x39c6,0x31a6,0x3a07,0x4a48,0x4228,0x4207,0x4208,0x4228,0x39c6,0x4208,0x4207,0x4207,0x4228,0x4248,0x4228,0x39e7,0x4208,0x4a69,0x4a69,0x4a49,0x4a69,0x39e7,0x4228,0x4a89,0x4a49,0x4228,0x4a69,0x4a69,0x39e7,0x4228,0x5289,0x5289,0x4a69,0x4a69,0x52aa,0x52aa,0x4207,0x5acb,0x528a,0x4a69,0x52aa,0x52aa,0x4a69,0x5289,0x4208,0x4a89,0x52ca,0x4248,0x52aa,0x5aeb,0x5aca,0x5aeb,0x528a,0x52ca,0x5aeb,0x52ca,0x52aa,0x52ca,0x5aeb,0x52ca,0x4a69,0x52ca, +0x0841,0x0841,0x1061,0x0820,0x0021,0x1082,0x0841,0x1082,0x1082,0x0861,0x0041,0x10a2,0x10a2,0x0000,0x0841,0x1061,0x1082,0x10a2,0x0882,0x0861,0x10a2,0x10a2,0x0881,0x1082,0x1082,0x0861,0x1082,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1081,0x1082,0x1061,0x0000,0x1082,0x1061,0x1061,0x10a2,0x1082,0x10a2,0x1082,0x10c2,0x10a2,0x0861,0x0820,0x10a2,0x10a2,0x0881,0x0882,0x1082,0x10a2,0x1081,0x0881,0x10a2,0x10c2,0x10c2,0x10a2,0x18c2,0x1081,0x10a2,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x1082,0x1061,0x0861,0x1081,0x10c2,0x10c2,0x1081,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x10c3,0x10a2,0x1081,0x10a2,0x18a2,0x10a2,0x10a2,0x1061,0x10a2,0x10a2,0x10a2,0x18c2,0x2104,0x1081,0x10a2,0x10c2,0x0861,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x18e3,0x18c3,0x1061,0x10a2,0x18e3,0x10c2,0x10a2,0x2104,0x18e3,0x10a2,0x1082,0x18e3,0x18a2,0x18c2,0x1082,0x1061,0x10a2,0x18c2,0x10a2,0x1081,0x18e3,0x18e3,0x18a2,0x18c3,0x1062,0x10a2,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x10a2,0x18e3,0x10c2,0x18c2,0x18e3,0x10a2,0x18c3,0x10c2,0x18c2,0x10a2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x10c3,0x1903,0x18c2,0x10c2,0x18c2,0x10c2,0x18e3,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x18c3,0x10c2,0x18e3,0x18e3,0x10a2,0x1081,0x18c2,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18e3,0x18c2,0x18c2,0x10a2,0x18e3,0x18e3,0x18c3,0x1903,0x18c3,0x2104,0x18e3,0x18e3,0x18e3,0x18c2,0x18c2,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x0861,0x10a2,0x1082,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c2,0x18c2,0x18c3,0x18a2,0x10a2,0x18c3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x10c2,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x18c3,0x1081,0x10c2,0x10a2,0x10a2,0x0861,0x0861,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x0820,0x10a2,0x0881,0x0020,0x0861,0x1082,0x0861,0x0020,0x0861,0x1081,0x0020,0x0000,0x0020,0x0020,0x0000,0x0820,0x1082,0x0000,0x0020,0x0861,0x0000,0x0840,0x0861,0x0841,0x1082,0x0000,0x0020,0x18c2,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0861,0x0841,0x0000, +0x39e7,0x31c7,0x31c7,0x39e7,0x39c6,0x31c6,0x39e7,0x31c6,0x4228,0x3a07,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x31c7,0x31c6,0x39c7,0x31c7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x31a6,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x31e7,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x31e7,0x3a07,0x31e7,0x31c7,0x39c7,0x31c6,0x31c6,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x31e7,0x31c6,0x39e7,0x3a07,0x31c6,0x39e7,0x31e7,0x31c6,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x31c6,0x39e7,0x39e7,0x31a6,0x31c7,0x39e7,0x3a07,0x3a28,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x31e6,0x39e7,0x31e7,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x3a07,0x39e7,0x3a28,0x4228,0x4228,0x3a07,0x4228,0x3a27,0x4228,0x4228,0x3a08,0x3a28,0x4208,0x4248,0x3a07,0x3a28,0x4228,0x4248,0x4228,0x3a27,0x4228,0x4248,0x39e7,0x4a69,0x4289,0x3a28,0x4228,0x4248,0x4248,0x4248,0x3a28,0x4228,0x3a07,0x3a28,0x3a28,0x4248,0x4248,0x4a69,0x3a28,0x4228,0x4248,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x3a28,0x4248,0x4a69,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x3a08,0x39e7,0x3a07,0x4248,0x3a07,0x3a07,0x4248,0x4248,0x4208,0x4248,0x3a28,0x3a07,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4208,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x4248,0x3a08,0x3a07,0x3a08,0x3a28,0x3a07,0x4269,0x3a08,0x4248,0x4248,0x39e7,0x4228,0x4249,0x4228,0x3a08,0x3a08,0x3a27,0x3a07,0x4208,0x4208,0x4228,0x4228,0x4228,0x4208,0x3a08,0x4208,0x4228,0x4208,0x4228,0x4208,0x4248,0x4208,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x4208,0x4228,0x4228,0x3a07,0x3a07,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x4208,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x4207,0x3a07,0x4207,0x4208,0x39e7,0x3a07,0x3a07,0x3a07,0x39c7,0x39e7,0x4208,0x4208,0x3a07,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x39e7,0x3a08,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x4208,0x39c7,0x39c7,0x39c7,0x31a6,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x3186,0x2986,0x2965,0x3186,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2945,0x3186,0x3186,0x31a6,0x2965,0x2945,0x2945,0x2945, +0x3a07,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a28,0x39e7,0x31e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x3a07,0x3a07,0x3a07,0x3a08,0x4248,0x3a07,0x3a28,0x4228,0x3a07,0x4228,0x3a07,0x4228,0x4207,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4208,0x3a08,0x4228,0x4248,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x3a07,0x3a07,0x3a28,0x3a08,0x39e7,0x3a08,0x3a08,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x3a08,0x4228,0x3a08,0x4228,0x3a07,0x4248,0x3a28,0x4228,0x4228,0x3a07,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x4228,0x4248,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4269,0x4248,0x4228,0x4248,0x4a89,0x4a89,0x4a89,0x4aa9,0x4a69,0x4268,0x4a69,0x4aa9,0x4269,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4248,0x3a28,0x4269,0x4248,0x4269,0x4a89,0x4a69,0x4268,0x4269,0x4268,0x4a69,0x4269,0x4269,0x4aaa,0x4248,0x4a69,0x4268,0x4a69,0x4269,0x4269,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4a69,0x4268,0x4248,0x4a89,0x4a8a,0x4a89,0x4a89,0x4aa9,0x4268,0x4a69,0x4a89,0x4aaa,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4248,0x4a89,0x52aa,0x4269,0x4a89,0x4a89,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x528a,0x4a69,0x4a69,0x4269,0x4a69,0x4a69,0x4a69,0x4a69,0x4a68,0x4a69,0x4a69,0x4a69,0x4269,0x4248,0x4249,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a68,0x4a69,0x4a69,0x4249,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a69,0x4a49,0x4248,0x4a69,0x4248,0x4248,0x4228,0x4248,0x4249,0x4228,0x4228,0x4249,0x4248,0x4248,0x4248,0x4228,0x5289,0x4248,0x4248,0x4a48,0x4248,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4208,0x4248,0x4228,0x4228,0x4249,0x4248,0x4249,0x4249,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x3a08,0x4228,0x4248,0x4249,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x4a69,0x4228,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4a49,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x4a69,0x4228,0x4a8a,0x4248,0x4249,0x4a8a,0x4a48,0x4228,0x4248,0x4a69,0x4249,0x4a49,0x4a49,0x4249, +0x31a6,0x31a6,0x39c7,0x31a6,0x31c6,0x31a6,0x39e7,0x39c6,0x39c7,0x31c6,0x39e7,0x39c7,0x31a6,0x39c7,0x31c6,0x39e7,0x39c7,0x31a6,0x39e7,0x31c6,0x31c6,0x31c6,0x31c6,0x39e7,0x3a07,0x39e7,0x31c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39c6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x39c6,0x39c6,0x39e7,0x39e7,0x39e7,0x39c6,0x31a6,0x39c7,0x39c7,0x39c6,0x31c7,0x31c7,0x31c7,0x31c6,0x31a6,0x31c6,0x31c6,0x31a6,0x39e7,0x39e7,0x39c7,0x39e6,0x39e7,0x3a07,0x3a07,0x31c7,0x39c6,0x39c7,0x39e7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x3a07,0x39c6,0x39e7,0x4208,0x39c7,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x31e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4228,0x3a07,0x31e7,0x3a07,0x3a07,0x3a07,0x3a27,0x3a27,0x4268,0x4268,0x4248,0x4248,0x4228,0x3a07,0x3a28,0x3a27,0x3a27,0x4228,0x3a27,0x3a07,0x4248,0x4248,0x3a07,0x4248,0x3a07,0x3a07,0x31c6,0x3a07,0x3a07,0x3a07,0x4248,0x4228,0x4207,0x4207,0x4248,0x3a07,0x4208,0x4207,0x4228,0x4227,0x3a07,0x3a28,0x4228,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x4208,0x4228,0x3a27,0x4228,0x4208,0x4228,0x4228,0x3a27,0x4248,0x3a07,0x3a07,0x4a69,0x4228,0x4227,0x3a27,0x3a07,0x4248,0x3a07,0x4248,0x4228,0x4228,0x4248,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x3a27,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4208,0x39e7,0x4228,0x4207,0x4208,0x4228,0x4228,0x4227,0x3a07,0x4207,0x4a69,0x4228,0x39e7,0x4207,0x39e7,0x3a07,0x4228,0x3a07,0x31c6,0x31c6,0x3a07,0x3a07,0x4208,0x3a07,0x39e7,0x4207,0x3a07,0x3a07,0x3a07,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x4208,0x4208,0x4207,0x39e7,0x4208,0x3a07,0x39e7,0x4228,0x3a07,0x3a07,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4227,0x39e7,0x4227,0x39e7,0x3a07,0x39e7,0x3a07,0x4208,0x4207,0x39e7,0x4228,0x4228,0x39e7,0x39e7,0x4207,0x4208,0x4207,0x4228,0x39e7,0x3a07,0x4228,0x3a07,0x4228,0x4228,0x4208,0x4208,0x4207,0x4228,0x3a07,0x3a07,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4228,0x4248,0x4a49,0x4208,0x4207,0x4208,0x4208,0x4228,0x4228,0x39e7,0x4228,0x4248,0x4248,0x4207,0x4228,0x5aeb,0x4a69,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4a48,0x4a49,0x4248,0x4228,0x4228,0x4a69,0x4a69,0x4a49, +0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x2985,0x2985,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x2965,0x31a6,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2985,0x2965,0x3185,0x2985,0x2965,0x31c6,0x39c6,0x31a6,0x39e7,0x3186,0x31a6,0x31c6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x31c6,0x39e7,0x39e7,0x31a6,0x3185,0x2965,0x31a6,0x31c6,0x31a6,0x31a6,0x2965,0x2985,0x2985,0x3185,0x2985,0x2985,0x3186,0x2144,0x2985,0x2985,0x3186,0x2985,0x31a6,0x31a6,0x2986,0x2965,0x3186,0x2965,0x2965,0x2985,0x31c6,0x2985,0x2985,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x2985,0x3186,0x3186,0x3186,0x2985,0x31a6,0x29a6,0x31c6,0x29a6,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x31a5,0x31a6,0x31c6,0x31c6,0x29a5,0x31c6,0x31c6,0x2986,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x31c6,0x31c6,0x31a6,0x39c6,0x31c6,0x31c6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x31a6,0x31c6,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x31c6,0x39e7,0x39e7,0x31c6,0x31c6,0x2985,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x39e7,0x31c6,0x31a6,0x39e7,0x31a6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a5,0x31c6,0x31c7,0x31a6,0x31c6,0x39c7,0x39e7,0x3185,0x3185,0x4208,0x39e7,0x39e7,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31e7,0x3a07,0x39e7,0x31a6,0x31c6,0x39e7,0x39c6,0x39e7,0x3a07,0x31a6,0x4207,0x39e7,0x31a6,0x39e7,0x31c7,0x31c6,0x39e7,0x31c6,0x31a6,0x39c7,0x39c7,0x31a6,0x2965,0x31c6,0x39c6,0x31a6,0x39e7,0x39e7,0x31a6,0x31c6,0x2986,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x3185,0x2985,0x31c6,0x31a6,0x31a6,0x39c6,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x3185,0x31a6,0x2985,0x3185,0x2965,0x2945,0x2965,0x2145,0x3186,0x3186,0x31a6,0x2985,0x2985,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x3186,0x2965,0x2944,0x2965,0x2965,0x2945,0x2965,0x2965,0x2985,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965,0x2985,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x39c7,0x3186,0x3186,0x3186,0x31a6,0x3186,0x2965,0x2945,0x31a7,0x2985,0x2965,0x2124,0x2965,0x3a07,0x31a6,0x2965,0x31a6,0x31c6,0x3186,0x2945,0x2945,0x3165,0x2945,0x3186,0x2986,0x3186,0x2965,0x2986,0x3186,0x2965,0x3186,0x31a6,0x31a6,0x3186, +0x52cb,0x52aa,0x52ca,0x5aca,0x4a8a,0x4a89,0x52ca,0x52ea,0x52aa,0x52aa,0x528a,0x5acb,0x52aa,0x5289,0x4a89,0x52aa,0x4a69,0x4a89,0x52ca,0x4a89,0x5289,0x4a89,0x4a69,0x4a89,0x52aa,0x4228,0x4a89,0x4a89,0x4aaa,0x52ea,0x4aa9,0x52aa,0x52a9,0x52ea,0x4aa9,0x52ea,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52ea,0x5b0b,0x5b0b,0x52ca,0x52ea,0x5aeb,0x634c,0x634c,0x52ca,0x5b0b,0x632c,0x632c,0x5aeb,0x52ea,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x4aa9,0x4aa9,0x52ca,0x52ca,0x52ca,0x5b0b,0x52ca,0x52ca,0x52eb,0x4aaa,0x52aa,0x52ca,0x52ca,0x52eb,0x52aa,0x5aea,0x5aeb,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x5b0b,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52eb,0x52ca,0x52aa,0x52eb,0x52eb,0x5b0b,0x52ca,0x5aeb,0x632c,0x5b0b,0x52ca,0x52eb,0x5b2c,0x5b0b,0x52ea,0x5b2b,0x52ca,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b4c,0x530b,0x5b0b,0x5b0b,0x634c,0x5b2c,0x634c,0x5b0b,0x5aeb,0x52eb,0x5b2c,0x5b0b,0x52ea,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52ea,0x5aeb,0x52eb,0x52eb,0x52eb,0x52eb,0x5b0b,0x5b2c,0x5b2b,0x632c,0x5b0b,0x634c,0x5b0b,0x5b0b,0x530b,0x52ea,0x5b2b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b2b,0x634c,0x5b0b,0x52ca,0x5aeb,0x5b2b,0x5b4c,0x530b,0x5b0b,0x632c,0x632c,0x5b0b,0x634c,0x6bad,0x52eb,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x52eb,0x5b2c,0x5b0b,0x634c,0x632c,0x6b6d,0x632c,0x5b0b,0x632c,0x6b6d,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x5aea,0x632b,0x634c,0x5b2b,0x634c,0x634c,0x632b,0x634c,0x638d,0x5b0b,0x5aeb,0x5b2c,0x5b2c,0x5b0b,0x634c,0x5b2c,0x6b6d,0x634c,0x5b0b,0x52eb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x634c,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x5aeb,0x5aeb,0x52aa,0x5b0b,0x52cb,0x5b0b,0x5aeb,0x52aa,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x52ca,0x52aa,0x5aeb,0x5acb,0x52ca,0x5aeb,0x52ca,0x5aeb,0x52ca,0x5aeb,0x528a,0x5aeb,0x5aeb,0x4a8a,0x52aa,0x52ca,0x52aa,0x528a,0x52aa,0x5289,0x4a89,0x4a89,0x52aa,0x52aa,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x5aca,0x52ca,0x52aa,0x4a89,0x52aa,0x52aa,0x4a89,0x5289,0x5aeb,0x4a69,0x4a89,0x52aa,0x52aa,0x52aa,0x528a,0x4a69,0x528a,0x5289,0x528a,0x4a69,0x528a,0x4a89,0x4a89,0x4a69,0x4a69,0x4a8a,0x4a69,0x52ca,0x4a69,0x4a49,0x4a49,0x4248,0x4208,0x4248,0x4a49,0x4a49,0x4207,0x4228,0x4a49,0x4208,0x4248,0x4a49,0x4228,0x4228,0x4208,0x4228,0x4208,0x3a07,0x4228,0x4248,0x3a08,0x31c7,0x4228,0x4228,0x4a49,0x39e7,0x4208, +0x52ca,0x52ca,0x5acb,0x632c,0x52eb,0x52aa,0x52ca,0x5aeb,0x52ca,0x52ea,0x5b0b,0x5aeb,0x52ca,0x52ca,0x4aaa,0x52aa,0x52aa,0x52aa,0x4a89,0x52aa,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x52aa,0x52aa,0x52ca,0x52ea,0x52ca,0x4a89,0x4aa9,0x52aa,0x52ca,0x52ea,0x530b,0x5b2b,0x634c,0x6b8c,0x636c,0x5b0b,0x636c,0x5b2b,0x5aeb,0x632c,0x52ea,0x5b2b,0x52ca,0x52ea,0x5b0b,0x5b0b,0x634c,0x634b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x4aaa,0x4aa9,0x52aa,0x52ca,0x52ca,0x4a89,0x52ea,0x52ea,0x52ca,0x4a89,0x52ea,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x52eb,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b4b,0x5b2c,0x5b0b,0x52eb,0x52ca,0x52ea,0x52ea,0x530b,0x52eb,0x52ca,0x52aa,0x530b,0x5b2c,0x5b0b,0x52ea,0x5b2b,0x5b4c,0x5b0b,0x5b0b,0x634c,0x634c,0x5b2b,0x5b0b,0x530b,0x530b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x634c,0x5b4c,0x5b2b,0x638d,0x634c,0x5b2b,0x636c,0x5b0b,0x636c,0x634c,0x636c,0x5b4b,0x5b2b,0x636c,0x5b4b,0x634c,0x5b2b,0x52ea,0x5b0b,0x5b2b,0x530b,0x5b0b,0x52ea,0x5b0b,0x5aea,0x52ea,0x52ea,0x5b2b,0x636d,0x5b2b,0x5b2c,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x530b,0x5b0b,0x634c,0x5b2b,0x5b4c,0x530b,0x5b2b,0x636c,0x632c,0x636c,0x5b2b,0x5b2c,0x5b0b,0x6b8d,0x73ce,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b2c,0x5b4c,0x5b4c,0x5b4c,0x636c,0x636c,0x634c,0x5b2b,0x6bad,0x6b8d,0x73ce,0x6b8d,0x5b2b,0x632c,0x5b2b,0x634c,0x634c,0x634c,0x636c,0x634c,0x636c,0x5b2b,0x634c,0x6b8d,0x632b,0x636c,0x6b8d,0x634c,0x632c,0x634c,0x632c,0x634c,0x634c,0x634c,0x636c,0x634c,0x6b6d,0x634c,0x632c,0x632c,0x5b0b,0x5b0b,0x632c,0x52cb,0x5aeb,0x5b2c,0x52eb,0x5b0b,0x632c,0x5aeb,0x632c,0x5b4c,0x634c,0x52eb,0x52ca,0x5aeb,0x52eb,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x52ea,0x632c,0x5aeb,0x630b,0x5b0b,0x5aeb,0x5aeb,0x52aa,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x630b,0x52eb,0x52ca,0x5b0b,0x5b0b,0x5acb,0x5aeb,0x5aeb,0x5aca,0x52ca,0x6b6c,0x632c,0x5acb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x632c,0x52ca,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x52eb,0x52eb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x52ca,0x52aa,0x528a,0x52ca,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x528a,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x52cb,0x52aa,0x5aeb,0x52ca,0x52aa,0x52aa,0x52aa,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x52cb,0x52aa,0x52aa,0x5aeb,0x52cb,0x5b0b,0x52aa,0x5aeb, +0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52ca,0x5b0b,0x52ea,0x52aa,0x5aeb,0x52ea,0x52ca,0x5aea,0x52ca,0x52aa,0x52aa,0x52aa,0x4aaa,0x4a69,0x4a69,0x52a9,0x52aa,0x4268,0x4a69,0x4a69,0x4a69,0x52aa,0x4a89,0x4aa9,0x4a89,0x4a69,0x52ca,0x4269,0x4a89,0x52aa,0x52aa,0x52ca,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5aeb,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x636c,0x5b0b,0x52ea,0x634b,0x5b2b,0x632b,0x634b,0x5b2b,0x5b0b,0x5b0b,0x5aea,0x52ca,0x52aa,0x5aea,0x52ea,0x52ca,0x52ca,0x52ea,0x52ca,0x52aa,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x5b0b,0x5b0b,0x5aea,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x52ca,0x52ea,0x5b2b,0x5b2b,0x52ea,0x52eb,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b0b,0x530b,0x5b0b,0x634c,0x5b2b,0x530b,0x52ea,0x530b,0x5b0b,0x5b0b,0x52ca,0x52eb,0x634c,0x5b2b,0x5b0b,0x632c,0x5b0b,0x636c,0x5b4c,0x634c,0x632c,0x634c,0x5b2b,0x636c,0x5b0b,0x5b0b,0x5b4c,0x5b2b,0x634c,0x5b2b,0x5b4c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x530b,0x5b2b,0x634c,0x5b2b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ea,0x530b,0x5b2b,0x5b2b,0x52ca,0x5b2b,0x5b4c,0x5b2c,0x52ea,0x5b2b,0x5b2b,0x530b,0x5b2b,0x636c,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b2b,0x634c,0x5b0b,0x6b8d,0x6b6c,0x5b0b,0x634c,0x5b4c,0x5b4c,0x5b0b,0x634c,0x634c,0x636c,0x634c,0x634c,0x5b4c,0x636c,0x634c,0x632c,0x634c,0x636c,0x634c,0x636c,0x6b6d,0x632b,0x634c,0x634c,0x634c,0x634c,0x636c,0x634c,0x636c,0x634c,0x634c,0x634c,0x634c,0x632c,0x634c,0x636d,0x634c,0x5b2c,0x634c,0x638d,0x634c,0x632c,0x634c,0x634c,0x6b4c,0x6b6c,0x6b6d,0x634c,0x634c,0x6b6c,0x634c,0x632b,0x632c,0x5b2c,0x5b0b,0x5aeb,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x632c,0x632b,0x5b0b,0x632b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x632c,0x632c,0x632c,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5aca,0x52aa,0x5aeb,0x52eb,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5aca,0x5aeb,0x632b,0x5aeb,0x5aeb,0x5aeb,0x5aca,0x5b0b,0x634c,0x5aeb,0x5aeb,0x630b,0x5aeb,0x52ca,0x5aeb,0x5aea,0x5b0b,0x5b2b,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aca,0x632c,0x5aeb,0x5aca,0x632c,0x5b0b,0x5aeb,0x52aa,0x52ca,0x52ca,0x52aa,0x5aeb,0x5b0b,0x52aa,0x52aa,0x5aca,0x5aeb,0x5aeb,0x52ca,0x632c,0x52aa,0x5aeb,0x52aa,0x528a,0x630b,0x630b,0x52aa,0x5aca,0x632c,0x52aa,0x52aa,0x5aeb, +0x5aeb,0x52aa,0x528a,0x5aca,0x52cb,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52aa,0x52ca,0x5aea,0x52ca,0x52aa,0x52aa,0x52ca,0x4aaa,0x4a69,0x4aaa,0x5aca,0x4a69,0x4248,0x4a69,0x4a69,0x4228,0x4228,0x4269,0x4a68,0x4a48,0x52aa,0x4a69,0x4248,0x4a69,0x52aa,0x5b0b,0x5aca,0x52ca,0x634c,0x632c,0x634c,0x632b,0x4a89,0x5aeb,0x52ea,0x52ca,0x5b0b,0x5aeb,0x5b0b,0x634c,0x636c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5aea,0x5aea,0x5b0b,0x5b0b,0x4aaa,0x52ca,0x52ca,0x5aea,0x52ea,0x52ca,0x52ea,0x5aea,0x52ca,0x5aeb,0x52ea,0x52ea,0x52eb,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x632c,0x6b6c,0x5b2b,0x5aea,0x52eb,0x52eb,0x5b0b,0x634b,0x634b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52eb,0x52eb,0x5b2c,0x634c,0x5b2b,0x632b,0x634c,0x5b0b,0x636c,0x5b4c,0x5b2b,0x5b0b,0x5b4c,0x636c,0x634c,0x638d,0x634c,0x634c,0x636c,0x5b2b,0x636c,0x636c,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b4c,0x5b2b,0x636c,0x5b2c,0x5aeb,0x634c,0x636c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x636c,0x634c,0x634c,0x634c,0x530b,0x5b0b,0x5b2c,0x5b2b,0x5b2b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x634c,0x634c,0x5b2b,0x634c,0x636c,0x5b0b,0x5b2c,0x5b2b,0x636c,0x636c,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5b2c,0x634c,0x636c,0x6b6d,0x5b0b,0x632c,0x5b2c,0x632c,0x5b2c,0x632c,0x634c,0x632c,0x632c,0x5b2b,0x5b2b,0x5aeb,0x632b,0x5b0b,0x5b0b,0x5b2c,0x6b8d,0x632b,0x634c,0x632c,0x632c,0x632c,0x634c,0x634c,0x634c,0x636c,0x634c,0x634c,0x6b4c,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b2c,0x632c,0x5aeb,0x634c,0x632c,0x634c,0x632c,0x5b0b,0x632c,0x634c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b2c,0x630b,0x630b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x630b,0x630b,0x634c,0x630b,0x5aeb,0x5aca,0x52aa,0x5aeb,0x5aeb,0x5b2c,0x52ca,0x5aeb,0x52aa,0x52aa,0x5acb,0x52aa,0x52ca,0x52ca,0x52ca,0x528a,0x5aeb,0x5aca,0x5b0b,0x5aeb,0x5aca,0x52aa,0x5aeb,0x5aeb,0x5aca,0x52ca,0x52ca,0x5b0b,0x52aa,0x52aa,0x5aeb,0x52ca,0x52ca,0x52ca,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5acb,0x5aca,0x52aa,0x5aeb,0x52ca,0x52ca,0x52aa,0x5aeb,0x636d,0x5aeb,0x52aa,0x5aeb,0x5aeb,0x5b0b,0x6b4d,0x52aa,0x5aca,0x5aca,0x5acb,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52aa,0x528a, +0x634c,0x634c,0x5b2c,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x5b2b,0x5b2c,0x6b8d,0x632c,0x5b0b,0x5b0b,0x5aeb,0x5aea,0x5b0b,0x634c,0x5b0b,0x4aca,0x632c,0x5aea,0x5aeb,0x5b0b,0x5b2b,0x4aa9,0x4a89,0x4aaa,0x52ca,0x52ca,0x530b,0x52ea,0x5aeb,0x5b0b,0x52aa,0x4a89,0x52ca,0x52ca,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x632b,0x5b0b,0x530b,0x52ea,0x530b,0x5b0b,0x5b0b,0x636c,0x636c,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52aa,0x5b0b,0x636c,0x5b0b,0x5b2c,0x52ea,0x52eb,0x52ea,0x530b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x634c,0x52ea,0x5b4c,0x634c,0x4aca,0x5b4b,0x530a,0x52ea,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2c,0x52ca,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x52ca,0x5b4b,0x52eb,0x5b2c,0x5b0b,0x52eb,0x5b4c,0x5b2b,0x530b,0x52ea,0x5b0b,0x530b,0x52ea,0x5b2b,0x5b2b,0x4aca,0x52ca,0x5b2b,0x5b0b,0x632c,0x632b,0x52ca,0x5b0b,0x52ca,0x52ea,0x5b2c,0x52eb,0x52ea,0x52ea,0x530b,0x638d,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x530b,0x530b,0x5b2b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x5b4c,0x5b2c,0x52eb,0x634c,0x5b0b,0x5b0b,0x636c,0x5b2b,0x5b2b,0x634c,0x5b2c,0x5b2b,0x5b2b,0x5b0b,0x530b,0x5b0b,0x632c,0x5b4c,0x530b,0x52ea,0x634c,0x632c,0x52ea,0x52ea,0x5b2c,0x632c,0x5b2b,0x5b0b,0x5b2c,0x5b2b,0x634c,0x6b6c,0x636c,0x5b0b,0x634c,0x6b6c,0x636c,0x530b,0x5b2c,0x634c,0x638c,0x632c,0x6bad,0x636c,0x6b8d,0x636c,0x634c,0x636c,0x634c,0x636c,0x5b4c,0x5b2b,0x6b8d,0x636d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x634c,0x636d,0x638d,0x6b8d,0x638d,0x6b8d,0x7bee,0x73ce,0x73ee,0x73ee,0x6b8d,0x73ae,0x634d,0x636d,0x634c,0x634c,0x632c,0x636c,0x6b8d,0x5b2b,0x5b2b,0x634c,0x6b8d,0x6b6d,0x73ae,0x6b6d,0x632c,0x634c,0x6b8d,0x73ae,0x634c,0x634c,0x636d,0x634c,0x632c,0x634c,0x6b6d,0x6b6d,0x6b6d,0x636d,0x634c,0x73ce,0x6b6d,0x634c,0x634c,0x632b,0x5b0b,0x630b,0x738d,0x6b4c,0x6b6d,0x52aa,0x632b,0x630b,0x634c,0x6b6d,0x630b,0x5aeb,0x632c,0x52eb,0x5aeb,0x5aeb,0x630b,0x5b0b,0x5aeb,0x5aeb,0x632c,0x632c,0x632b,0x632c,0x5aeb,0x632c,0x632c,0x52ca,0x5aeb,0x5aeb,0x630c,0x632c,0x632c,0x52aa,0x52aa,0x5aeb,0x52ca,0x5b0b,0x52aa,0x632c,0x6b6d,0x5b0c,0x5aeb,0x5aeb,0x52aa,0x528a,0x52cb,0x5aeb,0x52cb,0x4a89,0x52aa,0x6b4d,0x634d,0x5aeb,0x5b0c,0x52cb,0x4a6a,0x52ab, +0x6bce,0x740e,0x740e,0x740f,0x73ef,0x73ee,0x73ce,0x73ee,0x6bce,0x73ee,0x73ee,0x73ce,0x73ee,0x73ef,0x73ce,0x6b8d,0x73ce,0x73ee,0x6bce,0x6bad,0x6bad,0x6b8d,0x6b8d,0x6bae,0x6b8d,0x638d,0x636d,0x636d,0x636d,0x5b2b,0x636c,0x6bce,0x5b4c,0x5b4c,0x634c,0x636c,0x6b8d,0x73ce,0x638d,0x636c,0x638d,0x636d,0x5b2b,0x6bad,0x636c,0x530b,0x634c,0x5b2c,0x5b2c,0x5b2c,0x52ea,0x5b2b,0x5b0b,0x5b2c,0x5b4c,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x52eb,0x530b,0x52ea,0x52ea,0x52ea,0x5b0b,0x52ca,0x5b0b,0x530b,0x4aaa,0x52ea,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x52ca,0x4aaa,0x4aaa,0x52ca,0x52ca,0x52ca,0x4289,0x52eb,0x4a69,0x52aa,0x4aa9,0x4a89,0x52ca,0x52ca,0x52ea,0x5b2b,0x4aa9,0x52ea,0x52ca,0x5b2b,0x530b,0x4a69,0x4a89,0x52aa,0x4a89,0x4aaa,0x52ca,0x52ca,0x4269,0x4a89,0x4a69,0x4248,0x4248,0x4a89,0x52ca,0x4a69,0x52ca,0x52ca,0x4ac9,0x4ac9,0x52ca,0x52ca,0x4269,0x4a89,0x4289,0x4a69,0x4a69,0x4a89,0x52ca,0x5aeb,0x52ca,0x4aca,0x4a89,0x4269,0x4a69,0x4228,0x5b0b,0x52ea,0x4aa9,0x4aaa,0x52ca,0x52eb,0x4269,0x4269,0x4268,0x4248,0x52ca,0x52aa,0x4a89,0x52eb,0x4aaa,0x4aaa,0x4a89,0x52ca,0x52ca,0x52ca,0x5b0b,0x4aa9,0x52eb,0x4aa9,0x4a89,0x5aeb,0x4aaa,0x52ea,0x4a89,0x4a8a,0x52ca,0x5b0c,0x5aeb,0x52ca,0x634c,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x4a89,0x4a69,0x52eb,0x5b0b,0x52ca,0x634c,0x634c,0x5b0b,0x52eb,0x52ca,0x5aeb,0x4289,0x5b2c,0x5aeb,0x5b0b,0x5aeb,0x5b2b,0x52eb,0x634c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x52ca,0x5b2c,0x6b6d,0x5aeb,0x5b0b,0x5b2b,0x6b6d,0x5aeb,0x5b2b,0x636c,0x6b6d,0x6b6d,0x73ae,0x6b8d,0x636d,0x5b2c,0x634c,0x73ef,0x6b6d,0x6b6d,0x634c,0x6b8d,0x6b8d,0x6bad,0x73ce,0x6b8d,0x7c2f,0x6b8d,0x73ce,0x73ef,0x6bad,0x8450,0x73ef,0x73ce,0x73ef,0x73ce,0x7c0f,0x7bef,0x6bae,0x6b6d,0x6b6d,0x7bef,0x7c0f,0x7c0f,0x73ee,0x73ce,0x73ef,0x73ef,0x7bef,0x73ce,0x636c,0x7c0f,0x94b1,0x8c50,0x842f,0x7bef,0x8c91,0x7c0f,0x7bee,0x8450,0x7c0f,0x8450,0x8cb1,0x94d2,0x94b1,0x9cd2,0x94b2,0x8c71,0x8c51,0x8c71,0x8c71,0x9cd2,0x94b2,0x94b1,0x8c71,0x94b2,0x8c50,0x8450,0x8c71,0x8c91,0x8c71,0x8450,0x8430,0x8450,0x7c0f,0x8430,0x8c71,0x8c71,0x7c10,0x8c91,0x94b2,0x94d2,0x9cf3,0x8c91,0x9cd3,0x8430,0x840f,0x94b2,0x9d14,0x8c91,0x8450,0x8cb1,0xa534,0x8450,0x8c71,0x9cd2,0x94b2,0x9492,0x8c71,0xa534,0x94b2,0x94b2,0x8451,0x8410,0x8c91,0x9d13,0x8451,0x8430,0x94d2,0x8c51,0x8430,0x8c91,0x7bef,0x94b2,0x94d2,0x8c71,0x8450,0x8430, +0x31e7,0x31c6,0x31c6,0x31c7,0x31c6,0x31c6,0x31c6,0x31c6,0x3a07,0x3a07,0x31c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x31c6,0x31a6,0x31a6,0x39e7,0x2985,0x31c6,0x31c6,0x31a6,0x2144,0x31c6,0x31a6,0x31c7,0x31c6,0x2965,0x2986,0x31c6,0x2965,0x2986,0x2985,0x31c6,0x31a6,0x39c6,0x2985,0x2986,0x2986,0x2985,0x2985,0x2965,0x31a6,0x2965,0x2965,0x2144,0x2124,0x3186,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x2104,0x2986,0x2985,0x2124,0x2124,0x2124,0x2965,0x2144,0x2103,0x2144,0x2104,0x2104,0x18e3,0x2145,0x2144,0x2104,0x2124,0x2124,0x2124,0x1903,0x18e3,0x2104,0x2144,0x2124,0x2144,0x18c3,0x1903,0x1903,0x2104,0x18e3,0x10c2,0x2124,0x2104,0x1903,0x2144,0x2104,0x2144,0x2124,0x2104,0x2965,0x2124,0x2945,0x2965,0x2165,0x2144,0x2165,0x2104,0x2104,0x2124,0x2104,0x2945,0x2945,0x18e3,0x2945,0x2124,0x2985,0x2124,0x18e3,0x2985,0x18e3,0x1903,0x2145,0x1903,0x1903,0x2144,0x2944,0x2144,0x2104,0x2104,0x2144,0x2144,0x1903,0x18c3,0x2145,0x2944,0x2124,0x2124,0x2124,0x18e3,0x2124,0x1903,0x2103,0x2104,0x1903,0x2124,0x2965,0x2965,0x2965,0x2144,0x18c2,0x2965,0x2945,0x2104,0x2124,0x2965,0x2965,0x2124,0x18e3,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2965,0x2144,0x2965,0x2144,0x2985,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x2965,0x2145,0x2124,0x2965,0x2945,0x3185,0x2124,0x2985,0x2945,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965,0x2124,0x39c7,0x2144,0x3186,0x2965,0x2945,0x2124,0x2945,0x2144,0x2945,0x2124,0x2124,0x2144,0x2965,0x2965,0x2985,0x2124,0x2945,0x2124,0x39e7,0x2124,0x2124,0x2104,0x1904,0x2945,0x2124,0x31c6,0x2945,0x3186,0x3186,0x2985,0x2965,0x2985,0x31a6,0x2945,0x2104,0x2965,0x2124,0x31a6,0x31a6,0x31a6,0x2124,0x31c7,0x39e7,0x2965,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31c6,0x31c6,0x2985,0x31a6,0x31a6,0x3185,0x39c6,0x39c6,0x39e7,0x31a6,0x31c6,0x39e7,0x31a6,0x31e7,0x4248,0x4a48,0x4a49,0x39e7,0x4207,0x4a49,0x4a49,0x52aa,0x52aa,0x52aa,0x52aa,0x632b,0x52ca,0x6b6d,0x632c,0x4a69,0x4228,0x4a89,0x52cb,0x52ca,0x52aa,0x5aeb,0x528a,0x52cb,0x52ca,0x5b0c,0x52ca,0x5b0b,0x5b0b,0x630c,0x6b4d,0x5acb,0x73ae,0x528a,0x5aeb,0x632c,0x632c,0x6b6d,0x5aeb,0x634c,0x7bef,0x7bef,0x73ae,0x7bef,0x840f,0x7bcf,0x7bce,0x840f,0x7bcf,0x5aca,0x738e,0x6b6d,0x6b8d,0x73ce,0x6b4c,0x73ae,0x8430,0x73ae,0x7bce,0x73ae,0x738e,0x9491,0x8430,0x7bef,0x8c50,0x7bee, +0x0840,0x0861,0x1082,0x0861,0x1082,0x0861,0x0841,0x0821,0x0020,0x0841,0x0861,0x0841,0x0000,0x1082,0x0841,0x0861,0x0840,0x0862,0x0861,0x0821,0x0841,0x0841,0x0820,0x0841,0x10a2,0x0821,0x1062,0x0861,0x0840,0x1082,0x10a2,0x0841,0x0861,0x0861,0x1082,0x0841,0x0841,0x0820,0x0000,0x0841,0x0861,0x1082,0x1082,0x1062,0x0820,0x0861,0x1061,0x1082,0x0861,0x0841,0x0861,0x1081,0x0861,0x1061,0x0861,0x0840,0x1082,0x1061,0x0840,0x0861,0x0861,0x1061,0x0861,0x0861,0x1081,0x10a2,0x0861,0x10a2,0x18c2,0x10a2,0x1081,0x10a2,0x10a2,0x0861,0x1082,0x1082,0x10c2,0x1082,0x1082,0x0861,0x0840,0x0841,0x10a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x0861,0x0861,0x1082,0x1061,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0040,0x0861,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x0881,0x0861,0x10a2,0x0840,0x0840,0x0841,0x0841,0x1082,0x0841,0x1081,0x0861,0x0861,0x1082,0x1081,0x0840,0x0841,0x0861,0x0881,0x10a2,0x1082,0x0861,0x0861,0x1082,0x0861,0x0881,0x0881,0x0861,0x1082,0x1062,0x0841,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x1062,0x0861,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x1062,0x0841,0x0841,0x1082,0x0861,0x0841,0x0861,0x1081,0x1082,0x0862,0x0861,0x0861,0x1081,0x0861,0x0840,0x0861,0x0841,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1081,0x10a2,0x1082,0x0841,0x10a2,0x0841,0x10a2,0x10a2,0x0000,0x0841,0x10a2,0x0861,0x0881,0x1081,0x1082,0x0821,0x10a2,0x0862,0x0861,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0840,0x18c2,0x1082,0x1082,0x0841,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x0861,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18c3,0x10a2,0x1082,0x1081,0x18c3,0x10a2,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0861,0x1082,0x1082,0x0861,0x10a2,0x0841,0x0882,0x0021,0x0862,0x0862,0x0821,0x10a2,0x0841,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x39c7,0x39e7,0x39e7,0x4208,0x4208,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x4228,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x4228,0x3a07,0x31c6,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x4228,0x39e7,0x4228,0x4248,0x4228,0x4a69,0x4249,0x4248,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4a69,0x4228,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x3a08,0x4248,0x3a07,0x4228,0x39e7,0x3a07,0x3a28,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x4208,0x4207,0x3a07,0x3a07,0x3a27,0x39e7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x39e7,0x3a07,0x4248,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x4228,0x39e7,0x3a28,0x3a07,0x31e7,0x4248,0x4268,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x4a48,0x3a07,0x4248,0x4248,0x4248,0x4248,0x39e7,0x4248,0x4228,0x4208,0x3a08,0x3a07,0x3a28,0x4248,0x3a28,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x4228,0x4249,0x4228,0x4248,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4228,0x4228,0x4269,0x4a49,0x4a48,0x4a48,0x4248,0x4228,0x4228,0x4208,0x4208,0x4228,0x3a07,0x4248,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4a68,0x4a49,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a48,0x4208,0x4228,0x4248,0x4248,0x5289,0x4a49,0x4228,0x4208,0x4228,0x4228,0x4228,0x3a07,0x4207,0x4208,0x4208,0x4208,0x4208,0x3a08,0x3a07,0x39e7,0x4208,0x4228,0x4208,0x3a07,0x4208,0x4228,0x4207,0x3a07,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4208,0x3a07,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a6,0x31a6,0x39c7,0x3186,0x3186,0x3186, +0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a28,0x3a28,0x3a28,0x4228,0x3a07,0x4228,0x4228,0x4248,0x3a07,0x3a28,0x4228,0x4228,0x4228,0x4228,0x3a27,0x4228,0x4a69,0x4228,0x3a07,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4228,0x4228,0x4a69,0x4268,0x4268,0x4a69,0x4269,0x4269,0x4a69,0x4228,0x4248,0x4248,0x4248,0x4aaa,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4269,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4269,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x3a28,0x4268,0x4248,0x4248,0x4a89,0x3a28,0x3a28,0x4248,0x4a89,0x4a69,0x4a69,0x4a89,0x4268,0x4aa9,0x52ca,0x4aa9,0x4a89,0x4a89,0x4248,0x4a69,0x4a89,0x4248,0x4248,0x4269,0x4a89,0x52ca,0x4a89,0x4228,0x4a89,0x4a89,0x4268,0x4248,0x4268,0x4a89,0x4aa9,0x52aa,0x4268,0x4a89,0x4269,0x4268,0x4a89,0x4289,0x4268,0x4aca,0x4a89,0x4269,0x4269,0x4a69,0x4a69,0x4a69,0x4248,0x4269,0x4a89,0x4269,0x4a89,0x4268,0x4aa9,0x4a89,0x4aaa,0x4a89,0x4aa9,0x4aa9,0x4a69,0x4aaa,0x4269,0x4248,0x4a89,0x4a89,0x4a89,0x4a89,0x4248,0x4aaa,0x52ca,0x4268,0x4269,0x4a89,0x52ca,0x4a69,0x4aaa,0x4a89,0x4269,0x52ca,0x4a69,0x4248,0x4aa9,0x4ac9,0x4aa9,0x4a89,0x52ca,0x52ca,0x4a89,0x4a89,0x4a89,0x4aaa,0x4a89,0x530b,0x4a89,0x4268,0x4269,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x4269,0x4a89,0x4aa9,0x4a89,0x4a69,0x4a89,0x4a89,0x4269,0x4a69,0x4269,0x4aa9,0x4a89,0x4248,0x4a89,0x4a69,0x4269,0x4a8a,0x4a89,0x4248,0x5aeb,0x4aaa,0x4269,0x4a69,0x4a69,0x4269,0x4a69,0x4a89,0x4269,0x4269,0x4a69,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4a69,0x4a89,0x4269,0x4a89,0x4a89,0x4aaa,0x4a69,0x4a89,0x4a89,0x4269,0x4a69,0x4a89,0x4249,0x4248,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x52eb,0x4a69,0x4a89,0x4248,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4a89,0x4a8a,0x4248,0x4a69,0x4248,0x4248,0x4a49,0x4a69,0x4a49,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a89,0x52aa,0x4a89,0x4a69,0x4a89,0x4228,0x4249,0x4a69,0x4228,0x4228,0x4228,0x4248,0x4a69,0x4a49,0x4228,0x4228,0x4248,0x4208,0x4228,0x4228,0x4a48,0x4a69,0x4a69,0x4a49,0x4a69,0x4a48,0x4228,0x4228,0x4a49,0x4249,0x4a49,0x4a49,0x4248,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x4a89,0x4249,0x4a49,0x4228,0x4228,0x4a69,0x4a69,0x4a49,0x4a48,0x4a69,0x4a49, +0x3a07,0x4208,0x4207,0x4228,0x4a69,0x4228,0x3a07,0x4a69,0x4208,0x39e7,0x4228,0x4208,0x4208,0x4a69,0x4248,0x52a9,0x3a07,0x4208,0x4228,0x3a07,0x39e7,0x4a69,0x4248,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4a68,0x4207,0x39e7,0x4208,0x39e7,0x4a89,0x4228,0x4228,0x4a89,0x4a69,0x4228,0x4228,0x4228,0x4248,0x4227,0x4248,0x4a89,0x3a07,0x52aa,0x4a69,0x39e7,0x4228,0x4228,0x4228,0x4248,0x4228,0x4248,0x4248,0x4a49,0x4228,0x3a07,0x4a69,0x4228,0x3a08,0x4228,0x4248,0x52aa,0x4227,0x4228,0x4a49,0x4a69,0x4248,0x3a07,0x39e7,0x39e7,0x4228,0x4a68,0x52aa,0x4a89,0x4a69,0x4a69,0x4248,0x4248,0x4228,0x3a07,0x4a89,0x4a89,0x4227,0x4248,0x3a07,0x4248,0x4a89,0x4268,0x4a68,0x4a69,0x4a89,0x4207,0x4a69,0x4aa9,0x4248,0x4268,0x4a89,0x4aaa,0x4249,0x4269,0x4a69,0x4a69,0x4248,0x4a89,0x4a69,0x4a68,0x4a89,0x4268,0x4248,0x4a69,0x3a07,0x4a69,0x4248,0x4248,0x4228,0x4a89,0x4268,0x52a9,0x4a69,0x4aa9,0x52ca,0x4a69,0x4a89,0x4268,0x4228,0x4269,0x4aaa,0x4a89,0x4a89,0x4a89,0x4a69,0x4248,0x4a89,0x4a68,0x4a69,0x4a89,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4aaa,0x52ca,0x4aa9,0x4248,0x52aa,0x4aa9,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4248,0x4a89,0x52aa,0x4a89,0x4268,0x4a89,0x4a69,0x4a69,0x4a89,0x4a89,0x4248,0x4249,0x4269,0x4228,0x4248,0x4269,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x3a28,0x4228,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4228,0x3a08,0x4a69,0x4268,0x4228,0x4228,0x4228,0x4269,0x4228,0x4228,0x4208,0x4a69,0x4aaa,0x4228,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4228,0x4228,0x4208,0x4228,0x4207,0x4228,0x4228,0x4248,0x4228,0x4228,0x4208,0x39e7,0x4a69,0x52aa,0x4228,0x4248,0x528a,0x3a07,0x4a48,0x52a9,0x4208,0x4a89,0x52aa,0x4248,0x4248,0x3a08,0x3a07,0x4228,0x4248,0x4207,0x4228,0x4228,0x4228,0x4208,0x4208,0x3a08,0x4208,0x39e7,0x4208,0x4248,0x4248,0x4a69,0x4a48,0x3a07,0x4a48,0x4a49,0x4a48,0x4248,0x4228,0x4228,0x4a69,0x4248,0x4a69,0x4249,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4a69,0x4a89,0x4248,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a89,0x4228,0x4a89,0x5289,0x4a69, +0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x31a6,0x39e7,0x4207,0x4228,0x3a07,0x4228,0x3a07,0x4207,0x39e6,0x3a07,0x4248,0x39e7,0x39e7,0x3a27,0x39e7,0x39e7,0x4228,0x3a07,0x4228,0x3a07,0x2985,0x31c6,0x3a07,0x4228,0x4248,0x3a07,0x4228,0x4a69,0x3a07,0x4a69,0x4a89,0x4248,0x3a27,0x3a07,0x4228,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x4228,0x4248,0x4207,0x31c6,0x3a07,0x4228,0x3a27,0x3a07,0x4228,0x4227,0x4228,0x3a07,0x4228,0x4a48,0x3a07,0x4248,0x4a68,0x39e7,0x39e7,0x4228,0x4248,0x3a27,0x3a07,0x39e6,0x39e7,0x4228,0x39e7,0x4248,0x4248,0x4248,0x3a27,0x4a69,0x4268,0x4248,0x4a68,0x31e6,0x4227,0x4a69,0x4248,0x4248,0x3a07,0x4a69,0x3a27,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x4268,0x3a07,0x39e7,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x4248,0x3a27,0x3a07,0x4228,0x3a28,0x3a27,0x3a07,0x3a07,0x3a07,0x4248,0x3a07,0x3a07,0x39e7,0x4248,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x4268,0x3a07,0x3a28,0x3a27,0x4248,0x4228,0x3a07,0x4248,0x3a07,0x3a07,0x4227,0x4248,0x4248,0x3a27,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4227,0x4248,0x3a07,0x3a07,0x3a28,0x4248,0x4248,0x4228,0x3a07,0x39e7,0x4248,0x3a27,0x3a27,0x3a07,0x3a27,0x4227,0x4247,0x4248,0x3a07,0x31c6,0x4228,0x31e6,0x3a07,0x3a07,0x39e7,0x4228,0x4227,0x3a07,0x4248,0x3a28,0x4228,0x4228,0x39e7,0x4228,0x39e7,0x4228,0x3a07,0x4208,0x3a07,0x3a28,0x3a07,0x4228,0x4227,0x39e7,0x4228,0x3a07,0x3a07,0x4227,0x4228,0x3a07,0x3a07,0x3a07,0x3a28,0x4228,0x3a28,0x39e7,0x4208,0x3a07,0x4228,0x39e7,0x3a07,0x4228,0x4248,0x4248,0x31a6,0x4207,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x3a07,0x4228,0x31c6,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x31a6,0x31c6,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x31c6,0x39e7,0x3a07,0x3a07,0x39e7,0x31c7,0x31c7,0x39e7,0x31c7,0x4208,0x39e7,0x39c7,0x31a6,0x39c7,0x3a07,0x39e7,0x39e7,0x39c6,0x31a6,0x39e7,0x31a6,0x39e7,0x4228,0x3a07,0x39c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c6,0x39e7,0x31a6,0x2985,0x2985,0x31a6,0x2965,0x3186,0x3186,0x39c6,0x31a6,0x2965,0x31a6,0x3185,0x2985,0x31c6,0x3186,0x3185,0x31a6,0x31a6,0x31a6,0x3185,0x2965,0x2965,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x2985,0x31a6,0x31c6,0x2985,0x3186,0x2965,0x3186,0x39c7,0x31a6,0x2986,0x31a6,0x31a6,0x39c6,0x31c6,0x2985,0x2985,0x31a6,0x31a6,0x39e7,0x39e7, +0x5aeb,0x52ca,0x52ca,0x5aeb,0x5aeb,0x52ca,0x52aa,0x5b0b,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x52ca,0x632c,0x5aeb,0x5b0b,0x634c,0x634c,0x634c,0x6b6c,0x632b,0x5b0b,0x5aeb,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x634c,0x634c,0x634c,0x632c,0x634c,0x636c,0x6b8d,0x632b,0x5b2b,0x5b0b,0x5b0b,0x632c,0x632c,0x634c,0x5b2b,0x5aeb,0x5b2b,0x5b0b,0x5b2b,0x5b2c,0x636c,0x634c,0x634c,0x5b2b,0x5b2b,0x636c,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x530b,0x5b2b,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b0b,0x636c,0x634c,0x634c,0x632c,0x636c,0x5b2b,0x634c,0x638d,0x5b2b,0x5b0b,0x634c,0x636c,0x5b0b,0x632b,0x5b2b,0x634c,0x636c,0x52ea,0x634c,0x634c,0x634b,0x5b2b,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x632b,0x632c,0x634c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x634c,0x636c,0x5b4c,0x5b0b,0x5b0b,0x73ce,0x636c,0x530b,0x636c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x634c,0x634c,0x636c,0x5b2b,0x634c,0x6b8d,0x636c,0x6b8d,0x6b8d,0x634c,0x5b2b,0x634c,0x634c,0x636c,0x638d,0x5b2b,0x5b2c,0x5b0b,0x634c,0x5b2c,0x5b2c,0x634c,0x6b6d,0x5b2b,0x636c,0x632c,0x634c,0x634c,0x5b2c,0x5b0b,0x5b2b,0x636c,0x636c,0x5aea,0x5b2b,0x634c,0x634c,0x6b8c,0x5b4c,0x634c,0x634c,0x634c,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x5b0b,0x5b2b,0x634c,0x634c,0x636c,0x634c,0x6b8d,0x6b8d,0x5b2c,0x634c,0x634c,0x634c,0x636d,0x5b0b,0x632c,0x5b0b,0x5b0b,0x634c,0x5b2c,0x5b2c,0x634c,0x634c,0x634c,0x5b0b,0x634c,0x636c,0x634c,0x636d,0x634c,0x632c,0x634c,0x634c,0x634c,0x5b0c,0x5b0b,0x5b0b,0x6b8d,0x6b8d,0x5b0b,0x632c,0x632c,0x634c,0x5b2c,0x632c,0x634c,0x632c,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0c,0x5b2c,0x5aeb,0x5b2c,0x5b0b,0x5b0b,0x5b0c,0x5aeb,0x5b2b,0x636d,0x5b0b,0x5aeb,0x632c,0x634c,0x634c,0x632c,0x632c,0x632c,0x634c,0x632c,0x632c,0x5aeb,0x632c,0x5b0b,0x632c,0x5b2c,0x5aeb,0x5aeb,0x5aeb,0x632b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x630b,0x632c,0x52ca,0x5aeb,0x632c,0x634c,0x630b,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x52ca,0x5aca,0x5aeb,0x52ca,0x4a89,0x52aa,0x528a,0x528a,0x5aeb,0x52aa,0x52aa,0x528a,0x52aa,0x52cb,0x5aeb,0x52aa,0x52aa,0x52aa,0x5acb,0x52aa,0x4a69,0x52aa,0x52a9,0x5b0a,0x5aeb,0x4a8a,0x4a8a,0x4a69,0x52cb,0x52aa,0x4228,0x528a,0x52aa,0x4a69,0x528a,0x528a,0x4a69,0x4a8a,0x528a,0x4a69,0x528a,0x52aa,0x4a49, +0x52ca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ea,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x632b,0x632c,0x5aeb,0x5b2b,0x6b6c,0x632b,0x5aeb,0x5b2c,0x5b0b,0x5b2b,0x5aea,0x52ca,0x52ca,0x52ca,0x52ca,0x5b0b,0x5aeb,0x5b2b,0x52ea,0x52ea,0x5b0b,0x5aeb,0x52a9,0x52ea,0x52ca,0x5b0b,0x5aeb,0x52eb,0x52eb,0x5b2b,0x5b0b,0x52ca,0x52eb,0x5b0b,0x5aeb,0x5b0b,0x52ea,0x52eb,0x5b2c,0x5b0b,0x5b0a,0x5aeb,0x52ca,0x52ea,0x52ea,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x52eb,0x5aeb,0x5b0b,0x5aeb,0x52ea,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x52ea,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x530b,0x5aeb,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ca,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x5b4c,0x5b2b,0x5b4c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52ea,0x52ca,0x5b0b,0x52ca,0x5b0b,0x5b4b,0x5b2b,0x5b0b,0x530b,0x4aa9,0x52ca,0x632c,0x5b0b,0x5b0b,0x634c,0x5b0b,0x530a,0x5b4b,0x52eb,0x530b,0x52ea,0x5b0b,0x5b2c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x634c,0x636c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x5b4c,0x5b2c,0x5b2c,0x5b0b,0x632c,0x5b4c,0x634c,0x634c,0x5b0b,0x634c,0x5b2c,0x5b2b,0x5b2b,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x52eb,0x634c,0x5b2b,0x52eb,0x5b2b,0x634c,0x634c,0x5aeb,0x5b0b,0x5b0b,0x634c,0x5b4c,0x5b2b,0x5b2b,0x636c,0x5b2b,0x632b,0x634c,0x5b2b,0x5b2b,0x634c,0x5b2c,0x634c,0x5b2c,0x5aeb,0x632c,0x5b2c,0x5b2b,0x5b2b,0x5b2c,0x52eb,0x632c,0x636d,0x634c,0x5b0b,0x632c,0x5b2b,0x632c,0x5b0b,0x634c,0x632c,0x5b2c,0x632c,0x5b0b,0x634c,0x634c,0x5b2c,0x5aeb,0x5b0b,0x634c,0x634c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2c,0x52eb,0x5b0b,0x632c,0x5b2c,0x5aeb,0x5b2c,0x5b0b,0x634c,0x634c,0x5aeb,0x632c,0x634c,0x5b2b,0x52ea,0x5b0b,0x5aeb,0x632c,0x6b4c,0x632c,0x634c,0x632c,0x634c,0x632c,0x632c,0x52ca,0x5b0b,0x634c,0x632c,0x632c,0x632b,0x5b0b,0x632c,0x632c,0x634c,0x5b0b,0x5b2c,0x632c,0x632c,0x632c,0x632b,0x632c,0x632b,0x5b2b,0x632c,0x632c,0x6b6d,0x632b,0x5b0b,0x634c,0x634c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x52ea,0x632b,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0c,0x634c,0x6b4c,0x630b,0x52ca,0x5b0c,0x5aeb,0x5aeb,0x52ca,0x52ca,0x5b0b,0x632c,0x52ca,0x5aeb,0x632c,0x630b,0x5b0b,0x5b0b,0x5b2b,0x632c,0x52aa,0x5aeb,0x632c,0x634c,0x632c,0x52ca,0x5b0b,0x632c,0x632c,0x630b,0x52ca,0x634d,0x6bae,0x5aeb,0x5b2c,0x6b6d,0x6b6d,0x5aeb, +0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b0b,0x5aea,0x636c,0x634c,0x5b0b,0x630b,0x632c,0x52ea,0x5b0b,0x5b0b,0x6b6c,0x636c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x632b,0x634c,0x5b0b,0x5b2b,0x52ea,0x52ca,0x5aeb,0x5b2b,0x5b0b,0x52ca,0x52ca,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x52ea,0x5b2b,0x5aeb,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x52ca,0x52ca,0x5b2b,0x5b2b,0x52ea,0x632b,0x5b2b,0x52ea,0x5b2c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b0b,0x5aea,0x5b0b,0x52eb,0x530b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x52aa,0x52ca,0x52ca,0x52ca,0x5b0b,0x530b,0x5b0b,0x5b0b,0x636c,0x5b2b,0x5b2b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x52aa,0x52ca,0x5b0b,0x5b2b,0x634c,0x634c,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x6b8c,0x4a89,0x634c,0x5b4c,0x52ca,0x52ea,0x5aea,0x5aeb,0x5b4c,0x5b4b,0x5b4b,0x52ea,0x52ea,0x5b0b,0x5b0b,0x636c,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x5b4c,0x52ea,0x5b0b,0x52ea,0x5b2b,0x634c,0x52ea,0x632c,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x530a,0x5b0b,0x5b0b,0x5b2b,0x530b,0x530b,0x530b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2c,0x5b2c,0x636c,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x632c,0x52ca,0x5b0b,0x634c,0x5b2b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x52ca,0x632c,0x5b0b,0x530b,0x5b2c,0x5b2c,0x5b2c,0x634c,0x5b0b,0x634c,0x5b2b,0x632c,0x634c,0x5b2b,0x5b2c,0x5b0b,0x5b0b,0x634c,0x632c,0x634c,0x5b2c,0x6b6d,0x5b2c,0x5aeb,0x5b0b,0x5b0b,0x634c,0x634c,0x5b0b,0x5b0b,0x632c,0x632c,0x634c,0x632c,0x5b0b,0x5b0c,0x636d,0x632c,0x632c,0x634c,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5aeb,0x632c,0x632c,0x5b2c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x634c,0x636d,0x634c,0x6b6d,0x632c,0x634c,0x5b0b,0x5aeb,0x5b0b,0x634c,0x6b6d,0x632c,0x6b4c,0x632c,0x634c,0x632b,0x6b4c,0x634c,0x6b6d,0x632c,0x6b8d,0x6b8d,0x634c,0x632c,0x6b4c,0x6b6c,0x6b4c,0x632b,0x630b,0x5b0b,0x5b0b,0x6b6c,0x634c,0x630b,0x630b,0x52ca,0x5aeb,0x5aeb,0x52ca,0x52ca,0x52ca,0x5aca,0x5aeb,0x5b0c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x52ca,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x5aeb,0x52aa,0x5b0b,0x634c,0x52aa,0x5b0c,0x632c,0x52ca,0x632c,0x632c,0x52ca,0x634c,0x5b0b,0x5acb,0x630b,0x5b0b,0x632c,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x6b6d,0x634c,0x52ca,0x5aeb, +0x5aeb,0x6b6c,0x632c,0x5aeb,0x52aa,0x52ca,0x52ca,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5aeb,0x52ea,0x634c,0x634b,0x632b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x632b,0x634b,0x5aeb,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x52ca,0x52aa,0x52eb,0x52aa,0x52ca,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x5b2c,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x632c,0x632b,0x634b,0x5b0b,0x5b0b,0x5b2b,0x632b,0x52ca,0x5b0b,0x5b0b,0x52ca,0x52ca,0x5b0b,0x5b0b,0x52ea,0x52ea,0x5b0b,0x52aa,0x52ca,0x5b0b,0x52ea,0x52ca,0x5b0b,0x52ea,0x5b4c,0x634c,0x5aea,0x5b2b,0x5b2b,0x634c,0x5b2b,0x634c,0x5b4b,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5aeb,0x634c,0x5b2b,0x5b2b,0x636c,0x636c,0x634c,0x5b4b,0x5b2b,0x632b,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x52ca,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x634c,0x5b4c,0x52ea,0x5b0b,0x634c,0x5b2b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5aeb,0x636c,0x636c,0x636c,0x636c,0x5b2c,0x5b0b,0x5b0b,0x52eb,0x5b2c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x5b2c,0x5b2c,0x5b2c,0x530b,0x52ea,0x5b2b,0x634c,0x634c,0x634c,0x5b0b,0x5b2b,0x5b0b,0x5b2c,0x634c,0x5b2b,0x634c,0x5b2c,0x52eb,0x632c,0x632c,0x634c,0x634c,0x636c,0x5b2b,0x634c,0x5b2c,0x634c,0x5b2c,0x5b2c,0x634c,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x5b2c,0x5b2c,0x5b2c,0x5b2b,0x5aeb,0x5b2c,0x52eb,0x5b2c,0x634c,0x5b2b,0x5b0b,0x6b8d,0x5b2b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x634c,0x5b0b,0x636c,0x5b0b,0x5b2b,0x638d,0x634c,0x5b0b,0x5b0b,0x634c,0x6b6d,0x634c,0x636c,0x634c,0x5b2c,0x5b0b,0x5b2c,0x634c,0x632c,0x5b2c,0x5b0b,0x5b2c,0x632c,0x5b0b,0x5aeb,0x5aeb,0x632c,0x632c,0x5b0b,0x5aeb,0x634c,0x632c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b0b,0x52eb,0x5b0b,0x5b0c,0x5aeb,0x630c,0x634c,0x632c,0x634c,0x630c,0x5aeb,0x632c,0x5b2b,0x5b2b,0x632c,0x5b0c,0x5aeb,0x634c,0x5b2c,0x5b0b,0x632c,0x630b,0x630c,0x5b0b,0x632c,0x5aeb,0x5b0b,0x632c,0x5aeb,0x634c,0x634c,0x632c,0x630b,0x5b0b,0x634c,0x632c,0x5aeb,0x5aeb,0x630b,0x630b,0x632c,0x630b,0x630b,0x5aeb,0x5acb,0x5acb,0x52ca,0x52ca,0x5aeb,0x52aa,0x52aa,0x52ca,0x5b0b,0x52ca,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x630b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x52eb,0x5b2b,0x52cb,0x5b0b,0x5acb,0x5aeb,0x5aeb,0x632c,0x5acb,0x5aeb,0x634c,0x5aeb,0x52ca,0x632c,0x634c,0x5aeb,0x632c,0x632c,0x632c,0x632c,0x632c, +0x7c2f,0x73ee,0x740f,0x740e,0x73ce,0x73ef,0x6bce,0x6bad,0x73ee,0x73ce,0x636c,0x636d,0x6bce,0x6b8d,0x6bae,0x634c,0x6b8d,0x740e,0x6b8d,0x73ce,0x6b8d,0x638d,0x5b4b,0x73ee,0x6b8d,0x636c,0x6b8d,0x636c,0x6b8d,0x634c,0x636c,0x5b2c,0x636c,0x5b4c,0x636c,0x634c,0x636c,0x636c,0x6b8d,0x638d,0x6b8d,0x636c,0x634c,0x5b0b,0x5b0b,0x6b8d,0x634c,0x5b2b,0x636c,0x636c,0x634c,0x634c,0x5b2c,0x5b2b,0x5b2b,0x636c,0x6b8d,0x634c,0x5b4c,0x634c,0x5b2b,0x632c,0x634c,0x636c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x636c,0x5b0b,0x52ca,0x636c,0x52eb,0x5b0b,0x52ea,0x52ea,0x52ea,0x52ea,0x5b4c,0x634c,0x5b0b,0x5b2b,0x5b4c,0x5b2b,0x638d,0x5b2b,0x530b,0x52ea,0x634c,0x5b0b,0x636c,0x5b0b,0x52aa,0x52eb,0x52eb,0x5b0b,0x634c,0x52ca,0x52eb,0x636c,0x634c,0x5b0b,0x52ca,0x5b2b,0x5b0b,0x530a,0x52ca,0x5b0b,0x5aeb,0x52ca,0x6b8d,0x5b0b,0x52ca,0x5b2b,0x5b2b,0x52ea,0x52ea,0x52ea,0x52ea,0x52ca,0x530b,0x530b,0x52ca,0x52ea,0x5b2b,0x5b2b,0x52ca,0x4aa9,0x5b0b,0x5b2b,0x52ca,0x636c,0x5b2b,0x4aaa,0x5b0b,0x634c,0x52eb,0x52ca,0x5b2c,0x5b2b,0x634c,0x636c,0x530b,0x4269,0x52eb,0x5b2c,0x52eb,0x632c,0x52ca,0x5aeb,0x5b2b,0x5b2b,0x5b0b,0x52ca,0x52ca,0x52ca,0x52ca,0x5b2b,0x5b2b,0x5b0b,0x5b2c,0x52ca,0x5b2b,0x5aeb,0x5aea,0x5aeb,0x5b2b,0x5b2b,0x5b4c,0x52ca,0x5b0b,0x636d,0x5b2c,0x638d,0x634c,0x5aeb,0x636c,0x634c,0x5b2b,0x634c,0x5b2c,0x634c,0x632c,0x636d,0x52eb,0x5b2c,0x5b0b,0x5b4c,0x5b2b,0x632c,0x632c,0x6b8d,0x634c,0x636c,0x6bce,0x5b4c,0x5b0b,0x634c,0x634c,0x5b4c,0x6b8d,0x634c,0x634c,0x6b8d,0x636c,0x634c,0x634c,0x5b2c,0x5b0b,0x6b6d,0x5b2c,0x5b2c,0x636d,0x5b0b,0x634c,0x636c,0x5b0b,0x632c,0x6b6d,0x634c,0x638d,0x6b8d,0x6b8d,0x636c,0x6b8d,0x636c,0x6b8d,0x6bad,0x73ee,0x6b8d,0x6b6d,0x6b8d,0x6b8d,0x6b8d,0x634d,0x6b6d,0x73ae,0x73ee,0x6b8d,0x6bad,0x634c,0x634c,0x740f,0x73ee,0x73ae,0x6b8d,0x6b8e,0x6b8d,0x6b6d,0x7c0f,0x8450,0x6b8d,0x6b6c,0x73ae,0x6bae,0x636d,0x6b6d,0x6b8d,0x6b6d,0x6b8d,0x634c,0x6b6d,0x73ce,0x6bad,0x73ce,0x6b8d,0x6b8d,0x6b8d,0x632c,0x6b6d,0x6b6d,0x632c,0x6b8d,0x6b6d,0x634c,0x6b6d,0x6b6d,0x73ce,0x6b6d,0x5b0b,0x6b8d,0x6b6d,0x6b6d,0x73ae,0x6b8d,0x6b8d,0x6b6d,0x738e,0x634d,0x6bae,0x73ce,0x6b6d,0x634c,0x634c,0x632c,0x632c,0x6b8d,0x634c,0x6b8d,0x634c,0x5b0b,0x634c,0x634c,0x634c,0x634d,0x634d,0x630c,0x5b0b,0x632c,0x6b6d,0x5b2c,0x5aeb,0x5b0b,0x634d,0x632d,0x5b0c,0x5aeb,0x6b4d,0x632c,0x630b, +0x8470,0x8490,0x8491,0x7c2f,0x7c50,0x8491,0x7c2f,0x7c2f,0x8470,0x7c0f,0x6b8d,0x6b8d,0x73ee,0x73ce,0x7c0f,0x73ce,0x6b8d,0x740f,0x7c2f,0x6bad,0x634c,0x5b4c,0x5b0b,0x634c,0x5b2b,0x6b8d,0x636c,0x638d,0x6bce,0x636c,0x5b0b,0x5b0b,0x6b8d,0x634c,0x5b4c,0x73ee,0x6bae,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2c,0x52ca,0x634c,0x634c,0x5aeb,0x5b0b,0x5b0b,0x636c,0x636c,0x4268,0x52ca,0x52eb,0x5b2b,0x52ea,0x52ea,0x52ca,0x5b0b,0x52ca,0x4a69,0x4a89,0x52ca,0x4aa9,0x4aa9,0x4a69,0x4a69,0x4a89,0x52ea,0x52ea,0x4248,0x4228,0x4a89,0x4268,0x3a07,0x3a07,0x4248,0x3a28,0x3a28,0x3a28,0x3a28,0x4a69,0x4268,0x4a89,0x3a28,0x3a27,0x4248,0x39e7,0x29a5,0x3a07,0x4269,0x3a07,0x3a07,0x31a6,0x4248,0x4a89,0x4248,0x3a07,0x31c6,0x3a07,0x4a69,0x39e7,0x4207,0x31c6,0x31c7,0x3a07,0x3a07,0x3a07,0x4249,0x4a69,0x4228,0x4248,0x4a89,0x31c6,0x4248,0x4248,0x3a28,0x4248,0x39e7,0x4228,0x31e7,0x3a07,0x3a07,0x31c6,0x4268,0x4a89,0x2985,0x31a6,0x3a07,0x3a27,0x4268,0x3a07,0x4248,0x3a07,0x4228,0x3a07,0x39e7,0x4a69,0x39e7,0x3a07,0x39e7,0x3a27,0x3a07,0x4248,0x4248,0x31a6,0x3a07,0x3a07,0x3a08,0x4a69,0x3a07,0x4248,0x3a07,0x4228,0x31c6,0x3a07,0x31c6,0x3a07,0x3a28,0x4248,0x52ca,0x4aaa,0x3a28,0x4aaa,0x4228,0x3a07,0x4228,0x4a69,0x3a28,0x4269,0x4a69,0x31c6,0x4a69,0x5aeb,0x4aaa,0x4a89,0x4a89,0x52ea,0x4268,0x3a07,0x3a28,0x4248,0x4a89,0x5b2b,0x634c,0x4aaa,0x4269,0x52eb,0x52eb,0x4269,0x52ca,0x4a89,0x4a69,0x5b0b,0x5b0b,0x52ca,0x52ca,0x5aeb,0x4a69,0x52ca,0x4a89,0x52aa,0x52ca,0x52ca,0x52ca,0x52eb,0x632c,0x5b2b,0x632c,0x5aeb,0x5aeb,0x73ae,0x5aeb,0x5b2c,0x632c,0x6bad,0x73ce,0x634c,0x5aeb,0x634c,0x6b8d,0x5b2c,0x636d,0x6b8d,0x5b2c,0x636d,0x6bad,0x73ae,0x73ce,0x73ce,0x7c0f,0x6b6d,0x6bae,0x6bae,0x6bae,0x6b8d,0x6b8d,0x6b6d,0x7c0f,0x73ce,0x73ce,0x73ce,0x73ce,0x7c0f,0x8c91,0x8430,0x8430,0x7c0f,0x7bef,0x8430,0x8430,0x7c0f,0x73ae,0x840f,0x7bee,0x7c0f,0x8450,0x7c0f,0x8470,0x8cb1,0x842f,0x8430,0x8430,0x8c91,0x8c91,0x8c71,0x840f,0x8450,0x8c70,0x94d2,0x8450,0x8450,0x8c91,0x8c91,0x8430,0x8c71,0xa554,0x8c91,0x9d13,0x94f2,0x8c71,0x94d2,0x94b2,0x94b2,0x94d2,0x94d2,0x8c91,0x94d2,0x8c91,0x94d2,0x9d13,0x9d13,0x8470,0x8430,0x8c91,0x94f3,0x8cb2,0xa514,0x9491,0xad74,0x9cf2,0x8c91,0x9cd3,0x9d13,0x8c71,0x8c91,0x8c91,0x8c71,0x8450,0x8430,0x7c0f,0x8450,0x94b2,0x94b2,0x8c92,0x8c92,0x8430,0x8430,0x9cf3,0x8450,0x8c91, +0x2124,0x2144,0x2944,0x2144,0x2124,0x18c3,0x18c3,0x2103,0x2965,0x2124,0x18e3,0x2124,0x2124,0x2103,0x18e3,0x2144,0x2103,0x2124,0x2124,0x18c2,0x18e3,0x10a2,0x1082,0x0000,0x18e3,0x18c3,0x1081,0x18e3,0x2124,0x0841,0x0841,0x10a2,0x1082,0x18e3,0x18c3,0x2124,0x2144,0x10a2,0x18e3,0x2104,0x18c2,0x0861,0x0000,0x2103,0x10a2,0x0841,0x10a2,0x0861,0x18c2,0x0881,0x0000,0x0000,0x0841,0x2104,0x10a2,0x0000,0x0000,0x0000,0x0841,0x0861,0x0841,0x0000,0x0820,0x0820,0x0000,0x0841,0x0020,0x0000,0x1082,0x0000,0x1082,0x0041,0x1061,0x0820,0x1062,0x0821,0x0000,0x0820,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0821,0x0861,0x0861,0x1062,0x0821,0x1082,0x0841,0x0000,0x0841,0x0020,0x0840,0x1082,0x0820,0x0841,0x0000,0x0000,0x1061,0x0000,0x0841,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x1061,0x0820,0x0000,0x1061,0x18c3,0x0000,0x18a2,0x18c3,0x0840,0x10a2,0x1061,0x0840,0x1082,0x18a2,0x18c3,0x1061,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x18c3,0x0861,0x1081,0x18e3,0x10a2,0x0020,0x10a2,0x10a2,0x10a2,0x18c2,0x18c2,0x0820,0x18e3,0x2124,0x10c2,0x10c2,0x10a2,0x0840,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x1061,0x1082,0x18c3,0x0820,0x18c2,0x0820,0x10a2,0x10a2,0x10a2,0x0861,0x0820,0x10a2,0x1082,0x0861,0x1081,0x18e3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0020,0x10c2,0x18c2,0x18c3,0x10a2,0x2104,0x2124,0x18e3,0x18e3,0x1082,0x0000,0x18c2,0x1082,0x0000,0x2104,0x2965,0x1061,0x10a2,0x18c3,0x18e3,0x18c3,0x18e3,0x10c2,0x2104,0x3186,0x2944,0x18e3,0x2104,0x0881,0x3185,0x18c3,0x10a2,0x2124,0x3185,0x2965,0x2965,0x2124,0x2124,0x2945,0x18e3,0x18c2,0x18c3,0x2103,0x2103,0x2124,0x2124,0x2944,0x2104,0x2124,0x18c2,0x2104,0x2104,0x2144,0x2945,0x2124,0x2945,0x2103,0x39c7,0x2945,0x2965,0x31a6,0x2945,0x2124,0x2124,0x39e7,0x3186,0x2985,0x4a48,0x2124,0x18e2,0x3185,0x3a07,0x2965,0x2985,0x4208,0x4208,0x29a6,0x4228,0x4a49,0x39c7,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a48,0x5289,0x4a69,0x4248,0x4a69,0x5aeb,0x4228,0x4228,0x52aa,0x5aeb,0x632c,0x4a89,0x528a,0x630c,0x52aa,0x52aa,0x52ca,0x5b0b,0x5aca,0x5b0b,0x6b6d,0x5aeb,0x632c,0x634c,0x630b,0x5aca,0x52aa,0x630b,0x634c,0x5aeb,0x6b8d,0x7bce,0x840f,0x738d,0x5aeb,0x73ae,0x738e,0x6b4d,0x738d,0x6b4d,0x6b8d,0x632c,0x632c,0x528a,0x634d,0x738e,0x632c,0x738e,0x6b6d,0x5b0c,0x632c,0x52ca,0x5b0b,0x7bcf, +0x18e3,0x10c3,0x10a3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x2104,0x18e3,0x1903,0x2144,0x2124,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x2124,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2104,0x18e4,0x2104,0x1903,0x18e3,0x2144,0x18e3,0x2124,0x2144,0x1903,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x2144,0x2124,0x2104,0x18c3,0x1903,0x2104,0x18e3,0x2104,0x1904,0x2124,0x2104,0x18e3,0x1903,0x2124,0x2104,0x18e3,0x2124,0x2104,0x1904,0x1904,0x1904,0x2103,0x2104,0x2103,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e3,0x2945,0x2124,0x2124,0x2124,0x1904,0x2124,0x2104,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x10c3,0x1904,0x10a2,0x0861,0x10a2,0x18c3,0x18e3,0x18e3,0x2104,0x10a2,0x1082,0x18e3,0x10c3,0x1082,0x10a2,0x18e3,0x18c3,0x18e3,0x18e3,0x10c2,0x10c2,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10c2,0x18e3,0x18c2,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x10c2,0x10c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18a2,0x18e3,0x18e3,0x10a2,0x10a2,0x18e3,0x1082,0x18e3,0x1904,0x10c3,0x18e3,0x2104,0x18c3,0x18a3,0x2104,0x18e3,0x10c3,0x18c3,0x10a2,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x1904,0x18e3,0x10a2,0x10a2,0x18c3,0x1082,0x18c3,0x18e3,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x10c2,0x1082,0x1082,0x10a2,0x18c2,0x0860,0x18c2,0x18c3,0x0021,0x18c3,0x18c3,0x1082,0x0861,0x18c3,0x1082,0x0841,0x0000,0x1061,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x4208,0x39e7,0x3a28,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x3a28,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4228,0x3a28,0x3a07,0x3a07,0x3a07,0x3a28,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4248,0x4228,0x4248,0x4228,0x4248,0x4228,0x3a08,0x4228,0x3a28,0x3a28,0x4269,0x4248,0x4228,0x4248,0x4228,0x4a69,0x3a07,0x4228,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4248,0x4249,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4248,0x4a89,0x4248,0x4248,0x4248,0x3a07,0x4228,0x3a28,0x4248,0x4228,0x4248,0x4228,0x4269,0x4a89,0x4269,0x4a89,0x4a89,0x4248,0x4248,0x4269,0x4269,0x4248,0x4228,0x4248,0x4269,0x4a89,0x4a89,0x4aaa,0x4a89,0x4a89,0x4228,0x4248,0x4a89,0x4a89,0x4269,0x4aa9,0x4269,0x4228,0x4a89,0x4a89,0x4248,0x4a69,0x4a69,0x4a69,0x4269,0x4289,0x4a89,0x4a89,0x4a89,0x4248,0x4248,0x4268,0x4228,0x4249,0x4a89,0x4228,0x4248,0x4269,0x4a69,0x4269,0x4248,0x4a69,0x4a89,0x4a8a,0x4249,0x4228,0x4228,0x3a28,0x4228,0x3a28,0x4248,0x4248,0x4249,0x4269,0x4248,0x4269,0x4228,0x4228,0x4249,0x4269,0x4a89,0x3a07,0x4228,0x4269,0x4248,0x4228,0x4269,0x4248,0x4228,0x4249,0x4248,0x4248,0x4249,0x4228,0x4248,0x4248,0x4a49,0x4249,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4248,0x4248,0x4228,0x4228,0x4a49,0x4a69,0x4249,0x4249,0x4228,0x4a89,0x4a69,0x4248,0x4248,0x4248,0x4a69,0x4249,0x4a69,0x4a49,0x4228,0x4a89,0x4a89,0x4a69,0x4a69,0x4249,0x4a69,0x4248,0x4a69,0x4a49,0x4248,0x4268,0x4a89,0x4a89,0x4a49,0x4249,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x4a48,0x4249,0x4a69,0x4a69,0x4a49,0x4a49,0x4248,0x4a49,0x4248,0x4a69,0x4248,0x4a49,0x4a49,0x4248,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x4a89,0x4248,0x4249,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4a69,0x4a49,0x4228,0x4249,0x4249,0x4248,0x4248,0x4248,0x4248,0x4a49,0x4a48,0x4228,0x4228,0x4228,0x4a48,0x4248,0x4228,0x4a49,0x4228,0x4a48,0x4248,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4249,0x4229,0x4228,0x4208,0x4248,0x4228,0x4228,0x4208,0x39e7,0x39e7,0x4228,0x4228,0x3a07,0x39e7,0x4249,0x3a08,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4207,0x4228,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4207,0x3a07,0x39e7,0x31c6,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e7,0x39e7,0x31c7,0x39e7, +0x4228,0x3a07,0x4248,0x4228,0x4208,0x4208,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x4249,0x3a08,0x3a07,0x3a08,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a28,0x3a28,0x3a08,0x4a89,0x4248,0x3a07,0x3a08,0x4228,0x3a28,0x3a28,0x4228,0x4248,0x4228,0x4269,0x3a07,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4248,0x4248,0x4228,0x4207,0x3a08,0x4228,0x4228,0x4269,0x4248,0x3a08,0x4228,0x4248,0x3a07,0x3a07,0x4248,0x4248,0x4248,0x4248,0x4248,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4248,0x4269,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4228,0x4269,0x4269,0x4a89,0x4269,0x4269,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4269,0x4a69,0x4228,0x4a69,0x4269,0x4249,0x4269,0x4248,0x4a89,0x4a69,0x4249,0x4a69,0x4a89,0x4269,0x4269,0x4248,0x4248,0x4a89,0x4a89,0x4248,0x4a69,0x4248,0x4269,0x4aaa,0x4a89,0x4268,0x4a89,0x4269,0x4a69,0x4248,0x4a89,0x4a89,0x4248,0x4a69,0x4a89,0x4248,0x4a89,0x4a89,0x4a89,0x4269,0x4269,0x4a69,0x4a89,0x4a89,0x4a89,0x4248,0x4a89,0x4a69,0x4aaa,0x4a89,0x4a89,0x4269,0x4a8a,0x4269,0x4269,0x4248,0x4a69,0x4a89,0x4248,0x4248,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4a69,0x4248,0x4269,0x4aaa,0x4a89,0x4249,0x4a69,0x4a89,0x4269,0x4a69,0x4a69,0x4269,0x4a69,0x4a89,0x52ca,0x4a89,0x4a69,0x4269,0x4269,0x4a69,0x52aa,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4269,0x4289,0x4a89,0x52aa,0x4a8a,0x4269,0x4a69,0x52aa,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4aaa,0x4a89,0x4aa9,0x52ca,0x4a89,0x4a69,0x4a89,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x4a89,0x52aa,0x52aa,0x4a89,0x52ca,0x4a89,0x4aaa,0x52ca,0x52aa,0x4a89,0x52eb,0x52aa,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x528a,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4248,0x4a69,0x4a89,0x4a69,0x528a,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x4a69,0x4a49,0x4249,0x4a69,0x4a8a,0x4a69,0x4a8a,0x4a89,0x4a8a,0x4a69,0x4a69,0x4248,0x4228,0x4249,0x4a69,0x4a69,0x4a49,0x4a69,0x4a89,0x52aa,0x4a89,0x4269,0x4a89,0x4a69,0x4a8a,0x4a69,0x4a69,0x52aa,0x4a69,0x4a69,0x528a,0x52aa,0x528a,0x4a69,0x4a8a,0x528a,0x528a,0x5289,0x4a89,0x4a69,0x4a69, +0x39e7,0x3a28,0x4248,0x4228,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x4208,0x3a08,0x4248,0x3a07,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x4208,0x4228,0x4227,0x4228,0x4a49,0x4248,0x3a07,0x4a48,0x39e7,0x4207,0x4228,0x4228,0x4228,0x4208,0x4207,0x4228,0x4248,0x4228,0x4228,0x4228,0x3a07,0x3a28,0x3a28,0x4228,0x4228,0x4248,0x4228,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x4a69,0x4228,0x39e7,0x4228,0x4208,0x3a07,0x4228,0x4207,0x4208,0x4228,0x4248,0x4a69,0x4a69,0x3a07,0x4248,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x4248,0x4228,0x4269,0x4a89,0x4269,0x4a48,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4248,0x3a07,0x3a27,0x3a28,0x4269,0x4a69,0x4a69,0x4269,0x4248,0x4228,0x4269,0x4228,0x4269,0x4a69,0x4228,0x4a89,0x4207,0x4248,0x4a69,0x4248,0x4248,0x4269,0x4289,0x4268,0x4a89,0x4248,0x4248,0x4a69,0x4a48,0x4a89,0x4a69,0x4248,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4aaa,0x4a89,0x4248,0x4a69,0x4a69,0x3a07,0x4248,0x4a89,0x4248,0x4228,0x4a69,0x4a69,0x4a69,0x4a69,0x52aa,0x4a68,0x4248,0x4269,0x4248,0x3a07,0x4248,0x4248,0x4248,0x3a28,0x4248,0x52ca,0x4a89,0x4248,0x4a89,0x4a69,0x4a69,0x4a89,0x4aaa,0x4a69,0x4a89,0x4aaa,0x4a89,0x4289,0x4269,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x52a9,0x4a69,0x4a69,0x4a89,0x4269,0x52aa,0x4a8a,0x4248,0x52aa,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x528a,0x52aa,0x4268,0x52ca,0x52aa,0x4228,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4268,0x4a89,0x4a89,0x4a89,0x4a89,0x4a69,0x4a89,0x52ca,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x52ca,0x52aa,0x4a89,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4aaa,0x4269,0x4a69,0x4aaa,0x52aa,0x4a69,0x52aa,0x4a89,0x4a69,0x52aa,0x4a89,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x52ca,0x4a8a,0x4248,0x52aa,0x4a49,0x4a48,0x4a89,0x52aa,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a89,0x4a8a,0x4a89,0x52aa,0x4a89,0x52aa,0x4a89,0x4248,0x4a49,0x52aa,0x528a,0x4a69,0x5289,0x4a89,0x528a,0x4a69,0x52aa,0x4a89,0x4a49,0x4248,0x4248,0x4a89,0x4a49,0x4a89,0x4a69,0x4a49,0x4a69,0x4a89,0x4a69,0x52aa,0x52aa,0x4a89,0x4a89,0x52aa,0x528a,0x52aa,0x528a,0x528a,0x4a89,0x52ca,0x52ca,0x52aa,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x4a69,0x528a,0x4a89,0x4a69,0x52aa,0x528a,0x528a,0x4a89,0x528a,0x52aa,0x52aa,0x528a,0x4a49,0x4a89, +0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39c6,0x39c6,0x39e7,0x4207,0x39c6,0x39e7,0x39e7,0x39e7,0x4207,0x39c7,0x39c7,0x39c7,0x31c6,0x4228,0x4228,0x3a07,0x31a6,0x3185,0x3a07,0x39e6,0x39e6,0x31c6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x31c6,0x31c6,0x31c6,0x39e7,0x39e6,0x39e7,0x31a6,0x39e7,0x39c6,0x31a6,0x39c7,0x31a6,0x39e7,0x31c7,0x39e7,0x3a07,0x31c6,0x39e7,0x3a07,0x3a07,0x3a07,0x31c6,0x31c6,0x39e7,0x31c6,0x39e7,0x31a6,0x31c6,0x31c6,0x3a07,0x31c6,0x3185,0x39e7,0x39e7,0x3186,0x39e7,0x31c6,0x31a6,0x39e7,0x2965,0x31c7,0x31e7,0x31a6,0x31c7,0x39e7,0x31c6,0x39e6,0x39e7,0x31c6,0x31c6,0x31a6,0x39e7,0x39e7,0x4227,0x4268,0x31c6,0x31c6,0x31e6,0x4228,0x39c6,0x31a6,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x31a6,0x31a6,0x31c6,0x31e7,0x31e7,0x39e7,0x39e7,0x31e7,0x31a6,0x31c6,0x31a5,0x39e7,0x31c6,0x31c6,0x39e7,0x39c6,0x31c6,0x39e7,0x31a6,0x31a6,0x31c6,0x2985,0x31c6,0x31c6,0x39e7,0x31e7,0x31c6,0x31c6,0x31c6,0x2985,0x39e7,0x3a07,0x31e7,0x31c6,0x31c6,0x31c7,0x39e7,0x31a5,0x31a6,0x31a6,0x2985,0x3a07,0x3a07,0x31a6,0x31c6,0x39c7,0x31a6,0x31c6,0x31c6,0x3a07,0x31a6,0x2986,0x31c6,0x39e7,0x2986,0x31c6,0x31c6,0x2965,0x2145,0x31c6,0x31e7,0x31e7,0x31c6,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x31a6,0x31c6,0x31e7,0x31c6,0x31e7,0x39e7,0x31c6,0x31c6,0x31a6,0x31e7,0x2985,0x39e7,0x2986,0x31a6,0x39e7,0x31c6,0x31a6,0x3a07,0x31c6,0x31e7,0x31a6,0x31a6,0x31c6,0x31c6,0x3a07,0x31c6,0x39c7,0x39e7,0x31c6,0x31a6,0x3a07,0x39c6,0x31a6,0x39e7,0x3a07,0x39c6,0x39e7,0x39e7,0x39c6,0x39e7,0x3a07,0x39c7,0x39e7,0x3a07,0x3a07,0x39c7,0x3a07,0x31c6,0x31a6,0x39e7,0x3a07,0x31c6,0x31c6,0x39e7,0x31a6,0x31a6,0x39c7,0x31e7,0x39e7,0x4208,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x31c6,0x39c7,0x39c7,0x31c6,0x39c7,0x39e7,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x39c7,0x39e7,0x4228,0x39e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x31a6,0x39e7,0x4208,0x31a6,0x31c6,0x31a6,0x31a6,0x3a07,0x31a6,0x31a6,0x39a6,0x31a6,0x39c7,0x31a6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3a07,0x3a07,0x4208,0x39e7,0x31a6,0x31a6,0x39e7,0x31a6,0x39e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39e7,0x31a7,0x31a6,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x4228,0x39c7,0x39c7,0x4207,0x39c7,0x39e7,0x39e7, +0x5b0b,0x5aeb,0x5b2b,0x5b0b,0x5b0b,0x634c,0x6b6d,0x5b0b,0x632c,0x634c,0x634c,0x632b,0x636c,0x6b6c,0x5b0b,0x632b,0x632c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x630b,0x632c,0x5b2b,0x632c,0x52ea,0x632b,0x5aea,0x632b,0x5b0b,0x5b0b,0x530b,0x5b2c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x52ca,0x5aeb,0x5b0b,0x5b2c,0x52eb,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x634c,0x634c,0x5aea,0x5b0b,0x5b0b,0x632b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b0b,0x4aaa,0x52ca,0x5b0b,0x5b2b,0x52ca,0x52ca,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x52ca,0x632c,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x638c,0x73cd,0x5b0b,0x5b2c,0x52eb,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52ca,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b2c,0x52ca,0x52ea,0x52ca,0x5b0b,0x5b2b,0x530b,0x5b0b,0x52eb,0x4aaa,0x5b0b,0x52ca,0x52ca,0x5aeb,0x5aeb,0x5b0b,0x634c,0x5b0b,0x5aeb,0x5b2c,0x52ca,0x52eb,0x632c,0x5b2b,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x634c,0x5b2c,0x5b2c,0x5b0b,0x5aeb,0x52ca,0x630b,0x5aeb,0x5b0b,0x52eb,0x632c,0x634c,0x5b0b,0x5aeb,0x5aeb,0x52eb,0x634c,0x5b2c,0x5b0b,0x5b2c,0x5b0b,0x632c,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x5b2c,0x5b2c,0x5b2b,0x634c,0x634c,0x632c,0x632c,0x634c,0x5b0b,0x5b0b,0x632c,0x634c,0x5b2b,0x5b2b,0x5b2c,0x5b2b,0x632c,0x636d,0x5b2c,0x5b2b,0x5b2b,0x5b0b,0x5b2c,0x634c,0x634c,0x636d,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b2b,0x634c,0x6b6d,0x5b0b,0x5aeb,0x6b6d,0x5b0b,0x634c,0x6b6d,0x632c,0x634c,0x632c,0x5b0c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x634c,0x632c,0x5b0b,0x6b4c,0x6b8d,0x73ae,0x6b8d,0x632c,0x5b0b,0x632c,0x632c,0x634c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5aeb,0x632c,0x630c,0x5aeb,0x630b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x634c,0x5b0b,0x5b0b,0x630b,0x5b0b,0x5aeb,0x5b0b,0x630b,0x632c,0x5aea,0x5aeb,0x5aeb,0x52ca,0x5aca,0x5aeb,0x52aa,0x5aeb,0x634c,0x52ca,0x5aca,0x52ca,0x5aeb,0x52ca,0x5aea,0x52ca,0x5b0b,0x5b0b,0x5aca,0x5aeb,0x52ca,0x5aeb,0x5b0b,0x52ca,0x52cb,0x4a89,0x5289,0x52aa,0x52aa,0x5289,0x528a,0x52aa,0x4a69,0x4a89,0x5289,0x4a89,0x4228,0x4a69,0x4a89,0x52ca,0x52aa,0x4a8a,0x52aa,0x4a89,0x4a69,0x52aa,0x4248,0x4a69,0x39e7,0x4a49,0x4248,0x39e7,0x3a07,0x4228,0x4228,0x3a07,0x4208,0x39c7, +0x634c,0x5b2b,0x632c,0x5b2c,0x52eb,0x634c,0x636c,0x634b,0x5b2b,0x5b0b,0x6b8d,0x636c,0x6bad,0x5b2b,0x634c,0x634c,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x634c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x634c,0x632c,0x530b,0x5b2b,0x630c,0x5b0b,0x5aea,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x52ca,0x5b2b,0x5aeb,0x5aeb,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2c,0x5b2c,0x52eb,0x5b0b,0x632c,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x634c,0x636c,0x634c,0x5b2b,0x5b0b,0x636c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5b2b,0x5aeb,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b2b,0x634c,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x636c,0x52ea,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b4b,0x5b2b,0x634c,0x634c,0x52ea,0x5b2b,0x634c,0x5b0b,0x52ea,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x5aea,0x5b2b,0x52ea,0x634c,0x636c,0x636c,0x5b2b,0x5b0b,0x52ea,0x636c,0x5b2b,0x5b2b,0x634c,0x52ca,0x52ca,0x5b2b,0x5b2c,0x5b0b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x5b2c,0x5b2c,0x52ea,0x634c,0x5b2b,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x634c,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b2b,0x5b4c,0x5b2c,0x5b2c,0x5b0b,0x530b,0x634c,0x5b2b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5b2c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b4c,0x636d,0x632c,0x634c,0x5b0b,0x5b4c,0x530b,0x634c,0x632c,0x634c,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b4c,0x5b2c,0x634c,0x632c,0x5b0b,0x634c,0x5b2b,0x5b4c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x636d,0x5b2c,0x5b2c,0x634c,0x5b4c,0x5b0b,0x634c,0x632c,0x634c,0x6b6c,0x6b6d,0x636c,0x632c,0x634c,0x5b2b,0x634c,0x5b0b,0x634c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x636d,0x5b2c,0x5b2c,0x634c,0x634c,0x5b0b,0x634c,0x632c,0x634c,0x634c,0x634c,0x634c,0x6b6d,0x6b4c,0x630b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x632c,0x52eb,0x5b0b,0x5b0b,0x634c,0x632c,0x5aeb,0x5b0b,0x632c,0x632c,0x632b,0x5b0b,0x632c,0x632c,0x632c,0x634c,0x6b4c,0x634c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b0b,0x632c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x632c,0x634c,0x5b0c,0x5b0b,0x634c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x632c,0x632c,0x5aca,0x632c,0x630b,0x632c,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5b0b,0x634c,0x632c,0x630c,0x630b,0x5aeb,0x632c,0x630c,0x5aca,0x5aeb,0x632c,0x632c,0x5aeb,0x5aeb,0x5aeb, +0x6b6c,0x5b0b,0x5b0b,0x632c,0x634c,0x632c,0x634c,0x632b,0x6b6c,0x636c,0x632b,0x632b,0x6b6c,0x5aeb,0x632b,0x632c,0x632c,0x5b2b,0x634c,0x5aeb,0x634c,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b2b,0x632b,0x632c,0x634c,0x634c,0x5b0b,0x5b2c,0x5b0b,0x52ca,0x5b0b,0x632c,0x5b0b,0x5b2b,0x52eb,0x52eb,0x5b0b,0x52eb,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x530b,0x5b0b,0x5aeb,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x632c,0x632c,0x5b0b,0x530b,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x52ea,0x5b0b,0x5b0b,0x5aeb,0x52ea,0x52eb,0x5b0b,0x632c,0x5aeb,0x5aeb,0x52ea,0x5b2b,0x634c,0x52aa,0x530b,0x5b2c,0x5b2c,0x634c,0x5aeb,0x5b0b,0x634c,0x52ea,0x5b0b,0x5aeb,0x5b2b,0x5b4c,0x5b4c,0x632b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x632b,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x530b,0x5b2c,0x634c,0x530b,0x5b2b,0x52ea,0x636c,0x634c,0x52ea,0x5b2b,0x636c,0x5b2b,0x530b,0x634c,0x634c,0x632c,0x5b0b,0x52eb,0x5b2b,0x5b2b,0x52ca,0x636c,0x5b2b,0x5b0b,0x5b0b,0x530b,0x530b,0x52ea,0x632c,0x632c,0x5aea,0x632c,0x5b2c,0x52eb,0x52eb,0x52eb,0x634c,0x5b2c,0x5b2c,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x5b2c,0x5b2b,0x530b,0x5b0b,0x634c,0x5b4c,0x5b2b,0x5b0b,0x5b4c,0x5b2b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x5b0b,0x5b0b,0x634c,0x634c,0x5b0b,0x52ca,0x5b2c,0x634c,0x5b0b,0x52ca,0x634c,0x634c,0x5b2b,0x52eb,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x634c,0x5b2c,0x632c,0x5b2b,0x5b2b,0x634c,0x632b,0x632c,0x634c,0x636c,0x634c,0x6b6d,0x6b8d,0x634c,0x632c,0x634c,0x5b0b,0x5b2c,0x634c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x634c,0x634c,0x5b0b,0x5b2c,0x632c,0x5b0b,0x5b2c,0x5b2c,0x632c,0x634c,0x632c,0x5b0b,0x634c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x632c,0x5b2c,0x5aeb,0x5aeb,0x632c,0x5b0c,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0c,0x5b0b,0x632c,0x630c,0x630b,0x630c,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x5b0c,0x5aeb,0x6b4c,0x630b,0x5aca,0x632b,0x632c,0x5aeb,0x632c,0x5aeb,0x630c,0x5b2c,0x5b0b,0x5b0b,0x52ea,0x5aeb,0x52ca,0x52ca,0x632c,0x5b0b,0x5aeb,0x634c,0x5aeb,0x5aeb,0x630b,0x5aeb,0x632c,0x5b2c,0x632c,0x632c,0x5aeb,0x52ca,0x632c,0x5b0b,0x5aeb,0x5b0b,0x6b6d,0x634c,0x634d,0x632c,0x5b0b,0x632c,0x6b8d,0x5b0b,0x632c,0x5aeb,0x52cb,0x634c,0x5aeb,0x52aa, +0x5b0b,0x52a9,0x52ca,0x5aeb,0x634c,0x5aea,0x5b0b,0x52ca,0x5b2b,0x634c,0x634c,0x5b0b,0x634c,0x5b0b,0x52ca,0x5b0b,0x630b,0x5aca,0x632c,0x5b2b,0x632b,0x5b0b,0x5aea,0x5aeb,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x5aeb,0x52ea,0x5b0b,0x5b2c,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x5b2b,0x52eb,0x52eb,0x5b0b,0x5b0b,0x5aeb,0x5b4c,0x530b,0x52ea,0x5b2b,0x632c,0x5aeb,0x5b0b,0x5b0b,0x52ea,0x632c,0x5b0b,0x5aeb,0x5b2b,0x5b2b,0x530b,0x52eb,0x632b,0x634c,0x5aeb,0x52ca,0x5b2b,0x52ea,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x4aaa,0x52ca,0x52eb,0x5aeb,0x52ca,0x634c,0x636d,0x5b0b,0x5b2b,0x632c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x52ea,0x5b0b,0x52ea,0x5b2c,0x634c,0x5b0b,0x636c,0x5b2b,0x52ea,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x636c,0x636c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x632c,0x634c,0x5b4c,0x530b,0x5b0b,0x52eb,0x634c,0x634c,0x5b0b,0x5b2c,0x5b0b,0x52ea,0x5b4c,0x530b,0x5b0b,0x634c,0x632c,0x5b2c,0x634c,0x52eb,0x634c,0x5b4c,0x52eb,0x5b2c,0x5b2b,0x5b2c,0x5b0b,0x634c,0x5b0b,0x52ca,0x634c,0x5b4c,0x5b2b,0x634c,0x5b2b,0x5b4c,0x5b2b,0x5b2b,0x5b2c,0x5b2c,0x52ea,0x5b2c,0x52eb,0x5b4c,0x6b8d,0x636d,0x530b,0x5b0b,0x5b2c,0x634c,0x5b2c,0x5b2c,0x5b2b,0x5b4c,0x530b,0x636c,0x5b4c,0x634c,0x632c,0x6b4c,0x632b,0x636c,0x634c,0x636d,0x634c,0x5b2c,0x636d,0x634c,0x5b2c,0x634c,0x636c,0x632c,0x5b2c,0x636d,0x634c,0x632c,0x636d,0x634c,0x5b2b,0x632c,0x636c,0x634c,0x632c,0x634c,0x6b8d,0x634c,0x636c,0x636c,0x634c,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x5b0b,0x632c,0x632c,0x5b2c,0x5aeb,0x5b0b,0x634c,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x632b,0x632c,0x5b0b,0x5b0b,0x634c,0x5aeb,0x52eb,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b2c,0x5b0c,0x5aeb,0x634c,0x5b0b,0x52ca,0x52ca,0x630c,0x5b0b,0x5aeb,0x52ea,0x52ca,0x5b0b,0x632c,0x52aa,0x52ca,0x52ca,0x52ea,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5aeb,0x632c,0x630b,0x5aca,0x5aeb,0x5aeb,0x5aeb,0x632c,0x5b2c,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x630b,0x632c,0x5b0b,0x5aca,0x5b0b,0x632c,0x632c,0x5b0b,0x5b2c,0x5aeb,0x52ca,0x52ca,0x632c,0x630c,0x630b,0x632c,0x5acb,0x5b0b,0x630c,0x52aa,0x5b0b,0x634c,0x634c,0x5b2c,0x5b0b,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x632c,0x73ae,0x6b6d,0x632c,0x634c,0x634c,0x52ca,0x6bae,0x6b8d,0x6b8e,0x5b0c,0x5aeb,0x52eb,0x5b2c,0x632c, +0x636c,0x636c,0x6bad,0x634c,0x634c,0x636c,0x638d,0x6b8d,0x6bcd,0x73ce,0x634c,0x6b8d,0x634c,0x636c,0x6b8d,0x636d,0x634c,0x634c,0x634c,0x5b2b,0x634c,0x636c,0x5b2b,0x5b0b,0x638d,0x636c,0x634c,0x632c,0x5b2b,0x5b0b,0x634c,0x5b2c,0x52ca,0x530b,0x5b2b,0x634c,0x6b6d,0x636c,0x5b2b,0x5b2b,0x632c,0x632c,0x5b2b,0x52ea,0x5b0b,0x5b2b,0x530b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x530b,0x5b0b,0x634c,0x634c,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x52eb,0x530b,0x634c,0x5b2c,0x52eb,0x52ea,0x52ca,0x5b2c,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x5b4c,0x5b0b,0x634c,0x52ea,0x52eb,0x5b2c,0x636d,0x634c,0x52eb,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x4a89,0x5b0b,0x52eb,0x634c,0x52eb,0x52ca,0x5b2c,0x5b0b,0x5b4c,0x5b0b,0x52ca,0x52ea,0x5b0b,0x52ca,0x5b2b,0x5b2b,0x632c,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x52ca,0x530b,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x5b4c,0x530b,0x52ca,0x52ca,0x52ca,0x52ca,0x5b2c,0x634c,0x5b2c,0x4aaa,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x52eb,0x636c,0x636c,0x4a89,0x5b4c,0x636d,0x4a89,0x5b4c,0x5b2c,0x52ea,0x5b0b,0x634c,0x634c,0x52ca,0x634c,0x636d,0x52ca,0x52ca,0x52eb,0x5aeb,0x5b4c,0x636c,0x5b0b,0x530b,0x5b2b,0x636c,0x5b0b,0x5b2b,0x5b2c,0x5b4c,0x52eb,0x5b2c,0x634c,0x530b,0x5b2c,0x5b2c,0x636d,0x638d,0x636c,0x636c,0x6b8d,0x634c,0x638d,0x634c,0x638d,0x5b4c,0x5b4c,0x636c,0x5b0b,0x634c,0x6b8d,0x634c,0x636d,0x636d,0x5b4c,0x638d,0x636c,0x6b8d,0x5b2c,0x634c,0x638d,0x6b8d,0x634c,0x634c,0x636c,0x6b8d,0x636c,0x5b4c,0x636d,0x5b4c,0x634c,0x6b8d,0x634c,0x5b2b,0x638d,0x636c,0x636c,0x6b6d,0x636c,0x6b8d,0x6bad,0x6b8d,0x634c,0x636d,0x634c,0x634c,0x636c,0x632c,0x636d,0x636d,0x636c,0x638d,0x634c,0x6b8d,0x636c,0x636d,0x6b8d,0x634c,0x5b4c,0x636d,0x636c,0x636d,0x636c,0x634c,0x634c,0x634c,0x6b6d,0x6b8d,0x634c,0x6b8d,0x6b6c,0x6bad,0x6b6d,0x73ae,0x6b8d,0x6bad,0x636c,0x634c,0x634c,0x634c,0x634c,0x636c,0x636d,0x6b6d,0x5b0b,0x6b6d,0x73ce,0x632c,0x632c,0x634c,0x632c,0x634c,0x634c,0x738d,0x634c,0x632c,0x634c,0x5b0b,0x634c,0x632c,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x6b6d,0x5b0b,0x52ca,0x5aeb,0x6b6d,0x52cb,0x630b,0x5aeb,0x5b0b,0x5aeb,0x632c,0x528a,0x5b0b,0x5b0b,0x5b2c,0x634c,0x636c,0x5b0b,0x5b0c,0x634c,0x632c,0x5aeb,0x52aa,0x632c,0x634c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52aa,0x5aeb,0x634d,0x632c,0x5aeb,0x52ca, +0x73ee,0x6bce,0x6bad,0x73ce,0x6bae,0x6bae,0x73ef,0x6bce,0x6bad,0x73ce,0x73ee,0x6bce,0x6bad,0x73ce,0x6bad,0x6bad,0x636d,0x73ee,0x73ae,0x6b6d,0x636c,0x636d,0x634c,0x634c,0x634c,0x636c,0x636c,0x636c,0x634c,0x6b8d,0x6bad,0x530b,0x5b2b,0x636d,0x634c,0x634c,0x52ea,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x634c,0x5aeb,0x52aa,0x5b0b,0x4a89,0x52ca,0x52ca,0x52ca,0x4aa9,0x5b0b,0x5b0b,0x52eb,0x52aa,0x52ca,0x52aa,0x52ca,0x4a89,0x4269,0x4269,0x52ea,0x52aa,0x52aa,0x4a69,0x52ca,0x52ea,0x52ca,0x4248,0x4aaa,0x4aaa,0x4248,0x4a89,0x4a89,0x4a89,0x4a69,0x52ca,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x4269,0x4a89,0x4a89,0x4a69,0x4a89,0x4269,0x4248,0x3a07,0x3a07,0x4248,0x4248,0x4228,0x3a07,0x4249,0x3a07,0x31c6,0x31e7,0x31a6,0x31c7,0x4248,0x4248,0x3a28,0x3a07,0x3a28,0x4a89,0x39e7,0x3a28,0x4228,0x52aa,0x4a69,0x4248,0x39e7,0x4248,0x3a07,0x4248,0x4a69,0x4a89,0x4228,0x4a69,0x4248,0x3a27,0x52ca,0x4268,0x39e7,0x39e7,0x3a07,0x4228,0x4248,0x3a07,0x4248,0x4248,0x4a89,0x4a69,0x4269,0x3a07,0x4248,0x4a89,0x4a69,0x4228,0x4a89,0x4248,0x39e7,0x3a28,0x4269,0x3a07,0x4249,0x4268,0x4268,0x52aa,0x52aa,0x4a89,0x4228,0x4268,0x4a89,0x4248,0x4248,0x4228,0x4248,0x4228,0x4269,0x52ca,0x4269,0x4248,0x4a69,0x4248,0x4a69,0x4228,0x4228,0x4aaa,0x4248,0x4269,0x4269,0x4aaa,0x4a89,0x4269,0x4268,0x52ca,0x4a89,0x4aaa,0x4a69,0x52eb,0x52eb,0x5b0b,0x4a89,0x52aa,0x52eb,0x73ce,0x52ca,0x528a,0x52eb,0x636d,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x52ea,0x5b2b,0x634c,0x5b0c,0x5b0c,0x6bad,0x5aea,0x634c,0x5b2b,0x5b0b,0x6bad,0x636c,0x634c,0x5b2c,0x634c,0x5b2b,0x6b8d,0x636c,0x5b0b,0x6b8d,0x73ce,0x634c,0x6bae,0x6b8d,0x5b0b,0x6b6d,0x634c,0x73ef,0x73ee,0x73ee,0x6b8d,0x73ce,0x636d,0x740f,0x7c0f,0x73ae,0x8430,0x8c91,0x8cd2,0x73ce,0x8471,0x8450,0x7c0f,0x7c30,0x740f,0x73ef,0x7c0f,0x7c0f,0x7c30,0x7c0f,0x8450,0x94b2,0x8470,0x7c2f,0x8c91,0x94b2,0x8c71,0x8c91,0x7c2f,0x8c71,0x8c71,0x8450,0x8c70,0x9cf2,0x8450,0x8cb1,0x94f3,0x9cf3,0x94d2,0x9d13,0x94d2,0x94b1,0x9cd2,0x8c91,0x8c91,0x8c70,0x8450,0x8c91,0x94f2,0x9cd2,0x94b2,0x94d2,0x94b2,0x8c71,0x94d2,0xa575,0x9d34,0x94b2,0x94b2,0xa534,0x9d13,0xa554,0xad74,0x8cb1,0x94d2,0x94d2,0x94d2,0x9d13,0x94b2,0x9d13,0x9d13,0x94d2,0x8c91,0x8c91,0x94d2,0x94b2,0x8471,0x8cb2,0x8c71,0x8c71,0x94b2,0x8c71,0x8430,0x8450,0x8c71,0x8451,0x7c30,0x7c2f,0x8430,0x8c91,0x7c0f,0x8430, +0x31c6,0x2985,0x2985,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x3186,0x2965,0x31a6,0x31c6,0x39e7,0x3a07,0x31a6,0x2986,0x3186,0x39e7,0x39c7,0x2965,0x2965,0x2985,0x2965,0x31c6,0x2965,0x2945,0x2985,0x2965,0x31a6,0x2965,0x2144,0x2124,0x2965,0x2986,0x2945,0x2985,0x1903,0x2124,0x2965,0x18c3,0x2965,0x2104,0x1903,0x2144,0x2124,0x2945,0x10a2,0x18e3,0x2103,0x2104,0x2124,0x2124,0x2944,0x2103,0x10a2,0x2124,0x2104,0x2103,0x18e3,0x18c3,0x18c3,0x2145,0x10c3,0x18c3,0x2103,0x18e3,0x2124,0x18e3,0x2104,0x18e3,0x2124,0x2124,0x2103,0x18e3,0x18e3,0x18c3,0x2124,0x18e3,0x2124,0x2124,0x2104,0x1082,0x1082,0x18c3,0x1081,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x10a2,0x10a2,0x1903,0x18e3,0x18c3,0x1082,0x18e3,0x18e3,0x10a2,0x10a2,0x2104,0x2124,0x2103,0x2104,0x2103,0x2104,0x18c3,0x2124,0x2944,0x1903,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x0820,0x2144,0x2124,0x18e3,0x18e3,0x2104,0x18e3,0x2965,0x18e3,0x2104,0x18e3,0x18c3,0x2124,0x2124,0x2945,0x2103,0x1903,0x2104,0x18e3,0x2124,0x2124,0x2124,0x1903,0x2965,0x2124,0x1903,0x2144,0x2104,0x2945,0x31c6,0x2965,0x31a6,0x1903,0x2124,0x2965,0x31a6,0x2945,0x2985,0x2965,0x18c2,0x2986,0x2986,0x2124,0x1903,0x18e3,0x31a6,0x2145,0x18e3,0x1903,0x1904,0x2965,0x31a6,0x2944,0x2124,0x18e3,0x4a69,0x3186,0x20e4,0x2124,0x31a6,0x39e7,0x3186,0x18e3,0x39c7,0x31a6,0x3186,0x18e3,0x31c6,0x31a6,0x31a6,0x4a69,0x39e7,0x2124,0x2965,0x39e7,0x39e7,0x39e7,0x39c7,0x3186,0x31a6,0x3a07,0x2986,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x39c6,0x2965,0x3186,0x39e7,0x2145,0x4a89,0x4228,0x4a69,0x3a07,0x4208,0x4a69,0x31c6,0x52cb,0x4a48,0x4228,0x4a69,0x5acb,0x4249,0x52aa,0x52aa,0x52aa,0x4a69,0x4248,0x4228,0x52aa,0x4a69,0x4a8a,0x52ca,0x5aeb,0x52aa,0x4a89,0x39c7,0x630b,0x5289,0x4a48,0x5289,0x52aa,0x5acb,0x630c,0x5acb,0x634c,0x634c,0x5aeb,0x5aea,0x73ae,0x6b6d,0x6b4c,0x73ae,0x7bcf,0x6b8d,0x73ae,0x738d,0x5b0b,0x632c,0x634c,0x73ce,0x73ae,0x7c0f,0x7bce,0x8410,0x8430,0x7bef,0x7c0f,0x94b2,0x8430,0x8c71,0x8430,0x9491,0x8c71,0x9cf3,0x8c71,0x840f,0x7bef,0x7c0f,0x7bef,0x94b1,0x8c71,0x8450,0x7bef,0x7bcf,0x840f,0x8450,0x8450,0x8c71,0x8430,0x8c91,0x7bef,0x7c0f,0x8430,0x738d,0x73ce,0x73ae,0x7bef,0x8c91,0x7bef,0x7bef,0x7bce,0x7bce,0x8c71,0x8c71, +0x1062,0x1082,0x18a3,0x1062,0x0840,0x0820,0x0000,0x0021,0x10c3,0x10c3,0x0861,0x10a2,0x0821,0x0820,0x18c2,0x10a2,0x1082,0x0040,0x0861,0x10a2,0x18c2,0x10a2,0x10a2,0x0861,0x10a2,0x10a2,0x1082,0x10a2,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x18c3,0x10c3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x10a2,0x10c3,0x10a2,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x10c2,0x10a2,0x1081,0x0881,0x10c2,0x10a2,0x10a2,0x18c3,0x1081,0x1081,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10a2,0x10c2,0x1082,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x1082,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10c3,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x18c3,0x0861,0x0841,0x10a2,0x0881,0x1061,0x1082,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x10a2,0x10a2,0x10c2,0x18e3,0x10a2,0x1082,0x1082,0x10c2,0x1082,0x10a2,0x0841,0x10a2,0x0861,0x1081,0x10a2,0x0861,0x0861,0x1081,0x10a2,0x1082,0x0861,0x10a2,0x10a2,0x1082,0x0861,0x0841,0x0820,0x1081,0x1081,0x0841,0x1082,0x0020,0x0000,0x0840,0x0841,0x1082,0x10a2,0x0862,0x0000,0x0041,0x0840,0x0020,0x10a2,0x0000,0x0000,0x0841,0x1082,0x1082,0x0000,0x0020,0x0861,0x1082,0x1082,0x0000,0x0000,0x0020,0x0020,0x0861,0x0000,0x0841,0x0841,0x1082,0x0020,0x0000,0x0020,0x10a2,0x0000,0x0020,0x0841,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0021,0x0000,0x0020,0x0840,0x0840,0x0841,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0020,0x0000,0x0000,0x0861,0x0020,0x0000,0x18c2,0x0000, +0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a28,0x31c6,0x39e7,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x4248,0x3a07,0x3a07,0x3a28,0x4228,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4228,0x39e7,0x3a07,0x3a07,0x4228,0x3a28,0x39e7,0x3a07,0x3a07,0x3a28,0x4228,0x39e7,0x4228,0x4248,0x3a28,0x4228,0x4228,0x3a07,0x4207,0x4248,0x4228,0x4228,0x3a27,0x3a07,0x4228,0x4228,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x4228,0x3a07,0x4248,0x4228,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x39e7,0x4248,0x3a07,0x4228,0x3a28,0x4268,0x4228,0x3a07,0x39e7,0x3a08,0x3a07,0x39e7,0x39e7,0x3a08,0x3a28,0x3a08,0x4228,0x39c6,0x3a07,0x31e7,0x39e7,0x3a07,0x3a28,0x3a07,0x4228,0x3a07,0x4228,0x3a08,0x3a08,0x3a07,0x3a07,0x4207,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x4248,0x4228,0x3a28,0x3a28,0x4248,0x4268,0x4248,0x4248,0x4269,0x4228,0x4228,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4248,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4228,0x4249,0x3a28,0x4228,0x4a89,0x3a28,0x3a28,0x3a28,0x4228,0x4228,0x3a07,0x3a28,0x4208,0x3a08,0x4249,0x4228,0x4228,0x4228,0x4269,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4248,0x4249,0x4208,0x4248,0x4248,0x4248,0x4269,0x4228,0x4228,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4248,0x4228,0x4228,0x3a07,0x4248,0x4228,0x4269,0x4228,0x4248,0x4248,0x4248,0x4249,0x4248,0x4228,0x4248,0x4248,0x4208,0x4228,0x4228,0x4249,0x4248,0x4248,0x4228,0x3a08,0x4228,0x4248,0x4228,0x4208,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4208,0x4228,0x4228,0x3a07,0x3a08,0x3a08,0x4208,0x3a08,0x4228,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x3a08,0x4208,0x3a07,0x3a08,0x4228,0x3a08,0x4208,0x4228,0x4248,0x3a08,0x4228,0x4a69,0x4248,0x4208,0x3a08,0x4228,0x3a07,0x4208,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x4228,0x4208,0x39e7,0x3a07,0x39e7,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x39e7,0x3a08,0x39e7,0x3a07,0x39e7,0x3a07,0x4208,0x4208,0x4228,0x4228,0x4208,0x4208,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c6,0x39e7,0x39c7,0x39c7,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2124,0x2124,0x2945, +0x3a28,0x4228,0x39e7,0x31e7,0x4228,0x3a07,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x4208,0x3a07,0x3a07,0x4208,0x4228,0x4208,0x3a28,0x3a07,0x4228,0x4228,0x3a07,0x4208,0x4208,0x3a07,0x3a08,0x4228,0x4248,0x3a07,0x4248,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a28,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x3a07,0x4248,0x3a28,0x4228,0x4248,0x3a07,0x3a28,0x3a28,0x4228,0x4228,0x4228,0x3a28,0x3a27,0x4248,0x4248,0x4248,0x3a07,0x3a28,0x4228,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4228,0x4248,0x3a07,0x4228,0x4248,0x4228,0x4248,0x4227,0x39e7,0x3a28,0x4248,0x4228,0x4248,0x4228,0x4248,0x4a69,0x4228,0x4248,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4249,0x4248,0x3a28,0x3a07,0x4228,0x4248,0x4248,0x3a07,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4228,0x3a28,0x4a89,0x4228,0x4268,0x4248,0x4228,0x4248,0x4248,0x4269,0x4a89,0x4248,0x4248,0x4228,0x4248,0x4aaa,0x4a69,0x4248,0x4a89,0x4248,0x4a89,0x4a89,0x4a89,0x4269,0x4269,0x4a89,0x4248,0x4a69,0x4269,0x4248,0x4a89,0x4a89,0x4268,0x4a89,0x4268,0x4268,0x4a89,0x4228,0x4248,0x4a69,0x4a49,0x4a69,0x4248,0x4a89,0x4248,0x4a69,0x4269,0x4a69,0x4a69,0x4269,0x4248,0x4aaa,0x4a89,0x4248,0x52aa,0x52aa,0x4a89,0x4a89,0x4248,0x4a69,0x4a89,0x4a69,0x4a89,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a69,0x4a89,0x52aa,0x4aaa,0x4a89,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4aaa,0x52aa,0x4a89,0x52ca,0x4a89,0x4a89,0x4a89,0x4a89,0x4aaa,0x4a89,0x4a69,0x4a89,0x4a89,0x52aa,0x4a89,0x4a89,0x4a8a,0x4a69,0x4aa9,0x4a89,0x4a69,0x4a89,0x5aeb,0x4a89,0x52aa,0x4a89,0x4aaa,0x4248,0x4a89,0x52a9,0x52aa,0x5b0b,0x52aa,0x4a69,0x4aaa,0x4a89,0x4a89,0x4a89,0x4aaa,0x52ca,0x4a89,0x4a8a,0x4aaa,0x4a69,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4aaa,0x4a69,0x4249,0x4249,0x4a89,0x4a89,0x52aa,0x52aa,0x4a8a,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x4a89,0x4aaa,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x4248,0x4a69,0x4269,0x4248,0x4a49,0x4a48,0x4a89,0x4a69,0x4a69,0x4a48,0x4228,0x4a69,0x4a89,0x4a69,0x4a49,0x4a69,0x4a69,0x4a8a,0x4a49,0x4a49,0x4a49,0x4228,0x528a,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x4228,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4a69,0x4a69,0x4248,0x4248,0x4a69,0x4249,0x4a69,0x4a69,0x4a89,0x5aca,0x4a89,0x4a89,0x4a8a,0x4a69,0x4a89,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4248,0x4228,0x5289,0x4a69,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4a89, +0x4a49,0x4228,0x4228,0x4a69,0x4228,0x3a07,0x4248,0x4228,0x4248,0x4208,0x4248,0x4248,0x3a07,0x4248,0x4a49,0x4208,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x52aa,0x4228,0x4228,0x4a48,0x4a48,0x4248,0x4248,0x4248,0x4207,0x4a48,0x3a07,0x4248,0x4228,0x4208,0x4a89,0x4a69,0x4228,0x4228,0x4228,0x4249,0x4a69,0x4a69,0x4269,0x4248,0x4228,0x4248,0x4248,0x4248,0x4269,0x4248,0x4228,0x4269,0x4a69,0x4a69,0x4248,0x4249,0x4248,0x4a69,0x4a89,0x4269,0x4228,0x4a69,0x4269,0x4269,0x4a69,0x4228,0x4a89,0x4269,0x4268,0x4a89,0x4a89,0x4a89,0x4aaa,0x4a8a,0x4228,0x4228,0x4228,0x4a69,0x4a89,0x4208,0x4248,0x4269,0x4248,0x4a89,0x4269,0x4a89,0x4268,0x4a89,0x4269,0x4269,0x4269,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4228,0x4248,0x4a69,0x4a89,0x4248,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4268,0x4a69,0x4248,0x4a89,0x4a89,0x4a89,0x4269,0x4a69,0x4269,0x4aa9,0x4aaa,0x4268,0x4aaa,0x4a89,0x52ca,0x4a69,0x4248,0x4a89,0x4a69,0x4a89,0x4a89,0x4aa9,0x4269,0x4269,0x4aa9,0x4aaa,0x52ca,0x4aa9,0x4a89,0x4aca,0x4aaa,0x4248,0x4a69,0x4269,0x4a89,0x4a89,0x4a89,0x4a89,0x52ca,0x4269,0x4a89,0x4a89,0x4a69,0x52aa,0x4248,0x4a89,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x4a89,0x4aaa,0x52aa,0x4a89,0x4a89,0x4a89,0x4aa9,0x4a89,0x4a69,0x4a89,0x4aaa,0x4a89,0x52ca,0x4a89,0x52aa,0x52ea,0x4269,0x4a89,0x4aa9,0x52aa,0x52aa,0x4aaa,0x4aaa,0x52eb,0x52ca,0x52ea,0x52ea,0x52ca,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52aa,0x52ca,0x52eb,0x5b2c,0x52ca,0x52ca,0x52ca,0x52aa,0x4a89,0x52aa,0x4a8a,0x52ca,0x52ca,0x52ca,0x4aa9,0x4a89,0x52ca,0x52ca,0x52aa,0x52eb,0x5b0b,0x52ca,0x528a,0x5aeb,0x5b0b,0x52ea,0x5aeb,0x52aa,0x4a89,0x4a8a,0x4a89,0x4a89,0x52aa,0x5b0b,0x5aeb,0x5aca,0x4aaa,0x52aa,0x52eb,0x52ca,0x4a69,0x528a,0x4a69,0x52aa,0x52ca,0x4a69,0x4a69,0x4a89,0x4a89,0x4a89,0x52aa,0x52eb,0x528a,0x52aa,0x52aa,0x52ca,0x4a89,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x52aa,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4a69,0x4a69,0x4a69,0x4a69,0x4a49,0x4248,0x4a69,0x4a48,0x4a48,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a69,0x4228,0x4248,0x4249,0x4a69,0x4a69,0x4a69,0x4249,0x4a49,0x4a69,0x4a89,0x4248,0x4a69,0x4a69,0x4a49,0x4a69,0x4a69,0x4249,0x4228,0x4a49,0x4a49,0x4a69,0x4a48,0x52aa,0x4a69,0x4a8a,0x4a89,0x4a69,0x4a89,0x4a69,0x4248,0x4a69,0x528a,0x4a69,0x4a69,0x4a69,0x4a69, +0x3185,0x31c6,0x31a6,0x39c6,0x39c6,0x31a6,0x2965,0x2986,0x31a6,0x2985,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x3185,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x39c6,0x3186,0x31c6,0x31a6,0x3186,0x3185,0x31a6,0x2965,0x3186,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x39e7,0x31a6,0x39c6,0x39c7,0x2985,0x31c6,0x31c6,0x39c6,0x31c6,0x39c6,0x39c7,0x39c6,0x31a6,0x39c6,0x31c6,0x39e7,0x31c6,0x31a6,0x31a6,0x39c6,0x31c6,0x31a6,0x39c7,0x31a6,0x3a07,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x39e7,0x31a6,0x3185,0x3186,0x39e7,0x39c7,0x3186,0x2965,0x31c6,0x31c6,0x31a6,0x2985,0x39e7,0x39c6,0x39c6,0x3186,0x2985,0x31a6,0x31c6,0x39c7,0x31c6,0x31c6,0x39e7,0x3185,0x3186,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x2985,0x31e7,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a5,0x31c6,0x31c6,0x31a6,0x31c6,0x39e7,0x39e7,0x31c6,0x31a6,0x31a6,0x31a6,0x3a07,0x31a6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x31a5,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31c6,0x31c6,0x31a6,0x3a07,0x2985,0x31c6,0x31c7,0x31a6,0x3a07,0x39e7,0x31c6,0x31c6,0x31a6,0x31c6,0x39e7,0x31a6,0x31a6,0x3186,0x31c6,0x31c7,0x31e6,0x31c6,0x31c6,0x31a6,0x39c6,0x31a6,0x2965,0x31c6,0x39e7,0x39e7,0x39e7,0x3a07,0x31c6,0x39e7,0x31a6,0x31c6,0x31c6,0x31a6,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x31a6,0x4208,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x39e7,0x4248,0x31e7,0x39e7,0x4228,0x39e7,0x31a6,0x39c7,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a6,0x31a6,0x31c6,0x39e7,0x39c7,0x4248,0x4a69,0x31c6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x39e6,0x3a27,0x3a07,0x39c7,0x31c6,0x31c6,0x39e7,0x39e7,0x31a6,0x39c7,0x31a6,0x39e7,0x31a6,0x31c6,0x3186,0x31a6,0x31c6,0x31c6,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x31c6,0x39e7,0x31c6,0x31c6,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39c6,0x31c6,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31c6,0x3a07,0x4228,0x39c6,0x31a6,0x31a6,0x3a07,0x3a07,0x39c7,0x31c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31c6,0x39c7,0x31a6,0x39c7,0x39e7,0x4208,0x4228,0x39e7,0x39e7,0x39c6,0x39c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39e7,0x31c6,0x4228,0x4208,0x4a49,0x528a,0x3a08,0x4a49,0x4a69, +0x52ca,0x52ca,0x52ea,0x52ca,0x5b0b,0x5aea,0x52ca,0x5aea,0x5b0b,0x52ca,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x5aca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x52ca,0x4a69,0x4aa9,0x5aea,0x52aa,0x4a89,0x52ca,0x5aeb,0x52ea,0x52ea,0x5b0b,0x5aeb,0x52aa,0x4aaa,0x52ca,0x5aeb,0x52ea,0x52ea,0x52eb,0x5b0b,0x52eb,0x52aa,0x52ea,0x52ea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x5aea,0x52ca,0x52ca,0x5289,0x5aca,0x52aa,0x52ca,0x52ea,0x52ca,0x52ca,0x4aa9,0x52ca,0x5b0b,0x52ca,0x52ca,0x52aa,0x4a89,0x4a69,0x52ca,0x4a89,0x5aeb,0x4aa9,0x4aa9,0x52ca,0x4a89,0x52ca,0x52ca,0x52aa,0x52ca,0x52ea,0x4aa9,0x52ca,0x528a,0x4a89,0x52ea,0x52ca,0x52ea,0x5b0b,0x52a9,0x52aa,0x52ca,0x52ca,0x4a89,0x4aa9,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x5aeb,0x52aa,0x52ca,0x52ea,0x52ea,0x52ca,0x52ea,0x52ea,0x52ca,0x52ca,0x5b0b,0x52ea,0x4a89,0x52ca,0x5b2b,0x52aa,0x52aa,0x52ea,0x52ca,0x5b0b,0x5aeb,0x52ca,0x52ca,0x4a89,0x52ca,0x52ca,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x52ca,0x52ea,0x52ea,0x52eb,0x52ea,0x52ca,0x52ca,0x52ca,0x4aa9,0x5b0b,0x52eb,0x52ea,0x5aeb,0x52ea,0x52eb,0x52eb,0x5b0b,0x52ca,0x4a89,0x4aaa,0x52eb,0x52aa,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x5b0b,0x5b0b,0x5b0b,0x52aa,0x4aaa,0x530b,0x52ca,0x52ca,0x52ca,0x4aa9,0x52a9,0x52ca,0x52ca,0x52ea,0x5aeb,0x52ca,0x4aa9,0x52ca,0x52eb,0x4aaa,0x52ca,0x4a89,0x52ca,0x52ca,0x4a89,0x52eb,0x5aeb,0x5aeb,0x52ea,0x52ca,0x5b0b,0x5aeb,0x5b0b,0x632c,0x52ca,0x5b2b,0x5b2c,0x52eb,0x52eb,0x52ca,0x52aa,0x52eb,0x52ea,0x5b0b,0x52ca,0x4aaa,0x52ca,0x5aca,0x5b0b,0x5b0b,0x52aa,0x5aeb,0x5b0b,0x52aa,0x52ca,0x4aaa,0x5b2c,0x632c,0x52cb,0x5b0b,0x52ca,0x5b0b,0x4aaa,0x4a89,0x5b0b,0x52ea,0x5aea,0x52eb,0x52ca,0x5aeb,0x5b2c,0x4a89,0x52ca,0x5acb,0x5aeb,0x5aeb,0x4a89,0x52aa,0x5aeb,0x52eb,0x52ca,0x52ca,0x52ca,0x52ca,0x4a8a,0x52aa,0x52ca,0x52ca,0x52aa,0x4a69,0x4a89,0x52eb,0x52aa,0x52aa,0x4a8a,0x4a89,0x52aa,0x4aaa,0x52ca,0x52aa,0x4aaa,0x52aa,0x4248,0x52aa,0x4a69,0x5acb,0x4a69,0x4a69,0x4a69,0x5289,0x4a49,0x4a89,0x4a69,0x4a89,0x4a69,0x528a,0x5aeb,0x528a,0x4248,0x4a69,0x4a89,0x4a89,0x4a48,0x4a49,0x4a89,0x4a49,0x4a69,0x4a69,0x4a69,0x4269,0x4a89,0x4248,0x4248,0x5289,0x4248,0x4228,0x4228,0x4a69,0x4228,0x4a48,0x4248,0x39e7,0x4228,0x4a89,0x5289,0x4a48,0x4228,0x4228,0x4207,0x4207,0x4228,0x4228,0x3a08,0x4208,0x4228,0x4248,0x4228,0x31c7,0x39e7,0x4248,0x4208,0x4228, +0x5b0b,0x5b2b,0x632b,0x5b0b,0x52eb,0x52ca,0x636c,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5aeb,0x52eb,0x52ea,0x5b2b,0x634c,0x5b2c,0x52eb,0x5b0b,0x5aeb,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5aeb,0x636c,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x5b4c,0x634c,0x634c,0x5b2b,0x5b4c,0x634c,0x5b0b,0x5b4b,0x530b,0x5b0b,0x5b2c,0x5b2b,0x636c,0x5b2c,0x52eb,0x5b0b,0x634c,0x5b0b,0x5b2c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x52eb,0x5b2b,0x52ca,0x5b2b,0x5b2c,0x52ea,0x530a,0x52ea,0x5b4c,0x5b2b,0x634c,0x5b0b,0x5b0b,0x6b8d,0x530b,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x634c,0x5b2b,0x52eb,0x4aca,0x52eb,0x5b4c,0x5b0b,0x5b0b,0x634c,0x634c,0x52ca,0x632c,0x5b2b,0x52ea,0x5b4c,0x634c,0x636c,0x638d,0x5b2b,0x5b4c,0x636d,0x5b4c,0x634c,0x636c,0x634c,0x632c,0x5b2b,0x5b2b,0x636c,0x6b8d,0x5b2b,0x5b2b,0x5b6c,0x638d,0x5b4c,0x52ea,0x5b4c,0x5b4c,0x5b2b,0x636c,0x5b4c,0x638d,0x5b4c,0x5b4c,0x636c,0x5b4c,0x5b2c,0x636d,0x5b2b,0x5b4c,0x634c,0x634c,0x6bad,0x638d,0x638d,0x636c,0x5b4c,0x5b6c,0x5b2c,0x634c,0x5b2c,0x5b2b,0x638d,0x636c,0x638d,0x5b2b,0x5b4c,0x634c,0x634c,0x5b2b,0x636c,0x636c,0x634c,0x634c,0x5b2b,0x5b2b,0x634c,0x5b4c,0x634c,0x5b4c,0x634c,0x634c,0x634c,0x636c,0x5b4c,0x634c,0x634c,0x636c,0x634c,0x5b2b,0x5b4c,0x5b6c,0x636c,0x638d,0x634c,0x632c,0x638d,0x636d,0x634c,0x5b4c,0x636c,0x636d,0x6b8d,0x6b6d,0x6b8d,0x634c,0x636d,0x5b2c,0x636c,0x636d,0x5b4c,0x5b2b,0x6b8d,0x636d,0x634c,0x638d,0x5b4c,0x634c,0x634c,0x6b6d,0x636c,0x5b2c,0x636d,0x636c,0x634c,0x636c,0x5b2c,0x634c,0x634c,0x632c,0x634c,0x632c,0x636c,0x634c,0x5b2b,0x6b8d,0x6b8d,0x634c,0x636c,0x636d,0x634c,0x636d,0x634c,0x632c,0x632c,0x632c,0x634c,0x5b2c,0x634c,0x636d,0x634c,0x632c,0x632c,0x6b6d,0x6b8d,0x634c,0x6b6d,0x634c,0x634c,0x5b0b,0x632c,0x634c,0x634c,0x634c,0x632c,0x632c,0x632c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x5b0b,0x5b0b,0x632b,0x5b2b,0x632c,0x632c,0x632c,0x632c,0x632b,0x5aeb,0x5b2b,0x632c,0x6b4c,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x630b,0x634c,0x634c,0x634c,0x632c,0x5b0b,0x5aeb,0x634c,0x6b6d,0x5aeb,0x634c,0x6b4c,0x5b0b,0x632c,0x634c,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x634c,0x632c,0x632c,0x5b0b, +0x5b0b,0x632c,0x5aeb,0x52aa,0x5b2b,0x632c,0x5aeb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x632c,0x634c,0x634c,0x52ea,0x52ca,0x5b2c,0x5b2b,0x5aea,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x52eb,0x5aeb,0x5b2c,0x52eb,0x52ea,0x5b0b,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x634c,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x52ca,0x634c,0x634c,0x5b2c,0x5b2b,0x634c,0x530b,0x5b0b,0x5b0b,0x52ca,0x52ea,0x5b0b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x634c,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x52ea,0x634c,0x5b2b,0x5b4b,0x634c,0x52aa,0x52eb,0x5b2b,0x5b4c,0x634c,0x634c,0x634c,0x636c,0x634c,0x5b0b,0x632c,0x5b0b,0x634c,0x634c,0x636c,0x634c,0x5b2b,0x636c,0x636c,0x5b2b,0x5b0b,0x5b2b,0x5b4c,0x5b0b,0x5b2c,0x634c,0x634c,0x6b8d,0x634c,0x634c,0x5b2b,0x5b0b,0x634c,0x5b2c,0x636c,0x530b,0x634c,0x5b2c,0x530b,0x5b2b,0x52ea,0x5b0b,0x634c,0x5b2b,0x634c,0x52eb,0x52eb,0x5b4c,0x5b4c,0x52ca,0x4aaa,0x52eb,0x5b2c,0x636c,0x5b0b,0x530b,0x530b,0x5b4c,0x634c,0x5b2c,0x5b0b,0x5b0b,0x5b4c,0x4aca,0x52eb,0x634c,0x636c,0x636c,0x5b2b,0x5b2b,0x636c,0x5b4c,0x5b2b,0x636c,0x5b2b,0x52eb,0x634c,0x5b0b,0x632c,0x634c,0x6bad,0x5b4c,0x634c,0x5b2c,0x632c,0x5b2b,0x5b4c,0x636d,0x634c,0x5b2c,0x636d,0x5b2b,0x5b2b,0x634c,0x52ea,0x5b2b,0x632c,0x632c,0x5b2c,0x636c,0x5b0b,0x5b4c,0x636c,0x634c,0x5b2b,0x5b2b,0x636d,0x5b2c,0x5b0b,0x636c,0x634c,0x5b2c,0x634c,0x634c,0x632c,0x5aeb,0x5b0b,0x52eb,0x632c,0x632c,0x632c,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x634c,0x632c,0x5b0b,0x5b0b,0x634c,0x5b2c,0x636d,0x6b6d,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x634c,0x5aeb,0x5b0b,0x5b2b,0x634c,0x5b0b,0x634c,0x632c,0x634c,0x632c,0x5b0b,0x632b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x632c,0x630b,0x5aeb,0x632c,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5aca,0x52ca,0x5acb,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x632c,0x5aeb,0x5aeb,0x5b0b,0x632c,0x5b2c,0x5b0b,0x634c,0x6b4c,0x630b,0x5b0b,0x5aeb,0x5b2b,0x632c,0x5b0b,0x5aeb,0x5b2b,0x5aeb,0x632c,0x5aeb,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5aeb,0x632c,0x5b2c,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x630b,0x5aeb,0x5aeb,0x52aa,0x5b0b,0x5b0b,0x5aeb,0x632c,0x5aeb, +0x632c,0x634c,0x5b0b,0x630c,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x52ea,0x5aeb,0x5b0b,0x634c,0x632b,0x52ca,0x5aeb,0x5b0b,0x634c,0x52ca,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x5b2c,0x632c,0x5b2b,0x632c,0x5b0b,0x5b2b,0x5aeb,0x5b2b,0x530b,0x5b0b,0x634c,0x5aeb,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5aeb,0x52ca,0x5aeb,0x5b0b,0x52ea,0x52ea,0x4a8a,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x52ea,0x52eb,0x52eb,0x52eb,0x5b0b,0x5b4c,0x530b,0x4aa9,0x5b0b,0x632c,0x52ea,0x5b2b,0x5b0b,0x52eb,0x5b2c,0x632c,0x530b,0x52eb,0x5b0b,0x5aeb,0x5b2c,0x5b2b,0x632c,0x530b,0x52ea,0x5b4c,0x638c,0x634c,0x636c,0x5b4c,0x5b4c,0x5b2c,0x4aaa,0x5b2b,0x5b0b,0x530b,0x5b2b,0x5b4c,0x5b2c,0x52eb,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x636c,0x5b2b,0x636c,0x636c,0x5b2b,0x52ea,0x634c,0x636c,0x5b2b,0x52ea,0x52ea,0x5b2b,0x530b,0x530b,0x5b4c,0x634c,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x5b2c,0x5b0b,0x5b2c,0x5b2c,0x634c,0x636c,0x5b2b,0x6b8d,0x638c,0x5b4c,0x5b2b,0x52ea,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x634c,0x52eb,0x5b2c,0x5b2c,0x634c,0x634c,0x5b2b,0x5b2b,0x636c,0x530b,0x5b4c,0x530b,0x5b0b,0x5b4c,0x5b2b,0x530b,0x5b2b,0x5b4c,0x634c,0x530b,0x5b2c,0x5b2c,0x636c,0x5b4c,0x634c,0x5b2b,0x5b2b,0x638d,0x636c,0x5b2c,0x638d,0x634c,0x5b2c,0x634c,0x5b4c,0x636d,0x5b2c,0x5b2c,0x638d,0x5b0b,0x5b0b,0x636d,0x5b2c,0x634c,0x5b0b,0x5b4c,0x634c,0x634c,0x5b4c,0x5b2b,0x5b2b,0x634c,0x5b4c,0x5b4c,0x6b8d,0x636d,0x5b0b,0x634c,0x5b4c,0x636d,0x5b2b,0x5b2c,0x5b0b,0x5b2c,0x636d,0x636d,0x634c,0x5b2b,0x5b2c,0x5b0b,0x636d,0x636d,0x634c,0x5b0b,0x5b0b,0x636d,0x636c,0x5b0b,0x632c,0x5b2c,0x5b2c,0x636c,0x5b2b,0x634c,0x5b0b,0x632c,0x632c,0x632c,0x5b2c,0x5b0b,0x5b2c,0x636d,0x632c,0x634c,0x632c,0x5b0b,0x5b0b,0x5aeb,0x632c,0x632c,0x5b0b,0x5b2c,0x632c,0x632c,0x5b0b,0x5b2c,0x5b0b,0x5b0c,0x5b0b,0x632c,0x5b0c,0x5b2c,0x632c,0x5b0b,0x634c,0x632c,0x630c,0x630b,0x5b0c,0x5b2c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x632c,0x5aeb,0x5b0b,0x52eb,0x5b0b,0x632c,0x632c,0x632c,0x634c,0x5b0b,0x6b6d,0x634c,0x630b,0x634c,0x632b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x632c,0x5b0b,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0c,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x5aeb,0x5aeb,0x5b0b,0x5b2c,0x5aeb,0x632c,0x5b0b,0x5acb,0x630b,0x5b0b,0x632c,0x632c,0x634c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5aeb, +0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x632c,0x5b2b,0x5b2b,0x6bad,0x6bad,0x6bad,0x634c,0x5b2c,0x632c,0x5b2c,0x5b2c,0x73cd,0x6bad,0x5b0b,0x5b0b,0x634c,0x636c,0x636c,0x5b2b,0x636c,0x5b2b,0x634c,0x634c,0x636c,0x634c,0x634c,0x632c,0x634c,0x632c,0x5b0b,0x634c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x634c,0x634c,0x5b2b,0x634c,0x5b2c,0x5b2c,0x632c,0x5aeb,0x632c,0x5b2c,0x636c,0x636c,0x530b,0x5b2c,0x634c,0x5b0b,0x6b8d,0x636c,0x5b0b,0x5b2b,0x634c,0x636c,0x5b0b,0x5b0b,0x636c,0x638c,0x6bad,0x634c,0x5b2b,0x634c,0x636c,0x636c,0x5b0b,0x530b,0x634c,0x632c,0x5b2b,0x5b2c,0x634c,0x5aeb,0x6b6d,0x52ca,0x5b2b,0x634c,0x634c,0x52eb,0x636c,0x5b2c,0x6b8d,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x634c,0x5b2b,0x5b0b,0x4aca,0x5b2b,0x636d,0x5b0b,0x5aeb,0x5b0b,0x530a,0x634c,0x634c,0x634c,0x5b2b,0x5b2b,0x636c,0x5b4c,0x636c,0x6bad,0x634c,0x5b2b,0x634c,0x5b0b,0x5b2b,0x5b4c,0x52ea,0x5b2c,0x5b0b,0x5b4c,0x636c,0x5b2c,0x5b2b,0x5b2b,0x636d,0x638d,0x5b4c,0x636c,0x6bad,0x636c,0x638d,0x5b6c,0x634c,0x6b8d,0x634c,0x5b2b,0x636c,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x636d,0x5b0b,0x5b4c,0x638d,0x5b4c,0x638d,0x636c,0x52ea,0x530b,0x5b0b,0x638d,0x634c,0x636c,0x5b4c,0x638d,0x636d,0x5b4c,0x5b4c,0x5b4c,0x5b0b,0x5b2b,0x530b,0x5b4c,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b2c,0x634c,0x5b4c,0x636d,0x634c,0x530b,0x636d,0x530b,0x5b2c,0x5b4c,0x5b4c,0x636c,0x636d,0x5b2c,0x5b0b,0x638d,0x5b4c,0x638c,0x638d,0x636c,0x638d,0x634c,0x634c,0x6bad,0x636d,0x6b6d,0x6b8d,0x634c,0x634c,0x636d,0x5b2c,0x634c,0x5b0c,0x636d,0x6b8d,0x6b8d,0x636d,0x6b8d,0x634c,0x73ae,0x636d,0x634c,0x636c,0x6b8d,0x6b8d,0x636d,0x636d,0x634c,0x634c,0x634c,0x6b6c,0x634c,0x5b2c,0x632c,0x636d,0x634c,0x5b0c,0x5b0b,0x6b8d,0x634c,0x5b2b,0x634c,0x5b2c,0x5b4c,0x5b2b,0x636c,0x5b0b,0x5b0c,0x52eb,0x5b4c,0x5b0b,0x5b2c,0x634c,0x636d,0x634c,0x52eb,0x5aeb,0x5aeb,0x5b2c,0x632c,0x632c,0x5b0b,0x634c,0x634c,0x5b0b,0x5b0b,0x630c,0x630b,0x632c,0x632c,0x5b0b,0x632c,0x632c,0x5b0b,0x5b2b,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x630c,0x5aeb,0x5b0b,0x5b2c,0x6b6c,0x5aeb,0x5aeb,0x5b0c,0x5b0b,0x5b0b,0x52ca,0x52ca,0x52aa,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x634c,0x5aeb,0x5b0b,0x52ca,0x5aca,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x632c,0x5aca,0x5aca,0x5aeb,0x5aca,0x52ca,0x52ca,0x5b0b,0x52ca,0x632c,0x632c,0x5acb,0x52ca,0x5aca,0x5b0b,0x632c,0x5b0b,0x5aeb, +0x73ee,0x7bef,0x7c0f,0x6b8d,0x73ef,0x7c0f,0x740e,0x73ce,0x6b8d,0x6b8d,0x740f,0x6bae,0x73ce,0x7c2f,0x73ce,0x6bcd,0x638d,0x6bad,0x740f,0x73ee,0x6bad,0x73ce,0x6bcd,0x73ee,0x73ee,0x6bad,0x6bad,0x73ee,0x6bcd,0x636c,0x636c,0x636c,0x634c,0x636d,0x634c,0x634c,0x636c,0x634c,0x634c,0x638d,0x634c,0x5b2b,0x638d,0x6bce,0x5b0b,0x5b4c,0x636c,0x634c,0x636c,0x634c,0x636c,0x5b2b,0x636c,0x52ea,0x634c,0x6bad,0x52ca,0x5b0b,0x5b0b,0x5b2b,0x5b4b,0x5b2b,0x52ea,0x5b2c,0x5b2b,0x52ca,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x4a89,0x4269,0x5b0b,0x4a89,0x5aeb,0x4aa9,0x52ca,0x52ca,0x634c,0x5b0b,0x39e7,0x52ca,0x5b0b,0x5b0b,0x3a28,0x52ea,0x4248,0x4248,0x4269,0x3a28,0x4249,0x4228,0x4248,0x4aaa,0x4269,0x4228,0x52ca,0x4aaa,0x4228,0x4248,0x4269,0x4aa9,0x4268,0x52ca,0x4a89,0x4a89,0x52ca,0x4a69,0x4a89,0x4269,0x4a69,0x5aeb,0x4aa9,0x4268,0x4248,0x4248,0x4269,0x4248,0x4248,0x52aa,0x4269,0x4269,0x4a89,0x3a07,0x4248,0x4269,0x4248,0x4a69,0x4228,0x4228,0x4269,0x4248,0x3a07,0x4249,0x4248,0x4a89,0x4a89,0x4289,0x4a89,0x4a89,0x4269,0x4248,0x3a07,0x4a69,0x52ca,0x4289,0x4a89,0x4aa9,0x4a89,0x4248,0x3a28,0x4228,0x4a89,0x52ca,0x4aa9,0x4248,0x4228,0x4a89,0x4269,0x4228,0x4248,0x4a89,0x4a69,0x4268,0x4a89,0x4a89,0x4248,0x52ca,0x4269,0x4a69,0x4a89,0x4a89,0x4a69,0x52eb,0x52ca,0x4aaa,0x4aaa,0x52eb,0x4aaa,0x4a89,0x52ca,0x52ca,0x5b0b,0x52eb,0x52ca,0x52aa,0x634c,0x52ca,0x636c,0x52ea,0x5b2b,0x4aaa,0x5b2c,0x52eb,0x532b,0x5b4c,0x5acb,0x5b0b,0x5b0b,0x52eb,0x5aeb,0x5b2c,0x5b2c,0x5b2c,0x634c,0x6b8d,0x636d,0x52eb,0x636d,0x5b2c,0x632c,0x73ce,0x5b0b,0x634c,0x5b2b,0x636d,0x638d,0x636c,0x73ee,0x636d,0x636d,0x6b8d,0x6bad,0x6bae,0x7c0f,0x6bae,0x6b6d,0x6b8d,0x73ce,0x73ce,0x6bae,0x6b8d,0x6bae,0x6bae,0x73ce,0x7c0f,0x6b8d,0x7c0f,0x73ce,0x6bae,0x7c0f,0x73ae,0x73ce,0x7bef,0x73ef,0x73ce,0x7bef,0x73ef,0x7c30,0x8450,0x6bad,0x7c10,0x73ae,0x94b2,0x73ce,0x6bae,0x73ce,0x73ae,0x7bce,0x73ce,0x73ce,0x73ee,0x7c0f,0x73ae,0x7bef,0x73ce,0x73ee,0x7c0f,0x7c2f,0x7c0f,0x73ae,0x7bef,0x840f,0x73ce,0x73ae,0x8430,0x8c50,0x7c0f,0x7c0f,0x7c0f,0x8c71,0x73ae,0x6b8d,0x73ae,0x8430,0x8430,0x7c0f,0x8c91,0x73ee,0x73ce,0x6b6d,0x73ef,0x73ce,0x73ae,0x73ce,0x73ae,0x7bef,0x8430,0x73ae,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x73ae,0x73ce,0x73ce,0x8430,0x8430,0x7c0f,0x73ce,0x6b8d,0x73ae,0x73ae,0x636d,0x73ae,0x73ae,0x73ad,0x73ad,0x6b8d,0x632c, +0x52ca,0x52eb,0x52eb,0x5b0b,0x52eb,0x5b2b,0x52ca,0x5aea,0x52aa,0x4a89,0x5b0b,0x4269,0x52ca,0x52ca,0x52ca,0x4a89,0x4248,0x4a89,0x52eb,0x52ca,0x4aa9,0x4aaa,0x4268,0x4aaa,0x4a89,0x4248,0x4aa9,0x4a89,0x52ca,0x39e7,0x3a07,0x4248,0x4228,0x4a69,0x4269,0x3a07,0x4269,0x4248,0x4269,0x4248,0x4248,0x4228,0x4269,0x4a69,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x31a6,0x4a69,0x31a6,0x2985,0x3a08,0x3a08,0x31c6,0x31c6,0x4248,0x4228,0x3a08,0x4249,0x39e7,0x29a6,0x4228,0x2985,0x3a07,0x2985,0x2944,0x39e7,0x39e7,0x2985,0x31c6,0x31c6,0x2985,0x4228,0x31c6,0x2965,0x39e7,0x3186,0x2144,0x2965,0x31c7,0x2945,0x2945,0x31a6,0x2124,0x2965,0x2965,0x2124,0x2124,0x2145,0x2986,0x3a07,0x31e7,0x2965,0x31a6,0x2144,0x2965,0x31a6,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2965,0x2986,0x2986,0x2965,0x1904,0x2985,0x31a6,0x2945,0x2965,0x2985,0x2965,0x2144,0x2144,0x2144,0x2965,0x2104,0x2124,0x2124,0x2144,0x2945,0x2965,0x18e3,0x1903,0x1903,0x2124,0x2985,0x2124,0x2945,0x2985,0x2124,0x18e3,0x2124,0x2965,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2144,0x2944,0x1903,0x2985,0x2985,0x2144,0x2965,0x2124,0x31c7,0x2985,0x2144,0x2985,0x2986,0x39e7,0x31a6,0x2965,0x31a6,0x2985,0x31a6,0x2965,0x31a6,0x3a07,0x2965,0x31a6,0x31a6,0x1903,0x2965,0x31e7,0x2985,0x31e7,0x31c6,0x31e7,0x31e7,0x3a07,0x31e7,0x39e7,0x31c6,0x4228,0x39e7,0x31c6,0x31c6,0x4a69,0x39e7,0x31c6,0x4269,0x3a08,0x39e7,0x3a07,0x4228,0x4269,0x3a28,0x4a8a,0x4228,0x3a08,0x4a69,0x3a07,0x4a69,0x3a07,0x4a89,0x4248,0x4a89,0x3a07,0x52ca,0x4a8a,0x52eb,0x4a89,0x52ea,0x52aa,0x4aaa,0x52eb,0x4aaa,0x4269,0x52eb,0x52eb,0x5aeb,0x632c,0x5aeb,0x634c,0x52eb,0x5aeb,0x4a89,0x5aeb,0x52aa,0x52eb,0x73ae,0x52aa,0x5aeb,0x6b6d,0x73ae,0x6b8d,0x6b8d,0x6b8d,0x634c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x634c,0x636d,0x7bef,0x6b6d,0x6b8d,0x6b6d,0x632c,0x73ce,0x5b0b,0x636d,0x6b6d,0x6b8d,0x634c,0x6b4d,0x6b8d,0x6b6d,0x6b4c,0x6b6d,0x73ce,0x6bae,0x6b8e,0x6b4c,0x7bef,0x7bef,0x73cf,0x73ae,0x8430,0x8430,0x7bef,0x8c50,0x94b1,0x8c50,0x7bef,0x8450,0x8430,0x7c0f,0x7bef,0x7bef,0x8c71,0x8430,0x8410,0x8450,0x8450,0x7c0f,0x7bef,0x7bef,0x7c0f,0x8430,0x8450,0x7c10,0x8450,0x94b2,0x7c0f,0x8450,0x8c71,0x9cd3,0x8430,0x7c0f,0x7c0f,0x8c91,0x8450,0x8c71,0x94d2,0x840f,0x8430,0x7c0f,0x8471,0x8430,0x94d2,0x8c91,0x8450,0x8410,0x7c0f,0x7c0f, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0820,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0820,0x0000,0x0000,0x0840,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0820,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0821,0x0000,0x0000,0x0000,0x0000,0x0000,0x0861,0x0000,0x0000,0x0000,0x0000,0x0800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0841,0x0000,0x0000,0x0000,0x0000,0x10a2,0x0821,0x0000,0x0000,0x0000,0x0020,0x0000,0x1082,0x0861,0x0820,0x1082,0x1061,0x1081,0x1061,0x0861,0x0861,0x10a2,0x0000,0x0000,0x0020,0x1082,0x1081,0x18e3,0x18e3,0x18e3,0x0861,0x1082,0x18c3,0x18c3,0x0000,0x0000,0x2124,0x18c3,0x2124,0x18c3,0x18e3,0x2104,0x2103,0x31a6,0x2965,0x2965,0x20e3,0x2965,0x3186,0x2945,0x3186,0x2965,0x18e3,0x2945,0x2965,0x4208,0x4208,0x2966,0x2945,0x2945,0x39c7,0x31a7,0x2965,0x2985,0x31a6,0x39c7,0x39e7,0x4a49,0x39c7,0x4208,0x4228,0x4228,0x39e7,0x39e7,0x39e7, +0x3186,0x31c6,0x31a6,0x31c6,0x31a6,0x29a5,0x31c6,0x3a07,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31c6,0x31a6,0x31a5,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x39e7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2985,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x3186,0x3185,0x2985,0x31a6,0x2985,0x31a6,0x29a6,0x2985,0x2985,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x29a6,0x29a6,0x2985,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31a6,0x31c6,0x31a6,0x2986,0x2985,0x31c6,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2985,0x2985,0x2965,0x2965,0x3186,0x2985,0x3185,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2965,0x2985,0x3a07,0x31a6,0x2965,0x31a6,0x2965,0x2986,0x31c7,0x3186,0x2965,0x2965,0x2985,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2985,0x3185,0x2965,0x2985,0x2985,0x31c6,0x29a6,0x2965,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2945,0x3186,0x3186,0x2965,0x2144,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2945,0x2145,0x2945,0x2965,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2144,0x2965,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2144,0x2103,0x2103,0x2144,0x2124,0x2103,0x18c3,0x18e3,0x10a2,0x2104,0x2104,0x18c3,0x18e3,0x18c2,0x18a2,0x18e3,0x18e3,0x10a2,0x0020,0x0040,0x10a1,0x10a2,0x10a2,0x0840,0x0020,0x0840,0x0841,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, +0x39e7,0x3a07,0x3a08,0x3a07,0x3a28,0x3a28,0x3a07,0x4208,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x3a28,0x3a07,0x4208,0x3a07,0x3a08,0x3a07,0x39e7,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x39e7,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x4208,0x4228,0x3a07,0x3a28,0x4228,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x3a07,0x3a08,0x3a07,0x3a28,0x4228,0x3a07,0x4228,0x4208,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x4207,0x4228,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x3a07,0x3a08,0x3a07,0x4228,0x3a07,0x3a27,0x4228,0x3a07,0x4207,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x3a07,0x3a27,0x4248,0x4228,0x4248,0x4228,0x39e7,0x3a07,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4268,0x4228,0x4228,0x4228,0x3a27,0x4228,0x4248,0x4228,0x4228,0x4228,0x4248,0x4248,0x4248,0x3a27,0x4269,0x4248,0x3a08,0x4248,0x4228,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4a89,0x4228,0x4248,0x4269,0x4248,0x3a28,0x4248,0x4248,0x3a08,0x4248,0x4269,0x4248,0x4268,0x4248,0x4248,0x4248,0x4269,0x4248,0x4248,0x4228,0x4a69,0x4248,0x4228,0x4248,0x4269,0x4248,0x4268,0x4268,0x4248,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a48,0x4248,0x4248,0x4268,0x4248,0x4a69,0x4269,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4228,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4268,0x4269,0x4249,0x4a69,0x4269,0x4249,0x4228,0x4a69,0x4a69,0x4268,0x4248,0x4269,0x4269,0x4249,0x4a89,0x4269,0x4248,0x4269,0x4248,0x4248,0x4a49,0x4a69,0x4269,0x4269,0x4249,0x4249,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x4a89,0x4a69,0x4248,0x4a48,0x4248,0x4a69,0x4248,0x4269,0x4269,0x4a48,0x4a69,0x4a89,0x4a69,0x4a69,0x4a49,0x4248,0x4248,0x4228,0x4a49,0x4248,0x4248,0x4228,0x4228,0x4228,0x4249,0x4a69,0x4248,0x4249,0x4a69,0x4228,0x4248,0x4269,0x4248,0x4228,0x4248,0x4a69,0x4248,0x4228,0x4248,0x4269,0x4228,0x4228,0x4249,0x4249,0x4248,0x4228,0x4a49,0x4a69,0x4269,0x4248,0x4228,0x4248,0x4248,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4248,0x4a49,0x4248,0x4248,0x4a69,0x4a49,0x4a49,0x4248,0x4a69,0x4a69,0x4a49,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4208,0x4228,0x4207,0x4228,0x4208,0x4208,0x4228,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x4228,0x3a07,0x39e7,0x4228,0x4228,0x39e7,0x4207,0x39e7, +0x3a08,0x3a07,0x39e7,0x39e7,0x3a07,0x4228,0x4207,0x39e7,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x39e7,0x39e7,0x3a08,0x4228,0x3a07,0x39e7,0x3a08,0x3a08,0x4228,0x39e7,0x3a07,0x3a28,0x3a28,0x4248,0x3a07,0x4228,0x3a28,0x4208,0x3a07,0x4208,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x3a08,0x4228,0x3a07,0x4228,0x4208,0x4208,0x4208,0x3a27,0x4228,0x4228,0x3a07,0x4208,0x4248,0x3a07,0x3a08,0x4228,0x3a07,0x3a07,0x3a27,0x4228,0x4208,0x4228,0x4248,0x3a07,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x3a27,0x4228,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x3a08,0x3a28,0x4a69,0x4a89,0x4269,0x4228,0x4269,0x4248,0x3a07,0x4248,0x4a69,0x4248,0x4228,0x4a69,0x4268,0x4a69,0x4248,0x4268,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4269,0x4a69,0x4a89,0x52ca,0x4aa9,0x4248,0x4a89,0x3a07,0x3a07,0x4269,0x4a69,0x4228,0x4a69,0x4228,0x3a07,0x4228,0x4269,0x4248,0x4228,0x4248,0x4248,0x4248,0x4a69,0x4a69,0x4249,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4248,0x3a28,0x4269,0x4269,0x4248,0x4228,0x4248,0x4269,0x4248,0x4248,0x4248,0x4268,0x4269,0x4269,0x4248,0x4289,0x4aa9,0x4248,0x3a07,0x4248,0x4269,0x4268,0x4248,0x4268,0x4a69,0x4248,0x4269,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4a69,0x4a89,0x4248,0x4269,0x4248,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4248,0x4269,0x3a08,0x4228,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4a48,0x4a69,0x4248,0x4248,0x4248,0x4269,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4269,0x4aaa,0x4a89,0x4a49,0x4a69,0x4a69,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4228,0x4248,0x4248,0x4a49,0x4248,0x4a69,0x4248,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4228,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x4228,0x4228,0x4248,0x3a08,0x4228,0x3a28,0x4208,0x3a07,0x4248,0x4228,0x4228,0x3a07,0x3a28,0x4228,0x4248,0x4208,0x4249,0x4249,0x4248,0x4a69,0x4228,0x4249,0x4a89,0x4a89,0x4228,0x3a08,0x4228,0x4249,0x4228,0x4249,0x4248,0x4228,0x3a07,0x4228,0x4228,0x4228,0x3a28,0x4208,0x4228,0x4208,0x4a69,0x4a69,0x4228,0x4228,0x4a69,0x4228,0x4a69,0x4228,0x4228,0x3a07,0x4228,0x4228, +0x39e7,0x39e7,0x31c6,0x4208,0x3a08,0x39e7,0x39e7,0x31c6,0x31a6,0x39e7,0x39c7,0x31c6,0x3a07,0x39c7,0x39c7,0x39e7,0x4208,0x39c6,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x39c6,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x4207,0x4208,0x39c7,0x31c7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4207,0x3a07,0x39e7,0x39c7,0x39e7,0x31c7,0x39e7,0x4208,0x39e7,0x4208,0x39e7,0x31c6,0x31c7,0x4208,0x4208,0x3a08,0x3a07,0x39e7,0x39c7,0x4228,0x4228,0x4208,0x3a07,0x4248,0x4228,0x3a07,0x3a07,0x4207,0x39e7,0x4228,0x39e8,0x39e7,0x4228,0x3a07,0x4a69,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4248,0x3a07,0x3a07,0x4228,0x4248,0x3a07,0x4228,0x4228,0x4248,0x4248,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4208,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4228,0x4228,0x3a28,0x4248,0x4248,0x3a28,0x4249,0x4249,0x4248,0x4a69,0x4aa9,0x4248,0x4248,0x4269,0x39e7,0x39e7,0x4248,0x3a07,0x4228,0x4208,0x4248,0x4228,0x3a28,0x4248,0x4248,0x4248,0x4228,0x4269,0x4249,0x4248,0x4a89,0x4268,0x4a89,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4228,0x4248,0x4269,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x4228,0x4248,0x4248,0x4228,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4228,0x4228,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4269,0x4248,0x4269,0x4a69,0x4248,0x4248,0x4269,0x4a89,0x4a69,0x4228,0x4a89,0x4249,0x4248,0x4269,0x52aa,0x4a69,0x4248,0x4249,0x4228,0x3a08,0x4a69,0x4269,0x4a69,0x4a69,0x4228,0x4228,0x4228,0x4a69,0x4a69,0x4a49,0x4248,0x4228,0x4a69,0x4248,0x4248,0x4228,0x4a49,0x4248,0x4a69,0x4a69,0x4269,0x4a89,0x4a69,0x4a69,0x4228,0x4248,0x4a69,0x4a89,0x4a89,0x4a89,0x4a49,0x4248,0x4228,0x4249,0x4248,0x4228,0x4248,0x4228,0x4a89,0x4269,0x4a69,0x4a49,0x4a89,0x4a69,0x4248,0x4a89,0x4a49,0x4208,0x4a69,0x4a69,0x4a89,0x4248,0x4a69,0x4248,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4228,0x4208,0x3a08,0x4228,0x4248,0x4228,0x39e7,0x4248,0x4228,0x4208,0x4248,0x4249,0x4228,0x4228,0x4208,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4248,0x4a89,0x4a49,0x4a69,0x4249,0x4a49,0x4248,0x4228,0x4a69,0x4a8a,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4228,0x4248,0x4228,0x4a69,0x52aa,0x4228,0x4a69,0x4a69,0x4248,0x4228,0x4248,0x4228,0x4228, +0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c6,0x31c6,0x39c6,0x31c6,0x31a6,0x3a07,0x39e6,0x39e7,0x39e7,0x39c6,0x31c6,0x31a6,0x31c6,0x39e7,0x39e7,0x39e6,0x4227,0x3185,0x3a07,0x39e7,0x31c6,0x39e7,0x39c6,0x31a6,0x31c6,0x3185,0x3a07,0x39e7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x31a6,0x31c6,0x39e7,0x31a6,0x31a6,0x31c6,0x31c6,0x3a07,0x31c6,0x31c6,0x39e6,0x31a6,0x39e7,0x3a07,0x39e7,0x39e6,0x39e7,0x39c7,0x39e7,0x39c6,0x31c6,0x31c6,0x39e7,0x3185,0x31a5,0x31c6,0x31a5,0x31c6,0x2985,0x31a6,0x31c6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x31a5,0x31a6,0x31a6,0x31c6,0x31c6,0x31a6,0x2985,0x3186,0x2985,0x2944,0x3186,0x29a5,0x2985,0x31a6,0x31c6,0x3186,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2964,0x31a6,0x3186,0x31a6,0x2985,0x2986,0x2986,0x2985,0x39e7,0x31c6,0x2985,0x31a6,0x29a6,0x29a6,0x2985,0x2985,0x2965,0x2985,0x31a6,0x2985,0x2985,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x31a6,0x2965,0x2965,0x2945,0x2985,0x2124,0x2965,0x2985,0x2985,0x31a6,0x2985,0x29a5,0x31a6,0x2164,0x2945,0x2985,0x2985,0x31a6,0x2985,0x31a6,0x31c6,0x3186,0x31c6,0x2985,0x2985,0x2965,0x2965,0x2965,0x31c6,0x2145,0x31a6,0x2985,0x2965,0x31a6,0x2144,0x31e7,0x2985,0x2124,0x31a6,0x2985,0x2965,0x2124,0x2144,0x2985,0x2965,0x2985,0x31a6,0x2124,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2985,0x2965,0x2965,0x3186,0x3186,0x2985,0x2124,0x2985,0x2985,0x2985,0x2945,0x2124,0x2985,0x2985,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2945,0x31c6,0x2965,0x3186,0x2985,0x31a6,0x39c6,0x2965,0x31c6,0x31c6,0x31a6,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x2985,0x31c6,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31a6,0x2985,0x39c7,0x39c7,0x2985,0x31c6,0x31a6,0x2965,0x31c6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x3186,0x3165,0x3185,0x2965,0x2985,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x3185,0x2965,0x31a6,0x3186,0x3186,0x39e7,0x3186,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x31c6,0x39c7,0x39c7,0x3185,0x2985,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x2966,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x3186,0x39e7,0x39c6,0x31c6,0x3186,0x39e7,0x39c6,0x31a6,0x3a07,0x39e7,0x39e7,0x39c7,0x4208,0x4228,0x31a6,0x31a6,0x39e7, +0x5aea,0x632b,0x5aeb,0x52ea,0x52ea,0x634b,0x636c,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x52aa,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x52ea,0x5b0b,0x632c,0x634b,0x632b,0x6b6c,0x634b,0x5b0b,0x632c,0x634c,0x5aea,0x52ea,0x5b0b,0x5b0b,0x634c,0x5b2b,0x632b,0x634c,0x5b2b,0x634b,0x5b0b,0x5b0b,0x636c,0x5b0b,0x5aea,0x5aeb,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x5b0b,0x5b4c,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x6b8d,0x5b0b,0x5b2b,0x632b,0x5b2b,0x52ea,0x52ca,0x52ca,0x632c,0x5b2b,0x52ea,0x5aeb,0x632b,0x52ca,0x52ea,0x52ca,0x52ca,0x5b0b,0x52ca,0x5b0b,0x5b2b,0x52ca,0x636c,0x52ea,0x52eb,0x5b0b,0x52ca,0x5b0b,0x52ca,0x52ea,0x4aa9,0x4a89,0x4a89,0x52ca,0x5aeb,0x52ea,0x52ca,0x5aeb,0x5b2c,0x4aca,0x52ea,0x5b0b,0x5b0b,0x52eb,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x5b2b,0x5b2c,0x5b2c,0x5b0b,0x52eb,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x52ea,0x52eb,0x5b2b,0x5b2b,0x52ea,0x52ca,0x52ea,0x52ea,0x530b,0x5b2b,0x5b2b,0x5b0b,0x636d,0x634c,0x5b0b,0x5aeb,0x5b0b,0x52ca,0x52ea,0x5b0b,0x52ea,0x5aea,0x52ca,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x52ca,0x52ca,0x52ca,0x4aaa,0x52ca,0x52ca,0x530b,0x5b0b,0x5b0b,0x5b2b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x52ea,0x5b0b,0x52eb,0x5b0b,0x530b,0x5aeb,0x636d,0x5b2b,0x52eb,0x5b2c,0x530b,0x5b0b,0x52ca,0x5b0b,0x52eb,0x5b0b,0x52eb,0x636d,0x52eb,0x5b2b,0x5b4c,0x5b0b,0x52aa,0x6b8d,0x636d,0x5b2b,0x634c,0x5b2c,0x5b2b,0x6b6d,0x5b2c,0x52ea,0x52ca,0x5aeb,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x6b6d,0x5b0b,0x5b0b,0x5b2b,0x636c,0x634c,0x5b2b,0x5b2c,0x5b0b,0x634c,0x6b8d,0x5b2c,0x634c,0x636c,0x5b0b,0x6b4d,0x634c,0x5b2c,0x632c,0x5aeb,0x636d,0x634c,0x5b2b,0x5b2c,0x632c,0x5b0b,0x632c,0x634c,0x52eb,0x5aeb,0x636d,0x5b0b,0x5b2b,0x5b2c,0x5b0b,0x52eb,0x5b0b,0x5aeb,0x632c,0x5b0b,0x634c,0x5aeb,0x5b0b,0x632c,0x632c,0x5b2b,0x5b0b,0x52eb,0x52ca,0x5aeb,0x5b0b,0x5b0b,0x5b2c,0x52ca,0x52ca,0x52ca,0x52ca,0x52ca,0x52aa,0x4aaa,0x52ca,0x4aaa,0x52ca,0x52aa,0x52aa,0x52eb,0x52ca,0x52ea,0x52ca,0x52aa,0x4a8a,0x52aa,0x52ca,0x4a8a,0x52aa,0x4a8a,0x4aa9,0x52ca,0x4a89,0x52aa,0x52aa,0x52aa,0x5289,0x5289,0x4a89,0x52a9,0x5aeb,0x52ca,0x52aa,0x52aa,0x52ca,0x52ca,0x52aa,0x4a89,0x52aa,0x52aa,0x4a89,0x4a89,0x52eb,0x4a69,0x4a69,0x4a69,0x5289,0x4a69,0x52aa,0x4a89,0x4a69,0x4228,0x4248,0x4a69,0x4248,0x4a69,0x4a69,0x4a48,0x4248,0x4228,0x4228,0x4a48,0x4228, +0x5b0b,0x632c,0x5b2b,0x5b2b,0x6b8c,0x73cd,0x6b8c,0x6bad,0x634c,0x6b6c,0x636c,0x6b8c,0x636c,0x632b,0x636c,0x636c,0x5b2b,0x5b2b,0x634c,0x6b8c,0x636c,0x5b0b,0x6bad,0x6bad,0x6b8c,0x634c,0x5b2b,0x5b0b,0x530b,0x5b4b,0x636c,0x636c,0x638c,0x6b8c,0x6b8d,0x634c,0x638c,0x636c,0x636c,0x636c,0x5b2b,0x634c,0x634c,0x634c,0x638c,0x636c,0x5b0b,0x5b2c,0x636c,0x634c,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x530b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x5b4c,0x530b,0x5b0b,0x5b2c,0x5b2b,0x5b4c,0x530b,0x5b2b,0x5b4b,0x5b2b,0x5b0b,0x6bad,0x5b2b,0x52ca,0x5b2c,0x52ea,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b4c,0x634c,0x530b,0x634c,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x634c,0x5b2c,0x5b4c,0x636c,0x5b4c,0x52ea,0x5b2b,0x530b,0x5b0b,0x634c,0x52eb,0x5b4c,0x5b4c,0x530b,0x5b2b,0x6b8d,0x634c,0x52ea,0x530a,0x530b,0x5b2b,0x634c,0x634c,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x6b8d,0x5b0b,0x632c,0x5b2b,0x638d,0x636c,0x4aaa,0x634c,0x6b8d,0x52eb,0x634c,0x5b2c,0x530b,0x636c,0x634c,0x5b0b,0x5b2c,0x530b,0x530b,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x634c,0x634c,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x634c,0x636c,0x5b4c,0x5b4c,0x5b2c,0x636d,0x634c,0x530b,0x63ad,0x6bad,0x5b4c,0x5b4c,0x636c,0x638d,0x636c,0x634c,0x634c,0x5b4c,0x636c,0x5b2b,0x632c,0x6bad,0x6b8d,0x634c,0x636c,0x636c,0x5b2b,0x5b2b,0x5b0b,0x5aeb,0x6b6d,0x636d,0x634c,0x634c,0x636c,0x634c,0x530b,0x5b2b,0x634c,0x5b0b,0x634c,0x636c,0x636c,0x5b0b,0x636d,0x6bad,0x5b2c,0x638d,0x636d,0x6bad,0x634c,0x73ad,0x634c,0x632c,0x634c,0x5aeb,0x634c,0x5b4c,0x636c,0x634c,0x5aeb,0x632c,0x6bae,0x6bad,0x634c,0x5b0b,0x6b6d,0x634c,0x634c,0x632c,0x636d,0x6b6d,0x634c,0x5b2c,0x634c,0x634c,0x634c,0x636c,0x634c,0x6b4d,0x632c,0x636d,0x636c,0x6b6d,0x634c,0x632c,0x6b6d,0x632c,0x5b2c,0x5b0b,0x632c,0x5b2b,0x5b0b,0x634c,0x5b2c,0x634c,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x634c,0x634c,0x632c,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x632c,0x5b2c,0x632c,0x632c,0x632c,0x5b0b,0x634c,0x6b6d,0x5aeb,0x632c,0x634c,0x634c,0x634c,0x634c,0x636c,0x634c,0x634c,0x634c,0x632c,0x6b6d,0x634c,0x632c,0x634c,0x632c,0x634c,0x634c,0x634d,0x632c,0x632c,0x634c,0x634c,0x632c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x634c,0x6b6c,0x6b4c,0x6b6c,0x634c, +0x5b2c,0x634c,0x5b2b,0x5b2b,0x636c,0x632c,0x5b2b,0x6b8d,0x636c,0x636c,0x632b,0x636c,0x638c,0x634c,0x634c,0x636c,0x5b0b,0x634c,0x6bad,0x634c,0x634c,0x634c,0x634c,0x636c,0x636c,0x6b6c,0x5b0b,0x52eb,0x5b0b,0x52ea,0x52eb,0x6b8c,0x632b,0x5b4b,0x5b0b,0x636c,0x634c,0x636c,0x5aea,0x5b2b,0x636c,0x634c,0x634c,0x5b0b,0x634c,0x5b2b,0x52ca,0x5b0b,0x632b,0x52eb,0x52cb,0x5b0b,0x5b0b,0x52ea,0x5b0b,0x52ea,0x5b2b,0x636c,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b2b,0x634c,0x52ea,0x5b4c,0x5b4c,0x634c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x5b2c,0x52ea,0x52ca,0x5b2b,0x5b2b,0x5b0b,0x634c,0x634c,0x5b2b,0x52eb,0x5b2b,0x5b0b,0x530b,0x530b,0x52ea,0x5b2b,0x5b2b,0x5b0b,0x530b,0x52ea,0x52ea,0x5aeb,0x52ea,0x52eb,0x5b2c,0x5b2c,0x4aca,0x5b0b,0x530b,0x5b2b,0x5b2b,0x5b2b,0x52ea,0x5b4c,0x5b4c,0x5b4c,0x636d,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x530b,0x5b2b,0x52ea,0x5b4c,0x5b2b,0x634c,0x634c,0x5b2b,0x52ea,0x5b0b,0x4aaa,0x5b4c,0x5b0b,0x5b2b,0x52ea,0x5b2b,0x5b2c,0x5b2b,0x636c,0x636c,0x5b2b,0x4aaa,0x5b0b,0x52ca,0x52ca,0x530b,0x4aaa,0x52eb,0x5b4c,0x5b2b,0x634c,0x52ca,0x52ea,0x636d,0x632c,0x5b2c,0x5b2b,0x634c,0x634c,0x5b2b,0x5b2c,0x634c,0x634c,0x636c,0x636c,0x5b2b,0x5b0b,0x52eb,0x6b8d,0x5b2b,0x6bad,0x636d,0x634c,0x5b4c,0x634c,0x5b0b,0x5b4c,0x5b0b,0x634c,0x634c,0x5b0b,0x636d,0x5b2b,0x6b6c,0x636d,0x5b0b,0x5b2b,0x5aeb,0x634c,0x634c,0x5b0b,0x5aeb,0x5b2c,0x636d,0x52eb,0x5b0b,0x636d,0x634c,0x5b2b,0x5b2c,0x634c,0x634c,0x5b0c,0x5b0b,0x5b0b,0x5b2c,0x5b2b,0x6b8d,0x634c,0x636d,0x5aeb,0x634c,0x634c,0x632c,0x5b2c,0x5b0b,0x632c,0x5b2b,0x5b2c,0x5b2b,0x634c,0x634c,0x632c,0x6b8d,0x73ae,0x5b0b,0x634c,0x636d,0x6b6d,0x5b0b,0x5b2c,0x636d,0x5b0c,0x632c,0x5b2c,0x5b0b,0x632c,0x5b0b,0x634c,0x630b,0x632c,0x6b6d,0x634c,0x632c,0x5b2b,0x5b2c,0x632c,0x5b0b,0x5b2c,0x5b0b,0x5b2c,0x632c,0x632c,0x630b,0x632c,0x632c,0x6b4c,0x6b6d,0x632c,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5aeb,0x5b0b,0x634c,0x5b0b,0x630c,0x630c,0x52ea,0x632c,0x5b0b,0x632c,0x634c,0x5aca,0x5aeb,0x5b2c,0x5b2c,0x6b4c,0x630b,0x5b0b,0x634c,0x632c,0x5b0b,0x632c,0x5b2c,0x632c,0x634c,0x634c,0x632c,0x6b4c,0x632c,0x634c,0x634c,0x6b6c,0x632c,0x5aeb,0x5b0b,0x632c,0x634c,0x632b,0x632c,0x632c,0x630b,0x634c,0x634c,0x630c,0x5b0b,0x630c,0x5b0b,0x630b,0x630b,0x632b,0x6b6c,0x6b6d,0x5aeb,0x632c,0x632c, +0x52eb,0x5b0b,0x632b,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x52eb,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b2b,0x632c,0x5b2b,0x5b4c,0x5b4c,0x52ca,0x5b2c,0x636c,0x5b4c,0x634c,0x5b2b,0x5aeb,0x5aeb,0x5aea,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0b,0x634c,0x5b2b,0x52ea,0x636c,0x5aca,0x5b0b,0x530b,0x52ca,0x5b0b,0x5b2b,0x5b0b,0x630b,0x5aeb,0x52aa,0x52ea,0x636c,0x5b4c,0x5b2b,0x52ea,0x530b,0x634c,0x634c,0x5b2b,0x5b2b,0x5b2b,0x52ea,0x5b2b,0x5b4c,0x5b4c,0x52ea,0x5b0b,0x5b2c,0x634c,0x5b2c,0x5b2c,0x636c,0x636c,0x5b2c,0x634c,0x636c,0x52eb,0x636d,0x638d,0x52eb,0x634c,0x52ea,0x52ca,0x5b2c,0x52ca,0x5b4c,0x5b4c,0x530b,0x5b0b,0x5b2c,0x5b4c,0x530b,0x634c,0x5b4c,0x5b2c,0x632c,0x5b2b,0x636c,0x636c,0x634c,0x5b2c,0x634c,0x5b4c,0x5b2b,0x634c,0x5b4c,0x52ea,0x5b0b,0x530b,0x634c,0x634c,0x5b2b,0x638d,0x636d,0x636d,0x5b4c,0x5b2c,0x634c,0x5b0b,0x530b,0x638d,0x5b2c,0x5b2b,0x5b4c,0x5b2b,0x5b4c,0x5b4c,0x530b,0x636c,0x636c,0x5b0b,0x5b2c,0x5b0b,0x52eb,0x5b2b,0x5b4c,0x5b2b,0x636c,0x638d,0x52ea,0x5b2b,0x5b2b,0x5b4c,0x5b2c,0x5b4c,0x52ea,0x530b,0x5b2c,0x5b0b,0x5b0b,0x634c,0x636d,0x636d,0x5b2b,0x5b2c,0x5b2c,0x636c,0x636c,0x5b4b,0x634c,0x636c,0x5b2c,0x5b2c,0x5b4c,0x636c,0x634c,0x636c,0x5b4c,0x5b4c,0x5b4c,0x634c,0x634c,0x634c,0x6b8d,0x6bce,0x6b8d,0x634c,0x634c,0x638d,0x5b0b,0x52eb,0x5b2b,0x638d,0x636d,0x5b2c,0x6b8d,0x634c,0x636d,0x636c,0x5b0b,0x636c,0x632c,0x634d,0x6b8d,0x636d,0x5b2b,0x636d,0x6b8d,0x634c,0x632c,0x5b4c,0x6bae,0x5b2c,0x5b0b,0x5b0b,0x636d,0x5b2c,0x634c,0x7bef,0x6b8d,0x6b8d,0x636d,0x5b2c,0x6b8d,0x636d,0x6b6d,0x636d,0x5b2c,0x5b2c,0x636d,0x5b2c,0x5b2c,0x636c,0x636c,0x632b,0x6b8d,0x632c,0x634c,0x632c,0x5b2c,0x634c,0x632b,0x634c,0x634c,0x632c,0x5aeb,0x632c,0x632c,0x5aeb,0x5b0b,0x634c,0x634c,0x5b0b,0x636c,0x634c,0x5b0b,0x5aeb,0x5b0b,0x630c,0x632c,0x5b0b,0x5b0b,0x530b,0x5b2c,0x5b2c,0x52eb,0x632b,0x5aea,0x5b0b,0x5b2b,0x5b0b,0x52eb,0x52eb,0x5b2c,0x5b2c,0x5b0b,0x5b0b,0x632c,0x632b,0x630b,0x632c,0x5aeb,0x632c,0x5b2c,0x5b0b,0x632c,0x632c,0x6b6d,0x52eb,0x5aeb,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x632c,0x5b2c,0x632c,0x5b2c,0x632c,0x632c,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x5b0b,0x632c,0x630b,0x632c,0x632c,0x630c,0x634c,0x6b4c,0x632c,0x5b0b,0x5b0b,0x630b,0x5aeb,0x5aeb,0x632c,0x634c,0x5aeb,0x5b0b,0x630b,0x630b, +0x636d,0x634c,0x5b2b,0x632c,0x638d,0x6b8d,0x638c,0x636c,0x634c,0x638c,0x5b2b,0x636c,0x6b6d,0x634c,0x634c,0x634c,0x638d,0x634c,0x636c,0x638d,0x5b2b,0x6bad,0x6bad,0x634c,0x5b2b,0x634c,0x636c,0x6bad,0x636c,0x52ea,0x5b4c,0x5b2b,0x634c,0x636d,0x636d,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5b0b,0x634c,0x634c,0x52ea,0x5b2b,0x52ea,0x52ea,0x5b0b,0x632c,0x634c,0x5b2b,0x5b0b,0x634c,0x5b0b,0x5b2b,0x5b4c,0x636c,0x52ca,0x52eb,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x52ca,0x52ea,0x5b2c,0x52ca,0x52eb,0x5b0b,0x52eb,0x5b0b,0x52eb,0x5b0b,0x530b,0x52ea,0x5b2b,0x52ea,0x52ca,0x5b0b,0x5b4c,0x52ca,0x52ea,0x4a89,0x52eb,0x52eb,0x4aaa,0x4aa9,0x4aaa,0x52ca,0x5b0b,0x3a28,0x4269,0x52eb,0x5b2b,0x52eb,0x52aa,0x52ca,0x52ea,0x5b2b,0x5b4c,0x5b0b,0x5b0b,0x52eb,0x52ca,0x634c,0x5b2c,0x52ca,0x5b2c,0x52eb,0x5b0b,0x52eb,0x4aaa,0x5b0b,0x4aca,0x52eb,0x52ca,0x530b,0x5b2c,0x5b0b,0x52eb,0x52eb,0x52ca,0x4aaa,0x5b0b,0x4aaa,0x530b,0x4aca,0x530b,0x530b,0x5b2b,0x5b0b,0x52eb,0x52eb,0x52ca,0x52ca,0x5b2c,0x5b0b,0x52eb,0x52ca,0x5b2b,0x52ca,0x4aaa,0x4aaa,0x52ca,0x4a89,0x52ca,0x4aca,0x52ea,0x5b0b,0x5aeb,0x52ca,0x5b0b,0x530b,0x52ca,0x52eb,0x52ca,0x5b2c,0x5b0b,0x530b,0x5b4c,0x5b4c,0x634c,0x5b0b,0x530b,0x5b2b,0x52ca,0x634c,0x52eb,0x634c,0x634c,0x634c,0x5b2c,0x5aeb,0x5b0b,0x634c,0x5b2b,0x5b2c,0x634c,0x632c,0x636d,0x52eb,0x5b2c,0x634c,0x632c,0x5b0b,0x5b0b,0x52eb,0x632c,0x634c,0x636c,0x5b2c,0x634c,0x5b0b,0x632c,0x636d,0x5b0b,0x52eb,0x634c,0x634c,0x5b0b,0x5b2c,0x636d,0x636d,0x5aeb,0x5b2c,0x5b4c,0x636d,0x634c,0x6bae,0x6b6d,0x6b8d,0x6bad,0x5b2c,0x636d,0x73ce,0x6bae,0x7bef,0x636d,0x634c,0x5b2c,0x5b2c,0x634c,0x634c,0x6b8d,0x634c,0x632c,0x634c,0x6b6d,0x6b8d,0x634c,0x634c,0x5b0b,0x5b0b,0x6bad,0x6b8d,0x634c,0x73ae,0x634c,0x5b0b,0x636d,0x632c,0x632c,0x632c,0x634c,0x634c,0x6b8d,0x6b8d,0x6b8d,0x636c,0x634c,0x636c,0x634c,0x634c,0x5b2c,0x634c,0x6b8d,0x5b4c,0x634c,0x73ad,0x636c,0x5b2b,0x636d,0x5b0b,0x632c,0x634c,0x5b0b,0x634d,0x634c,0x5b0b,0x634c,0x634c,0x632c,0x5b0b,0x5b0b,0x634c,0x632c,0x5b2c,0x5b0b,0x632c,0x5b2c,0x5b0b,0x634c,0x5b0b,0x5aeb,0x5aeb,0x52eb,0x5b0c,0x634c,0x632c,0x5b0b,0x632c,0x634c,0x634c,0x632c,0x634c,0x632c,0x632c,0x632c,0x632c,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x632c,0x632c,0x634c,0x6b6d,0x5b0b,0x5b0b,0x632c,0x630c,0x5aeb,0x5acb,0x632c,0x5aeb,0x630c,0x634c,0x5b0b,0x5aeb,0x5aca,0x5aeb, +0x8491,0x8491,0x740f,0x7c30,0x740f,0x8491,0x740f,0x73ee,0x7c0f,0x6bad,0x6bad,0x6bce,0x6bad,0x6bce,0x636c,0x5b2b,0x6bce,0x6bad,0x636c,0x73ce,0x636c,0x638d,0x6bce,0x636c,0x5b2b,0x6b8d,0x638d,0x6b8d,0x5b2c,0x6b8d,0x636c,0x5b2c,0x5aeb,0x52eb,0x52eb,0x636c,0x634c,0x530b,0x52ca,0x632c,0x52ea,0x52ea,0x5b4c,0x530a,0x52ca,0x52eb,0x530b,0x4aca,0x52eb,0x4aaa,0x52ca,0x52ca,0x4aaa,0x4aaa,0x4248,0x5b0b,0x4aca,0x4268,0x4aaa,0x4aca,0x52ca,0x4a89,0x4aaa,0x4a89,0x4a69,0x4a89,0x4a89,0x4aaa,0x4248,0x4228,0x4248,0x4a89,0x4a69,0x4a89,0x4268,0x52aa,0x4aa9,0x4269,0x3a07,0x4269,0x4aa9,0x3a27,0x31c6,0x4a89,0x4248,0x3a28,0x4a89,0x4a89,0x4228,0x4228,0x39e7,0x3a28,0x3a27,0x4248,0x4228,0x4269,0x4a89,0x4268,0x4248,0x4248,0x4269,0x4269,0x3a07,0x4248,0x4269,0x3a08,0x3a07,0x3a07,0x4a89,0x4248,0x4268,0x4248,0x3a07,0x3a07,0x3a08,0x4248,0x3a28,0x39e7,0x4248,0x4a69,0x3a08,0x4228,0x31a6,0x3a07,0x4248,0x3a07,0x4249,0x3a28,0x4248,0x39e7,0x31a6,0x3a07,0x31e7,0x4248,0x3a07,0x39e7,0x39e7,0x31c6,0x2986,0x31c7,0x31a6,0x39c7,0x2986,0x31c7,0x3a07,0x4248,0x4207,0x39e7,0x3a07,0x3a07,0x4269,0x3a08,0x3a07,0x3a08,0x3a28,0x4248,0x3a08,0x3a08,0x3a07,0x3a08,0x39e7,0x3a08,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4a69,0x31c6,0x3a07,0x4a69,0x3a07,0x31a6,0x4a89,0x4269,0x4269,0x4a69,0x31c7,0x31e7,0x4a69,0x4248,0x4228,0x39e7,0x4248,0x4a69,0x52ca,0x52ca,0x4aaa,0x4aa9,0x4a89,0x4a89,0x52aa,0x4a89,0x4a69,0x5aeb,0x52ca,0x4aaa,0x4a69,0x52aa,0x5b0b,0x5b0b,0x52ca,0x52aa,0x4aaa,0x5b0b,0x52ca,0x634c,0x634c,0x5b0b,0x5b2b,0x5aeb,0x52ca,0x5b0c,0x5b2c,0x632c,0x634d,0x636d,0x5b0b,0x634c,0x636d,0x73ce,0x634c,0x7c0f,0x632c,0x6bae,0x6b6d,0x5b0b,0x6bad,0x636d,0x6b6d,0x73ce,0x73ae,0x73ce,0x7bef,0x73ce,0x8430,0x73ae,0x73ef,0x7c30,0x7c0f,0x73ce,0x6b8d,0x6bae,0x73ce,0x73ce,0x7c30,0x7c0f,0x8c91,0x7c0f,0x73ce,0x7c0f,0x7c0f,0x73ef,0x73ae,0x7c0f,0x7c0f,0x73ce,0x8c91,0x8430,0x7bef,0x8430,0x73ce,0x7c0f,0x8450,0x73ce,0x738d,0x7bee,0x73ce,0x7c0f,0x7c2f,0x8451,0x8471,0x8c91,0x8430,0x6bae,0x73ef,0x73ce,0x8430,0x7c0f,0x73ce,0x7c0f,0x7bef,0x73ae,0x8450,0x8450,0x8450,0x7c0f,0x6b6d,0x73ce,0x73ae,0x73ce,0x73ee,0x7bee,0x7c0f,0x8450,0x7bef,0x7bef,0x73ce,0x7bef,0x73ae,0x7bef,0x73ce,0x7bce,0x8430,0x7c30,0x7bef,0x8430,0x73ae,0x7bcf,0x8430,0x7bef,0x7bef,0x73ae,0x6b6d,0x73ce,0x73ae,0x6b8d,0x840f,0x7bce,0x7bee, +0x52eb,0x634c,0x4aaa,0x52ca,0x4aaa,0x52eb,0x4269,0x4aaa,0x52ca,0x4269,0x4a89,0x4269,0x4249,0x4228,0x31c7,0x39e7,0x3a08,0x4228,0x31c6,0x3a08,0x3a08,0x3a28,0x29a6,0x4249,0x31e7,0x39e7,0x39e7,0x2965,0x31a6,0x31c7,0x3a07,0x31c6,0x31c6,0x2985,0x2985,0x39e7,0x31c7,0x2144,0x2965,0x39e7,0x2124,0x31c7,0x31a6,0x2965,0x39c7,0x31a6,0x2965,0x2986,0x2965,0x18c3,0x2965,0x31c6,0x31c6,0x2965,0x2945,0x31a6,0x2965,0x2124,0x2965,0x31a6,0x39c7,0x2144,0x2986,0x2945,0x2124,0x31c6,0x2124,0x2986,0x2145,0x2945,0x2945,0x2965,0x2985,0x2124,0x2144,0x2985,0x2965,0x2124,0x2104,0x2145,0x31a6,0x2145,0x18e3,0x2124,0x2965,0x2965,0x2145,0x2104,0x2124,0x2144,0x2985,0x2965,0x2104,0x2985,0x18e3,0x31a6,0x2985,0x2965,0x2144,0x2144,0x2965,0x2965,0x2945,0x2945,0x2124,0x2144,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2945,0x2104,0x2965,0x2144,0x2124,0x2124,0x2965,0x31c6,0x2144,0x2145,0x18e3,0x2986,0x2965,0x2965,0x2144,0x2124,0x2965,0x2145,0x2145,0x2144,0x2965,0x2945,0x1903,0x2985,0x2965,0x2965,0x2144,0x2124,0x2965,0x2124,0x2124,0x2104,0x2124,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x31a6,0x2145,0x2124,0x2965,0x2965,0x2965,0x2945,0x2145,0x2986,0x2986,0x2144,0x2945,0x2945,0x2985,0x2986,0x2965,0x31c6,0x31c6,0x31c6,0x31c6,0x2965,0x2124,0x2965,0x2986,0x2965,0x3186,0x39e7,0x31c6,0x3a28,0x39e7,0x31a6,0x31a6,0x31c7,0x39c7,0x3a08,0x39e7,0x2986,0x39e7,0x3a07,0x31c7,0x2986,0x31c7,0x31e7,0x4228,0x4249,0x3a07,0x39e7,0x39e7,0x39e7,0x4a89,0x4a8a,0x4249,0x4249,0x39e7,0x3a08,0x4249,0x39e7,0x4a8a,0x4228,0x4a8a,0x52cb,0x4269,0x4269,0x4a89,0x4a89,0x52eb,0x4a8a,0x52ca,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4a69,0x5b0b,0x5b2b,0x5aeb,0x52aa,0x632c,0x5b0c,0x4a8a,0x73ae,0x634d,0x6bae,0x634c,0x632c,0x632c,0x52eb,0x4a89,0x5b0b,0x5aeb,0x634d,0x6b6d,0x5b0b,0x632c,0x5b0c,0x6b6d,0x5b0c,0x632c,0x52eb,0x5b2c,0x632c,0x7bef,0x738e,0x738d,0x73ae,0x6b8d,0x6b8d,0x738e,0x6b4d,0x6b6d,0x73ad,0x6b8d,0x6b8d,0x8410,0x8451,0x7bef,0x7bcf,0x634d,0x738e,0x7bce,0x8430,0x7bcf,0x7bef,0x73ce,0x7c30,0x73cf,0x8430,0x7c0f,0x8c91,0x840f,0x73ce,0x73ae,0x738d,0x7bef,0x73ce,0x8430,0x73ae,0x7bef,0x8450,0x7c0f,0x8470,0x8430,0x7c0f,0x8c51,0x7bef,0x7bce,0x840f,0x8430,0x7bef,0x8430,0x8450,0x8c71,0x8c50,0x840f,0x842f,0x7bef,0x8430,0x73ce,0x840f,0x8c50,0x8c71,0x8450,0x8c91, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1081,0x10a2,0x0000,0x0000,0x0861,0x0820,0x0820,0x1061,0x1082,0x0000,0x1041,0x0820,0x0000,0x1082,0x0861,0x0840,0x0820,0x0840,0x0840,0x0861,0x0861,0x0000,0x0000,0x1082,0x1081,0x0000,0x10a2,0x0020,0x0861,0x0861,0x0000,0x0020,0x0861,0x0840,0x0840,0x10a2,0x1081,0x0020,0x0820,0x0861,0x0861,0x0861,0x1081,0x18a2,0x1082,0x0861,0x0841,0x18a2,0x1061,0x1082,0x10a2,0x0840,0x1081,0x0820,0x10c2,0x10a2,0x10a2,0x0820,0x0820,0x1082,0x1081,0x0020,0x0841,0x1081,0x1082,0x0861,0x0840,0x0861,0x10a2,0x0861,0x0840,0x0841,0x1061,0x1082,0x1082,0x1081,0x0000,0x0841,0x1081,0x0841,0x10a2,0x0821,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0840,0x0861,0x0861,0x1081,0x0861,0x0861,0x0841,0x0821,0x0020,0x0021,0x0041,0x0841,0x0020,0x0820,0x1061,0x0841,0x0020,0x0000,0x0861,0x0861,0x10a2,0x0840,0x0020,0x0000,0x0841,0x0861,0x0020,0x0841,0x0861,0x0861,0x1081,0x0841,0x0841,0x0840,0x0841,0x0021,0x0841,0x0861,0x0841,0x0861,0x0861,0x1062,0x0861,0x0020,0x0840,0x0000,0x0020,0x0861,0x0000,0x0020,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0861,0x0840,0x0020,0x0020,0x0020,0x0841,0x0841,0x0000,0x0840,0x0861,0x1081,0x0841,0x0841,0x0820,0x0000,0x0820,0x0820,0x0820,0x0841,0x1082,0x0841,0x0840,0x0861,0x1081,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0020,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0841,0x0841,0x0841,0x0861,0x18a2,0x0840,0x0000,0x1082,0x10a3,0x1082,0x10a2,0x2124,0x18e3,0x10a3,0x10a3,0x0000,0x10a3,0x0862,0x2124,0x1904,0x18e3,0x18c4,0x18e4,0x18c3,0x2124,0x3185,0x2124,0x10c2,0x2985,0x2124,0x2965,0x2945,0x2103,0x2965,0x2945,0x2965,0x39e7,0x39e7,0x39a6,0x31a6,0x4207, +0x39e7,0x3a07,0x4228,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x3a08,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a28,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x39e7,0x3a08,0x3a07,0x4248,0x39e7,0x39e7,0x39e7,0x4248,0x3a07,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x31c6,0x3a07,0x3a28,0x3a07,0x31e7,0x3a07,0x39e7,0x3a07,0x39e7,0x31c7,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a28,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x31e7,0x39e7,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x31c6,0x39e7,0x39e7,0x31c6,0x39e7,0x31c7,0x3a08,0x3a07,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x31e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x31e7,0x3a07,0x3a07,0x31c7,0x31c6,0x31c7,0x31c7,0x31e7,0x31e7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c6,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x31e7,0x31c6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x4228,0x31c6,0x31a6,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x39c7,0x39c7,0x31c6,0x31c6,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x31c6,0x39e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c6,0x3a07,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x31c6,0x31a6,0x31c6,0x39e7,0x31e7,0x39e7,0x39c7,0x39e7,0x31c7,0x31c6,0x39e7,0x31c6,0x39c7,0x39c7,0x39e7,0x39e7,0x3a07,0x31c6,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7,0x31c7,0x31c6,0x39c7,0x31c6,0x31c6,0x39c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31c6,0x31c7,0x31c6,0x31a6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2965,0x3186,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x2985,0x2985,0x31a6,0x3186,0x3186,0x2965,0x3186,0x3186,0x3185,0x2965,0x3185,0x31a6,0x2144,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2944,0x2944,0x2124,0x2144,0x2944,0x2944,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x2125,0x2104,0x1903,0x18e3,0x10c3,0x1082,0x1082,0x1082,0x1082, +0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x4a89,0x39e7,0x3a07,0x3a07,0x4228,0x39e7,0x3a07,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x3a28,0x3a07,0x3a07,0x3a28,0x3a07,0x3a08,0x3a07,0x4248,0x4248,0x3a07,0x3a28,0x3a28,0x3a07,0x4228,0x3a28,0x4228,0x3a28,0x3a07,0x4228,0x3a28,0x39e7,0x4228,0x3a28,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x3a28,0x4248,0x3a28,0x3a28,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x3a28,0x3a07,0x4248,0x3a07,0x4228,0x3a28,0x3a07,0x4228,0x3a07,0x3a07,0x4248,0x3a28,0x4228,0x3a07,0x39e7,0x3a07,0x4228,0x3a28,0x4228,0x3a07,0x39e7,0x4228,0x3a28,0x4228,0x3a28,0x4228,0x4228,0x3a28,0x3a07,0x4228,0x4228,0x3a28,0x4228,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x3a07,0x4248,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x3a28,0x4248,0x3a07,0x4269,0x4248,0x3a28,0x4248,0x4228,0x3a28,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x3a28,0x4228,0x4228,0x4228,0x4248,0x4248,0x4228,0x4269,0x4a89,0x4248,0x4a69,0x4248,0x4228,0x4228,0x4228,0x4228,0x3a07,0x4228,0x4228,0x4248,0x4269,0x4248,0x4228,0x4248,0x4269,0x4248,0x4248,0x4228,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4248,0x4228,0x4a49,0x4268,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4268,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4249,0x4248,0x4228,0x4a48,0x4228,0x4228,0x4228,0x4248,0x4a69,0x4228,0x4208,0x4248,0x4248,0x3a28,0x3a28,0x4248,0x4248,0x4228,0x4248,0x4228,0x4248,0x4248,0x4a89,0x4a69,0x4249,0x4249,0x4249,0x4249,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x4207,0x4208,0x4248,0x4228,0x4208,0x4207,0x4208,0x4228,0x4248,0x4228,0x4228,0x4228,0x4208,0x3a07,0x4248,0x4208,0x4208,0x3a07,0x4208,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4208,0x4207,0x4228,0x3a08,0x4228,0x4228,0x3a07,0x39e7, +0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x3a07,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x3a28,0x4208,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x4269,0x4248,0x4228,0x4228,0x3a28,0x4228,0x4228,0x4248,0x4248,0x4228,0x3a07,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4248,0x4248,0x4228,0x4249,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4248,0x4269,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4a49,0x4248,0x4228,0x4268,0x4248,0x4248,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4228,0x4228,0x4228,0x3a28,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x3a28,0x4248,0x4248,0x52ca,0x5b0b,0x4248,0x4248,0x4248,0x3a28,0x4248,0x4248,0x4228,0x4248,0x4248,0x4a69,0x4269,0x4269,0x4248,0x4a89,0x4228,0x4248,0x4228,0x4228,0x4269,0x4248,0x4248,0x4269,0x4248,0x4248,0x4248,0x4248,0x4269,0x4a89,0x4248,0x4268,0x4a89,0x4248,0x4248,0x4248,0x4269,0x4269,0x4248,0x4248,0x4228,0x4248,0x4248,0x4248,0x4a89,0x4248,0x4248,0x4248,0x4248,0x4a89,0x4a89,0x4248,0x4248,0x4248,0x3a28,0x4249,0x4248,0x4248,0x4a69,0x4269,0x4248,0x4a89,0x4aa9,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a69,0x4248,0x4a89,0x4248,0x4248,0x4248,0x4a69,0x4269,0x4269,0x4248,0x4248,0x4269,0x4248,0x4a69,0x4248,0x4249,0x4249,0x4249,0x4a69,0x4a69,0x4269,0x4248,0x4248,0x4248,0x4248,0x4268,0x4248,0x4248,0x4248,0x4228,0x4248,0x4a69,0x4a69,0x4a69,0x4a69,0x4248,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4248,0x4248,0x4269,0x4228,0x4228,0x4a69,0x4249,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4269,0x4228,0x4248,0x4a48,0x4a48,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x4a49,0x4a49,0x4a69,0x4a89,0x4a49,0x4a49,0x4248,0x4a48,0x4228,0x4248,0x4a89,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4a49,0x39e7,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4a69,0x4248,0x4228,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x3a08,0x3a07,0x3a08,0x4208,0x4248,0x4228,0x4249,0x4208,0x4228,0x4228,0x3a07,0x4248,0x4207,0x4228,0x4a49,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4208, +0x39c6,0x31a6,0x31a6,0x39c7,0x31c6,0x31c6,0x31c6,0x31a6,0x2986,0x31c6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x39c7,0x3186,0x2986,0x3186,0x31a6,0x31c6,0x31a6,0x31c6,0x31c6,0x31a6,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x39c6,0x31c6,0x31e7,0x39e7,0x31c6,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c6,0x31a6,0x39e7,0x31c6,0x31c7,0x3a08,0x3a28,0x39e7,0x39e7,0x31c6,0x31c6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a07,0x31c6,0x31c6,0x3a07,0x39e7,0x39c6,0x39e7,0x39c6,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x4228,0x39e7,0x31e7,0x31c6,0x39e7,0x31e7,0x31c6,0x31c6,0x31c7,0x39c6,0x31c6,0x39e7,0x39e7,0x39e7,0x31a6,0x31c6,0x39e7,0x4248,0x4a89,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x3a08,0x39e7,0x31e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x31c6,0x39e7,0x3a07,0x39e7,0x39e7,0x3a08,0x39e7,0x31c6,0x31e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31a6,0x39e7,0x3a07,0x39e7,0x39c6,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39c7,0x31a6,0x31c7,0x39e7,0x31e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4228,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x4208,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39e7,0x4208,0x4208,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x39e7,0x4228,0x4248,0x3a08,0x4228,0x4a69,0x39e7,0x39c7,0x3a07,0x3a07,0x31c7,0x3a07,0x4228,0x4248,0x39e7,0x39e7,0x3a07,0x3a07,0x4208,0x4228,0x3a07,0x39c7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4208,0x4228,0x4207,0x3a07,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x3a28,0x3a07,0x3a07,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e7,0x39e7,0x3a07,0x4208,0x39e7,0x3a07,0x3a07,0x4208,0x4208,0x4207,0x4228,0x4a49,0x4228,0x4248,0x4228,0x4207,0x3a07,0x39e7,0x4228,0x4208,0x4208,0x3a07,0x39e7,0x39c7,0x39e7,0x39e7,0x3a07,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x4228,0x4248,0x4248,0x39e7,0x4207,0x4228,0x39c7,0x39c7,0x3a07,0x39e7,0x39e7,0x39e7,0x4207,0x39e7,0x4228,0x4228,0x4208,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x4208,0x39e7,0x39e7,0x4207,0x4228,0x4207,0x39e7,0x4208,0x39e7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7, +0x31c6,0x3185,0x39e6,0x39c6,0x39e7,0x3a07,0x3a07,0x4228,0x3a07,0x3a07,0x39c6,0x31a6,0x31c6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x31c6,0x39e7,0x4207,0x4228,0x4228,0x3a07,0x4227,0x4228,0x4228,0x4248,0x4227,0x4228,0x3a07,0x39e7,0x4228,0x4207,0x3a07,0x4228,0x3a07,0x3a07,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x39e7,0x4227,0x3a07,0x3a07,0x3a07,0x31c6,0x4248,0x4228,0x3a07,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x31c6,0x4248,0x4248,0x39e7,0x4248,0x39e7,0x3a07,0x3a27,0x3a07,0x3a27,0x3a07,0x3a27,0x31c6,0x31e6,0x3a07,0x4227,0x39e7,0x31c6,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a27,0x31e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4228,0x4228,0x3a07,0x39e7,0x39e7,0x31a6,0x3a27,0x39e7,0x31c6,0x3a07,0x31e7,0x3a27,0x3a07,0x3a07,0x39e7,0x31a6,0x31c6,0x39e6,0x3a07,0x3a07,0x31c6,0x3a07,0x31c6,0x39e7,0x39e7,0x31a6,0x31a6,0x31c6,0x39e6,0x3a27,0x31c6,0x31a6,0x39e7,0x3a07,0x3a07,0x3a07,0x31a6,0x31e7,0x3a28,0x31e7,0x2986,0x39e7,0x4228,0x39e7,0x31e7,0x2985,0x39e7,0x39e7,0x39e6,0x31c6,0x29a5,0x31c6,0x31a6,0x2985,0x31a6,0x2985,0x2985,0x31a6,0x31c6,0x31c7,0x31c7,0x2144,0x3a07,0x4228,0x31a6,0x39e7,0x39e7,0x31c6,0x31a6,0x31a6,0x3a07,0x4248,0x3a07,0x3a28,0x31c6,0x31a6,0x3a08,0x31c6,0x39e7,0x29a5,0x3a07,0x31c6,0x31a6,0x39c6,0x31c6,0x31c6,0x31c6,0x31c6,0x3186,0x3186,0x2985,0x31c6,0x2985,0x39e7,0x39e7,0x31a6,0x31a6,0x39e7,0x39c7,0x39e7,0x31a6,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x39c6,0x31c6,0x3a07,0x31c6,0x31a6,0x31c6,0x3a07,0x31e6,0x31a6,0x39e6,0x29a5,0x31a6,0x31a6,0x31a6,0x39c7,0x31c6,0x31c6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x31e7,0x31c6,0x31a5,0x31c6,0x39e6,0x31c6,0x39c7,0x31a6,0x31c6,0x39e7,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2985,0x2985,0x2986,0x31c6,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31c6,0x31a6,0x3185,0x31a6,0x31a6,0x2965,0x31a5,0x31c6,0x2985,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31c6,0x31a6,0x2944,0x2965,0x31a6,0x2985,0x3186,0x2985,0x2985,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x3185,0x3186,0x31a6,0x31a6,0x3185,0x3185,0x3186,0x2945,0x39c7,0x39e7,0x31a6,0x31a6,0x3186,0x2985,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x3185,0x3185,0x31a6,0x2965,0x31a6, +0x636c,0x5b0b,0x52ea,0x5b0b,0x5b2b,0x634c,0x632c,0x5b2b,0x634c,0x5b2b,0x632b,0x5b0b,0x634b,0x634b,0x5b2b,0x634c,0x5b2b,0x634c,0x632b,0x5b0b,0x634c,0x634c,0x5b0b,0x634c,0x634c,0x5b0b,0x634c,0x634c,0x636c,0x5b2b,0x634c,0x5b2b,0x632b,0x5b0b,0x5b2b,0x5b4b,0x530b,0x5b2b,0x5b2b,0x636c,0x634c,0x5b0b,0x5b2c,0x632c,0x634c,0x634c,0x5b0b,0x5b0b,0x5b2c,0x52eb,0x52ea,0x5b2b,0x530b,0x52ea,0x5b0b,0x530a,0x52ea,0x5b0b,0x5b2b,0x52ea,0x52ea,0x5b0b,0x636c,0x634c,0x5b2b,0x5b2c,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b2c,0x5b2b,0x5b2b,0x634c,0x5b2b,0x5b0b,0x634c,0x6b6c,0x5b2b,0x636c,0x634c,0x634c,0x634c,0x5b2b,0x634c,0x5b2c,0x5b0b,0x5b2b,0x5b0b,0x634c,0x636c,0x5b2b,0x634c,0x5b4c,0x634c,0x5b4b,0x5b2b,0x5b2c,0x632c,0x5b2b,0x636c,0x634c,0x5b2b,0x636c,0x5b2b,0x634c,0x5b2b,0x634c,0x5b2b,0x52ca,0x5b2b,0x634c,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x5b2c,0x5b0b,0x52ea,0x530b,0x5b2b,0x634c,0x636c,0x530a,0x5b2c,0x5b0b,0x5b0b,0x530b,0x634c,0x634c,0x632c,0x636c,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x52ea,0x5b2b,0x5b2b,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x634c,0x52eb,0x52ca,0x5b2c,0x5b2c,0x5b2c,0x634c,0x5b2b,0x634c,0x5b2c,0x636c,0x636c,0x638c,0x6b8d,0x634c,0x636d,0x5b0b,0x634c,0x5b2c,0x634c,0x5b2b,0x634c,0x634c,0x5b4c,0x634c,0x636d,0x5b4c,0x6b8d,0x5b2b,0x5b2b,0x632c,0x636c,0x634c,0x5b2b,0x636d,0x634c,0x636c,0x5b2b,0x634c,0x636c,0x634c,0x6bad,0x636d,0x634c,0x6b8d,0x6b8d,0x6b6c,0x636c,0x7c0f,0x73ad,0x634c,0x634c,0x6b6d,0x636c,0x636c,0x5b2b,0x636c,0x5b2b,0x636c,0x634c,0x73ad,0x6b8d,0x634c,0x5b2b,0x5b0b,0x632b,0x634c,0x5b2b,0x5b2b,0x636c,0x636c,0x632c,0x634c,0x6b6d,0x634c,0x632c,0x632c,0x634c,0x632c,0x632c,0x634c,0x5b4c,0x632c,0x634c,0x6b6d,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x632c,0x632b,0x6b8d,0x634c,0x634c,0x632c,0x632c,0x5b0b,0x632c,0x632c,0x5aeb,0x5aeb,0x630b,0x5aca,0x5aeb,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5b0c,0x5aeb,0x630b,0x5aeb,0x5b0b,0x632c,0x5b2b,0x52aa,0x5aeb,0x5aeb,0x5aeb,0x632c,0x52ca,0x5aea,0x5b0b,0x5aeb,0x52aa,0x5acb,0x5aeb,0x52ca,0x5aeb,0x52ca,0x5aeb,0x5aca,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x5aea,0x52ca,0x5aea,0x5aea,0x52ca,0x5aca,0x630b,0x5aca,0x528a,0x5aeb,0x52ca,0x52aa,0x5aea,0x5289,0x4a69,0x52aa,0x5289,0x52a9,0x5aea,0x4a69,0x5289,0x6b6c,0x52aa,0x4a69,0x5289,0x4a48,0x4a69,0x4a48,0x52a9,0x4a69, +0x634b,0x634b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x52ea,0x5b0b,0x634c,0x634c,0x5b0b,0x5b2b,0x632c,0x632b,0x634b,0x632b,0x634c,0x636c,0x5b2b,0x634c,0x634c,0x634b,0x5b0b,0x5b2b,0x530a,0x5b2b,0x636c,0x636c,0x634c,0x632b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5aea,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x52ca,0x52ca,0x52eb,0x5b0b,0x52ca,0x52ca,0x5b0b,0x52ca,0x4aa9,0x52ea,0x52ca,0x52ca,0x52ea,0x5b0b,0x5b0b,0x52ea,0x52eb,0x52ca,0x52ea,0x52ea,0x530b,0x52eb,0x530b,0x5b2c,0x5b4c,0x5b2b,0x5b4c,0x5b2b,0x5b2b,0x636c,0x636c,0x5b2b,0x5b2b,0x5b2b,0x52ca,0x4268,0x5b2b,0x634c,0x634c,0x5b0b,0x5b2b,0x52ea,0x5b0b,0x52ea,0x5b2b,0x634c,0x530a,0x634c,0x5b2b,0x5b2c,0x636c,0x5b2c,0x530b,0x5b2b,0x634c,0x530b,0x530b,0x530b,0x5b0b,0x636c,0x5b4c,0x5b2b,0x52eb,0x52ea,0x5b2b,0x52ea,0x530b,0x530b,0x530a,0x52ea,0x4aca,0x52ea,0x530b,0x530b,0x530b,0x5b2b,0x5b0b,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x634c,0x5b2b,0x530b,0x5b4c,0x636d,0x634c,0x636c,0x634c,0x5b0b,0x6b8d,0x530b,0x52eb,0x52ca,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b2b,0x5b2c,0x5b0b,0x5b2c,0x5b2b,0x52ea,0x4aaa,0x5b2b,0x5b0b,0x636d,0x634c,0x5b2c,0x634c,0x636d,0x5b2c,0x632c,0x636d,0x634c,0x5b4c,0x636c,0x5b2c,0x5b0b,0x5b2c,0x52ea,0x634c,0x634c,0x5b2b,0x6b6d,0x636c,0x634c,0x634c,0x73ce,0x634c,0x6b6d,0x5b2c,0x5b2c,0x6b8d,0x5b2b,0x636c,0x634c,0x636c,0x6bad,0x6bad,0x632c,0x5b2c,0x636c,0x636c,0x6bad,0x6b6c,0x7bef,0x73ce,0x6b8d,0x636d,0x5b2c,0x6b8d,0x73ce,0x6bae,0x634c,0x5b0b,0x636d,0x634c,0x73ad,0x73ce,0x634c,0x634c,0x6b6d,0x634c,0x6b6d,0x636d,0x634c,0x634c,0x5b0b,0x636c,0x6b6d,0x5b2c,0x5b0b,0x636d,0x6bad,0x634c,0x632c,0x5b0b,0x6b8d,0x6b8d,0x634c,0x634c,0x5b2b,0x634c,0x5b0b,0x634c,0x634c,0x5b2b,0x632c,0x6b6d,0x6b8d,0x636d,0x634c,0x632c,0x5b2b,0x6b6d,0x6b6d,0x6bad,0x6b6d,0x634c,0x6b6d,0x6b6d,0x632c,0x6b6d,0x634c,0x636c,0x634c,0x5b0b,0x634c,0x6b8d,0x632c,0x6b6d,0x632c,0x630b,0x634c,0x632c,0x634c,0x632c,0x632c,0x5b2b,0x5b0b,0x632c,0x630b,0x634c,0x5b2b,0x5b2b,0x630b,0x5aeb,0x632c,0x5b0c,0x634c,0x634c,0x6b6d,0x634c,0x634c,0x630b,0x632c,0x5b2c,0x5b4c,0x634c,0x5b0b,0x630b,0x630b,0x630b,0x6b4c,0x6b4c,0x630c,0x632c,0x632c,0x632c,0x632c,0x632b,0x634c,0x632c,0x5b0b,0x632c,0x632c,0x6b4c,0x632b,0x634c,0x6b8c,0x634c,0x5b2b,0x634c,0x5b2b,0x632b,0x632c,0x6b8d,0x634c, +0x634c,0x634b,0x5b2b,0x634c,0x636c,0x5b0b,0x634c,0x634c,0x5b2b,0x5b2b,0x5b0b,0x5b2c,0x632c,0x634c,0x5b2b,0x5b2b,0x632b,0x5b0b,0x634c,0x5b0b,0x634c,0x5b4c,0x632b,0x634c,0x634c,0x6b8d,0x5b4c,0x5b0b,0x5b0b,0x5aeb,0x530b,0x5b0b,0x5aeb,0x52ca,0x632c,0x632c,0x5b0b,0x52ea,0x5b0b,0x632b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x5b4c,0x5b2b,0x5b2c,0x52ea,0x4268,0x5b0b,0x52eb,0x52ea,0x52eb,0x52aa,0x52ca,0x4aa9,0x5b0b,0x5b0b,0x5aea,0x52ca,0x5b0b,0x530b,0x5b0b,0x634c,0x4aa9,0x4a89,0x52ca,0x5b2b,0x4aca,0x5b2c,0x5b0b,0x5b0b,0x52ea,0x52ea,0x634c,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x4a89,0x52eb,0x530b,0x5b0b,0x52eb,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x634c,0x5b0b,0x52eb,0x636c,0x530b,0x530b,0x5b2b,0x530b,0x5b2b,0x5b2b,0x530b,0x52ea,0x4289,0x52eb,0x52ea,0x5b0b,0x52ca,0x52ca,0x52ca,0x52ea,0x5b2b,0x530b,0x530b,0x5b0b,0x530b,0x5b2b,0x5b0b,0x4aca,0x530b,0x52eb,0x5b0b,0x4aca,0x52ca,0x52eb,0x5b2b,0x634c,0x52eb,0x632b,0x5b0b,0x530b,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5aeb,0x52eb,0x636c,0x5b0b,0x52ca,0x5b0b,0x52ea,0x52ca,0x5b0b,0x5b2b,0x5b2b,0x634c,0x52ea,0x5b0b,0x5b4c,0x5b0b,0x5b0b,0x5b0b,0x5b2b,0x5b4c,0x5b2c,0x5aeb,0x530b,0x636d,0x5b0b,0x5b2c,0x634c,0x52ea,0x636c,0x5b0b,0x4aaa,0x530b,0x6b6d,0x5b2b,0x5b4c,0x52eb,0x634c,0x632c,0x634c,0x6b8d,0x6b8d,0x636d,0x636d,0x632c,0x5b0b,0x5b2c,0x636c,0x5b0b,0x632c,0x73ae,0x6b8d,0x636d,0x634c,0x636c,0x5b2c,0x634c,0x636c,0x634c,0x5b0b,0x636d,0x632c,0x5b2c,0x6b8d,0x5b4c,0x634c,0x6b8d,0x6b6d,0x5b2c,0x5aeb,0x5b0b,0x5b2c,0x6b8d,0x6b8d,0x6b8d,0x5b2c,0x6b6d,0x738e,0x634c,0x634c,0x6b6d,0x636d,0x634c,0x634c,0x634c,0x6bad,0x73ae,0x5b0b,0x634c,0x6b6c,0x632c,0x634c,0x636c,0x634c,0x6b4d,0x632c,0x634c,0x632c,0x5b0b,0x6b4c,0x6b8d,0x6b6c,0x6b6c,0x5b0b,0x52cb,0x5b2c,0x634c,0x632c,0x634c,0x738d,0x632c,0x634c,0x634c,0x634c,0x632c,0x6b4c,0x6b4c,0x73ce,0x6b6d,0x636d,0x634c,0x632c,0x634c,0x632c,0x6b4c,0x634c,0x632c,0x6b4c,0x6b6d,0x630b,0x5b0b,0x634c,0x632c,0x632c,0x636c,0x634c,0x5aeb,0x632c,0x632c,0x5b0b,0x6b6d,0x634c,0x632c,0x634c,0x5b0c,0x630b,0x632c,0x634c,0x636d,0x632c,0x632c,0x632c,0x5b0b,0x632c,0x632b,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x632c,0x5aeb,0x632c,0x5b0b,0x634c,0x5b0b,0x632c,0x634c,0x632c,0x5b0b,0x630b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x52ca,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb, +0x5b2b,0x5b2b,0x636c,0x634c,0x636c,0x52ea,0x5b0b,0x636c,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x632c,0x5b0b,0x5b2b,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b4c,0x6b8d,0x634c,0x5b2b,0x5b2b,0x634c,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x634c,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x530b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x52eb,0x530b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b4c,0x5b2c,0x4aaa,0x52eb,0x52eb,0x52ca,0x52aa,0x4a89,0x530b,0x52ca,0x52ea,0x5b0b,0x5b0b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x636c,0x5b2b,0x636c,0x530b,0x530b,0x530b,0x52ea,0x5b0b,0x52ca,0x52eb,0x52ea,0x5b4c,0x52ea,0x5b0b,0x52eb,0x52ca,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b4c,0x636c,0x5b2b,0x52ca,0x52eb,0x52eb,0x52ca,0x5b2b,0x634c,0x5b4c,0x52ea,0x5b2b,0x634c,0x5b2b,0x5b2b,0x52ca,0x5b0b,0x5b4c,0x634c,0x5b0b,0x4aaa,0x52eb,0x52eb,0x5b0b,0x52ca,0x4aca,0x5b2b,0x5b2c,0x636c,0x5b2c,0x52ea,0x5b0b,0x52eb,0x5b2c,0x5b0b,0x530b,0x636c,0x52ca,0x634c,0x5b4c,0x52ea,0x5b2c,0x5b4c,0x5b4c,0x52ca,0x5b0b,0x636c,0x636c,0x4aca,0x636d,0x5b4c,0x634c,0x5b4c,0x5b4c,0x530b,0x5b2c,0x636c,0x634c,0x5b4c,0x5b4c,0x5b2c,0x52ea,0x636c,0x636d,0x634c,0x5b2b,0x636c,0x634c,0x638d,0x5b2c,0x636c,0x636d,0x5b2c,0x6bae,0x530b,0x5b2c,0x636c,0x530b,0x5b2c,0x5b0b,0x636d,0x6b8d,0x634c,0x636c,0x634c,0x6bad,0x6b8d,0x6bae,0x6bae,0x5b2b,0x638d,0x5b2c,0x5b2c,0x6b8d,0x636d,0x6b6d,0x5b0b,0x634c,0x5b2c,0x52eb,0x634c,0x5b2c,0x5b0b,0x636d,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5b2c,0x634c,0x5b2c,0x5b0b,0x634c,0x634c,0x6b8d,0x6b8d,0x632c,0x632c,0x6b8d,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b0b,0x634c,0x632c,0x5b0b,0x634c,0x5b2c,0x6bae,0x7bce,0x6b6d,0x634c,0x634c,0x5b0b,0x5b2b,0x5b0b,0x6bae,0x6b8d,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x636c,0x636d,0x6b6d,0x5b0b,0x6b8d,0x636c,0x5b0b,0x632c,0x634c,0x634c,0x634c,0x636c,0x634c,0x6bae,0x636d,0x632c,0x6b6d,0x632c,0x5aeb,0x6b4d,0x632c,0x632c,0x632c,0x632c,0x5aeb,0x5b2c,0x6b6d,0x634c,0x636d,0x634c,0x5b0b,0x5b2c,0x634c,0x636d,0x632c,0x6b6d,0x5b0b,0x632c,0x5b0b,0x6b8d,0x634c,0x634c,0x5aeb,0x632c,0x634c,0x634c,0x5aeb,0x6b6d,0x634c,0x632c,0x5aeb,0x5b0b,0x5b0b,0x632c,0x632c,0x6b4c,0x6b6d,0x634c,0x634c,0x630b,0x6b6c,0x6b8d,0x6b6d,0x634c,0x6b6c,0x632c,0x634c,0x73ae,0x632c,0x632c,0x6b4c,0x738d,0x630b,0x632c,0x632c,0x634c,0x5b0b,0x5b0b,0x632c,0x632c,0x5aeb,0x5aeb,0x5b0b, +0x6b8d,0x6bce,0x6b8d,0x6b8d,0x6b8d,0x636c,0x634c,0x5b0b,0x5b2b,0x5b2b,0x6bcd,0x5b4c,0x636d,0x634c,0x636c,0x6b8d,0x6b8d,0x636c,0x634c,0x73ee,0x5b2b,0x636c,0x634c,0x5b2c,0x638d,0x636c,0x634c,0x634c,0x5b2b,0x5b2c,0x5b2b,0x5b2b,0x52eb,0x530b,0x5b2c,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x6b8d,0x636c,0x634c,0x5b0b,0x5b4b,0x530b,0x5b0b,0x52eb,0x52ea,0x5b0b,0x52ca,0x4a89,0x52ca,0x4a89,0x4aaa,0x4aaa,0x4aaa,0x52aa,0x52eb,0x4a69,0x52aa,0x52eb,0x52eb,0x4aa9,0x52ca,0x4aca,0x5b2c,0x52eb,0x52ca,0x4aca,0x530b,0x5b2c,0x52ea,0x636d,0x52ea,0x52eb,0x52ca,0x52ca,0x52ca,0x4aaa,0x4a89,0x52eb,0x52ca,0x530a,0x52ca,0x4aaa,0x52eb,0x5b2b,0x4aa9,0x5aeb,0x52ca,0x4248,0x52eb,0x4a89,0x52ea,0x52ca,0x4248,0x4aaa,0x52aa,0x52eb,0x4aaa,0x52ea,0x530b,0x4aaa,0x4a89,0x4268,0x52ca,0x5aeb,0x52ca,0x52ca,0x52eb,0x4a89,0x52ca,0x4a89,0x4a69,0x4a89,0x52ca,0x4269,0x5b0b,0x5b2c,0x3a48,0x4aaa,0x52ea,0x4aaa,0x4aaa,0x52ca,0x4aa9,0x4aaa,0x4a89,0x52ca,0x52eb,0x52eb,0x5b0b,0x5b2c,0x52ca,0x4269,0x52ca,0x5b2c,0x5b2c,0x5aeb,0x52eb,0x52ca,0x5b0b,0x52eb,0x3a28,0x4aaa,0x5b0c,0x4a8a,0x52aa,0x52ca,0x4aca,0x4aaa,0x5b0b,0x52eb,0x5b0c,0x5b2c,0x5b2b,0x5b2b,0x52ca,0x5b2b,0x52eb,0x52ca,0x4a89,0x5b0b,0x5b2c,0x5b2b,0x636d,0x5b0b,0x5b0b,0x530b,0x5aeb,0x52ca,0x5b2c,0x634c,0x5b2b,0x530b,0x5b0b,0x52eb,0x634c,0x52ca,0x5b0b,0x52eb,0x52ca,0x5b0b,0x6b6d,0x5b0b,0x634c,0x5b2b,0x530b,0x5b2c,0x634c,0x5aeb,0x52ca,0x5b0b,0x5aeb,0x5aeb,0x5aeb,0x5b0b,0x634c,0x52ca,0x634c,0x632c,0x5aeb,0x5b2c,0x5b0b,0x634c,0x6b6d,0x632c,0x634c,0x5aeb,0x636d,0x634c,0x634c,0x630b,0x632c,0x52eb,0x634c,0x634c,0x632c,0x632c,0x632c,0x5b0b,0x636d,0x52eb,0x632c,0x634c,0x632c,0x634c,0x634c,0x5b0b,0x6b6d,0x6b8d,0x6b6d,0x632c,0x634c,0x632c,0x634c,0x6b8d,0x52eb,0x634c,0x632c,0x634c,0x6b8d,0x636c,0x636c,0x6bae,0x6bad,0x6b8d,0x738e,0x6b6d,0x634c,0x636c,0x6b8d,0x632c,0x6b6d,0x6b8d,0x738e,0x73ae,0x634c,0x6b6d,0x634c,0x6b4c,0x6b6d,0x6b8d,0x636d,0x6b8d,0x73ae,0x5b0b,0x5b0b,0x634c,0x634c,0x5aeb,0x5b0b,0x52ea,0x636c,0x634c,0x634c,0x73ce,0x636c,0x5b0c,0x6b4c,0x634c,0x634c,0x636d,0x6b6d,0x632c,0x632c,0x632c,0x52ca,0x632c,0x632c,0x632c,0x632c,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x6b6d,0x6b8d,0x6b8d,0x5b2c,0x632c,0x632c,0x634c,0x6b6d,0x6b8d,0x5aeb,0x6b4c,0x6b6d,0x632c,0x5b0b,0x73ae,0x7bce,0x6b4c,0x632c,0x5b0b,0x5b0b,0x5aeb,0x632c,0x632c, +0x6bad,0x73ce,0x638d,0x7c2f,0x740f,0x6bae,0x636d,0x634c,0x6b8d,0x636c,0x638d,0x636c,0x636d,0x636d,0x634c,0x5b0b,0x6bce,0x5b0b,0x638d,0x636d,0x5b2c,0x638d,0x634c,0x634c,0x73ce,0x636c,0x5b4c,0x5b0b,0x5b0b,0x530b,0x5b2b,0x530b,0x52ea,0x52ca,0x4aaa,0x5b4c,0x52ca,0x52ca,0x52eb,0x52eb,0x4aaa,0x52ea,0x530b,0x530b,0x52ea,0x5aeb,0x52aa,0x4aaa,0x5b0b,0x52eb,0x4aaa,0x4aaa,0x4a89,0x4a89,0x4a69,0x4a69,0x4228,0x4a69,0x4269,0x4269,0x4249,0x52ea,0x52ca,0x4248,0x52aa,0x3a08,0x4228,0x4249,0x52aa,0x4a69,0x3a08,0x3a28,0x4228,0x31e7,0x4248,0x4248,0x4228,0x4248,0x4248,0x3a07,0x39e7,0x3a07,0x4a89,0x4228,0x2986,0x39e7,0x3a08,0x31c7,0x31c6,0x4248,0x4248,0x39e7,0x4228,0x4a89,0x3a07,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x31c6,0x31e7,0x3a07,0x39c7,0x4228,0x3a07,0x31c6,0x2965,0x2986,0x39c7,0x2945,0x31a6,0x2145,0x31c6,0x31a6,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2986,0x31a6,0x2965,0x31c6,0x31c6,0x3186,0x31a6,0x31c7,0x4208,0x31a6,0x31a6,0x3186,0x31e7,0x3a08,0x31a6,0x2965,0x31e7,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x3a07,0x31a6,0x39e7,0x3a07,0x31c6,0x31c6,0x39c7,0x39e7,0x31a6,0x31a6,0x31c6,0x3a07,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x4248,0x4228,0x39e7,0x4a69,0x31c6,0x4208,0x39e7,0x4248,0x4248,0x39e7,0x39e7,0x4269,0x39e7,0x31a6,0x4228,0x39c7,0x4228,0x4248,0x4248,0x39e7,0x4228,0x4aa9,0x4a69,0x4249,0x3a28,0x4a8a,0x4a69,0x4269,0x4a69,0x4228,0x4a69,0x52ca,0x4a89,0x4a89,0x4248,0x4a89,0x5b0b,0x52aa,0x52aa,0x52ca,0x52aa,0x52aa,0x52aa,0x52ca,0x5aeb,0x52cb,0x4aaa,0x52aa,0x52aa,0x52ca,0x5aeb,0x52ca,0x52ca,0x5aeb,0x634c,0x632c,0x634c,0x632c,0x632c,0x5b0b,0x73ae,0x5aeb,0x5aeb,0x52ca,0x5b0b,0x634c,0x6b6d,0x634c,0x634c,0x6b8d,0x636d,0x5b0b,0x632c,0x6b6d,0x6b8d,0x73ce,0x6bae,0x6bae,0x5b2c,0x73cf,0x73ef,0x6bad,0x73ce,0x7c10,0x7c0f,0x8430,0x73ae,0x7c0f,0x73ae,0x7c0f,0x7c30,0x8430,0x7c2f,0x7bef,0x7c0f,0x7c0f,0x8471,0x8450,0x7bef,0x7bef,0x8430,0x7c0f,0x73ee,0x7c0f,0x8430,0x7c0f,0x8c91,0x94b2,0x8450,0x8430,0x7c2f,0x8450,0x8c91,0x8c71,0x73ae,0x94d2,0x94d2,0x8430,0x840f,0x73ae,0x73ce,0x8c71,0x8c91,0x8450,0x7bef,0x840f,0x8c71,0x8450,0x7c0f,0x8450,0x8c70,0x7c0f,0x7c2f,0x8c91,0x8c71,0x73ce,0x8450,0x8c71,0x94d2,0x8450,0x8c91,0x73ee,0x8c71,0x7bef,0x73ae,0x8c91,0x8c71,0x7c0f,0x7bef,0x6bad,0x7c0f,0x8c91,0x842f,0x73ce,0x6bae,0x6b4c,0x6b8d,0x73ce,0x73ad, +0x4a69,0x4aaa,0x4269,0x4a69,0x3a28,0x4228,0x3a08,0x4a8a,0x4249,0x31a6,0x3a08,0x4269,0x3a28,0x39e7,0x4228,0x31c7,0x39e7,0x31c7,0x3a08,0x31a6,0x31c7,0x3a08,0x31c6,0x31a6,0x39c7,0x31c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x39e7,0x31a6,0x2985,0x31a6,0x31c7,0x2986,0x31a6,0x2145,0x2965,0x2986,0x31a6,0x2124,0x2965,0x3a07,0x31a6,0x31c7,0x3186,0x2145,0x2965,0x2145,0x2985,0x2965,0x2965,0x2124,0x2965,0x2104,0x2965,0x2945,0x2965,0x2965,0x2104,0x2965,0x2986,0x2965,0x2104,0x2144,0x2124,0x2965,0x2965,0x2104,0x2104,0x18e3,0x2965,0x2144,0x2965,0x2145,0x2965,0x2945,0x2124,0x2124,0x18e3,0x2145,0x2124,0x10a2,0x2124,0x2965,0x2124,0x2104,0x2965,0x2144,0x1903,0x2145,0x2124,0x2124,0x2104,0x18e3,0x2124,0x1904,0x1903,0x2104,0x2965,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x2124,0x2104,0x18e3,0x10a2,0x18c3,0x2124,0x2124,0x2104,0x2945,0x18c2,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x2965,0x18e3,0x10a3,0x2124,0x2124,0x18c3,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2144,0x2124,0x2124,0x2124,0x1903,0x1903,0x2104,0x18e3,0x1904,0x2124,0x10c3,0x2104,0x2124,0x2144,0x2965,0x2985,0x2986,0x3186,0x2124,0x2124,0x2124,0x2124,0x2965,0x2144,0x2145,0x2104,0x2104,0x2124,0x2945,0x2986,0x2145,0x31a6,0x3186,0x2145,0x2986,0x31a6,0x2985,0x2986,0x39e7,0x31a6,0x2965,0x2985,0x2965,0x31c6,0x2144,0x2965,0x2945,0x2986,0x31c7,0x2945,0x2986,0x3a07,0x39e7,0x2985,0x31c6,0x31a6,0x31a6,0x39c7,0x31a6,0x2965,0x4208,0x31a6,0x31a6,0x39e7,0x4a89,0x31c6,0x39c7,0x31a7,0x39e7,0x39e7,0x4249,0x3a07,0x4a49,0x39e7,0x39e7,0x4208,0x4228,0x4a49,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4228,0x39e7,0x39e7,0x4a69,0x4249,0x4a89,0x4248,0x52ca,0x52ca,0x52ca,0x5aeb,0x528a,0x4a69,0x52cb,0x52aa,0x4a49,0x4a69,0x4a49,0x5acb,0x632c,0x634c,0x5b0b,0x5b0b,0x52eb,0x5b0c,0x5b0b,0x5aeb,0x5b0b,0x6b4d,0x5b0b,0x630c,0x6b6d,0x6b6d,0x634c,0x636d,0x6b6d,0x632c,0x5b2c,0x5aeb,0x5b2c,0x738e,0x7bcf,0x73ae,0x73ae,0x6bae,0x7c10,0x73ae,0x632c,0x6b4d,0x6b6d,0x73ae,0x6b4d,0x73ae,0x73ae,0x7bef,0x73ae,0x6b6e,0x8451,0x8430,0x73ce,0x8451,0x8430,0x7bef,0x7bef,0x7c10,0x8451,0x8c92,0x73cf,0x7c0f,0x73ce,0x73ae,0x8470,0x9cd3,0x8450,0x8450,0x8430,0x7bcf,0x8430,0x8c50,0x94d2,0x8451,0x9491,0x8c71,0x8c91,0x9d13,0x9cf3,0x94b2,0x94b1,0x8c71,0x7bef,0x7bef,0x7bef,0x8c91, +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1041,0x0820,0x0000,0x0000,0x0020,0x0000,0x1081,0x0000,0x0861,0x0840,0x1081,0x0020,0x0000,0x1082,0x18c3,0x0861,0x0861,0x0861,0x0820,0x0820,0x1081,0x0861,0x0841,0x0861,0x1081,0x10a2,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0861,0x0820,0x1082,0x0861,0x0000,0x0840,0x0000,0x0840,0x10a2,0x0861,0x0881,0x0861,0x1081,0x1081,0x1082,0x0861,0x0861,0x1081,0x0840,0x0861,0x1081,0x0861,0x0020,0x0000,0x0841,0x0861,0x0841,0x0861,0x0020,0x0861,0x10a2,0x0861,0x1061,0x0840,0x0840,0x0020,0x0820,0x0820,0x0841,0x1061,0x0841,0x1082,0x1081,0x0841,0x1082,0x0861,0x0000,0x0861,0x0841,0x0020,0x0841,0x1081,0x0000,0x0820,0x1081,0x0841,0x1082,0x0861,0x1081,0x0861,0x0861,0x0840,0x0840,0x0861,0x0841,0x0841,0x1061,0x0841,0x0820,0x0861,0x1061,0x0841,0x10a2,0x0861,0x0020,0x0861,0x0020,0x0841,0x1082,0x10a2,0x0861,0x10a2,0x1081,0x0861,0x0881,0x0020,0x1081,0x0841,0x1061,0x1061,0x10a2,0x1082,0x0840,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x0861,0x0861,0x0881,0x0861,0x1061,0x0861,0x1082,0x1082,0x0840,0x0861,0x0861,0x0861,0x1082,0x0861,0x0840,0x10a2,0x1081,0x0861,0x0861,0x0840,0x0840,0x0000,0x0840,0x1061,0x0841,0x0861,0x10a2,0x1081,0x0861,0x1082,0x10a2,0x1082,0x1081,0x10a2,0x0840,0x0861,0x0840,0x0840,0x0841,0x0841,0x0020,0x0841,0x0841,0x0000,0x0000,0x0000,0x0820,0x0841,0x0020,0x1082,0x0820,0x0861,0x0820,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x1082,0x0841,0x0020,0x0000,0x0020,0x0881,0x18e3,0x18c2,0x18c3,0x0000,0x2103,0x2965,0x1061,0x0000,0x2104,0x2124,0x18e4,0x0821,0x18c3,0x2104,0x18e3,0x20e3,0x2104,0x18c3,0x2124,0x2125,0x1082,0x10a2,0x2104,0x18c3,0x2125,0x31a6,0x18e4,0x2965,0x4228,0x39c7,0x31a6,0x4208,0x4208,0x4208,0x4228,0x4208,0x39e8,0x39c7,0x4208,0x4249, +0x4248,0x4a89,0x4a69,0x4a89,0x52ca,0x4268,0x4289,0x4248,0x3a28,0x4248,0x3a07,0x4248,0x4248,0x3a07,0x4248,0x4228,0x3a07,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4a89,0x4269,0x4228,0x3a07,0x3a28,0x3a07,0x4228,0x4248,0x3a07,0x3a28,0x4228,0x4248,0x4248,0x4228,0x4248,0x4248,0x3a07,0x3a07,0x3a07,0x4228,0x4a69,0x4228,0x3a07,0x3a28,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x4248,0x3a07,0x3a28,0x3a28,0x3a28,0x4228,0x3a08,0x3a07,0x3a28,0x39e7,0x3a07,0x3a07,0x4248,0x39e7,0x39e7,0x4228,0x3a07,0x3a07,0x4228,0x3a28,0x3a07,0x3a28,0x3a28,0x3a08,0x39e7,0x3a08,0x3a07,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x4228,0x3a28,0x3a07,0x3a28,0x39e7,0x3a07,0x4228,0x4a69,0x4228,0x31c7,0x3a07,0x3a07,0x3a07,0x39e7,0x3a07,0x3a07,0x4248,0x4248,0x3a07,0x3a28,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a07,0x3a07,0x3a28,0x3a07,0x3a28,0x3a07,0x4228,0x4248,0x31c6,0x39e7,0x3a07,0x3a07,0x3a07,0x3a08,0x3a28,0x31e7,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a07,0x3a07,0x3a08,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x4248,0x3a07,0x3a07,0x3a08,0x4248,0x3a07,0x39e7,0x3a07,0x4248,0x4228,0x39e7,0x3a07,0x39e7,0x39e7,0x3a07,0x3a28,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a07,0x3a28,0x39e7,0x3a07,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4a89,0x31c6,0x3a07,0x3a28,0x3a07,0x3a07,0x39e7,0x3a07,0x4228,0x3a07,0x3a07,0x3a07,0x4228,0x39e7,0x4248,0x4208,0x39e7,0x3a07,0x4228,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x31c6,0x3a07,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x3a07,0x3a07,0x4248,0x4228,0x39e7,0x3a07,0x39e7,0x39c6,0x39e7,0x39e7,0x31c7,0x39c6,0x3a07,0x39e7,0x3a07,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x39c6,0x39e7,0x31e7,0x39e7,0x3a07,0x3a07,0x31c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c6,0x39e7,0x31c6,0x39e7,0x31c6,0x31c6,0x31c6,0x31c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39c6,0x4228,0x39e7,0x31a6,0x39e7,0x4207,0x31a6,0x31a6,0x39e7,0x31c6,0x31a6,0x31c6,0x31c6,0x39e7,0x4228,0x31c6,0x31a6,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3185,0x3186,0x3186,0x3185,0x39e7,0x31a6,0x2965,0x3186,0x39e7,0x3186,0x31a6,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39c7,0x39c6,0x31c6,0x31a6,0x31a6,0x39c6,0x31a6,0x3185,0x2965,0x2124,0x2104,0x2124,0x2944,0x1903,0x1903,0x18e2,0x1903,0x2124,0x1903,0x18e3,0x1081, +0x4269,0x4249,0x4248,0x4269,0x4248,0x4248,0x4248,0x4228,0x4248,0x4228,0x3a28,0x4248,0x4269,0x3a28,0x4248,0x4248,0x4248,0x4a89,0x4269,0x4228,0x3a28,0x4248,0x3a28,0x3a28,0x4228,0x4248,0x3a28,0x3a07,0x4248,0x4228,0x4248,0x3a28,0x3a07,0x4228,0x3a28,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x4228,0x4228,0x4248,0x4269,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4228,0x4248,0x3a28,0x4228,0x3a28,0x3a07,0x4228,0x4248,0x4228,0x4228,0x4228,0x3a07,0x3a07,0x4248,0x4248,0x4228,0x4228,0x3a28,0x4248,0x4248,0x4248,0x4248,0x4228,0x3a08,0x4248,0x4228,0x3a07,0x4269,0x4248,0x4228,0x4248,0x3a07,0x39e7,0x4248,0x4248,0x4248,0x4269,0x4228,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4248,0x4228,0x39e7,0x4249,0x4248,0x4228,0x4248,0x4228,0x4a69,0x4248,0x4228,0x3a28,0x4269,0x4269,0x4248,0x4269,0x4a69,0x4228,0x4248,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4a89,0x4248,0x3a28,0x4268,0x4248,0x4248,0x4a89,0x4248,0x4269,0x4269,0x4269,0x4a69,0x4248,0x4228,0x4228,0x4a89,0x4248,0x4248,0x4248,0x4248,0x4248,0x4228,0x4a89,0x4228,0x4248,0x4a69,0x4248,0x3a28,0x4248,0x4228,0x4a89,0x4a69,0x4228,0x4a69,0x4a69,0x4269,0x4a89,0x4269,0x4269,0x4a69,0x4269,0x4a89,0x4a69,0x4228,0x4248,0x4a69,0x4a89,0x4a69,0x5289,0x4a69,0x4a69,0x4aaa,0x4a69,0x4248,0x4a89,0x4a89,0x4269,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x52ca,0x52aa,0x52aa,0x4a89,0x4aaa,0x52aa,0x52aa,0x52aa,0x4a89,0x4a69,0x4a89,0x4a89,0x52ca,0x52aa,0x4aaa,0x4a89,0x4aa9,0x52ca,0x52aa,0x4a89,0x4aaa,0x4a69,0x52ca,0x5aeb,0x52ca,0x52aa,0x4a89,0x5aeb,0x52ca,0x4a89,0x52aa,0x4a69,0x4a69,0x4a89,0x4a89,0x52eb,0x52ca,0x4a69,0x4a89,0x52aa,0x52aa,0x52aa,0x4a89,0x52ca,0x5aca,0x52a9,0x5aeb,0x52ca,0x4a89,0x52aa,0x4aaa,0x4a89,0x5289,0x52aa,0x52ca,0x52a9,0x52ca,0x4a89,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x4248,0x4a69,0x4a69,0x4a69,0x4a89,0x52aa,0x4a89,0x4a89,0x4a89,0x52aa,0x52aa,0x5aeb,0x4a89,0x4a89,0x52ca,0x4a8a,0x4a89,0x4a89,0x5aeb,0x5289,0x4a69,0x4a69,0x4a69,0x4a69,0x52ca,0x52ca,0x4a69,0x52aa,0x528a,0x4a49,0x4a8a,0x4a49,0x4a69,0x4a69,0x4a69,0x4249,0x4a89,0x52aa,0x52aa,0x4248,0x4a69,0x4248,0x4a89,0x4a89,0x4a89,0x4a8a,0x528a,0x4a69,0x4228,0x528a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52aa,0x4a69,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x528a,0x4a69,0x4a89,0x5acb,0x5aeb,0x4a89,0x4a49,0x52aa,0x52aa,0x52aa,0x4a69,0x528a,0x4a89,0x4228,0x4a49, +0x3a08,0x4248,0x3a28,0x3a07,0x3a28,0x3a07,0x3a08,0x3a07,0x4228,0x3a08,0x4249,0x4248,0x4228,0x3a28,0x3a07,0x3a28,0x4228,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x3a27,0x4248,0x3a07,0x3a08,0x4228,0x39e7,0x3a28,0x4228,0x4248,0x4269,0x4228,0x3a07,0x4228,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a28,0x3a07,0x4248,0x4248,0x4248,0x4a69,0x4a89,0x4228,0x4248,0x4269,0x4269,0x4269,0x4248,0x4248,0x3a28,0x4248,0x4248,0x4228,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4248,0x4a89,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4228,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4248,0x4269,0x4268,0x4248,0x4248,0x4248,0x4228,0x4248,0x4248,0x4269,0x4248,0x3a28,0x4248,0x4248,0x4248,0x4269,0x4248,0x3a28,0x4a69,0x4269,0x4268,0x4268,0x4a89,0x4a69,0x4248,0x4a69,0x4a69,0x4a69,0x3a28,0x4269,0x4248,0x4269,0x4269,0x4248,0x3a08,0x4269,0x4269,0x4248,0x3a28,0x4a69,0x4aa9,0x4269,0x4a89,0x4a69,0x4228,0x4249,0x4269,0x4a69,0x4248,0x4248,0x4268,0x4268,0x4248,0x4248,0x4228,0x4248,0x4269,0x4248,0x4248,0x4269,0x4248,0x4249,0x4248,0x4228,0x4269,0x4248,0x4269,0x4248,0x4a69,0x4269,0x4aaa,0x52aa,0x4a89,0x4a69,0x4a89,0x4aa9,0x4a69,0x4248,0x4248,0x4a69,0x4269,0x4a89,0x4269,0x4a69,0x4a49,0x4a69,0x4a89,0x4a89,0x4248,0x4248,0x4a89,0x4aa9,0x4a69,0x4a89,0x4a89,0x4a89,0x4a89,0x4a89,0x52aa,0x4a8a,0x4a89,0x4a89,0x52aa,0x52aa,0x52ca,0x52ca,0x52ca,0x4a89,0x4a89,0x4a89,0x52aa,0x52aa,0x4aa9,0x4a69,0x4a89,0x4aaa,0x52aa,0x52ca,0x52eb,0x52ca,0x52aa,0x52ca,0x52ca,0x4a89,0x4a89,0x52ca,0x52aa,0x52aa,0x4a69,0x52aa,0x5289,0x52aa,0x4a89,0x4a89,0x4a69,0x4a69,0x52aa,0x52aa,0x4a89,0x4a69,0x52aa,0x52aa,0x52aa,0x52aa,0x5289,0x4a69,0x52aa,0x52aa,0x4a69,0x4a89,0x52aa,0x52aa,0x528a,0x52aa,0x52aa,0x4248,0x4a89,0x4a89,0x4a69,0x4a69,0x4a89,0x4a69,0x52aa,0x4a69,0x4a48,0x4a48,0x4a48,0x4248,0x4a69,0x4a69,0x528a,0x528a,0x4a69,0x4aaa,0x4a89,0x4a69,0x4a69,0x4a69,0x4a89,0x4a89,0x4a69,0x52aa,0x5289,0x52aa,0x52aa,0x5289,0x4a89,0x52ca,0x52aa,0x4a69,0x4a89,0x52ca,0x52aa,0x4a8a,0x4249,0x4a8a,0x4a89,0x4a69,0x4249,0x4a69,0x4a89,0x52aa,0x4a69,0x4a69,0x4269,0x52aa,0x4249,0x4a89,0x52aa,0x4a89,0x528a,0x52aa,0x52aa,0x4a69,0x4a89,0x52ca,0x4a89,0x52aa,0x5b0b,0x52cb,0x5aeb,0x5aeb,0x52aa,0x52ca,0x4aaa,0x52aa,0x52cb,0x52ca,0x5aeb,0x52ca,0x528a,0x5aca,0x52ca,0x52aa,0x4a69,0x6b4d,0x632c,0x52ca,0x5aeb, +0x39e7,0x3a08,0x4208,0x3a07,0x39e7,0x3a07,0x3a07,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39c7,0x31c6,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31a6,0x39e7,0x4208,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x3a07,0x39e7,0x3a07,0x3a08,0x39e7,0x3a07,0x3a07,0x4228,0x39e7,0x3a07,0x3a07,0x3a08,0x3a07,0x3a08,0x3a08,0x4228,0x4228,0x4228,0x4248,0x4a89,0x4228,0x3a08,0x4228,0x3a07,0x3a07,0x4248,0x4248,0x3a07,0x39e7,0x3a07,0x39e7,0x4248,0x4248,0x3a07,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4269,0x4248,0x4228,0x4228,0x4248,0x39e7,0x3a07,0x4228,0x3a28,0x4228,0x4228,0x39e7,0x4228,0x3a08,0x39e7,0x4228,0x4207,0x4228,0x3a07,0x4228,0x4248,0x4a69,0x4228,0x3a07,0x3a08,0x4248,0x4228,0x4248,0x4a8a,0x4228,0x4228,0x4249,0x4228,0x4228,0x3a28,0x4248,0x4228,0x4a69,0x4248,0x4a69,0x4248,0x4228,0x4248,0x3a28,0x3a08,0x4248,0x3a28,0x4248,0x3a28,0x4228,0x4a89,0x4249,0x4228,0x4248,0x39e7,0x4228,0x4248,0x3a28,0x3a07,0x39e7,0x4208,0x4228,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x3a28,0x4228,0x4249,0x4228,0x4249,0x4248,0x3a08,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4a69,0x4a69,0x4248,0x4248,0x4248,0x5289,0x4a89,0x4248,0x4228,0x4228,0x4248,0x4248,0x4248,0x4a89,0x4a48,0x4248,0x4aaa,0x52aa,0x52ca,0x4a69,0x4a89,0x4aaa,0x4a69,0x4a8a,0x4a69,0x52aa,0x52ca,0x52aa,0x4a89,0x4a69,0x4248,0x4a89,0x52ca,0x5aeb,0x52aa,0x52aa,0x52aa,0x4a69,0x4269,0x4a89,0x5aeb,0x4a89,0x4aaa,0x4a69,0x4a89,0x4a69,0x52aa,0x4a89,0x4a89,0x4a69,0x528a,0x4a89,0x52aa,0x52cb,0x4a69,0x4a8a,0x4a69,0x52aa,0x4a89,0x4aaa,0x52eb,0x52ca,0x5aeb,0x52aa,0x52ca,0x5acb,0x5289,0x4a89,0x4248,0x4a49,0x52aa,0x4a69,0x52aa,0x52aa,0x528a,0x528a,0x4a69,0x4a49,0x4a69,0x4a69,0x4a8a,0x4a48,0x52ca,0x630c,0x4a89,0x52aa,0x4a89,0x528a,0x4a89,0x52ca,0x52aa,0x4a89,0x5289,0x528a,0x4a69,0x4248,0x4a69,0x4269,0x4269,0x4a69,0x4a89,0x4a89,0x52aa,0x4a89,0x52aa,0x4a69,0x4a69,0x4a69,0x4a69,0x4a89,0x4aaa,0x4a89,0x4aaa,0x5289,0x4a69,0x52aa,0x4a89,0x52aa,0x4a69,0x4249,0x4a8a,0x4a69,0x4a69,0x528a,0x4a89,0x4a69,0x4248,0x4a69,0x4228,0x4248,0x4a69,0x4248,0x4248,0x4aaa,0x4249,0x4228,0x52aa,0x4a69,0x4a49,0x4228,0x4a69,0x4a8a,0x4a69,0x4228,0x4a69,0x528a,0x4a49,0x52aa,0x630c,0x5b0b,0x4a8a,0x5aeb,0x4a89,0x5aeb,0x52aa,0x52aa,0x52aa,0x52aa,0x528a,0x4a69,0x52cb,0x52cb,0x52ca,0x632c,0x6b6d,0x5acb,0x5aeb,0x634d,0x5b0b, +0x3186,0x3185,0x31a6,0x31a6,0x2985,0x31c6,0x31c6,0x2985,0x3185,0x31a6,0x31a5,0x3185,0x3185,0x3186,0x31a6,0x31a6,0x3185,0x31a6,0x3185,0x3186,0x31a6,0x2985,0x2985,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x2985,0x31c6,0x31c6,0x31a5,0x39e7,0x31a6,0x31a6,0x31c6,0x3185,0x31c6,0x31a6,0x31a6,0x31a6,0x3185,0x31a6,0x2985,0x2986,0x31a6,0x3185,0x31a6,0x2965,0x3185,0x31c6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x31c6,0x2985,0x2965,0x31c6,0x31c6,0x2985,0x2985,0x2965,0x2965,0x2965,0x31c6,0x2965,0x2965,0x2985,0x2965,0x2965,0x2944,0x31a6,0x31a6,0x31a6,0x2985,0x2965,0x2124,0x31a6,0x2144,0x2144,0x2985,0x2985,0x2965,0x2144,0x2985,0x2144,0x2985,0x2985,0x2985,0x2965,0x2145,0x2965,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2144,0x18e3,0x2104,0x2124,0x18e3,0x2124,0x2124,0x2944,0x2124,0x2144,0x2945,0x2144,0x2124,0x2985,0x2985,0x2144,0x2964,0x2965,0x2144,0x2144,0x2985,0x2965,0x3185,0x2965,0x2965,0x2965,0x2985,0x2144,0x2145,0x2145,0x2144,0x2124,0x2145,0x2144,0x2144,0x2965,0x2124,0x2945,0x2985,0x2965,0x2985,0x2945,0x2144,0x2144,0x2145,0x2965,0x2124,0x2144,0x2965,0x2144,0x2965,0x2124,0x1903,0x2965,0x2144,0x2985,0x31a6,0x2144,0x2985,0x2985,0x2965,0x2965,0x2985,0x2985,0x2985,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2944,0x2965,0x2985,0x31c6,0x2945,0x2945,0x2945,0x2945,0x3186,0x2985,0x2944,0x2985,0x2965,0x2145,0x2965,0x2144,0x2124,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2944,0x2945,0x2965,0x2965,0x2104,0x2124,0x2144,0x2144,0x2965,0x2144,0x31a6,0x2965,0x31a6,0x31a6,0x2944,0x2965,0x2985,0x2985,0x2945,0x2965,0x2965,0x3185,0x31a6,0x3186,0x2945,0x2124,0x2965,0x2144,0x2124,0x2965,0x31a6,0x39e7,0x2965,0x31a6,0x2965,0x2945,0x3185,0x31a6,0x2945,0x2945,0x3186,0x2965,0x2124,0x2965,0x2965,0x2145,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x3186,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945,0x3186,0x2985,0x2985,0x2985,0x2965,0x2985,0x31a6,0x39c7,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x3186,0x2965,0x2945,0x2985,0x2965,0x2985,0x3186,0x3186,0x31a6,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x3186,0x31a6,0x2985,0x2985,0x31a6,0x2985,0x31a6,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a07,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e7,0x39c7,0x31c7,0x3a07,0x4a69,0x39c7,0x528a,0x5aeb,0x4228,0x4228,0x3a08,0x4228, +0x4a89,0x4aa9,0x4aa9,0x52a9,0x52ea,0x52ca,0x52ca,0x52ca,0x4aa9,0x52ea,0x52ca,0x52a9,0x52aa,0x5aea,0x52ca,0x4aa9,0x52ca,0x52aa,0x52ea,0x52ca,0x52ca,0x52ca,0x4aa9,0x52ea,0x5aeb,0x52ca,0x52aa,0x52ea,0x52ca,0x5b0b,0x52ea,0x52ea,0x52ea,0x52ea,0x52ca,0x5aeb,0x52ea,0x52ea,0x52ea,0x52ca,0x5aeb,0x52ca,0x5b0b,0x52ea,0x52ca,0x52ea,0x52ea,0x52aa,0x52aa,0x52ea,0x4aa9,0x52ca,0x52ea,0x5b4c,0x52ea,0x52ca,0x52ea,0x4aa9,0x52ea,0x52ea,0x4aa9,0x52ea,0x52ca,0x4a69,0x4aa9,0x52ca,0x5b0b,0x52ca,0x52ca,0x52eb,0x5b2b,0x5b0b,0x52eb,0x52ca,0x52ca,0x5aeb,0x52ea,0x4aa9,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x52eb,0x52ca,0x52ca,0x5b0b,0x52ca,0x4a89,0x52ea,0x52eb,0x5b0b,0x5b0b,0x52ea,0x52ca,0x5aeb,0x52eb,0x52ca,0x52ca,0x4aa9,0x52ea,0x52eb,0x4aaa,0x52aa,0x5aeb,0x5b0b,0x52aa,0x5b0b,0x52ca,0x4248,0x4a89,0x4a89,0x4aa9,0x52aa,0x4aa9,0x52ca,0x5b0b,0x52ca,0x52ea,0x52ca,0x4a89,0x52a9,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b0b,0x52ca,0x5b0b,0x52ca,0x5aeb,0x5b2c,0x52ca,0x52ea,0x52ca,0x52ea,0x5b0b,0x4aaa,0x5aeb,0x5b0b,0x5b0b,0x4a89,0x4aa9,0x5b0b,0x634c,0x5b2b,0x634c,0x5b2b,0x634c,0x52ca,0x52ca,0x4aaa,0x4aa9,0x5b2c,0x5b0b,0x52eb,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x632c,0x52ca,0x5b0b,0x52ea,0x5b0b,0x632c,0x52ca,0x52ca,0x5b0b,0x52aa,0x5aea,0x5aeb,0x5aeb,0x5b0b,0x5aeb,0x5aea,0x5b0b,0x5b0b,0x5aeb,0x632c,0x5aeb,0x5b0b,0x5aeb,0x5b0b,0x5b2b,0x5aeb,0x5aeb,0x5aeb,0x5aca,0x5aea,0x52ca,0x52ca,0x52ca,0x52ca,0x52ea,0x52ca,0x52ca,0x52aa,0x52aa,0x52ca,0x4a89,0x52a9,0x4aa9,0x52ca,0x5aeb,0x52a9,0x5aeb,0x52ca,0x4a89,0x5aeb,0x52ca,0x52ca,0x52ca,0x52ea,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x5aeb,0x52ea,0x52ea,0x52a9,0x52ca,0x5aca,0x52ca,0x52ca,0x4a69,0x52aa,0x5aeb,0x4a89,0x4a69,0x52aa,0x4a69,0x4a89,0x52ca,0x52aa,0x52aa,0x4a69,0x5aeb,0x4a89,0x4248,0x4a69,0x52aa,0x4a69,0x4aa9,0x3a07,0x4268,0x4268,0x4228,0x4269,0x4a69,0x4a69,0x4a69,0x4a69,0x4228,0x4a69,0x5289,0x4a69,0x52aa,0x4a49,0x4a89,0x4a69,0x4268,0x4aa9,0x4a68,0x4a69,0x4a89,0x4a68,0x52a9,0x4a69,0x4248,0x4248,0x4a89,0x4a49,0x4a48,0x4a69,0x4a69,0x4248,0x4228,0x4248,0x4a69,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4248,0x4a69,0x4248,0x4a49,0x4a49,0x4228,0x4207,0x39e7,0x4207,0x39e7,0x4227,0x4248,0x4207,0x4227,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x4207,0x4207,0x39c6,0x31c6,0x39c7,0x2985,0x2965,0x31a6,0x31a6,0x2985,0x2985, +0x5b0b,0x5b0b,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x52ea,0x632c,0x634c,0x5b0b,0x634c,0x5b2b,0x52ea,0x632c,0x5b2b,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x5b2b,0x634c,0x5b2b,0x5b0b,0x5b4c,0x530b,0x5b2b,0x636c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2c,0x5b0b,0x530b,0x52ea,0x5b4b,0x636c,0x52ea,0x530a,0x52eb,0x5b4c,0x530b,0x5b4c,0x5b2b,0x52ea,0x5b2b,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b0b,0x5b2b,0x52ea,0x52ea,0x636c,0x5b2b,0x5b2b,0x5b2b,0x52ea,0x52ea,0x5b4c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x530a,0x634c,0x5b0b,0x5b2b,0x5b2c,0x530b,0x5b2b,0x530b,0x5b0b,0x5b4c,0x5b4c,0x530b,0x5b0b,0x636c,0x636c,0x530b,0x5b2b,0x530b,0x52ea,0x52ea,0x634c,0x5b4c,0x5b4c,0x634c,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b0b,0x634c,0x5b0b,0x530b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x5b2b,0x634c,0x52ca,0x5b0b,0x52eb,0x52eb,0x5b4c,0x5b0b,0x52ea,0x5b0b,0x5b0b,0x5b2b,0x634c,0x5b2c,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b0b,0x634c,0x5b2c,0x5b0b,0x5b2b,0x5b2b,0x636c,0x530b,0x5b0b,0x634c,0x636c,0x634c,0x634c,0x52ea,0x636c,0x634c,0x638d,0x73ee,0x634c,0x52eb,0x636c,0x636c,0x5b2c,0x632c,0x6b8d,0x5b4c,0x636d,0x638d,0x6bae,0x6bad,0x634c,0x636c,0x636c,0x5b0b,0x632c,0x6b8d,0x634c,0x6b8d,0x6b8d,0x636c,0x634c,0x6b6d,0x5b0b,0x636c,0x6b6d,0x632c,0x634c,0x636d,0x6b6d,0x634c,0x634c,0x634c,0x632c,0x634c,0x6b6d,0x6b8d,0x6b6c,0x634c,0x5b2b,0x6b8d,0x6b8d,0x634c,0x6b6c,0x6b8d,0x6b6c,0x6b6c,0x6b6d,0x632c,0x634c,0x634c,0x5b2c,0x5b2c,0x5b2c,0x632c,0x634c,0x634c,0x6b6d,0x6b6d,0x634c,0x636c,0x636c,0x634c,0x634c,0x6b6d,0x6b8d,0x6b6d,0x634c,0x6b6d,0x636c,0x634c,0x6b6c,0x630b,0x632c,0x6b4c,0x634c,0x634c,0x634c,0x5b0b,0x5b0b,0x5b0b,0x632c,0x634c,0x632c,0x632c,0x634c,0x6b8d,0x632c,0x5b2b,0x634c,0x634c,0x632c,0x6b6d,0x6b6d,0x632c,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630c,0x632c,0x634c,0x632c,0x634c,0x634c,0x634c,0x634c,0x634c,0x5b0b,0x632c,0x630b,0x5b0b,0x5b0b,0x634c,0x634c,0x6b6c,0x634c,0x632c,0x634c,0x6b6c,0x6b6d,0x634c,0x6b4d,0x632c,0x634c,0x6b4c,0x6b4c,0x6b8d,0x632b,0x5aeb,0x5aeb,0x6b6c,0x634c,0x634c,0x6b6d,0x6b4c,0x634c,0x632c,0x632c,0x5b0b,0x634c,0x634c,0x632c,0x634c,0x5aeb,0x5b0b,0x632c,0x632c,0x632c,0x634c,0x632b,0x6b6c,0x5b0b,0x5b0b,0x632b,0x630b,0x5b0b,0x634c,0x632b,0x630b,0x632b,0x632c,0x632c,0x630b,0x5b0b,0x5b0b,0x5b0b,0x5aeb, +0x5b0b,0x5b0b,0x5b0b,0x634c,0x634c,0x52ea,0x52ca,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x52ea,0x5b2b,0x634c,0x632b,0x5b2b,0x634c,0x636c,0x634b,0x5b0b,0x5b4c,0x5b2b,0x5b0b,0x5b2b,0x52ca,0x5aeb,0x5b2b,0x5b0b,0x634c,0x6b8d,0x634c,0x5b0b,0x634c,0x5b2c,0x5b2b,0x634c,0x5b2c,0x5b0b,0x634c,0x636c,0x632b,0x5b0b,0x5b2b,0x634c,0x5b2b,0x5b4c,0x638d,0x634c,0x5b0b,0x5b0b,0x5b0b,0x52ca,0x634c,0x5b2b,0x5b2b,0x5b2b,0x5b2b,0x5b4c,0x5aeb,0x52ea,0x52aa,0x5b0b,0x5aea,0x52aa,0x5b0b,0x5b0b,0x5b2b,0x632c,0x5b0b,0x4aaa,0x52ca,0x5b0b,0x632b,0x5b0b,0x5b2b,0x5b2b,0x52ca,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x52ea,0x52ea,0x52ca,0x52ca,0x5b2b,0x52ea,0x5b0b,0x5b2b,0x5b2b,0x4aa9,0x52eb,0x5b0b,0x52eb,0x530b,0x5b2b,0x5b2c,0x5b2c,0x634c,0x5b0b,0x5b0b,0x5b0b,0x530b,0x5b2b,0x52eb,0x52eb,0x52ca,0x5b0b,0x5b4c,0x5b0b,0x530b,0x530b,0x5b0b,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b2b,0x530b,0x632c,0x5b0b,0x5aeb,0x634c,0x5b0b,0x5b0b,0x52ca,0x5b0b,0x5b4c,0x52ca,0x5b0b,0x52ca,0x52ca,0x632c,0x5b0b,0x5b0b,0x5b2c,0x5b0b,0x5b0b,0x5b2c,0x634c,0x634c,0x6b6d,0x5b0b,0x6b8d,0x636c,0x5b2c,0x5b0b,0x634c,0x636c,0x634c,0x5b0b,0x6b8d,0x634c,0x632c,0x634c,0x634c,0x636c,0x5b2b,0x6b6d,0x6b6c,0x6b6d,0x6b6c,0x5b0b,0x634c,0x634c,0x6b8d,0x632c,0x634c,0x6b8d,0x636c,0x6b6d,0x636d,0x632c,0x632c,0x6b8d,0x636c,0x632c,0x636c,0x634c,0x632c,0x5b0b,0x6b6c,0x632c,0x632c,0x636c,0x6b6d,0x636c,0x634c,0x6b6c,0x6b6d,0x6b8d,0x6b8d,0x6b6c,0x6b8d,0x73ce,0x6b8d,0x632c,0x630b,0x630b,0x6b6c,0x6b6d,0x632c,0x6bae,0x5aeb,0x634c,0x6b6d,0x632b,0x632c,0x6b6d,0x6b8d,0x7bef,0x634c,0x636c,0x6bad,0x6b8d,0x636c,0x634c,0x630b,0x6b6d,0x634c,0x632c,0x6b8d,0x6b8d,0x5b0b,0x632c,0x6b6d,0x6b6d,0x632c,0x5b0b,0x5b0b,0x5b0b,0x630b,0x6b8d,0x630b,0x630b,0x6b8d,0x6b8d,0x634c,0x632c,0x632c,0x5b0b,0x634c,0x6b6d,0x6b8d,0x5b0b,0x630b,0x630c,0x632c,0x632b,0x632c,0x632c,0x5b0b,0x52ca,0x5aeb,0x630b,0x632c,0x634c,0x5b0b,0x632c,0x632c,0x630b,0x5aea,0x634c,0x6b6c,0x632c,0x632b,0x632c,0x632c,0x5aeb,0x632b,0x5b0b,0x634c,0x632c,0x6b4c,0x632c,0x632b,0x5aeb,0x634c,0x630b,0x5aca,0x5aeb,0x632c,0x6b4c,0x634c,0x6b6d,0x5aca,0x5aeb,0x5b0b,0x5aeb,0x630b,0x5b0b,0x632c,0x632c,0x5b0b,0x634c,0x632c,0x632c,0x5b0b,0x632c,0x630b,0x630b,0x632c,0x632c,0x630b,0x630b,0x632b,0x6b6c,0x6b6c,0x632c,0x5aeb,0x632b,0x6b8d,0x632c,0x632c,0x634c,0x632c,0x630b,0x632c, +0x52ca,0x5b0b,0x5b2b,0x5b0b,0x634c,0x5b2b,0x5b0b,0x5b0b,0x634c,0x5b0b,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x5aeb,0x5b2b,0x632b,0x530b,0x634c,0x636c,0x5b2b,0x5b2b,0x634c,0x5b0b,0x52ca,0x52ca,0x530b,0x5b0b,0x634c,0x5b2b,0x530b,0x634c,0x5b2b,0x5b4c,0x636c,0x636c,0x634c,0x636d,0x634c,0x5b4c,0x634c,0x5b4c,0x5b2b,0x634c,0x634c,0x5b2b,0x5b0b,0x5b0b,0x5b0b,0x52ea,0x5b2b,0x5b0b,0x52ca,0x52ea,0x52ea,0x5aeb,0x5b2b,0x636d,0x5b0b,0x5b0b,0x5b2b,0x52ca,0x52ca,0x4aaa,0x52ca,0x52eb,0x5b0b,0x530b,0x5b2b,0x5b0b,0x5b2b,0x5b4c,0x5b2b,0x5b0b,0x6bad,0x6bce,0x4aa9,0x52ea,0x4aa9,0x636c,0x5b2b,0x52ea,0x5b2c,0x5b0b,0x5b0b,0x5b0c,0x634c,0x5b2b,0x52ea,0x5b2b,0x634c,0x5b2c,0x5b0b,0x5b2c,0x5b2c,0x5b0b,0x530b,0x5b2b,0x5b4c,0x5b0b,0x5b2b,0x530b,0x5b2b,0x5b2b,0x5b0b,0x634c,0x52ca,0x52aa,0x5b0b,0x5b2b,0x5b4c,0x530a,0x52ea,0x5b4c,0x634c,0x5b2b,0x5b2b,0x634c,0x5b0b,0x632b,0x5b0b,0x634c,0x634c,0x634c,0x634c,0x634c,0x52eb,0x5b0b,0x5b2c,0x530b,0x634c,0x636c,0x5b0b,0x634c,0x5b0b,0x5b0b,0x5b2b,0x636c,0x634c,0x5b0b,0x5b0b,0x634c,0x5b2b,0x634c,0x634c,0x634c,0x6b8d,0x5b2c,0x5b4c,0x634c,0x634c,0x6b8d,0x636c,0x5b2b,0x636c,0x634c,0x6b8d,0x6b8d,0x6b8d,0x6b8d,0x73ad,0x632b,0x634c,0x6b8d,0x73ce,0x6b8d,0x6bad,0x6b8d,0x632c,0x632c,0x6b8d,0x634c,0x6b8d,0x6b8d,0x634c,0x6b6d,0x6b6d,0x6b8d,0x6b8d,0x636c,0x636c,0x6b8d,0x6b8d,0x6b8d,0x73ae,0x73ee,0x73ce,0x6b6d,0x6b8d,0x6b6d,0x634c,0x6b8d,0x6b8d,0x73ad,0x6b8d,0x73ce,0x73ad,0x6b8d,0x632c,0x632c,0x6b4c,0x6b8d,0x6b8d,0x6b6d,0x6b6d,0x6bad,0x634c,0x634c,0x6b8d,0x634c,0x73ae,0x6b8d,0x6b8d,0x6b6d,0x73ad,0x7bef,0x73ad,0x634c,0x6b6c,0x6b6d,0x6b6c,0x6b8d,0x6b8d,0x6bad,0x73ce,0x6b8d,0x6b8d,0x6b6d,0x6b8d,0x632b,0x632c,0x634c,0x6b6d,0x634c,0x634c,0x634c,0x73ae,0x6b8d,0x5b0b,0x6b6d,0x5b0b,0x632c,0x6b6d,0x632c,0x632c,0x5b0b,0x634c,0x634c,0x632c,0x632c,0x632c,0x632c,0x630b,0x630b,0x634c,0x6b4c,0x632c,0x632c,0x6b4c,0x632c,0x630c,0x630c,0x630b,0x634c,0x632c,0x632c,0x6b4c,0x6b4c,0x632c,0x632c,0x5b0b,0x634c,0x632c,0x632c,0x630b,0x5b0b,0x6b6c,0x5b0b,0x5b0b,0x6b6d,0x6b6d,0x630b,0x6b6d,0x632c,0x632c,0x630b,0x5b0b,0x5b0b,0x5aca,0x630b,0x5b0b,0x632c,0x6b4c,0x5aeb,0x632c,0x6b8d,0x630c,0x634c,0x6b4c,0x632c,0x632c,0x632b,0x6b4c,0x6b6c,0x630b,0x630c,0x632b,0x632c,0x632b,0x6b6c,0x634c,0x632c,0x634c,0x630b,0x6b6d,0x634c,0x634c,0x632c,0x632b,0x632b, +0x52eb,0x5b2c,0x52eb,0x52aa,0x5b2c,0x634c,0x634c,0x634c,0x5b2b,0x52aa,0x5b0b,0x5b0b,0x636c,0x634c,0x6bad,0x6b8d,0x5b0b,0x634c,0x5aea,0x5aeb,0x632c,0x5b0b,0x5b0b,0x52ea,0x4aa9,0x52ea,0x636c,0x634c,0x5b0b,0x5b2b,0x636c,0x6b8d,0x73ee,0x636c,0x638d,0x5b4c,0x5b4c,0x5b2b,0x530b,0x636c,0x634c,0x5b4c,0x636c,0x636c,0x634c,0x634c,0x52ea,0x4aaa,0x52ca,0x5b2b,0x636c,0x5b0b,0x5b2b,0x530b,0x5b4c,0x5b4c,0x634c,0x52aa,0x52ca,0x5b0b,0x52ea,0x5b2b,0x52ea,0x4aca,0x4aca,0x5b2b,0x636c,0x5b0b,0x530b,0x52ea,0x4aaa,0x530b,0x530b,0x5b2c,0x5b2b,0x5b2b,0x636d,0x5b4c,0x5b0b,0x5b2c,0x634c,0x5b2c,0x52eb,0x52ca,0x634c,0x636d,0x634c,0x5aeb,0x5aeb,0x5b2c,0x52ca,0x52ca,0x5b0b,0x5b0b,0x632c,0x52eb,0x5b0b,0x5b0b,0x5b2c,0x52ca,0x636c,0x4aca,0x52ea,0x5b2c,0x5aeb,0x4a89,0x5aeb,0x5aeb,0x5b0b,0x5b0b,0x5b2b,0x5b0b,0x632c,0x5b2c,0x5b0b,0x5b2c,0x634c,0x5b4c,0x5b2b,0x5b4c,0x636c,0x5b2c,0x5b2c,0x634c,0x52eb,0x52eb,0x52aa,0x634c,0x632c,0x530b,0x5b4c,0x634c,0x5b2c,0x5b2c,0x5b0c,0x634c,0x5b0c,0x5b2c,0x634c,0x6b8d,0x5b0b,0x634c,0x636d,0x6b8d,0x634c,0x52eb,0x52eb,0x4aaa,0x5b4c,0x636d,0x5aeb,0x5b2c,0x5b0b,0x636d,0x5b2c,0x5b4c,0x5b2c,0x634c,0x6b6d,0x636d,0x6b8d,0x73ee,0x5b2c,0x636c,0x636c,0x52eb,0x5b2c,0x6b8d,0x73ae,0x52ca,0x5b0b,0x632c,0x6b6d,0x6bad,0x73ce,0x638d,0x6bae,0x73ce,0x6b8d,0x6b8d,0x636d,0x6b8d,0x6b8d,0x6b8d,0x6b6d,0x73ce,0x634c,0x6b8d,0x6bae,0x634c,0x634c,0x636d,0x6b6d,0x73ae,0x73ae,0x6bad,0x6b8d,0x634c,0x6b6d,0x73ae,0x6b6d,0x6b6d,0x636d,0x6b8d,0x6b6d,0x73ce,0x6b8d,0x636d,0x636d,0x636c,0x636c,0x5b2c,0x6b6d,0x634c,0x634c,0x6b8d,0x6b8d,0x634c,0x634c,0x634c,0x6b6c,0x6b8d,0x6b6d,0x73ce,0x73ad,0x73ae,0x73ae,0x6b6d,0x6b6d,0x632b,0x634c,0x5b0b,0x634c,0x6b6d,0x634c,0x636d,0x634c,0x634c,0x6b6d,0x634c,0x632c,0x632c,0x5b0b,0x5b0b,0x634d,0x634c,0x6b8d,0x5b0b,0x5b2b,0x634c,0x5b0b,0x5b0b,0x6b4c,0x5b0b,0x632c,0x738e,0x6b6d,0x6b6d,0x6b6d,0x632c,0x632c,0x634c,0x6b8d,0x738d,0x634c,0x632c,0x632c,0x634c,0x5b2b,0x6b6c,0x630b,0x6b8d,0x6b6d,0x632c,0x6b6d,0x632b,0x6b4c,0x630b,0x5b0b,0x5b0b,0x632c,0x5b0b,0x5b0b,0x5aeb,0x630b,0x5aeb,0x5b0b,0x630b,0x5b0b,0x5b0b,0x632c,0x630b,0x632b,0x5b0b,0x5b0c,0x5b0b,0x5acb,0x5aeb,0x5aeb,0x5b0b,0x632c,0x6b4c,0x6b4c,0x5b0b,0x5b0b,0x5aeb,0x634c,0x632c,0x630b,0x634c,0x630b,0x6b4c,0x634c,0x632c,0x738d,0x630b,0x632c,0x632c,0x6b6d,0x632b, +0x6b8d,0x6b8d,0x5b4c,0x638d,0x5b2c,0x6bce,0x6bce,0x6bad,0x6b8d,0x638d,0x638d,0x530b,0x73ce,0x6bce,0x740f,0x73ce,0x52eb,0x5b2b,0x6bad,0x6b8d,0x636c,0x73ee,0x634c,0x636d,0x638d,0x638d,0x636d,0x5b2c,0x6bad,0x638d,0x5b4c,0x638d,0x636c,0x638d,0x636c,0x5b0b,0x5b4c,0x5b2c,0x5b0b,0x5b0b,0x638d,0x636c,0x530b,0x5b2b,0x634c,0x4aaa,0x52eb,0x52ea,0x4269,0x4aca,0x530b,0x4aaa,0x4a89,0x52eb,0x52eb,0x4248,0x52eb,0x4aaa,0x4a89,0x4a89,0x52ea,0x4aaa,0x4248,0x4269,0x4a8a,0x4aaa,0x4a89,0x4a89,0x4269,0x4aa9,0x4a89,0x4a69,0x4248,0x39e7,0x4228,0x52ea,0x52eb,0x4248,0x4a89,0x3a07,0x4228,0x4228,0x31c6,0x4228,0x4248,0x4248,0x4228,0x3a28,0x3a07,0x39e7,0x4248,0x4a69,0x3a28,0x4228,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31c7,0x4269,0x3a28,0x31a6,0x3a08,0x39e7,0x31a6,0x3a08,0x3a07,0x39e7,0x39e7,0x39e7,0x4a69,0x4228,0x39e7,0x52aa,0x4228,0x4a69,0x4228,0x31c7,0x4269,0x4269,0x3a07,0x4208,0x4248,0x39e7,0x31e7,0x3a08,0x4248,0x4228,0x3a08,0x3a08,0x4228,0x4248,0x3a07,0x3a28,0x4248,0x4a69,0x3a08,0x4249,0x4249,0x3a08,0x4a69,0x4249,0x4aaa,0x3a07,0x3a07,0x4228,0x39e7,0x31c7,0x4228,0x4228,0x4249,0x4228,0x4a69,0x4248,0x4228,0x4249,0x4208,0x4248,0x3a07,0x4228,0x4a89,0x4a69,0x52aa,0x4228,0x4228,0x4228,0x4a69,0x4aaa,0x4228,0x4228,0x4a8a,0x52cb,0x4a49,0x4a89,0x4a89,0x52aa,0x52aa,0x52aa,0x4a89,0x528a,0x4a69,0x52aa,0x5b0b,0x4a69,0x5acb,0x52aa,0x632c,0x52cb,0x4a69,0x4a8a,0x528a,0x528a,0x52aa,0x52aa,0x6b6d,0x52aa,0x52eb,0x5acb,0x52aa,0x634c,0x5b0b,0x4a8a,0x5b0c,0x632c,0x52eb,0x52cb,0x5b0b,0x5aeb,0x634c,0x5aeb,0x52cb,0x634c,0x52ca,0x5b0b,0x632c,0x52eb,0x636d,0x632c,0x632c,0x634c,0x738d,0x634c,0x6b6d,0x6b6d,0x636c,0x73ce,0x73ae,0x73ae,0x6b8d,0x6b8d,0x632c,0x634c,0x6bae,0x5b2c,0x634c,0x73ef,0x73ae,0x73ae,0x6b8d,0x7bef,0x634c,0x8450,0x73ef,0x73ae,0x8430,0x6b8d,0x632c,0x73ce,0x634c,0x6b6d,0x8430,0x73ae,0x73ce,0x7bef,0x6b8d,0x7bef,0x7bef,0x7bef,0x73ce,0x6b6d,0x73ae,0x8c70,0x7bef,0x8c71,0x8470,0x7c2f,0x6b8d,0x7c0f,0x73ce,0x8410,0x7bee,0x7c0f,0x8450,0x6b8d,0x7c2f,0x7c0f,0x7c0f,0x7c0f,0x7bee,0x7bee,0x73ce,0x840d,0x94ae,0x842f,0x8450,0x7c0f,0x73ce,0x738d,0x73ce,0x634c,0x7bce,0x840f,0x840f,0x634c,0x634c,0x6b8d,0x738d,0x73ae,0x73ae,0x73ad,0x6b6d,0x6b6d,0x6b8d,0x73ad,0x6b6c,0x6b6d,0x6b8d,0x634c,0x6b4c,0x632c,0x634c,0x6b6d,0x73ce,0x7bce,0x73ae,0x73ae,0x6b6d,0x6b4c,0x6b4d, +0x7c50,0x634c,0x6bae,0x6bce,0x5b0b,0x4acb,0x636d,0x5b0c,0x634c,0x5b4c,0x5b4c,0x52eb,0x634c,0x6b8e,0x5b0b,0x4a89,0x4248,0x5b0b,0x6bce,0x5b2c,0x5b0c,0x5b0b,0x52ca,0x5b4c,0x5b0b,0x52eb,0x52ca,0x4269,0x5b0b,0x52ca,0x4248,0x4a89,0x4a89,0x4aaa,0x4aaa,0x4269,0x4aaa,0x4a8a,0x4249,0x4a8a,0x4a8a,0x3a08,0x39e7,0x52ca,0x52aa,0x4a8a,0x4a89,0x4208,0x31a6,0x31e7,0x4269,0x4248,0x29a6,0x4269,0x4249,0x31c6,0x4228,0x3a28,0x3a27,0x3a28,0x4228,0x4228,0x39e7,0x4249,0x3a07,0x31e7,0x31c6,0x4269,0x29a6,0x39e7,0x3a08,0x31a6,0x31a6,0x31a6,0x4208,0x31a6,0x2965,0x2986,0x31a6,0x31c6,0x39e7,0x31c7,0x31a6,0x2986,0x2965,0x2124,0x2986,0x2144,0x2986,0x2965,0x39c7,0x31a6,0x2986,0x2965,0x2124,0x31c7,0x2986,0x2965,0x2986,0x2165,0x31c7,0x2986,0x2124,0x29a6,0x2965,0x31a6,0x31a6,0x2124,0x2965,0x2965,0x2145,0x31a6,0x2985,0x31c6,0x31a6,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x31c7,0x39e7,0x3186,0x31c7,0x2986,0x3186,0x2965,0x2965,0x3186,0x2966,0x2965,0x2965,0x39e7,0x31a6,0x2965,0x2124,0x31a6,0x3186,0x31a6,0x31a6,0x2124,0x2145,0x2965,0x2145,0x2124,0x2965,0x2965,0x2945,0x2124,0x39c7,0x39c7,0x39e7,0x2986,0x31a6,0x3186,0x3186,0x2985,0x31c7,0x2945,0x2124,0x2985,0x31a6,0x39e8,0x2965,0x31c7,0x31a6,0x39e7,0x31a6,0x39c7,0x39e7,0x3a07,0x3a08,0x39e7,0x2965,0x3186,0x31c6,0x31a6,0x3a07,0x31c7,0x39e7,0x31c6,0x4248,0x4228,0x31a6,0x3a08,0x3a08,0x31c6,0x4248,0x3a08,0x31c7,0x39e7,0x4208,0x39c7,0x4248,0x52aa,0x4a89,0x4a69,0x4248,0x52aa,0x5aeb,0x4a89,0x4228,0x31a7,0x52cb,0x4a8a,0x4228,0x4a69,0x4a49,0x5aeb,0x52aa,0x4a89,0x52aa,0x5289,0x5aeb,0x52aa,0x52ca,0x52ea,0x632c,0x52ca,0x3a28,0x5b0b,0x52cb,0x632c,0x5aeb,0x632c,0x634c,0x632c,0x5b2c,0x5b0b,0x73ae,0x632c,0x5aeb,0x73ce,0x6b8d,0x73ce,0x6b8e,0x6b6d,0x6b6d,0x8450,0x73ae,0x636d,0x6b8d,0x73ae,0x6b6d,0x634d,0x6b6d,0x73cf,0x8c71,0x7bef,0x6b8d,0x7c0f,0x7c0f,0x6b6d,0x8430,0x7bce,0x7c0f,0x7bef,0x7bef,0x8430,0x7bef,0x7c0f,0x840f,0x7bef,0x7bef,0x7c10,0x8450,0x8c71,0x7bef,0x73ce,0x840f,0x8410,0x8430,0x8430,0x8430,0x8450,0x8c71,0x8c71,0x840f,0x8430,0x8430,0x7bef,0xa510,0xa4ee,0x8c71,0x9cd3,0x8450,0x8410,0x8450,0x8430,0x7c0f,0x8c50,0x8430,0x8450,0x840f,0x840f,0x8450,0x8430,0x8c71,0x8c71,0x8c50,0x8430,0x7c0f,0x7bef,0x8430,0x73ae,0x73ce,0x7bef,0x7bef,0x73ce,0x73ad,0x73ce,0x8c70,0x94b1,0x8c70,0x9cd2,0x94d2,0x8430,0x7bef,0x7bef, +0x2965,0x18e3,0x18e4,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x10a3,0x18c3,0x2104,0x18a3,0x0000,0x18a2,0x18a2,0x18c3,0x18e3,0x0000,0x1061,0x20e3,0x0000,0x1062,0x0820,0x0000,0x1082,0x0861,0x1082,0x0000,0x0800,0x18a2,0x18a3,0x1082,0x1082,0x0800,0x1061,0x0820,0x0841,0x0841,0x0841,0x0000,0x10a2,0x18c2,0x0820,0x0000,0x0841,0x0000,0x0000,0x1061,0x1061,0x1041,0x0841,0x1082,0x0841,0x0841,0x1061,0x0000,0x0000,0x1081,0x0841,0x0000,0x0820,0x1082,0x0841,0x1062,0x0841,0x1082,0x0000,0x0841,0x0841,0x0020,0x0882,0x0861,0x1082,0x0020,0x0840,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x0841,0x0861,0x0020,0x0821,0x1061,0x0861,0x1082,0x10a2,0x1082,0x0861,0x0861,0x1061,0x0821,0x0841,0x1082,0x1061,0x1082,0x10a2,0x0861,0x1082,0x0861,0x0861,0x1082,0x0841,0x1081,0x0841,0x0020,0x0861,0x0861,0x0861,0x1082,0x0882,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x0881,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0020,0x0841,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1062,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x0861,0x10a2,0x18c3,0x1082,0x18c3,0x1082,0x0861,0x0020,0x10a2,0x10a2,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1081,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0020,0x10a2,0x1082,0x0862,0x18c3,0x1082,0x10a3,0x10a2,0x18c3,0x1903,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x10a3,0x18e3,0x2104,0x10c2,0x18e3,0x10a2,0x10a2,0x10a2,0x2124,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2145,0x2104,0x18e3,0x2124,0x2145,0x2104,0x10a3,0x10a3,0x2104,0x2945,0x2945,0x2945,0x10a3,0x2965,0x2965,0x1904,0x2124,0x31a6,0x39c7,0x2965,0x2965,0x2945,0x3186,0x2945,0x3186,0x3186,0x39c7,0x31a6,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39e7,0x4a49,0x3a08,0x31a7,0x4208,0x4208,0x3186,0x39e7,0x4a49,0x4228,0x4a6a,0x5acb,0x528a,0x4228,0x526a,0x4a69,0x4a29,0x2947,0x4a69,0x4a8a,0x39e7,0x52aa,0x632c,0x528a,0x5acb,0x6b6d,0x52aa,0x630c,0x632c,0x5aeb,0x5b0b,0x630c,0x632c,0x632c,0x632c,0x6b6d,0x632c,0x5aeb,0x52cb,0x5aeb,0x632c,0x632c,0x6b4d,0x5aeb,0x632c,0x738e,0x6b6d,0x73ae,0x7bef,0x73af,0x73ae,0x8410,0x6b8e,0x5b0c}; diff --git a/MCUME_teensy/teensyvcs/macro.h b/MCUME_teensy/teensyvcs/macro.h new file mode 100644 index 0000000..e298409 --- /dev/null +++ b/MCUME_teensy/teensyvcs/macro.h @@ -0,0 +1,99 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: macro.h,v 1.7 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + +/* + * + * Originally from x64 by + * Vesa-Matti Puro (vmp@lut.fi) + * Jarkko Sonninen (sonninen@lut.fi) + * + * NOTE: Can add zero page optimizations + */ + +#ifndef X2600_MACRO_H +#define X2600_MACRO_H + + +#include "types.h" +#include "cpu.h" + +#define LOAD(a) decRead(a) +#define LOADEXEC(a) undecRead(a) +//#define DLOAD(a) dbgRead(a) +#define LOAD_ZERO(a) decRead((ADDRESS)a) +#define LOAD_ADDR(a) ((LOADEXEC(a+1)<<8)+LOADEXEC(a)) //WAS LOAD +#define LOAD_ZERO_ADDR(a) LOAD_ADDR(a) + +#define STORE(a,b) decWrite((a),(b)) +#define STORE_ZERO(a,b) decWrite((a),(b)) + +#define PUSH(b) decWrite(SP+0x100,(b));SP-- +#define PULL() decRead((++SP)+0x100) + +#define UPPER(ad) (((ad)>>8)&0xff) +#define LOWER(ad) ((ad)&0xff) +#define LOHI(lo,hi) ((lo)|((hi)<<8)) + +#define REL_ADDR(pc,src) (pc+((SIGNED_CHAR)src)) + +#define SET_SIGN(a) (SF=(a)&S_SIGN) +#define SET_ZERO(a) (ZF=!(a)) +#define SET_CARRY(a) (CF=(a)) + +#define SET_INTERRUPT(a) (IF=(a)) +#define SET_DECIMAL(a) (DF=(a)) +#define SET_OVERFLOW(a) (OF=(a)) +#define SET_BREAK(a) (BF=(a)) + +#define SET_SR(a) (SF=(a) & S_SIGN,\ + ZF=(a) & S_ZERO,\ + CF=(a) & S_CARRY,\ + IF=(a) & S_INTERRUPT,\ + DF=(a) & S_DECIMAL,\ + OF=(a) & S_OVERFLOW,\ + BF=(a) & S_BREAK) + +#define GET_SR() ((SF ? S_SIGN : 0) |\ + (ZF ? S_ZERO : 0) |\ + (CF ? S_CARRY : 0) |\ + (IF ? S_INTERRUPT : 0) |\ + (DF ? S_DECIMAL : 0) |\ + (OF ? S_OVERFLOW : 0) |\ + (BF ? S_BREAK : 0) | S_NOTUSED) + +#define IF_SIGN() SF +#define IF_ZERO() ZF +#define IF_CARRY() CF +#define IF_INTERRUPT() IF +#define IF_DECIMAL() DF +#define IF_OVERFLOW() OF +#define IF_BREAK() BF + + +#define sprint_status() sprint_binary(GET_SR()) + + +#endif /* X2600_MACRO_H */ + + + + + + + + + + + diff --git a/MCUME_teensy/teensyvcs/mnemonic.h b/MCUME_teensy/teensyvcs/mnemonic.h new file mode 100644 index 0000000..59b417d --- /dev/null +++ b/MCUME_teensy/teensyvcs/mnemonic.h @@ -0,0 +1,149 @@ +/* + * $Id: mnemonic.h,v 1.1 1995/11/26 21:52:43 alex Exp alex $ + * + * This file is part of Commodore 64 emulator. + * See README for copyright notice + * + * This file contains #defines for MOS6010 instruction mnemonics. + * + * Written by + * Vesa-Matti Puro (vmp@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + * $Log: mnemonic.h,v $ + * Revision 1.1 1995/11/26 21:52:43 alex + * Initial revision + * + * Revision 1.6 1994/12/12 16:59:44 jopi + * *** empty log message *** + * + * Revision 1.5 1994/06/16 17:19:26 jopi + * Code reorganized and cleaned up + * + * Revision 1.4 1993/11/10 01:55:34 jopi + * reu, asm and disk directory fixed + * REL_ADDR macro and 1541 made more portable + * + * Revision 1.3 93/06/21 13:38:45 jopi + * X64 version 0.2 PL 0 + * + * Revision 1.2 1993/06/13 08:21:50 sonninen + * *** empty log message *** + * + * + */ + +#ifndef X64_MNEMONIC_H +#define X64_MNEMONIC_H + + +/* INSTRUCTION MNEMONICS. */ + +#define ADC "ADC" +#define AND "AND" +#define ASL "ASL" +#define BCC "BCC" +#define BCS "BCS" +#define BEQ "BEQ" +#define BIT "BIT" +#define BMI "BMI" +#define BNE "BNE" +#define BPL "BPL" +#define BRK "BRK" +#define BVC "BVC" +#define BVS "BVS" +#define CLC "CLC" +#define CLD "CLD" +#define CLI "CLI" +#define CLV "CLV" +#define CMP "CMP" +#define CPX "CPX" +#define CPY "CPY" +#define DEC "DEC" +#define DEX "DEX" +#define DEY "DEY" +#define EOR "EOR" +#define INC "INC" +#define INX "INX" +#define INY "INY" +#define JMP "JMP" +#define JSR "JSR" +#define LDA "LDA" +#define LDX "LDX" +#define LDY "LDY" +#define LSR "LSR" +#define NOOP "NOOP" +#define NOP "NOP" +#define ORA "ORA" +#define PHA "PHA" +#define PHP "PHP" +#define PLA "PLA" +#define PLP "PLP" +#define ROL "ROL" +#define ROR "ROR" +#define RTI "RTI" +#define RTS "RTS" +#define SBC "SBC" +#define SEC "SEC" +#define SED "SED" +#define SEI "SEI" +#define STA "STA" +#define STX "STX" +#define STY "STY" +#define TAX "TAX" +#define TAY "TAY" +#define TSX "TSX" +#define TXA "TXA" +#define TXS "TXS" +#define TYA "TYA" + +#ifndef NO_UNDOC_CMDS +#define ANC "ANC" +#define ANE "ANE" +#define ARR "ARR" +#define ASR "ASR" +#define DCP "DCP" +#define ISB "ISB" +#define JAM "JAM" +#define LAS "LAS" +#define LAX "LAX" +#define LXA "LXA" + /* NOOP undefined NOP */ +#define RLA "RLA" +#define RRA "RRA" +#define SAX "SAX" +#define USBC "USBC" /* undefined SBC */ +#define SBX "SBX" +#define SHA "SHA" +#define SHS "SHS" +#define SHX "SHX" +#define SHY "SHY" +#define SLO "SLO" +#define SRE "SRE" + +#else +#define ANC NOOP +#define ANE NOOP +#define ARR NOOP +#define ASR NOOP +#define DCP NOOP +#define ISB NOOP +#define JAM NOOP +#define LAS NOOP +#define LAX NOOP +#define LXA NOOP + /* NOOP undefined NOP */ +#define RLA NOOP +#define RRA NOOP +#define SAX NOOP +#define USBC NOOP +#define SBX NOOP +#define SHA NOOP +#define SHS NOOP +#define SHX NOOP +#define SHY NOOP +#define SLO NOOP +#define SRE NOOP +#endif + +#endif /* X64_MNEMONIC_H */ diff --git a/MCUME_teensy/teensyvcs/options.h b/MCUME_teensy/teensyvcs/options.h new file mode 100644 index 0000000..2614f66 --- /dev/null +++ b/MCUME_teensy/teensyvcs/options.h @@ -0,0 +1,26 @@ +//#ifndef OPTIONS_H +#define OPTIONS_H + +enum {NTSC=0, PAL=1, SECAM=2}; + +/* Options common to all ports of x2600 */ +extern struct BaseOptions { + int tvtype; + int lcon; + int rcon; + int bank; + int magstep; + char filename[80]; + int sound; + int swap; + int realjoy; + int limit; + int mousey; + int mitshm; + int dbg_level; +} base_opts; + +int +parse_options(int argc, char **argv); + +//#endif diff --git a/MCUME_teensy/teensyvcs/raster.h b/MCUME_teensy/teensyvcs/raster.h new file mode 100644 index 0000000..0436523 --- /dev/null +++ b/MCUME_teensy/teensyvcs/raster.h @@ -0,0 +1,44 @@ +/***************************************************************************** + + This file is part of Virtual 2600, the Atari 2600 Emulator + ========================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: raster.h,v 1.5 1997/04/06 02:15:13 ahornby Exp $ +******************************************************************************/ + +/* + The raster prototypes. + */ + +#ifndef RASTER_H +#define RASTER_H +/* Color lookup tables. Used to speed up rendering */ +/* The current colour lookup table */ +extern int *colour_lookup; + +/* Colour table */ +#define P0M0_COLOUR 0 +#define P1M1_COLOUR 1 +#define PFBL_COLOUR 2 +#define BK_COLOUR 3 +extern unsigned int colour_table[4]; + +/* normal/alternate, not scores/scores*/ +extern int norm_val, scores_val; +extern int *colour_ptrs[2][3]; + +void tv_raster(int line); + +extern void +init_raster(void); +#endif + + + diff --git a/MCUME_teensy/teensyvcs/resource.h b/MCUME_teensy/teensyvcs/resource.h new file mode 100644 index 0000000..320059c --- /dev/null +++ b/MCUME_teensy/teensyvcs/resource.h @@ -0,0 +1,60 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Atari2600Emulator.rc +// +#define IDS_APP_TITLE 1 +#define IDS_HELLO 2 +#define IDC_ATARI2600EMULATOR 3 +#define IDI_ATARI2600EMULATOR 101 +#define IDM_MENU 102 +#define IDS_HELP 104 +#define IDD_OPTIONS 104 +#define IDD_Error 105 +#define IDB_CONSOLE 109 +#define IDB_LOGO 110 +#define IDB_CONTROLLER 111 +#define IDD_CONSOLE 111 +#define IDD_DIALOG1 113 +#define IDD_DIALOG2 114 +#define IDD_VCSINFO 115 +#define IDS_COMMAND1 301 +#define IDC_BUTTON1 1001 +#define IDC_CHECK_SOUND 1003 +#define IDC_RADIO_COLOR 1005 +#define IDC_RADIO_P1AM 1006 +#define IDC_RADIO_BW 1007 +#define IDC_RADIO_P1PRO 1008 +#define IDC_RADIO_P2PRO 1009 +#define IDC_EDIT_SKIP_FRAMES 1010 +#define IDC_RADIO_P2AM 1010 +#define IDC_EDIT_SLEEP 1011 +#define IDC_CHECK_LAND 1012 +#define IDC_SNDSPEED_SLIDER 1013 +#define IDC_SND_BUFFER 1014 +#define IDC_VOL_SLIDER 1016 +#define IDC_SND_RATE 1025 +#define IDM_MAIN_COMMAND1 40001 +#define IDM_SETTINGS_CONSOLE 40002 +#define IDM_HELP_ABOUTVCS 40003 +#define ID_FILE 40004 +#define ID_SETTINGS 40005 +#define IDS_CAP_FILE 40006 +#define IDM_FILE_OPEN 40007 +#define IDM_SETTINGS_OPTIONS 40008 +#define IDM_FILE_EXIT 40009 +#define IDS_CAP_SETTINGS 40011 + +#define STICK 0x01 +#define PADDLE 0x02 +#define KEYPAD 0x03 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 117 +#define _APS_NEXT_COMMAND_VALUE 40014 +#define _APS_NEXT_CONTROL_VALUE 1026 +#define _APS_NEXT_SYMED_VALUE 103 +#endif +#endif diff --git a/MCUME_teensy/teensyvcs/sound.h b/MCUME_teensy/teensyvcs/sound.h new file mode 100644 index 0000000..a07fc44 --- /dev/null +++ b/MCUME_teensy/teensyvcs/sound.h @@ -0,0 +1,26 @@ +#ifndef X2600_SOUND_H +#define X2600_SOUND_H + +/* $Id: sound.h,v 1.4 1996/09/04 22:37:48 ahornby Exp $ */ + +extern void +sound_init(void); + +extern void +sound_close(void); + +extern void +sound_freq(int channel, BYTE freq); + +extern void +sound_volume(int channel, BYTE vol); + +//extern void +// Update_tia_sound(0x15 + channel, value); + +//sound_waveform(int channel, BYTE value); + +extern void +sound_update(void); + +#endif diff --git a/MCUME_teensy/teensyvcs/teensyvcs.ino b/MCUME_teensy/teensyvcs/teensyvcs.ino new file mode 100644 index 0000000..c58a208 --- /dev/null +++ b/MCUME_teensy/teensyvcs/teensyvcs.ino @@ -0,0 +1,275 @@ +extern "C" { + #include "iopins.h" + #include "emuapi.h" +} +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +extern "C" { +#include "Vcsemu.h" +} + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif + + diff --git a/MCUME_teensy/teensyvcs/tft_t_dma.cpp b/MCUME_teensy/teensyvcs/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensyvcs/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 200 + +#ifdef ILI9341 +#define TFT_WIDTH 320 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensyvcs/tft_t_dma_config.h b/MCUME_teensy/teensyvcs/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensyvcs/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensyvcs/tiasound.h b/MCUME_teensy/teensyvcs/tiasound.h new file mode 100644 index 0000000..c96e829 --- /dev/null +++ b/MCUME_teensy/teensyvcs/tiasound.h @@ -0,0 +1,41 @@ +/*****************************************************************************/ +/* */ +/* Module: TIA Chip Sound Simulator Includes, V1.0 */ +/* Purpose: Define global function prototypes and structures for the TIA */ +/* Chip Sound Simulator. */ +/* Author: Ron Fries */ +/* Date: September 10, 1996 */ +/* */ +/*****************************************************************************/ +/* */ +/* License Information and Copyright Notice */ +/* ======================================== */ +/* */ +/* TiaSound is Copyright(c) 1996 by Ron Fries */ +/* */ +/* This library is free software; you can redistribute it and/or modify it */ +/* under the terms of version 2 of the GNU Library General Public License */ +/* as published by the Free Software Foundation. */ +/* */ +/* This library is distributed in the hope that it will be useful, but */ +/* WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */ +/* General Public License for more details. */ +/* To obtain a copy of the GNU Library General Public License, write to the */ +/* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* */ +/* Any permitted reproduction of these routines, in whole or in part, must */ +/* bear this legend. */ +/* */ +/*****************************************************************************/ + +#ifndef _TIASOUND_H +#define _TIASOUND_H + +void Tia_sound_init (unsigned int sample_freq, unsigned int playback_freq); +extern void Update_tia_sound (unsigned int addr, unsigned char val); +extern void Tia_process_2 (register unsigned short *buffer, + register unsigned int n); +extern void Tia_process (register unsigned char *buffer, + register unsigned int n); +#endif diff --git a/MCUME_teensy/teensyvcs/types.h b/MCUME_teensy/teensyvcs/types.h new file mode 100644 index 0000000..60d2ac2 --- /dev/null +++ b/MCUME_teensy/teensyvcs/types.h @@ -0,0 +1,51 @@ +/* + * $Id: types.h,v 1.1 1995/11/26 21:52:43 alex Exp alex $ + * + * This file is part of Commodore 64 emulator. + * See README for copyright notice + * + * This file declares types used all over. + * + * + * Written by + * Jarkko Sonninen (sonninen@lut.fi) + * Jouko Valta (jopi@stekt.oulu.fi) + * + * + * $Log: types.h,v $ + * Revision 1.1 1995/11/26 21:52:43 alex + * Initial revision + * + * Revision 1.4 1995/04/01 07:54:09 jopi + * X64 0.3 PL 0 + * Typedef for signed char. + * Room for new options for Printer charsets, Basic patch, REU size. + * + * Revision 1.3 1994/12/12 16:59:44 jopi + * 16-bit portability + * + * Revision 1.2 1994/08/10 18:34:13 jopi + * More changeability + * + * Revision 1.1 1994/06/16 17:19:26 jopi + * Initial revision + * + */ + + +#ifndef X64_TYPES_H +#define X64_TYPES_H + + +typedef signed char SIGNED_CHAR; +/*typedef char SIGNED_CHAR;*/ + +typedef unsigned char byte; +typedef unsigned char BYTE; +typedef unsigned short ADDRESS; +typedef unsigned long CLOCK; + +typedef int ADDR_T; +/*typedef long ADDR_T;*/ + +#endif /* X64_TYPES_H */ diff --git a/MCUME_teensy/teensyvcs/vmachine.h b/MCUME_teensy/teensyvcs/vmachine.h new file mode 100644 index 0000000..33a7be1 --- /dev/null +++ b/MCUME_teensy/teensyvcs/vmachine.h @@ -0,0 +1,148 @@ +/***************************************************************************** + + This file is part of x2600, the Atari 2600 Emulator + =================================================== + + Copyright 1996 Alex Hornby. For contributions see the file CREDITS. + + This software is distributed under the terms of the GNU General Public + License. This is free software with ABSOLUTELY NO WARRANTY. + + See the file COPYING for details. + + $Id: vmachine.h,v 2.13 1996/11/24 16:55:40 ahornby Exp $ +******************************************************************************/ + + +/* + External definitions of the 2600 virtual machine. +*/ + + +#ifndef VMACHINE_H +#define VMACHINE_H +//#define BYTE char + +extern int rom_size; +//JMH +extern BYTE *theCart; +//extern BYTE theCart[4096]; +extern BYTE *theRom; +extern BYTE *cartScratch; +extern BYTE *cartRam; +extern BYTE theRam[]; +extern BYTE riotRead[]; +extern BYTE riotWrite[]; +extern BYTE tiaWrite[]; +extern BYTE tiaRead[]; +extern BYTE keypad[2][4]; + +extern int reset_flag; + +extern int ebeamx, ebeamy, sbeamx; + +#define VSYNCSTATE 1 +#define VBLANKSTATE 2 +#define HSYNCSTATE 4 +#define DRAWSTATE 8 +#define OVERSTATE 16 + +extern int vbeam_state, hbeam_state; + +extern int tv_width, tv_height, tv_vsync, tv_vblank, + tv_overscan, tv_frame, tv_hertz, tv_hsync; + +extern int timer_res, timer_count, timer_clks; + +typedef struct { + BYTE pf0,pf1,pf2; + BYTE ref; +} PlayField; + +extern PlayField pf[2]; + +typedef struct { + int pos; + int val; +} Paddle; + +extern Paddle paddle[4]; +typedef struct { + int x; + BYTE grp; + BYTE hmm; + BYTE vdel; + BYTE vdel_flag; + BYTE nusize; + BYTE reflect; + BYTE mask; +} Player; + +extern Player pl[2]; + +struct RasterChange { + int x; /* Position at which change happened */ + int type; /* Type of change */ + int val; /* Value of change */ +} ; + +extern struct RasterChange pl_change[2][80], pf_change[1][80], unified[80]; + +extern int pl_change_count[2], pf_change_count[1], unified_count; + +/* The missile and ball positions */ +typedef struct { + int x; + BYTE hmm; + BYTE locked; + BYTE enabled; + BYTE width; + BYTE vdel; + BYTE vdel_flag; + BYTE mask; +} Missile; + +extern Missile ml[3]; + +/**************************************************************************** + functions. +*****************************************************************************/ + +extern __inline void +do_plraster_change(int i, int type, int val); + +extern __inline void +do_unified_change(int type, int val); + +extern __inline void +use_unified_change( struct RasterChange *rc); + +extern __inline void +use_plraster_change( Player *pl, struct RasterChange *rc); + +extern __inline void +do_pfraster_change(int i, int type, int val); + +extern __inline void +use_pfraster_change( PlayField *pf, struct RasterChange *rc); + +void init_machine(void); +void init_hardware(void); +void init_banking(void); + +extern __inline void set_timer(int res, int count, int clkadj); +extern __inline BYTE do_timer(int clkadj); +extern __inline void do_vblank(BYTE b); +extern __inline void do_hsync(void); + +int do_paddle(int padnum); +BYTE do_keypad(int pad, int col); +extern __inline void do_screen(int clks); + +#endif + + + + + + diff --git a/MCUME_teensy/teensyvectrex/.DS_Store b/MCUME_teensy/teensyvectrex/.DS_Store new file mode 100644 index 0000000..f7a8f99 Binary files /dev/null and b/MCUME_teensy/teensyvectrex/.DS_Store differ diff --git a/MCUME_teensy/teensyvectrex/AudioPlaySystem.cpp b/MCUME_teensy/teensyvectrex/AudioPlaySystem.cpp new file mode 100644 index 0000000..8fea18d --- /dev/null +++ b/MCUME_teensy/teensyvectrex/AudioPlaySystem.cpp @@ -0,0 +1,198 @@ +#include "emuapi.h" + +#ifdef HAS_SND + +#include "AudioPlaySystem.h" +#include +#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT +#define CLOCKFREQ 985248 + +#ifndef CUSTOM_SND +PROGMEM static const short square[]={ +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +32767,32767,32767,32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767, +}; + +PROGMEM const short noise[] { +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767, +-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767, +-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767, +32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767, +32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767, +}; + +#define NOISEBSIZE 0x100 + +typedef struct +{ + unsigned int spos; + unsigned int sinc; + unsigned int vol; +} Channel; + +static Channel chan[6] = { + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0}, + {0,0,0} }; + +#endif + +volatile bool playing = false; + + + + +static void snd_Reset(void) +{ +#ifndef CUSTOM_SND + chan[0].vol = 0; + chan[1].vol = 0; + chan[2].vol = 0; + chan[3].vol = 0; + chan[4].vol = 0; + chan[5].vol = 0; + chan[0].sinc = 0; + chan[1].sinc = 0; + chan[2].sinc = 0; + chan[3].sinc = 0; + chan[4].sinc = 0; + chan[5].sinc = 0; +#endif +} + + +#ifdef CUSTOM_SND +extern "C" { +void SND_Process(void *sndbuffer, int sndn); +} +#endif + +static void snd_Mixer(short * stream, int len ) +{ + if (playing) + { +#ifdef CUSTOM_SND + SND_Process((void*)stream, len); +#else + int i; + long s; + len = len >> 1; + + short v0=chan[0].vol; + short v1=chan[1].vol; + short v2=chan[2].vol; + short v3=chan[3].vol; + short v4=chan[4].vol; + short v5=chan[5].vol; + for (i=0;i>8)&0x3f])>>11); + s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11); + s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11); + s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11); + s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11); + *stream++ = (short)(s); + *stream++ = (short)(s); + chan[0].spos += chan[0].sinc; + chan[1].spos += chan[1].sinc; + chan[2].spos += chan[2].sinc; + chan[3].spos += chan[3].sinc; + chan[4].spos += chan[4].sinc; + chan[5].spos += chan[5].sinc; + } +#endif + } +} + +void AudioPlaySystem::begin(void) +{ + //emu_printf("AudioPlaySystem constructor"); + this->reset(); + //setSampleParameters(CLOCKFREQ, SAMPLERATE); +} + +void AudioPlaySystem::start(void) +{ + //emu_printf("allocating sound buf"); + playing = true; +} + +void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) { +} + +void AudioPlaySystem::reset(void) +{ + snd_Reset(); +} + +void AudioPlaySystem::stop(void) +{ + //__disable_irq(); + playing = false; + //__enable_irq(); +} + +bool AudioPlaySystem::isPlaying(void) +{ + return playing; +} + +void AudioPlaySystem::update(void) { + audio_block_t *block; + + // only update if we're playing + if (!playing) return; + + // allocate the audio blocks to transmit + block = allocate(); + if (block == NULL) return; + + snd_Mixer((short*)block->data,AUDIO_BLOCK_SAMPLES); + //memset( (void*)block->data, 0, AUDIO_BLOCK_SAMPLES*2); + + transmit(block); + release(block); +} + +void AudioPlaySystem::sound(int C, int F, int V) { +#ifndef CUSTOM_SND + if (C < 6) { + chan[C].vol = V; + chan[C].sinc = F>>1; + } +#endif +} + +void AudioPlaySystem::step(void) { +} +#endif + diff --git a/MCUME_teensy/teensyvectrex/AudioPlaySystem.h b/MCUME_teensy/teensyvectrex/AudioPlaySystem.h new file mode 100644 index 0000000..0333adb --- /dev/null +++ b/MCUME_teensy/teensyvectrex/AudioPlaySystem.h @@ -0,0 +1,28 @@ +#ifndef audioplaysystem_h_ +#define audioplaysystem_h_ + +#ifdef HAS_SND + +#include + +class AudioPlaySystem : public AudioStream +{ +public: + AudioPlaySystem(void) : AudioStream(0, NULL) { begin(); } + void begin(void); + void setSampleParameters(float clockfreq, float samplerate); + void reset(void); + void start(void); + void stop(void); + bool isPlaying(void); + void sound(int C, int F, int V); + void buzz(int size, int val); + void step(void); + +private: + virtual void update(void); +}; +#endif + +#endif + diff --git a/MCUME_teensy/teensyvectrex/bmpjoy.h b/MCUME_teensy/teensyvectrex/bmpjoy.h new file mode 100644 index 0000000..e1c6299 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/bmpjoy.h @@ -0,0 +1,41 @@ +PROGMEM const uint16_t bmpjoy[] = { +0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c, +0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c, +0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c, +0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000, +0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000}; + + diff --git a/MCUME_teensy/teensyvectrex/bmptft.h b/MCUME_teensy/teensyvectrex/bmptft.h new file mode 100644 index 0000000..5ba5346 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/bmptft.h @@ -0,0 +1,40 @@ +PROGMEM const uint16_t bmptft[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyvectrex/bmpvbar.h b/MCUME_teensy/teensyvectrex/bmpvbar.h new file mode 100644 index 0000000..9de7f9a --- /dev/null +++ b/MCUME_teensy/teensyvectrex/bmpvbar.h @@ -0,0 +1,152 @@ +PROGMEM const uint16_t bmpvbar[] = { +0x0020,0x0094, +0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861, +0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861, +0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861, +0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861, +0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430, +0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d, +0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd, +0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc, +0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc, +0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc, +0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc, +0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc, +0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc, +0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc, +0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc, +0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc, +0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c, +0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c, +0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c, +0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c, +0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c, +0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c, +0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc, +0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc, +0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc, +0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc, +0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc, +0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc, +0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc, +0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d, +0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c, +0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861, +0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861, +0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861, +0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861, +0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyvectrex/bmpvga.h b/MCUME_teensy/teensyvectrex/bmpvga.h new file mode 100644 index 0000000..b1dbed4 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/bmpvga.h @@ -0,0 +1,40 @@ +PROGMEM const uint16_t bmpvga[] = { +0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861, +0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861, +0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861, +0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861, +0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861, +0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e, +0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d, +0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc, +0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c, +0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c, +0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b, +0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c, +0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b, +0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b, +0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb, +0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc, +0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c, +0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861, +0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861, +0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861, +0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861, +0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861}; + + diff --git a/MCUME_teensy/teensyvectrex/e6809.c b/MCUME_teensy/teensyvectrex/e6809.c new file mode 100644 index 0000000..a9a48ea --- /dev/null +++ b/MCUME_teensy/teensyvectrex/e6809.c @@ -0,0 +1,2624 @@ +#include +#include +#include "e6809.h" + +/* code assumptions: + * - it is assumed that an 'int' is at least 16 bits long. + * - a 16-bit register has valid bits only in the lower 16 bits and an + * 8-bit register has valid bits only in the lower 8 bits. the upper + * may contain garbage! + * - all reading functions are assumed to return the requested data in + * the lower bits with the unused upper bits all set to zero. + */ + +#define einline __inline + +enum { + FLAG_E = 0x80, + FLAG_F = 0x40, + FLAG_H = 0x20, + FLAG_I = 0x10, + FLAG_N = 0x08, + FLAG_Z = 0x04, + FLAG_V = 0x02, + FLAG_C = 0x01, + IRQ_NORMAL = 0, + IRQ_SYNC = 1, + IRQ_CWAI = 2 +}; + +/* index registers */ + +static unsigned reg_x; +static unsigned reg_y; + +/* user stack pointer */ + +static unsigned reg_u; + +/* hardware stack pointer */ + +static unsigned reg_s; + +/* program counter */ + +static unsigned reg_pc; + +/* accumulators */ + +static unsigned reg_a; +static unsigned reg_b; + +/* direct page register */ + +static unsigned reg_dp; + +/* condition codes */ + +static unsigned reg_cc; + +/* flag to see if interrupts should be handled (sync/cwai). */ + +static unsigned irq_status; + +static unsigned *rptr_xyus[4] = { + ®_x, + ®_y, + ®_u, + ®_s +}; + +/* user defined read and write functions */ + +unsigned char (*e6809_read8) (unsigned address); +void (*e6809_write8) (unsigned address, unsigned char data); + +/* obtain a particular condition code. returns 0 or 1. */ + +static einline unsigned get_cc (unsigned flag) +{ + return (reg_cc / flag) & 1; +} + +/* set a particular condition code to either 0 or 1. + * value parameter must be either 0 or 1. + */ + +static einline void set_cc (unsigned flag, unsigned value) +{ + reg_cc &= ~flag; + reg_cc |= value * flag; +} + +/* test carry */ + +static einline unsigned test_c (unsigned i0, unsigned i1, + unsigned r, unsigned sub) +{ + unsigned flag; + + flag = (i0 | i1) & ~r; /* one of the inputs is 1 and output is 0 */ + flag |= (i0 & i1); /* both inputs are 1 */ + flag = (flag >> 7) & 1; + flag ^= sub; /* on a sub, carry is opposite the carry of an add */ + + return flag; +} + +/* test negative */ + +static einline unsigned test_n (unsigned r) +{ + return (r >> 7) & 1; +} + +/* test for zero in lower 8 bits */ + +static einline unsigned test_z8 (unsigned r) +{ + unsigned flag; + + flag = ~r; + flag = (flag >> 4) & (flag & 0xf); + flag = (flag >> 2) & (flag & 0x3); + flag = (flag >> 1) & (flag & 0x1); + + return flag; +} + +/* test for zero in lower 16 bits */ + +static einline unsigned test_z16 (unsigned r) +{ + unsigned flag; + + flag = ~r; + flag = (flag >> 8) & (flag & 0xff); + flag = (flag >> 4) & (flag & 0xf); + flag = (flag >> 2) & (flag & 0x3); + flag = (flag >> 1) & (flag & 0x1); + + return flag; +} + +/* overflow is set whenever the sign bits of the inputs are the same + * but the sign bit of the result is not same as the sign bits of the + * inputs. + */ + +static einline unsigned test_v (unsigned i0, unsigned i1, unsigned r) +{ + unsigned flag; + + flag = ~(i0 ^ i1); /* input sign bits are the same */ + flag &= (i0 ^ r); /* input sign and output sign not same */ + flag = (flag >> 7) & 1; + + return flag; +} + +static einline unsigned get_reg_d (void) +{ + return (reg_a << 8) | (reg_b & 0xff); +} + +static einline void set_reg_d (unsigned value) +{ + reg_a = value >> 8; + reg_b = value; +} + +/* read a byte ... the returned value has the lower 8-bits set to the byte + * while the upper bits are all zero. + */ + +static einline unsigned read8 (unsigned address) +{ + return (*e6809_read8) (address & 0xffff); +} + +/* write a byte ... only the lower 8-bits of the unsigned data + * is written. the upper bits are ignored. + */ + +static einline void write8 (unsigned address, unsigned data) +{ + (*e6809_write8) (address & 0xffff, (unsigned char) data); +} + +static einline unsigned read16 (unsigned address) +{ + unsigned datahi, datalo; + + datahi = read8 (address); + datalo = read8 (address + 1); + + return (datahi << 8) | datalo; +} + +static einline void write16 (unsigned address, unsigned data) +{ + write8 (address, data >> 8); + write8 (address + 1, data); +} + +static einline void push8 (unsigned *sp, unsigned data) +{ + (*sp)--; + write8 (*sp, data); +} + +static einline unsigned pull8 (unsigned *sp) +{ + unsigned data; + + data = read8 (*sp); + (*sp)++; + + return data; +} + +static einline void push16 (unsigned *sp, unsigned data) +{ + push8 (sp, data); + push8 (sp, data >> 8); +} + +static einline unsigned pull16 (unsigned *sp) +{ + unsigned datahi, datalo; + + datahi = pull8 (sp); + datalo = pull8 (sp); + + return (datahi << 8) | datalo; +} + +/* read a byte from the address pointed to by the pc */ + +static einline unsigned pc_read8 (void) +{ + unsigned data; + + data = read8 (reg_pc); + reg_pc++; + + return data; +} + +/* read a word from the address pointed to by the pc */ + +static einline unsigned pc_read16 (void) +{ + unsigned data; + + data = read16 (reg_pc); + reg_pc += 2; + + return data; +} + +/* sign extend an 8-bit quantity into a 16-bit quantity */ + +static einline unsigned sign_extend (unsigned data) +{ + return (~(data & 0x80) + 1) | (data & 0xff); +} + +/* direct addressing, upper byte of the address comes from + * the direct page register, and the lower byte comes from the + * instruction itself. + */ + +static einline unsigned ea_direct (void) +{ + return (reg_dp << 8) | pc_read8 (); +} + +/* extended addressing, address is obtained from 2 bytes following + * the instruction. + */ + +static einline unsigned ea_extended (void) +{ + return pc_read16 (); +} + +/* indexed addressing */ + +PROGMEM static einline unsigned ea_indexed (unsigned *cycles) +{ + unsigned r, op, ea; + + /* post byte */ + + op = pc_read8 (); + + r = (op >> 5) & 3; + + switch (op) { + case 0x00: case 0x01: case 0x02: case 0x03: + case 0x04: case 0x05: case 0x06: case 0x07: + case 0x08: case 0x09: case 0x0a: case 0x0b: + case 0x0c: case 0x0d: case 0x0e: case 0x0f: + case 0x20: case 0x21: case 0x22: case 0x23: + case 0x24: case 0x25: case 0x26: case 0x27: + case 0x28: case 0x29: case 0x2a: case 0x2b: + case 0x2c: case 0x2d: case 0x2e: case 0x2f: + case 0x40: case 0x41: case 0x42: case 0x43: + case 0x44: case 0x45: case 0x46: case 0x47: + case 0x48: case 0x49: case 0x4a: case 0x4b: + case 0x4c: case 0x4d: case 0x4e: case 0x4f: + case 0x60: case 0x61: case 0x62: case 0x63: + case 0x64: case 0x65: case 0x66: case 0x67: + case 0x68: case 0x69: case 0x6a: case 0x6b: + case 0x6c: case 0x6d: case 0x6e: case 0x6f: + /* R, +[0, 15] */ + + ea = *rptr_xyus[r] + (op & 0xf); + (*cycles)++; + break; + case 0x10: case 0x11: case 0x12: case 0x13: + case 0x14: case 0x15: case 0x16: case 0x17: + case 0x18: case 0x19: case 0x1a: case 0x1b: + case 0x1c: case 0x1d: case 0x1e: case 0x1f: + case 0x30: case 0x31: case 0x32: case 0x33: + case 0x34: case 0x35: case 0x36: case 0x37: + case 0x38: case 0x39: case 0x3a: case 0x3b: + case 0x3c: case 0x3d: case 0x3e: case 0x3f: + case 0x50: case 0x51: case 0x52: case 0x53: + case 0x54: case 0x55: case 0x56: case 0x57: + case 0x58: case 0x59: case 0x5a: case 0x5b: + case 0x5c: case 0x5d: case 0x5e: case 0x5f: + case 0x70: case 0x71: case 0x72: case 0x73: + case 0x74: case 0x75: case 0x76: case 0x77: + case 0x78: case 0x79: case 0x7a: case 0x7b: + case 0x7c: case 0x7d: case 0x7e: case 0x7f: + /* R, +[-16, -1] */ + + ea = *rptr_xyus[r] + (op & 0xf) - 0x10; + (*cycles)++; + break; + case 0x80: case 0x81: + case 0xa0: case 0xa1: + case 0xc0: case 0xc1: + case 0xe0: case 0xe1: + /* ,R+ / ,R++ */ + + ea = *rptr_xyus[r]; + *rptr_xyus[r] += 1 + (op & 1); + *cycles += 2 + (op & 1); + break; + case 0x90: case 0x91: + case 0xb0: case 0xb1: + case 0xd0: case 0xd1: + case 0xf0: case 0xf1: + /* [,R+] ??? / [,R++] */ + + ea = read16 (*rptr_xyus[r]); + *rptr_xyus[r] += 1 + (op & 1); + *cycles += 5 + (op & 1); + break; + case 0x82: case 0x83: + case 0xa2: case 0xa3: + case 0xc2: case 0xc3: + case 0xe2: case 0xe3: + + /* ,-R / ,--R */ + + *rptr_xyus[r] -= 1 + (op & 1); + ea = *rptr_xyus[r]; + *cycles += 2 + (op & 1); + break; + case 0x92: case 0x93: + case 0xb2: case 0xb3: + case 0xd2: case 0xd3: + case 0xf2: case 0xf3: + /* [,-R] ??? / [,--R] */ + + *rptr_xyus[r] -= 1 + (op & 1); + ea = read16 (*rptr_xyus[r]); + *cycles += 5 + (op & 1); + break; + case 0x84: case 0xa4: + case 0xc4: case 0xe4: + /* ,R */ + + ea = *rptr_xyus[r]; + break; + case 0x94: case 0xb4: + case 0xd4: case 0xf4: + /* [,R] */ + + ea = read16 (*rptr_xyus[r]); + *cycles += 3; + break; + case 0x85: case 0xa5: + case 0xc5: case 0xe5: + /* B,R */ + + ea = *rptr_xyus[r] + sign_extend (reg_b); + *cycles += 1; + break; + case 0x95: case 0xb5: + case 0xd5: case 0xf5: + /* [B,R] */ + + ea = read16 (*rptr_xyus[r] + sign_extend (reg_b)); + *cycles += 4; + break; + case 0x86: case 0xa6: + case 0xc6: case 0xe6: + /* A,R */ + + ea = *rptr_xyus[r] + sign_extend (reg_a); + *cycles += 1; + break; + case 0x96: case 0xb6: + case 0xd6: case 0xf6: + /* [A,R] */ + + ea = read16 (*rptr_xyus[r] + sign_extend (reg_a)); + *cycles += 4; + break; + case 0x88: case 0xa8: + case 0xc8: case 0xe8: + /* byte,R */ + + ea = *rptr_xyus[r] + sign_extend (pc_read8 ()); + *cycles += 1; + break; + case 0x98: case 0xb8: + case 0xd8: case 0xf8: + /* [byte,R] */ + + ea = read16 (*rptr_xyus[r] + sign_extend (pc_read8 ())); + *cycles += 4; + break; + case 0x89: case 0xa9: + case 0xc9: case 0xe9: + /* word,R */ + + ea = *rptr_xyus[r] + pc_read16 (); + *cycles += 4; + break; + case 0x99: case 0xb9: + case 0xd9: case 0xf9: + /* [word,R] */ + + ea = read16 (*rptr_xyus[r] + pc_read16 ()); + *cycles += 7; + break; + case 0x8b: case 0xab: + case 0xcb: case 0xeb: + /* D,R */ + + ea = *rptr_xyus[r] + get_reg_d (); + *cycles += 4; + break; + case 0x9b: case 0xbb: + case 0xdb: case 0xfb: + /* [D,R] */ + + ea = read16 (*rptr_xyus[r] + get_reg_d ()); + *cycles += 7; + break; + case 0x8c: case 0xac: + case 0xcc: case 0xec: + /* byte, PC */ + + r = sign_extend (pc_read8 ()); + ea = reg_pc + r; + *cycles += 1; + break; + case 0x9c: case 0xbc: + case 0xdc: case 0xfc: + /* [byte, PC] */ + + r = sign_extend (pc_read8 ()); + ea = read16 (reg_pc + r); + *cycles += 4; + break; + case 0x8d: case 0xad: + case 0xcd: case 0xed: + /* word, PC */ + + r = pc_read16 (); + ea = reg_pc + r; + *cycles += 5; + break; + case 0x9d: case 0xbd: + case 0xdd: case 0xfd: + /* [word, PC] */ + + r = pc_read16 (); + ea = read16 (reg_pc + r); + *cycles += 8; + break; + case 0x9f: + /* [address] */ + + ea = read16 (pc_read16 ()); + *cycles += 5; + break; + default: + printf ("undefined post-byte\n"); + break; + } + + return ea; +} + +/* instruction: neg + * essentially (0 - data). + */ + +einline unsigned inst_neg (unsigned data) +{ + unsigned i0, i1, r; + + i0 = 0; + i1 = ~data; + r = i0 + i1 + 1; + + set_cc (FLAG_H, test_c (i0 << 4, i1 << 4, r << 4, 0)); + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 1)); + + return r; +} + +/* instruction: com */ + +einline unsigned inst_com (unsigned data) +{ + unsigned r; + + r = ~data; + + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, 0); + set_cc (FLAG_C, 1); + + return r; +} + +/* instruction: lsr + * cannot be faked as an add or substract. + */ + +einline unsigned inst_lsr (unsigned data) +{ + unsigned r; + + r = (data >> 1) & 0x7f; + + set_cc (FLAG_N, 0); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_C, data & 1); + + return r; +} + +/* instruction: ror + * cannot be faked as an add or substract. + */ + +einline unsigned inst_ror (unsigned data) +{ + unsigned r, c; + + c = get_cc (FLAG_C); + r = ((data >> 1) & 0x7f) | (c << 7); + + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_C, data & 1); + + return r; +} + +/* instruction: asr + * cannot be faked as an add or substract. + */ + +einline unsigned inst_asr (unsigned data) +{ + unsigned r; + + r = ((data >> 1) & 0x7f) | (data & 0x80); + + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_C, data & 1); + + return r; +} + +/* instruction: asl + * essentially (data + data). simple addition. + */ + +einline unsigned inst_asl (unsigned data) +{ + unsigned i0, i1, r; + + i0 = data; + i1 = data; + r = i0 + i1; + + set_cc (FLAG_H, test_c (i0 << 4, i1 << 4, r << 4, 0)); + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 0)); + + return r; +} + +/* instruction: rol + * essentially (data + data + carry). addition with carry. + */ + +einline unsigned inst_rol (unsigned data) +{ + unsigned i0, i1, c, r; + + i0 = data; + i1 = data; + c = get_cc (FLAG_C); + r = i0 + i1 + c; + + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 0)); + + return r; +} + +/* instruction: dec + * essentially (data - 1). + */ + +einline unsigned inst_dec (unsigned data) +{ + unsigned i0, i1, r; + + i0 = data; + i1 = 0xff; + r = i0 + i1; + + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + + return r; +} + +/* instruction: inc + * essentially (data + 1). + */ + +einline unsigned inst_inc (unsigned data) +{ + unsigned i0, i1, r; + + i0 = data; + i1 = 1; + r = i0 + i1; + + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + + return r; +} + +/* instruction: tst */ + +einline void inst_tst8 (unsigned data) +{ + set_cc (FLAG_N, test_n (data)); + set_cc (FLAG_Z, test_z8 (data)); + set_cc (FLAG_V, 0); +} + +einline void inst_tst16 (unsigned data) +{ + set_cc (FLAG_N, test_n (data >> 8)); + set_cc (FLAG_Z, test_z16 (data)); + set_cc (FLAG_V, 0); +} + +/* instruction: clr */ + +einline void inst_clr (void) +{ + set_cc (FLAG_N, 0); + set_cc (FLAG_Z, 1); + set_cc (FLAG_V, 0); + set_cc (FLAG_C, 0); +} + +/* instruction: suba/subb */ + +einline unsigned inst_sub8 (unsigned data0, unsigned data1) +{ + unsigned i0, i1, r; + + i0 = data0; + i1 = ~data1; + r = i0 + i1 + 1; + + set_cc (FLAG_H, test_c (i0 << 4, i1 << 4, r << 4, 0)); + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 1)); + + return r; +} + +/* instruction: sbca/sbcb/cmpa/cmpb. + * only 8-bit version, 16-bit version not needed. + */ + +einline unsigned inst_sbc (unsigned data0, unsigned data1) +{ + unsigned i0, i1, c, r; + + i0 = data0; + i1 = ~data1; + c = 1 - get_cc (FLAG_C); + r = i0 + i1 + c; + + set_cc (FLAG_H, test_c (i0 << 4, i1 << 4, r << 4, 0)); + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 1)); + + return r; +} + +/* instruction: anda/andb/bita/bitb. + * only 8-bit version, 16-bit version not needed. + */ + +einline unsigned inst_and (unsigned data0, unsigned data1) +{ + unsigned r; + + r = data0 & data1; + + inst_tst8 (r); + + return r; +} + +/* instruction: eora/eorb. + * only 8-bit version, 16-bit version not needed. + */ + +einline unsigned inst_eor (unsigned data0, unsigned data1) +{ + unsigned r; + + r = data0 ^ data1; + + inst_tst8 (r); + + return r; +} + +/* instruction: adca/adcb + * only 8-bit version, 16-bit version not needed. + */ + +einline unsigned inst_adc (unsigned data0, unsigned data1) +{ + unsigned i0, i1, c, r; + + i0 = data0; + i1 = data1; + c = get_cc (FLAG_C); + r = i0 + i1 + c; + + set_cc (FLAG_H, test_c (i0 << 4, i1 << 4, r << 4, 0)); + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 0)); + + return r; +} + +/* instruction: ora/orb. + * only 8-bit version, 16-bit version not needed. + */ + +einline unsigned inst_or (unsigned data0, unsigned data1) +{ + unsigned r; + + r = data0 | data1; + + inst_tst8 (r); + + return r; +} + +/* instruction: adda/addb */ + +einline unsigned inst_add8 (unsigned data0, unsigned data1) +{ + unsigned i0, i1, r; + + i0 = data0; + i1 = data1; + r = i0 + i1; + + set_cc (FLAG_H, test_c (i0 << 4, i1 << 4, r << 4, 0)); + set_cc (FLAG_N, test_n (r)); + set_cc (FLAG_Z, test_z8 (r)); + set_cc (FLAG_V, test_v (i0, i1, r)); + set_cc (FLAG_C, test_c (i0, i1, r, 0)); + + return r; +} + +/* instruction: addd */ + +einline unsigned inst_add16 (unsigned data0, unsigned data1) +{ + unsigned i0, i1, r; + + i0 = data0; + i1 = data1; + r = i0 + i1; + + set_cc (FLAG_N, test_n (r >> 8)); + set_cc (FLAG_Z, test_z16 (r)); + set_cc (FLAG_V, test_v (i0 >> 8, i1 >> 8, r >> 8)); + set_cc (FLAG_C, test_c (i0 >> 8, i1 >> 8, r >> 8, 0)); + + return r; +} + +/* instruction: subd */ + +einline unsigned inst_sub16 (unsigned data0, unsigned data1) +{ + unsigned i0, i1, r; + + i0 = data0; + i1 = ~data1; + r = i0 + i1 + 1; + + set_cc (FLAG_N, test_n (r >> 8)); + set_cc (FLAG_Z, test_z16 (r)); + set_cc (FLAG_V, test_v (i0 >> 8, i1 >> 8, r >> 8)); + set_cc (FLAG_C, test_c (i0 >> 8, i1 >> 8, r >> 8, 1)); + + return r; +} + +/* instruction: 8-bit offset branch */ + +einline void inst_bra8 (unsigned test, unsigned op, unsigned *cycles) +{ + unsigned offset, mask; + + offset = pc_read8 (); + + /* trying to avoid an if statement */ + + mask = (test ^ (op & 1)) - 1; /* 0xffff when taken, 0 when not taken */ + reg_pc += sign_extend (offset) & mask; + + *cycles += 3; +} + +/* instruction: 16-bit offset branch */ + +einline void inst_bra16 (unsigned test, unsigned op, unsigned *cycles) +{ + unsigned offset, mask; + + offset = pc_read16 (); + + /* trying to avoid an if statement */ + + mask = (test ^ (op & 1)) - 1; /* 0xffff when taken, 0 when not taken */ + reg_pc += offset & mask; + + *cycles += 5 - mask; +} + +/* instruction: pshs/pshu */ + +einline void inst_psh (unsigned op, unsigned *sp, + unsigned data, unsigned *cycles) +{ + if (op & 0x80) { + push16 (sp, reg_pc); + *cycles += 2; + } + + if (op & 0x40) { + /* either s or u */ + push16 (sp, data); + *cycles += 2; + } + + if (op & 0x20) { + push16 (sp, reg_y); + *cycles += 2; + } + + if (op & 0x10) { + push16 (sp, reg_x); + *cycles += 2; + } + + if (op & 0x08) { + push8 (sp, reg_dp); + *cycles += 1; + } + + if (op & 0x04) { + push8 (sp, reg_b); + *cycles += 1; + } + + if (op & 0x02) { + push8 (sp, reg_a); + *cycles += 1; + } + + if (op & 0x01) { + push8 (sp, reg_cc); + *cycles += 1; + } +} + +/* instruction: puls/pulu */ + +einline void inst_pul (unsigned op, unsigned *sp, unsigned *osp, + unsigned *cycles) +{ + if (op & 0x01) { + reg_cc = pull8 (sp); + *cycles += 1; + } + + if (op & 0x02) { + reg_a = pull8 (sp); + *cycles += 1; + } + + if (op & 0x04) { + reg_b = pull8 (sp); + *cycles += 1; + } + + if (op & 0x08) { + reg_dp = pull8 (sp); + *cycles += 1; + } + + if (op & 0x10) { + reg_x = pull16 (sp); + *cycles += 2; + } + + if (op & 0x20) { + reg_y = pull16 (sp); + *cycles += 2; + } + + if (op & 0x40) { + /* either s or u */ + *osp = pull16 (sp); + *cycles += 2; + } + + if (op & 0x80) { + reg_pc = pull16 (sp); + *cycles += 2; + } +} + +einline unsigned exgtfr_read (unsigned reg) +{ + unsigned data; + + switch (reg) { + case 0x0: + data = get_reg_d (); + break; + case 0x1: + data = reg_x; + break; + case 0x2: + data = reg_y; + break; + case 0x3: + data = reg_u; + break; + case 0x4: + data = reg_s; + break; + case 0x5: + data = reg_pc; + break; + case 0x8: + data = 0xff00 | reg_a; + break; + case 0x9: + data = 0xff00 | reg_b; + break; + case 0xa: + data = 0xff00 | reg_cc; + break; + case 0xb: + data = 0xff00 | reg_dp; + break; + default: + data = 0xffff; + printf ("illegal exgtfr reg %.1x\n", reg); + break; + } + + return data; +} + +einline void exgtfr_write (unsigned reg, unsigned data) +{ + switch (reg) { + case 0x0: + set_reg_d (data); + break; + case 0x1: + reg_x = data; + break; + case 0x2: + reg_y = data; + break; + case 0x3: + reg_u = data; + break; + case 0x4: + reg_s = data; + break; + case 0x5: + reg_pc = data; + break; + case 0x8: + reg_a = data; + break; + case 0x9: + reg_b = data; + break; + case 0xa: + reg_cc = data; + break; + case 0xb: + reg_dp = data; + break; + default: + printf ("illegal exgtfr reg %.1x\n", reg); + break; + } +} + +/* instruction: exg */ + +einline void inst_exg (void) +{ + unsigned op, tmp; + + op = pc_read8 (); + + tmp = exgtfr_read (op & 0xf); + exgtfr_write (op & 0xf, exgtfr_read (op >> 4)); + exgtfr_write (op >> 4, tmp); +} + +/* instruction: tfr */ + +einline void inst_tfr (void) +{ + unsigned op; + + op = pc_read8 (); + + exgtfr_write (op & 0xf, exgtfr_read (op >> 4)); +} + +/* reset the 6809 */ + +void e6809_reset (void) +{ + reg_x = 0; + reg_y = 0; + reg_u = 0; + reg_s = 0; + + reg_a = 0; + reg_b = 0; + + reg_dp = 0; + + reg_cc = FLAG_I | FLAG_F; + irq_status = IRQ_NORMAL; + + reg_pc = read16 (0xfffe); +} + +/* execute a single instruction or handle interrupts and return */ + +PROGMEM unsigned e6809_sstep (unsigned irq_i, unsigned irq_f) +{ + unsigned op; + unsigned cycles = 0; + unsigned ea, i0, i1, r; + + if (irq_f) { + if (get_cc (FLAG_F) == 0) { + if (irq_status != IRQ_CWAI) { + set_cc (FLAG_E, 0); + inst_psh (0x81, ®_s, reg_u, &cycles); + } + + set_cc (FLAG_I, 1); + set_cc (FLAG_F, 1); + + reg_pc = read16 (0xfff6); + irq_status = IRQ_NORMAL; + cycles += 7; + } else { + if (irq_status == IRQ_SYNC) { + irq_status = IRQ_NORMAL; + } + } + } + + if (irq_i) { + if (get_cc (FLAG_I) == 0) { + if (irq_status != IRQ_CWAI) { + set_cc (FLAG_E, 1); + inst_psh (0xff, ®_s, reg_u, &cycles); + } + + set_cc (FLAG_I, 1); + + reg_pc = read16 (0xfff8); + irq_status = IRQ_NORMAL; + cycles += 7; + } else { + if (irq_status == IRQ_SYNC) { + irq_status = IRQ_NORMAL; + } + } + } + + if (irq_status != IRQ_NORMAL) { + return cycles + 1; + } + + op = pc_read8 (); + + switch (op) { + /* page 0 instructions */ + + /* neg, nega, negb */ + case 0x00: + ea = ea_direct (); + r = inst_neg (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x40: + reg_a = inst_neg (reg_a); + cycles += 2; + break; + case 0x50: + reg_b = inst_neg (reg_b); + cycles += 2; + break; + case 0x60: + ea = ea_indexed (&cycles); + r = inst_neg (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x70: + ea = ea_extended (); + r = inst_neg (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* com, coma, comb */ + case 0x03: + ea = ea_direct (); + r = inst_com (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x43: + reg_a = inst_com (reg_a); + cycles += 2; + break; + case 0x53: + reg_b = inst_com (reg_b); + cycles += 2; + break; + case 0x63: + ea = ea_indexed (&cycles); + r = inst_com (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x73: + ea = ea_extended (); + r = inst_com (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* lsr, lsra, lsrb */ + case 0x04: + ea = ea_direct (); + r = inst_lsr (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x44: + reg_a = inst_lsr (reg_a); + cycles += 2; + break; + case 0x54: + reg_b = inst_lsr (reg_b); + cycles += 2; + break; + case 0x64: + ea = ea_indexed (&cycles); + r = inst_lsr (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x74: + ea = ea_extended (); + r = inst_lsr (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* ror, rora, rorb */ + case 0x06: + ea = ea_direct (); + r = inst_ror (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x46: + reg_a = inst_ror (reg_a); + cycles += 2; + break; + case 0x56: + reg_b = inst_ror (reg_b); + cycles += 2; + break; + case 0x66: + ea = ea_indexed (&cycles); + r = inst_ror (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x76: + ea = ea_extended (); + r = inst_ror (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* asr, asra, asrb */ + case 0x07: + ea = ea_direct (); + r = inst_asr (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x47: + reg_a = inst_asr (reg_a); + cycles += 2; + break; + case 0x57: + reg_b = inst_asr (reg_b); + cycles += 2; + break; + case 0x67: + ea = ea_indexed (&cycles); + r = inst_asr (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x77: + ea = ea_extended (); + r = inst_asr (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* asl, asla, aslb */ + case 0x08: + ea = ea_direct (); + r = inst_asl (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x48: + reg_a = inst_asl (reg_a); + cycles += 2; + break; + case 0x58: + reg_b = inst_asl (reg_b); + cycles += 2; + break; + case 0x68: + ea = ea_indexed (&cycles); + r = inst_asl (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x78: + ea = ea_extended (); + r = inst_asl (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* rol, rola, rolb */ + case 0x09: + ea = ea_direct (); + r = inst_rol (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x49: + reg_a = inst_rol (reg_a); + cycles += 2; + break; + case 0x59: + reg_b = inst_rol (reg_b); + cycles += 2; + break; + case 0x69: + ea = ea_indexed (&cycles); + r = inst_rol (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x79: + ea = ea_extended (); + r = inst_rol (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* dec, deca, decb */ + case 0x0a: + ea = ea_direct (); + r = inst_dec (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x4a: + reg_a = inst_dec (reg_a); + cycles += 2; + break; + case 0x5a: + reg_b = inst_dec (reg_b); + cycles += 2; + break; + case 0x6a: + ea = ea_indexed (&cycles); + r = inst_dec (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x7a: + ea = ea_extended (); + r = inst_dec (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* inc, inca, incb */ + case 0x0c: + ea = ea_direct (); + r = inst_inc (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x4c: + reg_a = inst_inc (reg_a); + cycles += 2; + break; + case 0x5c: + reg_b = inst_inc (reg_b); + cycles += 2; + break; + case 0x6c: + ea = ea_indexed (&cycles); + r = inst_inc (read8 (ea)); + write8 (ea, r); + cycles += 6; + break; + case 0x7c: + ea = ea_extended (); + r = inst_inc (read8 (ea)); + write8 (ea, r); + cycles += 7; + break; + /* tst, tsta, tstb */ + case 0x0d: + ea = ea_direct (); + inst_tst8 (read8 (ea)); + cycles += 6; + break; + case 0x4d: + inst_tst8 (reg_a); + cycles += 2; + break; + case 0x5d: + inst_tst8 (reg_b); + cycles += 2; + break; + case 0x6d: + ea = ea_indexed (&cycles); + inst_tst8 (read8 (ea)); + cycles += 6; + break; + case 0x7d: + ea = ea_extended (); + inst_tst8 (read8 (ea)); + cycles += 7; + break; + /* jmp */ + case 0x0e: + reg_pc = ea_direct (); + cycles += 3; + break; + case 0x6e: + reg_pc = ea_indexed (&cycles); + cycles += 3; + break; + case 0x7e: + reg_pc = ea_extended (); + cycles += 4; + break; + /* clr */ + case 0x0f: + ea = ea_direct (); + inst_clr (); + write8 (ea, 0); + cycles += 6; + break; + case 0x4f: + inst_clr (); + reg_a = 0; + cycles += 2; + break; + case 0x5f: + inst_clr (); + reg_b = 0; + cycles += 2; + break; + case 0x6f: + ea = ea_indexed (&cycles); + inst_clr (); + write8 (ea, 0); + cycles += 6; + break; + case 0x7f: + ea = ea_extended (); + inst_clr (); + write8 (ea, 0); + cycles += 7; + break; + /* suba */ + case 0x80: + reg_a = inst_sub8 (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x90: + ea = ea_direct (); + reg_a = inst_sub8 (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa0: + ea = ea_indexed (&cycles); + reg_a = inst_sub8 (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb0: + ea = ea_extended (); + reg_a = inst_sub8 (reg_a, read8 (ea)); + cycles += 5; + break; + /* subb */ + case 0xc0: + reg_b = inst_sub8 (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd0: + ea = ea_direct (); + reg_b = inst_sub8 (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe0: + ea = ea_indexed (&cycles); + reg_b = inst_sub8 (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf0: + ea = ea_extended (); + reg_b = inst_sub8 (reg_b, read8 (ea)); + cycles += 5; + break; + /* cmpa */ + case 0x81: + inst_sub8 (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x91: + ea = ea_direct (); + inst_sub8 (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa1: + ea = ea_indexed (&cycles); + inst_sub8 (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb1: + ea = ea_extended (); + inst_sub8 (reg_a, read8 (ea)); + cycles += 5; + break; + /* cmpb */ + case 0xc1: + inst_sub8 (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd1: + ea = ea_direct (); + inst_sub8 (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe1: + ea = ea_indexed (&cycles); + inst_sub8 (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf1: + ea = ea_extended (); + inst_sub8 (reg_b, read8 (ea)); + cycles += 5; + break; + /* sbca */ + case 0x82: + reg_a = inst_sbc (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x92: + ea = ea_direct (); + reg_a = inst_sbc (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa2: + ea = ea_indexed (&cycles); + reg_a = inst_sbc (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb2: + ea = ea_extended (); + reg_a = inst_sbc (reg_a, read8 (ea)); + cycles += 5; + break; + /* sbcb */ + case 0xc2: + reg_b = inst_sbc (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd2: + ea = ea_direct (); + reg_b = inst_sbc (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe2: + ea = ea_indexed (&cycles); + reg_b = inst_sbc (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf2: + ea = ea_extended (); + reg_b = inst_sbc (reg_b, read8 (ea)); + cycles += 5; + break; + /* anda */ + case 0x84: + reg_a = inst_and (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x94: + ea = ea_direct (); + reg_a = inst_and (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa4: + ea = ea_indexed (&cycles); + reg_a = inst_and (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb4: + ea = ea_extended (); + reg_a = inst_and (reg_a, read8 (ea)); + cycles += 5; + break; + /* andb */ + case 0xc4: + reg_b = inst_and (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd4: + ea = ea_direct (); + reg_b = inst_and (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe4: + ea = ea_indexed (&cycles); + reg_b = inst_and (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf4: + ea = ea_extended (); + reg_b = inst_and (reg_b, read8 (ea)); + cycles += 5; + break; + /* bita */ + case 0x85: + inst_and (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x95: + ea = ea_direct (); + inst_and (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa5: + ea = ea_indexed (&cycles); + inst_and (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb5: + ea = ea_extended (); + inst_and (reg_a, read8 (ea)); + cycles += 5; + break; + /* bitb */ + case 0xc5: + inst_and (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd5: + ea = ea_direct (); + inst_and (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe5: + ea = ea_indexed (&cycles); + inst_and (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf5: + ea = ea_extended (); + inst_and (reg_b, read8 (ea)); + cycles += 5; + break; + /* lda */ + case 0x86: + reg_a = pc_read8 (); + inst_tst8 (reg_a); + cycles += 2; + break; + case 0x96: + ea = ea_direct (); + reg_a = read8 (ea); + inst_tst8 (reg_a); + cycles += 4; + break; + case 0xa6: + ea = ea_indexed (&cycles); + reg_a = read8 (ea); + inst_tst8 (reg_a); + cycles += 4; + break; + case 0xb6: + ea = ea_extended (); + reg_a = read8 (ea); + inst_tst8 (reg_a); + cycles += 5; + break; + /* ldb */ + case 0xc6: + reg_b = pc_read8 (); + inst_tst8 (reg_b); + cycles += 2; + break; + case 0xd6: + ea = ea_direct (); + reg_b = read8 (ea); + inst_tst8 (reg_b); + cycles += 4; + break; + case 0xe6: + ea = ea_indexed (&cycles); + reg_b = read8 (ea); + inst_tst8 (reg_b); + cycles += 4; + break; + case 0xf6: + ea = ea_extended (); + reg_b = read8 (ea); + inst_tst8 (reg_b); + cycles += 5; + break; + /* sta */ + case 0x97: + ea = ea_direct (); + write8 (ea, reg_a); + inst_tst8 (reg_a); + cycles += 4; + break; + case 0xa7: + ea = ea_indexed (&cycles); + write8 (ea, reg_a); + inst_tst8 (reg_a); + cycles += 4; + break; + case 0xb7: + ea = ea_extended (); + write8 (ea, reg_a); + inst_tst8 (reg_a); + cycles += 5; + break; + /* stb */ + case 0xd7: + ea = ea_direct (); + write8 (ea, reg_b); + inst_tst8 (reg_b); + cycles += 4; + break; + case 0xe7: + ea = ea_indexed (&cycles); + write8 (ea, reg_b); + inst_tst8 (reg_b); + cycles += 4; + break; + case 0xf7: + ea = ea_extended (); + write8 (ea, reg_b); + inst_tst8 (reg_b); + cycles += 5; + break; + /* eora */ + case 0x88: + reg_a = inst_eor (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x98: + ea = ea_direct (); + reg_a = inst_eor (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa8: + ea = ea_indexed (&cycles); + reg_a = inst_eor (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb8: + ea = ea_extended (); + reg_a = inst_eor (reg_a, read8 (ea)); + cycles += 5; + break; + /* eorb */ + case 0xc8: + reg_b = inst_eor (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd8: + ea = ea_direct (); + reg_b = inst_eor (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe8: + ea = ea_indexed (&cycles); + reg_b = inst_eor (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf8: + ea = ea_extended (); + reg_b = inst_eor (reg_b, read8 (ea)); + cycles += 5; + break; + /* adca */ + case 0x89: + reg_a = inst_adc (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x99: + ea = ea_direct (); + reg_a = inst_adc (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xa9: + ea = ea_indexed (&cycles); + reg_a = inst_adc (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xb9: + ea = ea_extended (); + reg_a = inst_adc (reg_a, read8 (ea)); + cycles += 5; + break; + /* adcb */ + case 0xc9: + reg_b = inst_adc (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xd9: + ea = ea_direct (); + reg_b = inst_adc (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xe9: + ea = ea_indexed (&cycles); + reg_b = inst_adc (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xf9: + ea = ea_extended (); + reg_b = inst_adc (reg_b, read8 (ea)); + cycles += 5; + break; + /* ora */ + case 0x8a: + reg_a = inst_or (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x9a: + ea = ea_direct (); + reg_a = inst_or (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xaa: + ea = ea_indexed (&cycles); + reg_a = inst_or (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xba: + ea = ea_extended (); + reg_a = inst_or (reg_a, read8 (ea)); + cycles += 5; + break; + /* orb */ + case 0xca: + reg_b = inst_or (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xda: + ea = ea_direct (); + reg_b = inst_or (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xea: + ea = ea_indexed (&cycles); + reg_b = inst_or (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xfa: + ea = ea_extended (); + reg_b = inst_or (reg_b, read8 (ea)); + cycles += 5; + break; + /* adda */ + case 0x8b: + reg_a = inst_add8 (reg_a, pc_read8 ()); + cycles += 2; + break; + case 0x9b: + ea = ea_direct (); + reg_a = inst_add8 (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xab: + ea = ea_indexed (&cycles); + reg_a = inst_add8 (reg_a, read8 (ea)); + cycles += 4; + break; + case 0xbb: + ea = ea_extended (); + reg_a = inst_add8 (reg_a, read8 (ea)); + cycles += 5; + break; + /* addb */ + case 0xcb: + reg_b = inst_add8 (reg_b, pc_read8 ()); + cycles += 2; + break; + case 0xdb: + ea = ea_direct (); + reg_b = inst_add8 (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xeb: + ea = ea_indexed (&cycles); + reg_b = inst_add8 (reg_b, read8 (ea)); + cycles += 4; + break; + case 0xfb: + ea = ea_extended (); + reg_b = inst_add8 (reg_b, read8 (ea)); + cycles += 5; + break; + /* subd */ + case 0x83: + set_reg_d (inst_sub16 (get_reg_d (), pc_read16 ())); + cycles += 4; + break; + case 0x93: + ea = ea_direct (); + set_reg_d (inst_sub16 (get_reg_d (), read16 (ea))); + cycles += 6; + break; + case 0xa3: + ea = ea_indexed (&cycles); + set_reg_d (inst_sub16 (get_reg_d (), read16 (ea))); + cycles += 6; + break; + case 0xb3: + ea = ea_extended (); + set_reg_d (inst_sub16 (get_reg_d (), read16 (ea))); + cycles += 7; + break; + /* cmpx */ + case 0x8c: + inst_sub16 (reg_x, pc_read16 ()); + cycles += 4; + break; + case 0x9c: + ea = ea_direct (); + inst_sub16 (reg_x, read16 (ea)); + cycles += 6; + break; + case 0xac: + ea = ea_indexed (&cycles); + inst_sub16 (reg_x, read16 (ea)); + cycles += 6; + break; + case 0xbc: + ea = ea_extended (); + inst_sub16 (reg_x, read16 (ea)); + cycles += 7; + break; + /* ldx */ + case 0x8e: + reg_x = pc_read16 (); + inst_tst16 (reg_x); + cycles += 3; + break; + case 0x9e: + ea = ea_direct (); + reg_x = read16 (ea); + inst_tst16 (reg_x); + cycles += 5; + break; + case 0xae: + ea = ea_indexed (&cycles); + reg_x = read16 (ea); + inst_tst16 (reg_x); + cycles += 5; + break; + case 0xbe: + ea = ea_extended (); + reg_x = read16 (ea); + inst_tst16 (reg_x); + cycles += 6; + break; + /* ldu */ + case 0xce: + reg_u = pc_read16 (); + inst_tst16 (reg_u); + cycles += 3; + break; + case 0xde: + ea = ea_direct (); + reg_u = read16 (ea); + inst_tst16 (reg_u); + cycles += 5; + break; + case 0xee: + ea = ea_indexed (&cycles); + reg_u = read16 (ea); + inst_tst16 (reg_u); + cycles += 5; + break; + case 0xfe: + ea = ea_extended (); + reg_u = read16 (ea); + inst_tst16 (reg_u); + cycles += 6; + break; + /* stx */ + case 0x9f: + ea = ea_direct (); + write16 (ea, reg_x); + inst_tst16 (reg_x); + cycles += 5; + break; + case 0xaf: + ea = ea_indexed (&cycles); + write16 (ea, reg_x); + inst_tst16 (reg_x); + cycles += 5; + break; + case 0xbf: + ea = ea_extended (); + write16 (ea, reg_x); + inst_tst16 (reg_x); + cycles += 6; + break; + /* stu */ + case 0xdf: + ea = ea_direct (); + write16 (ea, reg_u); + inst_tst16 (reg_u); + cycles += 5; + break; + case 0xef: + ea = ea_indexed (&cycles); + write16 (ea, reg_u); + inst_tst16 (reg_u); + cycles += 5; + break; + case 0xff: + ea = ea_extended (); + write16 (ea, reg_u); + inst_tst16 (reg_u); + cycles += 6; + break; + /* addd */ + case 0xc3: + set_reg_d (inst_add16 (get_reg_d (), pc_read16 ())); + cycles += 4; + break; + case 0xd3: + ea = ea_direct (); + set_reg_d (inst_add16 (get_reg_d (), read16 (ea))); + cycles += 6; + break; + case 0xe3: + ea = ea_indexed (&cycles); + set_reg_d (inst_add16 (get_reg_d (), read16 (ea))); + cycles += 6; + break; + case 0xf3: + ea = ea_extended (); + set_reg_d (inst_add16 (get_reg_d (), read16 (ea))); + cycles += 7; + break; + /* ldd */ + case 0xcc: + set_reg_d (pc_read16 ()); + inst_tst16 (get_reg_d ()); + cycles += 3; + break; + case 0xdc: + ea = ea_direct (); + set_reg_d (read16 (ea)); + inst_tst16 (get_reg_d ()); + cycles += 5; + break; + case 0xec: + ea = ea_indexed (&cycles); + set_reg_d (read16 (ea)); + inst_tst16 (get_reg_d ()); + cycles += 5; + break; + case 0xfc: + ea = ea_extended (); + set_reg_d (read16 (ea)); + inst_tst16 (get_reg_d ()); + cycles += 6; + break; + /* std */ + case 0xdd: + ea = ea_direct (); + write16 (ea, get_reg_d ()); + inst_tst16 (get_reg_d ()); + cycles += 5; + break; + case 0xed: + ea = ea_indexed (&cycles); + write16 (ea, get_reg_d ()); + inst_tst16 (get_reg_d ()); + cycles += 5; + break; + case 0xfd: + ea = ea_extended (); + write16 (ea, get_reg_d ()); + inst_tst16 (get_reg_d ()); + cycles += 6; + break; + /* nop */ + case 0x12: + cycles += 2; + break; + /* mul */ + case 0x3d: + r = (reg_a & 0xff) * (reg_b & 0xff); + set_reg_d (r); + + set_cc (FLAG_Z, test_z16 (r)); + set_cc (FLAG_C, (r >> 7) & 1); + + cycles += 11; + break; + /* bra */ + case 0x20: + /* brn */ + case 0x21: + inst_bra8 (0, op, &cycles); + break; + /* bhi */ + case 0x22: + /* bls */ + case 0x23: + inst_bra8 (get_cc (FLAG_C) | get_cc (FLAG_Z), op, &cycles); + break; + /* bhs/bcc */ + case 0x24: + /* blo/bcs */ + case 0x25: + inst_bra8 (get_cc (FLAG_C), op, &cycles); + break; + /* bne */ + case 0x26: + /* beq */ + case 0x27: + inst_bra8 (get_cc (FLAG_Z), op, &cycles); + break; + /* bvc */ + case 0x28: + /* bvs */ + case 0x29: + inst_bra8 (get_cc (FLAG_V), op, &cycles); + break; + /* bpl */ + case 0x2a: + /* bmi */ + case 0x2b: + inst_bra8 (get_cc (FLAG_N), op, &cycles); + break; + /* bge */ + case 0x2c: + /* blt */ + case 0x2d: + inst_bra8 (get_cc (FLAG_N) ^ get_cc (FLAG_V), op, &cycles); + break; + /* bgt */ + case 0x2e: + /* ble */ + case 0x2f: + inst_bra8 (get_cc (FLAG_Z) | + (get_cc (FLAG_N) ^ get_cc (FLAG_V)), op, &cycles); + break; + /* lbra */ + case 0x16: + r = pc_read16 (); + reg_pc += r; + cycles += 5; + break; + /* lbsr */ + case 0x17: + r = pc_read16 (); + push16 (®_s, reg_pc); + reg_pc += r; + cycles += 9; + break; + /* bsr */ + case 0x8d: + r = pc_read8 (); + push16 (®_s, reg_pc); + reg_pc += sign_extend (r); + cycles += 7; + break; + /* jsr */ + case 0x9d: + ea = ea_direct (); + push16 (®_s, reg_pc); + reg_pc = ea; + cycles += 7; + break; + case 0xad: + ea = ea_indexed (&cycles); + push16 (®_s, reg_pc); + reg_pc = ea; + cycles += 7; + break; + case 0xbd: + ea = ea_extended (); + push16 (®_s, reg_pc); + reg_pc = ea; + cycles += 8; + break; + /* leax */ + case 0x30: + reg_x = ea_indexed (&cycles); + set_cc (FLAG_Z, test_z16 (reg_x)); + cycles += 4; + break; + /* leay */ + case 0x31: + reg_y = ea_indexed (&cycles); + set_cc (FLAG_Z, test_z16 (reg_y)); + cycles += 4; + break; + /* leas */ + case 0x32: + reg_s = ea_indexed (&cycles); + cycles += 4; + break; + /* leau */ + case 0x33: + reg_u = ea_indexed (&cycles); + cycles += 4; + break; + /* pshs */ + case 0x34: + inst_psh (pc_read8 (), ®_s, reg_u, &cycles); + cycles += 5; + break; + /* puls */ + case 0x35: + inst_pul (pc_read8 (), ®_s, ®_u, &cycles); + cycles += 5; + break; + /* pshu */ + case 0x36: + inst_psh (pc_read8 (), ®_u, reg_s, &cycles); + cycles += 5; + break; + /* pulu */ + case 0x37: + inst_pul (pc_read8 (), ®_u, ®_s, &cycles); + cycles += 5; + break; + /* rts */ + case 0x39: + reg_pc = pull16 (®_s); + cycles += 5; + break; + /* abx */ + case 0x3a: + reg_x += reg_b & 0xff; + cycles += 3; + break; + /* orcc */ + case 0x1a: + reg_cc |= pc_read8 (); + cycles += 3; + break; + /* andcc */ + case 0x1c: + reg_cc &= pc_read8 (); + cycles += 3; + break; + /* sex */ + case 0x1d: + set_reg_d (sign_extend (reg_b)); + set_cc (FLAG_N, test_n (reg_a)); + set_cc (FLAG_Z, test_z16 (get_reg_d ())); + cycles += 2; + break; + /* exg */ + case 0x1e: + inst_exg (); + cycles += 8; + break; + /* tfr */ + case 0x1f: + inst_tfr (); + cycles += 6; + break; + /* rti */ + case 0x3b: + if (get_cc (FLAG_E)) { + inst_pul (0xff, ®_s, ®_u, &cycles); + } else { + inst_pul (0x81, ®_s, ®_u, &cycles); + } + + cycles += 3; + break; + /* swi */ + case 0x3f: + set_cc (FLAG_E, 1); + inst_psh (0xff, ®_s, reg_u, &cycles); + set_cc (FLAG_I, 1); + set_cc (FLAG_F, 1); + reg_pc = read16 (0xfffa); + cycles += 7; + break; + /* sync */ + case 0x13: + irq_status = IRQ_SYNC; + cycles += 2; + break; + /* daa */ + case 0x19: + i0 = reg_a; + i1 = 0; + + if ((reg_a & 0x0f) > 0x09 || get_cc (FLAG_H) == 1) { + i1 |= 0x06; + } + + if ((reg_a & 0xf0) > 0x80 && (reg_a & 0x0f) > 0x09) { + i1 |= 0x60; + } + + if ((reg_a & 0xf0) > 0x90 || get_cc (FLAG_C) == 1) { + i1 |= 0x60; + } + + reg_a = i0 + i1; + + set_cc (FLAG_N, test_n (reg_a)); + set_cc (FLAG_Z, test_z8 (reg_a)); + set_cc (FLAG_V, 0); + set_cc (FLAG_C, test_c (i0, i1, reg_a, 0)); + cycles += 2; + break; + /* cwai */ + case 0x3c: + reg_cc &= pc_read8 (); + set_cc (FLAG_E, 1); + inst_psh (0xff, ®_s, reg_u, &cycles); + irq_status = IRQ_CWAI; + cycles += 4; + break; + + /* page 1 instructions */ + + case 0x10: + op = pc_read8 (); + + switch (op) { + /* lbra */ + case 0x20: + /* lbrn */ + case 0x21: + inst_bra16 (0, op, &cycles); + break; + /* lbhi */ + case 0x22: + /* lbls */ + case 0x23: + inst_bra16 (get_cc (FLAG_C) | get_cc (FLAG_Z), op, &cycles); + break; + /* lbhs/lbcc */ + case 0x24: + /* lblo/lbcs */ + case 0x25: + inst_bra16 (get_cc (FLAG_C), op, &cycles); + break; + /* lbne */ + case 0x26: + /* lbeq */ + case 0x27: + inst_bra16 (get_cc (FLAG_Z), op, &cycles); + break; + /* lbvc */ + case 0x28: + /* lbvs */ + case 0x29: + inst_bra16 (get_cc (FLAG_V), op, &cycles); + break; + /* lbpl */ + case 0x2a: + /* lbmi */ + case 0x2b: + inst_bra16 (get_cc (FLAG_N), op, &cycles); + break; + /* lbge */ + case 0x2c: + /* lblt */ + case 0x2d: + inst_bra16 (get_cc (FLAG_N) ^ get_cc (FLAG_V), op, &cycles); + break; + /* lbgt */ + case 0x2e: + /* lble */ + case 0x2f: + inst_bra16 (get_cc (FLAG_Z) | + (get_cc (FLAG_N) ^ get_cc (FLAG_V)), op, &cycles); + break; + /* cmpd */ + case 0x83: + inst_sub16 (get_reg_d (), pc_read16 ()); + cycles += 5; + break; + case 0x93: + ea = ea_direct (); + inst_sub16 (get_reg_d (), read16 (ea)); + cycles += 7; + break; + case 0xa3: + ea = ea_indexed (&cycles); + inst_sub16 (get_reg_d (), read16 (ea)); + cycles += 7; + break; + case 0xb3: + ea = ea_extended (); + inst_sub16 (get_reg_d (), read16 (ea)); + cycles += 8; + break; + /* cmpy */ + case 0x8c: + inst_sub16 (reg_y, pc_read16 ()); + cycles += 5; + break; + case 0x9c: + ea = ea_direct (); + inst_sub16 (reg_y, read16 (ea)); + cycles += 7; + break; + case 0xac: + ea = ea_indexed (&cycles); + inst_sub16 (reg_y, read16 (ea)); + cycles += 7; + break; + case 0xbc: + ea = ea_extended (); + inst_sub16 (reg_y, read16 (ea)); + cycles += 8; + break; + /* ldy */ + case 0x8e: + reg_y = pc_read16 (); + inst_tst16 (reg_y); + cycles += 4; + break; + case 0x9e: + ea = ea_direct (); + reg_y = read16 (ea); + inst_tst16 (reg_y); + cycles += 6; + break; + case 0xae: + ea = ea_indexed (&cycles); + reg_y = read16 (ea); + inst_tst16 (reg_y); + cycles += 6; + break; + case 0xbe: + ea = ea_extended (); + reg_y = read16 (ea); + inst_tst16 (reg_y); + cycles += 7; + break; + /* sty */ + case 0x9f: + ea = ea_direct (); + write16 (ea, reg_y); + inst_tst16 (reg_y); + cycles += 6; + break; + case 0xaf: + ea = ea_indexed (&cycles); + write16 (ea, reg_y); + inst_tst16 (reg_y); + cycles += 6; + break; + case 0xbf: + ea = ea_extended (); + write16 (ea, reg_y); + inst_tst16 (reg_y); + cycles += 7; + break; + /* lds */ + case 0xce: + reg_s = pc_read16 (); + inst_tst16 (reg_s); + cycles += 4; + break; + case 0xde: + ea = ea_direct (); + reg_s = read16 (ea); + inst_tst16 (reg_s); + cycles += 6; + break; + case 0xee: + ea = ea_indexed (&cycles); + reg_s = read16 (ea); + inst_tst16 (reg_s); + cycles += 6; + break; + case 0xfe: + ea = ea_extended (); + reg_s = read16 (ea); + inst_tst16 (reg_s); + cycles += 7; + break; + /* sts */ + case 0xdf: + ea = ea_direct (); + write16 (ea, reg_s); + inst_tst16 (reg_s); + cycles += 6; + break; + case 0xef: + ea = ea_indexed (&cycles); + write16 (ea, reg_s); + inst_tst16 (reg_s); + cycles += 6; + break; + case 0xff: + ea = ea_extended (); + write16 (ea, reg_s); + inst_tst16 (reg_s); + cycles += 7; + break; + /* swi2 */ + case 0x3f: + set_cc (FLAG_E, 1); + inst_psh (0xff, ®_s, reg_u, &cycles); + reg_pc = read16 (0xfff4); + cycles += 8; + break; + default: + printf ("unknown page-1 op code: %.2x\n", op); + break; + } + + break; + + /* page 2 instructions */ + + case 0x11: + op = pc_read8 (); + + switch (op) { + /* cmpu */ + case 0x83: + inst_sub16 (reg_u, pc_read16 ()); + cycles += 5; + break; + case 0x93: + ea = ea_direct (); + inst_sub16 (reg_u, read16 (ea)); + cycles += 7; + break; + case 0xa3: + ea = ea_indexed (&cycles); + inst_sub16 (reg_u, read16 (ea)); + cycles += 7; + break; + case 0xb3: + ea = ea_extended (); + inst_sub16 (reg_u, read16 (ea)); + cycles += 8; + break; + /* cmps */ + case 0x8c: + inst_sub16 (reg_s, pc_read16 ()); + cycles += 5; + break; + case 0x9c: + ea = ea_direct (); + inst_sub16 (reg_s, read16 (ea)); + cycles += 7; + break; + case 0xac: + ea = ea_indexed (&cycles); + inst_sub16 (reg_s, read16 (ea)); + cycles += 7; + break; + case 0xbc: + ea = ea_extended (); + inst_sub16 (reg_s, read16 (ea)); + cycles += 8; + break; + /* swi3 */ + case 0x3f: + set_cc (FLAG_E, 1); + inst_psh (0xff, ®_s, reg_u, &cycles); + reg_pc = read16 (0xfff2); + cycles += 8; + break; + default: + printf ("unknown page-2 op code: %.2x\n", op); + break; + } + + break; + + default: + printf ("unknown page-0 op code: %.2x\n", op); + break; + } + + return cycles; +} + diff --git a/MCUME_teensy/teensyvectrex/e6809.h b/MCUME_teensy/teensyvectrex/e6809.h new file mode 100755 index 0000000..43c205f --- /dev/null +++ b/MCUME_teensy/teensyvectrex/e6809.h @@ -0,0 +1,12 @@ +#ifndef __E6809_H +#define __E6809_H + +/* user defined read and write functions */ + +extern unsigned char (*e6809_read8) (unsigned address); +extern void (*e6809_write8) (unsigned address, unsigned char data); + +void e6809_reset (void); +unsigned e6809_sstep (unsigned irq_i, unsigned irq_f); + +#endif \ No newline at end of file diff --git a/MCUME_teensy/teensyvectrex/e8910.c b/MCUME_teensy/teensyvectrex/e8910.c new file mode 100755 index 0000000..3044111 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/e8910.c @@ -0,0 +1,537 @@ +#include +#include +#include +//#include "SDL.h" + +#define SOUND_FREQ 22050 +#define SOUND_SAMPLE 1024 + +/*************************************************************************** + + ay8910.c + + + Emulation of the AY-3-8910 / YM2149 sound chip. + + Based on various code snippets by Ville Hallik, Michael Cuddy, + Tatsuyuki Satoh, Fabrice Frances, Nicola Salmoria. + +***************************************************************************/ + +#define MAX_OUTPUT 0x0fff +//#define MAX_OUTPUT 0x7f + +#define STEP3 1 +#define STEP2 length +#define STEP 2 + + +typedef int INT32; +typedef unsigned int UINT32; +typedef char INT8; +typedef unsigned char UINT8; + +struct AY8910 { + int index; + int ready; + unsigned *Regs; + INT32 lastEnable; + INT32 PeriodA,PeriodB,PeriodC,PeriodN,PeriodE; + INT32 CountA,CountB,CountC,CountN,CountE; + UINT32 VolA,VolB,VolC,VolE; + UINT8 EnvelopeA,EnvelopeB,EnvelopeC; + UINT8 OutputA,OutputB,OutputC,OutputN; + INT8 CountEnv; + UINT8 Hold,Alternate,Attack,Holding; + INT32 RNG; + unsigned int VolTable[32]; + +} PSG; + +/* register id's */ +#define AY_AFINE (0) +#define AY_ACOARSE (1) +#define AY_BFINE (2) +#define AY_BCOARSE (3) +#define AY_CFINE (4) +#define AY_CCOARSE (5) +#define AY_NOISEPER (6) +#define AY_ENABLE (7) +#define AY_AVOL (8) +#define AY_BVOL (9) +#define AY_CVOL (10) +#define AY_EFINE (11) +#define AY_ECOARSE (12) +#define AY_ESHAPE (13) + +#define AY_PORTA (14) +#define AY_PORTB (15) + +void e8910_write(int r, int v) +{ + int old; + + if (PSG.Regs == NULL) return; + PSG.Regs[r] = v; + + /* A note about the period of tones, noise and envelope: for speed reasons,*/ + /* we count down from the period to 0, but careful studies of the chip */ + /* output prove that it instead counts up from 0 until the counter becomes */ + /* greater or equal to the period. This is an important difference when the*/ + /* program is rapidly changing the period to modulate the sound. */ + /* To compensate for the difference, when the period is changed we adjust */ + /* our internal counter. */ + /* Also, note that period = 0 is the same as period = 1. This is mentioned */ + /* in the YM2203 data sheets. However, this does NOT apply to the Envelope */ + /* period. In that case, period = 0 is half as period = 1. */ + switch( r ) + { + case AY_AFINE: + case AY_ACOARSE: + PSG.Regs[AY_ACOARSE] &= 0x0f; + old = PSG.PeriodA; + PSG.PeriodA = (PSG.Regs[AY_AFINE] + 256 * PSG.Regs[AY_ACOARSE]) * STEP3; + if (PSG.PeriodA == 0) PSG.PeriodA = STEP3; + PSG.CountA += PSG.PeriodA - old; + if (PSG.CountA <= 0) PSG.CountA = 1; + break; + case AY_BFINE: + case AY_BCOARSE: + PSG.Regs[AY_BCOARSE] &= 0x0f; + old = PSG.PeriodB; + PSG.PeriodB = (PSG.Regs[AY_BFINE] + 256 * PSG.Regs[AY_BCOARSE]) * STEP3; + if (PSG.PeriodB == 0) PSG.PeriodB = STEP3; + PSG.CountB += PSG.PeriodB - old; + if (PSG.CountB <= 0) PSG.CountB = 1; + break; + case AY_CFINE: + case AY_CCOARSE: + PSG.Regs[AY_CCOARSE] &= 0x0f; + old = PSG.PeriodC; + PSG.PeriodC = (PSG.Regs[AY_CFINE] + 256 * PSG.Regs[AY_CCOARSE]) * STEP3; + if (PSG.PeriodC == 0) PSG.PeriodC = STEP3; + PSG.CountC += PSG.PeriodC - old; + if (PSG.CountC <= 0) PSG.CountC = 1; + break; + case AY_NOISEPER: + PSG.Regs[AY_NOISEPER] &= 0x1f; + old = PSG.PeriodN; + PSG.PeriodN = PSG.Regs[AY_NOISEPER] * STEP3; + if (PSG.PeriodN == 0) PSG.PeriodN = STEP3; + PSG.CountN += PSG.PeriodN - old; + if (PSG.CountN <= 0) PSG.CountN = 1; + break; + case AY_ENABLE: + PSG.lastEnable = PSG.Regs[AY_ENABLE]; + break; + case AY_AVOL: + PSG.Regs[AY_AVOL] &= 0x1f; + PSG.EnvelopeA = PSG.Regs[AY_AVOL] & 0x10; + PSG.VolA = PSG.EnvelopeA ? PSG.VolE : PSG.VolTable[PSG.Regs[AY_AVOL] ? PSG.Regs[AY_AVOL]*2+1 : 0]; + break; + case AY_BVOL: + PSG.Regs[AY_BVOL] &= 0x1f; + PSG.EnvelopeB = PSG.Regs[AY_BVOL] & 0x10; + PSG.VolB = PSG.EnvelopeB ? PSG.VolE : PSG.VolTable[PSG.Regs[AY_BVOL] ? PSG.Regs[AY_BVOL]*2+1 : 0]; + break; + case AY_CVOL: + PSG.Regs[AY_CVOL] &= 0x1f; + PSG.EnvelopeC = PSG.Regs[AY_CVOL] & 0x10; + PSG.VolC = PSG.EnvelopeC ? PSG.VolE : PSG.VolTable[PSG.Regs[AY_CVOL] ? PSG.Regs[AY_CVOL]*2+1 : 0]; + break; + case AY_EFINE: + case AY_ECOARSE: + old = PSG.PeriodE; + PSG.PeriodE = ((PSG.Regs[AY_EFINE] + 256 * PSG.Regs[AY_ECOARSE])) * STEP3; + //if (PSG.PeriodE == 0) PSG.PeriodE = STEP3 / 2; + if (PSG.PeriodE == 0) PSG.PeriodE = STEP3; + PSG.CountE += PSG.PeriodE - old; + if (PSG.CountE <= 0) PSG.CountE = 1; + break; + case AY_ESHAPE: + /* envelope shapes: + C AtAlH + 0 0 x x \___ + + 0 1 x x /___ + + 1 0 0 0 \\\\ + + 1 0 0 1 \___ + + 1 0 1 0 \/\/ + ___ + 1 0 1 1 \ + + 1 1 0 0 //// + ___ + 1 1 0 1 / + + 1 1 1 0 /\/\ + + 1 1 1 1 /___ + + The envelope counter on the AY-3-8910 has 16 steps. On the YM2149 it + has twice the steps, happening twice as fast. Since the end result is + just a smoother curve, we always use the YM2149 behaviour. + */ + PSG.Regs[AY_ESHAPE] &= 0x0f; + PSG.Attack = (PSG.Regs[AY_ESHAPE] & 0x04) ? 0x1f : 0x00; + if ((PSG.Regs[AY_ESHAPE] & 0x08) == 0) + { + /* if Continue = 0, map the shape to the equivalent one which has Continue = 1 */ + PSG.Hold = 1; + PSG.Alternate = PSG.Attack; + } + else + { + PSG.Hold = PSG.Regs[AY_ESHAPE] & 0x01; + PSG.Alternate = PSG.Regs[AY_ESHAPE] & 0x02; + } + PSG.CountE = PSG.PeriodE; + PSG.CountEnv = 0x1f; + PSG.Holding = 0; + PSG.VolE = PSG.VolTable[PSG.CountEnv ^ PSG.Attack]; + if (PSG.EnvelopeA) PSG.VolA = PSG.VolE; + if (PSG.EnvelopeB) PSG.VolB = PSG.VolE; + if (PSG.EnvelopeC) PSG.VolC = PSG.VolE; + break; + case AY_PORTA: + break; + case AY_PORTB: + break; + } +} + +static void +e8910_callback(void *userdata, UINT8 *stream, int length) +{ + (void) userdata; + + int outn; + UINT8* buf1 = stream; + + /* hack to prevent us from hanging when starting filtered outputs */ + if (!PSG.ready) + { + memset(stream, 0, length * sizeof(*stream)); + return; + } + + length = length * 2; + + /* The 8910 has three outputs, each output is the mix of one of the three */ + /* tone generators and of the (single) noise generator. The two are mixed */ + /* BEFORE going into the DAC. The formula to mix each channel is: */ + /* (ToneOn | ToneDisable) & (NoiseOn | NoiseDisable). */ + /* Note that this means that if both tone and noise are disabled, the output */ + /* is 1, not 0, and can be modulated changing the volume. */ + + + /* If the channels are disabled, set their output to 1, and increase the */ + /* counter, if necessary, so they will not be inverted during this update. */ + /* Setting the output to 1 is necessary because a disabled channel is locked */ + /* into the ON state (see above); and it has no effect if the volume is 0. */ + /* If the volume is 0, increase the counter, but don't touch the output. */ + if (PSG.Regs[AY_ENABLE] & 0x01) + { + if (PSG.CountA <= STEP2) PSG.CountA += STEP2; + PSG.OutputA = 1; + } + else if (PSG.Regs[AY_AVOL] == 0) + { + /* note that I do count += length, NOT count = length + 1. You might think */ + /* it's the same since the volume is 0, but doing the latter could cause */ + /* interferencies when the program is rapidly modulating the volume. */ + if (PSG.CountA <= STEP2) PSG.CountA += STEP2; + } + if (PSG.Regs[AY_ENABLE] & 0x02) + { + if (PSG.CountB <= STEP2) PSG.CountB += STEP2; + PSG.OutputB = 1; + } + else if (PSG.Regs[AY_BVOL] == 0) + { + if (PSG.CountB <= STEP2) PSG.CountB += STEP2; + } + if (PSG.Regs[AY_ENABLE] & 0x04) + { + if (PSG.CountC <= STEP2) PSG.CountC += STEP2; + PSG.OutputC = 1; + } + else if (PSG.Regs[AY_CVOL] == 0) + { + if (PSG.CountC <= STEP2) PSG.CountC += STEP2; + } + + /* for the noise channel we must not touch OutputN - it's also not necessary */ + /* since we use outn. */ + if ((PSG.Regs[AY_ENABLE] & 0x38) == 0x38) /* all off */ + if (PSG.CountN <= STEP2) PSG.CountN += STEP2; + + outn = (PSG.OutputN | PSG.Regs[AY_ENABLE]); + + /* buffering loop */ + while (length > 0) + { + unsigned vol; + int left = 2; + /* vola, volb and volc keep track of how long each square wave stays */ + /* in the 1 position during the sample period. */ + + int vola,volb,volc; + vola = volb = volc = 0; + + do + { + int nextevent; + + if (PSG.CountN < left) nextevent = PSG.CountN; + else nextevent = left; + + if (outn & 0x08) + { + if (PSG.OutputA) vola += PSG.CountA; + PSG.CountA -= nextevent; + /* PeriodA is the half period of the square wave. Here, in each */ + /* loop I add PeriodA twice, so that at the end of the loop the */ + /* square wave is in the same status (0 or 1) it was at the start. */ + /* vola is also incremented by PeriodA, since the wave has been 1 */ + /* exactly half of the time, regardless of the initial position. */ + /* If we exit the loop in the middle, OutputA has to be inverted */ + /* and vola incremented only if the exit status of the square */ + /* wave is 1. */ + while (PSG.CountA <= 0) + { + PSG.CountA += PSG.PeriodA; + if (PSG.CountA > 0) + { + PSG.OutputA ^= 1; + if (PSG.OutputA) vola += PSG.PeriodA; + break; + } + PSG.CountA += PSG.PeriodA; + vola += PSG.PeriodA; + } + if (PSG.OutputA) vola -= PSG.CountA; + } + else + { + PSG.CountA -= nextevent; + while (PSG.CountA <= 0) + { + PSG.CountA += PSG.PeriodA; + if (PSG.CountA > 0) + { + PSG.OutputA ^= 1; + break; + } + PSG.CountA += PSG.PeriodA; + } + } + + if (outn & 0x10) + { + if (PSG.OutputB) volb += PSG.CountB; + PSG.CountB -= nextevent; + while (PSG.CountB <= 0) + { + PSG.CountB += PSG.PeriodB; + if (PSG.CountB > 0) + { + PSG.OutputB ^= 1; + if (PSG.OutputB) volb += PSG.PeriodB; + break; + } + PSG.CountB += PSG.PeriodB; + volb += PSG.PeriodB; + } + if (PSG.OutputB) volb -= PSG.CountB; + } + else + { + PSG.CountB -= nextevent; + while (PSG.CountB <= 0) + { + PSG.CountB += PSG.PeriodB; + if (PSG.CountB > 0) + { + PSG.OutputB ^= 1; + break; + } + PSG.CountB += PSG.PeriodB; + } + } + + if (outn & 0x20) + { + if (PSG.OutputC) volc += PSG.CountC; + PSG.CountC -= nextevent; + while (PSG.CountC <= 0) + { + PSG.CountC += PSG.PeriodC; + if (PSG.CountC > 0) + { + PSG.OutputC ^= 1; + if (PSG.OutputC) volc += PSG.PeriodC; + break; + } + PSG.CountC += PSG.PeriodC; + volc += PSG.PeriodC; + } + if (PSG.OutputC) volc -= PSG.CountC; + } + else + { + PSG.CountC -= nextevent; + while (PSG.CountC <= 0) + { + PSG.CountC += PSG.PeriodC; + if (PSG.CountC > 0) + { + PSG.OutputC ^= 1; + break; + } + PSG.CountC += PSG.PeriodC; + } + } + + PSG.CountN -= nextevent; + if (PSG.CountN <= 0) + { + /* Is noise output going to change? */ + if ((PSG.RNG + 1) & 2) /* (bit0^bit1)? */ + { + PSG.OutputN = ~PSG.OutputN; + outn = (PSG.OutputN | PSG.Regs[AY_ENABLE]); + } + + /* The Random Number Generator of the 8910 is a 17-bit shift */ + /* register. The input to the shift register is bit0 XOR bit3 */ + /* (bit0 is the output). This was verified on AY-3-8910 and YM2149 chips. */ + + /* The following is a fast way to compute bit17 = bit0^bit3. */ + /* Instead of doing all the logic operations, we only check */ + /* bit0, relying on the fact that after three shifts of the */ + /* register, what now is bit3 will become bit0, and will */ + /* invert, if necessary, bit14, which previously was bit17. */ + if (PSG.RNG & 1) PSG.RNG ^= 0x24000; /* This version is called the "Galois configuration". */ + PSG.RNG >>= 1; + PSG.CountN += PSG.PeriodN; + } + + left -= nextevent; + } while (left > 0); + + /* update envelope */ + if (PSG.Holding == 0) + { + PSG.CountE -= STEP; + if (PSG.CountE <= 0) + { + do + { + PSG.CountEnv--; + PSG.CountE += PSG.PeriodE; + } while (PSG.CountE <= 0); + + /* check envelope current position */ + if (PSG.CountEnv < 0) + { + if (PSG.Hold) + { + if (PSG.Alternate) + PSG.Attack ^= 0x1f; + PSG.Holding = 1; + PSG.CountEnv = 0; + } + else + { + /* if CountEnv has looped an odd number of times (usually 1), */ + /* invert the output. */ + if (PSG.Alternate && (PSG.CountEnv & 0x20)) + PSG.Attack ^= 0x1f; + + PSG.CountEnv &= 0x1f; + } + } + + PSG.VolE = PSG.VolTable[PSG.CountEnv ^ PSG.Attack]; + /* reload volume */ + if (PSG.EnvelopeA) PSG.VolA = PSG.VolE; + if (PSG.EnvelopeB) PSG.VolB = PSG.VolE; + if (PSG.EnvelopeC) PSG.VolC = PSG.VolE; + } + } + + vol = (vola * PSG.VolA + volb * PSG.VolB + volc * PSG.VolC) / (3 * STEP); + if (--length & 1) *(buf1++) = vol >> 8; + } +} + + +static void +e8910_build_mixer_table() +{ + int i; + double out; + + /* calculate the volume->voltage conversion table */ + /* The AY-3-8910 has 16 levels, in a logarithmic scale (3dB per STEP) */ + /* The YM2149 still has 16 levels for the tone generators, but 32 for */ + /* the envelope generator (1.5dB per STEP). */ + out = MAX_OUTPUT; + for (i = 31;i > 0;i--) + { + PSG.VolTable[i] = (unsigned)(out + 0.5); /* round to nearest */ + out /= 1.188502227; /* = 10 ^ (1.5/20) = 1.5dB */ + } + PSG.VolTable[0] = 0; +} + + +extern unsigned snd_regs[16]; + +void +e8910_init_sound() +{ + // SDL audio stuff + //SDL_AudioSpec reqSpec; + //SDL_AudioSpec givenSpec; + + PSG.Regs = snd_regs; + PSG.RNG = 1; + PSG.OutputA = 0; + PSG.OutputB = 0; + PSG.OutputC = 0; + PSG.OutputN = 0xff; + e8910_build_mixer_table(); + PSG.ready = 1; + + // set up audio buffering + //reqSpec.freq = SOUND_FREQ; // Audio frequency in samples per second + //reqSpec.format = AUDIO_U8; // Audio data format + //reqSpec.channels = 1; // Number of channels: 1 mono, 2 stereo + //reqSpec.samples = SOUND_SAMPLE; // Audio buffer size in samples + //reqSpec.callback = e8910_callback; // Callback function for filling the audio buffer + //reqSpec.userdata = NULL; + /* Open the audio device */ + //if ( SDL_OpenAudio(&reqSpec, &givenSpec) < 0 ){ + // fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError()); + // exit(-1); + //} + +# if 0 + fprintf(stdout, "samples:%d format=%x freq=%d\n", givenSpec.samples, givenSpec.format, givenSpec.freq); +# endif + + // Start playing audio + //SDL_PauseAudio(0); +} + +void +e8910_done_sound() +{ + //SDL_CloseAudio(); +} + diff --git a/MCUME_teensy/teensyvectrex/e8910.h b/MCUME_teensy/teensyvectrex/e8910.h new file mode 100755 index 0000000..5547598 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/e8910.h @@ -0,0 +1,8 @@ +#ifndef __E8910_H +#define __E8910_H + +void e8910_init_sound(); +void e8910_done_sound(); +void e8910_write(int r, int v); + +#endif diff --git a/MCUME_teensy/teensyvectrex/emuapi.cpp b/MCUME_teensy/teensyvectrex/emuapi.cpp new file mode 100644 index 0000000..d90ecb8 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/emuapi.cpp @@ -0,0 +1,1046 @@ +#define KEYMAP_PRESENT 1 + +//extern "C" { + #include "emuapi.h" + #include "iopins.h" +//} + +#include "tft_t_dma.h" +#include "logo.h" +#include "bmpjoy.h" +#include "bmpvbar.h" +#include "bmpvga.h" +#include "bmptft.h" + +#ifndef SD_CS +#define USE_SDFAT 1 +#endif + +#ifdef HAS_I2CKBD +#include +#endif + +#ifdef USE_SDFAT +#include +static SdFatSdio SD; +#else +#include +#endif + +extern TFT_T_DMA tft; +static File file; +static char romspath[64]; +static int16_t calMinX=-1,calMinY=-1,calMaxX=-1,calMaxY=-1; +static bool i2cKeyboardPresent = false; +//const uint16_t deflogo[] = { +// 0x0000,0x0000 +//}; +//static const uint16_t * logo = deflogo; + +#define CALIBRATION_FILE "/cal.cfg" + +#define MAX_FILES 32 +#define MAX_FILENAME_SIZE 28 +#define MAX_MENULINES (MKEY_L9) +#define TEXT_HEIGHT 16 +#define TEXT_WIDTH 8 +#define MENU_FILE_XOFFSET (6*TEXT_WIDTH) +#define MENU_FILE_YOFFSET (2*TEXT_HEIGHT) +#define MENU_FILE_W (MAX_FILENAME_SIZE*TEXT_WIDTH) +#define MENU_FILE_H (MAX_MENULINES*TEXT_HEIGHT) +#define MENU_FILE_BGCOLOR RGBVAL16(0x00,0x00,0x20) +#define MENU_JOYS_YOFFSET (12*TEXT_HEIGHT) +#define MENU_VBAR_XOFFSET (0*TEXT_WIDTH) +#define MENU_VBAR_YOFFSET (MENU_FILE_YOFFSET) + +#define MENU_TFT_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_TFT_YOFFSET (MENU_VBAR_YOFFSET+32) +#define MENU_VGA_XOFFSET (MENU_FILE_XOFFSET+MENU_FILE_W+8) +#define MENU_VGA_YOFFSET (MENU_VBAR_YOFFSET+MENU_FILE_H-32-37) + + +#define MKEY_L1 1 +#define MKEY_L2 2 +#define MKEY_L3 3 +#define MKEY_L4 4 +#define MKEY_L5 5 +#define MKEY_L6 6 +#define MKEY_L7 7 +#define MKEY_L8 8 +#define MKEY_L9 9 +#define MKEY_UP 20 +#define MKEY_DOWN 21 +#define MKEY_JOY 22 +#define MKEY_TFT 23 +#define MKEY_VGA 24 + +const unsigned short menutouchareas[] = { + TAREA_XY,MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, + TAREA_WH,MENU_FILE_W, TEXT_HEIGHT, + TAREA_NEW_COL,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT,TEXT_HEIGHT, + + TAREA_XY,MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET, + TAREA_WH,32,48, + TAREA_NEW_COL, 72,72,8,40, + + TAREA_XY,MENU_TFT_XOFFSET,MENU_TFT_YOFFSET, + TAREA_WH,32,37, + TAREA_NEW_COL, 38,38, + + TAREA_END}; + +const unsigned short menutouchactions[] = { + MKEY_L1,MKEY_L2,MKEY_L3,MKEY_L4,MKEY_L5,MKEY_L6,MKEY_L7,MKEY_L8,MKEY_L9, + MKEY_UP,MKEY_DOWN,ACTION_NONE,MKEY_JOY, + MKEY_TFT,MKEY_VGA}; + + +static bool menuOn=true; +static bool callibrationOn=false; +static int callibrationStep=0; +static bool menuRedraw=true; +static int nbFiles=0; +static int curFile=0; +static int topFile=0; +static char selection[MAX_FILENAME_SIZE+1]=""; +static uint8_t prev_zt=0; + + +static char files[MAX_FILES][MAX_FILENAME_SIZE]; + +static int readNbFiles(void) { + int totalFiles = 0; + File entry; + file = SD.open(romspath); + while ( (true) && (totalFiles= y1) && (yt < y2) && (xt >= x1) && (xt < x2) ) { + *rx = x1; + *ry = y1; + *rw = x2-x1; + *rh = y2-y1; + return (actions[k]); + } + k++; + } + } + } + prev_zt =1; + } else { + prev_zt=0; + } + + return ACTION_NONE; +} + +void toggleMenu(bool on) { + if (on) { + callibrationOn=false; + menuOn=true; + menuRedraw=true; + tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00)); + tft.drawTextNoDma(0,0, TITLE, RGBVAL16(0x00,0xff,0xff), RGBVAL16(0x00,0x00,0xff), true); + tft.drawSpriteNoDma(MENU_VBAR_XOFFSET,MENU_VBAR_YOFFSET,(uint16_t*)bmpvbar); + tft.drawSpriteNoDma(MENU_TFT_XOFFSET,MENU_TFT_YOFFSET,(uint16_t*)bmptft); + tft.drawSpriteNoDma(MENU_VGA_XOFFSET,MENU_VGA_YOFFSET,(uint16_t*)bmpvga); + } else { + menuOn = false; + } +} + + +static void callibrationInit(void) +{ + callibrationOn=true; + menuOn=false; + callibrationStep = 0; + calMinX=0,calMinY=0,calMaxX=0,calMaxY=0; + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration process:", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " Hit the red cross at each corner", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + prev_zt = 1; +} + + +static void readCallibration(void) +{ + char fileBuffer[64]; + File file = SD.open(CALIBRATION_FILE, O_READ); + if (file) { + if ( file.read(fileBuffer, 64) ) { + sscanf(fileBuffer,"%d %d %d %d", &calMinX,&calMinY,&calMaxX,&calMaxY); + } + file.close(); + Serial.println("Current callibration params:"); + Serial.println(calMinX); + Serial.println(calMinY); + Serial.println(calMaxX); + Serial.println(calMaxY); + } + else { + Serial.println("Callibration read error"); + } + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); +} + +static void writeCallibration(void) +{ + tft.callibrateTouch(calMinX,calMinY,calMaxX,calMaxY); + File file = SD.open(CALIBRATION_FILE, O_WRITE | O_CREAT | O_TRUNC); + if (file) { + file.print(calMinX); + file.print(" "); + file.print(calMinY); + file.print(" "); + file.print(calMaxX); + file.print(" "); + file.println(calMaxY); + file.close(); + } + else { + Serial.println("Callibration write error"); + } +} + + +bool callibrationActive(void) +{ + return (callibrationOn); +} + + + +int handleCallibration(uint16_t bClick) { + uint16_t xt=0; + uint16_t yt=0; + uint16_t zt=0; + if (tft.isTouching()) { + if (prev_zt == 0) { + prev_zt = 1; + tft.readRaw(&xt,&yt,&zt); + if (zt < 1000) { + return 0; + } + switch (callibrationStep) + { + case 0: + callibrationStep++; + tft.drawTextNoDma(0,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,0, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMinX += xt; + calMinY += yt; + break; + case 1: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,0, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMinY += yt; + break; + case 2: + callibrationStep++; + tft.drawTextNoDma(TFT_REALWIDTH-8,TFT_REALHEIGHT-16, " ", RGBVAL16(0xff,0xff,0xff), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,TFT_REALHEIGHT-16, "+", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + calMaxX += xt; + calMaxY += yt; + break; + case 3: + tft.fillScreenNoDma(RGBVAL16(0xff,0xff,0xff)); + tft.drawTextNoDma(0,100, " Callibration done!", RGBVAL16(0x00,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + tft.drawTextNoDma(0,116, " (Click center to exit)", RGBVAL16(0xff,0x00,0x00), RGBVAL16(0xff,0xff,0xff), true); + callibrationStep++; + calMinX += xt; + calMaxY += yt; + break; + case 4: + //Serial.println(xt); + //Serial.println(yt); + if ( (xt > (TFT_REALWIDTH/4)) && (xt < (TFT_REALWIDTH*3)/4) + && (yt > (TFT_REALHEIGHT/4)) && (yt < (TFT_REALHEIGHT*3)/4) ) { + calMinX /= 2; + calMinY /= 2; + calMaxX /= 2; + calMaxY /= 2; + writeCallibration(); + toggleMenu(true); + } + else { + callibrationInit(); + } + break; + + } + delay(100); + } + } + else { + prev_zt = 0; + } +} + + + + +bool menuActive(void) +{ + return (menuOn); +} + +int handleMenu(uint16_t bClick) +{ + int action = ACTION_NONE; + + char newpath[80]; + strcpy(newpath, romspath); + strcat(newpath, "/"); + strcat(newpath, selection); + + int rx=0,ry=0,rw=0,rh=0; + char c = captureTouchZone(menutouchareas, menutouchactions, &rx,&ry,&rw,&rh); + + if ( (bClick & MASK_JOY2_BTN) || (c == MKEY_TFT) ) { + File file = SD.open(newpath); + emu_printf(newpath); + if (file.isDirectory()) { + strcpy(romspath,newpath); + curFile = 0; + nbFiles = readNbFiles(); + } + else { + action = ACTION_RUNTFT; + } + menuRedraw=true; + } + else if ( (bClick & MASK_KEY_USER1) || (c == MKEY_VGA) ) { + menuRedraw=true; + action = ACTION_RUNVGA; + } + else if ( (c >= MKEY_L1) && (c <= MKEY_L9) ) { + if ( (topFile+(int)c-1) <= (nbFiles-1) ) + { + curFile = topFile + (int)c -1; + menuRedraw=true; + //tft.drawRectNoDma( rx,ry,rw,rh, KEYBOARD_HIT_COLOR ); + } + } + else if (bClick & MASK_JOY2_UP) { + if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if ( (bClick & MASK_JOY2_RIGHT) || (bClick & MASK_JOY1_RIGHT) || (c == MKEY_UP) ) { + if ((curFile-9)>=0) { + menuRedraw=true; + curFile -= 9; + } else if (curFile!=0) { + menuRedraw=true; + curFile--; + } + } + else if (bClick & MASK_JOY2_DOWN) { + if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_JOY2_LEFT) || (bClick & MASK_JOY1_LEFT) || (c == MKEY_DOWN) ) { + if ((curFile<(nbFiles-9)) && (nbFiles)) { + curFile += 9; + menuRedraw=true; + } + else if ((curFile<(nbFiles-1)) && (nbFiles)) { + curFile++; + menuRedraw=true; + } + } + else if ( (bClick & MASK_KEY_USER2) || (c == MKEY_JOY) ) { + emu_SwapJoysticks(0); + menuRedraw=true; + } + + if (menuRedraw && nbFiles) { + int fileIndex = 0; + tft.drawRectNoDma(MENU_FILE_XOFFSET,MENU_FILE_YOFFSET, MENU_FILE_W, MENU_FILE_H, MENU_FILE_BGCOLOR); +// if (curFile <= (MAX_MENULINES/2-1)) topFile=0; +// else topFile=curFile-(MAX_MENULINES/2); + if (curFile <= (MAX_MENULINES-1)) topFile=0; + else topFile=curFile-(MAX_MENULINES/2); + + //Serial.print("curfile: "); + //Serial.println(curFile); + //Serial.print("topFile: "); + //Serial.println(topFile); + + int i=0; + while (i=nbFiles) { + // no more files + break; + } + char * filename = &files[fileIndex][0]; + if (fileIndex >= topFile) { + if ((i+topFile) < nbFiles ) { + if ((i+topFile)==curFile) { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, RGBVAL16(0xff,0xff,0x00), RGBVAL16(0xff,0x00,0x00), true); + strcpy(selection,filename); + } + else { + tft.drawTextNoDma(MENU_FILE_XOFFSET,i*TEXT_HEIGHT+MENU_FILE_YOFFSET, filename, 0xFFFF, 0x0000, true); + } + } + i++; + } + fileIndex++; + } + + tft.drawSpriteNoDma(0,MENU_JOYS_YOFFSET,(uint16_t*)bmpjoy); + tft.drawTextNoDma(48,MENU_JOYS_YOFFSET+8, (emu_SwapJoysticks(1)?(char*)"SWAP=1":(char*)"SWAP=0"), RGBVAL16(0x00,0xff,0xff), RGBVAL16(0xff,0x00,0x00), false); + menuRedraw=false; + } + + return (action); +} + +char * menuSelection(void) +{ + return (selection); +} + + + + +void emu_init(void) +{ + Serial.begin(115200); + //while (!Serial) {} +#ifdef USE_SDFAT + if (!SD.begin()) { +#else + if (!SD.begin(SD_CS)) { +#endif + emu_printf("SdFat.begin() failed"); + } + strcpy(romspath,ROMSDIR); + nbFiles = readNbFiles(); + + Serial.print("SD initialized, files found: "); + Serial.println(nbFiles); + + emu_InitJoysticks(); + readCallibration(); + + if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) { + callibrationInit(); + } + else + { + toggleMenu(true); + } + +#ifdef HAS_I2CKBD + byte msg[7]={0,0,0,0,0,0,0}; + Wire.begin(); // join i2c bus SDA2/SCL2 + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + msg[i++] = b; + } + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + if ( (msg[0] == 0xff) && (msg[1] == 0xff) && + (msg[2] == 0xff) && (msg[3] == 0xff) && + (msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) { + i2cKeyboardPresent = true; + Serial.println("i2C keyboard found"); + } +#endif +} + + +void emu_printf(char * text) +{ + Serial.println(text); +} + +void emu_printf(int val) +{ + Serial.println(val); +} + +void emu_printi(int val) +{ + Serial.println(val); +} + +void * emu_Malloc(int size) +{ + void * retval = malloc(size); + if (!retval) { + emu_printf("failled to allocate "); + emu_printf(size); + } + else { + emu_printf("could allocate "); + emu_printf(size); + } + + return retval; +} + +void emu_Free(void * pt) +{ + free(pt); +} + + + +int emu_FileOpen(char * filename) +{ + int retval = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileOpen..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) { + retval = 1; + } + else { + emu_printf("FileOpen failed"); + } + return (retval); +} + +int emu_FileRead(char * buf, int size) +{ + unsigned char buffer[256]; + + int remaining = size; + int byteread = 0; + while (remaining >= 256) { + int retval = file.read(buffer, 256); + if (retval>0) { + memcpy(buf,buffer,retval); + buf += retval; + byteread += retval; + remaining -= retval; + } + } + if (remaining) { + int retval = file.read(buffer, remaining); + if (retval>0) { + memcpy(buf,buffer,retval); + byteread += retval; + } + } + return byteread; +} + +unsigned char emu_FileGetc(void) { + unsigned char c; + int retval = file.read(&c, 1); + if (retval != 1) { + emu_printf("emu_FileGetc failed"); + } + return c; +} + + +void emu_FileClose(void) +{ + file.close(); +} + +int emu_FileSize(char * filename) +{ + int filesize=0; + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("FileSize..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + emu_printf("filesize is..."); + filesize = file.size(); + emu_printf(filesize); + file.close(); + } + + return(filesize); +} + +int emu_FileSeek(int seek) +{ + file.seek(seek); + return (seek); +} + +int emu_LoadFile(char * filename, char * buf, int size) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFile..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + filesize = file.size(); + emu_printf(filesize); + + if (size >= filesize) + { + if (emu_FileRead(buf, filesize) != filesize) + { + emu_printf("File read failed"); + } + } + file.close(); + } + + return(filesize); +} + +int emu_LoadFileSeek(char * filename, char * buf, int size, int seek) +{ + int filesize = 0; + + char filepath[80]; + strcpy(filepath, romspath); + strcat(filepath, "/"); + strcat(filepath, filename); + emu_printf("LoadFileSeek..."); + emu_printf(filepath); + + if ((file = SD.open(filepath, O_READ))) + { + file.seek(seek); + emu_printf(size); + if (file.read(buf, size) != size) { + emu_printf("File read failed"); + } + file.close(); + } + + return(filesize); +} + +static int keypadval=0; +static boolean joySwapped = false; +static uint16_t bLastState; +static int xRef; +static int yRef; + + +int emu_ReadAnalogJoyX(int min, int max) +{ + int val = analogRead(PIN_JOY2_A1X); +#if INVX + val = 4095 - val; +#endif + val = val-xRef; + val = ((val*140)/100); + if ( (val > -512) && (val < 512) ) val = 0; + val = val+2048; + return (val*(max-min))/4096; +} + +int emu_ReadAnalogJoyY(int min, int max) +{ + int val = analogRead(PIN_JOY2_A2Y); +#if INVY + val = 4095 - val; +#endif + val = val-yRef; + val = ((val*120)/100); + if ( (val > -512) && (val < 512) ) val = 0; + //val = (val*(max-min))/4096; + val = val+2048; + //return val+(max-min)/2; + return (val*(max-min))/4096; +} + + +static uint16_t readAnalogJoystick(void) +{ + uint16_t joysval = 0; + + int xReading = emu_ReadAnalogJoyX(0,256); + if (xReading > 128) joysval |= MASK_JOY2_LEFT; + else if (xReading < 128) joysval |= MASK_JOY2_RIGHT; + + int yReading = emu_ReadAnalogJoyY(0,256); + if (yReading < 128) joysval |= MASK_JOY2_UP; + else if (yReading > 128) joysval |= MASK_JOY2_DOWN; + +#ifdef PIN_JOY2_BTN + joysval |= (digitalRead(PIN_JOY2_BTN) == HIGH ? 0 : MASK_JOY2_BTN); +#endif + return (joysval); +} + + +int emu_SwapJoysticks(int statusOnly) { + if (!statusOnly) { + if (joySwapped) { + joySwapped = false; + } + else { + joySwapped = true; + } + } + return(joySwapped?1:0); +} + +int emu_GetPad(void) +{ + return(keypadval|((joySwapped?1:0)<<7)); +} + +int emu_ReadKeys(void) +{ + uint16_t retval; + uint16_t j1 = readAnalogJoystick(); + uint16_t j2 = 0; + + // Second joystick +#ifdef PIN_JOY1_1 + if ( digitalRead(PIN_JOY1_1) == LOW ) j2 |= MASK_JOY2_UP; +#endif +#ifdef PIN_JOY1_2 + if ( digitalRead(PIN_JOY1_2) == LOW ) j2 |= MASK_JOY2_DOWN; +#endif +#ifdef PIN_JOY1_3 + if ( digitalRead(PIN_JOY1_3) == LOW ) j2 |= MASK_JOY2_RIGHT; +#endif +#ifdef PIN_JOY1_4 + if ( digitalRead(PIN_JOY1_4) == LOW ) j2 |= MASK_JOY2_LEFT; +#endif +#ifdef PIN_JOY1_BTN + if ( digitalRead(PIN_JOY1_BTN) == LOW ) j2 |= MASK_JOY2_BTN; +#endif + if (joySwapped) { + retval = ((j1 << 8) | j2); + } + else { + retval = ((j2 << 8) | j1); + } + +#ifdef PIN_KEY_USER1 + if ( digitalRead(PIN_KEY_USER1) == LOW ) retval |= MASK_KEY_USER1; +#endif +#ifdef PIN_KEY_USER2 + if ( digitalRead(PIN_KEY_USER2) == LOW ) retval |= MASK_KEY_USER2; +#endif +#ifdef PIN_KEY_USER3 + if ( digitalRead(PIN_KEY_USER3) == LOW ) retval |= MASK_KEY_USER3; +#endif +#ifdef PIN_KEY_USER4 + if ( digitalRead(PIN_KEY_USER4) == LOW ) retval |= MASK_KEY_USER4; +#endif + + //Serial.println(retval,HEX); + + return (retval); +} + +unsigned short emu_DebounceLocalKeys(void) +{ + uint16_t bCurState = emu_ReadKeys(); + uint16_t bClick = bCurState & ~bLastState; + bLastState = bCurState; + + return (bClick); +} + +int emu_ReadI2CKeyboard(void) { + int retval=0; +#ifdef HAS_I2CKBD + if (i2cKeyboardPresent) { + byte msg[7]={0,0,0,0,0,0,0}; + Wire.requestFrom(8, 7); // request 7 bytes from slave device #8 + int i = 0; + int hitindex=-1; + while (Wire.available() && (i<7) ) { // slave may send less than requested + byte b = Wire.read(); // receive a byte + if (b != 0xff) hitindex=i; + msg[i++] = b; + } + + if (hitindex >=0 ) { + /* + Serial.println(msg[0], BIN); + Serial.println(msg[1], BIN); + Serial.println(msg[2], BIN); + Serial.println(msg[3], BIN); + Serial.println(msg[4], BIN); + Serial.println(msg[5], BIN); + Serial.println(msg[6], BIN); + */ + unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8); + //Serial.println(match,HEX); + for (i=0; i=1) && (c <= ACTION_MAXKBDVAL) ) { + + keypadval = c; + keyPressCount = 10; + delay(50); + vkeyRefresh = true; + exitVkbd = true; + } + else if (c == ACTION_EXITKBD) { + vkeyRefresh = true; + exitVkbd = true; + } + } + } + + if (vkeyRefresh) { + vkeyRefresh = false; + tft.drawSpriteNoDma(0,0,(uint16_t*)logo, rx, ry, rw, rh); + } + + if ( (exitVkbd) && (vkbActive) ) { + if (!vkbKeepOn) { + toggleVirtualkeyboard(false); + } + else { + toggleVirtualkeyboard(true); + } + } +} + +int emu_setKeymap(int index) { + if (index) { + } + else { + } +} + + + diff --git a/MCUME_teensy/teensyvectrex/emuapi.h b/MCUME_teensy/teensyvectrex/emuapi.h new file mode 100644 index 0000000..7e5c255 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/emuapi.h @@ -0,0 +1,141 @@ +#ifndef EMUAPI_H +#define EMUAPI_H + +#define INVX 1 +//#define INVY 1 +//#define HAS_SND 1 +//#define CUSTOM_SND 1 +#define HAS_I2CKBD 1 +//#define TIMER_REND 1 + +// Title: < > +#define TITLE " Vectrex Emulator " +#define ROMSDIR "/vectrex" + +#define emu_Init(ROM) {vec_Init(); vec_Start(ROM);} +#define emu_Step(x) {vec_Step();} +#define emu_Input(x) {vec_Input(x);} + +#define PALETTE_SIZE 128 +#define VID_FRAME_SKIP 0x0 +#define TFT_VBUFFER_YCROP 0 +#define SINGLELINE_RENDERING 1 + +#define R32(rgb) ((rgb>>16)&0xff) +#define G32(rgb) ((rgb>>8)&0xff) +#define B32(rgb) (rgb & 0xff) + +#define ACTION_NONE 0 +#define ACTION_MAXKBDVAL 16 +#define ACTION_EXITKBD 128 +#define ACTION_RUNTFT 129 +#define ACTION_RUNVGA 130 + +#ifdef KEYMAP_PRESENT + +#define TAREA_W_DEF 32 +#define TAREA_H_DEF 32 +#define TAREA_END 255 +#define TAREA_NEW_ROW 254 +#define TAREA_NEW_COL 253 +#define TAREA_XY 252 +#define TAREA_WH 251 + +#define KEYBOARD_X 16 +#define KEYBOARD_Y 32 +#define KEYBOARD_KEY_H 30 +#define KEYBOARD_KEY_W 28 +#define KEYBOARD_HIT_COLOR RGBVAL16(0xff,0x00,0x00) + +const unsigned short keysw[]= +{ TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + //TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, + TAREA_END}; + +const unsigned short keys[]={ + +59, 60, 61, 62, 63, 64, 65, 66, 67, 68, +109,110,111,112,106,107,108,17,18,19, +20,21,22,23,24,25,26,27,28,29, +30,31,32,33,34,35,36,37,38,57 }; + + + + +#ifdef HAS_I2CKBD +const unsigned short i2ckeys[] = { + 0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408, + 0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404, + 0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402, + 0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401 }; + //0X0580,0X0540,0X0520,0X0510,0X0508,0X0504,0X0502,0X0501,0X0680,0X0640 }; +#endif + +#endif + + + +#define MASK_JOY2_RIGHT 0x0001 +#define MASK_JOY2_LEFT 0x0002 +#define MASK_JOY2_UP 0x0004 +#define MASK_JOY2_DOWN 0x0008 +#define MASK_JOY2_BTN 0x0010 +#define MASK_KEY_USER1 0x0020 +#define MASK_KEY_USER2 0x0040 +#define MASK_KEY_USER3 0x0080 +#define MASK_JOY1_RIGHT 0x0100 +#define MASK_JOY1_LEFT 0x0200 +#define MASK_JOY1_UP 0x0400 +#define MASK_JOY1_DOWN 0x0800 +#define MASK_JOY1_BTN 0x1000 +#define MASK_KEY_USER4 0x2000 + + + +extern void emu_init(void); +extern void emu_printf(char * text); +extern void emu_printi(int val); +extern void * emu_Malloc(int size); +extern void emu_Free(void * pt); + +extern int emu_FileOpen(char * filename); +extern int emu_FileRead(char * buf, int size); +extern unsigned char emu_FileGetc(void); +extern int emu_FileSeek(int seek); +extern void emu_FileClose(void); +extern int emu_FileSize(char * filename); +extern int emu_LoadFile(char * filename, char * buf, int size); +extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek); +extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index); +extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride); +extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line); +extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line); +extern void emu_DrawVsync(void); +extern int emu_FrameSkip(void); +extern void * emu_LineBuffer(int line); + +extern void emu_InitJoysticks(void); +extern int emu_SwapJoysticks(int statusOnly); +extern unsigned short emu_DebounceLocalKeys(void); +extern int emu_ReadKeys(void); +extern int emu_GetPad(void); +extern int emu_ReadAnalogJoyX(int min, int max); +extern int emu_ReadAnalogJoyY(int min, int max); +extern int emu_ReadI2CKeyboard(void); +extern void emu_sndPlaySound(int chan, int volume, int freq); +extern void emu_sndPlayBuzz(int size, int val); +extern void emu_sndInit(); +extern void emu_resetus(void); +extern int emu_us(void); + +extern int emu_setKeymap(int index); + + +#endif + + + + diff --git a/MCUME_teensy/teensyvectrex/font8x8.h b/MCUME_teensy/teensyvectrex/font8x8.h new file mode 100644 index 0000000..2b2ab25 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/font8x8.h @@ -0,0 +1,135 @@ + +// Font: c64_lower.64c + +PROGMEM const unsigned char font8x8[128][8] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019 + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space) + { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) + { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") + { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) + { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) + { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) + { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) + { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') + { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() + { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) + { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) + { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) + { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) + { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) + { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) + { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) + { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) + { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) + { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) + { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) + { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) + { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) + { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) + { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) + { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//) + { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) + { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) + { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) + { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) + { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) + { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) + { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) + { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) + { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) + { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) + { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) + { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) + { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) + { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) + { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) + { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) + { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) + { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) + { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) + { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) + { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) + { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) + { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) + { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) + { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) + { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) + { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) + { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) + { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) + { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) + { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) + { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) + { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) + { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) + { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) + { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) + { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) + { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) + { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) + { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) + { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) + { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) + { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) + { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) + { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) + { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) + { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) + { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) + { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) + { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) + { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) + { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) + { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) + { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) + { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) + { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) + { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) + { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) + { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) + { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F +}; + diff --git a/MCUME_teensy/teensyvectrex/iopins.h b/MCUME_teensy/teensyvectrex/iopins.h new file mode 100644 index 0000000..4bf4905 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/iopins.h @@ -0,0 +1,92 @@ +#ifndef IOPINS_H +#define IOPINS_H + +//#define OLD_LAYOUT 1 + +#include "tft_t_dma_config.h" + +#ifndef OLD_LAYOUT + +#ifdef ST7789 +// ST7789 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 +#define TFT_TOUCH_INT 255 +#define TFT_DC 9 +#define TFT_CS 255 +#define TFT_RST 23 +#else +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 255 //38 +#define TFT_TOUCH_INT 255 //37 +#define TFT_DC 9 +#define TFT_CS 23 +#define TFT_RST 255 +#endif + + +// SD +#define SD_SCLK 13 +#define SD_MOSI 12 +#define SD_MISO 11 +#define SD_CS BUILTIN_SDCARD + +// I2C keyboard +#define I2C_SCL_IO 19 +#define I2C_SDA_IO 18 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A1 +#define PIN_JOY2_A2Y A2 +#define PIN_JOY2_BTN 17 +#define PIN_KEY_USER1 3 //34 +#define PIN_KEY_USER2 4 //35 +//#define PIN_KEY_USER3 255 +//#define PIN_KEY_USER4 255 + + +#else // OLD LAYOUT!!!! + +#define HAS_VGA 1 + +// ILI9341 +#define TFT_SCLK 13 +#define TFT_MOSI 12 +#define TFT_MISO 11 +#define TFT_TOUCH_CS 38 +#define TFT_TOUCH_INT 37 +#define TFT_DC 9 +#define TFT_CS 10 +#define TFT_RST 255 //connected to 3.3V + +// I2C keyboard +#define I2C_SCL_IO 3 +#define I2C_SDA_IO 4 + +// Analog joystick (primary) for JOY2 and 5 extra buttons +#define PIN_JOY2_A1X A12 +#define PIN_JOY2_A2Y A13 +#define PIN_JOY2_BTN 36 +#define PIN_KEY_USER1 35 +#define PIN_KEY_USER2 34 +#define PIN_KEY_USER3 33 +#define PIN_KEY_USER4 39 + +// Second joystick +#define PIN_JOY1_BTN 30 +#define PIN_JOY1_1 16 +#define PIN_JOY1_2 17 +#define PIN_JOY1_3 18 +#define PIN_JOY1_4 19 +#endif + +#endif + + + + diff --git a/MCUME_teensy/teensyvectrex/keyboard_osd.h b/MCUME_teensy/teensyvectrex/keyboard_osd.h new file mode 100644 index 0000000..062eb4e --- /dev/null +++ b/MCUME_teensy/teensyvectrex/keyboard_osd.h @@ -0,0 +1,20 @@ + +#ifndef keyboard_osd_h_ +#define keyboard_osd_h_ + +extern bool virtualkeyboardIsActive(void); +extern void drawVirtualkeyboard(void); +extern void toggleVirtualkeyboard(bool keepOn); +extern void handleVirtualkeyboard(void); + +extern bool callibrationActive(void); +extern int handleCallibration(uint16_t bClick); + +extern bool menuActive(void); +extern char * menuSelection(void); +extern void toggleMenu(bool on); +extern int handleMenu(uint16_t bClick); + + +#endif + diff --git a/MCUME_teensy/teensyvectrex/logo.h b/MCUME_teensy/teensyvectrex/logo.h new file mode 100644 index 0000000..692a06c --- /dev/null +++ b/MCUME_teensy/teensyvectrex/logo.h @@ -0,0 +1,241 @@ +PROGMEM const uint16_t logo[] = { +0x0140,0x00f0,0x9533,0x5b0b,0x3a07,0x39e7,0x31e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x39a7,0x39a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x39c7,0x39c6,0x31a6,0x31a6,0x3186,0x3165,0x3165,0x3986,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3a07,0x39c7,0x31a6,0x3186,0x3185,0x3186,0x3986,0x4207,0x31c7,0x31c6,0x2986,0x2985,0x31a6,0x3186,0x39e7,0x39e7,0x31a6,0x2985,0x2986,0x3186,0x3186,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x2966,0x2985,0x39c6,0x39c7,0x31a6,0x2986,0x2965,0x2986,0x3186,0x39c7,0x39e7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x39e7,0x39e7,0x39c7,0x3165,0x2965,0x3186,0x3186,0x4207,0x4207,0x39c7,0x3186,0x2986,0x2985,0x3186,0x39e7,0x39e7,0x39e7,0x31a6,0x2986,0x3186,0x3185,0x3a07,0x4207,0x3a07,0x31c6,0x2965,0x3186,0x2986,0x39c7,0x4208,0x39e7,0x31a6,0x2965,0x2985,0x2985,0x39c7,0x39c7,0x39e7,0x31a6,0x3185,0x2965,0x2965,0x31c6,0x3a07,0x39e7,0x31c6,0x2985,0x2965,0x2965,0x39c6,0x4227,0x4248,0x39e7,0x2965,0x3186,0x3185,0x31a6,0x4228,0x4208,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x39e7,0x4207,0x39e7,0x3186,0x2986,0x2986,0x3186,0x4207,0x4208,0x39e7,0x31a6,0x3185,0x3185,0x3186,0x39e7,0x4227,0x3a07,0x31a6,0x2986,0x2985,0x29a6,0x31e7,0x3a07,0x3a07,0x31a6,0x2965,0x3186,0x3186,0x39c7,0x4228,0x4228,0x31a6,0x3185,0x3185,0x3185,0x39c6,0x39e7,0x39e7,0x31c6,0x31a6,0x2986,0x31a6,0x31c6,0x39c6,0x39e7,0x31c6,0x3185,0x31a6,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x3185,0x3186,0x3186,0x39c6,0x39e7,0x2986,0x3186,0x2986,0x2985,0x3185,0x31a6,0x39e7,0x3185,0x3186,0x2986,0x2986,0x2985,0x39c6,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x3186,0x2985,0x2985,0x2985,0x3186,0x31a7,0x2945,0x3186,0x2985,0x3186,0x3185,0x3186,0x31c6,0x2965,0x2985,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x2985,0x2985,0x3186,0x3186,0x31a6,0x39e7,0x2965,0x3186,0x2985,0x2985,0x2985,0x31a6,0x39c7,0x2965,0x3185,0x2965,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x3166,0x3166,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x3206,0x9d53, +0x532b,0x00a0,0x2965,0x2945,0x2145,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2965,0x2965,0x2966,0x2965,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2145,0x2945,0x2125,0x2945,0x39c7,0x31a6,0x2144,0x2145,0x2144,0x2144,0x2965,0x39c6,0x39c6,0x2144,0x1944,0x2145,0x2124,0x3185,0x3a07,0x31c6,0x2144,0x2144,0x2144,0x2124,0x3165,0x4228,0x39e7,0x2164,0x2144,0x2145,0x2145,0x2965,0x39e7,0x3a07,0x2965,0x2124,0x2145,0x2125,0x2945,0x39e7,0x39e7,0x2986,0x2145,0x2945,0x2124,0x2944,0x31a6,0x39c7,0x2965,0x2124,0x2145,0x2145,0x2945,0x39e7,0x39e7,0x3185,0x2124,0x2125,0x2124,0x2144,0x39c6,0x39e7,0x31a6,0x2144,0x2144,0x2124,0x2945,0x39c6,0x39e7,0x31c6,0x2144,0x2145,0x2144,0x2144,0x39c6,0x39e7,0x39a6,0x2945,0x2945,0x2945,0x2144,0x39e6,0x4207,0x39e7,0x2165,0x2144,0x2145,0x2124,0x39c7,0x4a28,0x39e7,0x2965,0x2125,0x2144,0x2124,0x31a6,0x4227,0x3a06,0x2985,0x2124,0x2944,0x2124,0x31a6,0x4227,0x39e7,0x2985,0x2145,0x2145,0x2124,0x3185,0x5288,0x5288,0x31c6,0x2944,0x2945,0x2944,0x2965,0x4248,0x4228,0x39c6,0x2945,0x2945,0x2945,0x2945,0x31c6,0x4227,0x31c6,0x2945,0x2945,0x2945,0x2945,0x39e7,0x4207,0x31c6,0x2945,0x2945,0x2944,0x2944,0x39c6,0x3a07,0x31c6,0x2965,0x2945,0x2945,0x2144,0x39c6,0x4207,0x31a6,0x2945,0x2945,0x2945,0x2124,0x31a6,0x4228,0x39e6,0x2965,0x2964,0x2945,0x2124,0x31a5,0x4207,0x39c6,0x2965,0x2965,0x2145,0x2145,0x2985,0x4207,0x39c6,0x2945,0x2965,0x2965,0x2145,0x2965,0x3a07,0x39c6,0x2944,0x2965,0x2944,0x2144,0x2965,0x39e7,0x39c7,0x2124,0x2945,0x2144,0x2945,0x2944,0x31a6,0x39e7,0x2124,0x2124,0x2144,0x2145,0x2124,0x39c6,0x31a6,0x20e3,0x2945,0x2945,0x2144,0x2124,0x2965,0x31a6,0x2104,0x2144,0x2124,0x2144,0x2144,0x2986,0x31a6,0x18e3,0x2124,0x2124,0x2144,0x2124,0x3186,0x31a6,0x18e3,0x2144,0x2144,0x2144,0x2124,0x2985,0x39e7,0x1903,0x1904,0x2145,0x2145,0x2144,0x2985,0x39c6,0x18e3,0x2104,0x2945,0x2124,0x2124,0x2966,0x39c7,0x18e3,0x2103,0x2944,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2945,0x2945,0x2945,0x2145,0x2145,0x2945,0x2145,0x2125,0x2125,0x2925,0x2945,0x2945,0x2145,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2985,0x0000,0x52ea, +0x2165,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2103,0x1904,0x1924,0x2104,0x2945,0x39c7,0x2985,0x1904,0x2124,0x2124,0x2104,0x2944,0x39a5,0x2964,0x1903,0x1924,0x2124,0x2104,0x3185,0x4227,0x39e6,0x2124,0x2124,0x2104,0x2104,0x3185,0x4227,0x31e6,0x2124,0x2124,0x2124,0x2103,0x2965,0x3a07,0x39e6,0x2124,0x2124,0x2124,0x2104,0x2944,0x4207,0x39c6,0x2124,0x2104,0x2104,0x2104,0x2944,0x39e7,0x39c7,0x2945,0x2104,0x2104,0x2104,0x2944,0x4207,0x39e7,0x2965,0x1904,0x2104,0x2104,0x2124,0x41e7,0x4207,0x2965,0x1904,0x2124,0x2104,0x2125,0x41e7,0x4207,0x3185,0x2124,0x2124,0x2124,0x2104,0x39e7,0x4228,0x31a6,0x2103,0x2124,0x2944,0x4aa8,0x2985,0x39c6,0x39e7,0x31a6,0x31a6,0x31a5,0x31a6,0x4228,0x4a48,0x4228,0x39c7,0x31a6,0x31a6,0x3186,0x39e7,0x4228,0x39e7,0x3185,0x2144,0x2124,0x18e3,0x2944,0x3186,0x2965,0x2124,0x18e3,0x1903,0x2104,0x2945,0x39c6,0x39c6,0x31a6,0x2965,0x2985,0x2965,0x3185,0x4207,0x39e7,0x31a6,0x3185,0x3186,0x31a6,0x3185,0x4207,0x4228,0x39e7,0x31a6,0x31a6,0x31a6,0x3186,0x4207,0x4228,0x39c7,0x31a6,0x3185,0x3185,0x2965,0x31a6,0x39e7,0x39c7,0x3186,0x31a6,0x3186,0x2965,0x39e7,0x4208,0x39c7,0x3186,0x3186,0x3186,0x2965,0x39c6,0x4a48,0x4268,0x4247,0x4227,0x4247,0x4248,0x4aa9,0x52ea,0x52e9,0x52e9,0x52ea,0x4ac9,0x52c8,0x5b2a,0x636b,0x634b,0x5b2a,0x5b0a,0x636c,0x6309,0x3183,0x4228,0x39e7,0x2945,0x2124,0x2124,0x2124,0x2124,0x39e7,0x4207,0x2944,0x2104,0x2124,0x2124,0x2104,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2124,0x1904,0x31a6,0x39e7,0x2924,0x2104,0x2104,0x2124,0x1924,0x2965,0x39e7,0x2124,0x18e3,0x2104,0x2124,0x1903,0x2986,0x39e7,0x2104,0x18e3,0x2104,0x2104,0x1904,0x2985,0x39c6,0x2103,0x2103,0x2124,0x2124,0x18e3,0x2965,0x39e7,0x2124,0x18e3,0x2124,0x2104,0x1903,0x2944,0x39e7,0x2104,0x18c3,0x2124,0x2124,0x2104,0x2965,0x3a07,0x2124,0x10a2,0x2104,0x2104,0x2104,0x2945,0x39c7,0x18e3,0x18c2,0x2104,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1924,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2123,0x2124,0x2124,0x2124,0x2144, +0x1924,0x1903,0x1903,0x1903,0x18e3,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1903,0x1904,0x1903,0x2104,0x2104,0x1903,0x2104,0x1903,0x1903,0x1903,0x2104,0x1903,0x18e3,0x1903,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x18e3,0x1903,0x1903,0x20e3,0x3185,0x39e6,0x2144,0x18e3,0x2104,0x2104,0x20e3,0x3186,0x39c6,0x2944,0x18e3,0x1903,0x2103,0x20e3,0x3185,0x4207,0x2985,0x18e3,0x1904,0x18e4,0x20e3,0x3185,0x4227,0x2985,0x1903,0x1904,0x18e4,0x18e3,0x3185,0x4207,0x31a5,0x1903,0x1903,0x1904,0x18e3,0x2965,0x4207,0x31c6,0x1904,0x18e4,0x18e4,0x18e3,0x2944,0x4207,0x31c6,0x1904,0x1904,0x18e3,0x18c3,0x2945,0x4228,0x39c6,0x2124,0x10e3,0x18e3,0x18e3,0x2924,0x41e7,0x39c7,0x2124,0x18e3,0x1904,0x18e4,0x2124,0x4207,0x4206,0x2965,0x18e3,0x18e4,0x2104,0x2104,0x39e7,0x4207,0x2965,0x18e3,0x1904,0x2124,0x4246,0x1903,0x2104,0x2965,0x31c6,0x39e7,0x39e6,0x4207,0x4228,0x4248,0x4228,0x4208,0x4207,0x41e7,0x4207,0x4207,0x4207,0x39e7,0x39c6,0x3186,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x39c6,0x39c6,0x39c6,0x31a6,0x31a6,0x39c7,0x39c6,0x39e7,0x4208,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x4207,0x4207,0x39e7,0x39e7,0x39c6,0x39c6,0x31a5,0x31a6,0x39e6,0x39e7,0x39e7,0x4208,0x4207,0x39e7,0x39e7,0x4207,0x4207,0x39e7,0x41e7,0x39e7,0x39e7,0x39e7,0x4228,0x4a48,0x4a48,0x4a48,0x4a68,0x4a69,0x4a68,0x4a89,0x5289,0x52aa,0x52a9,0x4a88,0x4a88,0x4a68,0x4a68,0x52a8,0x4a88,0x4a68,0x5b2b,0x8c2c,0x41c2,0x39e7,0x39e7,0x2124,0x2104,0x2104,0x2104,0x1903,0x39e7,0x4207,0x2124,0x18e3,0x1904,0x1904,0x18e3,0x39c6,0x4207,0x2124,0x18e3,0x2104,0x2104,0x18c3,0x3186,0x4207,0x2924,0x18e3,0x1904,0x1903,0x18e3,0x2985,0x39e7,0x2124,0x18c3,0x1904,0x1903,0x10e3,0x2945,0x39e7,0x2944,0x10a2,0x1904,0x18e3,0x18e3,0x2944,0x39e7,0x2944,0x10a2,0x18e4,0x18e3,0x18e3,0x2124,0x41e7,0x2965,0x1082,0x2103,0x2124,0x2124,0x2123,0x31c6,0x2144,0x1082,0x2104,0x1904,0x18e3,0x2104,0x39e7,0x2965,0x0862,0x18e3,0x1903,0x18e3,0x2104,0x39c6,0x2924,0x0861,0x1903,0x2124,0x2124,0x2104,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x2104,0x1903,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x18e3,0x1903,0x2104,0x1904,0x2124, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x39c6,0x39c6,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39e7,0x2124,0x10e3,0x18e3,0x18e3,0x18e3,0x39a6,0x39c6,0x2124,0x18c3,0x18e3,0x18e4,0x18e3,0x39a6,0x3a07,0x2964,0x10c2,0x18e3,0x18e3,0x18e3,0x31a6,0x39e6,0x2965,0x18e3,0x10e3,0x18c3,0x18c3,0x3165,0x39e7,0x2985,0x18c3,0x10c3,0x18e3,0x18c2,0x2965,0x39c6,0x2965,0x10c3,0x10c3,0x18c3,0x18c3,0x2944,0x39e7,0x31a6,0x18e3,0x10c2,0x18c3,0x18c3,0x2104,0x39e6,0x39c6,0x1903,0x10c3,0x18e3,0x18c3,0x2104,0x39e6,0x39c6,0x2124,0x18c3,0x18e3,0x18e3,0x2104,0x39e7,0x39e7,0x2945,0x18e3,0x18e3,0x2103,0x4a67,0x18c2,0x18c3,0x18e3,0x2104,0x2944,0x2965,0x39e7,0x4207,0x4208,0x4208,0x4208,0x4208,0x41e7,0x4207,0x4208,0x4208,0x4207,0x39e7,0x39e7,0x31a6,0x2965,0x2945,0x2944,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x2124,0x2945,0x2965,0x3186,0x3186,0x2965,0x2965,0x2985,0x3165,0x3186,0x3186,0x31a7,0x39c7,0x39c6,0x39e7,0x4208,0x41e7,0x41e7,0x4207,0x4207,0x39e7,0x4207,0x4208,0x4207,0x41e7,0x39e7,0x39c6,0x3185,0x3185,0x31a6,0x39c6,0x39c7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c7,0x39e7,0x4207,0x39e7,0x39c7,0x41e7,0x4208,0x4208,0x4208,0x4208,0x4208,0x4207,0x4207,0x4208,0x4208,0x4208,0x4207,0x39e7,0x39c6,0x39c6,0x39c6,0x2985,0x2944,0x39c6,0x7bc9,0x41e2,0x39c7,0x39e7,0x2124,0x18e3,0x1904,0x1903,0x18e3,0x31a6,0x39e6,0x2124,0x18c3,0x18e3,0x1903,0x18c3,0x3185,0x41e7,0x2944,0x18c3,0x18e3,0x18e3,0x10c2,0x2965,0x3a07,0x2944,0x10a2,0x18e3,0x18e3,0x10c3,0x2945,0x39e7,0x2945,0x10c3,0x18e3,0x18c3,0x10a2,0x2123,0x39e6,0x2965,0x1082,0x18e3,0x18e3,0x18c3,0x2104,0x39e7,0x2985,0x1082,0x18c3,0x10c3,0x18e3,0x18e3,0x39c6,0x3185,0x1082,0x18c3,0x2104,0x2964,0x2103,0x31a6,0x2965,0x0861,0x2104,0x2124,0x2144,0x2104,0x39c7,0x3186,0x0861,0x18c3,0x18c3,0x10c3,0x10c2,0x31a6,0x31a6,0x0861,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x10c2,0x10c3,0x10c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0x3185,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x3186,0x31a6,0x10e3,0x10c2,0x10c3,0x10c2,0x2104,0x39c6,0x31a6,0x2103,0x10c3,0x18c3,0x18c3,0x18e3,0x39a6,0x39c6,0x2124,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x31a6,0x2124,0x10c2,0x10c3,0x10c2,0x18c3,0x3185,0x39e7,0x2965,0x10c2,0x10a2,0x10c2,0x10c2,0x2965,0x31c6,0x2144,0x10c2,0x10c2,0x10a2,0x10a2,0x2945,0x39c6,0x2965,0x10c3,0x10a2,0x10c3,0x10a2,0x2124,0x39c6,0x3185,0x18e3,0x10a2,0x18c3,0x10a2,0x2104,0x39c6,0x3185,0x18e3,0x18c3,0x18c3,0x18a2,0x20e3,0x39e7,0x31c6,0x2124,0x10a2,0x18e3,0x18e3,0x52c8,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x39e7,0x3a07,0x4208,0x4207,0x41e7,0x39e7,0x4207,0x4208,0x4207,0x3a07,0x39e7,0x31a6,0x2965,0x2124,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2945,0x2945,0x2124,0x2944,0x3186,0x31a6,0x31a6,0x39c7,0x39e7,0x39e7,0x39c6,0x4207,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4a48,0x4a48,0x4227,0x4207,0x39e7,0x3185,0x31a5,0x39c6,0x39e7,0x4208,0x4208,0x4208,0x39e7,0x39c6,0x39e7,0x41e8,0x4208,0x4228,0x4228,0x4207,0x39e7,0x4228,0x4a29,0x4229,0x4229,0x4229,0x4208,0x4207,0x4207,0x4207,0x4207,0x41e7,0x39e7,0x39c6,0x31a6,0x3185,0x2124,0x18e3,0x18e3,0x2944,0x6b27,0x41e2,0x39c6,0x39c7,0x2104,0x18c3,0x18e3,0x18e3,0x18c2,0x2985,0x39e6,0x2944,0x10c2,0x18e3,0x18e3,0x18c2,0x2965,0x39e7,0x2945,0x10a2,0x18e3,0x18c3,0x10a2,0x2964,0x39e7,0x2965,0x1082,0x18c3,0x10c3,0x10c2,0x2124,0x39c7,0x2965,0x10a2,0x10c2,0x10c2,0x1082,0x18e3,0x31c5,0x3185,0x1082,0x10c3,0x18c3,0x10c2,0x10c3,0x31a6,0x2965,0x0861,0x10a3,0x10c3,0x10c2,0x10c2,0x31a6,0x31a6,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x31a6,0x3186,0x0861,0x1903,0x2124,0x2965,0x2965,0x31a6,0x39a6,0x1081,0x10a2,0x10c3,0x10c2,0x10a2,0x2965,0x31a6,0x10a2,0x10a2,0x18e3,0x10e3,0x10c3,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10c2,0x10c3,0x10c3,0x10c2,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x10c3, +0x10a3,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x3185,0x2944,0x10a2,0x10a2,0x10c2,0x10a2,0x2104,0x2986,0x2145,0x10c3,0x10a2,0x10a2,0x10a2,0x1904,0x31a6,0x3185,0x18e3,0x10a2,0x10a3,0x10a2,0x18e3,0x39a6,0x31a6,0x18e3,0x10a2,0x10a2,0x10c2,0x18e3,0x31a6,0x3185,0x18e3,0x10a2,0x10c2,0x10a2,0x10c2,0x31a5,0x39e6,0x2144,0x10a2,0x10c3,0x10c3,0x10a2,0x3185,0x31a6,0x2104,0x08a2,0x10a2,0x10a2,0x10a2,0x2965,0x39c6,0x2965,0x10a2,0x10a2,0x10a2,0x1082,0x2144,0x39c6,0x2965,0x18c2,0x10a2,0x10a3,0x10a2,0x2104,0x31a6,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x1903,0x39c6,0x2965,0x18e3,0x10c2,0x10c3,0x18e3,0x4a87,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x1903,0x2924,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2144,0x2144,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x2104,0x2124,0x2104,0x2104,0x2144,0x2945,0x2945,0x2965,0x2965,0x2965,0x2964,0x2985,0x3185,0x3185,0x3185,0x3185,0x31a5,0x3185,0x31a6,0x31a6,0x31a6,0x31a6,0x31a5,0x3185,0x2964,0x3185,0x31a5,0x31a6,0x39c6,0x39c7,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x39e6,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4207,0x4228,0x4207,0x4207,0x3a07,0x39e6,0x3185,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2944,0x7389,0x5263,0x31a6,0x31a6,0x2104,0x10a2,0x18e3,0x18e3,0x10a2,0x2985,0x31c6,0x2124,0x10c3,0x18e3,0x18e3,0x10a2,0x2165,0x31c6,0x2944,0x1082,0x10c2,0x18c3,0x10a2,0x2124,0x3a07,0x3185,0x1082,0x10c3,0x10c3,0x10a2,0x2103,0x31a6,0x2985,0x1081,0x10a2,0x10c2,0x10a2,0x18c3,0x31a6,0x2965,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x2985,0x2103,0x0861,0x10a2,0x10c2,0x10a2,0x10a2,0x31a5,0x31a6,0x10a2,0x1082,0x10a3,0x10a3,0x10a2,0x3185,0x3185,0x1082,0x10a2,0x18e3,0x18e3,0x18e3,0x2965,0x39a6,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x2124,0x31a5,0x18c2,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c3, +0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2985,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x3186,0x2945,0x10c2,0x1082,0x10a2,0x10a2,0x20e3,0x31a6,0x3186,0x18c3,0x1082,0x10a2,0x10a2,0x18e3,0x31a6,0x2985,0x18e3,0x0882,0x10a2,0x10a2,0x10c2,0x31a5,0x3185,0x1903,0x1082,0x10a2,0x10a3,0x10a2,0x2965,0x2985,0x1903,0x1082,0x1082,0x10a2,0x10a2,0x3185,0x39c6,0x2924,0x1082,0x1082,0x10a2,0x1082,0x2924,0x3185,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2965,0x18c3,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x10c3,0x10c2,0x3a06,0x10a2,0x18c2,0x18c3,0x18c3,0x20e3,0x18c3,0x18a2,0x18a3,0x18c3,0x2124,0x18e3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x2124,0x18e3,0x18e3,0x18c3,0x10a2,0x10c2,0x18c3,0x10a2,0x18c3,0x10c2,0x18c2,0x18c2,0x18c3,0x18c2,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x2103,0x2103,0x2103,0x2103,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x2104,0x2104,0x2104,0x2103,0x2103,0x2123,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2944,0x2944,0x2944,0x2944,0x2944,0x2103,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2124,0x7bcb,0x62c3,0x2965,0x31a6,0x2124,0x10a2,0x18e3,0x18c3,0x10a2,0x2965,0x31a6,0x2104,0x10c3,0x10e3,0x10e3,0x10a2,0x2145,0x31a6,0x2124,0x10a2,0x10c2,0x10c3,0x10c2,0x2103,0x39c6,0x2965,0x10a2,0x10c2,0x10c3,0x10a2,0x18e3,0x31a6,0x3185,0x1081,0x10a2,0x10a2,0x10a2,0x10c2,0x3185,0x2965,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x2965,0x2104,0x1062,0x10a2,0x10c2,0x10a2,0x1082,0x2985,0x39c6,0x18e3,0x1082,0x10a2,0x10a2,0x1082,0x2964,0x3185,0x10a2,0x0861,0x10a2,0x10a2,0x0861,0x2965,0x31a6,0x18c3,0x1081,0x10a2,0x10a2,0x0882,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2, +0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x18e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2124,0x2985,0x2124,0x10a2,0x10c2,0x10a2,0x10a2,0x2104,0x3165,0x2945,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x31a6,0x2945,0x18a2,0x1082,0x10a2,0x10a2,0x18e3,0x3185,0x2964,0x10c2,0x08a2,0x10a2,0x10a2,0x10e3,0x31a5,0x3185,0x18e3,0x10a2,0x10a2,0x10a2,0x10c2,0x2144,0x2964,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x2965,0x3185,0x2104,0x1082,0x10a2,0x10a2,0x10a2,0x2944,0x3185,0x2124,0x08a2,0x10a2,0x10a2,0x10a2,0x2104,0x3185,0x2944,0x10c2,0x10a2,0x10a2,0x1082,0x2104,0x31a6,0x2965,0x18e3,0x10a2,0x18c3,0x10c2,0x31a5,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x18c3,0x10a2,0x18c3,0x18c3,0x2104,0x2103,0x10a2,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18e3,0x18c3,0x18c3,0x2124,0x18e3,0x20e3,0x18c3,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x20e3,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18c2,0x18c3,0x18c3,0x2104,0x6327,0x5ac3,0x3186,0x31c6,0x2103,0x10a2,0x18c3,0x18e3,0x18c3,0x2945,0x31a6,0x2104,0x10a2,0x18c3,0x18c3,0x10c2,0x2124,0x31a6,0x2944,0x10a2,0x10c3,0x18c3,0x10c2,0x2123,0x31c6,0x2965,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x31a6,0x3186,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x31a6,0x2985,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x2965,0x2965,0x10a2,0x10a2,0x10c2,0x10c2,0x1082,0x2965,0x39e7,0x1904,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x3185,0x18e3,0x0861,0x10a2,0x10a2,0x0882,0x2144,0x31a6,0x1903,0x0861,0x10a2,0x10a2,0x0882,0x1903,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2, +0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x08a2,0x0882,0x0882,0x1082,0x1082,0x0881,0x0881,0x1082,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2124,0x10e3,0x08a2,0x10a2,0x10a2,0x10a2,0x2144,0x3185,0x1903,0x10a2,0x10a2,0x10a2,0x10a2,0x2103,0x3165,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x20e4,0x3186,0x2124,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x39c6,0x2944,0x10a2,0x10a2,0x10c3,0x18c3,0x18e3,0x3185,0x3185,0x1903,0x10a2,0x10a2,0x10c2,0x10a2,0x2945,0x2965,0x10c2,0x10a2,0x10c3,0x10a2,0x10a2,0x2965,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x2965,0x2124,0x10a2,0x10a2,0x18c3,0x18a2,0x2924,0x3185,0x2124,0x18c3,0x10a2,0x18c3,0x10a2,0x1904,0x3186,0x2145,0x18c3,0x10a2,0x18c2,0x18c2,0x2123,0x18c2,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2104,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x2103,0x18c2,0x18c2,0x18c3,0x18c2,0x18c3,0x18a2,0x18a2,0x18e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c2,0x10a2,0x18c2,0x2104,0x18e3,0x18e3,0x18c3,0x2124,0x18c3,0x2124,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x10a2,0x18c2,0x18e3,0x18a2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x62e6,0x5aa3,0x2965,0x2985,0x2123,0x10c2,0x18e3,0x18e4,0x18c3,0x2124,0x3186,0x2104,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x10a2,0x18c3,0x18e3,0x18c3,0x2104,0x31a6,0x2965,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x3186,0x2945,0x1082,0x10a2,0x10c3,0x10c3,0x10c2,0x31a6,0x3185,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e3,0x1081,0x10c2,0x10c3,0x10a2,0x2964,0x31a6,0x18e3,0x1082,0x10a3,0x10a3,0x10a3,0x2104,0x2965,0x18e3,0x0881,0x10a2,0x18c3,0x10a2,0x2103,0x3185,0x2103,0x0861,0x10a2,0x10a3,0x10a2,0x18e3,0x2985,0x1903,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e4,0x2104,0x18c3,0x10c2,0x10c3,0x10c2,0x10a2,0x2944,0x3185,0x2104,0x1082,0x10c2,0x10c3,0x10a2,0x2124,0x3185,0x2104,0x10a2,0x10c3,0x18c3,0x18a2,0x20e4,0x2945,0x1904,0x10a2,0x18c3,0x10c3,0x10c3,0x2124,0x39c6,0x2124,0x18c3,0x18c3,0x18c3,0x18a2,0x2103,0x3185,0x2985,0x2103,0x10a2,0x18c3,0x18e3,0x18e3,0x2944,0x2965,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x2965,0x2965,0x2103,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x2965,0x1903,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2124,0x18e3,0x18e3,0x1903,0x18c3,0x1903,0x2945,0x2144,0x18e3,0x18c3,0x18e3,0x18e3,0x18e2,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x18c2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x18e3,0x18c2,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x18c3,0x10a2,0x1082,0x18a2,0x18c3,0x18e3,0x2103,0x18e3,0x18c3,0x18c2,0x18c3,0x2104,0x2104,0x10a2,0x18c2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x6328,0x6b24,0x2144,0x31a6,0x2144,0x18e3,0x2104,0x2104,0x1904,0x2124,0x2986,0x2124,0x10c2,0x2124,0x2124,0x2103,0x2124,0x3186,0x2944,0x10a2,0x1903,0x2104,0x18e3,0x2124,0x3186,0x2124,0x10a2,0x18e3,0x1903,0x18e3,0x18c3,0x2965,0x2966,0x10a2,0x10c3,0x18e3,0x10e3,0x10c2,0x2965,0x2965,0x10c2,0x10a2,0x1903,0x18e3,0x10c2,0x2124,0x2986,0x18e3,0x10a2,0x18e3,0x1904,0x10c2,0x2964,0x3185,0x18e3,0x1082,0x18c3,0x18e4,0x18c3,0x2104,0x2985,0x20e3,0x0882,0x18c3,0x18e3,0x10c3,0x2103,0x31a5,0x2124,0x0861,0x10a3,0x18c3,0x10a3,0x18e3,0x2965,0x18e3,0x0881,0x10c2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x18e3,0x18c3,0x10c3,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c3,0x10c2,0x10c2,0x18e3, +0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10a2,0x10a2,0x10c2,0x10c3,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2124,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x2124,0x2965,0x18e4,0x10a3,0x18e3,0x18e3,0x10a2,0x2124,0x3165,0x2104,0x10c3,0x18e3,0x18e3,0x18c3,0x2124,0x3186,0x1904,0x18c3,0x1904,0x18e3,0x18e3,0x2124,0x31a6,0x2124,0x1903,0x2125,0x2104,0x18e3,0x2104,0x3185,0x2965,0x18e3,0x18e3,0x2104,0x1904,0x18e3,0x2144,0x2965,0x18e3,0x18c3,0x2124,0x2104,0x18c3,0x3185,0x39e7,0x2924,0x2104,0x2104,0x2104,0x18e4,0x2145,0x2985,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2965,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2124,0x1903,0x1904,0x2104,0x18e3,0x18e1,0x18c3,0x18c3,0x10a2,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0861,0x10a2,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x18e3,0x18a2,0x18e3,0x2104,0x18e3,0x10a2,0x1082,0x0861,0x18c3,0x2104,0x2924,0x2124,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2103,0x18a2,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x18e3,0x2104,0x18a2,0x18c3,0x0861,0x0861,0x18c3,0x18e3,0x20e3,0x20e3,0x20e4,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x10a2,0x10a2,0x18e3,0x18c2,0x18e3,0x18c3,0x18c3,0x18c3,0x20e3,0x5ac7,0x7ba4,0x2144,0x29a6,0x2124,0x1903,0x2145,0x2145,0x2144,0x2124,0x2986,0x2124,0x10c3,0x2965,0x2965,0x1904,0x2124,0x2965,0x2124,0x18c3,0x2144,0x2144,0x2104,0x2104,0x2965,0x2965,0x18e3,0x1904,0x2124,0x2124,0x2104,0x2965,0x2965,0x18c3,0x18e3,0x2124,0x1904,0x18e3,0x2965,0x2965,0x10c2,0x10c3,0x2124,0x1904,0x18e3,0x2124,0x2985,0x18e3,0x18c3,0x1904,0x2104,0x18e3,0x2965,0x31a6,0x18e3,0x10a2,0x18e3,0x1904,0x18e3,0x2104,0x2985,0x2104,0x1082,0x2104,0x2104,0x18e3,0x2124,0x31a6,0x2124,0x0862,0x18e3,0x18e4,0x18c3,0x18e3,0x2965,0x2104,0x1082,0x18e3,0x2104,0x18e3,0x18c3,0x18e3,0x10c3,0x10a2,0x10a2,0x18e3,0x18e3,0x10c3,0x10a2,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x10c2,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x10c2,0x10c3,0x18e3,0x18c3,0x10c2,0x18c3,0x18e3,0x18c3,0x10c3,0x18e3, +0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18e3,0x18c3,0x10a2,0x10c3,0x18c3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e4,0x18e3,0x2124,0x2124,0x18e3,0x2945,0x2124,0x18e3,0x18e3,0x2945,0x2965,0x2104,0x2104,0x2124,0x2104,0x18c3,0x2944,0x31a6,0x2144,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2945,0x18e3,0x18e3,0x2124,0x2124,0x1904,0x2124,0x31a6,0x2145,0x2104,0x2945,0x2945,0x2945,0x2104,0x3186,0x2965,0x2144,0x2965,0x2965,0x2145,0x18e3,0x2944,0x2985,0x2104,0x2144,0x2965,0x2986,0x2104,0x3185,0x41e6,0x3185,0x2945,0x29a6,0x2165,0x2124,0x2145,0x3185,0x2124,0x2985,0x31a6,0x2986,0x2965,0x2124,0x3185,0x2124,0x2945,0x3186,0x2966,0x3186,0x2124,0x2965,0x2945,0x2104,0x2966,0x2965,0x2945,0x18e2,0x18a3,0x18a2,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x1082,0x0861,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x18e3,0x2104,0x18e3,0x10a2,0x18c3,0x18a2,0x18e3,0x2124,0x18e3,0x18c2,0x1081,0x1082,0x18e3,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18e3,0x18e3,0x2124,0x18a3,0x18c3,0x0841,0x18c3,0x2124,0x2945,0x2965,0x2965,0x2945,0x2944,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2945,0x2124,0x18c3,0x18c2,0x18e3,0x18e3,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4225,0x6b24,0x2965,0x3186,0x2104,0x2124,0x31c6,0x31a6,0x2965,0x2144,0x31a6,0x2145,0x1904,0x2965,0x2965,0x2986,0x2124,0x3186,0x2145,0x2104,0x3186,0x2965,0x2965,0x2124,0x3186,0x3186,0x1903,0x2144,0x2145,0x2945,0x2945,0x2965,0x2965,0x18e3,0x2145,0x2145,0x2945,0x2124,0x2945,0x3186,0x18c3,0x1904,0x2965,0x2945,0x2124,0x2965,0x31a6,0x18e3,0x2104,0x2124,0x2965,0x2104,0x2945,0x31c7,0x2104,0x18e3,0x2144,0x2145,0x2144,0x2124,0x3186,0x2104,0x10a2,0x2124,0x2965,0x2124,0x2124,0x31a6,0x2145,0x10a3,0x2125,0x2125,0x2124,0x2104,0x2965,0x2124,0x1082,0x2124,0x2124,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x2104,0x2144,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x1903,0x2104,0x2104,0x1904,0x18e3,0x1904,0x1903,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x18e3,0x18e3,0x18e3, +0x18e3,0x18e3,0x18c3,0x18e3,0x18e4,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x1903,0x18e3,0x2124,0x1903,0x1903,0x2104,0x1904,0x2104,0x2104,0x2124,0x1904,0x2144,0x2144,0x1904,0x1903,0x2104,0x2104,0x2124,0x2125,0x1903,0x2965,0x2965,0x1904,0x2124,0x2945,0x2144,0x18e3,0x2965,0x2985,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x31a6,0x2145,0x1904,0x2165,0x2965,0x2104,0x2104,0x2945,0x2124,0x2124,0x2965,0x2965,0x2145,0x2124,0x2986,0x2145,0x2144,0x2965,0x2965,0x2986,0x2124,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2104,0x2124,0x2965,0x2124,0x2965,0x31a6,0x31c6,0x2124,0x3185,0x39a6,0x2965,0x31a6,0x29a6,0x29a6,0x2165,0x2965,0x3186,0x2945,0x3186,0x39c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2966,0x39c7,0x31a7,0x2966,0x2104,0x3186,0x2965,0x2945,0x31a6,0x2986,0x39e7,0x18e2,0x18c3,0x18a2,0x18a3,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x18e3,0x2104,0x20e4,0x18e4,0x2104,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x10a2,0x18c2,0x10a2,0x18c3,0x2124,0x18c3,0x10c2,0x1082,0x1082,0x18e3,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2944,0x18e3,0x2103,0x2103,0x18e3,0x10a2,0x18e3,0x18e3,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3186,0x3186,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2965,0x2945,0x18e3,0x18e3,0x18e3,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4206,0x62e6,0x2945,0x3186,0x2104,0x2145,0x3186,0x2965,0x2945,0x2945,0x31c6,0x2945,0x2104,0x2985,0x2965,0x3186,0x2965,0x3186,0x2945,0x2124,0x2965,0x2985,0x2965,0x2144,0x31a6,0x31a6,0x2944,0x2944,0x2965,0x2965,0x2924,0x2965,0x3186,0x2104,0x2945,0x2145,0x2145,0x2124,0x2965,0x3186,0x2104,0x2124,0x2965,0x3186,0x2945,0x2124,0x31a6,0x2124,0x2124,0x2965,0x2965,0x2124,0x2945,0x39c7,0x2124,0x2104,0x2965,0x2945,0x2124,0x2124,0x3186,0x2124,0x18e3,0x2945,0x2945,0x2945,0x2124,0x31a6,0x2965,0x18c3,0x2145,0x2945,0x2965,0x2104,0x2965,0x2945,0x18e3,0x2144,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2144,0x2124,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x1924,0x1903,0x2145,0x2124,0x1904,0x1904,0x2124,0x1904,0x1904,0x1903,0x2104,0x18e3,0x2104,0x2124,0x1904,0x1903,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x2104,0x1903,0x1903,0x18e3,0x18e3,0x2104,0x1904,0x2104,0x2104,0x1904,0x2104,0x2104,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2145,0x1904,0x1904,0x2104,0x2124,0x2145,0x2124,0x2124,0x2965,0x31a6,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2965,0x29a6,0x2145,0x2124,0x2965,0x2124,0x2165,0x2985,0x2185,0x2124,0x2124,0x2945,0x2124,0x2944,0x2985,0x2985,0x2165,0x2124,0x2965,0x2145,0x2144,0x2965,0x2965,0x2965,0x2125,0x2945,0x2965,0x2965,0x2986,0x2986,0x3186,0x2945,0x2124,0x2965,0x2124,0x2965,0x2965,0x2985,0x2124,0x2124,0x2945,0x2144,0x2986,0x2986,0x2986,0x2145,0x2124,0x2965,0x2124,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2985,0x2144,0x2965,0x31a6,0x2986,0x2966,0x2144,0x2145,0x2945,0x2986,0x31a6,0x2985,0x3186,0x18c2,0x18a2,0x18a3,0x10a2,0x18a3,0x2104,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x1082,0x1082,0x18c3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1924,0x1924,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x18e3,0x2104,0x3164,0x2944,0x2104,0x3144,0x2924,0x2124,0x2104,0x2124,0x2924,0x3164,0x2945,0x2124,0x2103,0x2104,0x2104,0x18e3,0x10a2,0x18e3,0x20e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3185,0x3165,0x2945,0x2924,0x2124,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2944,0x20e3,0x18e3,0x2103,0x18c3,0x10a2,0x18a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x4207,0x62c9,0x2945,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2966,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2144,0x3186,0x2986,0x2965,0x2965,0x2965,0x2945,0x31a6,0x2945,0x3185,0x2965,0x2124,0x2145,0x2986,0x2145,0x2965,0x2945,0x2145,0x2145,0x2145,0x2945,0x2124,0x2124,0x2945,0x2965,0x2144,0x2104,0x2945,0x2145,0x2945,0x2144,0x2945,0x2965,0x2945,0x2965,0x2124,0x2965,0x2945,0x2144,0x2965,0x2124,0x2965,0x2124,0x2124,0x2144,0x2145,0x2945,0x2124,0x2145,0x2124,0x18e3,0x2124,0x2145,0x2145,0x2145,0x2145,0x2144,0x1904,0x2124,0x2124,0x2124,0x2104,0x1903,0x2104,0x2104,0x2965,0x2145,0x2144,0x2145,0x2144,0x2145,0x2124,0x1924,0x10e3,0x2165,0x2124,0x1903,0x1904,0x1904,0x1904,0x18e3,0x2104,0x1903,0x2104,0x2124,0x2945,0x1904,0x1904,0x2124,0x1903,0x1904,0x1904,0x1903,0x2104, +0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x1904,0x18e3,0x2104,0x2104,0x18e4,0x2104,0x1904,0x18e4,0x1904,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2965,0x2985,0x2144,0x1924,0x2124,0x2124,0x1904,0x2124,0x2965,0x3186,0x2124,0x2125,0x2125,0x2124,0x2945,0x2965,0x2965,0x2124,0x1904,0x1904,0x1904,0x2125,0x2966,0x2986,0x2965,0x2145,0x2124,0x2945,0x2985,0x2985,0x2986,0x2965,0x2124,0x2124,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2144,0x2145,0x2985,0x2945,0x2965,0x2965,0x2966,0x3186,0x2945,0x2966,0x31a6,0x2986,0x2985,0x2965,0x2124,0x2965,0x2986,0x2986,0x2144,0x2965,0x2144,0x2145,0x2966,0x2166,0x2165,0x2965,0x2165,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x29a6,0x31c7,0x31a6,0x31c7,0x31c6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x2965,0x2145,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x1944,0x21a6,0x2144,0x21a6,0x21a6,0x2145,0x21a6,0x21a6,0x2145,0x21a6,0x21c6,0x2145,0x2185,0x1944,0x18e3,0x18e3,0x1082,0x10a2,0x10a2,0x18c3,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x39a4,0x6b04,0x62c3,0x4a04,0x62e4,0x5a64,0x41c4,0x41e4,0x4a05,0x5264,0x6ae4,0x41c4,0x41e4,0x4a03,0x2123,0x2104,0x18e3,0x10a2,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x3965,0x5185,0x3944,0x3145,0x4965,0x3145,0x4145,0x4165,0x2945,0x3965,0x3965,0x3965,0x4165,0x28e3,0x2103,0x20e3,0x18a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c2,0x18c3,0x18c3,0x3985,0x6227,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x2145,0x31a6,0x2965,0x2145,0x2124,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2945,0x2145,0x2145,0x2965,0x2965,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2965,0x2945,0x2945,0x2945,0x2124,0x2124,0x2986,0x2145,0x2144,0x2145,0x2965,0x2145,0x2965,0x2145,0x2945,0x2965,0x2945,0x2124,0x2124,0x2144,0x2124,0x2945,0x2145,0x2124,0x2124,0x2124,0x1904,0x2104,0x18e3,0x2104,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2144,0x1924,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x2124,0x2124,0x2104,0x18e3,0x2104,0x1904,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x1903,0x1903,0x18e3,0x1904,0x18e4, +0x18c3,0x18e3,0x2124,0x2104,0x1903,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2144,0x2124,0x1904,0x2124,0x2145,0x2125,0x2125,0x2124,0x1904,0x18e3,0x1904,0x1904,0x2124,0x1904,0x2145,0x2965,0x2145,0x2125,0x2945,0x2966,0x2965,0x2965,0x3185,0x2165,0x2124,0x2145,0x2125,0x2125,0x2945,0x2945,0x2966,0x2966,0x2165,0x2965,0x2986,0x2965,0x2986,0x2985,0x2145,0x2165,0x2145,0x29a6,0x29a6,0x31a6,0x2145,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x31c7,0x2965,0x2986,0x31a6,0x3186,0x2165,0x2986,0x2965,0x2165,0x31a6,0x2986,0x2145,0x2985,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2145,0x2165,0x31a6,0x3186,0x2985,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2985,0x2966,0x31c7,0x3186,0x31a6,0x39e7,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x31e7,0x31a6,0x2986,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2104,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x1924,0x21c6,0x2145,0x2186,0x21a6,0x2165,0x21e7,0x2207,0x21a5,0x21e7,0x21e7,0x2165,0x2185,0x1964,0x18e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18a2,0x0861,0x1082,0x18c3,0x5264,0x83c3,0x7ba3,0x6304,0x7b84,0x83a4,0x62c4,0x5aa4,0x6b25,0x6b04,0x83a3,0x4a04,0x7b64,0x5a62,0x2103,0x2104,0x18e3,0x10a2,0x18c3,0x18c2,0x2124,0x18c3,0x18c3,0x0841,0x18e3,0x2124,0x5965,0x7185,0x5165,0x5185,0x6985,0x4165,0x6185,0x5965,0x4165,0x69a6,0x51a6,0x4985,0x6185,0x2903,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6184,0x31a7,0x2966,0x2965,0x2986,0x3186,0x2945,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2966,0x2966,0x2986,0x31a6,0x3186,0x2945,0x3186,0x31a6,0x2965,0x3186,0x2965,0x1924,0x2986,0x2986,0x2124,0x2124,0x2124,0x2145,0x2165,0x2986,0x2986,0x2145,0x2945,0x2945,0x2945,0x2165,0x2165,0x2966,0x2124,0x1904,0x2125,0x2125,0x2945,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2965,0x2144,0x2965,0x2965,0x2165,0x1924,0x1904,0x2145,0x2144,0x2965,0x2986,0x2124,0x2965,0x2145,0x2125,0x2125,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2124,0x2124,0x2945,0x18c3,0x18e3,0x18e3,0x2104,0x1903,0x1904,0x2124,0x18e3,0x1904,0x1904,0x1904,0x18e3,0x1903,0x2124,0x2124,0x2104,0x2124,0x1904,0x18e4,0x18e4,0x18e3,0x1903,0x2104,0x2124,0x1903,0x2124,0x2124,0x10c3,0x10c3,0x18e3,0x2104, +0x1904,0x18e3,0x18e3,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x18e3,0x1903,0x1904,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x1904,0x2104,0x1904,0x2145,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2125,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2145,0x2125,0x2145,0x2145,0x2144,0x2124,0x2165,0x2965,0x2124,0x2124,0x2124,0x2144,0x2145,0x2125,0x2986,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2145,0x2985,0x2965,0x2986,0x2145,0x2965,0x31a6,0x2945,0x2125,0x2145,0x2945,0x2945,0x2125,0x2966,0x3186,0x2966,0x2945,0x2986,0x2986,0x31a6,0x31a6,0x2966,0x2965,0x2145,0x2966,0x2965,0x2165,0x2124,0x2144,0x2966,0x2966,0x2965,0x31a6,0x2985,0x2165,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x2966,0x2986,0x31c7,0x2986,0x2966,0x2986,0x31a6,0x2966,0x4228,0x39e7,0x2965,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x2124,0x18c2,0x18a2,0x18a2,0x10a2,0x10a2,0x1081,0x1082,0x10a2,0x2124,0x21e6,0x2165,0x2145,0x2185,0x2165,0x21c6,0x21c6,0x21a5,0x21c6,0x29a6,0x2165,0x2164,0x1944,0x20e3,0x18e3,0x1082,0x10a2,0x18c2,0x18e3,0x2104,0x18e3,0x18c2,0x0861,0x1082,0x18c3,0x5aa4,0x6b44,0x4223,0x6324,0x6b24,0x7bc5,0x6304,0x7b63,0x7ba4,0x62c3,0x83e3,0x62c3,0x83c3,0x5a82,0x2103,0x18e3,0x2103,0x18c2,0x18c3,0x18c3,0x2124,0x18c3,0x18e3,0x0841,0x18e3,0x2124,0x5985,0x6185,0x6185,0x6185,0x7185,0x4165,0x5165,0x7185,0x5985,0x79e6,0x59c6,0x4986,0x6985,0x2903,0x18e3,0x18e3,0x18c2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x3124,0x6164,0x3186,0x2986,0x2966,0x2966,0x3186,0x2966,0x2966,0x31a6,0x2986,0x2986,0x29a6,0x2966,0x2145,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x2945,0x2965,0x2965,0x2925,0x2124,0x2945,0x2945,0x31a6,0x2145,0x2125,0x2986,0x39c7,0x2124,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x3186,0x2965,0x2145,0x2965,0x3186,0x2985,0x2986,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2145,0x2986,0x2144,0x2124,0x2124,0x2965,0x2145,0x2125,0x2125,0x2125,0x2965,0x2124,0x2145,0x2945,0x2965,0x2124,0x2965,0x2985,0x1904,0x2104,0x18e4,0x2945,0x2945,0x18e3,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x2124,0x1904,0x1904,0x1903,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x1903,0x1904,0x2145,0x18e3,0x1904,0x1903,0x18e3,0x18e3,0x2104,0x2104, +0x1903,0x1903,0x1903,0x2104,0x2104,0x2124,0x18e3,0x1904,0x1903,0x1904,0x18e3,0x1904,0x2124,0x1904,0x2104,0x18e3,0x18e3,0x1904,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x18e4,0x18e4,0x18e4,0x2965,0x2986,0x2125,0x2965,0x2124,0x2145,0x2124,0x2124,0x2145,0x2965,0x2124,0x2124,0x2985,0x2965,0x2125,0x2966,0x2986,0x2104,0x2945,0x2965,0x3186,0x3186,0x2965,0x2124,0x2966,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2966,0x2945,0x2966,0x3186,0x2966,0x2945,0x2966,0x2966,0x2945,0x2125,0x2966,0x2966,0x2966,0x2966,0x2145,0x2966,0x2986,0x2966,0x2966,0x2966,0x2145,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x31a6,0x2986,0x2985,0x2145,0x2965,0x29a6,0x2145,0x2966,0x3186,0x2986,0x3186,0x2965,0x2965,0x2985,0x2985,0x31a6,0x31a6,0x3186,0x31a7,0x31a7,0x31a7,0x2986,0x2986,0x2966,0x31a6,0x31e7,0x31a6,0x2985,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1924,0x2165,0x2124,0x2104,0x1924,0x2124,0x2145,0x2144,0x2144,0x2145,0x2145,0x2145,0x2144,0x1904,0x2104,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2124,0x18e3,0x18c2,0x0861,0x10a2,0x18e3,0x39c4,0x4204,0x2944,0x4225,0x4204,0x4a65,0x4204,0x6304,0x5ac4,0x4224,0x6304,0x4203,0x4a64,0x5263,0x2923,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x2124,0x18e3,0x18c3,0x0841,0x18e3,0x2124,0x4165,0x4165,0x4965,0x4145,0x5985,0x4145,0x4965,0x6185,0x4165,0x59a6,0x51a6,0x3986,0x5185,0x20e3,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x6164,0x2986,0x29a6,0x2986,0x2986,0x2966,0x2945,0x2125,0x2945,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2945,0x2145,0x2965,0x31c6,0x2945,0x31c7,0x31c6,0x2985,0x2965,0x2144,0x2965,0x2965,0x2985,0x2945,0x2124,0x2104,0x2965,0x2945,0x2945,0x2965,0x2124,0x2124,0x2144,0x2124,0x2965,0x2125,0x2945,0x2966,0x2124,0x3186,0x2945,0x2145,0x2945,0x2985,0x2945,0x2145,0x2144,0x2124,0x2985,0x2145,0x2145,0x2124,0x2124,0x2124,0x2145,0x2945,0x2124,0x2124,0x2965,0x2145,0x2124,0x1903,0x2124,0x2145,0x2124,0x2965,0x2965,0x2124,0x2125,0x2104,0x2125,0x2104,0x2104,0x2104,0x1904,0x2986,0x2124,0x1903,0x1904,0x1924,0x2165,0x1924,0x1924,0x2144,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x1904,0x2144,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x2104,0x20e4, +0x18e3,0x18e3,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e3,0x18e3,0x1904,0x1903,0x2124,0x1903,0x1904,0x1903,0x18e3,0x1904,0x1904,0x1903,0x1904,0x1904,0x1904,0x2125,0x1904,0x1904,0x2104,0x1904,0x18e3,0x1904,0x2124,0x2125,0x2965,0x2125,0x2124,0x2945,0x2124,0x2124,0x2965,0x2124,0x2945,0x2945,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2124,0x2965,0x31a6,0x2945,0x2104,0x2145,0x2145,0x2124,0x2124,0x2965,0x2945,0x2966,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2945,0x2125,0x2965,0x2986,0x2966,0x2965,0x31a6,0x2145,0x2125,0x31a6,0x31c7,0x2986,0x2986,0x2124,0x2965,0x2965,0x2145,0x29a6,0x31c7,0x2165,0x2145,0x2165,0x29a6,0x29a6,0x2965,0x2985,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x31a7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2145,0x2986,0x31a7,0x31a6,0x2986,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2125,0x2144,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x10a2,0x18c2,0x18e3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x20e3,0x2944,0x2965,0x2944,0x2965,0x2944,0x2964,0x2944,0x31a4,0x3184,0x2964,0x3184,0x2944,0x2944,0x2943,0x2103,0x2103,0x18e3,0x18c2,0x18c3,0x18c3,0x2144,0x2104,0x18c3,0x0841,0x18e3,0x2124,0x3145,0x2945,0x2945,0x2924,0x3145,0x2925,0x3145,0x3145,0x2924,0x3145,0x3185,0x3165,0x3165,0x20e3,0x2103,0x2103,0x18c3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2965,0x2986,0x2966,0x2986,0x2985,0x2985,0x2965,0x2986,0x2965,0x2124,0x2945,0x3186,0x3186,0x2966,0x2125,0x3186,0x3186,0x31c6,0x31c6,0x29a6,0x2985,0x2985,0x2124,0x2965,0x2986,0x31a6,0x2124,0x2945,0x2145,0x2165,0x2165,0x2124,0x2986,0x2985,0x2124,0x2945,0x2965,0x2965,0x2966,0x2966,0x2125,0x2986,0x2945,0x2945,0x2945,0x2965,0x2965,0x2945,0x2965,0x2965,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2144,0x1904,0x2104,0x2124,0x2124,0x2965,0x2124,0x2124,0x2124,0x2124,0x2965,0x2145,0x2104,0x2124,0x2124,0x2124,0x2124,0x1903,0x2124,0x1904,0x2124,0x2945,0x2144,0x2104,0x2104,0x2124,0x2145,0x1924,0x2124,0x2145,0x2124,0x1904,0x1904,0x2124,0x2124,0x1924,0x2124,0x1904,0x1904,0x18e4,0x1904,0x2124,0x2124,0x2104,0x2104,0x2124,0x18e3,0x2144,0x2945,0x18e3, +0x1903,0x1904,0x2104,0x1903,0x2104,0x2104,0x1904,0x1903,0x1903,0x1904,0x2104,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x2124,0x1903,0x18e3,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x1904,0x1904,0x2124,0x2125,0x2124,0x2965,0x2145,0x2124,0x2144,0x2965,0x2985,0x2124,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2144,0x2965,0x2965,0x2945,0x2125,0x2125,0x2965,0x2986,0x2145,0x2145,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2165,0x2165,0x2985,0x2986,0x2965,0x2945,0x2945,0x2945,0x3186,0x3186,0x29a6,0x2986,0x2965,0x31a7,0x2966,0x2986,0x31a6,0x2985,0x2986,0x2945,0x2945,0x2966,0x2165,0x2165,0x2966,0x2966,0x2966,0x2986,0x31c7,0x31c6,0x29a6,0x2965,0x3186,0x2966,0x31a7,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2985,0x2965,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x1082,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1061,0x1082,0x18c3,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2945,0x2944,0x2124,0x18e3,0x2103,0x18e3,0x10a2,0x10a2,0x18a2,0x18c3,0x2945,0x18c3,0x18c2,0x0861,0x10a2,0x2103,0x2944,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x18e3,0x2104,0x2103,0x18e3,0x18c2,0x18c3,0x18c2,0x2944,0x18e3,0x20e3,0x0841,0x18c3,0x2124,0x2944,0x2965,0x2965,0x2944,0x2945,0x2925,0x2924,0x2124,0x2124,0x2945,0x2945,0x2965,0x2965,0x2104,0x2104,0x2104,0x18e3,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x2903,0x5964,0x3186,0x2965,0x2965,0x2986,0x2145,0x31a6,0x29a6,0x31c6,0x31c7,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2986,0x29a6,0x29a6,0x2165,0x29a6,0x2185,0x2144,0x29a6,0x2986,0x2945,0x2965,0x2145,0x2945,0x2945,0x2165,0x2165,0x2145,0x2165,0x2144,0x2986,0x2965,0x2104,0x2925,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2945,0x2145,0x2986,0x2965,0x2965,0x2124,0x2985,0x2945,0x2124,0x2965,0x2124,0x1924,0x2124,0x2145,0x2965,0x2124,0x2165,0x2145,0x2124,0x2145,0x2124,0x2965,0x2104,0x2124,0x2104,0x2945,0x2145,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x18e4,0x2104,0x2145,0x1904,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2125,0x2125,0x2104,0x18e3,0x1903,0x2124,0x2104,0x2104,0x2124,0x2104,0x18e3, +0x2104,0x2104,0x2124,0x2104,0x2104,0x1903,0x2104,0x2124,0x1904,0x1904,0x1903,0x18e3,0x18e3,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2145,0x31a6,0x2125,0x2145,0x2145,0x2124,0x2104,0x2104,0x1904,0x2104,0x1904,0x2104,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2124,0x2945,0x2945,0x2125,0x2125,0x2965,0x2965,0x2945,0x2125,0x2945,0x2986,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2145,0x2966,0x2965,0x2165,0x2985,0x2985,0x2944,0x2965,0x2965,0x2965,0x3186,0x39c7,0x2966,0x29a6,0x29a6,0x2966,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x2124,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2986,0x2986,0x31c7,0x31e7,0x31a6,0x2986,0x31a6,0x2966,0x31a7,0x2986,0x2966,0x2145,0x2986,0x31e7,0x31c7,0x2986,0x31a6,0x31c6,0x31a6,0x3186,0x2965,0x31a6,0x31e7,0x29a6,0x31a6,0x2966,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c3,0x2124,0x18c3,0x18c3,0x0861,0x0861,0x10a2,0x2103,0x2124,0x2124,0x1903,0x18e3,0x18e3,0x1903,0x1903,0x2104,0x2103,0x2103,0x2124,0x2124,0x2103,0x2104,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x2124,0x18c3,0x20e3,0x0841,0x10a2,0x2104,0x2124,0x2945,0x2944,0x2124,0x2124,0x2924,0x2924,0x2124,0x2124,0x2924,0x2945,0x2965,0x2965,0x2124,0x2124,0x2924,0x2104,0x10a2,0x10a2,0x18e3,0x18e3,0x20e3,0x18c3,0x18c2,0x18c3,0x18c3,0x2903,0x5164,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2165,0x2986,0x2986,0x2965,0x2965,0x31a7,0x2145,0x2986,0x31a6,0x2145,0x2985,0x2985,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2144,0x2165,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2985,0x2144,0x2144,0x2145,0x2145,0x2145,0x2965,0x2124,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2945,0x2985,0x2965,0x2965,0x2944,0x2145,0x2145,0x2124,0x2145,0x2945,0x2145,0x2145,0x29a6,0x2985,0x2165,0x2145,0x2125,0x2945,0x2945,0x2125,0x2124,0x2965,0x2965,0x2965,0x2165,0x2145,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x1904,0x2124,0x2124,0x2125,0x2125,0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1924,0x1904,0x2125,0x2925,0x1904,0x2104,0x2124,0x2104,0x18e4,0x1904,0x2145,0x2125,0x1904, +0x18e3,0x1904,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x1904,0x1924,0x1924,0x1903,0x18e3,0x1904,0x2145,0x1904,0x18e3,0x2144,0x2124,0x2125,0x1904,0x1924,0x2145,0x2965,0x2145,0x2965,0x2124,0x2124,0x1903,0x2124,0x2104,0x2124,0x2145,0x2145,0x1904,0x2124,0x2144,0x2965,0x39e7,0x2985,0x2165,0x2145,0x2144,0x2145,0x2124,0x2104,0x2124,0x2945,0x2945,0x2966,0x31a7,0x2145,0x2125,0x2145,0x2165,0x2965,0x31a6,0x2986,0x31c7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2144,0x31a6,0x31a6,0x2965,0x3186,0x2986,0x3186,0x31a7,0x2966,0x2965,0x2965,0x2165,0x2145,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2986,0x2966,0x2945,0x2966,0x2966,0x2965,0x2986,0x31e7,0x39e7,0x4248,0x31c6,0x3186,0x2966,0x2965,0x2945,0x2966,0x2986,0x2986,0x31e7,0x29a6,0x2965,0x31a6,0x3186,0x2965,0x39e7,0x3186,0x2986,0x29a6,0x31c7,0x3a08,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x18c3,0x2104,0x18c3,0x18c3,0x0861,0x0841,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18e3,0x18c3,0x18c3,0x18c3,0x2103,0x18c3,0x18c3,0x0841,0x0861,0x1082,0x18c2,0x18c3,0x18c3,0x18c2,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18a2,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x2986,0x31a6,0x31a6,0x2966,0x2945,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x2124,0x3165,0x2965,0x2965,0x2965,0x2125,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2945,0x2965,0x2965,0x2144,0x2144,0x2165,0x2145,0x2965,0x2985,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2124,0x2965,0x2945,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2985,0x2144,0x1945,0x2165,0x2145,0x2145,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2145,0x2165,0x2165,0x2145,0x2145,0x2124,0x2965,0x1904,0x2145,0x2985,0x1904,0x2125,0x2104,0x2125,0x2966,0x2145,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x2104,0x2144,0x2124,0x1904,0x18e3,0x1903,0x1924,0x1924,0x1904,0x2945,0x2945,0x2104,0x2125,0x2125,0x2104,0x2104,0x18e3,0x1904,0x1904,0x2104, +0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x2124,0x1904,0x1904,0x1904,0x1904,0x1904,0x2104,0x18e3,0x18e3,0x2104,0x2125,0x2124,0x1924,0x2124,0x1904,0x2145,0x2145,0x1904,0x2124,0x2945,0x2945,0x2145,0x2124,0x2145,0x2145,0x2144,0x2124,0x2124,0x2965,0x2965,0x2144,0x2144,0x2124,0x2104,0x2124,0x2965,0x2986,0x2144,0x2986,0x2965,0x2145,0x2145,0x2965,0x2165,0x2965,0x2965,0x29a6,0x2145,0x2125,0x2986,0x2985,0x2965,0x2986,0x2145,0x2985,0x2965,0x2124,0x2986,0x2986,0x2986,0x3186,0x2965,0x2945,0x2966,0x2986,0x2966,0x2986,0x2985,0x2145,0x2945,0x2145,0x2965,0x3186,0x3186,0x2985,0x3186,0x3186,0x2986,0x2965,0x2965,0x2986,0x29a6,0x31a6,0x2986,0x31c7,0x31a6,0x3186,0x2986,0x39c7,0x3186,0x2965,0x2986,0x2145,0x31c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39e7,0x31a6,0x2966,0x39e8,0x39c7,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2103,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a2,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18a3,0x18c3,0x18c3,0x2103,0x5164,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2985,0x31c7,0x2124,0x2965,0x2986,0x2945,0x3186,0x3186,0x2945,0x2124,0x2965,0x2985,0x2986,0x2965,0x31c6,0x2985,0x2985,0x2985,0x2985,0x2986,0x2145,0x2986,0x2965,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2165,0x2986,0x2124,0x2965,0x2945,0x2965,0x2124,0x2945,0x2144,0x2125,0x2145,0x2145,0x2965,0x3186,0x2144,0x2985,0x31a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2145,0x2124,0x2124,0x2145,0x2125,0x2125,0x2145,0x2125,0x2124,0x2145,0x1904,0x1924,0x1924,0x2124,0x2945,0x2104,0x2145,0x2124,0x2124,0x2125,0x2124,0x1904,0x1904,0x2144,0x2144,0x2104,0x1904,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x1904,0x1904,0x2986, +0x1903,0x1904,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x1904,0x1903,0x1904,0x1904,0x2104,0x2124,0x2144,0x1924,0x1924,0x2124,0x2145,0x2125,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2945,0x2965,0x2124,0x2965,0x2965,0x2965,0x2124,0x2124,0x2145,0x2145,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2145,0x2124,0x2145,0x2165,0x2144,0x2965,0x2965,0x2966,0x3186,0x2965,0x2945,0x2966,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2985,0x2165,0x29a6,0x2965,0x2145,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x3186,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x2965,0x31c7,0x2986,0x39c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a6,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x10a2,0x2945,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18c3,0x2104,0x5164,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x3186,0x2966,0x3186,0x2985,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2145,0x2965,0x2985,0x2945,0x2985,0x2185,0x29a6,0x2985,0x31c7,0x31a6,0x31c7,0x2145,0x2965,0x2986,0x2945,0x2104,0x2124,0x2144,0x2124,0x2144,0x2145,0x2945,0x4208,0x2965,0x2144,0x2965,0x2966,0x2145,0x2124,0x2165,0x2145,0x29a6,0x31c6,0x2145,0x2965,0x31a6,0x2965,0x2144,0x2144,0x2965,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2124,0x2145,0x3186,0x2124,0x2945,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2945,0x2145,0x18e4,0x2124,0x2124,0x18e4,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145, +0x18e3,0x2124,0x2124,0x18e3,0x1904,0x18e4,0x1904,0x2124,0x18e3,0x18e3,0x1904,0x2124,0x2124,0x1904,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2124,0x2104,0x2945,0x2965,0x2144,0x2144,0x2145,0x2965,0x2124,0x2124,0x2145,0x2145,0x2945,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2965,0x2124,0x2144,0x2965,0x2965,0x2985,0x2185,0x2125,0x2945,0x2986,0x2966,0x2125,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x31a6,0x31a6,0x2145,0x3186,0x2986,0x2986,0x2945,0x2145,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2966,0x31a6,0x2986,0x31a7,0x2966,0x2165,0x2965,0x2966,0x2986,0x31a6,0x3186,0x39c7,0x2966,0x3186,0x31c7,0x31a7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x2104,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18e3,0x2965,0x18c3,0x18e3,0x18e3,0x10a2,0x18c3,0x18a3,0x2103,0x4964,0x31c6,0x2965,0x2986,0x2985,0x2965,0x2945,0x2966,0x3186,0x3186,0x31a6,0x31c7,0x2945,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2965,0x2965,0x2144,0x2145,0x2965,0x2985,0x2986,0x2986,0x2145,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2945,0x2124,0x2145,0x2965,0x2145,0x2145,0x2124,0x2145,0x3186,0x2145,0x2145,0x2145,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2124,0x2145,0x2965,0x2965,0x2965,0x2945,0x2144,0x2945,0x2124,0x2965,0x2965,0x2965,0x2965,0x2124,0x2145,0x2986,0x2986,0x2124,0x2945,0x2144,0x2145,0x2145,0x2125,0x2124,0x18e4,0x2124,0x2145,0x2124,0x2124,0x2124,0x2124,0x2986,0x2104,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2124,0x2145,0x2125,0x2945,0x2145,0x2124,0x2104, +0x2104,0x1903,0x1903,0x1904,0x1904,0x18e4,0x2104,0x2145,0x2104,0x18e3,0x1904,0x1904,0x2145,0x2124,0x1904,0x2124,0x2124,0x1904,0x2145,0x2945,0x2104,0x2124,0x2125,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2985,0x2985,0x2985,0x31e7,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2145,0x2145,0x2965,0x2965,0x2986,0x31c7,0x31a6,0x2966,0x31a6,0x29a6,0x2986,0x2966,0x2965,0x2965,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2945,0x2986,0x3186,0x2986,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x31a7,0x3186,0x2965,0x3186,0x39c7,0x31a7,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18a3,0x10a2,0x18a2,0x2945,0x2945,0x18c3,0x18e3,0x10a2,0x18c2,0x18a2,0x20e3,0x4944,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2985,0x3186,0x2986,0x2986,0x2985,0x2145,0x2165,0x2965,0x29a6,0x2145,0x2145,0x2986,0x2986,0x2965,0x2966,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2144,0x2965,0x2965,0x2965,0x2945,0x2986,0x3186,0x3186,0x2965,0x2985,0x2945,0x2965,0x2945,0x2985,0x2965,0x2145,0x2145,0x2965,0x2145,0x2965,0x2165,0x2145,0x2165,0x2985,0x2965,0x2144,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x31a6,0x2145,0x2986,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2945,0x2124,0x2125,0x2966,0x2145,0x2125,0x1904,0x2124,0x2125,0x2986,0x2124,0x2124,0x2165,0x2145,0x2145,0x2165,0x2124,0x2124,0x1904,0x2104,0x2124,0x2125,0x2145,0x2125,0x2124,0x2125,0x2104,0x1904,0x2125,0x2145,0x2124,0x1903,0x2124, +0x1904,0x1904,0x1903,0x1904,0x1903,0x1904,0x2124,0x2104,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2144,0x2945,0x2145,0x2124,0x2145,0x2124,0x2124,0x1904,0x1904,0x2145,0x2144,0x2145,0x2124,0x2965,0x2145,0x2124,0x2124,0x2145,0x2165,0x2165,0x2145,0x1924,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2125,0x2965,0x2965,0x2965,0x3a08,0x31c7,0x2145,0x2145,0x2985,0x2985,0x2986,0x2986,0x2945,0x2945,0x2965,0x3186,0x2985,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x2966,0x2125,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2965,0x3186,0x2965,0x2966,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2986,0x2966,0x2965,0x3186,0x39c7,0x3186,0x2966,0x2986,0x2986,0x2986,0x3186,0x39c7,0x31a7,0x3186,0x39e7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2104,0x10c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2966,0x18e3,0x18c3,0x10a2,0x18c2,0x18c2,0x20e3,0x4964,0x31a6,0x2965,0x31a6,0x2986,0x2966,0x2986,0x2965,0x2945,0x2965,0x2945,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x2965,0x2966,0x2986,0x2965,0x2145,0x2965,0x2945,0x2965,0x2145,0x2945,0x2965,0x3186,0x2945,0x3186,0x3186,0x2945,0x2965,0x2144,0x2124,0x2124,0x2945,0x2986,0x2965,0x2144,0x2965,0x2965,0x2985,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2986,0x2965,0x2124,0x2965,0x2986,0x31a6,0x2965,0x3186,0x31a6,0x2145,0x2965,0x2965,0x2965,0x2945,0x2945,0x2985,0x2965,0x2945,0x2965,0x2124,0x2124,0x2124,0x2124,0x1924,0x1924,0x1904,0x2104,0x2125,0x2124,0x2104,0x1904,0x2124,0x2145,0x2104,0x2125,0x2124,0x18e4,0x1904,0x2145,0x2124,0x2125,0x2125,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2124, +0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x2125,0x2124,0x1924,0x2124,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2144,0x2144,0x2144,0x2965,0x2965,0x2145,0x2165,0x2145,0x2124,0x2124,0x2145,0x2124,0x2965,0x2145,0x2965,0x2145,0x2965,0x2145,0x2124,0x2124,0x2965,0x2145,0x2145,0x1924,0x2144,0x2145,0x2144,0x2965,0x2145,0x2125,0x2145,0x2145,0x2966,0x2965,0x2124,0x3186,0x31a6,0x2986,0x2986,0x2165,0x2144,0x2965,0x2965,0x2145,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2145,0x2966,0x2966,0x2966,0x2965,0x2165,0x2965,0x2965,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x3186,0x39e7,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x39e7,0x2985,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x31a6,0x31c7,0x2965,0x3186,0x3a08,0x31e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x18a3,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x2104,0x2925,0x18c3,0x10a2,0x18c2,0x18c3,0x20e3,0x4964,0x31a6,0x2985,0x31c7,0x2986,0x2966,0x2986,0x2966,0x2965,0x2965,0x2144,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2965,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2966,0x2145,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2945,0x2965,0x2945,0x2965,0x2144,0x2144,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2144,0x2965,0x2965,0x2986,0x2145,0x2986,0x2986,0x2945,0x2144,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x2965,0x2145,0x2945,0x2965,0x2945,0x39a7,0x2966,0x2124,0x2145,0x2965,0x2965,0x2965,0x2144,0x2945,0x2124,0x2124,0x2124,0x2145,0x2124,0x2945,0x2125,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2945,0x2104,0x1904,0x2124,0x2125,0x2124,0x18e4,0x2124,0x2125,0x2124,0x1904,0x2104,0x2124,0x2124,0x2124,0x2104, +0x1904,0x18e3,0x1903,0x1904,0x1903,0x1903,0x18e4,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2145,0x2124,0x1904,0x2104,0x2144,0x2124,0x2124,0x2124,0x2144,0x2144,0x2145,0x2124,0x2144,0x2965,0x2145,0x2124,0x2104,0x2145,0x2145,0x2124,0x2145,0x2986,0x2986,0x2986,0x2145,0x2124,0x2145,0x2125,0x2945,0x2945,0x2125,0x2945,0x2985,0x2965,0x2124,0x2145,0x2965,0x2145,0x2965,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x2986,0x31c7,0x2986,0x31a7,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2165,0x29a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2986,0x29a6,0x31c7,0x2986,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2124,0x2104,0x2124,0x2945,0x2965,0x2124,0x2124,0x2924,0x2124,0x2124,0x2125,0x2945,0x2124,0x2104,0x2104,0x2124,0x2125,0x2125,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2104,0x2104,0x20e3,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2945,0x20e3,0x10a2,0x18a3,0x18c3,0x20e3,0x4964,0x2986,0x2985,0x2966,0x2965,0x2986,0x2966,0x31a7,0x2986,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2985,0x2965,0x2965,0x2145,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x31a7,0x31a7,0x2965,0x2965,0x2986,0x2945,0x2145,0x31a6,0x2965,0x2985,0x2965,0x2965,0x31a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2144,0x2145,0x2986,0x2965,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145,0x2145,0x2145,0x2965,0x2965,0x2965,0x2965,0x2145,0x2144,0x2124,0x2965,0x2145,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2965,0x2945,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2124,0x2945,0x2124,0x2125,0x2125,0x2124,0x2124,0x2945,0x2125,0x2945,0x2125,0x2104,0x2104,0x1904,0x2124,0x2124,0x2104,0x1904,0x2124,0x2125,0x2145,0x1904,0x1904,0x2125,0x1904,0x2124,0x1903,0x2124, +0x2104,0x2104,0x2104,0x1924,0x1924,0x1924,0x2104,0x18e3,0x18e4,0x1904,0x18e3,0x1904,0x1904,0x2124,0x2124,0x2124,0x2144,0x2944,0x2145,0x2124,0x2125,0x2145,0x2965,0x2945,0x2124,0x2965,0x2145,0x2124,0x2124,0x2124,0x2945,0x2125,0x2125,0x2986,0x31c7,0x2965,0x2965,0x2965,0x2144,0x2124,0x2965,0x2965,0x2945,0x2125,0x2945,0x2945,0x2965,0x2965,0x2145,0x2986,0x2986,0x2966,0x2986,0x2145,0x2965,0x2985,0x2144,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2966,0x31a7,0x31a6,0x2965,0x3186,0x2945,0x2965,0x3186,0x2965,0x2985,0x2965,0x2945,0x31a6,0x2985,0x2165,0x2965,0x2965,0x2965,0x2985,0x2145,0x2145,0x2985,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2985,0x31a6,0x2966,0x2965,0x2145,0x39e7,0x31a7,0x2966,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x18e3,0x1903,0x2104,0x2124,0x18e3,0x18e3,0x2103,0x2104,0x2104,0x18e3,0x2104,0x2124,0x2124,0x2945,0x2104,0x2124,0x2924,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e3,0x2103,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2124,0x2124,0x2944,0x2945,0x2925,0x2945,0x2124,0x2124,0x2104,0x2104,0x2124,0x2945,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2925,0x2945,0x2124,0x2124,0x2944,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x18e3,0x10a2,0x18c3,0x18a3,0x20e3,0x4165,0x2965,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3166,0x2966,0x2966,0x2965,0x2145,0x2145,0x2965,0x2145,0x2986,0x2986,0x2965,0x3185,0x2965,0x2145,0x2945,0x2985,0x31a6,0x3186,0x2965,0x2986,0x2966,0x2965,0x2985,0x2145,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2985,0x2965,0x2965,0x2986,0x2966,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2124,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x31a6,0x2985,0x3186,0x2986,0x2124,0x2965,0x2965,0x2144,0x2124,0x2145,0x2145,0x2144,0x2124,0x2145,0x2124,0x2124,0x2144,0x2125,0x2965,0x2104,0x2124,0x2145,0x2104,0x2125,0x2104,0x2124,0x2145,0x2945,0x2986,0x2124,0x2104,0x1904,0x2145,0x2124,0x2124,0x1904,0x1904,0x2104,0x2125,0x2124,0x1924,0x2124, +0x2104,0x2124,0x2104,0x1904,0x2124,0x2124,0x20e4,0x20e4,0x2104,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x2104,0x2125,0x2945,0x2124,0x2124,0x2125,0x2125,0x2145,0x2145,0x2145,0x2965,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2986,0x2145,0x2145,0x2965,0x2144,0x2124,0x2965,0x3186,0x2124,0x2965,0x2145,0x2124,0x2966,0x31c7,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2985,0x2965,0x3186,0x2945,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2945,0x2986,0x2985,0x2985,0x2985,0x2965,0x2145,0x2986,0x2965,0x2145,0x2985,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x31c7,0x3186,0x2966,0x31a7,0x3186,0x31a7,0x31a7,0x31a6,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x39e7,0x39c7,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x2104,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x2103,0x2104,0x1903,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18a2,0x10a2,0x18c3,0x18a3,0x20e3,0x4144,0x3186,0x3186,0x2966,0x2945,0x2965,0x2145,0x2965,0x2966,0x2966,0x2986,0x2165,0x2145,0x2965,0x2965,0x2986,0x2965,0x31a6,0x31c6,0x3186,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2966,0x2965,0x2966,0x2966,0x2145,0x2965,0x2965,0x2966,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x2145,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2965,0x2985,0x2145,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2965,0x2145,0x2145,0x2965,0x2145,0x2124,0x2945,0x2965,0x2986,0x2145,0x2145,0x2965,0x3186,0x2965,0x3186,0x2145,0x2124,0x2145,0x2124,0x2145,0x2124,0x2124,0x2945,0x2145,0x2124,0x2965,0x2945,0x2124,0x2945,0x2945,0x2945,0x2125,0x2125,0x1904,0x2124,0x2145,0x2145,0x2124,0x2945,0x2945,0x31c6,0x2945,0x2124,0x1904,0x2124,0x2145,0x2124,0x2145,0x2124,0x2104,0x2145,0x2124,0x1924,0x2144, +0x2104,0x1904,0x2104,0x1903,0x2104,0x2125,0x2104,0x1904,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x1904,0x1904,0x2104,0x2125,0x2125,0x2124,0x2145,0x2124,0x2124,0x2145,0x2145,0x2125,0x2145,0x2124,0x2124,0x2124,0x2924,0x2945,0x2145,0x2124,0x2144,0x2144,0x2145,0x2124,0x2145,0x2145,0x2124,0x2945,0x2145,0x2165,0x2144,0x2124,0x2965,0x2965,0x2945,0x2124,0x2144,0x2144,0x2124,0x2965,0x3186,0x2145,0x2985,0x2965,0x2965,0x2966,0x2985,0x2165,0x2165,0x2966,0x2966,0x2945,0x2125,0x2965,0x2965,0x31a6,0x39c6,0x39c6,0x3186,0x29a6,0x2986,0x2965,0x2965,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2985,0x29a6,0x3186,0x31a6,0x29a6,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x31a7,0x2966,0x31a6,0x31c7,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x1904,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x2104,0x2124,0x2124,0x2124,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x10a2,0x18a2,0x18a3,0x20e3,0x3944,0x2966,0x2145,0x2986,0x2966,0x2966,0x2145,0x2966,0x2986,0x2145,0x2165,0x2965,0x2986,0x2985,0x2965,0x29a6,0x2985,0x2985,0x29a6,0x2145,0x2986,0x2986,0x2965,0x2986,0x2965,0x2966,0x31a6,0x2145,0x3186,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2145,0x2145,0x2985,0x2145,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31c6,0x2986,0x2965,0x2945,0x2145,0x3186,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2145,0x2945,0x2985,0x2945,0x2144,0x2145,0x2145,0x2965,0x2966,0x2986,0x2145,0x2145,0x2965,0x2145,0x2144,0x2144,0x2145,0x2124,0x2945,0x2965,0x2945,0x2965,0x2945,0x2945,0x2124,0x2125,0x2104,0x2125,0x2124,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x1904,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x18e3,0x1904,0x1903,0x1924, +0x2144,0x2104,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x1904,0x1904,0x2104,0x2124,0x2144,0x2124,0x18e4,0x2104,0x2124,0x2945,0x2144,0x2965,0x2965,0x2145,0x2144,0x2125,0x2104,0x2125,0x2925,0x2945,0x2945,0x2945,0x2965,0x2965,0x2145,0x2945,0x2945,0x2945,0x2145,0x2945,0x31a6,0x2165,0x1924,0x2144,0x2944,0x2985,0x2965,0x2145,0x2145,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2965,0x3186,0x2965,0x2965,0x3186,0x2985,0x2165,0x2985,0x2165,0x2165,0x2145,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x2986,0x2965,0x39c7,0x39c7,0x2965,0x2985,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2966,0x3186,0x39c7,0x39e7,0x31a6,0x3186,0x31a7,0x31c7,0x31a6,0x31a6,0x31a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2924,0x2124,0x2124,0x2104,0x18e3,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3944,0x2986,0x2965,0x2145,0x2186,0x2986,0x2186,0x2186,0x2986,0x29a6,0x2165,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2965,0x2965,0x2945,0x2986,0x2986,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2165,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2965,0x2145,0x2965,0x2986,0x2185,0x2165,0x2965,0x2965,0x2986,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2965,0x2986,0x2145,0x2986,0x2965,0x2145,0x2986,0x2985,0x2165,0x2145,0x2965,0x2145,0x2965,0x2965,0x2145,0x2965,0x2124,0x2145,0x2965,0x2124,0x2945,0x2965,0x2104,0x2965,0x2965,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2965,0x2104,0x2145,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x1904,0x1904,0x2104,0x18e4, +0x2144,0x2145,0x2124,0x18e3,0x1904,0x2104,0x2104,0x2104,0x1904,0x1903,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2945,0x2965,0x2104,0x2144,0x2145,0x2144,0x2145,0x2945,0x2124,0x2124,0x2124,0x2945,0x2145,0x2125,0x2145,0x2945,0x2945,0x2965,0x2125,0x2125,0x2966,0x2145,0x2986,0x2145,0x2145,0x2945,0x2965,0x2985,0x2165,0x1924,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2966,0x2966,0x2145,0x2145,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2165,0x2986,0x29a6,0x31a6,0x2986,0x2145,0x2986,0x2965,0x3186,0x2965,0x2985,0x2986,0x3186,0x31a6,0x2145,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2985,0x2985,0x3186,0x2965,0x2965,0x2965,0x31a6,0x2986,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3166,0x31a6,0x31a6,0x39a6,0x39c6,0x39c7,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x3166,0x2925,0x2924,0x2925,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x10a2,0x1082,0x1082,0x18a2,0x18a2,0x20e3,0x3924,0x2966,0x2986,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2966,0x2965,0x2145,0x31a6,0x2965,0x31a6,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2965,0x2966,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2145,0x2945,0x2965,0x2965,0x2965,0x2945,0x2965,0x31c6,0x3186,0x3186,0x2965,0x2965,0x2145,0x2945,0x2985,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2165,0x2986,0x2986,0x2965,0x3186,0x3186,0x3186,0x2945,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2165,0x2965,0x2965,0x2985,0x2986,0x2965,0x2144,0x2965,0x2144,0x2965,0x2985,0x2965,0x2945,0x2965,0x2965,0x2145,0x2124,0x2965,0x2965,0x2124,0x2124,0x2104,0x2945,0x2965,0x2145,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2145,0x1903,0x2124,0x2124,0x1924,0x2145,0x2125,0x2104,0x2104, +0x2104,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2145,0x2124,0x2145,0x1904,0x2124,0x2125,0x2125,0x2945,0x2945,0x2124,0x2965,0x2144,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2965,0x2966,0x2125,0x2145,0x2945,0x2925,0x2125,0x2965,0x2945,0x2945,0x2966,0x2986,0x2965,0x2145,0x2966,0x2985,0x2145,0x2145,0x2145,0x2965,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x2144,0x2945,0x2966,0x3186,0x3186,0x2966,0x2986,0x2965,0x2986,0x3186,0x3186,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c7,0x2165,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2965,0x3186,0x2965,0x2945,0x2985,0x3186,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x31a6,0x2985,0x2986,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c7,0x31c7,0x31c6,0x31c6,0x3a07,0x39e7,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2945,0x2945,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x39c6,0x31a6,0x3186,0x3165,0x2925,0x18e4,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x3124,0x2966,0x39e7,0x31a6,0x2965,0x3186,0x2965,0x2986,0x3186,0x2965,0x2986,0x3186,0x2144,0x2965,0x31c7,0x31c6,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x3186,0x2965,0x3186,0x31a6,0x2985,0x3186,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x39e7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2125,0x2965,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x3186,0x2945,0x2145,0x2986,0x2965,0x2945,0x2145,0x2985,0x3186,0x3186,0x31a6,0x2124,0x31a6,0x2965,0x2124,0x2124,0x2965,0x2965,0x1924,0x2165,0x2165,0x2945,0x2145,0x2145,0x2124,0x2104,0x2145,0x2124,0x2124,0x2945,0x2144,0x1903,0x2124,0x2124,0x2124,0x2145,0x2104,0x2104,0x2104, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2125,0x2945,0x2145,0x2124,0x2124,0x1904,0x2124,0x2125,0x2945,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2985,0x2144,0x2124,0x2145,0x2124,0x2144,0x2124,0x2145,0x2145,0x2965,0x2965,0x2124,0x2945,0x2125,0x2945,0x2125,0x2145,0x2165,0x2145,0x2165,0x2965,0x2965,0x2945,0x2965,0x3186,0x2965,0x2965,0x2985,0x2965,0x3186,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2165,0x2945,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2965,0x2986,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2966,0x2966,0x2985,0x2165,0x2986,0x31a6,0x39c7,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x39e7,0x39e7,0x31a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x18a3,0x2124,0x2965,0x3186,0x3186,0x3186,0x2965,0x2944,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2145,0x2986,0x31a6,0x31c6,0x39c6,0x31a6,0x3186,0x20e4,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x3944,0x3186,0x3186,0x3166,0x3186,0x3186,0x2145,0x2966,0x3186,0x3186,0x2965,0x31a6,0x3186,0x2985,0x31a6,0x31a6,0x3186,0x2945,0x2965,0x3186,0x3186,0x2986,0x2985,0x2145,0x2986,0x31c6,0x2965,0x2986,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2945,0x2144,0x2965,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2945,0x2145,0x2145,0x2945,0x2965,0x2986,0x2165,0x2965,0x31a6,0x2986,0x2985,0x2985,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2945,0x2966,0x3186,0x2945,0x2125,0x2966,0x2985,0x2145,0x2965,0x2965,0x2145,0x2945,0x2965,0x2945,0x2965,0x2145,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x2965,0x2945,0x2104,0x2124,0x2124,0x2104,0x2104,0x2965,0x2986,0x2144,0x1904,0x1904,0x2124,0x1904,0x1904,0x2145,0x2145,0x2124,0x2124, +0x2104,0x2945,0x2945,0x2125,0x1904,0x2104,0x2104,0x2124,0x2124,0x2104,0x2965,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2965,0x2144,0x2965,0x2965,0x2125,0x2165,0x2145,0x2124,0x2124,0x2945,0x2965,0x2945,0x2145,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2165,0x2965,0x2965,0x2965,0x2144,0x2145,0x2965,0x2986,0x2965,0x2124,0x2965,0x2965,0x3186,0x2985,0x2965,0x3186,0x2965,0x2145,0x2145,0x2145,0x2145,0x2945,0x2945,0x2986,0x2965,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2985,0x2986,0x2985,0x31a6,0x39e7,0x2965,0x2986,0x2965,0x2986,0x31c7,0x31a6,0x2965,0x2144,0x2165,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2986,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x18c3,0x2944,0x2965,0x3186,0x3185,0x2965,0x2104,0x18c3,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10c2,0x1903,0x2944,0x31a6,0x31a6,0x39c6,0x3185,0x18a3,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x3124,0x31a6,0x2965,0x2965,0x2966,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2945,0x3186,0x39e7,0x31c6,0x2965,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2165,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2145,0x2125,0x2145,0x2965,0x2145,0x2165,0x2965,0x3186,0x31a7,0x2966,0x2945,0x2945,0x2986,0x2986,0x2145,0x2986,0x2985,0x2985,0x2985,0x2965,0x29a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2165,0x2965,0x2165,0x2145,0x2145,0x2965,0x2945,0x2144,0x2945,0x2144,0x2965,0x2124,0x2124,0x2945,0x2104,0x2124,0x1903,0x2124,0x2145,0x1904,0x2124,0x2124,0x2124,0x2144,0x1904,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x1904,0x2124, +0x2124,0x1904,0x2104,0x2145,0x1904,0x2124,0x2104,0x2104,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2125,0x2145,0x2104,0x2124,0x2125,0x2124,0x2945,0x2145,0x2145,0x2965,0x2144,0x2124,0x2145,0x2124,0x2125,0x2165,0x2145,0x2124,0x2945,0x2945,0x2945,0x2145,0x2124,0x2144,0x2965,0x2986,0x2965,0x2124,0x2986,0x2986,0x2965,0x2945,0x2945,0x2124,0x2124,0x2145,0x2165,0x2965,0x2965,0x2144,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2165,0x2185,0x2165,0x2185,0x2985,0x2985,0x2165,0x2945,0x2985,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2965,0x2966,0x3186,0x3186,0x2966,0x3186,0x31c7,0x2986,0x2965,0x2965,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x2986,0x31c7,0x31a7,0x31a7,0x2966,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x1082,0x0861,0x0861,0x0841,0x0861,0x1062,0x18e3,0x2944,0x2965,0x2965,0x2965,0x2104,0x10c2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x10a2,0x2103,0x2965,0x31a6,0x31a6,0x2965,0x2104,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x3124,0x31a6,0x31a6,0x31a7,0x2986,0x3186,0x3186,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2965,0x3186,0x3186,0x3186,0x31c6,0x2985,0x31c6,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2985,0x2986,0x2965,0x2945,0x2985,0x3186,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2986,0x2986,0x2985,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x29a6,0x2965,0x2145,0x2165,0x2965,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2124,0x2145,0x2986,0x2965,0x2145,0x2986,0x2986,0x2965,0x2945,0x2945,0x2966,0x2986,0x2124,0x2124,0x2145,0x2144,0x2965,0x2965,0x2124,0x2985,0x2965,0x2145,0x2145,0x2145,0x3186,0x2145,0x2945,0x2965,0x2124,0x2124,0x2144,0x2945,0x2145,0x2144,0x2124,0x2124,0x2144,0x2986,0x2965,0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2145,0x2124,0x18e3, +0x1904,0x1904,0x2124,0x2145,0x2124,0x1904,0x2104,0x2104,0x2124,0x2145,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2145,0x2145,0x2125,0x1924,0x2145,0x2165,0x2145,0x2145,0x2124,0x2945,0x2965,0x2125,0x2145,0x2986,0x2986,0x2966,0x2124,0x2945,0x2145,0x2124,0x2124,0x2165,0x2965,0x2965,0x2985,0x2145,0x2985,0x2986,0x2965,0x2965,0x2125,0x2965,0x2144,0x2965,0x2165,0x2965,0x2965,0x2965,0x3186,0x3186,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2145,0x2985,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x29a6,0x2986,0x2986,0x29a6,0x2986,0x2966,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x31c6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x3186,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x20e4,0x31a6,0x2945,0x2944,0x2944,0x18e3,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x2124,0x3185,0x3185,0x3165,0x20e3,0x1082,0x0861,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x4185,0x31a6,0x2966,0x39c7,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2145,0x29a6,0x31a6,0x2966,0x3186,0x2965,0x2986,0x3186,0x3186,0x31c7,0x3186,0x3186,0x2965,0x2986,0x3186,0x3186,0x2965,0x2965,0x2965,0x2945,0x3186,0x2965,0x2985,0x3186,0x2986,0x2965,0x2966,0x2966,0x2965,0x31a6,0x2965,0x2965,0x2965,0x3186,0x2945,0x2965,0x2985,0x2985,0x2965,0x2985,0x2985,0x2965,0x2985,0x2965,0x2965,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2966,0x31a7,0x2946,0x2966,0x2966,0x2945,0x2965,0x2145,0x2945,0x2945,0x2945,0x2965,0x2985,0x2945,0x2124,0x2145,0x2165,0x2144,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2945,0x2124,0x2945,0x2965,0x2124,0x2144,0x2965,0x2965,0x2965,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1904,0x2104,0x18e4, +0x1904,0x2124,0x2124,0x2124,0x1904,0x1904,0x18e4,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2125,0x2145,0x2145,0x1924,0x2165,0x2165,0x2124,0x2144,0x2144,0x2945,0x2965,0x2945,0x31c7,0x31a6,0x2965,0x2945,0x2965,0x2945,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2165,0x1924,0x2145,0x2965,0x2986,0x2986,0x2965,0x2965,0x2145,0x2145,0x2124,0x2124,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2986,0x2966,0x2145,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2145,0x2985,0x2985,0x2985,0x3186,0x2965,0x2965,0x2966,0x3186,0x31a6,0x2986,0x2986,0x3186,0x2986,0x2965,0x2985,0x39e7,0x3186,0x31c6,0x3186,0x2986,0x2986,0x3186,0x2965,0x2985,0x3186,0x2965,0x31a6,0x31c7,0x31c7,0x31c7,0x29a6,0x29a6,0x39e7,0x31a6,0x2965,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x18a2,0x2945,0x31a6,0x2924,0x2124,0x18c3,0x1061,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x20e3,0x2124,0x2124,0x2924,0x2965,0x2945,0x2103,0x18c2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x10a2,0x2124,0x2965,0x2965,0x2945,0x18c3,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51c6,0x31c7,0x29a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31c6,0x2986,0x2965,0x2986,0x31a6,0x2965,0x2986,0x2986,0x3186,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2965,0x3186,0x2986,0x2144,0x2985,0x2986,0x2966,0x2966,0x2965,0x31a6,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2985,0x2965,0x31a6,0x31a6,0x2966,0x2966,0x2145,0x2946,0x2946,0x2145,0x2945,0x2965,0x2965,0x2945,0x2945,0x2144,0x2945,0x2965,0x2945,0x2124,0x2965,0x2945,0x2145,0x3186,0x3186,0x2124,0x2145,0x2124,0x2965,0x2144,0x2144,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2985,0x2986,0x2145,0x2124,0x2145,0x2124,0x2104,0x2104,0x2125,0x1904, +0x2124,0x2145,0x2125,0x1904,0x1904,0x2104,0x2104,0x2124,0x2945,0x2124,0x2145,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2945,0x2945,0x2124,0x2145,0x2145,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2145,0x2945,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2965,0x2144,0x2965,0x2145,0x2124,0x2144,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2965,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2986,0x2965,0x2985,0x2986,0x2986,0x2986,0x2145,0x2145,0x2965,0x2965,0x2986,0x2965,0x2966,0x2986,0x3186,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2965,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31e7,0x31e7,0x2965,0x2145,0x2104,0x10c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18e3,0x2104,0x2124,0x2104,0x18c3,0x0861,0x1083,0x3167,0x39a7,0x2124,0x18c3,0x18c3,0x2104,0x2124,0x2124,0x2124,0x2945,0x2944,0x2103,0x18e3,0x10a2,0x10a2,0x18c3,0x18c4,0x1083,0x0861,0x10a2,0x2124,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x51a5,0x2145,0x4228,0x39e7,0x3186,0x2986,0x2986,0x29a6,0x31e7,0x2985,0x2986,0x2986,0x2965,0x2945,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2965,0x2985,0x2965,0x2985,0x2986,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2966,0x39c7,0x31c7,0x2165,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2966,0x31a6,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x2145,0x2165,0x2986,0x2965,0x2945,0x2124,0x3186,0x2945,0x2945,0x2965,0x2945,0x2945,0x2144,0x2965,0x2965,0x3186,0x2966,0x2104,0x2124,0x2144,0x2124,0x2945,0x2945,0x2145,0x2965,0x2124,0x2945,0x2144,0x2104,0x2104,0x2965,0x2145,0x2144,0x2124,0x1904,0x2145,0x2145,0x2104,0x2124, +0x2124,0x2124,0x2124,0x2124,0x1904,0x18e3,0x2104,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x1904,0x2125,0x2965,0x2145,0x2124,0x2124,0x2124,0x2124,0x2144,0x2965,0x2985,0x2145,0x2145,0x2144,0x2965,0x2165,0x2986,0x2145,0x2145,0x2965,0x31c7,0x2965,0x2125,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2965,0x2945,0x2945,0x2145,0x2145,0x2145,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2965,0x2124,0x2986,0x31a6,0x2945,0x2965,0x2986,0x2145,0x2965,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2966,0x3186,0x2965,0x2965,0x2965,0x2145,0x29a6,0x2985,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2985,0x29a6,0x31c6,0x2985,0x3186,0x2966,0x3186,0x2986,0x39e7,0x31a6,0x2165,0x2965,0x2986,0x31a6,0x31a6,0x31c6,0x2966,0x31a6,0x2966,0x2966,0x31a6,0x2124,0x0000,0x0000,0x0000,0x0020,0x10a2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0861,0x41ca,0x9cb4,0x5249,0x18c3,0x18c3,0x18e3,0x2104,0x2944,0x2924,0x2924,0x2965,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x2967,0x420a,0x20e5,0x0861,0x10a2,0x2104,0x2924,0x2924,0x2104,0x1082,0x0861,0x0861,0x0861,0x10a2,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x51a5,0x0000,0x1082,0x4208,0x4208,0x3186,0x31a6,0x31c6,0x29a6,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x2986,0x31c7,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2965,0x2966,0x31c7,0x2985,0x2965,0x2965,0x2986,0x2986,0x2145,0x2986,0x2965,0x2945,0x2965,0x2965,0x2986,0x2965,0x3186,0x3186,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x3186,0x2965,0x3186,0x2965,0x2985,0x2986,0x2986,0x2986,0x2966,0x31a7,0x2965,0x2985,0x2965,0x2985,0x2986,0x2945,0x3186,0x2966,0x2945,0x2985,0x31a6,0x2986,0x2965,0x2144,0x2145,0x2165,0x2144,0x2145,0x2985,0x2986,0x2144,0x1924,0x2145,0x2165,0x1924,0x2145,0x2145,0x2965,0x2966,0x2125,0x2965,0x2965,0x2965,0x2986,0x2945,0x2124,0x2144,0x2965,0x2945,0x2145,0x2104,0x2124,0x2104,0x2124,0x2965,0x2124,0x2124,0x2965,0x2965,0x2104,0x1903, +0x2124,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x2144,0x2144,0x2986,0x2965,0x2145,0x2124,0x1904,0x2124,0x2945,0x2145,0x2965,0x2144,0x2145,0x2145,0x2165,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2145,0x2966,0x2965,0x2965,0x2965,0x2945,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2966,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x3186,0x2986,0x2965,0x2965,0x2965,0x2144,0x2945,0x2965,0x2165,0x2965,0x2965,0x2965,0x2965,0x2165,0x2985,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2985,0x29a6,0x2985,0x31a6,0x2985,0x2985,0x2165,0x2165,0x2986,0x2965,0x2985,0x31c6,0x31c6,0x31a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2966,0x31c7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x1904,0x0020,0x0861,0x0861,0x0041,0x0841,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x1082,0x52cd,0x94d2,0x3986,0x2945,0x20e3,0x18c3,0x2103,0x2124,0x2104,0x2124,0x2924,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18a3,0x2946,0x8c94,0x6b4e,0x0841,0x0861,0x18c3,0x2104,0x2104,0x2944,0x20e3,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x49c5,0x1082,0x0000,0x3186,0x39e7,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2945,0x3186,0x39e7,0x3186,0x2145,0x2966,0x2986,0x2986,0x2966,0x2945,0x2986,0x2986,0x2966,0x2986,0x31a6,0x3186,0x2965,0x2965,0x2965,0x2965,0x2965,0x2165,0x29a6,0x31a6,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x2966,0x2966,0x2145,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x3186,0x3186,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2965,0x2165,0x2986,0x3186,0x2145,0x31a6,0x31a6,0x2945,0x3186,0x2145,0x2145,0x2986,0x2145,0x2985,0x31c7,0x2965,0x2145,0x2145,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145,0x2125,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2124,0x2144,0x2144,0x2124,0x2945,0x2945,0x2125,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x1904, +0x2104,0x2965,0x2125,0x2104,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x1904,0x2124,0x2124,0x2124,0x29a6,0x2165,0x2145,0x2965,0x2965,0x2965,0x2145,0x2945,0x2124,0x2124,0x2124,0x2965,0x2145,0x2145,0x2145,0x2125,0x2945,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2185,0x2165,0x2165,0x2965,0x2125,0x2125,0x2125,0x2145,0x2965,0x2985,0x2965,0x2985,0x2986,0x31a6,0x2986,0x2145,0x2165,0x2165,0x2165,0x2945,0x2986,0x29a6,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2945,0x2945,0x2966,0x2986,0x3186,0x2986,0x2165,0x2145,0x3186,0x3186,0x2985,0x2986,0x2965,0x2986,0x2985,0x2965,0x2965,0x2986,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x31c7,0x2966,0x2145,0x2966,0x2986,0x2986,0x3186,0x31c7,0x3186,0x3186,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x18e3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18a3,0x1082,0x0861,0x0861,0x18c3,0x3a08,0x39e7,0x4208,0x39c6,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2104,0x2104,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x2945,0x2945,0x636d,0x6bae,0x10a2,0x0841,0x1082,0x18e3,0x18e3,0x39c6,0x39a6,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a3,0x18c3,0x18a3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x5288,0x1082,0x1082,0x18a2,0x3186,0x31a6,0x3186,0x3186,0x2986,0x31c7,0x2965,0x31a6,0x31c7,0x31a6,0x2145,0x2986,0x3186,0x31a6,0x2165,0x2965,0x2165,0x2986,0x2986,0x2986,0x31a6,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x2985,0x2985,0x2986,0x2986,0x2965,0x3186,0x2965,0x2966,0x2986,0x2986,0x2985,0x2985,0x2165,0x2965,0x29a6,0x2965,0x2986,0x2966,0x2945,0x2965,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2986,0x2965,0x3186,0x2965,0x2965,0x3186,0x2966,0x2945,0x2966,0x2966,0x2985,0x31c6,0x2165,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2966,0x3186,0x3166,0x2945,0x2925,0x2125,0x2945,0x2945,0x2124,0x2145,0x2145,0x2965,0x2986,0x2945,0x2965,0x3186,0x2145,0x2124,0x2124,0x2124,0x2125,0x2945,0x2965,0x2144,0x2124,0x2965,0x2104,0x2124,0x2965,0x2965,0x3186,0x1903,0x2124, +0x2124,0x2125,0x2104,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2104,0x1904,0x2124,0x2124,0x1904,0x2124,0x2145,0x2145,0x2145,0x2145,0x2945,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2965,0x2945,0x2945,0x2145,0x2124,0x2965,0x2145,0x2966,0x2965,0x2965,0x2145,0x2145,0x2965,0x2985,0x2165,0x2965,0x2965,0x2145,0x2965,0x2965,0x2165,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2945,0x2945,0x2965,0x2985,0x2965,0x2965,0x2985,0x2185,0x2165,0x2965,0x3186,0x2985,0x2965,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2966,0x2966,0x2966,0x2965,0x2986,0x3186,0x2986,0x2965,0x2986,0x31c7,0x2986,0x2986,0x3186,0x2966,0x2965,0x2965,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x3187,0x2986,0x2986,0x2986,0x2966,0x3186,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a3,0x20e4,0x2103,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x0841,0x0861,0x18e3,0x2104,0x18c3,0x31c6,0x2944,0x2965,0x18c3,0x18c3,0x18e3,0x2944,0x2945,0x2924,0x2103,0x18c3,0x10a2,0x18a2,0x20e3,0x2124,0x39e7,0x2124,0x31e8,0x2125,0x0861,0x0861,0x18c2,0x18c2,0x2965,0x3186,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x6b2c,0x10a2,0x10a2,0x18e4,0x39a7,0x2986,0x3186,0x2965,0x2986,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2945,0x29a6,0x31c6,0x2965,0x2985,0x2986,0x31c6,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2986,0x2965,0x2985,0x2986,0x3186,0x2965,0x2965,0x2986,0x2965,0x2986,0x31c6,0x2165,0x2965,0x31a6,0x2945,0x2965,0x2165,0x29a6,0x2966,0x2945,0x2986,0x2986,0x2965,0x2965,0x39c7,0x31a6,0x2965,0x2165,0x2986,0x2986,0x2965,0x2965,0x2986,0x2145,0x2945,0x2966,0x3186,0x2966,0x2965,0x31a6,0x29a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2145,0x2965,0x2986,0x2966,0x2965,0x3186,0x2986,0x2945,0x2965,0x2944,0x2965,0x2965,0x2945,0x2986,0x2965,0x2965,0x2965,0x3186,0x2145,0x2124,0x2124,0x2125,0x2104,0x2965,0x2944,0x2124,0x2145,0x2124,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124, +0x2124,0x2124,0x2125,0x2145,0x2124,0x2145,0x2124,0x2124,0x2104,0x2124,0x1904,0x2124,0x2144,0x2124,0x2124,0x2965,0x2986,0x2124,0x2145,0x2945,0x2124,0x2945,0x2945,0x2965,0x2965,0x2985,0x31c7,0x31a6,0x2124,0x2965,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2985,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x2965,0x2965,0x2124,0x39e7,0x3a07,0x2144,0x2965,0x2965,0x2945,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x3185,0x2965,0x2965,0x2985,0x2165,0x2165,0x2965,0x2986,0x31c7,0x2986,0x2986,0x2965,0x2965,0x2986,0x2966,0x31c7,0x3186,0x2986,0x2986,0x2965,0x2945,0x3186,0x2986,0x2966,0x2965,0x2986,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2966,0x2986,0x2965,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x18c3,0x10c2,0x18c2,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x18c3,0x2944,0x2944,0x2124,0x18e3,0x18c3,0x18e3,0x18c3,0x2944,0x1903,0x2124,0x10a2,0x18e4,0x2987,0x1082,0x0841,0x1082,0x10a2,0x18c3,0x20e3,0x18e3,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x630c,0x18e3,0x1082,0x2124,0x39c7,0x2986,0x31c7,0x2165,0x2986,0x3186,0x2965,0x2165,0x2986,0x2966,0x2966,0x3186,0x39e7,0x2985,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x31a6,0x2965,0x31c7,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2145,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x29a6,0x2966,0x2965,0x31a6,0x2985,0x2965,0x2985,0x31a6,0x31a7,0x2966,0x2145,0x29a6,0x2965,0x2985,0x31a6,0x2986,0x3186,0x3186,0x2965,0x2945,0x2945,0x2965,0x2985,0x31a6,0x2985,0x2965,0x2985,0x2945,0x2965,0x2965,0x2965,0x2165,0x2145,0x2165,0x2965,0x2965,0x2986,0x2985,0x2945,0x2965,0x2965,0x2985,0x2124,0x2145,0x2985,0x2965,0x31a6,0x2125,0x2124,0x2124,0x2124,0x2945,0x2945,0x2965,0x2945,0x2124,0x2965,0x2145,0x1904,0x2124,0x2124,0x2124,0x2145, +0x2125,0x2124,0x2145,0x2124,0x1903,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2125,0x2145,0x2124,0x2145,0x2965,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2985,0x2965,0x2165,0x2145,0x2145,0x2965,0x2966,0x2965,0x2165,0x2145,0x2986,0x2145,0x2965,0x2965,0x2966,0x2966,0x2945,0x2966,0x2966,0x2966,0x2965,0x2965,0x2965,0x2125,0x2986,0x2986,0x2145,0x2986,0x2965,0x2986,0x29a6,0x2165,0x2986,0x29a6,0x3186,0x2985,0x2965,0x2965,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2966,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2965,0x31a6,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2965,0x2965,0x3186,0x2966,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31e7,0x2986,0x31a6,0x31c6,0x3a07,0x10a2,0x10a2,0x18e3,0x10a2,0x18e3,0x1924,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0841,0x2945,0x39e6,0x10a2,0x1082,0x0861,0x0841,0x0841,0x0861,0x18c3,0x1082,0x18c3,0x1082,0x18e3,0x18e3,0x2124,0x20e3,0x2103,0x20e3,0x2944,0x2104,0x18c3,0x18c3,0x18e3,0x2144,0x18c3,0x18e3,0x1082,0x18c3,0x10a2,0x2986,0x10c3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x4a8a,0x18e3,0x0020,0x18e3,0x31c6,0x29a6,0x2986,0x2966,0x2966,0x2966,0x2986,0x29a6,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2986,0x2985,0x2985,0x2965,0x2986,0x2165,0x2986,0x2145,0x2145,0x2966,0x2986,0x2965,0x2986,0x2966,0x3186,0x2985,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2965,0x2986,0x2985,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2145,0x2965,0x2986,0x2985,0x2965,0x2966,0x2966,0x2986,0x31a6,0x2986,0x2986,0x3186,0x3186,0x2966,0x2165,0x2965,0x2965,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x2145,0x2985,0x2945,0x2965,0x31a6,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2945,0x3186,0x2945,0x2145,0x2144,0x31a6,0x2985,0x2144,0x2965,0x2145,0x2145,0x2145,0x2165,0x2124,0x2965,0x2965,0x2124,0x2145,0x2144,0x2144,0x2124,0x2104,0x2945,0x2945,0x2124,0x2144,0x2124,0x2124, +0x2145,0x1904,0x1904,0x2104,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2124,0x2124,0x2125,0x2145,0x2145,0x2945,0x2124,0x2124,0x2145,0x2965,0x2945,0x2124,0x2124,0x2945,0x2965,0x2165,0x2165,0x2165,0x2945,0x31a6,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2965,0x2966,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2965,0x2986,0x2145,0x31a6,0x2986,0x2145,0x2986,0x2965,0x2986,0x2986,0x2165,0x2165,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2985,0x3186,0x2965,0x2966,0x3186,0x2986,0x3186,0x2986,0x2945,0x2965,0x3186,0x2966,0x3186,0x3186,0x2965,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x0881,0x0881,0x18e3,0x18c3,0x10c3,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2124,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a3,0x39c7,0x4226,0x1082,0x1082,0x0861,0x0841,0x0841,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x2924,0x2104,0x2124,0x3165,0x2944,0x18e3,0x20e3,0x20e3,0x18e3,0x1082,0x10a3,0x1082,0x18c3,0x1082,0x1904,0x10a2,0x0841,0x0861,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x4208,0x10c2,0x0020,0x10c2,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2966,0x2965,0x29a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x31a6,0x2985,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x2965,0x2966,0x2965,0x2986,0x2966,0x2986,0x3186,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x31e7,0x2165,0x2986,0x2965,0x2985,0x31a6,0x3186,0x3186,0x2986,0x2965,0x29a6,0x31a6,0x31a6,0x29a6,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2965,0x2145,0x31a6,0x31a6,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x3186,0x3186,0x3186,0x2145,0x2145,0x2986,0x2945,0x2945,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2124,0x31a6,0x3186,0x2945,0x2145,0x2965,0x2124,0x2165,0x2165,0x2125,0x2165,0x2986,0x2144,0x2945,0x2965,0x2104,0x2145,0x2965,0x2124,0x2145,0x2945,0x2145,0x2124,0x1904,0x2124, +0x2124,0x2104,0x2104,0x2104,0x2104,0x2125,0x2124,0x2145,0x2124,0x1904,0x2124,0x2145,0x2125,0x2124,0x2124,0x2145,0x2145,0x2965,0x2145,0x2145,0x2945,0x2965,0x2124,0x2945,0x2144,0x2124,0x2965,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2965,0x2965,0x2145,0x2145,0x2965,0x2965,0x2945,0x2945,0x2945,0x2965,0x2965,0x2986,0x3186,0x2965,0x2165,0x2985,0x2965,0x2965,0x2965,0x29a6,0x31a6,0x2965,0x2144,0x3186,0x31a6,0x2986,0x2965,0x2966,0x2966,0x2145,0x2145,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x2965,0x2986,0x2965,0x2986,0x31c7,0x2966,0x2966,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2986,0x2966,0x2986,0x3186,0x2986,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x3186,0x18c3,0x0841,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x2104,0x2945,0x2104,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x18a2,0x18a2,0x18e3,0x2104,0x2945,0x3185,0x2944,0x2103,0x18c3,0x18e3,0x1082,0x10a2,0x1082,0x1082,0x18c2,0x1082,0x18a2,0x1082,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0841,0x0861,0x0861,0x0861,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x39c7,0x10a2,0x0040,0x10a2,0x3186,0x3186,0x2985,0x31a6,0x2965,0x2985,0x2985,0x2985,0x2965,0x2965,0x2965,0x2986,0x2965,0x31a6,0x2965,0x2965,0x3186,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2986,0x2965,0x2965,0x2145,0x2965,0x31a6,0x29a6,0x2965,0x2985,0x2986,0x2985,0x2986,0x2985,0x2965,0x31c6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2986,0x29a6,0x2986,0x2986,0x2965,0x2985,0x2965,0x2145,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2124,0x2945,0x2965,0x2965,0x2145,0x31c6,0x31a6,0x2965,0x2985,0x31a6,0x29a6,0x2965,0x2945,0x2945,0x31c7,0x2965,0x2945,0x2965,0x2945,0x2965,0x2985,0x2986,0x2986,0x2965,0x2124,0x2145,0x2145,0x2145,0x2966,0x2125,0x2966,0x2965,0x2145,0x2965,0x2965,0x2124,0x2145,0x2945,0x2124,0x2124,0x2945,0x2124,0x2145,0x2145,0x1904, +0x2124,0x2124,0x2124,0x2125,0x2145,0x2125,0x2124,0x2124,0x2124,0x2125,0x2124,0x2124,0x2145,0x2145,0x1924,0x2124,0x2145,0x2966,0x2145,0x2145,0x2965,0x2945,0x2124,0x2124,0x2145,0x2145,0x31a6,0x2985,0x2124,0x2945,0x2165,0x2144,0x2145,0x2965,0x2965,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x3186,0x2985,0x2965,0x2144,0x2145,0x2965,0x2965,0x2985,0x2965,0x31c6,0x39e7,0x2965,0x2145,0x2145,0x2965,0x31a6,0x2986,0x2965,0x2966,0x2986,0x2145,0x2145,0x2165,0x2165,0x2165,0x2985,0x2965,0x2165,0x2985,0x29a6,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2145,0x2986,0x31c7,0x2966,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2985,0x2965,0x31a6,0x18c3,0x0020,0x10a2,0x2104,0x18e3,0x10c2,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x18e3,0x20e4,0x18c3,0x18a3,0x10a3,0x18a3,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1081,0x10a2,0x10a2,0x10a2,0x2103,0x2104,0x2944,0x20e3,0x18c3,0x18c3,0x18e3,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x1082,0x1082,0x0861,0x10a2,0x1082,0x0020,0x0841,0x0861,0x0861,0x1081,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x31a6,0x1082,0x0840,0x18c3,0x3186,0x31a6,0x2965,0x2965,0x2986,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2985,0x2165,0x2965,0x2986,0x2986,0x2986,0x2965,0x2165,0x2965,0x2965,0x31c6,0x31c6,0x2965,0x3186,0x39c7,0x2965,0x2965,0x2965,0x31a6,0x2966,0x2966,0x2965,0x2945,0x2965,0x31a6,0x2985,0x2965,0x2965,0x2965,0x2965,0x2985,0x29a6,0x2986,0x2145,0x29a6,0x2986,0x31a6,0x2985,0x2965,0x2965,0x31a6,0x31c6,0x31c6,0x29a6,0x2986,0x2965,0x2986,0x31a7,0x2966,0x2985,0x31a6,0x2986,0x2165,0x3186,0x3186,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2145,0x29a6,0x2986,0x2965,0x2145,0x2965,0x31c6,0x3186,0x2986,0x2985,0x2965,0x2124,0x2945,0x2144,0x2965,0x2986,0x2965,0x2145,0x2145,0x2145,0x2966,0x2965,0x2145,0x2125,0x2145,0x2125,0x2124,0x2124,0x2985,0x2145,0x2104,0x2124,0x2144,0x2124,0x2124,0x1904,0x2145, +0x2124,0x2124,0x2145,0x2144,0x2144,0x2124,0x1904,0x2124,0x2125,0x2124,0x2124,0x1904,0x2124,0x2125,0x2145,0x2145,0x2124,0x2124,0x2145,0x2945,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x31a6,0x2124,0x2145,0x2145,0x2144,0x2145,0x2965,0x2986,0x2986,0x2145,0x2144,0x2145,0x2965,0x2965,0x2965,0x2985,0x3186,0x2965,0x2945,0x2945,0x2985,0x2965,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x3186,0x2965,0x2145,0x2965,0x2986,0x2965,0x2945,0x2145,0x2945,0x2965,0x2985,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2966,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2985,0x31c6,0x29a6,0x10a2,0x0020,0x0861,0x18e3,0x1904,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x18c3,0x2104,0x18e3,0x2104,0x18e3,0x18e4,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1081,0x10a2,0x10a2,0x18a2,0x2103,0x2924,0x2924,0x20e3,0x2104,0x18e3,0x18c3,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x1082,0x10a2,0x1082,0x1082,0x18c3,0x10a2,0x0020,0x0020,0x0841,0x1082,0x0861,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x2944,0x0861,0x0000,0x10c3,0x31c6,0x3186,0x2985,0x3186,0x31c6,0x3186,0x2965,0x2165,0x2986,0x2985,0x2965,0x2966,0x2965,0x2965,0x3186,0x3186,0x31c7,0x2985,0x29a6,0x2986,0x2965,0x29a6,0x2965,0x2986,0x3186,0x2965,0x2986,0x2986,0x2965,0x3186,0x2986,0x3186,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x31a6,0x2965,0x2985,0x2986,0x2145,0x2986,0x2986,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x2965,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2966,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2165,0x2165,0x2986,0x2185,0x2165,0x2965,0x2965,0x2145,0x2986,0x3186,0x2965,0x2965,0x2965,0x2124,0x2986,0x2965,0x2965,0x2145,0x2145,0x2145,0x2145,0x2965,0x2965,0x2125,0x2125,0x2124,0x2144,0x2985,0x2965,0x2104,0x2124,0x2145,0x2965,0x2124,0x2124,0x2144,0x2124, +0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2945,0x2145,0x2145,0x2125,0x2125,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124,0x2965,0x2965,0x2145,0x2945,0x2124,0x2925,0x2144,0x2124,0x2124,0x2965,0x2945,0x2965,0x2145,0x2945,0x2985,0x2965,0x2145,0x2965,0x2145,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2945,0x2144,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x31a6,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x2965,0x2985,0x2986,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2985,0x29a6,0x29a6,0x0882,0x0020,0x0841,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x1082,0x18c3,0x10a2,0x1082,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x2145,0x10a2,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e3,0x2944,0x20e3,0x18e3,0x2944,0x18e3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x10a2,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x3186,0x18e3,0x0020,0x0020,0x0020,0x0861,0x1082,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x18a2,0x18c3,0x2103,0x0861,0x0000,0x18e3,0x4208,0x39c7,0x3186,0x31a7,0x3186,0x3186,0x2986,0x2966,0x29a6,0x2986,0x2965,0x2966,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2966,0x2965,0x2986,0x2986,0x2965,0x2965,0x3186,0x39e7,0x2985,0x2986,0x3186,0x2965,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2985,0x2986,0x31a6,0x31c6,0x2965,0x2945,0x4a69,0x39e7,0x2986,0x31a7,0x2966,0x2986,0x2945,0x2986,0x3186,0x2965,0x2986,0x2986,0x2986,0x2985,0x31a6,0x2986,0x2965,0x2945,0x2986,0x31a6,0x2965,0x2965,0x2145,0x2965,0x29a6,0x29a6,0x2165,0x2165,0x2145,0x2165,0x2965,0x2945,0x2986,0x2986,0x2145,0x2965,0x3186,0x2965,0x2965,0x2985,0x2145,0x2144,0x2145,0x2145,0x2965,0x2965,0x2945,0x2124,0x2145,0x2965,0x3186,0x2124,0x2144,0x2945,0x2965,0x2965,0x2965,0x2124,0x2965,0x2124,0x2145, +0x2124,0x2945,0x2145,0x2145,0x2125,0x2124,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2125,0x2125,0x2145,0x2145,0x2125,0x2124,0x2145,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2945,0x2945,0x2145,0x2144,0x2124,0x2965,0x2965,0x2945,0x2945,0x2945,0x2145,0x2965,0x2985,0x2145,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2945,0x2945,0x3186,0x3186,0x2985,0x2965,0x2945,0x2965,0x2965,0x3186,0x31a6,0x2965,0x2965,0x3186,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2985,0x2945,0x2986,0x2986,0x2986,0x2966,0x2985,0x2986,0x2965,0x2966,0x2965,0x2986,0x31a6,0x2986,0x31c6,0x2985,0x2986,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2965,0x2966,0x39e7,0x31a6,0x2965,0x31a6,0x3186,0x1082,0x0020,0x0040,0x1082,0x18e3,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18e3,0x2103,0x10a2,0x1082,0x18a2,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0020,0x0020,0x0861,0x18e4,0x10a3,0x1082,0x0861,0x18e3,0x2944,0x2104,0x10a3,0x18c3,0x2966,0x2104,0x0841,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x18a2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1062,0x1082,0x0841,0x0861,0x18e3,0x10a2,0x1082,0x31a6,0x5289,0x2104,0x1082,0x0020,0x0020,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18a2,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18e3,0x0841,0x0000,0x18c3,0x31c7,0x31a6,0x31c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x2986,0x31c6,0x29a6,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x2985,0x29a6,0x2145,0x2985,0x3186,0x2986,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2945,0x2965,0x2966,0x31a6,0x31a6,0x31a6,0x2965,0x31c6,0x3a08,0x4228,0x31a7,0x2986,0x2986,0x2986,0x31a6,0x39c7,0x2986,0x2986,0x39e7,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x2145,0x2965,0x31a7,0x2965,0x2145,0x2965,0x2986,0x2966,0x2945,0x31a6,0x2145,0x2145,0x2965,0x2124,0x2965,0x2985,0x2145,0x2144,0x2965,0x2986,0x2124,0x31c6,0x31c7,0x2965,0x2965,0x2965,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x31a6,0x2965,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x31a6,0x2144,0x2104, +0x2124,0x2124,0x2144,0x2145,0x2145,0x2945,0x2124,0x2145,0x2145,0x2145,0x2144,0x2145,0x2124,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2145,0x2165,0x2144,0x2144,0x2145,0x2965,0x2124,0x2945,0x2945,0x2965,0x2145,0x2124,0x2945,0x2145,0x2945,0x2965,0x2965,0x2165,0x2165,0x2165,0x2165,0x2145,0x2965,0x2965,0x2985,0x2985,0x2165,0x2165,0x2985,0x2986,0x2965,0x2966,0x2965,0x2945,0x2945,0x2986,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2986,0x2986,0x2165,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2966,0x2986,0x2986,0x2965,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x2985,0x2145,0x2965,0x31a6,0x2965,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2966,0x3186,0x2965,0x31a7,0x31a7,0x3186,0x39c7,0x2965,0x0861,0x0000,0x0020,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2124,0x18c3,0x1082,0x10a2,0x18a2,0x18a2,0x1081,0x0861,0x0861,0x0841,0x0020,0x0841,0x18e3,0x18e3,0x1082,0x0861,0x0841,0x2104,0x2965,0x2124,0x18e3,0x2104,0x2966,0x2986,0x1082,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1081,0x1082,0x1062,0x0841,0x1082,0x1904,0x10a3,0x10a2,0x2124,0x4207,0x20e3,0x10a2,0x0861,0x0020,0x0020,0x0841,0x1082,0x0861,0x10a2,0x18e3,0x18a2,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x18c2,0x0841,0x0020,0x10a2,0x31a6,0x29a6,0x31c7,0x31a7,0x3186,0x3187,0x2966,0x3186,0x3186,0x31a6,0x2986,0x2965,0x2986,0x3186,0x31a6,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2965,0x2985,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2145,0x2145,0x2965,0x2965,0x2965,0x2985,0x2986,0x2965,0x31a6,0x2986,0x3186,0x2945,0x2145,0x2965,0x3186,0x31a7,0x2986,0x2985,0x2965,0x39e7,0x3186,0x3186,0x2966,0x3186,0x3186,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x31a6,0x2986,0x3186,0x2945,0x2965,0x2966,0x2145,0x2965,0x2965,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2165,0x2965,0x2965,0x2945,0x2145,0x2165,0x2985,0x2965,0x3186,0x31a6,0x2985,0x2986,0x2145,0x2945,0x2144,0x2945,0x2124,0x2145,0x2945,0x2144,0x2965,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2124,0x2145,0x2986,0x2965,0x2144, +0x2124,0x2945,0x2145,0x2945,0x2144,0x2945,0x2145,0x2145,0x2145,0x2145,0x2144,0x2124,0x2945,0x2965,0x2145,0x2145,0x2124,0x2145,0x2965,0x1904,0x2124,0x2144,0x2145,0x2965,0x2945,0x2144,0x2145,0x2145,0x2965,0x2144,0x2124,0x2124,0x2144,0x2965,0x2165,0x2965,0x2985,0x2145,0x2145,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2965,0x2965,0x2986,0x2985,0x2986,0x2966,0x2966,0x2965,0x2985,0x2965,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2985,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2986,0x2966,0x2966,0x2986,0x2965,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31a6,0x3185,0x2985,0x2986,0x2165,0x2165,0x29a6,0x2966,0x2966,0x3186,0x2985,0x2965,0x2945,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31c6,0x31c6,0x2985,0x0861,0x0020,0x0040,0x0861,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2965,0x2965,0x3165,0x2965,0x2966,0x39e8,0x2104,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x18c3,0x18e4,0x18c3,0x10a2,0x18e3,0x2965,0x18a2,0x18c2,0x18a2,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18e3,0x10a2,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0020,0x0000,0x10a2,0x31c6,0x29c6,0x2986,0x31a6,0x3186,0x3186,0x31c7,0x2966,0x3186,0x2986,0x2986,0x2985,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2985,0x2965,0x31c7,0x29a6,0x2145,0x2985,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x2965,0x2965,0x2985,0x2965,0x2965,0x3186,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2965,0x2966,0x31a7,0x31c7,0x39e7,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x31a7,0x2945,0x3186,0x2966,0x2145,0x2965,0x2985,0x2965,0x2965,0x2165,0x2145,0x2945,0x2965,0x2986,0x2985,0x2965,0x2124,0x2965,0x2985,0x1903,0x2965,0x2986,0x2145,0x2145,0x2145,0x2124,0x2144,0x2965,0x2965,0x2986,0x2144,0x2124,0x2945,0x2124,0x2965,0x2945,0x2124, +0x2104,0x2124,0x2104,0x2124,0x2124,0x2144,0x2145,0x2144,0x2124,0x2144,0x2144,0x2986,0x2145,0x2145,0x2145,0x2965,0x2144,0x2144,0x2144,0x2124,0x2144,0x2986,0x2966,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2145,0x2965,0x2985,0x2165,0x2985,0x2145,0x2965,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2145,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2985,0x3186,0x31a7,0x2965,0x2965,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2965,0x31a6,0x2986,0x2986,0x2966,0x2965,0x2986,0x29a6,0x29a6,0x2986,0x2985,0x2985,0x2986,0x2986,0x2985,0x2965,0x2986,0x31a6,0x3186,0x29a6,0x29a6,0x2186,0x2185,0x29a6,0x2986,0x2966,0x2965,0x2985,0x2985,0x2985,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2986,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x0881,0x0020,0x0841,0x0861,0x10a2,0x18e3,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x2104,0x18e3,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0841,0x0020,0x0841,0x2104,0x18c3,0x1082,0x0841,0x0020,0x0841,0x2944,0x2965,0x39c7,0x5248,0x39c7,0x2986,0x4229,0x528a,0x18a2,0x0841,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0861,0x0841,0x10a3,0x2945,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x0861,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18e3,0x18c2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x18c3,0x18a2,0x0841,0x0020,0x1082,0x2986,0x31c6,0x31c7,0x2985,0x31c6,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x2965,0x2986,0x2986,0x2165,0x31c7,0x2986,0x2986,0x31a6,0x3186,0x2985,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2965,0x2986,0x39c7,0x3186,0x2986,0x31a6,0x2986,0x2966,0x2966,0x3186,0x31a7,0x3186,0x2965,0x2965,0x3186,0x31a6,0x2985,0x2986,0x3186,0x31a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x2966,0x2966,0x2945,0x2945,0x2945,0x2985,0x2965,0x2144,0x2965,0x2965,0x2945,0x2965,0x2165,0x2965,0x2144,0x2965,0x29a6,0x2145,0x2965,0x2986,0x2145,0x2125,0x2965,0x2965,0x2145,0x2965,0x2144,0x2945,0x2965,0x2965,0x2965,0x2144,0x2124,0x2985,0x2945, +0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x2145,0x2145,0x2124,0x1904,0x2144,0x2965,0x2124,0x2125,0x2145,0x2125,0x2945,0x2145,0x2145,0x2145,0x2145,0x31a6,0x2966,0x2125,0x2165,0x2124,0x2125,0x2145,0x2145,0x2145,0x2945,0x2966,0x2966,0x2945,0x2965,0x2965,0x2965,0x2966,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x31a7,0x31a6,0x2965,0x2965,0x2986,0x2965,0x3186,0x2966,0x31a6,0x29a6,0x2986,0x2986,0x2966,0x2966,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2165,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2966,0x2986,0x2986,0x2185,0x2185,0x2986,0x2966,0x2986,0x2986,0x3186,0x2985,0x2965,0x2986,0x2966,0x3186,0x3186,0x2986,0x2986,0x29a6,0x29a6,0x29a6,0x31a6,0x2985,0x29a6,0x2986,0x0882,0x0020,0x0841,0x1082,0x18c3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2124,0x10a2,0x0862,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0020,0x0020,0x10a2,0x2104,0x10a2,0x0861,0x0841,0x0020,0x1082,0x2944,0x2945,0x4207,0x5289,0x5289,0x39c7,0x4208,0x6b6d,0x4207,0x1061,0x0861,0x1082,0x18a2,0x18a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x1082,0x0841,0x1082,0x31a7,0x3186,0x2104,0x20e4,0x2104,0x2945,0x2945,0x0841,0x0861,0x18c3,0x18a3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x10a2,0x0841,0x0020,0x10a2,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x31c7,0x39c7,0x31a6,0x31c7,0x2986,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x3186,0x2965,0x29a6,0x31a6,0x31a6,0x31a7,0x2966,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2965,0x2965,0x2985,0x2986,0x3186,0x2986,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x2985,0x2965,0x2965,0x2965,0x3186,0x2985,0x31a6,0x3186,0x2966,0x2986,0x2966,0x2965,0x2965,0x2965,0x2965,0x2986,0x31c7,0x3186,0x2986,0x2986,0x29a6,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x2965,0x2966,0x2165,0x2965,0x2945,0x2144,0x2986,0x2985,0x2965,0x2965,0x2965,0x2965,0x2144,0x2965,0x2145,0x31c6,0x31a6,0x2945,0x2966,0x2966,0x2965,0x2145,0x2144,0x2985,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965, +0x2124,0x2124,0x1924,0x1924,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2945,0x2945,0x2965,0x31a6,0x2145,0x2125,0x2125,0x2125,0x2125,0x2124,0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2125,0x2125,0x2945,0x2966,0x2945,0x2986,0x2965,0x2965,0x2965,0x2965,0x31a6,0x3186,0x2965,0x2965,0x31a6,0x2965,0x2985,0x31a6,0x2986,0x2986,0x2965,0x3166,0x2965,0x2945,0x2965,0x2986,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2986,0x2986,0x3186,0x2986,0x3166,0x31a6,0x31a6,0x2985,0x2945,0x2966,0x2986,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x2986,0x2986,0x2986,0x2965,0x29a6,0x29a6,0x29a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x2986,0x2965,0x2985,0x2986,0x31a6,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x0861,0x0020,0x0841,0x1082,0x18e3,0x2104,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2124,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0861,0x0841,0x0020,0x0841,0x18e4,0x18c3,0x1082,0x0841,0x0020,0x0821,0x18c3,0x2944,0x2965,0x39c6,0x4207,0x5aea,0x4208,0x39e8,0x4a6a,0x5aeb,0x2945,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0861,0x2986,0x4229,0x3186,0x2946,0x2945,0x2945,0x31a6,0x2924,0x0020,0x0841,0x1082,0x18c3,0x1061,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c3,0x18e3,0x18c3,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18c3,0x18a2,0x0841,0x0000,0x18c3,0x39c7,0x2966,0x31a7,0x39e8,0x2966,0x31a7,0x3a08,0x2986,0x2966,0x2986,0x3186,0x31a6,0x31c7,0x39c7,0x31a6,0x3186,0x3186,0x3186,0x3186,0x39e7,0x31a6,0x31a6,0x39c7,0x2986,0x31a6,0x2986,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x2985,0x2985,0x2965,0x31a6,0x31c6,0x2986,0x2165,0x31a6,0x3186,0x3186,0x2965,0x3186,0x2986,0x2985,0x31a6,0x3186,0x2965,0x2966,0x2966,0x31a7,0x3186,0x2945,0x2965,0x3186,0x2945,0x2965,0x2965,0x31a6,0x39c7,0x2965,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x3186,0x2144,0x2965,0x2986,0x2985,0x31a6,0x2966,0x2145,0x2144,0x2165,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2965,0x2945,0x2985,0x2965,0x2124,0x2965,0x2965,0x2945,0x2145,0x2966,0x2966,0x2965,0x2145,0x2145,0x2145,0x2124,0x2965,0x2965,0x2124,0x2145,0x2145,0x2145,0x2965,0x2124, +0x2945,0x2124,0x2124,0x2124,0x2945,0x2124,0x2145,0x2144,0x2144,0x31a6,0x2985,0x2124,0x2945,0x2965,0x2965,0x2965,0x2145,0x2145,0x2945,0x2125,0x2124,0x2145,0x2145,0x2145,0x2145,0x2124,0x2145,0x2145,0x2145,0x2945,0x2165,0x2965,0x2945,0x2965,0x2965,0x2965,0x2145,0x2965,0x2965,0x2985,0x2986,0x2986,0x2965,0x3186,0x3186,0x2965,0x2965,0x2965,0x2966,0x3186,0x3186,0x2966,0x2965,0x2965,0x2985,0x2985,0x2965,0x2965,0x2986,0x3186,0x2966,0x2986,0x3186,0x2986,0x2965,0x2986,0x2986,0x2985,0x2965,0x2986,0x2986,0x2965,0x2965,0x2165,0x29a6,0x31e7,0x2985,0x2986,0x29a6,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x2965,0x2986,0x2985,0x2985,0x3186,0x3186,0x31a7,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x31a6,0x1082,0x0020,0x0841,0x0861,0x18c3,0x2104,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0861,0x0841,0x0020,0x0861,0x2104,0x10a2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2124,0x3185,0x39a6,0x3185,0x4a48,0x4a48,0x4a28,0x39a7,0x4208,0x3a08,0x18e3,0x0861,0x0841,0x1061,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x10a2,0x10a2,0x1062,0x0861,0x0861,0x2104,0x39e8,0x39e8,0x31a7,0x31a7,0x31a7,0x31a6,0x39c6,0x2103,0x0020,0x0020,0x0861,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x18a3,0x18a2,0x18c3,0x18c3,0x0841,0x0020,0x10a2,0x4228,0x31a7,0x31a7,0x39e7,0x31a7,0x31c7,0x31c7,0x2986,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x31a6,0x31a7,0x31a7,0x3186,0x3186,0x31c6,0x2986,0x31c7,0x3186,0x2986,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2965,0x2985,0x2986,0x2965,0x2165,0x31a6,0x2985,0x2965,0x2986,0x3186,0x3186,0x3186,0x2965,0x31a6,0x31c7,0x31a6,0x2966,0x31a6,0x31a7,0x2966,0x2986,0x2986,0x2966,0x31c7,0x31c7,0x2965,0x2966,0x3186,0x2966,0x2965,0x31a6,0x31c7,0x2986,0x31a6,0x39e7,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2986,0x2965,0x2965,0x2945,0x2965,0x2986,0x2124,0x2965,0x2965,0x2945,0x2965,0x3186,0x2945,0x2145,0x2144,0x2985,0x2965,0x2965,0x2145,0x2965,0x2144,0x2145,0x2144,0x2144,0x2124,0x2104, +0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2145,0x2125,0x1924,0x2165,0x2145,0x2124,0x2145,0x2965,0x2965,0x2165,0x2145,0x2145,0x2124,0x2145,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2965,0x2144,0x2985,0x2986,0x2165,0x2165,0x2165,0x2985,0x2965,0x2986,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x31a6,0x2986,0x2966,0x2965,0x2965,0x2965,0x2165,0x2985,0x2965,0x31a6,0x31c7,0x3186,0x3186,0x2986,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2985,0x31a6,0x2965,0x2145,0x2965,0x2965,0x2965,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2985,0x2965,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x3186,0x2965,0x2985,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a6,0x31a7,0x31a6,0x31a7,0x31a6,0x2965,0x1082,0x0020,0x0841,0x0841,0x10a2,0x2944,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2103,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0841,0x0861,0x0020,0x0020,0x10a2,0x18e3,0x10a2,0x0861,0x0020,0x0020,0x18c3,0x2104,0x2124,0x3185,0x31a5,0x2965,0x31a6,0x4a48,0x5289,0x31a6,0x2925,0x2966,0x2945,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x18e3,0x2145,0x2966,0x31a6,0x39c7,0x4208,0x39e7,0x39e7,0x39a6,0x18e3,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0861,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c2,0x1082,0x18c3,0x18c3,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0861,0x0020,0x10a2,0x3a08,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a7,0x2986,0x31a7,0x31a6,0x2965,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x2965,0x31a7,0x3186,0x3186,0x31a6,0x3186,0x2966,0x2986,0x31a6,0x2966,0x2965,0x2986,0x29a6,0x31c7,0x31a6,0x2985,0x2985,0x2986,0x31a6,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x31c6,0x2986,0x2965,0x2965,0x3186,0x2986,0x3186,0x2966,0x2966,0x2986,0x2965,0x2986,0x31a6,0x2965,0x29a6,0x29a6,0x39c7,0x3186,0x2965,0x2966,0x3186,0x2986,0x31a6,0x31a6,0x31c7,0x31a6,0x31c7,0x2985,0x3186,0x31a7,0x2966,0x2966,0x2145,0x2965,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2985,0x2945,0x2965,0x3186,0x2945,0x2986,0x2145,0x2145,0x2965,0x2965,0x2145,0x3186,0x3186,0x2945,0x2945,0x31a6,0x2985,0x2144,0x2165,0x2145,0x2124,0x2124,0x2124,0x2965,0x2144,0x1904, +0x2124,0x2124,0x2145,0x2124,0x2124,0x2965,0x2985,0x2965,0x2165,0x2144,0x1904,0x2144,0x2945,0x2145,0x2145,0x2965,0x2145,0x2145,0x2145,0x2965,0x2986,0x3186,0x2965,0x2145,0x2124,0x2145,0x2124,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2965,0x2986,0x2985,0x2185,0x2165,0x2186,0x31c7,0x2986,0x2965,0x2965,0x2945,0x2966,0x2965,0x3186,0x2986,0x2966,0x2966,0x2986,0x2966,0x2986,0x2965,0x2966,0x2965,0x31a6,0x39c7,0x2986,0x3186,0x31a7,0x2986,0x2966,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x2986,0x2965,0x2945,0x2965,0x2965,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2985,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x31a6,0x2986,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0841,0x18e3,0x10c2,0x1082,0x0841,0x0020,0x0861,0x2104,0x2104,0x2924,0x3186,0x31a5,0x2945,0x3186,0x4a28,0x4a48,0x3186,0x2104,0x20e4,0x2104,0x18e3,0x18a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1904,0x2104,0x2125,0x2966,0x39e8,0x630b,0x4a27,0x39e7,0x31a6,0x18e3,0x0020,0x0020,0x0020,0x0861,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x0861,0x18c2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0881,0x0020,0x10c2,0x31c7,0x2986,0x31a7,0x31c7,0x31c7,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x2965,0x31a7,0x31a6,0x31c6,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x31a6,0x2986,0x3186,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2986,0x2986,0x3186,0x3186,0x2986,0x2966,0x2945,0x2945,0x3186,0x2986,0x3186,0x2986,0x29a6,0x29a6,0x2966,0x2986,0x2965,0x3186,0x31a6,0x2986,0x2965,0x3186,0x3186,0x2965,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x2986,0x2966,0x3186,0x2966,0x2965,0x3186,0x2965,0x2986,0x31a6,0x2945,0x2945,0x2965,0x2945,0x2965,0x2965,0x2945,0x3186,0x31c7,0x2165,0x2986,0x2145,0x2145,0x2966,0x2966,0x3186,0x2965,0x2104,0x2986,0x2145,0x2145,0x2945,0x2145,0x2124,0x2124,0x2124,0x2144,0x2124, +0x2145,0x2124,0x2145,0x2144,0x2145,0x2145,0x2145,0x2165,0x2144,0x2145,0x2165,0x2145,0x2965,0x2965,0x2145,0x2965,0x2144,0x2165,0x2965,0x2165,0x2965,0x2986,0x2945,0x2145,0x2965,0x2145,0x2144,0x2945,0x2945,0x2986,0x2965,0x2945,0x2965,0x2966,0x2985,0x2965,0x2165,0x2165,0x2986,0x31a6,0x2986,0x2965,0x2966,0x2965,0x2966,0x2985,0x2985,0x2986,0x2986,0x2965,0x2945,0x2966,0x2945,0x2945,0x2965,0x2965,0x2986,0x2966,0x2965,0x31a6,0x3186,0x2965,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2986,0x29a6,0x2985,0x2986,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x31a6,0x29a6,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x3186,0x31a6,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x31a6,0x1082,0x0020,0x0841,0x0861,0x1082,0x2945,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a3,0x18c3,0x0861,0x1082,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x0861,0x20e4,0x10a2,0x1082,0x0841,0x0020,0x1082,0x2104,0x20e4,0x2945,0x39a6,0x3185,0x2965,0x3185,0x4207,0x31a6,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x18c3,0x18c2,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c2,0x18e3,0x18e4,0x18e4,0x2104,0x2945,0x39e8,0x62ea,0x4207,0x39c6,0x3185,0x18e3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x10a2,0x0020,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18a2,0x10a2,0x18e3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x0882,0x0020,0x10a2,0x4208,0x39c7,0x31a7,0x39c7,0x31c6,0x31a6,0x31c7,0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x39e7,0x31c7,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x39c6,0x3186,0x31a6,0x39e7,0x31a7,0x31a7,0x2986,0x2986,0x2965,0x2965,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x3186,0x31a6,0x31c6,0x31a6,0x31a6,0x31a7,0x2986,0x31a7,0x3186,0x3186,0x3186,0x31a6,0x2965,0x3186,0x2965,0x2985,0x29a6,0x2986,0x29a6,0x2966,0x3186,0x31c7,0x31c7,0x2145,0x31c7,0x31c7,0x2965,0x29a6,0x29a6,0x2966,0x2986,0x31c7,0x2966,0x2966,0x31a6,0x2965,0x2965,0x3186,0x2986,0x2965,0x2965,0x2986,0x2965,0x2144,0x31a6,0x2985,0x2945,0x2945,0x2965,0x31a6,0x2965,0x2986,0x3186,0x39c7,0x3186,0x2986,0x31a6,0x2145,0x2145,0x2985,0x2165,0x2965,0x2945,0x2945,0x2124,0x2965,0x2124,0x2144,0x1924, +0x2144,0x2144,0x2144,0x2144,0x2165,0x2145,0x2124,0x2165,0x2145,0x2144,0x2165,0x2145,0x2945,0x2145,0x2124,0x2145,0x2965,0x2165,0x2165,0x2145,0x2144,0x2145,0x2165,0x2145,0x2145,0x2144,0x2965,0x2945,0x2945,0x2986,0x2986,0x2986,0x2965,0x2966,0x2985,0x2986,0x2965,0x2965,0x2966,0x3186,0x2986,0x2965,0x3186,0x2985,0x31a6,0x2986,0x2165,0x2965,0x2985,0x2986,0x2986,0x2965,0x2945,0x2945,0x2965,0x2986,0x2965,0x2986,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2985,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x2965,0x2145,0x31a6,0x3186,0x2965,0x2985,0x39e7,0x3186,0x2985,0x31a6,0x2985,0x29a6,0x2965,0x2986,0x3186,0x31c7,0x29a6,0x2986,0x3186,0x2966,0x31a6,0x31a6,0x3186,0x31a6,0x2986,0x29a6,0x2986,0x2966,0x3186,0x2966,0x2986,0x31a7,0x31c7,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x0882,0x0040,0x0861,0x0861,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x1082,0x2104,0x10a2,0x0861,0x0020,0x0841,0x18e3,0x2104,0x18e3,0x2965,0x39c6,0x3165,0x2965,0x2965,0x3185,0x2944,0x2104,0x39c6,0x3165,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e4,0x18e4,0x2104,0x2966,0x4249,0x5289,0x41c6,0x39c6,0x2944,0x18c3,0x0841,0x0020,0x0020,0x0841,0x10a2,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x18c3,0x18c3,0x18e3,0x1082,0x0020,0x0882,0x4228,0x31c7,0x2986,0x4208,0x31c6,0x2986,0x31c7,0x31a7,0x29a6,0x31c7,0x31c7,0x31a7,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x31c7,0x39c7,0x39c7,0x29a6,0x31a6,0x3186,0x3186,0x31a7,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2965,0x2965,0x2966,0x31a6,0x2986,0x31a6,0x2985,0x2986,0x31c7,0x39e7,0x31c7,0x31a7,0x3186,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x3186,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x2986,0x2966,0x31a6,0x3186,0x2986,0x2986,0x2966,0x2145,0x2965,0x2965,0x2945,0x2986,0x2986,0x2965,0x2945,0x2985,0x2985,0x2144,0x2986,0x3186,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2144,0x2945,0x2965,0x2144,0x2145,0x2145,0x2165,0x2145,0x2145, +0x2144,0x2144,0x2124,0x2145,0x2145,0x2144,0x2145,0x2145,0x2145,0x2144,0x2124,0x2965,0x2124,0x2145,0x2965,0x2965,0x2145,0x2144,0x2965,0x2165,0x2145,0x2144,0x2965,0x2965,0x2965,0x2165,0x2965,0x2945,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x2985,0x2986,0x2986,0x2145,0x2965,0x2986,0x2986,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2986,0x2965,0x31a6,0x2965,0x2965,0x2986,0x3186,0x3186,0x2966,0x3186,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2985,0x31a6,0x2985,0x2965,0x31a6,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x3186,0x2986,0x29a6,0x2986,0x31c6,0x31a6,0x31a6,0x2985,0x2986,0x31c6,0x29a6,0x2965,0x3186,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x29a6,0x0882,0x0040,0x0861,0x10a2,0x10a2,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x10a3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2104,0x18e3,0x2124,0x2985,0x2965,0x2945,0x2965,0x2945,0x2124,0x18e3,0x4a47,0x3185,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e4,0x2124,0x3186,0x4228,0x4a69,0x41e7,0x31a6,0x20e3,0x18c3,0x1082,0x0020,0x0020,0x0841,0x1082,0x18c3,0x0841,0x0020,0x0020,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x10a2,0x0861,0x0861,0x31c6,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x29a6,0x39e7,0x31a7,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x39c7,0x39e8,0x3186,0x39e7,0x39c7,0x2986,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x3186,0x3186,0x3186,0x3186,0x2986,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x2965,0x31a7,0x3186,0x3186,0x39c7,0x39e7,0x31c7,0x31a7,0x2986,0x29a6,0x31a6,0x31c6,0x31c6,0x2986,0x31a7,0x31a7,0x39c7,0x2966,0x3186,0x3186,0x3a07,0x31e7,0x31c7,0x31a6,0x2966,0x31a7,0x3186,0x2966,0x3186,0x3186,0x2965,0x31a6,0x31a6,0x31a7,0x2986,0x2986,0x2966,0x2125,0x2966,0x2986,0x2965,0x2965,0x2986,0x2145,0x2965,0x2965,0x31a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2165,0x2145,0x3186,0x31a7,0x2945,0x2965,0x2986,0x2985,0x2945,0x2965,0x2144,0x2986,0x2145,0x2124,0x2145,0x2145,0x2144,0x2965, +0x2145,0x2124,0x2124,0x2145,0x2945,0x2945,0x2124,0x2145,0x2965,0x2965,0x2945,0x2144,0x2965,0x2985,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2966,0x2966,0x2965,0x2145,0x2145,0x2985,0x2986,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2986,0x2986,0x2965,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c6,0x3186,0x2986,0x2985,0x2965,0x3186,0x3186,0x2986,0x2986,0x2145,0x2145,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2986,0x2966,0x2986,0x3186,0x31a7,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x31c7,0x2986,0x31a6,0x10a2,0x0040,0x0861,0x18c3,0x18c3,0x4aaa,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x18c2,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2104,0x10a2,0x0861,0x0841,0x0841,0x2944,0x2104,0x18e3,0x2104,0x2944,0x2945,0x2944,0x2964,0x2944,0x2104,0x2103,0x4227,0x2123,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x1081,0x10a2,0x10a2,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x2945,0x3186,0x39c7,0x4a48,0x39e7,0x2965,0x10a2,0x18c3,0x18a2,0x0020,0x0020,0x0841,0x1082,0x18c3,0x1082,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x39e7,0x39e8,0x31a6,0x39e8,0x31c7,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x2986,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31c7,0x31a7,0x4228,0x31c6,0x3186,0x31c7,0x31c7,0x31a6,0x31a6,0x2986,0x3186,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2966,0x3186,0x31a6,0x39c7,0x31c7,0x31c7,0x31c7,0x31c7,0x2986,0x2986,0x2985,0x31a6,0x31a6,0x2965,0x31a6,0x2986,0x3186,0x2986,0x31a6,0x39e8,0x31a6,0x2985,0x31c6,0x2965,0x4228,0x39c7,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x2985,0x31a6,0x2986,0x2986,0x3186,0x2966,0x2966,0x3186,0x2965,0x2145,0x2985,0x2965,0x2145,0x2986,0x29a6,0x2985,0x2985,0x2965,0x2965,0x31a6,0x2985,0x2945,0x2966,0x3186,0x2986,0x2945,0x2144,0x2965,0x2945,0x2965,0x2145,0x2165,0x2986,0x2945,0x2145,0x2144,0x2965,0x2945, +0x1904,0x2144,0x2124,0x2145,0x2945,0x2945,0x2144,0x2145,0x2145,0x2945,0x2945,0x2145,0x2165,0x2165,0x2145,0x2145,0x2965,0x2145,0x2965,0x2145,0x2965,0x2986,0x2965,0x2145,0x2144,0x2965,0x2986,0x2986,0x2966,0x2966,0x3186,0x2965,0x2965,0x2966,0x3186,0x39e7,0x2986,0x2985,0x2986,0x2986,0x2965,0x2965,0x2985,0x31a6,0x2986,0x2965,0x2965,0x2985,0x2145,0x2986,0x31a6,0x2965,0x2986,0x31a6,0x29a6,0x29a6,0x31e7,0x2986,0x31a6,0x31c6,0x31a6,0x2965,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x2985,0x2985,0x2985,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x2986,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a7,0x31a7,0x31a6,0x31c7,0x29a6,0x29a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x3186,0x10a2,0x0841,0x10a2,0x18c3,0x18e4,0x29c7,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e4,0x2104,0x10a2,0x0861,0x0020,0x0861,0x2945,0x2104,0x18e3,0x2104,0x2944,0x2944,0x2124,0x2944,0x2944,0x2103,0x2104,0x39c6,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1081,0x1081,0x10a2,0x18c3,0x1082,0x18e3,0x3186,0x3185,0x18c3,0x2124,0x2124,0x3185,0x2923,0x18c3,0x2104,0x2124,0x2945,0x3186,0x39c7,0x4207,0x3186,0x2104,0x10a2,0x18c3,0x18c3,0x0841,0x0020,0x0020,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a3,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18a3,0x18c3,0x18e3,0x2103,0x18e3,0x1082,0x0861,0x39c7,0x39c7,0x3186,0x39c7,0x3186,0x31a7,0x39a7,0x39a7,0x3186,0x3186,0x39a7,0x4208,0x31a6,0x2985,0x2986,0x29a7,0x31c7,0x2986,0x29a7,0x3186,0x39a7,0x3186,0x2966,0x31a7,0x31a6,0x3186,0x2986,0x3186,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x2985,0x2985,0x31a6,0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x2985,0x31a6,0x31a6,0x2986,0x39c7,0x31a7,0x31a7,0x31a7,0x31a7,0x2966,0x31a7,0x2965,0x31a6,0x39e7,0x31c6,0x31a6,0x31a6,0x2985,0x39c7,0x39c7,0x31a6,0x31c7,0x2965,0x2986,0x31a6,0x2986,0x3186,0x39c7,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2165,0x2986,0x2986,0x2986,0x2145,0x31c6,0x4228,0x2986,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2986,0x2165,0x2124,0x2965,0x2144,0x2145,0x2124,0x2965,0x2965, +0x2144,0x2965,0x2965,0x2945,0x2965,0x2145,0x2145,0x2945,0x2145,0x2945,0x2945,0x2145,0x2145,0x2144,0x2144,0x2965,0x2145,0x2145,0x2145,0x2965,0x2966,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2966,0x2965,0x2965,0x2966,0x2966,0x2965,0x2966,0x2986,0x2985,0x2985,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x2945,0x2965,0x3186,0x2986,0x2986,0x2966,0x31e7,0x39e7,0x39e7,0x2965,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x39c7,0x2965,0x2986,0x2986,0x2965,0x2985,0x2965,0x2986,0x2986,0x2986,0x3186,0x29a6,0x31a6,0x2965,0x2985,0x29a6,0x2985,0x31a6,0x2986,0x29a7,0x29a6,0x29a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x39c7,0x31a7,0x31c7,0x31a6,0x1082,0x0861,0x10a2,0x18e3,0x10c2,0x21a5,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x0861,0x1082,0x1082,0x10a2,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0020,0x0020,0x18e4,0x2104,0x1082,0x0841,0x0841,0x0861,0x2965,0x2104,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2924,0x2924,0x18e3,0x2104,0x3185,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1081,0x1082,0x18c3,0x2124,0x10a2,0x2104,0x4207,0x4a27,0x2924,0x2944,0x2124,0x39a5,0x2923,0x18c3,0x2104,0x2125,0x2965,0x3186,0x39c6,0x39a6,0x2945,0x18e3,0x1082,0x18c3,0x18e3,0x0841,0x0020,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18c3,0x18a3,0x18a2,0x18a2,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x20e3,0x1904,0x10a2,0x0861,0x31c7,0x4208,0x31a7,0x31a7,0x4208,0x31a7,0x31a7,0x39e8,0x39e8,0x39e8,0x31a7,0x39e8,0x31a6,0x31a7,0x31a7,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x39c7,0x2986,0x2986,0x31a7,0x31a7,0x2966,0x3186,0x31a7,0x31a6,0x3186,0x3186,0x31a7,0x39a7,0x31a6,0x31c7,0x2986,0x29a6,0x31a7,0x39e7,0x31a6,0x31a6,0x2965,0x31c7,0x31e7,0x31e7,0x39e7,0x31a6,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x3187,0x2986,0x2946,0x31c7,0x2966,0x2966,0x3186,0x31c6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x31c7,0x31a6,0x2945,0x31c6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x2965,0x2965,0x2945,0x2965,0x2945,0x31a6,0x39c7,0x2966,0x3186,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2145,0x2985,0x2986,0x2144,0x2124,0x1904,0x2965,0x2144, +0x2145,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2145,0x2145,0x2945,0x2145,0x2165,0x2165,0x2144,0x2144,0x2145,0x2144,0x2144,0x2986,0x2985,0x29a6,0x2165,0x2145,0x2965,0x2965,0x3186,0x2986,0x2965,0x2986,0x2985,0x2145,0x2945,0x2966,0x2966,0x31a6,0x31a6,0x3186,0x3186,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2986,0x2165,0x2145,0x2986,0x2986,0x2986,0x29a6,0x2966,0x2985,0x31a6,0x3a07,0x2986,0x2985,0x31a6,0x31a6,0x2165,0x31a6,0x31a7,0x2986,0x31c7,0x31a6,0x2965,0x2986,0x2966,0x2986,0x2986,0x2966,0x2986,0x31a6,0x31a6,0x2965,0x29a6,0x29a6,0x2165,0x2965,0x2986,0x29a6,0x29a6,0x2165,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x2986,0x2966,0x3186,0x31a7,0x31a7,0x29a6,0x31a6,0x31c7,0x31c7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31e7,0x10c3,0x0041,0x10c2,0x18e3,0x18c3,0x2985,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2104,0x1082,0x0841,0x0841,0x0861,0x2945,0x2104,0x18e3,0x18e3,0x2124,0x2104,0x2103,0x2104,0x2124,0x18c3,0x2103,0x2944,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2124,0x18a2,0x18a3,0x2104,0x2944,0x18e3,0x18c3,0x18e3,0x2965,0x18e2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x31a6,0x2944,0x2104,0x18e3,0x1082,0x18e4,0x2104,0x0841,0x0841,0x0841,0x0861,0x18e3,0x10a2,0x0020,0x0020,0x0841,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18c3,0x18c3,0x20e4,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2104,0x10a2,0x0881,0x39e7,0x39e7,0x31e7,0x31a7,0x39e8,0x2986,0x2986,0x31c7,0x39e8,0x3a08,0x2986,0x3186,0x3186,0x31a7,0x39c7,0x31c7,0x31a6,0x2986,0x29a6,0x29a6,0x31c6,0x31a6,0x31c7,0x31c7,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x31c7,0x3a08,0x31c7,0x3186,0x2986,0x31a6,0x31c6,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x39e7,0x2986,0x2986,0x2986,0x2986,0x31a6,0x39e8,0x2986,0x3186,0x31c7,0x31e7,0x31a6,0x2965,0x3186,0x31a6,0x31a7,0x2986,0x2986,0x2985,0x29a6,0x31c6,0x39e7,0x31a6,0x2985,0x2965,0x2986,0x31a6,0x31a6,0x2945,0x2965,0x2965,0x29a6,0x2986,0x2965,0x2965,0x2965,0x2965,0x2985,0x2945,0x2145,0x29a6,0x2985,0x2986,0x3186,0x2124,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2986,0x2965,0x2145,0x2145,0x2144, +0x2945,0x2144,0x2144,0x2144,0x2125,0x2966,0x2965,0x2125,0x2145,0x2145,0x2945,0x2986,0x2965,0x2985,0x2145,0x2165,0x2165,0x2144,0x2144,0x2965,0x2165,0x2985,0x2985,0x2144,0x2145,0x2945,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2965,0x3186,0x2986,0x2986,0x31a6,0x3165,0x3165,0x2986,0x2986,0x2966,0x2966,0x2966,0x2966,0x2986,0x2986,0x29a6,0x2966,0x2986,0x31c7,0x2186,0x2986,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2965,0x2986,0x2986,0x2985,0x2985,0x2986,0x2966,0x2965,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31a6,0x2966,0x3186,0x2986,0x2985,0x2985,0x2986,0x2985,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x31c6,0x2985,0x31a6,0x31a6,0x31c7,0x29a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x2986,0x29a6,0x31c7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x3207,0x10c3,0x0882,0x18c3,0x2104,0x18e4,0x29a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0020,0x0020,0x2104,0x2124,0x1082,0x0861,0x0841,0x0841,0x2945,0x2124,0x18e3,0x18c3,0x2103,0x18e3,0x18e3,0x20e3,0x2104,0x18c3,0x20e3,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x2124,0x10a2,0x18c3,0x2104,0x2925,0x2965,0x3186,0x2965,0x18e3,0x20e3,0x18e3,0x1082,0x2104,0x2124,0x0841,0x0041,0x0841,0x1082,0x18e4,0x10a3,0x0020,0x0041,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18e3,0x2103,0x2124,0x1081,0x10a2,0x4208,0x31c7,0x4228,0x31a7,0x2987,0x31c7,0x31c7,0x31a7,0x29a6,0x31a6,0x31a7,0x3186,0x3186,0x31a7,0x31e7,0x31a7,0x31a7,0x31a6,0x31c7,0x31a6,0x31a6,0x39c7,0x31a6,0x2986,0x29a6,0x31a6,0x31a7,0x39c7,0x31c7,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31c7,0x2986,0x2986,0x31a6,0x3a08,0x39c7,0x39c7,0x31a6,0x39e7,0x39e7,0x31a6,0x3186,0x31a6,0x3186,0x31a7,0x31a7,0x3186,0x31a6,0x31c7,0x31a6,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x29a6,0x31a6,0x2986,0x2966,0x2966,0x3186,0x39c7,0x31a6,0x2986,0x2985,0x31a6,0x3186,0x31a6,0x31a7,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2966,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2985,0x31a6,0x3186,0x2965,0x2965,0x29a6,0x31e7,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2965,0x2945,0x2965,0x31a6,0x2965,0x2965,0x31c7,0x31a6,0x2124,0x2124, +0x2945,0x2145,0x2124,0x2145,0x2145,0x2945,0x2145,0x2124,0x2145,0x2145,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2965,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2124,0x2165,0x2965,0x2145,0x2965,0x2985,0x2965,0x2965,0x2985,0x3186,0x3186,0x2966,0x2965,0x2965,0x2965,0x3186,0x2965,0x2965,0x2966,0x2966,0x2966,0x2986,0x2965,0x2985,0x3186,0x3186,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x2985,0x31a6,0x2986,0x2965,0x2945,0x3186,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x31a6,0x39e7,0x3186,0x2985,0x3186,0x3186,0x2986,0x2985,0x31a6,0x31a6,0x2985,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x3186,0x31a7,0x39e8,0x39e8,0x31c7,0x29a6,0x0861,0x1904,0x2924,0x2944,0x18e3,0x21a6,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18e3,0x2945,0x10a2,0x0861,0x0841,0x0841,0x2124,0x2945,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e3,0x18c2,0x2124,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18a2,0x18a2,0x2103,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2124,0x2945,0x2965,0x2124,0x18c3,0x20e4,0x18c3,0x10a2,0x2145,0x2124,0x0841,0x0840,0x0841,0x1082,0x2104,0x10a2,0x0020,0x0841,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x18a2,0x18c3,0x18e3,0x2104,0x2965,0x18e3,0x1082,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e8,0x39c8,0x31a7,0x31a7,0x2986,0x39e7,0x31e7,0x3a08,0x39e7,0x31c7,0x29a6,0x31c7,0x31a7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2145,0x31a6,0x31c7,0x2986,0x3186,0x39c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x2986,0x31a7,0x39c7,0x31c7,0x39c7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31c7,0x31a7,0x31a6,0x39e7,0x4228,0x39c7,0x31a6,0x31c7,0x31a6,0x2986,0x2965,0x2986,0x2986,0x31c7,0x3186,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2965,0x3166,0x3186,0x2966,0x31a6,0x3186,0x2965,0x3186,0x3186,0x2965,0x2986,0x31a6,0x2965,0x31c7,0x31a6,0x2965,0x2965,0x2945,0x2965,0x2965,0x31a7,0x2965,0x2965,0x2965,0x2945,0x2965,0x2965,0x2965,0x2144,0x2965,0x2985,0x2986,0x2145,0x31a6,0x2986,0x3186,0x2124, +0x2124,0x2124,0x2145,0x2144,0x2145,0x2945,0x2945,0x2145,0x2965,0x2965,0x2145,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2965,0x2965,0x2165,0x2165,0x2965,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2965,0x2985,0x2965,0x2986,0x2966,0x2966,0x31a6,0x31c6,0x2986,0x2986,0x3186,0x31c6,0x2965,0x2965,0x2986,0x2985,0x2965,0x3186,0x2965,0x2986,0x31a6,0x31a6,0x39c7,0x3186,0x31a6,0x2986,0x2965,0x39e7,0x2985,0x2945,0x2965,0x2986,0x29a6,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x3186,0x2965,0x31a6,0x31a6,0x29a6,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x31a6,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31c6,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31a6,0x10c2,0x2124,0x2965,0x3165,0x2965,0x10e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0841,0x0841,0x0841,0x0020,0x18c3,0x2945,0x18c3,0x0861,0x0841,0x0020,0x2104,0x2945,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10a2,0x2124,0x18e3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x20e3,0x10a2,0x18e3,0x2104,0x2104,0x2124,0x2124,0x18e3,0x18c3,0x2104,0x18a2,0x18c3,0x2965,0x2103,0x0820,0x0020,0x0841,0x10a2,0x2124,0x1082,0x0020,0x0841,0x0861,0x0861,0x1082,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c2,0x18c2,0x18e3,0x2104,0x39c7,0x2104,0x1082,0x39e7,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x39e8,0x31c8,0x3a08,0x31c7,0x39e7,0x31e7,0x31a6,0x29a6,0x31a7,0x31a7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31c7,0x31a7,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x4208,0x39c7,0x31a6,0x31a6,0x39c7,0x31a6,0x31c7,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x31a6,0x31c7,0x31a7,0x31a6,0x3186,0x39e7,0x31a6,0x2965,0x39e7,0x31a6,0x39c7,0x3186,0x31a6,0x29a6,0x2986,0x31a6,0x2986,0x31c7,0x31c6,0x31a6,0x31c7,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x31a6,0x2965,0x3186,0x2966,0x3186,0x31a6,0x2986,0x2985,0x2985,0x2966,0x2945,0x2965,0x2966,0x2965,0x2986,0x31a6,0x3186,0x2965,0x2986,0x2965,0x2965,0x3186,0x2985,0x2965,0x2145,0x2145,0x2145,0x2145,0x2985, +0x2125,0x2145,0x2145,0x2145,0x2145,0x2125,0x2945,0x2986,0x2965,0x2945,0x2945,0x3186,0x2965,0x2145,0x2124,0x2965,0x2965,0x2985,0x2965,0x2986,0x2165,0x2145,0x2145,0x2965,0x2986,0x2986,0x2986,0x2965,0x3186,0x31a6,0x2966,0x2966,0x2966,0x2985,0x29a6,0x31a6,0x31a6,0x2986,0x3186,0x2965,0x2985,0x31a6,0x3186,0x2965,0x2965,0x3186,0x31a6,0x3186,0x2985,0x31c7,0x31a6,0x2965,0x2965,0x31a6,0x29a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x31a6,0x29a6,0x29a6,0x2986,0x2986,0x29a6,0x31c7,0x31a6,0x2966,0x3186,0x31a7,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31c7,0x29a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2985,0x2985,0x3186,0x31a6,0x29a6,0x3186,0x31a6,0x31a6,0x3186,0x3186,0x3187,0x3186,0x3186,0x31a7,0x31a6,0x3186,0x31a7,0x39c7,0x4208,0x3a08,0x31c7,0x31c7,0x39e7,0x31a6,0x18e3,0x1904,0x18e3,0x2145,0x2104,0x18a3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x1082,0x2945,0x18e3,0x0861,0x0841,0x0020,0x10a3,0x2965,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x2103,0x10a2,0x2124,0x2965,0x18c2,0x0020,0x0020,0x0841,0x18c3,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2103,0x31a6,0x1904,0x10a2,0x4228,0x3a07,0x3a08,0x39e8,0x31c7,0x31c6,0x3a07,0x31a7,0x31a7,0x39c8,0x39e8,0x4249,0x31c7,0x31a7,0x39e7,0x39e7,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x39e7,0x39c7,0x2986,0x3186,0x31c7,0x39e7,0x3186,0x39e8,0x3a08,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x2985,0x31a6,0x39e7,0x39c7,0x39c7,0x31a6,0x31c7,0x31a6,0x2966,0x2966,0x2966,0x2966,0x31c7,0x31a6,0x31a6,0x31e7,0x31a6,0x2965,0x2986,0x2966,0x31a6,0x31c7,0x3186,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x2986,0x2986,0x31c7,0x31a6,0x3186,0x2945,0x31a6,0x31c7,0x31a6,0x3186,0x2986,0x2945,0x2965,0x39c7,0x31a6,0x31a6,0x2986,0x2965,0x31a6,0x2965,0x31c7,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31c7,0x2145,0x31a6,0x31c6,0x2965,0x2945,0x2986,0x2985,0x2965,0x2144,0x2145,0x2124,0x31a6, +0x2124,0x2145,0x2145,0x2145,0x2145,0x2145,0x2966,0x2966,0x2945,0x2945,0x2985,0x3186,0x2945,0x2144,0x2945,0x3186,0x2965,0x2945,0x2965,0x2145,0x2145,0x2145,0x2165,0x2145,0x2165,0x2966,0x2966,0x31a6,0x3186,0x2966,0x2946,0x2966,0x3186,0x2965,0x2985,0x29a6,0x2965,0x2965,0x2965,0x2965,0x2965,0x31c6,0x31a6,0x2965,0x2986,0x31a6,0x3186,0x2965,0x31a6,0x31c6,0x2965,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x31c6,0x39e7,0x31a6,0x2986,0x2986,0x31a6,0x3186,0x31a6,0x31c7,0x2986,0x2986,0x29a6,0x2986,0x2966,0x31a7,0x31c7,0x31a7,0x31a7,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x2986,0x2986,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a7,0x3186,0x3186,0x39e8,0x39c7,0x31a6,0x31a7,0x39c7,0x39c7,0x3a07,0x39e7,0x31c7,0x39e7,0x4208,0x39e8,0x10c3,0x18c3,0x10c3,0x2124,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0841,0x0020,0x0841,0x2945,0x2124,0x1082,0x0841,0x0020,0x0861,0x2945,0x2945,0x18e3,0x18c3,0x18c3,0x18c3,0x18a2,0x10a2,0x18a2,0x2103,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1081,0x18c3,0x18c3,0x18c3,0x20e4,0x2124,0x18e3,0x18e3,0x18e3,0x10a2,0x2986,0x2965,0x1061,0x0020,0x0841,0x0861,0x2104,0x2104,0x0841,0x0020,0x0841,0x0861,0x0861,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x18e3,0x10a2,0x0882,0x39e7,0x39e7,0x39c7,0x31c7,0x31a6,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x3a08,0x39e7,0x31c7,0x39c7,0x39c6,0x3185,0x31a6,0x39e7,0x31a6,0x31c7,0x31a6,0x31c7,0x39c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a7,0x39c7,0x31c7,0x3186,0x3186,0x3186,0x39e7,0x2986,0x31a6,0x31c7,0x31a6,0x31c6,0x31a6,0x39e7,0x31c7,0x31c7,0x31c7,0x3186,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x31a7,0x31a7,0x31a6,0x31c7,0x31e7,0x31c7,0x3a08,0x3186,0x31a6,0x31a6,0x31c7,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2966,0x2986,0x2986,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31a6,0x3a08,0x2986,0x2965,0x3186,0x2986,0x2986,0x3186,0x2986,0x31a6,0x2986,0x3186,0x2986,0x31c7,0x2965,0x2985,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2965,0x2986,0x31a6,0x2124,0x2124,0x3186,0x31a6,0x2965,0x2965,0x2145,0x3186,0x3186, +0x2945,0x2965,0x2165,0x2145,0x2145,0x2965,0x2965,0x2965,0x2945,0x2965,0x2985,0x2965,0x2165,0x2965,0x2986,0x2986,0x2145,0x2965,0x2965,0x2145,0x2945,0x2145,0x2965,0x2986,0x2145,0x2946,0x2966,0x3186,0x3186,0x2965,0x2165,0x2965,0x2986,0x2985,0x2985,0x2985,0x2965,0x3186,0x2986,0x2986,0x2965,0x2965,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x2986,0x2986,0x39e7,0x31a6,0x3186,0x31a6,0x31c6,0x3186,0x2985,0x31c6,0x31c6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x3186,0x31c7,0x29a6,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x2986,0x2986,0x31a7,0x31a7,0x31a6,0x29a6,0x31a6,0x2986,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31c7,0x31a6,0x29a6,0x2986,0x31a6,0x3186,0x31a6,0x3186,0x3186,0x31c7,0x39c7,0x39c7,0x31a7,0x31a7,0x31a6,0x31c7,0x39e7,0x3a07,0x39e7,0x39c7,0x39e7,0x2124,0x0041,0x10a2,0x18c3,0x10a2,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x0861,0x0020,0x0020,0x2104,0x2965,0x10a2,0x0841,0x0841,0x0841,0x2104,0x2965,0x2124,0x18c3,0x18c3,0x18c3,0x10a2,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x0861,0x0861,0x0861,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1081,0x1081,0x1081,0x1081,0x1082,0x10a2,0x18c3,0x1082,0x1081,0x10a2,0x18c2,0x18c3,0x20e3,0x2104,0x18c3,0x18e3,0x18a2,0x2104,0x31a6,0x2124,0x0841,0x0020,0x0841,0x10a2,0x2945,0x18e3,0x0821,0x0841,0x0841,0x0861,0x1061,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x20e4,0x20e3,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e3,0x20e3,0x0881,0x0040,0x2124,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x39e7,0x31a6,0x39e7,0x4228,0x31a6,0x31c7,0x31c7,0x39c7,0x39c7,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x39e7,0x31c7,0x31c6,0x3a07,0x31c7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x3186,0x3186,0x39c7,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x31a6,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x31c7,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x4208,0x31c7,0x39c7,0x39e8,0x31c7,0x31a7,0x31c7,0x31c7,0x29a6,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x3186,0x3186,0x31c7,0x2986,0x2986,0x31c7,0x39e7,0x3186,0x3186,0x2986,0x31a6,0x3186,0x2986,0x2985,0x2986,0x2966,0x39e7,0x31a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2145,0x2966,0x2986,0x2966,0x2986,0x31a6,0x2145,0x2945,0x2985,0x2945,0x2965,0x2965,0x2965,0x2965,0x2144,0x2145, +0x2124,0x2124,0x2165,0x2165,0x2145,0x2965,0x2945,0x2945,0x2965,0x2965,0x2165,0x2165,0x2965,0x2966,0x2965,0x2965,0x2145,0x2965,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2965,0x2965,0x2145,0x2966,0x2986,0x2965,0x2965,0x2145,0x2986,0x2986,0x2986,0x2985,0x2965,0x31a6,0x2986,0x2986,0x2985,0x2985,0x2986,0x29a6,0x2986,0x31a6,0x31c7,0x3186,0x2965,0x2965,0x2965,0x2966,0x2965,0x31a6,0x31a6,0x31a6,0x39c7,0x39c7,0x31c7,0x31a6,0x29a6,0x29a6,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x31c6,0x29a6,0x31a7,0x29a6,0x31a6,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x31a6,0x39c7,0x31c7,0x39e7,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x31a6,0x31a7,0x31a7,0x31a6,0x31a7,0x39c7,0x31a7,0x39a7,0x31a7,0x31a7,0x31a7,0x39e7,0x31e6,0x3a07,0x3a07,0x31c7,0x3a28,0x31c7,0x10a2,0x0020,0x0020,0x0841,0x0841,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x0841,0x0020,0x18c3,0x2985,0x18e3,0x0861,0x0841,0x0020,0x10a2,0x2945,0x2965,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1081,0x10a2,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1082,0x1082,0x18c2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x18c2,0x18c3,0x10a2,0x3186,0x3186,0x18a2,0x0020,0x0841,0x0841,0x18e3,0x2966,0x10a2,0x0841,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a2,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x0881,0x2104,0x31a6,0x3a07,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x3a28,0x3a08,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c7,0x3186,0x3186,0x31c7,0x31a6,0x39c7,0x3a08,0x3186,0x39e8,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x31a6,0x31a6,0x31a6,0x31c6,0x31c7,0x31a6,0x2986,0x29a6,0x2965,0x2986,0x39e7,0x3186,0x4228,0x39c7,0x31a6,0x31a7,0x31a7,0x29a6,0x29a6,0x31c7,0x2986,0x31a6,0x31c7,0x31c6,0x31c7,0x31a6,0x31a6,0x31a6,0x39e7,0x2986,0x39c7,0x3186,0x2966,0x31a7,0x3186,0x31a6,0x31c6,0x2965,0x31c7,0x39c7,0x2965,0x2966,0x2986,0x2986,0x2965,0x2985,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x39c7,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2986,0x2985,0x2145,0x2965, +0x2986,0x2986,0x2124,0x2145,0x2965,0x3186,0x2965,0x2965,0x2965,0x2165,0x2985,0x2165,0x2965,0x2966,0x2965,0x2945,0x2965,0x2965,0x31a6,0x2965,0x2145,0x2965,0x2945,0x2985,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x31a6,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x2986,0x2986,0x2986,0x2986,0x31a6,0x3186,0x2986,0x31a6,0x2986,0x2965,0x3186,0x2985,0x3186,0x31a7,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x2985,0x2986,0x2986,0x31c6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2985,0x29a6,0x31c6,0x31c6,0x31c6,0x31c6,0x29a6,0x31a6,0x31c7,0x31a6,0x31c7,0x3186,0x31a6,0x31a6,0x31c6,0x3186,0x31a6,0x3186,0x31a6,0x31c7,0x31c7,0x31c6,0x31a6,0x31c7,0x31a7,0x31c7,0x31c6,0x31e7,0x31c7,0x31c7,0x31a6,0x31a7,0x39c7,0x31c7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x31c7,0x31a6,0x2965,0x2925,0x2125,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a3,0x0861,0x1082,0x0861,0x0020,0x0861,0x2965,0x2945,0x1082,0x0841,0x0020,0x0841,0x2104,0x3186,0x2144,0x18a3,0x18c3,0x18c2,0x1082,0x1081,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x10a2,0x0861,0x1082,0x18a2,0x18a2,0x18c3,0x18c3,0x20e3,0x18e3,0x1082,0x2945,0x39e7,0x2944,0x0841,0x0020,0x0841,0x1082,0x2945,0x2945,0x0861,0x0020,0x0861,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x2104,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x31c6,0x39e7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e7,0x39c8,0x39e8,0x4229,0x39e8,0x31e7,0x3a08,0x39e8,0x31c7,0x39e7,0x3a07,0x31a6,0x3a08,0x3a08,0x31c7,0x31c7,0x2986,0x31c6,0x31c6,0x31c6,0x39e7,0x39c7,0x3186,0x31a7,0x31c7,0x31c7,0x3186,0x31a7,0x39e7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x39e7,0x31a6,0x3a08,0x2986,0x3a08,0x31c7,0x31a6,0x31a6,0x2986,0x31c7,0x39e7,0x31c6,0x31a6,0x29a6,0x2986,0x2966,0x39e8,0x31a7,0x2966,0x31a6,0x31c7,0x31a6,0x31a6,0x31e7,0x2965,0x31a6,0x2965,0x31c7,0x39e7,0x31a6,0x3186,0x2986,0x31a6,0x39e8,0x39e7,0x2986,0x31c7,0x31c7,0x3186,0x2966,0x39c7,0x31c6,0x31a6,0x31a6,0x31a6,0x31c7,0x3186,0x31a6,0x2986,0x2965,0x2145,0x2965,0x31a6,0x2965,0x2145,0x31a6,0x3207,0x31c7,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2945,0x2965,0x2965,0x2945,0x2965,0x2986,0x2165,0x2965, +0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2165,0x2965,0x2965,0x2165,0x2145,0x2965,0x3186,0x2986,0x2965,0x2966,0x2986,0x2145,0x2965,0x31a6,0x2985,0x31c7,0x2985,0x2986,0x2986,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2985,0x2986,0x2965,0x2965,0x31a6,0x31a6,0x2986,0x31a6,0x31c6,0x31c6,0x2986,0x31a6,0x2985,0x3186,0x31a6,0x3186,0x31c7,0x31a6,0x31a6,0x3186,0x2986,0x31c7,0x31e7,0x31c7,0x2986,0x31a6,0x3186,0x31a6,0x39c7,0x31c6,0x31a6,0x31a6,0x31c7,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31c6,0x31a6,0x31a6,0x31a6,0x2986,0x31c7,0x39e8,0x31a7,0x2986,0x3186,0x31c6,0x39e7,0x39e7,0x31a7,0x39c7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c6,0x29a6,0x31a7,0x31c7,0x31a6,0x31c6,0x39e7,0x39e7,0x39e7,0x31e7,0x31c6,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31c7,0x39e7,0x3a08,0x31e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x1082,0x1082,0x1082,0x0841,0x0020,0x2104,0x3186,0x18e3,0x0861,0x0841,0x0021,0x10a2,0x2945,0x2985,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c2,0x0861,0x1082,0x10a2,0x18a2,0x18c3,0x18c3,0x2103,0x18c3,0x18e4,0x4208,0x31a6,0x18c2,0x0020,0x0841,0x0861,0x18e3,0x3186,0x18e4,0x0020,0x0841,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x31c7,0x39e8,0x3a08,0x39e8,0x39e8,0x31e8,0x3a08,0x39c7,0x31c7,0x4208,0x39e7,0x31e6,0x31c6,0x3a08,0x31a6,0x31a7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x31c6,0x31c7,0x31c7,0x2986,0x31a6,0x3a08,0x39e8,0x3187,0x2986,0x2986,0x31a6,0x2985,0x31c6,0x31a6,0x2986,0x31a6,0x2986,0x39e7,0x39e7,0x2986,0x39e7,0x31a6,0x31c7,0x31a6,0x2985,0x31a6,0x31c6,0x31a6,0x31a6,0x29a6,0x31a7,0x39e8,0x39c7,0x3186,0x39e8,0x3a08,0x31c7,0x31c6,0x31a6,0x31a6,0x2985,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x39c7,0x31a6,0x31a6,0x2965,0x39c7,0x39c7,0x3186,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3186,0x2986,0x2965,0x2965,0x2986,0x3186,0x2965,0x2124,0x2145,0x2986,0x29a6,0x39e7,0x31a6,0x31a6,0x2945,0x2125,0x2945,0x2986,0x2145,0x2965,0x2965,0x2124,0x2965,0x2145,0x2145, +0x2145,0x2945,0x2985,0x3186,0x2965,0x2145,0x2145,0x2144,0x2145,0x2165,0x2145,0x2165,0x2966,0x2165,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x31a6,0x2986,0x2986,0x2986,0x2986,0x2986,0x2986,0x2965,0x2986,0x2965,0x2986,0x3186,0x2966,0x2965,0x2986,0x2986,0x2985,0x2986,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x31a6,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6,0x31c7,0x3186,0x31a6,0x31c6,0x31a6,0x31c7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x3186,0x31a6,0x2986,0x3186,0x39c7,0x31a6,0x31a6,0x31c7,0x39c7,0x31c7,0x39e7,0x31c7,0x31c7,0x3186,0x31a6,0x31a6,0x39e7,0x31c7,0x31a7,0x39c7,0x31a6,0x3186,0x31c7,0x39e7,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x31c7,0x39e7,0x31a6,0x39c7,0x39e7,0x31c7,0x39e8,0x39c8,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x3186,0x31a6,0x31e7,0x31c7,0x31a6,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x10a3,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x10a2,0x1082,0x0020,0x1082,0x2965,0x2945,0x10a2,0x1082,0x0841,0x0841,0x18e3,0x2965,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x10a2,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x18c3,0x0861,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x31a7,0x39e7,0x2104,0x0841,0x0020,0x0841,0x1082,0x2965,0x3186,0x1082,0x0020,0x0861,0x1082,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x2124,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18e3,0x18c3,0x20e3,0x2104,0x31c7,0x39e7,0x3a08,0x31c7,0x31c7,0x39e8,0x39e7,0x39e7,0x31e7,0x31c7,0x3a08,0x3a28,0x39e7,0x4228,0x3a07,0x31c7,0x31c7,0x31a7,0x31c7,0x39e7,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x39c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x39c7,0x31c7,0x3186,0x39e7,0x31a6,0x2986,0x31a7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x3186,0x39c7,0x39c7,0x31c7,0x31a7,0x39e7,0x31c7,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x31a6,0x31a6,0x3a08,0x31a6,0x31a7,0x39e8,0x3186,0x2965,0x39c7,0x3a07,0x31a6,0x3186,0x31a6,0x31a7,0x3186,0x31a6,0x3186,0x2986,0x2986,0x31c7,0x31e7,0x29a6,0x2966,0x3186,0x2986,0x3186,0x2965,0x2966,0x2986,0x2986,0x2945,0x2965,0x39c7,0x3186,0x2124,0x2986,0x3186,0x2965,0x2965,0x31a6,0x3186,0x2124,0x2945,0x2965,0x2965, +0x2945,0x2124,0x2965,0x31a6,0x2985,0x2145,0x2144,0x2945,0x2165,0x2986,0x2966,0x2945,0x2986,0x2165,0x2165,0x2145,0x2966,0x2986,0x2965,0x31a6,0x2986,0x2965,0x2985,0x2986,0x29a6,0x2165,0x2965,0x2986,0x2986,0x29a6,0x2966,0x2986,0x3186,0x2966,0x2965,0x2986,0x2966,0x2986,0x2966,0x2965,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x2986,0x31c7,0x31a6,0x2965,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x3186,0x31a6,0x39e7,0x31a6,0x31a6,0x31c6,0x31a6,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39e8,0x31c7,0x31c7,0x31c7,0x3186,0x31a7,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31c7,0x31a6,0x31c7,0x31c7,0x31e7,0x39e7,0x31a7,0x31c7,0x3a08,0x39c7,0x39c7,0x31a7,0x3186,0x31c7,0x31c7,0x31c8,0x31c8,0x39e7,0x31e7,0x3187,0x39c7,0x31c7,0x31c7,0x31a7,0x31c7,0x31a7,0x31a6,0x31a6,0x2986,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e4,0x18e3,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x10a2,0x0841,0x0020,0x20e4,0x3186,0x2104,0x18a3,0x1082,0x0841,0x0861,0x2104,0x2945,0x2124,0x18c3,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x10a2,0x10a2,0x18c3,0x18a2,0x10a2,0x18c3,0x3186,0x3a08,0x2945,0x1081,0x0020,0x0861,0x1082,0x2104,0x31a7,0x2104,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x31a7,0x31e7,0x31e7,0x39e8,0x31a7,0x39e8,0x3a08,0x3a28,0x39e7,0x4228,0x39e7,0x3a08,0x31c7,0x31c7,0x39c8,0x39c7,0x39e8,0x31c7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x31a7,0x31c7,0x31c7,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x39c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x31a7,0x31a7,0x31a6,0x31a7,0x31a6,0x3186,0x31a6,0x31c6,0x39c7,0x39c7,0x31c7,0x31a7,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x31a6,0x31a6,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x3186,0x2986,0x31a6,0x31a7,0x31a7,0x4208,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a6,0x2985,0x31c7,0x3186,0x3186,0x3186,0x2965,0x2985,0x31a6,0x29a6,0x2986,0x2985,0x2945,0x31a6,0x2965,0x2945,0x3186,0x39c7,0x2945,0x2966,0x2945,0x31a7,0x39c7,0x2966,0x2965,0x2945,0x2965,0x2965,0x2986,0x2986,0x2124,0x2945,0x2966,0x2945, +0x2124,0x2945,0x2985,0x2965,0x2965,0x2145,0x2144,0x2145,0x2965,0x2985,0x2966,0x2945,0x2965,0x2965,0x2966,0x2965,0x2965,0x2986,0x2966,0x2986,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2945,0x2965,0x31a6,0x31c7,0x2965,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2986,0x31c7,0x31a7,0x31a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31c7,0x39c7,0x31a6,0x31a6,0x2986,0x2986,0x29a6,0x2986,0x2986,0x39c7,0x31c7,0x3186,0x2986,0x31c7,0x29a6,0x2986,0x31a6,0x29a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39e7,0x31c6,0x39c7,0x39c7,0x31c7,0x31a6,0x31a6,0x39c7,0x39c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31a6,0x31c7,0x31c7,0x39e8,0x31c8,0x39e8,0x39e7,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x31c7,0x39e8,0x31c8,0x31a7,0x31a7,0x39e8,0x39a7,0x31c7,0x31a6,0x31a6,0x39e7,0x31a7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x10a2,0x10a2,0x10a3,0x18c3,0x10a3,0x2104,0x18e3,0x1082,0x10a2,0x10a2,0x0020,0x0862,0x2925,0x2966,0x2104,0x18c3,0x1082,0x0841,0x1062,0x2104,0x2945,0x2124,0x2104,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c3,0x18e3,0x2965,0x39a7,0x2945,0x1082,0x0841,0x1082,0x18a3,0x2104,0x31a6,0x2965,0x0862,0x0020,0x0861,0x1082,0x1082,0x18c3,0x18e4,0x18c3,0x18c3,0x18c3,0x2104,0x20e4,0x2125,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18a3,0x18c3,0x18e3,0x18c3,0x20e3,0x2104,0x39e7,0x31c7,0x31e7,0x3a08,0x31c7,0x39e8,0x39e8,0x3a08,0x3a08,0x39e7,0x31c7,0x3a28,0x31e7,0x31c7,0x31c7,0x39e8,0x31c7,0x29a7,0x31c7,0x39e8,0x31c7,0x3186,0x31c7,0x31a6,0x31c7,0x39e8,0x39e7,0x3186,0x31a6,0x31a7,0x31e7,0x31c7,0x31a6,0x31a6,0x3186,0x31a6,0x31a6,0x39c7,0x31a7,0x31c7,0x31c7,0x31a6,0x31a6,0x39e7,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31c7,0x31c7,0x39c7,0x31c7,0x3186,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x31a7,0x2966,0x2965,0x31c7,0x39e7,0x2945,0x2986,0x4208,0x39c7,0x31c6,0x31a6,0x2965,0x31a6,0x31c6,0x31a6,0x2985,0x31a6,0x2965,0x2985,0x2965,0x2986,0x3186,0x2966,0x2965,0x2965,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x3186,0x3186,0x3186,0x2966,0x2965,0x2965,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x31a7, +0x2945,0x2965,0x2965,0x2985,0x2985,0x2145,0x2145,0x2144,0x2965,0x2965,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2986,0x2965,0x2965,0x2985,0x2965,0x2965,0x2985,0x2965,0x2986,0x31a6,0x2986,0x3186,0x3186,0x2986,0x2985,0x2985,0x2986,0x2986,0x2986,0x2985,0x29a6,0x2986,0x3186,0x3186,0x31a6,0x2986,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x2985,0x29a6,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x31a6,0x31c6,0x29a6,0x2986,0x2986,0x39c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x31c6,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x31e7,0x31e7,0x3a28,0x3a08,0x3a08,0x3a08,0x31e7,0x31c7,0x29c6,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x31c7,0x39e7,0x3a07,0x3a08,0x39c7,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2124,0x18c3,0x10a3,0x18c3,0x18c3,0x10a2,0x18e4,0x2945,0x10a2,0x1082,0x18c3,0x0861,0x0020,0x10a2,0x2965,0x2965,0x2104,0x18c3,0x1082,0x0841,0x1082,0x18e3,0x2944,0x2945,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x2104,0x2965,0x3186,0x2124,0x1082,0x0841,0x1082,0x18e3,0x2104,0x31a6,0x39a7,0x18c3,0x0020,0x0841,0x1082,0x1082,0x1082,0x2104,0x18e4,0x18e3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x20e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x3a08,0x31c7,0x31e7,0x31c7,0x39e7,0x4208,0x39c7,0x31a6,0x39e7,0x3a07,0x39e7,0x3207,0x31e7,0x31e7,0x39e7,0x31c7,0x39e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x31c7,0x39c7,0x3186,0x39c7,0x39e7,0x31a7,0x39c7,0x2986,0x31a6,0x31a6,0x31c6,0x31a6,0x31a6,0x31c6,0x39e7,0x39e7,0x31a7,0x31e7,0x31e7,0x29a6,0x31a6,0x31c7,0x31c7,0x2985,0x31c6,0x31a6,0x31c6,0x31e7,0x31c7,0x39e7,0x31c6,0x31c6,0x31a6,0x31a6,0x39c7,0x31a7,0x2966,0x31a6,0x39e7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31a6,0x3186,0x31a6,0x29a6,0x2986,0x2965,0x29a6,0x31a6,0x31c6,0x39c7,0x2986,0x3186,0x31c7,0x2986,0x31a6,0x31a6,0x31c6,0x31c7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31c7,0x29a6,0x2965,0x2965,0x2986,0x31a6,0x31c7,0x2986,0x29a6,0x2965,0x2145,0x2945,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x3186,0x2945,0x2965, +0x2945,0x2965,0x2965,0x2145,0x2965,0x2145,0x2965,0x2945,0x2945,0x2965,0x2986,0x2986,0x31c7,0x2986,0x2145,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2985,0x2985,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2985,0x2986,0x29a6,0x2985,0x2985,0x2985,0x2165,0x2165,0x29a6,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31a6,0x31a6,0x31c6,0x2986,0x31a6,0x31c6,0x31c6,0x31c7,0x31c6,0x31e7,0x31c6,0x31c7,0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x29a6,0x2986,0x31a7,0x31c6,0x29a6,0x31c7,0x31e7,0x31a6,0x31a7,0x31c7,0x31a7,0x39a7,0x39e8,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31c7,0x31c7,0x31c7,0x39c7,0x39c7,0x3a08,0x39c7,0x31c7,0x31c7,0x31c6,0x3a07,0x39e7,0x31e7,0x3a08,0x3a08,0x39e8,0x39e8,0x31e7,0x31e7,0x31e7,0x31c7,0x31c7,0x39e7,0x3a28,0x3a08,0x39e7,0x3a08,0x3a28,0x3a28,0x3a28,0x3a08,0x31c7,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x10a3,0x18c3,0x18c3,0x10a2,0x18c3,0x2966,0x2945,0x1082,0x18c2,0x10a2,0x0841,0x0841,0x18e3,0x2966,0x2945,0x20e3,0x18c3,0x10a2,0x0861,0x1082,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c2,0x18c2,0x18c3,0x18e4,0x2125,0x2965,0x2965,0x2124,0x1082,0x0861,0x1082,0x18e3,0x2104,0x3186,0x39c7,0x2924,0x0861,0x0841,0x1061,0x1082,0x1082,0x18e3,0x2125,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2925,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2104,0x3a08,0x3a08,0x39e8,0x39e7,0x4208,0x4208,0x39e8,0x39c7,0x4208,0x4228,0x4228,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x4a6a,0x4229,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x39e7,0x3a08,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x39e8,0x39e7,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x31e7,0x31c7,0x31a6,0x31c7,0x39e7,0x39c7,0x39c7,0x31a6,0x31a7,0x39e7,0x4208,0x39e7,0x31c7,0x39e7,0x31c7,0x31c7,0x31a6,0x31a7,0x31a7,0x31c7,0x31a7,0x31a7,0x31a7,0x3186,0x31a7,0x31c7,0x31a6,0x4228,0x39c7,0x31a7,0x3186,0x39e7,0x29a6,0x2985,0x31a6,0x31a6,0x39c7,0x3186,0x2945,0x2966,0x31a6,0x3186,0x31a6,0x2965,0x2965,0x2145,0x31a7,0x31a6,0x2986,0x2966,0x2945,0x2945,0x2965,0x3186,0x3186,0x31a6,0x2965,0x2965,0x2124,0x2124,0x2145,0x3186,0x2925,0x2966,0x31a6,0x31a6,0x2986,0x31a6,0x3186,0x2945,0x2125, +0x3186,0x3186,0x2945,0x2124,0x2945,0x2945,0x3166,0x2965,0x3186,0x2986,0x2986,0x2986,0x2986,0x3186,0x2986,0x2965,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x2965,0x2965,0x2965,0x31a6,0x31c6,0x31a6,0x31c7,0x29a6,0x31a6,0x2966,0x3186,0x31a6,0x3186,0x2986,0x2965,0x2986,0x31a6,0x2986,0x2986,0x2966,0x2986,0x29a6,0x29a6,0x31a6,0x3186,0x2986,0x2986,0x3186,0x39c7,0x3186,0x3186,0x2986,0x2986,0x31a7,0x3186,0x31a7,0x2966,0x2966,0x2986,0x31a7,0x2966,0x2986,0x2946,0x2986,0x2986,0x2966,0x2966,0x3186,0x3186,0x3186,0x3166,0x3167,0x3167,0x31a7,0x2966,0x2966,0x3187,0x3166,0x3187,0x3187,0x2945,0x3166,0x3166,0x3187,0x3166,0x3186,0x3187,0x2966,0x3187,0x2946,0x2946,0x2966,0x2946,0x2966,0x39e8,0x39c8,0x2966,0x2946,0x3146,0x3966,0x3126,0x2926,0x2946,0x2966,0x2946,0x2906,0x2926,0x20c5,0x2905,0x2905,0x2946,0x2105,0x20e5,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x2124,0x18c3,0x10a3,0x10a2,0x10a2,0x10a2,0x2104,0x39c7,0x18c3,0x1082,0x18a2,0x1082,0x0841,0x0861,0x2104,0x2965,0x2945,0x2103,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2124,0x2125,0x2104,0x18e3,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18e4,0x2104,0x2945,0x2965,0x2945,0x2103,0x10a2,0x1062,0x10a2,0x18e3,0x2104,0x3186,0x39e7,0x2965,0x1082,0x0861,0x0861,0x10a2,0x1082,0x10a2,0x2966,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2125,0x2945,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x20e4,0x2105,0x2966,0x20c4,0x2105,0x2926,0x2105,0x2946,0x2946,0x3166,0x3187,0x2947,0x3167,0x39a7,0x31c7,0x2987,0x31c7,0x39e8,0x3187,0x2966,0x31a7,0x3187,0x2986,0x31c7,0x31a7,0x3186,0x39a6,0x3186,0x39e8,0x31a7,0x31a7,0x3186,0x2966,0x3166,0x3186,0x3186,0x2966,0x2966,0x31a7,0x39c7,0x31a7,0x39c7,0x3187,0x31a7,0x31a7,0x39a7,0x39a7,0x39a7,0x31a7,0x3186,0x3186,0x3186,0x31a7,0x31c7,0x39c7,0x39c8,0x39c7,0x31c7,0x39c8,0x39e8,0x31c7,0x31a7,0x31a7,0x39a7,0x39c7,0x39c7,0x39c7,0x39a7,0x4a6a,0x3a08,0x39e8,0x31a6,0x39c7,0x39c7,0x39e7,0x39a6,0x39a6,0x39c7,0x39e8,0x39e7,0x39e8,0x4228,0x4228,0x4208,0x41e8,0x41e7,0x41e7,0x39e7,0x41e8,0x4208,0x3a07,0x4208,0x4249,0x4228,0x4208,0x39e7,0x4208,0x39e7,0x39c7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x39c7, +0x3186,0x3186,0x2945,0x2945,0x2985,0x2945,0x3165,0x3165,0x3166,0x2945,0x2945,0x3166,0x2965,0x3166,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x39a6,0x39a6,0x31a6,0x3186,0x3186,0x3166,0x3186,0x3186,0x31a6,0x39c6,0x31a6,0x31a7,0x3186,0x3187,0x39a7,0x39a7,0x3186,0x31a6,0x3186,0x31a6,0x39c7,0x39c7,0x39c7,0x31a7,0x39a7,0x39a7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39e7,0x41e7,0x4207,0x4208,0x39e8,0x4208,0x4208,0x4208,0x4208,0x39e8,0x4208,0x4228,0x4228,0x4228,0x4a49,0x4a49,0x4a29,0x4a49,0x528a,0x528a,0x4a6a,0x526a,0x528b,0x528a,0x528a,0x528a,0x526a,0x52ab,0x5aab,0x52ab,0x5aab,0x5acb,0x5acb,0x5acb,0x5acc,0x5aec,0x630d,0x630d,0x632d,0x632d,0x5b0c,0x5b0d,0x5b0c,0x632d,0x632d,0x632d,0x636e,0x634e,0x634e,0x634e,0x632e,0x6b8e,0x6b8e,0x738f,0x6b8f,0x73b0,0x6b6e,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2104,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x2966,0x2985,0x10a2,0x10a2,0x18c3,0x1082,0x0841,0x1082,0x2124,0x2965,0x2124,0x20e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x2104,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2925,0x2945,0x2945,0x2124,0x20e3,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x3186,0x39e8,0x3186,0x10a2,0x0841,0x1081,0x18c3,0x18c3,0x10a2,0x2965,0x3186,0x18e4,0x18c3,0x18c3,0x18e4,0x2104,0x2965,0x2945,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2965,0x94b3,0x94d3,0x94d3,0x94d3,0x8cb3,0x8472,0x8472,0x8c92,0x8c92,0x8472,0x8492,0x8472,0x7c32,0x7c31,0x8452,0x8451,0x8c72,0x8451,0x8431,0x8431,0x8451,0x8c92,0x8c93,0x8472,0x8c92,0x8c72,0x8452,0x8472,0x8452,0x7c11,0x7c51,0x7c51,0x7c31,0x8451,0x7c31,0x8471,0x8471,0x8451,0x8c92,0x8cb3,0x8c92,0x8c92,0x8451,0x8451,0x8431,0x8451,0x8431,0x7bf0,0x7c10,0x7c10,0x8451,0x7c51,0x73ef,0x8451,0x8431,0x7c30,0x7c30,0x73ef,0x6baf,0x73cf,0x7c10,0x7bf0,0x7c10,0x7c10,0x6baf,0x6baf,0x73af,0x6b8e,0x73cf,0x73ef,0x6baf,0x6bae,0x7c0f,0x7c0f,0x73cf,0x73af,0x73cf,0x7bef,0x73ef,0x7c10,0x73ef,0x73ef,0x73ef,0x7bf0,0x7bef,0x6bae,0x6b8e,0x6baf,0x6b8e,0x6b6e,0x73d0,0x73cf,0x634d,0x636d,0x634d,0x634c,0x5b2c,0x632c,0x634d,0x632d,0x632c,0x5b0c,0x5b4d,0x634d,0x5b2c,0x5b0c,0x630c,0x5acb,0x5acb,0x5b0c,0x5aeb, +0x4a69,0x5289,0x5aca,0x5aca,0x52aa,0x528a,0x5acb,0x5aeb,0x630c,0x632c,0x630c,0x632c,0x6b4d,0x632c,0x630c,0x632c,0x634c,0x634c,0x632c,0x630c,0x6b4d,0x6b4d,0x634c,0x634d,0x632d,0x6b4d,0x6b6d,0x6b4d,0x6b6e,0x73ae,0x73ae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x8430,0x8451,0x8451,0x7c10,0x7bef,0x6bae,0x6b8e,0x73ae,0x6b6d,0x634d,0x6b6e,0x738e,0x6b6d,0x6b6d,0x6b8e,0x738e,0x73ae,0x7bf0,0x7bf0,0x7c10,0x8410,0x8430,0x8450,0x8410,0x7c10,0x7c10,0x7c30,0x7c10,0x7c10,0x7c10,0x7bf0,0x7c10,0x8450,0x8451,0x8451,0x8cb2,0x94b3,0x8c92,0x8c92,0x8cb3,0x8cb3,0x94f4,0x9d34,0x9d34,0x9d54,0xa575,0xa555,0x9d34,0x9d34,0x9d14,0x94f3,0x9d14,0x9d14,0xa555,0xb5d7,0xa576,0xad97,0xadb7,0xadd8,0xadf8,0xa596,0xadb6,0xa5b6,0xa576,0xadf8,0xadd7,0xadd7,0xa5d7,0xadd8,0xadd8,0xadd8,0xb618,0xb638,0xb618,0xb5f8,0xb619,0xadd7,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x18c3,0x18e3,0x2124,0x2945,0x18e3,0x10a2,0x18c2,0x10a2,0x10a2,0x18c3,0x3186,0x2124,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x1082,0x2124,0x2945,0x2124,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2965,0x2945,0x2924,0x2104,0x2104,0x2104,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2965,0x2965,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x39c7,0x3186,0x18c3,0x0841,0x0861,0x10a2,0x20e3,0x18c3,0x2945,0x39e8,0x2945,0x18e4,0x18e3,0x18c3,0x2104,0x2965,0x3186,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x3186,0xadf8,0xb619,0xb619,0xb639,0xb618,0xadd7,0xadb7,0xadd7,0xadd8,0xadd8,0xa576,0x9535,0x8cf4,0x8d14,0x9515,0x9535,0x9515,0x9514,0x94f4,0x9514,0x94f4,0xa596,0xa597,0x9d35,0x9d56,0x9d35,0x94f4,0x94f4,0x9515,0x8cd4,0x8cb3,0x8cd3,0x8cd3,0x8cf4,0x8cd4,0x8cf4,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x8492,0x8cd3,0x8cb2,0x8472,0x8cd3,0x94d3,0x8452,0x7c31,0x7c31,0x7431,0x8472,0x94f4,0x8cb3,0x8cd3,0x8cd3,0x8492,0x7c51,0x73ef,0x73ef,0x7c31,0x8472,0x7c31,0x73f0,0x73d0,0x6bd0,0x6bcf,0x73ef,0x73f0,0x73f0,0x6bcf,0x6baf,0x73d0,0x7c31,0x7c51,0x7410,0x7c10,0x73f0,0x73cf,0x73f0,0x73ef,0x7410,0x73f0,0x73f0,0x73d0,0x73cf,0x6b8f,0x6bcf,0x6b8e,0x638e,0x8431,0x6baf,0x5b2d,0x5b0d,0x5b2c,0x636d,0x636d,0x5b4d,0x5b0c,0x5b0c,0x5aec,0x52cc,0x52cb,0x5b2c,0x5b2d,0x5b0c,0x5aed,0x5aec,0x5aec,0x52cb,0x4acb,0x52eb, +0x630c,0x5aeb,0x630c,0x6b4c,0x630c,0x630b,0x6b2c,0x6b4d,0x7bef,0x73ce,0x6b8d,0x73cf,0x7bef,0x73cf,0x6bae,0x6bae,0x73ef,0x6bce,0x6b8e,0x6b8e,0x73cf,0x73ae,0x6b8e,0x6bae,0x6bae,0x6bae,0x73af,0x73cf,0x7bf0,0x7c10,0x7c0f,0x7bef,0x7bf0,0x7c10,0x73cf,0x73cf,0x73cf,0x7c10,0x8451,0x8471,0x8cd3,0x8471,0x7c51,0x7410,0x6baf,0x73af,0x6b8e,0x6b6e,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x7c10,0x7c11,0x7c11,0x7c32,0x8452,0x8452,0x8451,0x8452,0x8452,0x8451,0x7c11,0x7c11,0x8432,0x8472,0x8452,0x7c11,0x7c11,0x7c31,0x8452,0x8452,0x8c92,0x94d4,0x8cd3,0x8472,0x8cb3,0x8cd4,0x94f4,0x9d14,0x9d55,0xa576,0xa597,0xadd7,0x9d56,0x9515,0x9d35,0x9d15,0x9d35,0x9d35,0xad97,0xbe19,0xa577,0xadb7,0xb5f8,0xadb7,0xa597,0x9d76,0xad97,0xadd8,0x9d56,0xa597,0xad97,0xa597,0xa597,0xadb8,0xadd8,0xbe39,0xb619,0xb5f9,0xb5f9,0xadd8,0xb5f8,0xadd8,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18a3,0x18e3,0x2104,0x2966,0x2924,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x18e3,0x2965,0x18e3,0x1082,0x10a2,0x10a2,0x0861,0x0841,0x10a2,0x2104,0x2945,0x2124,0x18e4,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x2104,0x2965,0x3186,0x3185,0x3186,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x2924,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x2966,0x31a6,0x2965,0x18c2,0x0841,0x0861,0x1082,0x18e3,0x18e3,0x2125,0x4208,0x31a7,0x2124,0x1904,0x18e3,0x18e3,0x2125,0x3186,0x2965,0x2124,0x2104,0x2104,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d77,0xadd9,0xa5b8,0xa598,0xa597,0x9d35,0xa576,0xa597,0xa556,0xadb7,0xb5f8,0x9d55,0x8493,0x8cb3,0x9515,0x9515,0x84b3,0x8cf4,0x8cd4,0x8cf4,0x84b3,0x9d35,0x9d56,0x9d36,0xa577,0xa556,0x9d15,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8c93,0x8492,0x8c93,0x8473,0x8c93,0x94d4,0x8cb3,0x8c93,0x8493,0x7411,0x8472,0x8cb3,0x8c72,0x8c93,0x8cb3,0x8452,0x7c31,0x73f1,0x7c11,0x7c11,0x8492,0x8cb3,0x8c92,0x8472,0x7c52,0x7411,0x73f0,0x7c11,0x7410,0x7c31,0x73f1,0x73d0,0x6bd0,0x73f1,0x73f0,0x6baf,0x73cf,0x6baf,0x638f,0x6baf,0x6bd0,0x7c11,0x7c10,0x73f0,0x7c10,0x7bf0,0x73af,0x73cf,0x7c10,0x8c72,0x7c10,0x73af,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73af,0x8431,0x73ef,0x636e,0x636e,0x634d,0x5b2d,0x632d,0x634e,0x634e,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x5aec,0x5aec,0x5aed,0x5b0c,0x5b0c,0x5b0c,0x52eb,0x52cb, +0x630c,0x630c,0x6b4d,0x632c,0x5aeb,0x62ec,0x6b2d,0x632c,0x73ce,0x73ae,0x738e,0x738e,0x73af,0x738e,0x6b6d,0x738e,0x73cf,0x73af,0x6b8e,0x73ae,0x73cf,0x73af,0x738e,0x738e,0x738e,0x6b8e,0x73af,0x73cf,0x73cf,0x6bae,0x73cf,0x73cf,0x73af,0x738f,0x6b8e,0x73af,0x73cf,0x73cf,0x8451,0x8c72,0x8c72,0x8451,0x7bf0,0x6bae,0x73ae,0x73ae,0x6b6e,0x632d,0x6b6e,0x73af,0x7c10,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7bf0,0x7c11,0x7c11,0x8431,0x8431,0x8432,0x8431,0x7c31,0x7c11,0x7c31,0x8451,0x7c11,0x8431,0x7c31,0x7c31,0x8451,0x8472,0x8472,0x8472,0x8cd3,0x94d4,0x94d4,0x94f4,0x8cb3,0x94d4,0x94d4,0x9cf4,0xa556,0xa556,0xad97,0xa576,0x9d35,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xadb7,0xa597,0xb5d8,0xadd8,0xa556,0xa556,0xad77,0xadb7,0xa597,0xa597,0xa597,0xadb7,0xadd8,0xadd8,0xadd8,0xbe19,0xc67a,0xce9a,0xce9b,0xcebb,0xc67b,0xbe19,0xb5d8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2125,0x2965,0x2104,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x2104,0x2124,0x10a2,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2124,0x2124,0x18e4,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x2945,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x3186,0x3185,0x3186,0x3185,0x3185,0x3185,0x3165,0x2944,0x2124,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2124,0x2965,0x3186,0x2945,0x10a2,0x0861,0x0861,0x10a2,0x18c3,0x18c3,0x2104,0x39c7,0x39c7,0x2925,0x2104,0x18e4,0x2104,0x2104,0x2966,0x3186,0x2945,0x2124,0x2104,0x2104,0x2104,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadd8,0xadd8,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xa597,0xad97,0x94f4,0x8493,0x9535,0x94f5,0x9515,0x94f4,0x9d35,0x94f4,0x94f4,0x8cd4,0x9d35,0x9d15,0x94d4,0xa576,0x9d35,0x9d35,0x9d35,0x94f4,0x9d15,0x9d55,0x9515,0x8cb3,0x8cb3,0x8cb3,0x94d4,0x94f4,0x8cb3,0x94d4,0x8cd4,0x8493,0x8452,0x8c93,0x8cb3,0x8cb3,0x9514,0x7c31,0x7c31,0x8451,0x8451,0x8472,0x7c31,0x7c11,0x7c31,0x7c72,0x7c52,0x7c52,0x7c11,0x73f0,0x73f0,0x73f0,0x73f0,0x7411,0x7410,0x7411,0x7c11,0x6bcf,0x6bcf,0x6bcf,0x6baf,0x6bae,0x6bae,0x73f0,0x7410,0x7430,0x7c10,0x8431,0x6b8f,0x6baf,0x73f0,0x7c30,0x7c10,0x73cf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x8431,0x73af,0x636e,0x6b6f,0x6b6e,0x634d,0x5b0d,0x5b0d,0x5b2d,0x5b0d,0x5b2d,0x636d,0x636e,0x634d,0x5b0c,0x52ab,0x52cb,0x5aeb,0x5b0b,0x632c,0x52cb,0x52aa,0x5aeb,0x5aec, +0x634d,0x738e,0x6b8d,0x632c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x6b4d,0x738e,0x7baf,0x738e,0x736e,0x6b6e,0x738f,0x73b0,0x73cf,0x7bd0,0x7bcf,0x8430,0x8451,0x7c10,0x7bcf,0x738f,0x738e,0x73af,0x7bf0,0x73cf,0x6bae,0x6baf,0x73ef,0x6baf,0x6b8f,0x73d0,0x8411,0x8451,0x8451,0x8c71,0x8c72,0x8451,0x8c72,0x8430,0x7bef,0x73ef,0x73af,0x6b6e,0x636e,0x636e,0x73d0,0x6baf,0x6baf,0x6baf,0x73cf,0x73f0,0x7bf0,0x7c11,0x7bf0,0x7c11,0x8432,0x8452,0x7c31,0x7c10,0x7c31,0x8451,0x8451,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8472,0x8452,0x8431,0x8c72,0x8452,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x9d35,0x9d35,0x9d35,0xa576,0xa556,0xad76,0xa576,0xa576,0x9d56,0x9d35,0x9d36,0xa576,0xad97,0xadd8,0xad97,0xa556,0xa576,0xa597,0xadd8,0xadd7,0xa576,0xad97,0xa5b7,0xa5b7,0xadd8,0xadd8,0xb5f9,0xc65a,0xc67a,0xcebb,0xd6fb,0xd6fb,0xd6dc,0xc67a,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2945,0x2965,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18e3,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2124,0x2924,0x2924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2945,0x2965,0x2965,0x2124,0x10a2,0x0861,0x1082,0x10a2,0x10a2,0x18a2,0x18e3,0x3186,0x31a6,0x2945,0x2124,0x2104,0x20e4,0x2104,0x2945,0x31a6,0x2965,0x2124,0x2124,0x20e3,0x2104,0x2104,0x18c3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb8,0xadd8,0xadf8,0xadd8,0xa577,0x9d76,0x9d56,0x9d36,0xa576,0xa5b7,0x9515,0x94f4,0x8cf4,0x9d36,0x8cb4,0x8cb4,0x9d56,0xadb7,0x94f4,0x9d36,0x9d15,0x9d35,0x8cb3,0x9d15,0x94f4,0x94d4,0x8cd4,0x9d15,0x9d15,0x94f4,0x9d35,0x9d55,0x9d15,0x94f4,0x8cd3,0x94f4,0x9514,0x9d35,0x94f5,0x9d15,0x8cd4,0x8cb3,0x8c93,0x8c93,0x8cb3,0x94f4,0x8c93,0x8cb3,0x8472,0x8c92,0x8c92,0x8451,0x7c31,0x7c31,0x7c52,0x8493,0x8cb3,0x7c31,0x6bcf,0x8493,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x73f0,0x6bd0,0x6baf,0x6baf,0x6baf,0x73af,0x73ef,0x7410,0x73f0,0x73ef,0x7c50,0x7c30,0x73f0,0x6baf,0x73cf,0x73f0,0x7c10,0x73cf,0x6baf,0x6b8e,0x73af,0x8c92,0x7bf0,0x632d,0x6b8e,0x6b8e,0x634e,0x5b0d,0x5b2d,0x5b0d,0x5b0d,0x5b0d,0x5b2d,0x634d,0x632d,0x5b0c,0x5aec,0x52cb,0x52ab,0x52aa,0x52eb,0x6bae,0x5aeb,0x52ab,0x5aec,0x630c, +0x6b4d,0x73ae,0x738e,0x630c,0x632c,0x630c,0x630c,0x5b0c,0x630c,0x630c,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b8e,0x738f,0x6baf,0x73af,0x8411,0x8451,0x94d2,0x8471,0x7c10,0x7bf0,0x6b8e,0x6b8e,0x73ae,0x73af,0x73ae,0x73af,0x73cf,0x73cf,0x73af,0x738e,0x8431,0x8c92,0x8451,0x8451,0x8c72,0x8472,0x8451,0x8471,0x8470,0x7c10,0x73cf,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x6baf,0x73b0,0x73d0,0x73d0,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x8431,0x8431,0x8431,0x8431,0x8431,0x8451,0x8451,0x8431,0x8431,0x7c11,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x8452,0x8c72,0x8c93,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x9d35,0xa596,0xa556,0x9d35,0x9d56,0xa576,0xa556,0x9d56,0x9d35,0x9d35,0xa556,0xa576,0xa576,0xa576,0x9d56,0x9d56,0xa576,0xad97,0xadb7,0xad97,0xa556,0xadb7,0xa597,0xa597,0xadd8,0xb5d8,0xbe5a,0xc67b,0xc65a,0xce9b,0xd6dc,0xc67a,0xd6db,0xdf1c,0xbe39,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2966,0x2945,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18a2,0x18c2,0x10a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x2124,0x2124,0x2104,0x18e4,0x20e3,0x18e3,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2124,0x2945,0x2945,0x2124,0x2103,0x18a2,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x18c3,0x2945,0x3166,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x39a7,0x31a6,0x2924,0x2124,0x2104,0x18e3,0x2104,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xadd8,0xadf9,0xadd8,0xa597,0x9d56,0x9536,0x9515,0x9d16,0x9515,0x9d56,0xa597,0x9d35,0x8cf4,0x9d56,0x9515,0x8cf4,0xadb7,0xadb7,0x9cf4,0x9d15,0x8cd3,0x8cb3,0x8cf4,0xa597,0x8cb3,0x8493,0x8cb3,0x9514,0x9514,0x9514,0x9515,0x9515,0x9515,0x9535,0x9515,0x9d35,0x9515,0x9d15,0x9d35,0x9d15,0x8cb3,0x8cb4,0x94f4,0x94d4,0x94d4,0x9d15,0x9d15,0x9d15,0x94d4,0x8452,0x8452,0x8472,0x8452,0x8c93,0x8472,0x8cb3,0x8cb3,0x8432,0x73f0,0x73f0,0x73f0,0x6bcf,0x6baf,0x6bd0,0x73f0,0x7410,0x73f0,0x6baf,0x6bcf,0x73d0,0x7c10,0x7c10,0x73ef,0x73cf,0x7c11,0x8431,0x73f0,0x73f0,0x6baf,0x6baf,0x73d0,0x73f0,0x7bf0,0x73cf,0x73cf,0x8c51,0x7c11,0x73af,0x6b6e,0x6b6e,0x73af,0x6b6e,0x634d,0x634d,0x5b2c,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x52ab,0x52cb,0x52cb,0x73cf,0x6b6d,0x52ab,0x630c,0x5acb, +0x632c,0x6b4c,0x6b4d,0x630c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x5b0c,0x630c,0x634d,0x6b6e,0x738e,0x738e,0x6baf,0x73af,0x7bd0,0x8410,0x8c91,0x73ef,0x73af,0x738f,0x6b8e,0x6b8e,0x73ae,0x73ae,0x7bcf,0x7bcf,0x7bcf,0x73af,0x73af,0x7bcf,0x8c72,0x8c72,0x8471,0x8451,0x8451,0x8471,0x8471,0x8451,0x7c0f,0x7bef,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73d0,0x73f0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c31,0x8431,0x8472,0x8451,0x8451,0x8451,0x8431,0x7c31,0x7c31,0x7c31,0x7411,0x7c11,0x8452,0x8452,0x8472,0x8c72,0x8c93,0x8cb3,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x9515,0x9d35,0x94f5,0x9d36,0x9d56,0xa556,0xad97,0x9d36,0x9d56,0xa556,0x9d56,0x9d56,0xa576,0xad97,0x9d56,0x9d35,0xa576,0xa556,0xa556,0xa576,0xa597,0xadd8,0xa597,0xa597,0xbdf9,0xbe3a,0xb639,0xc65b,0xcebb,0xc67b,0xc65a,0xd6fc,0xdf1c,0xc67a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x2124,0x3186,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x18c3,0x10a2,0x18c2,0x10a2,0x1082,0x1081,0x1081,0x10a2,0x18e3,0x2124,0x2124,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x2103,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2945,0x2944,0x2124,0x20e3,0x10a2,0x10a2,0x18a2,0x1082,0x1082,0x18a2,0x10a2,0x18c3,0x2124,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x2125,0x3186,0x39c7,0x2945,0x2124,0x2124,0x2104,0x2104,0x1904,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0xb619,0xb619,0xa597,0x9d56,0x9515,0x9536,0x94f5,0x9d15,0x8cd4,0x94f5,0xa576,0xa577,0x9535,0x9535,0x9d36,0xa597,0xb619,0xa576,0x9d36,0x94f4,0x8cb3,0x8cb3,0x9d55,0x9d76,0x8473,0x8472,0x8cb3,0x8cb3,0x8492,0x8cb3,0x9515,0x9d15,0x9515,0x9535,0x9515,0x9d35,0xa556,0xa576,0xa576,0xb5b8,0xad97,0x8cd4,0x9d56,0x9d35,0x94d4,0xa535,0x8cb3,0x94d4,0x94f4,0x8cb3,0x8472,0x8472,0x8472,0x94d3,0x8cb3,0x8c93,0x8cd4,0x8452,0x7bf1,0x73d0,0x73d0,0x73f0,0x6bd0,0x7410,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x73d0,0x73ef,0x6bcf,0x73cf,0x7bf0,0x7c11,0x7c11,0x73f0,0x73d0,0x6b8f,0x6baf,0x73d0,0x73d0,0x73cf,0x73ef,0x8471,0x7c31,0x6baf,0x6baf,0x6baf,0x6bae,0x6baf,0x6b8e,0x6bae,0x636d,0x5b4d,0x52ec,0x5b0c,0x5aec,0x52ab,0x52cb,0x5b0c,0x52ec,0x4aab,0x52cb,0x52cb,0x5aeb,0x6b6d,0x73cf,0x52eb,0x5b0c,0x52aa, +0x632c,0x6b2c,0x632c,0x630c,0x5aeb,0x630c,0x630c,0x5b0b,0x634d,0x630c,0x630c,0x632d,0x632c,0x632d,0x6b4d,0x738e,0x6baf,0x7bf0,0x7bf0,0x7bef,0x7c10,0x73ef,0x738e,0x736e,0x738e,0x738e,0x6b6e,0x73af,0x7bcf,0x73cf,0x73ae,0x6b8e,0x73af,0x8431,0x8c92,0x94b3,0x8c92,0x8451,0x8451,0x8c92,0x7c31,0x73f0,0x7c10,0x7c10,0x6baf,0x6b8e,0x6baf,0x73af,0x738f,0x6b8f,0x6b8f,0x73cf,0x73f0,0x7c10,0x73ef,0x7c10,0x7c10,0x73f0,0x8451,0x8452,0x8472,0x8cb3,0x8472,0x8471,0x8451,0x7c10,0x7c10,0x8431,0x7c31,0x7c31,0x8452,0x8432,0x8452,0x8493,0x8492,0x8472,0x8c93,0x8493,0x8493,0x8493,0x7c52,0x7c73,0x8493,0x8cd4,0x9d36,0x9d56,0x9d36,0xb5d8,0xa597,0xa556,0x9d35,0x9d35,0xa556,0xa576,0xa597,0x9d56,0x9d35,0x9d56,0x9d15,0x9515,0xa556,0xb5d7,0xb5d8,0xa577,0xa557,0xb5d8,0xb5f8,0xadb8,0xb5f9,0xc67b,0xc67a,0xc67a,0xd6db,0xd6db,0xc65a,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x2104,0x2965,0x2965,0x2124,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x18c2,0x2104,0x2104,0x2924,0x2944,0x2124,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2925,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x1082,0x10a2,0x18c2,0x10a2,0x1082,0x18a2,0x18c3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2125,0x3186,0x31a7,0x2965,0x2124,0x2124,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x20e4,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xadb8,0xadb8,0xa597,0x9d56,0x9d35,0x9d15,0x9d15,0x94f5,0x94d4,0x9515,0x9d35,0xa577,0xa597,0x9d56,0x9d36,0xadb7,0xadb8,0x94f5,0xa577,0x9d56,0x94f4,0x8cd3,0x9d35,0x94d4,0x8452,0x8452,0x8cb3,0x8472,0x8472,0x8472,0x8cf4,0x9514,0x9d15,0x9cf4,0x94f4,0xa556,0xa596,0xa597,0xad97,0xb5f8,0xb5f8,0xa576,0x9515,0x9d15,0x94f4,0x9d14,0x94f4,0x8492,0x8cb3,0x8492,0x8472,0x8cb3,0x8492,0x94f3,0x8cd3,0x8452,0x8cb4,0x8473,0x73d0,0x73f0,0x73f0,0x6bcf,0x6bcf,0x7410,0x73d0,0x73d0,0x73d0,0x6bcf,0x6baf,0x6b8f,0x7c10,0x7c31,0x73cf,0x7bf0,0x73cf,0x7410,0x7410,0x73f0,0x6baf,0x73d0,0x73f0,0x6bae,0x7c10,0x8472,0x73f0,0x73f0,0x73f1,0x6baf,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x5b4d,0x530c,0x5b0c,0x52eb,0x52cb,0x5b0c,0x5b2d,0x52eb,0x4acb,0x52cb,0x52ab,0x52cb,0x6b6d,0x73ae,0x632d,0x52ab,0x52ab, +0x6b4c,0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x62eb,0x5aeb,0x62ec,0x5aec,0x5aec,0x632d,0x632c,0x632c,0x6b6d,0x6b4d,0x738f,0x7bf0,0x7bef,0x7c10,0x7bef,0x73ef,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x7bcf,0x7bcf,0x738e,0x6b6e,0x6b6e,0x7bf0,0x94b3,0x9cf4,0x94d3,0x8471,0x8c71,0x8471,0x7c30,0x73cf,0x73af,0x7bf0,0x7c10,0x6baf,0x6baf,0x73af,0x7bf0,0x73af,0x6baf,0x6baf,0x73f0,0x7c10,0x73f0,0x73ef,0x73f0,0x73f0,0x73f0,0x8452,0x8c93,0x7c52,0x8472,0x7c51,0x7c51,0x8451,0x7c51,0x8451,0x7c31,0x7c31,0x8472,0x8c93,0x8452,0x8472,0x84b3,0x7c51,0x7c52,0x8452,0x8452,0x8452,0x8493,0x8473,0x7c52,0x7c52,0x84b3,0x94f5,0x94f5,0x9d36,0xadb7,0xb5f9,0x94d4,0x9d15,0x9d35,0x9d56,0xa556,0x9d35,0xa576,0x9d35,0x9d35,0x9d35,0x9d36,0xa556,0xadb7,0xb5d8,0xad97,0xad77,0xb5d8,0xb5f8,0xb5d8,0xadd8,0xb5f9,0xbe3a,0xc65a,0xc67a,0xc67a,0xbe19,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18e3,0x2124,0x3186,0x3166,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x18c2,0x18c3,0x2103,0x2124,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2945,0x2925,0x2124,0x2104,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2103,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2104,0x2966,0x39c7,0x2966,0x2124,0x2104,0x2124,0x2104,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x3186,0xa597,0x9d76,0x9d56,0xa577,0xa576,0x9515,0x94f5,0x94f4,0x9515,0x94f4,0x94f4,0x9535,0x9d56,0xa5b7,0x9515,0xb5f8,0x9d36,0x8494,0x9d77,0xadb8,0x94f4,0x9d15,0x94d4,0x8c93,0x8c93,0x8472,0x94d4,0x8472,0x7c32,0x8cd4,0x84b3,0x94f4,0x9d15,0x9d35,0xa556,0xad76,0xad96,0xa576,0xad97,0xa597,0xa597,0xadb7,0x9d36,0x9d35,0x9d56,0x94f4,0x8cb3,0x8c92,0x94f4,0x8c93,0x8cb3,0x8cd3,0x8cb3,0x94f3,0x94f4,0x8cb3,0x7c51,0x73f0,0x73f0,0x7411,0x73f0,0x6baf,0x6bcf,0x73f0,0x73d0,0x73d0,0x73af,0x73d0,0x73f0,0x73af,0x7c10,0x8c72,0x7c31,0x7c10,0x7410,0x7c30,0x7c30,0x73f0,0x63ae,0x73ef,0x6bcf,0x6baf,0x7c31,0x7c10,0x73ef,0x7bf0,0x73d0,0x73af,0x6baf,0x636e,0x634d,0x6b8e,0x6b8e,0x636d,0x5b2c,0x5b2c,0x5b2d,0x5b0c,0x530c,0x52eb,0x52cb,0x52cb,0x4a8a,0x52aa,0x52cb,0x5b0c,0x5b0c,0x6b6d,0x6b6d,0x632c,0x6b4d, +0x632c,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x62eb,0x62eb,0x632c,0x5b0c,0x5aec,0x630d,0x6b2d,0x6b4d,0x6b4d,0x6b4d,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73ae,0x6b4d,0x6b6e,0x6b8e,0x6b6e,0x738f,0x7bef,0x7bcf,0x738e,0x73af,0x7bf0,0x8c72,0x94b3,0x9cf4,0x94d3,0x8c92,0x8c72,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x73f0,0x73f0,0x73d0,0x7bf0,0x73cf,0x8411,0x73cf,0x73cf,0x73f0,0x73f0,0x7c10,0x73f0,0x73f0,0x73cf,0x73cf,0x7bf0,0x7bf0,0x7c31,0x8472,0x8452,0x8431,0x8431,0x8452,0x8451,0x8451,0x8451,0x8471,0x8472,0x8431,0x8452,0x8472,0x8472,0x7c31,0x7c52,0x8452,0x8452,0x8452,0x8452,0x8493,0x8493,0x8493,0x94f5,0x8cd4,0x94f5,0x9d35,0xa556,0xadd8,0x94f4,0x94f5,0x94f4,0x9d56,0x9d56,0x9d56,0xa556,0x9d56,0x9d15,0xa556,0xa576,0xa576,0xad97,0xadb7,0xad97,0xadd8,0xb5d8,0xb5d8,0xb5f9,0xb5f8,0xadd8,0xb5d9,0xbe3a,0xc67a,0xc65a,0xb5f9,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x2103,0x2925,0x2965,0x2965,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c2,0x18c2,0x18a2,0x18a2,0x18c3,0x2103,0x2124,0x2945,0x3165,0x31a6,0x31a6,0x31a6,0x31a6,0x3185,0x3185,0x3165,0x2944,0x2924,0x2104,0x18c3,0x18c3,0x18a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x18e4,0x2124,0x31a6,0x31a7,0x2124,0x2104,0x2104,0x2124,0x2104,0x20e3,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x2986,0x9d56,0x9d56,0x9515,0x9d16,0x9d36,0x9d15,0x9d35,0x9515,0x9514,0x9514,0x9d35,0x9d56,0x94f5,0xa577,0xa596,0xb5f8,0x8cd4,0x8cd4,0x9535,0xa576,0x9d35,0x9d55,0x8493,0x8cb3,0x8cd4,0x8472,0x8cd3,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x9514,0x9d55,0xa576,0xad97,0xadb7,0xb5d8,0xa576,0xa556,0xa576,0xa597,0xa597,0x9d35,0x9d35,0x94f5,0x94f4,0x94d4,0x9d15,0x94f4,0x8cb3,0x8cb3,0x8492,0x8cb3,0x94f4,0x94d3,0x8472,0x73f0,0x73d0,0x6bd0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73d0,0x6bcf,0x73b0,0x7410,0x7410,0x7c10,0x8451,0x7c51,0x8cb3,0x8c72,0x7c10,0x7c10,0x7c30,0x73f0,0x73f0,0x7410,0x73f0,0x7c31,0x73d0,0x7c31,0x7c31,0x8431,0x7c10,0x73af,0x73cf,0x73cf,0x6bae,0x638e,0x6baf,0x636e,0x5b4d,0x5b2d,0x5b2d,0x5b2d,0x634d,0x634d,0x634d,0x5aec,0x5aec,0x5b0b,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x634d,0x73ae,0x7c10, +0x5aeb,0x5aeb,0x630c,0x5aeb,0x5acb,0x5acb,0x5acb,0x630c,0x632c,0x630c,0x630c,0x630d,0x736e,0x6b2d,0x6b6e,0x738e,0x738e,0x7bf0,0x7bef,0x7c10,0x7c10,0x738e,0x6b4d,0x634d,0x636d,0x73af,0x7bf0,0x73cf,0x73af,0x7bd0,0x8411,0x8452,0x8c72,0x8cb3,0x94f4,0x8472,0x8451,0x7c10,0x73cf,0x73ae,0x6b8e,0x6baf,0x73cf,0x6b8e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x7410,0x7410,0x73f0,0x73cf,0x73cf,0x73cf,0x73cf,0x73d0,0x73d0,0x7bf0,0x8431,0x8452,0x8452,0x8452,0x8452,0x8452,0x8452,0x8472,0x8492,0x8492,0x8452,0x8452,0x8452,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x7c32,0x8493,0x8472,0x8493,0x94f4,0x8cb4,0x94d4,0x9d35,0x9d35,0x9d56,0x9d35,0x9d35,0x9d56,0xa597,0xad97,0xa576,0xa556,0xa576,0xa556,0xa576,0xadb7,0xa597,0xadb7,0xadd8,0xadd8,0xb5f8,0xadd8,0xadb8,0xadf8,0xadf8,0xadd8,0xadf9,0xadf9,0xb619,0xbe3a,0xadb8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x2124,0x2965,0x3185,0x2965,0x20e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c2,0x18c2,0x18c2,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x2104,0x2945,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x20e3,0x20e3,0x18c3,0x10a2,0x18a2,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2125,0x2965,0x3186,0x2945,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18a3,0x18e3,0x18e3,0x20e3,0x3186,0x94f5,0x94f5,0x9515,0x9516,0x9d56,0x9d56,0x9d36,0x9d35,0x9d35,0xa596,0xa597,0x9d36,0x94f5,0x94f5,0xb618,0xadd7,0x8cf4,0x9535,0x9515,0x9d35,0xb5d8,0x94f4,0x8452,0x8c93,0x8c93,0x7c31,0x8c93,0x94f4,0x8452,0x7c52,0x8492,0x7c52,0x94f4,0x9514,0x9d15,0xad97,0xa576,0xb5f8,0xadb7,0xa556,0xa576,0xa576,0xadb7,0xa576,0x8cb4,0x94f5,0x9d15,0x8cd4,0x8cd4,0x8472,0x7c31,0x8492,0x8472,0x8cb3,0x8cb3,0x8472,0x7c31,0x7c11,0x7c31,0x73cf,0x73cf,0x6baf,0x73ef,0x73f0,0x6baf,0x6b8f,0x6b8f,0x73b0,0x73d0,0x7c10,0x7c31,0x73ef,0x7c10,0x8c92,0x8431,0x7bf0,0x7c10,0x73d0,0x73d0,0x8451,0x8c92,0x6b6e,0x636e,0x6baf,0x7c10,0x7bf0,0x7c10,0x7bf0,0x6baf,0x6baf,0x6baf,0x636e,0x6bae,0x6b8e,0x5b4d,0x5b2d,0x5b2c,0x5b0c,0x632c,0x5b0c,0x6b6e,0x5b2c,0x6b8e,0x636e,0x5b2d,0x5b0d,0x5b0d,0x5aec,0x52ab,0x5aec,0x5b2c, +0x5acb,0x5aeb,0x5b0b,0x5b0b,0x5acb,0x6b2c,0x630c,0x5aeb,0x630c,0x630c,0x630c,0x5b0c,0x632d,0x6b4d,0x6b6e,0x6b8e,0x7c10,0x94b2,0x7c10,0x7c30,0x7bef,0x73ae,0x6b4d,0x632d,0x6b4e,0x7bcf,0x73ef,0x73ef,0x7c30,0x7c10,0x7bd0,0x7bd0,0x8472,0x94d3,0x8cb3,0x8451,0x7c10,0x7bf0,0x73ef,0x73cf,0x73af,0x6baf,0x73af,0x6b8e,0x73cf,0x73cf,0x6b8e,0x6b8f,0x73d0,0x73cf,0x73cf,0x6baf,0x6baf,0x6bae,0x6bae,0x73ef,0x73cf,0x7bf0,0x73d0,0x73d0,0x7c10,0x8431,0x7c31,0x8451,0x7c31,0x8472,0x8472,0x8cb3,0x8472,0x8492,0x8cb3,0x8cb3,0x8c93,0x8c72,0x8452,0x8c93,0x8c93,0x8472,0x8452,0x8452,0x8452,0x8432,0x8451,0x94d4,0x8cb4,0x94f4,0x9d15,0x94f5,0x9d35,0xa556,0xa556,0x9d35,0x9d35,0xa597,0xa576,0xa556,0xa576,0x9d56,0x9d56,0xa597,0x9d36,0x9d36,0xa597,0xa597,0xadb7,0xadb7,0xa597,0xadd8,0xb619,0xadf9,0xadf9,0xadf8,0xb619,0xadd8,0xb5f8,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18e3,0x2925,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2103,0x18e3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x2104,0x2124,0x2125,0x2965,0x2965,0x2945,0x2925,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9516,0x8cf5,0x8cf5,0x9d56,0xa5b7,0xa597,0x9535,0x9d55,0x9d56,0xa596,0xa556,0xa576,0x9d36,0x9d35,0xb5f8,0x9d35,0x9515,0x9d76,0x9515,0x9d35,0xadb8,0x94f4,0x8493,0x8c93,0x8493,0x7411,0x8452,0x8cb4,0x8c73,0x8493,0x7c51,0x7c51,0x8cb3,0x9d35,0x9d35,0xa556,0xad96,0xa576,0xadb7,0xa576,0xa576,0xa597,0xadd8,0xa577,0x8cb3,0x9d15,0x9d15,0x8cd3,0x8cd3,0x8472,0x8472,0x8472,0x7c52,0x94f4,0x8493,0x7c52,0x73f0,0x73f1,0x73f0,0x73cf,0x73f0,0x73cf,0x7410,0x73f0,0x73d0,0x73f0,0x7c10,0x73f0,0x73d0,0x73d0,0x7bf0,0x7c31,0x7410,0x7c31,0x7c31,0x7bf0,0x7c30,0x6baf,0x7c31,0x8c92,0x8c72,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x6baf,0x6baf,0x636e,0x636e,0x6b6e,0x636e,0x636e,0x6b8e,0x634d,0x5b0c,0x5b2d,0x634d,0x5b0c,0x52ec,0x5b2c,0x5b2c,0x5b2c,0x5b4d,0x634d,0x636d,0x636d,0x5b0c,0x5b0c,0x5b0c,0x5b2c, +0x5aeb,0x5acb,0x52ca,0x528a,0x52aa,0x5acb,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x630c,0x630c,0x632c,0x632c,0x6b6e,0x8471,0x8472,0x7c10,0x7bf0,0x73f0,0x73f0,0x634d,0x632d,0x736e,0x7bcf,0x7c10,0x7c30,0x7c10,0x738e,0x6b6e,0x73af,0x8c92,0x8cb3,0x8451,0x8451,0x7c10,0x73ef,0x6b8e,0x6b8e,0x6b6e,0x738f,0x73af,0x6baf,0x73ef,0x73ef,0x73cf,0x6bae,0x6baf,0x6baf,0x6baf,0x6bae,0x73af,0x6b8e,0x6bae,0x6bcf,0x73f0,0x7c11,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73cf,0x73f0,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x8452,0x8cd3,0x9d35,0x9d15,0x94d4,0x8c93,0x8472,0x8452,0x7c31,0x7c31,0x8c93,0x8473,0x8452,0x7c52,0x9d55,0xa576,0x94f4,0x9d15,0x9d15,0xa555,0x9d35,0x9d35,0x9d15,0x9d15,0x9d35,0xa556,0xa576,0xa597,0xa556,0xa576,0xa597,0xa597,0xa576,0x9d76,0x9d76,0xa596,0xa597,0xa576,0xadb8,0xb61a,0xadf9,0xadd8,0xb639,0xb639,0xadf9,0xadd8,0x1082,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a3,0x18c3,0x18a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x3185,0x31a6,0x2965,0x2104,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x2104,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0x9d36,0x9515,0x9515,0x9d56,0x9d56,0x9d76,0x9d76,0x9d56,0x9d56,0x9d56,0x9d36,0xa597,0xa5b7,0xa597,0xadd8,0x9d36,0x9515,0x9d36,0x9515,0x9535,0x9d35,0x8cd4,0x8cb3,0x8493,0x8cd4,0x7c72,0x8493,0x8cd3,0x8c93,0x8473,0x8472,0x7c11,0x8452,0x94f4,0x9d35,0x9d55,0xa596,0x9d55,0xa556,0xadd8,0xa576,0xadd7,0xa5b7,0x9d56,0x8cd4,0x9514,0x9d55,0x8cb3,0x8472,0x8472,0x8c93,0x8472,0x8493,0x8c93,0x7c72,0x7411,0x73f1,0x73f1,0x73d0,0x6baf,0x6baf,0x73d0,0x7411,0x73d0,0x73cf,0x73cf,0x8472,0x7c11,0x73f0,0x6bd0,0x6bf0,0x7411,0x7411,0x6baf,0x6bb0,0x6bcf,0x73cf,0x7c31,0x7c31,0x73d0,0x73f0,0x6b8f,0x6b8e,0x73cf,0x73ef,0x73ef,0x6baf,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8e,0x6b8e,0x6b8e,0x5b4d,0x6b6e,0x7bf0,0x634d,0x52ec,0x5b0d,0x5b2d,0x5b4d,0x530c,0x530c,0x634d,0x73ce,0x73cf,0x634d,0x634e,0x5b0c,0x5b2d, +0x5acb,0x52aa,0x52aa,0x5aaa,0x5acb,0x5acb,0x630c,0x632c,0x632c,0x632c,0x630c,0x62ec,0x632c,0x6b6d,0x7bef,0x8451,0x8c92,0x8451,0x8431,0x7c10,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73cf,0x8410,0x7bf0,0x6bae,0x6b8e,0x6b8e,0x736e,0x8431,0x94b3,0x8451,0x7c31,0x7c30,0x7bf0,0x73af,0x6b6e,0x6b4e,0x6b4e,0x738f,0x73af,0x6baf,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x6bcf,0x73ef,0x6bcf,0x6bcf,0x6bcf,0x73af,0x6baf,0x6bcf,0x73f0,0x73d0,0x7bd0,0x73d0,0x7bf0,0x73f0,0x6baf,0x6baf,0x7c11,0x8452,0x8c93,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x8472,0x8cb3,0x8472,0x8473,0x8472,0x8452,0x8472,0x8cd4,0x8473,0x8473,0x8493,0x8472,0xadd7,0xa576,0x94f4,0x9d35,0x9d35,0x94d3,0x9d15,0xa556,0x9d15,0xa576,0xad97,0xa597,0xadb7,0xa597,0xa556,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0xa576,0xa596,0xad97,0xb5d9,0xb619,0xadf8,0xadf8,0xb5f9,0xadd8,0xadd9,0xa577,0x1082,0x10a2,0x18c3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x2104,0x2124,0x2965,0x3186,0x2965,0x2104,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x2124,0x2966,0x2965,0x2124,0x2124,0x2104,0x18e3,0x18e3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x3186,0xa597,0x9d56,0x9d36,0x9d15,0x9536,0x9d36,0x9d56,0x9d76,0xa597,0x9d56,0x9d35,0xa577,0xadb7,0xa576,0xadb7,0xadb7,0x9535,0x94f4,0x9d76,0x9d56,0x94f4,0x8cb4,0x8493,0x9535,0x94f4,0x8c93,0x8493,0x9d35,0x8cb3,0x8472,0x8472,0x8452,0x7c11,0x8472,0x9515,0x8cf4,0x8cd4,0x9d15,0x94d4,0xa577,0xadb7,0xadd7,0xa556,0x94f5,0x9514,0x94f4,0x94f4,0x8cb3,0x8493,0x7c31,0x7c52,0x7c52,0x8452,0x7c31,0x7410,0x7411,0x73f1,0x73d0,0x73f0,0x73cf,0x6baf,0x6bcf,0x7410,0x73f0,0x6baf,0x6baf,0x7c10,0x7c11,0x73f0,0x6bcf,0x6bcf,0x6bd0,0x6baf,0x6b8f,0x6b8f,0x6baf,0x8451,0x7c10,0x636e,0x6b8e,0x73d0,0x6baf,0x636e,0x6bae,0x8430,0x8c72,0x7c10,0x73af,0x73d0,0x73f0,0x6baf,0x6b6e,0x6baf,0x6baf,0x634d,0x636e,0x5b2d,0x52ec,0x5aec,0x5aec,0x5aec,0x5b0c,0x5b2d,0x634e,0x634d,0x6b6d,0x73af,0x6b6e,0x632d,0x5b0c,0x5b0c, +0x52ca,0x5acb,0x5acb,0x62cb,0x62eb,0x62eb,0x630c,0x6b2d,0x630c,0x630c,0x632c,0x6b4d,0x6b8e,0x6b6e,0x73cf,0x8c72,0x7c11,0x7c10,0x8430,0x8410,0x7bef,0x73ef,0x73cf,0x73ae,0x73cf,0x7c10,0x738e,0x6b6d,0x73af,0x7bcf,0x7bf0,0x8c92,0x8451,0x6bcf,0x7c10,0x73cf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x73af,0x73ce,0x73cf,0x6b8e,0x6baf,0x73cf,0x73ef,0x73cf,0x6baf,0x6b8e,0x6baf,0x6bcf,0x6baf,0x8431,0x7c31,0x73cf,0x7bf0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x8452,0x8c93,0x8452,0x7c31,0x8452,0x8452,0x8452,0x8472,0x8493,0x8492,0x8452,0x7c32,0x8472,0x8493,0x8493,0x8473,0x8473,0x8473,0x8c93,0xa556,0xb5f8,0x94d4,0x8cb3,0x94d4,0x8cd4,0x9515,0x9d35,0x9d36,0xa576,0xa576,0xad97,0xadb7,0xadb7,0xadb8,0xadd8,0xa597,0x9d56,0x9d56,0xa597,0xadb7,0xb5d8,0xadb7,0xbe19,0xb619,0xb619,0xbe3a,0xb5f9,0xb5f9,0xb5f9,0xa597,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2965,0x2965,0x2945,0x2124,0x2104,0x18c3,0x10a2,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x2965,0x2965,0x2925,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e3,0x3186,0x9d56,0x9d56,0x9d56,0x9d35,0x9515,0x9d35,0x9d36,0x9d56,0xadb8,0x9d76,0xa556,0xa577,0xb619,0xa576,0xa576,0xa597,0xa576,0x8cb3,0x9535,0x9d56,0x94d4,0xa556,0x9515,0x9d35,0x9d35,0x94f4,0x8cb3,0x94f4,0x8cd3,0x8cb2,0x8cb3,0x8492,0x8452,0x8452,0x8493,0x8493,0x8cb4,0x9515,0x94d4,0x8cb3,0xad77,0xb5b8,0x9d15,0x9d15,0xa555,0x94f4,0x8451,0x8cb3,0x94f4,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7c11,0x7c31,0x7c10,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x7c10,0x7c11,0x6baf,0x6baf,0x6bd0,0x73d0,0x73f0,0x73f0,0x6baf,0x6bcf,0x6baf,0x6baf,0x6b8e,0x73f0,0x8c92,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x6bcf,0x636e,0x636e,0x73cf,0x7c10,0x7c10,0x73f0,0x73d0,0x7c11,0x73d0,0x6b8f,0x6baf,0x634e,0x6b6e,0x634d,0x5b2c,0x5b2d,0x5b0c,0x52ec,0x5b0c,0x5b0c,0x5b2c,0x634d,0x634d,0x632d,0x632d,0x634d,0x5b2c,0x5b0b,0x5b2c, +0x52ca,0x5acb,0x630c,0x630c,0x62ec,0x630c,0x632c,0x632c,0x5b0c,0x5b0c,0x632c,0x6b4d,0x6b4d,0x632d,0x7bd0,0x8c72,0x7bf0,0x7c10,0x7bf0,0x7bf0,0x7bef,0x73cf,0x6b8e,0x6b8e,0x73af,0x73ef,0x73ae,0x73af,0x7bf0,0x7bf0,0x7c10,0x8451,0x7410,0x6baf,0x6baf,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b8f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x6baf,0x73cf,0x7c10,0x73f0,0x6baf,0x6baf,0x6baf,0x73cf,0x6bcf,0x8451,0x8451,0x73af,0x73d0,0x73f0,0x73f0,0x73f0,0x73f0,0x7bf0,0x7c11,0x8431,0x8c92,0x8c93,0x8452,0x7c31,0x7c11,0x8452,0x8472,0x7c52,0x8452,0x8492,0x7c52,0x7c11,0x8452,0x8473,0x8473,0x8493,0x8c93,0x8c93,0x94f4,0x9d15,0xa576,0x9515,0x9514,0x9d35,0x9515,0x9514,0x9d35,0x9d35,0x9d15,0x9d36,0xad97,0xad97,0xadb8,0xa577,0xa577,0x9d36,0x9d15,0x9d56,0xa576,0xad97,0xadb7,0xb5f9,0xbe3a,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xb5f8,0xbe39,0xadb7,0x1082,0x1082,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x3186,0x2945,0x2124,0x18e3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x18a2,0x2104,0x2945,0x3186,0x2945,0x2104,0x2104,0x20e4,0x20e3,0x20e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xa598,0x9d56,0x9d56,0xa576,0xa556,0x9d36,0x9d15,0x9d36,0xa577,0x9d56,0xa576,0xb5f8,0xb639,0xadd8,0xa577,0xa597,0x9d35,0x8493,0xa577,0x9d15,0x8cd4,0x9d15,0x9d15,0x9d15,0x9d56,0x9d35,0x9515,0x94d4,0x8c93,0x7c31,0x8cb3,0x94f4,0x8c72,0x8472,0x7c51,0x8493,0x8cb3,0x94f4,0x9d15,0x94d4,0x94f5,0x9d36,0x94f4,0x94f4,0x9d35,0x8cb3,0x8472,0x8452,0x8452,0x7c31,0x7410,0x7c31,0x8472,0x7c31,0x7c11,0x7c11,0x7410,0x73f0,0x73d0,0x73d0,0x73d0,0x73cf,0x73f0,0x7c11,0x6b8f,0x6bd0,0x6bcf,0x6bf0,0x73f0,0x7bf0,0x73af,0x73cf,0x6bcf,0x6bae,0x6baf,0x7c31,0x8451,0x6b8e,0x6b8e,0x6b8e,0x636e,0x636e,0x6bae,0x636e,0x73cf,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x6b8f,0x73b0,0x6b6f,0x6b6f,0x6b8f,0x5b2d,0x530c,0x6bae,0x5b2c,0x4acb,0x52eb,0x5b4d,0x52ec,0x73ef,0x6b8e,0x5b2c,0x5aec,0x52eb,0x52eb,0x52eb,0x52eb, +0x5aaa,0x5acb,0x630c,0x630c,0x632c,0x630c,0x632c,0x632c,0x632c,0x5aeb,0x5acb,0x5aeb,0x630c,0x738e,0x8c71,0x7c10,0x73cf,0x6baf,0x73af,0x7bf0,0x7c10,0x73cf,0x6b4d,0x738e,0x7bcf,0x73ef,0x73ef,0x73cf,0x7bef,0x73ef,0x7bf0,0x7c10,0x6bcf,0x6b8e,0x6b8e,0x6b8f,0x738f,0x738f,0x6b8e,0x6bae,0x6baf,0x6baf,0x6bae,0x6b8e,0x6b8e,0x73af,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73ef,0x73f0,0x73cf,0x73cf,0x73af,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x7bf0,0x7c31,0x8c72,0x8c92,0x8c72,0x8451,0x7c31,0x8472,0x8472,0x7c52,0x7c31,0x8472,0x8493,0x7c52,0x8452,0x8472,0x8cb3,0x8cb3,0x8493,0x94f4,0x94d4,0x94d4,0x8cb3,0x9515,0xadb7,0xadb7,0x9514,0x9d15,0x94f4,0x94f4,0x8cd4,0x9d15,0xa577,0xadb7,0xadb8,0x9d56,0xa577,0xad97,0x9d15,0x9d36,0xa576,0xa576,0xa576,0xb5f8,0xadb8,0xb5f9,0xbe5a,0xbe5a,0xbe5a,0xbe39,0xbe39,0xb5d8,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c2,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x2103,0x2104,0x2124,0x2965,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1082,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x1082,0x10a2,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x2103,0x3186,0xa577,0x9d56,0x9d76,0xa576,0xa576,0x9d56,0x9d56,0x9d56,0x9d56,0x9d56,0xa597,0xb5d8,0xb5d8,0xadd8,0xadb8,0xa577,0x9535,0x9d35,0xa597,0x8cb3,0x8cd4,0x94d4,0x9d15,0x9d35,0x8cf4,0x8cf4,0x9515,0x8cb4,0x8452,0x8432,0x8472,0x9d14,0x9cf4,0x8492,0x7c31,0x84b3,0x8452,0x8472,0x94f4,0x9515,0x9514,0x9d35,0x9515,0x8cb4,0x8473,0x8493,0x8472,0x7c52,0x7c31,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x7c52,0x7c11,0x7c51,0x7410,0x73d0,0x73d0,0x73d0,0x73f0,0x73f0,0x8471,0x7c51,0x73f0,0x6bd0,0x73f0,0x7411,0x7bf0,0x73af,0x6bcf,0x73d0,0x6bcf,0x73f0,0x8472,0x7c11,0x6baf,0x6b8e,0x6bae,0x6b8e,0x6b6e,0x73af,0x6b8e,0x73ef,0x73ef,0x73cf,0x73cf,0x73f0,0x73cf,0x73cf,0x73af,0x6b6e,0x6b8f,0x634d,0x634d,0x5b0c,0x6b8e,0x632d,0x52ec,0x52cb,0x5b0c,0x634d,0x6b8e,0x634d,0x5aec,0x52cb,0x52cb,0x52cb,0x52eb,0x4acb, +0x5acb,0x630c,0x6b2c,0x632c,0x632c,0x630c,0x5aeb,0x5b0b,0x630c,0x630c,0x5aeb,0x62ec,0x6b0c,0x8430,0x8c91,0x8450,0x73ef,0x634d,0x6b4d,0x738e,0x73cf,0x73af,0x6b8e,0x73af,0x7bcf,0x73ef,0x73cf,0x73cf,0x7bd0,0x73af,0x73cf,0x7bf0,0x6bae,0x6b6e,0x6b6e,0x6b8e,0x738e,0x73af,0x6baf,0x6baf,0x73af,0x73cf,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x6b8e,0x73cf,0x73af,0x73af,0x73af,0x73af,0x73cf,0x7c10,0x6bcf,0x73cf,0x6b8e,0x6baf,0x73ef,0x73cf,0x73cf,0x73cf,0x73f0,0x7c31,0x7c31,0x8472,0x8c92,0x8431,0x8452,0x8472,0x8452,0x7c72,0x7c32,0x8473,0x8493,0x8c93,0x8c93,0x8c93,0x8cd3,0x8cd4,0x8493,0x8cb4,0x94f4,0x8cd4,0x8c93,0x94d4,0x9d35,0xadb7,0xa556,0xa556,0xa577,0xa556,0x9d15,0x9d36,0xb5d8,0xadd8,0xa576,0x9d56,0x9d35,0xa577,0xa556,0x9d36,0xa556,0xadb7,0xadd8,0xb5f9,0xadd8,0xadd9,0xadf9,0xbe3a,0xbe3a,0xc67a,0xc65a,0xb5f9,0x10a2,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x18a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2924,0x2945,0x2945,0x2945,0x2124,0x18e3,0x18c3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x20e4,0x2924,0x2965,0x2944,0x2124,0x2104,0x2104,0x2104,0x20e4,0x20e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x20e4,0x18e3,0x2104,0x3186,0xadb8,0x9d57,0xa577,0x9d56,0x9d36,0xa576,0xa597,0xa597,0xa597,0xa597,0xadd8,0xad97,0xa577,0x9d56,0x9d76,0xadd8,0xa597,0xa597,0xa576,0x94f4,0x94f4,0x8cb4,0x94d4,0x9514,0x8493,0x8cd4,0x8cf4,0x8cb3,0x8472,0x8cb3,0x8472,0x7c31,0x8c92,0x8cd4,0x7c72,0x7431,0x8473,0x8c93,0x94f4,0x9d55,0x8cf4,0x94f4,0x9d15,0x8cb4,0x8473,0x8cb3,0x8472,0x7c31,0x7c11,0x7c52,0x7c31,0x7410,0x7c31,0x7c32,0x7c52,0x7411,0x8cb3,0xb5d7,0x9d14,0x8c92,0x8472,0x6baf,0x7431,0x8472,0x7c31,0x7410,0x6bcf,0x6baf,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x73f0,0x73cf,0x73f0,0x6baf,0x73d0,0x6baf,0x6b8e,0x6baf,0x638e,0x6baf,0x6b8e,0x6bae,0x6bcf,0x73cf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x6baf,0x73af,0x6b6e,0x5b2d,0x636e,0x636d,0x636e,0x5b0d,0x5aec,0x632d,0x6b6d,0x634d,0x530c,0x530c,0x52ab,0x52ab,0x52ec,0x52ec,0x52cb, +0x5aeb,0x634c,0x6b8d,0x632c,0x634c,0x634c,0x6b4d,0x630c,0x630c,0x5b0b,0x630c,0x630c,0x738e,0x8c92,0x7c30,0x7c0f,0x634d,0x630c,0x632d,0x6b4d,0x73ae,0x7bef,0x7bef,0x7bf0,0x7bf0,0x73af,0x636e,0x73af,0x7bf0,0x6b8f,0x6b6e,0x73ae,0x73ae,0x6b6d,0x632d,0x6b6e,0x6b8e,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x7c10,0x7c10,0x73d0,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73ef,0x73ef,0x73cf,0x73cf,0x73cf,0x73d0,0x73f0,0x73f0,0x7c31,0x8452,0x8452,0x7c31,0x7c31,0x7c11,0x8452,0x8472,0x8472,0x8452,0x8c93,0x8c92,0x94d3,0x8c93,0x8472,0x8c93,0x8cb3,0x8493,0x8493,0x8cb3,0x8cd4,0x8cb3,0x94b4,0x9d15,0x9d15,0xa556,0xa556,0x9d56,0xa556,0xa597,0xadb7,0xadd8,0xa577,0xa576,0x9515,0x94f5,0xa556,0xa577,0x9d15,0xa556,0xadb8,0xadb8,0xadd8,0xadd8,0xadd9,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xad97,0x10a2,0x1082,0x10a2,0x18c3,0x18a3,0x18c3,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2124,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x18e3,0x2124,0x2945,0x2945,0x2945,0x2104,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e4,0x2103,0x2104,0x31a6,0xadd8,0x9d36,0x9d56,0x9d76,0xa597,0xadb7,0xad97,0xa5b8,0xa5b8,0x9d56,0x9d56,0x9d56,0x9d56,0xa576,0x9d56,0xad97,0xadb7,0xa556,0xa556,0x9d35,0x9515,0x8cf4,0x8cd4,0x9515,0x8cd4,0x84b3,0x8c93,0x94f4,0x8cb3,0x8cb3,0x8c93,0x8452,0x7c11,0x8472,0x84b3,0x7c51,0x8cb3,0x9d34,0x94d3,0x94f4,0x8c93,0x8cd3,0x9d15,0x8cb3,0x94f4,0x8cb3,0x7c31,0x7411,0x7411,0x7c11,0x7c11,0x7c31,0x7c32,0x7411,0x7c32,0x7c52,0x8452,0x9d14,0x9cf4,0x7c52,0x8472,0x6bd0,0x6bd0,0x7410,0x6bd0,0x6bcf,0x6baf,0x7c11,0x73f0,0x73f0,0x6bef,0x7410,0x7c10,0x6bcf,0x73d0,0x73af,0x73af,0x6b8f,0x6b8e,0x6b8e,0x6baf,0x6b8f,0x636e,0x636e,0x6b6e,0x6baf,0x6baf,0x638e,0x638e,0x6b8e,0x638e,0x638e,0x634e,0x636e,0x6b8e,0x636e,0x634e,0x6bd0,0x73f0,0x6baf,0x634d,0x632d,0x630d,0x5b0c,0x52eb,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x52ec,0x52cb, +0x5aeb,0x6b6d,0x6b6d,0x632c,0x632c,0x632c,0x6b4d,0x632c,0x630c,0x630b,0x630c,0x6b2d,0x8c31,0x94b2,0x7c50,0x73cf,0x632d,0x6b4d,0x738e,0x73ae,0x73cf,0x7bef,0x8450,0x8451,0x73cf,0x6b8e,0x6b8e,0x7bf0,0x8430,0x73ef,0x6b6d,0x6b8e,0x73cf,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73af,0x73cf,0x7bf0,0x73f0,0x73cf,0x73f0,0x73d0,0x73cf,0x73f0,0x7410,0x73f0,0x73d0,0x73cf,0x73ef,0x7410,0x7c10,0x73f0,0x73d0,0x7bf0,0x73f0,0x7c11,0x7c31,0x7c31,0x8452,0x7c31,0x7c31,0x8451,0x8431,0x8452,0x8472,0x8472,0x8c93,0x94d4,0x9514,0x94f4,0x8c93,0x8cb3,0x94f4,0x8cd4,0x8472,0x7c52,0x8493,0x8cb3,0x8cd4,0x94d4,0x94f5,0x94f5,0x9d15,0xa556,0x9d56,0xa577,0xadb7,0xadb7,0xa597,0xa576,0x9d35,0x9515,0x9515,0x9d35,0xa576,0xa556,0xa597,0xadb7,0xa597,0xadb8,0xadd8,0xa597,0xa5b8,0xadd8,0xadb8,0xadd8,0xb5d8,0xa556,0x10a2,0x1082,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x18a2,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e4,0x2104,0x2104,0x2124,0x2124,0x2945,0x2124,0x2945,0x2945,0x2945,0x2124,0x2124,0x2103,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x0861,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e4,0x2104,0x2945,0x2965,0x2104,0x2124,0x2924,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e4,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x31a6,0xadb8,0x9d36,0x9d56,0xadd8,0xb5d8,0xadd8,0xadb7,0xa597,0xa598,0x9d36,0x8cf4,0x9515,0xa597,0xa577,0x9d35,0x9d36,0xadb7,0x9d36,0x94f5,0x94f4,0x9515,0x94f5,0x8cd4,0x9d15,0x9d36,0x8493,0x8493,0x94d4,0x8cd3,0x8c93,0x8c93,0x8452,0x7c11,0x7c11,0x8c93,0x8cb3,0x8cb3,0x9514,0x9d35,0x8492,0x8cb3,0x8cd3,0x8cd3,0x8472,0x7410,0x7c51,0x7c51,0x7410,0x7410,0x7c51,0x7c31,0x8472,0x8452,0x7411,0x7c31,0x7c52,0x7c11,0x73af,0x73d0,0x73f0,0x7410,0x73f0,0x6bcf,0x7410,0x7411,0x73f0,0x73f0,0x7c52,0x7410,0x7410,0x7410,0x7410,0x73f0,0x73d0,0x6b8f,0x6b6f,0x6b8f,0x636e,0x6b8f,0x6baf,0x636e,0x638e,0x638e,0x6b8e,0x636e,0x6baf,0x6bae,0x636e,0x638e,0x636e,0x6b8e,0x6b8f,0x634e,0x634e,0x6baf,0x73d0,0x636f,0x6baf,0x6bcf,0x6baf,0x6b8e,0x634e,0x632d,0x5b4d,0x5b0c,0x5b2d,0x5b2d,0x5b2c,0x52ec,0x52cb,0x52eb, +0x630c,0x6b6d,0x6b6d,0x632c,0x632c,0x630c,0x632c,0x632c,0x630c,0x630c,0x632c,0x736e,0x8c31,0x8c72,0x7c10,0x634d,0x630c,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x73af,0x7c10,0x73ef,0x6b8e,0x6b6e,0x73af,0x7c10,0x7c10,0x73cf,0x6b8e,0x6b8e,0x73cf,0x636e,0x636e,0x6b8e,0x6b8e,0x6b8e,0x6b8e,0x73cf,0x7bef,0x73cf,0x7bcf,0x73cf,0x73cf,0x73ef,0x6bcf,0x73cf,0x73f0,0x7bf0,0x7c10,0x7c31,0x7c10,0x7c10,0x73f0,0x73ef,0x73cf,0x73f0,0x73f0,0x7c11,0x7c11,0x7c10,0x73f0,0x7c51,0x8452,0x8452,0x8452,0x8451,0x8451,0x8451,0x8452,0x8472,0x8452,0x8472,0x8cb3,0x94f3,0x8cb3,0x8cb3,0x8cd3,0x8cb3,0x8cb4,0x8c93,0x8493,0x8cb4,0x8cd4,0x94d4,0x94d4,0x94d4,0x94f5,0x9d15,0x9d35,0xa556,0xadb7,0xa576,0xa577,0xadb7,0xa597,0x9d56,0x9d35,0x9515,0x9d56,0x9d56,0xa576,0xb5f8,0xadd7,0xad97,0xb5d8,0xb5f9,0xadd8,0xadd8,0xadb8,0xb5d8,0xb5d8,0xbe18,0xc618,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2125,0x2125,0x2945,0x2945,0x2945,0x2104,0x2104,0x2124,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x2104,0x20e3,0x20e3,0x2103,0x2104,0x2124,0x2125,0x2945,0x2124,0x2945,0x2945,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x31a6,0xa577,0x9d36,0xa576,0xadb7,0xb5f8,0xadf8,0xb639,0xa597,0x9d56,0x94f5,0x9515,0x94f4,0x94f5,0x9d15,0x9d15,0x9d56,0xa576,0x9d35,0x9d36,0x9d15,0x94f4,0x8cb4,0x8472,0x8c93,0x8cb4,0x8493,0x8cd4,0x8c93,0x8cb3,0x8c93,0x8473,0x8472,0x7c11,0x7c11,0x8431,0x8c93,0x8c93,0x8493,0x8493,0x8493,0x84b3,0x8493,0x8472,0x7c31,0x73f0,0x7c31,0x8472,0x7c52,0x7410,0x7c31,0x7c31,0x7c31,0x7c31,0x7bf0,0x7bf0,0x7c31,0x7c11,0x73f1,0x73f1,0x73f1,0x73f0,0x6bcf,0x6b8f,0x6bef,0x7c31,0x73d0,0x73f0,0x73f0,0x73f0,0x7410,0x7411,0x73f0,0x6bd0,0x73f1,0x6b8f,0x636f,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x636e,0x5b6e,0x5b4d,0x636e,0x636e,0x6bcf,0x6bae,0x73ef,0x73f0,0x6b8f,0x6b6e,0x73cf,0x6b6e,0x6baf,0x73ef,0x6baf,0x634e,0x634e,0x636e,0x638e,0x6b8f,0x634e,0x634e,0x5b4e,0x636e,0x5b0d,0x632d,0x5b0d,0x52cb,0x5b0c,0x636e, +0x632d,0x6b6d,0x6b4c,0x6b4c,0x632c,0x630c,0x632c,0x5aec,0x5b0c,0x632c,0x632c,0x7baf,0x8410,0x7bcf,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x634d,0x630d,0x634e,0x6b6e,0x6b8e,0x6bae,0x6b6e,0x6b8e,0x7bf0,0x73ef,0x6bae,0x634d,0x6bae,0x73cf,0x6b6e,0x6b6e,0x6baf,0x6b6d,0x6b8e,0x73cf,0x7c10,0x7bcf,0x73af,0x73cf,0x7c10,0x7bf0,0x73cf,0x6baf,0x6bcf,0x73f0,0x7bf1,0x7bf0,0x7bf0,0x7c10,0x7bf0,0x73ef,0x7bf0,0x73cf,0x73f0,0x7bf1,0x8451,0x8c92,0x8452,0x7c31,0x7c31,0x7c31,0x8452,0x8c92,0x8472,0x7c31,0x8472,0x8492,0x8452,0x8472,0x8472,0x8cb3,0x9d35,0x94d3,0x94f4,0x8cb3,0x8c93,0x8c72,0x94b3,0x94d4,0x94f5,0x94f4,0x94d4,0x94d4,0x94f4,0x9d35,0x9d36,0xa556,0xa577,0xa556,0x9d35,0x9d56,0xa596,0xa597,0xa577,0x9d35,0x9d35,0x9d56,0x9d76,0xa576,0xbdf8,0xd6fb,0xce99,0xc638,0xcebb,0xb5f8,0xadd7,0xadb7,0xbe39,0xc659,0xce9a,0xce9a,0x1082,0x10a2,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2125,0x2144,0x2945,0x2124,0x2124,0x2945,0x2945,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2925,0x2945,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x20e4,0x20e3,0x18c3,0x18c3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18e3,0x2103,0x2103,0x3186,0xad97,0xa576,0xa5b7,0xa597,0xadb7,0xadb7,0xbe79,0xadd7,0x9d35,0x9535,0x9535,0x9535,0x9515,0x9515,0x9d56,0x9d56,0x94f5,0x9d15,0xa577,0x94f4,0x94f4,0x94d4,0x8493,0x7c53,0x8453,0x8452,0x8c93,0x8c93,0x8cb4,0x8cb3,0x8493,0x8472,0x7c52,0x7c52,0x7c52,0x8452,0x8cb3,0x8472,0x8493,0x8cd4,0x8cb3,0x8472,0x7c52,0x7c52,0x7411,0x7c52,0x8472,0x7c32,0x73f1,0x73f1,0x7c11,0x73f0,0x73f0,0x7c11,0x7c11,0x7c31,0x7c11,0x7411,0x73f1,0x73d0,0x6b8f,0x73d0,0x6b8f,0x6baf,0x6bf0,0x6bcf,0x73f0,0x73f0,0x6bf0,0x6bcf,0x7c31,0x7410,0x73f0,0x73f0,0x634e,0x6baf,0x6bd0,0x638f,0x636e,0x636e,0x638e,0x634e,0x636e,0x6b8e,0x6b8e,0x7c10,0x73cf,0x73f0,0x7c10,0x6b8f,0x636e,0x73af,0x634d,0x636e,0x73f0,0x6baf,0x5b4d,0x5b6d,0x5b4d,0x6baf,0x73f0,0x6b8f,0x636e,0x636e,0x636e,0x5b2d,0x634e,0x5b0d,0x52ec,0x52ec,0x52ec, +0x632c,0x634c,0x634c,0x6b6d,0x632c,0x630c,0x630c,0x5aeb,0x630c,0x632c,0x632c,0x738e,0x73af,0x73ae,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x632c,0x630c,0x632d,0x632d,0x6b4d,0x634d,0x6b8e,0x6b6d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x634d,0x6b6d,0x738e,0x738e,0x6b6e,0x6baf,0x6b8e,0x6b8e,0x73cf,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73d0,0x73d0,0x73cf,0x6bae,0x73ef,0x73f0,0x73f0,0x73f0,0x7c10,0x7c30,0x7c10,0x73cf,0x7c10,0x7c10,0x73f0,0x7c11,0x8452,0x94b3,0x94b3,0x8431,0x7c31,0x7c31,0x7c31,0x8472,0x8431,0x8431,0x8c92,0x8472,0x8472,0x8cb3,0x8cb3,0x8cb3,0x94f3,0x8cd3,0x8cd3,0x8cb3,0x8cb3,0x8cb3,0x9cf4,0x9d35,0x9d15,0x8cd4,0x8cd4,0x8cb3,0x94f4,0x9d15,0x9d35,0x9d56,0x9515,0x9d35,0xa555,0x9d35,0xa576,0xa597,0x9d35,0x9515,0x9d15,0xa577,0xa556,0xad97,0xad76,0xc659,0xc679,0xadb6,0xadb7,0xad97,0xadb7,0xb5f8,0xb618,0xadb8,0xad97,0x9d35,0x1082,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2103,0x3186,0xadb7,0xa5b7,0xadf8,0xa597,0xadb7,0xa597,0xb5f8,0xadb7,0x9d56,0xa577,0x9d56,0x9d56,0x9536,0x9d56,0xa577,0x9515,0x94f4,0x9d36,0x9d35,0x9515,0x8cf4,0x8493,0x8493,0x8493,0x8473,0x8472,0x8472,0x8452,0x8c93,0x94d4,0x8cb3,0x8493,0x8473,0x7c32,0x8472,0x7c52,0x8472,0x8472,0x8493,0x9515,0x8473,0x7c31,0x7c52,0x7c31,0x8452,0x8472,0x7c32,0x7c32,0x73f0,0x7c11,0x7c31,0x7c11,0x7bf0,0x8431,0x7c11,0x7c11,0x7c11,0x73f1,0x73f0,0x73f0,0x638f,0x6bd0,0x6bd0,0x6b8f,0x6bd0,0x6bcf,0x6baf,0x6bcf,0x6bef,0x6bef,0x6bef,0x73ef,0x6bcf,0x636e,0x638e,0x6bcf,0x636e,0x632e,0x634e,0x636e,0x636e,0x634e,0x6b8f,0x6b8e,0x6baf,0x7c10,0x73cf,0x6baf,0x73f0,0x6baf,0x6b6e,0x634e,0x634e,0x530c,0x6bcf,0x638e,0x530c,0x5b2c,0x5b4d,0x636e,0x636e,0x634e,0x636e,0x636e,0x5b2d,0x5b2e,0x5b4e,0x52ec,0x52cb,0x52cb,0x4a8a, +0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x630c,0x630c,0x5aeb,0x5aeb,0x630c,0x5aec,0x634d,0x738e,0x738e,0x6b4d,0x6b4d,0x6b6d,0x632d,0x630c,0x630c,0x632c,0x632c,0x632c,0x632c,0x6b4d,0x632d,0x634d,0x634d,0x634d,0x634d,0x6b6d,0x634d,0x632d,0x6b2d,0x6b4d,0x738e,0x6b8e,0x6b8e,0x73cf,0x73af,0x73af,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x73cf,0x73ef,0x7c10,0x7c10,0x73f0,0x7c30,0x7c30,0x73ef,0x73cf,0x73f0,0x73f0,0x73af,0x7bd0,0x8451,0x8452,0x8c92,0x94b3,0x7c10,0x7410,0x7c31,0x7c11,0x7c11,0x8431,0x8452,0x8472,0x8472,0x8472,0x8472,0x8cb3,0x8cf3,0x8cd3,0x94f4,0x8cb3,0x94f4,0x9cf4,0x9d15,0x9d15,0x8cb3,0x8cb3,0x8cd4,0x8493,0x8cd4,0x9515,0x94f4,0x8cd4,0x94d4,0x9d35,0xad96,0xad96,0xa576,0x9d36,0x9515,0x94f5,0x9514,0xadb7,0x9d35,0xa576,0xad76,0xa536,0xa597,0xa597,0xadb7,0xadb7,0xadd8,0xbe39,0xb619,0xadf8,0xadd8,0xad97,0x1082,0x1082,0x18c3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e4,0x2104,0x18e3,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x18e3,0x18e4,0x20e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2124,0x2104,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x20e4,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x20e4,0x20e4,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x3186,0xadd8,0xadd8,0xa597,0xa597,0xadd8,0xadd8,0xb619,0xb5d8,0xa556,0xa597,0x9d35,0x9d56,0xa597,0xa597,0xadb7,0x9515,0x9d36,0x94f5,0x94d4,0x8cf4,0x9515,0x8cb3,0x8cb4,0x8493,0x8492,0x7c31,0xadb7,0xb5b7,0x8452,0x8cd4,0x94f4,0x8cb4,0x8473,0x8452,0x8472,0x8472,0x7c31,0x8472,0x84b3,0x8493,0x8c93,0x7c32,0x7c52,0x7c52,0x8473,0x8472,0x7c52,0x8452,0x7c11,0x7c11,0x7c31,0x7c31,0x7c11,0x8431,0x7c11,0x7c11,0x7c31,0x7c31,0x7411,0x73f0,0x6bf0,0x73f1,0x6bf0,0x6bcf,0x7410,0x6bf0,0x73d0,0x7410,0x6bcf,0x73ef,0x73ef,0x6bcf,0x6baf,0x636e,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x6b6e,0x6b8e,0x636e,0x638e,0x73ef,0x73cf,0x6baf,0x73f0,0x73af,0x6b8e,0x634e,0x634e,0x5b4e,0x636e,0x6bae,0x6b8e,0x5b2d,0x5b4d,0x5b2c,0x5b2d,0x636e,0x634d,0x5b4d,0x530d,0x5b0d,0x5b2d,0x5b2d,0x52ec,0x52ec,0x4aab, +0x6b6d,0x6b4d,0x5aec,0x5aec,0x5aec,0x5aeb,0x630c,0x630c,0x632c,0x634c,0x630c,0x630c,0x738e,0x6b8e,0x6b6d,0x634d,0x5b2c,0x5b2c,0x5b0c,0x630c,0x5b2c,0x632c,0x632c,0x632d,0x6b6d,0x634d,0x634c,0x632c,0x632c,0x632c,0x634d,0x634d,0x634d,0x634d,0x632d,0x6b4d,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x636e,0x6b6e,0x6b8f,0x6b8e,0x73af,0x73af,0x73cf,0x73cf,0x7bf0,0x7bf0,0x73af,0x73af,0x7bf0,0x73cf,0x6bcf,0x73ef,0x73af,0x7bcf,0x8431,0x7bf0,0x7c10,0x73d0,0x8452,0x8452,0x7c51,0x7410,0x7c11,0x7c31,0x8452,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb3,0x8cd3,0x8cd3,0x94f4,0x94f4,0x9d14,0x9d14,0x9514,0x8cb3,0x8493,0x94d4,0x9d15,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x9535,0x9d55,0x9535,0x9515,0x94f5,0x94f5,0x94f4,0x8cf4,0xa556,0x9d35,0xa556,0xadb7,0xad97,0xad97,0xa577,0xa577,0xadb7,0xb5f8,0xadb7,0xadd8,0xb5f9,0xadb8,0xa577,0x1082,0x1082,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2104,0x2104,0x18e4,0x2124,0x2104,0x18e4,0x2104,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x2104,0x18e3,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x20e3,0x18e3,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x18e3,0x2103,0x31a6,0xb5f9,0xadd8,0xadb7,0xa597,0xa596,0xa597,0xb5f9,0xb5d8,0xa556,0xadb7,0xa576,0xa576,0xadd8,0xb5f8,0xa597,0xa577,0x9515,0x8493,0x8cb3,0x8cd4,0x94f4,0x94f4,0x84b3,0x8493,0x8473,0x8472,0x8472,0x8cb4,0x8cb3,0x8cb3,0x94f5,0x94f4,0x8452,0x8452,0x7c32,0x7c31,0x7411,0x7c11,0x8472,0x7c52,0x8493,0x8493,0x7c52,0x8452,0x8493,0x8cb3,0x7c51,0x7c52,0x8431,0x7c11,0x8431,0x8431,0x8452,0x7c11,0x7c11,0x73f0,0x7411,0x7c32,0x7c31,0x7c31,0x7411,0x73f1,0x73f0,0x73f0,0x7431,0x7431,0x73f0,0x7410,0x6baf,0x6baf,0x73cf,0x6bcf,0x6baf,0x638e,0x73f0,0x63af,0x636e,0x6baf,0x73d0,0x6baf,0x6b8f,0x636e,0x6b8f,0x6b6e,0x636e,0x73cf,0x73cf,0x6baf,0x73d0,0x6bcf,0x638e,0x636e,0x5b4d,0x5b6e,0x5b4d,0x638e,0x6b8e,0x7bcf,0x6b8e,0x5aec,0x52ec,0x634d,0x5b4d,0x5b4d,0x530c,0x5b2d,0x6b8e,0x632d,0x5b2c,0x530c,0x52ec, +0x6b4d,0x630c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5b0c,0x632d,0x630c,0x632c,0x632c,0x6b6d,0x73ae,0x634d,0x632c,0x632c,0x634c,0x630c,0x630c,0x630c,0x630c,0x632c,0x632c,0x632d,0x6b6e,0x634d,0x632c,0x632c,0x632c,0x6b4d,0x6b2d,0x630c,0x632d,0x632d,0x632d,0x6b4d,0x634e,0x6b4e,0x634d,0x636e,0x634d,0x6b6e,0x6b8f,0x73af,0x73cf,0x73cf,0x73cf,0x7bef,0x73ef,0x73cf,0x73af,0x73af,0x7bd0,0x7bf0,0x73ef,0x73ef,0x73cf,0x7bf0,0x8451,0x73cf,0x73f0,0x73f0,0x73f0,0x8452,0x8492,0x7c51,0x7c31,0x7c31,0x7c31,0x8452,0x8452,0x7c32,0x8452,0x8c73,0x8cb3,0x8cb3,0x94d4,0x94f4,0x9515,0x9d15,0x9d35,0x9514,0x8cb3,0x8cd4,0xa576,0xa577,0x8cf4,0x94f4,0x94d4,0x9514,0x94f4,0x8cd4,0x9515,0x9515,0x8d15,0x9515,0x94f5,0x9536,0x94f5,0x94f4,0x9d36,0x9d36,0x9d56,0xadd7,0xb5f8,0xa597,0xa576,0xa556,0xb619,0xb5f8,0xadd8,0xadd8,0xadd8,0xadb8,0xad97,0x10a2,0x10a2,0x18e3,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x18e3,0x2104,0x2945,0x2104,0x2104,0x2124,0x2104,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x2104,0x20e4,0x18c3,0x18e4,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x20e4,0x2124,0x2104,0x2124,0x2945,0x2124,0x2124,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x20e4,0x2104,0x20e4,0x2104,0x2104,0x2104,0x20e4,0x2104,0x2104,0x20e3,0x20e3,0x18c3,0x20e4,0x2124,0x2104,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x2103,0x31a6,0xbe3a,0xb619,0xb5f9,0xa577,0x9d35,0x9d56,0xa576,0xadd8,0xadd8,0xadb7,0xadb8,0xadd8,0xadd8,0xadb7,0xa577,0xa597,0x8cd4,0x8493,0x8cb3,0x8cb4,0x94d4,0x94d4,0x8cb3,0x8493,0x7c72,0x8452,0x7c11,0x7c32,0x8472,0x8cb3,0x94f4,0x9514,0x8cd4,0x8493,0x8473,0x7c11,0x7410,0x7c31,0x7c31,0x7c31,0x8472,0x8472,0x8472,0x8493,0x8492,0x8cb3,0x8452,0x7c11,0x7c11,0x7c31,0x8451,0x7410,0x8472,0x8472,0x73f0,0x7410,0x6bd0,0x7c31,0x7c31,0x7c31,0x7c11,0x73f0,0x73d0,0x7410,0x7c31,0x7411,0x7c11,0x73f1,0x6b8f,0x6baf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x73f0,0x6baf,0x638e,0x638f,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8e,0x634e,0x636f,0x6bcf,0x6bcf,0x6baf,0x73d0,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530d,0x6b8e,0x6b6e,0x73af,0x7bf0,0x632d,0x5b2c,0x5b0c,0x530c,0x5b2d,0x5b4d,0x634d,0x6b8e,0x6b8e,0x5b2d,0x52ec,0x52cc, +0x634c,0x5aeb,0x5b0b,0x5b0b,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x630c,0x6b4d,0x6b6e,0x6b6e,0x630c,0x630c,0x632c,0x5b2c,0x630c,0x630c,0x632c,0x632d,0x630c,0x5b0c,0x632d,0x636d,0x5b2c,0x630c,0x634c,0x632c,0x632d,0x632d,0x5b0c,0x632d,0x6b4d,0x632d,0x6b4e,0x634e,0x6b6e,0x6b8e,0x6b6e,0x6b6e,0x73cf,0x73cf,0x7bcf,0x73f0,0x73ef,0x7c30,0x7c31,0x73f0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x7bf0,0x73f0,0x73cf,0x6baf,0x73cf,0x73cf,0x73ef,0x73ef,0x73cf,0x73f0,0x7410,0x7c30,0x8451,0x8452,0x8452,0x7c51,0x8451,0x8472,0x8472,0x8c73,0x8c93,0x94d4,0x8cd3,0x94f4,0x94f4,0x9d15,0x9d15,0x9d15,0x9d15,0x8cd4,0x9d35,0xad97,0x9515,0x8cd3,0x94d4,0x8cd4,0x8cd4,0x8cd4,0x94f4,0x9515,0x9515,0x9515,0x9535,0x94f4,0x9515,0x9515,0x9515,0x9d35,0x9d15,0x9d56,0xa576,0xadb7,0xadb7,0x9d56,0xadd8,0xb619,0xadd8,0xb619,0xb619,0xb619,0xbe19,0xb5d8,0x18c3,0x2124,0x31a6,0x2104,0x18e3,0x2104,0x2104,0x2104,0x2945,0x2945,0x2124,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2925,0x2945,0x2124,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2965,0x2104,0x2104,0x2125,0x2124,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x2104,0x18e3,0x18e3,0x18e3,0x2104,0x2124,0x2124,0x2125,0x2945,0x2945,0x2965,0x2945,0x3186,0x3165,0x2965,0x2945,0x2945,0x2124,0x2945,0x2945,0x2125,0x2945,0x2945,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e3,0x20e4,0x3166,0x2104,0x2104,0x31a6,0xb619,0xb5f9,0xbe3a,0xadd8,0x9d36,0x9d76,0xa576,0xb5f8,0xb5f8,0xa597,0xadd8,0xadd8,0xadf8,0xa597,0xa577,0x94d4,0x94f4,0x8cb4,0x8cb4,0x8cb4,0x94f4,0x8cb3,0x8cd4,0x8cd4,0x8473,0x8472,0x7c32,0x7c52,0x8473,0x8493,0x8cd4,0x8cd4,0x8493,0x84b3,0x7c31,0x7c31,0x7c11,0x7411,0x7411,0x7c11,0x7c11,0x8472,0x9d15,0x7c52,0x8472,0x8c93,0x8452,0x7411,0x7c11,0x7c31,0x7c31,0x7c31,0x7c31,0x8472,0x7410,0x73f0,0x73f0,0x7c11,0x73f0,0x73f0,0x7c11,0x73f0,0x6bd0,0x6bd0,0x7411,0x7411,0x7c11,0x73f0,0x73af,0x73f0,0x7c11,0x73cf,0x6b8f,0x73af,0x73f0,0x6baf,0x636e,0x6b8f,0x636e,0x6b8f,0x6b8f,0x636e,0x6bcf,0x6baf,0x638e,0x6baf,0x638e,0x638e,0x6baf,0x6baf,0x636e,0x636e,0x636e,0x530d,0x530c,0x636e,0x73cf,0x6b8e,0x73d0,0x636e,0x5b2d,0x5b2d,0x5aeb,0x52eb,0x5b0c,0x634d,0x636e,0x6b6e,0x634e,0x5aec,0x52ab, +0x632c,0x52cb,0x52cb,0x5acb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5aec,0x632d,0x6b6e,0x630c,0x5aec,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632d,0x632d,0x630c,0x5b0c,0x634d,0x636d,0x634d,0x632c,0x632c,0x5b2c,0x5b2c,0x5b2d,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b8e,0x6b8e,0x6b8f,0x6b8e,0x6baf,0x73cf,0x73cf,0x73cf,0x73cf,0x73f0,0x7c30,0x7c31,0x7411,0x7c11,0x7c11,0x7c11,0x7c11,0x73f0,0x73d0,0x73d0,0x73cf,0x6baf,0x73cf,0x73ef,0x73cf,0x73ef,0x73ef,0x73f0,0x7410,0x7c10,0x8431,0x8452,0x8cd3,0x8471,0x8451,0x8c93,0x8c73,0x8452,0x8c93,0x9514,0x9514,0x94f4,0xa555,0x9d35,0x9d15,0x9d15,0x9d15,0xa576,0x9d15,0x8cd4,0x8cd4,0x94f4,0x9515,0x94d4,0x8cb4,0x8cd4,0x94d4,0x9d15,0x9d35,0x9514,0x8cf4,0x9515,0x9d35,0x9d56,0x9d56,0x9d56,0xa556,0xad97,0xadd8,0xa597,0xa576,0xa597,0xa597,0xadb7,0xadd8,0xb5f8,0xb619,0xbe5a,0xb5d8,0x4a6a,0x632d,0x738d,0x52aa,0x52aa,0x52aa,0x528a,0x528a,0x52cb,0x52ab,0x52ab,0x52ab,0x52cb,0x5acb,0x52aa,0x528a,0x526a,0x4a69,0x5269,0x5269,0x526a,0x528a,0x526a,0x528a,0x528a,0x5aaa,0x5aaa,0x528a,0x528a,0x528a,0x528a,0x5aab,0x5269,0x4a69,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a29,0x4a49,0x4a49,0x4a49,0x4a69,0x4a69,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a49,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x528a,0x526a,0x528a,0x528a,0x5acb,0x528a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4249,0x4249,0x4229,0x4229,0x4229,0x4229,0x4229,0x4208,0x4229,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x39e8,0x39e8,0x39e7,0x4208,0x4249,0x634d,0x6baf,0xb619,0xb619,0xb63a,0xadd8,0xa597,0xa5b7,0xa597,0xb5f8,0xadd8,0x9d36,0xa577,0xa5b7,0xa597,0xa5b7,0x9d56,0x8cb4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x94f4,0x84d4,0x84d3,0x9515,0x8cb4,0x8c93,0x8493,0x8472,0x8493,0x8cb4,0x8cb4,0x8cb4,0x8493,0x84b3,0x7c52,0x73f0,0x73f0,0x73f0,0x7c11,0x73d0,0x73f0,0x94b3,0x8c72,0x7c11,0x8493,0x8cb4,0x8452,0x7c31,0x7c52,0x7c52,0x8452,0x7c32,0x7411,0x7c11,0x7c11,0x7bf0,0x7c31,0x7c31,0x7411,0x6bd0,0x73f0,0x73f0,0x73d0,0x6bb0,0x6bd0,0x7c31,0x7c11,0x73ef,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x73d0,0x6b8f,0x6b8f,0x73af,0x634e,0x5b4d,0x636e,0x636d,0x6bcf,0x73ef,0x638e,0x638e,0x638e,0x638e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x634e,0x5b2d,0x636d,0x6b8e,0x6bae,0x636e,0x636e,0x5b0c,0x5b2c,0x5aeb,0x5acb,0x52cb,0x5b0c,0x636e,0x52ec,0x5aec,0x5b0c,0x52cb, +0x630c,0x5aeb,0x5acb,0x5acb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5aec,0x5aec,0x632d,0x630c,0x62eb,0x630c,0x630c,0x632c,0x5b0c,0x52eb,0x5b0c,0x630c,0x634c,0x634c,0x632c,0x632d,0x634d,0x634d,0x634d,0x632c,0x5b2c,0x632c,0x634d,0x6b4d,0x6b4d,0x6b4d,0x636d,0x6b8e,0x73af,0x6b8f,0x6b8e,0x6baf,0x6baf,0x6baf,0x73af,0x7bd0,0x73d0,0x73f0,0x73d0,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x7c11,0x73f0,0x7410,0x73f0,0x6bcf,0x6baf,0x73cf,0x73cf,0x73cf,0x7bf0,0x73cf,0x73f0,0x73f0,0x7c11,0x8432,0x8452,0x94f4,0x8c93,0x8c93,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x9515,0xa576,0xa596,0x9d35,0x9d15,0x9d56,0xa576,0x9515,0x8cd4,0x8cb3,0x8cb4,0x9515,0x9515,0x94d4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x8cf4,0x9515,0x9d56,0x9d35,0x9d35,0x9d76,0x9d55,0xa577,0xadb8,0xadb8,0xa597,0xa576,0xa577,0xa597,0xadb7,0xb5d8,0xadb7,0xb5f8,0xbe3a,0xbe39,0x52ab,0x8412,0x844f,0x4a89,0x4a49,0x4229,0x4208,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e7,0x41e7,0x41e7,0x39c7,0x41c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41c7,0x41c7,0x39c7,0x39a7,0x39a7,0x39a6,0x39a7,0x3186,0x3166,0x2966,0x2945,0x2945,0x2945,0x2965,0x2965,0x2925,0x2945,0x2945,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x3166,0x2966,0x3165,0x3166,0x31a6,0x3166,0x3186,0x3186,0x3186,0x3186,0x39a7,0x39c7,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e7,0x41e8,0x41e7,0x41e7,0x39c7,0x41e7,0x41e7,0x39c7,0x39c7,0x41e8,0x4208,0x41e7,0x4228,0x4207,0x4a28,0x4a28,0x4208,0x41e7,0x39c7,0x39c7,0x41e7,0x52aa,0x9d36,0x9d56,0xa5b8,0xb5f9,0xadb8,0xa577,0xadb8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d56,0x9d77,0xa577,0x9d56,0x9d36,0x94f4,0x9515,0x9535,0x8cb3,0x8cd4,0x9515,0x8cf4,0x8cb3,0x8cb3,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x8493,0x94f4,0x8cd4,0x8c93,0x8493,0x7c52,0x8472,0x8cd4,0x7c31,0x7410,0x7c31,0x7410,0x7411,0x7c31,0x7c31,0x7c32,0x8472,0x8493,0x8472,0x8492,0x8492,0x8452,0x8472,0x7c72,0x7c31,0x7410,0x7c31,0x73f0,0x7410,0x7c31,0x7c31,0x73f0,0x7c31,0x73f0,0x6bd0,0x6bcf,0x7410,0x7c52,0x7411,0x7410,0x73f0,0x73cf,0x73ef,0x7c30,0x7c31,0x73f0,0x6bcf,0x6b8e,0x636e,0x6baf,0x6b8e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x638e,0x6b8e,0x6b8e,0x636e,0x636e,0x636e,0x634d,0x636d,0x634d,0x6b8e,0x6b8e,0x6b6e,0x5b2d,0x5b2c,0x52eb,0x5aeb,0x5aec,0x52ec,0x5b4d,0x530c,0x5b0c,0x5b2c,0x52eb, +0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5acb,0x52aa,0x52cb,0x5aeb,0x5aec,0x630c,0x630c,0x630c,0x5aec,0x630c,0x630c,0x630c,0x5b0c,0x5aec,0x632c,0x634d,0x634d,0x632c,0x632c,0x5b0c,0x632d,0x632d,0x636d,0x634d,0x634d,0x634d,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x738f,0x738e,0x73af,0x73af,0x73cf,0x73d0,0x73d0,0x8431,0x8c52,0x7c11,0x7c11,0x8452,0x8452,0x8451,0x8451,0x8451,0x8451,0x8451,0x7c31,0x7c10,0x73d0,0x73f0,0x7c10,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c11,0x7c32,0x8c73,0x94d4,0x8472,0x8cd4,0x8cb3,0x8452,0x8493,0x8cb4,0x94d4,0x9d35,0xa576,0x9d56,0x9d35,0x9514,0x9d55,0x9d56,0x8cd3,0x8cd4,0x8cb3,0x9515,0x94f4,0x8cd4,0x8cb4,0x8cb3,0x94f4,0x94f5,0x8cd4,0x94f5,0x9515,0x94f5,0x8cd4,0x94f4,0x9d35,0x9d35,0x9d76,0xa576,0xa577,0xa597,0xa576,0xa576,0xad97,0xa597,0xadb7,0xadb7,0xb5d8,0xbe3a,0xc65a,0xc69b,0x630d,0x9cd5,0x94b1,0x52ab,0x4a4a,0x4229,0x4229,0x4209,0x4208,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x4208,0x526a,0x528a,0x526a,0x4a49,0x526a,0x4a69,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x39e7,0x39a7,0x39e8,0x3186,0x3186,0x31a6,0x39a7,0x31a6,0x39c7,0x39a6,0x2945,0x2965,0x3186,0x31a6,0x39c7,0x39c7,0x31a6,0x39c7,0x4208,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x41e8,0x4a29,0x4a29,0x4a4a,0x524a,0x526a,0x528a,0x528a,0x5aab,0x5aab,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5a8b,0x5a8a,0x528a,0x528a,0x526a,0x528a,0x5a8a,0x5aab,0x5acb,0x62eb,0x62eb,0x62eb,0x6b0c,0x630b,0x62eb,0x5aab,0x62cb,0x6b2c,0x736e,0xa577,0xa598,0xa5b8,0xadd8,0xadb8,0x9d36,0xa577,0xadf8,0xadb8,0xadf8,0xa576,0xa597,0xa5b7,0xadb7,0xa577,0x9d35,0x8cd4,0x9515,0x9515,0x8493,0x84b3,0x8cf4,0x8493,0x8cb3,0x8cd4,0x8cb3,0x8c93,0x8cd4,0x8473,0x7c32,0x7c52,0x8cb3,0x8493,0x8452,0x7c32,0x8472,0x7c72,0x8493,0x7c31,0x7c31,0x7c31,0x7410,0x73f0,0x7431,0x7c72,0x8472,0x8492,0x8472,0x7c72,0x8472,0x8493,0x8452,0x7c11,0x7c31,0x8432,0x7c11,0x7c31,0x7c11,0x7c11,0x7c51,0x8471,0x73f0,0x73f0,0x7410,0x73f0,0x73f0,0x73f0,0x7411,0x7411,0x7411,0x7410,0x73ef,0x73ef,0x7c30,0x7410,0x73d0,0x6bcf,0x6b8f,0x6baf,0x6baf,0x638e,0x6bae,0x6b8e,0x636e,0x636e,0x636e,0x636e,0x6b6e,0x636e,0x6b8f,0x6baf,0x6b6e,0x636e,0x636e,0x6baf,0x6baf,0x636e,0x634d,0x6b8e,0x6b6e,0x73af,0x6b8e,0x5b0c,0x5b0c,0x5b2c,0x52ec,0x52eb,0x5b0c,0x636e,0x5b4d,0x530c,0x52eb,0x52cb, +0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aaa,0x5aeb,0x630c,0x5b0c,0x5b0c,0x6b6d,0x6b4d,0x630c,0x630c,0x632c,0x630c,0x5b0c,0x5b0c,0x632c,0x634d,0x632c,0x632c,0x630c,0x632c,0x632d,0x634d,0x634d,0x632d,0x632d,0x634d,0x636d,0x6b8e,0x6b8e,0x8411,0x94b3,0x94b2,0x9492,0x8430,0x73ef,0x73cf,0x73cf,0x73af,0x7bef,0x9492,0x94b3,0x9cf3,0x9492,0x9cf4,0x9cf4,0x9d14,0xa514,0x9cf4,0x94b2,0x94d3,0x94d3,0x7c30,0x7c10,0x8c72,0x9cf4,0xa535,0xa555,0x9cf4,0x94d3,0x9cf4,0x94b3,0x7c31,0x8452,0x94d4,0x8472,0x8c73,0x8cb3,0x8472,0x8472,0x8cb4,0x94d4,0x9d15,0xa576,0x9d56,0x9515,0x9d35,0x9d35,0x9d35,0x94f4,0x8cd4,0x8cd4,0x94f4,0x9d15,0x8cd4,0x8493,0x8cb4,0x8cf4,0x94f4,0x9515,0x94f5,0x8cf4,0x94f4,0x94f4,0x8cb3,0x94f4,0x9515,0x9515,0xa556,0x9d56,0xa597,0xa597,0xa577,0xadb8,0xb5d8,0xa597,0xa577,0xadb8,0xb5f9,0xbe19,0xbe5a,0xbe5a,0x630e,0x9cf6,0x8c70,0x528a,0x4a49,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x630d,0x7baf,0x6b2d,0x5acb,0x738e,0x6b4c,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a29,0x52aa,0x4a69,0x4a6a,0x5acb,0x41e8,0x39c7,0x4229,0x528a,0x4a69,0x4229,0x52aa,0x3165,0x39c7,0x4a49,0x4208,0x4a49,0x526a,0x39c7,0x5acb,0x5acb,0x4a29,0x39c7,0x39c7,0x39e8,0x39e8,0x4208,0x4a4a,0x62ec,0x5aab,0x5aab,0x6b2d,0x5aab,0x62ec,0x62ec,0x62ec,0x6b2d,0x62cb,0x5a8a,0x5aab,0x62ec,0x62cc,0x62ec,0x6b2d,0x62ec,0x5aab,0x5aab,0x6b2d,0x632c,0x62ec,0x62ec,0x736e,0x6b0c,0x62cb,0x62eb,0x630c,0x738d,0x6b4d,0x734d,0x7bce,0x8410,0xa597,0xa597,0xa597,0xa597,0xadd8,0xa597,0xa576,0xadb7,0xadd8,0xa596,0x9d36,0xa597,0xa597,0x9d55,0x9d35,0x9d35,0x94f4,0x94f4,0x9515,0x8493,0x8493,0x94f4,0x8493,0x7c72,0x84b3,0x8cd4,0x94d4,0x8cd4,0x8cd4,0x8493,0x8493,0x8cd4,0x7c52,0x7c52,0x8452,0x7c52,0x7431,0x84b3,0x7c51,0x7c11,0x7c31,0x7c31,0x7c11,0x7c31,0x8472,0x8492,0x7c52,0x8cb3,0x8472,0x8493,0x8cb3,0x8472,0x7c31,0x7c31,0x7c11,0x7c11,0x7410,0x7c31,0x7c31,0x7c51,0x8472,0x73f0,0x6bf0,0x73f0,0x7411,0x73f0,0x73f0,0x7411,0x73f0,0x73d0,0x7410,0x7410,0x7410,0x7c11,0x73d0,0x73d0,0x73cf,0x6bcf,0x6baf,0x636e,0x636e,0x6b8e,0x6baf,0x6b8f,0x6b8e,0x636e,0x6b8e,0x6baf,0x73d0,0x636e,0x6b6e,0x636e,0x634d,0x636d,0x638e,0x6b8e,0x73cf,0x6b8e,0x73cf,0x6b8e,0x634d,0x634d,0x5aec,0x52cc,0x632d,0x5aec,0x5acb,0x632d,0x6b8e,0x52ec,0x52eb,0x5aec,0x52cb, +0x632c,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632d,0x6b4d,0x632c,0x738e,0x73ae,0x6b6d,0x630c,0x5aec,0x630c,0x630c,0x5aec,0x5aec,0x630c,0x632d,0x632d,0x634d,0x632c,0x632c,0x636d,0x634d,0x632c,0x632d,0x634d,0x632d,0x6b6e,0x738e,0x7bcf,0x9cb3,0xa4f3,0xa4f3,0x9cd3,0x9d14,0x8471,0x73ef,0x7bf0,0x7bd0,0x9472,0x8c71,0x94d3,0xad75,0x94b2,0x9492,0x9cd3,0xa4f3,0x9492,0xa514,0x9cd3,0x9472,0xadb6,0x9d55,0x8471,0x8c72,0x9cd3,0x9cd3,0xa535,0xb5d7,0x94d3,0xa575,0xadb6,0x8451,0x8c92,0x94f4,0x8431,0x8cb3,0x8cb3,0x8cb3,0x8473,0x8493,0x9d35,0x9d56,0x9d56,0x9d35,0x9d15,0x94d4,0x9515,0x9d56,0x94f4,0x94f4,0x9d15,0x9d56,0xa556,0x94f4,0x8cb3,0x94d4,0x8cf4,0x8cd4,0x9d15,0x9d15,0x8cb4,0x8cd4,0x8cb4,0x8cb3,0x9d14,0x94f4,0x94f4,0xa576,0xad97,0xad97,0xa576,0xadb7,0xad97,0xa577,0xa577,0xad97,0xad98,0xadd9,0xb5f9,0xb5f9,0xb5f9,0x630e,0xa516,0x844f,0x528a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x7390,0x8c72,0x736e,0x62ed,0x8c51,0x7bce,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x5acb,0x526a,0x4a29,0x630c,0x528a,0x5acb,0x4a4a,0x528b,0x52ac,0x5acb,0x39c7,0x632d,0x39a7,0x526b,0x62ec,0x5acb,0x62ec,0x5acb,0x5aab,0x738e,0x632d,0x4a49,0x39a7,0x39a7,0x39a7,0x39c8,0x4208,0x52ab,0x73af,0x6b2d,0x62ec,0x6b4e,0x5acc,0x7baf,0x738e,0x5aab,0x73af,0x736d,0x5acb,0x738f,0x736e,0x5aab,0x5aab,0x6b2d,0x738e,0x5aab,0x62ec,0x83d0,0x736e,0x5aab,0x5aab,0x738f,0x7bae,0x5aab,0x5a8b,0x5aab,0x630c,0x6b0c,0x6b0c,0x734d,0x83ef,0xadb8,0xadb7,0xa576,0x9d56,0xa597,0xb5f8,0xa536,0xad97,0xb5d8,0xadb7,0xa577,0xa597,0x9d56,0xa576,0x9d35,0x8cb3,0x9d15,0x94f4,0x9d35,0x9d15,0x8cf4,0x9515,0x8cd4,0x8473,0x8472,0x8cb3,0x94d3,0x8cb3,0x9514,0x9514,0x94f4,0x9515,0x8472,0x7c31,0x7c52,0x7c72,0x7431,0xa576,0x94f4,0x73d0,0x7411,0x7c31,0x7c11,0x7c31,0x94d3,0x94d4,0x8492,0x8452,0x8473,0x8493,0x8472,0x8472,0x8472,0x7c51,0x7c11,0x7c11,0x7411,0x7c31,0x7c11,0x73d0,0x7c11,0x73f0,0x6bf0,0x7410,0x7c51,0x7410,0x73cf,0x7c10,0x73f0,0x73d0,0x7410,0x73f0,0x73f0,0x7c31,0x73f0,0x6baf,0x73af,0x73af,0x6baf,0x6b8f,0x73d0,0x73f0,0x6b8f,0x73d0,0x6baf,0x63ae,0x6baf,0x73cf,0x73cf,0x634e,0x6b8e,0x636d,0x6b8e,0x638e,0x636d,0x636e,0x638e,0x6baf,0x73f0,0x636e,0x5b2d,0x5b2d,0x530c,0x5b0c,0x634e,0x5b2d,0x5aec,0x5b0c,0x636d,0x5aec,0x52cb,0x52cb,0x52cb, +0x630c,0x630c,0x5aeb,0x630c,0x5aec,0x5b0c,0x6b6d,0x6b6e,0x6b6e,0x73ae,0x738e,0x634d,0x5b0b,0x5b0c,0x632c,0x632c,0x632c,0x630c,0x632c,0x6b4d,0x6b4d,0x632d,0x632c,0x634d,0x636e,0x6b8e,0x636d,0x634c,0x6b6d,0x6b8e,0x6b8e,0x7bf0,0x8c51,0x9451,0x8c30,0x9c92,0x8c31,0xb5b6,0x9d54,0x7c31,0x8410,0x8410,0xa514,0x9491,0x94b1,0xa513,0xa513,0x9471,0x9492,0xb5b6,0xa534,0x9cf3,0x9471,0x9471,0xa514,0xbe18,0x8cb3,0x8c71,0xa534,0x94d2,0x8c71,0xad34,0x8c71,0xa534,0xb5d7,0x8452,0x9d35,0x8c93,0x8451,0x8472,0x8493,0x8492,0x8452,0x8cb3,0x9d15,0x9d55,0x9d35,0x9d15,0x94f4,0x8cb3,0x94f4,0x8cd4,0x8cb3,0x94d4,0x9cf5,0x9d36,0xa576,0x94f4,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x8cd4,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x9515,0x94f4,0x94f5,0xad97,0xb5d8,0xadd8,0xadd7,0xa5b7,0x9d36,0x9d36,0xa597,0xadd8,0xadd8,0xb619,0xbe3a,0xbe59,0xb5f8,0x632e,0xa516,0x842f,0x4a8a,0x4229,0x39e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x738f,0x8c31,0x6b4d,0x630d,0x8c92,0x73ce,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x41e8,0x630c,0x5acc,0x62cc,0x632d,0x39e8,0x6b6e,0x5aac,0x526a,0x528b,0x5aab,0x526a,0x62ed,0x4a49,0x5acc,0x6b2d,0x632d,0x62ec,0x5acc,0x6b4e,0x738f,0x630d,0x4a49,0x3186,0x3186,0x3186,0x3187,0x39c7,0x630c,0x73af,0x6b6e,0x630c,0x630d,0x5aab,0x6b4e,0x630c,0x526a,0x7bf0,0x7bcf,0x630d,0x9472,0x732d,0x5249,0x524a,0x528a,0x738e,0x6b0c,0x738e,0x9452,0x62cc,0x5a6a,0x526a,0x5acc,0x7bcf,0x6b0c,0x5a8b,0x5a6a,0x526a,0x62cb,0x62cb,0x62eb,0x736e,0xa577,0xadd8,0xadd8,0xa577,0x9d56,0xadd8,0xad97,0x9d56,0xadd7,0xb5d8,0xb5f8,0xa577,0x94f5,0xa576,0xa577,0x94d4,0x9d56,0x9d15,0x94d4,0x94f4,0x94f5,0x9515,0x8cd4,0x8cf4,0x8cb3,0x94d4,0x94d4,0x8cb3,0x8cd3,0x9d14,0x9d35,0x94d4,0x8cb3,0x8493,0x7c52,0x7c72,0x73f0,0x9d36,0xa556,0x7c11,0x7411,0x7410,0x73f0,0x7411,0x8cd3,0x9d35,0x9514,0x8c93,0x8cb4,0x8c93,0x8492,0x8492,0x7c52,0x8452,0x7c11,0x73f1,0x73d0,0x73f0,0x7c11,0x73f0,0x73f0,0x73f0,0x6baf,0x6baf,0x6bcf,0x73ef,0x73cf,0x73f0,0x7410,0x73d0,0x73d0,0x73cf,0x73f0,0x73f0,0x73d0,0x73af,0x73d0,0x6baf,0x6bb0,0x73f0,0x73d0,0x6baf,0x6b8f,0x6baf,0x6bcf,0x6bcf,0x6baf,0x73cf,0x6bcf,0x73f0,0x6b8e,0x634e,0x6bae,0x638e,0x5b2c,0x634d,0x636d,0x6bae,0x6bcf,0x638e,0x638e,0x5b2d,0x5b0c,0x5b0d,0x634d,0x5b2c,0x636d,0x634d,0x5b0c,0x5b0c,0x52ec,0x52cb,0x52ab, +0x5aeb,0x62ec,0x630c,0x62eb,0x630c,0x632c,0x6b8e,0x6b8e,0x6b6d,0x738e,0x6b8e,0x634d,0x632c,0x634c,0x634d,0x632c,0x630c,0x632c,0x632c,0x632c,0x634d,0x632c,0x632c,0x634d,0x634d,0x6b6e,0x6b6d,0x6b6d,0x6b6d,0x738e,0x73cf,0x8c52,0x9472,0x9471,0x9471,0x9cb2,0x9451,0xbdf8,0xadb6,0x8471,0x8431,0x94b3,0x9cd2,0x9450,0x9491,0x9cb2,0xb5b6,0x9d14,0x9472,0xb5b6,0xbe17,0x8471,0x8c71,0x9491,0x9492,0xbe18,0x9d14,0x8430,0xc618,0xad95,0x8c51,0xa4f4,0x9492,0xa534,0xadb6,0x7c31,0x9d15,0x8473,0x8472,0x8452,0x8472,0x8472,0x8452,0x94f4,0x9514,0x9d35,0x9d15,0x94f4,0x94d3,0x8cb2,0x9d34,0x8cf3,0x8493,0x8cb3,0x94b4,0x94d4,0x94f5,0x94f5,0x8cd4,0x8cb4,0x94f5,0x8cd4,0x8c93,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x8cd4,0x94f4,0x94f4,0x9515,0xad97,0xadb7,0xadd7,0xadd7,0xa597,0xa577,0xa577,0xa556,0xadb7,0xb639,0xc6bb,0xbe59,0xb618,0xbe19,0x6b2e,0xa536,0x840f,0x4a6a,0x4229,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x41e8,0x738f,0x8411,0x6b4d,0x630e,0x94b3,0x7bcf,0x41e7,0x41e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x4a49,0x5aec,0x6b6f,0x7bd0,0x5aec,0x4229,0x6b6e,0x5aec,0x4a6a,0x5acb,0x528b,0x8411,0x5acc,0x5aab,0x630d,0x62ec,0x4a6a,0x4a4a,0x630d,0x5aac,0x6b6e,0x62ec,0x4a49,0x3186,0x3186,0x3186,0x3166,0x3186,0x5aab,0x6b2d,0x630c,0x5acc,0x738e,0x62cb,0x524a,0x524a,0x5acb,0x8c52,0x83af,0x6b4d,0x9451,0x5a6a,0x4a29,0x4a09,0x4a09,0x6b6e,0x738e,0x73cf,0x8411,0x5a6a,0x524a,0x4a4a,0x4a6a,0x6b6e,0x6b4d,0x5a8a,0x5a8a,0x5a8a,0x5aab,0x62ab,0x62cb,0x6b2d,0x9d56,0xa5b8,0xa5b8,0x9d77,0x9d56,0xadb7,0xadb7,0x9d77,0xadd8,0xb5f8,0xa597,0x9d56,0x9d56,0xadb8,0xad97,0x9515,0xa576,0xa596,0x9d76,0x8cb3,0x8cd4,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x94d4,0x94d4,0x8472,0x8cb3,0x9d35,0x94f4,0x8cb3,0x8473,0x7c52,0x8452,0x7c11,0x94f5,0x8c93,0x7c52,0x7c31,0x7c52,0x7431,0x7431,0x7c72,0x8cd3,0x8cd3,0x8492,0x8472,0x8493,0x8473,0x8472,0x8472,0x7c11,0x73d0,0x7bf1,0x7bf1,0x73f0,0x7bf0,0x7c11,0x7bf0,0x73f0,0x73f0,0x6bcf,0x6baf,0x73cf,0x7410,0x7c31,0x7bf0,0x73d0,0x73f0,0x73d0,0x73d0,0x73d0,0x7bf0,0x73af,0x6b8f,0x6baf,0x73b0,0x73d0,0x6baf,0x638e,0x636e,0x6b8f,0x73cf,0x73cf,0x73cf,0x6baf,0x6b8e,0x6b8e,0x6baf,0x6b8e,0x636e,0x636e,0x5b4d,0x634d,0x636d,0x73ef,0x6bcf,0x6baf,0x634e,0x5b2d,0x5b0d,0x632d,0x632d,0x5b2d,0x5b2c,0x636d,0x6b8e,0x5b0c,0x52ec,0x5aeb,0x52eb, +0x5aeb,0x62ec,0x5aeb,0x62eb,0x632c,0x6b6d,0x738e,0x6b4d,0x73ae,0x73ce,0x636d,0x632c,0x634c,0x634c,0x5b0c,0x5b0c,0x630c,0x632c,0x630c,0x632c,0x632d,0x632d,0x632d,0x632d,0x632d,0x634d,0x632d,0x634d,0x634d,0x6b6e,0x7bd0,0x8c51,0x8c51,0x8c30,0x8c10,0x9cd2,0x9451,0xb5b6,0xb5f7,0x8cb2,0x8472,0x9cd3,0x9471,0x9cb1,0xa4f3,0x8c30,0xb5b6,0xa575,0x7bd0,0xa515,0xbe18,0x73ef,0x94b2,0xad34,0x8c30,0xbdf7,0xa575,0x8430,0xa554,0x94b2,0x9491,0xb576,0x9492,0xa554,0xb5d7,0x7c52,0x8cb3,0x8452,0x8452,0x8452,0x7c32,0x8452,0x8cb4,0x9d35,0x94f4,0x8c93,0x8c93,0x8cb3,0x8cb3,0x94f4,0x9535,0x8cd3,0x7c52,0x8c92,0x94b3,0x94d4,0x94f4,0x94d4,0x94f4,0x8cb4,0x84b3,0x8493,0x8493,0x8cb4,0x8cb4,0x94d4,0x94f4,0x94f4,0x94f4,0x94f5,0xa576,0xadd8,0xad97,0xa556,0xa556,0xa556,0xa577,0xa556,0xa556,0xc67a,0xb5f8,0xadd8,0xa577,0xa597,0xb5d9,0x632e,0xa537,0x840f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4a29,0x738f,0x8411,0x6b4d,0x630d,0x8c72,0x7bcf,0x4228,0x41e7,0x39c7,0x41c7,0x39c7,0x41c7,0x41c7,0x39c7,0x5aab,0x526a,0x52ac,0x5aec,0x4a6a,0x52ab,0x6b2d,0x5acc,0x52ab,0x5acb,0x4209,0x632d,0x4229,0x62ec,0x632d,0x5aab,0x528a,0x4a4a,0x630c,0x41e9,0x6b2d,0x5aec,0x4a49,0x3986,0x3986,0x3186,0x3186,0x3186,0x4a6a,0x5aab,0x4a49,0x4a4a,0x7bcf,0x6b0d,0x4a28,0x5aab,0x7baf,0x7bb0,0x62ab,0x632d,0x8410,0x5249,0x4a08,0x4a08,0x4a29,0x7baf,0x738e,0x6b4e,0x7baf,0x5a4a,0x524a,0x524a,0x528b,0x7bd0,0x736e,0x5a8b,0x5a8a,0x5aab,0x5acb,0x5a8a,0x628b,0x6b4e,0xa598,0xa5b8,0xa5b8,0xa5b8,0x9d77,0xadb8,0xadb8,0xadb8,0xadd8,0xb5f8,0xa576,0x9d35,0xa556,0xadb7,0xad97,0x9d56,0x9d55,0xadf8,0x9d76,0x8cd4,0x94f5,0x8cd4,0x8cb3,0x8cb3,0x8cd4,0x8cd4,0x8cb4,0x94d4,0x84b3,0x7c72,0x9515,0x8cd4,0x8c93,0x8cb3,0x8473,0x7c31,0x7c52,0x9d15,0x8452,0x7431,0x7411,0x7411,0x7c32,0x7c31,0x7c31,0x94b3,0x8c93,0x8472,0x7c51,0x7c31,0x8452,0x8473,0x8472,0x7411,0x7411,0x73f1,0x7c31,0x7c31,0x7c31,0x7c10,0x7c10,0x7bf0,0x73d0,0x6baf,0x6baf,0x73f0,0x7c31,0x7c31,0x7c10,0x73f0,0x7c11,0x73f0,0x73d0,0x73f0,0x7c11,0x8452,0x73d0,0x6b8f,0x6baf,0x73d0,0x6baf,0x6b8f,0x6baf,0x73cf,0x73d0,0x7c10,0x73ef,0x73f0,0x6baf,0x6b8f,0x6bae,0x6bae,0x6b6e,0x6b8e,0x6b8e,0x634d,0x636e,0x6baf,0x6b8e,0x636e,0x634e,0x634d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0c,0x5b0c,0x634d,0x636d,0x636d,0x5aec,0x5b0c, +0x630c,0x630c,0x630c,0x5aeb,0x632c,0x632c,0x6b4d,0x6b6d,0x6b8d,0x634d,0x634c,0x634c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x630c,0x632c,0x634d,0x6b6d,0x6b8e,0x632d,0x5b0d,0x6b4e,0x738f,0x7bf0,0x8c51,0x8410,0xa4f3,0x8c30,0x9cf3,0x9491,0xa4f3,0xbdf7,0x9d54,0x94d3,0x8c92,0x9471,0xa4f2,0xa513,0x9451,0xad34,0xad96,0x73af,0xad35,0xbdd7,0x7bef,0x9cb2,0x9cd3,0x8c10,0xb576,0xad96,0x8430,0x94b2,0x9492,0xad75,0xbdf7,0x8431,0xa555,0xb5f7,0x8452,0x8452,0x8432,0x8472,0x7c51,0x7c31,0x8472,0x94f4,0x9d15,0x8c93,0x8473,0x8452,0x8c93,0x8cb4,0x8cd4,0x8cb3,0x8cb3,0x7c31,0x8472,0x8cd3,0x8cd4,0x8cd4,0x8492,0x8cd4,0x8cb3,0x7c72,0x8472,0x8493,0x8cb4,0x8cd4,0x8cd4,0x94f4,0x94f4,0x9cf5,0xa536,0xadb7,0xa5b7,0xadb7,0xa576,0x9d56,0x9d36,0x9d56,0xa576,0xbe39,0xbe39,0xa597,0xa597,0xadb8,0xb5f9,0xb5f9,0x632e,0xa537,0x7c0f,0x4a8a,0x4229,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x5aab,0x6b4e,0x8432,0x6b2d,0x630d,0x9492,0x73af,0x5269,0x41c7,0x39c7,0x39e7,0x39c7,0x39e7,0x41e7,0x39c8,0x632d,0x528a,0x4229,0x4209,0x4a6a,0x630c,0x6b2d,0x5acc,0x630d,0x52ab,0x4a4a,0x39c7,0x39e8,0x5acc,0x6b4e,0x5aab,0x630d,0x526b,0x62ec,0x4a4a,0x630c,0x5aec,0x4a49,0x3986,0x3987,0x3186,0x3186,0x39c7,0x5aec,0x630c,0x4a29,0x4a4a,0x7bf0,0x6b2d,0x5aab,0x736e,0x83d0,0x5aab,0x4a49,0x528a,0x6b6e,0x62cb,0x5249,0x4a49,0x5acb,0x8c31,0x6b2d,0x5aec,0x7bf0,0x62cb,0x526a,0x526a,0x630d,0x9493,0x732d,0x5a8b,0x5a8b,0x62cb,0x62cb,0x5a8a,0x5a8a,0x6b2d,0xad98,0xa598,0xa5b8,0xadd8,0xa597,0xa597,0xadb7,0xb5f9,0xb5f9,0x9d56,0x9515,0x9d56,0x9d56,0xad97,0xbe19,0xadd8,0x9d15,0x9d36,0x8cd4,0x8cd4,0x9515,0x94f4,0x8c93,0x8cb3,0x8c93,0x8493,0x84b3,0x84b3,0x8cf4,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8cb3,0x8472,0x7c32,0x7c32,0x94f4,0x8492,0x7410,0x73f0,0x7c11,0x8452,0x7c51,0x7411,0x8c93,0x8cd3,0x8492,0x7c11,0x7c11,0x7c52,0x8472,0x8472,0x7c31,0x73f0,0x8452,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x7bf0,0x7c11,0x73d0,0x6bd0,0x6bd0,0x6bf0,0x73f0,0x7411,0x6bf0,0x7410,0x7c31,0x73f0,0x73f0,0x7431,0x73f0,0x6bd0,0x6bd0,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x73b0,0x73d0,0x73cf,0x73cf,0x7410,0x6bcf,0x6baf,0x6baf,0x73cf,0x73cf,0x6b8e,0x6b8e,0x636d,0x638e,0x636e,0x73af,0x6b6e,0x632e,0x630d,0x5b0d,0x5b2d,0x52ec,0x6b8e,0x73ae,0x5aec,0x630c,0x634c,0x73cf,0x634d,0x5b0c, +0x5aeb,0x634d,0x632c,0x5aeb,0x630c,0x630c,0x634c,0x6b4d,0x632c,0x5b0c,0x632c,0x632c,0x632c,0x5b0c,0x5b0c,0x630c,0x630c,0x630c,0x630c,0x5b0c,0x5b0c,0x630c,0x632c,0x632c,0x634c,0x6b8e,0x634d,0x630d,0x6b6e,0x7bcf,0x9471,0x9451,0x9471,0xb5b6,0x840f,0xa534,0x9cf3,0x8c10,0xad75,0xadb6,0x9d54,0x8c91,0x9471,0x9cb2,0x9cd2,0x9cb2,0xa4f3,0xad95,0x7bce,0xb575,0xb595,0x840f,0x9cd2,0x8c72,0x8c51,0x9cd3,0xb596,0x8410,0xa4f4,0x9492,0xad75,0xbdf7,0x8410,0xad55,0xbe18,0x8472,0x7c31,0x7c11,0x8452,0x8452,0x7c31,0x8432,0x8c93,0x94d4,0x8cb3,0x8452,0x8c72,0x8c93,0x8c93,0x8473,0x8473,0x8472,0x8492,0x8c93,0x8c93,0x8492,0x8472,0x8472,0x8492,0x8cb4,0x8493,0x8cb3,0x8cd4,0x8cb4,0x8cb3,0x8cb4,0x94f4,0x94d4,0x9d15,0xa576,0xa597,0xa576,0x9d56,0xa576,0x9d36,0x9d56,0xad97,0xc67a,0xbe5a,0xa597,0xadd8,0xad97,0xadd8,0xb619,0xbe19,0x632e,0xa537,0x7bef,0x4a6a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x4208,0x4208,0x4208,0x4209,0x632d,0x6b2e,0x8c32,0x630d,0x630e,0x9cf4,0x738e,0x5aab,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x41e8,0x5acc,0x5acb,0x4208,0x39e8,0x528b,0x5acc,0x5aec,0x528b,0x5aec,0x526a,0x5aab,0x3166,0x4229,0x528b,0x632d,0x5aab,0x5acc,0x4a29,0x52ab,0x5aec,0x5aab,0x5aec,0x4a29,0x3986,0x39a6,0x3186,0x3186,0x39a7,0x528a,0x630c,0x5aab,0x5a8b,0x7bb0,0x62cc,0x62cc,0x62ec,0x62cc,0x5a8b,0x630c,0x4a09,0x526a,0x5aeb,0x5aaa,0x5aaa,0x630d,0x736e,0x5a8b,0x526a,0x6b2d,0x6b2d,0x5aab,0x5aab,0x6b4e,0x83f0,0x62cc,0x5a8b,0x5a8b,0x62cc,0x62ec,0x5aab,0x5a8b,0x6b2e,0xadd8,0xadb8,0xa5b8,0xadb8,0xadb8,0xa597,0xbe19,0xbe39,0xc65a,0x9d35,0x94f5,0x94f4,0xa556,0xa556,0xbe19,0xb5f9,0xadd8,0x9515,0x9515,0x9d35,0x9d35,0x94f5,0x8c93,0x94f4,0x8cd4,0x8cb3,0x8493,0x8c93,0x8c93,0x94d4,0x94f4,0x8c93,0x8c93,0x8493,0x8472,0x7c52,0x7c31,0x8472,0x8c92,0x8472,0x7c31,0x7c31,0x8452,0x7c31,0x7411,0x8472,0x8472,0x7411,0x7c31,0x7411,0x7c32,0x8452,0x7c52,0x7c52,0x7c52,0x7c31,0x7431,0x6bf0,0x6bf0,0x7410,0x7c31,0x73f0,0x7c31,0x73d0,0x73f0,0x6baf,0x73f0,0x7410,0x6bf0,0x6bcf,0x73f0,0x7c11,0x7410,0x73f0,0x7410,0x6bcf,0x6baf,0x6baf,0x638e,0x6bcf,0x6bcf,0x6baf,0x6baf,0x6b8f,0x6b8f,0x6b8f,0x6baf,0x73cf,0x73d0,0x73d0,0x6baf,0x73f0,0x7c10,0x6bae,0x636e,0x636e,0x6b8e,0x6b8e,0x73af,0x6b6e,0x5b2d,0x5b2d,0x5b0d,0x632d,0x6b8e,0x6b8e,0x6b8e,0x5b0d,0x632c,0x5b0c,0x636d,0x5b4d,0x5b0c, +0x632c,0x630c,0x5b0b,0x5aeb,0x630c,0x630c,0x634c,0x632c,0x5aeb,0x630c,0x5b0b,0x630c,0x632c,0x632d,0x5aec,0x630c,0x630c,0x632c,0x630c,0x5aeb,0x630c,0x6b4d,0x632c,0x630c,0x630c,0x6b8e,0x6b6d,0x6b4e,0x738f,0x8c10,0x9451,0x8c30,0xad55,0xad75,0x7bcf,0xa514,0xad75,0x8c31,0x9492,0x9d13,0xa595,0x94b2,0x9471,0xad34,0xad54,0x94b1,0x94b1,0xad54,0x8c30,0xa513,0xa513,0x8c71,0xad95,0xa555,0x8c91,0x8c51,0x9cd3,0x8410,0xb5b6,0x9cf4,0x8c92,0xad76,0x9451,0xad14,0xbdd7,0x8472,0x8451,0x8431,0x7c31,0x7c31,0x8431,0x7c11,0x8451,0x8c93,0x8c93,0x8452,0x8472,0x8472,0x8452,0x8c93,0x7c31,0x7c52,0x8493,0x8c73,0x8c72,0x8452,0x8452,0x8472,0x8452,0x8c93,0x94f4,0x8cd3,0x8c93,0x8c93,0x8cb3,0x94f4,0x94d4,0x94f4,0x9d56,0x9d35,0xa576,0x9d35,0x9d15,0xa535,0xa535,0xbe19,0xc69b,0xbe19,0xad98,0xa598,0xadb8,0xadb8,0xb5d8,0xbdf8,0xc67a,0x630e,0xa557,0x7bee,0x4a8a,0x4249,0x4208,0x41e8,0x41e8,0x39e8,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x5acb,0x5aec,0x630e,0x738f,0x6b2d,0x630e,0x83f1,0x738e,0x5aab,0x4a49,0x41e7,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x4229,0x4209,0x39c7,0x31a7,0x41e8,0x4208,0x4208,0x4208,0x4208,0x41e8,0x4208,0x3166,0x39e8,0x4208,0x4208,0x41e8,0x4209,0x39a7,0x41e8,0x4a29,0x4208,0x4a2a,0x41e8,0x39a7,0x39a7,0x3186,0x3186,0x3186,0x39a7,0x4a49,0x4a49,0x526a,0x5aab,0x522a,0x524a,0x4a29,0x4a09,0x524a,0x62cb,0x4a08,0x4a08,0x5249,0x5249,0x526a,0x5a8b,0x526a,0x5229,0x4a29,0x526a,0x5aab,0x5aab,0x5aab,0x62cc,0x62ec,0x5a8b,0x5a8b,0x5aab,0x62ec,0x62ec,0x62ec,0x62ab,0x6b4d,0xb5f9,0xa5b8,0xa597,0xadb8,0xad97,0xa597,0xb5d8,0xb5d8,0xbe39,0xad97,0x9d36,0xa556,0xad97,0xa576,0xa556,0xadd8,0xadd8,0xa576,0x94f4,0x9515,0x9d36,0x94f4,0x94f4,0x9d35,0x8cf4,0x8cf4,0x8cf4,0x8cb3,0x8473,0x8493,0x8493,0x8cb3,0x8cb4,0x7c32,0x8473,0x8473,0x7c32,0x7c52,0x8452,0x8472,0x7c52,0x73f1,0x7c31,0x7c11,0x7411,0x7c52,0x7411,0x7c11,0x7410,0x7c31,0x8472,0x8473,0x7c52,0x8473,0x8493,0x7411,0x7411,0x73f0,0x73f0,0x73ef,0x7c30,0x7410,0x7410,0x73f0,0x6bcf,0x73cf,0x7c31,0x7410,0x73f0,0x73f0,0x7bf0,0x7c11,0x7410,0x6bef,0x7410,0x7c30,0x73cf,0x6b8e,0x636e,0x6baf,0x73cf,0x6b8f,0x6baf,0x6b8f,0x73af,0x73af,0x73cf,0x73b0,0x73d0,0x73d0,0x73f0,0x6baf,0x6b8f,0x6b8f,0x6b6e,0x6b6e,0x73af,0x73af,0x6baf,0x6b8e,0x636d,0x636e,0x5b2d,0x636d,0x7bf0,0x5b0d,0x5b2d,0x634e,0x5b0d,0x5b0c,0x530c,0x52eb,0x5b0c, +0x5aeb,0x5aeb,0x5b0c,0x5aec,0x5aeb,0x5aeb,0x630c,0x632c,0x5aeb,0x5aeb,0x62ec,0x630c,0x5b0c,0x634d,0x5b0c,0x5aec,0x632c,0x632c,0x5b0c,0x5aeb,0x5b0c,0x632c,0x632c,0x5b0c,0x632c,0x634d,0x6b4d,0x6b6e,0x7bcf,0x8c31,0x9cd2,0xa534,0xa535,0x8cb2,0x8c31,0xad34,0xad75,0x94b2,0x8c71,0x8c71,0xad54,0x9cd3,0x9492,0xad96,0xa575,0x94d3,0x9491,0x9cd2,0x9492,0x9cd3,0x9cf3,0xa534,0xb5d6,0x94d2,0x94b2,0x94b2,0x94d2,0x94d3,0xb5f7,0xa555,0x8c72,0x9cf4,0x9c93,0xad76,0xadb7,0x8472,0x8452,0x7c31,0x7c11,0x7c31,0x7c32,0x7c51,0x7c31,0x7c31,0x8472,0x8431,0x8451,0x8492,0x8493,0x8472,0x8492,0x8472,0x7c51,0x8472,0x8c92,0x8472,0x8472,0x8493,0x84b3,0x9535,0x8cf4,0x8472,0x8493,0x8473,0x8493,0x8cb3,0x94f4,0x9d55,0x9d55,0x9d76,0xa576,0xa576,0x9d35,0xad96,0xce9a,0xce9a,0xb619,0xb5f9,0xa5b7,0xadd8,0xadf8,0xbe3a,0xc65a,0xbe19,0xc67a,0x630e,0xad57,0x7bee,0x4a8a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x41e8,0x4208,0x4a49,0x528a,0x5acb,0x52ab,0x526a,0x630d,0x6b4d,0x6b2e,0x62ec,0x630d,0x5aab,0x526a,0x4a28,0x41e8,0x41e7,0x39c7,0x39c7,0x4a09,0x528a,0x41e8,0x4208,0x4208,0x41e8,0x41e8,0x41c7,0x39c7,0x39c7,0x39c7,0x41e8,0x41e8,0x41e8,0x39c7,0x39a6,0x39a7,0x39c7,0x39a7,0x39a7,0x39c7,0x39c7,0x41e8,0x4208,0x41e8,0x41e8,0x39c7,0x41e8,0x41e8,0x41e8,0x4a29,0x4a29,0x4a49,0x4a49,0x4a29,0x5249,0x4a29,0x4a29,0x4a29,0x5249,0x4a49,0x5249,0x4a29,0x5249,0x5269,0x5269,0x5249,0x5269,0x526a,0x528a,0x5a8a,0x5a8a,0x5aab,0x5a8b,0x62cb,0x62cc,0x5a8b,0x62ab,0x62ec,0x62ec,0x62ec,0x62cb,0x6b2d,0xadd8,0xadd8,0xa597,0xa5b8,0xadf8,0xadd8,0xa597,0xa597,0xb5f8,0xadb7,0xa576,0xb5f8,0xadb7,0xadb7,0xa597,0xa576,0xa576,0xa597,0x9d36,0x9515,0x8cf5,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x84b3,0x8493,0x8cb4,0x8cb4,0x8cb3,0x8cd4,0x8cd4,0x7c32,0x8473,0x8472,0x8493,0x7c72,0x7c52,0x7c32,0x7c31,0x7c52,0x7c52,0x7411,0x6bf0,0x73f1,0x73f0,0x7c11,0x7c32,0x84b4,0x84b4,0x7c52,0x8493,0x7c52,0x7411,0x7411,0x6bb0,0x6bb0,0x6bd0,0x6bb0,0x6bd0,0x6bd0,0x63af,0x636f,0x6bb0,0x6c11,0x6bd0,0x6bf0,0x6bd0,0x636f,0x63b0,0x6bd0,0x5b8f,0x6bd0,0x6b90,0x5b4f,0x5b4e,0x5b4e,0x638f,0x63af,0x5b4e,0x4aed,0x530d,0x6bcf,0x5b6e,0x5b4d,0x5b4e,0x5b4e,0x5b6e,0x63af,0x5b8e,0x532d,0x532d,0x532c,0x5b6d,0x638d,0x5b6d,0x534d,0x4b2c,0x534c,0x536d,0x536d,0x4b0b,0x42eb,0x4b0b,0x430b,0x4b2b,0x4b2c,0x4b2b,0x430a,0x4b2b,0x4b2b, +0x5aaa,0x5aca,0x62eb,0x5aca,0x5aea,0x5aeb,0x630c,0x630c,0x62ec,0x5acb,0x62cb,0x62ec,0x630c,0x632c,0x630c,0x62ec,0x630c,0x62eb,0x62eb,0x630c,0x630c,0x62eb,0x62eb,0x62cb,0x62ec,0x6b2d,0x632d,0x632d,0x73af,0x8431,0x9cd3,0x8c92,0x7c10,0x7bf0,0x9472,0x9cb3,0x8451,0x7c10,0x8451,0x8c51,0x9492,0x94b3,0x9cd3,0x94b3,0x8c72,0x8c71,0x9cd3,0xa534,0x9cf3,0x9d13,0x9d13,0x9cf3,0x94b3,0x8431,0x8c72,0x9cd4,0xa515,0xa535,0x9cf3,0x8c72,0x9492,0x9cb3,0x9492,0x8cb2,0x8492,0x8431,0x8410,0x8410,0x8430,0x8430,0x8c51,0x8431,0x8410,0x8431,0x8c31,0x8410,0x8410,0x8c52,0x94b3,0x8431,0xa514,0x94b3,0x8431,0x8c51,0x8410,0x8c31,0x8c10,0x8c31,0x8c51,0x9492,0x8c92,0x8c51,0x8c51,0x9472,0x9472,0x9473,0x94b3,0x9cf4,0x9cf4,0x9cd3,0xa4d3,0xa4d4,0xb535,0xd65a,0xce3a,0xb597,0xad76,0xad77,0xad56,0xb597,0xbdb8,0xc5f9,0xc5f9,0xc5f9,0xbdd8,0x630f,0xad78,0x7bce,0x528a,0x4249,0x4208,0x4208,0x41e8,0x41e8,0x41e8,0x4209,0x630d,0x52aa,0x528a,0x528a,0x526a,0x41e8,0x630d,0x6b6d,0x6b2e,0x5a8a,0x4a49,0x528a,0x526a,0x4a49,0x4229,0x4a49,0x39c7,0x39a7,0x528b,0x7bcf,0x5a68,0x6247,0x6226,0x6206,0x61e6,0x59c6,0x59c6,0x59c6,0x59c6,0x6207,0x6207,0x61e7,0x59c6,0x59c6,0x59c6,0x59c7,0x59e8,0x59c7,0x59c7,0x51e7,0x5208,0x5a49,0x5229,0x4a08,0x41e8,0x4208,0x4208,0x4209,0x4a29,0x4a4a,0x4a29,0x4a4a,0x4a4a,0x526a,0x4a4a,0x4209,0x4209,0x4209,0x4229,0x4a28,0x4228,0x4a28,0x4a48,0x4248,0x4a48,0x4a68,0x4a69,0x4a69,0x5289,0x5289,0x5289,0x5a89,0x6b2d,0x6b2d,0x5a8b,0x62cb,0x62ec,0x630c,0x62ec,0x5a8b,0x5aac,0x7c54,0x7c34,0x7434,0x7c34,0x84b5,0x8474,0x7c33,0x7c13,0x7c53,0x7c33,0x7c33,0x73f2,0x7413,0x7413,0x7c54,0x7413,0x6bb2,0x63b2,0x63b2,0x6391,0x5b51,0x6391,0x5b71,0x5330,0x5b50,0x5b71,0x5330,0x5b50,0x5b30,0x5310,0x5b10,0x530f,0x52ef,0x5b30,0x428e,0x42cf,0x4aef,0x4aef,0x42ce,0x42ce,0x42ae,0x428d,0x42ce,0x3aae,0x3a6d,0x3a6d,0x3a6d,0x3a8e,0x3a8e,0x3a6e,0x42cf,0x3a8e,0x324d,0x3a8e,0x428e,0x324d,0x3a8d,0x326d,0x2a6d,0x2a4d,0x2a6d,0x2a6d,0x222c,0x222c,0x224d,0x2a6d,0x32ce,0x2a8d,0x224c,0x224c,0x224c,0x2a6d,0x226d,0x226c,0x2a8d,0x224d,0x224c,0x1a2b,0x222b,0x224b,0x2a8b,0x328b,0x224a,0x2a8a,0x2aab,0x2aab,0x2aab,0x22aa,0x2aaa,0x2aca,0x2ac9,0x32c9,0x32ea,0x2ac9,0x2ac9,0x32c9,0x32e9,0x32e9,0x32e9,0x3309,0x3309,0x3309,0x32e8,0x32e8,0x32e8,0x32e8,0x2ac8,0x2ae8,0x32e8,0x32e8,0x3308,0x3308,0x32e8, +0x7b66,0x7b87,0x7b87,0x7b87,0x7b86,0x7b87,0x7b88,0x7b88,0x7b67,0x7b47,0x7b47,0x8368,0x8348,0x8347,0x8348,0x7b27,0x7b27,0x7b27,0x7b27,0x8327,0x8327,0x8327,0x8307,0x8327,0x8307,0x8328,0x8328,0x8308,0x8b49,0x8b6a,0x8b49,0x8b6a,0x8b6b,0x936a,0x936b,0x936b,0x8b4a,0x938b,0x93ac,0x938c,0x938c,0x938b,0x938c,0x936c,0x9b8c,0x9b8c,0x9b8c,0x9b8d,0x9b6c,0x9b6d,0x9b4c,0x932b,0x92ea,0x9b2b,0x9b2b,0x9b2b,0x9b2b,0x930b,0x92ea,0x9b0a,0x92ea,0x92ea,0x9aeb,0x92aa,0x92aa,0x9aca,0x9aea,0x9ac9,0x9ac9,0x9aea,0x9aea,0x9aa9,0x9aaa,0x9aa9,0x9aa9,0x9aa9,0x9aa9,0xa2ca,0x9aaa,0x9a89,0xab0b,0xaaeb,0x9a89,0x9a89,0x9a89,0x9a89,0xa269,0xa269,0xa248,0xa248,0xa269,0xa269,0xa249,0xa249,0xa249,0xa249,0xa269,0xa26a,0xa26a,0xa269,0x9a08,0xb30c,0xc3ae,0xaaec,0xaa6b,0xa26a,0xa26a,0xa24a,0xa26a,0xaaab,0xaa8b,0xaa4a,0xaa6b,0xaaac,0xaa8b,0x62ce,0xad98,0x7bce,0x528a,0x4249,0x4209,0x4208,0x4208,0x41e8,0x41e8,0x4a2a,0x7bd0,0x526a,0x4a29,0x4a29,0x41e8,0x39c8,0x62ed,0x6b6e,0x630d,0x5269,0x41e7,0x4229,0x4a49,0x4a29,0x4229,0x6b2d,0x39c7,0x39a7,0x5aac,0x9471,0x7b06,0x8a43,0x8a03,0x89e3,0x91a3,0x8982,0x89a3,0x8983,0x8983,0x9183,0x91a3,0x9183,0x9163,0x9164,0x8964,0x8964,0x89a5,0x8184,0x7964,0x7165,0x7165,0x71a6,0x5986,0x3945,0x2945,0x2925,0x2946,0x2946,0x2967,0x3188,0x2968,0x2989,0x2989,0x29a9,0x2989,0x2988,0x2988,0x2987,0x29a6,0x29c6,0x29c6,0x29e6,0x29e6,0x2a06,0x3206,0x3225,0x3245,0x3a45,0x3a66,0x4286,0x4ac6,0x5b07,0x73ad,0x736e,0x5a8b,0x62cb,0x736e,0x6b4d,0x62cc,0x5a6a,0x5aab,0x52d0,0x4ad1,0x52d1,0x4ab0,0x4ad0,0x4ab0,0x4a90,0x4a90,0x4a8f,0x52d0,0x4ab0,0x42b0,0x4ad0,0x52f0,0x4ad0,0x4ab0,0x4ab0,0x428f,0x3a6f,0x3a6e,0x42af,0x3a6f,0x324e,0x42af,0x4acf,0x42af,0x42af,0x42cf,0x42af,0x3a8f,0x42af,0x42af,0x3a8e,0x324e,0x42af,0x42af,0x3a8e,0x42cf,0x3aae,0x42ae,0x3a8d,0x324d,0x326d,0x3a8e,0x3aae,0x326e,0x3aae,0x3aae,0x42ae,0x42ce,0x42ce,0x3aae,0x3acf,0x3aae,0x328d,0x42ce,0x42ee,0x326c,0x3aad,0x3acd,0x3acd,0x3acd,0x430e,0x430e,0x4b0e,0x42ee,0x3aad,0x3acd,0x430e,0x3aad,0x3aad,0x3acd,0x42ee,0x42ed,0x4b0d,0x4b0d,0x42ed,0x42cc,0x42cc,0x42cc,0x4b0d,0x42ec,0x42cb,0x4b0c,0x4b2c,0x4b4d,0x4b4d,0x4b0c,0x4b2c,0x534c,0x532c,0x534c,0x5b6c,0x5b6c,0x534b,0x534c,0x534c,0x536c,0x534b,0x532b,0x5b6b,0x534b,0x534a,0x4b2a,0x534b,0x4b0a,0x532b,0x532b,0x4b0b,0x534b,0x534b,0x534b,0x530a, +0x8c23,0x8c23,0x8c03,0x8c03,0x9404,0x8be5,0x8be4,0x8bc3,0x8bc3,0x93c3,0x93a4,0x93a4,0x93a4,0x9384,0x8b84,0x8b64,0x8b64,0x8b64,0x8b63,0x9364,0x9364,0x9364,0x9363,0x9364,0x9364,0x9364,0x9364,0x9364,0x9b44,0x9b65,0x9b66,0x9b66,0x9b66,0x9b46,0x9b46,0x9b66,0x9b66,0x9b66,0x9b67,0x9b67,0x9b47,0x9b46,0x9b26,0x9b46,0x9b46,0x9b46,0xa326,0xa305,0x9ac5,0x9ae6,0x9ac6,0x9ae6,0xa2e6,0x9ac6,0x9aa5,0x9a85,0x9ac6,0x9ae7,0x9ac6,0x9aa6,0xa2a6,0xa2c7,0x9aa6,0x9a86,0x9aa7,0x9aa7,0x9aa7,0x9aa7,0xa2a7,0xa2a6,0x9a65,0x9a86,0x9a86,0x9aa7,0x9aa7,0x9a87,0x9aa7,0xa2c7,0xa2c7,0x9a87,0x9a86,0xa286,0xa287,0xa287,0xa2a7,0x9a65,0x9a66,0xa2a8,0xa2c8,0xa2a8,0xa2c9,0xa2a8,0xa2a8,0xa2a8,0xa288,0xa288,0xa2a9,0xa2c9,0xa2ca,0xa268,0xcc91,0xccd1,0x9b6c,0xa32c,0xa32c,0xab4c,0xa34c,0xa32c,0xab8d,0xab8d,0xa36d,0xb3af,0xb3ef,0xb3ef,0xb3ef,0x62ce,0xad78,0x73ae,0x528a,0x4a49,0x4229,0x4208,0x4208,0x41e8,0x41e8,0x4209,0x5acb,0x4208,0x41e8,0x41c8,0x41c7,0x39e7,0x526b,0x5aab,0x526a,0x4208,0x39c7,0x39e7,0x41e8,0x41e8,0x4209,0x5aab,0x39c7,0x39a7,0x526b,0x7bcf,0x7b06,0x8a42,0x8a02,0x91c2,0x91a2,0x9182,0x91a2,0x9182,0x9162,0x9142,0x9162,0x9142,0x9142,0x9142,0x9122,0x9143,0x8943,0x8943,0x8123,0x7923,0x7124,0x6944,0x5104,0x30e3,0x20c3,0x18c4,0x18e4,0x18e5,0x18e5,0x1906,0x2107,0x1927,0x1928,0x1928,0x2148,0x2148,0x2168,0x2167,0x2186,0x21a5,0x21a5,0x21c5,0x21e5,0x2a05,0x2a25,0x2a44,0x3264,0x3264,0x3a85,0x42a5,0x5305,0x6385,0x7bcc,0x7b8f,0x62cc,0x6b2d,0x736e,0x736e,0x62cb,0x5a8a,0x6b4d,0x9d56,0x9536,0x9535,0x9515,0x9515,0x9d56,0x9536,0x8cd4,0x8cd4,0x9535,0xa597,0x9d56,0x9515,0xa556,0x9d56,0x9515,0x9d56,0x9515,0x8473,0x8494,0x7c73,0x8493,0x84b4,0x84d3,0x8cf4,0x8cf4,0x7432,0x7c32,0x7c73,0x7c52,0x8493,0x8493,0x7c72,0x7c32,0x8473,0x8cb4,0x7c73,0x7c52,0x7c72,0x8493,0x8493,0x7c51,0x7431,0x7431,0x7c72,0x7c51,0x8cd3,0x94f4,0xa576,0x94f4,0x7c52,0x7c52,0x73f0,0x73f0,0x7410,0x7411,0x7411,0x63b0,0x6bf1,0x7c31,0x7430,0x7c31,0x8cd3,0x7c72,0x8472,0x7c51,0x73cf,0x6bd0,0x7410,0x6bf0,0x6c10,0x7410,0x7430,0x73f0,0x73f0,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x73f0,0x638f,0x638f,0x6b8f,0x638e,0x638e,0x6baf,0x638e,0x636e,0x6baf,0x638f,0x6b6e,0x6b8e,0x73cf,0x73cf,0x6bae,0x6bae,0x73cf,0x8451,0x6b6e,0x636e,0x634d,0x5b2c,0x638e,0x638d,0x634d,0x634d,0x632d,0x632d,0x5b0c,0x634d,0x5b0c,0x5b0c, +0x7368,0x7348,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7b69,0x7b69,0x7b68,0x7b68,0x7348,0x7349,0x7349,0x7b49,0x7b49,0x7349,0x7b49,0x7349,0x7328,0x7308,0x7309,0x7309,0x7309,0x7b29,0x7b4a,0x838a,0x7b6a,0x7b6a,0x838b,0x8bcd,0x8bed,0x940e,0x8c0e,0x8bed,0x940e,0x944f,0x942f,0x8c0e,0x8c0e,0x8bee,0x942f,0x9c6f,0x942f,0x8c0e,0x8c0d,0x93ee,0x9c4f,0x9c90,0x8c2e,0x8bed,0x8bed,0x8bee,0x8bee,0x8c2e,0x946f,0x8c4f,0x8c0f,0x83cd,0x83ad,0x8bad,0x8bad,0x83ce,0x83ae,0x83ce,0x83ee,0x83cd,0x83cd,0x8bee,0x8bee,0x942f,0x9470,0x9450,0x8c50,0x8c0f,0x8c0f,0x8c0f,0x8c0f,0x8c2f,0x840f,0x83ef,0x8bef,0x8bef,0x8bef,0x83ef,0x9cb1,0x9cf2,0x8c50,0x8c50,0x9471,0x9471,0x9471,0x8c71,0x8c71,0x9471,0x94b2,0x94b2,0x9cb2,0x9c92,0xad35,0xde9a,0xbdf8,0xbe18,0xb5b6,0xa534,0xa555,0xad75,0xa575,0xb5d7,0xad96,0xad76,0xbdf8,0xbe38,0xbe39,0xbe39,0x5aee,0xad77,0x73ad,0x52ab,0x4a6a,0x4a29,0x4209,0x4208,0x4208,0x41e8,0x4208,0x41e8,0x41e8,0x4208,0x41e8,0x41c7,0x41e7,0x41e8,0x41e8,0x41e8,0x39c7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c8,0x41e8,0x39c7,0x39c7,0x4208,0x526a,0x5226,0x51c4,0x51a4,0x5184,0x5985,0x5985,0x5985,0x5984,0x5984,0x5964,0x5964,0x5964,0x5964,0x5944,0x5944,0x5965,0x5985,0x5985,0x5965,0x5985,0x5185,0x5185,0x4145,0x3145,0x3145,0x2945,0x3186,0x3186,0x3146,0x3167,0x3167,0x3187,0x3187,0x3188,0x3188,0x31a8,0x31a8,0x31a7,0x31a7,0x39c6,0x39e6,0x39e6,0x31e6,0x3a06,0x3a06,0x3a26,0x3a46,0x4246,0x4246,0x4266,0x4aa6,0x5ae7,0x6b4c,0x734e,0x62ec,0x6b4d,0x630c,0x734e,0x734d,0x734d,0x736e,0xadd9,0xa597,0x9d76,0x9d96,0xa596,0xa577,0x9d36,0x9d35,0x9d55,0xadb7,0xbe39,0xc69a,0xadf7,0xadd7,0xadb7,0xa556,0xadb7,0xa556,0x8cd4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x8cf4,0x8cf4,0x9535,0x8493,0x84b3,0x8cb4,0x84b3,0x8cb4,0x8493,0x8452,0x8452,0x8cb4,0x8452,0x8452,0x8493,0x8473,0x84b3,0x84b3,0x8493,0x8472,0x7c52,0x8452,0x8472,0x9514,0xa575,0x9d55,0x8cb3,0x8452,0x8452,0x73f0,0x73f0,0x7c31,0x7410,0x7411,0x6bf0,0x7410,0x7c51,0x7c51,0x7c11,0x73f0,0x73f0,0x8451,0x8492,0x8472,0x73d0,0x73f0,0x7411,0x7410,0x73f0,0x73cf,0x7c30,0x73f0,0x73f0,0x7bf0,0x73d0,0x73af,0x73d0,0x73d0,0x6baf,0x638f,0x6bcf,0x6bcf,0x6b8e,0x636e,0x6bcf,0x636e,0x6baf,0x638e,0x6b8f,0x73d0,0x6b8f,0x7bf0,0x7c10,0x73f0,0x7bf0,0x73f0,0x636e,0x634e,0x634e,0x5b0d,0x634d,0x6b8e,0x5b4d,0x634d,0x5b2d,0x5b2d,0x5b0c,0x5b0c,0x5b0c,0x52cb, +0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x6b2c,0x630c,0x6b4c,0x6b4d,0x632c,0x6b6d,0x6b8d,0x634d,0x632c,0x632d,0x630c,0x5b0c,0x630c,0x5b2c,0x530c,0x5aec,0x5aeb,0x5aeb,0x5aec,0x62ec,0x630c,0x6b6e,0x6b4d,0x6b4d,0x83ef,0x94b2,0x9cd2,0xa513,0x9cf3,0x9cf3,0x94b2,0x9cf3,0xa534,0x9d34,0x94d2,0x94b2,0x94b2,0x9d13,0xa555,0x94f3,0x7c30,0x8c71,0x9492,0xa534,0xa555,0x94b2,0x8431,0x8431,0x8c72,0x94d3,0x9d14,0xa534,0xad75,0x9cf3,0x8c91,0x8451,0x7c31,0x7c11,0x7c31,0x73f0,0x8451,0x94f3,0x94f3,0x8cb2,0x8cb3,0x94d3,0x9d14,0xad75,0xb5d7,0x9d55,0x8c92,0x8471,0x7c31,0x7410,0x8471,0x8c72,0x8c72,0x8c92,0x8c93,0x8452,0x9d35,0xa556,0x94d4,0x94d4,0x94b3,0x8c93,0x8c93,0x8493,0x8c93,0x8cb3,0x8cd3,0x8cd4,0x8cd4,0x8cb4,0xb5b8,0xb5b7,0x9d15,0x9d15,0x9d56,0xa576,0xa577,0xa576,0xa556,0xa577,0xa577,0xbdf9,0xbe19,0xb5d8,0xb5f8,0xb619,0x52ad,0x9493,0x632c,0x528a,0x52aa,0x4a49,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a49,0x4a49,0x41e7,0x41e7,0x41e7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x39a7,0x3186,0x3186,0x3186,0x3986,0x3986,0x39a6,0x3986,0x3986,0x39a6,0x41e7,0x41e7,0x41e7,0x41a7,0x3986,0x39a6,0x41a7,0x41a7,0x41a6,0x39a6,0x39a6,0x41c7,0x41a7,0x41c7,0x39c7,0x39a7,0x4a08,0x526a,0x4a29,0x4a29,0x41e8,0x41e7,0x41e7,0x41e8,0x41e8,0x41e8,0x41e8,0x4a08,0x4a29,0x4a28,0x4a49,0x5269,0x4a48,0x4a49,0x4a28,0x4208,0x4a49,0x5aaa,0x4a28,0x4a28,0x5249,0x5269,0x62ec,0x6b2d,0x6b0c,0x736d,0x6b2d,0x6b0d,0x7bcf,0x8c51,0x7baf,0x9d57,0x9d57,0x9d56,0x9d56,0xa577,0xa576,0x9515,0x8cf4,0x9d35,0xa556,0xadd8,0xbe59,0xadb7,0xbe39,0xadd7,0xa556,0xadb7,0x9d36,0x8cb4,0x9d15,0x94f5,0x8cb4,0x8473,0x8cd4,0x8cb4,0x8493,0x8cb4,0x8cd4,0x8cf4,0x94f5,0x84b4,0x8493,0x8473,0x8473,0x8cd4,0x8473,0x9515,0x8cd4,0x8472,0x8493,0x8472,0x8493,0x8452,0x8452,0x7c52,0x7c51,0x94f4,0x9d35,0x94f4,0x8cb3,0x7c31,0x7c52,0x7410,0x73f0,0x7c11,0x7c10,0x7c31,0x7c31,0x7410,0x7c11,0x7411,0x73f0,0x73f0,0x7c31,0x8472,0x7c51,0x7c31,0x73f0,0x73f0,0x73f0,0x73d0,0x6bcf,0x6baf,0x6bcf,0x73f0,0x73f0,0x73cf,0x6baf,0x6baf,0x6baf,0x6bcf,0x6bcf,0x6bd0,0x638f,0x6baf,0x638e,0x73ef,0x7bd0,0x634e,0x634e,0x634d,0x638e,0x73cf,0x73cf,0x73af,0x6b8e,0x7bf0,0x73f0,0x6baf,0x636e,0x634e,0x636e,0x634e,0x73af,0x6b8e,0x632d,0x5b2d,0x5b0d,0x5b2d,0x634d,0x5b0c,0x5b0d,0x52ec, +0x5aeb,0x5b0b,0x5b0c,0x5b0c,0x634d,0x6b4d,0x630c,0x5aeb,0x632c,0x632c,0x6b6d,0x73ae,0x634c,0x636d,0x636d,0x5b2c,0x632c,0x5b0b,0x5aeb,0x632c,0x5b0b,0x5aeb,0x5aeb,0x5aec,0x5b0c,0x632c,0x6b6e,0x6b4d,0x7bae,0x8c51,0x9cb2,0x9492,0x8c51,0x9492,0x9cd3,0xa4d3,0x9cb2,0x8c30,0xa514,0xad55,0x9492,0xa514,0x94b3,0x94d2,0xb5d6,0x9d13,0x8c50,0xa513,0x94b2,0x9cb2,0xb5b6,0x9cf3,0x8451,0x9472,0x9cf3,0xa534,0x94b2,0xa554,0xbdf7,0x9d13,0x94d3,0xa555,0xad76,0x94f4,0x8c93,0x9492,0xad55,0xbdf7,0xb5d7,0x94b3,0xa555,0xbdb7,0xa513,0xad55,0xad96,0xa535,0xad96,0x94d3,0x8cb2,0xad95,0xad75,0xa554,0xbe38,0xb5f7,0xa555,0xad96,0xb5d7,0xb5d7,0xbdf8,0xb5b6,0xb5b7,0xbdf7,0xb5d7,0xb5f7,0xad76,0xb5f8,0xadd7,0x94f4,0x94d4,0x9d35,0xb5f8,0xa576,0x9d15,0x9d56,0xa577,0xadb8,0xad97,0xa597,0xadb7,0xadb8,0xb5f8,0xadd8,0xad97,0xadb8,0xb639,0x4a6b,0x4229,0x31a6,0x3186,0x31a6,0x3186,0x2965,0x2965,0x2965,0x3165,0x3165,0x3165,0x3186,0x31a6,0x31a6,0x2965,0x2965,0x2965,0x2945,0x2925,0x2945,0x2945,0x2925,0x2925,0x2945,0x2965,0x3185,0x2965,0x2945,0x2965,0x2965,0x2945,0x2924,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x2965,0x31a6,0x39a6,0x39a7,0x3186,0x3166,0x3166,0x3186,0x3166,0x3165,0x2945,0x3165,0x39a6,0x3166,0x3186,0x3186,0x3166,0x31a6,0x4208,0x39c7,0x39e7,0x39a6,0x3186,0x39a6,0x39a6,0x3186,0x39a6,0x39a6,0x39c7,0x41e8,0x41e8,0x4228,0x4228,0x4208,0x4228,0x41e7,0x39a7,0x4208,0x526a,0x41e8,0x4a08,0x4a29,0x4a49,0x528a,0x5acb,0x62eb,0x62eb,0x5acb,0x528a,0x630c,0x736e,0x6b6e,0x9d76,0xa597,0xa576,0x9d56,0xa576,0xadb7,0xa597,0x9535,0x9515,0x9515,0xad97,0xb5d8,0xa576,0xb5f8,0xb5d8,0xad97,0xad97,0x9d56,0x8cf5,0x8cd4,0x9d35,0x94f5,0x8cb4,0x8cb4,0x8493,0x8493,0x8493,0x8493,0x9515,0x9515,0x8493,0x8cd4,0x8cd4,0x8cb3,0x8493,0x8cd4,0x9515,0x8cd4,0x8cd4,0x8cd4,0x8c93,0x8cb3,0x8452,0x7c31,0x7c52,0x7c31,0x8493,0x8cb3,0x9514,0x8cd3,0x8cb3,0x8493,0x7c51,0x7c31,0x8452,0x8431,0x7c31,0x7c11,0x73f0,0x7bf1,0x73f0,0x7c11,0x7c31,0x7c11,0x7c52,0x7c11,0x73f0,0x73f0,0x73d0,0x73d0,0x6bd0,0x73f0,0x73f0,0x6bd0,0x6baf,0x6baf,0x73d0,0x73d0,0x73d0,0x73d0,0x6bcf,0x73f0,0x73f0,0x6baf,0x6baf,0x6bce,0x8471,0x73ef,0x6b8f,0x636e,0x6baf,0x6b8e,0x638e,0x634d,0x8c71,0x8431,0x73af,0x6b8e,0x6b8e,0x636d,0x6b8e,0x636d,0x636d,0x73af,0x6b8e,0x632d,0x5b0d,0x5b0c,0x5b4d,0x638e,0x5b4d,0x52ec,0x530c, +0x5aeb,0x5aeb,0x5aeb,0x62eb,0x632c,0x632c,0x630c,0x62ec,0x62ec,0x632d,0x6b4e,0x630c,0x632c,0x6b6d,0x634d,0x5aeb,0x5aec,0x5acb,0x5acb,0x5aec,0x5acb,0x5acb,0x5aec,0x630c,0x5b0d,0x5b0d,0x6b6e,0x6b6e,0x6b8f,0x8432,0x9cf3,0xa514,0x8c51,0x9cd2,0x9491,0xb595,0xa533,0x842f,0x9cb2,0xacf3,0x9cd3,0xc638,0x9cf3,0x8410,0xb575,0xad14,0x9cd3,0xc679,0x94f4,0x8410,0xad76,0xbe18,0x8cb2,0x8c92,0xb5d7,0xbe17,0x94b2,0x8c71,0xad54,0x94b2,0xa534,0x9492,0xb596,0xad75,0x94d3,0xbdd6,0xa4f3,0xa4f3,0xce59,0x9492,0xb5b7,0xc639,0xa555,0xad54,0xad55,0x9d14,0xc639,0xadb6,0xa535,0xbe18,0xb5b7,0xbdf8,0xb596,0xad76,0xbdf8,0xb596,0xbdf8,0xce79,0xce59,0xbdd7,0xce59,0xc659,0xbe18,0xce59,0xbdf8,0xdefb,0xceba,0xadb7,0xa596,0xd6da,0xdf1c,0xb5f8,0x9d36,0xa577,0xa597,0xadb8,0xad97,0xb619,0xadf8,0xb5f9,0xb5f8,0xadb7,0xa597,0xa5b7,0xb619,0x52aa,0x18c3,0x18a3,0x18a3,0x18a3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x18a2,0x18a2,0x18c3,0x18a3,0x18a3,0x18c3,0x2104,0x18c3,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e4,0x2104,0x20e3,0x18e3,0x18e4,0x2104,0x2104,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2104,0x2104,0x2104,0x2104,0x20e4,0x20e4,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2925,0x2124,0x2104,0x2924,0x2945,0x2925,0x2945,0x2965,0x3166,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3186,0x39a6,0x4229,0xa597,0xa597,0xa556,0xa556,0xa556,0xad96,0xadd8,0xadd8,0x9d76,0x9d76,0xa576,0xa556,0xa576,0xbe19,0xadb7,0xad97,0xa576,0x9d35,0x8cf4,0x8cd4,0x9d35,0x9515,0x94f4,0x8cb3,0x84b3,0x8cd4,0x8cd4,0x8cb3,0x84b3,0x84b3,0x8493,0x8cd4,0x8cf4,0x8cd4,0x8493,0x94f4,0x94f4,0x9514,0x8cf4,0x9515,0x94d4,0x8c93,0x8c93,0x8493,0x8452,0x7c32,0x8472,0x8472,0x8c93,0x8472,0x94d4,0x8c93,0x7411,0x7c11,0x7c31,0x7410,0x7c10,0x7411,0x73f1,0x73f1,0x7c11,0x7c51,0x7c51,0x7c11,0x7c32,0x73f1,0x73f0,0x7bd0,0x7bf0,0x7c11,0x7410,0x6bcf,0x7c11,0x7c31,0x73f0,0x7c11,0x7c11,0x73b0,0x73d0,0x73d0,0x73f0,0x7410,0x6b8f,0x73cf,0x73ce,0x8472,0x6baf,0x73ef,0x73d0,0x636e,0x73f0,0x73f0,0x73ef,0x6b8e,0x8430,0x7bf0,0x738f,0x6b8e,0x638e,0x6b8e,0x6bae,0x7c30,0x8c92,0x632d,0x73af,0x73af,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5b2c,0x5b0c,0x52ec, +0x5acb,0x630c,0x632c,0x630c,0x632c,0x630c,0x5aeb,0x5b0b,0x5aeb,0x632c,0x6b4d,0x5b0c,0x632c,0x632d,0x632d,0x5b0c,0x5aeb,0x5aeb,0x5acb,0x5acb,0x5acb,0x5acb,0x5aec,0x630c,0x5b0c,0x630c,0x6b4d,0x6b4d,0x6b4e,0x7bb0,0x9452,0x9c92,0x9471,0xbdb6,0x8c70,0x9491,0x9cb2,0x8c30,0xad55,0x9472,0xb596,0xc638,0x8c91,0x840f,0xad34,0xa4f3,0xad96,0xc659,0x8451,0x8c11,0xa514,0xce9a,0x9cf3,0x9493,0x9cd3,0xa4f4,0x9cd3,0xad75,0xb596,0x94b2,0xb5b6,0x9472,0xad35,0x9cd3,0xbdf7,0xc6ba,0x9514,0x9452,0xc638,0xad96,0x9492,0xad35,0xb5d7,0xbe18,0xb5d7,0x9d14,0xa535,0xa514,0xbdd7,0xc659,0x9d14,0xc638,0xbdf8,0xb5b7,0xc639,0xb5b7,0xad56,0xdf1c,0xc639,0xa535,0xce3a,0xc639,0xbdf8,0xbdf8,0xbdf8,0xc659,0xdefb,0xc659,0xb5d7,0xce79,0xdefc,0xc67a,0x9d56,0x9d77,0xa577,0xa577,0xad97,0xadb8,0xb619,0xb619,0xb5f9,0xadb8,0xadb7,0xadb7,0xbe5a,0x5aeb,0x20e3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a3,0x18a3,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a2,0x18a2,0x18a3,0x18c3,0x10a2,0x18a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18a3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x20e4,0x18e3,0x18c3,0x18e3,0x3186,0xadd8,0xa597,0x9d56,0xa576,0xa556,0xa576,0xa5b7,0xa597,0xadb7,0xa596,0xa576,0x9d35,0x9d56,0xbdf9,0xad97,0x9d15,0x94f4,0x9d36,0x94d4,0x94f4,0x9d35,0x9514,0x94f4,0x8cd4,0x8cb3,0x8cd4,0x9d36,0x8cd4,0x8473,0x8493,0x8493,0x8cd4,0x94f4,0x94f4,0x94d3,0x9d14,0x9535,0x9d55,0x8cb3,0x9d14,0x94f4,0x8452,0x8cb4,0x8cd4,0x8473,0x7c52,0x8493,0x7c52,0x8cd4,0x8493,0x8cb3,0x9514,0x8cd3,0x8cd3,0x7c51,0x7c10,0x7c31,0x7c11,0x7411,0x7411,0x7c31,0x7c51,0x8452,0x7c31,0x7c31,0x7431,0x8452,0x7c11,0x7bf0,0x7bf0,0x7c10,0x6baf,0x6baf,0x6bd0,0x7c31,0x73d0,0x73af,0x73d0,0x73d0,0x73d0,0x6baf,0x6baf,0x6baf,0x6bae,0x6b8e,0x73af,0x6b8f,0x73af,0x7c11,0x73d0,0x6b6e,0x73cf,0x7c30,0x8c92,0x73cf,0x6b8e,0x73af,0x6baf,0x6bae,0x8451,0x6baf,0x73cf,0x8c72,0x73cf,0x632d,0x634d,0x636e,0x5b2d,0x5b2d,0x5b0c,0x5b2c,0x634d,0x5b0c, +0x5aeb,0x5b0b,0x630c,0x630c,0x632c,0x634d,0x630c,0x6b4d,0x6b4d,0x6b6d,0x738e,0x6b6d,0x630c,0x630c,0x634d,0x632d,0x630c,0x5aeb,0x5aeb,0x5acb,0x52cb,0x52cb,0x5acb,0x5aec,0x5b0c,0x634d,0x6b6e,0x6b6e,0x6b6e,0x7bd0,0x8c52,0x8c51,0xb596,0xb5b6,0x840f,0x9471,0x9cb2,0x83ef,0xad34,0x8c51,0xbdd6,0xc638,0x8c71,0x840f,0xa514,0x9c92,0xb5b7,0xc679,0x8c92,0x8c51,0x9cf4,0xc679,0x8cb2,0x9492,0xa514,0xad55,0xad96,0xad96,0xa514,0x94b2,0x9cd3,0x9472,0xc5f8,0x9492,0xce5a,0xbe59,0x8493,0x8c32,0xbdb7,0xc659,0xa535,0x9cf4,0x9cf3,0x9d14,0xbe59,0xad96,0x94d3,0xa515,0xd69a,0xbdf8,0xa535,0xa534,0xad96,0xbdf7,0xce7a,0xb5d7,0xa534,0xe77d,0xc659,0x9d15,0xc639,0xc638,0xc618,0xc639,0xbdf8,0xbdd7,0xce7a,0xce39,0xc5f7,0xbdd7,0xdedb,0xc67a,0x9d76,0xa577,0x9d56,0xa577,0xb5f8,0xb619,0xb639,0xadf9,0xa5b8,0xa5b8,0xadb8,0xadb8,0xb619,0x5aab,0x20e3,0x2124,0x31a7,0x2944,0x18c2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x0861,0x1082,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18a2,0x10a2,0x10a2,0x18c3,0x3186,0xa597,0xadb7,0xa577,0xadb7,0xa5b7,0xa576,0xadb7,0xadb7,0xa5b7,0xadd8,0xa576,0x94f5,0xa556,0xb5f8,0x94f5,0x94f4,0x94f4,0x94f4,0x94f4,0x94f4,0x9535,0x8cd4,0x9514,0x94f4,0x8493,0x8cd4,0x9535,0x84b4,0x84b4,0x8cb3,0x8472,0x8cb3,0x9d35,0x9d35,0x94f4,0x9514,0x9534,0x9515,0x8cb3,0x9d14,0x9d56,0x8452,0x8472,0x8493,0x7c72,0x7c72,0x7c72,0x7c51,0x8cb3,0x8cf4,0x8cd3,0x9d35,0x8cd4,0x8cb3,0x8493,0x7c11,0x7c32,0x73f0,0x73f0,0x7410,0x7410,0x7c31,0x8472,0x7c31,0x7c31,0x7411,0x73f0,0x6b8f,0x6baf,0x7c10,0x73cf,0x73cf,0x6baf,0x6bd0,0x7c31,0x7c11,0x73d0,0x73f0,0x6bd0,0x73f0,0x6baf,0x6baf,0x6b8e,0x8471,0x7c10,0x634e,0x6b8f,0x6b8f,0x73af,0x738f,0x8431,0x8c92,0x73cf,0x73cf,0x6bcf,0x6baf,0x6b8e,0x6b8e,0x73af,0x73ef,0x7c10,0x73af,0x6b4d,0x6b6d,0x636d,0x632d,0x634d,0x634d,0x5b0c,0x5b0c,0x5b2d,0x5b0c,0x52ec, +0x632c,0x630c,0x5acb,0x5aeb,0x5b0c,0x630c,0x632c,0x734d,0x738e,0x636d,0x6b6d,0x6b6e,0x5aeb,0x5aeb,0x630c,0x632c,0x634d,0x630c,0x5b0b,0x5aeb,0x52cb,0x5aeb,0x5b0c,0x5aeb,0x5b0c,0x632c,0x6b8e,0x6b8e,0x6b8e,0x7bcf,0x8c31,0x9492,0xbdd7,0x9c92,0x8c30,0xbdd6,0xad75,0x8c51,0x9471,0x9cb2,0xad54,0xc638,0x9cf3,0x8c50,0xad54,0x9cd3,0xa535,0xce7a,0x9513,0x8451,0xa514,0xb5f8,0x8451,0x9492,0xbdd7,0xadb6,0x8492,0x94d3,0x9cf3,0xa534,0xbdd7,0x8c51,0xb596,0x9cd3,0xbdf7,0xc679,0x9d14,0x8c51,0xb5b6,0xad35,0xbe18,0xbe18,0xa555,0x8c51,0xbe38,0xb5f8,0x9d14,0xb5b7,0xce9a,0x9d14,0xbe17,0xbe18,0x9cf4,0x94d3,0xd6db,0xbe18,0x9cf4,0xdf1c,0xbdf8,0x9cf5,0xc67a,0xbe38,0xbdf7,0xbe18,0xb5b7,0xc618,0xc5f8,0xc639,0xd69a,0xbdd8,0xd6bb,0xbe5a,0xa5b7,0xa577,0xa557,0xa597,0xb5f8,0xadf8,0xb5f9,0xb5f8,0xadd8,0xadd9,0xadd8,0xadb8,0xadb8,0x526a,0x20e3,0x2945,0x4229,0x4a6a,0x39e7,0x2124,0x10a2,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x1062,0x1082,0x18c3,0x2124,0x3165,0x3186,0x3a08,0xad98,0xadb8,0xa556,0xa597,0xadb8,0xa597,0xadd8,0xb5f9,0xa597,0xa5b7,0xa576,0x94f4,0x9d36,0xadd7,0x94f4,0x8cd4,0x9515,0x94f4,0x8cf4,0x94f4,0x9515,0x94d4,0x94d4,0x94f4,0x8cf4,0x94f4,0x9d35,0x8cb3,0x8493,0x8493,0x8c93,0x8c93,0x8cb3,0x9514,0x8cd3,0x8cf3,0x9534,0x8cd3,0x8cd4,0x8cb3,0x9d15,0x8cb3,0x7c31,0x8493,0x8473,0x8493,0x8472,0x8472,0x8cb3,0x8cb3,0x94d3,0x94f4,0x8c93,0x7c31,0x7c52,0x7c51,0x7c31,0x73f0,0x73f0,0x7c31,0x7431,0x8472,0x7c52,0x6baf,0x7411,0x7411,0x73d0,0x6baf,0x7c10,0x8451,0x73cf,0x73d0,0x6bd0,0x6bf0,0x7411,0x7c31,0x7c11,0x73f0,0x6bf0,0x6bef,0x6bcf,0x6baf,0x6b6e,0x8c92,0x7c10,0x6b6e,0x73d0,0x73cf,0x6b8e,0x636e,0x7c10,0x9cf4,0x73f0,0x73cf,0x6b8e,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b6d,0x73af,0x7bf0,0x6b6e,0x632d,0x636d,0x636d,0x632d,0x5b2c,0x632d,0x5b0c,0x5aec,0x5aec,0x5aec, +0x632c,0x5b0c,0x630c,0x630c,0x632c,0x630c,0x630c,0x630c,0x6b4d,0x632c,0x736e,0x73af,0x630c,0x62eb,0x632c,0x738e,0x738e,0x634d,0x632c,0x5b0c,0x5aeb,0x5b0c,0x5b0c,0x630c,0x634c,0x6b6d,0x738e,0x7bcf,0x7bcf,0x8410,0x8431,0xa535,0xad96,0x8c71,0x8c71,0xa513,0x9cf2,0x8c50,0xad75,0xa534,0x9471,0xb575,0x9d13,0x94b2,0xad95,0x8c92,0x9493,0xb576,0x9d34,0x94d3,0xb5f8,0x9d56,0x8cb3,0x9492,0xb5d7,0x9d15,0x73f1,0x94b3,0x94b3,0xad96,0xb5b7,0x8452,0xad76,0xad55,0x9492,0xb596,0xa534,0xa534,0xbe18,0x94b3,0xa555,0xad75,0x9cf3,0xa535,0xb5d7,0x9d35,0x94d4,0xb5b7,0xbe39,0x8cd4,0xadb7,0xbdf7,0xb597,0xb597,0xce9a,0xadb7,0xa535,0xd6dc,0xb5d8,0xa556,0xce9b,0xc639,0xbe18,0xbdf7,0xbdf8,0xdedb,0xbdd8,0xce9a,0xd6db,0xbdf8,0xd6fc,0xbe59,0xa596,0xa556,0xa557,0xa597,0xa597,0xb5f8,0xb5d8,0xa577,0xb5d8,0xb5f9,0xb5f9,0xadd8,0xb5f9,0x4229,0x2104,0x2945,0x422a,0x632d,0x634d,0x5aeb,0x41e7,0x20e3,0x18e3,0x18c3,0x18a3,0x10a2,0x18a2,0x10c2,0x18a3,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1061,0x1081,0x1081,0x0861,0x1082,0x0841,0x0020,0x0020,0x0841,0x0020,0x0841,0x0841,0x0841,0x0841,0x0020,0x0841,0x0861,0x1081,0x1082,0x1082,0x1061,0x0861,0x1081,0x0861,0x0861,0x1081,0x1081,0x1081,0x0881,0x1081,0x1082,0x1082,0x1081,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x1082,0x1062,0x1061,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2964,0x4a27,0x5aa9,0x5289,0x4229,0x4a6a,0xad98,0xa597,0xadb7,0x9d56,0xa577,0xa597,0xad97,0xadb8,0xad97,0x9d56,0x9d56,0xa576,0x9d55,0xa576,0x94f4,0x94f4,0x94f4,0x94f4,0x9515,0x94f4,0x9d35,0x9d56,0x8cd4,0x8cb3,0x8cb3,0x8cb3,0x9d15,0x8cb3,0x8cd4,0x8cb3,0x8cb3,0x94f4,0x8cb3,0x8cd3,0x84b3,0x8cb3,0x8cd3,0x94f4,0x94f4,0x94d3,0x8cb3,0x8493,0x7c52,0x8473,0x84b3,0x8cb3,0x7c52,0x8493,0x7c52,0x8cb3,0x8cb3,0x8c93,0x94d4,0x7c31,0x7c52,0x7c31,0x7c11,0x7c11,0x7c11,0x7c11,0x7c31,0x94f4,0x7c31,0x73f0,0x73d0,0x7410,0x73f0,0x73cf,0x7410,0x7c10,0x73d0,0x73d0,0x73f0,0x73f0,0x73f0,0x7bf0,0x73d0,0x73f0,0x73f0,0x6bcf,0x73f0,0x6baf,0x73cf,0x6baf,0x638e,0x6baf,0x636e,0x73d0,0x6b8e,0x6baf,0x6baf,0x6b6f,0x73d0,0x73cf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x73af,0x73af,0x73af,0x73cf,0x6b6e,0x634d,0x636e,0x6b8e,0x634d,0x632d,0x5b2d,0x52ec,0x52ec,0x52ec, +0x632c,0x630c,0x630c,0x632c,0x632c,0x630c,0x632c,0x632c,0x6b4d,0x6b6d,0x8410,0x73ae,0x630c,0x6b2d,0x6b4d,0x6b6e,0x73af,0x736e,0x6b6e,0x6b4d,0x6b6d,0x630c,0x5b0c,0x632c,0x6b6d,0x6b6e,0x738e,0x73af,0x7c10,0x8410,0x8c51,0xa535,0x94b3,0x8451,0x8c71,0x8c71,0x9cf2,0xa554,0x9cf3,0x8471,0x8431,0x8c71,0x9d14,0xa535,0x8c72,0x73d0,0x8411,0x8431,0x9d35,0xa576,0x94f4,0x7c52,0x7bf0,0x8431,0x9d14,0x8452,0x73d0,0x7c11,0x8431,0x94b3,0x8c92,0x8452,0x8c93,0x8c72,0x7bf0,0x8432,0x9cf4,0x9d35,0x8c93,0x8452,0x8452,0x8c93,0xa536,0x9d36,0x8c93,0x7c11,0x8431,0xa535,0x94d4,0x8452,0x8c73,0x9493,0xa556,0xad96,0x9d35,0x8cd4,0x94d4,0xad97,0x9cf5,0x9cf4,0xad76,0xb5b7,0xb5b7,0xb5b7,0xad76,0xbe19,0xa556,0xad97,0xb5f8,0x9d35,0xb619,0xad97,0xa556,0xa556,0x9d56,0xadb7,0xadb7,0xb5f9,0xadd8,0xa597,0xadb7,0xb619,0xb5f8,0xb619,0xbe3a,0x4208,0x2104,0x2125,0x422a,0x6b6f,0x73d0,0x8452,0x7bae,0x3185,0x3165,0x2124,0x2104,0x2104,0x2104,0x2124,0x2925,0x2104,0x18e3,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18c2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x18e3,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x0861,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x18e3,0x18e3,0x20e3,0x20e4,0x20e3,0x2104,0x2104,0x2124,0x2944,0x2924,0x2945,0x2965,0x3165,0x3165,0x3185,0x2945,0x2965,0x5268,0x734c,0x8c4f,0x630c,0x4a4a,0x4a8b,0xa577,0xadd8,0xadb7,0xa597,0xa597,0xadb8,0xadb8,0xa557,0xa556,0x9d56,0x9d56,0xadb7,0xa576,0x9d15,0x94d4,0x94d4,0x94f4,0x9d15,0x9d15,0x8cd4,0x9d56,0x9d56,0x8cd4,0x8cb4,0x8cb3,0x8cb3,0x94d4,0x8cb3,0x84b3,0x94f4,0x8cd4,0x94f4,0x94f4,0x8cb3,0x8c93,0x8c73,0x9d15,0x94d4,0x8c93,0x8cb3,0x8472,0x8473,0x8493,0x8cd3,0x8cd3,0x8493,0x7c11,0x8452,0x7c52,0x8c93,0x9d15,0x8c93,0x7c52,0x7c31,0x7c52,0x7411,0x73d0,0x7c11,0x73f0,0x7c31,0x7c31,0x94d4,0x7c31,0x73b0,0x73b0,0x73d0,0x73f0,0x73d0,0x73d0,0x7c10,0x6baf,0x73d0,0x73d0,0x6bd0,0x6bd0,0x6baf,0x73af,0x73af,0x73d0,0x73d0,0x6baf,0x6baf,0x6bcf,0x7411,0x6b8f,0x636e,0x634d,0x7c31,0x6b8e,0x6baf,0x6b8f,0x6b6e,0x6baf,0x73cf,0x6baf,0x6bcf,0x6baf,0x6bae,0x73af,0x73af,0x73cf,0x73af,0x6bae,0x638e,0x6b8e,0x636e,0x636e,0x634e,0x634e,0x5b2d,0x52ec,0x52cb,0x52cb, +0x5aeb,0x630c,0x630c,0x630c,0x632c,0x6b4d,0x6b4d,0x6b4d,0x6b4d,0x73cf,0x7c30,0x634c,0x5aeb,0x630c,0x632d,0x630d,0x6b4e,0x6b8e,0x6b6e,0x73ae,0x73ae,0x6b6d,0x636d,0x636d,0x634d,0x632d,0x6b6e,0x73ae,0x73cf,0x73cf,0x7c10,0x8451,0x7bf0,0x73cf,0x7bd0,0x8431,0x8451,0x73f0,0x634e,0x6b6e,0x6b6f,0x738f,0x7bd0,0x738f,0x6b6e,0x738f,0x738f,0x73d0,0x7c11,0x73f1,0x6bb0,0x73f0,0x73f0,0x73f0,0x7c10,0x7c10,0x73f0,0x73f0,0x7bf0,0x7bf0,0x7bd0,0x7c11,0x7c11,0x73f0,0x73f0,0x7c11,0x7c32,0x7c11,0x7c11,0x73f1,0x7c11,0x8452,0x7c11,0x7411,0x7c52,0x7c11,0x8451,0x8472,0x8472,0x8472,0x8472,0x8472,0x8473,0x8c73,0x8cb3,0x94f4,0x8cf4,0x8493,0x8493,0x8cb4,0x8c93,0x8452,0x8cb4,0x94f5,0x8c93,0x8cb4,0x94f5,0x8cb4,0x8cb4,0x94d4,0x9515,0x9515,0x94f5,0x9d36,0xa597,0xadb7,0xa597,0xadd8,0xadb8,0xa577,0xadb8,0xadd8,0xadf8,0xb619,0xbe39,0x4208,0x2124,0x2945,0x424a,0x6b90,0x73f1,0x9cf6,0x9cd2,0x39a6,0x2945,0x2104,0x20e4,0x20e3,0x18e3,0x2104,0x2124,0x20e4,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x2104,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x20e3,0x20e4,0x2104,0x20e3,0x18e3,0x18c3,0x18c3,0x1082,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0861,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2945,0x3165,0x3165,0x2965,0x3185,0x3185,0x3186,0x3186,0x3165,0x31a6,0x4a28,0x83ef,0xb595,0x6b2d,0x4a6a,0x52ab,0xadd8,0xb619,0xadd8,0xadd8,0xa597,0x9d77,0xa556,0xa597,0xa576,0x9d35,0x9d15,0x9d15,0x9d36,0x9d15,0x8cd4,0x8cf4,0x94d4,0x94f4,0x9d15,0x94d4,0x8cb4,0x9515,0x94d4,0x8cb4,0x8c93,0x8cd4,0x8cb4,0x84b3,0x8493,0x8493,0x94d4,0x94f4,0x94f4,0x94f4,0x8c93,0x8c93,0x8493,0x7c52,0x8452,0x8472,0x8473,0x84b3,0x7c52,0x94f4,0x8472,0x8452,0x7c11,0x8473,0x8452,0x7c31,0x9515,0x8cd4,0x7411,0x73f0,0x7431,0x7c52,0x7c11,0x73f1,0x7411,0x7c31,0x7411,0x8492,0x7c11,0x8472,0x73f0,0x73f0,0x73f0,0x7c11,0x7c31,0x7c31,0x7410,0x73f0,0x73f0,0x73f0,0x73f0,0x6baf,0x7c10,0x73d0,0x6baf,0x73d0,0x7c11,0x73f0,0x73d0,0x73f0,0x6b8f,0x634d,0x638e,0x9d34,0x7c30,0x6b8f,0x6b8f,0x6b8f,0x6b6e,0x73cf,0x73f0,0x6bae,0x6bae,0x73af,0x73cf,0x73cf,0x6baf,0x73cf,0x6bcf,0x638e,0x636e,0x6b8e,0x632d,0x630d,0x6b6e,0x5b0c,0x52eb,0x52eb,0x52eb, +0x5aeb,0x630c,0x630c,0x62ec,0x6b0d,0x6b4d,0x6b4e,0x6b4d,0x6b6d,0x7bef,0x6b8e,0x5b2c,0x5b0c,0x5aeb,0x5acb,0x5acc,0x630d,0x6b6d,0x6b8e,0x73ae,0x73cf,0x73cf,0x6b8e,0x6b4d,0x6b6d,0x738e,0x73ae,0x738e,0x73af,0x73cf,0x73cf,0x73cf,0x73cf,0x6baf,0x6baf,0x73d0,0x6bcf,0x6b8e,0x6b6e,0x634d,0x634e,0x6b6e,0x6b8e,0x6b8e,0x6b8e,0x73ae,0x73af,0x73af,0x738f,0x6baf,0x6bb0,0x73f0,0x7430,0x73f0,0x7bf0,0x8451,0x7c31,0x7c10,0x7bf0,0x7c10,0x7c10,0x7c10,0x7c31,0x7c11,0x7c11,0x7c31,0x7c31,0x8452,0x7c51,0x7411,0x7c31,0x7c11,0x7c31,0x7c52,0x7c52,0x8452,0x8472,0x8c93,0x8c93,0x8472,0x8472,0x8472,0x8472,0x8c93,0x94d4,0x94d4,0x84b3,0x8472,0x8473,0x8493,0x8472,0x8473,0x8cb3,0x8cd4,0x84b3,0x8cd4,0x94f5,0x8cd4,0x8cb4,0x9515,0x9515,0x94d4,0x94f5,0xa556,0xad97,0x9d56,0xa597,0xa577,0x9d36,0xa556,0xadb7,0xadd8,0xb619,0xbe39,0xc69b,0x4208,0x2104,0x2946,0x4a6b,0x6b6f,0x7c11,0xad78,0xa534,0x3185,0x20e4,0x18c3,0x18c3,0x18a3,0x18a2,0x18c3,0x18c3,0x18c3,0x18a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x10a2,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2124,0x18c3,0x20e3,0x18e3,0x20e4,0x2924,0x39a6,0x9cd3,0xce39,0x632d,0x4a6b,0x52cc,0xadd8,0xb5f9,0xadb7,0xb5f8,0xa597,0x9d76,0xa576,0x9d56,0x9d56,0x9d15,0x9d36,0x9d36,0x9d15,0xa576,0x94f4,0x9535,0x9535,0x94f4,0x94f5,0x94f5,0x8c93,0x8493,0x8cb4,0x8cd4,0x8cb3,0x8cd4,0x94f4,0x94f4,0x8493,0x8452,0x8473,0x8473,0x8493,0x8cb3,0x8cb3,0x8452,0x8492,0x8472,0x8c92,0x8cd3,0x8cb3,0x8493,0x7c32,0x8cb3,0xa556,0x8431,0x7c11,0x8c93,0x8472,0x7c11,0x7c32,0x8472,0x7c31,0x7c11,0x7c52,0x7c72,0x7c52,0x73f0,0x7411,0x73f0,0x7410,0x8472,0x7c52,0x8cd4,0x6bb0,0x73f0,0x6bcf,0x7410,0x7c31,0x7411,0x73f0,0x7410,0x73f0,0x73f0,0x73cf,0x73f0,0x7c51,0x73f0,0x6baf,0x73d0,0x7c31,0x73f0,0x6b8f,0x6b8f,0x6b8f,0x6bae,0x6bae,0x6baf,0x6b8e,0x73d0,0x6baf,0x6bcf,0x6b8f,0x73cf,0x73d0,0x73f0,0x636d,0x6b8e,0x6baf,0x6bcf,0x6bcf,0x73cf,0x73cf,0x6b8e,0x6b6e,0x634d,0x632d,0x634d,0x632d,0x5b0c,0x52ec,0x52ec,0x52ec, +0x630c,0x5aeb,0x62ec,0x630c,0x6b4d,0x736e,0x6b4d,0x634d,0x7bef,0x6b8e,0x5b0c,0x632d,0x632d,0x5aec,0x5aeb,0x62ec,0x6b6e,0x6b4d,0x6b6d,0x738e,0x6b8e,0x6b8e,0x6b8e,0x6b6d,0x6b6e,0x738e,0x73af,0x73cf,0x73af,0x73cf,0x73cf,0x73af,0x73cf,0x6baf,0x6b8e,0x6bae,0x73cf,0x6baf,0x6b6e,0x6b6e,0x634e,0x6b6e,0x6b6e,0x6b8e,0x6b8e,0x73af,0x73af,0x6b8f,0x73af,0x73af,0x73af,0x7bf0,0x8471,0x7c31,0x7c10,0x7c11,0x7c10,0x73f0,0x73f0,0x7bf0,0x8431,0x8472,0x7c31,0x7c31,0x8432,0x8452,0x7c31,0x7c31,0x7c31,0x8472,0x8452,0x7c31,0x7c52,0x7c52,0x7c31,0x7c31,0x8472,0x8493,0x8c93,0x8452,0x8452,0x8472,0x8472,0x8c93,0x94b4,0x94d4,0x8cd4,0x84b3,0x8472,0x7c72,0x8472,0x94d4,0x8cb3,0x8cd4,0x8cf4,0x8cd4,0x8cb3,0x8cd4,0x8cd4,0x94f4,0x94f4,0x94d4,0x9d15,0x9d56,0xadb8,0xa597,0xa556,0x9d36,0xa557,0xadb8,0xadd8,0xb5f8,0xbe3a,0xce9b,0xbe3a,0x39e8,0x2104,0x2945,0x4a6b,0x634f,0x8433,0xbdfa,0xad54,0x3185,0x20e3,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x18a3,0x2104,0x3186,0xad75,0xce59,0x62ed,0x4a8b,0x5aec,0xadb8,0xadb8,0xb5f9,0xadd8,0xa597,0x9d56,0xa577,0x9d36,0x9d36,0xa556,0xa556,0x9d15,0x9515,0x9d35,0x9d35,0x9535,0x9d36,0x9d16,0x94d5,0x94d4,0x94d4,0x8cb4,0x8cb3,0x8cb4,0x8493,0x8cb3,0x8cf4,0x94f4,0x94d4,0x8c93,0x73f1,0x7c32,0x8cb3,0x8493,0x8493,0x8493,0x8493,0x8472,0x8473,0x8472,0x8492,0x7c52,0x8472,0x8452,0x9d35,0x94f4,0x7c11,0x7c31,0x7c52,0x7c31,0x7c31,0x7c31,0x7c11,0x8472,0x7c31,0x7411,0x7c31,0x73f0,0x73f0,0x7c31,0x7c11,0x8c72,0x8c93,0x8452,0x6bb0,0x6bb0,0x6baf,0x73f0,0x7410,0x73f0,0x6baf,0x73f0,0x73cf,0x7c31,0x73f0,0x6baf,0x7411,0x7410,0x73cf,0x73f0,0x73f0,0x73af,0x6b8f,0x6b8f,0x6b8e,0x6bcf,0x6bcf,0x73f0,0x6bcf,0x73f0,0x6bd0,0x73d0,0x6baf,0x6baf,0x73f0,0x73f0,0x6b8e,0x634d,0x73cf,0x6baf,0x6bcf,0x6baf,0x73f0,0x73af,0x6b4e,0x634d,0x636e,0x634d,0x634d,0x5b0d,0x5aec,0x52ec,0x52cb, +0x5b0c,0x630c,0x632c,0x6b4d,0x6b6d,0x6b6d,0x6b6d,0x7bef,0x7bcf,0x632d,0x630c,0x632d,0x632c,0x630c,0x632c,0x6b6d,0x7c10,0x738e,0x632d,0x6b4d,0x6b4d,0x6b6d,0x6b8e,0x6b6d,0x6b4e,0x738e,0x7bef,0x73cf,0x6bae,0x73ae,0x73ae,0x73af,0x73cf,0x73cf,0x6b6d,0x6b8e,0x6b8f,0x6baf,0x6b8e,0x6b6e,0x636e,0x636e,0x636e,0x636e,0x6bae,0x73af,0x6b6e,0x6baf,0x73cf,0x73af,0x738e,0x7bcf,0x8411,0x7c10,0x7c11,0x7c11,0x7c11,0x7c31,0x7c10,0x7bf0,0x7c31,0x8432,0x7c11,0x8431,0x8432,0x8452,0x7c31,0x7c11,0x8452,0x8452,0x8452,0x8452,0x8473,0x8493,0x8493,0x8493,0x8452,0x8493,0x8cb3,0x8493,0x8472,0x8492,0x8c93,0x8cb3,0x8cb4,0x9cd4,0x9515,0x8cb3,0x8493,0x8472,0x8cb3,0x94f4,0x8cd4,0x94d4,0x94f4,0x8cd4,0x8cd4,0x9d35,0x9515,0x8cd4,0x9515,0x94f5,0x9d15,0xa576,0xadb7,0xad97,0xa556,0x9d36,0xad98,0xadd8,0xb5f8,0xb5f9,0xcebb,0xbe39,0xadb8,0x39c7,0x2124,0x2105,0x4a6b,0x6b70,0x8c94,0xd6bc,0xad34,0x2965,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x3186,0xb596,0xc5f8,0x5aac,0x52cc,0x5b2d,0xadb7,0xadd8,0xadd8,0xadb7,0xa576,0xa597,0xadd8,0xa576,0xa576,0xa576,0x9d35,0x9d15,0x94f4,0x9d35,0xa576,0xa556,0xa577,0xa557,0x94f5,0x94f4,0x94d4,0x94f5,0x8cb4,0x8473,0x8473,0x8473,0x8493,0x8cb4,0x94d4,0x8c93,0x7c11,0x7c52,0x8cd4,0x8cb3,0x7c52,0x8493,0x8cd4,0x8473,0x7bf1,0x8452,0x7c32,0x7c72,0x7c72,0x8472,0x7c52,0x8c93,0x7c31,0x7411,0x7411,0x7c31,0x7411,0x7411,0x7411,0x8472,0x7c31,0x73f0,0x73f0,0x6bd0,0x73f0,0x7c31,0x7410,0x8451,0x8cb3,0x73d0,0x73f0,0x73d0,0x6baf,0x73f0,0x7410,0x73d0,0x6baf,0x6bd0,0x6baf,0x7411,0x73f1,0x6baf,0x73d0,0x7411,0x6bd0,0x6bcf,0x73d0,0x6baf,0x6baf,0x6baf,0x6baf,0x6b8e,0x73f0,0x6bf0,0x6bcf,0x6bcf,0x73f0,0x73d0,0x6baf,0x636e,0x6b8f,0x6baf,0x636e,0x5b0c,0x6bcf,0x73cf,0x6b8e,0x6bae,0x73cf,0x73cf,0x636e,0x634d,0x634d,0x5b0c,0x5b0c,0x52cb,0x52cc,0x52ab,0x5aec, +0x630c,0x632c,0x6b4d,0x6b4d,0x632c,0x6b8d,0x7c0f,0x7bef,0x6b4d,0x5b0c,0x632c,0x630c,0x632c,0x632d,0x632d,0x6b4e,0x8430,0x73ae,0x5aec,0x632c,0x632d,0x6b4d,0x6b6e,0x6b4d,0x6b4d,0x6b6d,0x7bf0,0x7bf0,0x73af,0x73cf,0x73af,0x738e,0x73cf,0x73af,0x636d,0x6b6e,0x6b8f,0x73af,0x638e,0x636d,0x634d,0x6b6d,0x6b8e,0x6b6e,0x6bae,0x73cf,0x6baf,0x73cf,0x73cf,0x73af,0x73af,0x73cf,0x73cf,0x8431,0x8451,0x7c31,0x7c51,0x7c51,0x7c10,0x8411,0x73b0,0x73d0,0x7c31,0x7c11,0x7c31,0x7c32,0x7c31,0x7c32,0x8493,0x8452,0x8472,0x8c73,0x8472,0x8c93,0x8c93,0x8cb3,0x8473,0x8cb3,0x8cb3,0x8cb3,0x8473,0x94d4,0x94f4,0x8cd3,0x94f4,0x94f4,0x94f4,0x8cb3,0x8493,0x8cd4,0x9535,0x9d76,0x9515,0x8cb4,0x94f5,0x94f4,0x94f4,0x9d76,0x9d15,0x8cd4,0x9d36,0x94f5,0x9d15,0xadb7,0xa576,0xadb7,0xad97,0xa597,0xa597,0xb5d8,0xadb7,0xc67a,0xbe5a,0xadd8,0xb5f9,0x39e8,0x2924,0x2104,0x528c,0x6b90,0x9d16,0xef7e,0xa534,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x3186,0xad55,0xbdb7,0x5acc,0x5b0d,0x632d,0xa597,0xa5b8,0xadb8,0xadd8,0xa5b7,0xadd8,0xa597,0x9d76,0xadb8,0x9d56,0x9d36,0xa576,0x9d35,0x9d55,0xa576,0xad97,0xb5d8,0xa5b7,0x9d56,0x8cf4,0x8cb4,0x8cb4,0x8cb4,0x8493,0x7c52,0x8493,0x8cb3,0x8492,0x8c93,0x8c93,0x8473,0x8cb4,0x8cd4,0x8493,0x7c52,0x7c52,0x8492,0x8cb3,0x8c92,0x8c92,0x7c72,0x7c52,0x7c52,0x7c31,0x7c11,0x7412,0x7411,0x7411,0x73f0,0x7411,0x73f1,0x6bd0,0x7411,0x7c11,0x73d0,0x73f0,0x7410,0x73f0,0x7410,0x7410,0x7410,0x7c31,0x7c51,0x6baf,0x7410,0x7410,0x73d0,0x73f0,0x73d0,0x73f0,0x73cf,0x73f0,0x7411,0x7c31,0x7c31,0x7411,0x7c11,0x7411,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x7c10,0x73f0,0x73d0,0x73d0,0x73f0,0x6bd0,0x73d0,0x73f1,0x7c11,0x73f0,0x6bcf,0x6baf,0x638f,0x6baf,0x6bcf,0x6baf,0x7c10,0x73cf,0x73ef,0x6baf,0x73cf,0x6baf,0x6b8f,0x6b8e,0x634e,0x632d,0x5b0c,0x5aec,0x5b0c,0x632d, +0x632c,0x632c,0x632c,0x630c,0x6b4d,0x73cf,0x73cf,0x6b6d,0x632c,0x5b0c,0x632c,0x5b0c,0x632c,0x630c,0x632d,0x6b4d,0x8c51,0x738e,0x630c,0x630c,0x630c,0x632d,0x632c,0x632c,0x6b4d,0x738e,0x73cf,0x73cf,0x73af,0x73af,0x736e,0x738f,0x73af,0x6b8e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b8e,0x6b6e,0x632d,0x6b6e,0x6b6e,0x6b6e,0x73ce,0x73cf,0x6bcf,0x6bcf,0x6baf,0x6baf,0x73cf,0x73af,0x73d0,0x7c51,0x7c51,0x7410,0x7c31,0x7410,0x7c10,0x7bf0,0xa534,0xb5b6,0x8471,0x73f0,0x8c93,0x94f4,0x8472,0x7c72,0x8492,0x7c72,0x8493,0x8cd4,0x8493,0x8492,0x8cb3,0x8cb3,0x8c73,0x8cb3,0x94d4,0x8cb3,0x8c73,0x9cf5,0x9d15,0x8cb3,0x9514,0x9d15,0x9514,0xa576,0x9d55,0xa576,0xadb7,0x9d35,0x8c93,0x8cb3,0x94d4,0x94f4,0x8cf4,0x9515,0x8cd4,0x9d15,0x9515,0x8cd4,0x9d15,0xa5b7,0xa596,0xadd7,0xa597,0xadb7,0xadd8,0xadd8,0xbe5a,0xc67a,0xadd8,0xb5f9,0xb61a,0x39c8,0x2924,0x2104,0x52ac,0x73b1,0xad78,0xffdf,0xa513,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18e3,0x39a6,0xa514,0xb576,0x630d,0x634e,0x6b6e,0xadd8,0xb5f8,0xb619,0xadd8,0xb5f8,0xadd7,0xadd8,0xadd8,0xa5b7,0xadb7,0xa597,0xadb7,0xadd7,0xad97,0xb5d7,0xadb7,0xadb8,0xad97,0xadb7,0x9515,0x9d35,0x9515,0x9515,0x9515,0x9515,0x9515,0x8cd4,0x8cf4,0x9515,0x8493,0x8c93,0x94f4,0x9d15,0x94d4,0x8cb4,0x8cb4,0x94f5,0x94f5,0x9515,0x8cb4,0x8cd4,0x8473,0x8452,0x8c93,0x8452,0x7c32,0x8451,0x8451,0x7c31,0x7c31,0x8451,0x8452,0x8451,0x8451,0x8431,0x7c31,0x8451,0x8472,0x8451,0x7bf0,0x7c11,0x73f0,0x7c31,0x7c11,0x73f0,0x73d0,0x73d0,0x7bf0,0x8411,0x7bf0,0x73cf,0x73cf,0x73cf,0x7c11,0x7bf0,0x6baf,0x73d0,0x6b8f,0x6b8e,0x738e,0x738e,0x6b6e,0x6b6f,0x6b8f,0x6b8e,0x6b8f,0x636e,0x634e,0x634e,0x634d,0x634d,0x634d,0x634d,0x5b2d,0x5b2d,0x5aed,0x5b0d,0x5b0d,0x5b0c,0x5b0c,0x5b0c,0x5b0c,0x5aec,0x5acc,0x52ab,0x52ab,0x52ab,0x52ab,0x52ab,0x528a,0x4a8a,0x4a8a,0x4a8a, +0x6b6e,0x6b6d,0x634d,0x6b2d,0x6b6e,0x6b6e,0x6b6d,0x6b8d,0x6b6d,0x634d,0x632d,0x634d,0x632d,0x6b4d,0x6b4d,0x6b6e,0x8431,0x6b6e,0x5aec,0x630c,0x632c,0x634d,0x632c,0x632d,0x6b6e,0x6b6e,0x7bf0,0x73cf,0x6bae,0x73af,0x6b8e,0x6b8e,0x6b8e,0x636d,0x636e,0x6b6e,0x6b4e,0x6b6e,0x6b6e,0x6b6e,0x634d,0x6b6e,0x6b6e,0x73af,0x73cf,0x73ef,0x73cf,0x73cf,0x73cf,0x73cf,0x6b8e,0x73cf,0x7c11,0x7c31,0x7c31,0x7411,0x7c11,0x7c10,0x7c11,0x7bd0,0xad96,0xad75,0x8471,0x8cb3,0x8452,0x8452,0x7c31,0x7c52,0x8472,0x8473,0x8473,0x8493,0x8493,0x8452,0x8c93,0x8c73,0x8c72,0x8c93,0x8c73,0x8472,0x8452,0x8c73,0x8c73,0x8c93,0x94d4,0x94f4,0x9d35,0xa576,0x9d14,0x94d3,0x94f4,0x94d3,0x94f4,0x94f4,0x94f4,0x8cf4,0x8cd4,0x94f4,0x9d15,0x9cf5,0x94d4,0x94f5,0x9d15,0xa556,0x9d56,0xa576,0xad77,0xadb8,0xad97,0xb5b8,0xc63a,0xadb8,0xadb8,0xadd8,0xadb8,0x31a7,0x2124,0x18e4,0x52ac,0x7bf2,0xbdfa,0xffff,0x9cd2,0x3165,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x2104,0x39e7,0x9492,0xa4d4,0x630d,0x6b8f,0x738f,0x8432,0x7bf1,0x8432,0x7bf1,0x7bf1,0x7bd1,0x73b0,0x73b0,0x6b6f,0x6b90,0x73b0,0x7390,0x73b0,0x738f,0x7370,0x7390,0x7370,0x634f,0x6b4e,0x6b6e,0x6b6e,0x634e,0x6b6f,0x634e,0x5b2e,0x5b2d,0x5b0d,0x632d,0x632d,0x5aed,0x5aed,0x5aec,0x5aed,0x52cc,0x52cc,0x52ac,0x5acd,0x5acd,0x4a8c,0x4aac,0x4a8b,0x4aac,0x52ac,0x52ac,0x4a8b,0x4a6b,0x424a,0x4a6a,0x424a,0x4229,0x4249,0x424a,0x4a6a,0x424a,0x424a,0x424a,0x4229,0x424a,0x4a2a,0x4a2a,0x4209,0x39c8,0x4229,0x4209,0x39c8,0x31a8,0x39c8,0x39c8,0x39c9,0x39c8,0x39c8,0x31a8,0x31a8,0x2967,0x39c8,0x39c8,0x31a7,0x39c8,0x3187,0x3187,0x3187,0x3187,0x3167,0x39a7,0x3166,0x31a7,0x2124,0x2986,0x2125,0x2945,0x2945,0x2925,0x2945,0x3187,0x2105,0x3167,0x2146,0x2125,0x2966,0x39c7,0x2966,0x18c3,0x3186,0x2946,0x31c7,0x2946,0x2125,0x2966,0x31a7,0x2945,0x31a6,0x39c7,0x3166, +0x4a6a,0x4a6a,0x4a4a,0x4a49,0x4a49,0x4249,0x4a4a,0x4a6a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4249,0x4249,0x528a,0x4a6a,0x4229,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x4229,0x4a4a,0x4a4a,0x4a4a,0x4a8b,0x4a8a,0x4a6a,0x4a6a,0x4a4a,0x4229,0x4229,0x3a09,0x424a,0x4a4a,0x4a4a,0x424a,0x424a,0x4a6b,0x4a6a,0x4249,0x4a6a,0x4a8b,0x4a8a,0x4a8a,0x4a6a,0x4a8b,0x52ab,0x52ab,0x4a8b,0x52cb,0x52cc,0x52ab,0x4a8b,0x4a8b,0x528b,0x52ab,0x52ab,0x52ac,0x526c,0x422a,0x528b,0x52ac,0x4a6b,0x4a8c,0x52ac,0x52ac,0x52ac,0x52ac,0x4a8b,0x52ac,0x4a8b,0x528b,0x4a8b,0x4a8b,0x4a8b,0x4aab,0x528b,0x4a8b,0x528c,0x528c,0x4a8b,0x52ac,0x52ac,0x52ac,0x52ac,0x528c,0x4a6b,0x528c,0x52ad,0x5acd,0x52cc,0x4a8c,0x52cd,0x52ac,0x4a6b,0x4a6b,0x526b,0x4a4b,0x424b,0x4a6c,0x526c,0x4a4b,0x4a6c,0x526c,0x528c,0x524c,0x4a2b,0x528c,0x526c,0x526c,0x4a4c,0x524c,0x4a0c,0x2945,0x2944,0x18c3,0x52ac,0x8412,0xce3b,0xffff,0x9490,0x2964,0x2104,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x18a3,0x18e3,0x2104,0x39c7,0x8410,0x9431,0x5aec,0x738f,0x6b6e,0x2947,0x3187,0x39c8,0x3187,0x1927,0x2147,0x3188,0x3188,0x2926,0x2126,0x2967,0x2967,0x3168,0x2967,0x2946,0x3187,0x2966,0x2966,0x31a8,0x3a09,0x3187,0x2966,0x39e8,0x39e8,0x4a6a,0x4229,0x4249,0x3a08,0x31a6,0x39c7,0x39e8,0x3a08,0x2987,0x31a8,0x31a7,0x3a08,0x3a08,0x31c7,0x31e8,0x3208,0x3a28,0x4228,0x4208,0x4229,0x4229,0x4208,0x39c7,0x39e8,0x39c7,0x39e7,0x4228,0x39e7,0x3a07,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4208,0x4a69,0x4a8a,0x31c7,0x3a08,0x4229,0x4249,0x4208,0x4208,0x4208,0x4228,0x4228,0x4229,0x4228,0x4249,0x39c8,0x39e8,0x4229,0x39c7,0x4249,0x3a08,0x39e8,0x4228,0x4207,0x4208,0x4209,0x39e8,0x4228,0x3a07,0x4228,0x3a08,0x39e8,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x3a08,0x3a07,0x31c7,0x4228,0x4208,0x39e7,0x31c7,0x39e7,0x4208,0x3a08,0x31e7,0x31e7,0x31c7,0x4269,0x4269,0x4a49,0x39a7,0x39c7, +0x2165,0x2166,0x2146,0x2966,0x3187,0x3187,0x2966,0x3187,0x2966,0x2146,0x31a7,0x2986,0x2145,0x2986,0x39e8,0x31c7,0x39e8,0x2966,0x2986,0x2986,0x2986,0x2966,0x31c7,0x39c8,0x2986,0x3a08,0x2986,0x29a7,0x3a08,0x2987,0x39c8,0x31a7,0x31c8,0x3a08,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x31e8,0x31c7,0x31a7,0x31c8,0x31c8,0x3a08,0x31a7,0x2986,0x31a7,0x31c8,0x31e8,0x3a29,0x3a49,0x3a08,0x39e8,0x39c8,0x31c7,0x31a7,0x39c8,0x39e8,0x4209,0x4a4a,0x4229,0x39e8,0x31a7,0x31c8,0x4229,0x3a09,0x39c7,0x4229,0x4209,0x3a08,0x31e8,0x3a08,0x4209,0x4209,0x4229,0x4249,0x4a6a,0x4a6a,0x4229,0x4229,0x4a4a,0x4208,0x528a,0x4a49,0x4a49,0x4a29,0x4229,0x4a49,0x4229,0x4a49,0x528a,0x4249,0x3a09,0x4a6a,0x4a6a,0x4208,0x39c7,0x41e9,0x4a49,0x4249,0x39e8,0x39c8,0x4a29,0x4a6a,0x4a6a,0x4229,0x4229,0x4229,0x4208,0x4249,0x4a6a,0x4a4a,0x4a4a,0x526a,0x2125,0x2945,0x18c3,0x52ac,0x8412,0xce5b,0xffff,0x8c2e,0x2944,0x2104,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a3,0x18c3,0x20e4,0x2124,0x31a6,0x7bcf,0x8c10,0x5aec,0x738f,0x6b6e,0x4a69,0x528a,0x4228,0x4228,0x4228,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4228,0x4229,0x4249,0x4208,0x3a08,0x4207,0x4248,0x4248,0x4249,0x4229,0x4208,0x4249,0x4a6a,0x4208,0x4a6a,0x4249,0x3a08,0x4a49,0x3a08,0x39e8,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x4228,0x3a08,0x3a08,0x3a28,0x3a09,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4a49,0x3a08,0x39c7,0x4208,0x4269,0x4228,0x4208,0x4a49,0x3a08,0x39e7,0x39e7,0x39e7,0x4229,0x4208,0x39e7,0x3a07,0x4228,0x39e8,0x31a7,0x39e8,0x39c7,0x4228,0x4228,0x39e8,0x39c7,0x3a08,0x31c7,0x39c7,0x39c7,0x39c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x39e7,0x31c7,0x3a28,0x3a07,0x3a07,0x39e8,0x39e8,0x31c7,0x31c7,0x39c7,0x3186,0x31c7,0x31c7,0x31e7,0x31e7,0x31e7,0x39e7,0x39c7,0x39c7,0x39c7,0x39e7,0x39c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x31c6,0x4a69,0x39e7,0x3186, +0x29a6,0x29a6,0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x39e7,0x29a6,0x29a6,0x31c7,0x31c7,0x31a6,0x31a6,0x3186,0x39c7,0x39e8,0x39e8,0x4249,0x3a28,0x29a6,0x31c7,0x4229,0x3a28,0x39e7,0x3a07,0x4248,0x4248,0x4a69,0x3a08,0x4249,0x3a08,0x3a08,0x4228,0x39e8,0x39c7,0x31c7,0x39e7,0x3a07,0x4228,0x39e7,0x39e8,0x4229,0x4228,0x31c7,0x31c7,0x3a08,0x39e8,0x4228,0x4228,0x3a08,0x3a08,0x3a08,0x4208,0x3a08,0x3a08,0x4249,0x3a08,0x31c7,0x39e7,0x4248,0x4248,0x4249,0x4228,0x3a28,0x39e8,0x3a08,0x3a07,0x4228,0x4a49,0x4a49,0x3a28,0x39e8,0x4229,0x4229,0x4249,0x52aa,0x4269,0x4249,0x4a8a,0x4249,0x4228,0x4229,0x3a08,0x4208,0x4a49,0x4a49,0x5acb,0x4249,0x3a08,0x4a69,0x4a69,0x3a08,0x4229,0x4229,0x3a28,0x3a28,0x4a89,0x4a69,0x4a69,0x4a89,0x4a49,0x4229,0x528a,0x528a,0x52ab,0x4a6a,0x4a49,0x4a49,0x4228,0x528a,0x4a8a,0x4a6a,0x526a,0x4a69,0x2124,0x2945,0x18a3,0x52ac,0x8c33,0xde9c,0xffff,0x842e,0x2944,0x2124,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a2,0x18a3,0x18a3,0x18c3,0x18e3,0x2103,0x2124,0x3186,0x7bcf,0x83f0,0x5aec,0x738f,0x6b4d,0x4a49,0x3a08,0x3a08,0x4a69,0x4228,0x4249,0x4228,0x31c7,0x39e8,0x4229,0x3a29,0x3a08,0x39e7,0x3a07,0x3a28,0x4a69,0x4208,0x39e8,0x39e8,0x4209,0x39e8,0x4229,0x3a28,0x3a08,0x4229,0x39c7,0x4249,0x4228,0x39e7,0x4208,0x3a08,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31c8,0x31e8,0x3a09,0x3a09,0x39e9,0x31a7,0x39e8,0x3a28,0x3a08,0x3a07,0x3a08,0x4228,0x4229,0x3a08,0x3a07,0x39e7,0x4228,0x4228,0x3a07,0x4208,0x3a28,0x39e7,0x39e7,0x3a08,0x3a08,0x39e7,0x4229,0x39e8,0x3a08,0x4228,0x4249,0x39e8,0x39e7,0x39e8,0x3a08,0x4249,0x3a08,0x31a6,0x39e8,0x31a7,0x39c7,0x39c6,0x39c7,0x39e7,0x31c7,0x3a07,0x31c7,0x39e8,0x3a08,0x39e8,0x4228,0x39e7,0x39c7,0x39e8,0x31a6,0x31c7,0x39e7,0x31c7,0x31e7,0x31c7,0x4249,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39c7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x3186,0x39c7,0x39e7,0x39c7,0x39e7, +0x3186,0x31a6,0x31a6,0x2966,0x2986,0x2986,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x29a6,0x31c7,0x31a6,0x3186,0x4a49,0x4208,0x3a08,0x4228,0x3a28,0x3207,0x39e7,0x3a08,0x31a6,0x39e7,0x3a28,0x3a08,0x31c7,0x4249,0x4229,0x4269,0x4a8a,0x31c7,0x4228,0x3a08,0x31c6,0x31a6,0x4249,0x4228,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e8,0x31c7,0x3a08,0x39e8,0x3a08,0x39e7,0x39e7,0x39e8,0x39e7,0x31c7,0x3a08,0x4a69,0x3a08,0x3a07,0x3a08,0x31e8,0x3a08,0x3a08,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4228,0x4208,0x4249,0x4229,0x4249,0x4228,0x4228,0x4a69,0x3a08,0x3a28,0x3a28,0x4228,0x3a08,0x4209,0x4229,0x4a49,0x4229,0x4a69,0x4a69,0x4228,0x4229,0x4a69,0x4228,0x39e8,0x39e8,0x4269,0x4249,0x4249,0x4a8a,0x5289,0x4a69,0x4a8a,0x528a,0x4a6a,0x4a8a,0x4249,0x4aaa,0x4269,0x4a8a,0x4289,0x3a28,0x4249,0x52cb,0x52ab,0x52ab,0x4a8b,0x2104,0x2945,0x18a3,0x52cd,0x8c54,0xdedc,0xffff,0x840d,0x2944,0x2945,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a3,0x18c3,0x20e3,0x2103,0x2124,0x3186,0x7bcf,0x8c10,0x5aec,0x738f,0x6b4d,0x4229,0x4208,0x4a6a,0x4228,0x39e7,0x31c7,0x31e7,0x31e7,0x3a08,0x4249,0x4229,0x4228,0x3a28,0x3a08,0x4249,0x4a8a,0x39e8,0x3a08,0x4249,0x39e8,0x4208,0x31e7,0x39e7,0x4229,0x4a49,0x4208,0x3a08,0x4a8a,0x4229,0x39e8,0x4208,0x39e8,0x39e8,0x39e7,0x39c7,0x4249,0x31c7,0x39e8,0x4a49,0x3a08,0x3a08,0x31a7,0x3a08,0x4249,0x4228,0x3a08,0x31c7,0x4a69,0x3a08,0x31e7,0x31a6,0x4249,0x4249,0x4228,0x31e7,0x4a69,0x4248,0x3a08,0x4228,0x4a69,0x52aa,0x3a08,0x4228,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x4228,0x31e7,0x3a08,0x3a08,0x39e7,0x39c7,0x31a7,0x4228,0x39e7,0x31a7,0x39e7,0x3a07,0x4228,0x4248,0x3a08,0x39e8,0x31c7,0x39c7,0x39e7,0x4228,0x31a7,0x39e7,0x39e7,0x31c7,0x4228,0x3a07,0x3a08,0x4249,0x31a7,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x3a07,0x39e7,0x31c7,0x39e7,0x39e7,0x31c7,0x4208, +0x2945,0x29a6,0x31c7,0x31c8,0x31c7,0x31c7,0x31c7,0x31a6,0x39e8,0x39c7,0x31c7,0x3a08,0x39e7,0x31a6,0x4208,0x4249,0x31e7,0x39e7,0x31c7,0x3a08,0x4229,0x4208,0x4229,0x31a7,0x39e7,0x4228,0x31a7,0x39c8,0x4209,0x4228,0x4a49,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x31c7,0x39e7,0x39e7,0x4249,0x4249,0x3a08,0x31e7,0x39e8,0x3a08,0x39e8,0x39e8,0x4a6a,0x4a69,0x4249,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e7,0x4208,0x4229,0x3a08,0x4228,0x4228,0x4229,0x4228,0x4208,0x3a28,0x4269,0x4249,0x4a8a,0x4249,0x3a08,0x39e8,0x4a6a,0x4a69,0x4208,0x4248,0x4a69,0x52aa,0x4a69,0x4228,0x4208,0x4208,0x4249,0x4a6a,0x4249,0x3a08,0x4a8a,0x4208,0x4aaa,0x52aa,0x4228,0x4228,0x4a69,0x528a,0x4269,0x4a8a,0x52ab,0x4229,0x4249,0x528a,0x528a,0x4208,0x4a6a,0x426a,0x2104,0x2925,0x18a3,0x5aed,0x9494,0xdedc,0xffff,0x7bed,0x2124,0x2124,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x18a2,0x18a2,0x18a2,0x18c3,0x18c3,0x18e3,0x2104,0x2104,0x3165,0x8410,0x9451,0x632d,0x7bf0,0x6b4d,0x3a08,0x4a8a,0x4a69,0x3a07,0x31e7,0x3a08,0x3a08,0x4228,0x3a08,0x4208,0x39e8,0x4208,0x39e8,0x39e8,0x39e8,0x3a08,0x39e8,0x3a07,0x4a69,0x3a08,0x3a08,0x4249,0x39e7,0x39e8,0x4228,0x4229,0x3a08,0x3a08,0x3a08,0x4229,0x39e7,0x39e8,0x39a7,0x31a6,0x31e7,0x3a28,0x3208,0x31c7,0x39e7,0x39e7,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x3a07,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x4208,0x4208,0x4228,0x4208,0x4208,0x39e7,0x4248,0x4a49,0x39e7,0x3a08,0x4208,0x39e7,0x4248,0x3a08,0x39e7,0x3a08,0x3a07,0x39e7,0x4228,0x31c7,0x3a07,0x4228,0x31a6,0x3a08,0x4228,0x4208,0x4208,0x39e8,0x4228,0x39e7,0x31c7,0x4229,0x3a08,0x39c7,0x39e7,0x4208,0x4208,0x3a28,0x3a08,0x39e8,0x4208,0x3a08,0x31c6,0x39e8,0x39c8,0x3a08,0x39c7,0x4208,0x4208,0x39e8,0x4209,0x31e7,0x3a07,0x4228,0x3a07,0x4208,0x4208,0x31a6,0x39e7,0x3186, +0x39e7,0x29a6,0x2166,0x31c7,0x31a6,0x31c6,0x31a7,0x31c7,0x31a7,0x31c8,0x31c7,0x29a6,0x29a6,0x39c7,0x4208,0x4228,0x29a6,0x31a7,0x31c7,0x31a7,0x41e8,0x4a29,0x31a7,0x3186,0x39e7,0x4228,0x39e7,0x39c7,0x39e8,0x4a29,0x4209,0x4209,0x4a6a,0x39e7,0x39e7,0x31c7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x4228,0x4228,0x31e8,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x3a28,0x3a08,0x39e7,0x4228,0x39e8,0x4229,0x4229,0x39e7,0x4229,0x4249,0x4228,0x4a49,0x4228,0x4a49,0x4a49,0x3a28,0x3a07,0x39e7,0x4228,0x4229,0x3a28,0x39e7,0x3a28,0x4228,0x4208,0x39e7,0x4208,0x3a08,0x3a08,0x3a08,0x3a08,0x3a08,0x4229,0x4229,0x3a08,0x4a69,0x4229,0x4208,0x4228,0x4249,0x4249,0x39e8,0x4249,0x528a,0x4249,0x4249,0x4249,0x39e8,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4a49,0x4a6a,0x528a,0x528a,0x52aa,0x4a49,0x4a29,0x4229,0x4a6a,0x528a,0x4228,0x4a6a,0x4a49,0x2104,0x2945,0x18a3,0x630e,0x9cd5,0xdebc,0xffff,0x7bcc,0x2103,0x2104,0x18c3,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18c3,0x18a3,0x10a2,0x18c3,0x20e3,0x18c2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x18c3,0x2104,0x2104,0x3165,0x8c51,0x9451,0x738f,0x8c52,0x736e,0x4a69,0x4249,0x4249,0x4a69,0x4248,0x3a28,0x3a28,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x3a08,0x39e8,0x3a08,0x39e8,0x4249,0x4228,0x31c7,0x3a08,0x3a08,0x39e7,0x4208,0x4a49,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x4208,0x39c7,0x39e7,0x3a08,0x3a08,0x39e7,0x3a28,0x3a28,0x31e7,0x39e7,0x3a08,0x3a08,0x31e7,0x31c7,0x4249,0x39e7,0x3a08,0x3a08,0x4228,0x31e7,0x4249,0x4a49,0x39c7,0x4208,0x4208,0x39e7,0x4a69,0x39e7,0x31a6,0x3a07,0x41e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4208,0x3a08,0x31c7,0x31e7,0x3a28,0x4248,0x3a08,0x31a6,0x39e7,0x3a07,0x3186,0x31a6,0x3a07,0x4228,0x39e7,0x31a7,0x31a7,0x39c7,0x31c7,0x31c7,0x3a08,0x3a08,0x3a08,0x31a7,0x31c7,0x39e8,0x31e8,0x31c7,0x31c7,0x3a07,0x3a07,0x4228,0x39e8,0x39e8,0x39e7,0x31c6,0x39e7,0x31a6,0x3a08,0x31c7,0x3a07,0x31c6,0x4228,0x3a08,0x39e7,0x3186,0x31c7,0x4228, +0x39c7,0x31c7,0x2946,0x3186,0x3a07,0x2986,0x2986,0x39e8,0x39e8,0x31a7,0x39c7,0x31a6,0x31e7,0x31a7,0x39e8,0x3186,0x3186,0x39c7,0x39e8,0x39e8,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a07,0x31a7,0x31c7,0x4229,0x4a6a,0x4209,0x4a49,0x4229,0x3a08,0x31c7,0x31c7,0x4229,0x3a08,0x39e8,0x3a09,0x3a08,0x4248,0x4228,0x31e7,0x31e7,0x31e7,0x4249,0x3a08,0x3a28,0x31e7,0x39e8,0x4208,0x4249,0x3a08,0x3a08,0x4269,0x3a08,0x4249,0x4a69,0x4a49,0x4249,0x4a49,0x3a08,0x4228,0x4269,0x39e7,0x4229,0x3a08,0x4229,0x4228,0x39e7,0x3a28,0x3a08,0x3a08,0x39e7,0x39e8,0x39e7,0x39e7,0x4228,0x31c7,0x4209,0x4229,0x4249,0x4228,0x4a6a,0x4229,0x4208,0x4229,0x3a08,0x4229,0x3a28,0x3a29,0x4249,0x4208,0x4a69,0x4249,0x3a08,0x4a49,0x4229,0x4229,0x4249,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x3a28,0x4a69,0x3a28,0x4a69,0x4a6a,0x4a6a,0x4a49,0x4a49,0x2104,0x2945,0x18a3,0x7390,0xad36,0xde9c,0xffbe,0x736c,0x2104,0x2104,0x18c3,0x18a2,0x2945,0x2944,0x2124,0x2103,0x2103,0x2104,0x2104,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x2104,0x2124,0x2104,0x18e3,0x10a2,0x2124,0x3165,0x2944,0x2103,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2103,0x18e3,0x18c3,0x1082,0x18e3,0x3186,0x2924,0x2103,0x18c3,0x18c2,0x18c2,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x20e3,0x2104,0x2104,0x2944,0x2124,0x18e3,0x18c3,0x20e3,0x2104,0x3186,0x9492,0x8c31,0x8410,0x9c93,0x738e,0x4229,0x3a08,0x4a49,0x4a49,0x4228,0x4a69,0x4228,0x4228,0x3a28,0x39e7,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4228,0x4249,0x39e7,0x3a08,0x39e8,0x4249,0x4228,0x4a6a,0x4a69,0x3a08,0x39e8,0x39e8,0x4a69,0x39e7,0x4229,0x4228,0x3a08,0x4249,0x4229,0x39c7,0x31a7,0x3a08,0x3a08,0x3a08,0x31a6,0x39e7,0x3a08,0x31c7,0x3a07,0x39e7,0x4208,0x3a08,0x3a07,0x3a07,0x3a28,0x31c6,0x39e7,0x39e7,0x4249,0x3a08,0x4a49,0x39c7,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x31c6,0x39e7,0x39c7,0x4228,0x31e7,0x3a08,0x3a28,0x39e7,0x3a08,0x39c7,0x31c7,0x39e7,0x39e7,0x39c7,0x3a08,0x3186,0x4a69,0x4228,0x39e7,0x39c7,0x4208,0x31a6,0x39e7,0x39e8,0x3a08,0x39e8,0x39c7,0x31a7,0x3a08,0x31c7,0x4248,0x4228,0x4248,0x39e7,0x4208,0x3a08,0x4248,0x39e7,0x39c7,0x39e8,0x31a7,0x31a6,0x4228,0x4a8a,0x3186,0x4208,0x31c7,0x39e7,0x31a6,0x39e7, +0x31a7,0x31a6,0x2966,0x39c7,0x31e7,0x2986,0x2145,0x41e8,0x4a4a,0x39e7,0x2965,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39c7,0x4a49,0x4228,0x31a6,0x3a07,0x4249,0x31e7,0x31e7,0x39e7,0x3a08,0x39e8,0x31c7,0x4a8a,0x4249,0x39e7,0x4208,0x39c7,0x39c7,0x31a7,0x4249,0x4249,0x31c7,0x39e8,0x39c8,0x31c7,0x4228,0x4208,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4229,0x4228,0x4249,0x3a08,0x3a07,0x4248,0x4249,0x4228,0x4249,0x4a8a,0x39e8,0x39e7,0x31e7,0x3a28,0x3a28,0x4249,0x39e8,0x4a69,0x52aa,0x4a69,0x39e7,0x4228,0x4a49,0x4249,0x52aa,0x4a6a,0x3a09,0x4208,0x4208,0x4228,0x4269,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4a6a,0x4208,0x4a49,0x4229,0x4229,0x4a69,0x4a69,0x4248,0x528a,0x52cb,0x52ab,0x426a,0x3a28,0x4a8a,0x4249,0x4a8a,0x4a69,0x4a49,0x4228,0x4a69,0x20e3,0x2965,0x18c4,0x7bd1,0xb576,0xd67b,0xef3c,0x632b,0x2104,0x2104,0x18c3,0x18a3,0x2965,0x2945,0x3165,0x2944,0x2944,0x3165,0x3185,0x2965,0x2944,0x2945,0x2945,0x2124,0x2945,0x2965,0x2965,0x2965,0x2944,0x2965,0x2924,0x2965,0x2945,0x2124,0x18e3,0x10a2,0x2945,0x31a6,0x3186,0x2965,0x18e3,0x20e3,0x2124,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2124,0x2124,0x2924,0x2944,0x2945,0x2965,0x3165,0x3165,0x2104,0x18e3,0x1082,0x2104,0x41e8,0x3186,0x31a6,0x3165,0x2944,0x2945,0x2945,0x2965,0x3165,0x3185,0x2965,0x39c6,0x3186,0x3186,0x3186,0x2965,0x2965,0x3186,0x3186,0x39a6,0x2945,0x18e3,0x18c3,0x18e3,0x20e3,0x3186,0x9492,0x83f0,0x8c51,0x9cd3,0x630d,0x4229,0x52ab,0x4a49,0x4229,0x39e8,0x3a08,0x4249,0x4228,0x4249,0x4249,0x4249,0x4228,0x3a08,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x4a8a,0x4228,0x4208,0x4228,0x39e7,0x4249,0x4228,0x3a08,0x3a08,0x4229,0x4249,0x31e7,0x39e7,0x39c7,0x4208,0x39e8,0x31a7,0x31c7,0x3a08,0x39c7,0x3a08,0x31e7,0x31c7,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x4208,0x39e7,0x4228,0x3a28,0x39e7,0x39e7,0x39e7,0x4228,0x39e7,0x31c7,0x39c6,0x31a6,0x39e7,0x31c7,0x3a08,0x3a08,0x4208,0x4228,0x39e7,0x39e7,0x3a07,0x3a07,0x39c7,0x4228,0x3a07,0x31e7,0x39e7,0x52aa,0x39e7,0x3a08,0x39e7,0x3187,0x4a49,0x4228,0x31c6,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x31c7,0x3a08,0x4228,0x3a08,0x31a6,0x31a6,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39c7,0x4249,0x31a6,0x4228,0x39e7,0x39e7, +0x3186,0x2965,0x3186,0x39e8,0x29a6,0x2186,0x29a7,0x39c7,0x39e8,0x3a08,0x3a07,0x3a07,0x31c7,0x31c7,0x39e8,0x31c7,0x31c7,0x31e7,0x39e8,0x39e7,0x31e7,0x4249,0x31a6,0x31c6,0x39e8,0x39e8,0x3a28,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x39e8,0x39c7,0x39e8,0x31c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31a7,0x39a7,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x3a07,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4229,0x4228,0x3a08,0x4249,0x3a29,0x3a08,0x4249,0x4229,0x4249,0x4249,0x4249,0x39e7,0x39e8,0x3a28,0x3a28,0x3a49,0x4249,0x4208,0x4228,0x4a6a,0x39e8,0x39e8,0x4208,0x4a8a,0x4a49,0x4229,0x3a08,0x4249,0x4249,0x4a49,0x4249,0x4a69,0x3a08,0x3a08,0x3a08,0x3a07,0x4228,0x4229,0x4249,0x4229,0x4249,0x426a,0x4229,0x4249,0x4228,0x4a49,0x528a,0x4249,0x4249,0x4a8a,0x4249,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a8a,0x18e3,0x2945,0x18c4,0x7bd2,0xb596,0xce3a,0xd679,0x5aca,0x2104,0x1903,0x18c3,0x18a3,0x2965,0x20e4,0x2104,0x10a2,0x2104,0x3165,0x2945,0x2104,0x18e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2124,0x2124,0x2945,0x18e3,0x2124,0x2124,0x2104,0x18c3,0x1082,0x2945,0x3166,0x2945,0x18e3,0x18c3,0x2124,0x2924,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2965,0x2945,0x2945,0x3165,0x3186,0x2924,0x2924,0x2945,0x2104,0x18e3,0x1082,0x2104,0x39e8,0x2965,0x2965,0x2944,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x3165,0x41e7,0x39c6,0x31a6,0x3186,0x3185,0x3165,0x2124,0x2924,0x3165,0x2124,0x2104,0x18c3,0x18c3,0x18c3,0x2965,0x8431,0x738f,0x8c51,0x9cb3,0x4a29,0x4228,0x4a69,0x4249,0x4249,0x3a08,0x3a29,0x4249,0x4249,0x3a29,0x3a29,0x31e7,0x3a08,0x39e7,0x3a08,0x31c7,0x39e8,0x4249,0x39e7,0x39c7,0x3a08,0x4a69,0x3a08,0x4229,0x4a69,0x39e7,0x3a08,0x4228,0x4208,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x4228,0x4228,0x3a08,0x3a08,0x39e8,0x39e8,0x39c7,0x31c6,0x31a6,0x39e7,0x39e7,0x31a6,0x39e7,0x4a69,0x3a08,0x3a08,0x4249,0x4208,0x39c7,0x3a08,0x4208,0x3a08,0x4208,0x4a49,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a07,0x4248,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x31c7,0x39e8,0x4208,0x39e8,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x3a28,0x3a07,0x4269,0x52eb,0x31e7,0x3a07,0x39e7,0x31e7,0x4a69,0x4a49,0x2986,0x3a08,0x4249,0x31c7,0x39e7,0x31c7,0x31c7,0x31c6,0x3a28,0x4269,0x3a08,0x39e7,0x4228,0x3207,0x29a7,0x31c7,0x39e8,0x39e8,0x39c7,0x39e7,0x39e7,0x31c7,0x31c7, +0x2986,0x2965,0x31a6,0x29a7,0x29c7,0x29a7,0x31e7,0x31c7,0x31a6,0x3a08,0x3a08,0x31a6,0x31a7,0x3a08,0x3a08,0x31c7,0x2986,0x39c8,0x3a08,0x31c7,0x31c7,0x4a6a,0x4a8a,0x4249,0x39e8,0x39e8,0x31e7,0x3a28,0x3a28,0x3a08,0x3a07,0x39e7,0x31c7,0x31a7,0x4208,0x4208,0x39e7,0x31a7,0x31a7,0x39c7,0x39e7,0x39c7,0x31c7,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x39e8,0x4208,0x4208,0x4228,0x4a8a,0x4228,0x4a69,0x4249,0x3a08,0x4208,0x4229,0x4249,0x4248,0x4249,0x4269,0x4a8a,0x4aaa,0x4269,0x4a8a,0x4228,0x39e7,0x3a08,0x4228,0x3a28,0x3a28,0x4249,0x39e7,0x4249,0x3a28,0x39e7,0x39e8,0x3a28,0x4249,0x4249,0x31e7,0x4aaa,0x4249,0x3a28,0x4228,0x4229,0x4249,0x39e8,0x39e7,0x4228,0x3a28,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x4208,0x5acb,0x4a49,0x4208,0x39e8,0x4228,0x4229,0x4229,0x4228,0x4a49,0x4a69,0x4a69,0x4249,0x4a69,0x4a6a,0x4a69,0x426a,0x18e3,0x2925,0x18c4,0x7bb1,0xb596,0xbdb7,0xb596,0x52aa,0x2103,0x18e3,0x18c3,0x18a3,0x2965,0x10a2,0x0861,0x0861,0x2944,0x2945,0x2124,0x2104,0x18e3,0x18e3,0x2104,0x20e4,0x20e4,0x20e3,0x18e3,0x18e3,0x2104,0x2945,0x2104,0x10a2,0x10a2,0x18e3,0x18c3,0x1082,0x2925,0x2104,0x1082,0x0861,0x18e3,0x2124,0x2104,0x20e4,0x18e3,0x18e3,0x20e3,0x20e4,0x2104,0x2124,0x2104,0x2104,0x2124,0x2965,0x2945,0x18a2,0x18c3,0x18e3,0x18c3,0x1082,0x20e4,0x3186,0x18a3,0x10a2,0x2104,0x2924,0x2104,0x2104,0x2104,0x2124,0x2104,0x2124,0x2965,0x2945,0x2945,0x2945,0x2945,0x3185,0x2924,0x1082,0x18c3,0x18e3,0x2104,0x18c3,0x18c3,0x18e3,0x3186,0x7bcf,0x632e,0x8411,0x8411,0x39a7,0x3a07,0x4249,0x4a69,0x4249,0x4249,0x4229,0x3a29,0x3a08,0x3a29,0x3a28,0x39e7,0x3a08,0x3a08,0x4228,0x31c7,0x4228,0x4228,0x4249,0x4228,0x39c7,0x3a08,0x4249,0x4208,0x3a08,0x39e8,0x4249,0x4a69,0x4228,0x4a69,0x39e7,0x4a69,0x4a49,0x4228,0x4229,0x3a08,0x3a07,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c6,0x3a08,0x4228,0x4228,0x4a69,0x3a08,0x4228,0x4228,0x4228,0x4208,0x4249,0x39c7,0x31a6,0x39c7,0x4249,0x4249,0x3a08,0x31c7,0x4228,0x31a6,0x52aa,0x4208,0x31a6,0x3a08,0x31c7,0x3a07,0x4228,0x3a08,0x4a69,0x39e8,0x4229,0x4208,0x3a08,0x4228,0x4228,0x39c7,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x4249,0x3a07,0x39e7,0x39e7,0x31e7,0x4249,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x4249,0x31c7,0x31e7,0x3a28,0x3a08,0x4208,0x39e8,0x41e8,0x3a08,0x31e7,0x31c7,0x31a7,0x3186,0x39c7,0x31c7,0x31a7,0x39c7,0x31a7,0x31a7, +0x2986,0x2986,0x31a7,0x31a7,0x31c7,0x2986,0x31a7,0x31a7,0x3186,0x31c7,0x31a7,0x2966,0x39c7,0x3a08,0x31a6,0x31a6,0x39c7,0x39e8,0x3a28,0x3a08,0x31c7,0x39c8,0x4229,0x4208,0x31a7,0x39e8,0x3a08,0x3a08,0x39e7,0x31e7,0x3a28,0x39c7,0x31a7,0x31a6,0x39c7,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e7,0x4249,0x39e8,0x31c7,0x39e7,0x31e7,0x31e7,0x4229,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x4249,0x39e7,0x4a49,0x4228,0x4229,0x4208,0x3a08,0x3a28,0x3a08,0x4a69,0x4249,0x4a8a,0x4249,0x4249,0x31c7,0x3a08,0x4249,0x4249,0x4228,0x4228,0x4a49,0x4a69,0x3a08,0x3a28,0x4249,0x3a07,0x3a08,0x3a28,0x3a08,0x4249,0x4269,0x4248,0x4249,0x4228,0x4229,0x3a08,0x4228,0x4228,0x4228,0x4228,0x4229,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4208,0x4a49,0x4249,0x4229,0x4249,0x3a08,0x4228,0x4a49,0x4208,0x4208,0x4249,0x4229,0x4a6a,0x4249,0x4a6a,0x4a8a,0x18c3,0x2104,0x18c4,0x7391,0xbdb7,0xad35,0x9cf4,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2945,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2944,0x2144,0x2925,0x2945,0x2945,0x2924,0x2124,0x2124,0x2945,0x2965,0x3185,0x0861,0x0841,0x18c3,0x18a2,0x1082,0x2124,0x10a2,0x0020,0x0841,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2924,0x2925,0x2925,0x2124,0x2124,0x2124,0x2965,0x31a6,0x10a2,0x0861,0x10a2,0x18c3,0x10a2,0x20e3,0x2124,0x0841,0x0861,0x2945,0x2124,0x2124,0x2924,0x2924,0x2945,0x2925,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3186,0x3186,0x1062,0x0861,0x1082,0x20e4,0x18c3,0x18c3,0x2104,0x39c7,0x6b4e,0x630d,0x73af,0x738e,0x3186,0x39e8,0x4a69,0x4a8a,0x52aa,0x4a49,0x3a08,0x3a08,0x31e7,0x3a28,0x4248,0x4249,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x3a08,0x4229,0x39c7,0x3a08,0x3a08,0x4249,0x4228,0x39c7,0x4208,0x3a08,0x4a8a,0x3a28,0x4228,0x3a08,0x4228,0x4208,0x4208,0x4a49,0x39e8,0x3a08,0x4228,0x31c7,0x4228,0x4208,0x39e7,0x4228,0x39e7,0x39e7,0x31e7,0x4a69,0x4a69,0x3a28,0x4269,0x31c7,0x3a08,0x3a08,0x3a08,0x39e8,0x39c7,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x31a7,0x4229,0x39e8,0x39e7,0x3a07,0x4208,0x39e7,0x31c6,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e8,0x31c7,0x31e8,0x39e8,0x39e8,0x31c7,0x31a7,0x39e7,0x39e7,0x4249,0x4a49,0x31c7,0x4228,0x3a08,0x31c7,0x2986,0x3a08,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x4228,0x31c7,0x39e8,0x39e8,0x39c7,0x3a08,0x29a6,0x31e7,0x4269,0x3a08,0x2986,0x31a6,0x3a08,0x39e8,0x31a7,0x3166, +0x31a7,0x31c7,0x31a6,0x31a7,0x29a6,0x2986,0x3186,0x3186,0x31a7,0x31a7,0x39c7,0x39c7,0x39c8,0x4229,0x3a28,0x3a28,0x3a07,0x3a07,0x31e7,0x31c7,0x31a7,0x31a7,0x39e8,0x39e8,0x31e7,0x31c7,0x4208,0x39e7,0x39e8,0x4208,0x39e8,0x39c7,0x39c7,0x39e7,0x39c7,0x39c7,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x4208,0x4208,0x4249,0x3a08,0x31e7,0x3a28,0x3a08,0x3a08,0x3a28,0x3a08,0x4a6a,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x3207,0x4228,0x3a28,0x3a08,0x39e8,0x39e8,0x4a69,0x4269,0x4249,0x3a28,0x3a28,0x4248,0x4269,0x4a69,0x4208,0x4249,0x4a8a,0x4208,0x41e8,0x4a49,0x3a08,0x39e8,0x4228,0x4a69,0x4a49,0x4249,0x4228,0x4a69,0x4a69,0x4aaa,0x4249,0x4228,0x4a69,0x4228,0x528a,0x4a49,0x3a08,0x4229,0x4a6a,0x4249,0x4a49,0x39e8,0x4229,0x3a08,0x3a29,0x4208,0x4229,0x4249,0x4269,0x4229,0x4229,0x4249,0x4249,0x426a,0x4249,0x4a8b,0x52cb,0x18c3,0x2104,0x18c4,0x7371,0xc5f8,0xa535,0x94b3,0x5289,0x20e3,0x18e3,0x18c3,0x18a3,0x2124,0x0861,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x4a05,0x39c5,0x2965,0x2965,0x2945,0x2965,0x3166,0x3186,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2945,0x2965,0x2965,0x2965,0x3165,0x41e5,0x4a25,0x4205,0x3185,0x2965,0x2965,0x2965,0x2965,0x31a6,0x10a2,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x20e3,0x0020,0x1081,0x2965,0x2945,0x2965,0x2965,0x3186,0x3186,0x41e5,0x4a25,0x4205,0x31a6,0x3186,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0841,0x0861,0x18e3,0x18a2,0x18c3,0x2104,0x31a7,0x5aec,0x5acc,0x6b6e,0x630d,0x2965,0x4229,0x4209,0x4249,0x52aa,0x4a69,0x4229,0x39e8,0x4a69,0x4a69,0x4269,0x4228,0x3a08,0x4229,0x4229,0x39e8,0x4249,0x3a08,0x4228,0x3a08,0x4249,0x3a08,0x3a07,0x4228,0x39e7,0x4a49,0x3a08,0x3a08,0x4229,0x4229,0x4249,0x3a08,0x4228,0x39e7,0x4228,0x4229,0x31c7,0x4208,0x39e8,0x39a7,0x39e7,0x4248,0x3a07,0x39e7,0x39e7,0x31a6,0x39c7,0x4208,0x4249,0x4a69,0x3a08,0x31c7,0x31c7,0x4249,0x4228,0x39e8,0x3a08,0x4228,0x4249,0x3a08,0x3a08,0x31c7,0x31e7,0x31e7,0x31c7,0x3a28,0x4208,0x39e7,0x4208,0x4208,0x39e7,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x3a07,0x31a6,0x4a6a,0x39e7,0x31c7,0x3a08,0x4a6a,0x39e8,0x4208,0x3a08,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x31c7,0x4249,0x4a69,0x31c7,0x3a08,0x31e7,0x31c7,0x4249,0x4249,0x31e7,0x31e7,0x3a08,0x29a6,0x2985,0x4228,0x39e8,0x31c7,0x3a08, +0x39c7,0x39c7,0x2965,0x31a6,0x2986,0x2986,0x31a6,0x31a6,0x39e7,0x31a6,0x31c7,0x31c7,0x31c7,0x31c7,0x426a,0x426a,0x31c7,0x4228,0x31c7,0x3a08,0x31c7,0x29a6,0x3a28,0x3a28,0x31c7,0x31c7,0x3a08,0x4229,0x4229,0x3a08,0x31a6,0x31e7,0x31e7,0x31c7,0x39c7,0x39e7,0x39c7,0x39e8,0x4229,0x4a6a,0x3a08,0x31a6,0x4228,0x4249,0x3a08,0x3a08,0x4229,0x52ab,0x3a08,0x3a49,0x4249,0x4228,0x4208,0x4a8a,0x4249,0x3a08,0x4a69,0x3a08,0x3a08,0x4a49,0x39e8,0x3a08,0x3a08,0x4a49,0x4228,0x4a69,0x4a8a,0x4228,0x4269,0x3a08,0x4229,0x3a08,0x4208,0x4228,0x4228,0x4228,0x41e8,0x39e7,0x39e8,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4228,0x4248,0x4249,0x31e7,0x39e7,0x4208,0x4a89,0x4a49,0x39e8,0x4229,0x39e8,0x39e8,0x3a09,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x4a69,0x4249,0x4229,0x4a69,0x4249,0x4228,0x4249,0x4249,0x4249,0x52aa,0x528a,0x4a6a,0x18c3,0x2124,0x18a3,0x6b30,0xd659,0xad35,0x8c72,0x4a69,0x20e3,0x18c3,0x18c3,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4a45,0x8385,0x5264,0x2945,0x2965,0x2965,0x2965,0x3186,0x3186,0x0861,0x0020,0x10a2,0x1082,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x4a25,0x7b65,0x7324,0x7b65,0x5a64,0x3165,0x3166,0x2966,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18e3,0x0020,0x1082,0x2965,0x2965,0x3186,0x3186,0x3186,0x4226,0x7b65,0x7b65,0x8385,0x5246,0x3186,0x3186,0x3186,0x31a7,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x18a2,0x18c3,0x20e4,0x2945,0x52ab,0x52ab,0x6b6e,0x5aec,0x2945,0x4a6a,0x4229,0x4229,0x4a69,0x4228,0x3a08,0x3a08,0x4a69,0x4a89,0x4a8a,0x3a08,0x3a08,0x4228,0x39e7,0x4228,0x3a08,0x3a08,0x4228,0x4249,0x39e7,0x4228,0x4248,0x4249,0x4228,0x4249,0x4a69,0x3a08,0x4208,0x4229,0x4229,0x4a69,0x4228,0x4a8a,0x4229,0x4229,0x4229,0x4208,0x4208,0x31a7,0x31c6,0x4228,0x39c7,0x31a6,0x4228,0x39e8,0x39c7,0x4208,0x4229,0x3a08,0x3a08,0x39e7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x4229,0x4249,0x31c7,0x3a08,0x39e7,0x4a69,0x39e7,0x31a7,0x39e8,0x4208,0x39c7,0x4208,0x4249,0x39e7,0x39e7,0x3a08,0x3a08,0x31c7,0x31c7,0x39e8,0x39e8,0x39e8,0x39e8,0x31a7,0x4a69,0x3a08,0x31c7,0x4a69,0x4249,0x39e8,0x4a49,0x4208,0x39c7,0x31a6,0x39e7,0x4248,0x39e7,0x39e7,0x4228,0x31c7,0x39e7,0x4208,0x39e8,0x3a08,0x3a08,0x31a6,0x4228,0x52aa,0x31a7,0x3186,0x3186,0x31a6,0x2986,0x3a08,0x31a7,0x39e8,0x39c7, +0x3186,0x3186,0x3186,0x31a6,0x2966,0x31a7,0x31a7,0x31c7,0x31e7,0x31a7,0x29a6,0x2986,0x31c7,0x31a7,0x31e8,0x31c8,0x31a7,0x31c7,0x39c7,0x4208,0x4228,0x39e7,0x31e7,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x31a6,0x39e7,0x31c7,0x31c7,0x31c8,0x3a08,0x4228,0x39e7,0x4269,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x39e8,0x4228,0x39e7,0x39c7,0x4a69,0x3a08,0x3208,0x4249,0x4208,0x31e7,0x4229,0x4229,0x4a49,0x4a49,0x41e8,0x4208,0x4a49,0x4249,0x4229,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x39c7,0x39e8,0x4229,0x4249,0x3a08,0x3a08,0x3a08,0x4249,0x4249,0x4228,0x4228,0x3a08,0x4a69,0x39e7,0x4a69,0x3a08,0x39e8,0x4228,0x4208,0x39e8,0x3a08,0x4249,0x4228,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a69,0x4228,0x4a49,0x4228,0x4229,0x4a49,0x4a49,0x4208,0x52aa,0x4a8a,0x3a08,0x18c3,0x2124,0x18c3,0x6b30,0xdeba,0xb575,0x8c51,0x4a49,0x20e3,0x18c3,0x18c2,0x18a2,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2945,0x4a46,0x7b45,0xa465,0x62a4,0x2945,0x2965,0x2965,0x2965,0x3186,0x2965,0x0861,0x0020,0x1082,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x7325,0x8bc5,0x5a64,0x8bc5,0x8384,0x3165,0x2966,0x3166,0x3166,0x3186,0x1082,0x0841,0x1082,0x18c3,0x18a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x2966,0x2966,0x3186,0x3186,0x5ac6,0x8bc5,0x6ae5,0x9405,0x7305,0x3186,0x3186,0x3186,0x3187,0x39a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a3,0x18e3,0x2124,0x4a6a,0x528b,0x632d,0x5acc,0x2965,0x4a6a,0x4229,0x4229,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x3a08,0x4228,0x4228,0x4228,0x4249,0x4228,0x4228,0x4249,0x4228,0x3a08,0x4a69,0x4a49,0x4228,0x4228,0x4a69,0x4228,0x4228,0x4a49,0x4a49,0x4269,0x4229,0x4249,0x3a08,0x4229,0x4a49,0x4248,0x3a08,0x39e7,0x3a07,0x4228,0x4a69,0x3a08,0x3a08,0x3a08,0x4a49,0x52aa,0x4249,0x4228,0x4228,0x3a08,0x4248,0x39e7,0x3a07,0x4208,0x4248,0x4229,0x31c7,0x4249,0x3a08,0x31a6,0x4249,0x3a08,0x39c7,0x4208,0x39e7,0x31e7,0x39e7,0x4228,0x4249,0x4249,0x39e7,0x39c7,0x39e7,0x39e8,0x39e8,0x31a7,0x39c7,0x39c8,0x31a6,0x39e7,0x4a49,0x4228,0x39e7,0x4249,0x4208,0x3a08,0x39c7,0x31a6,0x31c7,0x31e7,0x39e7,0x4229,0x3a08,0x31c7,0x31a6,0x39e7,0x31a7,0x4208,0x39e8,0x3a08,0x39e8,0x39e8,0x39e7,0x39c7,0x39c7,0x31a7,0x31c7,0x39e7,0x31a6,0x31a6,0x39e7,0x39e7, +0x2966,0x2966,0x39e7,0x3186,0x2986,0x31a7,0x3186,0x3186,0x31c7,0x31a7,0x31a7,0x31a7,0x2986,0x31a7,0x39c7,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x3a08,0x39e8,0x39e8,0x3a08,0x31a6,0x39e8,0x39e8,0x39e7,0x3a08,0x4229,0x39c7,0x3a07,0x4248,0x3a29,0x3a08,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x39e7,0x4248,0x4228,0x39e8,0x4249,0x3a08,0x41e7,0x39c7,0x3a08,0x3a08,0x3a08,0x31c7,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x4209,0x4229,0x39e8,0x4229,0x3a08,0x39e8,0x4229,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4229,0x39e8,0x39e9,0x4249,0x4249,0x4249,0x4a6a,0x39e8,0x4208,0x4208,0x4229,0x4208,0x4229,0x3a08,0x3a08,0x3a28,0x39e7,0x3a08,0x4a49,0x4208,0x39e7,0x4208,0x4249,0x3a28,0x3a08,0x4228,0x4249,0x4a49,0x528a,0x3a08,0x4a69,0x4228,0x39e7,0x4229,0x4249,0x4208,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4229,0x4228,0x4249,0x4a49,0x4248,0x3a08,0x18a3,0x2104,0x18c3,0x62ef,0xe6fb,0xb595,0x8c51,0x4a49,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0020,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x4206,0x5a85,0x9425,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2965,0x2965,0x2965,0x2965,0x62c6,0x5a85,0x39a5,0x83a5,0x83a4,0x3165,0x2965,0x3166,0x3186,0x3186,0x10a2,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3166,0x3166,0x3186,0x4a46,0x5a85,0x5a65,0x9405,0x7305,0x3165,0x3186,0x3186,0x3186,0x31a7,0x1082,0x0841,0x0861,0x18c3,0x10a2,0x18a2,0x18c3,0x2104,0x4229,0x528b,0x630d,0x528b,0x2945,0x4249,0x4269,0x4a8a,0x4229,0x3a08,0x4a69,0x4a69,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x4a69,0x4a8a,0x4208,0x4228,0x4a89,0x4a69,0x3a08,0x4228,0x4228,0x4208,0x4228,0x4228,0x4208,0x4208,0x4228,0x4229,0x39e8,0x39c7,0x4249,0x3a08,0x3a08,0x39e8,0x39c7,0x39e7,0x3a08,0x31e7,0x3a08,0x4248,0x3a08,0x3a08,0x4228,0x4249,0x3a08,0x39e8,0x4228,0x4208,0x39e7,0x4208,0x4249,0x4269,0x39e8,0x39e7,0x4a49,0x39e8,0x39e7,0x4208,0x4208,0x4249,0x31e7,0x3a07,0x3a07,0x39e7,0x3a08,0x31c7,0x39c7,0x4249,0x4228,0x39e7,0x39e7,0x39e8,0x4229,0x4208,0x4208,0x39e8,0x39c7,0x3a08,0x31a6,0x29a6,0x31c7,0x39e7,0x3a07,0x31a6,0x31a6,0x39c7,0x39c7,0x31a7,0x29a6,0x4248,0x3a28,0x31e7,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x3a07,0x39e7,0x39e7,0x39c7,0x3a08,0x31e7,0x4229,0x4208,0x39e8,0x4249,0x31a6,0x2965,0x2965,0x39c6,0x39e7, +0x31a6,0x31c7,0x31c6,0x2986,0x2986,0x2986,0x3186,0x31c6,0x31a6,0x31a7,0x31a7,0x31a7,0x31a7,0x31c7,0x3a07,0x39e7,0x29a6,0x39e8,0x4229,0x3a08,0x31c8,0x31c8,0x3a09,0x4209,0x4208,0x3a08,0x3a07,0x3a08,0x3a49,0x4229,0x31c7,0x4a69,0x4228,0x3a08,0x39e7,0x31c7,0x3a28,0x4a69,0x4228,0x39e7,0x4249,0x4248,0x39e7,0x3a08,0x3a07,0x3a07,0x4228,0x4208,0x4208,0x4228,0x4208,0x39e7,0x4249,0x4a8a,0x3a08,0x39e8,0x4208,0x4229,0x4a6a,0x39e8,0x4208,0x4228,0x4228,0x4a69,0x4a49,0x39c7,0x4a8a,0x4aaa,0x3a08,0x31a7,0x3a09,0x39e8,0x31c8,0x3a09,0x39e8,0x39e8,0x4a48,0x4a49,0x4249,0x4208,0x3a08,0x39e7,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x3a08,0x4249,0x4249,0x52aa,0x4249,0x4229,0x3a08,0x4a6a,0x4a69,0x4269,0x4249,0x39e7,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4229,0x4229,0x4228,0x4a8a,0x4a69,0x4249,0x4a49,0x528a,0x4a69,0x4a8a,0x4249,0x18a3,0x18e3,0x18a3,0x5aae,0xe6fc,0xbd96,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x3166,0x2965,0x2965,0x2965,0x2965,0x3185,0x3185,0x8be6,0x62c4,0x2945,0x2945,0x2965,0x2965,0x2966,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2965,0x2965,0x2965,0x39c6,0x41e5,0x62c5,0x8bc5,0x5a84,0x2965,0x2965,0x2965,0x3165,0x3186,0x1082,0x0841,0x1082,0x18c2,0x10a2,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x3166,0x3186,0x39a6,0x39c5,0x62e5,0x9c45,0x6ae4,0x3165,0x3186,0x3186,0x3186,0x31a6,0x1082,0x0820,0x0861,0x18a3,0x10a2,0x18c3,0x18c3,0x2104,0x3a08,0x4a6a,0x5aec,0x4a29,0x2124,0x4249,0x4249,0x4229,0x4229,0x4a8a,0x3a08,0x4249,0x4228,0x4228,0x4a49,0x4249,0x4249,0x4249,0x4a89,0x528a,0x4a49,0x4228,0x4208,0x31a7,0x4229,0x4a49,0x3a08,0x39e8,0x39c8,0x41e8,0x4208,0x4a49,0x4a69,0x4228,0x4228,0x4249,0x4a49,0x4229,0x41e8,0x4208,0x39e8,0x39e7,0x3a08,0x3a28,0x4228,0x4a69,0x3a08,0x31c7,0x4228,0x4248,0x39e7,0x39e7,0x3a08,0x4249,0x39e8,0x39e8,0x3a08,0x31a7,0x39c7,0x39e8,0x4208,0x4208,0x39e8,0x39e8,0x3a08,0x3a08,0x4228,0x3a28,0x3a08,0x3186,0x39e7,0x3186,0x39e8,0x4208,0x31a7,0x39e8,0x4208,0x39e8,0x4208,0x4a49,0x4208,0x4208,0x39e8,0x31c7,0x31e7,0x3a28,0x31e7,0x3a07,0x3a08,0x39e7,0x39e8,0x4228,0x3a08,0x31a7,0x39e7,0x4228,0x39e7,0x39e8,0x39c7,0x39c7,0x4228,0x4a69,0x4249,0x31e7,0x39e7,0x4249,0x4229,0x31a7,0x3a08,0x39e8,0x39e8,0x31a7,0x4208,0x31c6,0x31c6,0x31c6,0x31c7,0x31c7, +0x31c6,0x39e7,0x31a6,0x2986,0x2965,0x2986,0x4208,0x39c7,0x2986,0x31c7,0x39c8,0x3186,0x31a6,0x31a6,0x31c6,0x31a6,0x31c6,0x31c7,0x3a08,0x31e8,0x29a7,0x31c8,0x3a09,0x4229,0x4a49,0x4228,0x39c7,0x31e7,0x31e7,0x3a08,0x31c7,0x39e7,0x39e7,0x3a07,0x39e7,0x3a08,0x4249,0x4208,0x4248,0x39c7,0x39e8,0x4a69,0x4a69,0x4a49,0x4248,0x39e7,0x3a08,0x4a49,0x4a49,0x4208,0x4228,0x3a08,0x39e8,0x4a69,0x4249,0x528a,0x4a69,0x4228,0x4a69,0x4a69,0x4a69,0x4208,0x4228,0x39e7,0x4228,0x39e8,0x4a49,0x4249,0x3a07,0x4a69,0x3a07,0x3a08,0x3a08,0x4209,0x4229,0x4208,0x39e7,0x39e8,0x39e8,0x4228,0x4228,0x39e7,0x4208,0x4249,0x4a49,0x4228,0x4249,0x4249,0x4228,0x4229,0x4a6a,0x4229,0x4229,0x3a08,0x4a69,0x4a69,0x4249,0x3a28,0x3a08,0x3a08,0x4a49,0x4208,0x4228,0x4a69,0x4249,0x4249,0x4a6a,0x4229,0x4249,0x4a6a,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4229,0x18a3,0x18e3,0x10a3,0x528d,0xdebb,0xb595,0x8451,0x4248,0x18e3,0x18e3,0x18c3,0x18c3,0x2104,0x0841,0x0841,0x10a2,0x2966,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x8bc6,0x62c4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0861,0x0020,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x2966,0x2966,0x2965,0x2965,0x39c5,0x6b25,0x8bc5,0x6ae4,0x39c5,0x2965,0x2965,0x2965,0x2965,0x3186,0x1082,0x0841,0x1082,0x18c2,0x1082,0x18e3,0x18c3,0x0020,0x1082,0x2965,0x3186,0x3186,0x2965,0x3165,0x4a45,0x5245,0x5245,0x8be5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1061,0x18a3,0x10a2,0x18c3,0x18e3,0x2104,0x39e8,0x4a4a,0x52ab,0x41e8,0x2124,0x3a28,0x4a8a,0x4228,0x4a8a,0x52aa,0x4228,0x4a49,0x4208,0x4a49,0x4a49,0x4229,0x4a69,0x4249,0x4249,0x4a49,0x4249,0x3a08,0x4a6a,0x39e8,0x4208,0x4a8a,0x4229,0x4a49,0x39e7,0x39e8,0x4208,0x4229,0x4228,0x3a07,0x4228,0x4208,0x4229,0x4208,0x4a29,0x41e8,0x4208,0x39c7,0x4228,0x4228,0x4228,0x3a08,0x3a08,0x31a6,0x4a69,0x4249,0x31a6,0x31a6,0x3a08,0x4269,0x39c7,0x39c7,0x31a6,0x39c7,0x39c7,0x4208,0x4229,0x31a7,0x3a28,0x3a28,0x3a28,0x4229,0x39e8,0x39e8,0x3a08,0x39e7,0x4a49,0x4208,0x39c7,0x4228,0x39e7,0x39e8,0x39c7,0x39e7,0x39e7,0x39c7,0x39c7,0x39e7,0x3a08,0x4a8a,0x3a08,0x31c7,0x3207,0x31c6,0x39e8,0x4a69,0x3a07,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x39e7,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x39e7,0x31c7,0x4248,0x4249,0x3a08,0x31a7,0x31a7,0x39e8,0x39e8,0x2986,0x31a6,0x4228,0x4228,0x31a6,0x29a6,0x4228, +0x31c6,0x31a6,0x2986,0x2966,0x2986,0x2966,0x39c7,0x39c7,0x31c7,0x39e8,0x4208,0x31a7,0x31a7,0x31c7,0x31a6,0x39c7,0x39e8,0x39e8,0x39e8,0x31a7,0x31c7,0x31c8,0x31e8,0x31c7,0x31c7,0x4208,0x39c7,0x39e7,0x39e7,0x39e7,0x39e8,0x3a08,0x3a08,0x4208,0x3a08,0x39e7,0x31a7,0x39c7,0x4228,0x4208,0x31c8,0x39e8,0x4249,0x4208,0x41e8,0x4208,0x4208,0x4208,0x4208,0x4a6a,0x3a08,0x4228,0x31a7,0x3a08,0x4a8a,0x4228,0x4228,0x52aa,0x4a69,0x52aa,0x4249,0x4228,0x39e7,0x3a28,0x3a28,0x4228,0x4249,0x39e8,0x4229,0x4a6a,0x4a49,0x3a07,0x4249,0x39e8,0x3a08,0x4249,0x4249,0x4208,0x4208,0x4229,0x4228,0x4228,0x4249,0x4249,0x4208,0x39e8,0x4228,0x4229,0x39e8,0x3a08,0x3a08,0x3a08,0x39e7,0x4229,0x4229,0x4229,0x3a49,0x3a28,0x39e8,0x4208,0x4228,0x4228,0x4a6a,0x4a69,0x3a08,0x3a08,0x52aa,0x4249,0x4228,0x4a49,0x4a6a,0x4249,0x3a29,0x4229,0x4208,0x18a3,0x2104,0x18c3,0x4a4c,0xce39,0xa534,0x7c10,0x4228,0x18e3,0x18e3,0x18c3,0x18a3,0x2104,0x0861,0x0841,0x1082,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x83a6,0x62a4,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x2104,0x1082,0x0020,0x0861,0x2945,0x3165,0x2965,0x2965,0x2945,0x5aa5,0x9c45,0x8bc4,0x62c4,0x5245,0x2965,0x2965,0x2965,0x2965,0x3185,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18e3,0x18c2,0x0020,0x1082,0x2965,0x3186,0x3186,0x3186,0x3165,0x62e5,0x8385,0x5a64,0x83c5,0x8385,0x3185,0x3186,0x3186,0x3186,0x3186,0x1082,0x0841,0x1082,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x39c7,0x4229,0x4a6a,0x39c8,0x2104,0x4aaa,0x3a28,0x4228,0x4249,0x4249,0x4a8a,0x4a49,0x4a69,0x4a49,0x4a69,0x5acb,0x4a8a,0x3a08,0x4229,0x4a49,0x4228,0x4228,0x4248,0x4228,0x4a49,0x4228,0x3a08,0x3a28,0x3a28,0x4249,0x3a08,0x39e8,0x39e8,0x3a08,0x39e7,0x4208,0x39e7,0x3a07,0x4a49,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4a89,0x31c7,0x39e7,0x3a07,0x39e7,0x4228,0x39e7,0x39c7,0x39c6,0x4a69,0x4228,0x3a08,0x4227,0x31a7,0x3a08,0x3a08,0x4249,0x39e8,0x39e8,0x31a6,0x39e8,0x4208,0x31c6,0x3207,0x31c7,0x39e7,0x4208,0x4228,0x31c7,0x39e8,0x39e7,0x31c7,0x31a6,0x31e7,0x3a08,0x31c7,0x4208,0x4a69,0x31a6,0x39e8,0x31c7,0x3a08,0x39e7,0x4249,0x4229,0x4228,0x4228,0x3a08,0x3a07,0x39e7,0x31a6,0x31a6,0x31c7,0x39e7,0x39e7,0x31e7,0x31c7,0x39e7,0x3a08,0x31a6,0x31c6,0x3a08,0x4229,0x31c7,0x4228,0x4228,0x31e7,0x29a6,0x31e7,0x39e7,0x31c6,0x31a7,0x31c7,0x39e8, +0x2986,0x2986,0x31a6,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x39c7,0x39e8,0x31a6,0x39e7,0x39e8,0x4228,0x4208,0x3187,0x2987,0x31c7,0x3a08,0x31e8,0x31c7,0x31c7,0x3a28,0x39e7,0x4229,0x4229,0x31c7,0x3a08,0x39e8,0x39e7,0x3a08,0x39e7,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4228,0x39e8,0x3a08,0x3a09,0x39c7,0x4249,0x4249,0x3a08,0x4229,0x3a08,0x3a28,0x52aa,0x3a08,0x39e7,0x4228,0x4228,0x4269,0x39e7,0x4228,0x3a28,0x3a28,0x3a28,0x3a28,0x39e8,0x4a49,0x4a49,0x39e7,0x39e8,0x4229,0x4249,0x31e8,0x3a08,0x4249,0x4269,0x4229,0x4a8a,0x4249,0x4228,0x4248,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x39c7,0x39e7,0x3a07,0x4249,0x4249,0x3a28,0x4249,0x4249,0x3a28,0x3a08,0x4229,0x4229,0x4228,0x4228,0x4208,0x4228,0x4249,0x4a69,0x4a69,0x4a6a,0x4a6a,0x4228,0x4228,0x4a6a,0x4249,0x3a08,0x4a6a,0x4249,0x18c3,0x2945,0x18e3,0x41ea,0xbdb7,0x9cd3,0x7bcf,0x4208,0x18e3,0x18e3,0x18c3,0x18a3,0x2124,0x10a2,0x1081,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x3165,0x62e6,0x4a25,0x2945,0x2965,0x2965,0x2965,0x2965,0x2945,0x0861,0x0861,0x18c2,0x1082,0x1082,0x2104,0x10a2,0x0861,0x0861,0x2945,0x3165,0x2965,0x2945,0x2945,0x62e5,0x83c5,0x7b45,0x7325,0x62c5,0x3165,0x2965,0x2965,0x2965,0x2965,0x1082,0x0861,0x10a2,0x18c3,0x10a2,0x18e3,0x18c3,0x0861,0x1082,0x2965,0x3166,0x3186,0x3186,0x3186,0x4a46,0x7b66,0x7b45,0x7b65,0x5a65,0x3185,0x3186,0x3186,0x3186,0x2965,0x1082,0x0841,0x10a2,0x18c3,0x10a2,0x18c3,0x18e3,0x2124,0x31a7,0x4208,0x4a49,0x31a7,0x2104,0x4249,0x4249,0x4228,0x4228,0x4a69,0x4a49,0x4a49,0x4a49,0x39e7,0x39e7,0x52aa,0x4a69,0x4228,0x4a6a,0x4228,0x4249,0x4a8a,0x4228,0x4228,0x4208,0x4a49,0x4248,0x3a28,0x3a28,0x4249,0x4a69,0x39c8,0x39e8,0x4229,0x4229,0x4208,0x39e7,0x4a49,0x4a69,0x4228,0x39e7,0x4249,0x4249,0x3a28,0x4a49,0x4228,0x4228,0x4249,0x4249,0x4229,0x4228,0x39e7,0x4208,0x39e8,0x39e8,0x39e7,0x4248,0x4228,0x4a69,0x39e8,0x4229,0x4208,0x4228,0x31a7,0x39c7,0x39c7,0x39e7,0x4249,0x39e7,0x3a07,0x3a08,0x39c7,0x39c7,0x39e7,0x4229,0x31a6,0x31c6,0x31e7,0x39e7,0x39c7,0x4208,0x4249,0x39e8,0x39e7,0x31c6,0x4228,0x39e7,0x4209,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x4208,0x4249,0x31a6,0x31a7,0x31a7,0x31c7,0x3a08,0x39e8,0x3a08,0x4249,0x31c7,0x39e7,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4228,0x31a6,0x31a6,0x39c7,0x39c7,0x3186,0x2986,0x3186, +0x2965,0x2966,0x31a6,0x39c7,0x2986,0x2986,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x31c7,0x31e8,0x3208,0x3a49,0x3a08,0x31c7,0x31a7,0x39e7,0x4228,0x39e7,0x31e7,0x31e7,0x3a07,0x31c7,0x4249,0x52ab,0x31c7,0x3a08,0x4228,0x31a6,0x4a8a,0x4229,0x2986,0x31c7,0x39e8,0x4249,0x4269,0x4228,0x3a08,0x4228,0x4a69,0x4228,0x31c7,0x3a08,0x4229,0x4228,0x3a08,0x39e7,0x4229,0x4228,0x3a08,0x4229,0x4249,0x3a28,0x4229,0x3a28,0x4249,0x4a69,0x39e8,0x4208,0x4a69,0x4249,0x4228,0x3a08,0x3a08,0x39e8,0x3a08,0x4a6a,0x4a6a,0x31c7,0x3a08,0x4228,0x4248,0x4248,0x4228,0x31e7,0x4269,0x4a8a,0x4228,0x4a49,0x4a49,0x4228,0x3a08,0x4a8a,0x4249,0x4228,0x4228,0x39e7,0x4a69,0x4a89,0x4248,0x4228,0x4249,0x4209,0x3a08,0x4249,0x4228,0x4248,0x4a69,0x4228,0x39e7,0x3a08,0x4a69,0x4a49,0x4a6a,0x4229,0x528a,0x4a69,0x4229,0x4a49,0x4249,0x4249,0x52cb,0x4a69,0x18a3,0x2125,0x18e3,0x3188,0xa535,0x8c71,0x738e,0x3a07,0x18e3,0x18e3,0x18e3,0x18c3,0x2925,0x2104,0x2104,0x18e3,0x2945,0x2965,0x2945,0x2945,0x2965,0x2965,0x3165,0x39c5,0x31a5,0x2965,0x2965,0x2965,0x2965,0x3186,0x2944,0x18e3,0x18e3,0x18c3,0x1082,0x1082,0x2104,0x2104,0x2103,0x18e3,0x2924,0x2965,0x3165,0x2965,0x2945,0x41e5,0x4a25,0x4a25,0x4a25,0x4205,0x3165,0x2965,0x3185,0x3185,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18e3,0x2124,0x2104,0x18e3,0x2925,0x3166,0x3186,0x3186,0x3186,0x31a6,0x4a26,0x5266,0x4a26,0x39a6,0x3186,0x31a6,0x3186,0x3186,0x2945,0x18c2,0x10a2,0x18c3,0x18c3,0x10a2,0x18c3,0x18e3,0x2104,0x3187,0x39e8,0x4209,0x3186,0x2124,0x3a08,0x4249,0x4a8a,0x4228,0x4a8a,0x4249,0x4249,0x52aa,0x4228,0x4a48,0x4a48,0x3a08,0x4249,0x4a49,0x3a07,0x4228,0x4229,0x4249,0x4228,0x4208,0x4a49,0x4228,0x39e7,0x3a08,0x4a69,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4228,0x4249,0x4228,0x4228,0x528a,0x4208,0x4229,0x4228,0x3a08,0x4228,0x3a08,0x39e8,0x4229,0x4228,0x39e7,0x31c7,0x3a08,0x4a69,0x39e7,0x4228,0x4228,0x3a07,0x4228,0x31c7,0x31c7,0x4228,0x3a08,0x39e7,0x3a08,0x39e8,0x4249,0x3a08,0x528a,0x39e8,0x4249,0x4228,0x4a49,0x39e7,0x39c7,0x4228,0x4228,0x39c7,0x39e7,0x4a49,0x29a6,0x31c7,0x3a07,0x3a28,0x3a08,0x39e7,0x3a07,0x39c7,0x31a6,0x4208,0x31a6,0x52ab,0x52ab,0x39e7,0x31c7,0x3a08,0x31c7,0x39c7,0x31c7,0x4249,0x39c7,0x31a7,0x3a08,0x39e8,0x31c6,0x4228,0x4229,0x31c7,0x39e8,0x2986,0x31a7,0x39e7,0x31c7,0x31a6,0x2986,0x31c7,0x2986,0x31a6,0x31c7, +0x2986,0x3186,0x39c7,0x3186,0x31c7,0x2986,0x2986,0x31a6,0x31c7,0x31a6,0x31c7,0x31e7,0x3208,0x3a08,0x4a8a,0x4229,0x39c7,0x39e7,0x39c7,0x39e8,0x4208,0x3a08,0x39e7,0x4a69,0x39e7,0x3a08,0x39e7,0x3a08,0x4a8a,0x4228,0x39e8,0x3a08,0x31c7,0x3a08,0x39e8,0x31a7,0x39e8,0x3a08,0x4228,0x39c7,0x39e8,0x3a08,0x39e7,0x3a08,0x4249,0x4249,0x4a8a,0x3a08,0x39e7,0x4a6a,0x3a08,0x39e7,0x4228,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4249,0x3a08,0x4208,0x4208,0x4a49,0x4229,0x4a49,0x4229,0x4208,0x3a28,0x4249,0x4249,0x3a08,0x39e8,0x4a49,0x4a69,0x3a07,0x4248,0x4228,0x3a08,0x39e8,0x4229,0x4229,0x5aab,0x4228,0x3a08,0x3a08,0x3a08,0x4229,0x4a49,0x4209,0x4249,0x4249,0x4249,0x4228,0x4229,0x3a08,0x3a09,0x4229,0x4229,0x4a69,0x52aa,0x3a08,0x3a08,0x4249,0x4aaa,0x4aaa,0x4269,0x3a28,0x4269,0x4229,0x4229,0x4a69,0x4a8a,0x52ca,0x4a8a,0x4228,0x18a2,0x18c3,0x18c3,0x2967,0x9493,0x8410,0x6b6e,0x39e7,0x18e3,0x18e3,0x18e3,0x18c3,0x2945,0x2965,0x2965,0x2924,0x2945,0x2945,0x2924,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2945,0x2965,0x3165,0x31a6,0x3165,0x2965,0x2944,0x2103,0x1082,0x1082,0x2124,0x2965,0x31a6,0x3185,0x2965,0x3165,0x3185,0x2965,0x2945,0x2945,0x2945,0x2945,0x2965,0x3185,0x2965,0x2965,0x3186,0x3186,0x3185,0x3165,0x3165,0x20e4,0x18a2,0x1082,0x18e3,0x2965,0x3186,0x2945,0x2945,0x31a6,0x3186,0x3186,0x3166,0x2965,0x3186,0x3186,0x3165,0x39a6,0x31a6,0x39c7,0x31a6,0x3186,0x2924,0x2924,0x2124,0x2104,0x18c3,0x10a2,0x18e3,0x18e3,0x2104,0x3186,0x39e8,0x39e8,0x2966,0x2124,0x3a08,0x4a49,0x4a49,0x4249,0x4a69,0x4228,0x4a6a,0x52aa,0x4a49,0x4a89,0x52aa,0x4a69,0x4249,0x4228,0x4269,0x4249,0x4249,0x4229,0x4228,0x528a,0x4228,0x4228,0x39e7,0x4208,0x4228,0x4228,0x4248,0x3a28,0x4228,0x4228,0x39e8,0x4249,0x4a6a,0x4208,0x4229,0x3a08,0x39e8,0x3a08,0x4208,0x4a69,0x4249,0x3a09,0x3a09,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x4228,0x4228,0x3a08,0x31c7,0x4a69,0x3a07,0x31a6,0x39e7,0x3a08,0x3a08,0x39e7,0x39e7,0x4a6a,0x4229,0x4208,0x39c7,0x4208,0x3a08,0x4a49,0x3a08,0x3a08,0x39e7,0x39e7,0x4248,0x39e7,0x41e8,0x31a7,0x4208,0x4a49,0x3a08,0x4249,0x4228,0x31c6,0x4228,0x4228,0x4a69,0x31c7,0x3a08,0x4249,0x39e8,0x4209,0x39e8,0x39e7,0x4228,0x39e7,0x4229,0x39c7,0x4208,0x4229,0x4249,0x4a89,0x4228,0x3a08,0x31a7,0x3a08,0x31a7,0x31c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c6,0x31c7,0x3a08,0x31c6, +0x2986,0x3186,0x31a7,0x31a6,0x31c7,0x2986,0x2986,0x2986,0x31a7,0x31c7,0x39e8,0x31c7,0x3a08,0x4229,0x31c7,0x31a7,0x31c7,0x4a69,0x39e8,0x31e8,0x3a08,0x4249,0x39e8,0x3a08,0x39e8,0x39c8,0x31a7,0x4229,0x528a,0x3a08,0x3a08,0x39e7,0x31c7,0x3a08,0x39e8,0x31c7,0x31c7,0x31e7,0x4228,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e8,0x4228,0x4249,0x4249,0x4a8a,0x4269,0x3a08,0x3a28,0x4249,0x4249,0x4249,0x4208,0x4a49,0x3a08,0x4a69,0x4248,0x4228,0x4a49,0x4a6a,0x4a49,0x4a49,0x4249,0x3a08,0x3a08,0x4209,0x426a,0x4249,0x4229,0x4229,0x4229,0x4249,0x4249,0x4249,0x4208,0x4208,0x39e8,0x4208,0x4a6a,0x4228,0x3a28,0x4249,0x4a69,0x4228,0x4228,0x4a8a,0x4249,0x3a29,0x4229,0x4249,0x4229,0x4249,0x3a28,0x4269,0x3a08,0x3a08,0x39e8,0x4208,0x4249,0x4208,0x4229,0x4aaa,0x4a69,0x4249,0x4249,0x3208,0x4249,0x4a69,0x4a69,0x4a8a,0x4a8a,0x4228,0x18a2,0x18c3,0x18a3,0x2926,0x83f1,0x73cf,0x634d,0x39c7,0x18c3,0x18c3,0x18c3,0x18c3,0x2965,0x2945,0x2124,0x2104,0x2104,0x20e4,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x20e3,0x20e3,0x2104,0x2104,0x2104,0x2924,0x2124,0x2124,0x2944,0x2104,0x10a2,0x1082,0x2124,0x3185,0x2965,0x2965,0x2945,0x2944,0x2924,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2124,0x2124,0x2945,0x2945,0x2945,0x2945,0x3165,0x2104,0x18a2,0x1082,0x20e4,0x3166,0x3165,0x2925,0x2924,0x2965,0x2945,0x2945,0x2104,0x20e4,0x2104,0x2924,0x2124,0x2945,0x2965,0x3165,0x2944,0x2104,0x20e4,0x2124,0x2124,0x2124,0x18c3,0x1082,0x18e3,0x20e3,0x2104,0x3186,0x39c7,0x31a7,0x2945,0x2924,0x4a69,0x528a,0x41e7,0x4248,0x4228,0x4249,0x4249,0x4a6a,0x4a69,0x4249,0x4a49,0x4a69,0x4249,0x39e8,0x4249,0x4a69,0x4a49,0x4a69,0x4a8a,0x4228,0x4228,0x4a69,0x3a08,0x4229,0x4208,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x4249,0x3a08,0x4229,0x4208,0x4208,0x4228,0x4228,0x4248,0x3a08,0x31e7,0x4208,0x4229,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4229,0x39c7,0x4208,0x39e7,0x4a69,0x3a08,0x39e7,0x3a07,0x4228,0x4229,0x39c8,0x4208,0x4208,0x39c7,0x31c7,0x4249,0x39e7,0x3a08,0x39e7,0x4a69,0x4228,0x31c7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x3a08,0x3a07,0x31c6,0x39e7,0x4249,0x4a69,0x31c7,0x31c7,0x3a08,0x39e8,0x4249,0x39e8,0x3a08,0x4228,0x39e7,0x3186,0x4208,0x4228,0x4229,0x4229,0x4208,0x4228,0x39e8,0x39c7,0x3a08,0x39e7,0x31e7,0x31c7,0x39e7,0x31a6,0x31a6,0x3a07,0x39e7,0x4208,0x39e7, +0x2987,0x2966,0x39e7,0x31a6,0x2145,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x31e7,0x39e8,0x3a08,0x4249,0x39e8,0x31c7,0x39e8,0x31e8,0x39e8,0x39e8,0x39e7,0x39e7,0x39c7,0x39c7,0x4208,0x4249,0x3a08,0x3a07,0x3a28,0x39e7,0x39c7,0x31c7,0x31a7,0x31e8,0x3a28,0x39e7,0x31c7,0x39e7,0x3a28,0x4249,0x4249,0x3a08,0x39e7,0x3a28,0x4a69,0x4228,0x4249,0x3a08,0x3a08,0x4249,0x3a28,0x4249,0x3a08,0x39e8,0x4a69,0x4a6a,0x4249,0x4249,0x4a4a,0x4a6a,0x4228,0x4249,0x4228,0x4208,0x4a49,0x4249,0x4249,0x4249,0x3a08,0x39e8,0x4229,0x4a49,0x4208,0x4228,0x4228,0x4208,0x4a49,0x4269,0x4249,0x4a49,0x4249,0x4a89,0x4a69,0x3a08,0x4248,0x4a69,0x4228,0x4249,0x4a69,0x31c7,0x4249,0x4269,0x3a28,0x428a,0x4249,0x4229,0x3a08,0x4a69,0x4a69,0x4229,0x4a69,0x4a29,0x4229,0x4a6a,0x4229,0x426a,0x4229,0x4249,0x4a49,0x5acb,0x4a6a,0x4a6a,0x18c3,0x18a2,0x18c3,0x2125,0x738f,0x738e,0x5b0c,0x39c6,0x18c3,0x18c3,0x18c3,0x18c3,0x2124,0x18e3,0x18c3,0x18c3,0x18a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18e3,0x20e3,0x10a2,0x1082,0x2104,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c2,0x18c3,0x18a3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e3,0x2104,0x18a2,0x1082,0x18e3,0x2925,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x10a2,0x18a3,0x18c3,0x18e3,0x2104,0x18c3,0x10a2,0x20e4,0x20e4,0x2104,0x2966,0x31a7,0x3187,0x2945,0x2945,0x4a69,0x4a49,0x528a,0x5aab,0x52aa,0x4269,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4a6a,0x52cb,0x4a8a,0x4269,0x4249,0x4269,0x4a8a,0x4249,0x3a28,0x3a28,0x4228,0x3a08,0x4249,0x4249,0x4248,0x4a49,0x4228,0x4228,0x39c7,0x39e8,0x4229,0x31c7,0x4228,0x4249,0x3a08,0x31e7,0x3a07,0x39e7,0x39e7,0x4228,0x4228,0x3a08,0x3a28,0x3a08,0x3a08,0x4a49,0x3a08,0x3a08,0x4228,0x3a08,0x4229,0x39e7,0x39c7,0x39e8,0x4a49,0x39e7,0x4a69,0x4228,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x41e8,0x39e7,0x4a69,0x4a69,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3a08,0x3a07,0x3a08,0x39e7,0x31c7,0x3a08,0x39e7,0x4228,0x39e7,0x3a07,0x4208,0x3a08,0x39e7,0x3a07,0x3a08,0x4a8a,0x4269,0x31a6,0x3a08,0x39e7,0x31c7,0x39e8,0x41e8,0x4229,0x31a7,0x3a08,0x39e8,0x4228,0x4208,0x31c7,0x31e7,0x4228,0x4248,0x31e7,0x4228,0x3a07,0x39c7,0x3186,0x3186,0x3a08, +0x31a7,0x2986,0x31a7,0x2965,0x31c7,0x31c7,0x29a6,0x2986,0x39c7,0x39e8,0x2986,0x31c7,0x31c7,0x31a7,0x3a08,0x31e7,0x31c7,0x3187,0x31a7,0x31a7,0x4208,0x4249,0x31c6,0x4229,0x4208,0x39c7,0x39e7,0x39c7,0x3a08,0x39e8,0x3a08,0x4228,0x3a08,0x39e7,0x39c7,0x31c7,0x3a29,0x3a28,0x3a07,0x3a08,0x31c7,0x3a08,0x31e8,0x3a08,0x52ab,0x3a28,0x3a08,0x4249,0x4249,0x3a28,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x4249,0x4228,0x4249,0x4229,0x4229,0x3a09,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4a49,0x4a6a,0x4228,0x4269,0x4249,0x39e8,0x4249,0x4228,0x4228,0x39e8,0x4228,0x4249,0x39e8,0x4a8a,0x5b0c,0x4a8a,0x4a69,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x4249,0x4228,0x4a69,0x4a69,0x39e7,0x4a8a,0x4a8a,0x3a08,0x3a08,0x4249,0x4249,0x39e8,0x4249,0x4249,0x4228,0x4a49,0x4a6a,0x52aa,0x4249,0x4208,0x4a8a,0x4229,0x4228,0x4a8a,0x52ab,0x4249,0x4228,0x18a3,0x18a2,0x18e3,0x2105,0x632e,0x632d,0x5acb,0x31a6,0x18c3,0x18c3,0x18a3,0x18c2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a3,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x18a3,0x10a2,0x18a2,0x2104,0x20e4,0x18e3,0x2945,0x3186,0x3166,0x2945,0x2965,0x4a49,0x4a49,0x52aa,0x4a6a,0x528a,0x528a,0x4a6a,0x4a6a,0x4a69,0x4249,0x4a69,0x4a69,0x4269,0x4a8a,0x4249,0x3a28,0x3a08,0x4249,0x3a08,0x4248,0x4228,0x4228,0x4248,0x4249,0x3a28,0x4228,0x4248,0x4248,0x4a69,0x4a69,0x39e7,0x4208,0x4208,0x3a08,0x4228,0x4a49,0x3a08,0x4249,0x39c7,0x39c7,0x4208,0x31c7,0x4249,0x4249,0x3a08,0x3a08,0x4228,0x4228,0x4248,0x4228,0x4a69,0x4249,0x3a08,0x3a08,0x4228,0x4a69,0x4228,0x3a08,0x4249,0x4248,0x3a08,0x3a08,0x31c7,0x4208,0x4229,0x4269,0x3a28,0x4228,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x2986,0x4229,0x4228,0x39e8,0x39e8,0x4208,0x4208,0x39e7,0x4249,0x3a07,0x39c7,0x4208,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x31c7,0x39e8,0x4208,0x39e7,0x4208,0x29a6,0x31c7,0x39e8,0x3a08,0x31a6,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x3a07,0x31a6,0x31a6,0x2966,0x31a6,0x3186, +0x2966,0x2966,0x31a6,0x31c7,0x31e7,0x31e7,0x3a08,0x3186,0x31c7,0x31c7,0x31c7,0x39e7,0x39e7,0x39e7,0x3a08,0x31a7,0x31a7,0x31c7,0x39e8,0x3a08,0x4a29,0x4249,0x4228,0x3a08,0x4229,0x3a08,0x4208,0x39c7,0x39c7,0x39e7,0x39e8,0x4229,0x4249,0x3a08,0x31c6,0x4228,0x4249,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x39e8,0x31e8,0x4a8a,0x4229,0x31e8,0x4a6a,0x4a6a,0x31e7,0x4249,0x4269,0x3a28,0x4249,0x3a28,0x4228,0x4249,0x4249,0x4229,0x4229,0x4229,0x4228,0x4228,0x4229,0x4269,0x4a8a,0x3a08,0x4229,0x4249,0x3a08,0x39e7,0x4228,0x4a69,0x4269,0x4aaa,0x4228,0x4228,0x4228,0x4209,0x4208,0x4228,0x4249,0x4229,0x4249,0x4a69,0x4228,0x3a08,0x3a29,0x4a6a,0x4229,0x4a49,0x52aa,0x528a,0x4228,0x39e7,0x3a08,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4229,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4208,0x4228,0x4a8a,0x4a49,0x4a8a,0x4249,0x4249,0x4208,0x10a2,0x10a2,0x18c3,0x2104,0x5aec,0x630c,0x528b,0x31a6,0x18c3,0x18c3,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2104,0x20e3,0x18e3,0x2125,0x2965,0x2945,0x2124,0x3166,0x4a69,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4249,0x52aa,0x4aaa,0x4a69,0x4269,0x4aaa,0x4a8a,0x4249,0x4a49,0x4208,0x4a69,0x4a69,0x39c7,0x4a8a,0x4a69,0x4228,0x4249,0x4228,0x4228,0x4228,0x4248,0x3a28,0x4228,0x5289,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4228,0x3a07,0x39e7,0x39e7,0x39c7,0x4228,0x39e7,0x3a07,0x3a28,0x4229,0x3a08,0x4228,0x4248,0x4248,0x3a07,0x4228,0x4a69,0x4208,0x4228,0x3a08,0x4228,0x3a08,0x4a69,0x39e7,0x3a07,0x39e8,0x39c7,0x39e7,0x4228,0x3a08,0x4249,0x4228,0x39e8,0x31c7,0x39e7,0x39c7,0x4228,0x4a49,0x39c7,0x4a49,0x39e8,0x39e7,0x3a28,0x39e7,0x4208,0x39e8,0x31e8,0x4228,0x4228,0x4248,0x39e7,0x31a6,0x4208,0x4249,0x4a49,0x39e7,0x4208,0x3a08,0x39c7,0x4a49,0x39c7,0x31a7,0x3a08,0x4229,0x31a6,0x39e7,0x3a08,0x39c7,0x4208,0x31a7,0x3187,0x31c7,0x31a6,0x3a07,0x31a6,0x39c7,0x39c7,0x2965, +0x31a7,0x39c7,0x4228,0x39c7,0x31a7,0x39e7,0x39e8,0x31a7,0x39e8,0x31a7,0x2986,0x39e8,0x3a08,0x4249,0x4249,0x39e8,0x31a6,0x31e8,0x31c7,0x39c7,0x4229,0x4208,0x3a08,0x31c8,0x31e8,0x31e7,0x39e7,0x4228,0x3a08,0x4208,0x4249,0x3a08,0x3a08,0x3a08,0x39e7,0x4208,0x39e8,0x39e7,0x39e7,0x3a28,0x4249,0x4249,0x39e8,0x3a08,0x4229,0x4229,0x3a08,0x4a4a,0x3a08,0x4249,0x3a28,0x3a28,0x3a28,0x4229,0x3a28,0x4249,0x4a8a,0x52aa,0x4a6a,0x4229,0x3a08,0x39e7,0x4a8a,0x3a28,0x4269,0x4a8a,0x4208,0x4229,0x4269,0x3a08,0x4249,0x4a49,0x4248,0x4269,0x4a69,0x39e7,0x39e7,0x4229,0x4a6a,0x3a08,0x3a08,0x4229,0x52ab,0x4249,0x4a69,0x4a6a,0x4249,0x4249,0x526a,0x4a8a,0x4249,0x4249,0x4248,0x3a08,0x3a08,0x4269,0x4249,0x4229,0x4a49,0x52aa,0x4a8a,0x4228,0x4269,0x4249,0x4249,0x39e8,0x4208,0x4208,0x4a49,0x4a69,0x4229,0x4228,0x4249,0x4a6a,0x4208,0x10a2,0x10a2,0x18c3,0x18e4,0x52ac,0x5aec,0x4a6a,0x3186,0x18c3,0x18c3,0x18a2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x18a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x20e3,0x18e3,0x2124,0x2945,0x2925,0x2104,0x2945,0x4a69,0x4a8a,0x4a69,0x4a49,0x4a49,0x528a,0x4249,0x4249,0x4269,0x4249,0x4a6a,0x4249,0x4229,0x4228,0x4228,0x4208,0x528a,0x528a,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x4a49,0x4208,0x4228,0x39e7,0x4228,0x4228,0x4a8a,0x39e8,0x4249,0x4208,0x4228,0x39e7,0x39c7,0x39e7,0x4228,0x3a28,0x31e7,0x4228,0x39e7,0x3a08,0x4249,0x4229,0x3a07,0x39e7,0x39e7,0x4248,0x4a69,0x39e7,0x39e8,0x4249,0x39e7,0x3a08,0x4249,0x3a08,0x4228,0x3a08,0x39e7,0x31c6,0x39e7,0x3a28,0x4249,0x4208,0x39e7,0x3a08,0x3a08,0x4229,0x3a08,0x39e7,0x4228,0x3a08,0x3a07,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x3187,0x39e8,0x31c7,0x4229,0x39c7,0x3a07,0x4208,0x3a08,0x3a07,0x4229,0x4229,0x39e8,0x39e8,0x39e8,0x39c7,0x4229,0x4249,0x39e8,0x39e7,0x39e8,0x31a6,0x31e7,0x39e7,0x39e7,0x31a6,0x39c7,0x31c7,0x31a7,0x31a7,0x4a49,0x39e7,0x31a6,0x39c7,0x31a6, +0x3a08,0x39e8,0x2986,0x31a6,0x31a6,0x39c7,0x31a7,0x39c7,0x3a08,0x31c7,0x31a7,0x31a7,0x31c7,0x4208,0x4229,0x31e7,0x31c7,0x3a08,0x29c7,0x31c7,0x39e8,0x39a7,0x31c8,0x31e8,0x31e7,0x3a28,0x4249,0x3a07,0x3a28,0x3a07,0x4207,0x4228,0x39e7,0x4249,0x4a49,0x4208,0x39e7,0x39e8,0x3a08,0x4249,0x4249,0x4249,0x3a08,0x3a08,0x3a29,0x4228,0x4269,0x4249,0x4229,0x4a49,0x4228,0x5b0c,0x4a8a,0x3a08,0x3a28,0x52ab,0x4a49,0x4a49,0x4a69,0x4248,0x3a28,0x4269,0x4249,0x3a28,0x4249,0x4a49,0x41e8,0x4208,0x4229,0x4228,0x4a49,0x4228,0x4a69,0x4a6a,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4a6a,0x4a6a,0x528a,0x528a,0x4a49,0x4249,0x52cb,0x4a8a,0x4249,0x4228,0x4248,0x4248,0x4a8a,0x4228,0x4249,0x4a89,0x4228,0x4228,0x4208,0x4208,0x52ab,0x4208,0x4249,0x4249,0x4229,0x4249,0x4208,0x4229,0x4a49,0x4a69,0x4228,0x4228,0x4228,0x4229,0x4a49,0x4a49,0x18c3,0x10a2,0x18c3,0x20e4,0x528b,0x5acb,0x4a49,0x3185,0x18c3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x2124,0x20e3,0x18c3,0x2104,0x2125,0x2104,0x20e4,0x2124,0x4249,0x4a69,0x52aa,0x4229,0x4a6a,0x4a49,0x4249,0x4249,0x4229,0x4a69,0x4a8a,0x4a69,0x4a49,0x52cb,0x4a69,0x4a89,0x4248,0x4aaa,0x4248,0x39e7,0x4229,0x4228,0x3a08,0x4228,0x4228,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4208,0x4228,0x4a69,0x4249,0x39e7,0x4228,0x4a8a,0x4a89,0x4228,0x3a07,0x3a08,0x31c7,0x4208,0x4a6a,0x3a08,0x39e7,0x3a08,0x3a08,0x528a,0x4a49,0x39e8,0x3a08,0x4229,0x39c7,0x39c7,0x4208,0x4229,0x4228,0x3a08,0x4249,0x31c6,0x3a08,0x31c7,0x52ab,0x4208,0x39e8,0x4208,0x31a6,0x3a08,0x3a08,0x39e7,0x4229,0x3a08,0x4228,0x31a6,0x31a6,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x39e8,0x4228,0x4208,0x4208,0x4208,0x3a08,0x31c7,0x3a08,0x4228,0x4229,0x39c7,0x4208,0x31a7,0x39e8,0x4249,0x3a08,0x31a7,0x31a7,0x31c7,0x39e7,0x31a6,0x31c7,0x39e7,0x4208,0x3a08,0x39e7,0x39e8,0x31a6,0x31a6,0x3186,0x2945,0x31c6, +0x39c7,0x31c6,0x2145,0x31c6,0x39e7,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x39c8,0x31a7,0x2986,0x2986,0x39e8,0x3a08,0x31c7,0x3a08,0x3208,0x29a6,0x31a7,0x39c7,0x39e8,0x31c7,0x4208,0x4249,0x31e8,0x29a6,0x31c7,0x39e8,0x4229,0x4228,0x4249,0x4a69,0x39c7,0x3a07,0x4228,0x3a28,0x3a28,0x31e7,0x4249,0x4269,0x4249,0x3a08,0x3a28,0x4249,0x4a8a,0x3a08,0x4a49,0x4a49,0x4228,0x52aa,0x4249,0x3a08,0x4249,0x4249,0x4a69,0x5289,0x4a69,0x39e7,0x4228,0x4a69,0x4249,0x52cb,0x4249,0x4249,0x4229,0x4249,0x4228,0x4a89,0x4248,0x4a69,0x4249,0x4249,0x4a8a,0x52cb,0x3a08,0x4248,0x4249,0x4249,0x4a69,0x52ab,0x4a8a,0x4a8a,0x52ab,0x4a49,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x4aaa,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4249,0x3a08,0x4a8a,0x4a8a,0x4a69,0x39e7,0x4249,0x4229,0x528a,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x3a08,0x4a69,0x4228,0x4228,0x18c3,0x10a2,0x18e3,0x18e4,0x4a4a,0x528a,0x4249,0x3186,0x18c3,0x18e3,0x18c3,0x18c2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x2124,0x18e3,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x2104,0x4228,0x4a69,0x52aa,0x4248,0x4a49,0x4a49,0x4249,0x4a69,0x4269,0x4a69,0x52aa,0x52ab,0x4249,0x4a6a,0x4a8a,0x4269,0x4a89,0x4248,0x4228,0x39e7,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x3a07,0x4249,0x39c7,0x39e7,0x4208,0x4a49,0x4208,0x39e7,0x4228,0x4228,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4229,0x39e8,0x4a6a,0x4228,0x3a08,0x39e7,0x4208,0x4a49,0x4208,0x4248,0x4249,0x39e7,0x31e7,0x3a08,0x4249,0x4208,0x4208,0x3a08,0x4228,0x3a07,0x3a08,0x4249,0x39c7,0x4a49,0x4228,0x39c7,0x4208,0x31e7,0x39e8,0x39e7,0x3a08,0x3a28,0x31e7,0x39c7,0x31a6,0x4249,0x3a08,0x31c7,0x39e7,0x31c7,0x31c7,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x31c7,0x3a07,0x4228,0x4208,0x3a08,0x39e8,0x4208,0x4a6a,0x31a7,0x39c7,0x39e8,0x3a08,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31e7,0x31e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x31a6,0x31a6, +0x2965,0x2986,0x2986,0x31c7,0x3a08,0x31e7,0x31e7,0x31a6,0x39c7,0x39c7,0x31a7,0x31c7,0x31e8,0x31e8,0x31a7,0x3a08,0x39c7,0x4228,0x4229,0x3a08,0x31e7,0x31a7,0x39c7,0x31a7,0x4208,0x31a7,0x31a7,0x31c7,0x4a6a,0x3a08,0x39e8,0x39e8,0x4249,0x4209,0x3a07,0x4248,0x4249,0x3a28,0x4249,0x3a08,0x39c7,0x4208,0x41e8,0x4a49,0x4a49,0x5b0b,0x4a89,0x3a07,0x3a08,0x4a69,0x528a,0x39e7,0x4229,0x4a49,0x4a49,0x4a49,0x528a,0x4249,0x5acb,0x4229,0x4208,0x4a69,0x4229,0x4a69,0x4249,0x4229,0x4a69,0x4228,0x4a8a,0x4248,0x4a69,0x4a69,0x52ab,0x4a8a,0x4a8a,0x4a8a,0x4269,0x4249,0x4a69,0x4a8a,0x3a28,0x4249,0x4a6a,0x4a49,0x5acb,0x52aa,0x5acb,0x630c,0x4a69,0x4229,0x4a6a,0x4a69,0x4249,0x4269,0x4249,0x4249,0x3a08,0x4249,0x428a,0x3a08,0x4249,0x3a08,0x4208,0x4a69,0x4a49,0x4a49,0x4249,0x4a8a,0x426a,0x3a08,0x3a08,0x3a08,0x4249,0x4248,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x4229,0x4a6a,0x4229,0x3186,0x18c3,0x20e3,0x18c3,0x18c2,0x18c2,0x18a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x2104,0x18c3,0x18c3,0x2104,0x2104,0x2104,0x18e4,0x2104,0x4228,0x4a69,0x4a69,0x4248,0x4a69,0x4a49,0x4249,0x4a69,0x4aaa,0x4229,0x4a6a,0x4a49,0x4a69,0x4a6a,0x4249,0x4249,0x528a,0x4a49,0x3a08,0x4229,0x4228,0x528a,0x4229,0x4228,0x4228,0x3a08,0x39e7,0x39e7,0x4208,0x4208,0x4208,0x39c7,0x4a6a,0x31e7,0x3a08,0x3a08,0x4208,0x39e7,0x39e7,0x3a07,0x4a69,0x52aa,0x3a07,0x31a7,0x4249,0x4228,0x3a07,0x39e7,0x3a07,0x4208,0x4228,0x3a08,0x4228,0x31c7,0x4248,0x4249,0x4249,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x3a08,0x39e8,0x4208,0x4208,0x31a7,0x4249,0x4248,0x31c7,0x3a08,0x3a08,0x4248,0x39c7,0x31e7,0x31c6,0x3a07,0x31a6,0x31c7,0x3a08,0x31a6,0x4228,0x3a07,0x39e7,0x39e7,0x3a08,0x4228,0x4249,0x4208,0x39e7,0x39c7,0x4207,0x4228,0x4229,0x4209,0x39e8,0x3186,0x39c7,0x3a08,0x3207,0x29a6,0x31c7,0x31a6,0x31a7,0x31c7,0x31e7,0x39e7,0x39e7,0x4228,0x4208,0x31a6,0x39e7,0x39e7, +0x31a6,0x31a6,0x31c7,0x31c7,0x31c7,0x31e7,0x31c7,0x39c7,0x31a7,0x31a6,0x31c7,0x39e8,0x3a28,0x3208,0x2985,0x31c7,0x31c7,0x3a08,0x31a7,0x3a08,0x39e7,0x3a07,0x31c6,0x4208,0x4208,0x39e7,0x3a08,0x3a28,0x4249,0x3a09,0x4229,0x4208,0x4229,0x4a49,0x4228,0x4228,0x4a8a,0x4249,0x4249,0x39e8,0x3a08,0x4249,0x3a08,0x4249,0x4a49,0x39e7,0x4228,0x3a08,0x4248,0x3a08,0x4229,0x4229,0x4a49,0x4228,0x4229,0x4249,0x4228,0x4a8a,0x4a6a,0x4228,0x528a,0x4229,0x4a69,0x4249,0x4249,0x4a69,0x4228,0x4a69,0x52aa,0x4a6a,0x4a8a,0x39e7,0x4a8a,0x4a49,0x4a69,0x4a6a,0x4249,0x4a8a,0x4a6a,0x52cb,0x4229,0x4a49,0x4aaa,0x4a8a,0x52aa,0x4a49,0x632c,0x5aec,0x4a6a,0x4249,0x4249,0x4249,0x4a8a,0x4a8a,0x4249,0x4208,0x4228,0x4229,0x4249,0x4208,0x4a49,0x4228,0x4a69,0x4269,0x4a8a,0x4a6a,0x4a49,0x4a8a,0x4a69,0x3a08,0x3a08,0x4269,0x4269,0x4a8a,0x4229,0x18a2,0x10a2,0x20e4,0x18c3,0x4208,0x4a29,0x4208,0x3186,0x18e3,0x20e3,0x18e3,0x18c3,0x18e3,0x2104,0x20e3,0x20e3,0x20e3,0x20e3,0x18e3,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2104,0x2103,0x2124,0x2104,0x2104,0x20e3,0x18e3,0x18e3,0x18c2,0x18e3,0x18e3,0x18a2,0x18a2,0x18c2,0x18a2,0x18c3,0x18c2,0x18c3,0x10a2,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2103,0x20e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c2,0x18c3,0x2103,0x18c3,0x10a2,0x18a2,0x2104,0x1082,0x20e4,0x2104,0x18e4,0x18e3,0x18e4,0x2124,0x3a08,0x4a8a,0x4a49,0x4a89,0x5acb,0x528a,0x4228,0x4a8a,0x52cb,0x4249,0x3a08,0x4a49,0x4a8a,0x528a,0x4249,0x4249,0x4a69,0x4228,0x4228,0x528a,0x4228,0x4a69,0x4a69,0x4228,0x39e7,0x4a49,0x4a8a,0x39e7,0x4228,0x3a08,0x39e8,0x4228,0x4229,0x3a08,0x31e7,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4269,0x4228,0x4228,0x39e7,0x4a69,0x4249,0x4228,0x3a07,0x4208,0x4248,0x4248,0x4249,0x4228,0x4207,0x4a48,0x4208,0x4208,0x4208,0x4228,0x4228,0x4249,0x4208,0x39e7,0x4a49,0x4208,0x39e8,0x4228,0x3a08,0x4228,0x39e7,0x4249,0x3a28,0x39e7,0x39e7,0x39c7,0x3a08,0x39e7,0x31a6,0x31c7,0x31c7,0x31a6,0x4228,0x39e7,0x39e7,0x4228,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x39c7,0x39c7,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x31a7,0x3a08,0x31c7,0x39e7,0x3a08,0x39c7,0x39e7,0x39e7,0x39e7,0x31c6,0x31c7,0x3a07,0x39c7,0x31a6,0x39e7,0x3a08, +0x31a6,0x29a6,0x31c6,0x31a6,0x2966,0x29a6,0x29a6,0x31c7,0x31a7,0x39c7,0x4228,0x31c7,0x39e8,0x31e7,0x31c6,0x29a6,0x31a7,0x4208,0x39e7,0x39c7,0x4228,0x4248,0x4228,0x4228,0x4208,0x3a08,0x39e7,0x3a08,0x39e7,0x39e7,0x39e7,0x4228,0x4208,0x3a08,0x4209,0x3a08,0x4249,0x4249,0x3a08,0x31c7,0x31e7,0x4269,0x3a29,0x3a08,0x3a08,0x39e8,0x4a8a,0x4228,0x4228,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a6a,0x4248,0x4a49,0x4249,0x4a69,0x3a29,0x4a8a,0x52aa,0x4a69,0x4228,0x4229,0x4a49,0x4229,0x528a,0x4a49,0x4228,0x528a,0x52aa,0x4228,0x4a6a,0x52cb,0x4a8a,0x4208,0x52ab,0x5aeb,0x4a89,0x4a69,0x4229,0x52ab,0x4208,0x4249,0x4a6a,0x4249,0x4a69,0x4249,0x4a8a,0x4229,0x4249,0x4a69,0x4228,0x4a49,0x4229,0x4a69,0x52aa,0x4a69,0x4a8a,0x4a8a,0x3a09,0x4a6a,0x4229,0x4a69,0x4a49,0x3a28,0x4229,0x426a,0x4aab,0x4a6a,0x18a3,0x10a2,0x2104,0x18c3,0x39e8,0x4209,0x39e8,0x31a6,0x2103,0x18e3,0x18e3,0x18c3,0x2104,0x2945,0x2945,0x2944,0x2944,0x3165,0x2965,0x3165,0x2965,0x2945,0x2944,0x2944,0x2944,0x2944,0x2945,0x2944,0x2103,0x2124,0x2924,0x2924,0x2124,0x18c3,0x1082,0x1082,0x20e3,0x2965,0x3185,0x2965,0x2965,0x3185,0x3165,0x3186,0x3165,0x2965,0x2965,0x2944,0x2965,0x2965,0x2944,0x2924,0x2124,0x2924,0x2924,0x2944,0x2924,0x18c3,0x1082,0x1082,0x18c3,0x2965,0x39c6,0x31a6,0x3165,0x2965,0x3165,0x3185,0x3185,0x3185,0x2945,0x2965,0x2945,0x2965,0x3165,0x2945,0x3165,0x2945,0x2924,0x2945,0x3165,0x20e3,0x10a2,0x18a2,0x20e3,0x10a2,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x2945,0x4248,0x4a69,0x4a8a,0x4a49,0x4a8a,0x4a49,0x4208,0x4a69,0x4a89,0x3a28,0x4249,0x4249,0x4a69,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4a69,0x4a6a,0x4a49,0x52ab,0x4228,0x39e7,0x39e7,0x4228,0x4249,0x3a08,0x4228,0x3a07,0x4249,0x4228,0x3a08,0x4a89,0x4228,0x4228,0x4a69,0x4a69,0x3a08,0x39e7,0x4228,0x3a08,0x3a08,0x3a07,0x4a49,0x4a49,0x4228,0x39e7,0x4a49,0x4208,0x4208,0x4249,0x4a69,0x4a69,0x4228,0x4208,0x39e8,0x39e8,0x4a49,0x4228,0x39e7,0x4207,0x4208,0x4249,0x4229,0x3a08,0x3a08,0x3a08,0x39e8,0x31a7,0x39e8,0x39e7,0x39e7,0x39c7,0x39e8,0x31a7,0x39e7,0x39c7,0x39e7,0x31a6,0x31e7,0x3a08,0x3a07,0x39e7,0x31c6,0x39e7,0x39e7,0x3a08,0x39e7,0x4208,0x39e7,0x4208,0x4208,0x31a6,0x31c7,0x31e7,0x4228,0x39e7,0x39c7,0x39c7,0x31c7,0x31c7,0x3a08,0x4208,0x4208,0x39e7,0x3a08,0x31c7,0x31a6,0x31c7,0x39e7,0x31a6,0x31c6, +0x31c6,0x3a08,0x2986,0x2165,0x2145,0x31c7,0x31e7,0x3a08,0x39e7,0x39e8,0x31c7,0x3186,0x39c7,0x4208,0x39e7,0x3186,0x39c7,0x3a08,0x3a29,0x31e7,0x31c7,0x31a6,0x39e7,0x3a08,0x4228,0x39e8,0x31c7,0x39e8,0x3a08,0x3a07,0x4228,0x4228,0x4228,0x4228,0x424a,0x3a08,0x3a08,0x4a6a,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x39e8,0x4208,0x4229,0x41e8,0x4208,0x4229,0x4249,0x4229,0x4208,0x4249,0x39e8,0x4208,0x4a49,0x4208,0x4228,0x4269,0x4269,0x4249,0x4249,0x4249,0x52cb,0x4a8a,0x4249,0x4249,0x4a8a,0x3a28,0x4269,0x52aa,0x4a69,0x52ab,0x52aa,0x4a8a,0x4a89,0x4249,0x4249,0x52cb,0x5acb,0x5aec,0x52eb,0x4aaa,0x52aa,0x52cb,0x52ab,0x4208,0x4a6a,0x52aa,0x4229,0x4229,0x4229,0x4269,0x4249,0x4a89,0x4a8a,0x4228,0x4aaa,0x4a8a,0x4228,0x4a69,0x4229,0x4249,0x4249,0x3a08,0x4229,0x4249,0x4229,0x4249,0x426a,0x4a8a,0x4a69,0x4249,0x4228,0x18a3,0x10a2,0x18c3,0x18c3,0x39c7,0x41e8,0x39e7,0x31a6,0x2103,0x18c3,0x18e3,0x18c3,0x2104,0x2124,0x2124,0x18e3,0x2924,0x3165,0x2965,0x2945,0x2945,0x2945,0x2944,0x2965,0x2944,0x2945,0x2945,0x2965,0x2944,0x2924,0x20e3,0x2945,0x2124,0x18c3,0x1082,0x1082,0x18e3,0x2945,0x2965,0x2103,0x2944,0x3185,0x2965,0x3186,0x2965,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2944,0x2924,0x2103,0x2945,0x2944,0x18c3,0x1082,0x1082,0x18c3,0x2945,0x39c6,0x2945,0x2944,0x3165,0x3165,0x3185,0x39a6,0x3186,0x2965,0x3185,0x3186,0x3186,0x39a6,0x3186,0x3186,0x3185,0x2104,0x2945,0x2945,0x20e3,0x10a2,0x10a2,0x18e3,0x18a2,0x2945,0x2124,0x18e3,0x18e3,0x18c3,0x2945,0x4a8a,0x4228,0x4a69,0x4a6a,0x528a,0x4a49,0x4228,0x4a69,0x4228,0x3a28,0x4269,0x3a28,0x4228,0x4a49,0x39e8,0x4249,0x4a89,0x4a89,0x4228,0x4a49,0x4249,0x4229,0x3a28,0x3a08,0x4228,0x4249,0x31c7,0x3a28,0x3a28,0x3a28,0x3a08,0x4228,0x52aa,0x4a89,0x3a07,0x4a69,0x4a49,0x3a07,0x3a08,0x39c7,0x4228,0x4a69,0x4a69,0x4a69,0x4228,0x4228,0x3a07,0x4248,0x4a49,0x4229,0x4a49,0x39e7,0x4a89,0x4a69,0x3a08,0x4a6a,0x4229,0x4208,0x39e8,0x3a07,0x39c6,0x4228,0x4228,0x4249,0x4249,0x4249,0x4228,0x4208,0x4a49,0x4229,0x39c7,0x31a7,0x39e7,0x39e7,0x39c7,0x4208,0x39c7,0x39c7,0x3a08,0x39e7,0x31c7,0x39e7,0x3a07,0x39e7,0x4a69,0x39e7,0x31c6,0x3a08,0x39e7,0x3a08,0x39e7,0x3a07,0x4228,0x39e7,0x4249,0x39e8,0x39e8,0x39e7,0x31c7,0x39c7,0x31a6,0x39e7,0x4228,0x31a6,0x39e7,0x4a69,0x39e7,0x39e7,0x31c7,0x2986,0x39e7,0x31c7,0x39e7, +0x31c7,0x3186,0x2965,0x31c6,0x31a6,0x31c7,0x39e7,0x39e7,0x39e8,0x31a7,0x31a7,0x31a7,0x39c7,0x4228,0x39e8,0x31c6,0x3a07,0x3a28,0x29a7,0x31e8,0x31c7,0x3a08,0x4228,0x3a08,0x3a28,0x3a08,0x31c7,0x31e7,0x3a08,0x3a08,0x4229,0x39e8,0x52ab,0x4269,0x3a29,0x3a08,0x4229,0x4a4a,0x39e8,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x4228,0x3a08,0x39e8,0x3a08,0x3a08,0x31e7,0x4269,0x4249,0x3a08,0x5acb,0x4a49,0x31e7,0x3a08,0x4229,0x4208,0x4a49,0x4a8a,0x4249,0x4249,0x4249,0x4229,0x4a8a,0x5b0c,0x4a69,0x528a,0x4a6a,0x4a69,0x4a69,0x4aaa,0x4a6a,0x4a8a,0x4aaa,0x4a8a,0x4a6a,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x52cb,0x52ec,0x4a8a,0x4249,0x4a6a,0x4a8a,0x4229,0x424a,0x424a,0x4a4a,0x4229,0x4248,0x4a89,0x4a69,0x52aa,0x4a6a,0x4aaa,0x4249,0x3a08,0x4a49,0x52aa,0x528a,0x4a69,0x4a49,0x4a49,0x4249,0x4228,0x4a49,0x4229,0x528a,0x528a,0x4a8a,0x18c3,0x1082,0x18c3,0x18c3,0x31a7,0x39c7,0x39c7,0x3185,0x18e3,0x18c3,0x18e3,0x18c3,0x2104,0x18c3,0x1082,0x0861,0x2945,0x2945,0x2944,0x2924,0x2124,0x2124,0x2924,0x2945,0x2104,0x2124,0x2924,0x2944,0x2945,0x2965,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x18c3,0x18e3,0x18c3,0x1082,0x2124,0x2945,0x2924,0x2945,0x2924,0x2124,0x2124,0x2924,0x2924,0x2924,0x2944,0x2924,0x2945,0x2945,0x18c3,0x18c3,0x18e3,0x10a2,0x10a2,0x1082,0x18c3,0x2104,0x20e3,0x18c3,0x2944,0x2944,0x2944,0x2945,0x2945,0x2944,0x2124,0x2944,0x2945,0x2945,0x2945,0x2945,0x3165,0x3186,0x18a2,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x2945,0x20e4,0x18e4,0x18e3,0x18c3,0x2925,0x4229,0x4208,0x4208,0x4a49,0x4a6a,0x4a8a,0x3a08,0x4a69,0x4228,0x4228,0x4a89,0x4a69,0x4a69,0x4249,0x3a08,0x4228,0x4a49,0x4229,0x4229,0x4a49,0x4a6a,0x4229,0x4a49,0x3a08,0x4229,0x52aa,0x4208,0x4a49,0x4a69,0x4228,0x31c7,0x4229,0x528a,0x39e8,0x3a08,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4228,0x3a08,0x4228,0x4228,0x4a8a,0x4228,0x3a08,0x4228,0x4a69,0x3a08,0x4249,0x4228,0x4248,0x31c7,0x4228,0x4249,0x4249,0x39e7,0x4228,0x4228,0x4228,0x4a49,0x39e7,0x3a08,0x4228,0x3a08,0x4249,0x4a69,0x4248,0x4249,0x3a08,0x39c7,0x39c7,0x31c7,0x39e8,0x4249,0x4208,0x39c7,0x39e7,0x31a7,0x39c7,0x39e7,0x39e7,0x4229,0x4228,0x3a08,0x31c7,0x3a08,0x31e7,0x31c7,0x31e8,0x31e7,0x3a28,0x3a08,0x39e8,0x31a7,0x39a7,0x3186,0x31c7,0x3a08,0x3186,0x31c7,0x31c7,0x31a7,0x39e8,0x4209,0x3187,0x39c7,0x3a07,0x2985,0x39e7,0x31a6,0x3186, +0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x2986,0x31c7,0x31a7,0x2986,0x31c7,0x39e7,0x39e8,0x39e8,0x39e8,0x4228,0x4228,0x4a89,0x3a08,0x31c7,0x3a29,0x3a08,0x4229,0x3a08,0x39e8,0x31c8,0x39e8,0x3a08,0x4249,0x31c7,0x3a08,0x39e8,0x39c7,0x4208,0x3a08,0x39e8,0x4228,0x39e8,0x39e8,0x39e8,0x3a08,0x3a08,0x39e8,0x39e7,0x39e7,0x3a08,0x4228,0x52ab,0x528a,0x4229,0x3a08,0x4a69,0x4a8a,0x3a08,0x528a,0x4a6a,0x3a28,0x3a08,0x4a49,0x4228,0x4208,0x4249,0x4228,0x4229,0x4229,0x4228,0x4249,0x5acb,0x4228,0x4a49,0x5aeb,0x4a8a,0x52cb,0x4269,0x3a08,0x52cb,0x4a8a,0x4a6a,0x4249,0x4a69,0x52cb,0x4249,0x4a8a,0x426a,0x426a,0x52ab,0x4a8a,0x4aab,0x4269,0x4a69,0x4229,0x4a6a,0x4a6a,0x4249,0x3a08,0x4a8a,0x52ca,0x4249,0x4a8a,0x4249,0x4249,0x4a6a,0x4229,0x4a29,0x4a49,0x4a49,0x528a,0x4a6a,0x4a6a,0x4a69,0x4a49,0x4a49,0x526a,0x4a6a,0x52ab,0x4a8a,0x18c3,0x10a2,0x18c3,0x18c3,0x3166,0x39c7,0x31a7,0x2945,0x18c3,0x18c3,0x18c3,0x18c3,0x18e3,0x0861,0x0841,0x1082,0x3186,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2965,0x2965,0x2965,0x3185,0x3165,0x1082,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0841,0x10a2,0x2965,0x2945,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2945,0x2945,0x3165,0x2103,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x18c3,0x10a2,0x0861,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2944,0x2124,0x2924,0x2944,0x2925,0x2924,0x2925,0x2925,0x2945,0x31a6,0x18c3,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2924,0x18c3,0x18e3,0x18e3,0x18c3,0x2104,0x4249,0x4228,0x4a49,0x4208,0x4a8a,0x4a8a,0x4229,0x52aa,0x4a6a,0x4229,0x4249,0x4a49,0x4228,0x4249,0x4228,0x4249,0x4208,0x4228,0x4229,0x4229,0x3a08,0x4208,0x4229,0x4208,0x4208,0x4208,0x4208,0x4208,0x4a69,0x4228,0x4228,0x4249,0x39e8,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x3a08,0x4249,0x4248,0x4208,0x4228,0x4228,0x4249,0x4228,0x4249,0x4aaa,0x4a6a,0x31c6,0x4249,0x4249,0x3a08,0x3a08,0x39e7,0x31e7,0x4228,0x4208,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x3a08,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x39e8,0x39e8,0x4228,0x3a08,0x31a6,0x39c7,0x3a08,0x39e7,0x39e8,0x39e7,0x31c7,0x31c7,0x39e8,0x39c7,0x39e7,0x3a08,0x31c7,0x39e8,0x3a07,0x31e7,0x4208,0x4208,0x4208,0x39e8,0x39c7,0x29a6,0x39e7,0x31c7,0x31a6,0x4228,0x4229,0x39e8,0x4208,0x39e8,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a6, +0x39e7,0x3a08,0x31a7,0x2986,0x2986,0x2966,0x39e8,0x31c7,0x3a28,0x4248,0x4228,0x31a7,0x31c7,0x31c7,0x3a08,0x4228,0x39e7,0x31c7,0x31c7,0x31e7,0x3a08,0x39e8,0x39e7,0x31a6,0x39e7,0x4228,0x3a08,0x4229,0x39e8,0x4a6a,0x4248,0x31c6,0x39e8,0x4229,0x31c7,0x39e7,0x4208,0x4208,0x4208,0x31c7,0x4228,0x4208,0x39e8,0x4228,0x3a08,0x4249,0x4a8a,0x4a69,0x4228,0x39e8,0x3a08,0x4249,0x39e7,0x4269,0x4249,0x4228,0x4a69,0x4a49,0x4229,0x3a28,0x4a69,0x4228,0x3a08,0x4228,0x3a08,0x4248,0x52aa,0x4a69,0x4a49,0x52aa,0x4a8a,0x4a8a,0x52cb,0x3a28,0x52aa,0x52aa,0x4a8a,0x4a8a,0x52aa,0x52aa,0x4aaa,0x4a8a,0x4aaa,0x4a6a,0x4a8a,0x4a69,0x52aa,0x52eb,0x4a8a,0x4249,0x4249,0x4a8a,0x4a69,0x4208,0x4a8a,0x4249,0x426a,0x4a8a,0x4a69,0x4208,0x4229,0x52aa,0x4228,0x4a69,0x4a49,0x4a8a,0x4249,0x4aaa,0x52aa,0x4a6a,0x4a49,0x4a69,0x4249,0x4a8a,0x52cb,0x18c3,0x10a2,0x18c3,0x18c3,0x2965,0x31a6,0x3186,0x2924,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x3165,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x39a5,0x41e5,0x3185,0x2965,0x2965,0x2965,0x2965,0x3186,0x1061,0x0841,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2945,0x2965,0x3166,0x3185,0x41e5,0x41e5,0x39c5,0x3185,0x2965,0x2965,0x2965,0x2965,0x2124,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2945,0x2965,0x2965,0x2965,0x2965,0x31a5,0x4205,0x41e5,0x39a5,0x2945,0x2945,0x2945,0x2965,0x3186,0x20e3,0x0841,0x0861,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x2104,0x18a3,0x18c3,0x18c3,0x18e3,0x18e3,0x4228,0x4248,0x4249,0x4a49,0x528a,0x4249,0x3a08,0x4a8a,0x4249,0x4a49,0x4228,0x4a49,0x3a08,0x4228,0x4248,0x4249,0x4249,0x3a28,0x4229,0x4228,0x3a07,0x4228,0x4a69,0x4a49,0x4208,0x39e8,0x4a49,0x4228,0x4229,0x4249,0x3a28,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4229,0x4208,0x4249,0x4249,0x4228,0x39e7,0x4a49,0x4208,0x4229,0x4a69,0x3a28,0x4a8a,0x4a49,0x3a08,0x3a08,0x4249,0x4249,0x3a08,0x39e7,0x3a08,0x4249,0x4228,0x4228,0x3a07,0x3a07,0x39e7,0x4228,0x4249,0x4228,0x4248,0x4248,0x39e7,0x4209,0x39e7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x3a08,0x4228,0x31c7,0x4249,0x3a08,0x31c7,0x31a6,0x39e7,0x31e7,0x3207,0x31e7,0x3a08,0x4228,0x39c7,0x39e7,0x4249,0x31a6,0x39e7,0x4228,0x39c7,0x3a28,0x39e8,0x41e8,0x3a08,0x3a08,0x39e8,0x3a08,0x3a08,0x4228,0x4208,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x31c7,0x2986,0x31a6, +0x31c7,0x3a08,0x31a7,0x3186,0x31c6,0x39e7,0x31c7,0x31c7,0x39e7,0x39e7,0x4248,0x4248,0x39e7,0x31c7,0x39e7,0x31c7,0x39e7,0x3a08,0x31c7,0x39e7,0x4249,0x31c7,0x3a08,0x4a49,0x4208,0x4208,0x4228,0x4249,0x4229,0x3a09,0x3a07,0x4228,0x3a08,0x31c8,0x31c8,0x3a08,0x4229,0x39e8,0x4208,0x4208,0x39c7,0x4249,0x4228,0x4249,0x4249,0x31c7,0x39e7,0x39e7,0x3a08,0x4228,0x39e8,0x39c7,0x39c7,0x4a69,0x3a08,0x3a08,0x4228,0x4228,0x4249,0x4249,0x4a69,0x4229,0x4249,0x4a8a,0x4249,0x4289,0x4249,0x4229,0x4a6a,0x4a6a,0x4249,0x4228,0x4a8a,0x52cb,0x52aa,0x52ab,0x4a6a,0x52cb,0x4a69,0x4a8a,0x52eb,0x4a89,0x52aa,0x52cb,0x4a6a,0x3a08,0x52aa,0x5aeb,0x4a8a,0x4a8a,0x4a8a,0x4aaa,0x4aaa,0x4249,0x4249,0x4209,0x4a49,0x528a,0x528a,0x3a08,0x4249,0x528a,0x528a,0x4228,0x4a69,0x4a8a,0x4249,0x4249,0x4249,0x4249,0x5b0c,0x52eb,0x4229,0x5acb,0x52aa,0x18c3,0x10a2,0x18c3,0x18c3,0x2945,0x3186,0x2966,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3185,0x62e5,0x7b65,0x39c4,0x2965,0x2965,0x2965,0x2965,0x3165,0x0861,0x0020,0x10a2,0x1082,0x1082,0x10a2,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3166,0x4205,0x7345,0x6b04,0x6b05,0x41c4,0x2965,0x2965,0x2965,0x3165,0x2944,0x0841,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x2965,0x3166,0x2965,0x2965,0x31a5,0x62c5,0x7b45,0x7b45,0x62c4,0x3165,0x2965,0x2965,0x3165,0x3166,0x18c3,0x0020,0x0841,0x1082,0x1082,0x10a2,0x18a3,0x18e3,0x20e4,0x10a2,0x18c3,0x18c3,0x20e3,0x18e3,0x4208,0x4a49,0x3a08,0x4249,0x4249,0x4249,0x4a6a,0x52aa,0x4269,0x4207,0x4228,0x4a69,0x4a49,0x4228,0x4a49,0x4229,0x4249,0x4249,0x3a07,0x3a28,0x3a08,0x3a07,0x4248,0x4a49,0x39c7,0x4228,0x4a69,0x3a08,0x3a08,0x4a69,0x4249,0x4228,0x4a49,0x4a6a,0x3a08,0x31c7,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4a69,0x4228,0x4a49,0x4229,0x4a6a,0x3a08,0x4249,0x4a69,0x4229,0x4249,0x3a08,0x39c7,0x4208,0x4a8a,0x3a08,0x39e7,0x3a07,0x4249,0x3a08,0x4a89,0x4208,0x3a07,0x4228,0x4208,0x4a69,0x39e7,0x4249,0x3a08,0x39e7,0x31c7,0x29a6,0x3a08,0x39e7,0x39e8,0x4208,0x4228,0x4228,0x3a08,0x39e7,0x31c7,0x3186,0x39e8,0x3a08,0x31c7,0x39e7,0x39e7,0x4228,0x39c7,0x39e7,0x4208,0x39c7,0x39e7,0x4248,0x4249,0x3a08,0x3a08,0x39c7,0x4228,0x4229,0x31c7,0x31a6,0x2986,0x31c7,0x31a6,0x4208,0x4208,0x31a7,0x39e7,0x31c6,0x31a6,0x2986,0x29a7, +0x2986,0x2986,0x31a7,0x31a7,0x39c7,0x39e7,0x31a6,0x31a7,0x31c7,0x4a69,0x3a07,0x39e7,0x39c7,0x31a7,0x4208,0x39c7,0x31c7,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x4269,0x4249,0x39e7,0x3a08,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x4249,0x4a49,0x39c7,0x39c8,0x3a09,0x4249,0x3a28,0x4228,0x4208,0x4208,0x4a6a,0x3a08,0x39e8,0x4249,0x31a7,0x31c7,0x4249,0x4208,0x3a08,0x39e7,0x4208,0x4208,0x4249,0x4249,0x4a8a,0x4248,0x4248,0x4229,0x4a6a,0x4a6a,0x3a08,0x4249,0x4269,0x3a28,0x4a69,0x4aaa,0x3a28,0x4249,0x528a,0x52cb,0x4249,0x4a69,0x52aa,0x4a69,0x528a,0x4a69,0x52cb,0x4a8a,0x52ab,0x5b0c,0x5b0b,0x52aa,0x5acb,0x4a6a,0x4a8a,0x52ab,0x4229,0x4229,0x52ab,0x5aeb,0x4a69,0x4a69,0x4a69,0x52aa,0x4a69,0x4249,0x4229,0x3a08,0x4a49,0x4a6a,0x4a6a,0x4a6a,0x3a08,0x4208,0x4a8a,0x4a4a,0x39e8,0x4249,0x4a8a,0x4a6a,0x5acb,0x528b,0x424a,0x52aa,0x18c3,0x1082,0x18c3,0x10a2,0x2124,0x2966,0x2945,0x2124,0x18c3,0x18e3,0x18c3,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x5245,0x8bc4,0x9c24,0x41e4,0x2965,0x2965,0x2945,0x2965,0x3186,0x1061,0x0020,0x1082,0x1082,0x1082,0x18a3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x5285,0x93e4,0x6ae4,0x62c5,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3166,0x3166,0x2965,0x2965,0x4205,0x9405,0x7b24,0x7b45,0x7b45,0x3985,0x2945,0x2945,0x2965,0x3165,0x18c3,0x0021,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x18e3,0x1082,0x10a2,0x18c3,0x18e3,0x2124,0x4229,0x4228,0x52cb,0x4a6a,0x4a49,0x4a6a,0x4a6a,0x4228,0x4228,0x4a49,0x4228,0x4228,0x4228,0x4249,0x4a49,0x3a08,0x4228,0x3a08,0x3a08,0x39e7,0x4228,0x4a69,0x4248,0x4249,0x39e8,0x4249,0x4289,0x3a28,0x3a28,0x4249,0x4248,0x4208,0x4228,0x4a69,0x4229,0x39e8,0x4a6a,0x4249,0x4228,0x4248,0x4a69,0x4a8a,0x4a69,0x4a69,0x4249,0x39e8,0x39e8,0x39c7,0x41e8,0x4a49,0x4208,0x39e8,0x3a08,0x3a08,0x4aaa,0x4a8a,0x4229,0x39c8,0x3a08,0x4249,0x5aeb,0x3a07,0x3a28,0x3a28,0x4249,0x4269,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x3a28,0x39e8,0x39e7,0x4228,0x3a07,0x3a08,0x39c7,0x39c7,0x39c7,0x39e7,0x4229,0x39e7,0x2986,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39e7,0x4208,0x39e7,0x3a08,0x39e7,0x39c7,0x3a07,0x3a08,0x4208,0x4208,0x31c7,0x4249,0x39e7,0x39c7,0x4208,0x4208,0x39c7,0x31a6,0x3a08,0x31a6,0x31e7,0x2986,0x29a6, +0x2986,0x2986,0x2966,0x31c7,0x3186,0x39e7,0x39e8,0x3a28,0x31c7,0x3a08,0x31c6,0x39e7,0x3186,0x3186,0x39e8,0x4228,0x31c7,0x39e7,0x3a08,0x4229,0x3a08,0x3a08,0x31c7,0x39e7,0x39e7,0x3a08,0x39e8,0x4249,0x4229,0x4229,0x4209,0x39e8,0x39e7,0x4208,0x4229,0x31c7,0x4228,0x4249,0x3a07,0x3a08,0x3a08,0x4229,0x4208,0x4228,0x4228,0x4249,0x4a69,0x3a08,0x4228,0x4249,0x4a69,0x4229,0x4228,0x4248,0x4249,0x4248,0x3a28,0x3a08,0x4249,0x4a8a,0x52eb,0x4a8a,0x3a49,0x4229,0x4229,0x4248,0x4269,0x4249,0x4a6a,0x528a,0x4a69,0x52ab,0x4a8a,0x52cb,0x528a,0x4a69,0x4a89,0x52aa,0x4249,0x3a08,0x5acb,0x528a,0x4229,0x4249,0x528a,0x52aa,0x52aa,0x5aca,0x4a8a,0x4a8a,0x4a49,0x4229,0x4249,0x52ca,0x4a8a,0x4249,0x3a08,0x4a49,0x4a8a,0x52ab,0x528a,0x4228,0x4a6a,0x4228,0x4248,0x52aa,0x4a69,0x4a8a,0x4aaa,0x4aaa,0x4229,0x528a,0x4a6a,0x4a6a,0x632c,0x18c3,0x1082,0x18a2,0x10a2,0x2124,0x2945,0x2945,0x2104,0x18c3,0x18e3,0x18a2,0x18a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2945,0x2945,0x2945,0x2945,0x39a5,0x7b45,0x7304,0x9405,0x41e4,0x2945,0x2965,0x2945,0x2945,0x3186,0x1082,0x0020,0x1082,0x1082,0x1082,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62e5,0x93e4,0x6ae4,0x62a4,0x3985,0x2965,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c2,0x0861,0x0841,0x2104,0x3166,0x3166,0x3165,0x2965,0x5aa5,0xa465,0x7b24,0x7b65,0x6ae5,0x3165,0x2945,0x2965,0x2965,0x3165,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x18e3,0x1082,0x10a2,0x18a3,0x18e3,0x2945,0x4208,0x4a69,0x528a,0x52ab,0x4229,0x4a69,0x4228,0x4228,0x4248,0x52aa,0x4249,0x4228,0x4a8a,0x4249,0x52aa,0x4228,0x4248,0x3a08,0x4228,0x39e7,0x39e7,0x4248,0x4228,0x4228,0x3a28,0x3a28,0x3a48,0x4248,0x3a08,0x4208,0x4228,0x4208,0x39e7,0x4228,0x4a69,0x4a49,0x4228,0x4249,0x31c7,0x3a07,0x4a69,0x31c7,0x4a69,0x4208,0x3a08,0x4208,0x41e8,0x4208,0x4a49,0x4249,0x4a69,0x4208,0x4228,0x4a49,0x39e7,0x4228,0x4249,0x4228,0x3a07,0x4228,0x4a69,0x4248,0x4aaa,0x3a28,0x4228,0x4229,0x3a08,0x39e7,0x39e7,0x4228,0x4248,0x31e7,0x31e7,0x39e7,0x39c7,0x31a7,0x39e8,0x31e8,0x39e8,0x39e7,0x31a6,0x31c7,0x39e8,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c6,0x4228,0x31c7,0x31c7,0x31c7,0x39e7,0x4a8a,0x4208,0x39c7,0x39e8,0x3a08,0x3a08,0x31a7,0x39e7,0x3186,0x31a7,0x4228,0x39e8,0x3a08,0x3186,0x31c7,0x31c7, +0x31c7,0x2986,0x39e7,0x39e7,0x31c6,0x4a49,0x31a6,0x39e7,0x3a08,0x31a6,0x39e7,0x3a08,0x4249,0x31e8,0x31c7,0x31a7,0x31c7,0x3a08,0x39e8,0x39e8,0x29a7,0x39e8,0x39e7,0x39c7,0x4228,0x39e7,0x4a89,0x4249,0x39e7,0x4228,0x4208,0x39e8,0x39e8,0x4249,0x4228,0x31c7,0x39c7,0x39c7,0x39e7,0x3a08,0x39e8,0x39c7,0x4208,0x39e7,0x3a08,0x4a69,0x4a69,0x3a08,0x4228,0x4229,0x3a09,0x39e8,0x4249,0x4228,0x4208,0x4208,0x4229,0x4228,0x4249,0x4a8a,0x4249,0x4269,0x4aaa,0x4249,0x4249,0x4269,0x4249,0x4a89,0x4a69,0x4229,0x4249,0x426a,0x3a29,0x426a,0x4249,0x4a69,0x528a,0x4a49,0x4a4a,0x4a6a,0x4a6a,0x4a49,0x4249,0x4a6a,0x4a49,0x4a49,0x4a69,0x4a8a,0x52aa,0x4a6a,0x4269,0x4a8a,0x428a,0x4aaa,0x4a69,0x4a69,0x528a,0x4a49,0x4a69,0x528a,0x52cb,0x4a89,0x4a69,0x4a69,0x4aaa,0x52aa,0x528a,0x5acb,0x5acb,0x4a6a,0x4228,0x4a8a,0x4a8a,0x4a8b,0x632c,0x18c3,0x1082,0x18a2,0x18a2,0x2124,0x2945,0x2125,0x2104,0x18c3,0x18c3,0x10a2,0x10a2,0x18c3,0x0841,0x0020,0x1082,0x2945,0x2965,0x2965,0x2945,0x2965,0x62c5,0x8364,0x5a64,0x9425,0x4a03,0x2945,0x2965,0x2945,0x2945,0x3186,0x1061,0x0020,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x2965,0x62c6,0x8365,0x6ae5,0x83a5,0x4a24,0x2945,0x2945,0x2965,0x2965,0x2965,0x0861,0x0841,0x10a2,0x10a2,0x1082,0x18c3,0x0861,0x0841,0x2104,0x3165,0x3165,0x2965,0x2965,0x62e5,0xa465,0x7324,0x83a5,0x8385,0x3184,0x2945,0x2945,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x1082,0x10a2,0x18a3,0x18e3,0x2125,0x4a49,0x4a69,0x5269,0x528a,0x4a8a,0x4a8a,0x4249,0x4228,0x4248,0x4228,0x4228,0x3a08,0x4249,0x4a8a,0x4269,0x4249,0x3a07,0x4228,0x4a49,0x4228,0x4208,0x39c7,0x39e7,0x4a29,0x4a49,0x4208,0x4228,0x3a08,0x39e7,0x4228,0x4249,0x4228,0x39e7,0x3a07,0x4228,0x4a49,0x4249,0x4248,0x39e7,0x3a28,0x4228,0x4248,0x4228,0x4a49,0x528a,0x4208,0x39c7,0x4a49,0x4248,0x3a28,0x3a28,0x39e7,0x4228,0x4a89,0x3a08,0x4249,0x3a07,0x4228,0x4229,0x528a,0x4249,0x4248,0x4a69,0x31e7,0x4a69,0x4249,0x4208,0x39e7,0x39e7,0x39e7,0x4228,0x4228,0x4228,0x31c7,0x39e7,0x4228,0x39e8,0x3a08,0x3a08,0x4228,0x39e7,0x39e7,0x31e7,0x31c7,0x39e8,0x31c7,0x3a08,0x3a08,0x4208,0x31c7,0x4208,0x3a07,0x39e7,0x31c7,0x3a08,0x3a08,0x4a69,0x4228,0x39c7,0x39c7,0x31c7,0x29a6,0x4208,0x4a69,0x31c7,0x4208,0x31c7,0x3a08,0x31c7,0x31c7,0x31a7,0x31c7,0x39e8, +0x2966,0x31a7,0x39e8,0x31c7,0x31a6,0x31a6,0x31c7,0x39e8,0x39e8,0x29a6,0x3186,0x39e7,0x39e8,0x31c7,0x2986,0x31c7,0x4269,0x4249,0x39e8,0x39e8,0x3a08,0x31c7,0x31a6,0x39e7,0x3a08,0x39e7,0x4248,0x39e7,0x4208,0x4248,0x39e7,0x39e7,0x39e7,0x3a28,0x39e7,0x39e8,0x3a28,0x31c7,0x31c7,0x4228,0x4228,0x3a08,0x39e8,0x4228,0x4208,0x4208,0x4a8a,0x3a08,0x3a29,0x4249,0x31e8,0x3a08,0x4229,0x3a08,0x4228,0x4208,0x3a08,0x4229,0x3a28,0x4a8a,0x52ab,0x4a8a,0x4a8a,0x39e8,0x4229,0x4a8a,0x4a69,0x4228,0x4249,0x4a8a,0x4a8a,0x4249,0x4a49,0x4228,0x4a8a,0x4a8a,0x4a6a,0x4a6a,0x4249,0x4a6a,0x4a4a,0x4a49,0x4a69,0x528a,0x528a,0x4a49,0x4229,0x4a8a,0x4a69,0x4a69,0x528a,0x4a8a,0x52eb,0x4a8a,0x4228,0x4a6a,0x5aeb,0x4a49,0x52aa,0x5acb,0x52aa,0x4249,0x3a28,0x426a,0x4a6a,0x4a6a,0x52aa,0x4a4a,0x528a,0x4a69,0x4a8a,0x4a6a,0x52ab,0x52cb,0x5b0c,0x18c3,0x1082,0x10a2,0x18a2,0x2104,0x2945,0x2125,0x2104,0x18e3,0x18c2,0x10a2,0x10a2,0x18c3,0x0841,0x0841,0x1082,0x2945,0x2965,0x2965,0x2945,0x3985,0x8385,0x7b44,0x6ae4,0x9c44,0x5a84,0x2945,0x2965,0x2945,0x2965,0x3186,0x0861,0x0041,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x5a65,0x4a05,0x9405,0x6ac4,0x2945,0x2945,0x2945,0x3165,0x3185,0x1081,0x0841,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0841,0x2124,0x3165,0x2965,0x2965,0x2945,0x62c5,0x9c45,0x5244,0x6ae5,0x9c25,0x39a4,0x2965,0x2965,0x2965,0x3186,0x18c3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2965,0x4228,0x4228,0x52aa,0x4a6a,0x52cb,0x4a8a,0x3a08,0x4228,0x4249,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4248,0x4228,0x4228,0x4208,0x4228,0x39e7,0x4228,0x4a49,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x4a89,0x4a69,0x4208,0x4a69,0x4228,0x31c7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x4a69,0x4248,0x3a07,0x4208,0x4228,0x4208,0x4228,0x3a07,0x4248,0x4228,0x4228,0x3a28,0x3207,0x3208,0x3a28,0x4229,0x39e8,0x4208,0x4229,0x4a49,0x39e8,0x3a08,0x3a08,0x39c7,0x39e7,0x4229,0x4228,0x39e7,0x4228,0x39e7,0x39e7,0x4248,0x31e7,0x3a08,0x4228,0x31c7,0x3a08,0x41e8,0x4229,0x4208,0x39e8,0x39e7,0x39e7,0x3a08,0x39e8,0x31a7,0x39e7,0x31c7,0x4228,0x39e7,0x39c7,0x31a6,0x39e7,0x31e7,0x4249,0x4a6a,0x3a08,0x4249,0x29a6,0x31c7,0x31c7,0x39c7,0x4208,0x39e8,0x4208,0x39e7,0x39e7,0x31a7,0x2966,0x31a7,0x2986,0x4a69, +0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31a7,0x31e7,0x31c7,0x31a7,0x31c7,0x39e7,0x31c7,0x31a7,0x2986,0x31e7,0x31e8,0x31c8,0x31c7,0x4208,0x4229,0x29a6,0x29a6,0x31e7,0x3a08,0x3a08,0x39e8,0x3a09,0x4a6a,0x4229,0x31e7,0x39e7,0x39e8,0x3a08,0x39e8,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x4228,0x4228,0x3a28,0x3a08,0x3a08,0x4229,0x31c7,0x39e8,0x39e7,0x39e7,0x4a69,0x4249,0x39e8,0x4208,0x4208,0x4208,0x3a28,0x4229,0x52aa,0x5acb,0x4a6a,0x4228,0x3a08,0x4229,0x4229,0x4a6a,0x52ab,0x52cb,0x4269,0x4249,0x4a8a,0x52aa,0x4249,0x4a49,0x4a6a,0x528a,0x4a69,0x4229,0x4a6a,0x4229,0x52aa,0x528a,0x4249,0x4a69,0x4a49,0x5269,0x528a,0x62ec,0x528a,0x52aa,0x52ab,0x52ab,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4a69,0x4229,0x4229,0x52ab,0x52cb,0x4a8a,0x4a8a,0x4a8a,0x4a89,0x52aa,0x4a89,0x4a8a,0x4a8a,0x52ab,0x52cb,0x4a69,0x52ab,0x52eb,0x18c2,0x1082,0x10a2,0x10a2,0x18e3,0x2945,0x2125,0x2124,0x18e3,0x10a2,0x10a2,0x10a2,0x18c2,0x0841,0x0841,0x1082,0x2945,0x2965,0x3165,0x2965,0x3185,0x62a5,0x5a85,0x62c5,0x9c24,0x5a64,0x2945,0x2945,0x2965,0x2965,0x3186,0x0861,0x0841,0x1082,0x1082,0x1062,0x18c3,0x0861,0x0020,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3185,0x7326,0x62a4,0x5244,0x8bc5,0x5a84,0x3165,0x2965,0x2945,0x2965,0x3165,0x1081,0x0861,0x10a2,0x1082,0x1082,0x18c3,0x0861,0x0861,0x2124,0x3165,0x2965,0x2965,0x2965,0x5245,0x93e5,0x5a84,0x6b25,0x8ba5,0x3984,0x2965,0x2965,0x3165,0x3186,0x18a3,0x0841,0x0841,0x1082,0x1082,0x1082,0x18a3,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2965,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4228,0x4a69,0x4a49,0x4228,0x4228,0x4a8a,0x4a69,0x4a8a,0x4249,0x3a08,0x4228,0x3a08,0x4228,0x4208,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4208,0x39e7,0x39e7,0x39c7,0x4208,0x4229,0x4a49,0x4208,0x39e8,0x4208,0x4228,0x3a28,0x4269,0x4228,0x4228,0x4228,0x4228,0x4228,0x3a08,0x4a69,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x3a08,0x3a28,0x3a08,0x4249,0x3a08,0x4aaa,0x4249,0x4249,0x3a08,0x31e7,0x4209,0x4a6a,0x39c7,0x4a69,0x39e7,0x39e7,0x4a69,0x39e7,0x39e8,0x39e8,0x4228,0x4a49,0x4208,0x3a08,0x39e8,0x39c7,0x31a7,0x31c7,0x39e7,0x39c7,0x31a7,0x39c7,0x3a08,0x3a07,0x3a08,0x4228,0x31a7,0x39e8,0x4a69,0x31c7,0x4249,0x4229,0x39e7,0x3a08,0x39e7,0x3a08,0x31c7,0x4249,0x39e7,0x4228,0x31c7,0x31c7,0x31a7,0x39c7,0x39e7,0x39c7,0x39e7,0x39e7,0x31c7,0x3a08,0x39e8,0x39e8,0x31a6,0x39e7, +0x31c6,0x39e7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x29a6,0x31a7,0x39c7,0x31a6,0x31c7,0x3a08,0x3a28,0x31c7,0x39e8,0x31e8,0x31a7,0x4229,0x4249,0x39e7,0x31e7,0x31a7,0x31c7,0x3a08,0x31e7,0x31c7,0x31e7,0x3a08,0x3a08,0x3a08,0x31e8,0x31c7,0x3a08,0x4229,0x4228,0x4a8a,0x39e7,0x3a07,0x4248,0x3a28,0x3a08,0x3a08,0x31e7,0x31c7,0x39e8,0x31c7,0x39e8,0x39e8,0x39e7,0x4248,0x4a69,0x3a08,0x4249,0x4229,0x4208,0x4248,0x4249,0x3a28,0x4269,0x4208,0x4a49,0x4229,0x4209,0x4229,0x4229,0x4a6a,0x52ab,0x4aab,0x3a29,0x3a28,0x4aaa,0x4269,0x4269,0x4228,0x52ab,0x52cb,0x4aaa,0x3a08,0x4269,0x4a69,0x4228,0x4a69,0x52eb,0x52ab,0x4a8a,0x52ab,0x52aa,0x52aa,0x52ab,0x4a69,0x4a6a,0x4a6a,0x4a6a,0x4a6a,0x4a8b,0x4a8a,0x528a,0x4a49,0x4a49,0x4a69,0x52aa,0x4249,0x52ca,0x52aa,0x4a69,0x5aeb,0x6b6d,0x4a89,0x4229,0x4a8a,0x52ca,0x4a49,0x632d,0x6b6d,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2125,0x2104,0x2104,0x18e3,0x18a2,0x10a2,0x10a2,0x18c2,0x0861,0x0861,0x1082,0x2945,0x2965,0x2965,0x2965,0x2965,0x39a5,0x3985,0x41e5,0x7b45,0x41c4,0x2965,0x2965,0x2965,0x3186,0x3165,0x1082,0x0861,0x1082,0x1082,0x1062,0x18c3,0x10a2,0x0861,0x18c3,0x2965,0x2965,0x2965,0x2965,0x3165,0x5aa6,0x7325,0x7304,0x7305,0x41c4,0x3165,0x2965,0x2965,0x2965,0x2924,0x1061,0x1061,0x10a2,0x1082,0x1082,0x18c3,0x1082,0x0861,0x2104,0x2965,0x2965,0x2965,0x2965,0x39a5,0x6ae5,0x7325,0x7325,0x6285,0x3165,0x2965,0x2965,0x3165,0x3165,0x10a2,0x0841,0x0861,0x10a2,0x1082,0x1082,0x18a2,0x2924,0x18e3,0x1082,0x10a2,0x18c3,0x2104,0x2945,0x52ab,0x4a49,0x4a49,0x4249,0x4a69,0x4a49,0x4228,0x41e7,0x4208,0x4a49,0x4a69,0x4a69,0x4269,0x3a28,0x4a8a,0x4249,0x3a08,0x4a6a,0x4249,0x4249,0x4a89,0x4269,0x4248,0x4228,0x4249,0x39e7,0x39e7,0x4229,0x4229,0x39e8,0x39e8,0x4229,0x4a6a,0x4249,0x4249,0x4a8a,0x4249,0x52aa,0x4228,0x4249,0x4228,0x4249,0x4a8a,0x4a69,0x4249,0x4248,0x4a69,0x4208,0x39e8,0x31e7,0x4228,0x39e7,0x3a08,0x4a69,0x4a69,0x4228,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x39e8,0x4248,0x4228,0x4248,0x4228,0x4208,0x39e8,0x4229,0x4228,0x4a49,0x4249,0x31c7,0x39e8,0x39c8,0x4229,0x3a08,0x31c6,0x31c7,0x31a6,0x4a48,0x39e7,0x3a07,0x4228,0x31c7,0x31c7,0x31c7,0x3a08,0x4249,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x3a08,0x31e7,0x3a08,0x4208,0x4229,0x4208,0x31a7,0x39c7,0x39e8,0x39e7,0x4248,0x39c7,0x39c7,0x31c7,0x31e7,0x31c6,0x39e7,0x39c6,0x31a6, +0x31a7,0x31a6,0x2965,0x2986,0x31c7,0x31c7,0x31a7,0x39c8,0x31a7,0x39c8,0x4a69,0x39e8,0x3a08,0x3a28,0x31a7,0x3a08,0x39c7,0x39e8,0x3a08,0x4228,0x3a07,0x3a28,0x3a28,0x3a08,0x31e7,0x39e8,0x31c7,0x3a08,0x3a08,0x31e7,0x3a28,0x31e7,0x39e8,0x39c7,0x39e7,0x31c7,0x4228,0x4248,0x39e7,0x4228,0x3a08,0x39e8,0x39e8,0x4269,0x4229,0x39e8,0x4208,0x39e7,0x3a08,0x4249,0x3a07,0x39e7,0x4208,0x4209,0x4209,0x39e8,0x4228,0x4228,0x39e8,0x3a08,0x4228,0x4a69,0x4229,0x3a09,0x424a,0x4229,0x4a6a,0x4a8a,0x528a,0x4a69,0x4a69,0x4a8a,0x528a,0x528a,0x528a,0x526a,0x4a8a,0x4a8a,0x4228,0x4a69,0x4a49,0x4a49,0x4a8a,0x4a8a,0x4a49,0x4a8a,0x4a8a,0x4249,0x4249,0x4a8a,0x4a8a,0x4a8a,0x4249,0x4a69,0x4a89,0x4269,0x4a6a,0x4229,0x4a69,0x4a6a,0x4a8a,0x4a49,0x4a69,0x52aa,0x52cb,0x52ab,0x5acc,0x632c,0x52aa,0x4a6a,0x52ab,0x5aeb,0x528a,0x5aec,0x630c,0x18c2,0x1082,0x1082,0x10a2,0x20e4,0x2125,0x2104,0x2104,0x18c3,0x18a2,0x10a2,0x10a2,0x18c3,0x18c3,0x2103,0x20e3,0x2945,0x2965,0x2965,0x2945,0x2965,0x3165,0x2945,0x3185,0x4a05,0x3185,0x3165,0x3165,0x3185,0x3186,0x2944,0x18e3,0x10a2,0x10a2,0x1062,0x1061,0x18c3,0x20e4,0x20e3,0x18e3,0x2945,0x2965,0x2965,0x2965,0x2945,0x39a5,0x4a26,0x5245,0x41e5,0x3165,0x3165,0x3165,0x3166,0x3165,0x2104,0x18c2,0x18c2,0x18a3,0x1082,0x1082,0x18e3,0x2104,0x20e3,0x2103,0x2945,0x2965,0x2945,0x2945,0x3165,0x39c5,0x4a25,0x4a05,0x3985,0x2965,0x2945,0x2945,0x3165,0x3165,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x2104,0x2925,0x4a6a,0x4a6a,0x4a69,0x4228,0x4228,0x4229,0x4228,0x4248,0x4228,0x4a69,0x4a49,0x4a69,0x4a69,0x4228,0x4a6a,0x4a69,0x3a28,0x4a69,0x528a,0x4a49,0x3a28,0x4249,0x4249,0x4228,0x3a08,0x3a07,0x39e7,0x3a08,0x4249,0x3a28,0x31e7,0x39e8,0x4228,0x3a08,0x4a6a,0x4249,0x4249,0x4249,0x31c6,0x4249,0x4249,0x4a69,0x52ca,0x4228,0x3a07,0x4248,0x4248,0x4228,0x4249,0x4a69,0x4228,0x3a08,0x4208,0x4228,0x4208,0x3a08,0x3a28,0x3a08,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x39e8,0x4229,0x4208,0x4228,0x4208,0x4228,0x39e7,0x4228,0x39e7,0x31c7,0x3a07,0x39e7,0x31a7,0x31c7,0x31c7,0x4208,0x4228,0x31a6,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a08,0x31c7,0x3a08,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x39e8,0x4229,0x39c8,0x39c8,0x4208,0x4208,0x3a08,0x3a08,0x39e7,0x39e7,0x2145,0x2986,0x31c7,0x4249, +0x31a7,0x31a6,0x31a6,0x29a6,0x31c6,0x31c7,0x2986,0x31a7,0x39c7,0x4208,0x4a69,0x39c7,0x39e7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x4209,0x4229,0x3a08,0x4228,0x4228,0x4269,0x4249,0x39e8,0x31c8,0x31c7,0x39e8,0x39e8,0x4229,0x4249,0x4249,0x4a49,0x4a49,0x4228,0x31c7,0x4248,0x4228,0x4228,0x4a49,0x3a08,0x3a08,0x4a89,0x3a08,0x4208,0x4a49,0x39e7,0x4228,0x4249,0x3a28,0x4228,0x39e8,0x39e8,0x39e8,0x39e8,0x4249,0x3a28,0x3a08,0x4228,0x528a,0x4a69,0x426a,0x4a6a,0x4229,0x4228,0x4249,0x4a49,0x528a,0x4229,0x5acb,0x4229,0x4a49,0x4a69,0x4229,0x528a,0x52aa,0x4249,0x52aa,0x52aa,0x4a49,0x4a6a,0x4229,0x4a69,0x5aec,0x4249,0x4209,0x4249,0x4229,0x4a8b,0x52ec,0x4aaa,0x4a8a,0x4a69,0x4a89,0x4248,0x52aa,0x4269,0x4a49,0x5aeb,0x4a8a,0x4269,0x52cb,0x5aec,0x52cb,0x4aab,0x4a6a,0x4aab,0x4a8a,0x4a6a,0x528a,0x5aeb,0x6b6d,0x52eb,0x5b0b,0x18c2,0x1082,0x1082,0x10a2,0x18e3,0x2104,0x18e4,0x2104,0x18c3,0x18a2,0x10a2,0x1082,0x18e3,0x2925,0x3186,0x3185,0x3165,0x2965,0x2945,0x2945,0x3165,0x3165,0x3165,0x3165,0x3165,0x3185,0x3165,0x3165,0x31a6,0x3186,0x3165,0x3165,0x2124,0x10a2,0x1062,0x1062,0x18c3,0x2965,0x31a6,0x2964,0x2944,0x2965,0x2965,0x2945,0x2945,0x2945,0x3165,0x3165,0x3145,0x2945,0x2945,0x3166,0x3186,0x3186,0x2965,0x2944,0x2924,0x18a3,0x1082,0x1082,0x2104,0x3186,0x39a5,0x2965,0x2965,0x2965,0x3165,0x2965,0x2945,0x2945,0x2945,0x2945,0x2924,0x2944,0x2945,0x2945,0x3165,0x3165,0x2924,0x2924,0x20e3,0x18c2,0x1082,0x1082,0x1082,0x2104,0x18c3,0x1082,0x10a2,0x18c3,0x20e4,0x2925,0x4a49,0x4a69,0x4249,0x4269,0x3a28,0x4208,0x4a69,0x4228,0x3a28,0x4a69,0x528a,0x4a69,0x528a,0x4229,0x4a6a,0x4a69,0x4249,0x3a28,0x4a69,0x528a,0x4a49,0x4208,0x4249,0x4a69,0x4a49,0x4228,0x4208,0x39e7,0x4248,0x4269,0x4269,0x4a49,0x4249,0x39e7,0x4269,0x4a49,0x4249,0x3a08,0x4228,0x4228,0x4228,0x4a49,0x4a89,0x4a89,0x4228,0x4228,0x4a69,0x4249,0x4a8a,0x4a69,0x4228,0x4208,0x4a49,0x4a6a,0x4228,0x31c7,0x3207,0x3a07,0x4228,0x4269,0x4a69,0x31c7,0x4249,0x3a08,0x39e8,0x39c7,0x3a08,0x4a49,0x39e7,0x3a07,0x3a28,0x4249,0x4228,0x3a08,0x39c7,0x31c7,0x39e8,0x39e8,0x39e7,0x4a49,0x39c7,0x4229,0x4249,0x31a7,0x39c7,0x39e7,0x39e7,0x39e7,0x39e7,0x4248,0x39e7,0x31a7,0x4249,0x39e7,0x31c6,0x31e7,0x39e7,0x39e7,0x39e7,0x31a6,0x4228,0x39e8,0x39e8,0x3a08,0x4208,0x39e7,0x31c7,0x3a08,0x31a6,0x2145,0x2986,0x29a6,0x31a6, +0x31a7,0x39e7,0x39c7,0x31a6,0x39c7,0x4228,0x31a6,0x39e7,0x3a08,0x4208,0x39a7,0x31a7,0x3a08,0x39e7,0x31a6,0x2986,0x31a6,0x31a7,0x39e8,0x3a08,0x4228,0x4228,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4228,0x39c7,0x39e7,0x39e7,0x4a8a,0x4249,0x4208,0x4209,0x4a29,0x4208,0x4aaa,0x4289,0x4248,0x52aa,0x4228,0x39e8,0x39e8,0x39c7,0x39e8,0x39e8,0x39e8,0x4229,0x3a29,0x3a08,0x4229,0x4208,0x4228,0x4207,0x4208,0x52aa,0x4229,0x4a49,0x4a49,0x4a89,0x4249,0x4229,0x4249,0x4a8a,0x4a69,0x3a08,0x3a28,0x4269,0x4228,0x528a,0x4229,0x52aa,0x4269,0x4269,0x4aaa,0x42aa,0x3a28,0x4249,0x5acb,0x3a08,0x4249,0x4a69,0x52aa,0x52aa,0x52cb,0x4a8a,0x4a69,0x4aaa,0x52ca,0x4aaa,0x4aaa,0x4a6a,0x4249,0x4a69,0x4aaa,0x4a89,0x4269,0x52aa,0x6b4d,0x4a8a,0x4a8a,0x6b4d,0x630d,0x528b,0x4a8a,0x5b0c,0x4a8a,0x52ab,0x4a69,0x5aec,0x52cb,0x5b0c,0x632c,0x634c,0x18c2,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x20e4,0x18c3,0x10a2,0x1082,0x1082,0x2104,0x2945,0x3185,0x2965,0x2924,0x2104,0x18e3,0x20e3,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2945,0x2945,0x2945,0x3165,0x2944,0x18a2,0x1062,0x1061,0x18e3,0x3166,0x3186,0x3165,0x2945,0x2924,0x2924,0x2104,0x2104,0x2104,0x2125,0x2124,0x2924,0x2104,0x2104,0x2924,0x2944,0x2945,0x2965,0x2945,0x2945,0x18c3,0x1082,0x1082,0x2104,0x31a6,0x39a6,0x3165,0x2924,0x2924,0x2924,0x2945,0x2124,0x2104,0x20e3,0x20e3,0x18e3,0x2104,0x2924,0x2945,0x2945,0x2124,0x2124,0x2945,0x2924,0x18c3,0x1082,0x1082,0x1082,0x2104,0x18a3,0x1082,0x10a2,0x18a3,0x18e3,0x2124,0x4228,0x4a49,0x526a,0x52cb,0x3a29,0x4a8a,0x4aaa,0x4a8a,0x4aaa,0x4228,0x52aa,0x4a8a,0x4a69,0x4a6a,0x4a69,0x4a69,0x4a6a,0x52ca,0x52aa,0x52cb,0x4a89,0x4a69,0x4228,0x4208,0x4a69,0x4a49,0x4208,0x4208,0x4a69,0x3a28,0x3a28,0x4228,0x4249,0x3a28,0x4228,0x4a69,0x4228,0x4228,0x4228,0x4228,0x52aa,0x4208,0x4a49,0x4a89,0x4228,0x4249,0x4a69,0x4249,0x4249,0x3a28,0x4229,0x4a6a,0x4208,0x3a08,0x3a07,0x39e8,0x3a08,0x3a28,0x3a08,0x4228,0x4228,0x4228,0x3a07,0x39e7,0x4208,0x39e7,0x3a08,0x4228,0x39e7,0x3a07,0x3a08,0x3a08,0x39e7,0x4228,0x4228,0x39c7,0x39e7,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x3a08,0x31c7,0x31c7,0x39e7,0x39c7,0x4208,0x31c7,0x39e7,0x39e7,0x31c7,0x39c7,0x3a08,0x3a08,0x29a6,0x31c7,0x3a08,0x39c7,0x4228,0x31a7,0x3a08,0x4229,0x3a08,0x4208,0x31a6,0x31c6,0x39e7,0x31a6,0x2966,0x31a6,0x31c7,0x2965, +0x39e7,0x39e7,0x31c6,0x39c6,0x31a6,0x3186,0x39c7,0x4208,0x39a7,0x3187,0x31c7,0x31a7,0x31c7,0x31a7,0x39e8,0x39c8,0x39e7,0x39e7,0x3a08,0x4229,0x4228,0x3a08,0x3a08,0x3a08,0x39e7,0x39e8,0x4a6a,0x4a8a,0x4229,0x39e7,0x4228,0x4228,0x3a08,0x39c7,0x4208,0x4229,0x4229,0x4249,0x4228,0x39c7,0x39e7,0x4208,0x39e8,0x4209,0x4229,0x39c8,0x39c7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x4208,0x4249,0x4208,0x4a49,0x52aa,0x4228,0x4249,0x4a6a,0x4a49,0x4a49,0x4249,0x4229,0x3a08,0x4a6a,0x4228,0x4a69,0x4a8a,0x4a69,0x4a69,0x4aaa,0x4269,0x4289,0x4248,0x4a6a,0x528a,0x4229,0x5aeb,0x5289,0x52aa,0x4a69,0x52cb,0x52cb,0x426a,0x424a,0x4aa9,0x52a9,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5aeb,0x4aaa,0x4269,0x52ab,0x5aeb,0x4a6a,0x5aec,0x5acb,0x630c,0x5aeb,0x52aa,0x738e,0x4a6a,0x5aeb,0x52ab,0x6b4d,0x5acb,0x52cb,0x528a,0x5acb,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e4,0x18e4,0x18c3,0x10a2,0x1082,0x1082,0x20e4,0x2104,0x20e3,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x18a3,0x18a3,0x18c3,0x18e3,0x20e3,0x18c3,0x1062,0x1062,0x18e3,0x2104,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18c3,0x18e3,0x18c3,0x20e3,0x18c3,0x1082,0x1082,0x18e3,0x2924,0x2104,0x18e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x20e4,0x2104,0x18c3,0x1082,0x1082,0x1082,0x20e3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4249,0x52ab,0x4a49,0x4a49,0x4a6a,0x4a8a,0x3a08,0x52cb,0x4aaa,0x3a08,0x52cb,0x52cb,0x4269,0x4a6a,0x4229,0x528a,0x52cb,0x528a,0x52aa,0x4a49,0x39e7,0x4a69,0x4a69,0x4228,0x52cb,0x52aa,0x4208,0x4228,0x4249,0x4228,0x3a28,0x3a07,0x4248,0x4a49,0x3a28,0x4a89,0x4a89,0x4228,0x4249,0x4249,0x4229,0x4249,0x4249,0x4229,0x4208,0x4228,0x528a,0x4a69,0x3208,0x3a28,0x3a08,0x4228,0x39e7,0x3a07,0x3a07,0x39e8,0x4a69,0x4228,0x4208,0x4208,0x4208,0x4a49,0x39e7,0x3a07,0x4a49,0x4a69,0x3a08,0x4269,0x4228,0x3a28,0x4228,0x39c7,0x4228,0x4208,0x4228,0x4208,0x4228,0x4208,0x39e7,0x31a6,0x39e7,0x31c7,0x39e8,0x39e7,0x31a6,0x39e7,0x39c7,0x39e7,0x39e7,0x39c7,0x31c6,0x39c7,0x39e7,0x4249,0x4249,0x3187,0x39e8,0x31a7,0x31e7,0x3a08,0x39e7,0x4249,0x4228,0x4249,0x31e7,0x31e7,0x3a08,0x31c6,0x39e7,0x31a6,0x2145,0x31c7,0x31c7, +0x31a7,0x2986,0x31c7,0x31c7,0x31a6,0x2986,0x3186,0x31a7,0x3187,0x31a6,0x31c7,0x2986,0x2966,0x39c8,0x3a08,0x4208,0x39e7,0x4228,0x4249,0x31c7,0x31e7,0x31e7,0x31c7,0x39e7,0x4208,0x4208,0x4229,0x3a08,0x3a08,0x31c7,0x4228,0x31c7,0x39e7,0x39c7,0x3a28,0x3a08,0x39e7,0x4208,0x39e7,0x39e7,0x2986,0x31a7,0x39e8,0x31a7,0x39e8,0x4208,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x3a08,0x39e8,0x31a7,0x3a08,0x4229,0x4229,0x4228,0x4a89,0x52ca,0x3a07,0x4228,0x4a69,0x4a6a,0x3a08,0x3a28,0x4229,0x4229,0x4a49,0x39e7,0x4249,0x4249,0x3a08,0x4229,0x4208,0x4229,0x4249,0x4249,0x4228,0x39c8,0x4a6a,0x4a69,0x528a,0x5aca,0x4a89,0x4a8a,0x4a6a,0x4a8a,0x4aab,0x4a8a,0x4a69,0x52aa,0x52ab,0x4aaa,0x5b0b,0x52aa,0x4249,0x4269,0x52aa,0x52aa,0x52aa,0x5aeb,0x4a89,0x528a,0x5acb,0x6b4d,0x52aa,0x526a,0x528a,0x52cb,0x5aeb,0x528a,0x630c,0x528a,0x528b,0x18c3,0x1082,0x1082,0x10a2,0x18c3,0x2104,0x18e3,0x18e4,0x18c2,0x1082,0x1082,0x1082,0x18a3,0x10a2,0x1082,0x1082,0x1082,0x1062,0x1062,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x1062,0x0861,0x10a2,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x1082,0x18c3,0x2124,0x4228,0x4a8a,0x4229,0x4208,0x4a6a,0x4a6a,0x4a69,0x52aa,0x4a49,0x4249,0x4aaa,0x4269,0x4249,0x528a,0x4229,0x4a49,0x4a49,0x4228,0x39e8,0x4228,0x39e8,0x4a29,0x4a69,0x4208,0x528a,0x4a49,0x4228,0x4249,0x4228,0x4208,0x4a69,0x4249,0x4a69,0x4249,0x4a8a,0x4269,0x4228,0x4a49,0x4249,0x4249,0x3a28,0x4249,0x4a69,0x4a69,0x4208,0x3a08,0x4208,0x4208,0x4a69,0x4a4a,0x3a08,0x3a08,0x4248,0x4a69,0x3a08,0x4249,0x4228,0x39e7,0x4228,0x4208,0x39e7,0x4229,0x4a49,0x4228,0x4249,0x4228,0x31c6,0x4228,0x4249,0x4229,0x39e7,0x4228,0x4248,0x3a08,0x39e7,0x4249,0x4208,0x4228,0x31c7,0x39e7,0x4228,0x31a6,0x31c7,0x39e7,0x31c6,0x31c7,0x39e7,0x39e7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x4a6a,0x5b0c,0x31c7,0x39c7,0x4229,0x3a07,0x4208,0x3a08,0x4228,0x31c7,0x3a07,0x4228,0x4209,0x3187,0x39c7,0x4249,0x31c7,0x31a6,0x31a6,0x39c7, +0x2966,0x2966,0x3a08,0x31a7,0x31a7,0x39e8,0x31a7,0x31a7,0x39c7,0x39c7,0x39e7,0x3a08,0x3a08,0x39e8,0x39e7,0x3a08,0x39e8,0x39c8,0x39e8,0x39e7,0x3a28,0x31c7,0x31c7,0x3a08,0x31a6,0x39c7,0x39c7,0x3a07,0x3a08,0x31c7,0x31e8,0x39c8,0x3186,0x3a08,0x52cb,0x31c7,0x3a07,0x3a08,0x31c7,0x39e8,0x31c7,0x31c7,0x39e8,0x39e7,0x39c7,0x4228,0x4228,0x39e7,0x4229,0x4229,0x39e9,0x39e8,0x31c7,0x39e8,0x3a08,0x3a08,0x4229,0x4228,0x4a49,0x4249,0x4249,0x528a,0x4248,0x4a8a,0x4249,0x4248,0x4249,0x4a8a,0x4249,0x4229,0x4249,0x4a49,0x4229,0x4229,0x4a69,0x4249,0x4269,0x4a8a,0x4228,0x4228,0x4a49,0x528a,0x52cb,0x4a69,0x4a8a,0x52ab,0x4aaa,0x52eb,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a6a,0x52ab,0x5acb,0x5aeb,0x3a08,0x4a69,0x5aec,0x4229,0x528a,0x6b4d,0x4a69,0x6b6d,0x52cb,0x634d,0x528b,0x4a6a,0x630c,0x5aeb,0x52aa,0x528a,0x5aeb,0x4a49,0x5aec,0x18c3,0x1082,0x1082,0x10a2,0x18a3,0x18e4,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1062,0x1061,0x1061,0x1061,0x0861,0x0861,0x1082,0x1061,0x0861,0x1061,0x1082,0x0861,0x0861,0x0861,0x1062,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1062,0x1062,0x1082,0x1082,0x1082,0x1062,0x1062,0x1062,0x1061,0x0861,0x1061,0x1062,0x1062,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x2104,0x4a6a,0x4a6a,0x4229,0x4a69,0x4249,0x4a8a,0x52cb,0x4a8a,0x4249,0x4a69,0x4a8a,0x4249,0x4249,0x4229,0x4a49,0x4208,0x4208,0x4a69,0x4228,0x4a8a,0x4228,0x4a6a,0x52aa,0x4228,0x528a,0x4228,0x4a49,0x4a69,0x39e7,0x4249,0x4229,0x4228,0x4228,0x4228,0x4269,0x4269,0x4a49,0x528a,0x4a69,0x4229,0x4249,0x4248,0x4248,0x4249,0x52aa,0x4229,0x39e8,0x4a49,0x4a29,0x4a49,0x4229,0x4208,0x4248,0x3a08,0x4228,0x4228,0x3a07,0x4249,0x4249,0x39c7,0x4228,0x4a49,0x4249,0x4228,0x4229,0x39e7,0x4a69,0x3a07,0x4208,0x39e8,0x31c7,0x3a08,0x4228,0x31c7,0x39e8,0x4229,0x39e8,0x4208,0x39e7,0x39e8,0x39e8,0x3a08,0x31e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x31a6,0x39e7,0x4248,0x39e7,0x31c7,0x39e8,0x4249,0x3a07,0x3a08,0x52ab,0x39e7,0x4228,0x31c7,0x31c7,0x3a08,0x4249,0x4229,0x4209,0x3187,0x39e8,0x31c7,0x3a08,0x4228,0x31a7,0x31c7, +0x2986,0x2986,0x31a6,0x31a6,0x31a7,0x4228,0x39e8,0x39e7,0x31a7,0x39c7,0x39e8,0x39e7,0x3a08,0x29a6,0x31e7,0x4229,0x31a7,0x39e8,0x4a4a,0x39e8,0x4a69,0x39e7,0x39c7,0x4208,0x39c7,0x31a7,0x3a08,0x4a69,0x39e7,0x3a08,0x4229,0x4209,0x2987,0x4229,0x4a8a,0x31e7,0x31e7,0x31e7,0x3a28,0x4228,0x4228,0x39e7,0x3a08,0x3a08,0x4208,0x39e8,0x3a08,0x4208,0x39e8,0x39e8,0x424a,0x39e8,0x31e8,0x3a28,0x3a08,0x3a08,0x4a69,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a8a,0x4aaa,0x4a69,0x4249,0x4249,0x4a6a,0x39e7,0x4249,0x4a49,0x4a49,0x4a49,0x4229,0x4249,0x4269,0x4a8a,0x4a8a,0x4a89,0x4a69,0x4a8a,0x52aa,0x4a69,0x4a8a,0x4a8a,0x52ab,0x4aaa,0x52cb,0x4249,0x4249,0x4a49,0x4a49,0x4a6a,0x52ab,0x4a8a,0x52cb,0x4249,0x4249,0x4269,0x4a8a,0x5aec,0x5acb,0x5acb,0x6b8d,0x52aa,0x4a8a,0x5aed,0x4a8b,0x4a6a,0x5b0c,0x5acb,0x5aec,0x528a,0x52eb,0x5b0c,0x18c2,0x1082,0x1082,0x18a2,0x18a3,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x1082,0x1061,0x1062,0x1082,0x1082,0x1081,0x0861,0x1061,0x1061,0x1082,0x1062,0x1061,0x1061,0x1062,0x1061,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x1062,0x1082,0x1082,0x1062,0x1062,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1082,0x1082,0x2104,0x10a2,0x1062,0x1082,0x10a2,0x10a2,0x2124,0x4a49,0x4a6a,0x4208,0x528a,0x4a8a,0x52aa,0x52aa,0x4249,0x4a69,0x5aeb,0x4269,0x4249,0x4a8a,0x4a29,0x4a6a,0x4a69,0x4a69,0x4228,0x4a49,0x4a69,0x4a69,0x4a69,0x528a,0x4a69,0x4a69,0x4a89,0x4a69,0x4249,0x4a69,0x4228,0x4228,0x4228,0x39e7,0x4228,0x4a49,0x4a69,0x4228,0x4228,0x4a69,0x52ab,0x39e8,0x4a49,0x4a69,0x39e7,0x4aaa,0x4a69,0x4a49,0x4a49,0x4248,0x4228,0x4a49,0x4a49,0x4a29,0x39e7,0x3a08,0x39e8,0x39e7,0x4249,0x4a6a,0x39e8,0x39e8,0x3a08,0x4228,0x39e7,0x4249,0x4228,0x4228,0x3a07,0x4208,0x39c7,0x39e7,0x4229,0x39e7,0x31c7,0x31c7,0x39e8,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x4249,0x3a08,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x39c7,0x39c7,0x31a6,0x39c7,0x31a7,0x31c7,0x3a07,0x4228,0x31c7,0x31c7,0x39e7,0x31a7,0x3a08,0x3a08,0x31c7,0x4229,0x39e9,0x4249,0x4229,0x2986,0x39e7,0x4249,0x4228,0x39e7,0x39e7, +0x3186,0x2986,0x31c7,0x3207,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x39c7,0x31c7,0x3a07,0x31c7,0x31e7,0x31e7,0x3a08,0x39e8,0x3a08,0x3a08,0x39c7,0x39c7,0x39a7,0x4208,0x39e7,0x31c6,0x39c7,0x39e8,0x3a07,0x3a08,0x39c7,0x4208,0x4229,0x31a7,0x39c8,0x31c7,0x31e7,0x4228,0x3a28,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x4208,0x39e7,0x31c7,0x3a08,0x31e7,0x31e7,0x4249,0x4229,0x39e8,0x3a08,0x39c7,0x39e7,0x4228,0x4228,0x4208,0x4208,0x4228,0x4249,0x3a08,0x4249,0x4a6a,0x4228,0x4a6a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a6a,0x39e8,0x4229,0x4229,0x52ab,0x52ab,0x4a69,0x4a69,0x4269,0x4a8a,0x4a8a,0x52ab,0x4a69,0x4a69,0x52ab,0x4a6a,0x528b,0x4a4a,0x528a,0x528a,0x4229,0x4229,0x52ab,0x5b2c,0x4a8a,0x4a6a,0x52ab,0x4a8a,0x4229,0x4aaa,0x52ab,0x528a,0x5aec,0x5aeb,0x52cb,0x52cb,0x632d,0x4a6a,0x4a8a,0x5aec,0x5b0c,0x5aec,0x4a8a,0x6b8e,0x634d,0x10a2,0x1082,0x1082,0x10a2,0x18a2,0x18e3,0x18c3,0x18e3,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1061,0x1082,0x1062,0x1082,0x1082,0x0861,0x1061,0x1061,0x1062,0x1061,0x1062,0x1062,0x1061,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x1082,0x2104,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x2104,0x528a,0x5acb,0x4249,0x52ca,0x5aeb,0x528a,0x528a,0x528a,0x4a6a,0x52aa,0x4a8a,0x4249,0x4a49,0x4a29,0x39e8,0x4249,0x4a8a,0x52aa,0x4228,0x4229,0x4a6a,0x528a,0x528a,0x4228,0x4249,0x4a69,0x4208,0x4a69,0x4a69,0x4a49,0x4a49,0x4229,0x4a49,0x4208,0x4228,0x4a49,0x4249,0x4229,0x4269,0x5aeb,0x4a8a,0x4249,0x4229,0x39e7,0x4249,0x52cb,0x4248,0x4a8a,0x528a,0x4229,0x4228,0x4a49,0x4208,0x39c7,0x39e8,0x4249,0x4228,0x4229,0x4208,0x3a08,0x39e8,0x29a7,0x31e7,0x3a29,0x31e8,0x4228,0x39e7,0x39e7,0x39e7,0x4249,0x4228,0x4249,0x39e8,0x39e8,0x39c7,0x39c7,0x39e8,0x31a7,0x4209,0x4229,0x4208,0x39e7,0x31a6,0x4228,0x4228,0x39e7,0x39c7,0x39e8,0x39c7,0x39c7,0x39c7,0x31a7,0x2966,0x3a08,0x39e8,0x31c7,0x39c7,0x31c7,0x31a6,0x39e8,0x4229,0x39c7,0x39c7,0x4208,0x41e8,0x39e8,0x4249,0x31c7,0x4208,0x39e8,0x39c7,0x39c7,0x31c7, +0x39c7,0x31a6,0x31c7,0x31e7,0x31c6,0x29a6,0x2986,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39c7,0x31c7,0x3a08,0x4a6a,0x39e8,0x3a08,0x4a49,0x39e7,0x39e7,0x39e8,0x39e7,0x4a89,0x4207,0x31a6,0x39e8,0x39c7,0x31a7,0x39e8,0x3a08,0x31a7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x39e8,0x3a07,0x3a07,0x4228,0x3a08,0x3a08,0x31c7,0x39e7,0x3a08,0x39e7,0x41e8,0x39e8,0x39e7,0x39e8,0x3a08,0x39e8,0x4208,0x4228,0x4208,0x4229,0x4229,0x4249,0x4228,0x4249,0x4a69,0x4a6a,0x4a6a,0x4a69,0x4a69,0x3a08,0x4208,0x4229,0x526a,0x526a,0x4a29,0x528a,0x528a,0x4208,0x4a29,0x52ab,0x4a29,0x4a6a,0x4a49,0x4229,0x5acc,0x528a,0x4a69,0x4a69,0x4a69,0x526a,0x4a49,0x528a,0x528a,0x4229,0x4a69,0x52ab,0x4a6a,0x52aa,0x52aa,0x4a69,0x4a6a,0x5aec,0x5acb,0x52aa,0x52aa,0x5aeb,0x5b0c,0x6b6d,0x52cb,0x5aec,0x528a,0x5acb,0x52ab,0x528a,0x18c2,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x10c3,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061,0x1061,0x1061,0x1062,0x1082,0x1062,0x0861,0x0861,0x1061,0x1061,0x0861,0x1061,0x1062,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1082,0x1082,0x10a2,0x2104,0x1082,0x0881,0x1082,0x18c3,0x10a2,0x2124,0x5acb,0x5acb,0x4a69,0x52ca,0x52aa,0x52ca,0x528a,0x5acb,0x528a,0x4249,0x5b0c,0x4249,0x4a49,0x4a6a,0x4a69,0x4a69,0x4249,0x4249,0x4229,0x3a08,0x4a6a,0x4a49,0x4a49,0x4249,0x4249,0x4248,0x4249,0x4a69,0x4228,0x4228,0x4208,0x4a8a,0x52aa,0x3a07,0x4208,0x4a49,0x4a89,0x4a8a,0x31e7,0x52cb,0x4a8a,0x4a6a,0x4a49,0x39e8,0x4229,0x528a,0x4a69,0x52aa,0x4a69,0x4229,0x4228,0x4a49,0x4a89,0x4249,0x4228,0x4228,0x31e7,0x3a08,0x3a28,0x3a28,0x4a89,0x4249,0x3a07,0x4249,0x4249,0x2985,0x39e7,0x4248,0x31c6,0x4228,0x4248,0x4249,0x39e7,0x39e7,0x3a08,0x39e8,0x39e7,0x31c7,0x31c7,0x4229,0x39e8,0x39c7,0x39c7,0x3a08,0x39e7,0x4228,0x39e7,0x39c7,0x3186,0x4228,0x39e7,0x31a7,0x39c7,0x4229,0x39e8,0x31a7,0x39a7,0x2945,0x39c7,0x4208,0x39e7,0x39c7,0x31a6,0x31c7,0x4208,0x31c6,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4228,0x31a6, +0x31a6,0x31a6,0x31c7,0x31a6,0x2986,0x31a6,0x39e7,0x3a08,0x39e8,0x31c7,0x31a7,0x41e8,0x39c7,0x31a6,0x39c7,0x39c7,0x39c7,0x39c7,0x4228,0x4a8a,0x4269,0x4269,0x39e8,0x31c7,0x4208,0x39c7,0x31a6,0x4228,0x3a07,0x39c7,0x3a07,0x31c7,0x31a6,0x3a07,0x4248,0x3a08,0x31a7,0x31a7,0x31a8,0x31c7,0x39e8,0x4208,0x4207,0x4208,0x39e7,0x4228,0x3207,0x3a08,0x3a08,0x39e7,0x39e8,0x4208,0x3a08,0x4a69,0x39e8,0x4229,0x3a09,0x3a08,0x3a28,0x4228,0x4228,0x4249,0x4a69,0x4aaa,0x52cb,0x4228,0x4228,0x4228,0x3a08,0x4a8a,0x3a28,0x3a08,0x4a49,0x4a49,0x4229,0x4228,0x528a,0x4a89,0x52aa,0x4249,0x4a69,0x4229,0x4aab,0x4269,0x4269,0x52cb,0x4a89,0x5b0c,0x4a69,0x4208,0x4249,0x4a69,0x4249,0x52aa,0x3a08,0x4a8a,0x52cb,0x3a08,0x52aa,0x52aa,0x5acb,0x528a,0x5b0c,0x52aa,0x5acb,0x5b0c,0x52aa,0x5b0b,0x52aa,0x630c,0x5acc,0x4229,0x526a,0x5acb,0x5aeb,0x18c2,0x1081,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1081,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x0861,0x1061,0x0861,0x0861,0x0861,0x1081,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1081,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1061,0x1061,0x1082,0x10a2,0x2924,0x1082,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x52aa,0x5aeb,0x4a89,0x4248,0x52ca,0x52ca,0x52cb,0x4a8a,0x5aec,0x5aab,0x528a,0x5aeb,0x5b0c,0x528a,0x4a69,0x4a8a,0x3a28,0x4a8a,0x52ab,0x4229,0x4229,0x5269,0x4a49,0x4249,0x4a69,0x4249,0x4249,0x4228,0x4a69,0x52aa,0x4269,0x4a8a,0x4a69,0x4aaa,0x3a28,0x4a69,0x3a28,0x4a69,0x3a28,0x4a8a,0x4249,0x4a6a,0x4208,0x4228,0x4229,0x4229,0x4229,0x3a08,0x4249,0x4229,0x4228,0x3a08,0x4249,0x4249,0x4228,0x39e8,0x31a7,0x31a7,0x4a49,0x4228,0x4208,0x4208,0x4208,0x39e7,0x4207,0x3a08,0x39e7,0x4228,0x31c6,0x39c7,0x4208,0x4208,0x4228,0x3a07,0x4228,0x4228,0x3a07,0x4248,0x3a28,0x3a07,0x4228,0x4228,0x39e7,0x3a07,0x4228,0x39e7,0x4228,0x4228,0x4208,0x4228,0x3a07,0x4a89,0x3a08,0x4a8a,0x39e8,0x31a7,0x31a7,0x3a08,0x4249,0x39e7,0x39e7,0x3a08,0x31c7,0x31c7,0x4228,0x39e7,0x31a6,0x31c7,0x31a6,0x31a6,0x31a6,0x4a69,0x39c7, +0x3186,0x31a6,0x31c7,0x31a6,0x31c7,0x31a7,0x31a6,0x31a6,0x31a6,0x31a7,0x2986,0x39c7,0x39e8,0x31e7,0x31c7,0x31c7,0x3a08,0x39e8,0x31a7,0x39c8,0x4208,0x39c7,0x39e8,0x39e7,0x31a6,0x3186,0x39e8,0x39e7,0x2986,0x31a7,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x3a28,0x4248,0x31e7,0x31e7,0x39e8,0x39c7,0x3a07,0x4228,0x4248,0x4248,0x39e7,0x31e7,0x4228,0x4248,0x39e7,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x39e8,0x31c8,0x31c7,0x39e7,0x4a69,0x4a69,0x4249,0x4228,0x4a6a,0x4249,0x3a08,0x4208,0x3a08,0x4a49,0x4a6a,0x4228,0x39e8,0x4208,0x4208,0x4249,0x4a8a,0x4a49,0x52aa,0x4249,0x52aa,0x4228,0x4a89,0x3a49,0x4229,0x4a8a,0x3a08,0x4a8a,0x4aaa,0x4228,0x4248,0x4269,0x52cb,0x52ab,0x5aec,0x4a8a,0x5b0c,0x4269,0x4248,0x528a,0x52aa,0x5289,0x52aa,0x6b6e,0x5aec,0x4a49,0x52cb,0x4a8a,0x4a89,0x528a,0x632c,0x528a,0x4a69,0x5aeb,0x52ab,0x4a8a,0x18c2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1082,0x1082,0x1082,0x18a3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c2,0x18c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x18a2,0x18c3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x18e3,0x2103,0x18c2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x10a2,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c2,0x18c3,0x18c3,0x18c2,0x18c2,0x18c3,0x18e3,0x18e3,0x2103,0x2124,0x2124,0x2103,0x1082,0x1061,0x1062,0x18a2,0x2944,0x1082,0x0861,0x1082,0x18e3,0x18e3,0x2924,0x4a49,0x4a49,0x4a69,0x52aa,0x52ca,0x5b0c,0x52eb,0x52aa,0x52aa,0x52aa,0x4208,0x6b6e,0x528b,0x4208,0x4a49,0x4a69,0x4289,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x52aa,0x5aeb,0x4248,0x4a69,0x4249,0x4269,0x4228,0x52aa,0x52ca,0x4a69,0x4aaa,0x4a6a,0x4a69,0x3a08,0x4a69,0x4249,0x4a69,0x4249,0x4249,0x528a,0x4208,0x39c7,0x4208,0x4228,0x4228,0x4208,0x4208,0x4248,0x3a07,0x39e7,0x4249,0x3a08,0x31c7,0x3a08,0x4229,0x39e8,0x39e8,0x39e8,0x4249,0x39e7,0x39c7,0x4208,0x4228,0x4208,0x4a49,0x4228,0x4208,0x39e8,0x4208,0x4a69,0x39e7,0x4228,0x3a07,0x4228,0x528a,0x39e8,0x4228,0x39e7,0x39e7,0x4a49,0x3a07,0x4a69,0x39e7,0x4228,0x3a07,0x3a08,0x39e7,0x39e7,0x4208,0x4228,0x4228,0x4a49,0x4208,0x39e7,0x3a07,0x39e8,0x4209,0x31a7,0x39e7,0x4228,0x31e7,0x31c7,0x3186,0x4a69,0x31a7,0x31c7,0x39c7,0x39e7,0x31a6,0x3a08,0x39e7,0x31a7, +0x29a6,0x31c7,0x31c7,0x2965,0x2986,0x2986,0x39e7,0x3a08,0x3a08,0x31e7,0x31a7,0x31a7,0x31c7,0x31c7,0x39e7,0x3a08,0x39e7,0x31a7,0x31a7,0x39e8,0x31a7,0x39e7,0x4228,0x4228,0x4208,0x31a6,0x39e7,0x4208,0x4249,0x31c7,0x31a6,0x31e7,0x3a08,0x2987,0x31a7,0x39c8,0x3a08,0x31e7,0x31e7,0x39e8,0x3a08,0x3a08,0x4228,0x4228,0x4269,0x3a28,0x3a28,0x52aa,0x4208,0x4208,0x39e7,0x39c7,0x39e8,0x4249,0x4249,0x31c7,0x31e7,0x3a08,0x3a07,0x4249,0x3a08,0x3a08,0x39e8,0x4229,0x4a69,0x4248,0x4249,0x3a29,0x4249,0x4229,0x4249,0x4208,0x4a69,0x4208,0x3a08,0x4249,0x4249,0x4a8a,0x4a49,0x4a49,0x4a8a,0x4a6a,0x4229,0x4209,0x4249,0x4249,0x4228,0x4229,0x5aec,0x5acb,0x52ab,0x4a6a,0x4249,0x4a8a,0x4a8a,0x4a89,0x4a8a,0x4248,0x4228,0x528a,0x5aeb,0x7bef,0x52cb,0x5acb,0x4a8a,0x4aaa,0x4a8a,0x52aa,0x4a69,0x528a,0x528a,0x5aab,0x5aec,0x528b,0x630c,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18e3,0x18c3,0x1062,0x1082,0x1081,0x18c3,0x2124,0x2944,0x3165,0x2944,0x2944,0x2944,0x2944,0x2103,0x2124,0x2124,0x2103,0x2103,0x2103,0x2104,0x2924,0x2124,0x2124,0x2924,0x3165,0x2103,0x10a2,0x0861,0x0861,0x10a2,0x2945,0x39c6,0x2123,0x20e3,0x2104,0x2103,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x20e3,0x18c2,0x1082,0x0861,0x0861,0x18c3,0x2965,0x3185,0x2924,0x2124,0x2924,0x2944,0x2944,0x2944,0x2965,0x2965,0x2965,0x2924,0x2924,0x2924,0x2965,0x2965,0x2965,0x3185,0x3185,0x2104,0x1082,0x0861,0x0861,0x18c2,0x3164,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2124,0x528a,0x4a69,0x5aeb,0x52aa,0x52aa,0x5aeb,0x4a69,0x52aa,0x5289,0x4228,0x4a6a,0x4229,0x4209,0x4a49,0x3a28,0x4249,0x4269,0x4269,0x4249,0x4a8a,0x4a6a,0x4a49,0x52aa,0x4248,0x52aa,0x4a8a,0x4a8a,0x4249,0x4208,0x52aa,0x3a08,0x4228,0x4228,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a69,0x4a49,0x4a6a,0x4a69,0x4a49,0x4a6a,0x4249,0x4228,0x4a89,0x4a69,0x4269,0x4a69,0x4229,0x4a69,0x4a69,0x4249,0x4229,0x4229,0x3a08,0x3a28,0x3a07,0x3a07,0x3a28,0x3a08,0x4208,0x4228,0x3a08,0x4249,0x3a08,0x3a08,0x39e8,0x4228,0x3a07,0x3a08,0x4208,0x39e7,0x39c7,0x3a08,0x4229,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31e7,0x31c7,0x3a08,0x39e7,0x3a08,0x4248,0x4208,0x4208,0x4207,0x528a,0x422a,0x39c8,0x31a7,0x31a7,0x31a6,0x31a6,0x31c7,0x31c7,0x4a49,0x31c7,0x31a7,0x39e8,0x3a07,0x4208,0x3a08,0x39e8,0x31c7, +0x31c7,0x31a6,0x2986,0x2986,0x2986,0x31c7,0x3a08,0x39e7,0x39e7,0x39e7,0x31a7,0x31a7,0x3186,0x39c7,0x39c7,0x3a08,0x3a08,0x31e7,0x3a08,0x3a28,0x3207,0x39e7,0x3a08,0x3a08,0x39c7,0x31c7,0x39c7,0x39e8,0x4229,0x31c7,0x31c7,0x3a08,0x39e7,0x39e7,0x31e8,0x3208,0x3a08,0x31a7,0x39e7,0x3a08,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3208,0x426a,0x426a,0x3a08,0x3a48,0x4269,0x31c7,0x3a08,0x4a6a,0x4a8a,0x3a28,0x3a28,0x3a28,0x4248,0x4228,0x4229,0x4249,0x4229,0x4228,0x4a69,0x4a89,0x4249,0x4249,0x4269,0x39e8,0x52cb,0x4a8a,0x4a69,0x4208,0x4aaa,0x52cb,0x3a08,0x4229,0x4229,0x4a49,0x4249,0x4a6a,0x4a6a,0x4229,0x3a08,0x3a08,0x4a8a,0x4a6a,0x4a49,0x528a,0x4a69,0x528a,0x528a,0x4a8a,0x52cb,0x52ca,0x4aaa,0x4a8a,0x5acb,0x526a,0x528a,0x634d,0x5aeb,0x5acb,0x52aa,0x4a89,0x52cb,0x632c,0x4228,0x528b,0x6b4d,0x5acc,0x4a8a,0x528a,0x528a,0x18a2,0x1082,0x1082,0x1082,0x1082,0x18c3,0x10a2,0x18c3,0x18a2,0x1062,0x1082,0x1082,0x18c3,0x2104,0x2104,0x2904,0x2944,0x2965,0x3165,0x3165,0x2924,0x2944,0x2944,0x2944,0x2944,0x2945,0x2945,0x3165,0x3165,0x2944,0x2103,0x2944,0x2103,0x10a2,0x0861,0x0861,0x18a3,0x2945,0x3186,0x18e3,0x2124,0x2945,0x2944,0x2944,0x2924,0x2924,0x2124,0x2924,0x2944,0x2124,0x2124,0x2124,0x2924,0x2103,0x18c2,0x20e3,0x18c3,0x1082,0x0861,0x0861,0x18e3,0x2965,0x2965,0x2104,0x2944,0x2945,0x3165,0x3165,0x3185,0x3185,0x3186,0x3165,0x2965,0x2945,0x2965,0x2965,0x3185,0x2104,0x2104,0x2944,0x18e3,0x1082,0x0861,0x0861,0x18c3,0x2944,0x1081,0x0861,0x1082,0x18c3,0x18c3,0x2924,0x5acb,0x5aec,0x5aeb,0x4a49,0x52ab,0x52aa,0x4aaa,0x52eb,0x4248,0x4a69,0x52ca,0x528a,0x4a49,0x4a8a,0x4249,0x4269,0x4269,0x4a8a,0x4a69,0x4a8a,0x4229,0x4a6a,0x5acb,0x4249,0x4228,0x4a69,0x4249,0x4a49,0x39e8,0x39e8,0x4269,0x52cb,0x4a69,0x4228,0x4a49,0x4229,0x4a49,0x5aec,0x4228,0x4228,0x4a69,0x4a69,0x4a69,0x4a49,0x4249,0x4a8a,0x4a69,0x4249,0x4a69,0x4208,0x3a08,0x4229,0x3a08,0x4228,0x4228,0x3a08,0x31c7,0x4249,0x4249,0x4228,0x39e7,0x4248,0x39e7,0x4208,0x4269,0x3a08,0x3a08,0x3a08,0x4228,0x39e7,0x3a08,0x4228,0x4208,0x39e7,0x39e7,0x31a7,0x4249,0x4269,0x3a07,0x31a6,0x3a08,0x4248,0x39c7,0x3a08,0x4228,0x31c6,0x31c7,0x31c7,0x3a08,0x3a28,0x31e7,0x2985,0x528a,0x52aa,0x39e7,0x4249,0x39e8,0x39c8,0x39c7,0x39e8,0x4208,0x31a6,0x4248,0x3a08,0x39e7,0x39e8,0x31c7,0x39c7,0x4208,0x4a69,0x4228,0x2966,0x31c7, +0x39e7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31a6,0x31a7,0x31a6,0x39e7,0x31a6,0x31a7,0x39c7,0x39e7,0x39c7,0x4228,0x3a08,0x39e8,0x31c7,0x39e7,0x31a6,0x39e7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e8,0x39e7,0x39e7,0x31e7,0x39e7,0x39e7,0x3a07,0x31c7,0x31a7,0x39e7,0x31e7,0x31a6,0x31c7,0x31a7,0x39c8,0x39e8,0x3a09,0x3a08,0x39e8,0x3a08,0x4248,0x4268,0x4aaa,0x3a08,0x4249,0x4208,0x4a49,0x4249,0x4249,0x39e7,0x4229,0x4229,0x4a49,0x4249,0x39e8,0x4229,0x4249,0x4249,0x4249,0x4228,0x3a08,0x4249,0x5acb,0x4a6a,0x4249,0x4249,0x52cb,0x4a8a,0x4208,0x4a49,0x4229,0x4a6a,0x4a49,0x4269,0x4aaa,0x4a8a,0x4a69,0x634c,0x52aa,0x4a8a,0x4249,0x4a8a,0x4228,0x4a49,0x52aa,0x4a8a,0x4a69,0x52cb,0x52cb,0x4a8a,0x4a8b,0x4a6a,0x52ab,0x528a,0x630c,0x630c,0x52aa,0x5b0b,0x4a8a,0x52cb,0x5aec,0x52ab,0x52ab,0x5b0c,0x52ec,0x4a69,0x52cb,0x18a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a2,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x1082,0x1082,0x2924,0x2944,0x2945,0x2945,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2945,0x3165,0x2103,0x18a2,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18e3,0x18a2,0x18a2,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2124,0x2944,0x2944,0x2944,0x2124,0x2124,0x2945,0x3165,0x10a2,0x1082,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x18e3,0x18c3,0x18e3,0x2124,0x2924,0x2945,0x2945,0x2945,0x2945,0x2945,0x2944,0x2944,0x2924,0x2945,0x2945,0x3186,0x2104,0x1082,0x18c2,0x10a2,0x1082,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x10a2,0x18c3,0x18c3,0x2924,0x4a49,0x4a8a,0x4a6a,0x4229,0x4a6a,0x528b,0x4a8a,0x52cb,0x4a49,0x4249,0x4a69,0x52aa,0x52cb,0x4a69,0x4a89,0x52cb,0x4a8a,0x4a6a,0x4a6a,0x528a,0x52aa,0x528a,0x4a69,0x4a69,0x528a,0x4249,0x4a69,0x52aa,0x39e7,0x4228,0x4249,0x52aa,0x4228,0x4249,0x4a49,0x4249,0x4228,0x528a,0x4228,0x4248,0x4a69,0x4228,0x4248,0x4228,0x4a48,0x4a69,0x4a48,0x4a69,0x4a69,0x4a49,0x39e8,0x4a6a,0x4249,0x39e7,0x4249,0x39e8,0x4228,0x4228,0x3a08,0x4228,0x3a08,0x3a28,0x4228,0x4248,0x39e7,0x3a08,0x3a08,0x4228,0x4228,0x31c7,0x39e7,0x39e8,0x4249,0x4228,0x39e7,0x39e8,0x31c7,0x3a08,0x3a08,0x39e7,0x31c7,0x4208,0x39c7,0x39e7,0x4228,0x31c7,0x4228,0x4228,0x3a08,0x4228,0x4249,0x31c7,0x4228,0x4228,0x3a07,0x4249,0x528a,0x39c7,0x39e7,0x3a08,0x4229,0x3a08,0x4228,0x39e7,0x39c6,0x4248,0x39e7,0x39e7,0x4a6a,0x31a6,0x39e7,0x31a7,0x3a08, +0x31c7,0x31a7,0x3186,0x31a6,0x31a7,0x31a6,0x2986,0x31c7,0x31c7,0x31a6,0x39e7,0x31c7,0x31a6,0x31a7,0x39c7,0x31a7,0x39c7,0x31c7,0x39c7,0x31c7,0x39c7,0x39c7,0x31c7,0x2986,0x31c7,0x3a08,0x39e8,0x3a09,0x3a09,0x3a08,0x29c7,0x31c7,0x31e7,0x3a07,0x39e7,0x31c7,0x2986,0x29a6,0x31a6,0x31e7,0x31a7,0x31c7,0x31c7,0x31e8,0x39e8,0x39e8,0x424a,0x4a8a,0x3a08,0x4228,0x39e8,0x4249,0x4229,0x4208,0x4208,0x39e8,0x39e8,0x31c7,0x39e8,0x526a,0x4a49,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4228,0x4a69,0x4a8a,0x4228,0x4249,0x4a6a,0x4249,0x4249,0x4a8a,0x4229,0x4208,0x4a49,0x4a69,0x4a69,0x4228,0x4249,0x4249,0x4a6a,0x4a49,0x4a6a,0x4a49,0x52cb,0x4aaa,0x4269,0x4a69,0x52cb,0x52cb,0x4a8a,0x4228,0x52aa,0x52cb,0x4a6a,0x632d,0x5acb,0x4a49,0x52ab,0x5acb,0x5aca,0x4a69,0x52ab,0x4a69,0x52cb,0x52cb,0x4a8a,0x52ab,0x52cb,0x4a8a,0x5aeb,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x18a2,0x0861,0x0841,0x0861,0x2924,0x2924,0x2944,0x2945,0x2924,0x2945,0x2944,0x2944,0x2945,0x2945,0x2945,0x2945,0x2945,0x2965,0x2944,0x0861,0x0861,0x1082,0x0861,0x0861,0x10a2,0x1082,0x0841,0x18c3,0x2944,0x2924,0x2925,0x2945,0x2924,0x2944,0x2964,0x3164,0x2944,0x2944,0x2924,0x2944,0x2945,0x3165,0x18c2,0x0841,0x1082,0x1082,0x0861,0x1082,0x10a2,0x1061,0x0861,0x2104,0x2124,0x2924,0x2924,0x2945,0x2945,0x2945,0x2964,0x2944,0x2944,0x2925,0x2945,0x2925,0x2965,0x2945,0x0841,0x0841,0x1082,0x1062,0x0861,0x0861,0x18c3,0x2924,0x1061,0x0861,0x18a3,0x18c3,0x18c3,0x2124,0x4a69,0x5aeb,0x4a6a,0x52aa,0x528a,0x528a,0x4a49,0x52ab,0x4249,0x4228,0x3a08,0x52eb,0x52aa,0x4a69,0x5acb,0x4a69,0x4a49,0x4228,0x4a49,0x4208,0x4a6a,0x4a6a,0x3a08,0x4a8a,0x52aa,0x4249,0x4a69,0x4a49,0x4a49,0x4a69,0x3a08,0x4a49,0x39e7,0x4a69,0x4a89,0x52aa,0x4248,0x4a49,0x4248,0x4228,0x4a49,0x52aa,0x4a69,0x52aa,0x4a69,0x4228,0x528a,0x4a6a,0x4229,0x4229,0x39e7,0x528a,0x4a69,0x39e7,0x4249,0x4229,0x3a08,0x3a08,0x31a6,0x4249,0x4249,0x39c7,0x3a08,0x4248,0x3a08,0x4a89,0x4228,0x4208,0x3a07,0x39e7,0x39c7,0x39e8,0x4a49,0x528a,0x39e8,0x39e8,0x39c8,0x31c7,0x31a6,0x3a08,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39e8,0x4a69,0x4228,0x4a69,0x31a6,0x3186,0x39e7,0x39e7,0x39e7,0x4229,0x4a6a,0x4228,0x39e7,0x4248,0x4248,0x4228,0x4249,0x4228,0x39e7,0x3a08,0x31e7,0x39e7,0x39c7,0x29a6,0x31c7, +0x31a6,0x31a6,0x2986,0x31c7,0x31a6,0x2986,0x2986,0x31c7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x39e7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a6,0x31c7,0x31a7,0x4249,0x4249,0x2986,0x39e8,0x3a08,0x3a08,0x31c7,0x39e7,0x31c7,0x39c7,0x31a7,0x31c7,0x3a07,0x3a08,0x39e7,0x3a08,0x31e7,0x29a6,0x31e7,0x39e7,0x4228,0x39e7,0x4249,0x4229,0x3a08,0x4229,0x3a08,0x3a08,0x4269,0x4229,0x31e8,0x3a08,0x3a08,0x4229,0x528a,0x528a,0x4228,0x31a7,0x4228,0x3a08,0x3a08,0x4a49,0x4a69,0x4228,0x4249,0x4229,0x4228,0x5acb,0x3a08,0x428a,0x428a,0x3a29,0x3a28,0x4249,0x52aa,0x4a89,0x4a89,0x4a69,0x4a6a,0x4a6a,0x4249,0x4a49,0x4a4a,0x5aeb,0x4a69,0x4a49,0x4a6a,0x5acc,0x52ab,0x52ab,0x4a49,0x4a6a,0x4249,0x5aec,0x5aeb,0x528a,0x5aeb,0x632c,0x5acb,0x4a69,0x52ab,0x4a6a,0x424a,0x4a8a,0x52ca,0x52cb,0x5b2c,0x4a8a,0x5b0c,0x630c,0x5acb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0020,0x0861,0x2124,0x2124,0x2945,0x2945,0x2925,0x2945,0x3185,0x39a4,0x39a4,0x39a5,0x3165,0x2945,0x2945,0x2965,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0020,0x18e3,0x2945,0x2945,0x2945,0x2945,0x2945,0x39c4,0x5a64,0x5a84,0x4204,0x2944,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1061,0x1082,0x1082,0x0841,0x0861,0x2104,0x2925,0x2945,0x2945,0x2945,0x3185,0x4a25,0x5244,0x4204,0x3185,0x2945,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0841,0x18c3,0x2904,0x0861,0x0861,0x10a2,0x18c3,0x18c2,0x2944,0x528a,0x4a49,0x4a69,0x4a69,0x4a69,0x4a49,0x4229,0x4a6a,0x4228,0x5289,0x4a89,0x4a69,0x4229,0x4a69,0x4a49,0x52aa,0x4228,0x4a49,0x4a8a,0x3a28,0x3a28,0x4a8a,0x4249,0x4a69,0x4a69,0x4a69,0x4a69,0x4208,0x4a49,0x4249,0x4a49,0x4a49,0x4228,0x4228,0x4228,0x4228,0x4a69,0x4228,0x4a8a,0x4a8a,0x3a08,0x5aeb,0x528a,0x4208,0x4a49,0x4a49,0x4a6a,0x4208,0x4229,0x4228,0x4228,0x3a07,0x39e7,0x3a08,0x39e7,0x4229,0x3a08,0x39e7,0x3a08,0x4228,0x4208,0x39c7,0x31e7,0x31c7,0x3a08,0x4a69,0x4a69,0x31a6,0x3a08,0x4228,0x39e7,0x39e7,0x4228,0x39e8,0x31a7,0x31a7,0x3186,0x39c7,0x39e8,0x39c7,0x4208,0x4249,0x3a08,0x3a08,0x39e7,0x39e7,0x4208,0x39c7,0x39e8,0x31c7,0x31c7,0x4228,0x39e7,0x31a7,0x39c7,0x31c7,0x3186,0x39c8,0x31e7,0x3a08,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31c7,0x31c7,0x3a08,0x31e7,0x39e7,0x39e8,0x2966,0x2986, +0x2966,0x2986,0x31a7,0x31c7,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2986,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x31a6,0x4208,0x31a7,0x31c7,0x31c7,0x39e7,0x39e7,0x31a7,0x39e8,0x3a08,0x39e7,0x31a6,0x31c7,0x4228,0x4a89,0x4228,0x39e7,0x39e7,0x3186,0x31a7,0x39e8,0x4249,0x39e7,0x31a6,0x31a6,0x3a28,0x31e7,0x3a08,0x4a49,0x528a,0x31c7,0x3a29,0x39e8,0x3a08,0x4a69,0x4229,0x4208,0x4229,0x4a49,0x4229,0x3a08,0x3a08,0x4249,0x52aa,0x4a48,0x4228,0x39e8,0x39e8,0x31e8,0x31e8,0x4229,0x528a,0x41e8,0x39e8,0x4208,0x4a6a,0x4a6a,0x4248,0x4229,0x4249,0x4249,0x4a4a,0x4249,0x52cb,0x4a4a,0x4a6a,0x4229,0x634d,0x52cb,0x4249,0x52ab,0x52aa,0x4a69,0x3a28,0x4a8a,0x4209,0x3a09,0x4a6a,0x4a6a,0x4a49,0x5aeb,0x5b0c,0x634c,0x5269,0x5acb,0x634d,0x4a8a,0x52ab,0x528a,0x4a4a,0x528a,0x52ab,0x52cb,0x5aeb,0x632d,0x5aeb,0x52ca,0x5aeb,0x5aeb,0x5aeb,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18a3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2925,0x2925,0x2925,0x3165,0x5265,0x5a64,0x62c4,0x6b04,0x39c4,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2945,0x2945,0x2964,0x7324,0x7303,0x7304,0x7b64,0x3984,0x2945,0x2945,0x2945,0x3165,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x0861,0x2104,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b24,0x6ae4,0x7344,0x5244,0x2965,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x1062,0x0861,0x0861,0x18c3,0x2104,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x2944,0x528b,0x4a29,0x4228,0x5289,0x528a,0x4a69,0x4228,0x4a69,0x528a,0x52aa,0x4248,0x4a29,0x4229,0x4a29,0x4229,0x528a,0x4229,0x4249,0x4a69,0x4a69,0x3a07,0x52cb,0x4a49,0x528a,0x4a8a,0x4228,0x4a89,0x4248,0x4228,0x4249,0x4a49,0x4a69,0x4a49,0x3a07,0x4228,0x4a69,0x4a8a,0x3a08,0x4249,0x4a8a,0x4a69,0x52aa,0x4a6a,0x4209,0x528a,0x528a,0x4a49,0x4249,0x4249,0x4a69,0x39e7,0x39e7,0x39e8,0x4208,0x4228,0x3a08,0x31e7,0x3a08,0x3a08,0x4a49,0x4a29,0x31a7,0x3a08,0x31e7,0x4a69,0x3a08,0x3a08,0x39c7,0x3186,0x39e7,0x39e7,0x39e7,0x4a49,0x4208,0x39e7,0x31a7,0x39c7,0x31a7,0x39e8,0x39c7,0x39e8,0x31a7,0x39e7,0x31a6,0x4228,0x2985,0x4208,0x4208,0x39e8,0x3a08,0x31c7,0x39e7,0x31c7,0x2986,0x2986,0x31a7,0x31c7,0x31a7,0x2986,0x39e7,0x31a6,0x31c7,0x3a28,0x39e8,0x31a7,0x3187,0x31a7,0x3a08,0x4228,0x31c7,0x31a7,0x2966,0x2986, +0x2966,0x2965,0x2986,0x2986,0x2986,0x31c7,0x39e7,0x31a6,0x2986,0x31c7,0x3a08,0x31c7,0x31c7,0x31c7,0x31a7,0x31a7,0x3186,0x31a7,0x31a7,0x39c7,0x39e8,0x39c7,0x31a7,0x31c7,0x3a08,0x39e7,0x39e7,0x31c7,0x4228,0x4228,0x39e7,0x39e7,0x39e7,0x31a7,0x4209,0x39c8,0x39e8,0x3186,0x39c7,0x4208,0x3a28,0x39e7,0x4228,0x4228,0x39e8,0x39e8,0x3a08,0x3a08,0x4208,0x4a49,0x4249,0x41e8,0x4249,0x4a6a,0x3a08,0x4a8a,0x4a8a,0x3a08,0x4269,0x4249,0x4a49,0x4208,0x39e8,0x31a7,0x39e8,0x3a08,0x39e8,0x39e8,0x4209,0x4208,0x4a49,0x4a29,0x528a,0x4a6a,0x4a49,0x5acb,0x5aeb,0x3a28,0x4a8a,0x4229,0x4249,0x4a8a,0x4249,0x3a28,0x4a6a,0x5aeb,0x4a8a,0x4269,0x52ca,0x4a8a,0x4249,0x3a28,0x4249,0x4a49,0x4229,0x5acb,0x52aa,0x52aa,0x4208,0x5b0c,0x632c,0x31e8,0x528a,0x5acb,0x4a4a,0x5aec,0x5aeb,0x52aa,0x52cb,0x52ab,0x52aa,0x4a89,0x4249,0x5aec,0x4229,0x18c3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2124,0x2924,0x2925,0x2925,0x3165,0x5245,0x5a64,0x8384,0x7b63,0x39a4,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x0861,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2945,0x2945,0x2925,0x2925,0x3184,0x8be4,0x7b23,0x7304,0x9404,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18e3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7b65,0x8344,0x5224,0x83a5,0x7304,0x3145,0x2965,0x2945,0x2945,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x2104,0x0861,0x0861,0x10a2,0x18c3,0x20e3,0x2924,0x4a49,0x4a69,0x4208,0x4249,0x4249,0x3a08,0x4228,0x4229,0x4208,0x4228,0x4208,0x4228,0x4a49,0x4228,0x4228,0x4a69,0x4229,0x4208,0x39c7,0x4a69,0x4228,0x4a6a,0x4228,0x4a49,0x4a49,0x4a49,0x4a49,0x4249,0x3a08,0x4228,0x4249,0x4a69,0x4a69,0x4a69,0x52aa,0x4269,0x4229,0x39e8,0x3a08,0x528a,0x4228,0x4228,0x4a69,0x4229,0x4208,0x4a6a,0x4229,0x4249,0x4a69,0x4a69,0x3a08,0x39e7,0x39e7,0x3a08,0x3a08,0x3a07,0x31a6,0x31a6,0x31c6,0x4228,0x4a8a,0x39e8,0x4249,0x4249,0x4249,0x4249,0x4208,0x4208,0x31a6,0x31a6,0x39e8,0x39e7,0x39e7,0x4208,0x39c7,0x31a6,0x39c7,0x39c7,0x31a7,0x39c8,0x39e8,0x31a6,0x31c7,0x39e7,0x39e7,0x31c6,0x39e7,0x39c7,0x31a7,0x39e7,0x31a7,0x2966,0x31a6,0x29a6,0x31c7,0x31c7,0x2966,0x31a6,0x31a6,0x39c7,0x31c6,0x31e7,0x31e7,0x39e7,0x39c7,0x31a6,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a7, +0x2965,0x2965,0x2986,0x29a6,0x2986,0x31a6,0x31a6,0x29a6,0x31a6,0x29a6,0x29a6,0x29a6,0x31e7,0x39e7,0x31c7,0x31a6,0x31a6,0x31c7,0x31a7,0x31c7,0x31a7,0x39c7,0x39e7,0x4228,0x39e7,0x31a6,0x29a6,0x31c7,0x31c7,0x39c7,0x39e8,0x2986,0x2986,0x31c7,0x29a7,0x2986,0x2986,0x39e7,0x39c7,0x39e7,0x39e8,0x3a08,0x4249,0x4a6a,0x4229,0x4a69,0x31c7,0x39e7,0x39c8,0x4229,0x31a7,0x31a7,0x4249,0x4249,0x3a08,0x52cb,0x4249,0x3a08,0x31c8,0x4a6a,0x39e8,0x4208,0x3a08,0x31a7,0x31e7,0x3a08,0x31e7,0x39e7,0x4208,0x39e8,0x39e8,0x4229,0x4249,0x4229,0x4229,0x4a8a,0x4249,0x31c7,0x3a08,0x4249,0x4a69,0x4249,0x4249,0x3a08,0x4249,0x52ab,0x4a6a,0x4228,0x4a8a,0x5aeb,0x4a49,0x428a,0x426a,0x4229,0x4a6a,0x4a6a,0x4a8a,0x4249,0x52cb,0x528a,0x4a6a,0x630c,0x4208,0x4a6a,0x4a8a,0x4a69,0x4a6a,0x4a49,0x4a49,0x528a,0x52ab,0x4a69,0x4a49,0x528a,0x4a4a,0x18a3,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2124,0x2924,0x2945,0x2925,0x2945,0x3165,0x5244,0x8384,0x5223,0x3164,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x3184,0x8bc4,0x8363,0x7b44,0x93e4,0x39a3,0x2945,0x2945,0x2945,0x2965,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x1082,0x0020,0x0861,0x2124,0x2945,0x2945,0x2945,0x2945,0x7325,0x8364,0x5244,0x8bc4,0x8364,0x3144,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x2103,0x20e3,0x0861,0x1061,0x10a2,0x18c3,0x18e3,0x2924,0x4249,0x4a49,0x4228,0x4228,0x4249,0x4228,0x4228,0x4229,0x4208,0x4228,0x4208,0x39e8,0x3a08,0x3a08,0x3a08,0x3a08,0x4228,0x4228,0x4208,0x39e8,0x3a28,0x3a28,0x3a08,0x3a07,0x4228,0x4228,0x39e7,0x4248,0x4249,0x3a08,0x4249,0x4208,0x4a69,0x528a,0x528a,0x4a69,0x4228,0x3a28,0x3a28,0x4228,0x4a69,0x4a69,0x4a6a,0x39e8,0x31a7,0x39e8,0x31c6,0x3a07,0x4229,0x3a08,0x39e8,0x4208,0x4208,0x3a08,0x3a08,0x31a6,0x3186,0x39c7,0x4208,0x3a07,0x39e7,0x4208,0x4a49,0x4a69,0x39c7,0x4249,0x4229,0x4229,0x3a08,0x39c8,0x4229,0x39c7,0x31a7,0x4228,0x39c7,0x39c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e8,0x31a6,0x31a6,0x31c7,0x31c6,0x31c7,0x3a08,0x31a7,0x2966,0x31a7,0x39c7,0x31a7,0x4208,0x31a6,0x29a6,0x2986,0x3186,0x31a6,0x3185,0x39a6,0x2966,0x31c7,0x39c7,0x39c7,0x39c6,0x39c6,0x31a6,0x3186,0x2986,0x31c6,0x31a6,0x31c7,0x3186, +0x2986,0x31c7,0x2986,0x2965,0x2986,0x31a7,0x31a6,0x2986,0x3186,0x3186,0x3186,0x39c7,0x39c7,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x2966,0x3186,0x31a7,0x31c7,0x39c7,0x3a08,0x31a6,0x31a6,0x31a7,0x31a7,0x39c8,0x39e8,0x39c7,0x31a7,0x31c7,0x31a7,0x31a7,0x31c6,0x31a6,0x39e7,0x39e7,0x3a28,0x3a08,0x3a08,0x3a08,0x39e8,0x3a08,0x4249,0x39e8,0x3a08,0x4229,0x39e8,0x39e8,0x4208,0x39e8,0x4249,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x4208,0x39c7,0x39e8,0x4249,0x39e7,0x31c7,0x31c8,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x3a08,0x4229,0x4249,0x3a08,0x3a28,0x3a28,0x39e8,0x3a28,0x4269,0x4269,0x4269,0x4249,0x3a08,0x4229,0x4a6a,0x4229,0x5acc,0x4249,0x4229,0x4249,0x39e8,0x4a49,0x4a6a,0x4a6a,0x4229,0x4a6a,0x4208,0x4a29,0x4a49,0x4229,0x4249,0x3a08,0x3a08,0x4229,0x3a08,0x4249,0x4a6a,0x528a,0x4a69,0x4a49,0x4229,0x4249,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x18c3,0x1082,0x1082,0x1082,0x1082,0x0841,0x0841,0x1082,0x2124,0x2924,0x2944,0x2924,0x2945,0x2945,0x3164,0x7344,0x7303,0x3164,0x2944,0x2945,0x2945,0x2945,0x2945,0x0861,0x0841,0x1082,0x0861,0x0881,0x10a2,0x0841,0x0020,0x18c3,0x2925,0x2945,0x2924,0x2124,0x39c4,0x93e5,0x6ac3,0x62a4,0x9c04,0x4a03,0x2925,0x2945,0x2945,0x2965,0x18c3,0x0020,0x0861,0x1082,0x0861,0x1082,0x1082,0x0020,0x1081,0x2124,0x2945,0x2945,0x2945,0x2945,0x5a65,0x7b44,0x6ac3,0x9404,0x7b24,0x2944,0x2965,0x2945,0x2965,0x2945,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x20e3,0x18e3,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x2124,0x39c7,0x39e8,0x3a08,0x3a08,0x39e8,0x39e8,0x4208,0x4229,0x4229,0x39e8,0x4208,0x39e8,0x3a08,0x4229,0x39e8,0x3a08,0x4208,0x39c7,0x4208,0x39e8,0x3a08,0x31c7,0x39e8,0x31c7,0x31a7,0x39e8,0x39c7,0x39e8,0x4a29,0x4a49,0x4229,0x2986,0x31a7,0x4208,0x4208,0x39e8,0x31c7,0x2986,0x29a6,0x31c7,0x39e8,0x39c7,0x31a7,0x52aa,0x4a69,0x4228,0x3a28,0x4229,0x3a08,0x39c7,0x4228,0x4208,0x39e7,0x39e7,0x39e7,0x39c7,0x41e7,0x3186,0x2945,0x2965,0x2125,0x2145,0x2145,0x2966,0x2965,0x2966,0x2125,0x2125,0x2104,0x2125,0x2945,0x2104,0x2124,0x2124,0x2104,0x2124,0x1904,0x2125,0x2125,0x2125,0x18e4,0x4228,0x4228,0x3186,0x31c7,0x31a6,0x2966,0x2966,0x2965,0x3186,0x2966,0x2966,0x2966,0x2965,0x2966,0x2986,0x3186,0x2965,0x2945,0x3186,0x2986,0x3186,0x2966,0x2945,0x2965,0x2965,0x2124,0x2945,0x2145,0x2145,0x2165,0x2986,0x2965, +0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x39c7,0x2965,0x3186,0x31a6,0x2965,0x2965,0x2966,0x2966,0x2966,0x3186,0x2986,0x2966,0x2986,0x31c7,0x2965,0x2965,0x3186,0x31c7,0x31a6,0x3186,0x2986,0x31a6,0x31a6,0x31a7,0x31a7,0x2966,0x39e8,0x39c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e8,0x39e8,0x31a7,0x39c7,0x3a08,0x39e8,0x4209,0x39c8,0x39c8,0x4208,0x39e8,0x39e8,0x39c7,0x31a7,0x29a6,0x31c6,0x31e7,0x39e7,0x4228,0x39c7,0x39c8,0x39c8,0x39c8,0x41e8,0x39e8,0x39e7,0x39c7,0x31c7,0x31c7,0x31c7,0x4229,0x4208,0x39e7,0x4208,0x39c7,0x4209,0x4209,0x4a8a,0x4229,0x4a6a,0x4229,0x4249,0x4249,0x4a6a,0x4a49,0x4209,0x4209,0x39e8,0x41e8,0x4a4a,0x528a,0x4208,0x4208,0x4208,0x4208,0x4208,0x4228,0x4208,0x4228,0x4208,0x4208,0x4208,0x4208,0x4229,0x39e8,0x4208,0x4a49,0x4229,0x4208,0x41e8,0x4208,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18a3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0841,0x0841,0x0861,0x2124,0x2944,0x2924,0x2924,0x2924,0x2124,0x41e4,0x93e4,0x5223,0x2924,0x2944,0x2945,0x2945,0x2945,0x2945,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0841,0x0020,0x18e3,0x2945,0x2945,0x2925,0x2124,0x41e5,0x93e5,0x6283,0x5264,0x93e4,0x4a03,0x2925,0x2925,0x2925,0x2965,0x18c3,0x0020,0x0861,0x1082,0x1082,0x1082,0x1082,0x0841,0x1082,0x2124,0x2945,0x2945,0x2945,0x2945,0x4a45,0x7324,0x62c4,0x93e4,0x6284,0x2945,0x2945,0x2945,0x2945,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18c3,0x18e3,0x2944,0x39e7,0x4228,0x4228,0x29a6,0x39e7,0x31c6,0x39c6,0x31c6,0x39e7,0x39e7,0x4207,0x31c6,0x39e7,0x4228,0x39e7,0x4228,0x4a48,0x4248,0x39e7,0x0842,0x0000,0x1904,0x18e3,0x18c3,0x10c3,0x1083,0x1082,0x18c3,0x10a3,0x18e4,0x2104,0x2104,0x18e4,0x18c4,0x10c3,0x2145,0x2125,0x1904,0x1924,0x1904,0x1904,0x18e3,0x1924,0x634c,0x636c,0x52aa,0x4a8a,0x5289,0x4228,0x4208,0x39e7,0x39e7,0x39c7,0x31a6,0x4208,0x4208,0x41e8,0x2945,0x1082,0x1083,0x1083,0x10a2,0x18e3,0x10a2,0x18c3,0x18e4,0x18c3,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x2124,0x1903,0x1904,0x18c3,0x18c3,0x18c3,0x2104,0x2125,0x2986,0x3a07,0x4a89,0x29a6,0x29a6,0x2965,0x2145,0x2124,0x2124,0x2144,0x2124,0x2124,0x2104,0x2124,0x18e3,0x2104,0x2125,0x18e4,0x18e4,0x1904,0x1904,0x1904,0x1904,0x2104,0x1904,0x1904,0x18e3,0x2125,0x2965,0x3a08,0x4248,0x4aaa,0x4a8a, +0x2945,0x2145,0x2144,0x2945,0x2965,0x2945,0x2966,0x2965,0x2986,0x2986,0x2945,0x3186,0x39c7,0x31a6,0x3186,0x2985,0x3186,0x2985,0x2965,0x3186,0x2985,0x2986,0x2986,0x2986,0x31a6,0x31a6,0x31c6,0x3a07,0x39c6,0x31a6,0x3186,0x31a6,0x3186,0x2104,0x2104,0x18e4,0x18c3,0x10c4,0x10a3,0x10a3,0x18e4,0x18a3,0x18c3,0x20e4,0x18c3,0x18a3,0x1082,0x18c3,0x18c4,0x18c4,0x18c4,0x10a3,0x18e4,0x10a3,0x18e4,0x18c3,0x1083,0x2104,0x5aeb,0x4a8a,0x31c7,0x39e7,0x31a6,0x3186,0x39e8,0x3a08,0x31c7,0x31c7,0x4208,0x4208,0x3a08,0x52aa,0x4a49,0x0000,0x18c3,0x18a3,0x18a2,0x18a3,0x1083,0x18a3,0x1083,0x18c4,0x1083,0x18c4,0x1083,0x2105,0x20e4,0x10a3,0x0842,0x0862,0x0021,0x1063,0x1063,0x1083,0x18c4,0x0862,0x31a7,0x52aa,0x3a08,0x39e7,0x2986,0x31c6,0x31c7,0x31a6,0x39e7,0x39c7,0x2985,0x39c6,0x39e7,0x39c6,0x39e6,0x39e7,0x39e7,0x4228,0x4228,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x0861,0x0841,0x0861,0x2104,0x2924,0x2124,0x2124,0x2124,0x2124,0x5245,0x8384,0x3983,0x2924,0x2924,0x2924,0x2925,0x2945,0x2124,0x0841,0x0841,0x1082,0x0861,0x0861,0x10a2,0x0861,0x0841,0x18c3,0x2925,0x2945,0x2925,0x2924,0x3185,0x6ae5,0x6ac4,0x62a4,0x7304,0x3984,0x2924,0x2924,0x2925,0x2945,0x18c3,0x0841,0x0861,0x1082,0x1082,0x1082,0x10a2,0x0861,0x1082,0x2124,0x2925,0x2925,0x2924,0x2944,0x4a25,0x7325,0x6ae4,0x7b24,0x41c4,0x2945,0x2945,0x2945,0x2945,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x18c3,0x18c3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x2965,0x5b4c,0x5b4c,0x5b4c,0x8450,0x73ce,0x73ce,0x7c30,0x8450,0x73ee,0x5b0b,0x632c,0x8450,0x6bae,0x6bce,0x6bae,0x632b,0x5b0b,0x634c,0x5b0c,0x4229,0x5aec,0x2965,0x4a89,0x52ca,0x52eb,0x4268,0x52eb,0x5b0b,0x52ea,0x5b0b,0x4aaa,0x4a89,0x4228,0x4228,0x29a7,0x4269,0x4249,0x31e7,0x4249,0x4269,0x4aaa,0x638d,0x31e7,0x4a69,0x4229,0x4249,0x4248,0x4228,0x4208,0x4228,0x39e8,0x4249,0x3a08,0x4269,0x5aec,0x52aa,0x4a69,0x3a07,0x2124,0x2925,0x2104,0x2945,0x31a7,0x2965,0x10a3,0x0001,0x1904,0x10c2,0x1904,0x10c3,0x18e3,0x2124,0x2985,0x2165,0x0882,0x2965,0x2145,0x2124,0x2124,0x2945,0x39c7,0x2965,0x5aeb,0x4a6a,0x2166,0x10e4,0x1904,0x1904,0x10c3,0x18e3,0x18e3,0x18c3,0x2104,0x18e3,0x10c3,0x18e3,0x1904,0x18e3,0x10c3,0x10a3,0x10a2,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10a3,0x10a3,0x10c3,0x2165,0x4248,0x4a8a,0x4a4a, +0x2104,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2125,0x2125,0x2124,0x2945,0x2966,0x2945,0x2145,0x2145,0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2125,0x2945,0x2944,0x2945,0x2965,0x2965,0x2965,0x2945,0x2945,0x2125,0x4a69,0x632c,0x0882,0x2124,0x18e3,0x1903,0x18e3,0x10a3,0x18e4,0x18e4,0x10c3,0x18e4,0x2125,0x2124,0x2165,0x2945,0x2124,0x2144,0x2945,0x2925,0x2124,0x2124,0x2104,0x1904,0x18e4,0x2104,0x4208,0x39e8,0x2145,0x2965,0x2965,0x2986,0x31a7,0x31a7,0x31a7,0x31c7,0x31e7,0x31e8,0x39e8,0x4269,0x31e7,0x39e6,0x4228,0x39e7,0x31a6,0x2165,0x2985,0x31c6,0x31e7,0x31c7,0x29c6,0x29c6,0x3207,0x3a07,0x4248,0x3a08,0x4a8a,0x52ab,0x4aab,0x4269,0x428a,0x4a89,0x39e7,0x1904,0x4228,0x5aeb,0x4a8a,0x52ca,0x636d,0x73ef,0x638e,0x7bf0,0x73ce,0x634c,0x7c0f,0x8450,0x8450,0x94d2,0x9d33,0x8491,0x8cd3,0x8cd2,0x9534,0x18e3,0x1082,0x1081,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x2104,0x2924,0x2124,0x2924,0x2924,0x2124,0x41e5,0x5244,0x2944,0x2924,0x2124,0x2924,0x2945,0x2945,0x2103,0x10a2,0x1081,0x1082,0x0861,0x0861,0x10a2,0x10a2,0x18c2,0x18c2,0x2104,0x2125,0x2124,0x2124,0x2924,0x39c4,0x4a24,0x4a04,0x41c4,0x2944,0x2124,0x2124,0x2924,0x2945,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c2,0x18c3,0x2104,0x2945,0x2925,0x2924,0x2925,0x39a5,0x5245,0x5245,0x4a05,0x3165,0x2945,0x2945,0x2965,0x2965,0x2104,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x10a2,0x18e3,0x3186,0x84b3,0x7c51,0x8471,0xa575,0x9d14,0x8472,0x94f4,0x9d55,0xa595,0x9513,0x8cd3,0x94f4,0x7c52,0x8492,0x8c92,0x6b8e,0x632e,0x636e,0x52cb,0x4a69,0x5b0b,0x31c7,0x4a6a,0x4a8b,0x4a6a,0x4aaa,0x52eb,0x4a8a,0x4aaa,0x4a8a,0x4249,0x39e7,0x3a08,0x29a7,0x4269,0x29c7,0x31e7,0x3a08,0x31e8,0x31e7,0x4aab,0x8472,0x3a08,0x634d,0x52aa,0x31c8,0x31a7,0x39c8,0x3a08,0x29a7,0x3208,0x3a08,0x29a6,0x52aa,0x634d,0x528a,0x4a8a,0x4249,0x2124,0x2924,0x2104,0x2145,0x2965,0x10c3,0x4269,0x5b4c,0x3a08,0x5b0c,0x4aaa,0x52eb,0x4aaa,0x5b0b,0x634c,0x52eb,0x6bae,0x2986,0x2144,0x2965,0x2144,0x2124,0x39c7,0x31c6,0x5aec,0x52ab,0x39c8,0x10a3,0x18e3,0x1904,0x10e3,0x10c3,0x10c3,0x10a3,0x2104,0x18e3,0x10e3,0x10c3,0x18e4,0x1904,0x18e3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3,0x10c3,0x18c3,0x10a2,0x2986,0x4229,0x18e4, +0x18e3,0x18e3,0x2124,0x2124,0x1904,0x1904,0x1904,0x18e4,0x1904,0x18e4,0x18e4,0x18e4,0x18c4,0x18e4,0x2104,0x1904,0x10e3,0x18e4,0x10c3,0x18e4,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e4,0x2104,0x0001,0x630c,0x840f,0x0000,0x2965,0x18e3,0x1904,0x18e3,0x2965,0x1903,0x2104,0x31a6,0x1944,0x2985,0x2103,0x2944,0x2986,0x31c6,0x3a07,0x31c6,0x3a07,0x1924,0x2985,0x2124,0x1904,0x2145,0x2104,0x18e4,0x18e5,0x18e4,0x18e4,0x1904,0x2125,0x18e4,0x18c4,0x31a7,0x3a08,0x29c7,0x31c8,0x29a7,0x52ab,0x4a8a,0x52cb,0x4aaa,0x3a29,0x31e7,0x31c7,0x2166,0x29a6,0x39e8,0x31c7,0x3a49,0x3a69,0x3a28,0x4249,0x4269,0x4269,0x4a8a,0x4a8a,0x52ec,0x4acb,0x4aab,0x4aab,0x3a29,0x31a6,0x3a08,0x4a8a,0x5b0d,0x6bcf,0x7410,0x73f0,0x6bd0,0x73f0,0x73d0,0x7c0f,0x7c10,0x8452,0x8431,0x8c93,0xadf8,0x9535,0x8493,0x8cd4,0x9d55,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x18e3,0x1082,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x2124,0x2124,0x2945,0x2945,0x2924,0x2945,0x2944,0x3164,0x3164,0x2924,0x2945,0x2925,0x2925,0x2945,0x2945,0x2924,0x2924,0x18c3,0x1081,0x0861,0x0861,0x10a2,0x2104,0x2964,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2924,0x2124,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x2944,0x18c2,0x1081,0x1082,0x1082,0x18e3,0x2944,0x2964,0x2945,0x3165,0x2945,0x2945,0x2945,0x2944,0x3165,0x39a5,0x3185,0x3165,0x3165,0x2965,0x3165,0x3185,0x2965,0x2924,0x20e3,0x10a2,0x0861,0x0861,0x0841,0x18e3,0x18e3,0x0861,0x1082,0x10a2,0x18a2,0x18e3,0x3186,0x8472,0x8493,0x8473,0x8c92,0x94f4,0x7c31,0x8c93,0x8473,0x9515,0x9d35,0x84b3,0x7411,0x6bb0,0x7bf1,0x94f4,0x73af,0x4a8c,0x52cd,0x426a,0x31c7,0x4228,0x4249,0x4a8a,0x4a6a,0x6b8e,0x7c10,0x6b6d,0x8430,0x6b8d,0x6b8d,0x634c,0x8c70,0x4a89,0x636c,0x6bae,0x636d,0x6b8e,0x73cf,0x1925,0x31a7,0x31a8,0x52ed,0x3a29,0x6b6f,0x424a,0x29a7,0x2966,0x2966,0x31a7,0x31a7,0x31c7,0x29a7,0x08c3,0x5aeb,0x7bef,0x4a8a,0x4229,0x2986,0x2945,0x2124,0x1904,0x18e4,0x39e7,0x2164,0x73ce,0x73ee,0x6bae,0x8470,0x52ca,0x7c0f,0x52eb,0x8430,0x634d,0x4a8a,0x8430,0x0040,0x31a6,0x2985,0x2144,0x2145,0x31c7,0x31c6,0x5acb,0x4a8a,0x3a08,0x0882,0x10c3,0x10e3,0x1904,0x10e3,0x10c3,0x10a3,0x18e3,0x1904,0x18e4,0x18e3,0x1904,0x1904,0x1904,0x1904,0x10c3,0x10a3,0x10c3,0x10a3,0x10c3,0x18e3,0x18e3,0x18e4,0x10a3,0x10c3,0x10e4,0x2966,0x18e4, +0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x18e4,0x1083,0x528a,0x52aa,0x2144,0x2985,0x18e3,0x0800,0x52cb,0x5b4c,0x3248,0x530b,0x634d,0x52cb,0x4a89,0x52ca,0x636c,0x42a9,0x73ef,0x5b0b,0x6b8d,0x636c,0x530b,0x10e3,0x2145,0x1924,0x2124,0x2104,0x2104,0x1904,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x1082,0x2125,0x3a09,0x29c8,0x29c7,0x29c7,0x4a8a,0x4228,0x52ec,0x426a,0x3208,0x31e7,0x2165,0x5b2c,0x6bae,0x4269,0x636d,0x5aeb,0x5b0c,0x5b2c,0x632c,0x6bae,0x73ce,0x6bae,0x8492,0x5b0d,0x424a,0x52ec,0x428b,0x3a09,0x31a7,0x39c8,0x422a,0x5b0d,0x636f,0x73f0,0x73f0,0x6bd0,0x6b8f,0x8431,0x8cb3,0x7c32,0x7411,0x8c94,0x7c53,0x8cb5,0x73f2,0x6bd1,0x8473,0x8cb4,0x18e3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18e3,0x1082,0x1062,0x1061,0x10a2,0x2124,0x3165,0x2965,0x2924,0x2945,0x2924,0x2104,0x2104,0x2124,0x2104,0x2104,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2924,0x2924,0x3165,0x2104,0x1082,0x0861,0x0861,0x18c3,0x2945,0x3185,0x2944,0x2104,0x20e3,0x20e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x2104,0x2924,0x39a5,0x39a6,0x2103,0x1081,0x0862,0x1082,0x18e3,0x3185,0x3185,0x2945,0x2945,0x2124,0x2924,0x2104,0x2104,0x2924,0x3165,0x3186,0x3165,0x3165,0x2925,0x2924,0x3165,0x3165,0x3165,0x2945,0x18c3,0x1061,0x0861,0x0861,0x18e3,0x18e3,0x0861,0x1082,0x1082,0x18a2,0x20e3,0x3186,0x8472,0x7412,0x7412,0x73f1,0x7c31,0xad97,0x7c32,0x8473,0x8cb4,0x8c94,0x6bb0,0x7c31,0x7c11,0x7c11,0x8452,0x634e,0x52cc,0x52cc,0x4a6b,0x31a7,0x39e7,0x4228,0x52eb,0x4a8a,0x6baf,0x7c10,0x73cf,0x8c71,0x7bf0,0x8451,0x5aeb,0x8cb2,0x634e,0x7c31,0x0064,0x4209,0x6b4e,0x738e,0x0001,0x39e8,0x2167,0x634e,0x4a6a,0x528b,0x4229,0x29a7,0x29a7,0x2966,0x3187,0x39e8,0x39e8,0x2966,0x10e3,0x52ca,0x7c10,0x632d,0x4249,0x31c7,0x2965,0x2945,0x18c3,0x2144,0x2985,0x2985,0x73ae,0x94d2,0x6b6d,0x8451,0x52ca,0x5289,0x738e,0x8c71,0x6b4d,0x4249,0x8431,0x0000,0x2966,0x3186,0x2986,0x2125,0x2965,0x39c7,0x5b0c,0x4249,0x39e8,0x3186,0x18e4,0x10e3,0x1904,0x18e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e4,0x1924,0x1904,0x10e3,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e4,0x1904,0x10a3,0x10c3,0x10e3,0x08a3,0x10c3, +0x10a2,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x10e3,0x10c3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18c3,0x10c3,0x10e3,0x1904,0x18e4,0x18e3,0x10c3,0x31a7,0x2985,0x2965,0x2965,0x18e4,0x0000,0x6b8e,0x6baf,0x636d,0x5b0c,0x0000,0x6b6e,0x6b8d,0x73ef,0x740f,0x6b8e,0x7c0f,0x5b0c,0x73ef,0x7c2f,0x636c,0x0081,0x2145,0x2124,0x2104,0x2124,0x2125,0x1904,0x10e3,0x1903,0x18e3,0x18a3,0x18c3,0x18c3,0x10a3,0x2986,0x29c7,0x29c7,0x2987,0x4249,0x39e8,0x4aab,0x424a,0x31e8,0x31c7,0x0882,0x7c30,0x8471,0x638d,0x8491,0x6bad,0x73ee,0x73ae,0x7c0f,0x8c91,0x73ee,0x8c92,0x8472,0x4aab,0x4aab,0x4acc,0x428b,0x39e8,0x31a7,0x39e8,0x422a,0x73d0,0x8c93,0x7411,0x7410,0x73f0,0x73cf,0x6bd0,0x7411,0x73f1,0x6bd0,0x8cb3,0x7411,0x6bb0,0x7c31,0x94d3,0x7c51,0x7c33,0x18c3,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18c2,0x18c3,0x1082,0x1062,0x0861,0x18c3,0x2104,0x2924,0x2104,0x18e3,0x18e3,0x18c3,0x18a2,0x10a2,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18e3,0x2104,0x20e4,0x1082,0x0861,0x0861,0x18c3,0x2124,0x2104,0x18e3,0x18c3,0x18a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x18e3,0x2924,0x3165,0x3185,0x2924,0x1082,0x0861,0x1082,0x20e3,0x2944,0x2924,0x20e3,0x18c3,0x18a2,0x18a3,0x18a2,0x18a3,0x18c3,0x2104,0x2104,0x2104,0x20e3,0x18c3,0x18c3,0x20e3,0x2104,0x2924,0x2124,0x18e3,0x1062,0x0861,0x0861,0x18e3,0x18c3,0x0861,0x1082,0x10a2,0x18a2,0x20e3,0x39a6,0x9d35,0x4aee,0x6391,0x530e,0x8cd3,0xb5d7,0x6bd0,0x7c31,0x7411,0x73f1,0x73b0,0x73d0,0x73d0,0x6baf,0x6b8f,0x632e,0x4aab,0x4aab,0x422a,0x31a7,0x4208,0x4228,0x52eb,0x4aab,0x5b0d,0x73f0,0x8430,0x8430,0x6b8e,0x8450,0x5b0c,0x8451,0x634d,0x73af,0x632d,0x634e,0x5b0c,0x6b6e,0x0062,0x31e8,0x2186,0x5b2c,0x3a08,0x52aa,0x4a8a,0x29a6,0x31c8,0x2967,0x31a7,0x31c7,0x29a6,0x2965,0x2145,0x1944,0x632d,0x8451,0x31e8,0x31e8,0x2945,0x2104,0x10c2,0x2124,0x2145,0x10a2,0x52cb,0x632d,0x52ab,0x6b4e,0x5aec,0x5aeb,0x632c,0x5b0c,0x632d,0x31a7,0x5acb,0x10a3,0x2104,0x2945,0x2966,0x2965,0x2986,0x2965,0x52aa,0x4a6a,0x39e8,0x2946,0x18e4,0x18e3,0x1903,0x1904,0x10c3,0x18e3,0x18e3,0x10c2,0x1904,0x1924,0x2124,0x1904,0x10a3,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x1904,0x2124,0x10c3,0x10c3,0x10c3,0x1904,0x2125, +0x10c2,0x18c3,0x18c3,0x10a2,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1904,0x18e4,0x10c3,0x10c3,0x10a2,0x10c3,0x18e3,0x10c3,0x10c3,0x10c3,0x18c3,0x18e3,0x18e4,0x18e3,0x10c3,0x10c3,0x1903,0x1903,0x18e3,0x10c3,0x3186,0x31a6,0x2924,0x2125,0x18e4,0x0042,0x6b6e,0x5aeb,0x39c7,0x632d,0x5aeb,0x6b8e,0x634d,0x7c10,0x7bcf,0x73ae,0x6bcf,0x5b2d,0x73cf,0x7bef,0x4248,0x1904,0x2124,0x2104,0x2104,0x2125,0x2145,0x29a7,0x10e3,0x1924,0x1903,0x18c2,0x39c6,0x2945,0x10a3,0x2986,0x29a6,0x2186,0x2987,0x426a,0x39e7,0x39e8,0x3a09,0x31a8,0x39c8,0x1023,0x8c51,0x73cf,0x634d,0x7c30,0x8430,0x8430,0x73ae,0x7c30,0x73ae,0x8430,0x8c92,0x73f0,0x428a,0x426a,0x3a49,0x3a08,0x31c7,0x31a6,0x4229,0x4a4a,0x6b8f,0x8493,0x6bf1,0x7411,0x6baf,0x6bb0,0x5b2f,0x52ee,0x5b2e,0x636f,0x6b6f,0x634f,0x5b2e,0x73af,0xa576,0x73f1,0x7c11,0x18c3,0x1081,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x18c3,0x18a3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x1082,0x0861,0x0861,0x10a2,0x18c3,0x10a2,0x1082,0x1082,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x18c3,0x18e3,0x18e3,0x18c3,0x0861,0x0861,0x1082,0x18c3,0x18c3,0x10a2,0x1082,0x1062,0x0861,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a3,0x10a2,0x1061,0x1061,0x1061,0x18e3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x3186,0x8c93,0x6390,0x6bf2,0x6bd0,0x8451,0x8452,0x8493,0x7411,0x6bd0,0x636e,0x73d0,0x73d0,0x6baf,0x8452,0x8472,0x7410,0x4aec,0x4aac,0x422a,0x31a7,0x4208,0x3a08,0x426a,0x426a,0x4a8b,0x6b6e,0x52ab,0x5b0d,0x4a8b,0x52cb,0x4a8b,0x5acc,0x52ab,0x3a08,0x5b0c,0x426a,0x3a08,0x39e8,0x2146,0x31c7,0x29c7,0x4249,0x31a7,0x528b,0x424a,0x31e7,0x3a08,0x2166,0x2987,0x2986,0x2966,0x2986,0x31a7,0x2986,0x4249,0x6b6f,0x31e9,0x31c8,0x2125,0x2145,0x10e3,0x1904,0x1904,0x2125,0x1905,0x08a4,0x18c4,0x1084,0x18e4,0x2105,0x18e4,0x1063,0x18c5,0x20e5,0x0842,0x2125,0x2104,0x2104,0x2125,0x3186,0x31c7,0x0882,0x4208,0x4a49,0x31a7,0x1904,0x18e3,0x10c2,0x10e3,0x2145,0x18e3,0x2145,0x1904,0x10a2,0x18e3,0x2124,0x2124,0x18e4,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e4,0x18e3,0x18e3,0x18c3,0x10c3,0x18e3,0x2145,0x2966, +0x18c3,0x10c2,0x10c2,0x10c3,0x10c3,0x18c3,0x10c3,0x10a3,0x18e3,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10c3,0x10c3,0x18e4,0x2145,0x2124,0x1904,0x18e3,0x10c3,0x18e3,0x18e3,0x10c3,0x18c3,0x2965,0x2965,0x1904,0x2124,0x18c3,0x18e4,0x31c7,0x18e4,0x18c4,0x4a29,0x630c,0x31c7,0x31c8,0x41e8,0x41e9,0x3187,0x424a,0x4a6a,0x31c8,0x2987,0x31c7,0x1904,0x2124,0x1903,0x1903,0x18e4,0x2146,0x2145,0x1904,0x2124,0x1924,0x3186,0x39c6,0x2104,0x2965,0x31c7,0x29a7,0x2986,0x31a7,0x4a6a,0x31a6,0x29a7,0x31e8,0x29c7,0x31c8,0x2966,0x5aed,0x31a8,0x52cc,0x3a09,0x52ac,0x5aed,0x73af,0x5b0c,0x632d,0x73af,0x632d,0x6baf,0x4a8a,0x428a,0x4249,0x3a08,0x31c7,0x2966,0x39e8,0x4a6b,0x4a8b,0x52ed,0x52ed,0x5b0e,0x6b8f,0x52ed,0x4acd,0x428c,0x634e,0x73d0,0x4aac,0x5b2d,0x5b6e,0x6baf,0x6bb0,0x636f,0x73d0,0x18e3,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18a3,0x0861,0x0882,0x0861,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1062,0x0861,0x0861,0x1061,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1082,0x1081,0x0861,0x0861,0x1061,0x0861,0x1061,0x0861,0x0861,0x1062,0x1062,0x1061,0x0861,0x1061,0x1082,0x18c3,0x18c3,0x0861,0x1082,0x18c3,0x18c2,0x20e3,0x2945,0x634f,0x636f,0x5b0e,0x5b2e,0x5b2e,0x6b6f,0x8473,0x73d0,0x5b0e,0x52ed,0x636f,0x6b8f,0x7c11,0x8452,0x8c73,0x7c11,0x5b2e,0x428b,0x424a,0x2966,0x4228,0x4229,0x424a,0x424b,0x422b,0x3a0a,0x4a6b,0x3a0a,0x424a,0x422a,0x3a09,0x31e9,0x3a09,0x52ec,0x4a8a,0x4209,0x5aec,0x52cb,0x2986,0x31c8,0x29a7,0x4a6a,0x31c8,0x4229,0x31c8,0x2986,0x2986,0x2966,0x2145,0x2145,0x2145,0x2966,0x2966,0x2966,0x2125,0x2947,0x39e8,0x2987,0x2124,0x1904,0x18e3,0x1904,0x2145,0x2104,0x1904,0x1904,0x18e4,0x18c3,0x10e3,0x2125,0x1905,0x18e4,0x18a3,0x10a3,0x18c3,0x10a3,0x18c3,0x2104,0x2125,0x18e3,0x10c2,0x31a6,0x52aa,0x39c7,0x2945,0x2125,0x2125,0x1904,0x1904,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2145,0x2145,0x2124,0x2124,0x2124,0x2144,0x2965,0x2124,0x3186,0x2986,0x2965,0x3186,0x2965,0x31a6,0x2965,0x2945,0x2965, +0x18c3,0x10c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18c3,0x18e3,0x18e3,0x2104,0x2104,0x18e3,0x18e3,0x1904,0x10c3,0x10a3,0x10c3,0x10c3,0x10a3,0x18e4,0x18e4,0x2104,0x2145,0x2124,0x2124,0x1904,0x18e3,0x18e4,0x1904,0x18e3,0x18e3,0x31c7,0x2965,0x18e3,0x2124,0x18e3,0x18e4,0x18c3,0x2104,0x2104,0x18c3,0x0000,0x2125,0x2945,0x20e4,0x2105,0x2946,0x2125,0x18e3,0x1904,0x2125,0x2124,0x2144,0x2124,0x2104,0x18e3,0x2125,0x2966,0x2125,0x1904,0x2104,0x2945,0x2965,0x3165,0x2965,0x31a6,0x31c7,0x2986,0x2986,0x31a7,0x4a6a,0x31a6,0x31c7,0x3a08,0x3208,0x3a28,0x31e8,0x2167,0x31a8,0x31a8,0x31a8,0x2987,0x2967,0x31c8,0x3a2a,0x422a,0x39e9,0x4a6b,0x4a6b,0x4249,0x4aaa,0x4a8a,0x4249,0x3a08,0x2124,0x4a6a,0x6baf,0x4aec,0x428b,0x4a6b,0x52cd,0x6bd0,0x5b2d,0x52ec,0x634e,0x638e,0x6baf,0x5b4d,0x73f0,0x6baf,0x5b4d,0x5b4e,0x5b0e,0x5b2e,0x18c3,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a2,0x18a2,0x20e3,0x2924,0x4209,0x4209,0x3a09,0x31c8,0x39c9,0x39c9,0x420a,0x420a,0x528c,0x4a4a,0x4209,0x422a,0x422a,0x4a6b,0x632e,0x738e,0x630c,0x52aa,0x4228,0x2945,0x2125,0x2125,0x2946,0x2967,0x2147,0x2146,0x2966,0x2966,0x2966,0x2986,0x2125,0x2125,0x2125,0x2966,0x2966,0x2125,0x2945,0x2986,0x1904,0x1904,0x2145,0x10e4,0x18e4,0x632d,0x52ab,0x4208,0x4208,0x39e7,0x3a07,0x3a08,0x31a6,0x39c7,0x39e7,0x4228,0x4228,0x39e8,0x4a69,0x39e7,0x18e3,0x18c2,0x2124,0x2965,0x2986,0x2145,0x18e3,0x10c3,0x18c3,0x2104,0x1904,0x18e3,0x2104,0x18e3,0x2144,0x2144,0x2945,0x2124,0x2144,0x2945,0x2966,0x2104,0x1903,0x31c6,0x4249,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x2985,0x31c6,0x2985,0x2985,0x31c6,0x2986,0x31a6,0x2986,0x31a6,0x31a6,0x2986,0x2986,0x2985,0x2986,0x31a6,0x2986,0x39e7,0x31a6,0x31a6,0x31a6,0x31a6,0x31c6,0x39e7,0x3186,0x3186, +0x1904,0x1904,0x1904,0x1904,0x1903,0x18e3,0x1904,0x1904,0x18e3,0x10e3,0x18c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18c3,0x18e3,0x18e3,0x10c3,0x18e3,0x18c3,0x18e3,0x18e4,0x10c3,0x18e3,0x18e3,0x18e3,0x1904,0x1904,0x1904,0x1924,0x29a6,0x2965,0x10e3,0x10a2,0x10a2,0x18e3,0x10c2,0x10a2,0x10a3,0x18c3,0x18e4,0x18e3,0x18e4,0x18e4,0x18c3,0x18e4,0x2104,0x18e3,0x18c2,0x10a2,0x10c3,0x1081,0x18c2,0x18c3,0x10a2,0x2124,0x2165,0x2965,0x2165,0x2945,0x2945,0x2124,0x2145,0x31a6,0x39e7,0x31a6,0x31a7,0x31c7,0x31a7,0x31c7,0x2145,0x2965,0x3186,0x2986,0x2966,0x2146,0x2966,0x2125,0x2125,0x2125,0x2145,0x1905,0x2125,0x2987,0x2987,0x2987,0x31a7,0x3187,0x2946,0x3187,0x3187,0x2125,0x2125,0x2104,0x4a29,0x5acc,0x4a8a,0x5aec,0x4229,0x4229,0x3a09,0x3a09,0x3a2a,0x424a,0x3a09,0x424a,0x4a6b,0x424b,0x31e9,0x29c9,0x39ea,0x39e9,0x4209,0x10a2,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x18c3,0x18c3,0x0861,0x0862,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x0861,0x1082,0x18a2,0x18c2,0x20e3,0x2924,0x528a,0x4a8a,0x4a49,0x4a6a,0x424a,0x424a,0x424a,0x426a,0x4a6a,0x4249,0x4229,0x4249,0x4a49,0x4228,0x5aeb,0x5aec,0x52ab,0x4a8b,0x4a8a,0x3186,0x39c6,0x31c6,0x31c6,0x2124,0x39e7,0x31a6,0x4208,0x39e7,0x39c7,0x39c7,0x31e7,0x3207,0x31e7,0x31c6,0x31c7,0x29a6,0x29a6,0x3a08,0x3a07,0x31c6,0x29a6,0x2986,0x31a7,0x39e7,0x4208,0x39e7,0x39c7,0x3a07,0x4228,0x3a07,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x39e7,0x39c6,0x31e6,0x3a28,0x3a07,0x39e7,0x31e6,0x3a07,0x4269,0x31e7,0x29a6,0x31c6,0x31e7,0x31e7,0x31c6,0x31c6,0x39e7,0x31e6,0x3a07,0x39e7,0x2986,0x39e7,0x39c7,0x31a7,0x3186,0x2965,0x2965,0x2145,0x2986,0x31a6,0x2985,0x31a6,0x31a6,0x39c7,0x31c6,0x31a6,0x29a6,0x31a6,0x2986,0x2965,0x31a6,0x2986,0x31c7,0x2986,0x2985,0x31a6,0x2986,0x31a6,0x2986,0x2985,0x2986,0x2986,0x3186,0x2986,0x2145,0x31c7,0x3186,0x2985, +0x2985,0x2986,0x2965,0x2965,0x2145,0x2965,0x2986,0x2165,0x2165,0x2124,0x2144,0x2945,0x2945,0x2965,0x2124,0x2965,0x2965,0x2124,0x2965,0x2144,0x2124,0x2144,0x2986,0x2144,0x2965,0x2965,0x2145,0x2124,0x2145,0x2965,0x2945,0x31a6,0x31a6,0x2985,0x2124,0x2145,0x2165,0x2144,0x2144,0x2945,0x2145,0x2144,0x2144,0x2124,0x18c3,0x2125,0x2165,0x2986,0x2165,0x2945,0x2965,0x2165,0x2144,0x31a5,0x2123,0x2124,0x29a6,0x29a6,0x29a6,0x31e7,0x31e7,0x31a6,0x2986,0x31a6,0x31c7,0x39e7,0x31e7,0x31c7,0x3a08,0x31c7,0x31e7,0x31e7,0x31a7,0x2145,0x2965,0x2985,0x2144,0x2965,0x2124,0x2144,0x31c6,0x2985,0x2965,0x31c6,0x31a6,0x31a6,0x31a6,0x31c6,0x29a6,0x4228,0x3a07,0x2986,0x3186,0x31a6,0x31a6,0x39c7,0x4208,0x4a6a,0x4a8a,0x528b,0x4a8a,0x4269,0x4249,0x4229,0x4249,0x4a69,0x426a,0x424a,0x4a4a,0x4a6a,0x4a8a,0x426a,0x426a,0x52aa,0x4a69,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x18a2,0x18c2,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x0861,0x1082,0x18a3,0x18c2,0x20e3,0x2104,0x4249,0x4228,0x4a28,0x4228,0x3a08,0x4229,0x39e8,0x4a49,0x4a69,0x3a08,0x4228,0x4249,0x4a49,0x4229,0x3a09,0x3a09,0x39e8,0x4229,0x4229,0x52cb,0x4249,0x4248,0x4249,0x39e7,0x4a8a,0x4a6a,0x4a6a,0x4a49,0x4a49,0x3a07,0x3a28,0x3a49,0x3a08,0x4228,0x3a28,0x31e7,0x31e7,0x39e7,0x39e7,0x39e7,0x31c7,0x39e7,0x31c7,0x39c7,0x39c7,0x39c7,0x39c7,0x39c7,0x4208,0x4208,0x3a08,0x39c7,0x31c7,0x31c7,0x39e8,0x4228,0x4228,0x31c7,0x4269,0x4208,0x528a,0x4249,0x4248,0x3a28,0x4228,0x3a08,0x31c7,0x3a08,0x3a08,0x31e7,0x31c7,0x31a6,0x39e7,0x39e7,0x39e7,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2985,0x2965,0x2986,0x2985,0x31a6,0x31a7,0x3186,0x3186,0x31c7,0x31a6,0x31c7,0x31c6,0x31c6,0x31a6,0x39e7,0x31c7,0x31a6,0x31a6,0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x3a07,0x29a6,0x31a6,0x31a6,0x3186,0x31a6,0x31a7,0x31a7,0x2986,0x2986, +0x2985,0x2986,0x2985,0x2986,0x2986,0x2986,0x31a6,0x2986,0x2965,0x2965,0x2986,0x2985,0x29a6,0x2965,0x2986,0x31a6,0x2965,0x31a6,0x31a6,0x2965,0x31a6,0x31c6,0x39c7,0x31a6,0x31c7,0x31a6,0x31a6,0x2986,0x29a6,0x31a6,0x3186,0x39e7,0x31a6,0x3186,0x31a6,0x39c7,0x3a07,0x3a27,0x4248,0x39e7,0x39c7,0x31c7,0x31c7,0x39e7,0x4228,0x39e7,0x4289,0x3207,0x3a27,0x4269,0x4228,0x4a69,0x4207,0x4248,0x4228,0x4a49,0x4248,0x4a89,0x3a28,0x31e7,0x31c6,0x31c7,0x31e7,0x31c7,0x31c7,0x31c7,0x39e7,0x4229,0x4228,0x31a6,0x31e7,0x3a08,0x31c7,0x29c7,0x31c7,0x31a6,0x31c6,0x4a68,0x4227,0x31e6,0x4248,0x3a28,0x3a28,0x4248,0x3a08,0x4248,0x4a69,0x4249,0x4249,0x52aa,0x4a8a,0x3a28,0x4249,0x52cb,0x528a,0x4249,0x4228,0x4249,0x52cb,0x4a69,0x4a69,0x4a8a,0x4229,0x4209,0x4a69,0x52ca,0x52aa,0x4269,0x4a8a,0x52cb,0x5aeb,0x5aeb,0x4a8a,0x52ca,0x52aa,0x18c2,0x1082,0x1081,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x18a3,0x1082,0x10a2,0x18a3,0x18c2,0x20e3,0x2104,0x4a6a,0x4a6a,0x4249,0x4229,0x4a49,0x4229,0x4229,0x528a,0x528a,0x4249,0x4249,0x4a6a,0x528a,0x4a69,0x4248,0x4269,0x4248,0x4248,0x4a8a,0x4a69,0x4a69,0x4a8a,0x4248,0x4248,0x4228,0x4228,0x4208,0x4229,0x3a08,0x4228,0x3a08,0x3a29,0x3a09,0x39e8,0x3a08,0x3a27,0x39e7,0x3a08,0x39e7,0x39e7,0x3a07,0x3a08,0x39e7,0x4208,0x39e7,0x31c7,0x4228,0x39e7,0x31c7,0x4228,0x39e8,0x4229,0x39e7,0x3a08,0x39e8,0x39e8,0x4208,0x3a08,0x3a08,0x39e8,0x4229,0x3a08,0x3a08,0x4228,0x31c7,0x3a28,0x31c7,0x39e7,0x39e8,0x4228,0x31e7,0x31a6,0x39e7,0x39e7,0x3a08,0x39e8,0x31c7,0x39e8,0x31a7,0x31a6,0x3a07,0x31a6,0x31a6,0x31a6,0x39e7,0x39e7,0x31a7,0x39e8,0x31a7,0x31a7,0x3186,0x31c7,0x39c7,0x31a6,0x39e7,0x39c7,0x3186,0x2966,0x31c7,0x4228,0x31a6,0x39e7,0x2986,0x31c7,0x31a6,0x31a6,0x31a6,0x29a6,0x31c7,0x31a7,0x29a6,0x31a6,0x31c7, +0x2986,0x2986,0x2986,0x2986,0x3186,0x31a6,0x31c7,0x31a7,0x31a6,0x29a6,0x29a6,0x2965,0x2965,0x2965,0x2986,0x39e7,0x31c7,0x31a6,0x2966,0x2966,0x31a6,0x31a6,0x31c7,0x39e7,0x31e7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x31a7,0x39e8,0x31a6,0x2986,0x31a6,0x31c7,0x31c7,0x39e7,0x39e7,0x31a6,0x3a07,0x3a08,0x31c6,0x3a08,0x52aa,0x31a6,0x4269,0x4269,0x4269,0x4228,0x3a08,0x3a08,0x3a08,0x3a08,0x4a69,0x52ab,0x4228,0x4a8a,0x4248,0x31e7,0x31c7,0x3a07,0x3a08,0x31c7,0x39e7,0x3a08,0x39e8,0x4a49,0x4229,0x4228,0x4228,0x3a08,0x3a08,0x31c7,0x31a7,0x31a7,0x39c7,0x4a69,0x52aa,0x3a08,0x4a49,0x4208,0x3a08,0x3a08,0x3a08,0x4228,0x4a89,0x4249,0x4228,0x4228,0x4a69,0x4a6a,0x4208,0x4a8a,0x4a49,0x5acb,0x5acb,0x632d,0x5aec,0x52aa,0x52cb,0x4249,0x52aa,0x632d,0x4a8a,0x52cb,0x4a6a,0x424a,0x4a49,0x4a8a,0x528a,0x4a6a,0x4a49,0x528a,0x5aec,0x18c2,0x1082,0x1081,0x1061,0x1062,0x1082,0x1082,0x10a2,0x18c2,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1081,0x0861,0x0861,0x1081,0x1081,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1062,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1081,0x1082,0x1081,0x1081,0x1081,0x1081,0x1081,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x18c3,0x18c3,0x18c2,0x18c2,0x18c2,0x18e3,0x18e3,0x18e3,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x18a2,0x10a2,0x18c2,0x18e3,0x2104,0x52aa,0x5aeb,0x4229,0x4a8a,0x4a8a,0x4a69,0x4249,0x4228,0x4229,0x4a49,0x4a6a,0x4a49,0x4228,0x4228,0x4a69,0x4269,0x4a69,0x52cb,0x52ab,0x528a,0x4a6a,0x4a69,0x39e7,0x4a49,0x4a49,0x39e7,0x4a49,0x39e7,0x39e7,0x4208,0x39e7,0x3a08,0x4229,0x31c7,0x4228,0x3a08,0x39e7,0x31c7,0x39e8,0x39e8,0x39e7,0x3a07,0x3a07,0x4208,0x3a08,0x3a07,0x39e8,0x4228,0x3a08,0x39c7,0x4228,0x39e8,0x39e7,0x3a08,0x31e7,0x31c7,0x4228,0x4249,0x3a08,0x4228,0x3a08,0x31c8,0x3a08,0x39e7,0x39c7,0x3a08,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x31a7,0x31a7,0x31c7,0x39e7,0x39e8,0x31a7,0x31c7,0x39e7,0x31c7,0x31a6,0x39c7,0x39c7,0x39e8,0x31a7,0x31c7,0x39e8,0x31c7,0x39c7,0x31a7,0x3187,0x31c7,0x39c7,0x31a6,0x31a6,0x39a7,0x39c7,0x528a,0x2986,0x29a6,0x2986,0x29a6,0x31a6,0x39e7,0x3186,0x31a6,0x31c7,0x31c7,0x31c7,0x2986,0x31c7,0x31c7,0x2986, +0x2985,0x2986,0x2965,0x2966,0x2966,0x2986,0x2986,0x2986,0x31c7,0x2985,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x4249,0x31c7,0x2145,0x2986,0x31c7,0x31c7,0x3a08,0x31e8,0x2986,0x31a7,0x31a6,0x39e7,0x31c7,0x3a08,0x39e7,0x2986,0x31a7,0x31a7,0x2986,0x39e8,0x39e7,0x3186,0x39e8,0x39c7,0x39c7,0x39c7,0x3a08,0x3a08,0x4248,0x39e7,0x39e7,0x4249,0x4a8a,0x39e8,0x31e8,0x39e8,0x39e8,0x4249,0x4208,0x4a69,0x4228,0x39e7,0x3a08,0x4249,0x3a08,0x3a08,0x3a28,0x3a28,0x31e7,0x3a08,0x3a28,0x4229,0x3a08,0x39e8,0x4a69,0x4a49,0x4a69,0x4aaa,0x31c7,0x39e8,0x39e7,0x39e8,0x4229,0x3a29,0x424a,0x4a8b,0x3a29,0x3a29,0x39e8,0x4249,0x4a6a,0x4a69,0x4248,0x4249,0x4208,0x4a49,0x52ab,0x4a49,0x4a6a,0x5aeb,0x5acb,0x52ab,0x630c,0x4a69,0x528a,0x5aeb,0x4a69,0x5b0c,0x73cf,0x52cb,0x52eb,0x4a69,0x4a49,0x52aa,0x528a,0x4a8a,0x5acb,0x5aec,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1061,0x1062,0x1062,0x1082,0x10a2,0x18a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x18c2,0x18c3,0x2103,0x2103,0x2103,0x2123,0x2103,0x20e3,0x20e3,0x18e3,0x18c2,0x18c2,0x18c3,0x18e3,0x20e3,0x18e3,0x2103,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e3,0x2103,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c2,0x18c3,0x18c2,0x18c3,0x18c3,0x18e3,0x18c3,0x20e3,0x18e3,0x18e3,0x2103,0x18c2,0x0861,0x0861,0x0861,0x18c3,0x2965,0x2924,0x2103,0x2103,0x2123,0x2924,0x2924,0x2124,0x2104,0x2924,0x2944,0x2944,0x2944,0x2944,0x2964,0x2965,0x2944,0x3164,0x2104,0x10a2,0x0861,0x0861,0x1082,0x10a2,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x2104,0x4a89,0x4a8a,0x4a49,0x4a49,0x52cb,0x52eb,0x4a8a,0x4228,0x4a49,0x4208,0x4208,0x4a49,0x4228,0x4228,0x4a69,0x4248,0x4228,0x5acb,0x4a8a,0x3a08,0x4229,0x4228,0x4208,0x4a69,0x4208,0x4249,0x4a49,0x3a07,0x4249,0x4a49,0x4208,0x39e7,0x39c7,0x4228,0x39e7,0x31c7,0x39e7,0x39c7,0x31a6,0x4208,0x4229,0x31c7,0x4a69,0x39e7,0x31c7,0x3207,0x31c7,0x39e7,0x4229,0x39e8,0x4208,0x39e8,0x39c7,0x31c8,0x31c8,0x31c7,0x39c7,0x4228,0x31e7,0x4228,0x3a08,0x31a7,0x39e7,0x4248,0x39c7,0x39c8,0x39c7,0x31e7,0x31c7,0x2986,0x39e7,0x39e8,0x31c7,0x39e8,0x39e7,0x31c7,0x31a7,0x31a6,0x31e7,0x31c7,0x31a6,0x31a7,0x31c7,0x39e7,0x39e7,0x29a6,0x39e7,0x39c7,0x39c7,0x39c7,0x3186,0x31c7,0x31a7,0x39e7,0x39c7,0x39c7,0x31a7,0x39c7,0x31c7,0x2986,0x31c7,0x31a6,0x31c7,0x31a6,0x3186,0x39e7,0x31a7,0x31c7,0x31a6,0x31a6,0x31a7,0x31a6,0x2985, +0x39c7,0x39e7,0x3186,0x2966,0x2966,0x2966,0x29a7,0x29a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31e7,0x29a6,0x31a6,0x2986,0x3186,0x3186,0x31a7,0x31c7,0x31a7,0x31a6,0x31c6,0x29a6,0x31a6,0x39c7,0x31a7,0x39e8,0x31c7,0x3186,0x31a6,0x31a7,0x39c7,0x31a7,0x31e7,0x31c7,0x31a6,0x2986,0x31c7,0x4a49,0x31a7,0x31c7,0x4228,0x4269,0x31c7,0x31c7,0x3a09,0x3a09,0x31c8,0x31c7,0x31c7,0x31c7,0x3a08,0x4208,0x4249,0x4228,0x3a07,0x3a08,0x3a08,0x39e7,0x3a08,0x39e7,0x3a08,0x4228,0x39e7,0x39e7,0x3a08,0x3a08,0x4249,0x4269,0x4208,0x4208,0x4228,0x3a28,0x39e7,0x39e7,0x4229,0x3a09,0x31e8,0x4249,0x426a,0x3a29,0x4249,0x3a08,0x4a69,0x4a69,0x4a69,0x4248,0x4a69,0x52aa,0x4229,0x4229,0x4a8a,0x4249,0x630c,0x528a,0x4229,0x4a49,0x4a49,0x4a49,0x52aa,0x4a49,0x5acb,0x528a,0x52aa,0x52ca,0x4249,0x4249,0x4a69,0x4a69,0x4a69,0x528a,0x630d,0x5aec,0x5b0c,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x10a2,0x0861,0x0861,0x0861,0x1082,0x18c3,0x20e3,0x10a2,0x2103,0x2944,0x2944,0x2944,0x2964,0x2944,0x2924,0x2944,0x2124,0x2103,0x2124,0x2124,0x2944,0x2944,0x20e3,0x2924,0x18c3,0x1082,0x0861,0x0861,0x1082,0x20e4,0x2103,0x18c3,0x2104,0x2124,0x2104,0x2924,0x2124,0x2103,0x2103,0x2103,0x2124,0x2124,0x2124,0x2104,0x2944,0x2103,0x18c3,0x2104,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x3165,0x2124,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x2944,0x2944,0x2965,0x3165,0x3185,0x3185,0x39a6,0x3185,0x2103,0x2944,0x2104,0x10a2,0x0861,0x0861,0x1082,0x1082,0x18a3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x52cb,0x4a4a,0x5aec,0x52aa,0x52aa,0x52aa,0x52aa,0x4a6a,0x4249,0x4a49,0x3a08,0x4269,0x5aeb,0x4228,0x4248,0x528a,0x4a8a,0x4249,0x4249,0x4a8a,0x4269,0x4228,0x4249,0x4a8a,0x4228,0x3a28,0x4249,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x4248,0x4249,0x3a08,0x3a08,0x3a08,0x39c7,0x3a07,0x39e7,0x39e8,0x39c7,0x39e8,0x39e8,0x31a7,0x3a08,0x39e8,0x4208,0x4208,0x39c7,0x39e7,0x31c7,0x31c7,0x31c8,0x31c7,0x39e7,0x39e8,0x39c7,0x31c7,0x3a08,0x4249,0x39e7,0x3a08,0x4228,0x39c7,0x3a08,0x39e7,0x39c7,0x31c7,0x31c7,0x31a6,0x4228,0x3a08,0x31c7,0x39e7,0x39e8,0x39e8,0x3a08,0x39e7,0x39c7,0x39c7,0x31e7,0x39c7,0x39c7,0x31c7,0x31e7,0x31c7,0x39e7,0x31a6,0x39e7,0x39c7,0x31c7,0x3186,0x4228,0x4208,0x2986,0x31a7,0x2986,0x31c7,0x3186,0x31a6,0x31a6,0x2986,0x31c7,0x2965,0x31a6,0x31a6,0x31a6,0x31a7,0x31c7,0x2966,0x2966,0x2965, +0x31a7,0x31a7,0x3186,0x2986,0x3166,0x2965,0x31c7,0x31e7,0x31c7,0x3186,0x31a6,0x31c7,0x31c7,0x2965,0x2965,0x31c6,0x39e7,0x31a6,0x2986,0x31a6,0x2966,0x31a6,0x39e7,0x31a6,0x3186,0x3186,0x2966,0x31c7,0x29a7,0x31a6,0x39e7,0x31a6,0x31a6,0x2986,0x31e7,0x31c7,0x3a07,0x31e7,0x39e7,0x4208,0x31c7,0x31e7,0x31c7,0x31a7,0x31a7,0x3187,0x39e8,0x39e8,0x31c7,0x39c7,0x4228,0x39e7,0x3a08,0x3a08,0x4249,0x4229,0x3a08,0x3a08,0x4229,0x3a08,0x31c7,0x39e7,0x4a69,0x4228,0x39e7,0x3a08,0x31c7,0x3a28,0x3a08,0x39e8,0x39e8,0x4208,0x39c7,0x3a08,0x4249,0x3a28,0x3a28,0x39e8,0x3a08,0x4249,0x39e7,0x4228,0x4249,0x4229,0x4228,0x3a08,0x4228,0x4229,0x4229,0x528a,0x528a,0x4249,0x4a8a,0x4a69,0x3a08,0x528a,0x4208,0x528a,0x526a,0x4a49,0x528a,0x4229,0x4a8a,0x4a49,0x4229,0x4a8a,0x4229,0x4a4a,0x4229,0x4a69,0x52aa,0x4a6a,0x528b,0x4aab,0x4a8a,0x10a2,0x1081,0x1081,0x1081,0x1061,0x0861,0x1082,0x10a2,0x18c2,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x0861,0x2103,0x2924,0x2924,0x2924,0x2924,0x2124,0x2924,0x2924,0x2124,0x2103,0x2124,0x2924,0x2924,0x2944,0x2103,0x18a2,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x2103,0x2104,0x2103,0x2124,0x2124,0x2124,0x2124,0x2944,0x2924,0x1082,0x18c3,0x18c3,0x1061,0x0861,0x0861,0x18a3,0x18e3,0x18c3,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2924,0x2944,0x2965,0x3165,0x3186,0x3186,0x18c2,0x18a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x1082,0x18a2,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x2924,0x4a8a,0x52ab,0x4249,0x4a6a,0x4a8a,0x4249,0x4a8a,0x4a8a,0x4228,0x4248,0x4269,0x4aaa,0x4aaa,0x4a69,0x52aa,0x4a69,0x4a69,0x5acb,0x528a,0x4a8a,0x4a69,0x4a69,0x4249,0x4a6a,0x4a69,0x4249,0x3a08,0x39e8,0x3a08,0x4208,0x4208,0x3a08,0x3a08,0x4249,0x39e8,0x4229,0x4228,0x39e7,0x4248,0x39e7,0x39e7,0x3a08,0x39c8,0x31c7,0x4208,0x39c7,0x4208,0x39c7,0x39e8,0x4229,0x3a08,0x3a08,0x31e7,0x3a08,0x39e7,0x39e7,0x4a69,0x39c7,0x31a6,0x39c7,0x39e7,0x39c7,0x4208,0x4229,0x39e8,0x4228,0x4249,0x39c7,0x3186,0x39c7,0x39e7,0x39e7,0x3a28,0x2986,0x31a7,0x31c7,0x3a08,0x3a07,0x3a08,0x4249,0x39e7,0x31c7,0x4208,0x31a7,0x31a6,0x3a08,0x31a7,0x31a6,0x31a6,0x31c6,0x4248,0x31a6,0x31a6,0x31c7,0x31c7,0x31a6,0x39e7,0x3186,0x31a6,0x2985,0x2985,0x31c6,0x2985,0x31c7,0x31a6,0x2965,0x2986,0x29a6,0x2986,0x3a08,0x31a7,0x2986,0x2965, +0x2986,0x31a6,0x2986,0x2986,0x2965,0x31a6,0x31c7,0x31a6,0x2986,0x2966,0x2986,0x2986,0x2986,0x2966,0x2986,0x39c7,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x39c7,0x39a6,0x31a6,0x31a6,0x31c7,0x31c7,0x2986,0x31c7,0x39c7,0x31a6,0x31a6,0x31e7,0x31e7,0x31c7,0x31c7,0x39e8,0x39e8,0x31c7,0x31e7,0x39e7,0x39e8,0x4208,0x31c7,0x39c7,0x3a08,0x31a6,0x31c7,0x4228,0x3a08,0x3a28,0x3a07,0x3a07,0x39e7,0x3a08,0x3a08,0x39e7,0x4208,0x3a28,0x39e7,0x3a08,0x4229,0x39e8,0x41e8,0x4209,0x4209,0x4249,0x3a08,0x39c7,0x4229,0x3a08,0x39c7,0x3a08,0x3a08,0x31e8,0x39e8,0x39c8,0x4209,0x39e8,0x3a08,0x4a6a,0x4a49,0x4208,0x4a49,0x4a49,0x4249,0x4a49,0x4229,0x4a6a,0x52ab,0x4a49,0x4249,0x4a69,0x4a6a,0x4a8a,0x4228,0x52aa,0x528a,0x4229,0x4a49,0x4249,0x4a69,0x4208,0x4a69,0x3a48,0x4229,0x4229,0x4229,0x4a29,0x4a69,0x4a6a,0x4a6a,0x4a69,0x3a08,0x10a2,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x18c2,0x1082,0x1082,0x1082,0x1082,0x1062,0x0841,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2104,0x2924,0x2124,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0821,0x18a2,0x2103,0x2104,0x2104,0x2104,0x2104,0x2123,0x2963,0x2943,0x2103,0x2104,0x2104,0x2104,0x2124,0x2924,0x0861,0x1082,0x10a2,0x0861,0x0861,0x1061,0x1082,0x0861,0x1082,0x2104,0x2124,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2944,0x2944,0x2945,0x2945,0x2945,0x3165,0x18a2,0x0841,0x1062,0x1062,0x0861,0x1082,0x1082,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2124,0x4a6a,0x4a8a,0x52ab,0x52cb,0x4249,0x4a8a,0x634d,0x4228,0x4a69,0x4269,0x4aaa,0x4aaa,0x4a6a,0x528a,0x5b0c,0x4a69,0x4a8a,0x52cb,0x4a49,0x4a69,0x4229,0x4229,0x4249,0x4229,0x4a49,0x4229,0x4208,0x4228,0x4228,0x4229,0x4228,0x3a08,0x3a08,0x39e8,0x4229,0x4228,0x4228,0x4228,0x4229,0x3a08,0x3a08,0x39e8,0x39e8,0x3a08,0x4249,0x3a08,0x39c7,0x3a28,0x4249,0x3a08,0x3a08,0x3a28,0x4249,0x3a08,0x4249,0x39e8,0x4228,0x4a6a,0x4208,0x39c7,0x4208,0x4208,0x39c7,0x4228,0x3a08,0x2986,0x4208,0x3a08,0x31a6,0x4208,0x3a08,0x31c7,0x3a07,0x39e7,0x31a7,0x2986,0x31c7,0x39e7,0x39e7,0x4249,0x31c6,0x31c6,0x4228,0x39e7,0x4208,0x39e7,0x31e7,0x3a07,0x31c7,0x31a6,0x3a28,0x31a7,0x31a6,0x31c7,0x31c7,0x31a6,0x31c7,0x31a6,0x2965,0x39c7,0x3186,0x3186,0x31a6,0x39c7,0x31c7,0x2986,0x31a6,0x31c7,0x31c7,0x31a6,0x2986,0x2945,0x3186, +0x2986,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x2986,0x2986,0x31a6,0x2986,0x2985,0x31a6,0x2965,0x31a7,0x31c7,0x2966,0x2965,0x2986,0x2986,0x2986,0x29a6,0x31a6,0x3186,0x3186,0x31a6,0x31c7,0x31c6,0x31c6,0x2986,0x31a6,0x31c7,0x3186,0x31c7,0x31e7,0x31c7,0x31e7,0x3a28,0x31a7,0x31c7,0x31c7,0x31a6,0x31c7,0x39e7,0x39e7,0x31c7,0x3a08,0x4228,0x3a07,0x3a08,0x4228,0x4228,0x3a07,0x4269,0x4228,0x39c7,0x41e8,0x4208,0x4228,0x4249,0x3a08,0x31c7,0x31c7,0x39e8,0x3a08,0x4208,0x4229,0x31c7,0x3a08,0x3a08,0x39e8,0x4229,0x39e8,0x39c7,0x4228,0x39e8,0x39e8,0x3a08,0x31a7,0x4249,0x3a08,0x4228,0x4228,0x4229,0x39e8,0x4208,0x4249,0x4249,0x4249,0x4249,0x3a09,0x426a,0x3a28,0x3a08,0x4249,0x4aaa,0x4269,0x4228,0x4249,0x424a,0x4a8a,0x4249,0x4249,0x52aa,0x4a69,0x52ab,0x4229,0x4249,0x4a69,0x4a49,0x4a69,0x528a,0x4a49,0x4228,0x4a49,0x4228,0x10a2,0x1081,0x1061,0x1081,0x1081,0x0861,0x0861,0x10a2,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0020,0x0841,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2944,0x2124,0x2104,0x2104,0x2104,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x2124,0x4203,0x5a63,0x5263,0x39a3,0x2124,0x2124,0x2104,0x2124,0x2924,0x0861,0x0841,0x0861,0x0861,0x0861,0x1061,0x1062,0x0041,0x1082,0x2104,0x2124,0x2124,0x2104,0x2124,0x2924,0x41e5,0x2964,0x4205,0x3184,0x2945,0x2945,0x2945,0x2945,0x18a2,0x0841,0x0841,0x0861,0x0861,0x1062,0x1062,0x1082,0x18c2,0x1082,0x10a2,0x18c3,0x18e3,0x2103,0x2924,0x52aa,0x52ab,0x5acb,0x52cb,0x52cb,0x4a8a,0x4a6a,0x4229,0x4a8a,0x4a8a,0x52cb,0x52aa,0x52cb,0x3a08,0x4229,0x4229,0x4229,0x4249,0x4229,0x4a8a,0x52aa,0x4229,0x3a08,0x4a6a,0x4228,0x4208,0x4229,0x4228,0x4208,0x39e7,0x4208,0x39c7,0x39c7,0x39e8,0x4a49,0x4229,0x4228,0x4a69,0x4a6a,0x4249,0x4229,0x424a,0x4249,0x4a6a,0x4229,0x39e7,0x3a07,0x3a28,0x3a08,0x39e8,0x4249,0x3a28,0x3207,0x31e7,0x3a08,0x31c7,0x4229,0x4a49,0x4228,0x39e8,0x4249,0x4228,0x3a08,0x4249,0x3a08,0x31a7,0x39e7,0x39c7,0x4228,0x39e7,0x39e7,0x3a07,0x31c7,0x31c7,0x31e7,0x29a7,0x31c7,0x31c7,0x39c7,0x39e7,0x4228,0x39e7,0x39e7,0x39e7,0x39e7,0x31c7,0x31c6,0x3a07,0x3a28,0x39e7,0x39e7,0x31a6,0x39e7,0x39c7,0x31a7,0x31a6,0x31a6,0x31a7,0x2966,0x31a6,0x3a08,0x31a7,0x31a7,0x31c7,0x29a6,0x2986,0x31a7,0x39c7,0x31a7,0x2166,0x3186,0x2946,0x2965, +0x2966,0x2986,0x31c7,0x31c7,0x2986,0x2965,0x31a6,0x2965,0x2965,0x39c7,0x31c6,0x2986,0x2986,0x31a7,0x31a7,0x2986,0x3186,0x3186,0x2986,0x2966,0x2986,0x2965,0x2985,0x31a6,0x31c7,0x31c7,0x31e7,0x31a6,0x31a6,0x2986,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x3a07,0x3a07,0x31a6,0x31a7,0x31c7,0x39c7,0x31c7,0x31c7,0x39e7,0x31a7,0x31c7,0x39c7,0x39e7,0x39e7,0x4a49,0x3a08,0x39e7,0x4249,0x3a08,0x3a08,0x3a08,0x4208,0x4a8a,0x3a08,0x39e8,0x3a08,0x3a08,0x39e7,0x3a08,0x4229,0x4228,0x39e7,0x4208,0x39e7,0x4228,0x4229,0x39c7,0x4208,0x3a08,0x4208,0x4208,0x3a08,0x39e7,0x3a08,0x3a28,0x3a48,0x4228,0x3a08,0x31c7,0x39e8,0x4229,0x39e7,0x4228,0x52ca,0x4249,0x3a28,0x3a08,0x4269,0x4a8a,0x4269,0x4269,0x4a8a,0x4a69,0x4a6a,0x4a8a,0x4249,0x4a8a,0x52ca,0x52aa,0x4a49,0x4229,0x4a69,0x5b0b,0x4228,0x4249,0x4228,0x4a49,0x52aa,0x4229,0x4229,0x10a2,0x1061,0x1061,0x1061,0x1081,0x0861,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2124,0x2944,0x2944,0x5244,0x3163,0x2944,0x2124,0x2124,0x2104,0x2925,0x2124,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18c3,0x2104,0x2104,0x2104,0x2104,0x31a4,0x7343,0x6ac3,0x7303,0x62c3,0x2923,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x6ae5,0x41e3,0x6ae5,0x41e4,0x2944,0x2945,0x2945,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18c3,0x20e3,0x20e3,0x2924,0x5acb,0x528a,0x4a49,0x4a8a,0x52aa,0x52aa,0x4a69,0x4229,0x4a69,0x52ab,0x5acb,0x4a49,0x4249,0x4228,0x4a8a,0x4229,0x4249,0x4a69,0x4249,0x3a08,0x5acb,0x4a49,0x4229,0x4a8a,0x4a49,0x4249,0x39c7,0x4208,0x4229,0x39c7,0x4269,0x4248,0x39e7,0x39e7,0x39c8,0x39e8,0x4229,0x4a69,0x52aa,0x4228,0x3a08,0x3a08,0x4228,0x4208,0x4208,0x4228,0x4249,0x4229,0x4208,0x4208,0x528a,0x4228,0x31c7,0x3a08,0x4208,0x4228,0x4228,0x4a49,0x4208,0x3a08,0x3a28,0x3a08,0x3a08,0x39e8,0x31c7,0x3a08,0x31a6,0x39e7,0x39e7,0x39c7,0x4a49,0x4208,0x31a6,0x31a6,0x31c7,0x4249,0x31e7,0x31c7,0x3187,0x2986,0x3a08,0x39e8,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e8,0x3a08,0x3a08,0x39e8,0x31a6,0x2965,0x39e8,0x39e7,0x39c7,0x3186,0x3186,0x4229,0x3186,0x39c7,0x31a7,0x31a7,0x2966,0x31c7,0x39e8,0x31a6,0x2966,0x39e7,0x3186,0x2966,0x2145,0x2965, +0x31a7,0x3186,0x2986,0x2965,0x31a6,0x31a6,0x2965,0x3186,0x4208,0x39a6,0x2966,0x2966,0x2986,0x2986,0x2986,0x2985,0x31c6,0x31a6,0x2966,0x2966,0x2986,0x2986,0x31a6,0x31a6,0x29a6,0x3a08,0x31e7,0x31a6,0x31a7,0x3187,0x31c7,0x39e7,0x31a6,0x31c6,0x39e8,0x31e7,0x31c7,0x39e7,0x31c7,0x31c7,0x39c7,0x31c7,0x4aaa,0x3a28,0x2965,0x31c7,0x2986,0x31c6,0x3a28,0x4228,0x39c7,0x4249,0x3a08,0x39e8,0x3a08,0x31c7,0x39e7,0x4228,0x3a08,0x3a08,0x39e8,0x4a6a,0x4229,0x39e7,0x4249,0x3a28,0x3a08,0x3a08,0x39e7,0x39e7,0x39e7,0x39e8,0x4208,0x4208,0x4208,0x39c7,0x39e8,0x31e7,0x3a08,0x4269,0x3a28,0x4249,0x4228,0x4228,0x4228,0x4249,0x3a08,0x52aa,0x4a89,0x4249,0x3a08,0x4a69,0x4a8a,0x4209,0x4208,0x4249,0x4249,0x4a49,0x4249,0x4249,0x4249,0x52eb,0x5aeb,0x4a49,0x4a49,0x4a49,0x528a,0x4a89,0x3a08,0x4249,0x4229,0x528a,0x4a8a,0x4228,0x4229,0x10a2,0x1061,0x1061,0x1081,0x1081,0x1081,0x0861,0x1082,0x18c3,0x1082,0x0861,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x2944,0x4a24,0x4a03,0x7b44,0x5223,0x5244,0x2944,0x2124,0x2124,0x2924,0x2104,0x0840,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x5244,0x8ba3,0x41c3,0x5a84,0x8ba3,0x3143,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0861,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2104,0x2124,0x2124,0x4a24,0x8384,0x6283,0x8384,0x5224,0x2924,0x2944,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x1082,0x18a2,0x1082,0x10a2,0x18a2,0x20e3,0x20e3,0x2924,0x4a8a,0x4a8a,0x4229,0x4a6a,0x4a8a,0x52aa,0x4a8a,0x4a8a,0x4208,0x4a49,0x52ab,0x4a6a,0x4229,0x4249,0x4a69,0x528a,0x4a69,0x4228,0x4a8a,0x4229,0x528a,0x4a6a,0x4208,0x4228,0x4249,0x4229,0x39e8,0x3a08,0x3a08,0x39e8,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x39a8,0x39e8,0x4228,0x4a69,0x4249,0x31c7,0x39e7,0x39e7,0x39e7,0x3a07,0x4228,0x39c7,0x4228,0x3a08,0x3a08,0x3a08,0x31c7,0x39e8,0x4208,0x4208,0x4a49,0x39e8,0x4228,0x39e7,0x3a08,0x31e7,0x31a7,0x31c7,0x39c7,0x39e7,0x3a07,0x31a6,0x39e7,0x31a6,0x39e8,0x2986,0x31c7,0x31a7,0x39e8,0x39e7,0x31a6,0x31a7,0x31a7,0x3186,0x31a6,0x2986,0x2966,0x31a7,0x31a7,0x31a7,0x31a7,0x39c8,0x39c8,0x39e8,0x31c8,0x31a7,0x31a6,0x2965,0x3186,0x31a6,0x31a6,0x2966,0x2965,0x31a6,0x2966,0x2966,0x31a6,0x2986,0x2945,0x3186,0x2986,0x2945,0x2965,0x2965,0x3186,0x2965,0x2965,0x2945, +0x2965,0x29a6,0x29a6,0x31c7,0x31c6,0x2965,0x2945,0x31a6,0x39c7,0x3186,0x2966,0x2986,0x2986,0x29a6,0x2986,0x3186,0x31a6,0x2985,0x2965,0x2965,0x2986,0x2986,0x2986,0x2986,0x2986,0x31e7,0x2986,0x2986,0x2966,0x2987,0x39e8,0x3a08,0x2986,0x29a6,0x29a6,0x2986,0x39e7,0x31c6,0x31e7,0x31c7,0x39c7,0x39c7,0x3a08,0x31c7,0x3a08,0x31e7,0x31e8,0x3a08,0x4228,0x31c7,0x39e8,0x3a08,0x31c7,0x39e8,0x39e8,0x31c7,0x31c6,0x39e8,0x4228,0x39e7,0x3a08,0x3a08,0x31c7,0x4209,0x4229,0x39e8,0x3a08,0x39e7,0x3a08,0x3a08,0x39e8,0x39c7,0x4208,0x39c7,0x3a08,0x4228,0x39e8,0x3a08,0x4249,0x4249,0x4269,0x3a28,0x4a69,0x3a28,0x4228,0x4228,0x4249,0x4a8a,0x4aaa,0x4249,0x31e7,0x4249,0x4249,0x3a08,0x39e8,0x4209,0x4a49,0x52aa,0x4249,0x4249,0x4249,0x426a,0x4228,0x4a6a,0x4a49,0x4249,0x4228,0x3a08,0x4249,0x4269,0x4249,0x4228,0x4249,0x4228,0x4a69,0x10a2,0x1061,0x0861,0x0861,0x1081,0x1082,0x1081,0x10a2,0x18c3,0x1082,0x1062,0x1082,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2124,0x3164,0x62a4,0x7303,0x8bc3,0x7b43,0x6ae3,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2104,0x2104,0x2104,0x2104,0x62a4,0x8383,0x2923,0x49e4,0x93c4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2124,0x2144,0x5a84,0x8bc4,0x6ac3,0x8ba4,0x5204,0x2924,0x2124,0x2924,0x2945,0x10a2,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x1082,0x18a2,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4a8a,0x4269,0x3a08,0x4229,0x426a,0x4229,0x4229,0x4249,0x4a69,0x4229,0x4a49,0x4a8a,0x4208,0x39c7,0x4228,0x4a69,0x31c7,0x39e8,0x4249,0x3a08,0x39e8,0x4228,0x4249,0x4229,0x31c7,0x39e8,0x4208,0x31a7,0x31c7,0x39e8,0x39e8,0x39e8,0x3a08,0x4208,0x4208,0x31a7,0x31c7,0x39e8,0x31c7,0x31c7,0x31c7,0x39e7,0x31c7,0x31e7,0x39e7,0x39e8,0x31a6,0x39c7,0x39c7,0x31c7,0x39e7,0x31c7,0x2986,0x31c7,0x31c6,0x3186,0x31a6,0x31a6,0x31a6,0x3186,0x31c7,0x3186,0x31a7,0x3186,0x31a7,0x3186,0x31a6,0x31a7,0x3186,0x2986,0x2986,0x2946,0x2966,0x31a7,0x2966,0x2945,0x2966,0x31a7,0x31c7,0x2986,0x2125,0x2965,0x2966,0x2966,0x2966,0x2945,0x2966,0x2966,0x2946,0x2966,0x2966,0x2966,0x2125,0x2145,0x2145,0x2145,0x2965,0x2125,0x2966,0x2965,0x2145,0x2966,0x2124,0x2145,0x2965,0x2125,0x2145,0x2945,0x2125,0x2124,0x2124,0x2124,0x2124, +0x2165,0x2985,0x29a6,0x31c6,0x2985,0x2145,0x2145,0x2966,0x2986,0x2986,0x29a6,0x29a6,0x2986,0x2986,0x2966,0x31a6,0x2966,0x2966,0x2965,0x2965,0x2985,0x2965,0x2965,0x2986,0x2986,0x29a6,0x2986,0x2965,0x2966,0x2986,0x31a7,0x2986,0x29a6,0x29a6,0x2986,0x31a6,0x2986,0x2986,0x29a6,0x31a7,0x31a7,0x3187,0x2986,0x3186,0x31a7,0x3186,0x3187,0x3187,0x31a7,0x3186,0x31c6,0x3186,0x3186,0x2966,0x3186,0x31a6,0x39c7,0x3a08,0x31c7,0x2986,0x31a6,0x31c7,0x2986,0x39a7,0x39a7,0x31c7,0x29c7,0x31a7,0x39c8,0x39e8,0x31c7,0x3186,0x31a7,0x39c7,0x39e7,0x31c7,0x39e7,0x4228,0x3a08,0x39e7,0x3a08,0x39e7,0x39e8,0x39e8,0x4208,0x3a08,0x39e8,0x4229,0x3a08,0x39e8,0x31e8,0x31c7,0x31c7,0x3a08,0x3a08,0x4208,0x4a49,0x3a08,0x4229,0x4a8a,0x31e8,0x39e8,0x39e8,0x4229,0x4228,0x3a08,0x4229,0x4228,0x4228,0x4249,0x4249,0x3a08,0x3a08,0x3a08,0x3a28,0x10a2,0x1061,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x18c3,0x1082,0x1082,0x1082,0x1062,0x0841,0x0020,0x0841,0x2104,0x2124,0x2124,0x2924,0x3164,0x6ac4,0x8363,0x8bc3,0x8383,0x6ae3,0x3164,0x2124,0x2124,0x2925,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0020,0x18e3,0x2124,0x2104,0x2104,0x2104,0x5a84,0x8363,0x2923,0x4a04,0x8bc4,0x3163,0x2104,0x2124,0x2124,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0020,0x10a2,0x2104,0x2104,0x2124,0x2104,0x2944,0x62c4,0x8384,0x6ae3,0x8b84,0x41c4,0x2924,0x2124,0x2924,0x2924,0x1082,0x0020,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x1082,0x18a2,0x18c3,0x20e3,0x20e3,0x2124,0x4229,0x39e8,0x31e7,0x31c7,0x3a28,0x39e7,0x31c7,0x39e8,0x3a08,0x39e8,0x3a08,0x3a08,0x31a7,0x31a7,0x31a7,0x39c7,0x31c7,0x3187,0x3187,0x3187,0x3186,0x31a6,0x31c8,0x31c8,0x31a7,0x31a7,0x31a7,0x3186,0x2986,0x2986,0x2986,0x2986,0x2986,0x31c7,0x31a7,0x2986,0x2966,0x2966,0x2986,0x31a7,0x2986,0x2966,0x31a6,0x31a6,0x2966,0x2986,0x2965,0x2945,0x2966,0x2986,0x31a6,0x2986,0x2145,0x2965,0x2986,0x2965,0x2965,0x2144,0x3186,0x39c7,0x31a7,0x2945,0x2945,0x2945,0x3186,0x2965,0x2945,0x3186,0x31a6,0x2965,0x2145,0x2125,0x2945,0x2125,0x2945,0x2125,0x2125,0x2125,0x2145,0x2125,0x2145,0x2145,0x2104,0x2124,0x2945,0x2125,0x2125,0x2105,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2104,0x2104,0x2124,0x2124,0x2104,0x1904,0x1904,0x2124,0x1904,0x1904,0x1904,0x1904,0x18e3,0x10c3,0x18e3,0x18e3, +0x2945,0x2124,0x2945,0x2124,0x2145,0x2145,0x2125,0x2945,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2945,0x2145,0x2945,0x2965,0x2124,0x2144,0x2965,0x2145,0x2965,0x2966,0x2145,0x2145,0x2965,0x2965,0x2965,0x2946,0x2966,0x2986,0x2965,0x2145,0x2145,0x2986,0x2986,0x2986,0x2965,0x2986,0x2986,0x2966,0x2986,0x3186,0x2945,0x2945,0x2946,0x2946,0x2966,0x2965,0x2965,0x2945,0x2946,0x2945,0x2966,0x3186,0x31a6,0x2965,0x2986,0x2965,0x2966,0x2986,0x2966,0x2946,0x2946,0x2966,0x29a6,0x29a6,0x2986,0x2986,0x31a6,0x31a6,0x2965,0x31a6,0x2965,0x2965,0x31a7,0x31a6,0x31a6,0x31a6,0x31c7,0x31c7,0x3186,0x3186,0x3186,0x31a7,0x2966,0x31c7,0x2986,0x2966,0x3187,0x39e8,0x3186,0x39c8,0x39c8,0x31c7,0x31a7,0x3186,0x39c7,0x4228,0x31c7,0x39c7,0x31c7,0x31c7,0x39c7,0x31a7,0x31a7,0x31a7,0x39c7,0x39a7,0x31a6,0x31c7,0x31a7,0x31c7,0x2966,0x10a2,0x1081,0x1081,0x0861,0x0861,0x0861,0x1082,0x10a2,0x18c3,0x1082,0x0861,0x1062,0x1082,0x0841,0x0020,0x0841,0x2104,0x2124,0x2924,0x2124,0x3164,0x62a5,0x72e4,0x8ba4,0x6ac3,0x62a4,0x3164,0x2124,0x2124,0x2924,0x2104,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0841,0x0020,0x18e3,0x2124,0x2124,0x2104,0x2104,0x4a24,0x8364,0x41c3,0x5aa4,0x7b43,0x3143,0x2124,0x2104,0x2104,0x2124,0x0861,0x0020,0x0841,0x0861,0x0861,0x0861,0x0861,0x0041,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2924,0x62a5,0x7304,0x62a4,0x7304,0x3184,0x2124,0x2924,0x2924,0x2924,0x1082,0x0841,0x0841,0x0861,0x0861,0x0841,0x0861,0x10a2,0x18c3,0x10a2,0x10a2,0x18c3,0x18e3,0x20e3,0x2104,0x31a7,0x31c7,0x2986,0x2965,0x31a6,0x31a7,0x31a7,0x31a6,0x2986,0x31a7,0x2986,0x2986,0x31a7,0x2986,0x2986,0x3186,0x31a7,0x2945,0x2945,0x2966,0x2945,0x2945,0x2145,0x2146,0x2146,0x2145,0x2945,0x2965,0x2145,0x2145,0x2145,0x2966,0x2145,0x2145,0x2124,0x2165,0x2145,0x2125,0x2125,0x2104,0x2125,0x2945,0x2145,0x2965,0x2125,0x2124,0x2104,0x2104,0x2125,0x2124,0x2124,0x2124,0x1924,0x2124,0x2144,0x2124,0x2145,0x2945,0x2124,0x2125,0x2945,0x2145,0x2125,0x18e4,0x2104,0x2124,0x2104,0x2124,0x2104,0x1904,0x1904,0x2104,0x2124,0x2104,0x2124,0x2124,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2125,0x2104,0x18e4,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x2945,0x2144,0x2104,0x1904,0x1904,0x1904,0x18e3,0x18e3,0x18e3,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x1904,0x10c3,0x10c3,0x18c3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c3, +0x2124,0x1904,0x2104,0x1904,0x18e3,0x2104,0x2124,0x2104,0x2124,0x2125,0x18e4,0x2125,0x2986,0x18e3,0x2124,0x2104,0x2124,0x2124,0x2104,0x2104,0x2104,0x2125,0x2125,0x2145,0x2145,0x2145,0x2945,0x2104,0x2104,0x2104,0x2125,0x2145,0x2124,0x2124,0x2125,0x2124,0x2945,0x2945,0x2945,0x2144,0x2124,0x2945,0x2965,0x2124,0x2124,0x2124,0x2104,0x2945,0x2945,0x2124,0x2124,0x2125,0x1904,0x2125,0x2124,0x2124,0x2104,0x2124,0x2145,0x2124,0x2104,0x2105,0x2125,0x2125,0x2124,0x2124,0x2945,0x2945,0x2125,0x2104,0x2124,0x2145,0x2145,0x2145,0x2124,0x2124,0x2145,0x2124,0x2145,0x2145,0x2145,0x2986,0x2945,0x2124,0x2966,0x2125,0x1904,0x2966,0x2965,0x2965,0x2124,0x2125,0x2986,0x2987,0x2987,0x2145,0x2145,0x2966,0x2945,0x2946,0x2946,0x2946,0x2145,0x2986,0x2946,0x2966,0x2945,0x2966,0x2965,0x2945,0x2966,0x2945,0x2125,0x2125,0x2125,0x1082,0x1081,0x1081,0x1081,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x0861,0x1082,0x1082,0x0861,0x0841,0x0861,0x2104,0x2124,0x2924,0x2124,0x2944,0x4a05,0x49e4,0x7305,0x49e3,0x41c4,0x2944,0x2124,0x2124,0x2124,0x20e3,0x0841,0x0841,0x0861,0x0861,0x0861,0x1082,0x0861,0x0841,0x18c3,0x2124,0x2104,0x2104,0x2104,0x3984,0x6ae4,0x5a83,0x6ae4,0x5a43,0x2924,0x2124,0x2124,0x2104,0x2104,0x0861,0x0841,0x0861,0x0861,0x0861,0x1062,0x1082,0x0841,0x10a2,0x2104,0x2104,0x2104,0x2104,0x2124,0x4a25,0x5224,0x41e4,0x4a04,0x2944,0x2124,0x2124,0x2124,0x2924,0x1082,0x0841,0x0841,0x0861,0x0841,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x2103,0x2925,0x2125,0x31a6,0x2966,0x2945,0x2145,0x2105,0x2125,0x2966,0x2945,0x2125,0x2125,0x2125,0x2124,0x2945,0x2124,0x2965,0x1904,0x1904,0x1904,0x2104,0x2104,0x2124,0x2124,0x1904,0x2124,0x1904,0x2124,0x1904,0x1904,0x1924,0x2125,0x1924,0x1904,0x2124,0x2125,0x2104,0x1904,0x1904,0x18e4,0x2104,0x18e4,0x1904,0x2104,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x1903,0x10c3,0x10c3,0x1903,0x1904,0x18e4,0x18e3,0x1904,0x18e3,0x18e4,0x18e3,0x10c3,0x18e4,0x1904,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e4,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x10c3,0x18c3,0x10c3,0x10c3,0x18e4,0x2124,0x1904,0x18c3,0x18c3,0x1904,0x10e3,0x18e3,0x18e3,0x18e4,0x18e3,0x10a3,0x10c3,0x10a3,0x10a2,0x10c3,0x18e3,0x10a2,0x10a2,0x10c3,0x10c3,0x10c2,0x10a2,0x10c3,0x10c3, +0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x1903,0x18e3,0x18e3,0x18c3,0x18c3,0x1904,0x18e4,0x18c3,0x18e3,0x1904,0x18c3,0x18c3,0x1904,0x18c3,0x18c3,0x18e4,0x18e3,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e4,0x1904,0x18e4,0x18e3,0x18e4,0x1904,0x1904,0x18e4,0x1904,0x18e3,0x18e4,0x18e4,0x18e3,0x1904,0x2104,0x1904,0x18e4,0x18e4,0x2104,0x18e4,0x18e3,0x18e3,0x1904,0x18e3,0x18e4,0x18e4,0x18e4,0x18c3,0x18e3,0x2104,0x2124,0x18e3,0x18e3,0x18e3,0x2124,0x1904,0x18e3,0x2104,0x18e4,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x1904,0x2104,0x1904,0x2104,0x2104,0x18e4,0x18e4,0x2104,0x2104,0x2104,0x2104,0x18e4,0x2124,0x18e4,0x1904,0x2104,0x2145,0x2965,0x1904,0x2124,0x2125,0x1904,0x1904,0x18e3,0x1904,0x2145,0x1904,0x2104,0x2104,0x2104,0x1904,0x2125,0x2125,0x1904,0x2124,0x2965,0x2124,0x2945,0x2104,0x18e4,0x18e4,0x18e4,0x18e4,0x1081,0x1081,0x0861,0x1081,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x1082,0x1082,0x10a2,0x20e3,0x2124,0x2124,0x2124,0x2124,0x2944,0x3144,0x49e5,0x3144,0x2924,0x2124,0x2124,0x2124,0x2124,0x18c3,0x1081,0x1082,0x0861,0x0861,0x0861,0x1082,0x10a2,0x1082,0x18c2,0x2103,0x2104,0x2104,0x2104,0x2924,0x41c4,0x4a04,0x4a04,0x3164,0x2104,0x2104,0x2104,0x2104,0x20e3,0x1082,0x1082,0x1082,0x0861,0x0861,0x1082,0x10a2,0x10a2,0x10a2,0x20e3,0x2104,0x2104,0x2104,0x2104,0x3164,0x3164,0x2944,0x3164,0x2124,0x2124,0x2124,0x2924,0x2924,0x18c2,0x10a2,0x0861,0x0861,0x0841,0x0841,0x0861,0x18a3,0x10a2,0x1082,0x1082,0x18c2,0x18e3,0x20e3,0x20e3,0x1904,0x1904,0x2104,0x18e3,0x18e4,0x18e4,0x18c3,0x2104,0x2125,0x2104,0x18e3,0x18e3,0x18e3,0x18e4,0x18c3,0x18e3,0x18c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e4,0x18e4,0x18e4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2124,0x18e3,0x18e3,0x2125,0x2104,0x18e4,0x18c3,0x18e3,0x18e3,0x18c3,0x10c3,0x10a3,0x18c3,0x10c3,0x10a3,0x10a3,0x10c3,0x10a2,0x18e3,0x18e3,0x18c3,0x10c3,0x10a2,0x10c2,0x10a2,0x10c3,0x10c3,0x10a3,0x10a3,0x10a3,0x10a2,0x10c2,0x10c3,0x10c2,0x10e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c2,0x10c2,0x10c2,0x18c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10a3,0x10c3,0x10c3,0x10c2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x08a2,0x10c3,0x1924,0x18e3,0x18c3,0x18c3,0x10a3,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2, +0x18c3,0x18c3,0x10c3,0x18c3,0x10c2,0x10c3,0x10c3,0x18e3,0x10a2,0x10a3,0x10a3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a3,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c2,0x10c2,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e4,0x18e4,0x18c3,0x18c3,0x18c3,0x10a3,0x10c3,0x18c3,0x18c3,0x10c3,0x10c3,0x18c3,0x18c3,0x18c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18c3,0x18e4,0x18c3,0x18e3,0x18e3,0x2104,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a3,0x18c3,0x18e3,0x18e3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18e3,0x10c3,0x18e3,0x1904,0x18c3,0x18e3,0x18c3,0x10a3,0x18c3,0x18c3,0x18c3,0x10c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18e4,0x1903,0x18c3,0x18e3,0x1904,0x18e4,0x18e4,0x18e3,0x18c3,0x18e3,0x1081,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x20e3,0x10a2,0x0861,0x0861,0x1082,0x18c3,0x2103,0x18e3,0x2103,0x2124,0x2124,0x2124,0x2104,0x2124,0x2924,0x2924,0x2924,0x2924,0x2124,0x2124,0x2924,0x2924,0x20e3,0x20e3,0x18c2,0x1062,0x0861,0x0861,0x10a2,0x20e3,0x2103,0x18e3,0x20e3,0x2104,0x2104,0x2104,0x2104,0x2124,0x2924,0x2944,0x2124,0x20e3,0x2103,0x20e3,0x20e3,0x20e3,0x18e3,0x18e3,0x10a2,0x0861,0x0861,0x1082,0x18e3,0x2944,0x2103,0x2104,0x2104,0x2104,0x2104,0x2104,0x2124,0x2124,0x2924,0x2924,0x2924,0x2104,0x2104,0x2924,0x2944,0x2944,0x2924,0x18a2,0x0861,0x0861,0x0841,0x0861,0x18c3,0x10a2,0x1082,0x1082,0x18c2,0x20e3,0x20e3,0x20e3,0x18c3,0x18c3,0x10a3,0x10a3,0x10c3,0x10c3,0x10c3,0x10c3,0x18c3,0x18c3,0x10a3,0x10a3,0x10a3,0x10c3,0x10a2,0x10c3,0x10c3,0x10a3,0x10a2,0x10a3,0x10a2,0x10a3,0x10c3,0x10a3,0x10c3,0x10c3,0x10c3,0x18e3,0x10c2,0x18e3,0x18e3,0x10c3,0x10a2,0x10a3,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x1082,0x10a2,0x1082,0x10a3,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082, +0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a3,0x10c3,0x10a2,0x10a2,0x10a3,0x10a3,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18c3,0x10c2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a3,0x10a3,0x10c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a3,0x10a3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a3,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a3,0x10a2,0x10a2,0x10a3,0x10a1,0x1062,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x1082,0x1082,0x18e3,0x2924,0x2104,0x2103,0x2104,0x2104,0x2104,0x2103,0x2103,0x2104,0x2104,0x2124,0x2924,0x2104,0x2104,0x2924,0x2924,0x2104,0x2944,0x18e3,0x1061,0x0861,0x0861,0x18c3,0x2924,0x2924,0x20e3,0x18e3,0x18e3,0x18c3,0x18c3,0x20e3,0x18e3,0x18e3,0x20e3,0x20e3,0x18c3,0x18c3,0x18c3,0x18e3,0x2103,0x2924,0x2124,0x18a2,0x0861,0x0861,0x1082,0x2104,0x3165,0x2924,0x2924,0x2104,0x2104,0x20e3,0x20e3,0x18e3,0x20e3,0x20e3,0x20e3,0x2103,0x20e3,0x20e4,0x2104,0x2924,0x3165,0x3165,0x2103,0x1062,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x0862,0x0862,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082, +0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0882,0x1082,0x10a2,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1081,0x1062,0x10a2,0x2104,0x2103,0x20e3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18a3,0x18c3,0x18c3,0x20e3,0x2104,0x18e3,0x1061,0x0841,0x0841,0x18c3,0x2104,0x18e3,0x18c3,0x18c2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x18e3,0x2104,0x2104,0x18c3,0x0861,0x0861,0x1082,0x20e4,0x2124,0x2104,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x18a2,0x10a2,0x18a3,0x18c3,0x18c3,0x2104,0x2924,0x20e3,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x1082,0x10a2,0x18c2,0x20e3,0x20e3,0x18c3,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0881,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x0881,0x1082,0x10a2,0x0882,0x1082,0x10a2,0x1082,0x1082,0x0881,0x1082,0x1082,0x0882,0x10a2,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x0861,0x0881,0x0881,0x0882,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x0861,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x0882,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0881,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0861,0x0881,0x1082,0x0882,0x0882,0x0882,0x0861,0x0861,0x0882,0x1082,0x1082, +0x1082,0x0882,0x1082,0x0861,0x0881,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x0882,0x0881,0x0882,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x0881,0x0881,0x0881,0x0882,0x0861,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x1082,0x1082,0x10a2,0x10a2,0x0861,0x1082,0x10a2,0x1082,0x10a2,0x0882,0x0881,0x0881,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0882,0x0881,0x1082,0x0882,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0881,0x0882,0x0882,0x0882,0x0881,0x0882,0x0882,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x1082,0x1082,0x1082,0x18a1,0x1061,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x18c3,0x18a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x1082,0x1082,0x10a2,0x18a2,0x10a2,0x0861,0x0841,0x0861,0x10a2,0x18a3,0x1082,0x1082,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1082,0x18a2,0x18a3,0x1082,0x0861,0x0861,0x0862,0x10a3,0x10a2,0x10a2,0x1082,0x1082,0x1062,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x1061,0x1082,0x1082,0x1082,0x10a2,0x18a2,0x18a2,0x1082,0x0861,0x0841,0x0861,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x20e3,0x18e3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x0882,0x0882,0x1082,0x0882,0x0882,0x0882,0x0882,0x0881,0x1082,0x1082,0x0881,0x0861,0x0882,0x0882,0x1082,0x1082,0x0881,0x0861,0x0881,0x0882,0x0882,0x1082,0x0882,0x0881,0x0882,0x1082,0x0882,0x1082,0x0881,0x0882,0x0861,0x0882,0x1082,0x0882,0x0881,0x0881,0x0881,0x0881,0x0881,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x0882,0x1082,0x0881,0x0882,0x0882,0x0882,0x0882,0x0882,0x0882,0x0861,0x0882,0x0882,0x0882,0x1082,0x1082,0x1082,0x0882,0x0881,0x1082,0x1082,0x1082,0x0882, +0x0882,0x1082,0x0882,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0861,0x0881,0x0882,0x1082,0x0881,0x0861,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0882,0x0881,0x0881,0x1082,0x0882,0x0881,0x0882,0x0881,0x0861,0x0861,0x0861,0x0882,0x1082,0x0882,0x0861,0x0861,0x1082,0x1082,0x0881,0x0861,0x0882,0x1082,0x1082,0x1082,0x0861,0x0882,0x0861,0x0861,0x0861,0x0882,0x0861,0x0861,0x0882,0x0881,0x0881,0x0881,0x0861,0x0881,0x0882,0x0861,0x0861,0x0881,0x0861,0x0861,0x0882,0x0861,0x0861,0x0861,0x0861,0x0881,0x0861,0x0882,0x1082,0x0881,0x0881,0x0881,0x0861,0x0881,0x0881,0x1082,0x0881,0x0861,0x0882,0x0882,0x0882,0x0861,0x0881,0x0882,0x0882,0x0861,0x18c2,0x1061,0x0861,0x1061,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x1082,0x1082,0x0862,0x1081,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x1061,0x1062,0x1082,0x0861,0x0841,0x1081,0x18e3,0x1082,0x10a2,0x1082,0x18c3,0x18e3,0x18c3,0x18c3,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x0861,0x0881,0x0882,0x0881,0x1082,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x0882,0x0861,0x0881,0x0881,0x1082,0x0881,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x10a2,0x0882,0x08a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x0882,0x08a2,0x08a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082, +0x1082,0x0881,0x0881,0x1082,0x1082,0x0881,0x0881,0x0881,0x0881,0x0882,0x0882,0x0882,0x0882,0x0861,0x0861,0x0881,0x0882,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0861,0x0861,0x0881,0x0881,0x1082,0x1082,0x0882,0x1082,0x1082,0x0882,0x0882,0x0881,0x1082,0x1082,0x1082,0x1082,0x0861,0x0882,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0882,0x0881,0x1082,0x0881,0x0882,0x0881,0x0881,0x0881,0x0881,0x1082,0x0881,0x0881,0x0882,0x0882,0x1082,0x0861,0x0882,0x0881,0x0882,0x0881,0x0881,0x0881,0x0882,0x0881,0x0881,0x0882,0x0882,0x1082,0x0882,0x0861,0x0882,0x1082,0x0881,0x0882,0x0882,0x0881,0x0881,0x0882,0x0882,0x0881,0x0881,0x0861,0x0882,0x0882,0x0882,0x0881,0x0861,0x0882,0x0881,0x0861,0x0881,0x0881,0x0881,0x0882,0x0861,0x0881,0x0881,0x0861,0x0861,0x0882,0x1082,0x1082,0x0881,0x2102,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18e3,0x18c3,0x18c3,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x0882,0x0882,0x0882,0x0882,0x1082,0x0882,0x0882,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c3,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x18c3,0x10a2,0x10c2,0x10c3,0x10a2,0x10c2,0x10c2,0x10c3, +0x10a2,0x0882,0x0882,0x10a2,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x0882,0x1082,0x1082,0x1082,0x0882,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x1082,0x10a2,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x0882,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x1082,0x1082,0x10a2,0x1082,0x0882,0x1082,0x10a2,0x10a2,0x1082,0x1082,0x1082,0x10a2,0x10a2,0x0882,0x1082,0x1082,0x0882,0x1082,0x0882,0x0882,0x10a2,0x1082,0x1082,0x1082,0x0882,0x0882,0x1082,0x1082,0x0881,0x0882,0x0882,0x1082,0x1082,0x1082,0x10a2,0x1082,0x2943,0x1061,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1061,0x0861,0x0861,0x1082,0x18c3,0x1082,0x10a2,0x1082,0x18c2,0x18c3,0x18c2,0x18c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10c3,0x10a2,0x10c3,0x18c3,0x10a2,0x10c3,0x10a2,0x18c3,0x10c3,0x10c2,0x10c2,0x10c3,0x10c3,0x10a2,0x10c3,0x10c3,0x10c3,0x10c3,0x10c2,0x18e3,0x18e3,0x10c3,0x18c3,0x18c3,0x18e3,0x18e3,0x10c3,0x10e3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x10c3,0x10c3,0x10c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3, +0x10c2,0x10c2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c3,0x10c2,0x10c2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10c3,0x10c2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x08a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10a2,0x10c2,0x10a2,0x10a2,0x10a2,0x3164,0x1061,0x1061,0x0861,0x0861,0x0861,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1062,0x1061,0x0861,0x0861,0x1082,0x18e3,0x1082,0x10a2,0x10a2,0x18c2,0x18c3,0x18c2,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x1903,0x1903,0x18e3,0x1904,0x1903,0x1904,0x1904,0x1903,0x1903,0x1903,0x1904,0x1904,0x18e3,0x1904,0x1904,0x1904,0x1924,0x1904,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2104,0x2104,0x2103,0x1903,0x1903,0x1904,0x1904,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2145,0x2144,0x2124,0x2124,0x2145,0x2144,0x2144,0x2945,0x2124,0x2124,0x2124, +0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18c3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1903,0x18e3,0x18e3,0x18e3,0x18c3,0x18c3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x3184,0x1081,0x1061,0x1061,0x0861,0x1061,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x1082,0x0861,0x0861,0x0861,0x1082,0x20e3,0x1082,0x1082,0x10a2,0x18c2,0x18e3,0x18c2,0x20e3,0x2104,0x2124,0x1904,0x2124,0x2104,0x2103,0x2104,0x2124,0x2124,0x1904,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2144,0x2144,0x2144,0x2144,0x2165,0x2144,0x2145,0x2145,0x2945,0x2965,0x2945,0x2965,0x2945,0x2165,0x2965,0x2965,0x2945,0x2945,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2986,0x2965,0x2985,0x2985,0x2965,0x2965,0x2965,0x2965,0x2965,0x2965,0x2986,0x2965,0x2965,0x2986,0x2986,0x2965,0x2986,0x2986,0x2985,0x2986,0x2965,0x2965,0x2986,0x2986,0x2986,0x2985,0x2985,0x2985,0x2985,0x2985,0x2986,0x3186,0x31a6,0x3186,0x3186,0x2986,0x2986,0x31a6,0x29a6,0x2985, +0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2104,0x2124,0x2124,0x1924,0x1924,0x1924,0x2124,0x2124,0x2104,0x2124,0x1924,0x1924,0x1904,0x2104,0x2104,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2104,0x1924,0x2124,0x1904,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2104,0x2124,0x2144,0x2144,0x2124,0x1924,0x2124,0x2124,0x2124,0x2124,0x1904,0x1904,0x2124,0x2124,0x2124,0x2124,0x2124,0x1924,0x2144,0x1924,0x1924,0x1924,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2144,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x2124,0x3184,0x1081,0x1081,0x1081,0x1081,0x1081,0x0861,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x10a2,0x20e3,0x1082,0x10a2,0x10a2,0x18c2,0x18e3,0x18c2,0x2103,0x2965,0x2965,0x2965,0x2985,0x2985,0x2965,0x2165,0x2985,0x2985,0x2985,0x2985,0x2985,0x2965,0x2985,0x2985,0x2985,0x2985,0x29a5,0x2985,0x2985,0x2985,0x2985,0x2985,0x2985,0x29a6,0x29a6,0x3186,0x3186,0x2986,0x31a6,0x29a6,0x31a6,0x2986,0x31a6,0x31c6,0x31a6,0x29a6,0x29c6,0x31c6,0x31c7,0x31c7,0x31c6,0x31c6,0x29c6,0x29c6,0x31c7,0x31c7,0x31c6,0x31c7,0x31c7,0x31c7,0x31c7,0x31c7,0x39e7,0x39c7,0x39c7,0x39e7,0x31c6,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x3a08,0x3a08,0x3a08,0x3a08,0x39e7,0x3a07,0x3a07,0x3a07,0x3a07,0x3a08,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x39e7,0x3a08,0x3a08,0x3a08,0x4208,0x4208,0x4208,0x4208,0x3a08,0x39e8,0x4208,0x4228,0x3a08,0x3a08,0x39e7,0x39e7,0x3a07,0x4207,0x39e7,0x39c7,0x39c7,0x39c7,0x4208,0x39e7,0x3a08,0x4208,0x41e7,0x4207,0x4207, +0x2985,0x2965,0x2986,0x2986,0x2985,0x3185,0x3185,0x3185,0x2985,0x2985,0x2985,0x2985,0x2985,0x3185,0x3185,0x2985,0x2986,0x2985,0x2965,0x2985,0x3186,0x2965,0x2965,0x2986,0x2986,0x2985,0x2986,0x2986,0x2985,0x2965,0x2985,0x2985,0x2985,0x2986,0x2985,0x2986,0x2986,0x29a6,0x2986,0x2985,0x2986,0x2986,0x2965,0x2985,0x29a6,0x29a5,0x2985,0x3185,0x3185,0x31a6,0x31a6,0x31a5,0x31a6,0x2986,0x31a6,0x31a6,0x3186,0x31a6,0x29a6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29a6,0x29c6,0x29a6,0x29a6,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x2986,0x3186,0x29a6,0x2986,0x31a6,0x2986,0x29a6,0x2986,0x3186,0x2985,0x2986,0x31a6,0x29a6,0x2985,0x3186,0x3186,0x3186,0x31a6,0x31a6,0x31a6,0x31a6,0x29a6,0x31a6,0x2985,0x29a6,0x31a6,0x31a6,0x3186,0x39a4,0x1081,0x1081,0x1082,0x1082,0x10a2,0x1061,0x1082,0x18e3,0x1082,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0861,0x0841,0x0861,0x10a2,0x2103,0x1082,0x18a2,0x1082,0x18c2,0x18e3,0x18c2,0x2104,0x39c7,0x39e7,0x3a07,0x39e7,0x39e7,0x39e7,0x39e7,0x3a07,0x3a07,0x3a07,0x39e7,0x39e7,0x4208,0x3a08,0x3a08,0x4208,0x41e7,0x4208,0x4208,0x39e7,0x4208,0x4228,0x4228,0x4228,0x4248,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4248,0x4228,0x4249,0x4228,0x4208,0x4248,0x4228,0x4a49,0x4228,0x4a28,0x4228,0x4208,0x3a28,0x3a28,0x4228,0x4208,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4208,0x4208,0x4228,0x4228,0x4208,0x39e7,0x4207,0x4208,0x4208,0x39e7,0x4208,0x39e7,0x41e8,0x4207,0x4207,0x39c7,0x39e7,0x39e7,0x41e7,0x41e7,0x39c7,0x39e7,0x39c7,0x39c6,0x39e7,0x39e7,0x39c6,0x31a6,0x31a6,0x39a6,0x39a6,0x3186,0x3186,0x31a6,0x3186,0x3186,0x3186,0x31a6,0x3186,0x3165,0x3165,0x3186,0x3186,0x3165,0x3165,0x2945,0x2944,0x2944,0x3144,0x3145,0x2904,0x20e3,0x2924,0x2944,0x2944,0x2944,0x3145,0x2924,0x2924,0x2924}; diff --git a/MCUME_teensy/teensyvectrex/osint.h b/MCUME_teensy/teensyvectrex/osint.h new file mode 100755 index 0000000..ede1ce6 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/osint.h @@ -0,0 +1,8 @@ +#ifndef __OSINT_H +#define __OSINT_H + +/*extern char gbuffer[1024];*/ + +void osint_render (void); + +#endif diff --git a/MCUME_teensy/teensyvectrex/rom.h b/MCUME_teensy/teensyvectrex/rom.h new file mode 100644 index 0000000..8524baf --- /dev/null +++ b/MCUME_teensy/teensyvectrex/rom.h @@ -0,0 +1,515 @@ +#include +PROGMEM const unsigned char rom[8192] = { +0xED,0x77,0xF8,0x50,0x30,0xE8,0x4D,0x49,0x4E,0x45,0x80,0xF8,0x50,0x00,0xDE,0x53, +0x54,0x4F,0x52,0x4D,0x80,0x00,0x8E,0xC8,0x83,0x6F,0x80,0x8C,0xCB,0xC5,0x26,0xF9, +0xBD,0xE8,0xE3,0x7C,0xC8,0x24,0x86,0xBB,0xB7,0xC8,0x80,0x8E,0x01,0x01,0xBF,0xC8, +0x81,0x8E,0xC8,0x83,0x6F,0x80,0x8C,0xCB,0x70,0x26,0xF9,0x20,0x00,0xBD,0xF1,0xAF, +0xCC,0x02,0x00,0xBD,0xF7,0xA9,0x0A,0x79,0x0F,0x56,0x0F,0x9B,0x8E,0xC8,0xA8,0xBD, +0xF8,0x4F,0x8E,0xC8,0xAF,0xBD,0xF8,0x4F,0x8E,0xC8,0xF9,0xBD,0xF8,0x4F,0xCC,0x00, +0x01,0xBD,0xF8,0x7C,0x8E,0xC9,0x00,0xBD,0xF8,0x4F,0xCC,0x00,0x01,0xBD,0xF8,0x7C, +0x8E,0xED,0xAB,0x9F,0xC4,0x9F,0xC6,0x86,0x05,0x97,0xD9,0x97,0xDA,0x97,0xDB,0x20, +0x24,0xBD,0xE8,0x66,0x10,0x8E,0xC8,0xC4,0x96,0x9B,0xAE,0xA6,0x30,0x04,0xAF,0xA6, +0x8E,0xED,0xA7,0x96,0x9B,0xAE,0x86,0xA6,0x05,0x84,0x03,0x26,0x02,0x0C,0xD9,0xCC, +0x00,0x01,0xBD,0xF8,0x7C,0xBD,0xE7,0xE4,0x8E,0xC8,0xC4,0x96,0x9B,0xAE,0x86,0xA6, +0x84,0x2B,0x05,0xBD,0xE1,0x29,0x20,0x41,0xDC,0xF0,0x83,0x00,0x01,0xDD,0xF0,0x27, +0x14,0x34,0x08,0xBD,0xF1,0xAA,0xBD,0xEA,0xCF,0xCE,0xEE,0x2F,0xBD,0xEA,0x9D,0x35, +0x08,0x96,0x0F,0x27,0x24,0x8E,0xC8,0xA8,0xCE,0xCB,0xEB,0xBD,0xF8,0xD8,0x8E,0xC8, +0xAF,0xCE,0xCB,0xEB,0xBD,0xF8,0xD8,0xDC,0xF0,0x10,0x26,0xFF,0x44,0xBD,0xF1,0x8B, +0x0F,0x3B,0x10,0xCE,0xCB,0xEA,0x7E,0xF0,0x1C,0x34,0x08,0xBD,0xEA,0xF0,0xBD,0xE5, +0x1E,0xBD,0xE2,0x62,0xBD,0xE4,0xB8,0xBD,0xE3,0x53,0x35,0x08,0xBD,0xEB,0x43,0xBD, +0xEC,0x46,0xBD,0xEC,0x95,0xBD,0xE6,0x47,0x25,0xDF,0x96,0xBD,0x10,0x27,0xFF,0x61, +0x96,0xBE,0x10,0x26,0xFF,0x92,0x7E,0xE0,0xA5,0x9F,0xC2,0xCC,0x7F,0x00,0xDD,0xDC, +0x97,0xB7,0x86,0x20,0x97,0x9C,0x8E,0xE1,0xE7,0x9F,0x9D,0x8E,0xC9,0x33,0x9F,0xB9, +0x86,0x1D,0x97,0xB8,0x0F,0x56,0xCE,0xED,0x77,0xBD,0xF6,0x8D,0x34,0x08,0xBD,0xE7, +0x11,0xBD,0xF6,0x87,0x96,0x26,0x85,0x01,0x26,0x02,0x0A,0xB7,0xBD,0xEA,0xF0,0xBD, +0xEA,0xCF,0xBD,0xF2,0x89,0xBD,0xE5,0x1E,0xBD,0xF2,0xA5,0xF6,0xC8,0xB7,0x27,0x1C, +0x8E,0xEF,0x26,0x10,0xBE,0xC8,0xDC,0xBD,0xEA,0x7F,0x8E,0xEF,0x5D,0xBD,0xEA,0x7F, +0x8E,0xEF,0x94,0xBD,0xEA,0x7F,0x35,0x08,0x0A,0xDC,0x20,0xC0,0x35,0x08,0x0F,0x9C, +0x86,0x04,0x97,0xB7,0x86,0x7F,0x97,0xB8,0x96,0xB7,0x27,0x4A,0xD6,0xB8,0x27,0x04, +0x0A,0xB8,0x20,0x12,0xD6,0x26,0xC4,0x1F,0x26,0x0C,0x4A,0x97,0xB7,0x9E,0xC2,0xA6, +0x86,0xC6,0x03,0xBD,0xE9,0xA1,0x34,0x08,0xBD,0xEA,0xF0,0xBD,0xF2,0xA9,0xCE,0xEE, +0x20,0xBD,0xEA,0x9D,0x10,0x8E,0xE0,0xF8,0xCE,0xED,0xA7,0xB6,0xC8,0x9B,0xEE,0xC6, +0xBD,0xEA,0xA8,0xBD,0xE5,0x1E,0xBD,0xE2,0x62,0xBD,0xE4,0xB8,0x35,0x08,0xBD,0xEB, +0x43,0xBD,0xE6,0x47,0x20,0xB2,0x39,0x0A,0xB8,0x27,0x4E,0x0C,0xED,0xBD,0xF5,0x17, +0x84,0x07,0x8B,0x04,0x97,0x9C,0xDE,0xB9,0x86,0x80,0xA7,0xC4,0xDC,0xDC,0x8B,0x08, +0xA7,0x44,0x6F,0x45,0xE7,0x46,0x6F,0x47,0xBD,0xF5,0x17,0x4D,0x2B,0x0C,0x81,0x10, +0x2C,0x02,0x8B,0x0C,0x81,0x60,0x2F,0x0E,0x20,0xEE,0x81,0xF0,0x2F,0x02,0x80,0x0C, +0x81,0xA0,0x2C,0x02,0x20,0xE2,0xA7,0xC8,0x11,0x1F,0x89,0x1D,0x8A,0x01,0xA7,0xC8, +0x10,0x6F,0x42,0x31,0xC8,0x12,0x10,0x9F,0xB9,0x39,0x00,0x02,0x07,0x10,0x00,0x20, +0x18,0x10,0x01,0x00,0x05,0x00,0x03,0x25,0x07,0x50,0x00,0x00,0x01,0x00,0x00,0x35, +0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x08,0x0D,0x0D,0xEE,0x3D,0xEE,0x53,0xEE,0x6F, +0xEE,0x8E,0x34,0x08,0x86,0xC8,0x1F,0x8B,0x96,0xBD,0x10,0x26,0x00,0x9C,0x96,0xEE, +0x10,0x26,0x00,0xA7,0x96,0x13,0x10,0x26,0x00,0x92,0x96,0x14,0x27,0x32,0x96,0xD4, +0x91,0xD6,0x27,0x1C,0x91,0xD8,0x27,0x08,0x96,0xD5,0x27,0x14,0x96,0xD7,0x26,0x20, +0x96,0xD7,0x8B,0x0C,0x81,0x7F,0x22,0x18,0x97,0xD7,0x96,0xD4,0x97,0xD8,0x20,0x0E, +0x96,0xD5,0x8B,0x0C,0x81,0x7F,0x22,0x08,0x97,0xD5,0x96,0xD4,0x97,0xD6,0x0C,0xF2, +0x96,0xD5,0x27,0x0E,0x80,0x02,0x97,0xD5,0xD6,0xD6,0xBD,0xE7,0xB5,0x10,0x9F,0xCC, +0x9F,0xCE,0x96,0xD7,0x27,0x0E,0x80,0x02,0x97,0xD7,0xD6,0xD8,0xBD,0xE7,0xB5,0x10, +0x9F,0xD0,0x9F,0xD2,0xDC,0xC8,0xD3,0xCC,0xD3,0xD0,0xDD,0xC8,0xDC,0xCA,0xD3,0xCE, +0xD3,0xD2,0xDD,0xCA,0x96,0x1B,0x27,0x0F,0x2B,0x04,0x0A,0xD4,0x20,0x06,0x0C,0xD4, +0x20,0x02,0x34,0x08,0xBD,0xE8,0x4C,0x86,0xD0,0x1F,0x8B,0xBD,0xF2,0xA5,0xC6,0x0C, +0x10,0x8E,0xC8,0xC8,0x8E,0xCB,0x89,0xBD,0xEA,0x8D,0x35,0x88,0x86,0x80,0x97,0xEE, +0xBD,0xF5,0x17,0x84,0x03,0x8B,0x03,0x97,0xEF,0x0C,0xF6,0x96,0xEE,0x2A,0x19,0x0A, +0xEF,0x27,0x0D,0xBD,0xE9,0x8A,0x97,0xC8,0x0F,0xC9,0xD7,0xCA,0x0F,0xCB,0x35,0x88, +0x04,0xEE,0x86,0x1F,0x97,0xEF,0x35,0x88,0xD6,0xEF,0xC1,0xE0,0x2F,0x0C,0x96,0xEF, +0x80,0x04,0x97,0xEF,0x4F,0xBD,0xE9,0x4A,0x35,0x88,0x0F,0xEF,0x0F,0xEE,0xBD,0xE8, +0x37,0x35,0x88,0xB6,0xC8,0xE7,0x27,0x2B,0x34,0x08,0x86,0xC8,0x1F,0x8B,0x96,0xE7, +0x27,0x21,0xDC,0xDE,0xD3,0xE2,0xDD,0xDE,0x97,0xDC,0xDC,0xE0,0xD3,0xE4,0xDD,0xE0, +0x97,0xDD,0x35,0x08,0xBD,0xF2,0xA5,0xC6,0x08,0x10,0xBE,0xC8,0xDC,0x8E,0xEF,0xB3, +0xBD,0xEA,0x7F,0x39,0x8E,0xE3,0xA1,0x9F,0xA3,0xBD,0xF5,0x17,0x8E,0xE4,0x48,0x84, +0x06,0xAE,0x86,0xEC,0x81,0xDD,0xDC,0x97,0xDE,0x0F,0xDF,0xD7,0xE0,0x0F,0xE1,0x20, +0x58,0x96,0xBF,0x26,0x19,0xBD,0xF5,0x17,0x84,0x7F,0x8B,0x30,0x97,0xA2,0xBD,0xF5, +0x17,0x84,0x3F,0x97,0xE6,0xBD,0xF5,0x17,0x8B,0x10,0x97,0xE7,0x20,0x49,0x96,0xBD, +0x26,0xE3,0xC6,0x1C,0xCE,0xC9,0x33,0xA6,0xC4,0x27,0x08,0x33,0xC8,0x12,0x5A,0x26, +0xF6,0x20,0x34,0x0C,0xED,0x0A,0xBF,0x9E,0xDE,0xAF,0x44,0x9E,0xE0,0xAF,0x46,0x86, +0x40,0xA7,0xC4,0x96,0xC0,0x26,0x10,0x8E,0xE4,0x12,0x9F,0x9D,0xBD,0xF5,0x17,0x84, +0x7F,0x8B,0x40,0x97,0x9C,0x0C,0xC0,0x9E,0xE8,0xA6,0x80,0x97,0xA2,0xA6,0x80,0x97, +0xE6,0xA6,0x80,0x97,0xE7,0x9F,0xE8,0xD6,0xE6,0xBD,0xE7,0xB5,0x10,0x9F,0xE2,0x9F, +0xE4,0x39,0xCE,0xC8,0xC4,0x96,0x9B,0xEE,0xC6,0xA6,0xC4,0xC6,0x03,0xBD,0xE9,0xA1, +0x8E,0xE4,0x26,0x9F,0x9D,0x39,0x0A,0xC1,0x27,0x06,0x86,0xFF,0x97,0x9C,0x20,0x17, +0xBD,0xF5,0x17,0x1F,0x89,0xC4,0x03,0x26,0x02,0xCB,0x01,0xCE,0xC8,0xC4,0x96,0x9B, +0xEE,0xC6,0xA6,0xC4,0xBD,0xE9,0xA1,0x39,0xE4,0x50,0xE4,0x6A,0xE4,0x84,0xE4,0x9E, +0x7F,0x00,0x28,0x20,0x30,0x40,0x28,0x30,0x28,0x00,0x10,0x30,0x10,0x40,0x18,0x20, +0x50,0x40,0x30,0x28,0x30,0x08,0x60,0x7F,0x38,0x70,0x80,0x00,0x40,0x00,0x30,0x20, +0x10,0x50,0x20,0x28,0x40,0x30,0x3E,0x70,0x18,0x30,0x60,0x20,0x18,0x40,0x30,0x24, +0x50,0x7F,0x06,0x70,0x00,0x7F,0x40,0x10,0x60,0x28,0x38,0x30,0x28,0x08,0x40,0x30, +0x28,0x7F,0x20,0x18,0x30,0x30,0x08,0x68,0x40,0x20,0x50,0x7F,0x38,0x70,0x00,0x80, +0x40,0x30,0x60,0x38,0x18,0x30,0x30,0x20,0x18,0x20,0x38,0x40,0x28,0x10,0x60,0x20, +0x00,0x30,0x40,0x38,0x50,0x7F,0x1C,0x70,0x86,0x04,0xCE,0xC9,0x0B,0x8E,0xC8,0x15, +0xB7,0xC8,0x8F,0xBD,0xF2,0xA9,0xA6,0xC4,0x27,0x22,0x6A,0x49,0x27,0x19,0xEC,0x45, +0xE3,0x41,0xED,0x45,0xEC,0x47,0xE3,0x43,0xED,0x47,0x31,0x45,0xBD,0xEA,0x6D,0x33, +0x4A,0x7A,0xC8,0x8F,0x26,0xE0,0x39,0x6F,0xC4,0x7A,0xC8,0xEA,0xB6,0xC8,0xBD,0x26, +0xEE,0xB6,0xC8,0xEE,0x26,0xE9,0xA6,0x84,0x27,0xE5,0x6F,0x84,0x7C,0xC8,0xB6,0x6C, +0xC4,0xFC,0xC8,0xC8,0xED,0x45,0xFC,0xC8,0xCA,0xED,0x47,0xFC,0xC9,0x07,0xED,0x41, +0xFC,0xC9,0x09,0xED,0x43,0x86,0x18,0xA7,0x49,0x7C,0xC8,0xEA,0x20,0xC1,0x86,0x1C, +0xB7,0xC8,0x8F,0xCE,0xC9,0x33,0xA6,0xC4,0x26,0x09,0x33,0xC8,0x12,0x7A,0xC8,0x8F, +0x26,0xF4,0x39,0x10,0x2B,0x00,0x9C,0x85,0x40,0x10,0x26,0x00,0xA4,0x85,0x20,0x10, +0x26,0x00,0xA9,0x85,0x10,0x10,0x26,0x00,0xD4,0x85,0x01,0x10,0x26,0x00,0xD8,0xA6, +0x41,0x81,0x04,0x27,0x56,0x85,0x01,0x27,0x31,0xB6,0xC8,0xEE,0x26,0x2C,0xB6,0xC8, +0xBD,0x26,0x27,0x34,0x08,0xBD,0xF1,0xAF,0x96,0xC8,0xA0,0x44,0xD6,0xCA,0xE0,0x46, +0xBD,0xF5,0x93,0x80,0x10,0x97,0x83,0x8E,0xE2,0x3E,0xE6,0x43,0xA6,0x85,0xD6,0x83, +0xBD,0xE7,0xB5,0x10,0xAF,0x48,0xAF,0x4A,0x35,0x08,0xEC,0x44,0xE3,0x48,0xED,0x44, +0xEC,0x46,0xE3,0x4A,0xED,0x46,0xBD,0xF2,0xA5,0x8E,0xE2,0x5A,0xA6,0x41,0x48,0xAE, +0x86,0x31,0x44,0xE6,0x42,0xBD,0xEA,0x8D,0x7E,0xE5,0x2A,0xEC,0x44,0xE3,0x48,0x29, +0x1A,0xED,0x44,0xEC,0x46,0xE3,0x4A,0x29,0x12,0xED,0x46,0xBD,0xF2,0xA9,0x31,0x44, +0x8E,0xCB,0xA7,0xC6,0x04,0xBD,0xEA,0x8D,0x7E,0xE5,0x2A,0x6F,0xC4,0x7A,0xC8,0xEB, +0x7E,0xE5,0x2A,0xA6,0x46,0xAB,0xC8,0x10,0xA7,0x46,0xA1,0xC8,0x11,0x26,0x02,0x64, +0xC4,0xBD,0xF2,0xA5,0x31,0x44,0xBD,0xEA,0x6D,0x7E,0xE5,0x2A,0xA6,0x43,0x81,0x03, +0x26,0x0D,0xA6,0x42,0xA1,0xC8,0x10,0x2C,0x06,0x8B,0x08,0xA7,0x42,0x20,0x1B,0x64, +0xC4,0xA6,0xC8,0x10,0xA7,0x42,0x86,0x18,0xA7,0xC8,0x10,0xB6,0xC8,0xED,0x26,0x0A, +0xB6,0xC8,0xC0,0x26,0x05,0x86,0x7F,0xB7,0xC8,0xA2,0x7E,0xE5,0x96,0x6A,0xC8,0x10, +0x26,0x02,0x64,0xC4,0x7E,0xE5,0x96,0x6F,0xC4,0xA6,0x41,0x81,0x04,0x27,0x15,0xE6, +0x43,0x5A,0x27,0x10,0x34,0x0A,0x86,0xC8,0x1F,0x8B,0xA6,0xE4,0xBD,0xE9,0xA1,0xBD, +0xE9,0xA1,0x35,0x0A,0x7E,0xE5,0x2A,0x34,0x08,0xBD,0xF1,0xAA,0xBD,0xF2,0xA9,0xCE, +0xCB,0x2B,0x86,0x0E,0xB7,0xC8,0x8F,0xA6,0xC4,0x10,0x27,0x00,0xA6,0xE6,0x44,0xE1, +0x41,0x24,0x0D,0xCB,0x03,0xE7,0x44,0x10,0xAE,0x42,0x8E,0xEE,0xBA,0xBD,0xEA,0x7F, +0x4D,0x10,0x2A,0x00,0x83,0x7A,0xC8,0xF7,0x10,0x27,0x00,0x37,0xB6,0xC8,0x26,0x84, +0x01,0x26,0x03,0x7C,0xC8,0xF8,0xB6,0xC8,0xF8,0x10,0x8E,0x7F,0x00,0x8E,0xEF,0x04, +0xBD,0xE7,0x6A,0x10,0x8E,0x60,0x80,0x8E,0xEF,0x0B,0xBD,0xE7,0x6A,0x10,0x8E,0x80, +0x50,0x8E,0xEF,0x15,0xBD,0xE7,0x6A,0x10,0x8E,0xA0,0x80,0x8E,0xEF,0x1C,0xBD,0xE7, +0x6A,0x20,0x50,0x7A,0xC8,0xD9,0x7F,0xC8,0xEB,0x7F,0xC8,0xED,0xB6,0xC8,0x79,0x27, +0x2B,0xB6,0xC8,0x9B,0x44,0x8E,0xC8,0xDA,0xF6,0xC8,0xD9,0xE7,0x86,0xB6,0xC8,0xDA, +0x26,0x05,0xB6,0xC8,0xDB,0x27,0x1A,0xB6,0xC8,0x9B,0x8B,0x02,0x84,0x02,0xB7,0xC8, +0x9B,0x44,0x8E,0xC8,0xDA,0xE6,0x86,0xF7,0xC8,0xD9,0x27,0xEB,0xB6,0xC8,0xD9,0x26, +0x0D,0x86,0x01,0xB7,0xC8,0xBE,0x20,0x06,0xE6,0x44,0xE1,0x41,0x25,0x05,0x6F,0xC4, +0x7A,0xC8,0xEC,0x33,0x45,0x7A,0xC8,0x8F,0x10,0x26,0xFF,0x4B,0xBD,0xEC,0xC9,0x20, +0x05,0x34,0x08,0xBD,0xF1,0xAA,0xBD,0xF2,0xA5,0x8E,0x80,0x38,0xBF,0xC8,0x90,0xB6, +0xC8,0xD9,0x27,0x1E,0xB7,0xC8,0x8F,0x7A,0xC8,0x8F,0x27,0x16,0xB6,0xC8,0x91,0x8B, +0x06,0xB7,0xC8,0x91,0xC6,0x04,0x10,0xBE,0xC8,0x90,0x8E,0xEE,0xEB,0xBD,0xEA,0x7F, +0x20,0xE5,0x35,0x08,0x96,0x26,0x84,0x01,0x48,0x48,0x48,0x8E,0xEE,0xAD,0xCE,0xCB, +0xA7,0xBD,0xF6,0x1F,0xD6,0xEC,0x26,0x0F,0x96,0xBD,0x26,0x08,0xD6,0xEB,0x26,0x07, +0xD6,0xED,0x26,0x03,0x1C,0xFE,0x39,0x1A,0x01,0x39,0x34,0x32,0x8E,0xC8,0xC8,0xBD, +0xF2,0xF2,0xA6,0xE4,0x97,0x04,0x1F,0x20,0xBD,0xF3,0x12,0xC6,0x0C,0xAE,0x61,0xBD, +0xF4,0x0E,0x35,0xB2,0x34,0x16,0x8E,0xCB,0x2B,0x86,0x0E,0xE6,0x84,0x27,0x07,0x30, +0x05,0x4A,0x26,0xF7,0x20,0x1D,0xA6,0xE4,0x84,0x80,0x4C,0xA7,0x84,0x2A,0x02,0x0C, +0xBD,0xA6,0xE4,0x84,0x7F,0xA7,0x04,0xA6,0x61,0xA7,0x01,0xEC,0x62,0xED,0x02,0x0C, +0xEC,0x0C,0xF3,0x35,0x96,0x34,0x36,0xBD,0xF6,0x01,0xA7,0x64,0x1D,0x58,0x49,0x58, +0x49,0x58,0x49,0xED,0x62,0xE6,0x64,0x1D,0x58,0x49,0x58,0x49,0x58,0x49,0xED,0x64, +0x35,0xB6,0x34,0x36,0x8D,0xDF,0xEC,0x7C,0x58,0x49,0xED,0x64,0xEC,0x7A,0x58,0x49, +0xED,0x62,0x35,0xB6,0x86,0xD0,0x1F,0x8B,0xBD,0xF2,0x72,0x86,0xC8,0x1F,0x8B,0x0F, +0x9C,0x0F,0x9F,0x0F,0xA2,0x0F,0xA5,0x8E,0xC9,0x0B,0x6F,0x80,0x8C,0xCB,0x71,0x26, +0xF9,0xCC,0x00,0x00,0xDD,0xDE,0xDD,0xE0,0xDD,0xE2,0xDD,0xE4,0x97,0xE7,0x97,0xBD, +0x97,0xBE,0x97,0xEA,0x97,0xEB,0x97,0xEC,0x97,0xF8,0xC6,0x40,0xD7,0xF7,0x97,0xED, +0x97,0xC0,0x8E,0x08,0x00,0x9F,0xF0,0x86,0x07,0x97,0xBF,0x8E,0xE3,0x84,0x9F,0xA3, +0xCC,0x00,0x00,0xDD,0xC8,0xDD,0xCA,0xCC,0x00,0x00,0x97,0xD4,0xDD,0xCC,0xDD,0xCE, +0x97,0xD5,0x97,0xD6,0xDD,0xD0,0xDD,0xD2,0x97,0xD7,0x97,0xD8,0x96,0xD4,0x8E,0xEE, +0xEB,0xCE,0xCB,0x89,0xBD,0xF6,0x1F,0x86,0x7F,0xD6,0xD4,0xBD,0xE7,0xD2,0x10,0xBF, +0xC9,0x07,0xBF,0xC9,0x09,0x39,0x34,0x30,0x34,0x08,0xBD,0xF1,0xAA,0xBD,0xF2,0x72, +0x35,0x08,0x86,0xA0,0x97,0x8F,0x96,0xC8,0x27,0x0A,0x2B,0x03,0x4A,0x20,0x01,0x4C, +0x97,0xC8,0x0F,0xC9,0x96,0xCA,0x27,0x0A,0x2B,0x03,0x4A,0x20,0x01,0x4C,0x97,0xCA, +0x0F,0xCB,0x96,0xD4,0x27,0x0C,0x81,0x1F,0x2E,0x03,0x4A,0x20,0x01,0x4C,0x84,0x3F, +0x97,0xD4,0xBD,0xE2,0xF2,0x8E,0xCB,0x81,0xC6,0x08,0xA6,0x84,0x8B,0x03,0xA7,0x80, +0x5A,0x26,0xF7,0x34,0x08,0xBD,0xF1,0xAA,0xBD,0xEA,0xCF,0x5F,0x86,0x20,0xBD,0xE9, +0x0B,0xBD,0xE8,0xFD,0x35,0x08,0x96,0xC8,0x10,0x26,0xFF,0xAA,0x96,0xCA,0x10,0x26, +0xFF,0xA4,0x96,0xD4,0x10,0x26,0xFF,0x9E,0x0A,0x8F,0x10,0x26,0xFF,0x98,0xBD,0xE7, +0xE4,0x35,0xB0,0x8E,0xED,0xE0,0x10,0x8E,0xCB,0x71,0xCE,0xCB,0x81,0xC6,0x08,0x86, +0x16,0xAF,0xA1,0x30,0x08,0xA7,0xC0,0x8B,0x0F,0x5A,0x26,0xF5,0x39,0x34,0x1E,0x8E, +0xCB,0x81,0x86,0x08,0x6C,0x80,0x4A,0x26,0xFB,0x20,0x02,0x34,0x1E,0x86,0xD0,0x1F, +0x8B,0x86,0x09,0x34,0x02,0x6A,0xE4,0x26,0x07,0xBD,0xF3,0x54,0x35,0x02,0x35,0x9E, +0xBD,0xF3,0x54,0x86,0x03,0xB7,0xC8,0x23,0xA6,0xE4,0x4A,0x8E,0xCB,0x81,0xE6,0x86, +0xC4,0x7F,0xE1,0x61,0x23,0xDF,0xE0,0x62,0x2F,0xDB,0xD7,0x04,0x8E,0xCB,0x71,0x48, +0xAE,0x86,0xBD,0xF2,0xA9,0xBD,0xF2,0xD5,0x20,0xCB,0x34,0x1E,0x86,0xD0,0x1F,0x8B, +0x86,0x09,0x34,0x02,0x6A,0xE4,0x26,0x07,0xBD,0xF3,0x54,0x35,0x02,0x35,0x9E,0xBD, +0xF3,0x54,0x86,0x03,0xB7,0xC8,0x23,0x8E,0xC8,0xC8,0xBD,0xF2,0xF2,0xE6,0xE4,0x58, +0x58,0xEB,0x62,0x2F,0xDF,0xC4,0x7F,0xD7,0x04,0x8E,0xCB,0x71,0xA6,0xE4,0x4A,0x48, +0xAE,0x86,0xBD,0xF2,0xA9,0xBD,0xF2,0xD5,0x20,0xCA,0x34,0x06,0xBD,0xF5,0x17,0xA7, +0xE4,0xBD,0xF5,0x17,0x81,0x60,0x2E,0xF9,0x81,0xA0,0x2D,0xF5,0xA7,0x61,0x35,0x06, +0x39,0x34,0x76,0x96,0xED,0x10,0x27,0x00,0x93,0x0A,0xED,0xBD,0xF5,0x17,0x84,0x1F, +0x97,0x8B,0x81,0x1B,0x23,0x04,0x80,0x04,0x20,0xF6,0xC6,0x12,0x3D,0xC3,0xC9,0x33, +0x1F,0x03,0xA6,0xC4,0x84,0xC0,0x26,0x0D,0x0C,0x8B,0x96,0x8B,0x81,0x1B,0x2F,0xEA, +0x0F,0x8B,0x4F,0x20,0xE5,0xA6,0xE4,0xA7,0x41,0x8E,0xE2,0x42,0x48,0x10,0xAE,0x86, +0x10,0x9F,0x89,0xC6,0x20,0xE7,0xC4,0x8E,0xE2,0x3E,0xA6,0x61,0xE6,0x86,0xD7,0x8B, +0x8E,0xE2,0x3A,0xE6,0x86,0xE7,0xC8,0x10,0xA7,0x43,0x8E,0xE2,0x52,0x48,0x10,0xAE, +0x86,0x10,0xAF,0x4C,0x8E,0xE2,0x4A,0x10,0xAE,0x86,0x10,0x9F,0x87,0x81,0x06,0x26, +0x02,0x0C,0xF4,0x96,0x88,0x9B,0x8A,0x19,0xA7,0x4F,0x96,0x87,0x99,0x89,0x19,0xA7, +0x4E,0x96,0x8B,0xBD,0xEA,0x3E,0xBD,0xE7,0xB5,0x10,0xAF,0x48,0xAF,0x4A,0x0C,0xEB, +0x96,0xC0,0x27,0x08,0x86,0xFF,0x97,0x9C,0x86,0x03,0x97,0xC1,0x35,0xF6,0x34,0x06, +0xBD,0xF5,0x17,0x1F,0x89,0x84,0x30,0xA7,0x61,0xC4,0x0F,0xC1,0x04,0x24,0x02,0xCB, +0x04,0xC1,0x0C,0x23,0x02,0xC0,0x04,0xEB,0x61,0xE7,0x61,0x35,0x86,0x34,0x06,0x86, +0x7F,0x97,0x04,0x1F,0x20,0xBD,0xF2,0xC3,0xBD,0xF3,0x54,0x35,0x86,0x34,0x06,0x86, +0x7F,0x97,0x04,0xA6,0xA4,0xE6,0x22,0xBD,0xF2,0xC3,0xBD,0xF3,0x54,0x35,0x86,0x34, +0x16,0x1F,0x20,0xBD,0xF2,0xFC,0xE6,0x61,0xBD,0xF4,0x0E,0x35,0x96,0x34,0x16,0x1F, +0x21,0xBD,0xF2,0xF2,0xE6,0x61,0xAE,0x62,0xBD,0xF4,0x0E,0x35,0x96,0x34,0x56,0x86, +0x7F,0x97,0x04,0xBD,0xF3,0x73,0x35,0xD6,0x34,0x56,0x1F,0x20,0xBD,0xF2,0xFC,0xBD, +0xF4,0x95,0x35,0xB6,0xBD,0xF2,0xA9,0xCC,0xFC,0x38,0xFD,0xC8,0x2A,0xB6,0xC8,0x9B, +0x10,0x8E,0xED,0xA3,0x10,0xAE,0xA6,0xCE,0xED,0x9F,0xEE,0xC6,0x8D,0xDA,0x39,0xBD, +0xF2,0xA9,0xCC,0xFC,0x38,0xFD,0xC8,0x2A,0x10,0x8E,0x7F,0xA0,0xCE,0xC8,0xA8,0x8D, +0xC7,0xB6,0xC8,0x79,0x27,0x09,0x10,0x8E,0x7F,0x10,0xCE,0xC8,0xAF,0x8D,0xB9,0x39, +0xBD,0xF1,0x92,0x34,0x08,0xBD,0xF2,0xE6,0xBD,0xEA,0xB4,0xB6,0xC8,0x80,0xBD,0xF1, +0xB4,0xFC,0xC8,0x81,0xFD,0xC8,0x1F,0xFD,0xC8,0x21,0xBD,0xF1,0xF8,0x86,0xC8,0x1F, +0x8B,0x96,0x9C,0x27,0x08,0x0A,0x9C,0x26,0x04,0xAD,0x9F,0xC8,0x9D,0x96,0x9F,0x27, +0x08,0x0A,0x9F,0x26,0x04,0xAD,0x9F,0xC8,0xA0,0x96,0xA2,0x27,0x08,0x0A,0xA2,0x26, +0x04,0xAD,0x9F,0xC8,0xA3,0x96,0xA5,0x27,0x08,0x0A,0xA5,0x26,0x04,0xAD,0x9F,0xC8, +0xA6,0x35,0x88,0x96,0xEA,0x27,0x12,0x10,0x8E,0xC9,0x0B,0x86,0x04,0x97,0x8F,0x6D, +0xA4,0x26,0x07,0x31,0x2A,0x0A,0x8F,0x26,0xF6,0x39,0x96,0xE7,0x27,0x35,0x34,0x20, +0xA6,0x25,0xE6,0x27,0x1F,0x01,0xCC,0x06,0x16,0x10,0x9E,0xDC,0xBD,0xF8,0xFF,0x35, +0x20,0x24,0x20,0x6F,0xA4,0x0F,0xE7,0x0F,0xA2,0x8E,0xED,0x9F,0x96,0x9B,0xAE,0x86, +0xCC,0x10,0x00,0xBD,0xF8,0x7C,0x86,0x30,0xC6,0x70,0x9E,0xDC,0xBD,0xE7,0x84,0x0A, +0xEA,0x20,0xC6,0xCE,0xC9,0x33,0x86,0x1C,0x97,0x90,0xA6,0xC4,0x84,0x3F,0x26,0x09, +0x33,0xC8,0x12,0x0A,0x90,0x26,0xF3,0x20,0xAA,0x34,0x20,0xA6,0x25,0xE6,0x27,0x1F, +0x01,0xA6,0x44,0xE6,0x46,0x1F,0x02,0xEC,0x4C,0xBD,0xF8,0xFF,0x35,0x20,0x24,0xE0, +0xA6,0x41,0x84,0x02,0x27,0x5A,0x8E,0xED,0x9F,0x96,0x9B,0xAE,0x86,0xEC,0x4E,0xBD, +0xF8,0x7C,0x0C,0xF5,0xA6,0x44,0xE6,0x46,0x1F,0x01,0xA6,0x42,0xC6,0x20,0xBD,0xE7, +0x84,0xCC,0x01,0x10,0xED,0x4E,0x96,0xC8,0xA0,0x44,0xD6,0xCA,0xE0,0x46,0xBD,0xF5, +0x93,0x80,0x10,0x1F,0x89,0x34,0x20,0x86,0x3F,0xBD,0xE7,0xB5,0x10,0xAF,0x48,0xAF, +0x4A,0x35,0x20,0x6F,0xA4,0xCC,0x04,0x04,0xED,0x4C,0xA6,0x41,0xE6,0x43,0x5A,0x27, +0x06,0xBD,0xE9,0xA1,0xBD,0xE9,0xA1,0x86,0x04,0xA7,0x41,0x0A,0xEA,0x7E,0xEB,0x53, +0x86,0x01,0xA7,0xC4,0x6F,0xA4,0x8E,0xED,0x9F,0x96,0x9B,0xAE,0x86,0xEC,0x4E,0xBD, +0xF8,0x7C,0xA6,0x44,0xE6,0x46,0x1F,0x01,0xA6,0x42,0xC6,0x40,0xBD,0xE7,0x84,0x0A, +0xEB,0x0A,0xEA,0x7E,0xEB,0x53,0x96,0xBD,0x26,0x19,0x96,0xEE,0x26,0x15,0x10,0x8E, +0xC9,0x33,0x86,0x1C,0x97,0x8F,0xA6,0xA4,0x84,0x3F,0x26,0x08,0x31,0xA8,0x12,0x0A, +0x8F,0x26,0xF3,0x39,0x34,0x20,0x96,0xC8,0xD6,0xCA,0x1F,0x01,0xA6,0x24,0xE6,0x26, +0x10,0xAE,0x2C,0x1E,0x20,0xBD,0xF8,0xFF,0x35,0x20,0x24,0xE0,0x6F,0xA4,0x0F,0xED, +0x96,0xC8,0xD6,0xCA,0x1F,0x01,0xA6,0x22,0x8A,0x80,0xC6,0x30,0xBD,0xE7,0x84,0x0C, +0xF3,0x0A,0xEB,0x20,0xCE,0x96,0xBD,0x26,0x19,0x96,0xEE,0x26,0x15,0x96,0xE7,0x27, +0x11,0x96,0xC8,0xD6,0xCA,0x1F,0x01,0xCC,0x06,0x16,0x10,0x9E,0xDC,0xBD,0xF8,0xFF, +0x25,0x01,0x39,0x0F,0xE7,0x0F,0xA2,0x96,0xC8,0xD6,0xCA,0x1F,0x01,0x86,0x08,0x8A, +0x80,0xC6,0x30,0xBD,0xE7,0x84,0x0C,0xF3,0x39,0xB6,0xC8,0xF2,0x27,0x08,0x7F,0xC8, +0xF2,0xCE,0xED,0x37,0x20,0x31,0xB6,0xC8,0xF3,0x27,0x08,0x7F,0xC8,0xF3,0xCE,0xED, +0x4D,0x20,0x24,0xB6,0xC8,0xB6,0x27,0x08,0x7F,0xC8,0xB6,0xCE,0xED,0x42,0x20,0x17, +0xB6,0xC8,0xF4,0x27,0x0B,0x7F,0xC8,0xF4,0x7F,0xC8,0xF6,0xCE,0xED,0x5A,0x20,0x07, +0xB6,0xC8,0xF6,0x26,0xF0,0x20,0x03,0xBD,0xF2,0x7D,0xF6,0xC8,0x00,0xCB,0x10,0xC1, +0xA0,0x24,0x07,0x86,0x00,0xBD,0xF2,0x56,0x20,0x06,0xCC,0x08,0x00,0xBD,0xF2,0x56, +0xF6,0xC8,0x02,0xCB,0x20,0xC1,0xF0,0x24,0x07,0x86,0x02,0xBD,0xF2,0x56,0x20,0x06, +0xCC,0x09,0x00,0xBD,0xF2,0x56,0x39,0x00,0x10,0x01,0x00,0x06,0x1F,0x07,0x06,0x08, +0x0F,0xFF,0x02,0x39,0x03,0x00,0x06,0x1F,0x07,0x05,0x09,0x0F,0xFF,0x06,0x1F,0x07, +0x07,0x0A,0x10,0x0B,0x00,0x0C,0x38,0x0D,0x00,0xFF,0x00,0x00,0x01,0x00,0x02,0x30, +0x03,0x00,0x04,0x00,0x05,0x00,0x06,0x1F,0x07,0x3D,0x08,0x00,0x09,0x0F,0x0A,0x00, +0x0B,0x00,0x0C,0x00,0x0D,0x00,0xFF,0xED,0x8F,0xFE,0xB6,0x00,0x19,0x01,0x19,0x00, +0x19,0x01,0x32,0x00,0x19,0x01,0x19,0x00,0x19,0x06,0x19,0x05,0x19,0x00,0x80,0xFF, +0xEE,0xDD,0xCC,0xBB,0xAA,0x99,0x88,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0xC8, +0xA8,0xC8,0xAF,0x7F,0xA0,0x7F,0x10,0xC8,0xF9,0xC9,0x00,0x00,0x00,0x00,0x00,0x02, +0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x02, +0x03,0x00,0x00,0x01,0x03,0x00,0x00,0x02,0x02,0x00,0x00,0x01,0x01,0x00,0x00,0x03, +0x03,0x00,0x00,0x02,0x02,0x02,0x00,0x01,0x01,0x01,0x00,0x03,0x03,0x03,0x00,0x80, +0xC8,0x40,0x3F,0x00,0x20,0x80,0x10,0x1F,0x3F,0x3F,0x00,0xBF,0xBF,0xBF,0xC0,0x20, +0x48,0x08,0xF8,0x30,0xA8,0x10,0xD0,0xA0,0xBF,0xBF,0x00,0x3F,0x3F,0x48,0x20,0x80, +0x00,0xB0,0x48,0x38,0xFB,0x38,0x80,0x28,0x30,0x48,0x80,0x80,0x45,0xF0,0x28,0x7F, +0x3F,0xBF,0xA5,0x00,0xD0,0x60,0x20,0x28,0xB8,0x40,0x15,0x80,0x40,0xF8,0x40,0x18, +0xFA,0x38,0xE0,0xC8,0x4D,0x49,0x4E,0x45,0x20,0x46,0x49,0x45,0x4C,0x44,0x80,0xFA, +0x38,0xE0,0xD8,0x47,0x41,0x4D,0x45,0x20,0x4F,0x56,0x45,0x52,0x80,0x00,0x10,0x00, +0xFF,0x20,0xA0,0xFF,0xC0,0x40,0xFF,0x90,0x20,0xFF,0x70,0x20,0xFF,0x50,0x50,0xFF, +0xD0,0x90,0x01,0x00,0x20,0x00,0xFF,0x30,0xB0,0xFF,0xB0,0x30,0xFF,0xB0,0xD0,0xFF, +0x30,0x50,0xFF,0xD0,0x50,0xFF,0x50,0xD0,0xFF,0x50,0x30,0xFF,0xD0,0xB0,0x01,0xFF, +0x00,0x00,0x00,0x30,0x00,0xFF,0x10,0xC0,0xFF,0xC0,0x10,0xFF,0xC0,0xF0,0xFF,0x10, +0x40,0xFF,0xF0,0x40,0xFF,0x40,0xF0,0xFF,0x40,0x10,0xFF,0xF0,0xC0,0x01,0xFF,0x00, +0x00,0x00,0xF0,0xD0,0xFF,0xC0,0x40,0xFF,0x20,0x00,0xFF,0x40,0x40,0xFF,0x00,0xE0, +0xFF,0x40,0xC0,0xFF,0xE0,0x00,0xFF,0xC0,0xC0,0xFF,0x00,0x20,0x01,0x00,0x3F,0x00, +0xFF,0x80,0x00,0x00,0x3F,0x3F,0xFF,0x00,0x80,0x01,0xFF,0x7F,0x20,0x00,0xC0,0x10, +0xFF,0xC0,0xD0,0xFF,0x20,0x7F,0x00,0xE0,0xC0,0xFF,0x00,0xC0,0xFF,0xE0,0x30,0x00, +0xC0,0x00,0xFF,0x60,0xCD,0xFF,0xA0,0x00,0x00,0x20,0xD0,0xFF,0x3C,0x30,0xFF,0x00, +0x82,0x00,0x30,0x30,0xFF,0xD0,0x50,0xFF,0x20,0xF0,0x01,0x00,0x3F,0x00,0xFF,0xC4, +0x08,0xFF,0xD8,0xD8,0xFF,0x20,0x00,0x00,0x00,0x40,0xFF,0xE0,0x00,0xFF,0x28,0xD8, +0xFF,0x3C,0x08,0x01,0x00,0x3F,0x00,0xFF,0xC4,0x08,0x01,0x00,0x04,0x08,0xFF,0xD8, +0xD8,0xFF,0x20,0x00,0x01,0x00,0x3F,0x00,0xFF,0xC4,0xF8,0x01,0x00,0x04,0xF8,0xFF, +0xD8,0x28,0xFF,0x20,0x00,0x01,0x00,0x20,0x00,0xFF,0x00,0xD8,0xFF,0xD0,0xA8,0xFF, +0xF0,0x40,0xFF,0x08,0x18,0xFF,0x18,0xF0,0xFF,0xF0,0xB8,0x00,0x10,0x48,0xFF,0x08, +0x00,0xFF,0xE8,0x10,0xFF,0xF8,0x00,0x00,0x08,0x00,0xFF,0x00,0x06,0x00,0x10,0xFA, +0xFF,0x08,0x00,0xFF,0x00,0xF0,0x00,0x10,0x18,0xFF,0xF0,0x08,0x01,0x00,0x20,0x00, +0xFF,0x00,0x28,0xFF,0xD0,0x58,0xFF,0xF0,0xC0,0xFF,0x08,0xE8,0xFF,0x18,0x10,0xFF, +0xF0,0x48,0x00,0x10,0xB8,0xFF,0x08,0x00,0xFF,0xE8,0xF0,0xFF,0xF8,0x00,0xFF,0x08, +0x00,0xFF,0x00,0xFA,0x00,0x10,0x06,0xFF,0x08,0x00,0xFF,0x00,0x10,0x00,0x10,0xE8, +0xFF,0xF0,0xF8,0x01,0xFF,0x00,0xD8,0xFF,0xE8,0x08,0xFF,0x00,0x40,0xFF,0x18,0x08, +0xFF,0x00,0xD8,0x00,0x08,0xE0,0xFF,0x10,0x00,0xFF,0x00,0x40,0xFF,0xF0,0x00,0xFF, +0x00,0xC0,0x01,0x00,0x18,0x00,0xFF,0x00,0x20,0xFF,0xC8,0x70,0xFF,0x10,0xA0,0xFF, +0x00,0xA0,0xFF,0xEC,0xA4,0xFF,0x39,0x6D,0xFF,0x00,0x20,0x01,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,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x10,0xCE,0xCB,0xEA,0xBD,0xF1,0x8B,0xCC,0x73,0x21,0x10,0xB3,0xCB,0xFE,0x27,0x5C, +0xFD,0xCB,0xFE,0x7C,0xC8,0x3B,0x8E,0xCB,0xEB,0xBD,0xF8,0x4F,0xBD,0xF1,0xAF,0xDC, +0x25,0x10,0x83,0x01,0x01,0x26,0x02,0xD7,0x56,0x57,0xC4,0x03,0x8E,0xF0,0xFD,0xE6, +0x85,0xD7,0x29,0xC6,0x02,0xD7,0x24,0xCE,0xFD,0x0D,0xBD,0xF6,0x87,0xBD,0xF1,0x92, +0xBD,0xF2,0x89,0xBD,0xF2,0xA9,0xB6,0xC8,0x26,0xCE,0xF1,0x0C,0x85,0x20,0x27,0x02, +0x33,0x4C,0xBD,0xF3,0x85,0x8E,0xF0,0xE9,0xBD,0xF3,0x08,0x86,0x03,0xBD,0xF4,0x34, +0x7A,0xC8,0x24,0x26,0xF3,0xB6,0xC8,0x25,0x81,0x01,0x23,0xB0,0xBD,0xF1,0xAF,0x86, +0xCC,0x97,0x29,0xCC,0xF1,0x01,0xDD,0x39,0x0F,0x25,0x0F,0x26,0xCE,0x00,0x00,0x8E, +0xF1,0x01,0xC6,0x0B,0xA6,0xC0,0xA1,0x80,0x27,0x0D,0xC1,0x01,0x27,0x04,0xC1,0x05, +0x23,0x05,0xCE,0xE0,0x00,0x20,0x07,0x5A,0x26,0xEA,0xD7,0x39,0xD7,0x3A,0x0C,0x56, +0xDF,0x37,0xEE,0xC4,0xBD,0xF1,0xAF,0xCC,0xF8,0x48,0xDD,0x2A,0xBD,0xF6,0x87,0xBD, +0xF1,0x92,0xBD,0xF2,0x89,0xBD,0xF2,0xA9,0xCC,0xC0,0xC0,0xFE,0xC8,0x39,0xBD,0xF3, +0x7A,0xB6,0xC8,0x3B,0x26,0x0C,0x4A,0xCE,0xCB,0xEB,0xA7,0x46,0xCC,0x68,0xD0,0xBD, +0xF3,0x7A,0xFE,0xC8,0x37,0x33,0x42,0xBD,0xF3,0x85,0xB6,0xC8,0x56,0x26,0xC5,0xBE, +0xC8,0x25,0x8C,0x00,0x7D,0x23,0xBD,0x6E,0x41,0x40,0xD6,0x00,0x56,0x81,0x00,0x00, +0xA9,0x7E,0x00,0x39,0xDC,0x8E,0x00,0x00,0x4A,0x72,0x00,0x00,0xB6,0xE0,0x38,0x0E, +0x03,0x67,0x20,0x47,0x43,0x45,0x20,0x31,0x39,0x38,0x32,0x80,0xF1,0x60,0x27,0xCF, +0x56,0x45,0x43,0x54,0x52,0x45,0x58,0x80,0xF3,0x60,0x26,0xCF,0x56,0x45,0x43,0x54, +0x52,0x45,0x58,0x80,0xFC,0x60,0xDF,0xE9,0x47,0x43,0x45,0x80,0xFC,0x38,0xCC,0xD1, +0x45,0x4E,0x54,0x45,0x52,0x54,0x41,0x49,0x4E,0x49,0x4E,0x47,0x80,0xFC,0x38,0xBC, +0xDC,0x4E,0x45,0x57,0x20,0x49,0x44,0x45,0x41,0x53,0x80,0x00,0x8D,0x5C,0xCC,0x9F, +0xFF,0xDD,0x02,0xCC,0x01,0x00,0xDD,0x00,0xCC,0x98,0x7F,0x97,0x0B,0xD7,0x04,0xBD, +0xF3,0x54,0x20,0x3E,0x8D,0x49,0xC6,0x7A,0x8E,0xC8,0x00,0xBD,0xF5,0x3F,0xCC,0xC8, +0x7D,0xDD,0x7B,0x0C,0x7D,0x27,0xFC,0x86,0x05,0x97,0x28,0xCC,0x30,0x75,0xDD,0x3D, +0xCC,0x01,0x03,0xDD,0x1F,0xCC,0x05,0x07,0xDD,0x21,0x39,0x8D,0xD7,0x8D,0xBD,0x7E, +0xF2,0x72,0xBE,0xC8,0x25,0x30,0x01,0xBF,0xC8,0x25,0x8D,0x0E,0x86,0x20,0x95,0x0D, +0x27,0xFC,0xFC,0xC8,0x3D,0xDD,0x08,0x7E,0xF2,0xE6,0x86,0xD0,0x1F,0x8B,0x39,0x86, +0xC8,0x1F,0x8B,0x39,0xB4,0xC8,0x0F,0xB7,0xC8,0x0F,0x8E,0xC8,0x12,0xA6,0x1D,0xA7, +0x1E,0x86,0x0E,0x97,0x01,0xCC,0x19,0x01,0x97,0x00,0x12,0xD7,0x00,0x0F,0x03,0xCC, +0x09,0x01,0x97,0x00,0x12,0x96,0x01,0x43,0xA7,0x1D,0xD7,0x00,0xC6,0xFF,0xD7,0x03, +0x43,0xAA,0x1E,0x43,0xA7,0x1F,0x34,0x02,0xC6,0x01,0x1F,0x98,0xA4,0xE4,0xA7,0x80, +0x58,0x26,0xF7,0x35,0x82,0x7A,0xC8,0x23,0x8E,0xC8,0x1F,0xA6,0x80,0x26,0x0C,0x8C, +0xC8,0x23,0x26,0xF7,0x6F,0x84,0x86,0x01,0x97,0x00,0x39,0x97,0x00,0x0F,0x01,0x0A, +0x00,0xC6,0x60,0x5C,0x2A,0xFD,0xB6,0xC8,0x23,0x2B,0x25,0x86,0x20,0x0C,0x00,0x95, +0x00,0x27,0x0A,0xC6,0x40,0xD7,0x01,0x95,0x00,0x26,0x0B,0x20,0x08,0xC6,0xC0,0xD7, +0x01,0x95,0x00,0x27,0x01,0x5F,0xE7,0x1B,0x20,0xC5,0x1F,0x98,0x9A,0x01,0x97,0x01, +0x86,0x20,0x95,0x00,0x26,0x06,0x1F,0x98,0x98,0x01,0x97,0x01,0x54,0xF1,0xC8,0x1A, +0x26,0xE8,0xD6,0x01,0x20,0xE0,0x8E,0xC8,0x00,0xE7,0x86,0x97,0x01,0x86,0x19,0x97, +0x00,0x86,0x01,0x97,0x00,0x96,0x01,0xD7,0x01,0xC6,0x11,0xD7,0x00,0xC6,0x01,0xD7, +0x00,0x39,0xCC,0x0E,0x00,0x8D,0xDF,0x4A,0x2A,0xFB,0x7E,0xF5,0x33,0x8E,0xC8,0x00, +0x20,0x02,0x8D,0xD5,0xEC,0xC1,0x2A,0xFA,0x39,0x8E,0xC8,0x00,0xCE,0xC8,0x3F,0x86, +0x0D,0xE6,0xC0,0xE1,0x86,0x27,0x02,0x8D,0xC0,0x4A,0x2A,0xF5,0x39,0x86,0x1F,0x20, +0x0A,0x86,0x3F,0x20,0x06,0x86,0x5F,0x20,0x02,0x86,0x7F,0x97,0x01,0xB7,0xC8,0x27, +0xCC,0x05,0x04,0x97,0x00,0xD7,0x00,0xD7,0x00,0xC6,0x01,0xD7,0x00,0x39,0xF7,0xC8, +0x28,0xEC,0x81,0x8D,0x4D,0x86,0xFF,0x97,0x0A,0xF6,0xC8,0x28,0x5A,0x26,0xFD,0x0F, +0x0A,0x39,0x7A,0xC8,0x23,0x8D,0xEA,0xB6,0xC8,0x23,0x26,0xF6,0x20,0x76,0xA6,0x80, +0x2E,0x72,0x8D,0xDD,0x20,0xF8,0x8E,0xF9,0xF0,0x8D,0x1D,0xBD,0xF3,0x6B,0x8D,0x20, +0x20,0x62,0xC6,0x7F,0xD7,0x04,0xA6,0x84,0xE6,0x02,0x20,0x16,0x97,0x01,0x34,0x06, +0x86,0x7F,0x97,0x04,0x0F,0x00,0x20,0x10,0xC6,0xFF,0x20,0x02,0xC6,0x7F,0xD7,0x04, +0xEC,0x81,0x97,0x01,0x0F,0x00,0x34,0x06,0x86,0xCE,0x97,0x0C,0x0F,0x0A,0x0C,0x00, +0xD7,0x01,0x0F,0x05,0x35,0x06,0xBD,0xF5,0x84,0xE7,0x7F,0xAA,0x7F,0xC6,0x40,0x81, +0x40,0x23,0x12,0x81,0x64,0x23,0x04,0x86,0x08,0x20,0x02,0x86,0x04,0xD5,0x0D,0x27, +0xFC,0x4A,0x26,0xFD,0x39,0xD5,0x0D,0x27,0xFC,0x39,0xBD,0xF1,0xAA,0x20,0x05,0xB6, +0xC8,0x24,0x27,0x16,0xCC,0x00,0xCC,0xD7,0x0C,0x97,0x0A,0xCC,0x03,0x02,0x0F,0x01, +0x97,0x00,0xD7,0x00,0xD7,0x00,0xC6,0x01,0xD7,0x00,0x39,0xCC,0x00,0xCC,0xD7,0x0C, +0x97,0x0A,0x39,0xEC,0xC1,0xFD,0xC8,0x2A,0xEC,0xC1,0xBD,0xF2,0xFC,0xBD,0xF5,0x75, +0x7E,0xF4,0x95,0x8D,0xEE,0xA6,0xC4,0x26,0xFA,0x39,0x8D,0xEC,0xA6,0xC4,0x26,0xFA, +0x39,0xAE,0x84,0x34,0x04,0xC6,0x80,0x33,0x78,0x36,0x06,0x35,0x02,0x81,0x09,0x23, +0x02,0x86,0x3C,0x8B,0x30,0xC6,0x2D,0x36,0x06,0x36,0x10,0x20,0xCB,0xA6,0x80,0x20, +0x08,0xD7,0x04,0x20,0x07,0xEC,0x81,0xD7,0x04,0xB7,0xC8,0x23,0xEC,0x84,0x97,0x01, +0x0F,0x00,0x30,0x02,0x12,0x0C,0x00,0xD7,0x01,0xCC,0x00,0x00,0x20,0x1F,0xA6,0x80, +0x20,0x08,0xD7,0x04,0x20,0x07,0xEC,0x81,0xD7,0x04,0xB7,0xC8,0x23,0xEC,0x84,0x97, +0x01,0x0F,0x00,0x30,0x02,0x12,0x0C,0x00,0xD7,0x01,0xCC,0xFF,0x00,0x97,0x0A,0xD7, +0x05,0xCC,0x00,0x40,0xD5,0x0D,0x27,0xFC,0x12,0x97,0x0A,0xB6,0xC8,0x23,0x4A,0x2A, +0xD9,0x7E,0xF3,0x4F,0xC6,0xFF,0x20,0x06,0xC6,0x7F,0x20,0x02,0xE6,0x80,0xD7,0x04, +0xEC,0x01,0x97,0x01,0x0F,0x00,0xA6,0x84,0x30,0x03,0x0C,0x00,0xD7,0x01,0x97,0x0A, +0x0F,0x05,0xCC,0x00,0x40,0xD5,0x0D,0x27,0xFC,0x12,0x97,0x0A,0xA6,0x84,0x2F,0xE0, +0x7E,0xF3,0x4F,0x4A,0xB7,0xC8,0x23,0xEC,0x84,0x97,0x01,0x0F,0x00,0x30,0x02,0x0C, +0x00,0xD7,0x01,0xB6,0xC8,0x29,0xC6,0x40,0x97,0x0A,0x0F,0x05,0xF5,0xD0,0x0D,0x27, +0x0B,0x0F,0x0A,0xB6,0xC8,0x23,0x26,0xDB,0x39,0xB6,0xC8,0x29,0x97,0x0A,0x12,0xD5, +0x0D,0x27,0xF6,0xB6,0xC8,0x23,0x0F,0x0A,0x4D,0x26,0xC8,0x7E,0xF3,0x4F,0xB6,0xC8, +0x24,0x34,0x02,0x7F,0xC8,0x24,0xA6,0x80,0x2A,0x04,0x8D,0xBB,0x20,0xF8,0x26,0x05, +0xBD,0xF3,0xBC,0x20,0xF1,0x4A,0x27,0x05,0xBD,0xF3,0xDD,0x20,0xE9,0x35,0x02,0xB7, +0xC8,0x24,0x7E,0xF3,0x4F,0xFF,0xC8,0x2C,0x8E,0xF9,0xD4,0xCC,0x18,0x83,0x0F,0x01, +0x97,0x0B,0x8E,0xF9,0xD4,0xD7,0x00,0x0A,0x00,0xCC,0x80,0x81,0x12,0x0C,0x00,0xD7, +0x00,0x97,0x00,0x7D,0xC8,0x00,0x0C,0x00,0xB6,0xC8,0x2B,0x97,0x01,0xCC,0x01,0x00, +0xFE,0xC8,0x2C,0x97,0x00,0x20,0x04,0xA6,0x86,0x97,0x0A,0xA6,0xC0,0x2A,0xF8,0x86, +0x81,0x97,0x00,0x00,0x01,0x86,0x01,0x97,0x00,0x8C,0xFB,0xB4,0x27,0x2C,0x30,0x88, +0x50,0x1F,0x30,0xB3,0xC8,0x2C,0xC0,0x02,0x58,0x21,0x00,0x86,0x81,0x12,0x5A,0x26, +0xFA,0x97,0x00,0xF6,0xC8,0x2A,0xD7,0x01,0x0A,0x00,0xCC,0x81,0x01,0x12,0x97,0x00, +0x0F,0x01,0xD7,0x00,0x97,0x00,0xC6,0x03,0x20,0x9B,0x86,0x98,0x97,0x0B,0x7E,0xF3, +0x54,0x34,0x14,0xC6,0x02,0x20,0x03,0x34,0x14,0x5F,0xBE,0xC8,0x7B,0xA6,0x01,0x49, +0x49,0x49,0x49,0xA8,0x02,0x46,0x69,0x84,0x69,0x01,0x69,0x02,0x5A,0x2A,0xEE,0xA6, +0x84,0x35,0x94,0xC6,0x0D,0x8E,0xC8,0x3F,0x8D,0x05,0x86,0x3F,0xA7,0x06,0x39,0x4F, +0x20,0x06,0x8E,0xC8,0x00,0xCC,0x00,0xFF,0x6F,0x8B,0x83,0x00,0x01,0x2A,0xF9,0x39, +0x86,0x80,0xA7,0x85,0x5A,0x26,0xFB,0xA7,0x84,0x39,0xC6,0x02,0x20,0x02,0xC6,0x05, +0x8E,0xC8,0x2E,0x6D,0x85,0x27,0x02,0x6A,0x85,0x5A,0x2A,0xF7,0x39,0xC6,0x03,0x20, +0x09,0xC6,0x02,0x20,0x05,0xC6,0x01,0x20,0x01,0x5F,0x5A,0x2A,0xFD,0x39,0x8E,0xF9, +0xDC,0xA6,0x86,0x39,0x4D,0x2A,0x04,0x40,0x28,0x01,0x4A,0x5D,0x2A,0x04,0x50,0x28, +0x01,0x5A,0x39,0x34,0x10,0xDD,0x34,0x59,0xC6,0x00,0x59,0x49,0x59,0x58,0xD7,0x36, +0xDC,0x34,0x8D,0xE0,0x97,0x34,0xD1,0x34,0x23,0x08,0x0C,0x36,0x1E,0x89,0x20,0x02, +0x44,0x54,0x81,0x09,0x22,0xFA,0xDD,0x34,0xD6,0x36,0x8E,0xFC,0x24,0xE6,0x85,0x8E, +0xFC,0x2C,0xA6,0x86,0x9B,0x35,0x8B,0x0A,0xC5,0x01,0x26,0x04,0xEB,0x86,0x20,0x03, +0x5A,0xE0,0x86,0xD7,0x36,0x96,0x36,0x35,0x90,0x8B,0x10,0x8E,0xFC,0x6D,0x5F,0x85, +0x20,0x27,0x02,0xC6,0x80,0x84,0x1F,0x81,0x10,0x26,0x01,0x5C,0xA6,0x86,0x39,0x34, +0x10,0x96,0x36,0x8D,0xE6,0xDD,0x37,0x96,0x36,0x8D,0xDE,0xDD,0x39,0x35,0x90,0xC0, +0x10,0xD7,0x36,0x97,0x3B,0x8D,0xE8,0x8D,0x54,0x40,0x34,0x02,0x8D,0x55,0x35,0x84, +0xB7,0xC8,0x36,0xF7,0xC8,0x23,0x34,0x08,0xBD,0xF1,0xAF,0x8D,0xD2,0x20,0x18,0xB7, +0xC8,0x36,0x34,0x08,0xBD,0xF1,0xAF,0x97,0x23,0x8D,0xC4,0xA6,0x80,0xA7,0xC0,0x2F, +0x06,0x0F,0x23,0x35,0x88,0x0A,0x23,0xA6,0x80,0x8D,0x26,0xA7,0xC4,0xA6,0x84,0x8D, +0x1A,0xAB,0xC4,0xA7,0xC0,0xA6,0x1F,0x8D,0x12,0xA7,0xC4,0xA6,0x80,0x8D,0x12,0xA0, +0xC4,0xA7,0xC0,0x96,0x23,0x2B,0xD4,0x26,0xDC,0x35,0x88,0x97,0x3B,0xDC,0x37,0x20, +0x04,0x97,0x3B,0xDC,0x39,0xD7,0x3C,0xC5,0x01,0x27,0x04,0x96,0x3B,0x20,0x0A,0xD6, +0x3B,0x2A,0x03,0x03,0x3C,0x50,0x3D,0x89,0x00,0xD6,0x3C,0x2A,0x01,0x40,0x39,0xE6, +0xC6,0xE7,0x86,0x4A,0x2A,0xF9,0x39,0x96,0x56,0x2B,0x28,0x27,0xF9,0x8E,0xFC,0x8D, +0x9F,0x4D,0x86,0x80,0x97,0x56,0xEC,0xC1,0xDD,0x4F,0xEC,0xC1,0xDD,0x51,0xDF,0x53, +0xBD,0xF5,0x33,0xCC,0x1F,0x1F,0xDD,0x5F,0xCC,0x00,0x00,0xDD,0x63,0xDD,0x65,0x97, +0x55,0x20,0x39,0xCE,0xC8,0x5E,0xC6,0x02,0xA6,0xC5,0x81,0x1F,0x27,0x02,0x6C,0xC5, +0x5A,0x2A,0xF5,0x9E,0x51,0xCE,0xC8,0x58,0x86,0x07,0x6C,0xC4,0xA1,0xC4,0x2C,0x02, +0x6F,0xC4,0xE6,0xC0,0xC4,0x07,0xE6,0x85,0xE7,0xC0,0x4C,0x81,0x09,0x23,0xEB,0x0A, +0x57,0x26,0x6B,0x96,0x55,0x4A,0x2A,0x02,0x86,0x02,0x97,0x55,0xE6,0x9F,0xC8,0x53, +0xCE,0xC8,0x5E,0x6F,0xC6,0xC5,0x40,0x27,0x19,0x8E,0xF9,0xE4,0xA6,0x86,0x94,0x45, +0x97,0x45,0x96,0x55,0x8B,0x03,0xA6,0x86,0x9A,0x45,0x97,0x45,0xC4,0x1F,0xD7,0x46, +0x20,0x23,0x8E,0xF9,0xEA,0xA6,0x86,0x94,0x45,0x97,0x45,0x96,0x55,0x8B,0x03,0xA6, +0x86,0x9A,0x45,0x97,0x45,0x96,0x55,0x48,0x8B,0x03,0x33,0xC6,0xC4,0x3F,0x58,0x9E, +0x4D,0xEC,0x85,0xED,0xC4,0x9E,0x53,0xE6,0x80,0x9F,0x53,0x5D,0x2B,0xA5,0xE6,0x80, +0x2A,0x06,0xBD,0xF5,0x33,0x0F,0x56,0x39,0x9F,0x53,0xC4,0x3F,0xD7,0x57,0x10,0x9E, +0x4F,0xCE,0xC8,0x5E,0x8E,0xC8,0x42,0x86,0x02,0xE6,0xC0,0xC5,0x01,0x27,0x07,0x54, +0xE6,0xA5,0xC4,0x0F,0x20,0x07,0x54,0xE6,0xA5,0x54,0x54,0x54,0x54,0xE7,0x86,0x4A, +0x2A,0xE7,0xCE,0xC8,0x67,0x8E,0xC8,0x47,0xEC,0xC3,0x6D,0x58,0x2A,0x0A,0x60,0x58, +0xE0,0x58,0x82,0x00,0x60,0x58,0x20,0x04,0xEB,0x58,0x89,0x00,0xED,0x81,0x8C,0xC8, +0x4D,0x26,0xE5,0x39,0x20,0xC0,0x40,0xC0,0x50,0x4C,0x41,0x59,0x45,0x52,0x80,0xE0, +0xC0,0x01,0xC0,0x20,0x47,0x41,0x4D,0x45,0x80,0xFD,0xC8,0x4F,0x4D,0x27,0x02,0x86, +0x01,0x5D,0x27,0x02,0xC6,0x01,0xFD,0xC8,0x79,0xBD,0xF1,0xAF,0xCC,0xF8,0x50,0xDD, +0x2A,0x97,0x3C,0x20,0x67,0xBD,0xF1,0x92,0x4F,0xBD,0xF1,0xB4,0xBD,0xF5,0x5A,0xBD, +0xF2,0xA9,0xB6,0xC8,0x79,0x10,0x8E,0xF7,0x94,0x8D,0x5A,0xB6,0xC8,0x7A,0x10,0x8E, +0xF7,0x9F,0x8D,0x51,0xBD,0xF1,0xAF,0x96,0x3C,0x27,0x06,0x96,0x0F,0x26,0x3D,0x0F, +0x3C,0x96,0x2F,0x27,0x9E,0x96,0x2E,0x26,0xCC,0x96,0x15,0x26,0x96,0x96,0x12,0x27, +0x0F,0x96,0x79,0x27,0x0B,0x4C,0x91,0x4F,0x23,0x02,0x86,0x01,0x97,0x79,0x20,0x1C, +0x96,0x7A,0x27,0xB1,0xD6,0x13,0x27,0x09,0x4C,0x91,0x50,0x23,0x0D,0x86,0x01,0x20, +0x09,0xD6,0x14,0x27,0xA0,0x4A,0x26,0x02,0x96,0x50,0x97,0x7A,0x86,0xF3,0x97,0x2F, +0x43,0x97,0x2E,0x20,0x90,0x8E,0xC8,0x5E,0x34,0x02,0x8D,0x13,0xA6,0xE0,0x27,0x0E, +0x8D,0x1C,0x1F,0x13,0xEC,0xA1,0xBD,0xF3,0x7A,0x1F,0x23,0xBD,0xF3,0x78,0x39,0xCC, +0x20,0x20,0xED,0x84,0xED,0x02,0xA7,0x04,0xCC,0x30,0x80,0xED,0x05,0x39,0xCE,0x00, +0x00,0x81,0x63,0x23,0x08,0x80,0x64,0x33,0xC9,0x01,0x00,0x20,0xF4,0x81,0x09,0x23, +0x07,0x80,0x0A,0x33,0xC8,0x10,0x20,0xF5,0x33,0xC6,0x1F,0x30,0x34,0x02,0x34,0x04, +0xC6,0x05,0x4F,0xC1,0x01,0x23,0x10,0xC5,0x01,0x27,0x04,0xA6,0xE4,0x20,0x06,0xA6, +0xE0,0x44,0x44,0x44,0x44,0x84,0x0F,0xBB,0xC8,0x23,0x7F,0xC8,0x23,0xAB,0x85,0x81, +0x2F,0x2E,0x02,0x8B,0x10,0x81,0x39,0x23,0x05,0x80,0x0A,0x7C,0xC8,0x23,0xA7,0x85, +0x5A,0x2A,0xCF,0x7F,0xC8,0x23,0x5F,0xA6,0x85,0x81,0x30,0x26,0x09,0x86,0x20,0xA7, +0x85,0x5C,0xC1,0x05,0x2D,0xF1,0x39,0x34,0x50,0x4F,0xE6,0x80,0x2B,0x08,0xE1,0xC0, +0x27,0xF8,0x22,0x01,0x4C,0x4C,0x35,0xD0,0x8D,0xED,0x81,0x01,0x26,0x06,0xA6,0x80, +0xA7,0xC0,0x2A,0xFA,0x39,0x34,0x20,0x34,0x36,0xEC,0x64,0xAB,0xC4,0xEB,0x41,0xED, +0x64,0x20,0x10,0x34,0x20,0x34,0x36,0x1F,0x30,0xAB,0x64,0xEB,0x65,0x20,0xF0,0x34, +0x20,0x34,0x36,0x1F,0x41,0x5F,0x3A,0xA6,0x04,0xAB,0x84,0x28,0x02,0x86,0x7F,0xA1, +0x02,0x2D,0x15,0xA6,0x04,0xA0,0x84,0x28,0x02,0x86,0x80,0xA1,0x02,0x2E,0x09,0x5C, +0xC1,0x02,0x25,0xE2,0x1A,0x01,0x20,0x02,0x1C,0xFE,0x35,0x36,0x35,0xA0,0x96,0x67, +0x2A,0x29,0x84,0x7F,0x97,0x67,0x8E,0xC8,0x58,0x86,0x04,0xBD,0xF6,0x83,0x54,0x54, +0x54,0xDA,0x58,0xC4,0x07,0xD7,0x54,0xD6,0x58,0xC4,0x38,0xD7,0x53,0xD6,0x58,0xC4, +0x07,0xD7,0x5D,0xC6,0x02,0xD7,0x5C,0x86,0x7F,0x20,0x0D,0x96,0x77,0x27,0x6A,0x90, +0x5B,0x2A,0x05,0x5F,0xD7,0x77,0x20,0x62,0x97,0x77,0x44,0x44,0xD6,0x53,0x27,0x0D, +0x97,0x46,0xD6,0x59,0x2B,0x05,0x27,0x05,0x1F,0x89,0x53,0xD7,0x46,0x44,0x81,0x07, +0x23,0x05,0x81,0x0F,0x27,0x01,0x4C,0xD6,0x5A,0x2B,0x06,0x27,0x02,0x88,0x0F,0x1F, +0x89,0x8D,0x37,0xD6,0x5D,0x27,0x2B,0x96,0x5C,0x4A,0x2A,0x02,0x86,0x02,0x97,0x5C, +0xBD,0xF5,0x7E,0x95,0x5D,0x27,0xF0,0xD6,0x5C,0x58,0x50,0x8E,0xC8,0x4B,0x30,0x85, +0xBD,0xF5,0x17,0x84,0x0F,0x81,0x05,0x22,0x03,0x48,0x8B,0x05,0xA7,0x84,0x96,0x7E, +0xA7,0x01,0x96,0x58,0x43,0x94,0x45,0x97,0x45,0x39,0x96,0x54,0x8E,0xC8,0x45,0x4D, +0x27,0x09,0x30,0x1F,0x44,0x24,0xF8,0xE7,0x84,0x20,0xF4,0x39,0x01,0x02,0x04,0x08, +0x10,0x20,0x40,0x80,0xF7,0xEF,0xDF,0x01,0x02,0x04,0xFE,0xFD,0xFB,0x08,0x10,0x20, +0x7F,0x7F,0x80,0x80,0x00,0x20,0x50,0x50,0x20,0xC8,0x20,0x10,0x10,0x40,0x20,0x00, +0x00,0x00,0x00,0x08,0x30,0x20,0x70,0x70,0x10,0xF8,0x30,0xF8,0x70,0x70,0x00,0x60, +0x00,0x00,0x00,0x70,0x70,0x20,0xF0,0x70,0xF0,0xF8,0xF8,0x78,0x88,0x70,0x08,0x88, +0x80,0x88,0x88,0xF8,0xF0,0x70,0xF0,0x70,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x70, +0x80,0x70,0x20,0x00,0x00,0x20,0x08,0x20,0x00,0x00,0x00,0x38,0x10,0x20,0x44,0x44, +0x00,0xFE,0xFF,0xFE,0x00,0x70,0x50,0x50,0x78,0xC8,0x50,0x20,0x20,0x20,0xA8,0x20, +0x00,0x00,0x00,0x08,0x48,0x60,0x88,0x88,0x30,0x80,0x40,0x08,0x88,0x88,0x60,0x60, +0x10,0x00,0x40,0x88,0x88,0x50,0x48,0x88,0x48,0x80,0x80,0x80,0x88,0x20,0x08,0x90, +0x80,0xD8,0xC8,0x88,0x88,0x88,0x88,0x88,0xA8,0x88,0x88,0x88,0x88,0x88,0x08,0x40, +0x80,0x08,0x50,0x00,0x00,0x70,0x0C,0x20,0x70,0x70,0x00,0x44,0x10,0x70,0x00,0x00, +0x6C,0x82,0xFF,0xFE,0x00,0x70,0x50,0xF8,0xA0,0x10,0x50,0x40,0x40,0x10,0x70,0x20, +0x00,0x00,0x00,0x10,0x48,0x20,0x08,0x08,0x50,0xF0,0x80,0x10,0x88,0x88,0x60,0x00, +0x20,0x78,0x20,0x08,0xA8,0x88,0x48,0x80,0x48,0x80,0x80,0x80,0x88,0x20,0x08,0xA0, +0x80,0xA8,0xA8,0x88,0x88,0x88,0x88,0x40,0x20,0x88,0x88,0x88,0x50,0x50,0x10,0x40, +0x40,0x08,0x88,0x00,0x70,0xA8,0x0A,0x20,0x88,0xF8,0x60,0xBA,0x38,0x20,0x00,0x00, +0x92,0x82,0xFF,0xFE,0x00,0x20,0x00,0x50,0x70,0x20,0x60,0x00,0x40,0x10,0xA8,0xF8, +0x00,0x70,0x00,0x20,0x48,0x20,0x70,0x30,0x90,0x08,0xF0,0x20,0x70,0x78,0x00,0x60, +0x40,0x00,0x10,0x10,0xB8,0x88,0x70,0x80,0x48,0xE0,0xE0,0x98,0xF8,0x20,0x08,0xC0, +0x80,0xA8,0x98,0x88,0xF0,0x88,0xF0,0x20,0x20,0x88,0x50,0xA8,0x20,0x20,0x20,0x40, +0x20,0x08,0x00,0x00,0xFE,0x20,0x08,0x20,0x88,0xF8,0xF0,0xA2,0x38,0xF8,0x82,0x38, +0x92,0x82,0xFF,0xFE,0x00,0x00,0x00,0xF8,0x70,0x40,0xA8,0x00,0x40,0x10,0xA8,0x20, +0x40,0x00,0x00,0x40,0x48,0x20,0x80,0x08,0xF8,0x08,0x88,0x40,0x88,0x08,0x60,0x60, +0x20,0x78,0x20,0x20,0xB0,0xF8,0x48,0x80,0x48,0x80,0x80,0x88,0x88,0x20,0x08,0xA0, +0x80,0x88,0x88,0x88,0x80,0xA8,0xA0,0x10,0x20,0x88,0x50,0xA8,0x50,0x20,0x40,0x40, +0x10,0x08,0x00,0x00,0xFE,0x20,0x78,0xA8,0x88,0xF8,0xF0,0xBA,0x7C,0x20,0x44,0x44, +0x6C,0x82,0xFF,0xFE,0x00,0x00,0x00,0x50,0x28,0x98,0x90,0x00,0x20,0x20,0x00,0x20, +0x40,0x00,0x00,0x80,0x48,0x20,0x80,0x88,0x10,0x88,0x88,0x80,0x88,0x10,0x60,0x20, +0x10,0x00,0x40,0x00,0x80,0x88,0x48,0x88,0x48,0x80,0x80,0x88,0x88,0x20,0x88,0x90, +0x88,0x88,0x88,0x88,0x80,0x90,0x90,0x88,0x20,0x88,0x20,0xA8,0x88,0x20,0x80,0x40, +0x08,0x08,0x00,0x00,0x48,0x20,0xF0,0x70,0x70,0x70,0x60,0x44,0x6C,0x50,0x38,0x82, +0x00,0x82,0xFF,0xFE,0x00,0x20,0x00,0x50,0xF8,0x98,0x68,0x00,0x10,0x40,0x00,0x00, +0x80,0x00,0x80,0x80,0x30,0x70,0xF8,0x70,0x10,0x70,0x70,0x80,0x70,0x60,0x00,0x40, +0x00,0x00,0x00,0x20,0x78,0x88,0xF0,0x70,0xF0,0xF8,0x80,0x78,0x88,0x70,0x70,0x88, +0xF8,0x88,0x88,0xF8,0x80,0x68,0x88,0x70,0x20,0x70,0x20,0x50,0x88,0x20,0xF8,0x70, +0x08,0x70,0x00,0xF8,0x00,0x20,0x60,0x20,0x00,0x00,0x00,0x38,0x82,0x88,0x00,0x00, +0x00,0xFE,0xFF,0xFE,0x00,0x11,0x41,0x30,0x21,0x10,0x20,0x31,0x00,0x01,0x03,0x06, +0x0A,0x0F,0x15,0x1C,0x24,0x2D,0x08,0x10,0x08,0x10,0x0B,0x08,0x10,0x0D,0x0A,0x08, +0x10,0x0E,0x0B,0x09,0x08,0x10,0x0E,0x0C,0x0A,0x09,0x08,0x10,0x0E,0x0D,0x0B,0x0A, +0x09,0x08,0x10,0x0F,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x10,0x0F,0x0E,0x0C,0x0B,0x0A, +0x09,0x09,0x08,0x10,0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x09,0x08,0x00,0x19,0x32, +0x4A,0x62,0x79,0x8E,0xA2,0xB5,0xC6,0xD5,0xE2,0xED,0xF5,0xFB,0xFF,0xFF,0xFF,0xFB, +0xF5,0xED,0xE2,0xD5,0xC6,0xB5,0xA2,0x8E,0x79,0x62,0x4A,0x32,0x19,0x03,0xBD,0x03, +0x87,0x03,0x54,0x03,0x24,0x02,0xF7,0x02,0xCD,0x02,0xA4,0x02,0x7E,0x02,0x5B,0x02, +0x39,0x02,0x19,0x01,0xFB,0x01,0xDE,0x01,0xC3,0x01,0xAA,0x01,0x92,0x01,0x7C,0x01, +0x66,0x01,0x52,0x01,0x3F,0x01,0x2D,0x01,0x1C,0x01,0x0C,0x00,0xFD,0x00,0xEF,0x00, +0xE2,0x00,0xD5,0x00,0xC9,0x00,0xBE,0x00,0xB3,0x00,0xA9,0x00,0xA0,0x00,0x97,0x00, +0x8E,0x00,0x86,0x00,0x7F,0x00,0x78,0x00,0x71,0x00,0x6B,0x00,0x65,0x00,0x5F,0x00, +0x5A,0x00,0x55,0x00,0x50,0x00,0x4B,0x00,0x47,0x00,0x43,0x00,0x3F,0x00,0x3C,0x00, +0x38,0x00,0x35,0x00,0x32,0x00,0x2F,0x00,0x2D,0x00,0x2A,0x00,0x28,0x00,0x26,0x00, +0x24,0x00,0x22,0x00,0x20,0x00,0x1E,0x00,0x1C,0x00,0x1B,0x00,0x00,0xFE,0xE8,0xFE, +0xB6,0x93,0x1F,0x0C,0x93,0x1F,0x06,0x98,0x9F,0x24,0x3C,0x11,0x80,0xFD,0x69,0xFD, +0x79,0x21,0x07,0x21,0x07,0x21,0x07,0x21,0x07,0x21,0x07,0x21,0x07,0x21,0x0E,0x99, +0x9F,0x24,0x0E,0x95,0x9B,0x20,0x0E,0x21,0x07,0x21,0x07,0x21,0x07,0x21,0x07,0x21, +0x07,0x21,0x07,0x9D,0xA3,0x28,0x0E,0xA0,0xA6,0x2B,0x0E,0x22,0x02,0x28,0x02,0x2D, +0x02,0x28,0x02,0x22,0x02,0x28,0x02,0x2D,0x02,0x28,0x02,0x22,0x02,0x28,0x02,0x2D, +0x02,0x28,0x02,0x2E,0x02,0x2D,0x28,0x21,0x80,0xEF,0xFF,0xFE,0xDC,0xBA,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x00,0xFF,0xFE, +0xFF,0xFD,0xC3,0xFE,0xB6,0x51,0x24,0x50,0x06,0x50,0x06,0x50,0x0C,0x50,0x06,0x50, +0x06,0x50,0x04,0x50,0x04,0x50,0x04,0x50,0x18,0x50,0x04,0x50,0x04,0x50,0x04,0x50, +0x0C,0x50,0x0C,0x50,0x24,0x50,0x06,0x50,0x06,0x50,0x0C,0x50,0x06,0x50,0x06,0x50, +0x04,0x50,0x04,0x50,0x04,0x50,0x18,0x50,0x04,0x50,0x04,0x50,0x04,0x50,0x0C,0x50, +0x18,0x26,0x80,0xFD,0xBA,0x98,0x76,0x55,0x44,0x33,0x22,0x11,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0xFE,0x28,0xFD,0x79,0x98,0x1C,0x10,0x3F,0x08,0x98,0x1C,0x04,0x98, +0x1C,0x04,0x98,0x1C,0x10,0x3F,0x08,0x98,0x1C,0x04,0x98,0x1C,0x04,0x98,0x1C,0x08, +0x93,0x18,0x08,0x98,0x1C,0x08,0x9C,0x1F,0x08,0x98,0x1C,0x08,0x93,0x18,0x08,0x98, +0x1C,0x08,0x93,0x18,0x08,0x98,0x1C,0x08,0x9C,0x1F,0x08,0x98,0x1C,0x08,0x93,0x18, +0x08,0x98,0x1C,0x08,0x93,0x18,0x08,0x98,0x1C,0x08,0x9C,0x1F,0x08,0x98,0x1C,0x08, +0x93,0x18,0x08,0x9C,0x1F,0x30,0x1A,0x80,0xFF,0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32, +0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x66,0xFE,0xB6,0x0C,0x18,0x11,0x18, +0x0C,0x18,0x11,0x18,0x0C,0x18,0x11,0x18,0x0C,0x12,0x0C,0x06,0x11,0x18,0x9D,0x21, +0x18,0x9F,0x23,0x18,0xA1,0x24,0x18,0xA3,0x26,0x18,0x9F,0xA4,0x28,0x18,0x07,0x12, +0x07,0x06,0x00,0x3C,0x18,0x80,0xDE,0xEF,0xFE,0xDC,0xBA,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xB2,0xFE,0xB6,0x18,0x06,0x1A,0x06,0x1C,0x0C, +0x18,0x0C,0x1A,0x24,0x23,0x18,0x17,0x06,0x18,0x06,0x1A,0x0C,0x17,0x0C,0x18,0x24, +0x24,0x18,0xA4,0x28,0x0C,0xA3,0x26,0x0C,0xA1,0x24,0x0C,0x9F,0x23,0x0C,0x9D,0x21, +0x18,0x9A,0x1F,0x18,0x17,0x06,0x18,0x06,0x1A,0x0C,0x17,0x0C,0x18,0x24,0x24,0x24, +0x18,0x80,0xFF,0xEE,0xDD,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xE8,0xFE,0xB6,0x96,0x9A,0x1D,0x1E,0x91,0x95, +0x18,0x1E,0x94,0x98,0x1B,0x1E,0x8F,0x94,0x18,0x14,0x16,0x0A,0x8C,0x91,0x15,0x14, +0x16,0x0A,0x91,0x95,0x18,0x32,0x18,0x80,0xEE,0xFF,0xFF,0xEE,0xEE,0xDD,0xCC,0xBB, +0xAA,0x99,0x88,0x88,0x88,0x88,0x88,0x88,0xFF,0x16,0xFE,0xB6,0x1C,0x06,0x1F,0x06, +0x1C,0x06,0x18,0x06,0x1A,0x06,0x18,0x06,0x15,0x06,0x13,0x06,0x18,0x06,0x13,0x06, +0x17,0x06,0x18,0x1E,0x18,0x80,0xFF,0xFF,0xEE,0xEE,0xDD,0xDD,0xCC,0xCC,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x28,0xFE,0xB6,0x16,0x0F,0x16,0x05,0x16,0x05, +0x16,0x05,0x1A,0x0F,0x16,0x0F,0x1D,0x0F,0x1D,0x05,0x1D,0x05,0x1D,0x05,0x21,0x0F, +0x1D,0x32,0x1D,0x80,0xFE,0x28,0xFE,0xB6,0x16,0x06,0x16,0x02,0x16,0x02,0x16,0x02, +0x1A,0x06,0x16,0x06,0x1D,0x06,0x1D,0x02,0x1D,0x02,0x1D,0x02,0x21,0x06,0x1D,0x32, +0x11,0x80,0xFE,0x28,0xFE,0xB6,0x1B,0x0F,0x16,0x05,0x16,0x05,0x16,0x05,0x17,0x30, +0x16,0x05,0x16,0x05,0x16,0x05,0x17,0x30,0x16,0x80,0xFD,0x69,0xFE,0xB6,0xA0,0x23, +0x12,0xA0,0x23,0x0C,0x9C,0x20,0x06,0x9E,0x21,0x12,0x9C,0x20,0x32,0x13,0x80,0xFD, +0xC3,0xFE,0xB6,0x16,0x04,0x16,0x04,0x16,0x04,0x16,0x04,0x1A,0x08,0x1C,0x80,0xA6, +0xA0,0x20,0x08,0xBD,0xF3,0xBE,0xB6,0xC8,0x80,0x84,0x7F,0xB7,0xC8,0x80,0x7A,0xC8, +0x80,0xA6,0xA4,0x47,0x84,0xF8,0xE6,0xA0,0x58,0x58,0x58,0x58,0x57,0xC4,0xF8,0x7D, +0xC8,0x80,0x2B,0xDF,0xBD,0xF3,0xDF,0xB6,0xC8,0x80,0x85,0x0F,0x26,0xE0,0x85,0x20, +0x27,0xCD,0x39,0x4B,0x41,0x52,0x52,0x53,0x4F,0x46,0x54,0x38,0x32,0x4C,0x44,0x4D, +0x43,0x42,0x43,0x4A,0x54,0x38,0x32,0x4C,0x44,0x4D,0x43,0x42,0x43,0x4A,0x00,0x00, +0x00,0x00,0xCB,0xF2,0xCB,0xF2,0xCB,0xF5,0xCB,0xF8,0xCB,0xFB,0xCB,0xFB,0xF0,0x00, +}; diff --git a/MCUME_teensy/teensyvectrex/teensyvectrex.ino b/MCUME_teensy/teensyvectrex/teensyvectrex.ino new file mode 100644 index 0000000..07c7bec --- /dev/null +++ b/MCUME_teensy/teensyvectrex/teensyvectrex.ino @@ -0,0 +1,280 @@ +#include "iopins.h" +#include "emuapi.h" + +#include "keyboard_osd.h" +#include "tft_t_dma.h" + +#include "wtest.h" + +#ifdef HAS_VGA +#include +uVGA uvga; +#if F_CPU == 144000000 +#define UVGA_144M_326X240 +#define UVGA_XRES 326 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 10 +#elif F_CPU == 180000000 +#define UVGA_180M_360X300 +#define UVGA_XRES 360 +#define UVGA_YRES 300 +#define UVGA_XRES_EXTRA 8 +#elif F_CPU == 240000000 +#define UVGA_240M_452X240 +#define UVGA_XRES 452 +#define UVGA_YRES 240 +#define UVGA_XRES_EXTRA 12 +#else +#error Please select F_CPU=240MHz or F_CPU=180MHz or F_CPU=144MHz +#endif + +#include + +uint8_t * VGA_frame_buffer; +#endif + +TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT); + +bool vgaMode = false; + +static unsigned char palette8[PALETTE_SIZE]; +static unsigned short palette16[PALETTE_SIZE]; +static IntervalTimer myTimer; +volatile boolean vbl=true; +static int skip=0; +static elapsedMicros tius; + +static void vblCount() { + if (vbl) { + vbl = false; + } else { + vbl = true; + } +} + +void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index) +{ + if (index +#include "AudioPlaySystem.h" + +AudioPlaySystem mymixer; +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +AudioOutputMQS mqs; +AudioConnection patchCord9(mymixer, 0, mqs, 1); +#else +AudioOutputAnalog dac1; +AudioConnection patchCord1(mymixer, dac1); +#endif + +void emu_sndInit() { + Serial.println("sound init"); + AudioMemory(16); + mymixer.start(); +} + +void emu_sndPlaySound(int chan, int volume, int freq) +{ + if (chan < 6) { + mymixer.sound(chan, freq, volume); + } + /* + Serial.print(chan); + Serial.print(":" ); + Serial.print(volume); + Serial.print(":" ); + Serial.println(freq); + */ +} + +void emu_sndPlayBuzz(int size, int val) { + mymixer.buzz(size,val); + //Serial.print((val==1)?1:0); + //Serial.print(":"); + //Serial.println(size); +} +#endif diff --git a/MCUME_teensy/teensyvectrex/tft_t_dma.cpp b/MCUME_teensy/teensyvectrex/tft_t_dma.cpp new file mode 100644 index 0000000..f8ea1e8 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/tft_t_dma.cpp @@ -0,0 +1,1156 @@ +/* + Based on C64 ILI9341 dma driver from Frank Bösing, 2017 +*/ + +#include "TFT_T_DMA.h" +#include "font8x8.h" + + +#define SPICLOCK 144e6 //Just a number..max speed +#ifdef ILI9341 +#define SPI_MODE SPI_MODE0 +#endif +#ifdef ST7789 +#define SPI_MODE SPI_MODE2 +#endif + +// touch +#define SPI_SETTING SPISettings(2500000, MSBFIRST, SPI_MODE) +#define XPT2046_CFG_START _BV(7) +#define XPT2046_CFG_MUX(v) ((v&0b111) << (4)) +#define XPT2046_CFG_8BIT _BV(3) +#define XPT2046_CFG_12BIT (0) +#define XPT2046_CFG_SER _BV(2) +#define XPT2046_CFG_DFR (0) +#define XPT2046_CFG_PWR(v) ((v&0b11)) +#define XPT2046_MUX_Y 0b101 +#define XPT2046_MUX_X 0b001 +#define XPT2046_MUX_Z1 0b011 +#define XPT2046_MUX_Z2 0b100 + + +#ifdef TFT_STATICFB +static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH]; +static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH]; +static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3}; +#else +static uint16_t * blocks[NR_OF_BLOCK]; +#endif + + +static DMASetting dmasettings[SCREEN_DMA_NUM_SETTINGS]; +static DMAChannel dmatx;//(false); +static volatile uint8_t rstop = 0; +static volatile bool cancelled = false; +static volatile uint8_t curTransfer = 0; +static uint8_t nbTransfer = 0; + + +PROGMEM static const uint8_t init_commands[] = { +#ifdef ILI9341 + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma +// 3, 0xb1, 0x00, 0x1f, // FrameRate Control 61Hz + 3, 0xb1, 0x00, 0x10, // FrameRate Control 119Hz + 2, ILI9341_MADCTL, ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR, + 0 +#endif +#ifdef ST7789 +#define DELAY 0x80 + 9, // 9 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay + 255, // 255 = 500 ms delay + ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: + 0x55, // 16-bit color + 10, // 10 ms delay + ST7735_MADCTL , 1 , // 4: Memory access ctrl (directions), 1 arg: + 0x08, // Row addr/col addr, bottom to top refresh + ST7735_CASET , 4 , // 5: Column addr set, 4 args, no delay: + 0x00, + 0x00, // XSTART = 0 + 0x00, + 240, // XEND = 240 + ST7735_RASET , 4 , // 6: Row addr set, 4 args, no delay: + 0x00, + 0x00, // YSTART = 0 + 320>>8, + 320 & 0xFF, // YEND = 320 + ST7735_INVON , DELAY, // 7: hack + 10, + ST7735_NORON , DELAY, // 8: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 9: Main screen turn on, no args, w/delay + 255 +#endif +}; + + +static void dmaInterrupt() { + dmatx.clearInterrupt(); + curTransfer++; + if (curTransfer >= nbTransfer) { + curTransfer = 0; + if (cancelled) { + dmatx.disable(); + rstop = 1; + } + } +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + arm_dcache_flush(blocks[curTransfer], LINES_PER_BLOCK*TFT_WIDTH*2); +#endif +} + +static void setDmaStruct() { + uint32_t remaining = TFT_HEIGHT*TFT_WIDTH*2; + int i=0; + uint16_t col=RGBVAL16(0x00,0x00,0x00);; + while (remaining > 0) { + uint16_t * fb = blocks[i]; + int32_t len = (remaining >= (LINES_PER_BLOCK*TFT_WIDTH*2)?LINES_PER_BLOCK*TFT_WIDTH*2:remaining); +#ifdef TFT_DEBUG + Serial.println((unsigned long)blocks[i]); + Serial.println(remaining); +#endif + switch (i) { + case 0: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb0[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0x00); +#endif + break; + case 1: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb1[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0xff,0xff); +#endif + break; + case 2: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb2[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0x00,0x00,0xff); +#endif + break; + case 3: + if (fb == 0) fb = (uint16_t*)((int)malloc(len+64)&0xffffffe0); + //fb=&fb3[0]; +#ifdef TFT_DEBUG + col = RGBVAL16(0xff,0x00,0xff); +#endif + break; + } + blocks[i] = fb; + if (blocks[i] == 0) { + Serial.print("ILI9341 allocaltion failed for block "); + Serial.println(i); + delay(10000); + } + + for (int j=0;jATTR_DST = 1; +#else + dmasettings[i].sourceBuffer(fb, len); + dmasettings[i].destination((uint8_t &) SPI0_PUSHR); + dmasettings[i].TCD->ATTR_DST = 1; +#endif + dmasettings[i].replaceSettingsOnCompletion(dmasettings[i+1]); + dmasettings[i].interruptAtCompletion(); + remaining -= len; + i++; + } + dmasettings[i-1].replaceSettingsOnCompletion(dmasettings[0]); + nbTransfer = i; +#ifdef TFT_DEBUG + Serial.println(nbTransfer); +#endif +} + + +TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t sclk, uint8_t miso, uint8_t touch_cs, uint8_t touch_irq) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = mosi; + _sclk = sclk; + _miso = miso; + pinMode(_dc, OUTPUT); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + if ( (touch_cs != 255) && (touch_irq != 255) ) { + _touch_irq = touch_irq; + _touch_cs = touch_cs; + pinMode(_touch_cs, OUTPUT); + pinMode(touch_irq, INPUT_PULLUP); + digitalWrite(_touch_cs, 1); + } +} + + +void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) { + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_CASET); + digitalWrite(_dc, 1); + SPI.transfer16(x1); + SPI.transfer16(x2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_PASET); + digitalWrite(_dc, 1); + SPI.transfer16(y1); + SPI.transfer16(y2); + + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + + +void TFT_T_DMA::begin(void) { + SPI.setMOSI(_mosi); + SPI.setMISO(_miso); + SPI.setSCK(_sclk); + SPI.begin(); + + // Initialize display + if (_rst < 255) { // toggle RST low to reset + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(120); + } + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + const uint8_t *addr = init_commands; + digitalWrite(_cs, 0); +#ifdef ILI9341 + while (1) { + uint8_t count = *addr++; + if (count-- == 0) break; + + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + + while (count-- > 0) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + } + + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(ILI9341_DISPON); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + SPI.endTransaction(); +#endif +#ifdef ST7789 + uint8_t numCommands, numArgs; + uint16_t ms; + numCommands = *addr++; // Number of commands to follow + while(numCommands--) { // For each command... + digitalWrite(_dc, 0); + SPI.transfer(*addr++); + numArgs = *addr++; // Number of args to follow + ms = numArgs & DELAY; // If hibit set, delay follows args + numArgs &= ~DELAY; // Mask out delay bit + while(numArgs > 1) { // For each argument... + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + numArgs--; + } + + if (numArgs) { + digitalWrite(_dc, 1); + SPI.transfer(*addr++); + } + if(ms) { + ms = *addr++; // Read post-command delay time (ms) + if(ms == 255) ms = 500; // If 255, delay for 500 ms + SPI.endTransaction(); + digitalWrite(_dc, 1); + digitalWrite(_cs, 1); + delay(ms); + //beginSPITransaction(); + } + } +#endif + + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + cancelled = false; +#ifdef FLIP_SCREEN + flipscreen(true); +#else + flipscreen(false); +#endif +}; + + + +void TFT_T_DMA::flipscreen(bool flip) +{ + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_dc, 0); + digitalWrite(_cs, 0); + SPI.transfer(TFT_MADCTL); + digitalWrite(_dc, 1); + if (flip) { + flipped=true; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + //SPI.transfer(ST77XX_MADCTL_RGB); + SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + else { + flipped=false; +#ifdef ILI9341 + SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR); +#endif +#ifdef ST7789 + SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB); +#endif + } + digitalWrite(_cs, 1); + SPI.endTransaction(); +} + +boolean TFT_T_DMA::isflipped(void) +{ + return(flipped); +} + + +#define PRREG(x) Serial.print(#x" 0x"); Serial.println(x,HEX) + + +void TFT_T_DMA::startDMA(void) { + curTransfer = 0; + rstop = 0; + //dmatx.begin(true); + dmatx.attachInterrupt(dmaInterrupt); + setDmaStruct(); + setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2 + TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1); + fillScreen(RGBVAL16(0x00,0x00,0x00)); + + digitalWrite(_cs, HIGH); + SPI.begin(); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) + +#ifdef TFT_DEBUG + PRREG(LPSPI4_CCR); + PRREG(LPSPI4_TCR); + PRREG(LPSPI4_FCR); + Serial.printf("SPI CLOCK %d CCR freq %.1f MHz\n", SPICLOCK, 528. / 7 / ((0xff & LPSPI4_CCR) + 2)); +#endif + LPSPI4_CR &= ~LPSPI_CR_MEN;//disable LPSPI: + LPSPI4_CFGR1 |= LPSPI_CFGR1_NOSTALL; //prevent stall from RX + LPSPI4_TCR = 15; // Framesize 16 Bits + //LPSPI4_FCR = 0; // Fifo Watermark + LPSPI4_DER = LPSPI_DER_TDDE; //TX DMA Request Enable + LPSPI4_CR |= LPSPI_CR_MEN; //enable LPSPI: + dmatx.triggerAtHardwareEvent( DMAMUX_SOURCE_LPSPI4_TX ); +#else + SPI0_RSER |= SPI_RSER_TFFF_DIRS | SPI_RSER_TFFF_RE; // Set ILI_DMA Interrupt Request Select and Enable register + SPI0_MCR &= ~SPI_MCR_HALT; //Start transfers. + SPI0_CTAR0 = SPI0_CTAR1; + (*(volatile uint16_t *)((int)&SPI0_PUSHR + 2)) = (SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT) >> 16; //Enable 16 Bit Transfers + Continue-Bit + dmatx.triggerAtHardwareEvent(DMAMUX_SOURCE_SPI0_TX ); +#endif + dmatx = dmasettings[0]; + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + digitalWrite(_dc, 1); + dmatx.enable(); +} + + +void TFT_T_DMA::stopDMA(void) { + rstop = 0; + wait(); + delay(50); + cancelled = false; + dmatx.detachInterrupt(); + SPI.end(); + SPI.begin(); + digitalWrite(_cs, 0); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + SPI.endTransaction(); + digitalWrite(_cs, 1); + digitalWrite(_dc, 1); + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); +} + +void TFT_T_DMA::wait(void) { + rstop = 1; + unsigned long m = millis(); + cancelled = true; + while (!rstop) { + if ((millis() - m) > 100) break; + delay(10); + asm volatile("wfi"); + }; + rstop = 0; +} + + +/*********************************************************************************************** + Touch functions + ***********************************************************************************************/ +/* Code based on ... + * + * @file XPT2046.cpp + * @date 19.02.2016 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the XPT2046 driver for Arduino. + */ + +#define ADC_MAX 0x0fff + +void TFT_T_DMA::enableTouchIrq() +{ + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + const uint8_t buf[4] = { (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y)), 0x00, 0x00, 0x00 }; + SPI.transfer((void*)&buf[0],3); + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); +} + +//Default callibration for non flipped +#define TX_MIN 30 +#define TY_MIN 20 +#define TX_MAX 300 +#define TY_MAX 220 + +//Default callibration for flipped +#define TFX_MIN 20 +#define TFY_MIN 25 +#define TFX_MAX 288 +#define TFY_MAX 221 + +static uint16_t txMin; +static uint16_t tyMin; +static uint16_t txMax; +static uint16_t tyMax; + + +void TFT_T_DMA::callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { + if ( (xMin >= 0) && (yMin >= 0) && (xMax < 320) && (yMax < 200) ) { + txMin = xMin; + tyMin = yMin; + txMax = xMax; + tyMax = yMax; + } + else { + if (flipped) { + txMin = TFX_MIN; + tyMin = TFY_MIN; + txMax = TFX_MAX; + tyMax = TFY_MAX; + } + else { + txMin = TX_MIN; + tyMin = TY_MIN; + txMax = TX_MAX; + tyMax = TY_MAX; + } + } +} + + +void TFT_T_DMA::readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + if ( TOUCH_ENABLED() ) { + uint16_t x = 0; + uint16_t y = 0; + uint16_t z1 = 0; + uint16_t z2 = 0; + uint8_t i = 0; + int16_t xraw=0, yraw=0; + + SPI.beginTransaction(SPI_SETTING); + digitalWrite(_touch_cs, LOW); + + for(; i < 15; i++) { + // SPI requirer 32bit aliment + uint8_t buf[12] = { + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Y) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_X) | XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z1)| XPT2046_CFG_PWR(3)), 0x00, 0x00, + (XPT2046_CFG_START | XPT2046_CFG_12BIT | XPT2046_CFG_DFR | XPT2046_CFG_MUX(XPT2046_MUX_Z2)| XPT2046_CFG_PWR(3)), 0x00, 0x00 + }; + SPI.transfer(&buf[0], &buf[0], 12); + y += (buf[1] << 8 | buf[2])>>3; + x += (buf[4] << 8 | buf[5])>>3; + z1 += (buf[7] << 8 | buf[8])>>3; + z2 += (buf[10] << 8 | buf[11])>>3; + } + enableTouchIrq(); + + if(i == 0) { + *oX = 0; + *oY = 0; + *oZ = 0; + } + else { + x /= i; + y /= i; + z1 /= i; + z2 /= i; + } + + digitalWrite(_touch_cs, HIGH); + SPI.endTransaction(); + int z = z1 + ADC_MAX - z2; + if (flipped) { + xraw = x; + yraw = y; + } else { + xraw = ADC_MAX - x; + yraw = ADC_MAX - y; + } + xraw=(xraw*TFT_REALWIDTH)/(ADC_MAX+1); + yraw=(yraw*TFT_REALHEIGHT)/(ADC_MAX+1); + + *oX = xraw; + *oY = yraw; + *oZ = z; + } + else + { + *oX = 0; + *oY = 0; + *oZ = 0; + } +} + +void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { + readRaw(oX,oY,oZ); + // callibrate ... + if(*oX >= txMin) *oX = ((*oX - txMin)*TFT_REALWIDTH)/(txMax-txMin); + if(*oY >= tyMin) *oY = ((*oY - tyMin)*TFT_REALHEIGHT)/(tyMax-tyMin); + //Serial.print(*oX); + //Serial.print(" "); + //Serial.println(*oY); +} + + +/*********************************************************************************************** + No DMA functions + ***********************************************************************************************/ +void TFT_T_DMA::fillScreenNoDma(uint16_t color) { + setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i,j; + for (j=0; j(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + setArea(arx, ary, arx+arw-1, ary+arh-1); + + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + bits = *charpt++; + digitalWrite(_dc, 1); + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + bits = bits >> 1; + if (bits&0x01) SPI.transfer16(fgcolor); + else SPI.transfer16(bgcolor); + } + x +=8; +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + } + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + +void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { + setArea(x,y,x+w-1,y+h-1); + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE)); + digitalWrite(_cs, 0); + digitalWrite(_dc, 0); + SPI.transfer(TFT_RAMWR); + int i; + for (i=0; i<(w*h); i++) + { + digitalWrite(_dc, 1); + SPI.transfer16(color); + } +#ifdef ILI9341 + digitalWrite(_dc, 0); + SPI.transfer(ILI9341_SLPOUT); + digitalWrite(_dc, 1); +#endif + digitalWrite(_cs, 1); + SPI.endTransaction(); + + setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1)); +} + + + +/*********************************************************************************************** + DMA functions + ***********************************************************************************************/ +uint16_t * TFT_T_DMA::getLineBuffer(int j) +{ + uint16_t * block=blocks[j>>6]; + return(&block[(j&0x3F)*TFT_REALWIDTH]); +} + +void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uint16_t *palette16) { + uint8_t *buffer=buf; + uint8_t *src; + + int i,j,y=0; + if (width*2 <= TFT_REALWIDTH) { + for (j=0; j>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + dst=&block[(y&0x3F)*TFT_WIDTH+(TFT_WIDTH-width)/2]; + src=buffer; + for (i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH]; + if (width > TFT_WIDTH) { +#ifdef TFT_LINEARINT + int delta = (width/(width-TFT_WIDTH))-1; + int pos = delta; + for (int i=0; i> 8]; + pos +=step; + } +#endif + } + else { + for (int i=0; i>6]; + uint16_t * dst=&block[(j&0x3F)*TFT_WIDTH]; + for (i=0; i>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+x]; + for (i=0; i>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + block=blocks[l>>6]; + dst=&block[(l&0x3F)*TFT_WIDTH+x]; + bits = *charpt++; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + bits = bits >> 1; + if (bits&0x01) *dst++=fgcolor; + else *dst++=bgcolor; + l++; + } + x +=8; + } +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap) { + drawSprite(x,y,bitmap, 0,0,0,0); +} + +void TFT_T_DMA::drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t arx, uint16_t ary, uint16_t arw, uint16_t arh) +{ + int bmp_offx = 0; + int bmp_offy = 0; + uint16_t *bmp_ptr; + + int w =*bitmap++; + int h = *bitmap++; + + + if ( (arw == 0) || (arh == 0) ) { + // no crop window + arx = x; + ary = y; + arw = w; + arh = h; + } + else { + if ( (x>(arx+arw)) || ((x+w)(ary+arh)) || ((y+h) arx) && (x<(arx+arw)) ) { + arw = arw - (x-arx); + arx = arx + (x-arx); + } else { + bmp_offx = arx; + } + if ( ((x+w) > arx) && ((x+w)<(arx+arw)) ) { + arw -= (arx+arw-x-w); + } + if ( (y > ary) && (y<(ary+arh)) ) { + arh = arh - (y-ary); + ary = ary + (y-ary); + } else { + bmp_offy = ary; + } + if ( ((y+h) > ary) && ((y+h)<(ary+arh)) ) { + arh -= (ary+arh-y-h); + } + } + + + int l=ary; + bitmap = bitmap + bmp_offy*w + bmp_offx; + for (int row=0;row>6]; + uint16_t * dst=&block[(l&0x3F)*TFT_WIDTH+arx]; + bmp_ptr = (uint16_t*)bitmap; + for (int col=0;col +#include +#include +#endif + +#include "tft_t_dma_config.h" + +#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b ) +#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) ) +#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) ) +#define R16(rgb) ((rgb>>8)&0xf8) +#define G16(rgb) ((rgb>>3)&0xfc) +#define B16(rgb) ((rgb<<3)&0xf8) + + +#define TFT_HEIGHT 240 + +#ifdef ILI9341 +#define TFT_WIDTH 256 +#define TFT_REALWIDTH 320 +#define TFT_REALHEIGHT 240 +#endif +#ifdef ST7789 +#define TFT_WIDTH 240 +#define TFT_REALWIDTH 240 +#define TFT_REALHEIGHT 240 +#endif + +#define LINES_PER_BLOCK 64 +#define NR_OF_BLOCK 4 +#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK + + +#ifdef ILI9341 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_VSCRSADD 0x37 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 + +#define ILI9341_MADCTL_MY 0x80 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_MV 0x20 +#define ILI9341_MADCTL_ML 0x10 +#define ILI9341_MADCTL_RGB 0x00 +#define ILI9341_MADCTL_BGR 0x08 +#define ILI9341_MADCTL_MH 0x04 + +#define TFT_CASET ILI9341_CASET +#define TFT_PASET ILI9341_PASET +#define TFT_RAMWR ILI9341_RAMWR +#define TFT_MADCTL ILI9341_MADCTL + +#endif + + +#ifdef ST7789 + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +#define ST77XX_MADCTL_MY 0x80 +#define ST77XX_MADCTL_MX 0x40 +#define ST77XX_MADCTL_MV 0x20 +#define ST77XX_MADCTL_ML 0x10 +#define ST77XX_MADCTL_RGB 0x00 +#define ST77XX_MADCTL_BGR 0x08 +#define ST77XX_MADCTL_MH 0x04 + +#define TFT_CASET ST7735_CASET +#define TFT_PASET ST7735_RASET +#define TFT_RAMWR ST7735_RAMWR +#define TFT_MADCTL ST7735_MADCTL + +#endif + + + +#ifdef __cplusplus + +class TFT_T_DMA +{ + public: + TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37); + + void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2); + void begin(void); + void flipscreen(bool flip); + boolean isflipped(void); + void startDMA(void); + void stopDMA(); + + // Touch screen functions + #define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255)) + bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); } + void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ); + void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax); + + // NoDMA functions + void writeScreenNoDma(const uint16_t *pcolors); + void fillScreenNoDma(uint16_t color); + void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + // DMA functions + uint16_t * getLineBuffer(int j); + void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16); + void writeLine(int width, int height, int y, uint16_t *buf); + void fillScreen(uint16_t color); + void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize); + void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap); + void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh); + + + protected: + uint8_t _rst, _cs, _dc; + uint8_t _miso, _mosi, _sclk; + uint8_t _touch_irq=255, _touch_cs=255; + bool flipped=false; + + void wait(void); + void enableTouchIrq(); +}; + +#endif +#endif + diff --git a/MCUME_teensy/teensyvectrex/tft_t_dma_config.h b/MCUME_teensy/teensyvectrex/tft_t_dma_config.h new file mode 100644 index 0000000..8eb0c06 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/tft_t_dma_config.h @@ -0,0 +1,10 @@ +#define ST7789 1 +//#define ILI9341 1 +#define TFT_LINEARINT 1 +#define LINEARINT_HACK 1 + +//#define FLIP_SCREEN 1 +//#define TFT_DEBUG 1 +#if defined(__IMXRT1052__) || defined(__IMXRT1062__) +#define TFT_STATICFB 1 +#endif diff --git a/MCUME_teensy/teensyvectrex/vecx.c b/MCUME_teensy/teensyvectrex/vecx.c new file mode 100755 index 0000000..c572076 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/vecx.c @@ -0,0 +1,951 @@ +#include +#include "e6809.h" +#include "vecx.h" +#include "osint.h" +#include "e8910.h" + +#define einline __inline + +//unsigned char rom[8192]; +#include "rom.h" +unsigned char cart[32768]; +static unsigned char ram[1024]; + +/* the sound chip registers */ + +unsigned snd_regs[16]; +static unsigned snd_select; + +/* the via 6522 registers */ + +static unsigned via_ora; +static unsigned via_orb; +static unsigned via_ddra; +static unsigned via_ddrb; +static unsigned via_t1on; /* is timer 1 on? */ +static unsigned via_t1int; /* are timer 1 interrupts allowed? */ +static unsigned via_t1c; +static unsigned via_t1ll; +static unsigned via_t1lh; +static unsigned via_t1pb7; /* timer 1 controlled version of pb7 */ +static unsigned via_t2on; /* is timer 2 on? */ +static unsigned via_t2int; /* are timer 2 interrupts allowed? */ +static unsigned via_t2c; +static unsigned via_t2ll; +static unsigned via_sr; +static unsigned via_srb; /* number of bits shifted so far */ +static unsigned via_src; /* shift counter */ +static unsigned via_srclk; +static unsigned via_acr; +static unsigned via_pcr; +static unsigned via_ifr; +static unsigned via_ier; +static unsigned via_ca2; +static unsigned via_cb2h; /* basic handshake version of cb2 */ +static unsigned via_cb2s; /* version of cb2 controlled by the shift register */ + +/* analog devices */ + +static unsigned alg_rsh; /* zero ref sample and hold */ +static unsigned alg_xsh; /* x sample and hold */ +static unsigned alg_ysh; /* y sample and hold */ +static unsigned alg_zsh; /* z sample and hold */ +unsigned alg_jch0; /* joystick direction channel 0 */ +unsigned alg_jch1; /* joystick direction channel 1 */ +unsigned alg_jch2; /* joystick direction channel 2 */ +unsigned alg_jch3; /* joystick direction channel 3 */ +static unsigned alg_jsh; /* joystick sample and hold */ + +static unsigned alg_compare; + +static long alg_dx; /* delta x */ +static long alg_dy; /* delta y */ +static long alg_curr_x; /* current x position */ +static long alg_curr_y; /* current y position */ + + +static unsigned alg_vectoring; /* are we drawing a vector right now? */ +static long alg_vector_x0; +static long alg_vector_y0; +static long alg_vector_x1; +static long alg_vector_y1; +static long alg_vector_dx; +static long alg_vector_dy; +static unsigned char alg_vector_color; + +long vector_draw_cnt; +long vector_erse_cnt; +vector_t * vectors_set; //[2 * VECTOR_CNT]; +vector_t *vectors_draw; +vector_t *vectors_erse; + +//static long vector_hash[VECTOR_HASH]; +long * vector_hash; +static long fcycles; + +/* update the snd chips internal registers when via_ora/via_orb changes */ + +static einline void snd_update (void) +{ + switch (via_orb & 0x18) { + case 0x00: + /* the sound chip is disabled */ + break; + case 0x08: + /* the sound chip is sending data */ + break; + case 0x10: + /* the sound chip is recieving data */ + + if (snd_select != 14) { + snd_regs[snd_select] = via_ora; + e8910_write(snd_select, via_ora); + } + + break; + case 0x18: + /* the sound chip is latching an address */ + + if ((via_ora & 0xf0) == 0x00) { + snd_select = via_ora & 0x0f; + } + + break; + } +} + +/* update the various analog values when orb is written. */ + +static einline void alg_update (void) +{ + switch (via_orb & 0x06) { + case 0x00: + alg_jsh = alg_jch0; + + if ((via_orb & 0x01) == 0x00) { + /* demultiplexor is on */ + alg_ysh = alg_xsh; + } + + break; + case 0x02: + alg_jsh = alg_jch1; + + if ((via_orb & 0x01) == 0x00) { + /* demultiplexor is on */ + alg_rsh = alg_xsh; + } + + break; + case 0x04: + alg_jsh = alg_jch2; + + if ((via_orb & 0x01) == 0x00) { + /* demultiplexor is on */ + + if (alg_xsh > 0x80) { + alg_zsh = alg_xsh - 0x80; + } else { + alg_zsh = 0; + } + } + + break; + case 0x06: + /* sound output line */ + alg_jsh = alg_jch3; + break; + } + + /* compare the current joystick direction with a reference */ + + if (alg_jsh > alg_xsh) { + alg_compare = 0x20; + } else { + alg_compare = 0; + } + + /* compute the new "deltas" */ + + alg_dx = (long) alg_xsh - (long) alg_rsh; + alg_dy = (long) alg_rsh - (long) alg_ysh; +} + +/* update IRQ and bit-7 of the ifr register after making an adjustment to + * ifr. + */ + +static einline void int_update (void) +{ + if ((via_ifr & 0x7f) & (via_ier & 0x7f)) { + via_ifr |= 0x80; + } else { + via_ifr &= 0x7f; + } +} + +unsigned char read8 (unsigned address) +{ + unsigned char data; + + if ((address & 0xe000) == 0xe000) { + /* rom */ + + data = rom[address & 0x1fff]; + } else if ((address & 0xe000) == 0xc000) { + if (address & 0x800) { + /* ram */ + + data = ram[address & 0x3ff]; + } else if (address & 0x1000) { + /* io */ + + switch (address & 0xf) { + case 0x0: + /* compare signal is an input so the value does not come from + * via_orb. + */ + + if (via_acr & 0x80) { + /* timer 1 has control of bit 7 */ + + data = (unsigned char) ((via_orb & 0x5f) | via_t1pb7 | alg_compare); + } else { + /* bit 7 is being driven by via_orb */ + + data = (unsigned char) ((via_orb & 0xdf) | alg_compare); + } + + break; + case 0x1: + /* register 1 also performs handshakes if necessary */ + + if ((via_pcr & 0x0e) == 0x08) { + /* if ca2 is in pulse mode or handshake mode, then it + * goes low whenever ira is read. + */ + + via_ca2 = 0; + } + + /* fall through */ + + case 0xf: + if ((via_orb & 0x18) == 0x08) { + /* the snd chip is driving port a */ + + data = (unsigned char) snd_regs[snd_select]; + } else { + data = (unsigned char) via_ora; + } + + break; + case 0x2: + data = (unsigned char) via_ddrb; + break; + case 0x3: + data = (unsigned char) via_ddra; + break; + case 0x4: + /* T1 low order counter */ + + data = (unsigned char) via_t1c; + via_ifr &= 0xbf; /* remove timer 1 interrupt flag */ + + via_t1on = 0; /* timer 1 is stopped */ + via_t1int = 0; + via_t1pb7 = 0x80; + + int_update (); + + break; + case 0x5: + /* T1 high order counter */ + + data = (unsigned char) (via_t1c >> 8); + + break; + case 0x6: + /* T1 low order latch */ + + data = (unsigned char) via_t1ll; + break; + case 0x7: + /* T1 high order latch */ + + data = (unsigned char) via_t1lh; + break; + case 0x8: + /* T2 low order counter */ + + data = (unsigned char) via_t2c; + via_ifr &= 0xdf; /* remove timer 2 interrupt flag */ + + via_t2on = 0; /* timer 2 is stopped */ + via_t2int = 0; + + int_update (); + + break; + case 0x9: + /* T2 high order counter */ + + data = (unsigned char) (via_t2c >> 8); + break; + case 0xa: + data = (unsigned char) via_sr; + via_ifr &= 0xfb; /* remove shift register interrupt flag */ + via_srb = 0; + via_srclk = 1; + + int_update (); + + break; + case 0xb: + data = (unsigned char) via_acr; + break; + case 0xc: + data = (unsigned char) via_pcr; + break; + case 0xd: + /* interrupt flag register */ + + data = (unsigned char) via_ifr; + break; + case 0xe: + /* interrupt enable register */ + + data = (unsigned char) (via_ier | 0x80); + break; + } + } + } else if (address < 0x8000) { + /* cartridge */ + + data = cart[address]; + } else { + data = 0xff; + } + + return data; +} + +void write8 (unsigned address, unsigned char data) +{ + if ((address & 0xe000) == 0xe000) { + /* rom */ + } else if ((address & 0xe000) == 0xc000) { + /* it is possible for both ram and io to be written at the same! */ + + if (address & 0x800) { + ram[address & 0x3ff] = data; + } + + if (address & 0x1000) { + switch (address & 0xf) { + case 0x0: + via_orb = data; + + snd_update (); + + alg_update (); + + if ((via_pcr & 0xe0) == 0x80) { + /* if cb2 is in pulse mode or handshake mode, then it + * goes low whenever orb is written. + */ + + via_cb2h = 0; + } + + break; + case 0x1: + /* register 1 also performs handshakes if necessary */ + + if ((via_pcr & 0x0e) == 0x08) { + /* if ca2 is in pulse mode or handshake mode, then it + * goes low whenever ora is written. + */ + + via_ca2 = 0; + } + + /* fall through */ + + case 0xf: + via_ora = data; + + snd_update (); + + /* output of port a feeds directly into the dac which then + * feeds the x axis sample and hold. + */ + + alg_xsh = data ^ 0x80; + + alg_update (); + + break; + case 0x2: + via_ddrb = data; + break; + case 0x3: + via_ddra = data; + break; + case 0x4: + /* T1 low order counter */ + + via_t1ll = data; + + break; + case 0x5: + /* T1 high order counter */ + + via_t1lh = data; + via_t1c = (via_t1lh << 8) | via_t1ll; + via_ifr &= 0xbf; /* remove timer 1 interrupt flag */ + + via_t1on = 1; /* timer 1 starts running */ + via_t1int = 1; + via_t1pb7 = 0; + + int_update (); + + break; + case 0x6: + /* T1 low order latch */ + + via_t1ll = data; + break; + case 0x7: + /* T1 high order latch */ + + via_t1lh = data; + break; + case 0x8: + /* T2 low order latch */ + + via_t2ll = data; + break; + case 0x9: + /* T2 high order latch/counter */ + + via_t2c = (data << 8) | via_t2ll; + via_ifr &= 0xdf; + + via_t2on = 1; /* timer 2 starts running */ + via_t2int = 1; + + int_update (); + + break; + case 0xa: + via_sr = data; + via_ifr &= 0xfb; /* remove shift register interrupt flag */ + via_srb = 0; + via_srclk = 1; + + int_update (); + + break; + case 0xb: + via_acr = data; + break; + case 0xc: + via_pcr = data; + + + if ((via_pcr & 0x0e) == 0x0c) { + /* ca2 is outputting low */ + + via_ca2 = 0; + } else { + /* ca2 is disabled or in pulse mode or is + * outputting high. + */ + + via_ca2 = 1; + } + + if ((via_pcr & 0xe0) == 0xc0) { + /* cb2 is outputting low */ + + via_cb2h = 0; + } else { + /* cb2 is disabled or is in pulse mode or is + * outputting high. + */ + + via_cb2h = 1; + } + + break; + case 0xd: + /* interrupt flag register */ + + via_ifr &= ~(data & 0x7f); + int_update (); + + break; + case 0xe: + /* interrupt enable register */ + + if (data & 0x80) { + via_ier |= data & 0x7f; + } else { + via_ier &= ~(data & 0x7f); + } + + int_update (); + + break; + } + } + } else if (address < 0x8000) { + /* cartridge */ + } +} + +void vecx_reset (void) +{ + unsigned r; + + /* ram */ + + for (r = 0; r < 1024; r++) { + ram[r] = r & 0xff; + } + + for (r = 0; r < 16; r++) { + snd_regs[r] = 0; + e8910_write(r, 0); + } + + /* input buttons */ + + snd_regs[14] = 0xff; + e8910_write(14, 0xff); + + snd_select = 0; + + via_ora = 0; + via_orb = 0; + via_ddra = 0; + via_ddrb = 0; + via_t1on = 0; + via_t1int = 0; + via_t1c = 0; + via_t1ll = 0; + via_t1lh = 0; + via_t1pb7 = 0x80; + via_t2on = 0; + via_t2int = 0; + via_t2c = 0; + via_t2ll = 0; + via_sr = 0; + via_srb = 8; + via_src = 0; + via_srclk = 0; + via_acr = 0; + via_pcr = 0; + via_ifr = 0; + via_ier = 0; + via_ca2 = 1; + via_cb2h = 1; + via_cb2s = 0; + + alg_rsh = 128; + alg_xsh = 128; + alg_ysh = 128; + alg_zsh = 0; + alg_jch0 = 128; + alg_jch1 = 128; + alg_jch2 = 128; + alg_jch3 = 128; + alg_jsh = 128; + + alg_compare = 0; /* check this */ + + alg_dx = 0; + alg_dy = 0; + alg_curr_x = ALG_MAX_X / 2; + alg_curr_y = ALG_MAX_Y / 2; + + alg_vectoring = 0; + + vector_draw_cnt = 0; + vector_erse_cnt = 0; + vectors_draw = vectors_set; + vectors_erse = vectors_set + VECTOR_CNT; + + fcycles = FCYCLES_INIT; + + e6809_read8 = read8; + e6809_write8 = write8; + + e6809_reset (); +} + +/* perform a single cycle worth of via emulation. + * via_sstep0 is the first postion of the emulation. + */ + +static einline void via_sstep0 (void) +{ + unsigned t2shift; + + if (via_t1on) { + via_t1c--; + + if ((via_t1c & 0xffff) == 0xffff) { + /* counter just rolled over */ + + if (via_acr & 0x40) { + /* continuous interrupt mode */ + + via_ifr |= 0x40; + int_update (); + via_t1pb7 = 0x80 - via_t1pb7; + + /* reload counter */ + + via_t1c = (via_t1lh << 8) | via_t1ll; + } else { + /* one shot mode */ + + if (via_t1int) { + via_ifr |= 0x40; + int_update (); + via_t1pb7 = 0x80; + via_t1int = 0; + } + } + } + } + + if (via_t2on && (via_acr & 0x20) == 0x00) { + via_t2c--; + + if ((via_t2c & 0xffff) == 0xffff) { + /* one shot mode */ + + if (via_t2int) { + via_ifr |= 0x20; + int_update (); + via_t2int = 0; + } + } + } + + /* shift counter */ + + via_src--; + + if ((via_src & 0xff) == 0xff) { + via_src = via_t2ll; + + if (via_srclk) { + t2shift = 1; + via_srclk = 0; + } else { + t2shift = 0; + via_srclk = 1; + } + } else { + t2shift = 0; + } + + if (via_srb < 8) { + switch (via_acr & 0x1c) { + case 0x00: + /* disabled */ + break; + case 0x04: + /* shift in under control of t2 */ + + if (t2shift) { + /* shifting in 0s since cb2 is always an output */ + + via_sr <<= 1; + via_srb++; + } + + break; + case 0x08: + /* shift in under system clk control */ + + via_sr <<= 1; + via_srb++; + + break; + case 0x0c: + /* shift in under cb1 control */ + break; + case 0x10: + /* shift out under t2 control (free run) */ + + if (t2shift) { + via_cb2s = (via_sr >> 7) & 1; + + via_sr <<= 1; + via_sr |= via_cb2s; + } + + break; + case 0x14: + /* shift out under t2 control */ + + if (t2shift) { + via_cb2s = (via_sr >> 7) & 1; + + via_sr <<= 1; + via_sr |= via_cb2s; + via_srb++; + } + + break; + case 0x18: + /* shift out under system clock control */ + + via_cb2s = (via_sr >> 7) & 1; + + via_sr <<= 1; + via_sr |= via_cb2s; + via_srb++; + + break; + case 0x1c: + /* shift out under cb1 control */ + break; + } + + if (via_srb == 8) { + via_ifr |= 0x04; + int_update (); + } + } +} + +/* perform the second part of the via emulation */ + +static einline void via_sstep1 (void) +{ + if ((via_pcr & 0x0e) == 0x0a) { + /* if ca2 is in pulse mode, then make sure + * it gets restored to '1' after the pulse. + */ + + via_ca2 = 1; + } + + if ((via_pcr & 0xe0) == 0xa0) { + /* if cb2 is in pulse mode, then make sure + * it gets restored to '1' after the pulse. + */ + + via_cb2h = 1; + } +} + + + +static einline void alg_addline (long xx0, long yy0, long xx1, long yy1, unsigned char color) +{ + unsigned long key; + long index; + + unsigned char x0=(xx0*7)/1024, x1=(xx1*7)/1024, y0=((yy0/128-32)*900)/1024, y1=((yy1/128-32)*900)/1024; +// long x0=xx0/128, x1=xx1/128, y0=yy0/128, y1=yy1/128; + + + key = (unsigned long) x0; + key = key * 31 + (unsigned long) y0; + key = key * 31 + (unsigned long) x1; + key = key * 31 + (unsigned long) y1; + key %= VECTOR_HASH; + + /* first check if the line to be drawn is in the current draw list. + * if it is, then it is not added again. + */ + + index = vector_hash[key]; + + if (index >= 0 && index < vector_draw_cnt && + x0 == vectors_draw[index].x0 && + y0 == vectors_draw[index].y0 && + x1 == vectors_draw[index].x1 && + y1 == vectors_draw[index].y1) { + vectors_draw[index].color = color; + + } else { + /* missed on the draw list, now check if the line to be drawn is in + * the erase list ... if it is, "invalidate" it on the erase list. + */ + + if (index >= 0 && index < vector_erse_cnt && + x0 == vectors_erse[index].x0 && + y0 == vectors_erse[index].y0 && + x1 == vectors_erse[index].x1 && + y1 == vectors_erse[index].y1) { + vectors_erse[index].color = VECTREX_COLORS; + } + + vectors_draw[vector_draw_cnt].x0 = x0; + vectors_draw[vector_draw_cnt].y0 = y0; + vectors_draw[vector_draw_cnt].x1 = x1; + vectors_draw[vector_draw_cnt].y1 = y1; + vectors_draw[vector_draw_cnt].color = color; + vector_hash[key] = vector_draw_cnt; + vector_draw_cnt++; + } +} + +/* perform a single cycle worth of analog emulation */ + +static einline void alg_sstep (void) +{ + long sig_dx, sig_dy; + unsigned sig_ramp; + unsigned sig_blank; + + if ((via_acr & 0x10) == 0x10) { + sig_blank = via_cb2s; + } else { + sig_blank = via_cb2h; + } + + if (via_ca2 == 0) { + /* need to force the current point to the 'orgin' so just + * calculate distance to origin and use that as dx,dy. + */ + + sig_dx = ALG_MAX_X / 2 - alg_curr_x; + sig_dy = ALG_MAX_Y / 2 - alg_curr_y; + } else { + if (via_acr & 0x80) { + sig_ramp = via_t1pb7; + } else { + sig_ramp = via_orb & 0x80; + } + + if (sig_ramp == 0) { + sig_dx = alg_dx; + sig_dy = alg_dy; + } else { + sig_dx = 0; + sig_dy = 0; + } + } + + if (alg_vectoring == 0) { + if (sig_blank == 1 && + alg_curr_x >= 0 && alg_curr_x < ALG_MAX_X && + alg_curr_y >= 0 && alg_curr_y < ALG_MAX_Y) { + + /* start a new vector */ + + alg_vectoring = 1; + alg_vector_x0 = alg_curr_x; + alg_vector_y0 = alg_curr_y; + alg_vector_x1 = alg_curr_x; + alg_vector_y1 = alg_curr_y; + alg_vector_dx = sig_dx; + alg_vector_dy = sig_dy; + alg_vector_color = (unsigned char) alg_zsh; + } + } else { + /* already drawing a vector ... check if we need to turn it off */ + + if (sig_blank == 0) { + /* blank just went on, vectoring turns off, and we've got a + * new line. + */ + + alg_vectoring = 0; + + alg_addline (alg_vector_x0, alg_vector_y0, + alg_vector_x1, alg_vector_y1, + alg_vector_color); + } else if (sig_dx != alg_vector_dx || + sig_dy != alg_vector_dy || + (unsigned char) alg_zsh != alg_vector_color) { + + /* the parameters of the vectoring processing has changed. + * so end the current line. + */ + + alg_addline (alg_vector_x0, alg_vector_y0, + alg_vector_x1, alg_vector_y1, + alg_vector_color); + + /* we continue vectoring with a new set of parameters if the + * current point is not out of limits. + */ + + if (alg_curr_x >= 0 && alg_curr_x < ALG_MAX_X && + alg_curr_y >= 0 && alg_curr_y < ALG_MAX_Y) { + alg_vector_x0 = alg_curr_x; + alg_vector_y0 = alg_curr_y; + alg_vector_x1 = alg_curr_x; + alg_vector_y1 = alg_curr_y; + alg_vector_dx = sig_dx; + alg_vector_dy = sig_dy; + alg_vector_color = (unsigned char) alg_zsh; + } else { + alg_vectoring = 0; + } + } + } + + alg_curr_x += sig_dx; + alg_curr_y += sig_dy; + + if (alg_vectoring == 1 && + alg_curr_x >= 0 && alg_curr_x < ALG_MAX_X && + alg_curr_y >= 0 && alg_curr_y < ALG_MAX_Y) { + + /* we're vectoring ... current point is still within limits so + * extend the current vector. + */ + + alg_vector_x1 = alg_curr_x; + alg_vector_y1 = alg_curr_y; + } +} + +void vecx_emu (long cycles) +{ + unsigned c, icycles; + + while (cycles > 0) { + icycles = e6809_sstep (via_ifr & 0x80, 0); + + for (c = 0; c < icycles; c++) { + via_sstep0 (); + alg_sstep (); + via_sstep1 (); + } + + cycles -= (long) icycles; + + fcycles -= (long) icycles; + + if (fcycles < 0) { + vector_t *tmp; + + fcycles += FCYCLES_INIT; + osint_render (); + + /* everything that was drawn during this pass now now enters + * the erase list for the next pass. + */ + + vector_erse_cnt = vector_draw_cnt; + vector_draw_cnt = 0; + + tmp = vectors_erse; + vectors_erse = vectors_draw; + vectors_draw = tmp; + } + } +} diff --git a/MCUME_teensy/teensyvectrex/vecx.h b/MCUME_teensy/teensyvectrex/vecx.h new file mode 100644 index 0000000..d830150 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/vecx.h @@ -0,0 +1,60 @@ +#ifndef __VECX_H +#define __VECX_H + +enum { + VECTREX_MHZ = 1500000, /* speed of the vectrex being emulated */ + VECTREX_COLORS = 128, /* number of possible colors ... grayscale */ + + ALG_MAX_X = 33000, + ALG_MAX_Y = 41000 +}; + + +enum { + VECTREX_PDECAY = 30, //30, /* phosphor decay rate */ + + /* number of 6809 cycles before a frame redraw */ + + FCYCLES_INIT = VECTREX_MHZ / VECTREX_PDECAY, + + /* max number of possible vectors that maybe on the screen at one time. + * one only needs VECTREX_MHZ / VECTREX_PDECAY but we need to also store + * deleted vectors in a single table + */ + + VECTOR_CNT = VECTREX_MHZ / VECTREX_PDECAY, + + VECTOR_HASH = 65521 +}; + +typedef struct vector_type { + unsigned char x0, y0; /* start coordinate */ + unsigned char x1, y1; /* end coordinate */ + //long x0, y0; /* start coordinate */ + //long x1, y1; /* end coordinate */ + + /* color [0, VECTREX_COLORS - 1], if color = VECTREX_COLORS, then this is + * an invalid entry and must be ignored. + */ + unsigned char color; +} vector_t; + +extern const unsigned char rom[8192]; +extern unsigned char cart[32768]; + +extern unsigned snd_regs[16]; +extern unsigned alg_jch0; +extern unsigned alg_jch1; +extern unsigned alg_jch2; +extern unsigned alg_jch3; + +extern long vector_draw_cnt; +extern long vector_erse_cnt; +extern vector_t *vectors_draw; +extern vector_t *vectors_erse; + + +void vecx_reset (void); +void vecx_emu (long cycles); + +#endif diff --git a/MCUME_teensy/teensyvectrex/wtest.cpp b/MCUME_teensy/teensyvectrex/wtest.cpp new file mode 100644 index 0000000..f1dca1d --- /dev/null +++ b/MCUME_teensy/teensyvectrex/wtest.cpp @@ -0,0 +1,386 @@ +#include +#include + +#include "emuapi.h" +extern "C" { +#include "osint.h" +#include "e8910.h" +#include "vecx.h" +} + +static int mouse_x = 160; +static int mouse_y = 100; +static int prev_key = 0; +static int prev_j = 0; +static int prev_mouseb = 0; +static bool isMouse = true; +static int joynum = 1; +static int hk = 0; +static int prev_hk = 0; +static int k = 0; + +extern void vec_Input(int click) { + hk = emu_ReadI2CKeyboard(); + k = emu_ReadKeys(); +} + +static void do_events(void) +{ + if (hk != prev_hk) { + prev_hk == hk; + if ( (hk != 0) && (hk != prev_key) ) { + prev_key = hk; + //IkbdKeyPress ( hk ); + if (hk == 68) { + if (isMouse) isMouse = false; + else isMouse = true; + } + //IkbdLoop(); + //Serial.print("press "); + //Serial.println(hk); + } + } + if ( (hk == 0) && (prev_key) ) { + //IkbdKeyRelease ( prev_key | 0x80 ); + //IkbdLoop(); + //Serial.print("release "); + //Serial.println(hk); + prev_key = 0; + } + + if (!isMouse) + { + int j = 0; + if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) { + j |= 0x08; + } + if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) { + j |= 0x04; + } + if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) { + j |= 0x01; + } + if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) { + j |= 0x02; + } + if ( k & MASK_JOY2_BTN) { + j |= 0x80; + } + if (j != prev_j) { + //IkbdJoystickChange(joynum,j); + prev_j = j; + } + } + else { + if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) { + if ( mouse_x < 320 ) { + mouse_x += 1; + //Serial.print("r"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + else if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) { + if ( mouse_x > 1 ) { + mouse_x -= 1; + //Serial.print("l"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + else if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) { + if ( mouse_y > 1 ) { + mouse_y -= 1; + //Serial.print("u"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + else if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) { + if ( mouse_y < 200 ) { + mouse_y += 1; + //Serial.print("d"); + //IkbdMouseMotion ( mouse_x, mouse_y ); + //IkbdLoop(); + } + } + + int mouseb=0; + if ( ( k & MASK_JOY2_BTN) ){ + mouseb=1; + } + if ( (mouseb != prev_mouseb) ){ + //if (mouseb) IkbdMousePress(2); + //else IkbdMouseRelease(2); + //Serial.println("btoggle"); + //IkbdLoop(); + prev_mouseb = mouseb; + } + } +} + + +long vhash[VECTOR_HASH]; +extern long * vector_hash=&vhash[0]; +extern vector_t * vectors_set; + +//#define USE_BYTEFB 1 + +#ifdef USE_BYTEFB +#define vbufsize 256*256 +unsigned char * vbuf; +#else +#define vbufsize 32*256 +unsigned char vbuf[vbufsize]; +static unsigned short line[256]; +#endif + + + +#define min(x,y) ((x>3)]|=bitsmask[(x)&7]; +#endif + + +/* +static void dummyline(int x1,int y1, int x2, int y2, unsigned char c ) +{ + vbuf[y1*256+x1]=c; + vbuf[y2*256+x2]=c; +} +*/ + +static void sline(int x, int y, int x2, int y2, unsigned char c) { + bool yLonger=false; + int incrementVal, endVal; + int shortLen=y2-y; + int longLen=x2-x; + + if (shortLen == longLen) { + myPixel(x,y,c); + return; + } + + if (abs(shortLen)>abs(longLen)) { + int swap=shortLen; + shortLen=longLen; + longLen=swap; + yLonger=true; + } + endVal=longLen; + if (longLen<0) { + incrementVal=-1; + longLen=-longLen; + } else incrementVal=1; + + int decInc; + if (longLen==0) decInc=0; + else decInc = (shortLen << 16) / longLen; + int j=0; + if (yLonger) { + for (int i=0;i!=endVal;i+=incrementVal) { + myPixel(x+(j >> 16),y+i,c); + j+=decInc; + } + } else { + for (int i=0;i!=endVal;i+=incrementVal) { + myPixel(x+i,y+(j >> 16),c); + j+=decInc; + } + } +} + + +static void fline(int x, int y, int x2, int y2, unsigned char c) { + bool yLonger=false; + int shortLen=y2-y; + int longLen=x2-x; + + if (shortLen == longLen) { + myPixel(x,y,c); + return; + } + if (abs(shortLen)>abs(longLen)) { + int swap=shortLen; + shortLen=longLen; + longLen=swap; + yLonger=true;; + } + int decInc; + if (longLen==0) decInc=0; + else decInc = (shortLen << 8) / longLen; + + if (yLonger) { + if (longLen>0) { + longLen+=y; + for (int j=0x80+(x<<8);y<=longLen;++y) { + myPixel(j >> 8,y,c); + j+=decInc; + } + return; + } + longLen+=y; + for (int j=0x80+(x<<8);y>=longLen;--y) { + myPixel(j >> 8,y,c); + j-=decInc; + } + return; + } + + if (longLen>0) { + longLen+=x; + for (int j=0x80+(y<<8);x<=longLen;++x) { + myPixel(x,j >> 8,c); + j+=decInc; + } + return; + } + longLen+=x; + for (int j=0x80+(y<<8);x>=longLen;--x) { + myPixel(x,j >> 8,c); + j-=decInc; + } + +} + + + +void osint_render(void){ + + memset((void*)&vbuf[0],0,vbufsize); + //int minx=255,maxx=0,miny=255,maxy=0; + + for(int v = 0; v < vector_draw_cnt; v++){ + /* + minx=min(vectors_draw[v].x0/128, minx); + minx=min(vectors_draw[v].x1/128, minx); + maxx=max(vectors_draw[v].x0/128, maxx); + maxx=max(vectors_draw[v].x1/128, maxx); + miny=min(vectors_draw[v].y0/128, miny); + miny=min(vectors_draw[v].y1/128, miny); + maxy=max(vectors_draw[v].y0/128, maxy); + maxy=max(vectors_draw[v].y1/128, maxy); + printf("%d %d %d %d\n",minx,maxx,miny,maxy); +*/ + unsigned char c = vectors_draw[v].color * 256 / VECTREX_COLORS; + sline( vectors_draw[v].x0, + vectors_draw[v].y0, + vectors_draw[v].x1, + vectors_draw[v].y1, c); + } + +#ifdef USE_BYTEFB + emu_DrawScreen(&vbuf[0], 256, 240, 256); +#else + int ymul = 0; + int yinc = (256*256)/240; + for(int y = 0; y < 240; y++){ + int pix=32; + unsigned char * vbufpt=&vbuf[32*(ymul>>8)]; + for(int x = 0; x < 32; x++){ + unsigned char b=*vbufpt++; + if (b&0x80) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x40) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x20) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x10) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x8) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x4) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x2) line[pix++]=0xffff; + else line[pix++]=0x0000; + if (b&0x1) line[pix++]=0xffff; + else line[pix++]=0x0000; + } + emu_DrawLine16(&line[0], 256, 240, y); + ymul += yinc; + } +#endif +} + + +void vec_Step(void) +{ + vecx_emu(1500*20); + + alg_jch0 = 0x80; + alg_jch1 = 0x80; + snd_regs[14] |= 0x0f; + if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) { + alg_jch0 = 0x00; + } + else if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) { + alg_jch0 = 0xff; + } + else if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) { + alg_jch1 = 0xff; + } + else if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) { + alg_jch1 = 0x00; + } + else if ( (k & MASK_JOY1_BTN) || ( k & MASK_JOY2_BTN) ) { + snd_regs[14] &= ~0x01; + } + else if ( k & MASK_KEY_USER1) { + snd_regs[14] &= ~0x02; + } + else if ( k & MASK_KEY_USER2) { + snd_regs[14] &= ~0x04; + } +} + + +void vec_Init(void) +{ + for(int i = 0; i < PALETTE_SIZE; i++){ + emu_SetPaletteEntry(i,i,i,i); + } + + vectors_set = (vector_t*)emu_Malloc(2 * VECTOR_CNT*sizeof(vector_t)); + if (!vectors_set)emu_printf("VSET malloc failed"); + + //vector_hash = (long*)emu_Malloc(VECTOR_HASH*sizeof(long)); + //if (!vector_hash)emu_printf("VHASH malloc failed"); + +#ifdef USE_BYTEFB + vbuf = (unsigned char*) malloc(vbufsize); + if (!vbuf)printf("Vbuf malloc failed\n"); +#endif + + vecx_reset(); + e8910_init_sound(); +} + +void vec_Start(char * filename) +{ + emu_printf("init started"); + + memset(cart, 0, sizeof (cart)); + + int romsize = emu_FileSize(filename); + if (emu_FileOpen(filename)) { + if (emu_FileRead((char*)cart, romsize) != romsize ) { + emu_printf("could not load rom"); + } + emu_FileClose(); + } + emu_printf("init done"); +} + + + + + + diff --git a/MCUME_teensy/teensyvectrex/wtest.h b/MCUME_teensy/teensyvectrex/wtest.h new file mode 100644 index 0000000..ba1a369 --- /dev/null +++ b/MCUME_teensy/teensyvectrex/wtest.h @@ -0,0 +1,5 @@ +extern void vec_Init(void); +extern void vec_Step(void); +extern void vec_Start(char * filename); +extern void vec_Input(int click); + diff --git a/i2ckeyboard/.DS_Store b/i2ckeyboard/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/i2ckeyboard/.DS_Store differ diff --git a/i2ckeyboard/atmegai2ckeyboard/atmegai2ckeyboard.ino b/i2ckeyboard/atmegai2ckeyboard/atmegai2ckeyboard.ino new file mode 100644 index 0000000..7ecd627 --- /dev/null +++ b/i2ckeyboard/atmegai2ckeyboard/atmegai2ckeyboard.ino @@ -0,0 +1,163 @@ + +#include + + +static byte msg[7]; + +// rows are inputs +static byte rows[] = {11,10,9,12,13,8,7,6,5,4};// {2,3,4}; +const int rowCount = sizeof(rows)/sizeof(rows[0]); + +// cols are outputs +static byte cols[] = {A3,A2,A1,A0,3}; //{8,9,10,11}; +const int colCount = sizeof(cols)/sizeof(cols[0]); + +static byte keys[colCount][rowCount]; + +void setup() { + //Serial.begin(115200); + + Wire.begin(8); // join i2c bus with address #8 + Wire.onRequest(requestEvent); // register event + + for(int x=0; x